ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL1JFQURNRSBiL0RvY3VtZW50YXRpb24vQUJJL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmVhZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvUkVBRE1FCkBAIC0wLDAgKzEsNzcgQEAKK1RoaXMgZGlyZWN0b3J5IGF0dGVtcHRzIHRvIGRvY3VtZW50IHRoZSBBQkkgYmV0d2VlbiB0aGUgTGludXgga2VybmVsIGFuZAordXNlcnNwYWNlLCBhbmQgdGhlIHJlbGF0aXZlIHN0YWJpbGl0eSBvZiB0aGVzZSBpbnRlcmZhY2VzLiAgRHVlIHRvIHRoZQorZXZlcmNoYW5naW5nIG5hdHVyZSBvZiBMaW51eCwgYW5kIHRoZSBkaWZmZXJpbmcgbWF0dXJpdHkgbGV2ZWxzLCB0aGVzZQoraW50ZXJmYWNlcyBzaG91bGQgYmUgdXNlZCBieSB1c2Vyc3BhY2UgcHJvZ3JhbXMgaW4gZGlmZmVyZW50IHdheXMuCisKK1dlIGhhdmUgZm91ciBkaWZmZXJlbnQgbGV2ZWxzIG9mIEFCSSBzdGFiaWxpdHksIGFzIHNob3duIGJ5IHRoZSBmb3VyCitkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMgaW4gdGhpcyBsb2NhdGlvbi4gIEludGVyZmFjZXMgbWF5IGNoYW5nZSBsZXZlbHMKK29mIHN0YWJpbGl0eSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGRlc2NyaWJlZCBiZWxvdy4KKworVGhlIGRpZmZlcmVudCBsZXZlbHMgb2Ygc3RhYmlsaXR5IGFyZToKKworICBzdGFibGUvCisJVGhpcyBkaXJlY3RvcnkgZG9jdW1lbnRzIHRoZSBpbnRlcmZhY2VzIHRoYXQgdGhlIGRldmVsb3BlciBoYXMKKwlkZWZpbmVkIHRvIGJlIHN0YWJsZS4gIFVzZXJzcGFjZSBwcm9ncmFtcyBhcmUgZnJlZSB0byB1c2UgdGhlc2UKKwlpbnRlcmZhY2VzIHdpdGggbm8gcmVzdHJpY3Rpb25zLCBhbmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IKKwl0aGVtIHdpbGwgYmUgZ3VhcmFudGVlZCBmb3IgYXQgbGVhc3QgMiB5ZWFycy4gIE1vc3QgaW50ZXJmYWNlcworCShsaWtlIHN5c2NhbGxzKSBhcmUgZXhwZWN0ZWQgdG8gbmV2ZXIgY2hhbmdlIGFuZCBhbHdheXMgYmUKKwlhdmFpbGFibGUuCisKKyAgdGVzdGluZy8KKwlUaGlzIGRpcmVjdG9yeSBkb2N1bWVudHMgaW50ZXJmYWNlcyB0aGF0IGFyZSBmZWx0IHRvIGJlIHN0YWJsZSwKKwlhcyB0aGUgbWFpbiBkZXZlbG9wbWVudCBvZiB0aGlzIGludGVyZmFjZSBoYXMgYmVlbiBjb21wbGV0ZWQuCisJVGhlIGludGVyZmFjZSBjYW4gYmUgY2hhbmdlZCB0byBhZGQgbmV3IGZlYXR1cmVzLCBidXQgdGhlCisJY3VycmVudCBpbnRlcmZhY2Ugd2lsbCBub3QgYnJlYWsgYnkgZG9pbmcgdGhpcywgdW5sZXNzIGdyYXZlCisJZXJyb3JzIG9yIHNlY3VyaXR5IHByb2JsZW1zIGFyZSBmb3VuZCBpbiB0aGVtLiAgVXNlcnNwYWNlCisJcHJvZ3JhbXMgY2FuIHN0YXJ0IHRvIHJlbHkgb24gdGhlc2UgaW50ZXJmYWNlcywgYnV0IHRoZXkgbXVzdCBiZQorCWF3YXJlIG9mIGNoYW5nZXMgdGhhdCBjYW4gb2NjdXIgYmVmb3JlIHRoZXNlIGludGVyZmFjZXMgbW92ZSB0bworCWJlIG1hcmtlZCBzdGFibGUuICBQcm9ncmFtcyB0aGF0IHVzZSB0aGVzZSBpbnRlcmZhY2VzIGFyZQorCXN0cm9uZ2x5IGVuY291cmFnZWQgdG8gYWRkIHRoZWlyIG5hbWUgdG8gdGhlIGRlc2NyaXB0aW9uIG9mCisJdGhlc2UgaW50ZXJmYWNlcywgc28gdGhhdCB0aGUga2VybmVsIGRldmVsb3BlcnMgY2FuIGVhc2lseQorCW5vdGlmeSB0aGVtIGlmIGFueSBjaGFuZ2VzIG9jY3VyIChzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZQorCWxheW91dCBvZiB0aGUgZmlsZXMgYmVsb3cgZm9yIGRldGFpbHMgb24gaG93IHRvIGRvIHRoaXMuKQorCisgIG9ic29sZXRlLworICAJVGhpcyBkaXJlY3RvcnkgZG9jdW1lbnRzIGludGVyZmFjZXMgdGhhdCBhcmUgc3RpbGwgcmVtYWluaW5nIGluCisJdGhlIGtlcm5lbCwgYnV0IGFyZSBtYXJrZWQgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIGxhdGVyIHBvaW50IGluCisJdGltZS4gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdpbGwgZG9jdW1lbnQgdGhlIHJlYXNvbgorCXdoeSBpdCBpcyBvYnNvbGV0ZSBhbmQgd2hlbiBpdCBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgcmVtb3ZlZC4KKwlUaGUgZmlsZSBEb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQgbWF5IGRlc2NyaWJlCisJc29tZSBvZiB0aGVzZSBpbnRlcmZhY2VzLCBnaXZpbmcgYSBzY2hlZHVsZSBmb3Igd2hlbiB0aGV5IHdpbGwKKwliZSByZW1vdmVkLgorCisgIHJlbW92ZWQvCisJVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBsaXN0IG9mIHRoZSBvbGQgaW50ZXJmYWNlcyB0aGF0IGhhdmUKKwliZWVuIHJlbW92ZWQgZnJvbSB0aGUga2VybmVsLgorCitFdmVyeSBmaWxlIGluIHRoZXNlIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorCitXaGF0OgkJU2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGludGVyZmFjZQorRGF0ZToJCURhdGUgY3JlYXRlZAorS2VybmVsVmVyc2lvbjoJS2VybmVsIHZlcnNpb24gdGhpcyBmZWF0dXJlIGZpcnN0IHNob3dlZCB1cCBpbi4KK0NvbnRhY3Q6CVByaW1hcnkgY29udGFjdCBmb3IgdGhpcyBpbnRlcmZhY2UgKG1heSBiZSBhIG1haWxpbmcgbGlzdCkKK0Rlc2NyaXB0aW9uOglMb25nIGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlcmZhY2UgYW5kIGhvdyB0byB1c2UgaXQuCitVc2VyczoJCUFsbCB1c2VycyBvZiB0aGlzIGludGVyZmFjZSB3aG8gd2lzaCB0byBiZSBub3RpZmllZCB3aGVuCisJCWl0IGNoYW5nZXMuICBUaGlzIGlzIHZlcnkgaW1wb3J0YW50IGZvciBpbnRlcmZhY2VzIGluCisJCXRoZSAidGVzdGluZyIgc3RhZ2UsIHNvIHRoYXQga2VybmVsIGRldmVsb3BlcnMgY2FuIHdvcmsKKwkJd2l0aCB1c2Vyc3BhY2UgZGV2ZWxvcGVycyB0byBlbnN1cmUgdGhhdCB0aGluZ3MgZG8gbm90CisJCWJyZWFrIGluIHdheXMgdGhhdCBhcmUgdW5hY2NlcHRhYmxlLiAgSXQgaXMgYWxzbworCQlpbXBvcnRhbnQgdG8gZ2V0IGZlZWRiYWNrIGZvciB0aGVzZSBpbnRlcmZhY2VzIHRvIG1ha2UKKwkJc3VyZSB0aGV5IGFyZSB3b3JraW5nIGluIGEgcHJvcGVyIHdheSBhbmQgZG8gbm90IG5lZWQgdG8KKwkJYmUgY2hhbmdlZCBmdXJ0aGVyLgorCisKK0hvdyB0aGluZ3MgbW92ZSBiZXR3ZWVuIGxldmVsczoKKworSW50ZXJmYWNlcyBpbiBzdGFibGUgbWF5IG1vdmUgdG8gb2Jzb2xldGUsIGFzIGxvbmcgYXMgdGhlIHByb3Blcgorbm90aWZpY2F0aW9uIGlzIGdpdmVuLgorCitJbnRlcmZhY2VzIG1heSBiZSByZW1vdmVkIGZyb20gb2Jzb2xldGUgYW5kIHRoZSBrZXJuZWwgYXMgbG9uZyBhcyB0aGUKK2RvY3VtZW50ZWQgYW1vdW50IG9mIHRpbWUgaGFzIGdvbmUgYnkuCisKK0ludGVyZmFjZXMgaW4gdGhlIHRlc3Rpbmcgc3RhdGUgY2FuIG1vdmUgdG8gdGhlIHN0YWJsZSBzdGF0ZSB3aGVuIHRoZQorZGV2ZWxvcGVycyBmZWVsIHRoZXkgYXJlIGZpbmlzaGVkLiAgVGhleSBjYW5ub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZQora2VybmVsIHRyZWUgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBvYnNvbGV0ZSBzdGF0ZSBmaXJzdC4KKworSXQncyB1cCB0byB0aGUgZGV2ZWxvcGVyIHRvIHBsYWNlIHRoZWlyIGludGVyZmFjZXMgaW4gdGhlIGNhdGVnb3J5IHRoZXkKK3dpc2ggZm9yIGl0IHRvIHN0YXJ0IG91dCBpbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL2RldmZzIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvZGV2ZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiODczOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL2RldmZzCkBAIC0wLDAgKzEsMTMgQEAKK1doYXQ6CQlkZXZmcworRGF0ZToJCUp1bHkgMjAwNQorQ29udGFjdDoJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KK0Rlc2NyaXB0aW9uOgorCWRldmZzIGhhcyBiZWVuIHVubWFpbnRhaW5lZCBmb3IgYSBudW1iZXIgb2YgeWVhcnMsIGhhcyB1bmZpeGFibGUKKwlyYWNlcywgY29udGFpbnMgYSBuYW1pbmcgcG9saWN5IHdpdGhpbiB0aGUga2VybmVsIHRoYXQgaXMKKwlhZ2FpbnN0IHRoZSBMU0IsIGFuZCBjYW4gYmUgcmVwbGFjZWQgYnkgdXNpbmcgdWRldi4KKwlUaGUgZmlsZXMgZnMvZGV2ZnMvKiwgaW5jbHVkZS9saW51eC9kZXZmc19mcyouaCB3aWxsIGJlIHJlbW92ZWQsCisJYWxvbmcgd2l0aCB0aGUgdGhlIGFzc29ydGVkIGRldmZzIGZ1bmN0aW9uIGNhbGxzIHRocm91Z2hvdXQgdGhlCisJa2VybmVsIHRyZWUuCisKK1VzZXJzOgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzY2FsbHMgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzY2FsbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhZTNlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNjYWxscwpAQCAtMCwwICsxLDEwIEBACitXaGF0OgkJVGhlIGtlcm5lbCBzeXNjYWxsIGludGVyZmFjZQorRGVzY3JpcHRpb246CisJVGhpcyBpbnRlcmZhY2UgbWF0Y2hlcyBtdWNoIG9mIHRoZSBQT1NJWCBpbnRlcmZhY2UgYW5kIGlzIGJhc2VkCisJb24gaXQgYW5kIG90aGVyIFVuaXggYmFzZWQgaW50ZXJmYWNlcy4gIEl0IHdpbGwgb25seSBiZSBhZGRlZCB0bworCW92ZXIgdGltZSwgYW5kIG5vdCBoYXZlIHRoaW5ncyByZW1vdmVkIGZyb20gaXQuCisKKwlOb3RlIHRoYXQgdGhpcyBpbnRlcmZhY2UgaXMgZGlmZmVyZW50IGZvciBldmVyeSBhcmNoaXRlY3R1cmUKKwl0aGF0IExpbnV4IHN1cHBvcnRzLiAgUGxlYXNlIHNlZSB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljCisJZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUgc3lzY2FsbCBudW1iZXJzIHRoYXQgYXJlIHRvIGJlCisJbWFwcGVkIHRvIGVhY2ggc3lzY2FsbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1tb2R1bGUgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtbW9kdWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YmU0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtbW9kdWxlCkBAIC0wLDAgKzEsMzAgQEAKK1doYXQ6CQkvc3lzL21vZHVsZQorRGVzY3JpcHRpb246CisJVGhlIC9zeXMvbW9kdWxlIHRyZWUgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisKKwkvc3lzL21vZHVsZS9NT0RVTEVOQU1FCisJCVRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBpcyBpbiB0aGUga2VybmVsLiAgVGhpcworCQltb2R1bGUgbmFtZSB3aWxsIHNob3cgdXAgZWl0aGVyIGlmIHRoZSBtb2R1bGUgaXMgYnVpbHQKKwkJZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBvciBpZiBpdCBpcyBsb2FkZWQgYXMgYQorCQlkeWFubWljIG1vZHVsZS4KKworCS9zeXMvbW9kdWxlL01PRFVMRU5BTUUvcGFyYW1ldGVycworCQlUaGlzIGRpcmVjdG9yeSBjb250YWlucyBpbmRpdmlkdWFsIGZpbGVzIHRoYXQgYXJlIGVhY2gKKwkJaW5kaXZpZHVhbCBwYXJhbWV0ZXJzIG9mIHRoZSBtb2R1bGUgdGhhdCBhcmUgYWJsZSB0byBiZQorCQljaGFuZ2VkIGF0IHJ1bnRpbWUuICBTZWUgdGhlIGluZGl2aWR1YWwgbW9kdWxlCisJCWRvY3VtZW50YXRpb24gYXMgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kCisJCXdoYXQgdGhleSBhY2NvbXBsaXNoLgorCisJCU5vdGU6IFRoZSBpbmRpdmlkdWFsIHBhcmFtZXRlciBuYW1lcyBhbmQgdmFsdWVzIGFyZSBub3QKKwkJY29uc2lkZXJlZCBzdGFibGUsIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGV5IHdpbGwgYmUKKwkJcGxhY2VkIGluIHRoaXMgbG9jYXRpb24gd2l0aGluIHN5c2ZzLiAgU2VlIHRoZQorCQlpbmRpdmlkdWFsIGRyaXZlciBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIGFzIHRvIHRoZQorCQlzdGFiaWxpdHkgb2YgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzLgorCisJL3N5cy9tb2R1bGUvTU9EVUxFTkFNRS9yZWZjbnQKKwkJSWYgdGhlIG1vZHVsZSBpcyBhYmxlIHRvIGJlIHVubG9hZGVkIGZyb20gdGhlIGtlcm5lbCwgdGhpcyBmaWxlCisJCXdpbGwgY29udGFpbiB0aGUgY3VycmVudCByZWZlcmVuY2UgY291bnQgb2YgdGhlIG1vZHVsZS4KKworCQlOb3RlOiBJZiB0aGUgbW9kdWxlIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgb3IgaWYgdGhlCisJCUNPTkZJR19NT0RVTEVfVU5MT0FEIGtlcm5lbCBjb25maWd1cmF0aW9uIHZhbHVlIGlzIG5vdCBlbmFibGVkLAorCQl0aGlzIGZpbGUgd2lsbCBub3QgYmUgcHJlc2VudC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMGNiODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzCkBAIC0wLDAgKzEsMTYgQEAKK1doYXQ6CQkvc3lzL2NsYXNzLworRGF0ZToJCUZlYnVhcnkgMjAwNgorQ29udGFjdDoJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcyBkaXJlY3Rvcnkgd2lsbCBjb25zaXN0IG9mIGEgZ3JvdXAgb2YKKwkJc3ViZGlyZWN0b3JpZXMgZGVzY3JpYmluZyBpbmRpdmlkdWFsIGNsYXNzZXMgb2YgZGV2aWNlcworCQlpbiB0aGUga2VybmVsLiAgVGhlIGluZGl2aWR1YWwgZGlyZWN0b3JpZXMgd2lsbCBjb25zaXN0CisJCW9mIGVpdGhlciBzdWJkaXJlY3Rvcmllcywgb3Igc3ltbGlua3MgdG8gb3RoZXIKKwkJZGlyZWN0b3JpZXMuCisKKwkJQWxsIHByb2dyYW1zIHRoYXQgdXNlIHRoaXMgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSBhYmxlCisJCXRvIGhhbmRsZSBib3RoIHN1YmRpcmVjdG9yaWVzIG9yIHN5bWxpbmtzIGluIG9yZGVyIHRvCisJCXdvcmsgcHJvcGVybHkuCisKK1VzZXJzOgorCXVkZXYgPGxpbnV4LWhvdHBsdWctZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjU2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMKQEAgLTAsMCArMSwyNSBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcworRGF0ZToJCUZlYnJ1YXJ5IDIwMDYKK0NvbnRhY3Q6CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQHN1c2UuZGU+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcyB0cmVlIGNvbnRhaW5zIGEgc25hcHNob3Qgb2YgdGhlCisJCWludGVybmFsIHN0YXRlIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUuICBEZXZpY2VzIHdpbGwKKwkJYmUgYWRkZWQgYW5kIHJlbW92ZWQgZHluYW1pY2FsbHkgYXMgdGhlIG1hY2hpbmUgcnVucywKKwkJYW5kIGJldHdlZW4gZGlmZmVyZW50IGtlcm5lbCB2ZXJzaW9ucywgdGhlIGxheW91dCBvZiB0aGUKKwkJZGV2aWNlcyB3aXRoaW4gdGhpcyB0cmVlIHdpbGwgY2hhbmdlLgorCisJCVBsZWFzZSBkbyBub3QgcmVseSBvbiB0aGUgZm9ybWF0IG9mIHRoaXMgdHJlZSBiZWNhdXNlIG9mCisJCXRoaXMuICBJZiBhIHByb2dyYW0gd2lzaGVzIHRvIGZpbmQgZGlmZmVyZW50IHRoaW5ncyBpbgorCQl0aGUgdHJlZSwgcGxlYXNlIHVzZSB0aGUgL3N5cy9jbGFzcyBzdHJ1Y3R1cmUgYW5kIHJlbHkKKwkJb24gdGhlIHN5bWxpbmtzIHRoZXJlIHRvIHBvaW50IHRvIHRoZSBwcm9wZXIgbG9jYXRpb24KKwkJd2l0aGluIHRoZSAvc3lzL2RldmljZXMgdHJlZSBvZiB0aGUgaW5kaXZpZHVhbCBkZXZpY2VzLgorCQlPciByZWx5IG9uIHRoZSB1ZXZlbnQgbWVzc2FnZXMgdG8gbm90aWZ5IHByb2dyYW1zIG9mCisJCWRldmljZXMgYmVpbmcgYWRkZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGlzIHRyZWUgdG8gZmluZAorCQl0aGUgbG9jYXRpb24gb2YgdGhvc2UgZGV2aWNlcy4KKworCQlOb3RlIHRoYXQgc29tZXRpbWVzIG5vdCBhbGwgZGV2aWNlcyBhbG9uZyB0aGUgZGlyZWN0b3J5CisJCWNoYWluIHdpbGwgaGF2ZSBlbWl0dGVkIHVldmVudCBtZXNzYWdlcywgc28gdXNlcnNwYWNlCisJCXByb2dyYW1zIG11c3QgYmUgYWJsZSB0byBoYW5kbGUgc3VjaCBvY2N1cnJlbmNlcy4KKworVXNlcnM6CisJdWRldiA8bGludXgtaG90cGx1Zy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlIGIvRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZQppbmRleCBjZTVkMmMwLi42ZDI0MTJlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCisrKyBiL0RvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUKQEAgLTE1NSw3ICsxNTUsODMgQEAKIFNlZSBuZXh0IGNoYXB0ZXIuCiAKIAotCQlDaGFwdGVyIDU6IEZ1bmN0aW9ucworCQlDaGFwdGVyIDU6IFR5cGVkZWZzCisKK1BsZWFzZSBkb24ndCB1c2UgdGhpbmdzIGxpa2UgInZwc190Ii4KKworSXQncyBhIF9taXN0YWtlXyB0byB1c2UgdHlwZWRlZiBmb3Igc3RydWN0dXJlcyBhbmQgcG9pbnRlcnMuIFdoZW4geW91IHNlZSBhCisKKwl2cHNfdCBhOworCitpbiB0aGUgc291cmNlLCB3aGF0IGRvZXMgaXQgbWVhbj8KKworSW4gY29udHJhc3QsIGlmIGl0IHNheXMKKworCXN0cnVjdCB2aXJ0dWFsX2NvbnRhaW5lciAqYTsKKworeW91IGNhbiBhY3R1YWxseSB0ZWxsIHdoYXQgImEiIGlzLgorCitMb3RzIG9mIHBlb3BsZSB0aGluayB0aGF0IHR5cGVkZWZzICJoZWxwIHJlYWRhYmlsaXR5Ii4gTm90IHNvLiBUaGV5IGFyZQordXNlZnVsIG9ubHkgZm9yOgorCisgKGEpIHRvdGFsbHkgb3BhcXVlIG9iamVjdHMgKHdoZXJlIHRoZSB0eXBlZGVmIGlzIGFjdGl2ZWx5IHVzZWQgdG8gX2hpZGVfCisgICAgIHdoYXQgdGhlIG9iamVjdCBpcykuCisKKyAgICAgRXhhbXBsZTogInB0ZV90IiBldGMuIG9wYXF1ZSBvYmplY3RzIHRoYXQgeW91IGNhbiBvbmx5IGFjY2VzcyB1c2luZworICAgICB0aGUgcHJvcGVyIGFjY2Vzc29yIGZ1bmN0aW9ucy4KKworICAgICBOT1RFISBPcGFxdWVuZXNzIGFuZCAiYWNjZXNzb3IgZnVuY3Rpb25zIiBhcmUgbm90IGdvb2QgaW4gdGhlbXNlbHZlcy4KKyAgICAgVGhlIHJlYXNvbiB3ZSBoYXZlIHRoZW0gZm9yIHRoaW5ncyBsaWtlIHB0ZV90IGV0Yy4gaXMgdGhhdCB0aGVyZQorICAgICByZWFsbHkgaXMgYWJzb2x1dGVseSBfemVyb18gcG9ydGFibHkgYWNjZXNzaWJsZSBpbmZvcm1hdGlvbiB0aGVyZS4KKworIChiKSBDbGVhciBpbnRlZ2VyIHR5cGVzLCB3aGVyZSB0aGUgYWJzdHJhY3Rpb24gX2hlbHBzXyBhdm9pZCBjb25mdXNpb24KKyAgICAgd2hldGhlciBpdCBpcyAiaW50IiBvciAibG9uZyIuCisKKyAgICAgdTgvdTE2L3UzMiBhcmUgcGVyZmVjdGx5IGZpbmUgdHlwZWRlZnMsIGFsdGhvdWdoIHRoZXkgZml0IGludG8KKyAgICAgY2F0ZWdvcnkgKGQpIGJldHRlciB0aGFuIGhlcmUuCisKKyAgICAgTk9URSEgQWdhaW4gLSB0aGVyZSBuZWVkcyB0byBiZSBhIF9yZWFzb25fIGZvciB0aGlzLiBJZiBzb21ldGhpbmcgaXMKKyAgICAgInVuc2lnbmVkIGxvbmciLCB0aGVuIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvCisKKwl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbXlmbGFnc190OworCisgICAgIGJ1dCBpZiB0aGVyZSBpcyBhIGNsZWFyIHJlYXNvbiBmb3Igd2h5IGl0IHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcworICAgICBtaWdodCBiZSBhbiAidW5zaWduZWQgaW50IiBhbmQgdW5kZXIgb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUKKyAgICAgInVuc2lnbmVkIGxvbmciLCB0aGVuIGJ5IGFsbCBtZWFucyBnbyBhaGVhZCBhbmQgdXNlIGEgdHlwZWRlZi4KKworIChjKSB3aGVuIHlvdSB1c2Ugc3BhcnNlIHRvIGxpdGVyYWxseSBjcmVhdGUgYSBfbmV3XyB0eXBlIGZvcgorICAgICB0eXBlLWNoZWNraW5nLgorCisgKGQpIE5ldyB0eXBlcyB3aGljaCBhcmUgaWRlbnRpY2FsIHRvIHN0YW5kYXJkIEM5OSB0eXBlcywgaW4gY2VydGFpbgorICAgICBleGNlcHRpb25hbCBjaXJjdW1zdGFuY2VzLgorCisgICAgIEFsdGhvdWdoIGl0IHdvdWxkIG9ubHkgdGFrZSBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGZvciB0aGUgZXllcyBhbmQKKyAgICAgYnJhaW4gdG8gYmVjb21lIGFjY3VzdG9tZWQgdG8gdGhlIHN0YW5kYXJkIHR5cGVzIGxpa2UgJ3VpbnQzMl90JywKKyAgICAgc29tZSBwZW9wbGUgb2JqZWN0IHRvIHRoZWlyIHVzZSBhbnl3YXkuCisKKyAgICAgVGhlcmVmb3JlLCB0aGUgTGludXgtc3BlY2lmaWMgJ3U4L3UxNi91MzIvdTY0JyB0eXBlcyBhbmQgdGhlaXIKKyAgICAgc2lnbmVkIGVxdWl2YWxlbnRzIHdoaWNoIGFyZSBpZGVudGljYWwgdG8gc3RhbmRhcmQgdHlwZXMgYXJlCisgICAgIHBlcm1pdHRlZCAtLSBhbHRob3VnaCB0aGV5IGFyZSBub3QgbWFuZGF0b3J5IGluIG5ldyBjb2RlIG9mIHlvdXIKKyAgICAgb3duLgorCisgICAgIFdoZW4gZWRpdGluZyBleGlzdGluZyBjb2RlIHdoaWNoIGFscmVhZHkgdXNlcyBvbmUgb3IgdGhlIG90aGVyIHNldAorICAgICBvZiB0eXBlcywgeW91IHNob3VsZCBjb25mb3JtIHRvIHRoZSBleGlzdGluZyBjaG9pY2VzIGluIHRoYXQgY29kZS4KKworIChlKSBUeXBlcyBzYWZlIGZvciB1c2UgaW4gdXNlcnNwYWNlLgorCisgICAgIEluIGNlcnRhaW4gc3RydWN0dXJlcyB3aGljaCBhcmUgdmlzaWJsZSB0byB1c2Vyc3BhY2UsIHdlIGNhbm5vdAorICAgICByZXF1aXJlIEM5OSB0eXBlcyBhbmQgY2Fubm90IHVzZSB0aGUgJ3UzMicgZm9ybSBhYm92ZS4gVGh1cywgd2UKKyAgICAgdXNlIF9fdTMyIGFuZCBzaW1pbGFyIHR5cGVzIGluIGFsbCBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSBzaGFyZWQKKyAgICAgd2l0aCB1c2Vyc3BhY2UuCisKK01heWJlIHRoZXJlIGFyZSBvdGhlciBjYXNlcyB0b28sIGJ1dCB0aGUgcnVsZSBzaG91bGQgYmFzaWNhbGx5IGJlIHRvIE5FVkVSCitFVkVSIHVzZSBhIHR5cGVkZWYgdW5sZXNzIHlvdSBjYW4gY2xlYXJseSBtYXRjaCBvbmUgb2YgdGhvc2UgcnVsZXMuCisKK0luIGdlbmVyYWwsIGEgcG9pbnRlciwgb3IgYSBzdHJ1Y3QgdGhhdCBoYXMgZWxlbWVudHMgdGhhdCBjYW4gcmVhc29uYWJseQorYmUgZGlyZWN0bHkgYWNjZXNzZWQgc2hvdWxkIF9uZXZlcl8gYmUgYSB0eXBlZGVmLgorCisKKwkJQ2hhcHRlciA2OiBGdW5jdGlvbnMKIAogRnVuY3Rpb25zIHNob3VsZCBiZSBzaG9ydCBhbmQgc3dlZXQsIGFuZCBkbyBqdXN0IG9uZSB0aGluZy4gIFRoZXkgc2hvdWxkCiBmaXQgb24gb25lIG9yIHR3byBzY3JlZW5mdWxzIG9mIHRleHQgKHRoZSBJU08vQU5TSSBzY3JlZW4gc2l6ZSBpcyA4MHgyNCwKQEAgLTE4Myw3ICsyNTksNyBAQAogdG8gdW5kZXJzdGFuZCB3aGF0IHlvdSBkaWQgMiB3ZWVrcyBmcm9tIG5vdy4KIAogCi0JCUNoYXB0ZXIgNjogQ2VudHJhbGl6ZWQgZXhpdGluZyBvZiBmdW5jdGlvbnMKKwkJQ2hhcHRlciA3OiBDZW50cmFsaXplZCBleGl0aW5nIG9mIGZ1bmN0aW9ucwogCiBBbGJlaXQgZGVwcmVjYXRlZCBieSBzb21lIHBlb3BsZSwgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGdvdG8gc3RhdGVtZW50IGlzCiB1c2VkIGZyZXF1ZW50bHkgYnkgY29tcGlsZXJzIGluIGZvcm0gb2YgdGhlIHVuY29uZGl0aW9uYWwganVtcCBpbnN0cnVjdGlvbi4KQEAgLTIyMCw3ICsyOTYsNyBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKLQkJQ2hhcHRlciA3OiBDb21tZW50aW5nCisJCUNoYXB0ZXIgODogQ29tbWVudGluZwogCiBDb21tZW50cyBhcmUgZ29vZCwgYnV0IHRoZXJlIGlzIGFsc28gYSBkYW5nZXIgb2Ygb3Zlci1jb21tZW50aW5nLiAgTkVWRVIKIHRyeSB0byBleHBsYWluIEhPVyB5b3VyIGNvZGUgd29ya3MgaW4gYSBjb21tZW50OiBpdCdzIG11Y2ggYmV0dGVyIHRvCkBAIC0yNDAsNyArMzE2LDcgQEAKIFNlZSB0aGUgZmlsZXMgRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jLW5hbm8tSE9XVE8udHh0IGFuZCBzY3JpcHRzL2tlcm5lbC1kb2MKIGZvciBkZXRhaWxzLgogCi0JCUNoYXB0ZXIgODogWW91J3ZlIG1hZGUgYSBtZXNzIG9mIGl0CisJCUNoYXB0ZXIgOTogWW91J3ZlIG1hZGUgYSBtZXNzIG9mIGl0CiAKIFRoYXQncyBPSywgd2UgYWxsIGRvLiAgWW91J3ZlIHByb2JhYmx5IGJlZW4gdG9sZCBieSB5b3VyIGxvbmctdGltZSBVbml4CiB1c2VyIGhlbHBlciB0aGF0ICJHTlUgZW1hY3MiIGF1dG9tYXRpY2FsbHkgZm9ybWF0cyB0aGUgQyBzb3VyY2VzIGZvcgpAQCAtMjg4LDcgKzM2NCw3IEBACiByZW1lbWJlcjogImluZGVudCIgaXMgbm90IGEgZml4IGZvciBiYWQgcHJvZ3JhbW1pbmcuCiAKIAotCQlDaGFwdGVyIDk6IENvbmZpZ3VyYXRpb24tZmlsZXMKKwkJQ2hhcHRlciAxMDogQ29uZmlndXJhdGlvbi1maWxlcwogCiBGb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIChhcmNoL3h4eC9LY29uZmlnLCBhbmQgYWxsIHRoZSBLY29uZmlnIGZpbGVzKSwKIHNvbWV3aGF0IGRpZmZlcmVudCBpbmRlbnRhdGlvbiBpcyB1c2VkLgpAQCAtMzEzLDcgKzM4OSw3IEBACiBleHBlcmltZW50YWwgb3B0aW9ucyBzaG91bGQgYmUgZGVub3RlZCAoRVhQRVJJTUVOVEFMKS4KIAogCi0JCUNoYXB0ZXIgMTA6IERhdGEgc3RydWN0dXJlcworCQlDaGFwdGVyIDExOiBEYXRhIHN0cnVjdHVyZXMKIAogRGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSB2aXNpYmlsaXR5IG91dHNpZGUgdGhlIHNpbmdsZS10aHJlYWRlZAogZW52aXJvbm1lbnQgdGhleSBhcmUgY3JlYXRlZCBhbmQgZGVzdHJveWVkIGluIHNob3VsZCBhbHdheXMgaGF2ZQpAQCAtMzQ0LDcgKzQyMCw3IEBACiBoYXZlIGEgcmVmZXJlbmNlIGNvdW50IG9uIGl0LCB5b3UgYWxtb3N0IGNlcnRhaW5seSBoYXZlIGEgYnVnLgogCiAKLQkJQ2hhcHRlciAxMTogTWFjcm9zLCBFbnVtcyBhbmQgUlRMCisJCUNoYXB0ZXIgMTI6IE1hY3JvcywgRW51bXMgYW5kIFJUTAogCiBOYW1lcyBvZiBtYWNyb3MgZGVmaW5pbmcgY29uc3RhbnRzIGFuZCBsYWJlbHMgaW4gZW51bXMgYXJlIGNhcGl0YWxpemVkLgogCkBAIC0zOTksNyArNDc1LDcgQEAKIGNvdmVycyBSVEwgd2hpY2ggaXMgdXNlZCBmcmVxdWVudGx5IHdpdGggYXNzZW1ibHkgbGFuZ3VhZ2UgaW4gdGhlIGtlcm5lbC4KIAogCi0JCUNoYXB0ZXIgMTI6IFByaW50aW5nIGtlcm5lbCBtZXNzYWdlcworCQlDaGFwdGVyIDEzOiBQcmludGluZyBrZXJuZWwgbWVzc2FnZXMKIAogS2VybmVsIGRldmVsb3BlcnMgbGlrZSB0byBiZSBzZWVuIGFzIGxpdGVyYXRlLiBEbyBtaW5kIHRoZSBzcGVsbGluZwogb2Yga2VybmVsIG1lc3NhZ2VzIHRvIG1ha2UgYSBnb29kIGltcHJlc3Npb24uIERvIG5vdCB1c2UgY3JpcHBsZWQKQEAgLTQxMCw3ICs0ODYsNyBAQAogUHJpbnRpbmcgbnVtYmVycyBpbiBwYXJlbnRoZXNlcyAoJWQpIGFkZHMgbm8gdmFsdWUgYW5kIHNob3VsZCBiZSBhdm9pZGVkLgogCiAKLQkJQ2hhcHRlciAxMzogQWxsb2NhdGluZyBtZW1vcnkKKwkJQ2hhcHRlciAxNDogQWxsb2NhdGluZyBtZW1vcnkKIAogVGhlIGtlcm5lbCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGdlbmVyYWwgcHVycG9zZSBtZW1vcnkgYWxsb2NhdG9yczoKIGttYWxsb2MoKSwga3phbGxvYygpLCBrY2FsbG9jKCksIGFuZCB2bWFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSQpAQCAtNDI5LDcgKzUwNSw3IEBACiBsYW5ndWFnZS4KIAogCi0JCUNoYXB0ZXIgMTQ6IFRoZSBpbmxpbmUgZGlzZWFzZQorCQlDaGFwdGVyIDE1OiBUaGUgaW5saW5lIGRpc2Vhc2UKIAogVGhlcmUgYXBwZWFycyB0byBiZSBhIGNvbW1vbiBtaXNwZXJjZXB0aW9uIHRoYXQgZ2NjIGhhcyBhIG1hZ2ljICJtYWtlIG1lCiBmYXN0ZXIiIHNwZWVkdXAgb3B0aW9uIGNhbGxlZCAiaW5saW5lIi4gV2hpbGUgdGhlIHVzZSBvZiBpbmxpbmVzIGNhbiBiZQpAQCAtNDU3LDcgKzUzMyw3IEBACiAKIAogCi0JCUNoYXB0ZXIgMTU6IFJlZmVyZW5jZXMKKwkJQXBwZW5kaXggSTogUmVmZXJlbmNlcwogCiBUaGUgQyBQcm9ncmFtbWluZyBMYW5ndWFnZSwgU2Vjb25kIEVkaXRpb24KIGJ5IEJyaWFuIFcuIEtlcm5pZ2hhbiBhbmQgRGVubmlzIE0uIFJpdGNoaWUuCkBAIC00ODEsNCArNTU3LDQgQEAKIGh0dHA6Ly93d3cua3JvYWguY29tL2xpbnV4L3RhbGtzL29sc18yMDAyX2tlcm5lbF9jb2RpbmdzdHlsZV90YWxrL2h0bWwvCiAKIC0tCi1MYXN0IHVwZGF0ZWQgb24gMzAgRGVjZW1iZXIgMjAwNSBieSBhIGNvbW11bml0eSBlZmZvcnQgb24gTEtNTC4KK0xhc3QgdXBkYXRlZCBvbiAzMCBBcHJpbCAyMDA2LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1hcGkudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtYXBpLnRtcGwKaW5kZXggY2EwMmUwNC4uMzFiNzI3YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1hcGkudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sva2VybmVsLWFwaS50bXBsCkBAIC0xMTcsNiArMTE3LDcgQEAKICAgPGNoYXB0ZXIgaWQ9Im1tIj4KICAgICAgPHRpdGxlPk1lbW9yeSBNYW5hZ2VtZW50IGluIExpbnV4PC90aXRsZT4KICAgICAgPHNlY3QxPjx0aXRsZT5UaGUgU2xhYiBDYWNoZTwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvc2xhYi5oCiAhRW1tL3NsYWIuYwogICAgICA8L3NlY3QxPgogICAgICA8c2VjdDE+PHRpdGxlPlVzZXIgU3BhY2UgTWVtb3J5IEFjY2VzczwvdGl0bGU+CkBAIC0zMzEsNiArMzMyLDE4IEBACiAhRXNlY3VyaXR5L3NlY3VyaXR5LmMKICAgPC9jaGFwdGVyPgogCisgIDxjaGFwdGVyIGlkPSJhdWRpdCI+CisgICAgIDx0aXRsZT5BdWRpdCBJbnRlcmZhY2VzPC90aXRsZT4KKyFFa2VybmVsL2F1ZGl0LmMKKyFJa2VybmVsL2F1ZGl0c2MuYworIUlrZXJuZWwvYXVkaXRmaWx0ZXIuYworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImFjY291bnRpbmciPgorICAgICA8dGl0bGU+QWNjb3VudGluZyBGcmFtZXdvcms8L3RpdGxlPgorIUlrZXJuZWwvYWNjdC5jCisgIDwvY2hhcHRlcj4KKwogICA8Y2hhcHRlciBpZD0icG1mdW5jcyI+CiAgICAgIDx0aXRsZT5Qb3dlciBNYW5hZ2VtZW50PC90aXRsZT4KICFFa2VybmVsL3Bvd2VyL3BtLmMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEudG1wbAppbmRleCBmODY5YjAzLi5lOTdjMzIzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGliYXRhLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2xpYmF0YS50bXBsCkBAIC0xNjksNiArMTY5LDIyIEBACiAKIAk8L3NlY3QyPgogCisJPHNlY3QyPjx0aXRsZT5QSU8gZGF0YSByZWFkL3dyaXRlPC90aXRsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+Cit2b2lkICgqZGF0YV94ZmVyKSAoc3RydWN0IGF0YV9kZXZpY2UgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGludCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorQWxsIGJtZG1hLXN0eWxlIGRyaXZlcnMgbXVzdCBpbXBsZW1lbnQgdGhpcyBob29rLiAgVGhpcyBpcyB0aGUgbG93LWxldmVsCitvcGVyYXRpb24gdGhhdCBhY3R1YWxseSBjb3BpZXMgdGhlIGRhdGEgYnl0ZXMgZHVyaW5nIGEgUElPIGRhdGEKK3RyYW5zZmVyLgorVHlwaWNhbGx5IHRoZSBkcml2ZXIKK3dpbGwgY2hvb3NlIG9uZSBvZiBhdGFfcGlvX2RhdGFfeGZlcl9ub2lycSgpLCBhdGFfcGlvX2RhdGFfeGZlcigpLCBvcgorYXRhX21taW9fZGF0YV94ZmVyKCkuCisJPC9wYXJhPgorCisJPC9zZWN0Mj4KKwogCTxzZWN0Mj48dGl0bGU+QVRBIGNvbW1hbmQgZXhlY3V0ZTwvdGl0bGU+CiAJPHByb2dyYW1saXN0aW5nPgogdm9pZCAoKmV4ZWNfY29tbWFuZCkoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpOwpAQCAtMjA0LDExICsyMjAsMTAgQEAKIAk8cHJvZ3JhbWxpc3Rpbmc+CiB1OCAgICgqY2hlY2tfc3RhdHVzKShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHU4ICAgKCpjaGVja19hbHRzdGF0dXMpKHN0cnVjdCBhdGFfcG9ydCAqYXApOwotdTggICAoKmNoZWNrX2Vycikoc3RydWN0IGF0YV9wb3J0ICphcCk7CiAJPC9wcm9ncmFtbGlzdGluZz4KIAogCTxwYXJhPgotCVJlYWRzIHRoZSBTdGF0dXMvQWx0U3RhdHVzL0Vycm9yIEFUQSBzaGFkb3cgcmVnaXN0ZXIgZnJvbQorCVJlYWRzIHRoZSBTdGF0dXMvQWx0U3RhdHVzIEFUQSBzaGFkb3cgcmVnaXN0ZXIgZnJvbQogCWhhcmR3YXJlLiAgT24gc29tZSBoYXJkd2FyZSwgcmVhZGluZyB0aGUgU3RhdHVzIHJlZ2lzdGVyIGhhcwogCXRoZSBzaWRlIGVmZmVjdCBvZiBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGNvbmRpdGlvbi4KIAlNb3N0IGRyaXZlcnMgZm9yIHRhc2tmaWxlLWJhc2VkIGhhcmR3YXJlIHVzZQpAQCAtMjY5LDIzICsyODQsNiBAQAogCiAJPC9zZWN0Mj4KIAotCTxzZWN0Mj48dGl0bGU+UmVzZXQgQVRBIGJ1czwvdGl0bGU+Ci0JPHByb2dyYW1saXN0aW5nPgotdm9pZCAoKnBoeV9yZXNldCkgKHN0cnVjdCBhdGFfcG9ydCAqYXApOwotCTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLQk8cGFyYT4KLQlUaGUgdmVyeSBmaXJzdCBzdGVwIGluIHRoZSBwcm9iZSBwaGFzZS4gIEFjdGlvbnMgdmFyeSBkZXBlbmRpbmcKLQlvbiB0aGUgYnVzIHR5cGUsIHR5cGljYWxseS4gIEFmdGVyIHdha2luZyB1cCB0aGUgZGV2aWNlIGFuZCBwcm9iaW5nCi0JZm9yIGRldmljZSBwcmVzZW5jZSAoUEFUQSBhbmQgU0FUQSksIHR5cGljYWxseSBhIHNvZnQgcmVzZXQKLQkoU1JTVCkgd2lsbCBiZSBwZXJmb3JtZWQuICBEcml2ZXJzIHR5cGljYWxseSB1c2UgdGhlIGhlbHBlcgotCWZ1bmN0aW9ucyBhdGFfYnVzX3Jlc2V0KCkgb3Igc2F0YV9waHlfcmVzZXQoKSBmb3IgdGhpcyBob29rLgotCU1hbnkgU0FUQSBkcml2ZXJzIHVzZSBzYXRhX3BoeV9yZXNldCgpIG9yIGNhbGwgaXQgZnJvbSB3aXRoaW4KLQl0aGVpciBvd24gcGh5X3Jlc2V0KCkgZnVuY3Rpb25zLgotCTwvcGFyYT4KLQotCTwvc2VjdDI+Ci0KIAk8c2VjdDI+PHRpdGxlPkNvbnRyb2wgUENJIElERSBCTURNQSBlbmdpbmU8L3RpdGxlPgogCTxwcm9ncmFtbGlzdGluZz4KIHZvaWQgKCpibWRtYV9zZXR1cCkgKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwpAQCAtMzU0LDE2ICszNTIsNzQgQEAKIAogCTwvc2VjdDI+CiAKLQk8c2VjdDI+PHRpdGxlPlRpbWVvdXQgKGVycm9yKSBoYW5kbGluZzwvdGl0bGU+CisJPHNlY3QyPjx0aXRsZT5FeGNlcHRpb24gYW5kIHByb2JlIGhhbmRsaW5nIChFSCk8L3RpdGxlPgogCTxwcm9ncmFtbGlzdGluZz4KIHZvaWQgKCplbmdfdGltZW91dCkgKHN0cnVjdCBhdGFfcG9ydCAqYXApOwordm9pZCAoKnBoeV9yZXNldCkgKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogCTwvcHJvZ3JhbWxpc3Rpbmc+CiAKIAk8cGFyYT4KLVRoaXMgaXMgYSBoaWdoIGxldmVsIGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSB0aGUKLWVycm9yIGhhbmRsaW5nIHRocmVhZCwgd2hlbiBhIGNvbW1hbmQgdGltZXMgb3V0LiAgTW9zdCBuZXdlcgotaGFyZHdhcmUgd2lsbCBpbXBsZW1lbnQgaXRzIG93biBlcnJvciBoYW5kbGluZyBjb2RlIGhlcmUuICBJREUgQk1ETUEKLWRyaXZlcnMgbWF5IHVzZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGF0YV9lbmdfdGltZW91dCgpLgorRGVwcmVjYXRlZC4gIFVzZSAtPmVycm9yX2hhbmRsZXIoKSBpbnN0ZWFkLgorCTwvcGFyYT4KKworCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpmcmVlemUpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3ZvaWQgKCp0aGF3KSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorYXRhX3BvcnRfZnJlZXplKCkgaXMgY2FsbGVkIHdoZW4gSFNNIHZpb2xhdGlvbnMgb3Igc29tZSBvdGhlcgorY29uZGl0aW9uIGRpc3J1cHRzIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhlIHBvcnQuICBBIGZyb3plbiBwb3J0CitpcyBub3QgYWxsb3dlZCB0byBwZXJmb3JtIGFueSBvcGVyYXRpb24gdW50aWwgdGhlIHBvcnQgaXMKK3RoYXdlZCwgd2hpY2ggdXN1YWxseSBmb2xsb3dzIGEgc3VjY2Vzc2Z1bCByZXNldC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KK1RoZSBvcHRpb25hbCAtPmZyZWV6ZSgpIGNhbGxiYWNrIGNhbiBiZSB1c2VkIGZvciBmcmVlemluZyB0aGUgcG9ydAoraGFyZHdhcmUtd2lzZSAoZS5nLiBtYXNrIGludGVycnVwdCBhbmQgc3RvcCBETUEgZW5naW5lKS4gIElmIGEKK3BvcnQgY2Fubm90IGJlIGZyb3plbiBoYXJkd2FyZS13aXNlLCB0aGUgaW50ZXJydXB0IGhhbmRsZXIKK211c3QgYWNrIGFuZCBjbGVhciBpbnRlcnJ1cHRzIHVuY29uZGl0aW9uYWxseSB3aGlsZSB0aGUgcG9ydAoraXMgZnJvemVuLgorCTwvcGFyYT4KKwk8cGFyYT4KK1RoZSBvcHRpb25hbCAtPnRoYXcoKSBjYWxsYmFjayBpcyBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgb3Bwb3NpdGUgb2YgLT5mcmVlemUoKToKK3ByZXBhcmUgdGhlIHBvcnQgZm9yIG5vcm1hbCBvcGVyYXRpb24gb25jZSBhZ2Fpbi4gIFVubWFzayBpbnRlcnJ1cHRzLAorc3RhcnQgRE1BIGVuZ2luZSwgZXRjLgorCTwvcGFyYT4KKworCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCplcnJvcl9oYW5kbGVyKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorLT5lcnJvcl9oYW5kbGVyKCkgaXMgYSBkcml2ZXIncyBob29rIGludG8gcHJvYmUsIGhvdHBsdWcsIGFuZCByZWNvdmVyeQorYW5kIG90aGVyIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMuICBUaGUgcHJpbWFyeSByZXNwb25zaWJpbGl0eSBvZiBhbgoraW1wbGVtZW50YXRpb24gaXMgdG8gY2FsbCBhdGFfZG9fZWgoKSBvciBhdGFfYm1kbWFfZHJpdmVfZWgoKSB3aXRoIGEgc2V0CitvZiBFSCBob29rcyBhcyBhcmd1bWVudHM6CisJPC9wYXJhPgorCisJPHBhcmE+CisncHJlcmVzZXQnIGhvb2sgKG1heSBiZSBOVUxMKSBpcyBjYWxsZWQgZHVyaW5nIGFuIEVIIHJlc2V0LCBiZWZvcmUgYW55IG90aGVyIGFjdGlvbnMKK2FyZSB0YWtlbi4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKydwb3N0cmVzZXQnIGhvb2sgKG1heSBiZSBOVUxMKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIEVIIHJlc2V0IGlzIHBlcmZvcm1lZC4gIEJhc2VkIG9uCitleGlzdGluZyBjb25kaXRpb25zLCBzZXZlcml0eSBvZiB0aGUgcHJvYmxlbSwgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcywKKwk8L3BhcmE+CisKKwk8cGFyYT4KK0VpdGhlciAnc29mdHJlc2V0JyAobWF5IGJlIE5VTEwpIG9yICdoYXJkcmVzZXQnIChtYXkgYmUgTlVMTCkgd2lsbCBiZQorY2FsbGVkIHRvIHBlcmZvcm0gdGhlIGxvdy1sZXZlbCBFSCByZXNldC4KKwk8L3BhcmE+CisKKwk8cHJvZ3JhbWxpc3Rpbmc+Cit2b2lkICgqcG9zdF9pbnRlcm5hbF9jbWQpIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CitQZXJmb3JtIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBhY3Rpb25zIG5lY2Vzc2FyeSB0byBmaW5pc2ggcHJvY2Vzc2luZworYWZ0ZXIgZXhlY3V0aW5nIGEgcHJvYmUtdGltZSBvciBFSC10aW1lIGNvbW1hbmQgdmlhIGF0YV9leGVjX2ludGVybmFsKCkuCiAJPC9wYXJhPgogCiAJPC9zZWN0Mj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL3doYXRpc1JDVS50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS93aGF0aXNSQ1UudHh0CmluZGV4IDA3Y2I5M2IuLjZlNDU5NDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUkNVL3doYXRpc1JDVS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SQ1Uvd2hhdGlzUkNVLnR4dApAQCAtNzkwLDcgKzc5MCw2IEBACiAKIFJDVSBncmFjZSBwZXJpb2Q6CiAKLQlzeW5jaHJvbml6ZV9rZXJuZWwgKGRlcHJlY2F0ZWQpCiAJc3luY2hyb25pemVfbmV0CiAJc3luY2hyb25pemVfc2NoZWQKIAlzeW5jaHJvbml6ZV9yY3UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0Q2hlY2tsaXN0IGIvRG9jdW1lbnRhdGlvbi9TdWJtaXRDaGVja2xpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzMDA5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vU3VibWl0Q2hlY2tsaXN0CkBAIC0wLDAgKzEsNTcgQEAKK0xpbnV4IEtlcm5lbCBwYXRjaCBzdW1iaXR0YWwgY2hlY2tsaXN0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitIZXJlIGFyZSBzb21lIGJhc2ljIHRoaW5ncyB0aGF0IGRldmVsb3BlcnMgc2hvdWxkIGRvIGlmIHRoZXkKK3dhbnQgdG8gc2VlIHRoZWlyIGtlcm5lbCBwYXRjaCBzdWJtaXR0YWxzIGFjY2VwdGVkIHF1aWNrZXIuCisKK1RoZXNlIGFyZSBhbGwgYWJvdmUgYW5kIGJleW9uZCB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIHByb3ZpZGVkCitpbiBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGFuZCBlbHNld2hlcmUgYWJvdXQgc3VibWl0dGluZworTGludXgga2VybmVsIHBhdGNoZXMuCisKKworCistIEJ1aWxkcyBjbGVhbmx5IHdpdGggYXBwbGljYWJsZSBvciBtb2RpZmllZCBDT05GSUcgb3B0aW9ucyA9eSwgPW0sIGFuZCA9bi4KKyAgTm8gZ2NjIHdhcm5pbmdzL2Vycm9ycywgbm8gbGlua2VyIHdhcm5pbmdzL2Vycm9ycy4KKworLSBQYXNzZXMgYWxsbm9jb25maWcsIGFsbG1vZGNvbmZpZworCistIEJ1aWxkcyBvbiBtdWx0aXBsZSBDUFUgYXJjaC1lcyBieSB1c2luZyBsb2NhbCBjcm9zcy1jb21waWxlIHRvb2xzCisgIG9yIHNvbWV0aGluZyBsaWtlIFBMTSBhdCBPU0RMLgorCistIHBwYzY0IGlzIGEgZ29vZCBhcmNoaXRlY3R1cmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIGNoZWNraW5nIGJlY2F1c2UgaXQKKyAgdGVuZHMgdG8gdXNlIGB1bnNpZ25lZCBsb25nJyBmb3IgNjQtYml0IHF1YW50aXRpZXMuCisKKy0gTWF0Y2hlcyBrZXJuZWwgY29kaW5nIHN0eWxlKCEpCisKKy0gQW55IG5ldyBvciBtb2RpZmllZCBDT05GSUcgb3B0aW9ucyBkb24ndCBtdWNrIHVwIHRoZSBjb25maWcgbWVudS4KKworLSBBbGwgbmV3IEtjb25maWcgb3B0aW9ucyBoYXZlIGhlbHAgdGV4dC4KKworLSBIYXMgYmVlbiBjYXJlZnVsbHkgcmV2aWV3ZWQgd2l0aCByZXNwZWN0IHRvIHJlbGV2YW50IEtjb25maWcKKyAgY29tYmluYXRpb25zLiAgVGhpcyBpcyB2ZXJ5IGhhcmQgdG8gZ2V0IHJpZ2h0IHdpdGggdGVzdGluZyAtLQorICBicmFpbnBvd2VyIHBheXMgb2ZmIGhlcmUuCisKKy0gQ2hlY2sgY2xlYW5seSB3aXRoIHNwYXJzZS4KKworLSBVc2UgJ21ha2UgY2hlY2tzdGFjaycgYW5kICdtYWtlIG5hbWVzcGFjZWNoZWNrJyBhbmQgZml4IGFueQorICBwcm9ibGVtcyB0aGF0IHRoZXkgZmluZC4gIE5vdGU6ICBjaGVja3N0YWNrIGRvZXMgbm90IHBvaW50IG91dAorICBwcm9ibGVtcyBleHBsaWNpdGx5LCBidXQgYW55IG9uZSBmdW5jdGlvbiB0aGF0IHVzZXMgbW9yZSB0aGFuCisgIDUxMiBieXRlcyBvbiB0aGUgc3RhY2sgaXMgYSBjYW5kaWRhdGUgZm9yIGNoYW5nZS4KKworLSBJbmNsdWRlIGtlcm5lbC1kb2MgdG8gZG9jdW1lbnQgZ2xvYmFsIGtlcm5lbCBBUElzLiAgKE5vdCByZXF1aXJlZAorICBmb3Igc3RhdGljIGZ1bmN0aW9ucywgYnV0IE9LIHRoZXJlIGFsc28uKSAgVXNlICdtYWtlIGh0bWxkb2NzJworICBvciAnbWFrZSBtYW5kb2NzJyB0byBjaGVjayB0aGUga2VybmVsLWRvYyBhbmQgZml4IGFueSBpc3N1ZXMuCisKKy0gSGFzIGJlZW4gdGVzdGVkIHdpdGggQ09ORklHX1BSRUVNUFQsIENPTkZJR19ERUJVR19QUkVFTVBULAorICBDT05GSUdfREVCVUdfU0xBQiwgQ09ORklHX0RFQlVHX1BBR0VBTExPQywgQ09ORklHX0RFQlVHX01VVEVYRVMsCisgIENPTkZJR19ERUJVR19TUElOTE9DSywgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGFsbCBzaW11bHRhbmVvdXNseQorICBlbmFibGVkLgorCistIEhhcyBiZWVuIGJ1aWxkLSBhbmQgcnVudGltZSB0ZXN0ZWQgd2l0aCBhbmQgd2l0aG91dCBDT05GSUdfU01QIGFuZAorICBDT05GSUdfUFJFRU1QVC4KKworLSBJZiB0aGUgcGF0Y2ggYWZmZWN0cyBJTy9EaXNrLCBldGM6IGhhcyBiZWVuIHRlc3RlZCB3aXRoIGFuZCB3aXRob3V0CisgIENPTkZJR19MQkQuCisKKworMjAwNi1BUFItMjcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0CmluZGV4IGIzNjlhOGMuLmIyZjU5M2YgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dApAQCAtMyw3ICszLDcgQEAKIAogCSAgICAgTWFpbnRhaW5lZCBieSBUb3JiZW4gTWF0aGlhc2VuIDxkZXZpY2VAbGFuYW5hLm9yZz4KIAotCQkgICAgICBMYXN0IHJldmlzZWQ6IDI1IEphbnVhcnkgMjAwNQorCQkgICAgICBMYXN0IHJldmlzZWQ6IDAxIE1hcmNoIDIwMDYKIAogVGhpcyBsaXN0IGlzIHRoZSBMaW51eCBEZXZpY2UgTGlzdCwgdGhlIG9mZmljaWFsIHJlZ2lzdHJ5IG9mIGFsbG9jYXRlZAogZGV2aWNlIG51bWJlcnMgYW5kIC9kZXYgZGlyZWN0b3J5IG5vZGVzIGZvciB0aGUgTGludXggb3BlcmF0aW5nCkBAIC05NCw3ICs5NCw2IEBACiAJCSAgOSA9IC9kZXYvdXJhbmRvbQlGYXN0ZXIsIGxlc3Mgc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuLgogCQkgMTAgPSAvZGV2L2FpbwkJQXN5bmNyb25vdXMgSS9PIG5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKIAkJIDExID0gL2Rldi9rbXNnCQlXcml0ZXMgdG8gdGhpcyBjb21lIG91dCBhcyBwcmludGsncwotCQkgMTIgPSAvZGV2L29sZG1lbQlBY2Nlc3MgdG8gY3Jhc2ggZHVtcCBmcm9tIGtleGVjIGtlcm5lbAogICAxIGJsb2NrCVJBTSBkaXNrCiAJCSAgMCA9IC9kZXYvcmFtMAkJRmlyc3QgUkFNIGRpc2sKIAkJICAxID0gL2Rldi9yYW0xCQlTZWNvbmQgUkFNIGRpc2sKQEAgLTI2MiwxMyArMjYxLDEzIEBACiAJCU5PVEU6IFRoZXNlIGRldmljZXMgcGVybWl0IGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzLgogCiAgIDcgYmxvY2sJTG9vcGJhY2sgZGV2aWNlcwotCQkgIDAgPSAvZGV2L2xvb3AwCUZpcnN0IGxvb3BiYWNrIGRldmljZQotCQkgIDEgPSAvZGV2L2xvb3AxCVNlY29uZCBsb29wYmFjayBkZXZpY2UKKwkJICAwID0gL2Rldi9sb29wMAlGaXJzdCBsb29wIGRldmljZQorCQkgIDEgPSAvZGV2L2xvb3AxCVNlY29uZCBsb29wIGRldmljZQogCQkgICAgLi4uCiAKLQkJVGhlIGxvb3BiYWNrIGRldmljZXMgYXJlIHVzZWQgdG8gbW91bnQgZmlsZXN5c3RlbXMgbm90CisJCVRoZSBsb29wIGRldmljZXMgYXJlIHVzZWQgdG8gbW91bnQgZmlsZXN5c3RlbXMgbm90CiAJCWFzc29jaWF0ZWQgd2l0aCBibG9jayBkZXZpY2VzLglUaGUgYmluZGluZyB0byB0aGUKLQkJbG9vcGJhY2sgZGV2aWNlcyBpcyBoYW5kbGVkIGJ5IG1vdW50KDgpIG9yIGxvc2V0dXAoOCkuCisJCWxvb3AgZGV2aWNlcyBpcyBoYW5kbGVkIGJ5IG1vdW50KDgpIG9yIGxvc2V0dXAoOCkuCiAKICAgOCBibG9jawlTQ1NJIGRpc2sgZGV2aWNlcyAoMC0xNSkKIAkJICAwID0gL2Rldi9zZGEJCUZpcnN0IFNDU0kgZGlzayB3aG9sZSBkaXNrCkBAIC05NDMsNyArOTQyLDcgQEAKIAkJMjQwID0gL2Rldi9mdGxwCQlGVEwgb24gMTZ0aCBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2UgCiAKIAkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQotCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleHBlY3QgdGhhdCB0aGUgcGFydGl0aW9uCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBwYXJ0aXRpb24KIAkJbGltaXQgaXMgMTUgcmF0aGVyIHRoYW4gNjMgcGVyIGRpc2sgKHNhbWUgYXMgU0NTSS4pCiAKICA0NSBjaGFyCWlzZG40bGludXggSVNETiBCUkkgZHJpdmVyCkBAIC0xMTY4LDcgKzExNjcsNyBAQAogCQlUaGUgZmlsZW5hbWUgb2YgdGhlIGVuY3J5cHRlZCBjb250YWluZXIgYW5kIHRoZSBwYXNzd29yZHMKIAkJYXJlIHNlbnQgdmlhIGlvY3RscyAodXNpbmcgdGhlIHNkbW91bnQgdG9vbCkgdG8gdGhlIG1hc3RlcgogCQlub2RlIHdoaWNoIHRoZW4gYWN0aXZhdGVzIHRoZW0gdmlhIG9uZSBvZiB0aGUKLQkJL2Rldi9zY3JhbWRpc2sveCBub2RlcyBmb3IgbG9vcGJhY2sgbW91bnRpbmcgKGFsbCBoYW5kbGVkCisJCS9kZXYvc2NyYW1kaXNrL3ggbm9kZXMgZm9yIGxvb3AgbW91bnRpbmcgKGFsbCBoYW5kbGVkCiAJCXRocm91Z2ggdGhlIHNkbW91bnQgdG9vbCkuCiAKIAkJUmVxdWVzdGVkIGJ5OiBhbmR5QHNjcmFtZGlza2xpbnV4Lm9yZwpAQCAtMjUzOCwxOCArMjUzNywzMiBAQAogCQkgIDAgPSAvZGV2L3VzYi9scDAJRmlyc3QgVVNCIHByaW50ZXIKIAkJICAgIC4uLgogCQkgMTUgPSAvZGV2L3VzYi9scDE1CTE2dGggVVNCIHByaW50ZXIKLQkJIDE2ID0gL2Rldi91c2IvbW91c2UwCUZpcnN0IFVTQiBtb3VzZQotCQkgICAgLi4uCi0JCSAzMSA9IC9kZXYvdXNiL21vdXNlMTUJMTZ0aCBVU0IgbW91c2UKLQkJIDMyID0gL2Rldi91c2IvZXowCUZpcnN0IFVTQiBmaXJtd2FyZSBsb2FkZXIKLQkJICAgIC4uLgotCQkgNDcgPSAvZGV2L3VzYi9lejE1CTE2dGggVVNCIGZpcm13YXJlIGxvYWRlcgogCQkgNDggPSAvZGV2L3VzYi9zY2FubmVyMAlGaXJzdCBVU0Igc2Nhbm5lcgogCQkgICAgLi4uCiAJCSA2MyA9IC9kZXYvdXNiL3NjYW5uZXIxNSAxNnRoIFVTQiBzY2FubmVyCiAJCSA2NCA9IC9kZXYvdXNiL3JpbzUwMAlEaWFtb25kIFJpbyA1MDAKIAkJIDY1ID0gL2Rldi91c2IvdXNibGNkCVVTQkxDRCBJbnRlcmZhY2UgKGluZm9AdXNibGNkLmRlKQogCQkgNjYgPSAvZGV2L3VzYi9jcGFkMAlTeW5hcHRpY3MgY1BhZCAobW91c2UvTENEKQorCQkgOTYgPSAvZGV2L3VzYi9oaWRkZXYwCTFzdCBVU0IgSElEIGRldmljZQorCQkgICAgLi4uCisJCTExMSA9IC9kZXYvdXNiL2hpZGRldjE1CTE2dGggVVNCIEhJRCBkZXZpY2UKKwkJMTEyID0gL2Rldi91c2IvYXVlcjAJMXN0IGF1ZXJzd2FsZCBJU0ROIGRldmljZQorCQkgICAgLi4uCisJCTEyNyA9IC9kZXYvdXNiL2F1ZXIxNQkxNnRoIGF1ZXJzd2FsZCBJU0ROIGRldmljZQorCQkxMjggPSAvZGV2L3VzYi9icmx2Z3IwCUZpcnN0IEJyYWlsbGUgVm95YWdlciBkZXZpY2UKKwkJICAgIC4uLgorCQkxMzEgPSAvZGV2L3VzYi9icmx2Z3IzCUZvdXJ0aCBCcmFpbGxlIFZveWFnZXIgZGV2aWNlCisJCTEzMiA9IC9kZXYvdXNiL2lkbW91c2UJSUQgTW91c2UgKGZpbmdlcnByaW50IHNjYW5uZXIpIGRldmljZQorCQkxMzMgPSAvZGV2L3VzYi9zaXN1c2J2Z2ExCUZpcnN0IFNpU1VTQiBWR0EgZGV2aWNlCisJCSAgICAuLi4KKwkJMTQwID0gL2Rldi91c2Ivc2lzdXNidmdhOAlFaWd0aCBTSVNVU0IgVkdBIGRldmljZQorCQkxNDQgPSAvZGV2L3VzYi9sY2QJVVNCIExDRCBkZXZpY2UKKwkJMTYwID0gL2Rldi91c2IvbGVnb3VzYnRvd2VyMAkxc3QgVVNCIExlZ290b3dlciBkZXZpY2UKKwkJICAgIC4uLgorCQkxNzUgPSAvZGV2L3VzYi9sZWdvdXNidG93ZXIxNQkxNnRoIFVTQiBMZWdvdG93ZXIgZGV2aWNlCisJCTI0MCA9IC9kZXYvdXNiL2RhYnVzYjAJRmlyc3QgZGF1YnVzYiBkZXZpY2UKKwkJICAgIC4uLgorCQkyNDMgPSAvZGV2L3VzYi9kYWJ1c2IzCUZvdXJ0aCBkYWJ1c2IgZGV2aWNlCiAKIDE4MCBibG9jawlVU0IgYmxvY2sgZGV2aWNlcwogCQkwID0gL2Rldi91YmEJCUZpcnN0IFVTQiBibG9jayBkZXZpY2UKQEAgLTI3MTAsNiArMjcyMywxNyBAQAogCQkgIDEgPSAvZGV2L2NwdS8xL21zcgkJTVNScyBvbiBDUFUgMQogCQkgICAgLi4uCiAKKzIwMiBibG9jawlYZW4gVmlydHVhbCBCbG9jayBEZXZpY2UKKwkJICAwID0gL2Rldi94dmRhICAgICAgIEZpcnN0IFhlbiBWQkQgd2hvbGUgZGlzaworCQkgIDE2ID0gL2Rldi94dmRiICAgICAgU2Vjb25kIFhlbiBWQkQgd2hvbGUgZGlzaworCQkgIDMyID0gL2Rldi94dmRjICAgICAgVGhpcmQgWGVuIFZCRCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJICAyNDAgPSAvZGV2L3h2ZHAgICAgIFNpeHRlZW50aCBYZW4gVkJEIHdob2xlIGRpc2sKKworICAgICAgICAgICAgICAgIFBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKyAgICAgICAgICAgICAgICBkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25zIGlzIDE1LgorCiAyMDMgY2hhcglDUFUgQ1BVSUQgaW5mb3JtYXRpb24KIAkJICAwID0gL2Rldi9jcHUvMC9jcHVpZAkJQ1BVSUQgb24gQ1BVIDAKIAkJICAxID0gL2Rldi9jcHUvMS9jcHVpZAkJQ1BVSUQgb24gQ1BVIDEKQEAgLTI3NDcsMTEgKzI3NzEsMjYgQEAKIAkJIDQ2ID0gL2Rldi90dHlDUE0wCQlQUEMgQ1BNIChTQ0Mgb3IgU01DKSAtIHBvcnQgMAogCQkgICAgLi4uCiAJCSA0NyA9IC9kZXYvdHR5Q1BNNQkJUFBDIENQTSAoU0NDIG9yIFNNQykgLSBwb3J0IDUKLQkJIDUwID0gL2Rldi90dHlJT0M0MAkJQWx0aXggc2VyaWFsIGNhcmQKKwkJIDUwID0gL2Rldi90dHlJT0MwCQlBbHRpeCBzZXJpYWwgY2FyZAogCQkgICAgLi4uCi0JCSA4MSA9IC9kZXYvdHR5SU9DNDMxCQlBbHRpeCBzZXJpYWwgY2FyZAotCQkgODIgPSAvZGV2L3R0eVZSMCAgICAgICAgICAgICAgIE5FQyBWUjQxMDAgc2VyaWVzIFNJVQotCQkgODMgPSAvZGV2L3R0eVZSMSAgICAgICAgICAgICAgIE5FQyBWUjQxMDAgc2VyaWVzIERTSVUKKwkJIDgxID0gL2Rldi90dHlJT0MzMQkJQWx0aXggc2VyaWFsIGNhcmQKKwkJIDgyID0gL2Rldi90dHlWUjAJCU5FQyBWUjQxMDAgc2VyaWVzIFNJVQorCQkgODMgPSAvZGV2L3R0eVZSMQkJTkVDIFZSNDEwMCBzZXJpZXMgRFNJVQorCQkgODQgPSAvZGV2L3R0eUlPQzg0CQlBbHRpeCBpb2M0IHNlcmlhbCBjYXJkCisJCSAgICAuLi4KKwkJIDExNSA9IC9kZXYvdHR5SU9DMTE1CQlBbHRpeCBpb2M0IHNlcmlhbCBjYXJkCisJCSAxMTYgPSAvZGV2L3R0eVNJT0MwCQlBbHRpeCBpb2MzIHNlcmlhbCBjYXJkCisJCSAgICAuLi4KKwkJIDE0NyA9IC9kZXYvdHR5U0lPQzMxCQlBbHRpeCBpb2MzIHNlcmlhbCBjYXJkCisJCSAxNDggPSAvZGV2L3R0eVBTQzAJCVBQQyBQU0MgLSBwb3J0IDAKKwkJICAgIC4uLgorCQkgMTUzID0gL2Rldi90dHlQU0M1CQlQUEMgUFNDIC0gcG9ydCA1CisJCSAxNTQgPSAvZGV2L3R0eUFUMAkJQVRNRUwgc2VyaWFsIHBvcnQgMAorCQkgICAgLi4uCisJCSAxNjkgPSAvZGV2L3R0eUFUMTUJCUFUTUVMIHNlcmlhbCBwb3J0IDE1CisJCSAxNzAgPSAvZGV2L3R0eU5YMAkJSGlsc2NoZXIgbmV0WCBzZXJpYWwgcG9ydCAwCisJCSAgICAuLi4KKwkJIDE4NSA9IC9kZXYvdHR5TlgxNQkJSGlsc2NoZXIgbmV0WCBzZXJpYWwgcG9ydCAxNQogCiAyMDUgY2hhcglMb3ctZGVuc2l0eSBzZXJpYWwgcG9ydHMgKGFsdGVybmF0ZSBkZXZpY2UpCiAJCSAgMCA9IC9kZXYvY3VsdTAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlMVTAKQEAgLTI3ODYsOCArMjgyNSw4IEBACiAJCSA1MCA9IC9kZXYvY3Vpb2M0MAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUlPQzQwCiAJCSAgICAuLi4KIAkJIDgxID0gL2Rldi9jdWlvYzQzMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUlPQzQzMQotCQkgODIgPSAvZGV2L2N1dnIwICAgICAgICAgICAgICAgIENhbGxvdXQgZGV2aWNlIGZvciB0dHlWUjAKLQkJIDgzID0gL2Rldi9jdXZyMSAgICAgICAgICAgICAgICBDYWxsb3V0IGRldmljZSBmb3IgdHR5VlIxCisJCSA4MiA9IC9kZXYvY3V2cjAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlWUjAKKwkJIDgzID0gL2Rldi9jdXZyMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVZSMQogCiAKIDIwNiBjaGFyCU9uU3RyZWFtIFNDLXgwIHRhcGUgZGV2aWNlcwpAQCAtMjg5Nyw3ICsyOTM2LDYgQEAKIAkJICAgIC4uLgogCQkxOTYgPSAvZGV2L2R2Yi9hZGFwdGVyMy92aWRlbzAgICAgZmlyc3QgdmlkZW8gZGVjb2RlciBvZiBmb3VydGggY2FyZAogCi0KIDIxNiBjaGFyCUJsdWV0b290aCBSRkNPTU0gVFRZIGRldmljZXMKIAkJICAwID0gL2Rldi9yZmNvbW0wCQlGaXJzdCBCbHVldG9vdGggUkZDT01NIFRUWSBkZXZpY2UKIAkJICAxID0gL2Rldi9yZmNvbW0xCQlTZWNvbmQgQmx1ZXRvb3RoIFJGQ09NTSBUVFkgZGV2aWNlCkBAIC0zMDAyLDEyICszMDQwLDQzIEBACiAJCWlvY3RsKCkncyBjYW4gYmUgdXNlZCB0byByZXdpbmQgdGhlIHRhcGUgcmVnYXJkbGVzcyBvZgogCQl0aGUgZGV2aWNlIHVzZWQgdG8gYWNjZXNzIGl0LgogCi0yMzEgY2hhcglJbmZpbmlCYW5kIE1BRAorMjMxIGNoYXIJSW5maW5pQmFuZAogCQkwID0gL2Rldi9pbmZpbmliYW5kL3VtYWQwCiAJCTEgPSAvZGV2L2luZmluaWJhbmQvdW1hZDEKLQkJIC4uLgorCQkgIC4uLgorCQk2MyA9IC9kZXYvaW5maW5pYmFuZC91bWFkNjMgICAgNjNyZCBJbmZpbmlCYW5kTWFkIGRldmljZQorCQk2NCA9IC9kZXYvaW5maW5pYmFuZC9pc3NtMCAgICAgRmlyc3QgSW5maW5pQmFuZCBJc1NNIGRldmljZQorCQk2NSA9IC9kZXYvaW5maW5pYmFuZC9pc3NtMSAgICAgU2Vjb25kIEluZmluaUJhbmQgSXNTTSBkZXZpY2UKKwkJICAuLi4KKwkJMTI3ID0gL2Rldi9pbmZpbmliYW5kL2lzc202MyAgICA2M3JkIEluZmluaUJhbmQgSXNTTSBkZXZpY2UKKwkJMTI4ID0gL2Rldi9pbmZpbmliYW5kL3V2ZXJiczAgICBGaXJzdCBJbmZpbmlCYW5kIHZlcmJzIGRldmljZQorCQkxMjkgPSAvZGV2L2luZmluaWJhbmQvdXZlcmJzMSAgIFNlY29uZCBJbmZpbmlCYW5kIHZlcmJzIGRldmljZQorCQkgIC4uLgorCQkxNTkgPSAvZGV2L2luZmluaWJhbmQvdXZlcmJzMzEgIDMxc3QgSW5maW5pQmFuZCB2ZXJicyBkZXZpY2UKIAotMjMyLTIzOQkJVU5BU1NJR05FRAorMjMyIGNoYXIJQmlvbWV0cmljIERldmljZXMKKwkJMCA9IC9kZXYvYmlvbWV0cmljL3NlbnNvcjAvZmluZ2VycHJpbnQJZmlyc3QgZmluZ2VycHJpbnQgc2Vuc29yIG9uIGZpcnN0IGRldmljZQorCQkxID0gL2Rldi9iaW9tZXRyaWMvc2Vuc29yMC9pcmlzCQlmaXJzdCBpcmlzIHNlbnNvciBvbiBmaXJzdCBkZXZpY2UKKwkJMiA9IC9kZXYvYmlvbWV0cmljL3NlbnNvcjAvcmV0aW5hCWZpcnN0IHJldGluYSBzZW5zb3Igb24gZmlyc3QgZGV2aWNlCisJCTMgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IwL3ZvaWNlcHJpbnQJZmlyc3Qgdm9pY2VwcmludCBzZW5zb3Igb24gZmlyc3QgZGV2aWNlCisJCTQgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IwL2ZhY2lhbAlmaXJzdCBmYWNpYWwgc2Vuc29yIG9uIGZpcnN0IGRldmljZQorCQk1ID0gL2Rldi9iaW9tZXRyaWMvc2Vuc29yMC9oYW5kCQlmaXJzdCBoYW5kIHNlbnNvciBvbiBmaXJzdCBkZXZpY2UKKwkJICAuLi4KKwkJMTAgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IxL2ZpbmdlcnByaW50CWZpcnN0IGZpbmdlcnByaW50IHNlbnNvciBvbiBzZWNvbmQgZGV2aWNlCisJCSAgLi4uCisJCTIwID0gL2Rldi9iaW9tZXRyaWMvc2Vuc29yMi9maW5nZXJwcmludAlmaXJzdCBmaW5nZXJwcmludCBzZW5zb3Igb24gdGhpcmQgZGV2aWNlCisJCSAgLi4uCisKKzIzMyBjaGFyCVBhdGhTY2FsZSBJbmZpbmlQYXRoIGludGVyY29ubmVjdAorCQkwID0gL2Rldi9pcGF0aCAgICAgICAgUHJpbWFyeSBkZXZpY2UgZm9yIHByb2dyYW1zIChhbnkgdW5pdCkKKwkJMSA9IC9kZXYvaXBhdGgwICAgICAgIEFjY2VzcyBzcGVjaWZpY2FsbHkgdG8gdW5pdCAwCisJCTIgPSAvZGV2L2lwYXRoMSAgICAgICBBY2Nlc3Mgc3BlY2lmaWNhbGx5IHRvIHVuaXQgMQorCQkgIC4uLgorCQk0ID0gL2Rldi9pcGF0aDMgICAgICAgQWNjZXNzIHNwZWNpZmljYWxseSB0byB1bml0IDMKKwkJMTI5ID0gL2Rldi9pcGF0aF9zbWEgICAgRGV2aWNlIHVzZWQgYnkgU3VibmV0IE1hbmFnZW1lbnQgQWdlbnQKKwkJMTMwID0gL2Rldi9pcGF0aF9kaWFnICAgRGV2aWNlIHVzZWQgYnkgZGlhZ25vc3RpY3MgcHJvZ3JhbXMKKworMjM0LTIzOQkJVU5BU1NJR05FRAogCiAyNDAtMjU0IGNoYXIJTE9DQUwvRVhQRVJJTUVOVEFMIFVTRQogMjQwLTI1NCBibG9jawlMT0NBTC9FWFBFUklNRU5UQUwgVVNFCkBAIC0zMDIxLDYgKzMwOTAsMjQgQEAKIAkJVGhpcyBtYWpvciBpcyByZXNlcnZlZCB0byBhc3Npc3QgdGhlIGV4cGFuc2lvbiB0byBhCiAJCWxhcmdlciBudW1iZXIgc3BhY2UuICBObyBkZXZpY2Ugbm9kZXMgd2l0aCB0aGlzIG1ham9yCiAJCXNob3VsZCBldmVyIGJlIGNyZWF0ZWQgb24gdGhlIGZpbGVzeXN0ZW0uCisJCShUaGlzIGlzIHByb2JhbHkgbm90IHRydWUgYW55bW9yZSwgYnV0IEknbGwgbGVhdmUgaXQKKwkJZm9yIG5vdyAvVG9yYmVuKQorCistLS1MQVJHRSBNQUpPUlMhISEhIS0tLQorCisyNTYgY2hhcglFcXVpbm94IFNTVCBtdWx0aS1wb3J0IHNlcmlhbCBib2FyZHMKKwkJICAgMCA9IC9kZXYvdHR5RVEwCUZpcnN0IHNlcmlhbCBwb3J0IG9uIGZpcnN0IEVxdWlub3ggU1NUIGJvYXJkCisJCSAxMjcgPSAvZGV2L3R0eUVRMTI3CUxhc3Qgc2VyaWFsIHBvcnQgb24gZmlyc3QgRXF1aW5veCBTU1QgYm9hcmQKKwkJIDEyOCA9IC9kZXYvdHR5RVExMjgJRmlyc3Qgc2VyaWFsIHBvcnQgb24gc2Vjb25kIEVxdWlub3ggU1NUIGJvYXJkCisJCSAgLi4uCisJCTEwMjcgPSAvZGV2L3R0eUVRMTAyNwlMYXN0IHNlcmlhbCBwb3J0IG9uIGVpZ2h0aCBFcXVpbm94IFNTVCBib2FyZAorCisyNTYgYmxvY2sJUmVzaWRlbnQgRmxhc2ggRGlzayBGbGFzaCBUcmFuc2xhdGlvbiBMYXllcgorCQkgIDAgPSAvZGV2L3JmZGEJCUZpcnN0IFJGRCBGVEwgbGF5ZXIKKwkJIDE2ID0gL2Rldi9yZmRiCQlTZWNvbmQgUkZEIEZUTCBsYXllcgorCQkgIC4uLgorCQkyNDAgPSAvZGV2L3JmZHAJCTE2dGggUkZEIEZUTCBsYXllcgorCiAKICAqKioqCUFERElUSU9OQUwgL2RldiBESVJFQ1RPUlkgRU5UUklFUwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKaW5kZXggZjUwY2Y4Zi4uMDI3Mjg1ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dApAQCAtMzMsMjcgKzMzLDEyIEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGF0OglSQ1UgQVBJIG1vdmVzIHRvIEVYUE9SVF9TWU1CT0xfR1BMCi1XaGVuOglBcHJpbCAyMDA2Ci1GaWxlczoJaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oLCBrZXJuZWwvcmN1cGRhdGUuYwotV2h5OglPdXRzaWRlIG9mIExpbnV4LCB0aGUgb25seSBpbXBsZW1lbnRhdGlvbnMgb2YgYW55dGhpbmcgZXZlbgotCXZhZ3VlbHkgcmVzZW1ibGluZyBSQ1UgdGhhdCBJIGFtIGF3YXJlIG9mIGFyZSBpbiBEWU5JWC9wdHgsCi0JVk0vWEEsIFRvcm5hZG8sIGFuZCBLNDIuICBJIGRvIG5vdCBleHBlY3QgYW55b25lIHRvIHBvcnQgYmluYXJ5Ci0JZHJpdmVycyBvciBrZXJuZWwgbW9kdWxlcyBmcm9tIGFueSBvZiB0aGVzZSwgc2luY2UgdGhlIGZpcnN0IHR3bwotCWFyZSBvd25lZCBieSBJQk0gYW5kIHRoZSBsYXN0IHR3byBhcmUgb3Blbi1zb3VyY2UgcmVzZWFyY2ggT1Nlcy4KLQlTbyB0aGVzZSB3aWxsIG1vdmUgdG8gR1BMIGFmdGVyIGEgZ3JhY2UgcGVyaW9kIHRvIGFsbG93Ci0JcGVvcGxlLCB3aG8gbWlnaHQgYmUgdXNpbmcgaW1wbGVtZW50YXRpb25zIHRoYXQgSSBhbSBub3QgYXdhcmUKLQlvZiwgdG8gYWRqdXN0IHRvIHRoaXMgdXBjb21pbmcgY2hhbmdlLgotV2hvOglQYXVsIEUuIE1jS2VubmV5IDxwYXVsbWNrQHVzLmlibS5jb20+Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBXaGF0OglyYXcxMzk0OiByZXF1ZXN0cyBvZiB0eXBlIFJBVzEzOTRfUkVRX0lTT19TRU5ELCBSQVcxMzk0X1JFUV9JU09fTElTVEVOCi1XaGVuOglOb3ZlbWJlciAyMDA1CitXaGVuOglOb3ZlbWJlciAyMDA2CiBXaHk6CURlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBuZXcgaW9jdGwtYmFzZWQgcmF3aXNvIGludGVyZmFjZSwgd2hpY2ggaXMKIAltb3JlIGVmZmljaWVudC4gIFlvdSBzaG91bGQgcmVhbGx5IGJlIHVzaW5nIGxpYnJhdzEzOTQgZm9yIHJhdzEzOTQKIAlhY2Nlc3MgYW55d2F5LgotV2hvOglKb2R5IE1jSW50eXJlIDxzY2pvZHlAc3RlYW1iYWxsb29uLmNvbT4KK1dobzoJSm9keSBNY0ludHlyZSA8c2Nqb2R5QG1vZGVybmR1Y2suY29tPgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9Mb2NraW5nIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9Mb2NraW5nCmluZGV4IDEwNDVkYTUuLmQzMWVmYmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvTG9ja2luZworKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL0xvY2tpbmcKQEAgLTk5LDcgKzk5LDcgQEAKIAlpbnQgKCpzeW5jX2ZzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdCk7CiAJdm9pZCAoKndyaXRlX3N1cGVyX2xvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIAl2b2lkICgqdW5sb2NrZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci0JaW50ICgqc3RhdGZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrc3RhdGZzICopOworCWludCAoKnN0YXRmcykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CiAJaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKIAl2b2lkICgqY2xlYXJfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAJdm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKQEAgLTE0MiwxNSArMTQyLDE2IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmaWxlX3N5c3RlbV90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogcHJvdG90eXBlczoKLQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigqZ2V0X3NiKSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwgaW50LAotCQkJY29uc3QgY2hhciAqLCB2b2lkICopOworCXN0cnVjdCBpbnQgKCpnZXRfc2IpIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBpbnQsCisJCQljb25zdCBjaGFyICosIHZvaWQgKiwgc3RydWN0IHZmc21vdW50ICopOwogCXZvaWQgKCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogbG9ja2luZyBydWxlczoKIAkJbWF5IGJsb2NrCUJLTAogZ2V0X3NiCQl5ZXMJCXllcwoga2lsbF9zYgkJeWVzCQl5ZXMKIAotLT5nZXRfc2IoKSByZXR1cm5zIGVycm9yIG9yIGEgbG9ja2VkIHN1cGVyYmxvY2sgKGV4Y2x1c2l2ZSBvbiAtPnNfdW1vdW50KS4KKy0+Z2V0X3NiKCkgcmV0dXJucyBlcnJvciBvciAwIHdpdGggbG9ja2VkIHN1cGVyYmxvY2sgYXR0YWNoZWQgdG8gdGhlIHZmc21vdW50CisoZXhjbHVzaXZlIG9uIC0+c191bW91bnQpLgogLT5raWxsX3NiKCkgdGFrZXMgYSB3cml0ZS1sb2NrZWQgc3VwZXJibG9jaywgZG9lcyBhbGwgc2h1dGRvd24gd29yayBvbiBpdCwKIHVubG9ja3MgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwppbmRleCAyZjM4ODQ2Li41NTMxNjk0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvcnRpbmcKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb3J0aW5nCkBAIC01MCwxMCArNTAsMTEgQEAKIHN1Y2Nlc3MgYW5kIG5lZ2F0aXZlIG51bWJlciBpbiBjYXNlIG9mIGVycm9yICgtRUlOVkFMIHVubGVzcyB5b3UgaGF2ZSBtb3JlCiBpbmZvcm1hdGl2ZSBlcnJvciB2YWx1ZSB0byByZXBvcnQpLiAgQ2FsbCBpdCBmb29fZmlsbF9zdXBlcigpLiAgTm93IGRlY2xhcmUKIAotc3RydWN0IHN1cGVyX2Jsb2NrIGZvb19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK2ludCBmb29fZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGV4dDJfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgZm9vX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiAob3Igc2ltaWxhciB3aXRoIHMvYmRldi9ub2Rldi8gb3Igcy9iZGV2L3NpbmdsZS8sIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CmluZGV4IDNhMmU1NTIuLjlkM2FlZDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Zmcy50eHQKQEAgLTExMyw4ICsxMTMsOCBAQAogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IGZzX2ZsYWdzOwotICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigqZ2V0X3NiKSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCB2b2lkICopOworICAgICAgICBzdHJ1Y3QgaW50ICgqZ2V0X3NiKSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCB2b2lkICosIHN0cnVjdCB2ZnNtb3VudCAqKTsKICAgICAgICAgdm9pZCAoKmtpbGxfc2IpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqIG5leHQ7CkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgICAgaW50ICgqc3luY19mcykoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpOwogICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgICB2b2lkICgqdW5sb2NrZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci0gICAgICAgIGludCAoKnN0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKKyAgICAgICAgaW50ICgqc3RhdGZzKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKICAgICAgICAgaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKICAgICAgICAgdm9pZCAoKmNsZWFyX2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWNkYjUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUKQEAgLTAsMCArMSw1OSBAQAorS2VybmVsIGRyaXZlciBhYml0dWd1cnUKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBBYml0IHVHdXJ1IChIYXJkd2FyZSBNb25pdG9yIHBhcnQgb25seSkKKyAgICBQcmVmaXg6ICdhYml0dWd1cnUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSAweDBFMAorICAgIERhdGFzaGVldDogTm90IGF2YWlsYWJsZSwgdGhpcyBkcml2ZXIgaXMgYmFzZWQgb24gcmV2ZXJzZSBlbmdpbmVlcmluZy4KKwlBICJEYXRhc2hlZXQiIGhhcyBiZWVuIHdyaXR0ZW4gYmFzZWQgb24gdGhlIHJldmVyc2UgZW5naW5lZXJpbmcgaXQKKwlzaG91bGQgYmUgYXZhaWxhYmxlIGluIHRoZSBzYW1lIGRpciBhcyB0aGlzIGZpbGUgdW5kZXIgdGhlIG5hbWUKKwlhYml0dWd1cnUtZGF0YXNoZWV0LgorCitBdXRob3JzOgorCUhhbnMgZGUgR29lZGUgPGoudy5yLmRlZ29lZGVAaGhzLm5sPiwKKwkoSW5pdGlhbCByZXZlcnNlIGVuZ2luZWVyaW5nIGRvbmUgYnkgT2xsZSBTYW5kYmVyZworCSA8b2xsZWJ1bGxAZ21haWwuY29tPikKKworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBmb3JjZTogYm9vbAkJRm9yY2UgZGV0ZWN0aW9uLiBOb3RlIHRoaXMgcGFyYW1ldGVyIG9ubHkgY2F1c2VzIHRoZQorCQkJZGV0ZWN0aW9uIHRvIGJlIHNraXBwZWQsIGlmIHRoZSB1R3VydSBjYW4ndCBiZSByZWFkCisJCQl0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIChpbnNtb2QpIHdpbGwgc3RpbGwgZmFpbC4KKyogZmFuX3NlbnNvcnM6IGludAlUZWxsIHRoZSBkcml2ZXIgaG93IG1hbnkgZmFuIHNwZWVkIHNlbnNvcnMgdGhlcmUgYXJlCisJCQlvbiB5b3VyIG1vdGhlcmJvYXJkLiBEZWZhdWx0OiAwIChhdXRvZGV0ZWN0KS4KKyogcHdtczogaW50CQlUZWxsIHRoZSBkcml2ZXIgaG93IG1hbnkgZmFuIHNwZWVkIGNvbnRyb2xzIChmYW4KKwkJCXB3bXMpIHlvdXIgbW90aGVyYm9hcmQgaGFzLiBEZWZhdWx0OiAwIChhdXRvZGV0ZWN0KS4KKyogdmVyYm9zZTogaW50CQlIb3cgdmVyYm9zZSBzaG91bGQgdGhlIGRyaXZlciBiZT8gKDAtMyk6CisJCQkgICAwIG5vcm1hbCBvdXRwdXQKKwkJCSAgIDEgKyB2ZXJib3NlIGVycm9yIHJlcG9ydGluZworCQkJICAgMiArIHNlbnNvcnMgdHlwZSBwcm9iaW5nIGluZm9cbiIKKwkJCSAgIDMgKyByZXRyeWFibGUgZXJyb3IgcmVwb3J0aW5nCisJCQlEZWZhdWx0OiAyICh0aGUgZHJpdmVyIGlzIHN0aWxsIGluIHRoZSB0ZXN0aW5nIHBoYXNlKQorCitOb3RpY2UgaWYgeW91IG5lZWQgYW55IG9mIHRoZSBmaXJzdCB0aHJlZSBvcHRpb25zIGFib3ZlIHBsZWFzZSBpbnNtb2QgdGhlCitkcml2ZXIgd2l0aCB2ZXJib3NlIHNldCB0byAzIGFuZCBtYWlsIG1lIDxqLncuci5kZWdvZWRlQGhocy5ubD4gdGhlIG91dHB1dCBvZjoKK2RtZXNnIHwgZ3JlcCBhYml0dWd1cnUKKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgZmVhdHVyZXMgb2YgdGhlIEFiaXQgdUd1cnUgY2hpcAorZm91bmQgb24gQWJpdCB1R3VydSBmZWF0dXJpbmcgbW90aGVyYm9hcmRzIChtb3N0IG1vZGVybiBBYml0IG1vdGhlcmJvYXJkcykuCisKK1RoZSB1R3VydSBjaGlwIGluIHJlYWxpdHkgaXMgYSBXaW5ib25kIFc4M0w5NTBEIGluIGRpc2d1aXNlIChkZXNwaXRlIEFiaXQKK2NsYWltaW5nIGl0IGlzICJhIG5ldyBtaWNyb3Byb2Nlc3NvciBkZXNpZ25lZCBieSB0aGUgQUJJVCBFbmdpbmVlcnMiKS4KK1VuZm9ydHVuYXRseSB0aGlzIGRvZXNuJ3QgaGVscCBzaW5jZSB0aGUgVzgzTDk1MEQgaXMgYSBnZW5lcmljCittaWNyb2NvbnRyb2xsZXIgd2l0aCBhIGN1c3RvbSBBYml0IGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gaXQuCisKK0Rlc3BpdGUgQWJpdCBub3QgcmVsZWFzaW5nIGFueSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHVHdXJ1LCBPbGxlCitTYW5kYmVyZyA8b2xsZWJ1bGxAZ21haWwuY29tPiBoYXMgbWFuYWdlZCB0byByZXZlcnNlIGVuZ2luZWVyIHRoZSBzZW5zb3IgcGFydAorb2YgdGhlIHVHdXJ1LiBXaXRob3V0IGhpcyB3b3JrIHRoaXMgZHJpdmVyIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUuCisKK0tub3duIElzc3VlcworLS0tLS0tLS0tLS0tCisKK1RoZSB2b2x0YWdlIGFuZCBmcmVxdWVuY3kgY29udHJvbCBwYXJ0cyBvZiB0aGUgQWJpdCB1R3VydSBhcmUgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWY1YTliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUtZGF0YXNoZWV0CkBAIC0wLDAgKzEsMzEyIEBACit1R3VydSBkYXRhc2hlZXQKKz09PT09PT09PT09PT09PQorCitGaXJzdCBvZiBhbGwsIHdoYXQgSSBrbm93IGFib3V0IHVHdXJ1IGlzIG5vIGZhY3QgYmFzZWQgb24gYW55IGhlbHAsIGhpbnRzIG9yCitkYXRhc2hlZXQgZnJvbSBBYml0LiBUaGUgZGF0YSBJIGhhdmUgZ290IG9uIHVHdXJ1IGhhdmUgSSBhc3NlbWJsZWQgdGhyb3VnaAorbXkgd2VhayBrbm93bGVkZ2UgaW4gImJhY2t3YXJkcyBlbmdpbmVlcmluZyIuCitBbmQganVzdCBmb3IgdGhlIHJlY29yZCwgeW91IG1heSBoYXZlIG5vdGljZWQgdUd1cnUgaXNuJ3QgYSBjaGlwIGRldmVsb3BlZCBieQorQWJpdCwgYXMgdGhleSBjbGFpbSBpdCB0byBiZS4gSXQncyByZWFseSBqdXN0IGFuIG1pY3JvcHJvY2Vzc29yICh1QykgY3JlYXRlZCBieQorV2luYm9uZCAoVzgzTDk1MEQpLiBBbmQgbm8sIHJlYWRpbmcgdGhlIG1hbnVhbCBmb3IgdGhpcyBzcGVjaWZpYyB1QyBvcgorbWFpbGluZyAgV2luZGJvbmQgZm9yIGhlbHAgd29uJ3QgZ2l2ZSBhbnkgdXNlZnVsbCBkYXRhIGFib3V0IHVHdXJ1LCBhcyBpdCBpcwordGhlIHByb2dyYW0gaW5zaWRlIHRoZSB1QyB0aGF0IGlzIHJlc3BvbmRpbmcgdG8gY2FsbHMuCisKK09sbGUgU2FuZGJlcmcgPG9sbGVidWxsQGdtYWlsLmNvbT4sIDIwMDUtMDUtMjUKKworCitPcmlnaW5hbCB2ZXJzaW9uIGJ5IE9sbGUgU2FuZGJlcmcgd2hvIGRpZCB0aGUgaGVhdnkgbGlmdGluZyBvZiB0aGUgaW5pdGlhbAorcmV2ZXJzZSBlbmdpbmVlcmluZy4gVGhpcyB2ZXJzaW9uIGhhcyBiZWVuIGFsbW9zdCBmdWxseSByZXdyaXR0ZW4gZm9yIGNsYXJpdHkKK2FuZCBleHRlbmRlZCB3aXRoIHdyaXRlIHN1cHBvcnQgYW5kIGluZm8gb24gbW9yZSBkYXRhYmFua3MsIHRoZSB3cml0ZSBzdXBwb3J0CitpcyBvbmNlIGFnYWluIHJldmVyc2UgZW5naW5lZXJlZCBieSBPbGxlIHRoZSBhZGRpdGlvbmFsIGRhdGFiYW5rcyBoYXZlIGJlZW4KK3JldmVyc2UgZW5naW5lZXJlZCBieSBtZS4gSSB3b3VsZCBsaWtlIHRvIGV4cHJlc3MgbXkgdGhhbmtzIHRvIE9sbGUsIHRoaXMKK2RvY3VtZW50IGFuZCB0aGUgTGludXggZHJpdmVyIGNvdWxkIG5vdCBoYXZlIGJlZW4gd3JpdHRlbiB3aXRob3V0IGhpcyBlZmZvcnRzLgorCitOb3RlOiBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mIHNwZWNzIG9ubHkgdGhlIHNlbnNvcnMgcGFydCBvZiB0aGUgdUd1cnUgaXMKK2Rlc2NyaWJlZCBoZXJlIGFuZCBub3QgdGhlIENQVSAvIFJBTSAvIGV0YyB2b2x0YWdlICYgZnJlcXVlbmN5IGNvbnRyb2wuCisKK0hhbnMgZGUgR29lZGUgPGoudy5yLmRlZ29lZGVAaGhzLm5sPiwgMjgtMDEtMjAwNgorCisKK0RldGVjdGlvbgorPT09PT09PT09CisKK0FzIGZhciBhcyBrbm93biB0aGUgdUd1cnUgaXMgYWx3YXlzIHBsYWNlZCBhdCBhbmQgdXNpbmcgdGhlIChJU0EpIEkvTy1wb3J0cworMHhFMCBhbmQgMHhFNCwgc28gd2UgZG9uJ3QgaGF2ZSB0byBzY2FuIGFueSBwb3J0LXJhbmdlLCBqdXN0IGNoZWNrIHdoYXQgdGhlIHR3bworcG9ydHMgYXJlIGhvbGRpbmcgZm9yIGRldGVjdGlvbi4gV2Ugd2lsbCByZWZlciB0byAweEUwIGFzIENNRCAoY29tbWFuZC1wb3J0KQorYW5kIDB4RTQgYXMgREFUQSBiZWNhdXNlIEFiaXQgcmVmZXJzIHRvIHRoZW0gd2l0aCB0aGVzZSBuYW1lcy4KKworSWYgREFUQSBob2xkcyAweDAwIG9yIDB4MDggYW5kIENNRCBob2xkcyAweDAwIG9yIDB4QUMgYW4gdUd1cnUgY291bGQgYmUKK3ByZXNlbnQuIFdlIGhhdmUgdG8gY2hlY2sgZm9yIHR3byBkaWZmZXJlbnQgdmFsdWVzIGF0IGRhdGEtcG9ydCwgYmVjYXVzZQorYWZ0ZXIgYSByZWJvb3QgdUd1cnUgd2lsbCBob2xkIDB4MDAgaGVyZSwgYnV0IGlmIHRoZSBkcml2ZXIgaXMgcmVtb3ZlZCBhbmQKK2xhdGVyIG9uIGF0dGFjaGVkIGFnYWluIGRhdGEtcG9ydCB3aWxsIGhvbGQgMHgwOCwgbW9yZSBhYm91dCB0aGlzIGxhdGVyLgorCitBZnRlciB3aWRlciB0ZXN0aW5nIG9mIHRoZSBMaW51eCBrZXJuZWwgZHJpdmVyIHNvbWUgdmFyaWFudHMgb2YgdGhlIHVHdXJ1IGhhdmUKK3R1cm5lZCB1cCB3aGljaCB3aWxsIGhvbGQgMHgwMCBpbnN0ZWFkIG9mIDB4QUMgYXQgdGhlIENNRCBwb3J0LCB0aHVzIHdlIGFsc28KK2hhdmUgdG8gdGVzdCBDTUQgZm9yIHR3byBkaWZmZXJlbnQgdmFsdWVzLiBPbiB0aGVzZSB1R3VydSdzIERBVEEgd2lsbCBpbml0YWxseQoraG9sZCAweDA5IGFuZCB3aWxsIG9ubHkgaG9sZCAweDA4IGFmdGVyIHJlYWRpbmcgQ01EIGZpcnN0LCBzbyBDTUQgbXVzdCBiZSByZWFkCitmaXJzdCEKKworVG8gYmUgcmVhbGx5IHN1cmUgYW4gdUd1cnUgaXMgcHJlc2VudCBhIHRlc3QgcmVhZCBvZiBvbmUgb3IgbW9yZSByZWdpc3Rlcgorc2V0cyBzaG91bGQgYmUgZG9uZS4KKworCitSZWFkaW5nIC8gV3JpdGluZworPT09PT09PT09PT09PT09PT0KKworQWRkcmVzc2luZworLS0tLS0tLS0tLQorCitUaGUgdUd1cnUgaGFzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBhZGRyZXNzaW5nIGxldmVscy4gVGhlIGZpcnN0IGFkZHJlc3NpbmcKK2xldmVsIHdlIHdpbGwgY2FsbCBiYW5rcy4gQSBiYW5rIGhvbGRzIGRhdGEgZm9yIG9uZSBvciBtb3JlIHNlbnNvcnMuIFRoZSBkYXRhCitpbiBhIGJhbmsgZm9yIGEgc2Vuc29yIGlzIG9uZSBvciBtb3JlIGJ5dGVzIGxhcmdlLgorCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGlzIGZpeGVkIGZvciBhIGdpdmVuIGJhbmssIHlvdSBzaG91bGQgYWx3YXlzIHJlYWQgb3Igd3JpdGUKK3RoYXQgbWFueSBieXRlcywgcmVhZGluZyAvIHdyaXRpbmcgbW9yZSB3aWxsIGZhaWwsIHRoZSByZXN1bHRzIHdoZW4gd3JpdGluZworbGVzcyB0aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgZm9yIGEgZ2l2ZW4gYmFuayBhcmUgdW5kZXRlcm1pbmVkLgorCitTZWUgYmVsb3cgZm9yIGFsbCBrbm93biBiYW5rIGFkZHJlc3NlcywgbnVtYmVycyBvZiBzZW5zb3JzIGluIHRoYXQgYmFuaywKK251bWJlciBvZiBieXRlcyBkYXRhIHBlciBzZW5zb3IgYW5kIGNvbnRlbnRzL21lYW5pbmcgb2YgdGhvc2UgYnl0ZXMuCisKK0FsdGhvdWdoIGJvdGggdGhpcyBkb2N1bWVudCBhbmQgdGhlIGtlcm5lbCBkcml2ZXIgaGF2ZSBrZXB0IHRoZSBzZW5zb3IKK3Rlcm1pbm9saWd5IGZvciB0aGUgYWRkcmVzc2luZyB3aXRoaW4gYSBiYW5rIHRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgaW4KK2JhbmsgMHgyNCBmb3IgZXhhbXBsZSB0aGUgYWRkcmVzc2luZyB3aXRoaW4gdGhlIGJhbmsgc2VsZWN0cyBhIFBXTSBvdXRwdXQgbm90CithIHNlbnNvci4KKworTm90aWNlIHRoYXQgc29tZSBiYW5rcyBoYXZlIGJvdGggYSByZWFkIGFuZCBhIHdyaXRlIGFkZHJlc3MgdGhpcyBpcyBob3cgdGhlCit1R3VydSBkZXRlcm1pbmVzIGlmIGEgcmVhZCBmcm9tIG9yIGEgd3JpdGUgdG8gdGhlIGJhbmsgaXMgdGFraW5nIHBsYWNlLCB0aHVzCit3aGVuIHJlYWRpbmcgeW91IHNob3VsZCBhbHdheXMgdXNlIHRoZSByZWFkIGFkZHJlc3MgYW5kIHdoZW4gd3JpdGluZyB0aGUKK3dyaXRlIGFkZHJlc3MuIFRoZSB3cml0ZSBhZGRyZXNzIGlzIGFsd2F5cyBvbmUgKDEpIG1vcmUgdGhlbiB0aGUgcmVhZCBhZGRyZXNzLgorCisKK3VHdXJ1IHJlYWR5CistLS0tLS0tLS0tLQorCitCZWZvcmUgeW91IGNhbiByZWFkIGZyb20gb3Igd3JpdGUgdG8gdGhlIHVHdXJ1IHlvdSBtdXN0IGZpcnN0IHB1dCB0aGUgdUd1cnUKK2luICJyZWFkeSIgbW9kZS4KKworVG8gcHV0IHRoZSB1R3VydSBpbiByZWFkeSBtb2RlIGZpcnN0IHdyaXRlIDB4MDAgdG8gREFUQSBhbmQgdGhlbiB3YWl0IGZvciBEQVRBCit0byBob2xkIDB4MDksIERBVEEgc2hvdWxkIHJlYWQgMHgwOSB3aXRoaW4gMjUwIHJlYWQgY3ljbGVzLgorCitOZXh0IENNRCBfbXVzdF8gYmUgcmVhZCBhbmQgc2hvdWxkIGhvbGQgMHhBQywgdXN1YWxseSBDTUQgd2lsbCBob2xkIDB4QUMgdGhlCitmaXJzdCByZWFkIGJ1dCBzb21ldGltZXMgaXQgdGFrZXMgYSB3aGlsZSBiZWZvcmUgQ01EIGhvbGRzIDB4QUMgYW5kIHRodXMgaXQKK2hhcyB0byBiZSByZWFkIGEgbnVtYmVyIG9mIHRpbWVzIChtYXggNTApLgorCitBZnRlciByZWFkaW5nIENNRCwgREFUQSBzaG91bGQgaG9sZCAweDA4IHdoaWNoIG1lYW5zIHRoYXQgdGhlIHVHdXJ1IGlzIHJlYWR5Citmb3IgaW5wdXQuIEFzIGFib3ZlIERBVEEgd2lsbCB1c3VhbGx5IGhvbGQgMHgwOCB0aGUgZmlyc3QgcmVhZCBidXQgbm90IGFsd2F5cy4KK1RoaXMgc3RlcCBjYW4gYmUgc2tpcHBlZCwgYnV0IGl0IGlzIHVuZGV0ZXJtaW5lZCB3aGF0IGhhcHBlbnMgaWYgdGhlIHVHdXJ1IGhhcworbm90IHlldCByZXBvcnRlZCAweDA4IGF0IERBVEEgYW5kIHlvdSBwcm9jZWVkIHdpdGggd3JpdGluZyBhIGJhbmsgYWRkcmVzcy4KKworCitTZW5kaW5nIGJhbmsgYW5kIHNlbnNvciBhZGRyZXNzZXMgdG8gdGhlIHVHdXJ1CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IHRoZSB1R3VydSBtdXN0IGJlIGluICJyZWFkeSIgbW9kZSBhcyBkZXNjcmliZWQgYWJvdmUsIERBVEEgc2hvdWxkIGhvbGQKKzB4MDggaW5kaWNhdGluZyB0aGF0IHRoZSB1R3VydSB3YW50cyBpbnB1dCwgaW4gdGhpcyBjYXNlIHRoZSBiYW5rIGFkZHJlc3MuCisKK05leHQgd3JpdGUgdGhlIGJhbmsgYWRkcmVzcyB0byBEQVRBLiBBZnRlciB0aGUgYmFuayBhZGRyZXNzIGhhcyBiZWVuIHdyaXR0ZW4KK3dhaXQgZm9yIHRvIERBVEEgdG8gaG9sZCAweDA4IGFnYWluIGluZGljYXRpbmcgdGhhdCBpdCB3YW50cyAvIGlzIHJlYWR5IGZvcgorbW9yZSBpbnB1dCAobWF4IDI1MCByZWFkcykuCisKK09uY2UgREFUQSBob2xkcyAweDA4IGFnYWluIHdyaXRlIHRoZSBzZW5zb3IgYWRkcmVzcyB0byBDTUQuCisKKworUmVhZGluZworLS0tLS0tLQorCitGaXJzdCBzZW5kIHRoZSBiYW5rIGFuZCBzZW5zb3IgYWRkcmVzc2VzIGFzIGRlc2NyaWJlZCBhYm92ZS4KK1RoZW4gZm9yIGVhY2ggYnl0ZSBvZiBkYXRhIHlvdSB3YW50IHRvIHJlYWQgd2FpdCBmb3IgREFUQSB0byBob2xkIDB4MDEKK3doaWNoIGluZGljYXRlcyB0aGF0IHRoZSB1R3VydSBpcyByZWFkeSB0byBiZSByZWFkIChtYXggMjUwIHJlYWRzKSBhbmQgb25jZQorREFUQSBob2xkcyAweDAxIHJlYWQgdGhlIGJ5dGUgZnJvbSBDTUQuCisKK09uY2UgYWxsIGJ5dGVzIGhhdmUgYmVlbiByZWFkIGRhdGEgd2lsbCBob2xkIDB4MDksIGJ1dCB0aGVyZSBpcyBubyByZWFzb24gdG8KK3Rlc3QgZm9yIHRoaXMuIE5vdGljZSB0aGF0IHRoZSBudW1iZXIgb2YgYnl0ZXMgaXMgYmFuayBhZGRyZXNzIGRlcGVuZGVudCBzZWUKK2Fib3ZlIGFuZCBiZWxvdy4KKworQWZ0ZXIgY29tcGxldGluZyBhIHN1Y2Nlc3NmdWxsIHJlYWQgaXQgaXMgYWR2aXNlZCB0byBwdXQgdGhlIHVHdXJ1IGJhY2sgaW4KK3JlYWR5IG1vZGUsIHNvIHRoYXQgaXQgaXMgcmVhZHkgZm9yIHRoZSBuZXh0IHJlYWQgLyB3cml0ZSBjeWNsZS4gVGhpcyB3YXkKK2lmIHlvdXIgcHJvZ3JhbSAvIGRyaXZlciBpcyB1bmxvYWRlZCBhbmQgbGF0ZXIgbG9hZGVkIGFnYWluIHRoZSBkZXRlY3Rpb24KK2FsZ29yaXRobSBkZXNjcmliZWQgYWJvdmUgd2lsbCBzdGlsbCB3b3JrLgorCisKKworV3JpdGluZworLS0tLS0tLQorCitGaXJzdCBzZW5kIHRoZSBiYW5rIGFuZCBzZW5zb3IgYWRkcmVzc2VzIGFzIGRlc2NyaWJlZCBhYm92ZS4KK1RoZW4gZm9yIGVhY2ggYnl0ZSBvZiBkYXRhIHlvdSB3YW50IHRvIHdyaXRlIHdhaXQgZm9yIERBVEEgdG8gaG9sZCAweDAwCit3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgdUd1cnUgaXMgcmVhZHkgdG8gYmUgd3JpdHRlbiAobWF4IDI1MCByZWFkcykgYW5kCitvbmNlIERBVEEgaG9sZHMgMHgwMCB3cml0ZSB0aGUgYnl0ZSB0byBDTUQuCisKK09uY2UgYWxsIGJ5dGVzIGhhdmUgYmVlbiB3cml0dGVuIHdhaXQgZm9yIERBVEEgdG8gaG9sZCAweDAxIChtYXggMjUwIHJlYWRzKQorZG9uJ3QgYXNrIHdoeSB0aGlzIGlzIHRoZSB3YXkgaXQgaXMuCisKK09uY2UgREFUQSBob2xkcyAweDAxIHJlYWQgQ01EIGl0IHNob3VsZCBob2xkIDB4QUMgbm93LgorCitBZnRlciBjb21wbGV0aW5nIGEgc3VjY2Vzc2Z1bGwgd3JpdGUgaXQgaXMgYWR2aXNlZCB0byBwdXQgdGhlIHVHdXJ1IGJhY2sgaW4KK3JlYWR5IG1vZGUsIHNvIHRoYXQgaXQgaXMgcmVhZHkgZm9yIHRoZSBuZXh0IHJlYWQgLyB3cml0ZSBjeWNsZS4gVGhpcyB3YXkKK2lmIHlvdXIgcHJvZ3JhbSAvIGRyaXZlciBpcyB1bmxvYWRlZCBhbmQgbGF0ZXIgbG9hZGVkIGFnYWluIHRoZSBkZXRlY3Rpb24KK2FsZ29yaXRobSBkZXNjcmliZWQgYWJvdmUgd2lsbCBzdGlsbCB3b3JrLgorCisKK0dvdGNoYXMKKy0tLS0tLS0KKworQWZ0ZXIgd2lkZXIgdGVzdGluZyBvZiB0aGUgTGludXgga2VybmVsIGRyaXZlciBzb21lIHZhcmlhbnRzIG9mIHRoZSB1R3VydSBoYXZlCit0dXJuZWQgdXAgd2hpY2ggZG8gbm90IGhvbGQgMHgwOCBhdCBEQVRBIHdpdGhpbiAyNTAgcmVhZHMgYWZ0ZXIgd3JpdGluZyB0aGUKK2JhbmsgYWRkcmVzcy4gV2l0aCB0aGVzZSB2ZXJzaW9ucyB0aGlzIGhhcHBlbnMgcXVpdGUgZnJlcXVlbnQsIHVzaW5nIGxhcmdlcgordGltZW91dHMgZG9lc24ndCBoZWxwLCB0aGV5IGp1c3QgZ28gb2ZmbGluZSBmb3IgYSBzZWNvbmQgb3IgMiwgZG9pbmcgc29tZQoraW50ZXJuYWwgY2FsbGlicmF0aW9uIG9yIHdoYXRldmVyLiBZb3VyIGNvZGUgc2hvdWxkIGJlIHByZXBhcmVkIHRvIGhhbmRsZQordGhpcyBhbmQgaW4gY2FzZSBvZiBubyByZXNwb25zZSBpbiB0aGlzIHNwZWNpZmljIGNhc2UganVzdCBnb3RvIHNsZWVwIGZvciBhCit3aGlsZSBhbmQgdGhlbiByZXRyeS4KKworCitBZGRyZXNzIE1hcAorPT09PT09PT09PT0KKworQmFuayAweDIwIEFsYXJtcyAoUikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGJhbmsgY29udGFpbnMgMCBzZW5zb3JzLCBpb3cgdGhlIHNlbnNvciBhZGRyZXNzIGlzIGlnbm9yZWQgKGJ1dCBtdXN0IGJlCit3cml0dGVuKSBqdXN0IHVzZSAwLiBCYW5rIDB4MjAgY29udGFpbnMgMyBieXRlczoKKworQnl0ZSAwOgorVGhpcyBieXRlIGhvbGRzIHRoZSBhbGFybSBmbGFncyBmb3Igc2Vuc29yIDAtNyBvZiBTZW5zb3IgQmFuazEsIHdpdGggYml0IDAKK2NvcnJlc3BvbmRpbmcgdG8gc2Vuc29yIDAsIDEgdG8gMSwgZXRjLgorCitCeXRlIDE6CitUaGlzIGJ5dGUgaG9sZHMgdGhlIGFsYXJtIGZsYWdzIGZvciBzZW5zb3IgOC0xNSBvZiBTZW5zb3IgQmFuazEsIHdpdGggYml0IDAKK2NvcnJlc3BvbmRpbmcgdG8gc2Vuc29yIDgsIDEgdG8gOSwgZXRjLgorCitCeXRlIDI6CitUaGlzIGJ5dGUgaG9sZHMgdGhlIGFsYXJtIGZsYWdzIGZvciBzZW5zb3IgMC01IG9mIFNlbnNvciBCYW5rMiwgd2l0aCBiaXQgMAorY29ycmVzcG9uZGluZyB0byBzZW5zb3IgMCwgMSB0byAxLCBldGMuCisKKworQmFuayAweDIxIFNlbnNvciBCYW5rMSBWYWx1ZXMgLyBSZWFkaW5ncyAoUikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGJhbmsgY29udGFpbnMgMTYgc2Vuc29ycywgZm9yIGVhY2ggc2Vuc29yIGl0IGNvbnRhaW5zIDEgYnl0ZS4KK1NvIGZhciB0aGUgZm9sbG93aW5nIHNlbnNvcnMgYXJlIGtub3duIHRvIGJlIGF2YWlsYWJsZSBvbiBhbGwgbW90aGVyYm9hcmRzOgorU2Vuc29yICAwIENQVSB0ZW1wCitTZW5zb3IgIDEgU1lTIHRlbXAKK1NlbnNvciAgMyBDUFUgY29yZSB2b2x0CitTZW5zb3IgIDQgRERSIHZvbHQKK1NlbnNvciAxMCBERFIgVnR0IHZvbHQKK1NlbnNvciAxNSBQV00gdGVtcAorCitCeXRlIDA6CitUaGlzIGJ5dGUgaG9sZHMgdGhlIHJlYWRpbmcgZnJvbSB0aGUgc2Vuc29yLiBTZW5zb3JzIGluIEJhbmsxIGNhbiBiZSBib3RoCit2b2x0IGFuZCB0ZW1wIHNlbnNvcnMsIHRoaXMgaXMgbW90aGVyYm9hcmQgc3BlY2lmaWMuIFRoZSB1R3VydSBob3dldmVyIGRvZXMKK3NlZW0gdG8ga25vdyAoYmUgcHJvZ3JhbW1lZCB3aXRoKSB3aGF0IGtpbmRvZmYgc2Vuc29yIGlzIGF0dGFjaGVkIHNlZSBTZW5zb3IKK0JhbmsxIFNldHRpbmdzIGRlc2NyaXB0aW9uLgorCitWb2x0IHNlbnNvcnMgdXNlIGEgbGluZWFyIHNjYWxlLCBhIHJlYWRpbmcgMCBjb3JyZXNwb25kcyB3aXRoIDAgdm9sdCBhbmQgYQorcmVhZGluZyBvZiAyNTUgd2l0aCAzNDk0IG1WLiBUaGUgc2Vuc29ycyBmb3IgaGlnaGVyIHZvbHRhZ2VzIGhvd2V2ZXIgYXJlCitjb25uZWN0ZWQgdGhyb3VnaCBhIGRpdmlzaW9uIGNpcmN1aXQuIFRoZSBjdXJyZW50bHkga25vd24gZGl2aXNpb24gY2lyY3VpdHMKK2luIHVzZSByZXN1bHQgaW4gcmFuZ2VzIG9mOiAwLTQzNjFtViwgMC02MjQ4bVYgb3IgMC0xNDUxMG1WLiAzLjMgdm9sdCBzb3VyY2VzCit1c2UgdGhlIDAtNDM2MW1WIHJhbmdlLCA1IHZvbHQgdGhlIDAtNjI0OG1WIGFuZCAxMiB2b2x0IHRoZSAwLTE0NTEwbVYgLgorCitUZW1wIHNlbnNvcnMgYWxzbyB1c2UgYSBsaW5lYXIgc2NhbGUsIGEgcmVhZGluZyBvZiAwIGNvcnJlc3BvbmRzIHdpdGggMCBkZWdyZWUKK0NlbHNpdXMgYW5kIGEgcmVhZGluZyBvZiAyNTUgd2l0aCBhIHJlYWRpbmcgb2YgMjU1IGRlZ3JlZXMgQ2Vsc2l1cy4KKworCitCYW5rIDB4MjIgU2Vuc29yIEJhbmsxIFNldHRpbmdzIChSKQorQmFuayAweDIzIFNlbnNvciBCYW5rMSBTZXR0aW5ncyAoVykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgYmFuayBjb250YWlucyAxNiBzZW5zb3JzLCBmb3IgZWFjaCBzZW5zb3IgaXQgY29udGFpbnMgMyBieXRlcy4gRWFjaAorc2V0IG9mIDMgYnl0ZXMgY29udGFpbnMgdGhlIHNldHRpbmdzIGZvciB0aGUgc2Vuc29yIHdpdGggdGhlIHNhbWUgc2Vuc29yCithZGRyZXNzIGluIEJhbmsgMHgyMSAuCisKK0J5dGUgMDoKK0FsYXJtIGJlaGF2aW91ciBmb3IgdGhlIHNlbGVjdGVkIHNlbnNvci4gQSAxIGVuYWJsZXMgdGhlIGRlc2NyaWJlZCBiZWhhdmlvdXIuCitCaXQgMDogR2l2ZSBhbiBhbGFybSBpZiBtZWFzdXJlZCB0ZW1wIGlzIG92ZXIgdGhlIHdhcm5pbmcgdGhyZXNob2xkCShSVykgKgorQml0IDE6IEdpdmUgYW4gYWxhcm0gaWYgbWVhc3VyZWQgdm9sdCBpcyBvdmVyIHRoZSBtYXggdGhyZXNob2xkCQkoUlcpICoqCitCaXQgMjogR2l2ZSBhbiBhbGFybSBpZiBtZWFzdXJlZCB2b2x0IGlzIHVuZGVyIHRoZSBtaW4gdGhyZXNob2xkCShSVykgKioKK0JpdCAzOiBCZWVwIGlmIGFsYXJtCQkJCQkJCShSVykKK0JpdCA0OiAxIGlmIGFsYXJtIGNhdXNlIG1lYXN1cmVkIHRlbXAgaXMgb3ZlciB0aGUgd2FybmluZyB0aHJlc2hvbGQJKFIpCitCaXQgNTogMSBpZiBhbGFybSBjYXVzZSBtZWFzdXJlZCB2b2x0IGlzIG92ZXIgdGhlIG1heCB0aHJlc2hvbGQJCShSKQorQml0IDY6IDEgaWYgYWxhcm0gY2F1c2UgbWVhc3VyZWQgdm9sdCBpcyB1bmRlciB0aGUgbWluIHRocmVzaG9sZAkoUikKK0JpdCA3OiBWb2x0IHNlbnNvcjogU2h1dGRvd24gaWYgYWxhcm0gcGVyc2lzdCBmb3IgbW9yZSB0aGVuIDQgc2Vjb25kcwkoUlcpCisgICAgICAgVGVtcCBzZW5zb3I6IFNodXRkb3duIGlmIHRlbXAgaXMgb3ZlciB0aGUgc2h1dGRvd24gdGhyZXNob2xkCShSVykKKworKiAgVGhpcyBiaXQgaXMgb25seSBob25vcmVkL3VzZWQgYnkgdGhlIHVHdXJ1IGlmIGEgdGVtcCBzZW5zb3IgaXMgY29ubmVjdGVkCisqKiBUaGlzIGJpdCBpcyBvbmx5IGhvbm9yZWQvdXNlZCBieSB0aGUgdUd1cnUgaWYgYSB2b2x0IHNlbnNvciBpcyBjb25uZWN0ZWQKK05vdGUgd2l0aCBzb21lIHRyaWNrZXJ5IHRoaXMgY2FuIGJlIHVzZWQgdG8gZmluZCBvdXQgd2hhdCBraW5kYSBzZW5zb3IgaXMKK2RldGVjdGVkIHNlZSB0aGUgTGludXgga2VybmVsIGRyaXZlciBmb3IgYW4gZXhhbXBsZSB3aXRoIG1hbnkgY29tbWVudHMgb24KK2hvdyB0b2RvIHRoaXMuCisKK0J5dGUgMToKK1RlbXAgc2Vuc29yOiB3YXJuaW5nIHRocmVzaG9sZCAgKHNjYWxlIGFzIGJhbmsgMHgyMSkKK1ZvbHQgc2Vuc29yOiBtaW4gdGhyZXNob2xkICAgICAgKHNjYWxlIGFzIGJhbmsgMHgyMSkKKworQnl0ZSAyOgorVGVtcCBzZW5zb3I6IHNodXRkb3duIHRocmVzaG9sZCAoc2NhbGUgYXMgYmFuayAweDIxKQorVm9sdCBzZW5zb3I6IG1heCB0aHJlc2hvbGQgICAgICAoc2NhbGUgYXMgYmFuayAweDIxKQorCisKK0JhbmsgMHgyNCBQV00gb3V0cHV0cyBmb3IgRkFOJ3MgKFIpCitCYW5rIDB4MjUgUFdNIG91dHB1dHMgZm9yIEZBTidzIChXKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBiYW5rIGNvbnRhaW5zIDMgInNlbnNvcnMiLCBmb3IgZWFjaCBzZW5zb3IgaXQgY29udGFpbnMgNSBieXRlcy4KK1NlbnNvciAwIHVzdWFsbHkgY29udHJvbHMgdGhlIENQVSBmYW4KK1NlbnNvciAxIHVzdWFsbHkgY29udHJvbHMgdGhlIE5CIChvciBjaGlwc2V0IGZvciBzaW5nbGUgY2hpcCkgZmFuCitTZW5zb3IgMiB1c3VhbGx5IGNvbnRyb2xzIHRoZSBTeXN0ZW0gZmFuCisKK0J5dGUgMDoKK0ZsYWcgMHg4MCB0byBlbmFibGUgY29udHJvbCwgRmFuIHJ1bnMgYXQgMTAwJSB3aGVuIGRpc2FibGVkLgorbG93IG5pYmJsZSAodGVtcClzZW5zb3IgYWRkcmVzcyBhdCBiYW5rIDB4MjEgdXNlZCBmb3IgY29udHJvbC4KKworQnl0ZSAxOgorMC0yNTUgPSAwLTEydiAobGluZWFyKSwgc3BlY2lmeSB2b2x0YWdlIGF0IHdoaWNoIGZhbiB3aWxsIHJvdGF0ZSB3aGVuIHVuZGVyCitsb3cgdGhyZXNob2xkIHRlbXAgKHNwZWNpZmllZCBpbiBieXRlIDMpCisKK0J5dGUgMjoKKzAtMjU1ID0gMC0xMnYgKGxpbmVhciksIHNwZWNpZnkgdm9sdGFnZSBhdCB3aGljaCBmYW4gd2lsbCByb3RhdGUgd2hlbiBhYm92ZQoraGlnaCB0aHJlc2hvbGQgdGVtcCAoc3BlY2lmaWVkIGluIGJ5dGUgNCkKKworQnl0ZSAzOgorTG93IHRocmVzaG9sZCB0ZW1wICAoc2NhbGUgYXMgYmFuayAweDIxKQorCitieXRlIDQ6CitIaWdoIHRocmVzaG9sZCB0ZW1wIChzY2FsZSBhcyBiYW5rIDB4MjEpCisKKworQmFuayAweDI2IFNlbnNvcnMgQmFuazIgVmFsdWVzIC8gUmVhZGluZ3MgKFIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBiYW5rIGNvbnRhaW5zIDYgc2Vuc29ycyAoQUZBSUspLCBmb3IgZWFjaCBzZW5zb3IgaXQgY29udGFpbnMgMSBieXRlLgorU28gZmFyIHRoZSBmb2xsb3dpbmcgc2Vuc29ycyBhcmUga25vd24gdG8gYmUgYXZhaWxhYmxlIG9uIGFsbCBtb3RoZXJib2FyZHM6CitTZW5zb3IgMDogQ1BVIGZhbiBzcGVlZAorU2Vuc29yIDE6IE5CIChvciBjaGlwc2V0IGZvciBzaW5nbGUgY2hpcCkgZmFuIHNwZWVkCitTZW5zb3IgMjogU1lTIGZhbiBzcGVlZAorCitCeXRlIDA6CitUaGlzIGJ5dGUgaG9sZHMgdGhlIHJlYWRpbmcgZnJvbSB0aGUgc2Vuc29yLiAwLTI1NSA9IDAtMTUzMDAgKGxpbmVhcikKKworCitCYW5rIDB4MjcgU2Vuc29ycyBCYW5rMiBTZXR0aW5ncyAoUikKK0JhbmsgMHgyOCBTZW5zb3JzIEJhbmsyIFNldHRpbmdzIChXKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgYmFuayBjb250YWlucyA2IHNlbnNvcnMgKEFGQUlLKSwgZm9yIGVhY2ggc2Vuc29yIGl0IGNvbnRhaW5zIDIgYnl0ZXMuCisKK0J5dGUgMDoKK0FsYXJtIGJlaGF2aW91ciBmb3IgdGhlIHNlbGVjdGVkIHNlbnNvci4gQSAxIGVuYWJsZXMgdGhlIGRlc2NyaWJlZCBiZWhhdmlvdXIuCitCaXQgMDogR2l2ZSBhbiBhbGFybSBpZiBtZWFzdXJlZCBycG0gaXMgdW5kZXIgdGhlIG1pbiB0aHJlc2hvbGQJKFJXKQorQml0IDM6IEJlZXAgaWYgYWxhcm0JCQkJCQkoUlcpCitCaXQgNzogU2h1dGRvd24gaWYgYWxhcm0gcGVyc2lzdCBmb3IgbW9yZSB0aGVuIDQgc2Vjb25kcwkoUlcpCisKK0J5dGUgMToKK21pbiB0aHJlc2hvbGQgKHNjYWxlIGFzIGJhbmsgMHgyNikKKworCitXYXJuaW5nIGZvciB0aGUgYWR2ZW50ZXJvdXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIHdvcmQgb2YgY2F1dGlvbiB0byB0aG9zZSB3aG8gd2FudCB0byBleHBlcmltZW50IGFuZCBzZWUgaWYgdGhleSBjYW4gZmlndXJlCit0aGUgdm9sdGFnZSAvIGNsb2NrIHByb2dyYW1taW5nIG91dCwgSSB0cmllZCByZWFkaW5nIGFuZCBvbmx5IHJlYWRpbmcgYmFua3MKKzAtMHgzMCB3aXRoIHRoZSByZWFkaW5nIGNvZGUgdXNlZCBmb3IgdGhlIHNlbnNvciBiYW5rcyAoMHgyMC0weDI4KSBhbmQgdGhpcworcmVzdWx0ZWQgaW4gYSBfcGVybWFuZW50XyByZXByb2dyYW1taW5nIG9mIHRoZSB2b2x0YWdlcywgbHVja2lseSBJIGhhZCB0aGUKK3NlbnNvcnMgcGFydCBjb25maWd1cmVkIHNvIHRoYXQgaXQgd291bGQgc2h1dGRvd24gbXkgc3lzdGVtIG9uIGFueSBvdXQgb2Ygc3BlYwordm9sdGFnZXMgd2hpY2ggcHJvcHJhYmx5IHNhZmVkIG15IGNvbXB1dGVyIChhZnRlciBhIHJlYm9vdCBJIG1hbmFnZWQgdG8KK2ltbWVkaWF0bHkgZW50ZXIgdGhlIGJpb3MgYW5kIHJlbG9hZCB0aGUgZGVmYXVsdHMpLiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQKK3RoZSByZWFkL3dyaXRlIGN5Y2xlIGZvciB0aGUgbm9uIHNlbnNvciBwYXJ0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBzZW5zb3IgcGFydC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG03MCBiL0RvY3VtZW50YXRpb24vaHdtb24vbG03MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmRkM2ZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTcwCkBAIC0wLDAgKzEsMzEgQEAKK0tlcm5lbCBkcml2ZXIgbG03MAorPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MAorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE03MC5odG1sCisKK0F1dGhvcjoKKyAgICAgICAgS2Fpd2FuIE4gQmlsbGltb3JpYSA8a2Fpd2FuQGRlc2lnbmVyZ3JhcGhpeC5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzAKK3RlbXBlcmF0dXJlIHNlbnNvci4KKworVGhlIExNNzAgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXAgc3VwcG9ydHMgYSBzaW5nbGUgdGVtcGVyYXR1cmUgc2Vuc29yLgorSXQgY29tbXVuaWNhdGVzIHdpdGggYSBob3N0IHByb2Nlc3NvciAob3IgbWljcm9jb250cm9sbGVyKSB2aWEgYW4KK1NQSS9NaWNyb3dpcmUgQnVzIGludGVyZmFjZS4KKworQ29tbXVuaWNhdGlvbiB3aXRoIHRoZSBMTTcwIGlzIHNpbXBsZTogd2hlbiB0aGUgdGVtcGVyYXR1cmUgaXMgdG8gYmUgc2Vuc2VkLAordGhlIGRyaXZlciBhY2Nlc3NlcyB0aGUgTE03MCB1c2luZyBTUEkgY29tbXVuaWNhdGlvbjogMTYgU0NMSyBjeWNsZXMKK2NvbXByaXNlIHRoZSBNT1NJL01JU08gbG9vcC4gQXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNmZXIsIHRoZSAxMS1iaXQgMidzCitjb21wbGVtZW50IGRpZ2l0YWwgdGVtcGVyYXR1cmUgKHNlbnQgdmlhIHRoZSBTSU8gbGluZSksIGlzIGF2YWlsYWJsZSBpbiB0aGUKK2RyaXZlciBmb3IgaW50ZXJwcmV0YXRpb24uIFRoaXMgZHJpdmVyIG1ha2VzIHVzZSBvZiB0aGUga2VybmVsJ3MgaW4tY29yZQorU1BJIHN1cHBvcnQuCisKK1RoYW5rcyB0bworLS0tLS0tLS0tCitKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4gZm9yIG1lbnRvcmluZyB0aGUgaHdtb24tc2lkZSBkcml2ZXIKK2RldmVsb3BtZW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTgzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTgzCmluZGV4IDA2MWQ5ZWQuLmY3YWFkMTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vbG04MworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtODMKQEAgLTcsNiArNywxMCBAQAogICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQogICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODMuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE04MgorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODIuaHRtbAogCiAKIEF1dGhvcjogSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+CkBAIC0xNSwxMCArMTksMTEgQEAKIC0tLS0tLS0tLS0tCiAKIFRoZSBMTTgzIGlzIGEgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3IuIEl0IHNlbnNlcyBpdHMgb3duIHRlbXBlcmF0dXJlIGFzCi13ZWxsIGFzIHRoZSB0ZW1wZXJhdHVyZSBvZiB1cCB0byB0aHJlZSBleHRlcm5hbCBkaW9kZXMuIEl0IGlzIGNvbXBhdGlibGUKLXdpdGggbWFueSBvdGhlciBkZXZpY2VzIHN1Y2ggYXMgdGhlIExNODQgYW5kIGFsbCBvdGhlciBBRE0xMDIxIGNsb25lcy4KLVRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTE04MyBhbmQgdGhlIExNODQgaW4gdGhhdCB0aGUgbGF0ZXIgY2FuCi1vbmx5IHNlbnNlIHRoZSB0ZW1wZXJhdHVyZSBvZiBvbmUgZXh0ZXJuYWwgZGlvZGUuCit3ZWxsIGFzIHRoZSB0ZW1wZXJhdHVyZSBvZiB1cCB0byB0aHJlZSBleHRlcm5hbCBkaW9kZXMuIFRoZSBMTTgyIGlzCithIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBvZiB0aGUgTE04MyB0aGF0IG9ubHkgc3VwcG9ydHMgb25lIGV4dGVybmFsIGRpb2RlLgorQm90aCBhcmUgY29tcGF0aWJsZSB3aXRoIG1hbnkgb3RoZXIgZGV2aWNlcyBzdWNoIGFzIHRoZSBMTTg0IGFuZCBhbGwKK290aGVyIEFETTEwMjEgY2xvbmVzLiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIExNODMgYW5kIHRoZSBMTTg0CitpbiB0aGF0IHRoZSBsYXRlciBjYW4gb25seSBzZW5zZSB0aGUgdGVtcGVyYXR1cmUgb2Ygb25lIGV4dGVybmFsIGRpb2RlLgogCiBVc2luZyB0aGUgYWRtMTAyMSBkcml2ZXIgZm9yIGEgTE04MyBzaG91bGQgd29yaywgYnV0IG9ubHkgdHdvIHRlbXBlcmF0dXJlcwogd2lsbCBiZSByZXBvcnRlZCBpbnN0ZWFkIG9mIGZvdXIuCkBAIC0zMCwxMiArMzUsMTYgQEAKIAogQ29uZmlybWVkIG1vdGhlcmJvYXJkczoKICAgICBTQlMgICAgICAgICBQMDE0CisgICAgU0JTICAgICAgICAgUFNMMDkKIAogVW5jb25maXJtZWQgbW90aGVyYm9hcmRzOgogICAgIEdpZ2FieXRlICAgIEdBLThJSzExMDAKICAgICBJd2lsbCAgICAgICBNUFgyCiAgICAgU29sdGVrICAgICAgU0wtNzVEUlY1CiAKK1RoZSBMTTgyIGlzIGNvbmZpcm1lZCB0byBoYXZlIGJlZW4gZm91bmQgb24gbW9zdCBBTUQgR2VvZGUgcmVmZXJlbmNlCitkZXNpZ25zIGFuZCB0ZXN0IHBsYXRmb3Jtcy4KKwogVGhlIGRyaXZlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdGVzdGVkIGJ5IE1hZ251cyBGb3Jzc3Ry9m0sIHdobyBJJ2QKIGxpa2UgdG8gdGhhbmsgaGVyZS4gTW9yZSB0ZXN0ZXJzIHdpbGwgYmUgb2YgY291cnNlIHdlbGNvbWUuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc21zYzQ3bTE5MiBiL0RvY3VtZW50YXRpb24vaHdtb24vc21zYzQ3bTE5MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWQ2NDUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zbXNjNDdtMTkyCkBAIC0wLDAgKzEsMTAyIEBACitLZXJuZWwgZHJpdmVyIHNtc2M0N20xOTIKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogU01TQyBMUEM0N00xOTIgYW5kIExQQzQ3TTk5NworICAgIFByZWZpeDogJ3Ntc2M0N20xOTInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZAorICAgIERhdGFzaGVldDogVGhlIGRhdGFzaGVldCBmb3IgTFBDNDdNMTkyIGlzIHB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnNtc2MuY29tLworICAgICAgICAgICAgICAgVGhlIExQQzQ3TTk5NyBpcyBjb21wYXRpYmxlIGZvciBoYXJkd2FyZSBtb25pdG9yaW5nLgorCitBdXRob3I6IEhhcnRtdXQgUmljayA8bGludXhAcmljay5jbGFyYW5ldC5kZT4KKyAgICAgICAgU3BlY2lhbCB0aGFua3MgdG8gSmVhbiBEZWx2YXJlIGZvciBjYXJlZnVsIGNoZWNraW5nCisgICAgICAgIG9mIHRoZSBjb2RlIGFuZCBtYW55IGhlbHBmdWwgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zLgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBoYXJkd2FyZSBzZW5zb3IgY2FwYWJpbGl0aWVzCitvZiB0aGUgU01TQyBMUEM0N00xOTIgYW5kIExQQzQ3TTk5NyBTdXBlci1JL08gY2hpcHMuCisKK1RoZXNlIGNoaXBzIHN1cHBvcnQgMyB0ZW1wZXJhdHVyZSBjaGFubmVscyBhbmQgOCB2b2x0YWdlIGlucHV0cworYXMgd2VsbCBhcyBDUFUgdm9sdGFnZSBWSUQgaW5wdXQuCisKK1RoZXkgZG8gYWxzbyBoYXZlIGZhbiBtb25pdG9yaW5nIGFuZCBjb250cm9sIGNhcGFiaWxpdGllcywgYnV0IHRoZQordGhlc2UgZmVhdHVyZXMgYXJlIGFjY2Vzc2VkIHZpYSBJU0EgYnVzIGFuZCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzCitkcml2ZXIuIFVzZSB0aGUgJ3Ntc2M0N20xJyBkcml2ZXIgZm9yIGZhbiBtb25pdG9yaW5nIGFuZCBjb250cm9sLgorCitWb2x0YWdlcyBhbmQgdGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBieSBhbiA4LWJpdCBBREMsIHRoZSByZXNvbHV0aW9uCitvZiB0aGUgdGVtcGVyYXR1cmVzIGlzIDEgYml0IHBlciBkZWdyZWUgQy4KK1ZvbHRhZ2VzIGFyZSBzY2FsZWQgc3VjaCB0aGF0IHRoZSBub21pbmFsIHZvbHRhZ2UgY29ycmVzcG9uZHMgdG8KKzE5MiBjb3VudHMsIGkuZS4gMy80IG9mIHRoZSBmdWxsIHJhbmdlLiBUaHVzIHRoZSBhdmFpbGFibGUgcmFuZ2UgZm9yCitlYWNoIHZvbHRhZ2UgY2hhbm5lbCBpcyAwViAuLi4gMjU1LzE5Mioobm9taW5hbCB2b2x0YWdlKSwgdGhlIHJlc29sdXRpb24KK2lzIDEgYml0IHBlciAobm9taW5hbCB2b2x0YWdlKS8xOTIuCitCb3RoIHZvbHRhZ2UgYW5kIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgc2NhbGVkIGJ5IDEwMDAsIHRoZSBzeXMgZmlsZXMKK3Nob3cgdm9sdGFnZXMgaW4gbVYgYW5kIHRlbXBlcmF0dXJlcyBpbiB1bml0cyBvZiAwLjAwMSBkZWdDLgorCitUaGUgKzEyViBhbmFsb2cgdm9sdGFnZSBpbnB1dCBjaGFubmVsIChpbjRfaW5wdXQpIGlzIG11bHRpcGxleGVkIHdpdGgKK2JpdCA0IG9mIHRoZSBlbmNvZGVkIENQVSB2b2x0YWdlLiBUaGlzIG1lYW5zIHRoYXQgeW91IGVpdGhlciBnZXQKK2EgKzEyViB2b2x0YWdlIG1lYXN1cmVtZW50IG9yIGEgNSBiaXQgQ1BVIFZJRCwgYnV0IG5vdCBib3RoLgorVGhlIGRlZmF1bHQgc2V0dGluZyBpcyB0byB1c2UgdGhlIHBpbiBhcyAxMlYgaW5wdXQsIGFuZCB1c2Ugb25seSA0IGJpdCBWSUQuCitUaGlzIGRyaXZlciBhc3N1bWVzIHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyCitpcyBjb3JyZWN0LCBpLmUuIHRoYXQgdGhlIEJJT1MgaGFzIHVwZGF0ZWQgdGhlIGNvbmZpZ3VyYXRpb24gaWYKK3RoZSBtb3RoZXJib2FyZCBoYXMgdGhpcyBpbnB1dCB3aXJlZCB0byBWSUQ0LgorCitUaGUgdGVtcGVyYXR1cmUgYW5kIHZvbHRhZ2UgcmVhZGluZ3MgYXJlIHVwZGF0ZWQgb25jZSBldmVyeSAxLjUgc2Vjb25kcy4KK1JlYWRpbmcgdGhlbSBtb3JlIG9mdGVuIHJlcGVhdHMgdGhlIHNhbWUgdmFsdWVzLgorCisKK3N5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK2luMF9pbnB1dAktICsyLjVWIHZvbHRhZ2UgaW5wdXQKK2luMV9pbnB1dAktIENQVSB2b2x0YWdlIGlucHV0IChub21pbmFsIDIuMjVWKQoraW4yX2lucHV0CS0gKzMuM1Ygdm9sdGFnZSBpbnB1dAoraW4zX2lucHV0CS0gKzVWIHZvbHRhZ2UgaW5wdXQKK2luNF9pbnB1dAktICsxMlYgdm9sdGFnZSBpbnB1dCAobWF5IGJlIG1pc3NpbmcgaWYgdXNlZCBhcyBWSUQ0KQoraW41X2lucHV0CS0gVmNjIHZvbHRhZ2UgaW5wdXQgKG5vbWluYWwgMy4zVikKKwkJICBUaGlzIGlzIHRoZSBzdXBwbHkgdm9sdGFnZSBvZiB0aGUgc2Vuc29yIGNoaXAgaXRzZWxmLgoraW42X2lucHV0CS0gKzEuNVYgdm9sdGFnZSBpbnB1dAoraW43X2lucHV0CS0gKzEuOFYgdm9sdGFnZSBpbnB1dAorCitpblswLTddX21pbiwKK2luWzAtN11fbWF4CS0gbG93ZXIgYW5kIHVwcGVyIGFsYXJtIHRocmVzaG9sZHMgZm9yIGluWzAtN11faW5wdXQgcmVhZGluZworCisJCSAgQWxsIHZvbHRhZ2VzIGFyZSByZWFkIGFuZCB3cml0dGVuIGluIG1WLgorCitpblswLTddX2FsYXJtCS0gYWxhcm0gZmxhZ3MgZm9yIHZvbHRhZ2UgaW5wdXRzCisJCSAgVGhlc2UgZmlsZXMgcmVhZCAnMScgaW4gY2FzZSBvZiBhbGFybSwgJzAnIG90aGVyd2lzZS4KKwordGVtcDFfaW5wdXQJLSBjaGlwIHRlbXBlcmF0dXJlIG1lYXN1cmVkIGJ5IG9uLWNoaXAgZGlvZGUKK3RlbXBbMi0zXV9pbnB1dAktIHRlbXBlcmF0dXJlIG1lYXN1cmVkIGJ5IGV4dGVybmFsIGRpb2RlcyAob25lIG9mIHRoZXNlIHdvdWxkCisJCSAgdHlwaWNhbGx5IGJlIHdpcmVkIHRvIHRoZSBkaW9kZSBpbnNpZGUgdGhlIENQVSkKKwordGVtcFsxLTNdX21pbiwKK3RlbXBbMS0zXV9tYXgJLSBsb3dlciBhbmQgdXBwZXIgYWxhcm0gdGhyZXNob2xkcyBmb3IgdGVtcGVyYXR1cmVzCisKK3RlbXBbMS0zXV9vZmZzZXQgLSB0ZW1wZXJhdHVyZSBvZmZzZXQgcmVnaXN0ZXJzCisJCSAgVGhlIGNoaXAgYWRkcyB0aGUgb2Zmc2V0cyBzdG9yZWQgaW4gdGhlc2UgcmVnaXN0ZXJzIHRvCisJCSAgdGhlIGNvcnJlc3BvbmRpbmcgdGVtcGVyYXR1cmUgcmVhZGluZ3MuCisJCSAgTm90ZSB0aGF0IHRlbXAxIGFuZCB0ZW1wMiBvZmZzZXRzIHNoYXJlIHRoZSBzYW1lIHJlZ2lzdGVyLAorCQkgIHRoZXkgY2Fubm90IGJvdGggYmUgZGlmZmVyZW50IGZyb20gemVybyBhdCB0aGUgc2FtZSB0aW1lLgorCQkgIFdyaXRpbmcgYSBub24temVybyBudW1iZXIgdG8gb25lIG9mIHRoZW0gd2lsbCByZXNldCB0aGUgb3RoZXIKKwkJICBvZmZzZXQgdG8gemVyby4KKworCQkgIEFsbCB0ZW1wZXJhdHVyZXMgYW5kIG9mZnNldHMgYXJlIHJlYWQgYW5kIHdyaXR0ZW4gaW4KKwkJICB1bml0cyBvZiAwLjAwMSBkZWdDLgorCit0ZW1wWzEtM11fYWxhcm0gLSBhbGFybSBmbGFncyBmb3IgdGVtcGVyYXR1cmUgaW5wdXRzLCAnMScgaW4gY2FzZSBvZiBhbGFybSwKKwkJICAnMCcgb3RoZXJ3aXNlLgordGVtcFsyLTNdX2lucHV0X2ZhdWx0IC0gZGlvZGUgZmF1bHQgZmxhZ3MgZm9yIHRlbXBlcmF0dXJlIGlucHV0cyAyIGFuZCAzLgorCQkgIEEgZmF1bHQgaXMgZGV0ZWN0ZWQgaWYgdGhlIHR3byBwaW5zIGZvciB0aGUgY29ycmVzcG9uZGluZworCQkgIHNlbnNvciBhcmUgb3BlbiBvciBzaG9ydGVkLCBvciBhbnkgb2YgdGhlIHR3byBpcyBzaG9ydGVkCisJCSAgdG8gZ3JvdW5kIG9yIFZjYy4gJzEnIGluZGljYXRlcyBhIGRpb2RlIGZhdWx0LgorCitjcHUwX3ZpZAktIENQVSB2b2x0YWdlIGFzIHJlY2VpdmVkIGZyb20gdGhlIENQVQorCit2cm0JCS0gQ1BVIFZJRCBzdGFuZGFyZCB1c2VkIGZvciBkZWNvZGluZyBDUFUgdm9sdGFnZQorCisJCSAgVGhlICpfbWluLCAqX21heCwgKl9vZmZzZXQgYW5kIHZybSBmaWxlcyBjYW4gYmUgcmVhZCBhbmQKKwkJICB3cml0dGVuLCBhbGwgb3RoZXJzIGFyZSByZWFkLW9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZSBiL0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlCmluZGV4IGEwZDBhYjIuLmQxZDM5MGEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlCkBAIC0zLDE1ICszLDE1IEBACiAKIFRoZSBsaWJzZW5zb3JzIGxpYnJhcnkgb2ZmZXJzIGFuIGludGVyZmFjZSB0byB0aGUgcmF3IHNlbnNvcnMgZGF0YQogdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBTZWUgbGlic2Vuc29ycyBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2UgZm9yCi1tb3JlIGZ1cnRoZXIgaW5mb3JtYXRpb24uIEFzIG9mIHdyaXRpbmcgdGhpcyBkb2N1bWVudCwgbGlic2Vuc29ycwotKGZyb20gbG1fc2Vuc29ycyAyLjguMykgaXMgaGVhdmlseSBjaGlwLWRlcGVuZGFudC4gQWRkaW5nIG9yIHVwZGF0aW5nCitmdXJ0aGVyIGluZm9ybWF0aW9uLiBBcyBvZiB3cml0aW5nIHRoaXMgZG9jdW1lbnQsIGxpYnNlbnNvcnMKKyhmcm9tIGxtX3NlbnNvcnMgMi44LjMpIGlzIGhlYXZpbHkgY2hpcC1kZXBlbmRlbnQuIEFkZGluZyBvciB1cGRhdGluZwogc3VwcG9ydCBmb3IgYW55IGdpdmVuIGNoaXAgcmVxdWlyZXMgbW9kaWZ5aW5nIHRoZSBsaWJyYXJ5J3MgY29kZS4KIFRoaXMgaXMgYmVjYXVzZSBsaWJzZW5zb3JzIHdhcyB3cml0dGVuIGZvciB0aGUgcHJvY2ZzIGludGVyZmFjZQogb2xkZXIga2VybmVsIG1vZHVsZXMgd2VyZSB1c2luZywgd2hpY2ggd2Fzbid0IHN0YW5kYXJkaXplZCBlbm91Z2guCiBSZWNlbnQgdmVyc2lvbnMgb2YgbGlic2Vuc29ycyAoZnJvbSBsbV9zZW5zb3JzIDIuOC4yIGFuZCBsYXRlcikgaGF2ZQogc3VwcG9ydCBmb3IgdGhlIHN5c2ZzIGludGVyZmFjZSwgdGhvdWdoLgogCi1UaGUgbmV3IHN5c2ZzIGludGVyZmFjZSB3YXMgZGVzaWduZWQgdG8gYmUgYXMgY2hpcC1pbmRlcGVuZGFudCBhcworVGhlIG5ldyBzeXNmcyBpbnRlcmZhY2Ugd2FzIGRlc2lnbmVkIHRvIGJlIGFzIGNoaXAtaW5kZXBlbmRlbnQgYXMKIHBvc3NpYmxlLgogCiBOb3RlIHRoYXQgbW90aGVyYm9hcmRzIHZhcnkgd2lkZWx5IGluIHRoZSBjb25uZWN0aW9ucyB0byBzZW5zb3IgY2hpcHMuCkBAIC0yNCw3ICsyNCw3IEBACiBjYW4gY2hhbmdlIGZyb20gbW90aGVyYm9hcmQgdG8gbW90aGVyYm9hcmQsIHRoZSBjb252ZXJzaW9ucyBjYW5ub3QgYmUKIGhhcmQgY29kZWQgaW50byB0aGUgZHJpdmVyIGFuZCBoYXZlIHRvIGJlIGRvbmUgaW4gdXNlciBzcGFjZS4KIAotRm9yIHRoaXMgcmVhc29uLCBldmVuIGlmIHdlIGFpbSBhdCBhIGNoaXAtaW5kZXBlbmRhbnQgbGlic2Vuc29ycywgaXQgd2lsbAorRm9yIHRoaXMgcmVhc29uLCBldmVuIGlmIHdlIGFpbSBhdCBhIGNoaXAtaW5kZXBlbmRlbnQgbGlic2Vuc29ycywgaXQgd2lsbAogc3RpbGwgcmVxdWlyZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSAoZS5nLiAvZXRjL3NlbnNvcnMuY29uZikgZm9yIHByb3BlcgogdmFsdWVzIGNvbnZlcnNpb24sIGxhYmVsaW5nIG9mIGlucHV0cyBhbmQgaGlkaW5nIG9mIHVudXNlZCBpbnB1dHMuCiAKQEAgLTM5LDE1ICszOSwxNiBAQAogdGhpcyBzdGFuZGFyZC4KIAogTm90ZSB0aGF0IHRoaXMgc3RhbmRhcmQgaXNuJ3QgY29tcGxldGVseSBlc3RhYmxpc2hlZCB5ZXQsIHNvIGl0IGlzIHN1YmplY3QKLXRvIGNoYW5nZXMsIGV2ZW4gaW1wb3J0YW50IG9uZXMuIE9uZSBtb3JlIHJlYXNvbiB0byB1c2UgdGhlIGxpYnJhcnkgaW5zdGVhZAotb2YgYWNjZXNzaW5nIHN5c2ZzIGZpbGVzIGRpcmVjdGx5LgordG8gY2hhbmdlcy4gSWYgeW91IGFyZSB3cml0aW5nIGEgbmV3IGhhcmR3YXJlIG1vbml0b3JpbmcgZHJpdmVyIHRob3NlCitmZWF0dXJlcyBjYW4ndCBzZWVtIHRvIGZpdCBpbiB0aGlzIGludGVyZmFjZSwgcGxlYXNlIGNvbnRhY3QgdXMgd2l0aCB5b3VyCitleHRlbnNpb24gcHJvcG9zYWwuIEtlZXAgaW4gbWluZCB0aGF0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgbXVzdCBiZQorcHJlc2VydmVkLgogCiBFYWNoIGNoaXAgZ2V0cyBpdHMgb3duIGRpcmVjdG9yeSBpbiB0aGUgc3lzZnMgL3N5cy9kZXZpY2VzIHRyZWUuICBUbwotZmluZCBhbGwgc2Vuc29yIGNoaXBzLCBpdCBpcyBlYXNpZXIgdG8gZm9sbG93IHRoZSBzeW1saW5rcyBmcm9tCi0vc3lzL2kyYy9kZXZpY2VzLworZmluZCBhbGwgc2Vuc29yIGNoaXBzLCBpdCBpcyBlYXNpZXIgdG8gZm9sbG93IHRoZSBkZXZpY2Ugc3ltbGlua3MgZnJvbQorL3N5cy9jbGFzcy9od21vbi9od21vbiouCiAKLUFsbCBzeXNmcyB2YWx1ZXMgYXJlIGZpeGVkIHBvaW50IG51bWJlcnMuICBUbyBnZXQgdGhlIHRydWUgdmFsdWUgb2Ygc29tZQotb2YgdGhlIHZhbHVlcywgeW91IHNob3VsZCBkaXZpZGUgYnkgdGhlIHNwZWNpZmllZCB2YWx1ZS4KK0FsbCBzeXNmcyB2YWx1ZXMgYXJlIGZpeGVkIHBvaW50IG51bWJlcnMuCiAKIFRoZXJlIGlzIG9ubHkgb25lIHZhbHVlIHBlciBmaWxlLCB1bmxpa2UgdGhlIG9sZGVyIC9wcm9jIHNwZWNpZmljYXRpb24uCiBUaGUgY29tbW9uIHNjaGVtZSBmb3IgZmlsZXMgbmFtaW5nIGlzOiA8dHlwZT48bnVtYmVyPl88aXRlbT4uIFVzdWFsCkBAIC02OSwyOCArNzAsNDAgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitbMC0qXQlkZW5vdGVzIGFueSBwb3NpdGl2ZSBudW1iZXIgc3RhcnRpbmcgZnJvbSAwCitbMS0qXQlkZW5vdGVzIGFueSBwb3NpdGl2ZSBudW1iZXIgc3RhcnRpbmcgZnJvbSAxCitSTwlyZWFkIG9ubHkgdmFsdWUKK1JXCXJlYWQvd3JpdGUgdmFsdWUKKworUmVhZC93cml0ZSB2YWx1ZXMgbWF5IGJlIHJlYWQtb25seSBmb3Igc29tZSBjaGlwcywgZGVwZW5kaW5nIG9uIHRoZQoraGFyZHdhcmUgaW1wbGVtZW50YXRpb24uCisKK0FsbCBlbnRyaWVzIGFyZSBvcHRpb25hbCwgYW5kIHNob3VsZCBvbmx5IGJlIGNyZWF0ZWQgaW4gYSBnaXZlbiBkcml2ZXIKK2lmIHRoZSBjaGlwIGhhcyB0aGUgZmVhdHVyZS4KKwogKioqKioqKioqKioqCiAqIFZvbHRhZ2VzICoKICoqKioqKioqKioqKgogCi1pblswLThdX21pbglWb2x0YWdlIG1pbiB2YWx1ZS4KK2luWzAtKl1fbWluCVZvbHRhZ2UgbWluIHZhbHVlLgogCQlVbml0OiBtaWxsaXZvbHQKLQkJUmVhZC9Xcml0ZQorCQlSVwogCQkKLWluWzAtOF1fbWF4CVZvbHRhZ2UgbWF4IHZhbHVlLgoraW5bMC0qXV9tYXgJVm9sdGFnZSBtYXggdmFsdWUuCiAJCVVuaXQ6IG1pbGxpdm9sdAotCQlSZWFkL1dyaXRlCisJCVJXCiAJCQotaW5bMC04XV9pbnB1dAlWb2x0YWdlIGlucHV0IHZhbHVlLgoraW5bMC0qXV9pbnB1dAlWb2x0YWdlIGlucHV0IHZhbHVlLgogCQlVbml0OiBtaWxsaXZvbHQKLQkJUmVhZCBvbmx5CisJCVJPCisJCVZvbHRhZ2UgbWVhc3VyZWQgb24gdGhlIGNoaXAgcGluLgogCQlBY3R1YWwgdm9sdGFnZSBkZXBlbmRzIG9uIHRoZSBzY2FsaW5nIHJlc2lzdG9ycyBvbiB0aGUKIAkJbW90aGVyYm9hcmQsIGFzIHJlY29tbWVuZGVkIGluIHRoZSBjaGlwIGRhdGFzaGVldC4KIAkJVGhpcyB2YXJpZXMgYnkgY2hpcCBhbmQgYnkgbW90aGVyYm9hcmQuCiAJCUJlY2F1c2Ugb2YgdGhpcyB2YXJpYXRpb24sIHZhbHVlcyBhcmUgZ2VuZXJhbGx5IE5PVCBzY2FsZWQKIAkJYnkgdGhlIGNoaXAgZHJpdmVyLCBhbmQgbXVzdCBiZSBkb25lIGJ5IHRoZSBhcHBsaWNhdGlvbi4KIAkJSG93ZXZlciwgc29tZSBkcml2ZXJzIChub3RhYmx5IGxtODcgYW5kIHZpYTY4NmEpCi0JCWRvIHNjYWxlLCB3aXRoIHZhcmlvdXMgZGVncmVlcyBvZiBzdWNjZXNzLgorCQlkbyBzY2FsZSwgYmVjYXVzZSBvZiBpbnRlcm5hbCByZXNpc3RvcnMgYnVpbHQgaW50byBhIGNoaXAuCiAJCVRoZXNlIGRyaXZlcnMgd2lsbCBvdXRwdXQgdGhlIGFjdHVhbCB2b2x0YWdlLgogCiAJCVR5cGljYWwgdXNhZ2U6CkBAIC0xMDQsNTggKzExNyw3MiBAQAogCQkJaW43XyoJdmFyaWVzCiAJCQlpbjhfKgl2YXJpZXMKIAotY3B1WzAtMV1fdmlkCUNQVSBjb3JlIHJlZmVyZW5jZSB2b2x0YWdlLgorY3B1WzAtKl1fdmlkCUNQVSBjb3JlIHJlZmVyZW5jZSB2b2x0YWdlLgogCQlVbml0OiBtaWxsaXZvbHQKLQkJUmVhZCBvbmx5LgorCQlSTwogCQlOb3QgYWx3YXlzIGNvcnJlY3QuCiAKIHZybQkJVm9sdGFnZSBSZWd1bGF0b3IgTW9kdWxlIHZlcnNpb24gbnVtYmVyLiAKLQkJUmVhZCBvbmx5LgotCQlUd28gZGlnaXQgbnVtYmVyLCBmaXJzdCBpcyBtYWpvciB2ZXJzaW9uLCBzZWNvbmQgaXMKLQkJbWlub3IgdmVyc2lvbi4KKwkJUlcgKGJ1dCBjaGFuZ2luZyBpdCBzaG91bGQgbm8gbW9yZSBiZSBuZWNlc3NhcnkpCisJCU9yaWdpbmFsbHkgdGhlIFZSTSBzdGFuZGFyZCB2ZXJzaW9uIG11bHRpcGxpZWQgYnkgMTAsIGJ1dCBub3cKKwkJYW4gYXJiaXRyYXJ5IG51bWJlciwgYXMgbm90IGFsbCBzdGFuZGFyZHMgaGF2ZSBhIHZlcnNpb24KKwkJbnVtYmVyLgogCQlBZmZlY3RzIHRoZSB3YXkgdGhlIGRyaXZlciBjYWxjdWxhdGVzIHRoZSBDUFUgY29yZSByZWZlcmVuY2UKIAkJdm9sdGFnZSBmcm9tIHRoZSB2aWQgcGlucy4KIAorQWxzbyBzZWUgdGhlIEFsYXJtcyBzZWN0aW9uIGZvciBzdGF0dXMgZmxhZ3MgYXNzb2NpYXRlZCB3aXRoIHZvbHRhZ2VzLgorCiAKICoqKioqKioqCiAqIEZhbnMgKgogKioqKioqKioKIAotZmFuWzEtM11fbWluCUZhbiBtaW5pbXVtIHZhbHVlCitmYW5bMS0qXV9taW4JRmFuIG1pbmltdW0gdmFsdWUKIAkJVW5pdDogcmV2b2x1dGlvbi9taW4gKFJQTSkKLQkJUmVhZC9Xcml0ZS4KKwkJUlcKIAotZmFuWzEtM11faW5wdXQJRmFuIGlucHV0IHZhbHVlLgorZmFuWzEtKl1faW5wdXQJRmFuIGlucHV0IHZhbHVlLgogCQlVbml0OiByZXZvbHV0aW9uL21pbiAoUlBNKQotCQlSZWFkIG9ubHkuCisJCVJPCiAKLWZhblsxLTNdX2RpdglGYW4gZGl2aXNvci4KK2ZhblsxLSpdX2RpdglGYW4gZGl2aXNvci4KIAkJSW50ZWdlciB2YWx1ZSBpbiBwb3dlcnMgb2YgdHdvICgxLCAyLCA0LCA4LCAxNiwgMzIsIDY0LCAxMjgpLgorCQlSVwogCQlTb21lIGNoaXBzIG9ubHkgc3VwcG9ydCB2YWx1ZXMgMSwgMiwgNCBhbmQgOC4KIAkJTm90ZSB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgYW4gaW50ZXJuYWwgY2xvY2sgZGl2aXNvciwgd2hpY2gKIAkJYWZmZWN0cyB0aGUgbWVhc3VyYWJsZSBzcGVlZCByYW5nZSwgbm90IHRoZSByZWFkIHZhbHVlLgogCitBbHNvIHNlZSB0aGUgQWxhcm1zIHNlY3Rpb24gZm9yIHN0YXR1cyBmbGFncyBhc3NvY2lhdGVkIHdpdGggZmFucy4KKworCiAqKioqKioqCiAqIFBXTSAqCiAqKioqKioqCiAKLXB3bVsxLTNdCVB1bHNlIHdpZHRoIG1vZHVsYXRpb24gZmFuIGNvbnRyb2wuCitwd21bMS0qXQlQdWxzZSB3aWR0aCBtb2R1bGF0aW9uIGZhbiBjb250cm9sLgogCQlJbnRlZ2VyIHZhbHVlIGluIHRoZSByYW5nZSAwIHRvIDI1NQotCQlSZWFkL1dyaXRlCisJCVJXCiAJCTI1NSBpcyBtYXggb3IgMTAwJS4KIAotcHdtWzEtM11fZW5hYmxlCitwd21bMS0qXV9lbmFibGUKIAkJU3dpdGNoIFBXTSBvbiBhbmQgb2ZmLgogCQlOb3QgYWx3YXlzIHByZXNlbnQgZXZlbiBpZiBmYW4qX3B3bSBpcy4KLQkJMCB0byB0dXJuIG9mZgotCQkxIHRvIHR1cm4gb24gaW4gbWFudWFsIG1vZGUKLQkJMiB0byB0dXJuIG9uIGluIGF1dG9tYXRpYyBtb2RlCi0JCVJlYWQvV3JpdGUKKwkJMDogdHVybiBvZmYKKwkJMTogdHVybiBvbiBpbiBtYW51YWwgbW9kZQorCQkyKzogdHVybiBvbiBpbiBhdXRvbWF0aWMgbW9kZQorCQlDaGVjayBpbmRpdmlkdWFsIGNoaXAgZG9jdW1lbnRhdGlvbiBmaWxlcyBmb3IgYXV0b21hdGljIG1vZGUgZGV0YWlscy4KKwkJUlcKKworcHdtWzEtKl1fbW9kZQorCQkwOiBEQyBtb2RlCisJCTE6IFBXTSBtb2RlCisJCVJXCiAKIHB3bVsxLSpdX2F1dG9fY2hhbm5lbHNfdGVtcAogCQlTZWxlY3Qgd2hpY2ggdGVtcGVyYXR1cmUgY2hhbm5lbHMgYWZmZWN0IHRoaXMgUFdNIG91dHB1dCBpbgogCQlhdXRvIG1vZGUuIEJpdGZpZWxkLCAxIGlzIHRlbXAxLCAyIGlzIHRlbXAyLCA0IGlzIHRlbXAzIGV0Yy4uLgogCQlXaGljaCB2YWx1ZXMgYXJlIHBvc3NpYmxlIGRlcGVuZCBvbiB0aGUgY2hpcCB1c2VkLgorCQlSVwogCiBwd21bMS0qXV9hdXRvX3BvaW50WzEtKl1fcHdtCiBwd21bMS0qXV9hdXRvX3BvaW50WzEtKl1fdGVtcApAQCAtMTYzLDYgKzE5MCw3IEBACiAJCURlZmluZSB0aGUgUFdNIHZzIHRlbXBlcmF0dXJlIGN1cnZlLiBOdW1iZXIgb2YgdHJpcCBwb2ludHMgaXMKIAkJY2hpcC1kZXBlbmRlbnQuIFVzZSB0aGlzIGZvciBjaGlwcyB3aGljaCBhc3NvY2lhdGUgdHJpcCBwb2ludHMKIAkJdG8gUFdNIG91dHB1dCBjaGFubmVscy4KKwkJUlcKIAogT1IKIApAQCAtMTcyLDUwICsyMDAsNTcgQEAKIAkJRGVmaW5lIHRoZSBQV00gdnMgdGVtcGVyYXR1cmUgY3VydmUuIE51bWJlciBvZiB0cmlwIHBvaW50cyBpcwogCQljaGlwLWRlcGVuZGVudC4gVXNlIHRoaXMgZm9yIGNoaXBzIHdoaWNoIGFzc29jaWF0ZSB0cmlwIHBvaW50cwogCQl0byB0ZW1wZXJhdHVyZSBjaGFubmVscy4KKwkJUlcKIAogCiAqKioqKioqKioqKioqKioqCiAqIFRlbXBlcmF0dXJlcyAqCiAqKioqKioqKioqKioqKioqCiAKLXRlbXBbMS0zXV90eXBlCVNlbnNvciB0eXBlIHNlbGVjdGlvbi4KK3RlbXBbMS0qXV90eXBlCVNlbnNvciB0eXBlIHNlbGVjdGlvbi4KIAkJSW50ZWdlcnMgMSB0byA0IG9yIHRoZXJtaXN0b3IgQmV0YSB2YWx1ZSAodHlwaWNhbGx5IDM0MzUpCi0JCVJlYWQvV3JpdGUuCisJCVJXCiAJCTE6IFBJSS9DZWxlcm9uIERpb2RlCiAJCTI6IDM5MDQgdHJhbnNpc3RvcgogCQkzOiB0aGVybWFsIGRpb2RlCiAJCTQ6IHRoZXJtaXN0b3IgKGRlZmF1bHQvdW5rbm93biBCZXRhKQogCQlOb3QgYWxsIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgYWxsIGNoaXBzCiAKLXRlbXBbMS00XV9tYXgJVGVtcGVyYXR1cmUgbWF4IHZhbHVlLgotCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxjaXVzCi0JCVJlYWQvV3JpdGUgdmFsdWUuCit0ZW1wWzEtKl1fbWF4CVRlbXBlcmF0dXJlIG1heCB2YWx1ZS4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cyAob3IgbWlsbGl2b2x0LCBzZWUgYmVsb3cpCisJCVJXCiAKLXRlbXBbMS0zXV9taW4JVGVtcGVyYXR1cmUgbWluIHZhbHVlLgotCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxjaXVzCi0JCVJlYWQvV3JpdGUgdmFsdWUuCit0ZW1wWzEtKl1fbWluCVRlbXBlcmF0dXJlIG1pbiB2YWx1ZS4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlSVwogCi10ZW1wWzEtM11fbWF4X2h5c3QKK3RlbXBbMS0qXV9tYXhfaHlzdAogCQlUZW1wZXJhdHVyZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBtYXggbGltaXQuCi0JCVVuaXQ6IG1pbGxpZGVncmVlIENlbGNpdXMKKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cwogCQlNdXN0IGJlIHJlcG9ydGVkIGFzIGFuIGFic29sdXRlIHRlbXBlcmF0dXJlLCBOT1QgYSBkZWx0YQogCQlmcm9tIHRoZSBtYXggdmFsdWUuCi0JCVJlYWQvV3JpdGUgdmFsdWUuCisJCVJXCiAKLXRlbXBbMS00XV9pbnB1dCBUZW1wZXJhdHVyZSBpbnB1dCB2YWx1ZS4KLQkJVW5pdDogbWlsbGlkZWdyZWUgQ2VsY2l1cwotCQlSZWFkIG9ubHkgdmFsdWUuCit0ZW1wWzEtKl1faW5wdXQgVGVtcGVyYXR1cmUgaW5wdXQgdmFsdWUuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJUk8KIAotdGVtcFsxLTRdX2NyaXQJVGVtcGVyYXR1cmUgY3JpdGljYWwgdmFsdWUsIHR5cGljYWxseSBncmVhdGVyIHRoYW4KK3RlbXBbMS0qXV9jcml0CVRlbXBlcmF0dXJlIGNyaXRpY2FsIHZhbHVlLCB0eXBpY2FsbHkgZ3JlYXRlciB0aGFuCiAJCWNvcnJlc3BvbmRpbmcgdGVtcF9tYXggdmFsdWVzLgotCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxjaXVzCi0JCVJlYWQvV3JpdGUgdmFsdWUuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJUlcKIAotdGVtcFsxLTJdX2NyaXRfaHlzdAordGVtcFsxLSpdX2NyaXRfaHlzdAogCQlUZW1wZXJhdHVyZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBjcml0aWNhbCBsaW1pdC4KLQkJVW5pdDogbWlsbGlkZWdyZWUgQ2VsY2l1cworCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCiAJCU11c3QgYmUgcmVwb3J0ZWQgYXMgYW4gYWJzb2x1dGUgdGVtcGVyYXR1cmUsIE5PVCBhIGRlbHRhCiAJCWZyb20gdGhlIGNyaXRpY2FsIHZhbHVlLgorCQlSVworCit0ZW1wWzEtNF1fb2Zmc2V0CisJCVRlbXBlcmF0dXJlIG9mZnNldCB3aGljaCBpcyBhZGRlZCB0byB0aGUgdGVtcGVyYXR1cmUgcmVhZGluZworCQlieSB0aGUgY2hpcC4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cwogCQlSZWFkL1dyaXRlIHZhbHVlLgogCiAJCUlmIHRoZXJlIGFyZSBtdWx0aXBsZSB0ZW1wZXJhdHVyZSBzZW5zb3JzLCB0ZW1wMV8qIGlzCkBAIC0yMjUsNiArMjYwLDE3IEBACiAJCWl0c2VsZiwgZm9yIGV4YW1wbGUgdGhlIHRoZXJtYWwgZGlvZGUgaW5zaWRlIHRoZSBDUFUgb3IKIAkJYSB0aGVybWlzdG9yIG5lYXJieS4KIAorU29tZSBjaGlwcyBtZWFzdXJlIHRlbXBlcmF0dXJlIHVzaW5nIGV4dGVybmFsIHRoZXJtaXN0b3JzIGFuZCBhbiBBREMsIGFuZAorcmVwb3J0IHRoZSB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCBhcyBhIHZvbHRhZ2UuIENvbnZlcnRpbmcgdGhpcyB2b2x0YWdlCitiYWNrIHRvIGEgdGVtcGVyYXR1cmUgKG9yIHRoZSBvdGhlciB3YXkgYXJvdW5kIGZvciBsaW1pdHMpIHJlcXVpcmVzCittYXRoZW1hdGljYWwgZnVuY3Rpb25zIG5vdCBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbCwgc28gdGhlIGNvbnZlcnNpb24KK211c3Qgb2NjdXIgaW4gdXNlciBzcGFjZS4gRm9yIHRoZXNlIGNoaXBzLCBhbGwgdGVtcCogZmlsZXMgZGVzY3JpYmVkCithYm92ZSBzaG91bGQgY29udGFpbiB2YWx1ZXMgZXhwcmVzc2VkIGluIG1pbGxpdm9sdCBpbnN0ZWFkIG9mIG1pbGxpZGVncmVlCitDZWxzaXVzLiBJbiBvdGhlciB3b3Jkcywgc3VjaCB0ZW1wZXJhdHVyZSBjaGFubmVscyBhcmUgaGFuZGxlZCBhcyB2b2x0YWdlCitjaGFubmVscyBieSB0aGUgZHJpdmVyLgorCitBbHNvIHNlZSB0aGUgQWxhcm1zIHNlY3Rpb24gZm9yIHN0YXR1cyBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGVtcGVyYXR1cmVzLgorCiAKICoqKioqKioqKioqKgogKiBDdXJyZW50cyAqCkBAIC0yMzMsMjUgKzI3OSw4OCBAQAogTm90ZSB0aGF0IG5vIGtub3duIGNoaXAgcHJvdmlkZXMgY3VycmVudCBtZWFzdXJlbWVudHMgYXMgb2Ygd3JpdGluZywKIHNvIHRoaXMgcGFydCBpcyB0aGVvcmV0aWNhbCwgc28gdG8gc2F5LgogCi1jdXJyWzEtbl1fbWF4CUN1cnJlbnQgbWF4IHZhbHVlCitjdXJyWzEtKl1fbWF4CUN1cnJlbnQgbWF4IHZhbHVlCiAJCVVuaXQ6IG1pbGxpYW1wZXJlCi0JCVJlYWQvV3JpdGUuCisJCVJXCiAKLWN1cnJbMS1uXV9taW4JQ3VycmVudCBtaW4gdmFsdWUuCitjdXJyWzEtKl1fbWluCUN1cnJlbnQgbWluIHZhbHVlLgogCQlVbml0OiBtaWxsaWFtcGVyZQotCQlSZWFkL1dyaXRlLgorCQlSVwogCi1jdXJyWzEtbl1faW5wdXQJQ3VycmVudCBpbnB1dCB2YWx1ZQorY3VyclsxLSpdX2lucHV0CUN1cnJlbnQgaW5wdXQgdmFsdWUKIAkJVW5pdDogbWlsbGlhbXBlcmUKLQkJUmVhZCBvbmx5LgorCQlSTwogCiAKLSoqKioqKioqKgotKiBPdGhlciAqCi0qKioqKioqKioKKyoqKioqKioqKioKKyogQWxhcm1zICoKKyoqKioqKioqKioKKworRWFjaCBjaGFubmVsIG9yIGxpbWl0IG1heSBoYXZlIGFuIGFzc29jaWF0ZWQgYWxhcm0gZmlsZSwgY29udGFpbmluZyBhCitib29sZWFuIHZhbHVlLiAxIG1lYW5zIHRoYW4gYW4gYWxhcm0gY29uZGl0aW9uIGV4aXN0cywgMCBtZWFucyBubyBhbGFybS4KKworVXN1YWxseSBhIGdpdmVuIGNoaXAgd2lsbCBlaXRoZXIgdXNlIGNoYW5uZWwtcmVsYXRlZCBhbGFybXMsIG9yCitsaW1pdC1yZWxhdGVkIGFsYXJtcywgbm90IGJvdGguIFRoZSBkcml2ZXIgc2hvdWxkIGp1c3QgcmVmbGVjdCB0aGUgaGFyZHdhcmUKK2ltcGxlbWVudGF0aW9uLgorCitpblswLSpdX2FsYXJtCitmYW5bMS0qXV9hbGFybQordGVtcFsxLSpdX2FsYXJtCisJCUNoYW5uZWwgYWxhcm0KKwkJMDogbm8gYWxhcm0KKwkJMTogYWxhcm0KKwkJUk8KKworT1IKKworaW5bMC0qXV9taW5fYWxhcm0KK2luWzAtKl1fbWF4X2FsYXJtCitmYW5bMS0qXV9taW5fYWxhcm0KK3RlbXBbMS0qXV9taW5fYWxhcm0KK3RlbXBbMS0qXV9tYXhfYWxhcm0KK3RlbXBbMS0qXV9jcml0X2FsYXJtCisJCUxpbWl0IGFsYXJtCisJCTA6IG5vIGFsYXJtCisJCTE6IGFsYXJtCisJCVJPCisKK0VhY2ggaW5wdXQgY2hhbm5lbCBtYXkgaGF2ZSBhbiBhc3NvY2lhdGVkIGZhdWx0IGZpbGUuIFRoaXMgY2FuIGJlIHVzZWQKK3RvIG5vdGlmeSBvcGVuIGRpb2RlcywgdW5jb25uZWN0ZWQgZmFucyBldGMuIHdoZXJlIHRoZSBoYXJkd2FyZQorc3VwcG9ydHMgaXQuIFdoZW4gdGhpcyBib29sZWFuIGhhcyB2YWx1ZSAxLCB0aGUgbWVhc3VyZW1lbnQgZm9yIHRoYXQKK2NoYW5uZWwgc2hvdWxkIG5vdCBiZSB0cnVzdGVkLgorCitpblswLSpdX2lucHV0X2ZhdWx0CitmYW5bMS0qXV9pbnB1dF9mYXVsdAordGVtcFsxLSpdX2lucHV0X2ZhdWx0CisJCUlucHV0IGZhdWx0IGNvbmRpdGlvbgorCQkwOiBubyBmYXVsdCBvY2N1cmVkCisJCTE6IGZhdWx0IGNvbmRpdGlvbgorCQlSTworCitTb21lIGNoaXBzIGFsc28gb2ZmZXIgdGhlIHBvc3NpYmlsaXR5IHRvIGdldCBiZWVwZWQgd2hlbiBhbiBhbGFybSBvY2N1cnM6CisKK2JlZXBfZW5hYmxlCU1hc3RlciBiZWVwIGVuYWJsZQorCQkwOiBubyBiZWVwcworCQkxOiBiZWVwcworCQlSVworCitpblswLSpdX2JlZXAKK2ZhblsxLSpdX2JlZXAKK3RlbXBbMS0qXV9iZWVwCisJCUNoYW5uZWwgYmVlcAorCQkwOiBkaXNhYmxlCisJCTE6IGVuYWJsZQorCQlSVworCitJbiB0aGVvcnksIGEgY2hpcCBjb3VsZCBwcm92aWRlIHBlci1saW1pdCBiZWVwIG1hc2tpbmcsIGJ1dCBubyBzdWNoIGNoaXAKK3dhcyBzZWVuIHNvIGZhci4KKworT2xkIGRyaXZlcnMgcHJvdmlkZWQgYSBkaWZmZXJlbnQsIG5vbi1zdGFuZGFyZCBpbnRlcmZhY2UgdG8gYWxhcm1zIGFuZAorYmVlcHMuIFRoZXNlIGludGVyZmFjZSBmaWxlcyBhcmUgZGVwcmVjYXRlZCwgYnV0IHdpbGwgYmUga2VwdCBhcm91bmQKK2ZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnM6CiAKIGFsYXJtcwkJQWxhcm0gYml0bWFzay4KLQkJUmVhZCBvbmx5LgorCQlSTwogCQlJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIG9uZSB0byBmb3VyIGJ5dGVzLgogCQlBICcxJyBiaXQgbWVhbnMgYW4gYWxhcm0uCiAJCUNoaXBzIHNob3VsZCBiZSBwcm9ncmFtbWVkIGZvciAnY29tcGFyYXRvcicgbW9kZSBzbyB0aGF0CkBAIC0yNTksMzUgKzM2OCwyNiBAQAogCQlpZiBpdCBpcyBzdGlsbCB2YWxpZC4KIAkJR2VuZXJhbGx5IGEgZGlyZWN0IHJlcHJlc2VudGF0aW9uIG9mIGEgY2hpcCdzIGludGVybmFsCiAJCWFsYXJtIHJlZ2lzdGVyczsgdGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBwb3NpdGlvbgotCQlvZiBpbmRpdmlkdWFsIGJpdHMuCisJCW9mIGluZGl2aWR1YWwgYml0cy4gRm9yIHRoaXMgcmVhc29uLCB0aGUgdXNlIG9mIHRoaXMKKwkJaW50ZXJmYWNlIGZpbGUgZm9yIG5ldyBkcml2ZXJzIGlzIGRpc2NvdXJhZ2VkLiBVc2UKKwkJaW5kaXZpZHVhbCAqX2FsYXJtIGFuZCAqX2ZhdWx0IGZpbGVzIGluc3RlYWQuCiAJCUJpdHMgYXJlIGRlZmluZWQgaW4ga2VybmVsL2luY2x1ZGUvc2Vuc29ycy5oLgogCi1hbGFybXNfaW4JQWxhcm0gYml0bWFzayByZWxhdGl2ZSB0byBpbiAodm9sdGFnZSkgY2hhbm5lbHMKLQkJUmVhZCBvbmx5Ci0JCUEgJzEnIGJpdCBtZWFucyBhbiBhbGFybSwgTFNCIGNvcnJlc3BvbmRzIHRvIGluMCBhbmQgc28gb24KLQkJUHJlZmVyZWQgdG8gJ2FsYXJtcycgZm9yIG5ld2VyIGNoaXBzCi0KLWFsYXJtc19mYW4JQWxhcm0gYml0bWFzayByZWxhdGl2ZSB0byBmYW4gY2hhbm5lbHMKLQkJUmVhZCBvbmx5Ci0JCUEgJzEnIGJpdCBtZWFucyBhbiBhbGFybSwgTFNCIGNvcnJlc3BvbmRzIHRvIGZhbjEgYW5kIHNvIG9uCi0JCVByZWZlcmVkIHRvICdhbGFybXMnIGZvciBuZXdlciBjaGlwcwotCi1hbGFybXNfdGVtcAlBbGFybSBiaXRtYXNrIHJlbGF0aXZlIHRvIHRlbXAgKHRlbXBlcmF0dXJlKSBjaGFubmVscwotCQlSZWFkIG9ubHkKLQkJQSAnMScgYml0IG1lYW5zIGFuIGFsYXJtLCBMU0IgY29ycmVzcG9uZHMgdG8gdGVtcDEgYW5kIHNvIG9uCi0JCVByZWZlcmVkIHRvICdhbGFybXMnIGZvciBuZXdlciBjaGlwcwotCi1iZWVwX2VuYWJsZQlCZWVwL2ludGVycnVwdCBlbmFibGUKLQkJMCB0byBkaXNhYmxlLgotCQkxIHRvIGVuYWJsZS4KLQkJUmVhZC9Xcml0ZQotCiBiZWVwX21hc2sJQml0bWFzayBmb3IgYmVlcC4KLQkJU2FtZSBmb3JtYXQgYXMgJ2FsYXJtcycgd2l0aCB0aGUgc2FtZSBiaXQgbG9jYXRpb25zLgotCQlSZWFkL1dyaXRlCisJCVNhbWUgZm9ybWF0IGFzICdhbGFybXMnIHdpdGggdGhlIHNhbWUgYml0IGxvY2F0aW9ucywKKwkJdXNlIGRpc2NvdXJhZ2VkIGZvciB0aGUgc2FtZSByZWFzb24uIFVzZSBpbmRpdmlkdWFsCisJCSpfYmVlcCBmaWxlcyBpbnN0ZWFkLgorCQlSVworCisKKyoqKioqKioqKgorKiBPdGhlciAqCisqKioqKioqKioKIAogZWVwcm9tCQlSYXcgRUVQUk9NIGRhdGEgaW4gYmluYXJ5IGZvcm0uCi0JCVJlYWQgb25seS4KKwkJUk8KIAogcGVjCQlFbmFibGUgb3IgZGlzYWJsZSBQRUMgKFNNQnVzIG9ubHkpCi0JCVJlYWQvV3JpdGUKKwkJMDogZGlzYWJsZQorCQkxOiBlbmFibGUKKwkJUlcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdXNlcnNwYWNlLXRvb2xzIGIvRG9jdW1lbnRhdGlvbi9od21vbi91c2Vyc3BhY2UtdG9vbHMKaW5kZXggMjYyMmFhYy4uMTk5MDBhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi91c2Vyc3BhY2UtdG9vbHMKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi91c2Vyc3BhY2UtdG9vbHMKQEAgLTYsMzEgKzYsMzIgQEAKIGFyZSBhbHNvIGNvbm5lY3RlZCBkaXJlY3RseSB0aHJvdWdoIHRoZSBJU0EgYnVzLgogCiBUaGUga2VybmVsIGRyaXZlcnMgbWFrZSB0aGUgZGF0YSBmcm9tIHRoZSBzZW5zb3IgY2hpcHMgYXZhaWxhYmxlIGluIHRoZSAvc3lzCi12aXJ0dWFsIGZpbGVzeXN0ZW0uIFVzZXJzcGFjZSB0b29scyBhcmUgdGhlbiB1c2VkIHRvIGRpc3BsYXkgb3Igc2V0IG9yIHRoZQotZGF0YSBpbiBhIG1vcmUgZnJpZW5kbHkgbWFubmVyLgordmlydHVhbCBmaWxlc3lzdGVtLiBVc2Vyc3BhY2UgdG9vbHMgYXJlIHRoZW4gdXNlZCB0byBkaXNwbGF5IHRoZSBtZWFzdXJlZAordmFsdWVzIG9yIGNvbmZpZ3VyZSB0aGUgY2hpcHMgaW4gYSBtb3JlIGZyaWVuZGx5IG1hbm5lci4KIAogTG0tc2Vuc29ycwogLS0tLS0tLS0tLQogCi1Db3JlIHNldCBvZiB1dGlsaXRlcyB0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG9idGFpbiBoZWFsdGggaW5mb3JtYXRpb24sCitDb3JlIHNldCBvZiB1dGlsaXRpZXMgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBvYnRhaW4gaGVhbHRoIGluZm9ybWF0aW9uLAogc2V0dXAgbW9uaXRvcmluZyBsaW1pdHMgZXRjLiBZb3UgY2FuIGdldCB0aGVtIG9uIHRoZWlyIGhvbWVwYWdlCiBodHRwOi8vd3d3LmxtLXNlbnNvcnMubnUvIG9yIGFzIGEgcGFja2FnZSBmcm9tIHlvdXIgTGludXggZGlzdHJpYnV0aW9uLgogCiBJZiBmcm9tIHdlYnNpdGU6Ci1HZXQgbG1zZW5zb3JzIGZyb20gcHJvamVjdCB3ZWIgc2l0ZS4gUGxlYXNlIG5vdGUsIHlvdSBuZWVkIG9ubHkgdXNlcnNwYWNlCi1wYXJ0LCBzbyBjb21waWxlIHdpdGggIm1ha2UgdXNlcl9pbnN0YWxsIiB0YXJnZXQuCitHZXQgbG0tc2Vuc29ycyBmcm9tIHByb2plY3Qgd2ViIHNpdGUuIFBsZWFzZSBub3RlLCB5b3UgbmVlZCBvbmx5IHVzZXJzcGFjZQorcGFydCwgc28gY29tcGlsZSB3aXRoICJtYWtlIHVzZXIiIGFuZCBpbnN0YWxsIHdpdGggIm1ha2UgdXNlcl9pbnN0YWxsIi4KIAogR2VuZXJhbCBoaW50cyB0byBnZXQgdGhpbmdzIHdvcmtpbmc6CiAKIDApIGdldCBsbS1zZW5zb3JzIHVzZXJzcGFjZSB1dGlscwotMSkgY29tcGlsZSBhbGwgZHJpdmVycyBpbiBJMkMgc2VjdGlvbiBhcyBtb2R1bGVzIGluIHlvdXIga2VybmVsCisxKSBjb21waWxlIGFsbCBkcml2ZXJzIGluIEkyQyBhbmQgSGFyZHdhcmUgTW9uaXRvcmluZyBzZWN0aW9ucyBhcyBtb2R1bGVzCisgICBpbiB5b3VyIGtlcm5lbAogMikgcnVuIHNlbnNvcnMtZGV0ZWN0IHNjcmlwdCwgaXQgd2lsbCB0ZWxsIHlvdSB3aGF0IG1vZHVsZXMgeW91IG5lZWQgdG8gbG9hZC4KIDMpIGxvYWQgdGhlbSBhbmQgcnVuICJzZW5zb3JzIiBjb21tYW5kLCB5b3Ugc2hvdWxkIHNlZSBzb21lIHJlc3VsdHMuCiA0KSBmaXggc2Vuc29ycy5jb25mLCBsYWJlbHMsIGxpbWl0cywgZmFuIGRpdmlzb3JzCiA1KSBpZiBhbnkgbW9yZSBwcm9ibGVtcyBjb25zdWx0IEZBUSwgb3IgZG9jdW1lbnRhdGlvbgogCi1PdGhlciB1dGlsaXRlcwotLS0tLS0tLS0tLS0tLS0KK090aGVyIHV0aWxpdGllcworLS0tLS0tLS0tLS0tLS0tCiAKIElmIHlvdSB3YW50IHNvbWUgZ3JhcGhpY2FsIGluZGljYXRvcnMgb2Ygc3lzdGVtIGhlYWx0aCBsb29rIGZvciBhcHBsaWNhdGlvbnMKIGxpa2U6IGdrcmVsbG0sIGtzZW5zb3JzLCB4c2Vuc29ycywgd210ZW1wLCB3bXNlbnNvcnMsIHdtZ3RlbXAsIGtzeXNndWFyZGQsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MWQgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNhMzgzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZApAQCAtMCwwICsxLDExMyBAQAorS2VybmVsIGRyaXZlciB3ODM3OTFkCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFdpbmJvbmQgVzgzNzkxRAorICAgIFByZWZpeDogJ3c4Mzc5MWQnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy53aW5ib25kLXVzYS5jb20vcHJvZHVjdHMvd2luYm9uZF9wcm9kdWN0cy9wZGZzL1BDSUMvVzgzNzkxRGEucGRmCisKK0F1dGhvcjogQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4KKworVGhpcyBkcml2ZXIgd2FzIGRlcml2ZWQgZnJvbSB0aGUgdzgzNzgxZC5jIGFuZCB3ODM3OTJkLmMgc291cmNlIGZpbGVzLgorCitDcmVkaXRzOgorICB3ODM3ODFkLmM6CisgICAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwKKyAgICBQaGlsaXAgRWRlbGJyb2NrIDxwaGlsQG5ldHJvZWRnZS5jb20+LAorICAgIGFuZCBNYXJrIFN0dWRlYmFrZXIgPG1kc3h5ejEyM0B5YWhvby5jb20+CisgIHc4Mzc5MmQuYzoKKyAgICBDaHVuaGFvIEh1YW5nIDxEWlNoZW5AV2luYm9uZC5jb20udHc+LAorICAgIFJ1ZG9sZiBNYXJlayA8ci5tYXJla0BzaC5jdnV0LmN6PgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBpbml0IGJvb2xlYW4KKyAgKGRlZmF1bHQgMCkKKyAgVXNlICdpbml0PTEnIHRvIGhhdmUgdGhlIGRyaXZlciBkbyBleHRyYSBzb2Z0d2FyZSBpbml0aWFsaXphdGlvbnMuCisgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGRvIHRoZSBtaW5pbXVtIGluaXRpYWxpemF0aW9uIHBvc3NpYmxlCisgIGFuZCBkZXBlbmQgb24gdGhlIEJJT1MgdG8gcHJvcGVybHkgc2V0dXAgdGhlIGNoaXAuIElmIHlvdSBrbm93IHlvdQorICBoYXZlIGEgdzgzNzkxZCBhbmQgeW91J3JlIGhhdmluZyBwcm9ibGVtcywgdHJ5IGluaXQ9MSBiZWZvcmUgdHJ5aW5nCisgIHJlc2V0PTEuCisKKyogcmVzZXQgYm9vbGVhbgorICAoZGVmYXVsdCAwKQorICBVc2UgJ3Jlc2V0PTEnIHRvIHJlc2V0IHRoZSBjaGlwICh2aWEgaW5kZXggMHg0MCwgYml0IDcpLiBUaGUgZGVmYXVsdAorICBiZWhhdmlvciBpcyBubyBjaGlwIHJlc2V0IHRvIHByZXNlcnZlIEJJT1Mgc2V0dGluZ3MuCisKKyogZm9yY2Vfc3ViY2xpZW50cz1idXMsY2FkZHIsc2FkZHIsc2FkZHIKKyAgVGhpcyBpcyB1c2VkIHRvIGZvcmNlIHRoZSBpMmMgYWRkcmVzc2VzIGZvciBzdWJjbGllbnRzIG9mCisgIGEgY2VydGFpbiBjaGlwLiBFeGFtcGxlIHVzYWdlIGlzIGBmb3JjZV9zdWJjbGllbnRzPTAsMHgyZiwweDRhLDB4NGInCisgIHRvIGZvcmNlIHRoZSBzdWJjbGllbnRzIG9mIGNoaXAgMHgyZiBvbiBidXMgMCB0byBpMmMgYWRkcmVzc2VzCisgIDB4NGEgYW5kIDB4NGIuCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIFdpbmJvbmQgVzgzNzkxRCBjaGlwLgorCitEZXRlY3Rpb24gb2YgdGhlIGNoaXAgY2FuIHNvbWV0aW1lcyBiZSBmb2lsZWQgYmVjYXVzZSBpdCBjYW4gYmUgaW4gYW4KK2ludGVybmFsIHN0YXRlIHRoYXQgYWxsb3dzIG5vIGNsZWFuIGFjY2VzcyAoQmFuayB3aXRoIElEIHJlZ2lzdGVyIGlzIG5vdAorY3VycmVudGx5IHNlbGVjdGVkKS4gSWYgeW91IGtub3cgdGhlIGFkZHJlc3Mgb2YgdGhlIGNoaXAsIHVzZSBhICdmb3JjZScKK3BhcmFtZXRlcjsgdGhpcyB3aWxsIHB1dCBpdCBpbnRvIGEgbW9yZSB3ZWxsLWJlaGF2ZWQgc3RhdGUgZmlyc3QuCisKK1RoZSBkcml2ZXIgaW1wbGVtZW50cyB0aHJlZSB0ZW1wZXJhdHVyZSBzZW5zb3JzLCBmaXZlIGZhbiByb3RhdGlvbiBzcGVlZAorc2Vuc29ycywgYW5kIHRlbiB2b2x0YWdlIHNlbnNvcnMuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIGFuZCBtZWFzdXJlbWVudCByZXNvbHV0aW9uIGlzIDEKK2RlZ0MgZm9yIHRlbXAxIGFuZCAwLjUgZGVnQyBmb3IgdGVtcDIgYW5kIHRlbXAzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgd2hlbgordGhlIHRlbXBlcmF0dXJlIGdldHMgaGlnaGVyIHRoYW4gdGhlIE92ZXJ0ZW1wZXJhdHVyZSBTaHV0ZG93biB2YWx1ZTsgaXQgc3RheXMKK29uIHVudGlsIHRoZSB0ZW1wZXJhdHVyZSBmYWxscyBiZWxvdyB0aGUgSHlzdGVyZXNpcyB2YWx1ZS4KKworRmFuIHJvdGF0aW9uIHNwZWVkcyBhcmUgcmVwb3J0ZWQgaW4gUlBNIChyb3RhdGlvbnMgcGVyIG1pbnV0ZSkuIEFuIGFsYXJtIGlzCit0cmlnZ2VyZWQgaWYgdGhlIHJvdGF0aW9uIHNwZWVkIGhhcyBkcm9wcGVkIGJlbG93IGEgcHJvZ3JhbW1hYmxlIGxpbWl0LiBGYW4KK3JlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQsIDggZm9yIGZhbiAxLzIvMworYW5kIDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQgb3IgMTI4IGZvciBmYW4gNC81KSB0byBnaXZlIHRoZSByZWFkaW5ncyBtb3JlCityYW5nZSBvciBhY2N1cmFjeS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gbWlsbGl2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LgorCitBbGFybXMgYXJlIHByb3ZpZGVkIGFzIG91dHB1dCBmcm9tIGEgInJlYWx0aW1lIHN0YXR1cyByZWdpc3RlciIuIFRoZQorZm9sbG93aW5nIGJpdHMgYXJlIGRlZmluZWQ6CisKK2JpdCAtIGFsYXJtIG9uOgorMCAgLSBWY29yZQorMSAgLSBWSU5SMAorMiAgLSArMy4zVklOCiszICAtIDVWREQKKzQgIC0gdGVtcDEKKzUgIC0gdGVtcDIKKzYgIC0gZmFuMQorNyAgLSBmYW4yCis4ICAtICsxMlZJTgorOSAgLSAtMTJWSU4KKzEwIC0gLTVWSU4KKzExIC0gZmFuMworMTIgLSBjaGFzc2lzCisxMyAtIHRlbXAzCisxNCAtIFZJTlIxCisxNSAtIHJlc2VydmVkCisxNiAtIHRhcnQxCisxNyAtIHRhcnQyCisxOCAtIHRhcnQzCisxOSAtIFZTQgorMjAgLSBWQkFUCisyMSAtIGZhbjQKKzIyIC0gZmFuNQorMjMgLSByZXNlcnZlZAorCitXaGVuIGFuIGFsYXJtIGdvZXMgb2ZmLCB5b3UgY2FuIGJlIHdhcm5lZCBieSBhIGJlZXBpbmcgc2lnbmFsIHRocm91Z2ggeW91cgorY29tcHV0ZXIgc3BlYWtlci4gSXQgaXMgcG9zc2libGUgdG8gZW5hYmxlIGFsbCBiZWVwaW5nIGdsb2JhbGx5LCBvciBvbmx5Cit0aGUgYmVlcGluZyBmb3Igc29tZSBhbGFybXMuCisKK1RoZSBkcml2ZXIgb25seSByZWFkcyB0aGUgY2hpcCB2YWx1ZXMgZWFjaCAzIHNlY29uZHM7IHJlYWRpbmcgdGhlbSBtb3JlCitvZnRlbiB3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybiAnb2xkJyB2YWx1ZXMuCisKK1c4Mzc5MUQgVE9ETzoKKy0tLS0tLS0tLS0tLS0tLQorUHJvdmlkZSBhIHBhdGNoIGZvciBwZXItZmlsZSBhbGFybXMgYXMgZGlzY3Vzc2VkIG9uIHRoZSBtYWlsaW5nIGxpc3QKK1Byb3ZpZGUgYSBwYXRjaCBmb3Igc21hcnQtZmFuIGNvbnRyb2wgKHN0aWxsIG5lZWQgYXBwcm9wcmlhdGUgbW90aGVyYm9hcmQvZmFucykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtaTgwMSBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtaTgwMQppbmRleCBmZDRiMjcxLi5lNDZjMjM0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWk4MDEKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1pODAxCkBAIC0yMSw4ICsyMSw3IEBACiBNb2R1bGUgUGFyYW1ldGVycwogLS0tLS0tLS0tLS0tLS0tLS0KIAotKiBmb3JjZV9hZGRyOiBpbnQKLSAgRm9yY2libHkgZW5hYmxlIHRoZSBJQ0ggYXQgdGhlIGdpdmVuIGFkZHJlc3MuIEVYVFJFTUVMWSBEQU5HRVJPVVMhCitOb25lLgogCiAKIERlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW5mb3JjZTIgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW5mb3JjZTIKaW5kZXggZDc1MTI4Mi4uY2Q0OWM0MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1uZm9yY2UyCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtbmZvcmNlMgpAQCAtNyw2ICs3LDggQEAKICAgKiBuRm9yY2UzIDI1MEdiIE1DUCAgICAgICAgICAxMGRlOjAwRTQgCiAgICogbkZvcmNlNCBNQ1AgICAgICAgICAgICAgICAgMTBkZTowMDUyCiAgICogbkZvcmNlNCBNQ1AtMDQgICAgICAgICAgICAgMTBkZTowMDM0CisgICogbkZvcmNlNCBNQ1A1MSAgICAgICAgICAgICAgMTBkZTowMjY0CisgICogbkZvcmNlNCBNQ1A1NSAgICAgICAgICAgICAgMTBkZTowMzY4CiAKIERhdGFzaGVldDogbm90IHB1YmxpY2FsbHkgYXZhaWxhYmxlLCBidXQgc2VlbXMgdG8gYmUgc2ltaWxhciB0byB0aGUKICAgICAgICAgICAgQU1ELTgxMTEgU01CdXMgMi4wIGFkYXB0ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW9jb3JlcyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtb2NvcmVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmY2ViYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW9jb3JlcwpAQCAtMCwwICsxLDUxIEBACitLZXJuZWwgZHJpdmVyIGkyYy1vY29yZXMKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIE9wZW5Db3Jlcy5vcmcgSTJDIGNvbnRyb2xsZXIgYnkgUmljaGFyZCBIZXJ2ZWlsbGUgKHNlZSBkYXRhc2hlZXQgbGluaykKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cub3BlbmNvcmVzLm9yZy9wcm9qZWN0cy5jZ2kvd2ViL2kyYy9vdmVydmlldworCitBdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitpMmMtb2NvcmVzIGlzIGFuIGkyYyBidXMgZHJpdmVyIGZvciB0aGUgT3BlbkNvcmVzLm9yZyBJMkMgY29udHJvbGxlcgorSVAgY29yZSBieSBSaWNoYXJkIEhlcnZlaWxsZS4KKworVXNhZ2UKKy0tLS0tCisKK2kyYy1vY29yZXMgdXNlcyB0aGUgcGxhdGZvcm0gYnVzLCBzbyB5b3UgbmVlZCB0byBwcm92aWRlIGEgc3RydWN0CitwbGF0Zm9ybV9kZXZpY2Ugd2l0aCB0aGUgYmFzZSBhZGRyZXNzIGFuZCBpbnRlcnJ1cHQgbnVtYmVyLiBUaGUKK2Rldi5wbGF0Zm9ybV9kYXRhIG9mIHRoZSBkZXZpY2Ugc2hvdWxkIGFsc28gcG9pbnQgdG8gYSBzdHJ1Y3QKK29jb3Jlc19pMmNfcGxhdGZvcm1fZGF0YSAoc2VlIGxpbnV4L2kyYy1vY29yZXMuaCkgZGVzY3JpYmluZyB0aGUKK2Rpc3RhbmNlIGJldHdlZW4gcmVnaXN0ZXJzIGFuZCB0aGUgaW5wdXQgY2xvY2sgc3BlZWQuCisKK0UuRy4gc29tZXRoaW5nIGxpa2U6CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb2NvcmVzX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0CT0gTVlJMkNfQkFTRUFERFIsCisJCS5lbmQJPSBNWUkyQ19CQVNFQUREUiArIDgsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSBNWUkyQ19JUlEsCisJCS5lbmQJPSBNWUkyQ19JUlEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IG9jb3Jlc19pMmNfcGxhdGZvcm1fZGF0YSBteWkyY19kYXRhID0geworCS5yZWdzdGVwCT0gMiwJCS8qIHR3byBieXRlcyBiZXR3ZWVuIHJlZ2lzdGVycyAqLworCS5jbG9ja19raHoJPSA1MDAwMCwJLyogaW5wdXQgY2xvY2sgb2YgNTBNSHogKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG15aTJjID0geworCS5uYW1lCQkJPSAib2NvcmVzLWkyYyIsCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmbXlpMmNfZGF0YSwKKwl9LAorCS5udW1fcmVzb3VyY2VzCQk9IEFSUkFZX1NJWkUob2NvcmVzX3Jlc291cmNlcyksCisJLnJlc291cmNlCQk9IG9jb3Jlc19yZXNvdXJjZXMsCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1waWl4NCBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGlpeDQKaW5kZXggYTFjOGY1OC4uOTIxNDc2MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1waWl4NAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBpaXg0CkBAIC02LDYgKzYsOCBAQAogICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBJbnRlbCB3ZWJzaXRlCiAgICogU2VydmVyV29ya3MgT1NCNCwgQ1NCNSwgQ1NCNiBhbmQgSFQtMTAwMCBzb3V0aGJyaWRnZXMKICAgICBEYXRhc2hlZXQ6IE9ubHkgYXZhaWxhYmxlIHZpYSBOREEgZnJvbSBTZXJ2ZXJXb3JrcworICAqIEFUSSBJWFAgc291dGhicmlkZ2VzIElYUDIwMCwgSVhQMzAwLCBJWFA0MDAKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUKICAgKiBTdGFuZGFyZCBNaWNyb3N5c3RlbXMgKFNNU0MpIFNMQzkwRTY2IChWaWN0b3J5NjYpIHNvdXRoYnJpZGdlCiAgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIFNNU0Mgd2Vic2l0ZSBodHRwOi8vd3d3LnNtc2MuY29tCiAKQEAgLTIxLDggKzIzLDYgQEAKICAgRm9yY2libHkgZW5hYmxlIHRoZSBQSUlYNC4gREFOR0VST1VTIQogKiBmb3JjZV9hZGRyOiBpbnQKICAgRm9yY2libHkgZW5hYmxlIHRoZSBQSUlYNCBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4gRVhUUkVNRUxZIERBTkdFUk9VUyEKLSogZml4X2hzdGNmZzogaW50Ci0gIEZpeCBjb25maWcgcmVnaXN0ZXIuIE5lZWRlZCBvbiBzb21lIGJvYXJkcyAoRm9yY2UgQ1BDSTczNSkuCiAKIAogRGVzY3JpcHRpb24KQEAgLTYzLDEwICs2MywzNiBAQAogVGhlIFBJSVgvUElJWDMgZG9lcyBub3QgaW1wbGVtZW50IGFuIFNNQnVzIG9yIEkyQyBidXMsIHNvIHlvdSBjYW4ndCB1c2UKIHRoaXMgZHJpdmVyIG9uIHRob3NlIG1haW5ib2FyZHMuCiAKLVRoZSBTZXJ2ZXJXb3JrcyBTb3V0aGJyaWRnZXMsIHRoZSBJbnRlbCA0NDBNWCwgYW5kIHRoZSBWaWN0b3J5NzY2IGFyZQorVGhlIFNlcnZlcldvcmtzIFNvdXRoYnJpZGdlcywgdGhlIEludGVsIDQ0ME1YLCBhbmQgdGhlIFZpY3Rvcnk2NiBhcmUKIGlkZW50aWNhbCB0byB0aGUgUElJWDQgaW4gSTJDL1NNQnVzIHN1cHBvcnQuCiAKLUEgZmV3IE9TQjQgc291dGhicmlkZ2VzIGFyZSBrbm93biB0byBiZSBtaXNjb25maWd1cmVkIGJ5IHRoZSBCSU9TLiBJbiB0aGlzCi1jYXNlLCB5b3UgaGF2ZSB5b3UgdXNlIHRoZSBmaXhfaHN0Y2ZnIG1vZHVsZSBwYXJhbWV0ZXIuIERvIG5vdCB1c2UgaXQKLXVubGVzcyB5b3Uga25vdyB5b3UgaGF2ZSB0bywgYmVjYXVzZSBpbiBzb21lIGNhc2VzIGl0IGFsc28gYnJlYWtzCi1jb25maWd1cmF0aW9uIG9uIHNvdXRoYnJpZGdlcyB0aGF0IGRvbid0IG5lZWQgaXQuCitJZiB5b3Ugb3duIEZvcmNlIENQQ0k3MzUgbW90aGVyYm9hcmQgb3Igb3RoZXIgT1NCNCBiYXNlZCBzeXN0ZW1zIHlvdSBtYXkgbmVlZAordG8gY2hhbmdlIHRoZSBTTUJ1cyBJbnRlcnJ1cHQgU2VsZWN0IHJlZ2lzdGVyIHNvIHRoZSBTTUJ1cyBjb250cm9sbGVyIHVzZXMKK3RoZSBTTUkgbW9kZS4KKworMSkgVXNlIGxzcGNpIGNvbW1hbmQgYW5kIGxvY2F0ZSB0aGUgUENJIGRldmljZSB3aXRoIHRoZSBTTUJ1cyBjb250cm9sbGVyOgorICAgMDA6MGYuMCBJU0EgYnJpZGdlOiBTZXJ2ZXJXb3JrcyBPU0I0IFNvdXRoIEJyaWRnZSAocmV2IDRmKQorICAgVGhlIGxpbmUgbWF5IHZhcnkgZm9yIGRpZmZlcmVudCBjaGlwc2V0cy4gUGxlYXNlIGNvbnN1bHQgdGhlIGRyaXZlciBzb3VyY2UKKyAgIGZvciBhbGwgcG9zc2libGUgUENJIGlkcyAoYW5kIGxzcGNpIC1uIHRvIG1hdGNoIHRoZW0pLiBMZXRzIGFzc3VtZSB0aGUKKyAgIGRldmljZSBpcyBsb2NhdGVkIGF0IDAwOjBmLjAuCisyKSBOb3cgeW91IGp1c3QgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIGluIDB4RDIgcmVnaXN0ZXIuIEdldCBpdCBmaXJzdCB3aXRoCisgICBjb21tYW5kOiBsc3BjaSAteHh4IC1zIDAwOjBmLjAKKyAgIElmIHRoZSB2YWx1ZSBpcyAweDMgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgaXQgdG8gMHgxCisgICBzZXRwY2kgIC1zIDAwOjBmLjAgZDIuYj0xCisKK1BsZWFzZSBub3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gZG8gdGhhdCBpbiBhbGwgY2FzZXMsIGp1c3Qgd2hlbiB0aGUgU01CdXMgaXMKK25vdCB3b3JraW5nIHByb3Blcmx5LgorCisKK0hhcmR3YXJlLXNwZWNpZmljIGlzc3VlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHdpbGwgcmVmdXNlIHRvIGxvYWQgb24gSUJNIHN5c3RlbXMgd2l0aCBhbiBJbnRlbCBQSUlYNCBTTUJ1cy4KK1NvbWUgb2YgdGhlc2UgbWFjaGluZXMgaGF2ZSBhbiBSRklEIEVFUFJPTSAoMjRSRjA4KSBjb25uZWN0ZWQgdG8gdGhlIFNNQnVzLAord2hpY2ggY2FuIGVhc2lseSBnZXQgY29ycnVwdGVkIGR1ZSB0byBhIHN0YXRlIG1hY2hpbmUgYnVnLiBUaGVzZSBhcmUgbW9zdGx5CitUaGlua3BhZCBsYXB0b3BzLCBidXQgZGVza3RvcCBzeXN0ZW1zIG1heSBhbHNvIGJlIGFmZmVjdGVkLiBXZSBoYXZlIG5vIGxpc3QKK29mIGFsbCBhZmZlY3RlZCBzeXN0ZW1zLCBzbyB0aGUgb25seSBzYWZlIHNvbHV0aW9uIHdhcyB0byBwcmV2ZW50IGFjY2VzcyB0bwordGhlIFNNQnVzIG9uIGFsbCBJQk0gc3lzdGVtcyAoZGV0ZWN0ZWQgdXNpbmcgRE1JIGRhdGEuKQorCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgcmVhZDoKK2h0dHA6Ly93d3cyLmxtLXNlbnNvcnMubnUvfmxtNzgvY3ZzL2xtX3NlbnNvcnMyL1JFQURNRS50aGlua3BhZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL3NjeDIwMF9hY2IgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvc2N4MjAwX2FjYgppbmRleCBmNTBlNjk5Li43YzA3ODgzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvc2N4MjAwX2FjYgorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvc2N4MjAwX2FjYgpAQCAtMiwxNCArMiwzMSBAQAogCiBBdXRob3I6IENocmlzdGVyIFdlaW5pZ2VsIDx3aW5nZWxAbmFuby1zeXN0ZW0uY29tPgogCitUaGUgZHJpdmVyIHN1cGVyc2VkZXMgdGhlIG9sZGVyLCBuZXZlciBtZXJnZWQgZHJpdmVyIG5hbWVkIGkyYy1uc2NhY2IuCisKIE1vZHVsZSBQYXJhbWV0ZXJzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0qIGJhc2U6IGludAorKiBiYXNlOiB1cCB0byA0IGludHMKICAgQmFzZSBhZGRyZXNzZXMgZm9yIHRoZSBBQ0NFU1MuYnVzIGNvbnRyb2xsZXJzIG9uIFNDeDIwMCBhbmQgU0MxMTAwIGRldmljZXMKIAorICBCeSBkZWZhdWx0IHRoZSBkcml2ZXIgdXNlcyB0d28gYmFzZSBhZGRyZXNzZXMgMHg4MjAgYW5kIDB4ODQwLgorICBJZiB5b3Ugd2FudCBvbmx5IG9uZSBiYXNlIGFkZHJlc3MsIHNwZWNpZnkgdGhlIHNlY29uZCBhcyAwIHNvIGFzIHRvCisgIG92ZXJyaWRlIHRoaXMgZGVmYXVsdC4KKwogRGVzY3JpcHRpb24KIC0tLS0tLS0tLS0tCiAKIEVuYWJsZSB0aGUgdXNlIG9mIHRoZSBBQ0NFU1MuYnVzIGNvbnRyb2xsZXIgb24gdGhlIEdlb2RlIFNDeDIwMCBhbmQKIFNDMTEwMCBwcm9jZXNzb3JzIGFuZCB0aGUgQ1M1NTM1IGFuZCBDUzU1MzYgR2VvZGUgY29tcGFuaW9uIGRldmljZXMuCisKK0RldmljZS1zcGVjaWZpYyBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBTQzExMDAgV1JBUCBib2FyZHMgYXJlIGtub3duIHRvIHVzZSBiYXNlIGFkZHJlc3NlcyAweDgxMCBhbmQgMHg4MjAuCitJZiB0aGUgc2N4MjAwX2FjYiBkcml2ZXIgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBhZGQgdGhlIGZvbGxvd2luZworcGFyYW1ldGVyIHRvIHlvdXIgYm9vdCBjb21tYW5kIGxpbmU6CisgIHNjeDIwMF9hY2IuYmFzZT0weDgxMCwweDgyMAorSWYgdGhlIHNjeDIwMF9hY2IgZHJpdmVyIGlzIGJ1aWx0IGFzIGEgbW9kdWxlLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvCit0aGUgZmlsZSAvZXRjL21vZHByb2JlLmNvbmYgaW5zdGVhZDoKKyAgb3B0aW9ucyBzY3gyMDBfYWNiIGJhc2U9MHg4MTAsMHg4MjAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZjlhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmcudHh0CkBAIC0wLDAgKzEsMjA4IEBACisJICAgICAgICAgTUVNT1JZIEFUVFJJQlVURSBBTElBU0lORyBPTiBJQS02NAorCisJCQkgICBCam9ybiBIZWxnYWFzCisJCSAgICAgICA8Ympvcm4uaGVsZ2Fhc0BocC5jb20+CisJCQkgICAgTWF5IDQsIDIwMDYKKworCitNRU1PUlkgQVRUUklCVVRFUworCisgICAgSXRhbml1bSBzdXBwb3J0cyBzZXZlcmFsIGF0dHJpYnV0ZXMgZm9yIHZpcnR1YWwgbWVtb3J5IHJlZmVyZW5jZXMuCisgICAgVGhlIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIHRoZSB2aXJ0dWFsIHRyYW5zbGF0aW9uLCBpLmUuLCBpdCBpcworICAgIGNvbnRhaW5lZCBpbiB0aGUgVExCIGVudHJ5LiAgVGhlIG9uZXMgb2YgbW9zdCBpbnRlcmVzdCB0byB0aGUgTGludXgKKyAgICBrZXJuZWwgYXJlOgorCisJV0IJCVdyaXRlLWJhY2sgKGNhY2hlYWJsZSkKKwlVQwkJVW5jYWNoZWFibGUKKwlXQwkJV3JpdGUtY29hbGVzY2luZworCisgICAgU3lzdGVtIG1lbW9yeSB0eXBpY2FsbHkgdXNlcyB0aGUgV0IgYXR0cmlidXRlLiAgVGhlIFVDIGF0dHJpYnV0ZSBpcworICAgIHVzZWQgZm9yIG1lbW9yeS1tYXBwZWQgSS9PIGRldmljZXMuICBUaGUgV0MgYXR0cmlidXRlIGlzIHVuY2FjaGVhYmxlCisgICAgbGlrZSBVQyBpcywgYnV0IHdyaXRlcyBtYXkgYmUgZGVsYXllZCBhbmQgY29tYmluZWQgdG8gaW5jcmVhc2UKKyAgICBwZXJmb3JtYW5jZSBmb3IgdGhpbmdzIGxpa2UgZnJhbWUgYnVmZmVycy4KKworICAgIFRoZSBJdGFuaXVtIGFyY2hpdGVjdHVyZSByZXF1aXJlcyB0aGF0IHdlIGF2b2lkIGFjY2Vzc2luZyB0aGUgc2FtZQorICAgIHBhZ2Ugd2l0aCBib3RoIGEgY2FjaGVhYmxlIG1hcHBpbmcgYW5kIGFuIHVuY2FjaGVhYmxlIG1hcHBpbmdbMV0uCisKKyAgICBUaGUgZGVzaWduIG9mIHRoZSBjaGlwc2V0IGRldGVybWluZXMgd2hpY2ggYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkCisgICAgb24gd2hpY2ggcmVnaW9ucyBvZiB0aGUgYWRkcmVzcyBzcGFjZS4gIEZvciBleGFtcGxlLCBzb21lIGNoaXBzZXRzCisgICAgc3VwcG9ydCBlaXRoZXIgV0Igb3IgVUMgYWNjZXNzIHRvIG1haW4gbWVtb3J5LCB3aGlsZSBvdGhlcnMgc3VwcG9ydAorICAgIG9ubHkgV0IgYWNjZXNzLgorCitNRU1PUlkgTUFQCisKKyAgICBQbGF0Zm9ybSBmaXJtd2FyZSBkZXNjcmliZXMgdGhlIHBoeXNpY2FsIG1lbW9yeSBtYXAgYW5kIHRoZQorICAgIHN1cHBvcnRlZCBhdHRyaWJ1dGVzIGZvciBlYWNoIHJlZ2lvbi4gIEF0IGJvb3QtdGltZSwgdGhlIGtlcm5lbCB1c2VzCisgICAgdGhlIEVGSSBHZXRNZW1vcnlNYXAoKSBpbnRlcmZhY2UuICBBQ1BJIGNhbiBhbHNvIGRlc2NyaWJlIG1lbW9yeQorICAgIGRldmljZXMgYW5kIHRoZSBhdHRyaWJ1dGVzIHRoZXkgc3VwcG9ydCwgYnV0IExpbnV4L2lhNjQgY3VycmVudGx5CisgICAgZG9lc24ndCB1c2UgdGhpcyBpbmZvcm1hdGlvbi4KKworICAgIFRoZSBrZXJuZWwgdXNlcyB0aGUgZWZpX21lbW1hcCB0YWJsZSByZXR1cm5lZCBmcm9tIEdldE1lbW9yeU1hcCgpIHRvCisgICAgbGVhcm4gdGhlIGF0dHJpYnV0ZXMgc3VwcG9ydGVkIGJ5IGVhY2ggcmVnaW9uIG9mIHBoeXNpY2FsIGFkZHJlc3MKKyAgICBzcGFjZS4gIFVuZm9ydHVuYXRlbHksIHRoaXMgdGFibGUgZG9lcyBub3QgY29tcGxldGVseSBkZXNjcmliZSB0aGUKKyAgICBhZGRyZXNzIHNwYWNlIGJlY2F1c2Ugc29tZSBtYWNoaW5lcyBvbWl0IHNvbWUgb3IgYWxsIG9mIHRoZSBNTUlPCisgICAgcmVnaW9ucyBmcm9tIHRoZSBtYXAuCisKKyAgICBUaGUga2VybmVsIG1haW50YWlucyBhbm90aGVyIHRhYmxlLCBrZXJuX21lbW1hcCwgd2hpY2ggZGVzY3JpYmVzIHRoZQorICAgIG1lbW9yeSBMaW51eCBpcyBhY3R1YWxseSB1c2luZyBhbmQgdGhlIGF0dHJpYnV0ZSBmb3IgZWFjaCByZWdpb24uCisgICAgVGhpcyBjb250YWlucyBvbmx5IHN5c3RlbSBtZW1vcnk7IGl0IGRvZXMgbm90IGNvbnRhaW4gTU1JTyBzcGFjZS4KKworICAgIFRoZSBrZXJuX21lbW1hcCB0YWJsZSB0eXBpY2FsbHkgY29udGFpbnMgb25seSBhIHN1YnNldCBvZiB0aGUgc3lzdGVtCisgICAgbWVtb3J5IGRlc2NyaWJlZCBieSB0aGUgZWZpX21lbW1hcC4gIExpbnV4L2lhNjQgY2FuJ3QgdXNlIGFsbCBtZW1vcnkKKyAgICBpbiB0aGUgc3lzdGVtIGJlY2F1c2Ugb2YgY29uc3RyYWludHMgaW1wb3NlZCBieSB0aGUgaWRlbnRpdHkgbWFwcGluZworICAgIHNjaGVtZS4KKworICAgIFRoZSBlZmlfbWVtbWFwIHRhYmxlIGlzIHByZXNlcnZlZCB1bm1vZGlmaWVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsCisgICAgYm9vdC10aW1lIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIGZvciBrZXhlYy4KKworS0VSTkVMIElERU5USVRZIE1BUFBJTkdTCisKKyAgICBMaW51eC9pYTY0IGlkZW50aXR5IG1hcHBpbmdzIGFyZSBkb25lIHdpdGggbGFyZ2UgcGFnZXMsIGN1cnJlbnRseQorICAgIGVpdGhlciAxNk1CIG9yIDY0TUIsIHJlZmVycmVkIHRvIGFzICJncmFudWxlcy4iICBDYWNoZWFibGUgbWFwcGluZ3MKKyAgICBhcmUgc3BlY3VsYXRpdmVbMl0sIHNvIHRoZSBwcm9jZXNzb3IgY2FuIHJlYWQgYW55IGxvY2F0aW9uIGluIHRoZQorICAgIHBhZ2UgYXQgYW55IHRpbWUsIGluZGVwZW5kZW50IG9mIHRoZSBwcm9ncmFtbWVyJ3MgaW50ZW50aW9ucy4gIFRoaXMKKyAgICBtZWFucyB0aGF0IHRvIGF2b2lkIGF0dHJpYnV0ZSBhbGlhc2luZywgTGludXggY2FuIGNyZWF0ZSBhIGNhY2hlYWJsZQorICAgIGlkZW50aXR5IG1hcHBpbmcgb25seSB3aGVuIHRoZSBlbnRpcmUgZ3JhbnVsZSBzdXBwb3J0cyBjYWNoZWFibGUKKyAgICBhY2Nlc3MuCisKKyAgICBUaGVyZWZvcmUsIGtlcm5fbWVtbWFwIGNvbnRhaW5zIG9ubHkgZnVsbCBncmFudWxlLXNpemVkIHJlZ2lvbnMgdGhhdAorICAgIGNhbiByZWZlcmVuY2VkIHNhZmVseSBieSBhbiBpZGVudGl0eSBtYXBwaW5nLgorCisgICAgVW5jYWNoZWFibGUgbWFwcGluZ3MgYXJlIG5vdCBzcGVjdWxhdGl2ZSwgc28gdGhlIHByb2Nlc3NvciB3aWxsCisgICAgZ2VuZXJhdGUgVUMgYWNjZXNzZXMgb25seSB0byBsb2NhdGlvbnMgZXhwbGljaXRseSByZWZlcmVuY2VkIGJ5CisgICAgc29mdHdhcmUuICBUaGlzIGFsbG93cyBVQyBpZGVudGl0eSBtYXBwaW5ncyB0byBjb3ZlciBncmFudWxlcyB0aGF0CisgICAgYXJlIG9ubHkgcGFydGlhbGx5IHBvcHVsYXRlZCwgb3IgcG9wdWxhdGVkIHdpdGggYSBjb21iaW5hdGlvbiBvZiBVQworICAgIGFuZCBXQiByZWdpb25zLgorCitVU0VSIE1BUFBJTkdTCisKKyAgICBVc2VyIG1hcHBpbmdzIGFyZSB0eXBpY2FsbHkgZG9uZSB3aXRoIDE2SyBvciA2NEsgcGFnZXMuICBUaGUgc21hbGxlcgorICAgIHBhZ2Ugc2l6ZSBhbGxvd3MgbW9yZSBmbGV4aWJpbGl0eSBiZWNhdXNlIG9ubHkgMTZLIG9yIDY0SyBoYXMgdG8gYmUKKyAgICBob21vZ2VuZW91cyB3aXRoIHJlc3BlY3QgdG8gbWVtb3J5IGF0dHJpYnV0ZXMuCisKK1BPVEVOVElBTCBBVFRSSUJVVEUgQUxJQVNJTkcgQ0FTRVMKKworICAgIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdGhlIGtlcm5lbCBjcmVhdGVzIG5ldyBtYXBwaW5nczoKKworICAgIG1tYXAgb2YgL2Rldi9tZW0KKworCVRoaXMgdXNlcyByZW1hcF9wZm5fcmFuZ2UoKSwgd2hpY2ggY3JlYXRlcyB1c2VyIG1hcHBpbmdzLiAgVGhlc2UKKwltYXBwaW5ncyBtYXkgYmUgZWl0aGVyIFdCIG9yIFVDLiAgSWYgdGhlIHJlZ2lvbiBiZWluZyBtYXBwZWQKKwloYXBwZW5zIHRvIGJlIGluIGtlcm5fbWVtbWFwLCBtZWFuaW5nIHRoYXQgaXQgbWF5IGFsc28gYmUgbWFwcGVkCisJYnkgYSBrZXJuZWwgaWRlbnRpdHkgbWFwcGluZywgdGhlIHVzZXIgbWFwcGluZyBtdXN0IHVzZSB0aGUgc2FtZQorCWF0dHJpYnV0ZSBhcyB0aGUga2VybmVsIG1hcHBpbmcuCisKKwlJZiB0aGUgcmVnaW9uIGlzIG5vdCBpbiBrZXJuX21lbW1hcCwgdGhlIHVzZXIgbWFwcGluZyBzaG91bGQgdXNlCisJYW4gYXR0cmlidXRlIHJlcG9ydGVkIGFzIGJlaW5nIHN1cHBvcnRlZCBpbiB0aGUgRUZJIG1lbW9yeSBtYXAuCisKKwlTaW5jZSB0aGUgRUZJIG1lbW9yeSBtYXAgZG9lcyBub3QgZGVzY3JpYmUgTU1JTyBvbiBzb21lCisJbWFjaGluZXMsIHRoaXMgc2hvdWxkIHVzZSBhbiB1bmNhY2hlYWJsZSBtYXBwaW5nIGFzIGEgZmFsbGJhY2suCisKKyAgICBtbWFwIG9mIC9zeXMvY2xhc3MvcGNpX2J1cy8uLi4vbGVnYWN5X21lbQorCisJVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gbW1hcCBvZiAvZGV2L21lbSwgZXhjZXB0IHRoYXQgbGVnYWN5X21lbQorCW9ubHkgYWxsb3dzIG1tYXAgb2YgdGhlIG9uZSBtZWdhYnl0ZSAibGVnYWN5IE1NSU8iIGFyZWEgZm9yIGEKKwlzcGVjaWZpYyBQQ0kgYnVzLiAgVHlwaWNhbGx5IHRoaXMgaXMgdGhlIGZpcnN0IG1lZ2FieXRlIG9mCisJcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSwgYnV0IGl0IG1heSBiZSBkaWZmZXJlbnQgb24gbWFjaGluZXMgd2l0aAorCXNldmVyYWwgVkdBIGRldmljZXMuCisKKwkiWCIgdXNlcyB0aGlzIHRvIGFjY2VzcyBWR0EgZnJhbWUgYnVmZmVycy4gIFVzaW5nIGxlZ2FjeV9tZW0KKwlyYXRoZXIgdGhhbiAvZGV2L21lbSBhbGxvd3MgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIFggdG8gdGFsayB0bworCWRpZmZlcmVudCBWR0EgY2FyZHMuCisKKwlUaGUgL2Rldi9tZW0gbW1hcCBjb25zdHJhaW50cyBhcHBseS4KKworCUhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgZm9yIG1hcHBpbmcgbGVnYWN5IE1NSU8gc3BhY2UsIFdCIGFjY2VzcworCWRvZXMgbm90IG1ha2Ugc2Vuc2UuICBUaGlzIG1hdHRlcnMgb24gbWFjaGluZXMgd2l0aG91dCBsZWdhY3kKKwlWR0Egc3VwcG9ydDogdGhlc2UgbWFjaGluZXMgbWF5IGhhdmUgV0IgbWVtb3J5IGZvciB0aGUgZW50aXJlCisJZmlyc3QgbWVnYWJ5dGUgKG9yIGV2ZW4gdGhlIGVudGlyZSBmaXJzdCBncmFudWxlKS4KKworCU9uIHRoZXNlIG1hY2hpbmVzLCB3ZSBjb3VsZCBtbWFwIGxlZ2FjeV9tZW0gYXMgV0IsIHdoaWNoIHdvdWxkCisJYmUgc2FmZSBpbiB0ZXJtcyBvZiBhdHRyaWJ1dGUgYWxpYXNpbmcsIGJ1dCBYIGhhcyBubyB3YXkgb2YKKwlrbm93aW5nIHRoYXQgaXQgaXMgYWNjZXNzaW5nIHJlZ3VsYXIgbWVtb3J5LCBub3QgYSBmcmFtZSBidWZmZXIsCisJc28gdGhlIGtlcm5lbCBzaG91bGQgZmFpbCB0aGUgbW1hcCByYXRoZXIgdGhhbiBkb2luZyBpdCB3aXRoIFdCLgorCisgICAgcmVhZC93cml0ZSBvZiAvZGV2L21lbQorCisJVGhpcyB1c2VzIGNvcHlfZnJvbV91c2VyKCksIHdoaWNoIGltcGxpY2l0bHkgdXNlcyBhIGtlcm5lbAorCWlkZW50aXR5IG1hcHBpbmcuICBUaGlzIGlzIG9idmlvdXNseSBzYWZlIGZvciB0aGluZ3MgaW4KKwlrZXJuX21lbW1hcC4KKworCVRoZXJlIG1heSBiZSBjb3JuZXIgY2FzZXMgb2YgdGhpbmdzIHRoYXQgYXJlIG5vdCBpbiBrZXJuX21lbW1hcCwKKwlidXQgY291bGQgYmUgYWNjZXNzZWQgdGhpcyB3YXkuICBGb3IgZXhhbXBsZSwgcmVnaXN0ZXJzIGluIE1NSU8KKwlzcGFjZSBhcmUgbm90IGluIGtlcm5fbWVtbWFwLCBidXQgY291bGQgYmUgYWNjZXNzZWQgd2l0aCBhIFVDCisJbWFwcGluZy4gIFRoaXMgd291bGQgbm90IGNhdXNlIGF0dHJpYnV0ZSBhbGlhc2luZy4gIEJ1dAorCXJlZ2lzdGVycyB0eXBpY2FsbHkgY2FuIGJlIGFjY2Vzc2VkIG9ubHkgd2l0aCBmb3VyLWJ5dGUgb3IKKwllaWdodC1ieXRlIGFjY2Vzc2VzLCBhbmQgdGhlIGNvcHlfZnJvbV91c2VyKCkgcGF0aCBkb2Vzbid0IGFsbG93CisJYW55IGNvbnRyb2wgb3ZlciB0aGUgYWNjZXNzIHNpemUsIHNvIHRoaXMgd291bGQgYmUgZGFuZ2Vyb3VzLgorCisgICAgaW9yZW1hcCgpCisKKwlUaGlzIHJldHVybnMgYSBrZXJuZWwgaWRlbnRpdHkgbWFwcGluZyBmb3IgdXNlIGluc2lkZSB0aGUKKwlrZXJuZWwuCisKKwlJZiB0aGUgcmVnaW9uIGlzIGluIGtlcm5fbWVtbWFwLCB3ZSBzaG91bGQgdXNlIHRoZSBhdHRyaWJ1dGUKKwlzcGVjaWZpZWQgdGhlcmUuICBPdGhlcndpc2UsIGlmIHRoZSBFRkkgbWVtb3J5IG1hcCByZXBvcnRzIHRoYXQKKwl0aGUgZW50aXJlIGdyYW51bGUgc3VwcG9ydHMgV0IsIHdlIHNob3VsZCB1c2UgdGhhdCAoZ3JhbnVsZXMKKwl0aGF0IGFyZSBwYXJ0aWFsbHkgcmVzZXJ2ZWQgb3Igb2NjdXBpZWQgYnkgZmlybXdhcmUgZG8gbm90IGFwcGVhcgorCWluIGtlcm5fbWVtbWFwKS4gIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHVzZSBhIFVDIG1hcHBpbmcuCisKK1BBU1QgUFJPQkxFTSBDQVNFUworCisgICAgbW1hcCBvZiB2YXJpb3VzIE1NSU8gcmVnaW9ucyBmcm9tIC9kZXYvbWVtIGJ5ICJYIiBvbiBJbnRlbCBwbGF0Zm9ybXMKKworICAgICAgVGhlIEVGSSBtZW1vcnkgbWFwIG1heSBub3QgcmVwb3J0IHRoZXNlIE1NSU8gcmVnaW9ucy4KKworICAgICAgVGhlc2UgbXVzdCBiZSBhbGxvd2VkIHNvIHRoYXQgWCB3aWxsIHdvcmsuICBUaGlzIG1lYW5zIHRoYXQKKyAgICAgIHdoZW4gdGhlIEVGSSBtZW1vcnkgbWFwIGlzIGluY29tcGxldGUsIGV2ZXJ5IC9kZXYvbWVtIG1tYXAgbXVzdAorICAgICAgc3VjY2VlZC4gIEl0IG1heSBjcmVhdGUgZWl0aGVyIFdCIG9yIFVDIHVzZXIgbWFwcGluZ3MsIGRlcGVuZGluZworICAgICAgb24gd2hldGhlciB0aGUgcmVnaW9uIGlzIGluIGtlcm5fbWVtbWFwIG9yIHRoZSBFRkkgbWVtb3J5IG1hcC4KKworICAgIG1tYXAgb2YgMHgwLTB4QTAwMDAgL2Rldi9tZW0gYnkgImh3aW5mbyIgb24gSFAgc3gxMDAwIHdpdGggVkdBIGVuYWJsZWQKKworICAgICAgU2VlIGh0dHBzOi8vYnVnemlsbGEubm92ZWxsLmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTQwODU4LgorCisgICAgICBUaGUgRUZJIG1lbW9yeSBtYXAgcmVwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICAgICAgIDB4MDAwMDAtMHg5RkZGRiBXQiBvbmx5CisgICAgICAgIDB4QTAwMDAtMHhCRkZGRiBVQyBvbmx5IChWR0EgZnJhbWUgYnVmZmVyKQorICAgICAgICAweEMwMDAwLTB4RkZGRkYgV0Igb25seQorCisgICAgICBUaGlzIG1tYXAgaXMgZG9uZSB3aXRoIHVzZXIgcGFnZXMsIG5vdCBrZXJuZWwgaWRlbnRpdHkgbWFwcGluZ3MsCisgICAgICBzbyBpdCBpcyBzYWZlIHRvIHVzZSBXQiBtYXBwaW5ncy4KKworICAgICAgVGhlIGtlcm5lbCBWR0EgZHJpdmVyIG1heSBpb3JlbWFwIHRoZSBWR0EgZnJhbWUgYnVmZmVyIGF0IDB4QTAwMDAsCisgICAgICB3aGljaCB3aWxsIHVzZSBhIGdyYW51bGUtc2l6ZWQgVUMgbWFwcGluZyBjb3ZlcmluZyAwLTB4RkZGRkYuICBUaGlzCisgICAgICBncmFudWxlIGNvdmVycyBzb21lIFdCLW9ubHkgbWVtb3J5LCBidXQgc2luY2UgVUMgaXMgbm9uLXNwZWN1bGF0aXZlLAorICAgICAgdGhlIHByb2Nlc3NvciB3aWxsIG5ldmVyIGdlbmVyYXRlIGFuIHVuY2FjaGVhYmxlIHJlZmVyZW5jZSB0byB0aGUKKyAgICAgIFdCLW9ubHkgYXJlYXMgdW5sZXNzIHRoZSBkcml2ZXIgZXhwbGljaXRseSB0b3VjaGVzIHRoZW0uCisKKyAgICBtbWFwIG9mIDB4MC0weEZGRkZGIGxlZ2FjeV9tZW0gYnkgIlgiCisKKyAgICAgIElmIHRoZSBFRkkgbWVtb3J5IG1hcCByZXBvcnRzIHRoaXMgZW50aXJlIHJhbmdlIGFzIFdCLCB0aGVyZQorICAgICAgaXMgbm8gVkdBIE1NSU8gaG9sZSwgYW5kIHRoZSBtbWFwIHNob3VsZCBmYWlsIG9yIGJlIGRvbmUgd2l0aAorICAgICAgYSBXQiBtYXBwaW5nLgorCisgICAgICBUaGVyZSdzIG5vIGVhc3kgd2F5IGZvciBYIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSAweEEwMDAwLTB4QkZGRkYKKyAgICAgIHJlZ2lvbiBpcyBhIGZyYW1lIGJ1ZmZlciBvciBqdXN0IG1lbW9yeSwgc28gSSB0aGluayBpdCdzIGJlc3QgdG8KKyAgICAgIGp1c3QgZmFpbCB0aGlzIG1tYXAgcmVxdWVzdCByYXRoZXIgdGhhbiB1c2luZyBhIFdCIG1hcHBpbmcuICBBcworICAgICAgZmFyIGFzIEkga25vdywgdGhlcmUncyBubyBuZWVkIHRvIG1hcCBsZWdhY3lfbWVtIHdpdGggV0IKKyAgICAgIG1hcHBpbmdzLgorCisgICAgICBPdGhlcndpc2UsIGEgVUMgbWFwcGluZyBvZiB0aGUgZW50aXJlIHJlZ2lvbiBpcyBwcm9iYWJseSBzYWZlLgorICAgICAgVGhlIFZHQSBob2xlIG1lYW5zIHRoZSByZWdpb24gd2lsbCBub3QgYmUgaW4ga2Vybl9tZW1tYXAuICBUaGUKKyAgICAgIEhQIHN4MTAwMCBjaGlwc2V0IGRvZXNuJ3Qgc3VwcG9ydCBVQyBhY2Nlc3MgdG8gdGhlIG1lbW9yeSBzdXJyb3VuZGluZworICAgICAgdGhlIFZHQSBob2xlLCBidXQgWCBkb2Vzbid0IG5lZWQgdGhhdCBhcmVhIGFueXdheSBhbmQgc2hvdWxkIG5vdAorICAgICAgcmVmZXJlbmNlIGl0LgorCisgICAgbW1hcCBvZiAweEEwMDAwLTB4QkZGRkYgbGVnYWN5X21lbSBieSAiWCIgb24gSFAgc3gxMDAwIHdpdGggVkdBIGRpc2FibGVkCisKKyAgICAgIFRoZSBFRkkgbWVtb3J5IG1hcCByZXBvcnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyAgICAgICAgMHgwMDAwMC0weEZGRkZGIFdCIG9ubHkgKG5vIFZHQSBNTUlPIGhvbGUpCisKKyAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugb2YgdGhlIHByZXZpb3VzIGNhc2UsIGFuZCB0aGUgbW1hcCBzaG91bGQKKyAgICAgIGZhaWwgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKworTk9URVMKKworICAgIFsxXSBTRE0gcmV2IDIuMiwgdm9sIDIsIHNlYyA0LjQuMS4KKyAgICBbMl0gU0RNIHJldiAyLjIsIHZvbCAyLCBzZWMgNC40LjYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lvY3RsLW51bWJlci50eHQgYi9Eb2N1bWVudGF0aW9uL2lvY3RsLW51bWJlci50eHQKaW5kZXggMTcxYTQ0ZS4uMTU0MzgwMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pb2N0bC1udW1iZXIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaW9jdGwtbnVtYmVyLnR4dApAQCAtODUsNyArODUsOSBAQAogCQkJCQk8bWFpbHRvOm1hYXNzZW5AdW5pLWZyZWlidXJnLmRlPgogJ0MnCWFsbAlsaW51eC9zb3VuZGNhcmQuaAogJ0QnCWFsbAlhc20tczM5MC9kYXNkLmgKKydFJwlhbGwJbGludXgvaW5wdXQuaAogJ0YnCWFsbAlsaW51eC9mYi5oCisnSCcJYWxsCWxpbnV4L2hpZGRldi5oCiAnSScJYWxsCWxpbnV4L2lzZG4uaAogJ0onCTAwLTFGCWRyaXZlcnMvc2NzaS9nZHRoX2lvY3RsLmgKICdLJwlhbGwJbGludXgva2QuaApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5naWdhc2V0IGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5naWdhc2V0CmluZGV4IDg1YTY0ZGUuLmZhMGQ0Y2MgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuZ2lnYXNldAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmdpZ2FzZXQKQEAgLTEyNCw3ICsxMjQsOCBAQAogCiAgICAgIFlvdSBjYW4gdXNlIHNvbWUgY29uZmlndXJhdGlvbiB0b29sIG9mIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGNvbmZpZ3VyZSB0aGlzCiAgICAgICJtb2RlbSIgb3IgY29uZmlndXJlIHBwcGQvd3ZkaWFsIG1hbnVhbGx5LiBUaGVyZSBhcmUgc29tZSBleGFtcGxlIHBwcAotICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBjaGF0IHNjcmlwdHMgaW4gdGhlIGdpZ2FzZXQtVkVSU0lPTi9wcHAgZGlyZWN0b3J5LgorICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBjaGF0IHNjcmlwdHMgaW4gdGhlIGdpZ2FzZXQtVkVSU0lPTi9wcHAgZGlyZWN0b3J5CisgICAgIGluIHRoZSBkcml2ZXIgcGFja2FnZXMgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dpZ2FzZXQzMDd4Ly4KICAgICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgVVNCIGRyaXZlcnMgYXJlIG5vdCBhYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlCiAgICAgIGNvbnRyb2wgbGluZXMgKHRoZSBNMTA1IGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB0byB1c2Ugc29tZSB1bmRvY3VtZW50ZWQKICAgICAgY29udHJvbCByZXF1ZXN0cywgaWYgeW91IHJlYWxseSBuZWVkIHRoZSBjb250cm9sIGxpbmVzLCB0aG91Z2gpLiBUaGlzIG1lYW5zCkBAIC0xNjQsOCArMTY1LDggQEAKIAogICAgICBJZiB5b3Ugd2FudCBib3RoIG9mIHRoZXNlIGF0IG9uY2UsIHlvdSBhcmUgb3V0IG9mIGx1Y2suCiAKLSAgICAgWW91IGNhbiBhbHNvIHVzZSAvc3lzL21vZHVsZS88bmFtZT4vcGFyYW1ldGVycy9jaWRtb2RlIGZvciBjaGFuZ2luZwotICAgICB0aGUgQ0lEIG1vZGUgc2V0dGluZyAoPG5hbWU+IGlzIHVzYl9naWdhc2V0IG9yIGJhc19naWdhc2V0KS4KKyAgICAgWW91IGNhbiBhbHNvIHVzZSAvc3lzL2NsYXNzL3R0eS90dHlHeHkvY2lkbW9kZSBmb3IgY2hhbmdpbmcgdGhlIENJRCBtb2RlCisgICAgIHNldHRpbmcgKHR0eUd4eSBpcyB0dHlHVTAgb3IgdHR5R0IwKS4KIAogCiAzLiAgIFRyb3VibGVzaG9vdGluZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAppbmRleCBhOWQzYTE3Li5iY2E2ZjM4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dApAQCAtMTQ3LDYgKzE0Nyw5IEBACiAJYWNwaV9pcnFfaXNhPQlbSFcsQUNQSV0gSWYgaXJxX2JhbGFuY2UsIG1hcmsgbGlzdGVkIElSUXMgdXNlZCBieSBJU0EKIAkJCUZvcm1hdDogPGlycT4sPGlycT4uLi4KIAorCWFjcGlfb3NfbmFtZT0JW0hXLEFDUEldIFRlbGwgQUNQSSBCSU9TIHRoZSBuYW1lIG9mIHRoZSBPUworCQkJRm9ybWF0OiBUbyBzcG9vZiBhcyBXaW5kb3dzIDk4OiA9Ik1pY3Jvc29mdCBXaW5kb3dzIgorCiAJYWNwaV9vc2k9CVtIVyxBQ1BJXSBlbXB0eSBwYXJhbSBkaXNhYmxlcyBfT1NJCiAKIAlhY3BpX3NlcmlhbGl6ZQlbSFcsQUNQSV0gZm9yY2Ugc2VyaWFsaXphdGlvbiBvZiBBTUwgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXlzLnR4dCBiL0RvY3VtZW50YXRpb24va2V5cy50eHQKaW5kZXggYWFhMDFiMC4uM2JiZTE1NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rZXlzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tleXMudHh0CkBAIC0xOSw2ICsxOSw3IEBACiAJLSBLZXkgb3ZlcnZpZXcKIAktIEtleSBzZXJ2aWNlIG92ZXJ2aWV3CiAJLSBLZXkgYWNjZXNzIHBlcm1pc3Npb25zCisJLSBTRUxpbnV4IHN1cHBvcnQKIAktIE5ldyBwcm9jZnMgZmlsZXMKIAktIFVzZXJzcGFjZSBzeXN0ZW0gY2FsbCBpbnRlcmZhY2UKIAktIEtlcm5lbCBzZXJ2aWNlcwpAQCAtMjMyLDYgKzIzMywzNCBAQAogdGhlIGtleSBvciBoYXZpbmcgdGhlIHN5c2FkbWluIGNhcGFiaWxpdHkgaXMgc3VmZmljaWVudC4KIAogCis9PT09PT09PT09PT09PT0KK1NFTElOVVggU1VQUE9SVAorPT09PT09PT09PT09PT09CisKK1RoZSBzZWN1cml0eSBjbGFzcyAia2V5IiBoYXMgYmVlbiBhZGRlZCB0byBTRUxpbnV4IHNvIHRoYXQgbWFuZGF0b3J5IGFjY2VzcworY29udHJvbHMgY2FuIGJlIGFwcGxpZWQgdG8ga2V5cyBjcmVhdGVkIHdpdGhpbiB2YXJpb3VzIGNvbnRleHRzLiAgVGhpcyBzdXBwb3J0CitpcyBwcmVsaW1pbmFyeSwgYW5kIGlzIGxpa2VseSB0byBjaGFuZ2UgcXVpdGUgc2lnbmlmaWNhbnRseSBpbiB0aGUgbmVhciBmdXR1cmUuCitDdXJyZW50bHksIGFsbCBvZiB0aGUgYmFzaWMgcGVybWlzc2lvbnMgZXhwbGFpbmVkIGFib3ZlIGFyZSBwcm92aWRlZCBpbiBTRUxpbnV4CithcyB3ZWxsOyBTRSBMaW51eCBpcyBzaW1wbHkgaW52b2tlZCBhZnRlciBhbGwgYmFzaWMgcGVybWlzc2lvbiBjaGVja3MgaGF2ZSBiZWVuCitwZXJmb3JtZWQuCisKK0VhY2gga2V5IGlzIGxhYmVsZWQgd2l0aCB0aGUgc2FtZSBjb250ZXh0IGFzIHRoZSB0YXNrIHRvIHdoaWNoIGl0IGJlbG9uZ3MuCitUeXBpY2FsbHksIHRoaXMgaXMgdGhlIHNhbWUgdGFzayB0aGF0IHdhcyBydW5uaW5nIHdoZW4gdGhlIGtleSB3YXMgY3JlYXRlZC4KK1RoZSBkZWZhdWx0IGtleXJpbmdzIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBidXQgaW4gYSB3YXkgdGhhdCBpcyB2ZXJ5CitpbnR1aXRpdmU6CisKKyAoKikgVGhlIHVzZXIgYW5kIHVzZXIgc2Vzc2lvbiBrZXlyaW5ncyB0aGF0IGFyZSBjcmVhdGVkIHdoZW4gdGhlIHVzZXIgbG9ncyBpbgorICAgICBhcmUgY3VycmVudGx5IGxhYmVsZWQgd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgbG9naW4gbWFuYWdlci4KKworICgqKSBUaGUga2V5cmluZ3MgYXNzb2NpYXRlZCB3aXRoIG5ldyB0aHJlYWRzIGFyZSBlYWNoIGxhYmVsZWQgd2l0aCB0aGUgY29udGV4dAorICAgICBvZiB0aGVpciBhc3NvY2lhdGVkIHRocmVhZCwgYW5kIGJvdGggc2Vzc2lvbiBhbmQgcHJvY2VzcyBrZXlyaW5ncyBhcmUKKyAgICAgaGFuZGxlZCBzaW1pbGFybHkuCisKK05vdGUsIGhvd2V2ZXIsIHRoYXQgdGhlIGRlZmF1bHQga2V5cmluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSByb290IHVzZXIgYXJlCitsYWJlbGVkIHdpdGggdGhlIGRlZmF1bHQga2VybmVsIGNvbnRleHQsIHNpbmNlIHRoZXkgYXJlIGNyZWF0ZWQgZWFybHkgaW4gdGhlCitib290IHByb2Nlc3MsIGJlZm9yZSByb290IGhhcyBhIGNoYW5jZSB0byBsb2cgaW4uCisKKwogPT09PT09PT09PT09PT09PQogTkVXIFBST0NGUyBGSUxFUwogPT09PT09PT09PT09PT09PQpAQCAtOTM1LDYgKzk2NCwxNiBAQAogICAgICBJdCBpcyBub3Qgc2FmZSB0byBzbGVlcCBpbiB0aGlzIG1ldGhvZDsgdGhlIGNhbGxlciBtYXkgaG9sZCBzcGlubG9ja3MuCiAKIAorICgqKSB2b2lkICgqcmV2b2tlKShzdHJ1Y3Qga2V5ICprZXkpOworCisgICAgIFRoaXMgbWV0aG9kIGlzIG9wdGlvbmFsLiAgSXQgaXMgY2FsbGVkIHRvIGRpc2NhcmQgcGFydCBvZiB0aGUgcGF5bG9hZAorICAgICBkYXRhIHVwb24gYSBrZXkgYmVpbmcgcmV2b2tlZC4gIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRoZSBrZXkgc2VtYXBob3JlCisgICAgIHdyaXRlLWxvY2tlZC4KKworICAgICBJdCBpcyBzYWZlIHRvIHNsZWVwIGluIHRoaXMgbWV0aG9kLCB0aG91Z2ggY2FyZSBzaG91bGQgYmUgdGFrZW4gdG8gYXZvaWQKKyAgICAgYSBkZWFkbG9jayBhZ2FpbnN0IHRoZSBrZXkgc2VtYXBob3JlLgorCisKICAoKikgdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBrZXkgKmtleSk7CiAKICAgICAgVGhpcyBtZXRob2QgaXMgb3B0aW9uYWwuIEl0IGlzIGNhbGxlZCB0byBkaXNjYXJkIHRoZSBwYXlsb2FkIGRhdGEgb24gYSBrZXkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90dW50YXAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3R1bnRhcC50eHQKaW5kZXggNzY3NTBmYi4uODM5Y2JiNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3R1bnRhcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3R1bnRhcC50eHQKQEAgLTM5LDEwICszOSwxMyBAQAogICAgICBta25vZCAvZGV2L25ldC90dW4gYyAxMCAyMDAKICAgCiAgIFNldCBwZXJtaXNzaW9uczoKLSAgICAgZS5nLiBjaG1vZCAwNzAwIC9kZXYvbmV0L3R1bgotICAgICBpZiB5b3Ugd2FudCB0aGUgZGV2aWNlIG9ubHkgYWNjZXNzaWJsZSBieSByb290LiBHaXZpbmcgcmVndWxhciB1c2VycyB0aGUKLSAgICAgcmlnaHQgdG8gYXNzaWduIG5ldHdvcmsgZGV2aWNlcyBpcyBOT1QgYSBnb29kIGlkZWEuIFVzZXJzIGNvdWxkIGFzc2lnbgotICAgICBib2d1cyBuZXR3b3JrIGludGVyZmFjZXMgdG8gdHJpY2sgZmlyZXdhbGxzIG9yIGFkbWluaXN0cmF0b3JzLgorICAgICBlLmcuIGNobW9kIDA2NjYgL2Rldi9uZXQvdHVuCisgICAgIFRoZXJlJ3Mgbm8gaGFybSBpbiBhbGxvd2luZyB0aGUgZGV2aWNlIHRvIGJlIGFjY2Vzc2libGUgYnkgbm9uLXJvb3QgdXNlcnMsCisgICAgIHNpbmNlIENBUF9ORVRfQURNSU4gaXMgcmVxdWlyZWQgZm9yIGNyZWF0aW5nIG5ldHdvcmsgZGV2aWNlcyBvciBmb3IgCisgICAgIGNvbm5lY3RpbmcgdG8gbmV0d29yayBkZXZpY2VzIHdoaWNoIGFyZW4ndCBvd25lZCBieSB0aGUgdXNlciBpbiBxdWVzdGlvbi4KKyAgICAgSWYgeW91IHdhbnQgdG8gY3JlYXRlIHBlcnNpc3RlbnQgZGV2aWNlcyBhbmQgZ2l2ZSBvd25lcnNoaXAgb2YgdGhlbSB0byAKKyAgICAgdW5wcml2aWxlZ2VkIHVzZXJzLCB0aGVuIHlvdSBuZWVkIHRoZSAvZGV2L25ldC90dW4gZGV2aWNlIHRvIGJlIHVzYWJsZSBieQorICAgICB0aG9zZSB1c2Vycy4KIAogICBEcml2ZXIgbW9kdWxlIGF1dG9sb2FkaW5nCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGNpLnR4dCBiL0RvY3VtZW50YXRpb24vcGNpLnR4dAppbmRleCA2NmJiYmYxLi4zMjQyZTVjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3BjaS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wY2kudHh0CkBAIC0yMTMsOSArMjEzLDE3IEBACiAKICAgIFNlZSBEb2N1bWVudGF0aW9uL0lPLW1hcHBpbmcudHh0IGZvciBob3cgdG8gYWNjZXNzIGRldmljZSBtZW1vcnkuCiAKLSAgIFlvdSBzdGlsbCBuZWVkIHRvIGNhbGwgcmVxdWVzdF9yZWdpb24oKSBmb3IgSS9PIHJlZ2lvbnMgYW5kCi1yZXF1ZXN0X21lbV9yZWdpb24oKSBmb3IgbWVtb3J5IHJlZ2lvbnMgdG8gbWFrZSBzdXJlIG5vYm9keSBlbHNlIGlzIHVzaW5nIHRoZQotc2FtZSBkZXZpY2UuCisgICBUaGUgZGV2aWNlIGRyaXZlciBuZWVkcyB0byBjYWxsIHBjaV9yZXF1ZXN0X3JlZ2lvbigpIHRvIG1ha2Ugc3VyZQorbm8gb3RoZXIgZGV2aWNlIGlzIGFscmVhZHkgdXNpbmcgdGhlIHNhbWUgcmVzb3VyY2UuIFRoZSBkcml2ZXIgaXMgZXhwZWN0ZWQKK3RvIGRldGVybWluZSBNTUlPIGFuZCBJTyBQb3J0IHJlc291cmNlIGF2YWlsYWJpbGl0eSBfYmVmb3JlXyBjYWxsaW5nCitwY2lfZW5hYmxlX2RldmljZSgpLiAgQ29udmVyc2VseSwgZHJpdmVycyBzaG91bGQgY2FsbCBwY2lfcmVsZWFzZV9yZWdpb24oKQorX2FmdGVyXyBjYWxsaW5nIHBjaV9kaXNhYmxlX2RldmljZSgpLiBUaGUgaWRlYSBpcyB0byBwcmV2ZW50IHR3byBkZXZpY2VzCitjb2xsaWRpbmcgb24gdGhlIHNhbWUgYWRkcmVzcyByYW5nZS4KKworR2VuZXJpYyBmbGF2b3JzIG9mIHBjaV9yZXF1ZXN0X3JlZ2lvbigpIGFyZSByZXF1ZXN0X21lbV9yZWdpb24oKQorKGZvciBNTUlPIHJhbmdlcykgYW5kIHJlcXVlc3RfcmVnaW9uKCkgKGZvciBJTyBQb3J0IHJhbmdlcykuCitVc2UgdGhlc2UgZm9yIGFkZHJlc3MgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBkZXNjcmliZWQgYnkgIm5vcm1hbCIgUENJCitpbnRlcmZhY2VzIChlLmcuIEJBUikuCiAKICAgIEFsbCBpbnRlcnJ1cHQgaGFuZGxlcnMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCBTQV9TSElSUSBhbmQgdXNlIHRoZSBkZXZpZAogdG8gbWFwIElSUXMgdG8gZGV2aWNlcyAocmVtZW1iZXIgdGhhdCBhbGwgUENJIGludGVycnVwdHMgYXJlIHNoYXJlZCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dAppbmRleCBmOTg3YWZlLi5mYmExZTA1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQKQEAgLTEzNSw5NiArMTM1LDYgQEAKIAogRlJFRVpFIC0tIHN0b3AgRE1BIGFuZCBpbnRlcnJ1cHRzLCBhbmQgYmUgcHJlcGFyZWQgdG8gcmVpbml0IEhXIGZyb20KIHNjcmF0Y2guIFRoYXQgcHJvYmFibHkgbWVhbnMgc3RvcCBhY2NlcHRpbmcgdXBzdHJlYW0gcmVxdWVzdHMsIHRoZQotYWN0dWFsIHBvbGljeSBvZiB3aGF0IHRvIGRvIHdpdGggdGhlbSBiZWVpbmcgc3BlY2lmaWMgdG8gYSBnaXZlbgotZHJpdmVyLiBJdCdzIGFjY2VwdGFibGUgZm9yIGEgbmV0d29yayBkcml2ZXIgdG8ganVzdCBkcm9wIHBhY2tldHMKLXdoaWxlIGEgYmxvY2sgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIGJsb2NrIHRoZSBxdWV1ZSBzbyBubyByZXF1ZXN0IGlzCi1sb3N0LiAoVXNlIElERSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBkbyB0aGF0KS4gRlJFRVpFIHJlcXVpcmVzIG5vCi1wb3dlciBzdGF0ZSBjaGFuZ2UsIGFuZCBpdCdzIGV4cGVjdGVkIGZvciBkcml2ZXJzIHRvIGJlIGFibGUgdG8KLXF1aWNrbHkgdHJhbnNpdGlvbiBiYWNrIHRvIG9wZXJhdGluZyBzdGF0ZS4KLQotU1VTUEVORCAtLSBsaWtlIEZSRUVaRSwgYnV0IGFsc28gcHV0IGhhcmR3YXJlIGludG8gbG93LXBvd2VyIHN0YXRlLiBJZgotdGhlcmUncyBuZWVkIHRvIGRpc3Rpbmd1aXNoIHNldmVyYWwgbGV2ZWxzIG9mIHNsZWVwLCBhZGRpdGlvbmFsIGZsYWcKLWlzIHByb2JhYmx5IGJlc3Qgd2F5IHRvIGRvIHRoYXQuCi0KLVRyYW5zaXRpb25zIGFyZSBvbmx5IGZyb20gYSByZXN1bWVkIHN0YXRlIHRvIGEgc3VzcGVuZGVkIHN0YXRlLCBuZXZlcgotYmV0d2VlbiAyIHN1c3BlbmRlZCBzdGF0ZXMuIChPTiAtPiBGUkVFWkUgb3IgT04gLT4gU1VTUEVORCBjYW4gaGFwcGVuLAotRlJFRVpFIC0+IFNVU1BFTkQgb3IgU1VTUEVORCAtPiBGUkVFWkUgY2FuIG5vdCkuCi0KLUFsbCBldmVudHMgYXJlOgotCi1bTk9URSBOT1RFIE5PVEU6IElmIHlvdSBhcmUgZHJpdmVyIGF1dGhvciwgeW91IHNob3VsZCBub3QgY2FyZTsgeW91Ci1zaG91bGQgb25seSBsb29rIGF0IGV2ZW50LCBhbmQgaWdub3JlIGZsYWdzLl0KLQotI1ByZXBhcmUgZm9yIHN1c3BlbmQgLS0gdXNlcmxhbmQgaXMgc3RpbGwgcnVubmluZyBidXQgd2UgYXJlIGdvaW5nIHRvCi0jZW50ZXIgc3VzcGVuZCBzdGF0ZS4gVGhpcyBnaXZlcyBkcml2ZXJzIGNoYW5jZSB0byBsb2FkIGZpcm13YXJlIGZyb20KLSNkaXNrIGFuZCBzdG9yZSBpdCBpbiBtZW1vcnksIG9yIGRvIG90aGVyIGFjdGl2aXRpZXMgdGFodCByZXF1aXJlCi0jb3BlcmF0aW5nIHVzZXJsYW5kLCBhYmlsaXR5IHRvIGttYWxsb2MgR0ZQX0tFUk5FTCwgZXRjLi4uIEFsbCBvZiB0aGVzZQotI2FyZSBmb3JiaWRlbiBvbmNlIHRoZSBzdXNwZW5kIGRhbmNlIGlzIHN0YXJ0ZWQuLiBldmVudCA9IE9OLCBmbGFncyA9Ci0jUFJFUEFSRV9UT19TVVNQRU5ECi0KLUFwbSBzdGFuZGJ5IC0tIHByZXBhcmUgZm9yIEFQTSBldmVudC4gUXVpZXNjZSBkZXZpY2VzIHRvIG1ha2UgbGlmZQotZWFzaWVyIGZvciBBUE0gQklPUy4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gQVBNX1NUQU5EQlkKLQotQXBtIHN1c3BlbmQgLS0gc2FtZSBhcyBBUE1fU1RBTkRCWSwgYnV0IGl0IHdlIHNob3VsZCBwcm9iYWJseSBhdm9pZAotc3Bpbm5pbmcgZG93biBkaXNrcy4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gQVBNX1NVU1BFTkQKLQotU3lzdGVtIGhhbHQsIHJlYm9vdCAtLSBxdWllc2NlIGRldmljZXMgdG8gbWFrZSBsaWZlIGVhc2llciBmb3IgQklPUy4gZXZlbnQKLT0gRlJFRVpFLCBmbGFncyA9IFNZU1RFTV9IQUxUIG9yIFNZU1RFTV9SRUJPT1QKLQotU3lzdGVtIHNodXRkb3duIC0tIGF0IGxlYXN0IGRpc2tzIG5lZWQgdG8gYmUgc3B1biBkb3duLCBvciBkYXRhIG1heSBiZQotbG9zdC4gUXVpZXNjZSBkZXZpY2VzLCBqdXN0IHRvIG1ha2UgbGlmZSBlYXNpZXIgZm9yIEJJT1MuIGV2ZW50ID0KLUZSRUVaRSwgZmxhZ3MgPSBTWVNURU1fU0hVVERPV04KLQotS2V4ZWMgICAgLS0gdHVybiBvZmYgRE1BcyBhbmQgcHV0IGhhcmR3YXJlIGludG8gc29tZSBzdGF0ZSB3aGVyZSBuZXcKLWtlcm5lbCBjYW4gdGFrZSBvdmVyLiBldmVudCA9IEZSRUVaRSwgZmxhZ3MgPSBLRVhFQwotCi1Qb3dlcmRvd24gYXQgZW5kIG9mIHN3c3VzcCAtLSB2ZXJ5IHNpbWlsYXIgdG8gU1lTVEVNX1NIVVRET1dOLCBleGNlcHQgd2FrZQotbWF5IG5lZWQgdG8gYmUgZW5hYmxlZCBvbiBzb21lIGRldmljZXMuIFRoaXMgYWN0dWFsbHkgaGFzIGF0IGxlYXN0IDMKLXN1YnR5cGVzLCBzeXN0ZW0gY2FuIHJlYm9vdCwgZW50ZXIgUzQgYW5kIGVudGVyIFM1IGF0IHRoZSBlbmQgb2YKLXN3c3VzcC4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gU1dTVVNQIGFuZCBvbmUgb2YgU1lTVEVNX1JFQk9PVCwKLVNZU1RFTV9TSFVURE9XTiwgU1lTVEVNX1M0Ci0KLVN1c3BlbmQgdG8gcmFtICAtLSBwdXQgZGV2aWNlcyBpbnRvIGxvdyBwb3dlciBzdGF0ZS4gZXZlbnQgPSBTVVNQRU5ELAotZmxhZ3MgPSBTVVNQRU5EX1RPX1JBTQotCi1GcmVlemUgZm9yIHN3c3VzcCBzbmFwc2hvdCAtLSBzdG9wIERNQSBhbmQgaW50ZXJydXB0cy4gTm8gbmVlZCB0byBwdXQKLWRldmljZXMgaW50byBsb3cgcG93ZXIgbW9kZSwgYnV0IHlvdSBtdXN0IGJlIGFibGUgdG8gcmVpbml0aWFsaXplCi1kZXZpY2UgZnJvbSBzY3JhdGNoIGluIHJlc3VtZSBtZXRob2QuIFRoaXMgaGFzIHR3byBmbGF2b3JzLCBpdHMgZG9uZQotb25jZSBvbiBzdXNwZW5kaW5nIGtlcm5lbCwgb25jZSBvbiByZXN1bWluZyBrZXJuZWwuIGV2ZW50ID0gRlJFRVpFLAotZmxhZ3MgPSBEVVJJTkdfU1VTUEVORCBvciBEVVJJTkdfUkVTVU1FCi0KLURldmljZSBkZXRhY2ggcmVxdWVzdGVkIGZyb20gL3N5cyAtLSBkZWluaXRpYWxpemUgZGV2aWNlOyBwcm9hYmx5IHNhbWUgYXMKLVNZU1RFTV9TSFVURE9XTiwgSSBkbyBub3QgdW5kZXJzdGFuZCB0aGlzIG9uZSB0b28gbXVjaC4gcHJvYmFibHkgZXZlbnQKLT0gRlJFRVpFLCBmbGFncyA9IERFVl9ERVRBQ0guCi0KLSNUaGVzZSBhcmUgbm90IHJlYWxseSBldmVudHMgc2VudDoKLSMKLSNTeXN0ZW0gZnVsbHkgb24gLS0gZGV2aWNlIGlzIHdvcmtpbmcgbm9ybWFsbHk7IHRoaXMgaXMgcHJvYmFibHkgbmV2ZXIKLSNwYXNzZWQgdG8gc3VzcGVuZCgpIG1ldGhvZC4uLiBldmVudCA9IE9OLCBmbGFncyA9IDAKLSMKLSNSZWFkeSBhZnRlciByZXN1bWUgLS0gdXNlcmxhbmQgaXMgbm93IHJ1bm5pbmcsIGFnYWluLiBUaW1lIHRvIGZyZWUgYW55Ci0jbWVtb3J5IHlvdSBhdGUgZHVyaW5nIHByZXBhcmUgdG8gc3VzcGVuZC4uLiBldmVudCA9IE9OLCBmbGFncyA9Ci0jUkVBRFlfQUZURVJfUkVTVU1FCi0jCi0KLQotcG1fbWVzc2FnZV90IG1lYW5pbmcKLQotcG1fbWVzc2FnZV90IGhhcyB0d28gZmllbGRzLiBldmVudCAoIm1ham9yIiksIGFuZCBmbGFncy4gIElmIGRyaXZlcgotZG9lcyBub3Qga25vdyBldmVudCBjb2RlLCBpdCBhYm9ydHMgdGhlIHJlcXVlc3QsIHJldHVybmluZyBlcnJvci4gU29tZQotZHJpdmVycyBtYXkgbmVlZCB0byBkZWFsIHdpdGggc3BlY2lhbCBjYXNlcyBiYXNlZCBvbiB0aGUgYWN0dWFsIHR5cGUKLW9mIHN1c3BlbmQgb3BlcmF0aW9uIGJlaW5nIGRvbmUgYXQgdGhlIHN5c3RlbSBsZXZlbC4gVGhpcyBpcyB3aHkKLXRoZXJlIGFyZSBmbGFncy4KLQotRXZlbnQgY29kZXMgYXJlOgotCi1PTiAtLSBubyBuZWVkIHRvIGRvIGFueXRoaW5nIGV4Y2VwdCBzcGVjaWFsIGNhc2VzIGxpa2UgYnJva2VuCi1IVy4KLQotIyBOT1RJRklDQVRJT04gLS0gcHJldHR5IG11Y2ggc2FtZSBhcyBPTj8KLQotRlJFRVpFIC0tIHN0b3AgRE1BIGFuZCBpbnRlcnJ1cHRzLCBhbmQgYmUgcHJlcGFyZWQgdG8gcmVpbml0IEhXIGZyb20KLXNjcmF0Y2guIFRoYXQgcHJvYmFibHkgbWVhbnMgc3RvcCBhY2NlcHRpbmcgdXBzdHJlYW0gcmVxdWVzdHMsIHRoZQogYWN0dWFsIHBvbGljeSBvZiB3aGF0IHRvIGRvIHdpdGggdGhlbSBiZWluZyBzcGVjaWZpYyB0byBhIGdpdmVuCiBkcml2ZXIuIEl0J3MgYWNjZXB0YWJsZSBmb3IgYSBuZXR3b3JrIGRyaXZlciB0byBqdXN0IGRyb3AgcGFja2V0cwogd2hpbGUgYSBibG9jayBkcml2ZXIgaXMgZXhwZWN0ZWQgdG8gYmxvY2sgdGhlIHF1ZXVlIHNvIG5vIHJlcXVlc3QgaXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dAppbmRleCBkNzgxNGExMS4uODIzYjJjZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dApAQCAtMTgsMTAgKzE4LDExIEBACiAgKgogICogKCopIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQgaXMgbmVlZGVkIHRvIG1ha2UgaXQgc2FmZS4KICAqCi0gKiBJZiB5b3UgaGF2ZSBhbnkgZmlsZXN5c3RlbXMgb24gVVNCIGRldmljZXMgbW91bnRlZCBiZWZvcmUgc3VzcGVuZCwKKyAqIElmIHlvdSBoYXZlIGFueSBmaWxlc3lzdGVtcyBvbiBVU0IgZGV2aWNlcyBtb3VudGVkIGJlZm9yZSBzb2Z0d2FyZSBzdXNwZW5kLAogICogdGhleSB3b24ndCBiZSBhY2Nlc3NpYmxlIGFmdGVyIHJlc3VtZSBhbmQgeW91IG1heSBsb3NlIGRhdGEsIGFzIHRob3VnaAotICogeW91IGhhdmUgdW5wbHVnZ2VkIHRoZSBVU0IgZGV2aWNlcyB3aXRoIG1vdW50ZWQgZmlsZXN5c3RlbXMgb24gdGhlbQotICogKHNlZSB0aGUgRkFRIGJlbG93IGZvciBkZXRhaWxzKS4KKyAqIHlvdSBoYXZlIHVucGx1Z2dlZCB0aGUgVVNCIGRldmljZXMgd2l0aCBtb3VudGVkIGZpbGVzeXN0ZW1zIG9uIHRoZW07CisgKiBzZWUgdGhlIEZBUSBiZWxvdyBmb3IgZGV0YWlscy4gIChUaGlzIGlzIG5vdCB0cnVlIGZvciBtb3JlIHRyYWRpdGlvbmFsCisgKiBwb3dlciBzdGF0ZXMgbGlrZSAic3RhbmRieSIsIHdoaWNoIG5vcm1hbGx5IGRvbid0IHR1cm4gVVNCIG9mZi4pCiAKIFlvdSBuZWVkIHRvIGFwcGVuZCByZXN1bWU9L2Rldi95b3VyX3N3YXBfcGFydGl0aW9uIHRvIGtlcm5lbCBjb21tYW5kCiBsaW5lLiBUaGVuIHlvdSBzdXNwZW5kIGJ5CkBAIC0yMDQsNyArMjA1LDcgQEAKIGRpc3RpbmN0aW9ucyBiZXR3ZWVuIFNVU1BFTkQgYW5kIEZSRUVaRS4KIAogQTogRG9pbmcgU1VTUEVORCB3aGVuIHlvdSBhcmUgYXNrZWQgdG8gZG8gRlJFRVpFIGlzIGFsd2F5cyBjb3JyZWN0LAotYnV0IGl0IG1heSBiZSB1bm5lY2Nlc3NhcmlseSBzbG93LiBJZiB5b3Ugd2FudCBVU0IgdG8gc3RheSBzaW1wbGUsCitidXQgaXQgbWF5IGJlIHVubmVjY2Vzc2FyaWx5IHNsb3cuIElmIHlvdSB3YW50IHlvdXIgZHJpdmVyIHRvIHN0YXkgc2ltcGxlLAogc2xvd25lc3MgbWF5IG5vdCBtYXR0ZXIgdG8geW91LiBJdCBjYW4gYWx3YXlzIGJlIGZpeGVkIGxhdGVyLgogCiBGb3IgZGV2aWNlcyBsaWtlIGRpc2sgaXQgZG9lcyBtYXR0ZXIsIHlvdSBkbyBub3Qgd2FudCB0byBzcGluZG93biBmb3IKQEAgLTM0OSwyNSArMzUwLDcyIEBACiAKIEE6IElmIHlvdSB3YW50IHRvIHNlZSBhbnkgbm9uLWVycm9yIGtlcm5lbCBtZXNzYWdlcyBvbiB0aGUgdmlydHVhbAogdGVybWluYWwgdGhlIGtlcm5lbCBzd2l0Y2hlcyB0byBkdXJpbmcgc3VzcGVuZCwgeW91IGhhdmUgdG8gc2V0IHRoZQota2VybmVsIGNvbnNvbGUgbG9nbGV2ZWwgdG8gYXQgbGVhc3QgNSwgZm9yIGV4YW1wbGUgYnkgZG9pbmcKK2tlcm5lbCBjb25zb2xlIGxvZ2xldmVsIHRvIGF0IGxlYXN0IDQgKEtFUk5fV0FSTklORyksIGZvciBleGFtcGxlIGJ5Citkb2luZwogCi0JZWNobyA1ID4gL3Byb2Mvc3lzL2tlcm5lbC9wcmludGsKKwkjIHNhdmUgdGhlIG9sZCBsb2dsZXZlbAorCXJlYWQgTE9HTEVWRUwgRFVNTVkgPCAvcHJvYy9zeXMva2VybmVsL3ByaW50aworCSMgc2V0IHRoZSBsb2dsZXZlbCBzbyB3ZSBzZWUgdGhlIHByb2dyZXNzIGJhci4KKwkjIGlmIHRoZSBsZXZlbCBpcyBoaWdoZXIgdGhhbiBuZWVkZWQsIHdlIGxlYXZlIGl0IGFsb25lLgorCWlmIFsgJExPR0xFVkVMIC1sdCA1IF07IHRoZW4KKwkgICAgICAgIGVjaG8gNSA+IC9wcm9jL3N5cy9rZXJuZWwvcHJpbnRrCisJCWZpCisKKyAgICAgICAgSU1HX1NaPTAKKyAgICAgICAgcmVhZCBJTUdfU1ogPCAvc3lzL3Bvd2VyL2ltYWdlX3NpemUKKyAgICAgICAgZWNobyAtbiBkaXNrID4gL3N5cy9wb3dlci9zdGF0ZQorICAgICAgICBSRVQ9JD8KKyAgICAgICAgIworICAgICAgICAjIHRoZSBsb2dpYyBoZXJlIGlzOgorICAgICAgICAjIGlmIGltYWdlX3NpemUgPiAwICh3aXRob3V0IGtlcm5lbCBzdXBwb3J0LCBJTUdfU1ogd2lsbCBiZSB6ZXJvKSwKKyAgICAgICAgIyB0aGVuIHRyeSBhZ2FpbiB3aXRoIGltYWdlX3NpemUgc2V0IHRvIHplcm8uCisJaWYgWyAkUkVUIC1uZSAwIC1hICRJTUdfU1ogLW5lIDAgXTsgdGhlbiAjIHRyeSBhZ2FpbiB3aXRoIG1pbmltYWwgaW1hZ2Ugc2l6ZQorICAgICAgICAgICAgICAgIGVjaG8gMCA+IC9zeXMvcG93ZXIvaW1hZ2Vfc2l6ZQorICAgICAgICAgICAgICAgIGVjaG8gLW4gZGlzayA+IC9zeXMvcG93ZXIvc3RhdGUKKyAgICAgICAgICAgICAgICBSRVQ9JD8KKyAgICAgICAgZmkKKworCSMgcmVzdG9yZSBwcmV2aW91cyBsb2dsZXZlbAorCWVjaG8gJExPR0xFVkVMID4gL3Byb2Mvc3lzL2tlcm5lbC9wcmludGsKKwlleGl0ICRSRVQKIAogUTogSXMgdGhpcyB0cnVlIHRoYXQgaWYgSSBoYXZlIGEgbW91bnRlZCBmaWxlc3lzdGVtIG9uIGEgVVNCIGRldmljZSBhbmQKIEkgc3VzcGVuZCB0byBkaXNrLCBJIGNhbiBsb3NlIGRhdGEgdW5sZXNzIHRoZSBmaWxlc3lzdGVtIGhhcyBiZWVuIG1vdW50ZWQKIHdpdGggInN5bmMiPwogCi1BOiBUaGF0J3MgcmlnaHQuICBJdCBkZXBlbmRzIG9uIHlvdXIgaGFyZHdhcmUsIGFuZCBpdCBjb3VsZCBiZSB0cnVlIGV2ZW4gZm9yCi1zdXNwZW5kLXRvLVJBTS4gIEluIGZhY3QsIGV2ZW4gd2l0aCAiLW8gc3luYyIgeW91IGNhbiBsb3NlIGRhdGEgaWYgeW91cgotcHJvZ3JhbXMgaGF2ZSBpbmZvcm1hdGlvbiBpbiBidWZmZXJzIHRoZXkgaGF2ZW4ndCB3cml0dGVuIG91dCB0byBkaXNrLgorQTogVGhhdCdzIHJpZ2h0IC4uLiBpZiB5b3UgZGlzY29ubmVjdCB0aGF0IGRldmljZSwgeW91IG1heSBsb3NlIGRhdGEuCitJbiBmYWN0LCBldmVuIHdpdGggIi1vIHN5bmMiIHlvdSBjYW4gbG9zZSBkYXRhIGlmIHlvdXIgcHJvZ3JhbXMgaGF2ZQoraW5mb3JtYXRpb24gaW4gYnVmZmVycyB0aGV5IGhhdmVuJ3Qgd3JpdHRlbiBvdXQgdG8gYSBkaXNrIHlvdSBkaXNjb25uZWN0LAorb3IgaWYgeW91IGRpc2Nvbm5lY3QgYmVmb3JlIHRoZSBkZXZpY2UgZmluaXNoZWQgc2F2aW5nIGRhdGEgeW91IHdyb3RlLgogCi1JZiB5b3UncmUgbHVja3ksIHlvdXIgaGFyZHdhcmUgd2lsbCBzdXBwb3J0IGxvdy1wb3dlciBtb2RlcyBmb3IgVVNCCi1jb250cm9sbGVycyB3aGlsZSB0aGUgc3lzdGVtIGlzIGFzbGVlcC4gIExvdHMgb2YgaGFyZHdhcmUgZG9lc24ndCwKLWhvd2V2ZXIuICBTaHV0dGluZyBvZmYgdGhlIHBvd2VyIHRvIGEgVVNCIGNvbnRyb2xsZXIgaXMgZXF1aXZhbGVudCB0bwotdW5wbHVnZ2luZyBhbGwgdGhlIGF0dGFjaGVkIGRldmljZXMuCitTb2Z0d2FyZSBzdXNwZW5kIG5vcm1hbGx5IHBvd2VycyBkb3duIFVTQiBjb250cm9sbGVycywgd2hpY2ggaXMgZXF1aXZhbGVudAordG8gZGlzY29ubmVjdGluZyBhbGwgVVNCIGRldmljZXMgYXR0YWNoZWQgdG8geW91ciBzeXN0ZW0uCisKK1lvdXIgc3lzdGVtIG1pZ2h0IHdlbGwgc3VwcG9ydCBsb3ctcG93ZXIgbW9kZXMgZm9yIGl0cyBVU0IgY29udHJvbGxlcnMKK3doaWxlIHRoZSBzeXN0ZW0gaXMgYXNsZWVwLCBtYWludGFpbmluZyB0aGUgY29ubmVjdGlvbiwgdXNpbmcgdHJ1ZSBzbGVlcAorbW9kZXMgbGlrZSAic3VzcGVuZC10by1SQU0iIG9yICJzdGFuZGJ5Ii4gIChEb24ndCB3cml0ZSAiZGlzayIgdG8gdGhlCisvc3lzL3Bvd2VyL3N0YXRlIGZpbGU7IHdyaXRlICJzdGFuZGJ5IiBvciAibWVtIi4pICBXZSd2ZSBub3Qgc2VlbiBhbnkKK2hhcmR3YXJlIHRoYXQgY2FuIHVzZSB0aGVzZSBtb2RlcyB0aHJvdWdoIHNvZnR3YXJlIHN1c3BlbmQsIGFsdGhvdWdoIGluCit0aGVvcnkgc29tZSBzeXN0ZW1zIG1pZ2h0IHN1cHBvcnQgInBsYXRmb3JtIiBvciAiZmlybXdhcmUiIG1vZGVzIHRoYXQKK3dvbid0IGJyZWFrIHRoZSBVU0IgY29ubmVjdGlvbnMuCiAKIFJlbWVtYmVyIHRoYXQgaXQncyBhbHdheXMgYSBiYWQgaWRlYSB0byB1bnBsdWcgYSBkaXNrIGRyaXZlIGNvbnRhaW5pbmcgYQotbW91bnRlZCBmaWxlc3lzdGVtLiAgV2l0aCBVU0IgdGhhdCdzIHRydWUgZXZlbiB3aGVuIHlvdXIgc3lzdGVtIGlzIGFzbGVlcCEKLVRoZSBzYWZlc3QgdGhpbmcgaXMgdG8gdW5tb3VudCBhbGwgVVNCLWJhc2VkIGZpbGVzeXN0ZW1zIGJlZm9yZSBzdXNwZW5kaW5nCi1hbmQgcmVtb3VudCB0aGVtIGFmdGVyIHJlc3VtaW5nLgorbW91bnRlZCBmaWxlc3lzdGVtLiAgVGhhdCdzIHRydWUgZXZlbiB3aGVuIHlvdXIgc3lzdGVtIGlzIGFzbGVlcCEgIFRoZQorc2FmZXN0IHRoaW5nIGlzIHRvIHVubW91bnQgYWxsIGZpbGVzeXN0ZW1zIG9uIHJlbW92YWJsZSBtZWRpYSAoc3VjaCBVU0IsCitGaXJld2lyZSwgQ29tcGFjdEZsYXNoLCBNTUMsIGV4dGVybmFsIFNBVEEsIG9yIGV2ZW4gSURFIGhvdHBsdWcgYmF5cykKK2JlZm9yZSBzdXNwZW5kaW5nOyB0aGVuIHJlbW91bnQgdGhlbSBhZnRlciByZXN1bWluZy4KIAorUTogSSB1cGdyYWRlZCB0aGUga2VybmVsIGZyb20gMi42LjE1IHRvIDIuNi4xNi4gQm90aCBrZXJuZWxzIHdlcmUKK2NvbXBpbGVkIHdpdGggdGhlIHNpbWlsYXIgY29uZmlndXJhdGlvbiBmaWxlcy4gQW55d2F5IEkgZm91bmQgdGhhdAorc3VzcGVuZCB0byBkaXNrIChhbmQgcmVzdW1lKSBpcyBtdWNoIHNsb3dlciBvbiAyLjYuMTYgY29tcGFyZWQgdG8KKzIuNi4xNS4gQW55IGlkZWEgZm9yIHdoeSB0aGF0IG1pZ2h0IGhhcHBlbiBvciBob3cgY2FuIEkgc3BlZWQgaXQgdXA/CisKK0E6IFRoaXMgaXMgYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgc3VzcGVuZCBpbWFnZSBpcyBub3cgZ3JlYXRlciB0aGFuCitmb3IgMi42LjE1IChieSBzYXZpbmcgbW9yZSBkYXRhIHdlIGNhbiBnZXQgbW9yZSByZXNwb25zaXZlIHN5c3RlbQorYWZ0ZXIgcmVzdW1lKS4KKworVGhlcmUncyB0aGUgL3N5cy9wb3dlci9pbWFnZV9zaXplIGtub2IgdGhhdCBjb250cm9scyB0aGUgc2l6ZSBvZiB0aGUKK2ltYWdlLiAgSWYgeW91IHNldCBpdCB0byAwIChlZy4gYnkgZWNobyAwID4gL3N5cy9wb3dlci9pbWFnZV9zaXplIGFzCityb290KSwgdGhlIDIuNi4xNSBiZWhhdmlvciBzaG91bGQgYmUgcmVzdG9yZWQuICBJZiBpdCBpcyBzdGlsbCB0b28KK3Nsb3csIHRha2UgYSBsb29rIGF0IHN1c3BlbmQuc2YubmV0IC0tIHVzZXJsYW5kIHN1c3BlbmQgaXMgZmFzdGVyIGFuZAorc3VwcG9ydHMgTFpGIGNvbXByZXNzaW9uIHRvIHNwZWVkIGl0IHVwIGZ1cnRoZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdmlkZW8udHh0CmluZGV4IDQzYTg4OWYuLmQ4NTlmYWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcG93ZXIvdmlkZW8udHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvdmlkZW8udHh0CkBAIC05MCw2ICs5MCw3IEBACiBNb2RlbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhY2sgKG9yICJob3cgdG8gZG8gaXQiKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBBY2VyIEFzcGlyZSAxNDA2TEMJCW9sZSdzIGxhdGUgQklPUyBpbml0ICg3KSwgdHVybiBvZmYgRFJJCitBY2VyIFRNIDIzMAkJCXMzX2Jpb3MgKDIpCiBBY2VyIFRNIDI0MkZYCQkJdmJldG9vbCAoNikKIEFjZXIgVE0gQzExMAkJCXZpZGVvX3Bvc3QgKDgpCiBBY2VyIFRNIEMzMDAgICAgICAgICAgICAgICAgICAgIHZnYT1ub3JtYWwgKG9ubHkgc3VzcGVuZCBvbiBjb25zb2xlLCBub3QgaW4gWCksIHZiZXRvb2wgKDYpIG9yIHZpZGVvX3Bvc3QgKDgpCkBAIC0xMTUsNiArMTE2LDcgQEAKIERlbGwgSW5zcGlyb24gNDAwMAkJPz8/ICgqKQogRGVsbCBJbnNwaXJvbiA1MDBtCQk/Pz8gKCopCiBEZWxsIEluc3Bpcm9uIDUxMG0JCT8/PworRGVsbCBJbnNwaXJvbiA1MTUwCQl2YmV0b29sIG5lZWRlZCAoNikKIERlbGwgSW5zcGlyb24gNjAwbQkJPz8/ICgqKQogRGVsbCBJbnNwaXJvbiA4MjAwCQk/Pz8gKCopCiBEZWxsIEluc3Bpcm9uIDg1MDAJCT8/PyAoKikKQEAgLTEyNSw2ICsxMjcsNyBAQAogSFAgUGF2aWxpb24gWkQ3MDAwCQl2YmV0b29sIHBvc3QgbmVlZGVkLCBuZWVkIG9wZW4tc291cmNlIG52IGRyaXZlciBmb3IgWAogSFAgT21uaWJvb2sgWEUzCWF0aGxvbiB2ZXJzaW9uCW5vbmUgKDEpCiBIUCBPbW5pYm9vayBYRTNHQwkJbm9uZSAoMSksIHZpZGVvIGlzIFMzIFNhdmFnZS9JWC1NVgorSFAgT21uaWJvb2sgWEUzTC1HRgkJdmJldG9vbCAoNikKIEhQIE9tbmlib29rIDUxNTAJCW5vbmUgKDEpLCAoUzEgYWxzbyB3b3JrcyBPSykKIElCTSBUUCBUMjAsIG1vZGVsIDI2NDctNDRHCW5vbmUgKDEpLCB2aWRlbyBpcyBTMyBJbmMuIDg2QzI3MC0yOTQgU2F2YWdlL0lYLU1WLCB2ZXNhZmIgZ2V0cyAiaW50ZXJlc3RpbmciIGJ1dCBYIHdvcmsuCiBJQk0gVFAgQTMxIC8gVHlwZSAyNjUyLU01RyAgICAgIHMzX21vZGUgKDMpIFt3b3JrcyBvayB3aXRoIEJJT1MgMS4wNCAyMDAyLTA4LTIzLCBidXQgbm90IGF0IGFsbCB3aXRoIEJJT1MgMS4xMSAyMDA0LTExLTA1IDotKF0KQEAgLTE1Nyw2ICsxNjAsNyBAQAogU29ueSBWYWlvIHZnbi1TNTgwQkgJCXZnYT1ub3JtYWwsIGJ1dCBzdXNwZW5kIGZyb20gWC4gQ29uc29sZSB3aWxsIGJlIGJsYW5rIHVubGVzcyB5b3UgcmV0dXJuIHRvIFguCiBTb255IFZhaW8gdmduLUZTMTE1QgkJczNfYmlvcyAoMiksczNfbW9kZSAoNCkKIFRvc2hpYmEgTGlicmV0dG8gTDUJCW5vbmUgKDEpCitUb3NoaWJhIExpYnJldHRvIDEwMENULzExMENUICAgIHZiZXRvb2wgKDYpCiBUb3NoaWJhIFBvcnRlZ2UgMzAyMENUCQlzM19tb2RlICgzKQogVG9zaGliYSBTYXRlbGxpdGUgNDAzMENEVAlzM19tb2RlICgzKSAoUzEgYWxzbyB3b3JrcyBPSykKIFRvc2hpYmEgU2F0ZWxsaXRlIDQwODBYQ0RUICAgICAgczNfbW9kZSAoMykgKFMxIGFsc28gd29ya3MgT0spCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL3Njc2kvMDAtSU5ERVgKaW5kZXggZTdkYThjMy4uMTIzNTQ4MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpLzAwLUlOREVYCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS8wMC1JTkRFWApAQCAtMzAsOCArMzAsNiBAQAogCS0gaW5mbyBvbiBkcml2ZXIgZm9yIEFkYXB0ZWMgY29udHJvbGxlcnMKIGFpYzd4eHhfb2xkLnR4dAogCS0gaW5mbyBvbiBkcml2ZXIgZm9yIEFkYXB0ZWMgY29udHJvbGxlcnMsIG9sZCBnZW5lcmF0aW9uCi1jcHFmYy50eHQKLQktIGluZm8gb24gZHJpdmVyIGZvciBDb21wYXEgVGFjaHlvbiBUUyBhZGFwdGVycwogZHB0aS50eHQKIAktIGluZm8gb24gZHJpdmVyIGZvciBEUFQgU21hcnRSQUlEIGFuZCBBZGFwdGVjIEkyTyBSQUlEIGJhc2VkIGFkYXB0ZXJzCiBkdGMzeDgwLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5tZWdhcmFpZF9zYXMgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkX3NhcwppbmRleCAyZGFmYTYzLi4wYTg1YTdlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkX3NhcworKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkX3NhcwpAQCAtMSwzICsxLDE2IEBACisKKzEgUmVsZWFzZSBEYXRlICAgIDogV2VkIEZlYiAwMyAxNDozMTo0NCBQU1QgMjAwNiAtIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMi4wNAorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMi4wNCAKKworaS4JUmVtb3ZlIHN1cGVyZmxvdXMgaW5zdGFuY2VfbG9jaworCisJZ2V0cyByaWQgb2YgdGhlIG90aGVyd2lzZSBzdXBlcmZsb3VzIGluc3RhbmNlX2xvY2sgYW5kIGF2b2lkcyBhbiB1bnNhdmUgCisJdW5zeW5jaHJvbml6ZWQgYWNjZXNzIGluIHRoZSBlcnJvciBoYW5kbGVyLgorCisJCS0gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CisKKwogMSBSZWxlYXNlIERhdGUgICAgOiBXZWQgRmViIDAzIDE0OjMxOjQ0IFBTVCAyMDA2IC0gU3VtYW50IFBhdHJvIDxTdW1hbnQuUGF0cm9AbHNpbC5jb20+CiAyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAyLjA0CiAzIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAyLjA0IApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FhY3JhaWQudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FhY3JhaWQudHh0CmluZGV4IDgyMGZkMDcuLmJlNTU2NzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9hYWNyYWlkLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWFjcmFpZC50eHQKQEAgLTI0LDEwICsyNCwxMCBAQAogCTkwMDU6MDI4NTo5MDA1OjAyOTYJQWRhcHRlYwkyMjQwUyAoU2FicmVFeHByZXNzKQogCTkwMDU6MDI4NTo5MDA1OjAyOTAJQWRhcHRlYwkyNDEwU0EgKEphZ3VhcikKIAk5MDA1OjAyODU6OTAwNTowMjkzCUFkYXB0ZWMgMjE2MTBTQSAoQ29yc2Fpci0xNikKLQk5MDA1OjAyODU6MTAzYzozMjI3CUFkYXB0ZWMgMjYxMFNBIChCZWFyY2F0KQorCTkwMDU6MDI4NToxMDNjOjMyMjcJQWRhcHRlYyAyNjEwU0EgKEJlYXJjYXQgSFAgcmVsZWFzZSkKIAk5MDA1OjAyODU6OTAwNTowMjkyCUFkYXB0ZWMJMjgxMFNBIChDb3JzYWlyLTgpCiAJOTAwNTowMjg1OjkwMDU6MDI5NAlBZGFwdGVjCVByb3dsZXIKLQk5MDA1OjAyODY6OTAwNTowMjlkCUFkYXB0ZWMJMjQyMFNBIChJbnRydWRlcikKKwk5MDA1OjAyODY6OTAwNTowMjlkCUFkYXB0ZWMJMjQyMFNBIChJbnRydWRlciBIUCByZWxlYXNlKQogCTkwMDU6MDI4Njo5MDA1OjAyOWMJQWRhcHRlYwkyNjIwU0EgKEludHJ1ZGVyKQogCTkwMDU6MDI4Njo5MDA1OjAyOWIJQWRhcHRlYwkyODIwU0EgKEludHJ1ZGVyKQogCTkwMDU6MDI4Njo5MDA1OjAyYTcJQWRhcHRlYwkyODMwU0EgKFNreXJheSkKQEAgLTM4LDcgKzM4LDcgQEAKIAk5MDA1OjAyODU6OTAwNTowMjk3CUFkYXB0ZWMJNDAwNVNBUyAoQXZvblBhcmspCiAJOTAwNTowMjg1OjkwMDU6MDI5OQlBZGFwdGVjCTQ4MDBTQVMgKE1hcmF1ZGVyLVgpCiAJOTAwNTowMjg1OjkwMDU6MDI5YQlBZGFwdGVjCTQ4MDVTQVMgKE1hcmF1ZGVyLUUpCi0JOTAwNTowMjg2OjkwMDU6MDJhMglBZGFwdGVjCTQ4MTBTQVMgKEh1cnJpY2FuZSkKKwk5MDA1OjAyODY6OTAwNTowMmEyCUFkYXB0ZWMJMzgwMFNBUyAoSHVycmljYW5lNDQpCiAJMTAxMTowMDQ2OjkwMDU6MDM2NAlBZGFwdGVjCTU0MDBTIChNdXN0YW5nKQogCTEwMTE6MDA0Njo5MDA1OjAzNjUJQWRhcHRlYwk1NDAwUyAoTXVzdGFuZykKIAk5MDA1OjAyODM6OTAwNTowMjgzCUFkYXB0ZWMJQ2F0YXB1bHQgKDMyMTBTIHdpdGggYXJjIGZpcm13YXJlKQpAQCAtNzIsNyArNzIsNyBAQAogCTkwMDU6MDI4Njo5MDA1OjAyYTEJSUNQCUlDUDkwODdNQSAoTGFuY2VyKQogCTkwMDU6MDI4Njo5MDA1OjAyYTQJSUNQCUlDUDkwODVMSSAoTWFyYXVkZXItWCkKIAk5MDA1OjAyODY6OTAwNTowMmE1CUlDUAlJQ1A1MDg1QlIgKE1hcmF1ZGVyLUUpCi0JOTAwNTowMjg2OjkwMDU6MDJhMwlJQ1AJSUNQNTA4NUFVIChIdXJyaWNhbmUpCisJOTAwNTowMjg2OjkwMDU6MDJhMwlJQ1AJSUNQNTQ0NUFVIChIdXJyaWNhbmU0NCkKIAk5MDA1OjAyODY6OTAwNTowMmE2CUlDUAlJQ1A5MDY3TUEgKEludHJ1ZGVyLTYpCiAJOTAwNTowMjg2OjkwMDU6MDJhOQlJQ1AJSUNQNTA4N0FVIChTa3lyYXkpCiAJOTAwNTowMjg2OjkwMDU6MDJhYQlJQ1AJSUNQNTA0N0FVIChTa3lyYXkpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvY3BxZmMudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2NwcWZjLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQzM2U2MS4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvY3BxZmMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLU5vdGVzIGZvciBDUFFGQ1RTIGRyaXZlciBmb3IgQ29tcGFxIFRhY2h5b24gVFMKLUZpYnJlIENoYW5uZWwgSG9zdCBCdXMgQWRhcHRlciwgUENJIDY0LWJpdCwgNjZNSHoKLWZvciBMaW51eCAoUkggNi4xLCA2LjIga2VybmVsIDIuMi4xMi0zMiwgMi4yLjE0LTUpCi1TTVAgdGVzdGVkCi1UZXN0ZWQgaW4gc2luZ2xlIGFuZCBkdWFsIEhCQSBjb25maWd1cmF0aW9uLCAzMiBhbmQgNjRiaXQgYnVzc2VzLAotMzMgYW5kIDY2TUh6LiAgT25seSBzdXBwb3J0cyBGQy1BTC4KLVNFU1Qgc2l6ZSA1MTIgRXhjaGFuZ2VzIChzaW11bHRhbmVvdXMgSS9PcykgbGltaXRlZCBieSBtb2R1bGUga21hbGxvYygpIAotCW1heCBvZiAxMjhrIGJ5dGVzIGNvbnRpZ3VvdXMuCi0KLVZlciAyLjUuNCAgT2N0IDAzLCAyMDAyCi0gICAqIGZpeGVkIG1lbWNweSBvZiBzZW5zZSBidWZmZXIgaW4gaW9jdGwgdG8gY29weSB0aGUgc21hbGxlciBkZWZpbmVkIHNpemUKLVZlciAyLjUuMyAgQXVnIDAxLCAyMDAyCi0gICAqIGZpeCB0aGUgcGFzc3RocnUgaW9jdGwgdG8gaGFuZGxlIHRoZSBTY3NpX0NtbmQtPnJlcXVlc3QgYmVpbmcgYSBwb2ludGVyCi1WZXIgMi41LjEgIEp1bCAzMCwgMjAwMgotICAgKiBmaXggaW9jdGwgdG8gcGF5IGF0dGVudGlvbiB0byB0aGUgc3BlY2lmaWVkIExVTi4KLVZlciAyLjUuMCAgTm92IDI5LCAyMDAxCi0gICAqIGVsaW1pbmF0ZWQgaW9fcmVxdWVzdF9sb2NrLiAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIGRyaXZlciBzcGVjaWZpYwotICAgICB0byB0aGUgMi41Lngga2VybmVscy4KLSAgICogc2lsZW5jZWQgZXhjZXNzaXZlbHkgbm9pc3kgcHJpbnRrcy4KLQotVmVyIDIuMS4yICBKdWx5IDIzLCAyMDAyCi0gICAqIGluaXRpYWxpemUgRHVtQ21uZC0+bHVuIGluIGNwcWZjVFNfaW9jdGwgKHVzZWQgaW4gZmNGaW5kTG9nZ2VkSW5Qb3J0cyBhcyBMVU4gaW5kZXgpCi0KLVZlciAyLjEuMSAgT2N0IDE4LCAyMDAxCi0gICAqIHJlaW5pdGlhbGl6ZSBDbW5kLT5TQ3Auc2VudF9jb21tYW5kICh1c2VkIHRvIGlkZW50aWZ5IGNvbW1hbmRzIGFzCi0gICAgIHBhc3N0aHJ1cykgb24gY2FsbGluZyBzY3NpX2RvbmUsIHNpbmNlIHRoZSBzY3NpIG1pZCBsYXllciBkb2VzIG5vdAotICAgICB1c2UgKG9yIHJlaW5pdGlhbGl6ZSkgdGhpcyBmaWVsZCB0byBwcmV2ZW50IHN1YnNlcXVlbnQgY29tYW5kcyBmcm9tCi0gICAgIGhhdmluZyBpdCBzZXQgaW5jb3JyZWN0bHkuIAotCi1WZXIgMi4xLjAgIEF1ZyAyNywgMjAwMQotICAgKiBSZXZpc2UgZHJpdmVyIHRvIHVzZSBuZXcga2VybmVsIDIuNC54IFBDSSBETUEgQVBJLCBpbnN0ZWFkIG9mIAotICAgICB2aXJ0X3RvX2J1cygpLiAgKGVuYWJsZXMgZHJpdmVyIHRvIHdvcmsgdy8gaWE2NCBzeXN0ZW1zIHdpdGggPjJHYiBSQU0uKQotICAgICBSZXdvcmsgbWFpbiBzY2F0dGVyLWdhdGhlciBjb2RlIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBTRyBlbGVtZW50Ci0gICAgIGxlbmd0aHMgYXJlIGxhcmdlciB0aGFuIDB4N0ZGRkYgYnl0ZXMgYW5kIHVzZSBhcyBtYW55IHNjYXR0ZXIgCi0gICAgIGdhdGhlciBwYWdlcyBhcyBuZWNlc3NhcnkuIChTdGV2ZSBDYW1lcm9uKQotICAgKiBNYWtlZmlsZSBjaGFuZ2VzIHRvIGJyaW5nIGNwcWZjIGludG8gbGluZSB3LyByZXN0IG9mIFNDU0kgZHJpdmVycwotICAgICAodGhhbmtzIHRvIEtlaXRoIE93ZW5zKQotCi1WZXIgMi4wLjUgIEF1ZyAwNiwgMjAwMQotICAgKiBSZWplY3Qgbm9uLWV4aXN0ZW50IGx1bnMgaW4gdGhlIGRyaXZlciByYXRoZXIgdGhhbiBsZXR0aW5nIHRoZSAKLSAgICAgaGFyZHdhcmUgZG8gaXQuICAoc29tZSBIVyBiZWhhdmVzIGRpZmZlcmVudGx5IHRoYW4gb3RoZXJzIGluIHRoaXMgYXJlYS4pCi0gICAqIENoYW5nZWQgTWFrZWZpbGUgdG8gcmVseSBvbiAibWFrZSBkZXAiIGluc3RlYWQgb2YgZXhwbGljaXQgZGVwZW5kZW5jaWVzCi0gICAqIGlmZGVmJ2VkIG91dCBmaWJyZSBjaGFubmVsIGFuYWx5emVyIHRyaWdnZXJpbmcgZGVidWcgY29kZQotICAgKiBmaXhlZCBhIGppZmZpZXMgd3JhcHBpbmcgaXNzdWUKLQotVmVyIDIuMC40ICBBdWcgMDEsIDIwMDEKLSAgICogSW5jb3Jwb3JhdGVkIGZpeCBmb3IgdGFyZ2V0IGRldmljZSByZXNldCBmcm9tIFN0ZWVsZXllCi0gICAqIEZpeGVkIHBhc3N0aHJvdWdoIGlvY3RsIHNvIGl0IGRvZXNuJ3QgaGFuZy4KLSAgICogRml4ZWQgaGFuZyBpbiBsYXVuY2hfRkN3b3JrZXJfdGhyZWFkKCkgdGhhdCBvY2N1cnJlZCBvbiBzb21lIG1hY2hpbmVzLgotICAgKiBBdm9pZCBwcm9ibGVtIHdoZW4gbnVtYmVyIG9mIHZvbHVtZXMgaW4gYSBzaW5nbGUgY2FiaW5ldCA+IDgKLQotVmVyIDIuMC4yICBKdWx5IDIzLCAyMDAxCi0gICBDaGFuZ2VkIHRoZSBzZW1pcGhvcmUgY2hhbmdlcyBzbyB0aGUgZHJpdmVyIHdvdWxkIGNvbXBpbGUgaW4gMi40LjcuIAotICAgVGhpcyB2ZXJzaW9uIGlzIGZvciAyLjQuNyBhbmQgYmV5b25kLiAKLSAKLVZlciAyLjAuMSAgTWF5IAk3LCAyMDAxCi0gICBNZXJnZWQgdmVyc2lvbiAxLjMuNiBmaXhlcyBpbnRvIHZlcnNpb24gMi4wLjAuICAgCi0KLVZlciAyLjAuMCAgTWF5ICAgNywgMjAwMQotICBGaXhlZCBwcm9ibGVtIHNvIHNwaW5sb2NrIGlzIGJlaW5nIGluaXRpYWxpemVkIHRvIFVOTE9DS0VELiAKLSAgRml4ZWQgdXBkYXRlZCBkcml2ZXIgc28gaXQgY29tcGlsZXMgaW4gdGhlIDIuNCB0cmVlLiAKLSAKLSBWZXIgMS4zLjYgIEZlYiAgMjcsIDIwMDEKLSAgIEFkZGVkIFRhcmdldF9EZXZpY2VfUmVzZXQgZnVuY3Rpb24gZm9yIFNDU0kgZXJyb3IgaGFuZGxpbmcKLSAgIEZpeGVkIHByb2JsZW0gd2l0aCBub3QgcmVzZXRpbmcgYWRkcmVzc2luZyBtb2RlIGFmdGVyIGltcGxpY2l0IGxvZ291dAotIAotCi1WZXIgMS4zLjQgIFNlcCAgIDcsIDIwMDAKLSAgQWRkZWQgTW9kaW5mbyBpbmZvcm1hdGlvbgotICBGaXhlZCBwcm9ibGVtIHdpdGggc3RhdGljYWxseSBsaW5raW5nIHRoZSBkcml2ZXIKLQotVmVyIDEuMy4zLCBBdWcgIDIzLCAyMDAwCi0gIEZpeGVkIGRldmljZS9mdW5jdGlvbiBudW1iZXIgaW4gaW9jdGwKLQotVmVyIDEuMy4yLCBKdWx5IDI3LCAyMDAwCi0gIEFkZCBpbmNsdWRlIGZvciBBbHBoYSBjb21waWxlIG9uIDIuMi4xNCBrZXJuZWwgKGNwcSppMmMuYykKLSAgQ2hhbmdlIGxvZ2ljIGZvciBkaWZmZXJlbnQgRkNQLVJTUCBzZW5zZV9idWZmZXIgbG9jYXRpb24gZm9yIEhTRzgwIHRhcmdldAotICBBbmQgc2VhcmNoIGZvciBBZ2lsZW50IFRhY2h5b24gWEwyIEhCQXMgKG5vdCBmaW5pc2hlZCEgLSBpbiB0ZXN0KQotCi1UZXN0ZWQgd2l0aCAKLShzdG9yYWdlKToKLSAgICAgICAgICAgQ29tcGFxIFJBLTR4MDAwLCBSQUlEIGZpcm13YXJlIHZlciAyLjQwIC0gMi41NAotICAgICAgICAgICBTZWFnYXRlIEZDIGRyaXZlcyBtb2RlbCBTVDM5MTAyRkMsIHJldiAwMDA2Ci0gICAgICAgICAgIEhpdGFjaGkgREszMUNKLTcyRkMgcmV2IEo4QTgKLSAgICAgICAgICAgSUJNIEREWUYtVDE4MzUwUiByZXYgRjYwSwotICAgICAgICAgICBDb21wYXEgRkMtU0NTSSBicmlkZ2Ugdy8gRExUIDM1LzcwIEdiIERMVCAodGFwZSkKLShzZXJ2ZXJzKToKLSAgICAgICAgICAgQ29tcGFxIFBMLTE4NTBSCi0gICAgICAgICAgIENvbXBhcSBQTC02NTAwIFhlb24gKDQwME1IeikKLQkgICBDb21wYXEgUEwtODUwMCAoNTAwTUh6LCA2Nk1IeiwgNjRiaXQgUENJKQotICAgICAgICAgICBDb21wYXEgQWxwaGEgRFMyMCAoUkggNi4xKQotKGh1YnMpOgotICAgICAgICAgICBWaXhlbCBSYXBwb3J0IDEwMDAgKDctcG9ydCAiZHVtYiIpCi0JICAgR2Fkem9veCBHaWJyYWx0ZXIgKDEyLXBvcnQgImR1bWIiKQotCSAgIEdhZHpvb3ggQ2FwZWxsaXggMjAwMCwgMzAwMCAKLShzd2l0Y2hlcyk6Ci0gICAgICAgICAgIEJyb2NhZGUgMjAxMCwgMjQwMCwgMjgwMCwgcmV2IDIuMC4zYSAoJiBsYXRlcikKLSAgICAgICAgICAgR2Fkem9veCAzMjEwIChGYWJyaWMgYmxhZGUgYmV0YSkKLSAgICAgICAgICAgVml4ZWwgNzEwMCAoRmFicmljIGJldGEgZmlybWFyZSAtIGtub3duIGhvdCBwbHVnIGlzc3VlcykKLXVzaW5nICJxYV90ZXN0IiAoZXNwLiBpb190ZXN0IHNjcmlwdCkgc3VpdGUgbW9kaWZpZWQgZnJvbSBVbml4IHRlc3RzLgotCQotSW5zdGFsbGF0aW9uOgotbWFrZSBtZW51Y29uZmlnCi0gIChzZWxlY3QgU0NTSSBsb3ctbGV2ZWwsIENvbXBhcSBGQyBIQkEpCi1tYWtlIG1vZHVsZXMKLW1ha2UgbW9kdWxlc19pbnN0YWxsCi0KLWUuZy4gaW5zbW9kIC1mIGNwcWZjCi0KLUR1ZSB0byBGYWJyaWMvc3dpdGNoIGRlbGF5cywgZHJpdmVyIHJlcXVpcmVzIDQgc2Vjb25kcyAKLXRvIGluaXRpYWxpemUuICBJZiBhZGFwdGVycyBhcmUgZm91bmQsIHRoZXJlIHdpbGwgYmUgYSBlbnRyaWVzIGF0Ci0vcHJvYy9zY3NpL2NwcWZjVFMvKgotCi1zYW1wbGUgY29udGVudHMgb2Ygc3RhcnR1cCBtZXNzYWdlcwotCi0qKioqKioqKioqKioqKioqKioqKioqKioqCi0gc2NzaV9yZWdpc3RlciBhbGxvY2F0aW5nIDM1OTYgYnl0ZXMgZm9yIENQUUZDSEJBCi0gaW9yZW1hcCdkIE1lbWJhc2U6IGM4ODdlNjAwCi0gIEhCQSBUYWNoeW9uIFJldklkIDEuMgotQWxsb2NhdGluZyAxMTk4MDggZm9yIDU3NiBFeGNoYW5nZXMgQCBjMGRjMDAwMAotQWxsb2NhdGluZyAxMTI5MDQgZm9yIExpbmtRIEAgYzBjMjAwMDAgKDU3NiBlbGVtZW50cykKLUFsbG9jYXRpbmcgMTEwNjAwIGZvciBUYWNoU0VTVCBmb3IgNTEyIEV4Y2hhbmdlcwotICBjcHFmY1RTOiB3cml0aW5nIElNUSBCQVNFIDdDMDAwMGggICAgUEkgN0M0MDAwaAotICBjcHFmY1RTOiBTRVNUIGMwZTQwMDAwKHZpcnQpOiBXcm90ZSBiYXNlIEU0MDAwMGggQCBjODg3ZTc0MAotY3BxZmNUUzogTmV3IEZDIHBvcnQgMDAwMEU4aCBXV046IDUwMDUwNzY1MDY0MjQ5OUQgU0NTSSBDaGFuL1RyZ3QgMC8wCi1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwRUZoIFdXTjogNTAwMDBFMTAwMDAwRDVBNiBTQ1NJIENoYW4vVHJndCAwLzEKLWNwcWZjVFM6IE5ldyBGQyBwb3J0IDAwMDBFNGggV1dOOiAyMTAwMDAyMDM3MDA5N0JCIFNDU0kgQ2hhbi9Ucmd0IDAvMgotY3BxZmNUUzogTmV3IEZDIHBvcnQgMDAwMEUyaCBXV046IDIxMDAwMDIwMzcwMDk5NDYgU0NTSSBDaGFuL1RyZ3QgMC8zCi1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwRTFoIFdXTjogMjEwMDAwMjAzNzAwOThGRSBTQ1NJIENoYW4vVHJndCAwLzQKLWNwcWZjVFM6IE5ldyBGQyBwb3J0IDAwMDBFMGggV1dOOiAyMTAwMDAyMDM3MDA5N0IyIFNDU0kgQ2hhbi9Ucmd0IDAvNQotY3BxZmNUUzogTmV3IEZDIHBvcnQgMDAwMERDaCBXV046IDIxMDAwMDIwMzcwMDZDQzEgU0NTSSBDaGFuL1RyZ3QgMC82Ci1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwREFoIFdXTjogMjEwMDAwMjAzNzAwNTlGNiBTQ1NJIENoYW4vVHJndCAwLzcKLWNwcWZjVFM6IE5ldyBGQyBwb3J0IDAwMDAwRmggV1dOOiA1MDA4MDVGMUZBREIwRTIwIFNDU0kgQ2hhbi9Ucmd0IDAvOAotY3BxZmNUUzogTmV3IEZDIHBvcnQgMDAwMDA4aCBXV046IDUwMDgwNUYxRkFEQjBFQkEgU0NTSSBDaGFuL1RyZ3QgMC85Ci1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwMDRoIFdXTjogNTAwODA1RjFGQURCMUVCOSBTQ1NJIENoYW4vVHJndCAwLzEwCi1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwMDJoIFdXTjogNTAwODA1RjFGQURCMUFERSBTQ1NJIENoYW4vVHJndCAwLzExCi1jcHFmY1RTOiBOZXcgRkMgcG9ydCAwMDAwMDFoIFdXTjogNTAwODA1RjFGQURCQTJDQSBTQ1NJIENoYW4vVHJndCAwLzEyCi1zY3NpNCA6IENvbXBhcSBGaWJyZUNoYW5uZWwgSEJBIFRhY2h5b24gVFMgSFBGQy01MTY2QS8xLjI6IFdXTiA1MDA1MDhCMjAwMTkzRjUwCi0gb24gUENJIGJ1cyAwIGRldmljZSAweGEwZmMgaXJxIDUgSU9iYXNlTCAweDM0MDAsIE1FTUJBU0UgMHhjNmVmODYwMAotUENJIGJ1cyB3aWR0aCAzMiBiaXRzLCBidXMgc3BlZWQgMzMgTUh6Ci1GQ1AtU0NTSSBEcml2ZXIgdjEuMy4wCi1HQklDIGRldGVjdGVkOiBTaG9ydC13YXZlLiAgTFBTTSAwaCBNb25pdG9yCi1zY3NpIDogNSBob3N0cy4KLSAgVmVuZG9yOiBJQk0gICAgICAgTW9kZWw6IEREWUYtVDE4MzUwUiAgICAgIFJldjogRjYwSwotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMwotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkYiBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAwLCBsdW4gMAotICBWZW5kb3I6IEhJVEFDSEkgICBNb2RlbDogREszMUNKLTcyRkMgICAgICAgUmV2OiBKOEE4Ci0gIFR5cGU6ICAgRGlyZWN0LUFjY2VzcyAgICAgICAgICAgICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyCi1EZXRlY3RlZCBzY3NpIGRpc2sgc2RjIGF0IHNjc2k0LCBjaGFubmVsIDAsIGlkIDEsIGx1biAwCi0gIFZlbmRvcjogU0VBR0FURSAgIE1vZGVsOiBTVDM5MTAyRkMgICAgICAgICBSZXY6IDAwMDYKLSAgVHlwZTogICBEaXJlY3QtQWNjZXNzICAgICAgICAgICAgICAgICAgICAgIEFOU0kgU0NTSSByZXZpc2lvbjogMDIKLURldGVjdGVkIHNjc2kgZGlzayBzZGQgYXQgc2NzaTQsIGNoYW5uZWwgMCwgaWQgMiwgbHVuIDAKLSAgVmVuZG9yOiBTRUFHQVRFICAgTW9kZWw6IFNUMzkxMDJGQyAgICAgICAgIFJldjogMDAwNgotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkZSBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAzLCBsdW4gMAotICBWZW5kb3I6IFNFQUdBVEUgICBNb2RlbDogU1QzOTEwMkZDICAgICAgICAgUmV2OiAwMDA2Ci0gIFR5cGU6ICAgRGlyZWN0LUFjY2VzcyAgICAgICAgICAgICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyCi1EZXRlY3RlZCBzY3NpIGRpc2sgc2RmIGF0IHNjc2k0LCBjaGFubmVsIDAsIGlkIDQsIGx1biAwCi0gIFZlbmRvcjogU0VBR0FURSAgIE1vZGVsOiBTVDM5MTAyRkMgICAgICAgICBSZXY6IDAwMDYKLSAgVHlwZTogICBEaXJlY3QtQWNjZXNzICAgICAgICAgICAgICAgICAgICAgIEFOU0kgU0NTSSByZXZpc2lvbjogMDIKLURldGVjdGVkIHNjc2kgZGlzayBzZGcgYXQgc2NzaTQsIGNoYW5uZWwgMCwgaWQgNSwgbHVuIDAKLSAgVmVuZG9yOiBTRUFHQVRFICAgTW9kZWw6IFNUMzkxMDJGQyAgICAgICAgIFJldjogMDAwNgotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkaCBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCA2LCBsdW4gMAotICBWZW5kb3I6IFNFQUdBVEUgICBNb2RlbDogU1QzOTEwMkZDICAgICAgICAgUmV2OiAwMDA2Ci0gIFR5cGU6ICAgRGlyZWN0LUFjY2VzcyAgICAgICAgICAgICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyCi1EZXRlY3RlZCBzY3NpIGRpc2sgc2RpIGF0IHNjc2k0LCBjaGFubmVsIDAsIGlkIDcsIGx1biAwCi0gIFZlbmRvcjogQ09NUEFRICAgIE1vZGVsOiBMT0dJQ0FMIFZPTFVNRSAgICBSZXY6IDIuNDgKLSAgVHlwZTogICBEaXJlY3QtQWNjZXNzICAgICAgICAgICAgICAgICAgICAgIEFOU0kgU0NTSSByZXZpc2lvbjogMDIKLURldGVjdGVkIHNjc2kgZGlzayBzZGogYXQgc2NzaTQsIGNoYW5uZWwgMCwgaWQgOCwgbHVuIDAKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi40OAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkayBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCA4LCBsdW4gMQotICBWZW5kb3I6IENPTVBBUSAgICBNb2RlbDogTE9HSUNBTCBWT0xVTUUgICAgUmV2OiAyLjQwCi0gIFR5cGU6ICAgRGlyZWN0LUFjY2VzcyAgICAgICAgICAgICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyCi1EZXRlY3RlZCBzY3NpIGRpc2sgc2RsIGF0IHNjc2k0LCBjaGFubmVsIDAsIGlkIDksIGx1biAwCi0gIFZlbmRvcjogQ09NUEFRICAgIE1vZGVsOiBMT0dJQ0FMIFZPTFVNRSAgICBSZXY6IDIuNDAKLSAgVHlwZTogICBEaXJlY3QtQWNjZXNzICAgICAgICAgICAgICAgICAgICAgIEFOU0kgU0NTSSByZXZpc2lvbjogMDIKLURldGVjdGVkIHNjc2kgZGlzayBzZG0gYXQgc2NzaTQsIGNoYW5uZWwgMCwgaWQgOSwgbHVuIDEKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi41NAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkbiBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAxMCwgbHVuIDAKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi41NAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkbyBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAxMSwgbHVuIDAKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi41NAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkcCBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAxMSwgbHVuIDEKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi41NAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkcSBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAxMiwgbHVuIDAKLSAgVmVuZG9yOiBDT01QQVEgICAgTW9kZWw6IExPR0lDQUwgVk9MVU1FICAgIFJldjogMi41NAotICBUeXBlOiAgIERpcmVjdC1BY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMgotRGV0ZWN0ZWQgc2NzaSBkaXNrIHNkciBhdCBzY3NpNCwgY2hhbm5lbCAwLCBpZCAxMiwgbHVuIDEKLXJlc2l6ZV9kbWFfcG9vbDogdW5rbm93biBkZXZpY2UgdHlwZSAxMgotcmVzaXplX2RtYV9wb29sOiB1bmtub3duIGRldmljZSB0eXBlIDEyCi1TQ1NJIGRldmljZSBzZGI6IGhkd3Igc2VjdG9yPSA1MTIgYnl0ZXMuIFNlY3RvcnM9IDM1ODQzNjcwIFsxNzUwMSBNQl0gWzE3LjUgR0JdCi0gc2RiOiBzZGIxCi1TQ1NJIGRldmljZSBzZGM6IGhkd3Igc2VjdG9yPSA1MTIgYnl0ZXMuIFNlY3RvcnM9IDE0NDQxMDg4MCBbNzA1MTMgTUJdIFs3MC41IEdCXQotIHNkYzogc2RjMQotU0NTSSBkZXZpY2Ugc2RkOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAxNzc4MzI0MCBbODY4MyBNQl0gWzguNyBHQl0KLSBzZGQ6IHNkZDEKLVNDU0kgZGV2aWNlIHNkZTogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gMTc3ODMyNDAgWzg2ODMgTUJdIFs4LjcgR0JdCi0gc2RlOiBzZGUxCi1TQ1NJIGRldmljZSBzZGY6IGhkd3Igc2VjdG9yPSA1MTIgYnl0ZXMuIFNlY3RvcnM9IDE3NzgzMjQwIFs4NjgzIE1CXSBbOC43IEdCXQotIHNkZjogc2RmMQotU0NTSSBkZXZpY2Ugc2RnOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAxNzc4MzI0MCBbODY4MyBNQl0gWzguNyBHQl0KLSBzZGc6IHNkZzEKLVNDU0kgZGV2aWNlIHNkaDogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gMTc3ODMyNDAgWzg2ODMgTUJdIFs4LjcgR0JdCi0gc2RoOiBzZGgxCi1TQ1NJIGRldmljZSBzZGk6IGhkd3Igc2VjdG9yPSA1MTIgYnl0ZXMuIFNlY3RvcnM9IDE3NzgzMjQwIFs4NjgzIE1CXSBbOC43IEdCXQotIHNkaTogc2RpMQotU0NTSSBkZXZpY2Ugc2RqOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAyMDU2MTYwIFsxMDAzIE1CXSBbMS4wIEdCXQotIHNkajogc2RqMQotU0NTSSBkZXZpY2Ugc2RrOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAyMDUyNzM2IFsxMDAyIE1CXSBbMS4wIEdCXQotIHNkazogc2RrMQotU0NTSSBkZXZpY2Ugc2RsOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAxNzc2NDMyMCBbODY3MyBNQl0gWzguNyBHQl0KLSBzZGw6IHNkbDEKLVNDU0kgZGV2aWNlIHNkbTogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gODM4MDMyMCBbNDA5MSBNQl0gWzQuMSBHQl0KLSBzZG06IHNkbTEKLVNDU0kgZGV2aWNlIHNkbjogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gMTc3NjQzMjAgWzg2NzMgTUJdIFs4LjcgR0JdCi0gc2RuOiBzZG4xCi1TQ1NJIGRldmljZSBzZG86IGhkd3Igc2VjdG9yPSA1MTIgYnl0ZXMuIFNlY3RvcnM9IDE3NzY0MzIwIFs4NjczIE1CXSBbOC43IEdCXQotIHNkbzogc2RvMQotU0NTSSBkZXZpY2Ugc2RwOiBoZHdyIHNlY3Rvcj0gNTEyIGJ5dGVzLiBTZWN0b3JzPSAxNzc2NDMyMCBbODY3MyBNQl0gWzguNyBHQl0KLSBzZHA6IHNkcDEKLVNDU0kgZGV2aWNlIHNkcTogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gMjA1NjE2MCBbMTAwMyBNQl0gWzEuMCBHQl0KLSBzZHE6IHNkcTEKLVNDU0kgZGV2aWNlIHNkcjogaGR3ciBzZWN0b3I9IDUxMiBieXRlcy4gU2VjdG9ycz0gMjA1MjczNiBbMTAwMiBNQl0gWzEuMCBHQl0KLSBzZHI6IHNkcjEKLQotKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1JZiBhIEdCSUMgb2YgdHlwZSBTaG9ydC13YXZlLCBMb25nLXdhdmUsIG9yIENvcHBlciBpcyBkZXRlY3RlZCwgaXQgd2lsbAotcHJpbnQgb3V0OyBvdGhlcndpc2UsICJub25lIiBpcyBkaXNwbGF5ZWQuICBJZiB0aGUgY2FibGluZyBpcyBjb3JyZWN0Ci1hbmQgYSBsb29wIGNpcmN1aXQgaXMgY29tcGxldGVkLCB5b3Ugc2hvdWxkIHNlZSAiTW9uaXRvciI7IG90aGVyd2lzZSwgCi0iTG9vcEZhaWwiIChvbiBvcGVuIGNpcmN1aXQpIG9yIHNvbWUgTFBTTSBudW1iZXIvc3RhdGUgd2l0aCBiaXQgMyBzZXQuCi0KLQotRVJSQVRBOgotMS4gTm9ybWFsbHksIExpbnV4IFNjc2kgcXVlcmllcyBGQyBkZXZpY2VzIHdpdGggSU5RVUlSWSBzdHJpbmdzLiAgQWxsIExVTnMKLWZvdW5kIGFjY29yZGluZyB0byBJTlFVSVJZIHNob3VsZCBnZXQgUkVBRCBjb21tYW5kcyBhdCBzZWN0b3IgMCB0byBmaW5kCi1wYXJ0aXRpb24gdGFibGUsIGV0Yy4gIE9sZGVyIGtlcm5lbHMgb25seSBxdWVyeSB0aGUgZmlyc3QgNCBkZXZpY2VzLiAgU29tZQotTGludXgga2VybmVscyBvbmx5IGxvb2sgZm9yIG9uZSBMVU4gcGVyIHRhcmdldCAoaS5lLiBGQyBkZXZpY2UpLgotCi0yLiBQaHlzaWNhbGx5IHJlbW92aW5nIGEgZGV2aWNlLCBvciBhIG1hbGZ1bmN0aW9uaW5nIHN5c3RlbSB3aGljaCBoaWRlcyBhCi1kZXZpY2UsIGxlYWRzIHRvIGEgMzAtc2Vjb25kIHRpbWVvdXQgYW5kIHN1YnNlcXVlbnQgX2Fib3J0IGNhbGwuICAKLUluIHNvbWUgcHJvY2VzcyBjb250ZXh0cywgdGhpcyB3aWxsIGhhbmcgdGhlIGtlcm5lbCAoY3Jhc2hpbmcgdGhlIHN5c3RlbSkuCi1TaW5nbGUgYml0IGVycm9ycyBpbiBmcmFtZXMgYW5kIHZpcnR1YWxseSBhbGwgaG90IHBsdWdnaW5nIGV2ZW50cyBhcmUgCi1ncmFjZWZ1bGx5IGhhbmRsZWQgd2l0aCBpbnRlcm5hbCBkcml2ZXIgdGltZXIgYW5kIEFib3J0IHByb2Nlc3NpbmcuCi0KLTMuIFNvbWUgU0NTSSBkcml2ZXMgd2l0aCBlcnJvciBjb25kaXRpb25zIHdpbGwgbm90IGhhbmRsZSB0aGUgNyBzZWNvbmQgdGltZW91dAotaW4gdGhpcyBzb2Z0d2FyZSBkcml2ZXIsIGxlYWRpbmcgdG8gaW5maW5pdGUgcmV0cmllcyBvbiB0aW1lZCBvdXQgU0NTSSBjb21tYW5kcy4KLVRoZSA3IHNlY3MgYmFsYW5jZXMgdGhlIG5lZWQgdG8gcXVpY2tseSByZWNvdmVyIGZyb20gbG9zdCBmcmFtZXMgKGVzcC4gb24gc2VxdWVuY2UKLWluaXRpYXRpdmVzKSBhbmQgdGltZSBuZWVkZWQgYnkgb2xkZXIvc2xvd2VyL2Vycm9yLXN0YXRlIGRyaXZlcyBpbiByZXNwb25kaW5nLgotVGhpcyBjYW4gYmUgZWFzaWx5IGNoYW5nZWQgaW4gIkV4Y2hhbmdlc1tdLnRpbWVPdXQiLgotCi00LiBEdWUgdG8gdGhlIG5hdHVyZSBvZiBGQyBzb2Z0IGFkZHJlc3NpbmcsIHRoZXJlIGlzIG5vIGFzc3VyYW5jZSB0aGF0IHRoZSAKLXNhbWUgTFVOcyAoZHJpdmVzKSB3aWxsIGhhdmUgdGhlIHNhbWUgcGF0aCAoZS5nLiAvZGV2L3NkYjEpIGZyb20gb25lIGJvb3QgdG8KLW5leHQuICBEeW5hbWljIHNvZnQgYWRkcmVzcyBjaGFuZ2VzIChpLmUuIDI0LWJpdCBGQyBwb3J0X2lkKSBhcmUKLXN1cHBvcnRlZCBkdXJpbmcgcnVuIHRpbWUgKGUuZy4gZHVlIHRvIGhvdCBwbHVnIGV2ZW50KSBieSB0aGUgdXNlIG9mIFdXTiB0bwotU0NTSSBOZXh1cyAoY2hhbm5lbC90YXJnZXQvTFVOKSBtYXBwaW5nLgotCi01LiBDb21wYXEgUkE0eDAwIGZpcm13YXJlIHZlcnNpb24gMi41NCBhbmQgbGF0ZXIgc3VwcG9ydHMgU1NQIChTZWxlY3RpdmUgCi1TdG9yYWdlIFByZXNlbnRhdGlvbiksIHdoaWNoIG1hcHMgTFVOcyB0byBhIFdXTi4gIElmIFJBNHgwMCBmaXJtd2FyZSBwcmlvcgotMi41NCAoZS5nLiBvbGRlciBjb250cm9sbGVyKSBpcyB1c2VkLCBvciB0aGUgRkMgSEJBIGlzIHJlcGxhY2VkIChhbm90aGVyIFdXTgotaXMgdXNlZCksIGxvZ2ljYWwgdm9sdW1lcyBvbiB0aGUgUkE0eDAwIHdpbGwgbm8gbG9uZ2VyIGJlIHZpc2libGUuCi0KLQotU2VuZCBxdWVzdGlvbnMvY29tbWVudHMgdG86Ci1BbXkgVmFuemFudC1Ib2RnZSAoZmlicmVjaGFubmVsQGNvbXBhcS5jb20pCi0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9ocHRpb3AudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2hwdGlvcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4YTMxMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9ocHRpb3AudHh0CkBAIC0wLDAgKzEsOTIgQEAKK0hJR0hQT0lOVCBST0NLRVRSQUlEIDN4eHggUkFJRCBEUklWRVIgKGhwdGlvcCkKKworQ29udHJvbGxlciBSZWdpc3RlciBNYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbnRyb2xsZXIgSU9QIGlzIGFjY2Vzc2VkIHZpYSBQQ0kgQkFSMC4KKworICAgICBCQVIwIG9mZnNldCAgICBSZWdpc3RlcgorICAgICAgICAgICAgMHgxMCAgICBJbmJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIgMAorICAgICAgICAgICAgMHgxNCAgICBJbmJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIgMQorICAgICAgICAgICAgMHgxOCAgICBPdXRib3VuZCBNZXNzYWdlIFJlZ2lzdGVyIDAKKyAgICAgICAgICAgIDB4MUMgICAgT3V0Ym91bmQgTWVzc2FnZSBSZWdpc3RlciAxCisgICAgICAgICAgICAweDIwICAgIEluYm91bmQgRG9vcmJlbGwgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MjQgICAgSW5ib3VuZCBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCisgICAgICAgICAgICAweDI4ICAgIEluYm91bmQgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MzAgICAgT3V0Ym91bmQgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgorICAgICAgICAgICAgMHgzNCAgICBPdXRib3VuZCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgorICAgICAgICAgICAgMHg0MCAgICBJbmJvdW5kIFF1ZXVlIFBvcnQKKyAgICAgICAgICAgIDB4NDQgICAgT3V0Ym91bmQgUXVldWUgUG9ydAorCisKK0kvTyBSZXF1ZXN0IFdvcmtmbG93CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBxdWV1ZWQgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdmlhIGluYm91bmQvb3V0Ym91bmQgcXVldWUgcG9ydC4KK0EgcmVxdWVzdCBwYWNrZXQgY2FuIGJlIGFsbG9jYXRlZCBpbiBlaXRoZXIgSU9QIG9yIGhvc3QgbWVtb3J5LgorCitUbyBzZW5kIGEgcmVxdWVzdCB0byB0aGUgY29udHJvbGxlcjoKKworICAgIC0gR2V0IGEgZnJlZSByZXF1ZXN0IHBhY2tldCBieSByZWFkaW5nIHRoZSBpbmJvdW5kIHF1ZXVlIHBvcnQgb3IKKyAgICAgIGFsbG9jYXRlIGEgZnJlZSByZXF1ZXN0IGluIGhvc3QgRE1BIGNvaGVyZW50IG1lbW9yeS4KKworICAgICAgVGhlIHZhbHVlIHJldHVybmVkIGZyb20gdGhlIGluYm91bmQgcXVldWUgcG9ydCBpcyBhbiBvZmZzZXQKKyAgICAgIHJlbGF0aXZlIHRvIHRoZSBJT1AgQkFSMC4KKworICAgICAgUmVxdWVzdHMgYWxsb2NhdGVkIGluIGhvc3QgbWVtb3J5IG11c3QgYmUgYWxpZ25lZCBvbiAzMi1ieXRlcyBib3VuZGFyeS4KKworICAgIC0gRmlsbCB0aGUgcGFja2V0LgorCisgICAgLSBQb3N0IHRoZSBwYWNrZXQgdG8gSU9QIGJ5IHdyaXRpbmcgaXQgdG8gaW5ib3VuZCBxdWV1ZS4gRm9yIHJlcXVlc3RzCisgICAgICBhbGxvY2F0ZWQgaW4gSU9QIG1lbW9yeSwgd3JpdGUgdGhlIG9mZnNldCB0byBpbmJvdW5kIHF1ZXVlIHBvcnQuIEZvcgorICAgICAgcmVxdWVzdHMgYWxsb2NhdGVkIGluIGhvc3QgbWVtb3J5LCB3cml0ZSAoMHg4MDAwMDAwMHwoYnVzX2FkZHI+PjUpKQorICAgICAgdG8gdGhlIGluYm91bmQgcXVldWUgcG9ydC4KKworICAgIC0gVGhlIElPUCBwcm9jZXNzIHRoZSByZXF1ZXN0LiBXaGVuIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlZCwgaXQKKyAgICAgIHdpbGwgYmUgcHV0IGludG8gb3V0Ym91bmQgcXVldWUuIEFuIG91dGJvdW5kIGludGVycnVwdCB3aWxsIGJlCisgICAgICBnZW5lcmF0ZWQuCisKKyAgICAgIEZvciByZXF1ZXN0cyBhbGxvY2F0ZWQgaW4gSU9QIG1lbW9yeSwgdGhlIHJlcXVlc3Qgb2Zmc2V0IGlzIHBvc3RlZCB0bworICAgICAgb3V0Ym91bmQgcXVldWUuCisKKyAgICAgIEZvciByZXF1ZXN0cyBhbGxvY2F0ZWQgaW4gaG9zdCBtZW1vcnksICgweDgwMDAwMDAwfChidXNfYWRkcj4+NSkpCisgICAgICBpcyBwb3N0ZWQgdG8gdGhlIG91dGJvdW5kIHF1ZXVlLiBJZiBJT1BfUkVRVUVTVF9GTEFHX09VVFBVVF9DT05URVhUCisgICAgICBmbGFnIGlzIHNldCBpbiB0aGUgcmVxdWVzdCwgdGhlIGxvdyAzMi1iaXQgY29udGV4dCB2YWx1ZSB3aWxsIGJlCisgICAgICBwb3N0ZWQgaW5zdGVhZC4KKworICAgIC0gVGhlIGhvc3QgcmVhZCB0aGUgb3V0Ym91bmQgcXVldWUgYW5kIGNvbXBsZXRlIHRoZSByZXF1ZXN0LgorCisgICAgICBGb3IgcmVxdWVzdHMgYWxsb2NhdGVkIGluIElPUCBtZW1vcnksIHRoZSBob3N0IGRyaXZlciBmcmVlIHRoZSByZXF1ZXN0CisgICAgICBieSB3cml0aW5nIGl0IHRvIHRoZSBvdXRib3VuZCBxdWV1ZS4KKworTm9uLXF1ZXVlZCByZXF1ZXN0cyAocmVzZXQvZmx1c2ggZXRjKSBjYW4gYmUgc2VudCB2aWEgaW5ib3VuZCBtZXNzYWdlCityZWdpc3RlciAwLiBBbiBvdXRib3VuZCBtZXNzYWdlIHdpdGggdGhlIHNhbWUgdmFsdWUgaW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uCitvZiBhbiBpbmJvdW5kIG1lc3NhZ2UuCisKKworVXNlci1sZXZlbCBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIGV4cG9zZXMgZm9sbG93aW5nIHN5c2ZzIGF0dHJpYnV0ZXM6CisKKyAgICAgTkFNRSAgICAgICAgICAgICAgICAgUi9XICAgIERlc2NyaXB0aW9uCisgICAgIGRyaXZlci12ZXJzaW9uICAgICAgICBSICAgICBkcml2ZXIgdmVyc2lvbiBzdHJpbmcKKyAgICAgZmlybXdhcmUtdmVyc2lvbiAgICAgIFIgICAgIGZpcm13YXJlIHZlcnNpb24gc3RyaW5nCisKK1RoZSBkcml2ZXIgcmVnaXN0ZXJzIGNoYXIgZGV2aWNlICJocHRpb3AiIHRvIGNvbW11bmljYXRlIHdpdGggSGlnaFBvaW50IFJBSUQKK21hbmFnZW1lbnQgc29mdHdhcmUuIEl0cyBpb2N0bCByb3V0aW5lIGFjdHMgYXMgYSBnZW5lcmFsIGJpbmFyeSBpbnRlcmZhY2UgCitiZXR3ZWVuIHRoZSBJT1AgZmlybXdhcmUgYW5kIEhpZ2hQb2ludCBSQUlEIG1hbmFnZW1lbnQgc29mdHdhcmUuIE5ldyBtYW5hZ2VtZW50CitmdW5jdGlvbnMgY2FuIGJlIGltcGxlbWVudGVkIGluIGFwcGxpY2F0aW9uL2Zpcm13YXJlIHdpdGhvdXQgbW9kaWZpY2F0aW9uCitpbiBkcml2ZXIgY29kZS4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29weXJpZ2h0IChDKSAyMDA2IEhpZ2hQb2ludCBUZWNobm9sb2dpZXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgIGxpbnV4QGhpZ2hwb2ludC10ZWNoLmNvbQorICBodHRwOi8vd3d3LmhpZ2hwb2ludC10ZWNoLmNvbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQUxTQS1Db25maWd1cmF0aW9uLnR4dAppbmRleCAwZWUyYzdkLi44N2Q3NmE1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQUxTQS1Db25maWd1cmF0aW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQUxTQS1Db25maWd1cmF0aW9uLnR4dApAQCAtMzY2LDcgKzM2Niw5IEBACiAKICAgICBNb2R1bGUgZm9yIEMtTWVkaWEgQ01JODMzOCBhbmQgODczOCBQQ0kgc291bmQgY2FyZHMuCiAKLSAgICBtcHVfcG9ydAktIDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwLCAwID0gZGlzYWJsZSAoZGVmYXVsdCkKKyAgICBtcHVfcG9ydAktIDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwID0gbGVnYWN5IHBvcnQsCisJCSAgMSA9IGludGVncmF0ZWQgUENJIHBvcnQsCisJCSAgMCA9IGRpc2FibGUgKGRlZmF1bHQpCiAgICAgZm1fcG9ydCAgICAgLSAweDM4OCAoZGVmYXVsdCksIDAgPSBkaXNhYmxlIChkZWZhdWx0KQogICAgIHNvZnRfYWMzICAgIC0gU29mdHdhcmUtY29udmVyc2lvbiBvZiByYXcgU1BESUYgcGFja2V0cyAobW9kZWwgMDMzIG9ubHkpCiAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA9IDEpCkBAIC00NjgsNyArNDcwLDcgQEAKIAogICAgIE1vZHVsZSBmb3IgbXVsdGlmdW5jdGlvbiBDUzU1MzUgY29tcGFuaW9uIFBDSSBkZXZpY2UKIAotICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KIAogICBNb2R1bGUgc25kLWR0MDE5eAogICAtLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzA3LDggKzcwOSwxMCBAQAogICBNb2R1bGUgc25kLWhkYS1pbnRlbAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgTW9kdWxlIGZvciBJbnRlbCBIRCBBdWRpbyAoSUNINiwgSUNINk0sIElDSDcpLCBBVEkgU0I0NTAsCi0JICAgICAgIFZJQSBWVDgyNTEvVlQ4MjM3QQorICAgIE1vZHVsZSBmb3IgSW50ZWwgSEQgQXVkaW8gKElDSDYsIElDSDZNLCBFU0IyLCBJQ0g3LCBJQ0g4KSwKKwkJQVRJIFNCNDUwLCBTQjYwMCwgUlM2MDAsCisJCVZJQSBWVDgyNTEvVlQ4MjM3QSwKKwkJU0lTOTY2LCBVTEkgTTU0NjEKIAogICAgIG1vZGVsCS0gZm9yY2UgdGhlIG1vZGVsIG5hbWUKICAgICBwb3NpdGlvbl9maXggLSBGaXggRE1BIHBvaW50ZXIgKDAgPSBhdXRvLCAxID0gbm9uZSwgMiA9IFBPU0JVRiwgMyA9IEZJRk8gc2l6ZSkKQEAgLTc3OCw2ICs3ODIsNyBAQAogCUFEMTk4MQogCSAgYmFzaWMJCTMtamFjayAoZGVmYXVsdCkKIAkgIGhwCQlIUCBueDYzMjAKKwkgIHRoaW5rcGFkCUxlbm92byBUaGlua3BhZCBUNjAvWDYwL1o2MAogCiAJQUQxOTg2QQogCSAgNnN0YWNrCTYtamFjaywgc2VwYXJhdGUgc3Vycm91bmRzIChkZWZhdWx0KQpAQCAtMTYzMyw5ICsxNjM4LDcgQEAKIAogICAgIEFib3V0IGNhcHR1cmUgSUJMLCBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHNuZC12eDIyMiBtb2R1bGUuCiAKLSAgICBOb3RlOiB0aGUgZHJpdmVyIGlzIGJ1aWxkIG9ubHkgd2hlbiBDT05GSUdfSVNBIGlzIHNldC4KLSAgICAKLSAgICBOb3RlMjogc25kLXZ4cDQ0MCBkcml2ZXIgaXMgbWVyZ2VkIHRvIHNuZC12eHBvY2tldCBkcml2ZXIgc2luY2UKKyAgICBOb3RlOiBzbmQtdnhwNDQwIGRyaXZlciBpcyBtZXJnZWQgdG8gc25kLXZ4cG9ja2V0IGRyaXZlciBzaW5jZQogICAgICAgICAgICBBTFNBIDEuMC4xMC4KIAogICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KQEAgLTE2NjIsOCArMTY2NSw2IEBACiAKICAgICBNb2R1bGUgZm9yIFNvdW5kIENvcmUgUERBdWRpb0NGIHNvdW5kIGNhcmQuCiAKLSAgICBOb3RlOiB0aGUgZHJpdmVyIGlzIGJ1aWxkIG9ubHkgd2hlbiBDT05GSUdfSVNBIGlzIHNldC4KLQogICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KIAogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwKaW5kZXggMWZhZjc2My4uNjM1Y2JiOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0RvY0Jvb2svd3JpdGluZy1hbi1hbHNhLWRyaXZlci50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9Eb2NCb29rL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIudG1wbApAQCAtNDIxNSw3ICs0MjE1LDcgQEAKICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiA8IVtDREFUQVsKICAgc3RydWN0IHNuZF9yYXdtaWRpICpybWlkaTsKLSAgc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAwLCBNUFU0MDFfSFdfTVBVNDAxLCBwb3J0LCBpbnRlZ3JhdGVkLAorICBzbmRfbXB1NDAxX3VhcnRfbmV3KGNhcmQsIDAsIE1QVTQwMV9IV19NUFU0MDEsIHBvcnQsIGluZm9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgaXJxLCBpcnFfZmxhZ3MsICZybWlkaSk7CiBdXT4KICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgpAQCAtNDI0MiwxNSArNDI0MiwzNiBAQAogICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KKwlUaGUgNXRoIGFyZ3VtZW50IGlzIGJpdGZsYWdzIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgogICAgICAgICBXaGVuIHRoZSBpL28gcG9ydCBhZGRyZXNzIGFib3ZlIGlzIGEgcGFydCBvZiB0aGUgUENJIGkvbwogICAgICAgcmVnaW9uLCB0aGUgTVBVNDAxIGkvbyBwb3J0IG1pZ2h0IGhhdmUgYmVlbiBhbHJlYWR5IGFsbG9jYXRlZAotICAgICAgKHJlc2VydmVkKSBieSB0aGUgZHJpdmVyIGl0c2VsZi4gSW4gc3VjaCBhIGNhc2UsIHBhc3Mgbm9uLXplcm8KLSAgICAgIHRvIHRoZSA1dGggYXJndW1lbnQKLSAgICAgICg8cGFyYW1ldGVyPmludGVncmF0ZWQ8L3BhcmFtZXRlcj4pLiBPdGhlcndpc2UsIHBhc3MgMCB0byBpdCwKKyAgICAgIChyZXNlcnZlZCkgYnkgdGhlIGRyaXZlciBpdHNlbGYuIEluIHN1Y2ggYSBjYXNlLCBwYXNzIGEgYml0IGZsYWcKKyAgICAgIDxjb25zdGFudD5NUFU0MDFfSU5GT19JTlRFR1JBVEVEPC9jb25zdGFudD4sCiAgICAgICBhbmQgCiAgICAgICB0aGUgbXB1NDAxLXVhcnQgbGF5ZXIgd2lsbCBhbGxvY2F0ZSB0aGUgaS9vIHBvcnRzIGJ5IGl0c2VsZi4gCiAgICAgICA8L3BhcmE+CiAKKwk8cGFyYT4KKwlXaGVuIHRoZSBjb250cm9sbGVyIHN1cHBvcnRzIG9ubHkgdGhlIGlucHV0IG9yIG91dHB1dCBNSURJIHN0cmVhbSwKKwlwYXNzIDxjb25zdGFudD5NUFU0MDFfSU5GT19JTlBVVDwvY29uc3RhbnQ+IG9yCisJPGNvbnN0YW50Pk1QVTQwMV9JTkZPX09VVFBVVDwvY29uc3RhbnQ+IGJpdGZsYWcsIHJlc3BlY3RpdmVseS4KKwlUaGVuIHRoZSByYXdtaWRpIGluc3RhbmNlIGlzIGNyZWF0ZWQgYXMgYSBzaW5nbGUgc3RyZWFtLgorCTwvcGFyYT4KKworCTxwYXJhPgorCTxjb25zdGFudD5NUFU0MDFfSU5GT19NTUlPPC9jb25zdGFudD4gYml0ZmxhZyBpcyB1c2VkIHRvIGNoYW5nZQorCXRoZSBhY2Nlc3MgbWV0aG9kIHRvIE1NSU8gKHZpYSByZWFkYiBhbmQgd3JpdGViKSBpbnN0ZWFkIG9mCisJaW9iIGFuZCBvdXRiLiAgSW4gdGhpcyBjYXNlLCB5b3UgaGF2ZSB0byBwYXNzIHRoZSBpb21hcHBlZCBhZGRyZXNzCisJdG8gPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9uZXcoKTwvZnVuY3Rpb24+LgorCTwvcGFyYT4KKworCTxwYXJhPgorCVdoZW4gPGNvbnN0YW50Pk1QVTQwMV9JTkZPX1RYX0lSUTwvY29uc3RhbnQ+IGlzIHNldCwgdGhlIG91dHB1dAorCXN0cmVhbSBpc24ndCBjaGVja2VkIGluIHRoZSBkZWZhdWx0IGludGVycnVwdCBoYW5kbGVyLiAgVGhlIGRyaXZlcgorCW5lZWRzIHRvIGNhbGwgPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHRfdHgoKTwvZnVuY3Rpb24+CisJYnkgaXRzZWxmIHRvIHN0YXJ0IHByb2Nlc3NpbmcgdGhlIG91dHB1dCBzdHJlYW0gaW4gaXJxIGhhbmRsZXIuCisJPC9wYXJhPgorCiAgICAgICA8cGFyYT4KICAgICAgICAgVXN1YWxseSwgdGhlIHBvcnQgYWRkcmVzcyBjb3JyZXNwb25kcyB0byB0aGUgY29tbWFuZCBwb3J0IGFuZAogICAgICAgICBwb3J0ICsgMSBjb3JyZXNwb25kcyB0byB0aGUgZGF0YSBwb3J0LiBJZiBub3QsIHlvdSBtYXkgY2hhbmdlCkBAIC01MzMzLDcgKzUzNTQsNyBAQAogICAgICAgPGluZm9ybWFsZXhhbXBsZT4KICAgICAgICAgPHByb2dyYW1saXN0aW5nPgogPCFbQ0RBVEFbCi0gIHNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgcmVhZF9zaXplLCBteV9wcm9jX3JlYWQpOworICBzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIG15X3Byb2NfcmVhZCk7CiBdXT4KICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgpAQCAtNTM5NCw3ICs1NDE1LDYgQEAKICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CiAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIDwhW0NEQVRBWwotICBlbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSAyNTY7CiAgIGVudHJ5LT5jLnRleHQud3JpdGUgPSBteV9wcm9jX3dyaXRlOwogXV0+CiAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CkBAIC01NDAyLDIyICs1NDIyLDYgQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICBUaGUgYnVmZmVyIHNpemUgZm9yIHJlYWQgaXMgc2V0IHRvIDEwMjQgaW1wbGljaXRseSBieQotICAgIDxmdW5jdGlvbj5zbmRfaW5mb19zZXRfdGV4dF9vcHMoKTwvZnVuY3Rpb24+LiAgSXQgc2hvdWxkIHN1ZmZpY2UKLSAgICBpbiBtb3N0IGNhc2VzICh0aGUgc2l6ZSB3aWxsIGJlIGFsaWduZWQgdG8KLSAgICA8Y29uc3RhbnQ+UEFHRV9TSVpFPC9jb25zdGFudD4gYW55d2F5KSwgYnV0IGlmIHlvdSBuZWVkIHRvIGhhbmRsZQotICAgIHZlcnkgbGFyZ2UgdGV4dCBmaWxlcywgeW91IGNhbiBzZXQgaXQgZXhwbGljaXRseSwgdG9vLgotCi0gICAgICA8aW5mb3JtYWxleGFtcGxlPgotICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Ci08IVtDREFUQVsKLSAgZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSA2NTUzNjsKLV1dPgotICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgotICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+CiAgICAgICBGb3IgdGhlIHdyaXRlIGNhbGxiYWNrLCB5b3UgY2FuIHVzZQogICAgIDxmdW5jdGlvbj5zbmRfaW5mb19nZXRfbGluZSgpPC9mdW5jdGlvbj4gdG8gZ2V0IGEgdGV4dCBsaW5lLCBhbmQKICAgICA8ZnVuY3Rpb24+c25kX2luZm9fZ2V0X3N0cigpPC9mdW5jdGlvbj4gdG8gcmV0cmlldmUgYSBzdHJpbmcgZnJvbQpAQCAtNTU2Miw3ICs1NTY2LDcgQEAKIAkgIHBvd2VyIHN0YXR1cy48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNhbGwgPGZ1bmN0aW9uPnNuZF9wY21fc3VzcGVuZF9hbGwoKTwvZnVuY3Rpb24+IHRvIHN1c3BlbmQgdGhlIHJ1bm5pbmcgUENNIHN0cmVhbXMuPC9wYXJhPjwvbGlzdGl0ZW0+CiAJPGxpc3RpdGVtPjxwYXJhPklmIEFDOTcgY29kZWNzIGFyZSB1c2VkLCBjYWxsCi0JPGZ1bmN0aW9uPnNuZF9hYzk3X3Jlc3VtZSgpPC9mdW5jdGlvbj4gZm9yIGVhY2ggY29kZWMuPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGZ1bmN0aW9uPnNuZF9hYzk3X3N1c3BlbmQoKTwvZnVuY3Rpb24+IGZvciBlYWNoIGNvZGVjLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2F2ZSB0aGUgcmVnaXN0ZXIgdmFsdWVzIGlmIG5lY2Vzc2FyeS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN0b3AgdGhlIGhhcmR3YXJlIGlmIG5lY2Vzc2FyeS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRpc2FibGUgdGhlIFBDSSBkZXZpY2UgYnkgY2FsbGluZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGFyc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9zcGFyc2UudHh0CmluZGV4IDNmMWM1NDYuLjVhMzExYzMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc3BhcnNlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3NwYXJzZS50eHQKQEAgLTEsNSArMSw2IEBACiBDb3B5cmlnaHQgMjAwNCBMaW51cyBUb3J2YWxkcwogQ29weXJpZ2h0IDIwMDQgUGF2ZWwgTWFjaGVrIDxwYXZlbEBzdXNlLmN6PgorQ29weXJpZ2h0IDIwMDYgQm9iIENvcGVsYW5kIDxtZUBib2Jjb3BlbGFuZC5jb20+CiAKIFVzaW5nIHNwYXJzZSBmb3IgdHlwZWNoZWNraW5nCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtNDEsMTUgKzQyLDggQEAKIHZzIGNwdS1lbmRpYW4gdnMgd2hhdGV2ZXIpLCBhbmQgdGhlcmUgdGhlIGNvbnN0YW50ICIwIiByZWFsbHkgX2lzXwogc3BlY2lhbC4KIAotVXNlCi0KLQltYWtlIEM9WzEyXSBDRj0tV2JpdHdpc2UKLQotb3IgeW91IGRvbid0IGdldCBhbnkgY2hlY2tpbmcgYXQgYWxsLgotCi0KLVdoZXJlIHRvIGdldCBzcGFyc2UKLX5+fn5+fn5+fn5+fn5+fn5+fn4KK0dldHRpbmcgc3BhcnNlCit+fn5+fn5+fn5+fn5+fgogCiBXaXRoIGdpdCwgeW91IGNhbiBqdXN0IGdldCBpdCBmcm9tCiAKQEAgLTU3LDcgKzUxLDcgQEAKIAogYW5kIERhdmVKIGhhcyB0YXItYmFsbHMgYXQKIAotCWh0dHA6Ly93d3cuY29kZW1vbmtleS5vcmcudWsvcHJvamVjdHMvZ2l0LXNuYXBzaG90cy9zcGFyc2UvCisgICAgICAgIGh0dHA6Ly93d3cuY29kZW1vbmtleS5vcmcudWsvcHJvamVjdHMvZ2l0LXNuYXBzaG90cy9zcGFyc2UvCiAKIAogT25jZSB5b3UgaGF2ZSBpdCwganVzdCBkbwpAQCAtNjUsOCArNTksMjAgQEAKICAgICAgICAgbWFrZQogICAgICAgICBtYWtlIGluc3RhbGwKIAotYXMgeW91ciByZWd1bGFyIHVzZXIsIGFuZCBpdCB3aWxsIGluc3RhbGwgc3BhcnNlIGluIHlvdXIgfi9iaW4gZGlyZWN0b3J5LgotQWZ0ZXIgdGhhdCwgZG9pbmcgYSBrZXJuZWwgbWFrZSB3aXRoICJtYWtlIEM9MSIgd2lsbCBydW4gc3BhcnNlIG9uIGFsbCB0aGUKLUMgZmlsZXMgdGhhdCBnZXQgcmVjb21waWxlZCwgb3Igd2l0aCAibWFrZSBDPTIiIHdpbGwgcnVuIHNwYXJzZSBvbiB0aGUKLWZpbGVzIHdoZXRoZXIgdGhleSBuZWVkIHRvIGJlIHJlY29tcGlsZWQgb3Igbm90IChpZSB0aGUgbGF0dGVyIGlzIGZhc3Qgd2F5Ci10byBjaGVjayB0aGUgd2hvbGUgdHJlZSBpZiB5b3UgaGF2ZSBhbHJlYWR5IGJ1aWx0IGl0KS4KK2FzIGEgcmVndWxhciB1c2VyLCBhbmQgaXQgd2lsbCBpbnN0YWxsIHNwYXJzZSBpbiB5b3VyIH4vYmluIGRpcmVjdG9yeS4KKworVXNpbmcgc3BhcnNlCit+fn5+fn5+fn5+fn4KKworRG8gYSBrZXJuZWwgbWFrZSB3aXRoICJtYWtlIEM9MSIgdG8gcnVuIHNwYXJzZSBvbiBhbGwgdGhlIEMgZmlsZXMgdGhhdCBnZXQKK3JlY29tcGlsZWQsIG9yIHVzZSAibWFrZSBDPTIiIHRvIHJ1biBzcGFyc2Ugb24gdGhlIGZpbGVzIHdoZXRoZXIgdGhleSBuZWVkIHRvCitiZSByZWNvbXBpbGVkIG9yIG5vdC4gIFRoZSBsYXR0ZXIgaXMgYSBmYXN0IHdheSB0byBjaGVjayB0aGUgd2hvbGUgdHJlZSBpZiB5b3UKK2hhdmUgYWxyZWFkeSBidWlsdCBpdC4KKworVGhlIG9wdGlvbmFsIG1ha2UgdmFyaWFibGUgQ0YgY2FuIGJlIHVzZWQgdG8gcGFzcyBhcmd1bWVudHMgdG8gc3BhcnNlLiAgVGhlCitidWlsZCBzeXN0ZW0gcGFzc2VzIC1XYml0d2lzZSB0byBzcGFyc2UgYXV0b21hdGljYWxseS4gIFRvIHBlcmZvcm0gZW5kaWFubmVzcworY2hlY2tzLCB5b3UgbWF5IGRlZmluZSBfX0NIRUNLX0VORElBTl9fOgorCisgICAgICAgIG1ha2UgQz0yIENGPSItRF9fQ0hFQ0tfRU5ESUFOX18iCisKK1RoZXNlIGNoZWNrcyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBhcyB0aGV5IGdlbmVyYXRlIGEgaG9zdCBvZiB3YXJuaW5ncy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL3ZtLnR4dCBiL0RvY3VtZW50YXRpb24vc3lzY3RsL3ZtLnR4dAppbmRleCBhNDZjMTBmLi4yZGMyNDZhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC92bS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwvdm0udHh0CkBAIC0yOSw2ICsyOSw3IEBACiAtIGRyb3AtY2FjaGVzCiAtIHpvbmVfcmVjbGFpbV9tb2RlCiAtIHpvbmVfcmVjbGFpbV9pbnRlcnZhbAorLSBwYW5pY19vbl9vb20KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTc4LDMgKzE3OSwxNSBAQAogUmVkdWNlIHRoZSBpbnRlcnZhbCBpZiB1bmRlc2lyZWQgb2ZmIG5vZGUgYWxsb2NhdGlvbnMgb2NjdXIuIEhvd2V2ZXIsIHRvbwogZnJlcXVlbnQgc2NhbnMgd2lsbCBoYXZlIGEgbmVnYXRpdmUgaW1wYWN0IG9ub2ZmIG5vZGUgYWxsb2NhdGlvbiBwZXJmb3JtYW5jZS4KIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwYW5pY19vbl9vb20KKworVGhpcyBlbmFibGVzIG9yIGRpc2FibGVzIHBhbmljIG9uIG91dC1vZi1tZW1vcnkgZmVhdHVyZS4gIElmIHRoaXMgaXMgc2V0IHRvIDEsCit0aGUga2VybmVsIHBhbmljcyB3aGVuIG91dC1vZi1tZW1vcnkgaGFwcGVucy4gIElmIHRoaXMgaXMgc2V0IHRvIDAsIHRoZSBrZXJuZWwKK3dpbGwga2lsbCBzb21lIHJvZ3VlIHByb2Nlc3MsIGNhbGxlZCBvb21fa2lsbGVyLiAgVXN1YWxseSwgb29tX2tpbGxlciBjYW4ga2lsbAorcm9ndWUgcHJvY2Vzc2VzIGFuZCBzeXN0ZW0gd2lsbCBzdXJ2aXZlLiAgSWYgeW91IHdhbnQgdG8gcGFuaWMgdGhlIHN5c3RlbQorcmF0aGVyIHRoYW4ga2lsbGluZyByb2d1ZSBwcm9jZXNzZXMsIHNldCB0aGlzIHRvIDEuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIDAuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3VzYm1vbi50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi91c2Jtb24udHh0CmluZGV4IDYzY2I3ZWQuLmU2NWVjODIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXNiL3VzYm1vbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvdXNibW9uLnR4dApAQCAtMjksMTQgKzI5LDEzIEBACiAKICMgbW91bnQgLXQgZGVidWdmcyBub25lX2RlYnVncyAvc3lzL2tlcm5lbC9kZWJ1ZwogIyBtb2Rwcm9iZSB1c2Jtb24KKyMKIAogVmVyaWZ5IHRoYXQgYnVzIHNvY2tldHMgYXJlIHByZXNlbnQuCiAKLVtyb290QGxlbWJhcyB6YWl0Y2V2XSMgbHMgL3N5cy9rZXJuZWwvZGVidWcvdXNibW9uCisjIGxzIC9zeXMva2VybmVsL2RlYnVnL3VzYm1vbgogMXMgIDF0ICAycyAgMnQgIDNzICAzdCAgNHMgIDR0Ci1bcm9vdEBsZW1iYXMgemFpdGNldl0jCi0KLSMgbHMgL3N5cy9rZXJuZWwKKyMKIAogMi4gRmluZCB3aGljaCBidXMgY29ubmVjdHMgdG8gdGhlIGRlc2lyZWQgZGV2aWNlCiAKQEAgLTc2LDcgKzc1LDcgQEAKIAogKiBSYXcgdGV4dCBkYXRhIGZvcm1hdAogCi1UaGUgJzB0JyB0eXBlIGRhdGEgY29uc2lzdHMgb2YgYSBzdHJlYW0gb2YgZXZlbnRzLCBzdWNoIGFzIFVSQiBzdWJtaXNzaW9uLAorVGhlICcxdCcgdHlwZSBkYXRhIGNvbnNpc3RzIG9mIGEgc3RyZWFtIG9mIGV2ZW50cywgc3VjaCBhcyBVUkIgc3VibWlzc2lvbiwKIFVSQiBjYWxsYmFjaywgc3VibWlzc2lvbiBlcnJvci4gRXZlcnkgZXZlbnQgaXMgYSB0ZXh0IGxpbmUsIHdoaWNoIGNvbnNpc3RzCiBvZiB3aGl0ZXNwYWNlIHNlcGFyYXRlZCB3b3Jkcy4gVGhlIG51bWJlciBvZiBwb3NpdGlvbiBvZiB3b3JkcyBtYXkgZGVwZW5kCiBvbiB0aGUgZXZlbnQgdHlwZSwgYnV0IHRoZXJlIGlzIGEgc2V0IG9mIHdvcmRzLCBjb21tb24gZm9yIGFsbCB0eXBlcy4KQEAgLTk3LDIwICs5NiwyNSBAQAogICAgIFppIFpvICAgSXNvY2hyb25vdXMgaW5wdXQgYW5kIG91dHB1dAogICAgIElpIElvICAgSW50ZXJydXB0IGlucHV0IGFuZCBvdXRwdXQKICAgICBCaSBCbyAgIEJ1bGsgaW5wdXQgYW5kIG91dHB1dAotICBEZXZpY2UgYWRkcmVzcyBhbmQgRW5kcG9pbnQgbnVtYmVyIGFyZSBkZWNpbWFsIG51bWJlcnMgd2l0aCBsZWFkaW5nIHplcm9lcwotICBvciAzIGFuZCAyIHBvc2l0aW9ucywgY29ycmVzcG9uZGluZ2x5LgotLSBVUkIgU3RhdHVzLiBUaGlzIGZpZWxkIG1ha2VzIG5vIHNlbnNlIGZvciBzdWJtaXNzaW9ucywgYnV0IGlzIHByZXNlbnQKLSAgdG8gaGVscCBzY3JpcHRzIHdpdGggcGFyc2luZy4gSW4gZXJyb3IgY2FzZSwgaXQgY29udGFpbnMgdGhlIGVycm9yIGNvZGUuCi0gIEluIGNhc2Ugb2YgYSBzZXR1cCBwYWNrZXQsIGl0IGNvbnRhaW5zIGEgU2V0dXAgVGFnLiBJZiBzY3JpcHRzIHJlYWQgYSBudW1iZXIKLSAgaW4gdGhpcyBmaWVsZCwgdGhleSBwcm9jZWVkIHRvIHJlYWQgRGF0YSBMZW5ndGguIE90aGVyd2lzZSwgdGhleSByZWFkCi0gIHRoZSBzZXR1cCBwYWNrZXQgYmVmb3JlIHJlYWRpbmcgdGhlIERhdGEgTGVuZ3RoLgorICBEZXZpY2UgYWRkcmVzcyBhbmQgRW5kcG9pbnQgbnVtYmVyIGFyZSAzLWRpZ2l0IGFuZCAyLWRpZ2l0IChyZXNwZWN0aXZlbHkpCisgIGRlY2ltYWwgbnVtYmVycywgd2l0aCBsZWFkaW5nIHplcm9lcy4KKy0gVVJCIFN0YXR1cy4gSW4gbW9zdCBjYXNlcywgdGhpcyBmaWVsZCBjb250YWlucyBhIG51bWJlciwgc29tZXRpbWVzIG5lZ2F0aXZlLAorICB3aGljaCByZXByZXNlbnRzIGEgInN0YXR1cyIgZmllbGQgb2YgdGhlIFVSQi4gVGhpcyBmaWVsZCBtYWtlcyBubyBzZW5zZSBmb3IKKyAgc3VibWlzc2lvbnMsIGJ1dCBpcyBwcmVzZW50IGFueXdheSB0byBoZWxwIHNjcmlwdHMgd2l0aCBwYXJzaW5nLiBXaGVuIGFuCisgIGVycm9yIG9jY3VycywgdGhlIGZpZWxkIGNvbnRhaW5zIHRoZSBlcnJvciBjb2RlLiBJbiBjYXNlIG9mIGEgc3VibWlzc2lvbiBvZgorICBhIENvbnRyb2wgcGFja2V0LCB0aGlzIGZpZWxkIGNvbnRhaW5zIGEgU2V0dXAgVGFnIGluc3RlYWQgb2YgYW4gZXJyb3IgY29kZS4KKyAgSXQgaXMgZWFzeSB0byB0ZWxsIHdoZXRoZXIgdGhlIFNldHVwIFRhZyBpcyBwcmVzZW50IGJlY2F1c2UgaXQgaXMgbmV2ZXIgYQorICBudW1iZXIuIFRodXMgaWYgc2NyaXB0cyBmaW5kIGEgbnVtYmVyIGluIHRoaXMgZmllbGQsIHRoZXkgcHJvY2VlZCB0byByZWFkCisgIERhdGEgTGVuZ3RoLiBJZiB0aGV5IGZpbmQgc29tZXRoaW5nIGVsc2UsIGxpa2UgYSBsZXR0ZXIsIHRoZXkgcmVhZCB0aGUgc2V0dXAKKyAgcGFja2V0IGJlZm9yZSByZWFkaW5nIHRoZSBEYXRhIExlbmd0aC4KIC0gU2V0dXAgcGFja2V0LCBpZiBwcmVzZW50LCBjb25zaXN0cyBvZiA1IHdvcmRzOiBvbmUgb2YgZWFjaCBmb3IgYm1SZXF1ZXN0VHlwZSwKICAgYlJlcXVlc3QsIHdWYWx1ZSwgd0luZGV4LCB3TGVuZ3RoLCBhcyBzcGVjaWZpZWQgYnkgdGhlIFVTQiBTcGVjaWZpY2F0aW9uIDIuMC4KICAgVGhlc2Ugd29yZHMgYXJlIHNhZmUgdG8gZGVjb2RlIGlmIFNldHVwIFRhZyB3YXMgJ3MnLiBPdGhlcndpc2UsIHRoZSBzZXR1cAogICBwYWNrZXQgd2FzIHByZXNlbnQsIGJ1dCBub3QgY2FwdHVyZWQsIGFuZCB0aGUgZmllbGRzIGNvbnRhaW4gZmlsbGVyLgotLSBEYXRhIExlbmd0aC4gVGhpcyBpcyB0aGUgYWN0dWFsIGxlbmd0aCBpbiB0aGUgVVJCLgorLSBEYXRhIExlbmd0aC4gRm9yIHN1Ym1pc3Npb25zLCB0aGlzIGlzIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoLiBGb3IgY2FsbGJhY2tzLAorICB0aGlzIGlzIHRoZSBhY3R1YWwgbGVuZ3RoLgogLSBEYXRhIHRhZy4gVGhlIHVzYm1vbiBtYXkgbm90IGFsd2F5cyBjYXB0dXJlIGRhdGEsIGV2ZW4gaWYgbGVuZ3RoIGlzIG5vbnplcm8uCi0gIE9ubHkgaWYgdGFnIGlzICc9JywgdGhlIGRhdGEgd29yZHMgYXJlIHByZXNlbnQuCisgIFRoZSBkYXRhIHdvcmRzIGFyZSBwcmVzZW50IG9ubHkgaWYgdGhpcyB0YWcgaXMgJz0nLgogLSBEYXRhIHdvcmRzIGZvbGxvdywgaW4gYmlnIGVuZGlhbiBoZXhhZGVjaW1hbCBmb3JtYXQuIE5vdGljZSB0aGF0IHRoZXkgYXJlCiAgIG5vdCBtYWNoaW5lIHdvcmRzLCBidXQgcmVhbGx5IGp1c3QgYSBieXRlIHN0cmVhbSBzcGxpdCBpbnRvIHdvcmRzIHRvIG1ha2UKICAgaXQgZWFzaWVyIHRvIHJlYWQuIFRodXMsIHRoZSBsYXN0IHdvcmQgbWF5IGNvbnRhaW4gZnJvbSBvbmUgdG8gZm91ciBieXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vcGFnZV9taWdyYXRpb24gYi9Eb2N1bWVudGF0aW9uL3ZtL3BhZ2VfbWlncmF0aW9uCmluZGV4IDBkZDRlZjMuLjk5Zjg5YWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdm0vcGFnZV9taWdyYXRpb24KKysrIGIvRG9jdW1lbnRhdGlvbi92bS9wYWdlX21pZ3JhdGlvbgpAQCAtMjYsOCArMjYsMTMgQEAKIE1hbnVhbCBtaWdyYXRpb24gaXMgdXNlZnVsIGlmIGZvciBleGFtcGxlIHRoZSBzY2hlZHVsZXIgaGFzIHJlbG9jYXRlZAogYSBwcm9jZXNzIHRvIGEgcHJvY2Vzc29yIG9uIGEgZGlzdGFudCBub2RlLiBBIGJhdGNoIHNjaGVkdWxlciBvciBhbgogYWRtaW5pc3RyYXRvciBtYXkgZGV0ZWN0IHRoZSBzaXR1YXRpb24gYW5kIG1vdmUgdGhlIHBhZ2VzIG9mIHRoZSBwcm9jZXNzCi1uZWFyZXIgdG8gdGhlIG5ldyBwcm9jZXNzb3IuIEF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZQotc29tZSBtZWNoYW5pc20gaW4gdGhlIHNjaGVkdWxlciB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBtb3ZlIHRoZSBwYWdlcy4KK25lYXJlciB0byB0aGUgbmV3IHByb2Nlc3Nvci4gVGhlIGtlcm5lbCBpdHNlbGYgZG9lcyBvbmx5IHByb3ZpZGUKK21hbnVhbCBwYWdlIG1pZ3JhdGlvbiBzdXBwb3J0LiBBdXRvbWF0aWMgcGFnZSBtaWdyYXRpb24gbWF5IGJlIGltcGxlbWVudGVkCit0aHJvdWdoIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIHRoYXQgbW92ZSBwYWdlcy4gQSBzcGVjaWFsIGZ1bmN0aW9uIGNhbGwKKyJtb3ZlX3BhZ2VzIiBhbGxvd3MgdGhlIG1vdmluZyBvZiBpbmRpdmlkdWFsIHBhZ2VzIHdpdGhpbiBhIHByb2Nlc3MuCitBIE5VTUEgcHJvZmlsZXIgbWF5IGYuZS4gb2J0YWluIGEgbG9nIHNob3dpbmcgZnJlcXVlbnQgb2ZmIG5vZGUKK2FjY2Vzc2VzIGFuZCBtYXkgdXNlIHRoZSByZXN1bHQgdG8gbW92ZSBwYWdlcyB0byBtb3JlIGFkdmFudGFnZW91cworbG9jYXRpb25zLgogCiBMYXJnZXIgaW5zdGFsbGF0aW9ucyB1c3VhbGx5IHBhcnRpdGlvbiB0aGUgc3lzdGVtIHVzaW5nIGNwdXNldHMgaW50bwogc2VjdGlvbnMgb2Ygbm9kZXMuIFBhdWwgSmFja3NvbiBoYXMgZXF1aXBwZWQgY3B1c2V0cyB3aXRoIHRoZSBhYmlsaXR5IHRvCkBAIC02MiwyMiArNjcsMTQgQEAKICAgIEl0IGFsc28gcHJldmVudHMgdGhlIHN3YXBwZXIgb3Igb3RoZXIgc2NhbnMgdG8gZW5jb3VudGVyCiAgICB0aGUgcGFnZS4KIAotMi4gR2VuZXJhdGUgYSBsaXN0IG9mIG5ld2x5IGFsbG9jYXRlcyBwYWdlLiBUaGVzZSBwYWdlcyB3aWxsIGNvbnRhaW4gdGhlCi0gICBjb250ZW50cyBvZiB0aGUgcGFnZXMgZnJvbSB0aGUgZmlyc3QgbGlzdCBhZnRlciBwYWdlIG1pZ3JhdGlvbiBpcwotICAgY29tcGxldGUuCisyLiBXZSBuZWVkIHRvIGhhdmUgYSBmdW5jdGlvbiBvZiB0eXBlIG5ld19wYWdlX3QgdGhhdCBjYW4gYmUKKyAgIHBhc3NlZCB0byBtaWdyYXRlX3BhZ2VzKCkuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGZpZ3VyZSBvdXQKKyAgIGhvdyB0byBhbGxvY2F0ZSB0aGUgY29ycmVjdCBuZXcgcGFnZSBnaXZlbiB0aGUgb2xkIHBhZ2UuCiAKIDMuIFRoZSBtaWdyYXRlX3BhZ2VzKCkgZnVuY3Rpb24gaXMgY2FsbGVkIHdoaWNoIGF0dGVtcHRzCi0gICB0byBkbyB0aGUgbWlncmF0aW9uLiBJdCByZXR1cm5zIHRoZSBtb3ZlZCBwYWdlcyBpbiB0aGUKLSAgIGxpc3Qgc3BlY2lmaWVkIGFzIHRoZSB0aGlyZCBwYXJhbWV0ZXIgYW5kIHRoZSBmYWlsZWQKLSAgIG1pZ3JhdGlvbnMgaW4gdGhlIGZvdXJ0aCBwYXJhbWV0ZXIuIFRoZSBmaXJzdCBwYXJhbWV0ZXIKLSAgIHdpbGwgY29udGFpbiB0aGUgcGFnZXMgdGhhdCBjb3VsZCBzdGlsbCBiZSByZXRyaWVkLgotCi00LiBUaGUgbGVmdG92ZXIgcGFnZXMgb2YgdmFyaW91cyB0eXBlcyBhcmUgcmV0dXJuZWQKLSAgIHRvIHRoZSBMUlUgdXNpbmcgcHV0YmFja190b19scnVfcGFnZXMoKSBvciBvdGhlcndpc2UKLSAgIGRpc3Bvc2VkIG9mLiBUaGUgcGFnZXMgd2lsbCBzdGlsbCBoYXZlIHRoZSByZWZjb3VudCBhcwotICAgaW5jcmVhc2VkIGJ5IGlzb2xhdGVfbHJ1X3BhZ2VzKCkgaWYgcHV0YmFja190b19scnVfcGFnZXMoKSBpcyBub3QKLSAgIHVzZWQhIFRoZSBrZXJuZWwgbWF5IHdhbnQgdG8gaGFuZGxlIHRoZSB2YXJpb3VzIGNhc2VzIG9mIGZhaWx1cmVzIGluCi0gICBkaWZmZXJlbnQgd2F5cy4KKyAgIHRvIGRvIHRoZSBtaWdyYXRpb24uIEl0IHdpbGwgY2FsbCB0aGUgZnVuY3Rpb24gdG8gYWxsb2NhdGUKKyAgIHRoZSBuZXcgcGFnZSBmb3IgZWFjaCBwYWdlIHRoYXQgaXMgY29uc2lkZXJlZCBmb3IKKyAgIG1vdmluZy4KIAogQi4gSG93IG1pZ3JhdGVfcGFnZXMoKSB3b3JrcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTMsODMgKzkwLDU4IEBACiAKIDIuIEluc3VyZSB0aGF0IHdyaXRlYmFjayBpcyBjb21wbGV0ZS4KIAotMy4gTWFrZSBzdXJlIHRoYXQgdGhlIHBhZ2UgaGFzIGFzc2lnbmVkIHN3YXAgY2FjaGUgZW50cnkgaWYKLSAgIGl0IGlzIGFuIGFub255b3VzIHBhZ2UuIFRoZSBzd2FwIGNhY2hlIHJlZmVyZW5jZSBpcyBuZWNlc3NhcnkKLSAgIHRvIHByZXNlcnZlIHRoZSBpbmZvcm1hdGlvbiBjb250YWluIGluIHRoZSBwYWdlIHRhYmxlIG1hcHMgd2hpbGUKLSAgIHBhZ2UgbWlncmF0aW9uIG9jY3Vycy4KLQotNC4gUHJlcCB0aGUgbmV3IHBhZ2UgdGhhdCB3ZSB3YW50IHRvIG1vdmUgdG8uIEl0IGlzIGxvY2tlZAorMy4gUHJlcCB0aGUgbmV3IHBhZ2UgdGhhdCB3ZSB3YW50IHRvIG1vdmUgdG8uIEl0IGlzIGxvY2tlZAogICAgYW5kIHNldCB0byBub3QgYmVpbmcgdXB0b2RhdGUgc28gdGhhdCBhbGwgYWNjZXNzZXMgdG8gdGhlIG5ldwogICAgcGFnZSBpbW1lZGlhdGVseSBsb2NrIHdoaWxlIHRoZSBtb3ZlIGlzIGluIHByb2dyZXNzLgogCi01LiBBbGwgdGhlIHBhZ2UgdGFibGUgcmVmZXJlbmNlcyB0byB0aGUgcGFnZSBhcmUgZWl0aGVyIGRyb3BwZWQgKGZpbGUKLSAgIGJhY2tlZCBwYWdlcykgb3IgY29udmVydGVkIHRvIHN3YXAgcmVmZXJlbmNlcyAoYW5vbnltb3VzIHBhZ2VzKS4KLSAgIFRoaXMgc2hvdWxkIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQuCis0LiBUaGUgbmV3IHBhZ2UgaXMgcHJlcHBlZCB3aXRoIHNvbWUgc2V0dGluZ3MgZnJvbSB0aGUgb2xkIHBhZ2Ugc28gdGhhdAorICAgYWNjZXNzZXMgdG8gdGhlIG5ldyBwYWdlIHdpbGwgZGlzY292ZXIgYSBwYWdlIHdpdGggdGhlIGNvcnJlY3Qgc2V0dGluZ3MuCisKKzUuIEFsbCB0aGUgcGFnZSB0YWJsZSByZWZlcmVuY2VzIHRvIHRoZSBwYWdlIGFyZSBjb252ZXJ0ZWQKKyAgIHRvIG1pZ3JhdGlvbiBlbnRyaWVzIG9yIGRyb3BwZWQgKG5vbmxpbmVhciB2bWFzKS4KKyAgIFRoaXMgZGVjcmVhc2UgdGhlIG1hcGNvdW50IG9mIGEgcGFnZS4gSWYgdGhlIHJlc3VsdGluZworICAgbWFwY291bnQgaXMgbm90IHplcm8gdGhlbiB3ZSBkbyBub3QgbWlncmF0ZSB0aGUgcGFnZS4KKyAgIEFsbCB1c2VyIHNwYWNlIHByb2Nlc3NlcyB0aGF0IGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBwYWdlCisgICB3aWxsIG5vdyB3YWl0IG9uIHRoZSBwYWdlIGxvY2suCiAKIDYuIFRoZSByYWRpeCB0cmVlIGxvY2sgaXMgdGFrZW4uIFRoaXMgd2lsbCBjYXVzZSBhbGwgcHJvY2Vzc2VzIHRyeWluZwotICAgdG8gcmVlc3RhYmxpc2ggYSBwdGUgdG8gYmxvY2sgb24gdGhlIHJhZGl4IHRyZWUgc3BpbmxvY2suCisgICB0byBhY2Nlc3MgdGhlIHBhZ2UgdmlhIHRoZSBtYXBwaW5nIHRvIGJsb2NrIG9uIHRoZSByYWRpeCB0cmVlIHNwaW5sb2NrLgogCiA3LiBUaGUgcmVmY291bnQgb2YgdGhlIHBhZ2UgaXMgZXhhbWluZWQgYW5kIHdlIGJhY2sgb3V0IGlmIHJlZmVyZW5jZXMgcmVtYWluCiAgICBvdGhlcndpc2Ugd2Uga25vdyB0aGF0IHdlIGFyZSB0aGUgb25seSBvbmUgcmVmZXJlbmNpbmcgdGhpcyBwYWdlLgogCiA4LiBUaGUgcmFkaXggdHJlZSBpcyBjaGVja2VkIGFuZCBpZiBpdCBkb2VzIG5vdCBjb250YWluIHRoZSBwb2ludGVyIHRvIHRoaXMKLSAgIHBhZ2UgdGhlbiB3ZSBiYWNrIG91dCBiZWNhdXNlIHNvbWVvbmUgZWxzZSBtb2RpZmllZCB0aGUgbWFwcGluZyBmaXJzdC4KKyAgIHBhZ2UgdGhlbiB3ZSBiYWNrIG91dCBiZWNhdXNlIHNvbWVvbmUgZWxzZSBtb2RpZmllZCB0aGUgcmFkaXggdHJlZS4KIAotOS4gVGhlIG1hcHBpbmcgaXMgY2hlY2tlZC4gSWYgdGhlIG1hcHBpbmcgaXMgZ29uZSB0aGVuIGEgdHJ1bmNhdGUgYWN0aW9uIG1heQotICAgYmUgaW4gcHJvZ3Jlc3MgYW5kIHdlIGJhY2sgb3V0LgorOS4gVGhlIHJhZGl4IHRyZWUgaXMgY2hhbmdlZCB0byBwb2ludCB0byB0aGUgbmV3IHBhZ2UuCiAKLTEwLiBUaGUgbmV3IHBhZ2UgaXMgcHJlcHBlZCB3aXRoIHNvbWUgc2V0dGluZ3MgZnJvbSB0aGUgb2xkIHBhZ2Ugc28gdGhhdAotICAgYWNjZXNzZXMgdG8gdGhlIG5ldyBwYWdlIHdpbGwgYmUgZGlzY292ZXJlZCB0byBoYXZlIHRoZSBjb3JyZWN0IHNldHRpbmdzLgorMTAuIFRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIG9sZCBwYWdlIGlzIGRyb3BwZWQgYmVjYXVzZSB0aGUgcmFkaXggdHJlZQorICAgIHJlZmVyZW5jZSBpcyBnb25lLiBBIHJlZmVyZW5jZSB0byB0aGUgbmV3IHBhZ2UgaXMgZXN0YWJsaXNoZWQgYmVjYXVzZQorICAgIHRoZSBuZXcgcGFnZSBpcyByZWZlcmVuY2VkIHRvIGJ5IHRoZSByYWRpeCB0cmVlLgogCi0xMS4gVGhlIHJhZGl4IHRyZWUgaXMgY2hhbmdlZCB0byBwb2ludCB0byB0aGUgbmV3IHBhZ2UuCisxMS4gVGhlIHJhZGl4IHRyZWUgbG9jayBpcyBkcm9wcGVkLiBXaXRoIHRoYXQgbG9va3VwcyBpbiB0aGUgbWFwcGluZworICAgIGJlY29tZSBwb3NzaWJsZSBhZ2Fpbi4gUHJvY2Vzc2VzIHdpbGwgbW92ZSBmcm9tIHNwaW5uaW5nIG9uIHRoZSB0cmVlX2xvY2sKKyAgICB0byBzbGVlcGluZyBvbiB0aGUgbG9ja2VkIG5ldyBwYWdlLgogCi0xMi4gVGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2xkIHBhZ2UgaXMgZHJvcHBlZCBiZWNhdXNlIHRoZSByYWRpeCB0cmVlCi0gICAgcmVmZXJlbmNlIGlzIGdvbmUuCisxMi4gVGhlIHBhZ2UgY29udGVudHMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHBhZ2UuCiAKLTEzLiBUaGUgcmFkaXggdHJlZSBsb2NrIGlzIGRyb3BwZWQuIFdpdGggdGhhdCBsb29rdXBzIGJlY29tZSBwb3NzaWJsZSBhZ2FpbgotICAgIGFuZCBvdGhlciBwcm9jZXNzZXMgd2lsbCBtb3ZlIGZyb20gc3Bpbm5pbmcgb24gdGhlIHRyZWUgbG9jayB0byBzbGVlcGluZyBvbgotICAgIHRoZSBsb2NrZWQgbmV3IHBhZ2UuCisxMy4gVGhlIHJlbWFpbmluZyBwYWdlIGZsYWdzIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyBwYWdlLgogCi0xNC4gVGhlIHBhZ2UgY29udGVudHMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHBhZ2UuCisxNC4gVGhlIG9sZCBwYWdlIGZsYWdzIGFyZSBjbGVhcmVkIHRvIGluZGljYXRlIHRoYXQgdGhlIHBhZ2UgZG9lcworICAgIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhbnltb3JlLgogCi0xNS4gVGhlIHJlbWFpbmluZyBwYWdlIGZsYWdzIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyBwYWdlLgorMTUuIFF1ZXVlZCB1cCB3cml0ZWJhY2sgb24gdGhlIG5ldyBwYWdlIGlzIHRyaWdnZXJlZC4KIAotMTYuIFRoZSBvbGQgcGFnZSBmbGFncyBhcmUgY2xlYXJlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGRvZXMKLSAgICBub3QgdXNlIGFueSBpbmZvcm1hdGlvbiBhbnltb3JlLgotCi0xNy4gUXVldWVkIHVwIHdyaXRlYmFjayBvbiB0aGUgbmV3IHBhZ2UgaXMgdHJpZ2dlcmVkLgotCi0xOC4gSWYgc3dhcCBwdGUncyB3ZXJlIGdlbmVyYXRlZCBmb3IgdGhlIHBhZ2UgdGhlbiByZXBsYWNlIHRoZW0gd2l0aCByZWFsCi0gICAgcHRlcy4gVGhpcyB3aWxsIHJlZW5hYmxlIGFjY2VzcyBmb3IgcHJvY2Vzc2VzIG5vdCBibG9ja2VkIGJ5IHRoZSBwYWdlIGxvY2suCisxNi4gSWYgbWlncmF0aW9uIGVudHJpZXMgd2VyZSBwYWdlIHRoZW4gcmVwbGFjZSB0aGVtIHdpdGggcmVhbCBwdGVzLiBEb2luZworICAgIHNvIHdpbGwgZW5hYmxlIGFjY2VzcyBmb3IgdXNlciBzcGFjZSBwcm9jZXNzZXMgbm90IGFscmVhZHkgd2FpdGluZyBmb3IKKyAgICB0aGUgcGFnZSBsb2NrLgogCiAxOS4gVGhlIHBhZ2UgbG9ja3MgYXJlIGRyb3BwZWQgZnJvbSB0aGUgb2xkIGFuZCBuZXcgcGFnZS4KLSAgICBQcm9jZXNzZXMgd2FpdGluZyBvbiB0aGUgcGFnZSBsb2NrIGNhbiBjb250aW51ZS4KKyAgICBQcm9jZXNzZXMgd2FpdGluZyBvbiB0aGUgcGFnZSBsb2NrIHdpbGwgcmVkbyB0aGVpciBwYWdlIGZhdWx0cworICAgIGFuZCB3aWxsIHJlYWNoIHRoZSBuZXcgcGFnZS4KIAogMjAuIFRoZSBuZXcgcGFnZSBpcyBtb3ZlZCB0byB0aGUgTFJVIGFuZCBjYW4gYmUgc2Nhbm5lZCBieSB0aGUgc3dhcHBlcgogICAgIGV0YyBhZ2Fpbi4KIAotVE9ETyBsaXN0Ci0tLS0tLS0tLS0KLQotLSBQYWdlIG1pZ3JhdGlvbiByZXF1aXJlcyB0aGUgdXNlIG9mIHN3YXAgaGFuZGxlcyB0byBwcmVzZXJ2ZSB0aGUKLSAgaW5mb3JtYXRpb24gb2YgdGhlIGFub255bW91cyBwYWdlIHRhYmxlIGVudHJpZXMuIFRoaXMgbWVhbnMgdGhhdCBzd2FwCi0gIHNwYWNlIGlzIHJlc2VydmVkIGJ1dCBuZXZlciB1c2VkLiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3dhcCBoYW5kbGVzIHVzZWQKLSAgaXMgZGV0ZXJtaW5lZCBieSBDSFVOS19TSVpFIChzZWUgbW0vbWVtcG9saWN5LmMpIHBlciBvbmdvaW5nIG1pZ3JhdGlvbi4KLSAgUmVzZXJ2YXRpb24gb2YgcGFnZXMgY291bGQgYmUgYXZvaWRlZCBieSBoYXZpbmcgYSBzcGVjaWFsIHR5cGUgb2Ygc3dhcAotICBoYW5kbGUgdGhhdCBkb2VzIG5vdCByZXF1aXJlIHN3YXAgc3BhY2UgYW5kIHRoYXQgd291bGQgb25seSB0cmFjayB0aGUgcGFnZQotICByZWZlcmVuY2VzLiBTb21ldGhpbmcgbGlrZSB0aGF0IHdhcyBwcm9wb3NlZCBieSBNYXJjZWxvIFRvc2F0dGkgaW4gdGhlCi0gIHBhc3QgKHNlYXJjaCBmb3IgbWlncmF0aW9uIGNhY2hlIG9uIGxrbWwgb3IgbGludXgtbW1Aa3ZhY2sub3JnKS4KLQotLSBQYWdlIG1pZ3JhdGlvbiB1bm1hcHMgcHRlcyBmb3IgZmlsZSBiYWNrZWQgcGFnZXMgYW5kIHJlcXVpcmVzIHBhZ2UKLSAgZmF1bHRzIHRvIHJlZXN0YWJsaXNoIHRoZXNlIHB0ZXMuIFRoaXMgY291bGQgYmUgb3B0aW1pemVkIGJ5IHNvbWVob3cKLSAgcmVjb3JkaW5nIHRoZSByZWZlcmVuY2VzIGJlZm9yZSBtaWdyYXRpb24gYW5kIHRoZW4gcmVlc3RhYmxpc2ggdGhlbSBsYXRlci4KLSAgSG93ZXZlciwgdGhlcmUgYXJlIHNldmVyYWwgbG9ja2luZyBjaGFsbGVuZ2VzIHRoYXQgaGF2ZSB0byBiZSBvdmVyY29tZQotICBiZWZvcmUgdGhpcyBpcyBwb3NzaWJsZS4KLQotLSBQYWdlIG1pZ3JhdGlvbiBnZW5lcmF0ZXMgcmVhZCBwdGVzIGZvciBhbm9ueW1vdXMgcGFnZXMuIERpcnR5IHBhZ2UKLSAgZmF1bHRzIGFyZSByZXF1aXJlZCB0byBtYWtlIHRoZSBwYWdlcyB3cml0YWJsZSBhZ2Fpbi4gSXQgbWF5IGJlIHBvc3NpYmxlCi0gIHRvIGdlbmVyYXRlIGEgcHRlIG1hcmtlZCBkaXJ0eSBpZiBpdCBpcyBrbm93biB0aGF0IHRoZSBwYWdlIGlzIGRpcnR5IGFuZAotICB0aGF0IHRoaXMgcHJvY2VzcyBoYXMgdGhlIG9ubHkgcmVmZXJlbmNlIHRvIHRoYXQgcGFnZS4KLQotQ2hyaXN0b3BoIExhbWV0ZXIsIE1hcmNoIDgsIDIwMDYuCitDaHJpc3RvcGggTGFtZXRlciwgTWF5IDgsIDIwMDYuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy9kczI0OTAgYi9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvZHMyNDkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YTQ5MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvZHMyNDkwCkBAIC0wLDAgKzEsMTggQEAKK0tlcm5lbCBkcml2ZXIgZHMyNDkwCis9PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTWF4aW0gRFMyNDkwIGJhc2VkCisKK0F1dGhvcjogRXZnZW5peSBQb2x5YWtvdiA8am9obnBvbEAya2EubWlwdC5ydT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIE1haXhtL0RhbGxhcyBTZW1pY29uZHVjdG9yIERTMjQ5MCBpcyBhIGNoaXAKK3doaWNoIGFsbG93cyB0byBidWlsZCBVU0IgPC0+IFcxIGJyaWRnZXMuCisKK0RTOTQ5MChSKSBpcyBhIFVTQiA8LT4gVzEgYnVzIG1hc3RlciBkZXZpY2UKK3doaWNoIGhhcyAweDgxIGZhbWlseSBJRCBpbnRlZ3JhdGVkIGNoaXAgYW5kIERTMjQ5MAorbG93LWxldmVsIG9wZXJhdGlvbmFsIGNoaXAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3cxLmdlbmVyaWMgYi9Eb2N1bWVudGF0aW9uL3cxL3cxLmdlbmVyaWMKaW5kZXggZjkzN2ZiZS4uNGM2NTA5ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi93MS93MS5nZW5lcmljCisrKyBiL0RvY3VtZW50YXRpb24vdzEvdzEuZ2VuZXJpYwpAQCAtMjcsOCArMjcsMTkgQEAKIAogV2hlbiBhIGRldmljZSBpcyBmb3VuZCBvbiB0aGUgYnVzLCB3MSBjb3JlIGNoZWNrcyBpZiBkcml2ZXIgZm9yIGl0J3MgZmFtaWx5IGlzCiBsb2FkZWQuIElmIHNvLCB0aGUgZmFtaWx5IGRyaXZlciBpcyBhdHRhY2hlZCB0byB0aGUgc2xhdmUuCi1JZiB0aGVyZSBpcyBubyBkcml2ZXIgZm9yIHRoZSBmYW1pbHksIGEgc2ltcGxlIHN5c2ZzIGVudHJ5IGlzIGNyZWF0ZWQKLWZvciB0aGUgc2xhdmUgZGV2aWNlLgorSWYgdGhlcmUgaXMgbm8gZHJpdmVyIGZvciB0aGUgZmFtaWx5LCBkZWZhdWx0IG9uZSBpcyBhc3NpZ25lZCwgd2hpY2ggYWxsb3dzIHRvIHBlcmZvcm0KK2FsbW9zdCBhbnkga2luZCBvZiBvcGVyYXRpb25zLiBFYWNoIGxvZ2ljYWwgb3BlcmF0aW9uIGlzIGEgdHJhbnNhY3Rpb24KK2luIG5hdHVyZSwgd2hpY2ggY2FuIGNvbnRhaW4gc2V2ZXJhbCAodHdvIG9yIG9uZSkgbG93LWxldmVsIG9wZXJhdGlvbnMuCitMZXQncyBzZWUgaG93IG9uZSBjYW4gcmVhZCBFRVBST00gY29udGV4dDoKKzEuIG9uZSBtdXN0IHdyaXRlIGNvbnRyb2wgYnVmZmVyLCBpLmUuIGJ1ZmZlciBjb250YWluaW5nIGNvbW1hbmQgYnl0ZQorYW5kIHR3byBieXRlIGFkZHJlc3MuIEF0IHRoaXMgc3RlcCBidXMgaXMgcmVzZXQgYW5kIGFwcHJvcHJpYXRlIGRldmljZQoraXMgc2VsZWN0ZWQgdXNpbmcgZWl0aGVyIFcxX1NLSVBfUk9NIG9yIFcxX01BVENIX1JPTSBjb21tYW5kLgorVGhlbiBwcm92aWRlZCBjb250cm9sIGJ1ZmZlciBpcyBiZWluZyB3cml0dGVuIHRvIHRoZSB3aXJlLgorMi4gcmVhZGluZy4gVGhpcyB3aWxsIGlzc3VlIHJlYWRpbmcgZWVwcm9tIHJlc3BvbnNlLgorCitJdCBpcyBwb3NzaWJsZSB0aGF0IGJldHdlZW4gMS4gYW5kIDIuIHcxIG1hc3RlciB0aHJlYWQgd2lsbCByZXNldCBidXMgZm9yIHNlYXJjaGluZworYW5kIHNsYXZlIGRldmljZSB3aWxsIGJlIGV2ZW4gcmVtb3ZlZCwgYnV0IGluIHRoaXMgY2FzZSAweGZmIHdpbGwKK2JlIHJlYWQsIHNpbmNlIG5vIGRldmljZSB3YXMgc2VsZWN0ZWQuCiAKIAogVzEgZGV2aWNlIGZhbWlsaWVzCkBAIC04OSw0ICsxMDAsNSBAQAogbmFtZSAgICAgICAgICAgICAgIC0gdGhlIGRldmljZSBuYW1lLCB1c3VhbGx5IHRoZSBzYW1lIGFzIHRoZSBkaXJlY3RvcnkgbmFtZQogdzFfc2xhdmUgICAgICAgICAgIC0gKG9wdGlvbmFsKSBhIGJpbmFyeSBmaWxlIHdob3NlIG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUKICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSBkcml2ZXIKLQorcncJCSAgIC0gKG9wdGlvbmFsKSBjcmVhdGVkIGZvciBzbGF2ZSBkZXZpY2VzIHdoaWNoIGRvIG5vdCBoYXZlCisJCSAgICAgYXBwcm9wcmlhdGUgZmFtaWx5IGRyaXZlci4gQWxsb3dzIHRvIHJlYWQvd3JpdGUgYmluYXJ5IGRhdGEuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsgYi9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY0MGM3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvdzEubmV0bGluawpAQCAtMCwwICsxLDk4IEBACitVc2Vyc3BhY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBvdmVyIGNvbm5lY3RvciBbMV0uCisKKworTWVzc2FnZSB0eXBlcy4KKz09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG1lc3NhZ2VzIGJldHdlZW4gdzEgY29yZSBhbmQgdXNlcnNwYWNlOgorMS4gRXZlbnRzLiBUaGV5IGFyZSBnZW5lcmF0ZWQgZWFjaCB0aW1lIG5ldyBtYXN0ZXIgb3Igc2xhdmUgZGV2aWNlIGZvdW5kCisJZWl0aGVyIGR1ZSB0byBhdXRvbWF0aWMgb3IgcmVxdWVzdGVkIHNlYXJjaC4KKzIuIFVzZXJzcGFjZSBjb21tYW5kcy4gSW5jbHVkZXMgcmVhZC93cml0ZSBhbmQgc2VhcmNoL2FsYXJtIHNlYXJjaCBjb21hbW5kcy4KKzMuIFJlcGxpZXMgdG8gdXNlcnNwYWNlIGNvbW1hbmRzLgorCisKK1Byb3RvY29sLgorPT09PT09PT0KKworW3N0cnVjdCBjbl9tc2ddIC0gY29ubmVjdG9yIGhlYWRlci4gSXQncyBsZW5ndGggZmllbGQgaXMgZXF1YWwgdG8gc2l6ZSBvZiB0aGUgYXR0YWNoZWQgZGF0YS4KK1tzdHJ1Y3QgdzFfbmV0bGlua19tc2ddIC0gdzEgbmV0bGluayBoZWFkZXIuCisJX191OCB0eXBlIAktIG1lc3NhZ2UgdHlwZS4KKwkJCVcxX1NMQVZFX0FERC9XMV9TTEFWRV9SRU1PVkUgLSBzbGF2ZSBhZGQvcmVtb3ZlIGV2ZW50cy4KKwkJCVcxX01BU1RFUl9BREQvVzFfTUFTVEVSX1JFTU9WRSAtIG1hc3RlciBhZGQvcmVtb3ZlIGV2ZW50cy4KKwkJCVcxX01BU1RFUl9DTUQgLSB1c2Vyc3BhY2UgY29tbWFuZCBmb3IgYnVzIG1hc3RlciBkZXZpY2UgKHNlYXJjaC9hbGFybSBzZWFyY2gpLgorCQkJVzFfU0xBVkVfQ01EIC0gdXNlcnNwYWNlIGNvbW1hbmQgZm9yIHNsYXZlIGRldmljZSAocmVhZC93cml0ZS8gc2VhcmNoL2FsYXJtIHNlYXJjaAorCQkJCQlmb3IgYnVzIG1hc3RlciBkZXZpY2Ugd2hlcmUgZ2l2ZW4gc2xhdmUgZGV2aWNlIGZvdW5kKS4KKwlfX3U4IHJlcwktIHJlc2VydmVkCisJX191MTYgbGVuCS0gc2l6ZSBvZiBhdHRhY2hlZCB0byB0aGlzIGhlYWRlciBkYXRhLgorCXVuaW9uIHsKKwkJX191OCBpZDsJCQkgLSBzbGF2ZSB1bmlxdWUgZGV2aWNlIGlkCisJCXN0cnVjdCB3MV9tc3QgeworCQkJX191MzIJCWlkOwkgLSBtYXN0ZXIncyBpZC4KKwkJCV9fdTMyCQlyZXM7CSAtIHJlc2VydmVkCisJCX0gbXN0OworCX0gaWQ7CisKK1tzdHJ1Y3J0IHcxX25ldGxpbmtfY21kXSAtIGNvbW1hbmQgZm9yIGdpdmVkIG1hc3RlciBvciBzbGF2ZSBkZXZpY2UuCisJX191OCBjbWQJLSBjb21tYW5kIG9wY29kZS4KKwkJCVcxX0NNRF9SRUFEIAktIHJlYWQgY29tbWFuZC4KKwkJCVcxX0NNRF9XUklURQktIHdyaXRlIGNvbW1hbmQuCisJCQlXMV9DTURfU0VBUkNICS0gc2VhcmNoIGNvbW1hbmQuCisJCQlXMV9DTURfQUxBUk1fU0VBUkNIIC0gYWxhcm0gc2VhcmNoIGNvbW1hbmQuCisJX191OCByZXMJLSByZXNlcnZlZAorCV9fdTE2IGxlbgktIGxlbmd0aCBvZiBkYXRhIGZvciB0aGlzIGNvbW1hbmQuCisJCQlGb3IgcmVhZCBjb21tYW5kIGRhdGEgbXVzdCBiZSBhbGxvY2F0ZWQgbGlrZSBmb3Igd3JpdGUgY29tbWFuZC4KKwlfX3U4IGRhdGFbMF0JLSBkYXRhIGZvciB0aGlzIGNvbW1hbmQuCisKKworRWFjaCBjb25uZWN0b3IgbWVzc2FnZSBjYW4gaW5jbHVkZSBvbmUgb3IgbW9yZSB3MV9uZXRsaW5rX21zZyB3aXRoIHplcm8gb2YgbW9yZSBhdHRhY2hlZCB3MV9uZXRsaW5rX2NtZCBtZXNzYWdlcy4KKworRm9yIGV2ZW50IG1lc3NhZ2VzIHRoZXJlIGFyZSBubyB3MV9uZXRsaW5rX2NtZCBlbWJlZGRlZCBzdHJ1Y3R1cmVzLCBvbmx5IGNvbm5lY3RvciBoZWFkZXIKK2FuZCB3MV9uZXRsaW5rX21zZyBzdHJ1Y3V0cmUgd2l0aCAibGVuIiBmaWVsZCBiZWluZyB6ZXJvIGFuZCBmaWxsZWQgdHlwZSAob25lIG9mIGV2ZW50IHR5cGVzKQorYW5kIGlkIC0gZWl0aGVyIDggYnl0ZXMgb2Ygc2xhdmUgdW5pcXVlIGlkIGluIGhvc3Qgb3JkZXIsIG9yIG1hc3RlcidzIGlkLCB3aGljaCBpcyBhc3NpZ25lZAordG8gYnVzIG1hc3RlciBkZXZpY2Ugd2hlbiBpdCBpcyBhZGRlZCB0byB3MSBjb3JlLgorCitDdXJyZW50bHkgcmVwbGllcyB0byB1c2Vyc3BhY2UgY29tbWFuZHMgYXJlIG9ubHkgZ2VuZXJhdGVkIGZvciByZWFkIGNvbW1hbmQgcmVxdWVzdC4KK09uZSByZXBseSBpcyBnZW5lcmF0ZWQgZXhhY3RseSBmb3Igb25lIHcxX25ldGxpbmtfY21kIHJlYWQgcmVxdWVzdC4KK1JlcGxpZXMgYXJlIG5vdCBjb21iaW5lZCB3aGVuIHNlbnQgLSBpLmUuIHR5cGljYWwgcmVwbHkgbWVzc2FnZXMgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgorW2NuX21zZ11bdzFfbmV0bGlua19tc2ddW3cxX25ldGxpbmtfY21kXQorY25fbXNnLmxlbiA9IHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpICsgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX2NtZCkgKyBjbWQtPmxlbjsKK3cxX25ldGxpbmtfbXNnLmxlbiA9IHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19jbWQpICsgY21kLT5sZW47Cit3MV9uZXRsaW5rX2NtZC5sZW4gPSBjbWQtPmxlbjsKKworCitPcGVyYXRpb24gc3RlcHMgaW4gdzEgY29yZSB3aGVuIG5ldyBjb21tYW5kIGlzIHJlY2VpdmVkLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIG5ldyBtZXNzYWdlICh3MV9uZXRsaW5rX21zZykgaXMgcmVjZWl2ZWQgdzEgY29yZSBkZXRlY3RzIGlmIGl0IGlzIG1hc3RlciBvZiBzbGF2ZSByZXF1ZXN0LAorYWNjb3JkaW5nIHRvIHcxX25ldGxpbmtfbXNnLnR5cGUgZmllbGQuCitUaGVuIG1hc3RlciBvciBzbGF2ZSBkZXZpY2UgaXMgc2VhcmNoZWQgZm9yLgorV2hlbiBmb3VuZCwgbWFzdGVyIGRldmljZSAocmVxdWVzdGVkIG9yIHRob3NlIG9uZSBvbiB3aGVyZSBzbGF2ZSBkZXZpY2UgaXMgZm91bmQpIGlzIGxvY2tlZC4KK0lmIHNsYXZlIGNvbW1hbmQgaXMgcmVxdWVzdGVkLCB0aGVuIHJlc2V0L3NlbGVjdCBwcm9jZWR1cmUgaXMgc3RhcnRlZCB0byBzZWxlY3QgZ2l2ZW4gZGV2aWNlLgorCitUaGVuIGFsbCByZXF1ZXN0ZWQgaW4gdzFfbmV0bGlua19tc2cgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIG9uZSBieSBvbmUuCitJZiBjb21tYW5kIHJlcXVpcmVzIHJlcGx5IChsaWtlIHJlYWQgY29tbWFuZCkgaXQgaXMgc2VudCBvbiBjb21tYW5kIGNvbXBsZXRpb24uCisKK1doZW4gYWxsIGNvbW1hbmRzICh3MV9uZXRsaW5rX2NtZCkgYXJlIHByb2Nlc3NlZCBtdXN0ZXIgZGV2aWNlIGlzIHVubG9ja2VkCithbmQgbmV4dCB3MV9uZXRsaW5rX21zZyBoZWFkZXIgcHJvY2Vzc2luZyBzdGFydGVkLgorCisKK0Nvbm5lY3RvciBbMV0gc3BlY2lmaWMgZG9jdW1lbnRhdGlvbi4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFYWNoIGNvbm5lY3RvciBtZXNzYWdlIGluY2x1ZGVzIHR3byB1MzIgZmllbGRzIGFzICJhZGRyZXNzIi4KK3cxIHVzZXMgQ05fVzFfSURYIGFuZCBDTl9XMV9WQUwgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L2Nvbm5lY3Rvci5oIGhlYWRlci4KK0VhY2ggbWVzc2FnZSBhbHNvIGluY2x1ZGVzIHNlcXVlbmNlIGFuZCBhY2tub3dsZWRnZSBudW1iZXJzLgorU2VxdWVuY2UgbnVtYmVyIGZvciBldmVudCBtZXNzYWdlcyBpcyBhcHByb3ByaWF0ZSBidXMgbWFzdGVyIHNlcXVlbmNlIG51bWJlciBpbmNyZWFzZWQgd2l0aAorZWFjaCBldmVudCBtZXNzYWdlIHNlbnQgInRocm91Z2giIHRoaXMgbWFzdGVyLgorU2VxdWVuY2UgbnVtYmVyIGZvciB1c2Vyc3BhY2UgcmVxdWVzdHMgaXMgc2V0IGJ5IHVzZXJzcGFjZSBhcHBsaWNhdGlvbi4KK1NlcXVlbmNlIG51bWJlciBmb3IgcmVwbHkgaXMgdGhlIHNhbWUgYXMgd2FzIGluIHJlcXVlc3QsIGFuZAorYWNrbm93bGVkZ2UgbnVtYmVyIGlzIHNldCB0byBzZXErMS4KKworCitBZGRpdGlvbmFsIGRvY3VtYW50aW9uLCBzb3VyY2UgY29kZSBleGFtcGxlcy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuIERvY3VtZW50YXRpb24vY29ubmVjdG9yCisyLiBodHRwOi8vdHNlcnZpY2UubmV0LnJ1L35zMG1icmUvYXJjaGl2ZS93MQorVGhpcyBhcmNoaXZlIGluY2x1ZGVzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiB3MWQuYyB3aGljaAordXNlcyByZWFkL3dyaXRlL3NlYXJjaCBjb21tYW5kcyBmb3IgYWxsIG1hc3Rlci9zbGF2ZSBkZXZpY2VzIGZvdW5kIG9uIHRoZSBidXMuCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGNlMzdjNGIuLjRkY2QyZjEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0xODEsNiArMTgxLDEyIEBACiBMOglsaW51eC1haW9Aa3ZhY2sub3JnCiBTOglTdXBwb3J0ZWQKIAorQUJJVCBVR1VSVSBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorUDoJSGFucyBkZSBHb2VkZQorTToJai53LnIuZGVnb2VkZUBoaHMubmwKK0w6CWxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKK1M6CU1haW50YWluZWQKKwogQUNFTklDIERSSVZFUgogUDoJSmVzIFNvcmVuc2VuCiBNOglqZXNAdHJhaW5lZC1tb25rZXkub3JnCkBAIC01NjgsNiArNTc0LDEyIEBACiBXOglodHRwOi8vd3d3LnBlbmd1aW5wcGMub3JnL3BwYzY0LwogUzoJU3VwcG9ydGVkCiAKK0JST0FEQ09NIEI0NCAxMC8xMDAgRVRIRVJORVQgRFJJVkVSCitQOglHYXJ5IFphbWJyYW5vCitNOgl6YW1icmFub0Bicm9hZGNvbS5jb20KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorCiBCUk9BRENPTSBCTlgyIEdJR0FCSVQgRVRIRVJORVQgRFJJVkVSCiBQOglNaWNoYWVsIENoYW4KIE06CW1jaGFuQGJyb2FkY29tLmNvbQpAQCAtMTE0Nyw2ICsxMTU5LDEyIEBACiBXOglodHRwOi8vd3d3Lm50LnR1d2llbi5hYy5hdC9+a2t1ZGllbGsvTGludXgvCiBTOglNYWludGFpbmVkCiAKK0hJR0hQT0lOVCBST0NLRVRSQUlEIDN4eHggUkFJRCBEUklWRVIKK1A6CUhpZ2hQb2ludCBMaW51eCBUZWFtCitNOglsaW51eEBoaWdocG9pbnQtdGVjaC5jb20KK1c6CWh0dHA6Ly93d3cuaGlnaHBvaW50LXRlY2guY29tCitTOglTdXBwb3J0ZWQKKwogSElQUEkKIFA6CUplcyBTb3JlbnNlbgogTToJamVzQHRyYWluZWQtbW9ua2V5Lm9yZwpAQCAtMjA1MSw2ICsyMDY5LDEyIEBACiBMOiAgICAgIGxpbnV4LWZiZGV2LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAogUzogICAgICBNYWludGFpbmVkCiAKK09QRU5DT1JFUyBJMkMgQlVTIERSSVZFUgorUDoJUGV0ZXIgS29yc2dhYXJkCitNOglqYWNtZXRAc3Vuc2l0ZS5kaworTDoJbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZworUzoJTWFpbnRhaW5lZAorCiBPUkFDTEUgQ0xVU1RFUiBGSUxFU1lTVEVNIDIgKE9DRlMyKQogUDoJTWFyayBGYXNoZWgKIE06CW1hcmsuZmFzaGVoQG9yYWNsZS5jb20KQEAgLTI1MjIsMTIgKzI1NDYsNiBAQAogVzoJaHR0cDovL3d3dy53aW5pc2NoaG9mZXIuYXQvbGludXhzaXN1c2J2Z2Euc2h0bWwKIFM6CU1haW50YWluZWQKIAotU01TQzQ3TTEgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKLVA6CUplYW4gRGVsdmFyZQotTToJa2hhbGlAbGludXgtZnIub3JnCi1MOglsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCi1TOglPZGQgRml4ZXMKLQogU01CIEZJTEVTWVNURU0KIFA6CVVyYmFuIFdpZG1hcmsKIE06CXVyYmFuQHRlc3RzdGF0aW9uLmNvbQpAQCAtMzE0MCwxMiArMzE1OCw2IEBACiBXOglodHRwOi8vcHJvamVjdHMuZHJ6ZXVzLmN4L3dic2QKIFM6CU1haW50YWluZWQKIAotVzgzTDc4NVRTIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCi1QOglKZWFuIERlbHZhcmUKLU06CWtoYWxpQGxpbnV4LWZyLm9yZwotTDoJbG0tc2Vuc29yc0BsbS1zZW5zb3JzLm9yZwotUzoJT2RkIEZpeGVzCi0KIFdBVENIRE9HIERFVklDRSBEUklWRVJTCiBQOglXaW0gVmFuIFNlYnJvZWNrCiBNOgl3aW1AaWd1YW5hLmJlCkBAIC0zMTg1LDcgKzMxOTcsNyBAQAogUDoJU2lsaWNvbiBHcmFwaGljcyBJbmMKIE06CXhmcy1tYXN0ZXJzQG9zcy5zZ2kuY29tCiBNOgluYXRoYW5zQHNnaS5jb20KLUw6CWxpbnV4LXhmc0Bvc3Muc2dpLmNvbQorTDoJeGZzQG9zcy5zZ2kuY29tCiBXOglodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzCiBTOglTdXBwb3J0ZWQKIApkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9rZXJuZWwvYWxwaGFfa3N5bXMuYyBiL2FyY2gvYWxwaGEva2VybmVsL2FscGhhX2tzeW1zLmMKaW5kZXggMmIyNDVhZC4uZDM4NDhjNSAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9rZXJuZWwvYWxwaGFfa3N5bXMuYworKysgYi9hcmNoL2FscGhhL2tlcm5lbC9hbHBoYV9rc3ltcy5jCkBAIC01MywxMCArNTMsNiBAQAogZXh0ZXJuIHZvaWQgX19yZW1xdSAodm9pZCk7CiAKIEVYUE9SVF9TWU1CT0woYWxwaGFfbXYpOwotRVhQT1JUX1NZTUJPTChlbmFibGVfaXJxKTsKLUVYUE9SVF9TWU1CT0woZGlzYWJsZV9pcnEpOwotRVhQT1JUX1NZTUJPTChkaXNhYmxlX2lycV9ub3N5bmMpOwotRVhQT1JUX1NZTUJPTChwcm9iZV9pcnFfbWFzayk7CiBFWFBPUlRfU1lNQk9MKHNjcmVlbl9pbmZvKTsKIEVYUE9SVF9TWU1CT0wocGVyZl9pcnEpOwogRVhQT1JUX1NZTUJPTChjYWxsYmFja19nZXRlbnYpOwpAQCAtNjgsMTkgKzY0LDEzIEBACiAKIC8qIHBsYXRmb3JtIGRlcGVuZGVudCBzdXBwb3J0ICovCiBFWFBPUlRfU1lNQk9MKHN0cmNhdCk7Ci1FWFBPUlRfU1lNQk9MKHN0cmNtcCk7CiBFWFBPUlRfU1lNQk9MKHN0cmNweSk7CiBFWFBPUlRfU1lNQk9MKHN0cmxlbik7Ci1FWFBPUlRfU1lNQk9MKHN0cm5jbXApOwogRVhQT1JUX1NZTUJPTChzdHJuY3B5KTsKLUVYUE9SVF9TWU1CT0woc3Rybmxlbik7CiBFWFBPUlRfU1lNQk9MKHN0cm5jYXQpOwotRVhQT1JUX1NZTUJPTChzdHJzdHIpOwogRVhQT1JUX1NZTUJPTChzdHJjaHIpOwogRVhQT1JUX1NZTUJPTChzdHJyY2hyKTsKLUVYUE9SVF9TWU1CT0wobWVtY21wKTsKIEVYUE9SVF9TWU1CT0wobWVtbW92ZSk7Ci1FWFBPUlRfU1lNQk9MKG1lbXNjYW4pOwogRVhQT1JUX1NZTUJPTChfX21lbWNweSk7CiBFWFBPUlRfU1lNQk9MKF9fbWVtc2V0KTsKIEVYUE9SVF9TWU1CT0woX19tZW1zZXR3KTsKQEAgLTEyMiwxMSArMTEyLDkgQEAKIAogLyogSW4ta2VybmVsIHN5c3RlbSBjYWxscy4gICovCiBFWFBPUlRfU1lNQk9MKGtlcm5lbF90aHJlYWQpOwotRVhQT1JUX1NZTUJPTChzeXNfb3Blbik7CiBFWFBPUlRfU1lNQk9MKHN5c19kdXApOwogRVhQT1JUX1NZTUJPTChzeXNfZXhpdCk7CiBFWFBPUlRfU1lNQk9MKHN5c193cml0ZSk7Ci1FWFBPUlRfU1lNQk9MKHN5c19yZWFkKTsKIEVYUE9SVF9TWU1CT0woc3lzX2xzZWVrKTsKIEVYUE9SVF9TWU1CT0woZXhlY3ZlKTsKIEVYUE9SVF9TWU1CT0woc3lzX3NldHNpZCk7CmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9vc2Zfc3lzLmMgYi9hcmNoL2FscGhhL2tlcm5lbC9vc2Zfc3lzLmMKaW5kZXggMzFhZmUzZC4uZTE1ZGNmNCAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9rZXJuZWwvb3NmX3N5cy5jCisrKyBiL2FyY2gvYWxwaGEva2VybmVsL29zZl9zeXMuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJICAgICAgdW5zaWduZWQgbG9uZyBidWZzaXopCiB7CiAJc3RydWN0IGtzdGF0ZnMgbGludXhfc3RhdDsKLQlpbnQgZXJyb3IgPSB2ZnNfc3RhdGZzKGRlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJmxpbnV4X3N0YXQpOworCWludCBlcnJvciA9IHZmc19zdGF0ZnMoZGVudHJ5LCAmbGludXhfc3RhdCk7CiAJaWYgKCFlcnJvcikKIAkJZXJyb3IgPSBsaW51eF90b19vc2Zfc3RhdGZzKCZsaW51eF9zdGF0LCBidWZmZXIsIGJ1ZnNpeik7CiAJcmV0dXJuIGVycm9yOwkKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvc2lnbmFsLmMKaW5kZXggMmU0NWU4Ni4uNzQxZGEwOSAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvc2lnbmFsLmMKQEAgLTM3NSw3ICszNzUsNyBAQAogc3RhdGljIGlubGluZSB2b2lkIF9fdXNlciAqCiBnZXRfc2lnZnJhbWUoc3RydWN0IGtfc2lnYWN0aW9uICprYSwgdW5zaWduZWQgbG9uZyBzcCwgc2l6ZV90IGZyYW1lX3NpemUpCiB7Ci0JaWYgKChrYS0+c2Euc2FfZmxhZ3MgJiBTQV9PTlNUQUNLKSAhPSAwICYmICEgb25fc2lnX3N0YWNrKHNwKSkKKwlpZiAoKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spICE9IDAgJiYgISBzYXNfc3NfZmxhZ3Moc3ApKQogCQlzcCA9IGN1cnJlbnQtPnNhc19zc19zcCArIGN1cnJlbnQtPnNhc19zc19zaXplOwogCiAJcmV0dXJuICh2b2lkIF9fdXNlciAqKSgoc3AgLSBmcmFtZV9zaXplKSAmIC0zMnVsKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGY0N2NmOWEuLjFiN2U1YzIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9hcm0vS2NvbmZpZwpAQCAtOTMsMTUgKzkzLDQ5IEBACiAJcHJvbXB0ICJBUk0gc3lzdGVtIHR5cGUiCiAJZGVmYXVsdCBBUkNIX1ZFUlNBVElMRQogCitjb25maWcgQVJDSF9BQUVDMjAwMAorCWJvb2wgIkFnaWxlbnQgQUFFQy0yMDAwIGJhc2VkIgorCXNlbGVjdCBBUk1fQU1CQQorCWhlbHAKKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBzeXN0ZW1zIGJhc2VkIG9uIHRoZSBBZ2lsZW50IEFBRUMtMjAwMAorCitjb25maWcgQVJDSF9JTlRFR1JBVE9SCisJYm9vbCAiQVJNIEx0ZC4gSW50ZWdyYXRvciBmYW1pbHkiCisJc2VsZWN0IEFSTV9BTUJBCisJc2VsZWN0IElDU1Q1MjUKKwloZWxwCisJICBTdXBwb3J0IGZvciBBUk0ncyBJbnRlZ3JhdG9yIHBsYXRmb3JtLgorCitjb25maWcgQVJDSF9SRUFMVklFVworCWJvb2wgIkFSTSBMdGQuIFJlYWxWaWV3IGZhbWlseSIKKwlzZWxlY3QgQVJNX0FNQkEKKwlzZWxlY3QgSUNTVDMwNworCWhlbHAKKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBBUk0gTHRkIFJlYWxWaWV3IGJvYXJkcy4KKworY29uZmlnIEFSQ0hfVkVSU0FUSUxFCisJYm9vbCAiQVJNIEx0ZC4gVmVyc2F0aWxlIGZhbWlseSIKKwlzZWxlY3QgQVJNX0FNQkEKKwlzZWxlY3QgQVJNX1ZJQworCXNlbGVjdCBJQ1NUMzA3CisJaGVscAorCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIEFSTSBMdGQgVmVyc2F0aWxlIGJvYXJkLgorCitjb25maWcgQVJDSF9BVDkxUk05MjAwCisJYm9vbCAiQXRtZWwgQVQ5MVJNOTIwMCIKKwloZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSBpbnRlbmQgdG8gcnVuIHRoaXMga2VybmVsIG9uIGFuIEF0bWVsCisJICBBVDkxUk05MjAwLWJhc2VkIGJvYXJkLgorCiBjb25maWcgQVJDSF9DTFBTNzUwMAotCWJvb2wgIkNpcnJ1cy1DTC1QUzc1MDBGRSIKKwlib29sICJDaXJydXMgQ0wtUFM3NTAwRkUiCiAJc2VsZWN0IFRJTUVSX0FDT1JOCiAJc2VsZWN0IElTQQogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIHRoZSBDaXJydXMgTG9naWMgUFM3NTAwRkUgc3lzdGVtLW9uLWEtY2hpcC4KIAogY29uZmlnIEFSQ0hfQ0xQUzcxMVgKLQlib29sICJDTFBTNzExeC9FUDcyMXgtYmFzZWQiCisJYm9vbCAiQ2lycnVzIExvZ2ljIENMUFM3MTF4L0VQNzIxeC1iYXNlZCIKIAloZWxwCiAJICBTdXBwb3J0IGZvciBDaXJydXMgTG9naWMgNzExeC83MjF4IGJhc2VkIGJvYXJkcy4KIApAQCAtMTM1LDEyICsxNjksMjIgQEAKIAkgIFN1cHBvcnQgZm9yIHN5c3RlbXMgYmFzZWQgb24gdGhlIERDMjEyODUgY29tcGFuaW9uIGNoaXAKIAkgICgiRm9vdEJyaWRnZSIpLCBzdWNoIGFzIHRoZSBTaW10ZWMgQ0FUUyBhbmQgdGhlIFJlYmVsIE5ldFdpbmRlci4KIAotY29uZmlnIEFSQ0hfSU5URUdSQVRPUgotCWJvb2wgIkludGVncmF0b3IiCi0Jc2VsZWN0IEFSTV9BTUJBCi0Jc2VsZWN0IElDU1Q1MjUKK2NvbmZpZyBBUkNIX05FVFgKKwlib29sICJIaWxzY2hlciBOZXRYIGJhc2VkIgorCXNlbGVjdCBBUk1fVklDCiAJaGVscAotCSAgU3VwcG9ydCBmb3IgQVJNJ3MgSW50ZWdyYXRvciBwbGF0Zm9ybS4KKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBzeXN0ZW1zIGJhc2VkIG9uIHRoZSBIaWxzY2hlciBOZXRYIFNvYworCitjb25maWcgQVJDSF9INzIwWAorCWJvb2wgIkh5bml4IEhNUzcyMHgtYmFzZWQiCisJc2VsZWN0IElTQV9ETUFfQVBJCisJaGVscAorCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHN5c3RlbXMgYmFzZWQgb24gdGhlIEh5bml4IEhNUzcyMHgKKworY29uZmlnIEFSQ0hfSU1YCisJYm9vbCAiSU1YIgorCWhlbHAKKwkgIFN1cHBvcnQgZm9yIE1vdG9yb2xhJ3MgaS5NWCBmYW1pbHkgb2YgcHJvY2Vzc29ycyAoTVgxLCBNWEwpLgogCiBjb25maWcgQVJDSF9JT1AzWFgKIAlib29sICJJT1AzeHgtYmFzZWQiCkBAIC0xNzgsNiArMjIyLDExIEBACiAJICBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGNvbW1lbnRzIGFib3V0IHRoZSBMaW51eCBrZXJuZWwgcG9ydAogCSAgdG8gdGhpcyBib2FyZCwgc2VuZCBlLW1haWwgdG8gPHNqaGlsbEBjb3R3LmNvbT4uCiAKK2NvbmZpZyBBUkNIX1BOWDQwMDgKKwlib29sICJQaGlsaXBzIE5leHBlcmlhIFBOWDQwMDggTW9iaWxlIgorCWhlbHAKKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBQaGlsaXBzIFBOWDQwMDggbW9iaWxlIHBsYXRmb3JtLgorCiBjb25maWcgQVJDSF9QWEEKIAlib29sICJQWEEyeHgtYmFzZWQiCiAJc2VsZWN0IEFSQ0hfTVREX1hJUApAQCAtMjMyLDQ5ICsyODEsNiBAQAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIFRJJ3MgT01BUCBwbGF0Zm9ybSAoT01BUDEgYW5kIE9NQVAyKS4KIAotY29uZmlnIEFSQ0hfVkVSU0FUSUxFCi0JYm9vbCAiVmVyc2F0aWxlIgotCXNlbGVjdCBBUk1fQU1CQQotCXNlbGVjdCBBUk1fVklDCi0Jc2VsZWN0IElDU1QzMDcKLQloZWxwCi0JICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgQVJNIEx0ZCBWZXJzYXRpbGUgYm9hcmQuCi0KLWNvbmZpZyBBUkNIX1JFQUxWSUVXCi0JYm9vbCAiUmVhbFZpZXciCi0Jc2VsZWN0IEFSTV9BTUJBCi0Jc2VsZWN0IElDU1QzMDcKLQloZWxwCi0JICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgQVJNIEx0ZCBSZWFsVmlldyBib2FyZHMuCi0KLWNvbmZpZyBBUkNIX0lNWAotCWJvb2wgIklNWCIKLQloZWxwCi0JICBTdXBwb3J0IGZvciBNb3Rvcm9sYSdzIGkuTVggZmFtaWx5IG9mIHByb2Nlc3NvcnMgKE1YMSwgTVhMKS4KLQotY29uZmlnIEFSQ0hfSDcyMFgKLQlib29sICJIeW5peC1ITVM3MjB4LWJhc2VkIgotCXNlbGVjdCBJU0FfRE1BX0FQSQotCWhlbHAKLQkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBzeXN0ZW1zIGJhc2VkIG9uIHRoZSBIeW5peCBITVM3MjB4Ci0KLWNvbmZpZyBBUkNIX0FBRUMyMDAwCi0JYm9vbCAiQWdpbGVudCBBQUVDLTIwMDAgYmFzZWQiCi0Jc2VsZWN0IEFSTV9BTUJBCi0JaGVscAotCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHN5c3RlbXMgYmFzZWQgb24gdGhlIEFnaWxlbnQgQUFFQy0yMDAwCi0KLWNvbmZpZyBBUkNIX0FUOTFSTTkyMDAKLQlib29sICJBVDkxUk05MjAwIgotCWhlbHAKLQkgIFNheSBZIGhlcmUgaWYgeW91IGludGVuZCB0byBydW4gdGhpcyBrZXJuZWwgb24gYW4gQXRtZWwKLQkgIEFUOTFSTTkyMDAtYmFzZWQgYm9hcmQuCi0KLWNvbmZpZyBBUkNIX1BOWDQwMDgKLQlib29sICJQaGlsaXBzIE5leHBlcmlhIFBOWDQwMDggTW9iaWxlIgotCWhlbHAKLQkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBQaGlsaXBzIFBOWDQwMDggbW9iaWxlIHBsYXRmb3JtLgotCiBlbmRjaG9pY2UKIAogc291cmNlICJhcmNoL2FybS9tYWNoLWNscHM3MTF4L0tjb25maWciCkBAIC0zMTksNiArMzI1LDggQEAKIAogc291cmNlICJhcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvS2NvbmZpZyIKIAorc291cmNlICJhcmNoL2FybS9tYWNoLW5ldHgvS2NvbmZpZyIKKwogIyBEZWZpbml0aW9ucyB0byBtYWtlIGxpZmUgZWFzaWVyCiBjb25maWcgQVJDSF9BQ09STgogCWJvb2wKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggNmM5N2FhNzAuLjI4MmIxNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL01ha2VmaWxlCkBAIC0xMTcsNiArMTE3LDcgQEAKICBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMCkgOj0gYXQ5MXJtOTIwMAogIG1hY2hpbmUtJChDT05GSUdfQVJDSF9FUDkzWFgpICAgICA6PSBlcDkzeHgKICBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfUE5YNDAwOCkgICAgOj0gcG54NDAwOAorIG1hY2hpbmUtJChDT05GSUdfQVJDSF9ORVRYKSAgICAgICA6PSBuZXR4CiAKIGlmZXEgKCQoQ09ORklHX0FSQ0hfRUJTQTExMCkseSkKICMgVGhpcyBpcyB3aGF0IGhhcHBlbnMgaWYgeW91IGZvcmdldCB0aGUgSU9DUzE2IGxpbmUuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2NvbXByZXNzZWQvaGVhZC1hdDkxcm05MjAwLlMgYi9hcmNoL2FybS9ib290L2NvbXByZXNzZWQvaGVhZC1hdDkxcm05MjAwLlMKaW5kZXggMjExOWVhNi4uNTdhM2IxNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL2hlYWQtYXQ5MXJtOTIwMC5TCisrKyBiL2FyY2gvYXJtL2Jvb3QvY29tcHJlc3NlZC9oZWFkLWF0OTFybTkyMDAuUwpAQCAtNDksNiArNDksMTggQEAKIAkJY21wCXI3LCByMwogCQliZXEJOTlmCiAKKwkJQCBFbWJlc3QgQVRFQjkyMDAgOiA5MjMKKwkJbW92CXIzLAkjKE1BQ0hfVFlQRV9BVEVCOTIwMCAmIDB4ZmYpCisJCW9ycglyMywgcjMsCSMoTUFDSF9UWVBFX0FURUI5MjAwICYgMHhmZjAwKQorCQljbXAJcjcsIHIzCisJCWJlcQk5OWYKKworCQlAIFNwZXJyeS1TdW4gS0FGQSA6IDY2MgorCQltb3YJcjMsCSMoTUFDSF9UWVBFX0tBRkEgJiAweGZmKQorCQlvcnIJcjMsIHIzLAkjKE1BQ0hfVFlQRV9LQUZBICYgMHhmZjAwKQorCQljbXAJcjcsIHIzCisJCWJlcQk5OWYKKwogCQlAIFVua25vd24gYm9hcmQsIHVzZSB0aGUgQVQ5MVJNOTIwMERLIGJvYXJkCiAJCUAgbW92CXI3LCAjTUFDSF9UWVBFX0FUOTFSTTkyMDAKIAkJbW92CXI3LAkjKE1BQ0hfVFlQRV9BVDkxUk05MjAwREsgJiAweGZmKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29tbW9uL01ha2VmaWxlIGIvYXJjaC9hcm0vY29tbW9uL01ha2VmaWxlCmluZGV4IDg0N2UzZTYuLmUxMjg5YTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9jb21tb24vTWFrZWZpbGUKQEAgLTE2LDMgKzE2LDQgQEAKIG9iai0kKENPTkZJR19TSEFSUFNMX1BNKQkrPSBzaGFycHNsX3BtLm8KIG9iai0kKENPTkZJR19TSEFSUF9TQ09PUCkJKz0gc2Nvb3Aubwogb2JqLSQoQ09ORklHX0FSQ0hfSVhQMjAwMCkJKz0gdWVuZ2luZS5vCitvYmotJChDT05GSUdfQVJDSF9JWFAyM1hYKQkrPSB1ZW5naW5lLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbW1vbi9kbWFib3VuY2UuYyBiL2FyY2gvYXJtL2NvbW1vbi9kbWFib3VuY2UuYwppbmRleCA3OTcxZDBkLi41YjdjMjYzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb21tb24vZG1hYm91bmNlLmMKKysrIGIvYXJjaC9hcm0vY29tbW9uL2RtYWJvdW5jZS5jCkBAIC03Nyw2ICs3Nyw4IEBACiAjZW5kaWYKIAlzdHJ1Y3QgZG1hYm91bmNlX3Bvb2wJc21hbGw7CiAJc3RydWN0IGRtYWJvdW5jZV9wb29sCWxhcmdlOworCisJcndsb2NrX3QgbG9jazsKIH07CiAKIHN0YXRpYyBMSVNUX0hFQUQoZG1hYm91bmNlX2RldnMpOwpAQCAtMTE2LDYgKzExOCw3IEBACiAJc3RydWN0IHNhZmVfYnVmZmVyICpidWY7CiAJc3RydWN0IGRtYWJvdW5jZV9wb29sICpwb29sOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRldmljZV9pbmZvLT5kZXY7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWRldl9kYmcoZGV2LCAiJXMocHRyPSVwLCBzaXplPSVkLCBkaXI9JWQpXG4iLAogCQlfX2Z1bmNfXywgcHRyLCBzaXplLCBkaXIpOwpAQCAtMTYzLDggKzE2NiwxMiBAQAogCQlwcmludF9hbGxvY19zdGF0cyhkZXZpY2VfaW5mbyk7CiAjZW5kaWYKIAorCXdyaXRlX2xvY2tfaXJxc2F2ZSgmZGV2aWNlX2luZm8tPmxvY2ssIGZsYWdzKTsKKwogCWxpc3RfYWRkKCZidWYtPm5vZGUsICZkZXZpY2VfaW5mby0+c2FmZV9idWZmZXJzKTsKIAorCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZkZXZpY2VfaW5mby0+bG9jaywgZmxhZ3MpOworCiAJcmV0dXJuIGJ1ZjsKIH0KIApAQCAtMTcyLDIyICsxNzksMzIgQEAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHNhZmVfYnVmZmVyICoKIGZpbmRfc2FmZV9idWZmZXIoc3RydWN0IGRtYWJvdW5jZV9kZXZpY2VfaW5mbyAqZGV2aWNlX2luZm8sIGRtYV9hZGRyX3Qgc2FmZV9kbWFfYWRkcikKIHsKLQlzdHJ1Y3Qgc2FmZV9idWZmZXIgKmI7CisJc3RydWN0IHNhZmVfYnVmZmVyICpiID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJcmVhZF9sb2NrX2lycXNhdmUoJmRldmljZV9pbmZvLT5sb2NrLCBmbGFncyk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGIsICZkZXZpY2VfaW5mby0+c2FmZV9idWZmZXJzLCBub2RlKQogCQlpZiAoYi0+c2FmZV9kbWFfYWRkciA9PSBzYWZlX2RtYV9hZGRyKQotCQkJcmV0dXJuIGI7CisJCQlicmVhazsKIAotCXJldHVybiBOVUxMOworCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJmRldmljZV9pbmZvLT5sb2NrLCBmbGFncyk7CisJcmV0dXJuIGI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAogZnJlZV9zYWZlX2J1ZmZlcihzdHJ1Y3QgZG1hYm91bmNlX2RldmljZV9pbmZvICpkZXZpY2VfaW5mbywgc3RydWN0IHNhZmVfYnVmZmVyICpidWYpCiB7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwogCWRldl9kYmcoZGV2aWNlX2luZm8tPmRldiwgIiVzKGJ1Zj0lcClcbiIsIF9fZnVuY19fLCBidWYpOwogCisJd3JpdGVfbG9ja19pcnFzYXZlKCZkZXZpY2VfaW5mby0+bG9jaywgZmxhZ3MpOworCiAJbGlzdF9kZWwoJmJ1Zi0+bm9kZSk7CiAKKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmZGV2aWNlX2luZm8tPmxvY2ssIGZsYWdzKTsKKwogCWlmIChidWYtPnBvb2wpCiAJCWRtYV9wb29sX2ZyZWUoYnVmLT5wb29sLT5wb29sLCBidWYtPnNhZmUsIGJ1Zi0+c2FmZV9kbWFfYWRkcik7CiAJZWxzZQpAQCAtMzk2LDcgKzQxMyw2IEBACiBkbWFfbWFwX3NpbmdsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsCiAJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWRtYV9hZGRyX3QgZG1hX2FkZHI7CiAKIAlkZXZfZGJnKGRldiwgIiVzKHB0cj0lcCxzaXplPSVkLGRpcj0leClcbiIsCkBAIC00MDQsMTIgKzQyMCw4IEBACiAKIAlCVUdfT04oZGlyID09IERNQV9OT05FKTsKIAotCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKLQogCWRtYV9hZGRyID0gbWFwX3NpbmdsZShkZXYsIHB0ciwgc2l6ZSwgZGlyKTsKIAotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKLQogCXJldHVybiBkbWFfYWRkcjsKIH0KIApAQCAtNDI0LDI1ICs0MzYsMTggQEAKIGRtYV91bm1hcF9zaW5nbGUoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLCBzaXplX3Qgc2l6ZSwKIAkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCiAJZGV2X2RiZyhkZXYsICIlcyhwdHI9JXAsc2l6ZT0lZCxkaXI9JXgpXG4iLAogCQlfX2Z1bmNfXywgKHZvaWQgKikgZG1hX2FkZHIsIHNpemUsIGRpcik7CiAKIAlCVUdfT04oZGlyID09IERNQV9OT05FKTsKIAotCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKLQogCXVubWFwX3NpbmdsZShkZXYsIGRtYV9hZGRyLCBzaXplLCBkaXIpOwotCi0JbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQogCiBpbnQKIGRtYV9tYXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgbmVudHMsCiAJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBpOwogCiAJZGV2X2RiZyhkZXYsICIlcyhzZz0lcCxuZW50cz0lZCxkaXI9JXgpXG4iLApAQCAtNDUwLDggKzQ1NSw2IEBACiAKIAlCVUdfT04oZGlyID09IERNQV9OT05FKTsKIAotCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKLQogCWZvciAoaSA9IDA7IGkgPCBuZW50czsgaSsrLCBzZysrKSB7CiAJCXN0cnVjdCBwYWdlICpwYWdlID0gc2ctPnBhZ2U7CiAJCXVuc2lnbmVkIGludCBvZmZzZXQgPSBzZy0+b2Zmc2V0OwpAQCAtNDYyLDggKzQ2NSw2IEBACiAJCQltYXBfc2luZ2xlKGRldiwgcHRyLCBsZW5ndGgsIGRpcik7CiAJfQogCi0JbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwotCiAJcmV0dXJuIG5lbnRzOwogfQogCkBAIC00NzEsNyArNDcyLDYgQEAKIGRtYV91bm1hcF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuZW50cywKIAkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQogewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGk7CiAKIAlkZXZfZGJnKGRldiwgIiVzKHNnPSVwLG5lbnRzPSVkLGRpcj0leClcbiIsCkBAIC00NzksNTUgKzQ3OSwzOCBAQAogCiAJQlVHX09OKGRpciA9PSBETUFfTk9ORSk7CiAKLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKywgc2crKykgewogCQlkbWFfYWRkcl90IGRtYV9hZGRyID0gc2ctPmRtYV9hZGRyZXNzOwogCQl1bnNpZ25lZCBpbnQgbGVuZ3RoID0gc2ctPmxlbmd0aDsKIAogCQl1bm1hcF9zaW5nbGUoZGV2LCBkbWFfYWRkciwgbGVuZ3RoLCBkaXIpOwogCX0KLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogdm9pZAogZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLCBzaXplX3Qgc2l6ZSwKIAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQogCWRldl9kYmcoZGV2LCAiJXMocHRyPSVwLHNpemU9JWQsZGlyPSV4KVxuIiwKIAkJX19mdW5jX18sICh2b2lkICopIGRtYV9hZGRyLCBzaXplLCBkaXIpOwogCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCiAJc3luY19zaW5nbGUoZGV2LCBkbWFfYWRkciwgc2l6ZSwgZGlyKTsKLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogdm9pZAogZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLCBzaXplX3Qgc2l6ZSwKIAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQogCWRldl9kYmcoZGV2LCAiJXMocHRyPSVwLHNpemU9JWQsZGlyPSV4KVxuIiwKIAkJX19mdW5jX18sICh2b2lkICopIGRtYV9hZGRyLCBzaXplLCBkaXIpOwogCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCiAJc3luY19zaW5nbGUoZGV2LCBkbWFfYWRkciwgc2l6ZSwgZGlyKTsKLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogdm9pZAogZG1hX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuZW50cywKIAkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBpOwogCiAJZGV2X2RiZyhkZXYsICIlcyhzZz0lcCxuZW50cz0lZCxkaXI9JXgpXG4iLApAQCAtNTM1LDIzICs1MTgsMTggQEAKIAogCUJVR19PTihkaXIgPT0gRE1BX05PTkUpOwogCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCiAJZm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKyssIHNnKyspIHsKIAkJZG1hX2FkZHJfdCBkbWFfYWRkciA9IHNnLT5kbWFfYWRkcmVzczsKIAkJdW5zaWduZWQgaW50IGxlbmd0aCA9IHNnLT5sZW5ndGg7CiAKIAkJc3luY19zaW5nbGUoZGV2LCBkbWFfYWRkciwgbGVuZ3RoLCBkaXIpOwogCX0KLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogdm9pZAogZG1hX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuZW50cywKIAkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBpOwogCiAJZGV2X2RiZyhkZXYsICIlcyhzZz0lcCxuZW50cz0lZCxkaXI9JXgpXG4iLApAQCAtNTU5LDE2ICs1MzcsMTIgQEAKIAogCUJVR19PTihkaXIgPT0gRE1BX05PTkUpOwogCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCiAJZm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKyssIHNnKyspIHsKIAkJZG1hX2FkZHJfdCBkbWFfYWRkciA9IHNnLT5kbWFfYWRkcmVzczsKIAkJdW5zaWduZWQgaW50IGxlbmd0aCA9IHNnLT5sZW5ndGg7CiAKIAkJc3luY19zaW5nbGUoZGV2LCBkbWFfYWRkciwgbGVuZ3RoLCBkaXIpOwogCX0KLQotCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogc3RhdGljIGludApAQCAtNjIyLDYgKzU5Niw3IEBACiAKIAlkZXZpY2VfaW5mby0+ZGV2ID0gZGV2OwogCUlOSVRfTElTVF9IRUFEKCZkZXZpY2VfaW5mby0+c2FmZV9idWZmZXJzKTsKKwlyd2xvY2tfaW5pdCgmZGV2aWNlX2luZm8tPmxvY2spOwogCiAjaWZkZWYgU1RBVFMKIAlkZXZpY2VfaW5mby0+dG90YWxfYWxsb2NzID0gMDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbW1vbi9zaGFycHNsX3BtLmMgYi9hcmNoL2FybS9jb21tb24vc2hhcnBzbF9wbS5jCmluZGV4IDNjZDhjOWUuLjA0NWUzN2UgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9zaGFycHNsX3BtLmMKKysrIGIvYXJjaC9hcm0vY29tbW9uL3NoYXJwc2xfcG0uYwpAQCAtNDksMTMgKzQ5LDYgQEAKICNkZWZpbmUgU0hBUlBTTF9DSEFSR0VfQ09fQ0hFQ0tfVElNRSAgICAgICAgICAgNSAgIC8qIDUgbXNlYyAqLwogI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9SRVRSWV9DTlQgICAgICAgICAgICAgICAxICAgLyogZXF2LiAxMCBtaW4gKi8KIAotI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9WT0xUICAgICAgICAgMHg5OSAgLyogMi45ViAqLwotI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9URU1QICAgICAgICAgMHhlMCAgLyogMi45ViAqLwotI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0hJR0ggICAgMHg5YiAgLyogNlYgKi8KLSNkZWZpbmUgU0hBUlBTTF9DSEFSR0VfT05fQUNJTl9MT1cgICAgIDB4MzQgIC8qIDJWICovCi0jZGVmaW5lIFNIQVJQU0xfRkFUQUxfQUNJTl9WT0xUICAgICAgICAxODIgICAvKiAzLjQ1ViAqLwotI2RlZmluZSBTSEFSUFNMX0ZBVEFMX05PQUNJTl9WT0xUICAgICAgMTcwICAgLyogMy40MFYgKi8KLQogLyoKICAqIFByb3RvdHlwZXMKICAqLwpAQCAtODIsMTIgKzc1LDEzIEBACiBzdGF0aWMgaW50IGdldF9wZXJjZW50YWdlKGludCB2b2x0YWdlKQogewogCWludCBpID0gc2hhcnBzbF9wbS5tYWNoaW5mby0+YmF0X2xldmVscyAtIDE7CisJaW50IGJsX3N0YXR1cyA9IHNoYXJwc2xfcG0ubWFjaGluZm8tPmJhY2tsaWdodF9nZXRfc3RhdHVzID8gc2hhcnBzbF9wbS5tYWNoaW5mby0+YmFja2xpZ2h0X2dldF9zdGF0dXMoKSA6IDA7CiAJc3RydWN0IGJhdHRlcnlfdGhyZXNoICp0aHJlc2g7CiAKIAlpZiAoc2hhcnBzbF9wbS5jaGFyZ2VfbW9kZSA9PSBDSFJHX09OKQotCQl0aHJlc2g9c2hhcnBzbF9wbS5tYWNoaW5mby0+YmF0X2xldmVsc19hY2luOworCQl0aHJlc2ggPSBibF9zdGF0dXMgPyBzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRfbGV2ZWxzX2FjaW5fYmwgOiBzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRfbGV2ZWxzX2FjaW47CiAJZWxzZQotCQl0aHJlc2g9c2hhcnBzbF9wbS5tYWNoaW5mby0+YmF0X2xldmVsc19ub2FjOworCQl0aHJlc2ggPSBibF9zdGF0dXMgPyBzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRfbGV2ZWxzX25vYWNfYmwgOiBzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRfbGV2ZWxzX25vYWM7CiAKIAl3aGlsZSAoaSA+IDAgJiYgKHZvbHRhZ2UgPiB0aHJlc2hbaV0udm9sdGFnZSkpCiAJCWktLTsKQEAgLTEzMSw3ICsxMjUsNyBAQAogCXNoYXJwc2xfcG0uYmF0dHN0YXQuYWNfc3RhdHVzID0gKHNoYXJwc2xfcG0ubWFjaGluZm8tPnJlYWRfZGV2ZGF0YShTSEFSUFNMX1NUQVRVU19BQ0lOKSA/IEFQTV9BQ19PTkxJTkUgOiBBUE1fQUNfT0ZGTElORSk7CiAKIAkvKiBDb3JnaSBjYW5ub3QgY29uZmlybSB3aGVuIGJhdHRlcnkgZnVsbHkgY2hhcmdlZCBzbyBwZXJpb2RpY2FsbHkga2ljayEgKi8KLQlpZiAobWFjaGluZV9pc19jb3JnaSgpICYmIChzaGFycHNsX3BtLmNoYXJnZV9tb2RlID09IENIUkdfT04pCisJaWYgKCFzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRmdWxsX2lycSAmJiAoc2hhcnBzbF9wbS5jaGFyZ2VfbW9kZSA9PSBDSFJHX09OKQogCQkJJiYgdGltZV9hZnRlcihqaWZmaWVzLCBzaGFycHNsX3BtLmNoYXJnZV9zdGFydF90aW1lICsgIFNIQVJQU0xfQ0hBUkdFX09OX1RJTUVfSU5URVJWQUwpKQogCQlzY2hlZHVsZV93b3JrKCZ0b2dnbGVfY2hhcmdlcik7CiAKQEAgLTE2NiwxMSArMTYwLDExIEBACiAJCQkmJiAoKHNoYXJwc2xfcG0uYmF0dHN0YXQubWFpbmJhdF9zdGF0dXMgPT0gQVBNX0JBVFRFUllfU1RBVFVTX0xPVykgfHwKIAkJCShzaGFycHNsX3BtLmJhdHRzdGF0Lm1haW5iYXRfc3RhdHVzID09IEFQTV9CQVRURVJZX1NUQVRVU19DUklUSUNBTCkpKSB7CiAJCWlmICghKHNoYXJwc2xfcG0uZmxhZ3MgJiBTSEFSUFNMX0JMX0xJTUlUKSkgewotCQkJY29yZ2libF9saW1pdF9pbnRlbnNpdHkoMSk7CisJCQlzaGFycHNsX3BtLm1hY2hpbmZvLT5iYWNrbGlnaHRfbGltaXQoMSk7CiAJCQlzaGFycHNsX3BtLmZsYWdzIHw9IFNIQVJQU0xfQkxfTElNSVQ7CiAJCX0KIAl9IGVsc2UgaWYgKHNoYXJwc2xfcG0uZmxhZ3MgJiBTSEFSUFNMX0JMX0xJTUlUKSB7Ci0JCWNvcmdpYmxfbGltaXRfaW50ZW5zaXR5KDApOworCQlzaGFycHNsX3BtLm1hY2hpbmZvLT5iYWNrbGlnaHRfbGltaXQoMCk7CiAJCXNoYXJwc2xfcG0uZmxhZ3MgJj0gflNIQVJQU0xfQkxfTElNSVQ7CiAJfQogCkBAIC00MTgsNyArNDEyLDcgQEAKIAl2YWwgPSBnZXRfc2VsZWN0X3ZhbChidWZmKTsKIAogCWRldl9kYmcoc2hhcnBzbF9wbS5kZXYsICJUZW1wZXJhdHVyZTogJWRcbiIsIHZhbCk7Ci0JaWYgKHZhbCA+IFNIQVJQU0xfQ0hBUkdFX09OX1RFTVApCisJaWYgKHZhbCA+IHNoYXJwc2xfcG0ubWFjaGluZm8tPmNoYXJnZV9vbl90ZW1wKQogCQlyZXR1cm4gLTE7CiAKIAlyZXR1cm4gMDsKQEAgLTQ1MCw3ICs0NDQsNyBAQAogCXZhbCA9IGdldF9zZWxlY3RfdmFsKGJ1ZmYpOwogCWRldl9kYmcoc2hhcnBzbF9wbS5kZXYsICJCYXR0ZXJ5IFZvbHRhZ2U6ICVkXG4iLCB2YWwpOwogCi0JaWYgKHZhbCA8IFNIQVJQU0xfQ0hBUkdFX09OX1ZPTFQpCisJaWYgKHZhbCA8IHNoYXJwc2xfcG0ubWFjaGluZm8tPmNoYXJnZV9vbl92b2x0KQogCQlyZXR1cm4gLTE7CiAKIAlyZXR1cm4gMDsKQEAgLTQ2OCw3ICs0NjIsNyBAQAogCXRlbXAgPSBnZXRfc2VsZWN0X3ZhbChidWZmKTsKIAlkZXZfZGJnKHNoYXJwc2xfcG0uZGV2LCAiQUMgVm9sdGFnZTogJWRcbiIsdGVtcCk7CiAKLQlpZiAoKHRlbXAgPiBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0hJR0gpIHx8ICh0ZW1wIDwgU0hBUlBTTF9DSEFSR0VfT05fQUNJTl9MT1cpKSB7CisJaWYgKCh0ZW1wID4gc2hhcnBzbF9wbS5tYWNoaW5mby0+Y2hhcmdlX2FjaW5faGlnaCkgfHwgKHRlbXAgPCBzaGFycHNsX3BtLm1hY2hpbmZvLT5jaGFyZ2VfYWNpbl9sb3cpKSB7CiAJCWRldl9lcnIoc2hhcnBzbF9wbS5kZXYsICJFcnJvcjogQUMgY2hlY2sgZmFpbGVkLlxuIik7CiAJCXJldHVybiAtMTsKIAl9CkBAIC02MjcsOCArNjIxLDggQEAKIAl0ZW1wID0gZ2V0X3NlbGVjdF92YWwoYnVmZik7CiAJZGV2X2RiZyhzaGFycHNsX3BtLmRldiwgInNoYXJwc2xfZmF0YWxfY2hlY2s6IGFjaW46ICVkLCBkaXNjaGFyZ2Ugdm9sdGFnZTogJWQsIG5vIGRpc2NoYXJnZTogJWRcbiIsIGFjaW4sIHRlbXAsIHNoYXJwc2xfcG0ubWFjaGluZm8tPnJlYWRfZGV2ZGF0YShTSEFSUFNMX0JBVFRfVk9MVCkpOwogCi0JaWYgKChhY2luICYmICh0ZW1wIDwgU0hBUlBTTF9GQVRBTF9BQ0lOX1ZPTFQpKSB8fAotCQkJKCFhY2luICYmICh0ZW1wIDwgU0hBUlBTTF9GQVRBTF9OT0FDSU5fVk9MVCkpKQorCWlmICgoYWNpbiAmJiAodGVtcCA8IHNoYXJwc2xfcG0ubWFjaGluZm8tPmZhdGFsX2FjaW5fdm9sdCkpIHx8CisJCQkoIWFjaW4gJiYgKHRlbXAgPCBzaGFycHNsX3BtLm1hY2hpbmZvLT5mYXRhbF9ub2FjaW5fdm9sdCkpKQogCQlyZXR1cm4gLTE7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vdWVuZ2luZS5jIGIvYXJjaC9hcm0vY29tbW9uL3VlbmdpbmUuYwppbmRleCBhMTMxMGI3Li5kZmNhNTk2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb21tb24vdWVuZ2luZS5jCisrKyBiL2FyY2gvYXJtL2NvbW1vbi91ZW5naW5lLmMKQEAgLTE4LDEwICsxOCwyNiBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL2l4cDIwMDAtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL3VlbmdpbmUuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KIAorI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSVhQMjAwMCkKKyNkZWZpbmUgSVhQX1VFTkdJTkVfQ1NSX1ZJUlRfQkFTRQlJWFAyMDAwX1VFTkdJTkVfQ1NSX1ZJUlRfQkFTRQorI2RlZmluZSBJWFBfUFJPRFVDVF9JRAkJCUlYUDIwMDBfUFJPRFVDVF9JRAorI2RlZmluZSBJWFBfTUlTQ19DT05UUk9MCQlJWFAyMDAwX01JU0NfQ09OVFJPTAorI2RlZmluZSBJWFBfUkVTRVQxCQkJSVhQMjAwMF9SRVNFVDEKKyNlbHNlCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9JWFAyM1hYKQorI2RlZmluZSBJWFBfVUVOR0lORV9DU1JfVklSVF9CQVNFCUlYUDIzWFhfVUVOR0lORV9DU1JfVklSVF9CQVNFCisjZGVmaW5lIElYUF9QUk9EVUNUX0lECQkJSVhQMjNYWF9QUk9EVUNUX0lECisjZGVmaW5lIElYUF9NSVNDX0NPTlRST0wJCUlYUDIzWFhfTUlTQ19DT05UUk9MCisjZGVmaW5lIElYUF9SRVNFVDEJCQlJWFAyM1hYX1JFU0VUMQorI2Vsc2UKKyNlcnJvciB1bmtub3duIHBsYXRmb3JtCisjZW5kaWYKKyNlbmRpZgorCiAjZGVmaW5lIFVTVE9SRV9BRERSRVNTCQkJMHgwMDAKICNkZWZpbmUgVVNUT1JFX0RBVEFfTE9XRVIJCTB4MDA0CiAjZGVmaW5lIFVTVE9SRV9EQVRBX1VQUEVSCQkweDAwOApAQCAtNDMsNyArNTksNyBAQAogCiBzdGF0aWMgdm9pZCAqaXhwMjAwMF91ZW5naW5lX2Nzcl9hcmVhKGludCB1ZW5naW5lKQogewotCXJldHVybiAoKHZvaWQgKilJWFAyMDAwX1VFTkdJTkVfQ1NSX1ZJUlRfQkFTRSkgKyAodWVuZ2luZSA8PCAxMCk7CisJcmV0dXJuICgodm9pZCAqKUlYUF9VRU5HSU5FX0NTUl9WSVJUX0JBU0UpICsgKHVlbmdpbmUgPDwgMTApOwogfQogCiAvKgpAQCAtOTEsOCArMTA3LDEzIEBACiAKIHZvaWQgaXhwMjAwMF91ZW5naW5lX3Jlc2V0KHUzMiB1ZW5naW5lX21hc2spCiB7Ci0JaXhwMjAwMF9yZWdfd3JiKElYUDIwMDBfUkVTRVQxLCB1ZW5naW5lX21hc2sgJiBpeHAyMDAwX3VlbmdpbmVfbWFzayk7Ci0JaXhwMjAwMF9yZWdfd3JiKElYUDIwMDBfUkVTRVQxLCAwKTsKKwl1MzIgdmFsdWU7CisKKwl2YWx1ZSA9IGl4cDIwMDBfcmVnX3JlYWQoSVhQX1JFU0VUMSkgJiB+aXhwMjAwMF91ZW5naW5lX21hc2s7CisKKwl1ZW5naW5lX21hc2sgJj0gaXhwMjAwMF91ZW5naW5lX21hc2s7CisJaXhwMjAwMF9yZWdfd3JiKElYUF9SRVNFVDEsIHZhbHVlIHwgdWVuZ2luZV9tYXNrKTsKKwlpeHAyMDAwX3JlZ193cmIoSVhQX1JFU0VUMSwgdmFsdWUpOwogfQogRVhQT1JUX1NZTUJPTChpeHAyMDAwX3VlbmdpbmVfcmVzZXQpOwogCkBAIC0yMzUsMTEgKzI1NiwxMiBAQAogCXUzMiBwcm9kdWN0X2lkOwogCXUzMiByZXY7CiAKLQlwcm9kdWN0X2lkID0gaXhwMjAwMF9yZWdfcmVhZChJWFAyMDAwX1BST0RVQ1RfSUQpOworCXByb2R1Y3RfaWQgPSBpeHAyMDAwX3JlZ19yZWFkKElYUF9QUk9EVUNUX0lEKTsKIAlpZiAoKChwcm9kdWN0X2lkID4+IDE2KSAmIDB4MWYpICE9IDApCiAJCXJldHVybiAwOwogCiAJc3dpdGNoICgocHJvZHVjdF9pZCA+PiA4KSAmIDB4ZmYpIHsKKyNpZmRlZiBDT05GSUdfQVJDSF9JWFAyMDAwCiAJY2FzZSAwOgkJLyogSVhQMjgwMCAqLwogCQlpZiAoIShjLT5jcHVfbW9kZWxfYml0bWFzayAmIDQpKQogCQkJcmV0dXJuIDA7CkBAIC0yNTQsNiArMjc2LDE0IEBACiAJCWlmICghKGMtPmNwdV9tb2RlbF9iaXRtYXNrICYgMikpCiAJCQlyZXR1cm4gMDsKIAkJYnJlYWs7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUkNIX0lYUDIzWFgKKwljYXNlIDQ6CQkvKiBJWFAyM3h4ICovCisJCWlmICghKGMtPmNwdV9tb2RlbF9iaXRtYXNrICYgMHgzZjApKQorCQkJcmV0dXJuIDA7CisJCWJyZWFrOworI2VuZGlmCiAKIAlkZWZhdWx0OgogCQlyZXR1cm4gMDsKQEAgLTQzMiw3ICs0NjIsOCBAQAogCS8qCiAJICogRGV0ZXJtaW5lIG51bWJlciBvZiBtaWNyb2VuZ2luZXMgcHJlc2VudC4KIAkgKi8KLQlzd2l0Y2ggKChpeHAyMDAwX3JlZ19yZWFkKElYUDIwMDBfUFJPRFVDVF9JRCkgPj4gOCkgJiAweDFmZmYpIHsKKwlzd2l0Y2ggKChpeHAyMDAwX3JlZ19yZWFkKElYUF9QUk9EVUNUX0lEKSA+PiA4KSAmIDB4MWZmZikgeworI2lmZGVmIENPTkZJR19BUkNIX0lYUDIwMDAKIAljYXNlIDA6CQkvKiBJWFAyODAwICovCiAJY2FzZSAxOgkJLyogSVhQMjg1MCAqLwogCQlpeHAyMDAwX3VlbmdpbmVfbWFzayA9IDB4MDBmZjAwZmY7CkBAIC00NDEsMTAgKzQ3MiwxNyBAQAogCWNhc2UgMjoJCS8qIElYUDI0MDAgKi8KIAkJaXhwMjAwMF91ZW5naW5lX21hc2sgPSAweDAwMGYwMDBmOwogCQlicmVhazsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSQ0hfSVhQMjNYWAorCWNhc2UgNDoJCS8qIElYUDIzeHggKi8KKwkJaXhwMjAwMF91ZW5naW5lX21hc2sgPSAoKklYUDIzWFhfRVhQX0NGR19GVVNFID4+IDgpICYgMHhmOworCQlicmVhazsKKyNlbmRpZgogCiAJZGVmYXVsdDoKIAkJcHJpbnRrKEtFUk5fSU5GTyAiRGV0ZWN0ZWQgdW5rbm93biBJWFAyMDAwIG1vZGVsICglLjh4KVxuIiwKLQkJCSh1bnNpZ25lZCBpbnQpaXhwMjAwMF9yZWdfcmVhZChJWFAyMDAwX1BST0RVQ1RfSUQpKTsKKwkJCSh1bnNpZ25lZCBpbnQpaXhwMjAwMF9yZWdfcmVhZChJWFBfUFJPRFVDVF9JRCkpOwogCQlpeHAyMDAwX3VlbmdpbmVfbWFzayA9IDB4MDAwMDAwMDA7CiAJCWJyZWFrOwogCX0KQEAgLTQ1NywxNSArNDk1LDE1IEBACiAJLyoKIAkgKiBTeW5jaHJvbmlzZSB0aW1lc3RhbXAgY291bnRlcnMgYWNyb3NzIGFsbCBtaWNyb2VuZ2luZXMuCiAJICovCi0JdmFsdWUgPSBpeHAyMDAwX3JlZ19yZWFkKElYUDIwMDBfTUlTQ19DT05UUk9MKTsKLQlpeHAyMDAwX3JlZ193cmIoSVhQMjAwMF9NSVNDX0NPTlRST0wsIHZhbHVlICYgfjB4ODApOworCXZhbHVlID0gaXhwMjAwMF9yZWdfcmVhZChJWFBfTUlTQ19DT05UUk9MKTsKKwlpeHAyMDAwX3JlZ193cmIoSVhQX01JU0NfQ09OVFJPTCwgdmFsdWUgJiB+MHg4MCk7CiAJZm9yICh1ZW5naW5lID0gMDsgdWVuZ2luZSA8IDMyOyB1ZW5naW5lKyspIHsKIAkJaWYgKGl4cDIwMDBfdWVuZ2luZV9tYXNrICYgKDEgPDwgdWVuZ2luZSkpIHsKIAkJCWl4cDIwMDBfdWVuZ2luZV9jc3Jfd3JpdGUodWVuZ2luZSwgVElNRVNUQU1QX0xPVywgMCk7CiAJCQlpeHAyMDAwX3VlbmdpbmVfY3NyX3dyaXRlKHVlbmdpbmUsIFRJTUVTVEFNUF9ISUdILCAwKTsKIAkJfQogCX0KLQlpeHAyMDAwX3JlZ193cmIoSVhQMjAwMF9NSVNDX0NPTlRST0wsIHZhbHVlIHwgMHg4MCk7CisJaXhwMjAwMF9yZWdfd3JiKElYUF9NSVNDX0NPTlRST0wsIHZhbHVlIHwgMHg4MCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvYXRlYjkyMDBfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9hdGViOTIwMF9kZWZjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjljMzllMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvYXRlYjkyMDBfZGVmY29uZmlnCkBAIC0wLDAgKzEsMTMxMiBAQAorIworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LXJjMworIyBTdW4gTWF5ICA3IDE2OjUzOjE4IDIwMDYKKyMKK0NPTkZJR19BUk09eQorQ09ORklHX01NVT15CitDT05GSUdfUldTRU1fR0VORVJJQ19TUElOTE9DSz15CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKK0NPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15CitDT05GSUdfVkVDVE9SU19CQVNFPTB4ZmZmZjAwMDAKKworIworIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKKyMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0xPQ0tfS0VSTkVMPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKKworIworIyBHZW5lcmFsIHNldHVwCisjCitDT05GSUdfTE9DQUxWRVJTSU9OPSIiCitDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQorQ09ORklHX1NXQVA9eQorQ09ORklHX1NZU1ZJUEM9eQorIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CisjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CitDT05GSUdfRU1CRURERUQ9eQorQ09ORklHX0tBTExTWU1TPXkKKyMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQorQ09ORklHX1BSSU5USz15CitDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQkFTRV9GVUxMPXkKK0NPTkZJR19GVVRFWD15CitDT05GSUdfRVBPTEw9eQorQ09ORklHX1NITUVNPXkKK0NPTkZJR19TTEFCPXkKKyMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAorQ09ORklHX0JBU0VfU01BTEw9MAorIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CisKKyMKKyMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKKyMKK0NPTkZJR19NT0RVTEVTPXkKK0NPTkZJR19NT0RVTEVfVU5MT0FEPXkKKyMgQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQgaXMgbm90IHNldAorIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAorIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKK0NPTkZJR19LTU9EPXkKKworIworIyBCbG9jayBsYXllcgorIworIyBDT05GSUdfQkxLX0RFVl9JT19UUkFDRSBpcyBub3Qgc2V0CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorCisjCisjIFN5c3RlbSBUeXBlCisjCisjIENPTkZJR19BUkNIX0NMUFM3NTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ0xQUzcxMVggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9DTzI4NSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0VCU0ExMTAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FUDkzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9GT09UQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSU5URUdSQVRPUiBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lPUDNYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDRYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyM1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTDcyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QWEEgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9SUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TQTExMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TM0MyNDEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfU0hBUksgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9MSDdBNDBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfT01BUCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1ZFUlNBVElMRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1JFQUxWSUVXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9BVDkxUk05MjAwPXkKKworIworIyBBVDkxUk05MjAwIEltcGxlbWVudGF0aW9ucworIworCisjCisjIEFUOTFSTTkyMDAgQm9hcmQgVHlwZQorIworIyBDT05GSUdfQVJDSF9BVDkxUk05MjAwREsgaXMgbm90IHNldAorIyBDT05GSUdfTUFDSF9BVDkxUk05MjAwRUsgaXMgbm90IHNldAorIyBDT05GSUdfTUFDSF9DU0IzMzcgaXMgbm90IHNldAorIyBDT05GSUdfTUFDSF9DU0I2MzcgaXMgbm90IHNldAorIyBDT05GSUdfTUFDSF9DQVJNRVZBIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfS0I5MjAwIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNIX0FURUI5MjAwPXkKKyMgQ09ORklHX01BQ0hfS0FGQSBpcyBub3Qgc2V0CisKKyMKKyMgQVQ5MSBGZWF0dXJlIFNlbGVjdGlvbnMKKyMKKyMgQ09ORklHX0FUOTFfUFJPR1JBTU1BQkxFX0NMT0NLUyBpcyBub3Qgc2V0CisKKyMKKyMgUHJvY2Vzc29yIFR5cGUKKyMKK0NPTkZJR19DUFVfMzI9eQorQ09ORklHX0NQVV9BUk05MjBUPXkKK0NPTkZJR19DUFVfMzJ2ND15CitDT05GSUdfQ1BVX0FCUlRfRVY0VD15CitDT05GSUdfQ1BVX0NBQ0hFX1Y0V1Q9eQorQ09ORklHX0NQVV9DQUNIRV9WSVZUPXkKK0NPTkZJR19DUFVfQ09QWV9WNFdCPXkKK0NPTkZJR19DUFVfVExCX1Y0V0JJPXkKKworIworIyBQcm9jZXNzb3IgRmVhdHVyZXMKKyMKK0NPTkZJR19BUk1fVEhVTUI9eQorIyBDT05GSUdfQ1BVX0lDQUNIRV9ESVNBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NQVV9EQ0FDSEVfRElTQUJMRSBpcyBub3Qgc2V0CisjIENPTkZJR19DUFVfRENBQ0hFX1dSSVRFVEhST1VHSCBpcyBub3Qgc2V0CisKKyMKKyMgQnVzIHN1cHBvcnQKKyMKKworIworIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0CisjCitDT05GSUdfUENDQVJEPW0KKyMgQ09ORklHX1BDTUNJQV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfUENNQ0lBPW0KK0NPTkZJR19QQ01DSUFfTE9BRF9DSVM9eQorQ09ORklHX1BDTUNJQV9JT0NUTD15CisKKyMKKyMgUEMtY2FyZCBicmlkZ2VzCisjCitDT05GSUdfQVQ5MV9DRj1tCisKKyMKKyMgS2VybmVsIEZlYXR1cmVzCisjCitDT05GSUdfUFJFRU1QVD15CitDT05GSUdfTk9fSURMRV9IWj15CitDT05GSUdfSFo9MTAwCisjIENPTkZJR19BRUFCSSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorQ09ORklHX0ZMQVRNRU1fTUFOVUFMPXkKKyMgQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRkxBVE1FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CitDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NDA5NgorIyBDT05GSUdfTEVEUyBpcyBub3Qgc2V0CitDT05GSUdfQUxJR05NRU5UX1RSQVA9eQorCisjCisjIEJvb3Qgb3B0aW9ucworIworQ09ORklHX1pCT09UX1JPTV9URVhUPTB4MAorQ09ORklHX1pCT09UX1JPTV9CU1M9MHgwCitDT05GSUdfQ01ETElORT0iIgorIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CisKKyMKKyMgRmxvYXRpbmcgcG9pbnQgZW11bGF0aW9uCisjCisKKyMKKyMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCisjCitDT05GSUdfRlBFX05XRlBFPXkKKyMgQ09ORklHX0ZQRV9OV0ZQRV9YUCBpcyBub3Qgc2V0CisjIENPTkZJR19GUEVfRkFTVEZQRSBpcyBub3Qgc2V0CisKKyMKKyMgVXNlcnNwYWNlIGJpbmFyeSBmb3JtYXRzCisjCitDT05GSUdfQklORk1UX0VMRj15CisjIENPTkZJR19CSU5GTVRfQU9VVCBpcyBub3Qgc2V0CisjIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CisjIENPTkZJR19BUlRIVVIgaXMgbm90IHNldAorCisjCisjIFBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucworIworQ09ORklHX1BNPXkKK0NPTkZJR19QTV9MRUdBQ1k9eQorIyBDT05GSUdfUE1fREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfQVBNIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JraW5nCisjCitDT05GSUdfTkVUPXkKKworIworIyBOZXR3b3JraW5nIG9wdGlvbnMKKyMKKyMgQ09ORklHX05FVERFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19QQUNLRVQ9eQorIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAorQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorIyBDT05GSUdfWEZSTV9VU0VSIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfS0VZPXkKK0NPTkZJR19JTkVUPXkKKyMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKKyMgQ09ORklHX0lQX1BOUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lORVRfRElBRz15CitDT05GSUdfSU5FVF9UQ1BfRElBRz15CisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQklDPXkKKyMgQ09ORklHX0lQVjYgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0CisKKyMKKyMgRENDUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9EQ0NQIGlzIG5vdCBzZXQKKworIworIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX0lQX1NDVFAgaXMgbm90IHNldAorCisjCisjIFRJUEMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAorQ09ORklHX0JSSURHRT1tCitDT05GSUdfVkxBTl84MDIxUT1tCisjIENPTkZJR19ERUNORVQgaXMgbm90IHNldAorQ09ORklHX0xMQz1tCisjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFMSyBpcyBub3Qgc2V0CisjIENPTkZJR19YMjUgaXMgbm90IHNldAorIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKKworIworIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKKyMKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayB0ZXN0aW5nCisjCisjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lSREEgaXMgbm90IHNldAorIyBDT05GSUdfQlQgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMT1tCisjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCisjIENPTkZJR19JRUVFODAyMTFfU09GVE1BQyBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKKworIworIyBEZXZpY2UgRHJpdmVycworIworCisjCisjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKKyMKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKK0NPTkZJR19GV19MT0FERVI9eQorCisjCisjIENvbm5lY3RvciAtIHVuaWZpZWQgdXNlcnNwYWNlIDwtPiBrZXJuZWxzcGFjZSBsaW5rZXIKKyMKKyMgQ09ORklHX0NPTk5FQ1RPUiBpcyBub3Qgc2V0CisKKyMKKyMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQorIworQ09ORklHX01URD15CisjIENPTkZJR19NVERfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0NPTkNBVCBpcyBub3Qgc2V0CitDT05GSUdfTVREX1BBUlRJVElPTlM9eQorIyBDT05GSUdfTVREX1JFREJPT1RfUEFSVFMgaXMgbm90IHNldAorQ09ORklHX01URF9DTURMSU5FX1BBUlRTPXkKKyMgQ09ORklHX01URF9BRlNfUEFSVFMgaXMgbm90IHNldAorCisjCisjIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCisjCitDT05GSUdfTVREX0NIQVI9eQorIyBDT05GSUdfTVREX0JMT0NLIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfQkxPQ0tfUk89eQorIyBDT05GSUdfRlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GVEwgaXMgbm90IHNldAorIyBDT05GSUdfSU5GVEwgaXMgbm90IHNldAorIyBDT05GSUdfUkZEX0ZUTCBpcyBub3Qgc2V0CisKKyMKKyMgUkFNL1JPTS9GbGFzaCBjaGlwIGRyaXZlcnMKKyMKKyMgQ09ORklHX01URF9DRkkgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0pFREVDUFJPQkUgaXMgbm90IHNldAorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xPXkKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMj15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzQ9eQorIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzggaXMgbm90IHNldAorIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE2IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8zMiBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NGSV9JMT15CitDT05GSUdfTVREX0NGSV9JMj15CisjIENPTkZJR19NVERfQ0ZJX0k0IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9DRklfSTggaXMgbm90IHNldAorIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAorIyBDT05GSUdfTVREX09CU09MRVRFX0NISVBTIGlzIG5vdCBzZXQKKworIworIyBNYXBwaW5nIGRyaXZlcnMgZm9yIGNoaXAgYWNjZXNzCisjCisjIENPTkZJR19NVERfQ09NUExFWF9NQVBQSU5HUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUExBVFJBTSBpcyBub3Qgc2V0CisKKyMKKyMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19NVERfU0xSQU0gaXMgbm90IHNldAorIyBDT05GSUdfTVREX1BIUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NVERSQU0gaXMgbm90IHNldAorIyBDT05GSUdfTVREX0JMT0NLMk1URCBpcyBub3Qgc2V0CisKKyMKKyMgRGlzay1Pbi1DaGlwIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19NVERfRE9DMjAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfRE9DMjAwMSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfRE9DMjAwMVBMVVMgaXMgbm90IHNldAorQ09ORklHX01URF9BVDkxX0RBVEFGTEFTSD15CisjIENPTkZJR19NVERfQVQ5MV9EQVRBRkxBU0hfQ0FSRCBpcyBub3Qgc2V0CisKKyMKKyMgTkFORCBGbGFzaCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX05BTkQgaXMgbm90IHNldAorCisjCisjIE9uZU5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX01URF9PTkVOQU5EIGlzIG5vdCBzZXQKKworIworIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKKyMKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorCisjCisjIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAorIworCisjCisjIEJsb2NrIGRldmljZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPW0KKyMgQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9OQkQ9bQorIyBDT05GSUdfQkxLX0RFVl9VQiBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lOSVRSRCBpcyBub3Qgc2V0CisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CisKKyMKKyMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAorIworIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJPW0KK0NPTkZJR19TQ1NJX1BST0NfRlM9eQorCisjCisjIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCisjCitDT05GSUdfQkxLX0RFVl9TRD1tCisjIENPTkZJR19DSFJfREVWX1NUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9TUj1tCitDT05GSUdfQkxLX0RFVl9TUl9WRU5ET1I9eQorQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAorCisjCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcworIworQ09ORklHX1NDU0lfTVVMVElfTFVOPXkKKyMgQ09ORklHX1NDU0lfQ09OU1RBTlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcworIworIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0FTX0FUVFJTIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCisjCisjIENPTkZJR19JU0NTSV9UQ1AgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQVRBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorCisjCisjIFBDTUNJQSBTQ1NJIGFkYXB0ZXIgc3VwcG9ydAorIworIyBDT05GSUdfUENNQ0lBX0FIQTE1MlggaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX0ZET01BSU4gaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX05JTkpBX1NDU0kgaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX1FMT0dJQyBpcyBub3Qgc2V0CisjIENPTkZJR19QQ01DSUFfU1lNNTNDNTAwIGlzIG5vdCBzZXQKKworIworIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQorIworIyBDT05GSUdfTUQgaXMgbm90IHNldAorCisjCisjIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZVU0lPTiBpcyBub3Qgc2V0CisKKyMKKyMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAorIworCisjCisjIEkyTyBkZXZpY2Ugc3VwcG9ydAorIworCisjCisjIE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19ORVRERVZJQ0VTPXkKK0NPTkZJR19EVU1NWT1tCisjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CitDT05GSUdfVFVOPW0KKworIworIyBQSFkgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19QSFlMSUI9eQorCisjCisjIE1JSSBQSFkgZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01BUlZFTExfUEhZIGlzIG5vdCBzZXQKK0NPTkZJR19EQVZJQ09NX1BIWT15CisjIENPTkZJR19RU0VNSV9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfTFhUX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19DSUNBREFfUEhZIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKyMKK0NPTkZJR19ORVRfRVRIRVJORVQ9eQorQ09ORklHX01JST15CitDT05GSUdfQVJNX0FUOTFfRVRIRVI9eQorIyBDT05GSUdfU01DOTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNOTAwMCBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMKKworIworIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKKyMKKworIworIyBUb2tlbiBSaW5nIGRldmljZXMKKyMKKworIworIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKKyMKK0NPTkZJR19ORVRfUkFESU89eQorIyBDT05GSUdfTkVUX1dJUkVMRVNTX1JUTkVUTElOSyBpcyBub3Qgc2V0CisKKyMKKyMgT2Jzb2xldGUgV2lyZWxlc3MgY2FyZHMgc3VwcG9ydCAocHJlLTgwMi4xMSkKKyMKKyMgQ09ORklHX1NUUklQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDTUNJQV9XQVZFTEFOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BDTUNJQV9ORVRXQVZFIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcyA4MDIuMTEgRnJlcXVlbmN5IEhvcHBpbmcgY2FyZHMgc3VwcG9ydAorIworIyBDT05GSUdfUENNQ0lBX1JBWUNTIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcyA4MDIuMTFiIElTQS9QQ0kgY2FyZHMgc3VwcG9ydAorIworIyBDT05GSUdfSEVSTUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUTUVMIGlzIG5vdCBzZXQKKworIworIyBXaXJlbGVzcyA4MDIuMTFiIFBjbWNpYS9DYXJkYnVzIGNhcmRzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0FJUk9fQ1MgaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX1dMMzUwMSBpcyBub3Qgc2V0CisjIENPTkZJR19IT1NUQVAgaXMgbm90IHNldAorQ09ORklHX05FVF9XSVJFTEVTUz15CisKKyMKKyMgUENNQ0lBIG5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX05FVF9QQ01DSUEgaXMgbm90IHNldAorCisjCisjIFdhbiBpbnRlcmZhY2VzCisjCisjIENPTkZJR19XQU4gaXMgbm90IHNldAorQ09ORklHX1BQUD1tCisjIENPTkZJR19QUFBfTVVMVElMSU5LIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQUF9GSUxURVIgaXMgbm90IHNldAorQ09ORklHX1BQUF9BU1lOQz1tCitDT05GSUdfUFBQX1NZTkNfVFRZPW0KK0NPTkZJR19QUFBfREVGTEFURT1tCitDT05GSUdfUFBQX0JTRENPTVA9bQorIyBDT05GSUdfUFBQX01QUEUgaXMgbm90IHNldAorQ09ORklHX1BQUE9FPW0KKyMgQ09ORklHX1NMSVAgaXMgbm90IHNldAorIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVENPTlNPTEUgaXMgbm90IHNldAorIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKKworIworIyBJU0ROIHN1YnN5c3RlbQorIworIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0CisKKyMKKyMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19JTlBVVD15CisKKyMKKyMgVXNlcmxhbmQgaW50ZXJmYWNlcworIworQ09ORklHX0lOUFVUX01PVVNFREVWPXkKK0NPTkZJR19JTlBVVF9NT1VTRURFVl9QU0FVWD15CitDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAorIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBEZXZpY2UgRHJpdmVycworIworQ09ORklHX0lOUFVUX0tFWUJPQVJEPXkKK0NPTkZJR19LRVlCT0FSRF9BVEtCRD15CisjIENPTkZJR19LRVlCT0FSRF9TVU5LQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKK0NPTkZJR19JTlBVVF9NT1VTRT15CitDT05GSUdfTU9VU0VfUFMyPXkKKyMgQ09ORklHX01PVVNFX1NFUklBTCBpcyBub3Qgc2V0CisjIENPTkZJR19NT1VTRV9WU1hYWEFBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIEkvTyBwb3J0cworIworQ09ORklHX1NFUklPPXkKK0NPTkZJR19TRVJJT19TRVJQT1JUPXkKK0NPTkZJR19TRVJJT19MSUJQUzI9eQorIyBDT05GSUdfU0VSSU9fUkFXIGlzIG5vdCBzZXQKKyMgQ09ORklHX0dBTUVQT1JUIGlzIG5vdCBzZXQKKworIworIyBDaGFyYWN0ZXIgZGV2aWNlcworIworQ09ORklHX1ZUPXkKK0NPTkZJR19WVF9DT05TT0xFPXkKK0NPTkZJR19IV19DT05TT0xFPXkKKyMgQ09ORklHX1NFUklBTF9OT05TVEFOREFSRCBpcyBub3Qgc2V0CisKKyMKKyMgU2VyaWFsIGRyaXZlcnMKKyMKKyMgQ09ORklHX1NFUklBTF84MjUwIGlzIG5vdCBzZXQKKworIworIyBOb24tODI1MCBzZXJpYWwgcG9ydCBzdXBwb3J0CisjCitDT05GSUdfU0VSSUFMX0FUOTE9eQorQ09ORklHX1NFUklBTF9BVDkxX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX0FUOTFfVFRZQVQgaXMgbm90IHNldAorQ09ORklHX1NFUklBTF9DT1JFPXkKK0NPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKK0NPTkZJR19VTklYOThfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWVM9eQorQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CisKKyMKKyMgSVBNSQorIworIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAorIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CisjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisjCisKKyMKKyMgUENNQ0lBIGNoYXJhY3RlciBkZXZpY2VzCisjCisjIENPTkZJR19TWU5DTElOS19DUyBpcyBub3Qgc2V0CisjIENPTkZJR19DQVJETUFOXzQwMDAgaXMgbm90IHNldAorIyBDT05GSUdfQ0FSRE1BTl80MDQwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JBV19EUklWRVIgaXMgbm90IHNldAorCisjCisjIFRQTSBkZXZpY2VzCisjCisjIENPTkZJR19UQ0dfVFBNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RFTENMT0NLIGlzIG5vdCBzZXQKK0NPTkZJR19BVDkxX1NQST15CitDT05GSUdfQVQ5MV9TUElERVY9eQorCisjCisjIEkyQyBzdXBwb3J0CisjCitDT05GSUdfSTJDPW0KK0NPTkZJR19JMkNfQ0hBUkRFVj1tCisKKyMKKyMgSTJDIEFsZ29yaXRobXMKKyMKK0NPTkZJR19JMkNfQUxHT0JJVD1tCitDT05GSUdfSTJDX0FMR09QQ0Y9bQorQ09ORklHX0kyQ19BTEdPUENBPW0KKworIworIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKKyMKK0NPTkZJR19JMkNfQVQ5MT1tCisjIENPTkZJR19JMkNfUEFSUE9SVF9MSUdIVCBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfU1RVQiBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfUENBX0lTQSBpcyBub3Qgc2V0CisKKyMKKyMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0CisjCisjIENPTkZJR19TRU5TT1JTX0RTMTMzNyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0RTMTM3NCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0FMR08gaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0JVUyBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCitDT05GSUdfSFdNT049eQorIyBDT05GSUdfSFdNT05fVklEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURNMTAyMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FETTEwMjUgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRE0xMDI2IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BU0IxMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19GU0NIRVIgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19GU0NQT1MgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19HTDUxOFNNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfR0w1MjBTTSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0lUODcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTYzIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE03NSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNNzcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTc4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE04MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNODMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTg1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE04NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNOTAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTUFYMTYxOSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1BDODczNjAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODM3ODFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIExFRCBkZXZpY2VzCisjCisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisKKyMKKyMgTEVEIGRyaXZlcnMKKyMKKworIworIyBMRUQgVHJpZ2dlcnMKKyMKKworIworIyBNdWx0aW1lZGlhIGRldmljZXMKKyMKKyMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0CisKKyMKKyMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcworIworIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9EQUJVU0IgaXMgbm90IHNldAorCisjCisjIEdyYXBoaWNzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKworIworIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKKyMKKyMgQ09ORklHX1ZHQV9DT05TT0xFIGlzIG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKKworIworIyBTb3VuZAorIworQ09ORklHX1NPVU5EPXkKKworIworIyBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUKKyMKKyMgQ09ORklHX1NORCBpcyBub3Qgc2V0CisKKyMKKyMgT3BlbiBTb3VuZCBTeXN0ZW0KKyMKKyMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKKworIworIyBVU0Igc3VwcG9ydAorIworQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQorQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKK0NPTkZJR19VU0I9eQorIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCisjCitDT05GSUdfVVNCX0RFVklDRUZTPXkKKyMgQ09ORklHX1VTQl9CQU5EV0lEVEggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0RZTkFNSUNfTUlOT1JTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVVNQRU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9PVEcgaXMgbm90IHNldAorCisjCisjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycworIworIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfT0hDSV9IQ0Q9eQorIyBDT05GSUdfVVNCX09IQ0lfQklHX0VORElBTiBpcyBub3Qgc2V0CitDT05GSUdfVVNCX09IQ0lfTElUVExFX0VORElBTj15CisjIENPTkZJR19VU0JfU0w4MTFfSENEIGlzIG5vdCBzZXQKKworIworIyBVU0IgRGV2aWNlIENsYXNzIGRyaXZlcnMKKyMKK0NPTkZJR19VU0JfQUNNPW0KK0NPTkZJR19VU0JfUFJJTlRFUj1tCisKKyMKKyMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JworIworCisjCisjIG1heSBhbHNvIGJlIG5lZWRlZDsgc2VlIFVTQl9TVE9SQUdFIEhlbHAgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyMKK0NPTkZJR19VU0JfU1RPUkFHRT1tCisjIENPTkZJR19VU0JfU1RPUkFHRV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfVVNCX1NUT1JBR0VfREFUQUZBQj15CitDT05GSUdfVVNCX1NUT1JBR0VfRlJFRUNPTT15CitDT05GSUdfVVNCX1NUT1JBR0VfRFBDTT15CitDT05GSUdfVVNCX1NUT1JBR0VfVVNCQVQ9eQorQ09ORklHX1VTQl9TVE9SQUdFX1NERFIwOT15CitDT05GSUdfVVNCX1NUT1JBR0VfU0REUjU1PXkKK0NPTkZJR19VU0JfU1RPUkFHRV9KVU1QU0hPVD15CisjIENPTkZJR19VU0JfU1RPUkFHRV9BTEFVREEgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0xJQlVTVUFMIGlzIG5vdCBzZXQKKworIworIyBVU0IgSW5wdXQgRGV2aWNlcworIworQ09ORklHX1VTQl9ISUQ9bQorQ09ORklHX1VTQl9ISURJTlBVVD15CisjIENPTkZJR19VU0JfSElESU5QVVRfUE9XRVJCT09LIGlzIG5vdCBzZXQKK0NPTkZJR19ISURfRkY9eQorQ09ORklHX0hJRF9QSUQ9eQorQ09ORklHX0xPR0lURUNIX0ZGPXkKK0NPTkZJR19USFJVU1RNQVNURVJfRkY9eQorQ09ORklHX1VTQl9ISURERVY9eQorCisjCisjIFVTQiBISUQgQm9vdCBQcm90b2NvbCBkcml2ZXJzCisjCisjIENPTkZJR19VU0JfS0JEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9NT1VTRSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQUlQVEVLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9XQUNPTSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQUNFQ0FEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9LQlRBQiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUE9XRVJNQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfWUVBTElOSyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfWFBBRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQVRJX1JFTU9URSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQVRJX1JFTU9URTIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0tFWVNQQU5fUkVNT1RFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BUFBMRVRPVUNIIGlzIG5vdCBzZXQKKworIworIyBVU0IgSW1hZ2luZyBkZXZpY2VzCisjCisjIENPTkZJR19VU0JfTURDODAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9NSUNST1RFSyBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIE5ldHdvcmsgQWRhcHRlcnMKKyMKKyMgQ09ORklHX1VTQl9DQVRDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9LQVdFVEggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1BFR0FTVVMgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1JUTDgxNTAgaXMgbm90IHNldAorQ09ORklHX1VTQl9VU0JORVQ9eQorQ09ORklHX1VTQl9ORVRfQVg4ODE3WD15CitDT05GSUdfVVNCX05FVF9DRENFVEhFUj15CitDT05GSUdfVVNCX05FVF9HTDYyMEE9eQorQ09ORklHX1VTQl9ORVRfTkVUMTA4MD15CitDT05GSUdfVVNCX05FVF9QTFVTQj15CitDT05GSUdfVVNCX05FVF9STkRJU19IT1NUPXkKK0NPTkZJR19VU0JfTkVUX0NEQ19TVUJTRVQ9eQorQ09ORklHX1VTQl9BTElfTTU2MzI9eQorQ09ORklHX1VTQl9BTjI3MjA9eQorQ09ORklHX1VTQl9CRUxLSU49eQorQ09ORklHX1VTQl9BUk1MSU5VWD15CitDT05GSUdfVVNCX0VQU09OMjg4OD15CitDT05GSUdfVVNCX05FVF9aQVVSVVM9eQorIyBDT05GSUdfVVNCX1pEMTIwMSBpcyBub3Qgc2V0CitDT05GSUdfVVNCX01PTj15CisKKyMKKyMgVVNCIHBvcnQgZHJpdmVycworIworCisjCisjIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKKyMKK0NPTkZJR19VU0JfU0VSSUFMPW0KK0NPTkZJR19VU0JfU0VSSUFMX0dFTkVSSUM9eQorIyBDT05GSUdfVVNCX1NFUklBTF9BSVJQUklNRSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0FOWURBVEEgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9CRUxLSU4gaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9XSElURUhFQVQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9ESUdJX0FDQ0VMRVBPUlQgaXMgbm90IHNldAorQ09ORklHX1VTQl9TRVJJQUxfQ1AyMTAxPW0KKyMgQ09ORklHX1VTQl9TRVJJQUxfQ1lQUkVTU19NOCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0VNUEVHIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfU0VSSUFMX0ZURElfU0lPPW0KKyMgQ09ORklHX1VTQl9TRVJJQUxfRlVOU09GVCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX1ZJU09SIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfSVBBUSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0lSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfRURHRVBPUlQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVF9USSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0dBUk1JTiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0lQVyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0tFWVNQQU5fUERBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX0tMU0kgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9LT0JJTF9TQ1QgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9NQ1RfVTIzMiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX05BVk1BTiBpcyBub3Qgc2V0CitDT05GSUdfVVNCX1NFUklBTF9QTDIzMDM9bQorIyBDT05GSUdfVVNCX1NFUklBTF9IUDRYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfU0FGRSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU0VSSUFMX1RJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfQ1lCRVJKQUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfWElSQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfT1BUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfT01OSU5FVCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIE1pc2NlbGxhbmVvdXMgZHJpdmVycworIworIyBDT05GSUdfVVNCX0VNSTYyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9FTUkyNiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQVVFUlNXQUxEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9SSU81MDAgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0xFR09UT1dFUiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfTENEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9MRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0NZVEhFUk0gaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1BISURHRVRLSVQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1BISURHRVRTRVJWTyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfSURNT1VTRSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfTEQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAorCisjCisjIFVTQiBEU0wgbW9kZW0gc3VwcG9ydAorIworCisjCisjIFVTQiBHYWRnZXQgU3VwcG9ydAorIworQ09ORklHX1VTQl9HQURHRVQ9bQorIyBDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUyBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0dBREdFVF9TRUxFQ1RFRD15CisjIENPTkZJR19VU0JfR0FER0VUX05FVDIyODAgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0dBREdFVF9QWEEyWFggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0dBREdFVF9HT0tVIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HQURHRVRfTEg3QTQwWCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfR0FER0VUX09NQVAgaXMgbm90IHNldAorQ09ORklHX1VTQl9HQURHRVRfQVQ5MT15CitDT05GSUdfVVNCX0FUOTE9bQorIyBDT05GSUdfVVNCX0dBREdFVF9EVU1NWV9IQ0QgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0dBREdFVF9EVUFMU1BFRUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1pFUk8gaXMgbm90IHNldAorQ09ORklHX1VTQl9FVEg9bQorQ09ORklHX1VTQl9FVEhfUk5ESVM9eQorQ09ORklHX1VTQl9HQURHRVRGUz1tCitDT05GSUdfVVNCX0ZJTEVfU1RPUkFHRT1tCisjIENPTkZJR19VU0JfRklMRV9TVE9SQUdFX1RFU1QgaXMgbm90IHNldAorQ09ORklHX1VTQl9HX1NFUklBTD1tCisKKyMKKyMgTU1DL1NEIENhcmQgc3VwcG9ydAorIworQ09ORklHX01NQz1tCitDT05GSUdfTU1DX0RFQlVHPXkKK0NPTkZJR19NTUNfQkxPQ0s9bQorQ09ORklHX01NQ19BVDkxUk05MjAwPW0KKworIworIyBSZWFsIFRpbWUgQ2xvY2sKKyMKK0NPTkZJR19SVENfTElCPXkKK0NPTkZJR19SVENfQ0xBU1M9eQorIyBDT05GSUdfUlRDX0hDVE9TWVMgaXMgbm90IHNldAorCisjCisjIFJUQyBpbnRlcmZhY2VzCisjCitDT05GSUdfUlRDX0lOVEZfU1lTRlM9eQorQ09ORklHX1JUQ19JTlRGX1BST0M9eQorQ09ORklHX1JUQ19JTlRGX0RFVj15CisKKyMKKyMgUlRDIGRyaXZlcnMKKyMKKyMgQ09ORklHX1JUQ19EUlZfWDEyMDUgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9EUzE2NzIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUlM1QzM3MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX000OFQ4NiBpcyBub3Qgc2V0CitDT05GSUdfUlRDX0RSVl9BVDkxPXkKKyMgQ09ORklHX1JUQ19EUlZfVEVTVCBpcyBub3Qgc2V0CisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz1tCisjIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19FWFQzX0ZTPW0KK0NPTkZJR19FWFQzX0ZTX1hBVFRSPXkKKyMgQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlNfU0VDVVJJVFkgaXMgbm90IHNldAorQ09ORklHX0pCRD1tCisjIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0ZTX01CQ0FDSEU9bQorQ09ORklHX1JFSVNFUkZTX0ZTPW0KKyMgQ09ORklHX1JFSVNFUkZTX0NIRUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUlTRVJGU19GU19YQVRUUiBpcyBub3Qgc2V0CisjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0ZTX1BPU0lYX0FDTD15CisjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0lOT1RJRlk9eQorIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAorQ09ORklHX0ROT1RJRlk9eQorIyBDT05GSUdfQVVUT0ZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CisKKyMKKyMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcworIworQ09ORklHX0lTTzk2NjBfRlM9bQorQ09ORklHX0pPTElFVD15CitDT05GSUdfWklTT0ZTPXkKK0NPTkZJR19aSVNPRlNfRlM9bQorQ09ORklHX1VERl9GUz1tCitDT05GSUdfVURGX05MUz15CisKKyMKKyMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcworIworQ09ORklHX0ZBVF9GUz1tCitDT05GSUdfTVNET1NfRlM9bQorQ09ORklHX1ZGQVRfRlM9bQorQ09ORklHX0ZBVF9ERUZBVUxUX0NPREVQQUdFPTQzNworQ09ORklHX0ZBVF9ERUZBVUxUX0lPQ0hBUlNFVD0iaXNvODg1OS0xIgorQ09ORklHX05URlNfRlM9bQorIyBDT05GSUdfTlRGU19ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfTlRGU19SVz15CisKKyMKKyMgUHNldWRvIGZpbGVzeXN0ZW1zCisjCitDT05GSUdfUFJPQ19GUz15CitDT05GSUdfU1lTRlM9eQorQ09ORklHX1RNUEZTPXkKKyMgQ09ORklHX0hVR0VUTEJfUEFHRSBpcyBub3Qgc2V0CitDT05GSUdfUkFNRlM9eQorIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAorCisjCisjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKKyMKKyMgQ09ORklHX0FERlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQUZGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19CRUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19FRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkZGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CitDT05GSUdfQ1JBTUZTPXkKKyMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgRmlsZSBTeXN0ZW1zCisjCitDT05GSUdfTkZTX0ZTPW0KK0NPTkZJR19ORlNfVjM9eQorQ09ORklHX05GU19WM19BQ0w9eQorQ09ORklHX05GU19WND15CitDT05GSUdfTkZTX0RJUkVDVElPPXkKK0NPTkZJR19ORlNEPW0KK0NPTkZJR19ORlNEX1YzPXkKKyMgQ09ORklHX05GU0RfVjNfQUNMIGlzIG5vdCBzZXQKK0NPTkZJR19ORlNEX1Y0PXkKK0NPTkZJR19ORlNEX1RDUD15CitDT05GSUdfTE9DS0Q9bQorQ09ORklHX0xPQ0tEX1Y0PXkKK0NPTkZJR19FWFBPUlRGUz1tCitDT05GSUdfTkZTX0FDTF9TVVBQT1JUPW0KK0NPTkZJR19ORlNfQ09NTU9OPXkKK0NPTkZJR19TVU5SUEM9bQorQ09ORklHX1NVTlJQQ19HU1M9bQorQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT1tCisjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NNQl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19DSUZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DUF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19DT0RBX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR185UF9GUyBpcyBub3Qgc2V0CisKKyMKKyMgUGFydGl0aW9uIFR5cGVzCisjCitDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXkKKyMgQ09ORklHX0FDT1JOX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19PU0ZfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FNSUdBX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFSSV9QQVJUSVRJT04gaXMgbm90IHNldAorQ09ORklHX01BQ19QQVJUSVRJT049eQorQ09ORklHX01TRE9TX1BBUlRJVElPTj15CitDT05GSUdfQlNEX0RJU0tMQUJFTD15CitDT05GSUdfTUlOSVhfU1VCUEFSVElUSU9OPXkKK0NPTkZJR19TT0xBUklTX1g4Nl9QQVJUSVRJT049eQorQ09ORklHX1VOSVhXQVJFX0RJU0tMQUJFTD15CisjIENPTkZJR19MRE1fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NHSV9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfVUxUUklYX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19TVU5fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tBUk1BX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXQKKworIworIyBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAorIworQ09ORklHX05MUz1tCitDT05GSUdfTkxTX0RFRkFVTFQ9Imlzbzg4NTktMSIKKyMgQ09ORklHX05MU19DT0RFUEFHRV80MzcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzczNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfNzc1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1MiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODU1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjIgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjUgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY5IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85MzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzk1MCBpcyBub3Qgc2V0CitDT05GSUdfTkxTX0NPREVQQUdFXzkzMj1tCisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTQ5IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfOCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MSBpcyBub3Qgc2V0CitDT05GSUdfTkxTX0FTQ0lJPW0KKyMgQ09ORklHX05MU19JU084ODU5XzEgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfMiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV8zIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzQgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV82IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfOSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV8xMyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV8xNCBpcyBub3Qgc2V0CitDT05GSUdfTkxTX0lTTzg4NTlfMTU9bQorIyBDT05GSUdfTkxTX0tPSThfUiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfS09JOF9VIGlzIG5vdCBzZXQKK0NPTkZJR19OTFNfVVRGOD1tCisKKyMKKyMgUHJvZmlsaW5nIHN1cHBvcnQKKyMKK0NPTkZJR19QUk9GSUxJTkc9eQorQ09ORklHX09QUk9GSUxFPW0KKworIworIyBLZXJuZWwgaGFja2luZworIworIyBDT05GSUdfUFJJTlRLX1RJTUUgaXMgbm90IHNldAorIyBDT05GSUdfTUFHSUNfU1lTUlEgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19GUkFNRV9QT0lOVEVSPXkKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1VTRVIgaXMgbm90IHNldAorCisjCisjIFNlY3VyaXR5IG9wdGlvbnMKKyMKKyMgQ09ORklHX0tFWVMgaXMgbm90IHNldAorIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAorCisjCisjIENyeXB0b2dyYXBoaWMgb3B0aW9ucworIworQ09ORklHX0NSWVBUTz15CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fTUQ1PXkKKyMgQ09ORklHX0NSWVBUT19TSEExIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEEyNTYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fV1A1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RHUjE5MiBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0RFUz1tCisjIENPTkZJR19DUllQVE9fQkxPV0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RXT0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFUlBFTlQgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19BRVM9bQorIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQVJDND1tCisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz1tCisjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKKworIworIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcworIworCisjCisjIExpYnJhcnkgcm91dGluZXMKKyMKK0NPTkZJR19DUkNfQ0NJVFQ9bQorQ09ORklHX0NSQzE2PW0KK0NPTkZJR19DUkMzMj15CitDT05GSUdfTElCQ1JDMzJDPW0KK0NPTkZJR19aTElCX0lORkxBVEU9eQorQ09ORklHX1pMSUJfREVGTEFURT1tCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2Nhcm1ldmFfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9jYXJtZXZhX2RlZmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2NkMjlhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vY29uZmlncy9jYXJtZXZhX2RlZmNvbmZpZwpAQCAtMCwwICsxLDcyMyBAQAorIworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjEyLXJjNAorIyBUdWUgSnVuIDE0IDEyOjA1OjI0IDIwMDUKKyMKK0NPTkZJR19BUk09eQorQ09ORklHX01NVT15CitDT05GSUdfVUlEMTY9eQorQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKK0NPTkZJR19HRU5FUklDX0lPTUFQPXkKKworIworIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKKyMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0NMRUFOX0NPTVBJTEU9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKK0NPTkZJR19TV0FQPXkKKyMgQ09ORklHX1NZU1ZJUEMgaXMgbm90IHNldAorIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAorIyBDT05GSUdfU1lTQ1RMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hPVFBMVUcgaXMgbm90IHNldAorQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKKyMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19FTUJFRERFRD15CitDT05GSUdfS0FMTFNZTVM9eQorIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfUFJJTlRLPXkKK0NPTkZJR19CVUc9eQorQ09ORklHX0JBU0VfRlVMTD15CitDT05GSUdfRlVURVg9eQorQ09ORklHX0VQT0xMPXkKK0NPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CitDT05GSUdfU0hNRU09eQorQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCitDT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKK0NPTkZJR19DQ19BTElHTl9MT09QUz0wCitDT05GSUdfQ0NfQUxJR05fSlVNUFM9MAorIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CitDT05GSUdfQkFTRV9TTUFMTD0wCisKKyMKKyMgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKKyMKK0NPTkZJR19NT0RVTEVTPXkKK0NPTkZJR19NT0RVTEVfVU5MT0FEPXkKK0NPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXkKK0NPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkKKyMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTCBpcyBub3Qgc2V0CisjIENPTkZJR19LTU9EIGlzIG5vdCBzZXQKKworIworIyBTeXN0ZW0gVHlwZQorIworIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NMUFM3MTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ08yODUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FQlNBMTEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRk9PVEJSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JT1AzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFA0WFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTDcyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QWEEgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9SUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TQTExMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TM0MyNDEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfU0hBUksgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9MSDdBNDBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfT01BUCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1ZFUlNBVElMRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0FUOTFSTTkyMDA9eQorCisjCisjIEFUOTFSTTkyMDAgSW1wbGVtZW50YXRpb25zCisjCisjIENPTkZJR19BUkNIX0FUOTFSTTkyMDBESyBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNIX0FUOTFSTTkyMDBFSyBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNIX0NTQjMzNyBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNIX0NTQjYzNyBpcyBub3Qgc2V0CitDT05GSUdfTUFDSF9DQVJNRVZBPXkKKworIworIyBQcm9jZXNzb3IgVHlwZQorIworQ09ORklHX0NQVV8zMj15CitDT05GSUdfQ1BVX0FSTTkyMFQ9eQorQ09ORklHX0NQVV8zMnY0PXkKK0NPTkZJR19DUFVfQUJSVF9FVjRUPXkKK0NPTkZJR19DUFVfQ0FDSEVfVjRXVD15CitDT05GSUdfQ1BVX0NBQ0hFX1ZJVlQ9eQorQ09ORklHX0NQVV9DT1BZX1Y0V0I9eQorQ09ORklHX0NQVV9UTEJfVjRXQkk9eQorCisjCisjIFByb2Nlc3NvciBGZWF0dXJlcworIworQ09ORklHX0FSTV9USFVNQj15CisjIENPTkZJR19DUFVfSUNBQ0hFX0RJU0FCTEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1BVX0RDQUNIRV9ESVNBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NQVV9EQ0FDSEVfV1JJVEVUSFJPVUdIIGlzIG5vdCBzZXQKKworIworIyBCdXMgc3VwcG9ydAorIworQ09ORklHX0lTQV9ETUFfQVBJPXkKKworIworIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0CisjCisjIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBGZWF0dXJlcworIworIyBDT05GSUdfU01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAorIyBDT05GSUdfRElTQ09OVElHTUVNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xFRFMgaXMgbm90IHNldAorQ09ORklHX0FMSUdOTUVOVF9UUkFQPXkKKworIworIyBCb290IG9wdGlvbnMKKyMKK0NPTkZJR19aQk9PVF9ST01fVEVYVD0weDAKK0NPTkZJR19aQk9PVF9ST01fQlNTPTB4MAorQ09ORklHX0NNRExJTkU9IiIKKyMgQ09ORklHX1hJUF9LRVJORUwgaXMgbm90IHNldAorCisjCisjIEZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbgorIworCisjCisjIEF0IGxlYXN0IG9uZSBlbXVsYXRpb24gbXVzdCBiZSBzZWxlY3RlZAorIworQ09ORklHX0ZQRV9OV0ZQRT15CisjIENPTkZJR19GUEVfTldGUEVfWFAgaXMgbm90IHNldAorIyBDT05GSUdfRlBFX0ZBU1RGUEUgaXMgbm90IHNldAorCisjCisjIFVzZXJzcGFjZSBiaW5hcnkgZm9ybWF0cworIworQ09ORklHX0JJTkZNVF9FTEY9eQorIyBDT05GSUdfQklORk1UX0FPVVQgaXMgbm90IHNldAorIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfQVJUSFVSIGlzIG5vdCBzZXQKKworIworIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKKyMKKyMgQ09ORklHX1BNIGlzIG5vdCBzZXQKKworIworIyBEZXZpY2UgRHJpdmVycworIworCisjCisjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKKyMKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKKyMgQ09ORklHX0ZXX0xPQURFUiBpcyBub3Qgc2V0CisKKyMKKyMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQorIworQ09ORklHX01URD15CisjIENPTkZJR19NVERfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0NPTkNBVCBpcyBub3Qgc2V0CitDT05GSUdfTVREX1BBUlRJVElPTlM9eQorIyBDT05GSUdfTVREX1JFREJPT1RfUEFSVFMgaXMgbm90IHNldAorQ09ORklHX01URF9DTURMSU5FX1BBUlRTPXkKKyMgQ09ORklHX01URF9BRlNfUEFSVFMgaXMgbm90IHNldAorCisjCisjIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCisjCitDT05GSUdfTVREX0NIQVI9eQorQ09ORklHX01URF9CTE9DSz15CisjIENPTkZJR19GVEwgaXMgbm90IHNldAorIyBDT05GSUdfTkZUTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkZUTCBpcyBub3Qgc2V0CisKKyMKKyMgUkFNL1JPTS9GbGFzaCBjaGlwIGRyaXZlcnMKKyMKKyMgQ09ORklHX01URF9DRkkgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0pFREVDUFJPQkUgaXMgbm90IHNldAorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xPXkKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMj15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzQ9eQorIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzggaXMgbm90IHNldAorIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE2IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8zMiBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NGSV9JMT15CitDT05GSUdfTVREX0NGSV9JMj15CisjIENPTkZJR19NVERfQ0ZJX0k0IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9DRklfSTggaXMgbm90IHNldAorIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAorCisjCisjIE1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MKKyMKKyMgQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTIGlzIG5vdCBzZXQKKworIworIyBTZWxmLWNvbnRhaW5lZCBNVEQgZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01URF9TTFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUEhSQU0gaXMgbm90IHNldAorIyBDT05GSUdfTVREX01URFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQkxLTVREIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAorCisjCisjIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfQVQ5MV9EQVRBRkxBU0g9eQorIyBDT05GSUdfTVREX0FUOTFfREFUQUZMQVNIX0NBUkQgaXMgbm90IHNldAorCisjCisjIE5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX01URF9OQU5EIGlzIG5vdCBzZXQKKworIworIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKKyMKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorCisjCisjIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAorIworCisjCisjIEJsb2NrIGRldmljZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0xPT1AgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9OQkQgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgorQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgorQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CisjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjCisjIENPTkZJR19NRCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAorIworCisjCisjIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKKyMKKworIworIyBJMk8gZGV2aWNlIHN1cHBvcnQKKyMKKworIworIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMKK0NPTkZJR19ORVQ9eQorCisjCisjIE5ldHdvcmtpbmcgb3B0aW9ucworIworIyBDT05GSUdfUEFDS0VUIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYPXkKKyMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAorQ09ORklHX0lORVQ9eQorQ09ORklHX0lQX01VTFRJQ0FTVD15CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX1BOUD15CisjIENPTkZJR19JUF9QTlBfREhDUCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9QTlBfQk9PVFAgaXMgbm90IHNldAorIyBDT05GSUdfSVBfUE5QX1JBUlAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQSVAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQR1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX01ST1VURSBpcyBub3Qgc2V0CisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZTl9DT09LSUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lQX1RDUERJQUc9eQorIyBDT05GSUdfSVBfVENQRElBR19JUFY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQVjYgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBzZXQKKworIworIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX0lQX1NDVFAgaXMgbm90IHNldAorIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFMSyBpcyBub3Qgc2V0CisjIENPTkZJR19YMjUgaXMgbm90IHNldAorIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKKworIworIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKKyMKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfQ0xTX1JPVVRFIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAorIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lSREEgaXMgbm90IHNldAorIyBDT05GSUdfQlQgaXMgbm90IHNldAorQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfRFVNTVkgaXMgbm90IHNldAorIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CisjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAorIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKyMKK0NPTkZJR19ORVRfRVRIRVJORVQ9eQorQ09ORklHX01JST15CitDT05GSUdfQVJNX0FUOTFfRVRIRVI9eQorQ09ORklHX0FSTV9BVDkxX0VUSEVSX1JNSUk9eQorIyBDT05GSUdfU01DOTFYIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAwMCBNYml0KQorIworCisjCisjIEV0aGVybmV0ICgxMDAwMCBNYml0KQorIworCisjCisjIFRva2VuIFJpbmcgZGV2aWNlcworIworCisjCisjIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQorIworIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKKworIworIyBXYW4gaW50ZXJmYWNlcworIworIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CisjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKKworIworIyBJU0ROIHN1YnN5c3RlbQorIworIyBDT05GSUdfSVNETiBpcyBub3Qgc2V0CisKKyMKKyMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19JTlBVVD15CisKKyMKKyMgVXNlcmxhbmQgaW50ZXJmYWNlcworIworIyBDT05GSUdfSU5QVVRfTU9VU0VERVYgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTU9VU0UgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgSS9PIHBvcnRzCisjCitDT05GSUdfU0VSSU89bQorQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fTElCUFMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CisjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CitDT05GSUdfU09VTkRfR0FNRVBPUlQ9eQorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworIyBDT05GSUdfU0VSSUFMXzgyNTAgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfQVQ5MT15CitDT05GSUdfU0VSSUFMX0FUOTFfQ09OU09MRT15CitDT05GSUdfU0VSSUFMX0NPUkU9eQorQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQorQ09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKKworIworIyBJUE1JCisjCisjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAorCisjCisjIFdhdGNoZG9nIENhcmRzCisjCisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CisjIENPTkZJR19OVlJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19SVEMgaXMgbm90IHNldAorIyBDT05GSUdfQVQ5MV9SVEMgaXMgbm90IHNldAorIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CisjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisjCisjIENPTkZJR19EUk0gaXMgbm90IHNldAorIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgVFBNIGRldmljZXMKKyMKK0NPTkZJR19BVDkxX1NQST15CitDT05GSUdfQVQ5MV9TUElERVY9eQorCisjCisjIEkyQyBzdXBwb3J0CisjCisjIENPTkZJR19JMkMgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcworIworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKKworIworIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorCisjCisjIEdyYXBoaWNzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKworIworIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKKyMKKyMgQ09ORklHX1ZHQV9DT05TT0xFIGlzIG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKKworIworIyBTb3VuZAorIworIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAorCisjCisjIFVTQiBzdXBwb3J0CisjCitDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CitDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0k9eQorIyBDT05GSUdfVVNCIGlzIG5vdCBzZXQKKworIworIyBVU0IgR2FkZ2V0IFN1cHBvcnQKKyMKKyMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAorCisjCisjIE1NQy9TRCBDYXJkIHN1cHBvcnQKKyMKK0NPTkZJR19NTUM9bQorQ09ORklHX01NQ19ERUJVRz15CitDT05GSUdfTU1DX0JMT0NLPW0KK0NPTkZJR19NTUNfQVQ5MVJNOTIwMD1tCisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz15CitDT05GSUdfRVhUMl9GU19YQVRUUj15CisjIENPTkZJR19FWFQyX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkJEIGlzIG5vdCBzZXQKK0NPTkZJR19GU19NQkNBQ0hFPXkKKyMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgWEZTIHN1cHBvcnQKKyMKKyMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CisjIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKKworIworIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19JU085NjYwX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VERl9GUyBpcyBub3Qgc2V0CisKKyMKKyMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcworIworIyBDT05GSUdfTVNET1NfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19TWVNGUz15CisjIENPTkZJR19ERVZGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfREVWUFRTX0ZTX1hBVFRSPXkKK0NPTkZJR19ERVZQVFNfRlNfU0VDVVJJVFk9eQorIyBDT05GSUdfVE1QRlMgaXMgbm90IHNldAorIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisKKyMKKyMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcworIworIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNQTFVTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfSkZGU19GUz15CitDT05GSUdfSkZGU19GU19WRVJCT1NFPTAKK0NPTkZJR19KRkZTX1BST0NfRlM9eQorQ09ORklHX0pGRlMyX0ZTPXkKK0NPTkZJR19KRkZTMl9GU19ERUJVRz0wCitDT05GSUdfSkZGUzJfRlNfTkFORD15CisjIENPTkZJR19KRkZTMl9GU19OT1JfRUNDIGlzIG5vdCBzZXQKK0NPTkZJR19KRkZTMl9DT01QUkVTU0lPTl9PUFRJT05TPXkKK0NPTkZJR19KRkZTMl9aTElCPXkKK0NPTkZJR19KRkZTMl9SVElNRT15CisjIENPTkZJR19KRkZTMl9SVUJJTiBpcyBub3Qgc2V0CisjIENPTkZJR19KRkZTMl9DTU9ERV9OT05FIGlzIG5vdCBzZXQKK0NPTkZJR19KRkZTMl9DTU9ERV9QUklPUklUWT15CisjIENPTkZJR19KRkZTMl9DTU9ERV9TSVpFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CisjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIEZpbGUgU3lzdGVtcworIworQ09ORklHX05GU19GUz15CitDT05GSUdfTkZTX1YzPXkKK0NPTkZJR19ORlNfVjQ9eQorIyBDT05GSUdfTkZTX0RJUkVDVElPIGlzIG5vdCBzZXQKK0NPTkZJR19ORlNEPXkKKyMgQ09ORklHX05GU0RfVjMgaXMgbm90IHNldAorQ09ORklHX05GU0RfVENQPXkKK0NPTkZJR19ST09UX05GUz15CitDT05GSUdfTE9DS0Q9eQorQ09ORklHX0xPQ0tEX1Y0PXkKK0NPTkZJR19FWFBPUlRGUz15CitDT05GSUdfU1VOUlBDPXkKK0NPTkZJR19TVU5SUENfR1NTPXkKK0NPTkZJR19SUENTRUNfR1NTX0tSQjU9eQorIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CisjIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldAorCisjCisjIFBhcnRpdGlvbiBUeXBlcworIworIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19NU0RPU19QQVJUSVRJT049eQorCisjCisjIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0CisjCisjIENPTkZJR19OTFMgaXMgbm90IHNldAorCisjCisjIFByb2ZpbGluZyBzdXBwb3J0CisjCisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBoYWNraW5nCisjCisjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0UgaXMgbm90IHNldAorQ09ORklHX0ZSQU1FX1BPSU5URVI9eQorIyBDT05GSUdfREVCVUdfVVNFUiBpcyBub3Qgc2V0CisKKyMKKyMgU2VjdXJpdHkgb3B0aW9ucworIworIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CisKKyMKKyMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCisjCitDT05GSUdfQ1JZUFRPPXkKKyMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19NRDU9eQorIyBDT05GSUdfQ1JZUFRPX1NIQTEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTI1NiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0hBNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19XUDUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVEdSMTkyIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fREVTPXkKKyMgQ09ORklHX0NSWVBUT19CTE9XRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fU0VSUEVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQVJDNCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0RFRkxBVEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCisjCisKKyMKKyMgTGlicmFyeSByb3V0aW5lcworIworIyBDT05GSUdfQ1JDX0NDSVRUIGlzIG5vdCBzZXQKK0NPTkZJR19DUkMzMj15CisjIENPTkZJR19MSUJDUkMzMkMgaXMgbm90IHNldAorQ09ORklHX1pMSUJfSU5GTEFURT15CitDT05GSUdfWkxJQl9ERUZMQVRFPXkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3Mva2FmYV9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2thZmFfZGVmY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZGVkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9jb25maWdzL2thZmFfZGVmY29uZmlnCkBAIC0wLDAgKzEsODg0IEBACisjCisjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTctcmMzCisjIFN1biBNYXkgIDcgMTY6NTQ6NTMgMjAwNgorIworQ09ORklHX0FSTT15CitDT05GSUdfTU1VPXkKK0NPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKK0NPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQorQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKK0NPTkZJR19WRUNUT1JTX0JBU0U9MHhmZmZmMDAwMAorCisjCisjIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucworIworQ09ORklHX0VYUEVSSU1FTlRBTD15CitDT05GSUdfQlJPS0VOX09OX1NNUD15CitDT05GSUdfTE9DS19LRVJORUw9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKKyMgQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NXQVAgaXMgbm90IHNldAorQ09ORklHX1NZU1ZJUEM9eQorIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CisjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CisjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfS0FMTFNZTVM9eQorIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CitDT05GSUdfUFJJTlRLPXkKK0NPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19CQVNFX0ZVTEw9eQorQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19FUE9MTD15CitDT05GSUdfU0hNRU09eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CitDT05GSUdfQkFTRV9TTUFMTD0wCisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKworIworIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAorIworQ09ORklHX01PRFVMRVM9eQorQ09ORklHX01PRFVMRV9VTkxPQUQ9eQorIyBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAorIyBDT05GSUdfS01PRCBpcyBub3Qgc2V0CisKKyMKKyMgQmxvY2sgbGF5ZXIKKyMKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorIyBDT05GSUdfSU9TQ0hFRF9BUyBpcyBub3Qgc2V0CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CisjIENPTkZJR19JT1NDSEVEX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0FTIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0RFQURMSU5FPXkKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJkZWFkbGluZSIKKworIworIyBTeXN0ZW0gVHlwZQorIworIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NMUFM3MTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ08yODUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FQlNBMTEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRVA5M1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRk9PVEJSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JT1AzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFA0WFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSVhQMjNYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0w3MjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUFhBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUlBDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfU0ExMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUzNDMjQxMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1NIQVJLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTEg3QTQwWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX09NQVAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9WRVJTQVRJTEUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9SRUFMVklFVyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMD15CisKKyMKKyMgQVQ5MVJNOTIwMCBJbXBsZW1lbnRhdGlvbnMKKyMKKworIworIyBBVDkxUk05MjAwIEJvYXJkIFR5cGUKKyMKKyMgQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMERLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQVQ5MVJNOTIwMEVLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ1NCMzM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ1NCNjM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ0FSTUVWQSBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNIX0tCOTIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNIX0FURUI5MjAwIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNIX0tBRkE9eQorCisjCisjIEFUOTEgRmVhdHVyZSBTZWxlY3Rpb25zCisjCisjIENPTkZJR19BVDkxX1BST0dSQU1NQUJMRV9DTE9DS1MgaXMgbm90IHNldAorCisjCisjIFByb2Nlc3NvciBUeXBlCisjCitDT05GSUdfQ1BVXzMyPXkKK0NPTkZJR19DUFVfQVJNOTIwVD15CitDT05GSUdfQ1BVXzMydjQ9eQorQ09ORklHX0NQVV9BQlJUX0VWNFQ9eQorQ09ORklHX0NQVV9DQUNIRV9WNFdUPXkKK0NPTkZJR19DUFVfQ0FDSEVfVklWVD15CitDT05GSUdfQ1BVX0NPUFlfVjRXQj15CitDT05GSUdfQ1BVX1RMQl9WNFdCST15CisKKyMKKyMgUHJvY2Vzc29yIEZlYXR1cmVzCisjCisjIENPTkZJR19BUk1fVEhVTUIgaXMgbm90IHNldAorIyBDT05GSUdfQ1BVX0lDQUNIRV9ESVNBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NQVV9EQ0FDSEVfRElTQUJMRSBpcyBub3Qgc2V0CisjIENPTkZJR19DUFVfRENBQ0hFX1dSSVRFVEhST1VHSCBpcyBub3Qgc2V0CisKKyMKKyMgQnVzIHN1cHBvcnQKKyMKKworIworIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0CisjCisjIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBGZWF0dXJlcworIworQ09ORklHX1BSRUVNUFQ9eQorIyBDT05GSUdfTk9fSURMRV9IWiBpcyBub3Qgc2V0CitDT05GSUdfSFo9MTAwCisjIENPTkZJR19BRUFCSSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorQ09ORklHX0ZMQVRNRU1fTUFOVUFMPXkKKyMgQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRkxBVE1FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CitDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NDA5NgorQ09ORklHX0xFRFM9eQorIyBDT05GSUdfTEVEU19USU1FUiBpcyBub3Qgc2V0CitDT05GSUdfTEVEU19DUFU9eQorQ09ORklHX0FMSUdOTUVOVF9UUkFQPXkKKworIworIyBCb290IG9wdGlvbnMKKyMKK0NPTkZJR19aQk9PVF9ST01fVEVYVD0weDAKK0NPTkZJR19aQk9PVF9ST01fQlNTPTB4MAorQ09ORklHX0NNRExJTkU9Im1lbT0zMk0gY29uc29sZT10dHlTMCwxMTUyMDAgaW5pdHJkPTB4MjA4MDAwMDAsMTBNIHJvb3Q9L2Rldi9yYW0wIHJ3IgorIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CisKKyMKKyMgRmxvYXRpbmcgcG9pbnQgZW11bGF0aW9uCisjCisKKyMKKyMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCisjCitDT05GSUdfRlBFX05XRlBFPXkKKyMgQ09ORklHX0ZQRV9OV0ZQRV9YUCBpcyBub3Qgc2V0CisjIENPTkZJR19GUEVfRkFTVEZQRSBpcyBub3Qgc2V0CisKKyMKKyMgVXNlcnNwYWNlIGJpbmFyeSBmb3JtYXRzCisjCitDT05GSUdfQklORk1UX0VMRj15CisjIENPTkZJR19CSU5GTVRfQU9VVCBpcyBub3Qgc2V0CitDT05GSUdfQklORk1UX01JU0M9eQorIyBDT05GSUdfQVJUSFVSIGlzIG5vdCBzZXQKKworIworIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKKyMKKyMgQ09ORklHX1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FQTSBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29ya2luZworIworQ09ORklHX05FVD15CisKKyMKKyMgTmV0d29ya2luZyBvcHRpb25zCisjCisjIENPTkZJR19ORVRERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfUEFDS0VUPXkKKyMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYPXkKKyMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAorQ09ORklHX0lORVQ9eQorIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRklCX0hBU0g9eQorIyBDT05GSUdfSVBfUE5QIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9JUElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9JUEdSRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZTl9DT09LSUVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0RJQUcgaXMgbm90IHNldAorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0JJQz15CisjIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldAorCisjCisjIERDQ1AgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfSVBfRENDUCBpcyBub3Qgc2V0CisKKyMKKyMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKKworIworIyBUSVBDIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFMSyBpcyBub3Qgc2V0CisjIENPTkZJR19YMjUgaXMgbm90IHNldAorIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKKworIworIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKKyMKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayB0ZXN0aW5nCisjCisjIENPTkZJR19ORVRfUEtUR0VOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lSREEgaXMgbm90IHNldAorIyBDT05GSUdfQlQgaXMgbm90IHNldAorIyBDT05GSUdfSUVFRTgwMjExIGlzIG5vdCBzZXQKKworIworIyBEZXZpY2UgRHJpdmVycworIworCisjCisjIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKKyMKK0NPTkZJR19TVEFOREFMT05FPXkKK0NPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKKyMgQ09ORklHX0ZXX0xPQURFUiBpcyBub3Qgc2V0CisKKyMKKyMgQ29ubmVjdG9yIC0gdW5pZmllZCB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGxpbmtlcgorIworIyBDT05GSUdfQ09OTkVDVE9SIGlzIG5vdCBzZXQKKworIworIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCisjCitDT05GSUdfTVREPXkKKyMgQ09ORklHX01URF9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ09OQ0FUIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfUEFSVElUSU9OUz15CisjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ01ETElORV9QQVJUUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQUZTX1BBUlRTIGlzIG5vdCBzZXQKKworIworIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycworIworQ09ORklHX01URF9DSEFSPXkKKyMgQ09ORklHX01URF9CTE9DSyBpcyBub3Qgc2V0CitDT05GSUdfTVREX0JMT0NLX1JPPXkKKyMgQ09ORklHX0ZUTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGRF9GVEwgaXMgbm90IHNldAorCisjCisjIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCisjCisjIENPTkZJR19NVERfQ0ZJIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9KRURFQ1BST0JFIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMT15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF80PXkKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF84IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xNiBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMzIgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSTE9eQorQ09ORklHX01URF9DRklfSTI9eQorIyBDT05GSUdfTVREX0NGSV9JNCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9SQU0gaXMgbm90IHNldAorIyBDT05GSUdfTVREX1JPTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQUJTRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PQlNPTEVURV9DSElQUyBpcyBub3Qgc2V0CisKKyMKKyMgTWFwcGluZyBkcml2ZXJzIGZvciBjaGlwIGFjY2VzcworIworIyBDT05GSUdfTVREX0NPTVBMRVhfTUFQUElOR1MgaXMgbm90IHNldAorIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAorCisjCisjIFNlbGYtY29udGFpbmVkIE1URCBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTVREX1NMUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTVREUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAorCisjCisjIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfQVQ5MV9EQVRBRkxBU0g9eQorIyBDT05GSUdfTVREX0FUOTFfREFUQUZMQVNIX0NBUkQgaXMgbm90IHNldAorCisjCisjIE5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX01URF9OQU5EIGlzIG5vdCBzZXQKKworIworIyBPbmVOQU5EIEZsYXNoIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19NVERfT05FTkFORCBpcyBub3Qgc2V0CisKKyMKKyMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0CisjCisjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKKworIworIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKKyMKKworIworIyBCbG9jayBkZXZpY2VzCisjCisjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9MT09QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfTkJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU5JVFJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NEUk9NX1BLVENEVkQgaXMgbm90IHNldAorIyBDT05GSUdfQVRBX09WRVJfRVRIIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjCisjIENPTkZJR19NRCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKKworIworIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CisjCisKKyMKKyMgSTJPIGRldmljZSBzdXBwb3J0CisjCisKKyMKKyMgTmV0d29yayBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfRFVNTVkgaXMgbm90IHNldAorIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CisjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAorIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKKworIworIyBQSFkgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19QSFlMSUI9eQorCisjCisjIE1JSSBQSFkgZGV2aWNlIGRyaXZlcnMKKyMKKyMgQ09ORklHX01BUlZFTExfUEhZIGlzIG5vdCBzZXQKK0NPTkZJR19EQVZJQ09NX1BIWT15CisjIENPTkZJR19RU0VNSV9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfTFhUX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19DSUNBREFfUEhZIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKyMKK0NPTkZJR19ORVRfRVRIRVJORVQ9eQorQ09ORklHX01JST15CitDT05GSUdfQVJNX0FUOTFfRVRIRVI9eQorIyBDT05GSUdfU01DOTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNOTAwMCBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMKKworIworIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKKyMKKworIworIyBUb2tlbiBSaW5nIGRldmljZXMKKyMKKworIworIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKKyMKKyMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0CisKKyMKKyMgV2FuIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CisjIENPTkZJR19QUFAgaXMgbm90IHNldAorIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CisjIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAorCisjCisjIElTRE4gc3Vic3lzdGVtCisjCisjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX0lOUFVUPXkKKworIworIyBVc2VybGFuZCBpbnRlcmZhY2VzCisjCitDT05GSUdfSU5QVVRfTU9VU0VERVY9eQorIyBDT05GSUdfSU5QVVRfTU9VU0VERVZfUFNBVVggaXMgbm90IHNldAorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTEwMjQKK0NPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKKyMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CisKKyMKKyMgSW5wdXQgRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX0lOUFVUX0tFWUJPQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIEkvTyBwb3J0cworIworIyBDT05GSUdfU0VSSU8gaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworIyBDT05GSUdfU0VSSUFMXzgyNTAgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfQVQ5MT15CitDT05GSUdfU0VSSUFMX0FUOTFfQ09OU09MRT15CisjIENPTkZJR19TRVJJQUxfQVQ5MV9UVFlBVCBpcyBub3Qgc2V0CitDT05GSUdfU0VSSUFMX0NPUkU9eQorQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQorQ09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0zMgorCisjCisjIElQTUkKKyMKKyMgQ09ORklHX0lQTUlfSEFORExFUiBpcyBub3Qgc2V0CisKKyMKKyMgV2F0Y2hkb2cgQ2FyZHMKKyMKK0NPTkZJR19XQVRDSERPRz15CitDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQ9eQorCisjCisjIFdhdGNoZG9nIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19TT0ZUX1dBVENIRE9HIGlzIG5vdCBzZXQKK0NPTkZJR19BVDkxX1dBVENIRE9HPXkKKyMgQ09ORklHX05WUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RUTEsgaXMgbm90IHNldAorIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAorCisjCisjIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgorIworIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgVFBNIGRldmljZXMKKyMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAorIyBDT05GSUdfVEVMQ0xPQ0sgaXMgbm90IHNldAorQ09ORklHX0FUOTFfU1BJPXkKK0NPTkZJR19BVDkxX1NQSURFVj15CisKKyMKKyMgSTJDIHN1cHBvcnQKKyMKK0NPTkZJR19JMkM9eQorQ09ORklHX0kyQ19DSEFSREVWPXkKKworIworIyBJMkMgQWxnb3JpdGhtcworIworIyBDT05GSUdfSTJDX0FMR09CSVQgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMR09QQ0YgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMR09QQ0EgaXMgbm90IHNldAorCisjCisjIEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAorIworQ09ORklHX0kyQ19BVDkxPXkKKyMgQ09ORklHX0kyQ19QQVJQT1JUX0xJR0hUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19TVFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19QQ0FfSVNBIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRUVQUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfUENGODU3NCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1BDQTk1MzkgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQUxHTyBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQlVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19ERUJVR19DSElQIGlzIG5vdCBzZXQKKworIworIyBTUEkgc3VwcG9ydAorIworIyBDT05GSUdfU1BJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQSV9NQVNURVIgaXMgbm90IHNldAorCisjCisjIERhbGxhcydzIDEtd2lyZSBidXMKKyMKKyMgQ09ORklHX1cxIGlzIG5vdCBzZXQKKworIworIyBIYXJkd2FyZSBNb25pdG9yaW5nIHN1cHBvcnQKKyMKKyMgQ09ORklHX0hXTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXTU9OX1ZJRCBpcyBub3Qgc2V0CisKKyMKKyMgTWlzYyBkZXZpY2VzCisjCisKKyMKKyMgTEVEIGRldmljZXMKKyMKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKworIworIyBMRUQgZHJpdmVycworIworCisjCisjIExFRCBUcmlnZ2VycworIworCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcworIworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKKworIworIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorCisjCisjIEdyYXBoaWNzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKworIworIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKKyMKKyMgQ09ORklHX1ZHQV9DT05TT0xFIGlzIG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKKworIworIyBTb3VuZAorIworIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAorCisjCisjIFVTQiBzdXBwb3J0CisjCitDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CitDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0k9eQorIyBDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0kgaXMgbm90IHNldAorIyBDT05GSUdfVVNCIGlzIG5vdCBzZXQKKworIworIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCisjCisKKyMKKyMgVVNCIEdhZGdldCBTdXBwb3J0CisjCisjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKKworIworIyBNTUMvU0QgQ2FyZCBzdXBwb3J0CisjCisjIENPTkZJR19NTUMgaXMgbm90IHNldAorCisjCisjIFJlYWwgVGltZSBDbG9jaworIworQ09ORklHX1JUQ19MSUI9eQorQ09ORklHX1JUQ19DTEFTUz15CisjIENPTkZJR19SVENfSENUT1NZUyBpcyBub3Qgc2V0CisKKyMKKyMgUlRDIGludGVyZmFjZXMKKyMKK0NPTkZJR19SVENfSU5URl9TWVNGUz15CitDT05GSUdfUlRDX0lOVEZfUFJPQz15CitDT05GSUdfUlRDX0lOVEZfREVWPXkKKworIworIyBSVEMgZHJpdmVycworIworIyBDT05GSUdfUlRDX0RSVl9YMTIwNSBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX0RTMTY3MiBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1BDRjg1NjMgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9SUzVDMzcyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKK0NPTkZJR19SVENfRFJWX0FUOTE9eQorIyBDT05GSUdfUlRDX0RSVl9URVNUIGlzIG5vdCBzZXQKKworIworIyBGaWxlIHN5c3RlbXMKKyMKKyMgQ09ORklHX0VYVDJfRlMgaXMgbm90IHNldAorQ09ORklHX0VYVDNfRlM9eQorIyBDT05GSUdfRVhUM19GU19YQVRUUiBpcyBub3Qgc2V0CitDT05GSUdfSkJEPXkKKyMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTk9USUZZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKKyMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldAorCisjCisjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKKyMKKyMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKKworIworIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19NU0RPU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19WRkFUX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAorCisjCisjIFBzZXVkbyBmaWxlc3lzdGVtcworIworQ09ORklHX1BST0NfRlM9eQorQ09ORklHX1NZU0ZTPXkKK0NPTkZJR19UTVBGUz15CisjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorQ09ORklHX1JBTUZTPXkKKyMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19BREZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU1BMVVNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkVGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0pGRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkZGUzJfRlMgaXMgbm90IHNldAorQ09ORklHX0NSQU1GUz15CisjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIEZpbGUgU3lzdGVtcworIworQ09ORklHX05GU19GUz1tCitDT05GSUdfTkZTX1YzPXkKKyMgQ09ORklHX05GU19WM19BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfTkZTX1Y0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNEIGlzIG5vdCBzZXQKK0NPTkZJR19MT0NLRD1tCitDT05GSUdfTE9DS0RfVjQ9eQorQ09ORklHX05GU19DT01NT049eQorQ09ORklHX1NVTlJQQz1tCisjIENPTkZJR19SUENTRUNfR1NTX0tSQjUgaXMgbm90IHNldAorIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CisjIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldAorCisjCisjIFBhcnRpdGlvbiBUeXBlcworIworIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19NU0RPU19QQVJUSVRJT049eQorCisjCisjIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0CisjCisjIENPTkZJR19OTFMgaXMgbm90IHNldAorCisjCisjIFByb2ZpbGluZyBzdXBwb3J0CisjCisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBoYWNraW5nCisjCisjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CisjIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19GUkFNRV9QT0lOVEVSPXkKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1VTRVIgaXMgbm90IHNldAorCisjCisjIFNlY3VyaXR5IG9wdGlvbnMKKyMKKyMgQ09ORklHX0tFWVMgaXMgbm90IHNldAorIyBDT05GSUdfU0VDVVJJVFkgaXMgbm90IHNldAorCisjCisjIENyeXB0b2dyYXBoaWMgb3B0aW9ucworIworQ09ORklHX0NSWVBUTz15CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTUQ0IGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fTUQ1PXkKKyMgQ09ORklHX0NSWVBUT19TSEExIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TSEEyNTYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NIQTUxMiBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fV1A1MTIgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RHUjE5MiBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0RFUz15CisjIENPTkZJR19DUllQVE9fQkxPV0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RXT0ZJU0ggaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1NFUlBFTlQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FFUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDUgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0NBU1Q2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URUEgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0FSQzQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ1JDMzJDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKKworIworIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcworIworCisjCisjIExpYnJhcnkgcm91dGluZXMKKyMKKyMgQ09ORklHX0NSQ19DQ0lUVCBpcyBub3Qgc2V0CisjIENPTkZJR19DUkMxNiBpcyBub3Qgc2V0CitDT05GSUdfQ1JDMzI9eQorIyBDT05GSUdfTElCQ1JDMzJDIGlzIG5vdCBzZXQKK0NPTkZJR19aTElCX0lORkxBVEU9eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9rYjkyMDJfZGVmY29uZmlnIGIvYXJjaC9hcm0vY29uZmlncy9rYjkyMDJfZGVmY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZTRmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9jb25maWdzL2tiOTIwMl9kZWZjb25maWcKQEAgLTAsMCArMSw3ODAgQEAKKyMKKyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xMy1yYzIKKyMgU3VuIEF1ZyAxNCAxOToyNjo1OSAyMDA1CisjCitDT05GSUdfQVJNPXkKK0NPTkZJR19NTVU9eQorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKK0NPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15CisKKyMKKyMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCisjCisjIENPTkZJR19FWFBFUklNRU5UQUwgaXMgbm90IHNldAorQ09ORklHX0NMRUFOX0NPTVBJTEU9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKKyMgQ09ORklHX1NXQVAgaXMgbm90IHNldAorIyBDT05GSUdfU1lTVklQQyBpcyBub3Qgc2V0CisjIENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUIGlzIG5vdCBzZXQKK0NPTkZJR19TWVNDVEw9eQorIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQorIyBDT05GSUdfS09CSkVDVF9VRVZFTlQgaXMgbm90IHNldAorIyBDT05GSUdfSUtDT05GSUcgaXMgbm90IHNldAorIyBDT05GSUdfRU1CRURERUQgaXMgbm90IHNldAorQ09ORklHX0tBTExTWU1TPXkKKyMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CisjIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKK0NPTkZJR19QUklOVEs9eQorQ09ORklHX0JVRz15CitDT05GSUdfQkFTRV9GVUxMPXkKK0NPTkZJR19GVVRFWD15CitDT05GSUdfRVBPTEw9eQorQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKK0NPTkZJR19TSE1FTT15CitDT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKK0NPTkZJR19DQ19BTElHTl9MQUJFTFM9MAorQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKK0NPTkZJR19DQ19BTElHTl9KVU1QUz0wCisjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKK0NPTkZJR19CQVNFX1NNQUxMPTAKKworIworIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAorIworQ09ORklHX01PRFVMRVM9eQorQ09ORklHX01PRFVMRV9VTkxPQUQ9eQorQ09ORklHX09CU09MRVRFX01PRFBBUk09eQorIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKK0NPTkZJR19LTU9EPXkKKworIworIyBTeXN0ZW0gVHlwZQorIworIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NMUFM3MTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ08yODUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FQlNBMTEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRk9PVEJSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JT1AzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFA0WFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTDcyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QWEEgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9SUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TQTExMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TM0MyNDEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfU0hBUksgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9MSDdBNDBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfT01BUCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1ZFUlNBVElMRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMD15CisKKyMKKyMgQVQ5MVJNOTIwMCBJbXBsZW1lbnRhdGlvbnMKKyMKKyMgQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMERLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQVQ5MVJNOTIwMEVLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ1NCMzM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ1NCNjM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfQ0FSTUVWQSBpcyBub3Qgc2V0CitDT05GSUdfTUFDSF9LQjkyMDA9eQorCisjCisjIFByb2Nlc3NvciBUeXBlCisjCitDT05GSUdfQ1BVXzMyPXkKK0NPTkZJR19DUFVfQVJNOTIwVD15CitDT05GSUdfQ1BVXzMydjQ9eQorQ09ORklHX0NQVV9BQlJUX0VWNFQ9eQorQ09ORklHX0NQVV9DQUNIRV9WNFdUPXkKK0NPTkZJR19DUFVfQ0FDSEVfVklWVD15CitDT05GSUdfQ1BVX0NPUFlfVjRXQj15CitDT05GSUdfQ1BVX1RMQl9WNFdCST15CisKKyMKKyMgUHJvY2Vzc29yIEZlYXR1cmVzCisjCitDT05GSUdfQVJNX1RIVU1CPXkKKyMgQ09ORklHX0NQVV9JQ0FDSEVfRElTQUJMRSBpcyBub3Qgc2V0CisjIENPTkZJR19DUFVfRENBQ0hFX0RJU0FCTEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1BVX0RDQUNIRV9XUklURVRIUk9VR0ggaXMgbm90IHNldAorCisjCisjIEJ1cyBzdXBwb3J0CisjCitDT05GSUdfSVNBX0RNQV9BUEk9eQorCisjCisjIFBDQ0FSRCAoUENNQ0lBL0NhcmRCdXMpIHN1cHBvcnQKKyMKKyMgQ09ORklHX1BDQ0FSRCBpcyBub3Qgc2V0CisKKyMKKyMgS2VybmVsIEZlYXR1cmVzCisjCisjIENPTkZJR19OT19JRExFX0haIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRElTQ09OVElHTUVNX0VOQUJMRSBpcyBub3Qgc2V0CitDT05GSUdfRkxBVE1FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorIyBDT05GSUdfTEVEUyBpcyBub3Qgc2V0CitDT05GSUdfQUxJR05NRU5UX1RSQVA9eQorCisjCisjIEJvb3Qgb3B0aW9ucworIworQ09ORklHX1pCT09UX1JPTV9URVhUPTB4MTAwMDAwMDAKK0NPTkZJR19aQk9PVF9ST01fQlNTPTB4MjAwNDAwMDAKK0NPTkZJR19aQk9PVF9ST009eQorQ09ORklHX0NNRExJTkU9ImNvbnNvbGU9dHR5UzAsMTE1MjAwIHJvb3Q9L2Rldi9yYW0gcncgaW5pdHJkPTB4MjAyMTAwMDAsNjU0OTMzIgorCisjCisjIEZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbgorIworCisjCisjIEF0IGxlYXN0IG9uZSBlbXVsYXRpb24gbXVzdCBiZSBzZWxlY3RlZAorIworQ09ORklHX0ZQRV9OV0ZQRT15CisjIENPTkZJR19GUEVfTldGUEVfWFAgaXMgbm90IHNldAorCisjCisjIFVzZXJzcGFjZSBiaW5hcnkgZm9ybWF0cworIworQ09ORklHX0JJTkZNVF9FTEY9eQorQ09ORklHX0JJTkZNVF9BT1VUPXkKK0NPTkZJR19CSU5GTVRfTUlTQz15CisjIENPTkZJR19BUlRIVVIgaXMgbm90IHNldAorCisjCisjIFBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucworIworIyBDT05GSUdfUE0gaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorIyBDT05GSUdfRldfTE9BREVSIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19EUklWRVI9eQorCisjCisjIE1lbW9yeSBUZWNobm9sb2d5IERldmljZXMgKE1URCkKKyMKKyMgQ09ORklHX01URCBpcyBub3Qgc2V0CisKKyMKKyMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0CisjCisjIENPTkZJR19QQVJQT1JUIGlzIG5vdCBzZXQKKworIworIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKKyMKKworIworIyBCbG9jayBkZXZpY2VzCisjCisjIENPTkZJR19CTEtfREVWX0NPV19DT01NT04gaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfTE9PUD15CisjIENPTkZJR19CTEtfREVWX0NSWVBUT0xPT1AgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfTkJEPXkKKyMgQ09ORklHX0JMS19ERVZfVUIgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD0xNgorQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9NDA5NgorQ09ORklHX0JMS19ERVZfSU5JVFJEPXkKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CisjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19TQ1NJPXkKK0NPTkZJR19TQ1NJX1BST0NfRlM9eQorCisjCisjIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCisjCitDT05GSUdfQkxLX0RFVl9TRD15CisjIENPTkZJR19DSFJfREVWX1NUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NIUl9ERVZfT1NTVCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1NSIGlzIG5vdCBzZXQKK0NPTkZJR19DSFJfREVWX1NHPXkKKyMgQ09ORklHX0NIUl9ERVZfU0NIIGlzIG5vdCBzZXQKKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBwb3J0IG11bHRpcGxlIExVTnMKKyMKKyMgQ09ORklHX1NDU0lfTVVMVElfTFVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfQ09OU1RBTlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcworIworIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCisjCisjIENPTkZJR19TQ1NJX1NBVEEgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9ERUJVRyBpcyBub3Qgc2V0CisKKyMKKyMgTXVsdGktZGV2aWNlIHN1cHBvcnQgKFJBSUQgYW5kIExWTSkKKyMKKyMgQ09ORklHX01EIGlzIG5vdCBzZXQKKworIworIyBGdXNpb24gTVBUIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19GVVNJT04gaXMgbm90IHNldAorCisjCisjIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKKyMKKworIworIyBJMk8gZGV2aWNlIHN1cHBvcnQKKyMKKworIworIyBOZXR3b3JraW5nIHN1cHBvcnQKKyMKK0NPTkZJR19ORVQ9eQorCisjCisjIE5ldHdvcmtpbmcgb3B0aW9ucworIworQ09ORklHX1BBQ0tFVD15CisjIENPTkZJR19QQUNLRVRfTU1BUCBpcyBub3Qgc2V0CitDT05GSUdfVU5JWD15CisjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUPXkKK0NPTkZJR19JUF9NVUxUSUNBU1Q9eQorIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CitDT05GSUdfSVBfUE5QPXkKK0NPTkZJR19JUF9QTlBfREhDUD15CisjIENPTkZJR19JUF9QTlBfQk9PVFAgaXMgbm90IHNldAorIyBDT05GSUdfSVBfUE5QX1JBUlAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQSVAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQR1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX01ST1VURSBpcyBub3Qgc2V0CisjIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX1RDUERJQUcgaXMgbm90IHNldAorIyBDT05GSUdfSVBfVENQRElBR19JUFY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19UQ1BfQ09OR19CSUM9eQorIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldAorIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAorIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xMQzIgaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQUxLIGlzIG5vdCBzZXQKKworIworIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKKyMKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfQ0xTX1JPVVRFIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAorIyBDT05GSUdfTkVUUE9MTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lSREEgaXMgbm90IHNldAorIyBDT05GSUdfQlQgaXMgbm90IHNldAorQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfRFVNTVkgaXMgbm90IHNldAorIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CisjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAorIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKyMKK0NPTkZJR19ORVRfRVRIRVJORVQ9eQorQ09ORklHX01JST15CitDT05GSUdfQVJNX0FUOTFfRVRIRVI9eQorIyBDT05GSUdfU01DOTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RNOTAwMCBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMKKworIworIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKKyMKKworIworIyBUb2tlbiBSaW5nIGRldmljZXMKKyMKKworIworIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKKyMKKyMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0CisKKyMKKyMgV2FuIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CisjIENPTkZJR19QUFAgaXMgbm90IHNldAorIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CisKKyMKKyMgSVNETiBzdWJzeXN0ZW0KKyMKKyMgQ09ORklHX0lTRE4gaXMgbm90IHNldAorCisjCisjIElucHV0IGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfSU5QVVQ9eQorCisjCisjIFVzZXJsYW5kIGludGVyZmFjZXMKKyMKK0NPTkZJR19JTlBVVF9NT1VTRURFVj15CisjIENPTkZJR19JTlBVVF9NT1VTRURFVl9QU0FVWCBpcyBub3Qgc2V0CitDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAorIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTU9VU0UgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgSS9PIHBvcnRzCisjCitDT05GSUdfU0VSSU89eQorIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CisjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworIyBDT05GSUdfU0VSSUFMXzgyNTAgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfQVQ5MT15CitDT05GSUdfU0VSSUFMX0FUOTFfQ09OU09MRT15CitDT05GSUdfU0VSSUFMX0NPUkU9eQorQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQorQ09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKKworIworIyBJUE1JCisjCisjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAorCisjCisjIFdhdGNoZG9nIENhcmRzCisjCisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CisjIENPTkZJR19OVlJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19SVEMgaXMgbm90IHNldAorIyBDT05GSUdfQVQ5MV9SVEMgaXMgbm90IHNldAorIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CisjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisjCisjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKKworIworIyBUUE0gZGV2aWNlcworIworIyBDT05GSUdfQVQ5MV9TUEkgaXMgbm90IHNldAorCisjCisjIEkyQyBzdXBwb3J0CisjCisjIENPTkZJR19JMkMgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcworIworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKKworIworIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorCisjCisjIEdyYXBoaWNzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKworIworIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKKyMKKyMgQ09ORklHX1ZHQV9DT05TT0xFIGlzIG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKKworIworIyBTb3VuZAorIworIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAorCisjCisjIFVTQiBzdXBwb3J0CisjCitDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CitDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0k9eQorQ09ORklHX1VTQj15CitDT05GSUdfVVNCX0RFQlVHPXkKKworIworIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCisjCitDT05GSUdfVVNCX0RFVklDRUZTPXkKKworIworIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKKyMKKyMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX09IQ0lfSENEPXkKKyMgQ09ORklHX1VTQl9PSENJX0JJR19FTkRJQU4gaXMgbm90IHNldAorQ09ORklHX1VTQl9PSENJX0xJVFRMRV9FTkRJQU49eQorIyBDT05GSUdfVVNCX1NMODExX0hDRCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIERldmljZSBDbGFzcyBkcml2ZXJzCisjCisjIENPTkZJR19VU0JfQkxVRVRPT1RIX1RUWSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQUNNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QUklOVEVSIGlzIG5vdCBzZXQKKworIworIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnIG1heSBhbHNvIGJlIG5lZWRlZDsgc2VlIFVTQl9TVE9SQUdFIEhlbHAgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyMKK0NPTkZJR19VU0JfU1RPUkFHRT15CitDT05GSUdfVVNCX1NUT1JBR0VfREVCVUc9eQorIyBDT05GSUdfVVNCX1NUT1JBR0VfRlJFRUNPTSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9EUENNIGlzIG5vdCBzZXQKKworIworIyBVU0IgSW5wdXQgRGV2aWNlcworIworIyBDT05GSUdfVVNCX0hJRCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIEhJRCBCb290IFByb3RvY29sIGRyaXZlcnMKKyMKKyMgQ09ORklHX1VTQl9LQkQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BSVBURUsgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1dBQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BQ0VDQUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0tCVEFCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QT1dFUk1BVEUgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX01UT1VDSCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfSVRNVE9VQ0ggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0VHQUxBWCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfWFBBRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQVRJX1JFTU9URSBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIEltYWdpbmcgZGV2aWNlcworIworIyBDT05GSUdfVVNCX01JQ1JPVEVLIGlzIG5vdCBzZXQKKworIworIyBVU0IgTXVsdGltZWRpYSBkZXZpY2VzCisjCisjIENPTkZJR19VU0JfREFCVVNCIGlzIG5vdCBzZXQKKworIworIyBWaWRlbzRMaW51eCBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNCIE11bHRpbWVkaWEgZGV2aWNlIHN1cHBvcnQKKyMKKworIworIyBVU0IgTmV0d29yayBBZGFwdGVycworIworIyBDT05GSUdfVVNCX0tBV0VUSCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUEVHQVNVUyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfVVNCTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9NT04gaXMgbm90IHNldAorCisjCisjIFVTQiBwb3J0IGRyaXZlcnMKKyMKKworIworIyBVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0CisjCisjIENPTkZJR19VU0JfU0VSSUFMIGlzIG5vdCBzZXQKKworIworIyBVU0IgTWlzY2VsbGFuZW91cyBkcml2ZXJzCisjCisjIENPTkZJR19VU0JfRU1JNjIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0VNSTI2IGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9MQ0QgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0xFRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQ1lUSEVSTSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUEhJREdFVEtJVCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUEhJREdFVFNFUlZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9JRE1PVVNFIGlzIG5vdCBzZXQKKworIworIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKKyMKKworIworIyBVU0IgR2FkZ2V0IFN1cHBvcnQKKyMKKyMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAorCisjCisjIE1NQy9TRCBDYXJkIHN1cHBvcnQKKyMKKyMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz15CitDT05GSUdfRVhUMl9GU19YQVRUUj15CisjIENPTkZJR19FWFQyX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19FWFQyX0ZTX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19FWFQzX0ZTPXkKK0NPTkZJR19FWFQzX0ZTX1hBVFRSPXkKKyMgQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlNfU0VDVVJJVFkgaXMgbm90IHNldAorQ09ORklHX0pCRD15CisjIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0ZTX01CQ0FDSEU9eQorIyBDT05GSUdfUkVJU0VSRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBYRlMgc3VwcG9ydAorIworIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKK0NPTkZJR19ETk9USUZZPXkKK0NPTkZJR19BVVRPRlNfRlM9eQorQ09ORklHX0FVVE9GUzRfRlM9eQorCisjCisjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKKyMKKyMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKKworIworIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCisjCitDT05GSUdfRkFUX0ZTPXkKK0NPTkZJR19NU0RPU19GUz15CitDT05GSUdfVkZBVF9GUz15CitDT05GSUdfRkFUX0RFRkFVTFRfQ09ERVBBR0U9NDM3CitDT05GSUdfRkFUX0RFRkFVTFRfSU9DSEFSU0VUPSJpc284ODU5LTEiCisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19TWVNGUz15CitDT05GSUdfREVWUFRTX0ZTX1hBVFRSPXkKKyMgQ09ORklHX0RFVlBUU19GU19TRUNVUklUWSBpcyBub3Qgc2V0CitDT05GSUdfVE1QRlM9eQorIyBDT05GSUdfVE1QRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisKKyMKKyMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcworIworIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAorIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayBGaWxlIFN5c3RlbXMKKyMKK0NPTkZJR19ORlNfRlM9eQorQ09ORklHX05GU19WMz15CisjIENPTkZJR19ORlNfVjNfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU0QgaXMgbm90IHNldAorQ09ORklHX1JPT1RfTkZTPXkKK0NPTkZJR19MT0NLRD15CitDT05GSUdfTE9DS0RfVjQ9eQorQ09ORklHX05GU19DT01NT049eQorQ09ORklHX1NVTlJQQz15CisjIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0CisKKyMKKyMgUGFydGl0aW9uIFR5cGVzCisjCisjIENPTkZJR19QQVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX01TRE9TX1BBUlRJVElPTj15CisKKyMKKyMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKKyMKK0NPTkZJR19OTFM9eQorQ09ORklHX05MU19ERUZBVUxUPSJ1dGY4IgorQ09ORklHX05MU19DT0RFUEFHRV80Mzc9eQorIyBDT05GSUdfTkxTX0NPREVQQUdFXzczNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfNzc1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1MiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODU1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjIgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjUgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY5IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85MzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzk1MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85NDkgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg3NCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV84IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUxIGlzIG5vdCBzZXQKK0NPTkZJR19OTFNfQVNDSUk9eQorIyBDT05GSUdfTkxTX0lTTzg4NTlfMSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV8yIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV81IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV85IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CisKKyMKKyMgS2VybmVsIGhhY2tpbmcKKyMKKyMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19LRVJORUw9eQorIyBDT05GSUdfTUFHSUNfU1lTUlEgaXMgbm90IHNldAorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKKyMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TUElOTE9DSyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TUElOTE9DS19TTEVFUCBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19LT0JKRUNUIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX0RFQlVHX0lORk8gaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAorQ09ORklHX0ZSQU1FX1BPSU5URVI9eQorQ09ORklHX0RFQlVHX1VTRVI9eQorIyBDT05GSUdfREVCVUdfV0FJVFEgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0VSUk9SUz15CitDT05GSUdfREVCVUdfTEw9eQorIyBDT05GSUdfREVCVUdfSUNFRENDIGlzIG5vdCBzZXQKKworIworIyBTZWN1cml0eSBvcHRpb25zCisjCisjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKworIworIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKKyMKKyMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgY3J5cHRvIGRldmljZXMKKyMKKworIworIyBMaWJyYXJ5IHJvdXRpbmVzCisjCisjIENPTkZJR19DUkNfQ0NJVFQgaXMgbm90IHNldAorQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0xJQkNSQzMyQyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2xwZDI3MF9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2xwZDI3MF9kZWZjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4YmJlNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvbHBkMjcwX2RlZmNvbmZpZwpAQCAtMCwwICsxLDk2MyBAQAorIworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LWdpdDIKKyMgV2VkIEp1biAyMSAyMjoyMDoxOCAyMDA2CisjCitDT05GSUdfQVJNPXkKK0NPTkZJR19NTVU9eQorQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CitDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX0FSQ0hfTVREX1hJUD15CitDT05GSUdfVkVDVE9SU19CQVNFPTB4ZmZmZjAwMDAKKworIworIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKKyMKK0NPTkZJR19FWFBFUklNRU5UQUw9eQorQ09ORklHX0JST0tFTl9PTl9TTVA9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CitDT05GSUdfU1dBUD15CitDT05GSUdfU1lTVklQQz15CisjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAorIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCitDT05GSUdfVUlEMTY9eQorQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKKyMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKK0NPTkZJR19LQUxMU1lNUz15CisjIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAorIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CitDT05GSUdfUFJJTlRLPXkKK0NPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19CQVNFX0ZVTEw9eQorQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19FUE9MTD15CitDT05GSUdfU0hNRU09eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CitDT05GSUdfQkFTRV9TTUFMTD0wCisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKworIworIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAorIworQ09ORklHX01PRFVMRVM9eQorIyBDT05GSUdfTU9EVUxFX1VOTE9BRCBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAorIyBDT05GSUdfS01PRCBpcyBub3Qgc2V0CisKKyMKKyMgQmxvY2sgbGF5ZXIKKyMKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorQ09ORklHX0lPU0NIRURfQVM9eQorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorQ09ORklHX0lPU0NIRURfQ0ZRPXkKK0NPTkZJR19ERUZBVUxUX0FTPXkKKyMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKKworIworIyBTeXN0ZW0gVHlwZQorIworIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9SRUFMVklFVyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1ZFUlNBVElMRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0FUOTFSTTkyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NMUFM3MTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ08yODUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FQlNBMTEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRVA5M1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRk9PVEJSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX05FVFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9INzIwWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lPUDNYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDRYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyM1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTDcyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QTlg0MDA4IGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1BYQT15CisjIENPTkZJR19BUkNIX1JQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1NBMTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1MzQzI0MTAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TSEFSSyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0xIN0E0MFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9PTUFQIGlzIG5vdCBzZXQKKworIworIyBJbnRlbCBQWEEyeHggSW1wbGVtZW50YXRpb25zCisjCisjIENPTkZJR19BUkNIX0xVQkJPQ0sgaXMgbm90IHNldAorQ09ORklHX01BQ0hfTE9HSUNQRF9QWEEyNzA9eQorIyBDT05GSUdfTUFDSF9NQUlOU1RPTkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QWEFfSURQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BYQV9TSEFSUFNMIGlzIG5vdCBzZXQKK0NPTkZJR19QWEEyN3g9eQorQ09ORklHX0lXTU1YVD15CisKKyMKKyMgUHJvY2Vzc29yIFR5cGUKKyMKK0NPTkZJR19DUFVfMzI9eQorQ09ORklHX0NQVV9YU0NBTEU9eQorQ09ORklHX0NQVV8zMnY1PXkKK0NPTkZJR19DUFVfQUJSVF9FVjVUPXkKK0NPTkZJR19DUFVfQ0FDSEVfVklWVD15CitDT05GSUdfQ1BVX1RMQl9WNFdCST15CisKKyMKKyMgUHJvY2Vzc29yIEZlYXR1cmVzCisjCisjIENPTkZJR19BUk1fVEhVTUIgaXMgbm90IHNldAorQ09ORklHX1hTQ0FMRV9QTVU9eQorCisjCisjIEJ1cyBzdXBwb3J0CisjCisKKyMKKyMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydAorIworIyBDT05GSUdfUENDQVJEIGlzIG5vdCBzZXQKKworIworIyBLZXJuZWwgRmVhdHVyZXMKKyMKKyMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAorIyBDT05GSUdfTk9fSURMRV9IWiBpcyBub3Qgc2V0CitDT05GSUdfSFo9MTAwCisjIENPTkZJR19BRUFCSSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEUgaXMgbm90IHNldAorQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQorQ09ORklHX0ZMQVRNRU1fTUFOVUFMPXkKKyMgQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAorIyBDT05GSUdfU1BBUlNFTUVNX01BTlVBTCBpcyBub3Qgc2V0CitDT05GSUdfRkxBVE1FTT15CitDT05GSUdfRkxBVF9OT0RFX01FTV9NQVA9eQorIyBDT05GSUdfU1BBUlNFTUVNX1NUQVRJQyBpcyBub3Qgc2V0CitDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NDA5NgorQ09ORklHX0FMSUdOTUVOVF9UUkFQPXkKKworIworIyBCb290IG9wdGlvbnMKKyMKK0NPTkZJR19aQk9PVF9ST01fVEVYVD0weDAKK0NPTkZJR19aQk9PVF9ST01fQlNTPTB4MAorQ09ORklHX0NNRExJTkU9InJvb3Q9L2Rldi9uZnMgaXA9Ym9vdHAgY29uc29sZT10dHlTMCwxMTUyMDAgbWVtPTY0TSIKKyMgQ09ORklHX1hJUF9LRVJORUwgaXMgbm90IHNldAorCisjCisjIEZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbgorIworCisjCisjIEF0IGxlYXN0IG9uZSBlbXVsYXRpb24gbXVzdCBiZSBzZWxlY3RlZAorIworQ09ORklHX0ZQRV9OV0ZQRT15CisjIENPTkZJR19GUEVfTldGUEVfWFAgaXMgbm90IHNldAorIyBDT05GSUdfRlBFX0ZBU1RGUEUgaXMgbm90IHNldAorCisjCisjIFVzZXJzcGFjZSBiaW5hcnkgZm9ybWF0cworIworQ09ORklHX0JJTkZNVF9FTEY9eQorIyBDT05GSUdfQklORk1UX0FPVVQgaXMgbm90IHNldAorIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfQVJUSFVSIGlzIG5vdCBzZXQKKworIworIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKKyMKKyMgQ09ORklHX1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BNX0xFR0FDWSBpcyBub3Qgc2V0CisjIENPTkZJR19QTV9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19BUE0gaXMgbm90IHNldAorCisjCisjIE5ldHdvcmtpbmcKKyMKK0NPTkZJR19ORVQ9eQorCisjCisjIE5ldHdvcmtpbmcgb3B0aW9ucworIworIyBDT05GSUdfTkVUREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfUEFDS0VUIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUPXkKKyMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKK0NPTkZJR19JUF9QTlA9eQorIyBDT05GSUdfSVBfUE5QX0RIQ1AgaXMgbm90IHNldAorQ09ORklHX0lQX1BOUF9CT09UUD15CisjIENPTkZJR19JUF9QTlBfUkFSUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lORVRfWEZSTV9NT0RFX1RSQU5TUE9SVD15CitDT05GSUdfSU5FVF9YRlJNX01PREVfVFVOTkVMPXkKK0NPTkZJR19JTkVUX0RJQUc9eQorQ09ORklHX0lORVRfVENQX0RJQUc9eQorIyBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQgaXMgbm90IHNldAorQ09ORklHX1RDUF9DT05HX0JJQz15CisjIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBzZXQKKworIworIyBEQ0NQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX0lQX0RDQ1AgaXMgbm90IHNldAorCisjCisjIFNDVFAgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfSVBfU0NUUCBpcyBub3Qgc2V0CisKKyMKKyMgVElQQyBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19USVBDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUTSBpcyBub3Qgc2V0CisjIENPTkZJR19CUklER0UgaXMgbm90IHNldAorIyBDT05GSUdfVkxBTl84MDIxUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUNORVQgaXMgbm90IHNldAorIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAorIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAorIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0xBUEIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0CisjIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAorIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0CisKKyMKKyMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCisjCisjIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgdGVzdGluZworIworIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CisjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lFRUU4MDIxMSBpcyBub3Qgc2V0CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfU1RBTkRBTE9ORT15CitDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CisjIENPTkZJR19GV19MT0FERVIgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfRFJJVkVSIGlzIG5vdCBzZXQKKworIworIyBDb25uZWN0b3IgLSB1bmlmaWVkIHVzZXJzcGFjZSA8LT4ga2VybmVsc3BhY2UgbGlua2VyCisjCisjIENPTkZJR19DT05ORUNUT1IgaXMgbm90IHNldAorCisjCisjIE1lbW9yeSBUZWNobm9sb2d5IERldmljZXMgKE1URCkKKyMKK0NPTkZJR19NVEQ9eQorIyBDT05GSUdfTVREX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9DT05DQVQgaXMgbm90IHNldAorQ09ORklHX01URF9QQVJUSVRJT05TPXkKK0NPTkZJR19NVERfUkVEQk9PVF9QQVJUUz15CitDT05GSUdfTVREX1JFREJPT1RfRElSRUNUT1JZX0JMT0NLPS0xCisjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUU19VTkFMTE9DQVRFRCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUU19SRUFET05MWSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ01ETElORV9QQVJUUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQUZTX1BBUlRTIGlzIG5vdCBzZXQKKworIworIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycworIworQ09ORklHX01URF9DSEFSPXkKK0NPTkZJR19NVERfQkxPQ0s9eQorIyBDT05GSUdfRlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GVEwgaXMgbm90IHNldAorIyBDT05GSUdfSU5GVEwgaXMgbm90IHNldAorIyBDT05GSUdfUkZEX0ZUTCBpcyBub3Qgc2V0CisKKyMKKyMgUkFNL1JPTS9GbGFzaCBjaGlwIGRyaXZlcnMKKyMKK0NPTkZJR19NVERfQ0ZJPXkKKyMgQ09ORklHX01URF9KRURFQ1BST0JFIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfR0VOX1BST0JFPXkKK0NPTkZJR19NVERfQ0ZJX0FEVl9PUFRJT05TPXkKK0NPTkZJR19NVERfQ0ZJX05PU1dBUD15CisjIENPTkZJR19NVERfQ0ZJX0JFX0JZVEVfU1dBUCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ0ZJX0xFX0JZVEVfU1dBUCBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NGSV9HRU9NRVRSWT15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE9eQorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8yPXkKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfND15CisjIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfOCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMTYgaXMgbm90IHNldAorIyBDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9DRklfSTEgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSTI9eQorIyBDT05GSUdfTVREX0NGSV9JNCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PVFAgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSU5URUxFWFQ9eQorIyBDT05GSUdfTVREX0NGSV9BTURTVEQgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0NGSV9TVEFBIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfQ0ZJX1VUSUw9eQorIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUk9NIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAorIyBDT05GSUdfTVREX09CU09MRVRFX0NISVBTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9YSVAgaXMgbm90IHNldAorCisjCisjIE1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MKKyMKKyMgQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFlTTUFQIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BUk1fSU5URUdSQVRPUiBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfU0hBUlBfU0wgaXMgbm90IHNldAorIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAorCisjCisjIFNlbGYtY29udGFpbmVkIE1URCBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTVREX1NMUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTVREUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAorCisjCisjIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKKworIworIyBOQU5EIEZsYXNoIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19NVERfTkFORCBpcyBub3Qgc2V0CisKKyMKKyMgT25lTkFORCBGbGFzaCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX09ORU5BTkQgaXMgbm90IHNldAorCisjCisjIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAorIworIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0CisjCisKKyMKKyMgQmxvY2sgZGV2aWNlcworIworIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfTE9PUCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX05CRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lOSVRSRCBpcyBub3Qgc2V0CisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CisKKyMKKyMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAorIworQ09ORklHX0lERT15CitDT05GSUdfQkxLX0RFVl9JREU9eQorCisjCisjIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pZGUudHh0IGZvciBoZWxwL2luZm8gb24gSURFIGRyaXZlcworIworIyBDT05GSUdfQkxLX0RFVl9JREVfU0FUQSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKKyMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lERUNEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVfVEFTS19JT0NUTCBpcyBub3Qgc2V0CisKKyMKKyMgSURFIGNoaXBzZXQgc3VwcG9ydC9idWdmaXhlcworIworIyBDT05GSUdfSURFX0dFTkVSSUMgaXMgbm90IHNldAorIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lERURNQSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVETUFfQVVUTyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjCisjIENPTkZJR19NRCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKKworIworIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CisjCisKKyMKKyMgSTJPIGRldmljZSBzdXBwb3J0CisjCisKKyMKKyMgTmV0d29yayBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX05FVERFVklDRVM9eQorIyBDT05GSUdfRFVNTVkgaXMgbm90IHNldAorIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CisjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAorIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKKworIworIyBQSFkgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX1BIWUxJQiBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCisjCitDT05GSUdfTkVUX0VUSEVSTkVUPXkKK0NPTkZJR19NSUk9eQorQ09ORklHX1NNQzkxWD15CisjIENPTkZJR19ETTkwMDAgaXMgbm90IHNldAorIyBDT05GSUdfU01DOTExWCBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMKKworIworIyBFdGhlcm5ldCAoMTAwMDAgTWJpdCkKKyMKKworIworIyBUb2tlbiBSaW5nIGRldmljZXMKKyMKKworIworIyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKKyMKKyMgQ09ORklHX05FVF9SQURJTyBpcyBub3Qgc2V0CisKKyMKKyMgV2FuIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CisjIENPTkZJR19QUFAgaXMgbm90IHNldAorIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CisjIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAorCisjCisjIElTRE4gc3Vic3lzdGVtCisjCisjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX0lOUFVUPXkKKworIworIyBVc2VybGFuZCBpbnRlcmZhY2VzCisjCitDT05GSUdfSU5QVVRfTU9VU0VERVY9eQorQ09ORklHX0lOUFVUX01PVVNFREVWX1BTQVVYPXkKK0NPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CitDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1k9NzY4CisjIENPTkZJR19JTlBVVF9KT1lERVYgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNldAorQ09ORklHX0lOUFVUX0VWREVWPXkKKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBEZXZpY2UgRHJpdmVycworIworQ09ORklHX0lOUFVUX0tFWUJPQVJEPXkKK0NPTkZJR19LRVlCT0FSRF9BVEtCRD15CisjIENPTkZJR19LRVlCT0FSRF9TVU5LQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfTEtLQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfWFRLQkQgaXMgbm90IHNldAorIyBDT05GSUdfS0VZQk9BUkRfTkVXVE9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIEkvTyBwb3J0cworIworQ09ORklHX1NFUklPPXkKKyMgQ09ORklHX1NFUklPX1NFUlBPUlQgaXMgbm90IHNldAorQ09ORklHX1NFUklPX0xJQlBTMj15CisjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworIyBDT05GSUdfU0VSSUFMXzgyNTAgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfUFhBPXkKK0NPTkZJR19TRVJJQUxfUFhBX0NPTlNPTEU9eQorQ09ORklHX1NFUklBTF9DT1JFPXkKK0NPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKK0NPTkZJR19VTklYOThfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWVM9eQorQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CisKKyMKKyMgSVBNSQorIworIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAorIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CisjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisjCisjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKKworIworIyBUUE0gZGV2aWNlcworIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CisjIENPTkZJR19URUxDTE9DSyBpcyBub3Qgc2V0CisKKyMKKyMgSTJDIHN1cHBvcnQKKyMKKyMgQ09ORklHX0kyQyBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCitDT05GSUdfSFdNT049eQorIyBDT05GSUdfSFdNT05fVklEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRjcxODA1RiBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKworIworIyBNaXNjIGRldmljZXMKKyMKKworIworIyBMRUQgZGV2aWNlcworIworIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAorCisjCisjIExFRCBkcml2ZXJzCisjCisKKyMKKyMgTEVEIFRyaWdnZXJzCisjCisKKyMKKyMgTXVsdGltZWRpYSBkZXZpY2VzCisjCisjIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNldAorQ09ORklHX1ZJREVPX1Y0TDI9eQorCisjCisjIERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0aW5nIERldmljZXMKKyMKKyMgQ09ORklHX0RWQiBpcyBub3Qgc2V0CisKKyMKKyMgR3JhcGhpY3Mgc3VwcG9ydAorIworQ09ORklHX0ZCPXkKK0NPTkZJR19GQl9DRkJfRklMTFJFQ1Q9eQorQ09ORklHX0ZCX0NGQl9DT1BZQVJFQT15CitDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15CisjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0CitDT05GSUdfRkJfRklSTVdBUkVfRURJRD15CisjIENPTkZJR19GQl9NT0RFX0hFTFBFUlMgaXMgbm90IHNldAorIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKK0NPTkZJR19GQl9QWEE9eQorIyBDT05GSUdfRkJfUFhBX1BBUkFNRVRFUlMgaXMgbm90IHNldAorIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisKKyMKKyMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CisjCisjIENPTkZJR19WR0FfQ09OU09MRSBpcyBub3Qgc2V0CitDT05GSUdfRFVNTVlfQ09OU09MRT15CitDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRTIGlzIG5vdCBzZXQKK0NPTkZJR19GT05UXzh4OD15CitDT05GSUdfRk9OVF84eDE2PXkKKworIworIyBMb2dvIGNvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19MT0dPPXkKK0NPTkZJR19MT0dPX0xJTlVYX01PTk89eQorQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQorQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIFNvdW5kCisjCitDT05GSUdfU09VTkQ9eQorCisjCisjIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZQorIworQ09ORklHX1NORD15CitDT05GSUdfU05EX1RJTUVSPXkKK0NPTkZJR19TTkRfUENNPXkKKyMgQ09ORklHX1NORF9TRVFVRU5DRVIgaXMgbm90IHNldAorIyBDT05GSUdfU05EX01JWEVSX09TUyBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfUENNX09TUyBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfRFlOQU1JQ19NSU5PUlMgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1NVUFBPUlRfT0xEX0FQSSBpcyBub3Qgc2V0CitDT05GSUdfU05EX1ZFUkJPU0VfUFJPQ0ZTPXkKKyMgQ09ORklHX1NORF9WRVJCT1NFX1BSSU5USyBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfREVCVUcgaXMgbm90IHNldAorCisjCisjIEdlbmVyaWMgZGV2aWNlcworIworQ09ORklHX1NORF9BQzk3X0NPREVDPXkKK0NPTkZJR19TTkRfQUM5N19CVVM9eQorIyBDT05GSUdfU05EX0RVTU1ZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9NVFBBViBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfU0VSSUFMX1UxNjU1MCBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfTVBVNDAxIGlzIG5vdCBzZXQKKworIworIyBBTFNBIEFSTSBkZXZpY2VzCisjCitDT05GSUdfU05EX1BYQTJYWF9QQ009eQorQ09ORklHX1NORF9QWEEyWFhfQUM5Nz15CisKKyMKKyMgT3BlbiBTb3VuZCBTeXN0ZW0KKyMKKyMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKKworIworIyBVU0Igc3VwcG9ydAorIworQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQorQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQiBpcyBub3Qgc2V0CisKKyMKKyMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JworIworCisjCisjIFVTQiBHYWRnZXQgU3VwcG9ydAorIworIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CisKKyMKKyMgTU1DL1NEIENhcmQgc3VwcG9ydAorIworIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKworIworIyBSZWFsIFRpbWUgQ2xvY2sKKyMKK0NPTkZJR19SVENfTElCPXkKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz15CisjIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUkVJU0VSRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CisjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKKworIworIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19JU085NjYwX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VERl9GUyBpcyBub3Qgc2V0CisKKyMKKyMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcworIworQ09ORklHX0ZBVF9GUz15CitDT05GSUdfTVNET1NfRlM9eQorIyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0CitDT05GSUdfRkFUX0RFRkFVTFRfQ09ERVBBR0U9NDM3CisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19TWVNGUz15CisjIENPTkZJR19UTVBGUyBpcyBub3Qgc2V0CisjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorQ09ORklHX1JBTUZTPXkKKyMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19BREZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU1BMVVNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkVGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0pGRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0pGRlMyX0ZTPXkKK0NPTkZJR19KRkZTMl9GU19ERUJVRz0wCitDT05GSUdfSkZGUzJfRlNfV1JJVEVCVUZGRVI9eQorIyBDT05GSUdfSkZGUzJfU1VNTUFSWSBpcyBub3Qgc2V0CisjIENPTkZJR19KRkZTMl9DT01QUkVTU0lPTl9PUFRJT05TIGlzIG5vdCBzZXQKK0NPTkZJR19KRkZTMl9aTElCPXkKK0NPTkZJR19KRkZTMl9SVElNRT15CisjIENPTkZJR19KRkZTMl9SVUJJTiBpcyBub3Qgc2V0CisjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAorIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayBGaWxlIFN5c3RlbXMKKyMKK0NPTkZJR19ORlNfRlM9eQorIyBDT05GSUdfTkZTX1YzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU19WNCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAorIyBDT05GSUdfTkZTRCBpcyBub3Qgc2V0CitDT05GSUdfUk9PVF9ORlM9eQorQ09ORklHX0xPQ0tEPXkKK0NPTkZJR19ORlNfQ09NTU9OPXkKK0NPTkZJR19TVU5SUEM9eQorIyBDT05GSUdfUlBDU0VDX0dTU19LUkI1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAorIyBDT05GSUdfU01CX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NJRlMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NPREFfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHXzlQX0ZTIGlzIG5vdCBzZXQKKworIworIyBQYXJ0aXRpb24gVHlwZXMKKyMKKyMgQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfTVNET1NfUEFSVElUSU9OPXkKKworIworIyBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAorIworQ09ORklHX05MUz15CitDT05GSUdfTkxTX0RFRkFVTFQ9Imlzbzg4NTktMSIKKyMgQ09ORklHX05MU19DT0RFUEFHRV80MzcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzczNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfNzc1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1MiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODU1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjIgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjUgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY5IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85MzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzk1MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85NDkgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg3NCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV84IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUxIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19BU0NJSSBpcyBub3Qgc2V0CitDT05GSUdfTkxTX0lTTzg4NTlfMT15CisjIENPTkZJR19OTFNfSVNPODg1OV8yIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV81IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV85IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CisKKyMKKyMgUHJvZmlsaW5nIHN1cHBvcnQKKyMKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisKKyMKKyMgS2VybmVsIGhhY2tpbmcKKyMKKyMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKK0NPTkZJR19NQUdJQ19TWVNSUT15CitDT05GSUdfREVCVUdfS0VSTkVMPXkKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CitDT05GSUdfREVURUNUX1NPRlRMT0NLVVA9eQorIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TTEFCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX01VVEVYRVMgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfQlVHVkVSQk9TRT15CitDT05GSUdfREVCVUdfSU5GTz15CisjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CitDT05GSUdfRlJBTUVfUE9JTlRFUj15CisjIENPTkZJR19VTldJTkRfSU5GTyBpcyBub3Qgc2V0CitDT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKKyMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX1VTRVI9eQorIyBDT05GSUdfREVCVUdfV0FJVFEgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0VSUk9SUz15CitDT05GSUdfREVCVUdfTEw9eQorIyBDT05GSUdfREVCVUdfSUNFRENDIGlzIG5vdCBzZXQKKworIworIyBTZWN1cml0eSBvcHRpb25zCisjCisjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKworIworIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKKyMKKyMgQ09ORklHX0NSWVBUTyBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgY3J5cHRvIGRldmljZXMKKyMKKworIworIyBMaWJyYXJ5IHJvdXRpbmVzCisjCisjIENPTkZJR19DUkNfQ0NJVFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JDMTYgaXMgbm90IHNldAorQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0xJQkNSQzMyQyBpcyBub3Qgc2V0CitDT05GSUdfWkxJQl9JTkZMQVRFPXkKK0NPTkZJR19aTElCX0RFRkxBVEU9eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9uZXR4X2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvbmV0eF9kZWZjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExMTVhNwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvbmV0eF9kZWZjb25maWcKQEAgLTAsMCArMSw5MjYgQEAKKyMKKyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xNy1yYzYKKyMgVHVlIEp1biAgNiAxNToyNjo1MyAyMDA2CisjCitDT05GSUdfQVJNPXkKK0NPTkZJR19NTVU9eQorQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CitDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX1ZFQ1RPUlNfQkFTRT0weGZmZmYwMDAwCisKKyMKKyMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCisjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19MT0NLX0tFUk5FTD15CitDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCisKKyMKKyMgR2VuZXJhbCBzZXR1cAorIworQ09ORklHX0xPQ0FMVkVSU0lPTj0iIgorQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPPXkKK0NPTkZJR19TV0FQPXkKK0NPTkZJR19TWVNWSVBDPXkKK0NPTkZJR19QT1NJWF9NUVVFVUU9eQorQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1Q9eQorIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMyBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKK0NPTkZJR19JS0NPTkZJRz15CitDT05GSUdfSUtDT05GSUdfUFJPQz15CisjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CisjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CitDT05GSUdfS0FMTFNZTVM9eQorIyBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tBTExTWU1TX0VYVFJBX1BBU1MgaXMgbm90IHNldAorQ09ORklHX0hPVFBMVUc9eQorQ09ORklHX1BSSU5USz15CitDT05GSUdfQlVHPXkKK0NPTkZJR19FTEZfQ09SRT15CitDT05GSUdfQkFTRV9GVUxMPXkKK0NPTkZJR19GVVRFWD15CitDT05GSUdfRVBPTEw9eQorQ09ORklHX1NITUVNPXkKK0NPTkZJR19TTEFCPXkKKyMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAorQ09ORklHX0JBU0VfU01BTEw9MAorIyBDT05GSUdfU0xPQiBpcyBub3Qgc2V0CitDT05GSUdfT0JTT0xFVEVfSU5URVJNT0RVTEU9eQorCisjCisjIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0CisjCitDT05GSUdfTU9EVUxFUz15CitDT05GSUdfTU9EVUxFX1VOTE9BRD15CitDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRD15CisjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAorQ09ORklHX0tNT0Q9eQorCisjCisjIEJsb2NrIGxheWVyCisjCisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKK0NPTkZJR19JT1NDSEVEX0FTPXkKK0NPTkZJR19JT1NDSEVEX0RFQURMSU5FPXkKK0NPTkZJR19JT1NDSEVEX0NGUT15CitDT05GSUdfREVGQVVMVF9BUz15CisjIENPTkZJR19ERUZBVUxUX0RFQURMSU5FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfQ0ZRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfTk9PUCBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9JT1NDSEVEPSJhbnRpY2lwYXRvcnkiCisKKyMKKyMgU3lzdGVtIFR5cGUKKyMKKyMgQ09ORklHX0FSQ0hfQ0xQUzc1MDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9DTFBTNzExWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NPMjg1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRUJTQTExMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0VQOTNYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0ZPT1RCUklER0UgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JTlRFR1JBVE9SIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSU9QM1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSVhQNFhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSVhQMjAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDIzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9MNzIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1BYQSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1JQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1NBMTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1MzQzI0MTAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TSEFSSyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0xIN0E0MFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9PTUFQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfVkVSU0FUSUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUkVBTFZJRVcgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JTVggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9INzIwWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0FBRUMyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9ORVRYPXkKKworIworIyBOZXRYIEltcGxlbWVudGF0aW9ucworIworQ09ORklHX01BQ0hfTlhES049eQorQ09ORklHX01BQ0hfTlhEQjUwMD15CitDT05GSUdfTUFDSF9OWEVCNTAwSE1JPXkKKworIworIyBQcm9jZXNzb3IgVHlwZQorIworQ09ORklHX0NQVV8zMj15CitDT05GSUdfQ1BVX0FSTTkyNlQ9eQorQ09ORklHX0NQVV8zMnY1PXkKK0NPTkZJR19DUFVfQUJSVF9FVjVUSj15CitDT05GSUdfQ1BVX0NBQ0hFX1ZJVlQ9eQorQ09ORklHX0NQVV9DT1BZX1Y0V0I9eQorQ09ORklHX0NQVV9UTEJfVjRXQkk9eQorCisjCisjIFByb2Nlc3NvciBGZWF0dXJlcworIworQ09ORklHX0FSTV9USFVNQj15CisjIENPTkZJR19DUFVfSUNBQ0hFX0RJU0FCTEUgaXMgbm90IHNldAorIyBDT05GSUdfQ1BVX0RDQUNIRV9ESVNBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NQVV9EQ0FDSEVfV1JJVEVUSFJPVUdIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NQVV9DQUNIRV9ST1VORF9ST0JJTiBpcyBub3Qgc2V0CitDT05GSUdfQVJNX1ZJQz15CisKKyMKKyMgQnVzIHN1cHBvcnQKKyMKK0NPTkZJR19BUk1fQU1CQT15CisKKyMKKyMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydAorIworIyBDT05GSUdfUENDQVJEIGlzIG5vdCBzZXQKKworIworIyBLZXJuZWwgRmVhdHVyZXMKKyMKK0NPTkZJR19QUkVFTVBUPXkKKyMgQ09ORklHX05PX0lETEVfSFogaXMgbm90IHNldAorQ09ORklHX0haPTEwMAorIyBDT05GSUdfQUVBQkkgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9ESVNDT05USUdNRU1fRU5BQkxFIGlzIG5vdCBzZXQKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKK0NPTkZJR19GTEFUTUVNX01BTlVBTD15CisjIENPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0ZMQVRNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQwOTYKK0NPTkZJR19BTElHTk1FTlRfVFJBUD15CisKKyMKKyMgQm9vdCBvcHRpb25zCisjCitDT05GSUdfWkJPT1RfUk9NX1RFWFQ9MHgwCitDT05GSUdfWkJPT1RfUk9NX0JTUz0weDAKK0NPTkZJR19DTURMSU5FPSJjb25zb2xlPXR0eVNNWDAsMTE1MjAwIgorIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CisKKyMKKyMgRmxvYXRpbmcgcG9pbnQgZW11bGF0aW9uCisjCisKKyMKKyMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCisjCisjIENPTkZJR19GUEVfTldGUEUgaXMgbm90IHNldAorIyBDT05GSUdfRlBFX0ZBU1RGUEUgaXMgbm90IHNldAorIyBDT05GSUdfVkZQIGlzIG5vdCBzZXQKKworIworIyBVc2Vyc3BhY2UgYmluYXJ5IGZvcm1hdHMKKyMKK0NPTkZJR19CSU5GTVRfRUxGPXkKKyMgQ09ORklHX0JJTkZNVF9BT1VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JJTkZNVF9NSVNDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSVEhVUiBpcyBub3Qgc2V0CisKKyMKKyMgUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zCisjCisjIENPTkZJR19QTSBpcyBub3Qgc2V0CisjIENPTkZJR19BUE0gaXMgbm90IHNldAorCisjCisjIE5ldHdvcmtpbmcKKyMKK0NPTkZJR19ORVQ9eQorCisjCisjIE5ldHdvcmtpbmcgb3B0aW9ucworIworIyBDT05GSUdfTkVUREVCVUcgaXMgbm90IHNldAorQ09ORklHX1BBQ0tFVD15CitDT05GSUdfUEFDS0VUX01NQVA9eQorQ09ORklHX1VOSVg9eQorQ09ORklHX1hGUk09eQorQ09ORklHX1hGUk1fVVNFUj1tCitDT05GSUdfTkVUX0tFWT15CitDT05GSUdfSU5FVD15CitDT05GSUdfSVBfTVVMVElDQVNUPXkKKyMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRklCX0hBU0g9eQorQ09ORklHX0lQX1BOUD15CitDT05GSUdfSVBfUE5QX0RIQ1A9eQorIyBDT05GSUdfSVBfUE5QX0JPT1RQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX1BOUF9SQVJQIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9JUElQIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfSVBHUkU9bQorIyBDT05GSUdfTkVUX0lQR1JFX0JST0FEQ0FTVCBpcyBub3Qgc2V0CisjIENPTkZJR19JUF9NUk9VVEUgaXMgbm90IHNldAorIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CitDT05GSUdfU1lOX0NPT0tJRVM9eQorQ09ORklHX0lORVRfQUg9eQorQ09ORklHX0lORVRfRVNQPXkKK0NPTkZJR19JTkVUX0lQQ09NUD15CitDT05GSUdfSU5FVF9YRlJNX1RVTk5FTD15CitDT05GSUdfSU5FVF9UVU5ORUw9eQorQ09ORklHX0lORVRfRElBRz15CitDT05GSUdfSU5FVF9UQ1BfRElBRz15CisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQklDPXkKKworIworIyBJUDogVmlydHVhbCBTZXJ2ZXIgQ29uZmlndXJhdGlvbgorIworIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAorQ09ORklHX0lQVjY9bQorIyBDT05GSUdfSVBWNl9QUklWQUNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQVjZfUk9VVEVSX1BSRUYgaXMgbm90IHNldAorQ09ORklHX0lORVQ2X0FIPW0KK0NPTkZJR19JTkVUNl9FU1A9bQorQ09ORklHX0lORVQ2X0lQQ09NUD1tCitDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUw9bQorQ09ORklHX0lORVQ2X1RVTk5FTD1tCisjIENPTkZJR19JUFY2X1RVTk5FTCBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSPXkKKyMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CisKKyMKKyMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworIyBDT05GSUdfTkVURklMVEVSX05FVExJTksgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSX1hUQUJMRVMgaXMgbm90IHNldAorCisjCisjIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgorIworQ09ORklHX0lQX05GX0NPTk5UUkFDSz1tCisjIENPTkZJR19JUF9ORl9DVF9BQ0NUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX05GX0NPTk5UUkFDS19NQVJLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorIyBDT05GSUdfSVBfTkZfQ1RfUFJPVE9fU0NUUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfRlRQPW0KK0NPTkZJR19JUF9ORl9JUkM9bQorIyBDT05GSUdfSVBfTkZfTkVUQklPU19OUyBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEZUUD1tCitDT05GSUdfSVBfTkZfQU1BTkRBPW0KKyMgQ09ORklHX0lQX05GX1BQVFAgaXMgbm90IHNldAorIyBDT05GSUdfSVBfTkZfSDMyMyBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfUVVFVUU9bQorCisjCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUDZfTkZfUVVFVUUgaXMgbm90IHNldAorCisjCisjIERDQ1AgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfSVBfRENDUCBpcyBub3Qgc2V0CisKKyMKKyMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKKworIworIyBUSVBDIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19MTEMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQWCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFMSyBpcyBub3Qgc2V0CisjIENPTkZJR19YMjUgaXMgbm90IHNldAorIyBDT05GSUdfTEFQQiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfRElWRVJUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VDT05FVCBpcyBub3Qgc2V0CisjIENPTkZJR19XQU5fUk9VVEVSIGlzIG5vdCBzZXQKKworIworIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKKyMKKyMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayB0ZXN0aW5nCisjCitDT05GSUdfTkVUX1BLVEdFTj1tCisjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CisjIENPTkZJR19JUkRBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lFRUU4MDIxMSBpcyBub3Qgc2V0CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfU1RBTkRBTE9ORT15CitDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CitDT05GSUdfRldfTE9BREVSPXkKKyMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgQ29ubmVjdG9yIC0gdW5pZmllZCB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGxpbmtlcgorIworIyBDT05GSUdfQ09OTkVDVE9SIGlzIG5vdCBzZXQKKworIworIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCisjCitDT05GSUdfTVREPXkKKyMgQ09ORklHX01URF9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ09OQ0FUIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfUEFSVElUSU9OUz15CisjIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQorIyBDT05GSUdfTVREX0FGU19QQVJUUyBpcyBub3Qgc2V0CisKKyMKKyMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKKyMKK0NPTkZJR19NVERfQ0hBUj15CitDT05GSUdfTVREX0JMT0NLPXkKKyMgQ09ORklHX0ZUTCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORlRMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JGRF9GVEwgaXMgbm90IHNldAorCisjCisjIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCisjCitDT05GSUdfTVREX0NGST15CisjIENPTkZJR19NVERfSkVERUNQUk9CRSBpcyBub3Qgc2V0CitDT05GSUdfTVREX0dFTl9QUk9CRT15CisjIENPTkZJR19NVERfQ0ZJX0FEVl9PUFRJT05TIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMT15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF80PXkKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF84IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xNiBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMzIgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSTE9eQorQ09ORklHX01URF9DRklfSTI9eQorIyBDT05GSUdfTVREX0NGSV9JNCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKK0NPTkZJR19NVERfQ0ZJX0lOVEVMRVhUPXkKKyMgQ09ORklHX01URF9DRklfQU1EU1REIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9DRklfU1RBQSBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NGSV9VVElMPXkKK0NPTkZJR19NVERfUkFNPXkKKyMgQ09ORklHX01URF9ST00gaXMgbm90IHNldAorIyBDT05GSUdfTVREX0FCU0VOVCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfT0JTT0xFVEVfQ0hJUFMgaXMgbm90IHNldAorCisjCisjIE1hcHBpbmcgZHJpdmVycyBmb3IgY2hpcCBhY2Nlc3MKKyMKKyMgQ09ORklHX01URF9DT01QTEVYX01BUFBJTkdTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFlTTUFQIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BUk1fSU5URUdSQVRPUiBpcyBub3Qgc2V0CitDT05GSUdfTVREX1BMQVRSQU09eQorCisjCisjIFNlbGYtY29udGFpbmVkIE1URCBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTVREX1NMUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTVREUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAorCisjCisjIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDFQTFVTIGlzIG5vdCBzZXQKKworIworIyBOQU5EIEZsYXNoIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19NVERfTkFORCBpcyBub3Qgc2V0CisKKyMKKyMgT25lTkFORCBGbGFzaCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX09ORU5BTkQgaXMgbm90IHNldAorCisjCisjIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAorIworIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0CisjCisKKyMKKyMgQmxvY2sgZGV2aWNlcworIworIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0xPT1A9bQorQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCisjIENPTkZJR19CTEtfREVWX05CRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1JBTSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lOSVRSRCBpcyBub3Qgc2V0CisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJIGlzIG5vdCBzZXQKKworIworIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQorIworIyBDT05GSUdfTUQgaXMgbm90IHNldAorCisjCisjIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZVU0lPTiBpcyBub3Qgc2V0CisKKyMKKyMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAorIworCisjCisjIEkyTyBkZXZpY2Ugc3VwcG9ydAorIworCisjCisjIE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19ORVRERVZJQ0VTPXkKKyMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CisKKyMKKyMgUEhZIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19QSFlMSUIgaXMgbm90IHNldAorCisjCisjIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQorIworQ09ORklHX05FVF9FVEhFUk5FVD15CitDT05GSUdfTUlJPXkKKyMgQ09ORklHX1NNQzkxWCBpcyBub3Qgc2V0CitDT05GSUdfTkVUX05FVFg9eQorIyBDT05GSUdfRE05MDAwIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAwMCBNYml0KQorIworCisjCisjIEV0aGVybmV0ICgxMDAwMCBNYml0KQorIworCisjCisjIFRva2VuIFJpbmcgZGV2aWNlcworIworCisjCisjIFdpcmVsZXNzIExBTiAobm9uLWhhbXJhZGlvKQorIworIyBDT05GSUdfTkVUX1JBRElPIGlzIG5vdCBzZXQKKworIworIyBXYW4gaW50ZXJmYWNlcworIworIyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CisjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CisKKyMKKyMgSVNETiBzdWJzeXN0ZW0KKyMKKyMgQ09ORklHX0lTRE4gaXMgbm90IHNldAorCisjCisjIElucHV0IGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfSU5QVVQ9eQorCisjCisjIFVzZXJsYW5kIGludGVyZmFjZXMKKyMKK0NPTkZJR19JTlBVVF9NT1VTRURFVj15CisjIENPTkZJR19JTlBVVF9NT1VTRURFVl9QU0FVWCBpcyBub3Qgc2V0CitDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1g9MTAyNAorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTc2OAorIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RTREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTU9VU0UgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfVE9VQ0hTQ1JFRU4gaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgSS9PIHBvcnRzCisjCitDT05GSUdfU0VSSU89eQorQ09ORklHX1NFUklPX1NFUlBPUlQ9eQorIyBDT05GSUdfU0VSSU9fQU1CQUtNSSBpcyBub3Qgc2V0CisjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworIyBDT05GSUdfU0VSSUFMXzgyNTAgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKKyMgQ09ORklHX1NFUklBTF9BTUJBX1BMMDEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFUklBTF9BTUJBX1BMMDExIGlzIG5vdCBzZXQKK0NPTkZJR19TRVJJQUxfQ09SRT15CitDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CitDT05GSUdfU0VSSUFMX05FVFg9eQorQ09ORklHX1NFUklBTF9ORVRYX0NPTlNPTEU9eQorQ09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKKworIworIyBJUE1JCisjCisjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAorCisjCisjIFdhdGNoZG9nIENhcmRzCisjCisjIENPTkZJR19XQVRDSERPRyBpcyBub3Qgc2V0CitDT05GSUdfTlZSQU09bQorIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CisjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisjCisjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKKworIworIyBUUE0gZGV2aWNlcworIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CisjIENPTkZJR19URUxDTE9DSyBpcyBub3Qgc2V0CisKKyMKKyMgSTJDIHN1cHBvcnQKKyMKKyMgQ09ORklHX0kyQyBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTl9WSUQgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIExFRCBkZXZpY2VzCisjCisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisKKyMKKyMgTEVEIGRyaXZlcnMKKyMKKworIworIyBMRUQgVHJpZ2dlcnMKKyMKKworIworIyBNdWx0aW1lZGlhIGRldmljZXMKKyMKKyMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fVjRMMj15CisKKyMKKyMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcworIworIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKworIworIyBHcmFwaGljcyBzdXBwb3J0CisjCitDT05GSUdfRkI9eQorQ09ORklHX0ZCX0NGQl9GSUxMUkVDVD15CitDT05GSUdfRkJfQ0ZCX0NPUFlBUkVBPXkKK0NPTkZJR19GQl9DRkJfSU1BR0VCTElUPXkKKyMgQ09ORklHX0ZCX01BQ01PREVTIGlzIG5vdCBzZXQKK0NPTkZJR19GQl9GSVJNV0FSRV9FRElEPXkKKyMgQ09ORklHX0ZCX01PREVfSEVMUEVSUyBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAorQ09ORklHX0ZCX0FSTUNMQ0Q9eQorIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldAorIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisKKyMKKyMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CisjCisjIENPTkZJR19WR0FfQ09OU09MRSBpcyBub3Qgc2V0CitDT05GSUdfRFVNTVlfQ09OU09MRT15CitDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisjIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRTIGlzIG5vdCBzZXQKK0NPTkZJR19GT05UXzh4OD15CitDT05GSUdfRk9OVF84eDE2PXkKKworIworIyBMb2dvIGNvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19MT0dPPXkKK0NPTkZJR19MT0dPX0xJTlVYX01PTk89eQorQ09ORklHX0xPR09fTElOVVhfVkdBMTY9eQorQ09ORklHX0xPR09fTElOVVhfQ0xVVDIyND15CisjIENPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQgaXMgbm90IHNldAorCisjCisjIFNvdW5kCisjCisjIENPTkZJR19TT1VORCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIHN1cHBvcnQKKyMKK0NPTkZJR19VU0JfQVJDSF9IQVNfSENEPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19PSENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQiBpcyBub3Qgc2V0CisKKyMKKyMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JworIworCisjCisjIFVTQiBHYWRnZXQgU3VwcG9ydAorIworIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CisKKyMKKyMgTU1DL1NEIENhcmQgc3VwcG9ydAorIworIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKworIworIyBSZWFsIFRpbWUgQ2xvY2sKKyMKK0NPTkZJR19SVENfTElCPXkKK0NPTkZJR19SVENfQ0xBU1M9bQorCisjCisjIFJUQyBpbnRlcmZhY2VzCisjCitDT05GSUdfUlRDX0lOVEZfU1lTRlM9bQorQ09ORklHX1JUQ19JTlRGX1BST0M9bQorQ09ORklHX1JUQ19JTlRGX0RFVj1tCisKKyMKKyMgUlRDIGRyaXZlcnMKKyMKKyMgQ09ORklHX1JUQ19EUlZfTTQ4VDg2IGlzIG5vdCBzZXQKK0NPTkZJR19SVENfRFJWX05FVFg9bQorIyBDT05GSUdfUlRDX0RSVl9URVNUIGlzIG5vdCBzZXQKKworIworIyBGaWxlIHN5c3RlbXMKKyMKKyMgQ09ORklHX0VYVDJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRVhUM19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfSU5PVElGWT15CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CisjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKKworIworIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19JU085NjYwX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VERl9GUyBpcyBub3Qgc2V0CisKKyMKKyMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcworIworIyBDT05GSUdfTVNET1NfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19TWVNGUz15CitDT05GSUdfVE1QRlM9eQorIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisjIENPTkZJR19DT05GSUdGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcworIworIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNQTFVTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19KRkZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19KRkZTMl9GUz15CitDT05GSUdfSkZGUzJfRlNfREVCVUc9MAorQ09ORklHX0pGRlMyX0ZTX1dSSVRFQlVGRkVSPXkKKyMgQ09ORklHX0pGRlMyX1NVTU1BUlkgaXMgbm90IHNldAorIyBDT05GSUdfSkZGUzJfQ09NUFJFU1NJT05fT1BUSU9OUyBpcyBub3Qgc2V0CitDT05GSUdfSkZGUzJfWkxJQj15CitDT05GSUdfSkZGUzJfUlRJTUU9eQorIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAorIyBDT05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSFBGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfU1lTVl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgRmlsZSBTeXN0ZW1zCisjCitDT05GSUdfTkZTX0ZTPXkKK0NPTkZJR19ORlNfVjM9eQorIyBDT05GSUdfTkZTX1YzX0FDTCBpcyBub3Qgc2V0CitDT05GSUdfTkZTX1Y0PXkKK0NPTkZJR19ORlNfRElSRUNUSU89eQorIyBDT05GSUdfTkZTRCBpcyBub3Qgc2V0CitDT05GSUdfUk9PVF9ORlM9eQorQ09ORklHX0xPQ0tEPXkKK0NPTkZJR19MT0NLRF9WND15CitDT05GSUdfTkZTX0NPTU1PTj15CitDT05GSUdfU1VOUlBDPXkKK0NPTkZJR19TVU5SUENfR1NTPXkKK0NPTkZJR19SUENTRUNfR1NTX0tSQjU9eQorIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CisjIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldAorCisjCisjIFBhcnRpdGlvbiBUeXBlcworIworIyBDT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19NU0RPU19QQVJUSVRJT049eQorCisjCisjIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0CisjCisjIENPTkZJR19OTFMgaXMgbm90IHNldAorCisjCisjIFByb2ZpbGluZyBzdXBwb3J0CisjCisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBoYWNraW5nCisjCisjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CitDT05GSUdfTUFHSUNfU1lTUlE9eQorQ09ORklHX0RFQlVHX0tFUk5FTD15CitDT05GSUdfTE9HX0JVRl9TSElGVD0xNworQ09ORklHX0RFVEVDVF9TT0ZUTE9DS1VQPXkKKyMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfUFJFRU1QVD15CisjIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQorIyBDT05GSUdfREVCVUdfSU5GTyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19WTSBpcyBub3Qgc2V0CitDT05GSUdfRlJBTUVfUE9JTlRFUj15CisjIENPTkZJR19VTldJTkRfSU5GTyBpcyBub3Qgc2V0CitDT05GSUdfRk9SQ0VEX0lOTElOSU5HPXkKKyMgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfVVNFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19XQUlUUSBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfRVJST1JTPXkKKyMgQ09ORklHX0RFQlVHX0xMIGlzIG5vdCBzZXQKKworIworIyBTZWN1cml0eSBvcHRpb25zCisjCisjIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKKworIworIyBDcnlwdG9ncmFwaGljIG9wdGlvbnMKKyMKK0NPTkZJR19DUllQVE89eQorQ09ORklHX0NSWVBUT19ITUFDPXkKK0NPTkZJR19DUllQVE9fTlVMTD1tCitDT05GSUdfQ1JZUFRPX01END1tCitDT05GSUdfQ1JZUFRPX01ENT15CitDT05GSUdfQ1JZUFRPX1NIQTE9eQorQ09ORklHX0NSWVBUT19TSEEyNTY9bQorQ09ORklHX0NSWVBUT19TSEE1MTI9bQorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19ERVM9eQorQ09ORklHX0NSWVBUT19CTE9XRklTSD1tCitDT05GSUdfQ1JZUFRPX1RXT0ZJU0g9bQorQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KK0NPTkZJR19DUllQVE9fQUVTPW0KK0NPTkZJR19DUllQVE9fQ0FTVDU9bQorQ09ORklHX0NSWVBUT19DQVNUNj1tCisjIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQVJDND1tCisjIENPTkZJR19DUllQVE9fS0hBWkFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19BTlVCSVMgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19ERUZMQVRFPXkKK0NPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9bQorQ09ORklHX0NSWVBUT19DUkMzMkM9bQorIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCisjCisKKyMKKyMgTGlicmFyeSByb3V0aW5lcworIworQ09ORklHX0NSQ19DQ0lUVD1tCisjIENPTkZJR19DUkMxNiBpcyBub3Qgc2V0CitDT05GSUdfQ1JDMzI9eQorQ09ORklHX0xJQkNSQzMyQz1tCitDT05GSUdfWkxJQl9JTkZMQVRFPXkKK0NPTkZJR19aTElCX0RFRkxBVEU9eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9zM2MyNDEwX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvczNjMjQxMF9kZWZjb25maWcKaW5kZXggM2NlYzI5ZC4uZTE3NjYxMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9zM2MyNDEwX2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL3MzYzI0MTBfZGVmY29uZmlnCkBAIC0xLDEyICsxLDE0IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTYKLSMgTW9uIE1hciAyMCAyMDozNjowMiAyMDA2CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTcKKyMgVHVlIEp1biAyMCAxODo1NzowMSAyMDA2CiAjCiBDT05GSUdfQVJNPXkKIENPTkZJR19NTVU9eQogQ09ORklHX1JXU0VNX0dFTkVSSUNfU1BJTkxPQ0s9eQorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX1ZFQ1RPUlNfQkFTRT0weGZmZmYwMDAwCiAKICMKICMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCkBAIC0yNyw2ICsyOSw3IEBACiBDT05GSUdfU1lTQ1RMPXkKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiBDT05GSUdfVUlEMTY9eQogQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKQEAgLTQyLDEwICs0NSw2IEBACiBDT05GSUdfRlVURVg9eQogQ09ORklHX0VQT0xMPXkKIENPTkZJR19TSE1FTT15Ci1DT05GSUdfQ0NfQUxJR05fRlVOQ1RJT05TPTAKLUNPTkZJR19DQ19BTElHTl9MQUJFTFM9MAotQ09ORklHX0NDX0FMSUdOX0xPT1BTPTAKLUNPTkZJR19DQ19BTElHTl9KVU1QUz0wCiBDT05GSUdfU0xBQj15CiAjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKIENPTkZJR19CQVNFX1NNQUxMPTAKQEAgLTU3LDcgKzU2LDYgQEAKICMKIENPTkZJR19NT0RVTEVTPXkKICMgQ09ORklHX01PRFVMRV9VTkxPQUQgaXMgbm90IHNldAotQ09ORklHX09CU09MRVRFX01PRFBBUk09eQogIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlzIG5vdCBzZXQKIENPTkZJR19LTU9EPXkKQEAgLTY1LDYgKzYzLDcgQEAKICMKICMgQmxvY2sgbGF5ZXIKICMKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAogCiAjCiAjIElPIFNjaGVkdWxlcnMKQEAgLTkyLDYgKzkxLDcgQEAKICMgQ09ORklHX0FSQ0hfSU9QM1hYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSVhQNFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSVhQMjAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDIzWFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9MNzIwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX1BYQSBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX1JQQyBpcyBub3Qgc2V0CkBAIC0xMDYsNiArMTA2LDggQEAKICMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0FUOTFSTTkyMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QTlg0MDA4IGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTkVUWCBpcyBub3Qgc2V0CiAKICMKICMgUzNDMjRYWCBJbXBsZW1lbnRhdGlvbnMKQEAgLTExNiwxNCArMTE4LDE5IEBACiBDT05GSUdfQkFTVF9QQzEwNF9JUlE9eQogQ09ORklHX0FSQ0hfSDE5NDA9eQogQ09ORklHX01BQ0hfTjMwPXkKK0NPTkZJR19NQUNIX1NNREs9eQogQ09ORklHX0FSQ0hfU01ESzI0MTA9eQogQ09ORklHX0FSQ0hfUzNDMjQ0MD15CitDT05GSUdfU01ESzI0NDBfQ1BVMjQ0MD15CitDT05GSUdfU01ESzI0NDBfQ1BVMjQ0Mj15CiBDT05GSUdfTUFDSF9WUjEwMDA9eQogQ09ORklHX01BQ0hfUlgzNzE1PXkKIENPTkZJR19NQUNIX09UT009eQogQ09ORklHX01BQ0hfTkVYQ09ERVJfMjQ0MD15CiBDT05GSUdfQ1BVX1MzQzI0MTA9eQorQ09ORklHX0NQVV9TM0MyNDRYPXkKIENPTkZJR19DUFVfUzNDMjQ0MD15CitDT05GSUdfQ1BVX1MzQzI0NDI9eQogCiAjCiAjIFMzQzI0MTAgQm9vdApAQCAtMjUxLDEyICsyNTgsMTUgQEAKICMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAogIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNldAogIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkVUX1RVTk5FTCBpcyBub3Qgc2V0CiBDT05GSUdfSU5FVF9ESUFHPXkKIENPTkZJR19JTkVUX1RDUF9ESUFHPXkKICMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19UQ1BfQ09OR19CSUM9eQogIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9UVU5ORUwgaXMgbm90IHNldAogIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBzZXQKIAogIwpAQCAtMzYwLDcgKzM3MCw2IEBACiAjIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKIENPTkZJR19NVERfQ0ZJX0lOVEVMRVhUPXkKIENPTkZJR19NVERfQ0ZJX0FNRFNURD15Ci1DT05GSUdfTVREX0NGSV9BTURTVERfUkVUUlk9MAogIyBDT05GSUdfTVREX0NGSV9TVEFBIGlzIG5vdCBzZXQKIENPTkZJR19NVERfQ0ZJX1VUSUw9eQogIyBDT05GSUdfTVREX1JBTSBpcyBub3Qgc2V0CkBAIC0zODUsNyArMzk0LDYgQEAKICMgQ09ORklHX01URF9TTFJBTSBpcyBub3Qgc2V0CiAjIENPTkZJR19NVERfUEhSQU0gaXMgbm90IHNldAogIyBDT05GSUdfTVREX01URFJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19NVERfQkxLTVREIGlzIG5vdCBzZXQKICMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAogCiAjCkBAIC02OTQsNyArNzAyLDYgQEAKICMKICMgQ09ORklHX1VTQlBDV0FUQ0hET0cgaXMgbm90IHNldAogIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAotIyBDT05GSUdfUlRDIGlzIG5vdCBzZXQKIENPTkZJR19TM0MyNDEwX1JUQz15CiAjIENPTkZJR19EVExLIGlzIG5vdCBzZXQKICMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKQEAgLTc0Myw5ICs3NTAsNyBAQAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19SVEM4NTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVENfWDEyMDVfSTJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19CVVMgaXMgbm90IHNldApAQCAtODA3LDE4ICs4MTIsMjkgQEAKICMKIAogIwotIyBNdWx0aW1lZGlhIENhcGFiaWxpdGllcyBQb3J0IGRyaXZlcnMKKyMgTEVEIGRldmljZXMKKyMKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKworIworIyBMRUQgZHJpdmVycworIworCisjCisjIExFRCBUcmlnZ2VycwogIwogCiAjCiAjIE11bHRpbWVkaWEgZGV2aWNlcwogIwogIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19WNEwyPXkKIAogIwogIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCiAjCiAjIENPTkZJR19EVkIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0RBQlVTQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydApAQCAtODI4LDYgKzg0NCw3IEBACiBDT05GSUdfRkJfQ0ZCX0NPUFlBUkVBPXkKIENPTkZJR19GQl9DRkJfSU1BR0VCTElUPXkKICMgQ09ORklHX0ZCX01BQ01PREVTIGlzIG5vdCBzZXQKK0NPTkZJR19GQl9GSVJNV0FSRV9FRElEPXkKIENPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQogIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKQEAgLTg2Myw2ICs4ODAsNyBAQAogIwogQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQogQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKIENPTkZJR19VU0I9eQogIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKIApAQCAtOTE1LDkgKzkzMyw3IEBACiAjIENPTkZJR19VU0JfQUNFQ0FEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9LQlRBQiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfUE9XRVJNQVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9NVE9VQ0ggaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0lUTVRPVUNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9FR0FMQVggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9ZRUFMSU5LIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9YUEFEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9BVElfUkVNT1RFIGlzIG5vdCBzZXQKQEAgLTkzMSwxNSArOTQ3LDYgQEAKICMgQ09ORklHX1VTQl9NREM4MDAgaXMgbm90IHNldAogCiAjCi0jIFVTQiBNdWx0aW1lZGlhIGRldmljZXMKLSMKLSMgQ09ORklHX1VTQl9EQUJVU0IgaXMgbm90IHNldAotCi0jCi0jIFZpZGVvNExpbnV4IHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTXVsdGltZWRpYSBkZXZpY2Ugc3VwcG9ydAotIwotCi0jCiAjIFVTQiBOZXR3b3JrIEFkYXB0ZXJzCiAjCiAjIENPTkZJR19VU0JfQ0FUQyBpcyBub3Qgc2V0CkBAIC05ODQsMTcgKzk5MSw2IEBACiAjIFVTQiBHYWRnZXQgU3VwcG9ydAogIwogIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VUX05FVDIyODAgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0dBREdFVF9QWEEyWFggaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0dBREdFVF9HT0tVIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9HQURHRVRfTEg3QTQwWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VUX09NQVAgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0dBREdFVF9EVU1NWV9IQ0QgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX1pFUk8gaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0VUSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VURlMgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0ZJTEVfU1RPUkFHRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR19TRVJJQUwgaXMgbm90IHNldAogCiAjCiAjIE1NQy9TRCBDYXJkIHN1cHBvcnQKQEAgLTEwMDIsNiArOTk4LDEyIEBACiAjIENPTkZJR19NTUMgaXMgbm90IHNldAogCiAjCisjIFJlYWwgVGltZSBDbG9jaworIworQ09ORklHX1JUQ19MSUI9eQorIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKworIwogIyBGaWxlIHN5c3RlbXMKICMKIENPTkZJR19FWFQyX0ZTPXkKQEAgLTEwNTIsNyArMTA1NCw2IEBACiAjIENPTkZJR19UTVBGUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAogQ09ORklHX1JBTUZTPXkKLSMgQ09ORklHX1JFTEFZRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAogCiAjCkBAIC0xMTkzLDYgKzExOTQsNyBAQAogIyBDT05GSUdfREVCVUdfRlMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfVk0gaXMgbm90IHNldAogQ09ORklHX0ZSQU1FX1BPSU5URVI9eQorIyBDT05GSUdfVU5XSU5EX0lORk8gaXMgbm90IHNldAogQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKIENPTkZJR19ERUJVR19VU0VSPXkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMgYi9hcmNoL2FybS9rZXJuZWwvZW50cnktYXJtdi5TCmluZGV4IGFiOGU2MDAuLjg2YzkyNTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMKKysrIGIvYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPGFzbS9nbHVlLmg+CiAjaW5jbHVkZSA8YXNtL3ZmcG1hY3Jvcy5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL2VudHJ5LW1hY3JvLlM+CisjaW5jbHVkZSA8YXNtL3RocmVhZF9ub3RpZnkuaD4KIAogI2luY2x1ZGUgImVudHJ5LWhlYWRlci5TIgogCkBAIC01NjAsMTAgKzU2MSw4IEBACiAJYWRkCWlwLCByMSwgI1RJX0NQVV9TQVZFCiAJbGRyCXIzLCBbcjIsICNUSV9UUF9WQUxVRV0KIAlzdG1pYQlpcCEsIHtyNCAtIHNsLCBmcCwgc3AsIGxyfQlAIFN0b3JlIG1vc3QgcmVncyBvbiBzdGFjawotI2lmbmRlZiBDT05GSUdfTU1VCi0JYWRkCXIyLCByMiwgI1RJX0NQVV9ET01BSU4KLSNlbHNlCi0JbGRyCXI2LCBbcjIsICNUSV9DUFVfRE9NQUlOXSEKKyNpZmRlZiBDT05GSUdfTU1VCisJbGRyCXI2LCBbcjIsICNUSV9DUFVfRE9NQUlOXQogI2VuZGlmCiAjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDYKICNpZmRlZiBDT05GSUdfQ1BVXzMydjZLCkBAIC01ODUsMjEgKzU4NCwyMCBAQAogI2lmZGVmIENPTkZJR19NTVUKIAltY3IJcDE1LCAwLCByNiwgYzMsIGMwLCAwCQlAIFNldCBkb21haW4gcmVnaXN0ZXIKICNlbmRpZgotI2lmZGVmIENPTkZJR19WRlAKLQlAIEFsd2F5cyBkaXNhYmxlIFZGUCBzbyB3ZSBjYW4gbGF6aWx5IHNhdmUvcmVzdG9yZSB0aGUgb2xkCi0JQCBzdGF0ZS4gVGhpcyBvY2N1cnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByZXZpb3VzIHRocmVhZC4KLQlWRlBGTVJYCXI0LCBGUEVYQwotCWJpYwlyNCwgcjQsICNGUEVYQ19FTkFCTEUKLQlWRlBGTVhSCUZQRVhDLCByNAotI2VuZGlmCiAjaWYgZGVmaW5lZChDT05GSUdfSVdNTVhUKQogCWJsCWl3bW14dF90YXNrX3N3aXRjaAogI2VsaWYgZGVmaW5lZChDT05GSUdfQ1BVX1hTQ0FMRSkKLQlhZGQJcjQsIHIyLCAjNDAJCQlAIGNwdV9jb250ZXh0X3NhdmUtPmV4dHJhCisJYWRkCXI0LCByMiwgI1RJX0NQVV9ET01BSU4gKyA0MAlAIGNwdV9jb250ZXh0X3NhdmUtPmV4dHJhCiAJbGRtaWIJcjQsIHtyNCwgcjV9CiAJbWFyCWFjYzAsIHI0LCByNQogI2VuZGlmCi0JbGRtaWIJcjIsIHtyNCAtIHNsLCBmcCwgc3AsIHBjfQlAIExvYWQgYWxsIHJlZ3Mgc2F2ZWQgcHJldmlvdXNseQorCW1vdglyNSwgcjAKKwlhZGQJcjQsIHIyLCAjVElfQ1BVX1NBVkUKKwlsZHIJcjAsID10aHJlYWRfbm90aWZ5X2hlYWQKKwltb3YJcjEsICNUSFJFQURfTk9USUZZX1NXSVRDSAorCWJsCWF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluCisJbW92CXIwLCByNQorCWxkbWlhCXI0LCB7cjQgLSBzbCwgZnAsIHNwLCBwY30JQCBMb2FkIGFsbCByZWdzIHNhdmVkIHByZXZpb3VzbHkKIAogCV9fSU5JVAogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvaXJxLmMgYi9hcmNoL2FybS9rZXJuZWwvaXJxLmMKaW5kZXggYmNjMTlmYi4uZWMyMGY4OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL2lycS5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9pcnEuYwpAQCAtNTIsNyArNTIsNyBAQAogICovCiAjZGVmaW5lIE1BWF9JUlFfQ05UCTEwMDAwMAogCi1zdGF0aWMgaW50IG5vaXJxZGVidWc7CitzdGF0aWMgaW50IG5vaXJxZGVidWcgX19yZWFkX21vc3RseTsKIHN0YXRpYyB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGlycV9lcnJfY291bnQ7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlycV9jb250cm9sbGVyX2xvY2spOwogc3RhdGljIExJU1RfSEVBRChpcnFfcGVuZGluZyk7CkBAIC04MSw3ICs4MSw3IEBACiAKIHZvaWQgZG9fYmFkX0lSUSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgaXJxZGVzYyAqZGVzYywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7Ci0JaXJxX2Vycl9jb3VudCArPSAxOworCWlycV9lcnJfY291bnQrKzsKIAlwcmludGsoS0VSTl9FUlIgIklSUTogc3B1cmlvdXMgaW50ZXJydXB0ICVkXG4iLCBpcnEpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LlMgYi9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LlMKaW5kZXggMjRjN2IwNC4uYWY5ZTBhZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL2l3bW14dC5TCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9pd21teHQuUwpAQCAtMjg1LDcgKzI4NSw3IEBACiAJYm5lCTFmCQkJCUAgeWVzOiBibG9jayB0aGVtIGZvciBuZXh0IHRhc2sKIAogCWxkcglyNSwgPWNvbmNhbl9vd25lcgotCWFkZAlyNiwgcjIsICMoVElfSVdNTVhUX1NUQVRFIC0gVElfQ1BVX0RPTUFJTikgQCBnZXQgbmV4dCB0YXNrIENvbmNhbiBzYXZlIGFyZWEKKwlhZGQJcjYsIHIyLCAjVElfSVdNTVhUX1NUQVRFCUAgZ2V0IG5leHQgdGFzayBDb25jYW4gc2F2ZSBhcmVhCiAJbGRyCXI1LCBbcjVdCQkJQCBnZXQgY3VycmVudCBDb25jYW4gb3duZXIKIAl0ZXEJcjUsIHI2CQkJCUAgbmV4dCB0YXNrIG93bnMgaXQ/CiAJbW92bmUJcGMsIGxyCQkJCUAgbm86IGxlYXZlIENvbmNhbiBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvYXJtL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggN2RmNmUxYS4uZTFjNzdlZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2FybS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvZWxmY29yZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CiAKICNpbmNsdWRlIDxhc20vbGVkcy5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL3RocmVhZF9ub3RpZnkuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KIApAQCAtNzEsOCArNzMsMzYgQEAKIF9fc2V0dXAoIm5vaGx0Iiwgbm9obHRfc2V0dXApOwogX19zZXR1cCgiaGx0IiwgaGx0X3NldHVwKTsKIAordm9pZCBhcm1fbWFjaGluZV9yZXN0YXJ0KGNoYXIgbW9kZSkKK3sKKwkvKgorCSAqIENsZWFuIGFuZCBkaXNhYmxlIGNhY2hlLCBhbmQgdHVybiBvZmYgaW50ZXJydXB0cworCSAqLworCWNwdV9wcm9jX2ZpbigpOworCisJLyoKKwkgKiBUZWxsIHRoZSBtbSBzeXN0ZW0gdGhhdCB3ZSBhcmUgZ29pbmcgdG8gcmVib290IC0KKwkgKiB3ZSBtYXkgbmVlZCBpdCB0byBpbnNlcnQgc29tZSAxOjEgbWFwcGluZ3Mgc28gdGhhdAorCSAqIHNvZnQgYm9vdCB3b3Jrcy4KKwkgKi8KKwlzZXR1cF9tbV9mb3JfcmVib290KG1vZGUpOworCisJLyoKKwkgKiBOb3cgY2FsbCB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJlYm9vdCBjb2RlLgorCSAqLworCWFyY2hfcmVzZXQobW9kZSk7CisKKwkvKgorCSAqIFdob29wcyAtIHRoZSBhcmNoaXRlY3R1cmUgd2FzIHVuYWJsZSB0byByZWJvb3QuCisJICogVGVsbCB0aGUgdXNlciEKKwkgKi8KKwltZGVsYXkoMTAwMCk7CisJcHJpbnRrKCJSZWJvb3QgZmFpbGVkIC0tIFN5c3RlbSBoYWx0ZWRcbiIpOworCXdoaWxlICgxKTsKK30KKwogLyoKLSAqIFRoZSBmb2xsb3dpbmcgYXJlbid0IGN1cnJlbnRseSB1c2VkLgorICogRnVuY3Rpb24gcG9pbnRlcnMgdG8gb3B0aW9uYWwgbWFjaGluZSBzcGVjaWZpYyBmdW5jdGlvbnMKICAqLwogdm9pZCAoKnBtX2lkbGUpKHZvaWQpOwogRVhQT1JUX1NZTUJPTChwbV9pZGxlKTsKQEAgLTgwLDYgKzExMCwxMCBAQAogdm9pZCAoKnBtX3Bvd2VyX29mZikodm9pZCk7CiBFWFBPUlRfU1lNQk9MKHBtX3Bvd2VyX29mZik7CiAKK3ZvaWQgKCphcm1fcG1fcmVzdGFydCkoY2hhciBzdHIpID0gYXJtX21hY2hpbmVfcmVzdGFydDsKK0VYUE9SVF9TWU1CT0xfR1BMKGFybV9wbV9yZXN0YXJ0KTsKKworCiAvKgogICogVGhpcyBpcyBvdXIgZGVmYXVsdCBpZGxlIGhhbmRsZXIuICBXZSBuZWVkIHRvIGRpc2FibGUKICAqIGludGVycnVwdHMgaGVyZSB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhIHdha2V1cCBjYWxsLgpAQCAtMTUxLDMzICsxODUsOSBAQAogCQlwbV9wb3dlcl9vZmYoKTsKIH0KIAotCiB2b2lkIG1hY2hpbmVfcmVzdGFydChjaGFyICogX191bnVzZWQpCiB7Ci0JLyoKLQkgKiBDbGVhbiBhbmQgZGlzYWJsZSBjYWNoZSwgYW5kIHR1cm4gb2ZmIGludGVycnVwdHMKLQkgKi8KLQljcHVfcHJvY19maW4oKTsKLQotCS8qCi0JICogVGVsbCB0aGUgbW0gc3lzdGVtIHRoYXQgd2UgYXJlIGdvaW5nIHRvIHJlYm9vdCAtCi0JICogd2UgbWF5IG5lZWQgaXQgdG8gaW5zZXJ0IHNvbWUgMToxIG1hcHBpbmdzIHNvIHRoYXQKLQkgKiBzb2Z0IGJvb3Qgd29ya3MuCi0JICovCi0Jc2V0dXBfbW1fZm9yX3JlYm9vdChyZWJvb3RfbW9kZSk7Ci0KLQkvKgotCSAqIE5vdyBjYWxsIHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgcmVib290IGNvZGUuCi0JICovCi0JYXJjaF9yZXNldChyZWJvb3RfbW9kZSk7Ci0KLQkvKgotCSAqIFdob29wcyAtIHRoZSBhcmNoaXRlY3R1cmUgd2FzIHVuYWJsZSB0byByZWJvb3QuCi0JICogVGVsbCB0aGUgdXNlciEKLQkgKi8KLQltZGVsYXkoMTAwMCk7Ci0JcHJpbnRrKCJSZWJvb3QgZmFpbGVkIC0tIFN5c3RlbSBoYWx0ZWRcbiIpOwotCXdoaWxlICgxKTsKKwlhcm1fcG1fcmVzdGFydChyZWJvb3RfbW9kZSk7CiB9CiAKIHZvaWQgX19zaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCkBAIC0zMjksMTMgKzMzOSw5IEBACiB7CiB9CiAKLXN0YXRpYyB2b2lkIGRlZmF1bHRfZnBfaW5pdCh1bmlvbiBmcF9zdGF0ZSAqZnApCi17Ci0JbWVtc2V0KGZwLCAwLCBzaXplb2YodW5pb24gZnBfc3RhdGUpKTsKLX0KK0FUT01JQ19OT1RJRklFUl9IRUFEKHRocmVhZF9ub3RpZnlfaGVhZCk7CiAKLXZvaWQgKCpmcF9pbml0KSh1bmlvbiBmcF9zdGF0ZSAqKSA9IGRlZmF1bHRfZnBfaW5pdDsKLUVYUE9SVF9TWU1CT0woZnBfaW5pdCk7CitFWFBPUlRfU1lNQk9MX0dQTCh0aHJlYWRfbm90aWZ5X2hlYWQpOwogCiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKQogewpAQCAtMzQ0LDIyICszNTAsMjEgQEAKIAogCW1lbXNldCh0aHJlYWQtPnVzZWRfY3AsIDAsIHNpemVvZih0aHJlYWQtPnVzZWRfY3ApKTsKIAltZW1zZXQoJnRzay0+dGhyZWFkLmRlYnVnLCAwLCBzaXplb2Yoc3RydWN0IGRlYnVnX2luZm8pKTsKKwltZW1zZXQoJnRocmVhZC0+ZnBzdGF0ZSwgMCwgc2l6ZW9mKHVuaW9uIGZwX3N0YXRlKSk7CisKKwl0aHJlYWRfbm90aWZ5KFRIUkVBRF9OT1RJRllfRkxVU0gsIHRocmVhZCk7CiAjaWYgZGVmaW5lZChDT05GSUdfSVdNTVhUKQogCWl3bW14dF90YXNrX3JlbGVhc2UodGhyZWFkKTsKICNlbmRpZgotCWZwX2luaXQoJnRocmVhZC0+ZnBzdGF0ZSk7Ci0jaWYgZGVmaW5lZChDT05GSUdfVkZQKQotCXZmcF9mbHVzaF90aHJlYWQoJnRocmVhZC0+dmZwc3RhdGUpOwotI2VuZGlmCiB9CiAKIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICpkZWFkX3Rhc2spCiB7Ci0jaWYgZGVmaW5lZChDT05GSUdfVkZQKQotCXZmcF9yZWxlYXNlX3RocmVhZCgmdGFza190aHJlYWRfaW5mbyhkZWFkX3Rhc2spLT52ZnBzdGF0ZSk7Ci0jZW5kaWYKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IHRhc2tfdGhyZWFkX2luZm8oZGVhZF90YXNrKTsKKworCXRocmVhZF9ub3RpZnkoVEhSRUFEX05PVElGWV9SRUxFQVNFLCB0aHJlYWQpOwogI2lmIGRlZmluZWQoQ09ORklHX0lXTU1YVCkKLQlpd21teHRfdGFza19yZWxlYXNlKHRhc2tfdGhyZWFkX2luZm8oZGVhZF90YXNrKSk7CisJaXdtbXh0X3Rhc2tfcmVsZWFzZSh0aHJlYWQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvYXJtL2tlcm5lbC9zaWduYWwuYwppbmRleCBhMGNkMGE5Li5mMDk0Mjc3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3NpZ25hbC5jCkBAIC02NjUsMTcgKzY2NSwzMyBAQAogCWlmIChzeXNjYWxsKSB7CiAJCWlmIChyZWdzLT5BUk1fcjAgPT0gLUVSRVNUQVJUX1JFU1RBUlRCTE9DSykgewogCQkJaWYgKHRodW1iX21vZGUocmVncykpIHsKLQkJCQlyZWdzLT5BUk1fcjcgPSBfX05SX3Jlc3RhcnRfc3lzY2FsbDsKKwkJCQlyZWdzLT5BUk1fcjcgPSBfX05SX3Jlc3RhcnRfc3lzY2FsbCAtIF9fTlJfU1lTQ0FMTF9CQVNFOwogCQkJCXJlZ3MtPkFSTV9wYyAtPSAyOwogCQkJfSBlbHNlIHsKKyNpZiBkZWZpbmVkKENPTkZJR19BRUFCSSkgJiYgIWRlZmluZWQoQ09ORklHX09BQklfQ09NUEFUKQorCQkJCXJlZ3MtPkFSTV9yNyA9IF9fTlJfcmVzdGFydF9zeXNjYWxsOworCQkJCXJlZ3MtPkFSTV9wYyAtPSA0OworI2Vsc2UKIAkJCQl1MzIgX191c2VyICp1c3A7CisJCQkJdTMyIHN3aXZhbCA9IF9fTlJfcmVzdGFydF9zeXNjYWxsOwogCiAJCQkJcmVncy0+QVJNX3NwIC09IDEyOwogCQkJCXVzcCA9ICh1MzIgX191c2VyICopcmVncy0+QVJNX3NwOwogCisJCQkJLyoKKwkJCQkgKiBFaXRoZXIgd2Ugc3VwcG9ydHMgT0FCSSBvbmx5LCBvciB3ZSBoYXZlCisJCQkJICogRUFCSSB3aXRoIHRoZSBPQUJJIGNvbXBhdCBsYXllciBlbmFibGVkLgorCQkJCSAqIEluIHRoZSBsYXRlciBjYXNlIHdlIGRvbid0IGtub3cgaWYgdXNlcgorCQkJCSAqIHNwYWNlIGlzIEVBQkkgb3Igbm90LCBhbmQgaWYgbm90IHdlIG11c3QKKwkJCQkgKiBub3QgY2xvYmJlciByNy4gIEFsd2F5cyB1c2luZyB0aGUgT0FCSQorCQkJCSAqIHN5c2NhbGwgc29sdmVzIHRoYXQgaXNzdWUgYW5kIHdvcmtzIGZvcgorCQkJCSAqIGFsbCB0aG9zZSBjYXNlcy4KKwkJCQkgKi8KKwkJCQlzd2l2YWwgPSBzd2l2YWwgLSBfX05SX1NZU0NBTExfQkFTRSArIF9fTlJfT0FCSV9TWVNDQUxMX0JBU0U7CisKIAkJCQlwdXRfdXNlcihyZWdzLT5BUk1fcGMsICZ1c3BbMF0pOwogCQkJCS8qIHN3aSBfX05SX3Jlc3RhcnRfc3lzY2FsbCAqLwotCQkJCXB1dF91c2VyKDB4ZWYwMDAwMDAgfCBfX05SX3Jlc3RhcnRfc3lzY2FsbCwgJnVzcFsxXSk7CisJCQkJcHV0X3VzZXIoMHhlZjAwMDAwMCB8IHN3aXZhbCwgJnVzcFsxXSk7CiAJCQkJLyogbGRyCXBjLCBbc3BdLCAjMTIgKi8KIAkJCQlwdXRfdXNlcigweGU0OWRmMDBjLCAmdXNwWzJdKTsKIApAQCAtNjgzLDYgKzY5OSw3IEBACiAJCQkJCQkgICAodW5zaWduZWQgbG9uZykodXNwICsgMykpOwogCiAJCQkJcmVncy0+QVJNX3BjID0gcmVncy0+QVJNX3NwICsgNDsKKyNlbmRpZgogCQkJfQogCQl9CiAJCWlmIChyZWdzLT5BUk1fcjAgPT0gLUVSRVNUQVJUTk9IQU5EIHx8CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9LY29uZmlnCmluZGV4IDRiNzIxOGYuLjFhYjViNzggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9LY29uZmlnCkBAIC00MCw2ICs0MCwxOCBAQAogCWhlbHAKIAkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgS3dpa0J5dGUncyBLQjkyMHggYm9hcmQKIAorY29uZmlnIE1BQ0hfQVRFQjkyMDAKKwlib29sICJFbWJlc3QncyBBVEVCOTIwMCIKKwlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAorCWhlbHAKKwkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgRW1iZXN0J3MgQVRFQjkyMDAgYm9hcmQKKworY29uZmlnIE1BQ0hfS0FGQQorCWJvb2wgIlNwZXJyeS1TdW4gS0FGQSBib2FyZCIKKwlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAorCWhlbHAKKwkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgU3BlcnJ5LVN1bidzIEtBRkEgYm9hcmQKKwogCiBjb21tZW50ICJBVDkxUk05MjAwIEZlYXR1cmUgU2VsZWN0aW9ucyIKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL01ha2VmaWxlIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL01ha2VmaWxlCmluZGV4IGVmODhjNDEuLjgxZWJjNjYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvTWFrZWZpbGUKQEAgLTcsMjIgKzcsMzEgQEAKIG9iai1uCQk6PQogb2JqLQkJOj0KIAorb2JqLSQoQ09ORklHX1BNKQkJKz0gcG0ubworCiAjIEJvYXJkLXNwZWNpZmljIHN1cHBvcnQKIG9iai0kKENPTkZJR19BUkNIX0FUOTFSTTkyMDBESykJKz0gYm9hcmQtZGsubwogb2JqLSQoQ09ORklHX01BQ0hfQVQ5MVJNOTIwMEVLKQkrPSBib2FyZC1lay5vCiBvYmotJChDT05GSUdfTUFDSF9DU0IzMzcpCSs9IGJvYXJkLWNzYjMzNy5vCiBvYmotJChDT05GSUdfTUFDSF9DU0I2MzcpCSs9IGJvYXJkLWNzYjYzNy5vCi0jb2JqLSQoQ09ORklHX01BQ0hfQ0FSTUVWQSkJKz0gYm9hcmQtY2FybWV2YS5vCi0jb2JqLSQoQ09ORklHX01BQ0hfS0I5MjAwKQkrPSBib2FyZC1rYjkyMDIubworb2JqLSQoQ09ORklHX01BQ0hfQ0FSTUVWQSkJKz0gYm9hcmQtY2FybWV2YS5vCitvYmotJChDT05GSUdfTUFDSF9LQjkyMDApCSs9IGJvYXJkLWtiOTIwMi5vCitvYmotJChDT05GSUdfTUFDSF9BVEVCOTIwMCkJKz0gYm9hcmQtZWI5MjAwLm8KK29iai0kKENPTkZJR19NQUNIX0tBRkEpCQkrPSBib2FyZC1rYWZhLm8KIAogIyBMRURzIHN1cHBvcnQKIGxlZC0kKENPTkZJR19BUkNIX0FUOTFSTTkyMDBESykJKz0gbGVkcy5vCiBsZWQtJChDT05GSUdfTUFDSF9BVDkxUk05MjAwRUspCSs9IGxlZHMubwogbGVkLSQoQ09ORklHX01BQ0hfQ1NCMzM3KQkrPSBsZWRzLm8KIGxlZC0kKENPTkZJR19NQUNIX0NTQjYzNykJKz0gbGVkcy5vCi0jbGVkLSQoQ09ORklHX01BQ0hfS0I5MjAwKQkrPSBsZWRzLm8KLSNsZWQtJChDT05GSUdfTUFDSF9LQUZBKQkrPSBsZWRzLm8KK2xlZC0kKENPTkZJR19NQUNIX0tCOTIwMCkJKz0gbGVkcy5vCitsZWQtJChDT05GSUdfTUFDSF9LQUZBKQkJKz0gbGVkcy5vCiBvYmotJChDT05GSUdfTEVEUykgKz0gJChsZWQteSkKIAogIyBWR0Egc3VwcG9ydAogI29iai0kKENPTkZJR19GQl9TMUQxM1hYWCkJKz0gaWNzMTUyMy5vCisKKworaWZlcSAoJChDT05GSUdfUE1fREVCVUcpLHkpCitDRkxBR1NfcG0ubyArPSAtRERFQlVHCitlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWNhcm1ldmEuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1jYXJtZXZhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxMzhiNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1jYXJtZXZhLmMKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBsaW51eC9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtY2FybWV2YS5jCisgKgorICogIENvcHlyaWdodCAoYykgMjAwNSBQZWVyIEdlb3JnaQorICogIAkJICAgICAgIENvbml0ZWMgRGF0YXN5c3RlbXMKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorCisjaW5jbHVkZSAiZ2VuZXJpYy5oIgorCitzdGF0aWMgdm9pZCBfX2luaXQgY2FybWV2YV9pbml0X2lycSh2b2lkKQoreworCS8qIEluaXRpYWxpemUgQUlDIGNvbnRyb2xsZXIgKi8KKwlhdDkxcm05MjAwX2luaXRfaXJxKE5VTEwpOworCisJLyogU2V0IHVwIHRoZSBHUElPIGludGVycnVwdHMgKi8KKwlhdDkxX2dwaW9faXJxX3NldHVwKEJHQV9HUElPX0JBTktTKTsKK30KKworLyoKKyAqIFNlcmlhbCBwb3J0IGNvbmZpZ3VyYXRpb24uCisgKiAgICAwIC4uIDMgPSBVU0FSVDAgLi4gVVNBUlQzCisgKiAgICA0ICAgICAgPSBEQkdVCisgKi8KK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyBfX2luaXRkYXRhIGNhcm1ldmFfdWFydF9jb25maWcgPSB7CisJLmNvbnNvbGVfdHR5CT0gMCwJCQkJLyogdHR5UzAgKi8KKwkubnJfdHR5CQk9IDIsCisJLnR0eV9tYXAJPSB7IDQsIDEsIC0xLCAtMSwgLTEgfQkJLyogdHR5UzAsIC4uLiwgdHR5UzQgKi8KK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBjYXJtZXZhX21hcF9pbyh2b2lkKQoreworCWF0OTFybTkyMDBfbWFwX2lvKCk7CisKKwkvKiBJbml0aWFsaXplIGNsb2NrczogMjAuMDAwIE1IeiBjcnlzdGFsICovCisJYXQ5MV9jbG9ja19pbml0KDIwMDAwMDAwKTsKKworCS8qIFNldHVwIHRoZSBzZXJpYWwgcG9ydHMgYW5kIGNvbnNvbGUgKi8KKwlhdDkxX2luaXRfc2VyaWFsKCZjYXJtZXZhX3VhcnRfY29uZmlnKTsKK30KKworc3RhdGljIHN0cnVjdCBhdDkxX2V0aF9kYXRhIF9faW5pdGRhdGEgY2FybWV2YV9ldGhfZGF0YSA9IHsKKwkucGh5X2lycV9waW4JPSBBVDkxX1BJTl9QQzQsCisJLmlzX3JtaWkJPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX3VzYmhfZGF0YSBfX2luaXRkYXRhIGNhcm1ldmFfdXNiaF9kYXRhID0geworCS5wb3J0cwkJPSAyLAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX3VkY19kYXRhIF9faW5pdGRhdGEgY2FybWV2YV91ZGNfZGF0YSA9IHsKKwkudmJ1c19waW4JPSBBVDkxX1BJTl9QRDEyLAorCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEQ5LAorfTsKKworLyogRklYTUU6IHVzZXIgZGVwZW5kZW5kICovCisvLyBzdGF0aWMgc3RydWN0IGF0OTFfY2ZfZGF0YSBfX2luaXRkYXRhIGNhcm1ldmFfY2ZfZGF0YSA9IHsKKy8vCS5kZXRfcGluCT0gQVQ5MV9QSU5fUEIwLAorLy8JLnJzdF9waW4JPSBBVDkxX1BJTl9QQzUsCisJLy8gLmlycV9waW4JPSAuLi4gbm90IGNvbm5lY3RlZAorCS8vIC52Y2NfcGluCT0gLi4uIGFsd2F5cyBwb3dlcmVkCisvLyB9OworCitzdGF0aWMgc3RydWN0IGF0OTFfbW1jX2RhdGEgX19pbml0ZGF0YSBjYXJtZXZhX21tY19kYXRhID0geworCS5pc19iCQk9IDAsCisJLndpcmU0CQk9IDEsCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgY2FybWV2YV9ib2FyZF9pbml0KHZvaWQpCit7CisJLyogU2VyaWFsICovCisJYXQ5MV9hZGRfZGV2aWNlX3NlcmlhbCgpOworCS8qIEV0aGVybmV0ICovCisJYXQ5MV9hZGRfZGV2aWNlX2V0aCgmY2FybWV2YV9ldGhfZGF0YSk7CisJLyogVVNCIEhvc3QgKi8KKwlhdDkxX2FkZF9kZXZpY2VfdXNiaCgmY2FybWV2YV91c2JoX2RhdGEpOworCS8qIFVTQiBEZXZpY2UgKi8KKwlhdDkxX2FkZF9kZXZpY2VfdWRjKCZjYXJtZXZhX3VkY19kYXRhKTsKKwkvKiBJMkMgKi8KKwlhdDkxX2FkZF9kZXZpY2VfaTJjKCk7CisJLyogQ29tcGFjdCBGbGFzaCAqLworLy8JYXQ5MV9hZGRfZGV2aWNlX2NmKCZjYXJtZXZhX2NmX2RhdGEpOworCS8qIFNQSSAqLworLy8JYXQ5MV9hZGRfZGV2aWNlX3NwaShOVUxMLCAwKTsKKwkvKiBNTUMgKi8KKwlhdDkxX2FkZF9kZXZpY2VfbW1jKCZjYXJtZXZhX21tY19kYXRhKTsKK30KKworTUFDSElORV9TVEFSVChDQVJNRVZBLCAiQ2FybWV2YSIpCisJLyogTWFpbnRhaW5lcjogQ29uaXRlYyBEYXRhc3lzdGVtcyAqLworCS5waHlzX2lvCT0gQVQ5MV9CQVNFX1NZUywKKwkuaW9fcGdfb2Zmc3QJPSAoQVQ5MV9WQV9CQVNFX1NZUyA+PiAxOCkgJiAweGZmZmMsCisJLmJvb3RfcGFyYW1zCT0gQVQ5MV9TRFJBTV9CQVNFICsgMHgxMDAsCisJLnRpbWVyCQk9ICZhdDkxcm05MjAwX3RpbWVyLAorCS5tYXBfaW8JCT0gY2FybWV2YV9tYXBfaW8sCisJLmluaXRfaXJxCT0gY2FybWV2YV9pbml0X2lycSwKKwkuaW5pdF9tYWNoaW5lCT0gY2FybWV2YV9ib2FyZF9pbml0LAorTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1jc2IzMzcuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1jc2IzMzcuYwppbmRleCBmNDUxMDRjLi5lOTQ2NDVkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtY3NiMzM3LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWNzYjMzNy5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+CiAKICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KQEAgLTM0LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9pcnEuaD4KIAotI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvc2VyaWFsX2F0OTFybTkyMDAuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9ib2FyZC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2dwaW8uaD4KIAogI2luY2x1ZGUgImdlbmVyaWMuaCIKIApAQCAtNTQsMzIgKzU1LDI0IEBACiAgKiAgICAwIC4uIDMgPSBVU0FSVDAgLi4gVVNBUlQzCiAgKiAgICA0ICAgICAgPSBEQkdVCiAgKi8KLSNkZWZpbmUgQ1NCMzM3X1VBUlRfTUFQCQl7IDQsIDEsIC0xLCAtMSwgLTEgfQkvKiB0dHlTMCwgLi4uLCB0dHlTNCAqLwotI2RlZmluZSBDU0IzMzdfU0VSSUFMX0NPTlNPTEUJMAkJCS8qIHR0eVMwICovCitzdGF0aWMgc3RydWN0IGF0OTFfdWFydF9jb25maWcgX19pbml0ZGF0YSBjc2IzMzdfdWFydF9jb25maWcgPSB7CisJLmNvbnNvbGVfdHR5CT0gMCwJCQkJLyogdHR5UzAgKi8KKwkubnJfdHR5CQk9IDIsCisJLnR0eV9tYXAJPSB7IDQsIDEsIC0xLCAtMSwgLTEgfQkJLyogdHR5UzAsIC4uLiwgdHR5UzQgKi8KK307CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBjc2IzMzdfbWFwX2lvKHZvaWQpCiB7Ci0JaW50IHNlcmlhbFtBVDkxX05SX1VBUlRdID0gQ1NCMzM3X1VBUlRfTUFQOwotCWludCBpOwotCiAJYXQ5MXJtOTIwMF9tYXBfaW8oKTsKIAogCS8qIEluaXRpYWxpemUgY2xvY2tzOiAzLjY4NjQgTUh6IGNyeXN0YWwgKi8KIAlhdDkxX2Nsb2NrX2luaXQoMzY4NjQwMCk7CiAKIAkvKiBTZXR1cCB0aGUgTEVEcyAqLwotCWF0OTFfaW5pdF9sZWRzKEFUOTFfUElOX1BCMiwgQVQ5MV9QSU5fUEIyKTsKKwlhdDkxX2luaXRfbGVkcyhBVDkxX1BJTl9QQjAsIEFUOTFfUElOX1BCMSk7CiAKLSNpZmRlZiBDT05GSUdfU0VSSUFMX0FUOTEKLQlhdDkxX2NvbnNvbGVfcG9ydCA9IENTQjMzN19TRVJJQUxfQ09OU09MRTsKLQltZW1jcHkoYXQ5MV9zZXJpYWxfbWFwLCBzZXJpYWwsIHNpemVvZihzZXJpYWwpKTsKLQotCS8qIFJlZ2lzdGVyIFVBUlRzICovCi0JZm9yIChpID0gMDsgaSA8IEFUOTFfTlJfVUFSVDsgaSsrKSB7Ci0JCWlmIChzZXJpYWxbaV0gPj0gMCkKLQkJCWF0OTFfcmVnaXN0ZXJfdWFydChpLCBzZXJpYWxbaV0pOwotCX0KLSNlbmRpZgorCS8qIFNldHVwIHRoZSBzZXJpYWwgcG9ydHMgYW5kIGNvbnNvbGUgKi8KKwlhdDkxX2luaXRfc2VyaWFsKCZjc2IzMzdfdWFydF9jb25maWcpOwogfQogCiBzdGF0aWMgc3RydWN0IGF0OTFfZXRoX2RhdGEgX19pbml0ZGF0YSBjc2IzMzdfZXRoX2RhdGEgPSB7CkBAIC0xMTgsMTcgKzExMSwzMSBAQAogCS53cF9waW4JCT0gQVQ5MV9QSU5fUEQ2LAogfTsKIAorc3RhdGljIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyBjc2IzMzdfc3BpX2RldmljZXNbXSA9IHsKKwl7CS8qIENBTiBjb250cm9sbGVyICovCisJCS5tb2RhbGlhcwk9ICJzYWs4MmM5MDAiLAorCQkuY2hpcF9zZWxlY3QJPSAwLAorCQkubWF4X3NwZWVkX2h6CT0gNiAqIDEwMDAgKiAxMDAwLAorCX0sCit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgY3NiMzM3X2JvYXJkX2luaXQodm9pZCkKIHsKKwkvKiBTZXJpYWwgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc2VyaWFsKCk7CiAJLyogRXRoZXJuZXQgKi8KIAlhdDkxX2FkZF9kZXZpY2VfZXRoKCZjc2IzMzdfZXRoX2RhdGEpOwogCS8qIFVTQiBIb3N0ICovCiAJYXQ5MV9hZGRfZGV2aWNlX3VzYmgoJmNzYjMzN191c2JoX2RhdGEpOwogCS8qIFVTQiBEZXZpY2UgKi8KIAlhdDkxX2FkZF9kZXZpY2VfdWRjKCZjc2IzMzdfdWRjX2RhdGEpOworCS8qIEkyQyAqLworCWF0OTFfYWRkX2RldmljZV9pMmMoKTsKIAkvKiBDb21wYWN0IEZsYXNoICovCiAJYXQ5MV9zZXRfZ3Bpb19pbnB1dChBVDkxX1BJTl9QQjIyLCAxKTsJCS8qIElPSVMxNiAqLwogCWF0OTFfYWRkX2RldmljZV9jZigmY3NiMzM3X2NmX2RhdGEpOworCS8qIFNQSSAqLworCWF0OTFfYWRkX2RldmljZV9zcGkoY3NiMzM3X3NwaV9kZXZpY2VzLCBBUlJBWV9TSVpFKGNzYjMzN19zcGlfZGV2aWNlcykpOwogCS8qIE1NQyAqLwogCWF0OTFfYWRkX2RldmljZV9tbWMoJmNzYjMzN19tbWNfZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtY3NiNjM3LmMgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtY3NiNjM3LmMKaW5kZXggZjJjMmQ2ZS4uNjdkNWY3NyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWNzYjYzNy5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1jc2I2MzcuYwpAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgogCi0jaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9zZXJpYWxfYXQ5MXJtOTIwMC5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgogCiAjaW5jbHVkZSAiZ2VuZXJpYy5oIgogCkBAIC01NCwxNCArNTQsMTQgQEAKICAqICAgIDAgLi4gMyA9IFVTQVJUMCAuLiBVU0FSVDMKICAqICAgIDQgICAgICA9IERCR1UKICAqLwotI2RlZmluZSBDU0I2MzdfVUFSVF9NQVAJCXsgNCwgMSwgLTEsIC0xLCAtMSB9CS8qIHR0eVMwLCAuLi4sIHR0eVM0ICovCi0jZGVmaW5lIENTQjYzN19TRVJJQUxfQ09OU09MRQkwCQkJLyogdHR5UzAgKi8KK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyBfX2luaXRkYXRhIGNzYjYzN191YXJ0X2NvbmZpZyA9IHsKKwkuY29uc29sZV90dHkJPSAwLAkJCQkvKiB0dHlTMCAqLworCS5ucl90dHkJCT0gMiwKKwkudHR5X21hcAk9IHsgNCwgMSwgLTEsIC0xLCAtMSB9CQkvKiB0dHlTMCwgLi4uLCB0dHlTNCAqLworfTsKIAogc3RhdGljIHZvaWQgX19pbml0IGNzYjYzN19tYXBfaW8odm9pZCkKIHsKLQlpbnQgc2VyaWFsW0FUOTFfTlJfVUFSVF0gPSBDU0I2MzdfVUFSVF9NQVA7Ci0JaW50IGk7Ci0KIAlhdDkxcm05MjAwX21hcF9pbygpOwogCiAJLyogSW5pdGlhbGl6ZSBjbG9ja3M6IDMuNjg2NCBNSHogY3J5c3RhbCAqLwpAQCAtNzAsMTYgKzcwLDggQEAKIAkvKiBTZXR1cCB0aGUgTEVEcyAqLwogCWF0OTFfaW5pdF9sZWRzKEFUOTFfUElOX1BCMiwgQVQ5MV9QSU5fUEIyKTsKIAotI2lmZGVmIENPTkZJR19TRVJJQUxfQVQ5MQotCWF0OTFfY29uc29sZV9wb3J0ID0gQ1NCNjM3X1NFUklBTF9DT05TT0xFOwotCW1lbWNweShhdDkxX3NlcmlhbF9tYXAsIHNlcmlhbCwgc2l6ZW9mKHNlcmlhbCkpOwotCi0JLyogUmVnaXN0ZXIgVUFSVHMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgQVQ5MV9OUl9VQVJUOyBpKyspIHsKLQkJaWYgKHNlcmlhbFtpXSA+PSAwKQotCQkJYXQ5MV9yZWdpc3Rlcl91YXJ0KGksIHNlcmlhbFtpXSk7Ci0JfQotI2VuZGlmCisJLyogU2V0dXAgdGhlIHNlcmlhbCBwb3J0cyBhbmQgY29uc29sZSAqLworCWF0OTFfaW5pdF9zZXJpYWwoJmNzYjYzN191YXJ0X2NvbmZpZyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgYXQ5MV9ldGhfZGF0YSBfX2luaXRkYXRhIGNzYjYzN19ldGhfZGF0YSA9IHsKQEAgLTk4LDEyICs5MCwxOCBAQAogCiBzdGF0aWMgdm9pZCBfX2luaXQgY3NiNjM3X2JvYXJkX2luaXQodm9pZCkKIHsKKwkvKiBTZXJpYWwgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc2VyaWFsKCk7CiAJLyogRXRoZXJuZXQgKi8KIAlhdDkxX2FkZF9kZXZpY2VfZXRoKCZjc2I2MzdfZXRoX2RhdGEpOwogCS8qIFVTQiBIb3N0ICovCiAJYXQ5MV9hZGRfZGV2aWNlX3VzYmgoJmNzYjYzN191c2JoX2RhdGEpOwogCS8qIFVTQiBEZXZpY2UgKi8KIAlhdDkxX2FkZF9kZXZpY2VfdWRjKCZjc2I2MzdfdWRjX2RhdGEpOworCS8qIEkyQyAqLworCWF0OTFfYWRkX2RldmljZV9pMmMoKTsKKwkvKiBTUEkgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc3BpKE5VTEwsIDApOwogfQogCiBNQUNISU5FX1NUQVJUKENTQjYzNywgIkNvZ2VudCBDU0I2MzciKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWRrLmMgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZGsuYwppbmRleCAyZDcyMDBlLi40OGQ3MzkwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZGsuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZGsuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgogCiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+CkBAIC0zNyw5ICszOCw5IEBACiAjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvaXJxLmg+CiAKLSNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3NlcmlhbF9hdDkxcm05MjAwLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CiAKICNpbmNsdWRlICJnZW5lcmljLmgiCiAKQEAgLTU3LDE0ICs1OCwxNCBAQAogICogICAgMCAuLiAzID0gVVNBUlQwIC4uIFVTQVJUMwogICogICAgNCAgICAgID0gREJHVQogICovCi0jZGVmaW5lIERLX1VBUlRfTUFQCQl7IDQsIDEsIC0xLCAtMSwgLTEgfQkvKiB0dHlTMCwgLi4uLCB0dHlTNCAqLwotI2RlZmluZSBES19TRVJJQUxfQ09OU09MRQkwCQkJLyogdHR5UzAgKi8KK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyBfX2luaXRkYXRhIGRrX3VhcnRfY29uZmlnID0geworCS5jb25zb2xlX3R0eQk9IDAsCQkJCS8qIHR0eVMwICovCisJLm5yX3R0eQkJPSAyLAorCS50dHlfbWFwCT0geyA0LCAxLCAtMSwgLTEsIC0xIH0JCS8qIHR0eVMwLCAuLi4sIHR0eVM0ICovCit9OwogCiBzdGF0aWMgdm9pZCBfX2luaXQgZGtfbWFwX2lvKHZvaWQpCiB7Ci0JaW50IHNlcmlhbFtBVDkxX05SX1VBUlRdID0gREtfVUFSVF9NQVA7Ci0JaW50IGk7Ci0KIAlhdDkxcm05MjAwX21hcF9pbygpOwogCiAJLyogSW5pdGlhbGl6ZSBjbG9ja3M6IDE4LjQzMiBNSHogY3J5c3RhbCAqLwpAQCAtNzMsMTYgKzc0LDggQEAKIAkvKiBTZXR1cCB0aGUgTEVEcyAqLwogCWF0OTFfaW5pdF9sZWRzKEFUOTFfUElOX1BCMiwgQVQ5MV9QSU5fUEIyKTsKIAotI2lmZGVmIENPTkZJR19TRVJJQUxfQVQ5MQotCWF0OTFfY29uc29sZV9wb3J0ID0gREtfU0VSSUFMX0NPTlNPTEU7Ci0JbWVtY3B5KGF0OTFfc2VyaWFsX21hcCwgc2VyaWFsLCBzaXplb2Yoc2VyaWFsKSk7Ci0KLQkvKiBSZWdpc3RlciBVQVJUcyAqLwotCWZvciAoaSA9IDA7IGkgPCBBVDkxX05SX1VBUlQ7IGkrKykgewotCQlpZiAoYXQ5MV9zZXJpYWxfbWFwW2ldID49IDApCi0JCQlhdDkxX3JlZ2lzdGVyX3VhcnQoaSwgYXQ5MV9zZXJpYWxfbWFwW2ldKTsKLQl9Ci0jZW5kaWYKKwkvKiBTZXR1cCB0aGUgc2VyaWFsIHBvcnRzIGFuZCBjb25zb2xlICovCisJYXQ5MV9pbml0X3NlcmlhbCgmZGtfdWFydF9jb25maWcpOwogfQogCiBzdGF0aWMgc3RydWN0IGF0OTFfZXRoX2RhdGEgX19pbml0ZGF0YSBka19ldGhfZGF0YSA9IHsKQEAgLTExMSwxNiArMTA0LDQ4IEBACiAJLndpcmU0CQk9IDEsCiB9OwogCitzdGF0aWMgc3RydWN0IHNwaV9ib2FyZF9pbmZvIGRrX3NwaV9kZXZpY2VzW10gPSB7CisJewkvKiBEYXRhRmxhc2ggY2hpcCAqLworCQkubW9kYWxpYXMJPSAibXRkX2RhdGFmbGFzaCIsCisJCS5jaGlwX3NlbGVjdAk9IDAsCisJCS5tYXhfc3BlZWRfaHoJPSAxNSAqIDEwMDAgKiAxMDAwLAorCX0sCisJewkvKiBVUjZIQ1BTMi1TUDQwIFBTMi10by1TUEkgYWRhcHRlciAqLworCQkubW9kYWxpYXMJPSAidXI2aGNwczIiLAorCQkuY2hpcF9zZWxlY3QJPSAxLAorCQkubWF4X3NwZWVkX2h6CT0gMjUwICogIDEwMDAsCisJfSwKKwl7CS8qIFRMVjE1MDQgQURDLCA0IGNoYW5uZWxzLCAxMCBiaXRzOyBvbmUgaXMgYSB0ZW1wIHNlbnNvciAqLworCQkubW9kYWxpYXMJPSAidGx2MTUwNCIsCisJCS5jaGlwX3NlbGVjdAk9IDIsCisJCS5tYXhfc3BlZWRfaHoJPSAyMCAqIDEwMDAgKiAxMDAwLAorCX0sCisjaWZkZWYgQ09ORklHX01URF9BVDkxX0RBVEFGTEFTSF9DQVJECisJewkvKiBEYXRhRmxhc2ggY2FyZCAqLworCQkubW9kYWxpYXMJPSAibXRkX2RhdGFmbGFzaCIsCisJCS5jaGlwX3NlbGVjdAk9IDMsCisJCS5tYXhfc3BlZWRfaHoJPSAxNSAqIDEwMDAgKiAxMDAwLAorCX0KKyNlbmRpZgorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IGRrX2JvYXJkX2luaXQodm9pZCkKIHsKKwkvKiBTZXJpYWwgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc2VyaWFsKCk7CiAJLyogRXRoZXJuZXQgKi8KIAlhdDkxX2FkZF9kZXZpY2VfZXRoKCZka19ldGhfZGF0YSk7CiAJLyogVVNCIEhvc3QgKi8KIAlhdDkxX2FkZF9kZXZpY2VfdXNiaCgmZGtfdXNiaF9kYXRhKTsKIAkvKiBVU0IgRGV2aWNlICovCiAJYXQ5MV9hZGRfZGV2aWNlX3VkYygmZGtfdWRjX2RhdGEpOworCWF0OTFfc2V0X211bHRpX2RyaXZlKGRrX3VkY19kYXRhLnB1bGx1cF9waW4sIDEpOwkvKiBwdWxsdXBfcGluIGlzIGNvbm5lY3RlZCB0byByZXNldCAqLwogCS8qIENvbXBhY3QgRmxhc2ggKi8KIAlhdDkxX2FkZF9kZXZpY2VfY2YoJmRrX2NmX2RhdGEpOworCS8qIEkyQyAqLworCWF0OTFfYWRkX2RldmljZV9pMmMoKTsKKwkvKiBTUEkgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc3BpKGRrX3NwaV9kZXZpY2VzLCBBUlJBWV9TSVpFKGRrX3NwaV9kZXZpY2VzKSk7CiAjaWZkZWYgQ09ORklHX01URF9BVDkxX0RBVEFGTEFTSF9DQVJECiAJLyogRGF0YUZsYXNoIGNhcmQgKi8KIAlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QQjcsIDApOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWViOTIwMC5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWViOTIwMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZTJkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZWI5MjAwLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBsaW51eC9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZWI5MjAwLmMKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA1IFNBTiBQZW9wbGUsIGFkYXB0ZWQgZm9yIEFURUI5MjAwIGZyb20gRW1iZXN0CisgKiAgYnkgQW5kcmV3IFBhdHJpa2FsYWtpcworICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorCisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgorCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CisKKyNpbmNsdWRlICJnZW5lcmljLmgiCisKK3N0YXRpYyB2b2lkIF9faW5pdCBlYjkyMDBfaW5pdF9pcnEodm9pZCkKK3sKKwkvKiBJbml0aWFsaXplIEFJQyBjb250cm9sbGVyICovCisJYXQ5MXJtOTIwMF9pbml0X2lycShOVUxMKTsKKworCS8qIFNldCB1cCB0aGUgR1BJTyBpbnRlcnJ1cHRzICovCisJYXQ5MV9ncGlvX2lycV9zZXR1cChCR0FfR1BJT19CQU5LUyk7Cit9CisKKy8qCisgKiBTZXJpYWwgcG9ydCBjb25maWd1cmF0aW9uLgorICogICAgMCAuLiAzID0gVVNBUlQwIC4uIFVTQVJUMworICogICAgNCAgICAgID0gREJHVQorICovCitzdGF0aWMgc3RydWN0IGF0OTFfdWFydF9jb25maWcgX19pbml0ZGF0YSBlYjkyMDBfdWFydF9jb25maWcgPSB7CisJLmNvbnNvbGVfdHR5CT0gMCwJCQkJLyogdHR5UzAgKi8KKwkubnJfdHR5CQk9IDIsCisJLnR0eV9tYXAJPSB7IDQsIDEsIC0xLCAtMSwgLTEgfQkJLyogdHR5UzAsIC4uLiwgdHR5UzQgKi8KK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBlYjkyMDBfbWFwX2lvKHZvaWQpCit7CisJYXQ5MXJtOTIwMF9tYXBfaW8oKTsKKworCS8qIEluaXRpYWxpemUgY2xvY2tzOiAxOC40MzIgTUh6IGNyeXN0YWwgKi8KKwlhdDkxX2Nsb2NrX2luaXQoMTg0MzIwMDApOworCisJLyogU2V0dXAgdGhlIHNlcmlhbCBwb3J0cyBhbmQgY29uc29sZSAqLworCWF0OTFfaW5pdF9zZXJpYWwoJmViOTIwMF91YXJ0X2NvbmZpZyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9ldGhfZGF0YSBfX2luaXRkYXRhIGViOTIwMF9ldGhfZGF0YSA9IHsKKwkucGh5X2lycV9waW4JPSBBVDkxX1BJTl9QQzQsCisJLmlzX3JtaWkJPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX3VzYmhfZGF0YSBfX2luaXRkYXRhIGViOTIwMF91c2JoX2RhdGEgPSB7CisJLnBvcnRzCQk9IDIsCit9OworCitzdGF0aWMgc3RydWN0IGF0OTFfdWRjX2RhdGEgX19pbml0ZGF0YSBlYjkyMDBfdWRjX2RhdGEgPSB7CisJLnZidXNfcGluCT0gQVQ5MV9QSU5fUEQ0LAorCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEQ1LAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX2NmX2RhdGEgX19pbml0ZGF0YSBlYjkyMDBfY2ZfZGF0YSA9IHsKKwkuZGV0X3Bpbgk9IEFUOTFfUElOX1BCMCwKKwkucnN0X3Bpbgk9IEFUOTFfUElOX1BDNSwKKwkvLyAuaXJxX3Bpbgk9IC4uLiBub3QgY29ubmVjdGVkCisJLy8gLnZjY19waW4JPSAuLi4gYWx3YXlzIHBvd2VyZWQKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9tbWNfZGF0YSBfX2luaXRkYXRhIGViOTIwMF9tbWNfZGF0YSA9IHsKKwkuaXNfYgkJPSAwLAorCS53aXJlNAkJPSAxLAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IGViOTIwMF9ib2FyZF9pbml0KHZvaWQpCit7CisJLyogU2VyaWFsICovCisJYXQ5MV9hZGRfZGV2aWNlX3NlcmlhbCgpOworCS8qIEV0aGVybmV0ICovCisJYXQ5MV9hZGRfZGV2aWNlX2V0aCgmZWI5MjAwX2V0aF9kYXRhKTsKKwkvKiBVU0IgSG9zdCAqLworCWF0OTFfYWRkX2RldmljZV91c2JoKCZlYjkyMDBfdXNiaF9kYXRhKTsKKwkvKiBVU0IgRGV2aWNlICovCisJYXQ5MV9hZGRfZGV2aWNlX3VkYygmZWI5MjAwX3VkY19kYXRhKTsKKwkvKiBJMkMgKi8KKwlhdDkxX2FkZF9kZXZpY2VfaTJjKCk7CisJLyogQ29tcGFjdCBGbGFzaCAqLworCWF0OTFfYWRkX2RldmljZV9jZigmZWI5MjAwX2NmX2RhdGEpOworCS8qIFNQSSAqLworCWF0OTFfYWRkX2RldmljZV9zcGkoTlVMTCwgMCk7CisJLyogTU1DICovCisJLyogb25seSBzdXBwb3J0cyAxIG9yIDQgYml0IGludGVyZmFjZSwgbm90IHdpcmVkIHRocm91Z2ggdG8gU1BJICovCisJYXQ5MV9hZGRfZGV2aWNlX21tYygmZWI5MjAwX21tY19kYXRhKTsKK30KKworTUFDSElORV9TVEFSVChBVEVCOTIwMCwgIkVtYmVzdCBBVEVCOTIwMCIpCisJLnBoeXNfaW8JPSBBVDkxX0JBU0VfU1lTLAorCS5pb19wZ19vZmZzdAk9IChBVDkxX1ZBX0JBU0VfU1lTID4+IDE4KSAmIDB4ZmZmYywKKwkuYm9vdF9wYXJhbXMJPSBBVDkxX1NEUkFNX0JBU0UgKyAweDEwMCwKKwkudGltZXIJCT0gJmF0OTFybTkyMDBfdGltZXIsCisJLm1hcF9pbwkJPSBlYjkyMDBfbWFwX2lvLAorCS5pbml0X2lycQk9IGViOTIwMF9pbml0X2lycSwKKwkuaW5pdF9tYWNoaW5lCT0gZWI5MjAwX2JvYXJkX2luaXQsCitNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWVrLmMgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZWsuYwppbmRleCA4MGQ5MGY1Li43MjIwMmVkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZWsuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQtZWsuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgogCiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+CkBAIC0zNyw5ICszOCw5IEBACiAjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvaXJxLmg+CiAKLSNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3NlcmlhbF9hdDkxcm05MjAwLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CiAKICNpbmNsdWRlICJnZW5lcmljLmgiCiAKQEAgLTU3LDE0ICs1OCwxNCBAQAogICogICAgMCAuLiAzID0gVVNBUlQwIC4uIFVTQVJUMwogICogICAgNCAgICAgID0gREJHVQogICovCi0jZGVmaW5lIEVLX1VBUlRfTUFQCQl7IDQsIDEsIC0xLCAtMSwgLTEgfQkvKiB0dHlTMCwgLi4uLCB0dHlTNCAqLwotI2RlZmluZSBFS19TRVJJQUxfQ09OU09MRQkwCQkJLyogdHR5UzAgKi8KK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyBfX2luaXRkYXRhIGVrX3VhcnRfY29uZmlnID0geworCS5jb25zb2xlX3R0eQk9IDAsCQkJCS8qIHR0eVMwICovCisJLm5yX3R0eQkJPSAyLAorCS50dHlfbWFwCT0geyA0LCAxLCAtMSwgLTEsIC0xIH0JCS8qIHR0eVMwLCAuLi4sIHR0eVM0ICovCit9OwogCiBzdGF0aWMgdm9pZCBfX2luaXQgZWtfbWFwX2lvKHZvaWQpCiB7Ci0JaW50IHNlcmlhbFtBVDkxX05SX1VBUlRdID0gRUtfVUFSVF9NQVA7Ci0JaW50IGk7Ci0KIAlhdDkxcm05MjAwX21hcF9pbygpOwogCiAJLyogSW5pdGlhbGl6ZSBjbG9ja3M6IDE4LjQzMiBNSHogY3J5c3RhbCAqLwpAQCAtNzMsMTYgKzc0LDggQEAKIAkvKiBTZXR1cCB0aGUgTEVEcyAqLwogCWF0OTFfaW5pdF9sZWRzKEFUOTFfUElOX1BCMSwgQVQ5MV9QSU5fUEIyKTsKIAotI2lmZGVmIENPTkZJR19TRVJJQUxfQVQ5MQotCWF0OTFfY29uc29sZV9wb3J0ID0gRUtfU0VSSUFMX0NPTlNPTEU7Ci0JbWVtY3B5KGF0OTFfc2VyaWFsX21hcCwgc2VyaWFsLCBzaXplb2Yoc2VyaWFsKSk7Ci0KLQkvKiBSZWdpc3RlciBVQVJUcyAqLwotCWZvciAoaSA9IDA7IGkgPCBBVDkxX05SX1VBUlQ7IGkrKykgewotCQlpZiAoc2VyaWFsW2ldID49IDApCi0JCQlhdDkxX3JlZ2lzdGVyX3VhcnQoaSwgc2VyaWFsW2ldKTsKLQl9Ci0jZW5kaWYKKwkvKiBTZXR1cCB0aGUgc2VyaWFsIHBvcnRzIGFuZCBjb25zb2xlICovCisJYXQ5MV9pbml0X3NlcmlhbCgmZWtfdWFydF9jb25maWcpOwogfQogCiBzdGF0aWMgc3RydWN0IGF0OTFfZXRoX2RhdGEgX19pbml0ZGF0YSBla19ldGhfZGF0YSA9IHsKQEAgLTEwNiwxNCArOTksMzYgQEAKIAkud3BfcGluCQk9IEFUOTFfUElOX1BBMTcsCiB9OwogCitzdGF0aWMgc3RydWN0IHNwaV9ib2FyZF9pbmZvIGVrX3NwaV9kZXZpY2VzW10gPSB7CisJewkvKiBEYXRhRmxhc2ggY2hpcCAqLworCQkubW9kYWxpYXMJPSAibXRkX2RhdGFmbGFzaCIsCisJCS5jaGlwX3NlbGVjdAk9IDAsCisJCS5tYXhfc3BlZWRfaHoJPSAxNSAqIDEwMDAgKiAxMDAwLAorCX0sCisjaWZkZWYgQ09ORklHX01URF9BVDkxX0RBVEFGTEFTSF9DQVJECisJewkvKiBEYXRhRmxhc2ggY2FyZCAqLworCQkubW9kYWxpYXMJPSAibXRkX2RhdGFmbGFzaCIsCisJCS5jaGlwX3NlbGVjdAk9IDMsCisJCS5tYXhfc3BlZWRfaHoJPSAxNSAqIDEwMDAgKiAxMDAwLAorCX0sCisjZW5kaWYKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBla19ib2FyZF9pbml0KHZvaWQpCiB7CisJLyogU2VyaWFsICovCisJYXQ5MV9hZGRfZGV2aWNlX3NlcmlhbCgpOwogCS8qIEV0aGVybmV0ICovCiAJYXQ5MV9hZGRfZGV2aWNlX2V0aCgmZWtfZXRoX2RhdGEpOwogCS8qIFVTQiBIb3N0ICovCiAJYXQ5MV9hZGRfZGV2aWNlX3VzYmgoJmVrX3VzYmhfZGF0YSk7CiAJLyogVVNCIERldmljZSAqLwogCWF0OTFfYWRkX2RldmljZV91ZGMoJmVrX3VkY19kYXRhKTsKKwlhdDkxX3NldF9tdWx0aV9kcml2ZShla191ZGNfZGF0YS5wdWxsdXBfcGluLCAxKTsJLyogcHVsbHVwX3BpbiBpcyBjb25uZWN0ZWQgdG8gcmVzZXQgKi8KKwkvKiBJMkMgKi8KKwlhdDkxX2FkZF9kZXZpY2VfaTJjKCk7CisJLyogU1BJICovCisJYXQ5MV9hZGRfZGV2aWNlX3NwaShla19zcGlfZGV2aWNlcywgQVJSQVlfU0laRShla19zcGlfZGV2aWNlcykpOwogI2lmZGVmIENPTkZJR19NVERfQVQ5MV9EQVRBRkxBU0hfQ0FSRAogCS8qIERhdGFGbGFzaCBjYXJkICovCiAJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEIyMiwgMCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQta2FmYS5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWthZmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjc2MGM1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWthZmEuYwpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIGxpbnV4L2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ib2FyZC1rYWZhLmMKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IFNwZXJyeS1TdW4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorCisjaW5jbHVkZSAiZ2VuZXJpYy5oIgorCitzdGF0aWMgdm9pZCBfX2luaXQga2FmYV9pbml0X2lycSh2b2lkKQoreworCS8qIEluaXRpYWxpemUgQUlDIGNvbnRyb2xsZXIgKi8KKwlhdDkxcm05MjAwX2luaXRfaXJxKE5VTEwpOworCisJLyogU2V0IHVwIHRoZSBHUElPIGludGVycnVwdHMgKi8KKwlhdDkxX2dwaW9faXJxX3NldHVwKFBRRlBfR1BJT19CQU5LUyk7Cit9CisKKy8qCisgKiBTZXJpYWwgcG9ydCBjb25maWd1cmF0aW9uLgorICogICAgMCAuLiAzID0gVVNBUlQwIC4uIFVTQVJUMworICogICAgNCAgICAgID0gREJHVQorICovCitzdGF0aWMgc3RydWN0IGF0OTFfdWFydF9jb25maWcgX19pbml0ZGF0YSBrYWZhX3VhcnRfY29uZmlnID0geworCS5jb25zb2xlX3R0eQk9IDAsCQkJCS8qIHR0eVMwICovCisJLm5yX3R0eQkJPSAyLAorCS50dHlfbWFwCT0geyA0LCAwLCAtMSwgLTEsIC0xIH0JCS8qIHR0eVMwLCAuLi4sIHR0eVM0ICovCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQga2FmYV9tYXBfaW8odm9pZCkKK3sKKwlhdDkxcm05MjAwX21hcF9pbygpOworCisJLyogSW5pdGlhbGl6ZSBjbG9ja3M6IDE4LjQzMiBNSHogY3J5c3RhbCAqLworCWF0OTFfY2xvY2tfaW5pdCgxODQzMjAwMCk7CisKKwkvKiBTZXQgdXAgdGhlIExFRHMgKi8KKwlhdDkxX2luaXRfbGVkcyhBVDkxX1BJTl9QQjQsIEFUOTFfUElOX1BCNCk7CisKKwkvKiBTZXR1cCB0aGUgc2VyaWFsIHBvcnRzIGFuZCBjb25zb2xlICovCisJYXQ5MV9pbml0X3NlcmlhbCgma2FmYV91YXJ0X2NvbmZpZyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9ldGhfZGF0YSBfX2luaXRkYXRhIGthZmFfZXRoX2RhdGEgPSB7CisJLnBoeV9pcnFfcGluCT0gQVQ5MV9QSU5fUEM0LAorCS5pc19ybWlpCT0gMCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91c2JoX2RhdGEgX19pbml0ZGF0YSBrYWZhX3VzYmhfZGF0YSA9IHsKKwkucG9ydHMJCT0gMSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91ZGNfZGF0YSBfX2luaXRkYXRhIGthZmFfdWRjX2RhdGEgPSB7CisJLnZidXNfcGluCT0gQVQ5MV9QSU5fUEI2LAorCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEI3LAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IGthZmFfYm9hcmRfaW5pdCh2b2lkKQoreworCS8qIFNlcmlhbCAqLworCWF0OTFfYWRkX2RldmljZV9zZXJpYWwoKTsKKwkvKiBFdGhlcm5ldCAqLworCWF0OTFfYWRkX2RldmljZV9ldGgoJmthZmFfZXRoX2RhdGEpOworCS8qIFVTQiBIb3N0ICovCisJYXQ5MV9hZGRfZGV2aWNlX3VzYmgoJmthZmFfdXNiaF9kYXRhKTsKKwkvKiBVU0IgRGV2aWNlICovCisJYXQ5MV9hZGRfZGV2aWNlX3VkYygma2FmYV91ZGNfZGF0YSk7CisJLyogSTJDICovCisJYXQ5MV9hZGRfZGV2aWNlX2kyYygpOworCS8qIFNQSSAqLworCWF0OTFfYWRkX2RldmljZV9zcGkoTlVMTCwgMCk7Cit9CisKK01BQ0hJTkVfU1RBUlQoS0FGQSwgIlNwZXJyeS1TdW4gS0FGQSIpCisJLyogTWFpbnRhaW5lcjogU2VyZ2VpIFNoYXJvbm92ICovCisJLnBoeXNfaW8JPSBBVDkxX0JBU0VfU1lTLAorCS5pb19wZ19vZmZzdAk9IChBVDkxX1ZBX0JBU0VfU1lTID4+IDE4KSAmIDB4ZmZmYywKKwkuYm9vdF9wYXJhbXMJPSBBVDkxX1NEUkFNX0JBU0UgKyAweDEwMCwKKwkudGltZXIJCT0gJmF0OTFybTkyMDBfdGltZXIsCisJLm1hcF9pbwkJPSBrYWZhX21hcF9pbywKKwkuaW5pdF9pcnEJPSBrYWZhX2luaXRfaXJxLAorCS5pbml0X21hY2hpbmUJPSBrYWZhX2JvYXJkX2luaXQsCitNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWtiOTIwMi5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2JvYXJkLWtiOTIwMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNmQyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQta2I5MjAyLmMKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBsaW51eC9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYm9hcmQta2I5MjAyLmMKKyAqCisgKiAgQ29weXJpZ2h0IChjKSAyMDA1IGtiX2FkbWluCisgKiAgCQkgICAgICAgS3dpa0J5dGUsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9pcnEuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorCisjaW5jbHVkZSAiZ2VuZXJpYy5oIgorCitzdGF0aWMgdm9pZCBfX2luaXQga2I5MjAyX2luaXRfaXJxKHZvaWQpCit7CisJLyogSW5pdGlhbGl6ZSBBSUMgY29udHJvbGxlciAqLworCWF0OTFybTkyMDBfaW5pdF9pcnEoTlVMTCk7CisKKwkvKiBTZXQgdXAgdGhlIEdQSU8gaW50ZXJydXB0cyAqLworCWF0OTFfZ3Bpb19pcnFfc2V0dXAoUFFGUF9HUElPX0JBTktTKTsKK30KKworLyoKKyAqIFNlcmlhbCBwb3J0IGNvbmZpZ3VyYXRpb24uCisgKiAgICAwIC4uIDMgPSBVU0FSVDAgLi4gVVNBUlQzCisgKiAgICA0ICAgICAgPSBEQkdVCisgKi8KK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyBfX2luaXRkYXRhIGtiOTIwMl91YXJ0X2NvbmZpZyA9IHsKKwkuY29uc29sZV90dHkJPSAwLAkJCQkJLyogdHR5UzAgKi8KKwkubnJfdHR5CQk9IDMsCisJLnR0eV9tYXAJPSB7IDQsIDAsIDEsIC0xLCAtMSB9CQkJLyogdHR5UzAsIC4uLiwgdHR5UzQgKi8KK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBrYjkyMDJfbWFwX2lvKHZvaWQpCit7CisJYXQ5MXJtOTIwMF9tYXBfaW8oKTsKKworCS8qIEluaXRpYWxpemUgY2xvY2tzOiAxMCBNSHogY3J5c3RhbCAqLworCWF0OTFfY2xvY2tfaW5pdCgxMDAwMDAwMCk7CisKKwkvKiBTZXQgdXAgdGhlIExFRHMgKi8KKwlhdDkxX2luaXRfbGVkcyhBVDkxX1BJTl9QQzE5LCBBVDkxX1BJTl9QQzE4KTsKKworCS8qIFNldHVwIHRoZSBzZXJpYWwgcG9ydHMgYW5kIGNvbnNvbGUgKi8KKwlhdDkxX2luaXRfc2VyaWFsKCZrYjkyMDJfdWFydF9jb25maWcpOworfQorCitzdGF0aWMgc3RydWN0IGF0OTFfZXRoX2RhdGEgX19pbml0ZGF0YSBrYjkyMDJfZXRoX2RhdGEgPSB7CisJLnBoeV9pcnFfcGluCT0gQVQ5MV9QSU5fUEIyOSwKKwkuaXNfcm1paQk9IDAsCit9OworCitzdGF0aWMgc3RydWN0IGF0OTFfdXNiaF9kYXRhIF9faW5pdGRhdGEga2I5MjAyX3VzYmhfZGF0YSA9IHsKKwkucG9ydHMJCT0gMSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91ZGNfZGF0YSBfX2luaXRkYXRhIGtiOTIwMl91ZGNfZGF0YSA9IHsKKwkudmJ1c19waW4JPSBBVDkxX1BJTl9QQjI0LAorCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEIyMiwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9tbWNfZGF0YSBfX2luaXRkYXRhIGtiOTIwMl9tbWNfZGF0YSA9IHsKKwkuZGV0X3Bpbgk9IEFUOTFfUElOX1BCMiwKKwkuaXNfYgkJPSAwLAorCS53aXJlNAkJPSAxLAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IGtiOTIwMl9ib2FyZF9pbml0KHZvaWQpCit7CisJLyogU2VyaWFsICovCisJYXQ5MV9hZGRfZGV2aWNlX3NlcmlhbCgpOworCS8qIEV0aGVybmV0ICovCisJYXQ5MV9hZGRfZGV2aWNlX2V0aCgma2I5MjAyX2V0aF9kYXRhKTsKKwkvKiBVU0IgSG9zdCAqLworCWF0OTFfYWRkX2RldmljZV91c2JoKCZrYjkyMDJfdXNiaF9kYXRhKTsKKwkvKiBVU0IgRGV2aWNlICovCisJYXQ5MV9hZGRfZGV2aWNlX3VkYygma2I5MjAyX3VkY19kYXRhKTsKKwkvKiBNTUMgKi8KKwlhdDkxX2FkZF9kZXZpY2VfbW1jKCZrYjkyMDJfbW1jX2RhdGEpOworCS8qIEkyQyAqLworCWF0OTFfYWRkX2RldmljZV9pMmMoKTsKKwkvKiBTUEkgKi8KKwlhdDkxX2FkZF9kZXZpY2Vfc3BpKE5VTEwsIDApOworfQorCitNQUNISU5FX1NUQVJUKEtCOTIwMCwgIktCOTIweCIpCisJLyogTWFpbnRhaW5lcjogS3dpa0J5dGUsIEluYy4gKi8KKwkucGh5c19pbwk9IEFUOTFfQkFTRV9TWVMsCisJLmlvX3BnX29mZnN0CT0gKEFUOTFfVkFfQkFTRV9TWVMgPj4gMTgpICYgMHhmZmZjLAorCS5ib290X3BhcmFtcwk9IEFUOTFfU0RSQU1fQkFTRSArIDB4MTAwLAorCS50aW1lcgkJPSAmYXQ5MXJtOTIwMF90aW1lciwKKwkubWFwX2lvCQk9IGtiOTIwMl9tYXBfaW8sCisJLmluaXRfaXJxCT0ga2I5MjAyX2luaXRfaXJxLAorCS5pbml0X21hY2hpbmUJPSBrYjkyMDJfYm9hcmRfaW5pdCwKK01BQ0hJTkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9jbG9jay5jCmluZGV4IDhiOTU0NjcuLmVkYzJjYzggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9jbG9jay5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9jbG9jay5jCkBAIC0yNywxMiArMjcsMTAgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgogCi0jaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9ib2FyZC5oPgkJLyogZm9yIG1hc3RlciBjbG9jayBnbG9iYWwgKi8KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KIAogI2luY2x1ZGUgImdlbmVyaWMuaCIKIAotI3VuZGVmCURFQlVHCiAKIC8qCiAgKiBUaGVyZSdzIGEgbG90IG1vcmUgd2hpY2ggY2FuIGJlIGRvbmUgd2l0aCBjbG9ja3MsIGluY2x1ZGluZyBjcHVmcmVxCkBAIC00MSw3ICszOSw5IEBACiAgKi8KIAogc3RydWN0IGNsayB7Ci0JY29uc3QgY2hhcgkqbmFtZTsKKwljb25zdCBjaGFyCSpuYW1lOwkJLyogdW5pcXVlIGNsb2NrIG5hbWUgKi8KKwljb25zdCBjaGFyCSpmdW5jdGlvbjsJLyogZnVuY3Rpb24gb2YgdGhlIGNsb2NrICovCisJc3RydWN0IGRldmljZQkqZGV2OwkJLyogZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBmdW5jdGlvbiAqLwogCXVuc2lnbmVkIGxvbmcJcmF0ZV9oejsKIAlzdHJ1Y3QgY2xrCSpwYXJlbnQ7CiAJdTMyCQlwbWNfbWFzazsKQEAgLTcxLDE1ICs3MSwxNCBAQAogfTsKIHN0YXRpYyBzdHJ1Y3QgY2xrIG1haW5fY2xrID0gewogCS5uYW1lCQk9ICJtYWluIiwKLQkucG1jX21hc2sJPSAxIDw8IDAsCS8qIGluIFBNQ19TUiAqLwotCS51c2VycwkJPSAxLAorCS5wbWNfbWFzawk9IEFUOTFfUE1DX01PU0NTLAkvKiBpbiBQTUNfU1IgKi8KIAkuaWQJCT0gMSwKIAkucHJpbWFyeQk9IDEsCiB9Owogc3RhdGljIHN0cnVjdCBjbGsgcGxsYSA9IHsKIAkubmFtZQkJPSAicGxsYSIsCiAJLnBhcmVudAkJPSAmbWFpbl9jbGssCi0JLnBtY19tYXNrCT0gMSA8PCAxLAkvKiBpbiBQTUNfU1IgKi8KKwkucG1jX21hc2sJPSBBVDkxX1BNQ19MT0NLQSwJLyogaW4gUE1DX1NSICovCiAJLmlkCQk9IDIsCiAJLnByaW1hcnkJPSAxLAogCS5wbGwJCT0gMSwKQEAgLTEwNSw3ICsxMDQsNyBAQAogc3RhdGljIHN0cnVjdCBjbGsgcGxsYiA9IHsKIAkubmFtZQkJPSAicGxsYiIsCiAJLnBhcmVudAkJPSAmbWFpbl9jbGssCi0JLnBtY19tYXNrCT0gMSA8PCAyLAkvKiBpbiBQTUNfU1IgKi8KKwkucG1jX21hc2sJPSBBVDkxX1BNQ19MT0NLQiwJLyogaW4gUE1DX1NSICovCiAJLm1vZGUJCT0gcGxsYl9tb2RlLAogCS5pZAkJPSAzLAogCS5wcmltYXJ5CT0gMSwKQEAgLTE3Nyw4ICsxNzYsNyBAQAogICovCiBzdGF0aWMgc3RydWN0IGNsayBtY2sgPSB7CiAJLm5hbWUJCT0gIm1jayIsCi0JLnBtY19tYXNrCT0gMSA8PCAzLAkvKiBpbiBQTUNfU1IgKi8KLQkudXNlcnMJCT0gMSwJCS8qIChtdXN0IGJlKSBhbHdheXMgb24gKi8KKwkucG1jX21hc2sJPSBBVDkxX1BNQ19NQ0tSRFksCS8qIGluIFBNQ19TUiAqLwogfTsKIAogc3RhdGljIHZvaWQgcG1jX3BlcmlwaF9tb2RlKHN0cnVjdCBjbGsgKmNsaywgaW50IGlzX29uKQpAQCAtMjQ5LDYgKzI0NywzMCBAQAogCS5wbWNfbWFzawk9IDEgPDwgQVQ5MV9JRF9TUEksCiAJLm1vZGUJCT0gcG1jX3BlcmlwaF9tb2RlLAogfTsKK3N0YXRpYyBzdHJ1Y3QgY2xrIHBpb0FfY2xrID0geworCS5uYW1lCQk9ICJwaW9BX2NsayIsCisJLnBhcmVudAkJPSAmbWNrLAorCS5wbWNfbWFzawk9IDEgPDwgQVQ5MV9JRF9QSU9BLAorCS5tb2RlCQk9IHBtY19wZXJpcGhfbW9kZSwKK307CitzdGF0aWMgc3RydWN0IGNsayBwaW9CX2NsayA9IHsKKwkubmFtZQkJPSAicGlvQl9jbGsiLAorCS5wYXJlbnQJCT0gJm1jaywKKwkucG1jX21hc2sJPSAxIDw8IEFUOTFfSURfUElPQiwKKwkubW9kZQkJPSBwbWNfcGVyaXBoX21vZGUsCit9Oworc3RhdGljIHN0cnVjdCBjbGsgcGlvQ19jbGsgPSB7CisJLm5hbWUJCT0gInBpb0NfY2xrIiwKKwkucGFyZW50CQk9ICZtY2ssCisJLnBtY19tYXNrCT0gMSA8PCBBVDkxX0lEX1BJT0MsCisJLm1vZGUJCT0gcG1jX3BlcmlwaF9tb2RlLAorfTsKK3N0YXRpYyBzdHJ1Y3QgY2xrIHBpb0RfY2xrID0geworCS5uYW1lCQk9ICJwaW9EX2NsayIsCisJLnBhcmVudAkJPSAmbWNrLAorCS5wbWNfbWFzawk9IDEgPDwgQVQ5MV9JRF9QSU9ELAorCS5tb2RlCQk9IHBtY19wZXJpcGhfbW9kZSwKK307CiAKIHN0YXRpYyBzdHJ1Y3QgY2xrICpjb25zdCBjbG9ja19saXN0W10gPSB7CiAJLyogZm91ciBwcmltYXJ5IGNsb2NrcyAtLSBNVVNUIEJFIEZJUlNUISAqLwpAQCAtMjc5LDIxICszMDEsNDYgQEAKIAkmdWRjX2NsaywKIAkmdHdpX2NsaywKIAkmc3BpX2NsaywKKwkmcGlvQV9jbGssCisJJnBpb0JfY2xrLAorCSZwaW9DX2NsaywKKwkmcGlvRF9jbGssCiAJLy8gc3NjMC4uc3NjMgogCS8vIHRjMC4udGM1CisJLy8gaXJxMC4uaXJxNgogCSZvaGNpX2NsaywKIAkmZXRoZXJfY2xrLAogfTsKIAogCisvKgorICogQXNzb2NpYXRlIGEgcGFydGljdWxhciBjbG9jayB3aXRoIGEgZnVuY3Rpb24gKGVnLCAidWFydCIpIGFuZCBkZXZpY2UuCisgKiBUaGUgZHJpdmVycyBjYW4gdGhlbiByZXF1ZXN0IHRoZSBzYW1lICdmdW5jdGlvbicgd2l0aCBzZXZlcmFsIGRpZmZlcmVudAorICogZGV2aWNlcyBhbmQgbm90IGNhcmUgYWJvdXQgd2hpY2ggY2xvY2sgbmFtZSB0byB1c2UuCisgKi8KK3ZvaWQgX19pbml0IGF0OTFfY2xvY2tfYXNzb2NpYXRlKGNvbnN0IGNoYXIgKmlkLCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZ1bmMpCit7CisJc3RydWN0IGNsayAqY2xrID0gY2xrX2dldChOVUxMLCBpZCk7CisKKwlpZiAoIWRldiB8fCAhY2xrIHx8ICFJU19FUlIoY2xrX2dldChkZXYsIGZ1bmMpKSkKKwkJcmV0dXJuOworCisJY2xrLT5mdW5jdGlvbiA9IGZ1bmM7CisJY2xrLT5kZXYgPSBkZXY7Cit9CisKIC8qIGNsb2NrcyBhcmUgYWxsIHN0YXRpYyBmb3Igbm93OyBubyByZWZjb3VudGluZyBuZWNlc3NhcnkgKi8KIHN0cnVjdCBjbGsgKmNsa19nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICppZCkKIHsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNsb2NrX2xpc3QpOyBpKyspIHsKLQkJaWYgKHN0cmNtcChpZCwgY2xvY2tfbGlzdFtpXS0+bmFtZSkgPT0gMCkKLQkJCXJldHVybiBjbG9ja19saXN0W2ldOworCQlzdHJ1Y3QgY2xrICpjbGsgPSBjbG9ja19saXN0W2ldOworCisJCWlmIChzdHJjbXAoaWQsIGNsay0+bmFtZSkgPT0gMCkKKwkJCXJldHVybiBjbGs7CisJCWlmIChjbGstPmZ1bmN0aW9uICYmIChkZXYgPT0gY2xrLT5kZXYpICYmIHN0cmNtcChpZCwgY2xrLT5mdW5jdGlvbikgPT0gMCkKKwkJCXJldHVybiBjbGs7CiAJfQogCiAJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CkBAIC01OTMsNiArNjQwLDMwIEBACiAJcmV0dXJuIDA7CiB9CiAKKworLyoKKyAqIFNldmVyYWwgdW51c2VkIGNsb2NrcyBtYXkgYmUgYWN0aXZlLiAgVHVybiB0aGVtIG9mZi4KKyAqLworc3RhdGljIHZvaWQgYXQ5MV9wZXJpcGhjbGtfcmVzZXQodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHJlZzsKKwlpbnQgaTsKKworCXJlZyA9IGF0OTFfc3lzX3JlYWQoQVQ5MV9QTUNfUENTUik7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbG9ja19saXN0KTsgaSsrKSB7CisJCXN0cnVjdCBjbGsJKmNsayA9IGNsb2NrX2xpc3RbaV07CisKKwkJaWYgKGNsay0+bW9kZSAhPSBwbWNfcGVyaXBoX21vZGUpCisJCQljb250aW51ZTsKKworCQlpZiAoY2xrLT51c2VycyA+IDApCisJCQlyZWcgJj0gfmNsay0+cG1jX21hc2s7CisJfQorCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENEUiwgcmVnKTsKK30KKwogaW50IF9faW5pdCBhdDkxX2Nsb2NrX2luaXQodW5zaWduZWQgbG9uZyBtYWluX2Nsb2NrKQogewogCXVuc2lnbmVkIHRtcCwgZnJlcSwgbWNrcjsKQEAgLTYyNiw3ICs2OTcsNiBAQAogCSAqLwogCWF0OTFfcGxsYl91c2JfaW5pdCA9IGF0OTFfcGxsX2NhbGMobWFpbl9jbG9jaywgNDgwMDAwMDAgKiAyKSB8IEFUOTFfUE1DX1VTQjk2TTsKIAlwbGxiLnJhdGVfaHogPSBhdDkxX3BsbF9yYXRlKCZwbGxiLCBtYWluX2Nsb2NrLCBhdDkxX3BsbGJfdXNiX2luaXQpOwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRFIsICgxIDw8IEFUOTFfSURfVUhQKSB8ICgxIDw8IEFUOTFfSURfVURQKSk7CiAJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfU0NEUiwgQVQ5MV9QTUNfVUhQIHwgQVQ5MV9QTUNfVURQKTsKIAlhdDkxX3N5c193cml0ZShBVDkxX0NLR1JfUExMQlIsIDApOwogCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1NDRVIsIEFUOTFfUE1DX01DS1VEUCk7CkBAIC02NDAsMTkgKzcxMCwxOCBAQAogCSAqLwogCW1ja3IgPSBhdDkxX3N5c19yZWFkKEFUOTFfUE1DX01DS1IpOwogCW1jay5wYXJlbnQgPSBjbG9ja19saXN0W21ja3IgJiBBVDkxX1BNQ19DU1NdOwotCW1jay5wYXJlbnQtPnVzZXJzKys7CiAJZnJlcSA9IG1jay5wYXJlbnQtPnJhdGVfaHo7CiAJZnJlcSAvPSAoMSA8PCAoKG1ja3IgPj4gMikgJiAzKSk7CQkvKiBwcmVzY2FsZSAqLwogCW1jay5yYXRlX2h6ID0gZnJlcSAvICgxICsgKChtY2tyID4+IDgpICYgMykpOwkvKiBtZGl2ICovCiAKKwkvKiBNQ0sgYW5kIENQVSBjbG9jayBhcmUgImFsd2F5cyBvbiIgKi8KKwljbGtfZW5hYmxlKCZtY2spOworCiAJcHJpbnRrKCJDbG9ja3M6IENQVSAldSBNSHosIG1hc3RlciAldSBNSHosIG1haW4gJXUuJTAzdSBNSHpcbiIsCiAJCWZyZXEgLyAxMDAwMDAwLCAodW5zaWduZWQpIG1jay5yYXRlX2h6IC8gMTAwMDAwMCwKIAkJKHVuc2lnbmVkKSBtYWluX2Nsb2NrIC8gMTAwMDAwMCwKIAkJKCh1bnNpZ25lZCkgbWFpbl9jbG9jayAlIDEwMDAwMDApIC8gMTAwMCk7CiAKLQkvKiBGSVhNRSBnZXQgcmlkIG9mIG1hc3Rlcl9jbG9jayBnbG9iYWwgKi8KLQlhdDkxX21hc3Rlcl9jbG9jayA9IG1jay5yYXRlX2h6OwotCiAjaWZkZWYgQ09ORklHX0FUOTFfUFJPR1JBTU1BQkxFX0NMT0NLUwogCS8qIGVzdGFibGlzaCBQQ0swLi5QQ0szIHBhcmVudGFnZSAqLwogCWZvciAodG1wID0gMDsgdG1wIDwgQVJSQVlfU0laRShjbG9ja19saXN0KTsgdG1wKyspIHsKQEAgLTY2MywxOSArNzMyLDI4IEBACiAJCQljb250aW51ZTsKIAogCQlwY2tyID0gYXQ5MV9zeXNfcmVhZChBVDkxX1BNQ19QQ0tSKGNsay0+aWQpKTsKLQkJcGFyZW50ID0gY2xvY2tfbGlzdFtwY2tyICYgM107CisJCXBhcmVudCA9IGNsb2NrX2xpc3RbcGNrciAmIEFUOTFfUE1DX0NTU107CiAJCWNsay0+cGFyZW50ID0gcGFyZW50OwogCQljbGstPnJhdGVfaHogPSBwYXJlbnQtPnJhdGVfaHogLyAoMSA8PCAoKHBja3IgPj4gMikgJiAzKSk7CisKKwkJaWYgKGNsay0+dXNlcnMgPT0gMCkgeworCQkJLyogbm90IGJlaW5nIHVzZWQsIHNvIHN3aXRjaCBpdCBvZmYgKi8KKwkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1NDRFIsIGNsay0+cG1jX21hc2spOworCQl9CiAJfQogI2Vsc2UKLQkvKiBkaXNhYmxlIHVudXNlZCBjbG9ja3MgKi8KKwkvKiBkaXNhYmxlIGFsbCBwcm9ncmFtbWFibGUgY2xvY2tzICovCiAJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfU0NEUiwgQVQ5MV9QTUNfUENLMCB8IEFUOTFfUE1DX1BDSzEgfCBBVDkxX1BNQ19QQ0syIHwgQVQ5MV9QTUNfUENLMyk7Ci0jZW5kaWYJLyogQ09ORklHX0FUOTFfUFJPR1JBTU1BQkxFX0NMT0NLUyAqLworI2VuZGlmCiAKLQkvKiBGSVhNRSBzZXZlcmFsIHVudXNlZCBjbG9ja3MgbWF5IHN0aWxsIGJlIGFjdGl2ZS4uLiAgcHJvdmlkZQotCSAqIGEgQ09ORklHIG9wdGlvbiB0byB0dXJuIG9mZiBhbGwgdW51c2VkIGNsb2NrcyBhdCBzb21lIHBvaW50Ci0JICogYmVmb3JlIGRyaXZlciBpbml0IHN0YXJ0cy4KLQkgKi8KKwkvKiBlbmFibGUgdGhlIFBJTyBjbG9ja3MgKi8KKwljbGtfZW5hYmxlKCZwaW9BX2Nsayk7CisJY2xrX2VuYWJsZSgmcGlvQl9jbGspOworCWNsa19lbmFibGUoJnBpb0NfY2xrKTsKKwljbGtfZW5hYmxlKCZwaW9EX2Nsayk7CisKKwkvKiBkaXNhYmxlIGFsbCBvdGhlciB1bnVzZWQgcGVyaXBoZXJhbCBjbG9ja3MgKi8KKwlhdDkxX3BlcmlwaGNsa19yZXNldCgpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvY29tbW9uLmMgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvY29tbW9uLmMKaW5kZXggMzg0OGZkMi4uZTgzNmY4NSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2NvbW1vbi5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9jb21tb24uYwpAQCAtMTYsNyArMTYsOCBAQAogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KICNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KIAotI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSAiZ2VuZXJpYy5oIgogCiBzdGF0aWMgc3RydWN0IG1hcF9kZXNjIGF0OTFybTkyMDBfaW9fZGVzY1tdIF9faW5pdGRhdGEgPSB7CiAJewpAQCAtOTQsNiArOTUsMTEgQEAKIAkJLnBmbgkJPSBfX3BoeXNfdG9fcGZuKEFUOTFfQkFTRV9UQ0IwKSwKIAkJLmxlbmd0aAkJPSBTWl8xNkssCiAJCS50eXBlCQk9IE1UX0RFVklDRSwKKwl9LCB7CisJCS52aXJ0dWFsCT0gQVQ5MV9TUkFNX1ZJUlRfQkFTRSwKKwkJLnBmbgkJPSBfX3BoeXNfdG9fcGZuKEFUOTFfU1JBTV9CQVNFKSwKKwkJLmxlbmd0aAkJPSBBVDkxX1NSQU1fU0laRSwKKwkJLnR5cGUJCT0gTVRfREVWSUNFLAogCX0sCiB9OwogCkBAIC0xMDIsMTQgKzEwOCwzIEBACiAJaW90YWJsZV9pbml0KGF0OTFybTkyMDBfaW9fZGVzYywgQVJSQVlfU0laRShhdDkxcm05MjAwX2lvX2Rlc2MpKTsKIH0KIAotCi11bnNpZ25lZCBsb25nIGF0OTFfbWFzdGVyX2Nsb2NrOwotCi1FWFBPUlRfU1lNQk9MKGF0OTFfbWFzdGVyX2Nsb2NrKTsKLQotCi1pbnQgYXQ5MV9zZXJpYWxfbWFwW0FUOTFfTlJfVUFSVF07Ci1pbnQgYXQ5MV9jb25zb2xlX3BvcnQ7Ci0KLUVYUE9SVF9TWU1CT0woYXQ5MV9zZXJpYWxfbWFwKTsKLUVYUE9SVF9TWU1CT0woYXQ5MV9jb25zb2xlX3BvcnQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2RldmljZXMuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9kZXZpY2VzLmMKaW5kZXggYmZlNDdiZC4uMWNmODVkMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2RldmljZXMuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvZGV2aWNlcy5jCkBAIC0xNiw5ICsxNiwxNSBAQAogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9waW8uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CiAKKyNpbmNsdWRlICJnZW5lcmljLmgiCisKKyNkZWZpbmUgU1pfNTEyCTB4MDAwMDAyMDAKKyNkZWZpbmUgU1pfMjU2CTB4MDAwMDAxMDAKKyNkZWZpbmUgU1pfMTYJMHgwMDAwMDAxMAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogIFVTQiBIb3N0CkBAIC0yOCw3ICszNCw3IEBACiBzdGF0aWMgdTY0IG9oY2lfZG1hbWFzayA9IDB4ZmZmZmZmZmZVTDsKIHN0YXRpYyBzdHJ1Y3QgYXQ5MV91c2JoX2RhdGEgdXNiaF9kYXRhOwogCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIGF0OTFfdXNiaF9yZXNvdXJjZVtdID0geworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBhdDkxX3VzYmhfcmVzb3VyY2VzW10gPSB7CiAJWzBdID0gewogCQkuc3RhcnQJPSBBVDkxX1VIUF9CQVNFLAogCQkuZW5kCT0gQVQ5MV9VSFBfQkFTRSArIFNaXzFNIC0gMSwKQEAgLTQyLDE1ICs0OCwxNSBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgYXQ5MXJtOTIwMF91c2JoX2RldmljZSA9IHsKLQkubmFtZQkJPSAiYXQ5MXJtOTIwMC1vaGNpIiwKKwkubmFtZQkJPSAiYXQ5MV9vaGNpIiwKIAkuaWQJCT0gLTEsCiAJLmRldgkJPSB7CiAJCQkJLmRtYV9tYXNrCQk9ICZvaGNpX2RtYW1hc2ssCiAJCQkJLmNvaGVyZW50X2RtYV9tYXNrCT0gMHhmZmZmZmZmZiwKIAkJCQkucGxhdGZvcm1fZGF0YQkJPSAmdXNiaF9kYXRhLAogCX0sCi0JLnJlc291cmNlCT0gYXQ5MV91c2JoX3Jlc291cmNlLAotCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShhdDkxX3VzYmhfcmVzb3VyY2UpLAorCS5yZXNvdXJjZQk9IGF0OTFfdXNiaF9yZXNvdXJjZXMsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKGF0OTFfdXNiaF9yZXNvdXJjZXMpLAogfTsKIAogdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX3VzYmgoc3RydWN0IGF0OTFfdXNiaF9kYXRhICpkYXRhKQpAQCAtNzQsMTEgKzgwLDE2IEBACiBzdGF0aWMgc3RydWN0IGF0OTFfdWRjX2RhdGEgdWRjX2RhdGE7CiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYXQ5MV91ZGNfcmVzb3VyY2VzW10gPSB7Ci0JeworCVswXSA9IHsKIAkJLnN0YXJ0CT0gQVQ5MV9CQVNFX1VEUCwKIAkJLmVuZAk9IEFUOTFfQkFTRV9VRFAgKyBTWl8xNksgLSAxLAogCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKLQl9CisJfSwKKwlbMV0gPSB7CisJCS5zdGFydAk9IEFUOTFfSURfVURQLAorCQkuZW5kCT0gQVQ5MV9JRF9VRFAsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCiB9OwogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhdDkxcm05MjAwX3VkY19kZXZpY2UgPSB7CkBAIC0xMDAsMTAgKzExMSw4IEBACiAJCWF0OTFfc2V0X2dwaW9faW5wdXQoZGF0YS0+dmJ1c19waW4sIDApOwogCQlhdDkxX3NldF9kZWdsaXRjaChkYXRhLT52YnVzX3BpbiwgMSk7CiAJfQotCWlmIChkYXRhLT5wdWxsdXBfcGluKSB7CisJaWYgKGRhdGEtPnB1bGx1cF9waW4pCiAJCWF0OTFfc2V0X2dwaW9fb3V0cHV0KGRhdGEtPnB1bGx1cF9waW4sIDApOwotCQlhdDkxX3NldF9tdWx0aV9kcml2ZShkYXRhLT5wdWxsdXBfcGluLCAxKTsKLQl9CiAKIAl1ZGNfZGF0YSA9ICpkYXRhOwogCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmYXQ5MXJtOTIwMF91ZGNfZGV2aWNlKTsKQEAgLTE5Nyw3ICsyMDYsNyBAQAogc3RhdGljIHN0cnVjdCByZXNvdXJjZSBhdDkxX2NmX3Jlc291cmNlc1tdID0gewogCVswXSA9IHsKIAkJLnN0YXJ0CT0gQVQ5MV9DRl9CQVNFLAotCQkvKiB0aWVzIHVwIENTNCwgQ1M1LCBhbmQgQ1M2ICovCisJCS8qIHRpZXMgdXAgQ1M0LCBDUzUgYW5kIENTNiAqLwogCQkuZW5kCT0gQVQ5MV9DRl9CQVNFICsgKDB4MzAwMDAwMDAgLSAxKSwKIAkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0gfCBJT1JFU09VUkNFX01FTV84QU5EMTZCSVQsCiAJfSwKQEAgLTIzMSw2ICsyNDAsMTIgQEAKIAkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoZGF0YS0+dmNjX3BpbiwgMCk7CiAJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoZGF0YS0+cnN0X3BpbiwgMCk7CiAKKwkvKiBmb3JjZSBwb3dlcm9uIGRlZmF1bHRzIGZvciB0aGVzZSBwaW5zIC4uLiAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BDOSwgMCk7CS8qIEEyNS9DRlJOVyAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BDMTAsIDApOwkvKiBOQ1M0L0NGQ1MgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQzExLCAwKTsJLyogTkNTNS9DRkNFMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BDMTIsIDApOwkvKiBOQ1M2L0NGQ0UyICovCisKIAljZl9kYXRhID0gKmRhdGE7CiAJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZhdDkxcm05MjAwX2NmX2RldmljZSk7CiB9CkBAIC0zMTksNiArMzM0LDcgQEAKIHZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9tbWMoc3RydWN0IGF0OTFfbW1jX2RhdGEgKmRhdGEpIHt9CiAjZW5kaWYKIAorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogIE5BTkQgLyBTbWFydE1lZGlhCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNDAwLDIyICs0MTYsMTEwIEBACiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBTUEkKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiBkZWZpbmVkKENPTkZJR19TUElfQVQ5MSkgfHwgZGVmaW5lZChDT05GSUdfU1BJX0FUOTFfTU9EVUxFKSB8fCBkZWZpbmVkKENPTkZJR19BVDkxX1NQSSkgfHwgZGVmaW5lZChDT05GSUdfQVQ5MV9TUElfTU9EVUxFKQorc3RhdGljIHU2NCBzcGlfZG1hbWFzayA9IDB4ZmZmZmZmZmZVTDsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBhdDkxX3NwaV9yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IEFUOTFfQkFTRV9TUEksCisJCS5lbmQJPSBBVDkxX0JBU0VfU1BJICsgU1pfMTZLIC0gMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMV0gPSB7CisJCS5zdGFydAk9IEFUOTFfSURfU1BJLAorCQkuZW5kCT0gQVQ5MV9JRF9TUEksCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhdDkxcm05MjAwX3NwaV9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImF0OTFfc3BpIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLmRtYV9tYXNrCQk9ICZzcGlfZG1hbWFzaywKKwkJLmNvaGVyZW50X2RtYV9tYXNrCT0gMHhmZmZmZmZmZiwKKwl9LAorCS5yZXNvdXJjZQk9IGF0OTFfc3BpX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUoYXQ5MV9zcGlfcmVzb3VyY2VzKSwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBhdDkxX3NwaV9zdGFuZGFyZF9jc1s0XSA9IHsgQVQ5MV9QSU5fUEEzLCBBVDkxX1BJTl9QQTQsIEFUOTFfUElOX1BBNSwgQVQ5MV9QSU5fUEE2IH07CisKK3ZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9zcGkoc3RydWN0IHNwaV9ib2FyZF9pbmZvICpkZXZpY2VzLCBpbnQgbnJfZGV2aWNlcykKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBsb25nIGNzX3BpbjsKKworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMCwgMCk7CS8qIE1JU08gKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTEsIDApOwkvKiBNT1NJICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEEyLCAwKTsJLyogU1BDSyAqLworCisJLyogRW5hYmxlIFNQSSBjaGlwLXNlbGVjdHMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbnJfZGV2aWNlczsgaSsrKSB7CisJCWlmIChkZXZpY2VzW2ldLmNvbnRyb2xsZXJfZGF0YSkKKwkJCWNzX3BpbiA9ICh1bnNpZ25lZCBsb25nKSBkZXZpY2VzW2ldLmNvbnRyb2xsZXJfZGF0YTsKKwkJZWxzZQorCQkJY3NfcGluID0gYXQ5MV9zcGlfc3RhbmRhcmRfY3NbZGV2aWNlc1tpXS5jaGlwX3NlbGVjdF07CisKKyNpZmRlZiBDT05GSUdfU1BJX0FUOTFfTUFOVUFMX0NTCisJCWF0OTFfc2V0X2dwaW9fb3V0cHV0KGNzX3BpbiwgMSk7CisjZWxzZQorCQlhdDkxX3NldF9BX3BlcmlwaChjc19waW4sIDApOworI2VuZGlmCisKKwkJLyogcGFzcyBjaGlwLXNlbGVjdCBwaW4gdG8gZHJpdmVyICovCisJCWRldmljZXNbaV0uY29udHJvbGxlcl9kYXRhID0gKHZvaWQgKikgY3NfcGluOworCX0KKworCXNwaV9yZWdpc3Rlcl9ib2FyZF9pbmZvKGRldmljZXMsIG5yX2RldmljZXMpOworCWF0OTFfY2xvY2tfYXNzb2NpYXRlKCJzcGkwX2NsayIsICZhdDkxcm05MjAwX3NwaV9kZXZpY2UuZGV2LCAic3BpIik7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZhdDkxcm05MjAwX3NwaV9kZXZpY2UpOworfQorI2Vsc2UKK3ZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9zcGkoc3RydWN0IHNwaV9ib2FyZF9pbmZvICpkZXZpY2VzLCBpbnQgbnJfZGV2aWNlcykge30KKyNlbmRpZgorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiAgUlRDCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jaWYgZGVmaW5lZChDT05GSUdfQVQ5MV9SVEMpIHx8IGRlZmluZWQoQ09ORklHX0FUOTFfUlRDX01PRFVMRSkKKyNpZiBkZWZpbmVkKENPTkZJR19SVENfRFJWX0FUOTEpIHx8IGRlZmluZWQoQ09ORklHX1JUQ19EUlZfQVQ5MV9NT0RVTEUpCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhdDkxcm05MjAwX3J0Y19kZXZpY2UgPSB7CiAJLm5hbWUJCT0gImF0OTFfcnRjIiwKIAkuaWQJCT0gLTEsCiAJLm51bV9yZXNvdXJjZXMJPSAwLAogfTsKIAotdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX3J0Yyh2b2lkKQorc3RhdGljIHZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9ydGModm9pZCkKIHsKIAlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmF0OTFybTkyMDBfcnRjX2RldmljZSk7CiB9CiAjZWxzZQotdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX3J0Yyh2b2lkKSB7fQorc3RhdGljIHZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9ydGModm9pZCkge30KKyNlbmRpZgorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAgV2F0Y2hkb2cKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiBkZWZpbmVkKENPTkZJR19BVDkxX1dBVENIRE9HKSB8fCBkZWZpbmVkKENPTkZJR19BVDkxX1dBVENIRE9HX01PRFVMRSkKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGF0OTFybTkyMDBfd2R0X2RldmljZSA9IHsKKwkubmFtZQkJPSAiYXQ5MV93ZHQiLAorCS5pZAkJPSAtMSwKKwkubnVtX3Jlc291cmNlcwk9IDAsCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX3dhdGNoZG9nKHZvaWQpCit7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZhdDkxcm05MjAwX3dkdF9kZXZpY2UpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkIF9faW5pdCBhdDkxX2FkZF9kZXZpY2Vfd2F0Y2hkb2codm9pZCkge30KICNlbmRpZgogCiAKQEAgLTQyOSwxMyArNTMzLDI4MSBAQAogCiB2b2lkIF9faW5pdCBhdDkxX2luaXRfbGVkcyh1OCBjcHVfbGVkLCB1OCB0aW1lcl9sZWQpCiB7Ci0JYXQ5MV9sZWRzX2NwdSAgID0gY3B1X2xlZDsKLQlhdDkxX2xlZHNfdGltZXIgPSB0aW1lcl9sZWQ7CisJYXQ5MV9sZWRzX2NwdQk9IGNwdV9sZWQ7CisJYXQ5MV9sZWRzX3RpbWVyCT0gdGltZXJfbGVkOwogfQotCiAjZWxzZQogdm9pZCBfX2luaXQgYXQ5MV9pbml0X2xlZHModTggY3B1X2xlZCwgdTggdGltZXJfbGVkKSB7fQogI2VuZGlmCiAKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICBVQVJUCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgZGVmaW5lZChDT05GSUdfU0VSSUFMX0FUOTEpCitzdGF0aWMgc3RydWN0IHJlc291cmNlIGRiZ3VfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBBVDkxX1ZBX0JBU0VfU1lTICsgQVQ5MV9EQkdVLAorCQkuZW5kCT0gQVQ5MV9WQV9CQVNFX1NZUyArIEFUOTFfREJHVSArIFNaXzUxMiAtIDEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSBBVDkxX0lEX1NZUywKKwkJLmVuZAk9IEFUOTFfSURfU1lTLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX3VhcnRfZGF0YSBkYmd1X2RhdGEgPSB7CisJLnVzZV9kbWFfdHgJPSAwLAorCS51c2VfZG1hX3J4CT0gMCwJCS8qIERCR1Ugbm90IGNhcGFibGUgb2YgcmVjZWl2ZSBETUEgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGF0OTFybTkyMDBfZGJndV9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImF0OTFfdXNhcnQiLAorCS5pZAkJPSAwLAorCS5kZXYJCT0geworCQkJCS5wbGF0Zm9ybV9kYXRhCT0gJmRiZ3VfZGF0YSwKKwkJCQkuY29oZXJlbnRfZG1hX21hc2sgPSAweGZmZmZmZmZmLAorCX0sCisJLnJlc291cmNlCT0gZGJndV9yZXNvdXJjZXMsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKGRiZ3VfcmVzb3VyY2VzKSwKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVfZGJndV9waW5zKHZvaWQpCit7CisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEEzMCwgMCk7CQkvKiBEUlhEICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEEzMSwgMSk7CQkvKiBEVFhEICovCit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgdWFydDBfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBBVDkxX0JBU0VfVVMwLAorCQkuZW5kCT0gQVQ5MV9CQVNFX1VTMCArIFNaXzE2SyAtIDEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSBBVDkxX0lEX1VTMCwKKwkJLmVuZAk9IEFUOTFfSURfVVMwLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBhdDkxX3VhcnRfZGF0YSB1YXJ0MF9kYXRhID0geworCS51c2VfZG1hX3R4CT0gMSwKKwkudXNlX2RtYV9yeAk9IDEsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhdDkxcm05MjAwX3VhcnQwX2RldmljZSA9IHsKKwkubmFtZQkJPSAiYXQ5MV91c2FydCIsCisJLmlkCQk9IDEsCisJLmRldgkJPSB7CisJCQkJLnBsYXRmb3JtX2RhdGEJPSAmdWFydDBfZGF0YSwKKwkJCQkuY29oZXJlbnRfZG1hX21hc2sgPSAweGZmZmZmZmZmLAorCX0sCisJLnJlc291cmNlCT0gdWFydDBfcmVzb3VyY2VzLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRSh1YXJ0MF9yZXNvdXJjZXMpLAorfTsKKworc3RhdGljIGlubGluZSB2b2lkIGNvbmZpZ3VyZV91c2FydDBfcGlucyh2b2lkKQoreworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMTcsIDEpOwkJLyogVFhEMCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMTgsIDApOwkJLyogUlhEMCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMjAsIDApOwkJLyogQ1RTMCAqLworCisJLyoKKwkgKiBBVDkxUk05MjAwIEVycmF0YSAjMzkgLSBSVFMwIGlzIG5vdCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBQQTIxLgorCSAqICBXZSBuZWVkIHRvIGRyaXZlIHRoZSBwaW4gbWFudWFsbHkuICBEZWZhdWx0IGlzIG9mZiAoUlRTIGlzIGFjdGl2ZSBsb3cpLgorCSAqLworCWF0OTFfc2V0X2dwaW9fb3V0cHV0KEFUOTFfUElOX1BBMjEsIDEpOworfQorCitzdGF0aWMgc3RydWN0IHJlc291cmNlIHVhcnQxX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0CT0gQVQ5MV9CQVNFX1VTMSwKKwkJLmVuZAk9IEFUOTFfQkFTRV9VUzEgKyBTWl8xNksgLSAxLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0CT0gQVQ5MV9JRF9VUzEsCisJCS5lbmQJPSBBVDkxX0lEX1VTMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2RhdGEgdWFydDFfZGF0YSA9IHsKKwkudXNlX2RtYV90eAk9IDEsCisJLnVzZV9kbWFfcngJPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgYXQ5MXJtOTIwMF91YXJ0MV9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImF0OTFfdXNhcnQiLAorCS5pZAkJPSAyLAorCS5kZXYJCT0geworCQkJCS5wbGF0Zm9ybV9kYXRhCT0gJnVhcnQxX2RhdGEsCisJCQkJLmNvaGVyZW50X2RtYV9tYXNrID0gMHhmZmZmZmZmZiwKKwl9LAorCS5yZXNvdXJjZQk9IHVhcnQxX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUodWFydDFfcmVzb3VyY2VzKSwKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVfdXNhcnQxX3BpbnModm9pZCkKK3sKKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjE4LCAwKTsJCS8qIFJJMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMTksIDApOwkJLyogRFRSMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjAsIDEpOwkJLyogVFhEMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjEsIDApOwkJLyogUlhEMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjMsIDApOwkJLyogRENEMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjQsIDApOwkJLyogQ1RTMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjUsIDApOwkJLyogRFNSMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMjYsIDApOwkJLyogUlRTMSAqLworfQorCitzdGF0aWMgc3RydWN0IHJlc291cmNlIHVhcnQyX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0CT0gQVQ5MV9CQVNFX1VTMiwKKwkJLmVuZAk9IEFUOTFfQkFTRV9VUzIgKyBTWl8xNksgLSAxLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0CT0gQVQ5MV9JRF9VUzIsCisJCS5lbmQJPSBBVDkxX0lEX1VTMiwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X2RhdGEgdWFydDJfZGF0YSA9IHsKKwkudXNlX2RtYV90eAk9IDEsCisJLnVzZV9kbWFfcngJPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgYXQ5MXJtOTIwMF91YXJ0Ml9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImF0OTFfdXNhcnQiLAorCS5pZAkJPSAzLAorCS5kZXYJCT0geworCQkJCS5wbGF0Zm9ybV9kYXRhCT0gJnVhcnQyX2RhdGEsCisJCQkJLmNvaGVyZW50X2RtYV9tYXNrID0gMHhmZmZmZmZmZiwKKwl9LAorCS5yZXNvdXJjZQk9IHVhcnQyX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUodWFydDJfcmVzb3VyY2VzKSwKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVfdXNhcnQyX3BpbnModm9pZCkKK3sKKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTIyLCAwKTsJCS8qIFJYRDIgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTIzLCAxKTsJCS8qIFRYRDIgKi8KK30KKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSB1YXJ0M19yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IEFUOTFfQkFTRV9VUzMsCisJCS5lbmQJPSBBVDkxX0JBU0VfVVMzICsgU1pfMTZLIC0gMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMV0gPSB7CisJCS5zdGFydAk9IEFUOTFfSURfVVMzLAorCQkuZW5kCT0gQVQ5MV9JRF9VUzMsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGF0OTFfdWFydF9kYXRhIHVhcnQzX2RhdGEgPSB7CisJLnVzZV9kbWFfdHgJPSAxLAorCS51c2VfZG1hX3J4CT0gMSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGF0OTFybTkyMDBfdWFydDNfZGV2aWNlID0geworCS5uYW1lCQk9ICJhdDkxX3VzYXJ0IiwKKwkuaWQJCT0gNCwKKwkuZGV2CQk9IHsKKwkJCQkucGxhdGZvcm1fZGF0YQk9ICZ1YXJ0M19kYXRhLAorCQkJCS5jb2hlcmVudF9kbWFfbWFzayA9IDB4ZmZmZmZmZmYsCisJfSwKKwkucmVzb3VyY2UJPSB1YXJ0M19yZXNvdXJjZXMsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKHVhcnQzX3Jlc291cmNlcyksCit9OworCitzdGF0aWMgaW5saW5lIHZvaWQgY29uZmlndXJlX3VzYXJ0M19waW5zKHZvaWQpCit7CisJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEE1LCAxKTsJCS8qIFRYRDMgKi8KKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTYsIDApOwkJLyogUlhEMyAqLworfQorCitzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICphdDkxX3VhcnRzW0FUOTFfTlJfVUFSVF07CS8qIHRoZSBVQVJUcyB0byB1c2UgKi8KK3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmF0OTFfZGVmYXVsdF9jb25zb2xlX2RldmljZTsJLyogdGhlIHNlcmlhbCBjb25zb2xlIGRldmljZSAqLworCit2b2lkIF9faW5pdCBhdDkxX2luaXRfc2VyaWFsKHN0cnVjdCBhdDkxX3VhcnRfY29uZmlnICpjb25maWcpCit7CisJaW50IGk7CisKKwkvKiBGaWxsIGluIGxpc3Qgb2Ygc3VwcG9ydGVkIFVBUlRzICovCisJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+bnJfdHR5OyBpKyspIHsKKwkJc3dpdGNoIChjb25maWctPnR0eV9tYXBbaV0pIHsKKwkJCWNhc2UgMDoKKwkJCQljb25maWd1cmVfdXNhcnQwX3BpbnMoKTsKKwkJCQlhdDkxX3VhcnRzW2ldID0gJmF0OTFybTkyMDBfdWFydDBfZGV2aWNlOworCQkJCWF0OTFfY2xvY2tfYXNzb2NpYXRlKCJ1c2FydDBfY2xrIiwgJmF0OTFybTkyMDBfdWFydDBfZGV2aWNlLmRldiwgInVzYXJ0Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQkJY29uZmlndXJlX3VzYXJ0MV9waW5zKCk7CisJCQkJYXQ5MV91YXJ0c1tpXSA9ICZhdDkxcm05MjAwX3VhcnQxX2RldmljZTsKKwkJCQlhdDkxX2Nsb2NrX2Fzc29jaWF0ZSgidXNhcnQxX2NsayIsICZhdDkxcm05MjAwX3VhcnQxX2RldmljZS5kZXYsICJ1c2FydCIpOworCQkJCWJyZWFrOworCQkJY2FzZSAyOgorCQkJCWNvbmZpZ3VyZV91c2FydDJfcGlucygpOworCQkJCWF0OTFfdWFydHNbaV0gPSAmYXQ5MXJtOTIwMF91YXJ0Ml9kZXZpY2U7CisJCQkJYXQ5MV9jbG9ja19hc3NvY2lhdGUoInVzYXJ0Ml9jbGsiLCAmYXQ5MXJtOTIwMF91YXJ0Ml9kZXZpY2UuZGV2LCAidXNhcnQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMzoKKwkJCQljb25maWd1cmVfdXNhcnQzX3BpbnMoKTsKKwkJCQlhdDkxX3VhcnRzW2ldID0gJmF0OTFybTkyMDBfdWFydDNfZGV2aWNlOworCQkJCWF0OTFfY2xvY2tfYXNzb2NpYXRlKCJ1c2FydDNfY2xrIiwgJmF0OTFybTkyMDBfdWFydDNfZGV2aWNlLmRldiwgInVzYXJ0Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIDQ6CisJCQkJY29uZmlndXJlX2RiZ3VfcGlucygpOworCQkJCWF0OTFfdWFydHNbaV0gPSAmYXQ5MXJtOTIwMF9kYmd1X2RldmljZTsKKwkJCQlhdDkxX2Nsb2NrX2Fzc29jaWF0ZSgibWNrIiwgJmF0OTFybTkyMDBfZGJndV9kZXZpY2UuZGV2LCAidXNhcnQiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJY29udGludWU7CisJCX0KKwkJYXQ5MV91YXJ0c1tpXS0+aWQgPSBpOwkJLyogdXBkYXRlIElEIG51bWJlciB0byBtYXBwZWQgSUQgKi8KKwl9CisKKwkvKiBTZXQgc2VyaWFsIGNvbnNvbGUgZGV2aWNlICovCisJaWYgKGNvbmZpZy0+Y29uc29sZV90dHkgPCBBVDkxX05SX1VBUlQpCisJCWF0OTFfZGVmYXVsdF9jb25zb2xlX2RldmljZSA9IGF0OTFfdWFydHNbY29uZmlnLT5jb25zb2xlX3R0eV07CisJaWYgKCFhdDkxX2RlZmF1bHRfY29uc29sZV9kZXZpY2UpCisJCXByaW50ayhLRVJOX0lORk8gIkFUOTE6IE5vIGRlZmF1bHQgc2VyaWFsIGNvbnNvbGUgZGVmaW5lZC5cbiIpOworfQorCit2b2lkIF9faW5pdCBhdDkxX2FkZF9kZXZpY2Vfc2VyaWFsKHZvaWQpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVQ5MV9OUl9VQVJUOyBpKyspIHsKKwkJaWYgKGF0OTFfdWFydHNbaV0pCisJCQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoYXQ5MV91YXJ0c1tpXSk7CisJfQorfQorI2Vsc2UKK3ZvaWQgX19pbml0IGF0OTFfaW5pdF9zZXJpYWwoc3RydWN0IGF0OTFfdWFydF9jb25maWcgKmNvbmZpZykge30KK3ZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9zZXJpYWwodm9pZCkge30KKyNlbmRpZgorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBUaGVzZSBkZXZpY2VzIGFyZSBhbHdheXMgcHJlc2VudCBhbmQgZG9uJ3QgbmVlZCBhbnkgYm9hcmQtc3BlY2lmaWMKKyAqIHNldHVwLgorICovCitzdGF0aWMgaW50IF9faW5pdCBhdDkxX2FkZF9zdGFuZGFyZF9kZXZpY2VzKHZvaWQpCit7CisJYXQ5MV9hZGRfZGV2aWNlX3J0YygpOworCWF0OTFfYWRkX2RldmljZV93YXRjaGRvZygpOworCXJldHVybiAwOworfQorCithcmNoX2luaXRjYWxsKGF0OTFfYWRkX3N0YW5kYXJkX2RldmljZXMpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2dlbmVyaWMuaCBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9nZW5lcmljLmgKaW5kZXggOWJkNTQxZS4uZjBkOTY5ZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2dlbmVyaWMuaAorKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvZ2VuZXJpYy5oCkBAIC0xNiwzICsxNiwxMCBAQAogZXh0ZXJuIHZvaWQgX19pbml0IGF0OTFybTkyMDBfbWFwX2lvKHZvaWQpOwogCiBleHRlcm4gaW50IF9faW5pdCBhdDkxX2Nsb2NrX2luaXQodW5zaWduZWQgbG9uZyBtYWluX2Nsb2NrKTsKK3N0cnVjdCBkZXZpY2U7CitleHRlcm4gdm9pZCBfX2luaXQgYXQ5MV9jbG9ja19hc3NvY2lhdGUoY29uc3QgY2hhciAqaWQsIHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZnVuYyk7CisKKyAvKiBQb3dlciBNYW5hZ2VtZW50ICovCitleHRlcm4gdm9pZCBhdDkxX2lycV9zdXNwZW5kKHZvaWQpOworZXh0ZXJuIHZvaWQgYXQ5MV9pcnFfcmVzdW1lKHZvaWQpOworCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2dwaW8uYwppbmRleCA1YWI0NjI3Li44M2MzNDc0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9ncGlvLmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgogCiBzdGF0aWMgY29uc3QgdTMyIHBpb19jb250cm9sbGVyX29mZnNldFs0XSA9IHsKQEAgLTIxMyw2ICsyMTMsODQgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKKyNpZmRlZiBDT05GSUdfUE0KKworc3RhdGljIHUzMiB3YWtldXBzW0JHQV9HUElPX0JBTktTXTsKK3N0YXRpYyB1MzIgYmFja3Vwc1tCR0FfR1BJT19CQU5LU107CisKK3N0YXRpYyBpbnQgZ3Bpb19pcnFfc2V0X3dha2UodW5zaWduZWQgcGluLCB1bnNpZ25lZCBzdGF0ZSkKK3sKKwl1bnNpZ25lZAltYXNrID0gcGluX3RvX21hc2socGluKTsKKworCXBpbiAtPSBQSU5fQkFTRTsKKwlwaW4gLz0gMzI7CisKKwlpZiAodW5saWtlbHkocGluID49IEJHQV9HUElPX0JBTktTKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoc3RhdGUpCisJCXdha2V1cHNbcGluXSB8PSBtYXNrOworCWVsc2UKKwkJd2FrZXVwc1twaW5dICY9IH5tYXNrOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgYXQ5MV9ncGlvX3N1c3BlbmQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBCR0FfR1BJT19CQU5LUzsgaSsrKSB7CisJCXUzMiBwaW8gPSBwaW9fY29udHJvbGxlcl9vZmZzZXRbaV07CisKKwkJLyoKKwkJICogTm90ZTogZHJpdmVycyBzaG91bGQgaGF2ZSBkaXNhYmxlZCBHUElPIGludGVycnVwdHMgdGhhdAorCQkgKiBhcmVuJ3Qgc3VwcG9zZWQgdG8gYmUgd2FrZXVwIHNvdXJjZXMuCisJCSAqIEJ1dCB0aGF0IGlzIG5vdCBtdWNoIGdvb2Qgb24gQVJNLi4uLi4gIGRpc2FibGVfaXJxKCkgZG9lcworCQkgKiBub3QgdXBkYXRlIHRoZSBoYXJkd2FyZSBpbW1lZGlhdGVseSwgc28gdGhlIGhhcmR3YXJlIG1hc2sKKwkJICogKElNUikgaGFzIHRoZSB3cm9uZyB2YWx1ZSAobm90IGN1cnJlbnQsIHRvbyBtdWNoIGlzCisJCSAqIHBlcm1pdHRlZCkuCisJCSAqCisJCSAqIE91ciB3b3JrYXJvdW5kIGlzIHRvIGRpc2FibGUgYWxsIG5vbi13YWtldXAgSVJRcyAuLi4KKwkJICogd2hpY2ggaXMgZXhhY3RseSB3aGF0IGNvcnJlY3QgZHJpdmVycyBhc2tlZCBmb3IgaW4gdGhlCisJCSAqIGZpcnN0IHBsYWNlIQorCQkgKi8KKwkJYmFja3Vwc1tpXSA9IGF0OTFfc3lzX3JlYWQocGlvICsgUElPX0lNUik7CisJCWF0OTFfc3lzX3dyaXRlKHBpb19jb250cm9sbGVyX29mZnNldFtpXSArIFBJT19JRFIsIGJhY2t1cHNbaV0pOworCQlhdDkxX3N5c193cml0ZShwaW9fY29udHJvbGxlcl9vZmZzZXRbaV0gKyBQSU9fSUVSLCB3YWtldXBzW2ldKTsKKworCQlpZiAoIXdha2V1cHNbaV0pIHsKKwkJCWRpc2FibGVfaXJxX3dha2UoQVQ5MV9JRF9QSU9BICsgaSk7CisJCQlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0RSLCAxIDw8IChBVDkxX0lEX1BJT0EgKyBpKSk7CisJCX0gZWxzZSB7CisJCQllbmFibGVfaXJxX3dha2UoQVQ5MV9JRF9QSU9BICsgaSk7CisjaWZkZWYgQ09ORklHX1BNX0RFQlVHCisJCQlwcmludGsoS0VSTl9ERUJVRyAiR1BJTy0lYyBtYXkgd2FrZSBmb3IgJTA4eFxuIiwgIkFCQ0QiW2ldLCB3YWtldXBzW2ldKTsKKyNlbmRpZgorCQl9CisJfQorfQorCit2b2lkIGF0OTFfZ3Bpb19yZXN1bWUodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBCR0FfR1BJT19CQU5LUzsgaSsrKSB7CisJCWF0OTFfc3lzX3dyaXRlKHBpb19jb250cm9sbGVyX29mZnNldFtpXSArIFBJT19JRFIsIHdha2V1cHNbaV0pOworCQlhdDkxX3N5c193cml0ZShwaW9fY29udHJvbGxlcl9vZmZzZXRbaV0gKyBQSU9fSUVSLCBiYWNrdXBzW2ldKTsKKwl9CisKKwlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0VSLAorCQkJICAoMSA8PCBBVDkxX0lEX1BJT0EpCisJCQl8ICgxIDw8IEFUOTFfSURfUElPQikKKwkJCXwgKDEgPDwgQVQ5MV9JRF9QSU9DKQorCQkJfCAoMSA8PCBBVDkxX0lEX1BJT0QpKTsKK30KKworI2Vsc2UKKyNkZWZpbmUgZ3Bpb19pcnFfc2V0X3dha2UJTlVMTAorI2VuZGlmCisKIAogLyogU2V2ZXJhbCBBSUMgY29udHJvbGxlciBpcnFzIGFyZSBkaXNwYXRjaGVkIHRocm91Z2ggdGhpcyBHUElPIGhhbmRsZXIuCiAgKiBUbyB1c2UgYW55IEFUOTFfUElOXyogYXMgYW4gZXh0ZXJuYWxseSB0cmlnZ2VyZWQgSVJRLCBmaXJzdCBjYWxsCkBAIC0yNTIsNiArMzMwLDcgQEAKIAkubWFzawkJPSBncGlvX2lycV9tYXNrLAogCS51bm1hc2sJCT0gZ3Bpb19pcnFfdW5tYXNrLAogCS5zZXRfdHlwZQk9IGdwaW9faXJxX3R5cGUsCisJLnNldF93YWtlCT0gZ3Bpb19pcnFfc2V0X3dha2UsCiB9OwogCiBzdGF0aWMgdm9pZCBncGlvX2lycV9oYW5kbGVyKHVuc2lnbmVkIGlycSwgc3RydWN0IGlycWRlc2MgKmRlc2MsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQpAQCAtMjY2LDYgKzM0NSw3IEBACiAJLyogdGVtcG9yYXJpbHkgbWFzayAobGV2ZWwgc2Vuc2l0aXZlKSBwYXJlbnQgSVJRICovCiAJZGVzYy0+Y2hpcC0+YWNrKGlycSk7CiAJZm9yICg7OykgeworCQkvKiByZWFkaW5nIElTUiBhY2tzIHRoZSBwZW5kaW5nIChlZGdlIHRyaWdnZXJlZCkgR1BJTyBpbnRlcnJ1cHQgKi8KIAkJaXNyID0gX19yYXdfcmVhZGwocGlvICsgUElPX0lTUikgJiBfX3Jhd19yZWFkbChwaW8gKyBQSU9fSU1SKTsKIAkJaWYgKCFpc3IpCiAJCQlicmVhazsKQEAgLTMxNSwxNSArMzk1LDE2IEBACiAJCXNldF9pcnFfY2hpcGRhdGEoaWQsIGNvbnRyb2xsZXIpOwogCiAJCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrLCBwaW4rKykgeworCQkJLyoKKwkJCSAqIENhbiB1c2UgdGhlICJzaW1wbGUiIGFuZCBub3QgImVkZ2UiIGhhbmRsZXIgc2luY2UgaXQncworCQkJICogc2hvcnRlciwgYW5kIHRoZSBBSUMgaGFuZGxlcyBpbnRlcnVwdHMgc2FuZWx5LgorCQkJICovCiAJCQlzZXRfaXJxX2NoaXAocGluLCAmZ3Bpb19pcnFjaGlwKTsKIAkJCXNldF9pcnFfaGFuZGxlcihwaW4sIGRvX3NpbXBsZV9JUlEpOwogCQkJc2V0X2lycV9mbGFncyhwaW4sIElSUUZfVkFMSUQpOwogCQl9CiAKIAkJc2V0X2lycV9jaGFpbmVkX2hhbmRsZXIoaWQsIGdwaW9faXJxX2hhbmRsZXIpOwotCi0JCS8qIGVuYWJsZSB0aGUgUElPIHBlcmlwaGVyYWwgY2xvY2sgKi8KLQkJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENFUiwgMSA8PCBpZCk7CiAJfQogCXByX2luZm8oIkFUOTE6ICVkIGdwaW8gaXJxcyBpbiAlZCBiYW5rc1xuIiwgcGluIC0gUElOX0JBU0UsIGJhbmtzKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9pcnEuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9pcnEuYwppbmRleCBjYjYyYmM4Li43MGY0ZDdhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvaXJxLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2lycS5jCkBAIC05MiwxMCArOTIsNiBAQAogewogCXVuc2lnbmVkIGludCBzbXIsIHNyY3R5cGU7CiAKLQkvKiBjaGFuZ2UgdHJpZ2dlcmluZyBvbmx5IGZvciBGSVEgYW5kIGV4dGVybmFsIElSUTAuLklSUTYgKi8KLQlpZiAoKGlycSA8IEFUOTFfSURfSVJRMCkgJiYgKGlycSAhPSBBVDkxX0lEX0ZJUSkpCi0JCXJldHVybiAtRUlOVkFMOwotCiAJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBJUlFUX0hJR0g6CiAJCXNyY3R5cGUgPSBBVDkxX0FJQ19TUkNUWVBFX0hJR0g7CkBAIC0xMDQsOSArMTAwLDEzIEBACiAJCXNyY3R5cGUgPSBBVDkxX0FJQ19TUkNUWVBFX1JJU0lORzsKIAkJYnJlYWs7CiAJY2FzZSBJUlFUX0xPVzoKKwkJaWYgKChpcnEgPiBBVDkxX0lEX0ZJUSkgJiYgKGlycSA8IEFUOTFfSURfSVJRMCkpCS8qIG9ubHkgc3VwcG9ydGVkIG9uIGV4dGVybmFsIGludGVycnVwdHMgKi8KKwkJCXJldHVybiAtRUlOVkFMOwogCQlzcmN0eXBlID0gQVQ5MV9BSUNfU1JDVFlQRV9MT1c7CiAJCWJyZWFrOwogCWNhc2UgSVJRVF9GQUxMSU5HOgorCQlpZiAoKGlycSA+IEFUOTFfSURfRklRKSAmJiAoaXJxIDwgQVQ5MV9JRF9JUlEwKSkJLyogb25seSBzdXBwb3J0ZWQgb24gZXh0ZXJuYWwgaW50ZXJydXB0cyAqLworCQkJcmV0dXJuIC1FSU5WQUw7CiAJCXNyY3R5cGUgPSBBVDkxX0FJQ19TUkNUWVBFX0ZBTExJTkc7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC0xMTgsMTEgKzExOCw0NyBAQAogCXJldHVybiAwOwogfQogCisjaWZkZWYgQ09ORklHX1BNCisKK3N0YXRpYyB1MzIgd2FrZXVwczsKK3N0YXRpYyB1MzIgYmFja3VwczsKKworc3RhdGljIGludCBhdDkxcm05MjAwX2lycV9zZXRfd2FrZSh1bnNpZ25lZCBpcnEsIHVuc2lnbmVkIHZhbHVlKQoreworCWlmICh1bmxpa2VseShpcnEgPj0gMzIpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh2YWx1ZSkKKwkJd2FrZXVwcyB8PSAoMSA8PCBpcnEpOworCWVsc2UKKwkJd2FrZXVwcyAmPSB+KDEgPDwgaXJxKTsKKworCXJldHVybiAwOworfQorCit2b2lkIGF0OTFfaXJxX3N1c3BlbmQodm9pZCkKK3sKKwliYWNrdXBzID0gYXQ5MV9zeXNfcmVhZChBVDkxX0FJQ19JTVIpOworCWF0OTFfc3lzX3dyaXRlKEFUOTFfQUlDX0lEQ1IsIGJhY2t1cHMpOworCWF0OTFfc3lzX3dyaXRlKEFUOTFfQUlDX0lFQ1IsIHdha2V1cHMpOworfQorCit2b2lkIGF0OTFfaXJxX3Jlc3VtZSh2b2lkKQoreworCWF0OTFfc3lzX3dyaXRlKEFUOTFfQUlDX0lEQ1IsIHdha2V1cHMpOworCWF0OTFfc3lzX3dyaXRlKEFUOTFfQUlDX0lFQ1IsIGJhY2t1cHMpOworfQorCisjZWxzZQorI2RlZmluZSBhdDkxcm05MjAwX2lycV9zZXRfd2FrZQlOVUxMCisjZW5kaWYKKwogc3RhdGljIHN0cnVjdCBpcnFjaGlwIGF0OTFybTkyMDBfaXJxX2NoaXAgPSB7CiAJLmFjawkJPSBhdDkxcm05MjAwX21hc2tfaXJxLAogCS5tYXNrCQk9IGF0OTFybTkyMDBfbWFza19pcnEsCiAJLnVubWFzawkJPSBhdDkxcm05MjAwX3VubWFza19pcnEsCiAJLnNldF90eXBlCT0gYXQ5MXJtOTIwMF9pcnFfdHlwZSwKKwkuc2V0X3dha2UJPSBhdDkxcm05MjAwX2lycV9zZXRfd2FrZSwKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvcG0uYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9wbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTU0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvcG0uYwpAQCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9wbS5jCisgKiBBVDkxIFBvd2VyIE1hbmFnZW1lbnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRGF2aWQgQnJvd25lbGwKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKyNpbmNsdWRlIDxhc20vYXRvbWljLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvdGltZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CisKKyNpbmNsdWRlICJnZW5lcmljLmgiCisKKworc3RhdGljIGludCBhdDkxX3BtX3ZhbGlkX3N0YXRlKHN1c3BlbmRfc3RhdGVfdCBzdGF0ZSkKK3sKKwlzd2l0Y2ggKHN0YXRlKSB7CisJCWNhc2UgUE1fU1VTUEVORF9PTjoKKwkJY2FzZSBQTV9TVVNQRU5EX1NUQU5EQlk6CisJCWNhc2UgUE1fU1VTUEVORF9NRU06CisJCQlyZXR1cm4gMTsKKworCQlkZWZhdWx0OgorCQkJcmV0dXJuIDA7CisJfQorfQorCisKK3N0YXRpYyBzdXNwZW5kX3N0YXRlX3QgdGFyZ2V0X3N0YXRlOworCisvKgorICogQ2FsbGVkIGFmdGVyIHByb2Nlc3NlcyBhcmUgZnJvemVuLCBidXQgYmVmb3JlIHdlIHNodXRkb3duIGRldmljZXMuCisgKi8KK3N0YXRpYyBpbnQgYXQ5MV9wbV9wcmVwYXJlKHN1c3BlbmRfc3RhdGVfdCBzdGF0ZSkKK3sKKwl0YXJnZXRfc3RhdGUgPSBzdGF0ZTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFZlcmlmeSB0aGF0IGFsbCB0aGUgY2xvY2tzIGFyZSBjb3JyZWN0IGJlZm9yZSBlbnRlcmluZworICogc2xvdy1jbG9jayBtb2RlLgorICovCitzdGF0aWMgaW50IGF0OTFfcG1fdmVyaWZ5X2Nsb2Nrcyh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgc2NzcjsKKwlpbnQgaTsKKworCXNjc3IgPSBhdDkxX3N5c19yZWFkKEFUOTFfUE1DX1NDU1IpOworCisJLyogVVNCIG11c3Qgbm90IGJlIHVzaW5nIFBMTEIgKi8KKwlpZiAoKHNjc3IgJiAoQVQ5MV9QTUNfVUhQIHwgQVQ5MV9QTUNfVURQKSkgIT0gMCkgeworCQlwcl9kZWJ1ZygiQVQ5MTogUE0gLSBTdXNwZW5kLXRvLVJBTSB3aXRoIFVTQiBzdGlsbCBhY3RpdmVcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKyNpZmRlZiBDT05GSUdfQVQ5MV9QUk9HUkFNTUFCTEVfQ0xPQ0tTCisJLyogUENLMC4uUENLMyBtdXN0IGJlIGRpc2FibGVkLCBvciBjb25maWd1cmVkIHRvIHVzZSBjbGszMmsgKi8KKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCXUzMiBjc3M7CisKKwkJaWYgKChzY3NyICYgKEFUOTFfUE1DX1BDSzAgPDwgaSkpID09IDApCisJCQljb250aW51ZTsKKworCQljc3MgPSBhdDkxX3N5c19yZWFkKEFUOTFfUE1DX1BDS1IoaSkpICYgQVQ5MV9QTUNfQ1NTOworCQlpZiAoY3NzICE9IEFUOTFfUE1DX0NTU19TTE9XKSB7CisJCQlwcl9kZWJ1ZygiQVQ5MTogUE0gLSBTdXNwZW5kLXRvLVJBTSB3aXRoIFBDSyVkIHNyYyAlZFxuIiwgaSwgY3NzKTsKKwkJCXJldHVybiAwOworCQl9CisJfQorI2VuZGlmCisKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIENhbGwgdGhpcyBmcm9tIHBsYXRmb3JtIGRyaXZlciBzdXNwZW5kKCkgdG8gc2VlIGhvdyBkZWVwbHkgdG8gc3VzcGVuZC4KKyAqIEZvciBleGFtcGxlLCBzb21lIGNvbnRyb2xsZXJzIChsaWtlIE9IQ0kpIG5lZWQgb25lIG9mIHRoZSBQTEwgY2xvY2tzCisgKiBpbiBvcmRlciB0byBhY3QgYXMgYSB3YWtldXAgc291cmNlLCBhbmQgdGhvc2UgYXJlIG5vdCBhdmFpbGFibGUgd2hlbgorICogZ29pbmcgaW50byBzbG93IGNsb2NrIG1vZGUuCisgKgorICogUkVWSVNJVDogZ2VuZXJhbGl6ZSBhcyBjbGtfd2lsbF9iZV9hdmFpbGFibGUoY2xrKT8gIE90aGVyIHBsYXRmb3JtcyBoYXZlCisgKiB0aGUgdmVyeSBzYW1lIHByb2JsZW0gKGJ1dCBub3QgdXNpbmcgYXQ5MSBtYWluX2NsayksIGFuZCBpdCdkIGJlIGJldHRlcgorICogdG8gYWRkIG9uZSBnZW5lcmljIEFQSSByYXRoZXIgdGhhbiBsb3RzIG9mIHBsYXRmb3JtLXNwZWNpZmljIG9uZXMuCisgKi8KK2ludCBhdDkxX3N1c3BlbmRfZW50ZXJpbmdfc2xvd19jbG9jayh2b2lkKQoreworCXJldHVybiAodGFyZ2V0X3N0YXRlID09IFBNX1NVU1BFTkRfTUVNKTsKK30KK0VYUE9SVF9TWU1CT0woYXQ5MV9zdXNwZW5kX2VudGVyaW5nX3Nsb3dfY2xvY2spOworCisKK3N0YXRpYyB2b2lkICgqc2xvd19jbG9jaykodm9pZCk7CisKKworCitzdGF0aWMgaW50IGF0OTFfcG1fZW50ZXIoc3VzcGVuZF9zdGF0ZV90IHN0YXRlKQoreworCWF0OTFfZ3Bpb19zdXNwZW5kKCk7CisJYXQ5MV9pcnFfc3VzcGVuZCgpOworCisJcHJfZGVidWcoIkFUOTE6IFBNIC0gd2FrZSBtYXNrICUwOHgsIHBtIHN0YXRlICVkXG4iLAorCQkJLyogcmVtZW1iZXIgYWxsIHRoZSBhbHdheXMtd2FrZSBpcnFzICovCisJCQkoYXQ5MV9zeXNfcmVhZChBVDkxX1BNQ19QQ1NSKQorCQkJCQl8ICgxIDw8IEFUOTFfSURfRklRKQorCQkJCQl8ICgxIDw8IEFUOTFfSURfU1lTKQorCQkJCQl8ICgxIDw8IEFUOTFfSURfSVJRMCkKKwkJCQkJfCAoMSA8PCBBVDkxX0lEX0lSUTEpCisJCQkJCXwgKDEgPDwgQVQ5MV9JRF9JUlEyKQorCQkJCQl8ICgxIDw8IEFUOTFfSURfSVJRMykKKwkJCQkJfCAoMSA8PCBBVDkxX0lEX0lSUTQpCisJCQkJCXwgKDEgPDwgQVQ5MV9JRF9JUlE1KQorCQkJCQl8ICgxIDw8IEFUOTFfSURfSVJRNikpCisJCQkJJiBhdDkxX3N5c19yZWFkKEFUOTFfQUlDX0lNUiksCisJCQlzdGF0ZSk7CisKKwlzd2l0Y2ggKHN0YXRlKSB7CisJCS8qCisJCSAqIFN1c3BlbmQtdG8tUkFNIGlzIGxpa2UgU1RBTkRCWSBwbHVzIHNsb3cgY2xvY2sgbW9kZSwgc28KKwkJICogZHJpdmVycyBtdXN0IHN1c3BlbmQgbW9yZSBkZWVwbHk6ICBvbmx5IHRoZSBtYXN0ZXIgY2xvY2sKKwkJICogY29udHJvbGxlciBtYXkgYmUgdXNpbmcgdGhlIG1haW4gb3NjaWxsYXRvci4KKwkJICovCisJCWNhc2UgUE1fU1VTUEVORF9NRU06CisJCQkvKgorCQkJICogRW5zdXJlIHRoYXQgY2xvY2tzIGFyZSBpbiBhIHZhbGlkIHN0YXRlLgorCQkJICovCisJCQlpZiAoIWF0OTFfcG1fdmVyaWZ5X2Nsb2NrcygpKQorCQkJCWdvdG8gZXJyb3I7CisKKwkJCS8qCisJCQkgKiBFbnRlciBzbG93IGNsb2NrIG1vZGUgYnkgc3dpdGNoaW5nIG92ZXIgdG8gY2xrMzJrIGFuZAorCQkJICogdHVybmluZyBvZmYgdGhlIG1haW4gb3NjaWxsYXRvcjsgcmV2ZXJzZSBvbiB3YWtldXAuCisJCQkgKi8KKwkJCWlmIChzbG93X2Nsb2NrKSB7CisJCQkJc2xvd19jbG9jaygpOworCQkJCWJyZWFrOworCQkJfSBlbHNlIHsKKwkJCQkvKiBERVZFTE9QTUVOVCBPTkxZICovCisJCQkJcHJfaW5mbygiQVQ5MTogUE0gLSBubyBzbG93IGNsb2NrIG1vZGUgeWV0IC4uLlxuIik7CisJCQkJLyogRkFMTFRIUk9VR0ggbGVhdmluZyBtYXN0ZXIgY2xvY2sgYWxvbmUgKi8KKwkJCX0KKworCQkvKgorCQkgKiBTVEFOREJZIG1vZGUgaGFzICphbGwqIGRyaXZlcnMgc3VzcGVuZGVkOyBpZ25vcmVzIGlycXMgbm90CisJCSAqIG1hcmtlZCBhcyAnd2FrZXVwJyBldmVudCBzb3VyY2VzOyBhbmQgcmVkdWNlcyBEUkFNIHBvd2VyLgorCQkgKiBCdXQgb3RoZXJ3aXNlIGl0J3MgaWRlbnRpY2FsIHRvIFBNX1NVU1BFTkRfT046ICBjcHUgaWRsZSwgYW5kCisJCSAqIG5vdGhpbmcgZmFuY3kgZG9uZSB3aXRoIG1haW4gb3IgY3B1IGNsb2Nrcy4KKwkJICovCisJCWNhc2UgUE1fU1VTUEVORF9TVEFOREJZOgorCQkJLyoKKwkJCSAqIE5PVEU6IHRoZSBXYWl0LWZvci1JbnRlcnJ1cHQgaW5zdHJ1Y3Rpb24gbmVlZHMgdG8gYmUKKwkJCSAqIGluIGljYWNoZSBzbyB0aGUgU0RSQU0gc3RheXMgaW4gc2VsZi1yZWZyZXNoIG1vZGUgdW50aWwKKwkJCSAqIHRoZSB3YWtldXAgSVJRIG9jY3Vycy4KKwkJCSAqLworCQkJYXNtKCJiIDFmOyAuYWxpZ24gNTsgMToiKTsKKwkJCWFzbSgibWNyIHAxNSwgMCwgcjAsIGM3LCBjMTAsIDQiKTsJLyogZHJhaW4gd3JpdGUgYnVmZmVyICovCisJCQlhdDkxX3N5c193cml0ZShBVDkxX1NEUkFNQ19TUlIsIDEpOwkvKiBzZWxmLXJlZnJlc2ggbW9kZSAqLworCQkJLyogZmFsbCB0aG91Z2ggdG8gbmV4dCBzdGF0ZSAqLworCisJCWNhc2UgUE1fU1VTUEVORF9PTjoKKwkJCWFzbSgibWNyIHAxNSwgMCwgcjAsIGM3LCBjMCwgNCIpOwkvKiB3YWl0IGZvciBpbnRlcnJ1cHQgKi8KKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlwcl9kZWJ1ZygiQVQ5MTogUE0gLSBib2d1cyBzdXNwZW5kIHN0YXRlICVkXG4iLCBzdGF0ZSk7CisJCQlnb3RvIGVycm9yOworCX0KKworCXByX2RlYnVnKCJBVDkxOiBQTSAtIHdha2V1cCAlMDh4XG4iLAorCQkJYXQ5MV9zeXNfcmVhZChBVDkxX0FJQ19JUFIpICYgYXQ5MV9zeXNfcmVhZChBVDkxX0FJQ19JTVIpKTsKKworZXJyb3I6CisJdGFyZ2V0X3N0YXRlID0gUE1fU1VTUEVORF9PTjsKKwlhdDkxX2lycV9yZXN1bWUoKTsKKwlhdDkxX2dwaW9fcmVzdW1lKCk7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIHN0cnVjdCBwbV9vcHMgYXQ5MV9wbV9vcHMgPXsKKwkucG1fZGlza19tb2RlCT0gMCwKKwkudmFsaWQJCT0gYXQ5MV9wbV92YWxpZF9zdGF0ZSwKKwkucHJlcGFyZQk9IGF0OTFfcG1fcHJlcGFyZSwKKwkuZW50ZXIJCT0gYXQ5MV9wbV9lbnRlciwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGF0OTFfcG1faW5pdCh2b2lkKQoreworCXByaW50aygiQVQ5MTogUG93ZXIgTWFuYWdlbWVudFxuIik7CisKKyNpZmRlZiBDT05GSUdfQVQ5MV9QTV9TTE9XX0NMT0NLCisJLyogUkVWSVNJVCBhbGxvY2F0aW9ucyBvZiBTUkFNIHNob3VsZCBiZSBkeW5hbWljYWxseSBtYW5hZ2VkLgorCSAqIEZJUSBoYW5kbGVycyBhbmQgb3RoZXIgY29tcG9uZW50cyB3aWxsIHdhbnQgU1JBTS9UQ00gdG9vLi4uCisJICovCisJc2xvd19jbG9jayA9ICh2b2lkICopIChBVDkxX1ZBX0JBU0VfU1JBTSArICgzICogU1pfNEspKTsKKwltZW1jcHkoc2xvd19jbG9jaywgYXQ5MXJtOTIwMF9zbG93X2Nsb2NrLCBhdDkxcm05MjAwX3Nsb3dfY2xvY2tfc3opOworI2VuZGlmCisKKwkvKiBEaXNhYmxlIFNEUkFNIGxvdy1wb3dlciBtb2RlLiAgQ2Fubm90IGJlIHVzZWQgd2l0aCBzZWxmLXJlZnJlc2guICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TRFJBTUNfTFBSLCAwKTsKKworCXBtX3NldF9vcHMoJmF0OTFfcG1fb3BzKTsKKworCXJldHVybiAwOworfQorYXJjaF9pbml0Y2FsbChhdDkxX3BtX2luaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL3RpbWUuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC90aW1lLmMKaW5kZXggN2ZmY2Y0NC4uZmMyZDdkNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL3RpbWUuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvdGltZS5jCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KIAorc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdF9jcnRyOworCiAvKgogICogVGhlIFNUX0NSVFIgaXMgdXBkYXRlZCBhc3luY2hyb25vdXNseSB0byB0aGUgbWFzdGVyIGNsb2NrLiAgSXQgaXMgdGhlcmVmb3JlCiAgKiAgbmVjZXNzYXJ5IHRvIHJlYWQgaXQgdHdpY2UgKHdpdGggdGhlIHNhbWUgdmFsdWUpIHRvIGVuc3VyZSBhY2N1cmFjeS4KQEAgLTU2LDcgKzU4LDcgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGVsYXBzZWQ7CiAKLQllbGFwc2VkID0gKHJlYWRfQ1JUUigpIC0gYXQ5MV9zeXNfcmVhZChBVDkxX1NUX1JUQVIpKSAmIEFUOTFfU1RfQUxNVjsKKwllbGFwc2VkID0gKHJlYWRfQ1JUUigpIC0gbGFzdF9jcnRyKSAmIEFUOTFfU1RfQUxNVjsKIAogCXJldHVybiAodW5zaWduZWQgbG9uZykoZWxhcHNlZCAqICh0aWNrX25zZWMgLyAxMDAwKSkgLyBMQVRDSDsKIH0KQEAgLTY2LDE1ICs2OCwxMiBAQAogICovCiBzdGF0aWMgaXJxcmV0dXJuX3QgYXQ5MXJtOTIwMF90aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQl1bnNpZ25lZCBsb25nIHJ0YXI7Ci0KIAlpZiAoYXQ5MV9zeXNfcmVhZChBVDkxX1NUX1NSKSAmIEFUOTFfU1RfUElUUykgewkvKiBUaGlzIGlzIGEgc2hhcmVkIGludGVycnVwdCAqLwogCQl3cml0ZV9zZXFsb2NrKCZ4dGltZV9sb2NrKTsKIAotCQl3aGlsZSAoKChyZWFkX0NSVFIoKSAtIGF0OTFfc3lzX3JlYWQoQVQ5MV9TVF9SVEFSKSkgJiBBVDkxX1NUX0FMTVYpID49IExBVENIKSB7CisJCXdoaWxlICgoKHJlYWRfQ1JUUigpIC0gbGFzdF9jcnRyKSAmIEFUOTFfU1RfQUxNVikgPj0gTEFUQ0gpIHsKIAkJCXRpbWVyX3RpY2socmVncyk7Ci0JCQlydGFyID0gKGF0OTFfc3lzX3JlYWQoQVQ5MV9TVF9SVEFSKSArIExBVENIKSAmIEFUOTFfU1RfQUxNVjsKLQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfUlRBUiwgcnRhcik7CisJCQlsYXN0X2NydHIgPSAobGFzdF9jcnRyICsgTEFUQ0gpICYgQVQ5MV9TVF9BTE1WOwogCQl9CiAKIAkJd3JpdGVfc2VxdW5sb2NrKCZ4dGltZV9sb2NrKTsKQEAgLTg3LDEwICs4NiwyNCBAQAogCiBzdGF0aWMgc3RydWN0IGlycWFjdGlvbiBhdDkxcm05MjAwX3RpbWVyX2lycSA9IHsKIAkubmFtZQkJPSAiYXQ5MV90aWNrIiwKLQkuZmxhZ3MJCT0gU0FfU0hJUlEgfCBTQV9JTlRFUlJVUFQsCisJLmZsYWdzCQk9IFNBX1NISVJRIHwgU0FfSU5URVJSVVBUIHwgU0FfVElNRVIsCiAJLmhhbmRsZXIJPSBhdDkxcm05MjAwX3RpbWVyX2ludGVycnVwdAogfTsKIAordm9pZCBhdDkxcm05MjAwX3RpbWVyX3Jlc2V0KHZvaWQpCit7CisJbGFzdF9jcnRyID0gMDsKKworCS8qIFJlYWwgdGltZSBjb3VudGVyIGluY3JlbWVudGVkIGV2ZXJ5IDMwLjUxNzU4IG1pY3Jvc2Vjb25kcyAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfUlRNUiwgMSk7CisKKwkvKiBTZXQgUGVyaW9kIEludGVydmFsIHRpbWVyICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TVF9QSU1SLCBMQVRDSCk7CisKKwkvKiBFbmFibGUgUGVyaW9kIEludGVydmFsIFRpbWVyIGludGVycnVwdCAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfSUVSLCBBVDkxX1NUX1BJVFMpOworfQorCiAvKgogICogU2V0IHVwIHRpbWVyIGludGVycnVwdC4KICAqLwpAQCAtMTAwLDI4ICsxMTMsMzAgQEAKIAlhdDkxX3N5c193cml0ZShBVDkxX1NUX0lEUiwgQVQ5MV9TVF9QSVRTIHwgQVQ5MV9TVF9XRE9WRiB8IEFUOTFfU1RfUlRUSU5DIHwgQVQ5MV9TVF9BTE1TKTsKIAkodm9pZCkgYXQ5MV9zeXNfcmVhZChBVDkxX1NUX1NSKTsJLyogQ2xlYXIgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAqLwogCi0JLyoKLQkgKiBNYWtlIElSUXMgaGFwcGVuIGZvciB0aGUgc3lzdGVtIHRpbWVyLgotCSAqLworCS8qIE1ha2UgSVJRcyBoYXBwZW4gZm9yIHRoZSBzeXN0ZW0gdGltZXIgKi8KIAlzZXR1cF9pcnEoQVQ5MV9JRF9TWVMsICZhdDkxcm05MjAwX3RpbWVyX2lycSk7CiAKLQkvKiBTZXQgaW5pdGlhbCBhbGFybSB0byAwICovCi0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TVF9SVEFSLCAwKTsKLQotCS8qIFJlYWwgdGltZSBjb3VudGVyIGluY3JlbWVudGVkIGV2ZXJ5IDMwLjUxNzU4IG1pY3Jvc2Vjb25kcyAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfUlRNUiwgMSk7Ci0KLQkvKiBTZXQgUGVyaW9kIEludGVydmFsIHRpbWVyICovCi0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TVF9QSU1SLCBMQVRDSCk7Ci0KIAkvKiBDaGFuZ2UgdGhlIGtlcm5lbCdzICd0aWNrJyB2YWx1ZSB0byAxMDAwOSB1c2VjLiAodGhlIGRlZmF1bHQgaXMgMTAwMDApICovCiAJdGlja191c2VjID0gKExBVENIICogMTAwMDAwMCkgLyBDTE9DS19USUNLX1JBVEU7CiAKLQkvKiBFbmFibGUgUGVyaW9kIEludGVydmFsIFRpbWVyIGludGVycnVwdCAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfSUVSLCBBVDkxX1NUX1BJVFMpOworCS8qIEluaXRpYWxpemUgYW5kIGVuYWJsZSB0aGUgdGltZXIgaW50ZXJydXB0ICovCisJYXQ5MXJtOTIwMF90aW1lcl9yZXNldCgpOwogfQogCisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgdm9pZCBhdDkxcm05MjAwX3RpbWVyX3N1c3BlbmQodm9pZCkKK3sKKwkvKiBkaXNhYmxlIFBlcmlvZCBJbnRlcnZhbCBUaW1lciBpbnRlcnJ1cHQgKi8KKwlhdDkxX3N5c193cml0ZShBVDkxX1NUX0lEUiwgQVQ5MV9TVF9QSVRTKTsKK30KKyNlbHNlCisjZGVmaW5lIGF0OTFybTkyMDBfdGltZXJfc3VzcGVuZAlOVUxMCisjZW5kaWYKKwogc3RydWN0IHN5c190aW1lciBhdDkxcm05MjAwX3RpbWVyID0gewogCS5pbml0CQk9IGF0OTFybTkyMDBfdGltZXJfaW5pdCwKIAkub2Zmc2V0CQk9IGF0OTFybTkyMDBfZ2V0dGltZW9mZnNldCwKKwkuc3VzcGVuZAk9IGF0OTFybTkyMDBfdGltZXJfc3VzcGVuZCwKKwkucmVzdW1lCQk9IGF0OTFybTkyMDBfdGltZXJfcmVzZXQsCiB9OworCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9jb3JlLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9jb3JlLmMKaW5kZXggZGNkNDE3Ni4uYmY2YmQ3MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvY29yZS5jCisrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L2NvcmUuYwpAQCAtMTAzLDcgKzEwMyw4IEBACiAJd3JpdGVfc2VxbG9jaygmeHRpbWVfbG9jayk7CiAKIAlfX3Jhd193cml0ZWwoMSwgRVA5M1hYX1RJTUVSMV9DTEVBUik7Ci0Jd2hpbGUgKF9fcmF3X3JlYWRsKEVQOTNYWF9USU1FUjRfVkFMVUVfTE9XKSAtIGxhc3RfamlmZnlfdGltZQorCXdoaWxlICgoc2lnbmVkIGxvbmcpCisJCShfX3Jhd19yZWFkbChFUDkzWFhfVElNRVI0X1ZBTFVFX0xPVykgLSBsYXN0X2ppZmZ5X3RpbWUpCiAJCQkJCQk+PSBUSU1FUjRfVElDS1NfUEVSX0pJRkZZKSB7CiAJCWxhc3RfamlmZnlfdGltZSArPSBUSU1FUjRfVElDS1NfUEVSX0pJRkZZOwogCQl0aW1lcl90aWNrKHJlZ3MpOwpAQCAtMTI0LDcgKzEyNSw3IEBACiB7CiAJLyogRW5hYmxlIHBlcmlvZGljIEhaIHRpbWVyLiAgKi8KIAlfX3Jhd193cml0ZWwoMHg0OCwgRVA5M1hYX1RJTUVSMV9DT05UUk9MKTsKLQlfX3Jhd193cml0ZWwoKDUwODAwMCAvIEhaKSAtIDEsIEVQOTNYWF9USU1FUjFfTE9BRCk7CisJX19yYXdfd3JpdGVsKCg1MDg0NjkgLyBIWikgLSAxLCBFUDkzWFhfVElNRVIxX0xPQUQpOwogCV9fcmF3X3dyaXRlbCgweGM4LCBFUDkzWFhfVElNRVIxX0NPTlRST0wpOwogCiAJLyogRW5hYmxlIGxvc3QgamlmZnkgdGltZXIuICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvZ2VzYmM5MzEyLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9nZXNiYzkzMTIuYwppbmRleCBkMThmY2IxLi40N2NjNmM4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9nZXNiYzkzMTIuYworKysgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9nZXNiYzkzMTIuYwpAQCAtMTYsMTYgKzE2LDM4IEBACiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L210ZC9waHlzbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CiAKK3N0YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFzaF9kYXRhIGdlc2JjOTMxMl9mbGFzaF9kYXRhID0geworCS53aWR0aAkJPSA0LAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBnZXNiYzkzMTJfZmxhc2hfcmVzb3VyY2UgPSB7CisJLnN0YXJ0CQk9IDB4NjAwMDAwMDAsCisJLmVuZAkJPSAweDYwODAwMDAwLAorCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGdlc2JjOTMxMl9mbGFzaCA9IHsKKwkubmFtZQkJPSAicGh5c21hcC1mbGFzaCIsCisJLmlkCQk9IDAsCisJLmRldgkJPSB7CisJCS5wbGF0Zm9ybV9kYXRhCT0gJmdlc2JjOTMxMl9mbGFzaF9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZnZXNiYzkzMTJfZmxhc2hfcmVzb3VyY2UsCit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgZ2VzYmM5MzEyX2luaXRfbWFjaGluZSh2b2lkKQogewogCWVwOTN4eF9pbml0X2RldmljZXMoKTsKLQlwaHlzbWFwX2NvbmZpZ3VyZSgweDYwMDAwMDAwLCAweDAwODAwMDAwLCA0LCBOVUxMKTsKKwlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmdlc2JjOTMxMl9mbGFzaCk7CiB9CiAKIE1BQ0hJTkVfU1RBUlQoR0VTQkM5MzEyLCAiR2xvbWF0aW9uIEdFU0JDLTkzMTItc3giKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvdHM3Mnh4LmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC90czcyeHguYwppbmRleCBlMjQ1NjZiLi42ZTVhNTZjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWVwOTN4eC90czcyeHguYworKysgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC90czcyeHguYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21hcC5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L200OHQ4Ni5oPgpAQCAtMTExLDYgKzExMiwyNiBAQAogCX0KIH0KIAorc3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEgdHM3Mnh4X2ZsYXNoX2RhdGEgPSB7CisJLndpZHRoCQk9IDEsCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIHRzNzJ4eF9mbGFzaF9yZXNvdXJjZSA9IHsKKwkuc3RhcnQJCT0gVFM3MlhYX05PUl9QSFlTX0JBU0UsCisJLmVuZAkJPSBUUzcyWFhfTk9SX1BIWVNfQkFTRSArIDB4MDEwMDAwMDAsCisJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdHM3Mnh4X2ZsYXNoID0geworCS5uYW1lCQk9ICJwaHlzbWFwLWZsYXNoIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmdHM3Mnh4X2ZsYXNoX2RhdGEsCisJfSwKKwkubnVtX3Jlc291cmNlcwk9IDEsCisJLnJlc291cmNlCT0gJnRzNzJ4eF9mbGFzaF9yZXNvdXJjZSwKK307CisKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHRzNzJ4eF9ydGNfcmVhZGJ5dGUodW5zaWduZWQgbG9uZyBhZGRyKQogewogCV9fcmF3X3dyaXRlYihhZGRyLCBUUzcyWFhfUlRDX0lOREVYX1ZJUlRfQkFTRSk7CkBAIC0xNDEsNyArMTYyLDcgQEAKIHsKIAllcDkzeHhfaW5pdF9kZXZpY2VzKCk7CiAJaWYgKGJvYXJkX2lzX3RzNzIwMCgpKQotCQlwaHlzbWFwX2NvbmZpZ3VyZShUUzcyWFhfTk9SX1BIWVNfQkFTRSwgMHgwMTAwMDAwMCwgMSwgTlVMTCk7CisJCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmdHM3Mnh4X2ZsYXNoKTsKIAlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnRzNzJ4eF9ydGNfZGV2aWNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pbXgvZG1hLmMgYi9hcmNoL2FybS9tYWNoLWlteC9kbWEuYwppbmRleCA0Y2E1MWRjLi4zNjU3ODg3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWlteC9kbWEuYworKysgYi9hcmNoL2FybS9tYWNoLWlteC9kbWEuYwpAQCAtMTUsNiArMTUsOSBAQAogICogICAgICAgICAgICAgQ2hhbmdlZCB0byBzdXBwb3J0IHNjYXR0ZXIgZ2F0aGVyIERNQQogICogICAgICAgICAgICAgYnkgdGFraW5nIFJ1c3NlbGwncyBjb2RlIGZyb20gUmlzY1BDCiAgKgorICogIDIwMDYtMDUtMzEgUGF2ZWwgUGlzYSA8cGlzYUBjbXAuZmVsay5jdnV0LmN6PgorICogICAgICAgICAgICAgQ29ycmVjdGVkIGVycm9yIGhhbmRsaW5nIGNvZGUuCisgKgogICovCiAKICN1bmRlZiBERUJVRwpAQCAtMjc3LDcgKzI4MCw3IEBACiBpbnQKIGlteF9kbWFfc2V0dXBfaGFuZGxlcnMoaW14X2RtYWNoX3QgZG1hX2NoLAogCQkgICAgICAgdm9pZCAoKmlycV9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAotCQkgICAgICAgdm9pZCAoKmVycl9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAorCQkgICAgICAgdm9pZCAoKmVycl9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICosIGludCksCiAJCSAgICAgICB2b2lkICpkYXRhKQogewogCXN0cnVjdCBpbXhfZG1hX2NoYW5uZWwgKmlteGRtYSA9ICZpbXhfZG1hX2NoYW5uZWxzW2RtYV9jaF07CkBAIC00NjMsNDMgKzQ2Niw1MyBAQAogCWludCBpLCBkaXNyID0gRElTUjsKIAlzdHJ1Y3QgaW14X2RtYV9jaGFubmVsICpjaGFubmVsOwogCXVuc2lnbmVkIGludCBlcnJfbWFzayA9IERCVE9TUiB8IERSVE9TUiB8IERTRVNSIHwgREJPU1I7CisJaW50IGVycmNvZGU7CiAKLQlESVNSID0gZGlzcjsKKwlESVNSID0gZGlzciAmIGVycl9tYXNrOwogCWZvciAoaSA9IDA7IGkgPCBJTVhfRE1BX0NIQU5ORUxTOyBpKyspIHsKKwkJaWYoIShlcnJfbWFzayAmICgxIDw8IGkpKSkKKwkJCWNvbnRpbnVlOwogCQljaGFubmVsID0gJmlteF9kbWFfY2hhbm5lbHNbaV07CisJCWVycmNvZGUgPSAwOwogCi0JCWlmICgoZXJyX21hc2sgJiAxIDw8IGkpICYmIGNoYW5uZWwtPm5hbWUKLQkJICAgICYmIGNoYW5uZWwtPmVycl9oYW5kbGVyKSB7Ci0JCQljaGFubmVsLT5lcnJfaGFuZGxlcihpLCBjaGFubmVsLT5kYXRhLCByZWdzKTsKKwkJaWYgKERCVE9TUiAmICgxIDw8IGkpKSB7CisJCQlEQlRPU1IgPSAoMSA8PCBpKTsKKwkJCWVycmNvZGUgfD0gSU1YX0RNQV9FUlJfQlVSU1Q7CisJCX0KKwkJaWYgKERSVE9TUiAmICgxIDw8IGkpKSB7CisJCQlEUlRPU1IgPSAoMSA8PCBpKTsKKwkJCWVycmNvZGUgfD0gSU1YX0RNQV9FUlJfUkVRVUVTVDsKKwkJfQorCQlpZiAoRFNFU1IgJiAoMSA8PCBpKSkgeworCQkJRFNFU1IgPSAoMSA8PCBpKTsKKwkJCWVycmNvZGUgfD0gSU1YX0RNQV9FUlJfVFJBTlNGRVI7CisJCX0KKwkJaWYgKERCT1NSICYgKDEgPDwgaSkpIHsKKwkJCURCT1NSID0gKDEgPDwgaSk7CisJCQllcnJjb2RlIHw9IElNWF9ETUFfRVJSX0JVRkZFUjsKKwkJfQorCisJCS8qCisJCSAqIFRoZSBjbGVhbmluZyBvZiBAc2cgZmllbGQgd291bGQgYmUgcXVlc3Rpb25hYmxlCisJCSAqIHRoZXJlLCBiZWNhdXNlIGl0cyB2YWx1ZSBjYW4gaGVscCB0byBjb21wdXRlCisJCSAqIHJlbWFpbmluZy90cmFuc2ZlcmVkIGJ5dGVzIGNvdW50IGluIHRoZSBoYW5kbGVyCisJCSAqLworCQkvKmlteF9kbWFfY2hhbm5lbHNbaV0uc2cgPSBOVUxMOyovCisKKwkJaWYgKGNoYW5uZWwtPm5hbWUgJiYgY2hhbm5lbC0+ZXJyX2hhbmRsZXIpIHsKKwkJCWNoYW5uZWwtPmVycl9oYW5kbGVyKGksIGNoYW5uZWwtPmRhdGEsIHJlZ3MsIGVycmNvZGUpOwogCQkJY29udGludWU7CiAJCX0KIAogCQlpbXhfZG1hX2NoYW5uZWxzW2ldLnNnID0gTlVMTDsKIAotCQlpZiAoREJUT1NSICYgKDEgPDwgaSkpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcKLQkJCSAgICAgICAiQnVyc3QgdGltZW91dCBvbiBjaGFubmVsICVkICglcylcbiIsCi0JCQkgICAgICAgaSwgY2hhbm5lbC0+bmFtZSk7Ci0JCQlEQlRPU1IgfD0gKDEgPDwgaSk7Ci0JCX0KLQkJaWYgKERSVE9TUiAmICgxIDw8IGkpKSB7Ci0JCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkgICAgICAgIlJlcXVlc3QgdGltZW91dCBvbiBjaGFubmVsICVkICglcylcbiIsCi0JCQkgICAgICAgaSwgY2hhbm5lbC0+bmFtZSk7Ci0JCQlEUlRPU1IgfD0gKDEgPDwgaSk7Ci0JCX0KLQkJaWYgKERTRVNSICYgKDEgPDwgaSkpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcKLQkJCSAgICAgICAiVHJhbnNmZXIgdGltZW91dCBvbiBjaGFubmVsICVkICglcylcbiIsCi0JCQkgICAgICAgaSwgY2hhbm5lbC0+bmFtZSk7Ci0JCQlEU0VTUiB8PSAoMSA8PCBpKTsKLQkJfQotCQlpZiAoREJPU1IgJiAoMSA8PCBpKSkgewotCQkJcHJpbnRrKEtFUk5fV0FSTklORwotCQkJICAgICAgICJCdWZmZXIgb3ZlcmZsb3cgdGltZW91dCBvbiBjaGFubmVsICVkICglcylcbiIsCi0JCQkgICAgICAgaSwgY2hhbm5lbC0+bmFtZSk7Ci0JCQlEQk9TUiB8PSAoMSA8PCBpKTsKLQkJfQorCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICAgICAiRE1BIHRpbWVvdXQgb24gY2hhbm5lbCAlZCAoJXMpIC0lcyVzJXMlc1xuIiwKKwkJICAgICAgIGksIGNoYW5uZWwtPm5hbWUsCisJCSAgICAgICBlcnJjb2RlJklNWF9ETUFfRVJSX0JVUlNUPyAgICAiIGJ1cnN0IjoiIiwKKwkJICAgICAgIGVycmNvZGUmSU1YX0RNQV9FUlJfUkVRVUVTVD8gICIgcmVxdWVzdCI6IiIsCisJCSAgICAgICBlcnJjb2RlJklNWF9ETUFfRVJSX1RSQU5TRkVSPyAiIHRyYW5zZmVyIjoiIiwKKwkJICAgICAgIGVycmNvZGUmSU1YX0RNQV9FUlJfQlVGRkVSPyAgICIgYnVmZmVyIjoiIik7CiAJfQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwMjAwMC9jb3JlLmMgYi9hcmNoL2FybS9tYWNoLWl4cDIwMDAvY29yZS5jCmluZGV4IDZlOGQ1MDQuLjE4NmY2MzIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwMjAwMC9jb3JlLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1peHAyMDAwL2NvcmUuYwpAQCAtMjExLDcgKzIxMSw4IEBACiAJLyogY2xlYXIgdGltZXIgMSAqLwogCWl4cDIwMDBfcmVnX3dyYihJWFAyMDAwX1QxX0NMUiwgMSk7CiAKLQl3aGlsZSAoKG5leHRfamlmZnlfdGltZSAtICptaXNzaW5nX2ppZmZ5X3RpbWVyX2NzcikgPiB0aWNrc19wZXJfamlmZnkpIHsKKwl3aGlsZSAoKHNpZ25lZCBsb25nKShuZXh0X2ppZmZ5X3RpbWUgLSAqbWlzc2luZ19qaWZmeV90aW1lcl9jc3IpCisJCQkJCQkJPj0gdGlja3NfcGVyX2ppZmZ5KSB7CiAJCXRpbWVyX3RpY2socmVncyk7CiAJCW5leHRfamlmZnlfdGltZSAtPSB0aWNrc19wZXJfamlmZnk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHAyM3h4L2NvcmUuYyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9jb3JlLmMKaW5kZXggYWZmZDFkNS4uMDUxZTNkNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1peHAyM3h4L2NvcmUuYworKysgYi9hcmNoL2FybS9tYWNoLWl4cDIzeHgvY29yZS5jCkBAIC0zMzQsNyArMzM0LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBUaW1lci10aWNrIGZ1bmN0aW9ucyBmb3IgSVhQMjN4eAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIENMT0NLX1RJQ0tTX1BFUl9VU0VDCUNMT0NLX1RJQ0tfUkFURSAvIChVU0VDX1BFUl9TRUMpCisjZGVmaW5lIENMT0NLX1RJQ0tTX1BFUl9VU0VDCShDTE9DS19USUNLX1JBVEUgLyBVU0VDX1BFUl9TRUMpCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG5leHRfamlmZnlfdGltZTsKIApAQCAtMzUzLDcgKzM1Myw3IEBACiB7CiAJLyogQ2xlYXIgUGVuZGluZyBJbnRlcnJ1cHQgYnkgd3JpdGluZyAnMScgdG8gaXQgKi8KIAkqSVhQMjNYWF9USU1FUl9TVEFUVVMgPSBJWFAyM1hYX1RJTUVSMV9JTlRfUEVORDsKLQl3aGlsZSAoKCpJWFAyM1hYX1RJTUVSX0NPTlQgLSBuZXh0X2ppZmZ5X3RpbWUpID4gTEFUQ0gpIHsKKwl3aGlsZSAoKHNpZ25lZCBsb25nKSgqSVhQMjNYWF9USU1FUl9DT05UIC0gbmV4dF9qaWZmeV90aW1lKSA+PSBMQVRDSCkgewogCQl0aW1lcl90aWNrKHJlZ3MpOwogCQluZXh0X2ppZmZ5X3RpbWUgKz0gTEFUQ0g7CiAJfQpAQCAtNDM5LDUgKzQzOSw2IEBACiAKIHZvaWQgX19pbml0IGl4cDIzeHhfc3lzX2luaXQodm9pZCkKIHsKKwkqSVhQMjNYWF9FWFBfVU5JVF9GVVNFIHw9IDB4ZjsKIAlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhpeHAyM3h4X2RldmljZXMsIEFSUkFZX1NJWkUoaXhwMjN4eF9kZXZpY2VzKSk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDIzeHgvZXNwcmVzc28uYyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9lc3ByZXNzby5jCmluZGV4IGJmNjg4YzEuLmRjNWU0ODkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9lc3ByZXNzby5jCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9lc3ByZXNzby5jCkBAIC01Myw5ICs1MywyOSBAQAogfTsKIHN1YnN5c19pbml0Y2FsbChlc3ByZXNzb19wY2lfaW5pdCk7CiAKK3N0YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFzaF9kYXRhIGVzcHJlc3NvX2ZsYXNoX2RhdGEgPSB7CisJLndpZHRoCQk9IDIsCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIGVzcHJlc3NvX2ZsYXNoX3Jlc291cmNlID0geworCS5zdGFydAkJPSAweDkwMDAwMDAwLAorCS5lbmQJCT0gMHg5MjAwMDAwMCwKKwkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBlc3ByZXNzb19mbGFzaCA9IHsKKwkubmFtZQkJPSAicGh5c21hcC1mbGFzaCIsCisJLmlkCQk9IDAsCisJLmRldgkJPSB7CisJCS5wbGF0Zm9ybV9kYXRhCT0gJmVzcHJlc3NvX2ZsYXNoX2RhdGEsCisJfSwKKwkubnVtX3Jlc291cmNlcwk9IDEsCisJLnJlc291cmNlCT0gJmVzcHJlc3NvX2ZsYXNoX3Jlc291cmNlLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IGVzcHJlc3NvX2luaXQodm9pZCkKIHsKLQlwaHlzbWFwX2NvbmZpZ3VyZSgweDkwMDAwMDAwLCAweDAyMDAwMDAwLCAyLCBOVUxMKTsKKwlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmVzcHJlc3NvX2ZsYXNoKTsKIAogCS8qCiAJICogTWFyayBmbGFzaCBhcyB3cml0ZWFibGUuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDIzeHgvaXhkcDIzNTEuYyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9peGRwMjM1MS5jCmluZGV4IDAwMTQ2YzMuLjUzNWIzMzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9peGRwMjM1MS5jCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9peGRwMjM1MS5jCkBAIC0yOTgsOSArMjk4LDI5IEBACiAJaW90YWJsZV9pbml0KGl4ZHAyMzUxX2lvX2Rlc2MsIEFSUkFZX1NJWkUoaXhkcDIzNTFfaW9fZGVzYykpOwogfQogCitzdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBpeGRwMjM1MV9mbGFzaF9kYXRhID0geworCS53aWR0aAkJPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBpeGRwMjM1MV9mbGFzaF9yZXNvdXJjZSA9IHsKKwkuc3RhcnQJCT0gMHg5MDAwMDAwMCwKKwkuZW5kCQk9IDB4OTQwMDAwMDAsCisJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgaXhkcDIzNTFfZmxhc2ggPSB7CisJLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAorCS5pZAkJPSAwLAorCS5kZXYJCT0geworCQkucGxhdGZvcm1fZGF0YQk9ICZpeGRwMjM1MV9mbGFzaF9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZpeGRwMjM1MV9mbGFzaF9yZXNvdXJjZSwKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBpeGRwMjM1MV9pbml0KHZvaWQpCiB7Ci0JcGh5c21hcF9jb25maWd1cmUoMHg5MDAwMDAwMCwgMHgwNDAwMDAwMCwgMSwgTlVMTCk7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpeGRwMjM1MV9mbGFzaCk7CiAKIAkvKgogCSAqIE1hcmsgZmxhc2ggYXMgd3JpdGVhYmxlCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDIzeHgvcm9hZHJ1bm5lci5jIGIvYXJjaC9hcm0vbWFjaC1peHAyM3h4L3JvYWRydW5uZXIuYwppbmRleCA0M2MxNGU3Li5iOWY1ZDEzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWl4cDIzeHgvcm9hZHJ1bm5lci5jCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwMjN4eC9yb2FkcnVubmVyLmMKQEAgLTEzNyw5ICsxMzcsMjkgQEAKIAogc3Vic3lzX2luaXRjYWxsKHJvYWRydW5uZXJfcGNpX2luaXQpOwogCitzdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSByb2FkcnVubmVyX2ZsYXNoX2RhdGEgPSB7CisJLndpZHRoCQk9IDIsCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIHJvYWRydW5uZXJfZmxhc2hfcmVzb3VyY2UgPSB7CisJLnN0YXJ0CQk9IDB4OTAwMDAwMDAsCisJLmVuZAkJPSAweDk0MDAwMDAwLAorCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHJvYWRydW5uZXJfZmxhc2ggPSB7CisJLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAorCS5pZAkJPSAwLAorCS5kZXYJCT0geworCQkucGxhdGZvcm1fZGF0YQk9ICZyb2FkcnVubmVyX2ZsYXNoX2RhdGEsCisJfSwKKwkubnVtX3Jlc291cmNlcwk9IDEsCisJLnJlc291cmNlCT0gJnJvYWRydW5uZXJfZmxhc2hfcmVzb3VyY2UsCit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgcm9hZHJ1bm5lcl9pbml0KHZvaWQpCiB7Ci0JcGh5c21hcF9jb25maWd1cmUoMHg5MDAwMDAwMCwgMHgwNDAwMDAwMCwgMiwgTlVMTCk7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZyb2FkcnVubmVyX2ZsYXNoKTsKIAogCS8qCiAJICogTWFyayBmbGFzaCBhcyB3cml0ZWFibGUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2NvbW1vbi5jIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvY29tbW9uLmMKaW5kZXggMDBiNzYxZi4uYmYyNWE3NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvY29tbW9uLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvY29tbW9uLmMKQEAgLTI3Niw3ICsyNzYsNyBAQAogCS8qCiAJICogQ2F0Y2ggdXAgd2l0aCB0aGUgcmVhbCBpZGVhIG9mIHRpbWUKIAkgKi8KLQl3aGlsZSAoKCpJWFA0WFhfT1NUUyAtIGxhc3RfamlmZnlfdGltZSkgPiBMQVRDSCkgeworCXdoaWxlICgoc2lnbmVkIGxvbmcpKCpJWFA0WFhfT1NUUyAtIGxhc3RfamlmZnlfdGltZSkgPj0gTEFUQ0gpIHsKIAkJdGltZXJfdGljayhyZWdzKTsKIAkJbGFzdF9qaWZmeV90aW1lICs9IExBVENIOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L25hczEwMGQtc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L25hczEwMGQtc2V0dXAuYwppbmRleCBhM2I0YzZhLi45YTMxNDQ0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9uYXMxMDBkLXNldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbmFzMTAwZC1zZXR1cC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFsLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4KKyNpbmNsdWRlIDxsaW51eC9sZWRzLmg+CiAKICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KQEAgLTM3LDYgKzM4LDM2IEBACiAJLnJlc291cmNlCQk9ICZuYXMxMDBkX2ZsYXNoX3Jlc291cmNlLAogfTsKIAorI2lmZGVmIENPTkZJR19MRURTX0lYUDRYWAorc3RhdGljIHN0cnVjdCByZXNvdXJjZSBuYXMxMDBkX2xlZF9yZXNvdXJjZXNbXSA9IHsKKwl7CisJCS5uYW1lCQk9ICJ3bGFuIiwgICAvKiBncmVlbiBsZWQgKi8KKwkJLnN0YXJ0CQk9IDAsCisJCS5lbmQJCT0gMCwKKwkJLmZsYWdzCQk9IElYUDRYWF9HUElPX0xPVywKKwl9LAorCXsKKwkJLm5hbWUJCT0gInJlYWR5IiwgIC8qIGJsdWUgcG93ZXIgbGVkIChvZmYgaXMgZmxhc2hpbmchKSAqLworCQkuc3RhcnQJCT0gMTUsCisJCS5lbmQJCT0gMTUsCisJCS5mbGFncwkJPSBJWFA0WFhfR1BJT19MT1csCisJfSwKKwl7CisJCS5uYW1lCQk9ICJkaXNrIiwgICAvKiB5ZWxsb3cgbGVkICovCisJCS5zdGFydAkJPSAzLAorCQkuZW5kCQk9IDMsCisJCS5mbGFncwkJPSBJWFA0WFhfR1BJT19MT1csCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5hczEwMGRfbGVkcyA9IHsKKwkubmFtZQkJCT0gIklYUDRYWC1HUElPLUxFRCIsCisJLmlkCQkJPSAtMSwKKwkubnVtX3Jlc291cmNlcwkJPSBBUlJBWV9TSVpFKG5hczEwMGRfbGVkX3Jlc291cmNlcyksCisJLnJlc291cmNlCQk9IG5hczEwMGRfbGVkX3Jlc291cmNlcywKK307CisjZW5kaWYKKwogc3RhdGljIHN0cnVjdCBpeHA0eHhfaTJjX3BpbnMgbmFzMTAwZF9pMmNfZ3Bpb19waW5zID0gewogCS5zZGFfcGluCQk9IE5BUzEwMERfU0RBX1BJTiwKIAkuc2NsX3BpbgkJPSBOQVMxMDBEX1NDTF9QSU4sCkBAIC05NSw3ICsxMjYsOSBAQAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm5hczEwMGRfZGV2aWNlc1tdIF9faW5pdGRhdGEgPSB7CiAJJm5hczEwMGRfaTJjX2NvbnRyb2xsZXIsCiAJJm5hczEwMGRfZmxhc2gsCi0JJm5hczEwMGRfdWFydCwKKyNpZmRlZiBDT05GSUdfTEVEU19JWFA0WFgKKwkmbmFzMTAwZF9sZWRzLAorI2VuZGlmCiB9OwogCiBzdGF0aWMgdm9pZCBuYXMxMDBkX3Bvd2VyX29mZih2b2lkKQpAQCAtMTIyLDYgKzE1NSwxMiBAQAogCiAJcG1fcG93ZXJfb2ZmID0gbmFzMTAwZF9wb3dlcl9vZmY7CiAKKwkvKiBUaGlzIGlzIG9ubHkgdXNlZnVsIG9uIGEgbW9kaWZpZWQgbWFjaGluZSwgYnV0IGl0IGlzIHZhbHVhYmxlCisJICogdG8gaGF2ZSBpdCBmaXJzdCBpbiBvcmRlciB0byBzZWUgZGVidWcgbWVzc2FnZXMsIGFuZCBzbyB0aGF0CisJICogaXQgZG9lcyAqbm90KiBnZXQgcmVtb3ZlZCBpZiBwbGF0Zm9ybV9hZGRfZGV2aWNlcyBmYWlscyEKKwkgKi8KKwkodm9pZClwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm5hczEwMGRfdWFydCk7CisKIAlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhuYXMxMDBkX2RldmljZXMsIEFSUkFZX1NJWkUobmFzMTAwZF9kZXZpY2VzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L25zbHUyLXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9uc2x1Mi1zZXR1cC5jCmluZGV4IDU1NDExZjIuLjc0OWEzMzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L25zbHUyLXNldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbnNsdTItc2V0dXAuYwpAQCAtNyw2ICs3LDcgQEAKICAqICAgICAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgogICoKICAqIEF1dGhvcjogTWFyayBSYWtlcyA8bXJha2VzIGF0IG1hYy5jb20+CisgKiBBdXRob3I6IFJvZCBXaGl0YnkgPHJvZEB3aGl0YnkuaWQuYXU+CiAgKiBNYWludGFpbmVyczogaHR0cDovL3d3dy5uc2x1Mi1saW51eC5vcmcvCiAgKgogICogRml4ZWQgbWlzc2luZyBpbml0X3RpbWUgaW4gTUFDSElORV9TVEFSVCBrYXMxMSAxMC8yMi8wNApAQCAtMTYsNiArMTcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcmlhbC5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF84MjUwLmg+CisjaW5jbHVkZSA8bGludXgvbGVkcy5oPgogCiAjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CkBAIC00Myw2ICs0NSw0MiBAQAogCS5zY2xfcGluCQk9IE5TTFUyX1NDTF9QSU4sCiB9OwogCisjaWZkZWYgQ09ORklHX0xFRFNfSVhQNFhYCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG5zbHUyX2xlZF9yZXNvdXJjZXNbXSA9IHsKKwl7CisJCS5uYW1lCQk9ICJyZWFkeSIsICAvKiBncmVlbiBsZWQgKi8KKwkJLnN0YXJ0CQk9IE5TTFUyX0xFRF9HUk4sCisJCS5lbmQJCT0gTlNMVTJfTEVEX0dSTiwKKwkJLmZsYWdzCQk9IElYUDRYWF9HUElPX0hJR0gsCisJfSwKKwl7CisJCS5uYW1lCQk9ICJzdGF0dXMiLCAvKiByZWQgbGVkICovCisJCS5zdGFydAkJPSBOU0xVMl9MRURfUkVELAorCQkuZW5kCQk9IE5TTFUyX0xFRF9SRUQsCisJCS5mbGFncwkJPSBJWFA0WFhfR1BJT19ISUdILAorCX0sCisJeworCQkubmFtZQkJPSAiZGlzay0xIiwKKwkJLnN0YXJ0CQk9IE5TTFUyX0xFRF9ESVNLMSwKKwkJLmVuZAkJPSBOU0xVMl9MRURfRElTSzEsCisJCS5mbGFncwkJPSBJWFA0WFhfR1BJT19MT1csCisJfSwKKwl7CisJCS5uYW1lCQk9ICJkaXNrLTIiLAorCQkuc3RhcnQJCT0gTlNMVTJfTEVEX0RJU0syLAorCQkuZW5kCQk9IE5TTFUyX0xFRF9ESVNLMiwKKwkJLmZsYWdzCQk9IElYUDRYWF9HUElPX0xPVywKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbnNsdTJfbGVkcyA9IHsKKwkubmFtZQkJCT0gIklYUDRYWC1HUElPLUxFRCIsCisJLmlkCQkJPSAtMSwKKwkubnVtX3Jlc291cmNlcwkJPSBBUlJBWV9TSVpFKG5zbHUyX2xlZF9yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQkJPSBuc2x1Ml9sZWRfcmVzb3VyY2VzLAorfTsKKyNlbmRpZgorCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuc2x1Ml9pMmNfY29udHJvbGxlciA9IHsKIAkubmFtZQkJCT0gIklYUDRYWC1JMkMiLAogCS5pZAkJCT0gMCwKQEAgLTEwMiw4ICsxNDAsMTAgQEAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpuc2x1Ml9kZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKIAkmbnNsdTJfaTJjX2NvbnRyb2xsZXIsCiAJJm5zbHUyX2ZsYXNoLAotCSZuc2x1Ml91YXJ0LAogCSZuc2x1Ml9iZWVwZXIsCisjaWZkZWYgQ09ORklHX0xFRFNfSVhQNFhYCisJJm5zbHUyX2xlZHMsCisjZW5kaWYKIH07CiAKIHN0YXRpYyB2b2lkIG5zbHUyX3Bvd2VyX29mZih2b2lkKQpAQCAtMTI3LDYgKzE2NywxMiBAQAogCiAJcG1fcG93ZXJfb2ZmID0gbnNsdTJfcG93ZXJfb2ZmOwogCisJLyogVGhpcyBpcyBvbmx5IHVzZWZ1bCBvbiBhIG1vZGlmaWVkIG1hY2hpbmUsIGJ1dCBpdCBpcyB2YWx1YWJsZQorCSAqIHRvIGhhdmUgaXQgZmlyc3QgaW4gb3JkZXIgdG8gc2VlIGRlYnVnIG1lc3NhZ2VzLCBhbmQgc28gdGhhdAorCSAqIGl0IGRvZXMgKm5vdCogZ2V0IHJlbW92ZWQgaWYgcGxhdGZvcm1fYWRkX2RldmljZXMgZmFpbHMhCisJICovCisJKHZvaWQpcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZuc2x1Ml91YXJ0KTsKKwogCXBsYXRmb3JtX2FkZF9kZXZpY2VzKG5zbHUyX2RldmljZXMsIEFSUkFZX1NJWkUobnNsdTJfZGV2aWNlcykpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW5ldHgvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtbmV0eC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOTBlZjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLW5ldHgvS2NvbmZpZwpAQCAtMCwwICsxLDI0IEBACittZW51ICJOZXRYIEltcGxlbWVudGF0aW9ucyIKKwlkZXBlbmRzIG9uIEFSQ0hfTkVUWAorCitjb25maWcgTUFDSF9OWERLTgorCWJvb2wgIkVuYWJsZSBIaWxzY2hlciBueGRrbiBFdmFsIEJvYXJkIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBUkNIX05FVFgKKwloZWxwCisJICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgSGlsc2NoZXIgTmV0WCBFdmFsIEJvYXJkCisKK2NvbmZpZyBNQUNIX05YREI1MDAKKwlib29sICJFbmFibGUgSGlsc2NoZXIgbnhkYjUwMCBFdmFsIEJvYXJkIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBUkNIX05FVFgKKwlzZWxlY3QgQVJNX0FNQkEKKwloZWxwCisJICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgSGlsc2NoZXIgbnhkYjUwMCBFdmFsIEJvYXJkCisKK2NvbmZpZyBNQUNIX05YRUI1MDBITUkKKwlib29sICJFbmFibGUgSGlsc2NoZXIgbnhlYjUwMGhtaSBFdmFsIEJvYXJkIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBUkNIX05FVFgKKwlzZWxlY3QgQVJNX0FNQkEKKwloZWxwCisJICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgSGlsc2NoZXIgbnhlYjUwMGhtaSBFdmFsIEJvYXJkCisKK2VuZG1lbnUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbmV0eC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtbmV0eC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODc4NWZmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1uZXR4L01ha2VmaWxlCkBAIC0wLDAgKzEsMTUgQEAKKyMKKyMgTWFrZWZpbGUgZm9yIHRoZSBsaW51eCBrZXJuZWwuCisjCisjIE5vdGUhIERlcGVuZGVuY2llcyBhcmUgZG9uZSBhdXRvbWFnaWNhbGx5IGJ5ICdtYWtlIGRlcCcsIHdoaWNoIGFsc28KKyMgcmVtb3ZlcyBhbnkgb2xkIGRlcGVuZGVuY2llcy4gRE9OJ1QgcHV0IHlvdXIgb3duIGRlcGVuZGVuY2llcyBoZXJlCisjIHVubGVzcyBpdCdzIHNvbWV0aGluZyBzcGVjaWFsIChpZSBub3QgYSAuYyBmaWxlKS4KKworIyBPYmplY3QgZmlsZSBsaXN0cy4KKworb2JqLXkJCQkrPSB0aW1lLm8gZ2VuZXJpYy5vIHBmaWZvLm8geGMubworCisjIFNwZWNpZmljIGJvYXJkIHN1cHBvcnQKK29iai0kKENPTkZJR19NQUNIX05YREtOKSArPSBueGRrbi5vCitvYmotJChDT05GSUdfTUFDSF9OWERCNTAwKSArPSBueGRiNTAwLm8gZmIubworb2JqLSQoQ09ORklHX01BQ0hfTlhFQjUwMEhNSSkgKz0gbnhlYjUwMGhtaS5vIGZiLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbmV0eC9NYWtlZmlsZS5ib290IGIvYXJjaC9hcm0vbWFjaC1uZXR4L01ha2VmaWxlLmJvb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxY2Y2YQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9NYWtlZmlsZS5ib290CkBAIC0wLDAgKzEsMiBAQAorICAgIHpyZWxhZGRyLXkJCQk6PSAweDgwMDA4MDAwCisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbmV0eC9mYi5jIGIvYXJjaC9hcm0vbWFjaC1uZXR4L2ZiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwYWI2MQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9mYi5jCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogYXJjaC9hcm0vbWFjaC1uZXR4L2ZiLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2FtYmEvYnVzLmg+CisjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9uZXR4LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKworc3RydWN0IGNsayB7fTsKKworc3RhdGljIHN0cnVjdCBjbGsgZmJfY2xrOworCitzdGF0aWMgc3RydWN0IGNsY2RfcGFuZWwgKm5ldHhfcGFuZWw7CisKK3ZvaWQgbmV0eF9jbGNkX2VuYWJsZShzdHJ1Y3QgY2xjZF9mYiAqZmIpCit7Cit9CisKK2ludCBuZXR4X2NsY2Rfc2V0dXAoc3RydWN0IGNsY2RfZmIgKmZiKQoreworCWRtYV9hZGRyX3QgZG1hOworCisJZmItPnBhbmVsID0gbmV0eF9wYW5lbDsKKworCWZiLT5mYi5zY3JlZW5fYmFzZSA9IGRtYV9hbGxvY193cml0ZWNvbWJpbmUoJmZiLT5kZXYtPmRldiwgMTAyNCoxMDI0LAorCQkJCQkJICAgICZkbWEsIEdGUF9LRVJORUwpOworCWlmICghZmItPmZiLnNjcmVlbl9iYXNlKSB7CisJCXByaW50ayhLRVJOX0VSUiAiQ0xDRDogdW5hYmxlIHRvIG1hcCBmcmFtZWJ1ZmZlclxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWZiLT5mYi5maXguc21lbV9zdGFydAk9IGRtYTsKKwlmYi0+ZmIuZml4LnNtZW1fbGVuCT0gMTAyNCoxMDI0OworCisJcmV0dXJuIDA7Cit9CisKK2ludCBuZXR4X2NsY2RfbW1hcChzdHJ1Y3QgY2xjZF9mYiAqZmIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXJldHVybiBkbWFfbW1hcF93cml0ZWNvbWJpbmUoJmZiLT5kZXYtPmRldiwgdm1hLAorCQkJCSAgICAgZmItPmZiLnNjcmVlbl9iYXNlLAorCQkJCSAgICAgZmItPmZiLmZpeC5zbWVtX3N0YXJ0LAorCQkJCSAgICAgZmItPmZiLmZpeC5zbWVtX2xlbik7Cit9CisKK3ZvaWQgbmV0eF9jbGNkX3JlbW92ZShzdHJ1Y3QgY2xjZF9mYiAqZmIpCit7CisJZG1hX2ZyZWVfd3JpdGVjb21iaW5lKCZmYi0+ZGV2LT5kZXYsIGZiLT5mYi5maXguc21lbV9sZW4sCisJCQkgICAgICBmYi0+ZmIuc2NyZWVuX2Jhc2UsIGZiLT5mYi5maXguc21lbV9zdGFydCk7Cit9CisKK3ZvaWQgY2xrX2Rpc2FibGUoc3RydWN0IGNsayAqY2xrKQoreworfQorCitpbnQgY2xrX3NldF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQoreworCXJldHVybiAwOworfQorCitpbnQgY2xrX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGspCit7CisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBjbGsgKmNsa19nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICppZCkKK3sKKwlyZXR1cm4gJmZiX2NsazsKK30KKwordm9pZCBjbGtfcHV0KHN0cnVjdCBjbGsgKmNsaykKK3sKK30KKworc3RhdGljIHN0cnVjdCBhbWJhX2RldmljZSBmYl9kZXZpY2UgPSB7CisJLmRldgkJPSB7CisJCS5idXNfaWQJPSAiZmIiLAorCQkuY29oZXJlbnRfZG1hX21hc2sgPSB+MCwKKwl9LAorCS5yZXMJCT0geworCQkuc3RhcnQJPSAweDAwMTA0MDAwLAorCQkuZW5kCT0gMHgwMDEwNGZmZiwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwkuaXJxCQk9IHsgTkVUWF9JUlFfTENELCBOT19JUlEgfSwKKwkucGVyaXBoaWQJPSAweDEwMTEyNDAwLAorfTsKKworaW50IG5ldHhfZmJfaW5pdChzdHJ1Y3QgY2xjZF9ib2FyZCAqYm9hcmQsIHN0cnVjdCBjbGNkX3BhbmVsICpwYW5lbCkKK3sKKwluZXR4X3BhbmVsID0gcGFuZWw7CisJZmJfZGV2aWNlLmRldi5wbGF0Zm9ybV9kYXRhID0gYm9hcmQ7CisJcmV0dXJuIGFtYmFfZGV2aWNlX3JlZ2lzdGVyKCZmYl9kZXZpY2UsICZpb21lbV9yZXNvdXJjZSk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW5ldHgvZmIuaCBiL2FyY2gvYXJtL21hY2gtbmV0eC9mYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MTljZjMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLW5ldHgvZmIuaApAQCAtMCwwICsxLDI0IEBACisvKgorICogYXJjaC9hcm0vbWFjaC1uZXR4L2ZiLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKwordm9pZCBuZXR4X2NsY2RfZW5hYmxlKHN0cnVjdCBjbGNkX2ZiICpmYik7CitpbnQgbmV0eF9jbGNkX3NldHVwKHN0cnVjdCBjbGNkX2ZiICpmYik7CitpbnQgbmV0eF9jbGNkX21tYXAoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Cit2b2lkIG5ldHhfY2xjZF9yZW1vdmUoc3RydWN0IGNsY2RfZmIgKmZiKTsKK2ludCBuZXR4X2ZiX2luaXQoc3RydWN0IGNsY2RfYm9hcmQgKmJvYXJkLCBzdHJ1Y3QgY2xjZF9wYW5lbCAqcGFuZWwpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L2dlbmVyaWMuYyBiL2FyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwYjEzNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmMKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLW5ldHgvZ2VuZXJpYy5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL3ZpYy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgorCitzdGF0aWMgc3RydWN0IG1hcF9kZXNjIG5ldHhfaW9fZGVzY1tdIF9faW5pdGRhdGEgPSB7CisJeworCQkudmlydHVhbCAgICAgICAgPSBORVRYX0lPX1ZJUlQsCisJCS5wZm4gICAgICAgICAgICA9IF9fcGh5c190b19wZm4oTkVUWF9JT19QSFlTKSwKKwkJLmxlbmd0aCAgICAgICAgID0gTkVUWF9JT19TSVpFLAorCQkudHlwZSAgICAgICAgICAgPSBNVF9ERVZJQ0UKKwl9Cit9OworCit2b2lkIF9faW5pdCBuZXR4X21hcF9pbyh2b2lkKQoreworCWlvdGFibGVfaW5pdChuZXR4X2lvX2Rlc2MsIEFSUkFZX1NJWkUobmV0eF9pb19kZXNjKSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgbmV0eF9ydGNfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSAweDAwMTAxMjAwLAorCQkuZW5kCT0gMHgwMDEwMTIyMCwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldHhfcnRjX2RldmljZSA9IHsKKwkubmFtZQkJPSAibmV0eC1ydGMiLAorCS5pZAkJPSAwLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShuZXR4X3J0Y19yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQk9IG5ldHhfcnRjX3Jlc291cmNlcywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKKwkmbmV0eF9ydGNfZGV2aWNlLAorfTsKKworI2lmIDAKKyNkZWZpbmUgREVCVUdfSVJRKGZtdC4uLikJcHJpbnRrKGZtdCkKKyNlbHNlCisjZGVmaW5lIERFQlVHX0lSUShmbXQuLi4pCXdoaWxlICgwKSB7fQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCituZXR4X2hpZl9kZW11eF9oYW5kbGVyKHVuc2lnbmVkIGludCBpcnFfdW51c2VkLCBzdHJ1Y3QgaXJxZGVzYyAqZGVzYywKKwkJCXN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXVuc2lnbmVkIGludCBpcnEgPSBORVRYX0lSUV9ISUZfQ0hBSU5FRCgwKTsKKwl1bnNpZ25lZCBpbnQgc3RhdDsKKworCXN0YXQgPSAoKHJlYWRsKE5FVFhfRFBNQVNfSU5UX0VOKSAmCisJCXJlYWRsKE5FVFhfRFBNQVNfSU5UX1NUQVQpKSA+PiAyNCkgJiAweDFmOworCisJZGVzYyA9IGlycV9kZXNjICsgTkVUWF9JUlFfSElGX0NIQUlORUQoMCk7CisKKwl3aGlsZSAoc3RhdCkgeworCQlpZiAoc3RhdCAmIDEpIHsKKwkJCURFQlVHX0lSUSgiaGFuZGxpbmcgaXJxICVkXG4iLCBpcnEpOworCQkJZGVzY19oYW5kbGVfaXJxKGlycSwgZGVzYywgcmVncyk7CisJCX0KKwkJaXJxKys7CisJCWRlc2MrKzsKKwkJc3RhdCA+Pj0gMTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK25ldHhfaGlmX2lycV90eXBlKHVuc2lnbmVkIGludCBfaXJxLCB1bnNpZ25lZCBpbnQgdHlwZSkKK3sKKwl1bnNpZ25lZCBpbnQgdmFsLCBpcnE7CisKKwl2YWwgPSByZWFkbChORVRYX0RQTUFTX0lGX0NPTkYxKTsKKworCWlycSA9IF9pcnEgLSBORVRYX0lSUV9ISUZfQ0hBSU5FRCgwKTsKKworCWlmICh0eXBlICYgX19JUlFUX1JJU0VER0UpIHsKKwkJREVCVUdfSVJRKCJyaXNpbmcgZWRnZXNcbiIpOworCQl2YWwgfD0gKDEgPDwgMjYpIDw8IGlycTsKKwl9CisJaWYgKHR5cGUgJiBfX0lSUVRfRkFMRURHRSkgeworCQlERUJVR19JUlEoImZhbGxpbmcgZWRnZXNcbiIpOworCQl2YWwgJj0gfigoMSA8PCAyNikgPDwgaXJxKTsKKwl9CisJaWYgKHR5cGUgJiBfX0lSUVRfTE9XTFZMKSB7CisJCURFQlVHX0lSUSgibG93IGxldmVsXG4iKTsKKwkJdmFsICY9IH4oKDEgPDwgMjYpIDw8IGlycSk7CisJfQorCWlmICh0eXBlICYgX19JUlFUX0hJR0hMVkwpIHsKKwkJREVCVUdfSVJRKCJoaWdoIGxldmVsXG4iKTsKKwkJdmFsIHw9ICgxIDw8IDI2KSA8PCBpcnE7CisJfQorCisJd3JpdGVsKHZhbCwgTkVUWF9EUE1BU19JRl9DT05GMSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK25ldHhfaGlmX2Fja19pcnEodW5zaWduZWQgaW50IF9pcnEpCit7CisJdW5zaWduZWQgaW50IHZhbCwgaXJxOworCisJaXJxID0gX2lycSAtIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDApOworCXdyaXRlbCgoMSA8PCAyNCkgPDwgaXJxLCBORVRYX0RQTUFTX0lOVF9TVEFUKTsKKworCXZhbCA9IHJlYWRsKE5FVFhfRFBNQVNfSU5UX0VOKTsKKwl2YWwgJj0gfigoMSA8PCAyNCkgPDwgaXJxKTsKKwl3cml0ZWwodmFsLCBORVRYX0RQTUFTX0lOVF9FTik7CisKKwlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fRlVOQ1RJT05fXywgX2lycSk7Cit9CisKK3N0YXRpYyB2b2lkCituZXR4X2hpZl9tYXNrX2lycSh1bnNpZ25lZCBpbnQgX2lycSkKK3sKKwl1bnNpZ25lZCBpbnQgdmFsLCBpcnE7CisKKwlpcnEgPSBfaXJxIC0gTkVUWF9JUlFfSElGX0NIQUlORUQoMCk7CisJdmFsID0gcmVhZGwoTkVUWF9EUE1BU19JTlRfRU4pOworCXZhbCAmPSB+KCgxIDw8IDI0KSA8PCBpcnEpOworCXdyaXRlbCh2YWwsIE5FVFhfRFBNQVNfSU5UX0VOKTsKKwlERUJVR19JUlEoIiVzOiBpcnEgJWRcbiIsIF9fRlVOQ1RJT05fXywgX2lycSk7Cit9CisKK3N0YXRpYyB2b2lkCituZXR4X2hpZl91bm1hc2tfaXJxKHVuc2lnbmVkIGludCBfaXJxKQoreworCXVuc2lnbmVkIGludCB2YWwsIGlycTsKKworCWlycSA9IF9pcnEgLSBORVRYX0lSUV9ISUZfQ0hBSU5FRCgwKTsKKwl2YWwgPSByZWFkbChORVRYX0RQTUFTX0lOVF9FTik7CisJdmFsIHw9ICgxIDw8IDI0KSA8PCBpcnE7CisJd3JpdGVsKHZhbCwgTkVUWF9EUE1BU19JTlRfRU4pOworCURFQlVHX0lSUSgiJXM6IGlycSAlZFxuIiwgX19GVU5DVElPTl9fLCBfaXJxKTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFjaGlwIG5ldHhfaGlmX2NoaXAgPSB7CisJLmFjayA9IG5ldHhfaGlmX2Fja19pcnEsCisJLm1hc2sgPSBuZXR4X2hpZl9tYXNrX2lycSwKKwkudW5tYXNrID0gbmV0eF9oaWZfdW5tYXNrX2lycSwKKwkuc2V0X3R5cGUgPSBuZXR4X2hpZl9pcnFfdHlwZSwKK307CisKK3ZvaWQgX19pbml0IG5ldHhfaW5pdF9pcnEodm9pZCkKK3sKKwlpbnQgaXJxOworCisJdmljX2luaXQoX19pbyhpb19wMnYoTkVUWF9QQV9WSUMpKSwgMCwgfjApOworCisJZm9yIChpcnEgPSBORVRYX0lSUV9ISUZfQ0hBSU5FRCgwKTsgaXJxIDw9IE5FVFhfSVJRX0hJRl9MQVNUOyBpcnErKykgeworCQlzZXRfaXJxX2NoaXAoaXJxLCAmbmV0eF9oaWZfY2hpcCk7CisJCXNldF9pcnFfaGFuZGxlcihpcnEsIGRvX2xldmVsX0lSUSk7CisJCXNldF9pcnFfZmxhZ3MoaXJxLCBJUlFGX1ZBTElEKTsKKwl9CisKKwl3cml0ZWwoTkVUWF9EUE1BU19JTlRfRU5fR0xCX0VOLCBORVRYX0RQTUFTX0lOVF9FTik7CisJc2V0X2lycV9jaGFpbmVkX2hhbmRsZXIoTkVUWF9JUlFfSElGLCBuZXR4X2hpZl9kZW11eF9oYW5kbGVyKTsKK30KKworc3RhdGljIGludCBfX2luaXQgbmV0eF9pbml0KHZvaWQpCit7CisJcmV0dXJuIHBsYXRmb3JtX2FkZF9kZXZpY2VzKGRldmljZXMsIEFSUkFZX1NJWkUoZGV2aWNlcykpOworfQorCitzdWJzeXNfaW5pdGNhbGwobmV0eF9pbml0KTsKKwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L2dlbmVyaWMuaCBiL2FyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlMmQzNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmgKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtbmV0eC9nZW5lcmljLmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworZXh0ZXJuIHZvaWQgX19pbml0IG5ldHhfbWFwX2lvKHZvaWQpOworZXh0ZXJuIHZvaWQgX19pbml0IG5ldHhfaW5pdF9pcnEodm9pZCk7CisKK3N0cnVjdCBzeXNfdGltZXI7CitleHRlcm4gc3RydWN0IHN5c190aW1lciBuZXR4X3RpbWVyOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L254ZGI1MDAuYyBiL2FyY2gvYXJtL21hY2gtbmV0eC9ueGRiNTAwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRhMTMzZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC9ueGRiNTAwLmMKQEAgLTAsMCArMSwyMTAgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLW5ldHgvbnhkYjUwMC5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGxhdC1yYW0uaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9hbWJhL2J1cy5oPgorI2luY2x1ZGUgPGxpbnV4L2FtYmEvY2xjZC5oPgorCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbmV0eC1yZWdzLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZXRoLmg+CisKKyNpbmNsdWRlICJnZW5lcmljLmgiCisjaW5jbHVkZSAiZmIuaCIKKworc3RhdGljIHN0cnVjdCBjbGNkX3BhbmVsIHF2Z2EgPSB7CisJLm1vZGUJCT0geworCQkubmFtZQkJPSAiUVZHQSIsCisJCS5yZWZyZXNoCT0gNjAsCisJCS54cmVzCQk9IDI0MCwKKwkJLnlyZXMJCT0gMzIwLAorCQkucGl4Y2xvY2sJPSAxODc2MTcsCisJCS5sZWZ0X21hcmdpbgk9IDYsCisJCS5yaWdodF9tYXJnaW4JPSAyNiwKKwkJLnVwcGVyX21hcmdpbgk9IDAsCisJCS5sb3dlcl9tYXJnaW4JPSA2LAorCQkuaHN5bmNfbGVuCT0gNiwKKwkJLnZzeW5jX2xlbgk9IDEsCisJCS5zeW5jCQk9IDAsCisJCS52bW9kZQkJPSBGQl9WTU9ERV9OT05JTlRFUkxBQ0VELAorCX0sCisJLndpZHRoCQk9IC0xLAorCS5oZWlnaHQJCT0gLTEsCisJLnRpbTIJCT0gIDE2LAorCS5jbnRsCQk9IENOVExfTENEVEZUIHwgQ05UTF9CR1IsCisJLmJwcAkJPSAxNiwKKwkuZ3JheXNjYWxlCT0gMCwKK307CisKK3N0YXRpYyBpbmxpbmUgaW50IG54ZGI1MDBfY2hlY2soc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikKK3sKKwl2YXItPmdyZWVuLmxlbmd0aCA9IDU7CisJdmFyLT5ncmVlbi5tc2JfcmlnaHQgPSAwOworCisJcmV0dXJuIGNsY2RmYl9jaGVjayhmYiwgdmFyKTsKK30KKworc3RhdGljIGludCBueGRiNTAwX2NsY2Rfc2V0dXAoc3RydWN0IGNsY2RfZmIgKmZiKQoreworCXVuc2lnbmVkIGludCB2YWw7CisKKwlmYi0+ZmIudmFyLmdyZWVuLmxlbmd0aCA9IDU7CisJZmItPmZiLnZhci5ncmVlbi5tc2JfcmlnaHQgPSAwOworCisJLyogZW5hYmxlIGFzaWMgY29udHJvbCAqLworCXZhbCA9IHJlYWRsKE5FVFhfU1lTVEVNX0lPQ19BQ0NFU1NfS0VZKTsKKwl3cml0ZWwodmFsLCBORVRYX1NZU1RFTV9JT0NfQUNDRVNTX0tFWSk7CisKKwl3cml0ZWwoMywgTkVUWF9TWVNURU1fSU9DX0NSKTsKKworCXZhbCA9IHJlYWRsKE5FVFhfUElPX09VVFBJTyk7CisJd3JpdGVsKHZhbCB8IDEsIE5FVFhfUElPX09VVFBJTyk7CisKKwl2YWwgPSByZWFkbChORVRYX1BJT19PRVBJTyk7CisJd3JpdGVsKHZhbCB8IDEsIE5FVFhfUElPX09FUElPKTsKKwlyZXR1cm4gbmV0eF9jbGNkX3NldHVwKGZiKTsKK30KKworc3RhdGljIHN0cnVjdCBjbGNkX2JvYXJkIGNsY2RfZGF0YSA9IHsKKwkubmFtZQkJPSAibmV0WCIsCisJLmNoZWNrCQk9IG54ZGI1MDBfY2hlY2ssCisJLmRlY29kZQkJPSBjbGNkZmJfZGVjb2RlLAorCS5lbmFibGUJCT0gbmV0eF9jbGNkX2VuYWJsZSwKKwkuc2V0dXAJCT0gbnhkYjUwMF9jbGNkX3NldHVwLAorCS5tbWFwCQk9IG5ldHhfY2xjZF9tbWFwLAorCS5yZW1vdmUJCT0gbmV0eF9jbGNkX3JlbW92ZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgbmV0eGV0aF9wbGF0Zm9ybV9kYXRhIGV0aDBfcGxhdGZvcm1fZGF0YSA9IHsKKwkueGNubyA9IDAsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXR4X2V0aDBfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LWV0aCIsCisJLmlkCQk9IDAsCisJLm51bV9yZXNvdXJjZXMJPSAwLAorCS5yZXNvdXJjZQk9IE5VTEwsCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmZXRoMF9wbGF0Zm9ybV9kYXRhLAorCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgbmV0eGV0aF9wbGF0Zm9ybV9kYXRhIGV0aDFfcGxhdGZvcm1fZGF0YSA9IHsKKwkueGNubyA9IDEsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXR4X2V0aDFfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LWV0aCIsCisJLmlkCQk9IDEsCisJLm51bV9yZXNvdXJjZXMJPSAwLAorCS5yZXNvdXJjZQk9IE5VTEwsCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmZXRoMV9wbGF0Zm9ybV9kYXRhLAorCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgbmV0eF91YXJ0MF9yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IDB4MDAxMDBBMDAsCisJCS5lbmQJPSAweDAwMTAwQTNGLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0CT0gKE5FVFhfSVJRX1VBUlQwKSwKKwkJLmVuZAk9IChORVRYX0lSUV9VQVJUMCksCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXR4X3VhcnQwX2RldmljZSA9IHsKKwkubmFtZQkJPSAibmV0eC11YXJ0IiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUobmV0eF91YXJ0MF9yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQk9IG5ldHhfdWFydDBfcmVzb3VyY2VzLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBuZXR4X3VhcnQxX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0CT0gMHgwMDEwMEE0MCwKKwkJLmVuZAk9IDB4MDAxMDBBN0YsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSAoTkVUWF9JUlFfVUFSVDEpLAorCQkuZW5kCT0gKE5FVFhfSVJRX1VBUlQxKSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldHhfdWFydDFfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LXVhcnQiLAorCS5pZAkJPSAxLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShuZXR4X3VhcnQxX3Jlc291cmNlcyksCisJLnJlc291cmNlCT0gbmV0eF91YXJ0MV9yZXNvdXJjZXMsCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG5ldHhfdWFydDJfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSAweDAwMTAwQTgwLAorCQkuZW5kCT0gMHgwMDEwMEFCRiwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMV0gPSB7CisJCS5zdGFydAk9IChORVRYX0lSUV9VQVJUMiksCisJCS5lbmQJPSAoTkVUWF9JUlFfVUFSVDIpLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbmV0eF91YXJ0Ml9kZXZpY2UgPSB7CisJLm5hbWUJCT0gIm5ldHgtdWFydCIsCisJLmlkCQk9IDIsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKG5ldHhfdWFydDJfcmVzb3VyY2VzKSwKKwkucmVzb3VyY2UJPSBuZXR4X3VhcnQyX3Jlc291cmNlcywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKKwkmbmV0eF9ldGgwX2RldmljZSwKKwkmbmV0eF9ldGgxX2RldmljZSwKKwkmbmV0eF91YXJ0MF9kZXZpY2UsCisJJm5ldHhfdWFydDFfZGV2aWNlLAorCSZuZXR4X3VhcnQyX2RldmljZSwKK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBueGRiNTAwX2luaXQodm9pZCkKK3sKKwluZXR4X2ZiX2luaXQoJmNsY2RfZGF0YSwgJnF2Z2EpOworCXBsYXRmb3JtX2FkZF9kZXZpY2VzKGRldmljZXMsIEFSUkFZX1NJWkUoZGV2aWNlcykpOworfQorCitNQUNISU5FX1NUQVJUKE5YREI1MDAsICJIaWxzY2hlciBueGRiNTAwIikKKwkucGh5c19pbwk9IDB4MDAxMDAwMDAsCisJLmlvX3BnX29mZnN0CT0gKGlvX3AydigweDAwMTAwMDAwKSA+PiAxOCkgJiAweGZmZmMsCisJLmJvb3RfcGFyYW1zCT0gMHg4MDAwMDEwMCwKKwkubWFwX2lvCQk9IG5ldHhfbWFwX2lvLAorCS5pbml0X2lycQk9IG5ldHhfaW5pdF9pcnEsCisJLnRpbWVyCQk9ICZuZXR4X3RpbWVyLAorCS5pbml0X21hY2hpbmUJPSBueGRiNTAwX2luaXQsCitNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L254ZGtuLmMgYi9hcmNoL2FybS9tYWNoLW5ldHgvbnhka24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTI2YzQyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1uZXR4L254ZGtuLmMKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLW5ldHgvbnhka24uYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvbXRkL3BsYXQtcmFtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvYW1iYS9idXMuaD4KKyNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2QuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2V0aC5oPgorCisjaW5jbHVkZSAiZ2VuZXJpYy5oIgorCitzdGF0aWMgc3RydWN0IG5ldHhldGhfcGxhdGZvcm1fZGF0YSBldGgwX3BsYXRmb3JtX2RhdGEgPSB7CisJLnhjbm8gPSAwLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugbnhka25fZXRoMF9kZXZpY2UgPSB7CisJLm5hbWUJCT0gIm5ldHgtZXRoIiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IDAsCisJLnJlc291cmNlCT0gTlVMTCwKKwkuZGV2ID0geworCQkucGxhdGZvcm1fZGF0YSA9ICZldGgwX3BsYXRmb3JtX2RhdGEsCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBuZXR4ZXRoX3BsYXRmb3JtX2RhdGEgZXRoMV9wbGF0Zm9ybV9kYXRhID0geworCS54Y25vID0gMSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG54ZGtuX2V0aDFfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LWV0aCIsCisJLmlkCQk9IDEsCisJLm51bV9yZXNvdXJjZXMJPSAwLAorCS5yZXNvdXJjZQk9IE5VTEwsCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmZXRoMV9wbGF0Zm9ybV9kYXRhLAorCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgbmV0eF91YXJ0MF9yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IDB4MDAxMDBBMDAsCisJCS5lbmQJPSAweDAwMTAwQTNGLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0CT0gKE5FVFhfSVJRX1VBUlQwKSwKKwkJLmVuZAk9IChORVRYX0lSUV9VQVJUMCksCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuZXR4X3VhcnQwX2RldmljZSA9IHsKKwkubmFtZQkJPSAibmV0eC11YXJ0IiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUobmV0eF91YXJ0MF9yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQk9IG5ldHhfdWFydDBfcmVzb3VyY2VzLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldmljZXNbXSBfX2luaXRkYXRhID0geworCSZueGRrbl9ldGgwX2RldmljZSwKKwkmbnhka25fZXRoMV9kZXZpY2UsCisJJm5ldHhfdWFydDBfZGV2aWNlLAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IG54ZGtuX2luaXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhkZXZpY2VzLCBBUlJBWV9TSVpFKGRldmljZXMpKTsKK30KKworTUFDSElORV9TVEFSVChOWERLTiwgIkhpbHNjaGVyIG54ZGtuIikKKwkucGh5c19pbwk9IDB4MDAxMDAwMDAsCisJLmlvX3BnX29mZnN0CT0gKGlvX3AydigweDAwMTAwMDAwKSA+PiAxOCkgJiAweGZmZmMsCisJLmJvb3RfcGFyYW1zCT0gMHg4MDAwMDEwMCwKKwkubWFwX2lvCQk9IG5ldHhfbWFwX2lvLAorCS5pbml0X2lycQk9IG5ldHhfaW5pdF9pcnEsCisJLnRpbWVyCQk9ICZuZXR4X3RpbWVyLAorCS5pbml0X21hY2hpbmUJPSBueGRrbl9pbml0LAorTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbmV0eC9ueGViNTAwaG1pLmMgYi9hcmNoL2FybS9tYWNoLW5ldHgvbnhlYjUwMGhtaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTEwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLW5ldHgvbnhlYjUwMGhtaS5jCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogYXJjaC9hcm0vbWFjaC1uZXR4L254ZWI1MDBobWkuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvbXRkL3BsYXQtcmFtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvYW1iYS9idXMuaD4KKyNpbmNsdWRlIDxsaW51eC9hbWJhL2NsY2QuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2V0aC5oPgorCisjaW5jbHVkZSAiZ2VuZXJpYy5oIgorI2luY2x1ZGUgImZiLmgiCisKK3N0YXRpYyBzdHJ1Y3QgY2xjZF9wYW5lbCBxdmdhID0geworCS5tb2RlCQk9IHsKKwkJLm5hbWUJCT0gIlFWR0EiLAorCQkucmVmcmVzaAk9IDYwLAorCQkueHJlcwkJPSAyNDAsCisJCS55cmVzCQk9IDMyMCwKKwkJLnBpeGNsb2NrCT0gMTg3NjE3LAorCQkubGVmdF9tYXJnaW4JPSA2LAorCQkucmlnaHRfbWFyZ2luCT0gMjYsCisJCS51cHBlcl9tYXJnaW4JPSAwLAorCQkubG93ZXJfbWFyZ2luCT0gNiwKKwkJLmhzeW5jX2xlbgk9IDYsCisJCS52c3luY19sZW4JPSAxLAorCQkuc3luYwkJPSAwLAorCQkudm1vZGUJCT0gRkJfVk1PREVfTk9OSU5URVJMQUNFRCwKKwl9LAorCS53aWR0aAkJPSAtMSwKKwkuaGVpZ2h0CQk9IC0xLAorCS50aW0yCQk9ICAxNiwKKwkuY250bAkJPSBDTlRMX0xDRFRGVCB8IENOVExfQkdSLAorCS5icHAJCT0gMTYsCisJLmdyYXlzY2FsZQk9IDAsCit9OworCitzdGF0aWMgaW5saW5lIGludCBueGViNTAwaG1pX2NoZWNrKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCit7CisJdmFyLT5ncmVlbi5sZW5ndGggPSA1OworCXZhci0+Z3JlZW4ubXNiX3JpZ2h0ID0gMDsKKworCXJldHVybiBjbGNkZmJfY2hlY2soZmIsIHZhcik7Cit9CisKK3N0YXRpYyBpbnQgbnhlYjUwMGhtaV9jbGNkX3NldHVwKHN0cnVjdCBjbGNkX2ZiICpmYikKK3sKKwl1bnNpZ25lZCBpbnQgdmFsOworCisJZmItPmZiLnZhci5ncmVlbi5sZW5ndGggPSA1OworCWZiLT5mYi52YXIuZ3JlZW4ubXNiX3JpZ2h0ID0gMDsKKworCS8qIGVuYWJsZSBhc2ljIGNvbnRyb2wgKi8KKwl2YWwgPSByZWFkbChORVRYX1NZU1RFTV9JT0NfQUNDRVNTX0tFWSk7CisJd3JpdGVsKHZhbCwgTkVUWF9TWVNURU1fSU9DX0FDQ0VTU19LRVkpOworCisJd3JpdGVsKDMsIE5FVFhfU1lTVEVNX0lPQ19DUik7CisKKwkvKiBHUElPIDE0IGlzIHVzZWQgZm9yIGRpc3BsYXkgZW5hYmxlIG9uIG5ld2VyIGJvYXJkcyAqLworCXdyaXRlbCg5LCBORVRYX0dQSU9fQ0ZHKDE0KSk7CisKKwl2YWwgPSByZWFkbChORVRYX1BJT19PVVRQSU8pOworCXdyaXRlbCh2YWwgfCAxLCBORVRYX1BJT19PVVRQSU8pOworCisJdmFsID0gcmVhZGwoTkVUWF9QSU9fT0VQSU8pOworCXdyaXRlbCh2YWwgfCAxLCBORVRYX1BJT19PRVBJTyk7CisJcmV0dXJuIG5ldHhfY2xjZF9zZXR1cChmYik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY2xjZF9ib2FyZCBjbGNkX2RhdGEgPSB7CisJLm5hbWUJCT0gIm5ldFgiLAorCS5jaGVjawkJPSBueGViNTAwaG1pX2NoZWNrLAorCS5kZWNvZGUJCT0gY2xjZGZiX2RlY29kZSwKKwkuZW5hYmxlCQk9IG5ldHhfY2xjZF9lbmFibGUsCisJLnNldHVwCQk9IG54ZWI1MDBobWlfY2xjZF9zZXR1cCwKKwkubW1hcAkJPSBuZXR4X2NsY2RfbW1hcCwKKwkucmVtb3ZlCQk9IG5ldHhfY2xjZF9yZW1vdmUsCit9OworCitzdGF0aWMgc3RydWN0IG5ldHhldGhfcGxhdGZvcm1fZGF0YSBldGgwX3BsYXRmb3JtX2RhdGEgPSB7CisJLnhjbm8gPSAwLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbmV0eF9ldGgwX2RldmljZSA9IHsKKwkubmFtZQkJPSAibmV0eC1ldGgiLAorCS5pZAkJPSAwLAorCS5udW1fcmVzb3VyY2VzCT0gMCwKKwkucmVzb3VyY2UJPSBOVUxMLAorCS5kZXYgPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJmV0aDBfcGxhdGZvcm1fZGF0YSwKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IG5ldHhldGhfcGxhdGZvcm1fZGF0YSBldGgxX3BsYXRmb3JtX2RhdGEgPSB7CisJLnhjbm8gPSAxLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbmV0eF9ldGgxX2RldmljZSA9IHsKKwkubmFtZQkJPSAibmV0eC1ldGgiLAorCS5pZAkJPSAxLAorCS5udW1fcmVzb3VyY2VzCT0gMCwKKwkucmVzb3VyY2UJPSBOVUxMLAorCS5kZXYgPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJmV0aDFfcGxhdGZvcm1fZGF0YSwKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG5ldHhfY2ZfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSAweDIwMDAwMDAwLAorCQkuZW5kCT0gMHgyNWZmZmZmZiwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0gfCBJT1JFU09VUkNFX01FTV84QU5EMTZCSVQsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldHhfY2ZfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LWNmIiwKKwkuaWQJCT0gMCwKKwkucmVzb3VyY2UJPSBuZXR4X2NmX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUobmV0eF9jZl9yZXNvdXJjZXMpLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBuZXR4X3VhcnQwX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0CT0gMHgwMDEwMEEwMCwKKwkJLmVuZAk9IDB4MDAxMDBBM0YsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSAoTkVUWF9JUlFfVUFSVDApLAorCQkuZW5kCT0gKE5FVFhfSVJRX1VBUlQwKSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5ldHhfdWFydDBfZGV2aWNlID0geworCS5uYW1lCQk9ICJuZXR4LXVhcnQiLAorCS5pZAkJPSAwLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShuZXR4X3VhcnQwX3Jlc291cmNlcyksCisJLnJlc291cmNlCT0gbmV0eF91YXJ0MF9yZXNvdXJjZXMsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2aWNlc1tdIF9faW5pdGRhdGEgPSB7CisJJm5ldHhfZXRoMF9kZXZpY2UsCisJJm5ldHhfZXRoMV9kZXZpY2UsCisJJm5ldHhfY2ZfZGV2aWNlLAorCSZuZXR4X3VhcnQwX2RldmljZSwKK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBueGViNTAwaG1pX2luaXQodm9pZCkKK3sKKwluZXR4X2ZiX2luaXQoJmNsY2RfZGF0YSwgJnF2Z2EpOworCXBsYXRmb3JtX2FkZF9kZXZpY2VzKGRldmljZXMsIEFSUkFZX1NJWkUoZGV2aWNlcykpOworfQorCitNQUNISU5FX1NUQVJUKE5YRUI1MDBITUksICJIaWxzY2hlciBueGViNTAwaG1pIikKKwkucGh5c19pbwk9IDB4MDAxMDAwMDAsCisJLmlvX3BnX29mZnN0CT0gKGlvX3AydigweDAwMTAwMDAwKSA+PiAxOCkgJiAweGZmZmMsCisJLmJvb3RfcGFyYW1zCT0gMHg4MDAwMDEwMCwKKwkubWFwX2lvCQk9IG5ldHhfbWFwX2lvLAorCS5pbml0X2lycQk9IG5ldHhfaW5pdF9pcnEsCisJLnRpbWVyCQk9ICZuZXR4X3RpbWVyLAorCS5pbml0X21hY2hpbmUJPSBueGViNTAwaG1pX2luaXQsCitNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L3BmaWZvLmMgYi9hcmNoL2FybS9tYWNoLW5ldHgvcGZpZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGRlYTYxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1uZXR4L3BmaWZvLmMKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtbmV0eC9wZmlmby5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3BmaWZvLmg+CisKK3N0YXRpYyBERUZJTkVfTVVURVgocGZpZm9fbG9jayk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGZpZm9fdXNlZCA9IDA7CisKK2ludCBwZmlmb19yZXF1ZXN0KHVuc2lnbmVkIGludCBwZmlmb19tYXNrKQoreworCWludCBlcnIgPSAwOworCXVuc2lnbmVkIGludCB2YWw7CisKKwltdXRleF9sb2NrKCZwZmlmb19sb2NrKTsKKworCWlmIChwZmlmb19tYXNrICYgcGZpZm9fdXNlZCkgeworCQllcnIgPSAtRUJVU1k7CisJCWdvdG8gb3V0OworCX0KKworCXBmaWZvX3VzZWQgfD0gcGZpZm9fbWFzazsKKworCXZhbCA9IHJlYWRsKE5FVFhfUEZJRk9fUkVTRVQpOworCXdyaXRlbCh2YWwgfCBwZmlmb19tYXNrLCBORVRYX1BGSUZPX1JFU0VUKTsKKwl3cml0ZWwodmFsLCBORVRYX1BGSUZPX1JFU0VUKTsKKworb3V0OgorCW11dGV4X3VubG9jaygmcGZpZm9fbG9jayk7CisJcmV0dXJuIGVycjsKK30KKwordm9pZCBwZmlmb19mcmVlKHVuc2lnbmVkIGludCBwZmlmb19tYXNrKQoreworCW11dGV4X2xvY2soJnBmaWZvX2xvY2spOworCXBmaWZvX3VzZWQgJj0gfnBmaWZvX21hc2s7CisJbXV0ZXhfdW5sb2NrKCZwZmlmb19sb2NrKTsKK30KKworRVhQT1JUX1NZTUJPTChwZmlmb19wdXNoKTsKK0VYUE9SVF9TWU1CT0wocGZpZm9fcG9wKTsKK0VYUE9SVF9TWU1CT0wocGZpZm9fZmlsbF9sZXZlbCk7CitFWFBPUlRfU1lNQk9MKHBmaWZvX2VtcHR5KTsKK0VYUE9SVF9TWU1CT0wocGZpZm9fcmVxdWVzdCk7CitFWFBPUlRfU1lNQk9MKHBmaWZvX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L3RpbWUuYyBiL2FyY2gvYXJtL21hY2gtbmV0eC90aW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmYmRmNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtbmV0eC90aW1lLmMKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtbmV0eC90aW1lLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9uZXR4LXJlZ3MuaD4KKworLyoKKyAqIFJldHVybnMgbnVtYmVyIG9mIHVzIHNpbmNlIGxhc3QgY2xvY2sgaW50ZXJydXB0LiAgTm90ZSB0aGF0IGludGVycnVwdHMKKyAqIHdpbGwgaGF2ZSBiZWVuIGRpc2FibGVkIGJ5IGRvX2dldHRpbWVvZmZzZXQoKQorICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBuZXR4X2dldHRpbWVvZmZzZXQodm9pZCkKK3sKKwlyZXR1cm4gcmVhZGwoTkVUWF9HUElPX0NPVU5URVJfQ1VSUkVOVCgwKSkgLyAxMDA7Cit9CisKKy8qCisgKiBJUlEgaGFuZGxlciBmb3IgdGhlIHRpbWVyCisgKi8KK3N0YXRpYyBpcnFyZXR1cm5fdAorbmV0eF90aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwl3cml0ZV9zZXFsb2NrKCZ4dGltZV9sb2NrKTsKKworCXRpbWVyX3RpY2socmVncyk7CisJd3JpdGVfc2VxdW5sb2NrKCZ4dGltZV9sb2NrKTsKKworCS8qIGFja25vd2xlZGdlIGludGVycnVwdCAqLworCXdyaXRlbChDT1VOVEVSX0JJVCgwKSwgTkVUWF9HUElPX0lSUSk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKKworc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gbmV0eF90aW1lcl9pcnEgPSB7CisJLm5hbWUgICAgICAgICAgID0gIk5ldFggVGltZXIgVGljayIsCisJLmZsYWdzICAgICAgICAgID0gU0FfSU5URVJSVVBUIHwgU0FfVElNRVIsCisJLmhhbmRsZXIgICAgICAgID0gbmV0eF90aW1lcl9pbnRlcnJ1cHQsCit9OworCisvKgorICogU2V0IHVwIHRpbWVyIGludGVycnVwdAorICovCitzdGF0aWMgdm9pZCBfX2luaXQgbmV0eF90aW1lcl9pbml0KHZvaWQpCit7CisJLyogZGlzYWJsZSB0aW1lciBpbml0aWFsbHkgKi8KKwl3cml0ZWwoMCwgTkVUWF9HUElPX0NPVU5URVJfQ1RSTCgwKSk7CisKKwkvKiBSZXNldCB0aGUgdGltZXIgdmFsdWUgdG8gemVybyAqLworCXdyaXRlbCgwLCBORVRYX0dQSU9fQ09VTlRFUl9DVVJSRU5UKDApKTsKKworCXdyaXRlbChMQVRDSCwgTkVUWF9HUElPX0NPVU5URVJfTUFYKDApKTsKKworCS8qIGFja25vd2xlZGdlIGludGVycnVwdCAqLworCXdyaXRlbChDT1VOVEVSX0JJVCgwKSwgTkVUWF9HUElPX0lSUSk7CisKKwkvKiBFbmFibGUgdGhlIGludGVycnVwdCBpbiB0aGUgc3BlY2lmaWMgdGltZXIgcmVnaXN0ZXIgYW5kIHN0YXJ0IHRpbWVyICovCisJd3JpdGVsKENPVU5URVJfQklUKDApLCBORVRYX0dQSU9fSVJRX0VOQUJMRSk7CisJd3JpdGVsKE5FVFhfR1BJT19DT1VOVEVSX0NUUkxfSVJRX0VOIHwgTkVUWF9HUElPX0NPVU5URVJfQ1RSTF9SVU4sCisJCU5FVFhfR1BJT19DT1VOVEVSX0NUUkwoMCkpOworCisJc2V0dXBfaXJxKE5FVFhfSVJRX1RJTUVSMCwgJm5ldHhfdGltZXJfaXJxKTsKK30KKworc3RydWN0IHN5c190aW1lciBuZXR4X3RpbWVyID0geworCS5pbml0ICAgICAgICAgICA9IG5ldHhfdGltZXJfaW5pdCwKKwkub2Zmc2V0ICAgICAgICAgPSBuZXR4X2dldHRpbWVvZmZzZXQsCit9OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1uZXR4L3hjLmMgYi9hcmNoL2FybS9tYWNoLW5ldHgveGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzJhMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1uZXR4L3hjLmMKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLW5ldHgveGMuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorCisjaW5jbHVkZSA8YXNtL2FyY2gveGMuaD4KKworc3RhdGljIERFRklORV9NVVRFWCh4Y19sb2NrKTsKKworc3RhdGljIGludCB4Y19pbl91c2UgPSAwOworCitzdHJ1Y3QgZndfZGVzYyB7CisJdW5zaWduZWQgaW50IG9mczsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwl1bnNpZ25lZCBpbnQgcGF0Y2hfb2ZzOworCXVuc2lnbmVkIGludCBwYXRjaF9lbnRyaWVzOworfTsKKworc3RydWN0IGZ3X2hlYWRlciB7CisJdW5zaWduZWQgaW50IG1hZ2ljOworCXVuc2lnbmVkIGludCB0eXBlOworCXVuc2lnbmVkIGludCB2ZXJzaW9uOworCXVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKKwlzdHJ1Y3QgZndfZGVzYyBmd19kZXNjWzNdOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK2ludCB4Y19zdG9wKHN0cnVjdCB4YyAqeCkKK3sKKwl3cml0ZWwoUlBVX0hPTERfUEMsIHgtPnhtYWNfYmFzZSArIE5FVFhfWE1BQ19SUFVfSE9MRF9QQ19PRlMpOworCXdyaXRlbChUUFVfSE9MRF9QQywgeC0+eG1hY19iYXNlICsgTkVUWF9YTUFDX1RQVV9IT0xEX1BDX09GUyk7CisJd3JpdGVsKFhQVV9IT0xEX1BDLCB4LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfWFBVX0hPTERfUENfT0ZTKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHhjX3N0YXJ0KHN0cnVjdCB4YyAqeCkKK3sKKwl3cml0ZWwoMCwgeC0+eG1hY19iYXNlICsgTkVUWF9YTUFDX1JQVV9IT0xEX1BDX09GUyk7CisJd3JpdGVsKDAsIHgtPnhtYWNfYmFzZSArIE5FVFhfWE1BQ19UUFVfSE9MRF9QQ19PRlMpOworCXdyaXRlbCgwLCB4LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfWFBVX0hPTERfUENfT0ZTKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHhjX3J1bm5pbmcoc3RydWN0IHhjICp4KQoreworCXJldHVybiAocmVhZGwoeC0+eG1hY19iYXNlICsgTkVUWF9YTUFDX1JQVV9IT0xEX1BDX09GUykgJiBSUFVfSE9MRF9QQykKKwkgICAgfHwgKHJlYWRsKHgtPnhtYWNfYmFzZSArIE5FVFhfWE1BQ19UUFVfSE9MRF9QQ19PRlMpICYgVFBVX0hPTERfUEMpCisJICAgIHx8IChyZWFkbCh4LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfWFBVX0hPTERfUENfT0ZTKSAmIFhQVV9IT0xEX1BDKSA/CisJCTAgOiAxOworfQorCitpbnQgeGNfcmVzZXQoc3RydWN0IHhjICp4KQoreworCXdyaXRlbCgwLCB4LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfUENfT0ZTKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4Y19jaGVja19wdHIoc3RydWN0IHhjICp4LCB1bnNpZ25lZCBsb25nIGFkciwgdW5zaWduZWQgaW50IHNpemUpCit7CisJaWYgKGFkciA+PSBORVRYX1BBX1hNQUMoeC0+bm8pICYmCisJICAgIGFkciArIHNpemUgPCBORVRYX1BBX1hNQUMoeC0+bm8pICsgWE1BQ19NRU1fU0laRSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoYWRyID49IE5FVFhfUEFfWFBFQyh4LT5ubykgJiYKKwkgICAgYWRyICsgc2l6ZSA8IE5FVFhfUEFfWFBFQyh4LT5ubykgKyBYUEVDX01FTV9TSVpFKQorCQlyZXR1cm4gMDsKKworCWRldl9lcnIoeC0+ZGV2LCAiSWxsZWdhbCBwb2ludGVyIGluIGZpcm13YXJlIGZvdW5kLiBhYm9ydGluZ1xuIik7CisKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQgeGNfcGF0Y2goc3RydWN0IHhjICp4LCB2b2lkICpwYXRjaCwgaW50IGNvdW50KQoreworCXVuc2lnbmVkIGludCB2YWwsIGFkcjsKKwl1bnNpZ25lZCBpbnQgKmRhdGEgPSBwYXRjaDsKKworCWludCBpOworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCWFkciA9ICpkYXRhKys7CisJCXZhbCA9ICpkYXRhKys7CisJCWlmICh4Y19jaGVja19wdHIoeCwgYWRyLCA0KSA8IDApCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQl3cml0ZWwodmFsLCAodm9pZCBfX2lvbWVtICopaW9fcDJ2KGFkcikpOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IHhjX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IHhjICp4KQoreworCWludCByZXQ7CisJY2hhciBuYW1lWzE2XTsKKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OworCXN0cnVjdCBmd19oZWFkZXIgKmhlYWQ7CisJdW5zaWduZWQgaW50IHNpemU7CisJaW50IGk7CisJdm9pZCAqc3JjOworCXVuc2lnbmVkIGxvbmcgZHN0OworCisJc3ByaW50ZihuYW1lLCAieGMlZC5iaW4iLCB4LT5ubyk7CisKKwlyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgbmFtZSwgeC0+ZGV2KTsKKworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoeC0+ZGV2LCAicmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWhlYWQgPSAoc3RydWN0IGZ3X2hlYWRlciAqKWZ3LT5kYXRhOworCWlmIChoZWFkLT5tYWdpYyAhPSAweDRlNjU3NDU4KSB7CisJCWlmIChoZWFkLT5tYWdpYyA9PSAweDU4NzQ2NTRlKSB7CisJCQlkZXZfZXJyKHgtPmRldiwKKwkJCSAgICAiZmlybXdhcmUgbWFnaWMgaXMgJ1h0ZU4nLiBFbmRpYW5lc3MgcHJvYmxlbXM/XG4iKTsKKwkJCXJldCA9IC1FTk9ERVY7CisJCQlnb3RvIGV4aXRfcmVsZWFzZV9maXJtd2FyZTsKKwkJfQorCQlkZXZfZXJyKHgtPmRldiwgInVucmVjb2duaXplZCBmaXJtd2FyZSBtYWdpYyAweCUwOHhcbiIsCisJCQloZWFkLT5tYWdpYyk7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8gZXhpdF9yZWxlYXNlX2Zpcm13YXJlOworCX0KKworCXgtPnR5cGUgPSBoZWFkLT50eXBlOworCXgtPnZlcnNpb24gPSBoZWFkLT52ZXJzaW9uOworCisJcmV0ID0gLUVJTlZBTDsKKworCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJc3JjID0gZnctPmRhdGEgKyBoZWFkLT5md19kZXNjW2ldLm9mczsKKwkJZHN0ID0gKih1bnNpZ25lZCBpbnQgKilzcmM7CisJCXNyYyArPSBzaXplb2YgKHVuc2lnbmVkIGludCk7CisJCXNpemUgPSBoZWFkLT5md19kZXNjW2ldLnNpemUgLSBzaXplb2YgKHVuc2lnbmVkIGludCk7CisKKwkJaWYgKHhjX2NoZWNrX3B0cih4LCBkc3QsIHNpemUpKQorCQkJZ290byBleGl0X3JlbGVhc2VfZmlybXdhcmU7CisKKwkJbWVtY3B5KCh2b2lkICopaW9fcDJ2KGRzdCksIHNyYywgc2l6ZSk7CisKKwkJc3JjID0gZnctPmRhdGEgKyBoZWFkLT5md19kZXNjW2ldLnBhdGNoX29mczsKKwkJc2l6ZSA9IGhlYWQtPmZ3X2Rlc2NbaV0ucGF0Y2hfZW50cmllczsKKwkJcmV0ID0geGNfcGF0Y2goeCwgc3JjLCBzaXplKTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3RvIGV4aXRfcmVsZWFzZV9maXJtd2FyZTsKKwl9CisKKwlyZXQgPSAwOworCisgICAgICBleGl0X3JlbGVhc2VfZmlybXdhcmU6CisJcmVsZWFzZV9maXJtd2FyZShmdyk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdHJ1Y3QgeGMgKnJlcXVlc3RfeGMoaW50IHhjbm8sIHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgeGMgKnggPSBOVUxMOworCisJbXV0ZXhfbG9jaygmeGNfbG9jayk7CisKKwlpZiAoeGNubyA+IDMpCisJCWdvdG8gZXhpdDsKKwlpZiAoeGNfaW5fdXNlICYgKDEgPDwgeGNubykpCisJCWdvdG8gZXhpdDsKKworCXggPSBrbWFsbG9jKHNpemVvZiAoc3RydWN0IHhjKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF4KQorCQlnb3RvIGV4aXQ7CisKKwlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbgorCSAgICAoTkVUWF9QQV9YUEVDKHhjbm8pLCBYUEVDX01FTV9TSVpFLCBkZXYtPmtvYmoubmFtZSkpCisJCWdvdG8gZXhpdF9mcmVlOworCisJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24KKwkgICAgKE5FVFhfUEFfWE1BQyh4Y25vKSwgWE1BQ19NRU1fU0laRSwgZGV2LT5rb2JqLm5hbWUpKQorCQlnb3RvIGV4aXRfcmVsZWFzZV8xOworCisJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24KKwkgICAgKFNSQU1fSU5URVJOQUxfUEhZUyh4Y25vKSwgU1JBTV9NRU1fU0laRSwgZGV2LT5rb2JqLm5hbWUpKQorCQlnb3RvIGV4aXRfcmVsZWFzZV8yOworCisJeC0+eHBlY19iYXNlID0gKHZvaWQgKiBfX2lvbWVtKWlvX3AydihORVRYX1BBX1hQRUMoeGNubykpOworCXgtPnhtYWNfYmFzZSA9ICh2b2lkICogX19pb21lbSlpb19wMnYoTkVUWF9QQV9YTUFDKHhjbm8pKTsKKwl4LT5zcmFtX2Jhc2UgPSBpb3JlbWFwKFNSQU1fSU5URVJOQUxfUEhZUyh4Y25vKSwgU1JBTV9NRU1fU0laRSk7CisJaWYgKCF4LT5zcmFtX2Jhc2UpCisJCWdvdG8gZXhpdF9yZWxlYXNlXzM7CisKKwl4LT5pcnEgPSBORVRYX0lSUV9YUEVDKHhjbm8pOworCisJeC0+bm8gPSB4Y25vOworCXgtPmRldiA9IGRldjsKKworCXhjX2luX3VzZSB8PSAoMSA8PCB4Y25vKTsKKworCWdvdG8gZXhpdDsKKworICAgICAgZXhpdF9yZWxlYXNlXzM6CisJcmVsZWFzZV9tZW1fcmVnaW9uKFNSQU1fSU5URVJOQUxfUEhZUyh4Y25vKSwgU1JBTV9NRU1fU0laRSk7CisgICAgICBleGl0X3JlbGVhc2VfMjoKKwlyZWxlYXNlX21lbV9yZWdpb24oTkVUWF9QQV9YTUFDKHhjbm8pLCBYTUFDX01FTV9TSVpFKTsKKyAgICAgIGV4aXRfcmVsZWFzZV8xOgorCXJlbGVhc2VfbWVtX3JlZ2lvbihORVRYX1BBX1hQRUMoeGNubyksIFhQRUNfTUVNX1NJWkUpOworICAgICAgZXhpdF9mcmVlOgorCWtmcmVlKHgpOworCXggPSBOVUxMOworICAgICAgZXhpdDoKKwltdXRleF91bmxvY2soJnhjX2xvY2spOworCXJldHVybiB4OworfQorCit2b2lkIGZyZWVfeGMoc3RydWN0IHhjICp4KQoreworCWludCB4Y25vID0geC0+bm87CisKKwltdXRleF9sb2NrKCZ4Y19sb2NrKTsKKworCWlvdW5tYXAoeC0+c3JhbV9iYXNlKTsKKwlyZWxlYXNlX21lbV9yZWdpb24oU1JBTV9JTlRFUk5BTF9QSFlTKHhjbm8pLCBTUkFNX01FTV9TSVpFKTsKKwlyZWxlYXNlX21lbV9yZWdpb24oTkVUWF9QQV9YTUFDKHhjbm8pLCBYTUFDX01FTV9TSVpFKTsKKwlyZWxlYXNlX21lbV9yZWdpb24oTkVUWF9QQV9YUEVDKHhjbm8pLCBYUEVDX01FTV9TSVpFKTsKKwl4Y19pbl91c2UgJj0gfigxIDw8IHgtPm5vKTsKKwlrZnJlZSh4KTsKKworCW11dGV4X3VubG9jaygmeGNfbG9jayk7Cit9CisKK0VYUE9SVF9TWU1CT0woZnJlZV94Yyk7CitFWFBPUlRfU1lNQk9MKHJlcXVlc3RfeGMpOworRVhQT1JUX1NZTUJPTCh4Y19yZXF1ZXN0X2Zpcm13YXJlKTsKK0VYUE9SVF9TWU1CT0woeGNfcmVzZXQpOworRVhQT1JUX1NZTUJPTCh4Y19ydW5uaW5nKTsKK0VYUE9SVF9TWU1CT0woeGNfc3RhcnQpOworRVhQT1JUX1NZTUJPTCh4Y19zdG9wKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtYW1zLWRlbHRhLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWFtcy1kZWx0YS5jCmluZGV4IDYxNzhmMDQuLjczZGYzMmEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtYW1zLWRlbHRhLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1hbXMtZGVsdGEuYwpAQCAtODQsNiArODQsMTUgQEAKIAl7IE9NQVBfVEFHX1VBUlQsCSZhbXNfZGVsdGFfdWFydF9jb25maWcgfSwKIH07CiAKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGFtc19kZWx0YV9sZWRfZGV2aWNlID0geworCS5uYW1lCT0gImFtcy1kZWx0YS1sZWQiLAorCS5pZAk9IC0xCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqYW1zX2RlbHRhX2RldmljZXNbXSBfX2luaXRkYXRhID0geworCSZhbXNfZGVsdGFfbGVkX2RldmljZSwKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBhbXNfZGVsdGFfaW5pdCh2b2lkKQogewogCWlvdGFibGVfaW5pdChhbXNfZGVsdGFfaW9fZGVzYywgQVJSQVlfU0laRShhbXNfZGVsdGFfaW9fZGVzYykpOwpAQCAtOTQsNiArMTAzLDggQEAKIAogCS8qIENsZWFyIGxhdGNoMiAoTkFORCwgTENELCBtb2RlbSBlbmFibGUpICovCiAJYW1zX2RlbHRhX2xhdGNoMl93cml0ZSh+MCwgMCk7CisKKwlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhhbXNfZGVsdGFfZGV2aWNlcywgQVJSQVlfU0laRShhbXNfZGVsdGFfZGV2aWNlcykpOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgYW1zX2RlbHRhX21hcF9pbyh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1wbng0MDA4L2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYwppbmRleCAyODViMjJmLi5mNTgyZWQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLXBueDQwMDgvY2xvY2suYwpAQCAtNzY3LDYgKzc2Nyw1NCBAQAogCSZ1YXJ0Nl9jaywKIH07CiAKK3N0YXRpYyBpbnQgbG9jYWxfY2xrX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGspCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAoIShjbGstPmZsYWdzICYgRklYRURfUkFURSkgJiYgIWNsay0+cmF0ZSAmJiBjbGstPnNldF9yYXRlCisJICAgICYmIGNsay0+dXNlcl9yYXRlKQorCQlyZXQgPSBjbGstPnNldF9yYXRlKGNsaywgY2xrLT51c2VyX3JhdGUpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGxvY2FsX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwlpZiAoIShjbGstPmZsYWdzICYgRklYRURfUkFURSkgJiYgY2xrLT5yYXRlICYmIGNsay0+c2V0X3JhdGUpCisJCWNsay0+c2V0X3JhdGUoY2xrLCAwKTsKK30KKworc3RhdGljIHZvaWQgbG9jYWxfY2xrX3VudXNlKHN0cnVjdCBjbGsgKmNsaykKK3sKKwlpZiAoY2xrLT51c2Vjb3VudCA+IDAgJiYgISgtLWNsay0+dXNlY291bnQpKSB7CisJCWxvY2FsX2Nsa19kaXNhYmxlKGNsayk7CisJCWlmIChjbGstPnBhcmVudCkKKwkJCWxvY2FsX2Nsa191bnVzZShjbGstPnBhcmVudCk7CisJfQorfQorCitzdGF0aWMgaW50IGxvY2FsX2Nsa191c2Uoc3RydWN0IGNsayAqY2xrKQoreworCWludCByZXQgPSAwOworCWlmIChjbGstPnVzZWNvdW50KysgPT0gMCkgeworCQlpZiAoY2xrLT5wYXJlbnQpCisJCQlyZXQgPSBsb2NhbF9jbGtfdXNlKGNsay0+cGFyZW50KTsKKworCQlpZiAocmV0ICE9IDApIHsKKwkJCWNsay0+dXNlY291bnQtLTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0ID0gbG9jYWxfY2xrX2VuYWJsZShjbGspOworCisJCWlmIChyZXQgIT0gMCAmJiBjbGstPnBhcmVudCkgeworCQkJbG9jYWxfY2xrX3VudXNlKGNsay0+cGFyZW50KTsKKwkJCWNsay0+dXNlY291bnQtLTsKKwkJfQorCX0KK291dDoKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGxvY2FsX3NldF9yYXRlKHN0cnVjdCBjbGsgKmNsaywgdTMyIHJhdGUpCiB7CiAJaW50IHJldCA9IC1FSU5WQUw7CkBAIC04NDcsMjggKzg5NSwxMiBAQAogfQogRVhQT1JUX1NZTUJPTChjbGtfZ2V0X3JhdGUpOwogCi1zdGF0aWMgaW50IGxvY2FsX2Nsa19lbmFibGUoc3RydWN0IGNsayAqY2xrKQotewotCWludCByZXQgPSAwOwotCi0JaWYgKCEoY2xrLT5mbGFncyAmIEZJWEVEX1JBVEUpICYmICFjbGstPnJhdGUgJiYgY2xrLT5zZXRfcmF0ZQotCSAgICAmJiBjbGstPnVzZXJfcmF0ZSkKLQkJcmV0ID0gY2xrLT5zZXRfcmF0ZShjbGssIGNsay0+dXNlcl9yYXRlKTsKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCBsb2NhbF9jbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspCi17Ci0JaWYgKCEoY2xrLT5mbGFncyAmIEZJWEVEX1JBVEUpICYmIGNsay0+cmF0ZSAmJiBjbGstPnNldF9yYXRlKQotCQljbGstPnNldF9yYXRlKGNsaywgMCk7Ci19Ci0KIGludCBjbGtfZW5hYmxlKHN0cnVjdCBjbGsgKmNsaykKIHsKIAlpbnQgcmV0ID0gMDsKIAogCWNsb2NrX2xvY2soKTsKLQlyZXQgPSBsb2NhbF9jbGtfZW5hYmxlKGNsayk7CisJcmV0ID0gbG9jYWxfY2xrX3VzZShjbGspOwogCWNsb2NrX3VubG9jaygpOwogCXJldHVybiByZXQ7CiB9CkBAIC04NzgsNzAgKzkxMCwxMSBAQAogdm9pZCBjbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspCiB7CiAJY2xvY2tfbG9jaygpOwotCWxvY2FsX2Nsa19kaXNhYmxlKGNsayk7Ci0JY2xvY2tfdW5sb2NrKCk7Ci19Ci0KLUVYUE9SVF9TWU1CT0woY2xrX2Rpc2FibGUpOwotCi1zdGF0aWMgdm9pZCBsb2NhbF9jbGtfdW51c2Uoc3RydWN0IGNsayAqY2xrKQotewotCWlmIChjbGstPnVzZWNvdW50ID4gMCAmJiAhKC0tY2xrLT51c2Vjb3VudCkpIHsKLQkJbG9jYWxfY2xrX2Rpc2FibGUoY2xrKTsKLQkJaWYgKGNsay0+cGFyZW50KQotCQkJbG9jYWxfY2xrX3VudXNlKGNsay0+cGFyZW50KTsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQgbG9jYWxfY2xrX3VzZShzdHJ1Y3QgY2xrICpjbGspCi17Ci0JaW50IHJldCA9IDA7Ci0JaWYgKGNsay0+dXNlY291bnQrKyA9PSAwKSB7Ci0JCWlmIChjbGstPnBhcmVudCkKLQkJCXJldCA9IGxvY2FsX2Nsa191c2UoY2xrLT5wYXJlbnQpOwotCi0JCWlmIChyZXQgIT0gMCkgewotCQkJY2xrLT51c2Vjb3VudC0tOwotCQkJZ290byBvdXQ7Ci0JCX0KLQotCQlyZXQgPSBsb2NhbF9jbGtfZW5hYmxlKGNsayk7Ci0KLQkJaWYgKHJldCAhPSAwICYmIGNsay0+cGFyZW50KSB7Ci0JCQlsb2NhbF9jbGtfdW51c2UoY2xrLT5wYXJlbnQpOwotCQkJY2xrLT51c2Vjb3VudC0tOwotCQl9Ci0JfQotb3V0OgotCXJldHVybiByZXQ7Ci19Ci0KLS8qIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2xrX3VzZSBhbnMgY2xrX3VudXNlIGZ1bmN0aW9ucwotICogaXMgdG8gY29udHJvbCBzd2l0Y2hpbmcgMTNNSHogb3NjaWxsYXRvciBhbmQgUExMMSAoMTMnTUh6KSwKLSAqIHNvIHRoYXQgdGhleSBhcmUgZGlzYWJsZWQgd2hlbmV2ZXIgbm9uZSBvZiBQTEwyLTUgaXMgdXNpbmcgdGhlbS4KLSAqIEFsdGhvdWdoIGluIHRoZW9yeSB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIHdvcmsgd2l0aCBhbnkgY2xvY2ssCi0gKiBwbGVhc2UgdXNlIHRoZW0gb25seSBvbiBQTEwyIC0gUExMNSB0byBhdm9pZCBjb25mdXNpb24uCi0gKi8KLWludCBjbGtfdXNlKHN0cnVjdCBjbGsgKmNsaykKLXsKLQlpbnQgcmV0ID0gMDsKLQotCWNsb2NrX2xvY2soKTsKLQlyZXQgPSBsb2NhbF9jbGtfdXNlKGNsayk7Ci0JY2xvY2tfdW5sb2NrKCk7Ci0JcmV0dXJuIHJldDsKLX0KLUVYUE9SVF9TWU1CT0woY2xrX3VzZSk7Ci0KLXZvaWQgY2xrX3VudXNlKHN0cnVjdCBjbGsgKmNsaykKLXsKLQotCWNsb2NrX2xvY2soKTsKIAlsb2NhbF9jbGtfdW51c2UoY2xrKTsKIAljbG9ja191bmxvY2soKTsKIH0KIAotRVhQT1JUX1NZTUJPTChjbGtfdW51c2UpOworRVhQT1JUX1NZTUJPTChjbGtfZGlzYWJsZSk7CiAKIGxvbmcgY2xrX3JvdW5kX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCiB7CkBAIC05OTUsNyArOTY4LDcgQEAKIAkJCV9fRlVOQ1RJT05fXywgKCpjbGtwKS0+bmFtZSwgKCpjbGtwKS0+cmF0ZSk7CiAJfQogCi0JY2xrX3VzZSgmY2tfcGxsNCk7CisJbG9jYWxfY2xrX3VzZSgmY2tfcGxsNCk7CiAKIAkvKiBpZiBja18xM01IeiBpcyBub3QgdXNlZCwgZGlzYWJsZSBpdC4gKi8KIAlpZiAoY2tfMTNNSHoudXNlY291bnQgPT0gMCkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcG54NDAwOC9zZXJpYWwuYyBiL2FyY2gvYXJtL21hY2gtcG54NDAwOC9zZXJpYWwuYwppbmRleCAyZTFlMDRjLi45NWExYjNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXBueDQwMDgvc2VyaWFsLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1wbng0MDA4L3NlcmlhbC5jCkBAIC0xNiwxMSArMTYsMTEgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2luY2x1ZGUgPGFzbS9hcmNoL3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KIAogI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3JlLmg+CiAjaW5jbHVkZSA8bGludXgvc2VyaWFsX3JlZy5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3BtLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgogCiAjaW5jbHVkZSA8YXNtL2FyY2gvY2xvY2suaD4KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtcHhhL0tjb25maWcKaW5kZXggMDEwNGZkMS4uZWE1MTM3ZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvS2NvbmZpZworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9LY29uZmlnCkBAIC02MSw2ICs2MSw3IEBACiAJYm9vbCAiRW5hYmxlIFNoYXJwIFNMLTU2MDAgKFBvb2RsZSkgU3VwcG9ydCIKIAlkZXBlbmRzIFBYQV9TSEFSUFNMXzI1eAogCXNlbGVjdCBTSEFSUF9MT0NPTU8KKwlzZWxlY3QgUFhBX1NTUAogCiBjb25maWcgTUFDSF9DT1JHSQogCWJvb2wgIkVuYWJsZSBTaGFycCBTTC1DNzAwIChDb3JnaSkgU3VwcG9ydCIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL01ha2VmaWxlIGIvYXJjaC9hcm0vbWFjaC1weGEvTWFrZWZpbGUKaW5kZXggNGU4YTk4My4uMTYxMDY5MCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvTWFrZWZpbGUKQEAgLTE1LDcgKzE1LDcgQEAKIG9iai0kKENPTkZJR19QWEFfU0hBUlBfQzd4eCkJKz0gY29yZ2kubyBjb3JnaV9zc3AubyBjb3JnaV9sY2QubyBzaGFycHNsX3BtLm8gY29yZ2lfcG0ubwogb2JqLSQoQ09ORklHX1BYQV9TSEFSUF9DeHgwMCkJKz0gc3BpdHoubyBjb3JnaV9zc3AubyBjb3JnaV9sY2QubyBzaGFycHNsX3BtLm8gc3BpdHpfcG0ubwogb2JqLSQoQ09ORklHX01BQ0hfQUtJVEEpCSs9IGFraXRhLWlvZXhwLm8KLW9iai0kKENPTkZJR19NQUNIX1BPT0RMRSkJKz0gcG9vZGxlLm8KK29iai0kKENPTkZJR19NQUNIX1BPT0RMRSkJKz0gcG9vZGxlLm8gY29yZ2lfc3NwLm8KIG9iai0kKENPTkZJR19NQUNIX1RPU0EpICAgICAgICAgKz0gdG9zYS5vCiAKICMgU3VwcG9ydCBmb3IgYmxpbmt5IGxpZ2h0cwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2kuYyBiL2FyY2gvYXJtL21hY2gtcHhhL2NvcmdpLmMKaW5kZXggZDZkNzI2MC4uYmY2NjQ4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2kuYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9jb3JnaS5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CiAKICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vbWVtb3J5Lmg+CkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KIAogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KICNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KQEAgLTMxMCw4ICszMTIsMzEgQEAKIAkmY29yZ2lsZWRfZGV2aWNlLAogfTsKIAorc3RhdGljIHZvaWQgY29yZ2lfcG93ZXJvZmYodm9pZCkKK3sKKwlSQ1NSID0gUkNTUl9IV1IgfCBSQ1NSX1dEUiB8IFJDU1JfU01SIHwgUkNTUl9HUFI7CisKKwlpZiAoIW1hY2hpbmVfaXNfY29yZ2koKSkKKwkJLyogR3JlZW4gTEVEIG9mZiB0ZWxscyB0aGUgYm9vdGxvYWRlciB0byBoYWx0ICovCisJCXJlc2V0X3Njb29wX2dwaW8oJmNvcmdpc2Nvb3BfZGV2aWNlLmRldiwgQ09SR0lfU0NQX0xFRF9HUkVFTik7CisJYXJtX21hY2hpbmVfcmVzdGFydCgnaCcpOworfQorCitzdGF0aWMgdm9pZCBjb3JnaV9yZXN0YXJ0KGNoYXIgbW9kZSkKK3sKKwlSQ1NSID0gUkNTUl9IV1IgfCBSQ1NSX1dEUiB8IFJDU1JfU01SIHwgUkNTUl9HUFI7CisKKwlpZiAoIW1hY2hpbmVfaXNfY29yZ2koKSkKKwkJLyogR3JlZW4gTEVEIG9uIHRlbGxzIHRoZSBib290bG9hZGVyIHRvIHJlYm9vdCAqLworCQlzZXRfc2Nvb3BfZ3BpbygmY29yZ2lzY29vcF9kZXZpY2UuZGV2LCBDT1JHSV9TQ1BfTEVEX0dSRUVOKTsKKwlhcm1fbWFjaGluZV9yZXN0YXJ0KCdoJyk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5pdCBjb3JnaV9pbml0KHZvaWQpCiB7CisJcG1fcG93ZXJfb2ZmID0gY29yZ2lfcG93ZXJvZmY7CisJYXJtX3BtX3Jlc3RhcnQgPSBjb3JnaV9yZXN0YXJ0OworCiAJLyogc2V0dXAgc2xlZXAgbW9kZSB2YWx1ZXMgKi8KIAlQV0VSICA9IDB4MDAwMDAwMDI7CiAJUEZFUiAgPSAweDAwMDAwMDAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfcG0uYyBiL2FyY2gvYXJtL21hY2gtcHhhL2NvcmdpX3BtLmMKaW5kZXggN2ExYWI3My4uNGMzZGU0MCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfcG0uYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9jb3JnaV9wbS5jCkBAIC0yNyw2ICsyNywxMyBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CiAjaW5jbHVkZSAic2hhcnBzbC5oIgogCisjZGVmaW5lIFNIQVJQU0xfQ0hBUkdFX09OX1ZPTFQgICAgICAgICAweDk5ICAvKiAyLjlWICovCisjZGVmaW5lIFNIQVJQU0xfQ0hBUkdFX09OX1RFTVAgICAgICAgICAweGUwICAvKiAyLjlWICovCisjZGVmaW5lIFNIQVJQU0xfQ0hBUkdFX09OX0FDSU5fSElHSCAgICAweDliICAvKiA2ViAqLworI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0xPVyAgICAgMHgzNCAgLyogMlYgKi8KKyNkZWZpbmUgU0hBUlBTTF9GQVRBTF9BQ0lOX1ZPTFQgICAgICAgIDE4MiAgIC8qIDMuNDVWICovCisjZGVmaW5lIFNIQVJQU0xfRkFUQUxfTk9BQ0lOX1ZPTFQgICAgICAxNzAgICAvKiAzLjQwViAqLworCiBzdGF0aWMgdm9pZCBjb3JnaV9jaGFyZ2VyX2luaXQodm9pZCkKIHsKIAlweGFfZ3Bpb19tb2RlKENPUkdJX0dQSU9fQURDX1RFTVBfT04gfCBHUElPX09VVCk7CkBAIC0xOTUsOSArMjAyLDE2IEBACiAJLnJlYWRfZGV2ZGF0YSAgICA9IGNvcmdpcG1fcmVhZF9kZXZkYXRhLAogCS5jaGFyZ2VyX3dha2V1cCAgPSBjb3JnaV9jaGFyZ2VyX3dha2V1cCwKIAkuc2hvdWxkX3dha2V1cCAgID0gY29yZ2lfc2hvdWxkX3dha2V1cCwKLQkuYmF0X2xldmVscyAgICAgID0gNDAsCi0JLmJhdF9sZXZlbHNfbm9hYyA9IHNwaXR6X2JhdHRlcnlfbGV2ZWxzX25vYWMsCi0JLmJhdF9sZXZlbHNfYWNpbiA9IHNwaXR6X2JhdHRlcnlfbGV2ZWxzX2FjaW4sCisJLmJhY2tsaWdodF9saW1pdCA9IGNvcmdpYmxfbGltaXRfaW50ZW5zaXR5LAorCS5jaGFyZ2Vfb25fdm9sdAkgID0gU0hBUlBTTF9DSEFSR0VfT05fVk9MVCwKKwkuY2hhcmdlX29uX3RlbXAJICA9IFNIQVJQU0xfQ0hBUkdFX09OX1RFTVAsCisJLmNoYXJnZV9hY2luX2hpZ2ggPSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0hJR0gsCisJLmNoYXJnZV9hY2luX2xvdyAgPSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0xPVywKKwkuZmF0YWxfYWNpbl92b2x0ICA9IFNIQVJQU0xfRkFUQUxfQUNJTl9WT0xULAorCS5mYXRhbF9ub2FjaW5fdm9sdD0gU0hBUlBTTF9GQVRBTF9OT0FDSU5fVk9MVCwKKwkuYmF0X2xldmVscyAgICAgICA9IDQwLAorCS5iYXRfbGV2ZWxzX25vYWMgID0gc3BpdHpfYmF0dGVyeV9sZXZlbHNfbm9hYywKKwkuYmF0X2xldmVsc19hY2luICA9IHNwaXR6X2JhdHRlcnlfbGV2ZWxzX2FjaW4sCiAJLnN0YXR1c19oaWdoX2FjaW4gPSAxODgsCiAJLnN0YXR1c19sb3dfYWNpbiAgPSAxNzgsCiAJLnN0YXR1c19oaWdoX25vYWMgPSAxODUsCkBAIC0yMTQsNiArMjI4LDkgQEAKIAlpZiAoIWNvcmdpcG1fZGV2aWNlKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWlmICghbWFjaGluZV9pc19jb3JnaSgpKQorCSAgICBjb3JnaV9wbV9tYWNoaW5mby5iYXRmdWxsX2lycSA9IDE7CisKIAljb3JnaXBtX2RldmljZS0+ZGV2LnBsYXRmb3JtX2RhdGEgPSAmY29yZ2lfcG1fbWFjaGluZm87CiAJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChjb3JnaXBtX2RldmljZSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2NvcmdpX3NzcC5jIGIvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfc3NwLmMKaW5kZXggOGEyNWExYy4uZjk0MjEzMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfc3NwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfc3NwLmMKQEAgLTUwLDEyICs1MCwxNCBAQAogCXVuc2lnbmVkIGxvbmcgcmV0LGZsYWc7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmY29yZ2lfc3NwX2xvY2ssIGZsYWcpOwotCUdQQ1Ioc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0Nik7CisJaWYgKHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0NiA+PSAwKQorCQlHUENSKHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0NikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpOwogCiAJc3NwX3dyaXRlX3dvcmQoJmNvcmdpX3NzcF9kZXYsZGF0YSk7CiAJcmV0ID0gc3NwX3JlYWRfd29yZCgmY29yZ2lfc3NwX2Rldik7CiAKLQlHUFNSKHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0NikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpOworCWlmIChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgPj0gMCkKKwkJR1BTUihzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjb3JnaV9zc3BfbG9jaywgZmxhZyk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtNjgsMTIgKzcwLDE0IEBACiB2b2lkIGNvcmdpX3NzcF9hZHM3ODQ2X2xvY2sodm9pZCkKIHsKIAlzcGluX2xvY2soJmNvcmdpX3NzcF9sb2NrKTsKLQlHUENSKHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0NikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpOworCWlmIChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgPj0gMCkKKwkJR1BDUihzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KTsKIH0KIAogdm9pZCBjb3JnaV9zc3BfYWRzNzg0Nl91bmxvY2sodm9pZCkKIHsKLQlHUFNSKHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0NikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpOworCWlmIChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgPj0gMCkKKwkJR1BTUihzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KTsKIAlzcGluX3VubG9jaygmY29yZ2lfc3NwX2xvY2spOwogfQogCkBAIC0xMTAsMTEgKzExNCwxMyBAQAogCXNzcF9jb25maWcoJmNvcmdpX3NzcF9kZXYsIChTU0NSMF9Nb3Rvcm9sYSB8IChTU0NSMF9EU1MgJiAweDA3ICkpLCBzc2NyMSwgMCwgU1NDUjBfU2VyQ2xrRGl2KHNzcF9tYWNoaW5mby0+Y2xrX2xjZGNvbikpOwogCXNzcF9lbmFibGUoJmNvcmdpX3NzcF9kZXYpOwogCi0JR1BDUihzc3BfbWFjaGluZm8tPmNzX2xjZGNvbikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2xjZGNvbik7CisJaWYgKHNzcF9tYWNoaW5mby0+Y3NfbGNkY29uID49IDApCisJCUdQQ1Ioc3NwX21hY2hpbmZvLT5jc19sY2Rjb24pID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19sY2Rjb24pOwogCXNzcF93cml0ZV93b3JkKCZjb3JnaV9zc3BfZGV2LGRhdGEpOwogCS8qIFJlYWQgbnVsbCBkYXRhIGJhY2sgZnJvbSBkZXZpY2UgdG8gcHJldmVudCBTU1Agb3ZlcmZsb3cgKi8KIAlzc3BfcmVhZF93b3JkKCZjb3JnaV9zc3BfZGV2KTsKLQlHUFNSKHNzcF9tYWNoaW5mby0+Y3NfbGNkY29uKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbGNkY29uKTsKKwlpZiAoc3NwX21hY2hpbmZvLT5jc19sY2Rjb24gPj0gMCkKKwkJR1BTUihzc3BfbWFjaGluZm8tPmNzX2xjZGNvbikgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX2xjZGNvbik7CiAKIAlzc3BfZGlzYWJsZSgmY29yZ2lfc3NwX2Rldik7CiAJc3NwX2NvbmZpZygmY29yZ2lfc3NwX2RldiwgKFNTQ1IwX05hdGlvbmFsIHwgKFNTQ1IwX0RTUyAmIDB4MGIgKSksIDAsIDAsIFNTQ1IwX1NlckNsa0Rpdihzc3BfbWFjaGluZm8tPmNsa19hZHM3ODQ2KSk7CkBAIC0xNDcsNyArMTUzLDggQEAKIAlpbnQgdm9sdGFnZSx2b2x0YWdlMSx2b2x0YWdlMjsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZjb3JnaV9zc3BfbG9jaywgZmxhZyk7Ci0JR1BDUihzc3BfbWFjaGluZm8tPmNzX21heDExMTEpID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19tYXgxMTExKTsKKwlpZiAoc3NwX21hY2hpbmZvLT5jc19tYXgxMTExID49IDApCisJCUdQQ1Ioc3NwX21hY2hpbmZvLT5jc19tYXgxMTExKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSk7CiAJc3NwX2Rpc2FibGUoJmNvcmdpX3NzcF9kZXYpOwogCXNzcF9jb25maWcoJmNvcmdpX3NzcF9kZXYsIChTU0NSMF9Nb3Rvcm9sYSB8IChTU0NSMF9EU1MgJiAweDA3ICkpLCAwLCAwLCBTU0NSMF9TZXJDbGtEaXYoc3NwX21hY2hpbmZvLT5jbGtfbWF4MTExMSkpOwogCXNzcF9lbmFibGUoJmNvcmdpX3NzcF9kZXYpOwpAQCAtMTY5LDcgKzE3Niw4IEBACiAJc3NwX2Rpc2FibGUoJmNvcmdpX3NzcF9kZXYpOwogCXNzcF9jb25maWcoJmNvcmdpX3NzcF9kZXYsIChTU0NSMF9OYXRpb25hbCB8IChTU0NSMF9EU1MgJiAweDBiICkpLCAwLCAwLCBTU0NSMF9TZXJDbGtEaXYoc3NwX21hY2hpbmZvLT5jbGtfYWRzNzg0NikpOwogCXNzcF9lbmFibGUoJmNvcmdpX3NzcF9kZXYpOwotCUdQU1Ioc3NwX21hY2hpbmZvLT5jc19tYXgxMTExKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSk7CisJaWYgKHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSA+PSAwKQorCQlHUFNSKHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSkgPSBHUElPX2JpdChzc3BfbWFjaGluZm8tPmNzX21heDExMTEpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvcmdpX3NzcF9sb2NrLCBmbGFnKTsKIAogCWlmICh2b2x0YWdlMSAmIDB4YzAgfHwgdm9sdGFnZTIgJiAweDNmKQpAQCAtMTk2LDkgKzIwNCwxMiBAQAogCWludCByZXQ7CiAKIAkvKiBDaGlwIFNlbGVjdCAtIERpc2FibGUgQWxsICovCi0JcHhhX2dwaW9fbW9kZShzc3BfbWFjaGluZm8tPmNzX2xjZGNvbiAgfCBHUElPX09VVCB8IEdQSU9fREZMVF9ISUdIKTsKLSAgICAgICAgcHhhX2dwaW9fbW9kZShzc3BfbWFjaGluZm8tPmNzX21heDExMTEgfCBHUElPX09VVCB8IEdQSU9fREZMVF9ISUdIKTsKLSAgICAgICAgcHhhX2dwaW9fbW9kZShzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgfCBHUElPX09VVCB8IEdQSU9fREZMVF9ISUdIKTsKKwlpZiAoc3NwX21hY2hpbmZvLT5jc19sY2Rjb24gPj0gMCkKKwkJcHhhX2dwaW9fbW9kZShzc3BfbWFjaGluZm8tPmNzX2xjZGNvbiAgfCBHUElPX09VVCB8IEdQSU9fREZMVF9ISUdIKTsKKwlpZiAoc3NwX21hY2hpbmZvLT5jc19tYXgxMTExID49IDApCisJICAgICAgICBweGFfZ3Bpb19tb2RlKHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSB8IEdQSU9fT1VUIHwgR1BJT19ERkxUX0hJR0gpOworCWlmIChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgPj0gMCkKKyAgICAgICAgCXB4YV9ncGlvX21vZGUoc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2IHwgR1BJT19PVVQgfCBHUElPX0RGTFRfSElHSCk7CiAKIAlyZXQgPSBzc3BfaW5pdCgmY29yZ2lfc3NwX2Rldiwgc3NwX21hY2hpbmZvLT5wb3J0LCAwKTsKIApAQCAtMjI5LDkgKzI0MCwxMiBAQAogCiBzdGF0aWMgaW50IGNvcmdpX3NzcF9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogewotCUdQU1Ioc3NwX21hY2hpbmZvLT5jc19sY2Rjb24pID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19sY2Rjb24pOyAgLyogSGlnaCAtIERpc2FibGUgTENEIENvbnRyb2wvVGltaW5nIEdlbiAqLwotCUdQU1Ioc3NwX21hY2hpbmZvLT5jc19tYXgxMTExKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSk7IC8qIEhpZ2ggLSBEaXNhYmxlIE1BWDExMTEqLwotCUdQU1Ioc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfYWRzNzg0Nik7IC8qIEhpZ2ggLSBEaXNhYmxlIEFEUzc4NDYqLworCWlmIChzc3BfbWFjaGluZm8tPmNzX2xjZGNvbiA+PSAwKQorCQlHUFNSKHNzcF9tYWNoaW5mby0+Y3NfbGNkY29uKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbGNkY29uKTsgIC8qIEhpZ2ggLSBEaXNhYmxlIExDRCBDb250cm9sL1RpbWluZyBHZW4gKi8KKwlpZiAoc3NwX21hY2hpbmZvLT5jc19tYXgxMTExID49IDApCisJCUdQU1Ioc3NwX21hY2hpbmZvLT5jc19tYXgxMTExKSA9IEdQSU9fYml0KHNzcF9tYWNoaW5mby0+Y3NfbWF4MTExMSk7IC8qIEhpZ2ggLSBEaXNhYmxlIE1BWDExMTEqLworCWlmIChzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYgPj0gMCkKKwkJR1BTUihzc3BfbWFjaGluZm8tPmNzX2Fkczc4NDYpID0gR1BJT19iaXQoc3NwX21hY2hpbmZvLT5jc19hZHM3ODQ2KTsgLyogSGlnaCAtIERpc2FibGUgQURTNzg0NiovCiAJc3NwX3Jlc3RvcmVfc3RhdGUoJmNvcmdpX3NzcF9kZXYsJmNvcmdpX3NzcF9zdGF0ZSk7CiAJc3NwX2VuYWJsZSgmY29yZ2lfc3NwX2Rldik7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL3Bvb2RsZS5jIGIvYXJjaC9hcm0vbWFjaC1weGEvcG9vZGxlLmMKaW5kZXggYTA0MjQ3My4uOWE5ZmE4NyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvcG9vZGxlLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvcG9vZGxlLmMKQEAgLTE4LDExICsxOCwxNCBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KIAogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KIAogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KICNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KQEAgLTM0LDEyICszNywxNSBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL2lyZGEuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9wb29kbGUuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9weGFmYi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3NoYXJwc2wuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9zc3AuaD4KIAogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9zY29vcC5oPgogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS9sb2NvbW8uaD4KICNpbmNsdWRlIDxhc20vbWFjaC9zaGFycHNsX3BhcmFtLmg+CiAKICNpbmNsdWRlICJnZW5lcmljLmgiCisjaW5jbHVkZSAic2hhcnBzbC5oIgogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlIHBvb2RsZV9zY29vcF9yZXNvdXJjZXNbXSA9IHsKIAlbMF0gPSB7CkBAIC0xMTcsMTMgKzEyMyw3MSBAQAogCX0sCiB9OwogCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBsb2NvbW9fZGV2aWNlID0geworc3RydWN0IHBsYXRmb3JtX2RldmljZSBwb29kbGVfbG9jb21vX2RldmljZSA9IHsKIAkubmFtZQkJPSAibG9jb21vIiwKIAkuaWQJCT0gMCwKIAkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUobG9jb21vX3Jlc291cmNlcyksCiAJLnJlc291cmNlCT0gbG9jb21vX3Jlc291cmNlcywKIH07CiAKK0VYUE9SVF9TWU1CT0wocG9vZGxlX2xvY29tb19kZXZpY2UpOworCisvKgorICogUG9vZGxlIFNTUCBEZXZpY2UKKyAqLworCitzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHBvb2RsZV9zc3BfZGV2aWNlID0geworCS5uYW1lCQk9ICJjb3JnaS1zc3AiLAorCS5pZAkJPSAtMSwKK307CisKK3N0cnVjdCBjb3JnaXNzcF9tYWNoaW5mbyBwb29kbGVfc3NwX21hY2hpbmZvID0geworCS5wb3J0CQk9IDEsCisJLmNzX2xjZGNvbgk9IC0xLAorCS5jc19hZHM3ODQ2CT0gLTEsCisJLmNzX21heDExMTEJPSAtMSwKKwkuY2xrX2xjZGNvbgk9IDIsCisJLmNsa19hZHM3ODQ2CT0gMzYsCisJLmNsa19tYXgxMTExCT0gMiwKK307CisKKworLyoKKyAqIFBvb2RsZSBUb3VjaCBTY3JlZW4gRGV2aWNlCisgKi8KK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgcG9vZGxldHNfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJCT0gUE9PRExFX0lSUV9HUElPX1RQX0lOVCwKKwkJLmVuZAkJPSBQT09ETEVfSVJRX0dQSU9fVFBfSU5ULAorCQkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9JUlEsCisJfSwKK307CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHBvb2RsZV9nZXRfaHN5bmNfbGVuKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBvb2RsZV9udWxsX2hzeW5jKHZvaWQpCit7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY29yZ2l0c19tYWNoaW5mbyAgcG9vZGxlX3RzX21hY2hpbmZvID0geworCS5nZXRfaHN5bmNfbGVuICAgPSBwb29kbGVfZ2V0X2hzeW5jX2xlbiwKKwkucHV0X2hzeW5jICAgICAgID0gcG9vZGxlX251bGxfaHN5bmMsCisJLndhaXRfaHN5bmMgICAgICA9IHBvb2RsZV9udWxsX2hzeW5jLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcG9vZGxlX3RzX2RldmljZSA9IHsKKwkubmFtZQkJPSAiY29yZ2ktdHMiLAorCS5kZXYJCT0geworCQkucGxhdGZvcm1fZGF0YQk9ICZwb29kbGVfdHNfbWFjaGluZm8sCisJfSwKKwkuaWQJCT0gLTEsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKHBvb2RsZXRzX3Jlc291cmNlcyksCisJLnJlc291cmNlCT0gcG9vZGxldHNfcmVzb3VyY2VzLAorfTsKKwogCiAvKgogICogTU1DL1NEIERldmljZQpAQCAtMTQxLDcgKzIwNSw5IEBACiAJcHhhX2dwaW9fbW9kZShHUElPNl9NTUNDTEtfTUQpOwogCXB4YV9ncGlvX21vZGUoR1BJTzhfTU1DQ1MwX01EKTsKIAlweGFfZ3Bpb19tb2RlKFBPT0RMRV9HUElPX25TRF9ERVRFQ1QgfCBHUElPX0lOKTsKKwlweGFfZ3Bpb19tb2RlKFBPT0RMRV9HUElPX25TRF9XUCB8IEdQSU9fSU4pOwogCXB4YV9ncGlvX21vZGUoUE9PRExFX0dQSU9fU0RfUFdSIHwgR1BJT19PVVQpOworCXB4YV9ncGlvX21vZGUoUE9PRExFX0dQSU9fU0RfUFdSMSB8IEdQSU9fT1VUKTsKIAogCXBvb2RsZV9tY2lfcGxhdGZvcm1fZGF0YS5kZXRlY3RfZGVsYXkgPSBtc2Vjc190b19qaWZmaWVzKDI1MCk7CiAKQEAgLTE2MCwxMiArMjI2LDIyIEBACiB7CiAJc3RydWN0IHB4YW1jaV9wbGF0Zm9ybV9kYXRhKiBwX2QgPSBkZXYtPnBsYXRmb3JtX2RhdGE7CiAKLQlpZiAoKCAxIDw8IHZkZCkgJiBwX2QtPm9jcl9tYXNrKQotCQlHUFNSMSA9IEdQSU9fYml0KFBPT0RMRV9HUElPX1NEX1BXUik7Ci0JZWxzZQotCQlHUENSMSA9IEdQSU9fYml0KFBPT0RMRV9HUElPX1NEX1BXUik7CisJaWYgKCggMSA8PCB2ZGQpICYgcF9kLT5vY3JfbWFzaykgeworCQlHUFNSKFBPT0RMRV9HUElPX1NEX1BXUikgPSBHUElPX2JpdChQT09ETEVfR1BJT19TRF9QV1IpOworCQltZGVsYXkoMik7CisJCUdQU1IoUE9PRExFX0dQSU9fU0RfUFdSMSkgPSBHUElPX2JpdChQT09ETEVfR1BJT19TRF9QV1IxKTsKKwl9IGVsc2UgeworCQlHUENSKFBPT0RMRV9HUElPX1NEX1BXUjEpID0gR1BJT19iaXQoUE9PRExFX0dQSU9fU0RfUFdSMSk7CisJCUdQQ1IoUE9PRExFX0dQSU9fU0RfUFdSKSA9IEdQSU9fYml0KFBPT0RMRV9HUElPX1NEX1BXUik7CisJfQogfQogCitzdGF0aWMgaW50IHBvb2RsZV9tY2lfZ2V0X3JvKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gR1BMUihQT09ETEVfR1BJT19uU0RfV1ApICYgR1BJT19iaXQoUE9PRExFX0dQSU9fblNEX1dQKTsKK30KKworCiBzdGF0aWMgdm9pZCBwb29kbGVfbWNpX2V4aXQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQogewogCWZyZWVfaXJxKFBPT0RMRV9JUlFfR1BJT19uU0RfREVURUNULCBkYXRhKTsKQEAgLTE3NCw2ICsyNTAsNyBAQAogc3RhdGljIHN0cnVjdCBweGFtY2lfcGxhdGZvcm1fZGF0YSBwb29kbGVfbWNpX3BsYXRmb3JtX2RhdGEgPSB7CiAJLm9jcl9tYXNrCT0gTU1DX1ZERF8zMl8zM3xNTUNfVkREXzMzXzM0LAogCS5pbml0IAkJPSBwb29kbGVfbWNpX2luaXQsCisJLmdldF9ybwkJPSBwb29kbGVfbWNpX2dldF9ybywKIAkuc2V0cG93ZXIgCT0gcG9vZGxlX21jaV9zZXRwb3dlciwKIAkuZXhpdAkJPSBwb29kbGVfbWNpX2V4aXQsCiB9OwpAQCAtMjQzLDE0ICszMjAsMzEgQEAKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKLQkmbG9jb21vX2RldmljZSwKKwkmcG9vZGxlX2xvY29tb19kZXZpY2UsCiAJJnBvb2RsZV9zY29vcF9kZXZpY2UsCisJJnBvb2RsZV9zc3BfZGV2aWNlLAorCSZwb29kbGVfdHNfZGV2aWNlLAogfTsKIAorc3RhdGljIHZvaWQgcG9vZGxlX3Bvd2Vyb2ZmKHZvaWQpCit7CisJUkNTUiA9IFJDU1JfSFdSIHwgUkNTUl9XRFIgfCBSQ1NSX1NNUiB8IFJDU1JfR1BSOworCWFybV9tYWNoaW5lX3Jlc3RhcnQoJ2gnKTsKK30KKworc3RhdGljIHZvaWQgcG9vZGxlX3Jlc3RhcnQoY2hhciBtb2RlKQoreworCVJDU1IgPSBSQ1NSX0hXUiB8IFJDU1JfV0RSIHwgUkNTUl9TTVIgfCBSQ1NSX0dQUjsKKwlhcm1fbWFjaGluZV9yZXN0YXJ0KCdoJyk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwb29kbGVfaW5pdCh2b2lkKQogewogCWludCByZXQgPSAwOwogCisJcG1fcG93ZXJfb2ZmID0gcG9vZGxlX3Bvd2Vyb2ZmOworCWFybV9wbV9yZXN0YXJ0ID0gcG9vZGxlX3Jlc3RhcnQ7CisKIAkvKiBzZXR1cCBzbGVlcCBtb2RlIHZhbHVlcyAqLwogCVBXRVIgID0gMHgwMDAwMDAwMjsKIAlQRkVSICA9IDB4MDAwMDAwMDA7CkBAIC0yODgsNiArMzgyLDcgQEAKICAgCUdQU1IxID0gMHgwMDAwMDAwMDsKICAgICAgICAgR1BTUjIgPSAweDAwMDAwMDAwOwogCisJc2V0X3B4YV9mYl9wYXJlbnQoJnBvb2RsZV9sb2NvbW9fZGV2aWNlLmRldik7CiAJc2V0X3B4YV9mYl9pbmZvKCZwb29kbGVfZmJfaW5mbyk7CiAJcHhhX2dwaW9fbW9kZShQT09ETEVfR1BJT19VU0JfUFVMTFVQIHwgR1BJT19PVVQpOwogCXB4YV9ncGlvX21vZGUoUE9PRExFX0dQSU9fSVJfT04gfCBHUElPX09VVCk7CkBAIC0zMDEsNiArMzk2LDcgQEAKIAlpZiAocmV0KSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgInBvb2RsZTogVW5hYmxlIHRvIHJlZ2lzdGVyIExvQ29NbyBkZXZpY2VcbiIpOwogCX0KKwljb3JnaV9zc3Bfc2V0X21hY2hpbmZvKCZwb29kbGVfc3NwX21hY2hpbmZvKTsKIH0KIAogc3RhdGljIHZvaWQgX19pbml0IGZpeHVwX3Bvb2RsZShzdHJ1Y3QgbWFjaGluZV9kZXNjICpkZXNjLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvc2hhcnBzbF9wbS5jIGIvYXJjaC9hcm0vbWFjaC1weGEvc2hhcnBzbF9wbS5jCmluZGV4IDZkNDAyYjIuLjBmMTY0ODcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtcHhhL3NoYXJwc2xfcG0uYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9zaGFycHNsX3BtLmMKQEAgLTEyOCw2ICsxMjgsOSBAQAogICovCiBpbnQgc2hhcnBzbF9wbV9weGFfcmVhZF9tYXgxMTExKGludCBjaGFubmVsKQogeworCWlmIChtYWNoaW5lX2lzX3Rvc2EoKSkgLy8gVWdseSwgYmV0dGVyIG1vdmUgdGhpcyBmdW5jdGlvbiBpbnRvIGFub3RoZXIgbW9kdWxlCisJICAgIHJldHVybiAwOworCiAJcmV0dXJuIGNvcmdpX3NzcF9tYXgxMTExX2dldCgoY2hhbm5lbCA8PCBNQVhDVFJMX1NFTF9TSCkgfCBNQVhDVFJMX1BEMCB8IE1BWENUUkxfUEQxCiAJCQl8IE1BWENUUkxfU0dMIHwgTUFYQ1RSTF9VTkkgfCBNQVhDVFJMX1NUUik7CiB9CkBAIC0xNTYsNyArMTU5LDcgQEAKIAkJZWxzZSBzZXRfaXJxX3R5cGUoSVJRX0dQSU8oc2hhcnBzbF9wbS5tYWNoaW5mby0+Z3Bpb19mYXRhbCksSVJRVF9GQUxMSU5HKTsKIAl9CiAKLQlpZiAoIW1hY2hpbmVfaXNfY29yZ2koKSkKKwlpZiAoc2hhcnBzbF9wbS5tYWNoaW5mby0+YmF0ZnVsbF9pcnEpCiAJewogCQkvKiBSZWdpc3RlciBpbnRlcnJ1cHQgaGFuZGxlci4gKi8KIAkJaWYgKHJlcXVlc3RfaXJxKElSUV9HUElPKHNoYXJwc2xfcG0ubWFjaGluZm8tPmdwaW9fYmF0ZnVsbCksIHNoYXJwc2xfY2hyZ19mdWxsX2lzciwgU0FfSU5URVJSVVBULCAiQ08iLCBzaGFycHNsX2NocmdfZnVsbF9pc3IpKSB7CkBAIC0xNzQsNiArMTc3LDYgQEAKIAlpZiAoc2hhcnBzbF9wbS5tYWNoaW5mby0+Z3Bpb19mYXRhbCkKIAkJZnJlZV9pcnEoSVJRX0dQSU8oc2hhcnBzbF9wbS5tYWNoaW5mby0+Z3Bpb19mYXRhbCksIHNoYXJwc2xfZmF0YWxfaXNyKTsKIAotCWlmICghbWFjaGluZV9pc19jb3JnaSgpKQorCWlmIChzaGFycHNsX3BtLm1hY2hpbmZvLT5iYXRmdWxsX2lycSkKIAkJZnJlZV9pcnEoSVJRX0dQSU8oc2hhcnBzbF9wbS5tYWNoaW5mby0+Z3Bpb19iYXRmdWxsKSwgc2hhcnBzbF9jaHJnX2Z1bGxfaXNyKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL3NwaXR6LmMgYi9hcmNoL2FybS9tYWNoLXB4YS9zcGl0ei5jCmluZGV4IDQ0YmNiODAuLmViOTkzN2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtcHhhL3NwaXR6LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvc3BpdHouYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGludXgvbW1jL2hvc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9wbS5oPgogCiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+CiAjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgpAQCAtMjcsNiArMjgsNyBAQAogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogI2luY2x1ZGUgPGFzbS9pcnEuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAKICNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+CkBAIC00MzIsOCArNDM0LDMxIEBACiAJJnNwaXR6bGVkX2RldmljZSwKIH07CiAKK3N0YXRpYyB2b2lkIHNwaXR6X3Bvd2Vyb2ZmKHZvaWQpCit7CisJUkNTUiA9IFJDU1JfSFdSIHwgUkNTUl9XRFIgfCBSQ1NSX1NNUiB8IFJDU1JfR1BSOworCisJcHhhX2dwaW9fbW9kZShTUElUWl9HUElPX09OX1JFU0VUIHwgR1BJT19PVVQpOworCUdQU1IoU1BJVFpfR1BJT19PTl9SRVNFVCkgPSBHUElPX2JpdChTUElUWl9HUElPX09OX1JFU0VUKTsKKworCW1kZWxheSgxMDAwKTsKKwlhcm1fbWFjaGluZV9yZXN0YXJ0KCdoJyk7Cit9CisKK3N0YXRpYyB2b2lkIHNwaXR6X3Jlc3RhcnQoY2hhciBtb2RlKQoreworCS8qIEJvb3Rsb2FkZXIgbWFnaWMgZm9yIGEgcmVib290ICovCisJaWYoKE1TQzAgJiAweGZmZmYwMDAwKSA9PSAweDdmZjAwMDAwKQorCQlNU0MwID0gKE1TQzAgJiAweGZmZmYpIHwgMHg3ZWUwMDAwMDsKKworCXNwaXR6X3Bvd2Vyb2ZmKCk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5pdCBjb21tb25faW5pdCh2b2lkKQogeworCXBtX3Bvd2VyX29mZiA9IHNwaXR6X3Bvd2Vyb2ZmOworCWFybV9wbV9yZXN0YXJ0ID0gc3BpdHpfcmVzdGFydDsKKwogCVBNQ1IgPSAweDAwOwogCiAJLyogc2V0dXAgc2xlZXAgbW9kZSB2YWx1ZXMgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL3NwaXR6X3BtLmMgYi9hcmNoL2FybS9tYWNoLXB4YS9zcGl0el9wbS5jCmluZGV4IDVlNWJkYzguLjQwYmU4MzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtcHhhL3NwaXR6X3BtLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvc3BpdHpfcG0uYwpAQCAtMjcsNiArMjcsMTMgQEAKICNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgogI2luY2x1ZGUgInNoYXJwc2wuaCIKIAorI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9WT0xUICAgICAgICAgMHg5OSAgLyogMi45ViAqLworI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9URU1QICAgICAgICAgMHhlMCAgLyogMi45ViAqLworI2RlZmluZSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0hJR0ggICAgMHg5YiAgLyogNlYgKi8KKyNkZWZpbmUgU0hBUlBTTF9DSEFSR0VfT05fQUNJTl9MT1cgICAgIDB4MzQgIC8qIDJWICovCisjZGVmaW5lIFNIQVJQU0xfRkFUQUxfQUNJTl9WT0xUICAgICAgICAxODIgICAvKiAzLjQ1ViAqLworI2RlZmluZSBTSEFSUFNMX0ZBVEFMX05PQUNJTl9WT0xUICAgICAgMTcwICAgLyogMy40MFYgKi8KKwogc3RhdGljIGludCBzcGl0el9sYXN0X2FjX3N0YXR1czsKIAogc3RhdGljIHZvaWQgc3BpdHpfY2hhcmdlcl9pbml0KHZvaWQpCkBAIC0xOTAsNiArMTk3LDcgQEAKIAkuZ3Bpb19iYXRsb2NrICAgICA9IFNQSVRaX0dQSU9fQkFUX0NPVkVSLAogCS5ncGlvX2FjaW4gICAgICAgID0gU1BJVFpfR1BJT19BQ19JTiwKIAkuZ3Bpb19iYXRmdWxsICAgICA9IFNQSVRaX0dQSU9fQ0hSR19GVUxMLAorCS5iYXRmdWxsX2lycQkgID0gMSwKIAkuZ3Bpb19mYXRhbCAgICAgICA9IFNQSVRaX0dQSU9fRkFUQUxfQkFULAogCS5kaXNjaGFyZ2UgICAgICAgID0gc3BpdHpfZGlzY2hhcmdlLAogCS5kaXNjaGFyZ2UxICAgICAgID0gc3BpdHpfZGlzY2hhcmdlMSwKQEAgLTIwMCw2ICsyMDgsMTMgQEAKIAkucmVhZF9kZXZkYXRhICAgICA9IHNwaXR6cG1fcmVhZF9kZXZkYXRhLAogCS5jaGFyZ2VyX3dha2V1cCAgID0gc3BpdHpfY2hhcmdlcl93YWtldXAsCiAJLnNob3VsZF93YWtldXAgICAgPSBzcGl0el9zaG91bGRfd2FrZXVwLAorICAgICAgICAuYmFja2xpZ2h0X2xpbWl0ICA9IGNvcmdpYmxfbGltaXRfaW50ZW5zaXR5LAorCS5jaGFyZ2Vfb25fdm9sdAkgID0gU0hBUlBTTF9DSEFSR0VfT05fVk9MVCwKKwkuY2hhcmdlX29uX3RlbXAJICA9IFNIQVJQU0xfQ0hBUkdFX09OX1RFTVAsCisJLmNoYXJnZV9hY2luX2hpZ2ggPSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0hJR0gsCisJLmNoYXJnZV9hY2luX2xvdyAgPSBTSEFSUFNMX0NIQVJHRV9PTl9BQ0lOX0xPVywKKwkuZmF0YWxfYWNpbl92b2x0ICA9IFNIQVJQU0xfRkFUQUxfQUNJTl9WT0xULAorCS5mYXRhbF9ub2FjaW5fdm9sdD0gU0hBUlBTTF9GQVRBTF9OT0FDSU5fVk9MVCwKIAkuYmF0X2xldmVscyAgICAgICA9IDQwLAogCS5iYXRfbGV2ZWxzX25vYWMgID0gc3BpdHpfYmF0dGVyeV9sZXZlbHNfbm9hYywKIAkuYmF0X2xldmVsc19hY2luICA9IHNwaXR6X2JhdHRlcnlfbGV2ZWxzX2FjaW4sCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS90b3NhLmMgYi9hcmNoL2FybS9tYWNoLXB4YS90b3NhLmMKaW5kZXggNzZjMGU3Zi4uNzE1MmJjMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvdG9zYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL3Rvc2EuYwpAQCAtMTksMTIgKzE5LDE1IEBACiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5oPgorI2luY2x1ZGUgPGxpbnV4L3BtLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KIAogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4KICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogI2luY2x1ZGUgPGFzbS9pcnEuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvaXJkYS5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL21tYy5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL3VkYy5oPgpAQCAtMjY2LDggKzI2OSwzMSBAQAogCSZ0b3NhbGVkX2RldmljZSwKIH07CiAKK3N0YXRpYyB2b2lkIHRvc2FfcG93ZXJvZmYodm9pZCkKK3sKKwlSQ1NSID0gUkNTUl9IV1IgfCBSQ1NSX1dEUiB8IFJDU1JfU01SIHwgUkNTUl9HUFI7CisKKwlweGFfZ3Bpb19tb2RlKFRPU0FfR1BJT19PTl9SRVNFVCB8IEdQSU9fT1VUKTsKKwlHUFNSKFRPU0FfR1BJT19PTl9SRVNFVCkgPSBHUElPX2JpdChUT1NBX0dQSU9fT05fUkVTRVQpOworCisJbWRlbGF5KDEwMDApOworCWFybV9tYWNoaW5lX3Jlc3RhcnQoJ2gnKTsKK30KKworc3RhdGljIHZvaWQgdG9zYV9yZXN0YXJ0KGNoYXIgbW9kZSkKK3sKKwkvKiBCb290bG9hZGVyIG1hZ2ljIGZvciBhIHJlYm9vdCAqLworCWlmKChNU0MwICYgMHhmZmZmMDAwMCkgPT0gMHg3ZmYwMDAwMCkKKwkJTVNDMCA9IChNU0MwICYgMHhmZmZmKSB8IDB4N2VlMDAwMDA7CisKKwl0b3NhX3Bvd2Vyb2ZmKCk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5pdCB0b3NhX2luaXQodm9pZCkKIHsKKwlwbV9wb3dlcl9vZmYgPSB0b3NhX3Bvd2Vyb2ZmOworCWFybV9wbV9yZXN0YXJ0ID0gdG9zYV9yZXN0YXJ0OworCiAJcHhhX2dwaW9fbW9kZShUT1NBX0dQSU9fT05fUkVTRVQgfCBHUElPX0lOKTsKIAlweGFfZ3Bpb19tb2RlKFRPU0FfR1BJT19UQzYzOTNfSU5UIHwgR1BJT19JTik7CiAJcHhhX2dwaW9fbW9kZShUT1NBX0dQSU9fVVNCX0lOIHwgR1BJT19JTik7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9LY29uZmlnCmluZGV4IDBjMzM0MTMuLjdiNzg2ZDcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9LY29uZmlnCkBAIC0xMTQsOSArMTE0LDE1IEBACiAKIGVuZG1lbnUKIAorY29uZmlnIFMzQzI0MTBfQ0xPQ0sKKwlib29sCisJaGVscAorCSAgQ2xvY2sgY29kZSBmb3IgdGhlIFMzQzI0MTAsIGFuZCBzaW1pbGFyIHByb2Nlc3NvcnMKKwogY29uZmlnIENQVV9TM0MyNDEwCiAJYm9vbAogCWRlcGVuZHMgb24gQVJDSF9TM0MyNDEwCisJc2VsZWN0IFMzQzI0MTBfQ0xPQ0sKIAloZWxwCiAJICBTdXBwb3J0IGZvciBTM0MyNDEwIGFuZCBTM0MyNDEwQSBmYW1pbHkgZnJvbSB0aGUgUzNDMjRYWCBsaW5lCiAJICBvZiBTYW1zdW5nIE1vYmlsZSBDUFVzLgpAQCAtMTMwLDYgKzEzNiw3IEBACiBjb25maWcgQ1BVX1MzQzI0NDAKIAlib29sCiAJZGVwZW5kcyBvbiBBUkNIX1MzQzI0MTAKKwlzZWxlY3QgUzNDMjQxMF9DTE9DSwogCXNlbGVjdCBDUFVfUzNDMjQ0WAogCWhlbHAKIAkgIFN1cHBvcnQgZm9yIFMzQzI0NDAgU2Ftc3VuZyBNb2JpbGUgQ1BVIGJhc2VkIHN5c3RlbXMuCkBAIC0xMzcsNiArMTQ0LDcgQEAKIGNvbmZpZyBDUFVfUzNDMjQ0MgogCWJvb2wKIAlkZXBlbmRzIG9uIEFSQ0hfUzNDMjQyMAorCXNlbGVjdCBTM0MyNDEwX0NMT0NLCiAJc2VsZWN0IENQVV9TM0MyNDRYCiAJaGVscAogCSAgU3VwcG9ydCBmb3IgUzNDMjQ0MiBTYW1zdW5nIE1vYmlsZSBDUFUgYmFzZWQgc3lzdGVtcy4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9NYWtlZmlsZQppbmRleCA1ZTA5MzU1Li4zNzJkYmNlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL01ha2VmaWxlCkBAIC0yOSw2ICsyOSwxMCBAQAogb2JqLSQoQ09ORklHX0NQVV9TM0MyNDRYKSAgKz0gczNjMjQ0eC5vCiBvYmotJChDT05GSUdfQ1BVX1MzQzI0NFgpICArPSBzM2MyNDR4LWlycS5vCiAKKyMgQ2xvY2sgY29udHJvbAorCitvYmotJChDT05GSUdfUzNDMjQxMF9DTE9DSykgKz0gczNjMjQxMC1jbG9jay5vCisKICMgUzNDMjQ0MCBzdXBwb3J0CiAKIG9iai0kKENPTkZJR19DUFVfUzNDMjQ0MCkgICs9IHMzYzI0NDAubyBzM2MyNDQwLWRzYy5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9jbG9jay5jCmluZGV4IDk5ZDE3NDYuLmM1YzkzYzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9jbG9jay5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9jbG9jay5jCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDUgU2ltdGVjIEVsZWN0cm9uaWNzCiAgKglCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CiAgKgotICogUzNDMjQxMCBDbG9jayBjb250cm9sIHN1cHBvcnQKKyAqIFMzQzI0WFggQ29yZSBjbG9jayBjb250cm9sIHN1cHBvcnQKICAqCiAgKiBCYXNlZCBvbiwgYW5kIGNvZGUgZnJvbSBsaW51eC9hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9jbG9jay5jCiAgKioKQEAgLTU2LDI1ICs1Niw2IEBACiAKIERFRklORV9NVVRFWChjbG9ja3NfbXV0ZXgpOwogCi0vKiBvbGQgZnVuY3Rpb25zICovCi0KLXZvaWQgaW5saW5lIHMzYzI0eHhfY2xrX2VuYWJsZSh1bnNpZ25lZCBpbnQgY2xvY2tzLCB1bnNpZ25lZCBpbnQgZW5hYmxlKQotewotCXVuc2lnbmVkIGxvbmcgY2xrY29uOwotCi0JY2xrY29uID0gX19yYXdfcmVhZGwoUzNDMjQxMF9DTEtDT04pOwotCi0JaWYgKGVuYWJsZSkKLQkJY2xrY29uIHw9IGNsb2NrczsKLQllbHNlCi0JCWNsa2NvbiAmPSB+Y2xvY2tzOwotCi0JLyogZW5zdXJlIG5vbmUgb2YgdGhlIHNwZWNpYWwgZnVuY3Rpb24gYml0cyBzZXQgKi8KLQljbGtjb24gJj0gfihTM0MyNDEwX0NMS0NPTl9JRExFfFMzQzI0MTBfQ0xLQ09OX1BPV0VSIHwgMyk7Ci0KLQlfX3Jhd193cml0ZWwoY2xrY29uLCBTM0MyNDEwX0NMS0NPTik7Ci19Ci0KIC8qIGVuYWJsZSBhbmQgZGlzYWJsZSBjYWxscyBmb3IgdXNlIHdpdGggdGhlIGNsayBzdHJ1Y3QgKi8KIAogc3RhdGljIGludCBjbGtfbnVsbF9lbmFibGUoc3RydWN0IGNsayAqY2xrLCBpbnQgZW5hYmxlKQpAQCAtODIsMTIgKzYzLDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IHMzYzI0eHhfY2xrY29uX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpCi17Ci0JczNjMjR4eF9jbGtfZW5hYmxlKGNsay0+Y3RybGJpdCwgZW5hYmxlKTsKLQlyZXR1cm4gMDsKLX0KLQogLyogQ2xvY2sgQVBJIGNhbGxzICovCiAKIHN0cnVjdCBjbGsgKmNsa19nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICppZCkKQEAgLTE3Myw4ICsxNDgsMTEgQEAKIAlpZiAoY2xrLT5yYXRlICE9IDApCiAJCXJldHVybiBjbGstPnJhdGU7CiAKLQl3aGlsZSAoY2xrLT5wYXJlbnQgIT0gTlVMTCAmJiBjbGstPnJhdGUgPT0gMCkKLQkJY2xrID0gY2xrLT5wYXJlbnQ7CisJaWYgKGNsay0+Z2V0X3JhdGUgIT0gTlVMTCkKKwkJcmV0dXJuIChjbGstPmdldF9yYXRlKShjbGspOworCisJaWYgKGNsay0+cGFyZW50ICE9IE5VTEwpCisJCXJldHVybiBjbGtfZ2V0X3JhdGUoY2xrLT5wYXJlbnQpOwogCiAJcmV0dXJuIGNsay0+cmF0ZTsKIH0KQEAgLTIzMywyOCArMjExLDYgQEAKIEVYUE9SVF9TWU1CT0woY2xrX2dldF9wYXJlbnQpOwogRVhQT1JUX1NZTUJPTChjbGtfc2V0X3BhcmVudCk7CiAKLS8qIGJhc2UgY2xvY2sgZW5hYmxlICovCi0KLXN0YXRpYyBpbnQgczNjMjR4eF91cGxsX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpCi17Ci0JdW5zaWduZWQgbG9uZyBjbGtzbG93ID0gX19yYXdfcmVhZGwoUzNDMjQxMF9DTEtTTE9XKTsKLQl1bnNpZ25lZCBsb25nIG9yaWcgPSBjbGtzbG93OwotCi0JaWYgKGVuYWJsZSkKLQkJY2xrc2xvdyAmPSB+UzNDMjQxMF9DTEtTTE9XX1VDTEtfT0ZGOwotCWVsc2UKLQkJY2xrc2xvdyB8PSBTM0MyNDEwX0NMS1NMT1dfVUNMS19PRkY7Ci0KLQlfX3Jhd193cml0ZWwoY2xrc2xvdywgUzNDMjQxMF9DTEtTTE9XKTsKLQotCS8qIGlmIHdlIHN0YXJ0ZWQgdGhlIFVQTEwsIHRoZW4gYWxsb3cgdG8gc2V0dGxlICovCi0KLQlpZiAoZW5hYmxlICYmIChvcmlnICYgUzNDMjQxMF9DTEtTTE9XX1VDTEtfT0ZGKSkKLQkJdWRlbGF5KDIwMCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogLyogYmFzZSBjbG9ja3MgKi8KIAogc3RhdGljIHN0cnVjdCBjbGsgY2xrX3h0YWwgPSB7CkBAIC0yNjUsMTUgKzIyMSwxNCBAQAogCS5jdHJsYml0CT0gMCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa191cGxsID0geworc3RydWN0IGNsayBjbGtfdXBsbCA9IHsKIAkubmFtZQkJPSAidXBsbCIsCiAJLmlkCQk9IC0xLAogCS5wYXJlbnQJCT0gTlVMTCwKLQkuZW5hYmxlCQk9IHMzYzI0eHhfdXBsbF9lbmFibGUsCiAJLmN0cmxiaXQJPSAwLAogfTsKIAotc3RhdGljIHN0cnVjdCBjbGsgY2xrX2YgPSB7CitzdHJ1Y3QgY2xrIGNsa19mID0gewogCS5uYW1lCQk9ICJmY2xrIiwKIAkuaWQJCT0gLTEsCiAJLnJhdGUJCT0gMCwKQEAgLTI4MSw3ICsyMzYsNyBAQAogCS5jdHJsYml0CT0gMCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19oID0geworc3RydWN0IGNsayBjbGtfaCA9IHsKIAkubmFtZQkJPSAiaGNsayIsCiAJLmlkCQk9IC0xLAogCS5yYXRlCQk9IDAsCkBAIC0yODksNyArMjQ0LDcgQEAKIAkuY3RybGJpdAk9IDAsCiB9OwogCi1zdGF0aWMgc3RydWN0IGNsayBjbGtfcCA9IHsKK3N0cnVjdCBjbGsgY2xrX3AgPSB7CiAJLm5hbWUJCT0gInBjbGsiLAogCS5pZAkJPSAtMSwKIAkucmF0ZQkJPSAwLApAQCAtNDI2LDEwOCArMzgxLDYgQEAKIAkuaWQJCT0gLTEsCiB9OwogCi0KLS8qIHN0YW5kYXJkIGNsb2NrIGRlZmluaXRpb25zICovCi0KLXN0YXRpYyBzdHJ1Y3QgY2xrIGluaXRfY2xvY2tzW10gPSB7Ci0JewotCQkubmFtZQkJPSAibmFuZCIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX2gsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX05BTkQsCi0JfSwgewotCQkubmFtZQkJPSAibGNkIiwKLQkJLmlkCQk9IC0xLAotCQkucGFyZW50CQk9ICZjbGtfaCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fTENEQywKLQl9LCB7Ci0JCS5uYW1lCQk9ICJ1c2ItaG9zdCIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX2gsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1VTQkgsCi0JfSwgewotCQkubmFtZQkJPSAidXNiLWRldmljZSIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX2gsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1VTQkQsCi0JfSwgewotCQkubmFtZQkJPSAidGltZXJzIiwKLQkJLmlkCQk9IC0xLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fUFdNVCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJzZGkiLAotCQkuaWQJCT0gLTEsCi0JCS5wYXJlbnQJCT0gJmNsa19wLAotCQkuZW5hYmxlCQk9IHMzYzI0eHhfY2xrY29uX2VuYWJsZSwKLQkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9TREksCi0JfSwgewotCQkubmFtZQkJPSAidWFydCIsCi0JCS5pZAkJPSAwLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fVUFSVDAsCi0JfSwgewotCQkubmFtZQkJPSAidWFydCIsCi0JCS5pZAkJPSAxLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fVUFSVDEsCi0JfSwgewotCQkubmFtZQkJPSAidWFydCIsCi0JCS5pZAkJPSAyLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fVUFSVDIsCi0JfSwgewotCQkubmFtZQkJPSAiZ3BpbyIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX3AsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX0dQSU8sCi0JfSwgewotCQkubmFtZQkJPSAicnRjIiwKLQkJLmlkCQk9IC0xLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fUlRDLAotCX0sIHsKLQkJLm5hbWUJCT0gImFkYyIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX3AsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX0FEQywKLQl9LCB7Ci0JCS5uYW1lCQk9ICJpMmMiLAotCQkuaWQJCT0gLTEsCi0JCS5wYXJlbnQJCT0gJmNsa19wLAotCQkuZW5hYmxlCQk9IHMzYzI0eHhfY2xrY29uX2VuYWJsZSwKLQkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9JSUMsCi0JfSwgewotCQkubmFtZQkJPSAiaWlzIiwKLQkJLmlkCQk9IC0xLAotCQkucGFyZW50CQk9ICZjbGtfcCwKLQkJLmVuYWJsZQkJPSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUsCi0JCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fSUlTLAotCX0sIHsKLQkJLm5hbWUJCT0gInNwaSIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX3AsCi0JCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAotCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1NQSSwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJ3YXRjaGRvZyIsCi0JCS5pZAkJPSAtMSwKLQkJLnBhcmVudAkJPSAmY2xrX3AsCi0JCS5jdHJsYml0CT0gMCwKLQl9Ci19OwotCiAvKiBpbml0aWFsaXNlIHRoZSBjbG9jayBzeXN0ZW0gKi8KIAogaW50IHMzYzI0eHhfcmVnaXN0ZXJfY2xvY2soc3RydWN0IGNsayAqY2xrKQpAQCAtNTM3LDE0ICszOTAsNiBAQAogCWlmIChjbGstPmVuYWJsZSA9PSBOVUxMKQogCQljbGstPmVuYWJsZSA9IGNsa19udWxsX2VuYWJsZTsKIAotCS8qIGlmIHRoaXMgaXMgYSBzdGFuZGFyZCBjbG9jaywgc2V0IHRoZSB1c2FnZSBzdGF0ZSAqLwotCi0JaWYgKGNsay0+Y3RybGJpdCAmJiBjbGstPmVuYWJsZSA9PSBzM2MyNHh4X2Nsa2Nvbl9lbmFibGUpIHsKLQkJdW5zaWduZWQgbG9uZyBjbGtjb24gPSBfX3Jhd19yZWFkbChTM0MyNDEwX0NMS0NPTik7Ci0KLQkJY2xrLT51c2FnZSA9IChjbGtjb24gJiBjbGstPmN0cmxiaXQpID8gMSA6IDA7Ci0JfQotCiAJLyogYWRkIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjbG9ja3MgKi8KIAogCW11dGV4X2xvY2soJmNsb2Nrc19tdXRleCk7CkBAIC01NjEsNDQgKzQwNiwxNyBAQAogCQkJCXVuc2lnbmVkIGxvbmcgaGNsaywKIAkJCQl1bnNpZ25lZCBsb25nIHBjbGspCiB7Ci0JdW5zaWduZWQgbG9uZyB1cGxsY29uID0gX19yYXdfcmVhZGwoUzNDMjQxMF9VUExMQ09OKTsKLQl1bnNpZ25lZCBsb25nIGNsa3Nsb3cgPSBfX3Jhd19yZWFkbChTM0MyNDEwX0NMS1NMT1cpOwotCXN0cnVjdCBjbGsgKmNsa3AgPSBpbml0X2Nsb2NrczsKLQlpbnQgcHRyOwotCWludCByZXQ7Ci0KLQlwcmludGsoS0VSTl9JTkZPICJTM0MyNDEwIENsb2NrcywgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzXG4iKTsKKwlwcmludGsoS0VSTl9JTkZPICJTM0MyNFhYIENsb2NrcywgKGMpIDIwMDQgU2ltdGVjIEVsZWN0cm9uaWNzXG4iKTsKIAogCS8qIGluaXRpYWxpc2UgdGhlIG1haW4gc3lzdGVtIGNsb2NrcyAqLwogCiAJY2xrX3h0YWwucmF0ZSA9IHh0YWw7Ci0JY2xrX3VwbGwucmF0ZSA9IHMzYzI0MTBfZ2V0X3BsbCh1cGxsY29uLCB4dGFsKTsKKwljbGtfdXBsbC5yYXRlID0gczNjMjQxMF9nZXRfcGxsKF9fcmF3X3JlYWRsKFMzQzI0MTBfVVBMTENPTiksIHh0YWwpOwogCiAJY2xrX2gucmF0ZSA9IGhjbGs7CiAJY2xrX3AucmF0ZSA9IHBjbGs7CiAJY2xrX2YucmF0ZSA9IGZjbGs7CiAKLQkvKiBXZSBtdXN0IGJlIGNhcmVmdWwgZGlzYWJsaW5nIHRoZSBjbG9ja3Mgd2UgYXJlIG5vdCBpbnRlbmRpbmcgdG8KLQkgKiBiZSB1c2luZyBhdCBib290IHRpbWUsIGFzIHN1YnN5dGVtcyBzdWNoIGFzIHRoZSBMQ0Qgd2hpY2ggZG8KLQkgKiB0aGVpciBvd24gRE1BIHJlcXVlc3RzIHRvIHRoZSBidXMgY2FuIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbG9ja3VwCi0JICogaWYgdGhleSB3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHJlcXVlc3RpbmcgYnVzIGFjY2Vzcy4KLQkgKgotCSAqIERpc2FibGluZyB0aGUgTENEIGNsb2NrIGlmIHRoZSBMQ0QgaXMgYWN0aXZlIGlzIHZlcnkgZGFuZ2Vyb3VzLAotCSAqIGFuZCB0aGVyZWZvcmUgdGhlIGJvb3Rsb2FkZXIgc2hvdWxkIGJlICBjYXJlZnVsIHRvIG5vdCBlbmFibGUKLQkgKiB0aGUgTENEIGNsb2NrIGlmIGl0IGlzIG5vdCBuZWVkZWQuCi0JKi8KLQotCW11dGV4X2xvY2soJmNsb2Nrc19tdXRleCk7Ci0KLQlzM2MyNHh4X2Nsa19lbmFibGUoUzNDMjQxMF9DTEtDT05fTkFORCwgMCk7Ci0JczNjMjR4eF9jbGtfZW5hYmxlKFMzQzI0MTBfQ0xLQ09OX1VTQkgsIDApOwotCXMzYzI0eHhfY2xrX2VuYWJsZShTM0MyNDEwX0NMS0NPTl9VU0JELCAwKTsKLQlzM2MyNHh4X2Nsa19lbmFibGUoUzNDMjQxMF9DTEtDT05fQURDLCAwKTsKLQlzM2MyNHh4X2Nsa19lbmFibGUoUzNDMjQxMF9DTEtDT05fSUlDLCAwKTsKLQlzM2MyNHh4X2Nsa19lbmFibGUoUzNDMjQxMF9DTEtDT05fU1BJLCAwKTsKLQotCW11dGV4X3VubG9jaygmY2xvY2tzX211dGV4KTsKLQogCS8qIGFzc3VtZSB1YXJ0IGNsb2NrcyBhcmUgY29ycmVjdGx5IHNldHVwICovCiAKIAkvKiByZWdpc3RlciBvdXIgY2xvY2tzICovCkBAIC02MTgsMjcgKzQzNiw1IEBACiAJaWYgKHMzYzI0eHhfcmVnaXN0ZXJfY2xvY2soJmNsa19wKSA8IDApCiAJCXByaW50ayhLRVJOX0VSUiAiZmFpbGVkIHRvIHJlZ2lzdGVyIGNwdSBwY2xrXG4iKTsKIAotCi0JaWYgKHMzYzI0eHhfcmVnaXN0ZXJfY2xvY2soJmNsa191c2JfYnVzKSA8IDApCi0JCXByaW50ayhLRVJOX0VSUiAiZmFpbGVkIHRvIHJlZ2lzdGVyIHVzYiBidXMgY2xvY2tcbiIpOwotCi0JLyogcmVnaXN0ZXIgY2xvY2tzIGZyb20gY2xvY2sgYXJyYXkgKi8KLQotCWZvciAocHRyID0gMDsgcHRyIDwgQVJSQVlfU0laRShpbml0X2Nsb2Nrcyk7IHB0cisrLCBjbGtwKyspIHsKLQkJcmV0ID0gczNjMjR4eF9yZWdpc3Rlcl9jbG9jayhjbGtwKTsKLQkJaWYgKHJldCA8IDApIHsKLQkJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNsb2NrICVzICglZClcbiIsCi0JCQkgICAgICAgY2xrcC0+bmFtZSwgcmV0KTsKLQkJfQotCX0KLQotCS8qIHNob3cgdGhlIGNsb2NrLXNsb3cgdmFsdWUgKi8KLQotCXByaW50aygiQ0xPQ0s6IFNsb3cgbW9kZSAoJWxkLiVsZCBNSHopLCAlcywgTVBMTCAlcywgVVBMTCAlc1xuIiwKLQkgICAgICAgcHJpbnRfbWh6KHh0YWwgLyAoIDIgKiBTM0MyNDEwX0NMS1NMT1dfR0VUX1NMT1dWQUwoY2xrc2xvdykpKSwKLQkgICAgICAgKGNsa3Nsb3cgJiBTM0MyNDEwX0NMS1NMT1dfU0xPVykgPyAic2xvdyIgOiAiZmFzdCIsCi0JICAgICAgIChjbGtzbG93ICYgUzNDMjQxMF9DTEtTTE9XX01QTExfT0ZGKSA/ICJvZmYiIDogIm9uIiwKLQkgICAgICAgKGNsa3Nsb3cgJiBTM0MyNDEwX0NMS1NMT1dfVUNMS19PRkYpID8gIm9mZiIgOiAib24iKTsKLQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2Nsb2NrLmggYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvY2xvY2suaAppbmRleCAwMWJiNDU4Li45NDU2YzgxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvY2xvY2suaAorKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvY2xvY2suaApAQCAtMjIsNiArMjIsNyBAQAogCiAJaW50CQkgICAgKCplbmFibGUpKHN0cnVjdCBjbGsgKiwgaW50IGVuYWJsZSk7CiAJaW50CQkgICAgKCpzZXRfcmF0ZSkoc3RydWN0IGNsayAqYywgdW5zaWduZWQgbG9uZyByYXRlKTsKKwl1bnNpZ25lZCBsb25nCSAgICAoKmdldF9yYXRlKShzdHJ1Y3QgY2xrICpjKTsKIAl1bnNpZ25lZCBsb25nCSAgICAoKnJvdW5kX3JhdGUpKHN0cnVjdCBjbGsgKmMsIHVuc2lnbmVkIGxvbmcgcmF0ZSk7CiAJaW50CQkgICAgKCpzZXRfcGFyZW50KShzdHJ1Y3QgY2xrICpjLCBzdHJ1Y3QgY2xrICpwYXJlbnQpOwogfTsKQEAgLTM2LDYgKzM3LDEzIEBACiAKIGV4dGVybiBzdHJ1Y3QgY2xrIGNsa191c2JfYnVzOwogCisvKiBjb3JlIGNsb2NrIHN1cHBvcnQgKi8KKworZXh0ZXJuIHN0cnVjdCBjbGsgY2xrX2Y7CitleHRlcm4gc3RydWN0IGNsayBjbGtfaDsKK2V4dGVybiBzdHJ1Y3QgY2xrIGNsa19wOworZXh0ZXJuIHN0cnVjdCBjbGsgY2xrX3VwbGw7CisKIC8qIGV4cG9ydHMgZm9yIGFyY2gvYXJtL21hY2gtczNjMjQxMAogICoKICAqIFBsZWFzZSBETyBOT1QgdXNlIHRoZXNlIG91dHNpZGUgb2YgYXJjaC9hcm0vbWFjaC1zM2MyNDEwCkBAIC00Myw3ICs1MSw4IEBACiAKIGV4dGVybiBzdHJ1Y3QgbXV0ZXggY2xvY2tzX211dGV4OwogCi1leHRlcm4gaW50IHMzYzI0eHhfY2xrY29uX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpOworZXh0ZXJuIGludCBzM2MyNDEwX2Nsa2Nvbl9lbmFibGUoc3RydWN0IGNsayAqY2xrLCBpbnQgZW5hYmxlKTsKKwogZXh0ZXJuIGludCBzM2MyNHh4X3JlZ2lzdGVyX2Nsb2NrKHN0cnVjdCBjbGsgKmNsayk7CiAKIGV4dGVybiBpbnQgczNjMjR4eF9zZXR1cF9jbG9ja3ModW5zaWduZWQgbG9uZyB4dGFsLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2NwdS5oIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2NwdS5oCmluZGV4IDQwODYyODkuLjIxYzYyZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9jcHUuaAorKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvY3B1LmgKQEAgLTczLDUgKzczLDYgQEAKIAogLyogc3lzdGVtIGRldmljZSBjbGFzc2VzICovCiAKK2V4dGVybiBzdHJ1Y3Qgc3lzZGV2X2NsYXNzIHMzYzI0MTBfc3lzY2xhc3M7CiBleHRlcm4gc3RydWN0IHN5c2Rldl9jbGFzcyBzM2MyNDQwX3N5c2NsYXNzOwogZXh0ZXJuIHN0cnVjdCBzeXNkZXZfY2xhc3MgczNjMjQ0Ml9zeXNjbGFzczsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLWFudWJpcy5jIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL21hY2gtYW51YmlzLmMKaW5kZXggNTJiZjcxOC4uNGE5MmQ2ZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL21hY2gtYW51YmlzLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL21hY2gtYW51YmlzLmMKQEAgLTIzOSw2ICsyMzksNTQgQEAKIAkuc2VsZWN0X2NoaXAJPSBhbnViaXNfbmFuZF9zZWxlY3QsCiB9OwogCisvKiBJREUgY2hhbm5lbHMgKi8KKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBhbnViaXNfaWRlMF9yZXNvdXJjZVtdID0geworCXsKKwkJLnN0YXJ0CT0gUzNDMjQxMF9DUzMsCisJCS5lbmQJPSBTM0MyNDEwX0NTMyArICg4KjMyKSAtIDEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sIHsKKwkJLnN0YXJ0CT0gUzNDMjQxMF9DUzMgKyAoMTw8MjYpLAorCQkuZW5kCT0gUzNDMjQxMF9DUzMgKyAoMTw8MjYpICsgKDgqMzIpIC0gMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwgeworCQkuc3RhcnQJPSBJUlFfSURFMCwKKwkJLmVuZAk9IElSUV9JREUwLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgYW51YmlzX2RldmljZV9pZGUwID0geworCS5uYW1lCQk9ICJzaW10ZWMtaWRlIiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUoYW51YmlzX2lkZTBfcmVzb3VyY2UpLAorCS5yZXNvdXJjZQk9IGFudWJpc19pZGUwX3Jlc291cmNlLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBhbnViaXNfaWRlMV9yZXNvdXJjZVtdID0geworCXsKKwkJLnN0YXJ0CT0gUzNDMjQxMF9DUzQsCisJCS5lbmQJPSBTM0MyNDEwX0NTNCArICg4KjMyKSAtIDEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sIHsKKwkJLnN0YXJ0CT0gUzNDMjQxMF9DUzQgKyAoMTw8MjYpLAorCQkuZW5kCT0gUzNDMjQxMF9DUzQgKyAoMTw8MjYpICsgKDgqMzIpIC0gMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwgeworCQkuc3RhcnQJPSBJUlFfSURFMCwKKwkJLmVuZAk9IElSUV9JREUwLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhbnViaXNfZGV2aWNlX2lkZTEgPSB7CisJLm5hbWUJCT0gInNpbXRlYy1pZGUiLAorCS5pZAkJPSAxLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShhbnViaXNfaWRlMV9yZXNvdXJjZSksCisJLnJlc291cmNlCT0gYW51YmlzX2lkZTFfcmVzb3VyY2UsCit9OwogCiAvKiBTdGFuZGFyZCBBbnViaXMgZGV2aWNlcyAqLwogCkBAIC0yNDksNiArMjk3LDggQEAKIAkmczNjX2RldmljZV9pMmMsCiAgCSZzM2NfZGV2aWNlX3J0YywKIAkmczNjX2RldmljZV9uYW5kLAorCSZhbnViaXNfZGV2aWNlX2lkZTAsCisJJmFudWJpc19kZXZpY2VfaWRlMSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgY2xrICphbnViaXNfY2xvY2tzW10gPSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQxMC1jbG9jay5jIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0MTAtY2xvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDE3YzYwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0MTAtY2xvY2suYwpAQCAtMCwwICsxLDI2MyBAQAorLyogbGludXgvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2Nsb2NrLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgU2ltdGVjIEVsZWN0cm9uaWNzCisgKglCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+CisgKgorICogUzNDMjQxMCxTM0MyNDQwLFMzQzI0NDIgQ2xvY2sgY29udHJvbCBzdXBwb3J0CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNkZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKworI2luY2x1ZGUgPGFzbS9hcmNoL3JlZ3MtY2xvY2suaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9yZWdzLWdwaW8uaD4KKworI2luY2x1ZGUgImNsb2NrLmgiCisjaW5jbHVkZSAiY3B1LmgiCisKK2ludCBzM2MyNDEwX2Nsa2Nvbl9lbmFibGUoc3RydWN0IGNsayAqY2xrLCBpbnQgZW5hYmxlKQoreworCXVuc2lnbmVkIGludCBjbG9ja3MgPSBjbGstPmN0cmxiaXQ7CisJdW5zaWduZWQgbG9uZyBjbGtjb247CisKKwljbGtjb24gPSBfX3Jhd19yZWFkbChTM0MyNDEwX0NMS0NPTik7CisKKwlpZiAoZW5hYmxlKQorCQljbGtjb24gfD0gY2xvY2tzOworCWVsc2UKKwkJY2xrY29uICY9IH5jbG9ja3M7CisKKwkvKiBlbnN1cmUgbm9uZSBvZiB0aGUgc3BlY2lhbCBmdW5jdGlvbiBiaXRzIHNldCAqLworCWNsa2NvbiAmPSB+KFMzQzI0MTBfQ0xLQ09OX0lETEV8UzNDMjQxMF9DTEtDT05fUE9XRVIpOworCisJX19yYXdfd3JpdGVsKGNsa2NvbiwgUzNDMjQxMF9DTEtDT04pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgczNjMjQxMF91cGxsX2VuYWJsZShzdHJ1Y3QgY2xrICpjbGssIGludCBlbmFibGUpCit7CisJdW5zaWduZWQgbG9uZyBjbGtzbG93ID0gX19yYXdfcmVhZGwoUzNDMjQxMF9DTEtTTE9XKTsKKwl1bnNpZ25lZCBsb25nIG9yaWcgPSBjbGtzbG93OworCisJaWYgKGVuYWJsZSkKKwkJY2xrc2xvdyAmPSB+UzNDMjQxMF9DTEtTTE9XX1VDTEtfT0ZGOworCWVsc2UKKwkJY2xrc2xvdyB8PSBTM0MyNDEwX0NMS1NMT1dfVUNMS19PRkY7CisKKwlfX3Jhd193cml0ZWwoY2xrc2xvdywgUzNDMjQxMF9DTEtTTE9XKTsKKworCS8qIGlmIHdlIHN0YXJ0ZWQgdGhlIFVQTEwsIHRoZW4gYWxsb3cgdG8gc2V0dGxlICovCisKKwlpZiAoZW5hYmxlICYmIChvcmlnICYgUzNDMjQxMF9DTEtTTE9XX1VDTEtfT0ZGKSkKKwkJdWRlbGF5KDIwMCk7CisKKwlyZXR1cm4gMDsKK30KKworLyogc3RhbmRhcmQgY2xvY2sgZGVmaW5pdGlvbnMgKi8KKworc3RhdGljIHN0cnVjdCBjbGsgaW5pdF9jbG9ja3NfZGlzYWJsZVtdID0geworCXsKKwkJLm5hbWUJCT0gIm5hbmQiLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19oLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9OQU5ELAorCX0sIHsKKwkJLm5hbWUJCT0gInNkaSIsCisJCS5pZAkJPSAtMSwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1NESSwKKwl9LCB7CisJCS5uYW1lCQk9ICJhZGMiLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19wLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9BREMsCisJfSwgeworCQkubmFtZQkJPSAiaTJjIiwKKwkJLmlkCQk9IC0xLAorCQkucGFyZW50CQk9ICZjbGtfcCwKKwkJLmVuYWJsZQkJPSBzM2MyNDEwX2Nsa2Nvbl9lbmFibGUsCisJCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fSUlDLAorCX0sIHsKKwkJLm5hbWUJCT0gImlpcyIsCisJCS5pZAkJPSAtMSwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX0lJUywKKwl9LCB7CisJCS5uYW1lCQk9ICJzcGkiLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19wLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9TUEksCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBjbGsgaW5pdF9jbG9ja3NbXSA9IHsKKwl7CisJCS5uYW1lCQk9ICJsY2QiLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19oLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9MQ0RDLAorCX0sIHsKKwkJLm5hbWUJCT0gImdwaW8iLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19wLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9HUElPLAorCX0sIHsKKwkJLm5hbWUJCT0gInVzYi1ob3N0IiwKKwkJLmlkCQk9IC0xLAorCQkucGFyZW50CQk9ICZjbGtfaCwKKwkJLmVuYWJsZQkJPSBzM2MyNDEwX2Nsa2Nvbl9lbmFibGUsCisJCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fVVNCSCwKKwl9LCB7CisJCS5uYW1lCQk9ICJ1c2ItZGV2aWNlIiwKKwkJLmlkCQk9IC0xLAorCQkucGFyZW50CQk9ICZjbGtfaCwKKwkJLmVuYWJsZQkJPSBzM2MyNDEwX2Nsa2Nvbl9lbmFibGUsCisJCS5jdHJsYml0CT0gUzNDMjQxMF9DTEtDT05fVVNCRCwKKwl9LCB7CisJCS5uYW1lCQk9ICJ0aW1lcnMiLAorCQkuaWQJCT0gLTEsCisJCS5wYXJlbnQJCT0gJmNsa19wLAorCQkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKKwkJLmN0cmxiaXQJPSBTM0MyNDEwX0NMS0NPTl9QV01ULAorCX0sIHsKKwkJLm5hbWUJCT0gInVhcnQiLAorCQkuaWQJCT0gMCwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1VBUlQwLAorCX0sIHsKKwkJLm5hbWUJCT0gInVhcnQiLAorCQkuaWQJCT0gMSwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1VBUlQxLAorCX0sIHsKKwkJLm5hbWUJCT0gInVhcnQiLAorCQkuaWQJCT0gMiwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1VBUlQyLAorCX0sIHsKKwkJLm5hbWUJCT0gInJ0YyIsCisJCS5pZAkJPSAtMSwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAorCQkuY3RybGJpdAk9IFMzQzI0MTBfQ0xLQ09OX1JUQywKKwl9LCB7CisJCS5uYW1lCQk9ICJ3YXRjaGRvZyIsCisJCS5pZAkJPSAtMSwKKwkJLnBhcmVudAkJPSAmY2xrX3AsCisJCS5jdHJsYml0CT0gMCwKKwl9Cit9OworCisvKiBzM2MyNDEwX2Jhc2VjbGtfYWRkKCkKKyAqCisgKiBBZGQgYWxsIHRoZSBjbG9ja3MgdXNlZCBieSB0aGUgczNjMjQxMCBvciBjb21wYXRpYmxlIENQVXMKKyAqIHN1Y2ggYXMgdGhlIFMzQzI0NDAgYW5kIFMzQzI0NDIuCisgKgorICogV2UgY2Fubm90IHVzZSBhIHN5c3RlbSBkZXZpY2UgYXMgd2UgYXJlIG5lZWRlZCBiZWZvcmUgYW55CisgKiBvZiB0aGUgaW5pdC1jYWxscyB0aGF0IGluaXRpYWxpc2UgdGhlIGRldmljZXMgYXJlIGFjdHVhbGx5CisgKiBkb25lLgorKi8KKworaW50IF9faW5pdCBzM2MyNDEwX2Jhc2VjbGtfYWRkKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBjbGtzbG93ID0gX19yYXdfcmVhZGwoUzNDMjQxMF9DTEtTTE9XKTsKKwl1bnNpZ25lZCBsb25nIGNsa2NvbiAgPSBfX3Jhd19yZWFkbChTM0MyNDEwX0NMS0NPTik7CisJc3RydWN0IGNsayAqY2xrcDsKKwlzdHJ1Y3QgY2xrICp4dGFsOworCWludCByZXQ7CisJaW50IHB0cjsKKworCWNsa191cGxsLmVuYWJsZSA9IHMzYzI0MTBfdXBsbF9lbmFibGU7CisKKwlpZiAoczNjMjR4eF9yZWdpc3Rlcl9jbG9jaygmY2xrX3VzYl9idXMpIDwgMCkKKwkJcHJpbnRrKEtFUk5fRVJSICJmYWlsZWQgdG8gcmVnaXN0ZXIgdXNiIGJ1cyBjbG9ja1xuIik7CisKKwkvKiByZWdpc3RlciBjbG9ja3MgZnJvbSBjbG9jayBhcnJheSAqLworCisJY2xrcCA9IGluaXRfY2xvY2tzOworCWZvciAocHRyID0gMDsgcHRyIDwgQVJSQVlfU0laRShpbml0X2Nsb2Nrcyk7IHB0cisrLCBjbGtwKyspIHsKKwkJLyogZW5zdXJlIHRoYXQgd2Ugbm90ZSB0aGUgY2xvY2sgc3RhdGUgKi8KKworCQljbGtwLT51c2FnZSA9IGNsa2NvbiAmIGNsa3AtPmN0cmxiaXQgPyAxIDogMDsKKworCQlyZXQgPSBzM2MyNHh4X3JlZ2lzdGVyX2Nsb2NrKGNsa3ApOworCQlpZiAocmV0IDwgMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJGYWlsZWQgdG8gcmVnaXN0ZXIgY2xvY2sgJXMgKCVkKVxuIiwKKwkJCSAgICAgICBjbGtwLT5uYW1lLCByZXQpOworCQl9CisJfQorCisJLyogV2UgbXVzdCBiZSBjYXJlZnVsIGRpc2FibGluZyB0aGUgY2xvY2tzIHdlIGFyZSBub3QgaW50ZW5kaW5nIHRvCisJICogYmUgdXNpbmcgYXQgYm9vdCB0aW1lLCBhcyBzdWJzeXRlbXMgc3VjaCBhcyB0aGUgTENEIHdoaWNoIGRvCisJICogdGhlaXIgb3duIERNQSByZXF1ZXN0cyB0byB0aGUgYnVzIGNhbiBjYXVzZSB0aGUgc3lzdGVtIHRvIGxvY2t1cAorCSAqIGlmIHRoZXkgd2hlcmUgaW4gdGhlIG1pZGRsZSBvZiByZXF1ZXN0aW5nIGJ1cyBhY2Nlc3MuCisJICoKKwkgKiBEaXNhYmxpbmcgdGhlIExDRCBjbG9jayBpZiB0aGUgTENEIGlzIGFjdGl2ZSBpcyB2ZXJ5IGRhbmdlcm91cywKKwkgKiBhbmQgdGhlcmVmb3JlIHRoZSBib290bG9hZGVyIHNob3VsZCBiZSBjYXJlZnVsIHRvIG5vdCBlbmFibGUKKwkgKiB0aGUgTENEIGNsb2NrIGlmIGl0IGlzIG5vdCBuZWVkZWQuCisJKi8KKworCS8qIGluc3RhbGwgKGFuZCBkaXNhYmxlKSB0aGUgY2xvY2tzIHdlIGRvIG5vdCBuZWVkIGltbWVkaWF0ZWx5ICovCisKKwljbGtwID0gaW5pdF9jbG9ja3NfZGlzYWJsZTsKKwlmb3IgKHB0ciA9IDA7IHB0ciA8IEFSUkFZX1NJWkUoaW5pdF9jbG9ja3NfZGlzYWJsZSk7IHB0cisrLCBjbGtwKyspIHsKKworCQlyZXQgPSBzM2MyNHh4X3JlZ2lzdGVyX2Nsb2NrKGNsa3ApOworCQlpZiAocmV0IDwgMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJGYWlsZWQgdG8gcmVnaXN0ZXIgY2xvY2sgJXMgKCVkKVxuIiwKKwkJCSAgICAgICBjbGtwLT5uYW1lLCByZXQpOworCQl9CisKKwkJczNjMjQxMF9jbGtjb25fZW5hYmxlKGNsa3AsIDApOworCX0KKworCS8qIHNob3cgdGhlIGNsb2NrLXNsb3cgdmFsdWUgKi8KKworCXh0YWwgPSBjbGtfZ2V0KE5VTEwsICJ4dGFsIik7CisKKwlwcmludGsoIkNMT0NLOiBTbG93IG1vZGUgKCVsZC4lbGQgTUh6KSwgJXMsIE1QTEwgJXMsIFVQTEwgJXNcbiIsCisJICAgICAgIHByaW50X21oeihjbGtfZ2V0X3JhdGUoeHRhbCkgLworCQkJICggMiAqIFMzQzI0MTBfQ0xLU0xPV19HRVRfU0xPV1ZBTChjbGtzbG93KSkpLAorCSAgICAgICAoY2xrc2xvdyAmIFMzQzI0MTBfQ0xLU0xPV19TTE9XKSA/ICJzbG93IiA6ICJmYXN0IiwKKwkgICAgICAgKGNsa3Nsb3cgJiBTM0MyNDEwX0NMS1NMT1dfTVBMTF9PRkYpID8gIm9mZiIgOiAib24iLAorCSAgICAgICAoY2xrc2xvdyAmIFMzQzI0MTBfQ0xLU0xPV19VQ0xLX09GRikgPyAib2ZmIiA6ICJvbiIpOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQxMC5jIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0MTAuYwppbmRleCAwODUyZTg3Li5hMTEwY2ZmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQxMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDEwLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvc3lzZGV2Lmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAKICNpbmNsdWRlIDxhc20vbWFjaC9hcmNoLmg+CkBAIC0xMDgsMTEgKzEwOSwzMyBAQAogCSAqLwogCiAJczNjMjR4eF9zZXR1cF9jbG9ja3MoeHRhbCwgZmNsaywgaGNsaywgcGNsayk7CisJczNjMjQxMF9iYXNlY2xrX2FkZCgpOwogfQogCitzdHJ1Y3Qgc3lzZGV2X2NsYXNzIHMzYzI0MTBfc3lzY2xhc3MgPSB7CisJc2V0X2tzZXRfbmFtZSgiczNjMjQxMC1jb3JlIiksCit9OworCitzdGF0aWMgc3RydWN0IHN5c19kZXZpY2UgczNjMjQxMF9zeXNkZXYgPSB7CisJLmNscwkJPSAmczNjMjQxMF9zeXNjbGFzcywKK307CisKKy8qIG5lZWQgdG8gcmVnaXN0ZXIgY2xhc3MgYmVmb3JlIHdlIGFjdHVhbGx5IHJlZ2lzdGVyIHRoZSBkZXZpY2UsIGFuZAorICogd2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBiZWVuIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgb2YgdGhlCisgKiBkcml2ZXJzIGV2ZW4gdHJ5IHRvIHVzZSBpdCAoZXZlbiBpZiBub3Qgb24gYW4gczNjMjQ0MCBiYXNlZCBzeXN0ZW0pCisgKiBhcyBhIGRyaXZlciB3aGljaCBtYXkgc3VwcG9ydCBib3RoIDI0MTAgYW5kIDI0NDAgbWF5IHRyeSBhbmQgdXNlIGl0LgorKi8KKworc3RhdGljIGludCBfX2luaXQgczNjMjQxMF9jb3JlX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gc3lzZGV2X2NsYXNzX3JlZ2lzdGVyKCZzM2MyNDEwX3N5c2NsYXNzKTsKK30KKworY29yZV9pbml0Y2FsbChzM2MyNDEwX2NvcmVfaW5pdCk7CisKIGludCBfX2luaXQgczNjMjQxMF9pbml0KHZvaWQpCiB7CiAJcHJpbnRrKCJTM0MyNDEwOiBJbml0aWFsaXNpbmcgYXJjaGl0ZWN0dXJlXG4iKTsKIAotCXJldHVybiAwOworCXJldHVybiBzeXNkZXZfcmVnaXN0ZXIoJnMzYzI0MTBfc3lzZGV2KTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDEwLmggYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQxMC5oCmluZGV4IDRkNTMxMmEuLjczZjFhMjQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDEwLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0MTAuaApAQCAtMjksNiArMjksOCBAQAogCiBleHRlcm4gdm9pZCBzM2MyNDEwX2luaXRfY2xvY2tzKGludCB4dGFsKTsKIAorZXh0ZXJuICBpbnQgczNjMjQxMF9iYXNlY2xrX2FkZCh2b2lkKTsKKwogI2Vsc2UKICNkZWZpbmUgczNjMjQxMF9pbml0X2Nsb2NrcyBOVUxMCiAjZGVmaW5lIHMzYzI0MTBfaW5pdF91YXJ0cyBOVUxMCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQ0MC1jbG9jay5jIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0NDAtY2xvY2suYwppbmRleCBkN2EzMGVkLi4xNTc5Njg2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQ0MC1jbG9jay5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDQwLWNsb2NrLmMKQEAgLTkxLDcgKzkxLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgY2xrIHMzYzI0NDBfY2xrX2NhbSA9IHsKIAkubmFtZQkJPSAiY2FtaWYiLAogCS5pZAkJPSAtMSwKLQkuZW5hYmxlCQk9IHMzYzI0eHhfY2xrY29uX2VuYWJsZSwKKwkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKIAkuY3RybGJpdAk9IFMzQzI0NDBfQ0xLQ09OX0NBTUVSQSwKIH07CiAKQEAgLTEwNSw3ICsxMDUsNyBAQAogc3RhdGljIHN0cnVjdCBjbGsgczNjMjQ0MF9jbGtfYWM5NyA9IHsKIAkubmFtZQkJPSAiYWM5NyIsCiAJLmlkCQk9IC0xLAotCS5lbmFibGUJCT0gczNjMjR4eF9jbGtjb25fZW5hYmxlLAorCS5lbmFibGUJCT0gczNjMjQxMF9jbGtjb25fZW5hYmxlLAogCS5jdHJsYml0CT0gUzNDMjQ0MF9DTEtDT05fQ0FNRVJBLAogfTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0NDItY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDQyLWNsb2NrLmMKaW5kZXggNWI3YjMwMS4uZDlmNTRiNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0NDItY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQ0Mi1jbG9jay5jCkBAIC0xMDIsNyArMTAyLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgY2xrIHMzYzI0NDJfY2xrX2NhbSA9IHsKIAkubmFtZQkJPSAiY2FtaWYiLAogCS5pZAkJPSAtMSwKLQkuZW5hYmxlCQk9IHMzYzI0eHhfY2xrY29uX2VuYWJsZSwKKwkuZW5hYmxlCQk9IHMzYzI0MTBfY2xrY29uX2VuYWJsZSwKIAkuY3RybGJpdAk9IFMzQzI0NDBfQ0xLQ09OX0NBTUVSQSwKIH07CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDR4LmMgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvczNjMjQ0eC5jCmluZGV4IDk2ODUyYTcuLjgzOGJjNTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9zM2MyNDR4LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL3MzYzI0NHguYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL3JlZ3MtZ3Bpb2ouaD4KICNpbmNsdWRlIDxhc20vYXJjaC9yZWdzLWRzYy5oPgogCisjaW5jbHVkZSAiczNjMjQxMC5oIgogI2luY2x1ZGUgInMzYzI0NDAuaCIKICNpbmNsdWRlICJzM2MyNDR4LmgiCiAjaW5jbHVkZSAiY2xvY2suaCIKQEAgLTExOCw2ICsxMTksNyBAQAogCSAqLwogCiAJczNjMjR4eF9zZXR1cF9jbG9ja3MoeHRhbCwgZmNsaywgaGNsaywgcGNsayk7CisJczNjMjQxMF9iYXNlY2xrX2FkZCgpOwogfQogCiAjaWZkZWYgQ09ORklHX1BNCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9LY29uZmlnIGIvYXJjaC9hcm0vbW0vS2NvbmZpZwppbmRleCAxZmYyZjA3Li40MjIxZDA1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21tL0tjb25maWcKQEAgLTEyMSw4ICsxMjEsOCBAQAogIyBBUk05MjZUCiBjb25maWcgQ1BVX0FSTTkyNlQKIAlib29sICJTdXBwb3J0IEFSTTkyNlQgcHJvY2Vzc29yIgotCWRlcGVuZHMgb24gQVJDSF9JTlRFR1JBVE9SIHx8IEFSQ0hfVkVSU0FUSUxFX1BCIHx8IE1BQ0hfVkVSU0FUSUxFX0FCIHx8IEFSQ0hfT01BUDczMCB8fCBBUkNIX09NQVAxNlhYIHx8IE1BQ0hfUkVBTFZJRVdfRUIgfHwgQVJDSF9QTlg0MDA4Ci0JZGVmYXVsdCB5IGlmIEFSQ0hfVkVSU0FUSUxFX1BCIHx8IE1BQ0hfVkVSU0FUSUxFX0FCIHx8IEFSQ0hfT01BUDczMCB8fCBBUkNIX09NQVAxNlhYIHx8IEFSQ0hfUE5YNDAwOAorCWRlcGVuZHMgb24gQVJDSF9JTlRFR1JBVE9SIHx8IEFSQ0hfVkVSU0FUSUxFX1BCIHx8IE1BQ0hfVkVSU0FUSUxFX0FCIHx8IEFSQ0hfT01BUDczMCB8fCBBUkNIX09NQVAxNlhYIHx8IE1BQ0hfUkVBTFZJRVdfRUIgfHwgQVJDSF9QTlg0MDA4IHx8IEFSQ0hfTkVUWAorCWRlZmF1bHQgeSBpZiBBUkNIX1ZFUlNBVElMRV9QQiB8fCBNQUNIX1ZFUlNBVElMRV9BQiB8fCBBUkNIX09NQVA3MzAgfHwgQVJDSF9PTUFQMTZYWCB8fCBBUkNIX1BOWDQwMDggfHwgQVJDSF9ORVRYCiAJc2VsZWN0IENQVV8zMnY1CiAJc2VsZWN0IENQVV9BQlJUX0VWNVRKCiAJc2VsZWN0IENQVV9DQUNIRV9WSVZUCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ud2ZwZS9mcG1vZHVsZS5jIGIvYXJjaC9hcm0vbndmcGUvZnBtb2R1bGUuYwppbmRleCAyZGZlMWFjLi43ZDk3N2QyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ud2ZwZS9mcG1vZHVsZS5jCisrKyBiL2FyY2gvYXJtL253ZnBlL2ZwbW9kdWxlLmMKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLS8qIFhYWCAqLworCisjaW5jbHVkZSA8YXNtL3RocmVhZF9ub3RpZnkuaD4KIAogI2luY2x1ZGUgInNvZnRmbG9hdC5oIgogI2luY2x1ZGUgImZwb3Bjb2RlLmgiCkBAIC01NiwxNiArNTcsMjggQEAKIGV4dGVybiBjaGFyIGZwZV90eXBlW107CiAjZW5kaWYKIAorc3RhdGljIGludCBud2ZwZV9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqdikKK3sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IHY7CisKKwlpZiAoY21kID09IFRIUkVBRF9OT1RJRllfRkxVU0gpCisJCW53ZnBlX2luaXRfZnBhKCZ0aHJlYWQtPmZwc3RhdGUpOworCisJcmV0dXJuIE5PVElGWV9ET05FOworfQorCitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIG53ZnBlX25vdGlmaWVyX2Jsb2NrID0geworCS5ub3RpZmllcl9jYWxsID0gbndmcGVfbm90aWZ5LAorfTsKKwogLyoga2VybmVsIGZ1bmN0aW9uIHByb3RvdHlwZXMgcmVxdWlyZWQgKi8KIHZvaWQgZnBfc2V0dXAodm9pZCk7CiAKIC8qIGV4dGVybmFsIGRlY2xhcmF0aW9ucyBmb3Igc2F2ZWQga2VybmVsIHN5bWJvbHMgKi8KIGV4dGVybiB2b2lkICgqa2Vybl9mcF9lbnRlcikodm9pZCk7Ci1leHRlcm4gdm9pZCAoKmZwX2luaXQpKHVuaW9uIGZwX3N0YXRlICopOwogCiAvKiBPcmlnaW5hbCB2YWx1ZSBvZiBmcF9lbnRlciBmcm9tIGtlcm5lbCBiZWZvcmUgcGF0Y2hlZCBieSBmcGVfaW5pdC4gKi8KIHN0YXRpYyB2b2lkICgqb3JpZ19mcF9lbnRlcikodm9pZCk7Ci1zdGF0aWMgdm9pZCAoKm9yaWdfZnBfaW5pdCkodW5pb24gZnBfc3RhdGUgKik7CiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCiBleHRlcm4gdm9pZCBud2ZwZV9lbnRlcih2b2lkKTsKQEAgLTg4LDIwICsxMDEsMjAgQEAKIAlwcmludGsoS0VSTl9XQVJOSU5HICJOZXRXaW5kZXIgRmxvYXRpbmcgUG9pbnQgRW11bGF0b3IgVjAuOTcgKCIKIAkgICAgICAgTldGUEVfQklUUyAiIHByZWNpc2lvbilcbiIpOwogCisJdGhyZWFkX3JlZ2lzdGVyX25vdGlmaWVyKCZud2ZwZV9ub3RpZmllcl9ibG9jayk7CisKIAkvKiBTYXZlIHBvaW50ZXIgdG8gdGhlIG9sZCBGUCBoYW5kbGVyIGFuZCB0aGVuIHBhdGNoIG91cnNlbHZlcyBpbiAqLwogCW9yaWdfZnBfZW50ZXIgPSBrZXJuX2ZwX2VudGVyOwotCW9yaWdfZnBfaW5pdCA9IGZwX2luaXQ7CiAJa2Vybl9mcF9lbnRlciA9IG53ZnBlX2VudGVyOwotCWZwX2luaXQgPSBud2ZwZV9pbml0X2ZwYTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBfX2V4aXQgZnBlX2V4aXQodm9pZCkKIHsKKwl0aHJlYWRfdW5yZWdpc3Rlcl9ub3RpZmllcigmbndmcGVfbm90aWZpZXJfYmxvY2spOwogCS8qIFJlc3RvcmUgdGhlIHZhbHVlcyB3ZSBzYXZlZCBlYXJsaWVyLiAqLwogCWtlcm5fZnBfZW50ZXIgPSBvcmlnX2ZwX2VudGVyOwotCWZwX2luaXQgPSBvcmlnX2ZwX2luaXQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvdGltZXIzMmsuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCmluZGV4IGIyYTk0M2IuLjM0NjFhNmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCkBAIC0yMTAsNyArMjEwLDggQEAKIAogCW5vdyA9IG9tYXBfMzJrX3N5bmNfdGltZXJfcmVhZCgpOwogCi0Jd2hpbGUgKG5vdyAtIG9tYXBfMzJrX2xhc3RfdGljayA+PSBPTUFQXzMyS19USUNLU19QRVJfSFopIHsKKwl3aGlsZSAoKHNpZ25lZCBsb25nKShub3cgLSBvbWFwXzMya19sYXN0X3RpY2spCisJCQkJCQk+PSBPTUFQXzMyS19USUNLU19QRVJfSFopIHsKIAkJb21hcF8zMmtfbGFzdF90aWNrICs9IE9NQVBfMzJLX1RJQ0tTX1BFUl9IWjsKIAkJdGltZXJfdGljayhyZWdzKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL2FybS92ZnAvTWFrZWZpbGUgYi9hcmNoL2FybS92ZnAvTWFrZWZpbGUKaW5kZXggYWZhYmFjMy4uN2UxMzZlNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vdmZwL01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL3ZmcC9NYWtlZmlsZQpAQCAtNyw2ICs3LDkgQEAKICMgRVhUUkFfQ0ZMQUdTIDo9IC1EREVCVUcKICMgRVhUUkFfQUZMQUdTIDo9IC1EREVCVUcKIAorQUZMQUdTCQk6PSQoQUZMQUdTOi1tc29mdC1mbG9hdD0tV2EsLW1mcHU9c29mdHZmcCt2ZnApCitMREZMQUdTCQkrPS0tbm8td2Fybi1taXNtYXRjaAorCiBvYmoteQkJCSs9IHZmcC5vCiAKLXZmcC0kKENPTkZJR19WRlApCSs9IGVudHJ5Lm8gdmZwbW9kdWxlLm8gdmZwaHcubyB2ZnBzaW5nbGUubyB2ZnBkb3VibGUubwordmZwLSQoQ09ORklHX1ZGUCkJKz0gdmZwbW9kdWxlLm8gZW50cnkubyB2ZnBody5vIHZmcHNpbmdsZS5vIHZmcGRvdWJsZS5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS92ZnAvdmZwaHcuUyBiL2FyY2gvYXJtL3ZmcC92ZnBody5TCmluZGV4IGEzZjY1YjQuLmViNjgzY2QgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3ZmcC92ZnBody5TCisrKyBiL2FyY2gvYXJtL3ZmcC92ZnBody5TCkBAIC0xOTIsNyArMTkyLDcgQEAKIAlhZGQJcGMsIHBjLCByMCwgbHNsICMzCiAJbW92CXIwLCByMAogCS5pcnAJZHIsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQotCW1ycmMJcDExLCAxLCByMCwgcjEsIGNcZHIJQCBmbXJyZAlyMCwgcjEsIGRcZHIKKwlmbXJyZAlyMCwgcjEsIGRcZHIKIAltb3YJcGMsIGxyCiAJLmVuZHIKIApAQCAtMjA2LDYgKzIwNiw2IEBACiAJYWRkCXBjLCBwYywgcjAsIGxzbCAjMwogCW1vdglyMCwgcjAKIAkuaXJwCWRyLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUKLQltY3JyCXAxMSwgMSwgcjEsIHIyLCBjXGRyCUAgZm1kcnIJcjEsIHIyLCBkXGRyCisJZm1kcnIJZFxkciwgcjEsIHIyCiAJbW92CXBjLCBscgogCS5lbmRyCmRpZmYgLS1naXQgYS9hcmNoL2FybS92ZnAvdmZwbW9kdWxlLmMgYi9hcmNoL2FybS92ZnAvdmZwbW9kdWxlLmMKaW5kZXggMDM0ODZiZS4uMjQ3NmY0YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vdmZwL3ZmcG1vZHVsZS5jCisrKyBiL2FyY2gvYXJtL3ZmcC92ZnBtb2R1bGUuYwpAQCAtMTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorCisjaW5jbHVkZSA8YXNtL3RocmVhZF9ub3RpZnkuaD4KICNpbmNsdWRlIDxhc20vdmZwLmg+CiAKICNpbmNsdWRlICJ2ZnBpbnN0ci5oIgpAQCAtMzYsMzcgKzM4LDU0IEBACiAgKi8KIHVuc2lnbmVkIGludCBWRlBfYXJjaDsKIAotLyoKLSAqIFBlci10aHJlYWQgVkZQIGluaXRpYWxpc2F0aW9uLgotICovCi12b2lkIHZmcF9mbHVzaF90aHJlYWQodW5pb24gdmZwX3N0YXRlICp2ZnApCitzdGF0aWMgaW50IHZmcF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICp2KQogewotCW1lbXNldCh2ZnAsIDAsIHNpemVvZih1bmlvbiB2ZnBfc3RhdGUpKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IHY7CisJdW5pb24gdmZwX3N0YXRlICp2ZnAgPSAmdGhyZWFkLT52ZnBzdGF0ZTsKIAotCXZmcC0+aGFyZC5mcGV4YyA9IEZQRVhDX0VOQUJMRTsKLQl2ZnAtPmhhcmQuZnBzY3IgPSBGUFNDUl9ST1VORF9ORUFSRVNUOworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBUSFJFQURfTk9USUZZX0ZMVVNIOgorCQkvKgorCQkgKiBQZXItdGhyZWFkIFZGUCBpbml0aWFsaXNhdGlvbi4KKwkJICovCisJCW1lbXNldCh2ZnAsIDAsIHNpemVvZih1bmlvbiB2ZnBfc3RhdGUpKTsKIAotCS8qCi0JICogRGlzYWJsZSBWRlAgdG8gZW5zdXJlIHdlIGluaXRpYWxpc2UgaXQgZmlyc3QuCi0JICovCi0JZm14cihGUEVYQywgZm1yeChGUEVYQykgJiB+RlBFWENfRU5BQkxFKTsKKwkJdmZwLT5oYXJkLmZwZXhjID0gRlBFWENfRU5BQkxFOworCQl2ZnAtPmhhcmQuZnBzY3IgPSBGUFNDUl9ST1VORF9ORUFSRVNUOwogCi0JLyoKLQkgKiBFbnN1cmUgd2UgZG9uJ3QgdHJ5IHRvIG92ZXJ3cml0ZSBvdXIgbmV3bHkgaW5pdGlhbGlzZWQKLQkgKiBzdGF0ZSBpbmZvcm1hdGlvbiBvbiB0aGUgZmlyc3QgZmF1bHQuCi0JICovCi0JaWYgKGxhc3RfVkZQX2NvbnRleHQgPT0gdmZwKQotCQlsYXN0X1ZGUF9jb250ZXh0ID0gTlVMTDsKKwkJLyoKKwkJICogRGlzYWJsZSBWRlAgdG8gZW5zdXJlIHdlIGluaXRpYWxpc2UgaXQgZmlyc3QuCisJCSAqLworCQlmbXhyKEZQRVhDLCBmbXJ4KEZQRVhDKSAmIH5GUEVYQ19FTkFCTEUpOworCisJCS8qCisJCSAqIEZBTExUSFJPVUdIOiBFbnN1cmUgd2UgZG9uJ3QgdHJ5IHRvIG92ZXJ3cml0ZSBvdXIgbmV3bHkKKwkJICogaW5pdGlhbGlzZWQgc3RhdGUgaW5mb3JtYXRpb24gb24gdGhlIGZpcnN0IGZhdWx0LgorCQkgKi8KKworCWNhc2UgVEhSRUFEX05PVElGWV9SRUxFQVNFOgorCQkvKgorCQkgKiBQZXItdGhyZWFkIFZGUCBjbGVhbnVwLgorCQkgKi8KKwkJaWYgKGxhc3RfVkZQX2NvbnRleHQgPT0gdmZwKQorCQkJbGFzdF9WRlBfY29udGV4dCA9IE5VTEw7CisJCWJyZWFrOworCisJY2FzZSBUSFJFQURfTk9USUZZX1NXSVRDSDoKKwkJLyoKKwkJICogQWx3YXlzIGRpc2FibGUgVkZQIHNvIHdlIGNhbiBsYXppbHkgc2F2ZS9yZXN0b3JlIHRoZQorCQkgKiBvbGQgc3RhdGUuCisJCSAqLworCQlmbXhyKEZQRVhDLCBmbXJ4KEZQRVhDKSAmIH5GUEVYQ19FTkFCTEUpOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gTk9USUZZX0RPTkU7CiB9CiAKLS8qCi0gKiBQZXItdGhyZWFkIFZGUCBjbGVhbnVwLgotICovCi12b2lkIHZmcF9yZWxlYXNlX3RocmVhZCh1bmlvbiB2ZnBfc3RhdGUgKnZmcCkKLXsKLQlpZiAobGFzdF9WRlBfY29udGV4dCA9PSB2ZnApCi0JCWxhc3RfVkZQX2NvbnRleHQgPSBOVUxMOwotfQorc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB2ZnBfbm90aWZpZXJfYmxvY2sgPSB7CisJLm5vdGlmaWVyX2NhbGwJPSB2ZnBfbm90aWZpZXIsCit9OwogCiAvKgogICogUmFpc2UgYSBTSUdGUEUgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuCkBAIC0yODEsNiArMzAwLDggQEAKIAkJCSh2ZnBzaWQgJiBGUFNJRF9WQVJJQU5UX01BU0spID4+IEZQU0lEX1ZBUklBTlRfQklULAogCQkJKHZmcHNpZCAmIEZQU0lEX1JFVl9NQVNLKSA+PiBGUFNJRF9SRVZfQklUKTsKIAkJdmZwX3ZlY3RvciA9IHZmcF9zdXBwb3J0X2VudHJ5OworCisJCXRocmVhZF9yZWdpc3Rlcl9ub3RpZmllcigmdmZwX25vdGlmaWVyX2Jsb2NrKTsKIAl9CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvZW50cnkuUyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCmluZGV4IGE5YjU5NTIuLjgxZDk0ZTQgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS5TCkBAIC0xNDc0LDcgKzE0NzQsNyBAQAogCS5sb25nIHN5c19ta25vZGF0CiAJLmxvbmcgc3lzX2ZjaG93bmF0CiAJLmxvbmcgc3lzX2Z1dGltZXNhdAotCS5sb25nIHN5c19uZXdmc3RhdGF0CQkvKiAzMDAgKi8KKwkubG9uZyBzeXNfZnN0YXRhdDY0CQkvKiAzMDAgKi8KIAkubG9uZyBzeXNfdW5saW5rYXQKIAkubG9uZyBzeXNfcmVuYW1lYXQKIAkubG9uZyBzeXNfbGlua2F0CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvZnJ2X2tzeW1zLmMgYi9hcmNoL2Zydi9rZXJuZWwvZnJ2X2tzeW1zLmMKaW5kZXggMGYyNzNhNy4uZGVlNjM3ZiAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL2Zydl9rc3ltcy5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9mcnZfa3N5bXMuYwpAQCAtMjYsMTYgKzI2LDYgQEAKIEVYUE9SVF9TWU1CT0woX19pb3JlbWFwKTsKIEVYUE9SVF9TWU1CT0woaW91bm1hcCk7CiAKLUVYUE9SVF9TWU1CT0woc3Rybmxlbik7Ci1FWFBPUlRfU1lNQk9MKHN0cnJjaHIpOwotRVhQT1JUX1NZTUJPTChzdHJzdHIpOwotRVhQT1JUX1NZTUJPTChzdHJjaHIpOwotRVhQT1JUX1NZTUJPTChzdHJjYXQpOwotRVhQT1JUX1NZTUJPTChzdHJsZW4pOwotRVhQT1JUX1NZTUJPTChzdHJjbXApOwotRVhQT1JUX1NZTUJPTChzdHJuY21wKTsKLUVYUE9SVF9TWU1CT0woc3RybmNweSk7Ci0KIEVYUE9SVF9TWU1CT0woaXBfZmFzdF9jc3VtKTsKIAogI2lmIDAKQEAgLTQ0LDggKzM0LDYgQEAKICNlbmRpZgogRVhQT1JUX1NZTUJPTChrZXJuZWxfdGhyZWFkKTsKIAotRVhQT1JUX1NZTUJPTChlbmFibGVfaXJxKTsKLUVYUE9SVF9TWU1CT0woZGlzYWJsZV9pcnEpOwogRVhQT1JUX1NZTUJPTChfX3Jlc19idXNfY2xvY2tfc3BlZWRfSFopOwogRVhQT1JUX1NZTUJPTChfX3BhZ2Vfb2Zmc2V0KTsKIEVYUE9SVF9TWU1CT0woX19tZW1jcHlfdXNlcik7CkBAIC02MiwxOCArNTAsMTIgQEAKIAogRVhQT1JUX1NZTUJPTChfX2RlYnVnX2J1Z190cmFwKTsKIAotLyogTmV0d29ya2luZyBoZWxwZXIgcm91dGluZXMuICovCi1FWFBPUlRfU1lNQk9MKGNzdW1fcGFydGlhbF9jb3B5KTsKLQogLyogVGhlIGZvbGxvd2luZyBhcmUgc3BlY2lhbCBiZWNhdXNlIHRoZXkncmUgbm90IGNhbGxlZAogICAgZXhwbGljaXRseSAodGhlIEMgY29tcGlsZXIgZ2VuZXJhdGVzIHRoZW0pLiAgRm9ydHVuYXRlbHksCiAgICB0aGVpciBpbnRlcmZhY2UgaXNuJ3QgZ29ubmEgY2hhbmdlIGFueSB0aW1lIHNvb24gbm93LCBzbwogICAgaXQncyBPSyB0byBsZWF2ZSBpdCBvdXQgb2YgdmVyc2lvbiBjb250cm9sLiAgKi8KIEVYUE9SVF9TWU1CT0wobWVtY3B5KTsKIEVYUE9SVF9TWU1CT0wobWVtc2V0KTsKLUVYUE9SVF9TWU1CT0wobWVtY21wKTsKLUVYUE9SVF9TWU1CT0wobWVtc2Nhbik7Ci1FWFBPUlRfU1lNQk9MKG1lbW1vdmUpOwogCiBFWFBPUlRfU1lNQk9MKF9fb3V0c2xfbnMpOwogRVhQT1JUX1NZTUJPTChfX2luc2xfbnMpOwpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYva2VybmVsL2lycS1yb3V0aW5nLmMgYi9hcmNoL2Zydi9rZXJuZWwvaXJxLXJvdXRpbmcuYwppbmRleCBkNDc3NmQxLi5iOTBiNzBhIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvaXJxLXJvdXRpbmcuYworKysgYi9hcmNoL2Zydi9rZXJuZWwvaXJxLXJvdXRpbmcuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAjZGVmaW5lIF9fQ1BVVUFSVChYLCBBKQkJCQkJCVwKIAlbWF0gPSB7CQkJCQkJCVwKIAkJLm11eG5hbWUJPSAidWFydCIsCQkJXAotCQkubXV4ZGF0YQk9ICh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKikgQSwJXAorCQkubXV4ZGF0YQk9ICh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKikodW5zaWduZWQgbG9uZylBLFwKIAkJLmlycW1hc2sJPSAxIDw8IElSUV9DUFVfVUFSVCMjWCwJCVwKIAkJLmRvaXJxCQk9IGZydl9jcHV1YXJ0X2RvaXJxLAkJXAogCX0KQEAgLTEzNiw3ICsxMzYsNyBAQAogI2RlZmluZSBfX0NQVURNQShYLCBBKQkJCQkJCVwKIAlbWF0gPSB7CQkJCQkJCVwKIAkJLm11eG5hbWUJPSAiZG1hIiwJCQlcCi0JCS5tdXhkYXRhCT0gKHZvbGF0aWxlIHZvaWQgX19pb21lbSAqKSBBLAlcCisJCS5tdXhkYXRhCT0gKHZvbGF0aWxlIHZvaWQgX19pb21lbSAqKSh1bnNpZ25lZCBsb25nKUEsXAogCQkuaXJxbWFzawk9IDEgPDwgSVJRX0NQVV9ETUEjI1gsCQlcCiAJCS5kb2lycQkJPSBmcnZfY3B1ZG1hX2RvaXJxLAkJXAogCX0KQEAgLTE2NCw3ICsxNjQsNyBAQAogI2RlZmluZSBfX0NQVVRJTUVSKFgpCQkJCQkJXAogCVtYXSA9IHsJCQkJCQkJXAogCQkubXV4bmFtZQk9ICJ0aW1lciIsCQkJXAotCQkubXV4ZGF0YQk9IDAsCQkJCVwKKwkJLm11eGRhdGEJPSBOVUxMLAkJCQlcCiAJCS5pcnFtYXNrCT0gMSA8PCBJUlFfQ1BVX1RJTUVSIyNYLAlcCiAJCS5kb2lycQkJPSBmcnZfY3B1dGltZXJfZG9pcnEsCQlcCiAJfQpAQCAtMTg3LDcgKzE4Nyw3IEBACiAjZGVmaW5lIF9fQ1BVRVhURVJOQUwoWCkJCQkJCVwKIAlbWF0gPSB7CQkJCQkJCVwKIAkJLm11eG5hbWUJPSAiZXh0IiwJCQlcCi0JCS5tdXhkYXRhCT0gMCwJCQkJXAorCQkubXV4ZGF0YQk9IE5VTEwsCQkJCVwKIAkJLmlycW1hc2sJPSAxIDw8IElSUV9DUFVfRVhURVJOQUwjI1gsCVwKIAkJLmRvaXJxCQk9IGZydl9jcHVleHRlcm5hbF9kb2lycSwJXAogCX0KZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9pcnEuYyBiL2FyY2gvZnJ2L2tlcm5lbC9pcnEuYwppbmRleCAxMWZhMzI2Li44YjExMmIzIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9mcnYva2VybmVsL2lycS5jCkBAIC02MjUsNyArNjI1LDcgQEAKIAogI2RlZmluZSBIRVhfRElHSVRTIDgKIAotc3RhdGljIHVuc2lnbmVkIGludCBwYXJzZV9oZXhfdmFsdWUgKGNvbnN0IGNoYXIgKmJ1ZmZlciwKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGFyc2VfaGV4X3ZhbHVlIChjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyAqcmV0KQogewogCXVuc2lnbmVkIGNoYXIgaGV4bnVtIFtIRVhfRElHSVRTXTsKQEAgLTY3Miw3ICs2NzIsNyBAQAogCXJldHVybiBzcHJpbnRmIChwYWdlLCAiJTA4bHhcbiIsICptYXNrKTsKIH0KIAotc3RhdGljIGludCBwcm9mX2NwdV9tYXNrX3dyaXRlX3Byb2MgKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZmZXIsCitzdGF0aWMgaW50IHByb2ZfY3B1X21hc2tfd3JpdGVfcHJvYyAoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsCiAJCQkJCXVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpCiB7CiAJdW5zaWduZWQgbG9uZyAqbWFzayA9ICh1bnNpZ25lZCBsb25nICopIGRhdGEsIGZ1bGxfY291bnQgPSBjb3VudCwgZXJyOwpAQCAtNzExLDcgKzcxMSw3IEBACiAJaW50IGk7CiAKIAkvKiBjcmVhdGUgL3Byb2MvaXJxICovCi0Jcm9vdF9pcnFfZGlyID0gcHJvY19ta2RpcigiaXJxIiwgMCk7CisJcm9vdF9pcnFfZGlyID0gcHJvY19ta2RpcigiaXJxIiwgTlVMTCk7CiAKIAkvKiBjcmVhdGUgL3Byb2MvaXJxL3Byb2ZfY3B1X21hc2sgKi8KIAllbnRyeSA9IGNyZWF0ZV9wcm9jX2VudHJ5KCJwcm9mX2NwdV9tYXNrIiwgMDYwMCwgcm9vdF9pcnFfZGlyKTsKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9wbS5jIGIvYXJjaC9mcnYva2VybmVsL3BtLmMKaW5kZXggZjBiOGZmZi4uNDNjZTI4YTEzIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvcG0uYworKysgYi9hcmNoL2Zydi9rZXJuZWwvcG0uYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAjZGVmaW5lIENUTF9QTV9QMCA0CiAjZGVmaW5lIENUTF9QTV9DTSA1CiAKLXN0YXRpYyBpbnQgdXNlcl9hdG9pKGNoYXIgKnVidWYsIHNpemVfdCBsZW4pCitzdGF0aWMgaW50IHVzZXJfYXRvaShjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGxlbikKIHsKIAljaGFyIGJ1ZlsxNl07CiAJdW5zaWduZWQgbG9uZyByZXQ7CkBAIC0xNTksNyArMTU5LDcgQEAKICAqIFNlbmQgdXMgdG8gc2xlZXAuCiAgKi8KIHN0YXRpYyBpbnQgc3lzY3RsX3BtX2RvX3N1c3BlbmQoY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSwgc3RydWN0IGZpbGUgKmZpbHAsCi0JCQkJdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKKwkJCQl2b2lkIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKIHsKIAlpbnQgcmV0dmFsLCBtb2RlOwogCkBAIC0yMTUsNyArMjE1LDcgQEAKIAogCiBzdGF0aWMgaW50IGNtb2RlX3Byb2NjdGwoY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSwgc3RydWN0IGZpbGUgKmZpbHAsCi0JCQkgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKKwkJCSB2b2lkIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKIHsKIAlpbnQgbmV3X2Ntb2RlOwogCkBAIC0yMjcsOSArMjI3LDkgQEAKIAlyZXR1cm4gdHJ5X3NldF9jbW9kZShuZXdfY21vZGUpPzoqbGVucDsKIH0KIAotc3RhdGljIGludCBjbW9kZV9zeXNjdGwoY3RsX3RhYmxlICp0YWJsZSwgaW50ICpuYW1lLCBpbnQgbmxlbiwKLQkJCXZvaWQgKm9sZHZhbCwgc2l6ZV90ICpvbGRsZW5wLAotCQkJdm9pZCAqbmV3dmFsLCBzaXplX3QgbmV3bGVuLCB2b2lkICoqY29udGV4dCkKK3N0YXRpYyBpbnQgY21vZGVfc3lzY3RsKGN0bF90YWJsZSAqdGFibGUsIGludCBfX3VzZXIgKm5hbWUsIGludCBubGVuLAorCQkJdm9pZCBfX3VzZXIgKm9sZHZhbCwgc2l6ZV90IF9fdXNlciAqb2xkbGVucCwKKwkJCXZvaWQgX191c2VyICpuZXd2YWwsIHNpemVfdCBuZXdsZW4sIHZvaWQgKipjb250ZXh0KQogewogCWlmIChvbGR2YWwgJiYgb2xkbGVucCkgewogCQlzaXplX3Qgb2xkbGVuOwpAQCAtMjQwLDcgKzI0MCw3IEBACiAJCWlmIChvbGRsZW4gIT0gc2l6ZW9mKGludCkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQlpZiAocHV0X3VzZXIoY2xvY2tfY21vZGVfY3VycmVudCwgKHVuc2lnbmVkIGludCAqKW9sZHZhbCkgfHwKKwkJaWYgKHB1dF91c2VyKGNsb2NrX2Ntb2RlX2N1cnJlbnQsICh1bnNpZ25lZCBfX3VzZXIgKilvbGR2YWwpIHx8CiAJCSAgICBwdXRfdXNlcihzaXplb2YoaW50KSwgb2xkbGVucCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAl9CkBAIC0yNTAsNyArMjUwLDcgQEAKIAkJaWYgKG5ld2xlbiAhPSBzaXplb2YoaW50KSkKIAkJCXJldHVybiAtRUlOVkFMOwogCi0JCWlmIChnZXRfdXNlcihuZXdfY21vZGUsIChpbnQgKiluZXd2YWwpKQorCQlpZiAoZ2V0X3VzZXIobmV3X2Ntb2RlLCAoaW50IF9fdXNlciAqKW5ld3ZhbCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQlyZXR1cm4gdHJ5X3NldF9jbW9kZShuZXdfY21vZGUpPzoxOwpAQCAtMzE4LDcgKzMxOCw3IEBACiB9CiAKIHN0YXRpYyBpbnQgcDBfcHJvY2N0bChjdGxfdGFibGUgKmN0bCwgaW50IHdyaXRlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKLQkJICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKKwkJICAgICAgdm9pZCBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKmZwb3MpCiB7CiAJaW50IG5ld19wMDsKIApAQCAtMzMwLDkgKzMzMCw5IEBACiAJcmV0dXJuIHRyeV9zZXRfcDAobmV3X3AwKT86KmxlbnA7CiB9CiAKLXN0YXRpYyBpbnQgcDBfc3lzY3RsKGN0bF90YWJsZSAqdGFibGUsIGludCAqbmFtZSwgaW50IG5sZW4sCi0JCSAgICAgdm9pZCAqb2xkdmFsLCBzaXplX3QgKm9sZGxlbnAsCi0JCSAgICAgdm9pZCAqbmV3dmFsLCBzaXplX3QgbmV3bGVuLCB2b2lkICoqY29udGV4dCkKK3N0YXRpYyBpbnQgcDBfc3lzY3RsKGN0bF90YWJsZSAqdGFibGUsIGludCBfX3VzZXIgKm5hbWUsIGludCBubGVuLAorCQkgICAgIHZvaWQgX191c2VyICpvbGR2YWwsIHNpemVfdCBfX3VzZXIgKm9sZGxlbnAsCisJCSAgICAgdm9pZCBfX3VzZXIgKm5ld3ZhbCwgc2l6ZV90IG5ld2xlbiwgdm9pZCAqKmNvbnRleHQpCiB7CiAJaWYgKG9sZHZhbCAmJiBvbGRsZW5wKSB7CiAJCXNpemVfdCBvbGRsZW47CkBAIC0zNDMsNyArMzQzLDcgQEAKIAkJaWYgKG9sZGxlbiAhPSBzaXplb2YoaW50KSkKIAkJCXJldHVybiAtRUlOVkFMOwogCi0JCWlmIChwdXRfdXNlcihjbG9ja19wMF9jdXJyZW50LCAodW5zaWduZWQgaW50ICopb2xkdmFsKSB8fAorCQlpZiAocHV0X3VzZXIoY2xvY2tfcDBfY3VycmVudCwgKHVuc2lnbmVkIF9fdXNlciAqKW9sZHZhbCkgfHwKIAkJICAgIHB1dF91c2VyKHNpemVvZihpbnQpLCBvbGRsZW5wKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCX0KQEAgLTM1Myw3ICszNTMsNyBAQAogCQlpZiAobmV3bGVuICE9IHNpemVvZihpbnQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJaWYgKGdldF91c2VyKG5ld19wMCwgKGludCAqKW5ld3ZhbCkpCisJCWlmIChnZXRfdXNlcihuZXdfcDAsIChpbnQgX191c2VyICopbmV3dmFsKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCiAJCXJldHVybiB0cnlfc2V0X3AwKG5ld19wMCk/OjE7CkBAIC0zNjIsNyArMzYyLDcgQEAKIH0KIAogc3RhdGljIGludCBjbV9wcm9jY3RsKGN0bF90YWJsZSAqY3RsLCBpbnQgd3JpdGUsIHN0cnVjdCBmaWxlICpmaWxwLAotCQkgICAgICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwgbG9mZl90ICpmcG9zKQorCQkgICAgICB2b2lkIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqZnBvcykKIHsKIAlpbnQgbmV3X2NtOwogCkBAIC0zNzQsOSArMzc0LDkgQEAKIAlyZXR1cm4gdHJ5X3NldF9jbShuZXdfY20pPzoqbGVucDsKIH0KIAotc3RhdGljIGludCBjbV9zeXNjdGwoY3RsX3RhYmxlICp0YWJsZSwgaW50ICpuYW1lLCBpbnQgbmxlbiwKLQkJICAgICB2b2lkICpvbGR2YWwsIHNpemVfdCAqb2xkbGVucCwKLQkJICAgICB2b2lkICpuZXd2YWwsIHNpemVfdCBuZXdsZW4sIHZvaWQgKipjb250ZXh0KQorc3RhdGljIGludCBjbV9zeXNjdGwoY3RsX3RhYmxlICp0YWJsZSwgaW50IF9fdXNlciAqbmFtZSwgaW50IG5sZW4sCisJCSAgICAgdm9pZCBfX3VzZXIgKm9sZHZhbCwgc2l6ZV90IF9fdXNlciAqb2xkbGVucCwKKwkJICAgICB2b2lkIF9fdXNlciAqbmV3dmFsLCBzaXplX3QgbmV3bGVuLCB2b2lkICoqY29udGV4dCkKIHsKIAlpZiAob2xkdmFsICYmIG9sZGxlbnApIHsKIAkJc2l6ZV90IG9sZGxlbjsKQEAgLTM4Nyw3ICszODcsNyBAQAogCQlpZiAob2xkbGVuICE9IHNpemVvZihpbnQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJaWYgKHB1dF91c2VyKGNsb2NrX2NtX2N1cnJlbnQsICh1bnNpZ25lZCBpbnQgKilvbGR2YWwpIHx8CisJCWlmIChwdXRfdXNlcihjbG9ja19jbV9jdXJyZW50LCAodW5zaWduZWQgX191c2VyICopb2xkdmFsKSB8fAogCQkgICAgcHV0X3VzZXIoc2l6ZW9mKGludCksIG9sZGxlbnApKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJfQpAQCAtMzk3LDcgKzM5Nyw3IEBACiAJCWlmIChuZXdsZW4gIT0gc2l6ZW9mKGludCkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQlpZiAoZ2V0X3VzZXIobmV3X2NtLCAoaW50ICopbmV3dmFsKSkKKwkJaWYgKGdldF91c2VyKG5ld19jbSwgKGludCBfX3VzZXIgKiluZXd2YWwpKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAKIAkJcmV0dXJuIHRyeV9zZXRfY20obmV3X2NtKT86MTsKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL2Zydi9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDBmZmY4YTYuLjQ4OWU2YzQgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9mcnYva2VybmVsL3Byb2Nlc3MuYwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAvKgogICogc3lzX2V4ZWN2ZSgpIGV4ZWN1dGVzIGEgbmV3IHByb2dyYW0uCiAgKi8KLWFzbWxpbmthZ2UgaW50IHN5c19leGVjdmUoY2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIGNoYXIgKiplbnZwKQorYXNtbGlua2FnZSBpbnQgc3lzX2V4ZWN2ZShjaGFyIF9fdXNlciAqbmFtZSwgY2hhciBfX3VzZXIgKiBfX3VzZXIgKmFyZ3YsIGNoYXIgX191c2VyICogX191c2VyICplbnZwKQogewogCWludCBlcnJvcjsKIAljaGFyICogZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvZnJ2L2tlcm5lbC9zZXR1cC5jCmluZGV4IDU5MDhkZWEuLjFmN2Q2NWYgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9zZXR1cC5jCkBAIC04MTQsNyArODE0LDcgQEAKIAkgKiAtIGJ5IG5vdyB0aGUgc3RhY2sgaXMgcGFydCBvZiB0aGUgaW5pdCB0YXNrICovCiAJcHJpbnRrKCJNZW1vcnkgJTA4bHgtJTA4bHhcbiIsIG1lbW9yeV9zdGFydCwgbWVtb3J5X2VuZCk7CiAKLQlpZiAobWVtb3J5X3N0YXJ0ID09IG1lbW9yeV9lbmQpIEJVRygpOworCUJVR19PTihtZW1vcnlfc3RhcnQgPT0gbWVtb3J5X2VuZCk7CiAKIAlpbml0X21tLnN0YXJ0X2NvZGUgPSAodW5zaWduZWQgbG9uZykgJl9zdGV4dDsKIAlpbml0X21tLmVuZF9jb2RlID0gKHVuc2lnbmVkIGxvbmcpICZfZXRleHQ7CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL2Zydi9rZXJuZWwvc2lnbmFsLmMKaW5kZXggNjc5YzFkNS4uYjhhNTg4MiAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9zaWduYWwuYwpAQCAtOTgsNyArOTgsNyBAQAogCiBzdHJ1Y3Qgc2lnZnJhbWUKIHsKLQl2b2lkICgqcHJldGNvZGUpKHZvaWQpOworCV9fc2lncmVzdG9yZV90IHByZXRjb2RlOwogCWludCBzaWc7CiAJc3RydWN0IHNpZ2NvbnRleHQgc2M7CiAJdW5zaWduZWQgbG9uZyBleHRyYW1hc2tbX05TSUdfV09SRFMtMV07CkBAIC0xMDcsMTAgKzEwNywxMCBAQAogCiBzdHJ1Y3QgcnRfc2lnZnJhbWUKIHsKLQl2b2lkICgqcHJldGNvZGUpKHZvaWQpOworCV9fc2lncmVzdG9yZV90IHByZXRjb2RlOwogCWludCBzaWc7Ci0Jc3RydWN0IHNpZ2luZm8gKnBpbmZvOwotCXZvaWQgKnB1YzsKKwlzdHJ1Y3Qgc2lnaW5mbyBfX3VzZXIgKnBpbmZvOworCXZvaWQgX191c2VyICpwdWM7CiAJc3RydWN0IHNpZ2luZm8gaW5mbzsKIAlzdHJ1Y3QgdWNvbnRleHQgdWM7CiAJdWludDMyX3QgcmV0Y29kZVsyXTsKQEAgLTIzMyw3ICsyMzMsNyBAQAogCiAJLyogVGhpcyBpcyB0aGUgWC9PcGVuIHNhbmN0aW9uZWQgc2lnbmFsIHN0YWNrIHN3aXRjaGluZy4gICovCiAJaWYgKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spIHsKLQkJaWYgKCEgb25fc2lnX3N0YWNrKHNwKSkKKwkJaWYgKCEgc2FzX3NzX2ZsYWdzKHNwKSkKIAkJCXNwID0gY3VycmVudC0+c2FzX3NzX3NwICsgY3VycmVudC0+c2FzX3NzX3NpemU7CiAJfQogCkBAIC0yODQsNyArMjg0LDcgQEAKIAkJICoJc2V0bG9zCSNfX05SX3NpZ3JldHVybixncjcKIAkJICoJdGlyYQlncjAsMAogCQkgKi8KLQkJaWYgKF9fcHV0X3VzZXIoKHZvaWQgKCopKHZvaWQpKWZyYW1lLT5yZXRjb2RlLCAmZnJhbWUtPnByZXRjb2RlKSB8fAorCQlpZiAoX19wdXRfdXNlcigoX19zaWdyZXN0b3JlX3QpZnJhbWUtPnJldGNvZGUsICZmcmFtZS0+cHJldGNvZGUpIHx8CiAJCSAgICBfX3B1dF91c2VyKDB4OGVmYzAwMDB8X19OUl9zaWdyZXR1cm4sICZmcmFtZS0+cmV0Y29kZVswXSkgfHwKIAkJICAgIF9fcHV0X3VzZXIoMHhjMDcwMDAwMCwgJmZyYW1lLT5yZXRjb2RlWzFdKSkKIAkJCWdvdG8gZ2l2ZV9zaWdzZWd2OwpAQCAtMzAwLDcgKzMwMCw3IEBACiAKIAlpZiAoZ2V0X3BlcnNvbmFsaXR5ICYgRkRQSUNfRlVOQ1BUUlMpIHsKIAkJc3RydWN0IGZkcGljX2Z1bmNfZGVzY3JpcHRvciBfX3VzZXIgKmZ1bmNwdHIgPQotCQkJKHN0cnVjdCBmZHBpY19mdW5jX2Rlc2NyaXB0b3IgKikga2EtPnNhLnNhX2hhbmRsZXI7CisJCQkoc3RydWN0IGZkcGljX2Z1bmNfZGVzY3JpcHRvciBfX3VzZXIgKikga2EtPnNhLnNhX2hhbmRsZXI7CiAJCV9fZ2V0X3VzZXIoX19mcmFtZS0+cGMsICZmdW5jcHRyLT50ZXh0KTsKIAkJX19nZXRfdXNlcihfX2ZyYW1lLT5ncjE1LCAmZnVuY3B0ci0+R09UKTsKIAl9IGVsc2UgewpAQCAtMzU5LDggKzM1OSw4IEBACiAKIAkvKiBDcmVhdGUgdGhlIHVjb250ZXh0LiAgKi8KIAlpZiAoX19wdXRfdXNlcigwLCAmZnJhbWUtPnVjLnVjX2ZsYWdzKSB8fAotCSAgICBfX3B1dF91c2VyKDAsICZmcmFtZS0+dWMudWNfbGluaykgfHwKLQkgICAgX19wdXRfdXNlcigodm9pZCopY3VycmVudC0+c2FzX3NzX3NwLCAmZnJhbWUtPnVjLnVjX3N0YWNrLnNzX3NwKSB8fAorCSAgICBfX3B1dF91c2VyKE5VTEwsICZmcmFtZS0+dWMudWNfbGluaykgfHwKKwkgICAgX19wdXRfdXNlcigodm9pZCBfX3VzZXIgKiljdXJyZW50LT5zYXNfc3Nfc3AsICZmcmFtZS0+dWMudWNfc3RhY2suc3Nfc3ApIHx8CiAJICAgIF9fcHV0X3VzZXIoc2FzX3NzX2ZsYWdzKF9fZnJhbWUtPnNwKSwgJmZyYW1lLT51Yy51Y19zdGFjay5zc19mbGFncykgfHwKIAkgICAgX19wdXRfdXNlcihjdXJyZW50LT5zYXNfc3Nfc2l6ZSwgJmZyYW1lLT51Yy51Y19zdGFjay5zc19zaXplKSkKIAkJZ290byBnaXZlX3NpZ3NlZ3Y7CkBAIC0zODIsNyArMzgyLDcgQEAKIAkJICoJc2V0bG9zCSNfX05SX3NpZ3JldHVybixncjcKIAkJICoJdGlyYQlncjAsMAogCQkgKi8KLQkJaWYgKF9fcHV0X3VzZXIoKHZvaWQgKCopKHZvaWQpKWZyYW1lLT5yZXRjb2RlLCAmZnJhbWUtPnByZXRjb2RlKSB8fAorCQlpZiAoX19wdXRfdXNlcigoX19zaWdyZXN0b3JlX3QpZnJhbWUtPnJldGNvZGUsICZmcmFtZS0+cHJldGNvZGUpIHx8CiAJCSAgICBfX3B1dF91c2VyKDB4OGVmYzAwMDB8X19OUl9ydF9zaWdyZXR1cm4sICZmcmFtZS0+cmV0Y29kZVswXSkgfHwKIAkJICAgIF9fcHV0X3VzZXIoMHhjMDcwMDAwMCwgJmZyYW1lLT5yZXRjb2RlWzFdKSkKIAkJCWdvdG8gZ2l2ZV9zaWdzZWd2OwpAQCAtMzk4LDcgKzM5OCw3IEBACiAJX19mcmFtZS0+Z3I5ID0gKHVuc2lnbmVkIGxvbmcpICZmcmFtZS0+aW5mbzsKIAogCWlmIChnZXRfcGVyc29uYWxpdHkgJiBGRFBJQ19GVU5DUFRSUykgewotCQlzdHJ1Y3QgZmRwaWNfZnVuY19kZXNjcmlwdG9yICpmdW5jcHRyID0KKwkJc3RydWN0IGZkcGljX2Z1bmNfZGVzY3JpcHRvciBfX3VzZXIgKmZ1bmNwdHIgPQogCQkJKHN0cnVjdCBmZHBpY19mdW5jX2Rlc2NyaXB0b3IgX191c2VyICopIGthLT5zYS5zYV9oYW5kbGVyOwogCQlfX2dldF91c2VyKF9fZnJhbWUtPnBjLCAmZnVuY3B0ci0+dGV4dCk7CiAJCV9fZ2V0X3VzZXIoX19mcmFtZS0+Z3IxNSwgJmZ1bmNwdHItPkdPVCk7CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvc3lzX2Zydi5jIGIvYXJjaC9mcnYva2VybmVsL3N5c19mcnYuYwppbmRleCA5MzFhYTZkLi5jNGQ0MzQ4IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvc3lzX2Zydi5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9zeXNfZnJ2LmMKQEAgLTMyLDcgKzMyLDcgQEAKICAqIHN5c19waXBlKCkgaXMgdGhlIG5vcm1hbCBDIGNhbGxpbmcgc3RhbmRhcmQgZm9yIGNyZWF0aW5nCiAgKiBhIHBpcGUuIEl0J3Mgbm90IHRoZSB3YXkgdW5peCB0cmFkaXRpb25hbGx5IGRvZXMgdGhpcywgdGhvdWdoLgogICovCi1hc21saW5rYWdlIGxvbmcgc3lzX3BpcGUodW5zaWduZWQgbG9uZyAqIGZpbGRlcykKK2FzbWxpbmthZ2UgbG9uZyBzeXNfcGlwZSh1bnNpZ25lZCBsb25nIF9fdXNlciAqIGZpbGRlcykKIHsKIAlpbnQgZmRbMl07CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYva2VybmVsL3N5c2N0bC5jIGIvYXJjaC9mcnYva2VybmVsL3N5c2N0bC5jCmluZGV4IDQwOGIwZjMuLmI5MDg4NjMgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9zeXNjdGwuYworKysgYi9hcmNoL2Zydi9rZXJuZWwvc3lzY3RsLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICAqIGhhbmRsZSByZXF1ZXN0cyB0byBkeW5hbWljYWxseSBzd2l0Y2ggdGhlIHdyaXRlIGNhY2hpbmcgbW9kZSBkZWxpdmVyZWQgYnkgL3Byb2MKICAqLwogc3RhdGljIGludCBwcm9jY3RsX2Zydl9jYWNoZW1vZGUoY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLCBzdHJ1Y3QgZmlsZSAqZmlscCwKLQkJCQkgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcykKKwkJCQkgdm9pZCBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpCiB7CiAJdW5zaWduZWQgbG9uZyBoc3IwOwogCWNoYXIgYnVmZls4XTsKQEAgLTEyMyw3ICsxMjMsNyBAQAogICovCiAjaWZkZWYgQ09ORklHX01NVQogc3RhdGljIGludCBwcm9jY3RsX2Zydl9waW5fY3hucihjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsIHN0cnVjdCBmaWxlICpmaWxwLAotCQkJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpCisJCQkJdm9pZCBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpCiB7CiAJcGlkX3QgcGlkOwogCWNoYXIgYnVmZlsxNl0sICpwOwpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYva2VybmVsL3VhY2Nlc3MuYyBiL2FyY2gvZnJ2L2tlcm5lbC91YWNjZXNzLmMKaW5kZXggOWI3NTFjMC4uOWZiNzcxYSAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL3VhY2Nlc3MuYworKysgYi9hcmNoL2Zydi9rZXJuZWwvdWFjY2Vzcy5jCkBAIC0xNyw3ICsxNyw3IEBACiAvKgogICogY29weSBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcgZnJvbSB1c2Vyc3BhY2UKICAqLwotbG9uZyBzdHJuY3B5X2Zyb21fdXNlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgbG9uZyBjb3VudCkKK2xvbmcgc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KQogewogCXVuc2lnbmVkIGxvbmcgbWF4OwogCWNoYXIgKnAsIGNoOwpAQCAtNzAsOSArNzAsOSBAQAogICoKICAqIFJldHVybiAwIG9uIGV4Y2VwdGlvbiwgYSB2YWx1ZSBncmVhdGVyIHRoYW4gTiBpZiB0b28gbG9uZwogICovCi1sb25nIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpCitsb25nIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KQogewotCWNvbnN0IGNoYXIgKnA7CisJY29uc3QgY2hhciBfX3VzZXIgKnA7CiAJbG9uZyBlcnIgPSAwOwogCWNoYXIgY2g7CiAKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L21iOTMwOTAtbWIwMC9wY2ktaXJxLmMgYi9hcmNoL2Zydi9tYjkzMDkwLW1iMDAvcGNpLWlycS5jCmluZGV4IGM0YTExNDQuLjQ1YWUzOWQgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L21iOTMwOTAtbWIwMC9wY2ktaXJxLmMKKysrIGIvYXJjaC9mcnYvbWI5MzA5MC1tYjAwL3BjaS1pcnEuYwpAQCAtMzIsMTEgKzMyLDExIEBACiAgKi8KIAogc3RhdGljIGNvbnN0IHVpbnQ4X3QgX19pbml0ZGF0YSBwY2lfYnVzMF9pcnFfcm91dGluZ1szMl1bNF0gPSB7Ci0JWzAgXSB7CUlSUV9GUEdBX01CODY5NDNfUENJX0lOVEEgfSwKLQlbMTZdIHsJSVJRX0ZQR0FfUlRMODAyOV9JTlRBIH0sCi0JWzE3XSB7CUlSUV9GUEdBX1BDSV9JTlRDLCBJUlFfRlBHQV9QQ0lfSU5URCwgSVJRX0ZQR0FfUENJX0lOVEEsIElSUV9GUEdBX1BDSV9JTlRCIH0sCi0JWzE4XSB7CUlSUV9GUEdBX1BDSV9JTlRCLCBJUlFfRlBHQV9QQ0lfSU5UQywgSVJRX0ZQR0FfUENJX0lOVEQsIElSUV9GUEdBX1BDSV9JTlRBIH0sCi0JWzE5XSB7CUlSUV9GUEdBX1BDSV9JTlRBLCBJUlFfRlBHQV9QQ0lfSU5UQiwgSVJRX0ZQR0FfUENJX0lOVEMsIElSUV9GUEdBX1BDSV9JTlREIH0sCisJWzAgXSA9IHsgSVJRX0ZQR0FfTUI4Njk0M19QQ0lfSU5UQSB9LAorCVsxNl0gPSB7IElSUV9GUEdBX1JUTDgwMjlfSU5UQSB9LAorCVsxN10gPSB7IElSUV9GUEdBX1BDSV9JTlRDLCBJUlFfRlBHQV9QQ0lfSU5URCwgSVJRX0ZQR0FfUENJX0lOVEEsIElSUV9GUEdBX1BDSV9JTlRCIH0sCisJWzE4XSA9IHsgSVJRX0ZQR0FfUENJX0lOVEIsIElSUV9GUEdBX1BDSV9JTlRDLCBJUlFfRlBHQV9QQ0lfSU5URCwgSVJRX0ZQR0FfUENJX0lOVEEgfSwKKwlbMTldID0geyBJUlFfRlBHQV9QQ0lfSU5UQSwgSVJRX0ZQR0FfUENJX0lOVEIsIElSUV9GUEdBX1BDSV9JTlRDLCBJUlFfRlBHQV9QQ0lfSU5URCB9LAogfTsKIAogdm9pZCBfX2luaXQgcGNpYmlvc19pcnFfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYvbW0va21hcC5jIGIvYXJjaC9mcnYvbW0va21hcC5jCmluZGV4IGM1NGYxOGUuLjQwYjYyYzUgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L21tL2ttYXAuYworKysgYi9hcmNoL2Zydi9tbS9rbWFwLmMKQEAgLTMxLDE1ICszMSwxNSBAQAogICogTWFwIHNvbWUgcGh5c2ljYWwgYWRkcmVzcyByYW5nZSBpbnRvIHRoZSBrZXJuZWwgYWRkcmVzcyBzcGFjZS4KICAqLwogCi12b2lkICpfX2lvcmVtYXAodW5zaWduZWQgbG9uZyBwaHlzYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCBpbnQgY2FjaGVmbGFnKQordm9pZCBfX2lvbWVtICpfX2lvcmVtYXAodW5zaWduZWQgbG9uZyBwaHlzYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLCBpbnQgY2FjaGVmbGFnKQogewotCXJldHVybiAodm9pZCAqKXBoeXNhZGRyOworCXJldHVybiAodm9pZCBfX2lvbWVtICopcGh5c2FkZHI7CiB9CiAKIC8qCiAgKiBVbm1hcCBhIGlvcmVtYXAoKWVkIHJlZ2lvbiBhZ2FpbgogICovCi12b2lkIGlvdW5tYXAodm9pZCAqYWRkcikKK3ZvaWQgaW91bm1hcCh2b2lkIHZvbGF0aWxlIF9faW9tZW0gKmFkZHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvaDgzMDAva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9oODMwMC9rZXJuZWwvc2lnbmFsLmMKaW5kZXggZjEzZDVlOC4uNzc4N2Y3MCAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9oODMwMC9rZXJuZWwvc2lnbmFsLmMKQEAgLTMwNyw3ICszMDcsNyBAQAogCiAJLyogVGhpcyBpcyB0aGUgWC9PcGVuIHNhbmN0aW9uZWQgc2lnbmFsIHN0YWNrIHN3aXRjaGluZy4gICovCiAJaWYgKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spIHsKLQkJaWYgKCFvbl9zaWdfc3RhY2sodXNwKSkKKwkJaWYgKCFzYXNfc3NfZmxhZ3ModXNwKSkKIAkJCXVzcCA9IGN1cnJlbnQtPnNhc19zc19zcCArIGN1cnJlbnQtPnNhc19zc19zaXplOwogCX0KIAlyZXR1cm4gKHZvaWQgKikoKHVzcCAtIGZyYW1lX3NpemUpICYgLThVTCk7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvS2NvbmZpZyBiL2FyY2gvaTM4Ni9LY29uZmlnCmluZGV4IDhkZmEzMDUuLjE1OTYxMDEgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9LY29uZmlnCisrKyBiL2FyY2gvaTM4Ni9LY29uZmlnCkBAIC0xNzMsNiArMTczLDEyIEBACiAJYm9vbAogCWRlZmF1bHQgeQogCWRlcGVuZHMgb24gTlVNQSAmJiAoWDg2X1NVTU1JVCB8fCBYODZfR0VORVJJQ0FSQ0gpCisJc2VsZWN0IEFDUElfTlVNQQorCitjb25maWcgSEFWRV9BUkNIX1BBUlNFX1NSQVQKKyAgICAgICBib29sCisgICAgICAgZGVmYXVsdCB5CisgICAgICAgZGVwZW5kcyBvbiBBQ1BJX1NSQVQKIAogY29uZmlnIFg4Nl9TVU1NSVRfTlVNQQogCWJvb2wKQEAgLTIyNCw3ICsyMzAsNiBAQAogY29uZmlnIFNDSEVEX1NNVAogCWJvb2wgIlNNVCAoSHlwZXJ0aHJlYWRpbmcpIHNjaGVkdWxlciBzdXBwb3J0IgogCWRlcGVuZHMgb24gU01QCi0JZGVmYXVsdCBvZmYKIAloZWxwCiAJICBTTVQgc2NoZWR1bGVyIHN1cHBvcnQgaW1wcm92ZXMgdGhlIENQVSBzY2hlZHVsZXIncyBkZWNpc2lvbiBtYWtpbmcKIAkgIHdoZW4gZGVhbGluZyB3aXRoIEludGVsIFBlbnRpdW0gNCBjaGlwcyB3aXRoIEh5cGVyVGhyZWFkaW5nIGF0IGEKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvYWNwaS9ib290LmMgYi9hcmNoL2kzODYva2VybmVsL2FjcGkvYm9vdC5jCmluZGV4IDQwZTVhYmEuLjk3Y2ExNzEgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvYWNwaS9ib290LmMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL2Jvb3QuYwpAQCAtMjAyLDYgKzIwMiw4IEBACiAJCWlmIChtY2ZnLT5jb25maWdbaV0uYmFzZV9yZXNlcnZlZCkgewogCQkJcHJpbnRrKEtFUk5fRVJSIFBSRUZJWAogCQkJICAgICAgICJNTUNPTkZJRyBub3QgaW4gbG93IDRHQiBvZiBtZW1vcnlcbiIpOworCQkJa2ZyZWUocGNpX21tY2ZnX2NvbmZpZyk7CisJCQlwY2lfbW1jZmdfY29uZmlnX251bSA9IDA7CiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJfQogCX0KQEAgLTIxNSw3ICsyMTcsNyBAQAogewogCXN0cnVjdCBhY3BpX3RhYmxlX21hZHQgKm1hZHQgPSBOVUxMOwogCi0JaWYgKCFwaHlzX2FkZHIgfHwgIXNpemUpCisJaWYgKCFwaHlzX2FkZHIgfHwgIXNpemUgfHwgIWNwdV9oYXNfYXBpYykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAltYWR0ID0gKHN0cnVjdCBhY3BpX3RhYmxlX21hZHQgKilfX2FjcGlfbWFwX3RhYmxlKHBoeXNfYWRkciwgc2l6ZSk7CkBAIC02MjEsOSArNjIzLDkgQEAKIAogc3RhdGljIGludCBfX2luaXQgYWNwaV9wYXJzZV9mYWR0KHVuc2lnbmVkIGxvbmcgcGh5cywgdW5zaWduZWQgbG9uZyBzaXplKQogewotCXN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqZmFkdCA9IE5VTEw7CisJc3RydWN0IGZhZHRfZGVzY3JpcHRvciAqZmFkdCA9IE5VTEw7CiAKLQlmYWR0ID0gKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqKV9fYWNwaV9tYXBfdGFibGUocGh5cywgc2l6ZSk7CisJZmFkdCA9IChzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICopX19hY3BpX21hcF90YWJsZShwaHlzLCBzaXplKTsKIAlpZiAoIWZhZHQpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBQUkVGSVggIlVuYWJsZSB0byBtYXAgRkFEVFxuIik7CiAJCXJldHVybiAwOwpAQCAtNzU0LDcgKzc1Niw3IEBACiAJCXJldHVybiAtRU5PREVWOwogCX0KIAotCWlmICghY3B1X2hhc19hcGljKQorCWlmICghY3B1X2hhc19hcGljKSAKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3Byb2Nlc3Nvci5jIGIvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3Byb2Nlc3Nvci5jCmluZGV4IDlmNGNjMDIuLmI1NGZkZWQgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvYWNwaS9wcm9jZXNzb3IuYworKysgYi9hcmNoL2kzODYva2VybmVsL2FjcGkvcHJvY2Vzc29yLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKIAlidWZbMl0gPSBBQ1BJX1BEQ19DX0NBUEFCSUxJVFlfU01QOwogCiAJaWYgKGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfRVNUKSkKLQkJYnVmWzJdIHw9IEFDUElfUERDX0VTVF9DQVBBQklMSVRZX1NNUDsKKwkJYnVmWzJdIHw9IEFDUElfUERDX0VTVF9DQVBBQklMSVRZX1NXU01QOwogCiAJb2JqLT50eXBlID0gQUNQSV9UWVBFX0JVRkZFUjsKIAlvYmotPmJ1ZmZlci5sZW5ndGggPSAxMjsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvYWNwaS9zbGVlcC5jIGIvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3NsZWVwLmMKaW5kZXggMWNiMmIxOC4uNGVlODM1NyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3NsZWVwLmMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3NsZWVwLmMKQEAgLTgsMzAgKzgsMTcgQEAKICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSA8bGludXgvYm9vdG1lbS5oPgogI2luY2x1ZGUgPGxpbnV4L2RtaS5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KKwogI2luY2x1ZGUgPGFzbS9zbXAuaD4KLSNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KIAogLyogYWRkcmVzcyBpbiBsb3cgbWVtb3J5IG9mIHRoZSB3YWtldXAgcm91dGluZS4gKi8KIHVuc2lnbmVkIGxvbmcgYWNwaV93YWtldXBfYWRkcmVzcyA9IDA7CiB1bnNpZ25lZCBsb25nIGFjcGlfdmlkZW9fZmxhZ3M7CiBleHRlcm4gY2hhciB3YWtldXBfc3RhcnQsIHdha2V1cF9lbmQ7CiAKLWV4dGVybiB2b2lkIHphcF9sb3dfbWFwcGluZ3Modm9pZCk7Ci0KIGV4dGVybiB1bnNpZ25lZCBsb25nIEZBU1RDQUxMKGFjcGlfY29weV93YWtldXBfcm91dGluZSh1bnNpZ25lZCBsb25nKSk7CiAKLXN0YXRpYyB2b2lkIGluaXRfbG93X21hcHBpbmcocGdkX3QgKiBwZ2QsIGludCBwZ2RfbGltaXQpCi17Ci0JaW50IHBnZF9vZnMgPSAwOwotCi0Jd2hpbGUgKChwZ2Rfb2ZzIDwgcGdkX2xpbWl0KQotCSAgICAgICAmJiAocGdkX29mcyArIFVTRVJfUFRSU19QRVJfUEdEIDwgUFRSU19QRVJfUEdEKSkgewotCQlzZXRfcGdkKHBnZCwgKihwZ2QgKyBVU0VSX1BUUlNfUEVSX1BHRCkpOwotCQlwZ2Rfb2ZzKyssIHBnZCsrOwotCX0KLQlmbHVzaF90bGJfYWxsKCk7Ci19Ci0KIC8qKgogICogYWNwaV9zYXZlX3N0YXRlX21lbSAtIHNhdmUga2VybmVsIHN0YXRlCiAgKgpAQCAtNDIsNyArMjksNiBAQAogewogCWlmICghYWNwaV93YWtldXBfYWRkcmVzcykKIAkJcmV0dXJuIDE7Ci0JaW5pdF9sb3dfbWFwcGluZyhzd2FwcGVyX3BnX2RpciwgVVNFUl9QVFJTX1BFUl9QR0QpOwogCW1lbWNweSgodm9pZCAqKWFjcGlfd2FrZXVwX2FkZHJlc3MsICZ3YWtldXBfc3RhcnQsCiAJICAgICAgICZ3YWtldXBfZW5kIC0gJndha2V1cF9zdGFydCk7CiAJYWNwaV9jb3B5X3dha2V1cF9yb3V0aW5lKGFjcGlfd2FrZXVwX2FkZHJlc3MpOwpAQCAtNTUsNyArNDEsNiBAQAogICovCiB2b2lkIGFjcGlfcmVzdG9yZV9zdGF0ZV9tZW0odm9pZCkKIHsKLQl6YXBfbG93X21hcHBpbmdzKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3dha2V1cC5TIGIvYXJjaC9pMzg2L2tlcm5lbC9hY3BpL3dha2V1cC5TCmluZGV4IDdjNzRmZTAuLjlmNDA4ZWUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvYWNwaS93YWtldXAuUworKysgYi9hcmNoL2kzODYva2VybmVsL2FjcGkvd2FrZXVwLlMKQEAgLTU2LDcgKzU2LDcgQEAKIDE6CiAKIAkjIHNldCB1cCBwYWdlIHRhYmxlCi0JbW92bAkkc3dhcHBlcl9wZ19kaXItX19QQUdFX09GRlNFVCwgJWVheAorCW1vdmwJJHN3c3VzcF9wZ19kaXItX19QQUdFX09GRlNFVCwgJWVheAogCW1vdmwJJWVheCwgJWNyMwogCiAJdGVzdGwJJDEsIHJlYWxfZWZlcl9zYXZlX3Jlc3RvcmUgLSB3YWtldXBfY29kZQpAQCAtMjY1LDExICsyNjUsNiBAQAogCW1vdmwJJDB4MTIzNDU2NzgsIHNhdmVkX21hZ2ljCiAJcmV0CiAKLS5kYXRhCi1BTElHTgotRU5UUlkoc2F2ZWRfbWFnaWMpCS5sb25nCTAKLUVOVFJZKHNhdmVkX2VpcCkJLmxvbmcJMAotCiBzYXZlX3JlZ2lzdGVyczoKIAlsZWFsCTQoJWVzcCksICVlYXgKIAltb3ZsCSVlYXgsIHNhdmVkX2NvbnRleHRfZXNwCkBAIC0zMDQsNyArMjk5LDExIEBACiAJY2FsbAlyZXN0b3JlX3Byb2Nlc3Nvcl9zdGF0ZQogCXJldAogCisuZGF0YQogQUxJR04KK0VOVFJZKHNhdmVkX21hZ2ljKQkubG9uZwkwCitFTlRSWShzYXZlZF9laXApCS5sb25nCTAKKwogIyBzYXZlZCByZWdpc3RlcnMKIHNhdmVkX2dkdDoJLmxvbmcJMCwwCiBzYXZlZF9pZHQ6CS5sb25nCTAsMApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9hcGljLmMgYi9hcmNoL2kzODYva2VybmVsL2FwaWMuYwppbmRleCAzZDRiMmYzLi41YWI1OWMxIDEwMDY0NAotLS0gYS9hcmNoL2kzODYva2VybmVsL2FwaWMuYworKysgYi9hcmNoL2kzODYva2VybmVsL2FwaWMuYwpAQCAtNjIsNyArNjIsNyBAQAogCiBzdGF0aWMgdm9pZCBhcGljX3BtX2FjdGl2YXRlKHZvaWQpOwogCi1pbnQgbW9kZXJuX2FwaWModm9pZCkKK3N0YXRpYyBpbnQgbW9kZXJuX2FwaWModm9pZCkKIHsKIAl1bnNpZ25lZCBpbnQgbHZyLCB2ZXJzaW9uOwogCS8qIEFNRCBzeXN0ZW1zIHVzZSBvbGQgQVBJQyB2ZXJzaW9ucywgc28gY2hlY2sgdGhlIENQVSAqLwpAQCAtMTEzLDcgKzExMyw3IEBACiB9CiAKIC8qIFVzaW5nIEFQSUMgdG8gZ2VuZXJhdGUgc21wX2xvY2FsX3RpbWVyX2ludGVycnVwdD8gKi8KLWludCB1c2luZ19hcGljX3RpbWVyID0gMDsKK2ludCB1c2luZ19hcGljX3RpbWVyIF9fcmVhZF9tb3N0bHkgPSAwOwogCiBzdGF0aWMgaW50IGVuYWJsZWRfdmlhX2FwaWNiYXNlOwogCmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2FwbS5jIGIvYXJjaC9pMzg2L2tlcm5lbC9hcG0uYwppbmRleCBkZjBlMTc0Li45ZTgxOWViIDEwMDY0NAotLS0gYS9hcmNoL2kzODYva2VybmVsL2FwbS5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvYXBtLmMKQEAgLTM3NCwxNCArMzc0LDE0IEBACiAJdW5zaWduZWQgc2hvcnQJc2VnbWVudDsKIH0JCQkJYXBtX2Jpb3NfZW50cnk7CiBzdGF0aWMgaW50CQkJY2xvY2tfc2xvd2VkOwotc3RhdGljIGludAkJCWlkbGVfdGhyZXNob2xkID0gREVGQVVMVF9JRExFX1RIUkVTSE9MRDsKLXN0YXRpYyBpbnQJCQlpZGxlX3BlcmlvZCA9IERFRkFVTFRfSURMRV9QRVJJT0Q7CitzdGF0aWMgaW50CQkJaWRsZV90aHJlc2hvbGQgX19yZWFkX21vc3RseSA9IERFRkFVTFRfSURMRV9USFJFU0hPTEQ7CitzdGF0aWMgaW50CQkJaWRsZV9wZXJpb2QgX19yZWFkX21vc3RseSA9IERFRkFVTFRfSURMRV9QRVJJT0Q7CiBzdGF0aWMgaW50CQkJc2V0X3BtX2lkbGU7CiBzdGF0aWMgaW50CQkJc3VzcGVuZHNfcGVuZGluZzsKIHN0YXRpYyBpbnQJCQlzdGFuZGJ5c19wZW5kaW5nOwogc3RhdGljIGludAkJCWlnbm9yZV9zeXNfc3VzcGVuZDsKIHN0YXRpYyBpbnQJCQlpZ25vcmVfbm9ybWFsX3Jlc3VtZTsKLXN0YXRpYyBpbnQJCQlib3VuY2VfaW50ZXJ2YWwgPSBERUZBVUxUX0JPVU5DRV9JTlRFUlZBTDsKK3N0YXRpYyBpbnQJCQlib3VuY2VfaW50ZXJ2YWwgX19yZWFkX21vc3RseSA9IERFRkFVTFRfQk9VTkNFX0lOVEVSVkFMOwogCiAjaWZkZWYgQ09ORklHX0FQTV9SVENfSVNfR01UCiAjCWRlZmluZQljbG9ja19jbW9zX2RpZmYJMApAQCAtMzkwLDggKzM5MCw4IEBACiBzdGF0aWMgbG9uZwkJCWNsb2NrX2Ntb3NfZGlmZjsKIHN0YXRpYyBpbnQJCQlnb3RfY2xvY2tfZGlmZjsKICNlbmRpZgotc3RhdGljIGludAkJCWRlYnVnOwotc3RhdGljIGludAkJCXNtcDsKK3N0YXRpYyBpbnQJCQlkZWJ1ZyBfX3JlYWRfbW9zdGx5Oworc3RhdGljIGludAkJCXNtcCBfX3JlYWRfbW9zdGx5Owogc3RhdGljIGludAkJCWFwbV9kaXNhYmxlZCA9IC0xOwogI2lmZGVmIENPTkZJR19TTVAKIHN0YXRpYyBpbnQJCQlwb3dlcl9vZmY7CkBAIC00MDMsOCArNDAzLDggQEAKICNlbHNlCiBzdGF0aWMgaW50CQkJcmVhbG1vZGVfcG93ZXJfb2ZmOwogI2VuZGlmCi1zdGF0aWMgaW50CQkJZXhpdF9rYXBtZDsKLXN0YXRpYyBpbnQJCQlrYXBtZF9ydW5uaW5nOworc3RhdGljIGludAkJCWV4aXRfa2FwbWQgX19yZWFkX21vc3RseTsKK3N0YXRpYyBpbnQJCQlrYXBtZF9ydW5uaW5nIF9fcmVhZF9tb3N0bHk7CiAjaWZkZWYgQ09ORklHX0FQTV9BTExPV19JTlRTCiBzdGF0aWMgaW50CQkJYWxsb3dfaW50cyA9IDE7CiAjZWxzZQpAQCAtNDE2LDE1ICs0MTYsMTUgQEAKIHN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChhcG1fc3VzcGVuZF93YWl0cXVldWUpOwogc3RhdGljIHN0cnVjdCBhcG1fdXNlciAqCXVzZXJfbGlzdDsKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sodXNlcl9saXN0X2xvY2spOwotc3RhdGljIHN0cnVjdCBkZXNjX3N0cnVjdAliYWRfYmlvc19kZXNjID0geyAwLCAweDAwNDA5MjAwIH07CitzdGF0aWMgY29uc3Qgc3RydWN0IGRlc2Nfc3RydWN0CWJhZF9iaW9zX2Rlc2MgPSB7IDAsIDB4MDA0MDkyMDAgfTsKIAotc3RhdGljIGNoYXIJCQlkcml2ZXJfdmVyc2lvbltdID0gIjEuMTZhYyI7CS8qIG5vIHNwYWNlcyAqLworc3RhdGljIGNvbnN0IGNoYXIJCWRyaXZlcl92ZXJzaW9uW10gPSAiMS4xNmFjIjsJLyogbm8gc3BhY2VzICovCiAKIC8qCiAgKglBUE0gZXZlbnQgbmFtZXMgdGFrZW4gZnJvbSB0aGUgQVBNIDEuMiBzcGVjaWZpY2F0aW9uLiBUaGVzZSBhcmUKICAqCXRoZSBtZXNzYWdlIGNvZGVzIHRoYXQgdGhlIEJJT1MgdXNlcyB0byB0ZWxsIHVzIGFib3V0IGV2ZW50cwogICovCi1zdGF0aWMgY2hhciAqCWFwbV9ldmVudF9uYW1lW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqCWNvbnN0IGFwbV9ldmVudF9uYW1lW10gPSB7CiAJInN5c3RlbSBzdGFuZGJ5IiwKIAkic3lzdGVtIHN1c3BlbmQiLAogCSJub3JtYWwgcmVzdW1lIiwKQEAgLTYxNiw3ICs2MTYsNyBAQAogICoJQGVjeF9pbjogRUNYIHJlZ2lzdGVyIHZhbHVlIGZvciBCSU9TIGNhbGwKICAqCUBlYXg6IEVBWCByZWdpc3RlciBvbiByZXR1cm4gZnJvbSB0aGUgQklPUyBjYWxsCiAgKgotICoJTWFrZSBhIEJJT1MgY2FsbCB0aGF0IGRvZXMgb25seSByZXR1cm5zIG9uZSB2YWx1ZSwgb3IganVzdCBzdGF0dXMuCisgKglNYWtlIGEgQklPUyBjYWxsIHRoYXQgcmV0dXJucyBvbmUgdmFsdWUgb25seSwgb3IganVzdCBzdGF0dXMuCiAgKglJZiB0aGVyZSBpcyBhbiBlcnJvciwgdGhlbiB0aGUgZXJyb3IgY29kZSBpcyByZXR1cm5lZCBpbiBBSAogICoJKGJpdHMgOC0xNSBvZiBlYXgpIGFuZCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgbm9uLXplcm8uIFRoaXMgaXMKICAqCXVzZWQgZm9yIHNpbXBsZXIgQklPUyBvcGVyYXRpb25zLiBUaGlzIGNhbGwgbWF5IGhvbGQgaW50ZXJydXB0cwpAQCAtODIyLDcgKzgyMiw3IEBACiAjZGVmaW5lIElETEVfQ0FMQ19MSU1JVCAgIChIWiAqIDEwMCkKICNkZWZpbmUgSURMRV9MRUFLWV9NQVggICAgMTYKIAotc3RhdGljIHZvaWQgKCpvcmlnaW5hbF9wbV9pZGxlKSh2b2lkKTsKK3N0YXRpYyB2b2lkICgqb3JpZ2luYWxfcG1faWRsZSkodm9pZCkgX19yZWFkX21vc3RseTsKIAogLyoqCiAgKiBhcG1fY3B1X2lkbGUJCS0JY3B1IGlkbGluZyBmb3IgQVBNIGNhcGFibGUgTGludXgKQEAgLTEwNjMsNyArMTA2Myw4IEBACiAgCiBzdGF0aWMgaW50IGFwbV9jb25zb2xlX2JsYW5rKGludCBibGFuaykKIHsKLQlpbnQgZXJyb3IsIGk7CisJaW50IGVycm9yID0gQVBNX05PVF9FTkdBR0VEOyAvKiBzaWxlbmNlIGdjYyAqLworCWludCBpOwogCXVfc2hvcnQgc3RhdGU7CiAJc3RhdGljIGNvbnN0IHVfc2hvcnQgZGV2WzNdID0geyAweDEwMCwgMHgxRkYsIDB4MTAxIH07CiAKQEAgLTExMDQsNyArMTEwNSw4IEBACiAKIHN0YXRpYyBhcG1fZXZlbnRfdCBnZXRfcXVldWVkX2V2ZW50KHN0cnVjdCBhcG1fdXNlciAqYXMpCiB7Ci0JYXMtPmV2ZW50X3RhaWwgPSAoYXMtPmV2ZW50X3RhaWwgKyAxKSAlIEFQTV9NQVhfRVZFTlRTOworCWlmICgrK2FzLT5ldmVudF90YWlsID49IEFQTV9NQVhfRVZFTlRTKQorCQlhcy0+ZXZlbnRfdGFpbCA9IDA7CiAJcmV0dXJuIGFzLT5ldmVudHNbYXMtPmV2ZW50X3RhaWxdOwogfQogCkBAIC0xMTE4LDEzICsxMTIwLDE2IEBACiAJZm9yIChhcyA9IHVzZXJfbGlzdDsgYXMgIT0gTlVMTDsgYXMgPSBhcy0+bmV4dCkgewogCQlpZiAoKGFzID09IHNlbmRlcikgfHwgKCFhcy0+cmVhZGVyKSkKIAkJCWNvbnRpbnVlOwotCQlhcy0+ZXZlbnRfaGVhZCA9IChhcy0+ZXZlbnRfaGVhZCArIDEpICUgQVBNX01BWF9FVkVOVFM7CisJCWlmICgrK2FzLT5ldmVudF9oZWFkID49IEFQTV9NQVhfRVZFTlRTKQorCQkJYXMtPmV2ZW50X2hlYWQgPSAwOworCiAJCWlmIChhcy0+ZXZlbnRfaGVhZCA9PSBhcy0+ZXZlbnRfdGFpbCkgewogCQkJc3RhdGljIGludCBub3RpZmllZDsKIAogCQkJaWYgKG5vdGlmaWVkKysgPT0gMCkKIAkJCSAgICBwcmludGsoS0VSTl9FUlIgImFwbTogYW4gZXZlbnQgcXVldWUgb3ZlcmZsb3dlZFxuIik7Ci0JCQlhcy0+ZXZlbnRfdGFpbCA9IChhcy0+ZXZlbnRfdGFpbCArIDEpICUgQVBNX01BWF9FVkVOVFM7CisJCQlpZiAoKythcy0+ZXZlbnRfdGFpbCA+PSBBUE1fTUFYX0VWRU5UUykKKwkJCQlhcy0+ZXZlbnRfdGFpbCA9IDA7CiAJCX0KIAkJYXMtPmV2ZW50c1thcy0+ZXZlbnRfaGVhZF0gPSBldmVudDsKIAkJaWYgKCghYXMtPnN1c2VyKSB8fCAoIWFzLT53cml0ZXIpKQpAQCAtMTI4Miw3ICsxMjg3LDcgQEAKIHN0YXRpYyBhcG1fZXZlbnRfdCBnZXRfZXZlbnQodm9pZCkKIHsKIAlpbnQJCWVycm9yOwotCWFwbV9ldmVudF90CWV2ZW50OworCWFwbV9ldmVudF90CWV2ZW50ID0gQVBNX05PX0VWRU5UUzsgLyogc2lsZW5jZSBnY2MgKi8KIAlhcG1fZXZlbnRpbmZvX3QJaW5mbzsKIAogCXN0YXRpYyBpbnQgbm90aWZpZWQ7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2NwdS9jb21tb24uYyBiL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCmluZGV4IGEwNmE0OTAuLjQ0ZjJjNWYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC0xMSw2ICsxMSw4IEBACiAjaW5jbHVkZSA8YXNtL21zci5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9tbXVfY29udGV4dC5oPgorI2luY2x1ZGUgPGFzbS9tdHJyLmg+CisjaW5jbHVkZSA8YXNtL21jZS5oPgogI2lmZGVmIENPTkZJR19YODZfTE9DQUxfQVBJQwogI2luY2x1ZGUgPGFzbS9tcHNwZWMuaD4KICNpbmNsdWRlIDxhc20vYXBpYy5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9hY3BpLWNwdWZyZXEuYyBiL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvYWNwaS1jcHVmcmVxLmMKaW5kZXggMWE3YmRjZS4uMDU2NjhlMyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9hY3BpLWNwdWZyZXEuYworKysgYi9hcmNoL2kzODYva2VybmVsL2NwdS9jcHVmcmVxL2FjcGktY3B1ZnJlcS5jCkBAIC00OCwxMiArNDgsMTMgQEAKIAogCiBzdHJ1Y3QgY3B1ZnJlcV9hY3BpX2lvIHsKLQlzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UJYWNwaV9kYXRhOworCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQkqYWNwaV9kYXRhOwogCXN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZQkJKmZyZXFfdGFibGU7CiAJdW5zaWduZWQgaW50CQkJCXJlc3VtZTsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9hY3BpX2lvCSphY3BpX2lvX2RhdGFbTlJfQ1BVU107CitzdGF0aWMgc3RydWN0IGFjcGlfcHJvY2Vzc29yX3BlcmZvcm1hbmNlCSphY3BpX3BlcmZfZGF0YVtOUl9DUFVTXTsKIAogc3RhdGljIHN0cnVjdCBjcHVmcmVxX2RyaXZlciBhY3BpX2NwdWZyZXFfZHJpdmVyOwogCkBAIC0xMDQsNjQgKzEwNSw0MyBAQAogewogCXUxNgkJCXBvcnQgPSAwOwogCXU4CQkJYml0X3dpZHRoID0gMDsKLQlpbnQJCQlyZXQ7Ci0JdTMyCQkJdmFsdWUgPSAwOwogCWludAkJCWkgPSAwOwotCXN0cnVjdCBjcHVmcmVxX2ZyZXFzICAgIGNwdWZyZXFfZnJlcXM7Ci0JY3B1bWFza190CQlzYXZlZF9tYXNrOworCWludAkJCXJldCA9IDA7CisJdTMyCQkJdmFsdWUgPSAwOwogCWludAkJCXJldHZhbDsKKwlzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UJKnBlcmY7CiAKIAlkcHJpbnRrKCJhY3BpX3Byb2Nlc3Nvcl9zZXRfcGVyZm9ybWFuY2VcbiIpOwogCi0JLyoKLQkgKiBUQkQ6IFVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBzZXRfY3B1c19hbGxvd2VkLgotCSAqIEFzIHNldF9jcHVzX2FsbG93ZWQgaXMgYSBiaXQgcmFjeSwgCi0JICogd2l0aCBhbnkgb3RoZXIgc2V0X2NwdXNfYWxsb3dlZCBmb3IgdGhpcyBwcm9jZXNzLgotCSAqLwotCXNhdmVkX21hc2sgPSBjdXJyZW50LT5jcHVzX2FsbG93ZWQ7Ci0Jc2V0X2NwdXNfYWxsb3dlZChjdXJyZW50LCBjcHVtYXNrX29mX2NwdShjcHUpKTsKLQlpZiAoc21wX3Byb2Nlc3Nvcl9pZCgpICE9IGNwdSkgewotCQlyZXR1cm4gKC1FQUdBSU4pOwotCX0KLQkKLQlpZiAoc3RhdGUgPT0gZGF0YS0+YWNwaV9kYXRhLnN0YXRlKSB7CisJcmV0dmFsID0gMDsKKwlwZXJmID0gZGF0YS0+YWNwaV9kYXRhOwkKKwlpZiAoc3RhdGUgPT0gcGVyZi0+c3RhdGUpIHsKIAkJaWYgKHVubGlrZWx5KGRhdGEtPnJlc3VtZSkpIHsKIAkJCWRwcmludGsoIkNhbGxlZCBhZnRlciByZXN1bWUsIHJlc2V0dGluZyB0byBQJWRcbiIsIHN0YXRlKTsKIAkJCWRhdGEtPnJlc3VtZSA9IDA7CiAJCX0gZWxzZSB7CiAJCQlkcHJpbnRrKCJBbHJlYWR5IGF0IHRhcmdldCBzdGF0ZSAoUCVkKVxuIiwgc3RhdGUpOwotCQkJcmV0dmFsID0gMDsKLQkJCWdvdG8gbWlncmF0ZV9lbmQ7CisJCQlyZXR1cm4gKHJldHZhbCk7CiAJCX0KIAl9CiAKLQlkcHJpbnRrKCJUcmFuc2l0aW9uaW5nIGZyb20gUCVkIHRvIFAlZFxuIiwKLQkJZGF0YS0+YWNwaV9kYXRhLnN0YXRlLCBzdGF0ZSk7Ci0KLQkvKiBjcHVmcmVxIGZyZXF1ZW5jeSBzdHJ1Y3QgKi8KLQljcHVmcmVxX2ZyZXFzLmNwdSA9IGNwdTsKLQljcHVmcmVxX2ZyZXFzLm9sZCA9IGRhdGEtPmZyZXFfdGFibGVbZGF0YS0+YWNwaV9kYXRhLnN0YXRlXS5mcmVxdWVuY3k7Ci0JY3B1ZnJlcV9mcmVxcy5uZXcgPSBkYXRhLT5mcmVxX3RhYmxlW3N0YXRlXS5mcmVxdWVuY3k7Ci0KLQkvKiBub3RpZnkgY3B1ZnJlcSAqLwotCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmNwdWZyZXFfZnJlcXMsIENQVUZSRVFfUFJFQ0hBTkdFKTsKKwlkcHJpbnRrKCJUcmFuc2l0aW9uaW5nIGZyb20gUCVkIHRvIFAlZFxuIiwgcGVyZi0+c3RhdGUsIHN0YXRlKTsKIAogCS8qCiAJICogRmlyc3Qgd2Ugd3JpdGUgdGhlIHRhcmdldCBzdGF0ZSdzICdjb250cm9sJyB2YWx1ZSB0byB0aGUKIAkgKiBjb250cm9sX3JlZ2lzdGVyLgogCSAqLwogCi0JcG9ydCA9IGRhdGEtPmFjcGlfZGF0YS5jb250cm9sX3JlZ2lzdGVyLmFkZHJlc3M7Ci0JYml0X3dpZHRoID0gZGF0YS0+YWNwaV9kYXRhLmNvbnRyb2xfcmVnaXN0ZXIuYml0X3dpZHRoOwotCXZhbHVlID0gKHUzMikgZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tzdGF0ZV0uY29udHJvbDsKKwlwb3J0ID0gcGVyZi0+Y29udHJvbF9yZWdpc3Rlci5hZGRyZXNzOworCWJpdF93aWR0aCA9IHBlcmYtPmNvbnRyb2xfcmVnaXN0ZXIuYml0X3dpZHRoOworCXZhbHVlID0gKHUzMikgcGVyZi0+c3RhdGVzW3N0YXRlXS5jb250cm9sOwogCiAJZHByaW50aygiV3JpdGluZyAweCUwOHggdG8gcG9ydCAweCUwNHhcbiIsIHZhbHVlLCBwb3J0KTsKIAogCXJldCA9IGFjcGlfcHJvY2Vzc29yX3dyaXRlX3BvcnQocG9ydCwgYml0X3dpZHRoLCB2YWx1ZSk7CiAJaWYgKHJldCkgewogCQlkcHJpbnRrKCJJbnZhbGlkIHBvcnQgd2lkdGggMHglMDR4XG4iLCBiaXRfd2lkdGgpOwotCQlyZXR2YWwgPSByZXQ7Ci0JCWdvdG8gbWlncmF0ZV9lbmQ7CisJCXJldHVybiAocmV0KTsKIAl9CiAKIAkvKgpAQCAtMTc3LDQ4ICsxNTcsMzUgQEAKIAkJICogYmVmb3JlIGdpdmluZyB1cC4KIAkJICovCiAKLQkJcG9ydCA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0dXNfcmVnaXN0ZXIuYWRkcmVzczsKLQkJYml0X3dpZHRoID0gZGF0YS0+YWNwaV9kYXRhLnN0YXR1c19yZWdpc3Rlci5iaXRfd2lkdGg7CisJCXBvcnQgPSBwZXJmLT5zdGF0dXNfcmVnaXN0ZXIuYWRkcmVzczsKKwkJYml0X3dpZHRoID0gcGVyZi0+c3RhdHVzX3JlZ2lzdGVyLmJpdF93aWR0aDsKIAogCQlkcHJpbnRrKCJMb29raW5nIGZvciAweCUwOHggZnJvbSBwb3J0IDB4JTA0eFxuIiwKLQkJCSh1MzIpIGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbc3RhdGVdLnN0YXR1cywgcG9ydCk7CisJCQkodTMyKSBwZXJmLT5zdGF0ZXNbc3RhdGVdLnN0YXR1cywgcG9ydCk7CiAKLQkJZm9yIChpPTA7IGk8MTAwOyBpKyspIHsKKwkJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSB7CiAJCQlyZXQgPSBhY3BpX3Byb2Nlc3Nvcl9yZWFkX3BvcnQocG9ydCwgYml0X3dpZHRoLCAmdmFsdWUpOwogCQkJaWYgKHJldCkgewkKIAkJCQlkcHJpbnRrKCJJbnZhbGlkIHBvcnQgd2lkdGggMHglMDR4XG4iLCBiaXRfd2lkdGgpOwotCQkJCXJldHZhbCA9IHJldDsKLQkJCQlnb3RvIG1pZ3JhdGVfZW5kOworCQkJCXJldHVybiAocmV0KTsKIAkJCX0KLQkJCWlmICh2YWx1ZSA9PSAodTMyKSBkYXRhLT5hY3BpX2RhdGEuc3RhdGVzW3N0YXRlXS5zdGF0dXMpCisJCQlpZiAodmFsdWUgPT0gKHUzMikgcGVyZi0+c3RhdGVzW3N0YXRlXS5zdGF0dXMpCiAJCQkJYnJlYWs7CiAJCQl1ZGVsYXkoMTApOwogCQl9CiAJfSBlbHNlIHsKLQkJdmFsdWUgPSAodTMyKSBkYXRhLT5hY3BpX2RhdGEuc3RhdGVzW3N0YXRlXS5zdGF0dXM7CisJCXZhbHVlID0gKHUzMikgcGVyZi0+c3RhdGVzW3N0YXRlXS5zdGF0dXM7CiAJfQogCi0JLyogbm90aWZ5IGNwdWZyZXEgKi8KLQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZjcHVmcmVxX2ZyZXFzLCBDUFVGUkVRX1BPU1RDSEFOR0UpOwotCi0JaWYgKHVubGlrZWx5KHZhbHVlICE9ICh1MzIpIGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbc3RhdGVdLnN0YXR1cykpIHsKLQkJdW5zaWduZWQgaW50IHRtcCA9IGNwdWZyZXFfZnJlcXMubmV3OwotCQljcHVmcmVxX2ZyZXFzLm5ldyA9IGNwdWZyZXFfZnJlcXMub2xkOwotCQljcHVmcmVxX2ZyZXFzLm9sZCA9IHRtcDsKLQkJY3B1ZnJlcV9ub3RpZnlfdHJhbnNpdGlvbigmY3B1ZnJlcV9mcmVxcywgQ1BVRlJFUV9QUkVDSEFOR0UpOwotCQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZjcHVmcmVxX2ZyZXFzLCBDUFVGUkVRX1BPU1RDSEFOR0UpOworCWlmICh1bmxpa2VseSh2YWx1ZSAhPSAodTMyKSBwZXJmLT5zdGF0ZXNbc3RhdGVdLnN0YXR1cykpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiYWNwaS1jcHVmcmVxOiBUcmFuc2l0aW9uIGZhaWxlZFxuIik7CiAJCXJldHZhbCA9IC1FTk9ERVY7Ci0JCWdvdG8gbWlncmF0ZV9lbmQ7CisJCXJldHVybiAocmV0dmFsKTsKIAl9CiAKIAlkcHJpbnRrKCJUcmFuc2l0aW9uIHN1Y2Nlc3NmdWwgYWZ0ZXIgJWQgbWljcm9zZWNvbmRzXG4iLCBpICogMTApOwogCi0JZGF0YS0+YWNwaV9kYXRhLnN0YXRlID0gc3RhdGU7Ci0KLQlyZXR2YWwgPSAwOwotbWlncmF0ZV9lbmQ6Ci0Jc2V0X2NwdXNfYWxsb3dlZChjdXJyZW50LCBzYXZlZF9tYXNrKTsKKwlwZXJmLT5zdGF0ZSA9IHN0YXRlOwogCXJldHVybiAocmV0dmFsKTsKIH0KIApAQCAtMjMwLDggKzE5NywxNyBAQAogCXVuc2lnbmVkIGludCByZWxhdGlvbikKIHsKIAlzdHJ1Y3QgY3B1ZnJlcV9hY3BpX2lvICpkYXRhID0gYWNwaV9pb19kYXRhW3BvbGljeS0+Y3B1XTsKKwlzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UgKnBlcmY7CisJc3RydWN0IGNwdWZyZXFfZnJlcXMgZnJlcXM7CisJY3B1bWFza190IG9ubGluZV9wb2xpY3lfY3B1czsKKwljcHVtYXNrX3Qgc2F2ZWRfbWFzazsKKwljcHVtYXNrX3Qgc2V0X21hc2s7CisJY3B1bWFza190IGNvdmVyZWRfY3B1czsKKwl1bnNpZ25lZCBpbnQgY3VyX3N0YXRlID0gMDsKIAl1bnNpZ25lZCBpbnQgbmV4dF9zdGF0ZSA9IDA7CiAJdW5zaWduZWQgaW50IHJlc3VsdCA9IDA7CisJdW5zaWduZWQgaW50IGo7CisJdW5zaWduZWQgaW50IHRtcDsKIAogCWRwcmludGsoImFjcGlfY3B1ZnJlcV9zZXRwb2xpY3lcbiIpOwogCkBAIC0yNDAsMTEgKzIxNiw5NSBAQAogCQkJdGFyZ2V0X2ZyZXEsCiAJCQlyZWxhdGlvbiwKIAkJCSZuZXh0X3N0YXRlKTsKLQlpZiAocmVzdWx0KQorCWlmICh1bmxpa2VseShyZXN1bHQpKQogCQlyZXR1cm4gKHJlc3VsdCk7CiAKLQlyZXN1bHQgPSBhY3BpX3Byb2Nlc3Nvcl9zZXRfcGVyZm9ybWFuY2UgKGRhdGEsIHBvbGljeS0+Y3B1LCBuZXh0X3N0YXRlKTsKKwlwZXJmID0gZGF0YS0+YWNwaV9kYXRhOworCWN1cl9zdGF0ZSA9IHBlcmYtPnN0YXRlOworCWZyZXFzLm9sZCA9IGRhdGEtPmZyZXFfdGFibGVbY3VyX3N0YXRlXS5mcmVxdWVuY3k7CisJZnJlcXMubmV3ID0gZGF0YS0+ZnJlcV90YWJsZVtuZXh0X3N0YXRlXS5mcmVxdWVuY3k7CiAKKyNpZmRlZiBDT05GSUdfSE9UUExVR19DUFUKKwkvKiBjcHVmcmVxIGhvbGRzIHRoZSBob3RwbHVnIGxvY2ssIHNvIHdlIGFyZSBzYWZlIGZyb20gaGVyZSBvbiAqLworCWNwdXNfYW5kKG9ubGluZV9wb2xpY3lfY3B1cywgY3B1X29ubGluZV9tYXAsIHBvbGljeS0+Y3B1cyk7CisjZWxzZQorCW9ubGluZV9wb2xpY3lfY3B1cyA9IHBvbGljeS0+Y3B1czsKKyNlbmRpZgorCisJZm9yX2VhY2hfY3B1X21hc2soaiwgb25saW5lX3BvbGljeV9jcHVzKSB7CisJCWZyZXFzLmNwdSA9IGo7CisJCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BSRUNIQU5HRSk7CisJfQorCisJLyoKKwkgKiBXZSBuZWVkIHRvIGNhbGwgZHJpdmVyLT50YXJnZXQoKSBvbiBhbGwgb3IgYW55IENQVSBpbgorCSAqIHBvbGljeS0+Y3B1cywgZGVwZW5kaW5nIG9uIHBvbGljeS0+c2hhcmVkX3R5cGUuCisJICovCisJc2F2ZWRfbWFzayA9IGN1cnJlbnQtPmNwdXNfYWxsb3dlZDsKKwljcHVzX2NsZWFyKGNvdmVyZWRfY3B1cyk7CisJZm9yX2VhY2hfY3B1X21hc2soaiwgb25saW5lX3BvbGljeV9jcHVzKSB7CisJCS8qCisJCSAqIFN1cHBvcnQgZm9yIFNNUCBzeXN0ZW1zLgorCQkgKiBNYWtlIHN1cmUgd2UgYXJlIHJ1bm5pbmcgb24gQ1BVIHRoYXQgd2FudHMgdG8gY2hhbmdlIGZyZXEKKwkJICovCisJCWNwdXNfY2xlYXIoc2V0X21hc2spOworCQlpZiAocG9saWN5LT5zaGFyZWRfdHlwZSA9PSBDUFVGUkVRX1NIQVJFRF9UWVBFX0FOWSkKKwkJCWNwdXNfb3Ioc2V0X21hc2ssIHNldF9tYXNrLCBvbmxpbmVfcG9saWN5X2NwdXMpOworCQllbHNlCisJCQljcHVfc2V0KGosIHNldF9tYXNrKTsKKworCQlzZXRfY3B1c19hbGxvd2VkKGN1cnJlbnQsIHNldF9tYXNrKTsKKwkJaWYgKHVubGlrZWx5KCFjcHVfaXNzZXQoc21wX3Byb2Nlc3Nvcl9pZCgpLCBzZXRfbWFzaykpKSB7CisJCQlkcHJpbnRrKCJjb3VsZG4ndCBsaW1pdCB0byBDUFVzIGluIHRoaXMgZG9tYWluXG4iKTsKKwkJCXJlc3VsdCA9IC1FQUdBSU47CisJCQlicmVhazsKKwkJfQorCisJCXJlc3VsdCA9IGFjcGlfcHJvY2Vzc29yX3NldF9wZXJmb3JtYW5jZSAoZGF0YSwgaiwgbmV4dF9zdGF0ZSk7CisJCWlmIChyZXN1bHQpIHsKKwkJCXJlc3VsdCA9IC1FQUdBSU47CisJCQlicmVhazsKKwkJfQorCisJCWlmIChwb2xpY3ktPnNoYXJlZF90eXBlID09IENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZKQorCQkJYnJlYWs7CisgCisJCWNwdV9zZXQoaiwgY292ZXJlZF9jcHVzKTsKKwl9CisKKwlmb3JfZWFjaF9jcHVfbWFzayhqLCBvbmxpbmVfcG9saWN5X2NwdXMpIHsKKwkJZnJlcXMuY3B1ID0gajsKKwkJY3B1ZnJlcV9ub3RpZnlfdHJhbnNpdGlvbigmZnJlcXMsIENQVUZSRVFfUE9TVENIQU5HRSk7CisJfQorCisJaWYgKHVubGlrZWx5KHJlc3VsdCkpIHsKKwkJLyoKKwkJICogV2UgaGF2ZSBmYWlsZWQgaGFsZndheSB0aHJvdWdoIHRoZSBmcmVxdWVuY3kgY2hhbmdlLgorCQkgKiBXZSBoYXZlIHNlbnQgY2FsbGJhY2tzIHRvIG9ubGluZV9wb2xpY3lfY3B1cyBhbmQKKwkJICogYWNwaV9wcm9jZXNzb3Jfc2V0X3BlcmZvcm1hbmNlKCkgaGFzIGJlZW4gY2FsbGVkIG9uIAorCQkgKiBjb3ZlcmRfY3B1cy4gQmVzdCBlZmZvcnQgdW5kby4uCisJCSAqLworCisJCWlmICghY3B1c19lbXB0eShjb3ZlcmVkX2NwdXMpKSB7CisJCQlmb3JfZWFjaF9jcHVfbWFzayhqLCBjb3ZlcmVkX2NwdXMpIHsKKwkJCQlwb2xpY3ktPmNwdSA9IGo7CisJCQkJYWNwaV9wcm9jZXNzb3Jfc2V0X3BlcmZvcm1hbmNlIChkYXRhLCAKKwkJCQkJCWosIAorCQkJCQkJY3VyX3N0YXRlKTsKKwkJCX0KKwkJfQorCisJCXRtcCA9IGZyZXFzLm5ldzsKKwkJZnJlcXMubmV3ID0gZnJlcXMub2xkOworCQlmcmVxcy5vbGQgPSB0bXA7CisJCWZvcl9lYWNoX2NwdV9tYXNrKGosIG9ubGluZV9wb2xpY3lfY3B1cykgeworCQkJZnJlcXMuY3B1ID0gajsKKwkJCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BSRUNIQU5HRSk7CisJCQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZmcmVxcywgQ1BVRlJFUV9QT1NUQ0hBTkdFKTsKKwkJfQorCX0KKworCXNldF9jcHVzX2FsbG93ZWQoY3VycmVudCwgc2F2ZWRfbWFzayk7CiAJcmV0dXJuIChyZXN1bHQpOwogfQogCkBAIC0yNzAsMzAgKzMzMCw2NSBAQAogCXN0cnVjdCBjcHVmcmVxX2FjcGlfaW8JKmRhdGEsCiAJdW5zaWduZWQgaW50CQljcHUpCiB7CisJc3RydWN0IGFjcGlfcHJvY2Vzc29yX3BlcmZvcm1hbmNlCSpwZXJmID0gZGF0YS0+YWNwaV9kYXRhOworCiAJaWYgKGNwdV9raHopIHsKIAkJLyogc2VhcmNoIHRoZSBjbG9zZXN0IG1hdGNoIHRvIGNwdV9raHogKi8KIAkJdW5zaWduZWQgaW50IGk7CiAJCXVuc2lnbmVkIGxvbmcgZnJlcTsKLQkJdW5zaWduZWQgbG9uZyBmcmVxbiA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbMF0uY29yZV9mcmVxdWVuY3kgKiAxMDAwOworCQl1bnNpZ25lZCBsb25nIGZyZXFuID0gcGVyZi0+c3RhdGVzWzBdLmNvcmVfZnJlcXVlbmN5ICogMTAwMDsKIAotCQlmb3IgKGk9MDsgaSA8IChkYXRhLT5hY3BpX2RhdGEuc3RhdGVfY291bnQgLSAxKTsgaSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCAocGVyZi0+c3RhdGVfY291bnQgLSAxKTsgaSsrKSB7CiAJCQlmcmVxID0gZnJlcW47Ci0JCQlmcmVxbiA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbaSsxXS5jb3JlX2ZyZXF1ZW5jeSAqIDEwMDA7CisJCQlmcmVxbiA9IHBlcmYtPnN0YXRlc1tpKzFdLmNvcmVfZnJlcXVlbmN5ICogMTAwMDsKIAkJCWlmICgoMiAqIGNwdV9raHopID4gKGZyZXFuICsgZnJlcSkpIHsKLQkJCQlkYXRhLT5hY3BpX2RhdGEuc3RhdGUgPSBpOworCQkJCXBlcmYtPnN0YXRlID0gaTsKIAkJCQlyZXR1cm4gKGZyZXEpOwogCQkJfQogCQl9Ci0JCWRhdGEtPmFjcGlfZGF0YS5zdGF0ZSA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudCAtIDE7CisJCXBlcmYtPnN0YXRlID0gcGVyZi0+c3RhdGVfY291bnQgLSAxOwogCQlyZXR1cm4gKGZyZXFuKTsKLQl9IGVsc2UKKwl9IGVsc2UgewogCQkvKiBhc3N1bWUgQ1BVIGlzIGF0IFAwLi4uICovCi0JCWRhdGEtPmFjcGlfZGF0YS5zdGF0ZSA9IDA7Ci0JCXJldHVybiBkYXRhLT5hY3BpX2RhdGEuc3RhdGVzWzBdLmNvcmVfZnJlcXVlbmN5ICogMTAwMDsKLQkKKwkJcGVyZi0+c3RhdGUgPSAwOworCQlyZXR1cm4gcGVyZi0+c3RhdGVzWzBdLmNvcmVfZnJlcXVlbmN5ICogMTAwMDsKKwl9CiB9CiAKIAorLyoKKyAqIGFjcGlfY3B1ZnJlcV9lYXJseV9pbml0IC0gaW5pdGlhbGl6ZSBBQ1BJIFAtU3RhdGVzIGxpYnJhcnkKKyAqCisgKiBJbml0aWFsaXplIHRoZSBBQ1BJIFAtU3RhdGVzIGxpYnJhcnkgKGRyaXZlcnMvYWNwaS9wcm9jZXNzb3JfcGVyZmxpYi5jKQorICogaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGNvcnJlY3QgZnJlcXVlbmN5IGFuZCB2b2x0YWdlIHBhaXJpbmdzLiBXZSBjYW4KKyAqIGRvIF9QREMgYW5kIF9QU0QgYW5kIGZpbmQgb3V0IHRoZSBwcm9jZXNzb3IgZGVwZW5kZW5jeSBmb3IgdGhlCisgKiBhY3R1YWwgaW5pdCB0aGF0IHdpbGwgaGFwcGVuIGxhdGVyLi4uCisgKi8KK3N0YXRpYyBpbnQgYWNwaV9jcHVmcmVxX2Vhcmx5X2luaXRfYWNwaSh2b2lkKQoreworCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQkqZGF0YTsKKwl1bnNpZ25lZCBpbnQJCQkJaSwgajsKKworCWRwcmludGsoImFjcGlfY3B1ZnJlcV9lYXJseV9pbml0XG4iKTsKKworCWZvcl9lYWNoX2NwdShpKSB7CisJCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UpLCAKKwkJCUdGUF9LRVJORUwpOworCQlpZiAoIWRhdGEpIHsKKwkJCWZvcl9lYWNoX2NwdShqKSB7CisJCQkJa2ZyZWUoYWNwaV9wZXJmX2RhdGFbal0pOworCQkJCWFjcGlfcGVyZl9kYXRhW2pdID0gTlVMTDsKKwkJCX0KKwkJCXJldHVybiAoLUVOT01FTSk7CisJCX0KKwkJYWNwaV9wZXJmX2RhdGFbaV0gPSBkYXRhOworCX0KKworCS8qIERvIGluaXRpYWxpemF0aW9uIGluIEFDUEkgY29yZSAqLworCWFjcGlfcHJvY2Vzc29yX3ByZXJlZ2lzdGVyX3BlcmZvcm1hbmNlKGFjcGlfcGVyZl9kYXRhKTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludAogYWNwaV9jcHVmcmVxX2NwdV9pbml0ICgKIAlzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgICAqcG9saWN5KQpAQCAtMzAzLDQxICszOTgsNTEgQEAKIAlzdHJ1Y3QgY3B1ZnJlcV9hY3BpX2lvCSpkYXRhOwogCXVuc2lnbmVkIGludAkJcmVzdWx0ID0gMDsKIAlzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmY3B1X2RhdGFbcG9saWN5LT5jcHVdOworCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQkqcGVyZjsKIAogCWRwcmludGsoImFjcGlfY3B1ZnJlcV9jcHVfaW5pdFxuIik7CiAKKwlpZiAoIWFjcGlfcGVyZl9kYXRhW2NwdV0pCisJCXJldHVybiAoLUVOT0RFVik7CisKIAlkYXRhID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNwdWZyZXFfYWNwaV9pbyksIEdGUF9LRVJORUwpOwogCWlmICghZGF0YSkKIAkJcmV0dXJuICgtRU5PTUVNKTsKIAorCWRhdGEtPmFjcGlfZGF0YSA9IGFjcGlfcGVyZl9kYXRhW2NwdV07CiAJYWNwaV9pb19kYXRhW2NwdV0gPSBkYXRhOwogCi0JcmVzdWx0ID0gYWNwaV9wcm9jZXNzb3JfcmVnaXN0ZXJfcGVyZm9ybWFuY2UoJmRhdGEtPmFjcGlfZGF0YSwgY3B1KTsKKwlyZXN1bHQgPSBhY3BpX3Byb2Nlc3Nvcl9yZWdpc3Rlcl9wZXJmb3JtYW5jZShkYXRhLT5hY3BpX2RhdGEsIGNwdSk7CiAKIAlpZiAocmVzdWx0KQogCQlnb3RvIGVycl9mcmVlOwogCisJcGVyZiA9IGRhdGEtPmFjcGlfZGF0YTsKKwlwb2xpY3ktPmNwdXMgPSBwZXJmLT5zaGFyZWRfY3B1X21hcDsKKwlwb2xpY3ktPnNoYXJlZF90eXBlID0gcGVyZi0+c2hhcmVkX3R5cGU7CisKIAlpZiAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9DT05TVEFOVF9UU0MpKSB7CiAJCWFjcGlfY3B1ZnJlcV9kcml2ZXIuZmxhZ3MgfD0gQ1BVRlJFUV9DT05TVF9MT09QUzsKIAl9CiAKIAkvKiBjYXBhYmlsaXR5IGNoZWNrICovCi0JaWYgKGRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudCA8PSAxKSB7CisJaWYgKHBlcmYtPnN0YXRlX2NvdW50IDw9IDEpIHsKIAkJZHByaW50aygiTm8gUC1TdGF0ZXNcbiIpOwogCQlyZXN1bHQgPSAtRU5PREVWOwogCQlnb3RvIGVycl91bnJlZzsKIAl9Ci0JaWYgKChkYXRhLT5hY3BpX2RhdGEuY29udHJvbF9yZWdpc3Rlci5zcGFjZV9pZCAhPSBBQ1BJX0FEUl9TUEFDRV9TWVNURU1fSU8pIHx8Ci0JICAgIChkYXRhLT5hY3BpX2RhdGEuc3RhdHVzX3JlZ2lzdGVyLnNwYWNlX2lkICE9IEFDUElfQURSX1NQQUNFX1NZU1RFTV9JTykpIHsKKworCWlmICgocGVyZi0+Y29udHJvbF9yZWdpc3Rlci5zcGFjZV9pZCAhPSBBQ1BJX0FEUl9TUEFDRV9TWVNURU1fSU8pIHx8CisJICAgIChwZXJmLT5zdGF0dXNfcmVnaXN0ZXIuc3BhY2VfaWQgIT0gQUNQSV9BRFJfU1BBQ0VfU1lTVEVNX0lPKSkgewogCQlkcHJpbnRrKCJVbnN1cHBvcnRlZCBhZGRyZXNzIHNwYWNlIFslZCwgJWRdXG4iLAotCQkJKHUzMikgKGRhdGEtPmFjcGlfZGF0YS5jb250cm9sX3JlZ2lzdGVyLnNwYWNlX2lkKSwKLQkJCSh1MzIpIChkYXRhLT5hY3BpX2RhdGEuc3RhdHVzX3JlZ2lzdGVyLnNwYWNlX2lkKSk7CisJCQkodTMyKSAocGVyZi0+Y29udHJvbF9yZWdpc3Rlci5zcGFjZV9pZCksCisJCQkodTMyKSAocGVyZi0+c3RhdHVzX3JlZ2lzdGVyLnNwYWNlX2lkKSk7CiAJCXJlc3VsdCA9IC1FTk9ERVY7CiAJCWdvdG8gZXJyX3VucmVnOwogCX0KIAogCS8qIGFsbG9jIGZyZXFfdGFibGUgKi8KLQlkYXRhLT5mcmVxX3RhYmxlID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlKSAqIChkYXRhLT5hY3BpX2RhdGEuc3RhdGVfY291bnQgKyAxKSwgR0ZQX0tFUk5FTCk7CisJZGF0YS0+ZnJlcV90YWJsZSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSkgKiAocGVyZi0+c3RhdGVfY291bnQgKyAxKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFkYXRhLT5mcmVxX3RhYmxlKSB7CiAJCXJlc3VsdCA9IC1FTk9NRU07CiAJCWdvdG8gZXJyX3VucmVnOwpAQCAtMzQ1LDkgKzQ1MCw5IEBACiAKIAkvKiBkZXRlY3QgdHJhbnNpdGlvbiBsYXRlbmN5ICovCiAJcG9saWN5LT5jcHVpbmZvLnRyYW5zaXRpb25fbGF0ZW5jeSA9IDA7Ci0JZm9yIChpPTA7IGk8ZGF0YS0+YWNwaV9kYXRhLnN0YXRlX2NvdW50OyBpKyspIHsKLQkJaWYgKChkYXRhLT5hY3BpX2RhdGEuc3RhdGVzW2ldLnRyYW5zaXRpb25fbGF0ZW5jeSAqIDEwMDApID4gcG9saWN5LT5jcHVpbmZvLnRyYW5zaXRpb25fbGF0ZW5jeSkKLQkJCXBvbGljeS0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kgPSBkYXRhLT5hY3BpX2RhdGEuc3RhdGVzW2ldLnRyYW5zaXRpb25fbGF0ZW5jeSAqIDEwMDA7CisJZm9yIChpPTA7IGk8cGVyZi0+c3RhdGVfY291bnQ7IGkrKykgeworCQlpZiAoKHBlcmYtPnN0YXRlc1tpXS50cmFuc2l0aW9uX2xhdGVuY3kgKiAxMDAwKSA+IHBvbGljeS0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kpCisJCQlwb2xpY3ktPmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ID0gcGVyZi0+c3RhdGVzW2ldLnRyYW5zaXRpb25fbGF0ZW5jeSAqIDEwMDA7CiAJfQogCXBvbGljeS0+Z292ZXJub3IgPSBDUFVGUkVRX0RFRkFVTFRfR09WRVJOT1I7CiAKQEAgLTM1NSwxMSArNDYwLDExIEBACiAJcG9saWN5LT5jdXIgPSBhY3BpX2NwdWZyZXFfZ3Vlc3NfZnJlcShkYXRhLCBwb2xpY3ktPmNwdSk7CiAKIAkvKiB0YWJsZSBpbml0ICovCi0JZm9yIChpPTA7IGk8PWRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudDsgaSsrKQorCWZvciAoaT0wOyBpPD1wZXJmLT5zdGF0ZV9jb3VudDsgaSsrKQogCXsKIAkJZGF0YS0+ZnJlcV90YWJsZVtpXS5pbmRleCA9IGk7Ci0JCWlmIChpPGRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudCkKLQkJCWRhdGEtPmZyZXFfdGFibGVbaV0uZnJlcXVlbmN5ID0gZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSAqIDEwMDA7CisJCWlmIChpPHBlcmYtPnN0YXRlX2NvdW50KQorCQkJZGF0YS0+ZnJlcV90YWJsZVtpXS5mcmVxdWVuY3kgPSBwZXJmLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3kgKiAxMDAwOwogCQllbHNlCiAJCQlkYXRhLT5mcmVxX3RhYmxlW2ldLmZyZXF1ZW5jeSA9IENQVUZSRVFfVEFCTEVfRU5EOwogCX0KQEAgLTM3NCwxMiArNDc5LDEyIEBACiAKIAlwcmludGsoS0VSTl9JTkZPICJhY3BpLWNwdWZyZXE6IENQVSV1IC0gQUNQSSBwZXJmb3JtYW5jZSBtYW5hZ2VtZW50IGFjdGl2YXRlZC5cbiIsCiAJICAgICAgIGNwdSk7Ci0JZm9yIChpID0gMDsgaSA8IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudDsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBwZXJmLT5zdGF0ZV9jb3VudDsgaSsrKQogCQlkcHJpbnRrKCIgICAgICVjUCVkOiAlZCBNSHosICVkIG1XLCAlZCB1U1xuIiwKLQkJCShpID09IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZT8nKic6JyAnKSwgaSwKLQkJCSh1MzIpIGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3ksCi0JCQkodTMyKSBkYXRhLT5hY3BpX2RhdGEuc3RhdGVzW2ldLnBvd2VyLAotCQkJKHUzMikgZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpXS50cmFuc2l0aW9uX2xhdGVuY3kpOworCQkJKGkgPT0gcGVyZi0+c3RhdGU/JyonOicgJyksIGksCisJCQkodTMyKSBwZXJmLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3ksCisJCQkodTMyKSBwZXJmLT5zdGF0ZXNbaV0ucG93ZXIsCisJCQkodTMyKSBwZXJmLT5zdGF0ZXNbaV0udHJhbnNpdGlvbl9sYXRlbmN5KTsKIAogCWNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlX2dldF9hdHRyKGRhdGEtPmZyZXFfdGFibGUsIHBvbGljeS0+Y3B1KTsKIAkKQEAgLTM5NCw3ICs0OTksNyBAQAogIGVycl9mcmVxZnJlZToKIAlrZnJlZShkYXRhLT5mcmVxX3RhYmxlKTsKICBlcnJfdW5yZWc6Ci0JYWNwaV9wcm9jZXNzb3JfdW5yZWdpc3Rlcl9wZXJmb3JtYW5jZSgmZGF0YS0+YWNwaV9kYXRhLCBjcHUpOworCWFjcGlfcHJvY2Vzc29yX3VucmVnaXN0ZXJfcGVyZm9ybWFuY2UocGVyZiwgY3B1KTsKICBlcnJfZnJlZToKIAlrZnJlZShkYXRhKTsKIAlhY3BpX2lvX2RhdGFbY3B1XSA9IE5VTEw7CkBAIC00MTUsNyArNTIwLDcgQEAKIAlpZiAoZGF0YSkgewogCQljcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV9wdXRfYXR0cihwb2xpY3ktPmNwdSk7CiAJCWFjcGlfaW9fZGF0YVtwb2xpY3ktPmNwdV0gPSBOVUxMOwotCQlhY3BpX3Byb2Nlc3Nvcl91bnJlZ2lzdGVyX3BlcmZvcm1hbmNlKCZkYXRhLT5hY3BpX2RhdGEsIHBvbGljeS0+Y3B1KTsKKwkJYWNwaV9wcm9jZXNzb3JfdW5yZWdpc3Rlcl9wZXJmb3JtYW5jZShkYXRhLT5hY3BpX2RhdGEsIHBvbGljeS0+Y3B1KTsKIAkJa2ZyZWUoZGF0YSk7CiAJfQogCkBAIC00NjIsNyArNTY3LDEwIEBACiAKIAlkcHJpbnRrKCJhY3BpX2NwdWZyZXFfaW5pdFxuIik7CiAKLSAJcmVzdWx0ID0gY3B1ZnJlcV9yZWdpc3Rlcl9kcml2ZXIoJmFjcGlfY3B1ZnJlcV9kcml2ZXIpOworCXJlc3VsdCA9IGFjcGlfY3B1ZnJlcV9lYXJseV9pbml0X2FjcGkoKTsKKworCWlmICghcmVzdWx0KQorIAkJcmVzdWx0ID0gY3B1ZnJlcV9yZWdpc3Rlcl9kcml2ZXIoJmFjcGlfY3B1ZnJlcV9kcml2ZXIpOwogCQogCXJldHVybiAocmVzdWx0KTsKIH0KQEAgLTQ3MSwxMCArNTc5LDE1IEBACiBzdGF0aWMgdm9pZCBfX2V4aXQKIGFjcGlfY3B1ZnJlcV9leGl0ICh2b2lkKQogeworCXVuc2lnbmVkIGludAlpOwogCWRwcmludGsoImFjcGlfY3B1ZnJlcV9leGl0XG4iKTsKIAogCWNwdWZyZXFfdW5yZWdpc3Rlcl9kcml2ZXIoJmFjcGlfY3B1ZnJlcV9kcml2ZXIpOwogCisJZm9yX2VhY2hfY3B1KGkpIHsKKwkJa2ZyZWUoYWNwaV9wZXJmX2RhdGFbaV0pOworCQlhY3BpX3BlcmZfZGF0YVtpXSA9IE5VTEw7CisJfQogCXJldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9wb3dlcm5vdy1rOC5jIGIvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9wb3dlcm5vdy1rOC5jCmluZGV4IGI0Mjc3ZjUuLjJkNjQ5MTYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazguYworKysgYi9hcmNoL2kzODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmMKQEAgLTEyMCw3ICsxMjAsNyBAQAogewogCXUzMiBsbywgaGk7CiAKLQlpZiAoY3B1X2ZhbWlseSkKKwlpZiAoY3B1X2ZhbWlseSA9PSBDUFVfSFdfUFNUQVRFKQogCQlyZXR1cm4gMDsKIAogCXJkbXNyKE1TUl9GSURWSURfU1RBVFVTLCBsbywgaGkpOwpAQCAtMTM2LDcgKzEzNiw3IEBACiAJdTMyIGxvLCBoaTsKIAl1MzIgaSA9IDA7CiAKLQlpZiAoY3B1X2ZhbWlseSkgeworCWlmIChjcHVfZmFtaWx5ID09IENQVV9IV19QU1RBVEUpIHsKIAkJcmRtc3IoTVNSX1BTVEFURV9TVEFUVVMsIGxvLCBoaSk7CiAJCWkgPSBsbyAmIEhXX1BTVEFURV9NQVNLOwogCQlyZG1zcihNU1JfUFNUQVRFX0RFRl9CQVNFICsgaSwgbG8sIGhpKTsKQEAgLTU5OCw3ICs1OTgsNyBAQAogCWludCBqOwogCWZvciAoaiA9IDA7IGogPCBkYXRhLT5udW1wczsgaisrKSB7CiAJCWlmIChkYXRhLT5wb3dlcm5vd190YWJsZVtqXS5mcmVxdWVuY3kgIT0gQ1BVRlJFUV9FTlRSWV9JTlZBTElEKSB7Ci0JCQlpZiAoY3B1X2ZhbWlseSkgeworCQkJaWYgKGNwdV9mYW1pbHkgPT0gQ1BVX0hXX1BTVEFURSkgewogCQkJcHJpbnRrKEtFUk5fSU5GTyBQRlggIiAgICVkIDogZmlkIDB4JXggZ2lkIDB4JXggKCVkIE1IeilcbiIsIGosIChkYXRhLT5wb3dlcm5vd190YWJsZVtqXS5pbmRleCAmIDB4ZmYwMCkgPj4gOCwKIAkJCQkoZGF0YS0+cG93ZXJub3dfdGFibGVbal0uaW5kZXggJiAweGZmMDAwMCkgPj4gMTYsCiAJCQkJZGF0YS0+cG93ZXJub3dfdGFibGVbal0uZnJlcXVlbmN5LzEwMDApOwpAQCAtNzU4LDcgKzc1OCw3IEBACiAjaWZkZWYgQ09ORklHX1g4Nl9QT1dFUk5PV19LOF9BQ1BJCiBzdGF0aWMgdm9pZCBwb3dlcm5vd19rOF9hY3BpX3BzdF92YWx1ZXMoc3RydWN0IHBvd2Vybm93X2s4X2RhdGEgKmRhdGEsIHVuc2lnbmVkIGludCBpbmRleCkKIHsKLQlpZiAoIWRhdGEtPmFjcGlfZGF0YS5zdGF0ZV9jb3VudCB8fCBjcHVfZmFtaWx5KQorCWlmICghZGF0YS0+YWNwaV9kYXRhLnN0YXRlX2NvdW50IHx8IChjcHVfZmFtaWx5ID09IENQVV9IV19QU1RBVEUpKQogCQlyZXR1cm47CiAKIAlkYXRhLT5pcnQgPSAoZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpbmRleF0uY29udHJvbCA+PiBJUlRfU0hJRlQpICYgSVJUX01BU0s7CkBAIC04MDEsNyArODAxLDcgQEAKIAkJZ290byBlcnJfb3V0OwogCX0KIAotCWlmIChjcHVfZmFtaWx5KQorCWlmIChjcHVfZmFtaWx5ID09IENQVV9IV19QU1RBVEUpCiAJCXJldF92YWwgPSBmaWxsX3Bvd2Vybm93X3RhYmxlX3BzdGF0ZShkYXRhLCBwb3dlcm5vd190YWJsZSk7CiAJZWxzZQogCQlyZXRfdmFsID0gZmlsbF9wb3dlcm5vd190YWJsZV9maWR2aWQoZGF0YSwgcG93ZXJub3dfdGFibGUpOwpAQCAtODg1LDggKzg4NSw4IEBACiAJCXUzMiB2aWQ7CiAKIAkJaWYgKGRhdGEtPmV4dHR5cGUpIHsKLQkJCWZpZCA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbaV0uc3RhdHVzICYgRklEX01BU0s7Ci0JCQl2aWQgPSAoZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpXS5zdGF0dXMgPj4gVklEX1NISUZUKSAmIFZJRF9NQVNLOworCQkJZmlkID0gZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpXS5zdGF0dXMgJiBFWFRfRklEX01BU0s7CisJCQl2aWQgPSAoZGF0YS0+YWNwaV9kYXRhLnN0YXRlc1tpXS5zdGF0dXMgPj4gVklEX1NISUZUKSAmIEVYVF9WSURfTUFTSzsKIAkJfSBlbHNlIHsKIAkJCWZpZCA9IGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbaV0uY29udHJvbCAmIEZJRF9NQVNLOwogCQkJdmlkID0gKGRhdGEtPmFjcGlfZGF0YS5zdGF0ZXNbaV0uY29udHJvbCA+PiBWSURfU0hJRlQpICYgVklEX01BU0s7CkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCWlmIChxdWVyeV9jdXJyZW50X3ZhbHVlc193aXRoX3BlbmRpbmdfd2FpdChkYXRhKSkKIAkJZ290byBlcnJfb3V0OwogCi0JaWYgKGNwdV9mYW1pbHkpCisJaWYgKGNwdV9mYW1pbHkgPT0gQ1BVX0hXX1BTVEFURSkKIAkJZHByaW50aygidGFyZzogY3VyciBmaWQgMHgleCwgZGlkIDB4JXhcbiIsCiAJCQlkYXRhLT5jdXJyZmlkLCBkYXRhLT5jdXJydmlkKTsKIAllbHNlIHsKQEAgLTExMDMsNyArMTEwMyw3IEBACiAKIAlwb3dlcm5vd19rOF9hY3BpX3BzdF92YWx1ZXMoZGF0YSwgbmV3c3RhdGUpOwogCi0JaWYgKGNwdV9mYW1pbHkpCisJaWYgKGNwdV9mYW1pbHkgPT0gQ1BVX0hXX1BTVEFURSkKIAkJcmV0ID0gdHJhbnNpdGlvbl9mcmVxdWVuY3lfcHN0YXRlKGRhdGEsIG5ld3N0YXRlKTsKIAllbHNlCiAJCXJldCA9IHRyYW5zaXRpb25fZnJlcXVlbmN5X2ZpZHZpZChkYXRhLCBuZXdzdGF0ZSk7CkBAIC0xMTE1LDcgKzExMTUsNyBAQAogCX0KIAltdXRleF91bmxvY2soJmZpZHZpZF9tdXRleCk7CiAKLQlpZiAoY3B1X2ZhbWlseSkKKwlpZiAoY3B1X2ZhbWlseSA9PSBDUFVfSFdfUFNUQVRFKQogCQlwb2wtPmN1ciA9IGZpbmRfa2h6X2ZyZXFfZnJvbV9maWRkaWQoZGF0YS0+Y3VycmZpZCwgZGF0YS0+Y3VycmRpZCk7CiAJZWxzZQogCQlwb2wtPmN1ciA9IGZpbmRfa2h6X2ZyZXFfZnJvbV9maWQoZGF0YS0+Y3VycmZpZCk7CkBAIC0xMTYzLDcgKzExNjMsNyBAQAogCQkgKiBVc2UgdGhlIFBTQiBCSU9TIHN0cnVjdHVyZS4gVGhpcyBpcyBvbmx5IGF2YWlsYWJlIG9uCiAJCSAqIGFuIFVQIHZlcnNpb24sIGFuZCBpcyBkZXByZWNhdGVkIGJ5IEFNRC4KIAkJICovCi0JCWlmICgobnVtX29ubGluZV9jcHVzKCkgIT0gMSkgfHwgKG51bV9wb3NzaWJsZV9jcHVzKCkgIT0gMSkpIHsKKwkJaWYgKG51bV9vbmxpbmVfY3B1cygpICE9IDEpIHsKIAkJCXByaW50ayhLRVJOX0VSUiBQRlggIk1QIHN5c3RlbXMgbm90IHN1cHBvcnRlZCBieSBQU0IgQklPUyBzdHJ1Y3R1cmVcbiIpOwogCQkJa2ZyZWUoZGF0YSk7CiAJCQlyZXR1cm4gLUVOT0RFVjsKQEAgLTExOTcsMTQgKzExOTcsMTQgQEAKIAlpZiAocXVlcnlfY3VycmVudF92YWx1ZXNfd2l0aF9wZW5kaW5nX3dhaXQoZGF0YSkpCiAJCWdvdG8gZXJyX291dDsKIAotCWlmICghY3B1X2ZhbWlseSkKKwlpZiAoY3B1X2ZhbWlseSA9PSBDUFVfT1BURVJPTikKIAkJZmlkdmlkX21zcl9pbml0KCk7CiAKIAkvKiBydW4gb24gYW55IENQVSBhZ2FpbiAqLwogCXNldF9jcHVzX2FsbG93ZWQoY3VycmVudCwgb2xkbWFzayk7CiAKIAlwb2wtPmdvdmVybm9yID0gQ1BVRlJFUV9ERUZBVUxUX0dPVkVSTk9SOwotCWlmIChjcHVfZmFtaWx5KQorCWlmIChjcHVfZmFtaWx5ID09IENQVV9IV19QU1RBVEUpCiAJCXBvbC0+Y3B1cyA9IGNwdW1hc2tfb2ZfY3B1KHBvbC0+Y3B1KTsKIAllbHNlCiAJCXBvbC0+Y3B1cyA9IGNwdV9jb3JlX21hcFtwb2wtPmNwdV07CkBAIC0xMjE1LDcgKzEyMTUsNyBAQAogCXBvbC0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kgPSAoKChkYXRhLT5ydm8gKyA4KSAqIGRhdGEtPnZzdGFibGUgKiBWU1RfVU5JVFNfMjBVUykKIAkgICAgKyAoMyAqICgxIDw8IGRhdGEtPmlydCkgKiAxMCkpICogMTAwMDsKIAotCWlmIChjcHVfZmFtaWx5KQorCWlmIChjcHVfZmFtaWx5ID09IENQVV9IV19QU1RBVEUpCiAJCXBvbC0+Y3VyID0gZmluZF9raHpfZnJlcV9mcm9tX2ZpZGRpZChkYXRhLT5jdXJyZmlkLCBkYXRhLT5jdXJyZGlkKTsKIAllbHNlCiAJCXBvbC0+Y3VyID0gZmluZF9raHpfZnJlcV9mcm9tX2ZpZChkYXRhLT5jdXJyZmlkKTsKQEAgLTEyMzIsNyArMTIzMiw3IEBACiAKIAljcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV9nZXRfYXR0cihkYXRhLT5wb3dlcm5vd190YWJsZSwgcG9sLT5jcHUpOwogCi0JaWYgKGNwdV9mYW1pbHkpCisJaWYgKGNwdV9mYW1pbHkgPT0gQ1BVX0hXX1BTVEFURSkKIAkJZHByaW50aygiY3B1X2luaXQgZG9uZSwgY3VycmVudCBmaWQgMHgleCwgZGlkIDB4JXhcbiIsCiAJCQlkYXRhLT5jdXJyZmlkLCBkYXRhLT5jdXJyZGlkKTsKIAllbHNlCmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmggYi9hcmNoL2kzODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmgKaW5kZXggYmY4YWQ5ZS4uMGZiMmEzMCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9wb3dlcm5vdy1rOC5oCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazguaApAQCAtMTY5LDcgKzE2OSw5IEBACiAjZGVmaW5lIE1WU19NQVNLICAgICAgICAzCiAjZGVmaW5lIFZTVF9NQVNLICAgICAweDdmCiAjZGVmaW5lIFZJRF9NQVNLICAgICAweDFmCi0jZGVmaW5lIEZJRF9NQVNLICAgICAweDNmCisjZGVmaW5lIEZJRF9NQVNLICAgICAweDFmCisjZGVmaW5lIEVYVF9WSURfTUFTSyAweDNmCisjZGVmaW5lIEVYVF9GSURfTUFTSyAweDNmCiAKIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvc3BlZWRzdGVwLWNlbnRyaW5vLmMgYi9hcmNoL2kzODYva2VybmVsL2NwdS9jcHVmcmVxL3NwZWVkc3RlcC1jZW50cmluby5jCmluZGV4IGNlNTRmZjEuLjMxYzNhNWIgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvc3BlZWRzdGVwLWNlbnRyaW5vLmMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9zcGVlZHN0ZXAtY2VudHJpbm8uYwpAQCAtMiwxOSArMiwxNSBAQAogICogY3B1ZnJlcSBkcml2ZXIgZm9yIEVuaGFuY2VkIFNwZWVkU3RlcCwgYXMgZm91bmQgaW4gSW50ZWwncyBQZW50aXVtCiAgKiBNIChwYXJ0IG9mIHRoZSBDZW50cmlubyBjaGlwc2V0KS4KICAqCisgKiBTaW5jZSB0aGUgb3JpZ2luYWwgUGVudGl1bSBNLCBtb3N0IG5ldyBJbnRlbCBDUFVzIHN1cHBvcnQgRW5oYW5jZWQKKyAqIFNwZWVkU3RlcC4KKyAqCiAgKiBEZXNwaXRlIHRoZSAiU3BlZWRTdGVwIiBpbiB0aGUgbmFtZSwgdGhpcyBpcyBhbG1vc3QgZW50aXJlbHkgdW5saWtlCiAgKiB0cmFkaXRpb25hbCBTcGVlZFN0ZXAuCiAgKgogICogTW9kZWxsZWQgb24gc3BlZWRzdGVwLmMKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgSmVyZW15IEZpdHpoYXJkaW5nZSA8amVyZW15QGdvb3Aub3JnPgotICoKLSAqIFdBUk5JTkcgV0FSTklORyBXQVJOSU5HCi0gKgotICogVGhpcyBkcml2ZXIgbWFuaXB1bGF0ZXMgdGhlIFBFUkZfQ1RMIE1TUiwgd2hpY2ggaXMgb25seSBzb21ld2hhdAotICogZG9jdW1lbnRlZC4gIFdoaWxlIGl0IHNlZW1zIHRvIHdvcmsgb24gbXkgbGFwdG9wLCBpdCBoYXMgbm90IGJlZW4KLSAqIHRlc3RlZCBhbnl3aGVyZSBlbHNlLCBhbmQgaXQgbWF5IG5vdCB3b3JrIGZvciB5b3UsIGRvIHN0cmFuZ2UKLSAqIHRoaW5ncyBvciBzaW1wbHkgY3Jhc2guCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgpAQCAtMzYsNyArMzIsNyBAQAogI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+CiAKICNkZWZpbmUgUEZYCQkic3BlZWRzdGVwLWNlbnRyaW5vOiAiCi0jZGVmaW5lIE1BSU5UQUlORVIJIkplcmVteSBGaXR6aGFyZGluZ2UgPGplcmVteUBnb29wLm9yZz4iCisjZGVmaW5lIE1BSU5UQUlORVIJImNwdWZyZXFAbGlzdHMubGludXgub3JnLnVrIgogCiAjZGVmaW5lIGRwcmludGsobXNnLi4uKSBjcHVmcmVxX2RlYnVnX3ByaW50ayhDUFVGUkVRX0RFQlVHX0RSSVZFUiwgInNwZWVkc3RlcC1jZW50cmlubyIsIG1zZykKIApAQCAtMzUxLDcgKzM0NywzNiBAQAogCiAjaWZkZWYgQ09ORklHX1g4Nl9TUEVFRFNURVBfQ0VOVFJJTk9fQUNQSQogCi1zdGF0aWMgc3RydWN0IGFjcGlfcHJvY2Vzc29yX3BlcmZvcm1hbmNlIHA7CitzdGF0aWMgc3RydWN0IGFjcGlfcHJvY2Vzc29yX3BlcmZvcm1hbmNlICphY3BpX3BlcmZfZGF0YVtOUl9DUFVTXTsKKworLyoKKyAqIGNlbnRyaW5vX2NwdV9lYXJseV9pbml0X2FjcGkgLSBEbyB0aGUgcHJlcmVnaXN0ZXJpbmcgd2l0aCBBQ1BJIFAtU3RhdGVzCisgKiBsaWJyYXJ5CisgKgorICogQmVmb3JlIGRvaW5nIHRoZSBhY3R1YWwgaW5pdCwgd2UgbmVlZCB0byBkbyBfUFNEIHJlbGF0ZWQgc2V0dXAgd2hlbmV2ZXIKKyAqIHN1cHBvcnRlZCBieSB0aGUgQklPUy4gVGhlc2UgYXJlIGhhbmRsZWQgYnkgdGhpcyBlYXJseV9pbml0IHJvdXRpbmUuCisgKi8KK3N0YXRpYyBpbnQgY2VudHJpbm9fY3B1X2Vhcmx5X2luaXRfYWNwaSh2b2lkKQoreworCXVuc2lnbmVkIGludAlpLCBqOworCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQkqZGF0YTsKKworCWZvcl9lYWNoX2NwdShpKSB7CisJCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UpLCAKKwkJCQlHRlBfS0VSTkVMKTsKKwkJaWYgKCFkYXRhKSB7CisJCQlmb3JfZWFjaF9jcHUoaikgeworCQkJCWtmcmVlKGFjcGlfcGVyZl9kYXRhW2pdKTsKKwkJCQlhY3BpX3BlcmZfZGF0YVtqXSA9IE5VTEw7CisJCQl9CisJCQlyZXR1cm4gKC1FTk9NRU0pOworCQl9CisJCWFjcGlfcGVyZl9kYXRhW2ldID0gZGF0YTsKKwl9CisKKwlhY3BpX3Byb2Nlc3Nvcl9wcmVyZWdpc3Rlcl9wZXJmb3JtYW5jZShhY3BpX3BlcmZfZGF0YSk7CisJcmV0dXJuIDA7Cit9CiAKIC8qCiAgKiBjZW50cmlub19jcHVfaW5pdF9hY3BpIC0gcmVnaXN0ZXIgd2l0aCBBQ1BJIFAtU3RhdGVzIGxpYnJhcnkKQEAgLTM2NSw0NiArMzkwLDUxIEBACiAJdW5zaWduZWQgbG9uZwkJCWN1cl9mcmVxOwogCWludAkJCQlyZXN1bHQgPSAwLCBpOwogCXVuc2lnbmVkIGludAkJCWNwdSA9IHBvbGljeS0+Y3B1OworCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQkqcDsKKworCXAgPSBhY3BpX3BlcmZfZGF0YVtjcHVdOwogCiAJLyogcmVnaXN0ZXIgd2l0aCBBQ1BJIGNvcmUgKi8KLQlpZiAoYWNwaV9wcm9jZXNzb3JfcmVnaXN0ZXJfcGVyZm9ybWFuY2UoJnAsIGNwdSkpIHsKLQkJZHByaW50aygib2J0YWluaW5nIEFDUEkgZGF0YSBmYWlsZWRcbiIpOworCWlmIChhY3BpX3Byb2Nlc3Nvcl9yZWdpc3Rlcl9wZXJmb3JtYW5jZShwLCBjcHUpKSB7CisJCWRwcmludGsoUEZYICJvYnRhaW5pbmcgQUNQSSBkYXRhIGZhaWxlZFxuIik7CiAJCXJldHVybiAtRUlPOwogCX0KKwlwb2xpY3ktPmNwdXMgPSBwLT5zaGFyZWRfY3B1X21hcDsKKwlwb2xpY3ktPnNoYXJlZF90eXBlID0gcC0+c2hhcmVkX3R5cGU7CiAKIAkvKiB2ZXJpZnkgdGhlIGFjcGlfZGF0YSAqLwotCWlmIChwLnN0YXRlX2NvdW50IDw9IDEpIHsKKwlpZiAocC0+c3RhdGVfY291bnQgPD0gMSkgewogCQlkcHJpbnRrKCJObyBQLVN0YXRlc1xuIik7CiAJCXJlc3VsdCA9IC1FTk9ERVY7CiAJCWdvdG8gZXJyX3VucmVnOwogCX0KIAotCWlmICgocC5jb250cm9sX3JlZ2lzdGVyLnNwYWNlX2lkICE9IEFDUElfQURSX1NQQUNFX0ZJWEVEX0hBUkRXQVJFKSB8fAotCSAgICAocC5zdGF0dXNfcmVnaXN0ZXIuc3BhY2VfaWQgIT0gQUNQSV9BRFJfU1BBQ0VfRklYRURfSEFSRFdBUkUpKSB7CisJaWYgKChwLT5jb250cm9sX3JlZ2lzdGVyLnNwYWNlX2lkICE9IEFDUElfQURSX1NQQUNFX0ZJWEVEX0hBUkRXQVJFKSB8fAorCSAgICAocC0+c3RhdHVzX3JlZ2lzdGVyLnNwYWNlX2lkICE9IEFDUElfQURSX1NQQUNFX0ZJWEVEX0hBUkRXQVJFKSkgewogCQlkcHJpbnRrKCJJbnZhbGlkIGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVycyAoJXggLSAleClcbiIsCi0JCQlwLmNvbnRyb2xfcmVnaXN0ZXIuc3BhY2VfaWQsIHAuc3RhdHVzX3JlZ2lzdGVyLnNwYWNlX2lkKTsKKwkJCXAtPmNvbnRyb2xfcmVnaXN0ZXIuc3BhY2VfaWQsIHAtPnN0YXR1c19yZWdpc3Rlci5zcGFjZV9pZCk7CiAJCXJlc3VsdCA9IC1FSU87CiAJCWdvdG8gZXJyX3VucmVnOwogCX0KIAotCWZvciAoaT0wOyBpPHAuc3RhdGVfY291bnQ7IGkrKykgewotCQlpZiAocC5zdGF0ZXNbaV0uY29udHJvbCAhPSBwLnN0YXRlc1tpXS5zdGF0dXMpIHsKKwlmb3IgKGk9MDsgaTxwLT5zdGF0ZV9jb3VudDsgaSsrKSB7CisJCWlmIChwLT5zdGF0ZXNbaV0uY29udHJvbCAhPSBwLT5zdGF0ZXNbaV0uc3RhdHVzKSB7CiAJCQlkcHJpbnRrKCJEaWZmZXJlbnQgY29udHJvbCAoJWxsdSkgYW5kIHN0YXR1cyB2YWx1ZXMgKCVsbHUpXG4iLAotCQkJCXAuc3RhdGVzW2ldLmNvbnRyb2wsIHAuc3RhdGVzW2ldLnN0YXR1cyk7CisJCQkJcC0+c3RhdGVzW2ldLmNvbnRyb2wsIHAtPnN0YXRlc1tpXS5zdGF0dXMpOwogCQkJcmVzdWx0ID0gLUVJTlZBTDsKIAkJCWdvdG8gZXJyX3VucmVnOwogCQl9CiAKLQkJaWYgKCFwLnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSkgeworCQlpZiAoIXAtPnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSkgewogCQkJZHByaW50aygiWmVybyBjb3JlIGZyZXF1ZW5jeSBmb3Igc3RhdGUgJXVcbiIsIGkpOwogCQkJcmVzdWx0ID0gLUVJTlZBTDsKIAkJCWdvdG8gZXJyX3VucmVnOwogCQl9CiAKLQkJaWYgKHAuc3RhdGVzW2ldLmNvcmVfZnJlcXVlbmN5ID4gcC5zdGF0ZXNbMF0uY29yZV9mcmVxdWVuY3kpIHsKKwkJaWYgKHAtPnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSA+IHAtPnN0YXRlc1swXS5jb3JlX2ZyZXF1ZW5jeSkgewogCQkJZHByaW50aygiUCV1IGhhcyBsYXJnZXIgZnJlcXVlbmN5ICglbGx1KSB0aGFuIFAwICglbGx1KSwgc2tpcHBpbmdcbiIsIGksCi0JCQkJcC5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3ksIHAuc3RhdGVzWzBdLmNvcmVfZnJlcXVlbmN5KTsKLQkJCXAuc3RhdGVzW2ldLmNvcmVfZnJlcXVlbmN5ID0gMDsKKwkJCQlwLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3ksIHAtPnN0YXRlc1swXS5jb3JlX2ZyZXF1ZW5jeSk7CisJCQlwLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3kgPSAwOwogCQkJY29udGludWU7CiAJCX0KIAl9CkBAIC00MTYsMjYgKzQ0NiwyNiBAQAogCX0KIAogCWNlbnRyaW5vX21vZGVsW2NwdV0tPm1vZGVsX25hbWU9TlVMTDsKLQljZW50cmlub19tb2RlbFtjcHVdLT5tYXhfZnJlcSA9IHAuc3RhdGVzWzBdLmNvcmVfZnJlcXVlbmN5ICogMTAwMDsKKwljZW50cmlub19tb2RlbFtjcHVdLT5tYXhfZnJlcSA9IHAtPnN0YXRlc1swXS5jb3JlX2ZyZXF1ZW5jeSAqIDEwMDA7CiAJY2VudHJpbm9fbW9kZWxbY3B1XS0+b3BfcG9pbnRzID0gIGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSkgKgotCQkJCQkgICAgIChwLnN0YXRlX2NvdW50ICsgMSksIEdGUF9LRVJORUwpOworCQkJCQkgICAgIChwLT5zdGF0ZV9jb3VudCArIDEpLCBHRlBfS0VSTkVMKTsKICAgICAgICAgaWYgKCFjZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHMpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSAtRU5PTUVNOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyX2tmcmVlOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChpPTA7IGk8cC5zdGF0ZV9jb3VudDsgaSsrKSB7Ci0JCWNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tpXS5pbmRleCA9IHAuc3RhdGVzW2ldLmNvbnRyb2w7Ci0JCWNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tpXS5mcmVxdWVuY3kgPSBwLnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSAqIDEwMDA7CisgICAgICAgIGZvciAoaT0wOyBpPHAtPnN0YXRlX2NvdW50OyBpKyspIHsKKwkJY2VudHJpbm9fbW9kZWxbY3B1XS0+b3BfcG9pbnRzW2ldLmluZGV4ID0gcC0+c3RhdGVzW2ldLmNvbnRyb2w7CisJCWNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tpXS5mcmVxdWVuY3kgPSBwLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3kgKiAxMDAwOwogCQlkcHJpbnRrKCJhZGRpbmcgc3RhdGUgJWkgd2l0aCBmcmVxdWVuY3kgJXUgYW5kIGNvbnRyb2wgdmFsdWUgJTA0eFxuIiwgCiAJCQlpLCBjZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHNbaV0uZnJlcXVlbmN5LCBjZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHNbaV0uaW5kZXgpOwogCX0KLQljZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHNbcC5zdGF0ZV9jb3VudF0uZnJlcXVlbmN5ID0gQ1BVRlJFUV9UQUJMRV9FTkQ7CisJY2VudHJpbm9fbW9kZWxbY3B1XS0+b3BfcG9pbnRzW3AtPnN0YXRlX2NvdW50XS5mcmVxdWVuY3kgPSBDUFVGUkVRX1RBQkxFX0VORDsKIAogCWN1cl9mcmVxID0gZ2V0X2N1cl9mcmVxKGNwdSk7CiAKLQlmb3IgKGk9MDsgaTxwLnN0YXRlX2NvdW50OyBpKyspIHsKLQkJaWYgKCFwLnN0YXRlc1tpXS5jb3JlX2ZyZXF1ZW5jeSkgeworCWZvciAoaT0wOyBpPHAtPnN0YXRlX2NvdW50OyBpKyspIHsKKwkJaWYgKCFwLT5zdGF0ZXNbaV0uY29yZV9mcmVxdWVuY3kpIHsKIAkJCWRwcmludGsoInNraXBwaW5nIHN0YXRlICV1XG4iLCBpKTsKIAkJCWNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tpXS5mcmVxdWVuY3kgPSBDUFVGUkVRX0VOVFJZX0lOVkFMSUQ7CiAJCQljb250aW51ZTsKQEAgLTQ1MSw3ICs0ODEsNyBAQAogCQl9CiAKIAkJaWYgKGN1cl9mcmVxID09IGNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tpXS5mcmVxdWVuY3kpCi0JCQlwLnN0YXRlID0gaTsKKwkJCXAtPnN0YXRlID0gaTsKIAl9CiAKIAkvKiBub3RpZnkgQklPUyB0aGF0IHdlIGV4aXN0ICovCkBAIC00NjQsMTIgKzQ5NCwxMyBAQAogIGVycl9rZnJlZToKIAlrZnJlZShjZW50cmlub19tb2RlbFtjcHVdKTsKICBlcnJfdW5yZWc6Ci0JYWNwaV9wcm9jZXNzb3JfdW5yZWdpc3Rlcl9wZXJmb3JtYW5jZSgmcCwgY3B1KTsKLQlkcHJpbnRrKCJpbnZhbGlkIEFDUEkgZGF0YVxuIik7CisJYWNwaV9wcm9jZXNzb3JfdW5yZWdpc3Rlcl9wZXJmb3JtYW5jZShwLCBjcHUpOworCWRwcmludGsoUEZYICJpbnZhbGlkIEFDUEkgZGF0YVxuIik7CiAJcmV0dXJuIChyZXN1bHQpOwogfQogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGNlbnRyaW5vX2NwdV9pbml0X2FjcGkoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpIHsgcmV0dXJuIC1FTk9ERVY7IH0KK3N0YXRpYyBpbmxpbmUgaW50IGNlbnRyaW5vX2NwdV9lYXJseV9pbml0X2FjcGkodm9pZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKIHN0YXRpYyBpbnQgY2VudHJpbm9fY3B1X2luaXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpCkBAIC01NTUsMTAgKzU4NiwxNSBAQAogCiAjaWZkZWYgQ09ORklHX1g4Nl9TUEVFRFNURVBfQ0VOVFJJTk9fQUNQSQogCWlmICghY2VudHJpbm9fbW9kZWxbY3B1XS0+bW9kZWxfbmFtZSkgewotCQlkcHJpbnRrKCJ1bnJlZ2lzdGVyaW5nIGFuZCBmcmVlaW5nIEFDUEkgZGF0YVxuIik7Ci0JCWFjcGlfcHJvY2Vzc29yX3VucmVnaXN0ZXJfcGVyZm9ybWFuY2UoJnAsIGNwdSk7Ci0JCWtmcmVlKGNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50cyk7Ci0JCWtmcmVlKGNlbnRyaW5vX21vZGVsW2NwdV0pOworCQlzdGF0aWMgc3RydWN0IGFjcGlfcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpwOworCisJCWlmIChhY3BpX3BlcmZfZGF0YVtjcHVdKSB7CisJCQlwID0gYWNwaV9wZXJmX2RhdGFbY3B1XTsKKwkJCWRwcmludGsoInVucmVnaXN0ZXJpbmcgYW5kIGZyZWVpbmcgQUNQSSBkYXRhXG4iKTsKKwkJCWFjcGlfcHJvY2Vzc29yX3VucmVnaXN0ZXJfcGVyZm9ybWFuY2UocCwgY3B1KTsKKwkJCWtmcmVlKGNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50cyk7CisJCQlrZnJlZShjZW50cmlub19tb2RlbFtjcHVdKTsKKwkJfQogCX0KICNlbmRpZgogCkBAIC01OTIsNjMgKzYyOCwxMjggQEAKIAkJCSAgICB1bnNpZ25lZCBpbnQgcmVsYXRpb24pCiB7CiAJdW5zaWduZWQgaW50ICAgIG5ld3N0YXRlID0gMDsKLQl1bnNpZ25lZCBpbnQJbXNyLCBvbGRtc3IsIGgsIGNwdSA9IHBvbGljeS0+Y3B1OworCXVuc2lnbmVkIGludAltc3IsIG9sZG1zciA9IDAsIGggPSAwLCBjcHUgPSBwb2xpY3ktPmNwdTsKIAlzdHJ1Y3QgY3B1ZnJlcV9mcmVxcwlmcmVxczsKKwljcHVtYXNrX3QJCW9ubGluZV9wb2xpY3lfY3B1czsKIAljcHVtYXNrX3QJCXNhdmVkX21hc2s7Ci0JaW50CQkJcmV0dmFsOworCWNwdW1hc2tfdAkJc2V0X21hc2s7CisJY3B1bWFza190CQljb3ZlcmVkX2NwdXM7CisJaW50CQkJcmV0dmFsID0gMDsKKwl1bnNpZ25lZCBpbnQJCWosIGssIGZpcnN0X2NwdSwgdG1wOwogCi0JaWYgKGNlbnRyaW5vX21vZGVsW2NwdV0gPT0gTlVMTCkKKwlpZiAodW5saWtlbHkoY2VudHJpbm9fbW9kZWxbY3B1XSA9PSBOVUxMKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQkvKgotCSAqIFN1cHBvcnQgZm9yIFNNUCBzeXN0ZW1zLgotCSAqIE1ha2Ugc3VyZSB3ZSBhcmUgcnVubmluZyBvbiB0aGUgQ1BVIHRoYXQgd2FudHMgdG8gY2hhbmdlIGZyZXF1ZW5jeQotCSAqLworCWlmICh1bmxpa2VseShjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV90YXJnZXQocG9saWN5LAorCQkJY2VudHJpbm9fbW9kZWxbY3B1XS0+b3BfcG9pbnRzLAorCQkJdGFyZ2V0X2ZyZXEsCisJCQlyZWxhdGlvbiwKKwkJCSZuZXdzdGF0ZSkpKSB7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworI2lmZGVmIENPTkZJR19IT1RQTFVHX0NQVQorCS8qIGNwdWZyZXEgaG9sZHMgdGhlIGhvdHBsdWcgbG9jaywgc28gd2UgYXJlIHNhZmUgZnJvbSBoZXJlIG9uICovCisJY3B1c19hbmQob25saW5lX3BvbGljeV9jcHVzLCBjcHVfb25saW5lX21hcCwgcG9saWN5LT5jcHVzKTsKKyNlbHNlCisJb25saW5lX3BvbGljeV9jcHVzID0gcG9saWN5LT5jcHVzOworI2VuZGlmCisKIAlzYXZlZF9tYXNrID0gY3VycmVudC0+Y3B1c19hbGxvd2VkOwotCXNldF9jcHVzX2FsbG93ZWQoY3VycmVudCwgcG9saWN5LT5jcHVzKTsKLQlpZiAoIWNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCksIHBvbGljeS0+Y3B1cykpIHsKLQkJZHByaW50aygiY291bGRuJ3QgbGltaXQgdG8gQ1BVcyBpbiB0aGlzIGRvbWFpblxuIik7Ci0JCXJldHVybigtRUFHQUlOKTsKKwlmaXJzdF9jcHUgPSAxOworCWNwdXNfY2xlYXIoY292ZXJlZF9jcHVzKTsKKwlmb3JfZWFjaF9jcHVfbWFzayhqLCBvbmxpbmVfcG9saWN5X2NwdXMpIHsKKwkJLyoKKwkJICogU3VwcG9ydCBmb3IgU01QIHN5c3RlbXMuCisJCSAqIE1ha2Ugc3VyZSB3ZSBhcmUgcnVubmluZyBvbiBDUFUgdGhhdCB3YW50cyB0byBjaGFuZ2UgZnJlcQorCQkgKi8KKwkJY3B1c19jbGVhcihzZXRfbWFzayk7CisJCWlmIChwb2xpY3ktPnNoYXJlZF90eXBlID09IENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZKQorCQkJY3B1c19vcihzZXRfbWFzaywgc2V0X21hc2ssIG9ubGluZV9wb2xpY3lfY3B1cyk7CisJCWVsc2UKKwkJCWNwdV9zZXQoaiwgc2V0X21hc2spOworCisJCXNldF9jcHVzX2FsbG93ZWQoY3VycmVudCwgc2V0X21hc2spOworCQlpZiAodW5saWtlbHkoIWNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCksIHNldF9tYXNrKSkpIHsKKwkJCWRwcmludGsoImNvdWxkbid0IGxpbWl0IHRvIENQVXMgaW4gdGhpcyBkb21haW5cbiIpOworCQkJcmV0dmFsID0gLUVBR0FJTjsKKwkJCWlmIChmaXJzdF9jcHUpIHsKKwkJCQkvKiBXZSBoYXZlbid0IHN0YXJ0ZWQgdGhlIHRyYW5zaXRpb24geWV0LiAqLworCQkJCWdvdG8gbWlncmF0ZV9lbmQ7CisJCQl9CisJCQlicmVhazsKKwkJfQorCisJCW1zciA9IGNlbnRyaW5vX21vZGVsW2NwdV0tPm9wX3BvaW50c1tuZXdzdGF0ZV0uaW5kZXg7CisKKwkJaWYgKGZpcnN0X2NwdSkgeworCQkJcmRtc3IoTVNSX0lBMzJfUEVSRl9DVEwsIG9sZG1zciwgaCk7CisJCQlpZiAobXNyID09IChvbGRtc3IgJiAweGZmZmYpKSB7CisJCQkJZHByaW50aygibm8gY2hhbmdlIG5lZWRlZCAtIG1zciB3YXMgYW5kIG5lZWRzICIKKwkJCQkJInRvIGJlICV4XG4iLCBvbGRtc3IpOworCQkJCXJldHZhbCA9IDA7CisJCQkJZ290byBtaWdyYXRlX2VuZDsKKwkJCX0KKworCQkJZnJlcXMub2xkID0gZXh0cmFjdF9jbG9jayhvbGRtc3IsIGNwdSwgMCk7CisJCQlmcmVxcy5uZXcgPSBleHRyYWN0X2Nsb2NrKG1zciwgY3B1LCAwKTsKKworCQkJZHByaW50aygidGFyZ2V0PSVka0h6IG9sZD0lZCBuZXc9JWQgbXNyPSUwNHhcbiIsCisJCQkJdGFyZ2V0X2ZyZXEsIGZyZXFzLm9sZCwgZnJlcXMubmV3LCBtc3IpOworCisJCQlmb3JfZWFjaF9jcHVfbWFzayhrLCBvbmxpbmVfcG9saWN5X2NwdXMpIHsKKwkJCQlmcmVxcy5jcHUgPSBrOworCQkJCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLAorCQkJCQlDUFVGUkVRX1BSRUNIQU5HRSk7CisJCQl9CisKKwkJCWZpcnN0X2NwdSA9IDA7CisJCQkvKiBhbGwgYnV0IDE2IExTQiBhcmUgcmVzZXJ2ZWQsIHRyZWF0IHRoZW0gd2l0aCBjYXJlICovCisJCQlvbGRtc3IgJj0gfjB4ZmZmZjsKKwkJCW1zciAmPSAweGZmZmY7CisJCQlvbGRtc3IgfD0gbXNyOworCQl9CisKKwkJd3Jtc3IoTVNSX0lBMzJfUEVSRl9DVEwsIG9sZG1zciwgaCk7CisJCWlmIChwb2xpY3ktPnNoYXJlZF90eXBlID09IENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZKQorCQkJYnJlYWs7CisKKwkJY3B1X3NldChqLCBjb3ZlcmVkX2NwdXMpOwogCX0KIAotCWlmIChjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV90YXJnZXQocG9saWN5LCBjZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHMsIHRhcmdldF9mcmVxLAotCQkJCQkgICByZWxhdGlvbiwgJm5ld3N0YXRlKSkgewotCQlyZXR2YWwgPSAtRUlOVkFMOwotCQlnb3RvIG1pZ3JhdGVfZW5kOworCWZvcl9lYWNoX2NwdV9tYXNrKGssIG9ubGluZV9wb2xpY3lfY3B1cykgeworCQlmcmVxcy5jcHUgPSBrOworCQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZmcmVxcywgQ1BVRlJFUV9QT1NUQ0hBTkdFKTsKIAl9CiAKLQltc3IgPSBjZW50cmlub19tb2RlbFtjcHVdLT5vcF9wb2ludHNbbmV3c3RhdGVdLmluZGV4OwotCXJkbXNyKE1TUl9JQTMyX1BFUkZfQ1RMLCBvbGRtc3IsIGgpOworCWlmICh1bmxpa2VseShyZXR2YWwpKSB7CisJCS8qCisJCSAqIFdlIGhhdmUgZmFpbGVkIGhhbGZ3YXkgdGhyb3VnaCB0aGUgZnJlcXVlbmN5IGNoYW5nZS4KKwkJICogV2UgaGF2ZSBzZW50IGNhbGxiYWNrcyB0byBwb2xpY3ktPmNwdXMgYW5kCisJCSAqIE1TUnMgaGF2ZSBhbHJlYWR5IGJlZW4gd3JpdHRlbiBvbiBjb3ZlcmRfY3B1cy4KKwkJICogQmVzdCBlZmZvcnQgdW5kby4uCisJCSAqLwogCi0JaWYgKG1zciA9PSAob2xkbXNyICYgMHhmZmZmKSkgewotCQlyZXR2YWwgPSAwOwotCQlkcHJpbnRrKCJubyBjaGFuZ2UgbmVlZGVkIC0gbXNyIHdhcyBhbmQgbmVlZHMgdG8gYmUgJXhcbiIsIG9sZG1zcik7Ci0JCWdvdG8gbWlncmF0ZV9lbmQ7CisJCWlmICghY3B1c19lbXB0eShjb3ZlcmVkX2NwdXMpKSB7CisJCQlmb3JfZWFjaF9jcHVfbWFzayhqLCBjb3ZlcmVkX2NwdXMpIHsKKwkJCQlzZXRfY3B1c19hbGxvd2VkKGN1cnJlbnQsIGNwdW1hc2tfb2ZfY3B1KGopKTsKKwkJCQl3cm1zcihNU1JfSUEzMl9QRVJGX0NUTCwgb2xkbXNyLCBoKTsKKwkJCX0KKwkJfQorCisJCXRtcCA9IGZyZXFzLm5ldzsKKwkJZnJlcXMubmV3ID0gZnJlcXMub2xkOworCQlmcmVxcy5vbGQgPSB0bXA7CisJCWZvcl9lYWNoX2NwdV9tYXNrKGosIG9ubGluZV9wb2xpY3lfY3B1cykgeworCQkJZnJlcXMuY3B1ID0gajsKKwkJCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BSRUNIQU5HRSk7CisJCQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZmcmVxcywgQ1BVRlJFUV9QT1NUQ0hBTkdFKTsKKwkJfQogCX0KIAotCWZyZXFzLmNwdSA9IGNwdTsKLQlmcmVxcy5vbGQgPSBleHRyYWN0X2Nsb2NrKG9sZG1zciwgY3B1LCAwKTsKLQlmcmVxcy5uZXcgPSBleHRyYWN0X2Nsb2NrKG1zciwgY3B1LCAwKTsKLQotCWRwcmludGsoInRhcmdldD0lZGtIeiBvbGQ9JWQgbmV3PSVkIG1zcj0lMDR4XG4iLAotCQl0YXJnZXRfZnJlcSwgZnJlcXMub2xkLCBmcmVxcy5uZXcsIG1zcik7Ci0KLQljcHVmcmVxX25vdGlmeV90cmFuc2l0aW9uKCZmcmVxcywgQ1BVRlJFUV9QUkVDSEFOR0UpOwotCi0JLyogYWxsIGJ1dCAxNiBMU0IgYXJlICJyZXNlcnZlZCIsIHNvIHRyZWF0IHRoZW0gd2l0aAotCSAgIGNhcmUgKi8KLQlvbGRtc3IgJj0gfjB4ZmZmZjsKLQltc3IgJj0gMHhmZmZmOwotCW9sZG1zciB8PSBtc3I7Ci0KLQl3cm1zcihNU1JfSUEzMl9QRVJGX0NUTCwgb2xkbXNyLCBoKTsKLQotCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BPU1RDSEFOR0UpOwotCi0JcmV0dmFsID0gMDsKIG1pZ3JhdGVfZW5kOgogCXNldF9jcHVzX2FsbG93ZWQoY3VycmVudCwgc2F2ZWRfbWFzayk7Ci0JcmV0dXJuIChyZXR2YWwpOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgc3RydWN0IGZyZXFfYXR0ciogY2VudHJpbm9fYXR0cltdID0gewpAQCAtNjkwLDEyICs3OTEsMjUgQEAKIAlpZiAoIWNwdV9oYXMoY3B1LCBYODZfRkVBVFVSRV9FU1QpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAorCWNlbnRyaW5vX2NwdV9lYXJseV9pbml0X2FjcGkoKTsKKwogCXJldHVybiBjcHVmcmVxX3JlZ2lzdGVyX2RyaXZlcigmY2VudHJpbm9fZHJpdmVyKTsKIH0KIAogc3RhdGljIHZvaWQgX19leGl0IGNlbnRyaW5vX2V4aXQodm9pZCkKIHsKKyNpZmRlZiBDT05GSUdfWDg2X1NQRUVEU1RFUF9DRU5UUklOT19BQ1BJCisJdW5zaWduZWQgaW50IGo7CisjZW5kaWYKKwkKIAljcHVmcmVxX3VucmVnaXN0ZXJfZHJpdmVyKCZjZW50cmlub19kcml2ZXIpOworCisjaWZkZWYgQ09ORklHX1g4Nl9TUEVFRFNURVBfQ0VOVFJJTk9fQUNQSQorCWZvcl9lYWNoX2NwdShqKSB7CisJCWtmcmVlKGFjcGlfcGVyZl9kYXRhW2pdKTsKKwkJYWNwaV9wZXJmX2RhdGFbal0gPSBOVUxMOworCX0KKyNlbmRpZgogfQogCiBNT0RVTEVfQVVUSE9SICgiSmVyZW15IEZpdHpoYXJkaW5nZSA8amVyZW15QGdvb3Aub3JnPiIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3lyaXguYyBiL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L2N5cml4LmMKaW5kZXggMDBmMmUwNS4uZmMzMmM4MCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvY3lyaXguYworKysgYi9hcmNoL2kzODYva2VybmVsL2NwdS9jeXJpeC5jCkBAIC0xODQsNyArMTg0LDcgQEAKIAogCiAjaWZkZWYgQ09ORklHX1BDSQotc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIGN5cml4XzU1eDBbXSA9IHsKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX2luaXRkYXRhIGN5cml4XzU1eDBbXSA9IHsKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DWVJJWCwgUENJX0RFVklDRV9JRF9DWVJJWF81NTEwKSB9LAogCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NZUklYLCBQQ0lfREVWSUNFX0lEX0NZUklYXzU1MjApIH0sCiAJeyB9LApAQCAtMjcyLDE0ICsyNzIsMTUgQEAKIAogCQlwcmludGsoS0VSTl9JTkZPICJXb3JraW5nIGFyb3VuZCBDeXJpeCBNZWRpYUdYIHZpcnR1YWwgRE1BIGJ1Z3MuXG4iKTsKIAkJaXNhX2RtYV9icmlkZ2VfYnVnZ3kgPSAyOwotI2VuZGlmCQkKLQkJYy0+eDg2X2NhY2hlX3NpemU9MTY7CS8qIFllcCAxNksgaW50ZWdyYXRlZCBjYWNoZSB0aGF0cyBpdCAqLwotIAorCisKIAkJLyoKIAkJICogIFRoZSA1NTEwLzU1MjAgY29tcGFuaW9uIGNoaXBzIGhhdmUgYSBmdW5reSBQSVQuCiAJCSAqLyAgCiAJCWlmIChwY2lfZGV2X3ByZXNlbnQoY3lyaXhfNTV4MCkpCiAJCQlwaXRfbGF0Y2hfYnVnZ3kgPSAxOworI2VuZGlmCisJCWMtPng4Nl9jYWNoZV9zaXplPTE2OwkvKiBZZXAgMTZLIGludGVncmF0ZWQgY2FjaGUgdGhhdHMgaXQgKi8KIAogCQkvKiBHWG0gc3VwcG9ydHMgZXh0ZW5kZWQgY3B1aWQgbGV2ZWxzICdhbGEnIEFNRCAqLwogCQlpZiAoYy0+Y3B1aWRfbGV2ZWwgPT0gMikgewpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9jcHUvcHJvYy5jIGIvYXJjaC9pMzg2L2tlcm5lbC9jcHUvcHJvYy5jCmluZGV4IGY5NGNkYjcuLmExOWZjYjIgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvY3B1L3Byb2MuYworKysgYi9hcmNoL2kzODYva2VybmVsL2NwdS9wcm9jLmMKQEAgLTUyLDcgKzUyLDcgQEAKIAogCQkvKiBWSUEvQ3lyaXgvQ2VudGF1ci1kZWZpbmVkICovCiAJCU5VTEwsIE5VTEwsICJybmciLCAicm5nX2VuIiwgTlVMTCwgTlVMTCwgImFjZSIsICJhY2VfZW4iLAotCQlOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAorCQkiYWNlMiIsICJhY2UyX2VuIiwgInBoZSIsICJwaGVfZW4iLCAicG1tIiwgInBtbV9lbiIsIE5VTEwsIE5VTEwsCiAJCU5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCiAJCU5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCiAKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvaTM4Ny5jIGIvYXJjaC9pMzg2L2tlcm5lbC9pMzg3LmMKaW5kZXggZDc1NTI0Ny4uYzQzNTE5NyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9pMzg3LmMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9pMzg3LmMKQEAgLTI1LDcgKzI1LDcgQEAKICNkZWZpbmUgSEFWRV9IV0ZQIDEKICNlbmRpZgogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBteGNzcl9mZWF0dXJlX21hc2sgPSAweGZmZmZmZmZmOworc3RhdGljIHVuc2lnbmVkIGxvbmcgbXhjc3JfZmVhdHVyZV9tYXNrIF9fcmVhZF9tb3N0bHkgPSAweGZmZmZmZmZmOwogCiB2b2lkIG14Y3NyX2ZlYXR1cmVfbWFza19pbml0KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2k4MjU5LmMgYi9hcmNoL2kzODYva2VybmVsL2k4MjU5LmMKaW5kZXggMzIzZWY4YS4uYjc2MzZiOSAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2tlcm5lbC9pODI1OS5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvaTgyNTkuYwpAQCAtMjcxLDggKzI3MSw4IEBACiAJICogdGhlIGtlcm5lbCBpbml0aWFsaXphdGlvbiBjb2RlIGNhbiBnZXQgaXQKIAkgKiBvdXQgb2YuCiAJICovCi0Jb3V0YigweGZmLCAweDIxKTsJLyogbWFzayBhbGwgb2YgODI1OUEtMSAqLwotCW91dGIoMHhmZiwgMHhBMSk7CS8qIG1hc2sgYWxsIG9mIDgyNTlBLTEgKi8KKwlvdXRiKDB4ZmYsIFBJQ19NQVNURVJfSU1SKTsJLyogbWFzayBhbGwgb2YgODI1OUEtMSAqLworCW91dGIoMHhmZiwgUElDX1NMQVZFX0lNUik7CS8qIG1hc2sgYWxsIG9mIDgyNTlBLTEgKi8KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9pb19hcGljLmMgYi9hcmNoL2kzODYva2VybmVsL2lvX2FwaWMuYwppbmRleCBkNzBmMmFkLi5hNjJkZjNlIDEwMDY0NAotLS0gYS9hcmNoL2kzODYva2VybmVsL2lvX2FwaWMuYworKysgYi9hcmNoL2kzODYva2VybmVsL2lvX2FwaWMuYwpAQCAtMjY3LDcgKzI2Nyw3IEBACiAjIGluY2x1ZGUgPGxpbnV4L3NsYWIuaD4JCS8qIGttYWxsb2MoKSAqLwogIyBpbmNsdWRlIDxsaW51eC90aW1lci5oPgkvKiB0aW1lX2FmdGVyKCkgKi8KICAKLSMgaWZkZWYgQ09ORklHX0JBTEFOQ0VEX0lSUV9ERUJVRworI2lmZGVmIENPTkZJR19CQUxBTkNFRF9JUlFfREVCVUcKICMgIGRlZmluZSBURHByaW50ayh4Li4uKSBkbyB7IHByaW50aygiPCVsZDolczolZD46ICIsIGppZmZpZXMsIF9fRklMRV9fLCBfX0xJTkVfXyk7IHByaW50ayh4KTsgfSB3aGlsZSAoMCkKICMgIGRlZmluZSBEcHJpbnRrKHguLi4pIGRvIHsgVERwcmludGsoeCk7IH0gd2hpbGUgKDApCiAjIGVsc2UKQEAgLTI3NSwxMCArMjc1LDE1IEBACiAjICBkZWZpbmUgRHByaW50ayh4Li4uKSAKICMgZW5kaWYKIAotCiAjZGVmaW5lIElSUUJBTEFOQ0VfQ0hFQ0tfQVJDSCAtOTk5Ci1zdGF0aWMgaW50IGlycWJhbGFuY2VfZGlzYWJsZWQgPSBJUlFCQUxBTkNFX0NIRUNLX0FSQ0g7Ci1zdGF0aWMgaW50IHBoeXNpY2FsX2JhbGFuY2UgPSAwOworI2RlZmluZSBNQVhfQkFMQU5DRURfSVJRX0lOVEVSVkFMCSg1KkhaKQorI2RlZmluZSBNSU5fQkFMQU5DRURfSVJRX0lOVEVSVkFMCShIWi8yKQorI2RlZmluZSBCQUxBTkNFRF9JUlFfTU9SRV9ERUxUQQkJKEhaLzEwKQorI2RlZmluZSBCQUxBTkNFRF9JUlFfTEVTU19ERUxUQQkJKEhaKQorCitzdGF0aWMgaW50IGlycWJhbGFuY2VfZGlzYWJsZWQgX19yZWFkX21vc3RseSA9IElSUUJBTEFOQ0VfQ0hFQ0tfQVJDSDsKK3N0YXRpYyBpbnQgcGh5c2ljYWxfYmFsYW5jZSBfX3JlYWRfbW9zdGx5Oworc3RhdGljIGxvbmcgYmFsYW5jZWRfaXJxX2ludGVydmFsIF9fcmVhZF9tb3N0bHkgPSBNQVhfQkFMQU5DRURfSVJRX0lOVEVSVkFMOwogCiBzdGF0aWMgc3RydWN0IGlycV9jcHVfaW5mbyB7CiAJdW5zaWduZWQgbG9uZyAqIGxhc3RfaXJxOwpAQCAtMjk3LDEyICszMDIsMTQgQEAKIAogI2RlZmluZSBDUFVfVE9fUEFDS0FHRUlOREVYKGkpIChmaXJzdF9jcHUoY3B1X3NpYmxpbmdfbWFwW2ldKSkKIAotI2RlZmluZSBNQVhfQkFMQU5DRURfSVJRX0lOVEVSVkFMCSg1KkhaKQotI2RlZmluZSBNSU5fQkFMQU5DRURfSVJRX0lOVEVSVkFMCShIWi8yKQotI2RlZmluZSBCQUxBTkNFRF9JUlFfTU9SRV9ERUxUQQkJKEhaLzEwKQotI2RlZmluZSBCQUxBTkNFRF9JUlFfTEVTU19ERUxUQQkJKEhaKQorc3RhdGljIGNwdW1hc2tfdCBiYWxhbmNlX2lycV9hZmZpbml0eVtOUl9JUlFTXSA9IHsKKwlbMCAuLi4gTlJfSVJRUy0xXSA9IENQVV9NQVNLX0FMTAorfTsKIAotc3RhdGljIGxvbmcgYmFsYW5jZWRfaXJxX2ludGVydmFsID0gTUFYX0JBTEFOQ0VEX0lSUV9JTlRFUlZBTDsKK3ZvaWQgc2V0X2JhbGFuY2VfaXJxX2FmZmluaXR5KHVuc2lnbmVkIGludCBpcnEsIGNwdW1hc2tfdCBtYXNrKQoreworCWJhbGFuY2VfaXJxX2FmZmluaXR5W2lycV0gPSBtYXNrOworfQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBtb3ZlKGludCBjdXJyX2NwdSwgY3B1bWFza190IGFsbG93ZWRfbWFzaywKIAkJCXVuc2lnbmVkIGxvbmcgbm93LCBpbnQgZGlyZWN0aW9uKQpAQCAtMzQwLDcgKzM0Nyw3IEBACiAJaWYgKGlycWJhbGFuY2VfZGlzYWJsZWQpCiAJCXJldHVybjsgCiAKLQljcHVzX2FuZChhbGxvd2VkX21hc2ssIGNwdV9vbmxpbmVfbWFwLCBpcnFfYWZmaW5pdHlbaXJxXSk7CisJY3B1c19hbmQoYWxsb3dlZF9tYXNrLCBjcHVfb25saW5lX21hcCwgYmFsYW5jZV9pcnFfYWZmaW5pdHlbaXJxXSk7CiAJbmV3X2NwdSA9IG1vdmUoY3B1LCBhbGxvd2VkX21hc2ssIG5vdywgMSk7CiAJaWYgKGNwdSAhPSBuZXdfY3B1KSB7CiAJCXNldF9wZW5kaW5nX2lycShpcnEsIGNwdW1hc2tfb2ZfY3B1KG5ld19jcHUpKTsKQEAgLTUyOSw3ICs1MzYsOSBAQAogCQl9CiAJfQogCi0JY3B1c19hbmQoYWxsb3dlZF9tYXNrLCBjcHVfb25saW5lX21hcCwgaXJxX2FmZmluaXR5W3NlbGVjdGVkX2lycV0pOworCWNwdXNfYW5kKGFsbG93ZWRfbWFzaywKKwkJY3B1X29ubGluZV9tYXAsCisJCWJhbGFuY2VfaXJxX2FmZmluaXR5W3NlbGVjdGVkX2lycV0pOwogCXRhcmdldF9jcHVfbWFzayA9IGNwdW1hc2tfb2ZfY3B1KG1pbl9sb2FkZWQpOwogCWNwdXNfYW5kKHRtcCwgdGFyZ2V0X2NwdV9tYXNrLCBhbGxvd2VkX21hc2spOwogCmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2lycS5jIGIvYXJjaC9pMzg2L2tlcm5lbC9pcnEuYwppbmRleCBmM2E5Yzc4Li4yNDhlOTIyIDEwMDY0NAotLS0gYS9hcmNoL2kzODYva2VybmVsL2lycS5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvaXJxLmMKQEAgLTQyLDggKzQyLDggQEAKIAl1MzIgICAgICAgICAgICAgICAgICAgICBzdGFja1tUSFJFQURfU0laRS9zaXplb2YodTMyKV07CiB9OwogCi1zdGF0aWMgdW5pb24gaXJxX2N0eCAqaGFyZGlycV9jdHhbTlJfQ1BVU107Ci1zdGF0aWMgdW5pb24gaXJxX2N0eCAqc29mdGlycV9jdHhbTlJfQ1BVU107CitzdGF0aWMgdW5pb24gaXJxX2N0eCAqaGFyZGlycV9jdHhbTlJfQ1BVU10gX19yZWFkX21vc3RseTsKK3N0YXRpYyB1bmlvbiBpcnFfY3R4ICpzb2Z0aXJxX2N0eFtOUl9DUFVTXSBfX3JlYWRfbW9zdGx5OwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL2twcm9iZXMuYyBiL2FyY2gvaTM4Ni9rZXJuZWwva3Byb2Jlcy5jCmluZGV4IDM4ODA2ZjQuLjM5NWE5YTYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwva3Byb2Jlcy5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwva3Byb2Jlcy5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAlzdHJ1Y3QgZGllX2FyZ3MgKmFyZ3MgPSAoc3RydWN0IGRpZV9hcmdzICopZGF0YTsKIAlpbnQgcmV0ID0gTk9USUZZX0RPTkU7CiAKLQlpZiAoYXJncy0+cmVncyAmJiB1c2VyX21vZGUoYXJncy0+cmVncykpCisJaWYgKGFyZ3MtPnJlZ3MgJiYgdXNlcl9tb2RlX3ZtKGFyZ3MtPnJlZ3MpKQogCQlyZXR1cm4gcmV0OwogCiAJc3dpdGNoICh2YWwpIHsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9rZXJuZWwvbWljcm9jb2RlLmMgYi9hcmNoL2kzODYva2VybmVsL21pY3JvY29kZS5jCmluZGV4IGU3YzEzOGYuLjBhODY1ODggMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvbWljcm9jb2RlLmMKKysrIGIvYXJjaC9pMzg2L2tlcm5lbC9taWNyb2NvZGUuYwpAQCAtOTEsNyArOTEsMTAgQEAKIE1PRFVMRV9BVVRIT1IoIlRpZ3JhbiBBaXZhemlhbiA8dGlncmFuQHZlcml0YXMuY29tPiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi0jZGVmaW5lIE1JQ1JPQ09ERV9WRVJTSU9OIAkiMS4xNCIKK3N0YXRpYyBpbnQgdmVyYm9zZTsKK21vZHVsZV9wYXJhbSh2ZXJib3NlLCBpbnQsIDA2NDQpOworCisjZGVmaW5lIE1JQ1JPQ09ERV9WRVJTSU9OIAkiMS4xNGEiCiAKICNkZWZpbmUgREVGQVVMVF9VQ09ERV9EQVRBU0laRSAJKDIwMDApIAkgIC8qIDIwMDAgYnl0ZXMgKi8KICNkZWZpbmUgTUNfSEVBREVSX1NJWkUJCShzaXplb2YgKG1pY3JvY29kZV9oZWFkZXJfdCkpICAJICAvKiA0OCBieXRlcyAqLwpAQCAtMTIyLDE0ICsxMjUsMTUgQEAKIAogdHlwZWRlZiBlbnVtIG1jX2Vycm9yX2NvZGUgewogCU1DX1NVQ0NFU1MgCT0gMCwKLQlNQ19OT1RGT1VORCAJPSAxLAotCU1DX01BUktFRCAJPSAyLAotCU1DX0FMTE9DQVRFRCAJPSAzLAorCU1DX0lHTk9SRUQgCT0gMSwKKwlNQ19OT1RGT1VORCAJPSAyLAorCU1DX01BUktFRCAJPSAzLAorCU1DX0FMTE9DQVRFRCAJPSA0LAogfSBtY19lcnJvcl9jb2RlX3Q7CiAKIHN0YXRpYyBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gewogCXVuc2lnbmVkIGludCBzaWc7Ci0JdW5zaWduZWQgaW50IHBmOworCXVuc2lnbmVkIGludCBwZiwgb3JpZ19wZjsKIAl1bnNpZ25lZCBpbnQgcmV2OwogCXVuc2lnbmVkIGludCBja3N1bTsKIAltY19lcnJvcl9jb2RlX3QgZXJyOwpAQCAtMTY0LDYgKzE2OCw3IEBACiAJCQlyZG1zcihNU1JfSUEzMl9QTEFURk9STV9JRCwgdmFsWzBdLCB2YWxbMV0pOwogCQkJdWNpLT5wZiA9IDEgPDwgKCh2YWxbMV0gPj4gMTgpICYgNyk7CiAJCX0KKwkJdWNpLT5vcmlnX3BmID0gdWNpLT5wZjsKIAl9CiAKIAl3cm1zcihNU1JfSUEzMl9VQ09ERV9SRVYsIDAsIDApOwpAQCAtMTk3LDIxICsyMDIsMzQgQEAKIAlwcl9kZWJ1ZygiICAgQ2hlY2tzdW0gMHgleFxuIiwgY2tzdW0pOwogCiAJaWYgKG1jX2hlYWRlci0+cmV2IDwgdWNpLT5yZXYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IENQVSVkIG5vdCAndXBncmFkaW5nJyB0byBlYXJsaWVyIHJldmlzaW9uIgotCQkgICAgICAgIiAweCV4IChjdXJyZW50PTB4JXgpXG4iLCBjcHVfbnVtLCBtY19oZWFkZXItPnJldiwgdWNpLT5yZXYpOwotCQlnb3RvIG91dDsKKwkJaWYgKHVjaS0+ZXJyID09IE1DX05PVEZPVU5EKSB7CisJCQl1Y2ktPmVyciA9IE1DX0lHTk9SRUQ7CisJCQl1Y2ktPmNrc3VtID0gbWNfaGVhZGVyLT5yZXY7CisJCX0gZWxzZSBpZiAodWNpLT5lcnIgPT0gTUNfSUdOT1JFRCAmJiB1Y2ktPmNrc3VtIDwgbWNfaGVhZGVyLT5yZXYpCisJCQl1Y2ktPmNrc3VtID0gbWNfaGVhZGVyLT5yZXY7CiAJfSBlbHNlIGlmIChtY19oZWFkZXItPnJldiA9PSB1Y2ktPnJldikgewotCQkvKiBub3RpZnkgdGhlIGNhbGxlciBvZiBzdWNjZXNzIG9uIHRoaXMgY3B1ICovCi0JCXVjaS0+ZXJyID0gTUNfU1VDQ0VTUzsKLQkJZ290byBvdXQ7CisJCWlmICh1Y2ktPmVyciA8IE1DX01BUktFRCkgeworCQkJLyogbm90aWZ5IHRoZSBjYWxsZXIgb2Ygc3VjY2VzcyBvbiB0aGlzIGNwdSAqLworCQkJdWNpLT5lcnIgPSBNQ19TVUNDRVNTOworCQl9CisJfSBlbHNlIGlmICh1Y2ktPmVyciAhPSBNQ19BTExPQ0FURUQgfHwgbWNfaGVhZGVyLT5yZXYgPiB1Y2ktPm1jLT5oZHIucmV2KSB7CisJCXByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0Y2hpbmcgbWljcm9jb2RlIHVwZGF0ZSB3aXRoICIKKwkJCSIgcmV2aXNpb24gMHgleCAoY3VycmVudD0weCV4KVxuIiwgY3B1X251bSwgbWNfaGVhZGVyLT5yZXYsIHVjaS0+cmV2KTsKKwkJdWNpLT5ja3N1bSA9IGNrc3VtOworCQl1Y2ktPnBmID0gcGY7IC8qIGtlZXAgdGhlIG9yaWdpbmFsIG1jIHBmIGZvciBja3N1bSBjYWxjdWxhdGlvbiAqLworCQl1Y2ktPmVyciA9IE1DX01BUktFRDsgLyogZm91bmQgdGhlIG1hdGNoICovCisJCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1X251bSkgeworCQkJaWYgKHVjb2RlX2NwdV9pbmZvICsgY3B1X251bSAhPSB1Y2kKKwkJCSAgICAmJiB1Y29kZV9jcHVfaW5mb1tjcHVfbnVtXS5tYyA9PSB1Y2ktPm1jKSB7CisJCQkJdWNpLT5tYyA9IE5VTEw7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKHVjaS0+bWMgIT0gTlVMTCkgeworCQkJdmZyZWUodWNpLT5tYyk7CisJCQl1Y2ktPm1jID0gTlVMTDsKKwkJfQogCX0KLQotCXByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0Y2hpbmcgbWljcm9jb2RlIHVwZGF0ZSB3aXRoICIKLQkJIiByZXZpc2lvbiAweCV4IChjdXJyZW50PTB4JXgpXG4iLCBjcHVfbnVtLCBtY19oZWFkZXItPnJldiwgdWNpLT5yZXYpOwotCXVjaS0+Y2tzdW0gPSBja3N1bTsKLQl1Y2ktPnBmID0gcGY7IC8qIGtlZXAgdGhlIG9yaWdpbmFsIG1jIHBmIGZvciBja3N1bSBjYWxjdWxhdGlvbiAqLwotCXVjaS0+ZXJyID0gTUNfTUFSS0VEOyAvKiBmb3VuZCB0aGUgbWF0Y2ggKi8KLW91dDoKIAlyZXR1cm47CiB9CiAKQEAgLTI1MywxMCArMjcxLDggQEAKIAogCQlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdV9udW0pIHsKIAkJCXN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNpID0gdWNvZGVfY3B1X2luZm8gKyBjcHVfbnVtOwotCQkJaWYgKHVjaS0+ZXJyICE9IE1DX05PVEZPVU5EKSAvKiBhbHJlYWR5IGZvdW5kIGEgbWF0Y2ggb3Igbm90IGFuIG9ubGluZSBjcHUqLwotCQkJCWNvbnRpbnVlOwogCi0JCQlpZiAoc2lnbWF0Y2gobWNfaGVhZGVyLnNpZywgdWNpLT5zaWcsIG1jX2hlYWRlci5wZiwgdWNpLT5wZikpCisJCQlpZiAoc2lnbWF0Y2gobWNfaGVhZGVyLnNpZywgdWNpLT5zaWcsIG1jX2hlYWRlci5wZiwgdWNpLT5vcmlnX3BmKSkKIAkJCQltYXJrX21pY3JvY29kZV91cGRhdGUoY3B1X251bSwgJm1jX2hlYWRlciwgbWNfaGVhZGVyLnNpZywgbWNfaGVhZGVyLnBmLCBtY19oZWFkZXIuY2tzdW0pOwogCQl9CiAKQEAgLTI5NSw5ICszMTEsOCBAQAogCQkJCX0KIAkJCQlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdV9udW0pIHsKIAkJCQkJc3RydWN0IHVjb2RlX2NwdV9pbmZvICp1Y2kgPSB1Y29kZV9jcHVfaW5mbyArIGNwdV9udW07Ci0JCQkJCWlmICh1Y2ktPmVyciAhPSBNQ19OT1RGT1VORCkgLyogYWxyZWFkeSBmb3VuZCBhIG1hdGNoIG9yIG5vdCBhbiBvbmxpbmUgY3B1Ki8KLQkJCQkJCWNvbnRpbnVlOwotCQkJCQlpZiAoc2lnbWF0Y2goZXh0X3NpZy5zaWcsIHVjaS0+c2lnLCBleHRfc2lnLnBmLCB1Y2ktPnBmKSkgeworCisJCQkJCWlmIChzaWdtYXRjaChleHRfc2lnLnNpZywgdWNpLT5zaWcsIGV4dF9zaWcucGYsIHVjaS0+b3JpZ19wZikpIHsKIAkJCQkJCW1hcmtfbWljcm9jb2RlX3VwZGF0ZShjcHVfbnVtLCAmbWNfaGVhZGVyLCBleHRfc2lnLnNpZywgZXh0X3NpZy5wZiwgZXh0X3NpZy5ja3N1bSk7CiAJCQkJCX0KIAkJCQl9CkBAIC0zNjgsNiArMzgzLDEzIEBACiAJc3RydWN0IHVjb2RlX2NwdV9pbmZvICp1Y2kgPSB1Y29kZV9jcHVfaW5mbyArIGNwdV9udW07CiAKIAlpZiAodWNpLT5tYyA9PSBOVUxMKSB7CisJCWlmICh2ZXJib3NlKSB7CisJCQlpZiAodWNpLT5lcnIgPT0gTUNfU1VDQ0VTUykKKwkJCQlwcmludGsoS0VSTl9JTkZPICJtaWNyb2NvZGU6IENQVSVkIGFscmVhZHkgYXQgcmV2aXNpb24gMHgleFxuIiwKKwkJCQkJY3B1X251bSwgdWNpLT5yZXYpOworCQkJZWxzZQorCQkJCXByaW50ayhLRVJOX0lORk8gIm1pY3JvY29kZTogTm8gbmV3IG1pY3JvY29kZSBkYXRhIGZvciBDUFUlZFxuIiwgY3B1X251bSk7CisJCX0KIAkJcmV0dXJuOwogCX0KIApAQCAtNDI2LDYgKzQ0OCw5IEBACiAJCQkJCXVjb2RlX2NwdV9pbmZvW2pdLm1jID0gTlVMTDsKIAkJCX0KIAkJfQorCQlpZiAodWNvZGVfY3B1X2luZm9baV0uZXJyID09IE1DX0lHTk9SRUQgJiYgdmVyYm9zZSkKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIm1pY3JvY29kZTogQ1BVJWQgbm90ICd1cGdyYWRpbmcnIHRvIGVhcmxpZXIgcmV2aXNpb24iCisJCQkgICAgICAgIiAweCV4IChjdXJyZW50PTB4JXgpXG4iLCBpLCB1Y29kZV9jcHVfaW5mb1tpXS5ja3N1bSwgdWNvZGVfY3B1X2luZm9baV0ucmV2KTsKIAl9CiBvdXQ6CiAJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jIGIvYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jCmluZGV4IGRkNmIwZTMuLmU2MDIzOTcgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL2kzODYva2VybmVsL3NldHVwLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9jcmFzaF9kdW1wLmg+CiAjaW5jbHVkZSA8bGludXgvZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvcGZuLmg+CisjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgogCiAjaW5jbHVkZSA8dmlkZW8vZWRpZC5oPgogCkBAIC0xNDM0LDYgKzE0MzUsMTExIEBACiBzdGF0aWMgdm9pZCBzZXRfbWNhX2J1cyhpbnQgeCkgeyB9CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19TT0ZUV0FSRV9TVVNQRU5ECitzdGF0aWMgdm9pZCBfX2luaXQgbWFya19ub3NhdmVfcGFnZV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwl3aGlsZSAoc3RhcnQgPD0gZW5kKSB7CisJCXBhZ2UgPSBwZm5fdG9fcGFnZShzdGFydCk7CisJCVNldFBhZ2VOb3NhdmUocGFnZSk7CisJCXN0YXJ0Kys7CisJfQorfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZTgyMF9ub3NhdmVfcmVzZXJ2ZWRfcGFnZXModm9pZCkKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBsb25nIHJfc3RhcnQgPSAwLCByX2VuZCA9IDA7CisKKwkvKiBBc3N1bWUgZTgyMCBtYXAgaXMgc29ydGVkICovCisJZm9yIChpID0gMDsgaSA8IGU4MjAubnJfbWFwOyBpKyspIHsKKwkJc3RydWN0IGU4MjBlbnRyeSAqZWkgPSAmZTgyMC5tYXBbaV07CisJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKworCQlzdGFydCA9IFBGTl9ET1dOKGVpLT5hZGRyKTsKKwkJZW5kID0gUEZOX1VQKGVpLT5hZGRyICsgZWktPnNpemUpOworCQlpZiAoc3RhcnQgPj0gZW5kKQorCQkJY29udGludWU7CisJCWlmIChlaS0+dHlwZSA9PSBFODIwX1JFU0VSVkVEKQorCQkJY29udGludWU7CisJCXJfZW5kID0gc3RhcnQ7CisJCS8qCisJCSAqIEhpZ2htZW0gJ1Jlc2VydmVkJyBwYWdlcyBhcmUgbWFya2VkIGFzIHJlc2VydmVkLCBzd3N1c3AKKwkJICogd2lsbCBub3Qgc2F2ZS9yZXN0b3JlIHRoZW0sIHNvIHdlIGlnbm9yZSB0aGVzZSBwYWdlcyBoZXJlLgorCQkgKi8KKwkJaWYgKHJfZW5kID4gbWF4X2xvd19wZm4pCisJCQlyX2VuZCA9IG1heF9sb3dfcGZuOworCQlpZiAocl9lbmQgPiByX3N0YXJ0KQorCQkJbWFya19ub3NhdmVfcGFnZV9yYW5nZShyX3N0YXJ0LCByX2VuZC0xKTsKKwkJaWYgKHJfZW5kID49IG1heF9sb3dfcGZuKQorCQkJYnJlYWs7CisJCXJfc3RhcnQgPSBlbmQ7CisJfQorfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZTgyMF9zYXZlX2FjcGlfcGFnZXModm9pZCkKK3sKKwlpbnQgaTsKKworCS8qIEFzc3VtZSBlODIwIG1hcCBpcyBzb3J0ZWQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgZTgyMC5ucl9tYXA7IGkrKykgeworCQlzdHJ1Y3QgZTgyMGVudHJ5ICplaSA9ICZlODIwLm1hcFtpXTsKKwkJdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOworCisJCXN0YXJ0ID0gZWktPmFkZHI7CisJCWVuZCA9IGVpLT5hZGRyICsgZWktPnNpemU7CisJCWlmIChzdGFydCA+PSBlbmQpCisJCQljb250aW51ZTsKKwkJaWYgKGVpLT50eXBlICE9IEU4MjBfQUNQSSAmJiBlaS0+dHlwZSAhPSBFODIwX05WUykKKwkJCWNvbnRpbnVlOworCQkvKgorCQkgKiBJZiB0aGUgcmVnaW9uIGlzIGJlbG93IG1heF9sb3dfcGZuLCBpdCB3aWxsIGJlCisJCSAqIHNhdmVkL3Jlc3RvcmVkIGJ5IHN3c3VzcCBmb2xsb3cgJ1JBTScgdHlwZS4KKwkJICovCisJCWlmIChzdGFydCA8IChtYXhfbG93X3BmbiA8PCBQQUdFX1NISUZUKSkKKwkJCXN0YXJ0ID0gbWF4X2xvd19wZm4gPDwgUEFHRV9TSElGVDsKKwkJLyoKKwkJICogSGlnaG1lbSBwYWdlcyAoQUNQSSBOVlMvRGF0YSkgYXJlIHJlc2VydmVkLCBidXQgc3dzdXNwCisJCSAqIGhpZ2htZW0gc2F2ZS9yZXN0b3JlIHdpbGwgbm90IHNhdmUvcmVzdG9yZSB0aGVtLiBXZSBtYXJrZWQKKwkJICogdGhlbSBhcyBhcmNoIHNhdmVhYmxlIHBhZ2VzIGhlcmUKKwkJICovCisJCWlmIChlbmQgPiBzdGFydCkKKwkJCXN3c3VzcF9hZGRfYXJjaF9wYWdlcyhzdGFydCwgZW5kKTsKKwl9Cit9CisKK2V4dGVybiBjaGFyIF9fc3RhcnRfcm9kYXRhLCBfX2VuZF9yb2RhdGE7CisvKgorICogQklPUyByZXNlcnZlZCByZWdpb24vaG9sZSAtIG5vIHNhdmUvcmVzdG9yZQorICogQUNQSSBOVlMgLSBzYXZlL3Jlc3RvcmUKKyAqIEFDUEkgRGF0YSAtIHRoaXMgaXMgYSBsaXR0bGUgdHJpY2t5LCB0aGUgbWVtIGNvdWxkIGJlIHVzZWQgYnkgT1MgYWZ0ZXIgT1MKKyAqIHJlYWRzIHRhYmxlcyBmcm9tIHRoZSByZWdpb24sIGJ1dCBhbnl3YXkgc2F2ZS9yZXN0b3JlIHRoZSBtZW1vcnkgaGFzbid0IGFueQorICogc2lkZSBlZmZlY3QgYW5kIExpbnV4IHJ1bnRpbWUgbW9kdWxlIGxvYWQvdW5sb2FkIG1pZ2h0IHVzZSBpdC4KKyAqIGtlcm5lbCByb2RhdGEgLSBubyBzYXZlL3Jlc3RvcmUgKGtlcm5lbCByb2RhdGEgaXNuJ3QgY2hhbmdlZCkKKyAqLworc3RhdGljIGludCBfX2luaXQgbWFya19ub3NhdmVfcGFnZXModm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHBmbl9zdGFydCwgcGZuX2VuZDsKKworCS8qIEZJWE1FOiBwcm92aWRlIGEgdmVyc2lvbiBmb3IgZWZpIEJJT1MgKi8KKwlpZiAoZWZpX2VuYWJsZWQpCisJCXJldHVybiAwOworCS8qIEJJT1MgcmVzZXJ2ZWQgcmVnaW9ucyAmIGhvbGVzICovCisJZTgyMF9ub3NhdmVfcmVzZXJ2ZWRfcGFnZXMoKTsKKworCS8qIGtlcm5lbCByb2RhdGEgKi8KKwlwZm5fc3RhcnQgPSBQRk5fVVAodmlydF90b19waHlzKCZfX3N0YXJ0X3JvZGF0YSkpOworCXBmbl9lbmQgPSBQRk5fRE9XTih2aXJ0X3RvX3BoeXMoJl9fZW5kX3JvZGF0YSkpOworCW1hcmtfbm9zYXZlX3BhZ2VfcmFuZ2UocGZuX3N0YXJ0LCBwZm5fZW5kLTEpOworCisJLyogcmVjb3JkIEFDUEkgRGF0YS9OVlMgYXMgc2F2ZWFibGUgKi8KKwllODIwX3NhdmVfYWNwaV9wYWdlcygpOworCisJcmV0dXJuIDA7Cit9Citjb3JlX2luaXRjYWxsKG1hcmtfbm9zYXZlX3BhZ2VzKTsKKyNlbmRpZgorCiAvKgogICogRGV0ZXJtaW5lIGlmIHdlIHdlcmUgbG9hZGVkIGJ5IGFuIEVGSSBsb2FkZXIuICBJZiBzbywgdGhlbiB3ZSBoYXZlIGFsc28gYmVlbgogICogcGFzc2VkIHRoZSBlZmkgbWVtbWFwLCBzeXN0YWIsIGV0Yy4sIHNvIHdlIHNob3VsZCB1c2UgdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzCmRpZmYgLS1naXQgYS9hcmNoL2kzODYva2VybmVsL3NyYXQuYyBiL2FyY2gvaTM4Ni9rZXJuZWwvc3JhdC5jCmluZGV4IDUyYjNlZDUuLjk4OWM4NTIgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvc3JhdC5jCisrKyBiL2FyY2gvaTM4Ni9rZXJuZWwvc3JhdC5jCkBAIC0zOSw3ICszOSw2IEBACiAjZGVmaW5lIE5PREVfQVJSQVlfT0ZGU0VUKHgpCSgoeCkgJSA4KQkvKiA4IGJpdHMvY2hhciAqLwogI2RlZmluZSBCTUFQX1NFVChibWFwLCBiaXQpCSgoYm1hcClbTk9ERV9BUlJBWV9JTkRFWChiaXQpXSB8PSAxIDw8IE5PREVfQVJSQVlfT0ZGU0VUKGJpdCkpCiAjZGVmaW5lIEJNQVBfVEVTVChibWFwLCBiaXQpCSgoYm1hcClbTk9ERV9BUlJBWV9JTkRFWChiaXQpXSAmICgxIDw8IE5PREVfQVJSQVlfT0ZGU0VUKGJpdCkpKQotI2RlZmluZSBNQVhfUFhNX0RPTUFJTlMJCTI1NgkvKiAxIGJ5dGUgYW5kIG5vIHByb21pc2VzIGFib3V0IHZhbHVlcyAqLwogLyogYml0bWFwIGxlbmd0aDsgX1BYTSBpcyBhdCBtb3N0IDI1NSAqLwogI2RlZmluZSBQWE1fQklUTUFQX0xFTiAoTUFYX1BYTV9ET01BSU5TIC8gOCkgCiBzdGF0aWMgdTggcHhtX2JpdG1hcFtQWE1fQklUTUFQX0xFTl07CS8qIGJpdG1hcCBvZiBwcm94aW1pdHkgZG9tYWlucyAqLwpAQCAtMjEzLDE5ICsyMTIsMTEgQEAKIAkJbm9kZV9lbmRfcGZuW25pZF0gPSBtZW1vcnlfY2h1bmstPmVuZF9wZm47CiB9CiAKLXN0YXRpYyB1OCBweG1fdG9fbmlkX21hcFtNQVhfUFhNX0RPTUFJTlNdOy8qIF9QWE0gdG8gbG9naWNhbCBub2RlIElEIG1hcCAqLwotCi1pbnQgcHhtX3RvX25vZGUoaW50IHB4bSkKLXsKLQlyZXR1cm4gcHhtX3RvX25pZF9tYXBbcHhtXTsKLX0KLQogLyogUGFyc2UgdGhlIEFDUEkgU3RhdGljIFJlc291cmNlIEFmZmluaXR5IFRhYmxlICovCiBzdGF0aWMgaW50IF9faW5pdCBhY3BpMjBfcGFyc2Vfc3JhdChzdHJ1Y3QgYWNwaV90YWJsZV9zcmF0ICpzcmF0cCkKIHsKIAl1OCAqc3RhcnQsICplbmQsICpwOwogCWludCBpLCBqLCBuaWQ7Ci0JdTggbmlkX3RvX3B4bV9tYXBbTUFYX05VTU5PREVTXTsvKiBsb2dpY2FsIG5vZGUgSUQgdG8gX1BYTSBtYXAgKi8KIAogCXN0YXJ0ID0gKHU4ICopKCYoc3JhdHAtPnJlc2VydmVkKSArIDEpOwkvKiBza2lwIGhlYWRlciAqLwogCXAgPSBzdGFydDsKQEAgLTIzNSwxMCArMjI2LDYgQEAKIAltZW1zZXQobm9kZV9tZW1vcnlfY2h1bmssIDAsIHNpemVvZihub2RlX21lbW9yeV9jaHVuaykpOwogCW1lbXNldCh6aG9sZXNfc2l6ZSwgMCwgc2l6ZW9mKHpob2xlc19zaXplKSk7CiAKLQkvKiAtMSBpbiB0aGVzZSBtYXBzIG1lYW5zIG5vdCBhdmFpbGFibGUgKi8KLQltZW1zZXQocHhtX3RvX25pZF9tYXAsIC0xLCBzaXplb2YocHhtX3RvX25pZF9tYXApKTsKLQltZW1zZXQobmlkX3RvX3B4bV9tYXAsIC0xLCBzaXplb2YobmlkX3RvX3B4bV9tYXApKTsKLQogCW51bV9tZW1vcnlfY2h1bmtzID0gMDsKIAl3aGlsZSAocCA8IGVuZCkgewogCQlzd2l0Y2ggKCpwKSB7CkBAIC0yNzgsOSArMjY1LDcgQEAKIAlub2Rlc19jbGVhcihub2RlX29ubGluZV9tYXApOwogCWZvciAoaSA9IDA7IGkgPCBNQVhfUFhNX0RPTUFJTlM7IGkrKykgewogCQlpZiAoQk1BUF9URVNUKHB4bV9iaXRtYXAsIGkpKSB7Ci0JCQluaWQgPSBudW1fb25saW5lX25vZGVzKCk7Ci0JCQlweG1fdG9fbmlkX21hcFtpXSA9IG5pZDsKLQkJCW5pZF90b19weG1fbWFwW25pZF0gPSBpOworCQkJaW50IG5pZCA9IGFjcGlfbWFwX3B4bV90b19ub2RlKGkpOwogCQkJbm9kZV9zZXRfb25saW5lKG5pZCk7CiAJCX0KIAl9CkBAIC0yODgsNyArMjczLDcgQEAKIAogCS8qIHNldCBjbm9kZSBpZCBpbiBtZW1vcnkgY2h1bmsgc3RydWN0dXJlICovCiAJZm9yIChpID0gMDsgaSA8IG51bV9tZW1vcnlfY2h1bmtzOyBpKyspCi0JCW5vZGVfbWVtb3J5X2NodW5rW2ldLm5pZCA9IHB4bV90b19uaWRfbWFwW25vZGVfbWVtb3J5X2NodW5rW2ldLnB4bV07CisJCW5vZGVfbWVtb3J5X2NodW5rW2ldLm5pZCA9IHB4bV90b19ub2RlKG5vZGVfbWVtb3J5X2NodW5rW2ldLnB4bSk7CiAKIAlwcmludGsoInB4bSBiaXRtYXA6ICIpOwogCWZvciAoaSA9IDA7IGkgPCBzaXplb2YocHhtX2JpdG1hcCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMgYi9hcmNoL2kzODYva2VybmVsL3N5c2NhbGxfdGFibGUuUwppbmRleCBhZjU2OTg3Li5kZDYzZDQ3IDEwMDY0NAotLS0gYS9hcmNoL2kzODYva2VybmVsL3N5c2NhbGxfdGFibGUuUworKysgYi9hcmNoL2kzODYva2VybmVsL3N5c2NhbGxfdGFibGUuUwpAQCAtMzE2LDMgKzMxNiw0IEBACiAJLmxvbmcgc3lzX3N5bmNfZmlsZV9yYW5nZQogCS5sb25nIHN5c190ZWUJCQkvKiAzMTUgKi8KIAkubG9uZyBzeXNfdm1zcGxpY2UKKwkubG9uZyBzeXNfbW92ZV9wYWdlcwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2tlcm5lbC90cmFwcy5jIGIvYXJjaC9pMzg2L2tlcm5lbC90cmFwcy5jCmluZGV4IDBlNDk4MzYuLmRjYzE0NDcgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL2kzODYva2VybmVsL3RyYXBzLmMKQEAgLTE0OSw2ICsxNDksMTIgQEAKIAl3aGlsZSAodmFsaWRfc3RhY2tfcHRyKHRpbmZvLCAodm9pZCAqKWVicCkpIHsKIAkJYWRkciA9ICoodW5zaWduZWQgbG9uZyAqKShlYnAgKyA0KTsKIAkJcHJpbnRlZCA9IHByaW50X2FkZHJfYW5kX3N5bWJvbChhZGRyLCBsb2dfbHZsLCBwcmludGVkKTsKKwkJLyoKKwkJICogYnJlYWsgb3V0IG9mIHJlY3Vyc2l2ZSBlbnRyaWVzIChzdWNoIGFzCisJCSAqIGVuZF9vZl9zdGFja19zdG9wX3Vud2luZF9mdW5jdGlvbik6CisJIAkgKi8KKwkJaWYgKGVicCA9PSAqKHVuc2lnbmVkIGxvbmcgKillYnApCisJCQlicmVhazsKIAkJZWJwID0gKih1bnNpZ25lZCBsb25nICopZWJwOwogCX0KICNlbHNlCkBAIC0yNjgsOCArMjc0LDkgQEAKIAkJcmVncy0+ZXNpLCByZWdzLT5lZGksIHJlZ3MtPmVicCwgZXNwKTsKIAlwcmludGsoS0VSTl9FTUVSRyAiZHM6ICUwNHggICBlczogJTA0eCAgIHNzOiAlMDR4XG4iLAogCQlyZWdzLT54ZHMgJiAweGZmZmYsIHJlZ3MtPnhlcyAmIDB4ZmZmZiwgc3MpOwotCXByaW50ayhLRVJOX0VNRVJHICJQcm9jZXNzICVzIChwaWQ6ICVkLCB0aHJlYWRpbmZvPSVwIHRhc2s9JXApIiwKLQkJY3VycmVudC0+Y29tbSwgY3VycmVudC0+cGlkLCBjdXJyZW50X3RocmVhZF9pbmZvKCksIGN1cnJlbnQpOworCXByaW50ayhLRVJOX0VNRVJHICJQcm9jZXNzICUuKnMgKHBpZDogJWQsIHRpPSVwIHRhc2s9JXAgdGFzay50aT0lcCkiLAorCQlUQVNLX0NPTU1fTEVOLCBjdXJyZW50LT5jb21tLCBjdXJyZW50LT5waWQsCisJCWN1cnJlbnRfdGhyZWFkX2luZm8oKSwgY3VycmVudCwgY3VycmVudC0+dGhyZWFkX2luZm8pOwogCS8qCiAJICogV2hlbiBpbi1rZXJuZWwsIHdlIGFsc28gcHJpbnQgb3V0IHRoZSBzdGFjayBhbmQgY29kZSBhdCB0aGUKIAkgKiB0aW1lIG9mIHRoZSBmYXVsdC4uCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3VzZXJjb3B5LmMgYi9hcmNoL2kzODYvbGliL3VzZXJjb3B5LmMKaW5kZXggNGNmOTgxZC4uNjk3OTI5NyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi91c2VyY29weS5jCisrKyBiL2FyY2gvaTM4Ni9saWIvdXNlcmNvcHkuYwpAQCAtNDI1LDE1ICs0MjUsMTIxIEBACiAJCSAgICAgICA6ICJlYXgiLCAiZWR4IiwgIm1lbW9yeSIpOwogCXJldHVybiBzaXplOwogfQorCisvKgorICogTm9uIFRlbXBvcmFsIEhpbnQgdmVyc2lvbiBvZiBfX2NvcHlfdXNlcl96ZXJvaW5nX2ludGVsLiAgSXQgaXMgY2FjaGUgYXdhcmUuCisgKiBoeW9zaGlva0BtaXJhY2xlbGludXguY29tCisgKi8KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgX19jb3B5X3VzZXJfemVyb2luZ19pbnRlbF9ub2NhY2hlKHZvaWQgKnRvLAorCQkJCWNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisgICAgICAgIGludCBkMCwgZDE7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkgICAgICAgIiAgICAgICAgLmFsaWduIDIsMHg5MFxuIgorCSAgICAgICAiMDogICAgICBtb3ZsIDMyKCU0KSwgJSVlYXhcbiIKKwkgICAgICAgIiAgICAgICAgY21wbCAkNjcsICUwXG4iCisJICAgICAgICIgICAgICAgIGpiZSAyZlxuIgorCSAgICAgICAiMTogICAgICBtb3ZsIDY0KCU0KSwgJSVlYXhcbiIKKwkgICAgICAgIiAgICAgICAgLmFsaWduIDIsMHg5MFxuIgorCSAgICAgICAiMjogICAgICBtb3ZsIDAoJTQpLCAlJWVheFxuIgorCSAgICAgICAiMjE6ICAgICBtb3ZsIDQoJTQpLCAlJWVkeFxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlYXgsIDAoJTMpXG4iCisJICAgICAgICIgICAgICAgIG1vdm50aSAlJWVkeCwgNCglMylcbiIKKwkgICAgICAgIjM6ICAgICAgbW92bCA4KCU0KSwgJSVlYXhcbiIKKwkgICAgICAgIjMxOiAgICAgbW92bCAxMiglNCksJSVlZHhcbiIKKwkgICAgICAgIiAgICAgICAgbW92bnRpICUlZWF4LCA4KCUzKVxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlZHgsIDEyKCUzKVxuIgorCSAgICAgICAiNDogICAgICBtb3ZsIDE2KCU0KSwgJSVlYXhcbiIKKwkgICAgICAgIjQxOiAgICAgbW92bCAyMCglNCksICUlZWR4XG4iCisJICAgICAgICIgICAgICAgIG1vdm50aSAlJWVheCwgMTYoJTMpXG4iCisJICAgICAgICIgICAgICAgIG1vdm50aSAlJWVkeCwgMjAoJTMpXG4iCisJICAgICAgICIxMDogICAgIG1vdmwgMjQoJTQpLCAlJWVheFxuIgorCSAgICAgICAiNTE6ICAgICBtb3ZsIDI4KCU0KSwgJSVlZHhcbiIKKwkgICAgICAgIiAgICAgICAgbW92bnRpICUlZWF4LCAyNCglMylcbiIKKwkgICAgICAgIiAgICAgICAgbW92bnRpICUlZWR4LCAyOCglMylcbiIKKwkgICAgICAgIjExOiAgICAgbW92bCAzMiglNCksICUlZWF4XG4iCisJICAgICAgICI2MTogICAgIG1vdmwgMzYoJTQpLCAlJWVkeFxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlYXgsIDMyKCUzKVxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlZHgsIDM2KCUzKVxuIgorCSAgICAgICAiMTI6ICAgICBtb3ZsIDQwKCU0KSwgJSVlYXhcbiIKKwkgICAgICAgIjcxOiAgICAgbW92bCA0NCglNCksICUlZWR4XG4iCisJICAgICAgICIgICAgICAgIG1vdm50aSAlJWVheCwgNDAoJTMpXG4iCisJICAgICAgICIgICAgICAgIG1vdm50aSAlJWVkeCwgNDQoJTMpXG4iCisJICAgICAgICIxMzogICAgIG1vdmwgNDgoJTQpLCAlJWVheFxuIgorCSAgICAgICAiODE6ICAgICBtb3ZsIDUyKCU0KSwgJSVlZHhcbiIKKwkgICAgICAgIiAgICAgICAgbW92bnRpICUlZWF4LCA0OCglMylcbiIKKwkgICAgICAgIiAgICAgICAgbW92bnRpICUlZWR4LCA1MiglMylcbiIKKwkgICAgICAgIjE0OiAgICAgbW92bCA1NiglNCksICUlZWF4XG4iCisJICAgICAgICI5MTogICAgIG1vdmwgNjAoJTQpLCAlJWVkeFxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlYXgsIDU2KCUzKVxuIgorCSAgICAgICAiICAgICAgICBtb3ZudGkgJSVlZHgsIDYwKCUzKVxuIgorCSAgICAgICAiICAgICAgICBhZGRsICQtNjQsICUwXG4iCisJICAgICAgICIgICAgICAgIGFkZGwgJDY0LCAlNFxuIgorCSAgICAgICAiICAgICAgICBhZGRsICQ2NCwgJTNcbiIKKwkgICAgICAgIiAgICAgICAgY21wbCAkNjMsICUwXG4iCisJICAgICAgICIgICAgICAgIGphICAwYlxuIgorCSAgICAgICAiICAgICAgICBzZmVuY2UgXG4iCisJICAgICAgICI1OiAgICAgIG1vdmwgICUwLCAlJWVheFxuIgorCSAgICAgICAiICAgICAgICBzaHJsICAkMiwgJTBcbiIKKwkgICAgICAgIiAgICAgICAgYW5kbCAkMywgJSVlYXhcbiIKKwkgICAgICAgIiAgICAgICAgY2xkXG4iCisJICAgICAgICI2OiAgICAgIHJlcDsgbW92c2xcbiIKKwkgICAgICAgIiAgICAgICAgbW92bCAlJWVheCwlMFxuIgorCSAgICAgICAiNzogICAgICByZXA7IG1vdnNiXG4iCisJICAgICAgICI4OlxuIgorCSAgICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgorCSAgICAgICAiOTogICAgICBsZWEgMCglJWVheCwlMCw0KSwlMFxuIgorCSAgICAgICAiMTY6ICAgICBwdXNobCAlMFxuIgorCSAgICAgICAiICAgICAgICBwdXNobCAlJWVheFxuIgorCSAgICAgICAiICAgICAgICB4b3JsICUlZWF4LCUlZWF4XG4iCisJICAgICAgICIgICAgICAgIHJlcDsgc3Rvc2JcbiIKKwkgICAgICAgIiAgICAgICAgcG9wbCAlJWVheFxuIgorCSAgICAgICAiICAgICAgICBwb3BsICUwXG4iCisJICAgICAgICIgICAgICAgIGptcCA4YlxuIgorCSAgICAgICAiLnByZXZpb3VzXG4iCisJICAgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisJICAgICAgICIJLmFsaWduIDRcbiIKKwkgICAgICAgIgkubG9uZyAwYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyAxYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyAyYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyAyMWIsMTZiXG4iCisJICAgICAgICIJLmxvbmcgM2IsMTZiXG4iCisJICAgICAgICIJLmxvbmcgMzFiLDE2YlxuIgorCSAgICAgICAiCS5sb25nIDRiLDE2YlxuIgorCSAgICAgICAiCS5sb25nIDQxYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyAxMGIsMTZiXG4iCisJICAgICAgICIJLmxvbmcgNTFiLDE2YlxuIgorCSAgICAgICAiCS5sb25nIDExYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyA2MWIsMTZiXG4iCisJICAgICAgICIJLmxvbmcgMTJiLDE2YlxuIgorCSAgICAgICAiCS5sb25nIDcxYiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyAxM2IsMTZiXG4iCisJICAgICAgICIJLmxvbmcgODFiLDE2YlxuIgorCSAgICAgICAiCS5sb25nIDE0YiwxNmJcbiIKKwkgICAgICAgIgkubG9uZyA5MWIsMTZiXG4iCisJICAgICAgICIJLmxvbmcgNmIsOWJcbiIKKwkgICAgICAgIiAgICAgICAgLmxvbmcgN2IsMTZiXG4iCisJICAgICAgICIucHJldmlvdXMiCisJICAgICAgIDogIj0mYyIoc2l6ZSksICI9JkQiIChkMCksICI9JlMiIChkMSkKKwkgICAgICAgOiAgIjEiKHRvKSwgIjIiKGZyb20pLCAiMCIoc2l6ZSkKKwkgICAgICAgOiAiZWF4IiwgImVkeCIsICJtZW1vcnkiKTsKKwlyZXR1cm4gc2l6ZTsKK30KKwogI2Vsc2UKKwogLyoKICAqIExlYXZlIHRoZXNlIGRlY2xhcmVkIGJ1dCB1bmRlZmluZWQuICBUaGV5IHNob3VsZCBub3QgYmUgYW55IHJlZmVyZW5jZXMgdG8KICAqIHRoZW0KICAqLwotdW5zaWduZWQgbG9uZwotX19jb3B5X3VzZXJfemVyb2luZ19pbnRlbCh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci11bnNpZ25lZCBsb25nCi1fX2NvcHlfdXNlcl9pbnRlbCh2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Cit1bnNpZ25lZCBsb25nIF9fY29weV91c2VyX3plcm9pbmdfaW50ZWwodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLAorCQkJCQl1bnNpZ25lZCBsb25nIHNpemUpOwordW5zaWduZWQgbG9uZyBfX2NvcHlfdXNlcl9pbnRlbCh2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sCisJCQkJCXVuc2lnbmVkIGxvbmcgc2l6ZSk7Cit1bnNpZ25lZCBsb25nIF9fY29weV91c2VyX3plcm9pbmdfaW50ZWxfbm9jYWNoZSh2b2lkICp0bywKKwkJCQljb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplKTsKICNlbmRpZiAvKiBDT05GSUdfWDg2X0lOVEVMX1VTRVJDT1BZICovCiAKIC8qIEdlbmVyaWMgYXJiaXRyYXJ5IHNpemVkIGNvcHkuICAqLwpAQCAtNTE1LDggKzYyMSw4IEBACiAJCTogIm1lbW9yeSIpOwkJCQkJCVwKIH0gd2hpbGUgKDApCiAKLQotdW5zaWduZWQgbG9uZyBfX2NvcHlfdG9fdXNlcl9sbCh2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3Vuc2lnbmVkIGxvbmcgX19jb3B5X3RvX3VzZXJfbGwodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLAorCQkJCXVuc2lnbmVkIGxvbmcgbikKIHsKIAlCVUdfT04oKGxvbmcpIG4gPCAwKTsKICNpZm5kZWYgQ09ORklHX1g4Nl9XUF9XT1JLU19PSwpAQCAtNTc2LDggKzY4Miw4IEBACiB9CiBFWFBPUlRfU1lNQk9MKF9fY29weV90b191c2VyX2xsKTsKIAotdW5zaWduZWQgbG9uZwotX19jb3B5X2Zyb21fdXNlcl9sbCh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3Vuc2lnbmVkIGxvbmcgX19jb3B5X2Zyb21fdXNlcl9sbCh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCisJCQkJCXVuc2lnbmVkIGxvbmcgbikKIHsKIAlCVUdfT04oKGxvbmcpbiA8IDApOwogCWlmIChtb3ZzbF9pc19vayh0bywgZnJvbSwgbikpCkBAIC01ODgsNiArNjk0LDIxIEBACiB9CiBFWFBPUlRfU1lNQk9MKF9fY29weV9mcm9tX3VzZXJfbGwpOwogCit1bnNpZ25lZCBsb25nIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCisJCQkJCXVuc2lnbmVkIGxvbmcgbikKK3sKKwlCVUdfT04oKGxvbmcpbiA8IDApOworI2lmZGVmIENPTkZJR19YODZfSU5URUxfVVNFUkNPUFkKKwlpZiAoIG4gPiA2NCAmJiBjcHVfaGFzX3htbTIpCisgICAgICAgICAgICAgICAgbiA9IF9fY29weV91c2VyX3plcm9pbmdfaW50ZWxfbm9jYWNoZSh0bywgZnJvbSwgbik7CisJZWxzZQorCQlfX2NvcHlfdXNlcl96ZXJvaW5nKHRvLCBmcm9tLCBuKTsKKyNlbHNlCisgICAgICAgIF9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOworI2VuZGlmCisJcmV0dXJuIG47Cit9CisKIC8qKgogICogY29weV90b191c2VyOiAtIENvcHkgYSBibG9jayBvZiBkYXRhIGludG8gdXNlciBzcGFjZS4KICAqIEB0bzogICBEZXN0aW5hdGlvbiBhZGRyZXNzLCBpbiB1c2VyIHNwYWNlLgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L21tL2ZhdWx0LmMgYi9hcmNoL2kzODYvbW0vZmF1bHQuYwppbmRleCA3ZjBmY2YyLi5iZDZmZTk2IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbW0vZmF1bHQuYworKysgYi9hcmNoL2kzODYvbW0vZmF1bHQuYwpAQCAtNzcsMTIgKzc3LDE1IEBACiAJdW5zaWduZWQgc2VnID0gcmVncy0+eGNzICYgMHhmZmZmOwogCXUzMiBzZWdfYXIsIHNlZ19saW1pdCwgYmFzZSwgKmRlc2M7CiAKKwkvKiBVbmxpa2VseSwgYnV0IG11c3QgY29tZSBiZWZvcmUgc2VnbWVudCBjaGVja3MuICovCisJaWYgKHVubGlrZWx5KHJlZ3MtPmVmbGFncyAmIFZNX01BU0spKSB7CisJCWJhc2UgPSBzZWcgPDwgNDsKKwkJKmVpcF9saW1pdCA9IGJhc2UgKyAweGZmZmY7CisJCXJldHVybiBiYXNlICsgKGVpcCAmIDB4ZmZmZik7CisJfQorCiAJLyogVGhlIHN0YW5kYXJkIGtlcm5lbC91c2VyIGFkZHJlc3Mgc3BhY2UgbGltaXQuICovCiAJKmVpcF9saW1pdCA9IChzZWcgJiAzKSA/IFVTRVJfRFMuc2VnIDogS0VSTkVMX0RTLnNlZzsKLQotCS8qIFVubGlrZWx5LCBidXQgbXVzdCBjb21lIGJlZm9yZSBzZWdtZW50IGNoZWNrcy4gKi8KLQlpZiAodW5saWtlbHkoKHJlZ3MtPmVmbGFncyAmIFZNX01BU0spICE9IDApKQotCQlyZXR1cm4gZWlwICsgKHNlZyA8PCA0KTsKIAkKIAkvKiBCeSBmYXIgdGhlIG1vc3QgY29tbW9uIGNhc2VzLiAqLwogCWlmIChsaWtlbHkoc2VnID09IF9fVVNFUl9DUyB8fCBzZWcgPT0gX19LRVJORUxfQ1MpKQpAQCAtMzgwLDEyICszODMsMTIgQEAKIAkJZ290byBiYWRfYXJlYTsKIAlpZiAoZXJyb3JfY29kZSAmIDQpIHsKIAkJLyoKLQkJICogYWNjZXNzaW5nIHRoZSBzdGFjayBiZWxvdyAlZXNwIGlzIGFsd2F5cyBhIGJ1Zy4KLQkJICogVGhlICIrIDMyIiBpcyB0aGVyZSBkdWUgdG8gc29tZSBpbnN0cnVjdGlvbnMgKGxpa2UKLQkJICogcHVzaGEpIGRvaW5nIHBvc3QtZGVjcmVtZW50IG9uIHRoZSBzdGFjayBhbmQgdGhhdAotCQkgKiBkb2Vzbid0IHNob3cgdXAgdW50aWwgbGF0ZXIuLgorCQkgKiBBY2Nlc3NpbmcgdGhlIHN0YWNrIGJlbG93ICVlc3AgaXMgYWx3YXlzIGEgYnVnLgorCQkgKiBUaGUgbGFyZ2UgY3VzaGlvbiBhbGxvd3MgaW5zdHJ1Y3Rpb25zIGxpa2UgZW50ZXIKKwkJICogYW5kIHB1c2hhIHRvIHdvcmsuICAoImVudGVyICQ2NTUzNSwkMzEiIHB1c2hlcworCQkgKiAzMiBwb2ludGVycyBhbmQgdGhlbiBkZWNyZW1lbnRzICVlc3AgYnkgNjU1MzUuKQogCQkgKi8KLQkJaWYgKGFkZHJlc3MgKyAzMiA8IHJlZ3MtPmVzcCkKKwkJaWYgKGFkZHJlc3MgKyA2NTUzNiArIDMyICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIDwgcmVncy0+ZXNwKQogCQkJZ290byBiYWRfYXJlYTsKIAl9CiAJaWYgKGV4cGFuZF9zdGFjayh2bWEsIGFkZHJlc3MpKQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L21tL2luaXQuYyBiL2FyY2gvaTM4Ni9tbS9pbml0LmMKaW5kZXggM2RmMTM3MS4uYmYxOTUxMyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L21tL2luaXQuYworKysgYi9hcmNoL2kzODYvbW0vaW5pdC5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8bGludXgvZWZpLmg+CiAjaW5jbHVkZSA8bGludXgvbWVtb3J5X2hvdHBsdWcuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0cmQuaD4KKyNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgpAQCAtMzg0LDcgKzM4NSw3IEBACiAjZW5kaWYKIH0KIAotI2lmZGVmIENPTkZJR19TT0ZUV0FSRV9TVVNQRU5ECisjaWYgZGVmaW5lZChDT05GSUdfU09GVFdBUkVfU1VTUEVORCkgfHwgZGVmaW5lZChDT05GSUdfQUNQSV9TTEVFUCkKIC8qCiAgKiBTd2FwIHN1c3BlbmQgJiBmcmllbmRzIG5lZWQgdGhpcyBmb3IgcmVzdW1lIGJlY2F1c2UgdGhpbmdzIGxpa2UgdGhlIGludGVsLWFncAogICogZHJpdmVyIG1pZ2h0IGhhdmUgc3BsaXQgdXAgYSBrZXJuZWwgNE1CIG1hcHBpbmcuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbW0vcGFnZWF0dHIuYyBiL2FyY2gvaTM4Ni9tbS9wYWdlYXR0ci5jCmluZGV4IDkyYzNkOWYuLjA4ODdiMzQgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9tbS9wYWdlYXR0ci5jCisrKyBiL2FyY2gvaTM4Ni9tbS9wYWdlYXR0ci5jCkBAIC0yMDksMTkgKzIwOSwxOSBAQAogfQogCiB2b2lkIGdsb2JhbF9mbHVzaF90bGIodm9pZCkKLXsgCi0JTElTVF9IRUFEKGwpOworeworCXN0cnVjdCBsaXN0X2hlYWQgbDsKIAlzdHJ1Y3QgcGFnZSAqcGcsICpuZXh0OwogCiAJQlVHX09OKGlycXNfZGlzYWJsZWQoKSk7CiAKIAlzcGluX2xvY2tfaXJxKCZjcGFfbG9jayk7Ci0JbGlzdF9zcGxpY2VfaW5pdCgmZGZfbGlzdCwgJmwpOworCWxpc3RfcmVwbGFjZV9pbml0KCZkZl9saXN0LCAmbCk7CiAJc3Bpbl91bmxvY2tfaXJxKCZjcGFfbG9jayk7CiAJZmx1c2hfbWFwKCk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBnLCBuZXh0LCAmbCwgbHJ1KQogCQlfX2ZyZWVfcGFnZShwZyk7Ci19IAorfQogCiAjaWZkZWYgQ09ORklHX0RFQlVHX1BBR0VBTExPQwogdm9pZCBrZXJuZWxfbWFwX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgbnVtcGFnZXMsIGludCBlbmFibGUpCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvcGNpL2NvbW1vbi5jIGIvYXJjaC9pMzg2L3BjaS9jb21tb24uYwppbmRleCBkYmVjZTc3Li5jNjI0YjYxIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvcGNpL2NvbW1vbi5jCisrKyBiL2FyY2gvaTM4Ni9wY2kvY29tbW9uLmMKQEAgLTI4OCw2ICsyODgsNyBAQAogCiB2b2lkIHBjaWJpb3NfZGlzYWJsZV9kZXZpY2UgKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CisJcGNpYmlvc19kaXNhYmxlX3Jlc291cmNlcyhkZXYpOwogCWlmIChwY2liaW9zX2Rpc2FibGVfaXJxKQogCQlwY2liaW9zX2Rpc2FibGVfaXJxKGRldik7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvcGNpL2kzODYuYyBiL2FyY2gvaTM4Ni9wY2kvaTM4Ni5jCmluZGV4IGVkMmM4YzguLjc4NTI4MjcgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9wY2kvaTM4Ni5jCisrKyBiL2FyY2gvaTM4Ni9wY2kvaTM4Ni5jCkBAIC0yNDIsNiArMjQyLDE1IEBACiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgcGNpYmlvc19kaXNhYmxlX3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqZGV2KQoreworCXUxNiBjbWQ7CisKKwlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCAmY21kKTsKKwljbWQgJj0gfihQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSk7CisJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsIGNtZCk7Cit9CisKIC8qCiAgKiAgSWYgd2Ugc2V0IHVwIGEgZGV2aWNlIGZvciBidXMgbWFzdGVyaW5nLCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBsYXRlbmN5CiAgKiAgdGltZXIgYXMgY2VydGFpbiBjcmFwcHkgQklPU2VzIGZvcmdldCB0byBzZXQgaXQgcHJvcGVybHkuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvcGNpL2lycS5jIGIvYXJjaC9pMzg2L3BjaS9pcnEuYwppbmRleCAwNmRhYjAwLi44Y2U2OTUwIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvcGNpL2lycS5jCisrKyBiL2FyY2gvaTM4Ni9wY2kvaXJxLmMKQEAgLTE5OCwxNCArMTk4LDE0IEBACiAgKi8KIHN0YXRpYyBpbnQgcGlycV9hbGlfZ2V0KHN0cnVjdCBwY2lfZGV2ICpyb3V0ZXIsIHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwaXJxKQogewotCXN0YXRpYyB1bnNpZ25lZCBjaGFyIGlycW1hcFsxNl0gPSB7IDAsIDksIDMsIDEwLCA0LCA1LCA3LCA2LCAxLCAxMSwgMCwgMTIsIDAsIDE0LCAwLCAxNSB9OworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGlycW1hcFsxNl0gPSB7IDAsIDksIDMsIDEwLCA0LCA1LCA3LCA2LCAxLCAxMSwgMCwgMTIsIDAsIDE0LCAwLCAxNSB9OwogCiAJcmV0dXJuIGlycW1hcFtyZWFkX2NvbmZpZ19ueWJibGUocm91dGVyLCAweDQ4LCBwaXJxLTEpXTsKIH0KIAogc3RhdGljIGludCBwaXJxX2FsaV9zZXQoc3RydWN0IHBjaV9kZXYgKnJvdXRlciwgc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBpcnEsIGludCBpcnEpCiB7Ci0Jc3RhdGljIHVuc2lnbmVkIGNoYXIgaXJxbWFwWzE2XSA9IHsgMCwgOCwgMCwgMiwgNCwgNSwgNywgNiwgMCwgMSwgMywgOSwgMTEsIDAsIDEzLCAxNSB9OworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGlycW1hcFsxNl0gPSB7IDAsIDgsIDAsIDIsIDQsIDUsIDcsIDYsIDAsIDEsIDMsIDksIDExLCAwLCAxMywgMTUgfTsKIAl1bnNpZ25lZCBpbnQgdmFsID0gaXJxbWFwW2lycV07CiAJCQogCWlmICh2YWwpIHsKQEAgLTI1NiwxMyArMjU2LDEzIEBACiAgKi8KIHN0YXRpYyBpbnQgcGlycV92aWE1ODZfZ2V0KHN0cnVjdCBwY2lfZGV2ICpyb3V0ZXIsIHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwaXJxKQogewotCXN0YXRpYyB1bnNpZ25lZCBpbnQgcGlycW1hcFs0XSA9IHsgMywgMiwgNSwgMSB9OworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcGlycW1hcFs0XSA9IHsgMywgMiwgNSwgMSB9OwogCXJldHVybiByZWFkX2NvbmZpZ19ueWJibGUocm91dGVyLCAweDU1LCBwaXJxbWFwW3BpcnEtMV0pOwogfQogCiBzdGF0aWMgaW50IHBpcnFfdmlhNTg2X3NldChzdHJ1Y3QgcGNpX2RldiAqcm91dGVyLCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcGlycSwgaW50IGlycSkKIHsKLQlzdGF0aWMgdW5zaWduZWQgaW50IHBpcnFtYXBbNF0gPSB7IDMsIDIsIDUsIDEgfTsKKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHBpcnFtYXBbNF0gPSB7IDMsIDIsIDUsIDEgfTsKIAl3cml0ZV9jb25maWdfbnliYmxlKHJvdXRlciwgMHg1NSwgcGlycW1hcFtwaXJxLTFdLCBpcnEpOwogCXJldHVybiAxOwogfQpAQCAtMjc0LDEzICsyNzQsMTMgQEAKICAqLwogc3RhdGljIGludCBwaXJxX2l0ZV9nZXQoc3RydWN0IHBjaV9kZXYgKnJvdXRlciwgc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBpcnEpCiB7Ci0Jc3RhdGljIHVuc2lnbmVkIGNoYXIgcGlycW1hcFs0XSA9IHsgMSwgMCwgMiwgMyB9OworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpcnFtYXBbNF0gPSB7IDEsIDAsIDIsIDMgfTsKIAlyZXR1cm4gcmVhZF9jb25maWdfbnliYmxlKHJvdXRlciwweDQzLCBwaXJxbWFwW3BpcnEtMV0pOwogfQogCiBzdGF0aWMgaW50IHBpcnFfaXRlX3NldChzdHJ1Y3QgcGNpX2RldiAqcm91dGVyLCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcGlycSwgaW50IGlycSkKIHsKLQlzdGF0aWMgdW5zaWduZWQgY2hhciBwaXJxbWFwWzRdID0geyAxLCAwLCAyLCAzIH07CisJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGlycW1hcFs0XSA9IHsgMSwgMCwgMiwgMyB9OwogCXdyaXRlX2NvbmZpZ19ueWJibGUocm91dGVyLCAweDQzLCBwaXJxbWFwW3BpcnEtMV0sIGlycSk7CiAJcmV0dXJuIDE7CiB9CkBAIC01MDUsNyArNTA1LDcgQEAKIAogc3RhdGljIF9faW5pdCBpbnQgaW50ZWxfcm91dGVyX3Byb2JlKHN0cnVjdCBpcnFfcm91dGVyICpyLCBzdHJ1Y3QgcGNpX2RldiAqcm91dGVyLCB1MTYgZGV2aWNlKQogewotCXN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwaXJxXzQ0MGd4W10gPSB7CisJc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9faW5pdGRhdGEgcGlycV80NDBneFtdID0gewogCQl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgUENJX0RFVklDRV9JRF9JTlRFTF84MjQ0M0dYXzApIH0sCiAJCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0lOVEVMLCBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyNDQzR1hfMikgfSwKIAkJeyB9LApAQCAtODgwLDYgKzg4MCw3IEBACiAJKCghKHBjaV9wcm9iZSAmIFBDSV9VU0VfUElSUV9NQVNLKSkgfHwgKCgxIDw8IGlycSkgJiBtYXNrKSkgKSB7CiAJCURCRygiIC0+IGdvdCBJUlEgJWRcbiIsIGlycSk7CiAJCW1zZyA9ICJGb3VuZCI7CisJCWVpc2Ffc2V0X2xldmVsX2lycShpcnEpOwogCX0gZWxzZSBpZiAobmV3aXJxICYmIHItPnNldCAmJiAoZGV2LT5jbGFzcyA+PiA4KSAhPSBQQ0lfQ0xBU1NfRElTUExBWV9WR0EpIHsKIAkJREJHKCIgLT4gYXNzaWduaW5nIElSUSAlZCIsIG5ld2lycSk7CiAJCWlmIChyLT5zZXQocGlycV9yb3V0ZXJfZGV2LCBkZXYsIHBpcnEsIG5ld2lycSkpIHsKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9wY2kvbW1jb25maWcuYyBiL2FyY2gvaTM4Ni9wY2kvbW1jb25maWcuYwppbmRleCA2YjFlYTBjLi5lNTQ1YjA5IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvcGNpL21tY29uZmlnLmMKKysrIGIvYXJjaC9pMzg2L3BjaS9tbWNvbmZpZy5jCkBAIC0xNSw3ICsxNSw5IEBACiAjaW5jbHVkZSA8YXNtL2U4MjAuaD4KICNpbmNsdWRlICJwY2kuaCIKIAotI2RlZmluZSBNTUNPTkZJR19BUEVSX1NJWkUgKDI1NioxMDI0KjEwMjQpCisvKiBhcGVydHVyZSBpcyB1cCB0byAyNTZNQiBidXQgQklPUyBtYXkgcmVzZXJ2ZSBsZXNzICovCisjZGVmaW5lIE1NQ09ORklHX0FQRVJfTUlOCSgyICogMTAyNCoxMDI0KQorI2RlZmluZSBNTUNPTkZJR19BUEVSX01BWAkoMjU2ICogMTAyNCoxMDI0KQogCiAvKiBBc3N1bWUgc3lzdGVtcyB3aXRoIG1vcmUgYnVzc2VzIGhhdmUgY29ycmVjdCBNQ0ZHICovCiAjZGVmaW5lIE1BWF9DSEVDS19CVVMgMTYKQEAgLTE5Nyw5ICsxOTksMTAgQEAKIAkJcmV0dXJuOwogCiAJaWYgKCFlODIwX2FsbF9tYXBwZWQocGNpX21tY2ZnX2NvbmZpZ1swXS5iYXNlX2FkZHJlc3MsCi0JCQlwY2lfbW1jZmdfY29uZmlnWzBdLmJhc2VfYWRkcmVzcyArIE1NQ09ORklHX0FQRVJfU0laRSwKKwkJCXBjaV9tbWNmZ19jb25maWdbMF0uYmFzZV9hZGRyZXNzICsgTU1DT05GSUdfQVBFUl9NSU4sCiAJCQlFODIwX1JFU0VSVkVEKSkgewotCQlwcmludGsoS0VSTl9FUlIgIlBDSTogQklPUyBCdWc6IE1DRkcgYXJlYSBpcyBub3QgRTgyMC1yZXNlcnZlZFxuIik7CisJCXByaW50ayhLRVJOX0VSUiAiUENJOiBCSU9TIEJ1ZzogTUNGRyBhcmVhIGF0ICV4IGlzIG5vdCBFODIwLXJlc2VydmVkXG4iLAorCQkJCXBjaV9tbWNmZ19jb25maWdbMF0uYmFzZV9hZGRyZXNzKTsKIAkJcHJpbnRrKEtFUk5fRVJSICJQQ0k6IE5vdCB1c2luZyBNTUNPTkZJRy5cbiIpOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L3BjaS9wY2kuaCBiL2FyY2gvaTM4Ni9wY2kvcGNpLmgKaW5kZXggMTIwMzVlMi4uMTJiZjNkOCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L3BjaS9wY2kuaAorKysgYi9hcmNoL2kzODYvcGNpL3BjaS5oCkBAIC0zNSw2ICszNSw3IEBACiAKIHZvaWQgcGNpYmlvc19yZXNvdXJjZV9zdXJ2ZXkodm9pZCk7CiBpbnQgcGNpYmlvc19lbmFibGVfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICosIGludCk7Cit2b2lkIHBjaWJpb3NfZGlzYWJsZV9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKik7CiAKIC8qIHBjaS1wYy5jICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9wb3dlci9jcHUuYyBiL2FyY2gvaTM4Ni9wb3dlci9jcHUuYwppbmRleCA3OWIyMzcwLi5lNjUxNzkxIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvcG93ZXIvY3B1LmMKKysrIGIvYXJjaC9pMzg2L3Bvd2VyL2NwdS5jCkBAIC0xMCw2ICsxMCw4IEBACiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgorI2luY2x1ZGUgPGFzbS9tdHJyLmg+CisjaW5jbHVkZSA8YXNtL21jZS5oPgogCiBzdGF0aWMgc3RydWN0IHNhdmVkX2NvbnRleHQgc2F2ZWRfY29udGV4dDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L0tjb25maWcgYi9hcmNoL2lhNjQvS2NvbmZpZwppbmRleCAwZjMwNzZhLi4xODMxODc0IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvS2NvbmZpZworKysgYi9hcmNoL2lhNjQvS2NvbmZpZwpAQCAtNzcsNiArNzcsNyBAQAogY29uZmlnIElBNjRfR0VORVJJQwogCWJvb2wgImdlbmVyaWMiCiAJc2VsZWN0IEFDUEkKKwlzZWxlY3QgUENJCiAJc2VsZWN0IE5VTUEKIAlzZWxlY3QgQUNQSV9OVU1BCiAJaGVscApAQCAtMjczLDcgKzI3NCw2IEBACiBjb25maWcgU0NIRURfU01UCiAJYm9vbCAiU01UIHNjaGVkdWxlciBzdXBwb3J0IgogCWRlcGVuZHMgb24gU01QCi0JZGVmYXVsdCBvZmYKIAloZWxwCiAJICBJbXByb3ZlcyB0aGUgQ1BVIHNjaGVkdWxlcidzIGRlY2lzaW9uIG1ha2luZyB3aGVuIGRlYWxpbmcgd2l0aAogCSAgSW50ZWwgSUE2NCBjaGlwcyB3aXRoIE11bHRpVGhyZWFkaW5nIGF0IGEgY29zdCBvZiBzbGlnaHRseSBpbmNyZWFzZWQKQEAgLTQ0OSw2ICs0NDksOCBAQAogCWJvb2wKIAlkZWZhdWx0IFBDSQogCitzb3VyY2UgImRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL3BjaS9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvcGNpL2hvdHBsdWcvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9NYWtlZmlsZSBiL2FyY2gvaWE2NC9NYWtlZmlsZQppbmRleCA4MGVhNzUwLi4yMTAzM2VkIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvTWFrZWZpbGUKKysrIGIvYXJjaC9pYTY0L01ha2VmaWxlCkBAIC03MSw2ICs3MSw4IEBACiAKIGNvbXByZXNzZWQ6IHZtbGludXguZ3oKIAordm1saW51ejogdm1saW51eC5negorCiB2bWxpbnV4Lmd6OiB2bWxpbnV4CiAJJChRKSQoTUFLRSkgJChidWlsZCk9JChib290KSAkQAogCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaHAvY29tbW9uL3NiYV9pb21tdS5jIGIvYXJjaC9pYTY0L2hwL2NvbW1vbi9zYmFfaW9tbXUuYwppbmRleCBiZGNjZDBiLi41ODI1ZGRlIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaHAvY29tbW9uL3NiYV9pb21tdS5jCisrKyBiL2FyY2gvaWE2NC9ocC9jb21tb24vc2JhX2lvbW11LmMKQEAgLTE5NTgsNyArMTk1OCw3IEBACiAJaWYgKHB4bSA8IDApCiAJCXJldHVybjsKIAotCW5vZGUgPSBweG1fdG9fbmlkX21hcFtweG1dOworCW5vZGUgPSBweG1fdG9fbm9kZShweG0pOwogCiAJaWYgKG5vZGUgPj0gTUFYX05VTU5PREVTIHx8ICFub2RlX29ubGluZShub2RlKSkKIAkJcmV0dXJuOwpAQCAtMTk5OSw3ICsxOTk5LDcgQEAKIAkJaWYgKCFpb3ZwX3NoaWZ0KQogCQkJaW92cF9zaGlmdCA9IG1pbihQQUdFX1NISUZULCAxNik7CiAJfQotCUFDUElfTUVNX0ZSRUUoZGV2X2luZm8pOworCWtmcmVlKGRldl9pbmZvKTsKIAogCS8qCiAJICogZGVmYXVsdCBhbnl0aGluZyBub3QgY2F1Z2h0IGFib3ZlIG9yIHNwZWNpZmllZCBvbiBjbWRsaW5lIHRvIDRrCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2FjcGkuYyBiL2FyY2gvaWE2NC9rZXJuZWwvYWNwaS5jCmluZGV4IDU4YzkzYTMuLmNhMTZkOTUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvYWNwaS5jCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvYWNwaS5jCkBAIC02OCw4ICs2OCw2IEBACiB1bnNpZ25lZCBjaGFyIGFjcGlfa2JkX2NvbnRyb2xsZXJfcHJlc2VudCA9IDE7CiB1bnNpZ25lZCBjaGFyIGFjcGlfbGVnYWN5X2RldmljZXM7CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0YSBhY3BpX21hZHRfcmV2OwotCiB1bnNpZ25lZCBpbnQgYWNwaV9jcGVpX292ZXJyaWRlOwogdW5zaWduZWQgaW50IGFjcGlfY3BlaV9waHlzX2NwdWlkOwogCkBAIC0yNDMsNiArMjQxLDggQEAKIAlyZXR1cm4gaW9zYXBpY19pbml0KGlvc2FwaWMtPmFkZHJlc3MsIGlvc2FwaWMtPmdsb2JhbF9pcnFfYmFzZSk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0YSBhY3BpX21hZHRfcmV2OworCiBzdGF0aWMgaW50IF9faW5pdAogYWNwaV9wYXJzZV9wbGF0X2ludF9zcmMoYWNwaV90YWJsZV9lbnRyeV9oZWFkZXIgKiBoZWFkZXIsCiAJCQljb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKQEAgLTQxNSw5ICs0MTUsNiBAQAogc3RhdGljIHUzMiBfX2RldmluaXRkYXRhIHB4bV9mbGFnW1BYTV9GTEFHX0xFTl07CiAjZGVmaW5lIHB4bV9iaXRfc2V0KGJpdCkJKHNldF9iaXQoYml0LCh2b2lkICopcHhtX2ZsYWcpKQogI2RlZmluZSBweG1fYml0X3Rlc3QoYml0KQkodGVzdF9iaXQoYml0LCh2b2lkICopcHhtX2ZsYWcpKQotLyogbWFwcyB0byBjb252ZXJ0IGJldHdlZW4gcHJveGltaXR5IGRvbWFpbiBhbmQgbG9naWNhbCBub2RlIElEICovCi1pbnQgX19kZXZpbml0ZGF0YSBweG1fdG9fbmlkX21hcFtNQVhfUFhNX0RPTUFJTlNdOwotaW50IF9faW5pdGRhdGEgbmlkX3RvX3B4bV9tYXBbTUFYX05VTU5PREVTXTsKIHN0YXRpYyBzdHJ1Y3QgYWNwaV90YWJsZV9zbGl0IF9faW5pdGRhdGEgKnNsaXRfdGFibGU7CiAKIHN0YXRpYyBpbnQgZ2V0X3Byb2Nlc3Nvcl9wcm94aW1pdHlfZG9tYWluKHN0cnVjdCBhY3BpX3RhYmxlX3Byb2Nlc3Nvcl9hZmZpbml0eSAqcGEpCkBAIC01MzMsMjIgKzUzMCwxNyBAQAogCSAqIE1DRCAtIFRoaXMgY2FuIHByb2JhYmx5IGJlIGRyb3BwZWQgbm93LiAgTm8gbmVlZCBmb3IgcHhtIElEIHRvIG5vZGUgSUQKIAkgKiBtYXBwaW5nIHdpdGggc3BhcnNlIG5vZGUgbnVtYmVyaW5nIGlmZiBNQVhfUFhNX0RPTUFJTlMgPD0gTUFYX05VTU5PREVTLgogCSAqLwotCS8qIGNhbGN1bGF0ZSB0b3RhbCBudW1iZXIgb2Ygbm9kZXMgaW4gc3lzdGVtIGZyb20gUFhNIGJpdG1hcCAqLwotCW1lbXNldChweG1fdG9fbmlkX21hcCwgLTEsIHNpemVvZihweG1fdG9fbmlkX21hcCkpOwotCW1lbXNldChuaWRfdG9fcHhtX21hcCwgLTEsIHNpemVvZihuaWRfdG9fcHhtX21hcCkpOwogCW5vZGVzX2NsZWFyKG5vZGVfb25saW5lX21hcCk7CiAJZm9yIChpID0gMDsgaSA8IE1BWF9QWE1fRE9NQUlOUzsgaSsrKSB7CiAJCWlmIChweG1fYml0X3Rlc3QoaSkpIHsKLQkJCWludCBuaWQgPSBudW1fb25saW5lX25vZGVzKCk7Ci0JCQlweG1fdG9fbmlkX21hcFtpXSA9IG5pZDsKLQkJCW5pZF90b19weG1fbWFwW25pZF0gPSBpOworCQkJaW50IG5pZCA9IGFjcGlfbWFwX3B4bV90b19ub2RlKGkpOwogCQkJbm9kZV9zZXRfb25saW5lKG5pZCk7CiAJCX0KIAl9CiAKIAkvKiBzZXQgbG9naWNhbCBub2RlIGlkIGluIG1lbW9yeSBjaHVuayBzdHJ1Y3R1cmUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtX25vZGVfbWVtYmxrczsgaSsrKQotCQlub2RlX21lbWJsa1tpXS5uaWQgPSBweG1fdG9fbmlkX21hcFtub2RlX21lbWJsa1tpXS5uaWRdOworCQlub2RlX21lbWJsa1tpXS5uaWQgPSBweG1fdG9fbm9kZShub2RlX21lbWJsa1tpXS5uaWQpOwogCiAJLyogYXNzaWduIG1lbW9yeSBiYW5rIG51bWJlcnMgZm9yIGVhY2ggY2h1bmsgb24gZWFjaCBub2RlICovCiAJZm9yX2VhY2hfb25saW5lX25vZGUoaSkgewpAQCAtNTYyLDcgKzU1NCw3IEBACiAKIAkvKiBzZXQgbG9naWNhbCBub2RlIGlkIGluIGNwdSBzdHJ1Y3R1cmUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgc3JhdF9udW1fY3B1czsgaSsrKQotCQlub2RlX2NwdWlkW2ldLm5pZCA9IHB4bV90b19uaWRfbWFwW25vZGVfY3B1aWRbaV0ubmlkXTsKKwkJbm9kZV9jcHVpZFtpXS5uaWQgPSBweG1fdG9fbm9kZShub2RlX2NwdWlkW2ldLm5pZCk7CiAKIAlwcmludGsoS0VSTl9JTkZPICJOdW1iZXIgb2YgbG9naWNhbCBub2RlcyBpbiBzeXN0ZW0gPSAlZFxuIiwKIAkgICAgICAgbnVtX29ubGluZV9ub2RlcygpKTsKQEAgLTU3NSwxMSArNTY3LDExIEBACiAJZm9yIChpID0gMDsgaSA8IHNsaXRfdGFibGUtPmxvY2FsaXRpZXM7IGkrKykgewogCQlpZiAoIXB4bV9iaXRfdGVzdChpKSkKIAkJCWNvbnRpbnVlOwotCQlub2RlX2Zyb20gPSBweG1fdG9fbmlkX21hcFtpXTsKKwkJbm9kZV9mcm9tID0gcHhtX3RvX25vZGUoaSk7CiAJCWZvciAoaiA9IDA7IGogPCBzbGl0X3RhYmxlLT5sb2NhbGl0aWVzOyBqKyspIHsKIAkJCWlmICghcHhtX2JpdF90ZXN0KGopKQogCQkJCWNvbnRpbnVlOwotCQkJbm9kZV90byA9IHB4bV90b19uaWRfbWFwW2pdOworCQkJbm9kZV90byA9IHB4bV90b19ub2RlKGopOwogCQkJbm9kZV9kaXN0YW5jZShub2RlX2Zyb20sIG5vZGVfdG8pID0KIAkJCSAgICBzbGl0X3RhYmxlLT5lbnRyeVtpICogc2xpdF90YWJsZS0+bG9jYWxpdGllcyArIGpdOwogCQl9CkBAIC02MjYsNyArNjE4LDcgQEAKIHN0YXRpYyBpbnQgX19pbml0IGFjcGlfcGFyc2VfZmFkdCh1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogewogCXN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqZmFkdF9oZWFkZXI7Ci0Jc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyICpmYWR0OworCXN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgKmZhZHQ7CiAKIAlpZiAoIXBoeXNfYWRkciB8fCAhc2l6ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC02MzUsNyArNjI3LDcgQEAKIAlpZiAoZmFkdF9oZWFkZXItPnJldmlzaW9uICE9IDMpCiAJCXJldHVybiAtRU5PREVWOwkvKiBPbmx5IGRlYWwgd2l0aCBBQ1BJIDIuMCBGQURUICovCiAKLQlmYWR0ID0gKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqKWZhZHRfaGVhZGVyOworCWZhZHQgPSAoc3RydWN0IGZhZHRfZGVzY3JpcHRvciAqKWZhZHRfaGVhZGVyOwogCiAJaWYgKCEoZmFkdC0+aWFwY19ib290X2FyY2ggJiBCQUZfODA0Ml9LRVlCT0FSRF9DT05UUk9MTEVSKSkKIAkJYWNwaV9rYmRfY29udHJvbGxlcl9wcmVzZW50ID0gMDsKQEAgLTc4NSw5ICs3NzcsOSBAQAogCiAJLyoKIAkgKiBBc3N1bWluZyB0aGF0IHRoZSBjb250YWluZXIgZHJpdmVyIHdvdWxkIGhhdmUgc2V0IHRoZSBwcm94aW1pdHkKLQkgKiBkb21haW4gYW5kIHdvdWxkIGhhdmUgaW5pdGlhbGl6ZWQgcHhtX3RvX25pZF9tYXBbcHhtX2lkXSAmJiBweG1fZmxhZworCSAqIGRvbWFpbiBhbmQgd291bGQgaGF2ZSBpbml0aWFsaXplZCBweG1fdG9fbm9kZShweG1faWQpICYmIHB4bV9mbGFnCiAJICovCi0Jbm9kZV9jcHVpZFtjcHVdLm5pZCA9IChweG1faWQgPCAwKSA/IDAgOiBweG1fdG9fbmlkX21hcFtweG1faWRdOworCW5vZGVfY3B1aWRbY3B1XS5uaWQgPSAocHhtX2lkIDwgMCkgPyAwIDogcHhtX3RvX25vZGUocHhtX2lkKTsKIAogCW5vZGVfY3B1aWRbY3B1XS5waHlzX2lkID0gcGh5c2lkOwogI2VuZGlmCkBAIC05NjYsNyArOTU4LDcgQEAKIAlpZiAocHhtIDwgMCkKIAkJcmV0dXJuIEFFX09LOwogCi0Jbm9kZSA9IHB4bV90b19uaWRfbWFwW3B4bV07CisJbm9kZSA9IHB4bV90b19ub2RlKHB4bSk7CiAKIAlpZiAobm9kZSA+PSBNQVhfTlVNTk9ERVMgfHwgIW5vZGVfb25saW5lKG5vZGUpIHx8CiAJICAgIGNwdXNfZW1wdHkobm9kZV90b19jcHVtYXNrKG5vZGUpKSkKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvYXNtLW9mZnNldHMuYyBiL2FyY2gvaWE2NC9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCA3NzIyNTY1Li4xNmU3YjY2IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2FzbS1vZmZzZXRzLmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jCkBAIC0yMTcsMTYgKzIxNywyNCBAQAogCURFRklORShJQTY0X01DQV9DUFVfSU5JVF9TVEFDS19PRkZTRVQsCiAJICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgaWE2NF9tY2FfY3B1LCBpbml0X3N0YWNrKSk7CiAJQkxBTksoKTsKLQlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfQ09NTU9OX09GRlNFVCwKLQkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCBpYTY0X3NhbF9vc19zdGF0ZSwgc2FsX3JhKSk7CiAJREVGSU5FKElBNjRfU0FMX09TX1NUQVRFX09TX0dQX09GRlNFVCwKIAkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCBpYTY0X3NhbF9vc19zdGF0ZSwgb3NfZ3ApKTsKLQlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfUEFMX01JTl9TVEFURV9PRkZTRVQsCi0JICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUsIHBhbF9taW5fc3RhdGUpKTsKIAlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfUFJPQ19TVEFURV9QQVJBTV9PRkZTRVQsCiAJICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUsIHByb2Nfc3RhdGVfcGFyYW0pKTsKKwlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfU0FMX1JBX09GRlNFVCwKKwkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCBpYTY0X3NhbF9vc19zdGF0ZSwgc2FsX3JhKSk7CisJREVGSU5FKElBNjRfU0FMX09TX1NUQVRFX1NBTF9HUF9PRkZTRVQsCisJICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUsIHNhbF9ncCkpOworCURFRklORShJQTY0X1NBTF9PU19TVEFURV9QQUxfTUlOX1NUQVRFX09GRlNFVCwKKwkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCBpYTY0X3NhbF9vc19zdGF0ZSwgcGFsX21pbl9zdGF0ZSkpOworCURFRklORShJQTY0X1NBTF9PU19TVEFURV9PU19TVEFUVVNfT0ZGU0VULAorCSAgICAgICBvZmZzZXRvZiAoc3RydWN0IGlhNjRfc2FsX29zX3N0YXRlLCBvc19zdGF0dXMpKTsKKwlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfQ09OVEVYVF9PRkZTRVQsCisJICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUsIGNvbnRleHQpKTsKIAlERUZJTkUoSUE2NF9TQUxfT1NfU1RBVEVfU0laRSwKIAkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUpKTsKKwlCTEFOSygpOworCiAJREVGSU5FKElBNjRfUE1TQV9HUl9PRkZTRVQsCiAJICAgICAgIG9mZnNldG9mIChzdHJ1Y3QgcGFsX21pbl9zdGF0ZV9hcmVhX3MsIHBtc2FfZ3IpKTsKIAlERUZJTkUoSUE2NF9QTVNBX0JBTksxX0dSX09GRlNFVCwKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvZWZpLmMgYi9hcmNoL2lhNjQva2VybmVsL2VmaS5jCmluZGV4IDEyY2ZlZGMuLmMzM2QwYmEgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvZWZpLmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9lZmkuYwpAQCAtOCw2ICs4LDggQEAKICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIEhld2xldHQtUGFja2FyZCBDby4KICAqCURhdmlkIE1vc2Jlcmdlci1UYW5nIDxkYXZpZG1AaHBsLmhwLmNvbT4KICAqCVN0ZXBoYW5lIEVyYW5pYW4gPGVyYW5pYW5AaHBsLmhwLmNvbT4KKyAqIChjKSBDb3B5cmlnaHQgMjAwNiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgorICoJQmpvcm4gSGVsZ2FhcyA8Ympvcm4uaGVsZ2Fhc0BocC5jb20+CiAgKgogICogQWxsIEVGSSBSdW50aW1lIFNlcnZpY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGFzIEVGSSBvbmx5CiAgKiBzdXBwb3J0cyBwaHlzaWNhbCBtb2RlIGFkZHJlc3Npbmcgb24gU29mdFNEVi4gVGhpcyBpcyB0byBiZSBmaXhlZApAQCAtNjIyLDYgKzYyNCwxOCBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgc3RydWN0IGtlcm5fbWVtZGVzYyAqCitrZXJuX21lbW9yeV9kZXNjcmlwdG9yICh1bnNpZ25lZCBsb25nIHBoeXNfYWRkcikKK3sKKwlzdHJ1Y3Qga2Vybl9tZW1kZXNjICptZDsKKworCWZvciAobWQgPSBrZXJuX21lbW1hcDsgbWQtPnN0YXJ0ICE9IH4wVUw7IG1kKyspIHsKKwkJaWYgKHBoeXNfYWRkciAtIG1kLT5zdGFydCA8IChtZC0+bnVtX3BhZ2VzIDw8IEVGSV9QQUdFX1NISUZUKSkKKwkJCSByZXR1cm4gbWQ7CisJfQorCXJldHVybiAwOworfQorCiBzdGF0aWMgZWZpX21lbW9yeV9kZXNjX3QgKgogZWZpX21lbW9yeV9kZXNjcmlwdG9yICh1bnNpZ25lZCBsb25nIHBoeXNfYWRkcikKIHsKQEAgLTY0MiwyNiArNjU2LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotZWZpX21lbW1hcF9oYXNfbW1pbyAodm9pZCkKLXsKLQl2b2lkICplZmlfbWFwX3N0YXJ0LCAqZWZpX21hcF9lbmQsICpwOwotCWVmaV9tZW1vcnlfZGVzY190ICptZDsKLQl1NjQgZWZpX2Rlc2Nfc2l6ZTsKLQotCWVmaV9tYXBfc3RhcnQgPSBfX3ZhKGlhNjRfYm9vdF9wYXJhbS0+ZWZpX21lbW1hcCk7Ci0JZWZpX21hcF9lbmQgICA9IGVmaV9tYXBfc3RhcnQgKyBpYTY0X2Jvb3RfcGFyYW0tPmVmaV9tZW1tYXBfc2l6ZTsKLQllZmlfZGVzY19zaXplID0gaWE2NF9ib290X3BhcmFtLT5lZmlfbWVtZGVzY19zaXplOwotCi0JZm9yIChwID0gZWZpX21hcF9zdGFydDsgcCA8IGVmaV9tYXBfZW5kOyBwICs9IGVmaV9kZXNjX3NpemUpIHsKLQkJbWQgPSBwOwotCi0JCWlmIChtZC0+dHlwZSA9PSBFRklfTUVNT1JZX01BUFBFRF9JTykKLQkJCXJldHVybiAxOwotCX0KLQlyZXR1cm4gMDsKLX0KLQogdTMyCiBlZmlfbWVtX3R5cGUgKHVuc2lnbmVkIGxvbmcgcGh5c19hZGRyKQogewpAQCAtNjgzLDcxICs2NzcsMTI1IEBACiB9CiBFWFBPUlRfU1lNQk9MKGVmaV9tZW1fYXR0cmlidXRlcyk7CiAKLS8qCi0gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1lbW9yeSBhdCBwaHlzX2FkZHIgc3VwcG9ydHMgdGhlIGRlc2lyZWQKLSAqIGF0dHJpYnV0ZSAoV0IsIFVDLCBldGMpLiAgSWYgdGhpcyByZXR1cm5zIDEsIHRoZSBjYWxsZXIgY2FuIHNhZmVseQotICogYWNjZXNzIHNpemUgYnl0ZXMgYXQgcGh5c19hZGRyIHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCi0gKi8KLWludAotZWZpX21lbV9hdHRyaWJ1dGVfcmFuZ2UgKHVuc2lnbmVkIGxvbmcgcGh5c19hZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsIHU2NCBhdHRyKQordTY0CitlZmlfbWVtX2F0dHJpYnV0ZSAodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAl1bnNpZ25lZCBsb25nIGVuZCA9IHBoeXNfYWRkciArIHNpemU7CiAJZWZpX21lbW9yeV9kZXNjX3QgKm1kID0gZWZpX21lbW9yeV9kZXNjcmlwdG9yKHBoeXNfYWRkcik7CisJdTY0IGF0dHI7CisKKwlpZiAoIW1kKQorCQlyZXR1cm4gMDsKIAogCS8qCi0JICogU29tZSBmaXJtd2FyZSBkb2Vzbid0IHJlcG9ydCBNTUlPIHJlZ2lvbnMgaW4gdGhlIEVGSSBtZW1vcnkKLQkgKiBtYXAuICBUaGUgSW50ZWwgQmlnU3VyIChhLmsuYS4gSFAgaTIwMDApIGhhcyB0aGlzIHByb2JsZW0uCi0JICogT24gdGhvc2UgcGxhdGZvcm1zLCB3ZSBoYXZlIHRvIGFzc3VtZSBVQyBpcyB2YWxpZCBldmVyeXdoZXJlLgorCSAqIEVGSV9NRU1PUllfUlVOVElNRSBpcyBub3QgYSBtZW1vcnkgYXR0cmlidXRlOyBpdCBqdXN0IHRlbGxzCisJICogdGhlIGtlcm5lbCB0aGF0IGZpcm13YXJlIG5lZWRzIHRoaXMgcmVnaW9uIG1hcHBlZC4KIAkgKi8KLQlpZiAoIW1kIHx8IChtZC0+YXR0cmlidXRlICYgYXR0cikgIT0gYXR0cikgewotCQlpZiAoYXR0ciA9PSBFRklfTUVNT1JZX1VDICYmICFlZmlfbWVtbWFwX2hhc19tbWlvKCkpCi0JCQlyZXR1cm4gMTsKLQkJcmV0dXJuIDA7Ci0JfQotCisJYXR0ciA9IG1kLT5hdHRyaWJ1dGUgJiB+RUZJX01FTU9SWV9SVU5USU1FOwogCWRvIHsKIAkJdW5zaWduZWQgbG9uZyBtZF9lbmQgPSBlZmlfbWRfZW5kKG1kKTsKIAogCQlpZiAoZW5kIDw9IG1kX2VuZCkKLQkJCXJldHVybiAxOworCQkJcmV0dXJuIGF0dHI7CiAKIAkJbWQgPSBlZmlfbWVtb3J5X2Rlc2NyaXB0b3IobWRfZW5kKTsKLQkJaWYgKCFtZCB8fCAobWQtPmF0dHJpYnV0ZSAmIGF0dHIpICE9IGF0dHIpCisJCWlmICghbWQgfHwgKG1kLT5hdHRyaWJ1dGUgJiB+RUZJX01FTU9SWV9SVU5USU1FKSAhPSBhdHRyKQogCQkJcmV0dXJuIDA7CiAJfSB3aGlsZSAobWQpOwogCXJldHVybiAwOwogfQogCi0vKgotICogRm9yIC9kZXYvbWVtLCB3ZSBvbmx5IGFsbG93IHJlYWQgJiB3cml0ZSBzeXN0ZW0gY2FsbHMgdG8gYWNjZXNzCi0gKiB3cml0ZS1iYWNrIG1lbW9yeSwgYmVjYXVzZSByZWFkICYgd3JpdGUgZG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8KLSAqIGNvbnRyb2wgYWNjZXNzIHNpemUuCi0gKi8KK3U2NAora2Vybl9tZW1fYXR0cmlidXRlICh1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXVuc2lnbmVkIGxvbmcgZW5kID0gcGh5c19hZGRyICsgc2l6ZTsKKwlzdHJ1Y3Qga2Vybl9tZW1kZXNjICptZDsKKwl1NjQgYXR0cjsKKworCS8qCisJICogVGhpcyBpcyBhIGhhY2sgZm9yIGlvcmVtYXAgY2FsbHMgYmVmb3JlIHdlIHNldCB1cCBrZXJuX21lbW1hcC4KKwkgKiBNYXliZSB3ZSBzaG91bGQgZG8gZWZpX21lbW1hcF9pbml0KCkgZWFybGllciBpbnN0ZWFkLgorCSAqLworCWlmICgha2Vybl9tZW1tYXApIHsKKwkJYXR0ciA9IGVmaV9tZW1fYXR0cmlidXRlKHBoeXNfYWRkciwgc2l6ZSk7CisJCWlmIChhdHRyICYgRUZJX01FTU9SWV9XQikKKwkJCXJldHVybiBFRklfTUVNT1JZX1dCOworCQlyZXR1cm4gMDsKKwl9CisKKwltZCA9IGtlcm5fbWVtb3J5X2Rlc2NyaXB0b3IocGh5c19hZGRyKTsKKwlpZiAoIW1kKQorCQlyZXR1cm4gMDsKKworCWF0dHIgPSBtZC0+YXR0cmlidXRlOworCWRvIHsKKwkJdW5zaWduZWQgbG9uZyBtZF9lbmQgPSBrbWRfZW5kKG1kKTsKKworCQlpZiAoZW5kIDw9IG1kX2VuZCkKKwkJCXJldHVybiBhdHRyOworCisJCW1kID0ga2Vybl9tZW1vcnlfZGVzY3JpcHRvcihtZF9lbmQpOworCQlpZiAoIW1kIHx8IG1kLT5hdHRyaWJ1dGUgIT0gYXR0cikKKwkJCXJldHVybiAwOworCX0gd2hpbGUgKG1kKTsKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woa2Vybl9tZW1fYXR0cmlidXRlKTsKKwogaW50CiB2YWxpZF9waHlzX2FkZHJfcmFuZ2UgKHVuc2lnbmVkIGxvbmcgcGh5c19hZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCiB7Ci0JcmV0dXJuIGVmaV9tZW1fYXR0cmlidXRlX3JhbmdlKHBoeXNfYWRkciwgc2l6ZSwgRUZJX01FTU9SWV9XQik7CisJdTY0IGF0dHI7CisKKwkvKgorCSAqIC9kZXYvbWVtIHJlYWRzIGFuZCB3cml0ZXMgdXNlIGNvcHlfdG9fdXNlcigpLCB3aGljaCBpbXBsaWNpdGx5CisJICogdXNlcyBhIGdyYW51bGUtc2l6ZWQga2VybmVsIGlkZW50aXR5IG1hcHBpbmcuICBJdCdzIHJlYWxseQorCSAqIG9ubHkgc2FmZSB0byBkbyB0aGlzIGZvciByZWdpb25zIGluIGtlcm5fbWVtbWFwLiAgRm9yIG1vcmUKKwkgKiBkZXRhaWxzLCBzZWUgRG9jdW1lbnRhdGlvbi9pYTY0L2FsaWFzaW5nLnR4dC4KKwkgKi8KKwlhdHRyID0ga2Vybl9tZW1fYXR0cmlidXRlKHBoeXNfYWRkciwgc2l6ZSk7CisJaWYgKGF0dHIgJiBFRklfTUVNT1JZX1dCIHx8IGF0dHIgJiBFRklfTUVNT1JZX1VDKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKIH0KIAotLyoKLSAqIFdlIGFsbG93IG1tYXAgb2YgYW55dGhpbmcgaW4gdGhlIEVGSSBtZW1vcnkgbWFwIHRoYXQgc3VwcG9ydHMKLSAqIGVpdGhlciB3cml0ZS1iYWNrIG9yIHVuY2FjaGVhYmxlIGFjY2Vzcy4gIEZvciB1bmNhY2hlYWJsZSByZWdpb25zLAotICogdGhlIHN1cHBvcnRlZCBhY2Nlc3Mgc2l6ZXMgYXJlIHN5c3RlbS1kZXBlbmRlbnQsIGFuZCB0aGUgdXNlciBpcwotICogcmVzcG9uc2libGUgZm9yIHVzaW5nIHRoZSBjb3JyZWN0IHNpemUuCi0gKgotICogTm90ZSB0aGF0IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgYWxsb3cgYWNjZXNzIHRvIGhvdC1hZGRlZCBtZW1vcnksCi0gKiBiZWNhdXNlIHRoYXQgZG9lc24ndCBhcHBlYXIgaW4gdGhlIGJvb3QtdGltZSBFRkkgbWVtb3J5IG1hcC4KLSAqLwogaW50CiB2YWxpZF9tbWFwX3BoeXNfYWRkcl9yYW5nZSAodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlpZiAoZWZpX21lbV9hdHRyaWJ1dGVfcmFuZ2UocGh5c19hZGRyLCBzaXplLCBFRklfTUVNT1JZX1dCKSkKLQkJcmV0dXJuIDE7CisJLyoKKwkgKiBNTUlPIHJlZ2lvbnMgYXJlIG9mdGVuIG1pc3NpbmcgZnJvbSB0aGUgRUZJIG1lbW9yeSBtYXAuCisJICogV2UgbXVzdCBhbGxvdyBtbWFwIG9mIHRoZW0gZm9yIHByb2dyYW1zIGxpa2UgWCwgc28gd2UKKwkgKiBjdXJyZW50bHkgY2FuJ3QgZG8gYW55IHVzZWZ1bCB2YWxpZGF0aW9uLgorCSAqLworCXJldHVybiAxOworfQogCi0JaWYgKGVmaV9tZW1fYXR0cmlidXRlX3JhbmdlKHBoeXNfYWRkciwgc2l6ZSwgRUZJX01FTU9SWV9VQykpCi0JCXJldHVybiAxOworcGdwcm90X3QKK3BoeXNfbWVtX2FjY2Vzc19wcm90KHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBzaXplLAorCQkgICAgIHBncHJvdF90IHZtYV9wcm90KQoreworCXVuc2lnbmVkIGxvbmcgcGh5c19hZGRyID0gcGZuIDw8IFBBR0VfU0hJRlQ7CisJdTY0IGF0dHI7CiAKLQlyZXR1cm4gMDsKKwkvKgorCSAqIEZvciAvZGV2L21lbSBtbWFwLCB3ZSB1c2UgdXNlciBtYXBwaW5ncywgYnV0IGlmIHRoZSByZWdpb24gaXMKKwkgKiBpbiBrZXJuX21lbW1hcCAoYW5kIGhlbmNlIG1heSBiZSBjb3ZlcmVkIGJ5IGEga2VybmVsIG1hcHBpbmcpLAorCSAqIHdlIG11c3QgdXNlIHRoZSBzYW1lIGF0dHJpYnV0ZSBhcyB0aGUga2VybmVsIG1hcHBpbmcuCisJICovCisJYXR0ciA9IGtlcm5fbWVtX2F0dHJpYnV0ZShwaHlzX2FkZHIsIHNpemUpOworCWlmIChhdHRyICYgRUZJX01FTU9SWV9XQikKKwkJcmV0dXJuIHBncHJvdF9jYWNoZWFibGUodm1hX3Byb3QpOworCWVsc2UgaWYgKGF0dHIgJiBFRklfTUVNT1JZX1VDKQorCQlyZXR1cm4gcGdwcm90X25vbmNhY2hlZCh2bWFfcHJvdCk7CisKKwkvKgorCSAqIFNvbWUgY2hpcHNldHMgZG9uJ3Qgc3VwcG9ydCBVQyBhY2Nlc3MgdG8gbWVtb3J5LiAgSWYKKwkgKiBXQiBpcyBzdXBwb3J0ZWQsIHdlIHByZWZlciB0aGF0LgorCSAqLworCWlmIChlZmlfbWVtX2F0dHJpYnV0ZShwaHlzX2FkZHIsIHNpemUpICYgRUZJX01FTU9SWV9XQikKKwkJcmV0dXJuIHBncHJvdF9jYWNoZWFibGUodm1hX3Byb3QpOworCisJcmV0dXJuIHBncHJvdF9ub25jYWNoZWQodm1hX3Byb3QpOwogfQogCiBpbnQgX19pbml0CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2VmaV9zdHViLlMgYi9hcmNoL2lhNjQva2VybmVsL2VmaV9zdHViLlMKaW5kZXggNWE3ZmU3MC4uYTU2ZTE2MSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9lZmlfc3R1Yi5TCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvZWZpX3N0dWIuUwpAQCAtNjEsNyArNjEsNyBAQAogCW9yIGxvYzM9bG9jMyxyMTcKIAltb3YgYjY9cjIKIAk7OwotCWFuZGNtIHIxNj1sb2MzLHIxNgkJLy8gZ2V0IHBzciB3aXRoIElULCBEVCwgYW5kIFJUIGJpdHMgY2xlYXJlZAorCWFuZGNtIHIxNj1sb2MzLHIxNgkvLyBnZXQgcHNyIHdpdGggSVQsIERULCBhbmQgUlQgYml0cyBjbGVhcmVkCiAJYnIuY2FsbC5zcHRrLm1hbnkgcnA9aWE2NF9zd2l0Y2hfbW9kZV9waHlzCiAucmV0MDoJbW92IG91dDQ9aW41CiAJbW92IG91dDA9aW4xCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2VudHJ5LlMgYi9hcmNoL2lhNjQva2VybmVsL2VudHJ5LlMKaW5kZXggYmNiODBjYS4uMzJjOTk5ZiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9lbnRyeS5TCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvZW50cnkuUwpAQCAtMTU4NCw3ICsxNTg0LDcgQEAKIAlkYXRhOCBzeXNfa2V5Y3RsCiAJZGF0YTggc3lzX2lvcHJpb19zZXQKIAlkYXRhOCBzeXNfaW9wcmlvX2dldAkJCS8vIDEyNzUKLQlkYXRhOCBzeXNfbmlfc3lzY2FsbAorCWRhdGE4IHN5c19tb3ZlX3BhZ2VzCiAJZGF0YTggc3lzX2lub3RpZnlfaW5pdAogCWRhdGE4IHN5c19pbm90aWZ5X2FkZF93YXRjaAogCWRhdGE4IHN5c19pbm90aWZ5X3JtX3dhdGNoCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL2VudHJ5LmggYi9hcmNoL2lhNjQva2VybmVsL2VudHJ5LmgKaW5kZXggNzhlZWIwNy4uZWJjM2RmYiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9lbnRyeS5oCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvZW50cnkuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjZGVmaW5lIFBUKGYpCQkoSUE2NF9QVF9SRUdTXyMjZiMjX09GRlNFVCkKICNkZWZpbmUgU1coZikJCShJQTY0X1NXSVRDSF9TVEFDS18jI2YjI19PRkZTRVQpCisjZGVmaW5lIFNPUyhmKQkJKElBNjRfU0FMX09TX1NUQVRFXyMjZiMjX09GRlNFVCkKIAogI2RlZmluZSBQVF9SRUdTX1NBVkVTKG9mZikJCQlcCiAJLnVud2FiaSAzLCAnaSc7CQkJCVwKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvaXJxX2lhNjQuYyBiL2FyY2gvaWE2NC9rZXJuZWwvaXJxX2lhNjQuYwppbmRleCA2YzRkNTlmLi5lZjlhMmI0IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2lycV9pYTY0LmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9pcnFfaWE2NC5jCkBAIC00Niw2ICs0NiwxMCBAQAogCiAjZGVmaW5lIElSUV9ERUJVRwkwCiAKKy8qIFRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIGluIHBsYXRmb3JtX2lycV9pbml0ICovCitpbnQgaWE2NF9maXJzdF9kZXZpY2VfdmVjdG9yID0gSUE2NF9ERUZfRklSU1RfREVWSUNFX1ZFQ1RPUjsKK2ludCBpYTY0X2xhc3RfZGV2aWNlX3ZlY3RvciA9IElBNjRfREVGX0xBU1RfREVWSUNFX1ZFQ1RPUjsKKwogLyogZGVmYXVsdCBiYXNlIGFkZHIgb2YgSVBJIHRhYmxlICovCiB2b2lkIF9faW9tZW0gKmlwaV9iYXNlX2FkZHIgPSAoKHZvaWQgX19pb21lbSAqKQogCQkJICAgICAgIChfX0lBNjRfVU5DQUNIRURfT0ZGU0VUIHwgSUE2NF9JUElfREVGQVVMVF9CQVNFX0FERFIpKTsKQEAgLTYwLDcgKzY0LDcgQEAKIH07CiBFWFBPUlRfU1lNQk9MKGlzYV9pcnFfdG9fdmVjdG9yX21hcCk7CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGlhNjRfdmVjdG9yX21hc2tbQklUU19UT19MT05HUyhJQTY0X05VTV9ERVZJQ0VfVkVDVE9SUyldOworc3RhdGljIHVuc2lnbmVkIGxvbmcgaWE2NF92ZWN0b3JfbWFza1tCSVRTX1RPX0xPTkdTKElBNjRfTUFYX0RFVklDRV9WRUNUT1JTKV07CiAKIGludAogYXNzaWduX2lycV92ZWN0b3IgKGludCBpcnEpCkBAIC04OSw2ICs5MywxOSBAQAogCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogZG91YmxlIGZyZWUhXG4iLCBfX0ZVTkNUSU9OX18pOwogfQogCitpbnQKK3Jlc2VydmVfaXJxX3ZlY3RvciAoaW50IHZlY3RvcikKK3sKKwlpbnQgcG9zOworCisJaWYgKHZlY3RvciA8IElBNjRfRklSU1RfREVWSUNFX1ZFQ1RPUiB8fAorCSAgICB2ZWN0b3IgPiBJQTY0X0xBU1RfREVWSUNFX1ZFQ1RPUikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlwb3MgPSB2ZWN0b3IgLSBJQTY0X0ZJUlNUX0RFVklDRV9WRUNUT1I7CisJcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQocG9zLCBpYTY0X3ZlY3Rvcl9tYXNrKTsKK30KKwogI2lmZGVmIENPTkZJR19TTVAKICMJZGVmaW5lIElTX1JFU0NIRURVTEUodmVjKQkodmVjID09IElBNjRfSVBJX1JFU0NIRURVTEUpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9tY2FfYXNtLlMgYi9hcmNoL2lhNjQva2VybmVsL21jYV9hc20uUwppbmRleCA2ZGZmMDI0Li5jMWJkMWZlIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL21jYV9hc20uUworKysgYi9hcmNoL2lhNjQva2VybmVsL21jYV9hc20uUwpAQCAtMTU5LDcgKzE1OSw3IEBACiAJR0VUX0lBNjRfTUNBX0RBVEEocjIpCiAJLy8gVXNpbmcgTUNBIHN0YWNrLCBzdHJ1Y3QgaWE2NF9zYWxfb3Nfc3RhdGUsIHZhcmlhYmxlIHByb2Nfc3RhdGVfcGFyYW0KIAk7OwotCWFkZCByMz1JQTY0X01DQV9DUFVfTUNBX1NUQUNLX09GRlNFVCtNQ0FfU09TX09GRlNFVCtJQTY0X1NBTF9PU19TVEFURV9QUk9DX1NUQVRFX1BBUkFNX09GRlNFVCwgcjIKKwlhZGQgcjM9SUE2NF9NQ0FfQ1BVX01DQV9TVEFDS19PRkZTRVQrTUNBX1NPU19PRkZTRVQrU09TKFBST0NfU1RBVEVfUEFSQU0pLCByMgogCTs7CiAJbGQ4IHIxOD1bcjNdCQkJCS8vIEdldCBwcm9jZXNzb3Igc3RhdGUgcGFyYW1ldGVyIG9uIGV4aXN0aW5nIFBBTEVfQ0hFQ0suCiAJOzsKQEAgLTQ3OSw5ICs0NzksMTEgQEAKIAlzdDggW3RlbXAyXT1yMTEsMTYJLy8gcnZfcmMKIAltb3YgcjExPWNyLmlpcGEKIAk7OwotCXN0OCBbdGVtcDFdPXIxOCwxNgkvLyBwcm9jX3N0YXRlX3BhcmFtCi0Jc3Q4IFt0ZW1wMl09cjE5LDE2CS8vIG1vbmFyY2gKKwlzdDggW3RlbXAxXT1yMTgJCS8vIHByb2Nfc3RhdGVfcGFyYW0KKwlzdDggW3RlbXAyXT1yMTkJCS8vIG1vbmFyY2gKIAltb3YgcjY9SUE2NF9LUihDVVJSRU5UKQorCWFkZCB0ZW1wMT1TT1MoU0FMX1JBKSwgcmVncworCWFkZCB0ZW1wMj1TT1MoU0FMX0dQKSwgcmVncwogCTs7CiAJc3Q4IFt0ZW1wMV09cjEyLDE2CS8vIHNhbF9yYQogCXN0OCBbdGVtcDJdPXIxMCwxNgkvLyBzYWxfZ3AKQEAgLTUwMywxMiArNTA1LDE0IEBACiAJc3Q4IFt0ZW1wMl09cjExLDE2CS8vIGNyLmlpcGEKIAltb3YgcjEyPWNyLmlpbQogCTs7Ci0Jc3Q4IFt0ZW1wMV09cjEyLDE2CS8vIGNyLmlpbQorCXN0OCBbdGVtcDFdPXIxMgkJLy8gY3IuaWltCiAocDEpCW1vdiByMTI9SUE2NF9NQ0FfQ09MRF9CT09UCiAocDIpCW1vdiByMTI9SUE2NF9JTklUX1dBUk1fQk9PVAogCW1vdiByNj1jci5paGEKKwlhZGQgdGVtcDE9U09TKE9TX1NUQVRVUyksIHJlZ3MKIAk7OwotCXN0OCBbdGVtcDJdPXI2LDE2CS8vIGNyLmloYQorCXN0OCBbdGVtcDJdPXI2CQkvLyBjci5paGEKKwlhZGQgdGVtcDI9U09TKENPTlRFWFQpLCByZWdzCiAJc3Q4IFt0ZW1wMV09cjEyCQkvLyBvc19zdGF0dXMsIGRlZmF1bHQgaXMgY29sZCBib290CiAJbW92IHI2PUlBNjRfTUNBX1NBTUVfQ09OVEVYVAogCTs7CkBAIC04MjAsOCArODI0LDggQEAKIAkvLyBSZXN0b3JlIHRoZSBTQUwgdG8gT1Mgc3RhdGUuIFRoZSBwcmV2aW91cyBjb2RlIGxlZnQgcmVncyBhdCBwdF9yZWdzLgogCWFkZCByZWdzPU1DQV9TT1NfT0ZGU0VULU1DQV9QVF9SRUdTX09GRlNFVCwgcmVncwogCTs7Ci0JYWRkIHRlbXAxPUlBNjRfU0FMX09TX1NUQVRFX0NPTU1PTl9PRkZTRVQsIHJlZ3MKLQlhZGQgdGVtcDI9SUE2NF9TQUxfT1NfU1RBVEVfQ09NTU9OX09GRlNFVCs4LCByZWdzCisJYWRkIHRlbXAxPVNPUyhTQUxfUkEpLCByZWdzCisJYWRkIHRlbXAyPVNPUyhTQUxfR1ApLCByZWdzCiAJOzsKIAlsZDggcjEyPVt0ZW1wMV0sMTYJLy8gc2FsX3JhCiAJbGQ4IHI5PVt0ZW1wMl0sMTYJLy8gc2FsX2dwCkBAIC04NDIsOCArODQ2LDEwIEBACiAJOzsKIAltb3YgY3IuaXRpcj10ZW1wMwogCW1vdiBjci5paXBhPXRlbXA0Ci0JbGQ4IHRlbXAzPVt0ZW1wMV0sMTYJLy8gY3IuaWltCi0JbGQ4IHRlbXA0PVt0ZW1wMl0sMTYJLy8gY3IuaWhhCisJbGQ4IHRlbXAzPVt0ZW1wMV0JLy8gY3IuaWltCisJbGQ4IHRlbXA0PVt0ZW1wMl0JCS8vIGNyLmloYQorCWFkZCB0ZW1wMT1TT1MoT1NfU1RBVFVTKSwgcmVncworCWFkZCB0ZW1wMj1TT1MoQ09OVEVYVCksIHJlZ3MKIAk7OwogCW1vdiBjci5paW09dGVtcDMKIAltb3YgY3IuaWhhPXRlbXA0CkBAIC05MTYsNyArOTIyLDcgQEAKIAogaWE2NF9uZXdfc3RhY2s6CiAJYWRkIHJlZ3M9TUNBX1BUX1JFR1NfT0ZGU0VULCByMwotCWFkZCB0ZW1wMj1NQ0FfU09TX09GRlNFVCtJQTY0X1NBTF9PU19TVEFURV9QQUxfTUlOX1NUQVRFX09GRlNFVCwgcjMKKwlhZGQgdGVtcDI9TUNBX1NPU19PRkZTRVQrU09TKFBBTF9NSU5fU1RBVEUpLCByMwogCW1vdiBiMD1yMgkJCS8vIHNhdmUgcmV0dXJuIGFkZHJlc3MKIAlHRVRfSUE2NF9NQ0FfREFUQSh0ZW1wMSkKIAlpbnZhbGEKQEAgLTEwMjAsNyArMTAyNiw3IEBACiAKIGlhNjRfc2V0X2tlcm5lbF9yZWdpc3RlcnM6CiAJYWRkIHRlbXAzPU1DQV9TUF9PRkZTRVQsIHIzCi0JYWRkIHRlbXA0PU1DQV9TT1NfT0ZGU0VUK0lBNjRfU0FMX09TX1NUQVRFX09TX0dQX09GRlNFVCwgcjMKKwlhZGQgdGVtcDQ9TUNBX1NPU19PRkZTRVQrU09TKE9TX0dQKSwgcjMKIAltb3YgYjA9cjIJCS8vIHNhdmUgcmV0dXJuIGFkZHJlc3MKIAlHRVRfSUE2NF9NQ0FfREFUQSh0ZW1wMSkKIAk7OwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9wZXJmbW9uLmMgYi9hcmNoL2lhNjQva2VybmVsL3BlcmZtb24uYwppbmRleCAwNzdmMjEyLi42ZDdiYzhmIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL3BlcmZtb24uYworKysgYi9hcmNoL2lhNjQva2VybmVsL3BlcmZtb24uYwpAQCAtNTMyLDcgKzUzMiw2IEBACiBzdGF0aWMgc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKnBmbV9zeXNjdGxfaGVhZGVyOwogCiBzdGF0aWMgaW50IHBmbV9jb250ZXh0X3VubG9hZChwZm1fY29udGV4dF90ICpjdHgsIHZvaWQgKmFyZywgaW50IGNvdW50LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Ci1zdGF0aWMgaW50IHBmbV9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlscCk7CiAKICNkZWZpbmUgcGZtX2dldF9jcHVfdmFyKHYpCQlfX2lhNjRfcGVyX2NwdV92YXIodikKICNkZWZpbmUgcGZtX2dldF9jcHVfZGF0YShhLGIpCQlwZXJfY3B1KGEsIGIpCkBAIC01OTUsMTAgKzU5NCwxMSBAQAogfQogCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKgotcGZtZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludAorcGZtZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAorCSAgICAgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9wc2V1ZG8oZnNfdHlwZSwgInBmbToiLCBOVUxMLCBQRk1GU19NQUdJQyk7CisJcmV0dXJuIGdldF9zYl9wc2V1ZG8oZnNfdHlwZSwgInBmbToiLCBOVUxMLCBQRk1GU19NQUdJQywgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHBmbV9mc190eXBlID0gewpAQCAtMTc3Myw3ICsxNzczLDcgQEAKICAqIFdoZW4gY2FsbGVyIGlzIHNlbGYtbW9uaXRvcmluZywgdGhlIGNvbnRleHQgaXMgdW5sb2FkZWQuCiAgKi8KIHN0YXRpYyBpbnQKLXBmbV9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlscCkKK3BmbV9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlscCwgZmxfb3duZXJfdCBpZCkKIHsKIAlwZm1fY29udGV4dF90ICpjdHg7CiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9zYWwuYyBiL2FyY2gvaWE2NC9rZXJuZWwvc2FsLmMKaW5kZXggMDU2ZjdhNi4uNzdmYTY1OSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9zYWwuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3NhbC5jCkBAIC0yMjcsNyArMjI3LDcgQEAKIHN0YXRpYyB2b2lkIF9faW5pdAogY2hlY2tfc2FsX2NhY2hlX2ZsdXNoICh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGl0djsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBjcHU7CiAJdTY0IHZlY3RvcjsKIApAQCAtMjM4LDkgKzIzOCw2IEBACiAJICogU2NoZWR1bGUgYSB0aW1lciBpbnRlcnJ1cHQsIHdhaXQgdW50aWwgaXQncyByZXBvcnRlZCwgYW5kIHNlZSBpZgogCSAqIFNBTF9DQUNIRV9GTFVTSCBkcm9wcyBpdC4KIAkgKi8KLQlpdHYgPSBpYTY0X2dldF9pdHYoKTsKLQlCVUdfT04oKGl0diAmICgxIDw8IDE2KSkgPT0gMCk7Ci0KIAlpYTY0X3NldF9pdHYoSUE2NF9USU1FUl9WRUNUT1IpOwogCWlhNjRfc2V0X2l0bShpYTY0X2dldF9pdGMoKSArIDEwMDApOwogCkBAIC0yNjAsNyArMjU3LDYgQEAKIAkJaWE2NF9lb2koKTsKIAl9CiAKLQlpYTY0X3NldF9pdHYoaXR2KTsKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAJcHV0X2NwdSgpOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9zZXR1cC5jIGIvYXJjaC9pYTY0L2tlcm5lbC9zZXR1cC5jCmluZGV4IGU0ZGZkYTEuLjZkYmEyZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3NldHVwLmMKQEAgLTI2MCw2ICsyNjAsNyBAQAogCW4rKzsKIAogCW51bV9yc3ZkX3JlZ2lvbnMgPSBuOworCUJVR19PTihJQTY0X01BWF9SU1ZEX1JFR0lPTlMgKyAxIDwgbik7CiAKIAlzb3J0X3JlZ2lvbnMocnN2ZF9yZWdpb24sIG51bV9yc3ZkX3JlZ2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC91bmNhY2hlZC5jIGIvYXJjaC9pYTY0L2tlcm5lbC91bmNhY2hlZC5jCmluZGV4IGZjZDJiYWQuLjVmMDNiOWUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvdW5jYWNoZWQuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3VuY2FjaGVkLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0yOSwxNSArMjksOCBAQAogI2luY2x1ZGUgPGFzbS90bGJmbHVzaC5oPgogI2luY2x1ZGUgPGFzbS9zbi9hcmNoLmg+CiAKLSNkZWZpbmUgREVCVUcJMAogCi0jaWYgREVCVUcKLSNkZWZpbmUgZHByaW50awkJCXByaW50awotI2Vsc2UKLSNkZWZpbmUgZHByaW50ayh4Li4uKQkJZG8geyB9IHdoaWxlICgwKQotI2VuZGlmCi0KLXZvaWQgX19pbml0IGVmaV9tZW1tYXBfd2Fsa191YyAoZWZpX2ZyZWVtZW1fY2FsbGJhY2tfdCBjYWxsYmFjayk7CitleHRlcm4gdm9pZCBfX2luaXQgZWZpX21lbW1hcF93YWxrX3VjKGVmaV9mcmVlbWVtX2NhbGxiYWNrX3QsIHZvaWQgKik7CiAKICNkZWZpbmUgTUFYX1VOQ0FDSEVEX0dSQU5VTEVTCTUKIHN0YXRpYyBpbnQgYWxsb2NhdGVkX2dyYW51bGVzOwpAQCAtNjAsNiArNTMsNyBAQAogc3RhdGljIHZvaWQgdW5jYWNoZWRfaXBpX21jX2RyYWluKHZvaWQgKmRhdGEpCiB7CiAJaW50IHN0YXR1czsKKwogCXN0YXR1cyA9IGlhNjRfcGFsX21jX2RyYWluKCk7CiAJaWYgKHN0YXR1cykKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiaWE2NF9wYWxfbWNfZHJhaW4oKSBmYWlsZWQgd2l0aCAlaSBvbiAiCkBAIC02NywzMCArNjEsMzUgQEAKIH0KIAogCi1zdGF0aWMgdW5zaWduZWQgbG9uZwotdW5jYWNoZWRfZ2V0X25ld19jaHVuayhzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2xwKQorLyoKKyAqIEFkZCBhIG5ldyBjaHVuayBvZiB1bmNhY2hlZCBtZW1vcnkgcGFnZXMgdG8gdGhlIHNwZWNpZmllZCBwb29sLgorICoKKyAqIEBwb29sOiBwb29sIHRvIGFkZCBuZXcgY2h1bmsgb2YgdW5jYWNoZWQgbWVtb3J5IHRvCisgKiBAbmlkOiBub2RlIGlkIG9mIG5vZGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZyb20sIG9yIC0xCisgKgorICogVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZmlyc3QgYWxsb2NhdGluZyBhIGdyYW51bGUgb2YgY2FjaGVkIG1lbW9yeSBwYWdlcworICogYW5kIHRoZW4gY29udmVydGluZyB0aGVtIHRvIHVuY2FjaGVkIG1lbW9yeSBwYWdlcy4KKyAqLworc3RhdGljIGludCB1bmNhY2hlZF9hZGRfY2h1bmsoc3RydWN0IGdlbl9wb29sICpwb29sLCBpbnQgbmlkKQogewogCXN0cnVjdCBwYWdlICpwYWdlOwotCXZvaWQgKnRtcDsKIAlpbnQgc3RhdHVzLCBpOwotCXVuc2lnbmVkIGxvbmcgYWRkciwgbm9kZTsKKwl1bnNpZ25lZCBsb25nIGNfYWRkciwgdWNfYWRkcjsKIAogCWlmIChhbGxvY2F0ZWRfZ3JhbnVsZXMgPj0gTUFYX1VOQ0FDSEVEX0dSQU5VTEVTKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIC0xOwogCi0Jbm9kZSA9IHBvb2xwLT5wcml2YXRlOwotCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLAorCS8qIGF0dGVtcHQgdG8gYWxsb2NhdGUgYSBncmFudWxlJ3Mgd29ydGggb2YgY2FjaGVkIG1lbW9yeSBwYWdlcyAqLworCisJcGFnZSA9IGFsbG9jX3BhZ2VzX25vZGUobmlkLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTywKIAkJCQlJQTY0X0dSQU5VTEVfU0hJRlQtUEFHRV9TSElGVCk7Ci0KLQlkcHJpbnRrKEtFUk5fSU5GTyAiZ2V0X25ld19jaHVuayBwYWdlICVwLCBhZGRyICVseFxuIiwKLQkJcGFnZSwgKHVuc2lnbmVkIGxvbmcpKHBhZ2Utdm1lbV9tYXApIDw8IFBBR0VfU0hJRlQpOwotCi0JLyoKLQkgKiBEbyBtYWdpYyBpZiBubyBtZW0gb24gbG9jYWwgbm9kZSEgWFhYCi0JICovCiAJaWYgKCFwYWdlKQotCQlyZXR1cm4gMDsKLQl0bXAgPSBwYWdlX2FkZHJlc3MocGFnZSk7CisJCXJldHVybiAtMTsKKworCS8qIGNvbnZlcnQgdGhlIG1lbW9yeSBwYWdlcyBmcm9tIGNhY2hlZCB0byB1bmNhY2hlZCAqLworCisJY19hZGRyID0gKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpOworCXVjX2FkZHIgPSBjX2FkZHIgLSBQQUdFX09GRlNFVCArIF9fSUE2NF9VTkNBQ0hFRF9PRkZTRVQ7CiAKIAkvKgogCSAqIFRoZXJlJ3MgYSBzbWFsbCByYWNlIGhlcmUgd2hlcmUgaXQncyBwb3NzaWJsZSBmb3Igc29tZW9uZSB0bwpAQCAtMTAwLDc2ICs5OSw5MCBAQAogCWZvciAoaSA9IDA7IGkgPCAoSUE2NF9HUkFOVUxFX1NJWkUgLyBQQUdFX1NJWkUpOyBpKyspCiAJCVNldFBhZ2VVbmNhY2hlZCgmcGFnZVtpXSk7CiAKLQlmbHVzaF90bGJfa2VybmVsX3JhbmdlKHRtcCwgdG1wICsgSUE2NF9HUkFOVUxFX1NJWkUpOworCWZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UodWNfYWRkciwgdWNfYWRkZHIgKyBJQTY0X0dSQU5VTEVfU0laRSk7CiAKIAlzdGF0dXMgPSBpYTY0X3BhbF9wcmVmZXRjaF92aXNpYmlsaXR5KFBBTF9WSVNJQklMSVRZX1BIWVNJQ0FMKTsKLQotCWRwcmludGsoS0VSTl9JTkZPICJwYWxfcHJlZmV0Y2hfdmlzaWJpbGl0eSgpIHJldHVybnMgJWkgb24gY3B1ICVpXG4iLAotCQlzdGF0dXMsIHJhd19zbXBfcHJvY2Vzc29yX2lkKCkpOwotCiAJaWYgKCFzdGF0dXMpIHsKIAkJc3RhdHVzID0gc21wX2NhbGxfZnVuY3Rpb24odW5jYWNoZWRfaXBpX3Zpc2liaWxpdHksIE5VTEwsIDAsIDEpOwogCQlpZiAoc3RhdHVzKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAic21wX2NhbGxfZnVuY3Rpb24gZmFpbGVkIGZvciAiCi0JCQkgICAgICAgInVuY2FjaGVkX2lwaV92aXNpYmlsaXR5ISAoJWkpXG4iLCBzdGF0dXMpOworCQkJZ290byBmYWlsZWQ7CiAJfQogCisJcHJlZW1wdF9kaXNhYmxlKCk7CisKIAlpZiAoaWE2NF9wbGF0Zm9ybV9pcygic24yIikpCi0JCXNuX2ZsdXNoX2FsbF9jYWNoZXMoKHVuc2lnbmVkIGxvbmcpdG1wLCBJQTY0X0dSQU5VTEVfU0laRSk7CisJCXNuX2ZsdXNoX2FsbF9jYWNoZXModWNfYWRkciwgSUE2NF9HUkFOVUxFX1NJWkUpOwogCWVsc2UKLQkJZmx1c2hfaWNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKXRtcCwKLQkJCQkgICAodW5zaWduZWQgbG9uZyl0bXArSUE2NF9HUkFOVUxFX1NJWkUpOworCQlmbHVzaF9pY2FjaGVfcmFuZ2UodWNfYWRkciwgdWNfYWRkciArIElBNjRfR1JBTlVMRV9TSVpFKTsKKworCS8qIGZsdXNoIHRoZSBqdXN0IGludHJvZHVjZWQgdW5jYWNoZWQgdHJhbnNsYXRpb24gZnJvbSB0aGUgVExCICovCisJbG9jYWxfZmx1c2hfdGxiX2FsbCgpOworCisJcHJlZW1wdF9lbmFibGUoKTsKIAogCWlhNjRfcGFsX21jX2RyYWluKCk7CiAJc3RhdHVzID0gc21wX2NhbGxfZnVuY3Rpb24odW5jYWNoZWRfaXBpX21jX2RyYWluLCBOVUxMLCAwLCAxKTsKIAlpZiAoc3RhdHVzKQotCQlwcmludGsoS0VSTl9XQVJOSU5HICJzbXBfY2FsbF9mdW5jdGlvbiBmYWlsZWQgZm9yICIKLQkJICAgICAgICJ1bmNhY2hlZF9pcGlfbWNfZHJhaW4hICglaSlcbiIsIHN0YXR1cyk7CisJCWdvdG8gZmFpbGVkOwogCi0JYWRkciA9ICh1bnNpZ25lZCBsb25nKXRtcCAtIFBBR0VfT0ZGU0VUICsgX19JQTY0X1VOQ0FDSEVEX09GRlNFVDsKKwkvKgorCSAqIFRoZSBjaHVuayBvZiBtZW1vcnkgcGFnZXMgaGFzIGJlZW4gY29udmVydGVkIHRvIHVuY2FjaGVkIHNvIG5vdyB3ZQorCSAqIGNhbiBhZGQgaXQgdG8gdGhlIHBvb2wuCisJICovCisJc3RhdHVzID0gZ2VuX3Bvb2xfYWRkKHBvb2wsIHVjX2FkZHIsIElBNjRfR1JBTlVMRV9TSVpFLCBuaWQpOworCWlmIChzdGF0dXMpCisJCWdvdG8gZmFpbGVkOwogCiAJYWxsb2NhdGVkX2dyYW51bGVzKys7Ci0JcmV0dXJuIGFkZHI7CisJcmV0dXJuIDA7CisKKwkvKiBmYWlsZWQgdG8gY29udmVydCBvciBhZGQgdGhlIGNodW5rIHNvIGdpdmUgaXQgYmFjayB0byB0aGUga2VybmVsICovCitmYWlsZWQ6CisJZm9yIChpID0gMDsgaSA8IChJQTY0X0dSQU5VTEVfU0laRSAvIFBBR0VfU0laRSk7IGkrKykKKwkJQ2xlYXJQYWdlVW5jYWNoZWQoJnBhZ2VbaV0pOworCisJZnJlZV9wYWdlcyhjX2FkZHIsIElBNjRfR1JBTlVMRV9TSElGVC1QQUdFX1NISUZUKTsKKwlyZXR1cm4gLTE7CiB9CiAKIAogLyoKICAqIHVuY2FjaGVkX2FsbG9jX3BhZ2UKICAqCisgKiBAc3RhcnRpbmdfbmlkOiBub2RlIGlkIG9mIG5vZGUgdG8gc3RhcnQgd2l0aCwgb3IgLTEKKyAqCiAgKiBBbGxvY2F0ZSAxIHVuY2FjaGVkIHBhZ2UuIEFsbG9jYXRlcyBvbiB0aGUgcmVxdWVzdGVkIG5vZGUuIElmIG5vCiAgKiB1bmNhY2hlZCBwYWdlcyBhcmUgYXZhaWxhYmxlIG9uIHRoZSByZXF1ZXN0ZWQgbm9kZSwgcm91bmRyb2JpbiBzdGFydGluZwotICogd2l0aCBoaWdoZXIgbm9kZXMuCisgKiB3aXRoIHRoZSBuZXh0IGhpZ2hlciBub2RlLgogICovCi11bnNpZ25lZCBsb25nCi11bmNhY2hlZF9hbGxvY19wYWdlKGludCBuaWQpCit1bnNpZ25lZCBsb25nIHVuY2FjaGVkX2FsbG9jX3BhZ2UoaW50IHN0YXJ0aW5nX25pZCkKIHsKLQl1bnNpZ25lZCBsb25nIG1hZGRyOworCXVuc2lnbmVkIGxvbmcgdWNfYWRkcjsKKwlzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2w7CisJaW50IG5pZDsKIAotCW1hZGRyID0gZ2VuX3Bvb2xfYWxsb2ModW5jYWNoZWRfcG9vbFtuaWRdLCBQQUdFX1NJWkUpOworCWlmICh1bmxpa2VseShzdGFydGluZ19uaWQgPj0gTUFYX05VTU5PREVTKSkKKwkJcmV0dXJuIDA7CiAKLQlkcHJpbnRrKEtFUk5fREVCVUcgInVuY2FjaGVkX2FsbG9jX3BhZ2UgcmV0dXJucyAlbHggb24gbm9kZSAlaVxuIiwKLQkJbWFkZHIsIG5pZCk7CisJaWYgKHN0YXJ0aW5nX25pZCA8IDApCisJCXN0YXJ0aW5nX25pZCA9IG51bWFfbm9kZV9pZCgpOworCW5pZCA9IHN0YXJ0aW5nX25pZDsKIAotCS8qCi0JICogSWYgbm8gbWVtb3J5IGlzIGF2YWlsYmxlIG9uIG91ciBsb2NhbCBub2RlLCB0cnkgdGhlCi0JICogcmVtYWluaW5nIG5vZGVzIGluIHRoZSBzeXN0ZW0uCi0JICovCi0JaWYgKCFtYWRkcikgewotCQlpbnQgaTsKKwlkbyB7CisJCWlmICghbm9kZV9vbmxpbmUobmlkKSkKKwkJCWNvbnRpbnVlOworCQlwb29sID0gdW5jYWNoZWRfcG9vbFtuaWRdOworCQlpZiAocG9vbCA9PSBOVUxMKQorCQkJY29udGludWU7CisJCWRvIHsKKwkJCXVjX2FkZHIgPSBnZW5fcG9vbF9hbGxvYyhwb29sLCBQQUdFX1NJWkUpOworCQkJaWYgKHVjX2FkZHIgIT0gMCkKKwkJCQlyZXR1cm4gdWNfYWRkcjsKKwkJfSB3aGlsZSAodW5jYWNoZWRfYWRkX2NodW5rKHBvb2wsIG5pZCkgPT0gMCk7CiAKLQkJZm9yIChpID0gTUFYX05VTU5PREVTIC0gMTsgaSA+PSAwOyBpLS0pIHsKLQkJCWlmIChpID09IG5pZCB8fCAhbm9kZV9vbmxpbmUoaSkpCi0JCQkJY29udGludWU7Ci0JCQltYWRkciA9IGdlbl9wb29sX2FsbG9jKHVuY2FjaGVkX3Bvb2xbaV0sIFBBR0VfU0laRSk7Ci0JCQlkcHJpbnRrKEtFUk5fREVCVUcgInVuY2FjaGVkX2FsbG9jX3BhZ2UgYWx0ZXJuYXRlIHNlYXJjaCAiCi0JCQkJInJldHVybnMgJWx4IG9uIG5vZGUgJWlcbiIsIG1hZGRyLCBpKTsKLQkJCWlmIChtYWRkcikgewotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQorCX0gd2hpbGUgKChuaWQgPSAobmlkICsgMSkgJSBNQVhfTlVNTk9ERVMpICE9IHN0YXJ0aW5nX25pZCk7CiAKLQlyZXR1cm4gbWFkZHI7CisJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKHVuY2FjaGVkX2FsbG9jX3BhZ2UpOwogCkBAIC0xNzcsMjEgKzE5MCwyMiBAQAogLyoKICAqIHVuY2FjaGVkX2ZyZWVfcGFnZQogICoKKyAqIEB1Y19hZGRyOiB1bmNhY2hlZCBhZGRyZXNzIG9mIHBhZ2UgdG8gZnJlZQorICoKICAqIEZyZWUgYSBzaW5nbGUgdW5jYWNoZWQgcGFnZS4KICAqLwotdm9pZAotdW5jYWNoZWRfZnJlZV9wYWdlKHVuc2lnbmVkIGxvbmcgbWFkZHIpCit2b2lkIHVuY2FjaGVkX2ZyZWVfcGFnZSh1bnNpZ25lZCBsb25nIHVjX2FkZHIpCiB7Ci0JaW50IG5vZGU7CisJaW50IG5pZCA9IHBhZGRyX3RvX25pZCh1Y19hZGRyIC0gX19JQTY0X1VOQ0FDSEVEX09GRlNFVCk7CisJc3RydWN0IGdlbl9wb29sICpwb29sID0gdW5jYWNoZWRfcG9vbFtuaWRdOwogCi0Jbm9kZSA9IHBhZGRyX3RvX25pZChtYWRkciAtIF9fSUE2NF9VTkNBQ0hFRF9PRkZTRVQpOworCWlmICh1bmxpa2VseShwb29sID09IE5VTEwpKQorCQlyZXR1cm47CiAKLQlkcHJpbnRrKEtFUk5fREVCVUcgInVuY2FjaGVkX2ZyZWVfcGFnZSglbHgpIG9uIG5vZGUgJWlcbiIsIG1hZGRyLCBub2RlKTsKKwlpZiAoKHVjX2FkZHIgJiAoMFhGVUwgPDwgNjApKSAhPSBfX0lBNjRfVU5DQUNIRURfT0ZGU0VUKQorCQlwYW5pYygidW5jYWNoZWRfZnJlZV9wYWdlIGludmFsaWQgYWRkcmVzcyAlbHhcbiIsIHVjX2FkZHIpOwogCi0JaWYgKChtYWRkciAmICgwWEZVTCA8PCA2MCkpICE9IF9fSUE2NF9VTkNBQ0hFRF9PRkZTRVQpCi0JCXBhbmljKCJ1bmNhY2hlZF9mcmVlX3BhZ2UgaW52YWxpZCBhZGRyZXNzICVseFxuIiwgbWFkZHIpOwotCi0JZ2VuX3Bvb2xfZnJlZSh1bmNhY2hlZF9wb29sW25vZGVdLCBtYWRkciwgUEFHRV9TSVpFKTsKKwlnZW5fcG9vbF9mcmVlKHBvb2wsIHVjX2FkZHIsIFBBR0VfU0laRSk7CiB9CiBFWFBPUlRfU1lNQk9MKHVuY2FjaGVkX2ZyZWVfcGFnZSk7CiAKQEAgLTE5OSw0MyArMjEzLDM5IEBACiAvKgogICogdW5jYWNoZWRfYnVpbGRfbWVtbWFwLAogICoKKyAqIEB1Y19zdGFydDogdW5jYWNoZWQgc3RhcnRpbmcgYWRkcmVzcyBvZiBhIGNodW5rIG9mIHVuY2FjaGVkIG1lbW9yeQorICogQHVjX2VuZDogdW5jYWNoZWQgZW5kaW5nIGFkZHJlc3Mgb2YgYSBjaHVuayBvZiB1bmNhY2hlZCBtZW1vcnkKKyAqIEBhcmc6IGlnbm9yZWQsIChOVUxMIGFyZ3VtZW50IHBhc3NlZCBpbiBvbiBjYWxsIHRvIGVmaV9tZW1tYXBfd2Fsa191YygpKQorICoKICAqIENhbGxlZCBhdCBib290IHRpbWUgdG8gYnVpbGQgYSBtYXAgb2YgcGFnZXMgdGhhdCBjYW4gYmUgdXNlZCBmb3IKICAqIG1lbW9yeSBzcGVjaWFsIG9wZXJhdGlvbnMuCiAgKi8KLXN0YXRpYyBpbnQgX19pbml0Ci11bmNhY2hlZF9idWlsZF9tZW1tYXAodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHZvaWQgKmFyZykKK3N0YXRpYyBpbnQgX19pbml0IHVuY2FjaGVkX2J1aWxkX21lbW1hcCh1bnNpZ25lZCBsb25nIHVjX3N0YXJ0LAorCQkJCQl1bnNpZ25lZCBsb25nIHVjX2VuZCwgdm9pZCAqYXJnKQogewotCWxvbmcgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7Ci0JaW50IG5vZGU7Ci0KLQlkcHJpbnRrKEtFUk5fRVJSICJ1bmNhY2hlZF9idWlsZF9tZW1tYXAoJWx4ICVseClcbiIsIHN0YXJ0LCBlbmQpOworCWludCBuaWQgPSBwYWRkcl90b19uaWQodWNfc3RhcnQgLSBfX0lBNjRfVU5DQUNIRURfT0ZGU0VUKTsKKwlzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2wgPSB1bmNhY2hlZF9wb29sW25pZF07CisJc2l6ZV90IHNpemUgPSB1Y19lbmQgLSB1Y19zdGFydDsKIAogCXRvdWNoX3NvZnRsb2NrdXBfd2F0Y2hkb2coKTsKLQltZW1zZXQoKGNoYXIgKilzdGFydCwgMCwgbGVuZ3RoKTsKIAotCW5vZGUgPSBwYWRkcl90b19uaWQoc3RhcnQgLSBfX0lBNjRfVU5DQUNIRURfT0ZGU0VUKTsKLQotCWZvciAoOyBzdGFydCA8IGVuZCA7IHN0YXJ0ICs9IFBBR0VfU0laRSkgewotCQlkcHJpbnRrKEtFUk5fSU5GTyAic3RpY2tpbmcgJWx4IGludG8gdGhlIHBvb2whXG4iLCBzdGFydCk7Ci0JCWdlbl9wb29sX2ZyZWUodW5jYWNoZWRfcG9vbFtub2RlXSwgc3RhcnQsIFBBR0VfU0laRSk7CisJaWYgKHBvb2wgIT0gTlVMTCkgeworCQltZW1zZXQoKGNoYXIgKil1Y19zdGFydCwgMCwgc2l6ZSk7CisJCSh2b2lkKSBnZW5fcG9vbF9hZGQocG9vbCwgdWNfc3RhcnQsIHNpemUsIG5pZCk7CiAJfQotCiAJcmV0dXJuIDA7CiB9CiAKIAotc3RhdGljIGludCBfX2luaXQgdW5jYWNoZWRfaW5pdCh2b2lkKSB7Ci0JaW50IGk7CitzdGF0aWMgaW50IF9faW5pdCB1bmNhY2hlZF9pbml0KHZvaWQpCit7CisJaW50IG5pZDsKIAotCWZvciAoaSA9IDA7IGkgPCBNQVhfTlVNTk9ERVM7IGkrKykgewotCQlpZiAoIW5vZGVfb25saW5lKGkpKQotCQkJY29udGludWU7Ci0JCXVuY2FjaGVkX3Bvb2xbaV0gPSBnZW5fcG9vbF9jcmVhdGUoMCwgSUE2NF9HUkFOVUxFX1NISUZULAotCQkJCQkJICAgJnVuY2FjaGVkX2dldF9uZXdfY2h1bmssIGkpOworCWZvcl9lYWNoX29ubGluZV9ub2RlKG5pZCkgeworCQl1bmNhY2hlZF9wb29sW25pZF0gPSBnZW5fcG9vbF9jcmVhdGUoUEFHRV9TSElGVCwgbmlkKTsKIAl9CiAKLQllZmlfbWVtbWFwX3dhbGtfdWModW5jYWNoZWRfYnVpbGRfbWVtbWFwKTsKLQorCWVmaV9tZW1tYXBfd2Fsa191Yyh1bmNhY2hlZF9idWlsZF9tZW1tYXAsIE5VTEwpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvbW0vaW5pdC5jIGIvYXJjaC9pYTY0L21tL2luaXQuYwppbmRleCBjYWZhODc3Li4xMWYwODAwIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvbW0vaW5pdC5jCisrKyBiL2FyY2gvaWE2NC9tbS9pbml0LmMKQEAgLTY3MSw5ICs2NzEsMTEgQEAKIAogCXJldHVybiByZXQ7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChhZGRfbWVtb3J5KTsKIAogaW50IHJlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkKIHsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHJlbW92ZV9tZW1vcnkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvbW0vaW9yZW1hcC5jIGIvYXJjaC9pYTY0L21tL2lvcmVtYXAuYwppbmRleCA2NDNjY2M2Li4wN2JkMDJiIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvbW0vaW9yZW1hcC5jCisrKyBiL2FyY2gvaWE2NC9tbS9pb3JlbWFwLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9lZmkuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vbWVtaW5pdC5oPgogCiBzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqCiBfX2lvcmVtYXAgKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCkBAIC0yMSwxNiArMjIsMjkgQEAKIHZvaWQgX19pb21lbSAqCiBpb3JlbWFwICh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQogewotCWlmIChlZmlfbWVtX2F0dHJpYnV0ZV9yYW5nZShvZmZzZXQsIHNpemUsIEVGSV9NRU1PUllfV0IpKQotCQlyZXR1cm4gcGh5c190b192aXJ0KG9mZnNldCk7CisJdTY0IGF0dHI7CisJdW5zaWduZWQgbG9uZyBncmFuX2Jhc2UsIGdyYW5fc2l6ZTsKIAotCWlmIChlZmlfbWVtX2F0dHJpYnV0ZV9yYW5nZShvZmZzZXQsIHNpemUsIEVGSV9NRU1PUllfVUMpKQorCS8qCisJICogRm9yIHRoaW5ncyBpbiBrZXJuX21lbW1hcCwgd2UgbXVzdCB1c2UgdGhlIHNhbWUgYXR0cmlidXRlCisJICogYXMgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbC4gIEZvciBtb3JlIGRldGFpbHMsIHNlZQorCSAqIERvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy50eHQuCisJICovCisJYXR0ciA9IGtlcm5fbWVtX2F0dHJpYnV0ZShvZmZzZXQsIHNpemUpOworCWlmIChhdHRyICYgRUZJX01FTU9SWV9XQikKKwkJcmV0dXJuIHBoeXNfdG9fdmlydChvZmZzZXQpOworCWVsc2UgaWYgKGF0dHIgJiBFRklfTUVNT1JZX1VDKQogCQlyZXR1cm4gX19pb3JlbWFwKG9mZnNldCwgc2l6ZSk7CiAKIAkvKgotCSAqIFNvbWVkYXkgdGhpcyBzaG91bGQgY2hlY2sgQUNQSSByZXNvdXJjZXMgc28gd2UKLQkgKiBjYW4gZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBob3QtcGx1Z2dlZCByZWdpb25zLgorCSAqIFNvbWUgY2hpcHNldHMgZG9uJ3Qgc3VwcG9ydCBVQyBhY2Nlc3MgdG8gbWVtb3J5LiAgSWYKKwkgKiBXQiBpcyBzdXBwb3J0ZWQgZm9yIHRoZSB3aG9sZSBncmFudWxlLCB3ZSBwcmVmZXIgdGhhdC4KIAkgKi8KKwlncmFuX2Jhc2UgPSBHUkFOVUxFUk9VTkRET1dOKG9mZnNldCk7CisJZ3Jhbl9zaXplID0gR1JBTlVMRVJPVU5EVVAob2Zmc2V0ICsgc2l6ZSkgLSBncmFuX2Jhc2U7CisJaWYgKGVmaV9tZW1fYXR0cmlidXRlKGdyYW5fYmFzZSwgZ3Jhbl9zaXplKSAmIEVGSV9NRU1PUllfV0IpCisJCXJldHVybiBwaHlzX3RvX3ZpcnQob2Zmc2V0KTsKKwogCXJldHVybiBfX2lvcmVtYXAob2Zmc2V0LCBzaXplKTsKIH0KIEVYUE9SVF9TWU1CT0woaW9yZW1hcCk7CkBAIC0zOCw2ICs1Miw5IEBACiB2b2lkIF9faW9tZW0gKgogaW9yZW1hcF9ub2NhY2hlICh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQogeworCWlmIChrZXJuX21lbV9hdHRyaWJ1dGUob2Zmc2V0LCBzaXplKSAmIEVGSV9NRU1PUllfV0IpCisJCXJldHVybiAwOworCiAJcmV0dXJuIF9faW9yZW1hcChvZmZzZXQsIHNpemUpOwogfQogRVhQT1JUX1NZTUJPTChpb3JlbWFwX25vY2FjaGUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L3BjaS9wY2kuYyBiL2FyY2gvaWE2NC9wY2kvcGNpLmMKaW5kZXggYWI4MjlhMi4uNjFkZDg2MCAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3BjaS9wY2kuYworKysgYi9hcmNoL2lhNjQvcGNpL3BjaS5jCkBAIC0zNTIsNyArMzUyLDcgQEAKIAlweG0gPSBhY3BpX2dldF9weG0oY29udHJvbGxlci0+YWNwaV9oYW5kbGUpOwogI2lmZGVmIENPTkZJR19OVU1BCiAJaWYgKHB4bSA+PSAwKQotCQljb250cm9sbGVyLT5ub2RlID0gcHhtX3RvX25pZF9tYXBbcHhtXTsKKwkJY29udHJvbGxlci0+bm9kZSA9IHB4bV90b19ub2RlKHB4bSk7CiAjZW5kaWYKIAogCWFjcGlfd2Fsa19yZXNvdXJjZXMoZGV2aWNlLT5oYW5kbGUsIE1FVEhPRF9OQU1FX19DUlMsIGNvdW50X3dpbmRvdywKQEAgLTY0NSwxOCArNjQ1LDMxIEBACiBpbnQKIHBjaV9tbWFwX2xlZ2FjeV9wYWdlX3JhbmdlKHN0cnVjdCBwY2lfYnVzICpidXMsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogeworCXVuc2lnbmVkIGxvbmcgc2l6ZSA9IHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydDsKKwlwZ3Byb3RfdCBwcm90OwogCWNoYXIgKmFkZHI7CiAKKwkvKgorCSAqIEF2b2lkIGF0dHJpYnV0ZSBhbGlhc2luZy4gIFNlZSBEb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmcudHh0CisJICogZm9yIG1vcmUgZGV0YWlscy4KKwkgKi8KKwlpZiAoIXZhbGlkX21tYXBfcGh5c19hZGRyX3JhbmdlKHZtYS0+dm1fcGdvZmYgPDwgUEFHRV9TSElGVCwgc2l6ZSkpCisJCXJldHVybiAtRUlOVkFMOworCXByb3QgPSBwaHlzX21lbV9hY2Nlc3NfcHJvdChOVUxMLCB2bWEtPnZtX3Bnb2ZmLCBzaXplLAorCQkJCSAgICB2bWEtPnZtX3BhZ2VfcHJvdCk7CisJaWYgKHBncHJvdF92YWwocHJvdCkgIT0gcGdwcm90X3ZhbChwZ3Byb3Rfbm9uY2FjaGVkKHZtYS0+dm1fcGFnZV9wcm90KSkpCisJCXJldHVybiAtRUlOVkFMOworCiAJYWRkciA9IHBjaV9nZXRfbGVnYWN5X21lbShidXMpOwogCWlmIChJU19FUlIoYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGFkZHIpOwogCiAJdm1hLT52bV9wZ29mZiArPSAodW5zaWduZWQgbG9uZylhZGRyID4+IFBBR0VfU0hJRlQ7Ci0Jdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3Rfbm9uY2FjaGVkKHZtYS0+dm1fcGFnZV9wcm90KTsKKwl2bWEtPnZtX3BhZ2VfcHJvdCA9IHByb3Q7CiAJdm1hLT52bV9mbGFncyB8PSAoVk1fU0hNIHwgVk1fUkVTRVJWRUQgfCBWTV9JTyk7CiAKIAlpZiAocmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLT52bV9zdGFydCwgdm1hLT52bV9wZ29mZiwKLQkJCSAgICB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fcGFnZV9wcm90KSkKKwkJCSAgICBzaXplLCB2bWEtPnZtX3BhZ2VfcHJvdCkpCiAJCXJldHVybiAtRUFHQUlOOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24va2VybmVsL2lvX2luaXQuYyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvaW9faW5pdC5jCmluZGV4IDUxMDFhYzQuLmRjMDlhNmEgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvaW9faW5pdC5jCisrKyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvaW9faW5pdC5jCkBAIC01OCw3ICs1OCw3IEBACiAgKi8KIAogc3RhdGljIGRtYV9hZGRyX3QKLXNuX2RlZmF1bHRfcGNpX21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBwYWRkciwgc2l6ZV90IHNpemUpCitzbl9kZWZhdWx0X3BjaV9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHNpemVfdCBzaXplLCBpbnQgdHlwZSkKIHsKIAlyZXR1cm4gMDsKIH0KQEAgLTQ1NywxMyArNDU3LDYgQEAKIAkJcGNpZGV2X2luZm8tPnBkaV9zbl9pcnFfaW5mbyA9IE5VTEw7CiAJCWtmcmVlKHNuX2lycV9pbmZvKTsKIAl9Ci0KLQkvKgotCSAqIE1TSSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBvbiBhbHRpeC4gIFJlbW92ZSB0aGlzIHdoZW4KLQkgKiB0aGUgTVNJIGFic3RyYWN0aW9uIHBhdGNoZXMgYXJlIGludGVncmF0ZWQgaW50byB0aGUga2VybmVsCi0JICogKHNvbWV0aW1lIGFmdGVyIDIuNi4xNiByZWxlYXNlcykKLQkgKi8KLQlkZXYtPm5vX21zaSA9IDE7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24va2VybmVsL2lycS5jIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9pcnEuYwppbmRleCBjMjY1ZTAyLi5kYzhlMmI2IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvc24va2VybmVsL2lycS5jCisrKyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvaXJxLmMKQEAgLTI2LDExICsyNiwxMSBAQAogCiBpbnQgc25fZm9yY2VfaW50ZXJydXB0X2ZsYWcgPSAxOwogZXh0ZXJuIGludCBzbl9pb2lmX2luaXRlZDsKLXN0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkICoqc25faXJxX2xoOworc3RydWN0IGxpc3RfaGVhZCAqKnNuX2lycV9saDsKIHN0YXRpYyBzcGlubG9ja190IHNuX2lycV9pbmZvX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7IC8qIG5vbi1JUlEgbG9jayAqLwogCi1zdGF0aWMgaW5saW5lIHU2NCBzbl9pbnRyX2FsbG9jKG5hc2lkX3QgbG9jYWxfbmFzaWQsIGludCBsb2NhbF93aWRnZXQsCi0JCQkJICAgICB1NjQgc25faXJxX2luZm8sCit1NjQgc25faW50cl9hbGxvYyhuYXNpZF90IGxvY2FsX25hc2lkLCBpbnQgbG9jYWxfd2lkZ2V0LAorCQkJCSAgICAgc3RydWN0IHNuX2lycV9pbmZvICpzbl9pcnFfaW5mbywKIAkJCQkgICAgIGludCByZXFfaXJxLCBuYXNpZF90IHJlcV9uYXNpZCwKIAkJCQkgICAgIGludCByZXFfc2xpY2UpCiB7CkBAIC00MCwxMiArNDAsMTMgQEAKIAogCVNBTF9DQUxMX05PTE9DSyhyZXRfc3R1ZmYsICh1NjQpIFNOX1NBTF9JT0lGX0lOVEVSUlVQVCwKIAkJCSh1NjQpIFNBTF9JTlRSX0FMTE9DLCAodTY0KSBsb2NhbF9uYXNpZCwKLQkJCSh1NjQpIGxvY2FsX3dpZGdldCwgKHU2NCkgc25faXJxX2luZm8sICh1NjQpIHJlcV9pcnEsCisJCQkodTY0KSBsb2NhbF93aWRnZXQsIF9fcGEoc25faXJxX2luZm8pLCAodTY0KSByZXFfaXJxLAogCQkJKHU2NCkgcmVxX25hc2lkLCAodTY0KSByZXFfc2xpY2UpOworCiAJcmV0dXJuIHJldF9zdHVmZi5zdGF0dXM7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzbl9pbnRyX2ZyZWUobmFzaWRfdCBsb2NhbF9uYXNpZCwgaW50IGxvY2FsX3dpZGdldCwKK3ZvaWQgc25faW50cl9mcmVlKG5hc2lkX3QgbG9jYWxfbmFzaWQsIGludCBsb2NhbF93aWRnZXQsCiAJCQkJc3RydWN0IHNuX2lycV9pbmZvICpzbl9pcnFfaW5mbykKIHsKIAlzdHJ1Y3QgaWE2NF9zYWxfcmV0dmFsIHJldF9zdHVmZjsKQEAgLTExMiw3MyArMTEzLDkxIEBACiAKIHN0YXRpYyB2b2lkIHNuX2lycV9pbmZvX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKTsKIAorc3RydWN0IHNuX2lycV9pbmZvICpzbl9yZXRhcmdldF92ZWN0b3Ioc3RydWN0IHNuX2lycV9pbmZvICpzbl9pcnFfaW5mbywKKwkJCQkgICAgICAgbmFzaWRfdCBuYXNpZCwgaW50IHNsaWNlKQoreworCWludCB2ZWN0b3I7CisJaW50IGNwdXBoeXM7CisJaW50NjRfdCBicmlkZ2U7CisJaW50IGxvY2FsX3dpZGdldCwgc3RhdHVzOworCW5hc2lkX3QgbG9jYWxfbmFzaWQ7CisJc3RydWN0IHNuX2lycV9pbmZvICpuZXdfaXJxX2luZm87CisJc3RydWN0IHNuX3BjaWJ1c19wcm92aWRlciAqcGNpX3Byb3ZpZGVyOworCisJbmV3X2lycV9pbmZvID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHNuX2lycV9pbmZvKSwgR0ZQX0FUT01JQyk7CisJaWYgKG5ld19pcnFfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCW1lbWNweShuZXdfaXJxX2luZm8sIHNuX2lycV9pbmZvLCBzaXplb2Yoc3RydWN0IHNuX2lycV9pbmZvKSk7CisKKwlicmlkZ2UgPSAodTY0KSBuZXdfaXJxX2luZm8tPmlycV9icmlkZ2U7CisJaWYgKCFicmlkZ2UpIHsKKwkJa2ZyZWUobmV3X2lycV9pbmZvKTsKKwkJcmV0dXJuIE5VTEw7IC8qIGlycSBpcyBub3QgYSBkZXZpY2UgaW50ZXJydXB0ICovCisJfQorCisJbG9jYWxfbmFzaWQgPSBOQVNJRF9HRVQoYnJpZGdlKTsKKworCWlmIChsb2NhbF9uYXNpZCAmIDEpCisJCWxvY2FsX3dpZGdldCA9IFRJT19TV0lOX1dJREdFVE5VTShicmlkZ2UpOworCWVsc2UKKwkJbG9jYWxfd2lkZ2V0ID0gU1dJTl9XSURHRVROVU0oYnJpZGdlKTsKKworCXZlY3RvciA9IHNuX2lycV9pbmZvLT5pcnFfaXJxOworCS8qIEZyZWUgdGhlIG9sZCBQUk9NIG5ld19pcnFfaW5mbyBzdHJ1Y3R1cmUgKi8KKwlzbl9pbnRyX2ZyZWUobG9jYWxfbmFzaWQsIGxvY2FsX3dpZGdldCwgbmV3X2lycV9pbmZvKTsKKwkvKiBVcGRhdGUga2VybmVscyBuZXdfaXJxX2luZm8gd2l0aCBuZXcgdGFyZ2V0IGluZm8gKi8KKwl1bnJlZ2lzdGVyX2ludHJfcGRhKG5ld19pcnFfaW5mbyk7CisKKwkvKiBhbGxvY2F0ZSBhIG5ldyBQUk9NIG5ld19pcnFfaW5mbyBzdHJ1Y3QgKi8KKwlzdGF0dXMgPSBzbl9pbnRyX2FsbG9jKGxvY2FsX25hc2lkLCBsb2NhbF93aWRnZXQsCisJCQkgICAgICAgbmV3X2lycV9pbmZvLCB2ZWN0b3IsCisJCQkgICAgICAgbmFzaWQsIHNsaWNlKTsKKworCS8qIFNBTCBjYWxsIGZhaWxlZCAqLworCWlmIChzdGF0dXMpIHsKKwkJa2ZyZWUobmV3X2lycV9pbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJY3B1cGh5cyA9IG5hc2lkX3NsaWNlX3RvX2NwdWlkKG5hc2lkLCBzbGljZSk7CisJbmV3X2lycV9pbmZvLT5pcnFfY3B1aWQgPSBjcHVwaHlzOworCXJlZ2lzdGVyX2ludHJfcGRhKG5ld19pcnFfaW5mbyk7CisKKwlwY2lfcHJvdmlkZXIgPSBzbl9wY2lfcHJvdmlkZXJbbmV3X2lycV9pbmZvLT5pcnFfYnJpZGdlX3R5cGVdOworCisJLyoKKwkgKiBJZiB0aGlzIHJlcHJlc2VudHMgYSBsaW5lIGludGVycnVwdCwgdGFyZ2V0IGl0LiAgSWYgaXQncworCSAqIGFuIG1zaSAoaXJxX2ludF9iaXQgPCAwKSwgaXQncyBhbHJlYWR5IHRhcmdldGVkLgorCSAqLworCWlmIChuZXdfaXJxX2luZm8tPmlycV9pbnRfYml0ID49IDAgJiYKKwkgICAgcGNpX3Byb3ZpZGVyICYmIHBjaV9wcm92aWRlci0+dGFyZ2V0X2ludGVycnVwdCkKKwkJKHBjaV9wcm92aWRlci0+dGFyZ2V0X2ludGVycnVwdCkobmV3X2lycV9pbmZvKTsKKworCXNwaW5fbG9jaygmc25faXJxX2luZm9fbG9jayk7CisJbGlzdF9yZXBsYWNlX3JjdSgmc25faXJxX2luZm8tPmxpc3QsICZuZXdfaXJxX2luZm8tPmxpc3QpOworCXNwaW5fdW5sb2NrKCZzbl9pcnFfaW5mb19sb2NrKTsKKwljYWxsX3JjdSgmc25faXJxX2luZm8tPnJjdSwgc25faXJxX2luZm9fZnJlZSk7CisKKyNpZmRlZiBDT05GSUdfU01QCisJc2V0X2lycV9hZmZpbml0eV9pbmZvKCh2ZWN0b3IgJiAweGZmKSwgY3B1cGh5cywgMCk7CisjZW5kaWYKKworCXJldHVybiBuZXdfaXJxX2luZm87Cit9CisKIHN0YXRpYyB2b2lkIHNuX3NldF9hZmZpbml0eV9pcnEodW5zaWduZWQgaW50IGlycSwgY3B1bWFza190IG1hc2spCiB7CiAJc3RydWN0IHNuX2lycV9pbmZvICpzbl9pcnFfaW5mbywgKnNuX2lycV9pbmZvX3NhZmU7Ci0JaW50IGNwdWlkLCBjcHVwaHlzOworCW5hc2lkX3QgbmFzaWQ7CisJaW50IHNsaWNlOwogCi0JY3B1aWQgPSBmaXJzdF9jcHUobWFzayk7Ci0JY3B1cGh5cyA9IGNwdV9waHlzaWNhbF9pZChjcHVpZCk7CisJbmFzaWQgPSBjcHVpZF90b19uYXNpZChmaXJzdF9jcHUobWFzaykpOworCXNsaWNlID0gY3B1aWRfdG9fc2xpY2UoZmlyc3RfY3B1KG1hc2spKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzbl9pcnFfaW5mbywgc25faXJxX2luZm9fc2FmZSwKLQkJCQkgc25faXJxX2xoW2lycV0sIGxpc3QpIHsKLQkJdTY0IGJyaWRnZTsKLQkJaW50IGxvY2FsX3dpZGdldCwgc3RhdHVzOwotCQluYXNpZF90IGxvY2FsX25hc2lkOwotCQlzdHJ1Y3Qgc25faXJxX2luZm8gKm5ld19pcnFfaW5mbzsKLQkJc3RydWN0IHNuX3BjaWJ1c19wcm92aWRlciAqcGNpX3Byb3ZpZGVyOwotCi0JCW5ld19pcnFfaW5mbyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbl9pcnFfaW5mbyksIEdGUF9BVE9NSUMpOwotCQlpZiAobmV3X2lycV9pbmZvID09IE5VTEwpCi0JCQlicmVhazsKLQkJbWVtY3B5KG5ld19pcnFfaW5mbywgc25faXJxX2luZm8sIHNpemVvZihzdHJ1Y3Qgc25faXJxX2luZm8pKTsKLQotCQlicmlkZ2UgPSAodTY0KSBuZXdfaXJxX2luZm8tPmlycV9icmlkZ2U7Ci0JCWlmICghYnJpZGdlKSB7Ci0JCQlrZnJlZShuZXdfaXJxX2luZm8pOwotCQkJYnJlYWs7IC8qIGlycSBpcyBub3QgYSBkZXZpY2UgaW50ZXJydXB0ICovCi0JCX0KLQotCQlsb2NhbF9uYXNpZCA9IE5BU0lEX0dFVChicmlkZ2UpOwotCi0JCWlmIChsb2NhbF9uYXNpZCAmIDEpCi0JCQlsb2NhbF93aWRnZXQgPSBUSU9fU1dJTl9XSURHRVROVU0oYnJpZGdlKTsKLQkJZWxzZQotCQkJbG9jYWxfd2lkZ2V0ID0gU1dJTl9XSURHRVROVU0oYnJpZGdlKTsKLQotCQkvKiBGcmVlIHRoZSBvbGQgUFJPTSBuZXdfaXJxX2luZm8gc3RydWN0dXJlICovCi0JCXNuX2ludHJfZnJlZShsb2NhbF9uYXNpZCwgbG9jYWxfd2lkZ2V0LCBuZXdfaXJxX2luZm8pOwotCQkvKiBVcGRhdGUga2VybmVscyBuZXdfaXJxX2luZm8gd2l0aCBuZXcgdGFyZ2V0IGluZm8gKi8KLQkJdW5yZWdpc3Rlcl9pbnRyX3BkYShuZXdfaXJxX2luZm8pOwotCi0JCS8qIGFsbG9jYXRlIGEgbmV3IFBST00gbmV3X2lycV9pbmZvIHN0cnVjdCAqLwotCQlzdGF0dXMgPSBzbl9pbnRyX2FsbG9jKGxvY2FsX25hc2lkLCBsb2NhbF93aWRnZXQsCi0JCQkJICAgICAgIF9fcGEobmV3X2lycV9pbmZvKSwgaXJxLAotCQkJCSAgICAgICBjcHVpZF90b19uYXNpZChjcHVpZCksCi0JCQkJICAgICAgIGNwdWlkX3RvX3NsaWNlKGNwdWlkKSk7Ci0KLQkJLyogU0FMIGNhbGwgZmFpbGVkICovCi0JCWlmIChzdGF0dXMpIHsKLQkJCWtmcmVlKG5ld19pcnFfaW5mbyk7Ci0JCQlicmVhazsKLQkJfQotCi0JCW5ld19pcnFfaW5mby0+aXJxX2NwdWlkID0gY3B1aWQ7Ci0JCXJlZ2lzdGVyX2ludHJfcGRhKG5ld19pcnFfaW5mbyk7Ci0KLQkJcGNpX3Byb3ZpZGVyID0gc25fcGNpX3Byb3ZpZGVyW25ld19pcnFfaW5mby0+aXJxX2JyaWRnZV90eXBlXTsKLQkJaWYgKHBjaV9wcm92aWRlciAmJiBwY2lfcHJvdmlkZXItPnRhcmdldF9pbnRlcnJ1cHQpCi0JCQkocGNpX3Byb3ZpZGVyLT50YXJnZXRfaW50ZXJydXB0KShuZXdfaXJxX2luZm8pOwotCi0JCXNwaW5fbG9jaygmc25faXJxX2luZm9fbG9jayk7Ci0JCWxpc3RfcmVwbGFjZV9yY3UoJnNuX2lycV9pbmZvLT5saXN0LCAmbmV3X2lycV9pbmZvLT5saXN0KTsKLQkJc3Bpbl91bmxvY2soJnNuX2lycV9pbmZvX2xvY2spOwotCQljYWxsX3JjdSgmc25faXJxX2luZm8tPnJjdSwgc25faXJxX2luZm9fZnJlZSk7Ci0KLSNpZmRlZiBDT05GSUdfU01QCi0JCXNldF9pcnFfYWZmaW5pdHlfaW5mbygoaXJxICYgMHhmZiksIGNwdXBoeXMsIDApOwotI2VuZGlmCi0JfQorCQkJCSBzbl9pcnFfbGhbaXJxXSwgbGlzdCkKKwkJKHZvaWQpc25fcmV0YXJnZXRfdmVjdG9yKHNuX2lycV9pbmZvLCBuYXNpZCwgc2xpY2UpOwogfQogCiBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgaXJxX3R5cGVfc24gPSB7CkBAIC0yMDIsNiArMjIxLDkgQEAKIAlpbnQgaTsKIAlpcnFfZGVzY190ICpiYXNlX2Rlc2MgPSBpcnFfZGVzYzsKIAorCWlhNjRfZmlyc3RfZGV2aWNlX3ZlY3RvciA9IElBNjRfU04yX0ZJUlNUX0RFVklDRV9WRUNUT1I7CisJaWE2NF9sYXN0X2RldmljZV92ZWN0b3IgPSBJQTY0X1NOMl9MQVNUX0RFVklDRV9WRUNUT1I7CisKIAlmb3IgKGkgPSAwOyBpIDwgTlJfSVJRUzsgaSsrKSB7CiAJCWlmIChiYXNlX2Rlc2NbaV0uaGFuZGxlciA9PSAmbm9faXJxX3R5cGUpIHsKIAkJCWJhc2VfZGVzY1tpXS5oYW5kbGVyID0gJmlycV90eXBlX3NuOwpAQCAtMjg1LDYgKzMwNyw3IEBACiAJLyogbGluayBpdCBpbnRvIHRoZSBzbl9pcnFbaXJxXSBsaXN0ICovCiAJc3Bpbl9sb2NrKCZzbl9pcnFfaW5mb19sb2NrKTsKIAlsaXN0X2FkZF9yY3UoJnNuX2lycV9pbmZvLT5saXN0LCBzbl9pcnFfbGhbc25faXJxX2luZm8tPmlycV9pcnFdKTsKKwlyZXNlcnZlX2lycV92ZWN0b3Ioc25faXJxX2luZm8tPmlycV9pcnEpOwogCXNwaW5fdW5sb2NrKCZzbl9pcnFfaW5mb19sb2NrKTsKIAogCXJlZ2lzdGVyX2ludHJfcGRhKHNuX2lycV9pbmZvKTsKQEAgLTMxMCw4ICszMzMsMTEgQEAKIAlzcGluX2xvY2soJnNuX2lycV9pbmZvX2xvY2spOwogCWxpc3RfZGVsX3JjdSgmc25faXJxX2luZm8tPmxpc3QpOwogCXNwaW5fdW5sb2NrKCZzbl9pcnFfaW5mb19sb2NrKTsKKwlpZiAobGlzdF9lbXB0eShzbl9pcnFfbGhbc25faXJxX2luZm8tPmlycV9pcnFdKSkKKwkJZnJlZV9pcnFfdmVjdG9yKHNuX2lycV9pbmZvLT5pcnFfaXJxKTsKIAljYWxsX3JjdSgmc25faXJxX2luZm8tPnJjdSwgc25faXJxX2luZm9fZnJlZSk7CiAJcGNpX2Rldl9wdXQocGNpX2Rldik7CisKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24va2VybmVsL3NldHVwLmMgYi9hcmNoL2lhNjQvc24va2VybmVsL3NldHVwLmMKaW5kZXggMzA5ODhkZi4uOTM1NzdhYiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvc2V0dXAuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAJaW50IGk7CiAJaW50IG5pZDsKIAotCW5pZCA9IHB4bV90b19uaWRfbWFwW3B4bV07CisJbmlkID0gcHhtX3RvX25vZGUocHhtKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX25vZGVfbWVtYmxrczsgaSsrKSB7CiAJCWlmIChub2RlX21lbWJsa1tpXS5uaWQgPT0gbmlkKSB7CiAJCQlyZXR1cm4gTkFTSURfR0VUKG5vZGVfbWVtYmxrW2ldLnN0YXJ0X3BhZGRyKTsKQEAgLTcwNCw3ICs3MDQsNyBAQAogCSAqIGNub2RlID09IG5vZGUgZm9yIGFsbCBDICYgTSBicmlja3MuCiAJICovCiAJZm9yX2VhY2hfb25saW5lX25vZGUobm9kZSkgewotCQluYXNpZCA9IHB4bV90b19uYXNpZChuaWRfdG9fcHhtX21hcFtub2RlXSk7CisJCW5hc2lkID0gcHhtX3RvX25hc2lkKG5vZGVfdG9fcHhtKG5vZGUpKTsKIAkJc25fY25vZGVpZF90b19uYXNpZFtub2RlXSA9IG5hc2lkOwogCQlwaHlzaWNhbF9ub2RlX21hcFtuYXNpZF0gPSBub2RlOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvc24yL2NhY2hlLmMgYi9hcmNoL2lhNjQvc24va2VybmVsL3NuMi9jYWNoZS5jCmluZGV4IGJjM2NmYTEuLjI4NjJjYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvc24yL2NhY2hlLmMKKysrIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9zbjIvY2FjaGUuYwpAQCAtMywxMSArMywxMiBAQAogICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQogICogZm9yIG1vcmUgZGV0YWlscy4KICAqIAotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgU2lsaWNvbiBHcmFwaGljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMsIDIwMDYgU2lsaWNvbiBHcmFwaGljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqLwogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGFzbS9wZ2FsbG9jLmg+CisjaW5jbHVkZSA8YXNtL3NuL2FyY2guaD4KIAogLyoqCiAgKiBzbl9mbHVzaF9hbGxfY2FjaGVzIC0gZmx1c2ggYSByYW5nZSBvZiBhZGRyZXNzIGZyb20gYWxsIGNhY2hlcyAoaW5jbC4gTDQpCkBAIC0xNywxOCArMTgsMjQgQEAKICAqIEZsdXNoIGEgcmFuZ2Ugb2YgYWRkcmVzc2VzIGZyb20gYWxsIGNhY2hlcyBpbmNsdWRpbmcgTDQuIAogICogQWxsIGFkZHJlc3NlcyBmdWxseSBvciBwYXJ0aWFsbHkgY29udGFpbmVkIHdpdGhpbiAKICAqIEBmbHVzaF9hZGRyIHRvIEBmbHVzaF9hZGRyICsgQGJ5dGVzIGFyZSBmbHVzaGVkCi0gKiBmcm9tIHRoZSBhbGwgY2FjaGVzLgorICogZnJvbSBhbGwgY2FjaGVzLgogICovCiB2b2lkCiBzbl9mbHVzaF9hbGxfY2FjaGVzKGxvbmcgZmx1c2hfYWRkciwgbG9uZyBieXRlcykKIHsKLQlmbHVzaF9pY2FjaGVfcmFuZ2UoZmx1c2hfYWRkciwgZmx1c2hfYWRkcitieXRlcyk7CisJdW5zaWduZWQgbG9uZyBhZGRyID0gZmx1c2hfYWRkcjsKKworCS8qIFNIdWIxIHJlcXVpcmVzIGEgY2FjaGVkIGFkZHJlc3MgKi8KKwlpZiAoaXNfc2h1YjEoKSAmJiAoYWRkciAmIFJHTl9CSVRTKSA9PSBSR05fQkFTRShSR05fVU5DQUNIRUQpKQorCQlhZGRyID0gKGFkZHIgLSBSR05fQkFTRShSR05fVU5DQUNIRUQpKSArIFJHTl9CQVNFKFJHTl9LRVJORUwpOworCisJZmx1c2hfaWNhY2hlX3JhbmdlKGFkZHIsIGFkZHIgKyBieXRlcyk7CiAJLyoKIAkgKiBUaGUgbGFzdCBjYWxsIG1heSBoYXZlIHJldHVybmVkIGJlZm9yZSB0aGUgY2FjaGVzCiAJICogd2VyZSBhY3R1YWxseSBmbHVzaGVkLCBzbyB3ZSBjYWxsIGl0IGFnYWluIHRvIG1ha2UKIAkgKiBzdXJlLgogCSAqLwotCWZsdXNoX2ljYWNoZV9yYW5nZShmbHVzaF9hZGRyLCBmbHVzaF9hZGRyK2J5dGVzKTsKKwlmbHVzaF9pY2FjaGVfcmFuZ2UoYWRkciwgYWRkciArIGJ5dGVzKTsKIAltYigpOwogfQogRVhQT1JUX1NZTUJPTChzbl9mbHVzaF9hbGxfY2FjaGVzKTsKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvc24yL3NuX2h3cGVyZi5jIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9zbjIvc25faHdwZXJmLmMKaW5kZXggNzM5Yzk0OC4uOWE4YTI5MyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9zbjIvc25faHdwZXJmLmMKKysrIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9zbjIvc25faHdwZXJmLmMKQEAgLTUxLDYgKzUxLDggQEAKIHN0YXRpYyBpbnQgc25faHdwZXJmX2luaXQodm9pZCk7CiBzdGF0aWMgREVDTEFSRV9NVVRFWChzbl9od3BlcmZfaW5pdF9tdXRleCk7CiAKKyNkZWZpbmUgY25vZGVfcG9zc2libGUobikJKChuKSA8IG51bV9jbm9kZXMpCisKIHN0YXRpYyBpbnQgc25faHdwZXJmX2VudW1fb2JqZWN0cyhpbnQgKm5vYmosIHN0cnVjdCBzbl9od3BlcmZfb2JqZWN0X2luZm8gKipyZXQpCiB7CiAJaW50IGU7CkBAIC0xMjcsMTQgKzEyOSwxNCBAQAogCQl9CiAJfQogCi0JcmV0dXJuIG5vZGVfcG9zc2libGUoY25vZGUpID8gY25vZGUgOiAtMTsKKwlyZXR1cm4gY25vZGVfcG9zc2libGUoY25vZGUpID8gY25vZGUgOiAtMTsKIH0KIAogc3RhdGljIGludCBzbl9od3BlcmZfb2JqX3RvX2Nub2RlKHN0cnVjdCBzbl9od3BlcmZfb2JqZWN0X2luZm8gKiBvYmopCiB7CiAJaWYgKCFTTl9IV1BFUkZfSVNfTk9ERShvYmopICYmICFTTl9IV1BFUkZfSVNfSU9OT0RFKG9iaikpCiAJCUJVRygpOwotCWlmICghb2JqLT5zbl9od3BfdGhpc19wYXJ0KQorCWlmIChTTl9IV1BFUkZfRk9SRUlHTihvYmopKQogCQlyZXR1cm4gLTE7CiAJcmV0dXJuIHNuX2h3cGVyZl9nZW9pZF90b19jbm9kZShvYmotPmxvY2F0aW9uKTsKIH0KQEAgLTE5OSwxMiArMjAxLDEyIEBACiAKIHN0YXRpYyBpbmxpbmUgaW50IHNuX2h3cGVyZl9oYXNfY3B1cyhjbm9kZWlkX3Qgbm9kZSkKIHsKLQlyZXR1cm4gbm9kZV9vbmxpbmUobm9kZSkgJiYgbnJfY3B1c19ub2RlKG5vZGUpOworCXJldHVybiBub2RlIDwgTUFYX05VTU5PREVTICYmIG5vZGVfb25saW5lKG5vZGUpICYmIG5yX2NwdXNfbm9kZShub2RlKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc25faHdwZXJmX2hhc19tZW0oY25vZGVpZF90IG5vZGUpCiB7Ci0JcmV0dXJuIG5vZGVfb25saW5lKG5vZGUpICYmIE5PREVfREFUQShub2RlKS0+bm9kZV9wcmVzZW50X3BhZ2VzOworCXJldHVybiBub2RlIDwgTUFYX05VTU5PREVTICYmIG5vZGVfb25saW5lKG5vZGUpICYmIE5PREVfREFUQShub2RlKS0+bm9kZV9wcmVzZW50X3BhZ2VzOwogfQogCiBzdGF0aWMgc3RydWN0IHNuX2h3cGVyZl9vYmplY3RfaW5mbyAqCkBAIC0yMzcsNyArMjM5LDcgQEAKIAlpbnQgZm91bmRfbWVtID0gMDsKIAlpbnQgZm91bmRfY3B1ID0gMDsKIAotCWlmICghbm9kZV9wb3NzaWJsZShub2RlKSkKKwlpZiAoIWNub2RlX3Bvc3NpYmxlKG5vZGUpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChzbl9od3BlcmZfaGFzX2NwdXMobm9kZSkpIHsKQEAgLTQ0Miw3ICs0NDQsNyBAQAogCXNlcV9wcmludGYocywgIiVzICVkICVzICVzIGFzaWMgJXMiLCBzbGFibmFtZSwgb3JkaW5hbCwgb2JqLT5sb2NhdGlvbiwKIAkJb2JqLT5zbl9od3BfdGhpc19wYXJ0ID8gImxvY2FsIiA6ICJzaGFyZWQiLCBvYmotPm5hbWUpOwogCi0JaWYgKCFTTl9IV1BFUkZfSVNfTk9ERShvYmopICYmICFTTl9IV1BFUkZfSVNfSU9OT0RFKG9iaikpCisJaWYgKG9yZGluYWwgPCAwIHx8ICghU05fSFdQRVJGX0lTX05PREUob2JqKSAmJiAhU05fSFdQRVJGX0lTX0lPTk9ERShvYmopKSkKIAkJc2VxX3B1dGMocywgJ1xuJyk7CiAJZWxzZSB7CiAJCWNub2RlaWRfdCBuZWFyX21lbSA9IC0xOwpAQCAtNDY4LDIyICs0NzAsMjQgQEAKIAkJLyoKIAkJICogQ1BVcyBvbiB0aGlzIG5vZGUsIGlmIGFueQogCQkgKi8KLQkJY3B1bWFzayA9IG5vZGVfdG9fY3B1bWFzayhvcmRpbmFsKTsKLQkJZm9yX2VhY2hfb25saW5lX2NwdShpKSB7Ci0JCQlpZiAoY3B1X2lzc2V0KGksIGNwdW1hc2spKSB7Ci0JCQkJc2xpY2UgPSAnYScgKyBjcHVpZF90b19zbGljZShpKTsKLQkJCQljID0gY3B1X2RhdGEoaSk7Ci0JCQkJc2VxX3ByaW50ZihzLCAiY3B1ICVkICVzJWMgbG9jYWwiCi0JCQkJCSIgZnJlcSAlbHVNSHosIGFyY2ggaWE2NCIsCi0JCQkJCWksIG9iai0+bG9jYXRpb24sIHNsaWNlLAotCQkJCQljLT5wcm9jX2ZyZXEgLyAxMDAwMDAwKTsKLQkJCQlmb3JfZWFjaF9vbmxpbmVfY3B1KGopIHsKLQkJCQkJc2VxX3ByaW50ZihzLCBqID8gIjolZCIgOiAiLCBkaXN0ICVkIiwKLQkJCQkJCW5vZGVfZGlzdGFuY2UoCi0JCQkJCQkgICAgY3B1X3RvX25vZGUoaSksCi0JCQkJCQkgICAgY3B1X3RvX25vZGUoaikpKTsKKwkJaWYgKCFTTl9IV1BFUkZfSVNfSU9OT0RFKG9iaikpIHsKKwkJCWNwdW1hc2sgPSBub2RlX3RvX2NwdW1hc2sob3JkaW5hbCk7CisJCQlmb3JfZWFjaF9vbmxpbmVfY3B1KGkpIHsKKwkJCQlpZiAoY3B1X2lzc2V0KGksIGNwdW1hc2spKSB7CisJCQkJCXNsaWNlID0gJ2EnICsgY3B1aWRfdG9fc2xpY2UoaSk7CisJCQkJCWMgPSBjcHVfZGF0YShpKTsKKwkJCQkJc2VxX3ByaW50ZihzLCAiY3B1ICVkICVzJWMgbG9jYWwiCisJCQkJCQkiIGZyZXEgJWx1TUh6LCBhcmNoIGlhNjQiLAorCQkJCQkJaSwgb2JqLT5sb2NhdGlvbiwgc2xpY2UsCisJCQkJCQljLT5wcm9jX2ZyZXEgLyAxMDAwMDAwKTsKKwkJCQkJZm9yX2VhY2hfb25saW5lX2NwdShqKSB7CisJCQkJCQlzZXFfcHJpbnRmKHMsIGogPyAiOiVkIiA6ICIsIGRpc3QgJWQiLAorCQkJCQkJCW5vZGVfZGlzdGFuY2UoCisJCQkJCQkgICAgCWNwdV90b19ub2RlKGkpLAorCQkJCQkJICAgIAljcHVfdG9fbm9kZShqKSkpOworCQkJCQl9CisJCQkJCXNlcV9wdXRjKHMsICdcbicpOwogCQkJCX0KLQkJCQlzZXFfcHV0YyhzLCAnXG4nKTsKIAkJCX0KIAkJfQogCX0KQEAgLTUyMyw3ICs1MjcsNyBAQAogCQkJaWYgKG9iai0+c25faHdwX3RoaXNfcGFydCAmJiBwLT5zbl9od3BfdGhpc19wYXJ0KQogCQkJCS8qIGJvdGggZW5kcyBsb2NhbCB0byB0aGlzIHBhcnRpdGlvbiAqLwogCQkJCXNlcV9wdXRzKHMsICIgbG9jYWwiKTsKLQkJCWVsc2UgaWYgKCFvYmotPnNuX2h3cF90aGlzX3BhcnQgJiYgIXAtPnNuX2h3cF90aGlzX3BhcnQpCisJCQllbHNlIGlmIChTTl9IV1BFUkZfRk9SRUlHTihwKSkKIAkJCQkvKiBib3RoIGVuZHMgb2YgdGhlIGxpbmsgaW4gZm9yZWlnbiBwYXJ0aXRvbiAqLwogCQkJCXNlcV9wdXRzKHMsICIgZm9yZWlnbiIpOwogCQkJZWxzZQpAQCAtNzc2LDcgKzc4MCw3IEBACiAKIAljYXNlIFNOX0hXUEVSRl9HRVRfTk9ERV9OQVNJRDoKIAkJaWYgKGEuc3ogIT0gc2l6ZW9mKHU2NCkgfHwKLQkJICAgKG5vZGUgPSBhLmFyZykgPCAwIHx8ICFub2RlX3Bvc3NpYmxlKG5vZGUpKSB7CisJCSAgIChub2RlID0gYS5hcmcpIDwgMCB8fCAhY25vZGVfcG9zc2libGUobm9kZSkpIHsKIAkJCXIgPSAtRUlOVkFMOwogCQkJZ290byBlcnJvcjsKIAkJfQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L3NuL3BjaS9wY2lfZG1hLmMgYi9hcmNoL2lhNjQvc24vcGNpL3BjaV9kbWEuYwppbmRleCBiNGI4NGMyLi43YTI5MWEyIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvc24vcGNpL3BjaV9kbWEuYworKysgYi9hcmNoL2lhNjQvc24vcGNpL3BjaV9kbWEuYwpAQCAtMTEsNyArMTEsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8YXNtL2RtYS5oPgotI2luY2x1ZGUgPGFzbS9zbi9wY2licl9wcm92aWRlci5oPgorI2luY2x1ZGUgPGFzbS9zbi9pbnRyLmg+CiAjaW5jbHVkZSA8YXNtL3NuL3BjaWJ1c19wcm92aWRlcl9kZWZzLmg+CiAjaW5jbHVkZSA8YXNtL3NuL3BjaWRldi5oPgogI2luY2x1ZGUgPGFzbS9zbi9zbl9zYWwuaD4KQEAgLTExMyw3ICsxMTMsOCBAQAogCSAqIHJlc291cmNlcy4KIAkgKi8KIAotCSpkbWFfaGFuZGxlID0gcHJvdmlkZXItPmRtYV9tYXBfY29uc2lzdGVudChwZGV2LCBwaHlzX2FkZHIsIHNpemUpOworCSpkbWFfaGFuZGxlID0gcHJvdmlkZXItPmRtYV9tYXBfY29uc2lzdGVudChwZGV2LCBwaHlzX2FkZHIsIHNpemUsCisJCQkJCQkgICBTTl9ETUFfQUREUl9QSFlTKTsKIAlpZiAoISpkbWFfaGFuZGxlKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IG91dCBvZiBBVEVzXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWNwdWFkZHIsIGdldF9vcmRlcihzaXplKSk7CkBAIC0xNzYsNyArMTc3LDcgQEAKIAlCVUdfT04oZGV2LT5idXMgIT0gJnBjaV9idXNfdHlwZSk7CiAKIAlwaHlzX2FkZHIgPSBfX3BhKGNwdV9hZGRyKTsKLQlkbWFfYWRkciA9IHByb3ZpZGVyLT5kbWFfbWFwKHBkZXYsIHBoeXNfYWRkciwgc2l6ZSk7CisJZG1hX2FkZHIgPSBwcm92aWRlci0+ZG1hX21hcChwZGV2LCBwaHlzX2FkZHIsIHNpemUsIFNOX0RNQV9BRERSX1BIWVMpOwogCWlmICghZG1hX2FkZHIpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICIlczogb3V0IG9mIEFURXNcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCXJldHVybiAwOwpAQCAtMjYwLDcgKzI2MSw4IEBACiAJZm9yIChpID0gMDsgaSA8IG5od2VudHJpZXM7IGkrKywgc2crKykgewogCQlwaHlzX2FkZHIgPSBTR19FTlRfUEhZU19BRERSRVNTKHNnKTsKIAkJc2ctPmRtYV9hZGRyZXNzID0gcHJvdmlkZXItPmRtYV9tYXAocGRldiwKLQkJCQkJCSAgICBwaHlzX2FkZHIsIHNnLT5sZW5ndGgpOworCQkJCQkJICAgIHBoeXNfYWRkciwgc2ctPmxlbmd0aCwKKwkJCQkJCSAgICBTTl9ETUFfQUREUl9QSFlTKTsKIAogCQlpZiAoIXNnLT5kbWFfYWRkcmVzcykgewogCQkJcHJpbnRrKEtFUk5fRVJSICIlczogb3V0IG9mIEFURXNcbiIsIF9fRlVOQ1RJT05fXyk7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24vcGNpL3BjaWJyL3BjaWJyX2RtYS5jIGIvYXJjaC9pYTY0L3NuL3BjaS9wY2lici9wY2licl9kbWEuYwppbmRleCA5Zjg2YmI2Li5hODZjN2I5IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvc24vcGNpL3BjaWJyL3BjaWJyX2RtYS5jCisrKyBiL2FyY2gvaWE2NC9zbi9wY2kvcGNpYnIvcGNpYnJfZG1hLmMKQEAgLTQxLDcgKzQxLDcgQEAKIAogc3RhdGljIGRtYV9hZGRyX3QKIHBjaWJyX2RtYW1hcF9hdGUzMihzdHJ1Y3QgcGNpZGV2X2luZm8gKmluZm8sCi0JCSAgIHU2NCBwYWRkciwgc2l6ZV90IHJlcV9zaXplLCB1NjQgZmxhZ3MpCisJCSAgIHU2NCBwYWRkciwgc2l6ZV90IHJlcV9zaXplLCB1NjQgZmxhZ3MsIGludCBkbWFfZmxhZ3MpCiB7CiAKIAlzdHJ1Y3QgcGNpZGV2X2luZm8gKnBjaWRldl9pbmZvID0gaW5mby0+cGRpX2hvc3RfcGNpZGV2X2luZm87CkBAIC04MSw5ICs4MSwxMiBAQAogCWlmIChJU19QQ0lYKHBjaWJ1c19pbmZvKSkKIAkJYXRlX2ZsYWdzICY9IH4oUENJMzJfQVRFX1BSRUYpOwogCi0JeGlvX2FkZHIgPQotCSAgICBJU19QSUNfU09GVChwY2lidXNfaW5mbykgPyBQSFlTX1RPX0RNQShwYWRkcikgOgotCSAgICBQSFlTX1RPX1RJT0RNQShwYWRkcik7CisJaWYgKFNOX0RNQV9BRERSVFlQRShkbWFfZmxhZ3MgPT0gU05fRE1BX0FERFJfUEhZUykpCisJCXhpb19hZGRyID0gSVNfUElDX1NPRlQocGNpYnVzX2luZm8pID8gUEhZU19UT19ETUEocGFkZHIpIDoKKwkgICAgCQkJCQkgICAgICBQSFlTX1RPX1RJT0RNQShwYWRkcik7CisJZWxzZQorCQl4aW9fYWRkciA9IHBhZGRyOworCiAJb2Zmc2V0ID0gSU9QR09GRih4aW9fYWRkcik7CiAJYXRlID0gYXRlX2ZsYWdzIHwgKHhpb19hZGRyIC0gb2Zmc2V0KTsKIApAQCAtOTEsNiArOTQsMTMgQEAKIAlpZiAoSVNfUElDX1NPRlQocGNpYnVzX2luZm8pKSB7CiAJCWF0ZSB8PSAocGNpYnVzX2luZm8tPnBiaV9odWJfeGlkIDw8IFBJQ19BVEVfVEFSR0VUSURfU0hGVCk7CiAJfQorCisJLyoKKwkgKiBJZiB3ZSdyZSBtYXBwaW5nIGZvciBNU0ksIHNldCB0aGUgTVNJIGJpdCBpbiB0aGUgQVRFCisJICovCisJaWYgKGRtYV9mbGFncyAmIFNOX0RNQV9NU0kpCisJCWF0ZSB8PSBQQ0kzMl9BVEVfTVNJOworCiAJYXRlX3dyaXRlKHBjaWJ1c19pbmZvLCBhdGVfaW5kZXgsIGF0ZV9jb3VudCwgYXRlKTsKIAogCS8qCkBAIC0xMDUsMjAgKzExNSwyNyBAQAogCWlmIChwY2lidXNfaW5mby0+cGJpX2RldnJlZ1tpbnRlcm5hbF9kZXZpY2VdICYgUENJQlJfREVWX1NXQVBfRElSKQogCQlBVEVfU1dBUF9PTihwY2lfYWRkcik7CiAKKwogCXJldHVybiBwY2lfYWRkcjsKIH0KIAogc3RhdGljIGRtYV9hZGRyX3QKIHBjaWJyX2RtYXRyYW5zX2RpcmVjdDY0KHN0cnVjdCBwY2lkZXZfaW5mbyAqIGluZm8sIHU2NCBwYWRkciwKLQkJCXU2NCBkbWFfYXR0cmlidXRlcykKKwkJCXU2NCBkbWFfYXR0cmlidXRlcywgaW50IGRtYV9mbGFncykKIHsKIAlzdHJ1Y3QgcGNpYnVzX2luZm8gKnBjaWJ1c19pbmZvID0gKHN0cnVjdCBwY2lidXNfaW5mbyAqKQogCSAgICAoKGluZm8tPnBkaV9ob3N0X3BjaWRldl9pbmZvKS0+cGRpX3BjaWJ1c19pbmZvKTsKIAl1NjQgcGNpX2FkZHI7CiAKIAkvKiBUcmFuc2xhdGUgdG8gQ3Jvc3N0YWxrIFZpZXcgb2YgUGh5c2ljYWwgQWRkcmVzcyAqLwotCXBjaV9hZGRyID0gKElTX1BJQ19TT0ZUKHBjaWJ1c19pbmZvKSA/IFBIWVNfVE9fRE1BKHBhZGRyKSA6Ci0JCSAgICBQSFlTX1RPX1RJT0RNQShwYWRkcikpIHwgZG1hX2F0dHJpYnV0ZXM7CisJaWYgKFNOX0RNQV9BRERSVFlQRShkbWFfZmxhZ3MpID09IFNOX0RNQV9BRERSX1BIWVMpCisJCXBjaV9hZGRyID0gSVNfUElDX1NPRlQocGNpYnVzX2luZm8pID8KKwkJCQlQSFlTX1RPX0RNQShwYWRkcikgOgorCQkgICAgCQlQSFlTX1RPX1RJT0RNQShwYWRkcikgfCBkbWFfYXR0cmlidXRlczsKKwllbHNlCisJCXBjaV9hZGRyID0gSVNfUElDX1NPRlQocGNpYnVzX2luZm8pID8KKwkJCQlwYWRkciA6CisJCQkJcGFkZHIgfCBkbWFfYXR0cmlidXRlczsKIAogCS8qIEhhbmRsZSBCdXMgbW9kZSAqLwogCWlmIChJU19QQ0lYKHBjaWJ1c19pbmZvKSkKQEAgLTEzMCw3ICsxNDcsOSBAQAogCQkgICAgKCh1NjQpIHBjaWJ1c19pbmZvLT4KIAkJICAgICBwYmlfaHViX3hpZCA8PCBQSUNfUENJNjRfQVRUUl9UQVJHX1NIRlQpOwogCX0gZWxzZQotCQlwY2lfYWRkciB8PSBUSU9DUF9QQ0k2NF9DTURUWVBFX01FTTsKKwkJcGNpX2FkZHIgfD0gKGRtYV9mbGFncyAmIFNOX0RNQV9NU0kpID8KKwkJCQlUSU9DUF9QQ0k2NF9DTURUWVBFX01TSSA6CisJCQkJVElPQ1BfUENJNjRfQ01EVFlQRV9NRU07CiAKIAkvKiBJZiBQQ0kgbW9kZSwgZnVuYyB6ZXJvIHVzZXMgVkNIQU4wLCBldmVyeSBvdGhlciBmdW5jIHVzZXMgVkNIQU4xICovCiAJaWYgKCFJU19QQ0lYKHBjaWJ1c19pbmZvKSAmJiBQQ0lfRlVOQyhpbmZvLT5wZGlfbGludXhfcGNpZGV2LT5kZXZmbikpCkBAIC0xNDEsNyArMTYwLDcgQEAKIAogc3RhdGljIGRtYV9hZGRyX3QKIHBjaWJyX2RtYXRyYW5zX2RpcmVjdDMyKHN0cnVjdCBwY2lkZXZfaW5mbyAqIGluZm8sCi0JCQl1NjQgcGFkZHIsIHNpemVfdCByZXFfc2l6ZSwgdTY0IGZsYWdzKQorCQkJdTY0IHBhZGRyLCBzaXplX3QgcmVxX3NpemUsIHU2NCBmbGFncywgaW50IGRtYV9mbGFncykKIHsKIAlzdHJ1Y3QgcGNpZGV2X2luZm8gKnBjaWRldl9pbmZvID0gaW5mby0+cGRpX2hvc3RfcGNpZGV2X2luZm87CiAJc3RydWN0IHBjaWJ1c19pbmZvICpwY2lidXNfaW5mbyA9IChzdHJ1Y3QgcGNpYnVzX2luZm8gKilwY2lkZXZfaW5mby0+CkBAIC0xNTYsOCArMTc1LDE0IEBACiAJCXJldHVybiAwOwogCX0KIAotCXhpb19hZGRyID0gSVNfUElDX1NPRlQocGNpYnVzX2luZm8pID8gUEhZU19UT19ETUEocGFkZHIpIDoKLQkgICAgUEhZU19UT19USU9ETUEocGFkZHIpOworCWlmIChkbWFfZmxhZ3MgJiBTTl9ETUFfTVNJKQorCQlyZXR1cm4gMDsKKworCWlmIChTTl9ETUFfQUREUlRZUEUoZG1hX2ZsYWdzKSA9PSBTTl9ETUFfQUREUl9QSFlTKQorCQl4aW9fYWRkciA9IElTX1BJQ19TT0ZUKHBjaWJ1c19pbmZvKSA/IFBIWVNfVE9fRE1BKHBhZGRyKSA6CisJICAgIAkJCQkJICAgICAgUEhZU19UT19USU9ETUEocGFkZHIpOworCWVsc2UKKwkJeGlvX2FkZHIgPSBwYWRkcjsKIAogCXhpb19iYXNlID0gcGNpYnVzX2luZm8tPnBiaV9kaXJfeGJhc2U7CiAJb2Zmc2V0ID0geGlvX2FkZHIgLSB4aW9fYmFzZTsKQEAgLTMyNyw3ICszNTIsNyBAQAogICovCiAKIGRtYV9hZGRyX3QKLXBjaWJyX2RtYV9tYXAoc3RydWN0IHBjaV9kZXYgKiBod2RldiwgdW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsIHNpemVfdCBzaXplKQorcGNpYnJfZG1hX21hcChzdHJ1Y3QgcGNpX2RldiAqIGh3ZGV2LCB1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgc2l6ZV90IHNpemUsIGludCBkbWFfZmxhZ3MpCiB7CiAJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOwogCXN0cnVjdCBwY2lkZXZfaW5mbyAqcGNpZGV2X2luZm8gPSBTTl9QQ0lERVZfSU5GTyhod2Rldik7CkBAIC0zNDQsMTEgKzM2OSwxMSBAQAogCQkgKi8KIAogCQlkbWFfaGFuZGxlID0gcGNpYnJfZG1hdHJhbnNfZGlyZWN0NjQocGNpZGV2X2luZm8sIHBoeXNfYWRkciwKLQkJCQkJCSAgICAgUENJNjRfQVRUUl9QUkVGKTsKKwkJCQkJCSAgICAgUENJNjRfQVRUUl9QUkVGLCBkbWFfZmxhZ3MpOwogCX0gZWxzZSB7CiAJCS8qIEhhbmRsZSAzMi02MyBiaXQgY2FyZHMgdmlhIGRpcmVjdCBtYXBwaW5nICovCiAJCWRtYV9oYW5kbGUgPSBwY2licl9kbWF0cmFuc19kaXJlY3QzMihwY2lkZXZfaW5mbywgcGh5c19hZGRyLAotCQkJCQkJICAgICBzaXplLCAwKTsKKwkJCQkJCSAgICAgc2l6ZSwgMCwgZG1hX2ZsYWdzKTsKIAkJaWYgKCFkbWFfaGFuZGxlKSB7CiAJCQkvKgogCQkJICogSXQgaXMgYSAzMiBiaXQgY2FyZCBhbmQgd2UgY2Fubm90IGRvIGRpcmVjdCBtYXBwaW5nLApAQCAtMzU2LDcgKzM4MSw4IEBACiAJCQkgKi8KIAogCQkJZG1hX2hhbmRsZSA9IHBjaWJyX2RtYW1hcF9hdGUzMihwY2lkZXZfaW5mbywgcGh5c19hZGRyLAotCQkJCQkJCXNpemUsIFBDSTMyX0FURV9QUkVGKTsKKwkJCQkJCQlzaXplLCBQQ0kzMl9BVEVfUFJFRiwKKwkJCQkJCQlkbWFfZmxhZ3MpOwogCQl9CiAJfQogCkBAIC0zNjUsMTggKzM5MSwxOCBAQAogCiBkbWFfYWRkcl90CiBwY2licl9kbWFfbWFwX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKiBod2RldiwgdW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsCi0JCQkgc2l6ZV90IHNpemUpCisJCQkgc2l6ZV90IHNpemUsIGludCBkbWFfZmxhZ3MpCiB7CiAJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOwogCXN0cnVjdCBwY2lkZXZfaW5mbyAqcGNpZGV2X2luZm8gPSBTTl9QQ0lERVZfSU5GTyhod2Rldik7CiAKIAlpZiAoaHdkZXYtPmRldi5jb2hlcmVudF9kbWFfbWFzayA9PSB+MFVMKSB7CiAJCWRtYV9oYW5kbGUgPSBwY2licl9kbWF0cmFuc19kaXJlY3Q2NChwY2lkZXZfaW5mbywgcGh5c19hZGRyLAotCQkJCQkgICAgUENJNjRfQVRUUl9CQVIpOworCQkJCQkgICAgUENJNjRfQVRUUl9CQVIsIGRtYV9mbGFncyk7CiAJfSBlbHNlIHsKIAkJZG1hX2hhbmRsZSA9IChkbWFfYWRkcl90KSBwY2licl9kbWFtYXBfYXRlMzIocGNpZGV2X2luZm8sCiAJCQkJCQkgICAgcGh5c19hZGRyLCBzaXplLAotCQkJCQkJICAgIFBDSTMyX0FURV9CQVIpOworCQkJCQkJICAgIFBDSTMyX0FURV9CQVIsIGRtYV9mbGFncyk7CiAJfQogCiAJcmV0dXJuIGRtYV9oYW5kbGU7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24vcGNpL3Rpb2NhX3Byb3ZpZGVyLmMgYi9hcmNoL2lhNjQvc24vcGNpL3Rpb2NhX3Byb3ZpZGVyLmMKaW5kZXggYmUwMTc2OS4uMjBkZTcyNyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3NuL3BjaS90aW9jYV9wcm92aWRlci5jCisrKyBiL2FyY2gvaWE2NC9zbi9wY2kvdGlvY2FfcHJvdmlkZXIuYwpAQCAtNTE1LDExICs1MTUsMTcgQEAKICAqIHVzZSB0aGUgR0FSVCBtYXBwZWQgbW9kZS4KICAqLwogc3RhdGljIHU2NAotdGlvY2FfZG1hX21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTY0IHBhZGRyLCBzaXplX3QgYnl0ZV9jb3VudCkKK3Rpb2NhX2RtYV9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHU2NCBwYWRkciwgc2l6ZV90IGJ5dGVfY291bnQsIGludCBkbWFfZmxhZ3MpCiB7CiAJdTY0IG1hcGFkZHI7CiAKIAkvKgorCSAqIE5vdCBzdXBwb3J0ZWQgZm9yIG5vdyAuLi4KKwkgKi8KKwlpZiAoZG1hX2ZsYWdzICYgU05fRE1BX01TSSkKKwkJcmV0dXJuIDA7CisKKwkvKgogCSAqIElmIGNhcmQgaXMgNjQgb3IgNDggYml0IGFkZHJlc2FibGUsIHVzZSBhIGRpcmVjdCBtYXBwaW5nLiAgMzIKIAkgKiBiaXQgZGlyZWN0IGlzIHNvIHJlc3RyaWN0aXZlIHcuci50LiB3aGVyZSB0aGUgbWVtb3J5IHJlc2lkZXMgdGhhdAogCSAqIHdlIGRvbid0IHVzZSBpdCBldmVuIHRob3VnaCBDQSBoYXMgc29tZSBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L3NuL3BjaS90aW9jZV9wcm92aWRlci5jIGIvYXJjaC9pYTY0L3NuL3BjaS90aW9jZV9wcm92aWRlci5jCmluZGV4IDgzMzI5NTYuLjJkNzk0ODUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9zbi9wY2kvdGlvY2VfcHJvdmlkZXIuYworKysgYi9hcmNoL2lhNjQvc24vcGNpL3Rpb2NlX3Byb3ZpZGVyLmMKQEAgLTMsNyArMyw3IEBACiAgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCiAgKiBmb3IgbW9yZSBkZXRhaWxzLgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgogICovCiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpAQCAtMTcwLDcgKzE3MCw4IEBACiAJKEFURV9QQUdFKChzdGFydCkrKGxlbiktMSwgcGFnZXNpemUpIC0gQVRFX1BBR0Uoc3RhcnQsIHBhZ2VzaXplKSArIDEpCiAKICNkZWZpbmUgQVRFX1ZBTElEKGF0ZSkJKChhdGUpICYgKDFVTCA8PCA2MykpCi0jZGVmaW5lIEFURV9NQUtFKGFkZHIsIHBzKSAoKChhZGRyKSAmIH5BVEVfUEFHRU1BU0socHMpKSB8ICgxVUwgPDwgNjMpKQorI2RlZmluZSBBVEVfTUFLRShhZGRyLCBwcywgbXNpKSBcCisJKCgoYWRkcikgJiB+QVRFX1BBR0VNQVNLKHBzKSkgfCAoMVVMIDw8IDYzKSB8ICgobXNpKT8oMVVMIDw8IDYyKTowKSkKIAogLyoKICAqIEZsYXZvcnMgb2YgYXRlLWJhc2VkIG1hcHBpbmcgc3VwcG9ydGVkIGJ5IHRpb2NlX2FsbG9jX21hcCgpCkBAIC0xOTYsMTUgKzE5NywxNyBAQAogICoKICAqIDYzICAgIC0gbXVzdCBiZSAxIHRvIGluZGljYXRlIGQ2NCBtb2RlIHRvIENFIGhhcmR3YXJlCiAgKiA2MiAgICAtIGJhcnJpZXIgYml0IC4uLiBjb250cm9sbGVkIHdpdGggdGlvY2VfZG1hX2JhcnJpZXIoKQotICogNjEgICAgLSAwIHNpbmNlIHRoaXMgaXMgbm90IGFuIE1TSSB0cmFuc2FjdGlvbgorICogNjEgICAgLSBtc2kgYml0IC4uLiBzcGVjaWZpZWQgdGhyb3VnaCBkbWFfZmxhZ3MKICAqIDYwOjU0IC0gcmVzZXJ2ZWQsIE1CWgogICovCiBzdGF0aWMgdTY0Ci10aW9jZV9kbWFfZDY0KHVuc2lnbmVkIGxvbmcgY3RfYWRkcikKK3Rpb2NlX2RtYV9kNjQodW5zaWduZWQgbG9uZyBjdF9hZGRyLCBpbnQgZG1hX2ZsYWdzKQogewogCXU2NCBidXNfYWRkcjsKIAogCWJ1c19hZGRyID0gY3RfYWRkciB8ICgxVUwgPDwgNjMpOworCWlmIChkbWFfZmxhZ3MgJiBTTl9ETUFfTVNJKQorCQlidXNfYWRkciB8PSAoMVVMIDw8IDYxKTsKIAogCXJldHVybiBidXNfYWRkcjsKIH0KQEAgLTI2MSw3ICsyNjQsNyBAQAogICovCiBzdGF0aWMgdTY0CiB0aW9jZV9hbGxvY19tYXAoc3RydWN0IHRpb2NlX2tlcm5lbCAqY2Vfa2VybiwgaW50IHR5cGUsIGludCBwb3J0LAotCQl1NjQgY3RfYWRkciwgaW50IGxlbikKKwkJdTY0IGN0X2FkZHIsIGludCBsZW4sIGludCBkbWFfZmxhZ3MpCiB7CiAJaW50IGk7CiAJaW50IGo7CkBAIC0yNzAsNiArMjczLDcgQEAKIAlpbnQgZW50cmllczsKIAlpbnQgbmF0ZXM7CiAJdTY0IHBhZ2VzaXplOworCWludCBtc2lfY2FwYWJsZSwgbXNpX3dhbnRlZDsKIAl1NjQgKmF0ZV9zaGFkb3c7CiAJdTY0ICphdGVfcmVnOwogCXU2NCBhZGRyOwpAQCAtMjkxLDYgKzI5NSw3IEBACiAJCWF0ZV9yZWcgPSBjZV9tbXItPmNlX3VyZV9hdGUzMjQwOwogCQlwYWdlc2l6ZSA9IGNlX2tlcm4tPmNlX2F0ZTMyNDBfcGFnZXNpemU7CiAJCWJ1c19iYXNlID0gVElPQ0VfTTMyX01JTjsKKwkJbXNpX2NhcGFibGUgPSAxOwogCQlicmVhazsKIAljYXNlIFRJT0NFX0FURV9NNDA6CiAJCWZpcnN0ID0gMDsKQEAgLTI5OSw2ICszMDQsNyBAQAogCQlhdGVfcmVnID0gY2VfbW1yLT5jZV91cmVfYXRlNDA7CiAJCXBhZ2VzaXplID0gTUIoNjQpOwogCQlidXNfYmFzZSA9IFRJT0NFX000MF9NSU47CisJCW1zaV9jYXBhYmxlID0gMDsKIAkJYnJlYWs7CiAJY2FzZSBUSU9DRV9BVEVfTTQwUzoKIAkJLyoKQEAgLTMxMSwxMSArMzE3LDE2IEBACiAJCWF0ZV9yZWcgPSBjZV9tbXItPmNlX3VyZV9hdGUzMjQwOwogCQlwYWdlc2l6ZSA9IEdCKDE2KTsKIAkJYnVzX2Jhc2UgPSBUSU9DRV9NNDBTX01JTjsKKwkJbXNpX2NhcGFibGUgPSAwOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gMDsKIAl9CiAKKwltc2lfd2FudGVkID0gZG1hX2ZsYWdzICYgU05fRE1BX01TSTsKKwlpZiAobXNpX3dhbnRlZCAmJiAhbXNpX2NhcGFibGUpCisJCXJldHVybiAwOworCiAJbmF0ZXMgPSBBVEVfTlBBR0VTKGN0X2FkZHIsIGxlbiwgcGFnZXNpemUpOwogCWlmIChuYXRlcyA+IGVudHJpZXMpCiAJCXJldHVybiAwOwpAQCAtMzQ0LDcgKzM1NSw3IEBACiAJZm9yIChqID0gMDsgaiA8IG5hdGVzOyBqKyspIHsKIAkJdTY0IGF0ZTsKIAotCQlhdGUgPSBBVEVfTUFLRShhZGRyLCBwYWdlc2l6ZSk7CisJCWF0ZSA9IEFURV9NQUtFKGFkZHIsIHBhZ2VzaXplLCBtc2lfd2FudGVkKTsKIAkJYXRlX3NoYWRvd1tpICsgal0gPSBhdGU7CiAJCXRpb2NlX21tcl9zdG9yZWkoY2Vfa2VybiwgJmF0ZV9yZWdbaSArIGpdLCBhdGUpOwogCQlhZGRyICs9IHBhZ2VzaXplOwpAQCAtMzcxLDcgKzM4Miw3IEBACiAgKiBNYXAgQHBhZGRyIGludG8gMzItYml0IGJ1cyBzcGFjZSBvZiB0aGUgQ0UgYXNzb2NpYXRlZCB3aXRoIEBwY2lkZXZfaW5mby4KICAqLwogc3RhdGljIHU2NAotdGlvY2VfZG1hX2QzMihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTY0IGN0X2FkZHIpCit0aW9jZV9kbWFfZDMyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1NjQgY3RfYWRkciwgaW50IGRtYV9mbGFncykKIHsKIAlpbnQgZG1hX29rOwogCWludCBwb3J0OwpAQCAtMzgxLDYgKzM5Miw5IEBACiAJdTY0IGN0X2xvd2VyOwogCWRtYV9hZGRyX3QgYnVzX2FkZHI7CiAKKwlpZiAoZG1hX2ZsYWdzICYgU05fRE1BX01TSSkKKwkJcmV0dXJuIDA7CisKIAljdF91cHBlciA9IGN0X2FkZHIgJiB+MHgzZmZmZmZmZlVMOwogCWN0X2xvd2VyID0gY3RfYWRkciAmIDB4M2ZmZmZmZmZVTDsKIApAQCAtNTA3LDcgKzUyMSw3IEBACiAgKi8KIHN0YXRpYyB1NjQKIHRpb2NlX2RvX2RtYV9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHU2NCBwYWRkciwgc2l6ZV90IGJ5dGVfY291bnQsCi0JCSBpbnQgYmFycmllcikKKwkJIGludCBiYXJyaWVyLCBpbnQgZG1hX2ZsYWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTY0IGN0X2FkZHI7CkBAIC01MjMsMTUgKzUzNywxOCBAQAogCWlmIChkbWFfbWFzayA8IDB4N2ZmZmZmZmZVTCkKIAkJcmV0dXJuIDA7CiAKLQljdF9hZGRyID0gUEhZU19UT19USU9ETUEocGFkZHIpOworCWlmIChTTl9ETUFfQUREUlRZUEUoZG1hX2ZsYWdzKSA9PSBTTl9ETUFfQUREUl9QSFlTKQorCQljdF9hZGRyID0gUEhZU19UT19USU9ETUEocGFkZHIpOworCWVsc2UKKwkJY3RfYWRkciA9IHBhZGRyOwogCiAJLyoKIAkgKiBJZiB0aGUgZGV2aWNlIGNhbiBnZW5lcmF0ZSA2NCBiaXQgYWRkcmVzc2VzLCBjcmVhdGUgYSBENjQgbWFwLgotCSAqIFNpbmNlIHRoaXMgc2hvdWxkIG5ldmVyIGZhaWwsIGJ5cGFzcyB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLgogCSAqLwogCWlmIChkbWFfbWFzayA9PSB+MFVMKSB7Ci0JCW1hcGFkZHIgPSB0aW9jZV9kbWFfZDY0KGN0X2FkZHIpOwotCQlnb3RvIGRtYV9tYXBfZG9uZTsKKwkJbWFwYWRkciA9IHRpb2NlX2RtYV9kNjQoY3RfYWRkciwgZG1hX2ZsYWdzKTsKKwkJaWYgKG1hcGFkZHIpCisJCQlnb3RvIGRtYV9tYXBfZG9uZTsKIAl9CiAKIAlwY2lkZXZfdG9fdGlvY2UocGRldiwgTlVMTCwgJmNlX2tlcm4sICZwb3J0KTsKQEAgLTU3NCwxOCArNTkxLDIyIEBACiAKIAkJaWYgKGJ5dGVfY291bnQgPiBNQig2NCkpIHsKIAkJCW1hcGFkZHIgPSB0aW9jZV9hbGxvY19tYXAoY2Vfa2VybiwgVElPQ0VfQVRFX000MFMsCi0JCQkJCQkgIHBvcnQsIGN0X2FkZHIsIGJ5dGVfY291bnQpOworCQkJCQkJICBwb3J0LCBjdF9hZGRyLCBieXRlX2NvdW50LAorCQkJCQkJICBkbWFfZmxhZ3MpOwogCQkJaWYgKCFtYXBhZGRyKQogCQkJCW1hcGFkZHIgPQogCQkJCSAgICB0aW9jZV9hbGxvY19tYXAoY2Vfa2VybiwgVElPQ0VfQVRFX000MCwgLTEsCi0JCQkJCQkgICAgY3RfYWRkciwgYnl0ZV9jb3VudCk7CisJCQkJCQkgICAgY3RfYWRkciwgYnl0ZV9jb3VudCwKKwkJCQkJCSAgICBkbWFfZmxhZ3MpOwogCQl9IGVsc2UgewogCQkJbWFwYWRkciA9IHRpb2NlX2FsbG9jX21hcChjZV9rZXJuLCBUSU9DRV9BVEVfTTQwLCAtMSwKLQkJCQkJCSAgY3RfYWRkciwgYnl0ZV9jb3VudCk7CisJCQkJCQkgIGN0X2FkZHIsIGJ5dGVfY291bnQsCisJCQkJCQkgIGRtYV9mbGFncyk7CiAJCQlpZiAoIW1hcGFkZHIpCiAJCQkJbWFwYWRkciA9CiAJCQkJICAgIHRpb2NlX2FsbG9jX21hcChjZV9rZXJuLCBUSU9DRV9BVEVfTTQwUywKLQkJCQkJCSAgICBwb3J0LCBjdF9hZGRyLCBieXRlX2NvdW50KTsKKwkJCQkJCSAgICBwb3J0LCBjdF9hZGRyLCBieXRlX2NvdW50LAorCQkJCQkJICAgIGRtYV9mbGFncyk7CiAJCX0KIAl9CiAKQEAgLTU5Myw3ICs2MTQsNyBAQAogCSAqIDMyLWJpdCBkaXJlY3QgaXMgdGhlIG5leHQgbW9kZSB0byB0cnkKIAkgKi8KIAlpZiAoIW1hcGFkZHIgJiYgZG1hX21hc2sgPj0gMHhmZmZmZmZmZlVMKQotCQltYXBhZGRyID0gdGlvY2VfZG1hX2QzMihwZGV2LCBjdF9hZGRyKTsKKwkJbWFwYWRkciA9IHRpb2NlX2RtYV9kMzIocGRldiwgY3RfYWRkciwgZG1hX2ZsYWdzKTsKIAogCS8qCiAJICogTGFzdCByZXNvcnQsIHRyeSAzMi1iaXQgQVRFLWJhc2VkIG1hcC4KQEAgLTYwMSw3ICs2MjIsNyBAQAogCWlmICghbWFwYWRkcikKIAkJbWFwYWRkciA9CiAJCSAgICB0aW9jZV9hbGxvY19tYXAoY2Vfa2VybiwgVElPQ0VfQVRFX00zMiwgLTEsIGN0X2FkZHIsCi0JCQkJICAgIGJ5dGVfY291bnQpOworCQkJCSAgICBieXRlX2NvdW50LCBkbWFfZmxhZ3MpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2Vfa2Vybi0+Y2VfbG9jaywgZmxhZ3MpOwogCkBAIC02MjIsOSArNjQzLDkgQEAKICAqIGluIHRoZSBhZGRyZXNzLgogICovCiBzdGF0aWMgdTY0Ci10aW9jZV9kbWEoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHU2NCBwYWRkciwgc2l6ZV90IGJ5dGVfY291bnQpCit0aW9jZV9kbWEoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHU2NCBwYWRkciwgc2l6ZV90IGJ5dGVfY291bnQsIGludCBkbWFfZmxhZ3MpCiB7Ci0JcmV0dXJuIHRpb2NlX2RvX2RtYV9tYXAocGRldiwgcGFkZHIsIGJ5dGVfY291bnQsIDApOworCXJldHVybiB0aW9jZV9kb19kbWFfbWFwKHBkZXYsIHBhZGRyLCBieXRlX2NvdW50LCAwLCBkbWFfZmxhZ3MpOwogfQogCiAvKioKQEAgLTYzNiw5ICs2NTcsOSBAQAogICogU2ltcGx5IGNhbGwgdGlvY2VfZG9fZG1hX21hcCgpIHRvIGNyZWF0ZSBhIG1hcCB3aXRoIHRoZSBiYXJyaWVyIGJpdCBzZXQKICAqIGluIHRoZSBhZGRyZXNzLgogICovIHN0YXRpYyB1NjQKLXRpb2NlX2RtYV9jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1NjQgcGFkZHIsIHNpemVfdCBieXRlX2NvdW50KQordGlvY2VfZG1hX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHU2NCBwYWRkciwgc2l6ZV90IGJ5dGVfY291bnQsIGludCBkbWFfZmxhZ3MpCiB7Ci0JcmV0dXJuIHRpb2NlX2RvX2RtYV9tYXAocGRldiwgcGFkZHIsIGJ5dGVfY291bnQsIDEpOworCXJldHVybiB0aW9jZV9kb19kbWFfbWFwKHBkZXYsIHBhZGRyLCBieXRlX2NvdW50LCAxLCBkbWFfZmxhZ3MpOwogfQogCiAvKioKQEAgLTY5Niw3ICs3MTcsNyBAQAogCXdoaWxlIChhdGVfaW5kZXggPD0gbGFzdF9hdGUpIHsKIAkJdTY0IGF0ZTsKIAotCQlhdGUgPSBBVEVfTUFLRSgweGRlYWRiZWVmLCBwcyk7CisJCWF0ZSA9IEFURV9NQUtFKDB4ZGVhZGJlZWYsIHBzLCAwKTsKIAkJY2Vfa2Vybi0+Y2VfYXRlMzI0MF9zaGFkb3dbYXRlX2luZGV4XSA9IGF0ZTsKIAkJdGlvY2VfbW1yX3N0b3JlaShjZV9rZXJuLCAmY2VfbW1yLT5jZV91cmVfYXRlMzI0MFthdGVfaW5kZXhdLAogCQkJCSBhdGUpOwpAQCAtMTAwMiw3ICsxMDIzLDcgQEAKIAl0aW9jZV9tbXJfc2V0aSh0aW9jZV9rZXJuLCAmdGlvY2VfbW1yLT5jZV9hZG1faW50X3N0YXR1c19hbGlhcywgfjBVTEwpOwogCXRpb2NlX21tcl9zZXRpKHRpb2NlX2tlcm4sICZ0aW9jZV9tbXItPmNlX2FkbV9lcnJvcl9zdW1tYXJ5X2FsaWFzLAogCQkgICAgICAgfjBVTEwpOwotCXRpb2NlX21tcl9zZXRpKHRpb2NlX2tlcm4sICZ0aW9jZV9tbXItPmNlX2RyZV9jb21wX2Vycl9hZGRyLCB+MFVMTCk7CisJdGlvY2VfbW1yX3NldGkodGlvY2Vfa2VybiwgJnRpb2NlX21tci0+Y2VfZHJlX2NvbXBfZXJyX2FkZHIsIDBVTEwpOwogCiAJaWYgKHJlcXVlc3RfaXJxKFNHSV9QQ0lBU0lDX0VSUk9SLAogCQkJdGlvY2VfZXJyb3JfaW50cl9oYW5kbGVyLApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9tNjhrL2tlcm5lbC9lbnRyeS5TCmluZGV4IDMyMGZkZTAuLjUyMjA3OWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL202OGsva2VybmVsL2VudHJ5LlMKQEAgLTIyNiw3ICsyMjYsNyBAQAogaW50aGFuZGxlcjoKIAlTQVZFX0FMTF9JTlQKIAlHRVRfQ1VSUkVOVCglZDApCi0JYWRkcWIJIzEsJWN1cnB0ckAoVEFTS19JTkZPK1RJTkZPX1BSRUVNUFQrMikKKwlhZGRxYgkjMSwlY3VycHRyQChUQVNLX0lORk8rVElORk9fUFJFRU1QVCsxKQogCQkJCQl8ICBwdXQgZXhjZXB0aW9uICMgaW4gZDAKIAliZmV4dHUgJXNwQChQVF9WRUNUT1IpeyM0LCMxMH0sJWQwCiAKQEAgLTI0NSw3ICsyNDUsNyBAQAogMzoJYWRkcWwJIzgsJXNwCQkJfCAgcG9wIHBhcmFtZXRlcnMgb2ZmIHN0YWNrCiAKIHJldF9mcm9tX2ludGVycnVwdDoKLQlzdWJxYgkjMSwlY3VycHRyQChUQVNLX0lORk8rVElORk9fUFJFRU1QVCsyKQorCXN1YnFiCSMxLCVjdXJwdHJAKFRBU0tfSU5GTytUSU5GT19QUkVFTVBUKzEpCiAJamVxCTFmCiAyOgogCVJFU1RPUkVfQUxMCmRpZmYgLS1naXQgYS9hcmNoL202OGsva2VybmVsL2ludHMuYyBiL2FyY2gvbTY4ay9rZXJuZWwvaW50cy5jCmluZGV4IDUxNGQzMjMuLjRiODU1MTQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9rZXJuZWwvaW50cy5jCisrKyBiL2FyY2gvbTY4ay9rZXJuZWwvaW50cy5jCkBAIC05NSw2ICs5NSwxMiBAQAogewogCWludCBpOwogCisJLyogYXNzZW1ibHkgaXJxIGVudHJ5IGNvZGUgcmVsaWVzIG9uIHRoaXMuLi4gKi8KKwlpZiAoSEFSRElSUV9NQVNLICE9IDB4MDBmZjAwMDApIHsKKwkJZXh0ZXJuIHZvaWQgaGFyZGlycV9tYXNrX2lzX2Jyb2tlbih2b2lkKTsKKwkJaGFyZGlycV9tYXNrX2lzX2Jyb2tlbigpOworCX0KKwogCWZvciAoaSA9IDA7IGkgPCBTWVNfSVJRUzsgaSsrKSB7CiAJCWlmIChtYWNoX2RlZmF1bHRfaGFuZGxlcikKIAkJCWlycV9saXN0W2ldLmhhbmRsZXIgPSAoKm1hY2hfZGVmYXVsdF9oYW5kbGVyKVtpXTsKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL202OGsva2VybmVsL3NpZ25hbC5jCmluZGV4IDg2NjkxN2IuLmY5YWY4OTMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9tNjhrL2tlcm5lbC9zaWduYWwuYwpAQCAtNzYzLDcgKzc2Myw3IEBACiAKIAkvKiBUaGlzIGlzIHRoZSBYL09wZW4gc2FuY3Rpb25lZCBzaWduYWwgc3RhY2sgc3dpdGNoaW5nLiAgKi8KIAlpZiAoa2EtPnNhLnNhX2ZsYWdzICYgU0FfT05TVEFDSykgewotCQlpZiAoIW9uX3NpZ19zdGFjayh1c3ApKQorCQlpZiAoIXNhc19zc19mbGFncyh1c3ApKQogCQkJdXNwID0gY3VycmVudC0+c2FzX3NzX3NwICsgY3VycmVudC0+c2FzX3NzX3NpemU7CiAJfQogCXJldHVybiAodm9pZCBfX3VzZXIgKikoKHVzcCAtIGZyYW1lX3NpemUpICYgLThVTCk7CmRpZmYgLS1naXQgYS9hcmNoL202OGsva2VybmVsL3RyYXBzLmMgYi9hcmNoL202OGsva2VybmVsL3RyYXBzLmMKaW5kZXggY2RmNThmYi4uODM3YTg4NyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvbTY4ay9rZXJuZWwvdHJhcHMuYwpAQCAtMTE0LDcgKzExNCw3IEBACiAJaWYoTUFDSF9JU19TVU4zWCkgewogCQlleHRlcm4gZV92ZWN0b3IgKnN1bjN4X3Byb21fdmJyOwogCi0JCV9fYXNtX18gdm9sYXRpbGUgKCJtb3ZlYyAlJXZiciwgJTAiIDogIj1yIiAoKHZvaWQqKXN1bjN4X3Byb21fdmJyKSk7CisJCV9fYXNtX18gdm9sYXRpbGUgKCJtb3ZlYyAlJXZiciwgJTAiIDogIj1yIiAoc3VuM3hfcHJvbV92YnIpKTsKIAl9CiAKIAkvKiBzZXR1cCB0aGUgZXhjZXB0aW9uIHZlY3RvciB0YWJsZSAqLwpAQCAtOTkyLDYgKzk5Miw3IEBACiAKIHZvaWQgc2hvd19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgKnN0YWNrKQogeworCXVuc2lnbmVkIGxvbmcgKnA7CiAJdW5zaWduZWQgbG9uZyAqZW5kc3RhY2s7CiAJaW50IGk7CiAKQEAgLTEwMDQsMTIgKzEwMDUsMTMgQEAKIAllbmRzdGFjayA9ICh1bnNpZ25lZCBsb25nICopKCgodW5zaWduZWQgbG9uZylzdGFjayArIFRIUkVBRF9TSVpFIC0gMSkgJiAtVEhSRUFEX1NJWkUpOwogCiAJcHJpbnRrKCJTdGFjayBmcm9tICUwOGx4OiIsICh1bnNpZ25lZCBsb25nKXN0YWNrKTsKKwlwID0gc3RhY2s7CiAJZm9yIChpID0gMDsgaSA8IGtzdGFja19kZXB0aF90b19wcmludDsgaSsrKSB7Ci0JCWlmIChzdGFjayArIDEgPiBlbmRzdGFjaykKKwkJaWYgKHAgKyAxID4gZW5kc3RhY2spCiAJCQlicmVhazsKIAkJaWYgKGkgJSA4ID09IDApCiAJCQlwcmludGsoIlxuICAgICAgICIpOwotCQlwcmludGsoIiAlMDhseCIsICpzdGFjaysrKTsKKwkJcHJpbnRrKCIgJTA4bHgiLCAqcCsrKTsKIAl9CiAJcHJpbnRrKCJcbiIpOwogCXNob3dfdHJhY2Uoc3RhY2spOwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2xpYi9NYWtlZmlsZSBiL2FyY2gvbTY4ay9saWIvTWFrZWZpbGUKaW5kZXggZWJlNTFhNS4uNmJiZjE5ZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2xpYi9NYWtlZmlsZQorKysgYi9hcmNoL202OGsvbGliL01ha2VmaWxlCkBAIC00LDUgKzQsNSBAQAogCiBFWFRSQV9BRkxBR1MgOj0gLXRyYWRpdGlvbmFsCiAKLWxpYi15CQk6PSBhc2hsZGkzLm8gYXNocmRpMy5vIGxzaHJkaTMubyBtdWxkaTMubyBcCi0JCQljaGVja3N1bS5vIHN0cmluZy5vIHNlbWFwaG9yZS5vCitsaWIteQk6PSBhc2hsZGkzLm8gYXNocmRpMy5vIGxzaHJkaTMubyBtdWxkaTMubyBcCisJICAgY2hlY2tzdW0ubyBzdHJpbmcubyBzZW1hcGhvcmUubyB1YWNjZXNzLm8KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9saWIvdWFjY2Vzcy5jIGIvYXJjaC9tNjhrL2xpYi91YWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJjMTg4YwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvbTY4ay9saWIvdWFjY2Vzcy5jCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorCit1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgbikKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwgcmVzOworCisJYXNtIHZvbGF0aWxlICgiXG4iCisJCSIJdHN0LmwJJTBcbiIKKwkJIglqZXEJMmZcbiIKKwkJIjE6CW1vdmVzLmwJKCUxKSssJTNcbiIKKwkJIgltb3ZlLmwJJTMsKCUyKStcbiIKKwkJIglzdWJxLmwJIzEsJTBcbiIKKwkJIglqbmUJMWJcbiIKKwkJIjI6CWJ0c3QJIzEsJTVcbiIKKwkJIglqZXEJNGZcbiIKKwkJIjM6CW1vdmVzLncJKCUxKSssJTNcbiIKKwkJIgltb3ZlLncJJTMsKCUyKStcbiIKKwkJIjQ6CWJ0c3QJIzAsJTVcbiIKKwkJIglqZXEJNmZcbiIKKwkJIjU6CW1vdmVzLmIJKCUxKSssJTNcbiIKKwkJIgltb3ZlLmIgICUzLCglMikrXG4iCisJCSI2OlxuIgorCQkiCS5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKKwkJIgkuZXZlblxuIgorCQkiMTA6CW1vdmUubAklMCwlM1xuIgorCQkiNzoJY2xyLmwJKCUyKStcbiIKKwkJIglzdWJxLmwJIzEsJTNcbiIKKwkJIglqbmUJN2JcbiIKKwkJIglsc2wubAkjMiwlMFxuIgorCQkiCWJ0c3QJIzEsJTVcbiIKKwkJIglqZXEJOGZcbiIKKwkJIjMwOgljbHIudwkoJTIpK1xuIgorCQkiCWFkZHEubAkjMiwlMFxuIgorCQkiODoJYnRzdAkjMCwlNVxuIgorCQkiCWplcQk2YlxuIgorCQkiNTA6CWNsci5iCSglMikrXG4iCisJCSIJYWRkcS5sCSMxLCUwXG4iCisJCSIJanJhCTZiXG4iCisJCSIJLnByZXZpb3VzXG4iCisJCSJcbiIKKwkJIgkuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisJCSIJLmFsaWduCTRcbiIKKwkJIgkubG9uZwkxYiwxMGJcbiIKKwkJIgkubG9uZwkzYiwzMGJcbiIKKwkJIgkubG9uZwk1Yiw1MGJcbiIKKwkJIgkucHJldmlvdXMiCisJCTogIj1kIiAocmVzKSwgIithIiAoZnJvbSksICIrYSIgKHRvKSwgIj0mciIgKHRtcCkKKwkJOiAiMCIgKG4gLyA0KSwgImQiIChuICYgMykpOworCisJcmV0dXJuIHJlczsKK30KK0VYUE9SVF9TWU1CT0woX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKTsKKwordW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbikKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCwgcmVzOworCisJYXNtIHZvbGF0aWxlICgiXG4iCisJCSIJdHN0LmwJJTBcbiIKKwkJIglqZXEJNGZcbiIKKwkJIjE6CW1vdmUubAkoJTEpKywlM1xuIgorCQkiMjoJbW92ZXMubAklMywoJTIpK1xuIgorCQkiMzoJc3VicS5sCSMxLCUwXG4iCisJCSIJam5lCTFiXG4iCisJCSI0OglidHN0CSMxLCU1XG4iCisJCSIJamVxCTZmXG4iCisJCSIJbW92ZS53CSglMSkrLCUzXG4iCisJCSI1Ogltb3Zlcy53CSUzLCglMikrXG4iCisJCSI2OglidHN0CSMwLCU1XG4iCisJCSIJamVxCThmXG4iCisJCSIJbW92ZS5iCSglMSkrLCUzXG4iCisJCSI3Ogltb3Zlcy5iICAlMywoJTIpK1xuIgorCQkiODpcbiIKKwkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCisJCSIJLmV2ZW5cbiIKKwkJIjIwOglsc2wubAkjMiwlMFxuIgorCQkiNTA6CWFkZC5sCSU1LCUwXG4iCisJCSIJanJhCTdiXG4iCisJCSIJLnByZXZpb3VzXG4iCisJCSJcbiIKKwkJIgkuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisJCSIJLmFsaWduCTRcbiIKKwkJIgkubG9uZwkyYiwyMGJcbiIKKwkJIgkubG9uZwkzYiwyMGJcbiIKKwkJIgkubG9uZwk1Yiw1MGJcbiIKKwkJIgkubG9uZwk2Yiw1MGJcbiIKKwkJIgkubG9uZwk3Yiw1MGJcbiIKKwkJIgkubG9uZwk4Yiw1MGJcbiIKKwkJIgkucHJldmlvdXMiCisJCTogIj1kIiAocmVzKSwgIithIiAoZnJvbSksICIrYSIgKHRvKSwgIj0mciIgKHRtcCkKKwkJOiAiMCIgKG4gLyA0KSwgImQiIChuICYgMykpOworCisJcmV0dXJuIHJlczsKK30KK0VYUE9SVF9TWU1CT0woX19nZW5lcmljX2NvcHlfdG9fdXNlcik7CisKKy8qCisgKiBDb3B5IGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZyBmcm9tIHVzZXJzcGFjZS4KKyAqLworbG9uZyBzdHJuY3B5X2Zyb21fdXNlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgX191c2VyICpzcmMsIGxvbmcgY291bnQpCit7CisJbG9uZyByZXM7CisJY2hhciBjOworCisJaWYgKGNvdW50IDw9IDApCisJCXJldHVybiBjb3VudDsKKworCWFzbSB2b2xhdGlsZSAoIlxuIgorCQkiMToJbW92ZXMuYgkoJTIpKywlNFxuIgorCQkiCW1vdmUuYgklNCwoJTEpK1xuIgorCQkiCWplcQkyZlxuIgorCQkiCXN1YnEubAkjMSwlM1xuIgorCQkiCWpuZQkxYlxuIgorCQkiMjoJc3ViLmwJJTMsJTBcbiIKKwkJIjM6XG4iCisJCSIJLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgorCQkiCS5ldmVuXG4iCisJCSIxMDoJbW92ZS5sCSU1LCUwXG4iCisJCSIJanJhCTNiXG4iCisJCSIJLnByZXZpb3VzXG4iCisJCSJcbiIKKwkJIgkuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisJCSIJLmFsaWduCTRcbiIKKwkJIgkubG9uZwkxYiwxMGJcbiIKKwkJIgkucHJldmlvdXMiCisJCTogIj1kIiAocmVzKSwgIithIiAoZHN0KSwgIithIiAoc3JjKSwgIityIiAoY291bnQpLCAiPSZkIiAoYykKKwkJOiAiaSIgKC1FRkFVTFQpLCAiMCIgKGNvdW50KSk7CisKKwlyZXR1cm4gcmVzOworfQorRVhQT1JUX1NZTUJPTChzdHJuY3B5X2Zyb21fdXNlcik7CisKKy8qCisgKiBSZXR1cm4gdGhlIHNpemUgb2YgYSBzdHJpbmcgKGluY2x1ZGluZyB0aGUgZW5kaW5nIDApCisgKgorICogUmV0dXJuIDAgb24gZXhjZXB0aW9uLCBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBOIGlmIHRvbyBsb25nCisgKi8KK2xvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgX191c2VyICpzcmMsIGxvbmcgbikKK3sKKwljaGFyIGM7CisJbG9uZyByZXM7CisKKwlhc20gdm9sYXRpbGUgKCJcbiIKKwkJIjE6CXN1YnEubAkjMSwlMVxuIgorCQkiCWptaQkzZlxuIgorCQkiMjoJbW92ZXMuYgkoJTApKywlMlxuIgorCQkiCXRzdC5iCSUyXG4iCisJCSIJam5lCTFiXG4iCisJCSIJanJhCTRmXG4iCisJCSJcbiIKKwkJIjM6CWFkZHEubAkjMSwlMFxuIgorCQkiNDoJc3ViLmwJJTQsJTBcbiIKKwkJIjU6XG4iCisJCSIJLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgorCQkiCS5ldmVuXG4iCisJCSIyMDoJc3ViLmwJJTAsJTBcbiIKKwkJIglqcmEJNWJcbiIKKwkJIgkucHJldmlvdXNcbiIKKwkJIlxuIgorCQkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKKwkJIgkuYWxpZ24JNFxuIgorCQkiCS5sb25nCTJiLDIwYlxuIgorCQkiCS5wcmV2aW91c1xuIgorCQk6ICI9JmEiIChyZXMpLCAiK2QiIChuKSwgIj0mZCIgKGMpCisJCTogIjAiIChzcmMpLCAiciIgKHNyYykpOworCisJcmV0dXJuIHJlczsKK30KK0VYUE9SVF9TWU1CT0woc3Rybmxlbl91c2VyKTsKKworLyoKKyAqIFplcm8gVXNlcnNwYWNlCisgKi8KKwordW5zaWduZWQgbG9uZyBjbGVhcl91c2VyKHZvaWQgX191c2VyICp0bywgdW5zaWduZWQgbG9uZyBuKQoreworCXVuc2lnbmVkIGxvbmcgcmVzOworCisJYXNtIHZvbGF0aWxlICgiXG4iCisJCSIJdHN0LmwJJTBcbiIKKwkJIglqZXEJM2ZcbiIKKwkJIjE6CW1vdmVzLmwJJTIsKCUxKStcbiIKKwkJIjI6CXN1YnEubAkjMSwlMFxuIgorCQkiCWpuZQkxYlxuIgorCQkiMzoJYnRzdAkjMSwlNFxuIgorCQkiCWplcQk1ZlxuIgorCQkiNDoJbW92ZXMudwklMiwoJTEpK1xuIgorCQkiNToJYnRzdAkjMCwlNFxuIgorCQkiCWplcQk3ZlxuIgorCQkiNjoJbW92ZXMuYgklMiwoJTEpXG4iCisJCSI3OlxuIgorCQkiCS5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKKwkJIgkuZXZlblxuIgorCQkiMTA6CWxzbC5sCSMyLCUwXG4iCisJCSI0MDoJYWRkLmwJJTQsJTBcbiIKKwkJIglqcmEJN2JcbiIKKwkJIgkucHJldmlvdXNcbiIKKwkJIlxuIgorCQkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKKwkJIgkuYWxpZ24JNFxuIgorCQkiCS5sb25nCTFiLDEwYlxuIgorCQkiCS5sb25nCTJiLDEwYlxuIgorCQkiCS5sb25nCTRiLDQwYlxuIgorCQkiCS5sb25nCTViLDQwYlxuIgorCQkiCS5sb25nCTZiLDQwYlxuIgorCQkiCS5sb25nCTdiLDQwYlxuIgorCQkiCS5wcmV2aW91cyIKKwkJOiAiPWQiIChyZXMpLCAiK2EiICh0bykKKwkJOiAiciIgKDApLCAiMCIgKG4gLyA0KSwgImQiIChuICYgMykpOworCisgICAgcmV0dXJuIHJlczsKK30KK0VYUE9SVF9TWU1CT0woY2xlYXJfdXNlcik7CmRpZmYgLS1naXQgYS9hcmNoL202OGsvbWFjL2NvbmZpZy5jIGIvYXJjaC9tNjhrL21hYy9jb25maWcuYwppbmRleCAxNGY4ZDNmNC4uMTlkY2U3NSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL21hYy9jb25maWcuYworKysgYi9hcmNoL202OGsvbWFjL2NvbmZpZy5jCkBAIC04OSwyNCArODksMTEgQEAKIAogc3RhdGljIHZvaWQgbWFjX2dldF9tb2RlbChjaGFyICpzdHIpOwogCi12b2lkIG1hY19iYW5nKGludCBpcnEsIHZvaWQgKnZlY3Rvciwgc3RydWN0IHB0X3JlZ3MgKnApCi17Ci0JcHJpbnRrKEtFUk5fSU5GTyAiUmVzZXR0aW5nIC4uLlxuIik7Ci0JbWFjX3Jlc2V0KCk7Ci19Ci0KIHN0YXRpYyB2b2lkIG1hY19zY2hlZF9pbml0KGlycXJldHVybl90ICgqdmVjdG9yKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKikpCiB7CiAJdmlhX2luaXRfY2xvY2sodmVjdG9yKTsKIH0KIAotI2lmIDAKLXZvaWQgbWFjX3dhaXRidXQgKHZvaWQpCi17Ci0JOwotfQotI2VuZGlmCi0KIGV4dGVybiBpcnFyZXR1cm5fdCBtYWNfZGVmYXVsdF9oYW5kbGVyKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKIAogaXJxcmV0dXJuX3QgKCptYWNfaGFuZGxlcnNbOF0pKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKT0KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvbWFjaW50cy5jIGIvYXJjaC9tNjhrL21hYy9tYWNpbnRzLmMKaW5kZXggMTgwOTYwMS4uN2ExNjAwYiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL21hYy9tYWNpbnRzLmMKKysrIGIvYXJjaC9tNjhrL21hYy9tYWNpbnRzLmMKQEAgLTIxNiw3ICsyMTYsNiBAQAogICogY29uc29sZV9sb2dsZXZlbCBkZXRlcm1pbmVzIE5NSSBoYW5kbGVyIGZ1bmN0aW9uCiAgKi8KIAotZXh0ZXJuIGlycXJldHVybl90IG1hY19iYW5nKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKIGlycXJldHVybl90IG1hY19ubWlfaGFuZGxlcihpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiBpcnFyZXR1cm5fdCBtYWNfZGVidWdfaGFuZGxlcihpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvdmlhLmMgYi9hcmNoL202OGsvbWFjL3ZpYS5jCmluZGV4IGNkNTI4YmYuLmE2ZTM4MTQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tYWMvdmlhLmMKKysrIGIvYXJjaC9tNjhrL21hYy92aWEuYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9pZGUuaD4KIAotI2luY2x1ZGUgPGFzbS90cmFwcy5oPgogI2luY2x1ZGUgPGFzbS9ib290aW5mby5oPgogI2luY2x1ZGUgPGFzbS9tYWNpbnRvc2guaD4KICNpbmNsdWRlIDxhc20vbWFjaW50cy5oPgpAQCAtNzEsNyArNzAsNiBAQAogdm9pZCB2aWFfaXJxX2Rpc2FibGUoaW50IGlycSk7CiB2b2lkIHZpYV9pcnFfY2xlYXIoaW50IGlycSk7CiAKLWV4dGVybiBpcnFyZXR1cm5fdCBtYWNfYmFuZyhpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiBleHRlcm4gaXJxcmV0dXJuX3QgbWFjX3NjY19kaXNwYXRjaChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiBleHRlcm4gaW50IG9zc19wcmVzZW50OwogCkBAIC0yMTIsMTEgKzIxMCw2IEBACiAJCQlicmVhazsKIAl9CiAjZWxzZQotCS8qIFRoZSBhbGVybmF0ZSBJUlEgbWFwcGluZyBzZWVtcyB0byBqdXN0IG5vdCB3b3JrLiBBbnlvbmUgd2l0aCBhICAgKi8KLQkvKiBzdXBwb3J0ZWQgbWFjaGluZSBpcyB3ZWxjb21lIHRvIHRha2UgYSBzdGFiIGF0IGZpeGluZyBpdC4gSXQgICAgICovCi0JLyogX3Nob3VsZF8gd29yayBvbiB0aGUgZm9sbG93aW5nIFF1YWRyYXM6IDYxMCw2NTAsNzAwLDgwMCw5MDAsOTUwICAqLwotCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDE5OTktMDYtMTIgKGptdCkgKi8KLQogCXZpYV9hbHRfbWFwcGluZyA9IDA7CiAjZW5kaWYKIApAQCAtMjcwLDEyICsyNjMsNiBAQAogCQljcHVfcmVxdWVzdF9pcnEoSVJRX0FVVE9fMSwgdmlhMV9pcnEsCiAJCQkJSVJRX0ZMR19MT0NLfElSUV9GTEdfRkFTVCwgInZpYTEiLAogCQkJCSh2b2lkICopIHZpYTEpOwotI2lmIDAgLyogaW50ZXJmZXJlcyB3aXRoIHNlcmlhbCBvbiBzb21lIG1hY2hpbmVzICovCi0JCWlmICghcHNjX3ByZXNlbnQpIHsKLQkJCWNwdV9yZXF1ZXN0X2lycShJUlFfQVVUT182LCBtYWNfYmFuZywgSVJRX0ZMR19MT0NLLAotCQkJCQkiT2ZmIFN3aXRjaCIsIG1hY19iYW5nKTsKLQkJfQotI2VuZGlmCiAJfQogCWNwdV9yZXF1ZXN0X2lycShJUlFfQVVUT18yLCB2aWEyX2lycSwgSVJRX0ZMR19MT0NLfElSUV9GTEdfRkFTVCwKIAkJCSJ2aWEyIiwgKHZvaWQgKikgdmlhMik7CkBAIC00NzEsOCArNDU4LDggQEAKIAlmb3IgKGkgPSAwLCBpcnFfYml0ID0gMSA7IGkgPCA3IDsgaSsrLCBpcnFfYml0IDw8PSAxKQogCQlpZiAoZXZlbnRzICYgaXJxX2JpdCkgewogCQkJdmlhMltnSUVSXSA9IGlycV9iaXQ7Ci0JCQltYWNfZG9faXJxX2xpc3QoVklBMl9TT1VSQ0VfQkFTRSArIGksIHJlZ3MpOwogCQkJdmlhMltnSUZSXSA9IGlycV9iaXQgfCByYnZfY2xlYXI7CisJCQltYWNfZG9faXJxX2xpc3QoVklBMl9TT1VSQ0VfQkFTRSArIGksIHJlZ3MpOwogCQkJdmlhMltnSUVSXSA9IGlycV9iaXQgfCAweDgwOwogCQl9CiAJcmV0dXJuIElSUV9IQU5ETEVEOwpAQCAtNTI5LDYgKzUxNiw3IEBACiAJCX0KIAkJdmlhMltnSUVSXSA9IGlycV9iaXQgfCAweDgwOwogCX0gZWxzZSBpZiAoaXJxX3NyYyA9PSA3KSB7CisJCW51YnVzX2FjdGl2ZSB8PSBpcnFfYml0OwogCQlpZiAocmJ2X3ByZXNlbnQpIHsKIAkJCS8qIGVuYWJsZSB0aGUgc2xvdCBpbnRlcnJ1cHQuIFNJRVIgd29ya3MgbGlrZSBJRVIuICovCiAJCQl2aWEyW3JTSUVSXSA9IElFUl9TRVRfQklUKGlycV9pZHgpOwpAQCAtNTUwLDcgKzUzOCw2IEBACiAJCQkJfQogCQkJfQogCQl9Ci0JCW51YnVzX2FjdGl2ZSB8PSBpcnFfYml0OwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL21tL21vdG9yb2xhLmMgYi9hcmNoL202OGsvbW0vbW90b3JvbGEuYwppbmRleCBhZmI1N2VlLi5iZGIxMTEwIDEwMDY0NAotLS0gYS9hcmNoL202OGsvbW0vbW90b3JvbGEuYworKysgYi9hcmNoL202OGsvbW0vbW90b3JvbGEuYwpAQCAtMjAzLDcgKzIwMyw3IEBACiB7CiAJaW50IGNodW5rOwogCXVuc2lnbmVkIGxvbmcgbWVtX2F2YWlsID0gMDsKLQl1bnNpZ25lZCBsb25nIHpvbmVzX3NpemVbM10gPSB7IDAsIH07CisJdW5zaWduZWQgbG9uZyB6b25lc19zaXplW01BWF9OUl9aT05FU10gPSB7IDAsIH07CiAKICNpZmRlZiBERUJVRwogCXsKQEAgLTI1NywxMiArMjU3LDEyIEBACiAjaWZkZWYgREVCVUcKIAlwcmludGsgKCJiZWZvcmUgZnJlZV9hcmVhX2luaXRcbiIpOwogI2VuZGlmCi0Jem9uZXNfc2l6ZVswXSA9IChtYWNoX21heF9kbWFfYWRkcmVzcyA8ICh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ID8KLQkJCSAobWFjaF9tYXhfZG1hX2FkZHJlc3MrMSkgOiAodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSk7Ci0Jem9uZXNfc2l6ZVsxXSA9ICh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5IC0gem9uZXNfc2l6ZVswXTsKKwl6b25lc19zaXplW1pPTkVfRE1BXSA9IChtYWNoX21heF9kbWFfYWRkcmVzcyA8ICh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5ID8KKwkJCQkobWFjaF9tYXhfZG1hX2FkZHJlc3MrMSkgOiAodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSk7CisJem9uZXNfc2l6ZVtaT05FX05PUk1BTF0gPSAodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSAtIHpvbmVzX3NpemVbMF07CiAKLQl6b25lc19zaXplWzBdID0gKHpvbmVzX3NpemVbMF0gLSBQQUdFX09GRlNFVCkgPj4gUEFHRV9TSElGVDsKLQl6b25lc19zaXplWzFdID4+PSBQQUdFX1NISUZUOworCXpvbmVzX3NpemVbWk9ORV9ETUFdID0gKHpvbmVzX3NpemVbWk9ORV9ETUFdIC0gUEFHRV9PRkZTRVQpID4+IFBBR0VfU0hJRlQ7CisJem9uZXNfc2l6ZVtaT05FX05PUk1BTF0gPj49IFBBR0VfU0hJRlQ7CiAKIAlmcmVlX2FyZWFfaW5pdCh6b25lc19zaXplKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tbS9zdW4zbW11LmMgYi9hcmNoL202OGsvbW0vc3VuM21tdS5jCmluZGV4IGE0N2JlMTkuLmFjNjY0MGEgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tbS9zdW4zbW11LmMKKysrIGIvYXJjaC9tNjhrL21tL3N1bjNtbXUuYwpAQCAtNDYsNyArNDYsNyBAQAogCXVuc2lnbmVkIGxvbmcgYWRkcmVzczsKIAl1bnNpZ25lZCBsb25nIG5leHRfcGd0YWJsZTsKIAl1bnNpZ25lZCBsb25nIGJvb3RtZW1fZW5kOwotCXVuc2lnbmVkIGxvbmcgem9uZXNfc2l6ZVszXSA9IHswLCAwLCAwfTsKKwl1bnNpZ25lZCBsb25nIHpvbmVzX3NpemVbTUFYX05SX1pPTkVTXSA9IHsgMCwgfTsKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAKIApAQCAtOTIsOCArOTIsNyBAQAogCWN1cnJlbnQtPm1tID0gTlVMTDsKIAogCS8qIG1lbW9yeSBzaXppbmcgaXMgYSBoYWNrIHN0b2xlbiBmcm9tIG1vdG9yb2xhLmMuLiAgaG9wZSBpdCB3b3JrcyBmb3IgdXMgKi8KLQl6b25lc19zaXplWzBdID0gKCh1bnNpZ25lZCBsb25nKWhpZ2hfbWVtb3J5IC0gUEFHRV9PRkZTRVQpID4+IFBBR0VfU0hJRlQ7Ci0Jem9uZXNfc2l6ZVsxXSA9IDA7CisJem9uZXNfc2l6ZVtaT05FX0RNQV0gPSAoKHVuc2lnbmVkIGxvbmcpaGlnaF9tZW1vcnkgLSBQQUdFX09GRlNFVCkgPj4gUEFHRV9TSElGVDsKIAogCWZyZWVfYXJlYV9pbml0KHpvbmVzX3NpemUpOwogCmRpZmYgLS1naXQgYS9hcmNoL202OGtub21tdS9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL202OGtub21tdS9rZXJuZWwvc2lnbmFsLmMKaW5kZXggZTFiM2FhMy4uOGUyYzVhOCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrbm9tbXUva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvbTY4a25vbW11L2tlcm5lbC9zaWduYWwuYwpAQCAtNTUzLDcgKzU1Myw3IEBACiAKIAkvKiBUaGlzIGlzIHRoZSBYL09wZW4gc2FuY3Rpb25lZCBzaWduYWwgc3RhY2sgc3dpdGNoaW5nLiAgKi8KIAlpZiAoa2EtPnNhLnNhX2ZsYWdzICYgU0FfT05TVEFDSykgewotCQlpZiAoIW9uX3NpZ19zdGFjayh1c3ApKQorCQlpZiAoIXNhc19zc19mbGFncyh1c3ApKQogCQkJdXNwID0gY3VycmVudC0+c2FzX3NzX3NwICsgY3VycmVudC0+c2FzX3NzX3NpemU7CiAJfQogCXJldHVybiAodm9pZCAqKSgodXNwIC0gZnJhbWVfc2l6ZSkgJiAtOFVMKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGwzMi1vMzIuUyBiL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGwzMi1vMzIuUwppbmRleCBhMGFjMGU1Li4yZDJmZGY3IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3NjYWxsMzItbzMyLlMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDMyLW8zMi5TCkBAIC00OTcsNyArNDk3LDcgQEAKIAlzeXMJc3lzX3NjaGVkX2dldF9wcmlvcml0eV9taW4gMQogCXN5cwlzeXNfc2NoZWRfcnJfZ2V0X2ludGVydmFsIDIJLyogNDE2NSAqLwogCXN5cwlzeXNfbmFub3NsZWVwLAkJMgotCXN5cwlzeXNfbXJlbWFwLAkJNAorCXN5cwlzeXNfbXJlbWFwLAkJNQogCXN5cwlzeXNfYWNjZXB0CQkzCiAJc3lzCXN5c19iaW5kCQkzCiAJc3lzCXN5c19jb25uZWN0CQkzCS8qIDQxNzAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc3lzaXJpeC5jIGIvYXJjaC9taXBzL2tlcm5lbC9zeXNpcml4LmMKaW5kZXggNTQwN2I3OC4uMTllMWVmNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9zeXNpcml4LmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9zeXNpcml4LmMKQEAgLTY5NCw3ICs2OTQsNyBAQAogCWlmIChlcnJvcikKIAkJZ290byBvdXQ7CiAKLQllcnJvciA9IHZmc19zdGF0ZnMobmQuZGVudHJ5LT5kX2lub2RlLT5pX3NiLCAma2J1Zik7CisJZXJyb3IgPSB2ZnNfc3RhdGZzKG5kLmRlbnRyeSwgJmtidWYpOwogCWlmIChlcnJvcikKIAkJZ290byBkcHV0X2FuZF9vdXQ7CiAKQEAgLTczMiw3ICs3MzIsNyBAQAogCQlnb3RvIG91dDsKIAl9CiAKLQllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2IsICZrYnVmKTsKKwllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnksICZrYnVmKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2Y7CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBACiAJZXJyb3IgPSB1c2VyX3BhdGhfd2FsayhmbmFtZSwgJm5kKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0OwotCWVycm9yID0gdmZzX3N0YXRmcyhuZC5kZW50cnktPmRfaW5vZGUtPmlfc2IsICZrYnVmKTsKKwllcnJvciA9IHZmc19zdGF0ZnMobmQuZGVudHJ5LCAma2J1Zik7CiAJaWYgKGVycm9yKQogCQlnb3RvIGRwdXRfYW5kX291dDsKIApAQCAtMTQwNiw3ICsxNDA2LDcgQEAKIAkJZXJyb3IgPSAtRUJBREY7CiAJCWdvdG8gb3V0OwogCX0KLQllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2IsICZrYnVmKTsKKwllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnksICZrYnVmKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2Y7CiAKQEAgLTE2MTEsNyArMTYxMSw3IEBACiAJZXJyb3IgPSB1c2VyX3BhdGhfd2FsayhmbmFtZSwgJm5kKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0OwotCWVycm9yID0gdmZzX3N0YXRmcyhuZC5kZW50cnktPmRfaW5vZGUtPmlfc2IsICZrYnVmKTsKKwllcnJvciA9IHZmc19zdGF0ZnMobmQuZGVudHJ5LCAma2J1Zik7CiAJaWYgKGVycm9yKQogCQlnb3RvIGRwdXRfYW5kX291dDsKIApAQCAtMTY1OCw3ICsxNjU4LDcgQEAKIAkJZXJyb3IgPSAtRUJBREY7CiAJCWdvdG8gb3V0OwogCX0KLQllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2IsICZrYnVmKTsKKwllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnksICZrYnVmKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2Y7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2hwdXgvc3lzX2hwdXguYyBiL2FyY2gvcGFyaXNjL2hwdXgvc3lzX2hwdXguYwppbmRleCAwNTI3M2NjLi5jYjY5NzI3IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9ocHV4L3N5c19ocHV4LmMKKysrIGIvYXJjaC9wYXJpc2MvaHB1eC9zeXNfaHB1eC5jCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAlzID0gdXNlcl9nZXRfc3VwZXIoZGV2KTsKIAlpZiAocyA9PSBOVUxMKQogCQlnb3RvIG91dDsKLQllcnIgPSB2ZnNfc3RhdGZzKHMsICZzYnVmKTsKKwllcnIgPSB2ZnNfc3RhdGZzKHMtPnNfcm9vdCwgJnNidWYpOwogCWRyb3Bfc3VwZXIocyk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CkBAIC0xODYsMTIgKzE4NiwxMiBAQAogICAgICBpbnQxNl90IGZfcGFkOwogfTsKIAotc3RhdGljIGludCB2ZnNfc3RhdGZzX2hwdXgoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGhwdXhfc3RhdGZzICpidWYpCitzdGF0aWMgaW50IHZmc19zdGF0ZnNfaHB1eChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBocHV4X3N0YXRmcyAqYnVmKQogewogCXN0cnVjdCBrc3RhdGZzIHN0OwogCWludCByZXR2YWw7CiAJCi0JcmV0dmFsID0gdmZzX3N0YXRmcyhzYiwgJnN0KTsKKwlyZXR2YWwgPSB2ZnNfc3RhdGZzKGRlbnRyeSwgJnN0KTsKIAlpZiAocmV0dmFsKQogCQlyZXR1cm4gcmV0dmFsOwogCkBAIC0yMTksNyArMjE5LDcgQEAKIAllcnJvciA9IHVzZXJfcGF0aF93YWxrKHBhdGgsICZuZCk7CiAJaWYgKCFlcnJvcikgewogCQlzdHJ1Y3QgaHB1eF9zdGF0ZnMgdG1wOwotCQllcnJvciA9IHZmc19zdGF0ZnNfaHB1eChuZC5kZW50cnktPmRfaW5vZGUtPmlfc2IsICZ0bXApOworCQllcnJvciA9IHZmc19zdGF0ZnNfaHB1eChuZC5kZW50cnksICZ0bXApOwogCQlpZiAoIWVycm9yICYmIGNvcHlfdG9fdXNlcihidWYsICZ0bXAsIHNpemVvZih0bXApKSkKIAkJCWVycm9yID0gLUVGQVVMVDsKIAkJcGF0aF9yZWxlYXNlKCZuZCk7CkBAIC0yMzcsNyArMjM3LDcgQEAKIAlmaWxlID0gZmdldChmZCk7CiAJaWYgKCFmaWxlKQogCQlnb3RvIG91dDsKLQllcnJvciA9IHZmc19zdGF0ZnNfaHB1eChmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnRtcCk7CisJZXJyb3IgPSB2ZnNfc3RhdGZzX2hwdXgoZmlsZS0+Zl9kZW50cnksICZ0bXApOwogCWlmICghZXJyb3IgJiYgY29weV90b191c2VyKGJ1ZiwgJnRtcCwgc2l6ZW9mKHRtcCkpKQogCQllcnJvciA9IC1FRkFVTFQ7CiAJZnB1dChmaWxlKTsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYwppbmRleCAwNTc2N2U4Li5jYzM4ZWRmIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3NpZ25hbC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAlEQkcoMSwiZ2V0X3NpZ2ZyYW1lOiBrYSA9ICUjbHgsIHNwID0gJSNseCwgZnJhbWVfc2l6ZSA9ICUjbHhcbiIsCiAJCQkodW5zaWduZWQgbG9uZylrYSwgc3AsIGZyYW1lX3NpemUpOwogCQotCWlmICgoa2EtPnNhLnNhX2ZsYWdzICYgU0FfT05TVEFDSykgIT0gMCAmJiAhIG9uX3NpZ19zdGFjayhzcCkpCisJaWYgKChrYS0+c2Euc2FfZmxhZ3MgJiBTQV9PTlNUQUNLKSAhPSAwICYmICEgc2FzX3NzX2ZsYWdzKHNwKSkKIAkJc3AgPSBjdXJyZW50LT5zYXNfc3Nfc3A7IC8qIFN0YWNrcyBncm93IHVwISAqLwogCiAJREJHKDEsImdldF9zaWdmcmFtZTogUmV0dXJuaW5nIHNwID0gJSNseFxuIiwgKHVuc2lnbmVkIGxvbmcpc3ApOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL0tjb25maWcgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZwppbmRleCA2NzI5Yzk4Li5lOTIyYTg4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvS2NvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZwpAQCAtNDUsNiArNDUsMTAgQEAKIAlib29sCiAJZGVmYXVsdCB5CiAKK2NvbmZpZyBHRU5FUklDX0ZJTkRfTkVYVF9CSVQKKwlib29sCisJZGVmYXVsdCB5CisKIGNvbmZpZyBQUEMKIAlib29sCiAJZGVmYXVsdCB5CkBAIC0xMzcsNiArMTQxLDE1IEBACiAJc2VsZWN0IEZTTF9TT0MKIAlzZWxlY3QgODV4eAogCitjb25maWcgUFBDXzg2eHgKKwlib29sICJGcmVlc2NhbGUgODZ4eCIKKwlzZWxlY3QgNnh4CisJc2VsZWN0IEZTTF9TT0MKKwlzZWxlY3QgUFBDX0ZQVQorCXNlbGVjdCBBTFRJVkVDCisJaGVscAorCSAgVGhlIEZyZWVzY2FsZSBFNjAwIFNvQ3MgaGF2ZSA3NHh4IGNvcmVzLgorCiBjb25maWcgNDB4CiAJYm9vbCAiQU1DQyA0MHgiCiAKQEAgLTMzNiw3ICszNDksNyBAQAogCiBjb25maWcgUFBDX1BTRVJJRVMKIAlkZXBlbmRzIG9uIFBQQ19NVUxUSVBMQVRGT1JNICYmIFBQQzY0Ci0JYm9vbCAiICBJQk0gcFNlcmllcyAmIG5ldyAoUE9XRVI1LWJhc2VkKSBpU2VyaWVzIgorCWJvb2wgIklCTSBwU2VyaWVzICYgbmV3IChQT1dFUjUtYmFzZWQpIGlTZXJpZXMiCiAJc2VsZWN0IFBQQ19JODI1OQogCXNlbGVjdCBQUENfUlRBUwogCXNlbGVjdCBSVEFTX0VSUk9SX0xPR0dJTkcKQEAgLTM0NCw3ICszNTcsNyBAQAogCWRlZmF1bHQgeQogCiBjb25maWcgUFBDX0NIUlAKLQlib29sICIgIENvbW1vbiBIYXJkd2FyZSBSZWZlcmVuY2UgUGxhdGZvcm0gKENIUlApIGJhc2VkIG1hY2hpbmVzIgorCWJvb2wgIkNvbW1vbiBIYXJkd2FyZSBSZWZlcmVuY2UgUGxhdGZvcm0gKENIUlApIGJhc2VkIG1hY2hpbmVzIgogCWRlcGVuZHMgb24gUFBDX01VTFRJUExBVEZPUk0gJiYgUFBDMzIKIAlzZWxlY3QgUFBDX0k4MjU5CiAJc2VsZWN0IFBQQ19JTkRJUkVDVF9QQ0kKQEAgLTM1NCw3ICszNjcsNyBAQAogCWRlZmF1bHQgeQogCiBjb25maWcgUFBDX1BNQUMKLQlib29sICIgIEFwcGxlIFBvd2VyTWFjIGJhc2VkIG1hY2hpbmVzIgorCWJvb2wgIkFwcGxlIFBvd2VyTWFjIGJhc2VkIG1hY2hpbmVzIgogCWRlcGVuZHMgb24gUFBDX01VTFRJUExBVEZPUk0KIAlzZWxlY3QgUFBDX0lORElSRUNUX1BDSSBpZiBQUEMzMgogCXNlbGVjdCBQUENfTVBDMTA2IGlmIFBQQzMyCkBAIC0zNzAsNyArMzgzLDcgQEAKIAlkZWZhdWx0IHkKIAogY29uZmlnIFBQQ19QUkVQCi0JYm9vbCAiICBQb3dlclBDIFJlZmVyZW5jZSBQbGF0Zm9ybSAoUFJlUCkgYmFzZWQgbWFjaGluZXMiCisJYm9vbCAiUG93ZXJQQyBSZWZlcmVuY2UgUGxhdGZvcm0gKFBSZVApIGJhc2VkIG1hY2hpbmVzIgogCWRlcGVuZHMgb24gUFBDX01VTFRJUExBVEZPUk0gJiYgUFBDMzIgJiYgQlJPS0VOCiAJc2VsZWN0IFBQQ19JODI1OQogCXNlbGVjdCBQUENfSU5ESVJFQ1RfUENJCkBAIC0zNzksNyArMzkyLDcgQEAKIAogY29uZmlnIFBQQ19NQVBMRQogCWRlcGVuZHMgb24gUFBDX01VTFRJUExBVEZPUk0gJiYgUFBDNjQKLQlib29sICIgIE1hcGxlIDk3MEZYIEV2YWx1YXRpb24gQm9hcmQiCisJYm9vbCAiTWFwbGUgOTcwRlggRXZhbHVhdGlvbiBCb2FyZCIKIAlzZWxlY3QgVTNfREFSVAogCXNlbGVjdCBNUElDX0JST0tFTl9VMwogCXNlbGVjdCBHRU5FUklDX1RCU1lOQwpAQCAtMzkxLDggKzQwNCwxOCBAQAogCSAgRm9yIG1vcmUgaW5mb3JtYXRpb25zLCByZWZlciB0byA8aHR0cDovL3d3dy45NzBldmFsLmNvbT4KIAogY29uZmlnIFBQQ19DRUxMCi0JYm9vbCAiICBDZWxsIEJyb2FkYmFuZCBQcm9jZXNzb3IgQXJjaGl0ZWN0dXJlIgorCWJvb2wKKwlkZWZhdWx0IG4KKworY29uZmlnIFBQQ19DRUxMX05BVElWRQorCWJvb2wKKwlzZWxlY3QgUFBDX0NFTEwKKwlkZWZhdWx0IG4KKworY29uZmlnIFBQQ19JQk1fQ0VMTF9CTEFERQorCWJvb2wgIiAgSUJNIENlbGwgQmxhZGUiCiAJZGVwZW5kcyBvbiBQUENfTVVMVElQTEFURk9STSAmJiBQUEM2NAorCXNlbGVjdCBQUENfQ0VMTF9OQVRJVkUKIAlzZWxlY3QgUFBDX1JUQVMKIAlzZWxlY3QgTU1JT19OVlJBTQogCXNlbGVjdCBQUENfVURCR18xNjU1MApAQCAtNDM5LDExICs0NjIsNiBAQAogCWRlcGVuZHMgb24gUFBDX01BUExFCiAJZGVmYXVsdCB5CiAKLWNvbmZpZyBDRUxMX0lJQwotCWRlcGVuZHMgb24gUFBDX0NFTEwKLQlib29sCi0JZGVmYXVsdCB5Ci0KIGNvbmZpZyBJQk1WSU8KIAlkZXBlbmRzIG9uIFBQQ19QU0VSSUVTIHx8IFBQQ19JU0VSSUVTCiAJYm9vbApAQCAtNTQ1LDYgKzU2Myw3IEBACiBzb3VyY2UgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy80eHgvS2NvbmZpZwogc291cmNlIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9LY29uZmlnCiBzb3VyY2UgYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L0tjb25maWcKK3NvdXJjZSBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvS2NvbmZpZwogc291cmNlIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvOHh4L0tjb25maWcKIHNvdXJjZSBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvS2NvbmZpZwogCkBAIC02OTksNyArNzE4LDYgQEAKIGNvbmZpZyBTQ0hFRF9TTVQKIAlib29sICJTTVQgKEh5cGVydGhyZWFkaW5nKSBzY2hlZHVsZXIgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFBQQzY0ICYmIFNNUAotCWRlZmF1bHQgb2ZmCiAJaGVscAogCSAgU01UIHNjaGVkdWxlciBzdXBwb3J0IGltcHJvdmVzIHRoZSBDUFUgc2NoZWR1bGVyJ3MgZGVjaXNpb24gbWFraW5nCiAJICB3aGVuIGRlYWxpbmcgd2l0aCBQT1dFUjUgY3B1cyBhdCBhIGNvc3Qgb2Ygc2xpZ2h0bHkgaW5jcmVhc2VkCkBAIC03NzYsNiArNzk0LDcgQEAKIAogY29uZmlnIFBQQ19JODI1OQogCWJvb2wKKwlkZWZhdWx0IHkgaWYgTVBDODY0MV9IUENOCiAJZGVmYXVsdCBuCiAKIGNvbmZpZyBQUENfSU5ESVJFQ1RfUENJCkBAIC03OTgsOCArODE3LDggQEAKIAlib29sCiAKIGNvbmZpZyBQQ0kKLQlib29sICJQQ0kgc3VwcG9ydCIgaWYgNDB4IHx8IENQTTIgfHwgUFBDXzgzeHggfHwgUFBDXzg1eHggfHwgUFBDX01QQzUyeHggfHwgKEVNQkVEREVEICYmIFBQQ19JU0VSSUVTKQotCWRlZmF1bHQgeSBpZiAhNDB4ICYmICFDUE0yICYmICE4eHggJiYgIUFQVVMgJiYgIVBQQ184M3h4ICYmICFQUENfODV4eAorCWJvb2wgIlBDSSBzdXBwb3J0IiBpZiA0MHggfHwgQ1BNMiB8fCBQUENfODN4eCB8fCBQUENfODV4eCB8fCBQUENfODZ4eCB8fCBQUENfTVBDNTJ4eCB8fCAoRU1CRURERUQgJiYgUFBDX0lTRVJJRVMpCisJZGVmYXVsdCB5IGlmICE0MHggJiYgIUNQTTIgJiYgITh4eCAmJiAhQVBVUyAmJiAhUFBDXzgzeHggJiYgIVBQQ184NXh4ICYmICFQUENfODZ4eAogCWRlZmF1bHQgUENJX1BFUk1FRElBIGlmICE0eHggJiYgIUNQTTIgJiYgITh4eCAmJiBBUFVTCiAJZGVmYXVsdCBQQ0lfUVNQQU4gaWYgITR4eCAmJiAhQ1BNMiAmJiA4eHgKIAloZWxwCkBAIC04MjcsMTIgKzg0NiwxMiBAQAogCWRlZmF1bHQgeQogCiBjb25maWcgODI2MF9QQ0k5Ci0JYm9vbCAiICBFbmFibGUgd29ya2Fyb3VuZCBmb3IgTVBDODI2eCBlcnJhdHVtIFBDSSA5IgorCWJvb2wgIkVuYWJsZSB3b3JrYXJvdW5kIGZvciBNUEM4MjZ4IGVycmF0dW0gUENJIDkiCiAJZGVwZW5kcyBvbiBQQ0lfODI2MCAmJiAhQURTODI3MgogCWRlZmF1bHQgeQogCiBjaG9pY2UKLQlwcm9tcHQgIiAgSURNQSBjaGFubmVsIGZvciBQQ0kgOSB3b3JrYXJvdW5kIgorCXByb21wdCAiSURNQSBjaGFubmVsIGZvciBQQ0kgOSB3b3JrYXJvdW5kIgogCWRlcGVuZHMgb24gODI2MF9QQ0k5CiAKIGNvbmZpZyA4MjYwX1BDSTlfSURNQTEKQEAgLTg0OSw2ICs4NjgsOCBAQAogCiBlbmRjaG9pY2UKIAorc291cmNlICJkcml2ZXJzL3BjaS9wY2llL0tjb25maWciCisKIHNvdXJjZSAiZHJpdmVycy9wY2kvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL3BjbWNpYS9LY29uZmlnIgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL0tjb25maWcuZGVidWcgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZwppbmRleCA4ZDQ4ZTllLi5jNjkwMDZhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZwpAQCAtMTEwLDEzICsxMTAsMTYgQEAKIAlkZXBlbmRzIG9uIDR4eCB8fCBMT1BFQyB8fCBNVjY0WDYwIHx8IFBQTFVTIHx8IFBSUE1DODAwIHx8IFwKIAkJUFBDX0dFTjU1MCB8fCBQUENfTVBDNTJ4eAogCitjb25maWcgUFBDX0VBUkxZX0RFQlVHCisJYm9vbCAiRWFybHkgZGVidWdnaW5nIChkYW5nZXJvdXMpIgorCiBjaG9pY2UKLQlwcm9tcHQgIkVhcmx5IGRlYnVnZ2luZyAoZGFuZ2Vyb3VzKSIKLQlib29sCi0Jb3B0aW9uYWwKKwlwcm9tcHQgIkVhcmx5IGRlYnVnZ2luZyBjb25zb2xlIgorCWRlcGVuZHMgb24gUFBDX0VBUkxZX0RFQlVHCiAJaGVscAotCSAgRW5hYmxlIGVhcmx5IGRlYnVnZ2luZy4gQ2FyZWZ1bCwgaWYgeW91IGVuYWJsZSBkZWJ1Z2dpbmcgZm9yIHRoZQotCSAgd3JvbmcgdHlwZSBvZiBtYWNoaW5lIHlvdXIga2VybmVsIF93aWxsIG5vdCBib290Xy4KKwkgIFVzZSB0aGUgc2VsZWN0ZWQgY29uc29sZSBmb3IgZWFybHkgZGVidWdnaW5nLiBDYXJlZnVsLCBpZiB5b3UKKwkgIGVuYWJsZSBkZWJ1Z2dpbmcgZm9yIHRoZSB3cm9uZyB0eXBlIG9mIG1hY2hpbmUgeW91ciBrZXJuZWwKKwkgIF93aWxsIG5vdCBib290Xy4KIAogY29uZmlnIFBQQ19FQVJMWV9ERUJVR19MUEFSCiAJYm9vbCAiTFBBUiBIViBDb25zb2xlIgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL01ha2VmaWxlIGIvYXJjaC9wb3dlcnBjL01ha2VmaWxlCmluZGV4IGVkNWIyNmEuLjAxNjY3ZDEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9NYWtlZmlsZQorKysgYi9hcmNoL3Bvd2VycGMvTWFrZWZpbGUKQEAgLTEwOCw3ICsxMDgsNiBAQAogQ0ZMQUdTCQkrPSAtbWNwdT1wb3dlcnBjCiBlbmRpZgogCi1jcHUtYXMtJChDT05GSUdfUFBDNjRCUklER0UpCSs9IC1XYSwtbXBwYzY0YnJpZGdlCiBjcHUtYXMtJChDT05GSUdfNHh4KQkJKz0gLVdhLC1tNDA1CiBjcHUtYXMtJChDT05GSUdfNnh4KQkJKz0gLVdhLC1tYWx0aXZlYwogY3B1LWFzLSQoQ09ORklHX1BPV0VSNCkJCSs9IC1XYSwtbWFsdGl2ZWMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L01ha2VmaWxlIGIvYXJjaC9wb3dlcnBjL2Jvb3QvTWFrZWZpbGUKaW5kZXggODQwYWU1OS4uZDk2MWJmZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvTWFrZWZpbGUKQEAgLTI5LDggKzI5LDggQEAKIE9CSkNPUFlfQ09GRl9BUkdTIDo9IC1PIGFpeGNvZmYtcnM2MDAwIC0tc2V0LXN0YXJ0IDB4NTAwMDAwCiBPQkpDT1BZX01JQl9BUkdTICA6PSAtTyBhaXhjb2ZmLXJzNjAwMCAtUiAuc3RhYiAtUiAuc3RhYnN0ciAtUiAuY29tbWVudAogCi16bGliICAgICAgIDo9IGluZmJsb2NrLmMgaW5mY29kZXMuYyBpbmZmYXN0LmMgaW5mbGF0ZS5jIGluZnRyZWVzLmMgaW5mdXRpbC5jCi16bGliaGVhZGVyIDo9IGluZmJsb2NrLmggaW5mY29kZXMuaCBpbmZmYXN0LmggaW5mdHJlZXMuaCBpbmZ1dGlsLmgKK3psaWIgICAgICAgOj0gaW5mZmFzdC5jIGluZmxhdGUuYyBpbmZ0cmVlcy5jCit6bGliaGVhZGVyIDo9IGluZmZhc3QuaCBpbmZmaXhlZC5oIGluZmxhdGUuaCBpbmZ0cmVlcy5oIGluZnV0aWwuaAogemxpYmxpbnV4aGVhZGVyIDo9IHpsaWIuaCB6Y29uZi5oIHp1dGlsLmgKIAogJChhZGRwcmVmaXggJChvYmopLywkKHpsaWIpIG1haW4ubyk6ICQoYWRkcHJlZml4ICQob2JqKS8sJCh6bGlibGludXhoZWFkZXIpKSAkKGFkZHByZWZpeCAkKG9iaikvLCQoemxpYmhlYWRlcikpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9tYWluLmMgYi9hcmNoL3Bvd2VycGMvYm9vdC9tYWluLmMKaW5kZXggODE2NDQ2Zi4uYjY2NjM0YyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2Jvb3QvbWFpbi5jCisrKyBiL2FyY2gvcG93ZXJwYy9ib290L21haW4uYwpAQCAtMzMsNiArMzMsMTQgQEAKIGV4dGVybiBjaGFyIF9pbml0cmRfc3RhcnRbXTsKIGV4dGVybiBjaGFyIF9pbml0cmRfZW5kW107CiAKKy8qIEEgYnVmZmVyIHRoYXQgbWF5IGJlIGVkaXRlZCBieSB0b29scyBvcGVyYXRpbmcgb24gYSB6SW1hZ2UgYmluYXJ5IHNvIGFzIHRvCisgKiBlZGl0IHRoZSBjb21tYW5kIGxpbmUgcGFzc2VkIHRvIHZtbGludXggKGJ5IHNldHRpbmcgL2Nob3Nlbi9ib290YXJncykuCisgKiBUaGUgYnVmZmVyIGlzIHB1dCBpbiBpdCdzIG93biBzZWN0aW9uIHNvIHRoYXQgdG9vbHMgbWF5IGxvY2F0ZSBpdCBlYXNpZXIuCisgKi8KK3N0YXRpYyBjaGFyIGJ1aWx0aW5fY21kbGluZVs1MTJdCisJX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiX19idWlsdGluX2NtZGxpbmUiKSkpOworCisKIHN0cnVjdCBhZGRyX3JhbmdlIHsKIAl1bnNpZ25lZCBsb25nIGFkZHI7CiAJdW5zaWduZWQgbG9uZyBzaXplOwpAQCAtMjA0LDYgKzIxMiwyMyBAQAogCXJldHVybiAxOwogfQogCit2b2lkIGV4cG9ydF9jbWRsaW5lKHZvaWQqIGNob3Nlbl9oYW5kbGUpCit7CisgICAgICAgIGludCBsZW47CisgICAgICAgIGNoYXIgY21kbGluZVsyXSA9IHsgMCwgMCB9OworCisJaWYgKGJ1aWx0aW5fY21kbGluZVswXSA9PSAwKQorCQlyZXR1cm47CisKKyAgICAgICAgbGVuID0gZ2V0cHJvcChjaG9zZW5faGFuZGxlLCAiYm9vdGFyZ3MiLCBjbWRsaW5lLCBzaXplb2YoY21kbGluZSkpOworICAgICAgICBpZiAobGVuID4gMCAmJiBjbWRsaW5lWzBdICE9IDApCisJCXJldHVybjsKKworCXNldHByb3AoY2hvc2VuX2hhbmRsZSwgImJvb3RhcmdzIiwgYnVpbHRpbl9jbWRsaW5lLAorCQlzdHJsZW4oYnVpbHRpbl9jbWRsaW5lKSArIDEpOworfQorCisKIHZvaWQgc3RhcnQodW5zaWduZWQgbG9uZyBhMSwgdW5zaWduZWQgbG9uZyBhMiwgdm9pZCAqcHJvbXB0ciwgdm9pZCAqc3ApCiB7CiAJaW50IGxlbjsKQEAgLTI4OSw2ICszMTQsOCBAQAogCQltZW1tb3ZlKCh2b2lkICopdm1saW51eC5hZGRyLCh2b2lkICopdm1saW51ei5hZGRyLHZtbGludXouc2l6ZSk7CiAJfQogCisJZXhwb3J0X2NtZGxpbmUoY2hvc2VuX2hhbmRsZSk7CisKIAkvKiBTa2lwIG92ZXIgdGhlIEVMRiBoZWFkZXIgKi8KICNpZmRlZiBERUJVRwogCXByaW50ZigiLi4uIHNraXBwaW5nIDB4JWx4IGJ5dGVzIG9mIEVMRiBoZWFkZXJcblxyIiwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9ib290L3Byb20uaCBiL2FyY2gvcG93ZXJwYy9ib290L3Byb20uaAppbmRleCAzZTJkZGQ0Li5hNTdiMTg0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9wcm9tLmgKKysrIGIvYXJjaC9wb3dlcnBjL2Jvb3QvcHJvbS5oCkBAIC0zMSw0ICszMSwxMSBAQAogCXJldHVybiBjYWxsX3Byb20oImdldHByb3AiLCA0LCAxLCBwaGFuZGxlLCBuYW1lLCBidWYsIGJ1Zmxlbik7CiB9CiAKKworc3RhdGljIGlubGluZSBpbnQgc2V0cHJvcCh2b2lkICpwaGFuZGxlLCBjb25zdCBjaGFyICpuYW1lLAorCQkJICB2b2lkICpidWYsIGludCBidWZsZW4pCit7CisJcmV0dXJuIGNhbGxfcHJvbSgic2V0cHJvcCIsIDQsIDEsIHBoYW5kbGUsIG5hbWUsIGJ1ZiwgYnVmbGVuKTsKK30KKwogI2VuZGlmCQkJCS8qIF9QUENfQk9PVF9QUk9NX0hfICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCmluZGV4IGRiZTQyMWQuLmI4YjhkNDYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE2Ci0jIFRodSBNYXIgMjMgMjA6NDg6MDkgMjAwNgorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3CisjIE1vbiBKdW4gMTkgMTc6MjM6MDMgMjAwNgogIwogQ09ORklHX1BQQzY0PXkKIENPTkZJR182NEJJVD15CkBAIC0xMSw2ICsxMSw3IEBACiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQogQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX0dFTkVSSUNfRklORF9ORVhUX0JJVD15CiBDT05GSUdfUFBDPXkKIENPTkZJR19FQVJMWV9QUklOVEs9eQogQ09ORklHX0NPTVBBVD15CkBAIC01NSw3ICs1Niw3IEBACiAjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CiBDT05GSUdfSUtDT05GSUc9eQogQ09ORklHX0lLQ09ORklHX1BST0M9eQotIyBDT05GSUdfQ1BVU0VUUyBpcyBub3Qgc2V0CitDT05GSUdfQ1BVU0VUUz15CiAjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgogQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKQEAgLTExNiwxMyArMTE3LDE1IEBACiAjIENPTkZJR19QUENfUE1BQyBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfTUFQTEUgaXMgbm90IHNldAogQ09ORklHX1BQQ19DRUxMPXkKK0NPTkZJR19QUENfQ0VMTF9OQVRJVkU9eQorQ09ORklHX1BQQ19JQk1fQ0VMTF9CTEFERT15CitDT05GSUdfUFBDX1NZU1RFTVNJTT15CiAjIENPTkZJR19VM19EQVJUIGlzIG5vdCBzZXQKIENPTkZJR19QUENfUlRBUz15CiAjIENPTkZJR19SVEFTX0VSUk9SX0xPR0dJTkcgaXMgbm90IHNldAogQ09ORklHX1JUQVNfUFJPQz15CiBDT05GSUdfUlRBU19GTEFTSD15CiBDT05GSUdfTU1JT19OVlJBTT15Ci1DT05GSUdfQ0VMTF9JSUM9eQogIyBDT05GSUdfUFBDX01QQzEwNiBpcyBub3Qgc2V0CiAjIENPTkZJR19QUENfOTcwX05BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0CkBAIC0xMzIsNyArMTM1LDkgQEAKICMgQ2VsbCBCcm9hZGJhbmQgRW5naW5lIG9wdGlvbnMKICMKIENPTkZJR19TUFVfRlM9bQorQ09ORklHX1NQVV9CQVNFPXkKIENPTkZJR19TUFVGU19NTUFQPXkKK0NPTkZJR19DQkVfUkFTPXkKIAogIwogIyBLZXJuZWwgb3B0aW9ucwpAQCAtMTUyLDIwICsxNTcsMjQgQEAKIENPTkZJR19LRVhFQz15CiAjIENPTkZJR19DUkFTSF9EVU1QIGlzIG5vdCBzZXQKIENPTkZJR19JUlFfQUxMX0NQVVM9eQotIyBDT05GSUdfTlVNQSBpcyBub3Qgc2V0CitDT05GSUdfTlVNQT15CitDT05GSUdfTk9ERVNfU0hJRlQ9NAogQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTD15Ci1DT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9TUEFSU0VNRU1fRU5BQkxFPXkKIENPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKICMgQ09ORklHX0ZMQVRNRU1fTUFOVUFMIGlzIG5vdCBzZXQKICMgQ09ORklHX0RJU0NPTlRJR01FTV9NQU5VQUwgaXMgbm90IHNldAogQ09ORklHX1NQQVJTRU1FTV9NQU5VQUw9eQogQ09ORklHX1NQQVJTRU1FTT15CitDT05GSUdfTkVFRF9NVUxUSVBMRV9OT0RFUz15CiBDT05GSUdfSEFWRV9NRU1PUllfUFJFU0VOVD15CiAjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKIENPTkZJR19TUEFSU0VNRU1fRVhUUkVNRT15Ci0jIENPTkZJR19NRU1PUllfSE9UUExVRyBpcyBub3Qgc2V0CitDT05GSUdfTUVNT1JZX0hPVFBMVUc9eQogQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKK0NPTkZJR19NSUdSQVRJT049eQorQ09ORklHX0hBVkVfQVJDSF9FQVJMWV9QRk5fVE9fTklEPXkKK0NPTkZJR19BUkNIX01FTU9SWV9QUk9CRT15CiAjIENPTkZJR19QUENfNjRLX1BBR0VTIGlzIG5vdCBzZXQKIENPTkZJR19TQ0hFRF9TTVQ9eQogQ09ORklHX1BST0NfREVWSUNFVFJFRT15CkBAIC0xODIsNiArMTkxLDcgQEAKICMgQ09ORklHX1BQQ19JTkRJUkVDVF9QQ0kgaXMgbm90IHNldAogQ09ORklHX1BDST15CiBDT05GSUdfUENJX0RPTUFJTlM9eQorQ09ORklHX1BDSUVQT1JUQlVTPXkKICMgQ09ORklHX1BDSV9ERUJVRyBpcyBub3Qgc2V0CiAKICMKQEAgLTQ3Niw3ICs0ODYsNyBAQAogIwogQ09ORklHX05FVERFVklDRVM9eQogIyBDT05GSUdfRFVNTVkgaXMgbm90IHNldAotIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CitDT05GSUdfQk9ORElORz15CiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAogIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKIApAQCAtNjI0LDYgKzYzNCw3IEBACiAjIENPTkZJR19OX0hETEMgaXMgbm90IHNldAogIyBDT05GSUdfU1BFQ0lBTElYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JJTyBpcyBub3Qgc2V0CiAjIENPTkZJR19TVEFMRFJWIGlzIG5vdCBzZXQKIAogIwpAQCAtNzY2LDYgKzc3Nyw3IEBACiAjIE11bHRpbWVkaWEgZGV2aWNlcwogIwogIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19WNEwyPXkKIAogIwogIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCkBAIC0xMDU0LDExICsxMDY2LDcgQEAKICMgQ09ORklHX1hNT04gaXMgbm90IHNldAogQ09ORklHX0lSUVNUQUNLUz15CiAjIENPTkZJR19CT09UWF9URVhUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19MUEFSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19HNSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfRUFSTFlfREVCVUdfUlRBUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfRUFSTFlfREVCVUdfTUFQTEUgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0lTRVJJRVMgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHIGlzIG5vdCBzZXQKIAogIwogIyBTZWN1cml0eSBvcHRpb25zCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2Nkc19kZWZjb25maWcgYi9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NXh4X2Nkc19kZWZjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiMDIyYQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL21wYzg1eHhfY2RzX2RlZmNvbmZpZwpAQCAtMCwwICsxLDg0NiBAQAorIworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE2CisjIFN1biBBcHIgIDIgMTE6MjM6NDIgMjAwNgorIworIyBDT05GSUdfUFBDNjQgaXMgbm90IHNldAorQ09ORklHX1BQQzMyPXkKK0NPTkZJR19QUENfTUVSR0U9eQorQ09ORklHX01NVT15CitDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CitDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CitDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQorQ09ORklHX1BQQz15CitDT05GSUdfRUFSTFlfUFJJTlRLPXkKK0NPTkZJR19HRU5FUklDX05WUkFNPXkKK0NPTkZJR19TQ0hFRF9OT19OT19PTUlUX0ZSQU1FX1BPSU5URVI9eQorQ09ORklHX0FSQ0hfTUFZX0hBVkVfUENfRkRDPXkKK0NPTkZJR19QUENfT0Y9eQorQ09ORklHX1BQQ19VREJHXzE2NTUwPXkKKyMgQ09ORklHX0dFTkVSSUNfVEJTWU5DIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFRkFVTFRfVUlNQUdFIGlzIG5vdCBzZXQKKworIworIyBQcm9jZXNzb3Igc3VwcG9ydAorIworIyBDT05GSUdfQ0xBU1NJQzMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ181Mnh4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ184Mnh4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ184M3h4IGlzIG5vdCBzZXQKK0NPTkZJR19QUENfODV4eD15CisjIENPTkZJR180MHggaXMgbm90IHNldAorIyBDT05GSUdfNDR4IGlzIG5vdCBzZXQKKyMgQ09ORklHXzh4eCBpcyBub3Qgc2V0CisjIENPTkZJR19FMjAwIGlzIG5vdCBzZXQKK0NPTkZJR184NXh4PXkKK0NPTkZJR19FNTAwPXkKK0NPTkZJR19CT09LRT15CitDT05GSUdfRlNMX0JPT0tFPXkKKyMgQ09ORklHX1BIWVNfNjRCSVQgaXMgbm90IHNldAorQ09ORklHX1NQRT15CisKKyMKKyMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCisjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKK0NPTkZJR19CUk9LRU5fT05fU01QPXkKK0NPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKKworIworIyBHZW5lcmFsIHNldHVwCisjCitDT05GSUdfTE9DQUxWRVJTSU9OPSIiCitDT05GSUdfTE9DQUxWRVJTSU9OX0FVVE89eQorQ09ORklHX1NXQVA9eQorQ09ORklHX1NZU1ZJUEM9eQorIyBDT05GSUdfUE9TSVhfTVFVRVVFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JTRF9QUk9DRVNTX0FDQ1QgaXMgbm90IHNldAorQ09ORklHX1NZU0NUTD15CisjIENPTkZJR19BVURJVCBpcyBub3Qgc2V0CisjIENPTkZJR19JS0NPTkZJRyBpcyBub3Qgc2V0CisjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorIyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkUgaXMgbm90IHNldAorQ09ORklHX0VNQkVEREVEPXkKK0NPTkZJR19LQUxMU1lNUz15CisjIENPTkZJR19LQUxMU1lNU19BTEwgaXMgbm90IHNldAorIyBDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUyBpcyBub3Qgc2V0CitDT05GSUdfSE9UUExVRz15CitDT05GSUdfUFJJTlRLPXkKK0NPTkZJR19CVUc9eQorQ09ORklHX0VMRl9DT1JFPXkKK0NPTkZJR19CQVNFX0ZVTEw9eQorQ09ORklHX0ZVVEVYPXkKK0NPTkZJR19FUE9MTD15CitDT05GSUdfU0hNRU09eQorQ09ORklHX1NMQUI9eQorIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CitDT05GSUdfQkFTRV9TTUFMTD0wCisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKKworIworIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAorIworIyBDT05GSUdfTU9EVUxFUyBpcyBub3Qgc2V0CisKKyMKKyMgQmxvY2sgbGF5ZXIKKyMKKyMgQ09ORklHX0xCRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTRiBpcyBub3Qgc2V0CisKKyMKKyMgSU8gU2NoZWR1bGVycworIworQ09ORklHX0lPU0NIRURfTk9PUD15CitDT05GSUdfSU9TQ0hFRF9BUz15CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CitDT05GSUdfSU9TQ0hFRF9DRlE9eQorQ09ORklHX0RFRkFVTFRfQVM9eQorIyBDT05GSUdfREVGQVVMVF9ERUFETElORSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgorQ09ORklHX01QSUM9eQorIyBDT05GSUdfV0FOVF9FQVJMWV9TRVJJQUwgaXMgbm90IHNldAorCisjCisjIFBsYXRmb3JtIHN1cHBvcnQKKyMKKyMgQ09ORklHX01QQzg1NDBfQURTIGlzIG5vdCBzZXQKK0NPTkZJR19NUEM4NXh4X0NEUz15CitDT05GSUdfTVBDODU0MD15CitDT05GSUdfUFBDX0lORElSRUNUX1BDSV9CRT15CisKKyMKKyMgS2VybmVsIG9wdGlvbnMKKyMKKyMgQ09ORklHX0hJR0hNRU0gaXMgbm90IHNldAorIyBDT05GSUdfSFpfMTAwIGlzIG5vdCBzZXQKK0NPTkZJR19IWl8yNTA9eQorIyBDT05GSUdfSFpfMTAwMCBpcyBub3Qgc2V0CitDT05GSUdfSFo9MjUwCitDT05GSUdfUFJFRU1QVF9OT05FPXkKKyMgQ09ORklHX1BSRUVNUFRfVk9MVU5UQVJZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAorQ09ORklHX0JJTkZNVF9FTEY9eQorQ09ORklHX0JJTkZNVF9NSVNDPXkKK0NPTkZJR19NQVRIX0VNVUxBVElPTj15CitDT05GSUdfQVJDSF9GTEFUTUVNX0VOQUJMRT15CitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CitDT05GSUdfRkxBVE1FTV9NQU5VQUw9eQorIyBDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19GTEFUTUVNPXkKK0NPTkZJR19GTEFUX05PREVfTUVNX01BUD15CisjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CitDT05GSUdfUFJPQ19ERVZJQ0VUUkVFPXkKKyMgQ09ORklHX0NNRExJTkVfQk9PTCBpcyBub3Qgc2V0CisjIENPTkZJR19QTSBpcyBub3Qgc2V0CisjIENPTkZJR19TT0ZUV0FSRV9TVVNQRU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAorQ09ORklHX0lTQV9ETUFfQVBJPXkKKworIworIyBCdXMgb3B0aW9ucworIworQ09ORklHX1BQQ19JODI1OT15CitDT05GSUdfUFBDX0lORElSRUNUX1BDST15CitDT05GSUdfRlNMX1NPQz15CitDT05GSUdfUENJPXkKK0NPTkZJR19QQ0lfRE9NQUlOUz15CisjIENPTkZJR19QQ0lfREVCVUcgaXMgbm90IHNldAorCisjCisjIFBDQ0FSRCAoUENNQ0lBL0NhcmRCdXMpIHN1cHBvcnQKKyMKKyMgQ09ORklHX1BDQ0FSRCBpcyBub3Qgc2V0CisKKyMKKyMgUENJIEhvdHBsdWcgU3VwcG9ydAorIworIyBDT05GSUdfSE9UUExVR19QQ0kgaXMgbm90IHNldAorCisjCisjIEFkdmFuY2VkIHNldHVwCisjCisjIENPTkZJR19BRFZBTkNFRF9PUFRJT05TIGlzIG5vdCBzZXQKKworIworIyBEZWZhdWx0IHNldHRpbmdzIGZvciBhZHZhbmNlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHVzZWQKKyMKK0NPTkZJR19ISUdITUVNX1NUQVJUPTB4ZmUwMDAwMDAKK0NPTkZJR19MT1dNRU1fU0laRT0weDMwMDAwMDAwCitDT05GSUdfS0VSTkVMX1NUQVJUPTB4YzAwMDAwMDAKK0NPTkZJR19UQVNLX1NJWkU9MHg4MDAwMDAwMAorQ09ORklHX0JPT1RfTE9BRD0weDAwODAwMDAwCisKKyMKKyMgTmV0d29ya2luZworIworQ09ORklHX05FVD15CisKKyMKKyMgTmV0d29ya2luZyBvcHRpb25zCisjCisjIENPTkZJR19ORVRERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfUEFDS0VUPXkKKyMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYPXkKKyMgQ09ORklHX05FVF9LRVkgaXMgbm90IHNldAorQ09ORklHX0lORVQ9eQorQ09ORklHX0lQX01VTFRJQ0FTVD15CisjIENPTkZJR19JUF9BRFZBTkNFRF9ST1VURVIgaXMgbm90IHNldAorQ09ORklHX0lQX0ZJQl9IQVNIPXkKK0NPTkZJR19JUF9QTlA9eQorQ09ORklHX0lQX1BOUF9ESENQPXkKK0NPTkZJR19JUF9QTlBfQk9PVFA9eQorIyBDT05GSUdfSVBfUE5QX1JBUlAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQSVAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQR1JFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX01ST1VURSBpcyBub3Qgc2V0CisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKK0NPTkZJR19TWU5fQ09PS0lFUz15CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lORVRfRElBRz15CitDT05GSUdfSU5FVF9UQ1BfRElBRz15CisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQklDPXkKKyMgQ09ORklHX0lQVjYgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0CisKKyMKKyMgRENDUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9EQ0NQIGlzIG5vdCBzZXQKKworIworIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX0lQX1NDVFAgaXMgbm90IHNldAorCisjCisjIFRJUEMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAorIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAorIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xMQzIgaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQUxLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CisjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAorIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAorCisjCisjIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZworIworIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAorIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CisjIENPTkZJR19CVCBpcyBub3Qgc2V0CisjIENPTkZJR19JRUVFODAyMTEgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorIyBDT05GSUdfRldfTE9BREVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgQ29ubmVjdG9yIC0gdW5pZmllZCB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGxpbmtlcgorIworIyBDT05GSUdfQ09OTkVDVE9SIGlzIG5vdCBzZXQKKworIworIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCisjCisjIENPTkZJR19NVEQgaXMgbm90IHNldAorCisjCisjIFBhcmFsbGVsIHBvcnQgc3VwcG9ydAorIworIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgUGx1ZyBhbmQgUGxheSBzdXBwb3J0CisjCisKKyMKKyMgQmxvY2sgZGV2aWNlcworIworIyBDT05GSUdfQkxLX0RFVl9GRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfQ1BRX0RBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19DUFFfQ0lTU19EQSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0RBQzk2MCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1VNRU0gaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9DT1dfQ09NTU9OIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0xPT1A9eQorIyBDT05GSUdfQkxLX0RFVl9DUllQVE9MT09QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfTkJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfU1g4IGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX1JBTT15CitDT05GSUdfQkxLX0RFVl9SQU1fQ09VTlQ9MTYKK0NPTkZJR19CTEtfREVWX1JBTV9TSVpFPTMyNzY4CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAorCisjCisjIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKKyMKK0NPTkZJR19JREU9eQorQ09ORklHX0JMS19ERVZfSURFPXkKKworIworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JREVESVNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lERUNEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFVEFQRSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lERUZMT1BQWSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVfVEFTS19JT0NUTCBpcyBub3Qgc2V0CisKKyMKKyMgSURFIGNoaXBzZXQgc3VwcG9ydC9idWdmaXhlcworIworQ09ORklHX0lERV9HRU5FUklDPXkKK0NPTkZJR19CTEtfREVWX0lERVBDST15CitDT05GSUdfSURFUENJX1NIQVJFX0lSUT15CisjIENPTkZJR19CTEtfREVWX09GRkJPQVJEIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0dFTkVSSUM9eQorIyBDT05GSUdfQkxLX0RFVl9PUFRJNjIxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfU0w4MkMxMDUgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFRE1BX1BDST15CisjIENPTkZJR19CTEtfREVWX0lERURNQV9GT1JDRUQgaXMgbm90IHNldAorIyBDT05GSUdfSURFRE1BX1BDSV9BVVRPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQUVDNjJYWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0FMSTE1WDMgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9BTUQ3NFhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ01ENjRYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfVFJJRkxFWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0NZODJDNjkzIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ1M1NTIwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ1M1NTMwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSFBUMzRYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSFBUMzY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfU0MxMjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfUElJWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0lUODIxWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX05TODc0MTUgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9QREMyMDJYWF9PTEQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9QREMyMDJYWF9ORVcgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9TVldLUyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1NJSU1BR0UgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9TTEM5MEU2NiBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1RSTTI5MCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFg9eQorIyBDT05GSUdfSURFX0FSTSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVETUE9eQorIyBDT05GSUdfSURFRE1BX0lWQiBpcyBub3Qgc2V0CisjIENPTkZJR19JREVETUFfQVVUTyBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX0hEIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjCisjIENPTkZJR19NRCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKKworIworIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CisjCisjIENPTkZJR19JRUVFMTM5NCBpcyBub3Qgc2V0CisKKyMKKyMgSTJPIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19JMk8gaXMgbm90IHNldAorCisjCisjIE1hY2ludG9zaCBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfV0lOREZBUk0gaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19ORVRERVZJQ0VTPXkKKyMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CisKKyMKKyMgQVJDbmV0IGRldmljZXMKKyMKKyMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CisKKyMKKyMgUEhZIGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfUEhZTElCPXkKKworIworIyBNSUkgUEhZIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19NQVJWRUxMX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19EQVZJQ09NX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19RU0VNSV9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfTFhUX1BIWSBpcyBub3Qgc2V0CisjIENPTkZJR19DSUNBREFfUEhZIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKyMKK0NPTkZJR19ORVRfRVRIRVJORVQ9eQorQ09ORklHX01JST15CisjIENPTkZJR19IQVBQWU1FQUwgaXMgbm90IHNldAorIyBDT05GSUdfU1VOR0VNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBU1NJTkkgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKKworIworIyBUdWxpcCBmYW1pbHkgbmV0d29yayBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfTkVUX1RVTElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hQMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QQ0kgaXMgbm90IHNldAorCisjCisjIEV0aGVybmV0ICgxMDAwIE1iaXQpCisjCisjIENPTkZJR19BQ0VOSUMgaXMgbm90IHNldAorIyBDT05GSUdfREwySyBpcyBub3Qgc2V0CitDT05GSUdfRTEwMDA9eQorQ09ORklHX0UxMDAwX05BUEk9eQorIyBDT05GSUdfRTEwMDBfRElTQUJMRV9QQUNLRVRfU1BMSVQgaXMgbm90IHNldAorIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0CisjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qgc2V0CisjIENPTkZJR19SODE2OSBpcyBub3Qgc2V0CisjIENPTkZJR19TSVMxOTAgaXMgbm90IHNldAorIyBDT05GSUdfU0tHRSBpcyBub3Qgc2V0CisjIENPTkZJR19TS1kyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NLOThMSU4gaXMgbm90IHNldAorIyBDT05GSUdfVElHT04zIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JOWDIgaXMgbm90IHNldAorQ09ORklHX0dJQU5GQVI9eQorQ09ORklHX0dGQVJfTkFQST15CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCisjCisjIENPTkZJR19DSEVMU0lPX1QxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lYR0IgaXMgbm90IHNldAorIyBDT05GSUdfUzJJTyBpcyBub3Qgc2V0CisKKyMKKyMgVG9rZW4gUmluZyBkZXZpY2VzCisjCisjIENPTkZJR19UUiBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCisjCisjIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAorCisjCisjIFdhbiBpbnRlcmZhY2VzCisjCisjIENPTkZJR19XQU4gaXMgbm90IHNldAorIyBDT05GSUdfRkRESSBpcyBub3Qgc2V0CisjIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CisjIENPTkZJR19QUFAgaXMgbm90IHNldAorIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CisjIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAorCisjCisjIElTRE4gc3Vic3lzdGVtCisjCisjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKKworIworIyBUZWxlcGhvbnkgU3VwcG9ydAorIworIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAorCisjCisjIElucHV0IGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfSU5QVVQ9eQorCisjCisjIFVzZXJsYW5kIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CisKKyMKKyMgSW5wdXQgRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX0lOUFVUX0tFWUJPQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIEkvTyBwb3J0cworIworIyBDT05GSUdfU0VSSU8gaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCisjIENPTkZJR19WVCBpcyBub3Qgc2V0CisjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorCisjCisjIFNlcmlhbCBkcml2ZXJzCisjCitDT05GSUdfU0VSSUFMXzgyNTA9eQorQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQorQ09ORklHX1NFUklBTF84MjUwX1BDST15CitDT05GSUdfU0VSSUFMXzgyNTBfTlJfVUFSVFM9NAorQ09ORklHX1NFUklBTF84MjUwX1JVTlRJTUVfVUFSVFM9NAorIyBDT05GSUdfU0VSSUFMXzgyNTBfRVhURU5ERUQgaXMgbm90IHNldAorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfQ09SRT15CitDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CisjIENPTkZJR19TRVJJQUxfSlNNIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYOThfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWVM9eQorQ09ORklHX0xFR0FDWV9QVFlfQ09VTlQ9MjU2CisKKyMKKyMgSVBNSQorIworIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAorQ09ORklHX0dFTl9SVEM9eQorIyBDT05GSUdfR0VOX1JUQ19YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RUTEsgaXMgbm90IHNldAorIyBDT05GSUdfUjM5NjQgaXMgbm90IHNldAorIyBDT05GSUdfQVBQTElDT00gaXMgbm90IHNldAorCisjCisjIEZ0YXBlLCB0aGUgZmxvcHB5IHRhcGUgZGV2aWNlIGRyaXZlcgorIworIyBDT05GSUdfQUdQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RSTSBpcyBub3Qgc2V0CisjIENPTkZJR19SQVdfRFJJVkVSIGlzIG5vdCBzZXQKKworIworIyBUUE0gZGV2aWNlcworIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CisjIENPTkZJR19URUxDTE9DSyBpcyBub3Qgc2V0CisKKyMKKyMgSTJDIHN1cHBvcnQKKyMKKyMgQ09ORklHX0kyQyBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCitDT05GSUdfSFdNT049eQorIyBDT05GSUdfSFdNT05fVklEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRjcxODA1RiBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTl9ERUJVR19DSElQIGlzIG5vdCBzZXQKKworIworIyBNaXNjIGRldmljZXMKKyMKKworIworIyBNdWx0aW1lZGlhIGRldmljZXMKKyMKKyMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0CisKKyMKKyMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcworIworIyBDT05GSUdfRFZCIGlzIG5vdCBzZXQKKworIworIyBHcmFwaGljcyBzdXBwb3J0CisjCisjIENPTkZJR19GQiBpcyBub3Qgc2V0CisKKyMKKyMgU291bmQKKyMKKyMgQ09ORklHX1NPVU5EIGlzIG5vdCBzZXQKKworIworIyBVU0Igc3VwcG9ydAorIworQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQorQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKK0NPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15CisjIENPTkZJR19VU0IgaXMgbm90IHNldAorCisjCisjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKKyMKKworIworIyBVU0IgR2FkZ2V0IFN1cHBvcnQKKyMKKyMgQ09ORklHX1VTQl9HQURHRVQgaXMgbm90IHNldAorCisjCisjIE1NQy9TRCBDYXJkIHN1cHBvcnQKKyMKKyMgQ09ORklHX01NQyBpcyBub3Qgc2V0CisKKyMKKyMgTEVEIGRldmljZXMKKyMKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKworIworIyBJbmZpbmlCYW5kIHN1cHBvcnQKKyMKKyMgQ09ORklHX0lORklOSUJBTkQgaXMgbm90IHNldAorCisjCisjIEVEQUMgLSBlcnJvciBkZXRlY3Rpb24gYW5kIHJlcG9ydGluZyAoUkFTKSAoRVhQRVJJTUVOVEFMKQorIworCisjCisjIFJlYWwgVGltZSBDbG9jaworIworIyBDT05GSUdfUlRDX0NMQVNTIGlzIG5vdCBzZXQKKworIworIyBGaWxlIHN5c3RlbXMKKyMKK0NPTkZJR19FWFQyX0ZTPXkKKyMgQ09ORklHX0VYVDJfRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAorQ09ORklHX0VYVDNfRlM9eQorQ09ORklHX0VYVDNfRlNfWEFUVFI9eQorIyBDT05GSUdfRVhUM19GU19QT1NJWF9BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfRVhUM19GU19TRUNVUklUWSBpcyBub3Qgc2V0CitDT05GSUdfSkJEPXkKKyMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfRlNfTUJDQUNIRT15CisjIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfSU5PVElGWT15CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CisjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKKworIworIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19JU085NjYwX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VERl9GUyBpcyBub3Qgc2V0CisKKyMKKyMgRE9TL0ZBVC9OVCBGaWxlc3lzdGVtcworIworIyBDT05GSUdfTVNET1NfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19QUk9DX0tDT1JFPXkKK0NPTkZJR19TWVNGUz15CitDT05GSUdfVE1QRlM9eQorIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisjIENPTkZJR19DT05GSUdGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcworIworIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNQTFVTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAorIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayBGaWxlIFN5c3RlbXMKKyMKK0NPTkZJR19ORlNfRlM9eQorIyBDT05GSUdfTkZTX1YzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU19WNCBpcyBub3Qgc2V0CisjIENPTkZJR19ORlNfRElSRUNUSU8gaXMgbm90IHNldAorIyBDT05GSUdfTkZTRCBpcyBub3Qgc2V0CitDT05GSUdfUk9PVF9ORlM9eQorQ09ORklHX0xPQ0tEPXkKK0NPTkZJR19ORlNfQ09NTU9OPXkKK0NPTkZJR19TVU5SUEM9eQorIyBDT05GSUdfUlBDU0VDX0dTU19LUkI1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1JQQ1NFQ19HU1NfU1BLTTMgaXMgbm90IHNldAorIyBDT05GSUdfU01CX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NJRlMgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NPREFfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHXzlQX0ZTIGlzIG5vdCBzZXQKKworIworIyBQYXJ0aXRpb24gVHlwZXMKKyMKK0NPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eQorIyBDT05GSUdfQUNPUk5fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX09TRl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfQU1JR0FfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQVJJX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX01TRE9TX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19MRE1fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NHSV9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfVUxUUklYX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19TVU5fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tBUk1BX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19FRklfUEFSVElUSU9OIGlzIG5vdCBzZXQKKworIworIyBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAorIworIyBDT05GSUdfTkxTIGlzIG5vdCBzZXQKKworIworIyBMaWJyYXJ5IHJvdXRpbmVzCisjCisjIENPTkZJR19DUkNfQ0NJVFQgaXMgbm90IHNldAorIyBDT05GSUdfQ1JDMTYgaXMgbm90IHNldAorQ09ORklHX0NSQzMyPXkKKyMgQ09ORklHX0xJQkNSQzMyQyBpcyBub3Qgc2V0CisKKyMKKyMgSW5zdHJ1bWVudGF0aW9uIFN1cHBvcnQKKyMKKyMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CisKKyMKKyMgS2VybmVsIGhhY2tpbmcKKyMKKyMgQ09ORklHX1BSSU5US19USU1FIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BR0lDX1NZU1JRIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19LRVJORUw9eQorQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKK0NPTkZJR19ERVRFQ1RfU09GVExPQ0tVUD15CisjIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NMQUIgaXMgbm90IHNldAorQ09ORklHX0RFQlVHX01VVEVYRVM9eQorIyBDT05GSUdfREVCVUdfU1BJTkxPQ0sgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfS09CSkVDVCBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKK0NPTkZJR19GT1JDRURfSU5MSU5JTkc9eQorIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR0dFUiBpcyBub3Qgc2V0CisjIENPTkZJR19CRElfU1dJVENIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JPT1RYX1RFWFQgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0xQQVIgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0c1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19SVEFTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19NQVBMRSBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfRUFSTFlfREVCVUdfSVNFUklFUyBpcyBub3Qgc2V0CisKKyMKKyMgU2VjdXJpdHkgb3B0aW9ucworIworIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CisKKyMKKyMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCisjCisjIENPTkZJR19DUllQVE8gaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCisjCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4NjQxX2hwY25fZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODY0MV9ocGNuX2RlZmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2EzMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODY0MV9ocGNuX2RlZmNvbmZpZwpAQCAtMCwwICsxLDkyMSBAQAorIworIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LXJjMworIyBGcmkgSnVuIDE2IDEwOjQ3OjA5IDIwMDYKKyMKKyMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKK0NPTkZJR19QUEMzMj15CitDT05GSUdfUFBDX01FUkdFPXkKK0NPTkZJR19NTVU9eQorQ09ORklHX0dFTkVSSUNfSEFSRElSUVM9eQorQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkKK0NPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQorQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKK0NPTkZJR19QUEM9eQorQ09ORklHX0VBUkxZX1BSSU5USz15CitDT05GSUdfR0VORVJJQ19OVlJBTT15CitDT05GSUdfU0NIRURfTk9fTk9fT01JVF9GUkFNRV9QT0lOVEVSPXkKK0NPTkZJR19BUkNIX01BWV9IQVZFX1BDX0ZEQz15CitDT05GSUdfUFBDX09GPXkKK0NPTkZJR19QUENfVURCR18xNjU1MD15CitDT05GSUdfR0VORVJJQ19UQlNZTkM9eQorIyBDT05GSUdfREVGQVVMVF9VSU1BR0UgaXMgbm90IHNldAorCisjCisjIFByb2Nlc3NvciBzdXBwb3J0CisjCisjIENPTkZJR19DTEFTU0lDMzIgaXMgbm90IHNldAorIyBDT05GSUdfUFBDXzUyeHggaXMgbm90IHNldAorIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAorIyBDT05GSUdfUFBDXzgzeHggaXMgbm90IHNldAorIyBDT05GSUdfUFBDXzg1eHggaXMgbm90IHNldAorQ09ORklHX1BQQ184Nnh4PXkKKyMgQ09ORklHXzQweCBpcyBub3Qgc2V0CisjIENPTkZJR180NHggaXMgbm90IHNldAorIyBDT05GSUdfOHh4IGlzIG5vdCBzZXQKKyMgQ09ORklHX0UyMDAgaXMgbm90IHNldAorQ09ORklHXzZ4eD15CitDT05GSUdfUFBDX0ZQVT15CitDT05GSUdfQUxUSVZFQz15CitDT05GSUdfUFBDX1NURF9NTVU9eQorQ09ORklHX1BQQ19TVERfTU1VXzMyPXkKK0NPTkZJR19TTVA9eQorQ09ORklHX05SX0NQVVM9MgorCisjCisjIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucworIworQ09ORklHX0VYUEVSSU1FTlRBTD15CitDT05GSUdfTE9DS19LRVJORUw9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKKyMgQ09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NXQVAgaXMgbm90IHNldAorIyBDT05GSUdfU1lTVklQQyBpcyBub3Qgc2V0CisjIENPTkZJR19QT1NJWF9NUVVFVUUgaXMgbm90IHNldAorIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CitDT05GSUdfU1lTQ1RMPXkKKyMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKK0NPTkZJR19JS0NPTkZJRz15CitDT05GSUdfSUtDT05GSUdfUFJPQz15CisjIENPTkZJR19DUFVTRVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKK0NPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCisjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CitDT05GSUdfRU1CRURERUQ9eQorQ09ORklHX0tBTExTWU1TPXkKKyMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CitDT05GSUdfS0FMTFNZTVNfRVhUUkFfUEFTUz15CitDT05GSUdfSE9UUExVRz15CitDT05GSUdfUFJJTlRLPXkKK0NPTkZJR19CVUc9eQorIyBDT05GSUdfRUxGX0NPUkUgaXMgbm90IHNldAorQ09ORklHX0JBU0VfRlVMTD15CitDT05GSUdfRlVURVg9eQorQ09ORklHX0VQT0xMPXkKK0NPTkZJR19TSE1FTT15CisjIENPTkZJR19TTEFCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RJTllfU0hNRU0gaXMgbm90IHNldAorQ09ORklHX0JBU0VfU01BTEw9MAorQ09ORklHX1NMT0I9eQorCisjCisjIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0CisjCisjIENPTkZJR19NT0RVTEVTIGlzIG5vdCBzZXQKKworIworIyBCbG9jayBsYXllcgorIworIyBDT05GSUdfTEJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorIyBDT05GSUdfTFNGIGlzIG5vdCBzZXQKKworIworIyBJTyBTY2hlZHVsZXJzCisjCitDT05GSUdfSU9TQ0hFRF9OT09QPXkKKyMgQ09ORklHX0lPU0NIRURfQVMgaXMgbm90IHNldAorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorIyBDT05GSUdfSU9TQ0hFRF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9BUyBpcyBub3Qgc2V0CitDT05GSUdfREVGQVVMVF9ERUFETElORT15CisjIENPTkZJR19ERUZBVUxUX0NGUSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAorQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iZGVhZGxpbmUiCitDT05GSUdfTVBJQz15CisjIENPTkZJR19XQU5UX0VBUkxZX1NFUklBTCBpcyBub3Qgc2V0CitDT05GSUdfUFBDX0lORElSRUNUX1BDSV9CRT15CisKKyMKKyMgUGxhdGZvcm0gU3VwcG9ydAorIworQ09ORklHX01QQzg2NDFfSFBDTj15CitDT05GSUdfTVBDODY0MT15CisKKyMKKyMgS2VybmVsIG9wdGlvbnMKKyMKK0NPTkZJR19ISUdITUVNPXkKKyMgQ09ORklHX0haXzEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19IWl8yNTAgaXMgbm90IHNldAorQ09ORklHX0haXzEwMDA9eQorQ09ORklHX0haPTEwMDAKK0NPTkZJR19QUkVFTVBUX05PTkU9eQorIyBDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlkgaXMgbm90IHNldAorIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CitDT05GSUdfUFJFRU1QVF9CS0w9eQorQ09ORklHX0JJTkZNVF9FTEY9eQorIyBDT05GSUdfQklORk1UX01JU0MgaXMgbm90IHNldAorIyBDT05GSUdfSVJRX0FMTF9DUFVTIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0ZMQVRNRU1fRU5BQkxFPXkKK0NPTkZJR19TRUxFQ1RfTUVNT1JZX01PREVMPXkKK0NPTkZJR19GTEFUTUVNX01BTlVBTD15CisjIENPTkZJR19ESVNDT05USUdNRU1fTUFOVUFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NQQVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldAorQ09ORklHX0ZMQVRNRU09eQorQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQPXkKKyMgQ09ORklHX1NQQVJTRU1FTV9TVEFUSUMgaXMgbm90IHNldAorQ09ORklHX1NQTElUX1BUTE9DS19DUFVTPTQKK0NPTkZJR19QUk9DX0RFVklDRVRSRUU9eQorIyBDT05GSUdfQ01ETElORV9CT09MIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFQ0NPTVAgaXMgbm90IHNldAorQ09ORklHX0lTQV9ETUFfQVBJPXkKKworIworIyBCdXMgb3B0aW9ucworIworQ09ORklHX0dFTkVSSUNfSVNBX0RNQT15CitDT05GSUdfUFBDX0k4MjU5PXkKK0NPTkZJR19QUENfSU5ESVJFQ1RfUENJPXkKK0NPTkZJR19GU0xfU09DPXkKK0NPTkZJR19QQ0k9eQorQ09ORklHX1BDSV9ET01BSU5TPXkKKyMgQ09ORklHX1BDSV9ERUJVRyBpcyBub3Qgc2V0CisKKyMKKyMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydAorIworIyBDT05GSUdfUENDQVJEIGlzIG5vdCBzZXQKKworIworIyBQQ0kgSG90cGx1ZyBTdXBwb3J0CisjCisjIENPTkZJR19IT1RQTFVHX1BDSSBpcyBub3Qgc2V0CisKKyMKKyMgQWR2YW5jZWQgc2V0dXAKKyMKKyMgQ09ORklHX0FEVkFOQ0VEX09QVElPTlMgaXMgbm90IHNldAorCisjCisjIERlZmF1bHQgc2V0dGluZ3MgZm9yIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdXNlZAorIworQ09ORklHX0hJR0hNRU1fU1RBUlQ9MHhmZTAwMDAwMAorQ09ORklHX0xPV01FTV9TSVpFPTB4MzAwMDAwMDAKK0NPTkZJR19LRVJORUxfU1RBUlQ9MHhjMDAwMDAwMAorQ09ORklHX1RBU0tfU0laRT0weDgwMDAwMDAwCitDT05GSUdfQk9PVF9MT0FEPTB4MDA4MDAwMDAKKworIworIyBOZXR3b3JraW5nCisjCitDT05GSUdfTkVUPXkKKworIworIyBOZXR3b3JraW5nIG9wdGlvbnMKKyMKKyMgQ09ORklHX05FVERFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19QQUNLRVQ9eQorIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAorQ09ORklHX1VOSVg9eQorIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CitDT05GSUdfSU5FVD15CisjIENPTkZJR19JUF9NVUxUSUNBU1QgaXMgbm90IHNldAorIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKK0NPTkZJR19JUF9GSUJfSEFTSD15CitDT05GSUdfSVBfUE5QPXkKK0NPTkZJR19JUF9QTlBfREhDUD15CitDT05GSUdfSVBfUE5QX0JPT1RQPXkKK0NPTkZJR19JUF9QTlBfUkFSUD15CisjIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lORVRfRElBRz15CitDT05GSUdfSU5FVF9UQ1BfRElBRz15CisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQklDPXkKK0NPTkZJR19JUFY2PXkKKyMgQ09ORklHX0lQVjZfUFJJVkFDWSBpcyBub3Qgc2V0CisjIENPTkZJR19JUFY2X1JPVVRFUl9QUkVGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X0VTUCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9JUENPTVAgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQVjZfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0CisKKyMKKyMgRENDUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9EQ0NQIGlzIG5vdCBzZXQKKworIworIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX0lQX1NDVFAgaXMgbm90IHNldAorCisjCisjIFRJUEMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfVElQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BVE0gaXMgbm90IHNldAorIyBDT05GSUdfQlJJREdFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZMQU5fODAyMVEgaXMgbm90IHNldAorIyBDT05GSUdfREVDTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xMQzIgaXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQUxLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CisjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAorIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAorCisjCisjIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZworIworIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMgbm90IHNldAorIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAorIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CisjIENPTkZJR19CVCBpcyBub3Qgc2V0CisjIENPTkZJR19JRUVFODAyMTEgaXMgbm90IHNldAorCisjCisjIERldmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworQ09ORklHX1NUQU5EQUxPTkU9eQorQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQorQ09ORklHX0ZXX0xPQURFUj15CisjIENPTkZJR19ERUJVR19EUklWRVIgaXMgbm90IHNldAorCisjCisjIENvbm5lY3RvciAtIHVuaWZpZWQgdXNlcnNwYWNlIDwtPiBrZXJuZWxzcGFjZSBsaW5rZXIKKyMKKyMgQ09ORklHX0NPTk5FQ1RPUiBpcyBub3Qgc2V0CisKKyMKKyMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQorIworIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKKworIworIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKKyMKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorCisjCisjIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAorIworCisjCisjIEJsb2NrIGRldmljZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfRkQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0NQUV9EQSBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfQ1BRX0NJU1NfREEgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9EQUM5NjAgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9VTUVNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPXkKKyMgQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX05CRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX1NYOCBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9SQU09eQorQ09ORklHX0JMS19ERVZfUkFNX0NPVU5UPTE2CitDT05GSUdfQkxLX0RFVl9SQU1fU0laRT0xMzEwNzIKK0NPTkZJR19CTEtfREVWX0lOSVRSRD15CisjIENPTkZJR19DRFJPTV9QS1RDRFZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CisKKyMKKyMgQVRBL0FUQVBJL01GTS9STEwgc3VwcG9ydAorIworIyBDT05GSUdfSURFIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19SQUlEX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0kgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0pCisjCisjIENPTkZJR19NRCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9uIE1QVCBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKKworIworIyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CisjCisjIENPTkZJR19JRUVFMTM5NCBpcyBub3Qgc2V0CisKKyMKKyMgSTJPIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19JMk8gaXMgbm90IHNldAorCisjCisjIE1hY2ludG9zaCBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfV0lOREZBUk0gaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19ORVRERVZJQ0VTPXkKK0NPTkZJR19EVU1NWT15CisjIENPTkZJR19CT05ESU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VRVUFMSVpFUiBpcyBub3Qgc2V0CisjIENPTkZJR19UVU4gaXMgbm90IHNldAorCisjCisjIEFSQ25ldCBkZXZpY2VzCisjCisjIENPTkZJR19BUkNORVQgaXMgbm90IHNldAorCisjCisjIFBIWSBkZXZpY2Ugc3VwcG9ydAorIworQ09ORklHX1BIWUxJQj15CisKKyMKKyMgTUlJIFBIWSBkZXZpY2UgZHJpdmVycworIworIyBDT05GSUdfTUFSVkVMTF9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfREFWSUNPTV9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfUVNFTUlfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xYVF9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfQ0lDQURBX1BIWSBpcyBub3Qgc2V0CitDT05GSUdfVklURVNTRV9QSFk9eQorCisjCisjIEV0aGVybmV0ICgxMCBvciAxMDBNYml0KQorIworQ09ORklHX05FVF9FVEhFUk5FVD15CitDT05GSUdfTUlJPXkKKyMgQ09ORklHX0hBUFBZTUVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19TVU5HRU0gaXMgbm90IHNldAorIyBDT05GSUdfQ0FTU0lOSSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfVkVORE9SXzNDT00gaXMgbm90IHNldAorCisjCisjIFR1bGlwIGZhbWlseSBuZXR3b3JrIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19ORVRfVFVMSVAgaXMgbm90IHNldAorIyBDT05GSUdfSFAxMDAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX1BDSSBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKKyMKKyMgQ09ORklHX0FDRU5JQyBpcyBub3Qgc2V0CisjIENPTkZJR19ETDJLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0UxMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05TODM4MjAgaXMgbm90IHNldAorIyBDT05GSUdfSEFNQUNISSBpcyBub3Qgc2V0CisjIENPTkZJR19ZRUxMT1dGSU4gaXMgbm90IHNldAorIyBDT05GSUdfUjgxNjkgaXMgbm90IHNldAorIyBDT05GSUdfU0lTMTkwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NLR0UgaXMgbm90IHNldAorIyBDT05GSUdfU0tZMiBpcyBub3Qgc2V0CisjIENPTkZJR19TSzk4TElOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RJR09OMyBpcyBub3Qgc2V0CisjIENPTkZJR19CTlgyIGlzIG5vdCBzZXQKK0NPTkZJR19HSUFORkFSPXkKKyMgQ09ORklHX0dGQVJfTkFQSSBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCisjCisjIENPTkZJR19DSEVMU0lPX1QxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lYR0IgaXMgbm90IHNldAorIyBDT05GSUdfUzJJTyBpcyBub3Qgc2V0CisKKyMKKyMgVG9rZW4gUmluZyBkZXZpY2VzCisjCisjIENPTkZJR19UUiBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCisjCisjIENPTkZJR19ORVRfUkFESU8gaXMgbm90IHNldAorCisjCisjIFdhbiBpbnRlcmZhY2VzCisjCisjIENPTkZJR19XQU4gaXMgbm90IHNldAorIyBDT05GSUdfRkRESSBpcyBub3Qgc2V0CisjIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CisjIENPTkZJR19QUFAgaXMgbm90IHNldAorIyBDT05GSUdfU0xJUCBpcyBub3Qgc2V0CisjIENPTkZJR19TSEFQRVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUQ09OU09MRSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRQT0xMIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgaXMgbm90IHNldAorCisjCisjIElTRE4gc3Vic3lzdGVtCisjCisjIENPTkZJR19JU0ROIGlzIG5vdCBzZXQKKworIworIyBUZWxlcGhvbnkgU3VwcG9ydAorIworIyBDT05GSUdfUEhPTkUgaXMgbm90IHNldAorCisjCisjIElucHV0IGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfSU5QVVQ9eQorCisjCisjIFVzZXJsYW5kIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX0lOUFVUX01PVVNFREVWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWURFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9UU0RFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkRFViBpcyBub3Qgc2V0CisjIENPTkZJR19JTlBVVF9FVkJVRyBpcyBub3Qgc2V0CisKKyMKKyMgSW5wdXQgRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX0lOUFVUX0tFWUJPQVJEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVUX01JU0MgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIEkvTyBwb3J0cworIworQ09ORklHX1NFUklPPXkKK0NPTkZJR19TRVJJT19JODA0Mj15CitDT05GSUdfU0VSSU9fU0VSUE9SVD15CisjIENPTkZJR19TRVJJT19QQ0lQUzIgaXMgbm90IHNldAorQ09ORklHX1NFUklPX0xJQlBTMj15CisjIENPTkZJR19TRVJJT19SQVcgaXMgbm90IHNldAorIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNldAorCisjCisjIENoYXJhY3RlciBkZXZpY2VzCisjCitDT05GSUdfVlQ9eQorQ09ORklHX1ZUX0NPTlNPTEU9eQorQ09ORklHX0hXX0NPTlNPTEU9eQorIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKKworIworIyBTZXJpYWwgZHJpdmVycworIworQ09ORklHX1NFUklBTF84MjUwPXkKK0NPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFPXkKK0NPTkZJR19TRVJJQUxfODI1MF9QQ0k9eQorQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTIKK0NPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTIKK0NPTkZJR19TRVJJQUxfODI1MF9FWFRFTkRFRD15CitDT05GSUdfU0VSSUFMXzgyNTBfTUFOWV9QT1JUUz15CitDT05GSUdfU0VSSUFMXzgyNTBfU0hBUkVfSVJRPXkKK0NPTkZJR19TRVJJQUxfODI1MF9ERVRFQ1RfSVJRPXkKK0NPTkZJR19TRVJJQUxfODI1MF9SU0E9eQorCisjCisjIE5vbi04MjUwIHNlcmlhbCBwb3J0IHN1cHBvcnQKKyMKK0NPTkZJR19TRVJJQUxfQ09SRT15CitDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CisjIENPTkZJR19TRVJJQUxfSlNNIGlzIG5vdCBzZXQKK0NPTkZJR19VTklYOThfUFRZUz15CisjIENPTkZJR19MRUdBQ1lfUFRZUyBpcyBub3Qgc2V0CisKKyMKKyMgSVBNSQorIworIyBDT05GSUdfSVBNSV9IQU5ETEVSIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfV0FUQ0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfTlZSQU0gaXMgbm90IHNldAorIyBDT05GSUdfR0VOX1JUQyBpcyBub3Qgc2V0CisjIENPTkZJR19EVExLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKKworIworIyBGdGFwZSwgdGhlIGZsb3BweSB0YXBlIGRldmljZSBkcml2ZXIKKyMKKyMgQ09ORklHX0FHUCBpcyBub3Qgc2V0CisjIENPTkZJR19EUk0gaXMgbm90IHNldAorIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgVFBNIGRldmljZXMKKyMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAorIyBDT05GSUdfVEVMQ0xPQ0sgaXMgbm90IHNldAorCisjCisjIEkyQyBzdXBwb3J0CisjCitDT05GSUdfSTJDPXkKKyMgQ09ORklHX0kyQ19DSEFSREVWIGlzIG5vdCBzZXQKKworIworIyBJMkMgQWxnb3JpdGhtcworIworIyBDT05GSUdfSTJDX0FMR09CSVQgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMR09QQ0YgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMR09QQ0EgaXMgbm90IHNldAorCisjCisjIEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAorIworIyBDT05GSUdfSTJDX0FMSTE1MzUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMSTE1NjMgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FMSTE1WDMgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0FNRDc1NiBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfQU1EODExMSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfSTgwMSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfSTgxMCBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfUElJWDQgaXMgbm90IHNldAorQ09ORklHX0kyQ19NUEM9eQorIyBDT05GSUdfSTJDX05GT1JDRTIgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1BBUlBPUlRfTElHSFQgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1BST1NBVkFHRSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfU0FWQUdFNCBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfU0lTNTU5NSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfU0lTNjMwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19TSVM5NlggaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1ZJQSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfVklBUFJPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19WT09ET08zIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19QQ0FfSVNBIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKK0NPTkZJR19TRU5TT1JTX0VFUFJPTT15CisjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX000MVQwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0FMR08gaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0JVUyBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CisjIENPTkZJR19TUElfTUFTVEVSIGlzIG5vdCBzZXQKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCisjIENPTkZJR19IV01PTiBpcyBub3Qgc2V0CisjIENPTkZJR19IV01PTl9WSUQgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcworIworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKKworIworIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorCisjCisjIEdyYXBoaWNzIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZCIGlzIG5vdCBzZXQKKworIworIyBDb25zb2xlIGRpc3BsYXkgZHJpdmVyIHN1cHBvcnQKKyMKK0NPTkZJR19WR0FfQ09OU09MRT15CisjIENPTkZJR19WR0FDT05fU09GVF9TQ1JPTExCQUNLIGlzIG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKKworIworIyBTb3VuZAorIworIyBDT05GSUdfU09VTkQgaXMgbm90IHNldAorCisjCisjIFVTQiBzdXBwb3J0CisjCitDT05GSUdfVVNCX0FSQ0hfSEFTX0hDRD15CitDT05GSUdfVVNCX0FSQ0hfSEFTX09IQ0k9eQorQ09ORklHX1VTQl9BUkNIX0hBU19FSENJPXkKKyMgQ09ORklHX1VTQiBpcyBub3Qgc2V0CisKKyMKKyMgTk9URTogVVNCX1NUT1JBR0UgZW5hYmxlcyBTQ1NJLCBhbmQgJ1NDU0kgZGlzayBzdXBwb3J0JworIworCisjCisjIFVTQiBHYWRnZXQgU3VwcG9ydAorIworIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CisKKyMKKyMgTU1DL1NEIENhcmQgc3VwcG9ydAorIworIyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKKworIworIyBMRUQgZGV2aWNlcworIworIyBDT05GSUdfTkVXX0xFRFMgaXMgbm90IHNldAorCisjCisjIExFRCBkcml2ZXJzCisjCisKKyMKKyMgTEVEIFRyaWdnZXJzCisjCisKKyMKKyMgSW5maW5pQmFuZCBzdXBwb3J0CisjCisjIENPTkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKKworIworIyBFREFDIC0gZXJyb3IgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcgKFJBUykgKEVYUEVSSU1FTlRBTCkKKyMKKworIworIyBSZWFsIFRpbWUgQ2xvY2sKKyMKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz15CisjIENPTkZJR19FWFQyX0ZTX1hBVFRSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDJfRlNfWElQIGlzIG5vdCBzZXQKK0NPTkZJR19FWFQzX0ZTPXkKK0NPTkZJR19FWFQzX0ZTX1hBVFRSPXkKKyMgQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VYVDNfRlNfU0VDVVJJVFkgaXMgbm90IHNldAorQ09ORklHX0pCRD15CisjIENPTkZJR19KQkRfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0ZTX01CQ0FDSEU9eQorIyBDT05GSUdfUkVJU0VSRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CisjIENPTkZJR19YRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfT0NGUzJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUk9NRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSU5PVElGWSBpcyBub3Qgc2V0CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CisjIENPTkZJR19ETk9USUZZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZVU0VfRlMgaXMgbm90IHNldAorCisjCisjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKKyMKKyMgQ09ORklHX0lTTzk2NjBfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVURGX0ZTIGlzIG5vdCBzZXQKKworIworIyBET1MvRkFUL05UIEZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19NU0RPU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19WRkFUX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05URlNfRlMgaXMgbm90IHNldAorCisjCisjIFBzZXVkbyBmaWxlc3lzdGVtcworIworQ09ORklHX1BST0NfRlM9eQorQ09ORklHX1BST0NfS0NPUkU9eQorQ09ORklHX1NZU0ZTPXkKK0NPTkZJR19UTVBGUz15CisjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAorQ09ORklHX1JBTUZTPXkKKyMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIGZpbGVzeXN0ZW1zCisjCisjIENPTkZJR19BREZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU1BMVVNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkVGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19CRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSQU1GUyBpcyBub3Qgc2V0CisjIENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hQRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfUU5YNEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZU1ZfRlMgaXMgbm90IHNldAorIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBOZXR3b3JrIEZpbGUgU3lzdGVtcworIworQ09ORklHX05GU19GUz15CitDT05GSUdfTkZTX1YzPXkKKyMgQ09ORklHX05GU19WM19BQ0wgaXMgbm90IHNldAorIyBDT05GSUdfTkZTX1Y0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CitDT05GSUdfTkZTRD15CisjIENPTkZJR19ORlNEX1YzIGlzIG5vdCBzZXQKK0NPTkZJR19ORlNEX1RDUD15CitDT05GSUdfUk9PVF9ORlM9eQorQ09ORklHX0xPQ0tEPXkKK0NPTkZJR19MT0NLRF9WND15CitDT05GSUdfRVhQT1JURlM9eQorQ09ORklHX05GU19DT01NT049eQorQ09ORklHX1NVTlJQQz15CisjIENPTkZJR19SUENTRUNfR1NTX0tSQjUgaXMgbm90IHNldAorIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CisjIENPTkZJR19TTUJfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGUyBpcyBub3Qgc2V0CisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldAorCisjCisjIFBhcnRpdGlvbiBUeXBlcworIworQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRD15CisjIENPTkZJR19BQ09STl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfT1NGX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19BTUlHQV9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfQVRBUklfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ19QQVJUSVRJT04gaXMgbm90IHNldAorQ09ORklHX01TRE9TX1BBUlRJVElPTj15CisjIENPTkZJR19CU0RfRElTS0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX01JTklYX1NVQlBBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19TT0xBUklTX1g4Nl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfVU5JWFdBUkVfRElTS0xBQkVMIGlzIG5vdCBzZXQKK0NPTkZJR19MRE1fUEFSVElUSU9OPXkKKyMgQ09ORklHX0xETV9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19TR0lfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VMVFJJWF9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfU1VOX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19LQVJNQV9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfRUZJX1BBUlRJVElPTiBpcyBub3Qgc2V0CisKKyMKKyMgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKKyMKK0NPTkZJR19OTFM9eQorQ09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCisjIENPTkZJR19OTFNfQ09ERVBBR0VfNDM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV83MzcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzc3NSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTIgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODU3IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYyIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2OSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTM2IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85NTAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzMiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTQ5IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfOCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQVNDSUkgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfMSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV8yIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV81IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV85IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE1IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfVVRGOCBpcyBub3Qgc2V0CisKKyMKKyMgTGlicmFyeSByb3V0aW5lcworIworIyBDT05GSUdfQ1JDX0NDSVRUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSQzE2IGlzIG5vdCBzZXQKK0NPTkZJR19DUkMzMj15CisjIENPTkZJR19MSUJDUkMzMkMgaXMgbm90IHNldAorCisjCisjIEluc3RydW1lbnRhdGlvbiBTdXBwb3J0CisjCisjIENPTkZJR19QUk9GSUxJTkcgaXMgbm90IHNldAorCisjCisjIEtlcm5lbCBoYWNraW5nCisjCisjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CisjIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0CitDT05GSUdfREVCVUdfS0VSTkVMPXkKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CitDT05GSUdfREVURUNUX1NPRlRMT0NLVVA9eQorIyBDT05GSUdfU0NIRURTVEFUUyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAorIyBDT05GSUdfREVCVUdfSElHSE1FTSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19JTkZPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1ZNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKK0NPTkZJR19GT1JDRURfSU5MSU5JTkc9eQorIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR0dFUiBpcyBub3Qgc2V0CisjIENPTkZJR19CRElfU1dJVENIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JPT1RYX1RFWFQgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0xQQVIgaXMgbm90IHNldAorIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0c1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19SVEFTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19NQVBMRSBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfRUFSTFlfREVCVUdfSVNFUklFUyBpcyBub3Qgc2V0CisKKyMKKyMgU2VjdXJpdHkgb3B0aW9ucworIworIyBDT05GSUdfS0VZUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CisKKyMKKyMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCisjCisjIENPTkZJR19DUllQVE8gaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJlIGNyeXB0byBkZXZpY2VzCisjCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnIGIvYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZwppbmRleCA1N2EwMjc5Li5hZGRjNzkzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWcKQEAgLTEsNyArMSw3IEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTYtcmM2Ci0jIFdlZCBNYXIgMTUgMTY6MjE6MzIgMjAwNgorIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LXJjNQorIyBNb24gTWF5IDI5IDE0OjQ3OjQ5IDIwMDYKICMKICMgQ09ORklHX1BQQzY0IGlzIG5vdCBzZXQKIENPTkZJR19QUEMzMj15CkBAIC05LDYgKzksNyBAQAogQ09ORklHX01NVT15CiBDT05GSUdfR0VORVJJQ19IQVJESVJRUz15CiBDT05GSUdfUldTRU1fWENIR0FERF9BTEdPUklUSE09eQorQ09ORklHX0dFTkVSSUNfSFdFSUdIVD15CiBDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQogQ09ORklHX1BQQz15CiBDT05GSUdfRUFSTFlfUFJJTlRLPXkKQEAgLTI3LDExICsyOCwxMSBAQAogIyBDT05GSUdfUFBDXzUyeHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDXzgyeHggaXMgbm90IHNldAogIyBDT05GSUdfUFBDXzgzeHggaXMgbm90IHNldAorIyBDT05GSUdfUFBDXzg1eHggaXMgbm90IHNldAogIyBDT05GSUdfNDB4IGlzIG5vdCBzZXQKICMgQ09ORklHXzQ0eCBpcyBub3Qgc2V0CiAjIENPTkZJR184eHggaXMgbm90IHNldAogIyBDT05GSUdfRTIwMCBpcyBub3Qgc2V0Ci0jIENPTkZJR19FNTAwIGlzIG5vdCBzZXQKIENPTkZJR182eHg9eQogQ09ORklHX1BQQ19GUFU9eQogQ09ORklHX0FMVElWRUM9eQpAQCAtNTksNiArNjAsNyBAQAogIyBDT05GSUdfQVVESVQgaXMgbm90IHNldAogQ09ORklHX0lLQ09ORklHPXkKIENPTkZJR19JS0NPTkZJR19QUk9DPXkKKyMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCiAjIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CiAjIENPTkZJR19FTUJFRERFRCBpcyBub3Qgc2V0CkBAIC03MywxMCArNzUsNiBAQAogQ09ORklHX0ZVVEVYPXkKIENPTkZJR19FUE9MTD15CiBDT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAogQ09ORklHX1NMQUI9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCkBAIC04OCw3ICs4Niw2IEBACiBDT05GSUdfTU9EVUxFUz15CiBDT05GSUdfTU9EVUxFX1VOTE9BRD15CiBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRD15Ci1DT05GSUdfT0JTT0xFVEVfTU9EUEFSTT15CiAjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAogQ09ORklHX0tNT0Q9eQpAQCAtOTcsNiArOTQsOCBAQAogIyBCbG9jayBsYXllcgogIwogQ09ORklHX0xCRD15CisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKK0NPTkZJR19MU0Y9eQogCiAjCiAjIElPIFNjaGVkdWxlcnMKQEAgLTEyNCw2ICsxMjMsNyBAQAogIyBDT05GSUdfUFBDX1JUQVMgaXMgbm90IHNldAogIyBDT05GSUdfTU1JT19OVlJBTSBpcyBub3Qgc2V0CiBDT05GSUdfUFBDX01QQzEwNj15CisjIENPTkZJR19QUENfOTcwX05BUCBpcyBub3Qgc2V0CiBDT05GSUdfQ1BVX0ZSRVE9eQogQ09ORklHX0NQVV9GUkVRX1RBQkxFPXkKICMgQ09ORklHX0NQVV9GUkVRX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTE4Miw3ICsxODIsNiBAQAogQ09ORklHX1BQQ19JTkRJUkVDVF9QQ0k9eQogQ09ORklHX1BDST15CiBDT05GSUdfUENJX0RPTUFJTlM9eQotQ09ORklHX1BDSV9MRUdBQ1lfUFJPQz15CiAjIENPTkZJR19QQ0lfREVCVUcgaXMgbm90IHNldAogCiAjCkBAIC0yMzksNyArMjM4LDkgQEAKIENPTkZJR19QQUNLRVQ9eQogIyBDT05GSUdfUEFDS0VUX01NQVAgaXMgbm90IHNldAogQ09ORklHX1VOSVg9eQotIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CitDT05GSUdfWEZSTT15CitDT05GSUdfWEZSTV9VU0VSPXkKK0NPTkZJR19ORVRfS0VZPXkKIENPTkZJR19JTkVUPXkKIENPTkZJR19JUF9NVUxUSUNBU1Q9eQogIyBDT05GSUdfSVBfQURWQU5DRURfUk9VVEVSIGlzIG5vdCBzZXQKQEAgLTI1MCw5ICsyNTEsMTAgQEAKICMgQ09ORklHX0lQX01ST1VURSBpcyBub3Qgc2V0CiAjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKIENPTkZJR19TWU5fQ09PS0lFUz15Ci0jIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUX0FIPXkKK0NPTkZJR19JTkVUX0VTUD15CiAjIENPTkZJR19JTkVUX0lQQ09NUCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORVRfVFVOTkVMIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUX0RJQUc9eQogQ09ORklHX0lORVRfVENQX0RJQUc9eQpAQCAtMjY0LDYgKzI2Niw4IEBACiAjCiAjIENPTkZJR19JUF9WUyBpcyBub3Qgc2V0CiAjIENPTkZJR19JUFY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X1RVTk5FTCBpcyBub3Qgc2V0CiBDT05GSUdfTkVURklMVEVSPXkKICMgQ09ORklHX05FVEZJTFRFUl9ERUJVRyBpcyBub3Qgc2V0CiAKQEAgLTI3OCwxMiArMjgyLDE1IEBACiBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz1tCi0jIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRENDUCBpcyBub3Qgc2V0CitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0RDQ1A9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9FU1A9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9IRUxQRVI9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEg9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MSU1JVD1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BQz1tCiBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01BUks9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1k9bQorQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlQ9bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFPW0KIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE09bQogQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KQEAgLTMwNSwxNSArMzEyLDE1IEBACiBDT05GSUdfSVBfTkZfVEZUUD1tCiBDT05GSUdfSVBfTkZfQU1BTkRBPW0KIENPTkZJR19JUF9ORl9QUFRQPW0KK0NPTkZJR19JUF9ORl9IMzIzPW0KICMgQ09ORklHX0lQX05GX1FVRVVFIGlzIG5vdCBzZXQKIENPTkZJR19JUF9ORl9JUFRBQkxFUz1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfSVBSQU5HRT1tCi1DT05GSUdfSVBfTkZfTUFUQ0hfTVVMVElQT1JUPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UT1M9bQogQ09ORklHX0lQX05GX01BVENIX1JFQ0VOVD1tCiBDT05GSUdfSVBfTkZfTUFUQ0hfRUNOPW0KIENPTkZJR19JUF9ORl9NQVRDSF9EU0NQPW0KLUNPTkZJR19JUF9ORl9NQVRDSF9BSF9FU1A9bQorQ09ORklHX0lQX05GX01BVENIX0FIPW0KIENPTkZJR19JUF9ORl9NQVRDSF9UVEw9bQogQ09ORklHX0lQX05GX01BVENIX09XTkVSPW0KIENPTkZJR19JUF9ORl9NQVRDSF9BRERSVFlQRT1tCkBAIC0zMzUsNiArMzQyLDcgQEAKIENPTkZJR19JUF9ORl9OQVRfVEZUUD1tCiBDT05GSUdfSVBfTkZfTkFUX0FNQU5EQT1tCiBDT05GSUdfSVBfTkZfTkFUX1BQVFA9bQorQ09ORklHX0lQX05GX05BVF9IMzIzPW0KIENPTkZJR19JUF9ORl9NQU5HTEU9bQogQ09ORklHX0lQX05GX1RBUkdFVF9UT1M9bQogQ09ORklHX0lQX05GX1RBUkdFVF9FQ049bQpAQCAtMzUwLDEwICszNTgsMTIgQEAKICMKIENPTkZJR19JUF9EQ0NQPW0KIENPTkZJR19JTkVUX0RDQ1BfRElBRz1tCitDT05GSUdfSVBfRENDUF9BQ0tWRUM9eQogCiAjCiAjIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQogIworQ09ORklHX0lQX0RDQ1BfQ0NJRDI9bQogQ09ORklHX0lQX0RDQ1BfQ0NJRDM9bQogQ09ORklHX0lQX0RDQ1BfVEZSQ19MSUI9bQogCkBAIC0zNjEsNyArMzcxLDYgQEAKICMgRENDUCBLZXJuZWwgSGFja2luZwogIwogIyBDT05GSUdfSVBfRENDUF9ERUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUF9EQ0NQX1VOTE9BRF9IQUNLIGlzIG5vdCBzZXQKIAogIwogIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKQEAgLTQ3Nyw2ICs0ODYsOCBAQAogQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQogQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KIENPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCisjIENPTkZJR19JRUVFODAyMTFfU09GVE1BQyBpcyBub3Qgc2V0CitDT05GSUdfV0lSRUxFU1NfRVhUPXkKIAogIwogIyBEZXZpY2UgRHJpdmVycwpAQCAtNjYyLDkgKzY3Myw4IEBACiBDT05GSUdfU0NTSV9TWU01M0M4WFhfRE1BX0FERFJFU1NJTkdfTU9ERT0wCiBDT05GSUdfU0NTSV9TWU01M0M4WFhfREVGQVVMVF9UQUdTPTE2CiBDT05GSUdfU0NTSV9TWU01M0M4WFhfTUFYX1RBR1M9NjQKLSMgQ09ORklHX1NDU0lfU1lNNTNDOFhYX0lPTUFQUEVEIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NZTTUzQzhYWF9NTUlPPXkKICMgQ09ORklHX1NDU0lfSVBSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDU0lfUUxPR0lDX0ZDIGlzIG5vdCBzZXQKICMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9RTEFfRkMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9MUEZDIGlzIG5vdCBzZXQKQEAgLTY5NCwxNiArNzA0LDE3IEBACiBDT05GSUdfTURfTElORUFSPW0KIENPTkZJR19NRF9SQUlEMD1tCiBDT05GSUdfTURfUkFJRDE9bQotIyBDT05GSUdfTURfUkFJRDEwIGlzIG5vdCBzZXQKK0NPTkZJR19NRF9SQUlEMTA9bQogQ09ORklHX01EX1JBSUQ1PW0KK0NPTkZJR19NRF9SQUlENV9SRVNIQVBFPXkKIENPTkZJR19NRF9SQUlENj1tCiBDT05GSUdfTURfTVVMVElQQVRIPW0KIENPTkZJR19NRF9GQVVMVFk9bQogQ09ORklHX0JMS19ERVZfRE09bQogQ09ORklHX0RNX0NSWVBUPW0KLSMgQ09ORklHX0RNX1NOQVBTSE9UIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RNX01JUlJPUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19ETV9aRVJPIGlzIG5vdCBzZXQKK0NPTkZJR19ETV9TTkFQU0hPVD1tCitDT05GSUdfRE1fTUlSUk9SPW0KK0NPTkZJR19ETV9aRVJPPW0KICMgQ09ORklHX0RNX01VTFRJUEFUSCBpcyBub3Qgc2V0CiAKICMKQEAgLTc0MCw3ICs3NTEsNyBAQAogQ09ORklHX0lFRUUxMzk0X1ZJREVPMTM5ND1tCiBDT05GSUdfSUVFRTEzOTRfU0JQMj1tCiAjIENPTkZJR19JRUVFMTM5NF9TQlAyX1BIWVNfRE1BIGlzIG5vdCBzZXQKLUNPTkZJR19JRUVFMTM5NF9FVEgxMzk0PW0KKyMgQ09ORklHX0lFRUUxMzk0X0VUSDEzOTQgaXMgbm90IHNldAogQ09ORklHX0lFRUUxMzk0X0RWMTM5ND1tCiBDT05GSUdfSUVFRTEzOTRfUkFXSU89bQogCkBAIC03NjksMTAgKzc4MCwxMCBAQAogIyBOZXR3b3JrIGRldmljZSBzdXBwb3J0CiAjCiBDT05GSUdfTkVUREVWSUNFUz15Ci0jIENPTkZJR19EVU1NWSBpcyBub3Qgc2V0CitDT05GSUdfRFVNTVk9bQogIyBDT05GSUdfQk9ORElORyBpcyBub3Qgc2V0CiAjIENPTkZJR19FUVVBTElaRVIgaXMgbm90IHNldAotIyBDT05GSUdfVFVOIGlzIG5vdCBzZXQKK0NPTkZJR19UVU49bQogCiAjCiAjIEFSQ25ldCBkZXZpY2VzCkBAIC04NTcsNiArODY4LDcgQEAKICMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCiAjCiBDT05GSUdfTkVUX1JBRElPPXkKKyMgQ09ORklHX05FVF9XSVJFTEVTU19SVE5FVExJTksgaXMgbm90IHNldAogCiAjCiAjIE9ic29sZXRlIFdpcmVsZXNzIGNhcmRzIHN1cHBvcnQgKHByZS04MDIuMTEpCkBAIC05OTIsNiArMTAwNCw3IEBACiAjIFNlcmlhbCBkcml2ZXJzCiAjCiBDT05GSUdfU0VSSUFMXzgyNTA9bQorQ09ORklHX1NFUklBTF84MjUwX1BDST1tCiAjIENPTkZJR19TRVJJQUxfODI1MF9DUyBpcyBub3Qgc2V0CiBDT05GSUdfU0VSSUFMXzgyNTBfTlJfVUFSVFM9NAogQ09ORklHX1NFUklBTF84MjUwX1JVTlRJTUVfVUFSVFM9NApAQCAtMTAyNyw2ICsxMDQwLDcgQEAKICMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCiAjCiBDT05GSUdfQUdQPW0KKyMgQ09ORklHX0FHUF9WSUEgaXMgbm90IHNldAogQ09ORklHX0FHUF9VTklOT1JUSD1tCiBDT05GSUdfRFJNPW0KICMgQ09ORklHX0RSTV9UREZYIGlzIG5vdCBzZXQKQEAgLTEwODEsNyArMTA5NSw2IEBACiAjIENPTkZJR19JMkNfUEFSUE9SVF9MSUdIVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfUFJPU0FWQUdFIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19TQVZBR0U0IGlzIG5vdCBzZXQKLSMgQ09ORklHX1NDeDIwMF9BQ0IgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1NJUzU1OTUgaXMgbm90IHNldAogIyBDT05GSUdfSTJDX1NJUzYzMCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNfU0lTOTZYIGlzIG5vdCBzZXQKQEAgLTExMDAsMTAgKzExMTMsOCBAQAogIyBDT05GSUdfU0VOU09SU19QQ0Y4NTc0IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfUENBOTUzOSBpcyBub3Qgc2V0CiAjIENPTkZJR19TRU5TT1JTX1BDRjg1OTEgaXMgbm90IHNldAotIyBDT05GSUdfU0VOU09SU19SVEM4NTY0IGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTTQxVDAwIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTlNPUlNfTUFYNjg3NSBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVENfWDEyMDVfSTJDIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19DT1JFIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ19ERUJVR19CVVMgaXMgbm90IHNldApAQCAtMTEzMSwxOCArMTE0MiwxNiBAQAogIwogCiAjCi0jIE11bHRpbWVkaWEgQ2FwYWJpbGl0aWVzIFBvcnQgZHJpdmVycwotIwotCi0jCiAjIE11bHRpbWVkaWEgZGV2aWNlcwogIwogIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19WNEwyPXkKIAogIwogIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCiAjCiAjIENPTkZJR19EVkIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0RBQlVTQiBpcyBub3Qgc2V0CiAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydApAQCAtMTE1Miw2ICsxMTYxLDcgQEAKIENPTkZJR19GQl9DRkJfQ09QWUFSRUE9eQogQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQ9eQogQ09ORklHX0ZCX01BQ01PREVTPXkKK0NPTkZJR19GQl9GSVJNV0FSRV9FRElEPXkKIENPTkZJR19GQl9NT0RFX0hFTFBFUlM9eQogQ09ORklHX0ZCX1RJTEVCTElUVElORz15CiAjIENPTkZJR19GQl9DSVJSVVMgaXMgbm90IHNldApAQCAtMTE3NSw3ICsxMTg1LDYgQEAKICMgQ09ORklHX0ZCX01BVFJPWF9HIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZCX01BVFJPWF9JMkMgaXMgbm90IHNldAogIyBDT05GSUdfRkJfTUFUUk9YX01VTFRJSEVBRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9SQURFT05fT0xEIGlzIG5vdCBzZXQKIENPTkZJR19GQl9SQURFT049eQogQ09ORklHX0ZCX1JBREVPTl9JMkM9eQogIyBDT05GSUdfRkJfUkFERU9OX0RFQlVHIGlzIG5vdCBzZXQKQEAgLTEyMzQsOSArMTI0MywxMSBAQAogQ09ORklHX1NORF9PU1NFTVVMPXkKIENPTkZJR19TTkRfTUlYRVJfT1NTPW0KIENPTkZJR19TTkRfUENNX09TUz1tCitDT05GSUdfU05EX1BDTV9PU1NfUExVR0lOUz15CiBDT05GSUdfU05EX1NFUVVFTkNFUl9PU1M9eQogIyBDT05GSUdfU05EX0RZTkFNSUNfTUlOT1JTIGlzIG5vdCBzZXQKIENPTkZJR19TTkRfU1VQUE9SVF9PTERfQVBJPXkKK0NPTkZJR19TTkRfVkVSQk9TRV9QUk9DRlM9eQogIyBDT05GSUdfU05EX1ZFUkJPU0VfUFJJTlRLIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9ERUJVRyBpcyBub3Qgc2V0CiAKQEAgLTEyNTMsNiArMTI2NCw3IEBACiAjIFBDSSBkZXZpY2VzCiAjCiAjIENPTkZJR19TTkRfQUQxODg5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9BTFMzMDAgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FMUzQwMDAgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FMSTU0NTEgaXMgbm90IHNldAogIyBDT05GSUdfU05EX0FUSUlYUCBpcyBub3Qgc2V0CkBAIC0xMjg1LDYgKzEyOTcsNyBAQAogIyBDT05GSUdfU05EX01JWEFSVCBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfTk0yNTYgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1BDWEhSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9SSVBUSURFIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9STUUzMiBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfUk1FOTYgaXMgbm90IHNldAogIyBDT05GSUdfU05EX1JNRTk2NTIgaXMgbm90IHNldApAQCAtMTMxMCw2ICsxMzIzLDggQEAKICMKICMgUENNQ0lBIGRldmljZXMKICMKKyMgQ09ORklHX1NORF9WWFBPQ0tFVCBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfUERBVURJT0NGIGlzIG5vdCBzZXQKIAogIwogIyBPcGVuIFNvdW5kIFN5c3RlbQpAQCAtMTMyMSw2ICsxMzM2LDcgQEAKICMKIENPTkZJR19VU0JfQVJDSF9IQVNfSENEPXkKIENPTkZJR19VU0JfQVJDSF9IQVNfT0hDST15CitDT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQogQ09ORklHX1VTQj15CiAjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAogCkBAIC0xMzM2LDcgKzEzNTIsOSBAQAogIwogIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKICMKLSMgQ09ORklHX1VTQl9FSENJX0hDRCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0VIQ0lfSENEPW0KK0NPTkZJR19VU0JfRUhDSV9TUExJVF9JU089eQorQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUPXkKICMgQ09ORklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX09IQ0lfSENEPXkKICMgQ09ORklHX1VTQl9PSENJX0JJR19FTkRJQU4gaXMgbm90IHNldApAQCAtMTM0Nyw3ICsxMzY1LDYgQEAKICMKICMgVVNCIERldmljZSBDbGFzcyBkcml2ZXJzCiAjCi0jIENPTkZJR19PQlNPTEVURV9PU1NfVVNCX0RSSVZFUiBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX0FDTT1tCiBDT05GSUdfVVNCX1BSSU5URVI9bQogCkBAIC0xMzU4LDcgKzEzNzUsMTcgQEAKICMKICMgbWF5IGFsc28gYmUgbmVlZGVkOyBzZWUgVVNCX1NUT1JBR0UgSGVscCBmb3IgbW9yZSBpbmZvcm1hdGlvbgogIwotIyBDT05GSUdfVVNCX1NUT1JBR0UgaXMgbm90IHNldAorQ09ORklHX1VTQl9TVE9SQUdFPW0KKyMgQ09ORklHX1VTQl9TVE9SQUdFX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX0RBVEFGQUIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfRlJFRUNPTSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9JU0QyMDAgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfRFBDTSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9VU0JBVCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9TRERSMDkgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfU0REUjU1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX0pVTVBTSE9UIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX0FMQVVEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfTElCVVNVQUwgaXMgbm90IHNldAogCiAjCkBAIC0xMzc0LDkgKzE0MDEsNyBAQAogIyBDT05GSUdfVVNCX0FDRUNBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfS0JUQUIgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1BPV0VSTUFURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfTVRPVUNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9JVE1UT1VDSCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfRUdBTEFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9UT1VDSFNDUkVFTiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfWUVBTElOSyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfWFBBRCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfQVRJX1JFTU9URSBpcyBub3Qgc2V0CkBAIC0xMzkxLDE1ICsxNDE2LDYgQEAKICMgQ09ORklHX1VTQl9NSUNST1RFSyBpcyBub3Qgc2V0CiAKICMKLSMgVVNCIE11bHRpbWVkaWEgZGV2aWNlcwotIwotIyBDT05GSUdfVVNCX0RBQlVTQiBpcyBub3Qgc2V0Ci0KLSMKLSMgVmlkZW80TGludXggc3VwcG9ydCBpcyBuZWVkZWQgZm9yIFVTQiBNdWx0aW1lZGlhIGRldmljZSBzdXBwb3J0Ci0jCi0KLSMKICMgVVNCIE5ldHdvcmsgQWRhcHRlcnMKICMKICMgQ09ORklHX1VTQl9DQVRDIGlzIG5vdCBzZXQKQEAgLTE0MjksNiArMTQ0NSw3IEBACiAjIENPTkZJR19VU0JfU0VSSUFMX0dFTkVSSUMgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9BSVJQUklNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0FOWURBVEEgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NFUklBTF9BUkszMTE2IGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfQkVMS0lOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfV0hJVEVIRUFUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfRElHSV9BQ0NFTEVQT1JUIGlzIG5vdCBzZXQKQEAgLTE0MzYsNiArMTQ1Myw3IEBACiAjIENPTkZJR19VU0JfU0VSSUFMX0NZUFJFU1NfTTggaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1NFUklBTF9FTVBFRyBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0ZURElfU0lPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfRlVOU09GVCBpcyBub3Qgc2V0CiBDT05GSUdfVVNCX1NFUklBTF9WSVNPUj1tCiBDT05GSUdfVVNCX1NFUklBTF9JUEFRPW0KICMgQ09ORklHX1VTQl9TRVJJQUxfSVIgaXMgbm90IHNldApAQCAtMTQ2MCw2ICsxNDc4LDcgQEAKICMgQ09ORklHX1VTQl9TRVJJQUxfS0xTSSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX0tPQklMX1NDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX01DVF9VMjMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TRVJJQUxfTkFWTUFOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfUEwyMzAzIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9TRVJJQUxfSFA0WCBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfU0VSSUFMX1NBRkUgaXMgbm90IHNldApAQCAtMTQ4NCw2ICsxNTAzLDcgQEAKICMgQ09ORklHX1VTQl9QSElER0VUS0lUIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9QSElER0VUU0VSVk8gaXMgbm90IHNldAogIyBDT05GSUdfVVNCX0lETU9VU0UgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NJU1VTQlZHQSBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfTEQgaXMgbm90IHNldAogIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAogCkBAIC0xNTAyLDYgKzE1MjIsMTkgQEAKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CiAKICMKKyMgTEVEIGRldmljZXMKKyMKKyMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKKworIworIyBMRUQgZHJpdmVycworIworCisjCisjIExFRCBUcmlnZ2VycworIworCisjCiAjIEluZmluaUJhbmQgc3VwcG9ydAogIwogIyBDT05GSUdfSU5GSU5JQkFORCBpcyBub3Qgc2V0CkBAIC0xNTExLDYgKzE1NDQsMTEgQEAKICMKIAogIworIyBSZWFsIFRpbWUgQ2xvY2sKKyMKKyMgQ09ORklHX1JUQ19DTEFTUyBpcyBub3Qgc2V0CisKKyMKICMgRmlsZSBzeXN0ZW1zCiAjCiBDT05GSUdfRVhUMl9GUz15CkBAIC0xNTE4LDE0ICsxNTU2LDE0IEBACiAjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiBDT05GSUdfRVhUM19GUz15CiBDT05GSUdfRVhUM19GU19YQVRUUj15Ci0jIENPTkZJR19FWFQzX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CitDT05GSUdfRVhUM19GU19QT1NJWF9BQ0w9eQogIyBDT05GSUdfRVhUM19GU19TRUNVUklUWSBpcyBub3Qgc2V0CiBDT05GSUdfSkJEPXkKICMgQ09ORklHX0pCRF9ERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfRlNfTUJDQUNIRT15CiAjIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKK0NPTkZJR19GU19QT1NJWF9BQ0w9eQogIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKICMgQ09ORklHX01JTklYX0ZTIGlzIG5vdCBzZXQKQEAgLTE1MzQsNyArMTU3Miw3IEBACiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CiBDT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAotIyBDT05GSUdfQVVUT0ZTNF9GUyBpcyBub3Qgc2V0CitDT05GSUdfQVVUT0ZTNF9GUz1tCiBDT05GSUdfRlVTRV9GUz1tCiAKICMKQEAgLTE1NjYsNyArMTYwNCw2IEBACiBDT05GSUdfVE1QRlM9eQogIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKIENPTkZJR19SQU1GUz15Ci1DT05GSUdfUkVMQVlGU19GUz1tCiAjIENPTkZJR19DT05GSUdGU19GUyBpcyBub3Qgc2V0CiAKICMKQEAgLTE1OTAsMTcgKzE2MjcsMjQgQEAKICMgTmV0d29yayBGaWxlIFN5c3RlbXMKICMKIENPTkZJR19ORlNfRlM9eQotIyBDT05GSUdfTkZTX1YzIGlzIG5vdCBzZXQKLSMgQ09ORklHX05GU19WNCBpcyBub3Qgc2V0CitDT05GSUdfTkZTX1YzPXkKK0NPTkZJR19ORlNfVjNfQUNMPXkKK0NPTkZJR19ORlNfVjQ9eQogIyBDT05GSUdfTkZTX0RJUkVDVElPIGlzIG5vdCBzZXQKLUNPTkZJR19ORlNEPXkKLSMgQ09ORklHX05GU0RfVjMgaXMgbm90IHNldAotIyBDT05GSUdfTkZTRF9UQ1AgaXMgbm90IHNldAorQ09ORklHX05GU0Q9bQorQ09ORklHX05GU0RfVjJfQUNMPXkKK0NPTkZJR19ORlNEX1YzPXkKK0NPTkZJR19ORlNEX1YzX0FDTD15CitDT05GSUdfTkZTRF9WND15CitDT05GSUdfTkZTRF9UQ1A9eQogQ09ORklHX0xPQ0tEPXkKLUNPTkZJR19FWFBPUlRGUz15CitDT05GSUdfTE9DS0RfVjQ9eQorQ09ORklHX0VYUE9SVEZTPW0KK0NPTkZJR19ORlNfQUNMX1NVUFBPUlQ9eQogQ09ORklHX05GU19DT01NT049eQogQ09ORklHX1NVTlJQQz15Ci0jIENPTkZJR19SUENTRUNfR1NTX0tSQjUgaXMgbm90IHNldAorQ09ORklHX1NVTlJQQ19HU1M9eQorQ09ORklHX1JQQ1NFQ19HU1NfS1JCNT15CiAjIENPTkZJR19SUENTRUNfR1NTX1NQS00zIGlzIG5vdCBzZXQKIENPTkZJR19TTUJfRlM9bQogIyBDT05GSUdfU01CX05MU19ERUZBVUxUIGlzIG5vdCBzZXQKQEAgLTE2ODEsNyArMTcyNSw3IEBACiBDT05GSUdfQ1JDX0NDSVRUPXkKIENPTkZJR19DUkMxNj15CiBDT05GSUdfQ1JDMzI9eQotIyBDT05GSUdfTElCQ1JDMzJDIGlzIG5vdCBzZXQKK0NPTkZJR19MSUJDUkMzMkM9bQogQ09ORklHX1pMSUJfSU5GTEFURT15CiBDT05GSUdfWkxJQl9ERUZMQVRFPXkKIENPTkZJR19URVhUU0VBUkNIPXkKQEAgLTE3MzUsMjkgKzE3NzksMjkgQEAKICMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCiAjCiBDT05GSUdfQ1JZUFRPPXkKLSMgQ09ORklHX0NSWVBUT19ITUFDIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19OVUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19NRDQgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX01ENSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fU0hBMSBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fU0hBMjU2IGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19TSEE1MTIgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQkxPV0ZJU0ggaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1RXT0ZJU0ggaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRPX1NFUlBFTlQgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19ITUFDPXkKK0NPTkZJR19DUllQVE9fTlVMTD1tCitDT05GSUdfQ1JZUFRPX01END1tCitDT05GSUdfQ1JZUFRPX01ENT15CitDT05GSUdfQ1JZUFRPX1NIQTE9eQorQ09ORklHX0NSWVBUT19TSEEyNTY9bQorQ09ORklHX0NSWVBUT19TSEE1MTI9bQorQ09ORklHX0NSWVBUT19XUDUxMj1tCitDT05GSUdfQ1JZUFRPX1RHUjE5Mj1tCitDT05GSUdfQ1JZUFRPX0RFUz15CitDT05GSUdfQ1JZUFRPX0JMT1dGSVNIPW0KK0NPTkZJR19DUllQVE9fVFdPRklTSD1tCitDT05GSUdfQ1JZUFRPX1NFUlBFTlQ9bQogQ09ORklHX0NSWVBUT19BRVM9bQotIyBDT05GSUdfQ1JZUFRPX0NBU1Q1IGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19DQVNUNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fVEVBIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQ0FTVDU9bQorQ09ORklHX0NSWVBUT19DQVNUNj1tCitDT05GSUdfQ1JZUFRPX1RFQT1tCiBDT05GSUdfQ1JZUFRPX0FSQzQ9bQotIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fS0hBWkFEPW0KK0NPTkZJR19DUllQVE9fQU5VQklTPW0KK0NPTkZJR19DUllQVE9fREVGTEFURT1tCiBDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KLSMgQ09ORklHX0NSWVBUT19DUkMzMkMgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19DUkMzMkM9bQogIyBDT05GSUdfQ1JZUFRPX1RFU1QgaXMgbm90IHNldAogCiAjCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY29uZmlncy9wc2VyaWVzX2RlZmNvbmZpZyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BzZXJpZXNfZGVmY29uZmlnCmluZGV4IDU4ZTY4Y2UuLjMxNzA4YWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jb25maWdzL3BzZXJpZXNfZGVmY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9jb25maWdzL3BzZXJpZXNfZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LXJjMQotIyBXZWQgQXByIDE5IDExOjQ4OjAwIDIwMDYKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xNy1yYzQKKyMgU3VuIE1heSAyOCAwNzoyNjo1NiAyMDA2CiAjCiBDT05GSUdfUFBDNjQ9eQogQ09ORklHXzY0QklUPXkKQEAgLTExLDYgKzExLDcgQEAKIENPTkZJR19SV1NFTV9YQ0hHQUREX0FMR09SSVRITT15CiBDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKIENPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15CitDT05GSUdfR0VORVJJQ19GSU5EX05FWFRfQklUPXkKIENPTkZJR19QUEM9eQogQ09ORklHX0VBUkxZX1BSSU5USz15CiBDT05GSUdfQ09NUEFUPXkKQEAgLTEyNiw4ICsxMjcsOSBAQAogQ09ORklHX1JUQVNfRkxBU0g9bQogIyBDT05GSUdfTU1JT19OVlJBTSBpcyBub3Qgc2V0CiBDT05GSUdfSUJNVklPPXkKLSMgQ09ORklHX0lCTUVCVVMgaXMgbm90IHNldAorQ09ORklHX0lCTUVCVVM9eQogIyBDT05GSUdfUFBDX01QQzEwNiBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfOTcwX05BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19DUFVfRlJFUSBpcyBub3Qgc2V0CiAjIENPTkZJR19XQU5UX0VBUkxZX1NFUklBTCBpcyBub3Qgc2V0CiAKQEAgLTE0Myw3ICsxNDUsNyBAQAogIyBDT05GSUdfUFJFRU1QVCBpcyBub3Qgc2V0CiAjIENPTkZJR19QUkVFTVBUX0JLTCBpcyBub3Qgc2V0CiBDT05GSUdfQklORk1UX0VMRj15Ci0jIENPTkZJR19CSU5GTVRfTUlTQyBpcyBub3Qgc2V0CitDT05GSUdfQklORk1UX01JU0M9bQogQ09ORklHX0ZPUkNFX01BWF9aT05FT1JERVI9MTMKIENPTkZJR19JT01NVV9WTUVSR0U9eQogQ09ORklHX0hPVFBMVUdfQ1BVPXkKQEAgLTE1NSw2ICsxNTcsNyBAQAogQ09ORklHX1NDQU5MT0c9bQogQ09ORklHX0xQQVJDRkc9eQogQ09ORklHX05VTUE9eQorQ09ORklHX05PREVTX1NISUZUPTQKIENPTkZJR19BUkNIX1NFTEVDVF9NRU1PUllfTU9ERUw9eQogQ09ORklHX0FSQ0hfU1BBUlNFTUVNX0VOQUJMRT15CiBDT05GSUdfQVJDSF9TUEFSU0VNRU1fREVGQVVMVD15CkBAIC00NjcsNyArNDcwLDcgQEAKIENPTkZJR19TQ1NJX1NQSV9BVFRSUz15CiBDT05GSUdfU0NTSV9GQ19BVFRSUz15CiBDT05GSUdfU0NTSV9JU0NTSV9BVFRSUz1tCi0jIENPTkZJR19TQ1NJX1NBU19BVFRSUyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9TQVNfQVRUUlM9bQogCiAjCiAjIFNDU0kgbG93LWxldmVsIGRyaXZlcnMKQEAgLTQ5OSwxMyArNTAyLDE4IEBACiBDT05GSUdfU0NTSV9TWU01M0M4WFhfRE1BX0FERFJFU1NJTkdfTU9ERT0wCiBDT05GSUdfU0NTSV9TWU01M0M4WFhfREVGQVVMVF9UQUdTPTE2CiBDT05GSUdfU0NTSV9TWU01M0M4WFhfTUFYX1RBR1M9NjQKLSMgQ09ORklHX1NDU0lfU1lNNTNDOFhYX0lPTUFQUEVEIGlzIG5vdCBzZXQKK0NPTkZJR19TQ1NJX1NZTTUzQzhYWF9NTUlPPXkKIENPTkZJR19TQ1NJX0lQUj15CiBDT05GSUdfU0NTSV9JUFJfVFJBQ0U9eQogQ09ORklHX1NDU0lfSVBSX0RVTVA9eQotIyBDT05GSUdfU0NTSV9RTE9HSUNfRkMgaXMgbm90IHNldAogIyBDT05GSUdfU0NTSV9RTE9HSUNfMTI4MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19TQ1NJX1FMQV9GQyBpcyBub3Qgc2V0CitDT05GSUdfU0NTSV9RTEFfRkM9bQorQ09ORklHX1NDU0lfUUxBMlhYWF9FTUJFRERFRF9GSVJNV0FSRT15CitDT05GSUdfU0NTSV9RTEEyMVhYPW0KK0NPTkZJR19TQ1NJX1FMQTIyWFg9bQorQ09ORklHX1NDU0lfUUxBMjMwMD1tCitDT05GSUdfU0NTSV9RTEEyMzIyPW0KK0NPTkZJR19TQ1NJX1FMQTI0WFg9bQogQ09ORklHX1NDU0lfTFBGQz1tCiAjIENPTkZJR19TQ1NJX0RDMzk1eCBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1NJX0RDMzkwVCBpcyBub3Qgc2V0CkBAIC01MjEsNyArNTI5LDcgQEAKIENPTkZJR19NRF9SQUlEMT15CiBDT05GSUdfTURfUkFJRDEwPW0KIENPTkZJR19NRF9SQUlENT15Ci0jIENPTkZJR19NRF9SQUlENV9SRVNIQVBFIGlzIG5vdCBzZXQKK0NPTkZJR19NRF9SQUlENV9SRVNIQVBFPXkKIENPTkZJR19NRF9SQUlENj1tCiBDT05GSUdfTURfTVVMVElQQVRIPW0KIENPTkZJR19NRF9GQVVMVFk9bQpAQCAtNzY0LDcgKzc3Miw3IEBACiBDT05GSUdfU0VSSUFMX0NPUkU9eQogQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQogQ09ORklHX1NFUklBTF9JQ09NPW0KLSMgQ09ORklHX1NFUklBTF9KU00gaXMgbm90IHNldAorQ09ORklHX1NFUklBTF9KU009bQogQ09ORklHX1VOSVg5OF9QVFlTPXkKIENPTkZJR19MRUdBQ1lfUFRZUz15CiBDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKQEAgLTc3Myw3ICs3ODEsNyBAQAogIyBDT05GSUdfVElQQVIgaXMgbm90IHNldAogQ09ORklHX0hWQ19EUklWRVI9eQogQ09ORklHX0hWQ19DT05TT0xFPXkKLSMgQ09ORklHX0hWQ19SVEFTIGlzIG5vdCBzZXQKK0NPTkZJR19IVkNfUlRBUz15CiBDT05GSUdfSFZDUz1tCiAKICMKQEAgLTEwMzEsOSArMTAzOSw3IEBACiAjIENPTkZJR19VU0JfQUNFQ0FEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9LQlRBQiBpcyBub3Qgc2V0CiAjIENPTkZJR19VU0JfUE9XRVJNQVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9NVE9VQ0ggaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0lUTVRPVUNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9FR0FMQVggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9ZRUFMSU5LIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9YUEFEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQl9BVElfUkVNT1RFIGlzIG5vdCBzZXQKQEAgLTExMDUsMTYgKzExMTEsMjUgQEAKICMgQ09ORklHX05FV19MRURTIGlzIG5vdCBzZXQKIAogIworIyBMRUQgZHJpdmVycworIworCisjCisjIExFRCBUcmlnZ2VycworIworCisjCiAjIEluZmluaUJhbmQgc3VwcG9ydAogIwogQ09ORklHX0lORklOSUJBTkQ9bQotIyBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01BRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkZJTklCQU5EX1VTRVJfQUNDRVNTIGlzIG5vdCBzZXQKK0NPTkZJR19JTkZJTklCQU5EX1VTRVJfTUFEPW0KK0NPTkZJR19JTkZJTklCQU5EX1VTRVJfQUNDRVNTPW0KIENPTkZJR19JTkZJTklCQU5EX01USENBPW0KLSMgQ09ORklHX0lORklOSUJBTkRfTVRIQ0FfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lORklOSUJBTkRfTVRIQ0FfREVCVUc9eQogQ09ORklHX0lORklOSUJBTkRfSVBPSUI9bQotIyBDT05GSUdfSU5GSU5JQkFORF9JUE9JQl9ERUJVRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTkZJTklCQU5EX1NSUCBpcyBub3Qgc2V0CitDT05GSUdfSU5GSU5JQkFORF9JUE9JQl9ERUJVRz15CisjIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0RFQlVHX0RBVEEgaXMgbm90IHNldAorQ09ORklHX0lORklOSUJBTkRfU1JQPW0KIAogIwogIyBFREFDIC0gZXJyb3IgZGV0ZWN0aW9uIGFuZCByZXBvcnRpbmcgKFJBUykgKEVYUEVSSU1FTlRBTCkKQEAgLTExNTksMTUgKzExNzQsMTUgQEAKIENPTkZJR19YRlNfU0VDVVJJVFk9eQogQ09ORklHX1hGU19QT1NJWF9BQ0w9eQogIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19PQ0ZTMl9GUz1tCiAjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CiBDT05GSUdfSU5PVElGWT15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CiBDT05GSUdfRE5PVElGWT15Ci1DT05GSUdfQVVUT0ZTX0ZTPW0KLSMgQ09ORklHX0FVVE9GUzRfRlMgaXMgbm90IHNldAotIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0FVVE9GUzRfRlM9bQorQ09ORklHX0ZVU0VfRlM9bQogCiAjCiAjIENELVJPTS9EVkQgRmlsZXN5c3RlbXMKQEAgLTExOTksNyArMTIxNCw3IEBACiBDT05GSUdfSFVHRVRMQkZTPXkKIENPTkZJR19IVUdFVExCX1BBR0U9eQogQ09ORklHX1JBTUZTPXkKLSMgQ09ORklHX0NPTkZJR0ZTX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19DT05GSUdGU19GUz1tCiAKICMKICMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcwpAQCAtMTMxNyw3ICsxMzMyLDcgQEAKICMKIENPTkZJR19QUk9GSUxJTkc9eQogQ09ORklHX09QUk9GSUxFPXkKLSMgQ09ORklHX0tQUk9CRVMgaXMgbm90IHNldAorQ09ORklHX0tQUk9CRVM9eQogCiAjCiAjIEtlcm5lbCBoYWNraW5nCkBAIC0xMzI5LDcgKzEzNDQsNyBAQAogQ09ORklHX0RFVEVDVF9TT0ZUTE9DS1VQPXkKICMgQ09ORklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAogIyBDT05GSUdfREVCVUdfU0xBQiBpcyBub3Qgc2V0Ci1DT05GSUdfREVCVUdfTVVURVhFUz15CisjIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldApAQCAtMTMzOSwxNyArMTM1NCwxMyBAQAogQ09ORklHX0ZPUkNFRF9JTkxJTklORz15CiAjIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUIGlzIG5vdCBzZXQKIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XPXkKLUNPTkZJR19ERUJVR19TVEFDS19VU0FHRT15CisjIENPTkZJR19ERUJVR19TVEFDS19VU0FHRSBpcyBub3Qgc2V0CiBDT05GSUdfREVCVUdHRVI9eQogQ09ORklHX1hNT049eQogQ09ORklHX1hNT05fREVGQVVMVD15CiBDT05GSUdfSVJRU1RBQ0tTPXkKICMgQ09ORklHX0JPT1RYX1RFWFQgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0xQQVIgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX0VBUkxZX0RFQlVHX0c1IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19SVEFTIGlzIG5vdCBzZXQKLSMgQ09ORklHX1BQQ19FQVJMWV9ERUJVR19NQVBMRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19QUENfRUFSTFlfREVCVUdfSVNFUklFUyBpcyBub3Qgc2V0CisjIENPTkZJR19QUENfRUFSTFlfREVCVUcgaXMgbm90IHNldAogCiAjCiAjIFNlY3VyaXR5IG9wdGlvbnMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvYWxpZ24uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvYWxpZ24uYwppbmRleCBmYWFlYzljLi40NzM0YjVkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2FsaWduLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9hbGlnbi5jCkBAIC0zNSwxNyArMzUsMTkgQEAKIAogI2RlZmluZSBJTlZBTElECXsgMCwgMCB9CiAKLSNkZWZpbmUgTEQJMQkvKiBsb2FkICovCi0jZGVmaW5lIFNUCTIJLyogc3RvcmUgKi8KLSNkZWZpbmUJU0UJNAkvKiBzaWduLWV4dGVuZCB2YWx1ZSAqLwotI2RlZmluZSBGCTgJLyogdG8vZnJvbSBmcCByZWdzICovCi0jZGVmaW5lIFUJMHgxMAkvKiB1cGRhdGUgaW5kZXggcmVnaXN0ZXIgKi8KLSNkZWZpbmUgTQkweDIwCS8qIG11bHRpcGxlIGxvYWQvc3RvcmUgKi8KLSNkZWZpbmUgU1cJMHg0MAkvKiBieXRlIHN3YXAgaW50IG9yIC4uLiAqLwotI2RlZmluZSBTCTB4NDAJLyogLi4uIHNpbmdsZS1wcmVjaXNpb24gZnAgKi8KLSNkZWZpbmUgU1gJMHg0MAkvKiBieXRlIGNvdW50IGluIFhFUiAqLworLyogQml0cyBpbiB0aGUgZmxhZ3MgZmllbGQgKi8KKyNkZWZpbmUgTEQJMAkvKiBsb2FkICovCisjZGVmaW5lIFNUCTEJLyogc3RvcmUgKi8KKyNkZWZpbmUJU0UJMgkvKiBzaWduLWV4dGVuZCB2YWx1ZSAqLworI2RlZmluZSBGCTQJLyogdG8vZnJvbSBmcCByZWdzICovCisjZGVmaW5lIFUJOAkvKiB1cGRhdGUgaW5kZXggcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTQkweDEwCS8qIG11bHRpcGxlIGxvYWQvc3RvcmUgKi8KKyNkZWZpbmUgU1cJMHgyMAkvKiBieXRlIHN3YXAgKi8KKyNkZWZpbmUgUwkweDQwCS8qIHNpbmdsZS1wcmVjaXNpb24gZnAgb3IuLi4gKi8KKyNkZWZpbmUgU1gJMHg0MAkvKiAuLi4gYnl0ZSBjb3VudCBpbiBYRVIgKi8KICNkZWZpbmUgSEFSRAkweDgwCS8qIHN0cmluZywgc3R3Y3guICovCiAKKy8qIERTSVNSIGJpdHMgcmVwb3J0ZWQgZm9yIGEgRENCWiBpbnN0cnVjdGlvbjogKi8KICNkZWZpbmUgRENCWgkweDVmCS8qIDh4eC84Mnh4IGRjYnogZmF1bHRzIHdoZW4gY2FjaGUgbm90IGVuYWJsZWQgKi8KIAogI2RlZmluZSBTV0FQKGEsIGIpCSh0ID0gKGEpLCAoYSkgPSAoYiksIChiKSA9IHQpCkBAIC0yNTYsMTIgKzI1OCwxNiBAQAogI2RlZmluZSBSRUdfQllURShycCwgaSkJCSooKHU4ICopKHJwKSArIChpKSkKICNlbmRpZgogCisjZGVmaW5lIFNXSVpfUFRSKHApCQkoKHVuc2lnbmVkIGNoYXIgX191c2VyICopKChwKSBeIHN3aXopKQorCiBzdGF0aWMgaW50IGVtdWxhdGVfbXVsdGlwbGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGNoYXIgX191c2VyICphZGRyLAogCQkJICAgIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCBuYiwKLQkJCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBpbnN0cikKKwkJCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBpbnN0ciwKKwkJCSAgICB1bnNpZ25lZCBsb25nIHN3aXopCiB7CiAJdW5zaWduZWQgbG9uZyAqcnB0cjsKLQl1bnNpZ25lZCBpbnQgbmIwLCBpOworCXVuc2lnbmVkIGludCBuYjAsIGksIGJzd2l6OworCXVuc2lnbmVkIGxvbmcgcDsKIAogCS8qCiAJICogV2UgZG8gbm90IHRyeSB0byBlbXVsYXRlIDggYnl0ZXMgbXVsdGlwbGUgYXMgdGhleSBhcmVuJ3QgcmVhbGx5CkBAIC0yODAsOSArMjg2LDEyIEBACiAJCQlpZiAobmIgPT0gMCkKIAkJCQlyZXR1cm4gMTsKIAkJfSBlbHNlIHsKLQkJCWlmIChfX2dldF91c2VyKGluc3RyLAotCQkJCSAgICAgICAodW5zaWduZWQgaW50IF9fdXNlciAqKXJlZ3MtPm5pcCkpCisJCQl1bnNpZ25lZCBsb25nIHBjID0gcmVncy0+bmlwIF4gKHN3aXogJiA0KTsKKworCQkJaWYgKF9fZ2V0X3VzZXIoaW5zdHIsICh1bnNpZ25lZCBpbnQgX191c2VyICopcGMpKQogCQkJCXJldHVybiAtRUZBVUxUOworCQkJaWYgKHN3aXogPT0gMCAmJiAoZmxhZ3MgJiBTVykpCisJCQkJaW5zdHIgPSBjcHVfdG9fbGUzMihpbnN0cik7CiAJCQluYiA9IChpbnN0ciA+PiAxMSkgJiAweDFmOwogCQkJaWYgKG5iID09IDApCiAJCQkJbmIgPSAzMjsKQEAgLTMwMCw3ICszMDksMTAgQEAKIAkJcmV0dXJuIC1FRkFVTFQ7CS8qIGJhZCBhZGRyZXNzICovCiAKIAlycHRyID0gJnJlZ3MtPmdwcltyZWddOwotCWlmIChmbGFncyAmIExEKSB7CisJcCA9ICh1bnNpZ25lZCBsb25nKSBhZGRyOworCWJzd2l6ID0gKGZsYWdzICYgU1cpPyAzOiAwOworCisJaWYgKCEoZmxhZ3MgJiBTVCkpIHsKIAkJLyoKIAkJICogVGhpcyB6ZXJvZXMgdGhlIHRvcCA0IGJ5dGVzIG9mIHRoZSBhZmZlY3RlZCByZWdpc3RlcnMKIAkJICogaW4gNjQtYml0IG1vZGUsIGFuZCBhbHNvIHplcm9lcyBvdXQgYW55IHJlbWFpbmluZwpAQCAtMzExLDI2ICszMjMsMjggQEAKIAkJCW1lbXNldCgmcmVncy0+Z3ByWzBdLCAwLAogCQkJICAgICAgICgobmIwICsgMykgLyA0KSAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAKLQkJZm9yIChpID0gMDsgaSA8IG5iOyArK2kpCi0JCQlpZiAoX19nZXRfdXNlcihSRUdfQllURShycHRyLCBpKSwgYWRkciArIGkpKQorCQlmb3IgKGkgPSAwOyBpIDwgbmI7ICsraSwgKytwKQorCQkJaWYgKF9fZ2V0X3VzZXIoUkVHX0JZVEUocnB0ciwgaSBeIGJzd2l6KSwgU1dJWl9QVFIocCkpKQogCQkJCXJldHVybiAtRUZBVUxUOwogCQlpZiAobmIwID4gMCkgewogCQkJcnB0ciA9ICZyZWdzLT5ncHJbMF07CiAJCQlhZGRyICs9IG5iOwotCQkJZm9yIChpID0gMDsgaSA8IG5iMDsgKytpKQotCQkJCWlmIChfX2dldF91c2VyKFJFR19CWVRFKHJwdHIsIGkpLCBhZGRyICsgaSkpCisJCQlmb3IgKGkgPSAwOyBpIDwgbmIwOyArK2ksICsrcCkKKwkJCQlpZiAoX19nZXRfdXNlcihSRUdfQllURShycHRyLCBpIF4gYnN3aXopLAorCQkJCQkgICAgICAgU1dJWl9QVFIocCkpKQogCQkJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQogCiAJfSBlbHNlIHsKLQkJZm9yIChpID0gMDsgaSA8IG5iOyArK2kpCi0JCQlpZiAoX19wdXRfdXNlcihSRUdfQllURShycHRyLCBpKSwgYWRkciArIGkpKQorCQlmb3IgKGkgPSAwOyBpIDwgbmI7ICsraSwgKytwKQorCQkJaWYgKF9fcHV0X3VzZXIoUkVHX0JZVEUocnB0ciwgaSBeIGJzd2l6KSwgU1dJWl9QVFIocCkpKQogCQkJCXJldHVybiAtRUZBVUxUOwogCQlpZiAobmIwID4gMCkgewogCQkJcnB0ciA9ICZyZWdzLT5ncHJbMF07CiAJCQlhZGRyICs9IG5iOwotCQkJZm9yIChpID0gMDsgaSA8IG5iMDsgKytpKQotCQkJCWlmIChfX3B1dF91c2VyKFJFR19CWVRFKHJwdHIsIGkpLCBhZGRyICsgaSkpCisJCQlmb3IgKGkgPSAwOyBpIDwgbmIwOyArK2ksICsrcCkKKwkJCQlpZiAoX19wdXRfdXNlcihSRUdfQllURShycHRyLCBpIF4gYnN3aXopLAorCQkJCQkgICAgICAgU1dJWl9QVFIocCkpKQogCQkJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQogCX0KQEAgLTM1Miw3ICszNjYsNyBAQAogCXVuc2lnbmVkIGludCByZWcsIGFyZWc7CiAJdW5zaWduZWQgaW50IGRzaXNyOwogCXVuc2lnbmVkIGNoYXIgX191c2VyICphZGRyOwotCXVuc2lnbmVkIGNoYXIgX191c2VyICpwOworCXVuc2lnbmVkIGxvbmcgcCwgc3dpejsKIAlpbnQgcmV0LCB0OwogCXVuaW9uIHsKIAkJdTY0IGxsOwpAQCAtMzgwLDExICszOTQsMTUgQEAKIAkgKiBsZXQncyBtYWtlIG9uZSB1cCBmcm9tIHRoZSBpbnN0cnVjdGlvbgogCSAqLwogCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9OT0RTSVNSQUxJR04pKSB7Ci0JCXVuc2lnbmVkIGludCByZWFsX2luc3RyOwotCQlpZiAodW5saWtlbHkoX19nZXRfdXNlcihyZWFsX2luc3RyLAotCQkJCQkodW5zaWduZWQgaW50IF9fdXNlciAqKXJlZ3MtPm5pcCkpKQorCQl1bnNpZ25lZCBsb25nIHBjID0gcmVncy0+bmlwOworCisJCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QUENfTEUpICYmIChyZWdzLT5tc3IgJiBNU1JfTEUpKQorCQkJcGMgXj0gNDsKKwkJaWYgKHVubGlrZWx5KF9fZ2V0X3VzZXIoaW5zdHIsICh1bnNpZ25lZCBpbnQgX191c2VyICopcGMpKSkKIAkJCXJldHVybiAtRUZBVUxUOwotCQlkc2lzciA9IG1ha2VfZHNpc3IocmVhbF9pbnN0cik7CisJCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9SRUFMX0xFKSAmJiAocmVncy0+bXNyICYgTVNSX0xFKSkKKwkJCWluc3RyID0gY3B1X3RvX2xlMzIoaW5zdHIpOworCQlkc2lzciA9IG1ha2VfZHNpc3IoaW5zdHIpOwogCX0KIAogCS8qIGV4dHJhY3QgdGhlIG9wZXJhdGlvbiBhbmQgcmVnaXN0ZXJzIGZyb20gdGhlIGRzaXNyICovCkBAIC0zOTcsNiArNDE1LDI0IEBACiAJbmIgPSBhbGlnbmluZm9baW5zdHJdLmxlbjsKIAlmbGFncyA9IGFsaWduaW5mb1tpbnN0cl0uZmxhZ3M7CiAKKwkvKiBCeXRlc3dhcCBsaXR0bGUgZW5kaWFuIGxvYWRzIGFuZCBzdG9yZXMgKi8KKwlzd2l6ID0gMDsKKwlpZiAocmVncy0+bXNyICYgTVNSX0xFKSB7CisJCWZsYWdzIF49IFNXOworCQkvKgorCQkgKiBTby1jYWxsZWQgIlBvd2VyUEMgbGl0dGxlIGVuZGlhbiIgbW9kZSB3b3JrcyBieQorCQkgKiBzd2l6emxpbmcgYWRkcmVzc2VzIHJhdGhlciB0aGFuIGJ5IGFjdHVhbGx5IGRvaW5nCisJCSAqIGFueSBieXRlLXN3YXBwaW5nLiAgVG8gZW11bGF0ZSB0aGlzLCB3ZSBYT1IgZWFjaAorCQkgKiBieXRlIGFkZHJlc3Mgd2l0aCA3LiAgV2UgYWxzbyBieXRlLXN3YXAsIGJlY2F1c2UKKwkJICogdGhlIHByb2Nlc3NvcidzIGFkZHJlc3Mgc3dpenpsaW5nIGRlcGVuZHMgb24gdGhlCisJCSAqIG9wZXJhbmQgc2l6ZSAoaXQgeG9ycyB0aGUgYWRkcmVzcyB3aXRoIDcgZm9yIGJ5dGVzLAorCQkgKiA2IGZvciBoYWxmd29yZHMsIDQgZm9yIHdvcmRzLCAwIGZvciBkb3VibGV3b3JkcykgYnV0CisJCSAqIHdlIHdpbGwgeG9yIHdpdGggNyBhbmQgbG9hZC9zdG9yZSBlYWNoIGJ5dGUgc2VwYXJhdGVseS4KKwkJICovCisJCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QUENfTEUpKQorCQkJc3dpeiA9IDc7CisJfQorCiAJLyogREFSIGhhcyB0aGUgb3BlcmFuZCBlZmZlY3RpdmUgYWRkcmVzcyAqLwogCWFkZHIgPSAodW5zaWduZWQgY2hhciBfX3VzZXIgKilyZWdzLT5kYXI7CiAKQEAgLTQxMiw3ICs0NDgsOCBAQAogCSAqIGZ1bmN0aW9uCiAJICovCiAJaWYgKGZsYWdzICYgTSkKLQkJcmV0dXJuIGVtdWxhdGVfbXVsdGlwbGUocmVncywgYWRkciwgcmVnLCBuYiwgZmxhZ3MsIGluc3RyKTsKKwkJcmV0dXJuIGVtdWxhdGVfbXVsdGlwbGUocmVncywgYWRkciwgcmVnLCBuYiwKKwkJCQkJZmxhZ3MsIGluc3RyLCBzd2l6KTsKIAogCS8qIFZlcmlmeSB0aGUgYWRkcmVzcyBvZiB0aGUgb3BlcmFuZCAqLwogCWlmICh1bmxpa2VseSh1c2VyX21vZGUocmVncykgJiYKQEAgLTQzMSw1MSArNDY4LDcxIEBACiAJLyogSWYgd2UgYXJlIGxvYWRpbmcsIGdldCB0aGUgZGF0YSBmcm9tIHVzZXIgc3BhY2UsIGVsc2UKIAkgKiBnZXQgaXQgZnJvbSByZWdpc3RlciB2YWx1ZXMKIAkgKi8KLQlpZiAoZmxhZ3MgJiBMRCkgeworCWlmICghKGZsYWdzICYgU1QpKSB7CiAJCWRhdGEubGwgPSAwOwogCQlyZXQgPSAwOwotCQlwID0gYWRkcjsKKwkJcCA9ICh1bnNpZ25lZCBsb25nKSBhZGRyOwogCQlzd2l0Y2ggKG5iKSB7CiAJCWNhc2UgODoKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlswXSwgcCsrKTsKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlsxXSwgcCsrKTsKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlsyXSwgcCsrKTsKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlszXSwgcCsrKTsKKwkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlswXSwgU1dJWl9QVFIocCsrKSk7CisJCQlyZXQgfD0gX19nZXRfdXNlcihkYXRhLnZbMV0sIFNXSVpfUFRSKHArKykpOworCQkJcmV0IHw9IF9fZ2V0X3VzZXIoZGF0YS52WzJdLCBTV0laX1BUUihwKyspKTsKKwkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudlszXSwgU1dJWl9QVFIocCsrKSk7CiAJCWNhc2UgNDoKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudls0XSwgcCsrKTsKLQkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudls1XSwgcCsrKTsKKwkJCXJldCB8PSBfX2dldF91c2VyKGRhdGEudls0XSwgU1dJWl9QVFIocCsrKSk7CisJCQlyZXQgfD0gX19nZXRfdXNlcihkYXRhLnZbNV0sIFNXSVpfUFRSKHArKykpOwogCQljYXNlIDI6Ci0JCQlyZXQgfD0gX19nZXRfdXNlcihkYXRhLnZbNl0sIHArKyk7Ci0JCQlyZXQgfD0gX19nZXRfdXNlcihkYXRhLnZbN10sIHArKyk7CisJCQlyZXQgfD0gX19nZXRfdXNlcihkYXRhLnZbNl0sIFNXSVpfUFRSKHArKykpOworCQkJcmV0IHw9IF9fZ2V0X3VzZXIoZGF0YS52WzddLCBTV0laX1BUUihwKyspKTsKIAkJCWlmICh1bmxpa2VseShyZXQpKQogCQkJCXJldHVybiAtRUZBVUxUOwogCQl9Ci0JfSBlbHNlIGlmIChmbGFncyAmIEYpCisJfSBlbHNlIGlmIChmbGFncyAmIEYpIHsKIAkJZGF0YS5kZCA9IGN1cnJlbnQtPnRocmVhZC5mcHJbcmVnXTsKLQllbHNlCisJCWlmIChmbGFncyAmIFMpIHsKKwkJCS8qIFNpbmdsZS1wcmVjaXNpb24gRlAgc3RvcmUgcmVxdWlyZXMgY29udmVyc2lvbi4uLiAqLworI2lmZGVmIENPTkZJR19QUENfRlBVCisJCQlwcmVlbXB0X2Rpc2FibGUoKTsKKwkJCWVuYWJsZV9rZXJuZWxfZnAoKTsKKwkJCWN2dF9kZigmZGF0YS5kZCwgKGZsb2F0ICopJmRhdGEudls0XSwgJmN1cnJlbnQtPnRocmVhZCk7CisJCQlwcmVlbXB0X2VuYWJsZSgpOworI2Vsc2UKKwkJCXJldHVybiAwOworI2VuZGlmCisJCX0KKwl9IGVsc2UKIAkJZGF0YS5sbCA9IHJlZ3MtPmdwcltyZWddOwogCi0JLyogUGVyZm9ybSBvdGhlciBtaXNjIG9wZXJhdGlvbnMgbGlrZSBzaWduIGV4dGVuc2lvbiwgYnl0ZXN3YXAsCisJaWYgKGZsYWdzICYgU1cpIHsKKwkJc3dpdGNoIChuYikgeworCQljYXNlIDg6CisJCQlTV0FQKGRhdGEudlswXSwgZGF0YS52WzddKTsKKwkJCVNXQVAoZGF0YS52WzFdLCBkYXRhLnZbNl0pOworCQkJU1dBUChkYXRhLnZbMl0sIGRhdGEudls1XSk7CisJCQlTV0FQKGRhdGEudlszXSwgZGF0YS52WzRdKTsKKwkJCWJyZWFrOworCQljYXNlIDQ6CisJCQlTV0FQKGRhdGEudls0XSwgZGF0YS52WzddKTsKKwkJCVNXQVAoZGF0YS52WzVdLCBkYXRhLnZbNl0pOworCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCVNXQVAoZGF0YS52WzZdLCBkYXRhLnZbN10pOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBQZXJmb3JtIG90aGVyIG1pc2Mgb3BlcmF0aW9ucyBsaWtlIHNpZ24gZXh0ZW5zaW9uCiAJICogb3IgZmxvYXRpbmcgcG9pbnQgc2luZ2xlIHByZWNpc2lvbiBjb252ZXJzaW9uCiAJICovCi0Jc3dpdGNoIChmbGFncyAmIH5VKSB7CisJc3dpdGNoIChmbGFncyAmIH4oVXxTVykpIHsKIAljYXNlIExEK1NFOgkvKiBzaWduIGV4dGVuZCAqLwogCQlpZiAoIG5iID09IDIgKQogCQkJZGF0YS5sbCA9IGRhdGEueDE2LmxvdzE2OwogCQllbHNlCS8qIG5iIG11c3QgYmUgNCAqLwogCQkJZGF0YS5sbCA9IGRhdGEueDMyLmxvdzMyOwogCQlicmVhazsKLQljYXNlIExEK1M6CS8qIGJ5dGUtc3dhcCAqLwotCWNhc2UgU1QrUzoKLQkJaWYgKG5iID09IDIpIHsKLQkJCVNXQVAoZGF0YS52WzZdLCBkYXRhLnZbN10pOwotCQl9IGVsc2UgewotCQkJU1dBUChkYXRhLnZbNF0sIGRhdGEudls3XSk7Ci0JCQlTV0FQKGRhdGEudls1XSwgZGF0YS52WzZdKTsKLQkJfQotCQlicmVhazsKIAotCS8qIFNpbmdsZS1wcmVjaXNpb24gRlAgbG9hZCBhbmQgc3RvcmUgcmVxdWlyZSBjb252ZXJzaW9ucy4uLiAqLworCS8qIFNpbmdsZS1wcmVjaXNpb24gRlAgbG9hZCByZXF1aXJlcyBjb252ZXJzaW9uLi4uICovCiAJY2FzZSBMRCtGK1M6CiAjaWZkZWYgQ09ORklHX1BQQ19GUFUKIAkJcHJlZW1wdF9kaXNhYmxlKCk7CkBAIC00ODYsMzQgKzU0MywyNCBAQAogCQlyZXR1cm4gMDsKICNlbmRpZgogCQlicmVhazsKLQljYXNlIFNUK0YrUzoKLSNpZmRlZiBDT05GSUdfUFBDX0ZQVQotCQlwcmVlbXB0X2Rpc2FibGUoKTsKLQkJZW5hYmxlX2tlcm5lbF9mcCgpOwotCQljdnRfZGYoJmRhdGEuZGQsIChmbG9hdCAqKSZkYXRhLnZbNF0sICZjdXJyZW50LT50aHJlYWQpOwotCQlwcmVlbXB0X2VuYWJsZSgpOwotI2Vsc2UKLQkJcmV0dXJuIDA7Ci0jZW5kaWYKLQkJYnJlYWs7CiAJfQogCiAJLyogU3RvcmUgcmVzdWx0IHRvIG1lbW9yeSBvciB1cGRhdGUgcmVnaXN0ZXJzICovCiAJaWYgKGZsYWdzICYgU1QpIHsKIAkJcmV0ID0gMDsKLQkJcCA9IGFkZHI7CisJCXAgPSAodW5zaWduZWQgbG9uZykgYWRkcjsKIAkJc3dpdGNoIChuYikgewogCQljYXNlIDg6Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbMF0sIHArKyk7Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbMV0sIHArKyk7Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbMl0sIHArKyk7Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbM10sIHArKyk7CisJCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbMF0sIFNXSVpfUFRSKHArKykpOworCQkJcmV0IHw9IF9fcHV0X3VzZXIoZGF0YS52WzFdLCBTV0laX1BUUihwKyspKTsKKwkJCXJldCB8PSBfX3B1dF91c2VyKGRhdGEudlsyXSwgU1dJWl9QVFIocCsrKSk7CisJCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbM10sIFNXSVpfUFRSKHArKykpOwogCQljYXNlIDQ6Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbNF0sIHArKyk7Ci0JCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbNV0sIHArKyk7CisJCQlyZXQgfD0gX19wdXRfdXNlcihkYXRhLnZbNF0sIFNXSVpfUFRSKHArKykpOworCQkJcmV0IHw9IF9fcHV0X3VzZXIoZGF0YS52WzVdLCBTV0laX1BUUihwKyspKTsKIAkJY2FzZSAyOgotCQkJcmV0IHw9IF9fcHV0X3VzZXIoZGF0YS52WzZdLCBwKyspOwotCQkJcmV0IHw9IF9fcHV0X3VzZXIoZGF0YS52WzddLCBwKyspOworCQkJcmV0IHw9IF9fcHV0X3VzZXIoZGF0YS52WzZdLCBTV0laX1BUUihwKyspKTsKKwkJCXJldCB8PSBfX3B1dF91c2VyKGRhdGEudls3XSwgU1dJWl9QVFIocCsrKSk7CiAJCX0KIAkJaWYgKHVubGlrZWx5KHJldCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCA4Zjg1YzVlLi5mZjI5NDA1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jCkBAIC0xMjIsOSArMTIyLDggQEAKIAlERUZJTkUoUEFDQVNMQkNBQ0hFLCBvZmZzZXRvZihzdHJ1Y3QgcGFjYV9zdHJ1Y3QsIHNsYl9jYWNoZSkpOwogCURFRklORShQQUNBU0xCQ0FDSEVQVFIsIG9mZnNldG9mKHN0cnVjdCBwYWNhX3N0cnVjdCwgc2xiX2NhY2hlX3B0cikpOwogCURFRklORShQQUNBQ09OVEVYVElELCBvZmZzZXRvZihzdHJ1Y3QgcGFjYV9zdHJ1Y3QsIGNvbnRleHQuaWQpKTsKLSNpZmRlZiBDT05GSUdfUFBDXzY0S19QQUdFUwotCURFRklORShQQUNBUEdESVIsIG9mZnNldG9mKHN0cnVjdCBwYWNhX3N0cnVjdCwgcGdkaXIpKTsKLSNlbmRpZgorCURFRklORShQQUNBQ09OVEVYVFNMTFAsIG9mZnNldG9mKHN0cnVjdCBwYWNhX3N0cnVjdCwgY29udGV4dC5zbGxwKSk7CisJREVGSU5FKFBBQ0FWTUFMTE9DU0xMUCwgb2Zmc2V0b2Yoc3RydWN0IHBhY2Ffc3RydWN0LCB2bWFsbG9jX3NsbHApKTsKICNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFCiAJREVGSU5FKFBBQ0FMT1dIVExCQVJFQVMsIG9mZnNldG9mKHN0cnVjdCBwYWNhX3N0cnVjdCwgY29udGV4dC5sb3dfaHRsYl9hcmVhcykpOwogCURFRklORShQQUNBSElHSEhUTEJBUkVBUywgb2Zmc2V0b2Yoc3RydWN0IHBhY2Ffc3RydWN0LCBjb250ZXh0LmhpZ2hfaHRsYl9hcmVhcykpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9jcHVfc2V0dXBfNnh4LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2NwdV9zZXR1cF82eHguUwppbmRleCA1NWVkNzcxLi4zNjUzODFmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2NwdV9zZXR1cF82eHguUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2NwdV9zZXR1cF82eHguUwpAQCAtMjEwLDkgKzIxMCwxMSBAQAogCSAqIHRoZSBmaXJtd2FyZS4gSWYgYW55LCB3ZSBkaXNhYmxlIE5BUCBjYXBhYmlsaXR5IGFzCiAJICogaXQncyBrbm93biB0byBiZSBib2d1cyBvbiByZXYgMi4xIGFuZCBlYXJsaWVyCiAJICovCitCRUdJTl9GVFJfU0VDVElPTgogCW1mc3ByCXIxMSxTUFJOX0wzQ1IKIAlhbmRpcy4JcjExLHIxMSxMM0NSX0wzRUBoCiAJYmVxCTFmCitFTkRfRlRSX1NFQ1RJT05fSUZTRVQoQ1BVX0ZUUl9MM0NSKQogCWx3eglyNixDUFVfU1BFQ19GRUFUVVJFUyhyNSkKIAlhbmRpLglyMCxyNixDUFVfRlRSX0wzX0RJU0FCTEVfTkFQCiAJYmVxCTFmCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2NwdV9zZXR1cF9wb3dlcjQuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwX3Bvd2VyNC5TCmluZGV4IGI2MWQ4NmUuLjI3MTQxODMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwX3Bvd2VyNC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwX3Bvd2VyNC5TCkBAIC03MywyMyArNzMsNiBAQAogCWlzeW5jCiAJYmxyCiAKLV9HTE9CQUwoX19zZXR1cF9jcHVfcG93ZXI0KQotCWJscgotCi1fR0xPQkFMKF9fc2V0dXBfY3B1X2JlKQotICAgICAgICAvKiBTZXQgbGFyZ2UgcGFnZSBzaXplcyBMUD0wOiAxNk1CLCBMUD0xOiA2NEtCICovCi0gICAgICAgIGFkZGkgICAgcjMsIDAsICAwCi0gICAgICAgIG9yaSAgICAgcjMsIHIzLCBISUQ2X0xCCi0gICAgICAgIHNsZGkgICAgcjMsIHIzLCAzMgotICAgICAgICBub3IgICAgIHIzLCByMywgcjMKLSAgICAgICAgbWZzcHIgICByNCwgU1BSTl9ISUQ2Ci0gICAgICAgIGFuZCAgICAgcjQsIHI0LCByMwotICAgICAgICBhZGRpICAgIHIzLCAwLCAweDAyMDAwCi0gICAgICAgIHNsZGkgICAgcjMsIHIzLCAzMgotICAgICAgICBvciAgICAgIHI0LCByNCwgcjMKLSAgICAgICAgbXRzcHIgICBTUFJOX0hJRDYsIHI0Ci0JYmxyCi0KIF9HTE9CQUwoX19zZXR1cF9jcHVfcHBjOTcwKQogCW1mc3ByCXIwLFNQUk5fSElEMAogCWxpCXIxMSw1CQkJLyogY2xlYXIgRE9aRSBhbmQgU0xFRVAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1dGFibGUuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1dGFibGUuYwppbmRleCAzZjcxODJkLi4xYzExNDg4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2NwdXRhYmxlLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9jcHV0YWJsZS5jCkBAIC0zMCwxMSArMzAsNyBAQAogICogcGFydCBvZiB0aGUgY3B1dGFibGUgdGhvdWdoLiBUaGF0IGhhcyB0byBiZSBmaXhlZCBmb3IgYm90aCBwcGMzMgogICogYW5kIHBwYzY0CiAgKi8KLSNpZmRlZiBDT05GSUdfUFBDNjQKLWV4dGVybiB2b2lkIF9fc2V0dXBfY3B1X3Bvd2VyMyh1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV9zcGVjKiBzcGVjKTsKLWV4dGVybiB2b2lkIF9fc2V0dXBfY3B1X3Bvd2VyNCh1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV9zcGVjKiBzcGVjKTsKLWV4dGVybiB2b2lkIF9fc2V0dXBfY3B1X2JlKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzdHJ1Y3QgY3B1X3NwZWMqIHNwZWMpOwotI2Vsc2UKKyNpZmRlZiBDT05GSUdfUFBDMzIKIGV4dGVybiB2b2lkIF9fc2V0dXBfY3B1XzYwMyh1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV9zcGVjKiBzcGVjKTsKIGV4dGVybiB2b2lkIF9fc2V0dXBfY3B1XzYwNCh1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV9zcGVjKiBzcGVjKTsKIGV4dGVybiB2b2lkIF9fc2V0dXBfY3B1Xzc1MCh1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV9zcGVjKiBzcGVjKTsKQEAgLTU4LDcgKzU0LDggQEAKICNkZWZpbmUgQ09NTU9OX1VTRVJfUE9XRVI1X1BMVVMJKENPTU1PTl9VU0VSX1BQQzY0IHwgUFBDX0ZFQVRVUkVfUE9XRVI1X1BMVVN8XAogCQkJCSBQUENfRkVBVFVSRV9TTVQgfCBQUENfRkVBVFVSRV9JQ0FDSEVfU05PT1ApCiAjZGVmaW5lIENPTU1PTl9VU0VSX1BPV0VSNgkoQ09NTU9OX1VTRVJfUFBDNjQgfCBQUENfRkVBVFVSRV9BUkNIXzJfMDUgfFwKLQkJCQkgUFBDX0ZFQVRVUkVfU01UIHwgUFBDX0ZFQVRVUkVfSUNBQ0hFX1NOT09QKQorCQkJCSBQUENfRkVBVFVSRV9TTVQgfCBQUENfRkVBVFVSRV9JQ0FDSEVfU05PT1AgfCBcCisJCQkJIFBQQ19GRUFUVVJFX1RSVUVfTEUpCiAjZGVmaW5lIENPTU1PTl9VU0VSX0JPT0tFCShQUENfRkVBVFVSRV8zMiB8IFBQQ19GRUFUVVJFX0hBU19NTVUgfCBcCiAJCQkJIFBQQ19GRUFUVVJFX0JPT0tFKQogCkBAIC03OCwxMSArNzUsMTAgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwNDAwMDAwLAogCQkuY3B1X25hbWUJCT0gIlBPV0VSMyAoNjMwKSIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfUE9XRVIzLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUl9QUEM2NCwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVJfUFBDNjR8UFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5udW1fcG1jcwkJPSA4LAotCQkuY3B1X3NldHVwCQk9IF9fc2V0dXBfY3B1X3Bvd2VyMywKIAkJLm9wcm9maWxlX2NwdV90eXBlCT0gInBwYzY0L3Bvd2VyMyIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9SUzY0LAogCQkucGxhdGZvcm0JCT0gInBvd2VyMyIsCkBAIC05MiwxMSArODgsMTAgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwNDEwMDAwLAogCQkuY3B1X25hbWUJCT0gIlBPV0VSMyAoNjMwKykiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTX1BPV0VSMywKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVJfUFBDNjQsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSX1BQQzY0fFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5kY2FjaGVfYnNpemUJCT0gMTI4LAogCQkubnVtX3BtY3MJCT0gOCwKLQkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV9wb3dlcjMsCiAJCS5vcHJvZmlsZV9jcHVfdHlwZQk9ICJwcGM2NC9wb3dlcjMiLAogCQkub3Byb2ZpbGVfdHlwZQkJPSBQUENfT1BST0ZJTEVfUlM2NCwKIAkJLnBsYXRmb3JtCQk9ICJwb3dlcjMiLApAQCAtMTEwLDcgKzEwNSw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXIzLAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcnM2NCIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9SUzY0LAogCQkucGxhdGZvcm0JCT0gInJzNjQiLApAQCAtMTI0LDcgKzExOCw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXIzLAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcnM2NCIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9SUzY0LAogCQkucGxhdGZvcm0JCT0gInJzNjQiLApAQCAtMTM4LDcgKzEzMSw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXIzLAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcnM2NCIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9SUzY0LAogCQkucGxhdGZvcm0JCT0gInJzNjQiLApAQCAtMTUyLDcgKzE0NCw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXIzLAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcnM2NCIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9SUzY0LAogCQkucGxhdGZvcm0JCT0gInJzNjQiLApAQCAtMTY2LDcgKzE1Nyw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXI0LAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcG93ZXI0IiwKIAkJLm9wcm9maWxlX3R5cGUJCT0gUFBDX09QUk9GSUxFX1BPV0VSNCwKIAkJLnBsYXRmb3JtCQk9ICJwb3dlcjQiLApAQCAtMTgwLDcgKzE3MCw2IEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXI0LAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcG93ZXI0IiwKIAkJLm9wcm9maWxlX3R5cGUJCT0gUFBDX09QUk9GSUxFX1BPV0VSNCwKIAkJLnBsYXRmb3JtCQk9ICJwb3dlcjQiLApAQCAtMjAwLDE3ICsxODksMTEgQEAKIAkJLm9wcm9maWxlX3R5cGUJCT0gUFBDX09QUk9GSUxFX1BPV0VSNCwKIAkJLnBsYXRmb3JtCQk9ICJwcGM5NzAiLAogCX0sCi0jZW5kaWYgLyogQ09ORklHX1BQQzY0ICovCi0jaWYgZGVmaW5lZChDT05GSUdfUFBDNjQpIHx8IGRlZmluZWQoQ09ORklHX1BPV0VSNCkKIAl7CS8qIFBQQzk3MEZYICovCiAJCS5wdnJfbWFzawkJPSAweGZmZmYwMDAwLAogCQkucHZyX3ZhbHVlCQk9IDB4MDAzYzAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiUFBDOTcwRlgiLAotI2lmZGVmIENPTkZJR19QUEMzMgotCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzk3MF8zMiwKLSNlbHNlCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfUFBDOTcwLAotI2VuZGlmCiAJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSX1BPV0VSNCB8CiAJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAogCQkuaWNhY2hlX2JzaXplCQk9IDEyOCwKQEAgLTIyMSw4ICsyMDQsNiBAQAogCQkub3Byb2ZpbGVfdHlwZQkJPSBQUENfT1BST0ZJTEVfUE9XRVI0LAogCQkucGxhdGZvcm0JCT0gInBwYzk3MCIsCiAJfSwKLSNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19QUEM2NCkgfHwgZGVmaW5lZChDT05GSUdfUE9XRVI0KSAqLwotI2lmZGVmIENPTkZJR19QUEM2NAogCXsJLyogUFBDOTcwTVAgKi8KIAkJLnB2cl9tYXNrCQk9IDB4ZmZmZjAwMDAsCiAJCS5wdnJfdmFsdWUJCT0gMHgwMDQ0MDAwMCwKQEAgLTIzMiw2ICsyMTMsNyBAQAogCQkJUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCwKIAkJLmljYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5kY2FjaGVfYnNpemUJCT0gMTI4LAorCQkubnVtX3BtY3MJCT0gOCwKIAkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV9wcGM5NzAsCiAJCS5vcHJvZmlsZV9jcHVfdHlwZQk9ICJwcGM2NC85NzAiLAogCQkub3Byb2ZpbGVfdHlwZQkJPSBQUENfT1BST0ZJTEVfUE9XRVI0LApAQCAtMjQ2LDkgKzIyOCwxMyBAQAogCQkuaWNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5udW1fcG1jcwkJPSA2LAotCQkuY3B1X3NldHVwCQk9IF9fc2V0dXBfY3B1X3Bvd2VyNCwKIAkJLm9wcm9maWxlX2NwdV90eXBlCT0gInBwYzY0L3Bvd2VyNSIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9QT1dFUjQsCisJCS8qIFNJSFYgLyBTSVBSIGJpdHMgYXJlIGltcGxlbWVudGVkIG9uIFBPV0VSNCsgKEdRKQorCQkgKiBhbmQgYWJvdmUgYnV0IG9ubHkgd29ya3Mgb24gUE9XRVI1IGFuZCBhYm92ZQorCQkgKi8KKwkJLm9wcm9maWxlX21tY3JhX3NpaHYJPSBNTUNSQV9TSUhWLAorCQkub3Byb2ZpbGVfbW1jcmFfc2lwcgk9IE1NQ1JBX1NJUFIsCiAJCS5wbGF0Zm9ybQkJPSAicG93ZXI1IiwKIAl9LAogCXsJLyogUG93ZXI1IEdTICovCkBAIC0yNjAsOSArMjQ2LDEwIEBACiAJCS5pY2FjaGVfYnNpemUJCT0gMTI4LAogCQkuZGNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLm51bV9wbWNzCQk9IDYsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfcG93ZXI0LAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcG93ZXI1KyIsCiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9QT1dFUjQsCisJCS5vcHJvZmlsZV9tbWNyYV9zaWh2CT0gTU1DUkFfU0lIViwKKwkJLm9wcm9maWxlX21tY3JhX3NpcHIJPSBNTUNSQV9TSVBSLAogCQkucGxhdGZvcm0JCT0gInBvd2VyNSsiLAogCX0sCiAJewkvKiBQb3dlcjYgKi8KQEAgLTI3MywxMCArMjYwLDEzIEBACiAJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSX1BPV0VSNiwKIAkJLmljYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5kY2FjaGVfYnNpemUJCT0gMTI4LAotCQkubnVtX3BtY3MJCT0gNiwKLQkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV9wb3dlcjQsCisJCS5udW1fcG1jcwkJPSA4LAogCQkub3Byb2ZpbGVfY3B1X3R5cGUJPSAicHBjNjQvcG93ZXI2IiwKIAkJLm9wcm9maWxlX3R5cGUJCT0gUFBDX09QUk9GSUxFX1BPV0VSNCwKKyAJCS5vcHJvZmlsZV9tbWNyYV9zaWh2CT0gUE9XRVI2X01NQ1JBX1NJSFYsCisgCQkub3Byb2ZpbGVfbW1jcmFfc2lwcgk9IFBPV0VSNl9NTUNSQV9TSVBSLAorIAkJLm9wcm9maWxlX21tY3JhX2NsZWFyCT0gUE9XRVI2X01NQ1JBX1RIUk0gfAorIAkJCVBPV0VSNl9NTUNSQV9PVEhFUiwKIAkJLnBsYXRmb3JtCQk9ICJwb3dlcjYiLAogCX0sCiAJewkvKiBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgKi8KQEAgLTI4OSw3ICsyNzksNiBAQAogCQkJUFBDX0ZFQVRVUkVfU01ULAogCQkuaWNhY2hlX2JzaXplCQk9IDEyOCwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAxMjgsCi0JCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfYmUsCiAJCS5wbGF0Zm9ybQkJPSAicHBjLWNlbGwtYmUiLAogCX0sCiAJewkvKiBkZWZhdWx0IG1hdGNoICovCkBAIC0zMDEsNyArMjkwLDYgQEAKIAkJLmljYWNoZV9ic2l6ZQkJPSAxMjgsCiAJCS5kY2FjaGVfYnNpemUJCT0gMTI4LAogCQkubnVtX3BtY3MJCT0gNiwKLQkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV9wb3dlcjQsCiAJCS5wbGF0Zm9ybQkJPSAicG93ZXI0IiwKIAl9CiAjZW5kaWYJLyogQ09ORklHX1BQQzY0ICovCkBAIC0zMjMsNyArMzExLDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDMwMDAwLAogCQkuY3B1X25hbWUJCT0gIjYwMyIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNjAzLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5jcHVfc2V0dXAJCT0gX19zZXR1cF9jcHVfNjAzLApAQCAtMzM0LDcgKzMyMiw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHgwMDA2MDAwMCwKIAkJLmNwdV9uYW1lCQk9ICI2MDNlIiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU182MDMsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV82MDMsCkBAIC0zNDUsNyArMzMzLDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDcwMDAwLAogCQkuY3B1X25hbWUJCT0gIjYwM2V2IiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU182MDMsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmNwdV9zZXR1cAkJPSBfX3NldHVwX2NwdV82MDMsCkBAIC0zNTYsNyArMzQ0LDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDQwMDAwLAogCQkuY3B1X25hbWUJCT0gIjYwNCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNjA0LAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSAyLApAQCAtMzY4LDcgKzM1Niw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHgwMDA5MDAwMCwKIAkJLmNwdV9uYW1lCQk9ICI2MDRlIiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU182MDQsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDQsCkBAIC0zODAsNyArMzY4LDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDkwMDAwLAogCQkuY3B1X25hbWUJCT0gIjYwNHIiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzYwNCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTM5Miw3ICszODAsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4MDAwYTAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNjA0ZXYiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzYwNCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTQwNCw3ICszOTIsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4MDAwODQyMDIsCiAJCS5jcHVfbmFtZQkJPSAiNzQwLzc1MCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQwX05PVEFVLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA0LApAQCAtNDE2LDcgKzQwNCw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHgwMDA4MDEwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NTBDWCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzUwLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA0LApAQCAtNDI4LDcgKzQxNiw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHgwMDA4MjIwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NTBDWCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzUwLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA0LApAQCAtNDQwLDcgKzQyOCw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHgwMDA4MjIxMCwKIAkJLmNwdV9uYW1lCQk9ICI3NTBDWGUiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc1MCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTQ1Miw3ICs0NDAsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4MDAwODMyMTQsCiAJCS5jcHVfbmFtZQkJPSAiNzUwQ1hlIiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU183NTAsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDQsCkBAIC00NjQsNyArNDUyLDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDgzMDAwLAogCQkuY3B1X25hbWUJCT0gIjc0NS83NTUiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc1MCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTQ3Niw3ICs0NjQsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4NzAwMDAxMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzUwRlgiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc1MEZYMSwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTQ4OCw3ICs0NzYsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4NzAwMDAyMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzUwRlgiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc1MEZYMiwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTUwMCw3ICs0ODgsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4NzAwMDAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzUwRlgiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc1MEZYLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA0LApAQCAtNTEyLDcgKzUwMCw3IEBACiAJCS5wdnJfdmFsdWUJCT0gMHg3MDAyMDAwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NTBHWCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzUwR1gsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDQsCkBAIC01MjQsNyArNTEyLDcgQEAKIAkJLnB2cl92YWx1ZQkJPSAweDAwMDgwMDAwLAogCQkuY3B1X25hbWUJCT0gIjc0MC83NTAiLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc0MCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTUzNiw3ICs1MjQsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4MDAwYzExMDEsCiAJCS5jcHVfbmFtZQkJPSAiNzQwMCAoMS4xKSIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQwMF9OT1RBVSwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTU0OCw3ICs1MzcsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4MDAwYzAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQwMCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQwMCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTU2MCw3ICs1NTAsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwYzAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQxMCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQwMCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNCwKQEAgLTU3Miw3ICs1NjMsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwMDAyMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQ1MCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ1MF8yMCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNiwKQEAgLTU4Niw3ICs1NzgsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwMDAyMDEsCiAJCS5jcHVfbmFtZQkJPSAiNzQ1MCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ1MF8yMSwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNiwKQEAgLTYwMCw3ICs1OTMsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwMDAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQ1MCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ1MF8yMywKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNiwKQEAgLTYxNCw3ICs2MDgsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwMTAxMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQ1NSIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ1NV8xLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwKKwkJCVBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA2LApAQCAtNjI4LDcgKzYyMyw4IEBACiAJCS5wdnJfdmFsdWUJCT0gMHg4MDAxMDIwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NDU1IiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU183NDU1XzIwLAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwKKwkJCVBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA2LApAQCAtNjQyLDcgKzYzOCw4IEBACiAJCS5wdnJfdmFsdWUJCT0gMHg4MDAxMDAwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NDU1IiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU183NDU1LAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwKKwkJCVBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAgfCBQUENfRkVBVFVSRV9QUENfTEUsCiAJCS5pY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5kY2FjaGVfYnNpemUJCT0gMzIsCiAJCS5udW1fcG1jcwkJPSA2LApAQCAtNjU2LDcgKzY1Myw4IEBACiAJCS5wdnJfdmFsdWUJCT0gMHg4MDAyMDEwMCwKIAkJLmNwdV9uYW1lCQk9ICI3NDQ3Lzc0NTciLAogCQkuY3B1X2ZlYXR1cmVzCQk9IENQVV9GVFJTXzc0NDdfMTAsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfAorCQkJUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDYsCkBAIC02NzAsNyArNjY4LDggQEAKIAkJLnB2cl92YWx1ZQkJPSAweDgwMDIwMTAxLAogCQkuY3B1X25hbWUJCT0gIjc0NDcvNzQ1NyIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ0N18xMCwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNiwKQEAgLTY4NCw3ICs2ODMsNyBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwMjAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQ0Ny83NDU3IiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU183NDQ3LAotCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8IFBQQ19GRUFUVVJFX0hBU19BTFRJVkVDX0NPTVAsCisJCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDYsCkBAIC02OTgsNyArNjk3LDggQEAKIAkJLnB2cl92YWx1ZQkJPSAweDgwMDMwMDAwLAogCQkuY3B1X25hbWUJCT0gIjc0NDdBIiwKIAkJLmNwdV9mZWF0dXJlcwkJPSBDUFVfRlRSU183NDQ3QSwKLQkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorCQkuY3B1X3VzZXJfZmVhdHVyZXMJPSBDT01NT05fVVNFUiB8CisJCQlQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QIHwgUFBDX0ZFQVRVUkVfUFBDX0xFLAogCQkuaWNhY2hlX2JzaXplCQk9IDMyLAogCQkuZGNhY2hlX2JzaXplCQk9IDMyLAogCQkubnVtX3BtY3MJCT0gNiwKQEAgLTcxMiw3ICs3MTIsOCBAQAogCQkucHZyX3ZhbHVlCQk9IDB4ODAwNDAwMDAsCiAJCS5jcHVfbmFtZQkJPSAiNzQ0OCIsCiAJCS5jcHVfZmVhdHVyZXMJCT0gQ1BVX0ZUUlNfNzQ0N0EsCi0JCS5jcHVfdXNlcl9mZWF0dXJlcwk9IENPTU1PTl9VU0VSIHwgUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCwKKwkJLmNwdV91c2VyX2ZlYXR1cmVzCT0gQ09NTU9OX1VTRVIgfAorCQkJUFBDX0ZFQVRVUkVfSEFTX0FMVElWRUNfQ09NUCB8IFBQQ19GRUFUVVJFX1BQQ19MRSwKIAkJLmljYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLmRjYWNoZV9ic2l6ZQkJPSAzMiwKIAkJLm51bV9wbWNzCQk9IDYsCkBAIC03MjEsNiArNzIyLDE4IEBACiAJCS5vcHJvZmlsZV90eXBlCQk9IFBQQ19PUFJPRklMRV9HNCwKIAkJLnBsYXRmb3JtCQk9ICJwcGM3NDUwIiwKIAl9LAorICAgICAgICB7ICAgICAgIC8qIDg2NDEgKi8KKyAgICAgICAgICAgICAgIC5wdnJfbWFzayAgICAgICAgICAgICAgID0gMHhmZmZmZmZmZiwKKyAgICAgICAgICAgICAgIC5wdnJfdmFsdWUgICAgICAgICAgICAgID0gMHg4MDA0MDAxMCwKKyAgICAgICAgICAgICAgIC5jcHVfbmFtZSAgICAgICAgICAgICAgID0gIjg2NDEiLAorICAgICAgICAgICAgICAgLmNwdV9mZWF0dXJlcyAgICAgICAgICAgPSBDUFVfRlRSU183NDQ3QSwKKyAgICAgICAgICAgICAgIC5jcHVfdXNlcl9mZWF0dXJlcyAgICAgID0gQ09NTU9OX1VTRVIgfCBQUENfRkVBVFVSRV9IQVNfQUxUSVZFQ19DT01QLAorICAgICAgICAgICAgICAgLmljYWNoZV9ic2l6ZSAgICAgICAgICAgPSAzMiwKKyAgICAgICAgICAgICAgIC5kY2FjaGVfYnNpemUgICAgICAgICAgID0gMzIsCisgICAgICAgICAgICAgICAubnVtX3BtY3MgICAgICAgICAgICAgICA9IDYsCisgICAgICAgICAgICAgICAuY3B1X3NldHVwICAgICAgICAgICAgICA9IF9fc2V0dXBfY3B1Xzc0NXgKKyAgICAgICAgfSwKKwogCXsJLyogODJ4eCAoODI0MCwgODI0NSwgODI2MCBhcmUgYWxsIDYwM2UgY29yZXMpICovCiAJCS5wdnJfbWFzawkJPSAweDdmZmYwMDAwLAogCQkucHZyX3ZhbHVlCQk9IDB4MDA4MTAwMDAsCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2NyYXNoLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2NyYXNoLmMKaW5kZXggNzc4ZjIyZi4uZGJjYjg1OSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9jcmFzaC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3Jhc2guYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgogI2luY2x1ZGUgPGxpbnV4L2VsZmNvcmUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQAogCiB2b2lkIGRlZmF1bHRfbWFjaGluZV9jcmFzaF9zaHV0ZG93bihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKKwl1bnNpZ25lZCBpbnQgaXJxOworCiAJLyoKIAkgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGFmdGVyIHRoZSBzeXN0ZW0KIAkgKiBoYXMgcGFuaWNlZCBvciBpcyBvdGhlcndpc2UgaW4gYSBjcml0aWNhbCBzdGF0ZS4KQEAgLTE4Niw2ICsxODksMTYgQEAKIAkgKi8KIAlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCisJZm9yX2VhY2hfaXJxKGlycSkgeworCQlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBpcnFfZGVzY3AoaXJxKTsKKworCQlpZiAoZGVzYy0+c3RhdHVzICYgSVJRX0lOUFJPR1JFU1MpCisJCQlkZXNjLT5oYW5kbGVyLT5lbmQoaXJxKTsKKworCQlpZiAoIShkZXNjLT5zdGF0dXMgJiBJUlFfRElTQUJMRUQpKQorCQkJZGVzYy0+aGFuZGxlci0+ZGlzYWJsZShpcnEpOworCX0KKwogCWlmIChwcGNfbWQua2V4ZWNfY3B1X2Rvd24pCiAJCXBwY19tZC5rZXhlY19jcHVfZG93bigxLCAwKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9jcmFzaF9kdW1wLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2NyYXNoX2R1bXAuYwppbmRleCA3NjRkMDczLi4zNzE5NzNiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2NyYXNoX2R1bXAuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2NyYXNoX2R1bXAuYwpAQCAtMjUsNiArMjUsMTEgQEAKICNkZWZpbmUgREJHKGZtdC4uLikKICNlbmRpZgogCit2b2lkIHJlc2VydmVfa2R1bXBfdHJhbXBvbGluZSh2b2lkKQoreworCWxtYl9yZXNlcnZlKDAsIEtEVU1QX1JFU0VSVkVfTElNSVQpOworfQorCiBzdGF0aWMgdm9pZCBfX2luaXQgY3JlYXRlX3RyYW1wb2xpbmUodW5zaWduZWQgbG9uZyBhZGRyKQogewogCS8qIFRoZSBtYXhpbXVtIHJhbmdlIG9mIGEgc2luZ2xlIGluc3RydWN0aW9uIGJyYW5jaCwgaXMgdGhlIGN1cnJlbnQKQEAgLTM5LDExICs0NCwxMSBAQAogCWNyZWF0ZV9icmFuY2goYWRkciArIDQsIGFkZHIgKyBQSFlTSUNBTF9TVEFSVCwgMCk7CiB9CiAKLXZvaWQgX19pbml0IGtkdW1wX3NldHVwKHZvaWQpCit2b2lkIF9faW5pdCBzZXR1cF9rZHVtcF90cmFtcG9saW5lKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBpOwogCi0JREJHKCIgLT4ga2R1bXBfc2V0dXAoKVxuIik7CisJREJHKCIgLT4gc2V0dXBfa2R1bXBfdHJhbXBvbGluZSgpXG4iKTsKIAogCWZvciAoaSA9IEtEVU1QX1RSQU1QT0xJTkVfU1RBUlQ7IGkgPCBLRFVNUF9UUkFNUE9MSU5FX0VORDsgaSArPSA4KSB7CiAJCWNyZWF0ZV90cmFtcG9saW5lKGkpOwpAQCAtNTIsNyArNTcsNyBAQAogCWNyZWF0ZV90cmFtcG9saW5lKF9fcGEoc3lzdGVtX3Jlc2V0X2Z3bm1pKSAtIFBIWVNJQ0FMX1NUQVJUKTsKIAljcmVhdGVfdHJhbXBvbGluZShfX3BhKG1hY2hpbmVfY2hlY2tfZndubWkpIC0gUEhZU0lDQUxfU1RBUlQpOwogCi0JREJHKCIgPC0ga2R1bXBfc2V0dXAoKVxuIik7CisJREJHKCIgPC0gc2V0dXBfa2R1bXBfdHJhbXBvbGluZSgpXG4iKTsKIH0KIAogI2lmZGVmIENPTkZJR19QUk9DX1ZNQ09SRQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9lbnRyeV82NC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9lbnRyeV82NC5TCmluZGV4IDE5YWQ1YzYuLjIyMTA2MmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZW50cnlfNjQuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2VudHJ5XzY0LlMKQEAgLTU3LDYgKzU3LDcgQEAKIAliZXEtCTFmCiAJbGQJcjEsUEFDQUtTQVZFKHIxMykKIDE6CXN0ZAlyMTAsMChyMSkKKwljcmNscglzbwogCXN0ZAlyMTEsX05JUChyMSkKIAlzdGQJcjEyLF9NU1IocjEpCiAJc3RkCXIwLEdQUjAocjEpCkBAIC03NSw3ICs3Niw2IEBACiAJc3RkCXIxMSxHUFIxMShyMSkKIAlzdGQJcjExLEdQUjEyKHIxKQogCXN0ZAlyOSxHUFIxMyhyMSkKLQljcmNscglzbwogCW1mY3IJcjkKIAltZmxyCXIxMAogCWxpCXIxMSwweGMwMQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9mcHUuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZnB1LlMKaW5kZXggMzQwNzMwZi4uMDFmNzEyMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9mcHUuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2ZwdS5TCkBAIC03Miw3ICs3Miw3IEBACiAJc3RkCXIxMixfTVNSKHIxKQogI2VuZGlmCiAJbGZkCWZyMCxUSFJFQURfRlBTQ1IocjUpCi0JbXRmc2YJMHhmZixmcjAKKwlNVEZTRl9MKGZyMCkKIAlSRVNUXzMyRlBSUygwLCByNSkKICNpZm5kZWYgQ09ORklHX1NNUAogCXN1YmkJcjQscjUsVEhSRUFECkBAIC0xMjcsNyArMTI3LDcgQEAKIAogX0dMT0JBTChjdnRfZmQpCiAJbGZkCTAsVEhSRUFEX0ZQU0NSKHI1KQkvKiBsb2FkIHVwIGZwc2NyIHZhbHVlICovCi0JbXRmc2YJMHhmZiwwCisJTVRGU0ZfTCgwKQogCWxmcwkwLDAocjMpCiAJc3RmZAkwLDAocjQpCiAJbWZmcwkwCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogX0dMT0JBTChjdnRfZGYpCiAJbGZkCTAsVEhSRUFEX0ZQU0NSKHI1KQkvKiBsb2FkIHVwIGZwc2NyIHZhbHVlICovCi0JbXRmc2YJMHhmZiwwCisJTVRGU0ZfTCgwKQogCWxmZAkwLDAocjMpCiAJc3RmcwkwLDAocjQpCiAJbWZmcwkwCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfMzIuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF8zMi5TCmluZGV4IGEwNTc5ZTguLmIyNWIyNTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF8zMi5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF8zMi5TCkBAIC05NzMsNiArOTczLDEzIEBACiAgICAgICAgIGIgICAgICAgX19zZWNvbmRhcnlfc3RhcnQKICNlbmRpZiAvKiBDT05GSUdfR0VNSU5JICovCiAKKwkuZ2xvYmwgX19zZWNvbmRhcnlfc3RhcnRfbXBjODZ4eAorX19zZWNvbmRhcnlfc3RhcnRfbXBjODZ4eDoKKwltZnNwcglyMywgU1BSTl9QSVIKKwlzdHcJcjMsIF9fc2Vjb25kYXJ5X2hvbGRfYWNrbm93bGVkZ2VAbCgwKQorCW1yCXIyNCwgcjMJCQkvKiBjcHUgIyAqLworCWIJX19zZWNvbmRhcnlfc3RhcnQKKwogCS5nbG9ibAlfX3NlY29uZGFyeV9zdGFydF9wbWFjXzAKIF9fc2Vjb25kYXJ5X3N0YXJ0X3BtYWNfMDoKIAkvKiBOQiB0aGUgZW50cmllcyBmb3IgY3B1cyAwLCAxLCAyIG11c3QgZWFjaCBvY2N1cHkgOCBieXRlcy4gKi8KQEAgLTEwODgsNyArMTA5NSwxMiBAQAogCUxPQURfQkFUKDEscjMscjQscjUpCiAJTE9BRF9CQVQoMixyMyxyNCxyNSkKIAlMT0FEX0JBVCgzLHIzLHI0LHI1KQotCitCRUdJTl9GVFJfU0VDVElPTgorCUxPQURfQkFUKDQscjMscjQscjUpCisJTE9BRF9CQVQoNSxyMyxyNCxyNSkKKwlMT0FEX0JBVCg2LHIzLHI0LHI1KQorCUxPQURfQkFUKDcscjMscjQscjUpCitFTkRfRlRSX1NFQ1RJT05fSUZTRVQoQ1BVX0ZUUl9IQVNfSElHSF9CQVRTKQogCWJscgogCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzY0LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUwppbmRleCBiN2QxNDA0Li44MzFhY2JkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUwpAQCAtMzE2LDYgKzMxNiwyMSBAQAogCW10c3ByCVNQUk5fU1BSRzEscjEzOwkJLyogc2F2ZSByMTMgKi8JXAogCUVYQ0VQVElPTl9QUk9MT0dfUFNFUklFUyhQQUNBX0VYR0VOLCBsYWJlbCMjX2NvbW1vbikKIAorI2RlZmluZSBIU1REX0VYQ0VQVElPTl9QU0VSSUVTKG4sIGxhYmVsKQkJXAorCS4gPSBuOwkJCQkJCVwKKwkuZ2xvYmwgbGFiZWwjI19wU2VyaWVzOwkJCQlcCitsYWJlbCMjX3BTZXJpZXM6CQkJCQlcCisJSE1UX01FRElVTTsJCQkJCVwKKwltdHNwcglTUFJOX1NQUkcxLHIyMDsJCS8qIHNhdmUgcjIwICovCVwKKwltZnNwcglyMjAsU1BSTl9IU1JSMDsJCS8qIGNvcHkgSFNSUjAgdG8gU1JSMCAqLyBcCisJbXRzcHIJU1BSTl9TUlIwLHIyMDsJCQkJXAorCW1mc3ByCXIyMCxTUFJOX0hTUlIxOwkJLyogY29weSBIU1JSMCB0byBTUlIwICovIFwKKwltdHNwcglTUFJOX1NSUjEscjIwOwkJCQlcCisJbWZzcHIJcjIwLFNQUk5fU1BSRzE7CQkvKiByZXN0b3JlIHIyMCAqLyBcCisJbXRzcHIJU1BSTl9TUFJHMSxyMTM7CQkvKiBzYXZlIHIxMyAqLwlcCisJRVhDRVBUSU9OX1BST0xPR19QU0VSSUVTKFBBQ0FfRVhHRU4sIGxhYmVsIyNfY29tbW9uKQorCisKICNkZWZpbmUgU1REX0VYQ0VQVElPTl9JU0VSSUVTKG4sIGxhYmVsLCBhcmVhKQkJXAogCS5nbG9ibCBsYWJlbCMjX2lTZXJpZXM7CQkJCVwKIGxhYmVsIyNfaVNlcmllczoJCQkJCVwKQEAgLTU0NCw4ICs1NTksMTcgQEAKIAogCVNURF9FWENFUFRJT05fUFNFUklFUygweGYyMCwgYWx0aXZlY191bmF2YWlsYWJsZSkKIAorI2lmZGVmIENPTkZJR19DQkVfUkFTCisJSFNURF9FWENFUFRJT05fUFNFUklFUygweDEyMDAsIGNiZV9zeXN0ZW1fZXJyb3IpCisjZW5kaWYgLyogQ09ORklHX0NCRV9SQVMgKi8KIAlTVERfRVhDRVBUSU9OX1BTRVJJRVMoMHgxMzAwLCBpbnN0cnVjdGlvbl9icmVha3BvaW50KQorI2lmZGVmIENPTkZJR19DQkVfUkFTCisJSFNURF9FWENFUFRJT05fUFNFUklFUygweDE2MDAsIGNiZV9tYWludGVuYW5jZSkKKyNlbmRpZiAvKiBDT05GSUdfQ0JFX1JBUyAqLwogCVNURF9FWENFUFRJT05fUFNFUklFUygweDE3MDAsIGFsdGl2ZWNfYXNzaXN0KQorI2lmZGVmIENPTkZJR19DQkVfUkFTCisJSFNURF9FWENFUFRJT05fUFNFUklFUygweDE4MDAsIGNiZV90aGVybWFsKQorI2VuZGlmIC8qIENPTkZJR19DQkVfUkFTICovCiAKIAkuID0gMHgzMDAwCiAKQEAgLTgyNyw2ICs4NTEsMTEgQEAKICNlbHNlCiAJU1REX0VYQ0VQVElPTl9DT01NT04oMHgxNzAwLCBhbHRpdmVjX2Fzc2lzdCwgLnVua25vd25fZXhjZXB0aW9uKQogI2VuZGlmCisjaWZkZWYgQ09ORklHX0NCRV9SQVMKKwlTVERfRVhDRVBUSU9OX0NPTU1PTigweDEyMDAsIGNiZV9zeXN0ZW1fZXJyb3IsIC5jYmVfc3lzdGVtX2Vycm9yX2V4Y2VwdGlvbikKKwlTVERfRVhDRVBUSU9OX0NPTU1PTigweDE2MDAsIGNiZV9tYWludGVuYW5jZSwgLmNiZV9tYWludGVuYW5jZV9leGNlcHRpb24pCisJU1REX0VYQ0VQVElPTl9DT01NT04oMHgxODAwLCBjYmVfdGhlcm1hbCwgLmNiZV90aGVybWFsX2V4Y2VwdGlvbikKKyNlbmRpZiAvKiBDT05GSUdfQ0JFX1JBUyAqLwogCiAvKgogICogSGVyZSB3ZSBoYXZlIGRldGVjdGVkIHRoYXQgdGhlIGtlcm5lbCBzdGFjayBwb2ludGVyIGlzIGJhZC4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaW9tYXAuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaW9tYXAuYwppbmRleCBmZDgyMTRjLi5hMTNhOTNkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2lvbWFwLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9pb21hcC5jCkBAIC0xMDYsOCArMTA2LDYgQEAKIAogdm9pZCBfX2lvbWVtICppb3BvcnRfbWFwKHVuc2lnbmVkIGxvbmcgcG9ydCwgdW5zaWduZWQgaW50IGxlbikKIHsKLQlpZiAoIV9JT19JU19WQUxJRChwb3J0KSkKLQkJcmV0dXJuIE5VTEw7CiAJcmV0dXJuICh2b2lkIF9faW9tZW0gKikgKHBvcnQrcGNpX2lvX2Jhc2UpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2lvbW11LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2lvbW11LmMKaW5kZXggNGViYTYwYS4uN2NiNzdjMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9pb21tdS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaW9tbXUuYwpAQCAtNDE4LDEwICs0MTgsMTEgQEAKICAqIEJ1aWxkIGEgaW9tbXVfdGFibGUgc3RydWN0dXJlLiAgVGhpcyBjb250YWlucyBhIGJpdCBtYXAgd2hpY2gKICAqIGlzIHVzZWQgdG8gbWFuYWdlIGFsbG9jYXRpb24gb2YgdGhlIHRjZSBzcGFjZS4KICAqLwotc3RydWN0IGlvbW11X3RhYmxlICppb21tdV9pbml0X3RhYmxlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJsKQorc3RydWN0IGlvbW11X3RhYmxlICppb21tdV9pbml0X3RhYmxlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJsLCBpbnQgbmlkKQogewogCXVuc2lnbmVkIGxvbmcgc3o7CiAJc3RhdGljIGludCB3ZWxjb21lZCA9IDA7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAkvKiBTZXQgYXNpZGUgMS80IG9mIHRoZSB0YWJsZSBmb3IgbGFyZ2UgYWxsb2NhdGlvbnMuICovCiAJdGJsLT5pdF9oYWxmcG9pbnQgPSB0YmwtPml0X3NpemUgKiAzIC8gNDsKQEAgLTQyOSwxMCArNDMwLDEwIEBACiAJLyogbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBmb3IgdGhlIGJpdG1hcCAqLwogCXN6ID0gKHRibC0+aXRfc2l6ZSArIDcpID4+IDM7CiAKLQl0YmwtPml0X21hcCA9ICh1bnNpZ25lZCBsb25nICopX19nZXRfZnJlZV9wYWdlcyhHRlBfQVRPTUlDLCBnZXRfb3JkZXIoc3opKTsKLQlpZiAoIXRibC0+aXRfbWFwKQorCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKG5pZCwgR0ZQX0FUT01JQywgZ2V0X29yZGVyKHN6KSk7CisJaWYgKCFwYWdlKQogCQlwYW5pYygiaW9tbXVfaW5pdF90YWJsZTogQ2FuJ3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCBzeik7Ci0KKwl0YmwtPml0X21hcCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsKIAltZW1zZXQodGJsLT5pdF9tYXAsIDAsIHN6KTsKIAogCXRibC0+aXRfaGludCA9IDA7CkBAIC01MzYsMTEgKzUzNywxMiBAQAogICogdG8gdGhlIGRtYSBhZGRyZXNzIChtYXBwaW5nKSBvZiB0aGUgZmlyc3QgcGFnZS4KICAqLwogdm9pZCAqaW9tbXVfYWxsb2NfY29oZXJlbnQoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIHNpemVfdCBzaXplLAotCQlkbWFfYWRkcl90ICpkbWFfaGFuZGxlLCB1bnNpZ25lZCBsb25nIG1hc2ssIGdmcF90IGZsYWcpCisJCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIHVuc2lnbmVkIGxvbmcgbWFzaywgZ2ZwX3QgZmxhZywgaW50IG5vZGUpCiB7CiAJdm9pZCAqcmV0ID0gTlVMTDsKIAlkbWFfYWRkcl90IG1hcHBpbmc7CiAJdW5zaWduZWQgaW50IG5wYWdlcywgb3JkZXI7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAlzaXplID0gUEFHRV9BTElHTihzaXplKTsKIAlucGFnZXMgPSBzaXplID4+IFBBR0VfU0hJRlQ7CkBAIC01NjAsOSArNTYyLDEwIEBACiAJCXJldHVybiBOVUxMOwogCiAJLyogQWxsb2MgZW5vdWdoIHBhZ2VzIChhbmQgcG9zc2libHkgbW9yZSkgKi8KLQlyZXQgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoZmxhZywgb3JkZXIpOwotCWlmICghcmV0KQorCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIGZsYWcsIG9yZGVyKTsKKwlpZiAoIXBhZ2UpCiAJCXJldHVybiBOVUxMOworCXJldCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsKIAltZW1zZXQocmV0LCAwLCBzaXplKTsKIAogCS8qIFNldCB1cCB0Y2VzIHRvIGNvdmVyIHRoZSBhbGxvY2F0ZWQgcmFuZ2UgKi8KQEAgLTU3MCw5ICs1NzMsOSBAQAogCQkJICAgICAgbWFzayA+PiBQQUdFX1NISUZULCBvcmRlcik7CiAJaWYgKG1hcHBpbmcgPT0gRE1BX0VSUk9SX0NPREUpIHsKIAkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZylyZXQsIG9yZGVyKTsKLQkJcmV0ID0gTlVMTDsKLQl9IGVsc2UKLQkJKmRtYV9oYW5kbGUgPSBtYXBwaW5nOworCQlyZXR1cm4gTlVMTDsKKwl9CisJKmRtYV9oYW5kbGUgPSBtYXBwaW5nOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaXJxLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2lycS5jCmluZGV4IDU3ZDU2MGMuLjQwZDRjMTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9pcnEuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAKICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KQEAgLTM3OSw4ICszODAsOCBAQAogI2VuZGlmIC8qIENPTkZJR19QUEM2NCAqLwogCiAjaWZkZWYgQ09ORklHX0lSUVNUQUNLUwotc3RydWN0IHRocmVhZF9pbmZvICpzb2Z0aXJxX2N0eFtOUl9DUFVTXTsKLXN0cnVjdCB0aHJlYWRfaW5mbyAqaGFyZGlycV9jdHhbTlJfQ1BVU107CitzdHJ1Y3QgdGhyZWFkX2luZm8gKnNvZnRpcnFfY3R4W05SX0NQVVNdIF9fcmVhZF9tb3N0bHk7CitzdHJ1Y3QgdGhyZWFkX2luZm8gKmhhcmRpcnFfY3R4W05SX0NQVVNdIF9fcmVhZF9tb3N0bHk7CiAKIHZvaWQgaXJxX2N0eF9pbml0KHZvaWQpCiB7CkBAIC00MzYsNiArNDM3LDMwIEBACiB9CiBFWFBPUlRfU1lNQk9MKGRvX3NvZnRpcnEpOwogCisjaWZkZWYgQ09ORklHX1BDSV9NU0kKK2ludCBwY2lfZW5hYmxlX21zaShzdHJ1Y3QgcGNpX2RldiAqIHBkZXYpCit7CisJaWYgKHBwY19tZC5lbmFibGVfbXNpKQorCQlyZXR1cm4gcHBjX21kLmVuYWJsZV9tc2kocGRldik7CisJZWxzZQorCQlyZXR1cm4gLTE7Cit9CisKK3ZvaWQgcGNpX2Rpc2FibGVfbXNpKHN0cnVjdCBwY2lfZGV2ICogcGRldikKK3sKKwlpZiAocHBjX21kLmRpc2FibGVfbXNpKQorCQlwcGNfbWQuZGlzYWJsZV9tc2kocGRldik7Cit9CisKK3ZvaWQgcGNpX3NjYW5fbXNpX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7fQoraW50IHBjaV9lbmFibGVfbXNpeChzdHJ1Y3QgcGNpX2RldiogZGV2LCBzdHJ1Y3QgbXNpeF9lbnRyeSAqZW50cmllcywgaW50IG52ZWMpIHtyZXR1cm4gLTE7fQordm9pZCBwY2lfZGlzYWJsZV9tc2l4KHN0cnVjdCBwY2lfZGV2ICpkZXYpIHt9Cit2b2lkIG1zaV9yZW1vdmVfcGNpX2lycV92ZWN0b3JzKHN0cnVjdCBwY2lfZGV2ICpkZXYpIHt9Cit2b2lkIGRpc2FibGVfbXNpX21vZGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBvcywgaW50IHR5cGUpIHt9Cit2b2lkIHBjaV9ub19tc2kodm9pZCkge30KKworI2VuZGlmCisKICNpZmRlZiBDT05GSUdfUFBDNjQKIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX25vaXJxZGlzdHJpYihjaGFyICpzdHIpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2xwYXJjZmcuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbHBhcmNmZy5jCmluZGV4IDJjYmRlODYuLmMwMmRlYWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbHBhcmNmZy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbHBhcmNmZy5jCkBAIC01MjEsMTAgKzUyMSwxMCBAQAogCiAJY3VycmVudF93ZWlnaHQgPSAocmVzb3VyY2UgPj4gNSAqIDgpICYgMHhGRjsKIAotCXByX2RlYnVnKCIlczogY3VycmVudF9lbnRpdGxlZCA9ICVsdSwgY3VycmVudF93ZWlnaHQgPSAlbHVcbiIsCisJcHJfZGVidWcoIiVzOiBjdXJyZW50X2VudGl0bGVkID0gJWx1LCBjdXJyZW50X3dlaWdodCA9ICV1XG4iLAogCQkgX19GVU5DVElPTl9fLCBjdXJyZW50X2VudGl0bGVkLCBjdXJyZW50X3dlaWdodCk7CiAKLQlwcl9kZWJ1ZygiJXM6IG5ld19lbnRpdGxlZCA9ICVsdSwgbmV3X3dlaWdodCA9ICVsdVxuIiwKKwlwcl9kZWJ1ZygiJXM6IG5ld19lbnRpdGxlZCA9ICVsdSwgbmV3X3dlaWdodCA9ICV1XG4iLAogCQkgX19GVU5DVElPTl9fLCAqbmV3X2VudGl0bGVkX3B0ciwgKm5ld193ZWlnaHRfcHRyKTsKIAogCXJldHZhbCA9IHBscGFyX2hjYWxsX25vcmV0cyhIX1NFVF9QUFAsICpuZXdfZW50aXRsZWRfcHRyLApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9tYWNoaW5lX2tleGVjXzY0LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL21hY2hpbmVfa2V4ZWNfNjQuYwppbmRleCBlZTE2NmM1Li5hOGZhMDRlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL21hY2hpbmVfa2V4ZWNfNjQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL21hY2hpbmVfa2V4ZWNfNjQuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KICNpbmNsdWRlIDxhc20vcGFjYS5oPgorI2luY2x1ZGUgPGFzbS9sbWIuaD4KICNpbmNsdWRlIDxhc20vbW11Lmg+CiAjaW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+CS8qIF9lbmQgKi8KICNpbmNsdWRlIDxhc20vcHJvbS5oPgpAQCAtMzM1LDcgKzMzNiwxMDUgQEAKIAlvZl9ub2RlX3B1dChub2RlKTsKIH0KIAorc3RhdGljIHN0cnVjdCBwcm9wZXJ0eSBjcmFzaGtfYmFzZV9wcm9wID0geworCS5uYW1lID0gImxpbnV4LGNyYXNoa2VybmVsLWJhc2UiLAorCS5sZW5ndGggPSBzaXplb2YodW5zaWduZWQgbG9uZyksCisJLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKikmY3Jhc2hrX3Jlcy5zdGFydCwKK307CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGNyYXNoa19zaXplOworCitzdGF0aWMgc3RydWN0IHByb3BlcnR5IGNyYXNoa19zaXplX3Byb3AgPSB7CisJLm5hbWUgPSAibGludXgsY3Jhc2hrZXJuZWwtc2l6ZSIsCisJLmxlbmd0aCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSwKKwkudmFsdWUgPSAodW5zaWduZWQgY2hhciAqKSZjcmFzaGtfc2l6ZSwKK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBleHBvcnRfY3Jhc2hrX3ZhbHVlcyh2b2lkKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKKwlzdHJ1Y3QgcHJvcGVydHkgKnByb3A7CisKKwlub2RlID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9jaG9zZW4iKTsKKwlpZiAoIW5vZGUpCisJCXJldHVybjsKKworCS8qIFRoZXJlIG1pZ2h0IGJlIGV4aXN0aW5nIGNyYXNoIGtlcm5lbCBwcm9wZXJ0aWVzLCBidXQgd2UgY2FuJ3QKKwkgKiBiZSBzdXJlIHdoYXQncyBpbiB0aGVtLCBzbyByZW1vdmUgdGhlbS4gKi8KKwlwcm9wID0gb2ZfZmluZF9wcm9wZXJ0eShub2RlLCAibGludXgsY3Jhc2hrZXJuZWwtYmFzZSIsIE5VTEwpOworCWlmIChwcm9wKQorCQlwcm9tX3JlbW92ZV9wcm9wZXJ0eShub2RlLCBwcm9wKTsKKworCXByb3AgPSBvZl9maW5kX3Byb3BlcnR5KG5vZGUsICJsaW51eCxjcmFzaGtlcm5lbC1zaXplIiwgTlVMTCk7CisJaWYgKHByb3ApCisJCXByb21fcmVtb3ZlX3Byb3BlcnR5KG5vZGUsIHByb3ApOworCisJaWYgKGNyYXNoa19yZXMuc3RhcnQgIT0gMCkgeworCQlwcm9tX2FkZF9wcm9wZXJ0eShub2RlLCAmY3Jhc2hrX2Jhc2VfcHJvcCk7CisJCWNyYXNoa19zaXplID0gY3Jhc2hrX3Jlcy5lbmQgLSBjcmFzaGtfcmVzLnN0YXJ0ICsgMTsKKwkJcHJvbV9hZGRfcHJvcGVydHkobm9kZSwgJmNyYXNoa19zaXplX3Byb3ApOworCX0KKworCW9mX25vZGVfcHV0KG5vZGUpOworfQorCiB2b2lkIF9faW5pdCBrZXhlY19zZXR1cCh2b2lkKQogewogCWV4cG9ydF9odGFiX3ZhbHVlcygpOworCWV4cG9ydF9jcmFzaGtfdmFsdWVzKCk7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGVhcmx5X3BhcnNlX2NyYXNoayhjaGFyICpwKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworCWlmICghcCkKKwkJcmV0dXJuIDE7CisKKwlzaXplID0gbWVtcGFyc2UocCwgJnApOworCisJaWYgKCpwID09ICdAJykKKwkJY3Jhc2hrX3Jlcy5zdGFydCA9IG1lbXBhcnNlKHAgKyAxLCAmcCk7CisJZWxzZQorCQljcmFzaGtfcmVzLnN0YXJ0ID0gS0RVTVBfS0VSTkVMQkFTRTsKKworCWNyYXNoa19yZXMuZW5kID0gY3Jhc2hrX3Jlcy5zdGFydCArIHNpemUgLSAxOworCisJcmV0dXJuIDA7Cit9CitlYXJseV9wYXJhbSgiY3Jhc2hrZXJuZWwiLCBlYXJseV9wYXJzZV9jcmFzaGspOworCit2b2lkIF9faW5pdCByZXNlcnZlX2NyYXNoa2VybmVsKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBzaXplOworCisJaWYgKGNyYXNoa19yZXMuc3RhcnQgPT0gMCkKKwkJcmV0dXJuOworCisJLyogV2UgbWlnaHQgaGF2ZSBnb3QgdGhlc2UgdmFsdWVzIHZpYSB0aGUgY29tbWFuZCBsaW5lIG9yIHRoZQorCSAqIGRldmljZSB0cmVlLCBlaXRoZXIgd2F5IHNhbml0aXNlIHRoZW0gbm93LiAqLworCisJc2l6ZSA9IGNyYXNoa19yZXMuZW5kIC0gY3Jhc2hrX3Jlcy5zdGFydCArIDE7CisKKwlpZiAoY3Jhc2hrX3Jlcy5zdGFydCAhPSBLRFVNUF9LRVJORUxCQVNFKQorCQlwcmludGsoIkNyYXNoIGtlcm5lbCBsb2NhdGlvbiBtdXN0IGJlIDB4JXhcbiIsCisJCQkJS0RVTVBfS0VSTkVMQkFTRSk7CisKKwljcmFzaGtfcmVzLnN0YXJ0ID0gS0RVTVBfS0VSTkVMQkFTRTsKKwlzaXplID0gUEFHRV9BTElHTihzaXplKTsKKwljcmFzaGtfcmVzLmVuZCA9IGNyYXNoa19yZXMuc3RhcnQgKyBzaXplIC0gMTsKKworCS8qIENyYXNoIGtlcm5lbCB0cnVtcHMgbWVtb3J5IGxpbWl0ICovCisJaWYgKG1lbW9yeV9saW1pdCAmJiBtZW1vcnlfbGltaXQgPD0gY3Jhc2hrX3Jlcy5lbmQpIHsKKwkJbWVtb3J5X2xpbWl0ID0gY3Jhc2hrX3Jlcy5lbmQgKyAxOworCQlwcmludGsoIkFkanVzdGVkIG1lbW9yeSBsaW1pdCBmb3IgY3Jhc2hrZXJuZWwsIG5vdyAweCVseFxuIiwKKwkJCQltZW1vcnlfbGltaXQpOworCX0KKworCWxtYl9yZXNlcnZlKGNyYXNoa19yZXMuc3RhcnQsIHNpemUpOworfQorCitpbnQgb3ZlcmxhcHNfY3Jhc2hrZXJuZWwodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXJldHVybiAoc3RhcnQgKyBzaXplKSA+IGNyYXNoa19yZXMuc3RhcnQgJiYgc3RhcnQgPD0gY3Jhc2hrX3Jlcy5lbmQ7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL21pc2NfMzIuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY18zMi5TCmluZGV4IGJlOTgyMDIuLjAxZDM5MTYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY18zMi5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY18zMi5TCkBAIC0yMTYsNyArMjE2LDcgQEAKIAlsd3oJcjQsMChyNCkKIAlhZGQJcjQscjQscjMKIAlsd3oJcjUsQ1BVX1NQRUNfU0VUVVAocjQpCi0JY21waQkwLHI1LDAKKwljbXB3aQkwLHI1LDAKIAlhZGQJcjUscjUscjMKIAliZXFscgogCW10Y3RyCXI1CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL21pc2NfNjQuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY182NC5TCmluZGV4IDI3NzhjY2UuLmU4ODgzZDQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY182NC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbWlzY182NC5TCkBAIC00ODIsNyArNDgyLDkgQEAKIAlzdWIJcjAscjMscjUKIAlzdGQJcjAsMChyNCkKIAlsZAlyNCxDUFVfU1BFQ19TRVRVUChyMykKKwljbXBkaQkwLHI0LDAKIAlhZGQJcjQscjQscjUKKwliZXFscgogCWxkCXI0LDAocjQpCiAJYWRkCXI0LHI0LHI1CiAJbXRjdHIJcjQKQEAgLTc2OCw5ICs3NzAsNiBAQAogCiAjZW5kaWYgLyogQ09ORklHX0FMVElWRUMgKi8KIAotX0dMT0JBTChfX3NldHVwX2NwdV9wb3dlcjMpCi0JYmxyCi0KIF9HTE9CQUwoZXhlY3ZlKQogCWxpCXIwLF9fTlJfZXhlY3ZlCiAJc2MKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbnZyYW1fNjQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbnZyYW1fNjQuYwppbmRleCBhZGE1MGFhLi42OTYwZjA5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL252cmFtXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9udnJhbV82NC5jCkBAIC0yMDQsNyArMjA0LDcgQEAKIAlwcmludGsoS0VSTl9XQVJOSU5HICJpbmR4XHRcdHNpZ1x0Y2hrc1x0bGVuXHRuYW1lXG4iKTsKIAlsaXN0X2Zvcl9lYWNoKHAsICZudnJhbV9wYXJ0LT5wYXJ0aXRpb24pIHsKIAkJdG1wX3BhcnQgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBudnJhbV9wYXJ0aXRpb24sIHBhcnRpdGlvbik7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIiVkICAgIFx0JTAyeFx0JTAyeFx0JWRcdCVzXG4iLAorCQlwcmludGsoS0VSTl9XQVJOSU5HICIlNGQgICAgXHQlMDJ4XHQlMDJ4XHQlZFx0JXNcbiIsCiAJCSAgICAgICB0bXBfcGFydC0+aW5kZXgsIHRtcF9wYXJ0LT5oZWFkZXIuc2lnbmF0dXJlLAogCQkgICAgICAgdG1wX3BhcnQtPmhlYWRlci5jaGVja3N1bSwgdG1wX3BhcnQtPmhlYWRlci5sZW5ndGgsCiAJCSAgICAgICB0bXBfcGFydC0+aGVhZGVyLm5hbWUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfMzIuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpXzMyLmMKaW5kZXggYjEyOWQyZS4uYzg1OGViNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfMzIuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV8zMi5jCkBAIC0xMTEzLDkgKzExMTMsMTAgQEAKIAlpbnQJaTsKIAlpbnQJcmMgPSAwOwogCi0jZGVmaW5lIHB1c2hfZW5kKHJlcywgc2l6ZSkgZG8geyB1bnNpZ25lZCBsb25nIF9fc3ogPSAoc2l6ZSkgOyBcCi0JcmVzLT5lbmQgPSAoKHJlcy0+ZW5kICsgX19zeikgLyAoX19zeiArIDEpKSAqIChfX3N6ICsgMSkgKyBfX3N6OyBcCi0gICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgcHVzaF9lbmQocmVzLCBtYXNrKSBkbyB7CQlcCisJQlVHX09OKChtYXNrKzEpICYgbWFzayk7CQlcCisJcmVzLT5lbmQgPSAocmVzLT5lbmQgKyBtYXNrKSB8IG1hc2s7CVwKK30gd2hpbGUgKDApCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmJ1cy0+ZGV2aWNlcywgYnVzX2xpc3QpIHsKIAkJdTE2IGNsYXNzID0gZGV2LT5jbGFzcyA+PiA4OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfNjQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpXzY0LmMKaW5kZXggNGM0NDQ5Yi4uNWFkODdjNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfNjQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV82NC5jCkBAIC00MiwxNCArNDIsNiBAQAogdW5zaWduZWQgbG9uZyBwY2lfcHJvYmVfb25seSA9IDE7CiBpbnQgcGNpX2Fzc2lnbl9hbGxfYnVzZXMgPSAwOwogCi0vKgotICogbGVnYWwgSU8gcGFnZXMgdW5kZXIgTUFYX0lTQV9QT1JULiAgVGhpcyBpcyB0byBlbnN1cmUgd2UgZG9uJ3QgdG91Y2gKLSAqIGRldmljZXMgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8uCi0gKi8KLXVuc2lnbmVkIGxvbmcgaW9fcGFnZV9tYXNrOwotCi1FWFBPUlRfU1lNQk9MKGlvX3BhZ2VfbWFzayk7Ci0KICNpZmRlZiBDT05GSUdfUFBDX01VTFRJUExBVEZPUk0KIHN0YXRpYyB2b2lkIGZpeHVwX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKIHN0YXRpYyB2b2lkIGRvX2J1c19zZXR1cChzdHJ1Y3QgcGNpX2J1cyAqYnVzKTsKQEAgLTIzNSw4ICsyMjcsMTAgQEAKIAlwY2lfc2V0dXBfcGNpX2NvbnRyb2xsZXIocGhiKTsKIAlwaGItPmFyY2hfZGF0YSA9IGRldjsKIAlwaGItPmlzX2R5bmFtaWMgPSBtZW1faW5pdF9kb25lOwotCWlmIChkZXYpCisJaWYgKGRldikgeworCQlQSEJfU0VUX05PREUocGhiLCBvZl9ub2RlX3RvX25pZChkZXYpKTsKIAkJYWRkX2xpbnV4X3BjaV9kb21haW4oZGV2LCBwaGIpOworCX0KIAlyZXR1cm4gcGhiOwogfQogCkBAIC0zOTYsNyArMzkwLDcgQEAKIAogCWRldi0+Y3VycmVudF9zdGF0ZSA9IDQ7CQkvKiB1bmtub3duIHBvd2VyIHN0YXRlICovCiAKLQlpZiAoIXN0cmNtcCh0eXBlLCAicGNpIikpIHsKKwlpZiAoIXN0cmNtcCh0eXBlLCAicGNpIikgfHwgIXN0cmNtcCh0eXBlLCAicGNpZXgiKSkgewogCQkvKiBhIFBDSS1QQ0kgYnJpZGdlICovCiAJCWRldi0+aGRyX3R5cGUgPSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFOwogCQlkZXYtPnJvbV9iYXNlX3JlZyA9IFBDSV9ST01fQUREUkVTUzE7CkBAIC02MDUsNyArNTk5LDcgQEAKIAlpU2VyaWVzX3BjaWJpb3NfaW5pdCgpOyAKICNlbmRpZgogCi0JcHJpbnRrKCJQQ0k6IFByb2JpbmcgUENJIGhhcmR3YXJlXG4iKTsKKwlwcmludGsoS0VSTl9ERUJVRyAiUENJOiBQcm9iaW5nIFBDSSBoYXJkd2FyZVxuIik7CiAKIAkvKiBTY2FuIGFsbCBvZiB0aGUgcmVjb3JkZWQgUENJIGNvbnRyb2xsZXJzLiAgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaG9zZSwgdG1wLCAmaG9zZV9saXN0LCBsaXN0X25vZGUpIHsKQEAgLTYzMCwxNCArNjI0LDE0IEBACiAJLyogQ2FjaGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBJU0EgYnJpZGdlIChpZiB3ZSBoYXZlIG9uZSkgKi8KIAlwcGM2NF9pc2FicmlkZ2VfZGV2ID0gcGNpX2dldF9jbGFzcyhQQ0lfQ0xBU1NfQlJJREdFX0lTQSA8PCA4LCBOVUxMKTsKIAlpZiAocHBjNjRfaXNhYnJpZGdlX2RldiAhPSBOVUxMKQotCQlwcmludGsoIklTQSBicmlkZ2UgYXQgJXNcbiIsIHBjaV9uYW1lKHBwYzY0X2lzYWJyaWRnZV9kZXYpKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIklTQSBicmlkZ2UgYXQgJXNcbiIsIHBjaV9uYW1lKHBwYzY0X2lzYWJyaWRnZV9kZXYpKTsKIAogI2lmZGVmIENPTkZJR19QUENfTVVMVElQTEFURk9STQogCS8qIG1hcCBpbiBQQ0kgSS9PIHNwYWNlICovCiAJcGhic19yZW1hcF9pbygpOwogI2VuZGlmCiAKLQlwcmludGsoIlBDSTogUHJvYmluZyBQQ0kgaGFyZHdhcmUgZG9uZVxuIik7CisJcHJpbnRrKEtFUk5fREVCVUcgIlBDSTogUHJvYmluZyBQQ0kgaGFyZHdhcmUgZG9uZVxuIik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTgwNCw3ICs3OTgsNyBAQAogCWVsc2UKIAkJcHJvdCB8PSBfUEFHRV9HVUFSREVEOwogCi0JcHJpbnRrKCJQQ0kgbWFwIGZvciAlczolbHgsIHByb3Q6ICVseFxuIiwgcGNpX25hbWUoZGV2KSwgcnAtPnN0YXJ0LAorCXByaW50ayhLRVJOX0RFQlVHICJQQ0kgbWFwIGZvciAlczolbHgsIHByb3Q6ICVseFxuIiwgcGNpX25hbWUoZGV2KSwgcnAtPnN0YXJ0LAogCSAgICAgICBwcm90KTsKIAogCXJldHVybiBfX3BncHJvdChwcm90KTsKQEAgLTg5NCw4ICs4ODgsOCBAQAogCXJldHVybiByZXQ7CiB9CiAKLSNpZmRlZiBDT05GSUdfUFBDX01VTFRJUExBVEZPUk0KLXN0YXRpYyBzc2l6ZV90IHBjaV9zaG93X2RldnNwZWMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQorc3RhdGljIHNzaXplX3QgcGNpX3Nob3dfZGV2c3BlYyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXY7CiAJc3RydWN0IGRldmljZV9ub2RlICpucDsKQEAgLTkwNywxMyArOTAxLDEwIEBACiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJXMiLCBucC0+ZnVsbF9uYW1lKTsKIH0KIHN0YXRpYyBERVZJQ0VfQVRUUihkZXZzcGVjLCBTX0lSVUdPLCBwY2lfc2hvd19kZXZzcGVjLCBOVUxMKTsKLSNlbmRpZiAvKiBDT05GSUdfUFBDX01VTFRJUExBVEZPUk0gKi8KIAogdm9pZCBwY2liaW9zX2FkZF9wbGF0Zm9ybV9lbnRyaWVzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewotI2lmZGVmIENPTkZJR19QUENfTVVMVElQTEFURk9STQogCWRldmljZV9jcmVhdGVfZmlsZSgmcGRldi0+ZGV2LCAmZGV2X2F0dHJfZGV2c3BlYyk7Ci0jZW5kaWYgLyogQ09ORklHX1BQQ19NVUxUSVBMQVRGT1JNICovCiB9CiAKICNpZmRlZiBDT05GSUdfUFBDX01VTFRJUExBVEZPUk0KQEAgLTExMDQsOCArMTA5NSw2IEBACiAJCQlwY2lfcHJvY2Vzc19JU0FfT0ZfcmFuZ2VzKGlzYV9kbiwgaG9zZS0+aW9fYmFzZV9waHlzLAogCQkJCQkJaG9zZS0+aW9fYmFzZV92aXJ0KTsKIAkJCW9mX25vZGVfcHV0KGlzYV9kbik7Ci0JCQkvKiBBbGxvdyBhbGwgSU8gKi8KLQkJCWlvX3BhZ2VfbWFzayA9IC0xOwogCQl9CiAJfQogCkBAIC0xMjEyLDcgKzEyMDEsNyBAQAogCQlyZXR1cm4gMTsKIAlpZiAoc3RhcnRfcGh5cyA9PSAwKQogCQlyZXR1cm4gMTsKLQlwcmludGsoIm1hcHBpbmcgSU8gJWx4IC0+ICVseCwgc2l6ZTogJWx4XG4iLCBzdGFydF9waHlzLCBzdGFydF92aXJ0LCBzaXplKTsKKwlwcmludGsoS0VSTl9ERUJVRyAibWFwcGluZyBJTyAlbHggLT4gJWx4LCBzaXplOiAlbHhcbiIsIHN0YXJ0X3BoeXMsIHN0YXJ0X3ZpcnQsIHNpemUpOwogCWlmIChfX2lvcmVtYXBfZXhwbGljaXQoc3RhcnRfcGh5cywgc3RhcnRfdmlydCwgc2l6ZSwKIAkJCSAgICAgICBfUEFHRV9OT19DQUNIRSB8IF9QQUdFX0dVQVJERUQpKQogCQlyZXR1cm4gMTsKQEAgLTEyMzIsMjcgKzEyMjEsMTMgQEAKIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBmaXh1cF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgc3RydWN0IHBjaV9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSBwY2lfYnVzX3RvX2hvc3QoZGV2LT5idXMpOwotCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZCwgbWFzaywgb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogCiAJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX0lPKSB7CiAJCW9mZnNldCA9ICh1bnNpZ25lZCBsb25nKWhvc2UtPmlvX2Jhc2VfdmlydCAtIHBjaV9pb19iYXNlOwogCi0JCXN0YXJ0ID0gcmVzLT5zdGFydCArPSBvZmZzZXQ7Ci0JCWVuZCA9IHJlcy0+ZW5kICs9IG9mZnNldDsKLQotCQkvKiBOZWVkIHRvIGFsbG93IElPIGFjY2VzcyB0byBwYWdlcyB0aGF0IGFyZSBpbiB0aGUKLQkJICAgSVNBIHJhbmdlICovCi0JCWlmIChzdGFydCA8IE1BWF9JU0FfUE9SVCkgewotCQkJaWYgKGVuZCA+IE1BWF9JU0FfUE9SVCkKLQkJCQllbmQgPSBNQVhfSVNBX1BPUlQ7Ci0KLQkJCXN0YXJ0ID4+PSBQQUdFX1NISUZUOwotCQkJZW5kID4+PSBQQUdFX1NISUZUOwotCi0JCQkvKiBnZXQgdGhlIHJhbmdlIG9mIHBhZ2VzIGZvciB0aGUgbWFwICovCi0JCQltYXNrID0gKCgxIDw8IChlbmQrMSkpIC0gMSkgXiAoKDEgPDwgc3RhcnQpIC0gMSk7Ci0JCQlpb19wYWdlX21hc2sgfD0gbWFzazsKLQkJfQorCQlyZXMtPnN0YXJ0ICs9IG9mZnNldDsKKwkJcmVzLT5lbmQgKz0gb2Zmc2V0OwogCX0gZWxzZSBpZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfTUVNKSB7CiAJCXJlcy0+c3RhcnQgKz0gaG9zZS0+cGNpX21lbV9vZmZzZXQ7CiAJCXJlcy0+ZW5kICs9IGhvc2UtPnBjaV9tZW1fb2Zmc2V0OwpAQCAtMTQ0MiwzICsxNDE3LDEyIEBACiAKIAlyZXR1cm4gLUVPUE5PVFNVUFA7CiB9CisKKyNpZmRlZiBDT05GSUdfTlVNQQoraW50IHBjaWJ1c190b19ub2RlKHN0cnVjdCBwY2lfYnVzICpidXMpCit7CisJc3RydWN0IHBjaV9jb250cm9sbGVyICpwaGIgPSBwY2lfYnVzX3RvX2hvc3QoYnVzKTsKKwlyZXR1cm4gcGhiLT5ub2RlOworfQorRVhQT1JUX1NZTUJPTChwY2lidXNfdG9fbm9kZSk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpX2RpcmVjdF9pb21tdS5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfZGlyZWN0X2lvbW11LmMKaW5kZXggZTFhMzJmOC4uNzJjZTA4MiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfZGlyZWN0X2lvbW11LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfZGlyZWN0X2lvbW11LmMKQEAgLTgyLDEzICs4MiwxNyBAQAogCXJldHVybiBtYXNrIDwgMHgxMDAwMDAwMDB1bGw7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZG1hX21hcHBpbmdfb3BzIHBjaV9kaXJlY3Rfb3BzID0geworCS5hbGxvY19jb2hlcmVudCA9IHBjaV9kaXJlY3RfYWxsb2NfY29oZXJlbnQsCisJLmZyZWVfY29oZXJlbnQgPSBwY2lfZGlyZWN0X2ZyZWVfY29oZXJlbnQsCisJLm1hcF9zaW5nbGUgPSBwY2lfZGlyZWN0X21hcF9zaW5nbGUsCisJLnVubWFwX3NpbmdsZSA9IHBjaV9kaXJlY3RfdW5tYXBfc2luZ2xlLAorCS5tYXBfc2cgPSBwY2lfZGlyZWN0X21hcF9zZywKKwkudW5tYXBfc2cgPSBwY2lfZGlyZWN0X3VubWFwX3NnLAorCS5kbWFfc3VwcG9ydGVkID0gcGNpX2RpcmVjdF9kbWFfc3VwcG9ydGVkLAorfTsKKwogdm9pZCBfX2luaXQgcGNpX2RpcmVjdF9pb21tdV9pbml0KHZvaWQpCiB7Ci0JcGNpX2RtYV9vcHMuYWxsb2NfY29oZXJlbnQgPSBwY2lfZGlyZWN0X2FsbG9jX2NvaGVyZW50OwotCXBjaV9kbWFfb3BzLmZyZWVfY29oZXJlbnQgPSBwY2lfZGlyZWN0X2ZyZWVfY29oZXJlbnQ7Ci0JcGNpX2RtYV9vcHMubWFwX3NpbmdsZSA9IHBjaV9kaXJlY3RfbWFwX3NpbmdsZTsKLQlwY2lfZG1hX29wcy51bm1hcF9zaW5nbGUgPSBwY2lfZGlyZWN0X3VubWFwX3NpbmdsZTsKLQlwY2lfZG1hX29wcy5tYXBfc2cgPSBwY2lfZGlyZWN0X21hcF9zZzsKLQlwY2lfZG1hX29wcy51bm1hcF9zZyA9IHBjaV9kaXJlY3RfdW5tYXBfc2c7Ci0JcGNpX2RtYV9vcHMuZG1hX3N1cHBvcnRlZCA9IHBjaV9kaXJlY3RfZG1hX3N1cHBvcnRlZDsKKwlwY2lfZG1hX29wcyA9IHBjaV9kaXJlY3Rfb3BzOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfZG4uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpX2RuLmMKaW5kZXggMTJjNGM5ZS4uMWMxODk1MyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfZG4uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV9kbi5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8YXNtL3BjaS1icmlkZ2UuaD4KICNpbmNsdWRlIDxhc20vcFNlcmllc19yZWNvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9wcGMtcGNpLmg+CisjaW5jbHVkZSA8YXNtL2Zpcm13YXJlLmg+CiAKIC8qCiAgKiBUcmF2ZXJzZV9mdW5jIHRoYXQgaW5pdHMgdGhlIFBDSSBmaWVsZHMgb2YgdGhlIGRldmljZSBub2RlLgpAQCAtNTksNiArNjAsMTEgQEAKIAkJcGRuLT5idXNubyA9IChyZWdzWzBdID4+IDE2KSAmIDB4ZmY7CiAJCXBkbi0+ZGV2Zm4gPSAocmVnc1swXSA+PiA4KSAmIDB4ZmY7CiAJfQorCWlmIChmaXJtd2FyZV9oYXNfZmVhdHVyZShGV19GRUFUVVJFX0lTRVJJRVMpKSB7CisJCXUzMiAqYnVzcCA9ICh1MzIgKilnZXRfcHJvcGVydHkoZG4sICJsaW51eCxzdWJidXMiLCBOVUxMKTsKKwkJaWYgKGJ1c3ApCisJCQlwZG4tPmJ1c3N1Ym5vID0gKmJ1c3A7CisJfQogCiAJcGRuLT5wY2lfZXh0X2NvbmZpZ19zcGFjZSA9ICh0eXBlICYmICp0eXBlID09IDEpOwogCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfaW9tbXUuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpX2lvbW11LmMKaW5kZXggYzFkOTVlMS4uMDY4OGIyNSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfaW9tbXUuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV9pb21tdS5jCkBAIC00NCwxNiArNDQsMTYgQEAKICAqLwogI2RlZmluZSBQQ0lfR0VUX0ROKGRldikgKChzdHJ1Y3QgZGV2aWNlX25vZGUgKikoKGRldiktPnN5c2RhdGEpKQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBpb21tdV90YWJsZSAqZGV2bm9kZV90YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpb21tdV90YWJsZSAqZGV2aWNlX3RvX3RhYmxlKHN0cnVjdCBkZXZpY2UgKmh3ZGV2KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2OwogCi0JaWYgKCFkZXYpIHsKKwlpZiAoIWh3ZGV2KSB7CiAJCXBkZXYgPSBwcGM2NF9pc2FicmlkZ2VfZGV2OwogCQlpZiAoIXBkZXYpCiAJCQlyZXR1cm4gTlVMTDsKIAl9IGVsc2UKLQkJcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsKKwkJcGRldiA9IHRvX3BjaV9kZXYoaHdkZXYpOwogCiAJcmV0dXJuIFBDSV9ETihQQ0lfR0VUX0ROKHBkZXYpKS0+aW9tbXVfdGFibGU7CiB9CkBAIC04NSwxNCArODUsMTUgQEAKIHN0YXRpYyB2b2lkICpwY2lfaW9tbXVfYWxsb2NfY29oZXJlbnQoc3RydWN0IGRldmljZSAqaHdkZXYsIHNpemVfdCBzaXplLAogCQkJICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZmxhZykKIHsKLQlyZXR1cm4gaW9tbXVfYWxsb2NfY29oZXJlbnQoZGV2bm9kZV90YWJsZShod2RldiksIHNpemUsIGRtYV9oYW5kbGUsCi0JCQlkZXZpY2VfdG9fbWFzayhod2RldiksIGZsYWcpOworCXJldHVybiBpb21tdV9hbGxvY19jb2hlcmVudChkZXZpY2VfdG9fdGFibGUoaHdkZXYpLCBzaXplLCBkbWFfaGFuZGxlLAorCQkJZGV2aWNlX3RvX21hc2soaHdkZXYpLCBmbGFnLAorCQkJcGNpYnVzX3RvX25vZGUodG9fcGNpX2Rldihod2RldiktPmJ1cykpOwogfQogCiBzdGF0aWMgdm9pZCBwY2lfaW9tbXVfZnJlZV9jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpod2Rldiwgc2l6ZV90IHNpemUsCiAJCQkgdm9pZCAqdmFkZHIsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSkKIHsKLQlpb21tdV9mcmVlX2NvaGVyZW50KGRldm5vZGVfdGFibGUoaHdkZXYpLCBzaXplLCB2YWRkciwgZG1hX2hhbmRsZSk7CisJaW9tbXVfZnJlZV9jb2hlcmVudChkZXZpY2VfdG9fdGFibGUoaHdkZXYpLCBzaXplLCB2YWRkciwgZG1hX2hhbmRsZSk7CiB9CiAKIC8qIENyZWF0ZXMgVENFcyBmb3IgYSB1c2VyIHByb3ZpZGVkIGJ1ZmZlci4gIFRoZSB1c2VyIGJ1ZmZlciBtdXN0IGJlIApAQCAtMTA0LDcgKzEwNSw3IEBACiBzdGF0aWMgZG1hX2FkZHJfdCBwY2lfaW9tbXVfbWFwX3NpbmdsZShzdHJ1Y3QgZGV2aWNlICpod2Rldiwgdm9pZCAqdmFkZHIsCiAJCXNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0JcmV0dXJuIGlvbW11X21hcF9zaW5nbGUoZGV2bm9kZV90YWJsZShod2RldiksIHZhZGRyLCBzaXplLAorCXJldHVybiBpb21tdV9tYXBfc2luZ2xlKGRldmljZV90b190YWJsZShod2RldiksIHZhZGRyLCBzaXplLAogCQkJICAgICAgICBkZXZpY2VfdG9fbWFzayhod2RldiksIGRpcmVjdGlvbik7CiB9CiAKQEAgLTExMiwyNyArMTEzLDI3IEBACiBzdGF0aWMgdm9pZCBwY2lfaW9tbXVfdW5tYXBfc2luZ2xlKHN0cnVjdCBkZXZpY2UgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9oYW5kbGUsCiAJCXNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0JaW9tbXVfdW5tYXBfc2luZ2xlKGRldm5vZGVfdGFibGUoaHdkZXYpLCBkbWFfaGFuZGxlLCBzaXplLCBkaXJlY3Rpb24pOworCWlvbW11X3VubWFwX3NpbmdsZShkZXZpY2VfdG9fdGFibGUoaHdkZXYpLCBkbWFfaGFuZGxlLCBzaXplLCBkaXJlY3Rpb24pOwogfQogCiAKIHN0YXRpYyBpbnQgcGNpX2lvbW11X21hcF9zZyhzdHJ1Y3QgZGV2aWNlICpwZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbGlzdCwKIAkJaW50IG5lbGVtcywgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQogewotCXJldHVybiBpb21tdV9tYXBfc2cocGRldiwgZGV2bm9kZV90YWJsZShwZGV2KSwgc2dsaXN0LAorCXJldHVybiBpb21tdV9tYXBfc2cocGRldiwgZGV2aWNlX3RvX3RhYmxlKHBkZXYpLCBzZ2xpc3QsCiAJCQluZWxlbXMsIGRldmljZV90b19tYXNrKHBkZXYpLCBkaXJlY3Rpb24pOwogfQogCiBzdGF0aWMgdm9pZCBwY2lfaW9tbXVfdW5tYXBfc2coc3RydWN0IGRldmljZSAqcGRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2xpc3QsCiAJCWludCBuZWxlbXMsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLQlpb21tdV91bm1hcF9zZyhkZXZub2RlX3RhYmxlKHBkZXYpLCBzZ2xpc3QsIG5lbGVtcywgZGlyZWN0aW9uKTsKKwlpb21tdV91bm1hcF9zZyhkZXZpY2VfdG9fdGFibGUocGRldiksIHNnbGlzdCwgbmVsZW1zLCBkaXJlY3Rpb24pOwogfQogCiAvKiBXZSBzdXBwb3J0IERNQSB0by9mcm9tIGFueSBtZW1vcnkgcGFnZSB2aWEgdGhlIGlvbW11ICovCiBzdGF0aWMgaW50IHBjaV9pb21tdV9kbWFfc3VwcG9ydGVkKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IG1hc2spCiB7Ci0Jc3RydWN0IGlvbW11X3RhYmxlICp0YmwgPSBkZXZub2RlX3RhYmxlKGRldik7CisJc3RydWN0IGlvbW11X3RhYmxlICp0YmwgPSBkZXZpY2VfdG9fdGFibGUoZGV2KTsKIAogCWlmICghdGJsIHx8IHRibC0+aXRfb2Zmc2V0ID4gbWFzaykgewogCQlwcmludGsoS0VSTl9JTkZPICJXYXJuaW5nOiBJT01NVSB0YWJsZSBvZmZzZXQgdG9vIGJpZyBmb3IgZGV2aWNlIG1hc2tcbiIpOwpAQCAtMTQ3LDEzICsxNDgsMTcgQEAKIAkJcmV0dXJuIDE7CiB9CiAKK3N0cnVjdCBkbWFfbWFwcGluZ19vcHMgcGNpX2lvbW11X29wcyA9IHsKKwkuYWxsb2NfY29oZXJlbnQgPSBwY2lfaW9tbXVfYWxsb2NfY29oZXJlbnQsCisJLmZyZWVfY29oZXJlbnQgPSBwY2lfaW9tbXVfZnJlZV9jb2hlcmVudCwKKwkubWFwX3NpbmdsZSA9IHBjaV9pb21tdV9tYXBfc2luZ2xlLAorCS51bm1hcF9zaW5nbGUgPSBwY2lfaW9tbXVfdW5tYXBfc2luZ2xlLAorCS5tYXBfc2cgPSBwY2lfaW9tbXVfbWFwX3NnLAorCS51bm1hcF9zZyA9IHBjaV9pb21tdV91bm1hcF9zZywKKwkuZG1hX3N1cHBvcnRlZCA9IHBjaV9pb21tdV9kbWFfc3VwcG9ydGVkLAorfTsKKwogdm9pZCBwY2lfaW9tbXVfaW5pdCh2b2lkKQogewotCXBjaV9kbWFfb3BzLmFsbG9jX2NvaGVyZW50ID0gcGNpX2lvbW11X2FsbG9jX2NvaGVyZW50OwotCXBjaV9kbWFfb3BzLmZyZWVfY29oZXJlbnQgPSBwY2lfaW9tbXVfZnJlZV9jb2hlcmVudDsKLQlwY2lfZG1hX29wcy5tYXBfc2luZ2xlID0gcGNpX2lvbW11X21hcF9zaW5nbGU7Ci0JcGNpX2RtYV9vcHMudW5tYXBfc2luZ2xlID0gcGNpX2lvbW11X3VubWFwX3NpbmdsZTsKLQlwY2lfZG1hX29wcy5tYXBfc2cgPSBwY2lfaW9tbXVfbWFwX3NnOwotCXBjaV9kbWFfb3BzLnVubWFwX3NnID0gcGNpX2lvbW11X3VubWFwX3NnOwotCXBjaV9kbWFfb3BzLmRtYV9zdXBwb3J0ZWQgPSBwY2lfaW9tbXVfZG1hX3N1cHBvcnRlZDsKKwlwY2lfZG1hX29wcyA9IHBjaV9pb21tdV9vcHM7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2NfcHBjNjQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY19wcGM2NC5jCmluZGV4IDNjMmNmNjYuLjJiODdmODIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY19wcGM2NC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY19wcGM2NC5jCkBAIC01Miw3ICs1Miw3IEBACiAJaWYgKCFyb290KQogCQlyZXR1cm4gMTsKIAotCWlmICghbWFjaGluZV9pcyhwc2VyaWVzKSAmJiAhbWFjaGluZV9pcyhjZWxsKSkKKwlpZiAoIW9mX2ZpbmRfbm9kZV9ieV9wYXRoKCIvcnRhcyIpKQogCQlyZXR1cm4gMDsKIAogCWlmICghcHJvY19ta2RpcigicnRhcyIsIHJvb3QpKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYwppbmRleCAyZGQ0N2QyLi5lNDczMjQ1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYwpAQCAtNzA4LDYgKzcwOCw2MSBAQAogCXJldHVybiBwdXRfdXNlcih2YWwsICh1bnNpZ25lZCBpbnQgX191c2VyICopIGFkcik7CiB9CiAKK2ludCBzZXRfZW5kaWFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBpbnQgdmFsKQoreworCXN0cnVjdCBwdF9yZWdzICpyZWdzID0gdHNrLT50aHJlYWQucmVnczsKKworCWlmICgodmFsID09IFBSX0VORElBTl9MSVRUTEUgJiYgIWNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1JFQUxfTEUpKSB8fAorCSAgICAodmFsID09IFBSX0VORElBTl9QUENfTElUVExFICYmICFjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QUENfTEUpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocmVncyA9PSBOVUxMKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh2YWwgPT0gUFJfRU5ESUFOX0JJRykKKwkJcmVncy0+bXNyICY9IH5NU1JfTEU7CisJZWxzZSBpZiAodmFsID09IFBSX0VORElBTl9MSVRUTEUgfHwgdmFsID09IFBSX0VORElBTl9QUENfTElUVExFKQorCQlyZWdzLT5tc3IgfD0gTVNSX0xFOworCWVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGdldF9lbmRpYW4oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRyKQoreworCXN0cnVjdCBwdF9yZWdzICpyZWdzID0gdHNrLT50aHJlYWQucmVnczsKKwl1bnNpZ25lZCBpbnQgdmFsOworCisJaWYgKCFjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9QUENfTEUpICYmCisJICAgICFjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9SRUFMX0xFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocmVncyA9PSBOVUxMKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyZWdzLT5tc3IgJiBNU1JfTEUpIHsKKwkJaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1JFQUxfTEUpKQorCQkJdmFsID0gUFJfRU5ESUFOX0xJVFRMRTsKKwkJZWxzZQorCQkJdmFsID0gUFJfRU5ESUFOX1BQQ19MSVRUTEU7CisJfSBlbHNlCisJCXZhbCA9IFBSX0VORElBTl9CSUc7CisKKwlyZXR1cm4gcHV0X3VzZXIodmFsLCAodW5zaWduZWQgaW50IF9fdXNlciAqKWFkcik7Cit9CisKK2ludCBzZXRfdW5hbGlnbl9jdGwoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCB2YWwpCit7CisJdHNrLT50aHJlYWQuYWxpZ25fY3RsID0gdmFsOworCXJldHVybiAwOworfQorCitpbnQgZ2V0X3VuYWxpZ25fY3RsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIGFkcikKK3sKKwlyZXR1cm4gcHV0X3VzZXIodHNrLT50aHJlYWQuYWxpZ25fY3RsLCAodW5zaWduZWQgaW50IF9fdXNlciAqKWFkcik7Cit9CisKICNkZWZpbmUgVFJVTkNfUFRSKHgpCSgodHlwZW9mKHgpKSgoKHVuc2lnbmVkIGxvbmcpKHgpKSAmIDB4ZmZmZmZmZmYpKQogCiBpbnQgc3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MsIHVuc2lnbmVkIGxvbmcgdXNwLApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYwppbmRleCA5YTA3Zjk3Li40ODM0NTVjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8YXNtL3BTZXJpZXNfcmVjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcGNpLWJyaWRnZS5oPgorI2luY2x1ZGUgPGFzbS9rZXhlYy5oPgogCiAjaWZkZWYgREVCVUcKICNkZWZpbmUgREJHKGZtdC4uLikgcHJpbnRrKEtFUk5fRVJSIGZtdCkKQEAgLTgzNiw2ICs4MzcsNDIgQEAKIAlyZXR1cm4gbWVtOwogfQogCitzdGF0aWMgaW50IF9faW5pdCBlYXJseV9wYXJzZV9tZW0oY2hhciAqcCkKK3sKKwlpZiAoIXApCisJCXJldHVybiAxOworCisJbWVtb3J5X2xpbWl0ID0gUEFHRV9BTElHTihtZW1wYXJzZShwLCAmcCkpOworCURCRygibWVtb3J5IGxpbWl0ID0gMHglbHhcbiIsIG1lbW9yeV9saW1pdCk7CisKKwlyZXR1cm4gMDsKK30KK2Vhcmx5X3BhcmFtKCJtZW0iLCBlYXJseV9wYXJzZV9tZW0pOworCisvKgorICogVGhlIGRldmljZSB0cmVlIG1heSBiZSBhbGxvY2F0ZWQgYmVsb3cgb3VyIG1lbW9yeSBsaW1pdCwgb3IgaW5zaWRlIHRoZQorICogY3Jhc2gga2VybmVsIHJlZ2lvbiBmb3Iga2R1bXAuIElmIHNvLCBtb3ZlIGl0IG91dCBub3cuCisgKi8KK3N0YXRpYyB2b2lkIG1vdmVfZGV2aWNlX3RyZWUodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHN0YXJ0LCBzaXplOworCXZvaWQgKnA7CisKKwlEQkcoIi0+IG1vdmVfZGV2aWNlX3RyZWVcbiIpOworCisJc3RhcnQgPSBfX3BhKGluaXRpYWxfYm9vdF9wYXJhbXMpOworCXNpemUgPSBpbml0aWFsX2Jvb3RfcGFyYW1zLT50b3RhbHNpemU7CisKKwlpZiAoKG1lbW9yeV9saW1pdCAmJiAoc3RhcnQgKyBzaXplKSA+IG1lbW9yeV9saW1pdCkgfHwKKwkJCW92ZXJsYXBzX2NyYXNoa2VybmVsKHN0YXJ0LCBzaXplKSkgeworCQlwID0gX192YShsbWJfYWxsb2NfYmFzZShzaXplLCBQQUdFX1NJWkUsIGxtYi5ybW9fc2l6ZSkpOworCQltZW1jcHkocCwgaW5pdGlhbF9ib290X3BhcmFtcywgc2l6ZSk7CisJCWluaXRpYWxfYm9vdF9wYXJhbXMgPSAoc3RydWN0IGJvb3RfcGFyYW1faGVhZGVyICopcDsKKwkJREJHKCJNb3ZlZCBkZXZpY2UgdHJlZSB0byAweCVwXG4iLCBwKTsKKwl9CisKKwlEQkcoIjwtIG1vdmVfZGV2aWNlX3RyZWVcbiIpOworfQogCiAvKioKICAqIHVuZmxhdHRlbnMgdGhlIGRldmljZS10cmVlIHBhc3NlZCBieSB0aGUgZmlybXdhcmUsIGNyZWF0aW5nIHRoZQpAQCAtOTExLDcgKzk0OCwxMCBAQAogCXtDUFVfRlRSX0NUUkwsIDAsCQkwLCAzLCAwfSwKIAl7Q1BVX0ZUUl9OT0VYRUNVVEUsIDAsCQkwLCA2LCAwfSwKIAl7Q1BVX0ZUUl9OT0RTSVNSQUxJR04sIDAsCTEsIDEsIDF9LAorI2lmIDAKKwkvKiBwdXQgdGhpcyBiYWNrIG9uY2Ugd2Uga25vdyBob3cgdG8gdGVzdCBpZiBmaXJtd2FyZSBkb2VzIDY0ayBJTyAqLwogCXtDUFVfRlRSX0NJX0xBUkdFX1BBR0UsIDAsCTEsIDIsIDB9LAorI2VuZGlmCiB9OwogCiBzdGF0aWMgdm9pZCBfX2luaXQgY2hlY2tfY3B1X3BhX2ZlYXR1cmVzKHVuc2lnbmVkIGxvbmcgbm9kZSkKQEAgLTEwNzAsNiArMTExMCw3IEBACiAJCWlvbW11X2ZvcmNlX29uID0gMTsKICNlbmRpZgogCisJLyogbWVtPXggb24gdGhlIGNvbW1hbmQgbGluZSBpcyB0aGUgcHJlZmVycmVkIG1lY2hhbmlzbSAqLwogIAlscHJvcCA9IG9mX2dldF9mbGF0X2R0X3Byb3Aobm9kZSwgImxpbnV4LG1lbW9yeS1saW1pdCIsIE5VTEwpOwogIAlpZiAobHByb3ApCiAgCQltZW1vcnlfbGltaXQgPSAqbHByb3A7CkBAIC0xMTIzLDE3ICsxMTY0LDYgQEAKIAogCURCRygiQ29tbWFuZCBsaW5lIGlzOiAlc1xuIiwgY21kX2xpbmUpOwogCi0JaWYgKHN0cnN0cihjbWRfbGluZSwgIm1lbT0iKSkgewotCQljaGFyICpwLCAqcTsKLQotCQlmb3IgKHEgPSBjbWRfbGluZTsgKHAgPSBzdHJzdHIocSwgIm1lbT0iKSkgIT0gMDsgKSB7Ci0JCQlxID0gcCArIDQ7Ci0JCQlpZiAocCA+IGNtZF9saW5lICYmIHBbLTFdICE9ICcgJykKLQkJCQljb250aW51ZTsKLQkJCW1lbW9yeV9saW1pdCA9IG1lbXBhcnNlKHEsICZxKTsKLQkJfQotCX0KLQogCS8qIGJyZWFrIG5vdyAqLwogCXJldHVybiAxOwogfQpAQCAtMTIzNyw5ICsxMjY3LDE3IEBACiB7CiAJdTY0IGJhc2UsIHNpemU7CiAJdTY0ICpyZXNlcnZlX21hcDsKKwl1bnNpZ25lZCBsb25nIHNlbGZfYmFzZTsKKwl1bnNpZ25lZCBsb25nIHNlbGZfc2l6ZTsKIAogCXJlc2VydmVfbWFwID0gKHU2NCAqKSgoKHVuc2lnbmVkIGxvbmcpaW5pdGlhbF9ib290X3BhcmFtcykgKwogCQkJCQlpbml0aWFsX2Jvb3RfcGFyYW1zLT5vZmZfbWVtX3Jzdm1hcCk7CisKKwkvKiBiZWZvcmUgd2UgZG8gYW55dGhpbmcsIGxldHMgcmVzZXJ2ZSB0aGUgZHQgYmxvYiAqLworCXNlbGZfYmFzZSA9IF9fcGEoKHVuc2lnbmVkIGxvbmcpaW5pdGlhbF9ib290X3BhcmFtcyk7CisJc2VsZl9zaXplID0gaW5pdGlhbF9ib290X3BhcmFtcy0+dG90YWxzaXplOworCWxtYl9yZXNlcnZlKHNlbGZfYmFzZSwgc2VsZl9zaXplKTsKKwogI2lmZGVmIENPTkZJR19QUEMzMgogCS8qIAogCSAqIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBtaWdodCBiZSBib290aW5nIGZyb20gYW4gb2xkIGtleGVjCkBAIC0xMjU0LDYgKzEyOTIsOSBAQAogCQkJc2l6ZV8zMiA9ICoocmVzZXJ2ZV9tYXBfMzIrKyk7CiAJCQlpZiAoc2l6ZV8zMiA9PSAwKQogCQkJCWJyZWFrOworCQkJLyogc2tpcCBpZiB0aGUgcmVzZXJ2YXRpb24gaXMgZm9yIHRoZSBibG9iICovCisJCQlpZiAoYmFzZV8zMiA9PSBzZWxmX2Jhc2UgJiYgc2l6ZV8zMiA9PSBzZWxmX3NpemUpCisJCQkJY29udGludWU7CiAJCQlEQkcoInJlc2VydmluZzogJXggLT4gJXhcbiIsIGJhc2VfMzIsIHNpemVfMzIpOwogCQkJbG1iX3Jlc2VydmUoYmFzZV8zMiwgc2l6ZV8zMik7CiAJCX0KQEAgLTEyNjUsNiArMTMwNiw5IEBACiAJCXNpemUgPSAqKHJlc2VydmVfbWFwKyspOwogCQlpZiAoc2l6ZSA9PSAwKQogCQkJYnJlYWs7CisJCS8qIHNraXAgaWYgdGhlIHJlc2VydmF0aW9uIGlzIGZvciB0aGUgYmxvYiAqLworCQlpZiAoYmFzZSA9PSBzZWxmX2Jhc2UgJiYgc2l6ZSA9PSBzZWxmX3NpemUpCisJCQljb250aW51ZTsKIAkJREJHKCJyZXNlcnZpbmc6ICVsbHggLT4gJWxseFxuIiwgYmFzZSwgc2l6ZSk7CiAJCWxtYl9yZXNlcnZlKGJhc2UsIHNpemUpOwogCX0KQEAgLTEyOTIsMTcgKzEzMzYsMjUgQEAKIAlsbWJfaW5pdCgpOwogCW9mX3NjYW5fZmxhdF9kdChlYXJseV9pbml0X2R0X3NjYW5fcm9vdCwgTlVMTCk7CiAJb2Zfc2Nhbl9mbGF0X2R0KGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnksIE5VTEwpOworCisJLyogU2F2ZSBjb21tYW5kIGxpbmUgZm9yIC9wcm9jL2NtZGxpbmUgYW5kIHRoZW4gcGFyc2UgcGFyYW1ldGVycyAqLworCXN0cmxjcHkoc2F2ZWRfY29tbWFuZF9saW5lLCBjbWRfbGluZSwgQ09NTUFORF9MSU5FX1NJWkUpOworCXBhcnNlX2Vhcmx5X3BhcmFtKCk7CisKKwkvKiBSZXNlcnZlIExNQiByZWdpb25zIHVzZWQgYnkga2VybmVsLCBpbml0cmQsIGR0LCBldGMuLi4gKi8KKwlsbWJfcmVzZXJ2ZShQSFlTSUNBTF9TVEFSVCwgX19wYShrbGltaXQpIC0gUEhZU0lDQUxfU1RBUlQpOworCXJlc2VydmVfa2R1bXBfdHJhbXBvbGluZSgpOworCXJlc2VydmVfY3Jhc2hrZXJuZWwoKTsKKwllYXJseV9yZXNlcnZlX21lbSgpOworCiAJbG1iX2VuZm9yY2VfbWVtb3J5X2xpbWl0KG1lbW9yeV9saW1pdCk7CiAJbG1iX2FuYWx5emUoKTsKIAogCURCRygiUGh5cy4gbWVtOiAlbHhcbiIsIGxtYl9waHlzX21lbV9zaXplKCkpOwogCi0JLyogUmVzZXJ2ZSBMTUIgcmVnaW9ucyB1c2VkIGJ5IGtlcm5lbCwgaW5pdHJkLCBkdCwgZXRjLi4uICovCi0JbG1iX3Jlc2VydmUoUEhZU0lDQUxfU1RBUlQsIF9fcGEoa2xpbWl0KSAtIFBIWVNJQ0FMX1NUQVJUKTsKLSNpZmRlZiBDT05GSUdfQ1JBU0hfRFVNUAotCWxtYl9yZXNlcnZlKDAsIEtEVU1QX1JFU0VSVkVfTElNSVQpOwotI2VuZGlmCi0JZWFybHlfcmVzZXJ2ZV9tZW0oKTsKKwkvKiBXZSBtYXkgbmVlZCB0byByZWxvY2F0ZSB0aGUgZmxhdCB0cmVlLCBkbyBpdCBub3cuCisJICogRklYTUUgLi4gYW5kIHRoZSBpbml0cmQgdG9vPyAqLworCW1vdmVfZGV2aWNlX3RyZWUoKTsKIAogCURCRygiU2Nhbm5pbmcgQ1BVcyAuLi5cbiIpOwogCkBAIC0yMDUzLDI5ICsyMTA1LDQ2IEBACiAJcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBDT05GSUdfS0VYRUMKLS8qIFdlIG1heSBoYXZlIGFsbG9jYXRlZCB0aGUgZmxhdCBkZXZpY2UgdHJlZSBpbnNpZGUgdGhlIGNyYXNoIGtlcm5lbCByZWdpb24KLSAqIGluIHByb21faW5pdC4gSWYgc28gd2UgbmVlZCB0byBtb3ZlIGl0IG91dCBpbnRvIHJlZ3VsYXIgbWVtb3J5LiAqLwotdm9pZCBrZHVtcF9tb3ZlX2RldmljZV90cmVlKHZvaWQpCisKKy8qIEZpbmQgdGhlIGRldmljZSBub2RlIGZvciBhIGdpdmVuIGxvZ2ljYWwgY3B1IG51bWJlciwgYWxzbyByZXR1cm5zIHRoZSBjcHUKKyAqIGxvY2FsIHRocmVhZCBudW1iZXIgKGluZGV4IGluIGlibSxpbnRlcnJ1cHQtc2VydmVyI3MpIGlmIHJlbGV2YW50IGFuZAorICogYXNrZWQgZm9yIChub24gTlVMTCkKKyAqLworc3RydWN0IGRldmljZV9ub2RlICpvZl9nZXRfY3B1X25vZGUoaW50IGNwdSwgdW5zaWduZWQgaW50ICp0aHJlYWQpCiB7Ci0JdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwotCXN0cnVjdCBib290X3BhcmFtX2hlYWRlciAqbmV3OworCWludCBoYXJkaWQ7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKIAotCXN0YXJ0ID0gX19wYSgodW5zaWduZWQgbG9uZylpbml0aWFsX2Jvb3RfcGFyYW1zKTsKLQllbmQgPSBzdGFydCArIGluaXRpYWxfYm9vdF9wYXJhbXMtPnRvdGFsc2l6ZTsKKwloYXJkaWQgPSBnZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSk7CiAKLQlpZiAoZW5kIDwgY3Jhc2hrX3Jlcy5zdGFydCB8fCBzdGFydCA+IGNyYXNoa19yZXMuZW5kKQotCQlyZXR1cm47CisJZm9yX2VhY2hfbm9kZV9ieV90eXBlKG5wLCAiY3B1IikgeworCQl1MzIgKmludHNlcnY7CisJCXVuc2lnbmVkIGludCBwbGVuLCB0OwogCi0JbmV3ID0gKHN0cnVjdCBib290X3BhcmFtX2hlYWRlciopCi0JCV9fdmEobG1iX2FsbG9jKGluaXRpYWxfYm9vdF9wYXJhbXMtPnRvdGFsc2l6ZSwgUEFHRV9TSVpFKSk7Ci0KLQltZW1jcHkobmV3LCBpbml0aWFsX2Jvb3RfcGFyYW1zLCBpbml0aWFsX2Jvb3RfcGFyYW1zLT50b3RhbHNpemUpOwotCi0JaW5pdGlhbF9ib290X3BhcmFtcyA9IG5ldzsKLQotCURCRygiRmxhdCBkZXZpY2UgdHJlZSBibG9iIG1vdmVkIHRvICVwXG4iLCBpbml0aWFsX2Jvb3RfcGFyYW1zKTsKLQotCS8qIFhYWCBzaG91bGQgd2UgdW5yZXNlcnZlIHRoZSBvbGQgRFQ/ICovCisJCS8qIENoZWNrIGZvciBpYm0scHBjLWludGVycnVwdC1zZXJ2ZXIjcy4gSWYgaXQgZG9lc24ndCBleGlzdAorCQkgKiBmYWxsYmFjayB0byAicmVnIiBwcm9wZXJ0eSBhbmQgYXNzdW1lIG5vIHRocmVhZHMKKwkJICovCisJCWludHNlcnYgPSAodTMyICopZ2V0X3Byb3BlcnR5KG5wLCAiaWJtLHBwYy1pbnRlcnJ1cHQtc2VydmVyI3MiLAorCQkJCQkgICAgICAmcGxlbik7CisJCWlmIChpbnRzZXJ2ID09IE5VTEwpIHsKKwkJCXUzMiAqcmVnID0gKHUzMiAqKWdldF9wcm9wZXJ0eShucCwgInJlZyIsIE5VTEwpOworCQkJaWYgKHJlZyA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKCpyZWcgPT0gaGFyZGlkKSB7CisJCQkJaWYgKHRocmVhZCkKKwkJCQkJKnRocmVhZCA9IDA7CisJCQkJcmV0dXJuIG5wOworCQkJfQorCQl9IGVsc2UgeworCQkJcGxlbiAvPSBzaXplb2YodTMyKTsKKwkJCWZvciAodCA9IDA7IHQgPCBwbGVuOyB0KyspIHsKKwkJCQlpZiAoaGFyZGlkID09IGludHNlcnZbdF0pIHsKKwkJCQkJaWYgKHRocmVhZCkKKwkJCQkJCSp0aHJlYWQgPSB0OworCQkJCQlyZXR1cm4gbnA7CisJCQkJfQorCQkJfQorCQl9CisJfQorCXJldHVybiBOVUxMOwogfQotI2VuZGlmIC8qIENPTkZJR19LRVhFQyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMKaW5kZXggZjcwYmQwOS4uOGMyOGViMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21faW5pdC5jCkBAIC0xOTQsMTkgKzE5NCwxMiBAQAogCiBzdGF0aWMgY2hhciBfX2luaXRkYXRhIHByb21fY21kX2xpbmVbQ09NTUFORF9MSU5FX1NJWkVdOwogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIHByb21fbWVtb3J5X2xpbWl0OwotCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIGFsbG9jX3RvcDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgYWxsb2NfdG9wX2hpZ2g7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIGFsbG9jX2JvdHRvbTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgcm1vX3RvcDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgcmFtX3RvcDsKIAotI2lmZGVmIENPTkZJR19LRVhFQwotc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0ZGF0YSBwcm9tX2NyYXNoa19iYXNlOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0ZGF0YSBwcm9tX2NyYXNoa19zaXplOwotI2VuZGlmCi0KIHN0YXRpYyBzdHJ1Y3QgbWVtX21hcF9lbnRyeSBfX2luaXRkYXRhIG1lbV9yZXNlcnZlX21hcFtNRU1fUkVTRVJWRV9NQVBfU0laRV07CiBzdGF0aWMgaW50IF9faW5pdGRhdGEgbWVtX3Jlc2VydmVfY250OwogCkBAIC01NzQsNyArNTY3LDcgQEAKIAlpZiAoKGxvbmcpX3Byb20tPmNob3NlbiA+IDApCiAJCWwgPSBwcm9tX2dldHByb3AoX3Byb20tPmNob3NlbiwgImJvb3RhcmdzIiwgcCwgQ09NTUFORF9MSU5FX1NJWkUtMSk7CiAjaWZkZWYgQ09ORklHX0NNRExJTkUKLQlpZiAobCA9PSAwKSAvKiBkYmwgY2hlY2sgKi8KKwlpZiAobCA8PSAwIHx8IHBbMF0gPT0gJ1wwJykgLyogZGJsIGNoZWNrICovCiAJCXN0cmxjcHkoUkVMT0MocHJvbV9jbWRfbGluZSksCiAJCQlSRUxPQyhDT05GSUdfQ01ETElORSksIHNpemVvZihwcm9tX2NtZF9saW5lKSk7CiAjZW5kaWYgLyogQ09ORklHX0NNRExJTkUgKi8KQEAgLTU5Myw0NSArNTg2LDYgQEAKIAkJCVJFTE9DKGlvbW11X2ZvcmNlX29uKSA9IDE7CiAJfQogI2VuZGlmCi0KLQlvcHQgPSBzdHJzdHIoUkVMT0MocHJvbV9jbWRfbGluZSksIFJFTE9DKCJtZW09IikpOwotCWlmIChvcHQpIHsKLQkJb3B0ICs9IDQ7Ci0JCVJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSA9IHByb21fbWVtcGFyc2Uob3B0LCAoY29uc3QgY2hhciAqKikmb3B0KTsKLSNpZmRlZiBDT05GSUdfUFBDNjQKLQkJLyogQWxpZ24gdG8gMTYgTUIgPT0gc2l6ZSBvZiBwcGM2NCBsYXJnZSBwYWdlICovCi0JCVJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSA9IEFMSUdOKFJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSwgMHgxMDAwMDAwKTsKLSNlbmRpZgotCX0KLQotI2lmZGVmIENPTkZJR19LRVhFQwotCS8qCi0JICogY3Jhc2hrZXJuZWw9c2l6ZUBhZGRyIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gdG8gcmVzZXJ2ZSBmb3IKLQkgKiBjcmFzaCBrZXJuZWwuCi0JICovCi0Jb3B0ID0gc3Ryc3RyKFJFTE9DKHByb21fY21kX2xpbmUpLCBSRUxPQygiY3Jhc2hrZXJuZWw9IikpOwotCWlmIChvcHQpIHsKLQkJb3B0ICs9IDEyOwotCQlSRUxPQyhwcm9tX2NyYXNoa19zaXplKSA9IAotCQkJcHJvbV9tZW1wYXJzZShvcHQsIChjb25zdCBjaGFyICoqKSZvcHQpOwotCi0JCWlmIChBTElHTihSRUxPQyhwcm9tX2NyYXNoa19zaXplKSwgMHgxMDAwMDAwKSAhPQotCQkJUkVMT0MocHJvbV9jcmFzaGtfc2l6ZSkpIHsKLQkJCXByb21fcHJpbnRmKCJXYXJuaW5nOiBjcmFzaGtlcm5lbCBzaXplIGlzIG5vdCAiCi0JCQkJCSJhbGlnbmVkIHRvIDE2TUJcbiIpOwotCQl9Ci0KLQkJLyoKLQkJICogQXQgcHJlc2VudCwgdGhlIGNyYXNoIGtlcm5lbCBhbHdheXMgcnVuIGF0IDMyTUIuCi0JCSAqIEp1c3QgaWdub3JlIHdoYXRldmVyIHVzZXIgcGFzc2VkLgotCQkgKi8KLQkJUkVMT0MocHJvbV9jcmFzaGtfYmFzZSkgPSAweDIwMDAwMDA7Ci0JCWlmICgqb3B0ID09ICdAJykgewotCQkJcHJvbV9wcmludGYoIldhcm5pbmc6IFBQQzY0IGtkdW1wIGtlcm5lbCBhbHdheXMgcnVucyAiCi0JCQkJCSJhdCAzMiBNQlxuIik7Ci0JCX0KLQl9Ci0jZW5kaWYKIH0KIAogI2lmZGVmIENPTkZJR19QUENfUFNFUklFUwpAQCAtMTExNiwyOSArMTA3MCw2IEBACiAJfQogCiAJLyoKLQkgKiBJZiBwcm9tX21lbW9yeV9saW1pdCBpcyBzZXQgd2UgcmVkdWNlIHRoZSB1cHBlciBsaW1pdHMgKmV4Y2VwdCogZm9yCi0JICogYWxsb2NfdG9wX2hpZ2guIFRoaXMgbXVzdCBiZSB0aGUgcmVhbCB0b3Agb2YgUkFNIHNvIHdlIGNhbiBwdXQKLQkgKiBUQ0UncyB1cCB0aGVyZS4KLQkgKi8KLQotCVJFTE9DKGFsbG9jX3RvcF9oaWdoKSA9IFJFTE9DKHJhbV90b3ApOwotCi0JaWYgKFJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSkgewotCQlpZiAoUkVMT0MocHJvbV9tZW1vcnlfbGltaXQpIDw9IFJFTE9DKGFsbG9jX2JvdHRvbSkpIHsKLQkJCXByb21fcHJpbnRmKCJJZ25vcmluZyBtZW09JXggPD0gYWxsb2NfYm90dG9tLlxuIiwKLQkJCQlSRUxPQyhwcm9tX21lbW9yeV9saW1pdCkpOwotCQkJUkVMT0MocHJvbV9tZW1vcnlfbGltaXQpID0gMDsKLQkJfSBlbHNlIGlmIChSRUxPQyhwcm9tX21lbW9yeV9saW1pdCkgPj0gUkVMT0MocmFtX3RvcCkpIHsKLQkJCXByb21fcHJpbnRmKCJJZ25vcmluZyBtZW09JXggPj0gcmFtX3RvcC5cbiIsCi0JCQkJUkVMT0MocHJvbV9tZW1vcnlfbGltaXQpKTsKLQkJCVJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSA9IDA7Ci0JCX0gZWxzZSB7Ci0JCQlSRUxPQyhyYW1fdG9wKSA9IFJFTE9DKHByb21fbWVtb3J5X2xpbWl0KTsKLQkJCVJFTE9DKHJtb190b3ApID0gbWluKFJFTE9DKHJtb190b3ApLCBSRUxPQyhwcm9tX21lbW9yeV9saW1pdCkpOwotCQl9Ci0JfQotCi0JLyoKIAkgKiBTZXR1cCBvdXIgdG9wIGFsbG9jIHBvaW50LCB0aGF0IGlzIHRvcCBvZiBSTU8gb3IgdG9wIG9mCiAJICogc2VnbWVudCAwIHdoZW4gcnVubmluZyBub24tTFBBUi4KIAkgKiBTb21lIFJTNjQgbWFjaGluZXMgaGF2ZSBidWdneSBmaXJtd2FyZSB3aGVyZSBjbGFpbXMgdXAgYXQKQEAgLTExNTAsMjAgKzEwODEsMTQgQEAKIAkJUkVMT0Mocm1vX3RvcCkgPSBSRUxPQyhyYW1fdG9wKTsKIAlSRUxPQyhybW9fdG9wKSA9IG1pbigweDMwMDAwMDAwdWwsIFJFTE9DKHJtb190b3ApKTsKIAlSRUxPQyhhbGxvY190b3ApID0gUkVMT0Mocm1vX3RvcCk7CisJUkVMT0MoYWxsb2NfdG9wX2hpZ2gpID0gUkVMT0MocmFtX3RvcCk7CiAKIAlwcm9tX3ByaW50ZigibWVtb3J5IGxheW91dCBhdCBpbml0OlxuIik7Ci0JcHJvbV9wcmludGYoIiAgbWVtb3J5X2xpbWl0IDogJXggKDE2IE1CIGFsaWduZWQpXG4iLCBSRUxPQyhwcm9tX21lbW9yeV9saW1pdCkpOwogCXByb21fcHJpbnRmKCIgIGFsbG9jX2JvdHRvbSA6ICV4XG4iLCBSRUxPQyhhbGxvY19ib3R0b20pKTsKIAlwcm9tX3ByaW50ZigiICBhbGxvY190b3AgICAgOiAleFxuIiwgUkVMT0MoYWxsb2NfdG9wKSk7CiAJcHJvbV9wcmludGYoIiAgYWxsb2NfdG9wX2hpIDogJXhcbiIsIFJFTE9DKGFsbG9jX3RvcF9oaWdoKSk7CiAJcHJvbV9wcmludGYoIiAgcm1vX3RvcCAgICAgIDogJXhcbiIsIFJFTE9DKHJtb190b3ApKTsKIAlwcm9tX3ByaW50ZigiICByYW1fdG9wICAgICAgOiAleFxuIiwgUkVMT0MocmFtX3RvcCkpOwotI2lmZGVmIENPTkZJR19LRVhFQwotCWlmIChSRUxPQyhwcm9tX2NyYXNoa19iYXNlKSkgewotCQlwcm9tX3ByaW50ZigiICBjcmFzaGtfYmFzZSAgOiAleFxuIiwgIFJFTE9DKHByb21fY3Jhc2hrX2Jhc2UpKTsKLQkJcHJvbV9wcmludGYoIiAgY3Jhc2hrX3NpemUgIDogJXhcbiIsIFJFTE9DKHByb21fY3Jhc2hrX3NpemUpKTsKLQl9Ci0jZW5kaWYKIH0KIAogCkBAIC0xMzQ5LDE2ICsxMjc0LDEwIEBACiAKIAlyZXNlcnZlX21lbShsb2NhbF9hbGxvY19ib3R0b20sIGxvY2FsX2FsbG9jX3RvcCAtIGxvY2FsX2FsbG9jX2JvdHRvbSk7CiAKLQlpZiAoUkVMT0MocHJvbV9tZW1vcnlfbGltaXQpKSB7Ci0JCS8qCi0JCSAqIFdlIGFsaWduIHRoZSBzdGFydCB0byBhIDE2TUIgYm91bmRhcnkgc28gd2UgY2FuIG1hcAotCQkgKiB0aGUgVENFIGFyZWEgdXNpbmcgbGFyZ2UgcGFnZXMgaWYgcG9zc2libGUuCi0JCSAqIFRoZSBlbmQgc2hvdWxkIGJlIHRoZSB0b3Agb2YgUkFNIHNvIG5vIG5lZWQgdG8gYWxpZ24gaXQuCi0JCSAqLwotCQlSRUxPQyhwcm9tX3RjZV9hbGxvY19zdGFydCkgPSBfQUxJR05fRE9XTihsb2NhbF9hbGxvY19ib3R0b20sCi0JCQkJCQkJICAweDEwMDAwMDApOwotCQlSRUxPQyhwcm9tX3RjZV9hbGxvY19lbmQpID0gbG9jYWxfYWxsb2NfdG9wOwotCX0KKwkvKiBUaGVzZSBhcmUgb25seSByZWFsbHkgbmVlZGVkIGlmIHRoZXJlIGlzIGEgbWVtb3J5IGxpbWl0IGluCisJICogZWZmZWN0LCBidXQgd2UgZG9uJ3Qga25vdyBzbyBleHBvcnQgdGhlbSBhbHdheXMuICovCisJUkVMT0MocHJvbV90Y2VfYWxsb2Nfc3RhcnQpID0gbG9jYWxfYWxsb2NfYm90dG9tOworCVJFTE9DKHByb21fdGNlX2FsbG9jX2VuZCkgPSBsb2NhbF9hbGxvY190b3A7CiAKIAkvKiBGbGFnIHRoZSBmaXJzdCBpbnZhbGlkIGVudHJ5ICovCiAJcHJvbV9kZWJ1ZygiZW5kaW5nIHByb21faW5pdGlhbGl6ZV90Y2VfdGFibGVcbiIpOwpAQCAtMjA0MSwxMSArMTk2MCw3IEBACiAJLyogVmVyc2lvbiAxNiBpcyBub3QgYmFja3dhcmQgY29tcGF0aWJsZSAqLwogCWhkci0+bGFzdF9jb21wX3ZlcnNpb24gPSAweDEwOwogCi0JLyogUmVzZXJ2ZSB0aGUgd2hvbGUgdGhpbmcgYW5kIGNvcHkgdGhlIHJlc2VydmUgbWFwIGluLCB3ZQotCSAqIGFsc28gYnVtcCBtZW1fcmVzZXJ2ZV9jbnQgdG8gY2F1c2UgZnVydGhlciByZXNlcnZhdGlvbnMgdG8KLQkgKiBmYWlsIHNpbmNlIGl0J3MgdG9vIGxhdGUuCi0JICovCi0JcmVzZXJ2ZV9tZW0oUkVMT0MoZHRfaGVhZGVyX3N0YXJ0KSwgaGRyLT50b3RhbHNpemUpOworCS8qIENvcHkgdGhlIHJlc2VydmUgbWFwIGluICovCiAJbWVtY3B5KHJzdm1hcCwgUkVMT0MobWVtX3Jlc2VydmVfbWFwKSwgc2l6ZW9mKG1lbV9yZXNlcnZlX21hcCkpOwogCiAjaWZkZWYgREVCVUdfUFJPTQpAQCAtMjA1OCw2ICsxOTczLDkgQEAKIAkJCQkgICAgUkVMT0MobWVtX3Jlc2VydmVfbWFwKVtpXS5zaXplKTsKIAl9CiAjZW5kaWYKKwkvKiBCdW1wIG1lbV9yZXNlcnZlX2NudCB0byBjYXVzZSBmdXJ0aGVyIHJlc2VydmF0aW9ucyB0byBmYWlsCisJICogc2luY2UgaXQncyB0b28gbGF0ZS4KKwkgKi8KIAlSRUxPQyhtZW1fcmVzZXJ2ZV9jbnQpID0gTUVNX1JFU0VSVkVfTUFQX1NJWkU7CiAKIAlwcm9tX3ByaW50ZigiRGV2aWNlIHRyZWUgc3RyaW5ncyAweCV4IC0+IDB4JXhcbiIsCkBAIC0yMjgwLDEwICsyMTk4LDYgQEAKIAkgKi8KIAlwcm9tX2luaXRfbWVtKCk7CiAKLSNpZmRlZiBDT05GSUdfS0VYRUMKLQlpZiAoUkVMT0MocHJvbV9jcmFzaGtfYmFzZSkpCi0JCXJlc2VydmVfbWVtKFJFTE9DKHByb21fY3Jhc2hrX2Jhc2UpLCBSRUxPQyhwcm9tX2NyYXNoa19zaXplKSk7Ci0jZW5kaWYKIAkvKgogCSAqIERldGVybWluZSB3aGljaCBjcHUgaXMgYWN0dWFsbHkgcnVubmluZyByaWdodCBfbm93XwogCSAqLwpAQCAtMjMxNywxMCArMjIzMSw2IEBACiAJLyoKIAkgKiBGaWxsIGluIHNvbWUgaW5mb3MgZm9yIHVzZSBieSB0aGUga2VybmVsIGxhdGVyIG9uCiAJICovCi0JaWYgKFJFTE9DKHByb21fbWVtb3J5X2xpbWl0KSkKLQkJcHJvbV9zZXRwcm9wKF9wcm9tLT5jaG9zZW4sICIvY2hvc2VuIiwgImxpbnV4LG1lbW9yeS1saW1pdCIsCi0JCQkgICAgICZSRUxPQyhwcm9tX21lbW9yeV9saW1pdCksCi0JCQkgICAgIHNpemVvZihwcm9tX21lbW9yeV9saW1pdCkpOwogI2lmZGVmIENPTkZJR19QUEM2NAogCWlmIChSRUxPQyhwcGM2NF9pb21tdV9vZmYpKQogCQlwcm9tX3NldHByb3AoX3Byb20tPmNob3NlbiwgIi9jaG9zZW4iLCAibGludXgsaW9tbXUtb2ZmIiwKQEAgLTIzNDAsMTYgKzIyNTAsNiBAQAogCX0KICNlbmRpZgogCi0jaWZkZWYgQ09ORklHX0tFWEVDCi0JaWYgKFJFTE9DKHByb21fY3Jhc2hrX2Jhc2UpKSB7Ci0JCXByb21fc2V0cHJvcChfcHJvbS0+Y2hvc2VuLCAiL2Nob3NlbiIsICJsaW51eCxjcmFzaGtlcm5lbC1iYXNlIiwKLQkJCVBUUlJFTE9DKCZwcm9tX2NyYXNoa19iYXNlKSwKLQkJCXNpemVvZihSRUxPQyhwcm9tX2NyYXNoa19iYXNlKSkpOwotCQlwcm9tX3NldHByb3AoX3Byb20tPmNob3NlbiwgIi9jaG9zZW4iLCAibGludXgsY3Jhc2hrZXJuZWwtc2l6ZSIsCi0JCQlQVFJSRUxPQygmcHJvbV9jcmFzaGtfc2l6ZSksCi0JCQlzaXplb2YoUkVMT0MocHJvbV9jcmFzaGtfc2l6ZSkpKTsKLQl9Ci0jZW5kaWYKIAkvKgogCSAqIEZpeHVwIGFueSBrbm93biBidWdzIGluIHRoZSBkZXZpY2UtdHJlZQogCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX3BhcnNlLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21fcGFyc2UuYwppbmRleCAzOTM0YzIyLi40NWRmNDIwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21fcGFyc2UuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb21fcGFyc2UuYwpAQCAtNTQ4LDMgKzU0OCwyOCBAQAogCXJldHVybiBfX29mX2FkZHJlc3NfdG9fcmVzb3VyY2UoZGV2LCBhZGRycCwgc2l6ZSwgZmxhZ3MsIHIpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwob2ZfcGNpX2FkZHJlc3NfdG9fcmVzb3VyY2UpOworCit2b2lkIG9mX3BhcnNlX2RtYV93aW5kb3coc3RydWN0IGRldmljZV9ub2RlICpkbiwgdW5zaWduZWQgY2hhciAqZG1hX3dpbmRvd19wcm9wLAorCQl1bnNpZ25lZCBsb25nICpidXNubywgdW5zaWduZWQgbG9uZyAqcGh5cywgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwl1MzIgKmRtYV93aW5kb3csIGNlbGxzOworCXVuc2lnbmVkIGNoYXIgKnByb3A7CisKKwlkbWFfd2luZG93ID0gKHUzMiAqKWRtYV93aW5kb3dfcHJvcDsKKworCS8qIGJ1c25vIGlzIGFsd2F5cyBvbmUgY2VsbCAqLworCSpidXNubyA9ICooZG1hX3dpbmRvdysrKTsKKworCXByb3AgPSBnZXRfcHJvcGVydHkoZG4sICJpYm0sI2RtYS1hZGRyZXNzLWNlbGxzIiwgTlVMTCk7CisJaWYgKCFwcm9wKQorCQlwcm9wID0gZ2V0X3Byb3BlcnR5KGRuLCAiI2FkZHJlc3MtY2VsbHMiLCBOVUxMKTsKKworCWNlbGxzID0gcHJvcCA/ICoodTMyICopcHJvcCA6IHByb21fbl9hZGRyX2NlbGxzKGRuKTsKKwkqcGh5cyA9IG9mX3JlYWRfYWRkcihkbWFfd2luZG93LCBjZWxscyk7CisKKwlkbWFfd2luZG93ICs9IGNlbGxzOworCisJcHJvcCA9IGdldF9wcm9wZXJ0eShkbiwgImlibSwjZG1hLXNpemUtY2VsbHMiLCBOVUxMKTsKKwljZWxscyA9IHByb3AgPyAqKHUzMiAqKXByb3AgOiBwcm9tX25fc2l6ZV9jZWxscyhkbik7CisJKnNpemUgPSBvZl9yZWFkX2FkZHIoZG1hX3dpbmRvdywgY2VsbHMpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKaW5kZXggNGE2NzdkMS4uNTU2M2UyZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3B0cmFjZS5jCkBAIC00MDQsNyArNDA0LDYgQEAKIAkJcmV0ID0gcHRyYWNlX2RldGFjaChjaGlsZCwgZGF0YSk7CiAJCWJyZWFrOwogCi0jaWZkZWYgQ09ORklHX1BQQzY0CiAJY2FzZSBQUENfUFRSQUNFX0dFVFJFR1M6IHsgLyogR2V0IEdQUnMgMCAtIDMxLiAqLwogCQlpbnQgaTsKIAkJdW5zaWduZWQgbG9uZyAqcmVnID0gJigodW5zaWduZWQgbG9uZyAqKWNoaWxkLT50aHJlYWQucmVncylbMF07CkBAIC00NjgsNyArNDY3LDYgQEAKIAkJfQogCQlicmVhazsKIAl9Ci0jZW5kaWYgLyogQ09ORklHX1BQQzY0ICovCiAKICNpZmRlZiBDT05GSUdfQUxUSVZFQwogCWNhc2UgUFRSQUNFX0dFVFZSUkVHUzoKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhcy1ydGMuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhcy1ydGMuYwppbmRleCAzNGQwNzNmLi43NzU3OGMwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXMtcnRjLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzLXJ0Yy5jCkBAIC0xNCwxOSArMTQsMjAgQEAKIHVuc2lnbmVkIGxvbmcgX19pbml0IHJ0YXNfZ2V0X2Jvb3RfdGltZSh2b2lkKQogewogCWludCByZXRbOF07Ci0JaW50IGVycm9yLCB3YWl0X3RpbWU7CisJaW50IGVycm9yOworCXVuc2lnbmVkIGludCB3YWl0X3RpbWU7CiAJdTY0IG1heF93YWl0X3RiOwogCiAJbWF4X3dhaXRfdGIgPSBnZXRfdGIoKSArIHRiX3RpY2tzX3Blcl91c2VjICogMTAwMCAqIE1BWF9SVENfV0FJVDsKIAlkbyB7CiAJCWVycm9yID0gcnRhc19jYWxsKHJ0YXNfdG9rZW4oImdldC10aW1lLW9mLWRheSIpLCAwLCA4LCByZXQpOwotCQlpZiAoZXJyb3IgPT0gUlRBU19DTE9DS19CVVNZIHx8IHJ0YXNfaXNfZXh0ZW5kZWRfYnVzeShlcnJvcikpIHsKLQkJCXdhaXRfdGltZSA9IHJ0YXNfZXh0ZW5kZWRfYnVzeV9kZWxheV90aW1lKGVycm9yKTsKKworCQl3YWl0X3RpbWUgPSBydGFzX2J1c3lfZGVsYXlfdGltZShlcnJvcik7CisJCWlmICh3YWl0X3RpbWUpIHsKIAkJCS8qIFRoaXMgaXMgYm9vdCB0aW1lIHNvIHdlIHNwaW4uICovCiAJCQl1ZGVsYXkod2FpdF90aW1lKjEwMDApOwotCQkJZXJyb3IgPSBSVEFTX0NMT0NLX0JVU1k7CiAJCX0KLQl9IHdoaWxlIChlcnJvciA9PSBSVEFTX0NMT0NLX0JVU1kgJiYgKGdldF90YigpIDwgbWF4X3dhaXRfdGIpKTsKKwl9IHdoaWxlICh3YWl0X3RpbWUgJiYgKGdldF90YigpIDwgbWF4X3dhaXRfdGIpKTsKIAogCWlmIChlcnJvciAhPSAwICYmIHByaW50a19yYXRlbGltaXQoKSkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HICJlcnJvcjogcmVhZGluZyB0aGUgY2xvY2sgZmFpbGVkICglZClcbiIsCkBAIC00NCwyNCArNDUsMjUgQEAKIHZvaWQgcnRhc19nZXRfcnRjX3RpbWUoc3RydWN0IHJ0Y190aW1lICpydGNfdG0pCiB7CiAgICAgICAgIGludCByZXRbOF07Ci0JaW50IGVycm9yLCB3YWl0X3RpbWU7CisJaW50IGVycm9yOworCXVuc2lnbmVkIGludCB3YWl0X3RpbWU7CiAJdTY0IG1heF93YWl0X3RiOwogCiAJbWF4X3dhaXRfdGIgPSBnZXRfdGIoKSArIHRiX3RpY2tzX3Blcl91c2VjICogMTAwMCAqIE1BWF9SVENfV0FJVDsKIAlkbyB7CiAJCWVycm9yID0gcnRhc19jYWxsKHJ0YXNfdG9rZW4oImdldC10aW1lLW9mLWRheSIpLCAwLCA4LCByZXQpOwotCQlpZiAoZXJyb3IgPT0gUlRBU19DTE9DS19CVVNZIHx8IHJ0YXNfaXNfZXh0ZW5kZWRfYnVzeShlcnJvcikpIHsKKworCQl3YWl0X3RpbWUgPSBydGFzX2J1c3lfZGVsYXlfdGltZShlcnJvcik7CisJCWlmICh3YWl0X3RpbWUpIHsKIAkJCWlmIChpbl9pbnRlcnJ1cHQoKSAmJiBwcmludGtfcmF0ZWxpbWl0KCkpIHsKIAkJCQltZW1zZXQocnRjX3RtLCAwLCBzaXplb2Yoc3RydWN0IHJ0Y190aW1lKSk7CiAJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiZXJyb3I6IHJlYWRpbmcgY2xvY2siCiAJCQkJICAgICAgICIgd291bGQgZGVsYXkgaW50ZXJydXB0XG4iKTsKIAkJCQlyZXR1cm47CS8qIGRlbGF5IG5vdCBhbGxvd2VkICovCiAJCQl9Ci0JCQl3YWl0X3RpbWUgPSBydGFzX2V4dGVuZGVkX2J1c3lfZGVsYXlfdGltZShlcnJvcik7CiAJCQltc2xlZXAod2FpdF90aW1lKTsKLQkJCWVycm9yID0gUlRBU19DTE9DS19CVVNZOwogCQl9Ci0JfSB3aGlsZSAoZXJyb3IgPT0gUlRBU19DTE9DS19CVVNZICYmIChnZXRfdGIoKSA8IG1heF93YWl0X3RiKSk7CisJfSB3aGlsZSAod2FpdF90aW1lICYmIChnZXRfdGIoKSA8IG1heF93YWl0X3RiKSk7CiAKICAgICAgICAgaWYgKGVycm9yICE9IDAgJiYgcHJpbnRrX3JhdGVsaW1pdCgpKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiZXJyb3I6IHJlYWRpbmcgdGhlIGNsb2NrIGZhaWxlZCAoJWQpXG4iLApAQCAtODgsMTQgKzkwLDE0IEBACiAJCQkJICB0bS0+dG1feWVhciArIDE5MDAsIHRtLT50bV9tb24gKyAxLAogCQkJCSAgdG0tPnRtX21kYXksIHRtLT50bV9ob3VyLCB0bS0+dG1fbWluLAogCQkJCSAgdG0tPnRtX3NlYywgMCk7Ci0JCWlmIChlcnJvciA9PSBSVEFTX0NMT0NLX0JVU1kgfHwgcnRhc19pc19leHRlbmRlZF9idXN5KGVycm9yKSkgeworCisJCXdhaXRfdGltZSA9IHJ0YXNfYnVzeV9kZWxheV90aW1lKGVycm9yKTsKKwkJaWYgKHdhaXRfdGltZSkgewogCQkJaWYgKGluX2ludGVycnVwdCgpKQogCQkJCXJldHVybiAxOwkvKiBwcm9iYWJseSBkZWNyZW1lbnRlciAqLwotCQkJd2FpdF90aW1lID0gcnRhc19leHRlbmRlZF9idXN5X2RlbGF5X3RpbWUoZXJyb3IpOwogCQkJbXNsZWVwKHdhaXRfdGltZSk7Ci0JCQllcnJvciA9IFJUQVNfQ0xPQ0tfQlVTWTsKIAkJfQotCX0gd2hpbGUgKGVycm9yID09IFJUQVNfQ0xPQ0tfQlVTWSAmJiAoZ2V0X3RiKCkgPCBtYXhfd2FpdF90YikpOworCX0gd2hpbGUgKHdhaXRfdGltZSAmJiAoZ2V0X3RiKCkgPCBtYXhfd2FpdF90YikpOwogCiAgICAgICAgIGlmIChlcnJvciAhPSAwICYmIHByaW50a19yYXRlbGltaXQoKSkKICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJlcnJvcjogc2V0dGluZyB0aGUgY2xvY2sgZmFpbGVkICglZClcbiIsCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXMuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhcy5jCmluZGV4IDAxMTIzMTguLjE3ZGM3OTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhcy5jCkBAIC0zNzAsMjQgKzM3MCwzNiBAQAogCXJldHVybiByZXQ7CiB9CiAKLS8qIEdpdmVuIGFuIFJUQVMgc3RhdHVzIGNvZGUgb2YgOTkwbiBjb21wdXRlIHRoZSBoaW50ZWQgZGVsYXkgb2YgMTBebgotICogKGxhc3QgZGlnaXQpIG1pbGxpc2Vjb25kcy4gIEZvciBub3cgd2UgYm91bmQgYXQgbj01ICgxMDAgc2VjKS4KKy8qIEZvciBSVEFTX0JVU1kgKC0yKSwgZGVsYXkgZm9yIDEgbWlsbGlzZWNvbmQuICBGb3IgYW4gZXh0ZW5kZWQgYnVzeSBzdGF0dXMKKyAqIGNvZGUgb2YgOTkwbiwgcGVyZm9ybSB0aGUgaGludGVkIGRlbGF5IG9mIDEwXm4gKGxhc3QgZGlnaXQpIG1pbGxpc2Vjb25kcy4KICAqLwotdW5zaWduZWQgaW50IHJ0YXNfZXh0ZW5kZWRfYnVzeV9kZWxheV90aW1lKGludCBzdGF0dXMpCit1bnNpZ25lZCBpbnQgcnRhc19idXN5X2RlbGF5X3RpbWUoaW50IHN0YXR1cykKIHsKLQlpbnQgb3JkZXIgPSBzdGF0dXMgLSA5OTAwOwotCXVuc2lnbmVkIGxvbmcgbXM7CisJaW50IG9yZGVyOworCXVuc2lnbmVkIGludCBtcyA9IDA7CiAKLQlpZiAob3JkZXIgPCAwKQotCQlvcmRlciA9IDA7CS8qIFJUQyBkZXBlbmRzIG9uIHRoaXMgZm9yIC0yIGNsb2NrIGJ1c3kgKi8KLQllbHNlIGlmIChvcmRlciA+IDUpCi0JCW9yZGVyID0gNTsJLyogYm91bmQgKi8KKwlpZiAoc3RhdHVzID09IFJUQVNfQlVTWSkgeworCQltcyA9IDE7CisJfSBlbHNlIGlmIChzdGF0dXMgPj0gOTkwMCAmJiBzdGF0dXMgPD0gOTkwNSkgeworCQlvcmRlciA9IHN0YXR1cyAtIDk5MDA7CisJCWZvciAobXMgPSAxOyBvcmRlciA+IDA7IG9yZGVyLS0pCisJCQltcyAqPSAxMDsKKwl9CiAKLQkvKiBVc2UgbWljcm9zZWNvbmRzIGZvciByZWFzb25hYmxlIGFjY3VyYWN5ICovCi0JZm9yIChtcyA9IDE7IG9yZGVyID4gMDsgb3JkZXItLSkKLQkJbXMgKj0gMTA7CisJcmV0dXJuIG1zOworfQogCi0JcmV0dXJuIG1zOyAKKy8qIEZvciBhbiBSVEFTIGJ1c3kgc3RhdHVzIGNvZGUsIHBlcmZvcm0gdGhlIGhpbnRlZCBkZWxheS4gKi8KK3Vuc2lnbmVkIGludCBydGFzX2J1c3lfZGVsYXkoaW50IHN0YXR1cykKK3sKKwl1bnNpZ25lZCBpbnQgbXM7CisKKwltaWdodF9zbGVlcCgpOworCW1zID0gcnRhc19idXN5X2RlbGF5X3RpbWUoc3RhdHVzKTsKKwlpZiAobXMpCisJCW1zbGVlcChtcyk7CisKKwlyZXR1cm4gbXM7CiB9CiAKIGludCBydGFzX2Vycm9yX3JjKGludCBydGFzX3JjKQpAQCAtNDM4LDIyICs0NTAsMTQgQEAKIGludCBydGFzX3NldF9wb3dlcl9sZXZlbChpbnQgcG93ZXJkb21haW4sIGludCBsZXZlbCwgaW50ICpzZXRsZXZlbCkKIHsKIAlpbnQgdG9rZW4gPSBydGFzX3Rva2VuKCJzZXQtcG93ZXItbGV2ZWwiKTsKLQl1bnNpZ25lZCBpbnQgd2FpdF90aW1lOwogCWludCByYzsKIAogCWlmICh0b2tlbiA9PSBSVEFTX1VOS05PV05fU0VSVklDRSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQl3aGlsZSAoMSkgeworCWRvIHsKIAkJcmMgPSBydGFzX2NhbGwodG9rZW4sIDIsIDIsIHNldGxldmVsLCBwb3dlcmRvbWFpbiwgbGV2ZWwpOwotCQlpZiAocmMgPT0gUlRBU19CVVNZKQotCQkJdWRlbGF5KDEpOwotCQllbHNlIGlmIChydGFzX2lzX2V4dGVuZGVkX2J1c3kocmMpKSB7Ci0JCQl3YWl0X3RpbWUgPSBydGFzX2V4dGVuZGVkX2J1c3lfZGVsYXlfdGltZShyYyk7Ci0JCQl1ZGVsYXkod2FpdF90aW1lICogMTAwMCk7Ci0JCX0gZWxzZQotCQkJYnJlYWs7Ci0JfQorCX0gd2hpbGUgKHJ0YXNfYnVzeV9kZWxheShyYykpOwogCiAJaWYgKHJjIDwgMCkKIAkJcmV0dXJuIHJ0YXNfZXJyb3JfcmMocmMpOwpAQCAtNDYzLDIyICs0NjcsMTQgQEAKIGludCBydGFzX2dldF9zZW5zb3IoaW50IHNlbnNvciwgaW50IGluZGV4LCBpbnQgKnN0YXRlKQogewogCWludCB0b2tlbiA9IHJ0YXNfdG9rZW4oImdldC1zZW5zb3Itc3RhdGUiKTsKLQl1bnNpZ25lZCBpbnQgd2FpdF90aW1lOwogCWludCByYzsKIAogCWlmICh0b2tlbiA9PSBSVEFTX1VOS05PV05fU0VSVklDRSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQl3aGlsZSAoMSkgeworCWRvIHsKIAkJcmMgPSBydGFzX2NhbGwodG9rZW4sIDIsIDIsIHN0YXRlLCBzZW5zb3IsIGluZGV4KTsKLQkJaWYgKHJjID09IFJUQVNfQlVTWSkKLQkJCXVkZWxheSgxKTsKLQkJZWxzZSBpZiAocnRhc19pc19leHRlbmRlZF9idXN5KHJjKSkgewotCQkJd2FpdF90aW1lID0gcnRhc19leHRlbmRlZF9idXN5X2RlbGF5X3RpbWUocmMpOwotCQkJdWRlbGF5KHdhaXRfdGltZSAqIDEwMDApOwotCQl9IGVsc2UKLQkJCWJyZWFrOwotCX0KKwl9IHdoaWxlIChydGFzX2J1c3lfZGVsYXkocmMpKTsKIAogCWlmIChyYyA8IDApCiAJCXJldHVybiBydGFzX2Vycm9yX3JjKHJjKTsKQEAgLTQ4OCwyMyArNDg0LDE0IEBACiBpbnQgcnRhc19zZXRfaW5kaWNhdG9yKGludCBpbmRpY2F0b3IsIGludCBpbmRleCwgaW50IG5ld192YWx1ZSkKIHsKIAlpbnQgdG9rZW4gPSBydGFzX3Rva2VuKCJzZXQtaW5kaWNhdG9yIik7Ci0JdW5zaWduZWQgaW50IHdhaXRfdGltZTsKIAlpbnQgcmM7CiAKIAlpZiAodG9rZW4gPT0gUlRBU19VTktOT1dOX1NFUlZJQ0UpCiAJCXJldHVybiAtRU5PRU5UOwogCi0Jd2hpbGUgKDEpIHsKKwlkbyB7CiAJCXJjID0gcnRhc19jYWxsKHRva2VuLCAzLCAxLCBOVUxMLCBpbmRpY2F0b3IsIGluZGV4LCBuZXdfdmFsdWUpOwotCQlpZiAocmMgPT0gUlRBU19CVVNZKQotCQkJdWRlbGF5KDEpOwotCQllbHNlIGlmIChydGFzX2lzX2V4dGVuZGVkX2J1c3kocmMpKSB7Ci0JCQl3YWl0X3RpbWUgPSBydGFzX2V4dGVuZGVkX2J1c3lfZGVsYXlfdGltZShyYyk7Ci0JCQl1ZGVsYXkod2FpdF90aW1lICogMTAwMCk7Ci0JCX0KLQkJZWxzZQotCQkJYnJlYWs7Ci0JfQorCX0gd2hpbGUgKHJ0YXNfYnVzeV9kZWxheShyYykpOwogCiAJaWYgKHJjIDwgMCkKIAkJcmV0dXJuIHJ0YXNfZXJyb3JfcmMocmMpOwpAQCAtNTU1LDEzICs1NDIsMTEgQEAKIAlkbyB7CiAJCXN0YXR1cyA9IHJ0YXNfY2FsbChydGFzX3Rva2VuKCJpYm0sb3MtdGVybSIpLCAxLCAxLCBOVUxMLAogCQkJCSAgIF9fcGEocnRhc19vc190ZXJtX2J1ZikpOworCX0gd2hpbGUgKHJ0YXNfYnVzeV9kZWxheShzdGF0dXMpKTsKIAotCQlpZiAoc3RhdHVzID09IFJUQVNfQlVTWSkKLQkJCXVkZWxheSgxKTsKLQkJZWxzZSBpZiAoc3RhdHVzICE9IDApCi0JCQlwcmludGsoS0VSTl9FTUVSRyAiaWJtLG9zLXRlcm0gY2FsbCBmYWlsZWQgJWRcbiIsCisJaWYgKHN0YXR1cyAhPSAwKQorCQlwcmludGsoS0VSTl9FTUVSRyAiaWJtLG9zLXRlcm0gY2FsbCBmYWlsZWQgJWRcbiIsCiAJCQkgICAgICAgc3RhdHVzKTsKLQl9IHdoaWxlIChzdGF0dXMgPT0gUlRBU19CVVNZKTsKIH0KIAogc3RhdGljIGludCBpYm1fc3VzcGVuZF9tZV90b2tlbiA9IFJUQVNfVU5LTk9XTl9TRVJWSUNFOwpAQCAtNjA4LDkgKzU5MywzMSBAQAogc3RhdGljIGludCBydGFzX2libV9zdXNwZW5kX21lKHN0cnVjdCBydGFzX2FyZ3MgKmFyZ3MpCiB7CiAJaW50IGk7CisJbG9uZyBzdGF0ZTsKKwlsb25nIHJjOworCXVuc2lnbmVkIGxvbmcgZHVtbXk7CiAKIAlzdHJ1Y3QgcnRhc19zdXNwZW5kX21lX2RhdGEgZGF0YTsKIAorCS8qIE1ha2Ugc3VyZSB0aGUgc3RhdGUgaXMgdmFsaWQgKi8KKwlyYyA9IHBscGFyX2hjYWxsKEhfVkFTSV9TVEFURSwKKwkJCSAoKHU2NClhcmdzLT5hcmdzWzBdIDw8IDMyKSB8IGFyZ3MtPmFyZ3NbMV0sCisJCQkgMCwgMCwgMCwKKwkJCSAmc3RhdGUsICZkdW1teSwgJmR1bW15KTsKKworCWlmIChyYykgeworCQlwcmludGsoS0VSTl9FUlIgInJ0YXNfaWJtX3N1c3BlbmRfbWU6IHZhc2lfc3RhdGUgcmV0dXJuZWQgJWxkXG4iLHJjKTsKKwkJcmV0dXJuIHJjOworCX0gZWxzZSBpZiAoc3RhdGUgPT0gSF9WQVNJX0VOQUJMRUQpIHsKKwkJYXJncy0+YXJnc1thcmdzLT5uYXJnc10gPSBSVEFTX05PVF9TVVNQRU5EQUJMRTsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmIChzdGF0ZSAhPSBIX1ZBU0lfU1VTUEVORElORykgeworCQlwcmludGsoS0VSTl9FUlIgInJ0YXNfaWJtX3N1c3BlbmRfbWU6IHZhc2lfc3RhdGUgcmV0dXJuZWQgc3RhdGUgJWxkXG4iLAorCQkgICAgICAgc3RhdGUpOworCQlhcmdzLT5hcmdzW2FyZ3MtPm5hcmdzXSA9IC0xOworCQlyZXR1cm4gMDsKKwl9CisKIAlkYXRhLndhaXRpbmcgPSAxOwogCWRhdGEuYXJncyA9IGFyZ3M7CiAKQEAgLTc4OSw3ICs3OTYsOCBAQAogRVhQT1JUX1NZTUJPTChydGFzX2NhbGwpOwogRVhQT1JUX1NZTUJPTChydGFzX2RhdGFfYnVmKTsKIEVYUE9SVF9TWU1CT0wocnRhc19kYXRhX2J1Zl9sb2NrKTsKLUVYUE9SVF9TWU1CT0wocnRhc19leHRlbmRlZF9idXN5X2RlbGF5X3RpbWUpOworRVhQT1JUX1NZTUJPTChydGFzX2J1c3lfZGVsYXlfdGltZSk7CitFWFBPUlRfU1lNQk9MKHJ0YXNfYnVzeV9kZWxheSk7CiBFWFBPUlRfU1lNQk9MKHJ0YXNfZ2V0X3NlbnNvcik7CiBFWFBPUlRfU1lNQk9MKHJ0YXNfZ2V0X3Bvd2VyX2xldmVsKTsKIEVYUE9SVF9TWU1CT0wocnRhc19zZXRfcG93ZXJfbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzX2ZsYXNoLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNfZmxhc2guYwppbmRleCBhYWYzODRjLi4xNDQyYjYzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNfZmxhc2guYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNfZmxhc2guYwpAQCAtMzY1LDIwICszNjUsMTIgQEAKIAogc3RhdGljIHZvaWQgbWFuYWdlX2ZsYXNoKHN0cnVjdCBydGFzX21hbmFnZV9mbGFzaF90ICphcmdzX2J1ZikKIHsKLQl1bnNpZ25lZCBpbnQgd2FpdF90aW1lOwogCXMzMiByYzsKIAotCXdoaWxlICgxKSB7CisJZG8gewogCQlyYyA9IHJ0YXNfY2FsbChydGFzX3Rva2VuKCJpYm0sbWFuYWdlLWZsYXNoLWltYWdlIiksIDEsIAogCQkJICAgICAgIDEsIE5VTEwsIGFyZ3NfYnVmLT5vcCk7Ci0JCWlmIChyYyA9PSBSVEFTX1JDX0JVU1kpCi0JCQl1ZGVsYXkoMSk7Ci0JCWVsc2UgaWYgKHJ0YXNfaXNfZXh0ZW5kZWRfYnVzeShyYykpIHsKLQkJCXdhaXRfdGltZSA9IHJ0YXNfZXh0ZW5kZWRfYnVzeV9kZWxheV90aW1lKHJjKTsKLQkJCXVkZWxheSh3YWl0X3RpbWUgKiAxMDAwKTsKLQkJfSBlbHNlCi0JCQlicmVhazsKLQl9CisJfSB3aGlsZSAocnRhc19idXN5X2RlbGF5KHJjKSk7CiAKIAlhcmdzX2J1Zi0+c3RhdHVzID0gcmM7CiB9CkBAIC00NTEsMjcgKzQ0MywxOCBAQAogc3RhdGljIHZvaWQgdmFsaWRhdGVfZmxhc2goc3RydWN0IHJ0YXNfdmFsaWRhdGVfZmxhc2hfdCAqYXJnc19idWYpCiB7CiAJaW50IHRva2VuID0gcnRhc190b2tlbigiaWJtLHZhbGlkYXRlLWZsYXNoLWltYWdlIik7Ci0JdW5zaWduZWQgaW50IHdhaXRfdGltZTsKIAlpbnQgdXBkYXRlX3Jlc3VsdHM7CiAJczMyIHJjOwkKIAogCXJjID0gMDsKLQl3aGlsZSgxKSB7CisJZG8gewogCQlzcGluX2xvY2soJnJ0YXNfZGF0YV9idWZfbG9jayk7CiAJCW1lbWNweShydGFzX2RhdGFfYnVmLCBhcmdzX2J1Zi0+YnVmLCBWQUxJREFURV9CVUZfU0laRSk7CiAJCXJjID0gcnRhc19jYWxsKHRva2VuLCAyLCAyLCAmdXBkYXRlX3Jlc3VsdHMsIAogCQkJICAgICAgICh1MzIpIF9fcGEocnRhc19kYXRhX2J1ZiksIGFyZ3NfYnVmLT5idWZfc2l6ZSk7CiAJCW1lbWNweShhcmdzX2J1Zi0+YnVmLCBydGFzX2RhdGFfYnVmLCBWQUxJREFURV9CVUZfU0laRSk7CiAJCXNwaW5fdW5sb2NrKCZydGFzX2RhdGFfYnVmX2xvY2spOwotCQkJCi0JCWlmIChyYyA9PSBSVEFTX1JDX0JVU1kpCi0JCQl1ZGVsYXkoMSk7Ci0JCWVsc2UgaWYgKHJ0YXNfaXNfZXh0ZW5kZWRfYnVzeShyYykpIHsKLQkJCXdhaXRfdGltZSA9IHJ0YXNfZXh0ZW5kZWRfYnVzeV9kZWxheV90aW1lKHJjKTsKLQkJCXVkZWxheSh3YWl0X3RpbWUgKiAxMDAwKTsKLQkJfSBlbHNlCi0JCQlicmVhazsKLQl9CisJfSB3aGlsZSAocnRhc19idXN5X2RlbGF5KHJjKSk7CiAKIAlhcmdzX2J1Zi0+c3RhdHVzID0gcmM7CiAJYXJnc19idWYtPnVwZGF0ZV9yZXN1bHRzID0gdXBkYXRlX3Jlc3VsdHM7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNfcGNpLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNfcGNpLmMKaW5kZXggNTdiNTM5YS4uNmViN2U0OSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzX3BjaS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhc19wY2kuYwpAQCAtMzEzLDcgKzMxMyw5IEBACiAJZm9yIChub2RlID0gb2ZfZ2V0X25leHRfY2hpbGQocm9vdCwgTlVMTCk7CiAJICAgICBub2RlICE9IE5VTEw7CiAJICAgICBub2RlID0gb2ZfZ2V0X25leHRfY2hpbGQocm9vdCwgbm9kZSkpIHsKLQkJaWYgKG5vZGUtPnR5cGUgPT0gTlVMTCB8fCBzdHJjbXAobm9kZS0+dHlwZSwgInBjaSIpICE9IDApCisKKwkJaWYgKG5vZGUtPnR5cGUgPT0gTlVMTCB8fCAoc3RyY21wKG5vZGUtPnR5cGUsICJwY2kiKSAhPSAwICYmCisJCQkJCSAgIHN0cmNtcChub2RlLT50eXBlLCAicGNpZXgiKSAhPSAwKSkKIAkJCWNvbnRpbnVlOwogCiAJCXBoYiA9IHBjaWJpb3NfYWxsb2NfY29udHJvbGxlcihub2RlKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwLWNvbW1vbi5jCmluZGV4IDY4NGFiMWQuLmJkMzI4MTIzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwLWNvbW1vbi5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMKQEAgLTQ0Myw2ICs0NDMsNyBAQAogfQogI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KIAoraW50IF9faW5pdGRhdGEgZG9fZWFybHlfeG1vbjsKICNpZmRlZiBDT05GSUdfWE1PTgogc3RhdGljIGludCBfX2luaXQgZWFybHlfeG1vbihjaGFyICpwKQogewpAQCAtNDU2LDcgKzQ1Nyw3IEBACiAJCQlyZXR1cm4gMDsKIAl9CiAJeG1vbl9pbml0KDEpOwotCWRlYnVnZ2VyKE5VTEwpOworCWRvX2Vhcmx5X3htb24gPSAxOwogCiAJcmV0dXJuIDA7CiB9CkBAIC01MjQsMyArNTI1LDIwIEBACiAJcmV0dXJuIHBwY19tZC5jaGVja19sZWdhY3lfaW9wb3J0KGJhc2VfcG9ydCk7CiB9CiBFWFBPUlRfU1lNQk9MKGNoZWNrX2xlZ2FjeV9pb3BvcnQpOworCitzdGF0aWMgaW50IHBwY19wYW5pY19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKK3sKKwlwcGNfbWQucGFuaWMocHRyKTsgIC8qIE1heSBub3QgcmV0dXJuICovCisJcmV0dXJuIE5PVElGWV9ET05FOworfQorCitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBwY19wYW5pY19ibG9jayA9IHsKKwkubm90aWZpZXJfY2FsbCA9IHBwY19wYW5pY19ldmVudCwKKwkucHJpb3JpdHkgPSBJTlRfTUlOIC8qIG1heSBub3QgcmV0dXJuOyBtdXN0IGJlIGRvbmUgbGFzdCAqLworfTsKKwordm9pZCBfX2luaXQgc2V0dXBfcGFuaWModm9pZCkKK3sKKwlhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJnBhbmljX25vdGlmaWVyX2xpc3QsICZwcGNfcGFuaWNfYmxvY2spOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cC5oIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cC5oCmluZGV4IDJlYmJhNzUuLjRjNjdhZDcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAuaAorKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwLmgKQEAgLTIsNSArMiw4IEBACiAjZGVmaW5lIF9QT1dFUlBDX0tFUk5FTF9TRVRVUF9ICiAKIHZvaWQgY2hlY2tfZm9yX2luaXRyZCh2b2lkKTsKK3ZvaWQgZG9faW5pdF9ib290bWVtKHZvaWQpOwordm9pZCBzZXR1cF9wYW5pYyh2b2lkKTsKK2V4dGVybiBpbnQgZG9fZWFybHlfeG1vbjsKIAogI2VuZGlmIC8qIF9QT1dFUlBDX0tFUk5FTF9TRVRVUF9IICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzMyLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzMyLmMKaW5kZXggNjlhYzI1Ny4uZTVhNDQ4MSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF8zMi5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfMzIuYwpAQCAtMTMxLDEyICsxMzEsNiBAQAogCS8qIERvIHNvbWUgZWFybHkgaW5pdGlhbGl6YXRpb24gYmFzZWQgb24gdGhlIGZsYXQgZGV2aWNlIHRyZWUgKi8KIAllYXJseV9pbml0X2RldnRyZWUoX192YShkdF9wdHIpKTsKIAotCS8qIENoZWNrIGRlZmF1bHQgY29tbWFuZCBsaW5lICovCi0jaWZkZWYgQ09ORklHX0NNRExJTkUKLQlpZiAoY21kX2xpbmVbMF0gPT0gMCkKLQkJc3RybGNweShjbWRfbGluZSwgQ09ORklHX0NNRExJTkUsIHNpemVvZihjbWRfbGluZSkpOwotI2VuZGlmIC8qIENPTkZJR19DTURMSU5FICovCi0KIAlwcm9iZV9tYWNoaW5lKCk7CiAKICNpZmRlZiBDT05GSUdfNnh4CkBAIC0yMzUsNyArMjI5LDcgQEAKIC8qIFdhcm5pbmcsIElPIGJhc2UgaXMgbm90IHlldCBpbml0ZWQgKi8KIHZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKIHsKLQlleHRlcm4gdm9pZCBkb19pbml0X2Jvb3RtZW0odm9pZCk7CisJKmNtZGxpbmVfcCA9IGNtZF9saW5lOwogCiAJLyogc28gdWRlbGF5IGRvZXMgc29tZXRoaW5nIHNlbnNpYmxlLCBhc3N1bWUgPD0gMTAwMCBib2dvbWlwcyAqLwogCWxvb3BzX3Blcl9qaWZmeSA9IDUwMDAwMDAwMCAvIEhaOwpAQCAtMjg1LDE2ICsyNzksMTYgQEAKIAkvKiByZWJvb3Qgb24gcGFuaWMgKi8KIAlwYW5pY190aW1lb3V0ID0gMTgwOwogCisJaWYgKHBwY19tZC5wYW5pYykKKwkJc2V0dXBfcGFuaWMoKTsKKwogCWluaXRfbW0uc3RhcnRfY29kZSA9IFBBR0VfT0ZGU0VUOwogCWluaXRfbW0uZW5kX2NvZGUgPSAodW5zaWduZWQgbG9uZykgX2V0ZXh0OwogCWluaXRfbW0uZW5kX2RhdGEgPSAodW5zaWduZWQgbG9uZykgX2VkYXRhOwogCWluaXRfbW0uYnJrID0ga2xpbWl0OwogCi0JLyogU2F2ZSB1bnBhcnNlZCBjb21tYW5kIGxpbmUgY29weSBmb3IgL3Byb2MvY21kbGluZSAqLwotCXN0cmxjcHkoc2F2ZWRfY29tbWFuZF9saW5lLCBjbWRfbGluZSwgQ09NTUFORF9MSU5FX1NJWkUpOwotCSpjbWRsaW5lX3AgPSBjbWRfbGluZTsKLQotCXBhcnNlX2Vhcmx5X3BhcmFtKCk7CisJaWYgKGRvX2Vhcmx5X3htb24pCisJCWRlYnVnZ2VyKE5VTEwpOwogCiAJLyogc2V0IHVwIHRoZSBib290bWVtIHN0dWZmIHdpdGggYXZhaWxhYmxlIG1lbW9yeSAqLwogCWRvX2luaXRfYm9vdG1lbSgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jCmluZGV4IDQ0NjdjNDkuLjc4ZjNhNWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMKQEAgLTEwMCwxMiArMTAwLDYgQEAKICNlbmRpZiAvKiBDT05GSUdfTUFHSUNfU1lTUlEgKi8KIAogCi1zdGF0aWMgaW50IHBwYzY0X3BhbmljX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwotc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwcGM2NF9wYW5pY19ibG9jayA9IHsKLQkubm90aWZpZXJfY2FsbCA9IHBwYzY0X3BhbmljX2V2ZW50LAotCS5wcmlvcml0eSA9IElOVF9NSU4gLyogbWF5IG5vdCByZXR1cm47IG11c3QgYmUgZG9uZSBsYXN0ICovCi19OwotCiAjaWZkZWYgQ09ORklHX1NNUAogCiBzdGF0aWMgaW50IHNtdF9lbmFibGVkX2NtZGxpbmU7CkBAIC0xOTksOSArMTkzLDcgQEAKIAkvKiBQcm9iZSB0aGUgbWFjaGluZSB0eXBlICovCiAJcHJvYmVfbWFjaGluZSgpOwogCi0jaWZkZWYgQ09ORklHX0NSQVNIX0RVTVAKLQlrZHVtcF9zZXR1cCgpOwotI2VuZGlmCisJc2V0dXBfa2R1bXBfdHJhbXBvbGluZSgpOwogCiAJREJHKCJGb3VuZCwgSW5pdGlhbGl6aW5nIG1lbW9yeSBtYW5hZ2VtZW50Li4uXG4iKTsKIApAQCAtMzUzLDkgKzM0NSw2IEBACiB7CiAJREJHKCIgLT4gc2V0dXBfc3lzdGVtKClcbiIpOwogCi0jaWZkZWYgQ09ORklHX0tFWEVDCi0Ja2R1bXBfbW92ZV9kZXZpY2VfdHJlZSgpOwotI2VuZGlmCiAJLyoKIAkgKiBVbmZsYXR0ZW4gdGhlIGRldmljZS10cmVlIHBhc3NlZCBieSBwcm9tX2luaXQgb3Iga2V4ZWMKIAkgKi8KQEAgLTQyMCwxMCArNDA5LDggQEAKIAkgKi8KIAlyZWdpc3Rlcl9lYXJseV91ZGJnX2NvbnNvbGUoKTsKIAotCS8qIFNhdmUgdW5wYXJzZWQgY29tbWFuZCBsaW5lIGNvcHkgZm9yIC9wcm9jL2NtZGxpbmUgKi8KLQlzdHJsY3B5KHNhdmVkX2NvbW1hbmRfbGluZSwgY21kX2xpbmUsIENPTU1BTkRfTElORV9TSVpFKTsKLQotCXBhcnNlX2Vhcmx5X3BhcmFtKCk7CisJaWYgKGRvX2Vhcmx5X3htb24pCisJCWRlYnVnZ2VyKE5VTEwpOwogCiAJY2hlY2tfc210X2VuYWJsZWQoKTsKIAlzbXBfc2V0dXBfY3B1X21hcHMoKTsKQEAgLTQ1NiwxMyArNDQzLDYgQEAKIAlEQkcoIiA8LSBzZXR1cF9zeXN0ZW0oKVxuIik7CiB9CiAKLXN0YXRpYyBpbnQgcHBjNjRfcGFuaWNfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpCi17Ci0JcHBjX21kLnBhbmljKChjaGFyICopcHRyKTsgIC8qIE1heSBub3QgcmV0dXJuICovCi0JcmV0dXJuIE5PVElGWV9ET05FOwotfQotCiAjaWZkZWYgQ09ORklHX0lSUVNUQUNLUwogc3RhdGljIHZvaWQgX19pbml0IGlycXN0YWNrX2Vhcmx5X2luaXQodm9pZCkKIHsKQEAgLTUxNyw4ICs0OTcsNiBAQAogICovCiB2b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNoYXIgKipjbWRsaW5lX3ApCiB7Ci0JZXh0ZXJuIHZvaWQgZG9faW5pdF9ib290bWVtKHZvaWQpOwotCiAJcHBjNjRfYm9vdF9tc2coMHgxMiwgIlNldHVwIEFyY2giKTsKIAogCSpjbWRsaW5lX3AgPSBjbWRfbGluZTsKQEAgLTUzNSw4ICs1MTMsNyBAQAogCXBhbmljX3RpbWVvdXQgPSAxODA7CiAKIAlpZiAocHBjX21kLnBhbmljKQotCQlhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJnBhbmljX25vdGlmaWVyX2xpc3QsCi0JCQkJJnBwYzY0X3BhbmljX2Jsb2NrKTsKKwkJc2V0dXBfcGFuaWMoKTsKIAogCWluaXRfbW0uc3RhcnRfY29kZSA9IFBBR0VfT0ZGU0VUOwogCWluaXRfbW0uZW5kX2NvZGUgPSAodW5zaWduZWQgbG9uZykgX2V0ZXh0OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zaWduYWxfMzIuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2lnbmFsXzMyLmMKaW5kZXggOGZkZWNhMi4uZDczYjI1ZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zaWduYWxfMzIuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NpZ25hbF8zMi5jCkBAIC00MTksOSArNDE5LDcgQEAKIHsKIAlsb25nIGVycjsKIAl1bnNpZ25lZCBpbnQgc2F2ZV9yMiA9IDA7Ci0jaWYgZGVmaW5lZChDT05GSUdfQUxUSVZFQykgfHwgZGVmaW5lZChDT05GSUdfU1BFKQogCXVuc2lnbmVkIGxvbmcgbXNyOwotI2VuZGlmCiAKIAkvKgogCSAqIHJlc3RvcmUgZ2VuZXJhbCByZWdpc3RlcnMgYnV0IG5vdCBpbmNsdWRpbmcgTVNSIG9yIFNPRlRFLiBBbHNvCkBAIC00MzAsMTEgKzQyOCwxNiBAQAogCWlmICghc2lnKQogCQlzYXZlX3IyID0gKHVuc2lnbmVkIGludClyZWdzLT5ncHJbMl07CiAJZXJyID0gcmVzdG9yZV9nZW5lcmFsX3JlZ3MocmVncywgc3IpOworCWVyciB8PSBfX2dldF91c2VyKG1zciwgJnNyLT5tY19ncmVnc1tQVF9NU1JdKTsKIAlpZiAoIXNpZykKIAkJcmVncy0+Z3ByWzJdID0gKHVuc2lnbmVkIGxvbmcpIHNhdmVfcjI7CiAJaWYgKGVycikKIAkJcmV0dXJuIDE7CiAKKwkvKiBpZiBkb2luZyBzaWduYWwgcmV0dXJuLCByZXN0b3JlIHRoZSBwcmV2aW91cyBsaXR0bGUtZW5kaWFuIG1vZGUgKi8KKwlpZiAoc2lnKQorCQlyZWdzLT5tc3IgPSAocmVncy0+bXNyICYgfk1TUl9MRSkgfCAobXNyICYgTVNSX0xFKTsKKwogCS8qCiAJICogRG8gdGhpcyBiZWZvcmUgdXBkYXRpbmcgdGhlIHRocmVhZCBzdGF0ZSBpbgogCSAqIGN1cnJlbnQtPnRocmVhZC5mcHIvdnIvZXZyLiAgVGhhdCB3YXksIGlmIHdlIGdldCBwcmVlbXB0ZWQKQEAgLTQ1NSw3ICs0NTgsNyBAQAogCS8qIGZvcmNlIHRoZSBwcm9jZXNzIHRvIHJlbG9hZCB0aGUgYWx0aXZlYyByZWdpc3RlcnMgZnJvbQogCSAgIGN1cnJlbnQtPnRocmVhZCB3aGVuIGl0IG5leHQgZG9lcyBhbHRpdmVjIGluc3RydWN0aW9ucyAqLwogCXJlZ3MtPm1zciAmPSB+TVNSX1ZFQzsKLQlpZiAoIV9fZ2V0X3VzZXIobXNyLCAmc3ItPm1jX2dyZWdzW1BUX01TUl0pICYmIChtc3IgJiBNU1JfVkVDKSAhPSAwKSB7CisJaWYgKG1zciAmIE1TUl9WRUMpIHsKIAkJLyogcmVzdG9yZSBhbHRpdmVjIHJlZ2lzdGVycyBmcm9tIHRoZSBzdGFjayAqLwogCQlpZiAoX19jb3B5X2Zyb21fdXNlcihjdXJyZW50LT50aHJlYWQudnIsICZzci0+bWNfdnJlZ3MsCiAJCQkJICAgICBzaXplb2Yoc3ItPm1jX3ZyZWdzKSkpCkBAIC00NzIsNyArNDc1LDcgQEAKIAkvKiBmb3JjZSB0aGUgcHJvY2VzcyB0byByZWxvYWQgdGhlIHNwZSByZWdpc3RlcnMgZnJvbQogCSAgIGN1cnJlbnQtPnRocmVhZCB3aGVuIGl0IG5leHQgZG9lcyBzcGUgaW5zdHJ1Y3Rpb25zICovCiAJcmVncy0+bXNyICY9IH5NU1JfU1BFOwotCWlmICghX19nZXRfdXNlcihtc3IsICZzci0+bWNfZ3JlZ3NbUFRfTVNSXSkgJiYgKG1zciAmIE1TUl9TUEUpICE9IDApIHsKKwlpZiAobXNyICYgTVNSX1NQRSkgewogCQkvKiByZXN0b3JlIHNwZSByZWdpc3RlcnMgZnJvbSB0aGUgc3RhY2sgKi8KIAkJaWYgKF9fY29weV9mcm9tX3VzZXIoY3VycmVudC0+dGhyZWFkLmV2ciwgJnNyLT5tY192cmVncywKIAkJCQkgICAgIEVMRl9ORVZSUkVHICogc2l6ZW9mKHUzMikpKQpAQCAtNzU3LDEwICs3NjAsMTAgQEAKIAogCS8qIFNhdmUgdXNlciByZWdpc3RlcnMgb24gdGhlIHN0YWNrICovCiAJZnJhbWUgPSAmcnRfc2YtPnVjLnVjX21jb250ZXh0OwotCWlmICh2ZHNvMzJfcnRfc2lndHJhbXAgJiYgY3VycmVudC0+dGhyZWFkLnZkc29fYmFzZSkgeworCWlmICh2ZHNvMzJfcnRfc2lndHJhbXAgJiYgY3VycmVudC0+bW0tPmNvbnRleHQudmRzb19iYXNlKSB7CiAJCWlmIChzYXZlX3VzZXJfcmVncyhyZWdzLCBmcmFtZSwgMCkpCiAJCQlnb3RvIGJhZGZyYW1lOwotCQlyZWdzLT5saW5rID0gY3VycmVudC0+dGhyZWFkLnZkc29fYmFzZSArIHZkc28zMl9ydF9zaWd0cmFtcDsKKwkJcmVncy0+bGluayA9IGN1cnJlbnQtPm1tLT5jb250ZXh0LnZkc29fYmFzZSArIHZkc28zMl9ydF9zaWd0cmFtcDsKIAl9IGVsc2UgewogCQlpZiAoc2F2ZV91c2VyX3JlZ3MocmVncywgZnJhbWUsIF9fTlJfcnRfc2lncmV0dXJuKSkKIAkJCWdvdG8gYmFkZnJhbWU7CkBAIC03NzcsNiArNzgwLDggQEAKIAlyZWdzLT5ncHJbNV0gPSAodW5zaWduZWQgbG9uZykgJnJ0X3NmLT51YzsKIAlyZWdzLT5ncHJbNl0gPSAodW5zaWduZWQgbG9uZykgcnRfc2Y7CiAJcmVncy0+bmlwID0gKHVuc2lnbmVkIGxvbmcpIGthLT5zYS5zYV9oYW5kbGVyOworCS8qIGVudGVyIHRoZSBzaWduYWwgaGFuZGxlciBpbiBiaWctZW5kaWFuIG1vZGUgKi8KKwlyZWdzLT5tc3IgJj0gfk1TUl9MRTsKIAlyZWdzLT50cmFwID0gMDsKIAlyZXR1cm4gMTsKIApAQCAtMTAzOCwxMCArMTA0MywxMCBAQAogCSAgICB8fCBfX3B1dF91c2VyKHNpZywgJnNjLT5zaWduYWwpKQogCQlnb3RvIGJhZGZyYW1lOwogCi0JaWYgKHZkc28zMl9zaWd0cmFtcCAmJiBjdXJyZW50LT50aHJlYWQudmRzb19iYXNlKSB7CisJaWYgKHZkc28zMl9zaWd0cmFtcCAmJiBjdXJyZW50LT5tbS0+Y29udGV4dC52ZHNvX2Jhc2UpIHsKIAkJaWYgKHNhdmVfdXNlcl9yZWdzKHJlZ3MsICZmcmFtZS0+bWN0eCwgMCkpCiAJCQlnb3RvIGJhZGZyYW1lOwotCQlyZWdzLT5saW5rID0gY3VycmVudC0+dGhyZWFkLnZkc29fYmFzZSArIHZkc28zMl9zaWd0cmFtcDsKKwkJcmVncy0+bGluayA9IGN1cnJlbnQtPm1tLT5jb250ZXh0LnZkc29fYmFzZSArIHZkc28zMl9zaWd0cmFtcDsKIAl9IGVsc2UgewogCQlpZiAoc2F2ZV91c2VyX3JlZ3MocmVncywgJmZyYW1lLT5tY3R4LCBfX05SX3NpZ3JldHVybikpCiAJCQlnb3RvIGJhZGZyYW1lOwpAQCAtMTA1Niw2ICsxMDYxLDggQEAKIAlyZWdzLT5ncHJbM10gPSBzaWc7CiAJcmVncy0+Z3ByWzRdID0gKHVuc2lnbmVkIGxvbmcpIHNjOwogCXJlZ3MtPm5pcCA9ICh1bnNpZ25lZCBsb25nKSBrYS0+c2Euc2FfaGFuZGxlcjsKKwkvKiBlbnRlciB0aGUgc2lnbmFsIGhhbmRsZXIgaW4gYmlnLWVuZGlhbiBtb2RlICovCisJcmVncy0+bXNyICY9IH5NU1JfTEU7CiAJcmVncy0+dHJhcCA9IDA7CiAKIAlyZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2lnbmFsXzY0LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NpZ25hbF82NC5jCmluZGV4IGMyZGI2NDIuLjZlNzVkN2EgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2lnbmFsXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zaWduYWxfNjQuYwpAQCAtMTQxLDkgKzE0MSw3IEBACiAJdW5zaWduZWQgbG9uZyBlcnIgPSAwOwogCXVuc2lnbmVkIGxvbmcgc2F2ZV9yMTMgPSAwOwogCWVsZl9ncmVnX3QgKmdyZWdzID0gKGVsZl9ncmVnX3QgKilyZWdzOwotI2lmZGVmIENPTkZJR19BTFRJVkVDCiAJdW5zaWduZWQgbG9uZyBtc3I7Ci0jZW5kaWYKIAlpbnQgaTsKIAogCS8qIElmIHRoaXMgaXMgbm90IGEgc2lnbmFsIHJldHVybiwgd2UgcHJlc2VydmUgdGhlIFRMUyBpbiByMTMgKi8KQEAgLTE1NCw3ICsxNTIsMTIgQEAKIAllcnIgfD0gX19jb3B5X2Zyb21fdXNlcihyZWdzLCAmc2MtPmdwX3JlZ3MsCiAJCQkJUFRfTVNSKnNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAKLQkvKiBza2lwIE1TUiBhbmQgU09GVEUgKi8KKwkvKiBnZXQgTVNSIHNlcGFyYXRlbHksIHRyYW5zZmVyIHRoZSBMRSBiaXQgaWYgZG9pbmcgc2lnbmFsIHJldHVybiAqLworCWVyciB8PSBfX2dldF91c2VyKG1zciwgJnNjLT5ncF9yZWdzW1BUX01TUl0pOworCWlmIChzaWcpCisJCXJlZ3MtPm1zciA9IChyZWdzLT5tc3IgJiB+TVNSX0xFKSB8IChtc3IgJiBNU1JfTEUpOworCisJLyogc2tpcCBTT0ZURSAqLwogCWZvciAoaSA9IFBUX01TUisxOyBpIDw9IFBUX1JFU1VMVDsgaSsrKSB7CiAJCWlmIChpID09IFBUX1NPRlRFKQogCQkJY29udGludWU7CkBAIC0xNzksNyArMTgyLDYgQEAKIAogI2lmZGVmIENPTkZJR19BTFRJVkVDCiAJZXJyIHw9IF9fZ2V0X3VzZXIodl9yZWdzLCAmc2MtPnZfcmVncyk7Ci0JZXJyIHw9IF9fZ2V0X3VzZXIobXNyLCAmc2MtPmdwX3JlZ3NbUFRfTVNSXSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAlpZiAodl9yZWdzICYmICFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIHZfcmVncywgMzQgKiBzaXplb2YodmVjdG9yMTI4KSkpCkBAIC0zOTYsOCArMzk4LDggQEAKIAljdXJyZW50LT50aHJlYWQuZnBzY3IudmFsID0gMDsKIAogCS8qIFNldCB1cCB0byByZXR1cm4gZnJvbSB1c2Vyc3BhY2UuICovCi0JaWYgKHZkc282NF9ydF9zaWd0cmFtcCAmJiBjdXJyZW50LT50aHJlYWQudmRzb19iYXNlKSB7Ci0JCXJlZ3MtPmxpbmsgPSBjdXJyZW50LT50aHJlYWQudmRzb19iYXNlICsgdmRzbzY0X3J0X3NpZ3RyYW1wOworCWlmICh2ZHNvNjRfcnRfc2lndHJhbXAgJiYgY3VycmVudC0+bW0tPmNvbnRleHQudmRzb19iYXNlKSB7CisJCXJlZ3MtPmxpbmsgPSBjdXJyZW50LT5tbS0+Y29udGV4dC52ZHNvX2Jhc2UgKyB2ZHNvNjRfcnRfc2lndHJhbXA7CiAJfSBlbHNlIHsKIAkJZXJyIHw9IHNldHVwX3RyYW1wb2xpbmUoX19OUl9ydF9zaWdyZXR1cm4sICZmcmFtZS0+dHJhbXBbMF0pOwogCQlpZiAoZXJyKQpAQCAtNDEyLDYgKzQxNCw4IEBACiAKIAkvKiBTZXQgdXAgInJlZ3MiIHNvIHdlICJyZXR1cm4iIHRvIHRoZSBzaWduYWwgaGFuZGxlci4gKi8KIAllcnIgfD0gZ2V0X3VzZXIocmVncy0+bmlwLCAmZnVuY3RfZGVzY19wdHItPmVudHJ5KTsKKwkvKiBlbnRlciB0aGUgc2lnbmFsIGhhbmRsZXIgaW4gYmlnLWVuZGlhbiBtb2RlICovCisJcmVncy0+bXNyICY9IH5NU1JfTEU7CiAJcmVncy0+Z3ByWzFdID0gbmV3c3A7CiAJZXJyIHw9IGdldF91c2VyKHJlZ3MtPmdwclsyXSwgJmZ1bmN0X2Rlc2NfcHRyLT50b2MpOwogCXJlZ3MtPmdwclszXSA9IHNpZ25yOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zbXAuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc21wLmMKaW5kZXggNTMwZjdkYi4uYzVkMTc5ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zbXAuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NtcC5jCkBAIC00OTIsNyArNDkyLDcgQEAKIAkgKiAtLSBDb3J0CiAJICovCiAJaWYgKHN5c3RlbV9zdGF0ZSA8IFNZU1RFTV9SVU5OSU5HKQotCQlmb3IgKGMgPSA1MDAwOyBjICYmICFjcHVfY2FsbGluX21hcFtjcHVdOyBjLS0pCisJCWZvciAoYyA9IDUwMDAwOyBjICYmICFjcHVfY2FsbGluX21hcFtjcHVdOyBjLS0pCiAJCQl1ZGVsYXkoMTAwKTsKICNpZmRlZiBDT05GSUdfSE9UUExVR19DUFUKIAllbHNlCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3N5c3RibC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXN0YmwuUwppbmRleCAyNmVkMWY1Li5lZTc1Y2NmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3N5c3RibC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3lzdGJsLlMKQEAgLTMyLDYgKzMyLDEwIEBACiAjZGVmaW5lIFNZUzMyT05MWShmdW5jKQkJLmxvbmcJc3lzXyMjZnVuYwogI2RlZmluZSBTWVNYKGYsIGYzMjY0LCBmMzIpCS5sb25nCWYzMgogI2VuZGlmCisjZGVmaW5lIFNZU0NBTExfU1BVKGZ1bmMpCVNZU0NBTEwoZnVuYykKKyNkZWZpbmUgQ09NUEFUX1NZU19TUFUoZnVuYykJQ09NUEFUX1NZUyhmdW5jKQorI2RlZmluZSBQUENfU1lTX1NQVShmdW5jKQlQUENfU1lTKGZ1bmMpCisjZGVmaW5lIFNZU1hfU1BVKGYsIGYzMjY0LCBmMzIpCVNZU1goZiwgZjMyNjQsIGYzMikKIAogI2lmZGVmIENPTkZJR19QUEM2NAogI2RlZmluZSBzeXNfc2lncGVuZGluZwlzeXNfbmlfc3lzY2FsbApAQCAtMzksMzA5ICs0Myw0IEBACiAjZW5kaWYKIAogX0dMT0JBTChzeXNfY2FsbF90YWJsZSkKLVNZU0NBTEwocmVzdGFydF9zeXNjYWxsKQotU1lTQ0FMTChleGl0KQotUFBDX1NZUyhmb3JrKQotU1lTQ0FMTChyZWFkKQotU1lTQ0FMTCh3cml0ZSkKLUNPTVBBVF9TWVMob3BlbikKLVNZU0NBTEwoY2xvc2UpCi1DT01QQVRfU1lTKHdhaXRwaWQpCi1DT01QQVRfU1lTKGNyZWF0KQotU1lTQ0FMTChsaW5rKQotU1lTQ0FMTCh1bmxpbmspCi1DT01QQVRfU1lTKGV4ZWN2ZSkKLVNZU0NBTEwoY2hkaXIpCi1DT01QQVRfU1lTKHRpbWUpCi1TWVNDQUxMKG1rbm9kKQotU1lTQ0FMTChjaG1vZCkKLVNZU0NBTEwobGNob3duKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotT0xEU1lTKHN0YXQpCi1TWVNYKHN5c19sc2VlayxwcGMzMl9sc2VlayxzeXNfbHNlZWspCi1TWVNDQUxMKGdldHBpZCkKLUNPTVBBVF9TWVMobW91bnQpCi1TWVNYKHN5c19uaV9zeXNjYWxsLHN5c19vbGR1bW91bnQsc3lzX29sZHVtb3VudCkKLVNZU0NBTEwoc2V0dWlkKQotU1lTQ0FMTChnZXR1aWQpCi1DT01QQVRfU1lTKHN0aW1lKQotQ09NUEFUX1NZUyhwdHJhY2UpCi1TWVNDQUxMKGFsYXJtKQotT0xEU1lTKGZzdGF0KQotQ09NUEFUX1NZUyhwYXVzZSkKLUNPTVBBVF9TWVModXRpbWUpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1DT01QQVRfU1lTKGFjY2VzcykKLUNPTVBBVF9TWVMobmljZSkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZU0NBTEwoc3luYykKLUNPTVBBVF9TWVMoa2lsbCkKLVNZU0NBTEwocmVuYW1lKQotQ09NUEFUX1NZUyhta2RpcikKLVNZU0NBTEwocm1kaXIpCi1TWVNDQUxMKGR1cCkKLVNZU0NBTEwocGlwZSkKLUNPTVBBVF9TWVModGltZXMpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1TWVNDQUxMKGJyaykKLVNZU0NBTEwoc2V0Z2lkKQotU1lTQ0FMTChnZXRnaWQpCi1TWVNDQUxMKHNpZ25hbCkKLVNZU0NBTEwoZ2V0ZXVpZCkKLVNZU0NBTEwoZ2V0ZWdpZCkKLVNZU0NBTEwoYWNjdCkKLVNZU0NBTEwodW1vdW50KQotU1lTQ0FMTChuaV9zeXNjYWxsKQotQ09NUEFUX1NZUyhpb2N0bCkKLUNPTVBBVF9TWVMoZmNudGwpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1DT01QQVRfU1lTKHNldHBnaWQpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1TWVNYKHN5c19uaV9zeXNjYWxsLHN5c19vbGR1bmFtZSwgc3lzX29sZHVuYW1lKQotQ09NUEFUX1NZUyh1bWFzaykKLVNZU0NBTEwoY2hyb290KQotU1lTQ0FMTCh1c3RhdCkKLVNZU0NBTEwoZHVwMikKLVNZU0NBTEwoZ2V0cHBpZCkKLVNZU0NBTEwoZ2V0cGdycCkKLVNZU0NBTEwoc2V0c2lkKQotU1lTMzJPTkxZKHNpZ2FjdGlvbikKLVNZU0NBTEwoc2dldG1hc2spCi1DT01QQVRfU1lTKHNzZXRtYXNrKQotU1lTQ0FMTChzZXRyZXVpZCkKLVNZU0NBTEwoc2V0cmVnaWQpCi1TWVMzMk9OTFkoc2lnc3VzcGVuZCkKLUNPTVBBVF9TWVMoc2lncGVuZGluZykKLUNPTVBBVF9TWVMoc2V0aG9zdG5hbWUpCi1DT01QQVRfU1lTKHNldHJsaW1pdCkKLUNPTVBBVF9TWVMob2xkX2dldHJsaW1pdCkKLUNPTVBBVF9TWVMoZ2V0cnVzYWdlKQotQ09NUEFUX1NZUyhnZXR0aW1lb2ZkYXkpCi1DT01QQVRfU1lTKHNldHRpbWVvZmRheSkKLUNPTVBBVF9TWVMoZ2V0Z3JvdXBzKQotQ09NUEFUX1NZUyhzZXRncm91cHMpCi1TWVNYKHN5c19uaV9zeXNjYWxsLHN5c19uaV9zeXNjYWxsLHBwY19zZWxlY3QpCi1TWVNDQUxMKHN5bWxpbmspCi1PTERTWVMobHN0YXQpCi1DT01QQVRfU1lTKHJlYWRsaW5rKQotU1lTQ0FMTCh1c2VsaWIpCi1TWVNDQUxMKHN3YXBvbikKLVNZU0NBTEwocmVib290KQotU1lTWChzeXNfbmlfc3lzY2FsbCxvbGQzMl9yZWFkZGlyLG9sZF9yZWFkZGlyKQotU1lTQ0FMTChtbWFwKQotU1lTQ0FMTChtdW5tYXApCi1TWVNDQUxMKHRydW5jYXRlKQotU1lTQ0FMTChmdHJ1bmNhdGUpCi1TWVNDQUxMKGZjaG1vZCkKLVNZU0NBTEwoZmNob3duKQotQ09NUEFUX1NZUyhnZXRwcmlvcml0eSkKLUNPTVBBVF9TWVMoc2V0cHJpb3JpdHkpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1DT01QQVRfU1lTKHN0YXRmcykKLUNPTVBBVF9TWVMoZnN0YXRmcykKLVNZU0NBTEwobmlfc3lzY2FsbCkKLUNPTVBBVF9TWVMoc29ja2V0Y2FsbCkKLUNPTVBBVF9TWVMoc3lzbG9nKQotQ09NUEFUX1NZUyhzZXRpdGltZXIpCi1DT01QQVRfU1lTKGdldGl0aW1lcikKLUNPTVBBVF9TWVMobmV3c3RhdCkKLUNPTVBBVF9TWVMobmV3bHN0YXQpCi1DT01QQVRfU1lTKG5ld2ZzdGF0KQotU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfdW5hbWUsc3lzX3VuYW1lKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotU1lTQ0FMTCh2aGFuZ3VwKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotQ09NUEFUX1NZUyh3YWl0NCkKLVNZU0NBTEwoc3dhcG9mZikKLUNPTVBBVF9TWVMoc3lzaW5mbykKLUNPTVBBVF9TWVMoaXBjKQotU1lTQ0FMTChmc3luYykKLVNZUzMyT05MWShzaWdyZXR1cm4pCi1QUENfU1lTKGNsb25lKQotQ09NUEFUX1NZUyhzZXRkb21haW5uYW1lKQotUFBDX1NZUyhuZXd1bmFtZSkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLUNPTVBBVF9TWVMoYWRqdGltZXgpCi1TWVNDQUxMKG1wcm90ZWN0KQotU1lTWChzeXNfbmlfc3lzY2FsbCxjb21wYXRfc3lzX3NpZ3Byb2NtYXNrLHN5c19zaWdwcm9jbWFzaykKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZU0NBTEwoaW5pdF9tb2R1bGUpCi1TWVNDQUxMKGRlbGV0ZV9tb2R1bGUpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1TWVNDQUxMKHF1b3RhY3RsKQotQ09NUEFUX1NZUyhnZXRwZ2lkKQotU1lTQ0FMTChmY2hkaXIpCi1TWVNDQUxMKGJkZmx1c2gpCi1DT01QQVRfU1lTKHN5c2ZzKQotU1lTWChwcGM2NF9wZXJzb25hbGl0eSxwcGM2NF9wZXJzb25hbGl0eSxzeXNfcGVyc29uYWxpdHkpCi1TWVNDQUxMKG5pX3N5c2NhbGwpCi1TWVNDQUxMKHNldGZzdWlkKQotU1lTQ0FMTChzZXRmc2dpZCkKLVNZU0NBTEwobGxzZWVrKQotQ09NUEFUX1NZUyhnZXRkZW50cykKLVNZU1goc3lzX3NlbGVjdCxwcGMzMl9zZWxlY3QscHBjX3NlbGVjdCkKLVNZU0NBTEwoZmxvY2spCi1TWVNDQUxMKG1zeW5jKQotQ09NUEFUX1NZUyhyZWFkdikKLUNPTVBBVF9TWVMod3JpdGV2KQotQ09NUEFUX1NZUyhnZXRzaWQpCi1TWVNDQUxMKGZkYXRhc3luYykKLUNPTVBBVF9TWVMoc3lzY3RsKQotU1lTQ0FMTChtbG9jaykKLVNZU0NBTEwobXVubG9jaykKLVNZU0NBTEwobWxvY2thbGwpCi1TWVNDQUxMKG11bmxvY2thbGwpCi1DT01QQVRfU1lTKHNjaGVkX3NldHBhcmFtKQotQ09NUEFUX1NZUyhzY2hlZF9nZXRwYXJhbSkKLUNPTVBBVF9TWVMoc2NoZWRfc2V0c2NoZWR1bGVyKQotQ09NUEFUX1NZUyhzY2hlZF9nZXRzY2hlZHVsZXIpCi1TWVNDQUxMKHNjaGVkX3lpZWxkKQotQ09NUEFUX1NZUyhzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KQotQ09NUEFUX1NZUyhzY2hlZF9nZXRfcHJpb3JpdHlfbWluKQotQ09NUEFUX1NZUyhzY2hlZF9ycl9nZXRfaW50ZXJ2YWwpCi1DT01QQVRfU1lTKG5hbm9zbGVlcCkKLVNZU0NBTEwobXJlbWFwKQotU1lTQ0FMTChzZXRyZXN1aWQpCi1TWVNDQUxMKGdldHJlc3VpZCkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZU0NBTEwocG9sbCkKLUNPTVBBVF9TWVMobmZzc2VydmN0bCkKLVNZU0NBTEwoc2V0cmVzZ2lkKQotU1lTQ0FMTChnZXRyZXNnaWQpCi1DT01QQVRfU1lTKHByY3RsKQotQ09NUEFUX1NZUyhydF9zaWdyZXR1cm4pCi1DT01QQVRfU1lTKHJ0X3NpZ2FjdGlvbikKLUNPTVBBVF9TWVMocnRfc2lncHJvY21hc2spCi1DT01QQVRfU1lTKHJ0X3NpZ3BlbmRpbmcpCi1DT01QQVRfU1lTKHJ0X3NpZ3RpbWVkd2FpdCkKLUNPTVBBVF9TWVMocnRfc2lncXVldWVpbmZvKQotQ09NUEFUX1NZUyhydF9zaWdzdXNwZW5kKQotQ09NUEFUX1NZUyhwcmVhZDY0KQotQ09NUEFUX1NZUyhwd3JpdGU2NCkKLVNZU0NBTEwoY2hvd24pCi1TWVNDQUxMKGdldGN3ZCkKLVNZU0NBTEwoY2FwZ2V0KQotU1lTQ0FMTChjYXBzZXQpCi1DT01QQVRfU1lTKHNpZ2FsdHN0YWNrKQotU1lTWChzeXNfc2VuZGZpbGU2NCxjb21wYXRfc3lzX3NlbmRmaWxlLHN5c19zZW5kZmlsZSkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVBQQ19TWVModmZvcmspCi1DT01QQVRfU1lTKGdldHJsaW1pdCkKLUNPTVBBVF9TWVMocmVhZGFoZWFkKQotU1lTMzJPTkxZKG1tYXAyKQotU1lTMzJPTkxZKHRydW5jYXRlNjQpCi1TWVMzMk9OTFkoZnRydW5jYXRlNjQpCi1TWVNYKHN5c19uaV9zeXNjYWxsLHN5c19zdGF0NjQsc3lzX3N0YXQ2NCkKLVNZU1goc3lzX25pX3N5c2NhbGwsc3lzX2xzdGF0NjQsc3lzX2xzdGF0NjQpCi1TWVNYKHN5c19uaV9zeXNjYWxsLHN5c19mc3RhdDY0LHN5c19mc3RhdDY0KQotU1lTQ0FMTChwY2ljb25maWdfcmVhZCkKLVNZU0NBTEwocGNpY29uZmlnX3dyaXRlKQotU1lTQ0FMTChwY2ljb25maWdfaW9iYXNlKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotU1lTQ0FMTChnZXRkZW50czY0KQotU1lTQ0FMTChwaXZvdF9yb290KQotU1lTWChzeXNfbmlfc3lzY2FsbCxjb21wYXRfc3lzX2ZjbnRsNjQsc3lzX2ZjbnRsNjQpCi1TWVNDQUxMKG1hZHZpc2UpCi1TWVNDQUxMKG1pbmNvcmUpCi1TWVNDQUxMKGdldHRpZCkKLVNZU0NBTEwodGtpbGwpCi1TWVNDQUxMKHNldHhhdHRyKQotU1lTQ0FMTChsc2V0eGF0dHIpCi1TWVNDQUxMKGZzZXR4YXR0cikKLVNZU0NBTEwoZ2V0eGF0dHIpCi1TWVNDQUxMKGxnZXR4YXR0cikKLVNZU0NBTEwoZmdldHhhdHRyKQotU1lTQ0FMTChsaXN0eGF0dHIpCi1TWVNDQUxMKGxsaXN0eGF0dHIpCi1TWVNDQUxMKGZsaXN0eGF0dHIpCi1TWVNDQUxMKHJlbW92ZXhhdHRyKQotU1lTQ0FMTChscmVtb3ZleGF0dHIpCi1TWVNDQUxMKGZyZW1vdmV4YXR0cikKLUNPTVBBVF9TWVMoZnV0ZXgpCi1DT01QQVRfU1lTKHNjaGVkX3NldGFmZmluaXR5KQotQ09NUEFUX1NZUyhzY2hlZF9nZXRhZmZpbml0eSkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZU0NBTEwobmlfc3lzY2FsbCkKLVNZUzMyT05MWShzZW5kZmlsZTY0KQotQ09NUEFUX1NZUyhpb19zZXR1cCkKLVNZU0NBTEwoaW9fZGVzdHJveSkKLUNPTVBBVF9TWVMoaW9fZ2V0ZXZlbnRzKQotQ09NUEFUX1NZUyhpb19zdWJtaXQpCi1TWVNDQUxMKGlvX2NhbmNlbCkKLVNZU0NBTEwoc2V0X3RpZF9hZGRyZXNzKQotU1lTWChzeXNfZmFkdmlzZTY0LHBwYzMyX2ZhZHZpc2U2NCxzeXNfZmFkdmlzZTY0KQotU1lTQ0FMTChleGl0X2dyb3VwKQotU1lTWChzeXNfbG9va3VwX2Rjb29raWUscHBjMzJfbG9va3VwX2Rjb29raWUsc3lzX2xvb2t1cF9kY29va2llKQotU1lTQ0FMTChlcG9sbF9jcmVhdGUpCi1TWVNDQUxMKGVwb2xsX2N0bCkKLVNZU0NBTEwoZXBvbGxfd2FpdCkKLVNZU0NBTEwocmVtYXBfZmlsZV9wYWdlcykKLVNZU1goc3lzX3RpbWVyX2NyZWF0ZSxjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZSxzeXNfdGltZXJfY3JlYXRlKQotQ09NUEFUX1NZUyh0aW1lcl9zZXR0aW1lKQotQ09NUEFUX1NZUyh0aW1lcl9nZXR0aW1lKQotU1lTQ0FMTCh0aW1lcl9nZXRvdmVycnVuKQotU1lTQ0FMTCh0aW1lcl9kZWxldGUpCi1DT01QQVRfU1lTKGNsb2NrX3NldHRpbWUpCi1DT01QQVRfU1lTKGNsb2NrX2dldHRpbWUpCi1DT01QQVRfU1lTKGNsb2NrX2dldHJlcykKLUNPTVBBVF9TWVMoY2xvY2tfbmFub3NsZWVwKQotU1lTWChwcGM2NF9zd2FwY29udGV4dCxwcGMzMl9zd2FwY29udGV4dCxwcGNfc3dhcGNvbnRleHQpCi1DT01QQVRfU1lTKHRna2lsbCkKLUNPTVBBVF9TWVModXRpbWVzKQotQ09NUEFUX1NZUyhzdGF0ZnM2NCkKLUNPTVBBVF9TWVMoZnN0YXRmczY0KQotU1lTWChzeXNfbmlfc3lzY2FsbCwgcHBjX2ZhZHZpc2U2NF82NCwgcHBjX2ZhZHZpc2U2NF82NCkKLVBQQ19TWVMocnRhcykKLU9MRFNZUyhkZWJ1Z19zZXRjb250ZXh0KQotU1lTQ0FMTChuaV9zeXNjYWxsKQotU1lTQ0FMTChuaV9zeXNjYWxsKQotQ09NUEFUX1NZUyhtYmluZCkKLUNPTVBBVF9TWVMoZ2V0X21lbXBvbGljeSkKLUNPTVBBVF9TWVMoc2V0X21lbXBvbGljeSkKLUNPTVBBVF9TWVMobXFfb3BlbikKLVNZU0NBTEwobXFfdW5saW5rKQotQ09NUEFUX1NZUyhtcV90aW1lZHNlbmQpCi1DT01QQVRfU1lTKG1xX3RpbWVkcmVjZWl2ZSkKLUNPTVBBVF9TWVMobXFfbm90aWZ5KQotQ09NUEFUX1NZUyhtcV9nZXRzZXRhdHRyKQotQ09NUEFUX1NZUyhrZXhlY19sb2FkKQotQ09NUEFUX1NZUyhhZGRfa2V5KQotQ09NUEFUX1NZUyhyZXF1ZXN0X2tleSkKLUNPTVBBVF9TWVMoa2V5Y3RsKQotQ09NUEFUX1NZUyh3YWl0aWQpCi1DT01QQVRfU1lTKGlvcHJpb19zZXQpCi1DT01QQVRfU1lTKGlvcHJpb19nZXQpCi1TWVNDQUxMKGlub3RpZnlfaW5pdCkKLVNZU0NBTEwoaW5vdGlmeV9hZGRfd2F0Y2gpCi1TWVNDQUxMKGlub3RpZnlfcm1fd2F0Y2gpCi1TWVNDQUxMKHNwdV9ydW4pCi1TWVNDQUxMKHNwdV9jcmVhdGUpCi1DT01QQVRfU1lTKHBzZWxlY3Q2KQotQ09NUEFUX1NZUyhwcG9sbCkKLVNZU0NBTEwodW5zaGFyZSkKLVNZU0NBTEwoc3BsaWNlKQotU1lTQ0FMTCh0ZWUpCi1TWVNDQUxMKHZtc3BsaWNlKQotQ09NUEFUX1NZUyhvcGVuYXQpCi1TWVNDQUxMKG1rZGlyYXQpCi1TWVNDQUxMKG1rbm9kYXQpCi1TWVNDQUxMKGZjaG93bmF0KQotQ09NUEFUX1NZUyhmdXRpbWVzYXQpCi1TWVNYKHN5c19uZXdmc3RhdGF0LCBzeXNfZnN0YXRhdDY0LCBzeXNfZnN0YXRhdDY0KQotU1lTQ0FMTCh1bmxpbmthdCkKLVNZU0NBTEwocmVuYW1lYXQpCi1TWVNDQUxMKGxpbmthdCkKLVNZU0NBTEwoc3ltbGlua2F0KQotU1lTQ0FMTChyZWFkbGlua2F0KQotU1lTQ0FMTChmY2htb2RhdCkKLVNZU0NBTEwoZmFjY2Vzc2F0KQotQ09NUEFUX1NZUyhnZXRfcm9idXN0X2xpc3QpCi1DT01QQVRfU1lTKHNldF9yb2J1c3RfbGlzdCkKLQotLyoKLSAqIHBsZWFzZSBhZGQgbmV3IGNhbGxzIHRvIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfY2FsbGJhY2tzLmMKLSAqIGFzIHdlbGwgd2hlbiBhcHByb3ByaWF0ZS4KLSAqLworI2luY2x1ZGUgPGFzbS9zeXN0YmwuaD4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdGltZS5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC90aW1lLmMKaW5kZXggMjRlM2FkNy4uZDIwOTA3NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC90aW1lLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC90aW1lLmMKQEAgLTc2LDcgKzc2LDYgQEAKIAogLyoga2VlcCB0cmFjayBvZiB3aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBydGMgKi8KIHRpbWVfdCBsYXN0X3J0Y191cGRhdGU7Ci1leHRlcm4gaW50IHBpcmFuaGFfc2ltdWxhdG9yOwogI2lmZGVmIENPTkZJR19QUENfSVNFUklFUwogdW5zaWduZWQgbG9uZyBpU2VyaWVzX3JlY2FsX3RpdGFuID0gMDsKIHVuc2lnbmVkIGxvbmcgaVNlcmllc19yZWNhbF90YiA9IDA7IApAQCAtODU4LDQyICs4NTcsNTAgQEAKIAogRVhQT1JUX1NZTUJPTChkb19zZXR0aW1lb2ZkYXkpOwogCi12b2lkIF9faW5pdCBnZW5lcmljX2NhbGlicmF0ZV9kZWNyKHZvaWQpCitzdGF0aWMgaW50IF9faW5pdCBnZXRfZnJlcShjaGFyICpuYW1lLCBpbnQgY2VsbHMsIHVuc2lnbmVkIGxvbmcgKnZhbCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdTsKIAl1bnNpZ25lZCBpbnQgKmZwOwotCWludCBub2RlX2ZvdW5kOworCWludCBmb3VuZCA9IDA7CiAKLQkvKgotCSAqIFRoZSBjcHUgbm9kZSBzaG91bGQgaGF2ZSBhIHRpbWViYXNlLWZyZXF1ZW5jeSBwcm9wZXJ0eQotCSAqIHRvIHRlbGwgdXMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIGRlY3JlbWVudGVyIGNvdW50cy4KLQkgKi8KKwkvKiBUaGUgY3B1IG5vZGUgc2hvdWxkIGhhdmUgdGltZWJhc2UgYW5kIGNsb2NrIGZyZXF1ZW5jeSBwcm9wZXJ0aWVzICovCiAJY3B1ID0gb2ZfZmluZF9ub2RlX2J5X3R5cGUoTlVMTCwgImNwdSIpOwogCi0JcHBjX3RiX2ZyZXEgPSBERUZBVUxUX1RCX0ZSRVE7CQkvKiBoYXJkY29kZWQgZGVmYXVsdCAqLwotCW5vZGVfZm91bmQgPSAwOwogCWlmIChjcHUpIHsKLQkJZnAgPSAodW5zaWduZWQgaW50ICopZ2V0X3Byb3BlcnR5KGNwdSwgInRpbWViYXNlLWZyZXF1ZW5jeSIsCi0JCQkJCQkgIE5VTEwpOworCQlmcCA9ICh1bnNpZ25lZCBpbnQgKilnZXRfcHJvcGVydHkoY3B1LCBuYW1lLCBOVUxMKTsKIAkJaWYgKGZwKSB7Ci0JCQlub2RlX2ZvdW5kID0gMTsKLQkJCXBwY190Yl9mcmVxID0gKmZwOworCQkJZm91bmQgPSAxOworCQkJKnZhbCA9IDA7CisJCQl3aGlsZSAoY2VsbHMtLSkKKwkJCQkqdmFsID0gKCp2YWwgPDwgMzIpIHwgKmZwKys7CiAJCX0KKworCQlvZl9ub2RlX3B1dChjcHUpOwogCX0KLQlpZiAoIW5vZGVfZm91bmQpCisKKwlyZXR1cm4gZm91bmQ7Cit9CisKK3ZvaWQgX19pbml0IGdlbmVyaWNfY2FsaWJyYXRlX2RlY3Iodm9pZCkKK3sKKwlwcGNfdGJfZnJlcSA9IERFRkFVTFRfVEJfRlJFUTsJCS8qIGhhcmRjb2RlZCBkZWZhdWx0ICovCisKKwlpZiAoIWdldF9mcmVxKCJpYm0sZXh0ZW5kZWQtdGltZWJhc2UtZnJlcXVlbmN5IiwgMiwgJnBwY190Yl9mcmVxKSAmJgorCSAgICAhZ2V0X2ZyZXEoInRpbWViYXNlLWZyZXF1ZW5jeSIsIDEsICZwcGNfdGJfZnJlcSkpIHsKKwogCQlwcmludGsoS0VSTl9FUlIgIldBUk5JTkc6IEVzdGltYXRpbmcgZGVjcmVtZW50ZXIgZnJlcXVlbmN5ICIKIAkJCQkiKG5vdCBmb3VuZClcbiIpOwotCi0JcHBjX3Byb2NfZnJlcSA9IERFRkFVTFRfUFJPQ19GUkVROwotCW5vZGVfZm91bmQgPSAwOwotCWlmIChjcHUpIHsKLQkJZnAgPSAodW5zaWduZWQgaW50ICopZ2V0X3Byb3BlcnR5KGNwdSwgImNsb2NrLWZyZXF1ZW5jeSIsCi0JCQkJCQkgIE5VTEwpOwotCQlpZiAoZnApIHsKLQkJCW5vZGVfZm91bmQgPSAxOwotCQkJcHBjX3Byb2NfZnJlcSA9ICpmcDsKLQkJfQogCX0KKworCXBwY19wcm9jX2ZyZXEgPSBERUZBVUxUX1BST0NfRlJFUTsJLyogaGFyZGNvZGVkIGRlZmF1bHQgKi8KKworCWlmICghZ2V0X2ZyZXEoImlibSxleHRlbmRlZC1jbG9jay1mcmVxdWVuY3kiLCAyLCAmcHBjX3Byb2NfZnJlcSkgJiYKKwkgICAgIWdldF9mcmVxKCJjbG9jay1mcmVxdWVuY3kiLCAxLCAmcHBjX3Byb2NfZnJlcSkpIHsKKworCQlwcmludGsoS0VSTl9FUlIgIldBUk5JTkc6IEVzdGltYXRpbmcgcHJvY2Vzc29yIGZyZXF1ZW5jeSAiCisJCQkJIihub3QgZm91bmQpXG4iKTsKKwl9CisKICNpZmRlZiBDT05GSUdfQk9PS0UKIAkvKiBTZXQgdGhlIHRpbWUgYmFzZSB0byB6ZXJvICovCiAJbXRzcHIoU1BSTl9UQldMLCAwKTsKQEAgLTkwNSwxMSArOTEyLDYgQEAKIAkvKiBFbmFibGUgZGVjcmVtZW50ZXIgaW50ZXJydXB0ICovCiAJbXRzcHIoU1BSTl9UQ1IsIFRDUl9ESUUpOwogI2VuZGlmCi0JaWYgKCFub2RlX2ZvdW5kKQotCQlwcmludGsoS0VSTl9FUlIgIldBUk5JTkc6IEVzdGltYXRpbmcgcHJvY2Vzc29yIGZyZXF1ZW5jeSAiCi0JCQkJIihub3QgZm91bmQpXG4iKTsKLQotCW9mX25vZGVfcHV0KGNwdSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgZ2V0X2Jvb3RfdGltZSh2b2lkKQpAQCAtOTQ1LDkgKzk0Nyw5IEBACiAJfSBlbHNlIHsKIAkJLyogTm9ybWFsIFBvd2VyUEMgd2l0aCB0aW1lYmFzZSByZWdpc3RlciAqLwogCQlwcGNfbWQuY2FsaWJyYXRlX2RlY3IoKTsKLQkJcHJpbnRrKEtFUk5fSU5GTyAidGltZV9pbml0OiBkZWNyZW1lbnRlciBmcmVxdWVuY3kgPSAlbHUuJS42bHUgTUh6XG4iLAorCQlwcmludGsoS0VSTl9ERUJVRyAidGltZV9pbml0OiBkZWNyZW1lbnRlciBmcmVxdWVuY3kgPSAlbHUuJS42bHUgTUh6XG4iLAogCQkgICAgICAgcHBjX3RiX2ZyZXEgLyAxMDAwMDAwLCBwcGNfdGJfZnJlcSAlIDEwMDAwMDApOwotCQlwcmludGsoS0VSTl9JTkZPICJ0aW1lX2luaXQ6IHByb2Nlc3NvciBmcmVxdWVuY3kgICA9ICVsdS4lLjZsdSBNSHpcbiIsCisJCXByaW50ayhLRVJOX0RFQlVHICJ0aW1lX2luaXQ6IHByb2Nlc3NvciBmcmVxdWVuY3kgICA9ICVsdS4lLjZsdSBNSHpcbiIsCiAJCSAgICAgICBwcGNfcHJvY19mcmVxIC8gMTAwMDAwMCwgcHBjX3Byb2NfZnJlcSAlIDEwMDAwMDApOwogCQl0Yl9sYXN0X3N0YW1wID0gdGJfbGFzdF9qaWZmeSA9IGdldF90YigpOwogCX0KQEAgLTEwMTAsMTAgKzEwMTIsNyBAQAogCXRiX3RvX25zX3NjYWxlID0gc2NhbGU7CiAJdGJfdG9fbnNfc2hpZnQgPSBzaGlmdDsKIAotI2lmZGVmIENPTkZJR19QUENfSVNFUklFUwotCWlmICghcGlyYW5oYV9zaW11bGF0b3IpCi0jZW5kaWYKLQkJdG0gPSBnZXRfYm9vdF90aW1lKCk7CisJdG0gPSBnZXRfYm9vdF90aW1lKCk7CiAKIAl3cml0ZV9zZXFsb2NrX2lycXNhdmUoJnh0aW1lX2xvY2ssIGZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC90cmFwcy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC90cmFwcy5jCmluZGV4IDA2NGE1MjUuLjkxYTZlMDQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3RyYXBzLmMKQEAgLTY1OCw3ICs2NTgsNyBAQAogCXUzMiBpbnN0d29yZDsKIAl1MzIgcmQ7CiAKLQlpZiAoIXVzZXJfbW9kZShyZWdzKSkKKwlpZiAoIXVzZXJfbW9kZShyZWdzKSB8fCAocmVncy0+bXNyICYgTVNSX0xFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJQ0hFQ0tfRlVMTF9SRUdTKHJlZ3MpOwogCkBAIC04MDUsOSArODA1LDExIEBACiAKIHZvaWQgYWxpZ25tZW50X2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlpbnQgZml4ZWQ7CisJaW50IGZpeGVkID0gMDsKIAotCWZpeGVkID0gZml4X2FsaWdubWVudChyZWdzKTsKKwkvKiB3ZSBkb24ndCBpbXBsZW1lbnQgbG9nZ2luZyBvZiBhbGlnbm1lbnQgZXhjZXB0aW9ucyAqLworCWlmICghKGN1cnJlbnQtPnRocmVhZC5hbGlnbl9jdGwgJiBQUl9VTkFMSUdOX1NJR0JVUykpCisJCWZpeGVkID0gZml4X2FsaWdubWVudChyZWdzKTsKIAogCWlmIChmaXhlZCA9PSAxKSB7CiAJCXJlZ3MtPm5pcCArPSA0OwkvKiBza2lwIG92ZXIgZW11bGF0ZWQgaW5zdHJ1Y3Rpb24gKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdWRiZy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC91ZGJnLmMKaW5kZXggMzc3NGU4MC4uNjdkOWZkOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC91ZGJnLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC91ZGJnLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3VkYmcuaD4KIApAQCAtMTQxLDEyICsxNDIsMTQgQEAKIAogdm9pZCBfX2luaXQgZGlzYWJsZV9lYXJseV9wcmludGsodm9pZCkKIHsKLSNpZiAxCiAJaWYgKCFlYXJseV9jb25zb2xlX2luaXRpYWxpemVkKQogCQlyZXR1cm47CisJaWYgKHN0cnN0cihzYXZlZF9jb21tYW5kX2xpbmUsICJ1ZGJnLWltbW9ydGFsIikpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiZWFybHkgY29uc29sZSBpbW1vcnRhbCAhXG4iKTsKKwkJcmV0dXJuOworCX0KIAl1bnJlZ2lzdGVyX2NvbnNvbGUoJnVkYmdfY29uc29sZSk7CiAJZWFybHlfY29uc29sZV9pbml0aWFsaXplZCA9IDA7Ci0jZW5kaWYKIH0KIAogLyogY2FsbGVkIGJ5IHNldHVwX3N5c3RlbSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28uYwppbmRleCA1NzNhZmI2Li5iYzNlMTViIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28uYwpAQCAtMjIzLDYgKzIyMyw3IEBACiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJdW5zaWduZWQgbG9uZyB2ZHNvX3BhZ2VzOwogCXVuc2lnbmVkIGxvbmcgdmRzb19iYXNlOworCWludCByYzsKIAogI2lmZGVmIENPTkZJR19QUEM2NAogCWlmICh0ZXN0X3RocmVhZF9mbGFnKFRJRl8zMkJJVCkpIHsKQEAgLTIzNywyMCArMjM4LDEzIEBACiAJdmRzb19iYXNlID0gVkRTTzMyX01CQVNFOwogI2VuZGlmCiAKLQljdXJyZW50LT50aHJlYWQudmRzb19iYXNlID0gMDsKKwljdXJyZW50LT5tbS0+Y29udGV4dC52ZHNvX2Jhc2UgPSAwOwogCiAJLyogdkRTTyBoYXMgYSBwcm9ibGVtIGFuZCB3YXMgZGlzYWJsZWQsIGp1c3QgZG9uJ3QgImVuYWJsZSIgaXQgZm9yIHRoZQogCSAqIHByb2Nlc3MKIAkgKi8KIAlpZiAodmRzb19wYWdlcyA9PSAwKQogCQlyZXR1cm4gMDsKLQotCXZtYSA9IGttZW1fY2FjaGVfYWxsb2Modm1fYXJlYV9jYWNoZXAsIFNMQUJfS0VSTkVMKTsKLQlpZiAodm1hID09IE5VTEwpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JbWVtc2V0KHZtYSwgMCwgc2l6ZW9mKCp2bWEpKTsKLQogCS8qIEFkZCBhIHBhZ2UgdG8gdGhlIHZkc28gc2l6ZSBmb3IgdGhlIGRhdGEgcGFnZSAqLwogCXZkc29fcGFnZXMgKys7CiAKQEAgLTI1OSwxNyArMjUzLDIzIEBACiAJICogYXQgdmRzb19iYXNlIHdoaWNoIGlzIHRoZSAibmF0dXJhbCIgYmFzZSBmb3IgaXQsIGJ1dCB3ZSBtaWdodCBmYWlsCiAJICogYW5kIGVuZCB1cCBwdXR0aW5nIGl0IGVsc2V3aGVyZS4KIAkgKi8KKwlkb3duX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwogCXZkc29fYmFzZSA9IGdldF91bm1hcHBlZF9hcmVhKE5VTEwsIHZkc29fYmFzZSwKIAkJCQkgICAgICB2ZHNvX3BhZ2VzIDw8IFBBR0VfU0hJRlQsIDAsIDApOwotCWlmICh2ZHNvX2Jhc2UgJiB+UEFHRV9NQVNLKSB7Ci0JCWttZW1fY2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hlcCwgdm1hKTsKLQkJcmV0dXJuIChpbnQpdmRzb19iYXNlOworCWlmIChJU19FUlJfVkFMVUUodmRzb19iYXNlKSkgeworCQlyYyA9IHZkc29fYmFzZTsKKwkJZ290byBmYWlsX21tYXBzZW07CiAJfQogCi0JY3VycmVudC0+dGhyZWFkLnZkc29fYmFzZSA9IHZkc29fYmFzZTsKIAorCS8qIEFsbG9jYXRlIGEgVk1BIHN0cnVjdHVyZSBhbmQgZmlsbCBpdCB1cCAqLworCXZtYSA9IGttZW1fY2FjaGVfemFsbG9jKHZtX2FyZWFfY2FjaGVwLCBTTEFCX0tFUk5FTCk7CisJaWYgKHZtYSA9PSBOVUxMKSB7CisJCXJjID0gLUVOT01FTTsKKwkJZ290byBmYWlsX21tYXBzZW07CisJfQogCXZtYS0+dm1fbW0gPSBtbTsKLQl2bWEtPnZtX3N0YXJ0ID0gY3VycmVudC0+dGhyZWFkLnZkc29fYmFzZTsKKwl2bWEtPnZtX3N0YXJ0ID0gdmRzb19iYXNlOwogCXZtYS0+dm1fZW5kID0gdm1hLT52bV9zdGFydCArICh2ZHNvX3BhZ2VzIDw8IFBBR0VfU0hJRlQpOwogCiAJLyoKQEAgLTI4MiwyMyArMjgyLDM4IEBACiAJICogSXQncyBmaW5lIHRvIHVzZSB0aGF0IGZvciBzZXR0aW5nIGJyZWFrcG9pbnRzIGluIHRoZSB2RFNPIGNvZGUKIAkgKiBwYWdlcyB0aG91Z2gKIAkgKi8KLQl2bWEtPnZtX2ZsYWdzID0gVk1fUkVBRCB8IFZNX0VYRUMgfCBWTV9NQVlSRUFEIHwgVk1fTUFZV1JJVEUgfCBWTV9NQVlFWEVDOworCXZtYS0+dm1fZmxhZ3MgPSBWTV9SRUFEfFZNX0VYRUN8Vk1fTUFZUkVBRHxWTV9NQVlXUklURXxWTV9NQVlFWEVDOwogCXZtYS0+dm1fZmxhZ3MgfD0gbW0tPmRlZl9mbGFnczsKIAl2bWEtPnZtX3BhZ2VfcHJvdCA9IHByb3RlY3Rpb25fbWFwW3ZtYS0+dm1fZmxhZ3MgJiAweDddOwogCXZtYS0+dm1fb3BzID0gJnZkc29fdm1vcHM7CiAKLQlkb3duX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwotCWlmIChpbnNlcnRfdm1fc3RydWN0KG1tLCB2bWEpKSB7Ci0JCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwotCQlrbWVtX2NhY2hlX2ZyZWUodm1fYXJlYV9jYWNoZXAsIHZtYSk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KKwkvKiBJbnNlcnQgbmV3IFZNQSAqLworCXJjID0gaW5zZXJ0X3ZtX3N0cnVjdChtbSwgdm1hKTsKKwlpZiAocmMpCisJCWdvdG8gZmFpbF92bWE7CisKKwkvKiBQdXQgdkRTTyBiYXNlIGludG8gbW0gc3RydWN0IGFuZCBhY2NvdW50IGZvciBtZW1vcnkgdXNhZ2UgKi8KKwljdXJyZW50LT5tbS0+Y29udGV4dC52ZHNvX2Jhc2UgPSB2ZHNvX2Jhc2U7CiAJbW0tPnRvdGFsX3ZtICs9ICh2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQpID4+IFBBR0VfU0hJRlQ7CiAJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7Ci0KIAlyZXR1cm4gMDsKKworIGZhaWxfdm1hOgorCWttZW1fY2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hlcCwgdm1hKTsKKyBmYWlsX21tYXBzZW06CisJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJcmV0dXJuIHJjOwogfQogCitjb25zdCBjaGFyICphcmNoX3ZtYV9uYW1lKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCWlmICh2bWEtPnZtX21tICYmIHZtYS0+dm1fc3RhcnQgPT0gdm1hLT52bV9tbS0+Y29udGV4dC52ZHNvX2Jhc2UpCisJCXJldHVybiAiW3Zkc29dIjsKKwlyZXR1cm4gTlVMTDsKK30KKworCisKIHN0YXRpYyB2b2lkICogX19pbml0IGZpbmRfc2VjdGlvbjMyKEVsZjMyX0VoZHIgKmVoZHIsIGNvbnN0IGNoYXIgKnNlY25hbWUsCiAJCQkJICB1bnNpZ25lZCBsb25nICpzaXplKQogewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZWN0b3IuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmVjdG9yLlMKaW5kZXggNjZiM2QwMy4uOTQxNmI0YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZWN0b3IuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3ZlY3Rvci5TCkBAIC01MywxMiArNTMsMTIgQEAKIAlzdGZkCWZyMzEsOChyMSkKIAlMRENPTlNUKGZyMSwgZnB6ZXJvKQogCW1mZnMJZnIzMQotCW10ZnNmCTB4ZmYsZnIxCisJTVRGU0ZfTChmcjEpCiAJYmxyCiAKIGZwZGlzYWJsZToKIAltdGxyCXIxMgotCW10ZnNmCTB4ZmYsZnIzMQorCU1URlNGX0woZnIzMSkKIAlsZmQJZnIzMSw4KHIxKQogCWxmZAlmcjEsMTYocjEpCiAJbGZkCWZyMCwyNChyMSkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmlvLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zpby5jCmluZGV4IDk3MTAyMGMuLmNkZjU4NjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmlvLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC92aW8uYwpAQCAtMTMsMjcgKzEzLDExNiBAQAogICogICAgICAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICovCiAKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKwogI2luY2x1ZGUgPGFzbS9pb21tdS5oPgogI2luY2x1ZGUgPGFzbS9kbWEuaD4KICNpbmNsdWRlIDxhc20vdmlvLmg+CiAjaW5jbHVkZSA8YXNtL3Byb20uaD4KKyNpbmNsdWRlIDxhc20vZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxhc20vdGNlLmg+CisjaW5jbHVkZSA8YXNtL2Fic19hZGRyLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vaHZjYWxsLmg+CisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvdmlvLmg+CisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaHZfdHlwZXMuaD4KKyNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9scF9jb25maWcuaD4KKyNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9jYWxsX3htLmg+CisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaW9tbXUuaD4KIAotc3RhdGljIGNvbnN0IHN0cnVjdCB2aW9fZGV2aWNlX2lkICp2aW9fbWF0Y2hfZGV2aWNlKAotCQljb25zdCBzdHJ1Y3QgdmlvX2RldmljZV9pZCAqLCBjb25zdCBzdHJ1Y3QgdmlvX2RldiAqKTsKK2V4dGVybiBzdHJ1Y3Qgc3Vic3lzdGVtIGRldmljZXNfc3Vic3lzOyAvKiBuZWVkZWQgZm9yIHZpb19maW5kX25hbWUoKSAqLwogCi1zdHJ1Y3QgdmlvX2RldiB2aW9fYnVzX2RldmljZSAgPSB7IC8qIGZha2UgInBhcmVudCIgZGV2aWNlICovCitzdGF0aWMgc3RydWN0IHZpb19kZXYgdmlvX2J1c19kZXZpY2UgID0geyAvKiBmYWtlICJwYXJlbnQiIGRldmljZSAqLwogCS5uYW1lID0gdmlvX2J1c19kZXZpY2UuZGV2LmJ1c19pZCwKIAkudHlwZSA9ICIiLAogCS5kZXYuYnVzX2lkID0gInZpbyIsCiAJLmRldi5idXMgPSAmdmlvX2J1c190eXBlLAogfTsKIAotc3RhdGljIHN0cnVjdCB2aW9fYnVzX29wcyB2aW9fYnVzX29wczsKKyNpZmRlZiBDT05GSUdfUFBDX0lTRVJJRVMKK3N0cnVjdCBkZXZpY2UgKmlTZXJpZXNfdmlvX2RldiA9ICZ2aW9fYnVzX2RldmljZS5kZXY7CitFWFBPUlRfU1lNQk9MKGlTZXJpZXNfdmlvX2Rldik7CisKK3N0YXRpYyBzdHJ1Y3QgaW9tbXVfdGFibGUgdmV0aF9pb21tdV90YWJsZTsKK3N0YXRpYyBzdHJ1Y3QgaW9tbXVfdGFibGUgdmlvX2lvbW11X3RhYmxlOworCitzdGF0aWMgdm9pZCBfX2luaXQgaW9tbXVfdmlvX2luaXQodm9pZCkKK3sKKwlpb21tdV90YWJsZV9nZXRwYXJtc19pU2VyaWVzKDI1NSwgMCwgMHhmZiwgJnZldGhfaW9tbXVfdGFibGUpOworCXZldGhfaW9tbXVfdGFibGUuaXRfc2l6ZSAvPSAyOworCXZpb19pb21tdV90YWJsZSA9IHZldGhfaW9tbXVfdGFibGU7CisJdmlvX2lvbW11X3RhYmxlLml0X29mZnNldCArPSB2ZXRoX2lvbW11X3RhYmxlLml0X3NpemU7CisKKwlpZiAoIWlvbW11X2luaXRfdGFibGUoJnZldGhfaW9tbXVfdGFibGUsIC0xKSkKKwkJcHJpbnRrKCJWaXJ0dWFsIEJ1cyBWRVRIIFRDRSB0YWJsZSBmYWlsZWQuXG4iKTsKKwlpZiAoIWlvbW11X2luaXRfdGFibGUoJnZpb19pb21tdV90YWJsZSwgLTEpKQorCQlwcmludGsoIlZpcnR1YWwgQnVzIFZJTyBUQ0UgdGFibGUgZmFpbGVkLlxuIik7Cit9CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBpb21tdV90YWJsZSAqdmlvX2J1aWxkX2lvbW11X3RhYmxlKHN0cnVjdCB2aW9fZGV2ICpkZXYpCit7CisjaWZkZWYgQ09ORklHX1BQQ19JU0VSSUVTCisJaWYgKGZpcm13YXJlX2hhc19mZWF0dXJlKEZXX0ZFQVRVUkVfSVNFUklFUykpIHsKKwkJaWYgKHN0cmNtcChkZXYtPnR5cGUsICJuZXR3b3JrIikgPT0gMCkKKwkJCXJldHVybiAmdmV0aF9pb21tdV90YWJsZTsKKwkJcmV0dXJuICZ2aW9faW9tbXVfdGFibGU7CisJfSBlbHNlCisjZW5kaWYKKwl7CisJCXVuc2lnbmVkIGNoYXIgKmRtYV93aW5kb3c7CisJCXN0cnVjdCBpb21tdV90YWJsZSAqdGJsOworCQl1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6ZTsKKworCQlkbWFfd2luZG93ID0gZ2V0X3Byb3BlcnR5KGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEsCisJCQkJImlibSxteS1kbWEtd2luZG93IiwgTlVMTCk7CisJCWlmICghZG1hX3dpbmRvdykKKwkJCXJldHVybiBOVUxMOworCisJCXRibCA9IGttYWxsb2Moc2l6ZW9mKCp0YmwpLCBHRlBfS0VSTkVMKTsKKworCQlvZl9wYXJzZV9kbWFfd2luZG93KGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEsIGRtYV93aW5kb3csCisJCQkJJnRibC0+aXRfaW5kZXgsICZvZmZzZXQsICZzaXplKTsKKworCQkvKiBUQ0UgdGFibGUgc2l6ZSAtIG1lYXN1cmVkIGluIHRjZSBlbnRyaWVzICovCisJCXRibC0+aXRfc2l6ZSA9IHNpemUgPj4gUEFHRV9TSElGVDsKKwkJLyogb2Zmc2V0IGZvciBWSU8gc2hvdWxkIGFsd2F5cyBiZSAwICovCisJCXRibC0+aXRfb2Zmc2V0ID0gb2Zmc2V0ID4+IFBBR0VfU0hJRlQ7CisJCXRibC0+aXRfYnVzbm8gPSAwOworCQl0YmwtPml0X3R5cGUgPSBUQ0VfVkI7CisKKwkJcmV0dXJuIGlvbW11X2luaXRfdGFibGUodGJsLCAtMSk7CisJfQorfQorCisvKioKKyAqIHZpb19tYXRjaF9kZXZpY2U6IC0gVGVsbCBpZiBhIFZJTyBkZXZpY2UgaGFzIGEgbWF0Y2hpbmcKKyAqCQkJVklPIGRldmljZSBpZCBzdHJ1Y3R1cmUuCisgKiBAaWRzOglhcnJheSBvZiBWSU8gZGV2aWNlIGlkIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluCisgKiBAZGV2Ogl0aGUgVklPIGRldmljZSBzdHJ1Y3R1cmUgdG8gbWF0Y2ggYWdhaW5zdAorICoKKyAqIFVzZWQgYnkgYSBkcml2ZXIgdG8gY2hlY2sgd2hldGhlciBhIFZJTyBkZXZpY2UgcHJlc2VudCBpbiB0aGUKKyAqIHN5c3RlbSBpcyBpbiBpdHMgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcKKyAqIHZpb19kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlvX2RldmljZV9pZCAqdmlvX21hdGNoX2RldmljZSgKKwkJY29uc3Qgc3RydWN0IHZpb19kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHZpb19kZXYgKmRldikKK3sKKwl3aGlsZSAoaWRzLT50eXBlWzBdICE9ICdcMCcpIHsKKwkJaWYgKChzdHJuY21wKGRldi0+dHlwZSwgaWRzLT50eXBlLCBzdHJsZW4oaWRzLT50eXBlKSkgPT0gMCkgJiYKKwkJICAgIGRldmljZV9pc19jb21wYXRpYmxlKGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEsIGlkcy0+Y29tcGF0KSkKKwkJCXJldHVybiBpZHM7CisJCWlkcysrOworCX0KKwlyZXR1cm4gTlVMTDsKK30KIAogLyoKICAqIENvbnZlcnQgZnJvbSBzdHJ1Y3QgZGV2aWNlIHRvIHN0cnVjdCB2aW9fZGV2IGFuZCBwYXNzIHRvIGRyaXZlci4KQEAgLTEwNiwzNSArMTk1LDExMCBAQAogfQogRVhQT1JUX1NZTUJPTCh2aW9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCi0vKioKLSAqIHZpb19tYXRjaF9kZXZpY2U6IC0gVGVsbCBpZiBhIFZJTyBkZXZpY2UgaGFzIGEgbWF0Y2hpbmcKLSAqCQkJVklPIGRldmljZSBpZCBzdHJ1Y3R1cmUuCi0gKiBAaWRzOglhcnJheSBvZiBWSU8gZGV2aWNlIGlkIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluCi0gKiBAZGV2Ogl0aGUgVklPIGRldmljZSBzdHJ1Y3R1cmUgdG8gbWF0Y2ggYWdhaW5zdAotICoKLSAqIFVzZWQgYnkgYSBkcml2ZXIgdG8gY2hlY2sgd2hldGhlciBhIFZJTyBkZXZpY2UgcHJlc2VudCBpbiB0aGUKLSAqIHN5c3RlbSBpcyBpbiBpdHMgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcKLSAqIHZpb19kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlvX2RldmljZV9pZCAqdmlvX21hdGNoX2RldmljZSgKLQkJY29uc3Qgc3RydWN0IHZpb19kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHZpb19kZXYgKmRldikKKy8qIHZpb19kZXYgcmVmY291bnQgaGl0IDAgKi8KK3N0YXRpYyB2b2lkIF9fZGV2aW5pdCB2aW9fZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQogewotCXdoaWxlIChpZHMtPnR5cGVbMF0gIT0gJ1wwJykgewotCQlpZiAodmlvX2J1c19vcHMubWF0Y2goaWRzLCBkZXYpKQotCQkJcmV0dXJuIGlkczsKLQkJaWRzKys7CisJaWYgKGRldi0+cGxhdGZvcm1fZGF0YSkgeworCQkvKiBYWFggZnJlZSBUQ0UgdGFibGUgKi8KKwkJb2Zfbm9kZV9wdXQoZGV2LT5wbGF0Zm9ybV9kYXRhKTsKIAl9Ci0JcmV0dXJuIE5VTEw7CisJa2ZyZWUodG9fdmlvX2RldihkZXYpKTsKIH0KIAogLyoqCisgKiB2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGU6IC0gUmVnaXN0ZXIgYSBuZXcgdmlvIGRldmljZS4KKyAqIEBvZl9ub2RlOglUaGUgT0Ygbm9kZSBmb3IgdGhpcyBkZXZpY2UuCisgKgorICogQ3JlYXRlcyBhbmQgaW5pdGlhbGl6ZXMgYSB2aW9fZGV2IHN0cnVjdHVyZSBmcm9tIHRoZSBkYXRhIGluCisgKiBvZl9ub2RlIChkZXYucGxhdGZvcm1fZGF0YSkgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3Qgb2YgdmlydHVhbCBkZXZpY2VzLgorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgdmlvX2RldiBvciBOVUxMIGlmIG5vZGUgaGFzCisgKiBOVUxMIGRldmljZV90eXBlIG9yIGNvbXBhdGlibGUgZmllbGRzLgorICovCitzdHJ1Y3QgdmlvX2RldiAqIF9fZGV2aW5pdCB2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUoc3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlKQoreworCXN0cnVjdCB2aW9fZGV2ICp2aW9kZXY7CisJdW5zaWduZWQgaW50ICp1bml0X2FkZHJlc3M7CisJdW5zaWduZWQgaW50ICppcnFfcDsKKworCS8qIHdlIG5lZWQgdGhlICdkZXZpY2VfdHlwZScgcHJvcGVydHksIGluIG9yZGVyIHRvIG1hdGNoIHdpdGggZHJpdmVycyAqLworCWlmIChvZl9ub2RlLT50eXBlID09IE5VTEwpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IG5vZGUgJXMgbWlzc2luZyAnZGV2aWNlX3R5cGUnXG4iLAorCQkJCV9fRlVOQ1RJT05fXywKKwkJCQlvZl9ub2RlLT5uYW1lID8gb2Zfbm9kZS0+bmFtZSA6ICI8dW5rbm93bj4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJdW5pdF9hZGRyZXNzID0gKHVuc2lnbmVkIGludCAqKWdldF9wcm9wZXJ0eShvZl9ub2RlLCAicmVnIiwgTlVMTCk7CisJaWYgKHVuaXRfYWRkcmVzcyA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBub2RlICVzIG1pc3NpbmcgJ3JlZydcbiIsCisJCQkJX19GVU5DVElPTl9fLAorCQkJCW9mX25vZGUtPm5hbWUgPyBvZl9ub2RlLT5uYW1lIDogIjx1bmtub3duPiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBhbGxvY2F0ZSBhIHZpb19kZXYgZm9yIHRoaXMgbm9kZSAqLworCXZpb2RldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2aW9fZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKHZpb2RldiA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCXZpb2Rldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBvZl9ub2RlX2dldChvZl9ub2RlKTsKKworCXZpb2Rldi0+aXJxID0gTk9fSVJROworCWlycV9wID0gKHVuc2lnbmVkIGludCAqKWdldF9wcm9wZXJ0eShvZl9ub2RlLCAiaW50ZXJydXB0cyIsIE5VTEwpOworCWlmIChpcnFfcCkgeworCQlpbnQgdmlycSA9IHZpcnRfaXJxX2NyZWF0ZV9tYXBwaW5nKCppcnFfcCk7CisJCWlmICh2aXJxID09IE5PX0lSUSkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJVbmFibGUgdG8gYWxsb2NhdGUgaW50ZXJydXB0ICIKKwkJCSAgICAgICAibnVtYmVyIGZvciAlc1xuIiwgb2Zfbm9kZS0+ZnVsbF9uYW1lKTsKKwkJfSBlbHNlCisJCQl2aW9kZXYtPmlycSA9IGlycV9vZmZzZXRfdXAodmlycSk7CisJfQorCisJc25wcmludGYodmlvZGV2LT5kZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgIiV4IiwgKnVuaXRfYWRkcmVzcyk7CisJdmlvZGV2LT5uYW1lID0gb2Zfbm9kZS0+bmFtZTsKKwl2aW9kZXYtPnR5cGUgPSBvZl9ub2RlLT50eXBlOworCXZpb2Rldi0+dW5pdF9hZGRyZXNzID0gKnVuaXRfYWRkcmVzczsKKwlpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9JU0VSSUVTKSkgeworCQl1bml0X2FkZHJlc3MgPSAodW5zaWduZWQgaW50ICopZ2V0X3Byb3BlcnR5KG9mX25vZGUsCisJCQkJImxpbnV4LHVuaXRfYWRkcmVzcyIsIE5VTEwpOworCQlpZiAodW5pdF9hZGRyZXNzICE9IE5VTEwpCisJCQl2aW9kZXYtPnVuaXRfYWRkcmVzcyA9ICp1bml0X2FkZHJlc3M7CisJfQorCXZpb2Rldi0+aW9tbXVfdGFibGUgPSB2aW9fYnVpbGRfaW9tbXVfdGFibGUodmlvZGV2KTsKKworCS8qIGluaXQgZ2VuZXJpYyAnc3RydWN0IGRldmljZScgZmllbGRzOiAqLworCXZpb2Rldi0+ZGV2LnBhcmVudCA9ICZ2aW9fYnVzX2RldmljZS5kZXY7CisJdmlvZGV2LT5kZXYuYnVzID0gJnZpb19idXNfdHlwZTsKKwl2aW9kZXYtPmRldi5yZWxlYXNlID0gdmlvX2Rldl9yZWxlYXNlOworCisJLyogcmVnaXN0ZXIgd2l0aCBnZW5lcmljIGRldmljZSBmcmFtZXdvcmsgKi8KKwlpZiAoZGV2aWNlX3JlZ2lzdGVyKCZ2aW9kZXYtPmRldikpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIGRldmljZSAlc1xuIiwKKwkJCQlfX0ZVTkNUSU9OX18sIHZpb2Rldi0+ZGV2LmJ1c19pZCk7CisJCS8qIFhYWCBmcmVlIFRDRSB0YWJsZSAqLworCQlrZnJlZSh2aW9kZXYpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gdmlvZGV2OworfQorRVhQT1JUX1NZTUJPTCh2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUpOworCisvKioKICAqIHZpb19idXNfaW5pdDogLSBJbml0aWFsaXplIHRoZSB2aXJ0dWFsIElPIGJ1cwogICovCi1pbnQgX19pbml0IHZpb19idXNfaW5pdChzdHJ1Y3QgdmlvX2J1c19vcHMgKm9wcykKK3N0YXRpYyBpbnQgX19pbml0IHZpb19idXNfaW5pdCh2b2lkKQogewogCWludCBlcnI7CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlX3Zyb290OwogCi0JdmlvX2J1c19vcHMgPSAqb3BzOworI2lmZGVmIENPTkZJR19QUENfSVNFUklFUworCWlmIChmaXJtd2FyZV9oYXNfZmVhdHVyZShGV19GRUFUVVJFX0lTRVJJRVMpKSB7CisJCWlvbW11X3Zpb19pbml0KCk7CisJCXZpb19idXNfZGV2aWNlLmlvbW11X3RhYmxlID0gJnZpb19pb21tdV90YWJsZTsKKwkJaVNlcmllc192aW9fZGV2ID0gJnZpb19idXNfZGV2aWNlLmRldjsKKwl9CisjZW5kaWYKIAogCWVyciA9IGJ1c19yZWdpc3RlcigmdmlvX2J1c190eXBlKTsKIAlpZiAoZXJyKSB7CkBAIC0xNTMsNDcgKzMxNyw0OCBAQAogCQlyZXR1cm4gZXJyOwogCX0KIAorCW5vZGVfdnJvb3QgPSBmaW5kX2RldmljZXMoInZkZXZpY2UiKTsKKwlpZiAobm9kZV92cm9vdCkgeworCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGU7CisKKwkJLyoKKwkJICogQ3JlYXRlIHN0cnVjdCB2aW9fZGV2aWNlcyBmb3IgZWFjaCB2aXJ0dWFsIGRldmljZSBpbgorCQkgKiB0aGUgZGV2aWNlIHRyZWUuIERyaXZlcnMgd2lsbCBhc3NvY2lhdGUgd2l0aCB0aGVtIGxhdGVyLgorCQkgKi8KKwkJZm9yIChvZl9ub2RlID0gbm9kZV92cm9vdC0+Y2hpbGQ7IG9mX25vZGUgIT0gTlVMTDsKKwkJCQlvZl9ub2RlID0gb2Zfbm9kZS0+c2libGluZykgeworCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBwcm9jZXNzaW5nICVwXG4iLAorCQkJCQlfX0ZVTkNUSU9OX18sIG9mX25vZGUpOworCQkJdmlvX3JlZ2lzdGVyX2RldmljZV9ub2RlKG9mX25vZGUpOworCQl9CisJfQorCiAJcmV0dXJuIDA7CiB9CitfX2luaXRjYWxsKHZpb19idXNfaW5pdCk7CiAKLS8qIHZpb19kZXYgcmVmY291bnQgaGl0IDAgKi8KLXN0YXRpYyB2b2lkIF9fZGV2aW5pdCB2aW9fZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQotewotCWlmICh2aW9fYnVzX29wcy5yZWxlYXNlX2RldmljZSkKLQkJdmlvX2J1c19vcHMucmVsZWFzZV9kZXZpY2UoZGV2KTsKLQlrZnJlZSh0b192aW9fZGV2KGRldikpOwotfQotCi1zdGF0aWMgc3NpemVfdCB2aW9kZXZfc2hvd19uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwKK3N0YXRpYyBzc2l6ZV90IG5hbWVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIHRvX3Zpb19kZXYoZGV2KS0+bmFtZSk7CiB9Ci1ERVZJQ0VfQVRUUihuYW1lLCBTX0lSVVNSIHwgU19JUkdSUCB8IFNfSVJPVEgsIHZpb2Rldl9zaG93X25hbWUsIE5VTEwpOwogCi1zdHJ1Y3QgdmlvX2RldiAqIF9fZGV2aW5pdCB2aW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB2aW9fZGV2ICp2aW9kZXYpCitzdGF0aWMgc3NpemVfdCBkZXZzcGVjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewotCS8qIGluaXQgZ2VuZXJpYyAnc3RydWN0IGRldmljZScgZmllbGRzOiAqLwotCXZpb2Rldi0+ZGV2LnBhcmVudCA9ICZ2aW9fYnVzX2RldmljZS5kZXY7Ci0JdmlvZGV2LT5kZXYuYnVzID0gJnZpb19idXNfdHlwZTsKLQl2aW9kZXYtPmRldi5yZWxlYXNlID0gdmlvX2Rldl9yZWxlYXNlOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZSA9IGRldi0+cGxhdGZvcm1fZGF0YTsKIAotCS8qIHJlZ2lzdGVyIHdpdGggZ2VuZXJpYyBkZXZpY2UgZnJhbWV3b3JrICovCi0JaWYgKGRldmljZV9yZWdpc3RlcigmdmlvZGV2LT5kZXYpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGZhaWxlZCB0byByZWdpc3RlciBkZXZpY2UgJXNcbiIsCi0JCQkJX19GVU5DVElPTl9fLCB2aW9kZXYtPmRldi5idXNfaWQpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JZGV2aWNlX2NyZWF0ZV9maWxlKCZ2aW9kZXYtPmRldiwgJmRldl9hdHRyX25hbWUpOwotCi0JcmV0dXJuIHZpb2RldjsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgb2Zfbm9kZSA/IG9mX25vZGUtPmZ1bGxfbmFtZSA6ICJub25lIik7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSB2aW9fZGV2X2F0dHJzW10gPSB7CisJX19BVFRSX1JPKG5hbWUpLAorCV9fQVRUUl9STyhkZXZzcGVjKSwKKwlfX0FUVFJfTlVMTAorfTsKKwogdm9pZCBfX2RldmluaXQgdmlvX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB2aW9fZGV2ICp2aW9kZXYpCiB7Ci0JaWYgKHZpb19idXNfb3BzLnVucmVnaXN0ZXJfZGV2aWNlKQotCQl2aW9fYnVzX29wcy51bnJlZ2lzdGVyX2RldmljZSh2aW9kZXYpOwotCWRldmljZV9yZW1vdmVfZmlsZSgmdmlvZGV2LT5kZXYsICZkZXZfYXR0cl9uYW1lKTsKIAlkZXZpY2VfdW5yZWdpc3RlcigmdmlvZGV2LT5kZXYpOwogfQogRVhQT1JUX1NZTUJPTCh2aW9fdW5yZWdpc3Rlcl9kZXZpY2UpOwpAQCAtMjI5LDcgKzM5NCw3IEBACiAJCQkgICBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLCBnZnBfdCBmbGFnKQogewogCXJldHVybiBpb21tdV9hbGxvY19jb2hlcmVudCh0b192aW9fZGV2KGRldiktPmlvbW11X3RhYmxlLCBzaXplLAotCQkJZG1hX2hhbmRsZSwgfjB1bCwgZmxhZyk7CisJCQlkbWFfaGFuZGxlLCB+MHVsLCBmbGFnLCAtMSk7CiB9CiAKIHN0YXRpYyB2b2lkIHZpb19mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCkBAIC0yNjcsMjIgKzQzMiwyMyBAQAogCQkJY2hhciAqYnVmZmVyLCBpbnQgYnVmZmVyX3NpemUpCiB7CiAJY29uc3Qgc3RydWN0IHZpb19kZXYgKnZpb19kZXYgPSB0b192aW9fZGV2KGRldik7CisJc3RydWN0IGRldmljZV9ub2RlICpkbiA9IGRldi0+cGxhdGZvcm1fZGF0YTsKIAljaGFyICpjcDsKIAlpbnQgbGVuZ3RoOwogCiAJaWYgKCFudW1fZW52cCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlpZiAoIXZpb19kZXYtPmRldi5wbGF0Zm9ybV9kYXRhKQorCWlmICghZG4pCiAJCXJldHVybiAtRU5PREVWOwotCWNwID0gKGNoYXIgKilnZXRfcHJvcGVydHkodmlvX2Rldi0+ZGV2LnBsYXRmb3JtX2RhdGEsICJjb21wYXRpYmxlIiwgJmxlbmd0aCk7CisJY3AgPSAoY2hhciAqKWdldF9wcm9wZXJ0eShkbiwgImNvbXBhdGlibGUiLCAmbGVuZ3RoKTsKIAlpZiAoIWNwKQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCWVudnBbMF0gPSBidWZmZXI7CiAJbGVuZ3RoID0gc2NucHJpbnRmKGJ1ZmZlciwgYnVmZmVyX3NpemUsICJNT0RBTElBUz12aW86VCVzUyVzIiwKIAkJCQl2aW9fZGV2LT50eXBlLCBjcCk7Ci0JaWYgKGJ1ZmZlcl9zaXplIC0gbGVuZ3RoIDw9IDApCisJaWYgKChidWZmZXJfc2l6ZSAtIGxlbmd0aCkgPD0gMCkKIAkJcmV0dXJuIC1FTk9NRU07CiAJZW52cFsxXSA9IE5VTEw7CiAJcmV0dXJuIDA7CkBAIC0yOTAsOSArNDU2LDgxIEBACiAKIHN0cnVjdCBidXNfdHlwZSB2aW9fYnVzX3R5cGUgPSB7CiAJLm5hbWUgPSAidmlvIiwKKwkuZGV2X2F0dHJzID0gdmlvX2Rldl9hdHRycywKIAkudWV2ZW50ID0gdmlvX2hvdHBsdWcsCiAJLm1hdGNoID0gdmlvX2J1c19tYXRjaCwKIAkucHJvYmUgPSB2aW9fYnVzX3Byb2JlLAogCS5yZW1vdmUgPSB2aW9fYnVzX3JlbW92ZSwKIAkuc2h1dGRvd24gPSB2aW9fYnVzX3NodXRkb3duLAogfTsKKworLyoqCisgKiB2aW9fZ2V0X2F0dHJpYnV0ZTogLSBnZXQgYXR0cmlidXRlIGZvciB2aXJ0dWFsIGRldmljZQorICogQHZkZXY6CVRoZSB2aW8gZGV2aWNlIHRvIGdldCBwcm9wZXJ0eS4KKyAqIEB3aGljaDoJVGhlIHByb3BlcnR5L2F0dHJpYnV0ZSB0byBiZSBleHRyYWN0ZWQuCisgKiBAbGVuZ3RoOglQb2ludGVyIHRvIGxlbmd0aCBvZiByZXR1cm5lZCBkYXRhIHNpemUgKHVudXNlZCBpZiBOVUxMKS4KKyAqCisgKiBDYWxscyBwcm9tLmMncyBnZXRfcHJvcGVydHkoKSB0byByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZQorICogYXR0cmlidXRlIHNwZWNpZmllZCBieSBAd2hpY2gKKyovCitjb25zdCB2b2lkICp2aW9fZ2V0X2F0dHJpYnV0ZShzdHJ1Y3QgdmlvX2RldiAqdmRldiwgY2hhciAqd2hpY2gsIGludCAqbGVuZ3RoKQoreworCXJldHVybiBnZXRfcHJvcGVydHkodmRldi0+ZGV2LnBsYXRmb3JtX2RhdGEsIHdoaWNoLCBsZW5ndGgpOworfQorRVhQT1JUX1NZTUJPTCh2aW9fZ2V0X2F0dHJpYnV0ZSk7CisKKyNpZmRlZiBDT05GSUdfUFBDX1BTRVJJRVMKKy8qIHZpb19maW5kX25hbWUoKSAtIGludGVybmFsIGJlY2F1c2Ugb25seSB2aW8uYyBrbm93cyBob3cgd2UgZm9ybWF0dGVkIHRoZQorICoga29iamVjdCBuYW1lCisgKiBYWFggb25jZSB2aW9fYnVzX3R5cGUuZGV2aWNlcyBpcyBhY3R1YWxseSB1c2VkIGFzIGEga3NldCBpbgorICogZHJpdmVycy9iYXNlL2J1cy5jLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mCisgKiAiZGV2aWNlX2ZpbmQoa29ial9uYW1lLCAmdmlvX2J1c190eXBlKSIKKyAqLworc3RhdGljIHN0cnVjdCB2aW9fZGV2ICp2aW9fZmluZF9uYW1lKGNvbnN0IGNoYXIgKmtvYmpfbmFtZSkKK3sKKwlzdHJ1Y3Qga29iamVjdCAqZm91bmQ7CisKKwlmb3VuZCA9IGtzZXRfZmluZF9vYmooJmRldmljZXNfc3Vic3lzLmtzZXQsIGtvYmpfbmFtZSk7CisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gdG9fdmlvX2Rldihjb250YWluZXJfb2YoZm91bmQsIHN0cnVjdCBkZXZpY2UsIGtvYmopKTsKK30KKworLyoqCisgKiB2aW9fZmluZF9ub2RlIC0gZmluZCBhbiBhbHJlYWR5LXJlZ2lzdGVyZWQgdmlvX2RldgorICogQHZub2RlOiBkZXZpY2Vfbm9kZSBvZiB0aGUgdmlydHVhbCBkZXZpY2Ugd2UncmUgbG9va2luZyBmb3IKKyAqLworc3RydWN0IHZpb19kZXYgKnZpb19maW5kX25vZGUoc3RydWN0IGRldmljZV9ub2RlICp2bm9kZSkKK3sKKwl1aW50MzJfdCAqdW5pdF9hZGRyZXNzOworCWNoYXIga29ial9uYW1lW0JVU19JRF9TSVpFXTsKKworCS8qIGNvbnN0cnVjdCB0aGUga29iamVjdCBuYW1lIGZyb20gdGhlIGRldmljZSBub2RlICovCisJdW5pdF9hZGRyZXNzID0gKHVpbnQzMl90ICopZ2V0X3Byb3BlcnR5KHZub2RlLCAicmVnIiwgTlVMTCk7CisJaWYgKCF1bml0X2FkZHJlc3MpCisJCXJldHVybiBOVUxMOworCXNucHJpbnRmKGtvYmpfbmFtZSwgQlVTX0lEX1NJWkUsICIleCIsICp1bml0X2FkZHJlc3MpOworCisJcmV0dXJuIHZpb19maW5kX25hbWUoa29ial9uYW1lKTsKK30KK0VYUE9SVF9TWU1CT0wodmlvX2ZpbmRfbm9kZSk7CisKK2ludCB2aW9fZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IHZpb19kZXYgKmRldikKK3sKKwlpbnQgcmMgPSBoX3Zpb19zaWduYWwoZGV2LT51bml0X2FkZHJlc3MsIFZJT19JUlFfRU5BQkxFKTsKKwlpZiAocmMgIT0gSF9TVUNDRVNTKQorCQlwcmludGsoS0VSTl9FUlIgInZpbzogRXJyb3IgMHgleCBlbmFibGluZyBpbnRlcnJ1cHRzXG4iLCByYyk7CisJcmV0dXJuIHJjOworfQorRVhQT1JUX1NZTUJPTCh2aW9fZW5hYmxlX2ludGVycnVwdHMpOworCitpbnQgdmlvX2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgdmlvX2RldiAqZGV2KQoreworCWludCByYyA9IGhfdmlvX3NpZ25hbChkZXYtPnVuaXRfYWRkcmVzcywgVklPX0lSUV9ESVNBQkxFKTsKKwlpZiAocmMgIT0gSF9TVUNDRVNTKQorCQlwcmludGsoS0VSTl9FUlIgInZpbzogRXJyb3IgMHgleCBkaXNhYmxpbmcgaW50ZXJydXB0c1xuIiwgcmMpOworCXJldHVybiByYzsKK30KK0VYUE9SVF9TWU1CT0wodmlvX2Rpc2FibGVfaW50ZXJydXB0cyk7CisjZW5kaWYgLyogQ09ORklHX1BQQ19QU0VSSUVTICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3ZtbGludXgubGRzLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3ZtbGludXgubGRzLlMKaW5kZXggZmU3OWMyNTguLjhiMjU5NTMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3ZtbGludXgubGRzLlMKQEAgLTkzLDYgKzkzLDExIEBACiAJCV9fcHRvdl90YWJsZV9iZWdpbiA9IC47CiAJCSooLnB0b3ZfZml4dXApOwogCQlfX3B0b3ZfdGFibGVfZW5kID0gLjsKKyNpZmRlZiBDT05GSUdfUFBDX0lTRVJJRVMKKwkJX19kdF9zdHJpbmdzX3N0YXJ0ID0gLjsKKwkJKiguZHRfc3RyaW5ncyk7CisJCV9fZHRfc3RyaW5nc19lbmQgPSAuOworI2VuZGlmCiAJfQogCiAJLiA9IEFMSUdOKDE2KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9saWIvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvbGliL01ha2VmaWxlCmluZGV4IDM0ZjVjMmUuLmZmNzA5NjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9saWIvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL2xpYi9NYWtlZmlsZQpAQCAtMiwxMiArMiwxNSBAQAogIyBNYWtlZmlsZSBmb3IgcHBjLXNwZWNpZmljIGxpYnJhcnkgZmlsZXMuLgogIwogCitpZmVxICgkKENPTkZJR19QUEM2NCkseSkKK0VYVFJBX0NGTEFHUwkJKz0gLW1uby1taW5pbWFsLXRvYworZW5kaWYKKwogaWZlcSAoJChDT05GSUdfUFBDX01FUkdFKSx5KQogb2JqLXkJCQk6PSBzdHJpbmcubyBzdHJjYXNlLm8KIG9iai0kKENPTkZJR19QUEMzMikJKz0gZGl2NjQubyBjb3B5XzMyLm8gY2hlY2tzdW1fMzIubwogZW5kaWYKIAotb2JqLXkJCQkrPSBiaXRvcHMubwogb2JqLSQoQ09ORklHX1BQQzY0KQkrPSBjaGVja3N1bV82NC5vIGNvcHlwYWdlXzY0Lm8gY29weXVzZXJfNjQubyBcCiAJCQkgICBtZW1jcHlfNjQubyB1c2VyY29weV82NC5vIG1lbV82NC5vIHN0cmluZy5vIFwKIAkJCSAgIHN0cmNhc2UubwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2xpYi9iaXRvcHMuYyBiL2FyY2gvcG93ZXJwYy9saWIvYml0b3BzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OGFkNzEuLjAwMDAwMDAKLS0tIGEvYXJjaC9wb3dlcnBjL2xpYi9iaXRvcHMuYworKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+Ci0jaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgotCi0vKioKLSAqIGZpbmRfbmV4dF9iaXQgLSBmaW5kIHRoZSBuZXh0IHNldCBiaXQgaW4gYSBtZW1vcnkgcmVnaW9uCi0gKiBAYWRkcjogVGhlIGFkZHJlc3MgdG8gYmFzZSB0aGUgc2VhcmNoIG9uCi0gKiBAb2Zmc2V0OiBUaGUgYml0bnVtYmVyIHRvIHN0YXJ0IHNlYXJjaGluZyBhdAotICogQHNpemU6IFRoZSBtYXhpbXVtIHNpemUgdG8gc2VhcmNoCi0gKi8KLXVuc2lnbmVkIGxvbmcgZmluZF9uZXh0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpCi17Ci0JY29uc3QgdW5zaWduZWQgbG9uZyAqcCA9IGFkZHIgKyBCSVRPUF9XT1JEKG9mZnNldCk7Ci0JdW5zaWduZWQgbG9uZyByZXN1bHQgPSBvZmZzZXQgJiB+KEJJVFNfUEVSX0xPTkctMSk7Ci0JdW5zaWduZWQgbG9uZyB0bXA7Ci0KLQlpZiAob2Zmc2V0ID49IHNpemUpCi0JCXJldHVybiBzaXplOwotCXNpemUgLT0gcmVzdWx0OwotCW9mZnNldCAlPSBCSVRTX1BFUl9MT05HOwotCWlmIChvZmZzZXQpIHsKLQkJdG1wID0gKihwKyspOwotCQl0bXAgJj0gKH4wVUwgPDwgb2Zmc2V0KTsKLQkJaWYgKHNpemUgPCBCSVRTX1BFUl9MT05HKQotCQkJZ290byBmb3VuZF9maXJzdDsKLQkJaWYgKHRtcCkKLQkJCWdvdG8gZm91bmRfbWlkZGxlOwotCQlzaXplIC09IEJJVFNfUEVSX0xPTkc7Ci0JCXJlc3VsdCArPSBCSVRTX1BFUl9MT05HOwotCX0KLQl3aGlsZSAoc2l6ZSAmIH4oQklUU19QRVJfTE9ORy0xKSkgewotCQlpZiAoKHRtcCA9ICoocCsrKSkpCi0JCQlnb3RvIGZvdW5kX21pZGRsZTsKLQkJcmVzdWx0ICs9IEJJVFNfUEVSX0xPTkc7Ci0JCXNpemUgLT0gQklUU19QRVJfTE9ORzsKLQl9Ci0JaWYgKCFzaXplKQotCQlyZXR1cm4gcmVzdWx0OwotCXRtcCA9ICpwOwotCi1mb3VuZF9maXJzdDoKLQl0bXAgJj0gKH4wVUwgPj4gKEJJVFNfUEVSX0xPTkcgLSBzaXplKSk7Ci0JaWYgKHRtcCA9PSAwVUwpCQkvKiBBcmUgYW55IGJpdHMgc2V0PyAqLwotCQlyZXR1cm4gcmVzdWx0ICsgc2l6ZTsJLyogTm9wZS4gKi8KLWZvdW5kX21pZGRsZToKLQlyZXR1cm4gcmVzdWx0ICsgX19mZnModG1wKTsKLX0KLUVYUE9SVF9TWU1CT0woZmluZF9uZXh0X2JpdCk7Ci0KLS8qCi0gKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGZpbmRfe2ZpcnN0LG5leHR9X3plcm9fYml0IHdhcyBzdG9sZW4gZnJvbQotICogTGludXMnIGFzbS1hbHBoYS9iaXRvcHMuaC4KLSAqLwotdW5zaWduZWQgbG9uZyBmaW5kX25leHRfemVyb19iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLAotCQkJCSB1bnNpZ25lZCBsb25nIG9mZnNldCkKLXsKLQljb25zdCB1bnNpZ25lZCBsb25nICpwID0gYWRkciArIEJJVE9QX1dPUkQob2Zmc2V0KTsKLQl1bnNpZ25lZCBsb25nIHJlc3VsdCA9IG9mZnNldCAmIH4oQklUU19QRVJfTE9ORy0xKTsKLQl1bnNpZ25lZCBsb25nIHRtcDsKLQotCWlmIChvZmZzZXQgPj0gc2l6ZSkKLQkJcmV0dXJuIHNpemU7Ci0Jc2l6ZSAtPSByZXN1bHQ7Ci0Jb2Zmc2V0ICU9IEJJVFNfUEVSX0xPTkc7Ci0JaWYgKG9mZnNldCkgewotCQl0bXAgPSAqKHArKyk7Ci0JCXRtcCB8PSB+MFVMID4+IChCSVRTX1BFUl9MT05HIC0gb2Zmc2V0KTsKLQkJaWYgKHNpemUgPCBCSVRTX1BFUl9MT05HKQotCQkJZ290byBmb3VuZF9maXJzdDsKLQkJaWYgKH50bXApCi0JCQlnb3RvIGZvdW5kX21pZGRsZTsKLQkJc2l6ZSAtPSBCSVRTX1BFUl9MT05HOwotCQlyZXN1bHQgKz0gQklUU19QRVJfTE9ORzsKLQl9Ci0Jd2hpbGUgKHNpemUgJiB+KEJJVFNfUEVSX0xPTkctMSkpIHsKLQkJaWYgKH4odG1wID0gKihwKyspKSkKLQkJCWdvdG8gZm91bmRfbWlkZGxlOwotCQlyZXN1bHQgKz0gQklUU19QRVJfTE9ORzsKLQkJc2l6ZSAtPSBCSVRTX1BFUl9MT05HOwotCX0KLQlpZiAoIXNpemUpCi0JCXJldHVybiByZXN1bHQ7Ci0JdG1wID0gKnA7Ci0KLWZvdW5kX2ZpcnN0OgotCXRtcCB8PSB+MFVMIDw8IHNpemU7Ci0JaWYgKHRtcCA9PSB+MFVMKQkvKiBBcmUgYW55IGJpdHMgemVybz8gKi8KLQkJcmV0dXJuIHJlc3VsdCArIHNpemU7CS8qIE5vcGUuICovCi1mb3VuZF9taWRkbGU6Ci0JcmV0dXJuIHJlc3VsdCArIGZmeih0bXApOwotfQotRVhQT1JUX1NZTUJPTChmaW5kX25leHRfemVyb19iaXQpOwotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBleHQyX2lsb2cyKHVuc2lnbmVkIGludCB4KQotewotCWludCBsejsKLQotCWFzbSgiY250bHp3ICUwLCUxIjogIj1yIihseik6InIiKHgpKTsKLQlyZXR1cm4gMzEgLSBsejsKLX0KLQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZXh0Ml9mZnoodW5zaWduZWQgaW50IHgpCi17Ci0JdTMyIHJjOwotCWlmICgoeCA9IH54KSA9PSAwKQotCQlyZXR1cm4gMzI7Ci0JcmMgPSBleHQyX2lsb2cyKHggJiAteCk7Ci0JcmV0dXJuIHJjOwotfQotCi11bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2xlX2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAotCQkJCSAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQotewotCWNvbnN0IHVuc2lnbmVkIGludCAqcCA9ICgoY29uc3QgdW5zaWduZWQgaW50ICopYWRkcikgKyAob2Zmc2V0ID4+IDUpOwotCXVuc2lnbmVkIGludCByZXN1bHQgPSBvZmZzZXQgJiB+MzE7Ci0JdW5zaWduZWQgaW50IHRtcDsKLQotCWlmIChvZmZzZXQgPj0gc2l6ZSkKLQkJcmV0dXJuIHNpemU7Ci0Jc2l6ZSAtPSByZXN1bHQ7Ci0Jb2Zmc2V0ICY9IDMxOwotCWlmIChvZmZzZXQpIHsKLQkJdG1wID0gY3B1X3RvX2xlMzJwKHArKyk7Ci0JCXRtcCB8PSB+MFUgPj4gKDMyIC0gb2Zmc2V0KTsJLyogYnVnIG9yIGZlYXR1cmUgPyAqLwotCQlpZiAoc2l6ZSA8IDMyKQotCQkJZ290byBmb3VuZF9maXJzdDsKLQkJaWYgKHRtcCAhPSB+MCkKLQkJCWdvdG8gZm91bmRfbWlkZGxlOwotCQlzaXplIC09IDMyOwotCQlyZXN1bHQgKz0gMzI7Ci0JfQotCXdoaWxlIChzaXplID49IDMyKSB7Ci0JCWlmICgodG1wID0gY3B1X3RvX2xlMzJwKHArKykpICE9IH4wKQotCQkJZ290byBmb3VuZF9taWRkbGU7Ci0JCXJlc3VsdCArPSAzMjsKLQkJc2l6ZSAtPSAzMjsKLQl9Ci0JaWYgKCFzaXplKQotCQlyZXR1cm4gcmVzdWx0OwotCXRtcCA9IGNwdV90b19sZTMycChwKTsKLWZvdW5kX2ZpcnN0OgotCXRtcCB8PSB+MCA8PCBzaXplOwotCWlmICh0bXAgPT0gfjApCQkvKiBBcmUgYW55IGJpdHMgemVybz8gKi8KLQkJcmV0dXJuIHJlc3VsdCArIHNpemU7CS8qIE5vcGUuICovCi1mb3VuZF9taWRkbGU6Ci0JcmV0dXJuIHJlc3VsdCArIGV4dDJfZmZ6KHRtcCk7Ci19Ci1FWFBPUlRfU1lNQk9MKGZpbmRfbmV4dF96ZXJvX2xlX2JpdCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfMzIuUyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd18zMi5TCmluZGV4IGVhNDY5ZWUuLjk0MjU1YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd18zMi5TCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd18zMi5TCkBAIC03NCwxMiArNzQsNiBAQAogICovCiAJLnRleHQKIF9HTE9CQUwoaGFzaF9wYWdlKQotI2lmZGVmIENPTkZJR19QUEM2NEJSSURHRQotCW1mbXNyCXIwCi0JY2xybGRpCXIwLHIwLDEJCS8qIG1ha2Ugc3VyZSBpdCdzIGluIDMyLWJpdCBtb2RlICovCi0JTVRNU1JEKHIwKQotCWlzeW5jCi0jZW5kaWYKIAl0b3BoeXMocjcsMCkJCQkvKiBnZXRzIC1LRVJORUxCQVNFIGludG8gcjcgKi8KICNpZmRlZiBDT05GSUdfU01QCiAJYWRkaXMJcjgscjcsbW11X2hhc2hfbG9ja0BoCkBAIC0yODUsNyArMjc5LDYgQEAKIEhhc2hfYml0cyA9IDEyCQkJCS8qIGUuZy4gMjU2a0IgaGFzaCB0YWJsZSAqLwogSGFzaF9tc2sgPSAoKCgxIDw8IEhhc2hfYml0cykgLSAxKSAqIDY0KQogCi0jaWZuZGVmIENPTkZJR19QUEM2NEJSSURHRQogLyogZGVmaW5lcyBmb3IgdGhlIFBURSBmb3JtYXQgZm9yIDMyLWJpdCBQUENzICovCiAjZGVmaW5lIFBURV9TSVpFCTgKICNkZWZpbmUgUFRFR19TSVpFCTY0CkBAIC0yOTksMjEgKzI5Miw2IEBACiAjZGVmaW5lIFNFVF9WKHIpCW9yaXMgcixyLFBURV9WQGgKICNkZWZpbmUgQ0xSX1Yocix0KQlybHdpbm0gcixyLDAsMSwzMQogCi0jZWxzZQotLyogZGVmaW5lcyBmb3IgdGhlIFBURSBmb3JtYXQgZm9yIDY0LWJpdCBQUENzICovCi0jZGVmaW5lIFBURV9TSVpFCTE2Ci0jZGVmaW5lIFBURUdfU0laRQkxMjgKLSNkZWZpbmUgTEdfUFRFR19TSVpFCTcKLSNkZWZpbmUgTERQVEV1CQlsZHUKLSNkZWZpbmUgU1RQVEUJCXN0ZAotI2RlZmluZSBDTVBQVEUJCWNtcGQKLSNkZWZpbmUgUFRFX0gJCTIKLSNkZWZpbmUgUFRFX1YJCTEKLSNkZWZpbmUgVFNUX1YocikJYW5kaS4gcixyLFBURV9WCi0jZGVmaW5lIFNFVF9WKHIpCW9yaSByLHIsUFRFX1YKLSNkZWZpbmUgQ0xSX1Yocix0KQlsaSB0LFBURV9WOyBhbmRjIHIscix0Ci0jZW5kaWYgLyogQ09ORklHX1BQQzY0QlJJREdFICovCi0KICNkZWZpbmUgSEFTSF9MRUZUCTMxLShMR19QVEVHX1NJWkUrSGFzaF9iaXRzLTEpCiAjZGVmaW5lIEhBU0hfUklHSFQJMzEtTEdfUFRFR19TSVpFCiAKQEAgLTMzMSwxNCArMzA5LDggQEAKIEVORF9GVFJfU0VDVElPTl9JRlNFVChDUFVfRlRSX05FRURfQ09IRVJFTlQpCiAKIAkvKiBDb25zdHJ1Y3QgdGhlIGhpZ2ggd29yZCBvZiB0aGUgUFBDLXN0eWxlIFBURSAocjUpICovCi0jaWZuZGVmIENPTkZJR19QUEM2NEJSSURHRQogCXJsd2lubQlyNSxyMyw3LDEsMjQJCS8qIHB1dCBWU0lEIGluIDB4N2ZmZmZmODAgYml0cyAqLwogCXJsd2ltaQlyNSxyNCwxMCwyNiwzMQkJLyogcHV0IGluIEFQSSAoYWJicmV2IHBhZ2UgaW5kZXgpICovCi0jZWxzZSAvKiBDT05GSUdfUFBDNjRCUklER0UgKi8KLQljbHJsd2kJcjMscjMsOAkJCS8qIHJlZHVjZSB2c2lkIHRvIDI0IGJpdHMgKi8KLQlzbGRpCXI1LHIzLDEyCQkvKiBzaGlmdCB2c2lkIGludG8gcG9zaXRpb24gKi8KLQlybHdpbWkJcjUscjQsMTYsMjAsMjQJCS8qIHB1dCBpbiBBUEkgKGFiYnJldiBwYWdlIGluZGV4KSAqLwotI2VuZGlmIC8qIENPTkZJR19QUEM2NEJSSURHRSAqLwogCVNFVF9WKHI1KQkJCS8qIHNldCBWICh2YWxpZCkgYml0ICovCiAKIAkvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHByaW1hcnkgUFRFIGdyb3VwIGluIHRoZSBoYXNoIHRhYmxlIChyMykgKi8KQEAgLTUxNiwxNCArNDg4LDggQEAKIAlhZGQJcjMscjMscjAJCS8qIG5vdGUgY29kZSBiZWxvdyB0cmltcyB0byAyNCBiaXRzICovCiAKIAkvKiBDb25zdHJ1Y3QgdGhlIGhpZ2ggd29yZCBvZiB0aGUgUFBDLXN0eWxlIFBURSAocjExKSAqLwotI2lmbmRlZiBDT05GSUdfUFBDNjRCUklER0UKIAlybHdpbm0JcjExLHIzLDcsMSwyNAkJLyogcHV0IFZTSUQgaW4gMHg3ZmZmZmY4MCBiaXRzICovCiAJcmx3aW1pCXIxMSxyNCwxMCwyNiwzMQkJLyogcHV0IGluIEFQSSAoYWJicmV2IHBhZ2UgaW5kZXgpICovCi0jZWxzZSAvKiBDT05GSUdfUFBDNjRCUklER0UgKi8KLQljbHJsd2kJcjMscjMsOAkJCS8qIHJlZHVjZSB2c2lkIHRvIDI0IGJpdHMgKi8KLQlzbGRpCXIxMSxyMywxMgkJLyogc2hpZnQgdnNpZCBpbnRvIHBvc2l0aW9uICovCi0Jcmx3aW1pCXIxMSxyNCwxNiwyMCwyNAkJLyogcHV0IGluIEFQSSAoYWJicmV2IHBhZ2UgaW5kZXgpICovCi0jZW5kaWYgLyogQ09ORklHX1BQQzY0QlJJREdFICovCiAJU0VUX1YocjExKQkJCS8qIHNldCBWICh2YWxpZCkgYml0ICovCiAKICNpZmRlZiBDT05GSUdfU01QCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfNjQuUyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCmluZGV4IGUwZDAyYzQuLjUyZTkxNDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCkBAIC0xMzYsNiArMTM2LDcgQEAKIAlhbmQJcjAscjAscjQJCS8qIF9QQUdFX1JXICYgX1BBR0VfRElSVFkgLT5yMCBiaXQgMzAqLwogCWFuZGMJcjAscjMwLHIwCQkvKiByMCA9IHB0ZSAmIH5yMCAqLwogCXJsd2ltaQlyMyxyMCwzMi0xLDMxLDMxCS8qIEluc2VydCByZXN1bHQgaW50byBQUCBsc2IgKi8KKwlvcmkJcjMscjMsSFBURV9SX0MJCS8qIEFsd2F5cyBhZGQgIkMiIGJpdCBmb3IgcGVyZi4gKi8KIAogCS8qIFdlIGV2ZW50dWFsbHkgZG8gdGhlIGljYWNoZSBzeW5jIGhlcmUgKG1heWJlIGlubGluZSB0aGF0CiAJICogY29kZSByYXRoZXIgdGhhbiBjYWxsIGEgQyBmdW5jdGlvbi4uLikgCkBAIC0zNjgsNiArMzY5LDcgQEAKIAlybHdpbm0JcjMwLHI0LDMyLTkrNywzMS03LDMxLTcJLyogX1BBR0VfUlcgLT4gX1BBR0VfRElSVFkgKi8KIAlvcglyMzAscjMwLHIzMQogCW9yaQlyMzAscjMwLF9QQUdFX0JVU1kgfCBfUEFHRV9BQ0NFU1NFRCB8IF9QQUdFX0hBU0hQVEUKKwlvcmlzCXIzMCxyMzAsX1BBR0VfQ09NQk9AaAogCS8qIFdyaXRlIHRoZSBsaW51eCBQVEUgYXRvbWljYWxseSAoc2V0dGluZyBidXN5KSAqLwogCXN0ZGN4LglyMzAsMCxyNgogCWJuZS0JMWIKQEAgLTQwMCw2ICs0MDIsNyBAQAogCWFuZAlyMCxyMCxyNAkJLyogX1BBR0VfUlcgJiBfUEFHRV9ESVJUWSAtPnIwIGJpdCAzMCovCiAJYW5kYwlyMCxyMzAscjAJCS8qIHIwID0gcHRlICYgfnIwICovCiAJcmx3aW1pCXIzLHIwLDMyLTEsMzEsMzEJLyogSW5zZXJ0IHJlc3VsdCBpbnRvIFBQIGxzYiAqLworCW9yaQlyMyxyMyxIUFRFX1JfQwkJLyogQWx3YXlzIGFkZCAiQyIgYml0IGZvciBwZXJmLiAqLwogCiAJLyogV2UgZXZlbnR1YWxseSBkbyB0aGUgaWNhY2hlIHN5bmMgaGVyZSAobWF5YmUgaW5saW5lIHRoYXQKIAkgKiBjb2RlIHJhdGhlciB0aGFuIGNhbGwgYSBDIGZ1bmN0aW9uLi4uKQpAQCAtNDI2LDYgKzQyOSwxNCBAQAogCWFuZGkuCXIwLHIzMSxfUEFHRV9IQVNIUFRFCiAJbGkJcjI2LDAJCQkvKiBEZWZhdWx0IGhpZHggKi8KIAliZXEJaHRhYl9pbnNlcnRfcHRlCisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBwdGUgd2FzIGFscmVhZHkgaW5zZXJ0ZWQgaW50byB0aGUgaGFzaCB0YWJsZQorCSAqIGFzIGEgNjRrIEhXIHBhZ2UsIGFuZCBpbnZhbGlkYXRlIHRoZSA2NGsgSFBURSBpZiBzby4KKwkgKi8KKwlhbmRpcy4JcjAscjMxLF9QQUdFX0NPTUJPQGgKKwliZXEJaHRhYl9pbnZhbF9vbGRfaHB0ZQorCiAJbGQJcjYsU1RLX1BBUk0ocjYpKHIxKQogCW9yaQlyMjYscjYsMHg4MDAwCQkvKiBMb2FkIHRoZSBoaWR4IG1hc2sgKi8KIAlsZAlyMjYsMChyMjYpCkBAIC00OTYsNiArNTA3LDE5IEBACiAJLyogVHJ5IGFsbCBhZ2FpbiAqLwogCWIJaHRhYl9pbnNlcnRfcHRlCiAKKwkvKgorCSAqIENhbGwgb3V0IHRvIEMgY29kZSB0byBpbnZhbGlkYXRlIGFuIDY0ayBIVyBIUFRFIHRoYXQgaXMKKwkgKiB1c2VsZXNzIG5vdyB0aGF0IHRoZSBzZWdtZW50IGhhcyBiZWVuIHN3aXRjaGVkIHRvIDRrIHBhZ2VzLgorCSAqLworaHRhYl9pbnZhbF9vbGRfaHB0ZToKKwltcglyMyxyMjkJCQkvKiB2aXJ0dWFsIGFkZHIgKi8KKwltcglyNCxyMzEJCQkvKiBQVEUucHRlICovCisJbGkJcjUsMAkJCS8qIFBURS5oaWR4ICovCisJbGkJcjYsTU1VX1BBR0VfNjRLCQkvKiBwc2l6ZSAqLworCWxkCXI3LFNUS19QQVJNKHI4KShyMSkJLyogbG9jYWwgKi8KKwlibAkuZmx1c2hfaGFzaF9wYWdlCisJYglodGFiX2luc2VydF9wdGUKKwkKIGh0YWJfYmFpbF9vazoKIAlsaQlyMywwCiAJYglodGFiX2JhaWwKQEAgLTYzNiw2ICs2NjAsMTIgQEAKIAkgKiBpcyBjaGFuZ2luZyB0aGlzIFBURSBhbnl3YXkgYW5kIG1pZ2h0IGhhc2ggaXQuCiAJICovCiAJYm5lLQlodDY0X2JhaWxfb2sKK0JFR0lOX0ZUUl9TRUNUSU9OCisJLyogQ2hlY2sgaWYgUFRFIGhhcyB0aGUgY2FjaGUtaW5oaWJpdCBiaXQgc2V0ICovCisJYW5kaS4JcjAscjMxLF9QQUdFX05PX0NBQ0hFCisJLyogSWYgc28sIGJhaWwgb3V0IGFuZCByZWZhdWx0IGFzIGEgNGsgcGFnZSAqLworCWJuZS0JaHQ2NF9iYWlsX29rCitFTkRfRlRSX1NFQ1RJT05fSUZDTFIoQ1BVX0ZUUl9DSV9MQVJHRV9QQUdFKQogCS8qIFByZXBhcmUgbmV3IFBURSB2YWx1ZSAodHVybiBhY2Nlc3MgUlcgaW50byBESVJUWSwgdGhlbgogCSAqIGFkZCBCVVNZLEhBU0hQVEUgYW5kIEFDQ0VTU0VEKQogCSAqLwpAQCAtNjcxLDYgKzcwMSw3IEBACiAJYW5kCXIwLHIwLHI0CQkvKiBfUEFHRV9SVyAmIF9QQUdFX0RJUlRZIC0+cjAgYml0IDMwKi8KIAlhbmRjCXIwLHIzMCxyMAkJLyogcjAgPSBwdGUgJiB+cjAgKi8KIAlybHdpbWkJcjMscjAsMzItMSwzMSwzMQkvKiBJbnNlcnQgcmVzdWx0IGludG8gUFAgbHNiICovCisJb3JpCXIzLHIzLEhQVEVfUl9DCQkvKiBBbHdheXMgYWRkICJDIiBiaXQgZm9yIHBlcmYuICovCiAKIAkvKiBXZSBldmVudHVhbGx5IGRvIHRoZSBpY2FjaGUgc3luYyBoZXJlIChtYXliZSBpbmxpbmUgdGhhdAogCSAqIGNvZGUgcmF0aGVyIHRoYW4gY2FsbCBhIEMgZnVuY3Rpb24uLi4pCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF9uYXRpdmVfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX25hdGl2ZV82NC5jCmluZGV4IDk5NDg1NmUuLmEwZjNjYmQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX25hdGl2ZV82NC5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX25hdGl2ZV82NC5jCkBAIC0yMzgsNyArMjM4LDcgQEAKIAkJREJHX0xPVygiIC0+IGhpdFxuIik7CiAJCS8qIFVwZGF0ZSB0aGUgSFBURSAqLwogCQlocHRlcC0+ciA9IChocHRlcC0+ciAmIH4oSFBURV9SX1BQIHwgSFBURV9SX04pKSB8Ci0JCQkobmV3cHAgJiAoSFBURV9SX1BQIHwgSFBURV9SX04pKTsKKwkJCShuZXdwcCAmIChIUFRFX1JfUFAgfCBIUFRFX1JfTiB8IEhQVEVfUl9DKSk7CiAJCW5hdGl2ZV91bmxvY2tfaHB0ZShocHRlcCk7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jIGIvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYwppbmRleCBjMDA2ZDkwLi5kMDNmZDJiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMKQEAgLTkyLDEwICs5MiwxNSBAQAogdW5zaWduZWQgbG9uZyBodGFiX2hhc2hfbWFzazsKIGludCBtbXVfbGluZWFyX3BzaXplID0gTU1VX1BBR0VfNEs7CiBpbnQgbW11X3ZpcnR1YWxfcHNpemUgPSBNTVVfUEFHRV80SzsKK2ludCBtbXVfdm1hbGxvY19wc2l6ZSA9IE1NVV9QQUdFXzRLOworaW50IG1tdV9pb19wc2l6ZSA9IE1NVV9QQUdFXzRLOwogI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIGludCBtbXVfaHVnZV9wc2l6ZSA9IE1NVV9QQUdFXzE2TTsKIHVuc2lnbmVkIGludCBIUEFHRV9TSElGVDsKICNlbmRpZgorI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCitpbnQgbW11X2NpX3Jlc3RyaWN0aW9uczsKKyNlbmRpZgogCiAvKiBUaGVyZSBhcmUgZGVmaW5pdGlvbnMgb2YgcGFnZSBzaXplcyBhcnJheXMgdG8gYmUgdXNlZCB3aGVuIG5vbmUKICAqIGlzIHByb3ZpZGVkIGJ5IHRoZSBmaXJtd2FyZS4KQEAgLTMwOCwyMCArMzEzLDMxIEBACiAJZWxzZSBpZiAobW11X3BzaXplX2RlZnNbTU1VX1BBR0VfMU1dLnNoaWZ0KQogCQltbXVfbGluZWFyX3BzaXplID0gTU1VX1BBR0VfMU07CiAKKyNpZmRlZiBDT05GSUdfUFBDXzY0S19QQUdFUwogCS8qCiAJICogUGljayBhIHNpemUgZm9yIHRoZSBvcmRpbmFyeSBwYWdlcy4gRGVmYXVsdCBpcyA0Sywgd2Ugc3VwcG9ydAotCSAqIDY0SyBpZiBjYWNoZSBpbmhpYml0ZWQgbGFyZ2UgcGFnZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUKLQkgKiBwcm9jZXNzb3IKKwkgKiA2NEsgZm9yIHVzZXIgbWFwcGluZ3MgYW5kIHZtYWxsb2MgaWYgc3VwcG9ydGVkIGJ5IHRoZSBwcm9jZXNzb3IuCisJICogV2Ugb25seSB1c2UgNjRrIGZvciBpb3JlbWFwIGlmIHRoZSBwcm9jZXNzb3IKKwkgKiAoYW5kIGZpcm13YXJlKSBzdXBwb3J0IGNhY2hlLWluaGliaXRlZCBsYXJnZSBwYWdlcy4KKwkgKiBJZiBub3QsIHdlIHVzZSA0ayBhbmQgc2V0IG1tdV9jaV9yZXN0cmljdGlvbnMgc28gdGhhdAorCSAqIGhhc2hfcGFnZSBrbm93cyB0byBzd2l0Y2ggcHJvY2Vzc2VzIHRoYXQgdXNlIGNhY2hlLWluaGliaXRlZAorCSAqIG1hcHBpbmdzIHRvIDRrIHBhZ2VzLgogCSAqLwotI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCi0JaWYgKG1tdV9wc2l6ZV9kZWZzW01NVV9QQUdFXzY0S10uc2hpZnQgJiYKLQkgICAgY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQ0lfTEFSR0VfUEFHRSkpCisJaWYgKG1tdV9wc2l6ZV9kZWZzW01NVV9QQUdFXzY0S10uc2hpZnQpIHsKIAkJbW11X3ZpcnR1YWxfcHNpemUgPSBNTVVfUEFHRV82NEs7CisJCW1tdV92bWFsbG9jX3BzaXplID0gTU1VX1BBR0VfNjRLOworCQlpZiAoY3B1X2hhc19mZWF0dXJlKENQVV9GVFJfQ0lfTEFSR0VfUEFHRSkpCisJCQltbXVfaW9fcHNpemUgPSBNTVVfUEFHRV82NEs7CisJCWVsc2UKKwkJCW1tdV9jaV9yZXN0cmljdGlvbnMgPSAxOworCX0KICNlbmRpZgogCi0JcHJpbnRrKEtFUk5fSU5GTyAiUGFnZSBvcmRlcnM6IGxpbmVhciBtYXBwaW5nID0gJWQsIG90aGVycyA9ICVkXG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJQYWdlIG9yZGVyczogbGluZWFyIG1hcHBpbmcgPSAlZCwgIgorCSAgICAgICAidmlydHVhbCA9ICVkLCBpbyA9ICVkXG4iLAogCSAgICAgICBtbXVfcHNpemVfZGVmc1ttbXVfbGluZWFyX3BzaXplXS5zaGlmdCwKLQkgICAgICAgbW11X3BzaXplX2RlZnNbbW11X3ZpcnR1YWxfcHNpemVdLnNoaWZ0KTsKKwkgICAgICAgbW11X3BzaXplX2RlZnNbbW11X3ZpcnR1YWxfcHNpemVdLnNoaWZ0LAorCSAgICAgICBtbXVfcHNpemVfZGVmc1ttbXVfaW9fcHNpemVdLnNoaWZ0KTsKIAogI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAkvKiBJbml0IGxhcmdlIHBhZ2Ugc2l6ZS4gQ3VycmVudGx5LCB3ZSBwaWNrIDE2TSBvciAxTSBkZXBlbmRpbmcKQEAgLTU1Niw2ICs1NzIsNyBAQAogCXB0ZV90ICpwdGVwOwogCWNwdW1hc2tfdCB0bXA7CiAJaW50IHJjLCB1c2VyX3JlZ2lvbiA9IDAsIGxvY2FsID0gMDsKKwlpbnQgcHNpemU7CiAKIAlEQkdfTE9XKCJoYXNoX3BhZ2UoZWE9JTAxNmx4LCBhY2Nlc3M9JWx4LCB0cmFwPSVseFxuIiwKIAkJZWEsIGFjY2VzcywgdHJhcCk7CkBAIC01NzUsMTAgKzU5MiwxNSBAQAogCQkJcmV0dXJuIDE7CiAJCX0KIAkJdnNpZCA9IGdldF92c2lkKG1tLT5jb250ZXh0LmlkLCBlYSk7CisJCXBzaXplID0gbW0tPmNvbnRleHQudXNlcl9wc2l6ZTsKIAkJYnJlYWs7CiAJY2FzZSBWTUFMTE9DX1JFR0lPTl9JRDoKIAkJbW0gPSAmaW5pdF9tbTsKIAkJdnNpZCA9IGdldF9rZXJuZWxfdnNpZChlYSk7CisJCWlmIChlYSA8IFZNQUxMT0NfRU5EKQorCQkJcHNpemUgPSBtbXVfdm1hbGxvY19wc2l6ZTsKKwkJZWxzZQorCQkJcHNpemUgPSBtbXVfaW9fcHNpemU7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIE5vdCBhIHZhbGlkIHJhbmdlCkBAIC02MjksNyArNjUxLDQwIEBACiAjaWZuZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCiAJcmMgPSBfX2hhc2hfcGFnZV80SyhlYSwgYWNjZXNzLCB2c2lkLCBwdGVwLCB0cmFwLCBsb2NhbCk7CiAjZWxzZQotCWlmIChtbXVfdmlydHVhbF9wc2l6ZSA9PSBNTVVfUEFHRV82NEspCisJaWYgKG1tdV9jaV9yZXN0cmljdGlvbnMpIHsKKwkJLyogSWYgdGhpcyBQVEUgaXMgbm9uLWNhY2hlYWJsZSwgc3dpdGNoIHRvIDRrICovCisJCWlmIChwc2l6ZSA9PSBNTVVfUEFHRV82NEsgJiYKKwkJICAgIChwdGVfdmFsKCpwdGVwKSAmIF9QQUdFX05PX0NBQ0hFKSkgeworCQkJaWYgKHVzZXJfcmVnaW9uKSB7CisJCQkJcHNpemUgPSBNTVVfUEFHRV80SzsKKwkJCQltbS0+Y29udGV4dC51c2VyX3BzaXplID0gTU1VX1BBR0VfNEs7CisJCQkJbW0tPmNvbnRleHQuc2xscCA9IFNMQl9WU0lEX1VTRVIgfAorCQkJCQltbXVfcHNpemVfZGVmc1tNTVVfUEFHRV80S10uc2xscDsKKwkJCX0gZWxzZSBpZiAoZWEgPCBWTUFMTE9DX0VORCkgeworCQkJCS8qCisJCQkJICogc29tZSBkcml2ZXIgZGlkIGEgbm9uLWNhY2hlYWJsZSBtYXBwaW5nCisJCQkJICogaW4gdm1hbGxvYyBzcGFjZSwgc28gc3dpdGNoIHZtYWxsb2MKKwkJCQkgKiB0byA0ayBwYWdlcworCQkJCSAqLworCQkJCXByaW50ayhLRVJOX0FMRVJUICJSZWR1Y2luZyB2bWFsbG9jIHNlZ21lbnQgIgorCQkJCSAgICAgICAidG8gNGtCIHBhZ2VzIGJlY2F1c2Ugb2YgIgorCQkJCSAgICAgICAibm9uLWNhY2hlYWJsZSBtYXBwaW5nXG4iKTsKKwkJCQlwc2l6ZSA9IG1tdV92bWFsbG9jX3BzaXplID0gTU1VX1BBR0VfNEs7CisJCQl9CisJCX0KKwkJaWYgKHVzZXJfcmVnaW9uKSB7CisJCQlpZiAocHNpemUgIT0gZ2V0X3BhY2EoKS0+Y29udGV4dC51c2VyX3BzaXplKSB7CisJCQkJZ2V0X3BhY2EoKS0+Y29udGV4dCA9IG1tLT5jb250ZXh0OworCQkJCXNsYl9mbHVzaF9hbmRfcmVib2x0KCk7CisJCQl9CisJCX0gZWxzZSBpZiAoZ2V0X3BhY2EoKS0+dm1hbGxvY19zbGxwICE9CisJCQkgICBtbXVfcHNpemVfZGVmc1ttbXVfdm1hbGxvY19wc2l6ZV0uc2xscCkgeworCQkJZ2V0X3BhY2EoKS0+dm1hbGxvY19zbGxwID0KKwkJCQltbXVfcHNpemVfZGVmc1ttbXVfdm1hbGxvY19wc2l6ZV0uc2xscDsKKwkJCXNsYl9mbHVzaF9hbmRfcmVib2x0KCk7CisJCX0KKwl9CisJaWYgKHBzaXplID09IE1NVV9QQUdFXzY0SykKIAkJcmMgPSBfX2hhc2hfcGFnZV82NEsoZWEsIGFjY2VzcywgdnNpZCwgcHRlcCwgdHJhcCwgbG9jYWwpOwogCWVsc2UKIAkJcmMgPSBfX2hhc2hfcGFnZV80SyhlYSwgYWNjZXNzLCB2c2lkLCBwdGVwLCB0cmFwLCBsb2NhbCk7CkBAIC02ODEsNyArNzM2LDE4IEBACiAjaWZuZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCiAJX19oYXNoX3BhZ2VfNEsoZWEsIGFjY2VzcywgdnNpZCwgcHRlcCwgdHJhcCwgbG9jYWwpOwogI2Vsc2UKLQlpZiAobW11X3ZpcnR1YWxfcHNpemUgPT0gTU1VX1BBR0VfNjRLKQorCWlmIChtbXVfY2lfcmVzdHJpY3Rpb25zKSB7CisJCS8qIElmIHRoaXMgUFRFIGlzIG5vbi1jYWNoZWFibGUsIHN3aXRjaCB0byA0ayAqLworCQlpZiAobW0tPmNvbnRleHQudXNlcl9wc2l6ZSA9PSBNTVVfUEFHRV82NEsgJiYKKwkJICAgIChwdGVfdmFsKCpwdGVwKSAmIF9QQUdFX05PX0NBQ0hFKSkgeworCQkJbW0tPmNvbnRleHQudXNlcl9wc2l6ZSA9IE1NVV9QQUdFXzRLOworCQkJbW0tPmNvbnRleHQuc2xscCA9IFNMQl9WU0lEX1VTRVIgfAorCQkJCW1tdV9wc2l6ZV9kZWZzW01NVV9QQUdFXzRLXS5zbGxwOworCQkJZ2V0X3BhY2EoKS0+Y29udGV4dCA9IG1tLT5jb250ZXh0OworCQkJc2xiX2ZsdXNoX2FuZF9yZWJvbHQoKTsKKwkJfQorCX0KKwlpZiAobW0tPmNvbnRleHQudXNlcl9wc2l6ZSA9PSBNTVVfUEFHRV82NEspCiAJCV9faGFzaF9wYWdlXzY0SyhlYSwgYWNjZXNzLCB2c2lkLCBwdGVwLCB0cmFwLCBsb2NhbCk7CiAJZWxzZQogCQlfX2hhc2hfcGFnZV80SyhlYSwgYWNjZXNzLCB2c2lkLCBwdGVwLCB0cmFwLCBsb2NhbCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vbG1iLmMgYi9hcmNoL3Bvd2VycGMvbW0vbG1iLmMKaW5kZXggNDE3ZDU4NS4uOGI2ZjUyMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2xtYi5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9sbWIuYwpAQCAtODksMTggKzg5LDIzIEBACiAJcmV0dXJuIGxtYl9hZGRyc19hZGphY2VudChiYXNlMSwgc2l6ZTEsIGJhc2UyLCBzaXplMik7CiB9CiAKK3N0YXRpYyB2b2lkIF9faW5pdCBsbWJfcmVtb3ZlX3JlZ2lvbihzdHJ1Y3QgbG1iX3JlZ2lvbiAqcmduLCB1bnNpZ25lZCBsb25nIHIpCit7CisJdW5zaWduZWQgbG9uZyBpOworCisJZm9yIChpID0gcjsgaSA8IHJnbi0+Y250IC0gMTsgaSsrKSB7CisJCXJnbi0+cmVnaW9uW2ldLmJhc2UgPSByZ24tPnJlZ2lvbltpICsgMV0uYmFzZTsKKwkJcmduLT5yZWdpb25baV0uc2l6ZSA9IHJnbi0+cmVnaW9uW2kgKyAxXS5zaXplOworCX0KKwlyZ24tPmNudC0tOworfQorCiAvKiBBc3N1bXB0aW9uOiBiYXNlIGFkZHIgb2YgcmVnaW9uIDEgPCBiYXNlIGFkZHIgb2YgcmVnaW9uIDIgKi8KIHN0YXRpYyB2b2lkIF9faW5pdCBsbWJfY29hbGVzY2VfcmVnaW9ucyhzdHJ1Y3QgbG1iX3JlZ2lvbiAqcmduLAogCQl1bnNpZ25lZCBsb25nIHIxLCB1bnNpZ25lZCBsb25nIHIyKQogewotCXVuc2lnbmVkIGxvbmcgaTsKLQogCXJnbi0+cmVnaW9uW3IxXS5zaXplICs9IHJnbi0+cmVnaW9uW3IyXS5zaXplOwotCWZvciAoaT1yMjsgaSA8IHJnbi0+Y250LTE7IGkrKykgewotCQlyZ24tPnJlZ2lvbltpXS5iYXNlID0gcmduLT5yZWdpb25baSsxXS5iYXNlOwotCQlyZ24tPnJlZ2lvbltpXS5zaXplID0gcmduLT5yZWdpb25baSsxXS5zaXplOwotCX0KLQlyZ24tPmNudC0tOworCWxtYl9yZW1vdmVfcmVnaW9uKHJnbiwgcjIpOwogfQogCiAvKiBUaGlzIHJvdXRpbmUgY2FsbGVkIHdpdGggcmVsb2NhdGlvbiBkaXNhYmxlZC4gKi8KQEAgLTI5NCwxNyArMjk5LDE2IEBACiAJcmV0dXJuIChsbWIubWVtb3J5LnJlZ2lvbltpZHhdLmJhc2UgKyBsbWIubWVtb3J5LnJlZ2lvbltpZHhdLnNpemUpOwogfQogCi0vKgotICogVHJ1bmNhdGUgdGhlIGxtYiBsaXN0IHRvIG1lbW9yeV9saW1pdCBpZiBpdCdzIHNldAotICogWW91IG11c3QgY2FsbCBsbWJfYW5hbHl6ZSgpIGFmdGVyIHRoaXMuCi0gKi8KKy8qIFlvdSBtdXN0IGNhbGwgbG1iX2FuYWx5emUoKSBhZnRlciB0aGlzLiAqLwogdm9pZCBfX2luaXQgbG1iX2VuZm9yY2VfbWVtb3J5X2xpbWl0KHVuc2lnbmVkIGxvbmcgbWVtb3J5X2xpbWl0KQogewogCXVuc2lnbmVkIGxvbmcgaSwgbGltaXQ7CisJc3RydWN0IGxtYl9wcm9wZXJ0eSAqcDsKIAogCWlmICghIG1lbW9yeV9saW1pdCkKIAkJcmV0dXJuOwogCisJLyogVHJ1bmNhdGUgdGhlIGxtYiByZWdpb25zIHRvIHNhdGlzZnkgdGhlIG1lbW9yeSBsaW1pdC4gKi8KIAlsaW1pdCA9IG1lbW9yeV9saW1pdDsKIAlmb3IgKGkgPSAwOyBpIDwgbG1iLm1lbW9yeS5jbnQ7IGkrKykgewogCQlpZiAobGltaXQgPiBsbWIubWVtb3J5LnJlZ2lvbltpXS5zaXplKSB7CkBAIC0zMTYsNCArMzIwLDIxIEBACiAJCWxtYi5tZW1vcnkuY250ID0gaSArIDE7CiAJCWJyZWFrOwogCX0KKworCWxtYi5ybW9fc2l6ZSA9IGxtYi5tZW1vcnkucmVnaW9uWzBdLnNpemU7CisKKwkvKiBBbmQgdHJ1bmNhdGUgYW55IHJlc2VydmVzIGFib3ZlIHRoZSBsaW1pdCBhbHNvLiAqLworCWZvciAoaSA9IDA7IGkgPCBsbWIucmVzZXJ2ZWQuY250OyBpKyspIHsKKwkJcCA9ICZsbWIucmVzZXJ2ZWQucmVnaW9uW2ldOworCisJCWlmIChwLT5iYXNlID4gbWVtb3J5X2xpbWl0KQorCQkJcC0+c2l6ZSA9IDA7CisJCWVsc2UgaWYgKChwLT5iYXNlICsgcC0+c2l6ZSkgPiBtZW1vcnlfbGltaXQpCisJCQlwLT5zaXplID0gbWVtb3J5X2xpbWl0IC0gcC0+YmFzZTsKKworCQlpZiAocC0+c2l6ZSA9PSAwKSB7CisJCQlsbWJfcmVtb3ZlX3JlZ2lvbigmbG1iLnJlc2VydmVkLCBpKTsKKwkJCWktLTsKKwkJfQorCX0KIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9tZW0uYyBiL2FyY2gvcG93ZXJwYy9tbS9tZW0uYwppbmRleCA3NDFkZDg4Li42OWYzYjlhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbWVtLmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL21lbS5jCkBAIC0yOTksOSArMjk5LDkgQEAKIAlrbWFwX3Byb3QgPSBQQUdFX0tFUk5FTDsKICNlbmRpZiAvKiBDT05GSUdfSElHSE1FTSAqLwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiVG9wIG9mIFJBTTogMHglbHgsIFRvdGFsIFJBTTogMHglbHhcbiIsCisJcHJpbnRrKEtFUk5fREVCVUcgIlRvcCBvZiBSQU06IDB4JWx4LCBUb3RhbCBSQU06IDB4JWx4XG4iLAogCSAgICAgICB0b3Bfb2ZfcmFtLCB0b3RhbF9yYW0pOwotCXByaW50ayhLRVJOX0lORk8gIk1lbW9yeSBob2xlIHNpemU6ICVsZE1CXG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJNZW1vcnkgaG9sZSBzaXplOiAlbGRNQlxuIiwKIAkgICAgICAgKHRvcF9vZl9yYW0gLSB0b3RhbF9yYW0pID4+IDIwKTsKIAkvKgogCSAqIEFsbCBwYWdlcyBhcmUgRE1BLWFibGUgc28gd2UgcHV0IHRoZW0gYWxsIGluIHRoZSBETUEgem9uZS4KQEAgLTM4MCw3ICszODAsNyBAQAogCQkJdG90YWxoaWdoX3BhZ2VzKys7CiAJCX0KIAkJdG90YWxyYW1fcGFnZXMgKz0gdG90YWxoaWdoX3BhZ2VzOwotCQlwcmludGsoS0VSTl9JTkZPICJIaWdoIG1lbW9yeTogJWx1a1xuIiwKKwkJcHJpbnRrKEtFUk5fREVCVUcgIkhpZ2ggbWVtb3J5OiAlbHVrXG4iLAogCQkgICAgICAgdG90YWxoaWdoX3BhZ2VzIDw8IChQQUdFX1NISUZULTEwKSk7CiAJfQogI2VuZGlmIC8qIENPTkZJR19ISUdITUVNICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfMzIuYyBiL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF8zMi5jCmluZGV4IGE4ODE2ZTAuLmUzMjZlNDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF8zMi5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF8zMi5jCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8YXNtL3RsYmZsdXNoLmg+CiAKLW1tX2NvbnRleHRfdCBuZXh0X21tdV9jb250ZXh0OwordW5zaWduZWQgbG9uZyBuZXh0X21tdV9jb250ZXh0OwogdW5zaWduZWQgbG9uZyBjb250ZXh0X21hcFtMQVNUX0NPTlRFWFQgLyBCSVRTX1BFUl9MT05HICsgMV07CiAjaWZkZWYgRkVXX0NPTlRFWFRTCiBhdG9taWNfdCBucl9mcmVlX2NvbnRleHRzOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0XzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfNjQuYwppbmRleCA3MTRhODRkLi42NWQxOGRjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfNjQuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfNjQuYwpAQCAtNDksNiArNDksOSBAQAogCX0KIAogCW1tLT5jb250ZXh0LmlkID0gaW5kZXg7CisJbW0tPmNvbnRleHQudXNlcl9wc2l6ZSA9IG1tdV92aXJ0dWFsX3BzaXplOworCW1tLT5jb250ZXh0LnNsbHAgPSBTTEJfVlNJRF9VU0VSIHwKKwkJbW11X3BzaXplX2RlZnNbbW11X3ZpcnR1YWxfcHNpemVdLnNsbHA7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMgYi9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jCmluZGV4IDA5MjM1NWYuLmFhOThjYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL251bWEuYwpAQCAtNDg3LDkgKzQ4Nyw5IEBACiAJdW5zaWduZWQgbG9uZyB0b3RhbF9yYW0gPSBsbWJfcGh5c19tZW1fc2l6ZSgpOwogCXVuc2lnbmVkIGludCBpOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiVG9wIG9mIFJBTTogMHglbHgsIFRvdGFsIFJBTTogMHglbHhcbiIsCisJcHJpbnRrKEtFUk5fREVCVUcgIlRvcCBvZiBSQU06IDB4JWx4LCBUb3RhbCBSQU06IDB4JWx4XG4iLAogCSAgICAgICB0b3Bfb2ZfcmFtLCB0b3RhbF9yYW0pOwotCXByaW50ayhLRVJOX0lORk8gIk1lbW9yeSBob2xlIHNpemU6ICVsZE1CXG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJNZW1vcnkgaG9sZSBzaXplOiAlbGRNQlxuIiwKIAkgICAgICAgKHRvcF9vZl9yYW0gLSB0b3RhbF9yYW0pID4+IDIwKTsKIAogCWZvciAoaSA9IDA7IGkgPCBsbWIubWVtb3J5LmNudDsgKytpKQpAQCAtNTA3LDcgKzUwNyw3IEBACiAJCXJldHVybjsKIAogCWZvcl9lYWNoX29ubGluZV9ub2RlKG5vZGUpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiTm9kZSAlZCBDUFVzOiIsIG5vZGUpOworCQlwcmludGsoS0VSTl9ERUJVRyAiTm9kZSAlZCBDUFVzOiIsIG5vZGUpOwogCiAJCWNvdW50ID0gMDsKIAkJLyoKQEAgLTU0Myw3ICs1NDMsNyBAQAogCWZvcl9lYWNoX29ubGluZV9ub2RlKG5vZGUpIHsKIAkJdW5zaWduZWQgbG9uZyBpOwogCi0JCXByaW50ayhLRVJOX0lORk8gIk5vZGUgJWQgTWVtb3J5OiIsIG5vZGUpOworCQlwcmludGsoS0VSTl9ERUJVRyAiTm9kZSAlZCBNZW1vcnk6Iiwgbm9kZSk7CiAKIAkJY291bnQgPSAwOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vcHBjX21tdV8zMi5jIGIvYXJjaC9wb3dlcnBjL21tL3BwY19tbXVfMzIuYwppbmRleCBlZDdmY2ZlLi4yZWQ0M2E0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vcHBjX21tdV8zMi5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9wcGNfbW11XzMyLmMKQEAgLTQyLDE4ICs0MiwxNCBAQAogCiB1bmlvbiB1YmF0IHsJCQkvKiBCQVQgcmVnaXN0ZXIgdmFsdWVzIHRvIGJlIGxvYWRlZCAqLwogCUJBVAliYXQ7Ci0jaWZkZWYgQ09ORklHX1BQQzY0QlJJREdFCi0JdTY0CXdvcmRbMl07Ci0jZWxzZQogCXUzMgl3b3JkWzJdOwotI2VuZGlmCi19IEJBVFNbNF1bMl07CQkJLyogNCBwYWlycyBvZiBJQkFULCBEQkFUICovCit9IEJBVFNbOF1bMl07CQkJLyogOCBwYWlycyBvZiBJQkFULCBEQkFUICovCiAKIHN0cnVjdCBiYXRyYW5nZSB7CQkvKiBzdG9yZXMgYWRkcmVzcyByYW5nZXMgbWFwcGVkIGJ5IEJBVHMgKi8KIAl1bnNpZ25lZCBsb25nIHN0YXJ0OwogCXVuc2lnbmVkIGxvbmcgbGltaXQ7CiAJdW5zaWduZWQgbG9uZyBwaHlzOwotfSBiYXRfYWRkcnNbNF07Cit9IGJhdF9hZGRyc1s4XTsKIAogLyoKICAqIFJldHVybiBQQSBmb3IgdGhpcyBWQSBpZiBpdCBpcyBtYXBwZWQgYnkgYSBCQVQsIG9yIDAKQEAgLTE5MCw3ICsxODYsNyBAQAogCQlyZXR1cm47CiAJcG1kID0gcG1kX29mZnNldChwZ2Rfb2Zmc2V0KG1tLCBlYSksIGVhKTsKIAlpZiAoIXBtZF9ub25lKCpwbWQpKQotCQlhZGRfaGFzaF9wYWdlKG1tLT5jb250ZXh0LCBlYSwgcG1kX3ZhbCgqcG1kKSk7CisJCWFkZF9oYXNoX3BhZ2UobW0tPmNvbnRleHQuaWQsIGVhLCBwbWRfdmFsKCpwbWQpKTsKIH0KIAogLyoKQEAgLTIyMCwxNSArMjE2LDkgQEAKIAogCWlmICggcHBjX21kLnByb2dyZXNzICkgcHBjX21kLnByb2dyZXNzKCJoYXNoOmVudGVyIiwgMHgxMDUpOwogCi0jaWZkZWYgQ09ORklHX1BQQzY0QlJJREdFCi0jZGVmaW5lIExHX0hQVEVHX1NJWkUJNwkJLyogMTI4IGJ5dGVzIHBlciBIUFRFRyAqLwotI2RlZmluZSBTRFIxX0xPV19CSVRTCShsZ19uX2hwdGVnIC0gMTEpCi0jZGVmaW5lIE1JTl9OX0hQVEVHCTIwNDgJCS8qIG1pbiAyNTZrQiBoYXNoIHRhYmxlICovCi0jZWxzZQogI2RlZmluZSBMR19IUFRFR19TSVpFCTYJCS8qIDY0IGJ5dGVzIHBlciBIUFRFRyAqLwogI2RlZmluZSBTRFIxX0xPV19CSVRTCSgobl9ocHRlZyAtIDEpID4+IDEwKQogI2RlZmluZSBNSU5fTl9IUFRFRwkxMDI0CQkvKiBtaW4gNjRrQiBoYXNoIHRhYmxlICovCi0jZW5kaWYKIAogCS8qCiAJICogQWxsb3cgMSBIUFRFICgxLzggSFBURUcpIGZvciBlYWNoIHBhZ2Ugb2YgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3NsYi5jIGIvYXJjaC9wb3dlcnBjL21tL3NsYi5jCmluZGV4IGZmYzhlZDQuLjZhOGJmNmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9zbGIuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vc2xiLmMKQEAgLTYwLDE5ICs2MCwxOSBAQAogCQkgICAgIDogIm1lbW9yeSIgKTsKIH0KIAotc3RhdGljIHZvaWQgc2xiX2ZsdXNoX2FuZF9yZWJvbHQodm9pZCkKK3ZvaWQgc2xiX2ZsdXNoX2FuZF9yZWJvbHQodm9pZCkKIHsKIAkvKiBJZiB5b3UgY2hhbmdlIHRoaXMgbWFrZSBzdXJlIHlvdSBjaGFuZ2UgU0xCX05VTV9CT0xURUQKIAkgKiBhcHByb3ByaWF0ZWx5IHRvby4gKi8KLQl1bnNpZ25lZCBsb25nIGxpbmVhcl9sbHAsIHZpcnR1YWxfbGxwLCBsZmxhZ3MsIHZmbGFnczsKKwl1bnNpZ25lZCBsb25nIGxpbmVhcl9sbHAsIHZtYWxsb2NfbGxwLCBsZmxhZ3MsIHZmbGFnczsKIAl1bnNpZ25lZCBsb25nIGtzcF9lc2lkX2RhdGE7CiAKIAlXQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpOwogCiAJbGluZWFyX2xscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV9saW5lYXJfcHNpemVdLnNsbHA7Ci0JdmlydHVhbF9sbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfdmlydHVhbF9wc2l6ZV0uc2xscDsKKwl2bWFsbG9jX2xscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV92bWFsbG9jX3BzaXplXS5zbGxwOwogCWxmbGFncyA9IFNMQl9WU0lEX0tFUk5FTCB8IGxpbmVhcl9sbHA7Ci0JdmZsYWdzID0gU0xCX1ZTSURfS0VSTkVMIHwgdmlydHVhbF9sbHA7CisJdmZsYWdzID0gU0xCX1ZTSURfS0VSTkVMIHwgdm1hbGxvY19sbHA7CiAKIAlrc3BfZXNpZF9kYXRhID0gbWtfZXNpZF9kYXRhKGdldF9wYWNhKCktPmtzdGFjaywgMik7CiAJaWYgKChrc3BfZXNpZF9kYXRhICYgRVNJRF9NQVNLKSA9PSBQQUdFX09GRlNFVCkKQEAgLTEyMiw5ICsxMjIsNiBAQAogCiAJZ2V0X3BhY2EoKS0+c2xiX2NhY2hlX3B0ciA9IDA7CiAJZ2V0X3BhY2EoKS0+Y29udGV4dCA9IG1tLT5jb250ZXh0OwotI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCi0JZ2V0X3BhY2EoKS0+cGdkaXIgPSBtbS0+cGdkOwotI2VuZGlmIC8qIENPTkZJR19QUENfNjRLX1BBR0VTICovCiAKIAkvKgogCSAqIHByZWxvYWQgc29tZSB1c2Vyc3BhY2Ugc2VnbWVudHMgaW50byB0aGUgU0xCLgpAQCAtMTY3LDExICsxNjQsMTAgQEAKIAogdm9pZCBzbGJfaW5pdGlhbGl6ZSh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgbGluZWFyX2xscCwgdmlydHVhbF9sbHA7CisJdW5zaWduZWQgbG9uZyBsaW5lYXJfbGxwLCB2bWFsbG9jX2xscCwgaW9fbGxwOwogCXN0YXRpYyBpbnQgc2xiX2VuY29kaW5nX2luaXRlZDsKIAlleHRlcm4gdW5zaWduZWQgaW50ICpzbGJfbWlzc19rZXJuZWxfbG9hZF9saW5lYXI7Ci0JZXh0ZXJuIHVuc2lnbmVkIGludCAqc2xiX21pc3Nfa2VybmVsX2xvYWRfdmlydHVhbDsKLQlleHRlcm4gdW5zaWduZWQgaW50ICpzbGJfbWlzc191c2VyX2xvYWRfbm9ybWFsOworCWV4dGVybiB1bnNpZ25lZCBpbnQgKnNsYl9taXNzX2tlcm5lbF9sb2FkX2lvOwogI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAlleHRlcm4gdW5zaWduZWQgaW50ICpzbGJfbWlzc191c2VyX2xvYWRfaHVnZTsKIAl1bnNpZ25lZCBsb25nIGh1Z2VfbGxwOwpAQCAtMTgxLDE4ICsxNzcsMTkgQEAKIAogCS8qIFByZXBhcmUgb3VyIFNMQiBtaXNzIGhhbmRsZXIgYmFzZWQgb24gb3VyIHBhZ2Ugc2l6ZSAqLwogCWxpbmVhcl9sbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfbGluZWFyX3BzaXplXS5zbGxwOwotCXZpcnR1YWxfbGxwID0gbW11X3BzaXplX2RlZnNbbW11X3ZpcnR1YWxfcHNpemVdLnNsbHA7CisJaW9fbGxwID0gbW11X3BzaXplX2RlZnNbbW11X2lvX3BzaXplXS5zbGxwOworCXZtYWxsb2NfbGxwID0gbW11X3BzaXplX2RlZnNbbW11X3ZtYWxsb2NfcHNpemVdLnNsbHA7CisJZ2V0X3BhY2EoKS0+dm1hbGxvY19zbGxwID0gU0xCX1ZTSURfS0VSTkVMIHwgdm1hbGxvY19sbHA7CisKIAlpZiAoIXNsYl9lbmNvZGluZ19pbml0ZWQpIHsKIAkJc2xiX2VuY29kaW5nX2luaXRlZCA9IDE7CiAJCXBhdGNoX3NsYl9lbmNvZGluZyhzbGJfbWlzc19rZXJuZWxfbG9hZF9saW5lYXIsCiAJCQkJICAgU0xCX1ZTSURfS0VSTkVMIHwgbGluZWFyX2xscCk7Ci0JCXBhdGNoX3NsYl9lbmNvZGluZyhzbGJfbWlzc19rZXJuZWxfbG9hZF92aXJ0dWFsLAotCQkJCSAgIFNMQl9WU0lEX0tFUk5FTCB8IHZpcnR1YWxfbGxwKTsKLQkJcGF0Y2hfc2xiX2VuY29kaW5nKHNsYl9taXNzX3VzZXJfbG9hZF9ub3JtYWwsCi0JCQkJICAgU0xCX1ZTSURfVVNFUiB8IHZpcnR1YWxfbGxwKTsKKwkJcGF0Y2hfc2xiX2VuY29kaW5nKHNsYl9taXNzX2tlcm5lbF9sb2FkX2lvLAorCQkJCSAgIFNMQl9WU0lEX0tFUk5FTCB8IGlvX2xscCk7CiAKIAkJREJHKCJTTEI6IGxpbmVhciAgTExQID0gJTA0eFxuIiwgbGluZWFyX2xscCk7Ci0JCURCRygiU0xCOiB2aXJ0dWFsIExMUCA9ICUwNHhcbiIsIHZpcnR1YWxfbGxwKTsKKwkJREJHKCJTTEI6IGlvICAgICAgTExQID0gJTA0eFxuIiwgaW9fbGxwKTsKICNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFCiAJCXBhdGNoX3NsYl9lbmNvZGluZyhzbGJfbWlzc191c2VyX2xvYWRfaHVnZSwKIAkJCQkgICBTTEJfVlNJRF9VU0VSIHwgaHVnZV9sbHApOwpAQCAtMjA3LDcgKzIwNCw3IEBACiAJdW5zaWduZWQgbG9uZyBsZmxhZ3MsIHZmbGFnczsKIAogCWxmbGFncyA9IFNMQl9WU0lEX0tFUk5FTCB8IGxpbmVhcl9sbHA7Ci0JdmZsYWdzID0gU0xCX1ZTSURfS0VSTkVMIHwgdmlydHVhbF9sbHA7CisJdmZsYWdzID0gU0xCX1ZTSURfS0VSTkVMIHwgdm1hbGxvY19sbHA7CiAKIAkvKiBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgU0xCIChldmVuIHNsb3QgMCkgJiBhbGwgdGhlIEVSQVRTICovCiAJYXNtIHZvbGF0aWxlKCJpc3luYyI6OjoibWVtb3J5Iik7CkBAIC0yMTUsNyArMjEyLDYgQEAKIAlhc20gdm9sYXRpbGUoImlzeW5jOyBzbGJpYTsgaXN5bmMiOjo6Im1lbW9yeSIpOwogCWNyZWF0ZV9zbGJlKFBBR0VfT0ZGU0VULCBsZmxhZ3MsIDApOwogCi0JLyogVk1BTExPQyBzcGFjZSBoYXMgNEsgcGFnZXMgYWx3YXlzIGZvciBub3cgKi8KIAljcmVhdGVfc2xiZShWTUFMTE9DX1NUQVJULCB2ZmxhZ3MsIDEpOwogCiAJLyogV2UgZG9uJ3QgYm9sdCB0aGUgc3RhY2sgZm9yIHRoZSB0aW1lIGJlaW5nIC0gd2UncmUgaW4gYm9vdCwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9zbGJfbG93LlMgYi9hcmNoL3Bvd2VycGMvbW0vc2xiX2xvdy5TCmluZGV4IGFiZmFhYmYuLjg1NDhkY2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9zbGJfbG93LlMKKysrIGIvYXJjaC9wb3dlcnBjL21tL3NsYl9sb3cuUwpAQCAtNTksMTAgKzU5LDE5IEBACiAJbGkJcjExLDAKIAliCXNsYl9maW5pc2hfbG9hZAogCi0xOgkvKiB2bWFsbG9jL2lvcmVtYXAgbWFwcGluZyBlbmNvZGluZyBiaXRzLCB0aGUgImxpIiBpbnN0cnVjdGlvbiBiZWxvdworMToJLyogdm1hbGxvYy9pb3JlbWFwIG1hcHBpbmcgZW5jb2RpbmcgYml0cywgdGhlICJsaSIgaW5zdHJ1Y3Rpb25zIGJlbG93CiAJICogd2lsbCBiZSBwYXRjaGVkIGJ5IHRoZSBrZXJuZWwgYXQgYm9vdAogCSAqLwotX0dMT0JBTChzbGJfbWlzc19rZXJuZWxfbG9hZF92aXJ0dWFsKQorQkVHSU5fRlRSX1NFQ1RJT04KKwkvKiBjaGVjayB3aGV0aGVyIHRoaXMgaXMgaW4gdm1hbGxvYyBvciBpb3JlbWFwIHNwYWNlICovCisJY2xybGRpCXIxMSxyMTAsNDgKKwljbXBsZGkJcjExLChWTUFMTE9DX1NJWkUgPj4gMjgpIC0gMQorCWJndAk1ZgorCWxoeglyMTEsUEFDQVZNQUxMT0NTTExQKHIxMykKKwliCXNsYl9maW5pc2hfbG9hZAorNToKK0VORF9GVFJfU0VDVElPTl9JRkNMUihDUFVfRlRSX0NJX0xBUkdFX1BBR0UpCitfR0xPQkFMKHNsYl9taXNzX2tlcm5lbF9sb2FkX2lvKQogCWxpCXIxMSwwCiAJYglzbGJfZmluaXNoX2xvYWQKIApAQCAtOTYsOSArMTA1LDcgQEAKIDE6CiAjZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqLwogCi1fR0xPQkFMKHNsYl9taXNzX3VzZXJfbG9hZF9ub3JtYWwpCi0JbGkJcjExLDAKLQorCWxoeglyMTEsUEFDQUNPTlRFWFRTTExQKHIxMykKIDI6CiAJbGQJcjksUEFDQUNPTlRFWFRJRChyMTMpCiAJcmxkaW1pCXIxMCxyOSxVU0VSX0VTSURfQklUUywwCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vc3RhYi5jIGIvYXJjaC9wb3dlcnBjL21tL3N0YWIuYwppbmRleCA0YTkyOTFkLi42OTEzMjBjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vc3RhYi5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9zdGFiLmMKQEAgLTIwMCwxMCArMjAwLDYgQEAKIAogCV9fZ2V0X2NwdV92YXIoc3RhYl9jYWNoZV9wdHIpID0gMDsKIAotI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCi0JZ2V0X3BhY2EoKS0+cGdkaXIgPSBtbS0+cGdkOwotI2VuZGlmIC8qIENPTkZJR19QUENfNjRLX1BBR0VTICovCi0KIAkvKiBOb3cgcHJlbG9hZCBzb21lIGVudHJpZXMgZm9yIHRoZSBuZXcgdGFzayAqLwogCWlmICh0ZXN0X3Rza190aHJlYWRfZmxhZyh0c2ssIFRJRl8zMkJJVCkpCiAJCXVubWFwcGVkX2Jhc2UgPSBUQVNLX1VOTUFQUEVEX0JBU0VfVVNFUjMyOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3RsYl8zMi5jIGIvYXJjaC9wb3dlcnBjL21tL3RsYl8zMi5jCmluZGV4IGFkNTgwZjMuLjAyZWIyM2UgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS90bGJfMzIuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vdGxiXzMyLmMKQEAgLTQyLDcgKzQyLDcgQEAKIAogCWlmIChIYXNoICE9IDApIHsKIAkJcHRlcGh5cyA9IF9fcGEocHRlcCkgJiBQQUdFX01BU0s7Ci0JCWZsdXNoX2hhc2hfcGFnZXMobW0tPmNvbnRleHQsIGFkZHIsIHB0ZXBoeXMsIDEpOworCQlmbHVzaF9oYXNoX3BhZ2VzKG1tLT5jb250ZXh0LmlkLCBhZGRyLCBwdGVwaHlzLCAxKTsKIAl9CiB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQAogCXBtZF90ICpwbWQ7CiAJdW5zaWduZWQgbG9uZyBwbWRfZW5kOwogCWludCBjb3VudDsKLQl1bnNpZ25lZCBpbnQgY3R4ID0gbW0tPmNvbnRleHQ7CisJdW5zaWduZWQgaW50IGN0eCA9IG1tLT5jb250ZXh0LmlkOwogCiAJaWYgKEhhc2ggPT0gMCkgewogCQlfdGxiaWEoKTsKQEAgLTE3Miw3ICsxNzIsNyBAQAogCW1tID0gKHZtYWRkciA8IFRBU0tfU0laRSk/IHZtYS0+dm1fbW06ICZpbml0X21tOwogCXBtZCA9IHBtZF9vZmZzZXQocGdkX29mZnNldChtbSwgdm1hZGRyKSwgdm1hZGRyKTsKIAlpZiAoIXBtZF9ub25lKCpwbWQpKQotCQlmbHVzaF9oYXNoX3BhZ2VzKG1tLT5jb250ZXh0LCB2bWFkZHIsIHBtZF92YWwoKnBtZCksIDEpOworCQlmbHVzaF9oYXNoX3BhZ2VzKG1tLT5jb250ZXh0LmlkLCB2bWFkZHIsIHBtZF92YWwoKnBtZCksIDEpOwogCUZJTklTSF9GTFVTSDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3RsYl82NC5jIGIvYXJjaC9wb3dlcnBjL21tL3RsYl82NC5jCmluZGV4IGY3MzRiMTEuLmU3NDQ5YjAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS90bGJfNjQuYworKysgYi9hcmNoL3Bvd2VycGMvbW0vdGxiXzY0LmMKQEAgLTEzMSw3ICsxMzEsNyBAQAogewogCXN0cnVjdCBwcGM2NF90bGJfYmF0Y2ggKmJhdGNoID0gJl9fZ2V0X2NwdV92YXIocHBjNjRfdGxiX2JhdGNoKTsKIAl1bnNpZ25lZCBsb25nIHZzaWQ7Ci0JdW5zaWduZWQgaW50IHBzaXplID0gbW11X3ZpcnR1YWxfcHNpemU7CisJdW5zaWduZWQgaW50IHBzaXplOwogCWludCBpOwogCiAJaSA9IGJhdGNoLT5pbmRleDsKQEAgLTE0OCw3ICsxNDgsOCBAQAogI2Vsc2UKIAkJQlVHKCk7CiAjZW5kaWYKLQl9CisJfSBlbHNlCisJCXBzaXplID0gcHRlX3BhZ2VzaXplX2luZGV4KHB0ZSk7CiAKIAkvKgogCSAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgVExCIGJhdGNoIGFuZApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL0tjb25maWcgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvS2NvbmZpZwppbmRleCBkMDNjMGU1Li5lYjJkZWNlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvS2NvbmZpZworKysgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvS2NvbmZpZwpAQCAtMSw1ICsxLDQgQEAKIGNvbmZpZyBQUk9GSUxJTkcKLQlkZXBlbmRzIG9uICFQUENfSVNFUklFUwogCWJvb2wgIlByb2ZpbGluZyBzdXBwb3J0IChFWFBFUklNRU5UQUwpIgogCWhlbHAKIAkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHRoZSBleHRlbmRlZCBwcm9maWxpbmcgc3VwcG9ydCBtZWNoYW5pc21zIHVzZWQKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9NYWtlZmlsZQppbmRleCBmNWY5ODU5Li4zMTQ1ZDYxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL29wcm9maWxlL01ha2VmaWxlCkBAIC0xLDMgKzEsNyBAQAoraWZlcSAoJChDT05GSUdfUFBDNjQpLHkpCitFWFRSQV9DRkxBR1MJKz0gLW1uby1taW5pbWFsLXRvYworZW5kaWYKKwogb2JqLSQoQ09ORklHX09QUk9GSUxFKSArPSBvcHJvZmlsZS5vCiAKIERSSVZFUl9PQkpTIDo9ICQoYWRkcHJlZml4IC4uLy4uLy4uL2RyaXZlcnMvb3Byb2ZpbGUvLCBcCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvY29tbW9uLmMgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvY29tbW9uLmMKaW5kZXggNWIxZGU3ZS4uMjdhZDU2YiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL2NvbW1vbi5jCisrKyBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9jb21tb24uYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPGFzbS9wbWMuaD4KICNpbmNsdWRlIDxhc20vY3B1dGFibGUuaD4KICNpbmNsdWRlIDxhc20vb3Byb2ZpbGVfaW1wbC5oPgorI2luY2x1ZGUgPGFzbS9maXJtd2FyZS5oPgogCiBzdGF0aWMgc3RydWN0IG9wX3Bvd2VycGNfbW9kZWwgKm1vZGVsOwogCkBAIC0xMzAsNiArMTMxLDkgQEAKIAlpZiAoIWN1cl9jcHVfc3BlYy0+b3Byb2ZpbGVfY3B1X3R5cGUpCiAJCXJldHVybiAtRU5PREVWOwogCisJaWYgKGZpcm13YXJlX2hhc19mZWF0dXJlKEZXX0ZFQVRVUkVfSVNFUklFUykpCisJCXJldHVybiAtRU5PREVWOworCiAJc3dpdGNoIChjdXJfY3B1X3NwZWMtPm9wcm9maWxlX3R5cGUpIHsKICNpZmRlZiBDT05GSUdfUFBDNjQKIAkJY2FzZSBQUENfT1BST0ZJTEVfUlM2NDoKQEAgLTE2Miw3ICsxNjYsNyBAQAogCW9wcy0+c3RvcCA9IG9wX3Bvd2VycGNfc3RvcDsKIAlvcHMtPmJhY2t0cmFjZSA9IG9wX3Bvd2VycGNfYmFja3RyYWNlOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAib3Byb2ZpbGU6IHVzaW5nICVzIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcuXG4iLAorCXByaW50ayhLRVJOX0RFQlVHICJvcHJvZmlsZTogdXNpbmcgJXMgcGVyZm9ybWFuY2UgbW9uaXRvcmluZy5cbiIsCiAJICAgICAgIG9wcy0+Y3B1X3R5cGUpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfcG93ZXI0LmMgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfcG93ZXI0LmMKaW5kZXggNGMyYmVhYi4uNTA2ZjZiNyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX3Bvd2VyNC5jCisrKyBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9wb3dlcjQuYwpAQCAtMjQsMTAgKzI0LDYgQEAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJlc2V0X3ZhbHVlW09QX01BWF9DT1VOVEVSXTsKIAogc3RhdGljIGludCBvcHJvZmlsZV9ydW5uaW5nOwotc3RhdGljIGludCBtbWNyYV9oYXNfc2lodjsKLS8qIFVuZm9ydHVuYXRlbHkgdGhlc2UgYml0cyB2YXJ5IGJldHdlZW4gQ1BVcyAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgbW1jcmFfc2lodiA9IE1NQ1JBX1NJSFY7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBtbWNyYV9zaXByID0gTU1DUkFfU0lQUjsKIAogLyogbW1jciB2YWx1ZXMgYXJlIHNldCBpbiBwb3dlcjRfcmVnX3NldHVwLCB1c2VkIGluIHBvd2VyNF9jcHVfc2V0dXAgKi8KIHN0YXRpYyB1MzIgbW1jcjBfdmFsOwpAQCAtNDEsMTYgKzM3LDYgQEAKIAlpbnQgaTsKIAogCS8qCi0JICogU0lIViAvIFNJUFIgYml0cyBhcmUgb25seSBpbXBsZW1lbnRlZCBvbiBQT1dFUjQrIChHUSkgYW5kIGFib3ZlLgotCSAqIEhvd2V2ZXIgd2UgZGlzYWJsZSBpdCBvbiBhbGwgUE9XRVI0IHVudGlsIHdlIHZlcmlmeSBpdCB3b3JrcwotCSAqIChJIHdhcyBzZWVpbmcgc29tZSBzdHJhbmdlIGJlaGF2aW91ciBsYXN0IHRpbWUgSSB0cmllZCkuCi0JICoKLQkgKiBJdCBoYXMgYmVlbiB2ZXJpZmllZCB0byB3b3JrIG9uIFBPV0VSNSBzbyB3ZSBlbmFibGUgaXQgdGhlcmUuCi0JICovCi0JaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX01NQ1JBX1NJSFYpKQotCQltbWNyYV9oYXNfc2lodiA9IDE7Ci0KLQkvKgogCSAqIFRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50IHNldHRpbmdzIGFyZSBnaXZlbiBpbiB0aGUgbW1jcjAsCiAJICogbW1jcjEgYW5kIG1tY3JhIHZhbHVlcyBwYXNzZWQgZnJvbSB0aGUgdXNlciBpbiB0aGUKIAkgKiBvcF9zeXN0ZW1fY29uZmlnIHN0cnVjdHVyZSAoc3lzIHZhcmlhYmxlKS4KQEAgLTIwMiwxOCArMTg4LDE5IEBACiAJdW5zaWduZWQgbG9uZyBtbWNyYTsKIAogCS8qIENhbnQgZG8gbXVjaCBhYm91dCBpdCAqLwotCWlmICghbW1jcmFfaGFzX3NpaHYpCisJaWYgKCFjdXJfY3B1X3NwZWMtPm9wcm9maWxlX21tY3JhX3NpaHYpCiAJCXJldHVybiBwYzsKIAogCW1tY3JhID0gbWZzcHIoU1BSTl9NTUNSQSk7CiAKIAkvKiBXZXJlIHdlIGluIHRoZSBoeXBlcnZpc29yPyAqLwotCWlmIChmaXJtd2FyZV9oYXNfZmVhdHVyZShGV19GRUFUVVJFX0xQQVIpICYmIChtbWNyYSAmIG1tY3JhX3NpaHYpKQorCWlmIChmaXJtd2FyZV9oYXNfZmVhdHVyZShGV19GRUFUVVJFX0xQQVIpICYmCisJICAgIChtbWNyYSAmIGN1cl9jcHVfc3BlYy0+b3Byb2ZpbGVfbW1jcmFfc2lodikpCiAJCS8qIGZ1bmN0aW9uIGRlc2NyaXB0b3IgbWFkbmVzcyAqLwogCQlyZXR1cm4gKigodW5zaWduZWQgbG9uZyAqKWh5cGVydmlzb3JfYnVja2V0KTsKIAogCS8qIFdlIHdlcmUgaW4gdXNlcnNwYWNlLCBub3RoaW5nIHRvIGRvICovCi0JaWYgKG1tY3JhICYgbW1jcmFfc2lwcikKKwlpZiAobW1jcmEgJiBjdXJfY3B1X3NwZWMtPm9wcm9maWxlX21tY3JhX3NpcHIpCiAJCXJldHVybiBwYzsKIAogI2lmZGVmIENPTkZJR19QUENfUlRBUwpAQCAtMjM1LDE1ICsyMjIsMTQgQEAKIAlyZXR1cm4gcGM7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X2tlcm5lbCh1bnNpZ25lZCBsb25nIHBjKQorc3RhdGljIGludCBnZXRfa2VybmVsKHVuc2lnbmVkIGxvbmcgcGMsIHVuc2lnbmVkIGxvbmcgbW1jcmEpCiB7CiAJaW50IGlzX2tlcm5lbDsKIAotCWlmICghbW1jcmFfaGFzX3NpaHYpIHsKKwlpZiAoIWN1cl9jcHVfc3BlYy0+b3Byb2ZpbGVfbW1jcmFfc2lodikgewogCQlpc19rZXJuZWwgPSBpc19rZXJuZWxfYWRkcihwYyk7CiAJfSBlbHNlIHsKLQkJdW5zaWduZWQgbG9uZyBtbWNyYSA9IG1mc3ByKFNQUk5fTU1DUkEpOwotCQlpc19rZXJuZWwgPSAoKG1tY3JhICYgbW1jcmFfc2lwcikgPT0gMCk7CisJCWlzX2tlcm5lbCA9ICgobW1jcmEgJiBjdXJfY3B1X3NwZWMtPm9wcm9maWxlX21tY3JhX3NpcHIpID09IDApOwogCX0KIAogCXJldHVybiBpc19rZXJuZWw7CkBAIC0yNTcsOSArMjQzLDEyIEBACiAJaW50IHZhbDsKIAlpbnQgaTsKIAl1bnNpZ25lZCBpbnQgbW1jcjA7CisJdW5zaWduZWQgbG9uZyBtbWNyYTsKKworCW1tY3JhID0gbWZzcHIoU1BSTl9NTUNSQSk7CiAKIAlwYyA9IGdldF9wYyhyZWdzKTsKLQlpc19rZXJuZWwgPSBnZXRfa2VybmVsKHBjKTsKKwlpc19rZXJuZWwgPSBnZXRfa2VybmVsKHBjLCBtbWNyYSk7CiAKIAkvKiBzZXQgdGhlIFBNTSBiaXQgKHNlZSBjb21tZW50IGJlbG93KSAqLwogCW10bXNyZChtZm1zcigpIHwgTVNSX1BNTSk7CkBAIC0yODcsNiArMjc2LDEwIEBACiAJICovCiAJbW1jcjAgJj0gfk1NQ1IwX1BNQU87CiAKKwkvKiBDbGVhciB0aGUgYXBwcm9wcmlhdGUgYml0cyBpbiB0aGUgTU1DUkEgKi8KKwltbWNyYSAmPSB+Y3VyX2NwdV9zcGVjLT5vcHJvZmlsZV9tbWNyYV9jbGVhcjsKKwltdHNwcihTUFJOX01NQ1JBLCBtbWNyYSk7CisKIAkvKgogCSAqIG5vdyBjbGVhciB0aGUgZnJlZXplIGJpdCwgY291bnRpbmcgd2lsbCBub3Qgc3RhcnQgdW50aWwgd2UKIAkgKiByZmlkIGZyb20gdGhpcyBleGNlcHRpb24sIGJlY2F1c2Ugb25seSBhdCB0aGF0IHBvaW50IHdpbGwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L0tjb25maWcKaW5kZXggMDZlMzcxMi4uNDU0ZmM1MyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L0tjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L0tjb25maWcKQEAgLTExLDEzICsxMSwyMCBAQAogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1QQyA4NTQwIEFEUyBib2FyZAogCitjb25maWcgTVBDODV4eF9DRFMKKwlib29sICJGcmVlc2NhbGUgTVBDODV4eCBDRFMiCisJc2VsZWN0IERFRkFVTFRfVUlNQUdFCisJc2VsZWN0IFBQQ19JODI1OSBpZiBQQ0kKKwloZWxwCisJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNUEM4NXh4IENEUyBib2FyZAorCiBlbmRjaG9pY2UKIAogY29uZmlnIE1QQzg1NDAKIAlib29sCiAJc2VsZWN0IFBQQ19VREJHXzE2NTUwCiAJc2VsZWN0IFBQQ19JTkRJUkVDVF9QQ0kKLQlkZWZhdWx0IHkgaWYgTVBDODU0MF9BRFMKKwlkZWZhdWx0IHkgaWYgTVBDODU0MF9BRFMgfHwgTVBDODV4eF9DRFMKIAogY29uZmlnIFBQQ19JTkRJUkVDVF9QQ0lfQkUKIAlib29sCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvTWFrZWZpbGUKaW5kZXggZmZjNDEzOS4uNzYxNWFhNSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9NYWtlZmlsZQpAQCAtMywzICszLDQgQEAKICMKIG9iai0kKENPTkZJR19QUENfODV4eCkJKz0gbWlzYy5vIHBjaS5vCiBvYmotJChDT05GSUdfTVBDODU0MF9BRFMpICs9IG1wYzg1eHhfYWRzLm8KK29iai0kKENPTkZJR19NUEM4NXh4X0NEUykgKz0gbXBjODV4eF9jZHMubwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfY2RzLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9jZHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGU2ZTExCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfY2RzLmMKQEAgLTAsMCArMSwzNTkgQEAKKy8qCisgKiBNUEM4NXh4IHNldHVwIGFuZCBlYXJseSBib290IGNvZGUgcGx1cyBvdGhlciByYW5kb20gYml0cy4KKyAqCisgKiBNYWludGFpbmVkIGJ5IEt1bWFyIEdhbGEgKHNlZSBNQUlOVEFJTkVSUyBmb3IgY29udGFjdCBpbmZvcm1hdGlvbikKKyAqCisgKiBDb3B5cmlnaHQgMjAwNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvcmVib290Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+CisjaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jvb3RfZGV2Lmg+CisjaW5jbHVkZSA8bGludXgvaW5pdHJkLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZnNsX2RldmljZXMuaD4KKworI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorI2luY2x1ZGUgPGFzbS90aW1lLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL21hY2hkZXAuaD4KKyNpbmNsdWRlIDxhc20vaXBpYy5oPgorI2luY2x1ZGUgPGFzbS9ib290aW5mby5oPgorI2luY2x1ZGUgPGFzbS9wY2ktYnJpZGdlLmg+CisjaW5jbHVkZSA8YXNtL21wYzg1eHguaD4KKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8bW0vbW11X2RlY2wuaD4KKyNpbmNsdWRlIDxhc20vcHJvbS5oPgorI2luY2x1ZGUgPGFzbS91ZGJnLmg+CisjaW5jbHVkZSA8YXNtL21waWMuaD4KKyNpbmNsdWRlIDxhc20vaTgyNTkuaD4KKworI2luY2x1ZGUgPHN5c2Rldi9mc2xfc29jLmg+CisjaW5jbHVkZSAibXBjODV4eC5oIgorCisjaWZuZGVmIENPTkZJR19QQ0kKK3Vuc2lnbmVkIGxvbmcgaXNhX2lvX2Jhc2UgPSAwOwordW5zaWduZWQgbG9uZyBpc2FfbWVtX2Jhc2UgPSAwOworI2VuZGlmCisKK3N0YXRpYyBpbnQgY2RzX3BjaV9zbG90ID0gMjsKK3N0YXRpYyB2b2xhdGlsZSB1OCAqY2FkbXVzOworCisvKgorICogSW50ZXJuYWwgaW50ZXJydXB0cyBhcmUgYWxsIExldmVsIFNlbnNpdGl2ZSwgYW5kIFBvc2l0aXZlIFBvbGFyaXR5CisgKgorICogTm90ZTogIExpa2VseSwgdGhpcyB0YWJsZSBhbmQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBzaG91bGQgYmUKKyAqICAgICAgICBvYnRhaW5lZCBhbmQgZGVyaXZlZCBmcm9tIHRoZSBPRiBEZXZpY2UgVHJlZS4KKyAqLworc3RhdGljIHVfY2hhciBtcGM4NXh4X2Nkc19vcGVucGljX2luaXRzZW5zZXNbXSBfX2luaXRkYXRhID0geworCU1QQzg1WFhfSU5URVJOQUxfSVJRX1NFTlNFUywKKyNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEV4dCAwOiBQQ0kgc2xvdCAwICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9ORUdBVElWRSksCS8qIEV4dCAxOiBQQ0kgc2xvdCAxICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9ORUdBVElWRSksCS8qIEV4dCAyOiBQQ0kgc2xvdCAyICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9ORUdBVElWRSksCS8qIEV4dCAzOiBQQ0kgc2xvdCAzICovCisjZWxzZQorCTB4MCwJCQkJLyogRXh0ZXJuYWwgIDA6ICovCisJMHgwLAkJCQkvKiBFeHRlcm5hbCAgMTogKi8KKwkweDAsCQkJCS8qIEV4dGVybmFsICAyOiAqLworCTB4MCwJCQkJLyogRXh0ZXJuYWwgIDM6ICovCisjZW5kaWYKKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX05FR0FUSVZFKSwJLyogRXh0ZXJuYWwgNTogUEhZICovCisJMHgwLAkJCQkvKiBFeHRlcm5hbCAgNjogKi8KKwkweDAsCQkJCS8qIEV4dGVybmFsICA3OiAqLworCTB4MCwJCQkJLyogRXh0ZXJuYWwgIDg6ICovCisJMHgwLAkJCQkvKiBFeHRlcm5hbCAgOTogKi8KKwkweDAsCQkJCS8qIEV4dGVybmFsIDEwOiAqLworI2lmZGVmIENPTkZJR19QQ0kKKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX05FR0FUSVZFKSwgICAgLyogRXh0IDExOiBQQ0kyIHNsb3QgMCAqLworI2Vsc2UKKwkweDAsCQkJCS8qIEV4dGVybmFsIDExOiAqLworI2VuZGlmCit9OworCisKKyNpZmRlZiBDT05GSUdfUENJCisvKgorICogaW50ZXJydXB0IHJvdXRpbmcKKyAqLworaW50CittcGM4NXh4X21hcF9pcnEoc3RydWN0IHBjaV9kZXYgKmRldiwgdW5zaWduZWQgY2hhciBpZHNlbCwgdW5zaWduZWQgY2hhciBwaW4pCit7CisJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gcGNpX2J1c190b19ob3NlKGRldi0+YnVzLT5udW1iZXIpOworCisJaWYgKCFob3NlLT5pbmRleCkKKwl7CisJCS8qIEhhbmRsZSBQQ0kxIGludGVycnVwdHMgKi8KKwkJY2hhciBwY2lfaXJxX3RhYmxlW11bNF0gPQorCQkJLyoKKwkJCSAqICAgICAgUENJIElEU0VML0lOVFBJTi0+SU5UTElORQorCQkJICogICAgICAgIEEgICAgICBCICAgICAgQyAgICAgIEQKKwkJCSAqLworCisJCQkvKiBOb3RlIElSUSBhc3NpZ25tZW50IGZvciBzbG90cyBpcyBiYXNlZCBvbiB3aGljaCBzbG90IHRoZSBlbHlzaXVtIGlzCisJCQkgKiBpbiAtLSBpbiB0aGlzIHNldHVwIGVseXNpdW0gaXMgaW4gc2xvdCAjMiAodGhpcyBQSVJRQSBhcyBmaXJzdAorCQkJICogaW50ZXJydXB0IG9uIHNsb3QgKi8KKwkJeworCQkJeyAwLCAxLCAyLCAzIH0sIC8qIDE2IC0gUE1DICovCisJCQl7IDAsIDEsIDIsIDMgfSwgLyogMTcgUDJQIChUc2kzMjApICovCisJCQl7IDAsIDEsIDIsIDMgfSwgLyogMTggLSBTbG90IDEgKi8KKwkJCXsgMSwgMiwgMywgMCB9LCAvKiAxOSAtIFNsb3QgMiAqLworCQkJeyAyLCAzLCAwLCAxIH0sIC8qIDIwIC0gU2xvdCAzICovCisJCQl7IDMsIDAsIDEsIDIgfSwgLyogMjEgLSBTbG90IDQgKi8KKwkJfTsKKworCQljb25zdCBsb25nIG1pbl9pZHNlbCA9IDE2LCBtYXhfaWRzZWwgPSAyMSwgaXJxc19wZXJfc2xvdCA9IDQ7CisJCWludCBpLCBqOworCisJCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspCisJCQlmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCQkJCXBjaV9pcnFfdGFibGVbaV1bal0gPQorCQkJCQkoKHBjaV9pcnFfdGFibGVbaV1bal0gKyA1IC0KKwkJCQkJICBjZHNfcGNpX3Nsb3QpICYgMHgzKSArIFBJUlEwQTsKKworCQlyZXR1cm4gUENJX0lSUV9UQUJMRV9MT09LVVA7CisJfSBlbHNlIHsKKwkJLyogSGFuZGxlIFBDSTIgaW50ZXJydXB0cyAoaWYgd2UgaGF2ZSBvbmUpICovCisJCWNoYXIgcGNpX2lycV90YWJsZVtdWzRdID0KKwkJeworCQkJLyoKKwkJCSAqIFdlIG9ubHkgaGF2ZSBvbmUgc2xvdCBhbmQgb25lIGludGVycnVwdAorCQkJICogZ29pbmcgdG8gUElSUUEgLSBQSVJRRCAqLworCQkJeyBQSVJRMUEsIFBJUlExQSwgUElSUTFBLCBQSVJRMUEgfSwgLyogMjEgLSBzbG90IDAgKi8KKwkJfTsKKworCQljb25zdCBsb25nIG1pbl9pZHNlbCA9IDIxLCBtYXhfaWRzZWwgPSAyMSwgaXJxc19wZXJfc2xvdCA9IDQ7CisKKwkJcmV0dXJuIFBDSV9JUlFfVEFCTEVfTE9PS1VQOworCX0KK30KKworI2RlZmluZSBBUkNBRElBX0hPU1RfQlJJREdFX0lEU0VMCTE3CisjZGVmaW5lIEFSQ0FESUFfMk5EX0JSSURHRV9JRFNFTAkzCisKK2V4dGVybiBpbnQgbXBjODV4eF9wY2kyX2J1c25vOworCitpbnQKK21wYzg1eHhfZXhjbHVkZV9kZXZpY2UodV9jaGFyIGJ1cywgdV9jaGFyIGRldmZuKQoreworCWlmIChidXMgPT0gMCAmJiBQQ0lfU0xPVChkZXZmbikgPT0gMCkKKwkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKKwlpZiAobXBjODV4eF9wY2kyX2J1c25vKQorCQlpZiAoYnVzID09IChtcGM4NXh4X3BjaTJfYnVzbm8pICYmIFBDSV9TTE9UKGRldmZuKSA9PSAwKQorCQkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKKwkvKiBXZSBleHBsaWNpdGx5IGRvIG5vdCBnbyBwYXN0IHRoZSBUdW5kcmEgMzIwIEJyaWRnZSAqLworCWlmICgoYnVzID09IDEpICYmIChQQ0lfU0xPVChkZXZmbikgPT0gQVJDQURJQV8yTkRfQlJJREdFX0lEU0VMKSkKKwkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKKwlpZiAoKGJ1cyA9PSAwKSAmJiAoUENJX1NMT1QoZGV2Zm4pID09IEFSQ0FESUFfMk5EX0JSSURHRV9JRFNFTCkpCisJCXJldHVybiBQQ0lCSU9TX0RFVklDRV9OT1RfRk9VTkQ7CisJZWxzZQorCQlyZXR1cm4gUENJQklPU19TVUNDRVNTRlVMOworfQorCit2b2lkIF9faW5pdAorbXBjODV4eF9jZHNfcGNpYmlvc19maXh1cCh2b2lkKQoreworCXN0cnVjdCBwY2lfZGV2ICpkZXY7CisJdV9jaGFyCQljOworCisJaWYgKChkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX1ZJQSwKKwkJCQkJUENJX0RFVklDRV9JRF9WSUFfODJDNTg2XzEsIE5VTEwpKSkgeworCQkvKgorCQkgKiBVLUJvb3QgZG9lcyBub3Qgc2V0IHRoZSBlbmFibGUgYml0cworCQkgKiBmb3IgdGhlIElERSBkZXZpY2UuIEZvcmNlIHRoZW0gb24gaGVyZS4KKwkJICovCisJCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgMHg0MCwgJmMpOworCQljIHw9IDB4MDM7IC8qIElERTogQ2hpcCBFbmFibGUgQml0cyAqLworCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDQwLCBjKTsKKworCQkvKgorCQkgKiBTaW5jZSBvbmx5IHByaW1hcnkgaW50ZXJmYWNlIHdvcmtzLCBmb3JjZSB0aGUKKwkJICogSURFIGZ1bmN0aW9uIHRvIHN0YW5kYXJkIHByaW1hcnkgSURFIGludGVycnVwdAorCQkgKiB3LyA4MjU5IG9mZnNldAorCQkgKi8KKwkJZGV2LT5pcnEgPSAxNDsKKwkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0lOVEVSUlVQVF9MSU5FLCBkZXYtPmlycSk7CisJCXBjaV9kZXZfcHV0KGRldik7CisJfQorCisJLyoKKwkgKiBGb3JjZSBsZWdhY3kgVVNCIGludGVycnVwdCByb3V0aW5nCisJICovCisJaWYgKChkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX1ZJQSwKKwkJCQkJUENJX0RFVklDRV9JRF9WSUFfODJDNTg2XzIsIE5VTEwpKSkgeworCQlkZXYtPmlycSA9IDEwOworCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBQQ0lfSU5URVJSVVBUX0xJTkUsIDEwKTsKKwkJcGNpX2Rldl9wdXQoZGV2KTsKKwl9CisKKwlpZiAoKGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfVklBLAorCQkJCQlQQ0lfREVWSUNFX0lEX1ZJQV84MkM1ODZfMiwgZGV2KSkpIHsKKwkJZGV2LT5pcnEgPSAxMTsKKwkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0lOVEVSUlVQVF9MSU5FLCAxMSk7CisJCXBjaV9kZXZfcHV0KGRldik7CisJfQorfQorI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KKwordm9pZCBfX2luaXQgbXBjODV4eF9jZHNfcGljX2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgbXBpYyAqbXBpYzE7CisJcGh5c19hZGRyX3QgT3BlblBJQ19QQWRkcjsKKworCS8qIERldGVybWluZSB0aGUgUGh5c2ljYWwgQWRkcmVzcyBvZiB0aGUgT3BlblBJQyByZWdzICovCisJT3BlblBJQ19QQWRkciA9IGdldF9pbW1yYmFzZSgpICsgTVBDODV4eF9PUEVOUElDX09GRlNFVDsKKworCW1waWMxID0gbXBpY19hbGxvYyhPcGVuUElDX1BBZGRyLAorCQkJTVBJQ19QUklNQVJZIHwgTVBJQ19XQU5UU19SRVNFVCB8IE1QSUNfQklHX0VORElBTiwKKwkJCTQsIE1QQzg1eHhfT1BFTlBJQ19JUlFfT0ZGU0VULCAwLCAyNTAsCisJCQltcGM4NXh4X2Nkc19vcGVucGljX2luaXRzZW5zZXMsCisJCQlzaXplb2YobXBjODV4eF9jZHNfb3BlbnBpY19pbml0c2Vuc2VzKSwgIiBPcGVuUElDICAiKTsKKwlCVUdfT04obXBpYzEgPT0gTlVMTCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAwLCBPcGVuUElDX1BBZGRyICsgMHgxMDIwMCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAxLCBPcGVuUElDX1BBZGRyICsgMHgxMDI4MCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAyLCBPcGVuUElDX1BBZGRyICsgMHgxMDMwMCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAzLCBPcGVuUElDX1BBZGRyICsgMHgxMDM4MCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCA0LCBPcGVuUElDX1BBZGRyICsgMHgxMDQwMCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCA1LCBPcGVuUElDX1BBZGRyICsgMHgxMDQ4MCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCA2LCBPcGVuUElDX1BBZGRyICsgMHgxMDUwMCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCA3LCBPcGVuUElDX1BBZGRyICsgMHgxMDU4MCk7CisKKwkvKiBkdW1teSBtYXBwaW5ncyB0byBnZXQgdG8gNDggKi8KKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDgsIE9wZW5QSUNfUEFkZHIgKyAweDEwNjAwKTsKKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDksIE9wZW5QSUNfUEFkZHIgKyAweDEwNjgwKTsKKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDEwLCBPcGVuUElDX1BBZGRyICsgMHgxMDcwMCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAxMSwgT3BlblBJQ19QQWRkciArIDB4MTA3ODApOworCisJLyogRXh0ZXJuYWwgaW50cyAqLworCW1waWNfYXNzaWduX2lzdShtcGljMSwgMTIsIE9wZW5QSUNfUEFkZHIgKyAweDEwMDAwKTsKKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDEzLCBPcGVuUElDX1BBZGRyICsgMHgxMDA4MCk7CisJbXBpY19hc3NpZ25faXN1KG1waWMxLCAxNCwgT3BlblBJQ19QQWRkciArIDB4MTAxMDApOworCisJbXBpY19pbml0KG1waWMxKTsKKworI2lmZGVmIENPTkZJR19QQ0kKKwltcGljX3NldHVwX2Nhc2NhZGUoUElSUTBBLCBpODI1OV9pcnFfY2FzY2FkZSwgTlVMTCk7CisKKwlpODI1OV9pbml0KDAsMCk7CisjZW5kaWYKK30KKworCisvKgorICogU2V0dXAgdGhlIGFyY2hpdGVjdHVyZQorICovCitzdGF0aWMgdm9pZCBfX2luaXQKK21wYzg1eHhfY2RzX3NldHVwX2FyY2godm9pZCkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdTsKKyNpZmRlZiBDT05GSUdfUENJCisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKyNlbmRpZgorCisJaWYgKHBwY19tZC5wcm9ncmVzcykKKwkJcHBjX21kLnByb2dyZXNzKCJtcGM4NXh4X2Nkc19zZXR1cF9hcmNoKCkiLCAwKTsKKworCWNwdSA9IG9mX2ZpbmRfbm9kZV9ieV90eXBlKE5VTEwsICJjcHUiKTsKKwlpZiAoY3B1ICE9IDApIHsKKwkJdW5zaWduZWQgaW50ICpmcDsKKworCQlmcCA9IChpbnQgKilnZXRfcHJvcGVydHkoY3B1LCAiY2xvY2stZnJlcXVlbmN5IiwgTlVMTCk7CisJCWlmIChmcCAhPSAwKQorCQkJbG9vcHNfcGVyX2ppZmZ5ID0gKmZwIC8gSFo7CisJCWVsc2UKKwkJCWxvb3BzX3Blcl9qaWZmeSA9IDUwMDAwMDAwMCAvIEhaOworCQlvZl9ub2RlX3B1dChjcHUpOworCX0KKworCWNhZG11cyA9IGlvcmVtYXAoQ0FETVVTX0JBU0UsIENBRE1VU19TSVpFKTsKKwljZHNfcGNpX3Nsb3QgPSAoKGNhZG11c1tDTV9DU1JdID4+IDYpICYgMHgzKSArIDE7CisKKwlpZiAocHBjX21kLnByb2dyZXNzKSB7CisJCWNoYXIgYnVmWzQwXTsKKwkJc25wcmludGYoYnVmLCA0MCwgIkNEUyBWZXJzaW9uID0gMHgleCBpbiBzbG90ICVkXG4iLAorCQkJCWNhZG11c1tDTV9WRVJdLCBjZHNfcGNpX3Nsb3QpOworCQlwcGNfbWQucHJvZ3Jlc3MoYnVmLCAwKTsKKwl9CisKKyNpZmRlZiBDT05GSUdfUENJCisJZm9yIChucCA9IE5VTEw7IChucCA9IG9mX2ZpbmRfbm9kZV9ieV90eXBlKG5wLCAicGNpIikpICE9IE5VTEw7KQorCQlhZGRfYnJpZGdlKG5wKTsKKworCXBwY19tZC5wY2liaW9zX2ZpeHVwID0gbXBjODV4eF9jZHNfcGNpYmlvc19maXh1cDsKKwlwcGNfbWQucGNpX3N3aXp6bGUgPSBjb21tb25fc3dpenpsZTsKKwlwcGNfbWQucGNpX21hcF9pcnEgPSBtcGM4NXh4X21hcF9pcnE7CisJcHBjX21kLnBjaV9leGNsdWRlX2RldmljZSA9IG1wYzg1eHhfZXhjbHVkZV9kZXZpY2U7CisjZW5kaWYKKworI2lmZGVmICBDT05GSUdfUk9PVF9ORlMKKwlST09UX0RFViA9IFJvb3RfTkZTOworI2Vsc2UKKwlST09UX0RFViA9IFJvb3RfSERBMTsKKyNlbmRpZgorfQorCisKK3ZvaWQKK21wYzg1eHhfY2RzX3Nob3dfY3B1aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCit7CisJdWludCBwdmlkLCBzdmlkLCBwaGlkMTsKKwl1aW50IG1lbXNpemUgPSB0b3RhbF9tZW1vcnk7CisKKwlwdmlkID0gbWZzcHIoU1BSTl9QVlIpOworCXN2aWQgPSBtZnNwcihTUFJOX1NWUik7CisKKwlzZXFfcHJpbnRmKG0sICJWZW5kb3JcdFx0OiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvclxuIik7CisJc2VxX3ByaW50ZihtLCAiTWFjaGluZVx0XHQ6IE1QQzg1eHggQ0RTICgweCV4KVxuIiwgY2FkbXVzW0NNX1ZFUl0pOworCXNlcV9wcmludGYobSwgIlBWUlx0XHQ6IDB4JXhcbiIsIHB2aWQpOworCXNlcV9wcmludGYobSwgIlNWUlx0XHQ6IDB4JXhcbiIsIHN2aWQpOworCisJLyogRGlzcGxheSBjcHUgUGxsIHNldHRpbmcgKi8KKwlwaGlkMSA9IG1mc3ByKFNQUk5fSElEMSk7CisJc2VxX3ByaW50ZihtLCAiUExMIHNldHRpbmdcdDogMHgleFxuIiwgKChwaGlkMSA+PiAyNCkgJiAweDNmKSk7CisKKwkvKiBEaXNwbGF5IHRoZSBhbW91bnQgb2YgbWVtb3J5ICovCisJc2VxX3ByaW50ZihtLCAiTWVtb3J5XHRcdDogJWQgTUJcbiIsIG1lbXNpemUgLyAoMTAyNCAqIDEwMjQpKTsKK30KKworCisvKgorICogQ2FsbGVkIHZlcnkgZWFybHksIGRldmljZS10cmVlIGlzbid0IHVuZmxhdHRlbmVkCisgKi8KK3N0YXRpYyBpbnQgX19pbml0IG1wYzg1eHhfY2RzX3Byb2JlKHZvaWQpCit7CisJLyogV2UgYWx3YXlzIG1hdGNoIGZvciBub3csIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIGxvb2sgYXQKKwkgKiB0aGUgZmxhdCBkZXYgdHJlZSB0byBlbnN1cmUgdGhpcyBpcyB0aGUgYm9hcmQgd2UgYXJlCisJICogc3VwcG9zZWQgdG8gcnVuIG9uCisJICovCisJcmV0dXJuIDE7Cit9CisKK2RlZmluZV9tYWNoaW5lKG1wYzg1eHhfY2RzKSB7CisJLm5hbWUJCT0gIk1QQzg1eHggQ0RTIiwKKwkucHJvYmUJCT0gbXBjODV4eF9jZHNfcHJvYmUsCisJLnNldHVwX2FyY2gJPSBtcGM4NXh4X2Nkc19zZXR1cF9hcmNoLAorCS5pbml0X0lSUQk9IG1wYzg1eHhfY2RzX3BpY19pbml0LAorCS5zaG93X2NwdWluZm8JPSBtcGM4NXh4X2Nkc19zaG93X2NwdWluZm8sCisJLmdldF9pcnEJPSBtcGljX2dldF9pcnEsCisJLnJlc3RhcnQJPSBtcGM4NXh4X3Jlc3RhcnQsCisJLmNhbGlicmF0ZV9kZWNyID0gZ2VuZXJpY19jYWxpYnJhdGVfZGVjciwKKwkucHJvZ3Jlc3MJPSB1ZGJnX3Byb2dyZXNzLAorfTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X2Nkcy5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfY2RzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxZjU0ZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X2Nkcy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBhcmNoL3BwYy9wbGF0Zm9ybXMvODV4eC9tcGM4NXh4X2Nkc19jb21tb24uaAorICoKKyAqIE1QQzg1eHggQ0RTIGJvYXJkIGRlZmluaXRpb25zCisgKgorICogTWFpbnRhaW5lcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX01BQ0hfTVBDODVYWF9DRFNfSF9fCisjZGVmaW5lIF9fTUFDSF9NUEM4NVhYX0NEU19IX18KKworLyogQ0FETVVTIGluZm8gKi8KKyNkZWZpbmUgQ0FETVVTX0JBU0UgKDB4ZjgwMDQwMDApCisjZGVmaW5lIENBRE1VU19TSVpFICgyNTYpCisjZGVmaW5lIENNX1ZFUgkoMCkKKyNkZWZpbmUgQ01fQ1NSCSgxKQorI2RlZmluZSBDTV9SU1QJKDIpCisKKy8qIENEUyBOVlJBTS9SVEMgKi8KKyNkZWZpbmUgQ0RTX1JUQ19BRERSCSgweGY4MDAwMDAwKQorI2RlZmluZSBDRFNfUlRDX1NJWkUJKDggKiAxMDI0KQorCisvKiBQQ0kgaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgUElSUTBBCQkJTVBDODV4eF9JUlFfRVhUMAorI2RlZmluZSBQSVJRMEIJCQlNUEM4NXh4X0lSUV9FWFQxCisjZGVmaW5lIFBJUlEwQwkJCU1QQzg1eHhfSVJRX0VYVDIKKyNkZWZpbmUgUElSUTBECQkJTVBDODV4eF9JUlFfRVhUMworI2RlZmluZSBQSVJRMUEJCQlNUEM4NXh4X0lSUV9FWFQxMQorCisjZGVmaW5lIE5SXzgyNTlfSU5UUwkJMTYKKyNkZWZpbmUgQ1BNX0lSUV9PRkZTRVQJCU5SXzgyNTlfSU5UUworCisjZGVmaW5lIE1QQzg1eHhfT1BFTlBJQ19JUlFfT0ZGU0VUCTgwCisKKyNlbmRpZiAvKiBfX01BQ0hfTVBDODVYWF9DRFNfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvS2NvbmZpZyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhODc4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvS2NvbmZpZwpAQCAtMCwwICsxLDM2IEBACittZW51ICJQbGF0Zm9ybSBTdXBwb3J0IgorCWRlcGVuZHMgb24gUFBDXzg2eHgKKworY2hvaWNlCisJcHJvbXB0ICJNYWNoaW5lIFR5cGUiCisJZGVmYXVsdCBNUEM4NjQxX0hQQ04KKworY29uZmlnIE1QQzg2NDFfSFBDTgorCWJvb2wgIkZyZWVzY2FsZSBNUEM4NjQxIEhQQ04iCisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTVBDODY0MSBIUENOIGJvYXJkLgorCitlbmRjaG9pY2UKKworCitjb25maWcgTVBDODY0MQorCWJvb2wKKwlzZWxlY3QgUFBDX0lORElSRUNUX1BDSQorCXNlbGVjdCBQUENfVURCR18xNjU1MAorCWRlZmF1bHQgeSBpZiBNUEM4NjQxX0hQQ04KKworY29uZmlnIE1QSUMKKwlib29sCisJZGVmYXVsdCB5CisKK2NvbmZpZyBQUENfSU5ESVJFQ1RfUENJX0JFCisJYm9vbAorCWRlcGVuZHMgb24gUFBDXzg2eHgKKwlkZWZhdWx0IHkKKworY29uZmlnIFBQQ19TVERfTU1VCisJYm9vbAorCWRlcGVuZHMgb24gUFBDXzg2eHgKKwlkZWZhdWx0IHkKKworZW5kbWVudQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L01ha2VmaWxlIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZTc5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvTWFrZWZpbGUKQEAgLTAsMCArMSwxMCBAQAorIworIyBNYWtlZmlsZSBmb3IgdGhlIFBvd2VyUEMgODZ4eCBsaW51eCBrZXJuZWwuCisjCisKKworaWZlcSAoJChDT05GSUdfUFBDXzg2eHgpLHkpCitvYmotJChDT05GSUdfU01QKQkJKz0gbXBjODZ4eF9zbXAubworZW5kaWYKK29iai0kKENPTkZJR19NUEM4NjQxX0hQQ04pCSs9IG1wYzg2eHhfaHBjbi5vCitvYmotJChDT05GSUdfUENJKQkJKz0gcGNpLm8gbXBjODZ4eF9wY2llLm8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4NjQxX2hwY24uaCBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4NjQxX2hwY24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDQyMjUzCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L21wYzg2NDFfaHBjbi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBNUEM4NjQxIEhQQ04gYm9hcmQgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBBdXRob3I6IFhpYW5naHVhIFhpYW8gPHgueGlhb0BmcmVlc2NhbGUuY29tPgorICovCisKKyNpZm5kZWYgX19NUEM4NjQxX0hQQ05fSF9fCisjZGVmaW5lIF9fTVBDODY0MV9IUENOX0hfXworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorCisvKiBQQ0kgaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgUElSUUEJCTMKKyNkZWZpbmUgUElSUUIJCTQKKyNkZWZpbmUgUElSUUMJCTUKKyNkZWZpbmUgUElSUUQJCTYKKyNkZWZpbmUgUElSUTcJCTcKKyNkZWZpbmUgUElSUUUJCTkKKyNkZWZpbmUgUElSUUYJCTEwCisjZGVmaW5lIFBJUlFHCQkxMQorI2RlZmluZSBQSVJRSAkJMTIKKworLyogUENJLUV4cHJlc3MgbWVtb3J5IG1hcCAqLworI2RlZmluZSBNUEM4NlhYX1BDSUVfTE9XRVJfSU8gICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgTVBDODZYWF9QQ0lFX1VQUEVSX0lPICAgICAgICAweDAwZmZmZmZmCisKKyNkZWZpbmUgTVBDODZYWF9QQ0lFX0xPV0VSX01FTSAgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIE1QQzg2WFhfUENJRV9VUFBFUl9NRU0gICAgICAgMHg5ZmZmZmZmZgorCisjZGVmaW5lIE1QQzg2WFhfUENJRV9JT19CQVNFICAgICAgICAgMHhlMjAwMDAwMAorI2RlZmluZSBNUEM4NlhYX1BDSUVfTUVNX09GRlNFVCAgICAgIDB4MDAwMDAwMDAKKworI2RlZmluZSBNUEM4NlhYX1BDSUVfSU9fU0laRSAgICAgICAgIDB4MDEwMDAwMDAKKworI2RlZmluZSBQQ0lFMV9DRkdfQUREUl9PRkZTRVQgICAgKDB4ODAwMCkKKyNkZWZpbmUgUENJRTFfQ0ZHX0RBVEFfT0ZGU0VUICAgICgweDgwMDQpCisKKyNkZWZpbmUgUENJRTJfQ0ZHX0FERFJfT0ZGU0VUICAgICgweDkwMDApCisjZGVmaW5lIFBDSUUyX0NGR19EQVRBX09GRlNFVCAgICAoMHg5MDA0KQorCisjZGVmaW5lIE1QQzg2eHhfUENJRV9PRkZTRVQgUENJRTFfQ0ZHX0FERFJfT0ZGU0VUCisjZGVmaW5lIE1QQzg2eHhfUENJRV9TSVpFCSgweDEwMDApCisKKyNkZWZpbmUgTVBDODZYWF9SU1RDUl9PRkZTRVQJKDB4ZTAwYjApCS8qIFJlc2V0IENvbnRyb2wgUmVnaXN0ZXIgKi8KKworI2VuZGlmCS8qIF9fTVBDODY0MV9IUENOX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L21wYzg2eHguaCBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4Nnh4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNjOWU0ZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4Nnh4LmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCisgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgX19NUEM4NlhYX0hfXworI2RlZmluZSBfX01QQzg2WFhfSF9fCisKKy8qCisgKiBEZWNsYXJhdGlvbiBmb3IgdGhlIHZhcmlvdXMgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZQorICogbXBjODZ4eF8qIGZpbGVzLiBNb3N0bHkgZm9yIHVzZSBieSBtcGM4Nnh4X3NldHVwKCkuCisgKi8KKworZXh0ZXJuIGludCBfX2luaXQgYWRkX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldik7CisKK2V4dGVybiB2b2lkIF9faW5pdCBzZXR1cF9pbmRpcmVjdF9wY2llKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwKKwkJCQkgICAgICAgdTMyIGNmZ19hZGRyLCB1MzIgY2ZnX2RhdGEpOworZXh0ZXJuIHZvaWQgX19pbml0IHNldHVwX2luZGlyZWN0X3BjaWVfbm9tYXAoc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlLAorCQkJCQkgICAgIHZvaWQgX19pb21lbSAqY2ZnX2FkZHIsCisJCQkJCSAgICAgdm9pZCBfX2lvbWVtICpjZmdfZGF0YSk7CisKK2V4dGVybiB2b2lkIF9faW5pdCBtcGM4Nnh4X3NtcF9pbml0KHZvaWQpOworCisjZW5kaWYJLyogX19NUEM4NlhYX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L21wYzg2eHhfaHBjbi5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L21wYzg2eHhfaHBjbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4M2MyMWQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvbXBjODZ4eF9ocGNuLmMKQEAgLTAsMCArMSwzMjYgQEAKKy8qCisgKiBNUEM4Nnh4IEhQQ04gYm9hcmQgc3BlY2lmaWMgcm91dGluZXMKKyAqCisgKiBSZWNvZGU6IFpIQU5HIFdFSSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CisgKiBJbml0aWFsIGF1dGhvcjogWGlhbmdodWEgWGlhbyA8eC54aWFvQGZyZWVzY2FsZS5jb20+CisgKgorICogQ29weXJpZ2h0IDIwMDYgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2tkZXZfdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9yb290X2Rldi5oPgorCisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS90aW1lLmg+CisjaW5jbHVkZSA8YXNtL21hY2hkZXAuaD4KKyNpbmNsdWRlIDxhc20vcGNpLWJyaWRnZS5oPgorI2luY2x1ZGUgPGFzbS9tcGM4Nnh4Lmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KKyNpbmNsdWRlIDxtbS9tbXVfZGVjbC5oPgorI2luY2x1ZGUgPGFzbS91ZGJnLmg+CisjaW5jbHVkZSA8YXNtL2k4MjU5Lmg+CisKKyNpbmNsdWRlIDxhc20vbXBpYy5oPgorCisjaW5jbHVkZSA8c3lzZGV2L2ZzbF9zb2MuaD4KKworI2luY2x1ZGUgIm1wYzg2eHguaCIKKworI2lmbmRlZiBDT05GSUdfUENJCit1bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlID0gMDsKK3Vuc2lnbmVkIGxvbmcgaXNhX21lbV9iYXNlID0gMDsKK3Vuc2lnbmVkIGxvbmcgcGNpX2RyYW1fb2Zmc2V0ID0gMDsKKyNlbmRpZgorCisKKy8qCisgKiBJbnRlcm5hbCBpbnRlcnJ1cHRzIGFyZSBhbGwgTGV2ZWwgU2Vuc2l0aXZlLCBhbmQgUG9zaXRpdmUgUG9sYXJpdHkKKyAqLworCitzdGF0aWMgdV9jaGFyIG1wYzg2eHhfaHBjbl9vcGVucGljX2luaXRzZW5zZXNbXSBfX2luaXRkYXRhID0geworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAgMDogUmVzZXJ2ZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgIDE6IE1DTSAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAgMjogRERSIERSQU0gKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgIDM6IExCSVUgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgIDQ6IERNQSAwICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsICA1OiBETUEgMSAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAgNjogRE1BIDIgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgIDc6IERNQSAzICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsICA4OiBQQ0lFMSAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAgOTogUENJRTIgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMTA6IFJlc2VydmVkICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDExOiBSZXNlcnZlZCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAxMjogRFVBUlQyICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDEzOiBUU0VDIDEgVHJhbnNtaXQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMTQ6IFRTRUMgMSBSZWNlaXZlICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDE1OiBUU0VDIDMgdHJhbnNtaXQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMTY6IFRTRUMgMyByZWNlaXZlICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDE3OiBUU0VDIDMgZXJyb3IgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMTg6IFRTRUMgMSBSZWNlaXZlL1RyYW5zbWl0IEVycm9yICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDE5OiBUU0VDIDIgVHJhbnNtaXQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMjA6IFRTRUMgMiBSZWNlaXZlICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDIxOiBUU0VDIDQgdHJhbnNtaXQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMjI6IFRTRUMgNCByZWNlaXZlICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDIzOiBUU0VDIDQgZXJyb3IgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMjQ6IFRTRUMgMiBSZWNlaXZlL1RyYW5zbWl0IEVycm9yICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDI1OiBVbnVzZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMjY6IERVQVJUMSAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAyNzogSTJDICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDI4OiBQZXJmb3JtYW5jZSBNb25pdG9yICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDI5OiBVbnVzZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMzA6IFVudXNlZCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAzMTogVW51c2VkICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDMyOiBTUklPIGVycm9yL3dyaXRlLXBvcnQgdW5pdCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAzMzogU1JJTyBvdXRib3VuZCBkb29yYmVsbCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAzNDogU1JJTyBpbmJvdW5kIGRvb3JiZWxsICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDM1OiBVbnVzZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgMzY6IFVudXNlZCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAzNzogU1JJTyBvdXRib3VuZCBtZXNzYWdlIHVuaXQgMSAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCAzODogU1JJTyBpbmJvdW5kIG1lc3NhZ2UgdW5pdCAxICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDM5OiBTUklPIG91dGJvdW5kIG1lc3NhZ2UgdW5pdCAyICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDQwOiBTUklPIGluYm91bmQgbWVzc2FnZSB1bml0IDIgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgNDE6IFVudXNlZCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCA0MjogVW51c2VkICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDQzOiBVbnVzZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgNDQ6IFVudXNlZCAqLworCShJUlFfU0VOU0VfTEVWRUwgfCBJUlFfUE9MQVJJVFlfUE9TSVRJVkUpLAkvKiBJbnRlcm5hbCA0NTogVW51c2VkICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEludGVybmFsIDQ2OiBVbnVzZWQgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX1BPU0lUSVZFKSwJLyogSW50ZXJuYWwgNDc6IFVudXNlZCAqLworCTB4MCwJCQkJCQkvKiBFeHRlcm5hbCAgMDogKi8KKwkweDAsCQkJCQkJLyogRXh0ZXJuYWwgIDE6ICovCisJMHgwLAkJCQkJCS8qIEV4dGVybmFsICAyOiAqLworCTB4MCwJCQkJCQkvKiBFeHRlcm5hbCAgMzogKi8KKwkweDAsCQkJCQkJLyogRXh0ZXJuYWwgIDQ6ICovCisJMHgwLAkJCQkJCS8qIEV4dGVybmFsICA1OiAqLworCTB4MCwJCQkJCQkvKiBFeHRlcm5hbCAgNjogKi8KKwkweDAsCQkJCQkJLyogRXh0ZXJuYWwgIDc6ICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9ORUdBVElWRSksCS8qIEV4dGVybmFsICA4OiBQaXhpcyBGUEdBICovCisJKElSUV9TRU5TRV9MRVZFTCB8IElSUV9QT0xBUklUWV9QT1NJVElWRSksCS8qIEV4dGVybmFsICA5OiBVTEkgODI1OSBJTlRSIENhc2NhZGUgKi8KKwkoSVJRX1NFTlNFX0xFVkVMIHwgSVJRX1BPTEFSSVRZX05FR0FUSVZFKSwJLyogRXh0ZXJuYWwgMTA6IFF1YWQgRVRIIFBIWSAqLworCTB4MCwJCQkJCQkvKiBFeHRlcm5hbCAxMTogKi8KKwkweDAsCisJMHgwLAorCTB4MCwKKwkweDAsCit9OworCisKK3ZvaWQgX19pbml0CittcGM4Nnh4X2hwY25faW5pdF9pcnEodm9pZCkKK3sKKwlzdHJ1Y3QgbXBpYyAqbXBpYzE7CisJcGh5c19hZGRyX3Qgb3BlbnBpY19wYWRkcjsKKworCS8qIERldGVybWluZSB0aGUgUGh5c2ljYWwgQWRkcmVzcyBvZiB0aGUgT3BlblBJQyByZWdzICovCisJb3BlbnBpY19wYWRkciA9IGdldF9pbW1yYmFzZSgpICsgTVBDODZ4eF9PUEVOUElDX09GRlNFVDsKKworCS8qIEFsbG9jIG1waWMgc3RydWN0dXJlIGFuZCBwZXIgaXN1IGhhcyAxNiBJTlQgZW50cmllcy4gKi8KKwltcGljMSA9IG1waWNfYWxsb2Mob3BlbnBpY19wYWRkciwKKwkJCU1QSUNfUFJJTUFSWSB8IE1QSUNfV0FOVFNfUkVTRVQgfCBNUElDX0JJR19FTkRJQU4sCisJCQkxNiwgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQsIDAsIDI1MCwKKwkJCW1wYzg2eHhfaHBjbl9vcGVucGljX2luaXRzZW5zZXMsCisJCQlzaXplb2YobXBjODZ4eF9ocGNuX29wZW5waWNfaW5pdHNlbnNlcyksCisJCQkiIE1QSUMgICAgICIpOworCUJVR19PTihtcGljMSA9PSBOVUxMKTsKKworCS8qIDQ4IEludGVybmFsIEludGVycnVwdHMgKi8KKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDAsIG9wZW5waWNfcGFkZHIgKyAweDEwMjAwKTsKKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDEsIG9wZW5waWNfcGFkZHIgKyAweDEwNDAwKTsKKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDIsIG9wZW5waWNfcGFkZHIgKyAweDEwNjAwKTsKKworCS8qIDE2IEV4dGVybmFsIGludGVycnVwdHMgKi8KKwltcGljX2Fzc2lnbl9pc3UobXBpYzEsIDMsIG9wZW5waWNfcGFkZHIgKyAweDEwMDAwKTsKKworCW1waWNfaW5pdChtcGljMSk7CisKKyNpZmRlZiBDT05GSUdfUENJCisJbXBpY19zZXR1cF9jYXNjYWRlKE1QQzg2eHhfSVJRX0VYVDksIGk4MjU5X2lycV9jYXNjYWRlLCBOVUxMKTsKKwlpODI1OV9pbml0KDAsIEk4MjU5X09GRlNFVCk7CisjZW5kaWYKK30KKworCisKKyNpZmRlZiBDT05GSUdfUENJCisvKgorICogaW50ZXJydXB0IHJvdXRpbmcKKyAqLworCitpbnQKK21wYzg2eHhfbWFwX2lycShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1bnNpZ25lZCBjaGFyIGlkc2VsLCB1bnNpZ25lZCBjaGFyIHBpbikKK3sKKwlzdGF0aWMgY2hhciBwY2lfaXJxX3RhYmxlW11bNF0gPSB7CisJCS8qCisJCSAqICAgICAgUENJIElEU0VML0lOVFBJTi0+SU5UTElORQorCQkgKiAgICAgICBBICAgICAgQiAgICAgIEMgICAgICBECisJCSAqLworCQl7UElSUUEsIFBJUlFCLCBQSVJRQywgUElSUUR9LCAgIC8qIElEU0VMIDE3IC0tIFBDSSBTbG90IDEgKi8KKwkJe1BJUlFCLCBQSVJRQywgUElSUUQsIFBJUlFBfSwJLyogSURTRUwgMTggLS0gUENJIFNsb3QgMiAqLworCQl7MCwgMCwgMCwgMH0sCQkJLyogSURTRUwgMTkgKi8KKwkJezAsIDAsIDAsIDB9LAkJCS8qIElEU0VMIDIwICovCisJCXswLCAwLCAwLCAwfSwJCQkvKiBJRFNFTCAyMSAqLworCQl7MCwgMCwgMCwgMH0sCQkJLyogSURTRUwgMjIgKi8KKwkJezAsIDAsIDAsIDB9LAkJCS8qIElEU0VMIDIzICovCisJCXswLCAwLCAwLCAwfSwJCQkvKiBJRFNFTCAyNCAqLworCQl7MCwgMCwgMCwgMH0sCQkJLyogSURTRUwgMjUgKi8KKwkJe1BJUlFELCBQSVJRQSwgUElSUUIsIFBJUlFDfSwJLyogSURTRUwgMjYgLS0gUENJIEJyaWRnZSovCisJCXtQSVJRQywgMCwgMCwgMH0sCQkvKiBJRFNFTCAyNyAtLSBMQU4gKi8KKwkJe1BJUlFFLCBQSVJRRiwgUElSUUgsIFBJUlE3fSwJLyogSURTRUwgMjggLS0gVVNCIDEuMSAqLworCQl7UElSUUUsIFBJUlFGLCBQSVJRRywgMH0sCS8qIElEU0VMIDI5IC0tIEF1ZGlvICYgTW9kZW0gKi8KKwkJe1BJUlFILCAwLCAwLCAwfSwJCS8qIElEU0VMIDMwIC0tIExQQyAmIFBNVSovCisJCXtQSVJRRCwgMCwgMCwgMH0sCQkvKiBJRFNFTCAzMSAtLSBBVEEgKi8KKwl9OworCisJY29uc3QgbG9uZyBtaW5faWRzZWwgPSAxNywgbWF4X2lkc2VsID0gMzEsIGlycXNfcGVyX3Nsb3QgPSA0OworCXJldHVybiBQQ0lfSVJRX1RBQkxFX0xPT0tVUCArIEk4MjU5X09GRlNFVDsKK30KKworCitpbnQKK21wYzg2eHhfZXhjbHVkZV9kZXZpY2UodV9jaGFyIGJ1cywgdV9jaGFyIGRldmZuKQoreworI2lmICFkZWZpbmVkKENPTkZJR19QQ0kpCisJaWYgKGJ1cyA9PSAwICYmIFBDSV9TTE9UKGRldmZuKSA9PSAwKQorCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOworI2VuZGlmCisKKwlyZXR1cm4gUENJQklPU19TVUNDRVNTRlVMOworfQorI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KKworCitzdGF0aWMgdm9pZCBfX2luaXQKK21wYzg2eHhfaHBjbl9zZXR1cF9hcmNoKHZvaWQpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKworCWlmIChwcGNfbWQucHJvZ3Jlc3MpCisJCXBwY19tZC5wcm9ncmVzcygibXBjODZ4eF9ocGNuX3NldHVwX2FyY2goKSIsIDApOworCisJbnAgPSBvZl9maW5kX25vZGVfYnlfdHlwZShOVUxMLCAiY3B1Iik7CisJaWYgKG5wICE9IDApIHsKKwkJdW5zaWduZWQgaW50ICpmcDsKKworCQlmcCA9IChpbnQgKilnZXRfcHJvcGVydHkobnAsICJjbG9jay1mcmVxdWVuY3kiLCBOVUxMKTsKKwkJaWYgKGZwICE9IDApCisJCQlsb29wc19wZXJfamlmZnkgPSAqZnAgLyBIWjsKKwkJZWxzZQorCQkJbG9vcHNfcGVyX2ppZmZ5ID0gNTAwMDAwMDAgLyBIWjsKKwkJb2Zfbm9kZV9wdXQobnApOworCX0KKworI2lmZGVmIENPTkZJR19QQ0kKKwlmb3IgKG5wID0gTlVMTDsgKG5wID0gb2ZfZmluZF9ub2RlX2J5X3R5cGUobnAsICJwY2kiKSkgIT0gTlVMTDspCisJCWFkZF9icmlkZ2UobnApOworCisJcHBjX21kLnBjaV9zd2l6emxlID0gY29tbW9uX3N3aXp6bGU7CisJcHBjX21kLnBjaV9tYXBfaXJxID0gbXBjODZ4eF9tYXBfaXJxOworCXBwY19tZC5wY2lfZXhjbHVkZV9kZXZpY2UgPSBtcGM4Nnh4X2V4Y2x1ZGVfZGV2aWNlOworI2VuZGlmCisKKwlwcmludGsoIk1QQzg2eHggSFBDTiBib2FyZCBmcm9tIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yXG4iKTsKKworI2lmZGVmICBDT05GSUdfUk9PVF9ORlMKKwlST09UX0RFViA9IFJvb3RfTkZTOworI2Vsc2UKKwlST09UX0RFViA9IFJvb3RfSERBMTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NNUAorCW1wYzg2eHhfc21wX2luaXQoKTsKKyNlbmRpZgorfQorCisKK3ZvaWQKK21wYzg2eHhfaHBjbl9zaG93X2NwdWluZm8oc3RydWN0IHNlcV9maWxlICptKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcm9vdDsKKwl1aW50IG1lbXNpemUgPSB0b3RhbF9tZW1vcnk7CisJY29uc3QgY2hhciAqbW9kZWwgPSAiIjsKKwl1aW50IHN2aWQgPSBtZnNwcihTUFJOX1NWUik7CisKKwlzZXFfcHJpbnRmKG0sICJWZW5kb3JcdFx0OiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvclxuIik7CisKKwlyb290ID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi8iKTsKKwlpZiAocm9vdCkKKwkJbW9kZWwgPSBnZXRfcHJvcGVydHkocm9vdCwgIm1vZGVsIiwgTlVMTCk7CisJc2VxX3ByaW50ZihtLCAiTWFjaGluZVx0XHQ6ICVzXG4iLCBtb2RlbCk7CisJb2Zfbm9kZV9wdXQocm9vdCk7CisKKwlzZXFfcHJpbnRmKG0sICJTVlJcdFx0OiAweCV4XG4iLCBzdmlkKTsKKwlzZXFfcHJpbnRmKG0sICJNZW1vcnlcdFx0OiAlZCBNQlxuIiwgbWVtc2l6ZSAvICgxMDI0ICogMTAyNCkpOworfQorCisKKy8qCisgKiBDYWxsZWQgdmVyeSBlYXJseSwgZGV2aWNlLXRyZWUgaXNuJ3QgdW5mbGF0dGVuZWQKKyAqLworc3RhdGljIGludCBfX2luaXQgbXBjODZ4eF9ocGNuX3Byb2JlKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyByb290ID0gb2ZfZ2V0X2ZsYXRfZHRfcm9vdCgpOworCisJaWYgKG9mX2ZsYXRfZHRfaXNfY29tcGF0aWJsZShyb290LCAibXBjODZ4eCIpKQorCQlyZXR1cm4gMTsJLyogTG9va3MgZ29vZCAqLworCisJcmV0dXJuIDA7Cit9CisKKwordm9pZAorbXBjODZ4eF9yZXN0YXJ0KGNoYXIgKmNtZCkKK3sKKwl2b2lkIF9faW9tZW0gKnJzdGNyOworCisJcnN0Y3IgPSBpb3JlbWFwKGdldF9pbW1yYmFzZSgpICsgTVBDODZYWF9SU1RDUl9PRkZTRVQsIDB4MTAwKTsKKworCWxvY2FsX2lycV9kaXNhYmxlKCk7CisKKwkvKiBBc3NlcnQgcmVzZXQgcmVxdWVzdCB0byBSZXNldCBDb250cm9sIFJlZ2lzdGVyICovCisJb3V0X2JlMzIocnN0Y3IsIDB4Mik7CisKKwkvKiBub3QgcmVhY2hlZCAqLworfQorCisKK2xvbmcgX19pbml0CittcGM4Nnh4X3RpbWVfaW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGludCB0ZW1wOworCisJLyogU2V0IHRoZSB0aW1lIGJhc2UgdG8gemVybyAqLworCW10c3ByKFNQUk5fVEJXTCwgMCk7CisJbXRzcHIoU1BSTl9UQldVLCAwKTsKKworCXRlbXAgPSBtZnNwcihTUFJOX0hJRDApOworCXRlbXAgfD0gSElEMF9UQkVOOworCW10c3ByKFNQUk5fSElEMCwgdGVtcCk7CisJYXNtIHZvbGF0aWxlKCJpc3luYyIpOworCisJcmV0dXJuIDA7Cit9CisKKworZGVmaW5lX21hY2hpbmUobXBjODZ4eF9ocGNuKSB7CisJLm5hbWUJCQk9ICJNUEM4Nnh4IEhQQ04iLAorCS5wcm9iZQkJCT0gbXBjODZ4eF9ocGNuX3Byb2JlLAorCS5zZXR1cF9hcmNoCQk9IG1wYzg2eHhfaHBjbl9zZXR1cF9hcmNoLAorCS5pbml0X0lSUQkJPSBtcGM4Nnh4X2hwY25faW5pdF9pcnEsCisJLnNob3dfY3B1aW5mbwkJPSBtcGM4Nnh4X2hwY25fc2hvd19jcHVpbmZvLAorCS5nZXRfaXJxCQk9IG1waWNfZ2V0X2lycSwKKwkucmVzdGFydAkJPSBtcGM4Nnh4X3Jlc3RhcnQsCisJLnRpbWVfaW5pdAkJPSBtcGM4Nnh4X3RpbWVfaW5pdCwKKwkuY2FsaWJyYXRlX2RlY3IJCT0gZ2VuZXJpY19jYWxpYnJhdGVfZGVjciwKKwkucHJvZ3Jlc3MJCT0gdWRiZ19wcm9ncmVzcywKK307CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvbXBjODZ4eF9wY2llLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvbXBjODZ4eF9wY2llLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmNGY3MwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4Nnh4X3BjaWUuYwpAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIFN1cHBvcnQgZm9yIGluZGlyZWN0IFBDSSBicmlkZ2VzLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCBHYWJyaWVsIFBhdWJlcnQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbgorICogMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAiVGVtcG9yYXJ5IiBNUEM4NTQ4IEVycmF0YSBmaWxlIC0KKyAqIFRoZSBzdGFuZGFyZCBpbmRpcmVjdF9wY2kgY29kZSBzaG91bGQgd29yayB3aXRoIGZ1dHVyZSBzaWxpY29uIHZlcnNpb25zLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9ib290bWVtLmg+CisKKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vcHJvbS5oPgorI2luY2x1ZGUgPGFzbS9wY2ktYnJpZGdlLmg+CisjaW5jbHVkZSA8YXNtL21hY2hkZXAuaD4KKworI2luY2x1ZGUgIm1wYzg2eHguaCIKKworI2RlZmluZSBQQ0lfQ0ZHX09VVCBvdXRfYmUzMgorCisvKiBFUlJBVEEgUENJLUV4IDE0IFBDSUUgQ29udHJvbGxlciB0aW1lb3V0ICovCisjZGVmaW5lIFBDSUVfRklYCQlvdXRfYmUzMihob3NlLT5jZmdfYWRkcisweDQsIDB4MDQwMGZmZmYpCisKKworc3RhdGljIGludAoraW5kaXJlY3RfcmVhZF9jb25maWdfcGNpZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sIGludCBvZmZzZXQsCisJCSAgICAgaW50IGxlbiwgdTMyICp2YWwpCit7CisJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlID0gYnVzLT5zeXNkYXRhOworCXZvbGF0aWxlIHZvaWQgX19pb21lbSAqY2ZnX2RhdGE7CisJdTMyIHRlbXA7CisKKwlpZiAocHBjX21kLnBjaV9leGNsdWRlX2RldmljZSkKKwkJaWYgKHBwY19tZC5wY2lfZXhjbHVkZV9kZXZpY2UoYnVzLT5udW1iZXIsIGRldmZuKSkKKwkJCXJldHVybiBQQ0lCSU9TX0RFVklDRV9OT1RfRk9VTkQ7CisKKwkvKiBQb3NzaWJsZSBhcnRpZmFjdCBvZiBDRENwcDUwOTM3IG5lZWRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiAqLworCWlmIChkZXZmbiAhPSAweDAgJiYgYnVzLT5udW1iZXIgPT0gMHhmZikKKwkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKKworCVBDSUVfRklYOworCWlmIChidXMtPm51bWJlciA9PSAweGZmKSB7CisJCVBDSV9DRkdfT1VUKGhvc2UtPmNmZ19hZGRyLAorCQkJICAgICgweDgwMDAwMDAwIHwgKChvZmZzZXQgJiAweGYwMCkgPDwgMTYpIHwKKwkJCSAgICAgKChidXMtPm51bWJlciAtIGhvc2UtPmJ1c19vZmZzZXQpIDw8IDE2KQorCQkJICAgICB8IChkZXZmbiA8PCA4KSB8ICgob2Zmc2V0ICYgMHhmYykgKSkpOworCX0gZWxzZSB7CisJCVBDSV9DRkdfT1VUKGhvc2UtPmNmZ19hZGRyLAorCQkJICAgICgweDgwMDAwMDAxIHwgKChvZmZzZXQgJiAweGYwMCkgPDwgMTYpIHwKKwkJCSAgICAgKChidXMtPm51bWJlciAtIGhvc2UtPmJ1c19vZmZzZXQpIDw8IDE2KQorCQkJICAgICB8IChkZXZmbiA8PCA4KSB8ICgob2Zmc2V0ICYgMHhmYykgKSkpOworCX0KKworCS8qCisJICogTm90ZTogdGhlIGNhbGxlciBoYXMgYWxyZWFkeSBjaGVja2VkIHRoYXQgb2Zmc2V0IGlzCisJICogc3VpdGFibHkgYWxpZ25lZCBhbmQgdGhhdCBsZW4gaXMgMSwgMiBvciA0LgorCSAqLworCS8qIEVSUkFUQSBQQ0ktRXggMTIgLSBDb25maWd1cmF0aW9uIEFkZHJlc3MvRGF0YSBBbGlnbm1lbnQgKi8KKwljZmdfZGF0YSA9IGhvc2UtPmNmZ19kYXRhOworCVBDSUVfRklYOworCXRlbXAgPSBpbl9sZTMyKGNmZ19kYXRhKTsKKwlzd2l0Y2ggKGxlbikgeworCWNhc2UgMToKKwkJKnZhbCA9ICh0ZW1wID4+ICgoKG9mZnNldCAmIDMpKSo4KSkgJiAweGZmOworCQlicmVhazsKKwljYXNlIDI6CisJCSp2YWwgPSAodGVtcCA+PiAoKChvZmZzZXQgJiAzKSkqOCkpICYgMHhmZmZmOworCQlicmVhazsKKwlkZWZhdWx0OgorCQkqdmFsID0gdGVtcDsKKwkJYnJlYWs7CisJfQorCXJldHVybiBQQ0lCSU9TX1NVQ0NFU1NGVUw7Cit9CisKK3N0YXRpYyBpbnQKK2luZGlyZWN0X3dyaXRlX2NvbmZpZ19wY2llKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IG9mZnNldCwKKwkJICAgICAgaW50IGxlbiwgdTMyIHZhbCkKK3sKKwlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UgPSBidXMtPnN5c2RhdGE7CisJdm9sYXRpbGUgdm9pZCBfX2lvbWVtICpjZmdfZGF0YTsKKwl1MzIgdGVtcDsKKworCWlmIChwcGNfbWQucGNpX2V4Y2x1ZGVfZGV2aWNlKQorCQlpZiAocHBjX21kLnBjaV9leGNsdWRlX2RldmljZShidXMtPm51bWJlciwgZGV2Zm4pKQorCQkJcmV0dXJuIFBDSUJJT1NfREVWSUNFX05PVF9GT1VORDsKKworCS8qIFBvc3NpYmxlIGFydGlmYWN0IG9mIENEQ3BwNTA5MzcgbmVlZHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uICovCisJaWYgKGRldmZuICE9IDB4MCAmJiBidXMtPm51bWJlciA9PSAweGZmKQorCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOworCisJUENJRV9GSVg7CisJaWYgKGJ1cy0+bnVtYmVyID09IDB4ZmYpIHsKKwkJUENJX0NGR19PVVQoaG9zZS0+Y2ZnX2FkZHIsCisJCQkgICAgKDB4ODAwMDAwMDAgfCAoKG9mZnNldCAmIDB4ZjAwKSA8PCAxNikgfAorCQkJICAgICAoKGJ1cy0+bnVtYmVyIC0gaG9zZS0+YnVzX29mZnNldCkgPDwgMTYpCisJCQkgICAgIHwgKGRldmZuIDw8IDgpIHwgKChvZmZzZXQgJiAweGZjKSApKSk7CisJfSBlbHNlIHsKKwkJUENJX0NGR19PVVQoaG9zZS0+Y2ZnX2FkZHIsCisJCQkgICAgKDB4ODAwMDAwMDEgfCAoKG9mZnNldCAmIDB4ZjAwKSA8PCAxNikgfAorCQkJICAgICAoKGJ1cy0+bnVtYmVyIC0gaG9zZS0+YnVzX29mZnNldCkgPDwgMTYpCisJCQkgICAgIHwgKGRldmZuIDw8IDgpIHwgKChvZmZzZXQgJiAweGZjKSApKSk7CisgICAgICAgIH0KKworCS8qCisJICogTm90ZTogdGhlIGNhbGxlciBoYXMgYWxyZWFkeSBjaGVja2VkIHRoYXQgb2Zmc2V0IGlzCisJICogc3VpdGFibHkgYWxpZ25lZCBhbmQgdGhhdCBsZW4gaXMgMSwgMiBvciA0LgorCSAqLworCS8qIEVSUkFUQSBQQ0ktRXggMTIgLSBDb25maWd1cmF0aW9uIEFkZHJlc3MvRGF0YSBBbGlnbm1lbnQgKi8KKwljZmdfZGF0YSA9IGhvc2UtPmNmZ19kYXRhOworCXN3aXRjaCAobGVuKSB7CisJY2FzZSAxOgorCQlQQ0lFX0ZJWDsKKwkJdGVtcCA9IGluX2xlMzIoY2ZnX2RhdGEpOworCQl0ZW1wID0gKHRlbXAgJiB+KDB4ZmYgPDwgKChvZmZzZXQgJiAzKSAqIDgpKSkgfAorCQkJKHZhbCA8PCAoKG9mZnNldCAmIDMpICogOCkpOworCQlQQ0lFX0ZJWDsKKwkJb3V0X2xlMzIoY2ZnX2RhdGEsIHRlbXApOworCQlicmVhazsKKwljYXNlIDI6CisJCVBDSUVfRklYOworCQl0ZW1wID0gaW5fbGUzMihjZmdfZGF0YSk7CisJCXRlbXAgPSAodGVtcCAmIH4oMHhmZmZmIDw8ICgob2Zmc2V0ICYgMykgKiA4KSkpOworCQl0ZW1wIHw9ICh2YWwgPDwgKChvZmZzZXQgJiAzKSAqIDgpKSA7CisJCVBDSUVfRklYOworCQlvdXRfbGUzMihjZmdfZGF0YSwgdGVtcCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCVBDSUVfRklYOworCQlvdXRfbGUzMihjZmdfZGF0YSwgdmFsKTsKKwkJYnJlYWs7CisJfQorCVBDSUVfRklYOworCXJldHVybiBQQ0lCSU9TX1NVQ0NFU1NGVUw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGNpX29wcyBpbmRpcmVjdF9wY2llX29wcyA9IHsKKwlpbmRpcmVjdF9yZWFkX2NvbmZpZ19wY2llLAorCWluZGlyZWN0X3dyaXRlX2NvbmZpZ19wY2llCit9OworCit2b2lkIF9faW5pdAorc2V0dXBfaW5kaXJlY3RfcGNpZV9ub21hcChzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIqIGhvc2UsIHZvaWQgX19pb21lbSAqIGNmZ19hZGRyLAorCXZvaWQgX19pb21lbSAqIGNmZ19kYXRhKQoreworCWhvc2UtPmNmZ19hZGRyID0gY2ZnX2FkZHI7CisJaG9zZS0+Y2ZnX2RhdGEgPSBjZmdfZGF0YTsKKwlob3NlLT5vcHMgPSAmaW5kaXJlY3RfcGNpZV9vcHM7Cit9CisKK3ZvaWQgX19pbml0CitzZXR1cF9pbmRpcmVjdF9wY2llKHN0cnVjdCBwY2lfY29udHJvbGxlciogaG9zZSwgdTMyIGNmZ19hZGRyLCB1MzIgY2ZnX2RhdGEpCit7CisJdW5zaWduZWQgbG9uZyBiYXNlID0gY2ZnX2FkZHIgJiBQQUdFX01BU0s7CisJdm9pZCBfX2lvbWVtICptYmFzZSwgKmFkZHIsICpkYXRhOworCisJbWJhc2UgPSBpb3JlbWFwKGJhc2UsIFBBR0VfU0laRSk7CisJYWRkciA9IG1iYXNlICsgKGNmZ19hZGRyICYgflBBR0VfTUFTSyk7CisJaWYgKChjZmdfZGF0YSAmIFBBR0VfTUFTSykgIT0gYmFzZSkKKwkJbWJhc2UgPSBpb3JlbWFwKGNmZ19kYXRhICYgUEFHRV9NQVNLLCBQQUdFX1NJWkUpOworCWRhdGEgPSBtYmFzZSArIChjZmdfZGF0YSAmIH5QQUdFX01BU0spOworCXNldHVwX2luZGlyZWN0X3BjaWVfbm9tYXAoaG9zZSwgYWRkciwgZGF0YSk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvbXBjODZ4eF9zbXAuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9tcGM4Nnh4X3NtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NGVjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg2eHgvbXBjODZ4eF9zbXAuYwpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIEF1dGhvcjogWGlhbmdodWEgWGlhbyA8eC54aWFvQGZyZWVzY2FsZS5jb20+CisgKiAgICAgICAgIFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+CisgKgorICogQ29weXJpZ2h0IDIwMDYgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorCisjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KKyNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGFzbS9wY2ktYnJpZGdlLmg+CisjaW5jbHVkZSA8YXNtLXBvd2VycGMvbXBpYy5oPgorI2luY2x1ZGUgPGFzbS9tcGM4Nnh4Lmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KKworI2luY2x1ZGUgPHN5c2Rldi9mc2xfc29jLmg+CisKKyNpbmNsdWRlICJtcGM4Nnh4LmgiCisKK2V4dGVybiB2b2lkIF9fc2Vjb25kYXJ5X3N0YXJ0X21wYzg2eHgodm9pZCk7CitleHRlcm4gdW5zaWduZWQgbG9uZyBfX3NlY29uZGFyeV9ob2xkX2Fja25vd2xlZGdlOworCisKK3N0YXRpYyB2b2lkIF9faW5pdAorc21wXzg2eHhfcmVsZWFzZV9jb3JlKGludCBucikKK3sKKwl2b2lkICptY21fdmFkZHI7CisJdW5zaWduZWQgbG9uZyB2YWRkciwgcGNyOworCisJaWYgKG5yIDwgMCB8fCBuciA+PSBOUl9DUFVTKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFN0YXJ0dXAgQ29yZSAjbnIuCisJICovCisJbWNtX3ZhZGRyID0gaW9yZW1hcChnZXRfaW1tcmJhc2UoKSArIE1QQzg2eHhfTUNNX09GRlNFVCwKKwkJCSAgICBNUEM4Nnh4X01DTV9TSVpFKTsKKwl2YWRkciA9ICh1bnNpZ25lZCBsb25nKW1jbV92YWRkciArICBNQ01fUE9SVF9DT05GSUdfT0ZGU0VUOworCXBjciA9IGluX2JlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopdmFkZHIpOworCXBjciB8PSAxIDw8IChuciArIDI0KTsKKwlvdXRfYmUzMigodm9sYXRpbGUgdW5zaWduZWQgKil2YWRkciwgcGNyKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2luaXQKK3NtcF84Nnh4X2tpY2tfY3B1KGludCBucikKK3sKKwl1bnNpZ25lZCBpbnQgc2F2ZV92ZWN0b3I7CisJdW5zaWduZWQgbG9uZyB0YXJnZXQsIGZsYWdzOworCWludCBuID0gMDsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKnZlY3RvcgorCQkgPSAodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKEtFUk5FTEJBU0UgKyAweDEwMCk7CisKKwlpZiAobnIgPCAwIHx8IG5yID49IE5SX0NQVVMpCisJCXJldHVybjsKKworCXByX2RlYnVnKCJzbXBfODZ4eF9raWNrX2NwdToga2ljayBDUFUgIyVkXG4iLCBucik7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKworCS8qIFNhdmUgcmVzZXQgdmVjdG9yICovCisJc2F2ZV92ZWN0b3IgPSAqdmVjdG9yOworCisJLyogU2V0dXAgZmFrZSByZXNldCB2ZWN0b3IgdG8gY2FsbCBfX3NlY29uZGFyeV9zdGFydF9tcGM4Nnh4LiAqLworCXRhcmdldCA9ICh1bnNpZ25lZCBsb25nKSBfX3NlY29uZGFyeV9zdGFydF9tcGM4Nnh4OworCWNyZWF0ZV9icmFuY2goKHVuc2lnbmVkIGxvbmcpdmVjdG9yLCB0YXJnZXQsIEJSQU5DSF9TRVRfTElOSyk7CisKKwkvKiBLaWNrIHRoYXQgQ1BVICovCisJc21wXzg2eHhfcmVsZWFzZV9jb3JlKG5yKTsKKworCS8qIFdhaXQgYSBiaXQgZm9yIHRoZSBDUFUgdG8gdGFrZSB0aGUgZXhjZXB0aW9uLiAqLworCXdoaWxlICgoX19zZWNvbmRhcnlfaG9sZF9hY2tub3dsZWRnZSAhPSBucikgJiYgKG4rKywgbiA8IDEwMDApKQorCQltZGVsYXkoMSk7CisKKwkvKiBSZXN0b3JlIHRoZSBleGNlcHRpb24gdmVjdG9yICovCisJKnZlY3RvciA9IHNhdmVfdmVjdG9yOworCWZsdXNoX2ljYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZykgdmVjdG9yLCAodW5zaWduZWQgbG9uZykgdmVjdG9yICsgNCk7CisKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisKKwlwcl9kZWJ1Zygid2FpdCBDUFUgIyVkIGZvciAlZCBtc2Vjcy5cbiIsIG5yLCBuKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2luaXQKK3NtcF84Nnh4X3NldHVwX2NwdShpbnQgY3B1X25yKQoreworCW1waWNfc2V0dXBfdGhpc19jcHUoKTsKK30KKworCitzdHJ1Y3Qgc21wX29wc190IHNtcF84Nnh4X29wcyA9IHsKKwkubWVzc2FnZV9wYXNzID0gc21wX21waWNfbWVzc2FnZV9wYXNzLAorCS5wcm9iZSA9IHNtcF9tcGljX3Byb2JlLAorCS5raWNrX2NwdSA9IHNtcF84Nnh4X2tpY2tfY3B1LAorCS5zZXR1cF9jcHUgPSBzbXBfODZ4eF9zZXR1cF9jcHUsCisJLnRha2VfdGltZWJhc2UgPSBzbXBfZ2VuZXJpY190YWtlX3RpbWViYXNlLAorCS5naXZlX3RpbWViYXNlID0gc21wX2dlbmVyaWNfZ2l2ZV90aW1lYmFzZSwKK307CisKKwordm9pZCBfX2luaXQKK21wYzg2eHhfc21wX2luaXQodm9pZCkKK3sKKwlzbXBfb3BzID0gJnNtcF84Nnh4X29wczsKK30KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9wY2kuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODZ4eC9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTgwZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Nnh4L3BjaS5jCkBAIC0wLDAgKzEsMzI1IEBACisvKgorICogTVBDODZYWCBwY2kgc2V0dXAgY29kZQorICoKKyAqIFJlY29kZTogWkhBTkcgV0VJIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KKyAqIEluaXRpYWwgYXV0aG9yOiBYaWFuZ2h1YSBYaWFvIDx4LnhpYW9AZnJlZXNjYWxlLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvc2VyaWFsLmg+CisKKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9wcm9tLmg+CisjaW5jbHVkZSA8YXNtL2ltbWFwXzg2eHguaD4KKyNpbmNsdWRlIDxhc20vcGNpLWJyaWRnZS5oPgorI2luY2x1ZGUgPHN5c2Rldi9mc2xfc29jLmg+CisKKyNpbmNsdWRlICJtcGM4Nnh4LmgiCisKKyN1bmRlZiBERUJVRworCisjaWZkZWYgREVCVUcKKyNkZWZpbmUgREJHKGZtdCwgYXJncy4uLikgcHJpbnRrKEtFUk5fRVJSICIlczogIiBmbXQsIF9fRlVOQ1RJT05fXywgIyMgYXJncykKKyNlbHNlCisjZGVmaW5lIERCRyhmbXQsIGFyZ3MuLi4pCisjZW5kaWYKKworc3RydWN0IHBjaWVfb3V0Ym91bmRfd2luZG93X3JlZ3MgeworCXVpbnQgICAgcGV4b3RhcjsgICAgICAgICAgICAgICAvKiAweC4wIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gYWRkcmVzcyByZWdpc3RlciAqLworCXVpbnQgICAgcGV4b3RlYXI7ICAgICAgICAgICAgICAvKiAweC40IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlciAqLworCXVpbnQgICAgcGV4b3diYXI7ICAgICAgICAgICAgICAvKiAweC44IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGJhc2UgYWRkcmVzcyByZWdpc3RlciAqLworCWNoYXIgICAgcmVzMVs0XTsKKwl1aW50ICAgIHBleG93YXI7ICAgICAgICAgICAgICAgLyogMHguMTAgLSBQQ0kgRXhwcmVzcyBvdXRib3VuZCB3aW5kb3cgYXR0cmlidXRlcyByZWdpc3RlciAqLworCWNoYXIgICAgcmVzMlsxMl07Cit9OworCitzdHJ1Y3QgcGNpZV9pbmJvdW5kX3dpbmRvd19yZWdzIHsKKwl1aW50ICAgIHBleGl0YXI7ICAgICAgICAgICAgICAgLyogMHguMCAtIFBDSSBFeHByZXNzIGluYm91bmQgdHJhbnNsYXRpb24gYWRkcmVzcyByZWdpc3RlciAqLworCWNoYXIgICAgcmVzMVs0XTsKKwl1aW50ICAgIHBleGl3YmFyOyAgICAgICAgICAgICAgLyogMHguOCAtIFBDSSBFeHByZXNzIGluYm91bmQgd2luZG93IGJhc2UgYWRkcmVzcyByZWdpc3RlciAqLworCXVpbnQgICAgcGV4aXdiZWFyOyAgICAgICAgICAgICAvKiAweC5jIC0gUENJIEV4cHJlc3MgaW5ib3VuZCB3aW5kb3cgYmFzZSBleHRlbmRlZCBhZGRyZXNzIHJlZ2lzdGVyICovCisJdWludCAgICBwZXhpd2FyOyAgICAgICAgICAgICAgIC8qIDB4LjEwIC0gUENJIEV4cHJlc3MgaW5ib3VuZCB3aW5kb3cgYXR0cmlidXRlcyByZWdpc3RlciAqLworCWNoYXIgICAgcmVzMlsxMl07Cit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgc2V0dXBfcGNpZV9hdG11KHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgc3RydWN0IHJlc291cmNlICpyc3JjKQoreworCXZvbGF0aWxlIHN0cnVjdCBjY3NyX3BleCAqcGNpZTsKKwl2b2xhdGlsZSBzdHJ1Y3QgcGNpZV9vdXRib3VuZF93aW5kb3dfcmVncyAqcGNpZW93OworCXZvbGF0aWxlIHN0cnVjdCBwY2llX2luYm91bmRfd2luZG93X3JlZ3MgKnBjaWVpdzsKKwlpbnQgaSA9IDA7CisKKwlEQkcoIlBDSUUgbWVtb3J5IG1hcCBzdGFydCAweCV4LCBzaXplIDB4JXhcbiIsIHJzcmMtPnN0YXJ0LAorCQkJcnNyYy0+ZW5kIC0gcnNyYy0+c3RhcnQgKyAxKTsKKwlwY2llID0gaW9yZW1hcChyc3JjLT5zdGFydCwgcnNyYy0+ZW5kIC0gcnNyYy0+c3RhcnQgKyAxKTsKKworCS8qIERpc2FibGUgYWxsIHdpbmRvd3MgKGV4Y2VwdCBwZXhvd2FyMCBzaW5jZSBpdHMgaWdub3JlZCkgKi8KKwlwY2llLT5wZXhvd2FyMSA9IDA7CisJcGNpZS0+cGV4b3dhcjIgPSAwOworIAlwY2llLT5wZXhvd2FyMyA9IDA7CisgCXBjaWUtPnBleG93YXI0ID0gMDsKKyAJcGNpZS0+cGV4aXdhcjEgPSAwOworIAlwY2llLT5wZXhpd2FyMiA9IDA7CisgCXBjaWUtPnBleGl3YXIzID0gMDsKKworIAlwY2llb3cgPSAoc3RydWN0IHBjaWVfb3V0Ym91bmRfd2luZG93X3JlZ3MgKikmcGNpZS0+cGV4b3RhcjE7CisgCXBjaWVpdyA9IChzdHJ1Y3QgcGNpZV9pbmJvdW5kX3dpbmRvd19yZWdzICopJnBjaWUtPnBleGl0YXIxOworCisgCS8qIFNldHVwIG91dGJvdW5kIE1FTSB3aW5kb3cgKi8KKyAJZm9yKGkgPSAwOyBpIDwgMzsgaSsrKQorIAkJaWYgKGhvc2UtPm1lbV9yZXNvdXJjZXNbaV0uZmxhZ3MgJiBJT1JFU09VUkNFX01FTSl7CisgCQkJREJHKCJQQ0lFIE1FTSByZXNvdXJjZSBzdGFydCAweCUwOHgsIHNpemUgMHglMDh4LlxuIiwKKyAJCQkJaG9zZS0+bWVtX3Jlc291cmNlc1tpXS5zdGFydCwKKyAJCQkJaG9zZS0+bWVtX3Jlc291cmNlc1tpXS5lbmQKKyAJCQkJICAtIGhvc2UtPm1lbV9yZXNvdXJjZXNbaV0uc3RhcnQgKyAxKTsKKyAJCQlwY2llb3ctPnBleG90YXIgPSAoaG9zZS0+bWVtX3Jlc291cmNlc1tpXS5zdGFydCkgPj4gMTIKKyAJCQkJJiAweDAwMGZmZmZmOworIAkJCXBjaWVvdy0+cGV4b3RlYXIgPSAwOworIAkJCXBjaWVvdy0+cGV4b3diYXIgPSAoaG9zZS0+bWVtX3Jlc291cmNlc1tpXS5zdGFydCkgPj4gMTIKKyAJCQkJJiAweDAwMGZmZmZmOworIAkJCS8qIEVuYWJsZSwgTWVtIFIvVyAqLworIAkJCXBjaWVvdy0+cGV4b3dhciA9IDB4ODAwNDQwMDAgfAorIAkJCQkoX19pbG9nMihob3NlLT5tZW1fcmVzb3VyY2VzW2ldLmVuZAorIAkJCQkJIC0gaG9zZS0+bWVtX3Jlc291cmNlc1tpXS5zdGFydCArIDEpCisgCQkJCSAtIDEpOworIAkJCXBjaWVvdysrOworIAkJfQorCisgCS8qIFNldHVwIG91dGJvdW5kIElPIHdpbmRvdyAqLworIAlpZiAoaG9zZS0+aW9fcmVzb3VyY2UuZmxhZ3MgJiBJT1JFU09VUkNFX0lPKXsKKyAJCURCRygiUENJRSBJTyByZXNvdXJjZSBzdGFydCAweCUwOHgsIHNpemUgMHglMDh4LCBwaHkgYmFzZSAweCUwOHguXG4iLAorIAkJCWhvc2UtPmlvX3Jlc291cmNlLnN0YXJ0LAorIAkJCWhvc2UtPmlvX3Jlc291cmNlLmVuZCAtIGhvc2UtPmlvX3Jlc291cmNlLnN0YXJ0ICsgMSwKKyAJCQlob3NlLT5pb19iYXNlX3BoeXMpOworIAkJcGNpZW93LT5wZXhvdGFyID0gKGhvc2UtPmlvX3Jlc291cmNlLnN0YXJ0KSA+PiAxMiAmIDB4MDAwZmZmZmY7CisgCQlwY2llb3ctPnBleG90ZWFyID0gMDsKKyAJCXBjaWVvdy0+cGV4b3diYXIgPSAoaG9zZS0+aW9fYmFzZV9waHlzKSA+PiAxMiAmIDB4MDAwZmZmZmY7CisgCQkvKiBFbmFibGUsIElPIFIvVyAqLworIAkJcGNpZW93LT5wZXhvd2FyID0gMHg4MDA4ODAwMCB8IChfX2lsb2cyKGhvc2UtPmlvX3Jlc291cmNlLmVuZAorIAkJCQkJLSBob3NlLT5pb19yZXNvdXJjZS5zdGFydCArIDEpIC0gMSk7CisgCX0KKworIAkvKiBTZXR1cCAyRyBpbmJvdW5kIE1lbW9yeSBXaW5kb3cgQCAwICovCisgCXBjaWVpdy0+cGV4aXRhciA9IDB4MDAwMDAwMDA7CisgCXBjaWVpdy0+cGV4aXdiYXIgPSAweDAwMDAwMDAwOworIAkvKiBFbmFibGUsIFByZWZldGNoLCBMb2NhbCBNZW0sIFNub29wIFIvVywgMkcgKi8KKyAJcGNpZWl3LT5wZXhpd2FyID0gMHhhMGY1NTAxZTsKK30KKworc3RhdGljIHZvaWQgX19pbml0CittcGM4Nnh4X3NldHVwX3BjaWUoc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlLCB1MzIgcGNpZV9vZmZzZXQsIHUzMiBwY2llX3NpemUpCit7CisJdm9sYXRpbGUgc3RydWN0IGNjc3JfcGV4ICpwY2llOworCXUxNiBjbWQ7CisJdW5zaWduZWQgaW50IHRlbXBzOworCisJREJHKCJQQ0lFIGhvc3QgY29udHJvbGxlciByZWdpc3RlciBvZmZzZXQgMHglMDh4LCBzaXplIDB4JTA4eC5cbiIsCisJCQlwY2llX29mZnNldCwgcGNpZV9zaXplKTsKKworCXBjaWUgPSBpb3JlbWFwKHBjaWVfb2Zmc2V0LCBwY2llX3NpemUpOworCisJZWFybHlfcmVhZF9jb25maWdfd29yZChob3NlLCAwLCAwLCBQQ0lfQ09NTUFORCwgJmNtZCk7CisJY21kIHw9IFBDSV9DT01NQU5EX1NFUlIgfCBQQ0lfQ09NTUFORF9NQVNURVIgfCBQQ0lfQ09NTUFORF9NRU1PUlkKKwkgICAgfCBQQ0lfQ09NTUFORF9JTzsKKwllYXJseV93cml0ZV9jb25maWdfd29yZChob3NlLCAwLCAwLCBQQ0lfQ09NTUFORCwgY21kKTsKKworCWVhcmx5X3dyaXRlX2NvbmZpZ19ieXRlKGhvc2UsIDAsIDAsIFBDSV9MQVRFTkNZX1RJTUVSLCAweDgwKTsKKworCS8qIFBDSUUgQnVzLCBGaXggdGhlIE1QQzg2NDFEIGhvc3QgYnJpZGdlJ3MgbG9jYXRpb24gdG8gYnVzIDB4RkYuICovCisJZWFybHlfcmVhZF9jb25maWdfZHdvcmQoaG9zZSwgMCwgMCwgUENJX1BSSU1BUllfQlVTLCAmdGVtcHMpOworCXRlbXBzID0gKHRlbXBzICYgMHhmZjAwMDAwMCkgfCAoMHhmZikgfCAoMHgwIDw8IDgpIHwgKDB4ZmUgPDwgMTYpOworCWVhcmx5X3dyaXRlX2NvbmZpZ19kd29yZChob3NlLCAwLCAwLCBQQ0lfUFJJTUFSWV9CVVMsIHRlbXBzKTsKK30KKworaW50IF9faW5pdCBhZGRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2KQoreworCWludCBsZW47CisJc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlOworCXN0cnVjdCByZXNvdXJjZSByc3JjOworCWludCAqYnVzX3JhbmdlOworCWludCBoYXNfYWRkcmVzcyA9IDA7CisJaW50IHByaW1hcnkgPSAwOworCisJREJHKCJBZGRpbmcgUENJRSBob3N0IGJyaWRnZSAlc1xuIiwgZGV2LT5mdWxsX25hbWUpOworCisJLyogRmV0Y2ggaG9zdCBicmlkZ2UgcmVnaXN0ZXJzIGFkZHJlc3MgKi8KKwloYXNfYWRkcmVzcyA9IChvZl9hZGRyZXNzX3RvX3Jlc291cmNlKGRldiwgMCwgJnJzcmMpID09IDApOworCisJLyogR2V0IGJ1cyByYW5nZSBpZiBhbnkgKi8KKwlidXNfcmFuZ2UgPSAoaW50ICopIGdldF9wcm9wZXJ0eShkZXYsICJidXMtcmFuZ2UiLCAmbGVuKTsKKwlpZiAoYnVzX3JhbmdlID09IE5VTEwgfHwgbGVuIDwgMiAqIHNpemVvZihpbnQpKQorCQlwcmludGsoS0VSTl9XQVJOSU5HICJDYW4ndCBnZXQgYnVzLXJhbmdlIGZvciAlcywgYXNzdW1lIgorCQkgICAgICAgIiBidXMgMFxuIiwgZGV2LT5mdWxsX25hbWUpOworCisJaG9zZSA9IHBjaWJpb3NfYWxsb2NfY29udHJvbGxlcigpOworCWlmICghaG9zZSkKKwkJcmV0dXJuIC1FTk9NRU07CisJaG9zZS0+YXJjaF9kYXRhID0gZGV2OworCWhvc2UtPnNldF9jZmdfdHlwZSA9IDE7CisKKwkvKiBsYXN0X2J1c25vID0gMHhmZSBjYXVzZSBieSBNUEM4NjQxIFBDSUUgYnVnICovCisJaG9zZS0+Zmlyc3RfYnVzbm8gPSBidXNfcmFuZ2UgPyBidXNfcmFuZ2VbMF0gOiAweDA7CisJaG9zZS0+bGFzdF9idXNubyA9IGJ1c19yYW5nZSA/IGJ1c19yYW5nZVsxXSA6IDB4ZmU7CisKKwlzZXR1cF9pbmRpcmVjdF9wY2llKGhvc2UsIHJzcmMuc3RhcnQsIHJzcmMuc3RhcnQgKyAweDQpOworCisJLyogU2V0dXAgdGhlIFBDSUUgaG9zdCBjb250cm9sbGVyLiAqLworCW1wYzg2eHhfc2V0dXBfcGNpZShob3NlLCByc3JjLnN0YXJ0LCByc3JjLmVuZCAtIHJzcmMuc3RhcnQgKyAxKTsKKworCWlmICgocnNyYy5zdGFydCAmIDB4ZmZmZmYpID09IDB4ODAwMCkKKwkJcHJpbWFyeSA9IDE7CisKKwlwcmludGsoS0VSTl9JTkZPICJGb3VuZCBNUEM4Nnh4IFBDSUUgaG9zdCBicmlkZ2UgYXQgMHglMDhseC4gIgorCSAgICAgICAiRmlybXdhcmUgYnVzIG51bWJlcjogJWQtPiVkXG4iLAorCQlyc3JjLnN0YXJ0LCBob3NlLT5maXJzdF9idXNubywgaG9zZS0+bGFzdF9idXNubyk7CisKKwlEQkcoIiAtPkhvc2UgYXQgMHglcCwgY2ZnX2FkZHI9MHglcCxjZmdfZGF0YT0weCVwXG4iLAorCQlob3NlLCBob3NlLT5jZmdfYWRkciwgaG9zZS0+Y2ZnX2RhdGEpOworCisJLyogSW50ZXJwcmV0IHRoZSAicmFuZ2VzIiBwcm9wZXJ0eSAqLworCS8qIFRoaXMgYWxzbyBtYXBzIHRoZSBJL08gcmVnaW9uIGFuZCBzZXRzIGlzYV9pby9tZW1fYmFzZSAqLworCXBjaV9wcm9jZXNzX2JyaWRnZV9PRl9yYW5nZXMoaG9zZSwgZGV2LCBwcmltYXJ5KTsKKworCS8qIFNldHVwIFBFWCB3aW5kb3cgcmVnaXN0ZXJzICovCisJc2V0dXBfcGNpZV9hdG11KGhvc2UsICZyc3JjKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfX2RldmluaXQgcXVpcmtfYWxpMTU3NShzdHJ1Y3QgcGNpX2RldiAqZGV2KQoreworCXVuc2lnbmVkIHNob3J0IHRlbXA7CisKKwkvKgorCSAqIEFMSTE1NzUgaW50ZXJydXB0cyByb3V0ZSB0YWJsZSBzZXR1cDoKKwkgKgorCSAqIElSUSBwaW4gICBJUlEjCisJICogUElSUUEgLS0tLSAzCisJICogUElSUUIgLS0tLSA0CisJICogUElSUUMgLS0tLSA1CisJICogUElSUUQgLS0tLSA2CisJICogUElSUUUgLS0tLSA5CisJICogUElSUUYgLS0tLSAxMAorCSAqIFBJUlFHIC0tLS0gMTEKKwkgKiBQSVJRSCAtLS0tIDEyCisJICoKKwkgKiBpbnRlcnJ1cHRzIGZvciBQQ0kgc2xvdDAgLS0gUElSUUEgLyBQSVJRQiAvIFBJUlFDIC8gUElSUUQKKwkgKiAgICAgICAgICAgICAgICBQQ0kgc2xvdDEgLS0gUElSUUIgLyBQSVJRQyAvIFBJUlFEIC8gUElSUUEKKwkgKi8KKwlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgMHg0OCwgMHhiOTMxNzU0Mik7CisKKwkvKiBVU0IgMS4xIE9IQ0kgY29udHJvbGxlciAxLCBpbnRlcnJ1cHQ6IFBJUlFFICovCisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4NiwgMHgwYyk7CisKKwkvKiBVU0IgMS4xIE9IQ0kgY29udHJvbGxlciAyLCBpbnRlcnJ1cHQ6IFBJUlFGICovCisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4NywgMHgwZCk7CisKKwkvKiBVU0IgMS4xIE9IQ0kgY29udHJvbGxlciAzLCBpbnRlcnJ1cHQ6IFBJUlFIICovCisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4OCwgMHgwZik7CisKKwkvKiBVU0IgMi4wIGNvbnRyb2xsZXIsIGludGVycnVwdDogUElSUTcgKi8KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDc0LCAweDA2KTsKKworCS8qIEF1ZGlvIGNvbnRyb2xsZXIsIGludGVycnVwdDogUElSUUUgKi8KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDhhLCAweDBjKTsKKworCS8qIE1vZGVtIGNvbnRyb2xsZXIsIGludGVycnVwdDogUElSUUYgKi8KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDhiLCAweDBkKTsKKworCS8qIEhEIGF1ZGlvIGNvbnRyb2xsZXIsIGludGVycnVwdDogUElSUUcgKi8KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDhjLCAweDBlKTsKKworCS8qIFNlcmlhbCBBVEEgaW50ZXJydXB0OiBQSVJRRCAqLworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4OGQsIDB4MGIpOworCisJLyogU01CIGludGVycnVwdDogUElSUUggKi8KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDhlLCAweDBmKTsKKworCS8qIFBNVSBBQ1BJIFNDSSBpbnRlcnJ1cHQ6IFBJUlFIICovCisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4ZiwgMHgwZik7CisKKwkvKiBQcmltYXJ5IFBBVEEgSURFIElSUTogMTQKKwkgKiBTZWNvbmRhcnkgUEFUQSBJREUgSVJROiAxNQorCSAqLworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NDQsIDB4M2QpOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NzUsIDB4MGYpOworCisJLyogU2V0IElSUTE0IGFuZCBJUlExNSB0byBsZWdhY3kgSVJRcyAqLworCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgMHg0NiwgJnRlbXApOworCXRlbXAgfD0gMHhjMDAwOworCXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIDB4NDYsIHRlbXApOworCisJLyogU2V0IGk4MjU5IGludGVycnVwdCB0cmlnZ2VyCisJICogSVJRIDM6ICBMZXZlbAorCSAqIElSUSA0OiAgTGV2ZWwKKwkgKiBJUlEgNTogIExldmVsCisJICogSVJRIDY6ICBMZXZlbAorCSAqIElSUSA3OiAgTGV2ZWwKKwkgKiBJUlEgOTogIExldmVsCisJICogSVJRIDEwOiBMZXZlbAorCSAqIElSUSAxMTogTGV2ZWwKKwkgKiBJUlEgMTI6IExldmVsCisJICogSVJRIDE0OiBFZGdlCisJICogSVJRIDE1OiBFZGdlCisJICovCisJb3V0YigweGZhLCAweDRkMCk7CisJb3V0YigweDFlLCAweDRkMSk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdCBxdWlya191bGk1Mjg4KHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJdW5zaWduZWQgY2hhciBjOworCisJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LDB4ODMsJmMpOworCWMgfD0gMHg4MDsKKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDgzLCBjKTsKKworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4MDksIDB4MDEpOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4MGEsIDB4MDYpOworCisJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LDB4ODMsJmMpOworCWMgJj0gMHg3ZjsKKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDgzLCBjKTsKKworCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwweDg0LCZjKTsKKwljIHw9IDB4MDE7CisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4NCwgYyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdCBxdWlya191bGk1MjI5KHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJdW5zaWduZWQgc2hvcnQgdGVtcDsKKwlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCAweDA0LCAweDA0MDUpOworCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgMHg0YSwgJnRlbXApOworCXRlbXAgfD0gMHgxMDAwOworCXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIDB4NGEsIHRlbXApOworfQorCitzdGF0aWMgdm9pZCBfX2RldmluaXQgZWFybHlfdWxpNTI0OShzdHJ1Y3QgcGNpX2RldiAqZGV2KQoreworCXVuc2lnbmVkIGNoYXIgdGVtcDsKKwlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCAweDA0LCAweDAwMDcpOworCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgMHg3YywgJnRlbXApOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4N2MsIDB4ODApOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4MDksIDB4MDEpOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4N2MsIHRlbXApOworCWRldi0+Y2xhc3MgfD0gMHgxOworfQorCitERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9BTCwgMHgxNTc1LCBxdWlya19hbGkxNTc1KTsKK0RFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX0FMLCAweDUyODgsIHF1aXJrX3VsaTUyODgpOworREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBDSV9WRU5ET1JfSURfQUwsIDB4NTIyOSwgcXVpcmtfdWxpNTIyOSk7CitERUNMQVJFX1BDSV9GSVhVUF9FQVJMWShQQ0lfVkVORE9SX0lEX0FMLCAweDUyNDksIGVhcmx5X3VsaTUyNDkpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvTWFrZWZpbGUKaW5kZXggYzRmNmIwZC4uMjkyODYzNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9NYWtlZmlsZQorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL01ha2VmaWxlCkBAIC05LDYgKzksNyBAQAogb2JqLSQoQ09ORklHXzR4eCkJCSs9IDR4eC8KIG9iai0kKENPTkZJR19QUENfODN4eCkJCSs9IDgzeHgvCiBvYmotJChDT05GSUdfUFBDXzg1eHgpCQkrPSA4NXh4Lworb2JqLSQoQ09ORklHX1BQQ184Nnh4KQkJKz0gODZ4eC8KIG9iai0kKENPTkZJR19QUENfUFNFUklFUykJKz0gcHNlcmllcy8KIG9iai0kKENPTkZJR19QUENfSVNFUklFUykJKz0gaXNlcmllcy8KIG9iai0kKENPTkZJR19QUENfTUFQTEUpCQkrPSBtYXBsZS8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL0tjb25maWcKaW5kZXggNmEwMmQ1MS4uMzUyYmJiYSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL0tjb25maWcKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL0tjb25maWcKQEAgLTUsMTUgKzUsMjQgQEAKIAl0cmlzdGF0ZSAiU1BVIGZpbGUgc3lzdGVtIgogCWRlZmF1bHQgbQogCWRlcGVuZHMgb24gUFBDX0NFTEwKKwlzZWxlY3QgU1BVX0JBU0UKIAloZWxwCiAJICBUaGUgU1BVIGZpbGUgc3lzdGVtIGlzIHVzZWQgdG8gYWNjZXNzIFN5bmVyZ2lzdGljIFByb2Nlc3NpbmcKIAkgIFVuaXRzIG9uIG1hY2hpbmVzIGltcGxlbWVudGluZyB0aGUgQnJvYWRiYW5kIFByb2Nlc3NvcgogCSAgQXJjaGl0ZWN0dXJlLgogCitjb25maWcgU1BVX0JBU0UKKwlib29sCisJZGVmYXVsdCBuCisKIGNvbmZpZyBTUFVGU19NTUFQCiAJYm9vbAogCWRlcGVuZHMgb24gU1BVX0ZTICYmIFNQQVJTRU1FTQogCXNlbGVjdCBNRU1PUllfSE9UUExVRwogCWRlZmF1bHQgeQogCitjb25maWcgQ0JFX1JBUworCWJvb2wgIlJBUyBmZWF0dXJlcyBmb3IgYmFyZSBtZXRhbCBDZWxsIEJFIgorCWRlZmF1bHQgeQorCiBlbmRtZW51CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvTWFrZWZpbGUKaW5kZXggZTU3MGJhZC4uYzg5Y2RkNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9NYWtlZmlsZQpAQCAtMSwxNiArMSwxNSBAQAotb2JqLXkJCQkrPSBpbnRlcnJ1cHQubyBpb21tdS5vIHNldHVwLm8gc3BpZGVyLXBpYy5vCi1vYmoteQkJCSs9IHBlcnZhc2l2ZS5vCitvYmotJChDT05GSUdfUFBDX0NFTExfTkFUSVZFKQkJKz0gaW50ZXJydXB0Lm8gaW9tbXUubyBzZXR1cC5vIFwKKwkJCQkJICAgY2JlX3JlZ3MubyBzcGlkZXItcGljLm8gcGVydmFzaXZlLm8KK29iai0kKENPTkZJR19DQkVfUkFTKQkJCSs9IHJhcy5vCiAKLW9iai0kKENPTkZJR19TTVApCSs9IHNtcC5vCi1vYmotJChDT05GSUdfU1BVX0ZTKQkrPSBzcHUtYmFzZS5vIHNwdWZzLwotCi1zcHUtYmFzZS15CQkrPSBzcHVfYmFzZS5vIHNwdV9wcml2MS5vCitpZmVxICgkKENPTkZJR19TTVApLHkpCitvYmotJChDT05GSUdfUFBDX0NFTExfTkFUSVZFKQkJKz0gc21wLm8KK2VuZGlmCiAKICMgbmVlZGVkIG9ubHkgd2hlbiBidWlsZGluZyBsb2FkYWJsZSBzcHVmcy5rbwotc3B1ZnMtbW9kdWxhci0kKENPTkZJR19TUFVfRlMpICs9IHNwdV9zeXNjYWxscy5vCi1vYmoteQkJCSs9ICQoc3B1ZnMtbW9kdWxhci1tKQorc3B1ZnMtbW9kdWxhci0kKENPTkZJR19TUFVfRlMpCQkrPSBzcHVfc3lzY2FsbHMubworc3B1LXByaXYxLSQoQ09ORklHX1BQQ19DRUxMX05BVElWRSkJKz0gc3B1X3ByaXYxX21taW8ubwogCi0jIGFsd2F5cyBuZWVkZWQgaW4ga2VybmVsCi1zcHVmcy1idWlsdGluLSQoQ09ORklHX1NQVV9GUykgKz0gc3B1X2NhbGxiYWNrcy5vCi1vYmoteQkJCSs9ICQoc3B1ZnMtYnVpbHRpbi15KSAkKHNwdWZzLWJ1aWx0aW4tbSkKLQorb2JqLSQoQ09ORklHX1NQVV9CQVNFKQkJCSs9IHNwdV9jYWxsYmFja3MubyBzcHVfYmFzZS5vIFwKKwkJCQkJICAgJChzcHVmcy1tb2R1bGFyLW0pIFwKKwkJCQkJICAgJChzcHUtcHJpdjEteSkgc3B1ZnMvCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvY2JlX3JlZ3MuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9jYmVfcmVncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZmRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvY2JlX3JlZ3MuYwpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIGNiZV9yZWdzLmMKKyAqCisgKiBBY2Nlc3NvciByb3V0aW5lcyBmb3IgdGhlIHZhcmlvdXMgTU1JTyByZWdpc3RlciBibG9ja3Mgb2YgdGhlIENCRQorICoKKyAqIChjKSAyMDA2IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4sIElCTSBDb3JwLgorICovCisKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9wcm9tLmg+CisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorCisjaW5jbHVkZSAiY2JlX3JlZ3MuaCIKKworI2RlZmluZSBNQVhfQ0JFCQkyCisKKy8qCisgKiBDdXJyZW50IGltcGxlbWVudGF0aW9uIHVzZXMgImNwdSIgbm9kZXMuIFdlIGJ1aWxkIG91ciBvd24gbWFwcGluZworICogYXJyYXkgb2YgY3B1IG51bWJlcnMgdG8gY3B1IG5vZGVzIGxvY2FsbHkgZm9yIG5vdyB0byBhbGxvdyBpbnRlcnJ1cHQKKyAqIHRpbWUgY29kZSB0byBoYXZlIGEgZmFzdCBwYXRoIHJhdGhlciB0aGFuIGNhbGwgb2ZfZ2V0X2NwdV9ub2RlKCkuIElmCisgKiB3ZSBpbXBsZW1lbnQgY3B1IGhvdHBsdWcsIHdlJ2xsIGhhdmUgdG8gaW5zdGFsbCBhbiBhcHByb3ByaWF0ZSBub3JpZmllcgorICogaW4gb3JkZXIgdG8gcmVsZWFzZSByZWZlcmVuY2VzIHRvIHRoZSBjcHUgZ29pbmcgYXdheQorICovCitzdGF0aWMgc3RydWN0IGNiZV9yZWdzX21hcAoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY3B1X25vZGU7CisJc3RydWN0IGNiZV9wbWRfcmVncyBfX2lvbWVtICpwbWRfcmVnczsKKwlzdHJ1Y3QgY2JlX2lpY19yZWdzIF9faW9tZW0gKmlpY19yZWdzOworfSBjYmVfcmVnc19tYXBzW01BWF9DQkVdOworc3RhdGljIGludCBjYmVfcmVnc19tYXBfY291bnQ7CisKK3N0YXRpYyBzdHJ1Y3QgY2JlX3RocmVhZF9tYXAKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlOworCXN0cnVjdCBjYmVfcmVnc19tYXAgKnJlZ3M7Cit9IGNiZV90aHJlYWRfbWFwW05SX0NQVVNdOworCitzdGF0aWMgc3RydWN0IGNiZV9yZWdzX21hcCAqY2JlX2ZpbmRfbWFwKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY2JlX3JlZ3NfbWFwX2NvdW50OyBpKyspCisJCWlmIChjYmVfcmVnc19tYXBzW2ldLmNwdV9ub2RlID09IG5wKQorCQkJcmV0dXJuICZjYmVfcmVnc19tYXBzW2ldOworCXJldHVybiBOVUxMOworfQorCitzdHJ1Y3QgY2JlX3BtZF9yZWdzIF9faW9tZW0gKmNiZV9nZXRfcG1kX3JlZ3Moc3RydWN0IGRldmljZV9ub2RlICpucCkKK3sKKwlzdHJ1Y3QgY2JlX3JlZ3NfbWFwICptYXAgPSBjYmVfZmluZF9tYXAobnApOworCWlmIChtYXAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIG1hcC0+cG1kX3JlZ3M7Cit9CisKK3N0cnVjdCBjYmVfcG1kX3JlZ3MgX19pb21lbSAqY2JlX2dldF9jcHVfcG1kX3JlZ3MoaW50IGNwdSkKK3sKKwlzdHJ1Y3QgY2JlX3JlZ3NfbWFwICptYXAgPSBjYmVfdGhyZWFkX21hcFtjcHVdLnJlZ3M7CisJaWYgKG1hcCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gbWFwLT5wbWRfcmVnczsKK30KKworCitzdHJ1Y3QgY2JlX2lpY19yZWdzIF9faW9tZW0gKmNiZV9nZXRfaWljX3JlZ3Moc3RydWN0IGRldmljZV9ub2RlICpucCkKK3sKKwlzdHJ1Y3QgY2JlX3JlZ3NfbWFwICptYXAgPSBjYmVfZmluZF9tYXAobnApOworCWlmIChtYXAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIG1hcC0+aWljX3JlZ3M7Cit9CitzdHJ1Y3QgY2JlX2lpY19yZWdzIF9faW9tZW0gKmNiZV9nZXRfY3B1X2lpY19yZWdzKGludCBjcHUpCit7CisJc3RydWN0IGNiZV9yZWdzX21hcCAqbWFwID0gY2JlX3RocmVhZF9tYXBbY3B1XS5yZWdzOworCWlmIChtYXAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIG1hcC0+aWljX3JlZ3M7Cit9CisKK3ZvaWQgX19pbml0IGNiZV9yZWdzX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdTsKKworCS8qIEJ1aWxkIGxvY2FsIGZhc3QgbWFwIG9mIENQVXMgKi8KKwlmb3JfZWFjaF9jcHUoaSkKKwkJY2JlX3RocmVhZF9tYXBbaV0uY3B1X25vZGUgPSBvZl9nZXRfY3B1X25vZGUoaSwgTlVMTCk7CisKKwkvKiBGaW5kIG1hcHMgZm9yIGVhY2ggZGV2aWNlIHRyZWUgQ1BVICovCisJZm9yX2VhY2hfbm9kZV9ieV90eXBlKGNwdSwgImNwdSIpIHsKKwkJc3RydWN0IGNiZV9yZWdzX21hcCAqbWFwID0gJmNiZV9yZWdzX21hcHNbY2JlX3JlZ3NfbWFwX2NvdW50KytdOworCisJCS8qIFRoYXQgaGFjayBtdXN0IGRpZSBkaWUgZGllICEgKi8KKwkJc3RydWN0IGFkZHJlc3NfcHJvcCB7CisJCQl1bnNpZ25lZCBsb25nIGFkZHJlc3M7CisJCQl1bnNpZ25lZCBpbnQgbGVuOworCQl9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpICpwcm9wOworCisKKwkJaWYgKGNiZV9yZWdzX21hcF9jb3VudCA+IE1BWF9DQkUpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiY2JlX3JlZ3M6IE1vcmUgQkUgY2hpcHMgdGhhbiBzdXBwb3J0ZWQiCisJCQkgICAgICAgIiFcbiIpOworCQkJY2JlX3JlZ3NfbWFwX2NvdW50LS07CisJCQlyZXR1cm47CisJCX0KKwkJbWFwLT5jcHVfbm9kZSA9IGNwdTsKKwkJZm9yX2VhY2hfY3B1KGkpCisJCQlpZiAoY2JlX3RocmVhZF9tYXBbaV0uY3B1X25vZGUgPT0gY3B1KQorCQkJCWNiZV90aHJlYWRfbWFwW2ldLnJlZ3MgPSBtYXA7CisKKwkJcHJvcCA9IChzdHJ1Y3QgYWRkcmVzc19wcm9wICopZ2V0X3Byb3BlcnR5KGNwdSwgInBlcnZhc2l2ZSIsCisJCQkJCQkJICAgTlVMTCk7CisJCWlmIChwcm9wICE9IE5VTEwpCisJCQltYXAtPnBtZF9yZWdzID0gaW9yZW1hcChwcm9wLT5hZGRyZXNzLCBwcm9wLT5sZW4pOworCisJCXByb3AgPSAoc3RydWN0IGFkZHJlc3NfcHJvcCAqKWdldF9wcm9wZXJ0eShjcHUsICJpaWMiLAorCQkJCQkJCSAgIE5VTEwpOworCQlpZiAocHJvcCAhPSBOVUxMKQorCQkJbWFwLT5paWNfcmVncyA9IGlvcmVtYXAocHJvcC0+YWRkcmVzcywgcHJvcC0+bGVuKTsKKwl9Cit9CisKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9jYmVfcmVncy5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL2NiZV9yZWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2ZTRhNgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9jYmVfcmVncy5oCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogY2JlX3JlZ3MuaAorICoKKyAqIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBob2xkIHRoZSB2YXJpb3VzIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBDQkUKKyAqIG9uLWNoaXAgc3lzdGVtIGRldmljZXMgKG1lbW9yeSBjb250cm9sbGVyLCBJTyBjb250cm9sbGVyLCBldGMuLi4pCisgKgorICogKGMpIDIwMDYgQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPiwgSUJNIENvcnAuCisgKi8KKworI2lmbmRlZiBDQkVfUkVHU19ICisjZGVmaW5lIENCRV9SRUdTX0gKKworLyoKKyAqCisgKiBTb21lIEhJRCByZWdpc3RlciBkZWZpbml0aW9ucworICoKKyAqLworCisvKiBDQkUgc3BlY2lmaWMgSElEMCBiaXRzICovCisjZGVmaW5lIEhJRDBfQ0JFX1RIRVJNX1dBS0VVUAkweDAwMDAwMjAwMDAwMDAwMDB1bAorI2RlZmluZSBISUQwX0NCRV9TWVNFUlJfV0FLRVVQCTB4MDAwMDAwODAwMDAwMDAwMHVsCisjZGVmaW5lIEhJRDBfQ0JFX1RIRVJNX0lOVF9FTgkweDAwMDAwMDA0MDAwMDAwMDB1bAorI2RlZmluZSBISUQwX0NCRV9TWVNFUlJfSU5UX0VOCTB4MDAwMDAwMDIwMDAwMDAwMHVsCisKKworLyoKKyAqCisgKiBQZXJ2YXNpdmUgdW5pdCByZWdpc3RlciBkZWZpbml0aW9ucworICoKKyAqLworCitzdHJ1Y3QgY2JlX3BtZF9yZWdzIHsKKwl1OCBwYWRfMHgwMDAwXzB4MDgwMFsweDA4MDAgLSAweDAwMDBdOwkJCS8qIDB4MDAwMCAqLworCisJLyogVGhlcm1hbCBTZW5zb3IgUmVnaXN0ZXJzICovCisJdTY0ICB0c19jdHNyMTsJCQkJCQkvKiAweDA4MDAgKi8KKwl1NjQgIHRzX2N0c3IyOwkJCQkJCS8qIDB4MDgwOCAqLworCXU2NCAgdHNfbXRzcjE7CQkJCQkJLyogMHgwODEwICovCisJdTY0ICB0c19tdHNyMjsJCQkJCQkvKiAweDA4MTggKi8KKwl1NjQgIHRzX2l0cjE7CQkJCQkJLyogMHgwODIwICovCisJdTY0ICB0c19pdHIyOwkJCQkJCS8qIDB4MDgyOCAqLworCXU2NCAgdHNfZ2l0cjsJCQkJCQkvKiAweDA4MzAgKi8KKwl1NjQgIHRzX2lzcjsJCQkJCQkvKiAweDA4MzggKi8KKwl1NjQgIHRzX2ltcjsJCQkJCQkvKiAweDA4NDAgKi8KKwl1NjQgIHRtX2NyMTsJCQkJCQkvKiAweDA4NDggKi8KKwl1NjQgIHRtX2NyMjsJCQkJCQkvKiAweDA4NTAgKi8KKwl1NjQgIHRtX3NpbXI7CQkJCQkJLyogMHgwODU4ICovCisJdTY0ICB0bV90cHI7CQkJCQkJLyogMHgwODYwICovCisJdTY0ICB0bV9zdHIxOwkJCQkJCS8qIDB4MDg2OCAqLworCXU2NCAgdG1fc3RyMjsJCQkJCQkvKiAweDA4NzAgKi8KKwl1NjQgIHRtX3RzcjsJCQkJCQkvKiAweDA4NzggKi8KKworCS8qIFBvd2VyIE1hbmFnZW1lbnQgKi8KKwl1NjQgIHBtX2NvbnRyb2w7CQkJCQkvKiAweDA4ODAgKi8KKyNkZWZpbmUgQ0JFX1BNRF9QQVVTRV9aRVJPX0NPTlRST0wJCTB4MTAwMDAKKwl1NjQgIHBtX3N0YXR1czsJCQkJCQkvKiAweDA4ODggKi8KKworCS8qIFRpbWUgQmFzZSBSZWdpc3RlciAqLworCXU2NCAgdGJyOwkJCQkJCS8qIDB4MDg5MCAqLworCisJdTggICBwYWRfMHgwODk4XzB4MGMwMCBbMHgwYzAwIC0gMHgwODk4XTsJCS8qIDB4MDg5OCAqLworCisJLyogRmF1bHQgSXNvbGF0aW9uIFJlZ2lzdGVycyAqLworCXU2NCAgY2hlY2tzdG9wX2ZpcjsJCQkJCS8qIDB4MGMwMCAqLworCXU2NCAgcmVjb3ZlcmFibGVfZmlyOworCXU2NCAgc3BlY19hdHRfbWNoa19maXI7CisJdTY0ICBmaXJfbW9kZV9yZWc7CisJdTY0ICBmaXJfZW5hYmxlX21hc2s7CisKKwl1OCAgIHBhZF8weDBjMjhfMHgxMDAwIFsweDEwMDAgLSAweDBjMjhdOwkJLyogMHgwYzI4ICovCit9OworCitleHRlcm4gc3RydWN0IGNiZV9wbWRfcmVncyBfX2lvbWVtICpjYmVfZ2V0X3BtZF9yZWdzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOworZXh0ZXJuIHN0cnVjdCBjYmVfcG1kX3JlZ3MgX19pb21lbSAqY2JlX2dldF9jcHVfcG1kX3JlZ3MoaW50IGNwdSk7CisKKy8qCisgKgorICogSUlDIHVuaXQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKi8KKworc3RydWN0IGNiZV9paWNfcGVuZGluZ19iaXRzIHsKKwl1MzIgZGF0YTsKKwl1OCBmbGFnczsKKwl1OCBjbGFzczsKKwl1OCBzb3VyY2U7CisJdTggcHJpbzsKK307CisKKyNkZWZpbmUgQ0JFX0lJQ19JUlFfVkFMSUQJMHg4MAorI2RlZmluZSBDQkVfSUlDX0lSUV9JUEkJCTB4NDAKKworc3RydWN0IGNiZV9paWNfdGhyZWFkX3JlZ3MgeworCXN0cnVjdCBjYmVfaWljX3BlbmRpbmdfYml0cyBwZW5kaW5nOworCXN0cnVjdCBjYmVfaWljX3BlbmRpbmdfYml0cyBwZW5kaW5nX2Rlc3RyOworCXU2NCBnZW5lcmF0ZTsKKwl1NjQgcHJpbzsKK307CisKK3N0cnVjdCBjYmVfaWljX3JlZ3MgeworCXU4CXBhZF8weDAwMDBfMHgwNDAwWzB4MDQwMCAtIDB4MDAwMF07CQkvKiAweDAwMDAgKi8KKworCS8qIElJQyBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCisJc3RydWN0CWNiZV9paWNfdGhyZWFkX3JlZ3MgdGhyZWFkWzJdOwkJCS8qIDB4MDQwMCAqLworCXU2NCAgICAgaWljX2lyOwkJCQkJCS8qIDB4MDQ0MCAqLworCXU2NCAgICAgaWljX2lzOwkJCQkJCS8qIDB4MDQ0OCAqLworCisJdTgJcGFkXzB4MDQ1MF8weDA1MDBbMHgwNTAwIC0gMHgwNDUwXTsJCS8qIDB4MDQ1MCAqLworCisJLyogSU9DIEZJUiAqLworCXU2NAlpb2NfZmlyX3Jlc2V0OwkJCQkJLyogMHgwNTAwICovCisJdTY0CWlvY19maXJfc2V0OworCXU2NAlpb2NfY2hlY2tzdG9wX2VuYWJsZTsKKwl1NjQJaW9jX2Zpcl9lcnJvcl9tYXNrOworCXU2NAlpb2Nfc3lzZXJyX2VuYWJsZTsKKwl1NjQJaW9jX2ZpcjsKKworCXU4CXBhZF8weDA1MzBfMHgxMDAwWzB4MTAwMCAtIDB4MDUzMF07CQkvKiAweDA1MzAgKi8KK307CisKK2V4dGVybiBzdHJ1Y3QgY2JlX2lpY19yZWdzIF9faW9tZW0gKmNiZV9nZXRfaWljX3JlZ3Moc3RydWN0IGRldmljZV9ub2RlICpucCk7CitleHRlcm4gc3RydWN0IGNiZV9paWNfcmVncyBfX2lvbWVtICpjYmVfZ2V0X2NwdV9paWNfcmVncyhpbnQgY3B1KTsKKworCisvKiBJbml0IHRoaXMgbW9kdWxlIGVhcmx5ICovCitleHRlcm4gdm9pZCBjYmVfcmVnc19pbml0KHZvaWQpOworCisKKyNlbmRpZiAvKiBDQkVfUkVHU19IICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvaW50ZXJydXB0LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvaW50ZXJydXB0LmMKaW5kZXggOTc4YmUxYy4uZjRlMmQ4OCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL2ludGVycnVwdC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9pbnRlcnJ1cHQuYwpAQCAtMzMsMjkgKzMzLDEwIEBACiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogCiAjaW5jbHVkZSAiaW50ZXJydXB0LmgiCi0KLXN0cnVjdCBpaWNfcGVuZGluZ19iaXRzIHsKLQl1MzIgZGF0YTsKLQl1OCBmbGFnczsKLQl1OCBjbGFzczsKLQl1OCBzb3VyY2U7Ci0JdTggcHJpbzsKLX07Ci0KLWVudW0gaWljX3BlbmRpbmdfZmxhZ3MgewotCUlJQ19WQUxJRCA9IDB4ODAsCi0JSUlDX0lQSSAgID0gMHg0MCwKLX07Ci0KLXN0cnVjdCBpaWNfcmVncyB7Ci0Jc3RydWN0IGlpY19wZW5kaW5nX2JpdHMgcGVuZGluZzsKLQlzdHJ1Y3QgaWljX3BlbmRpbmdfYml0cyBwZW5kaW5nX2Rlc3RyOwotCXU2NCBnZW5lcmF0ZTsKLQl1NjQgcHJpbzsKLX07CisjaW5jbHVkZSAiY2JlX3JlZ3MuaCIKIAogc3RydWN0IGlpYyB7Ci0Jc3RydWN0IGlpY19yZWdzIF9faW9tZW0gKnJlZ3M7CisJc3RydWN0IGNiZV9paWNfdGhyZWFkX3JlZ3MgX19pb21lbSAqcmVnczsKIAl1OCB0YXJnZXRfaWQ7CiB9OwogCkBAIC0xMTUsNyArOTYsNyBAQAogCS5lbmQgPSBpaWNfZW5kLAogfTsKIAotc3RhdGljIGludCBpaWNfZXh0ZXJuYWxfZ2V0X2lycShzdHJ1Y3QgaWljX3BlbmRpbmdfYml0cyBwZW5kaW5nKQorc3RhdGljIGludCBpaWNfZXh0ZXJuYWxfZ2V0X2lycShzdHJ1Y3QgY2JlX2lpY19wZW5kaW5nX2JpdHMgcGVuZGluZykKIHsKIAlpbnQgaXJxOwogCXVuc2lnbmVkIGNoYXIgbm9kZSwgdW5pdDsKQEAgLTEzNiw4ICsxMTcsNyBAQAogCQkgKiBPbmUgb2YgdGhlc2UgdW5pdHMgY2FuIGJlIGNvbm5lY3RlZAogCQkgKiB0byBhbiBleHRlcm5hbCBpbnRlcnJ1cHQgY29udHJvbGxlci4KIAkJICovCi0JCWlmIChwZW5kaW5nLnByaW8gPiAweDNmIHx8Ci0JCSAgICBwZW5kaW5nLmNsYXNzICE9IDIpCisJCWlmIChwZW5kaW5nLmNsYXNzICE9IDIpCiAJCQlicmVhazsKIAkJaXJxID0gSUlDX0VYVF9PRkZTRVQKIAkJCSsgc3BpZGVyX2dldF9pcnEobm9kZSkKQEAgLTE2OCwxNSArMTQ4LDE1IEBACiB7CiAJc3RydWN0IGlpYyAqaWljOwogCWludCBpcnE7Ci0Jc3RydWN0IGlpY19wZW5kaW5nX2JpdHMgcGVuZGluZzsKKwlzdHJ1Y3QgY2JlX2lpY19wZW5kaW5nX2JpdHMgcGVuZGluZzsKIAogCWlpYyA9ICZfX2dldF9jcHVfdmFyKGlpYyk7CiAJKih1bnNpZ25lZCBsb25nICopICZwZW5kaW5nID0gCiAJCWluX2JlNjQoKHVuc2lnbmVkIGxvbmcgX19pb21lbSAqKSAmaWljLT5yZWdzLT5wZW5kaW5nX2Rlc3RyKTsKIAogCWlycSA9IC0xOwotCWlmIChwZW5kaW5nLmZsYWdzICYgSUlDX1ZBTElEKSB7Ci0JCWlmIChwZW5kaW5nLmZsYWdzICYgSUlDX0lQSSkgeworCWlmIChwZW5kaW5nLmZsYWdzICYgQ0JFX0lJQ19JUlFfVkFMSUQpIHsKKwkJaWYgKHBlbmRpbmcuZmxhZ3MgJiBDQkVfSUlDX0lSUV9JUEkpIHsKIAkJCWlycSA9IElJQ19JUElfT0ZGU0VUICsgKHBlbmRpbmcucHJpbyA+PiA0KTsKIC8qCiAJCQlpZiAoaXJxID4gMHg4MCkKQEAgLTIyNiw3ICsyMDYsNyBAQAogCQkJcmVncyArPSAweDIwOwogCiAJCXByaW50ayhLRVJOX0lORk8gIklJQyBmb3IgQ1BVICVkIGF0ICVseFxuIiwgY3B1LCByZWdzKTsKLQkJaWljLT5yZWdzID0gaW9yZW1hcChyZWdzLCBzaXplb2Yoc3RydWN0IGlpY19yZWdzKSk7CisJCWlpYy0+cmVncyA9IGlvcmVtYXAocmVncywgc2l6ZW9mKHN0cnVjdCBjYmVfaWljX3RocmVhZF9yZWdzKSk7CiAJCWlpYy0+dGFyZ2V0X2lkID0gKG5vZGVpZCA8PCA0KSArICgoY3B1ICYgMSkgPyAweGYgOiAweGUpOwogCX0KIApAQCAtMjY3LDEyICsyNDcsMTIgQEAKIAkJfQogCiAgCQlpaWMgPSAmcGVyX2NwdShpaWMsIG5wWzBdKTsKLSAJCWlpYy0+cmVncyA9IGlvcmVtYXAocmVnc1swXSwgc2l6ZW9mKHN0cnVjdCBpaWNfcmVncykpOworIAkJaWljLT5yZWdzID0gaW9yZW1hcChyZWdzWzBdLCBzaXplb2Yoc3RydWN0IGNiZV9paWNfdGhyZWFkX3JlZ3MpKTsKIAkJaWljLT50YXJnZXRfaWQgPSAoKG5wWzBdICYgMikgPDwgMykgKyAoKG5wWzBdICYgMSkgPyAweGYgOiAweGUpOwogIAkJcHJpbnRrKCJJSUMgZm9yIENQVSAlZCBhdCAlbHggbWFwcGVkIHRvICVwXG4iLCBucFswXSwgcmVnc1swXSwgaWljLT5yZWdzKTsKIAogIAkJaWljID0gJnBlcl9jcHUoaWljLCBucFsxXSk7Ci0gCQlpaWMtPnJlZ3MgPSBpb3JlbWFwKHJlZ3NbMl0sIHNpemVvZihzdHJ1Y3QgaWljX3JlZ3MpKTsKKyAJCWlpYy0+cmVncyA9IGlvcmVtYXAocmVnc1syXSwgc2l6ZW9mKHN0cnVjdCBjYmVfaWljX3RocmVhZF9yZWdzKSk7CiAJCWlpYy0+dGFyZ2V0X2lkID0gKChucFsxXSAmIDIpIDw8IDMpICsgKChucFsxXSAmIDEpID8gMHhmIDogMHhlKTsKICAJCXByaW50aygiSUlDIGZvciBDUFUgJWQgYXQgJWx4IG1hcHBlZCB0byAlcFxuIiwgbnBbMV0sIHJlZ3NbMl0sIGlpYy0+cmVncyk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9pb21tdS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL2lvbW11LmMKaW5kZXggYTQ5Y2ViNy4uYTM1MDA0ZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL2lvbW11LmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL2lvbW11LmMKQEAgLTQ3Myw2ICs0NzMsMTYgQEAKIAlyZXR1cm4gbWFzayA8IDB4MTAwMDAwMDAwdWxsOwogfQogCitzdGF0aWMgc3RydWN0IGRtYV9tYXBwaW5nX29wcyBjZWxsX2lvbW11X29wcyA9IHsKKwkuYWxsb2NfY29oZXJlbnQgPSBjZWxsX2FsbG9jX2NvaGVyZW50LAorCS5mcmVlX2NvaGVyZW50ID0gY2VsbF9mcmVlX2NvaGVyZW50LAorCS5tYXBfc2luZ2xlID0gY2VsbF9tYXBfc2luZ2xlLAorCS51bm1hcF9zaW5nbGUgPSBjZWxsX3VubWFwX3NpbmdsZSwKKwkubWFwX3NnID0gY2VsbF9tYXBfc2csCisJLnVubWFwX3NnID0gY2VsbF91bm1hcF9zZywKKwkuZG1hX3N1cHBvcnRlZCA9IGNlbGxfZG1hX3N1cHBvcnRlZCwKK307CisKIHZvaWQgY2VsbF9pbml0X2lvbW11KHZvaWQpCiB7CiAJaW50IHNldHVwX2J1cyA9IDA7CkBAIC00OTgsMTEgKzUwOCw1IEBACiAJCX0KIAl9CiAKLQlwY2lfZG1hX29wcy5hbGxvY19jb2hlcmVudCA9IGNlbGxfYWxsb2NfY29oZXJlbnQ7Ci0JcGNpX2RtYV9vcHMuZnJlZV9jb2hlcmVudCA9IGNlbGxfZnJlZV9jb2hlcmVudDsKLQlwY2lfZG1hX29wcy5tYXBfc2luZ2xlID0gY2VsbF9tYXBfc2luZ2xlOwotCXBjaV9kbWFfb3BzLnVubWFwX3NpbmdsZSA9IGNlbGxfdW5tYXBfc2luZ2xlOwotCXBjaV9kbWFfb3BzLm1hcF9zZyA9IGNlbGxfbWFwX3NnOwotCXBjaV9kbWFfb3BzLnVubWFwX3NnID0gY2VsbF91bm1hcF9zZzsKLQlwY2lfZG1hX29wcy5kbWFfc3VwcG9ydGVkID0gY2VsbF9kbWFfc3VwcG9ydGVkOworCXBjaV9kbWFfb3BzID0gY2VsbF9pb21tdV9vcHM7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcGVydmFzaXZlLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcGVydmFzaXZlLmMKaW5kZXggN2VlZDhjNi4uNjk1YWM0ZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3BlcnZhc2l2ZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9wZXJ2YXNpdmUuYwpAQCAtMzcsMzYgKzM3LDI4IEBACiAjaW5jbHVkZSA8YXNtL3JlZy5oPgogCiAjaW5jbHVkZSAicGVydmFzaXZlLmgiCisjaW5jbHVkZSAiY2JlX3JlZ3MuaCIKIAogc3RhdGljIERFRklORV9TUElOTE9DSyhjYmVfcGVydmFzaXZlX2xvY2spOwotc3RydWN0IGNiZV9wZXJ2YXNpdmUgewotCXN0cnVjdCBwbWRfcmVncyBfX2lvbWVtICpyZWdzOwotCXVuc2lnbmVkIGludCB0aHJlYWQ7Ci19OwotCi0vKiBjYW4ndCB1c2UgcGVyX2NwdSBmcm9tIHNldHVwX2FyY2ggKi8KLXN0YXRpYyBzdHJ1Y3QgY2JlX3BlcnZhc2l2ZSBjYmVfcGVydmFzaXZlW05SX0NQVVNdOwogCiBzdGF0aWMgdm9pZCBfX2luaXQgY2JlX2VuYWJsZV9wYXVzZV96ZXJvKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyB0aHJlYWRfc3dpdGNoX2NvbnRyb2w7CiAJdW5zaWduZWQgbG9uZyB0ZW1wX3JlZ2lzdGVyOwotCXN0cnVjdCBjYmVfcGVydmFzaXZlICpwOwotCWludCB0aHJlYWQ7CisJc3RydWN0IGNiZV9wbWRfcmVncyBfX2lvbWVtICpwcmVnczsKIAogCXNwaW5fbG9ja19pcnEoJmNiZV9wZXJ2YXNpdmVfbG9jayk7Ci0JcCA9ICZjYmVfcGVydmFzaXZlW3NtcF9wcm9jZXNzb3JfaWQoKV07Ci0KLQlpZiAoIWNiZV9wZXJ2YXNpdmUtPnJlZ3MpCisJcHJlZ3MgPSBjYmVfZ2V0X2NwdV9wbWRfcmVncyhzbXBfcHJvY2Vzc29yX2lkKCkpOworCWlmIChwcmVncyA9PSBOVUxMKQogCQlnb3RvIG91dDsKIAogCXByX2RlYnVnKCJQb3dlciBNYW5hZ2VtZW50OiBDUFUgJWRcbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAKIAkgLyogRW5hYmxlIFBhdXNlKDApIGNvbnRyb2wgYml0ICovCi0JdGVtcF9yZWdpc3RlciA9IGluX2JlNjQoJnAtPnJlZ3MtPnBtX2NvbnRyb2wpOworCXRlbXBfcmVnaXN0ZXIgPSBpbl9iZTY0KCZwcmVncy0+cG1fY29udHJvbCk7CiAKLQlvdXRfYmU2NCgmcC0+cmVncy0+cG1fY29udHJvbCwKLQkJIHRlbXBfcmVnaXN0ZXJ8UE1EX1BBVVNFX1pFUk9fQ09OVFJPTCk7CisJb3V0X2JlNjQoJnByZWdzLT5wbV9jb250cm9sLAorCQkgdGVtcF9yZWdpc3RlciB8IENCRV9QTURfUEFVU0VfWkVST19DT05UUk9MKTsKIAogCS8qIEVuYWJsZSBERUMgYW5kIEVFIGludGVycnVwdCByZXF1ZXN0ICovCiAJdGhyZWFkX3N3aXRjaF9jb250cm9sICA9IG1mc3ByKFNQUk5fVFNDX0NFTEwpOwpAQCAtNzUsMjUgKzY3LDE2IEBACiAJc3dpdGNoICgobWZzcHIoU1BSTl9DVFJMRikgJiBDVFJMX0NUKSkgewogCWNhc2UgQ1RSTF9DVDA6CiAJCXRocmVhZF9zd2l0Y2hfY29udHJvbCB8PSBUU0NfQ0VMTF9ERUNfRU5BQkxFXzA7Ci0JCXRocmVhZCA9IDA7CiAJCWJyZWFrOwogCWNhc2UgQ1RSTF9DVDE6CiAJCXRocmVhZF9zd2l0Y2hfY29udHJvbCB8PSBUU0NfQ0VMTF9ERUNfRU5BQkxFXzE7Ci0JCXRocmVhZCA9IDE7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiB1bmtub3duIGNvbmZpZ3VyYXRpb25cbiIsCiAJCQlfX0ZVTkNUSU9OX18pOwotCQl0aHJlYWQgPSAtMTsKIAkJYnJlYWs7CiAJfQogCi0JaWYgKHAtPnRocmVhZCAhPSB0aHJlYWQpCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBkZXZpY2UgdHJlZSBpbmNvbnNpc3RhbnQsICIKLQkJCQkgICAgICJjcHUgJWk6ICVkLyVkXG4iLCBfX0ZVTkNUSU9OX18sCi0JCQkJICAgICBzbXBfcHJvY2Vzc29yX2lkKCksCi0JCQkJICAgICBwLT50aHJlYWQsIHRocmVhZCk7Ci0KIAltdHNwcihTUFJOX1RTQ19DRUxMLCB0aHJlYWRfc3dpdGNoX2NvbnRyb2wpOwogCiBvdXQ6CkBAIC0xMDQsNiArODcsMTEgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGN0cmw7CiAKKwkvKiBXaHkgZG8gd2UgZG8gdGhhdCBvbiBldmVyeSBpZGxlID8gQ291bGRuJ3QgdGhhdCBiZSBkb25lIG9uY2UgZm9yCisJICogYWxsIG9yIGRvIHdlIGxvc2UgdGhlIHN0YXRlIHNvbWUgd2F5ID8gQWxzbywgdGhlIHBtX2NvbnRyb2wKKwkgKiByZWdpc3RlciBzZXR0aW5nLCB0aGF0IGNhbid0IGJlIHNldCBvbmNlIGF0IGJvb3QgPyBXZSByZWFsbHkgd2FudAorCSAqIHRvIG1vdmUgdGhhdCBhd2F5IGluIG9yZGVyIHRvIGltcGxlbWVudCBhIHNpbXBsZSBwb3dlcnNhdmUKKwkgKi8KIAljYmVfZW5hYmxlX3BhdXNlX3plcm8oKTsKIAogCXdoaWxlICgxKSB7CkBAIC0xNTIsOCArMTQwLDE1IEBACiAJCXRpbWVyX2ludGVycnVwdChyZWdzKTsKIAkJYnJlYWs7CiAJY2FzZSBTUlIxX1dBS0VNVDoKLQkJLyogbm8gYWN0aW9uIHJlcXVpcmVkICovCiAJCWJyZWFrOworI2lmZGVmIENPTkZJR19DQkVfUkFTCisJY2FzZSBTUlIxX1dBS0VTWVNFUlI6CisJCWNiZV9zeXN0ZW1fZXJyb3JfZXhjZXB0aW9uKHJlZ3MpOworCQlicmVhazsKKwljYXNlIFNSUjFfV0FLRVRIRVJNOgorCQljYmVfdGhlcm1hbF9leGNlcHRpb24ocmVncyk7CisJCWJyZWFrOworI2VuZGlmIC8qIENPTkZJR19DQkVfUkFTICovCiAJZGVmYXVsdDoKIAkJLyogZG8gc3lzdGVtIHJlc2V0ICovCiAJCXJldHVybiAwOwpAQCAtMTYyLDY4ICsxNTcsMTEgQEAKIAlyZXR1cm4gMTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgY2JlX2ZpbmRfcG1kX21taW8oaW50IGNwdSwgc3RydWN0IGNiZV9wZXJ2YXNpdmUgKnApCit2b2lkIF9faW5pdCBjYmVfcGVydmFzaXZlX2luaXQodm9pZCkKIHsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7Ci0JdW5zaWduZWQgaW50ICppbnRfc2VydmVyczsKLQljaGFyICphZGRyOwotCXVuc2lnbmVkIGxvbmcgcmVhbF9hZGRyZXNzOwotCXVuc2lnbmVkIGludCBzaXplOwotCi0Jc3RydWN0IHBtZF9yZWdzIF9faW9tZW0gKnBtZF9tbWlvX2FyZWE7Ci0JaW50IGhhcmRpZCwgdGhyZWFkOwotCWludCBwcm9wbGVuOwotCi0JcG1kX21taW9fYXJlYSA9IE5VTEw7Ci0JaGFyZGlkID0gZ2V0X2hhcmRfc21wX3Byb2Nlc3Nvcl9pZChjcHUpOwotCWZvciAobm9kZSA9IE5VTEw7IChub2RlID0gb2ZfZmluZF9ub2RlX2J5X3R5cGUobm9kZSwgImNwdSIpKTspIHsKLQkJaW50X3NlcnZlcnMgPSAodm9pZCAqKSBnZXRfcHJvcGVydHkobm9kZSwKLQkJCQkiaWJtLHBwYy1pbnRlcnJ1cHQtc2VydmVyI3MiLCAmcHJvcGxlbik7Ci0JCWlmICghaW50X3NlcnZlcnMpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzIG1pc3NlcyAiCi0JCQkJImlibSxwcGMtaW50ZXJydXB0LXNlcnZlciNzIHByb3BlcnR5IiwKLQkJCQlub2RlLT5mdWxsX25hbWUpOwotCQkJY29udGludWU7Ci0JCX0KLQkJZm9yICh0aHJlYWQgPSAwOyB0aHJlYWQgPCBwcm9wbGVuIC8gc2l6ZW9mIChpbnQpOyB0aHJlYWQrKykgewotCQkJaWYgKGhhcmRpZCA9PSBpbnRfc2VydmVyc1t0aHJlYWRdKSB7Ci0JCQkJYWRkciA9IGdldF9wcm9wZXJ0eShub2RlLCAicGVydmFzaXZlIiwgTlVMTCk7Ci0JCQkJZ290byBmb3VuZDsKLQkJCX0KLQkJfQotCX0KLQotCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBDUFUgJWQgbm90IGZvdW5kXG4iLCBfX0ZVTkNUSU9OX18sIGNwdSk7Ci0JcmV0dXJuIC1FSU5WQUw7Ci0KLWZvdW5kOgotCXJlYWxfYWRkcmVzcyA9ICoodW5zaWduZWQgbG9uZyopIGFkZHI7Ci0JYWRkciArPSBzaXplb2YgKHVuc2lnbmVkIGxvbmcpOwotCXNpemUgPSAqKHVuc2lnbmVkIGludCopIGFkZHI7Ci0KLQlwcl9kZWJ1ZygicGVydmFzaXZlIGFyZWEgZm9yIENQVSAlZCBhdCAlbHgsIHNpemUgJXhcbiIsCi0JCQljcHUsIHJlYWxfYWRkcmVzcywgc2l6ZSk7Ci0JcC0+cmVncyA9IGlvcmVtYXAocmVhbF9hZGRyZXNzLCBzaXplKTsKLQlwLT50aHJlYWQgPSB0aHJlYWQ7Ci0JcmV0dXJuIDA7Ci19Ci0KLXZvaWQgX19pbml0IGNlbGxfcGVydmFzaXZlX2luaXQodm9pZCkKLXsKLQlzdHJ1Y3QgY2JlX3BlcnZhc2l2ZSAqcDsKLQlpbnQgY3B1OwotCWludCByZXQ7Ci0KIAlpZiAoIWNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1BBVVNFX1pFUk8pKQogCQlyZXR1cm47CiAKLQlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7Ci0JCXAgPSAmY2JlX3BlcnZhc2l2ZVtjcHVdOwotCQlyZXQgPSBjYmVfZmluZF9wbWRfbW1pbyhjcHUsIHApOwotCQlpZiAocmV0KQotCQkJcmV0dXJuOwotCX0KLQogCXBwY19tZC5pZGxlX2xvb3AgPSBjYmVfaWRsZTsKIAlwcGNfbWQuc3lzdGVtX3Jlc2V0X2V4Y2VwdGlvbiA9IGNiZV9zeXN0ZW1fcmVzZXRfZXhjZXB0aW9uOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3BlcnZhc2l2ZS5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3BlcnZhc2l2ZS5oCmluZGV4IGRhMWZiODUuLjdiNTA5NDcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9wZXJ2YXNpdmUuaAorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcGVydmFzaXZlLmgKQEAgLTI1LDM4ICsyNSw5IEBACiAjaWZuZGVmIFBFUlZBU0lWRV9ICiAjZGVmaW5lIFBFUlZBU0lWRV9ICiAKLXN0cnVjdCBwbWRfcmVncyB7Ci0JdTggcGFkXzB4MDAwMF8weDA4MDBbMHgwODAwIC0gMHgwMDAwXTsJCQkvKiAweDAwMDAgKi8KLQotCS8qIFRoZXJtYWwgU2Vuc29yIFJlZ2lzdGVycyAqLwotCXU2NCAgdHNfY3RzcjE7CQkJCQkJLyogMHgwODAwICovCi0JdTY0ICB0c19jdHNyMjsJCQkJCQkvKiAweDA4MDggKi8KLQl1NjQgIHRzX210c3IxOwkJCQkJCS8qIDB4MDgxMCAqLwotCXU2NCAgdHNfbXRzcjI7CQkJCQkJLyogMHgwODE4ICovCi0JdTY0ICB0c19pdHIxOwkJCQkJCS8qIDB4MDgyMCAqLwotCXU2NCAgdHNfaXRyMjsJCQkJCQkvKiAweDA4MjggKi8KLQl1NjQgIHRzX2dpdHI7CQkJCQkJLyogMHgwODMwICovCi0JdTY0ICB0c19pc3I7CQkJCQkJLyogMHgwODM4ICovCi0JdTY0ICB0c19pbXI7CQkJCQkJLyogMHgwODQwICovCi0JdTY0ICB0bV9jcjE7CQkJCQkJLyogMHgwODQ4ICovCi0JdTY0ICB0bV9jcjI7CQkJCQkJLyogMHgwODUwICovCi0JdTY0ICB0bV9zaW1yOwkJCQkJCS8qIDB4MDg1OCAqLwotCXU2NCAgdG1fdHByOwkJCQkJCS8qIDB4MDg2MCAqLwotCXU2NCAgdG1fc3RyMTsJCQkJCQkvKiAweDA4NjggKi8KLQl1NjQgIHRtX3N0cjI7CQkJCQkJLyogMHgwODcwICovCi0JdTY0ICB0bV90c3I7CQkJCQkJLyogMHgwODc4ICovCi0KLQkvKiBQb3dlciBNYW5hZ2VtZW50ICovCi0JdTY0ICBwbV9jb250cm9sOwkJCQkJLyogMHgwODgwICovCi0jZGVmaW5lIFBNRF9QQVVTRV9aRVJPX0NPTlRST0wJCTB4MTAwMDAKLQl1NjQgIHBtX3N0YXR1czsJCQkJCQkvKiAweDA4ODggKi8KLQotCS8qIFRpbWUgQmFzZSBSZWdpc3RlciAqLwotCXU2NCAgdGJyOwkJCQkJCS8qIDB4MDg5MCAqLwotCi0JdTggICBwYWRfMHgwODk4XzB4MTAwMCBbMHgxMDAwIC0gMHgwODk4XTsJCS8qIDB4MDg5OCAqLwotfTsKLQotdm9pZCBfX2luaXQgY2VsbF9wZXJ2YXNpdmVfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGNiZV9wZXJ2YXNpdmVfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGNiZV9zeXN0ZW1fZXJyb3JfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK2V4dGVybiB2b2lkIGNiZV9tYWludGVuYW5jZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgY2JlX3RoZXJtYWxfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcmFzLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcmFzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzYWQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9yYXMuYwpAQCAtMCwwICsxLDExMiBAQAorI2RlZmluZSBERUJVRworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zbXAuaD4KKworI2luY2x1ZGUgPGFzbS9yZWcuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vcHJvbS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CisKKyNpbmNsdWRlICJyYXMuaCIKKyNpbmNsdWRlICJjYmVfcmVncy5oIgorCisKK3N0YXRpYyB2b2lkIGR1bXBfZmlyKGludCBjcHUpCit7CisJc3RydWN0IGNiZV9wbWRfcmVncyBfX2lvbWVtICpwcmVncyA9IGNiZV9nZXRfY3B1X3BtZF9yZWdzKGNwdSk7CisJc3RydWN0IGNiZV9paWNfcmVncyBfX2lvbWVtICppcmVncyA9IGNiZV9nZXRfY3B1X2lpY19yZWdzKGNwdSk7CisKKwlpZiAocHJlZ3MgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogVG9kbzogZG8gc29tZSBuaWNlciBwYXJzaW5nIG9mIGJpdHMgYW5kIGJhc2VkIG9uIHRoZW0gZ28gZG93bgorCSAqIHRvIG90aGVyIHN1Yi11bml0cyBGSVJzIGFuZCBub3Qgb25seSBJSUMKKwkgKi8KKwlwcmludGsoS0VSTl9FUlIgIkdsb2JhbCBDaGVja3N0b3AgRklSICAgIDogMHglMDE2bHhcbiIsCisJICAgICAgIGluX2JlNjQoJnByZWdzLT5jaGVja3N0b3BfZmlyKSk7CisJcHJpbnRrKEtFUk5fRVJSICJHbG9iYWwgUmVjb3ZlcmFibGUgRklSICA6IDB4JTAxNmx4XG4iLAorCSAgICAgICBpbl9iZTY0KCZwcmVncy0+Y2hlY2tzdG9wX2ZpcikpOworCXByaW50ayhLRVJOX0VSUiAiR2xvYmFsIE1hY2hpbmVDaGVjayBGSVIgOiAweCUwMTZseFxuIiwKKwkgICAgICAgaW5fYmU2NCgmcHJlZ3MtPnNwZWNfYXR0X21jaGtfZmlyKSk7CisKKwlpZiAoaXJlZ3MgPT0gTlVMTCkKKwkJcmV0dXJuOworCXByaW50ayhLRVJOX0VSUiAiSU9DIEZJUiAgICAgICAgICAgICAgICAgOiAweCUwMTZseFxuIiwKKwkgICAgICAgaW5fYmU2NCgmaXJlZ3MtPmlvY19maXIpKTsKKworfQorCit2b2lkIGNiZV9zeXN0ZW1fZXJyb3JfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKwlwcmludGsoS0VSTl9FUlIgIlN5c3RlbSBFcnJvciBJbnRlcnJ1cHQgb24gQ1BVICVkICFcbiIsIGNwdSk7CisJZHVtcF9maXIoY3B1KTsKKwlkdW1wX3N0YWNrKCk7Cit9CisKK3ZvaWQgY2JlX21haW50ZW5hbmNlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJLyoKKwkgKiBOb3RoaW5nIGltcGxlbWVudGVkIGZvciB0aGUgbWFpbnRlbmFuY2UgaW50ZXJydXB0IGF0IHRoaXMgcG9pbnQKKwkgKi8KKworCXByaW50ayhLRVJOX0VSUiAiVW5oYW5kbGVkIE1haW50ZW5hbmNlIGludGVycnVwdCBvbiBDUFUgJWQgIVxuIiwgY3B1KTsKKwlkdW1wX3N0YWNrKCk7Cit9CisKK3ZvaWQgY2JlX3RoZXJtYWxfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKwkvKgorCSAqIE5vdGhpbmcgaW1wbGVtZW50ZWQgZm9yIHRoZSB0aGVybWFsIGludGVycnVwdCBhdCB0aGlzIHBvaW50CisJICovCisKKwlwcmludGsoS0VSTl9FUlIgIlVuaGFuZGxlZCBUaGVybWFsIGludGVycnVwdCBvbiBDUFUgJWQgIVxuIiwgY3B1KTsKKwlkdW1wX3N0YWNrKCk7Cit9CisKK3N0YXRpYyBpbnQgY2JlX21hY2hpbmVfY2hlY2tfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJcHJpbnRrKEtFUk5fRVJSICJNYWNoaW5lIENoZWNrIEludGVycnVwdCBvbiBDUFUgJWQgIVxuIiwgY3B1KTsKKwlkdW1wX2ZpcihjcHUpOworCisJLyogTm8gcmVjb3ZlcnkgZnJvbSB0aGlzIGNvZGUgbm93LCBsZXRzIGNvbnRpbnVlICovCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19pbml0IGNiZV9yYXNfaW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgaGlkMDsKKworCS8qCisJICogRW5hYmxlIFN5c3RlbSBFcnJvciAmIHRoZXJtYWwgaW50ZXJydXB0cyBhbmQgd2FrZXVwIGNvbmRpdGlvbnMKKwkgKi8KKworCWhpZDAgPSBtZnNwcihTUFJOX0hJRDApOworCWhpZDAgfD0gSElEMF9DQkVfVEhFUk1fSU5UX0VOIHwgSElEMF9DQkVfVEhFUk1fV0FLRVVQIHwKKwkJSElEMF9DQkVfU1lTRVJSX0lOVF9FTiB8IEhJRDBfQ0JFX1NZU0VSUl9XQUtFVVA7CisJbXRzcHIoU1BSTl9ISUQwLCBoaWQwKTsKKwltYigpOworCisJLyoKKwkgKiBJbnN0YWxsIG1hY2hpbmUgY2hlY2sgaGFuZGxlci4gTGVhdmUgc2V0dGluZyBvZiBwcmVjaXNlIG1vZGUgdG8KKwkgKiB3aGF0IHRoZSBmaXJtd2FyZSBkaWQgZm9yIG5vdworCSAqLworCXBwY19tZC5tYWNoaW5lX2NoZWNrX2V4Y2VwdGlvbiA9IGNiZV9tYWNoaW5lX2NoZWNrX2hhbmRsZXI7CisJbWIoKTsKKworCS8qCisJICogRm9yIG5vdywgd2UgYXNzdW1lIHRoYXQgSU9DX0ZJUiBpcyBhbHJlYWR5IHNldCB0byBmb3J3YXJkIHNvbWUKKwkgKiBlcnJvciBjb25kaXRpb25zIHRvIHRoZSBTeXN0ZW0gRXJyb3IgaGFuZGxlci4gSWYgdGhhdCBpcyBub3QgdHJ1ZQorCSAqIHRoZW4gaXQgd2lsbCBoYXZlIHRvIGJlIGZpeGVkIHVwIGhlcmUuCisJICovCit9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcmFzLmggYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvcmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3ZWU1NAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9yYXMuaApAQCAtMCwwICsxLDkgQEAKKyNpZm5kZWYgUkFTX0gKKyNkZWZpbmUgUkFTX0gKKworZXh0ZXJuIHZvaWQgY2JlX3N5c3RlbV9lcnJvcl9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgY2JlX21haW50ZW5hbmNlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBjYmVfdGhlcm1hbF9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIHZvaWQgY2JlX3Jhc19pbml0KHZvaWQpOworCisjZW5kaWYgLyogUkFTX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zZXR1cC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKaW5kZXggZmQzZTU2MC4uM2QxODMxZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NldHVwLmMKQEAgLTQ5LDEwICs0OSwxMyBAQAogI2luY2x1ZGUgPGFzbS9wcGMtcGNpLmg+CiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9zcHUuaD4KKyNpbmNsdWRlIDxhc20vc3B1X3ByaXYxLmg+CiAKICNpbmNsdWRlICJpbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJpb21tdS5oIgorI2luY2x1ZGUgImNiZV9yZWdzLmgiCiAjaW5jbHVkZSAicGVydmFzaXZlLmgiCisjaW5jbHVkZSAicmFzLmgiCiAKICNpZmRlZiBERUJVRwogI2RlZmluZSBEQkcoZm10Li4uKSB1ZGJnX3ByaW50ZihmbXQpCkBAIC04MSw2ICs4NCwxNSBAQAogewogCXBwY19tZC5pbml0X0lSUSAgICAgICA9IGlpY19pbml0X0lSUTsKIAlwcGNfbWQuZ2V0X2lycSAgICAgICAgPSBpaWNfZ2V0X2lycTsKKyNpZmRlZiBDT05GSUdfU1BVX0JBU0UKKwlzcHVfcHJpdjFfb3BzICAgICAgICAgPSAmc3B1X3ByaXYxX21taW9fb3BzOworI2VuZGlmCisKKwljYmVfcmVnc19pbml0KCk7CisKKyNpZmRlZiBDT05GSUdfQ0JFX1JBUworCWNiZV9yYXNfaW5pdCgpOworI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfU01QCiAJc21wX2luaXRfY2VsbCgpOwpAQCAtOTgsNyArMTEwLDcgQEAKIAlpbml0X3BjaV9jb25maWdfdG9rZW5zKCk7CiAJZmluZF9hbmRfaW5pdF9waGJzKCk7CiAJc3BpZGVyX2luaXRfSVJRKCk7Ci0JY2VsbF9wZXJ2YXNpdmVfaW5pdCgpOworCWNiZV9wZXJ2YXNpdmVfaW5pdCgpOwogI2lmZGVmIENPTkZJR19EVU1NWV9DT05TT0xFCiAJY29uc3dpdGNocCA9ICZkdW1teV9jb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfYmFzZS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9iYXNlLmMKaW5kZXggYWQxNDFmZS4uZGI4MmY1MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9iYXNlLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9iYXNlLmMKQEAgLTM0LDEwICszNCwxNSBAQAogI2luY2x1ZGUgPGFzbS9wcm9tLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxhc20vc3B1Lmg+CisjaW5jbHVkZSA8YXNtL3NwdV9wcml2MS5oPgogI2luY2x1ZGUgPGFzbS9tbXVfY29udGV4dC5oPgogCiAjaW5jbHVkZSAiaW50ZXJydXB0LmgiCiAKK2NvbnN0IHN0cnVjdCBzcHVfcHJpdjFfb3BzICpzcHVfcHJpdjFfb3BzOworCitFWFBPUlRfU1lNQk9MX0dQTChzcHVfcHJpdjFfb3BzKTsKKwogc3RhdGljIGludCBfX3NwdV90cmFwX2ludmFsaWRfZG1hKHN0cnVjdCBzcHUgKnNwdSkKIHsKIAlwcl9kZWJ1ZygiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CkBAIC03MSw3ICs3Niw3IEBACiB7CiAJc3RydWN0IHNwdV9wcml2MiBfX2lvbWVtICpwcml2MiA9IHNwdS0+cHJpdjI7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBzcHUtPm1tOwotCXU2NCBlc2lkLCB2c2lkOworCXU2NCBlc2lkLCB2c2lkLCBsbHA7CiAKIAlwcl9kZWJ1ZygiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CiAKQEAgLTkxLDkgKzk2LDE0IEBACiAJfQogCiAJZXNpZCA9IChlYSAmIEVTSURfTUFTSykgfCBTTEJfRVNJRF9WOwotCXZzaWQgPSAoZ2V0X3ZzaWQobW0tPmNvbnRleHQuaWQsIGVhKSA8PCBTTEJfVlNJRF9TSElGVCkgfCBTTEJfVlNJRF9VU0VSOworI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAlpZiAoaW5faHVnZXBhZ2VfYXJlYShtbS0+Y29udGV4dCwgZWEpKQotCQl2c2lkIHw9IFNMQl9WU0lEX0w7CisJCWxscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV9odWdlX3BzaXplXS5zbGxwOworCWVsc2UKKyNlbmRpZgorCQlsbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfdmlydHVhbF9wc2l6ZV0uc2xscDsKKwl2c2lkID0gKGdldF92c2lkKG1tLT5jb250ZXh0LmlkLCBlYSkgPDwgU0xCX1ZTSURfU0hJRlQpIHwKKwkJCVNMQl9WU0lEX1VTRVIgfCBsbHA7CiAKIAlvdXRfYmU2NCgmcHJpdjItPnNsYl9pbmRleF9XLCBzcHUtPnNsYl9yZXBsYWNlKTsKIAlvdXRfYmU2NCgmcHJpdjItPnNsYl92c2lkX1JXLCB2c2lkKTsKQEAgLTEzMCw1NyArMTQwLDcgQEAKIAlzcHUtPmRhciA9IGVhOwogCXNwdS0+ZHNpc3IgPSBkc2lzcjsKIAltYigpOwotCWlmIChzcHUtPnN0b3BfY2FsbGJhY2spCi0JCXNwdS0+c3RvcF9jYWxsYmFjayhzcHUpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IF9fc3B1X3RyYXBfbWFpbGJveChzdHJ1Y3Qgc3B1ICpzcHUpCi17Ci0JaWYgKHNwdS0+aWJveF9jYWxsYmFjaykKLQkJc3B1LT5pYm94X2NhbGxiYWNrKHNwdSk7Ci0KLQkvKiBhdG9taWNhbGx5IGRpc2FibGUgU1BVIG1haWxib3ggaW50ZXJydXB0cyAqLwotCXNwaW5fbG9jaygmc3B1LT5yZWdpc3Rlcl9sb2NrKTsKLQlzcHVfaW50X21hc2tfYW5kKHNwdSwgMiwgfjB4MSk7Ci0Jc3Bpbl91bmxvY2soJnNwdS0+cmVnaXN0ZXJfbG9jayk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX19zcHVfdHJhcF9zdG9wKHN0cnVjdCBzcHUgKnNwdSkKLXsKLQlwcl9kZWJ1ZygiJXNcbiIsIF9fRlVOQ1RJT05fXyk7Ci0Jc3B1LT5zdG9wX2NvZGUgPSBpbl9iZTMyKCZzcHUtPnByb2JsZW0tPnNwdV9zdGF0dXNfUik7Ci0JaWYgKHNwdS0+c3RvcF9jYWxsYmFjaykKLQkJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX19zcHVfdHJhcF9oYWx0KHN0cnVjdCBzcHUgKnNwdSkKLXsKLQlwcl9kZWJ1ZygiJXNcbiIsIF9fRlVOQ1RJT05fXyk7Ci0Jc3B1LT5zdG9wX2NvZGUgPSBpbl9iZTMyKCZzcHUtPnByb2JsZW0tPnNwdV9zdGF0dXNfUik7Ci0JaWYgKHNwdS0+c3RvcF9jYWxsYmFjaykKLQkJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX19zcHVfdHJhcF90YWdfZ3JvdXAoc3RydWN0IHNwdSAqc3B1KQotewotCXByX2RlYnVnKCIlc1xuIiwgX19GVU5DVElPTl9fKTsKLQlzcHUtPm1mY19jYWxsYmFjayhzcHUpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IF9fc3B1X3RyYXBfc3B1Ym94KHN0cnVjdCBzcHUgKnNwdSkKLXsKLQlpZiAoc3B1LT53Ym94X2NhbGxiYWNrKQotCQlzcHUtPndib3hfY2FsbGJhY2soc3B1KTsKLQotCS8qIGF0b21pY2FsbHkgZGlzYWJsZSBTUFUgbWFpbGJveCBpbnRlcnJ1cHRzICovCi0Jc3Bpbl9sb2NrKCZzcHUtPnJlZ2lzdGVyX2xvY2spOwotCXNwdV9pbnRfbWFza19hbmQoc3B1LCAyLCB+MHgxMCk7Ci0Jc3Bpbl91bmxvY2soJnNwdS0+cmVnaXN0ZXJfbG9jayk7CisJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5MSw4ICsxNTEsNyBAQAogCiAJc3B1ID0gZGF0YTsKIAlzcHUtPmNsYXNzXzBfcGVuZGluZyA9IDE7Ci0JaWYgKHNwdS0+c3RvcF9jYWxsYmFjaykKLQkJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7CisJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7CiAKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CkBAIC0yNzAsMjkgKzIyOSwzOCBAQAogCXVuc2lnbmVkIGxvbmcgbWFzazsKIAogCXNwdSA9IGRhdGE7CisJc3Bpbl9sb2NrKCZzcHUtPnJlZ2lzdGVyX2xvY2spOwogCXN0YXQgPSBzcHVfaW50X3N0YXRfZ2V0KHNwdSwgMik7CiAJbWFzayA9IHNwdV9pbnRfbWFza19nZXQoc3B1LCAyKTsKKwkvKiBpZ25vcmUgaW50ZXJydXB0cyB3ZSdyZSBub3Qgd2FpdGluZyBmb3IgKi8KKwlzdGF0ICY9IG1hc2s7CisJLyoKKwkgKiBtYWlsYm94IGludGVycnVwdHMgKDB4MSBhbmQgMHgxMCkgYXJlIGxldmVsIHRyaWdnZXJlZC4KKwkgKiBtYXNrIHRoZW0gbm93IGJlZm9yZSBhY2tub3dsZWRnaW5nLgorCSAqLworCWlmIChzdGF0ICYgMHgxMSkKKwkJc3B1X2ludF9tYXNrX2FuZChzcHUsIDIsIH4oc3RhdCAmIDB4MTEpKTsKKwkvKiBhY2tub3dsZWRnZSBhbGwgaW50ZXJydXB0cyBiZWZvcmUgdGhlIGNhbGxiYWNrcyAqLworCXNwdV9pbnRfc3RhdF9jbGVhcihzcHUsIDIsIHN0YXQpOworCXNwaW5fdW5sb2NrKCZzcHUtPnJlZ2lzdGVyX2xvY2spOwogCiAJcHJfZGVidWcoImNsYXNzIDIgaW50ZXJydXB0ICVkLCAlbHgsICVseFxuIiwgaXJxLCBzdGF0LCBtYXNrKTsKIAotCXN0YXQgJj0gbWFzazsKLQogCWlmIChzdGF0ICYgMSkgIC8qIFBQQyBjb3JlIG1haWxib3ggKi8KLQkJX19zcHVfdHJhcF9tYWlsYm94KHNwdSk7CisJCXNwdS0+aWJveF9jYWxsYmFjayhzcHUpOwogCiAJaWYgKHN0YXQgJiAyKSAvKiBTUFUgc3RvcC1hbmQtc2lnbmFsICovCi0JCV9fc3B1X3RyYXBfc3RvcChzcHUpOworCQlzcHUtPnN0b3BfY2FsbGJhY2soc3B1KTsKIAogCWlmIChzdGF0ICYgNCkgLyogU1BVIGhhbHRlZCAqLwotCQlfX3NwdV90cmFwX2hhbHQoc3B1KTsKKwkJc3B1LT5zdG9wX2NhbGxiYWNrKHNwdSk7CiAKIAlpZiAoc3RhdCAmIDgpIC8qIERNQSB0YWcgZ3JvdXAgY29tcGxldGUgKi8KLQkJX19zcHVfdHJhcF90YWdfZ3JvdXAoc3B1KTsKKwkJc3B1LT5tZmNfY2FsbGJhY2soc3B1KTsKIAogCWlmIChzdGF0ICYgMHgxMCkgLyogU1BVIG1haWxib3ggdGhyZXNob2xkICovCi0JCV9fc3B1X3RyYXBfc3B1Ym94KHNwdSk7CisJCXNwdS0+d2JveF9jYWxsYmFjayhzcHUpOwogCi0Jc3B1X2ludF9zdGF0X2NsZWFyKHNwdSwgMiwgc3RhdCk7CiAJcmV0dXJuIHN0YXQgPyBJUlFfSEFORExFRCA6IElSUV9OT05FOwogfQogCkBAIC01MTIsMTQgKzQ4MCw2IEBACiAJcmV0dXJuIHJldDsKIH0KIAotdm9pZCBzcHVfaXJxX3NldGFmZmluaXR5KHN0cnVjdCBzcHUgKnNwdSwgaW50IGNwdSkKLXsKLQl1NjQgdGFyZ2V0ID0gaWljX2dldF90YXJnZXRfaWQoY3B1KTsKLQl1NjQgcm91dGUgPSB0YXJnZXQgPDwgNDggfCB0YXJnZXQgPDwgMzIgfCB0YXJnZXQgPDwgMTY7Ci0Jc3B1X2ludF9yb3V0ZV9zZXQoc3B1LCByb3V0ZSk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChzcHVfaXJxX3NldGFmZmluaXR5KTsKLQogc3RhdGljIGludCBfX2luaXQgZmluZF9zcHVfbm9kZV9pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKnNwZSkKIHsKIAl1bnNpZ25lZCBpbnQgKmlkOwpAQCAtNjQ5LDYgKzYwOSw0NiBAQAogCXJldHVybiByZXQ7CiB9CiAKK3N0cnVjdCBzeXNkZXZfY2xhc3Mgc3B1X3N5c2Rldl9jbGFzcyA9IHsKKwlzZXRfa3NldF9uYW1lKCJzcHUiKQorfTsKKworc3RhdGljIHNzaXplX3Qgc3B1X3Nob3dfaXNyYyhzdHJ1Y3Qgc3lzX2RldmljZSAqc3lzZGV2LCBjaGFyICpidWYpCit7CisJc3RydWN0IHNwdSAqc3B1ID0gY29udGFpbmVyX29mKHN5c2Rldiwgc3RydWN0IHNwdSwgc3lzZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgc3B1LT5pc3JjKTsKKworfQorc3RhdGljIFNZU0RFVl9BVFRSKGlzcmMsIDA0MDAsIHNwdV9zaG93X2lzcmMsIE5VTEwpOworCitleHRlcm4gaW50IGF0dGFjaF9zeXNkZXZfdG9fbm9kZShzdHJ1Y3Qgc3lzX2RldmljZSAqZGV2LCBpbnQgbmlkKTsKKworc3RhdGljIGludCBzcHVfY3JlYXRlX3N5c2RldihzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJaW50IHJldDsKKworCXNwdS0+c3lzZGV2LmlkID0gc3B1LT5udW1iZXI7CisJc3B1LT5zeXNkZXYuY2xzID0gJnNwdV9zeXNkZXZfY2xhc3M7CisJcmV0ID0gc3lzZGV2X3JlZ2lzdGVyKCZzcHUtPnN5c2Rldik7CisJaWYgKHJldCkgeworCQlwcmludGsoS0VSTl9FUlIgIkNhbid0IHJlZ2lzdGVyIFNQVSAlZCB3aXRoIHN5c2ZzXG4iLAorCQkJCXNwdS0+bnVtYmVyKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzeXNkZXZfY3JlYXRlX2ZpbGUoJnNwdS0+c3lzZGV2LCAmYXR0cl9pc3JjKTsKKwlzeXNmc19hZGRfZGV2aWNlX3RvX25vZGUoJnNwdS0+c3lzZGV2LCBzcHUtPm5pZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc3B1X2Rlc3Ryb3lfc3lzZGV2KHN0cnVjdCBzcHUgKnNwdSkKK3sKKwlzeXNkZXZfcmVtb3ZlX2ZpbGUoJnNwdS0+c3lzZGV2LCAmYXR0cl9pc3JjKTsKKwlzeXNmc19yZW1vdmVfZGV2aWNlX2Zyb21fbm9kZSgmc3B1LT5zeXNkZXYsIHNwdS0+bmlkKTsKKwlzeXNkZXZfdW5yZWdpc3Rlcigmc3B1LT5zeXNkZXYpOworfQorCiBzdGF0aWMgaW50IF9faW5pdCBjcmVhdGVfc3B1KHN0cnVjdCBkZXZpY2Vfbm9kZSAqc3BlKQogewogCXN0cnVjdCBzcHUgKnNwdTsKQEAgLTY1Niw3ICs2NTYsNyBAQAogCXN0YXRpYyBpbnQgbnVtYmVyOwogCiAJcmV0ID0gLUVOT01FTTsKLQlzcHUgPSBrbWFsbG9jKHNpemVvZiAoKnNwdSksIEdGUF9LRVJORUwpOworCXNwdSA9IGt6YWxsb2Moc2l6ZW9mICgqc3B1KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzcHUpCiAJCWdvdG8gb3V0OwogCkBAIC02NjgsMzMgKzY2OCwyMCBAQAogCXNwdS0+bmlkID0gb2Zfbm9kZV90b19uaWQoc3BlKTsKIAlpZiAoc3B1LT5uaWQgPT0gLTEpCiAJCXNwdS0+bmlkID0gMDsKLQotCXNwdS0+c3RvcF9jb2RlID0gMDsKLQlzcHUtPnNsYl9yZXBsYWNlID0gMDsKLQlzcHUtPm1tID0gTlVMTDsKLQlzcHUtPmN0eCA9IE5VTEw7Ci0Jc3B1LT5ycSA9IE5VTEw7Ci0Jc3B1LT5waWQgPSAwOwotCXNwdS0+Y2xhc3NfMF9wZW5kaW5nID0gMDsKLQlzcHUtPmZsYWdzID0gMFVMOwotCXNwdS0+ZGFyID0gMFVMOwotCXNwdS0+ZHNpc3IgPSAwVUw7CiAJc3Bpbl9sb2NrX2luaXQoJnNwdS0+cmVnaXN0ZXJfbG9jayk7Ci0KIAlzcHVfbWZjX3Nkcl9zZXQoc3B1LCBtZnNwcihTUFJOX1NEUjEpKTsKIAlzcHVfbWZjX3NyMV9zZXQoc3B1LCAweDMzKTsKLQotCXNwdS0+aWJveF9jYWxsYmFjayA9IE5VTEw7Ci0Jc3B1LT53Ym94X2NhbGxiYWNrID0gTlVMTDsKLQlzcHUtPnN0b3BfY2FsbGJhY2sgPSBOVUxMOwotCXNwdS0+bWZjX2NhbGxiYWNrID0gTlVMTDsKLQogCW11dGV4X2xvY2soJnNwdV9tdXRleCk7CisKIAlzcHUtPm51bWJlciA9IG51bWJlcisrOwogCXJldCA9IHNwdV9yZXF1ZXN0X2lycXMoc3B1KTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bm1hcDsKIAorCXJldCA9IHNwdV9jcmVhdGVfc3lzZGV2KHNwdSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZnJlZV9pcnFzOworCiAJbGlzdF9hZGQoJnNwdS0+bGlzdCwgJnNwdV9saXN0KTsKIAltdXRleF91bmxvY2soJnNwdV9tdXRleCk7CiAKQEAgLTcwMyw2ICs2OTAsOSBAQAogCQlzcHUtPnByb2JsZW0sIHNwdS0+cHJpdjEsIHNwdS0+cHJpdjIsIHNwdS0+bnVtYmVyKTsKIAlnb3RvIG91dDsKIAorb3V0X2ZyZWVfaXJxczoKKwlzcHVfZnJlZV9pcnFzKHNwdSk7CisKIG91dF91bm1hcDoKIAltdXRleF91bmxvY2soJnNwdV9tdXRleCk7CiAJc3B1X3VubWFwKHNwdSk7CkBAIC03MTYsNiArNzA2LDcgQEAKIHsKIAlsaXN0X2RlbF9pbml0KCZzcHUtPmxpc3QpOwogCisJc3B1X2Rlc3Ryb3lfc3lzZGV2KHNwdSk7CiAJc3B1X2ZyZWVfaXJxcyhzcHUpOwogCXNwdV91bm1hcChzcHUpOwogCWtmcmVlKHNwdSk7CkBAIC03MjgsNiArNzE5LDcgQEAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3B1LCB0bXAsICZzcHVfbGlzdCwgbGlzdCkKIAkJZGVzdHJveV9zcHUoc3B1KTsKIAltdXRleF91bmxvY2soJnNwdV9tdXRleCk7CisJc3lzZGV2X2NsYXNzX3VucmVnaXN0ZXIoJnNwdV9zeXNkZXZfY2xhc3MpOwogfQogbW9kdWxlX2V4aXQoY2xlYW51cF9zcHVfYmFzZSk7CiAKQEAgLTczNiw2ICs3MjgsMTEgQEAKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7CiAJaW50IHJldDsKIAorCS8qIGNyZWF0ZSBzeXNkZXYgY2xhc3MgZm9yIHNwdXMgKi8KKwlyZXQgPSBzeXNkZXZfY2xhc3NfcmVnaXN0ZXIoJnNwdV9zeXNkZXZfY2xhc3MpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlyZXQgPSAtRU5PREVWOwogCWZvciAobm9kZSA9IG9mX2ZpbmRfbm9kZV9ieV90eXBlKE5VTEwsICJzcGUiKTsKIAkJCW5vZGU7IG5vZGUgPSBvZl9maW5kX25vZGVfYnlfdHlwZShub2RlLCAic3BlIikpIHsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfY2FsbGJhY2tzLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1X2NhbGxiYWNrcy5jCmluZGV4IGI0N2ZjYzUuLjQ3ZWMzYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfY2FsbGJhY2tzLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9jYWxsYmFja3MuYwpAQCAtMzQsMzA3ICszNCwxOSBAQAogICovCiAKIHZvaWQgKnNwdV9zeXNjYWxsX3RhYmxlW10gPSB7Ci0JW19fTlJfcmVzdGFydF9zeXNjYWxsXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19yZXN0YXJ0X3N5c2NhbGwgKi8KLQlbX19OUl9leGl0XQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfZXhpdCAqLwotCVtfX05SX2ZvcmtdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHBwY19mb3JrICovCi0JW19fTlJfcmVhZF0JCQlzeXNfcmVhZCwKLQlbX19OUl93cml0ZV0JCQlzeXNfd3JpdGUsCi0JW19fTlJfb3Blbl0JCQlzeXNfb3BlbiwKLQlbX19OUl9jbG9zZV0JCQlzeXNfY2xvc2UsCi0JW19fTlJfd2FpdHBpZF0JCQlzeXNfd2FpdHBpZCwKLQlbX19OUl9jcmVhdF0JCQlzeXNfY3JlYXQsCi0JW19fTlJfbGlua10JCQlzeXNfbGluaywKLQlbX19OUl91bmxpbmtdCQkJc3lzX3VubGluaywKLQlbX19OUl9leGVjdmVdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19leGVjdmUgKi8KLQlbX19OUl9jaGRpcl0JCQlzeXNfY2hkaXIsCi0JW19fTlJfdGltZV0JCQlzeXNfdGltZSwKLQlbX19OUl9ta25vZF0JCQlzeXNfbWtub2QsCi0JW19fTlJfY2htb2RdCQkJc3lzX2NobW9kLAotCVtfX05SX2xjaG93bl0JCQlzeXNfbGNob3duLAotCVtfX05SX2JyZWFrXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX29sZHN0YXRdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfbHNlZWtdCQkJc3lzX2xzZWVrLAotCVtfX05SX2dldHBpZF0JCQlzeXNfZ2V0cGlkLAotCVtfX05SX21vdW50XQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfbW91bnQgKi8KLQlbX19OUl91bW91bnRdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfc2V0dWlkXQkJCXN5c19zZXR1aWQsCi0JW19fTlJfZ2V0dWlkXQkJCXN5c19nZXR1aWQsCi0JW19fTlJfc3RpbWVdCQkJc3lzX3N0aW1lLAotCVtfX05SX3B0cmFjZV0JCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3B0cmFjZSAqLwotCVtfX05SX2FsYXJtXQkJCXN5c19hbGFybSwKLQlbX19OUl9vbGRmc3RhdF0JCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9wYXVzZV0JCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3BhdXNlICovCi0JW19fTlJfdXRpbWVdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c191dGltZSAqLwotCVtfX05SX3N0dHldCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfZ3R0eV0JCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9hY2Nlc3NdCQkJc3lzX2FjY2VzcywKLQlbX19OUl9uaWNlXQkJCXN5c19uaWNlLAotCVtfX05SX2Z0aW1lXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3N5bmNdCQkJc3lzX3N5bmMsCi0JW19fTlJfa2lsbF0JCQlzeXNfa2lsbCwKLQlbX19OUl9yZW5hbWVdCQkJc3lzX3JlbmFtZSwKLQlbX19OUl9ta2Rpcl0JCQlzeXNfbWtkaXIsCi0JW19fTlJfcm1kaXJdCQkJc3lzX3JtZGlyLAotCVtfX05SX2R1cF0JCQlzeXNfZHVwLAotCVtfX05SX3BpcGVdCQkJc3lzX3BpcGUsCi0JW19fTlJfdGltZXNdCQkJc3lzX3RpbWVzLAotCVtfX05SX3Byb2ZdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfYnJrXQkJCXN5c19icmssCi0JW19fTlJfc2V0Z2lkXQkJCXN5c19zZXRnaWQsCi0JW19fTlJfZ2V0Z2lkXQkJCXN5c19nZXRnaWQsCi0JW19fTlJfc2lnbmFsXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfc2lnbmFsICovCi0JW19fTlJfZ2V0ZXVpZF0JCQlzeXNfZ2V0ZXVpZCwKLQlbX19OUl9nZXRlZ2lkXQkJCXN5c19nZXRlZ2lkLAotCVtfX05SX2FjY3RdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19hY2N0ICovCi0JW19fTlJfdW1vdW50Ml0JCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3Vtb3VudCAqLwotCVtfX05SX2xvY2tdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfaW9jdGxdCQkJc3lzX2lvY3RsLAotCVtfX05SX2ZjbnRsXQkJCXN5c19mY250bCwKLQlbX19OUl9tcHhdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfc2V0cGdpZF0JCQlzeXNfc2V0cGdpZCwKLQlbX19OUl91bGltaXRdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfb2xkb2xkdW5hbWVdCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl91bWFza10JCQlzeXNfdW1hc2ssCi0JW19fTlJfY2hyb290XQkJCXN5c19jaHJvb3QsCi0JW19fTlJfdXN0YXRdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c191c3RhdCAqLwotCVtfX05SX2R1cDJdCQkJc3lzX2R1cDIsCi0JW19fTlJfZ2V0cHBpZF0JCQlzeXNfZ2V0cHBpZCwKLQlbX19OUl9nZXRwZ3JwXQkJCXN5c19nZXRwZ3JwLAotCVtfX05SX3NldHNpZF0JCQlzeXNfc2V0c2lkLAotCVtfX05SX3NpZ2FjdGlvbl0JCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3NnZXRtYXNrXQkJCXN5c19zZ2V0bWFzaywKLQlbX19OUl9zc2V0bWFza10JCQlzeXNfc3NldG1hc2ssCi0JW19fTlJfc2V0cmV1aWRdCQkJc3lzX3NldHJldWlkLAotCVtfX05SX3NldHJlZ2lkXQkJCXN5c19zZXRyZWdpZCwKLQlbX19OUl9zaWdzdXNwZW5kXQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfc2lncGVuZGluZ10JCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3NldGhvc3RuYW1lXQkJc3lzX3NldGhvc3RuYW1lLAotCVtfX05SX3NldHJsaW1pdF0JCXN5c19zZXRybGltaXQsCi0JW19fTlJfZ2V0cmxpbWl0XQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfZ2V0cnVzYWdlXQkJc3lzX2dldHJ1c2FnZSwKLQlbX19OUl9nZXR0aW1lb2ZkYXldCQlzeXNfZ2V0dGltZW9mZGF5LAotCVtfX05SX3NldHRpbWVvZmRheV0JCXN5c19zZXR0aW1lb2ZkYXksCi0JW19fTlJfZ2V0Z3JvdXBzXQkJc3lzX2dldGdyb3VwcywKLQlbX19OUl9zZXRncm91cHNdCQlzeXNfc2V0Z3JvdXBzLAotCVtfX05SX3NlbGVjdF0JCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9zeW1saW5rXQkJCXN5c19zeW1saW5rLAotCVtfX05SX29sZGxzdGF0XQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3JlYWRsaW5rXQkJCXN5c19yZWFkbGluaywKLQlbX19OUl91c2VsaWJdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c191c2VsaWIgKi8KLQlbX19OUl9zd2Fwb25dCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19zd2Fwb24gKi8KLQlbX19OUl9yZWJvb3RdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19yZWJvb3QgKi8KLQlbX19OUl9yZWFkZGlyXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX21tYXBdCQkJc3lzX21tYXAsCi0JW19fTlJfbXVubWFwXQkJCXN5c19tdW5tYXAsCi0JW19fTlJfdHJ1bmNhdGVdCQkJc3lzX3RydW5jYXRlLAotCVtfX05SX2Z0cnVuY2F0ZV0JCXN5c19mdHJ1bmNhdGUsCi0JW19fTlJfZmNobW9kXQkJCXN5c19mY2htb2QsCi0JW19fTlJfZmNob3duXQkJCXN5c19mY2hvd24sCi0JW19fTlJfZ2V0cHJpb3JpdHldCQlzeXNfZ2V0cHJpb3JpdHksCi0JW19fTlJfc2V0cHJpb3JpdHldCQlzeXNfc2V0cHJpb3JpdHksCi0JW19fTlJfcHJvZmlsXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3N0YXRmc10JCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3N0YXRmcyAqLwotCVtfX05SX2ZzdGF0ZnNdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19mc3RhdGZzICovCi0JW19fTlJfaW9wZXJtXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3NvY2tldGNhbGxdCQlzeXNfc29ja2V0Y2FsbCwKLQlbX19OUl9zeXNsb2ddCQkJc3lzX3N5c2xvZywKLQlbX19OUl9zZXRpdGltZXJdCQlzeXNfc2V0aXRpbWVyLAotCVtfX05SX2dldGl0aW1lcl0JCXN5c19nZXRpdGltZXIsCi0JW19fTlJfc3RhdF0JCQlzeXNfbmV3c3RhdCwKLQlbX19OUl9sc3RhdF0JCQlzeXNfbmV3bHN0YXQsCi0JW19fTlJfZnN0YXRdCQkJc3lzX25ld2ZzdGF0LAotCVtfX05SX29sZHVuYW1lXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX2lvcGxdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfdmhhbmd1cF0JCQlzeXNfdmhhbmd1cCwKLQlbX19OUl9pZGxlXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3ZtODZdCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfd2FpdDRdCQkJc3lzX3dhaXQ0LAotCVtfX05SX3N3YXBvZmZdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19zd2Fwb2ZmICovCi0JW19fTlJfc3lzaW5mb10JCQlzeXNfc3lzaW5mbywKLQlbX19OUl9pcGNdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19pcGMgKi8KLQlbX19OUl9mc3luY10JCQlzeXNfZnN5bmMsCi0JW19fTlJfc2lncmV0dXJuXQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfY2xvbmVdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHBwY19jbG9uZSAqLwotCVtfX05SX3NldGRvbWFpbm5hbWVdCQlzeXNfc2V0ZG9tYWlubmFtZSwKLQlbX19OUl91bmFtZV0JCQlwcGNfbmV3dW5hbWUsCi0JW19fTlJfbW9kaWZ5X2xkdF0JCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX2FkanRpbWV4XQkJCXN5c19hZGp0aW1leCwKLQlbX19OUl9tcHJvdGVjdF0JCQlzeXNfbXByb3RlY3QsCi0JW19fTlJfc2lncHJvY21hc2tdCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9jcmVhdGVfbW9kdWxlXQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfaW5pdF9tb2R1bGVdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX2luaXRfbW9kdWxlICovCi0JW19fTlJfZGVsZXRlX21vZHVsZV0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfZGVsZXRlX21vZHVsZSAqLwotCVtfX05SX2dldF9rZXJuZWxfc3ltc10JCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3F1b3RhY3RsXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfcXVvdGFjdGwgKi8KLQlbX19OUl9nZXRwZ2lkXQkJCXN5c19nZXRwZ2lkLAotCVtfX05SX2ZjaGRpcl0JCQlzeXNfZmNoZGlyLAotCVtfX05SX2JkZmx1c2hdCQkJc3lzX2JkZmx1c2gsCi0JW19fTlJfc3lzZnNdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19zeXNmcyAqLwotCVtfX05SX3BlcnNvbmFsaXR5XQkJcHBjNjRfcGVyc29uYWxpdHksCi0JW19fTlJfYWZzX3N5c2NhbGxdCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9zZXRmc3VpZF0JCQlzeXNfc2V0ZnN1aWQsCi0JW19fTlJfc2V0ZnNnaWRdCQkJc3lzX3NldGZzZ2lkLAotCVtfX05SX19sbHNlZWtdCQkJc3lzX2xsc2VlaywKLQlbX19OUl9nZXRkZW50c10JCQlzeXNfZ2V0ZGVudHMsCi0JW19fTlJfX25ld3NlbGVjdF0JCXN5c19zZWxlY3QsCi0JW19fTlJfZmxvY2tdCQkJc3lzX2Zsb2NrLAotCVtfX05SX21zeW5jXQkJCXN5c19tc3luYywKLQlbX19OUl9yZWFkdl0JCQlzeXNfcmVhZHYsCi0JW19fTlJfd3JpdGV2XQkJCXN5c193cml0ZXYsCi0JW19fTlJfZ2V0c2lkXQkJCXN5c19nZXRzaWQsCi0JW19fTlJfZmRhdGFzeW5jXQkJc3lzX2ZkYXRhc3luYywKLQlbX19OUl9fc3lzY3RsXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfc3lzY3RsICovCi0JW19fTlJfbWxvY2tdCQkJc3lzX21sb2NrLAotCVtfX05SX211bmxvY2tdCQkJc3lzX211bmxvY2ssCi0JW19fTlJfbWxvY2thbGxdCQkJc3lzX21sb2NrYWxsLAotCVtfX05SX211bmxvY2thbGxdCQlzeXNfbXVubG9ja2FsbCwKLQlbX19OUl9zY2hlZF9zZXRwYXJhbV0JCXN5c19zY2hlZF9zZXRwYXJhbSwKLQlbX19OUl9zY2hlZF9nZXRwYXJhbV0JCXN5c19zY2hlZF9nZXRwYXJhbSwKLQlbX19OUl9zY2hlZF9zZXRzY2hlZHVsZXJdCXN5c19zY2hlZF9zZXRzY2hlZHVsZXIsCi0JW19fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyXQlzeXNfc2NoZWRfZ2V0c2NoZWR1bGVyLAotCVtfX05SX3NjaGVkX3lpZWxkXQkJc3lzX3NjaGVkX3lpZWxkLAotCVtfX05SX3NjaGVkX2dldF9wcmlvcml0eV9tYXhdCXN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LAotCVtfX05SX3NjaGVkX2dldF9wcmlvcml0eV9taW5dCXN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLAotCVtfX05SX3NjaGVkX3JyX2dldF9pbnRlcnZhbF0Jc3lzX3NjaGVkX3JyX2dldF9pbnRlcnZhbCwKLQlbX19OUl9uYW5vc2xlZXBdCQlzeXNfbmFub3NsZWVwLAotCVtfX05SX21yZW1hcF0JCQlzeXNfbXJlbWFwLAotCVtfX05SX3NldHJlc3VpZF0JCXN5c19zZXRyZXN1aWQsCi0JW19fTlJfZ2V0cmVzdWlkXQkJc3lzX2dldHJlc3VpZCwKLQlbX19OUl9xdWVyeV9tb2R1bGVdCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9wb2xsXQkJCXN5c19wb2xsLAotCVtfX05SX25mc3NlcnZjdGxdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX25mc3NlcnZjdGwgKi8KLQlbX19OUl9zZXRyZXNnaWRdCQlzeXNfc2V0cmVzZ2lkLAotCVtfX05SX2dldHJlc2dpZF0JCXN5c19nZXRyZXNnaWQsCi0JW19fTlJfcHJjdGxdCQkJc3lzX3ByY3RsLAotCVtfX05SX3J0X3NpZ3JldHVybl0JCXN5c19uaV9zeXNjYWxsLCAvKiBwcGM2NF9ydF9zaWdyZXR1cm4gKi8KLQlbX19OUl9ydF9zaWdhY3Rpb25dCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3J0X3NpZ2FjdGlvbiAqLwotCVtfX05SX3J0X3NpZ3Byb2NtYXNrXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19ydF9zaWdwcm9jbWFzayAqLwotCVtfX05SX3J0X3NpZ3BlbmRpbmddCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3J0X3NpZ3BlbmRpbmcgKi8KLQlbX19OUl9ydF9zaWd0aW1lZHdhaXRdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3J0X3NpZ3RpbWVkd2FpdCAqLwotCVtfX05SX3J0X3NpZ3F1ZXVlaW5mb10JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfcnRfc2lncXVldWVpbmZvICovCi0JW19fTlJfcnRfc2lnc3VzcGVuZF0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfcnRfc2lnc3VzcGVuZCAqLwotCVtfX05SX3ByZWFkNjRdCQkJc3lzX3ByZWFkNjQsCi0JW19fTlJfcHdyaXRlNjRdCQkJc3lzX3B3cml0ZTY0LAotCVtfX05SX2Nob3duXQkJCXN5c19jaG93biwKLQlbX19OUl9nZXRjd2RdCQkJc3lzX2dldGN3ZCwKLQlbX19OUl9jYXBnZXRdCQkJc3lzX2NhcGdldCwKLQlbX19OUl9jYXBzZXRdCQkJc3lzX2NhcHNldCwKLQlbX19OUl9zaWdhbHRzdGFja10JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfc2lnYWx0c3RhY2sgKi8KLQlbX19OUl9zZW5kZmlsZV0JCQlzeXNfc2VuZGZpbGU2NCwKLQlbX19OUl9nZXRwbXNnXQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX3B1dHBtc2ddCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfdmZvcmtdCQkJc3lzX25pX3N5c2NhbGwsIC8qIHBwY192Zm9yayAqLwotCVtfX05SX3VnZXRybGltaXRdCQlzeXNfZ2V0cmxpbWl0LAotCVtfX05SX3JlYWRhaGVhZF0JCXN5c19yZWFkYWhlYWQsCi0JWzE5Ml0JCQkJc3lzX25pX3N5c2NhbGwsCi0JWzE5M10JCQkJc3lzX25pX3N5c2NhbGwsCi0JWzE5NF0JCQkJc3lzX25pX3N5c2NhbGwsCi0JWzE5NV0JCQkJc3lzX25pX3N5c2NhbGwsCi0JWzE5Nl0JCQkJc3lzX25pX3N5c2NhbGwsCi0JWzE5N10JCQkJc3lzX25pX3N5c2NhbGwsCi0JW19fTlJfcGNpY29uZmlnX3JlYWRdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3BjaWNvbmZpZ19yZWFkICovCi0JW19fTlJfcGNpY29uZmlnX3dyaXRlXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19wY2ljb25maWdfd3JpdGUgKi8KLQlbX19OUl9wY2ljb25maWdfaW9iYXNlXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19wY2ljb25maWdfaW9iYXNlICovCi0JW19fTlJfbXVsdGlwbGV4ZXJdCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9nZXRkZW50czY0XQkJc3lzX2dldGRlbnRzNjQsCi0JW19fTlJfcGl2b3Rfcm9vdF0JCXN5c19waXZvdF9yb290LAotCVsyMDRdCQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX21hZHZpc2VdCQkJc3lzX21hZHZpc2UsCi0JW19fTlJfbWluY29yZV0JCQlzeXNfbWluY29yZSwKLQlbX19OUl9nZXR0aWRdCQkJc3lzX2dldHRpZCwKLQlbX19OUl90a2lsbF0JCQlzeXNfdGtpbGwsCi0JW19fTlJfc2V0eGF0dHJdCQkJc3lzX3NldHhhdHRyLAotCVtfX05SX2xzZXR4YXR0cl0JCXN5c19sc2V0eGF0dHIsCi0JW19fTlJfZnNldHhhdHRyXQkJc3lzX2ZzZXR4YXR0ciwKLQlbX19OUl9nZXR4YXR0cl0JCQlzeXNfZ2V0eGF0dHIsCi0JW19fTlJfbGdldHhhdHRyXQkJc3lzX2xnZXR4YXR0ciwKLQlbX19OUl9mZ2V0eGF0dHJdCQlzeXNfZmdldHhhdHRyLAotCVtfX05SX2xpc3R4YXR0cl0JCXN5c19saXN0eGF0dHIsCi0JW19fTlJfbGxpc3R4YXR0cl0JCXN5c19sbGlzdHhhdHRyLAotCVtfX05SX2ZsaXN0eGF0dHJdCQlzeXNfZmxpc3R4YXR0ciwKLQlbX19OUl9yZW1vdmV4YXR0cl0JCXN5c19yZW1vdmV4YXR0ciwKLQlbX19OUl9scmVtb3ZleGF0dHJdCQlzeXNfbHJlbW92ZXhhdHRyLAotCVtfX05SX2ZyZW1vdmV4YXR0cl0JCXN5c19mcmVtb3ZleGF0dHIsCi0JW19fTlJfZnV0ZXhdCQkJc3lzX2Z1dGV4LAotCVtfX05SX3NjaGVkX3NldGFmZmluaXR5XQlzeXNfc2NoZWRfc2V0YWZmaW5pdHksCi0JW19fTlJfc2NoZWRfZ2V0YWZmaW5pdHldCXN5c19zY2hlZF9nZXRhZmZpbml0eSwKLQlbMjI0XQkJCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl90dXhjYWxsXQkJCXN5c19uaV9zeXNjYWxsLAotCVsyMjZdCQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX2lvX3NldHVwXQkJCXN5c19pb19zZXR1cCwKLQlbX19OUl9pb19kZXN0cm95XQkJc3lzX2lvX2Rlc3Ryb3ksCi0JW19fTlJfaW9fZ2V0ZXZlbnRzXQkJc3lzX2lvX2dldGV2ZW50cywKLQlbX19OUl9pb19zdWJtaXRdCQlzeXNfaW9fc3VibWl0LAotCVtfX05SX2lvX2NhbmNlbF0JCXN5c19pb19jYW5jZWwsCi0JW19fTlJfc2V0X3RpZF9hZGRyZXNzXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19zZXRfdGlkX2FkZHJlc3MgKi8KLQlbX19OUl9mYWR2aXNlNjRdCQlzeXNfZmFkdmlzZTY0LAotCVtfX05SX2V4aXRfZ3JvdXBdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX2V4aXRfZ3JvdXAgKi8KLQlbX19OUl9sb29rdXBfZGNvb2tpZV0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfbG9va3VwX2Rjb29raWUgKi8KLQlbX19OUl9lcG9sbF9jcmVhdGVdCQlzeXNfZXBvbGxfY3JlYXRlLAotCVtfX05SX2Vwb2xsX2N0bF0JCXN5c19lcG9sbF9jdGwsCi0JW19fTlJfZXBvbGxfd2FpdF0JCXN5c19lcG9sbF93YWl0LAotCVtfX05SX3JlbWFwX2ZpbGVfcGFnZXNdCQlzeXNfcmVtYXBfZmlsZV9wYWdlcywKLQlbX19OUl90aW1lcl9jcmVhdGVdCQlzeXNfdGltZXJfY3JlYXRlLAotCVtfX05SX3RpbWVyX3NldHRpbWVdCQlzeXNfdGltZXJfc2V0dGltZSwKLQlbX19OUl90aW1lcl9nZXR0aW1lXQkJc3lzX3RpbWVyX2dldHRpbWUsCi0JW19fTlJfdGltZXJfZ2V0b3ZlcnJ1bl0JCXN5c190aW1lcl9nZXRvdmVycnVuLAotCVtfX05SX3RpbWVyX2RlbGV0ZV0JCXN5c190aW1lcl9kZWxldGUsCi0JW19fTlJfY2xvY2tfc2V0dGltZV0JCXN5c19jbG9ja19zZXR0aW1lLAotCVtfX05SX2Nsb2NrX2dldHRpbWVdCQlzeXNfY2xvY2tfZ2V0dGltZSwKLQlbX19OUl9jbG9ja19nZXRyZXNdCQlzeXNfY2xvY2tfZ2V0cmVzLAotCVtfX05SX2Nsb2NrX25hbm9zbGVlcF0JCXN5c19jbG9ja19uYW5vc2xlZXAsCi0JW19fTlJfc3dhcGNvbnRleHRdCQlzeXNfbmlfc3lzY2FsbCwgLyogcHBjNjRfc3dhcGNvbnRleHQgKi8KLQlbX19OUl90Z2tpbGxdCQkJc3lzX3Rna2lsbCwKLQlbX19OUl91dGltZXNdCQkJc3lzX3V0aW1lcywKLQlbX19OUl9zdGF0ZnM2NF0JCQlzeXNfc3RhdGZzNjQsCi0JW19fTlJfZnN0YXRmczY0XQkJc3lzX2ZzdGF0ZnM2NCwKLQlbMjU0XQkJCQlzeXNfbmlfc3lzY2FsbCwKLQlbX19OUl9ydGFzXQkJCXBwY19ydGFzLAotCVsyNTZdCQkJCXN5c19uaV9zeXNjYWxsLAotCVsyNTddCQkJCXN5c19uaV9zeXNjYWxsLAotCVsyNThdCQkJCXN5c19uaV9zeXNjYWxsLAotCVtfX05SX21iaW5kXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfbWJpbmQgKi8KLQlbX19OUl9nZXRfbWVtcG9saWN5XQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19nZXRfbWVtcG9saWN5ICovCi0JW19fTlJfc2V0X21lbXBvbGljeV0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfc2V0X21lbXBvbGljeSAqLwotCVtfX05SX21xX29wZW5dCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19tcV9vcGVuICovCi0JW19fTlJfbXFfdW5saW5rXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19tcV91bmxpbmsgKi8KLQlbX19OUl9tcV90aW1lZHNlbmRdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX21xX3RpbWVkc2VuZCAqLwotCVtfX05SX21xX3RpbWVkcmVjZWl2ZV0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfbXFfdGltZWRyZWNlaXZlICovCi0JW19fTlJfbXFfbm90aWZ5XQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19tcV9ub3RpZnkgKi8KLQlbX19OUl9tcV9nZXRzZXRhdHRyXQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19tcV9nZXRzZXRhdHRyICovCi0JW19fTlJfa2V4ZWNfbG9hZF0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfa2V4ZWNfbG9hZCAqLwotCVtfX05SX2FkZF9rZXldCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19hZGRfa2V5ICovCi0JW19fTlJfcmVxdWVzdF9rZXldCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX3JlcXVlc3Rfa2V5ICovCi0JW19fTlJfa2V5Y3RsXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfa2V5Y3RsICovCi0JW19fTlJfd2FpdGlkXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfd2FpdGlkICovCi0JW19fTlJfaW9wcmlvX3NldF0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfaW9wcmlvX3NldCAqLwotCVtfX05SX2lvcHJpb19nZXRdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX2lvcHJpb19nZXQgKi8KLQlbX19OUl9pbm90aWZ5X2luaXRdCQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX2lub3RpZnlfaW5pdCAqLwotCVtfX05SX2lub3RpZnlfYWRkX3dhdGNoXQlzeXNfbmlfc3lzY2FsbCwgLyogc3lzX2lub3RpZnlfYWRkX3dhdGNoICovCi0JW19fTlJfaW5vdGlmeV9ybV93YXRjaF0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfaW5vdGlmeV9ybV93YXRjaCAqLwotCVtfX05SX3NwdV9ydW5dCQkJc3lzX25pX3N5c2NhbGwsIC8qIHN5c19zcHVfcnVuICovCi0JW19fTlJfc3B1X2NyZWF0ZV0JCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfc3B1X2NyZWF0ZSAqLwotCVtfX05SX3BzZWxlY3Q2XQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfcHNlbGVjdCAqLwotCVtfX05SX3Bwb2xsXQkJCXN5c19uaV9zeXNjYWxsLCAvKiBzeXNfcHBvbGwgKi8KLQlbX19OUl91bnNoYXJlXQkJCXN5c191bnNoYXJlLAotCVtfX05SX3NwbGljZV0JCQlzeXNfc3BsaWNlLAotCVtfX05SX3RlZV0JCQlzeXNfdGVlLAotCVtfX05SX3Ztc3BsaWNlXQkJCXN5c192bXNwbGljZSwKLQlbX19OUl9vcGVuYXRdCQkJc3lzX29wZW5hdCwKLQlbX19OUl9ta2RpcmF0XQkJCXN5c19ta2RpcmF0LAotCVtfX05SX21rbm9kYXRdCQkJc3lzX21rbm9kYXQsCi0JW19fTlJfZmNob3duYXRdCQkJc3lzX2ZjaG93bmF0LAotCVtfX05SX2Z1dGltZXNhdF0JCXN5c19mdXRpbWVzYXQsCi0JW19fTlJfbmV3ZnN0YXRhdF0JCXN5c19uZXdmc3RhdGF0LAotCVtfX05SX3VubGlua2F0XQkJCXN5c191bmxpbmthdCwKLQlbX19OUl9yZW5hbWVhdF0JCQlzeXNfcmVuYW1lYXQsCi0JW19fTlJfbGlua2F0XQkJCXN5c19saW5rYXQsCi0JW19fTlJfc3ltbGlua2F0XQkJc3lzX3N5bWxpbmthdCwKLQlbX19OUl9yZWFkbGlua2F0XQkJc3lzX3JlYWRsaW5rYXQsCi0JW19fTlJfZmNobW9kYXRdCQkJc3lzX2ZjaG1vZGF0LAotCVtfX05SX2ZhY2Nlc3NhdF0JCXN5c19mYWNjZXNzYXQsCi0JW19fTlJfZ2V0X3JvYnVzdF9saXN0XQkJc3lzX2dldF9yb2J1c3RfbGlzdCwKLQlbX19OUl9zZXRfcm9idXN0X2xpc3RdCQlzeXNfc2V0X3JvYnVzdF9saXN0LAorI2RlZmluZSBTWVNDQUxMKGZ1bmMpCQlzeXNfbmlfc3lzY2FsbCwKKyNkZWZpbmUgQ09NUEFUX1NZUyhmdW5jKQlzeXNfbmlfc3lzY2FsbCwKKyNkZWZpbmUgUFBDX1NZUyhmdW5jKQkJc3lzX25pX3N5c2NhbGwsCisjZGVmaW5lIE9MRFNZUyhmdW5jKQkJc3lzX25pX3N5c2NhbGwsCisjZGVmaW5lIFNZUzMyT05MWShmdW5jKQkJc3lzX25pX3N5c2NhbGwsCisjZGVmaW5lIFNZU1goZiwgZjMyNjQsIGYzMikJc3lzX25pX3N5c2NhbGwsCisKKyNkZWZpbmUgU1lTQ0FMTF9TUFUoZnVuYykJc3lzXyMjZnVuYywKKyNkZWZpbmUgQ09NUEFUX1NZU19TUFUoZnVuYykJc3lzXyMjZnVuYywKKyNkZWZpbmUgUFBDX1NZU19TUFUoZnVuYykJcHBjXyMjZnVuYywKKyNkZWZpbmUgU1lTWF9TUFUoZiwgZjMyNjQsIGYzMikJZiwKKworI2luY2x1ZGUgPGFzbS9zeXN0YmwuaD4KIH07CiAKIGxvbmcgc3B1X3N5c19jYWxsYmFjayhzdHJ1Y3Qgc3B1X3N5c2NhbGxfYmxvY2sgKnMpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1X3ByaXYxLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1X3ByaXYxLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNjU2NDIxLi4wMDAwMDAwCi0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfcHJpdjEuYworKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogYWNjZXNzIHRvIFNQVSBwcml2aWxlZ2VkIHJlZ2lzdGVycwotICovCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vc3B1Lmg+Ci0KLXZvaWQgc3B1X2ludF9tYXNrX2FuZChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IG1hc2spCi17Ci0JdTY0IG9sZF9tYXNrOwotCi0Jb2xkX21hc2sgPSBpbl9iZTY0KCZzcHUtPnByaXYxLT5pbnRfbWFza19SV1tjbGFzc10pOwotCW91dF9iZTY0KCZzcHUtPnByaXYxLT5pbnRfbWFza19SV1tjbGFzc10sIG9sZF9tYXNrICYgbWFzayk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChzcHVfaW50X21hc2tfYW5kKTsKLQotdm9pZCBzcHVfaW50X21hc2tfb3Ioc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKQotewotCXU2NCBvbGRfbWFzazsKLQotCW9sZF9tYXNrID0gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdKTsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdLCBvbGRfbWFzayB8IG1hc2spOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoc3B1X2ludF9tYXNrX29yKTsKLQotdm9pZCBzcHVfaW50X21hc2tfc2V0KHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzLCB1NjQgbWFzaykKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdLCBtYXNrKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9pbnRfbWFza19zZXQpOwotCi11NjQgc3B1X2ludF9tYXNrX2dldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcykKLXsKLQlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9pbnRfbWFza19nZXQpOwotCi12b2lkIHNwdV9pbnRfc3RhdF9jbGVhcihzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IHN0YXQpCi17Ci0Jb3V0X2JlNjQoJnNwdS0+cHJpdjEtPmludF9zdGF0X1JXW2NsYXNzXSwgc3RhdCk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChzcHVfaW50X3N0YXRfY2xlYXIpOwotCi11NjQgc3B1X2ludF9zdGF0X2dldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcykKLXsKLQlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X3N0YXRfUldbY2xhc3NdKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9pbnRfc3RhdF9nZXQpOwotCi12b2lkIHNwdV9pbnRfcm91dGVfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHJvdXRlKQotewotCW91dF9iZTY0KCZzcHUtPnByaXYxLT5pbnRfcm91dGVfUlcsIHJvdXRlKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9pbnRfcm91dGVfc2V0KTsKLQotdTY0IHNwdV9tZmNfZGFyX2dldChzdHJ1Y3Qgc3B1ICpzcHUpCi17Ci0JcmV0dXJuIGluX2JlNjQoJnNwdS0+cHJpdjEtPm1mY19kYXJfUlcpOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoc3B1X21mY19kYXJfZ2V0KTsKLQotdTY0IHNwdV9tZmNfZHNpc3JfZ2V0KHN0cnVjdCBzcHUgKnNwdSkKLXsKLQlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+bWZjX2RzaXNyX1JXKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfZHNpc3JfZ2V0KTsKLQotdm9pZCBzcHVfbWZjX2RzaXNyX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBkc2lzcikKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+bWZjX2RzaXNyX1JXLCBkc2lzcik7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChzcHVfbWZjX2RzaXNyX3NldCk7Ci0KLXZvaWQgc3B1X21mY19zZHJfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHNkcikKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+bWZjX3Nkcl9SVywgc2RyKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfc2RyX3NldCk7Ci0KLXZvaWQgc3B1X21mY19zcjFfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHNyMSkKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+bWZjX3NyMV9SVywgc3IxKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfc3IxX3NldCk7Ci0KLXU2NCBzcHVfbWZjX3NyMV9nZXQoc3RydWN0IHNwdSAqc3B1KQotewotCXJldHVybiBpbl9iZTY0KCZzcHUtPnByaXYxLT5tZmNfc3IxX1JXKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfc3IxX2dldCk7Ci0KLXZvaWQgc3B1X21mY190Y2xhc3NfaWRfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHRjbGFzc19pZCkKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+bWZjX3RjbGFzc19pZF9SVywgdGNsYXNzX2lkKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfdGNsYXNzX2lkX3NldCk7Ci0KLXU2NCBzcHVfbWZjX3RjbGFzc19pZF9nZXQoc3RydWN0IHNwdSAqc3B1KQotewotCXJldHVybiBpbl9iZTY0KCZzcHUtPnByaXYxLT5tZmNfdGNsYXNzX2lkX1JXKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9tZmNfdGNsYXNzX2lkX2dldCk7Ci0KLXZvaWQgc3B1X3RsYl9pbnZhbGlkYXRlKHN0cnVjdCBzcHUgKnNwdSkKLXsKLQlvdXRfYmU2NCgmc3B1LT5wcml2MS0+dGxiX2ludmFsaWRhdGVfZW50cnlfVywgMHVsKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV90bGJfaW52YWxpZGF0ZSk7Ci0KLXZvaWQgc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9zZXQoc3RydWN0IHNwdSAqc3B1LCB1NjQgaWQpCi17Ci0Jb3V0X2JlNjQoJnNwdS0+cHJpdjEtPnJlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9SVywgaWQpOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9zZXQpOwotCi11NjQgc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9nZXQoc3RydWN0IHNwdSAqc3B1KQotewotCXJldHVybiBpbl9iZTY0KCZzcHUtPnByaXYxLT5yZXNvdXJjZV9hbGxvY2F0aW9uX2dyb3VwSURfUlcpOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9nZXQpOwotCi12b2lkIHNwdV9yZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9zZXQoc3RydWN0IHNwdSAqc3B1LCB1NjQgZW5hYmxlKQotewotCW91dF9iZTY0KCZzcHUtPnByaXYxLT5yZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9SVywgZW5hYmxlKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9yZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9zZXQpOwotCi11NjQgc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX2dldChzdHJ1Y3Qgc3B1ICpzcHUpCi17Ci0JcmV0dXJuIGluX2JlNjQoJnNwdS0+cHJpdjEtPnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX1JXKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKHNwdV9yZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9nZXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9wcml2MV9tbWlvLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1X3ByaXYxX21taW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWI2OWYwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdV9wcml2MV9tbWlvLmMKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBzcHUgaHlwZXJ2aXNvciBhYnN0cmFjdGlvbiBmb3IgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4KKyAqCisgKiAgKEMpIENvcHlyaWdodCBJQk0gRGV1dHNjaGxhbmQgRW50d2lja2x1bmcgR21iSCAyMDA1CisgKiAgQ29weXJpZ2h0IDIwMDYgU29ueSBDb3JwLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9zcHUuaD4KKyNpbmNsdWRlIDxhc20vc3B1X3ByaXYxLmg+CisKKyNpbmNsdWRlICJpbnRlcnJ1cHQuaCIKKworc3RhdGljIHZvaWQgaW50X21hc2tfYW5kKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzLCB1NjQgbWFzaykKK3sKKwl1NjQgb2xkX21hc2s7CisKKwlvbGRfbWFzayA9IGluX2JlNjQoJnNwdS0+cHJpdjEtPmludF9tYXNrX1JXW2NsYXNzXSk7CisJb3V0X2JlNjQoJnNwdS0+cHJpdjEtPmludF9tYXNrX1JXW2NsYXNzXSwgb2xkX21hc2sgJiBtYXNrKTsKK30KKworc3RhdGljIHZvaWQgaW50X21hc2tfb3Ioc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKQoreworCXU2NCBvbGRfbWFzazsKKworCW9sZF9tYXNrID0gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdKTsKKwlvdXRfYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdLCBvbGRfbWFzayB8IG1hc2spOworfQorCitzdGF0aWMgdm9pZCBpbnRfbWFza19zZXQoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKQoreworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5pbnRfbWFza19SV1tjbGFzc10sIG1hc2spOworfQorCitzdGF0aWMgdTY0IGludF9tYXNrX2dldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcykKK3sKKwlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X21hc2tfUldbY2xhc3NdKTsKK30KKworc3RhdGljIHZvaWQgaW50X3N0YXRfY2xlYXIoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBzdGF0KQoreworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5pbnRfc3RhdF9SV1tjbGFzc10sIHN0YXQpOworfQorCitzdGF0aWMgdTY0IGludF9zdGF0X2dldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcykKK3sKKwlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+aW50X3N0YXRfUldbY2xhc3NdKTsKK30KKworc3RhdGljIHZvaWQgY3B1X2FmZmluaXR5X3NldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjcHUpCit7CisJdTY0IHRhcmdldCA9IGlpY19nZXRfdGFyZ2V0X2lkKGNwdSk7CisJdTY0IHJvdXRlID0gdGFyZ2V0IDw8IDQ4IHwgdGFyZ2V0IDw8IDMyIHwgdGFyZ2V0IDw8IDE2OworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5pbnRfcm91dGVfUlcsIHJvdXRlKTsKK30KKworc3RhdGljIHU2NCBtZmNfZGFyX2dldChzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJcmV0dXJuIGluX2JlNjQoJnNwdS0+cHJpdjEtPm1mY19kYXJfUlcpOworfQorCitzdGF0aWMgdTY0IG1mY19kc2lzcl9nZXQoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBpbl9iZTY0KCZzcHUtPnByaXYxLT5tZmNfZHNpc3JfUlcpOworfQorCitzdGF0aWMgdm9pZCBtZmNfZHNpc3Jfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IGRzaXNyKQoreworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5tZmNfZHNpc3JfUlcsIGRzaXNyKTsKK30KKworc3RhdGljIHZvaWQgbWZjX3Nkcl9zZXQoc3RydWN0IHNwdSAqc3B1LCB1NjQgc2RyKQoreworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5tZmNfc2RyX1JXLCBzZHIpOworfQorCitzdGF0aWMgdm9pZCBtZmNfc3IxX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBzcjEpCit7CisJb3V0X2JlNjQoJnNwdS0+cHJpdjEtPm1mY19zcjFfUlcsIHNyMSk7Cit9CisKK3N0YXRpYyB1NjQgbWZjX3NyMV9nZXQoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBpbl9iZTY0KCZzcHUtPnByaXYxLT5tZmNfc3IxX1JXKTsKK30KKworc3RhdGljIHZvaWQgbWZjX3RjbGFzc19pZF9zZXQoc3RydWN0IHNwdSAqc3B1LCB1NjQgdGNsYXNzX2lkKQoreworCW91dF9iZTY0KCZzcHUtPnByaXYxLT5tZmNfdGNsYXNzX2lkX1JXLCB0Y2xhc3NfaWQpOworfQorCitzdGF0aWMgdTY0IG1mY190Y2xhc3NfaWRfZ2V0KHN0cnVjdCBzcHUgKnNwdSkKK3sKKwlyZXR1cm4gaW5fYmU2NCgmc3B1LT5wcml2MS0+bWZjX3RjbGFzc19pZF9SVyk7Cit9CisKK3N0YXRpYyB2b2lkIHRsYl9pbnZhbGlkYXRlKHN0cnVjdCBzcHUgKnNwdSkKK3sKKwlvdXRfYmU2NCgmc3B1LT5wcml2MS0+dGxiX2ludmFsaWRhdGVfZW50cnlfVywgMHVsKTsKK30KKworc3RhdGljIHZvaWQgcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBpZCkKK3sKKwlvdXRfYmU2NCgmc3B1LT5wcml2MS0+cmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX1JXLCBpZCk7Cit9CisKK3N0YXRpYyB1NjQgcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX2dldChzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJcmV0dXJuIGluX2JlNjQoJnNwdS0+cHJpdjEtPnJlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9SVyk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBlbmFibGUpCit7CisJb3V0X2JlNjQoJnNwdS0+cHJpdjEtPnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX1JXLCBlbmFibGUpOworfQorCitzdGF0aWMgdTY0IHJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX2dldChzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJcmV0dXJuIGluX2JlNjQoJnNwdS0+cHJpdjEtPnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX1JXKTsKK30KKworY29uc3Qgc3RydWN0IHNwdV9wcml2MV9vcHMgc3B1X3ByaXYxX21taW9fb3BzID0KK3sKKwkuaW50X21hc2tfYW5kID0gaW50X21hc2tfYW5kLAorCS5pbnRfbWFza19vciA9IGludF9tYXNrX29yLAorCS5pbnRfbWFza19zZXQgPSBpbnRfbWFza19zZXQsCisJLmludF9tYXNrX2dldCA9IGludF9tYXNrX2dldCwKKwkuaW50X3N0YXRfY2xlYXIgPSBpbnRfc3RhdF9jbGVhciwKKwkuaW50X3N0YXRfZ2V0ID0gaW50X3N0YXRfZ2V0LAorCS5jcHVfYWZmaW5pdHlfc2V0ID0gY3B1X2FmZmluaXR5X3NldCwKKwkubWZjX2Rhcl9nZXQgPSBtZmNfZGFyX2dldCwKKwkubWZjX2RzaXNyX2dldCA9IG1mY19kc2lzcl9nZXQsCisJLm1mY19kc2lzcl9zZXQgPSBtZmNfZHNpc3Jfc2V0LAorCS5tZmNfc2RyX3NldCA9IG1mY19zZHJfc2V0LAorCS5tZmNfc3IxX3NldCA9IG1mY19zcjFfc2V0LAorCS5tZmNfc3IxX2dldCA9IG1mY19zcjFfZ2V0LAorCS5tZmNfdGNsYXNzX2lkX3NldCA9IG1mY190Y2xhc3NfaWRfc2V0LAorCS5tZmNfdGNsYXNzX2lkX2dldCA9IG1mY190Y2xhc3NfaWRfZ2V0LAorCS50bGJfaW52YWxpZGF0ZSA9IHRsYl9pbnZhbGlkYXRlLAorCS5yZXNvdXJjZV9hbGxvY2F0aW9uX2dyb3VwSURfc2V0ID0gcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX3NldCwKKwkucmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX2dldCA9IHJlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9nZXQsCisJLnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldCA9IHJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldCwKKwkucmVzb3VyY2VfYWxsb2NhdGlvbl9lbmFibGVfZ2V0ID0gcmVzb3VyY2VfYWxsb2NhdGlvbl9lbmFibGVfZ2V0LAorfTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9NYWtlZmlsZQppbmRleCBhN2NkZGY0Li5iYjVkYzYzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL01ha2VmaWxlCkBAIC0xLDUgKzEsNyBAQAorb2JqLXkgKz0gc3dpdGNoLm8KKwogb2JqLSQoQ09ORklHX1NQVV9GUykgKz0gc3B1ZnMubwotc3B1ZnMteSArPSBpbm9kZS5vIGZpbGUubyBjb250ZXh0Lm8gc3dpdGNoLm8gc3lzY2FsbHMubworc3B1ZnMteSArPSBpbm9kZS5vIGZpbGUubyBjb250ZXh0Lm8gc3lzY2FsbHMubwogc3B1ZnMteSArPSBzY2hlZC5vIGJhY2tpbmdfb3BzLm8gaHdfb3BzLm8gcnVuLm8KIAogIyBSdWxlcyB0byBidWlsZCBzd2l0Y2gubyB3aXRoIHRoZSBoZWxwIG9mIFNQVSB0b29sIGNoYWluCkBAIC04LDExICsxMCwxNCBAQAogU1BVX0FTCQk6PSAkKFNQVV9DUk9TUylnY2MKIFNQVV9MRAkJOj0gJChTUFVfQ1JPU1MpbGQKIFNQVV9PQkpDT1BZCTo9ICQoU1BVX0NST1NTKW9iamNvcHkKLVNQVV9DRkxBR1MJOj0gLU8yIC1XYWxsIC1JJChzcmN0cmVlKS9pbmNsdWRlIC1JJChvYmp0cmVlKS9pbmNsdWRlMgotU1BVX0FGTEFHUwk6PSAtYyAtRF9fQVNTRU1CTFlfXyAtSSQoc3JjdHJlZSkvaW5jbHVkZSAtSSQob2JqdHJlZSkvaW5jbHVkZTIKK1NQVV9DRkxBR1MJOj0gLU8yIC1XYWxsIC1JJChzcmN0cmVlKS9pbmNsdWRlIFwKKwkJICAgLUkkKG9ianRyZWUpL2luY2x1ZGUyIC1EX19LRVJORUxfXworU1BVX0FGTEFHUwk6PSAtYyAtRF9fQVNTRU1CTFlfXyAtSSQoc3JjdHJlZSkvaW5jbHVkZSBcCisJCSAgIC1JJChvYmp0cmVlKS9pbmNsdWRlMiAtRF9fS0VSTkVMX18KIFNQVV9MREZMQUdTCTo9IC1OIC1UdGV4dD0weDAKIAogJChvYmopL3N3aXRjaC5vOiAkKG9iaikvc3B1X3NhdmVfZHVtcC5oICQob2JqKS9zcHVfcmVzdG9yZV9kdW1wLmgKK2NsZWFuLWZpbGVzIDo9IHNwdV9zYXZlX2R1bXAuaCBzcHVfcmVzdG9yZV9kdW1wLmgKIAogIyBDb21waWxlIFNQVSBmaWxlcwogICAgICAgY21kX3NwdV9jYyA9ICQoU1BVX0NDKSAkKFNQVV9DRkxBR1MpIC1jIC1vICRAICQ8CkBAIC00NSw3ICs1MCw4IEBACiAJCWVjaG8gIiAqIEhleC1kdW1wIGF1dG8gZ2VuZXJhdGVkIGZyb20gJCouYy4iIDsgXAogCQllY2hvICIgKiBEbyBub3QgZWRpdCEiIDsgXAogCQllY2hvICIgKi8iIDsgXAotCQllY2hvICJzdGF0aWMgdW5zaWduZWQgaW50ICQqX2NvZGVbXSBfX3BhZ2VfYWxpZ25lZCA9IHsiIDsgXAorCQllY2hvICJzdGF0aWMgdW5zaWduZWQgaW50ICQqX2NvZGVbXSAiIFwKKwkJCSJfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxMjgpKSkgPSB7IiA7IFwKIAkJaGV4ZHVtcCAtdiAtZSAnIjB4IiA0LzEgIiUwMngiICIsIiAiXG4iJyAkPCA7IFwKIAkJZWNobyAifTsiIDsgXAogCQkpID4gJEAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9jb250ZXh0LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvY29udGV4dC5jCmluZGV4IDhiYjMzYWIuLjM2NDM5YzUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9jb250ZXh0LmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2NvbnRleHQuYwpAQCAtMzAsNyArMzAsNyBAQAogc3RydWN0IHNwdV9jb250ZXh0ICphbGxvY19zcHVfY29udGV4dCh2b2lkKQogewogCXN0cnVjdCBzcHVfY29udGV4dCAqY3R4OwotCWN0eCA9IGttYWxsb2Moc2l6ZW9mICpjdHgsIEdGUF9LRVJORUwpOworCWN0eCA9IGt6YWxsb2Moc2l6ZW9mICpjdHgsIEdGUF9LRVJORUwpOwogCWlmICghY3R4KQogCQlnb3RvIG91dDsKIAkvKiBCaW5kaW5nIHRvIHBoeXNpY2FsIHByb2Nlc3NvciBkZWZlcnJlZApAQCAtNDgsMTcgKzQ4LDcgQEAKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjdHgtPndib3hfd3EpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmN0eC0+c3RvcF93cSk7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmY3R4LT5tZmNfd3EpOwotCWN0eC0+aWJveF9mYXN5bmMgPSBOVUxMOwotCWN0eC0+d2JveF9mYXN5bmMgPSBOVUxMOwotCWN0eC0+bWZjX2Zhc3luYyA9IE5VTEw7Ci0JY3R4LT5tZmMgPSBOVUxMOwotCWN0eC0+dGFnd2FpdCA9IDA7CiAJY3R4LT5zdGF0ZSA9IFNQVV9TVEFURV9TQVZFRDsKLQljdHgtPmxvY2FsX3N0b3JlID0gTlVMTDsKLQljdHgtPmNudGwgPSBOVUxMOwotCWN0eC0+c2lnbmFsMSA9IE5VTEw7Ci0JY3R4LT5zaWduYWwyID0gTlVMTDsKLQljdHgtPnNwdSA9IE5VTEw7CiAJY3R4LT5vcHMgPSAmc3B1X2JhY2tpbmdfb3BzOwogCWN0eC0+b3duZXIgPSBnZXRfdGFza19tbShjdXJyZW50KTsKIAlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9maWxlLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvZmlsZS5jCmluZGV4IDM2NjE4NWUuLjgwYzAyNjYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9maWxlLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2ZpbGUuYwpAQCAtODI1LDYgKzgyNSw1NSBAQAogCQkJCQlzcHVmc19zaWduYWwyX3R5cGVfc2V0LCAiJWxsdSIpOwogCiAjaWZkZWYgQ09ORklHX1NQVUZTX01NQVAKK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqc3B1ZnNfbXNzX21tYXBfbm9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCAqdHlwZSkKK3sKKwlyZXR1cm4gc3B1ZnNfcHNfbm9wYWdlKHZtYSwgYWRkcmVzcywgdHlwZSwgMHgwMDAwKTsKK30KKworc3RhdGljIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBzcHVmc19tc3NfbW1hcF92bW9wcyA9IHsKKwkubm9wYWdlID0gc3B1ZnNfbXNzX21tYXBfbm9wYWdlLAorfTsKKworLyoKKyAqIG1tYXAgc3VwcG9ydCBmb3IgcHJvYmxlbSBzdGF0ZSBNRkMgRE1BIGFyZWEgWzB4MDAwMCAtIDB4MGZmZl0uCisgKiBNYXBwaW5nIHRoaXMgYXJlYSByZXF1aXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBoYXZlIENBUF9TWVNfUkFXSU8sCisgKiBhcyB0aGVzZSByZWdpc3RlcnMgcmVxdWlyZSBzcGVjaWFsIGNhcmUgd2hlbiByZWFkL3dyaXRpbmcuCisgKi8KK3N0YXRpYyBpbnQgc3B1ZnNfbXNzX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCWlmICghKHZtYS0+dm1fZmxhZ3MgJiBWTV9TSEFSRUQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghY2FwYWJsZShDQVBfU1lTX1JBV0lPKSkKKwkJcmV0dXJuIC1FUEVSTTsKKworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fUkVTRVJWRUQ7CisJdm1hLT52bV9wYWdlX3Byb3QgPSBfX3BncHJvdChwZ3Byb3RfdmFsKHZtYS0+dm1fcGFnZV9wcm90KQorCQkJCSAgICAgfCBfUEFHRV9OT19DQUNIRSk7CisKKwl2bWEtPnZtX29wcyA9ICZzcHVmc19tc3NfbW1hcF92bW9wczsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IHNwdWZzX21zc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCBzcHVmc19pbm9kZV9pbmZvICppID0gU1BVRlNfSShpbm9kZSk7CisKKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBpLT5pX2N0eDsKKwlyZXR1cm4gbm9uc2Vla2FibGVfb3Blbihpbm9kZSwgZmlsZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHNwdWZzX21zc19mb3BzID0geworCS5vcGVuCSA9IHNwdWZzX21zc19vcGVuLAorI2lmZGVmIENPTkZJR19TUFVGU19NTUFQCisJLm1tYXAJID0gc3B1ZnNfbXNzX21tYXAsCisjZW5kaWYKK307CisKKworI2lmZGVmIENPTkZJR19TUFVGU19NTUFQCiBzdGF0aWMgc3RydWN0IHBhZ2UgKnNwdWZzX21mY19tbWFwX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCQkJICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgKnR5cGUpCiB7CkBAIC0xMjc5LDYgKzEzMjgsMjIgQEAKIERFRklORV9TSU1QTEVfQVRUUklCVVRFKHNwdWZzX3NycjBfb3BzLCBzcHVmc19zcnIwX2dldCwgc3B1ZnNfc3JyMF9zZXQsCiAJCQkiJWxseFxuIikKIAorc3RhdGljIHU2NCBzcHVmc19pZF9nZXQodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qgc3B1X2NvbnRleHQgKmN0eCA9IGRhdGE7CisJdTY0IG51bTsKKworCXNwdV9hY3F1aXJlKGN0eCk7CisJaWYgKGN0eC0+c3RhdGUgPT0gU1BVX1NUQVRFX1JVTk5BQkxFKQorCQludW0gPSBjdHgtPnNwdS0+bnVtYmVyOworCWVsc2UKKwkJbnVtID0gKHVuc2lnbmVkIGludCktMTsKKwlzcHVfcmVsZWFzZShjdHgpOworCisJcmV0dXJuIG51bTsKK30KK0RFRklORV9TSU1QTEVfQVRUUklCVVRFKHNwdWZzX2lkX29wcywgc3B1ZnNfaWRfZ2V0LCAwLCAiMHglbGx4XG4iKQorCiBzdHJ1Y3QgdHJlZV9kZXNjciBzcHVmc19kaXJfY29udGVudHNbXSA9IHsKIAl7ICJtZW0iLCAgJnNwdWZzX21lbV9mb3BzLCAgMDY2NiwgfSwKIAl7ICJyZWdzIiwgJnNwdWZzX3JlZ3NfZm9wcywgIDA2NjYsIH0sCkBAIC0xMjkyLDYgKzEzNTcsNyBAQAogCXsgInNpZ25hbDIiLCAmc3B1ZnNfc2lnbmFsMl9mb3BzLCAwNjY2LCB9LAogCXsgInNpZ25hbDFfdHlwZSIsICZzcHVmc19zaWduYWwxX3R5cGUsIDA2NjYsIH0sCiAJeyAic2lnbmFsMl90eXBlIiwgJnNwdWZzX3NpZ25hbDJfdHlwZSwgMDY2NiwgfSwKKwl7ICJtc3MiLCAmc3B1ZnNfbXNzX2ZvcHMsIDA2NjYsIH0sCiAJeyAibWZjIiwgJnNwdWZzX21mY19mb3BzLCAwNjY2LCB9LAogCXsgImNudGwiLCAmc3B1ZnNfY250bF9mb3BzLCAgMDY2NiwgfSwKIAl7ICJucGMiLCAmc3B1ZnNfbnBjX29wcywgMDY2NiwgfSwKQEAgLTEzMDEsNSArMTM2Nyw2IEBACiAJeyAic3B1X3RhZ19tYXNrIiwgJnNwdWZzX3NwdV90YWdfbWFza19vcHMsIDA2NjYsIH0sCiAJeyAiZXZlbnRfbWFzayIsICZzcHVmc19ldmVudF9tYXNrX29wcywgMDY2NiwgfSwKIAl7ICJzcnIwIiwgJnNwdWZzX3NycjBfb3BzLCAwNjY2LCB9LAorCXsgInBoeXMtaWQiLCAmc3B1ZnNfaWRfb3BzLCAwNjY2LCB9LAogCXt9LAogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9od19vcHMuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9od19vcHMuYwppbmRleCBhMTNhOGI1Li5lZGUyY2FjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvaHdfb3BzLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2h3X29wcy5jCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vc3B1Lmg+CisjaW5jbHVkZSA8YXNtL3NwdV9wcml2MS5oPgogI2luY2x1ZGUgPGFzbS9zcHVfY3NhLmg+CiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSAic3B1ZnMuaCIKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9pbm9kZS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2lub2RlLmMKaW5kZXggZDk1NTQxOS4uN2I0NTcyOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2lub2RlLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2lub2RlLmMKQEAgLTE1NywyMCArMTU3LDEyIEBACiAJbXV0ZXhfdW5sb2NrKCZkaXItPmRfaW5vZGUtPmlfbXV0ZXgpOwogfQogCisvKiBDYWxsZXIgbXVzdCBob2xkIHJvb3QtPmlfbXV0ZXggKi8KIHN0YXRpYyBpbnQgc3B1ZnNfcm1kaXIoc3RydWN0IGlub2RlICpyb290LCBzdHJ1Y3QgZGVudHJ5ICpkaXJfZGVudHJ5KQogewotCXN0cnVjdCBzcHVfY29udGV4dCAqY3R4OwotCiAJLyogcmVtb3ZlIGFsbCBlbnRyaWVzICovCi0JbXV0ZXhfbG9jaygmcm9vdC0+aV9tdXRleCk7CiAJc3B1ZnNfcHJ1bmVfZGlyKGRpcl9kZW50cnkpOwotCW11dGV4X3VubG9jaygmcm9vdC0+aV9tdXRleCk7CiAKLQkvKiBXZSBoYXZlIHRvIGdpdmUgdXAgdGhlIG1tX3N0cnVjdCAqLwotCWN0eCA9IFNQVUZTX0koZGlyX2RlbnRyeS0+ZF9pbm9kZSktPmlfY3R4OwotCXNwdV9mb3JnZXQoY3R4KTsKLQotCS8qIFhYWCBEbyB3ZSBuZWVkIHRvIGhvbGQgaV9tdXRleCBoZXJlID8gKi8KIAlyZXR1cm4gc2ltcGxlX3JtZGlyKHJvb3QsIGRpcl9kZW50cnkpOwogfQogCkBAIC0xOTksMTYgKzE5MSwyMyBAQAogCiBzdGF0aWMgaW50IHNwdWZzX2Rpcl9jbG9zZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKKwlzdHJ1Y3Qgc3B1X2NvbnRleHQgKmN0eDsKIAlzdHJ1Y3QgaW5vZGUgKmRpcjsKIAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJaW50IHJldDsKIAogCWRlbnRyeSA9IGZpbGUtPmZfZGVudHJ5OwogCWRpciA9IGRlbnRyeS0+ZF9wYXJlbnQtPmRfaW5vZGU7CisJY3R4ID0gU1BVRlNfSShkZW50cnktPmRfaW5vZGUpLT5pX2N0eDsKIAorCW11dGV4X2xvY2soJmRpci0+aV9tdXRleCk7CiAJcmV0ID0gc3B1ZnNfcm1kaXIoZGlyLCBkZW50cnkpOworCW11dGV4X3VubG9jaygmZGlyLT5pX211dGV4KTsKIAlXQVJOX09OKHJldCk7CiAKKwkvKiBXZSBoYXZlIHRvIGdpdmUgdXAgdGhlIG1tX3N0cnVjdCAqLworCXNwdV9mb3JnZXQoY3R4KTsKKwogCXJldHVybiBkY2FjaGVfZGlyX2Nsb3NlKGlub2RlLCBmaWxlKTsKIH0KIApAQCAtMzA1LDYgKzMwNCwxMCBAQAogCSAgICBuZC0+ZGVudHJ5ICE9IG5kLT5kZW50cnktPmRfc2ItPnNfcm9vdCkKIAkJZ290byBvdXQ7CiAKKwkvKiBhbGwgZmxhZ3MgYXJlIHJlc2VydmVkICovCisJaWYgKGZsYWdzKQorCQlnb3RvIG91dDsKKwogCWRlbnRyeSA9IGxvb2t1cF9jcmVhdGUobmQsIDEpOwogCXJldCA9IFBUUl9FUlIoZGVudHJ5KTsKIAlpZiAoSVNfRVJSKGRlbnRyeSkpCkBAIC0zMjQsOCArMzI3LDEzIEBACiAJICogaW4gZXJyb3IgcGF0aCBvZiAqX29wZW4oKS4KIAkgKi8KIAlyZXQgPSBzcHVmc19jb250ZXh0X29wZW4oZGdldChkZW50cnkpLCBtbnRnZXQobmQtPm1udCkpOwotCWlmIChyZXQgPCAwKQotCQlzcHVmc19ybWRpcihuZC0+ZGVudHJ5LT5kX2lub2RlLCBkZW50cnkpOworCWlmIChyZXQgPCAwKSB7CisJCVdBUk5fT04oc3B1ZnNfcm1kaXIobmQtPmRlbnRyeS0+ZF9pbm9kZSwgZGVudHJ5KSk7CisJCW11dGV4X3VubG9jaygmbmQtPmRlbnRyeS0+ZF9pbm9kZS0+aV9tdXRleCk7CisJCXNwdV9mb3JnZXQoU1BVRlNfSShkZW50cnktPmRfaW5vZGUpLT5pX2N0eCk7CisJCWRwdXQoZGVudHJ5KTsKKwkJZ290byBvdXQ7CisJfQogCiBvdXRfZHB1dDoKIAlkcHV0KGRlbnRyeSk7CkBAIC00MjgsMTEgKzQzNiwxMSBAQAogCXJldHVybiBzcHVmc19jcmVhdGVfcm9vdChzYiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKgorc3RhdGljIGludAogc3B1ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc3R5cGUsIGludCBmbGFncywKLQkJY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSkKKwkJY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnN0eXBlLCBmbGFncywgZGF0YSwgc3B1ZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnN0eXBlLCBmbGFncywgZGF0YSwgc3B1ZnNfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHNwdWZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc2NoZWQuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCmluZGV4IGJmNjUyY2QuLjNkY2M1ZDggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8YXNtL3NwdS5oPgogI2luY2x1ZGUgPGFzbS9zcHVfY3NhLmg+CisjaW5jbHVkZSA8YXNtL3NwdV9wcml2MS5oPgogI2luY2x1ZGUgInNwdWZzLmgiCiAKICNkZWZpbmUgU1BVX01JTl9USU1FU0xJQ0UgCSgxMDAgKiBIWiAvIDEwMDApCkBAIC0zNjMsNyArMzY0LDcgQEAKIAkgKiBXZSdyZSBsaWtlbHkgdG8gd2FpdCBmb3IgaW50ZXJydXB0cyBvbiB0aGUgc2FtZQogCSAqIENQVSB0aGF0IHdlIGFyZSBub3cgb24sIHNvIHNlbmQgdGhlbSBoZXJlLgogCSAqLwotCXNwdV9pcnFfc2V0YWZmaW5pdHkoc3B1LCByYXdfc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKwlzcHVfY3B1X2FmZmluaXR5X3NldChzcHUsIHJhd19zbXBfcHJvY2Vzc29yX2lkKCkpOwogCXB1dF9hY3RpdmVfc3B1KHNwdSk7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmVfZHVtcC5oX3NoaXBwZWQgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmVfZHVtcC5oX3NoaXBwZWQKaW5kZXggMWIyMzU1Zi4uMTUxODNkMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdV9yZXN0b3JlX2R1bXAuaF9zaGlwcGVkCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVfcmVzdG9yZV9kdW1wLmhfc2hpcHBlZApAQCAtMywyMjkgKzMsOTAxIEBACiAgKiBIZXgtZHVtcCBhdXRvIGdlbmVyYXRlZCBmcm9tIHNwdV9yZXN0b3JlLmMuCiAgKiBEbyBub3QgZWRpdCEKICAqLwotc3RhdGljIHVuc2lnbmVkIGludCBzcHVfcmVzdG9yZV9jb2RlW10gX19wYWdlX2FsaWduZWQgPSB7Ci0weDQwODAwMDAwLCAweDQwOWZmODAxLCAweDI0MDAwMDgwLCAweDI0ZmQ4MDgxLAotMHgxY2Q4MDA4MSwgMHgzMzAwMTE4MCwgMHg0MjAzMDAwMywgMHgzMzgwMDI4NCwKLTB4MWMwMTAyMDQsIDB4NDAyMDAwMDAsIDB4NDAyMDAwMDAsIDB4NDAyMDAwMDAsCi0weDM0MDAwMTkwLCAweDM0MDA0MTkxLCAweDM0MDA4MTkyLCAweDM0MDBjMTkzLAotMHgxNDFmYzIwNSwgMHgyM2ZmZmQ4NCwgMHgxYzEwMDE4MywgMHgyMTdmZmE4NSwKLTB4MzA4MGEwMDAsIDB4MzA4MGEyMDEsIDB4MzA4MGE0MDIsIDB4MzA4MGE2MDMsCi0weDMwODBhODA0LCAweDMwODBhYTA1LCAweDMwODBhYzA2LCAweDMwODBhZTA3LAotMHgzMDgwYjAwOCwgMHgzMDgwYjIwOSwgMHgzMDgwYjQwYSwgMHgzMDgwYjYwYiwKLTB4MzA4MGI4MGMsIDB4MzA4MGJhMGQsIDB4MzA4MGJjMGUsIDB4MzA4MGJlMGYsCi0weDAwMDAzZmZjLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMWEwMDE4MiwgMHgzZWMwMDA4MywgMHhiMGExNDEwMywgMHgwMWEwMDIwNCwKLTB4M2VjMTAwODIsIDB4NDIwMjgwMGUsIDB4MDQwMDA3MDMsIDB4YjBhMTQyMDIsCi0weDIxYTAwODAzLCAweDNmYmYwMjhkLCAweDNmMjAwNjhkLCAweDNmYmUwNjgyLAotMHgzZmUzMDEwMiwgMHgyMWEwMDg4MiwgMHgzZjgyMDI4ZiwgMHgzZmUzMDc4ZiwKLTB4M2ZiZjA3ODQsIDB4M2YyMDAyMDQsIDB4M2ZiZTAyMDQsIDB4M2ZlMzAyMDQsCi0weDA0MDAwMjAzLCAweDIxYTAwOTAzLCAweDQwODQ4MDAyLCAweDIxYTAwOTgyLAotMHg0MDgwMDAwMywgMHgyMWEwMGEwMywgMHg0MDgwMjAwMiwgMHgyMWEwMGE4MiwKLTB4MjFhMDAwODMsIDB4NDA4MDAwODIsIDB4MjFhMDBiMDIsIDB4MTAwMDI4MTgsCi0weDQwYTgwMDAyLCAweDMyODAwMDA3LCAweDQyMDcwMDBjLCAweDE4MDA4MjA4LAotMHg0MGEwMDAwYiwgMHg0MDgwMDIwYSwgMHg0MDgwMDcwOSwgMHgwMDIwMDAwMCwKLTB4NDIwNzAwMDIsIDB4M2FjMzAzODQsIDB4MWNmZmM0ODksIDB4MDAyMDAwMDAsCi0weDE4MDA4MzgzLCAweDM4ODMwMzgyLCAweDRjZmZjNDg2LCAweDNhYzI4MTg1LAotMHhiMDQwODU4NCwgMHgyODgzMDM4MiwgMHgxYzAyMDM4NywgMHgzODgyODE4MiwKLTB4YjA0MDg0MDUsIDB4MTgwMmM0MDgsIDB4Mjg4MjgxODIsIDB4MjE3ZmY4ODYsCi0weDA0MDAwNTgzLCAweDIxYTAwODAzLCAweDNmYmUwNjgyLCAweDNmZTMwMTAyLAotMHgwNDAwMDEwNiwgMHgyMWEwMDg4NiwgMHgwNDAwMDYwMywgMHgyMWEwMDkwMywKLTB4NDA4MDNjMDIsIDB4MjFhMDA5ODIsIDB4NDA4MDAwMDMsIDB4MDQwMDAxODQsCi0weDIxYTAwYTA0LCAweDQwODAyMjAyLCAweDIxYTAwYTgyLCAweDQyMDI4MDA1LAotMHgzNDIwODcwMiwgMHgyMTAwMjI4MiwgMHgyMWEwMDgwNCwgMHgyMWEwMDg4NiwKLTB4M2ZiZjA3ODIsIDB4M2YyMDAxMDIsIDB4M2ZiZTAxMDIsIDB4M2ZlMzAxMDIsCi0weDIxYTAwOTAyLCAweDQwODA0MDAzLCAweDIxYTAwOTgzLCAweDIxYTAwYTA0LAotMHg0MDgwNWEwMiwgMHgyMWEwMGE4MiwgMHg0MDgwMDA4MywgMHgyMWEwMGI4MywKLTB4MDFhMDBjMDIsIDB4MDFhMDBkODMsIDB4MzQyMGMyODIsIDB4MjFhMDBlMDIsCi0weDM0MjEwMjgzLCAweDIxYTAwZjAzLCAweDM0MjAwMjg0LCAweDc3NDAwMjAwLAotMHgzNDIxYzI4MiwgMHgyMWEwMDcwMiwgMHgzNDIxODI4MywgMHgyMWEwMDA4MywKLTB4MzQyMTQyODIsIDB4MjFhMDBiMDIsIDB4NDIwMDQ4MGMsIDB4MDAyMDAwMDAsCi0weDFjMDEwMjg2LCAweDM0MjIwMjg0LCAweDM0MjIwMzAyLCAweDBmNjA4MjAzLAotMHg1YzAyNDIwNCwgMHgzYjgxODEwYiwgMHg0MjAxM2MwMiwgMHgwMDIwMDAwMCwKLTB4MTgwMDgxODUsIDB4Mzg4MDgxODMsIDB4M2I4MTQxODIsIDB4MjEwMDRlODQsCi0weDQwMjAwMDdmLCAweDM1MDAwMTAwLCAweDAwMDAwNGUwLCAweDAwMDAwMmEwLAotMHgwMDAwMDJlOCwgMHgwMDAwMDQyOCwgMHgwMDAwMDM2MCwgMHgwMDAwMDJlOCwKLTB4MDAwMDA0YTAsIDB4MDAwMDA0NjgsIDB4MDAwMDAzYzgsIDB4MDAwMDAzNjAsCi0weDQwOWZmZTAyLCAweDMwODAxMjAzLCAweDQwODAwMjA0LCAweDNlYzQwMDg1LAotMHgxMDAwOWMwOSwgMHgzYWMxMDYwNiwgMHhiMDYwYzEwNSwgMHg0MDIwMDA3ZiwKLTB4NDAyMDAwN2YsIDB4MjA4MDEyMDMsIDB4Mzg4MTA2MDIsIDB4YjA0MDg1ODYsCi0weDI4ODEwNjAyLCAweDMyMDA0MTgwLCAweDM0MjA0NzAyLCAweDIxYTAwMzgyLAotMHg0MDIwMDA3ZiwgMHgzMjdmZGM4MCwgMHg0MDlmZmUwMiwgMHgzMDgwMTIwMywKLTB4NDA4MDAyMDQsIDB4M2VjNDAwODcsIDB4NDA4MDA0MDUsIDB4MDAyMDAwMDAsCi0weDQwODAwNjA2LCAweDNhYzEwNjA4LCAweDNhYzE0NjA5LCAweDNhYzE4NjBhLAotMHhiMDYwYzEwNywgMHgyMDgwMTIwMywgMHg0MTAwNDAwMywgMHgzODgxMDYwMiwKLTB4NDAyMDAwN2YsIDB4YjA0MDgxODgsIDB4NDAyMDAwN2YsIDB4Mjg4MTA2MDIsCi0weDQxMjAxMDAyLCAweDM4ODE0NjAzLCAweDEwMDA5YzA5LCAweGIwNjBjMTA5LAotMHg0MDIwMDA3ZiwgMHgyODgxNDYwMywgMHg0MTE5M2Y4MywgMHgzODgxODYwMiwKLTB4NjBmZmMwMDMsIDB4YjA0MDgxOGEsIDB4Mjg4MTg2MDIsIDB4MzIwMDMwODAsCi0weDQwOWZmZTAyLCAweDMwODAxMjAzLCAweDQwODAwMjA0LCAweDNlYzQwMDg3LAotMHg0MTIwMTAwOCwgMHgxMDAwOWMxNCwgMHg0MDgwMDQwNSwgMHgzYWMxMDYwOSwKLTB4NDA4MDA2MDYsIDB4M2FjMTQ2MGEsIDB4YjA2MGMxMDcsIDB4M2FjMTg2MGIsCi0weDIwODAxMjAzLCAweDM4ODEwNjAyLCAweGIwNDA4NDA5LCAweDI4ODEwNjAyLAotMHgzODgxNDYwMywgMHhiMDYwYzQwYSwgMHg0MDIwMDA3ZiwgMHgyODgxNDYwMywKLTB4NDExOTNmODMsIDB4Mzg4MTg2MDIsIDB4NjBmZmMwMDMsIDB4YjA0MDgxOGIsCi0weDI4ODE4NjAyLCAweDMyMDAyMzgwLCAweDQwOWZmZTAyLCAweDMwODAxMjA0LAotMHg0MDgwMDIwNSwgMHgzZWM0MDA4MywgMHg0MDgwMDQwNiwgMHgzYWMxNDYwNywKLTB4M2FjMTg2MDgsIDB4YjA4MTAxMDMsIDB4NDEwMDQwMDIsIDB4MjA4MDEyMDQsCi0weDQwMjAwMDdmLCAweDM4ODE0NjAzLCAweDEwMDA5YzBiLCAweGIwNjBjMTA3LAotMHg0MDIwMDA3ZiwgMHg0MDIwMDA3ZiwgMHgyODgxNDYwMywgMHgzODgxODYwMiwKLTB4NDAyMDAwN2YsIDB4NDAyMDAwN2YsIDB4YjA0MDg1ODgsIDB4Mjg4MTg2MDIsCi0weDQwMjAwMDdmLCAweDMyMDAxNzgwLCAweDQwOWZmZTAyLCAweDEwMDA2NDBlLAotMHg0MDgwMDIwNCwgMHgzMDgwMTIwMywgMHg0MDgwMDQwNSwgMHgzZWM0MDA4NywKLTB4NDA4MDA2MDYsIDB4M2FjMTA2MDgsIDB4M2FjMTQ2MDksIDB4M2FjMTg2MGEsCi0weGIwNjBjMTA3LCAweDIwODAxMjAzLCAweDQxM2Q4MDAzLCAweDM4ODEwNjAyLAotMHg0MDIwMDA3ZiwgMHgzMjdmZDc4MCwgMHg0MDlmZmUwMiwgMHgxMDAwN2YwYywKLTB4NDA4MDAyMDUsIDB4MzA4MDEyMDQsIDB4NDA4MDA0MDYsIDB4M2VjNDAwODMsCi0weDNhYzE0NjA3LCAweDNhYzE4NjA4LCAweGIwODEwMTAzLCAweDQxM2Q4MDAyLAotMHgyMDgwMTIwNCwgMHgzODgxNDYwMywgMHg0MDIwMDA3ZiwgMHgzMjdmZWI4MCwKLTB4NDA5ZmZlMDIsIDB4MzA4MDEyMDMsIDB4NDA4MDAyMDQsIDB4M2VjNDAwODcsCi0weDQwODAwNDA1LCAweDEwMDA2NTBhLCAweDQwODAwNjA2LCAweDNhYzEwNjA4LAotMHgzYWMxNDYwOSwgMHgzYWMxODYwYSwgMHhiMDYwYzEwNywgMHgyMDgwMTIwMywKLTB4Mzg4MTA2MDIsIDB4YjA0MDg1ODgsIDB4NDAyMDAwN2YsIDB4MzI3ZmM5ODAsCi0weDAwNDAwMDAwLCAweDQwODAwMDAzLCAweDQwMjAwMDdmLCAweDM1MDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3B1X3Jlc3RvcmVfY29kZVtdICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxMjgpKSkgPSB7CisweDQwODAwMDAwLAorMHg0MDlmZjgwMSwKKzB4MjQwMDAwODAsCisweDI0ZmQ4MDgxLAorMHgxY2Q4MDA4MSwKKzB4MzMwMDExODAsCisweDQyMDMwMDAzLAorMHgzMzgwMDI4NCwKKzB4MWMwMTAyMDQsCisweDQwMjAwMDAwLAorMHg0MDIwMDAwMCwKKzB4NDAyMDAwMDAsCisweDM0MDAwMTkwLAorMHgzNDAwNDE5MSwKKzB4MzQwMDgxOTIsCisweDM0MDBjMTkzLAorMHgxNDFmYzIwNSwKKzB4MjNmZmZkODQsCisweDFjMTAwMTgzLAorMHgyMTdmZmE4NSwKKzB4MzA4MGEwMDAsCisweDMwODBhMjAxLAorMHgzMDgwYTQwMiwKKzB4MzA4MGE2MDMsCisweDMwODBhODA0LAorMHgzMDgwYWEwNSwKKzB4MzA4MGFjMDYsCisweDMwODBhZTA3LAorMHgzMDgwYjAwOCwKKzB4MzA4MGIyMDksCisweDMwODBiNDBhLAorMHgzMDgwYjYwYiwKKzB4MzA4MGI4MGMsCisweDMwODBiYTBkLAorMHgzMDgwYmMwZSwKKzB4MzA4MGJlMGYsCisweDAwMDAzZmZjLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMWEwMDE4MiwKKzB4M2VjMDAwODMsCisweGIwYTE0MTAzLAorMHgwMWEwMDIwNCwKKzB4M2VjMTAwODIsCisweDQyMDI4MDBlLAorMHgwNDAwMDcwMywKKzB4YjBhMTQyMDIsCisweDIxYTAwODAzLAorMHgzZmJmMDI4ZCwKKzB4M2YyMDA2OGQsCisweDNmYmUwNjgyLAorMHgzZmUzMDEwMiwKKzB4MjFhMDA4ODIsCisweDNmODIwMjhmLAorMHgzZmUzMDc4ZiwKKzB4M2ZiZjA3ODQsCisweDNmMjAwMjA0LAorMHgzZmJlMDIwNCwKKzB4M2ZlMzAyMDQsCisweDA0MDAwMjAzLAorMHgyMWEwMDkwMywKKzB4NDA4NDgwMDIsCisweDIxYTAwOTgyLAorMHg0MDgwMDAwMywKKzB4MjFhMDBhMDMsCisweDQwODAyMDAyLAorMHgyMWEwMGE4MiwKKzB4MjFhMDAwODMsCisweDQwODAwMDgyLAorMHgyMWEwMGIwMiwKKzB4MTAwMDI4MTgsCisweDQyYTAwMDAyLAorMHgzMjgwMDAwNywKKzB4NDIwNzAwMGMsCisweDE4MDA4MjA4LAorMHg0MGEwMDAwYiwKKzB4NDA4MDAyMGEsCisweDQwODAwNzA5LAorMHgwMDIwMDAwMCwKKzB4NDIwNzAwMDIsCisweDNhYzMwMzg0LAorMHgxY2ZmYzQ4OSwKKzB4MDAyMDAwMDAsCisweDE4MDA4MzgzLAorMHgzODgzMDM4MiwKKzB4NGNmZmM0ODYsCisweDNhYzI4MTg1LAorMHhiMDQwODU4NCwKKzB4Mjg4MzAzODIsCisweDFjMDIwMzg3LAorMHgzODgyODE4MiwKKzB4YjA0MDg0MDUsCisweDE4MDJjNDA4LAorMHgyODgyODE4MiwKKzB4MjE3ZmY4ODYsCisweDA0MDAwNTgzLAorMHgyMWEwMDgwMywKKzB4M2ZiZTA2ODIsCisweDNmZTMwMTAyLAorMHgwNDAwMDEwNiwKKzB4MjFhMDA4ODYsCisweDA0MDAwNjAzLAorMHgyMWEwMDkwMywKKzB4NDA4MDNjMDIsCisweDIxYTAwOTgyLAorMHg0MDgwMDAwMywKKzB4MDQwMDAxODQsCisweDIxYTAwYTA0LAorMHg0MDgwMjIwMiwKKzB4MjFhMDBhODIsCisweDQyMDI4MDA1LAorMHgzNDIwODcwMiwKKzB4MjEwMDIyODIsCisweDIxYTAwODA0LAorMHgyMWEwMDg4NiwKKzB4M2ZiZjA3ODIsCisweDNmMjAwMTAyLAorMHgzZmJlMDEwMiwKKzB4M2ZlMzAxMDIsCisweDIxYTAwOTAyLAorMHg0MDgwNDAwMywKKzB4MjFhMDA5ODMsCisweDIxYTAwYTA0LAorMHg0MDgwNWEwMiwKKzB4MjFhMDBhODIsCisweDQwODAwMDgzLAorMHgyMWEwMGI4MywKKzB4MDFhMDBjMDIsCisweDAxYTAwZDgzLAorMHgzNDIwYzI4MiwKKzB4MjFhMDBlMDIsCisweDM0MjEwMjgzLAorMHgyMWEwMGYwMywKKzB4MzQyMDAyODQsCisweDc3NDAwMjAwLAorMHgzNDIxYzI4MiwKKzB4MjFhMDA3MDIsCisweDM0MjE4MjgzLAorMHgyMWEwMDA4MywKKzB4MzQyMTQyODIsCisweDIxYTAwYjAyLAorMHg0MjAwNDgwYywKKzB4MDAyMDAwMDAsCisweDFjMDEwMjg2LAorMHgzNDIyMDI4NCwKKzB4MzQyMjAzMDIsCisweDBmNjA4MjAzLAorMHg1YzAyNDIwNCwKKzB4M2I4MTgxMGIsCisweDQyMDEzYzAyLAorMHgwMDIwMDAwMCwKKzB4MTgwMDgxODUsCisweDM4ODA4MTgzLAorMHgzYjgxNDE4MiwKKzB4MjEwMDRlODQsCisweDQwMjAwMDdmLAorMHgzNTAwMDEwMCwKKzB4MDAwMDA0ZTAsCisweDAwMDAwMmEwLAorMHgwMDAwMDJlOCwKKzB4MDAwMDA0MjgsCisweDAwMDAwMzYwLAorMHgwMDAwMDJlOCwKKzB4MDAwMDA0YTAsCisweDAwMDAwNDY4LAorMHgwMDAwMDNjOCwKKzB4MDAwMDAzNjAsCisweDQwOWZmZTAyLAorMHgzMDgwMTIwMywKKzB4NDA4MDAyMDQsCisweDNlYzQwMDg1LAorMHgxMDAwOWMwOSwKKzB4M2FjMTA2MDYsCisweGIwNjBjMTA1LAorMHg0MDIwMDA3ZiwKKzB4NDAyMDAwN2YsCisweDIwODAxMjAzLAorMHgzODgxMDYwMiwKKzB4YjA0MDg1ODYsCisweDI4ODEwNjAyLAorMHgzMjAwNDE4MCwKKzB4MzQyMDQ3MDIsCisweDIxYTAwMzgyLAorMHg0MDIwMDA3ZiwKKzB4MzI3ZmRjODAsCisweDQwOWZmZTAyLAorMHgzMDgwMTIwMywKKzB4NDA4MDAyMDQsCisweDNlYzQwMDg3LAorMHg0MDgwMDQwNSwKKzB4MDAyMDAwMDAsCisweDQwODAwNjA2LAorMHgzYWMxMDYwOCwKKzB4M2FjMTQ2MDksCisweDNhYzE4NjBhLAorMHhiMDYwYzEwNywKKzB4MjA4MDEyMDMsCisweDQxMDA0MDAzLAorMHgzODgxMDYwMiwKKzB4NDAyMDAwN2YsCisweGIwNDA4MTg4LAorMHg0MDIwMDA3ZiwKKzB4Mjg4MTA2MDIsCisweDQxMjAxMDAyLAorMHgzODgxNDYwMywKKzB4MTAwMDljMDksCisweGIwNjBjMTA5LAorMHg0MDIwMDA3ZiwKKzB4Mjg4MTQ2MDMsCisweDQxMTkzZjgzLAorMHgzODgxODYwMiwKKzB4NjBmZmMwMDMsCisweGIwNDA4MThhLAorMHgyODgxODYwMiwKKzB4MzIwMDMwODAsCisweDQwOWZmZTAyLAorMHgzMDgwMTIwMywKKzB4NDA4MDAyMDQsCisweDNlYzQwMDg3LAorMHg0MTIwMTAwOCwKKzB4MTAwMDljMTQsCisweDQwODAwNDA1LAorMHgzYWMxMDYwOSwKKzB4NDA4MDA2MDYsCisweDNhYzE0NjBhLAorMHhiMDYwYzEwNywKKzB4M2FjMTg2MGIsCisweDIwODAxMjAzLAorMHgzODgxMDYwMiwKKzB4YjA0MDg0MDksCisweDI4ODEwNjAyLAorMHgzODgxNDYwMywKKzB4YjA2MGM0MGEsCisweDQwMjAwMDdmLAorMHgyODgxNDYwMywKKzB4NDExOTNmODMsCisweDM4ODE4NjAyLAorMHg2MGZmYzAwMywKKzB4YjA0MDgxOGIsCisweDI4ODE4NjAyLAorMHgzMjAwMjM4MCwKKzB4NDA5ZmZlMDIsCisweDMwODAxMjA0LAorMHg0MDgwMDIwNSwKKzB4M2VjNDAwODMsCisweDQwODAwNDA2LAorMHgzYWMxNDYwNywKKzB4M2FjMTg2MDgsCisweGIwODEwMTAzLAorMHg0MTAwNDAwMiwKKzB4MjA4MDEyMDQsCisweDQwMjAwMDdmLAorMHgzODgxNDYwMywKKzB4MTAwMDljMGIsCisweGIwNjBjMTA3LAorMHg0MDIwMDA3ZiwKKzB4NDAyMDAwN2YsCisweDI4ODE0NjAzLAorMHgzODgxODYwMiwKKzB4NDAyMDAwN2YsCisweDQwMjAwMDdmLAorMHhiMDQwODU4OCwKKzB4Mjg4MTg2MDIsCisweDQwMjAwMDdmLAorMHgzMjAwMTc4MCwKKzB4NDA5ZmZlMDIsCisweDEwMDA2NDBlLAorMHg0MDgwMDIwNCwKKzB4MzA4MDEyMDMsCisweDQwODAwNDA1LAorMHgzZWM0MDA4NywKKzB4NDA4MDA2MDYsCisweDNhYzEwNjA4LAorMHgzYWMxNDYwOSwKKzB4M2FjMTg2MGEsCisweGIwNjBjMTA3LAorMHgyMDgwMTIwMywKKzB4NDEzZDgwMDMsCisweDM4ODEwNjAyLAorMHg0MDIwMDA3ZiwKKzB4MzI3ZmQ3ODAsCisweDQwOWZmZTAyLAorMHgxMDAwN2YwYywKKzB4NDA4MDAyMDUsCisweDMwODAxMjA0LAorMHg0MDgwMDQwNiwKKzB4M2VjNDAwODMsCisweDNhYzE0NjA3LAorMHgzYWMxODYwOCwKKzB4YjA4MTAxMDMsCisweDQxM2Q4MDAyLAorMHgyMDgwMTIwNCwKKzB4Mzg4MTQ2MDMsCisweDQwMjAwMDdmLAorMHgzMjdmZWI4MCwKKzB4NDA5ZmZlMDIsCisweDMwODAxMjAzLAorMHg0MDgwMDIwNCwKKzB4M2VjNDAwODcsCisweDQwODAwNDA1LAorMHgxMDAwNjUwYSwKKzB4NDA4MDA2MDYsCisweDNhYzEwNjA4LAorMHgzYWMxNDYwOSwKKzB4M2FjMTg2MGEsCisweGIwNjBjMTA3LAorMHgyMDgwMTIwMywKKzB4Mzg4MTA2MDIsCisweGIwNDA4NTg4LAorMHg0MDIwMDA3ZiwKKzB4MzI3ZmM5ODAsCisweDAwNDAwMDAwLAorMHg0MDgwMDAwMywKKzB4NDAyMDAwN2YsCisweDM1MDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKIH07CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3NhdmVfZHVtcC5oX3NoaXBwZWQgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3NhdmVfZHVtcC5oX3NoaXBwZWQKaW5kZXggMzllNTQwMC4uYjlmODFhYyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdV9zYXZlX2R1bXAuaF9zaGlwcGVkCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVfc2F2ZV9kdW1wLmhfc2hpcHBlZApAQCAtMywxODkgKzMsNzQxIEBACiAgKiBIZXgtZHVtcCBhdXRvIGdlbmVyYXRlZCBmcm9tIHNwdV9zYXZlLmMuCiAgKiBEbyBub3QgZWRpdCEKICAqLwotc3RhdGljIHVuc2lnbmVkIGludCBzcHVfc2F2ZV9jb2RlW10gX19wYWdlX2FsaWduZWQgPSB7Ci0weDIwODA1MDAwLCAweDIwODA1MjAxLCAweDIwODA1NDAyLCAweDIwODA1NjAzLAotMHgyMDgwNTgwNCwgMHgyMDgwNWEwNSwgMHgyMDgwNWMwNiwgMHgyMDgwNWUwNywKLTB4MjA4MDYwMDgsIDB4MjA4MDYyMDksIDB4MjA4MDY0MGEsIDB4MjA4MDY2MGIsCi0weDIwODA2ODBjLCAweDIwODA2YTBkLCAweDIwODA2YzBlLCAweDIwODA2ZTBmLAotMHg0MjAxYzAwMywgMHgzMzgwMDE4NCwgMHgxYzAxMDIwNCwgMHg0MDIwMDAwMCwKLTB4MjQwMDAxOTAsIDB4MjQwMDQxOTEsIDB4MjQwMDgxOTIsIDB4MjQwMGMxOTMsCi0weDE0MWZjMjA1LCAweDIzZmZmZDg0LCAweDFjMTAwMTgzLCAweDIxN2ZmYjg1LAotMHg0MDgwMDAwMCwgMHg0MDlmZjgwMSwgMHgyNDAwMDA4MCwgMHgyNGZkODA4MSwKLTB4MWNkODAwODEsIDB4MzMwMDAxODAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAxYTAwMTgyLCAweDNlYzAwMDgzLCAweGIxYzM4MTAzLCAweDAxYTAwMjA0LAotMHgzZWMxMDA4MiwgMHg0MjAxNDAwZCwgMHhiMWMzODIwMiwgMHgwMWEwMDU4MywKLTB4MzQyMTg2ODIsIDB4M2VkODA2ODQsIDB4YjA0MDgxODQsIDB4MjQyMTg2ODIsCi0weDAxYTAwNjAzLCAweDAwMjAwMDAwLCAweDM0MjE0NjgyLCAweDNlZDQwNjg0LAotMHhiMDQwODE4NCwgMHg0MDgwMDAwMywgMHgyNDIxNDY4MiwgMHgyMWEwMDA4MywKLTB4NDA4MDAwODIsIDB4MjFhMDBiMDIsIDB4NDAyMDAwN2YsIDB4MTAwMDI1MWUsCi0weDQwYTgwMDAyLCAweDMyODAwMDA4LCAweDQyMDVjMDBjLCAweDAwMjAwMDAwLAotMHg0MGEwMDAwYiwgMHgzZjgyMDcwZiwgMHg0MDgwMDIwYSwgMHg0MDgwMDcwOSwKLTB4M2ZlMzA3OGYsIDB4M2ZiZjA3ODMsIDB4M2YyMDAxODMsIDB4M2ZiZTAxODMsCi0weDNmZTMwMTg3LCAweDE4MDA4Mzg3LCAweDQyMDVjMDAyLCAweDNhYzMwNDA0LAotMHgxY2ZmYzQ4OSwgMHgwMDIwMDAwMCwgMHgxODAwODQwMywgMHgzODgzMDQwMiwKLTB4NGNmZmM0ODYsIDB4M2FjMjgxODUsIDB4YjA0MDg1ODQsIDB4Mjg4MzA0MDIsCi0weDFjMDIwNDA4LCAweDM4ODI4MTgyLCAweGIwNDA4Mzg1LCAweDE4MDJjMzg3LAotMHgyODgyODE4MiwgMHgyMTdmZjg4NiwgMHgwNDAwMDU4MiwgMHgzMjgwMDAwNywKLTB4MjFhMDA4MDIsIDB4M2ZiZjA3MDUsIDB4M2YyMDAyODUsIDB4M2ZiZTAyODUsCi0weDNmZTMwMjg1LCAweDIxYTAwODg1LCAweDA0MDAwNjAzLCAweDIxYTAwOTAzLAotMHg0MDgwM2MwMiwgMHgyMWEwMDk4MiwgMHgwNDAwMDM4NiwgMHgyMWEwMGEwNiwKLTB4NDA4MDEyMDIsIDB4MjFhMDBhODIsIDB4NzMwMDAwMDMsIDB4MjQyMDA2ODMsCi0weDAxYTAwNDA0LCAweDAwMjAwMDAwLCAweDM0MjA0NjgyLCAweDNlYzQwNjgzLAotMHhiMDQwODIwMywgMHgyNDIwNDY4MiwgMHgwMWEwMDc4MywgMHgwMDIwMDAwMCwKLTB4MzQyMWM2ODIsIDB4M2VkYzA2ODQsIDB4YjA0MDgxODQsIDB4MjQyMWM2ODIsCi0weDIxYTAwODA2LCAweDIxYTAwODg1LCAweDNmYmYwNzg0LCAweDNmMjAwMjA0LAotMHgzZmJlMDIwNCwgMHgzZmUzMDIwNCwgMHgyMWEwMDkwNCwgMHg0MDgwNDAwMiwKLTB4MjFhMDA5ODIsIDB4MjFhMDBhMDYsIDB4NDA4MDVhMDIsIDB4MjFhMDBhODIsCi0weDA0MDAwNjgzLCAweDIxYTAwODAzLCAweDIxYTAwODg1LCAweDIxYTAwOTA0LAotMHg0MDg0ODAwMiwgMHgyMWEwMDk4MiwgMHgyMWEwMGEwNiwgMHg0MDgwMTAwMiwKLTB4MjFhMDBhODIsIDB4MjFhMDBhMDYsIDB4NDA4MDY2MDIsIDB4MDAyMDAwMDAsCi0weDM1ODAwMDA5LCAweDIxYTAwYTgyLCAweDQwODAwMDgzLCAweDIxYTAwYjgzLAotMHgwMWEwMGMwMiwgMHgwMWEwMGQ4MywgMHgwMDAwM2ZmYiwgMHg0MDgwMDAwMywKLTB4NDAyMDAwN2YsIDB4MzUwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0weDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAorc3RhdGljIHVuc2lnbmVkIGludCBzcHVfc2F2ZV9jb2RlW10gIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEyOCkpKSA9IHsKKzB4MjA4MDUwMDAsCisweDIwODA1MjAxLAorMHgyMDgwNTQwMiwKKzB4MjA4MDU2MDMsCisweDIwODA1ODA0LAorMHgyMDgwNWEwNSwKKzB4MjA4MDVjMDYsCisweDIwODA1ZTA3LAorMHgyMDgwNjAwOCwKKzB4MjA4MDYyMDksCisweDIwODA2NDBhLAorMHgyMDgwNjYwYiwKKzB4MjA4MDY4MGMsCisweDIwODA2YTBkLAorMHgyMDgwNmMwZSwKKzB4MjA4MDZlMGYsCisweDQyMDFjMDAzLAorMHgzMzgwMDE4NCwKKzB4MWMwMTAyMDQsCisweDQwMjAwMDAwLAorMHgyNDAwMDE5MCwKKzB4MjQwMDQxOTEsCisweDI0MDA4MTkyLAorMHgyNDAwYzE5MywKKzB4MTQxZmMyMDUsCisweDIzZmZmZDg0LAorMHgxYzEwMDE4MywKKzB4MjE3ZmZiODUsCisweDQwODAwMDAwLAorMHg0MDlmZjgwMSwKKzB4MjQwMDAwODAsCisweDI0ZmQ4MDgxLAorMHgxY2Q4MDA4MSwKKzB4MzMwMDAxODAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDFhMDAxODIsCisweDNlYzAwMDgzLAorMHhiMWMzODEwMywKKzB4MDFhMDAyMDQsCisweDNlYzEwMDgyLAorMHg0MjAxNDAwZCwKKzB4YjFjMzgyMDIsCisweDAxYTAwNTgzLAorMHgzNDIxODY4MiwKKzB4M2VkODA2ODQsCisweGIwNDA4MTg0LAorMHgyNDIxODY4MiwKKzB4MDFhMDA2MDMsCisweDAwMjAwMDAwLAorMHgzNDIxNDY4MiwKKzB4M2VkNDA2ODQsCisweGIwNDA4MTg0LAorMHg0MDgwMDAwMywKKzB4MjQyMTQ2ODIsCisweDIxYTAwMDgzLAorMHg0MDgwMDA4MiwKKzB4MjFhMDBiMDIsCisweDQwMjAwMDdmLAorMHgxMDAwMjUxZSwKKzB4NDJhMDAwMDIsCisweDMyODAwMDA4LAorMHg0MjA1YzAwYywKKzB4MDAyMDAwMDAsCisweDQwYTAwMDBiLAorMHgzZjgyMDcwZiwKKzB4NDA4MDAyMGEsCisweDQwODAwNzA5LAorMHgzZmUzMDc4ZiwKKzB4M2ZiZjA3ODMsCisweDNmMjAwMTgzLAorMHgzZmJlMDE4MywKKzB4M2ZlMzAxODcsCisweDE4MDA4Mzg3LAorMHg0MjA1YzAwMiwKKzB4M2FjMzA0MDQsCisweDFjZmZjNDg5LAorMHgwMDIwMDAwMCwKKzB4MTgwMDg0MDMsCisweDM4ODMwNDAyLAorMHg0Y2ZmYzQ4NiwKKzB4M2FjMjgxODUsCisweGIwNDA4NTg0LAorMHgyODgzMDQwMiwKKzB4MWMwMjA0MDgsCisweDM4ODI4MTgyLAorMHhiMDQwODM4NSwKKzB4MTgwMmMzODcsCisweDI4ODI4MTgyLAorMHgyMTdmZjg4NiwKKzB4MDQwMDA1ODIsCisweDMyODAwMDA3LAorMHgyMWEwMDgwMiwKKzB4M2ZiZjA3MDUsCisweDNmMjAwMjg1LAorMHgzZmJlMDI4NSwKKzB4M2ZlMzAyODUsCisweDIxYTAwODg1LAorMHgwNDAwMDYwMywKKzB4MjFhMDA5MDMsCisweDQwODAzYzAyLAorMHgyMWEwMDk4MiwKKzB4MDQwMDAzODYsCisweDIxYTAwYTA2LAorMHg0MDgwMTIwMiwKKzB4MjFhMDBhODIsCisweDczMDAwMDAzLAorMHgyNDIwMDY4MywKKzB4MDFhMDA0MDQsCisweDAwMjAwMDAwLAorMHgzNDIwNDY4MiwKKzB4M2VjNDA2ODMsCisweGIwNDA4MjAzLAorMHgyNDIwNDY4MiwKKzB4MDFhMDA3ODMsCisweDAwMjAwMDAwLAorMHgzNDIxYzY4MiwKKzB4M2VkYzA2ODQsCisweGIwNDA4MTg0LAorMHgyNDIxYzY4MiwKKzB4MjFhMDA4MDYsCisweDIxYTAwODg1LAorMHgzZmJmMDc4NCwKKzB4M2YyMDAyMDQsCisweDNmYmUwMjA0LAorMHgzZmUzMDIwNCwKKzB4MjFhMDA5MDQsCisweDQwODA0MDAyLAorMHgyMWEwMDk4MiwKKzB4MjFhMDBhMDYsCisweDQwODA1YTAyLAorMHgyMWEwMGE4MiwKKzB4MDQwMDA2ODMsCisweDIxYTAwODAzLAorMHgyMWEwMDg4NSwKKzB4MjFhMDA5MDQsCisweDQwODQ4MDAyLAorMHgyMWEwMDk4MiwKKzB4MjFhMDBhMDYsCisweDQwODAxMDAyLAorMHgyMWEwMGE4MiwKKzB4MjFhMDBhMDYsCisweDQwODA2NjAyLAorMHgwMDIwMDAwMCwKKzB4MzU4MDAwMDksCisweDIxYTAwYTgyLAorMHg0MDgwMDA4MywKKzB4MjFhMDBiODMsCisweDAxYTAwYzAyLAorMHgwMWEwMGQ4MywKKzB4MDAwMDNmZmIsCisweDQwODAwMDAzLAorMHg0MDIwMDA3ZiwKKzB4MzUwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCisweDAwMDAwMDAwLAorMHgwMDAwMDAwMCwKKzB4MDAwMDAwMDAsCiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3N3aXRjaC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3N3aXRjaC5jCmluZGV4IDE3MjZiZmUuLmIzMGU1NWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zd2l0Y2guYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3dpdGNoLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKIAogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9zcHUuaD4KKyNpbmNsdWRlIDxhc20vc3B1X3ByaXYxLmg+CiAjaW5jbHVkZSA8YXNtL3NwdV9jc2EuaD4KICNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4KIApAQCAtNjIyLDEyICs2MjMsMTcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzYXZlX2NoX3BhcnQxKHN0cnVjdCBzcHVfc3RhdGUgKmNzYSwgc3RydWN0IHNwdSAqc3B1KQogewogCXN0cnVjdCBzcHVfcHJpdjIgX19pb21lbSAqcHJpdjIgPSBzcHUtPnByaXYyOwotCXU2NCBpZHgsIGNoX2luZGljZXNbN10gPSB7IDBVTCwgMVVMLCAzVUwsIDRVTCwgMjRVTCwgMjVVTCwgMjdVTCB9OworCXU2NCBpZHgsIGNoX2luZGljZXNbN10gPSB7IDBVTCwgM1VMLCA0VUwsIDI0VUwsIDI1VUwsIDI3VUwgfTsKIAlpbnQgaTsKIAogCS8qIFNhdmUsIFN0ZXAgNDI6Ci0JICogICAgIFNhdmUgdGhlIGZvbGxvd2luZyBDSDogWzAsMSwzLDQsMjQsMjUsMjddCiAJICovCisKKwkvKiBTYXZlIENIIDEsIHdpdGhvdXQgY2hhbm5lbCBjb3VudCAqLworCW91dF9iZTY0KCZwcml2Mi0+c3B1X2NobmxjbnRwdHJfUlcsIDEpOworCWNzYS0+c3B1X2NobmxkYXRhX1JXWzFdID0gaW5fYmU2NCgmcHJpdjItPnNwdV9jaG5sZGF0YV9SVyk7CisKKwkvKiBTYXZlIHRoZSBmb2xsb3dpbmcgQ0g6IFswLDMsNCwyNCwyNSwyN10gKi8KIAlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAJCWlkeCA9IGNoX2luZGljZXNbaV07CiAJCW91dF9iZTY0KCZwcml2Mi0+c3B1X2NobmxjbnRwdHJfUlcsIGlkeCk7CkBAIC03MTgsMTMgKzcyNCwxNSBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X2tlcm5lbF9zbGIodTY0IGVhLCB1NjQgc2xiWzJdKQogewotCXNsYlswXSA9IChnZXRfa2VybmVsX3ZzaWQoZWEpIDw8IFNMQl9WU0lEX1NISUZUKSB8IFNMQl9WU0lEX0tFUk5FTDsKLQlzbGJbMV0gPSAoZWEgJiBFU0lEX01BU0spIHwgU0xCX0VTSURfVjsKKwl1NjQgbGxwOwogCi0JLyogTGFyZ2UgcGFnZXMgYXJlIHVzZWQgZm9yIGtlcm5lbCB0ZXh0L2RhdGEsIGJ1dCBub3Qgdm1hbGxvYy4gICovCi0JaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSXzE2TV9QQUdFKQotCSAgICAmJiBSRUdJT05fSUQoZWEpID09IEtFUk5FTF9SRUdJT05fSUQpCi0JCXNsYlswXSB8PSBTTEJfVlNJRF9MOworCWlmIChSRUdJT05fSUQoZWEpID09IEtFUk5FTF9SRUdJT05fSUQpCisJCWxscCA9IG1tdV9wc2l6ZV9kZWZzW21tdV9saW5lYXJfcHNpemVdLnNsbHA7CisJZWxzZQorCQlsbHAgPSBtbXVfcHNpemVfZGVmc1ttbXVfdmlydHVhbF9wc2l6ZV0uc2xscDsKKwlzbGJbMF0gPSAoZ2V0X2tlcm5lbF92c2lkKGVhKSA8PCBTTEJfVlNJRF9TSElGVCkgfAorCQlTTEJfVlNJRF9LRVJORUwgfCBsbHA7CisJc2xiWzFdID0gKGVhICYgRVNJRF9NQVNLKSB8IFNMQl9FU0lEX1Y7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2FkX21mY19zbGIoc3RydWN0IHNwdSAqc3B1LCB1NjQgc2xiWzJdLCBpbnQgc2xiZSkKQEAgLTExMDMsMTMgKzExMTEsMTggQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9jaF9wYXJ0MShzdHJ1Y3Qgc3B1X3N0YXRlICpjc2EsIHN0cnVjdCBzcHUgKnNwdSkKIHsKIAlzdHJ1Y3Qgc3B1X3ByaXYyIF9faW9tZW0gKnByaXYyID0gc3B1LT5wcml2MjsKLQl1NjQgY2hfaW5kaWNlc1s3XSA9IHsgMFVMLCAxVUwsIDNVTCwgNFVMLCAyNFVMLCAyNVVMLCAyN1VMIH07CisJdTY0IGNoX2luZGljZXNbN10gPSB7IDBVTCwgM1VMLCA0VUwsIDI0VUwsIDI1VUwsIDI3VUwgfTsKIAl1NjQgaWR4OwogCWludCBpOwogCiAJLyogUmVzdG9yZSwgU3RlcCAyMDoKLQkgKiAgICAgUmVzZXQgdGhlIGZvbGxvd2luZyBDSDogWzAsMSwzLDQsMjQsMjUsMjddCiAJICovCisKKwkvKiBSZXNldCBDSCAxICovCisJb3V0X2JlNjQoJnByaXYyLT5zcHVfY2hubGNudHB0cl9SVywgMSk7CisJb3V0X2JlNjQoJnByaXYyLT5zcHVfY2hubGRhdGFfUlcsIDBVTCk7CisKKwkvKiBSZXNldCB0aGUgZm9sbG93aW5nIENIOiBbMCwzLDQsMjQsMjUsMjddICovCiAJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewogCQlpZHggPSBjaF9pbmRpY2VzW2ldOwogCQlvdXRfYmU2NCgmcHJpdjItPnNwdV9jaG5sY250cHRyX1JXLCBpZHgpOwpAQCAtMTU3MCwxMiArMTU4MywxNyBAQAogc3RhdGljIGlubGluZSB2b2lkIHJlc3RvcmVfY2hfcGFydDEoc3RydWN0IHNwdV9zdGF0ZSAqY3NhLCBzdHJ1Y3Qgc3B1ICpzcHUpCiB7CiAJc3RydWN0IHNwdV9wcml2MiBfX2lvbWVtICpwcml2MiA9IHNwdS0+cHJpdjI7Ci0JdTY0IGlkeCwgY2hfaW5kaWNlc1s3XSA9IHsgMFVMLCAxVUwsIDNVTCwgNFVMLCAyNFVMLCAyNVVMLCAyN1VMIH07CisJdTY0IGlkeCwgY2hfaW5kaWNlc1s3XSA9IHsgMFVMLCAzVUwsIDRVTCwgMjRVTCwgMjVVTCwgMjdVTCB9OwogCWludCBpOwogCiAJLyogUmVzdG9yZSwgU3RlcCA1OToKLQkgKiAgICAgUmVzdG9yZSB0aGUgZm9sbG93aW5nIENIOiBbMCwxLDMsNCwyNCwyNSwyN10KIAkgKi8KKworCS8qIFJlc3RvcmUgQ0ggMSB3aXRob3V0IGNvdW50ICovCisJb3V0X2JlNjQoJnByaXYyLT5zcHVfY2hubGNudHB0cl9SVywgMSk7CisJb3V0X2JlNjQoJnByaXYyLT5zcHVfY2hubGRhdGFfUlcsIGNzYS0+c3B1X2NobmxkYXRhX1JXWzFdKTsKKworCS8qIFJlc3RvcmUgdGhlIGZvbGxvd2luZyBDSDogWzAsMyw0LDI0LDI1LDI3XSAqLwogCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHsKIAkJaWR4ID0gY2hfaW5kaWNlc1tpXTsKIAkJb3V0X2JlNjQoJnByaXYyLT5zcHVfY2hubGNudHB0cl9SVywgaWR4KTsKQEAgLTIwNzQsNiArMjA5Miw3IEBACiAJfQogCXJldHVybiByYzsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHNwdV9zYXZlKTsKIAogLyoqCiAgKiBzcHVfcmVzdG9yZSAtIFNQVSBjb250ZXh0IHJlc3RvcmUsIHdpdGggaGFydmVzdCBhbmQgbG9ja2luZy4KQEAgLTIwOTAsNyArMjEwOSw2IEBACiAKIAlhY3F1aXJlX3NwdV9sb2NrKHNwdSk7CiAJaGFydmVzdChOVUxMLCBzcHUpOwotCXNwdS0+c3RvcF9jb2RlID0gMDsKIAlzcHUtPmRhciA9IDA7CiAJc3B1LT5kc2lzciA9IDA7CiAJc3B1LT5zbGJfcmVwbGFjZSA9IDA7CkBAIC0yMTAzLDYgKzIxMjEsNyBAQAogCX0KIAlyZXR1cm4gcmM7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChzcHVfcmVzdG9yZSk7CiAKIC8qKgogICogc3B1X2hhcnZlc3QgLSBTUFUgaGFydmVzdCAocmVzZXQpIG9wZXJhdGlvbgpAQCAtMjEyNSw2ICsyMTQ0LDcgQEAKIAljc2EtPnNwdV9jaG5sY250X1JXWzI4XSA9IDE7CiAJY3NhLT5zcHVfY2hubGNudF9SV1szMF0gPSAxOwogCWNzYS0+cHJvYi5zcHVfcnVuY250bF9SVyA9IFNQVV9SVU5DTlRMX1NUT1A7CisJY3NhLT5wcm9iLm1iX3N0YXRfUiA9IDB4MDAwNDAwOwogfQogCiBzdGF0aWMgdm9pZCBpbml0X3ByaXYxKHN0cnVjdCBzcHVfc3RhdGUgKmNzYSkKQEAgLTIxOTMsNiArMjIxMyw3IEBACiAJaW5pdF9wcml2MShjc2EpOwogCWluaXRfcHJpdjIoY3NhKTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHNwdV9pbml0X2NzYSk7CiAKIHZvaWQgc3B1X2ZpbmlfY3NhKHN0cnVjdCBzcHVfc3RhdGUgKmNzYSkKIHsKQEAgLTIyMDMsMyArMjIyNCw0IEBACiAKIAl2ZnJlZShjc2EtPmxzY3NhKTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHNwdV9maW5pX2NzYSk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvTWFrZWZpbGUKaW5kZXggY2U4YzBiOS4uZGVlNGViNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9NYWtlZmlsZQpAQCAtMSw5ICsxLDExIEBACiBFWFRSQV9DRkxBR1MJKz0gLW1uby1taW5pbWFsLXRvYwogCi1vYmoteSArPSBodmxvZy5vIGh2bHBjb25maWcubyBscGFyZGF0YS5vIHNldHVwLm8gbWYubyBscGV2ZW50cy5vIFwKK29iai15ICs9IGh2bG9nLm8gaHZscGNvbmZpZy5vIGxwYXJkYXRhLm8gc2V0dXAubyBkdF9tb2QubyBtZi5vIGxwZXZlbnRzLm8gXAogCWh2Y2FsbC5vIHByb2MubyBodGFiLm8gaW9tbXUubyBtaXNjLm8gaXJxLm8KIG9iai0kKENPTkZJR19QQ0kpICs9IHBjaS5vIHZwZGluZm8ubwotb2JqLSQoQ09ORklHX0lCTVZJTykgKz0gdmlvLm8KIG9iai0kKENPTkZJR19TTVApICs9IHNtcC5vCiBvYmotJChDT05GSUdfVklPUEFUSCkgKz0gdmlvcGF0aC5vCiBvYmotJChDT05GSUdfTU9EVUxFUykgKz0ga3N5bXMubworCiskKG9iaikvZHRfbW9kLm86CSQob2JqKS9kdC5vCisJQCQoT0JKQ09QWSkgLS1yZW5hbWUtc2VjdGlvbiAucm9kYXRhLnN0cjEuOD0uZHRfc3RyaW5ncyAkKG9iaikvZHQubyAkKG9iaikvZHRfbW9kLm8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9jYWxsX3BjaS5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2NhbGxfcGNpLmgKaW5kZXggNTlkNGUwYS4uZGJkZjY5OCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2NhbGxfcGNpLmgKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2NhbGxfcGNpLmgKQEAgLTE0NSw2ICsxNDUsMjUgQEAKIAlyZXR1cm4gcmV0VmFsLnJjOwogfQogCitzdGF0aWMgaW5saW5lIHU2NCBIdkNhbGxQY2lfY29uZmlnTG9hZDMyKHUxNiBidXNOdW1iZXIsIHU4IHN1YkJ1c051bWJlciwKKwkJdTggZGV2aWNlSWQsIHUzMiBvZmZzZXQsIHUzMiAqdmFsdWUpCit7CisJc3RydWN0IEh2Q2FsbFBjaV9Ec2FBZGRyIGRzYTsKKwlzdHJ1Y3QgSHZDYWxsUGNpX0xvYWRSZXR1cm4gcmV0VmFsOworCisJKigodTY0KikmZHNhKSA9IDA7CisKKwlkc2EuYnVzTnVtYmVyID0gYnVzTnVtYmVyOworCWRzYS5zdWJCdXNOdW1iZXIgPSBzdWJCdXNOdW1iZXI7CisJZHNhLmRldmljZUlkID0gZGV2aWNlSWQ7CisKKwlIdkNhbGwzUmV0MTYoSHZDYWxsUGNpQ29uZmlnTG9hZDMyLCAmcmV0VmFsLCAqKHU2NCAqKSZkc2EsIG9mZnNldCwgMCk7CisKKwkqdmFsdWUgPSByZXRWYWwudmFsdWU7CisKKwlyZXR1cm4gcmV0VmFsLnJjOworfQorCiBzdGF0aWMgaW5saW5lIHU2NCBIdkNhbGxQY2lfY29uZmlnU3RvcmU4KHUxNiBidXNOdW1iZXIsIHU4IHN1YkJ1c051bWJlciwKIAkJdTggZGV2aWNlSWQsIHUzMiBvZmZzZXQsIHU4IHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2R0LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvZHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzQ0NGFhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2R0LmMKQEAgLTAsMCArMSw2MTUgQEAKKy8qCisgKiAgICBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNiBNaWNoYWVsIEVsbGVybWFuLCBJQk0gQ29ycG9yYXRpb24KKyAqCisgKiAgICBEZXNjcmlwdGlvbjoKKyAqICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgcm91dGluZXMgdG8gYnVpbGQgYSBmbGF0dGVuZWQgZGV2aWNlCisgKiAgICAgIHRyZWUgZm9yIGEgbGVnYWN5IGlTZXJpZXMgbWFjaGluZS4KKyAqCisgKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICAgICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCisgKiAgICAgIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI3VuZGVmIERFQlVHCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2lfcmVncy5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaV9pZHMuaD4KKyNpbmNsdWRlIDxsaW51eC90aHJlYWRzLmg+CisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4JLyogRVRIX0FMRU4gKi8KKworI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KKyNpbmNsdWRlIDxhc20vbHBwYWNhLmg+CisjaW5jbHVkZSA8YXNtL2NwdXRhYmxlLmg+CisjaW5jbHVkZSA8YXNtL2Fic19hZGRyLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2h2X3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaHZfbHBfY29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaHZfY2FsbF94bS5oPgorI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2l0X2V4cF92cGRfcGFuZWwuaD4KKyNpbmNsdWRlIDxhc20vdWRiZy5oPgorCisjaW5jbHVkZSAicHJvY2Vzc29yX3ZwZC5oIgorI2luY2x1ZGUgImNhbGxfaHB0LmgiCisjaW5jbHVkZSAiY2FsbF9wY2kuaCIKKyNpbmNsdWRlICJwY2kuaCIKKworI2lmZGVmIERFQlVHCisjZGVmaW5lIERCRyhmbXQuLi4pIHVkYmdfcHJpbnRmKGZtdCkKKyNlbHNlCisjZGVmaW5lIERCRyhmbXQuLi4pCisjZW5kaWYKKworLyoKKyAqIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IHRoZSBsaW5rZXIgc2NyaXB0IGF0IHRoZSBzdGFydCBhbmQgZW5kCisgKiBvZiB0aGUgc2VjdGlvbiBjb250YWluaW5nIGFsbCB0aGUgc3RyaW5ncyBmcm9tIHRoaXMgZmlsZS4KKyAqLworZXh0ZXJuIGNoYXIgX19kdF9zdHJpbmdzX3N0YXJ0W107CitleHRlcm4gY2hhciBfX2R0X3N0cmluZ3NfZW5kW107CisKK3N0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgeworCXN0cnVjdCBib290X3BhcmFtX2hlYWRlciBoZWFkZXI7CisJdTY0IHJlc2VydmVfbWFwWzJdOworfTsKKworc3RhdGljIHZvaWQgKiBfX2luaXRkYXRhIGR0X2RhdGE7CisKKy8qCisgKiBQdXR0aW5nIHRoZXNlIHN0cmluZ3MgaGVyZSBrZWVwcyB0aGVtIG91dCBvZiB0aGUgc2VjdGlvbgorICogdGhhdCB3ZSByZW5hbWUgdG8gLmR0X3N0cmluZ3MgdXNpbmcgb2JqY29weSBhbmQgY2FwdHVyZQorICogZm9yIHRoZSBzdHJpbmdzIGJsb2Igb2YgdGhlIGZsYXR0ZW5lZCBkZXZpY2UgdHJlZS4KKyAqLworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBkZXZpY2VfdHlwZV9jcHVbXSA9ICJjcHUiOworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBkZXZpY2VfdHlwZV9tZW1vcnlbXSA9ICJtZW1vcnkiOworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBkZXZpY2VfdHlwZV9zZXJpYWxbXSA9ICJzZXJpYWwiOworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBkZXZpY2VfdHlwZV9uZXR3b3JrW10gPSAibmV0d29yayI7CitzdGF0aWMgY2hhciBfX2luaXRkYXRhIGRldmljZV90eXBlX2Jsb2NrW10gPSAiYmxvY2siOworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBkZXZpY2VfdHlwZV9ieXRlW10gPSAiYnl0ZSI7CitzdGF0aWMgY2hhciBfX2luaXRkYXRhIGRldmljZV90eXBlX3BjaVtdID0gInBjaSI7CitzdGF0aWMgY2hhciBfX2luaXRkYXRhIGRldmljZV90eXBlX3ZkZXZpY2VbXSA9ICJ2ZGV2aWNlIjsKK3N0YXRpYyBjaGFyIF9faW5pdGRhdGEgZGV2aWNlX3R5cGVfdnNjc2lbXSA9ICJ2c2NzaSI7CisKK3N0YXRpYyBzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICogX19pbml0IGR0X2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdDsKKwl1bnNpZ25lZCBsb25nIHN0cl9sZW47CisKKwlzdHJfbGVuID0gX19kdF9zdHJpbmdzX2VuZCAtIF9fZHRfc3RyaW5nc19zdGFydDsKKwlkdCA9IChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICopQUxJR04oa2xpbWl0LCA4KTsKKwlkdC0+aGVhZGVyLm9mZl9tZW1fcnN2bWFwID0KKwkJb2Zmc2V0b2Yoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCwgcmVzZXJ2ZV9tYXApOworCWR0LT5oZWFkZXIub2ZmX2R0X3N0cmluZ3MgPSBBTElHTihzaXplb2YoKmR0KSwgOCk7CisJZHQtPmhlYWRlci5vZmZfZHRfc3RydWN0ID0gZHQtPmhlYWRlci5vZmZfZHRfc3RyaW5ncworCQkrIEFMSUdOKHN0cl9sZW4sIDgpOworCWR0X2RhdGEgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylkdCArIGR0LT5oZWFkZXIub2ZmX2R0X3N0cnVjdCk7CisJZHQtPmhlYWRlci5kdF9zdHJpbmdzX3NpemUgPSBzdHJfbGVuOworCisJLyogVGhlcmUgaXMgbm8gbm90aW9uIG9mIGhhcmR3YXJlIGNwdSBpZCBvbiBpU2VyaWVzICovCisJZHQtPmhlYWRlci5ib290X2NwdWlkX3BoeXMgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKwltZW1jcHkoKGNoYXIgKilkdCArIGR0LT5oZWFkZXIub2ZmX2R0X3N0cmluZ3MsIF9fZHRfc3RyaW5nc19zdGFydCwKKwkJCXN0cl9sZW4pOworCisJZHQtPmhlYWRlci5tYWdpYyA9IE9GX0RUX0hFQURFUjsKKwlkdC0+aGVhZGVyLnZlcnNpb24gPSAweDEwOworCWR0LT5oZWFkZXIubGFzdF9jb21wX3ZlcnNpb24gPSAweDEwOworCisJZHQtPnJlc2VydmVfbWFwWzBdID0gMDsKKwlkdC0+cmVzZXJ2ZV9tYXBbMV0gPSAwOworCisJcmV0dXJuIGR0OworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHVzaF91MzIoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQsIHUzMiB2YWx1ZSkKK3sKKwkqKCh1MzIgKilkdF9kYXRhKSA9IHZhbHVlOworCWR0X2RhdGEgKz0gc2l6ZW9mKHUzMik7Cit9CisKKyNpZmRlZiBub3R5ZXQKK3N0YXRpYyB2b2lkIF9faW5pdCBkdF9wdXNoX3U2NChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgdTY0IHZhbHVlKQoreworCSooKHU2NCAqKWR0X2RhdGEpID0gdmFsdWU7CisJZHRfZGF0YSArPSBzaXplb2YodTY0KTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHVzaF9ieXRlcyhzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY29uc3QgY2hhciAqZGF0YSwKKwkJaW50IGxlbikKK3sKKwltZW1jcHkoZHRfZGF0YSwgZGF0YSwgbGVuKTsKKwlkdF9kYXRhICs9IEFMSUdOKGxlbiwgNCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBkdF9zdGFydF9ub2RlKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBjb25zdCBjaGFyICpuYW1lKQoreworCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9CRUdJTl9OT0RFKTsKKwlkdF9wdXNoX2J5dGVzKGR0LCBuYW1lLCBzdHJsZW4obmFtZSkgKyAxKTsKK30KKworI2RlZmluZSBkdF9lbmRfbm9kZShkdCkgZHRfcHVzaF91MzIoZHQsIE9GX0RUX0VORF9OT0RFKQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY29uc3QgY2hhciAqbmFtZSwKKwkJY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBsb25nIG9mZnNldDsKKworCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9QUk9QKTsKKworCS8qIExlbmd0aCBvZiB0aGUgZGF0YSAqLworCWR0X3B1c2hfdTMyKGR0LCBsZW4pOworCisJb2Zmc2V0ID0gbmFtZSAtIF9fZHRfc3RyaW5nc19zdGFydDsKKworCS8qIFRoZSBvZmZzZXQgb2YgdGhlIHByb3BlcnRpZXMgbmFtZSBpbiB0aGUgc3RyaW5nIGJsb2IuICovCisJZHRfcHVzaF91MzIoZHQsICh1MzIpb2Zmc2V0KTsKKworCS8qIFRoZSBhY3R1YWwgZGF0YS4gKi8KKwlkdF9wdXNoX2J5dGVzKGR0LCBkYXRhLCBsZW4pOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcF9zdHIoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQsIGNvbnN0IGNoYXIgKm5hbWUsCisJCWNvbnN0IGNoYXIgKmRhdGEpCit7CisJZHRfcHJvcChkdCwgbmFtZSwgZGF0YSwgc3RybGVuKGRhdGEpICsgMSk7IC8qICsgMSBmb3IgTlVMTCAqLworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcF91MzIoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQsIGNvbnN0IGNoYXIgKm5hbWUsCisJCXUzMiBkYXRhKQoreworCWR0X3Byb3AoZHQsIG5hbWUsICZkYXRhLCBzaXplb2YodTMyKSk7Cit9CisKKyNpZmRlZiBub3R5ZXQKK3N0YXRpYyB2b2lkIF9faW5pdCBkdF9wcm9wX3U2NChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY29uc3QgY2hhciAqbmFtZSwKKwkJdTY0IGRhdGEpCit7CisJZHRfcHJvcChkdCwgbmFtZSwgJmRhdGEsIHNpemVvZih1NjQpKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcF91NjRfbGlzdChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwKKwkJY29uc3QgY2hhciAqbmFtZSwgdTY0ICpkYXRhLCBpbnQgbikKK3sKKwlkdF9wcm9wKGR0LCBuYW1lLCBkYXRhLCBzaXplb2YodTY0KSAqIG4pOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcF91MzJfbGlzdChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwKKwkJY29uc3QgY2hhciAqbmFtZSwgdTMyICpkYXRhLCBpbnQgbikKK3sKKwlkdF9wcm9wKGR0LCBuYW1lLCBkYXRhLCBzaXplb2YodTMyKSAqIG4pOworfQorCisjaWZkZWYgbm90eWV0CitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcHJvcF9lbXB0eShzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlkdF9wcm9wKGR0LCBuYW1lLCBOVUxMLCAwKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfY3B1cyhzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCkKK3sKKwl1bnNpZ25lZCBjaGFyIGJ1ZlszMl07CisJdW5zaWduZWQgY2hhciAqcDsKKwl1bnNpZ25lZCBpbnQgaSwgaW5kZXg7CisJc3RydWN0IElvSHJpUHJvY2Vzc29yVnBkICpkOworCXUzMiBwZnRfc2l6ZVsyXTsKKworCS8qIHl1Y2sgKi8KKwlzbnByaW50ZihidWYsIDMyLCAiUG93ZXJQQywlcyIsIGN1cl9jcHVfc3BlYy0+Y3B1X25hbWUpOworCXAgPSBzdHJjaHIoYnVmLCAnICcpOworCWlmICghcCkgcCA9IGJ1ZiArIHN0cmxlbihidWYpOworCisJZHRfc3RhcnRfbm9kZShkdCwgImNwdXMiKTsKKwlkdF9wcm9wX3UzMihkdCwgIiNhZGRyZXNzLWNlbGxzIiwgMSk7CisJZHRfcHJvcF91MzIoZHQsICIjc2l6ZS1jZWxscyIsIDApOworCisJcGZ0X3NpemVbMF0gPSAwOyAvKiBOVU1BIENFQyBjb29raWUsIDAgZm9yIG5vbiBOVU1BICAqLworCXBmdF9zaXplWzFdID0gX19pbG9nMihIdkNhbGxIcHRfZ2V0SHB0UGFnZXMoKSAqIEhXX1BBR0VfU0laRSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgaSsrKSB7CisJCWlmIChscHBhY2FbaV0uZHluX3Byb2Nfc3RhdHVzID49IDIpCisJCQljb250aW51ZTsKKworCQlzbnByaW50ZihwLCAzMiAtIChwIC0gYnVmKSwgIkAlZCIsIGkpOworCQlkdF9zdGFydF9ub2RlKGR0LCBidWYpOworCisJCWR0X3Byb3Bfc3RyKGR0LCAiZGV2aWNlX3R5cGUiLCBkZXZpY2VfdHlwZV9jcHUpOworCisJCWluZGV4ID0gbHBwYWNhW2ldLmR5bl9odl9waHlzX3Byb2NfaW5kZXg7CisJCWQgPSAmeElvSHJpUHJvY2Vzc29yVnBkW2luZGV4XTsKKworCQlkdF9wcm9wX3UzMihkdCwgImktY2FjaGUtc2l6ZSIsIGQtPnhJbnN0Q2FjaGVTaXplICogMTAyNCk7CisJCWR0X3Byb3BfdTMyKGR0LCAiaS1jYWNoZS1saW5lLXNpemUiLCBkLT54SW5zdENhY2hlT3BlcmFuZFNpemUpOworCisJCWR0X3Byb3BfdTMyKGR0LCAiZC1jYWNoZS1zaXplIiwgZC0+eERhdGFMMUNhY2hlU2l6ZUtCICogMTAyNCk7CisJCWR0X3Byb3BfdTMyKGR0LCAiZC1jYWNoZS1saW5lLXNpemUiLCBkLT54RGF0YUNhY2hlT3BlcmFuZFNpemUpOworCisJCS8qIG1hZ2ljIGNvbnZlcnNpb25zIHRvIEh6IGNvcGllZCBmcm9tIG9sZCBjb2RlICovCisJCWR0X3Byb3BfdTMyKGR0LCAiY2xvY2stZnJlcXVlbmN5IiwKKwkJCSgoMVVMIDw8IDM0KSAqIDEwMDAwMDApIC8gZC0+eFByb2NGcmVxKTsKKwkJZHRfcHJvcF91MzIoZHQsICJ0aW1lYmFzZS1mcmVxdWVuY3kiLAorCQkJKCgxVUwgPDwgMzIpICogMTAwMDAwMCkgLyBkLT54VGltZUJhc2VGcmVxKTsKKworCQlkdF9wcm9wX3UzMihkdCwgInJlZyIsIGkpOworCisJCWR0X3Byb3BfdTMyX2xpc3QoZHQsICJpYm0scGZ0LXNpemUiLCBwZnRfc2l6ZSwgMik7CisKKwkJZHRfZW5kX25vZGUoZHQpOworCX0KKworCWR0X2VuZF9ub2RlKGR0KTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGR0X21vZGVsKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0KQoreworCWNoYXIgYnVmWzE2XSA9ICJJQk0sIjsKKworCS8qICJJQk0sIiArIG1mZ0lkWzI6M10gKyBzeXN0ZW1TZXJpYWxbMTo1XSAqLworCXN0cm5lMmEoYnVmICsgNCwgeEl0RXh0VnBkUGFuZWwubWZnSUQgKyAyLCAyKTsKKwlzdHJuZTJhKGJ1ZiArIDYsIHhJdEV4dFZwZFBhbmVsLnN5c3RlbVNlcmlhbCArIDEsIDUpOworCWJ1ZlsxMV0gPSAnXDAnOworCWR0X3Byb3Bfc3RyKGR0LCAic3lzdGVtLWlkIiwgYnVmKTsKKworCS8qICJJQk0sIiArIG1hY2hpbmVUeXBlWzA6NF0gKi8KKwlzdHJuZTJhKGJ1ZiArIDQsIHhJdEV4dFZwZFBhbmVsLm1hY2hpbmVUeXBlLCA0KTsKKwlidWZbOF0gPSAnXDAnOworCWR0X3Byb3Bfc3RyKGR0LCAibW9kZWwiLCBidWYpOworCisJZHRfcHJvcF9zdHIoZHQsICJjb21wYXRpYmxlIiwgIklCTSxpU2VyaWVzIik7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBkdF9kb192ZGV2aWNlKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LAorCQljb25zdCBjaGFyICpuYW1lLCB1MzIgcmVnLCBpbnQgdW5pdCwKKwkJY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqY29tcGF0LCBpbnQgZW5kKQoreworCWNoYXIgYnVmWzMyXTsKKworCXNucHJpbnRmKGJ1ZiwgMzIsICIlc0AlMDh4IiwgbmFtZSwgcmVnICsgKCh1bml0ID49IDApID8gdW5pdCA6IDApKTsKKwlkdF9zdGFydF9ub2RlKGR0LCBidWYpOworCWR0X3Byb3Bfc3RyKGR0LCAiZGV2aWNlX3R5cGUiLCB0eXBlKTsKKwlpZiAoY29tcGF0KQorCQlkdF9wcm9wX3N0cihkdCwgImNvbXBhdGlibGUiLCBjb21wYXQpOworCWR0X3Byb3BfdTMyKGR0LCAicmVnIiwgcmVnICsgKCh1bml0ID49IDApID8gdW5pdCA6IDApKTsKKwlpZiAodW5pdCA+PSAwKQorCQlkdF9wcm9wX3UzMihkdCwgImxpbnV4LHVuaXRfYWRkcmVzcyIsIHVuaXQpOworCWlmIChlbmQpCisJCWR0X2VuZF9ub2RlKGR0KTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGR0X3ZkZXZpY2VzKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0KQoreworCXUzMiByZWcgPSAwOworCUh2THBJbmRleE1hcCB2bGFuX21hcDsKKwlpbnQgaTsKKworCWR0X3N0YXJ0X25vZGUoZHQsICJ2ZGV2aWNlIik7CisJZHRfcHJvcF9zdHIoZHQsICJkZXZpY2VfdHlwZSIsIGRldmljZV90eXBlX3ZkZXZpY2UpOworCWR0X3Byb3Bfc3RyKGR0LCAiY29tcGF0aWJsZSIsICJJQk0saVNlcmllcy12ZGV2aWNlIik7CisJZHRfcHJvcF91MzIoZHQsICIjYWRkcmVzcy1jZWxscyIsIDEpOworCWR0X3Byb3BfdTMyKGR0LCAiI3NpemUtY2VsbHMiLCAwKTsKKworCWR0X2RvX3ZkZXZpY2UoZHQsICJ2dHkiLCByZWcsIC0xLCBkZXZpY2VfdHlwZV9zZXJpYWwsIE5VTEwsIDEpOworCXJlZysrOworCisJZHRfZG9fdmRldmljZShkdCwgInYtc2NzaSIsIHJlZywgLTEsIGRldmljZV90eXBlX3ZzY3NpLAorCQkJIklCTSx2LXNjc2kiLCAxKTsKKwlyZWcrKzsKKworCXZsYW5fbWFwID0gSHZMcENvbmZpZ19nZXRWaXJ0dWFsTGFuSW5kZXhNYXAoKTsKKwlmb3IgKGkgPSAwOyBpIDwgSFZNQVhBUkNISVRFQ1RFRFZJUlRVQUxMQU5TOyBpKyspIHsKKwkJdW5zaWduZWQgY2hhciBtYWNfYWRkcltFVEhfQUxFTl07CisKKwkJaWYgKCh2bGFuX21hcCAmICgweDgwMDAgPj4gaSkpID09IDApCisJCQljb250aW51ZTsKKwkJZHRfZG9fdmRldmljZShkdCwgImwtbGFuIiwgcmVnLCBpLCBkZXZpY2VfdHlwZV9uZXR3b3JrLAorCQkJCSJJQk0saVNlcmllcy1sLWxhbiIsIDApOworCQltYWNfYWRkclswXSA9IDB4MDI7CisJCW1hY19hZGRyWzFdID0gMHgwMTsKKwkJbWFjX2FkZHJbMl0gPSAweGZmOworCQltYWNfYWRkclszXSA9IGk7CisJCW1hY19hZGRyWzRdID0gMHhmZjsKKwkJbWFjX2FkZHJbNV0gPSBIdkxwQ29uZmlnX2dldExwSW5kZXhfb3V0bGluZSgpOworCQlkdF9wcm9wKGR0LCAibG9jYWwtbWFjLWFkZHJlc3MiLCAoY2hhciAqKW1hY19hZGRyLCBFVEhfQUxFTik7CisJCWR0X3Byb3AoZHQsICJtYWMtYWRkcmVzcyIsIChjaGFyICopbWFjX2FkZHIsIEVUSF9BTEVOKTsKKwkJZHRfcHJvcF91MzIoZHQsICJtYXgtZnJhbWUtc2l6ZSIsIDkwMDApOworCQlkdF9wcm9wX3UzMihkdCwgImFkZHJlc3MtYml0cyIsIDQ4KTsKKworCQlkdF9lbmRfbm9kZShkdCk7CisJfQorCXJlZyArPSBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTExBTlM7CisKKwlmb3IgKGkgPSAwOyBpIDwgSFZNQVhBUkNISVRFQ1RFRFZJUlRVQUxESVNLUzsgaSsrKQorCQlkdF9kb192ZGV2aWNlKGR0LCAidmlvZGFzZCIsIHJlZywgaSwgZGV2aWNlX3R5cGVfYmxvY2ssCisJCQkJIklCTSxpU2VyaWVzLXZpb2Rhc2QiLCAxKTsKKwlyZWcgKz0gSFZNQVhBUkNISVRFQ1RFRFZJUlRVQUxESVNLUzsKKworCWZvciAoaSA9IDA7IGkgPCBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTENEUk9NUzsgaSsrKQorCQlkdF9kb192ZGV2aWNlKGR0LCAidmlvY2QiLCByZWcsIGksIGRldmljZV90eXBlX2Jsb2NrLAorCQkJCSJJQk0saVNlcmllcy12aW9jZCIsIDEpOworCXJlZyArPSBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTENEUk9NUzsKKworCWZvciAoaSA9IDA7IGkgPCBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTFRBUEVTOyBpKyspCisJCWR0X2RvX3ZkZXZpY2UoZHQsICJ2aW90YXBlIiwgcmVnLCBpLCBkZXZpY2VfdHlwZV9ieXRlLAorCQkJCSJJQk0saVNlcmllcy12aW90YXBlIiwgMSk7CisKKwlkdF9lbmRfbm9kZShkdCk7Cit9CisKK3N0cnVjdCBwY2lfY2xhc3NfbmFtZSB7CisJdTE2IGNvZGU7CisJY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBjaGFyICp0eXBlOworfTsKKworc3RhdGljIHN0cnVjdCBwY2lfY2xhc3NfbmFtZSBfX2luaXRkYXRhIHBjaV9jbGFzc19uYW1lW10gPSB7CisJeyBQQ0lfQ0xBU1NfTkVUV09SS19FVEhFUk5FVCwgImV0aGVybmV0IiwgZGV2aWNlX3R5cGVfbmV0d29yayB9LAorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfY2xhc3NfbmFtZSAqIF9faW5pdCBkdF9maW5kX3BjaV9jbGFzc19uYW1lKHUxNiBjbGFzc19jb2RlKQoreworCXN0cnVjdCBwY2lfY2xhc3NfbmFtZSAqY3A7CisKKwlmb3IgKGNwID0gcGNpX2NsYXNzX25hbWU7CisJCQljcCA8ICZwY2lfY2xhc3NfbmFtZVtBUlJBWV9TSVpFKHBjaV9jbGFzc19uYW1lKV07IGNwKyspCisJCWlmIChjcC0+Y29kZSA9PSBjbGFzc19jb2RlKQorCQkJcmV0dXJuIGNwOworCXJldHVybiBOVUxMOworfQorCisvKgorICogVGhpcyBhc3N1bWVzIHRoYXQgdGhlIG5vZGUgc2xvdCBpcyBhbHdheXMgb24gdGhlIHByaW1hcnkgYnVzIQorICovCitzdGF0aWMgdm9pZCBfX2luaXQgc2Nhbl9icmlkZ2Vfc2xvdChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwKKwkJSHZCdXNOdW1iZXIgYnVzLCBzdHJ1Y3QgSHZDYWxsUGNpX0JyaWRnZUluZm8gKmJyaWRnZV9pbmZvKQoreworCUh2U3ViQnVzTnVtYmVyIHN1Yl9idXMgPSBicmlkZ2VfaW5mby0+c3ViQnVzTnVtYmVyOworCXUxNiB2ZW5kb3JfaWQ7CisJdTE2IGRldmljZV9pZDsKKwl1MzIgY2xhc3NfaWQ7CisJaW50IGVycjsKKwljaGFyIGJ1ZlszMl07CisJdTMyIHJlZ1s1XTsKKwlpbnQgaWRfc2VsID0gSVNFUklFU19HRVRfREVWSUNFX0ZST01fU1VCQlVTKHN1Yl9idXMpOworCWludCBmdW5jdGlvbiA9IElTRVJJRVNfR0VUX0ZVTkNUSU9OX0ZST01fU1VCQlVTKHN1Yl9idXMpOworCUh2QWdlbnRJZCBlYWRzX2lkX3NlbCA9IElTRVJJRVNfUENJX0FHRU5USUQoaWRfc2VsLCBmdW5jdGlvbik7CisJdTggZGV2Zm47CisJc3RydWN0IHBjaV9jbGFzc19uYW1lICpjcDsKKworCS8qCisJICogQ29ubmVjdCBhbGwgZnVuY3Rpb25zIG9mIGFueSBkZXZpY2UgZm91bmQuCisJICovCisJZm9yIChpZF9zZWwgPSAxOyBpZF9zZWwgPD0gYnJpZGdlX2luZm8tPm1heEFnZW50czsgaWRfc2VsKyspIHsKKwkJZm9yIChmdW5jdGlvbiA9IDA7IGZ1bmN0aW9uIDwgODsgZnVuY3Rpb24rKykgeworCQkJSHZBZ2VudElkIGFnZW50X2lkID0gSVNFUklFU19QQ0lfQUdFTlRJRChpZF9zZWwsCisJCQkJCWZ1bmN0aW9uKTsKKwkJCWVyciA9IEh2Q2FsbFhtX2Nvbm5lY3RCdXNVbml0KGJ1cywgc3ViX2J1cywKKwkJCQkJYWdlbnRfaWQsIDApOworCQkJaWYgKGVycikgeworCQkJCWlmIChlcnIgIT0gMHgzMDIpCisJCQkJCURCRygiY29ubmVjdEJ1c1VuaXQoJXgsICV4LCAleCkgJXhcbiIsCisJCQkJCQlidXMsIHN1Yl9idXMsIGFnZW50X2lkLCBlcnIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQllcnIgPSBIdkNhbGxQY2lfY29uZmlnTG9hZDE2KGJ1cywgc3ViX2J1cywgYWdlbnRfaWQsCisJCQkJCVBDSV9WRU5ET1JfSUQsICZ2ZW5kb3JfaWQpOworCQkJaWYgKGVycikgeworCQkJCURCRygiUmVhZFZlbmRvcigleCwgJXgsICV4KSAleFxuIiwKKwkJCQkJYnVzLCBzdWJfYnVzLCBhZ2VudF9pZCwgZXJyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVyciA9IEh2Q2FsbFBjaV9jb25maWdMb2FkMTYoYnVzLCBzdWJfYnVzLCBhZ2VudF9pZCwKKwkJCQkJUENJX0RFVklDRV9JRCwgJmRldmljZV9pZCk7CisJCQlpZiAoZXJyKSB7CisJCQkJREJHKCJSZWFkRGV2aWNlKCV4LCAleCwgJXgpICV4XG4iLAorCQkJCQlidXMsIHN1Yl9idXMsIGFnZW50X2lkLCBlcnIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZXJyID0gSHZDYWxsUGNpX2NvbmZpZ0xvYWQzMihidXMsIHN1Yl9idXMsIGFnZW50X2lkLAorCQkJCQlQQ0lfQ0xBU1NfUkVWSVNJT04gLCAmY2xhc3NfaWQpOworCQkJaWYgKGVycikgeworCQkJCURCRygiUmVhZENsYXNzKCV4LCAleCwgJXgpICV4XG4iLAorCQkJCQlidXMsIHN1Yl9idXMsIGFnZW50X2lkLCBlcnIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlkZXZmbiA9IFBDSV9ERVZGTihJU0VSSUVTX0VOQ09ERV9ERVZJQ0UoZWFkc19pZF9zZWwpLAorCQkJCQlmdW5jdGlvbik7CisJCQljcCA9IGR0X2ZpbmRfcGNpX2NsYXNzX25hbWUoY2xhc3NfaWQgPj4gMTYpOworCQkJaWYgKGNwICYmIGNwLT5uYW1lKQorCQkJCXN0cm5jcHkoYnVmLCBjcC0+bmFtZSwgc2l6ZW9mKGJ1ZikgLSAxKTsKKwkJCWVsc2UKKwkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAicGNpJXgsJXgiLAorCQkJCQkJdmVuZG9yX2lkLCBkZXZpY2VfaWQpOworCQkJYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworCQkJc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCisJCQkJCSJAJXgiLCBQQ0lfU0xPVChkZXZmbikpOworCQkJYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworCQkJaWYgKGZ1bmN0aW9uICE9IDApCisJCQkJc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksCisJCQkJCXNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCisJCQkJCSIsJXgiLCBmdW5jdGlvbik7CisJCQlkdF9zdGFydF9ub2RlKGR0LCBidWYpOworCQkJcmVnWzBdID0gKGJ1cyA8PCAxNikgfCAoZGV2Zm4gPDwgOCk7CisJCQlyZWdbMV0gPSAwOworCQkJcmVnWzJdID0gMDsKKwkJCXJlZ1szXSA9IDA7CisJCQlyZWdbNF0gPSAwOworCQkJZHRfcHJvcF91MzJfbGlzdChkdCwgInJlZyIsIHJlZywgNSk7CisJCQlpZiAoY3AgJiYgKGNwLT50eXBlIHx8IGNwLT5uYW1lKSkKKwkJCQlkdF9wcm9wX3N0cihkdCwgImRldmljZV90eXBlIiwKKwkJCQkJY3AtPnR5cGUgPyBjcC0+dHlwZSA6IGNwLT5uYW1lKTsKKwkJCWR0X3Byb3BfdTMyKGR0LCAidmVuZG9yLWlkIiwgdmVuZG9yX2lkKTsKKwkJCWR0X3Byb3BfdTMyKGR0LCAiZGV2aWNlLWlkIiwgZGV2aWNlX2lkKTsKKwkJCWR0X3Byb3BfdTMyKGR0LCAiY2xhc3MtY29kZSIsIGNsYXNzX2lkID4+IDgpOworCQkJZHRfcHJvcF91MzIoZHQsICJyZXZpc2lvbi1pZCIsIGNsYXNzX2lkICYgMHhmZik7CisJCQlkdF9wcm9wX3UzMihkdCwgImxpbnV4LHN1YmJ1cyIsIHN1Yl9idXMpOworCQkJZHRfcHJvcF91MzIoZHQsICJsaW51eCxhZ2VudC1pZCIsIGFnZW50X2lkKTsKKwkJCWR0X3Byb3BfdTMyKGR0LCAibGludXgsbG9naWNhbC1zbG90LW51bWJlciIsCisJCQkJCWJyaWRnZV9pbmZvLT5sb2dpY2FsU2xvdE51bWJlcik7CisJCQlkdF9lbmRfbm9kZShkdCk7CisKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgX19pbml0IHNjYW5fYnJpZGdlKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBIdkJ1c051bWJlciBidXMsCisJCUh2U3ViQnVzTnVtYmVyIHN1Yl9idXMsIGludCBpZF9zZWwpCit7CisJc3RydWN0IEh2Q2FsbFBjaV9CcmlkZ2VJbmZvIGJyaWRnZV9pbmZvOworCUh2QWdlbnRJZCBhZ2VudF9pZDsKKwlpbnQgZnVuY3Rpb247CisJaW50IHJldDsKKworCS8qIE5vdGU6IGh2U3ViQnVzIGFuZCBpcnEgaXMgYWx3YXlzIGJlIDAgYXQgdGhpcyBsZXZlbCEgKi8KKwlmb3IgKGZ1bmN0aW9uID0gMDsgZnVuY3Rpb24gPCA4OyArK2Z1bmN0aW9uKSB7CisJCWFnZW50X2lkID0gSVNFUklFU19QQ0lfQUdFTlRJRChpZF9zZWwsIGZ1bmN0aW9uKTsKKwkJcmV0ID0gSHZDYWxsWG1fY29ubmVjdEJ1c1VuaXQoYnVzLCBzdWJfYnVzLCBhZ2VudF9pZCwgMCk7CisJCWlmIChyZXQgIT0gMCkgeworCQkJaWYgKHJldCAhPSAweGIpCisJCQkJREJHKCJjb25uZWN0QnVzVW5pdCgleCwgJXgsICV4KSAleFxuIiwKKwkJCQkJCWJ1cywgc3ViX2J1cywgYWdlbnRfaWQsIHJldCk7CisJCQljb250aW51ZTsKKwkJfQorCQlEQkcoImZvdW5kIGRldmljZSBhdCBidXMgJWQgaWRzZWwgJWQgZnVuYyAlZCAoQWdlbnRJZCAleClcbiIsCisJCQkJYnVzLCBpZF9zZWwsIGZ1bmN0aW9uLCBhZ2VudF9pZCk7CisJCXJldCA9IEh2Q2FsbFBjaV9nZXRCdXNVbml0SW5mbyhidXMsIHN1Yl9idXMsIGFnZW50X2lkLAorCQkJCWlzZXJpZXNfaHZfYWRkcigmYnJpZGdlX2luZm8pLAorCQkJCXNpemVvZihzdHJ1Y3QgSHZDYWxsUGNpX0JyaWRnZUluZm8pKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJY29udGludWU7CisJCURCRygiYnJpZGdlIGluZm86IHR5cGUgJXggc3ViYnVzICV4ICIKKwkJCSJtYXhBZ2VudHMgJXggbWF4c3ViYnVzICV4IGxvZ3Nsb3QgJXhcbiIsCisJCQlicmlkZ2VfaW5mby5idXNVbml0SW5mby5kZXZpY2VUeXBlLAorCQkJYnJpZGdlX2luZm8uc3ViQnVzTnVtYmVyLAorCQkJYnJpZGdlX2luZm8ubWF4QWdlbnRzLAorCQkJYnJpZGdlX2luZm8ubWF4U3ViQnVzTnVtYmVyLAorCQkJYnJpZGdlX2luZm8ubG9naWNhbFNsb3ROdW1iZXIpOworCQlpZiAoYnJpZGdlX2luZm8uYnVzVW5pdEluZm8uZGV2aWNlVHlwZSA9PQorCQkJCUh2Q2FsbFBjaV9CcmlkZ2VEZXZpY2UpCisJCQlzY2FuX2JyaWRnZV9zbG90KGR0LCBidXMsICZicmlkZ2VfaW5mbyk7CisJCWVsc2UKKwkJCURCRygiUENJOiBJbnZhbGlkIEJyaWRnZSBDb25maWd1cmF0aW9uKDB4JTAyWCkiLAorCQkJCWJyaWRnZV9pbmZvLmJ1c1VuaXRJbmZvLmRldmljZVR5cGUpOworCX0KK30KKworc3RhdGljIHZvaWQgX19pbml0IHNjYW5fcGhiKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBIdkJ1c051bWJlciBidXMpCit7CisJc3RydWN0IEh2Q2FsbFBjaV9EZXZpY2VJbmZvIGRldl9pbmZvOworCWNvbnN0IEh2U3ViQnVzTnVtYmVyIHN1Yl9idXMgPSAwOwkvKiBFQURzIGlzIGFsd2F5cyAwLiAqLworCWludCBlcnI7CisJaW50IGlkX3NlbDsKKwljb25zdCBpbnQgbWF4X2FnZW50cyA9IDg7CisKKwkvKgorCSAqIFByb2JlIGZvciBFQURzIEJyaWRnZXMKKwkgKi8KKwlmb3IgKGlkX3NlbCA9IDE7IGlkX3NlbCA8IG1heF9hZ2VudHM7ICsraWRfc2VsKSB7CisJCWVyciA9IEh2Q2FsbFBjaV9nZXREZXZpY2VJbmZvKGJ1cywgc3ViX2J1cywgaWRfc2VsLAorCQkJCWlzZXJpZXNfaHZfYWRkcigmZGV2X2luZm8pLAorCQkJCXNpemVvZihzdHJ1Y3QgSHZDYWxsUGNpX0RldmljZUluZm8pKTsKKwkJaWYgKGVycikgeworCQkJaWYgKGVyciAhPSAweDMwMikKKwkJCQlEQkcoImdldERldmljZUluZm8oJXgsICV4LCAleCkgJXhcbiIsCisJCQkJCQlidXMsIHN1Yl9idXMsIGlkX3NlbCwgZXJyKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChkZXZfaW5mby5kZXZpY2VUeXBlICE9IEh2Q2FsbFBjaV9Ob2RlRGV2aWNlKSB7CisJCQlEQkcoIlBDSTogSW52YWxpZCBTeXN0ZW0gQ29uZmlndXJhdGlvbiIKKwkJCQkJIigweCUwMlgpIGZvciBidXMgMHglMDJ4IGlkIDB4JTAyeC5cbiIsCisJCQkJCWRldl9pbmZvLmRldmljZVR5cGUsIGJ1cywgaWRfc2VsKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXNjYW5fYnJpZGdlKGR0LCBidXMsIHN1Yl9idXMsIGlkX3NlbCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZHRfcGNpX2RldmljZXMoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQpCit7CisJSHZCdXNOdW1iZXIgYnVzOworCWNoYXIgYnVmWzMyXTsKKwl1MzIgYnVzZXNbMl07CisJaW50IHBoYl9udW0gPSAwOworCisJLyogQ2hlY2sgYWxsIHBvc3NpYmxlIGJ1c2VzLiAqLworCWZvciAoYnVzID0gMDsgYnVzIDwgMjU2OyBidXMrKykgeworCQlpbnQgZXJyID0gSHZDYWxsWG1fdGVzdEJ1cyhidXMpOworCisJCWlmIChlcnIpIHsKKwkJCS8qCisJCQkgKiBDaGVjayBmb3IgVW5leHBlY3RlZCBSZXR1cm4gY29kZSwgYSBjbHVlIHRoYXQKKwkJCSAqIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZy4KKwkJCSAqLworCQkJaWYgKGVyciAhPSAweDAzMDEpCisJCQkJREJHKCJVbmV4cGVjdGVkIFJldHVybiBvbiBQcm9iZSgweCUwMlgpICIKKwkJCQkJCSIweCUwNFhcbiIsIGJ1cywgZXJyKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCURCRygiYnVzICVkIGFwcGVhcnMgdG8gZXhpc3RcbiIsIGJ1cyk7CisJCXNucHJpbnRmKGJ1ZiwgMzIsICJwY2lAJWQiLCBwaGJfbnVtKTsKKwkJZHRfc3RhcnRfbm9kZShkdCwgYnVmKTsKKwkJZHRfcHJvcF9zdHIoZHQsICJkZXZpY2VfdHlwZSIsIGRldmljZV90eXBlX3BjaSk7CisJCWR0X3Byb3Bfc3RyKGR0LCAiY29tcGF0aWJsZSIsICJJQk0saVNlcmllcy1Mb2dpY2FsLVBIQiIpOworCQlkdF9wcm9wX3UzMihkdCwgIiNhZGRyZXNzLWNlbGxzIiwgMyk7CisJCWR0X3Byb3BfdTMyKGR0LCAiI3NpemUtY2VsbHMiLCAyKTsKKwkJYnVzZXNbMF0gPSBidXNlc1sxXSA9IGJ1czsKKwkJZHRfcHJvcF91MzJfbGlzdChkdCwgImJ1cy1yYW5nZSIsIGJ1c2VzLCAyKTsKKwkJc2Nhbl9waGIoZHQsIGJ1cyk7CisJCWR0X2VuZF9ub2RlKGR0KTsKKwkJcGhiX251bSsrOworCX0KK30KKworc3RhdGljIHZvaWQgZHRfZmluaXNoKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0KQoreworCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9FTkQpOworCWR0LT5oZWFkZXIudG90YWxzaXplID0gKHVuc2lnbmVkIGxvbmcpZHRfZGF0YSAtICh1bnNpZ25lZCBsb25nKWR0OworCWtsaW1pdCA9IEFMSUdOKCh1bnNpZ25lZCBsb25nKWR0X2RhdGEsIDgpOworfQorCit2b2lkICogX19pbml0IGJ1aWxkX2ZsYXRfZHQodW5zaWduZWQgbG9uZyBwaHlzX21lbV9zaXplKQoreworCXN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmlzZXJpZXNfZHQ7CisJdTY0IHRtcFsyXTsKKworCWlzZXJpZXNfZHQgPSBkdF9pbml0KCk7CisKKwlkdF9zdGFydF9ub2RlKGlzZXJpZXNfZHQsICIiKTsKKworCWR0X3Byb3BfdTMyKGlzZXJpZXNfZHQsICIjYWRkcmVzcy1jZWxscyIsIDIpOworCWR0X3Byb3BfdTMyKGlzZXJpZXNfZHQsICIjc2l6ZS1jZWxscyIsIDIpOworCWR0X21vZGVsKGlzZXJpZXNfZHQpOworCisJLyogL21lbW9yeSAqLworCWR0X3N0YXJ0X25vZGUoaXNlcmllc19kdCwgIm1lbW9yeUAwIik7CisJZHRfcHJvcF9zdHIoaXNlcmllc19kdCwgImRldmljZV90eXBlIiwgZGV2aWNlX3R5cGVfbWVtb3J5KTsKKwl0bXBbMF0gPSAwOworCXRtcFsxXSA9IHBoeXNfbWVtX3NpemU7CisJZHRfcHJvcF91NjRfbGlzdChpc2VyaWVzX2R0LCAicmVnIiwgdG1wLCAyKTsKKwlkdF9lbmRfbm9kZShpc2VyaWVzX2R0KTsKKworCS8qIC9jaG9zZW4gKi8KKwlkdF9zdGFydF9ub2RlKGlzZXJpZXNfZHQsICJjaG9zZW4iKTsKKwlkdF9wcm9wX3N0cihpc2VyaWVzX2R0LCAiYm9vdGFyZ3MiLCBjbWRfbGluZSk7CisJZHRfZW5kX25vZGUoaXNlcmllc19kdCk7CisKKwlkdF9jcHVzKGlzZXJpZXNfZHQpOworCisJZHRfdmRldmljZXMoaXNlcmllc19kdCk7CisJZHRfcGNpX2RldmljZXMoaXNlcmllc19kdCk7CisKKwlkdF9lbmRfbm9kZShpc2VyaWVzX2R0KTsKKworCWR0X2ZpbmlzaChpc2VyaWVzX2R0KTsKKworCXJldHVybiBpc2VyaWVzX2R0OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2lvbW11LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaW9tbXUuYwppbmRleCBiZWEwYjcwLi5lM2JkMjAxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaW9tbXUuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaW9tbXUuYwpAQCAtNCw2ICs0LDcgQEAKICAqIFJld3JpdGUsIGNsZWFudXA6CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA0IE9sb2YgSm9oYW5zc29uIDxvbG9mQGxpeG9tLm5ldD4sIElCTSBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9sb2YgSm9oYW5zc29uIDxvbG9mQGxpeG9tLm5ldD4KICAqCiAgKiBEeW5hbWljIERNQSBtYXBwaW5nIHN1cHBvcnQsIGlTZXJpZXMtc3BlY2lmaWMgcGFydHMuCiAgKgpAQCAtMzEsNDIgKzMyLDM3IEBACiAjaW5jbHVkZSA8YXNtL3RjZS5oPgogI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8YXNtL2Fic19hZGRyLmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KICNpbmNsdWRlIDxhc20vcGNpLWJyaWRnZS5oPgogI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2h2X2NhbGxfeG0uaD4KLQotI2luY2x1ZGUgImlvbW11LmgiCi0KLWV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGlTZXJpZXNfR2xvYmFsX0RldmljZV9MaXN0OwotCisjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaW9tbXUuaD4KIAogc3RhdGljIHZvaWQgdGNlX2J1aWxkX2lTZXJpZXMoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIGxvbmcgaW5kZXgsIGxvbmcgbnBhZ2VzLAogCQl1bnNpZ25lZCBsb25nIHVhZGRyLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAJdTY0IHJjOwotCXVuaW9uIHRjZV9lbnRyeSB0Y2U7CisJdTY0IHRjZSwgcnBuOwogCiAJaW5kZXggPDw9IFRDRV9QQUdFX0ZBQ1RPUjsKIAlucGFnZXMgPDw9IFRDRV9QQUdFX0ZBQ1RPUjsKIAogCXdoaWxlIChucGFnZXMtLSkgewotCQl0Y2UudGVfd29yZCA9IDA7Ci0JCXRjZS50ZV9iaXRzLnRiX3JwbiA9IHZpcnRfdG9fYWJzKHVhZGRyKSA+PiBUQ0VfU0hJRlQ7CisJCXJwbiA9IHZpcnRfdG9fYWJzKHVhZGRyKSA+PiBUQ0VfU0hJRlQ7CisJCXRjZSA9IChycG4gJiBUQ0VfUlBOX01BU0spIDw8IFRDRV9SUE5fU0hJRlQ7CiAKIAkJaWYgKHRibC0+aXRfdHlwZSA9PSBUQ0VfVkIpIHsKIAkJCS8qIFZpcnR1YWwgQnVzICovCi0JCQl0Y2UudGVfYml0cy50Yl92YWxpZCA9IDE7Ci0JCQl0Y2UudGVfYml0cy50Yl9hbGxpbyA9IDE7CisJCQl0Y2UgfD0gVENFX1ZBTElEfFRDRV9BTExJTzsKIAkJCWlmIChkaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklDRSkKLQkJCQl0Y2UudGVfYml0cy50Yl9yZHdyID0gMTsKKwkJCQl0Y2UgfD0gVENFX1ZCX1dSSVRFOwogCQl9IGVsc2UgewogCQkJLyogUENJIEJ1cyAqLwotCQkJdGNlLnRlX2JpdHMudGJfcmR3ciA9IDE7IC8qIFJlYWQgYWxsb3dlZCAqLworCQkJdGNlIHw9IFRDRV9QQ0lfUkVBRDsgLyogUmVhZCBhbGxvd2VkICovCiAJCQlpZiAoZGlyZWN0aW9uICE9IERNQV9UT19ERVZJQ0UpCi0JCQkJdGNlLnRlX2JpdHMudGJfcGNpd3IgPSAxOworCQkJCXRjZSB8PSBUQ0VfUENJX1dSSVRFOwogCQl9CiAKLQkJcmMgPSBIdkNhbGxYbV9zZXRUY2UoKHU2NCl0YmwtPml0X2luZGV4LCAodTY0KWluZGV4LAotCQkJCXRjZS50ZV93b3JkKTsKKwkJcmMgPSBIdkNhbGxYbV9zZXRUY2UoKHU2NCl0YmwtPml0X2luZGV4LCAodTY0KWluZGV4LCB0Y2UpOwogCQlpZiAocmMpCiAJCQlwYW5pYygiUENJX0RNQTogSHZDYWxsWG1fc2V0VGNlIGZhaWxlZCwgUmM6IDB4JWx4XG4iLAogCQkJCQlyYyk7CkBAIC0xMjQsNyArMTIwLDcgQEAKIAogCS8qIGl0Y19zaXplIGlzIGluIHBhZ2VzIHdvcnRoIG9mIHRhYmxlLCBpdF9zaXplIGlzIGluICMgb2YgZW50cmllcyAqLwogCXRibC0+aXRfc2l6ZSA9ICgocGFybXMtPml0Y19zaXplICogVENFX1BBR0VfU0laRSkgLwotCQkJc2l6ZW9mKHVuaW9uIHRjZV9lbnRyeSkpID4+IFRDRV9QQUdFX0ZBQ1RPUjsKKwkJCVRDRV9FTlRSWV9TSVpFKSA+PiBUQ0VfUEFHRV9GQUNUT1I7CiAJdGJsLT5pdF9idXNubyA9IHBhcm1zLT5pdGNfYnVzbm87CiAJdGJsLT5pdF9vZmZzZXQgPSBwYXJtcy0+aXRjX29mZnNldCA+PiBUQ0VfUEFHRV9GQUNUT1I7CiAJdGJsLT5pdF9pbmRleCA9IHBhcm1zLT5pdGNfaW5kZXg7CkBAIC0xNDIsMTAgKzEzOCwxNSBAQAogICovCiBzdGF0aWMgc3RydWN0IGlvbW11X3RhYmxlICppb21tdV90YWJsZV9maW5kKHN0cnVjdCBpb21tdV90YWJsZSAqIHRibCkKIHsKLQlzdHJ1Y3QgcGNpX2RuICpwZG47CisJc3RydWN0IGRldmljZV9ub2RlICpub2RlOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwZG4sICZpU2VyaWVzX0dsb2JhbF9EZXZpY2VfTGlzdCwgRGV2aWNlX0xpc3QpIHsKLQkJc3RydWN0IGlvbW11X3RhYmxlICppdCA9IHBkbi0+aW9tbXVfdGFibGU7CisJZm9yIChub2RlID0gTlVMTDsgKG5vZGUgPSBvZl9maW5kX2FsbF9ub2Rlcyhub2RlKSk7ICkgeworCQlzdHJ1Y3QgcGNpX2RuICpwZG4gPSBQQ0lfRE4obm9kZSk7CisJCXN0cnVjdCBpb21tdV90YWJsZSAqaXQ7CisKKwkJaWYgKHBkbiA9PSBOVUxMKQorCQkJY29udGludWU7CisJCWl0ID0gcGRuLT5pb21tdV90YWJsZTsKIAkJaWYgKChpdCAhPSBOVUxMKSAmJgogCQkgICAgKGl0LT5pdF90eXBlID09IFRDRV9QQ0kpICYmCiAJCSAgICAoaXQtPml0X29mZnNldCA9PSB0YmwtPml0X29mZnNldCkgJiYKQEAgLTE2MSwxNSArMTYyLDE4IEBACiB7CiAJc3RydWN0IGlvbW11X3RhYmxlICp0Ymw7CiAJc3RydWN0IHBjaV9kbiAqcGRuID0gUENJX0ROKGRuKTsKKwl1MzIgKmxzbiA9ICh1MzIgKilnZXRfcHJvcGVydHkoZG4sICJsaW51eCxsb2dpY2FsLXNsb3QtbnVtYmVyIiwgTlVMTCk7CisKKwlCVUdfT04obHNuID09IE5VTEwpOwogCiAJdGJsID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGlvbW11X3RhYmxlKSwgR0ZQX0tFUk5FTCk7CiAKLQlpb21tdV90YWJsZV9nZXRwYXJtc19pU2VyaWVzKHBkbi0+YnVzbm8sIHBkbi0+TG9naWNhbFNsb3QsIDAsIHRibCk7CisJaW9tbXVfdGFibGVfZ2V0cGFybXNfaVNlcmllcyhwZG4tPmJ1c25vLCAqbHNuLCAwLCB0YmwpOwogCiAJLyogTG9vayBmb3IgZXhpc3RpbmcgdGNlIHRhYmxlICovCiAJcGRuLT5pb21tdV90YWJsZSA9IGlvbW11X3RhYmxlX2ZpbmQodGJsKTsKIAlpZiAocGRuLT5pb21tdV90YWJsZSA9PSBOVUxMKQotCQlwZG4tPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwpOworCQlwZG4tPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwsIC0xKTsKIAllbHNlCiAJCWtmcmVlKHRibCk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaXJxLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaXJxLmMKaW5kZXggYmUzZmJmYy4uNjJiYmJjZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2lycS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9pcnEuYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2l0X2xwX3F1ZXVlLmg+CiAKICNpbmNsdWRlICJpcnEuaCIKKyNpbmNsdWRlICJwY2kuaCIKICNpbmNsdWRlICJjYWxsX3BjaS5oIgogCiAjaWYgZGVmaW5lZChDT05GSUdfU01QKQpAQCAtMzEyLDEyICszMTMsMTIgQEAKICAqIE5vdGUgdGhhdCBzdWJfYnVzIGlzIGFsd2F5cyAwIChhdCB0aGUgbW9tZW50IGF0IGxlYXN0KS4KICAqLwogaW50IF9faW5pdCBpU2VyaWVzX2FsbG9jYXRlX0lSUShIdkJ1c051bWJlciBidXMsCi0JCUh2U3ViQnVzTnVtYmVyIHN1Yl9idXMsIEh2QWdlbnRJZCBkZXZfaWQpCisJCUh2U3ViQnVzTnVtYmVyIHN1Yl9idXMsIHUzMiBic3ViYnVzKQogewogCWludCB2aXJ0aXJxOwogCXVuc2lnbmVkIGludCByZWFsaXJxOwotCXU4IGlkc2VsID0gKGRldl9pZCA+PiA0KTsKLQl1OCBmdW5jdGlvbiA9IGRldl9pZCAmIDc7CisJdTggaWRzZWwgPSBJU0VSSUVTX0dFVF9ERVZJQ0VfRlJPTV9TVUJCVVMoYnN1YmJ1cyk7CisJdTggZnVuY3Rpb24gPSBJU0VSSUVTX0dFVF9GVU5DVElPTl9GUk9NX1NVQkJVUyhic3ViYnVzKTsKIAogCXJlYWxpcnEgPSAoKCgoKHN1Yl9idXMgPDwgOCkgKyAoYnVzIC0gMSkpIDw8IDMpICsgKGlkc2VsIC0gMSkpIDw8IDMpCiAJCSsgZnVuY3Rpb247CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaXJxLmggYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaXJxLmgKaW5kZXggYjljODAxYi4uMTg4YWE4MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL2lycS5oCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9pcnEuaApAQCAtMiw3ICsyLDcgQEAKICNkZWZpbmUJX0lTRVJJRVNfSVJRX0gKIAogZXh0ZXJuIHZvaWQgaVNlcmllc19pbml0X0lSUSh2b2lkKTsKLWV4dGVybiBpbnQgIGlTZXJpZXNfYWxsb2NhdGVfSVJRKEh2QnVzTnVtYmVyLCBIdlN1YkJ1c051bWJlciwgSHZBZ2VudElkKTsKK2V4dGVybiBpbnQgIGlTZXJpZXNfYWxsb2NhdGVfSVJRKEh2QnVzTnVtYmVyLCBIdlN1YkJ1c051bWJlciwgdTMyKTsKIGV4dGVybiB2b2lkIGlTZXJpZXNfYWN0aXZhdGVfSVJRcyh2b2lkKTsKIGV4dGVybiBpbnQgaVNlcmllc19nZXRfaXJxKHN0cnVjdCBwdF9yZWdzICopOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvbWYuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCmluZGV4IGQ3NzFiOGUuLjFhMmMyYTUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCkBAIC00NSw3ICs0NSw2IEBACiAKICNpbmNsdWRlICJzZXR1cC5oIgogCi1leHRlcm4gaW50IHBpcmFuaGFfc2ltdWxhdG9yOwogc3RhdGljIGludCBtZl9pbml0aWFsaXplZDsKIAogLyoKQEAgLTY1OCw3ICs2NTcsNyBAQAogCiB2b2lkIF9faW5pdCBtZl9kaXNwbGF5X3Byb2dyZXNzKHUxNiB2YWx1ZSkKIHsKLQlpZiAocGlyYW5oYV9zaW11bGF0b3IgfHwgIW1mX2luaXRpYWxpemVkKQorCWlmICghbWZfaW5pdGlhbGl6ZWQpCiAJCXJldHVybjsKIAogCWlmICgweEZGRkYgPT0gdmFsdWUpCkBAIC0xMjk1LDkgKzEyOTQsNiBAQAogICovCiB2b2lkIGlTZXJpZXNfZ2V0X3J0Y190aW1lKHN0cnVjdCBydGNfdGltZSAqcnRjX3RtKQogewotCWlmIChwaXJhbmhhX3NpbXVsYXRvcikKLQkJcmV0dXJuOwotCiAJbWZfZ2V0X3J0YyhydGNfdG0pOwogCXJ0Y190bS0+dG1fbW9uLS07CiB9CkBAIC0xMzE2LDkgKzEzMTIsNiBAQAogewogCXN0cnVjdCBydGNfdGltZSB0bTsKIAotCWlmIChwaXJhbmhhX3NpbXVsYXRvcikKLQkJcmV0dXJuIDA7Ci0KIAltZl9nZXRfYm9vdF9ydGMoJnRtKTsKIAlyZXR1cm4gbWt0aW1lKHRtLnRtX3llYXIgKyAxOTAwLCB0bS50bV9tb24sIHRtLnRtX21kYXksCiAJCSAgICAgIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9wY2kuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9wY2kuYwppbmRleCBhMTk4MzNiLi4zNWJjYzk4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvcGNpLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3BjaS5jCkBAIC0zNywzNiArMzcsMTggQEAKIAogI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2h2X2NhbGxfeG0uaD4KICNpbmNsdWRlIDxhc20vaXNlcmllcy9tZi5oPgorI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2lvbW11Lmg+CiAKICNpbmNsdWRlIDxhc20vcHBjLXBjaS5oPgogCiAjaW5jbHVkZSAiaXJxLmgiCiAjaW5jbHVkZSAicGNpLmgiCiAjaW5jbHVkZSAiY2FsbF9wY2kuaCIKLSNpbmNsdWRlICJpb21tdS5oIgotCi1leHRlcm4gdW5zaWduZWQgbG9uZyBpb19wYWdlX21hc2s7CiAKIC8qCiAgKiBGb3J3YXJkIGRlY2xhcmVzIG9mIHByb3RvdHlwZXMuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmZpbmRfRGV2aWNlX05vZGUoaW50IGJ1cywgaW50IGRldmZuKTsKLXN0YXRpYyB2b2lkIHNjYW5fUEhCX3Nsb3RzKHN0cnVjdCBwY2lfY29udHJvbGxlciAqUGhiKTsKLXN0YXRpYyB2b2lkIHNjYW5fRUFEU19icmlkZ2UoSHZCdXNOdW1iZXIgQnVzLCBIdlN1YkJ1c051bWJlciBTdWJCdXMsIGludCBJZFNlbCk7Ci1zdGF0aWMgaW50IHNjYW5fYnJpZGdlX3Nsb3QoSHZCdXNOdW1iZXIgQnVzLCBzdHJ1Y3QgSHZDYWxsUGNpX0JyaWRnZUluZm8gKkluZm8pOwotCi1MSVNUX0hFQUQoaVNlcmllc19HbG9iYWxfRGV2aWNlX0xpc3QpOwotCi1zdGF0aWMgaW50IERldmljZUNvdW50OwotCi0vKiBDb3VudGVycyBhbmQgY29udHJvbCBmbGFncy4gKi8KLXN0YXRpYyBsb25nIFBjaV9Jb19SZWFkX0NvdW50Owotc3RhdGljIGxvbmcgUGNpX0lvX1dyaXRlX0NvdW50OwotI2lmIDAKLXN0YXRpYyBsb25nIFBjaV9DZmdfUmVhZF9Db3VudDsKLXN0YXRpYyBsb25nIFBjaV9DZmdfV3JpdGVfQ291bnQ7Ci0jZW5kaWYKLXN0YXRpYyBsb25nIFBjaV9FcnJvcl9Db3VudDsKIAogc3RhdGljIGludCBQY2lfUmV0cnlfTWF4ID0gMzsJLyogT25seSByZXRyeSAzIHRpbWVzICAqLwogc3RhdGljIGludCBQY2lfRXJyb3JfRmxhZyA9IDE7CS8qIFNldCBSZXRyeSBFcnJvciBvbi4gKi8KQEAgLTgxLDQxICs2MywxOSBAQAogI2RlZmluZSBJT01NX1RBQkxFX0VOVFJZX1NJWkUJMHgwMDAwMDAwMDAwNDAwMDAwVUwKICNkZWZpbmUgQkFTRV9JT19NRU1PUlkJCTB4RTAwMDAwMDAwMDAwMDAwMFVMCiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1heF9pb19tZW1vcnkgPSAweEUwMDAwMDAwMDAwMDAwMDBVTDsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIG1heF9pb19tZW1vcnkgPSBCQVNFX0lPX01FTU9SWTsKIHN0YXRpYyBsb25nIGN1cnJlbnRfaW9tbV90YWJsZV9lbnRyeTsKIAogLyoKICAqIExvb2t1cCBUYWJsZXMuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKippb21tX3RhYmxlOwotc3RhdGljIHU4ICppb2Jhcl90YWJsZTsKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmlvbW1fdGFibGVbSU9NTV9UQUJMRV9NQVhfRU5UUklFU107CitzdGF0aWMgdTggaW9iYXJfdGFibGVbSU9NTV9UQUJMRV9NQVhfRU5UUklFU107CiAKLS8qCi0gKiBTdGF0aWMgYW5kIEdsb2JhbCB2YXJpYWJsZXMKLSAqLwotc3RhdGljIGNoYXIgKnBjaV9pb190ZXh0ID0gImlTZXJpZXMgUENJIEkvTyI7CitzdGF0aWMgY29uc3QgY2hhciBwY2lfaW9fdGV4dFtdID0gImlTZXJpZXMgUENJIEkvTyI7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlvbW1fdGFibGVfbG9jayk7CiAKIC8qCi0gKiBpb21tX3RhYmxlX2luaXRpYWxpemUKLSAqCi0gKiBBbGxvY2F0ZXMgYW5kIGluaXRhbGl6ZXMgdGhlIEFkZHJlc3MgVHJhbnNsYXRpb24gVGFibGUgYW5kIEJhcgotICogVGFibGVzIHRvIGdldCB0aGVtIHJlYWR5IGZvciB1c2UuICBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55Ci0gKiBJL08gc3BhY2UgaXMgaGFuZGVkIG91dCB0byB0aGUgZGV2aWNlIEJBUnMuCi0gKi8KLXN0YXRpYyB2b2lkIGlvbW1fdGFibGVfaW5pdGlhbGl6ZSh2b2lkKQotewotCXNwaW5fbG9jaygmaW9tbV90YWJsZV9sb2NrKTsKLQlpb21tX3RhYmxlID0ga21hbGxvYyhzaXplb2YoKmlvbW1fdGFibGUpICogSU9NTV9UQUJMRV9NQVhfRU5UUklFUywKLQkJCUdGUF9LRVJORUwpOwotCWlvYmFyX3RhYmxlID0ga21hbGxvYyhzaXplb2YoKmlvYmFyX3RhYmxlKSAqIElPTU1fVEFCTEVfTUFYX0VOVFJJRVMsCi0JCQlHRlBfS0VSTkVMKTsKLQlzcGluX3VubG9jaygmaW9tbV90YWJsZV9sb2NrKTsKLQlpZiAoKGlvbW1fdGFibGUgPT0gTlVMTCkgfHwgKGlvYmFyX3RhYmxlID09IE5VTEwpKQotCQlwYW5pYygiUENJOiBJL08gdGFibGVzIGFsbG9jYXRpb24gZmFpbGVkLlxuIik7Ci19Ci0KLS8qCiAgKiBpb21tX3RhYmxlX2FsbG9jYXRlX2VudHJ5CiAgKgogICogQWRkcyBwY2lfZGV2IGVudHJ5IGluIGFkZHJlc3MgdHJhbnNsYXRpb24gdGFibGUKQEAgLTE0Miw5ICsxMDIsOCBAQAogCSAqLwogCXNwaW5fbG9jaygmaW9tbV90YWJsZV9sb2NrKTsKIAliYXJfcmVzLT5uYW1lID0gcGNpX2lvX3RleHQ7Ci0JYmFyX3Jlcy0+c3RhcnQgPQorCWJhcl9yZXMtPnN0YXJ0ID0gQkFTRV9JT19NRU1PUlkgKwogCQlJT01NX1RBQkxFX0VOVFJZX1NJWkUgKiBjdXJyZW50X2lvbW1fdGFibGVfZW50cnk7Ci0JYmFyX3Jlcy0+c3RhcnQgKz0gQkFTRV9JT19NRU1PUlk7CiAJYmFyX3Jlcy0+ZW5kID0gYmFyX3Jlcy0+c3RhcnQgKyBiYXJfc2l6ZSAtIDE7CiAJLyoKIAkgKiBBbGxvY2F0ZSB0aGUgbnVtYmVyIG9mIHRhYmxlIGVudHJpZXMgbmVlZGVkIGZvciBCQVIuCkBAIC0xNTYsNyArMTE1LDcgQEAKIAkJKytjdXJyZW50X2lvbW1fdGFibGVfZW50cnk7CiAJfQogCW1heF9pb19tZW1vcnkgPSBCQVNFX0lPX01FTU9SWSArCi0JCShJT01NX1RBQkxFX0VOVFJZX1NJWkUgKiBjdXJyZW50X2lvbW1fdGFibGVfZW50cnkpOworCQlJT01NX1RBQkxFX0VOVFJZX1NJWkUgKiBjdXJyZW50X2lvbW1fdGFibGVfZW50cnk7CiAJc3Bpbl91bmxvY2soJmlvbW1fdGFibGVfbG9jayk7CiB9CiAKQEAgLTE3MywxMyArMTMyLDEwIEBACiAgKi8KIHN0YXRpYyB2b2lkIGFsbG9jYXRlX2RldmljZV9iYXJzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7Ci0Jc3RydWN0IHJlc291cmNlICpiYXJfcmVzOwogCWludCBiYXJfbnVtOwogCi0JZm9yIChiYXJfbnVtID0gMDsgYmFyX251bSA8PSBQQ0lfUk9NX1JFU09VUkNFOyArK2Jhcl9udW0pIHsKLQkJYmFyX3JlcyA9ICZkZXYtPnJlc291cmNlW2Jhcl9udW1dOworCWZvciAoYmFyX251bSA9IDA7IGJhcl9udW0gPD0gUENJX1JPTV9SRVNPVVJDRTsgKytiYXJfbnVtKQogCQlpb21tX3RhYmxlX2FsbG9jYXRlX2VudHJ5KGRldiwgYmFyX251bSk7Ci0JfQogfQogCiAvKgpAQCAtMTk5LDM0ICsxNTUsNyBAQAogfQogCiAvKgotICogYnVpbGRfZGV2aWNlX25vZGUodTE2IEJ1cywgaW50IFN1YkJ1cywgdTggRGV2Rm4pCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmJ1aWxkX2RldmljZV9ub2RlKEh2QnVzTnVtYmVyIEJ1cywKLQkJSHZTdWJCdXNOdW1iZXIgU3ViQnVzLCBpbnQgQWdlbnRJZCwgaW50IEZ1bmN0aW9uKQotewotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKLQlzdHJ1Y3QgcGNpX2RuICpwZG47Ci0KLQlub2RlID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGRldmljZV9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIE5VTEw7Ci0JbWVtc2V0KG5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZGV2aWNlX25vZGUpKTsKLQlwZG4gPSBremFsbG9jKHNpemVvZigqcGRuKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHBkbiA9PSBOVUxMKSB7Ci0JCWtmcmVlKG5vZGUpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0Jbm9kZS0+ZGF0YSA9IHBkbjsKLQlwZG4tPm5vZGUgPSBub2RlOwotCWxpc3RfYWRkX3RhaWwoJnBkbi0+RGV2aWNlX0xpc3QsICZpU2VyaWVzX0dsb2JhbF9EZXZpY2VfTGlzdCk7Ci0JcGRuLT5idXNubyA9IEJ1czsKLQlwZG4tPmJ1c3N1Ym5vID0gU3ViQnVzOwotCXBkbi0+ZGV2Zm4gPSBQQ0lfREVWRk4oSVNFUklFU19FTkNPREVfREVWSUNFKEFnZW50SWQpLCBGdW5jdGlvbik7Ci0JcmV0dXJuIG5vZGU7Ci19Ci0KLS8qCi0gKiB1bnNpZ25lZCBsb25nIF9faW5pdCBmaW5kX2FuZF9pbml0X3BoYnModm9pZCkKKyAqIGlTZXJpZXNfcGNpYmlvc19pbml0CiAgKgogICogRGVzY3JpcHRpb246CiAgKiAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciBhbGwgcG9zc2libGUgc3lzdGVtIFBDSSBob3N0IGJyaWRnZXMgdGhhdCBjb25uZWN0CkBAIC0yMzQsNTAgKzE2Myw0MiBAQAogICogICBvd25lcnNoaXAgc3RhdHVzLiAgQSBwY2lfY29udHJvbGxlciBpcyBidWlsdCBmb3IgYW55IGJ1cyB3aGljaCBpcyBwYXJ0aWFsbHkKICAqICAgb3duZWQgb3IgZnVsbHkgb3duZWQgYnkgdGhpcyBndWVzdCBwYXJ0aXRpb24uCiAgKi8KLXVuc2lnbmVkIGxvbmcgX19pbml0IGZpbmRfYW5kX2luaXRfcGhicyh2b2lkKQotewotCXN0cnVjdCBwY2lfY29udHJvbGxlciAqcGhiOwotCUh2QnVzTnVtYmVyIGJ1czsKLQotCS8qIENoZWNrIGFsbCBwb3NzaWJsZSBidXNlcy4gKi8KLQlmb3IgKGJ1cyA9IDA7IGJ1cyA8IDI1NjsgYnVzKyspIHsKLQkJaW50IHJldCA9IEh2Q2FsbFhtX3Rlc3RCdXMoYnVzKTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQlwcmludGsoImJ1cyAlZCBhcHBlYXJzIHRvIGV4aXN0XG4iLCBidXMpOwotCi0JCQlwaGIgPSBwY2liaW9zX2FsbG9jX2NvbnRyb2xsZXIoTlVMTCk7Ci0JCQlpZiAocGhiID09IE5VTEwpCi0JCQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkJCXBoYi0+cGNpX21lbV9vZmZzZXQgPSBwaGItPmxvY2FsX251bWJlciA9IGJ1czsKLQkJCXBoYi0+Zmlyc3RfYnVzbm8gPSBidXM7Ci0JCQlwaGItPmxhc3RfYnVzbm8gPSBidXM7Ci0JCQlwaGItPm9wcyA9ICZpU2VyaWVzX3BjaV9vcHM7Ci0KLQkJCS8qIEZpbmQgYW5kIGNvbm5lY3QgdGhlIGRldmljZXMuICovCi0JCQlzY2FuX1BIQl9zbG90cyhwaGIpOwotCQl9Ci0JCS8qCi0JCSAqIENoZWNrIGZvciBVbmV4cGVjdGVkIFJldHVybiBjb2RlLCBhIGNsdWUgdGhhdCBzb21ldGhpbmcKLQkJICogaGFzIGdvbmUgd3JvbmcuCi0JCSAqLwotCQllbHNlIGlmIChyZXQgIT0gMHgwMzAxKQotCQkJcHJpbnRrKEtFUk5fRVJSICJVbmV4cGVjdGVkIFJldHVybiBvbiBQcm9iZSgweCUwNFgpOiAweCUwNFgiLAotCQkJICAgICAgIGJ1cywgcmV0KTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBpU2VyaWVzX3BjaWJpb3NfaW5pdAotICoKLSAqIENoYW5jZSB0byBpbml0aWFsaXplIGFuZCBzdHJ1Y3R1cmVzIG9yIHZhcmlhYmxlIGJlZm9yZSBQQ0kgQnVzIHdhbGsuCi0gKi8KIHZvaWQgaVNlcmllc19wY2liaW9zX2luaXQodm9pZCkKIHsKLQlpb21tX3RhYmxlX2luaXRpYWxpemUoKTsKLQlmaW5kX2FuZF9pbml0X3BoYnMoKTsKLQlpb19wYWdlX21hc2sgPSAtMTsKKwlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKnBoYjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnJvb3QgPSBvZl9maW5kX25vZGVfYnlfcGF0aCgiLyIpOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IE5VTEw7CisKKwlpZiAocm9vdCA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0NSSVQgImlTZXJpZXNfcGNpYmlvc19pbml0OiBjYW4ndCBmaW5kIHJvb3QgIgorCQkJCSJvZiBkZXZpY2UgdHJlZVxuIik7CisJCXJldHVybjsKKwl9CisJd2hpbGUgKChub2RlID0gb2ZfZ2V0X25leHRfY2hpbGQocm9vdCwgbm9kZSkpICE9IE5VTEwpIHsKKwkJSHZCdXNOdW1iZXIgYnVzOworCQl1MzIgKmJ1c3A7CisKKwkJaWYgKChub2RlLT50eXBlID09IE5VTEwpIHx8IChzdHJjbXAobm9kZS0+dHlwZSwgInBjaSIpICE9IDApKQorCQkJY29udGludWU7CisKKwkJYnVzcCA9ICh1MzIgKilnZXRfcHJvcGVydHkobm9kZSwgImJ1cy1yYW5nZSIsIE5VTEwpOworCQlpZiAoYnVzcCA9PSBOVUxMKQorCQkJY29udGludWU7CisJCWJ1cyA9ICpidXNwOworCQlwcmludGsoImJ1cyAlZCBhcHBlYXJzIHRvIGV4aXN0XG4iLCBidXMpOworCQlwaGIgPSBwY2liaW9zX2FsbG9jX2NvbnRyb2xsZXIobm9kZSk7CisJCWlmIChwaGIgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXBoYi0+cGNpX21lbV9vZmZzZXQgPSBwaGItPmxvY2FsX251bWJlciA9IGJ1czsKKwkJcGhiLT5maXJzdF9idXNubyA9IGJ1czsKKwkJcGhiLT5sYXN0X2J1c25vID0gYnVzOworCQlwaGItPm9wcyA9ICZpU2VyaWVzX3BjaV9vcHM7CisJfQorCisJb2Zfbm9kZV9wdXQocm9vdCk7CisKKwlwY2lfZGV2c19waGJfaW5pdCgpOwogfQogCiAvKgpAQCAtMjk5LDYgKzIyMCwzNCBAQAogCQkgICAgICAgcGRldi0+YnVzLT5udW1iZXIsIHBkZXYtPmRldmZuLCBub2RlKTsKIAogCQlpZiAobm9kZSAhPSBOVUxMKSB7CisJCQlzdHJ1Y3QgcGNpX2RuICpwZG4gPSBQQ0lfRE4obm9kZSk7CisJCQl1MzIgKmFnZW50OworCisJCQlhZ2VudCA9ICh1MzIgKilnZXRfcHJvcGVydHkobm9kZSwgImxpbnV4LGFnZW50LWlkIiwKKwkJCQkJTlVMTCk7CisJCQlpZiAoKHBkbiAhPSBOVUxMKSAmJiAoYWdlbnQgIT0gTlVMTCkpIHsKKwkJCQl1OCBpcnEgPSBpU2VyaWVzX2FsbG9jYXRlX0lSUShwZG4tPmJ1c25vLCAwLAorCQkJCQkJcGRuLT5idXNzdWJubyk7CisJCQkJaW50IGVycjsKKworCQkJCWVyciA9IEh2Q2FsbFhtX2Nvbm5lY3RCdXNVbml0KHBkbi0+YnVzbm8sIHBkbi0+YnVzc3Vibm8sCisJCQkJCQkqYWdlbnQsIGlycSk7CisJCQkJaWYgKGVycikKKwkJCQkJcGNpX0xvZ19FcnJvcigiQ29ubmVjdCBCdXMgVW5pdCIsCisJCQkJCQlwZG4tPmJ1c25vLCBwZG4tPmJ1c3N1Ym5vLCAqYWdlbnQsIGVycik7CisJCQkJZWxzZSB7CisJCQkJCWVyciA9IEh2Q2FsbFBjaV9jb25maWdTdG9yZTgocGRuLT5idXNubywgcGRuLT5idXNzdWJubywKKwkJCQkJCQkqYWdlbnQsCisJCQkJCQkJUENJX0lOVEVSUlVQVF9MSU5FLAorCQkJCQkJCWlycSk7CisJCQkJCWlmIChlcnIpCisJCQkJCQlwY2lfTG9nX0Vycm9yKCJQY2lDZmdTdG9yZSBJcnEgRmFpbGVkISIsCisJCQkJCQkJcGRuLT5idXNubywgcGRuLT5idXNzdWJubywgKmFnZW50LCBlcnIpOworCQkJCX0KKwkJCQlpZiAoIWVycikKKwkJCQkJcGRldi0+aXJxID0gaXJxOworCQkJfQorCiAJCQkrK0RldmljZUNvdW50OwogCQkJcGRldi0+c3lzZGF0YSA9ICh2b2lkICopbm9kZTsKIAkJCVBDSV9ETihub2RlKS0+cGNpZGV2ID0gcGRldjsKQEAgLTMwOCw3ICsyNTcsNiBAQAogCQl9IGVsc2UKIAkJCXByaW50aygiUENJOiBEZXZpY2UgVHJlZSBub3QgZm91bmQgZm9yIDB4JTAxNmxYXG4iLAogCQkJCQkodW5zaWduZWQgbG9uZylwZGV2KTsKLQkJcGRldi0+aXJxID0gUENJX0ROKG5vZGUpLT5JcnE7CiAJfQogCWlTZXJpZXNfYWN0aXZhdGVfSVJRcygpOwogCW1mX2Rpc3BsYXlfc3JjKDB4QzkwMDAyMDApOwpAQCAtMzIzLDE0OCArMjcxLDYgQEAKIH0KIAogLyoKLSAqIExvb3AgdGhyb3VnaCBlYWNoIG5vZGUgZnVuY3Rpb24gdG8gZmluZCB1c2FibGUgRUFEcyBicmlkZ2VzLgotICovCi1zdGF0aWMgdm9pZCBzY2FuX1BIQl9zbG90cyhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKlBoYikKLXsKLQlzdHJ1Y3QgSHZDYWxsUGNpX0RldmljZUluZm8gKkRldkluZm87Ci0JSHZCdXNOdW1iZXIgYnVzID0gUGhiLT5sb2NhbF9udW1iZXI7CS8qIFN5c3RlbSBCdXMgKi8KLQljb25zdCBIdlN1YkJ1c051bWJlciBTdWJCdXMgPSAwOwkvKiBFQURzIGlzIGFsd2F5cyAwLiAqLwotCWludCBIdlJjID0gMDsKLQlpbnQgSWRTZWw7Ci0JY29uc3QgaW50IE1heEFnZW50cyA9IDg7Ci0KLQlEZXZJbmZvID0gKHN0cnVjdCBIdkNhbGxQY2lfRGV2aWNlSW5mbyopCi0JCWttYWxsb2Moc2l6ZW9mKHN0cnVjdCBIdkNhbGxQY2lfRGV2aWNlSW5mbyksIEdGUF9LRVJORUwpOwotCWlmIChEZXZJbmZvID09IE5VTEwpCi0JCXJldHVybjsKLQotCS8qCi0JICogUHJvYmUgZm9yIEVBRHMgQnJpZGdlcwotCSAqLwotCWZvciAoSWRTZWwgPSAxOyBJZFNlbCA8IE1heEFnZW50czsgKytJZFNlbCkgewotCQlIdlJjID0gSHZDYWxsUGNpX2dldERldmljZUluZm8oYnVzLCBTdWJCdXMsIElkU2VsLAotCQkJCWlzZXJpZXNfaHZfYWRkcihEZXZJbmZvKSwKLQkJCQlzaXplb2Yoc3RydWN0IEh2Q2FsbFBjaV9EZXZpY2VJbmZvKSk7Ci0JCWlmIChIdlJjID09IDApIHsKLQkJCWlmIChEZXZJbmZvLT5kZXZpY2VUeXBlID09IEh2Q2FsbFBjaV9Ob2RlRGV2aWNlKQotCQkJCXNjYW5fRUFEU19icmlkZ2UoYnVzLCBTdWJCdXMsIElkU2VsKTsKLQkJCWVsc2UKLQkJCQlwcmludGsoIlBDSTogSW52YWxpZCBTeXN0ZW0gQ29uZmlndXJhdGlvbigweCUwMlgpIgotCQkJCSAgICAgICAiIGZvciBidXMgMHglMDJ4IGlkIDB4JTAyeC5cbiIsCi0JCQkJICAgICAgIERldkluZm8tPmRldmljZVR5cGUsIGJ1cywgSWRTZWwpOwotCQl9Ci0JCWVsc2UKLQkJCXBjaV9Mb2dfRXJyb3IoImdldERldmljZUluZm8iLCBidXMsIFN1YkJ1cywgSWRTZWwsIEh2UmMpOwotCX0KLQlrZnJlZShEZXZJbmZvKTsKLX0KLQotc3RhdGljIHZvaWQgc2Nhbl9FQURTX2JyaWRnZShIdkJ1c051bWJlciBidXMsIEh2U3ViQnVzTnVtYmVyIFN1YkJ1cywKLQkJaW50IElkU2VsKQotewotCXN0cnVjdCBIdkNhbGxQY2lfQnJpZGdlSW5mbyAqQnJpZGdlSW5mbzsKLQlIdkFnZW50SWQgQWdlbnRJZDsKLQlpbnQgRnVuY3Rpb247Ci0JaW50IEh2UmM7Ci0KLQlCcmlkZ2VJbmZvID0gKHN0cnVjdCBIdkNhbGxQY2lfQnJpZGdlSW5mbyAqKQotCQlrbWFsbG9jKHNpemVvZihzdHJ1Y3QgSHZDYWxsUGNpX0JyaWRnZUluZm8pLCBHRlBfS0VSTkVMKTsKLQlpZiAoQnJpZGdlSW5mbyA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQkvKiBOb3RlOiBodlN1YkJ1cyBhbmQgaXJxIGlzIGFsd2F5cyBiZSAwIGF0IHRoaXMgbGV2ZWwhICovCi0JZm9yIChGdW5jdGlvbiA9IDA7IEZ1bmN0aW9uIDwgODsgKytGdW5jdGlvbikgewotCQlBZ2VudElkID0gSVNFUklFU19QQ0lfQUdFTlRJRChJZFNlbCwgRnVuY3Rpb24pOwotCQlIdlJjID0gSHZDYWxsWG1fY29ubmVjdEJ1c1VuaXQoYnVzLCBTdWJCdXMsIEFnZW50SWQsIDApOwotCQlpZiAoSHZSYyA9PSAwKSB7Ci0JCQlwcmludGsoImZvdW5kIGRldmljZSBhdCBidXMgJWQgaWRzZWwgJWQgZnVuYyAlZCAoQWdlbnRJZCAleClcbiIsCi0JCQkgICAgICAgYnVzLCBJZFNlbCwgRnVuY3Rpb24sIEFnZW50SWQpOwotCQkJLyogIENvbm5lY3QgRUFEczogMHgxOC4wMC4xMiA9IDB4MDAgKi8KLQkJCUh2UmMgPSBIdkNhbGxQY2lfZ2V0QnVzVW5pdEluZm8oYnVzLCBTdWJCdXMsIEFnZW50SWQsCi0JCQkJCWlzZXJpZXNfaHZfYWRkcihCcmlkZ2VJbmZvKSwKLQkJCQkJc2l6ZW9mKHN0cnVjdCBIdkNhbGxQY2lfQnJpZGdlSW5mbykpOwotCQkJaWYgKEh2UmMgPT0gMCkgewotCQkJCXByaW50aygiYnJpZGdlIGluZm86IHR5cGUgJXggc3ViYnVzICV4IG1heEFnZW50cyAleCBtYXhzdWJidXMgJXggbG9nc2xvdCAleFxuIiwKLQkJCQkJQnJpZGdlSW5mby0+YnVzVW5pdEluZm8uZGV2aWNlVHlwZSwKLQkJCQkJQnJpZGdlSW5mby0+c3ViQnVzTnVtYmVyLAotCQkJCQlCcmlkZ2VJbmZvLT5tYXhBZ2VudHMsCi0JCQkJCUJyaWRnZUluZm8tPm1heFN1YkJ1c051bWJlciwKLQkJCQkJQnJpZGdlSW5mby0+bG9naWNhbFNsb3ROdW1iZXIpOwotCQkJCWlmIChCcmlkZ2VJbmZvLT5idXNVbml0SW5mby5kZXZpY2VUeXBlID09Ci0JCQkJCQlIdkNhbGxQY2lfQnJpZGdlRGV2aWNlKSAgewotCQkJCQkvKiBTY2FuX0JyaWRnZV9TbG90Li4uOiAweDE4LjAwLjEyICovCi0JCQkJCXNjYW5fYnJpZGdlX3Nsb3QoYnVzLCBCcmlkZ2VJbmZvKTsKLQkJCQl9IGVsc2UKLQkJCQkJcHJpbnRrKCJQQ0k6IEludmFsaWQgQnJpZGdlIENvbmZpZ3VyYXRpb24oMHglMDJYKSIsCi0JCQkJCQlCcmlkZ2VJbmZvLT5idXNVbml0SW5mby5kZXZpY2VUeXBlKTsKLQkJCX0KLQkJfSBlbHNlIGlmIChIdlJjICE9IDB4MDAwQikKLQkJCXBjaV9Mb2dfRXJyb3IoIkVBRHMgQ29ubmVjdCIsCi0JCQkJCWJ1cywgU3ViQnVzLCBBZ2VudElkLCBIdlJjKTsKLQl9Ci0Ja2ZyZWUoQnJpZGdlSW5mbyk7Ci19Ci0KLS8qCi0gKiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgbm9kZSBzbG90IGlzIGFsd2F5cyBvbiB0aGUgcHJpbWFyeSBidXMhCi0gKi8KLXN0YXRpYyBpbnQgc2Nhbl9icmlkZ2Vfc2xvdChIdkJ1c051bWJlciBCdXMsCi0JCXN0cnVjdCBIdkNhbGxQY2lfQnJpZGdlSW5mbyAqQnJpZGdlSW5mbykKLXsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7Ci0JSHZTdWJCdXNOdW1iZXIgU3ViQnVzID0gQnJpZGdlSW5mby0+c3ViQnVzTnVtYmVyOwotCXUxNiBWZW5kb3JJZCA9IDA7Ci0JaW50IEh2UmMgPSAwOwotCXU4IElycSA9IDA7Ci0JaW50IElkU2VsID0gSVNFUklFU19HRVRfREVWSUNFX0ZST01fU1VCQlVTKFN1YkJ1cyk7Ci0JaW50IEZ1bmN0aW9uID0gSVNFUklFU19HRVRfRlVOQ1RJT05fRlJPTV9TVUJCVVMoU3ViQnVzKTsKLQlIdkFnZW50SWQgRUFEc0lkU2VsID0gSVNFUklFU19QQ0lfQUdFTlRJRChJZFNlbCwgRnVuY3Rpb24pOwotCi0JLyogaVNlcmllc19hbGxvY2F0ZV9JUlEuOiAweDE4LjAwLjEyKDB4QTMpICovCi0JSXJxID0gaVNlcmllc19hbGxvY2F0ZV9JUlEoQnVzLCAwLCBFQURzSWRTZWwpOwotCi0JLyoKLQkgKiBDb25uZWN0IGFsbCBmdW5jdGlvbnMgb2YgYW55IGRldmljZSBmb3VuZC4KLQkgKi8KLQlmb3IgKElkU2VsID0gMTsgSWRTZWwgPD0gQnJpZGdlSW5mby0+bWF4QWdlbnRzOyArK0lkU2VsKSB7Ci0JCWZvciAoRnVuY3Rpb24gPSAwOyBGdW5jdGlvbiA8IDg7ICsrRnVuY3Rpb24pIHsKLQkJCUh2QWdlbnRJZCBBZ2VudElkID0gSVNFUklFU19QQ0lfQUdFTlRJRChJZFNlbCwgRnVuY3Rpb24pOwotCQkJSHZSYyA9IEh2Q2FsbFhtX2Nvbm5lY3RCdXNVbml0KEJ1cywgU3ViQnVzLAotCQkJCQlBZ2VudElkLCBJcnEpOwotCQkJaWYgKEh2UmMgIT0gMCkgewotCQkJCXBjaV9Mb2dfRXJyb3IoIkNvbm5lY3QgQnVzIFVuaXQiLAotCQkJCQkgICAgICBCdXMsIFN1YkJ1cywgQWdlbnRJZCwgSHZSYyk7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0KLQkJCUh2UmMgPSBIdkNhbGxQY2lfY29uZmlnTG9hZDE2KEJ1cywgU3ViQnVzLCBBZ2VudElkLAotCQkJCQkJICAgICAgUENJX1ZFTkRPUl9JRCwgJlZlbmRvcklkKTsKLQkJCWlmIChIdlJjICE9IDApIHsKLQkJCQlwY2lfTG9nX0Vycm9yKCJSZWFkIFZlbmRvciIsCi0JCQkJCSAgICAgIEJ1cywgU3ViQnVzLCBBZ2VudElkLCBIdlJjKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCXByaW50aygicmVhZCB2ZW5kb3IgSUQ6ICV4XG4iLCBWZW5kb3JJZCk7Ci0KLQkJCS8qIEZvdW5kRGV2aWNlOiAweDE4LjI4LjEwID0gMHgxMkFFICovCi0JCQlIdlJjID0gSHZDYWxsUGNpX2NvbmZpZ1N0b3JlOChCdXMsIFN1YkJ1cywgQWdlbnRJZCwKLQkJCQkJCSAgICAgIFBDSV9JTlRFUlJVUFRfTElORSwgSXJxKTsKLQkJCWlmIChIdlJjICE9IDApCi0JCQkJcGNpX0xvZ19FcnJvcigiUGNpQ2ZnU3RvcmUgSXJxIEZhaWxlZCEiLAotCQkJCQkgICAgICBCdXMsIFN1YkJ1cywgQWdlbnRJZCwgSHZSYyk7Ci0KLQkJCSsrRGV2aWNlQ291bnQ7Ci0JCQlub2RlID0gYnVpbGRfZGV2aWNlX25vZGUoQnVzLCBTdWJCdXMsIEVBRHNJZFNlbCwgRnVuY3Rpb24pOwotCQkJUENJX0ROKG5vZGUpLT5JcnEgPSBJcnE7Ci0JCQlQQ0lfRE4obm9kZSktPkxvZ2ljYWxTbG90ID0gQnJpZGdlSW5mby0+bG9naWNhbFNsb3ROdW1iZXI7Ci0KLQkJfSAvKiBmb3IgKEZ1bmN0aW9uID0gMDsgRnVuY3Rpb24gPCA4OyArK0Z1bmN0aW9uKSAqLwotCX0gLyogZm9yIChJZFNlbCA9IDE7IElkU2VsIDw9IE1heEFnZW50czsgKytJZFNlbCkgKi8KLQlyZXR1cm4gSHZSYzsKLX0KLQotLyoKICAqIEkvMCBNZW1vcnkgY29weSBNVVNUIHVzZSBtbWlvIGNvbW1hbmRzIG9uIGlTZXJpZXMKICAqIFRvIGRvOyBGb3IgcGVyZm9ybWFuY2UsIGluY2x1ZGUgdGhlIGh2IGNhbGwgZGlyZWN0bHkKICAqLwpAQCAtNTA5LDExICszMTUsMTMgQEAKICAqLwogc3RhdGljIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZmluZF9EZXZpY2VfTm9kZShpbnQgYnVzLCBpbnQgZGV2Zm4pCiB7Ci0Jc3RydWN0IHBjaV9kbiAqcGRuOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkocGRuLCAmaVNlcmllc19HbG9iYWxfRGV2aWNlX0xpc3QsIERldmljZV9MaXN0KSB7Ci0JCWlmICgoYnVzID09IHBkbi0+YnVzbm8pICYmIChkZXZmbiA9PSBwZG4tPmRldmZuKSkKLQkJCXJldHVybiBwZG4tPm5vZGU7CisJZm9yIChub2RlID0gTlVMTDsgKG5vZGUgPSBvZl9maW5kX2FsbF9ub2Rlcyhub2RlKSk7ICkgeworCQlzdHJ1Y3QgcGNpX2RuICpwZG4gPSBQQ0lfRE4obm9kZSk7CisKKwkJaWYgKHBkbiAmJiAoYnVzID09IHBkbi0+YnVzbm8pICYmIChkZXZmbiA9PSBwZG4tPmRldmZuKSkKKwkJCXJldHVybiBub2RlOwogCX0KIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTYyNSw3ICs0MzMsNiBAQAogCWlmIChyZXQgIT0gMCkgIHsKIAkJc3RydWN0IHBjaV9kbiAqcGRuID0gUENJX0ROKERldk5vZGUpOwogCi0JCSsrUGNpX0Vycm9yX0NvdW50OwogCQkoKnJldHJ5KSsrOwogCQlwcmludGsoIlBDSTogJXM6IERldmljZSAweCUwNFg6JTAyWCAgSS9PIEVycm9yKCUyZCk6IDB4JTA0WFxuIiwKIAkJCQlUZXh0SGRyLCBwZG4tPmJ1c25vLCBwZG4tPmRldmZuLApAQCAtNzA3LDcgKzUxNCw2IEBACiAJCXJldHVybiAweGZmOwogCX0KIAlkbyB7Ci0JCSsrUGNpX0lvX1JlYWRfQ291bnQ7CiAJCUh2Q2FsbDNSZXQxNihIdkNhbGxQY2lCYXJMb2FkOCwgJnJldCwgZHNhLCBCYXJPZmZzZXQsIDApOwogCX0gd2hpbGUgKENoZWNrUmV0dXJuQ29kZSgiUkRCIiwgRGV2Tm9kZSwgJnJldHJ5LCByZXQucmMpICE9IDApOwogCkBAIC03MzcsNyArNTQzLDYgQEAKIAkJcmV0dXJuIDB4ZmZmZjsKIAl9CiAJZG8gewotCQkrK1BjaV9Jb19SZWFkX0NvdW50OwogCQlIdkNhbGwzUmV0MTYoSHZDYWxsUGNpQmFyTG9hZDE2LCAmcmV0LCBkc2EsCiAJCQkJQmFyT2Zmc2V0LCAwKTsKIAl9IHdoaWxlIChDaGVja1JldHVybkNvZGUoIlJEVyIsIERldk5vZGUsICZyZXRyeSwgcmV0LnJjKSAhPSAwKTsKQEAgLTc2OCw3ICs1NzMsNiBAQAogCQlyZXR1cm4gMHhmZmZmZmZmZjsKIAl9CiAJZG8gewotCQkrK1BjaV9Jb19SZWFkX0NvdW50OwogCQlIdkNhbGwzUmV0MTYoSHZDYWxsUGNpQmFyTG9hZDMyLCAmcmV0LCBkc2EsCiAJCQkJQmFyT2Zmc2V0LCAwKTsKIAl9IHdoaWxlIChDaGVja1JldHVybkNvZGUoIlJETCIsIERldk5vZGUsICZyZXRyeSwgcmV0LnJjKSAhPSAwKTsKQEAgLTgwNiw3ICs2MTAsNiBAQAogCQlyZXR1cm47CiAJfQogCWRvIHsKLQkJKytQY2lfSW9fV3JpdGVfQ291bnQ7CiAJCXJjID0gSHZDYWxsNChIdkNhbGxQY2lCYXJTdG9yZTgsIGRzYSwgQmFyT2Zmc2V0LCBkYXRhLCAwKTsKIAl9IHdoaWxlIChDaGVja1JldHVybkNvZGUoIldXQiIsIERldk5vZGUsICZyZXRyeSwgcmMpICE9IDApOwogfQpAQCAtODM0LDcgKzYzNyw2IEBACiAJCXJldHVybjsKIAl9CiAJZG8gewotCQkrK1BjaV9Jb19Xcml0ZV9Db3VudDsKIAkJcmMgPSBIdkNhbGw0KEh2Q2FsbFBjaUJhclN0b3JlMTYsIGRzYSwgQmFyT2Zmc2V0LCBzd2FiMTYoZGF0YSksIDApOwogCX0gd2hpbGUgKENoZWNrUmV0dXJuQ29kZSgiV1dXIiwgRGV2Tm9kZSwgJnJldHJ5LCByYykgIT0gMCk7CiB9CkBAIC04NjIsNyArNjY0LDYgQEAKIAkJcmV0dXJuOwogCX0KIAlkbyB7Ci0JCSsrUGNpX0lvX1dyaXRlX0NvdW50OwogCQlyYyA9IEh2Q2FsbDQoSHZDYWxsUGNpQmFyU3RvcmUzMiwgZHNhLCBCYXJPZmZzZXQsIHN3YWIzMihkYXRhKSwgMCk7CiAJfSB3aGlsZSAoQ2hlY2tSZXR1cm5Db2RlKCJXV0wiLCBEZXZOb2RlLCAmcmV0cnksIHJjKSAhPSAwKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9zZXR1cC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmMKaW5kZXggYTZmZDliZS4uNjE3YzcyNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmMKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9jYWxsX3htLmg+CiAjaW5jbHVkZSA8YXNtL2lzZXJpZXMvaXRfbHBfcXVldWUuaD4KICNpbmNsdWRlIDxhc20vaXNlcmllcy9tZi5oPgotI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2l0X2V4cF92cGRfcGFuZWwuaD4KICNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9scF9ldmVudC5oPgogI2luY2x1ZGUgPGFzbS9pc2VyaWVzL2xwYXJfbWFwLmg+CiAjaW5jbHVkZSA8YXNtL3VkYmcuaD4KQEAgLTgxLDkgKzgwLDYgQEAKIHN0YXRpYyB2b2lkIGlTZXJpZXNfcGNpX2ZpbmFsX2ZpeHVwKHZvaWQpIHsgfQogI2VuZGlmCiAKLS8qIEdsb2JhbCBWYXJpYWJsZXMgKi8KLWludCBwaXJhbmhhX3NpbXVsYXRvcjsKLQogZXh0ZXJuIGludCByZF9zaXplOwkJLyogRGVmaW5lZCBpbiBkcml2ZXJzL2Jsb2NrL3JkLmMgKi8KIGV4dGVybiB1bnNpZ25lZCBsb25nIGVtYmVkZGVkX3N5c21hcF9zdGFydDsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGVtYmVkZGVkX3N5c21hcF9lbmQ7CkBAIC05MSw4ICs4Nyw2IEBACiBleHRlcm4gdW5zaWduZWQgbG9uZyBpU2VyaWVzX3JlY2FsX3RiOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaVNlcmllc19yZWNhbF90aXRhbjsKIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgY21kX21lbV9saW1pdDsKLQogc3RydWN0IE1lbW9yeUJsb2NrIHsKIAl1bnNpZ25lZCBsb25nIGFic1N0YXJ0OwogCXVuc2lnbmVkIGxvbmcgYWJzRW5kOwpAQCAtMzQwLDggKzMzNCw2IEBACiAjaWZkZWYgQ09ORklHX1NNUAogCXNtcF9pbml0X2lTZXJpZXMoKTsKICNlbmRpZgotCWlmIChpdExwTmFjYS54UGlyRW52aXJvbk1vZGUgPT0gMCkKLQkJcGlyYW5oYV9zaW11bGF0b3IgPSAxOwogCiAJLyogQXNzb2NpYXRlIExwIEV2ZW50IFF1ZXVlIDAgd2l0aCBwcm9jZXNzb3IgMCAqLwogCUh2Q2FsbEV2ZW50X3NldExwRXZlbnRRdWV1ZUludGVycnVwdFByb2MoMCwgMCk7CkBAIC01MzYsMTAgKzUyOCwxMCBAQAogewogCWlmIChnZXRfbHBwYWNhKCktPnNoYXJlZF9wcm9jKSB7CiAJCXBwY19tZC5pZGxlX2xvb3AgPSBpc2VyaWVzX3NoYXJlZF9pZGxlOwotCQlwcmludGsoS0VSTl9JTkZPICJVc2luZyBzaGFyZWQgcHJvY2Vzc29yIGlkbGUgbG9vcFxuIik7CisJCXByaW50ayhLRVJOX0RFQlVHICJVc2luZyBzaGFyZWQgcHJvY2Vzc29yIGlkbGUgbG9vcFxuIik7CiAJfSBlbHNlIHsKIAkJcHBjX21kLmlkbGVfbG9vcCA9IGlzZXJpZXNfZGVkaWNhdGVkX2lkbGU7Ci0JCXByaW50ayhLRVJOX0lORk8gIlVzaW5nIGRlZGljYXRlZCBpZGxlIGxvb3BcbiIpOworCQlwcmludGsoS0VSTl9ERUJVRyAiVXNpbmcgZGVkaWNhdGVkIGlkbGUgbG9vcFxuIik7CiAJfQogCiAJLyogU2V0dXAgdGhlIExwIEV2ZW50IFF1ZXVlICovCkBAIC03MTQsMjQzICs3MDYsNiBAQAogCS8qIFhYWCBJbXBsZW1lbnQgZW5hYmxlX3BtY3MgZm9yIGlTZXJpZXMgKi8KIH07CiAKLXN0cnVjdCBibG9iIHsKLQl1bnNpZ25lZCBjaGFyIGRhdGFbUEFHRV9TSVpFXTsKLQl1bnNpZ25lZCBsb25nIG5leHQ7Ci19OwotCi1zdHJ1Y3QgaXNlcmllc19mbGF0X2R0IHsKLQlzdHJ1Y3QgYm9vdF9wYXJhbV9oZWFkZXIgaGVhZGVyOwotCXU2NCByZXNlcnZlX21hcFsyXTsKLQlzdHJ1Y3QgYmxvYiBkdDsKLQlzdHJ1Y3QgYmxvYiBzdHJpbmdzOwotfTsKLQotc3RydWN0IGlzZXJpZXNfZmxhdF9kdCBpc2VyaWVzX2R0OwotCi12b2lkIGR0X2luaXQoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQpCi17Ci0JZHQtPmhlYWRlci5vZmZfbWVtX3Jzdm1hcCA9Ci0JCW9mZnNldG9mKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQsIHJlc2VydmVfbWFwKTsKLQlkdC0+aGVhZGVyLm9mZl9kdF9zdHJ1Y3QgPSBvZmZzZXRvZihzdHJ1Y3QgaXNlcmllc19mbGF0X2R0LCBkdCk7Ci0JZHQtPmhlYWRlci5vZmZfZHRfc3RyaW5ncyA9IG9mZnNldG9mKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQsIHN0cmluZ3MpOwotCWR0LT5oZWFkZXIudG90YWxzaXplID0gc2l6ZW9mKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQpOwotCWR0LT5oZWFkZXIuZHRfc3RyaW5nc19zaXplID0gc2l6ZW9mKHN0cnVjdCBibG9iKTsKLQotCS8qIFRoZXJlIGlzIG5vIG5vdGlvbiBvZiBoYXJkd2FyZSBjcHUgaWQgb24gaVNlcmllcyAqLwotCWR0LT5oZWFkZXIuYm9vdF9jcHVpZF9waHlzID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwotCi0JZHQtPmR0Lm5leHQgPSAodW5zaWduZWQgbG9uZykmZHQtPmR0LmRhdGE7Ci0JZHQtPnN0cmluZ3MubmV4dCA9ICh1bnNpZ25lZCBsb25nKSZkdC0+c3RyaW5ncy5kYXRhOwotCi0JZHQtPmhlYWRlci5tYWdpYyA9IE9GX0RUX0hFQURFUjsKLQlkdC0+aGVhZGVyLnZlcnNpb24gPSAweDEwOwotCWR0LT5oZWFkZXIubGFzdF9jb21wX3ZlcnNpb24gPSAweDEwOwotCi0JZHQtPnJlc2VydmVfbWFwWzBdID0gMDsKLQlkdC0+cmVzZXJ2ZV9tYXBbMV0gPSAwOwotfQotCi12b2lkIGR0X2NoZWNrX2Jsb2Ioc3RydWN0IGJsb2IgKmIpCi17Ci0JaWYgKGItPm5leHQgPj0gKHVuc2lnbmVkIGxvbmcpJmItPm5leHQpIHsKLQkJREJHKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZsYXQgZGV2aWNlIHRyZWUgYmxvYiFcbiIpOwotCQlCVUcoKTsKLQl9Ci19Ci0KLXZvaWQgZHRfcHVzaF91MzIoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQsIHUzMiB2YWx1ZSkKLXsKLQkqKCh1MzIqKWR0LT5kdC5uZXh0KSA9IHZhbHVlOwotCWR0LT5kdC5uZXh0ICs9IHNpemVvZih1MzIpOwotCi0JZHRfY2hlY2tfYmxvYigmZHQtPmR0KTsKLX0KLQotdm9pZCBkdF9wdXNoX3U2NChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgdTY0IHZhbHVlKQotewotCSooKHU2NCopZHQtPmR0Lm5leHQpID0gdmFsdWU7Ci0JZHQtPmR0Lm5leHQgKz0gc2l6ZW9mKHU2NCk7Ci0KLQlkdF9jaGVja19ibG9iKCZkdC0+ZHQpOwotfQotCi11bnNpZ25lZCBsb25nIGR0X3B1c2hfYnl0ZXMoc3RydWN0IGJsb2IgKmJsb2IsIGNoYXIgKmRhdGEsIGludCBsZW4pCi17Ci0JdW5zaWduZWQgbG9uZyBzdGFydCA9IGJsb2ItPm5leHQgLSAodW5zaWduZWQgbG9uZylibG9iLT5kYXRhOwotCi0JbWVtY3B5KChjaGFyICopYmxvYi0+bmV4dCwgZGF0YSwgbGVuKTsKLQlibG9iLT5uZXh0ID0gX0FMSUdOKGJsb2ItPm5leHQgKyBsZW4sIDQpOwotCi0JZHRfY2hlY2tfYmxvYihibG9iKTsKLQotCXJldHVybiBzdGFydDsKLX0KLQotdm9pZCBkdF9zdGFydF9ub2RlKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBjaGFyICpuYW1lKQotewotCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9CRUdJTl9OT0RFKTsKLQlkdF9wdXNoX2J5dGVzKCZkdC0+ZHQsIG5hbWUsIHN0cmxlbihuYW1lKSArIDEpOwotfQotCi0jZGVmaW5lIGR0X2VuZF9ub2RlKGR0KSBkdF9wdXNoX3UzMihkdCwgT0ZfRFRfRU5EX05PREUpCi0KLXZvaWQgZHRfcHJvcChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY2hhciAqbmFtZSwgY2hhciAqZGF0YSwgaW50IGxlbikKLXsKLQl1bnNpZ25lZCBsb25nIG9mZnNldDsKLQotCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9QUk9QKTsKLQotCS8qIExlbmd0aCBvZiB0aGUgZGF0YSAqLwotCWR0X3B1c2hfdTMyKGR0LCBsZW4pOwotCi0JLyogUHV0IHRoZSBwcm9wZXJ0eSBuYW1lIGluIHRoZSBzdHJpbmcgYmxvYi4gKi8KLQlvZmZzZXQgPSBkdF9wdXNoX2J5dGVzKCZkdC0+c3RyaW5ncywgbmFtZSwgc3RybGVuKG5hbWUpICsgMSk7Ci0KLQkvKiBUaGUgb2Zmc2V0IG9mIHRoZSBwcm9wZXJ0aWVzIG5hbWUgaW4gdGhlIHN0cmluZyBibG9iLiAqLwotCWR0X3B1c2hfdTMyKGR0LCAodTMyKW9mZnNldCk7Ci0KLQkvKiBUaGUgYWN0dWFsIGRhdGEuICovCi0JZHRfcHVzaF9ieXRlcygmZHQtPmR0LCBkYXRhLCBsZW4pOwotfQotCi12b2lkIGR0X3Byb3Bfc3RyKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBjaGFyICpuYW1lLCBjaGFyICpkYXRhKQotewotCWR0X3Byb3AoZHQsIG5hbWUsIGRhdGEsIHN0cmxlbihkYXRhKSArIDEpOyAvKiArIDEgZm9yIE5VTEwgKi8KLX0KLQotdm9pZCBkdF9wcm9wX3UzMihzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY2hhciAqbmFtZSwgdTMyIGRhdGEpCi17Ci0JZHRfcHJvcChkdCwgbmFtZSwgKGNoYXIgKikmZGF0YSwgc2l6ZW9mKHUzMikpOwotfQotCi12b2lkIGR0X3Byb3BfdTY0KHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCBjaGFyICpuYW1lLCB1NjQgZGF0YSkKLXsKLQlkdF9wcm9wKGR0LCBuYW1lLCAoY2hhciAqKSZkYXRhLCBzaXplb2YodTY0KSk7Ci19Ci0KLXZvaWQgZHRfcHJvcF91NjRfbGlzdChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY2hhciAqbmFtZSwgdTY0ICpkYXRhLCBpbnQgbikKLXsKLQlkdF9wcm9wKGR0LCBuYW1lLCAoY2hhciAqKWRhdGEsIHNpemVvZih1NjQpICogbik7Ci19Ci0KLXZvaWQgZHRfcHJvcF91MzJfbGlzdChzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY2hhciAqbmFtZSwgdTMyICpkYXRhLCBpbnQgbikKLXsKLQlkdF9wcm9wKGR0LCBuYW1lLCAoY2hhciAqKWRhdGEsIHNpemVvZih1MzIpICogbik7Ci19Ci0KLXZvaWQgZHRfcHJvcF9lbXB0eShzdHJ1Y3QgaXNlcmllc19mbGF0X2R0ICpkdCwgY2hhciAqbmFtZSkKLXsKLQlkdF9wcm9wKGR0LCBuYW1lLCBOVUxMLCAwKTsKLX0KLQotdm9pZCBkdF9jcHVzKHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0KQotewotCXVuc2lnbmVkIGNoYXIgYnVmWzMyXTsKLQl1bnNpZ25lZCBjaGFyICpwOwotCXVuc2lnbmVkIGludCBpLCBpbmRleDsKLQlzdHJ1Y3QgSW9IcmlQcm9jZXNzb3JWcGQgKmQ7Ci0JdTMyIHBmdF9zaXplWzJdOwotCi0JLyogeXVjayAqLwotCXNucHJpbnRmKGJ1ZiwgMzIsICJQb3dlclBDLCVzIiwgY3VyX2NwdV9zcGVjLT5jcHVfbmFtZSk7Ci0JcCA9IHN0cmNocihidWYsICcgJyk7Ci0JaWYgKCFwKSBwID0gYnVmICsgc3RybGVuKGJ1Zik7Ci0KLQlkdF9zdGFydF9ub2RlKGR0LCAiY3B1cyIpOwotCWR0X3Byb3BfdTMyKGR0LCAiI2FkZHJlc3MtY2VsbHMiLCAxKTsKLQlkdF9wcm9wX3UzMihkdCwgIiNzaXplLWNlbGxzIiwgMCk7Ci0KLQlwZnRfc2l6ZVswXSA9IDA7IC8qIE5VTUEgQ0VDIGNvb2tpZSwgMCBmb3Igbm9uIE5VTUEgICovCi0JcGZ0X3NpemVbMV0gPSBfX2lsb2cyKEh2Q2FsbEhwdF9nZXRIcHRQYWdlcygpICogSFdfUEFHRV9TSVpFKTsKLQotCWZvciAoaSA9IDA7IGkgPCBOUl9DUFVTOyBpKyspIHsKLQkJaWYgKGxwcGFjYVtpXS5keW5fcHJvY19zdGF0dXMgPj0gMikKLQkJCWNvbnRpbnVlOwotCi0JCXNucHJpbnRmKHAsIDMyIC0gKHAgLSBidWYpLCAiQCVkIiwgaSk7Ci0JCWR0X3N0YXJ0X25vZGUoZHQsIGJ1Zik7Ci0KLQkJZHRfcHJvcF9zdHIoZHQsICJkZXZpY2VfdHlwZSIsICJjcHUiKTsKLQotCQlpbmRleCA9IGxwcGFjYVtpXS5keW5faHZfcGh5c19wcm9jX2luZGV4OwotCQlkID0gJnhJb0hyaVByb2Nlc3NvclZwZFtpbmRleF07Ci0KLQkJZHRfcHJvcF91MzIoZHQsICJpLWNhY2hlLXNpemUiLCBkLT54SW5zdENhY2hlU2l6ZSAqIDEwMjQpOwotCQlkdF9wcm9wX3UzMihkdCwgImktY2FjaGUtbGluZS1zaXplIiwgZC0+eEluc3RDYWNoZU9wZXJhbmRTaXplKTsKLQotCQlkdF9wcm9wX3UzMihkdCwgImQtY2FjaGUtc2l6ZSIsIGQtPnhEYXRhTDFDYWNoZVNpemVLQiAqIDEwMjQpOwotCQlkdF9wcm9wX3UzMihkdCwgImQtY2FjaGUtbGluZS1zaXplIiwgZC0+eERhdGFDYWNoZU9wZXJhbmRTaXplKTsKLQotCQkvKiBtYWdpYyBjb252ZXJzaW9ucyB0byBIeiBjb3BpZWQgZnJvbSBvbGQgY29kZSAqLwotCQlkdF9wcm9wX3UzMihkdCwgImNsb2NrLWZyZXF1ZW5jeSIsCi0JCQkoKDFVTCA8PCAzNCkgKiAxMDAwMDAwKSAvIGQtPnhQcm9jRnJlcSk7Ci0JCWR0X3Byb3BfdTMyKGR0LCAidGltZWJhc2UtZnJlcXVlbmN5IiwKLQkJCSgoMVVMIDw8IDMyKSAqIDEwMDAwMDApIC8gZC0+eFRpbWVCYXNlRnJlcSk7Ci0KLQkJZHRfcHJvcF91MzIoZHQsICJyZWciLCBpKTsKLQotCQlkdF9wcm9wX3UzMl9saXN0KGR0LCAiaWJtLHBmdC1zaXplIiwgcGZ0X3NpemUsIDIpOwotCi0JCWR0X2VuZF9ub2RlKGR0KTsKLQl9Ci0KLQlkdF9lbmRfbm9kZShkdCk7Ci19Ci0KLXZvaWQgZHRfbW9kZWwoc3RydWN0IGlzZXJpZXNfZmxhdF9kdCAqZHQpCi17Ci0JY2hhciBidWZbMTZdID0gIklCTSwiOwotCi0JLyogIklCTSwiICsgbWZnSWRbMjozXSArIHN5c3RlbVNlcmlhbFsxOjVdICovCi0Jc3RybmUyYShidWYgKyA0LCB4SXRFeHRWcGRQYW5lbC5tZmdJRCArIDIsIDIpOwotCXN0cm5lMmEoYnVmICsgNiwgeEl0RXh0VnBkUGFuZWwuc3lzdGVtU2VyaWFsICsgMSwgNSk7Ci0JYnVmWzExXSA9ICdcMCc7Ci0JZHRfcHJvcF9zdHIoZHQsICJzeXN0ZW0taWQiLCBidWYpOwotCi0JLyogIklCTSwiICsgbWFjaGluZVR5cGVbMDo0XSAqLwotCXN0cm5lMmEoYnVmICsgNCwgeEl0RXh0VnBkUGFuZWwubWFjaGluZVR5cGUsIDQpOwotCWJ1Zls4XSA9ICdcMCc7Ci0JZHRfcHJvcF9zdHIoZHQsICJtb2RlbCIsIGJ1Zik7Ci0KLQlkdF9wcm9wX3N0cihkdCwgImNvbXBhdGlibGUiLCAiSUJNLGlTZXJpZXMiKTsKLX0KLQotdm9pZCBidWlsZF9mbGF0X2R0KHN0cnVjdCBpc2VyaWVzX2ZsYXRfZHQgKmR0LCB1bnNpZ25lZCBsb25nIHBoeXNfbWVtX3NpemUpCi17Ci0JdTY0IHRtcFsyXTsKLQotCWR0X2luaXQoZHQpOwotCi0JZHRfc3RhcnRfbm9kZShkdCwgIiIpOwotCi0JZHRfcHJvcF91MzIoZHQsICIjYWRkcmVzcy1jZWxscyIsIDIpOwotCWR0X3Byb3BfdTMyKGR0LCAiI3NpemUtY2VsbHMiLCAyKTsKLQlkdF9tb2RlbChkdCk7Ci0KLQkvKiAvbWVtb3J5ICovCi0JZHRfc3RhcnRfbm9kZShkdCwgIm1lbW9yeUAwIik7Ci0JZHRfcHJvcF9zdHIoZHQsICJuYW1lIiwgIm1lbW9yeSIpOwotCWR0X3Byb3Bfc3RyKGR0LCAiZGV2aWNlX3R5cGUiLCAibWVtb3J5Iik7Ci0JdG1wWzBdID0gMDsKLQl0bXBbMV0gPSBwaHlzX21lbV9zaXplOwotCWR0X3Byb3BfdTY0X2xpc3QoZHQsICJyZWciLCB0bXAsIDIpOwotCWR0X2VuZF9ub2RlKGR0KTsKLQotCS8qIC9jaG9zZW4gKi8KLQlkdF9zdGFydF9ub2RlKGR0LCAiY2hvc2VuIik7Ci0JZHRfcHJvcF9zdHIoZHQsICJib290YXJncyIsIGNtZF9saW5lKTsKLQlpZiAoY21kX21lbV9saW1pdCkKLQkJZHRfcHJvcF91NjQoZHQsICJsaW51eCxtZW1vcnktbGltaXQiLCBjbWRfbWVtX2xpbWl0KTsKLQlkdF9lbmRfbm9kZShkdCk7Ci0KLQlkdF9jcHVzKGR0KTsKLQotCWR0X2VuZF9ub2RlKGR0KTsKLQotCWR0X3B1c2hfdTMyKGR0LCBPRl9EVF9FTkQpOwotfQotCiB2b2lkICogX19pbml0IGlTZXJpZXNfZWFybHlfc2V0dXAodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIHBoeXNfbWVtX3NpemU7CkBAIC05NjUsMjkgKzcyMCw5IEBACiAKIAlpU2VyaWVzX2dldF9jbWRsaW5lKCk7CiAKLQkvKiBTYXZlIHVucGFyc2VkIGNvbW1hbmQgbGluZSBjb3B5IGZvciAvcHJvYy9jbWRsaW5lICovCi0Jc3RybGNweShzYXZlZF9jb21tYW5kX2xpbmUsIGNtZF9saW5lLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0KLQkvKiBQYXJzZSBlYXJseSBwYXJhbWV0ZXJzLCBpbiBwYXJ0aWN1bGFyIG1lbT14ICovCi0JcGFyc2VfZWFybHlfcGFyYW0oKTsKLQotCWJ1aWxkX2ZsYXRfZHQoJmlzZXJpZXNfZHQsIHBoeXNfbWVtX3NpemUpOwotCi0JcmV0dXJuICh2b2lkICopIF9fcGEoJmlzZXJpZXNfZHQpOworCXJldHVybiAodm9pZCAqKSBfX3BhKGJ1aWxkX2ZsYXRfZHQocGh5c19tZW1fc2l6ZSkpOwogfQogCi0vKgotICogT24gaVNlcmllcyB3ZSBqdXN0IHBhcnNlIHRoZSBtZW09WCBvcHRpb24gZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotICogT24gcFNlcmllcyBpdCdzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQsIHNlZSBwcm9tX2luaXRfbWVtKCkKLSAqLwotc3RhdGljIGludCBfX2luaXQgZWFybHlfcGFyc2VtZW0oY2hhciAqcCkKLXsKLQlpZiAocCkKLQkJY21kX21lbV9saW1pdCA9IEFMSUdOKG1lbXBhcnNlKHAsICZwKSwgUEFHRV9TSVpFKTsKLQlyZXR1cm4gMDsKLX0KLWVhcmx5X3BhcmFtKCJtZW0iLCBlYXJseV9wYXJzZW1lbSk7Ci0KIHN0YXRpYyB2b2lkIGh2cHV0YyhjaGFyIGMpCiB7CiAJaWYgKGMgPT0gJ1xuJykKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9zZXR1cC5oIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmgKaW5kZXggNTIxMzA0NC4uMGE0N2FjNSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmgKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3NldHVwLmgKQEAgLTIxLDQgKzIxLDYgQEAKIGV4dGVybiBpbnQgaVNlcmllc19zZXRfcnRjX3RpbWUoc3RydWN0IHJ0Y190aW1lICp0bSk7CiBleHRlcm4gdm9pZCBpU2VyaWVzX2dldF9ydGNfdGltZShzdHJ1Y3QgcnRjX3RpbWUgKnRtKTsKIAorZXh0ZXJuIHZvaWQgKmJ1aWxkX2ZsYXRfZHQodW5zaWduZWQgbG9uZyBwaHlzX21lbV9zaXplKTsKKwogI2VuZGlmIC8qIF9fSVNFUklFU19TRVRVUF9IX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy92aW8uYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy92aW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQzNmFiMC4uMDAwMDAwMAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvdmlvLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIElCTSBQb3dlclBDIGlTZXJpZXMgVmlydHVhbCBJL08gSW5mcmFzdHJ1Y3R1cmUgU3VwcG9ydC4KLSAqCi0gKiAgICBDb3B5cmlnaHQgKGMpIDIwMDUgU3RlcGhlbiBSb3Rod2VsbCwgSUJNIENvcnAuCi0gKgotICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgICAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbgotICogICAgICAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICovCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0KLSNpbmNsdWRlIDxhc20vdmlvLmg+Ci0jaW5jbHVkZSA8YXNtL2lvbW11Lmg+Ci0jaW5jbHVkZSA8YXNtL3RjZS5oPgotI2luY2x1ZGUgPGFzbS9hYnNfYWRkci5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+Ci0jaW5jbHVkZSA8YXNtL2lzZXJpZXMvdmlvLmg+Ci0jaW5jbHVkZSA8YXNtL2lzZXJpZXMvaHZfdHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9scF9jb25maWcuaD4KLSNpbmNsdWRlIDxhc20vaXNlcmllcy9odl9jYWxsX3htLmg+Ci0KLSNpbmNsdWRlICJpb21tdS5oIgotCi1zdHJ1Y3QgZGV2aWNlICppU2VyaWVzX3Zpb19kZXYgPSAmdmlvX2J1c19kZXZpY2UuZGV2OwotRVhQT1JUX1NZTUJPTChpU2VyaWVzX3Zpb19kZXYpOwotCi1zdGF0aWMgc3RydWN0IGlvbW11X3RhYmxlIHZldGhfaW9tbXVfdGFibGU7Ci1zdGF0aWMgc3RydWN0IGlvbW11X3RhYmxlIHZpb19pb21tdV90YWJsZTsKLQotc3RhdGljIHZvaWQgX19pbml0IGlvbW11X3Zpb19pbml0KHZvaWQpCi17Ci0JaW9tbXVfdGFibGVfZ2V0cGFybXNfaVNlcmllcygyNTUsIDAsIDB4ZmYsICZ2ZXRoX2lvbW11X3RhYmxlKTsKLQl2ZXRoX2lvbW11X3RhYmxlLml0X3NpemUgLz0gMjsKLQl2aW9faW9tbXVfdGFibGUgPSB2ZXRoX2lvbW11X3RhYmxlOwotCXZpb19pb21tdV90YWJsZS5pdF9vZmZzZXQgKz0gdmV0aF9pb21tdV90YWJsZS5pdF9zaXplOwotCi0JaWYgKCFpb21tdV9pbml0X3RhYmxlKCZ2ZXRoX2lvbW11X3RhYmxlKSkKLQkJcHJpbnRrKCJWaXJ0dWFsIEJ1cyBWRVRIIFRDRSB0YWJsZSBmYWlsZWQuXG4iKTsKLQlpZiAoIWlvbW11X2luaXRfdGFibGUoJnZpb19pb21tdV90YWJsZSkpCi0JCXByaW50aygiVmlydHVhbCBCdXMgVklPIFRDRSB0YWJsZSBmYWlsZWQuXG4iKTsKLX0KLQotLyoqCi0gKiB2aW9fcmVnaXN0ZXJfZGV2aWNlX2lzZXJpZXM6IC0gUmVnaXN0ZXIgYSBuZXcgaVNlcmllcyB2aW8gZGV2aWNlLgotICogQHZvaWRldjoJVGhlIGRldmljZSB0byByZWdpc3Rlci4KLSAqLwotc3RhdGljIHN0cnVjdCB2aW9fZGV2ICpfX2luaXQgdmlvX3JlZ2lzdGVyX2RldmljZV9pc2VyaWVzKGNoYXIgKnR5cGUsCi0JCXVpbnQzMl90IHVuaXRfbnVtKQotewotCXN0cnVjdCB2aW9fZGV2ICp2aW9kZXY7Ci0KLQkvKiBhbGxvY2F0ZSBhIHZpb19kZXYgZm9yIHRoaXMgZGV2aWNlICovCi0JdmlvZGV2ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHZpb19kZXYpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXZpb2RldikKLQkJcmV0dXJuIE5VTEw7Ci0JbWVtc2V0KHZpb2RldiwgMCwgc2l6ZW9mKHN0cnVjdCB2aW9fZGV2KSk7Ci0KLQlzbnByaW50Zih2aW9kZXYtPmRldi5idXNfaWQsIEJVU19JRF9TSVpFLCAiJXMlZCIsIHR5cGUsIHVuaXRfbnVtKTsKLQotCXZpb2Rldi0+bmFtZSA9IHZpb2Rldi0+ZGV2LmJ1c19pZDsKLQl2aW9kZXYtPnR5cGUgPSB0eXBlOwotCXZpb2Rldi0+dW5pdF9hZGRyZXNzID0gdW5pdF9udW07Ci0JdmlvZGV2LT5pb21tdV90YWJsZSA9ICZ2aW9faW9tbXVfdGFibGU7Ci0JaWYgKHZpb19yZWdpc3Rlcl9kZXZpY2UodmlvZGV2KSA9PSBOVUxMKSB7Ci0JCWtmcmVlKHZpb2Rldik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQlyZXR1cm4gdmlvZGV2OwotfQotCi12b2lkIF9faW5pdCBwcm9iZV9idXNfaXNlcmllcyh2b2lkKQotewotCUh2THBJbmRleE1hcCB2bGFuX21hcDsKLQlzdHJ1Y3QgdmlvX2RldiAqdmlvZGV2OwotCWludCBpOwotCi0JLyogdGhlcmUgaXMgb25seSBvbmUgb2YgZWFjaCBvZiB0aGVzZSAqLwotCXZpb19yZWdpc3Rlcl9kZXZpY2VfaXNlcmllcygidmlvY29ucyIsIDApOwotCXZpb19yZWdpc3Rlcl9kZXZpY2VfaXNlcmllcygidnNjc2kiLCAwKTsKLQotCXZsYW5fbWFwID0gSHZMcENvbmZpZ19nZXRWaXJ0dWFsTGFuSW5kZXhNYXAoKTsKLQlmb3IgKGkgPSAwOyBpIDwgSFZNQVhBUkNISVRFQ1RFRFZJUlRVQUxMQU5TOyBpKyspIHsKLQkJaWYgKCh2bGFuX21hcCAmICgweDgwMDAgPj4gaSkpID09IDApCi0JCQljb250aW51ZTsKLQkJdmlvZGV2ID0gdmlvX3JlZ2lzdGVyX2RldmljZV9pc2VyaWVzKCJ2bGFuIiwgaSk7Ci0JCS8qIHZldGggaXMgc3BlY2lhbCBhbmQgaGFzIGl0IG93biBpb21tdV90YWJsZSAqLwotCQl2aW9kZXYtPmlvbW11X3RhYmxlID0gJnZldGhfaW9tbXVfdGFibGU7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTERJU0tTOyBpKyspCi0JCXZpb19yZWdpc3Rlcl9kZXZpY2VfaXNlcmllcygidmlvZGFzZCIsIGkpOwotCWZvciAoaSA9IDA7IGkgPCBIVk1BWEFSQ0hJVEVDVEVEVklSVFVBTENEUk9NUzsgaSsrKQotCQl2aW9fcmVnaXN0ZXJfZGV2aWNlX2lzZXJpZXMoInZpb2NkIiwgaSk7Ci0JZm9yIChpID0gMDsgaSA8IEhWTUFYQVJDSElURUNURURWSVJUVUFMVEFQRVM7IGkrKykKLQkJdmlvX3JlZ2lzdGVyX2RldmljZV9pc2VyaWVzKCJ2aW90YXBlIiwgaSk7Ci19Ci0KLS8qKgotICogdmlvX21hdGNoX2RldmljZV9pc2VyaWVzOiAtIFRlbGwgaWYgYSBpU2VyaWVzIFZJTyBkZXZpY2UgbWF0Y2hlcyBhCi0gKgl2aW9fZGV2aWNlX2lkCi0gKi8KLXN0YXRpYyBpbnQgdmlvX21hdGNoX2RldmljZV9pc2VyaWVzKGNvbnN0IHN0cnVjdCB2aW9fZGV2aWNlX2lkICppZCwKLQkJY29uc3Qgc3RydWN0IHZpb19kZXYgKmRldikKLXsKLQlyZXR1cm4gc3RybmNtcChkZXYtPnR5cGUsIGlkLT50eXBlLCBzdHJsZW4oaWQtPnR5cGUpKSA9PSAwOwotfQotCi1zdGF0aWMgc3RydWN0IHZpb19idXNfb3BzIHZpb19idXNfb3BzX2lzZXJpZXMgPSB7Ci0JLm1hdGNoID0gdmlvX21hdGNoX2RldmljZV9pc2VyaWVzLAotfTsKLQotLyoqCi0gKiB2aW9fYnVzX2luaXRfaXNlcmllczogLSBJbml0aWFsaXplIHRoZSBpU2VyaWVzIHZpcnR1YWwgSU8gYnVzCi0gKi8KLXN0YXRpYyBpbnQgX19pbml0IHZpb19idXNfaW5pdF9pc2VyaWVzKHZvaWQpCi17Ci0JaW50IGVycjsKLQotCWVyciA9IHZpb19idXNfaW5pdCgmdmlvX2J1c19vcHNfaXNlcmllcyk7Ci0JaWYgKGVyciA9PSAwKSB7Ci0JCWlvbW11X3Zpb19pbml0KCk7Ci0JCXZpb19idXNfZGV2aWNlLmlvbW11X3RhYmxlID0gJnZpb19pb21tdV90YWJsZTsKLQkJaVNlcmllc192aW9fZGV2ID0gJnZpb19idXNfZGV2aWNlLmRldjsKLQkJcHJvYmVfYnVzX2lzZXJpZXMoKTsKLQl9Ci0JcmV0dXJuIGVycjsKLX0KLQotX19pbml0Y2FsbCh2aW9fYnVzX2luaXRfaXNlcmllcyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21hcGxlL3BjaS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9tYXBsZS9wY2kuYwppbmRleCA4NWQ2YzkzLi45YTRlZmMwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21hcGxlL3BjaS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvbWFwbGUvcGNpLmMKQEAgLTQzNyw5ICs0MzcsNiBAQAogCiAJLyogVGVsbCBwY2kuYyB0byBub3QgY2hhbmdlIGFueSByZXNvdXJjZSBhbGxvY2F0aW9ucy4gICovCiAJcGNpX3Byb2JlX29ubHkgPSAxOwotCQotCS8qIEFsbG93IGFsbCBJTyAqLwotCWlvX3BhZ2VfbWFzayA9IC0xOwogfQogCiBpbnQgbWFwbGVfcGNpX2dldF9sZWdhY3lfaWRlX2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGNoYW5uZWwpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21hcGxlL3NldHVwLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21hcGxlL3NldHVwLmMKaW5kZXggMjRjMGFlZi4uYTA1MDVlYSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9tYXBsZS9zZXR1cC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvbWFwbGUvc2V0dXAuYwpAQCAtMTg5LDcgKzE4OSw3IEBACiAJY29uc3dpdGNocCA9ICZkdW1teV9jb247CiAjZW5kaWYKIAotCXByaW50ayhLRVJOX0lORk8gIlVzaW5nIG5hdGl2ZS9OQVAgaWRsZSBsb29wXG4iKTsKKwlwcmludGsoS0VSTl9ERUJVRyAiVXNpbmcgbmF0aXZlL05BUCBpZGxlIGxvb3BcbiIpOwogfQogCiAvKiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvY3B1ZnJlcV8zMi5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9jcHVmcmVxXzMyLmMKaW5kZXggY2ZkNjUyNy4uYWYyYThmOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9jcHVmcmVxXzMyLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9jcHVmcmVxXzMyLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogIAkJX3NldF9MM0NSKHNhdmVfbDNjcik7CiAKIAkvKiBSZXN0b3JlIHVzZXJsYW5kIE1NVSBjb250ZXh0ICovCi0Jc2V0X2NvbnRleHQoY3VycmVudC0+YWN0aXZlX21tLT5jb250ZXh0LCBjdXJyZW50LT5hY3RpdmVfbW0tPnBnZCk7CisJc2V0X2NvbnRleHQoY3VycmVudC0+YWN0aXZlX21tLT5jb250ZXh0LmlkLCBjdXJyZW50LT5hY3RpdmVfbW0tPnBnZCk7CiAKICNpZmRlZiBERUJVR19GUkVRCiAJcHJpbnRrKEtFUk5fREVCVUcgIkhJRDEsIGFmdGVyOiAleFxuIiwgbWZzcHIoU1BSTl9ISUQxKSk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL2ZlYXR1cmUuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvZmVhdHVyZS5jCmluZGV4IGE1MDYzY2QuLjg1ZTAwY2IgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvZmVhdHVyZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvZmVhdHVyZS5jCkBAIC0yNTEwLDcgKzI1MTAsNyBAQAogCQlpZiAoZ2V0X3Byb3BlcnR5KG5wLCAiZmx1c2gtb24tbG9jayIsIE5VTEwpKQogCQkJYnJlYWs7CiAJCXBvd2Vyc2F2ZV9uYXAgPSAxOwotCQlwcmludGsoS0VSTl9JTkZPICJQcm9jZXNzb3IgTkFQIG1vZGUgb24gaWRsZSBlbmFibGVkLlxuIik7CisJCXByaW50ayhLRVJOX0RFQlVHICJQcm9jZXNzb3IgTkFQIG1vZGUgb24gaWRsZSBlbmFibGVkLlxuIik7CiAJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wY2kuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGNpLmMKaW5kZXggZWExNzlhZi4uODAwMzU4NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wY2kuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL3BjaS5jCkBAIC0xMDY4LDkgKzEwNjgsNiBAQAogCS8qIFRlbGwgcGNpLmMgdG8gbm90IHVzZSB0aGUgY29tbW9uIHJlc291cmNlIGFsbG9jYXRpb24gbWVjaGFuaXNtICovCiAJcGNpX3Byb2JlX29ubHkgPSAxOwogCi0JLyogQWxsb3cgYWxsIElPICovCi0JaW9fcGFnZV9tYXNrID0gLTE7Ci0KICNlbHNlIC8qIENPTkZJR19QUEM2NCAqLwogCWluaXRfcDJwYnJpZGdlKCk7CiAJZml4dXBfbmVjX3VzYjIoKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGZ1bmNfY29yZS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wZnVuY19jb3JlLmMKaW5kZXggZjA4MTczYi4uMDQ3Zjk1NCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wZnVuY19jb3JlLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wZnVuY19jb3JlLmMKQEAgLTg3MSwxMCArODcxLDE3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG1mX2xvY2ssIGZsYWdzKTsKIAlpZiAoZnVuYyA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qIGd1YXJkIGFnYWluc3QgbWFuaXB1bGF0aW9ucyBvZiBsaXN0ICovCiAJbXV0ZXhfbG9jaygmcG1mX2lycV9tdXRleCk7CiAJaWYgKGxpc3RfZW1wdHkoJmZ1bmMtPmlycV9jbGllbnRzKSkKIAkJZnVuYy0+ZGV2LT5oYW5kbGVycy0+aXJxX2VuYWJsZShmdW5jKTsKKworCS8qIGd1YXJkIGFnYWluc3QgcG1mX2RvX2lycSB3aGlsZSBjaGFuZ2luZyBsaXN0ICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBtZl9sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGQoJmNsaWVudC0+bGluaywgJmZ1bmMtPmlycV9jbGllbnRzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwbWZfbG9jaywgZmxhZ3MpOworCiAJY2xpZW50LT5mdW5jID0gZnVuYzsKIAltdXRleF91bmxvY2soJnBtZl9pcnFfbXV0ZXgpOwogCkBAIC04ODUsMTIgKzg5MiwxOSBAQAogdm9pZCBwbWZfdW5yZWdpc3Rlcl9pcnFfY2xpZW50KHN0cnVjdCBwbWZfaXJxX2NsaWVudCAqY2xpZW50KQogewogCXN0cnVjdCBwbWZfZnVuY3Rpb24gKmZ1bmMgPSBjbGllbnQtPmZ1bmM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCUJVR19PTihmdW5jID09IE5VTEwpOwogCisJLyogZ3VhcmQgYWdhaW5zdCBtYW5pcHVsYXRpb25zIG9mIGxpc3QgKi8KIAltdXRleF9sb2NrKCZwbWZfaXJxX211dGV4KTsKIAljbGllbnQtPmZ1bmMgPSBOVUxMOworCisJLyogZ3VhcmQgYWdhaW5zdCBwbWZfZG9faXJxIHdoaWxlIGNoYW5naW5nIGxpc3QgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcG1mX2xvY2ssIGZsYWdzKTsKIAlsaXN0X2RlbCgmY2xpZW50LT5saW5rKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwbWZfbG9jaywgZmxhZ3MpOworCiAJaWYgKGxpc3RfZW1wdHkoJmZ1bmMtPmlycV9jbGllbnRzKSkKIAkJZnVuYy0+ZGV2LT5oYW5kbGVycy0+aXJxX2Rpc2FibGUoZnVuYyk7CiAJbXV0ZXhfdW5sb2NrKCZwbWZfaXJxX211dGV4KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvc2V0dXAuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvc2V0dXAuYwppbmRleCBiOTIwMGZiLi45Y2M3ZGI3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9zZXR1cC5jCkBAIC00NTgsNyArNDU4LDcgQEAKIAlwcmludGsoS0VSTl9ERUJVRyAiJXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIHN0YXRlKTsKIAogCS8qIFJlc3RvcmUgdXNlcmxhbmQgTU1VIGNvbnRleHQgKi8KLQlzZXRfY29udGV4dChjdXJyZW50LT5hY3RpdmVfbW0tPmNvbnRleHQsIGN1cnJlbnQtPmFjdGl2ZV9tbS0+cGdkKTsKKwlzZXRfY29udGV4dChjdXJyZW50LT5hY3RpdmVfbW0tPmNvbnRleHQuaWQsIGN1cnJlbnQtPmFjdGl2ZV9tbS0+cGdkKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlCmluZGV4IDkzMDg5ODYuLmU1ZTBmZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9NYWtlZmlsZQorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGUKQEAgLTEsOCArMSwxMSBAQAoraWZlcSAoJChDT05GSUdfUFBDNjQpLHkpCitFWFRSQV9DRkxBR1MJCSs9IC1tbm8tbWluaW1hbC10b2MKK2VuZGlmCisKIG9iai15CQkJOj0gcGNpLm8gbHBhci5vIGh2Q2FsbC5vIG52cmFtLm8gcmVjb25maWcubyBcCiAJCQkgICBzZXR1cC5vIGlvbW11Lm8gcmFzLm8gcnRhc2QubyBwY2lfZGxwYXIubyBcCiAJCQkgICBmaXJtd2FyZS5vCiBvYmotJChDT05GSUdfU01QKQkrPSBzbXAubwotb2JqLSQoQ09ORklHX0lCTVZJTykJKz0gdmlvLm8KIG9iai0kKENPTkZJR19YSUNTKQkrPSB4aWNzLm8KIG9iai0kKENPTkZJR19TQ0FOTE9HKQkrPSBzY2FubG9nLm8KIG9iai0kKENPTkZJR19FRUgpCSs9IGVlaC5vIGVlaF9jYWNoZS5vIGVlaF9kcml2ZXIubyBlZWhfZXZlbnQubwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaF9jYWNoZS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaF9jYWNoZS5jCmluZGV4IGQ0YTQwMmMuLjk4YzIzYWUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWhfY2FjaGUuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoX2NhY2hlLmMKQEAgLTMwNCw2ICszMDQsOCBAQAogCQlwY2lfYWRkcl9jYWNoZV9pbnNlcnRfZGV2aWNlKGRldik7CiAKIAkJZG4gPSBwY2lfZGV2aWNlX3RvX09GX25vZGUoZGV2KTsKKwkJaWYgKCFkbikKKwkJCWNvbnRpbnVlOwogCQlwY2lfZGV2X2dldCAoZGV2KTsgIC8qIG1hdGNoaW5nIHB1dCBpcyBpbiBlZWhfcmVtb3ZlX2RldmljZSgpICovCiAJCVBDSV9ETihkbiktPnBjaWRldiA9IGRldjsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoX2RyaXZlci5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaF9kcml2ZXIuYwppbmRleCAxZmJhNjk1Li4wZWM5YTU0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoX2RyaXZlci5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWhfZHJpdmVyLmMKQEAgLTIzLDkgKzIzLDggQEAKICAqCiAgKi8KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L2lycS5oPgogI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgotI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8YXNtL2VlaC5oPgogI2luY2x1ZGUgPGFzbS9lZWhfZXZlbnQuaD4KQEAgLTIwMiw3ICsyMDEsMTEgQEAKIAogc3RhdGljIGludCBlZWhfcmVzZXRfZGV2aWNlIChzdHJ1Y3QgcGNpX2RuICpwZV9kbiwgc3RydWN0IHBjaV9idXMgKmJ1cykKIHsKLQlpbnQgcmM7CisJaW50IGNudCwgcmM7CisKKwkvKiBwY2liaW9zIHdpbGwgY2xlYXIgdGhlIGNvdW50ZXI7IHNhdmUgdGhlIHZhbHVlICovCisJY250ID0gcGVfZG4tPmVlaF9mcmVlemVfY291bnQ7CisKIAlpZiAoYnVzKQogCQlwY2liaW9zX3JlbW92ZV9wY2lfZGV2aWNlcyhidXMpOwogCkBAIC0yNDEsNiArMjQ0LDcgQEAKIAkJc3NsZWVwICg1KTsKIAkJcGNpYmlvc19hZGRfcGNpX2RldmljZXMoYnVzKTsKIAl9CisJcGVfZG4tPmVlaF9mcmVlemVfY291bnQgPSBjbnQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI1MCwyMyArMjU0LDI5IEBACiAgKi8KICNkZWZpbmUgTUFYX1dBSVRfRk9SX1JFQ09WRVJZIDE1CiAKLXZvaWQgaGFuZGxlX2VlaF9ldmVudHMgKHN0cnVjdCBlZWhfZXZlbnQgKmV2ZW50KQorc3RydWN0IHBjaV9kbiAqIGhhbmRsZV9lZWhfZXZlbnRzIChzdHJ1Y3QgZWVoX2V2ZW50ICpldmVudCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmZyb3plbl9kbjsKIAlzdHJ1Y3QgcGNpX2RuICpmcm96ZW5fcGRuOwogCXN0cnVjdCBwY2lfYnVzICpmcm96ZW5fYnVzOwogCWludCByYyA9IDA7CiAJZW51bSBwY2lfZXJzX3Jlc3VsdCByZXN1bHQgPSBQQ0lfRVJTX1JFU1VMVF9OT05FOwotCWNvbnN0IGNoYXIgKnBjaV9zdHIsICpkcnZfc3RyOworCWNvbnN0IGNoYXIgKmxvY2F0aW9uLCAqcGNpX3N0ciwgKmRydl9zdHI7CiAKIAlmcm96ZW5fZG4gPSBmaW5kX2RldmljZV9wZShldmVudC0+ZG4pOwogCWZyb3plbl9idXMgPSBwY2liaW9zX2ZpbmRfcGNpX2J1cyhmcm96ZW5fZG4pOwogCiAJaWYgKCFmcm96ZW5fZG4pIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJFRUg6IEVycm9yOiBDYW5ub3QgZmluZCBwYXJ0aXRpb24gZW5kcG9pbnQgZm9yICVzXG4iLAotCQkgICAgICAgIHBjaV9uYW1lKGV2ZW50LT5kZXYpKTsKLQkJcmV0dXJuOworCisJCWxvY2F0aW9uID0gKGNoYXIgKikgZ2V0X3Byb3BlcnR5KGV2ZW50LT5kbiwgImlibSxsb2MtY29kZSIsIE5VTEwpOworCQlsb2NhdGlvbiA9IGxvY2F0aW9uID8gbG9jYXRpb24gOiAidW5rbm93biI7CisJCXByaW50ayhLRVJOX0VSUiAiRUVIOiBFcnJvcjogQ2Fubm90IGZpbmQgcGFydGl0aW9uIGVuZHBvaW50ICIKKwkJICAgICAgICAgICAgICAgICJmb3IgbG9jYXRpb249JXMgcGNpIGFkZHI9JXNcbiIsCisJCSAgICAgICAgbG9jYXRpb24sIHBjaV9uYW1lKGV2ZW50LT5kZXYpKTsKKwkJcmV0dXJuIE5VTEw7CiAJfQorCWxvY2F0aW9uID0gKGNoYXIgKikgZ2V0X3Byb3BlcnR5KGZyb3plbl9kbiwgImlibSxsb2MtY29kZSIsIE5VTEwpOworCWxvY2F0aW9uID0gbG9jYXRpb24gPyBsb2NhdGlvbiA6ICJ1bmtub3duIjsKIAogCS8qIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHN0eWxlcyBmb3IgY29taW5nIHVwIHdpdGggdGhlIFBFLgogCSAqIEluIHRoZSBvbGQgc3R5bGUsIGl0IHdhcyB0aGUgaGlnaGVzdCBFRUgtY2FwYWJsZSBkZXZpY2UKQEAgLTI3OCw5ICsyODgsMTAgQEAKIAkJZnJvemVuX2J1cyA9IHBjaWJpb3NfZmluZF9wY2lfYnVzIChmcm96ZW5fZG4tPnBhcmVudCk7CiAKIAlpZiAoIWZyb3plbl9idXMpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJFRUg6IENhbm5vdCBmaW5kIFBDSSBidXMgZm9yICVzXG4iLAotCQkgICAgICAgIGZyb3plbl9kbi0+ZnVsbF9uYW1lKTsKLQkJcmV0dXJuOworCQlwcmludGsoS0VSTl9FUlIgIkVFSDogQ2Fubm90IGZpbmQgUENJIGJ1cyAiCisJCSAgICAgICAgImZvciBsb2NhdGlvbj0lcyBkbj0lc1xuIiwKKwkJICAgICAgICBsb2NhdGlvbiwgZnJvemVuX2RuLT5mdWxsX25hbWUpOworCQlyZXR1cm4gTlVMTDsKIAl9CiAKICNpZiAwCkBAIC0zMTQsOCArMzI1LDkgQEAKIAogCWVlaF9zbG90X2Vycm9yX2RldGFpbChmcm96ZW5fcGRuLCAxIC8qIFRlbXBvcmFyeSBFcnJvciAqLyk7CiAJcHJpbnRrKEtFUk5fV0FSTklORwotCSAgICJFRUg6IFRoaXMgUENJIGRldmljZSBoYXMgZmFpbGVkICVkIHRpbWVzIHNpbmNlIGxhc3QgcmVib290OiAlcyAtICVzXG4iLAotCQlmcm96ZW5fcGRuLT5lZWhfZnJlZXplX2NvdW50LCBkcnZfc3RyLCBwY2lfc3RyKTsKKwkgICAiRUVIOiBUaGlzIFBDSSBkZXZpY2UgaGFzIGZhaWxlZCAlZCB0aW1lcyBzaW5jZSBsYXN0IHJlYm9vdDogIgorCQkibG9jYXRpb249JXMgZHJpdmVyPSVzIHBjaSBhZGRyPSVzXG4iLAorCQlmcm96ZW5fcGRuLT5lZWhfZnJlZXplX2NvdW50LCBsb2NhdGlvbiwgZHJ2X3N0ciwgcGNpX3N0cik7CiAKIAkvKiBXYWxrIHRoZSB2YXJpb3VzIGRldmljZSBkcml2ZXJzIGF0dGFjaGVkIHRvIHRoaXMgc2xvdCB0aHJvdWdoCiAJICogYSByZXNldCBzZXF1ZW5jZSwgZ2l2aW5nIGVhY2ggYW4gb3Bwb3J0dW5pdHkgdG8gZG8gd2hhdCBpdCBuZWVkcwpAQCAtMzU1LDcgKzM2Nyw3IEBACiAJLyogVGVsbCBhbGwgZGV2aWNlIGRyaXZlcnMgdGhhdCB0aGV5IGNhbiByZXN1bWUgb3BlcmF0aW9ucyAqLwogCXBjaV93YWxrX2J1cyhmcm96ZW5fYnVzLCBlZWhfcmVwb3J0X3Jlc3VtZSwgTlVMTCk7CiAKLQlyZXR1cm47CisJcmV0dXJuIGZyb3plbl9wZG47CiAJCiBleGNlc3NfZmFpbHVyZXM6CiAJLyoKQEAgLTM2NCwxNyArMzc2LDE4IEBACiAJICogZHVlIHRvIGFjdHVhbCwgZmFpbGVkIGNhcmRzLgogCSAqLwogCXByaW50ayhLRVJOX0VSUgotCSAgICJFRUg6IFBDSSBkZXZpY2UgJXMgLSAlcyBoYXMgZmFpbGVkICVkIHRpbWVzIFxuIgotCSAgICJhbmQgaGFzIGJlZW4gcGVybWFuZW50bHkgZGlzYWJsZWQuICBQbGVhc2UgdHJ5IHJlc2VhdGluZ1xuIgotCSAgICJ0aGlzIGRldmljZSBvciByZXBsYWNpbmcgaXQuXG4iLAotCQlkcnZfc3RyLCBwY2lfc3RyLCBmcm96ZW5fcGRuLT5lZWhfZnJlZXplX2NvdW50KTsKKwkgICAiRUVIOiBQQ0kgZGV2aWNlIGF0IGxvY2F0aW9uPSVzIGRyaXZlcj0lcyBwY2kgYWRkcj0lcyBcbiIKKwkJImhhcyBmYWlsZWQgJWQgdGltZXMgYW5kIGhhcyBiZWVuIHBlcm1hbmVudGx5IGRpc2FibGVkLiBcbiIKKwkJIlBsZWFzZSB0cnkgcmVzZWF0aW5nIHRoaXMgZGV2aWNlIG9yIHJlcGxhY2luZyBpdC5cbiIsCisJCWxvY2F0aW9uLCBkcnZfc3RyLCBwY2lfc3RyLCBmcm96ZW5fcGRuLT5lZWhfZnJlZXplX2NvdW50KTsKIAlnb3RvIHBlcm1fZXJyb3I7CiAKIGhhcmRfZmFpbDoKIAlwcmludGsoS0VSTl9FUlIKLQkgICAiRUVIOiBVbmFibGUgdG8gcmVjb3ZlciBmcm9tIGZhaWx1cmUgb2YgUENJIGRldmljZSAlcyAtICVzXG4iCisJICAgIkVFSDogVW5hYmxlIHRvIHJlY292ZXIgZnJvbSBmYWlsdXJlIG9mIFBDSSBkZXZpY2UgIgorCSAgICJhdCBsb2NhdGlvbj0lcyBkcml2ZXI9JXMgcGNpIGFkZHI9JXMgXG4iCiAJICAgIlBsZWFzZSB0cnkgcmVzZWF0aW5nIHRoaXMgZGV2aWNlIG9yIHJlcGxhY2luZyBpdC5cbiIsCi0JCWRydl9zdHIsIHBjaV9zdHIpOworCQlsb2NhdGlvbiwgZHJ2X3N0ciwgcGNpX3N0cik7CiAKIHBlcm1fZXJyb3I6CiAJZWVoX3Nsb3RfZXJyb3JfZGV0YWlsKGZyb3plbl9wZG4sIDIgLyogUGVybWFuZW50IEVycm9yICovKTsKQEAgLTM4NCw2ICszOTcsOCBAQAogCiAJLyogU2h1dCBkb3duIHRoZSBkZXZpY2UgZHJpdmVycyBmb3IgZ29vZC4gKi8KIAlwY2liaW9zX3JlbW92ZV9wY2lfZGV2aWNlcyhmcm96ZW5fYnVzKTsKKworCXJldHVybiBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tIGVuZCBvZiBmaWxlIC0tLS0tLS0tLS0gKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWhfZXZlbnQuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWhfZXZlbnQuYwppbmRleCA0MDAyMGM2Li44ZjJkMTI5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoX2V2ZW50LmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaF9ldmVudC5jCkBAIC0xOCw2ICsxOCw3IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUgTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgpAQCAtNTYsMzggKzU3LDQzIEBACiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgZWVoX2V2ZW50CSpldmVudDsKKwlzdHJ1Y3QgcGNpX2RuICpwZG47CiAKIAlkYWVtb25pemUgKCJlZWhkIik7CisJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKIAotCXdoaWxlICgxKSB7Ci0JCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmVlaF9ldmVudGxpc3RfbG9jaywgZmxhZ3MpOworCWV2ZW50ID0gTlVMTDsKIAotCQlzcGluX2xvY2tfaXJxc2F2ZSgmZWVoX2V2ZW50bGlzdF9sb2NrLCBmbGFncyk7Ci0JCWV2ZW50ID0gTlVMTDsKKwkvKiBVbnF1ZXVlIHRoZSBldmVudCwgZ2V0IHJlYWR5IHRvIHByb2Nlc3MuICovCisJaWYgKCFsaXN0X2VtcHR5KCZlZWhfZXZlbnRsaXN0KSkgeworCQlldmVudCA9IGxpc3RfZW50cnkoZWVoX2V2ZW50bGlzdC5uZXh0LCBzdHJ1Y3QgZWVoX2V2ZW50LCBsaXN0KTsKKwkJbGlzdF9kZWwoJmV2ZW50LT5saXN0KTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZWVoX2V2ZW50bGlzdF9sb2NrLCBmbGFncyk7CiAKLQkJLyogVW5xdWV1ZSB0aGUgZXZlbnQsIGdldCByZWFkeSB0byBwcm9jZXNzLiAqLwotCQlpZiAoIWxpc3RfZW1wdHkoJmVlaF9ldmVudGxpc3QpKSB7Ci0JCQlldmVudCA9IGxpc3RfZW50cnkoZWVoX2V2ZW50bGlzdC5uZXh0LCBzdHJ1Y3QgZWVoX2V2ZW50LCBsaXN0KTsKLQkJCWxpc3RfZGVsKCZldmVudC0+bGlzdCk7Ci0JCX0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZWVoX2V2ZW50bGlzdF9sb2NrLCBmbGFncyk7CisJaWYgKGV2ZW50ID09IE5VTEwpCisJCXJldHVybiAwOwogCi0JCWlmIChldmVudCA9PSBOVUxMKQotCQkJYnJlYWs7CisJLyogU2VyaWFsaXplIHByb2Nlc3Npbmcgb2YgRUVIIGV2ZW50cyAqLworCW11dGV4X2xvY2soJmVlaF9ldmVudF9tdXRleCk7CisJZWVoX21hcmtfc2xvdChldmVudC0+ZG4sIEVFSF9NT0RFX1JFQ09WRVJJTkcpOwogCi0JCS8qIFNlcmlhbGl6ZSBwcm9jZXNzaW5nIG9mIEVFSCBldmVudHMgKi8KLQkJbXV0ZXhfbG9jaygmZWVoX2V2ZW50X211dGV4KTsKLQkJZWVoX21hcmtfc2xvdChldmVudC0+ZG4sIEVFSF9NT0RFX1JFQ09WRVJJTkcpOworCXByaW50ayhLRVJOX0lORk8gIkVFSDogRGV0ZWN0ZWQgUENJIGJ1cyBlcnJvciBvbiBkZXZpY2UgJXNcbiIsCisJICAgICAgIHBjaV9uYW1lKGV2ZW50LT5kZXYpKTsKIAotCQlwcmludGsoS0VSTl9JTkZPICJFRUg6IERldGVjdGVkIFBDSSBidXMgZXJyb3Igb24gZGV2aWNlICVzXG4iLAotCQkgICAgICAgcGNpX25hbWUoZXZlbnQtPmRldikpOworCXBkbiA9IGhhbmRsZV9lZWhfZXZlbnRzKGV2ZW50KTsKIAotCQloYW5kbGVfZWVoX2V2ZW50cyhldmVudCk7CisJZWVoX2NsZWFyX3Nsb3QoZXZlbnQtPmRuLCBFRUhfTU9ERV9SRUNPVkVSSU5HKTsKKwlwY2lfZGV2X3B1dChldmVudC0+ZGV2KTsKKwlrZnJlZShldmVudCk7CisJbXV0ZXhfdW5sb2NrKCZlZWhfZXZlbnRfbXV0ZXgpOwogCi0JCWVlaF9jbGVhcl9zbG90KGV2ZW50LT5kbiwgRUVIX01PREVfUkVDT1ZFUklORyk7Ci0JCXBjaV9kZXZfcHV0KGV2ZW50LT5kZXYpOwotCQlrZnJlZShldmVudCk7Ci0JCW11dGV4X3VubG9jaygmZWVoX2V2ZW50X211dGV4KTsKKwkvKiBJZiB0aGVyZSBhcmUgbm8gbmV3IGVycm9ycyBhZnRlciBhbiBob3VyLCBjbGVhciB0aGUgY291bnRlci4gKi8KKwlpZiAocGRuICYmIHBkbi0+ZWVoX2ZyZWV6ZV9jb3VudD4wKSB7CisJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlICgzNjAwKjEwMDApOworCQlpZiAocGRuLT5lZWhfZnJlZXplX2NvdW50PjApCisJCQlwZG4tPmVlaF9mcmVlemVfY291bnQtLTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMKaW5kZXggMjY0MzA3OC4uZDAzYThiMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMKQEAgLTEsMjMgKzEsMjQgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgTWlrZSBDb3JyaWdhbiAmIERhdmUgRW5nZWJyZXRzZW4sIElCTSBDb3Jwb3JhdGlvbgogICoKLSAqIFJld3JpdGUsIGNsZWFudXA6IAorICogUmV3cml0ZSwgY2xlYW51cDoKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PiwgSUJNIENvcnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PgogICoKICAqIER5bmFtaWMgRE1BIG1hcHBpbmcgc3VwcG9ydCwgcFNlcmllcy1zcGVjaWZpYyBwYXJ0cywgYm90aCBTTVAgYW5kIExQQVIuCiAgKgotICogCisgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqIAorICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKiAKKyAqCiAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQpAQCAtNDksNTIgKzUwLDQ2IEBACiAKICNkZWZpbmUgREJHKGZtdC4uLikKIAotc3RhdGljIHZvaWQgdGNlX2J1aWxkX3BTZXJpZXMoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIGxvbmcgaW5kZXgsIAotCQkJICAgICAgbG9uZyBucGFnZXMsIHVuc2lnbmVkIGxvbmcgdWFkZHIsIAorc3RhdGljIHZvaWQgdGNlX2J1aWxkX3BTZXJpZXMoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIGxvbmcgaW5kZXgsCisJCQkgICAgICBsb25nIG5wYWdlcywgdW5zaWduZWQgbG9uZyB1YWRkciwKIAkJCSAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLQl1bmlvbiB0Y2VfZW50cnkgdDsKLQl1bmlvbiB0Y2VfZW50cnkgKnRwOworCXU2NCBwcm90b190Y2U7CisJdTY0ICp0Y2VwOworCXU2NCBycG47CiAKIAlpbmRleCA8PD0gVENFX1BBR0VfRkFDVE9SOwogCW5wYWdlcyA8PD0gVENFX1BBR0VfRkFDVE9SOwogCi0JdC50ZV93b3JkID0gMDsKLQl0LnRlX3Jkd3IgPSAxOyAvLyBSZWFkIGFsbG93ZWQgCisJcHJvdG9fdGNlID0gVENFX1BDSV9SRUFEOyAvLyBSZWFkIGFsbG93ZWQKIAogCWlmIChkaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklDRSkKLQkJdC50ZV9wY2l3ciA9IDE7CisJCXByb3RvX3RjZSB8PSBUQ0VfUENJX1dSSVRFOwogCi0JdHAgPSAoKHVuaW9uIHRjZV9lbnRyeSAqKXRibC0+aXRfYmFzZSkgKyBpbmRleDsKKwl0Y2VwID0gKCh1NjQgKil0YmwtPml0X2Jhc2UpICsgaW5kZXg7CiAKIAl3aGlsZSAobnBhZ2VzLS0pIHsKIAkJLyogY2FuJ3QgbW92ZSB0aGlzIG91dCBzaW5jZSB3ZSBtaWdodCBjcm9zcyBMTUIgYm91bmRhcnkgKi8KLQkJdC50ZV9ycG4gPSAodmlydF90b19hYnModWFkZHIpKSA+PiBUQ0VfU0hJRlQ7Ci0JCi0JCXRwLT50ZV93b3JkID0gdC50ZV93b3JkOworCQlycG4gPSAodmlydF90b19hYnModWFkZHIpKSA+PiBUQ0VfU0hJRlQ7CisJCSp0Y2VwID0gcHJvdG9fdGNlIHwgKHJwbiAmIFRDRV9SUE5fTUFTSykgPDwgVENFX1JQTl9TSElGVDsKIAogCQl1YWRkciArPSBUQ0VfUEFHRV9TSVpFOwotCQl0cCsrOworCQl0Y2VwKys7CiAJfQogfQogCiAKIHN0YXRpYyB2b2lkIHRjZV9mcmVlX3BTZXJpZXMoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIGxvbmcgaW5kZXgsIGxvbmcgbnBhZ2VzKQogewotCXVuaW9uIHRjZV9lbnRyeSB0OwotCXVuaW9uIHRjZV9lbnRyeSAqdHA7CisJdTY0ICp0Y2VwOwogCiAJbnBhZ2VzIDw8PSBUQ0VfUEFHRV9GQUNUT1I7CiAJaW5kZXggPDw9IFRDRV9QQUdFX0ZBQ1RPUjsKIAotCXQudGVfd29yZCA9IDA7Ci0JdHAgID0gKCh1bmlvbiB0Y2VfZW50cnkgKil0YmwtPml0X2Jhc2UpICsgaW5kZXg7Ci0JCQotCXdoaWxlIChucGFnZXMtLSkgewotCQl0cC0+dGVfd29yZCA9IHQudGVfd29yZDsKLQkJCi0JCXRwKys7Ci0JfQorCXRjZXAgPSAoKHU2NCAqKXRibC0+aXRfYmFzZSkgKyBpbmRleDsKKworCXdoaWxlIChucGFnZXMtLSkKKwkJKih0Y2VwKyspID0gMDsKIH0KIAogCkBAIC0xMDMsNDMgKzk4LDQ0IEBACiAJCQkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQogewogCXU2NCByYzsKLQl1bmlvbiB0Y2VfZW50cnkgdGNlOworCXU2NCBwcm90b190Y2UsIHRjZTsKKwl1NjQgcnBuOwogCiAJdGNlbnVtIDw8PSBUQ0VfUEFHRV9GQUNUT1I7CiAJbnBhZ2VzIDw8PSBUQ0VfUEFHRV9GQUNUT1I7CiAKLQl0Y2UudGVfd29yZCA9IDA7Ci0JdGNlLnRlX3JwbiA9ICh2aXJ0X3RvX2Ficyh1YWRkcikpID4+IFRDRV9TSElGVDsKLQl0Y2UudGVfcmR3ciA9IDE7CisJcnBuID0gKHZpcnRfdG9fYWJzKHVhZGRyKSkgPj4gVENFX1NISUZUOworCXByb3RvX3RjZSA9IFRDRV9QQ0lfUkVBRDsKIAlpZiAoZGlyZWN0aW9uICE9IERNQV9UT19ERVZJQ0UpCi0JCXRjZS50ZV9wY2l3ciA9IDE7CisJCXByb3RvX3RjZSB8PSBUQ0VfUENJX1dSSVRFOwogCiAJd2hpbGUgKG5wYWdlcy0tKSB7Ci0JCXJjID0gcGxwYXJfdGNlX3B1dCgodTY0KXRibC0+aXRfaW5kZXgsIAotCQkJCSAgICh1NjQpdGNlbnVtIDw8IDEyLCAKLQkJCQkgICB0Y2UudGVfd29yZCApOwotCQkKKwkJdGNlID0gcHJvdG9fdGNlIHwgKHJwbiAmIFRDRV9SUE5fTUFTSykgPDwgVENFX1JQTl9TSElGVDsKKwkJcmMgPSBwbHBhcl90Y2VfcHV0KCh1NjQpdGJsLT5pdF9pbmRleCwgKHU2NCl0Y2VudW0gPDwgMTIsIHRjZSk7CisKIAkJaWYgKHJjICYmIHByaW50a19yYXRlbGltaXQoKSkgewogCQkJcHJpbnRrKCJ0Y2VfYnVpbGRfcFNlcmllc0xQOiBwbHBhcl90Y2VfcHV0IGZhaWxlZC4gcmM9JWxkXG4iLCByYyk7CiAJCQlwcmludGsoIlx0aW5kZXggICA9IDB4JWx4XG4iLCAodTY0KXRibC0+aXRfaW5kZXgpOwogCQkJcHJpbnRrKCJcdHRjZW51bSAgPSAweCVseFxuIiwgKHU2NCl0Y2VudW0pOwotCQkJcHJpbnRrKCJcdHRjZSB2YWwgPSAweCVseFxuIiwgdGNlLnRlX3dvcmQgKTsKKwkJCXByaW50aygiXHR0Y2UgdmFsID0gMHglbHhcbiIsIHRjZSApOwogCQkJc2hvd19zdGFjayhjdXJyZW50LCAodW5zaWduZWQgbG9uZyAqKV9fZ2V0X1NQKCkpOwogCQl9Ci0JCQkKKwogCQl0Y2VudW0rKzsKLQkJdGNlLnRlX3JwbisrOworCQlycG4rKzsKIAl9CiB9CiAKLXN0YXRpYyBERUZJTkVfUEVSX0NQVSh2b2lkICosIHRjZV9wYWdlKSA9IE5VTEw7CitzdGF0aWMgREVGSU5FX1BFUl9DUFUodTY0ICosIHRjZV9wYWdlKSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIHRjZV9idWlsZG11bHRpX3BTZXJpZXNMUChzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwgbG9uZyB0Y2VudW0sCiAJCQkJICAgICBsb25nIG5wYWdlcywgdW5zaWduZWQgbG9uZyB1YWRkciwKIAkJCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKIAl1NjQgcmM7Ci0JdW5pb24gdGNlX2VudHJ5IHRjZSwgKnRjZXA7CisJdTY0IHByb3RvX3RjZTsKKwl1NjQgKnRjZXA7CisJdTY0IHJwbjsKIAlsb25nIGwsIGxpbWl0OwogCiAJaWYgKFRDRV9QQUdFX0ZBQ1RPUiA9PSAwICYmIG5wYWdlcyA9PSAxKQpAQCAtMTUyLDcgKzE0OCw3IEBACiAJICogZnJvbSBpb21tdV9hbGxvY3ssX3NnfSgpCiAJICovCiAJaWYgKCF0Y2VwKSB7Ci0JCXRjZXAgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfQVRPTUlDKTsKKwkJdGNlcCA9ICh1NjQgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0FUT01JQyk7CiAJCS8qIElmIGFsbG9jYXRpb24gZmFpbHMsIGZhbGwgYmFjayB0byB0aGUgbG9vcCBpbXBsZW1lbnRhdGlvbiAqLwogCQlpZiAoIXRjZXApCiAJCQlyZXR1cm4gdGNlX2J1aWxkX3BTZXJpZXNMUCh0YmwsIHRjZW51bSwgbnBhZ2VzLApAQCAtMTYzLDExICsxNTksMTAgQEAKIAl0Y2VudW0gPDw9IFRDRV9QQUdFX0ZBQ1RPUjsKIAlucGFnZXMgPDw9IFRDRV9QQUdFX0ZBQ1RPUjsKIAotCXRjZS50ZV93b3JkID0gMDsKLQl0Y2UudGVfcnBuID0gKHZpcnRfdG9fYWJzKHVhZGRyKSkgPj4gVENFX1NISUZUOwotCXRjZS50ZV9yZHdyID0gMTsKKwlycG4gPSAodmlydF90b19hYnModWFkZHIpKSA+PiBUQ0VfU0hJRlQ7CisJcHJvdG9fdGNlID0gVENFX1BDSV9SRUFEOwogCWlmIChkaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklDRSkKLQkJdGNlLnRlX3BjaXdyID0gMTsKKwkJcHJvdG9fdGNlIHw9IFRDRV9QQ0lfV1JJVEU7CiAKIAkvKiBXZSBjYW4gbWFwIG1heCBvbmUgcGFnZWZ1bCBvZiBUQ0VzIGF0IGEgdGltZSAqLwogCWRvIHsKQEAgLTE3NSwxMSArMTcwLDExIEBACiAJCSAqIFNldCB1cCB0aGUgcGFnZSB3aXRoIFRDRSBkYXRhLCBsb29waW5nIHRocm91Z2ggYW5kIHNldHRpbmcKIAkJICogdGhlIHZhbHVlcy4KIAkJICovCi0JCWxpbWl0ID0gbWluX3QobG9uZywgbnBhZ2VzLCA0MDk2L3NpemVvZih1bmlvbiB0Y2VfZW50cnkpKTsKKwkJbGltaXQgPSBtaW5fdChsb25nLCBucGFnZXMsIDQwOTYvVENFX0VOVFJZX1NJWkUpOwogCiAJCWZvciAobCA9IDA7IGwgPCBsaW1pdDsgbCsrKSB7Ci0JCQl0Y2VwW2xdID0gdGNlOwotCQkJdGNlLnRlX3JwbisrOworCQkJdGNlcFtsXSA9IHByb3RvX3RjZSB8IChycG4gJiBUQ0VfUlBOX01BU0spIDw8IFRDRV9SUE5fU0hJRlQ7CisJCQlycG4rKzsKIAkJfQogCiAJCXJjID0gcGxwYXJfdGNlX3B1dF9pbmRpcmVjdCgodTY0KXRibC0+aXRfaW5kZXgsCkBAIC0xOTUsNyArMTkwLDcgQEAKIAkJcHJpbnRrKCJ0Y2VfYnVpbGRtdWx0aV9wU2VyaWVzTFA6IHBscGFyX3RjZV9wdXQgZmFpbGVkLiByYz0lbGRcbiIsIHJjKTsKIAkJcHJpbnRrKCJcdGluZGV4ICAgPSAweCVseFxuIiwgKHU2NCl0YmwtPml0X2luZGV4KTsKIAkJcHJpbnRrKCJcdG5wYWdlcyAgPSAweCVseFxuIiwgKHU2NClucGFnZXMpOwotCQlwcmludGsoIlx0dGNlWzBdIHZhbCA9IDB4JWx4XG4iLCB0Y2VwWzBdLnRlX3dvcmQpOworCQlwcmludGsoIlx0dGNlWzBdIHZhbCA9IDB4JWx4XG4iLCB0Y2VwWzBdKTsKIAkJc2hvd19zdGFjayhjdXJyZW50LCAodW5zaWduZWQgbG9uZyAqKV9fZ2V0X1NQKCkpOwogCX0KIH0KQEAgLTIwMywyMyArMTk4LDE3IEBACiBzdGF0aWMgdm9pZCB0Y2VfZnJlZV9wU2VyaWVzTFAoc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIGxvbmcgdGNlbnVtLCBsb25nIG5wYWdlcykKIHsKIAl1NjQgcmM7Ci0JdW5pb24gdGNlX2VudHJ5IHRjZTsKIAogCXRjZW51bSA8PD0gVENFX1BBR0VfRkFDVE9SOwogCW5wYWdlcyA8PD0gVENFX1BBR0VfRkFDVE9SOwogCi0JdGNlLnRlX3dvcmQgPSAwOwotCiAJd2hpbGUgKG5wYWdlcy0tKSB7Ci0JCXJjID0gcGxwYXJfdGNlX3B1dCgodTY0KXRibC0+aXRfaW5kZXgsCi0JCQkJICAgKHU2NCl0Y2VudW0gPDwgMTIsCi0JCQkJICAgdGNlLnRlX3dvcmQpOworCQlyYyA9IHBscGFyX3RjZV9wdXQoKHU2NCl0YmwtPml0X2luZGV4LCAodTY0KXRjZW51bSA8PCAxMiwgMCk7CiAKIAkJaWYgKHJjICYmIHByaW50a19yYXRlbGltaXQoKSkgewogCQkJcHJpbnRrKCJ0Y2VfZnJlZV9wU2VyaWVzTFA6IHBscGFyX3RjZV9wdXQgZmFpbGVkLiByYz0lbGRcbiIsIHJjKTsKIAkJCXByaW50aygiXHRpbmRleCAgID0gMHglbHhcbiIsICh1NjQpdGJsLT5pdF9pbmRleCk7CiAJCQlwcmludGsoIlx0dGNlbnVtICA9IDB4JWx4XG4iLCAodTY0KXRjZW51bSk7Ci0JCQlwcmludGsoIlx0dGNlIHZhbCA9IDB4JWx4XG4iLCB0Y2UudGVfd29yZCApOwogCQkJc2hvd19zdGFjayhjdXJyZW50LCAodW5zaWduZWQgbG9uZyAqKV9fZ2V0X1NQKCkpOwogCQl9CiAKQEAgLTIzMSwzMSArMjIwLDI0IEBACiBzdGF0aWMgdm9pZCB0Y2VfZnJlZW11bHRpX3BTZXJpZXNMUChzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwgbG9uZyB0Y2VudW0sIGxvbmcgbnBhZ2VzKQogewogCXU2NCByYzsKLQl1bmlvbiB0Y2VfZW50cnkgdGNlOwogCiAJdGNlbnVtIDw8PSBUQ0VfUEFHRV9GQUNUT1I7CiAJbnBhZ2VzIDw8PSBUQ0VfUEFHRV9GQUNUT1I7CiAKLQl0Y2UudGVfd29yZCA9IDA7Ci0KLQlyYyA9IHBscGFyX3RjZV9zdHVmZigodTY0KXRibC0+aXRfaW5kZXgsCi0JCQkgICAodTY0KXRjZW51bSA8PCAxMiwKLQkJCSAgIHRjZS50ZV93b3JkLAotCQkJICAgbnBhZ2VzKTsKKwlyYyA9IHBscGFyX3RjZV9zdHVmZigodTY0KXRibC0+aXRfaW5kZXgsICh1NjQpdGNlbnVtIDw8IDEyLCAwLCBucGFnZXMpOwogCiAJaWYgKHJjICYmIHByaW50a19yYXRlbGltaXQoKSkgewogCQlwcmludGsoInRjZV9mcmVlbXVsdGlfcFNlcmllc0xQOiBwbHBhcl90Y2Vfc3R1ZmYgZmFpbGVkXG4iKTsKIAkJcHJpbnRrKCJcdHJjICAgICAgPSAlbGRcbiIsIHJjKTsKIAkJcHJpbnRrKCJcdGluZGV4ICAgPSAweCVseFxuIiwgKHU2NCl0YmwtPml0X2luZGV4KTsKIAkJcHJpbnRrKCJcdG5wYWdlcyAgPSAweCVseFxuIiwgKHU2NClucGFnZXMpOwotCQlwcmludGsoIlx0dGNlIHZhbCA9IDB4JWx4XG4iLCB0Y2UudGVfd29yZCApOwogCQlzaG93X3N0YWNrKGN1cnJlbnQsICh1bnNpZ25lZCBsb25nICopX19nZXRfU1AoKSk7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBpb21tdV90YWJsZV9zZXRwYXJtcyhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKnBoYiwKIAkJCQkgc3RydWN0IGRldmljZV9ub2RlICpkbiwKLQkJCQkgc3RydWN0IGlvbW11X3RhYmxlICp0YmwpIAorCQkJCSBzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7CiAJdW5zaWduZWQgbG9uZyAqYmFzZXA7CkBAIC0yNzUsMTYgKzI1NywxNiBAQAogCW1lbXNldCgodm9pZCAqKXRibC0+aXRfYmFzZSwgMCwgKnNpemVwKTsKIAogCXRibC0+aXRfYnVzbm8gPSBwaGItPmJ1cy0+bnVtYmVyOwotCQorCiAJLyogVW5pdHMgb2YgdGNlIGVudHJpZXMgKi8KIAl0YmwtPml0X29mZnNldCA9IHBoYi0+ZG1hX3dpbmRvd19iYXNlX2N1ciA+PiBQQUdFX1NISUZUOwotCQorCiAJLyogVGVzdCBpZiB3ZSBhcmUgZ29pbmcgb3ZlciAyR0Igb2YgRE1BIHNwYWNlICovCiAJaWYgKHBoYi0+ZG1hX3dpbmRvd19iYXNlX2N1ciArIHBoYi0+ZG1hX3dpbmRvd19zaXplID4gMHg4MDAwMDAwMHVsKSB7CiAJCXVkYmdfcHJpbnRmKCJQQ0lfRE1BOiBVbmV4cGVjdGVkIG51bWJlciBvZiBJT0FzIHVuZGVyIHRoaXMgUEhCLlxuIik7Ci0JCXBhbmljKCJQQ0lfRE1BOiBVbmV4cGVjdGVkIG51bWJlciBvZiBJT0FzIHVuZGVyIHRoaXMgUEhCLlxuIik7IAorCQlwYW5pYygiUENJX0RNQTogVW5leHBlY3RlZCBudW1iZXIgb2YgSU9BcyB1bmRlciB0aGlzIFBIQi5cbiIpOwogCX0KLQkKKwogCXBoYi0+ZG1hX3dpbmRvd19iYXNlX2N1ciArPSBwaGItPmRtYV93aW5kb3dfc2l6ZTsKIAogCS8qIFNldCB0aGUgdGNlIHRhYmxlIHNpemUgLSBtZWFzdXJlZCBpbiBlbnRyaWVzICovCkBAIC0yOTksMzAgKzI4MSwyMiBAQAogICogaW9tbXVfdGFibGVfc2V0cGFybXNfbHBhcgogICoKICAqIEZ1bmN0aW9uOiBPbiBwU2VyaWVzIExQQVIgc3lzdGVtcywgcmV0dXJuIFRDRSB0YWJsZSBpbmZvLCBnaXZlbiBhIHBjaSBidXMuCi0gKgotICogVG9EbzogcHJvcGVybHkgaW50ZXJwcmV0IHRoZSBpYm0sZG1hLXdpbmRvdyBwcm9wZXJ0eS4gIFRoZSBkZWZpbml0aW9uIGlzOgotICoJbG9naWNhbC1idXMtbnVtYmVyCSgxIHdvcmQpCi0gKglwaHlzLWFkZHJlc3MJCSgjYWRkcmVzcy1jZWxscyB3b3JkcykKLSAqCXNpemUJCQkoI2NlbGwtc2l6ZSB3b3JkcykKLSAqCi0gKiBDdXJyZW50bHkgd2UgaGFyZCBjb2RlIHRoZXNlIHNpemVzIChtb3JlIG9yIGxlc3MpLgogICovCiBzdGF0aWMgdm9pZCBpb21tdV90YWJsZV9zZXRwYXJtc19scGFyKHN0cnVjdCBwY2lfY29udHJvbGxlciAqcGhiLAogCQkJCSAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4sCiAJCQkJICAgICAgc3RydWN0IGlvbW11X3RhYmxlICp0YmwsCi0JCQkJICAgICAgdW5zaWduZWQgaW50ICpkbWFfd2luZG93KQorCQkJCSAgICAgIHVuc2lnbmVkIGNoYXIgKmRtYV93aW5kb3cpCiB7Ci0JdGJsLT5pdF9idXNubyAgPSBQQ0lfRE4oZG4pLT5idXNzdWJubzsKKwl1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6ZTsKIAotCS8qIFRPRE86IFBhcnNlIGZpZWxkIHNpemUgcHJvcGVydGllcyBwcm9wZXJseS4gKi8KLQl0YmwtPml0X3NpemUgICA9ICgoKHVuc2lnbmVkIGxvbmcpZG1hX3dpbmRvd1s0XSA8PCAzMikgfAotCQkJICAgKHVuc2lnbmVkIGxvbmcpZG1hX3dpbmRvd1s1XSkgPj4gUEFHRV9TSElGVDsKLQl0YmwtPml0X29mZnNldCA9ICgoKHVuc2lnbmVkIGxvbmcpZG1hX3dpbmRvd1syXSA8PCAzMikgfAotCQkJICAgKHVuc2lnbmVkIGxvbmcpZG1hX3dpbmRvd1szXSkgPj4gUEFHRV9TSElGVDsKKwl0YmwtPml0X2J1c25vICA9IFBDSV9ETihkbiktPmJ1c3N1Ym5vOworCW9mX3BhcnNlX2RtYV93aW5kb3coZG4sIGRtYV93aW5kb3csICZ0YmwtPml0X2luZGV4LCAmb2Zmc2V0LCAmc2l6ZSk7CisKIAl0YmwtPml0X2Jhc2UgICA9IDA7Ci0JdGJsLT5pdF9pbmRleCAgPSBkbWFfd2luZG93WzBdOwogCXRibC0+aXRfYmxvY2tzaXplICA9IDE2OwogCXRibC0+aXRfdHlwZSA9IFRDRV9QQ0k7CisJdGJsLT5pdF9vZmZzZXQgPSBvZmZzZXQgPj4gUEFHRV9TSElGVDsKKwl0YmwtPml0X3NpemUgPSBzaXplID4+IFBBR0VfU0hJRlQ7CiB9CiAKIHN0YXRpYyB2b2lkIGlvbW11X2J1c19zZXR1cF9wU2VyaWVzKHN0cnVjdCBwY2lfYnVzICpidXMpCkBAIC0zNTcsMTMgKzMzMSw5IEBACiAJaWYgKGlzYV9kbl9vcmlnKQogCQlvZl9ub2RlX3B1dChpc2FfZG5fb3JpZyk7CiAKLQkvKiBDb3VudCBudW1iZXIgb2YgZGlyZWN0IFBDSSBjaGlsZHJlbiBvZiB0aGUgUEhCLgotCSAqIEFsbCBQQ0kgZGV2aWNlIG5vZGVzIGhhdmUgY2xhc3MtY29kZSBwcm9wZXJ0eSwgc28gaXQncwotCSAqIGFuIGVhc3kgd2F5IHRvIGZpbmQgdGhlbS4KLQkgKi8KKwkvKiBDb3VudCBudW1iZXIgb2YgZGlyZWN0IFBDSSBjaGlsZHJlbiBvZiB0aGUgUEhCLiAqLwogCWZvciAoY2hpbGRyZW4gPSAwLCB0bXAgPSBkbi0+Y2hpbGQ7IHRtcDsgdG1wID0gdG1wLT5zaWJsaW5nKQotCQlpZiAoZ2V0X3Byb3BlcnR5KHRtcCwgImNsYXNzLWNvZGUiLCBOVUxMKSkKLQkJCWNoaWxkcmVuKys7CisJCWNoaWxkcmVuKys7CiAKIAlEQkcoIkNoaWxkcmVuOiAlZFxuIiwgY2hpbGRyZW4pOwogCkBAIC0zOTQsMTAgKzM2NCwxMSBAQAogCXBjaS0+cGhiLT5kbWFfd2luZG93X3NpemUgPSAweDgwMDAwMDB1bDsKIAlwY2ktPnBoYi0+ZG1hX3dpbmRvd19iYXNlX2N1ciA9IDB4ODAwMDAwMHVsOwogCi0JdGJsID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGlvbW11X3RhYmxlKSwgR0ZQX0tFUk5FTCk7CisJdGJsID0ga21hbGxvY19ub2RlKHNpemVvZihzdHJ1Y3QgaW9tbXVfdGFibGUpLCBHRlBfS0VSTkVMLAorCQkJICAgcGNpLT5waGItPm5vZGUpOwogCiAJaW9tbXVfdGFibGVfc2V0cGFybXMocGNpLT5waGIsIGRuLCB0YmwpOwotCXBjaS0+aW9tbXVfdGFibGUgPSBpb21tdV9pbml0X3RhYmxlKHRibCk7CisJcGNpLT5pb21tdV90YWJsZSA9IGlvbW11X2luaXRfdGFibGUodGJsLCBwY2ktPnBoYi0+bm9kZSk7CiAKIAkvKiBEaXZpZGUgdGhlIHJlc3QgKDEuNzVHQikgYW1vbmcgdGhlIGNoaWxkcmVuICovCiAJcGNpLT5waGItPmRtYV93aW5kb3dfc2l6ZSA9IDB4ODAwMDAwMDB1bDsKQEAgLTQxNCw3ICszODUsNyBAQAogCXN0cnVjdCBpb21tdV90YWJsZSAqdGJsOwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4sICpwZG47CiAJc3RydWN0IHBjaV9kbiAqcHBjaTsKLQl1bnNpZ25lZCBpbnQgKmRtYV93aW5kb3cgPSBOVUxMOworCXVuc2lnbmVkIGNoYXIgKmRtYV93aW5kb3cgPSBOVUxMOwogCiAJREJHKCJpb21tdV9idXNfc2V0dXBfcFNlcmllc0xQLCBidXMgJXAsIGJ1cy0+c2VsZiAlcFxuIiwgYnVzLCBidXMtPnNlbGYpOwogCkBAIC00MjIsNyArMzkzLDcgQEAKIAogCS8qIEZpbmQgbmVhcmVzdCBpYm0sZG1hLXdpbmRvdywgd2Fsa2luZyB1cCB0aGUgZGV2aWNlIHRyZWUgKi8KIAlmb3IgKHBkbiA9IGRuOyBwZG4gIT0gTlVMTDsgcGRuID0gcGRuLT5wYXJlbnQpIHsKLQkJZG1hX3dpbmRvdyA9ICh1bnNpZ25lZCBpbnQgKilnZXRfcHJvcGVydHkocGRuLCAiaWJtLGRtYS13aW5kb3ciLCBOVUxMKTsKKwkJZG1hX3dpbmRvdyA9IGdldF9wcm9wZXJ0eShwZG4sICJpYm0sZG1hLXdpbmRvdyIsIE5VTEwpOwogCQlpZiAoZG1hX3dpbmRvdyAhPSBOVUxMKQogCQkJYnJlYWs7CiAJfQpAQCAtNDQwLDEyICs0MTEsMTIgQEAKIAogCQlwcGNpLT5idXNzdWJubyA9IGJ1cy0+bnVtYmVyOwogCi0JCXRibCA9IChzdHJ1Y3QgaW9tbXVfdGFibGUgKilrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaW9tbXVfdGFibGUpLAotCQkJCQkJICAgIEdGUF9LRVJORUwpOwotCQorCQl0YmwgPSBrbWFsbG9jX25vZGUoc2l6ZW9mKHN0cnVjdCBpb21tdV90YWJsZSksIEdGUF9LRVJORUwsCisJCQkJICAgcHBjaS0+cGhiLT5ub2RlKTsKKwogCQlpb21tdV90YWJsZV9zZXRwYXJtc19scGFyKHBwY2ktPnBoYiwgcGRuLCB0YmwsIGRtYV93aW5kb3cpOwogCi0JCXBwY2ktPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwpOworCQlwcGNpLT5pb21tdV90YWJsZSA9IGlvbW11X2luaXRfdGFibGUodGJsLCBwcGNpLT5waGItPm5vZGUpOwogCX0KIAogCWlmIChwZG4gIT0gZG4pCkBAIC00NjgsOSArNDM5LDExIEBACiAJICovCiAJaWYgKCFkZXYtPmJ1cy0+c2VsZikgewogCQlEQkcoIiAtLT4gZmlyc3QgY2hpbGQsIG5vIGJyaWRnZS4gQWxsb2NhdGluZyBpb21tdSB0YWJsZS5cbiIpOwotCQl0YmwgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaW9tbXVfdGFibGUpLCBHRlBfS0VSTkVMKTsKKwkJdGJsID0ga21hbGxvY19ub2RlKHNpemVvZihzdHJ1Y3QgaW9tbXVfdGFibGUpLCBHRlBfS0VSTkVMLAorCQkJCSAgIFBDSV9ETihkbiktPnBoYi0+bm9kZSk7CiAJCWlvbW11X3RhYmxlX3NldHBhcm1zKFBDSV9ETihkbiktPnBoYiwgZG4sIHRibCk7Ci0JCVBDSV9ETihteWRuKS0+aW9tbXVfdGFibGUgPSBpb21tdV9pbml0X3RhYmxlKHRibCk7CisJCVBDSV9ETihkbiktPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwsCisJCQkJCQlQQ0lfRE4oZG4pLT5waGItPm5vZGUpOwogCiAJCXJldHVybjsKIAl9CkBAIC01MTYsNyArNDg5LDcgQEAKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBkbiwgKmRuOwogCXN0cnVjdCBpb21tdV90YWJsZSAqdGJsOwotCWludCAqZG1hX3dpbmRvdyA9IE5VTEw7CisJdW5zaWduZWQgY2hhciAqZG1hX3dpbmRvdyA9IE5VTEw7CiAJc3RydWN0IHBjaV9kbiAqcGNpOwogCiAJREJHKCJpb21tdV9kZXZfc2V0dXBfcFNlcmllc0xQLCBkZXYgJXAgKCVzKVxuIiwgZGV2LCBwY2lfbmFtZShkZXYpKTsKQEAgLTUzMSw4ICs1MDQsNyBAQAogCiAJZm9yIChwZG4gPSBkbjsgcGRuICYmIFBDSV9ETihwZG4pICYmICFQQ0lfRE4ocGRuKS0+aW9tbXVfdGFibGU7CiAJICAgICBwZG4gPSBwZG4tPnBhcmVudCkgewotCQlkbWFfd2luZG93ID0gKHVuc2lnbmVkIGludCAqKQotCQkJZ2V0X3Byb3BlcnR5KHBkbiwgImlibSxkbWEtd2luZG93IiwgTlVMTCk7CisJCWRtYV93aW5kb3cgPSBnZXRfcHJvcGVydHkocGRuLCAiaWJtLGRtYS13aW5kb3ciLCBOVUxMKTsKIAkJaWYgKGRtYV93aW5kb3cpCiAJCQlicmVhazsKIAl9CkBAIC01NTMsMTIgKzUyNSwxMiBAQAogCQkvKiBpb21tdV90YWJsZV9zZXRwYXJtc19scGFyIG5lZWRzIGJ1c3N1Ym5vLiAqLwogCQlwY2ktPmJ1c3N1Ym5vID0gcGNpLT5waGItPmJ1cy0+bnVtYmVyOwogCi0JCXRibCA9IChzdHJ1Y3QgaW9tbXVfdGFibGUgKilrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaW9tbXVfdGFibGUpLAotCQkJCQkJICAgIEdGUF9LRVJORUwpOworCQl0YmwgPSBrbWFsbG9jX25vZGUoc2l6ZW9mKHN0cnVjdCBpb21tdV90YWJsZSksIEdGUF9LRVJORUwsCisJCQkJICAgcGNpLT5waGItPm5vZGUpOwogCiAJCWlvbW11X3RhYmxlX3NldHBhcm1zX2xwYXIocGNpLT5waGIsIHBkbiwgdGJsLCBkbWFfd2luZG93KTsKIAotCQlwY2ktPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwpOworCQlwY2ktPmlvbW11X3RhYmxlID0gaW9tbXVfaW5pdF90YWJsZSh0YmwsIHBjaS0+cGhiLT5ub2RlKTsKIAl9CiAKIAlpZiAocGRuICE9IGRuKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3J0YXNkLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcnRhc2QuYwppbmRleCBlMDAwMGNlLi4yZTRlMDQwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcnRhc2QuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcnRhc2QuYwpAQCAtMzQ4LDcgKzM0OCw3IEBACiAJCXJldHVybiAwOwogCiAJaWYgKGVycm9yID09IC1FSU5WQUwpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAicnRhc2Q6IHN1cnZlaWxsYW5jZSBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgInJ0YXNkOiBzdXJ2ZWlsbGFuY2Ugbm90IHN1cHBvcnRlZFxuIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNDQwLDcgKzQ0MCw3IEBACiAJCWdvdG8gZXJyb3I7CiAJfQogCi0JcHJpbnRrKEtFUk5fSU5GTyAiUlRBUyBkYWVtb24gc3RhcnRlZFxuIik7CisJcHJpbnRrKEtFUk5fREVCVUcgIlJUQVMgZGFlbW9uIHN0YXJ0ZWRcbiIpOwogCiAJREVCVUcoIndpbGwgc2xlZXAgZm9yICVkIG1pbGxpc2Vjb25kc1xuIiwgKDMwMDAwL3J0YXNfZXZlbnRfc2Nhbl9yYXRlKSk7CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQAogCiAJLyogTm8gUlRBUyAqLwogCWlmIChydGFzX3Rva2VuKCJldmVudC1zY2FuIikgPT0gUlRBU19VTktOT1dOX1NFUlZJQ0UpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAicnRhc2Q6IG5vIGV2ZW50LXNjYW4gb24gc3lzdGVtXG4iKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgInJ0YXNkOiBubyBldmVudC1zY2FuIG9uIHN5c3RlbVxuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NjYW5sb2cuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zY2FubG9nLmMKaW5kZXggNTA2NDM0OS4uNzdhNWJiMSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NjYW5sb2cuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2NhbmxvZy5jCkBAIC0xMDcsOSArMTA3LDkgQEAKIAkJCS8qIEJyZWFrIHRvIHNsZWVwIGRlZmF1bHQgdGltZSAqLwogCQkJYnJlYWs7CiAJCSAgICBkZWZhdWx0OgotCQkJaWYgKHN0YXR1cyA+IDk5MDAgJiYgc3RhdHVzIDw9IDk5MDUpIHsKLQkJCQl3YWl0X3RpbWUgPSBydGFzX2V4dGVuZGVkX2J1c3lfZGVsYXlfdGltZShzdGF0dXMpOwotCQkJfSBlbHNlIHsKKwkJCS8qIEFzc3VtZSBleHRlbmRlZCBidXN5ICovCisJCQl3YWl0X3RpbWUgPSBydGFzX2J1c3lfZGVsYXlfdGltZShzdGF0dXMpOworCQkJaWYgKCF3YWl0X3RpbWUpIHsKIAkJCQlwcmludGsoS0VSTl9FUlIgInNjYW5sb2c6IHVua25vd24gZXJyb3IgZnJvbSBydGFzOiAlZFxuIiwgc3RhdHVzKTsKIAkJCQlyZXR1cm4gLUVJTzsKIAkJCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMKaW5kZXggM2JhODc4My4uMWUyODUxOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMKQEAgLTIzNSwxNCArMjM1LDE0IEBACiAJaWYgKGZpcm13YXJlX2hhc19mZWF0dXJlKEZXX0ZFQVRVUkVfU1BMUEFSKSkgewogCQl2cGFfaW5pdChib290X2NwdWlkKTsKIAkJaWYgKGdldF9scHBhY2EoKS0+c2hhcmVkX3Byb2MpIHsKLQkJCXByaW50ayhLRVJOX0lORk8gIlVzaW5nIHNoYXJlZCBwcm9jZXNzb3IgaWRsZSBsb29wXG4iKTsKKwkJCXByaW50ayhLRVJOX0RFQlVHICJVc2luZyBzaGFyZWQgcHJvY2Vzc29yIGlkbGUgbG9vcFxuIik7CiAJCQlwcGNfbWQucG93ZXJfc2F2ZSA9IHBzZXJpZXNfc2hhcmVkX2lkbGVfc2xlZXA7CiAJCX0gZWxzZSB7Ci0JCQlwcmludGsoS0VSTl9JTkZPICJVc2luZyBkZWRpY2F0ZWQgaWRsZSBsb29wXG4iKTsKKwkJCXByaW50ayhLRVJOX0RFQlVHICJVc2luZyBkZWRpY2F0ZWQgaWRsZSBsb29wXG4iKTsKIAkJCXBwY19tZC5wb3dlcl9zYXZlID0gcHNlcmllc19kZWRpY2F0ZWRfaWRsZV9zbGVlcDsKIAkJfQogCX0gZWxzZSB7Ci0JCXByaW50ayhLRVJOX0lORk8gIlVzaW5nIGRlZmF1bHQgaWRsZSBsb29wXG4iKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgIlVzaW5nIGRlZmF1bHQgaWRsZSBsb29wXG4iKTsKIAl9CiAKIAlpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFSKSkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy92aW8uYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy92aW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU1M2UwNC4uMDAwMDAwMAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvdmlvLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNzQgKzAsMCBAQAotLyoKLSAqIElCTSBQb3dlclBDIHBTZXJpZXMgVmlydHVhbCBJL08gSW5mcmFzdHJ1Y3R1cmUgU3VwcG9ydC4KLSAqCi0gKiAgICBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBJQk0gQ29ycC4KLSAqICAgICBEYXZlIEVuZ2VicmV0c2VuIGVuZ2VicmV0QHVzLmlibS5jb20KLSAqICAgICBTYW50aWFnbyBMZW9uIHNhbnRpbEB1cy5pYm0uY29tCi0gKiAgICAgSG9sbGlzIEJsYW5jaGFyZCA8aG9sbGlzYkB1cy5pYm0uY29tPgotICogICAgIFN0ZXBoZW4gUm90aHdlbGwKLSAqCi0gKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICAgICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCi0gKiAgICAgIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KLSNpbmNsdWRlIDxhc20vaW9tbXUuaD4KLSNpbmNsdWRlIDxhc20vZG1hLmg+Ci0jaW5jbHVkZSA8YXNtL3Byb20uaD4KLSNpbmNsdWRlIDxhc20vdmlvLmg+Ci0jaW5jbHVkZSA8YXNtL2h2Y2FsbC5oPgotI2luY2x1ZGUgPGFzbS90Y2UuaD4KLQotZXh0ZXJuIHN0cnVjdCBzdWJzeXN0ZW0gZGV2aWNlc19zdWJzeXM7IC8qIG5lZWRlZCBmb3IgdmlvX2ZpbmRfbmFtZSgpICovCi0KLXN0YXRpYyB2b2lkIHByb2JlX2J1c19wc2VyaWVzKHZvaWQpCi17Ci0Jc3RydWN0IGRldmljZV9ub2RlICpub2RlX3Zyb290LCAqb2Zfbm9kZTsKLQotCW5vZGVfdnJvb3QgPSBmaW5kX2RldmljZXMoInZkZXZpY2UiKTsKLQlpZiAoKG5vZGVfdnJvb3QgPT0gTlVMTCkgfHwgKG5vZGVfdnJvb3QtPmNoaWxkID09IE5VTEwpKQotCQkvKiB0aGlzIG1hY2hpbmUgZG9lc24ndCBkbyB2aXJ0dWFsIElPLCBhbmQgdGhhdCdzIG9rICovCi0JCXJldHVybjsKLQotCS8qCi0JICogQ3JlYXRlIHN0cnVjdCB2aW9fZGV2aWNlcyBmb3IgZWFjaCB2aXJ0dWFsIGRldmljZSBpbiB0aGUgZGV2aWNlIHRyZWUuCi0JICogRHJpdmVycyB3aWxsIGFzc29jaWF0ZSB3aXRoIHRoZW0gbGF0ZXIuCi0JICovCi0JZm9yIChvZl9ub2RlID0gbm9kZV92cm9vdC0+Y2hpbGQ7IG9mX25vZGUgIT0gTlVMTDsKLQkJCW9mX25vZGUgPSBvZl9ub2RlLT5zaWJsaW5nKSB7Ci0JCXByaW50ayhLRVJOX0RFQlVHICIlczogcHJvY2Vzc2luZyAlcFxuIiwgX19GVU5DVElPTl9fLCBvZl9ub2RlKTsKLQkJdmlvX3JlZ2lzdGVyX2RldmljZV9ub2RlKG9mX25vZGUpOwotCX0KLX0KLQotLyoqCi0gKiB2aW9fbWF0Y2hfZGV2aWNlX3BzZXJpZXM6IC0gVGVsbCBpZiBhIHBTZXJpZXMgVklPIGRldmljZSBtYXRjaGVzIGEKLSAqCXZpb19kZXZpY2VfaWQKLSAqLwotc3RhdGljIGludCB2aW9fbWF0Y2hfZGV2aWNlX3BzZXJpZXMoY29uc3Qgc3RydWN0IHZpb19kZXZpY2VfaWQgKmlkLAotCQljb25zdCBzdHJ1Y3QgdmlvX2RldiAqZGV2KQotewotCXJldHVybiAoc3RybmNtcChkZXYtPnR5cGUsIGlkLT50eXBlLCBzdHJsZW4oaWQtPnR5cGUpKSA9PSAwKSAmJgotCQkJZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5kZXYucGxhdGZvcm1fZGF0YSwgaWQtPmNvbXBhdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZpb19yZWxlYXNlX2RldmljZV9wc2VyaWVzKHN0cnVjdCBkZXZpY2UgKmRldikKLXsKLQkvKiBYWFggZnJlZSBUQ0UgdGFibGUgKi8KLQlvZl9ub2RlX3B1dChkZXYtPnBsYXRmb3JtX2RhdGEpOwotfQotCi1zdGF0aWMgc3NpemVfdCB2aW9kZXZfc2hvd19kZXZzcGVjKHN0cnVjdCBkZXZpY2UgKmRldiwKLQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGUgPSBkZXYtPnBsYXRmb3JtX2RhdGE7Ci0KLQlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgb2Zfbm9kZS0+ZnVsbF9uYW1lKTsKLX0KLURFVklDRV9BVFRSKGRldnNwZWMsIFNfSVJVU1IgfCBTX0lSR1JQIHwgU19JUk9USCwgdmlvZGV2X3Nob3dfZGV2c3BlYywgTlVMTCk7Ci0KLXN0YXRpYyB2b2lkIHZpb191bnJlZ2lzdGVyX2RldmljZV9wc2VyaWVzKHN0cnVjdCB2aW9fZGV2ICp2aW9kZXYpCi17Ci0JZGV2aWNlX3JlbW92ZV9maWxlKCZ2aW9kZXYtPmRldiwgJmRldl9hdHRyX2RldnNwZWMpOwotfQotCi1zdGF0aWMgc3RydWN0IHZpb19idXNfb3BzIHZpb19idXNfb3BzX3BzZXJpZXMgPSB7Ci0JLm1hdGNoID0gdmlvX21hdGNoX2RldmljZV9wc2VyaWVzLAotCS51bnJlZ2lzdGVyX2RldmljZSA9IHZpb191bnJlZ2lzdGVyX2RldmljZV9wc2VyaWVzLAotCS5yZWxlYXNlX2RldmljZSA9IHZpb19yZWxlYXNlX2RldmljZV9wc2VyaWVzLAotfTsKLQotLyoqCi0gKiB2aW9fYnVzX2luaXRfcHNlcmllczogLSBJbml0aWFsaXplIHRoZSBwU2VyaWVzIHZpcnR1YWwgSU8gYnVzCi0gKi8KLXN0YXRpYyBpbnQgX19pbml0IHZpb19idXNfaW5pdF9wc2VyaWVzKHZvaWQpCi17Ci0JaW50IGVycjsKLQotCWVyciA9IHZpb19idXNfaW5pdCgmdmlvX2J1c19vcHNfcHNlcmllcyk7Ci0JaWYgKGVyciA9PSAwKQotCQlwcm9iZV9idXNfcHNlcmllcygpOwotCXJldHVybiBlcnI7Ci19Ci0KLV9faW5pdGNhbGwodmlvX2J1c19pbml0X3BzZXJpZXMpOwotCi0vKioKLSAqIHZpb19idWlsZF9pb21tdV90YWJsZTogLSBnZXRzIHRoZSBkbWEgaW5mb3JtYXRpb24gZnJvbSBPRiBhbmQKLSAqCWJ1aWxkcyB0aGUgVENFIHRyZWUuCi0gKiBAZGV2OiB0aGUgdmlydHVhbCBkZXZpY2UuCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGJ1aWx0IHRjZSB0cmVlLCBvciBOVUxMIGlmIGl0IGNhbid0Ci0gKiBmaW5kIHByb3BlcnR5LgotKi8KLXN0YXRpYyBzdHJ1Y3QgaW9tbXVfdGFibGUgKnZpb19idWlsZF9pb21tdV90YWJsZShzdHJ1Y3QgdmlvX2RldiAqZGV2KQotewotCXVuc2lnbmVkIGludCAqZG1hX3dpbmRvdzsKLQlzdHJ1Y3QgaW9tbXVfdGFibGUgKm5ld1RjZVRhYmxlOwotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotCWludCBkbWFfd2luZG93X3Byb3BlcnR5X3NpemU7Ci0KLQlkbWFfd2luZG93ID0gKHVuc2lnbmVkIGludCAqKSBnZXRfcHJvcGVydHkoZGV2LT5kZXYucGxhdGZvcm1fZGF0YSwgImlibSxteS1kbWEtd2luZG93IiwgJmRtYV93aW5kb3dfcHJvcGVydHlfc2l6ZSk7Ci0JaWYoIWRtYV93aW5kb3cpIHsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JbmV3VGNlVGFibGUgPSAoc3RydWN0IGlvbW11X3RhYmxlICopIGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpb21tdV90YWJsZSksIEdGUF9LRVJORUwpOwotCi0JLyogIFRoZXJlIHNob3VsZCBiZSBzb21lIGNvZGUgdG8gZXh0cmFjdCB0aGUgcGh5cy1lbmNvZGVkIG9mZnNldAotCQl1c2luZyBwcm9tX25fYWRkcl9jZWxscygpLiBIb3dldmVyLCBhY2NvcmRpbmcgdG8gYSBjb21tZW50Ci0JCW9uIGVhcmxpZXIgdmVyc2lvbnMsIGl0J3MgYWx3YXlzIHplcm8sIHNvIHdlIGRvbid0IGJvdGhlciAqLwotCW9mZnNldCA9IGRtYV93aW5kb3dbMV0gPj4gIFBBR0VfU0hJRlQ7Ci0KLQkvKiBUQ0UgdGFibGUgc2l6ZSAtIG1lYXN1cmVkIGluIHRjZSBlbnRyaWVzICovCi0JbmV3VGNlVGFibGUtPml0X3NpemUJCT0gZG1hX3dpbmRvd1s0XSA+PiBQQUdFX1NISUZUOwotCS8qIG9mZnNldCBmb3IgVklPIHNob3VsZCBhbHdheXMgYmUgMCAqLwotCW5ld1RjZVRhYmxlLT5pdF9vZmZzZXQJCT0gb2Zmc2V0OwotCW5ld1RjZVRhYmxlLT5pdF9idXNubwkJPSAwOwotCW5ld1RjZVRhYmxlLT5pdF9pbmRleAkJPSAodW5zaWduZWQgbG9uZylkbWFfd2luZG93WzBdOwotCW5ld1RjZVRhYmxlLT5pdF90eXBlCQk9IFRDRV9WQjsKLQotCXJldHVybiBpb21tdV9pbml0X3RhYmxlKG5ld1RjZVRhYmxlKTsKLX0KLQotLyoqCi0gKiB2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGU6IC0gUmVnaXN0ZXIgYSBuZXcgdmlvIGRldmljZS4KLSAqIEBvZl9ub2RlOglUaGUgT0Ygbm9kZSBmb3IgdGhpcyBkZXZpY2UuCi0gKgotICogQ3JlYXRlcyBhbmQgaW5pdGlhbGl6ZXMgYSB2aW9fZGV2IHN0cnVjdHVyZSBmcm9tIHRoZSBkYXRhIGluCi0gKiBvZl9ub2RlIChkZXYucGxhdGZvcm1fZGF0YSkgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3Qgb2YgdmlydHVhbCBkZXZpY2VzLgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgdmlvX2RldiBvciBOVUxMIGlmIG5vZGUgaGFzCi0gKiBOVUxMIGRldmljZV90eXBlIG9yIGNvbXBhdGlibGUgZmllbGRzLgotICovCi1zdHJ1Y3QgdmlvX2RldiAqIF9fZGV2aW5pdCB2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUoc3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlKQotewotCXN0cnVjdCB2aW9fZGV2ICp2aW9kZXY7Ci0JdW5zaWduZWQgaW50ICp1bml0X2FkZHJlc3M7Ci0JdW5zaWduZWQgaW50ICppcnFfcDsKLQotCS8qIHdlIG5lZWQgdGhlICdkZXZpY2VfdHlwZScgcHJvcGVydHksIGluIG9yZGVyIHRvIG1hdGNoIHdpdGggZHJpdmVycyAqLwotCWlmICgoTlVMTCA9PSBvZl9ub2RlLT50eXBlKSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkiJXM6IG5vZGUgJXMgbWlzc2luZyAnZGV2aWNlX3R5cGUnXG4iLCBfX0ZVTkNUSU9OX18sCi0JCQlvZl9ub2RlLT5uYW1lID8gb2Zfbm9kZS0+bmFtZSA6ICI8dW5rbm93bj4iKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JdW5pdF9hZGRyZXNzID0gKHVuc2lnbmVkIGludCAqKWdldF9wcm9wZXJ0eShvZl9ub2RlLCAicmVnIiwgTlVMTCk7Ci0JaWYgKCF1bml0X2FkZHJlc3MpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IG5vZGUgJXMgbWlzc2luZyAncmVnJ1xuIiwgX19GVU5DVElPTl9fLAotCQkJb2Zfbm9kZS0+bmFtZSA/IG9mX25vZGUtPm5hbWUgOiAiPHVua25vd24+Iik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCS8qIGFsbG9jYXRlIGEgdmlvX2RldiBmb3IgdGhpcyBub2RlICovCi0JdmlvZGV2ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHZpb19kZXYpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXZpb2RldikgewotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JbWVtc2V0KHZpb2RldiwgMCwgc2l6ZW9mKHN0cnVjdCB2aW9fZGV2KSk7Ci0KLQl2aW9kZXYtPmRldi5wbGF0Zm9ybV9kYXRhID0gb2Zfbm9kZV9nZXQob2Zfbm9kZSk7Ci0KLQl2aW9kZXYtPmlycSA9IE5PX0lSUTsKLQlpcnFfcCA9ICh1bnNpZ25lZCBpbnQgKilnZXRfcHJvcGVydHkob2Zfbm9kZSwgImludGVycnVwdHMiLCBOVUxMKTsKLQlpZiAoaXJxX3ApIHsKLQkJaW50IHZpcnEgPSB2aXJ0X2lycV9jcmVhdGVfbWFwcGluZygqaXJxX3ApOwotCQlpZiAodmlycSA9PSBOT19JUlEpIHsKLQkJCXByaW50ayhLRVJOX0VSUiAiVW5hYmxlIHRvIGFsbG9jYXRlIGludGVycnVwdCAiCi0JCQkgICAgICAgIm51bWJlciBmb3IgJXNcbiIsIG9mX25vZGUtPmZ1bGxfbmFtZSk7Ci0JCX0gZWxzZQotCQkJdmlvZGV2LT5pcnEgPSBpcnFfb2Zmc2V0X3VwKHZpcnEpOwotCX0KLQotCXNucHJpbnRmKHZpb2Rldi0+ZGV2LmJ1c19pZCwgQlVTX0lEX1NJWkUsICIleCIsICp1bml0X2FkZHJlc3MpOwotCXZpb2Rldi0+bmFtZSA9IG9mX25vZGUtPm5hbWU7Ci0JdmlvZGV2LT50eXBlID0gb2Zfbm9kZS0+dHlwZTsKLQl2aW9kZXYtPnVuaXRfYWRkcmVzcyA9ICp1bml0X2FkZHJlc3M7Ci0JdmlvZGV2LT5pb21tdV90YWJsZSA9IHZpb19idWlsZF9pb21tdV90YWJsZSh2aW9kZXYpOwotCi0JLyogcmVnaXN0ZXIgd2l0aCBnZW5lcmljIGRldmljZSBmcmFtZXdvcmsgKi8KLQlpZiAodmlvX3JlZ2lzdGVyX2RldmljZSh2aW9kZXYpID09IE5VTEwpIHsKLQkJLyogWFhYIGZyZWUgVENFIHRhYmxlICovCi0JCWtmcmVlKHZpb2Rldik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQlkZXZpY2VfY3JlYXRlX2ZpbGUoJnZpb2Rldi0+ZGV2LCAmZGV2X2F0dHJfZGV2c3BlYyk7Ci0KLQlyZXR1cm4gdmlvZGV2OwotfQotRVhQT1JUX1NZTUJPTCh2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUpOwotCi0vKioKLSAqIHZpb19nZXRfYXR0cmlidXRlOiAtIGdldCBhdHRyaWJ1dGUgZm9yIHZpcnR1YWwgZGV2aWNlCi0gKiBAdmRldjoJVGhlIHZpbyBkZXZpY2UgdG8gZ2V0IHByb3BlcnR5LgotICogQHdoaWNoOglUaGUgcHJvcGVydHkvYXR0cmlidXRlIHRvIGJlIGV4dHJhY3RlZC4KLSAqIEBsZW5ndGg6CVBvaW50ZXIgdG8gbGVuZ3RoIG9mIHJldHVybmVkIGRhdGEgc2l6ZSAodW51c2VkIGlmIE5VTEwpLgotICoKLSAqIENhbGxzIHByb20uYydzIGdldF9wcm9wZXJ0eSgpIHRvIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlCi0gKiBhdHRyaWJ1dGUgc3BlY2lmaWVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IgY29uc3RhbnQgQHdoaWNoCi0qLwotY29uc3Qgdm9pZCAqIHZpb19nZXRfYXR0cmlidXRlKHN0cnVjdCB2aW9fZGV2ICp2ZGV2LCB2b2lkKiB3aGljaCwgaW50KiBsZW5ndGgpCi17Ci0JcmV0dXJuIGdldF9wcm9wZXJ0eSh2ZGV2LT5kZXYucGxhdGZvcm1fZGF0YSwgKGNoYXIqKXdoaWNoLCBsZW5ndGgpOwotfQotRVhQT1JUX1NZTUJPTCh2aW9fZ2V0X2F0dHJpYnV0ZSk7Ci0KLS8qIHZpb19maW5kX25hbWUoKSAtIGludGVybmFsIGJlY2F1c2Ugb25seSB2aW8uYyBrbm93cyBob3cgd2UgZm9ybWF0dGVkIHRoZQotICoga29iamVjdCBuYW1lCi0gKiBYWFggb25jZSB2aW9fYnVzX3R5cGUuZGV2aWNlcyBpcyBhY3R1YWxseSB1c2VkIGFzIGEga3NldCBpbgotICogZHJpdmVycy9iYXNlL2J1cy5jLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mCi0gKiAiZGV2aWNlX2ZpbmQoa29ial9uYW1lLCAmdmlvX2J1c190eXBlKSIKLSAqLwotc3RhdGljIHN0cnVjdCB2aW9fZGV2ICp2aW9fZmluZF9uYW1lKGNvbnN0IGNoYXIgKmtvYmpfbmFtZSkKLXsKLQlzdHJ1Y3Qga29iamVjdCAqZm91bmQ7Ci0KLQlmb3VuZCA9IGtzZXRfZmluZF9vYmooJmRldmljZXNfc3Vic3lzLmtzZXQsIGtvYmpfbmFtZSk7Ci0JaWYgKCFmb3VuZCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXR1cm4gdG9fdmlvX2Rldihjb250YWluZXJfb2YoZm91bmQsIHN0cnVjdCBkZXZpY2UsIGtvYmopKTsKLX0KLQotLyoqCi0gKiB2aW9fZmluZF9ub2RlIC0gZmluZCBhbiBhbHJlYWR5LXJlZ2lzdGVyZWQgdmlvX2RldgotICogQHZub2RlOiBkZXZpY2Vfbm9kZSBvZiB0aGUgdmlydHVhbCBkZXZpY2Ugd2UncmUgbG9va2luZyBmb3IKLSAqLwotc3RydWN0IHZpb19kZXYgKnZpb19maW5kX25vZGUoc3RydWN0IGRldmljZV9ub2RlICp2bm9kZSkKLXsKLQl1aW50MzJfdCAqdW5pdF9hZGRyZXNzOwotCWNoYXIga29ial9uYW1lW0JVU19JRF9TSVpFXTsKLQotCS8qIGNvbnN0cnVjdCB0aGUga29iamVjdCBuYW1lIGZyb20gdGhlIGRldmljZSBub2RlICovCi0JdW5pdF9hZGRyZXNzID0gKHVpbnQzMl90ICopZ2V0X3Byb3BlcnR5KHZub2RlLCAicmVnIiwgTlVMTCk7Ci0JaWYgKCF1bml0X2FkZHJlc3MpCi0JCXJldHVybiBOVUxMOwotCXNucHJpbnRmKGtvYmpfbmFtZSwgQlVTX0lEX1NJWkUsICIleCIsICp1bml0X2FkZHJlc3MpOwotCi0JcmV0dXJuIHZpb19maW5kX25hbWUoa29ial9uYW1lKTsKLX0KLUVYUE9SVF9TWU1CT0wodmlvX2ZpbmRfbm9kZSk7Ci0KLWludCB2aW9fZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IHZpb19kZXYgKmRldikKLXsKLQlpbnQgcmMgPSBoX3Zpb19zaWduYWwoZGV2LT51bml0X2FkZHJlc3MsIFZJT19JUlFfRU5BQkxFKTsKLQlpZiAocmMgIT0gSF9TVUNDRVNTKQotCQlwcmludGsoS0VSTl9FUlIgInZpbzogRXJyb3IgMHgleCBlbmFibGluZyBpbnRlcnJ1cHRzXG4iLCByYyk7Ci0JcmV0dXJuIHJjOwotfQotRVhQT1JUX1NZTUJPTCh2aW9fZW5hYmxlX2ludGVycnVwdHMpOwotCi1pbnQgdmlvX2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgdmlvX2RldiAqZGV2KQotewotCWludCByYyA9IGhfdmlvX3NpZ25hbChkZXYtPnVuaXRfYWRkcmVzcywgVklPX0lSUV9ESVNBQkxFKTsKLQlpZiAocmMgIT0gSF9TVUNDRVNTKQotCQlwcmludGsoS0VSTl9FUlIgInZpbzogRXJyb3IgMHgleCBkaXNhYmxpbmcgaW50ZXJydXB0c1xuIiwgcmMpOwotCXJldHVybiByYzsKLX0KLUVYUE9SVF9TWU1CT0wodmlvX2Rpc2FibGVfaW50ZXJydXB0cyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMveGljcy5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYwppbmRleCAyZDYwZWEzLi5iMTRmOWI1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMveGljcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy94aWNzLmMKQEAgLTUyMiw3ICs1MjIsNyBAQAogCiAJbnAgPSBvZl9maW5kX25vZGVfYnlfdHlwZShOVUxMLCAiaW50ZXJydXB0LWNvbnRyb2xsZXIiKTsKIAlpZiAoIW5wKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgInhpY3M6IG5vIElTQSBpbnRlcnJ1cHQgY29udHJvbGxlclxuIik7CisJCXByaW50ayhLRVJOX0RFQlVHICJ4aWNzOiBubyBJU0EgaW50ZXJydXB0IGNvbnRyb2xsZXJcbiIpOwogCQl4aWNzX2lycV84MjU5X2Nhc2NhZGVfcmVhbCA9IC0xOwogCQl4aWNzX2lycV84MjU5X2Nhc2NhZGUgPSAtMTsKIAl9IGVsc2UgewpAQCAtNjQxLDIzICs2NDEsMjYgQEAKIAlvcHMtPmNwcHJfaW5mbyhjcHUsIDB4MDApOwogCWlvc3luYygpOwogCisJLyogQ2xlYXIgSVBJICovCisJb3BzLT5xaXJyX2luZm8oY3B1LCAweGZmKTsKKworCS8qCisJICogd2UgbmVlZCB0byBFT0kgdGhlIElQSSBpZiB3ZSBnb3QgaGVyZSBmcm9tIGtleGVjIGRvd24gSVBJCisJICoKKwkgKiBwcm9iYWJseSBuZWVkIHRvIGNoZWNrIGFsbCB0aGUgb3RoZXIgaW50ZXJydXB0cyB0b28KKwkgKiBzaG91bGQgd2UgYmUgZmxhZ2dpbmcgaWRsZSBsb29wIGluc3RlYWQ/CisJICogb3IgY3JlYXRpbmcgc29tZSB0YXNrIHRvIGJlIHNjaGVkdWxlZD8KKwkgKi8KKwlvcHMtPnhpcnJfaW5mb19zZXQoY3B1LCBYSUNTX0lQSSk7CisKIAkvKgogCSAqIFNvbWUgbWFjaGluZXMgbmVlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBjcHUgaW4gdGhlIEdJUSwKIAkgKiBzbyBsZWF2ZSB0aGUgbWFzdGVyIGNwdSBpbiB0aGUgZ3JvdXAuCiAJICovCi0JaWYgKHNlY29uZGFyeSkgewotCQkvKgotCQkgKiB3ZSBuZWVkIHRvIEVPSSB0aGUgSVBJIGlmIHdlIGdvdCBoZXJlIGZyb20ga2V4ZWMgZG93biBJUEkKLQkJICoKLQkJICogcHJvYmFibHkgbmVlZCB0byBjaGVjayBhbGwgdGhlIG90aGVyIGludGVycnVwdHMgdG9vCi0JCSAqIHNob3VsZCB3ZSBiZSBmbGFnZ2luZyBpZGxlIGxvb3AgaW5zdGVhZD8KLQkJICogb3IgY3JlYXRpbmcgc29tZSB0YXNrIHRvIGJlIHNjaGVkdWxlZD8KLQkJICovCi0JCW9wcy0+eGlycl9pbmZvX3NldChjcHUsIFhJQ1NfSVBJKTsKKwlpZiAoc2Vjb25kYXJ5KQogCQlydGFzX3NldF9pbmRpY2F0b3IoR0xPQkFMX0lOVEVSUlVQVF9RVUVVRSwKIAkJCSgxVUwgPDwgaW50ZXJydXB0X3NlcnZlcl9zaXplKSAtIDEgLQogCQkJZGVmYXVsdF9kaXN0cmliX3NlcnZlciwgMCk7Ci0JfQogfQogCiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L01ha2VmaWxlIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9NYWtlZmlsZQppbmRleCA0YzJiMzU2Li5jZWY5NWIwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L01ha2VmaWxlCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvTWFrZWZpbGUKQEAgLTEsMyArMSw3IEBACitpZmVxICgkKENPTkZJR19QUEM2NCkseSkKK0VYVFJBX0NGTEFHUwkJCSs9IC1tbm8tbWluaW1hbC10b2MKK2VuZGlmCisKIG9iai0kKENPTkZJR19NUElDKQkJKz0gbXBpYy5vCiBvYmotJChDT05GSUdfUFBDX0lORElSRUNUX1BDSSkJKz0gaW5kaXJlY3RfcGNpLm8KIG9iai0kKENPTkZJR19QUENfSTgyNTkpCQkrPSBpODI1OS5vCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2RhcnRfaW9tbXUuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvZGFydF9pb21tdS5jCmluZGV4IDM4MDg3YmQuLjYyMzIwOTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvZGFydF9pb21tdS5jCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvZGFydF9pb21tdS5jCkBAIC0yNDYsNyArMjQ2LDcgQEAKIAlpb21tdV90YWJsZV9kYXJ0Lml0X2Jhc2UgPSAodW5zaWduZWQgbG9uZylkYXJ0X3ZiYXNlOwogCWlvbW11X3RhYmxlX2RhcnQuaXRfaW5kZXggPSAwOwogCWlvbW11X3RhYmxlX2RhcnQuaXRfYmxvY2tzaXplID0gMTsKLQlpb21tdV9pbml0X3RhYmxlKCZpb21tdV90YWJsZV9kYXJ0KTsKKwlpb21tdV9pbml0X3RhYmxlKCZpb21tdV90YWJsZV9kYXJ0LCAtMSk7CiAKIAkvKiBSZXNlcnZlIHRoZSBsYXN0IHBhZ2Ugb2YgdGhlIERBUlQgdG8gYXZvaWQgcG9zc2libGUgcHJlZmV0Y2gKIAkgKiBwYXN0IHRoZSBEQVJUIG1hcHBlZCBhcmVhCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9zb2MuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX3NvYy5jCmluZGV4IGNlYjU4NDYuLjcxYTMyNzUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX3NvYy5jCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX3NvYy5jCkBAIC0zNzIsNyArMzcyLDcgQEAKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwogCXVuc2lnbmVkIGludCBpOwotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnVzYl9kZXY7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqdXNiX2Rldl9tcGggPSBOVUxMLCAqdXNiX2Rldl9kciA9IE5VTEw7CiAJaW50IHJldDsKIAogCWZvciAobnAgPSBOVUxMLCBpID0gMDsKQEAgLTM5MywxNSArMzkzLDE1IEBACiAJCXJbMV0uZW5kID0gbnAtPmludHJzWzBdLmxpbmU7CiAJCXJbMV0uZmxhZ3MgPSBJT1JFU09VUkNFX0lSUTsKIAotCQl1c2JfZGV2ID0KLQkJICAgIHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoImZzbC11c2IyLW1waCIsIGksIHIsIDIpOwotCQlpZiAoSVNfRVJSKHVzYl9kZXYpKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKHVzYl9kZXYpOworCQl1c2JfZGV2X21waCA9CisJCSAgICBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKCJmc2wtZWhjaSIsIGksIHIsIDIpOworCQlpZiAoSVNfRVJSKHVzYl9kZXZfbXBoKSkgeworCQkJcmV0ID0gUFRSX0VSUih1c2JfZGV2X21waCk7CiAJCQlnb3RvIGVycjsKIAkJfQogCi0JCXVzYl9kZXYtPmRldi5jb2hlcmVudF9kbWFfbWFzayA9IDB4ZmZmZmZmZmZVTDsKLQkJdXNiX2Rldi0+ZGV2LmRtYV9tYXNrID0gJnVzYl9kZXYtPmRldi5jb2hlcmVudF9kbWFfbWFzazsKKwkJdXNiX2Rldl9tcGgtPmRldi5jb2hlcmVudF9kbWFfbWFzayA9IDB4ZmZmZmZmZmZVTDsKKwkJdXNiX2Rldl9tcGgtPmRldi5kbWFfbWFzayA9ICZ1c2JfZGV2X21waC0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrOwogCiAJCXVzYl9kYXRhLm9wZXJhdGluZ19tb2RlID0gRlNMX1VTQjJfTVBIX0hPU1Q7CiAKQEAgLTQxNywzMSArNDE3LDE0IEBACiAJCXVzYl9kYXRhLnBoeV9tb2RlID0gZGV0ZXJtaW5lX3VzYl9waHkocHJvcCk7CiAKIAkJcmV0ID0KLQkJICAgIHBsYXRmb3JtX2RldmljZV9hZGRfZGF0YSh1c2JfZGV2LCAmdXNiX2RhdGEsCisJCSAgICBwbGF0Zm9ybV9kZXZpY2VfYWRkX2RhdGEodXNiX2Rldl9tcGgsICZ1c2JfZGF0YSwKIAkJCQkJICAgICBzaXplb2Yoc3RydWN0CiAJCQkJCQkgICAgZnNsX3VzYjJfcGxhdGZvcm1fZGF0YSkpOwogCQlpZiAocmV0KQotCQkJZ290byB1bnJlZzsKKwkJCWdvdG8gdW5yZWdfbXBoOwogCX0KIAotCXJldHVybiAwOwotCi11bnJlZzoKLQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3Rlcih1c2JfZGV2KTsKLWVycjoKLQlyZXR1cm4gcmV0OwotfQotCi1hcmNoX2luaXRjYWxsKGZzbF91c2Jfb2ZfaW5pdCk7Ci0KLXN0YXRpYyBpbnQgX19pbml0IGZzbF91c2JfZHJfb2ZfaW5pdCh2b2lkKQotewotCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7Ci0JdW5zaWduZWQgaW50IGk7Ci0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqdXNiX2RldjsKLQlpbnQgcmV0OwotCi0JZm9yIChucCA9IE5VTEwsIGkgPSAwOworCWZvciAobnAgPSBOVUxMOwogCSAgICAgKG5wID0gb2ZfZmluZF9jb21wYXRpYmxlX25vZGUobnAsICJ1c2IiLCAiZnNsLXVzYjItZHIiKSkgIT0gTlVMTDsKIAkgICAgIGkrKykgewogCQlzdHJ1Y3QgcmVzb3VyY2UgclsyXTsKQEAgLTQ1MywyMSArNDM2LDIxIEBACiAKIAkJcmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgJnJbMF0pOwogCQlpZiAocmV0KQotCQkJZ290byBlcnI7CisJCQlnb3RvIHVucmVnX21waDsKIAogCQlyWzFdLnN0YXJ0ID0gbnAtPmludHJzWzBdLmxpbmU7CiAJCXJbMV0uZW5kID0gbnAtPmludHJzWzBdLmxpbmU7CiAJCXJbMV0uZmxhZ3MgPSBJT1JFU09VUkNFX0lSUTsKIAotCQl1c2JfZGV2ID0KLQkJICAgIHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoImZzbC11c2IyLWRyIiwgaSwgciwgMik7Ci0JCWlmIChJU19FUlIodXNiX2RldikpIHsKLQkJCXJldCA9IFBUUl9FUlIodXNiX2Rldik7CisJCXVzYl9kZXZfZHIgPQorCQkgICAgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZSgiZnNsLWVoY2kiLCBpLCByLCAyKTsKKwkJaWYgKElTX0VSUih1c2JfZGV2X2RyKSkgeworCQkJcmV0ID0gUFRSX0VSUih1c2JfZGV2X2RyKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAKLQkJdXNiX2Rldi0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrID0gMHhmZmZmZmZmZlVMOwotCQl1c2JfZGV2LT5kZXYuZG1hX21hc2sgPSAmdXNiX2Rldi0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrOworCQl1c2JfZGV2X2RyLT5kZXYuY29oZXJlbnRfZG1hX21hc2sgPSAweGZmZmZmZmZmVUw7CisJCXVzYl9kZXZfZHItPmRldi5kbWFfbWFzayA9ICZ1c2JfZGV2X2RyLT5kZXYuY29oZXJlbnRfZG1hX21hc2s7CiAKIAkJdXNiX2RhdGEub3BlcmF0aW5nX21vZGUgPSBGU0xfVVNCMl9EUl9IT1NUOwogCkBAIC00NzUsMTkgKzQ1OCwyMiBAQAogCQl1c2JfZGF0YS5waHlfbW9kZSA9IGRldGVybWluZV91c2JfcGh5KHByb3ApOwogCiAJCXJldCA9Ci0JCSAgICBwbGF0Zm9ybV9kZXZpY2VfYWRkX2RhdGEodXNiX2RldiwgJnVzYl9kYXRhLAorCQkgICAgcGxhdGZvcm1fZGV2aWNlX2FkZF9kYXRhKHVzYl9kZXZfZHIsICZ1c2JfZGF0YSwKIAkJCQkJICAgICBzaXplb2Yoc3RydWN0CiAJCQkJCQkgICAgZnNsX3VzYjJfcGxhdGZvcm1fZGF0YSkpOwogCQlpZiAocmV0KQotCQkJZ290byB1bnJlZzsKKwkJCWdvdG8gdW5yZWdfZHI7CiAJfQotCiAJcmV0dXJuIDA7CiAKLXVucmVnOgotCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHVzYl9kZXYpOwordW5yZWdfZHI6CisJaWYgKHVzYl9kZXZfZHIpCisJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHVzYl9kZXZfZHIpOwordW5yZWdfbXBoOgorCWlmICh1c2JfZGV2X21waCkKKwkJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIodXNiX2Rldl9tcGgpOwogZXJyOgogCXJldHVybiByZXQ7CiB9CiAKLWFyY2hfaW5pdGNhbGwoZnNsX3VzYl9kcl9vZl9pbml0KTsKK2FyY2hfaW5pdGNhbGwoZnNsX3VzYl9vZl9pbml0KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvbXBpYy5jIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9tcGljLmMKaW5kZXggN2RjZGZjYi4uYmZmZTUwZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9tcGljLmMKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9tcGljLmMKQEAgLTgyOSw3ICs4MjksMjcgQEAKIAltcGljX2NwdV93cml0ZShNUElDX0NQVV9DVVJSRU5UX1RBU0tfUFJJLCAwKTsKIH0KIAordm9pZCBfX2luaXQgbXBpY19zZXRfY2xrX3JhdGlvKHN0cnVjdCBtcGljICptcGljLCB1MzIgY2xvY2tfcmF0aW8pCit7CisJdTMyIHY7CiAKKwl2ID0gbXBpY19yZWFkKG1waWMtPmdyZWdzLCBNUElDX0dSRUdfR0xPQkFMX0NPTkZfMSk7CisJdiAmPSB+TVBJQ19HUkVHX0dMT0JBTF9DT05GXzFfQ0xLX1JBVElPX01BU0s7CisJdiB8PSBNUElDX0dSRUdfR0xPQkFMX0NPTkZfMV9DTEtfUkFUSU8oY2xvY2tfcmF0aW8pOworCW1waWNfd3JpdGUobXBpYy0+Z3JlZ3MsIE1QSUNfR1JFR19HTE9CQUxfQ09ORl8xLCB2KTsKK30KKwordm9pZCBfX2luaXQgbXBpY19zZXRfc2VyaWFsX2ludChzdHJ1Y3QgbXBpYyAqbXBpYywgaW50IGVuYWJsZSkKK3sKKwl1MzIgdjsKKworCXYgPSBtcGljX3JlYWQobXBpYy0+Z3JlZ3MsIE1QSUNfR1JFR19HTE9CQUxfQ09ORl8xKTsKKwlpZiAoZW5hYmxlKQorCQl2IHw9IE1QSUNfR1JFR19HTE9CQUxfQ09ORl8xX1NJRTsKKwllbHNlCisJCXYgJj0gfk1QSUNfR1JFR19HTE9CQUxfQ09ORl8xX1NJRTsKKwltcGljX3dyaXRlKG1waWMtPmdyZWdzLCBNUElDX0dSRUdfR0xPQkFMX0NPTkZfMSwgdik7Cit9CiAKIHZvaWQgbXBpY19pcnFfc2V0X3ByaW9yaXR5KHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGludCBwcmkpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3BwYy9LY29uZmlnIGIvYXJjaC9wcGMvS2NvbmZpZwppbmRleCBlOWE4ZjVkLi5iNTVkZTRmIDEwMDY0NAotLS0gYS9hcmNoL3BwYy9LY29uZmlnCisrKyBiL2FyY2gvcHBjL0tjb25maWcKQEAgLTQwLDYgKzQwLDEwIEBACiAJYm9vbAogCWRlZmF1bHQgeQogCitjb25maWcgR0VORVJJQ19GSU5EX05FWFRfQklUCisJYm9vbAorCWRlZmF1bHQgeQorCiBjb25maWcgU0NIRURfTk9fTk9fT01JVF9GUkFNRV9QT0lOVEVSCiAJYm9vbAogCWRlZmF1bHQgeQpkaWZmIC0tZ2l0IGEvYXJjaC9wcGMvYm9vdC9saWIvTWFrZWZpbGUgYi9hcmNoL3BwYy9ib290L2xpYi9NYWtlZmlsZQppbmRleCA4MGM4NGQ1Li4yZjk5NWY3IDEwMDY0NAotLS0gYS9hcmNoL3BwYy9ib290L2xpYi9NYWtlZmlsZQorKysgYi9hcmNoL3BwYy9ib290L2xpYi9NYWtlZmlsZQpAQCAtNSw3ICs1LDcgQEAKIENGTEFHU19rYmQubwk6PSAtSWRyaXZlcnMvY2hhcgogQ0ZMQUdTX3ZyZXNldC5vIDo9IC1JYXJjaC9wcGMvYm9vdC9pbmNsdWRlCiAKLXpsaWIgIDo9IGluZmJsb2NrLmMgaW5mY29kZXMuYyBpbmZmYXN0LmMgaW5mbGF0ZS5jIGluZnRyZWVzLmMgaW5mdXRpbC5jCit6bGliICA6PSBpbmZmYXN0LmMgaW5mbGF0ZS5jIGluZnRyZWVzLmMKIAkgCiBsaWIteSArPSAkKHpsaWI6LmM9Lm8pIGRpdjY0Lm8KIGxpYi0kKENPTkZJR19WR0FfQ09OU09MRSkgKz0gdnJlc2V0Lm8ga2JkLm8KZGlmZiAtLWdpdCBhL2FyY2gvcHBjL21tL2luaXQuYyBiL2FyY2gvcHBjL21tL2luaXQuYwppbmRleCAzODZlMDAwLi5jOWJkMTg0IDEwMDY0NAotLS0gYS9hcmNoL3BwYy9tbS9pbml0LmMKKysrIGIvYXJjaC9wcGMvbW0vaW5pdC5jCkBAIC01ODMsNyArNTgzLDcgQEAKIAkJbW0gPSAoYWRkcmVzcyA8IFRBU0tfU0laRSk/IHZtYS0+dm1fbW06ICZpbml0X21tOwogCQlwbWQgPSBwbWRfb2Zmc2V0KHBnZF9vZmZzZXQobW0sIGFkZHJlc3MpLCBhZGRyZXNzKTsKIAkJaWYgKCFwbWRfbm9uZSgqcG1kKSkKLQkJCWFkZF9oYXNoX3BhZ2UobW0tPmNvbnRleHQsIGFkZHJlc3MsIHBtZF92YWwoKnBtZCkpOworCQkJYWRkX2hhc2hfcGFnZShtbS0+Y29udGV4dC5pZCwgYWRkcmVzcywgcG1kX3ZhbCgqcG1kKSk7CiAJfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9hcmNoL3BwYy9tbS9tbXVfY29udGV4dC5jIGIvYXJjaC9wcGMvbW0vbW11X2NvbnRleHQuYwppbmRleCBiNGE0YjNmLi44Nzg0ZjM3IDEwMDY0NAotLS0gYS9hcmNoL3BwYy9tbS9tbXVfY29udGV4dC5jCisrKyBiL2FyY2gvcHBjL21tL21tdV9jb250ZXh0LmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4KICNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KIAotbW1fY29udGV4dF90IG5leHRfbW11X2NvbnRleHQ7Cit1bnNpZ25lZCBsb25nIG5leHRfbW11X2NvbnRleHQ7CiB1bnNpZ25lZCBsb25nIGNvbnRleHRfbWFwW0xBU1RfQ09OVEVYVCAvIEJJVFNfUEVSX0xPTkcgKyAxXTsKICNpZmRlZiBGRVdfQ09OVEVYVFMKIGF0b21pY190IG5yX2ZyZWVfY29udGV4dHM7CmRpZmYgLS1naXQgYS9hcmNoL3BwYy9tbS90bGIuYyBiL2FyY2gvcHBjL21tL3RsYi5jCmluZGV4IDZjM2RjM2MuLjYwNmIwMjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcHBjL21tL3RsYi5jCisrKyBiL2FyY2gvcHBjL21tL3RsYi5jCkBAIC00Miw3ICs0Miw3IEBACiAKIAlpZiAoSGFzaCAhPSAwKSB7CiAJCXB0ZXBoeXMgPSBfX3BhKHB0ZXApICYgUEFHRV9NQVNLOwotCQlmbHVzaF9oYXNoX3BhZ2VzKG1tLT5jb250ZXh0LCBhZGRyLCBwdGVwaHlzLCAxKTsKKwkJZmx1c2hfaGFzaF9wYWdlcyhtbS0+Y29udGV4dC5pZCwgYWRkciwgcHRlcGh5cywgMSk7CiAJfQogfQogCkBAIC0xMDIsNyArMTAyLDcgQEAKIAlwbWRfdCAqcG1kOwogCXVuc2lnbmVkIGxvbmcgcG1kX2VuZDsKIAlpbnQgY291bnQ7Ci0JdW5zaWduZWQgaW50IGN0eCA9IG1tLT5jb250ZXh0OworCXVuc2lnbmVkIGludCBjdHggPSBtbS0+Y29udGV4dC5pZDsKIAogCWlmIChIYXNoID09IDApIHsKIAkJX3RsYmlhKCk7CkBAIC0xNjYsNyArMTY2LDcgQEAKIAltbSA9ICh2bWFkZHIgPCBUQVNLX1NJWkUpPyB2bWEtPnZtX21tOiAmaW5pdF9tbTsKIAlwbWQgPSBwbWRfb2Zmc2V0KHBnZF9vZmZzZXQobW0sIHZtYWRkciksIHZtYWRkcik7CiAJaWYgKCFwbWRfbm9uZSgqcG1kKSkKLQkJZmx1c2hfaGFzaF9wYWdlcyhtbS0+Y29udGV4dCwgdm1hZGRyLCBwbWRfdmFsKCpwbWQpLCAxKTsKKwkJZmx1c2hfaGFzaF9wYWdlcyhtbS0+Y29udGV4dC5pZCwgdm1hZGRyLCBwbWRfdmFsKCpwbWQpLCAxKTsKIAlGSU5JU0hfRkxVU0g7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvS2NvbmZpZyBiL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvS2NvbmZpZwppbmRleCAxNzRkZGJjLi4yOTNiZDQ4IDEwMDY0NAotLS0gYS9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L0tjb25maWcKKysrIGIvYXJjaC9wcGMvcGxhdGZvcm1zLzR4eC9LY29uZmlnCkBAIC0xODMsNyArMTgzLDcgQEAKIAogY29uZmlnIEJJT1NfRklYVVAKIAlib29sCi0JZGVwZW5kcyBvbiBCVUJJTkdBIHx8IEVQNDA1IHx8IFNZQ0FNT1JFIHx8IFdBTE5VVAorCWRlcGVuZHMgb24gQlVCSU5HQSB8fCBFUDQwNSB8fCBTWUNBTU9SRSB8fCBXQUxOVVQgfHwgQ1BDSTQwNQogCWRlZmF1bHQgeQogCiAjIE9BSyBkb2Vzbid0IGV4aXN0IGJ1dCB3YW50ZWQgdG8ga2VlcCB0aGlzIGFyb3VuZCBmb3IgYW55IGZ1dHVyZSA0MDNHQ1ggYm9hcmRzCmRpZmYgLS1naXQgYS9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L2NwY2k0MDUuYyBiL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5jCmluZGV4IDY1NzFlMzkuLjk3MGI2OTggMTAwNjQ0Ci0tLSBhL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5jCisrKyBiL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5jCkBAIC0xLDEwICsxLDEyIEBACiAvKgogICogQm9hcmQgc2V0dXAgcm91dGluZXMgZm9yIHRoZSBlc2QgQ1BDSS00MDUgY1BDSSBCb2FyZC4KICAqCi0gKiBBdXRob3I6IFN0ZWZhbiBSb2VzZQotICogICAgICAgICBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQorICogQ29weXJpZ2h0IDIwMDEtMjAwNiBlc2QgZWxlY3Ryb25pYyBzeXN0ZW0gZGVzaWduIC0gaGFubm92ZXIgZ2VybWFueQogICoKLSAqIENvcHlyaWdodCAyMDAxIGVzZCBlbGVjdHJvbmljIHN5c3RlbSBkZXNpZ24gLSBoYW5ub3ZlciBnZXJtYW55CisgKiBBdXRob3JzOiBNYXR0aGlhcyBGdWNocworICogICAgICAgICAgbWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbQorICogICAgICAgICAgU3RlZmFuIFJvZXNlCisgKiAgICAgICAgICBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAogICogdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCkBAIC0yMCw5ICsyMiwxNyBAQAogI2luY2x1ZGUgPGFzbS9wY2ktYnJpZGdlLmg+CiAjaW5jbHVkZSA8YXNtL21hY2hkZXAuaD4KICNpbmNsdWRlIDxhc20vdG9kYy5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcmlhbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3JlLmg+CiAjaW5jbHVkZSA8YXNtL29jcC5oPgorI2luY2x1ZGUgPGFzbS9pYm1fb2NwX3BjaS5oPgorI2luY2x1ZGUgPHBsYXRmb3Jtcy80eHgvaWJtNDA1Z3AuaD4KIAorI2lmZGVmIENPTkZJR19HRU5fUlRDCiB2b2lkICpjcGNpNDA1X252cmFtOworI2VuZGlmCisKK2V4dGVybiBiZF90IF9fcmVzOwogCiAvKgogICogU29tZSBJUlFzIHVuaXF1ZSB0byBDUENJLTQwNS4KQEAgLTM2LDE4ICs0Niw2OSBAQAogCSAqICAgICAgQSAgICAgICBCICAgICAgIEMgICAgICAgRAogCSAqLwogCXsKLQkJezI4LAkyOCwJMjgsCTI4fSwJLyogSURTRUwgMTUgLSBjUENJIHNsb3QgOCAqLwotCQl7MjksCTI5LAkyOSwJMjl9LAkvKiBJRFNFTCAxNiAtIGNQQ0kgc2xvdCA3ICovCi0JCXszMCwJMzAsCTMwLAkzMH0sCS8qIElEU0VMIDE3IC0gY1BDSSBzbG90IDYgKi8KLQkJezI3LAkyNywJMjcsCTI3fSwJLyogSURTRUwgMTggLSBjUENJIHNsb3QgNSAqLwotCQl7MjgsCTI4LAkyOCwJMjh9LAkvKiBJRFNFTCAxOSAtIGNQQ0kgc2xvdCA0ICovCi0JCXsyOSwJMjksCTI5LAkyOX0sCS8qIElEU0VMIDIwIC0gY1BDSSBzbG90IDMgKi8KLQkJezMwLAkzMCwJMzAsCTMwfSwJLyogSURTRUwgMjEgLSBjUENJIHNsb3QgMiAqLworCQl7MjgsCTI5LAkzMCwJMjd9LAkvKiBJRFNFTCAxNSAtIGNQQ0kgc2xvdCA4ICovCisJCXsyOSwJMzAsCTI3LAkyOH0sCS8qIElEU0VMIDE2IC0gY1BDSSBzbG90IDcgKi8KKwkJezMwLAkyNywJMjgsCTI5fSwJLyogSURTRUwgMTcgLSBjUENJIHNsb3QgNiAqLworCQl7MjcsCTI4LAkyOSwJMzB9LAkvKiBJRFNFTCAxOCAtIGNQQ0kgc2xvdCA1ICovCisJCXsyOCwJMjksCTMwLAkyN30sCS8qIElEU0VMIDE5IC0gY1BDSSBzbG90IDQgKi8KKwkJezI5LAkzMCwJMjcsCTI4fSwJLyogSURTRUwgMjAgLSBjUENJIHNsb3QgMyAqLworCQl7MzAsCTI3LAkyOCwJMjl9LAkvKiBJRFNFTCAyMSAtIGNQQ0kgc2xvdCAyICovCiAgICAgICAgIH07CiAJY29uc3QgbG9uZyBtaW5faWRzZWwgPSAxNSwgbWF4X2lkc2VsID0gMjEsIGlycXNfcGVyX3Nsb3QgPSA0OwogCXJldHVybiBQQ0lfSVJRX1RBQkxFX0xPT0tVUDsKIH07CiAKKy8qIFRoZSBzZXJpYWwgY2xvY2sgZm9yIHRoZSBjaGlwIGlzIGFuIGludGVybmFsIGNsb2NrIGRldGVybWluZWQgYnkKKyAqIGRpZmZlcmVudCBjbG9jayBzcGVlZHMvZGl2aWRlcnMuCisgKiBDYWxjdWxhdGUgdGhlIHByb3BlciBpbnB1dCBiYXVkIHJhdGUgYW5kIHNldHVwIHRoZSBzZXJpYWwgZHJpdmVyLgorICovCitzdGF0aWMgdm9pZCBfX2luaXQKK2NwY2k0MDVfZWFybHlfc2VyaWFsX21hcCh2b2lkKQoreworCXUzMiB1YXJ0X2RpdjsKKwlpbnQgdWFydF9jbG9jazsKKwlzdHJ1Y3QgdWFydF9wb3J0IHBvcnQ7CisKKyAgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgc2VyaWFsIGNsb2NrIGlucHV0IGZyZXF1ZW5jeQorICAgICAgICAgICoKKyAgICAgICAgICAqIFRoZSB1YXJ0IGNsb2NrIGlzIHRoZSBjcHUgZnJlcXVlbmN5IChwcm92aWRlZCBpbiB0aGUgYm9hcmQgaW5mbworICAgICAgICAgICogc3RydWN0dXJlKSBkaXZpZGVkIGJ5IHRoZSBleHRlcm5hbCBVQVJUIERpdmlzb3IuCisgICAgICAgICAgKi8KKwl1YXJ0X2RpdiA9ICgobWZkY3IoRENSTl9DSENSX0JBU0UpICYgQ0hSMF9VRElWKSA+PiAxKSArIDE7CisJdWFydF9jbG9jayA9IF9fcmVzLmJpX3Byb2NmcmVxIC8gdWFydF9kaXY7CisKKwkvKiBTZXR1cCBzZXJpYWwgcG9ydCBhY2Nlc3MgKi8KKwltZW1zZXQoJnBvcnQsIDAsIHNpemVvZihwb3J0KSk7CisjaWYgZGVmaW5lZChDT05GSUdfVUFSVDBfVFRZUzApCisJcG9ydC5tZW1iYXNlID0gKHZvaWQqKVVBUlQwX0lPX0JBU0U7CisJcG9ydC5pcnEgPSBVQVJUMF9JTlQ7CisjZWxzZQorCXBvcnQubWVtYmFzZSA9ICh2b2lkKilVQVJUMV9JT19CQVNFOworCXBvcnQuaXJxID0gVUFSVDFfSU5UOworI2VuZGlmCisJcG9ydC51YXJ0Y2xrID0gdWFydF9jbG9jazsKKwlwb3J0LnJlZ3NoaWZ0ID0gMDsKKwlwb3J0LmlvdHlwZSA9IFVQSU9fTUVNOworCXBvcnQuZmxhZ3MgPSBVUEZfQk9PVF9BVVRPQ09ORiB8IFVQRl9TS0lQX1RFU1Q7CisJcG9ydC5saW5lID0gMDsKKworCWlmIChlYXJseV9zZXJpYWxfc2V0dXAoJnBvcnQpICE9IDApIHsKKwkJcHJpbnRrKCJFYXJseSBzZXJpYWwgaW5pdCBvZiBwb3J0IDAgZmFpbGVkXG4iKTsKKwl9CisjaWYgZGVmaW5lZChDT05GSUdfVUFSVDBfVFRZUzApCisJcG9ydC5tZW1iYXNlID0gKHZvaWQqKVVBUlQxX0lPX0JBU0U7CisJcG9ydC5pcnEgPSBVQVJUMV9JTlQ7CisjZWxzZQorCXBvcnQubWVtYmFzZSA9ICh2b2lkKilVQVJUMF9JT19CQVNFOworCXBvcnQuaXJxID0gVUFSVDBfSU5UOworI2VuZGlmCisJcG9ydC5saW5lID0gMTsKKworCWlmIChlYXJseV9zZXJpYWxfc2V0dXAoJnBvcnQpICE9IDApIHsKKwkJcHJpbnRrKCJFYXJseSBzZXJpYWwgaW5pdCBvZiBwb3J0IDEgZmFpbGVkXG4iKTsKKwl9Cit9CisKIHZvaWQgX19pbml0CiBjcGNpNDA1X3NldHVwX2FyY2godm9pZCkKIHsKQEAgLTU1LDE0ICsxMTYsNjggQEAKIAogCWlibV9vY3Bfc2V0X2VtYWMoMCwgMCk7CiAKLQlUT0RDX0lOSVQoVE9EQ19UWVBFX01LNDhUMzUsIGNwY2k0MDVfbnZyYW0sIGNwY2k0MDVfbnZyYW0sIGNwY2k0MDVfbnZyYW0sIDgpOworICAgICAgICBjcGNpNDA1X2Vhcmx5X3NlcmlhbF9tYXAoKTsKKworI2lmZGVmIENPTkZJR19HRU5fUlRDCisJVE9EQ19JTklUKFRPRENfVFlQRV9NSzQ4VDM1LAorCQkgIGNwY2k0MDVfbnZyYW0sIGNwY2k0MDVfbnZyYW0sIGNwY2k0MDVfbnZyYW0sIDgpOworI2VuZGlmCit9CisKK3ZvaWQgX19pbml0CitiaW9zX2ZpeHVwKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgc3RydWN0IHBjaWwwX3JlZ3MgKnBjaXApCit7CisJdW5zaWduZWQgaW50IGJhcl9yZXNwb25zZSwgYmFyOworCisJLyogRGlzYWJsZSByZWdpb24gZmlyc3QgKi8KKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnBtbVswXS5tYSksIDB4MDAwMDAwMDApOworCS8qIFBMQiBzdGFydGluZyBhZGRyLCBQQ0k6IDB4ODAwMDAwMDAgKi8KKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnBtbVswXS5sYSksIDB4ODAwMDAwMDApOworCS8qIFBDSSBzdGFydCBhZGRyLCAweDgwMDAwMDAwICovCisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMF0ucGNpbGEpLCBQUEM0MDVfUENJX01FTV9CQVNFKTsKKwkvKiA1MTJNQiByYW5nZSBvZiBQTEIgdG8gUENJICovCisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMF0ucGNpaGEpLCAweDAwMDAwMDAwKTsKKwkvKiBFbmFibGUgbm8gcHJlLWZldGNoLCBlbmFibGUgcmVnaW9uICovCisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMF0ubWEpLCAoKDB4ZmZmZmZmZmYgLQorCQkJCQkJKFBQQzQwNV9QQ0lfVVBQRVJfTUVNIC0KKwkJCQkJCSBQUEM0MDVfUENJX01FTV9CQVNFKSkgfCAweDAxKSk7CisKKwkvKiBEaXNhYmxlIHJlZ2lvbiBvbmUgKi8KKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnBtbVsxXS5tYSksIDB4MDAwMDAwMDApOworCW91dF9sZTMyKCh2b2lkICopICYocGNpcC0+cG1tWzFdLmxhKSwgMHgwMDAwMDAwMCk7CisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMV0ucGNpbGEpLCAweDAwMDAwMDAwKTsKKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnBtbVsxXS5wY2loYSksIDB4MDAwMDAwMDApOworCW91dF9sZTMyKCh2b2lkICopICYocGNpcC0+cG1tWzFdLm1hKSwgMHgwMDAwMDAwMCk7CisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wdG0xbXMpLCAweDAwMDAwMDAxKTsKKworCS8qIERpc2FibGUgcmVnaW9uIHR3byAqLworCW91dF9sZTMyKCh2b2lkICopICYocGNpcC0+cG1tWzJdLm1hKSwgMHgwMDAwMDAwMCk7CisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMl0ubGEpLCAweDAwMDAwMDAwKTsKKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnBtbVsyXS5wY2lsYSksIDB4MDAwMDAwMDApOworCW91dF9sZTMyKCh2b2lkICopICYocGNpcC0+cG1tWzJdLnBjaWhhKSwgMHgwMDAwMDAwMCk7CisJb3V0X2xlMzIoKHZvaWQgKikgJihwY2lwLT5wbW1bMl0ubWEpLCAweDAwMDAwMDAwKTsKKwlvdXRfbGUzMigodm9pZCAqKSAmKHBjaXAtPnB0bTJtcyksIDB4MDAwMDAwMDApOworCW91dF9sZTMyKCh2b2lkICopICYocGNpcC0+cHRtMmxhKSwgMHgwMDAwMDAwMCk7CisKKwkvKiBaZXJvIGNvbmZpZyBiYXJzICovCisJZm9yIChiYXIgPSBQQ0lfQkFTRV9BRERSRVNTXzE7IGJhciA8PSBQQ0lfQkFTRV9BRERSRVNTXzI7IGJhciArPSA0KSB7CisJCWVhcmx5X3dyaXRlX2NvbmZpZ19kd29yZChob3NlLCBob3NlLT5maXJzdF9idXNubywKKwkJCQkJIFBDSV9GVU5DKGhvc2UtPmZpcnN0X2J1c25vKSwgYmFyLAorCQkJCQkgMHgwMDAwMDAwMCk7CisJCWVhcmx5X3JlYWRfY29uZmlnX2R3b3JkKGhvc2UsIGhvc2UtPmZpcnN0X2J1c25vLAorCQkJCQlQQ0lfRlVOQyhob3NlLT5maXJzdF9idXNubyksIGJhciwKKwkJCQkJJmJhcl9yZXNwb25zZSk7CisJfQogfQogCiB2b2lkIF9faW5pdAogY3BjaTQwNV9tYXBfaW8odm9pZCkKIHsKIAlwcGM0eHhfbWFwX2lvKCk7CisKKyNpZmRlZiBDT05GSUdfR0VOX1JUQwogCWNwY2k0MDVfbnZyYW0gPSBpb3JlbWFwKENQQ0k0MDVfTlZSQU1fUEFERFIsIENQQ0k0MDVfTlZSQU1fU0laRSk7CisjZW5kaWYKIH0KIAogdm9pZCBfX2luaXQKQEAgLTc0LDkgKzE4OSwxMSBAQAogCXBwY19tZC5zZXR1cF9hcmNoID0gY3BjaTQwNV9zZXR1cF9hcmNoOwogCXBwY19tZC5zZXR1cF9pb19tYXBwaW5ncyA9IGNwY2k0MDVfbWFwX2lvOwogCisjaWZkZWYgQ09ORklHX0dFTl9SVEMKIAlwcGNfbWQudGltZV9pbml0ID0gdG9kY190aW1lX2luaXQ7CiAJcHBjX21kLnNldF9ydGNfdGltZSA9IHRvZGNfc2V0X3J0Y190aW1lOwogCXBwY19tZC5nZXRfcnRjX3RpbWUgPSB0b2RjX2dldF9ydGNfdGltZTsKIAlwcGNfbWQubnZyYW1fcmVhZF92YWwgPSB0b2RjX2RpcmVjdF9yZWFkX3ZhbDsKIAlwcGNfbWQubnZyYW1fd3JpdGVfdmFsID0gdG9kY19kaXJlY3Rfd3JpdGVfdmFsOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9hcmNoL3BwYy9wbGF0Zm9ybXMvNHh4L2NwY2k0MDUuaCBiL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5oCmluZGV4IGUyN2Y3Y2IuLmY1YTVjMGMgMTAwNjQ0Ci0tLSBhL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5oCisrKyBiL2FyY2gvcHBjL3BsYXRmb3Jtcy80eHgvY3BjaTQwNS5oCkBAIC0xLDM3ICsxLDI5IEBACiAvKgogICogQ1BDSS00MDUgYm9hcmQgc3BlY2lmaWMgZGVmaW5pdGlvbnMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEgU3RlZmFuIFJvZXNlIChzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbSkKKyAqIENvcHlyaWdodCAyMDAxLTIwMDYgZXNkIGVsZWN0cm9uaWMgc3lzdGVtIGRlc2lnbiAtIGhhbm5vdmVyIGdlcm1hbnkKKyAqCisgKiBBdXRob3JzOiBNYXR0aGlhcyBGdWNocworICogICAgICAgICAgbWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbQorICogICAgICAgICAgU3RlZmFuIFJvZXNlCisgKiAgICAgICAgICBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQogICovCiAKICNpZmRlZiBfX0tFUk5FTF9fCi0jaWZuZGVmIF9fQVNNX0NQQ0k0MDVfSF9fCi0jZGVmaW5lIF9fQVNNX0NQQ0k0MDVfSF9fCisjaWZuZGVmIF9fQ1BDSTQwNV9IX18KKyNkZWZpbmUgX19DUENJNDA1X0hfXwogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+Ci0KLS8qIFdlIGhhdmUgYSA0MDVHUCBjb3JlICovCiAjaW5jbHVkZSA8cGxhdGZvcm1zLzR4eC9pYm00MDVncC5oPgotCiAjaW5jbHVkZSA8YXNtL3BwY2Jvb3QuaD4KIAotI2lmbmRlZiBfX0FTU0VNQkxZX18KLS8qIFNvbWUgNHh4IHBhcnRzIHVzZSBhIGRpZmZlcmVudCB0aW1lYmFzZSBmcmVxdWVuY3kgZnJvbSB0aGUgaW50ZXJuYWwgY2xvY2suCi0qLwotI2RlZmluZSBiaV90YmZyZXEgYmlfaW50ZnJlcQotCiAvKiBNYXAgZm9yIHRoZSBOVlJBTSBzcGFjZSAqLwogI2RlZmluZSBDUENJNDA1X05WUkFNX1BBRERSCSgodWludCkweGYwMjAwMDAwKQogI2RlZmluZSBDUENJNDA1X05WUkFNX1NJWkUJKCh1aW50KTMyKjEwMjQpCiAKLSNpZmRlZiBDT05GSUdfUFBDNDA1R1BfSU5URVJOQUxfQ0xPQ0sKLSNkZWZpbmUgQkFTRV9CQVVECQkyMDE2MDAKLSNlbHNlCi0jZGVmaW5lIEJBU0VfQkFVRAkJNjkxMjAwCi0jZW5kaWYKKyNkZWZpbmUgQkFTRV9CQVVECQkwCiAKLSNkZWZpbmUgUFBDNHh4X01BQ0hJTkVfTkFNRSAiZXNkIENQQ0ktNDA1IgorI2RlZmluZSBQUEM0eHhfTUFDSElORV9OQU1FICAgICAiZXNkIENQQ0ktNDA1IgogCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwotI2VuZGlmCS8qIF9fQVNNX0NQQ0k0MDVfSF9fICovCisjZW5kaWYJLyogX19DUENJNDA1X0hfXyAqLwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gvcHBjL3BsYXRmb3Jtcy84NXh4L21wYzg1eHhfY2RzX2NvbW1vbi5jIGIvYXJjaC9wcGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9jZHNfY29tbW9uLmMKaW5kZXggYzllMGFlZS4uNDM2OGRjMyAxMDA2NDQKLS0tIGEvYXJjaC9wcGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9jZHNfY29tbW9uLmMKKysrIGIvYXJjaC9wcGMvcGxhdGZvcm1zLzg1eHgvbXBjODV4eF9jZHNfY29tbW9uLmMKQEAgLTM3OSwxMyArMzc5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0RFVklDRV9JRF9WSUFfODJDNTg2XzIsIE5VTEwpKSkgewogICAgICAgICAgICAgICAgIGRldi0+aXJxID0gMTA7CiAgICAgICAgICAgICAgICAgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0lOVEVSUlVQVF9MSU5FLCAxMCk7Ci0JCXBjaV9kZXZfcHV0KGRldik7Ci0gICAgICAgIH0KIAotCWlmICgoZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9WSUEsCisJCWlmICgoZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9WSUEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0RFVklDRV9JRF9WSUFfODJDNTg2XzIsIGRldikpKSB7Ci0gICAgICAgICAgICAgICAgZGV2LT5pcnEgPSAxMTsKLSAgICAgICAgICAgICAgICBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBQQ0lfSU5URVJSVVBUX0xJTkUsIDExKTsKKwkgICAgICAgICAgICAgICAgZGV2LT5pcnEgPSAxMTsKKwkgICAgICAgICAgICAgICAgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0lOVEVSUlVQVF9MSU5FLCAxMSk7CisJCX0KIAkJcGNpX2Rldl9wdXQoZGV2KTsKICAgICAgICAgfQogfQpkaWZmIC0tZ2l0IGEvYXJjaC9wcGMvc3lzbGliL21wYzgzeHhfZGV2aWNlcy5jIGIvYXJjaC9wcGMvc3lzbGliL21wYzgzeHhfZGV2aWNlcy5jCmluZGV4IDFhZjJjMDAuLjVjNDkzMmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcHBjL3N5c2xpYi9tcGM4M3h4X2RldmljZXMuYworKysgYi9hcmNoL3BwYy9zeXNsaWIvbXBjODN4eF9kZXZpY2VzLmMKQEAgLTE4Niw3ICsxODYsNyBAQAogCQl9LAogCX0sCiAJW01QQzgzeHhfVVNCMl9EUl0gPSB7Ci0JCS5uYW1lID0gImZzbC11c2IyLWRyIiwKKwkJLm5hbWUgPSAiZnNsLWVoY2kiLAogCQkuaWQJPSAxLAogCQkubnVtX3Jlc291cmNlcwkgPSAyLAogCQkucmVzb3VyY2UgPSAoc3RydWN0IHJlc291cmNlW10pIHsKQEAgLTIwMyw4ICsyMDMsOCBAQAogCQl9LAogCX0sCiAJW01QQzgzeHhfVVNCMl9NUEhdID0gewotCQkubmFtZSA9ICJmc2wtdXNiMi1tcGgiLAotCQkuaWQJPSAxLAorCQkubmFtZSA9ICJmc2wtZWhjaSIsCisJCS5pZAk9IDIsCiAJCS5udW1fcmVzb3VyY2VzCSA9IDIsCiAJCS5yZXNvdXJjZSA9IChzdHJ1Y3QgcmVzb3VyY2VbXSkgewogCQkJewpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL0tjb25maWcgYi9hcmNoL3MzOTAvS2NvbmZpZwppbmRleCAwMWM1YzA4Li44MjFhMTQxIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvS2NvbmZpZworKysgYi9hcmNoL3MzOTAvS2NvbmZpZwpAQCAtNDQ2LDYgKzQ0NiwxNCBAQAogCSAgVGhlIEhaIHRpbWVyIGlzIHN3aXRjaGVkIG9mZiBpbiBpZGxlIGJ5IGRlZmF1bHQuIFRoYXQgbWVhbnMgdGhlCiAJICBIWiB0aW1lciBpcyBhbHJlYWR5IGRpc2FibGVkIGF0IGJvb3QgdGltZS4KIAorY29uZmlnIFMzOTBfSFlQRlNfRlMKKwlib29sICJzMzkwIGh5cGVydmlzb3IgZmlsZSBzeXN0ZW0gc3VwcG9ydCIKKwlzZWxlY3QgU1lTX0hZUEVSVklTT1IKKwlkZWZhdWx0IHkKKwloZWxwCisJICBUaGlzIGlzIGEgdmlydHVhbCBmaWxlIHN5c3RlbSBpbnRlbmRlZCB0byBwcm92aWRlIGFjY291bnRpbmcKKwkgIGluZm9ybWF0aW9uIGluIGFuIHMzOTAgaHlwZXJ2aXNvciBlbnZpcm9ubWVudC4KKwogY29uZmlnIEtFWEVDCiAJYm9vbCAia2V4ZWMgc3lzdGVtIGNhbGwgKEVYUEVSSU1FTlRBTCkiCiAJZGVwZW5kcyBvbiBFWFBFUklNRU5UQUwKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9NYWtlZmlsZSBiL2FyY2gvczM5MC9NYWtlZmlsZQppbmRleCA3YmIxNmZiLi5iMzc5MWZiIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvTWFrZWZpbGUKKysrIGIvYXJjaC9zMzkwL01ha2VmaWxlCkBAIC03Niw3ICs3Niw3IEBACiBoZWFkLXkJCTo9IGFyY2gvJChBUkNIKS9rZXJuZWwvaGVhZC5vIGFyY2gvJChBUkNIKS9rZXJuZWwvaW5pdF90YXNrLm8KIAogY29yZS15CQkrPSBhcmNoLyQoQVJDSCkvbW0vIGFyY2gvJChBUkNIKS9rZXJuZWwvIGFyY2gvJChBUkNIKS9jcnlwdG8vIFwKLQkJICAgYXJjaC8kKEFSQ0gpL2FwcGxkYXRhLworCQkgICBhcmNoLyQoQVJDSCkvYXBwbGRhdGEvIGFyY2gvJChBUkNIKS9oeXBmcy8KIGxpYnMteQkJKz0gYXJjaC8kKEFSQ0gpL2xpYi8KIGRyaXZlcnMteQkrPSBkcml2ZXJzL3MzOTAvCiBkcml2ZXJzLSQoQ09ORklHX01BVEhFTVUpICs9IGFyY2gvJChBUkNIKS9tYXRoLWVtdS8KZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9oeXBmcy9NYWtlZmlsZSBiL2FyY2gvczM5MC9oeXBmcy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGIwMGNkCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9zMzkwL2h5cGZzL01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAorIworIyBNYWtlZmlsZSBmb3IgdGhlIGxpbnV4IGh5cGZzIGZpbGVzeXN0ZW0gcm91dGluZXMuCisjCisKK29iai0kKENPTkZJR19TMzkwX0hZUEZTX0ZTKSArPSBzMzkwX2h5cGZzLm8KKworczM5MF9oeXBmcy1vYmpzIDo9IGlub2RlLm8gaHlwZnNfZGlhZy5vCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaHlwZnMvaHlwZnMuaCBiL2FyY2gvczM5MC9oeXBmcy9oeXBmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNTU2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3MzOTAvaHlwZnMvaHlwZnMuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogIGZzL2h5cGZzL2h5cGZzLmgKKyAqICAgIEh5cGVydmlzb3IgZmlsZXN5c3RlbSBmb3IgTGludXggb24gczM5MC4KKyAqCisgKiAgICBDb3B5cmlnaHQgKEMpIElCTSBDb3JwLiAyMDA2CisgKiAgICBBdXRob3Iocyk6IE1pY2hhZWwgSG9semhldSA8aG9semhldUBkZS5pYm0uY29tPgorICovCisKKyNpZm5kZWYgX0hZUEZTX0hfCisjZGVmaW5lIF9IWVBGU19IXworCisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFJFR19GSUxFX01PREUgICAgMDQ0MAorI2RlZmluZSBVUERBVEVfRklMRV9NT0RFIDAyMjAKKyNkZWZpbmUgRElSX01PREUgICAgICAgICAwNTUwCisKK2V4dGVybiBzdHJ1Y3QgZGVudHJ5ICpoeXBmc19ta2RpcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCisJCQkJICBjb25zdCBjaGFyICpuYW1lKTsKKworZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmh5cGZzX2NyZWF0ZV91NjQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKKwkJCQkgICAgICAgc3RydWN0IGRlbnRyeSAqZGlyLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgICBfX3U2NCB2YWx1ZSk7CisKK2V4dGVybiBzdHJ1Y3QgZGVudHJ5ICpoeXBmc19jcmVhdGVfc3RyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCisJCQkJICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgICAgY2hhciAqc3RyaW5nKTsKKworI2VuZGlmIC8qIF9IWVBGU19IXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2h5cGZzL2h5cGZzX2RpYWcuYyBiL2FyY2gvczM5MC9oeXBmcy9oeXBmc19kaWFnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhNzRhZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvczM5MC9oeXBmcy9oeXBmc19kaWFnLmMKQEAgLTAsMCArMSw2OTYgQEAKKy8qCisgKiAgZnMvaHlwZnMvaHlwZnNfZGlhZy5jCisgKiAgICBIeXBlcnZpc29yIGZpbGVzeXN0ZW0gZm9yIExpbnV4IG9uIHMzOTAuIERpYWcgMjA0IGFuZCAyMjQKKyAqICAgIGltcGxlbWVudGF0aW9uLgorICoKKyAqICAgIENvcHlyaWdodCAoQykgSUJNIENvcnAuIDIwMDYKKyAqICAgIEF1dGhvcihzKTogTWljaGFlbCBIb2x6aGV1IDxob2x6aGV1QGRlLmlibS5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8YXNtL2ViY2RpYy5oPgorI2luY2x1ZGUgImh5cGZzLmgiCisKKyNkZWZpbmUgTFBBUl9OQU1FX0xFTiA4CQkvKiBscGFyIG5hbWUgbGVuIGluIGRpYWcgMjA0IGRhdGEgKi8KKyNkZWZpbmUgQ1BVX05BTUVfTEVOIDE2CQkvKiB0eXBlIG5hbWUgbGVuIG9mIGNwdXMgaW4gZGlhZzIyNCBuYW1lIHRhYmxlICovCisjZGVmaW5lIFRNUF9TSVpFIDY0CQkvKiBzaXplIG9mIHRlbXBvcmFyeSBidWZmZXJzICovCisKKy8qIGRpYWcgMjA0IHN1YmNvZGVzICovCitlbnVtIGRpYWcyMDRfc2MgeworCVNVQkNfU1RJQjQgPSA0LAorCVNVQkNfUlNJID0gNSwKKwlTVUJDX1NUSUI2ID0gNiwKKwlTVUJDX1NUSUI3ID0gNworfTsKKworLyogVGhlIHR3byBhdmFpbGFibGUgZGlhZyAyMDQgZGF0YSBmb3JtYXRzICovCitlbnVtIGRpYWcyMDRfZm9ybWF0IHsKKwlJTkZPX1NJTVBMRSA9IDAsCisJSU5GT19FWFQgPSAweDAwMDEwMDAwCit9OworCisvKiBiaXQgaXMgc2V0IGluIGZsYWdzLCB3aGVuIHBoeXNpY2FsIGNwdSBpbmZvIGlzIGluY2x1ZGVkIGluIGRpYWcgMjA0IGRhdGEgKi8KKyNkZWZpbmUgTFBBUl9QSFlTX0ZMRyAgMHg4MAorCitzdGF0aWMgY2hhciAqZGlhZzIyNF9jcHVfbmFtZXM7CQkJLyogZGlhZyAyMjQgbmFtZSB0YWJsZSAqLworc3RhdGljIGVudW0gZGlhZzIwNF9zYyBkaWFnMjA0X3N0b3JlX3NjOwkvKiB1c2VkIHN1YmNvZGUgZm9yIHN0b3JlICovCitzdGF0aWMgZW51bSBkaWFnMjA0X2Zvcm1hdCBkaWFnMjA0X2luZm9fdHlwZTsJLyogdXNlZCBkaWFnIDIwNCBkYXRhIGZvcm1hdCAqLworCitzdGF0aWMgdm9pZCAqZGlhZzIwNF9idWY7CQkvKiA0SyBhbGlnbmVkIGJ1ZmZlciBmb3IgZGlhZzIwNCBkYXRhICovCitzdGF0aWMgdm9pZCAqZGlhZzIwNF9idWZfdm1hbGxvYzsJLyogdm1hbGxvYyBwb2ludGVyIGZvciBkaWFnMjA0IGRhdGEgKi8KK3N0YXRpYyBpbnQgZGlhZzIwNF9idWZfcGFnZXM7CQkvKiBudW1iZXIgb2YgcGFnZXMgZm9yIGRpYWcyMDQgZGF0YSAqLworCisvKgorICogRElBRyAyMDQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBtZW1iZXIgYWNjZXNzIGZ1bmN0aW9ucy4KKyAqCisgKiBTaW5jZSB3ZSBoYXZlIHR3byBkaWZmZXJlbnQgZGlhZyAyMDQgZGF0YSBmb3JtYXRzIGZvciBvbGQgYW5kIG5ldyBzMzkwCisgKiBtYWNoaW5lcywgd2UgZG8gbm90IGFjY2VzcyB0aGUgc3RydWN0cyBkaXJlY3RseSwgYnV0IHVzZSBnZXR0ZXIgZnVuY3Rpb25zIGZvcgorICogZWFjaCBzdHJ1Y3QgbWVtYmVyIGluc3RlYWQuIFRoaXMgc2hvdWxkIG1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KKyAqLworCisvKiBUaW1lIGluZm9ybWF0aW9uIGJsb2NrICovCisKK3N0cnVjdCBpbmZvX2Jsa19oZHIgeworCV9fdTggIG5wYXI7CisJX191OCAgZmxhZ3M7CisJX191MTYgdHNsaWNlOworCV9fdTE2IHBoeXNfY3B1czsKKwlfX3UxNiB0aGlzX3BhcnQ7CisJX191NjQgY3VydG9kOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCB4X2luZm9fYmxrX2hkciB7CisJX191OCAgbnBhcjsKKwlfX3U4ICBmbGFnczsKKwlfX3UxNiB0c2xpY2U7CisJX191MTYgcGh5c19jcHVzOworCV9fdTE2IHRoaXNfcGFydDsKKwlfX3U2NCBjdXJ0b2QxOworCV9fdTY0IGN1cnRvZDI7CisJY2hhciByZXNlcnZlZFs0MF07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RhdGljIGlubGluZSBpbnQgaW5mb19ibGtfaGRyX19zaXplKGVudW0gZGlhZzIwNF9mb3JtYXQgdHlwZSkKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuIHNpemVvZihzdHJ1Y3QgaW5mb19ibGtfaGRyKTsKKwllbHNlIC8qIElORk9fRVhUICovCisJCXJldHVybiBzaXplb2Yoc3RydWN0IHhfaW5mb19ibGtfaGRyKTsKK30KKworc3RhdGljIGlubGluZSBfX3U4IGluZm9fYmxrX2hkcl9fbnBhcihlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGluZm9fYmxrX2hkciAqKWhkciktPm5wYXI7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gKChzdHJ1Y3QgeF9pbmZvX2Jsa19oZHIgKiloZHIpLT5ucGFyOworfQorCitzdGF0aWMgaW5saW5lIF9fdTggaW5mb19ibGtfaGRyX19mbGFncyhlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGluZm9fYmxrX2hkciAqKWhkciktPmZsYWdzOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfaW5mb19ibGtfaGRyICopaGRyKS0+ZmxhZ3M7Cit9CisKK3N0YXRpYyBpbmxpbmUgX191MTYgaW5mb19ibGtfaGRyX19wY3B1cyhlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGluZm9fYmxrX2hkciAqKWhkciktPnBoeXNfY3B1czsKKwllbHNlIC8qIElORk9fRVhUICovCisJCXJldHVybiAoKHN0cnVjdCB4X2luZm9fYmxrX2hkciAqKWhkciktPnBoeXNfY3B1czsKK30KKworLyogUGFydGl0aW9uIGhlYWRlciAqLworCitzdHJ1Y3QgcGFydF9oZHIgeworCV9fdTggcG47CisJX191OCBjcHVzOworCWNoYXIgcmVzZXJ2ZWRbNl07CisJY2hhciBwYXJ0X25hbWVbTFBBUl9OQU1FX0xFTl07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RydWN0IHhfcGFydF9oZHIgeworCV9fdTggIHBuOworCV9fdTggIGNwdXM7CisJX191OCAgcmNwdXM7CisJX191OCAgcGZsYWc7CisJX191MzIgbWx1OworCWNoYXIgIHBhcnRfbmFtZVtMUEFSX05BTUVfTEVOXTsKKwljaGFyICBscGNfbmFtZVs4XTsKKwljaGFyICBvc19uYW1lWzhdOworCV9fdTY0IG9ubGluZV9jczsKKwlfX3U2NCBvbmxpbmVfZXM7CisJX191OCAgdXBpZDsKKwljaGFyICByZXNlcnZlZDFbM107CisJX191MzIgZ3JvdXBfbWx1OworCWNoYXIgIGdyb3VwX25hbWVbOF07CisJY2hhciAgcmVzZXJ2ZWQyWzMyXTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdGF0aWMgaW5saW5lIGludCBwYXJ0X2hkcl9fc2l6ZShlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUpCit7CisJaWYgKHR5cGUgPT0gSU5GT19TSU1QTEUpCisJCXJldHVybiBzaXplb2Yoc3RydWN0IHBhcnRfaGRyKTsKKwllbHNlIC8qIElORk9fRVhUICovCisJCXJldHVybiBzaXplb2Yoc3RydWN0IHhfcGFydF9oZHIpOworfQorCitzdGF0aWMgaW5saW5lIF9fdTggcGFydF9oZHJfX3JjcHVzKGVudW0gZGlhZzIwNF9mb3JtYXQgdHlwZSwgdm9pZCAqaGRyKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gKChzdHJ1Y3QgcGFydF9oZHIgKiloZHIpLT5jcHVzOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfcGFydF9oZHIgKiloZHIpLT5yY3B1czsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBhcnRfaGRyX19wYXJ0X25hbWUoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlLCB2b2lkICpoZHIsCisJCQkJICAgICAgIGNoYXIgKm5hbWUpCit7CisJaWYgKHR5cGUgPT0gSU5GT19TSU1QTEUpCisJCW1lbWNweShuYW1lLCAoKHN0cnVjdCBwYXJ0X2hkciAqKWhkciktPnBhcnRfbmFtZSwKKwkJICAgICAgIExQQVJfTkFNRV9MRU4pOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJbWVtY3B5KG5hbWUsICgoc3RydWN0IHhfcGFydF9oZHIgKiloZHIpLT5wYXJ0X25hbWUsCisJCSAgICAgICBMUEFSX05BTUVfTEVOKTsKKwlFQkNBU0MobmFtZSwgTFBBUl9OQU1FX0xFTik7CisJbmFtZVtMUEFSX05BTUVfTEVOXSA9IDA7CisJc3Ryc3RyaXAobmFtZSk7Cit9CisKK3N0cnVjdCBjcHVfaW5mbyB7CisJX191MTYgY3B1X2FkZHI7CisJY2hhciAgcmVzZXJ2ZWQxWzJdOworCV9fdTggIGN0aWR4OworCV9fdTggIGNmbGFnOworCV9fdTE2IHdlaWdodDsKKwlfX3U2NCBhY2NfdGltZTsKKwlfX3U2NCBscF90aW1lOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCB4X2NwdV9pbmZvIHsKKwlfX3UxNiBjcHVfYWRkcjsKKwljaGFyICByZXNlcnZlZDFbMl07CisJX191OCAgY3RpZHg7CisJX191OCAgY2ZsYWc7CisJX191MTYgd2VpZ2h0OworCV9fdTY0IGFjY190aW1lOworCV9fdTY0IGxwX3RpbWU7CisJX191MTYgbWluX3dlaWdodDsKKwlfX3UxNiBjdXJfd2VpZ2h0OworCV9fdTE2IG1heF93ZWlnaHQ7CisJY2hhciAgcmVzZXZlZDJbMl07CisJX191NjQgb25saW5lX3RpbWU7CisJX191NjQgd2FpdF90aW1lOworCV9fdTMyIHBtYV93ZWlnaHQ7CisJX191MzIgcG9sYXJfd2VpZ2h0OworCWNoYXIgIHJlc2VydmVkM1s0MF07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworLyogQ1BVIGluZm8gYmxvY2sgKi8KKworc3RhdGljIGlubGluZSBpbnQgY3B1X2luZm9fX3NpemUoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBjcHVfaW5mbyk7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCB4X2NwdV9pbmZvKTsKK30KKworc3RhdGljIGlubGluZSBfX3U4IGNwdV9pbmZvX19jdGlkeChlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGNwdV9pbmZvICopaGRyKS0+Y3RpZHg7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gKChzdHJ1Y3QgeF9jcHVfaW5mbyAqKWhkciktPmN0aWR4OworfQorCitzdGF0aWMgaW5saW5lIF9fdTE2IGNwdV9pbmZvX19jcHVfYWRkcihlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGNwdV9pbmZvICopaGRyKS0+Y3B1X2FkZHI7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gKChzdHJ1Y3QgeF9jcHVfaW5mbyAqKWhkciktPmNwdV9hZGRyOworfQorCitzdGF0aWMgaW5saW5lIF9fdTY0IGNwdV9pbmZvX19hY2NfdGltZShlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuICgoc3RydWN0IGNwdV9pbmZvICopaGRyKS0+YWNjX3RpbWU7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gKChzdHJ1Y3QgeF9jcHVfaW5mbyAqKWhkciktPmFjY190aW1lOworfQorCitzdGF0aWMgaW5saW5lIF9fdTY0IGNwdV9pbmZvX19scF90aW1lKGVudW0gZGlhZzIwNF9mb3JtYXQgdHlwZSwgdm9pZCAqaGRyKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gKChzdHJ1Y3QgY3B1X2luZm8gKiloZHIpLT5scF90aW1lOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfY3B1X2luZm8gKiloZHIpLT5scF90aW1lOworfQorCitzdGF0aWMgaW5saW5lIF9fdTY0IGNwdV9pbmZvX19vbmxpbmVfdGltZShlbnVtIGRpYWcyMDRfZm9ybWF0IHR5cGUsIHZvaWQgKmhkcikKK3sKKwlpZiAodHlwZSA9PSBJTkZPX1NJTVBMRSkKKwkJcmV0dXJuIDA7CS8qIG9ubGluZV90aW1lIG5vdCBhdmFpbGFibGUgaW4gc2ltcGxlIGluZm8gKi8KKwllbHNlIC8qIElORk9fRVhUICovCisJCXJldHVybiAoKHN0cnVjdCB4X2NwdV9pbmZvICopaGRyKS0+b25saW5lX3RpbWU7Cit9CisKKy8qIFBoeXNpY2FsIGhlYWRlciAqLworCitzdHJ1Y3QgcGh5c19oZHIgeworCWNoYXIgcmVzZXJ2ZWQxWzFdOworCV9fdTggY3B1czsKKwljaGFyIHJlc2VydmVkMls2XTsKKwljaGFyIG1nbV9uYW1lWzhdOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCB4X3BoeXNfaGRyIHsKKwljaGFyIHJlc2VydmVkMVsxXTsKKwlfX3U4IGNwdXM7CisJY2hhciByZXNlcnZlZDJbNl07CisJY2hhciBtZ21fbmFtZVs4XTsKKwljaGFyIHJlc2VydmVkM1s4MF07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RhdGljIGlubGluZSBpbnQgcGh5c19oZHJfX3NpemUoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBwaHlzX2hkcik7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCB4X3BoeXNfaGRyKTsKK30KKworc3RhdGljIGlubGluZSBfX3U4IHBoeXNfaGRyX19jcHVzKGVudW0gZGlhZzIwNF9mb3JtYXQgdHlwZSwgdm9pZCAqaGRyKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gKChzdHJ1Y3QgcGh5c19oZHIgKiloZHIpLT5jcHVzOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfcGh5c19oZHIgKiloZHIpLT5jcHVzOworfQorCisvKiBQaHlzaWNhbCBDUFUgaW5mbyBibG9jayAqLworCitzdHJ1Y3QgcGh5c19jcHUgeworCV9fdTE2IGNwdV9hZGRyOworCWNoYXIgIHJlc2VydmVkMVsyXTsKKwlfX3U4ICBjdGlkeDsKKwljaGFyICByZXNlcnZlZDJbM107CisJX191NjQgbWdtX3RpbWU7CisJY2hhciAgcmVzZXJ2ZWQzWzhdOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCB4X3BoeXNfY3B1IHsKKwlfX3UxNiBjcHVfYWRkcjsKKwljaGFyICByZXNlcnZlZDFbMl07CisJX191OCAgY3RpZHg7CisJY2hhciAgcmVzZXJ2ZWQyWzNdOworCV9fdTY0IG1nbV90aW1lOworCWNoYXIgIHJlc2VydmVkM1s4MF07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworc3RhdGljIGlubGluZSBpbnQgcGh5c19jcHVfX3NpemUoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlKQoreworCWlmICh0eXBlID09IElORk9fU0lNUExFKQorCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBwaHlzX2NwdSk7CisJZWxzZSAvKiBJTkZPX0VYVCAqLworCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCB4X3BoeXNfY3B1KTsKK30KKworc3RhdGljIGlubGluZSBfX3UxNiBwaHlzX2NwdV9fY3B1X2FkZHIoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlLCB2b2lkICpoZHIpCit7CisJaWYgKHR5cGUgPT0gSU5GT19TSU1QTEUpCisJCXJldHVybiAoKHN0cnVjdCBwaHlzX2NwdSAqKWhkciktPmNwdV9hZGRyOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfcGh5c19jcHUgKiloZHIpLT5jcHVfYWRkcjsKK30KKworc3RhdGljIGlubGluZSBfX3U2NCBwaHlzX2NwdV9fbWdtX3RpbWUoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlLCB2b2lkICpoZHIpCit7CisJaWYgKHR5cGUgPT0gSU5GT19TSU1QTEUpCisJCXJldHVybiAoKHN0cnVjdCBwaHlzX2NwdSAqKWhkciktPm1nbV90aW1lOworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfcGh5c19jcHUgKiloZHIpLT5tZ21fdGltZTsKK30KKworc3RhdGljIGlubGluZSBfX3U2NCBwaHlzX2NwdV9fY3RpZHgoZW51bSBkaWFnMjA0X2Zvcm1hdCB0eXBlLCB2b2lkICpoZHIpCit7CisJaWYgKHR5cGUgPT0gSU5GT19TSU1QTEUpCisJCXJldHVybiAoKHN0cnVjdCBwaHlzX2NwdSAqKWhkciktPmN0aWR4OworCWVsc2UgLyogSU5GT19FWFQgKi8KKwkJcmV0dXJuICgoc3RydWN0IHhfcGh5c19jcHUgKiloZHIpLT5jdGlkeDsKK30KKworLyogRGlhZ25vc2UgMjA0IGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW50IGRpYWcyMDQodW5zaWduZWQgbG9uZyBzdWJjb2RlLCB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKmFkZHIpCit7CisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfc3ViY29kZSBhc20oIjAiKSA9IHN1YmNvZGU7CisJcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfc2l6ZSBhc20oIjEiKSA9IHNpemU7CisKKwlhc20gdm9sYXRpbGUgKCIgICBkaWFnICAgICUyLCUwLDB4MjA0XG4iCisJCSAgICAgICIwOiBcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKKyNpZm5kZWYgX19zMzkweF9fCisJCSAgICAgICIgICAgLmFsaWduIDRcbiIKKwkJICAgICAgIiAgICAubG9uZyAgMGIsMGJcbiIKKyNlbHNlCisJCSAgICAgICIgICAgLmFsaWduIDhcbiIKKwkJICAgICAgIiAgICAucXVhZCAgMGIsMGJcbiIKKyNlbmRpZgorCQkgICAgICAiLnByZXZpb3VzIjoiK2QiIChfc3ViY29kZSksICIrZCIoX3NpemUpCisJCSAgICAgIDoiZCIoYWRkcikKKwkJICAgICAgOiJtZW1vcnkiKTsKKwlpZiAoX3N1YmNvZGUpCisJCXJldHVybiAtMTsKKwllbHNlCisJCXJldHVybiBfc2l6ZTsKK30KKworLyoKKyAqIEZvciB0aGUgb2xkIGRpYWcgc3ViY29kZSA0IHdpdGggc2ltcGxlIGRhdGEgZm9ybWF0IHdlIGhhdmUgdG8gdXNlIHJlYWwKKyAqIG1lbW9yeS4gSWYgd2UgdXNlIHN1YmNvZGUgNiBvciA3IHdpdGggZXh0ZW5kZWQgZGF0YSBmb3JtYXQsIHdlIGNhbiAoYW5kCisgKiBzaG91bGQpIHVzZSB2bWFsbG9jLCBzaW5jZSB3ZSBuZWVkIGEgbG90IG9mIG1lbW9yeSBpbiB0aGF0IGNhc2UuIEN1cnJlbnRseQorICogdXAgdG8gOTMgcGFnZXMhCisgKi8KKworc3RhdGljIHZvaWQgZGlhZzIwNF9mcmVlX2J1ZmZlcih2b2lkKQoreworCWlmICghZGlhZzIwNF9idWYpCisJCXJldHVybjsKKwlpZiAoZGlhZzIwNF9idWZfdm1hbGxvYykgeworCQl2ZnJlZShkaWFnMjA0X2J1Zl92bWFsbG9jKTsKKwkJZGlhZzIwNF9idWZfdm1hbGxvYyA9IE5VTEw7CisJfSBlbHNlIHsKKwkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZykgZGlhZzIwNF9idWYsIDApOworCX0KKwlkaWFnMjA0X2J1Zl9wYWdlcyA9IDA7CisJZGlhZzIwNF9idWYgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCAqZGlhZzIwNF9hbGxvY192YnVmKGludCBwYWdlcykKK3sKKwkvKiBUaGUgYnVmZmVyIGhhcyB0byBiZSBwYWdlIGFsaWduZWQhICovCisJZGlhZzIwNF9idWZfdm1hbGxvYyA9IHZtYWxsb2MoUEFHRV9TSVpFICogKHBhZ2VzICsgMSkpOworCWlmICghZGlhZzIwNF9idWZfdm1hbGxvYykKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJZGlhZzIwNF9idWYgPSAodm9pZCopKCh1bnNpZ25lZCBsb25nKWRpYWcyMDRfYnVmX3ZtYWxsb2MKKwkJCQkmIH4weGZmZlVMKSArIDB4MTAwMDsKKwlkaWFnMjA0X2J1Zl9wYWdlcyA9IHBhZ2VzOworCXJldHVybiBkaWFnMjA0X2J1ZjsKK30KKworc3RhdGljIHZvaWQgKmRpYWcyMDRfYWxsb2NfcmJ1Zih2b2lkKQoreworCWRpYWcyMDRfYnVmID0gKHZvaWQqKV9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCwwKTsKKwlpZiAoZGlhZzIwNF9idWYpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCWRpYWcyMDRfYnVmX3BhZ2VzID0gMTsKKwlyZXR1cm4gZGlhZzIwNF9idWY7Cit9CisKK3N0YXRpYyB2b2lkICpkaWFnMjA0X2dldF9idWZmZXIoZW51bSBkaWFnMjA0X2Zvcm1hdCBmbXQsIGludCAqcGFnZXMpCit7CisJaWYgKGRpYWcyMDRfYnVmKSB7CisJCSpwYWdlcyA9IGRpYWcyMDRfYnVmX3BhZ2VzOworCQlyZXR1cm4gZGlhZzIwNF9idWY7CisJfQorCWlmIChmbXQgPT0gSU5GT19TSU1QTEUpIHsKKwkJKnBhZ2VzID0gMTsKKwkJcmV0dXJuIGRpYWcyMDRfYWxsb2NfcmJ1ZigpOworCX0gZWxzZSB7LyogSU5GT19FWFQgKi8KKwkJKnBhZ2VzID0gZGlhZzIwNChTVUJDX1JTSSB8IElORk9fRVhULCAwLCAwKTsKKwkJaWYgKCpwYWdlcyA8PSAwKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7CisJCWVsc2UKKwkJCXJldHVybiBkaWFnMjA0X2FsbG9jX3ZidWYoKnBhZ2VzKTsKKwl9Cit9CisKKy8qCisgKiBkaWFnMjA0X3Byb2JlKCkgaGFzIHRvIGZpbmQgb3V0LCB3aGljaCB0eXBlIG9mIGRpYWdub3NlIDIwNCBpbXBsZW1lbnRhdGlvbgorICogd2UgaGF2ZSBvbiBvdXIgbWFjaGluZS4gQ3VycmVudGx5IHRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSBzY2FuYXJpb3M6CisgKiAgIC0gc3ViY29kZSA0ICAgKyBzaW1wbGUgZGF0YSBmb3JtYXQgKG9ubHkgb25lIHBhZ2UpCisgKiAgIC0gc3ViY29kZSA0LTYgKyBleHRlbmRlZCBkYXRhIGZvcm1hdAorICogICAtIHN1YmNvZGUgNC03ICsgZXh0ZW5kZWQgZGF0YSBmb3JtYXQKKyAqCisgKiBTdWJjb2RlIDUgaXMgdXNlZCB0byByZXRyaWV2ZSB0aGUgc2l6ZSBvZiB0aGUgZGF0YSwgcHJvdmlkZWQgYnkgc3ViY29kZXMKKyAqIDYgYW5kIDcuIFN1YmNvZGUgNyBiYXNpY2FsbHkgaGFzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHN1YmNvZGUgNi4gSW4gYWRkaXRpb24KKyAqIHRvIHN1YmNvZGUgNiBpdCBwcm92aWRlcyBhbHNvIGluZm9ybWF0aW9uIGFib3V0IHNlY29uZGFyeSBjcHVzLgorICogSW4gb3JkZXIgdG8gZ2V0IGFzIG11Y2ggaW5mb3JtYXRpb24gYXMgcG9zc2libGUsIHdlIGZpcnN0IHRyeQorICogc3ViY29kZSA3LCB0aGVuIDYgYW5kIGlmIGJvdGggZmFpbCwgd2UgdXNlIHN1YmNvZGUgNC4KKyAqLworCitzdGF0aWMgaW50IGRpYWcyMDRfcHJvYmUodm9pZCkKK3sKKwl2b2lkICpidWY7CisJaW50IHBhZ2VzLCByYzsKKworCWJ1ZiA9IGRpYWcyMDRfZ2V0X2J1ZmZlcihJTkZPX0VYVCwgJnBhZ2VzKTsKKwlpZiAoIUlTX0VSUihidWYpKSB7CisJCWlmIChkaWFnMjA0KFNVQkNfU1RJQjcgfCBJTkZPX0VYVCwgcGFnZXMsIGJ1ZikgPj0gMCkgeworCQkJZGlhZzIwNF9zdG9yZV9zYyA9IFNVQkNfU1RJQjc7CisJCQlkaWFnMjA0X2luZm9fdHlwZSA9IElORk9fRVhUOworCQkJZ290byBvdXQ7CisJCX0KKwkJaWYgKGRpYWcyMDQoU1VCQ19TVElCNiB8IElORk9fRVhULCBwYWdlcywgYnVmKSA+PSAwKSB7CisJCQlkaWFnMjA0X3N0b3JlX3NjID0gU1VCQ19TVElCNzsKKwkJCWRpYWcyMDRfaW5mb190eXBlID0gSU5GT19FWFQ7CisJCQlnb3RvIG91dDsKKwkJfQorCQlkaWFnMjA0X2ZyZWVfYnVmZmVyKCk7CisJfQorCisJLyogc3ViY29kZXMgNiBhbmQgNyBmYWlsZWQsIG5vdyB0cnkgc3ViY29kZSA0ICovCisKKwlidWYgPSBkaWFnMjA0X2dldF9idWZmZXIoSU5GT19TSU1QTEUsICZwYWdlcyk7CisJaWYgKElTX0VSUihidWYpKSB7CisJCXJjID0gUFRSX0VSUihidWYpOworCQlnb3RvIGZhaWxfYWxsb2M7CisJfQorCWlmIChkaWFnMjA0KFNVQkNfU1RJQjQgfCBJTkZPX1NJTVBMRSwgcGFnZXMsIGJ1ZikgPj0gMCkgeworCQlkaWFnMjA0X3N0b3JlX3NjID0gU1VCQ19TVElCNDsKKwkJZGlhZzIwNF9pbmZvX3R5cGUgPSBJTkZPX1NJTVBMRTsKKwkJZ290byBvdXQ7CisJfSBlbHNlIHsKKwkJcmMgPSAtRU5PU1lTOworCQlnb3RvIGZhaWxfc3RvcmU7CisJfQorb3V0OgorCXJjID0gMDsKK2ZhaWxfc3RvcmU6CisJZGlhZzIwNF9mcmVlX2J1ZmZlcigpOworZmFpbF9hbGxvYzoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkICpkaWFnMjA0X3N0b3JlKHZvaWQpCit7CisJdm9pZCAqYnVmOworCWludCBwYWdlczsKKworCWJ1ZiA9IGRpYWcyMDRfZ2V0X2J1ZmZlcihkaWFnMjA0X2luZm9fdHlwZSwgJnBhZ2VzKTsKKwlpZiAoSVNfRVJSKGJ1ZikpCisJCWdvdG8gb3V0OworCWlmIChkaWFnMjA0KGRpYWcyMDRfc3RvcmVfc2MgfCBkaWFnMjA0X2luZm9fdHlwZSwgcGFnZXMsIGJ1ZikgPCAwKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PU1lTKTsKK291dDoKKwlyZXR1cm4gYnVmOworfQorCisvKiBEaWFnbm9zZSAyMjQgZnVuY3Rpb25zICovCisKK3N0YXRpYyB2b2lkIGRpYWcyMjQodm9pZCAqcHRyKQoreworCWFzbSB2b2xhdGlsZSgiICAgZGlhZyAgICAlMCwlMSwweDIyNFxuIgorCQkgICAgIDogOiJkIiAoMCksICJkIihwdHIpIDogIm1lbW9yeSIpOworfQorCitzdGF0aWMgaW50IGRpYWcyMjRfZ2V0X25hbWVfdGFibGUodm9pZCkKK3sKKwkvKiBtZW1vcnkgbXVzdCBiZSBiZWxvdyAyR0IgKi8KKwlkaWFnMjI0X2NwdV9uYW1lcyA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMIHwgR0ZQX0RNQSk7CisJaWYgKCFkaWFnMjI0X2NwdV9uYW1lcykKKwkJcmV0dXJuIC1FTk9NRU07CisJZGlhZzIyNChkaWFnMjI0X2NwdV9uYW1lcyk7CisJRUJDQVNDKGRpYWcyMjRfY3B1X25hbWVzICsgMTYsICgqZGlhZzIyNF9jcHVfbmFtZXMgKyAxKSAqIDE2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGlhZzIyNF9kZWxldGVfbmFtZV90YWJsZSh2b2lkKQoreworCWtmcmVlKGRpYWcyMjRfY3B1X25hbWVzKTsKK30KKworc3RhdGljIGludCBkaWFnMjI0X2lkeDJuYW1lKGludCBpbmRleCwgY2hhciAqbmFtZSkKK3sKKwltZW1jcHkobmFtZSwgZGlhZzIyNF9jcHVfbmFtZXMgKyAoKGluZGV4ICsgMSkgKiBDUFVfTkFNRV9MRU4pLAorCQlDUFVfTkFNRV9MRU4pOworCW5hbWVbQ1BVX05BTUVfTEVOXSA9IDA7CisJc3Ryc3RyaXAobmFtZSk7CisJcmV0dXJuIDA7Cit9CisKK19faW5pdCBpbnQgaHlwZnNfZGlhZ19pbml0KHZvaWQpCit7CisJaW50IHJjOworCisJaWYgKGRpYWcyMDRfcHJvYmUoKSkgeworCQlwcmludGsoS0VSTl9FUlIgImh5cGZzOiBkaWFnIDIwNCBub3Qgd29ya2luZy4iKTsKKwkJcmV0dXJuIC1FTk9EQVRBOworCX0KKwlyYyA9IGRpYWcyMjRfZ2V0X25hbWVfdGFibGUoKTsKKwlpZiAocmMpIHsKKwkJZGlhZzIyNF9kZWxldGVfbmFtZV90YWJsZSgpOworCQlwcmludGsoS0VSTl9FUlIgImh5cGZzOiBjb3VsZCBub3QgZ2V0IG5hbWUgdGFibGUuXG4iKTsKKwl9CisJcmV0dXJuIHJjOworfQorCitfX2V4aXQgdm9pZCBoeXBmc19kaWFnX2V4aXQodm9pZCkKK3sKKwlkaWFnMjI0X2RlbGV0ZV9uYW1lX3RhYmxlKCk7CisJZGlhZzIwNF9mcmVlX2J1ZmZlcigpOworfQorCisvKgorICogRnVuY3Rpb25zIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZQorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3N0YXRpYyBpbnQgaHlwZnNfY3JlYXRlX2NwdV9maWxlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAorCQkJCSAgc3RydWN0IGRlbnRyeSAqY3B1c19kaXIsIHZvaWQgKmNwdV9pbmZvKQoreworCXN0cnVjdCBkZW50cnkgKmNwdV9kaXI7CisJY2hhciBidWZmZXJbVE1QX1NJWkVdOworCXZvaWQgKnJjOworCisJc25wcmludGYoYnVmZmVyLCBUTVBfU0laRSwgIiVkIiwgY3B1X2luZm9fX2NwdV9hZGRyKGRpYWcyMDRfaW5mb190eXBlLAorCQkJCQkJCSAgICBjcHVfaW5mbykpOworCWNwdV9kaXIgPSBoeXBmc19ta2RpcihzYiwgY3B1c19kaXIsIGJ1ZmZlcik7CisJcmMgPSBoeXBmc19jcmVhdGVfdTY0KHNiLCBjcHVfZGlyLCAibWdtdGltZSIsCisJCQkgICAgICBjcHVfaW5mb19fYWNjX3RpbWUoZGlhZzIwNF9pbmZvX3R5cGUsIGNwdV9pbmZvKSAtCisJCQkgICAgICBjcHVfaW5mb19fbHBfdGltZShkaWFnMjA0X2luZm9fdHlwZSwgY3B1X2luZm8pKTsKKwlpZiAoSVNfRVJSKHJjKSkKKwkJcmV0dXJuIFBUUl9FUlIocmMpOworCXJjID0gaHlwZnNfY3JlYXRlX3U2NChzYiwgY3B1X2RpciwgImNwdXRpbWUiLAorCQkJICAgICAgY3B1X2luZm9fX2xwX3RpbWUoZGlhZzIwNF9pbmZvX3R5cGUsIGNwdV9pbmZvKSk7CisJaWYgKElTX0VSUihyYykpCisJCXJldHVybiBQVFJfRVJSKHJjKTsKKwlpZiAoZGlhZzIwNF9pbmZvX3R5cGUgPT0gSU5GT19FWFQpIHsKKwkJcmMgPSBoeXBmc19jcmVhdGVfdTY0KHNiLCBjcHVfZGlyLCAib25saW5ldGltZSIsCisJCQkJICAgICAgY3B1X2luZm9fX29ubGluZV90aW1lKGRpYWcyMDRfaW5mb190eXBlLAorCQkJCQkJCSAgICBjcHVfaW5mbykpOworCQlpZiAoSVNfRVJSKHJjKSkKKwkJCXJldHVybiBQVFJfRVJSKHJjKTsKKwl9CisJZGlhZzIyNF9pZHgybmFtZShjcHVfaW5mb19fY3RpZHgoZGlhZzIwNF9pbmZvX3R5cGUsIGNwdV9pbmZvKSwgYnVmZmVyKTsKKwlyYyA9IGh5cGZzX2NyZWF0ZV9zdHIoc2IsIGNwdV9kaXIsICJ0eXBlIiwgYnVmZmVyKTsKKwlpZiAoSVNfRVJSKHJjKSkKKwkJcmV0dXJuIFBUUl9FUlIocmMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCAqaHlwZnNfY3JlYXRlX2xwYXJfZmlsZXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKKwkJCQkgICAgIHN0cnVjdCBkZW50cnkgKnN5c3RlbXNfZGlyLCB2b2lkICpwYXJ0X2hkcikKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpjcHVzX2RpcjsKKwlzdHJ1Y3QgZGVudHJ5ICpscGFyX2RpcjsKKwljaGFyIGxwYXJfbmFtZVtMUEFSX05BTUVfTEVOICsgMV07CisJdm9pZCAqY3B1X2luZm87CisJaW50IGk7CisKKwlwYXJ0X2hkcl9fcGFydF9uYW1lKGRpYWcyMDRfaW5mb190eXBlLCBwYXJ0X2hkciwgbHBhcl9uYW1lKTsKKwlscGFyX25hbWVbTFBBUl9OQU1FX0xFTl0gPSAwOworCWxwYXJfZGlyID0gaHlwZnNfbWtkaXIoc2IsIHN5c3RlbXNfZGlyLCBscGFyX25hbWUpOworCWlmIChJU19FUlIobHBhcl9kaXIpKQorCQlyZXR1cm4gbHBhcl9kaXI7CisJY3B1c19kaXIgPSBoeXBmc19ta2RpcihzYiwgbHBhcl9kaXIsICJjcHVzIik7CisJaWYgKElTX0VSUihjcHVzX2RpcikpCisJCXJldHVybiBjcHVzX2RpcjsKKwljcHVfaW5mbyA9IHBhcnRfaGRyICsgcGFydF9oZHJfX3NpemUoZGlhZzIwNF9pbmZvX3R5cGUpOworCWZvciAoaSA9IDA7IGkgPCBwYXJ0X2hkcl9fcmNwdXMoZGlhZzIwNF9pbmZvX3R5cGUsIHBhcnRfaGRyKTsgaSsrKSB7CisJCWludCByYzsKKwkJcmMgPSBoeXBmc19jcmVhdGVfY3B1X2ZpbGVzKHNiLCBjcHVzX2RpciwgY3B1X2luZm8pOworCQlpZiAocmMpCisJCQlyZXR1cm4gRVJSX1BUUihyYyk7CisJCWNwdV9pbmZvICs9IGNwdV9pbmZvX19zaXplKGRpYWcyMDRfaW5mb190eXBlKTsKKwl9CisJcmV0dXJuIGNwdV9pbmZvOworfQorCitzdGF0aWMgaW50IGh5cGZzX2NyZWF0ZV9waHlzX2NwdV9maWxlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAorCQkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpjcHVzX2Rpciwgdm9pZCAqY3B1X2luZm8pCit7CisJc3RydWN0IGRlbnRyeSAqY3B1X2RpcjsKKwljaGFyIGJ1ZmZlcltUTVBfU0laRV07CisJdm9pZCAqcmM7CisKKwlzbnByaW50ZihidWZmZXIsIFRNUF9TSVpFLCAiJWkiLCBwaHlzX2NwdV9fY3B1X2FkZHIoZGlhZzIwNF9pbmZvX3R5cGUsCisJCQkJCQkJICAgIGNwdV9pbmZvKSk7CisJY3B1X2RpciA9IGh5cGZzX21rZGlyKHNiLCBjcHVzX2RpciwgYnVmZmVyKTsKKwlpZiAoSVNfRVJSKGNwdV9kaXIpKQorCQlyZXR1cm4gUFRSX0VSUihjcHVfZGlyKTsKKwlyYyA9IGh5cGZzX2NyZWF0ZV91NjQoc2IsIGNwdV9kaXIsICJtZ210aW1lIiwKKwkJCSAgICAgIHBoeXNfY3B1X19tZ21fdGltZShkaWFnMjA0X2luZm9fdHlwZSwgY3B1X2luZm8pKTsKKwlpZiAoSVNfRVJSKHJjKSkKKwkJcmV0dXJuIFBUUl9FUlIocmMpOworCWRpYWcyMjRfaWR4Mm5hbWUocGh5c19jcHVfX2N0aWR4KGRpYWcyMDRfaW5mb190eXBlLCBjcHVfaW5mbyksIGJ1ZmZlcik7CisJcmMgPSBoeXBmc19jcmVhdGVfc3RyKHNiLCBjcHVfZGlyLCAidHlwZSIsIGJ1ZmZlcik7CisJaWYgKElTX0VSUihyYykpCisJCXJldHVybiBQVFJfRVJSKHJjKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgKmh5cGZzX2NyZWF0ZV9waHlzX2ZpbGVzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCisJCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZGlyLCB2b2lkICpwaHlzX2hkcikKK3sKKwlpbnQgaTsKKwl2b2lkICpjcHVfaW5mbzsKKwlzdHJ1Y3QgZGVudHJ5ICpjcHVzX2RpcjsKKworCWNwdXNfZGlyID0gaHlwZnNfbWtkaXIoc2IsIHBhcmVudF9kaXIsICJjcHVzIik7CisJaWYgKElTX0VSUihjcHVzX2RpcikpCisJCXJldHVybiBjcHVzX2RpcjsKKwljcHVfaW5mbyA9IHBoeXNfaGRyICsgcGh5c19oZHJfX3NpemUoZGlhZzIwNF9pbmZvX3R5cGUpOworCWZvciAoaSA9IDA7IGkgPCBwaHlzX2hkcl9fY3B1cyhkaWFnMjA0X2luZm9fdHlwZSwgcGh5c19oZHIpOyBpKyspIHsKKwkJaW50IHJjOworCQlyYyA9IGh5cGZzX2NyZWF0ZV9waHlzX2NwdV9maWxlcyhzYiwgY3B1c19kaXIsIGNwdV9pbmZvKTsKKwkJaWYgKHJjKQorCQkJcmV0dXJuIEVSUl9QVFIocmMpOworCQljcHVfaW5mbyArPSBwaHlzX2NwdV9fc2l6ZShkaWFnMjA0X2luZm9fdHlwZSk7CisJfQorCXJldHVybiBjcHVfaW5mbzsKK30KKworaW50IGh5cGZzX2RpYWdfY3JlYXRlX2ZpbGVzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBkZW50cnkgKnJvb3QpCit7CisJc3RydWN0IGRlbnRyeSAqc3lzdGVtc19kaXIsICpoeXBfZGlyOworCXZvaWQgKnRpbWVfaGRyLCAqcGFydF9oZHI7CisJaW50IGksIHJjOworCXZvaWQgKmJ1ZmZlciwgKnB0cjsKKworCWJ1ZmZlciA9IGRpYWcyMDRfc3RvcmUoKTsKKwlpZiAoSVNfRVJSKGJ1ZmZlcikpCisJCXJldHVybiBQVFJfRVJSKGJ1ZmZlcik7CisKKwlzeXN0ZW1zX2RpciA9IGh5cGZzX21rZGlyKHNiLCByb290LCAic3lzdGVtcyIpOworCWlmIChJU19FUlIoc3lzdGVtc19kaXIpKSB7CisJCXJjID0gUFRSX0VSUihzeXN0ZW1zX2Rpcik7CisJCWdvdG8gZXJyX291dDsKKwl9CisJdGltZV9oZHIgPSAoc3RydWN0IHhfaW5mb19ibGtfaGRyICopYnVmZmVyOworCXBhcnRfaGRyID0gdGltZV9oZHIgKyBpbmZvX2Jsa19oZHJfX3NpemUoZGlhZzIwNF9pbmZvX3R5cGUpOworCWZvciAoaSA9IDA7IGkgPCBpbmZvX2Jsa19oZHJfX25wYXIoZGlhZzIwNF9pbmZvX3R5cGUsIHRpbWVfaGRyKTsgaSsrKSB7CisJCXBhcnRfaGRyID0gaHlwZnNfY3JlYXRlX2xwYXJfZmlsZXMoc2IsIHN5c3RlbXNfZGlyLCBwYXJ0X2hkcik7CisJCWlmIChJU19FUlIocGFydF9oZHIpKSB7CisJCQlyYyA9IFBUUl9FUlIocGFydF9oZHIpOworCQkJZ290byBlcnJfb3V0OworCQl9CisJfQorCWlmIChpbmZvX2Jsa19oZHJfX2ZsYWdzKGRpYWcyMDRfaW5mb190eXBlLCB0aW1lX2hkcikgJiBMUEFSX1BIWVNfRkxHKSB7CisJCXB0ciA9IGh5cGZzX2NyZWF0ZV9waHlzX2ZpbGVzKHNiLCByb290LCBwYXJ0X2hkcik7CisJCWlmIChJU19FUlIocHRyKSkgeworCQkJcmMgPSBQVFJfRVJSKHB0cik7CisJCQlnb3RvIGVycl9vdXQ7CisJCX0KKwl9CisJaHlwX2RpciA9IGh5cGZzX21rZGlyKHNiLCByb290LCAiaHlwIik7CisJaWYgKElTX0VSUihoeXBfZGlyKSkgeworCQlyYyA9IFBUUl9FUlIoaHlwX2Rpcik7CisJCWdvdG8gZXJyX291dDsKKwl9CisJcHRyID0gaHlwZnNfY3JlYXRlX3N0cihzYiwgaHlwX2RpciwgInR5cGUiLCAiTFBBUiBIeXBlcnZpc29yIik7CisJaWYgKElTX0VSUihwdHIpKSB7CisJCXJjID0gUFRSX0VSUihwdHIpOworCQlnb3RvIGVycl9vdXQ7CisJfQorCXJjID0gMDsKKworZXJyX291dDoKKwlyZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaHlwZnMvaHlwZnNfZGlhZy5oIGIvYXJjaC9zMzkwL2h5cGZzL2h5cGZzX2RpYWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTNkZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9zMzkwL2h5cGZzL2h5cGZzX2RpYWcuaApAQCAtMCwwICsxLDE2IEBACisvKgorICogIGZzL2h5cGZzL2h5cGZzX2RpYWcuaAorICogICAgSHlwZXJ2aXNvciBmaWxlc3lzdGVtIGZvciBMaW51eCBvbiBzMzkwLgorICoKKyAqICAgIENvcHlyaWdodCAoQykgSUJNIENvcnAuIDIwMDYKKyAqICAgIEF1dGhvcihzKTogTWljaGFlbCBIb2x6aGV1IDxob2x6aGV1QGRlLmlibS5jb20+CisgKi8KKworI2lmbmRlZiBfSFlQRlNfRElBR19IXworI2RlZmluZSBfSFlQRlNfRElBR19IXworCitleHRlcm4gaW50IGh5cGZzX2RpYWdfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGh5cGZzX2RpYWdfZXhpdCh2b2lkKTsKK2V4dGVybiBpbnQgaHlwZnNfZGlhZ19jcmVhdGVfZmlsZXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGRlbnRyeSAqcm9vdCk7CisKKyNlbmRpZiAvKiBfSFlQRlNfRElBR19IXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMgYi9hcmNoL3MzOTAvaHlwZnMvaW5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGMwOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9zMzkwL2h5cGZzL2lub2RlLmMKQEAgLTAsMCArMSw0OTEgQEAKKy8qCisgKiAgZnMvaHlwZnMvaW5vZGUuYworICogICAgSHlwZXJ2aXNvciBmaWxlc3lzdGVtIGZvciBMaW51eCBvbiBzMzkwLgorICoKKyAqICAgIENvcHlyaWdodCAoQykgSUJNIENvcnAuIDIwMDYKKyAqICAgIEF1dGhvcihzKTogTWljaGFlbCBIb2x6aGV1IDxob2x6aGV1QGRlLmlibS5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L25hbWVpLmg+CisjaW5jbHVkZSA8bGludXgvdmZzLmg+CisjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgorI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9wYXJzZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGFzbS9lYmNkaWMuaD4KKyNpbmNsdWRlICJoeXBmcy5oIgorI2luY2x1ZGUgImh5cGZzX2RpYWcuaCIKKworI2RlZmluZSBIWVBGU19NQUdJQyAweDY4Nzk3MAkvKiBBU0NJSSAnaHlwJyAqLworI2RlZmluZSBUTVBfU0laRSA2NAkJLyogc2l6ZSBvZiB0ZW1wb3JhcnkgYnVmZmVycyAqLworCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqaHlwZnNfY3JlYXRlX3VwZGF0ZV9maWxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCisJCQkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXIpOworCitzdHJ1Y3QgaHlwZnNfc2JfaW5mbyB7CisJdWlkX3QgdWlkOwkJCS8qIHVpZCB1c2VkIGZvciBmaWxlcyBhbmQgZGlycyAqLworCWdpZF90IGdpZDsJCQkvKiBnaWQgdXNlZCBmb3IgZmlsZXMgYW5kIGRpcnMgKi8KKwlzdHJ1Y3QgZGVudHJ5ICp1cGRhdGVfZmlsZTsJLyogZmlsZSB0byB0cmlnZ2VyIHVwZGF0ZSAqLworCXRpbWVfdCBsYXN0X3VwZGF0ZTsJCS8qIGxhc3QgdXBkYXRlIHRpbWUgaW4gc2VjcyBzaW5jZSAxOTcwICovCisJc3RydWN0IG11dGV4IGxvY2s7CQkvKiBsb2NrIHRvIHByb3RlY3QgdXBkYXRlIHByb2Nlc3MgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGh5cGZzX2ZpbGVfb3BzOworc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGh5cGZzX3R5cGU7CitzdGF0aWMgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgaHlwZnNfc19vcHM7CisKKy8qIHN0YXJ0IG9mIGxpc3Qgb2YgYWxsIGRlbnRyaWVzLCB3aGljaCBoYXZlIHRvIGJlIGRlbGV0ZWQgb24gdXBkYXRlICovCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqaHlwZnNfbGFzdF9kZW50cnk7CisKK3N0YXRpYyB2b2lkIGh5cGZzX3VwZGF0ZV91cGRhdGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3sKKwlzdHJ1Y3QgaHlwZnNfc2JfaW5mbyAqc2JfaW5mbyA9IHNiLT5zX2ZzX2luZm87CisJc3RydWN0IGlub2RlICppbm9kZSA9IHNiX2luZm8tPnVwZGF0ZV9maWxlLT5kX2lub2RlOworCisJc2JfaW5mby0+bGFzdF91cGRhdGUgPSBnZXRfc2Vjb25kcygpOworCWlub2RlLT5pX2F0aW1lID0gaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IENVUlJFTlRfVElNRTsKK30KKworLyogZGlyZWN0b3J5IHRyZWUgcmVtb3ZhbCBmdW5jdGlvbnMgKi8KKworc3RhdGljIHZvaWQgaHlwZnNfYWRkX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCit7CisJZGVudHJ5LT5kX2ZzZGF0YSA9IGh5cGZzX2xhc3RfZGVudHJ5OworCWh5cGZzX2xhc3RfZGVudHJ5ID0gZGVudHJ5OworfQorCitzdGF0aWMgdm9pZCBoeXBmc19yZW1vdmUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQoreworCXN0cnVjdCBkZW50cnkgKnBhcmVudDsKKworCXBhcmVudCA9IGRlbnRyeS0+ZF9wYXJlbnQ7CisJaWYgKFNfSVNESVIoZGVudHJ5LT5kX2lub2RlLT5pX21vZGUpKQorCQlzaW1wbGVfcm1kaXIocGFyZW50LT5kX2lub2RlLCBkZW50cnkpOworCWVsc2UKKwkJc2ltcGxlX3VubGluayhwYXJlbnQtPmRfaW5vZGUsIGRlbnRyeSk7CisJZF9kZWxldGUoZGVudHJ5KTsKKwlkcHV0KGRlbnRyeSk7Cit9CisKK3N0YXRpYyB2b2lkIGh5cGZzX2RlbGV0ZV90cmVlKHN0cnVjdCBkZW50cnkgKnJvb3QpCit7CisJd2hpbGUgKGh5cGZzX2xhc3RfZGVudHJ5KSB7CisJCXN0cnVjdCBkZW50cnkgKm5leHRfZGVudHJ5OworCQluZXh0X2RlbnRyeSA9IGh5cGZzX2xhc3RfZGVudHJ5LT5kX2ZzZGF0YTsKKwkJaHlwZnNfcmVtb3ZlKGh5cGZzX2xhc3RfZGVudHJ5KTsKKwkJaHlwZnNfbGFzdF9kZW50cnkgPSBuZXh0X2RlbnRyeTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW5vZGUgKmh5cGZzX21ha2VfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IG1vZGUpCit7CisJc3RydWN0IGlub2RlICpyZXQgPSBuZXdfaW5vZGUoc2IpOworCisJaWYgKHJldCkgeworCQlzdHJ1Y3QgaHlwZnNfc2JfaW5mbyAqaHlwZnNfaW5mbyA9IHNiLT5zX2ZzX2luZm87CisJCXJldC0+aV9tb2RlID0gbW9kZTsKKwkJcmV0LT5pX3VpZCA9IGh5cGZzX2luZm8tPnVpZDsKKwkJcmV0LT5pX2dpZCA9IGh5cGZzX2luZm8tPmdpZDsKKwkJcmV0LT5pX2Jsa3NpemUgPSBQQUdFX0NBQ0hFX1NJWkU7CisJCXJldC0+aV9ibG9ja3MgPSAwOworCQlyZXQtPmlfYXRpbWUgPSByZXQtPmlfbXRpbWUgPSByZXQtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUU7CisJCWlmIChtb2RlICYgU19JRkRJUikKKwkJCXJldC0+aV9ubGluayA9IDI7CisJCWVsc2UKKwkJCXJldC0+aV9ubGluayA9IDE7CisJfQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGh5cGZzX2Ryb3BfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKK3sKKwlrZnJlZShpbm9kZS0+dS5nZW5lcmljX2lwKTsKKwlnZW5lcmljX2RlbGV0ZV9pbm9kZShpbm9kZSk7Cit9CisKK3N0YXRpYyBpbnQgaHlwZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKK3sKKwljaGFyICpkYXRhID0gZmlscC0+Zl9kZW50cnktPmRfaW5vZGUtPnUuZ2VuZXJpY19pcDsKKwlzdHJ1Y3QgaHlwZnNfc2JfaW5mbyAqZnNfaW5mbzsKKworCWlmIChmaWxwLT5mX21vZGUgJiBGTU9ERV9XUklURSkgeworCQlpZiAoIShpbm9kZS0+aV9tb2RlICYgU19JV1VHTykpCisJCQlyZXR1cm4gLUVBQ0NFUzsKKwl9CisJaWYgKGZpbHAtPmZfbW9kZSAmIEZNT0RFX1JFQUQpIHsKKwkJaWYgKCEoaW5vZGUtPmlfbW9kZSAmIFNfSVJVR08pKQorCQkJcmV0dXJuIC1FQUNDRVM7CisJfQorCisJZnNfaW5mbyA9IGlub2RlLT5pX3NiLT5zX2ZzX2luZm87CisJaWYoZGF0YSkgeworCQltdXRleF9sb2NrKCZmc19pbmZvLT5sb2NrKTsKKwkJZmlscC0+cHJpdmF0ZV9kYXRhID0ga3N0cmR1cChkYXRhLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFmaWxwLT5wcml2YXRlX2RhdGEpIHsKKwkJCW11dGV4X3VubG9jaygmZnNfaW5mby0+bG9jayk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQltdXRleF91bmxvY2soJmZzX2luZm8tPmxvY2spOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHNzaXplX3QgaHlwZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBfX3VzZXIgY2hhciAqYnVmLAorCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3Qgb2Zmc2V0KQoreworCWNoYXIgKmRhdGE7CisJc2l6ZV90IGxlbjsKKwlzdHJ1Y3QgZmlsZSAqZmlscCA9IGlvY2ItPmtpX2ZpbHA7CisKKwlkYXRhID0gZmlscC0+cHJpdmF0ZV9kYXRhOworCWxlbiA9IHN0cmxlbihkYXRhKTsKKwlpZiAob2Zmc2V0ID4gbGVuKSB7CisJCWNvdW50ID0gMDsKKwkJZ290byBvdXQ7CisJfQorCWlmIChjb3VudCA+IGxlbiAtIG9mZnNldCkKKwkJY291bnQgPSBsZW4gLSBvZmZzZXQ7CisJaWYgKGNvcHlfdG9fdXNlcihidWYsIGRhdGEgKyBvZmZzZXQsIGNvdW50KSkgeworCQljb3VudCA9IC1FRkFVTFQ7CisJCWdvdG8gb3V0OworCX0KKwlpb2NiLT5raV9wb3MgKz0gY291bnQ7CisJZmlsZV9hY2Nlc3NlZChmaWxwKTsKK291dDoKKwlyZXR1cm4gY291bnQ7Cit9CitzdGF0aWMgc3NpemVfdCBoeXBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAorCQkJICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90IHBvcykKK3sKKwlpbnQgcmM7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYjsKKwlzdHJ1Y3QgaHlwZnNfc2JfaW5mbyAqZnNfaW5mbzsKKworCXNiID0gaW9jYi0+a2lfZmlscC0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2I7CisJZnNfaW5mbyA9IHNiLT5zX2ZzX2luZm87CisJLyoKKwkgKiBDdXJyZW50bHkgd2Ugb25seSBhbGxvdyBvbmUgdXBkYXRlIHBlciBzZWNvbmQgZm9yIHR3byByZWFzb25zOgorCSAqIDEuIGRpYWcgMjA0IGlzIFZFUlkgZXhwZW5zaXZlCisJICogMi4gSWYgc2V2ZXJhbCBwcm9jZXNzZXMgZG8gdXBkYXRlcyBpbiBwYXJhbGxlbCBhbmQgdGhlbiByZWFkIHRoZQorCSAqICAgIGh5cGZzIGRhdGEsIHRoZSBsaWtlbGlob29kIG9mIGNvbGxpc2lvbnMgaXMgcmVkdWNlZCwgaWYgd2UgcmVzdHJpY3QKKwkgKiAgICB0aGUgbWluaW11bSB1cGRhdGUgaW50ZXJ2YWwuIEEgY29sbGlzaW9uIG9jY3VycywgaWYgZHVyaW5nIHRoZQorCSAqICAgIGRhdGEgZ2F0aGVyaW5nIG9mIG9uZSBwcm9jZXNzIGFub3RoZXIgcHJvY2VzcyB0cmlnZ2VycyBhbiB1cGRhdGUKKwkgKiAgICBJZiB0aGUgZmlyc3QgcHJvY2VzcyB3YW50cyB0byBlbnN1cmUgY29uc2lzdGVudCBkYXRhLCBpdCBoYXMKKwkgKiAgICB0byByZXN0YXJ0IGRhdGEgY29sbGVjdGlvbiBpbiB0aGlzIGNhc2UuCisJICovCisJbXV0ZXhfbG9jaygmZnNfaW5mby0+bG9jayk7CisJaWYgKGZzX2luZm8tPmxhc3RfdXBkYXRlID09IGdldF9zZWNvbmRzKCkpIHsKKwkJcmMgPSAtRUJVU1k7CisJCWdvdG8gb3V0OworCX0KKwloeXBmc19kZWxldGVfdHJlZShzYi0+c19yb290KTsKKwlyYyA9IGh5cGZzX2RpYWdfY3JlYXRlX2ZpbGVzKHNiLCBzYi0+c19yb290KTsKKwlpZiAocmMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJoeXBmczogVXBkYXRlIGZhaWxlZFxuIik7CisJCWh5cGZzX2RlbGV0ZV90cmVlKHNiLT5zX3Jvb3QpOworCQlnb3RvIG91dDsKKwl9CisJaHlwZnNfdXBkYXRlX3VwZGF0ZShzYik7CisJcmMgPSBjb3VudDsKK291dDoKKwltdXRleF91bmxvY2soJmZzX2luZm8tPmxvY2spOworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBoeXBmc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQoreworCWtmcmVlKGZpbHAtPnByaXZhdGVfZGF0YSk7CisJcmV0dXJuIDA7Cit9CisKK2VudW0geyBvcHRfdWlkLCBvcHRfZ2lkLCBvcHRfZXJyIH07CisKK3N0YXRpYyBtYXRjaF90YWJsZV90IGh5cGZzX3Rva2VucyA9IHsKKwl7b3B0X3VpZCwgInVpZD0ldSJ9LAorCXtvcHRfZ2lkLCAiZ2lkPSV1In0sCisJe29wdF9lcnIsIE5VTEx9Cit9OworCitzdGF0aWMgaW50IGh5cGZzX3BhcnNlX29wdGlvbnMoY2hhciAqb3B0aW9ucywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3sKKwljaGFyICpzdHI7CisJc3Vic3RyaW5nX3QgYXJnc1tNQVhfT1BUX0FSR1NdOworCisJaWYgKCFvcHRpb25zKQorCQlyZXR1cm4gMDsKKwl3aGlsZSAoKHN0ciA9IHN0cnNlcCgmb3B0aW9ucywgIiwiKSkgIT0gTlVMTCkgeworCQlpbnQgdG9rZW4sIG9wdGlvbjsKKwkJc3RydWN0IGh5cGZzX3NiX2luZm8gKmh5cGZzX2luZm8gPSBzYi0+c19mc19pbmZvOworCisJCWlmICghKnN0cikKKwkJCWNvbnRpbnVlOworCQl0b2tlbiA9IG1hdGNoX3Rva2VuKHN0ciwgaHlwZnNfdG9rZW5zLCBhcmdzKTsKKwkJc3dpdGNoICh0b2tlbikgeworCQljYXNlIG9wdF91aWQ6CisJCQlpZiAobWF0Y2hfaW50KCZhcmdzWzBdLCAmb3B0aW9uKSkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCWh5cGZzX2luZm8tPnVpZCA9IG9wdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIG9wdF9naWQ6CisJCQlpZiAobWF0Y2hfaW50KCZhcmdzWzBdLCAmb3B0aW9uKSkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCWh5cGZzX2luZm8tPmdpZCA9IG9wdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIG9wdF9lcnI6CisJCWRlZmF1bHQ6CisJCQlwcmludGsoS0VSTl9FUlIgImh5cGZzOiBVbnJlY29nbml6ZWQgbW91bnQgb3B0aW9uICIKKwkJCSAgICAgICAiXCIlc1wiIG9yIG1pc3NpbmcgdmFsdWVcbiIsIHN0cik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoeXBmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCit7CisJc3RydWN0IGlub2RlICpyb290X2lub2RlOworCXN0cnVjdCBkZW50cnkgKnJvb3RfZGVudHJ5OworCWludCByYyA9IDA7CisJc3RydWN0IGh5cGZzX3NiX2luZm8gKnNiaTsKKworCXNiaSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBoeXBmc19zYl9pbmZvKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzYmkpCisJCXJldHVybiAtRU5PTUVNOworCW11dGV4X2luaXQoJnNiaS0+bG9jayk7CisJc2JpLT51aWQgPSBjdXJyZW50LT51aWQ7CisJc2JpLT5naWQgPSBjdXJyZW50LT5naWQ7CisJc2ItPnNfZnNfaW5mbyA9IHNiaTsKKwlzYi0+c19ibG9ja3NpemUgPSBQQUdFX0NBQ0hFX1NJWkU7CisJc2ItPnNfYmxvY2tzaXplX2JpdHMgPSBQQUdFX0NBQ0hFX1NISUZUOworCXNiLT5zX21hZ2ljID0gSFlQRlNfTUFHSUM7CisJc2ItPnNfb3AgPSAmaHlwZnNfc19vcHM7CisJaWYgKGh5cGZzX3BhcnNlX29wdGlvbnMoZGF0YSwgc2IpKSB7CisJCXJjID0gLUVJTlZBTDsKKwkJZ290byBlcnJfYWxsb2M7CisJfQorCXJvb3RfaW5vZGUgPSBoeXBmc19tYWtlX2lub2RlKHNiLCBTX0lGRElSIHwgMDc1NSk7CisJaWYgKCFyb290X2lub2RlKSB7CisJCXJjID0gLUVOT01FTTsKKwkJZ290byBlcnJfYWxsb2M7CisJfQorCXJvb3RfaW5vZGUtPmlfb3AgPSAmc2ltcGxlX2Rpcl9pbm9kZV9vcGVyYXRpb25zOworCXJvb3RfaW5vZGUtPmlfZm9wID0gJnNpbXBsZV9kaXJfb3BlcmF0aW9uczsKKwlyb290X2RlbnRyeSA9IGRfYWxsb2Nfcm9vdChyb290X2lub2RlKTsKKwlpZiAoIXJvb3RfZGVudHJ5KSB7CisJCWlwdXQocm9vdF9pbm9kZSk7CisJCXJjID0gLUVOT01FTTsKKwkJZ290byBlcnJfYWxsb2M7CisJfQorCXJjID0gaHlwZnNfZGlhZ19jcmVhdGVfZmlsZXMoc2IsIHJvb3RfZGVudHJ5KTsKKwlpZiAocmMpCisJCWdvdG8gZXJyX3RyZWU7CisJc2JpLT51cGRhdGVfZmlsZSA9IGh5cGZzX2NyZWF0ZV91cGRhdGVfZmlsZShzYiwgcm9vdF9kZW50cnkpOworCWlmIChJU19FUlIoc2JpLT51cGRhdGVfZmlsZSkpIHsKKwkJcmMgPSBQVFJfRVJSKHNiaS0+dXBkYXRlX2ZpbGUpOworCQlnb3RvIGVycl90cmVlOworCX0KKwloeXBmc191cGRhdGVfdXBkYXRlKHNiKTsKKwlzYi0+c19yb290ID0gcm9vdF9kZW50cnk7CisJcmV0dXJuIDA7CisKK2Vycl90cmVlOgorCWh5cGZzX2RlbGV0ZV90cmVlKHJvb3RfZGVudHJ5KTsKKwlkX2dlbm9jaWRlKHJvb3RfZGVudHJ5KTsKKwlkcHV0KHJvb3RfZGVudHJ5KTsKK2Vycl9hbGxvYzoKKwlrZnJlZShzYmkpOworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBoeXBmc19nZXRfc3VwZXIoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzdCwgaW50IGZsYWdzLAorCQkJY29uc3QgY2hhciAqZGV2bmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCit7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnN0LCBmbGFncywgZGF0YSwgaHlwZnNfZmlsbF9zdXBlciwgbW50KTsKK30KKworc3RhdGljIHZvaWQgaHlwZnNfa2lsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQoreworCXN0cnVjdCBoeXBmc19zYl9pbmZvICpzYl9pbmZvID0gc2ItPnNfZnNfaW5mbzsKKworCWh5cGZzX2RlbGV0ZV90cmVlKHNiLT5zX3Jvb3QpOworCWh5cGZzX3JlbW92ZShzYl9pbmZvLT51cGRhdGVfZmlsZSk7CisJa2ZyZWUoc2ItPnNfZnNfaW5mbyk7CisJc2ItPnNfZnNfaW5mbyA9IE5VTEw7CisJa2lsbF9saXR0ZXJfc3VwZXIoc2IpOworfQorCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqaHlwZnNfY3JlYXRlX2ZpbGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKKwkJCQkJc3RydWN0IGRlbnRyeSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLAorCQkJCQljaGFyICpkYXRhLCBtb2RlX3QgbW9kZSkKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CisJc3RydWN0IGlub2RlICppbm9kZTsKKwlzdHJ1Y3QgcXN0ciBxbmFtZTsKKworCXFuYW1lLm5hbWUgPSBuYW1lOworCXFuYW1lLmxlbiA9IHN0cmxlbihuYW1lKTsKKwlxbmFtZS5oYXNoID0gZnVsbF9uYW1lX2hhc2gobmFtZSwgcW5hbWUubGVuKTsKKwlkZW50cnkgPSBsb29rdXBfb25lX2xlbihuYW1lLCBwYXJlbnQsIHN0cmxlbihuYW1lKSk7CisJaWYgKElTX0VSUihkZW50cnkpKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwlpbm9kZSA9IGh5cGZzX21ha2VfaW5vZGUoc2IsIG1vZGUpOworCWlmICghaW5vZGUpIHsKKwkJZHB1dChkZW50cnkpOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisJaWYgKG1vZGUgJiBTX0lGUkVHKSB7CisJCWlub2RlLT5pX2ZvcCA9ICZoeXBmc19maWxlX29wczsKKwkJaWYgKGRhdGEpCisJCQlpbm9kZS0+aV9zaXplID0gc3RybGVuKGRhdGEpOworCQllbHNlCisJCQlpbm9kZS0+aV9zaXplID0gMDsKKwl9IGVsc2UgaWYgKG1vZGUgJiBTX0lGRElSKSB7CisJCWlub2RlLT5pX29wID0gJnNpbXBsZV9kaXJfaW5vZGVfb3BlcmF0aW9uczsKKwkJaW5vZGUtPmlfZm9wID0gJnNpbXBsZV9kaXJfb3BlcmF0aW9uczsKKwkJcGFyZW50LT5kX2lub2RlLT5pX25saW5rKys7CisJfSBlbHNlCisJCUJVRygpOworCWlub2RlLT51LmdlbmVyaWNfaXAgPSBkYXRhOworCWRfaW5zdGFudGlhdGUoZGVudHJ5LCBpbm9kZSk7CisJZGdldChkZW50cnkpOworCXJldHVybiBkZW50cnk7Cit9CisKK3N0cnVjdCBkZW50cnkgKmh5cGZzX21rZGlyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKKwkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3RydWN0IGRlbnRyeSAqZGVudHJ5OworCisJZGVudHJ5ID0gaHlwZnNfY3JlYXRlX2ZpbGUoc2IsIHBhcmVudCwgbmFtZSwgTlVMTCwgU19JRkRJUiB8IERJUl9NT0RFKTsKKwlpZiAoSVNfRVJSKGRlbnRyeSkpCisJCXJldHVybiBkZW50cnk7CisJaHlwZnNfYWRkX2RlbnRyeShkZW50cnkpOworCXBhcmVudC0+ZF9pbm9kZS0+aV9ubGluaysrOworCXJldHVybiBkZW50cnk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoeXBmc19jcmVhdGVfdXBkYXRlX2ZpbGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKKwkJCQkJICAgICAgIHN0cnVjdCBkZW50cnkgKmRpcikKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CisKKwlkZW50cnkgPSBoeXBmc19jcmVhdGVfZmlsZShzYiwgZGlyLCAidXBkYXRlIiwgTlVMTCwKKwkJCQkgICBTX0lGUkVHIHwgVVBEQVRFX0ZJTEVfTU9ERSk7CisJLyoKKwkgKiBXZSBkbyBub3QgcHV0IHRoZSB1cGRhdGUgZmlsZSBvbiB0aGUgJ2RlbGV0ZScgbGlzdCB3aXRoCisJICogaHlwZnNfYWRkX2RlbnRyeSgpLCBzaW5jZSBpdCBzaG91bGQgbm90IGJlIHJlbW92ZWQgd2hlbiB0aGUgdHJlZQorCSAqIGlzIHVwZGF0ZWQuCisJICovCisJcmV0dXJuIGRlbnRyeTsKK30KKworc3RydWN0IGRlbnRyeSAqaHlwZnNfY3JlYXRlX3U2NChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZGVudHJ5ICpkaXIsCisJCQkJY29uc3QgY2hhciAqbmFtZSwgX191NjQgdmFsdWUpCit7CisJY2hhciAqYnVmZmVyOworCWNoYXIgdG1wW1RNUF9TSVpFXTsKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CisKKwlzbnByaW50Zih0bXAsIFRNUF9TSVpFLCAiJWxsZFxuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpdmFsdWUpOworCWJ1ZmZlciA9IGtzdHJkdXAodG1wLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJZGVudHJ5ID0KKwkgICAgaHlwZnNfY3JlYXRlX2ZpbGUoc2IsIGRpciwgbmFtZSwgYnVmZmVyLCBTX0lGUkVHIHwgUkVHX0ZJTEVfTU9ERSk7CisJaWYgKElTX0VSUihkZW50cnkpKSB7CisJCWtmcmVlKGJ1ZmZlcik7CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCX0KKwloeXBmc19hZGRfZGVudHJ5KGRlbnRyeSk7CisJcmV0dXJuIGRlbnRyeTsKK30KKworc3RydWN0IGRlbnRyeSAqaHlwZnNfY3JlYXRlX3N0cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZGVudHJ5ICpkaXIsCisJCQkJY29uc3QgY2hhciAqbmFtZSwgY2hhciAqc3RyaW5nKQoreworCWNoYXIgKmJ1ZmZlcjsKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CisKKwlidWZmZXIgPSBrbWFsbG9jKHN0cmxlbihzdHJpbmcpICsgMiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCXNwcmludGYoYnVmZmVyLCAiJXNcbiIsIHN0cmluZyk7CisJZGVudHJ5ID0KKwkgICAgaHlwZnNfY3JlYXRlX2ZpbGUoc2IsIGRpciwgbmFtZSwgYnVmZmVyLCBTX0lGUkVHIHwgUkVHX0ZJTEVfTU9ERSk7CisJaWYgKElTX0VSUihkZW50cnkpKSB7CisJCWtmcmVlKGJ1ZmZlcik7CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCX0KKwloeXBmc19hZGRfZGVudHJ5KGRlbnRyeSk7CisJcmV0dXJuIGRlbnRyeTsKK30KKworc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaHlwZnNfZmlsZV9vcHMgPSB7CisJLm9wZW4JCT0gaHlwZnNfb3BlbiwKKwkucmVsZWFzZQk9IGh5cGZzX3JlbGVhc2UsCisJLnJlYWQJCT0gZG9fc3luY19yZWFkLAorCS53cml0ZQkJPSBkb19zeW5jX3dyaXRlLAorCS5haW9fcmVhZAk9IGh5cGZzX2Fpb19yZWFkLAorCS5haW9fd3JpdGUJPSBoeXBmc19haW9fd3JpdGUsCit9OworCitzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgaHlwZnNfdHlwZSA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm5hbWUJCT0gInMzOTBfaHlwZnMiLAorCS5nZXRfc2IJCT0gaHlwZnNfZ2V0X3N1cGVyLAorCS5raWxsX3NiCT0gaHlwZnNfa2lsbF9zdXBlcgorfTsKKworc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIGh5cGZzX3Nfb3BzID0geworCS5zdGF0ZnMJCT0gc2ltcGxlX3N0YXRmcywKKwkuZHJvcF9pbm9kZQk9IGh5cGZzX2Ryb3BfaW5vZGUsCit9OworCitzdGF0aWMgZGVjbF9zdWJzeXMoczM5MCwgTlVMTCwgTlVMTCk7CisKK3N0YXRpYyBpbnQgX19pbml0IGh5cGZzX2luaXQodm9pZCkKK3sKKwlpbnQgcmM7CisKKwlpZiAoTUFDSElORV9JU19WTSkKKwkJcmV0dXJuIC1FTk9EQVRBOworCWlmIChoeXBmc19kaWFnX2luaXQoKSkgeworCQlyYyA9IC1FTk9EQVRBOworCQlnb3RvIGZhaWxfZGlhZzsKKwl9CisJa3NldF9zZXRfa3NldF9zKCZzMzkwX3N1YnN5cywgaHlwZXJ2aXNvcl9zdWJzeXMpOworCXJjID0gc3Vic3lzdGVtX3JlZ2lzdGVyKCZzMzkwX3N1YnN5cyk7CisJaWYgKHJjKQorCQlnb3RvIGZhaWxfc3lzZnM7CisJcmMgPSByZWdpc3Rlcl9maWxlc3lzdGVtKCZoeXBmc190eXBlKTsKKwlpZiAocmMpCisJCWdvdG8gZmFpbF9maWxlc3lzdGVtOworCXJldHVybiAwOworCitmYWlsX2ZpbGVzeXN0ZW06CisJc3Vic3lzdGVtX3VucmVnaXN0ZXIoJnMzOTBfc3Vic3lzKTsKK2ZhaWxfc3lzZnM6CisJaHlwZnNfZGlhZ19leGl0KCk7CitmYWlsX2RpYWc6CisJcHJpbnRrKEtFUk5fRVJSICJoeXBmczogSW5pdGlhbGl6YXRpb24gZmFpbGVkIHdpdGggcmMgPSAlaS5cbiIsIHJjKTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBoeXBmc19leGl0KHZvaWQpCit7CisJaHlwZnNfZGlhZ19leGl0KCk7CisJdW5yZWdpc3Rlcl9maWxlc3lzdGVtKCZoeXBmc190eXBlKTsKKwlzdWJzeXN0ZW1fdW5yZWdpc3RlcigmczM5MF9zdWJzeXMpOworfQorCittb2R1bGVfaW5pdChoeXBmc19pbml0KQorbW9kdWxlX2V4aXQoaHlwZnNfZXhpdCkKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FVVEhPUigiTWljaGFlbCBIb2x6aGV1IDxob2x6aGV1QGRlLmlibS5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oInMzOTAgSHlwZXJ2aXNvciBGaWxlc3lzdGVtIik7CmRpZmYgLS1naXQgYS9hcmNoL3NoNjQva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9zaDY0L2tlcm5lbC9zaWduYWwuYwppbmRleCAzZWE4OTI5Li45ZTJmZmM0IDEwMDY0NAotLS0gYS9hcmNoL3NoNjQva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvc2g2NC9rZXJuZWwvc2lnbmFsLmMKQEAgLTQwNyw3ICs0MDcsNyBAQAogc3RhdGljIGlubGluZSB2b2lkIF9fdXNlciAqCiBnZXRfc2lnZnJhbWUoc3RydWN0IGtfc2lnYWN0aW9uICprYSwgdW5zaWduZWQgbG9uZyBzcCwgc2l6ZV90IGZyYW1lX3NpemUpCiB7Ci0JaWYgKChrYS0+c2Euc2FfZmxhZ3MgJiBTQV9PTlNUQUNLKSAhPSAwICYmICEgb25fc2lnX3N0YWNrKHNwKSkKKwlpZiAoKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spICE9IDAgJiYgISBzYXNfc3NfZmxhZ3Moc3ApKQogCQlzcCA9IGN1cnJlbnQtPnNhc19zc19zcCArIGN1cnJlbnQtPnNhc19zc19zaXplOwogCiAJcmV0dXJuICh2b2lkIF9fdXNlciAqKSgoc3AgLSBmcmFtZV9zaXplKSAmIC04dWwpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGNpYy5jCmluZGV4IDQyMDAyYjcuLmJjZGY1YWQgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BjaWMuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9wY2ljLmMKQEAgLTg5NiwxMyArODk2LDYgQEAKIAlyZXR1cm4gMSA8PCBpcnFfbnI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY2hhciAqcGNpY19pcnFfaXRvYSh1bnNpZ25lZCBpbnQgaXJxKQotewotCXN0YXRpYyBjaGFyIGJ1ZmZbMTZdOwotCXNwcmludGYoYnVmZiwgIiVkIiwgaXJxKTsKLQlyZXR1cm4gYnVmZjsKLX0KLQogc3RhdGljIHZvaWQgcGNpY19kaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQgaXJxX25yKQogewogCXVuc2lnbmVkIGxvbmcgbWFzaywgZmxhZ3M7CkBAIC05NTUsNyArOTQ4LDYgQEAKIAlCVEZJWFVQU0VUX0NBTEwoY2xlYXJfY2xvY2tfaXJxLCBwY2ljX2NsZWFyX2Nsb2NrX2lycSwgQlRGSVhVUENBTExfTk9STSk7CiAJQlRGSVhVUFNFVF9DQUxMKGNsZWFyX3Byb2ZpbGVfaXJxLCBwY2ljX2NsZWFyX3Byb2ZpbGVfaXJxLCBCVEZJWFVQQ0FMTF9OT1JNKTsKIAlCVEZJWFVQU0VUX0NBTEwobG9hZF9wcm9maWxlX2lycSwgcGNpY19sb2FkX3Byb2ZpbGVfaXJxLCBCVEZJWFVQQ0FMTF9OT1JNKTsKLQlCVEZJWFVQU0VUX0NBTEwoX19pcnFfaXRvYSwgcGNpY19pcnFfaXRvYSwgQlRGSVhVUENBTExfTk9STSk7CiB9CiAKIGludCBwY2liaW9zX2Fzc2lnbl9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvc3BhcmMva2VybmVsL3NldHVwLmMKaW5kZXggMzUwOWU0My4uYTg5M2E5YyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9zZXR1cC5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvcm9vdF9kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9jcHUuaD4KIAogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KQEAgLTMzMSw3ICszMzIsNyBAQAogCWlmICghcm9vdF9mbGFncykKIAkJcm9vdF9tb3VudGZsYWdzICY9IH5NU19SRE9OTFk7CiAJUk9PVF9ERVYgPSBvbGRfZGVjb2RlX2Rldihyb290X2Rldik7Ci0jaWZkZWYgQ09ORklHX0JMS19ERVZfSU5JVFJECisjaWZkZWYgQ09ORklHX0JMS19ERVZfUkFNCiAJcmRfaW1hZ2Vfc3RhcnQgPSByYW1fZmxhZ3MgJiBSQU1ESVNLX0lNQUdFX1NUQVJUX01BU0s7CiAJcmRfcHJvbXB0ID0gKChyYW1fZmxhZ3MgJiBSQU1ESVNLX1BST01QVF9GTEFHKSAhPSAwKTsKIAlyZF9kb2xvYWQgPSAoKHJhbV9mbGFncyAmIFJBTURJU0tfTE9BRF9GTEFHKSAhPSAwKTsJCkBAIC0zNDgsNiArMzQ5LDggQEAKIAlpbml0X21tLmNvbnRleHQgPSAodW5zaWduZWQgbG9uZykgTk9fQ09OVEVYVDsKIAlpbml0X3Rhc2sudGhyZWFkLmtyZWdzID0gJmZha2Vfc3dhcHBlcl9yZWdzOwogCisJc21wX3NldHVwX2NwdV9wb3NzaWJsZV9tYXAoKTsKKwogCXBhZ2luZ19pbml0KCk7CiB9CiAKQEAgLTM4OSw2ICszOTIsOCBAQAogZXh0ZXJuIGNoYXIgKnNwYXJjX2NwdV90eXBlOwogZXh0ZXJuIGNoYXIgKnNwYXJjX2ZwdV90eXBlOwogCitzdGF0aWMgaW50IG5jcHVzX3Byb2JlZDsKKwogc3RhdGljIGludCBzaG93X2NwdWluZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpfX3VudXNlZCkKIHsKIAlzZXFfcHJpbnRmKG0sCkBAIC00MTEsNyArNDE2LDcgQEAKIAkJICAgcm9tdmVjLT5wdl9wcmludHJldiA+PiAxNiwKIAkJICAgcm9tdmVjLT5wdl9wcmludHJldiAmIDB4ZmZmZiwKIAkJICAgJmNwdXR5cHZhbCwKLQkJICAgbnVtX3Bvc3NpYmxlX2NwdXMoKSwKKwkJICAgbmNwdXNfcHJvYmVkLAogCQkgICBudW1fb25saW5lX2NwdXMoKQogI2lmbmRlZiBDT05GSUdfU01QCiAJCSAgICwgY3B1X2RhdGEoMCkudWRlbGF5X3ZhbC8oNTAwMDAwL0haKSwKQEAgLTQ3MSwzICs0NzYsMzAgQEAKIAogaW50IHNlcmlhbF9jb25zb2xlID0gLTE7CiBpbnQgc3RvcF9hX2VuYWJsZWQgPSAxOworCitzdGF0aWMgaW50IF9faW5pdCB0b3BvbG9neV9pbml0KHZvaWQpCit7CisJaW50IGksIG5jcHVzLCBlcnI7CisKKwkvKiBDb3VudCB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsbHkgcHJlc2VudCBwcm9jZXNzb3JzIGluCisJICogdGhlIG1hY2hpbmUsIGV2ZW4gb24gdW5pcHJvY2Vzc29yLCBzbyB0aGF0IC9wcm9jL2NwdWluZm8KKwkgKiBvdXRwdXQgaXMgY29uc2lzdGVudCB3aXRoIDIuNC54CisJICovCisJbmNwdXMgPSAwOworCXdoaWxlICghY3B1X2ZpbmRfYnlfaW5zdGFuY2UobmNwdXMsIE5VTEwsIE5VTEwpKQorCQluY3B1cysrOworCW5jcHVzX3Byb2JlZCA9IG5jcHVzOworCisJZXJyID0gMDsKKwlmb3JfZWFjaF9vbmxpbmVfY3B1KGkpIHsKKwkJc3RydWN0IGNwdSAqcCA9IGt6YWxsb2Moc2l6ZW9mKCpwKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghcCkKKwkJCWVyciA9IC1FTk9NRU07CisJCWVsc2UKKwkJCXJlZ2lzdGVyX2NwdShwLCBpLCBOVUxMKTsKKwl9CisKKwlyZXR1cm4gZXJyOworfQorCitzdWJzeXNfaW5pdGNhbGwodG9wb2xvZ3lfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9zbXAuYyBiL2FyY2gvc3BhcmMva2VybmVsL3NtcC5jCmluZGV4IDQwYjQyYzguLjYxMzVkNGYgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3NtcC5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3NtcC5jCkBAIC01OCw3ICs1OCw3IEBACiAvKiBVc2VkIHRvIG1ha2UgYml0b3BzIGF0b21pYyAqLwogdW5zaWduZWQgY2hhciBiaXRvcHNfc3BpbmxvY2sgPSAwOwogCi12b2lkIF9faW5pdCBzbXBfc3RvcmVfY3B1X2luZm8oaW50IGlkKQordm9pZCBfX2NwdWluaXQgc21wX3N0b3JlX2NwdV9pbmZvKGludCBpZCkKIHsKIAlpbnQgY3B1X25vZGU7CiAKQEAgLTI2NywyMiArMjY3LDE4IEBACiB2b2lkIF9faW5pdCBzbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVkIGludCBtYXhfY3B1cykKIHsKIAlleHRlcm4gdm9pZCBzbXA0bV9ib290X2NwdXModm9pZCk7Ci0JaW50IGksIGNwdWlkLCBuY3B1cywgZXh0cmE7CisJaW50IGksIGNwdWlkLCBleHRyYTsKIAogCUJVR19PTihzcGFyY19jcHVfbW9kZWwgIT0gc3VuNG0pOwogCXByaW50aygiRW50ZXJpbmcgU01QIE1vZGUuLi5cbiIpOwogCi0JbmNwdXMgPSAxOwogCWV4dHJhID0gMDsKIAlmb3IgKGkgPSAwOyAhY3B1X2ZpbmRfYnlfaW5zdGFuY2UoaSwgTlVMTCwgJmNwdWlkKTsgaSsrKSB7Ci0JCWlmIChjcHVpZCA9PSBib290X2NwdV9pZCkKLQkJCWNvbnRpbnVlOwotCQlpZiAoY3B1aWQgPCBOUl9DUFVTICYmIG5jcHVzKysgPCBtYXhfY3B1cykKLQkJCWNwdV9zZXQoY3B1aWQsIHBoeXNfY3B1X3ByZXNlbnRfbWFwKTsKLQkJZWxzZQorCQlpZiAoY3B1aWQgPj0gTlJfQ1BVUykKIAkJCWV4dHJhKys7CiAJfQotCWlmIChtYXhfY3B1cyA+PSBOUl9DUFVTICYmIGV4dHJhKQorCS8qIGkgPSBudW1iZXIgb2YgY3B1cyAqLworCWlmIChleHRyYSAmJiBtYXhfY3B1cyA+IGkgLSBleHRyYSkKIAkJcHJpbnRrKCJXYXJuaW5nOiBOUl9DUFVTIGlzIHRvbyBsb3cgdG8gc3RhcnQgYWxsIGNwdXNcbiIpOwogCiAJc21wX3N0b3JlX2NwdV9pbmZvKGJvb3RfY3B1X2lkKTsKQEAgLTI5MCw3ICsyODYsMjUgQEAKIAlzbXA0bV9ib290X2NwdXMoKTsKIH0KIAotdm9pZCBfX2RldmluaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZCkKKy8qIFNldCB0aGlzIHVwIGVhcmx5IHNvIHRoYXQgdGhpbmdzIGxpa2UgdGhlIHNjaGVkdWxlciBjYW4gaW5pdAorICogcHJvcGVybHkuICBXZSB1c2UgdGhlIHNhbWUgY3B1IG1hc2sgZm9yIGJvdGggdGhlIHByZXNlbnQgYW5kCisgKiBwb3NzaWJsZSBjcHUgbWFwLgorICovCit2b2lkIF9faW5pdCBzbXBfc2V0dXBfY3B1X3Bvc3NpYmxlX21hcCh2b2lkKQoreworCWludCBpbnN0YW5jZSwgbWlkOworCisJaW5zdGFuY2UgPSAwOworCXdoaWxlICghY3B1X2ZpbmRfYnlfaW5zdGFuY2UoaW5zdGFuY2UsIE5VTEwsICZtaWQpKSB7CisJCWlmIChtaWQgPCBOUl9DUFVTKSB7CisJCQljcHVfc2V0KG1pZCwgcGh5c19jcHVfcHJlc2VudF9tYXApOworCQkJY3B1X3NldChtaWQsIGNwdV9wcmVzZW50X21hcCk7CisJCX0KKwkJaW5zdGFuY2UrKzsKKwl9Cit9CisKK3ZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpCiB7CiAJaW50IGNwdWlkID0gaGFyZF9zbXBfcHJvY2Vzc29yX2lkKCk7CiAKQEAgLTMwNiw3ICszMjAsNyBAQAogCWNwdV9zZXQoY3B1aWQsIHBoeXNfY3B1X3ByZXNlbnRfbWFwKTsKIH0KIAotaW50IF9fZGV2aW5pdCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1KQoraW50IF9fY3B1aW5pdCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1KQogewogCWV4dGVybiBpbnQgc21wNG1fYm9vdF9vbmVfY3B1KGludCk7CiAJaW50IHJldDsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL3NwYXJjX2tzeW1zLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9zcGFyY19rc3ltcy5jCmluZGV4IDRiMzc2ZmEuLmZkN2RlYWIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3NwYXJjX2tzeW1zLmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvc3BhcmNfa3N5bXMuYwpAQCAtMTYzLDcgKzE2Myw2IEBACiAjZW5kaWYKIEVYUE9SVF9TWU1CT0woQlRGSVhVUF9DQUxMKGVuYWJsZV9pcnEpKTsKIEVYUE9SVF9TWU1CT0woQlRGSVhVUF9DQUxMKGRpc2FibGVfaXJxKSk7Ci1FWFBPUlRfU1lNQk9MKEJURklYVVBfQ0FMTChfX2lycV9pdG9hKSk7CiBFWFBPUlRfU1lNQk9MKEJURklYVVBfQ0FMTChtbXVfdW5sb2NrYXJlYSkpOwogRVhQT1JUX1NZTUJPTChCVEZJWFVQX0NBTEwobW11X2xvY2thcmVhKSk7CiBFWFBPUlRfU1lNQk9MKEJURklYVVBfQ0FMTChtbXVfZ2V0X3Njc2lfc2dsKSk7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9zdW40Y19pcnEuYyBiL2FyY2gvc3BhcmMva2VybmVsL3N1bjRjX2lycS5jCmluZGV4IDNkNmE5OTAuLjBmMmQ4ZDkgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3N1bjRjX2lycS5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3N1bjRjX2lycS5jCkBAIC0xOTgsOCArMTk4LDYgQEAKIHN0YXRpYyB2b2lkIHN1bjRjX25vcCh2b2lkKSB7fQogI2VuZGlmCiAKLWV4dGVybiBjaGFyICpzdW40bV9pcnFfaXRvYSh1bnNpZ25lZCBpbnQgaXJxKTsKLQogdm9pZCBfX2luaXQgc3VuNGNfaW5pdF9JUlEodm9pZCkKIHsKIAlzdHJ1Y3QgbGludXhfcHJvbV9yZWdpc3RlcnMgaW50X3JlZ3NbMl07CkBAIC0yMzgsNyArMjM2LDYgQEAKIAlCVEZJWFVQU0VUX0NBTEwoY2xlYXJfY2xvY2tfaXJxLCBzdW40Y19jbGVhcl9jbG9ja19pcnEsIEJURklYVVBDQUxMX05PUk0pOwogCUJURklYVVBTRVRfQ0FMTChjbGVhcl9wcm9maWxlX2lycSwgc3VuNGNfY2xlYXJfcHJvZmlsZV9pcnEsIEJURklYVVBDQUxMX05PUCk7CiAJQlRGSVhVUFNFVF9DQUxMKGxvYWRfcHJvZmlsZV9pcnEsIHN1bjRjX2xvYWRfcHJvZmlsZV9pcnEsIEJURklYVVBDQUxMX05PUCk7Ci0JQlRGSVhVUFNFVF9DQUxMKF9faXJxX2l0b2EsIHN1bjRtX2lycV9pdG9hLCBCVEZJWFVQQ0FMTF9OT1JNKTsKIAlzcGFyY19pbml0X3RpbWVycyA9IHN1bjRjX2luaXRfdGltZXJzOwogI2lmZGVmIENPTkZJR19TTVAKIAlCVEZJWFVQU0VUX0NBTEwoc2V0X2NwdV9pbnQsIHN1bjRjX25vcCwgQlRGSVhVUENBTExfTk9QKTsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL3N1bjRkX2lycS5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvc3VuNGRfaXJxLmMKaW5kZXggY2E2NTZkOS4uOWMzMGUzNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvc3VuNGRfaXJxLmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvc3VuNGRfaXJxLmMKQEAgLTU2MCwxNyArNTYwLDYgQEAKIAl9CiB9CiAKLXN0YXRpYyBjaGFyICpzdW40ZF9pcnFfaXRvYSh1bnNpZ25lZCBpbnQgaXJxKQotewotCXN0YXRpYyBjaGFyIGJ1ZmZbMTZdOwotCQotCWlmIChpcnEgPCAoMSA8PCA1KSkKLQkJc3ByaW50ZihidWZmLCAiJWQiLCBpcnEpOwotCWVsc2UKLQkJc3ByaW50ZihidWZmLCAiJWQsJXgiLCBzYnVzX3RvX3BpbFsoaXJxID4+IDIpICYgN10sIGlycSk7Ci0JcmV0dXJuIGJ1ZmY7Ci19Ci0KIHZvaWQgX19pbml0IHN1bjRkX2luaXRfSVJRKHZvaWQpCiB7CiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKQEAgLTU4MSw3ICs1NzAsNiBAQAogCUJURklYVVBTRVRfQ0FMTChjbGVhcl9jbG9ja19pcnEsIHN1bjRkX2NsZWFyX2Nsb2NrX2lycSwgQlRGSVhVUENBTExfTk9STSk7CiAJQlRGSVhVUFNFVF9DQUxMKGNsZWFyX3Byb2ZpbGVfaXJxLCBzdW40ZF9jbGVhcl9wcm9maWxlX2lycSwgQlRGSVhVUENBTExfTk9STSk7CiAJQlRGSVhVUFNFVF9DQUxMKGxvYWRfcHJvZmlsZV9pcnEsIHN1bjRkX2xvYWRfcHJvZmlsZV9pcnEsIEJURklYVVBDQUxMX05PUk0pOwotCUJURklYVVBTRVRfQ0FMTChfX2lycV9pdG9hLCBzdW40ZF9pcnFfaXRvYSwgQlRGSVhVUENBTExfTk9STSk7CiAJc3BhcmNfaW5pdF90aW1lcnMgPSBzdW40ZF9pbml0X3RpbWVyczsKICNpZmRlZiBDT05GSUdfU01QCiAJQlRGSVhVUFNFVF9DQUxMKHNldF9jcHVfaW50LCBzdW40ZF9zZXRfY3B1X2ludCwgQlRGSVhVUENBTExfTk9STSk7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9zdW40bV9pcnEuYyBiL2FyY2gvc3BhcmMva2VybmVsL3N1bjRtX2lycS5jCmluZGV4IDM5ZDcxMmMuLmEyOTZjMTMgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3N1bjRtX2lycS5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3N1bjRtX2lycS5jCkBAIC0yMjksMTMgKzIyOSw2IEBACiAJc3VuNG1fdGltZXJzLT5jcHVfdGltZXJzW2NwdV0ubDE0X3RpbWVyX2xpbWl0ID0gbGltaXQ7CiB9CiAKLWNoYXIgKnN1bjRtX2lycV9pdG9hKHVuc2lnbmVkIGludCBpcnEpCi17Ci0Jc3RhdGljIGNoYXIgYnVmZlsxNl07Ci0Jc3ByaW50ZihidWZmLCAiJWQiLCBpcnEpOwotCXJldHVybiBidWZmOwotfQotCiBzdGF0aWMgdm9pZCBfX2luaXQgc3VuNG1faW5pdF90aW1lcnMoaXJxcmV0dXJuX3QgKCpjb3VudGVyX2ZuKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKikpCiB7CiAJaW50IHJlZ19jb3VudCwgaXJxLCBjcHU7CkBAIC0zODgsNyArMzgxLDYgQEAKIAlCVEZJWFVQU0VUX0NBTEwoY2xlYXJfY2xvY2tfaXJxLCBzdW40bV9jbGVhcl9jbG9ja19pcnEsIEJURklYVVBDQUxMX05PUk0pOwogCUJURklYVVBTRVRfQ0FMTChjbGVhcl9wcm9maWxlX2lycSwgc3VuNG1fY2xlYXJfcHJvZmlsZV9pcnEsIEJURklYVVBDQUxMX05PUk0pOwogCUJURklYVVBTRVRfQ0FMTChsb2FkX3Byb2ZpbGVfaXJxLCBzdW40bV9sb2FkX3Byb2ZpbGVfaXJxLCBCVEZJWFVQQ0FMTF9OT1JNKTsKLQlCVEZJWFVQU0VUX0NBTEwoX19pcnFfaXRvYSwgc3VuNG1faXJxX2l0b2EsIEJURklYVVBDQUxMX05PUk0pOwogCXNwYXJjX2luaXRfdGltZXJzID0gc3VuNG1faW5pdF90aW1lcnM7CiAjaWZkZWYgQ09ORklHX1NNUAogCUJURklYVVBTRVRfQ0FMTChzZXRfY3B1X2ludCwgc3VuNG1fc2VuZF9pcGksIEJURklYVVBDQUxMX05PUk0pOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvc3VuNG1fc21wLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9zdW40bV9zbXAuYwppbmRleCA3MGIzNzVhLi4zYjMyMDk2IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9zdW40bV9zbXAuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9zdW40bV9zbXAuYwpAQCAtNjYsNyArNjYsNyBAQAogc3RhdGljIHZvaWQgc21wX3NldHVwX3BlcmNwdV90aW1lcih2b2lkKTsKIGV4dGVybiB2b2lkIGNwdV9wcm9iZSh2b2lkKTsKIAotdm9pZCBfX2luaXQgc21wNG1fY2FsbGluKHZvaWQpCit2b2lkIF9fY3B1aW5pdCBzbXA0bV9jYWxsaW4odm9pZCkKIHsKIAlpbnQgY3B1aWQgPSBoYXJkX3NtcF9wcm9jZXNzb3JfaWQoKTsKIApAQCAtMTEyLDEzICsxMTIsOCBAQAogCWxvY2FsX2lycV9lbmFibGUoKTsKIAogCWNwdV9zZXQoY3B1aWQsIGNwdV9vbmxpbmVfbWFwKTsKLQkvKiBsYXN0IG9uZSBpbiBnZXRzIGFsbCB0aGUgaW50ZXJydXB0cyAoZm9yIHRlc3RpbmcpICovCi0Jc2V0X2lycV91ZHQoYm9vdF9jcHVfaWQpOwogfQogCi1leHRlcm4gdm9pZCBpbml0X0lSUSh2b2lkKTsKLWV4dGVybiB2b2lkIGNwdV9wYW5pYyh2b2lkKTsKLQogLyoKICAqCUN5Y2xlIHRocm91Z2ggdGhlIHByb2Nlc3NvcnMgYXNraW5nIHRoZSBQUk9NIHRvIHN0YXJ0IGVhY2ggb25lLgogICovCkBAIC0xMzQsNyArMTI5LDcgQEAKIAlsb2NhbF9mbHVzaF9jYWNoZV9hbGwoKTsKIH0KIAotaW50IHNtcDRtX2Jvb3Rfb25lX2NwdShpbnQgaSkKK2ludCBfX2NwdWluaXQgc21wNG1fYm9vdF9vbmVfY3B1KGludCBpKQogewogCWV4dGVybiB1bnNpZ25lZCBsb25nIHN1bjRtX2NwdV9zdGFydHVwOwogCXVuc2lnbmVkIGxvbmcgKmVudHJ5ID0gJnN1bjRtX2NwdV9zdGFydHVwOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9tbS9pb21tdS5jIGIvYXJjaC9zcGFyYy9tbS9pb21tdS5jCmluZGV4IDc3ODQwYzguLjcyMTU4NDkgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbW0vaW9tbXUuYworKysgYi9hcmNoL3NwYXJjL21tL2lvbW11LmMKQEAgLTE0NCw4ICsxNDQsOSBAQAogCXVuc2lnbmVkIGxvbmcgc3RhcnQ7CiAJdW5zaWduZWQgbG9uZyBlbmQ7CiAKLQlzdGFydCA9ICh1bnNpZ25lZCBsb25nKWlvcHRlICYgUEFHRV9NQVNLOworCXN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpaW9wdGU7CiAJZW5kID0gUEFHRV9BTElHTihzdGFydCArIG5pb3B0ZSpzaXplb2YoaW9wdGVfdCkpOworCXN0YXJ0ICY9IFBBR0VfTUFTSzsKIAlpZiAodmlraW5nX214Y2NfcHJlc2VudCkgewogCQl3aGlsZShzdGFydCA8IGVuZCkgewogCQkJdmlraW5nX214Y2NfZmx1c2hfcGFnZShzdGFydCk7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQvS2NvbmZpZyBiL2FyY2gvc3BhcmM2NC9LY29uZmlnCmluZGV4IDQzYTY2ZjUuLmE3YTExMWQgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9LY29uZmlnCisrKyBiL2FyY2gvc3BhcmM2NC9LY29uZmlnCkBAIC04Nyw2ICs4NywxMCBAQAogCWRlcGVuZHMgb24gQ09NUEFUICYmIFNZU1ZJUEMKIAlkZWZhdWx0IHkKIAorY29uZmlnIEdFTkVSSUNfSEFSRElSUVMKKwlib29sCisJZGVmYXVsdCB5CisKIG1lbnUgIkdlbmVyYWwgbWFjaGluZSBzZXR1cCIKIAogY29uZmlnIFNNUApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2RlZmNvbmZpZyBiL2FyY2gvc3BhcmM2NC9kZWZjb25maWcKaW5kZXggZjA5YTcwYi4uOWRhNzVmOCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2RlZmNvbmZpZworKysgYi9hcmNoL3NwYXJjNjQvZGVmY29uZmlnCkBAIC0xLDcgKzEsNyBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBMaW51eCBrZXJuZWwgdmVyc2lvbjogMi42LjE3LXJjMwotIyBGcmkgTWF5IDEyIDEyOjQzOjQ5IDIwMDYKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xNworIyBUdWUgSnVuIDIwIDAxOjI2OjQzIDIwMDYKICMKIENPTkZJR19TUEFSQz15CiBDT05GSUdfU1BBUkM2ND15CkBAIC04Nyw2ICs4Nyw3IEBACiAjIENPTkZJR19ERUZBVUxUX05PT1AgaXMgbm90IHNldAogQ09ORklHX0RFRkFVTFRfSU9TQ0hFRD0iYW50aWNpcGF0b3J5IgogQ09ORklHX1NZU1ZJUENfQ09NUEFUPXkKK0NPTkZJR19HRU5FUklDX0hBUkRJUlFTPXkKIAogIwogIyBHZW5lcmFsIG1hY2hpbmUgc2V0dXAKQEAgLTE4Myw2ICsxODQsOCBAQAogQ09ORklHX0lORVRfSVBDT01QPXkKIENPTkZJR19JTkVUX1hGUk1fVFVOTkVMPXkKIENPTkZJR19JTkVUX1RVTk5FTD15CitDT05GSUdfSU5FVF9YRlJNX01PREVfVFJBTlNQT1JUPXkKK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UVU5ORUw9eQogQ09ORklHX0lORVRfRElBRz15CiBDT05GSUdfSU5FVF9UQ1BfRElBRz15CiBDT05GSUdfVENQX0NPTkdfQURWQU5DRUQ9eQpAQCAtMTk4LDYgKzIwMSw5IEBACiBDT05GSUdfVENQX0NPTkdfSFlCTEE9bQogQ09ORklHX1RDUF9DT05HX1ZFR0FTPW0KIENPTkZJR19UQ1BfQ09OR19TQ0FMQUJMRT1tCitDT05GSUdfVENQX0NPTkdfTFA9bQorQ09ORklHX1RDUF9DT05HX1ZFTk89bQorQ09ORklHX1RDUF9DT05HX0NPTVBPVU5EPW0KIENPTkZJR19JUFY2PW0KIENPTkZJR19JUFY2X1BSSVZBQ1k9eQogQ09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQpAQCAtMjA3LDcgKzIxMywxMCBAQAogQ09ORklHX0lORVQ2X0lQQ09NUD1tCiBDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUw9bQogQ09ORklHX0lORVQ2X1RVTk5FTD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RSQU5TUE9SVD1tCitDT05GSUdfSU5FVDZfWEZSTV9NT0RFX1RVTk5FTD1tCiBDT05GSUdfSVBWNl9UVU5ORUw9bQorIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0CiAKICMKQEAgLTI2MCw2ICsyNjksNyBAQAogIyBOZXR3b3JrIHRlc3RpbmcKICMKIENPTkZJR19ORVRfUEtUR0VOPW0KK0NPTkZJR19ORVRfVENQUFJPQkU9bQogIyBDT05GSUdfSEFNUkFESU8gaXMgbm90IHNldAogIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CiAjIENPTkZJR19CVCBpcyBub3Qgc2V0CkBAIC01NjIsNiArNTcyLDcgQEAKICMgQ09ORklHX0NIRUxTSU9fVDEgaXMgbm90IHNldAogIyBDT05GSUdfSVhHQiBpcyBub3Qgc2V0CiAjIENPTkZJR19TMklPIGlzIG5vdCBzZXQKKyMgQ09ORklHX01ZUkkxMEdFIGlzIG5vdCBzZXQKIAogIwogIyBUb2tlbiBSaW5nIGRldmljZXMKQEAgLTgxMSw2ICs4MjIsNyBAQAogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fVjRMMj15CiAKICMKICMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwpAQCAtMTEzNSw2ICsxMTQ3LDE5IEBACiAjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAogCiAjCisjIERNQSBFbmdpbmUgc3VwcG9ydAorIworIyBDT05GSUdfRE1BX0VOR0lORSBpcyBub3Qgc2V0CisKKyMKKyMgRE1BIENsaWVudHMKKyMKKworIworIyBETUEgRGV2aWNlcworIworCisjCiAjIE1pc2MgTGludXgvU1BBUkMgZHJpdmVycwogIwogQ09ORklHX1NVTl9PUEVOUFJPTUlPPW0KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvZGV2aWNlcy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9kZXZpY2VzLmMKaW5kZXggMDA3ZTg5Mi4uMGRkOTVhZSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9kZXZpY2VzLmMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9kZXZpY2VzLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQlyZXR1cm4gc3VuNHZfYnVpbGRfaXJxKHN1bjR2X3ZkZXZfZGV2aGFuZGxlLCBpcnEsIDUsIDApOworCXJldHVybiBzdW40dl9idWlsZF9pcnEoc3VuNHZfdmRldl9kZXZoYW5kbGUsIGlycSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpjcHVfbWlkX3Byb3Aodm9pZCkKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvZW50cnkuUyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvZW50cnkuUwppbmRleCA2ZDBiM2VkLi5iZTg1Y2UyIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9lbnRyeS5TCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8YXNtL2VzdGF0ZS5oPgogI2luY2x1ZGUgPGFzbS9hdXhpby5oPgogI2luY2x1ZGUgPGFzbS9zZmFmc3IuaD4KKyNpbmNsdWRlIDxhc20vcGlsLmg+CiAKICNkZWZpbmUgY3VycHRyICAgICAgZzYKIApAQCAtNDMxLDIwICs0MzIsMTYgQEAKIAltZW1iYXIJCSNTeW5jCiAKIAlzZXRoaQkJJWhpKGl2ZWN0b3JfdGFibGUpLCAlZzIKLQlzbGx4CQklZzMsIDUsICVnMworCXNsbHgJCSVnMywgMywgJWczCiAJb3IJCSVnMiwgJWxvKGl2ZWN0b3JfdGFibGUpLCAlZzIKIAlhZGQJCSVnMiwgJWczLCAlZzMKLQlsZHViCQlbJWczICsgMHgwNF0sICVnNAkvKiBwaWwgKi8KLQltb3YJCTEsICVnMgotCXNsbHgJCSVnMiwgJWc0LCAlZzIKLQlzbGx4CQklZzQsIDIsICVnNAogCiAJVFJBUF9MT0FEX0lSUV9XT1JLKCVnNiwgJWcxKQogCi0JbGR1dwkJWyVnNiArICVnNF0sICVnNQkvKiBnNSA9IGlycV93b3JrKGNwdSwgcGlsKSAqLworCWxkdXcJCVslZzZdLCAlZzUJCS8qIGc1ID0gaXJxX3dvcmsoY3B1KSAqLwogCXN0dwkJJWc1LCBbJWczICsgMHgwMF0JLyogYnVja2V0LT5pcnFfY2hhaW4gPSBnNSAqLwotCXN0dwkJJWczLCBbJWc2ICsgJWc0XQkvKiBpcnFfd29yayhjcHUsIHBpbCkgPSBidWNrZXQgKi8KLQl3cgkJJWcyLCAweDAsICVzZXRfc29mdGludAorCXN0dwkJJWczLCBbJWc2XQkJLyogaXJxX3dvcmsoY3B1KSA9IGJ1Y2tldCAqLworCXdyCQklZzAsIDEgPDwgUElMX0RFVklDRV9JUlEsICVzZXRfc29mdGludAogCXJldHJ5CiBkb19pdmVjX3hjYWxsOgogCW1vdgkJMHg1MCwgJWcxCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL2lycS5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9pcnEuYwppbmRleCAxMWU2NDVjLi5hOGM5ZGM4IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL2lycS5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvaXJxLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KICNpbmNsdWRlIDxsaW51eC9ib290bWVtLmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CiAKICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgpAQCAtNDIsMTAgKzQzLDYgQEAKICNpbmNsdWRlIDxhc20vYXV4aW8uaD4KICNpbmNsdWRlIDxhc20vaGVhZC5oPgogCi0jaWZkZWYgQ09ORklHX1NNUAotc3RhdGljIHZvaWQgZGlzdHJpYnV0ZV9pcnFzKHZvaWQpOwotI2VuZGlmCi0KIC8qIFVQQSBub2RlcyBzZW5kIGludGVycnVwdCBwYWNrZXQgdG8gVWx0cmFTcGFyYyB3aXRoIGZpcnN0IGRhdGEgcmVnCiAgKiB2YWx1ZSBsb3cgNSAoNyBvbiBTdGFyZmlyZSkgYml0cyBob2xkaW5nIHRoZSBJUlEgaWRlbnRpZmllciBiZWluZwogICogZGVsaXZlcmVkLiAgV2UgbXVzdCB0cmFuc2xhdGUgdGhpcyBpbnRvIGEgbm9uLXZlY3RvciBJUlEgc28gd2UgY2FuCkBAIC01NywxMCArNTQsMjkgQEAKICAqIFRoZSBJVkVDIGhhbmRsZXIgZG9lcyBub3QgbmVlZCB0byBhY3QgYXRvbWljYWxseSwgdGhlIFBJTCBkaXNwYXRjaAogICogY29kZSB1c2VzIENBUyB0byBnZXQgYW4gYXRvbWljIHNuYXBzaG90IG9mIHRoZSBsaXN0IGFuZCBjbGVhciBpdAogICogYXQgdGhlIHNhbWUgdGltZS4KKyAqCisgKiBJZiB5b3UgbWFrZSBjaGFuZ2VzIHRvIGlub19idWNrZXQsIHBsZWFzZSB1cGRhdGUgaGFuZCBjb2RlZCBhc3NlbWJsZXIKKyAqIG9mIHRoZSB2ZWN0b3JlZCBpbnRlcnJ1cHQgdHJhcCBoYW5kbGVyKHMpIGluIGVudHJ5LlMgYW5kIHN1bjR2X2l2ZWMuUwogICovCitzdHJ1Y3QgaW5vX2J1Y2tldCB7CisJLyogTmV4dCBoYW5kbGVyIGluIHBlci1DUFUgSVJRIHdvcmtsaXN0LiAgV2Uga25vdyB0aGF0CisJICogYnVja2V0IHBvaW50ZXJzIGhhdmUgdGhlIGhpZ2ggMzItYml0cyBjbGVhciwgc28gdG8KKwkgKiBzYXZlIHNwYWNlIHdlIG9ubHkgc3RvcmUgdGhlIGJpdHMgd2UgbmVlZC4KKwkgKi8KKy8qMHgwMCovdW5zaWduZWQgaW50IGlycV9jaGFpbjsKIAorCS8qIFZpcnR1YWwgaW50ZXJydXB0IG51bWJlciBhc3NpZ25lZCB0byB0aGlzIElOTy4gICovCisvKjB4MDQqL3Vuc2lnbmVkIGludCB2aXJ0X2lycTsKK307CisKKyNkZWZpbmUgTlVNX0lWRUNTCShJTUFQX0lOUiArIDEpCiBzdHJ1Y3QgaW5vX2J1Y2tldCBpdmVjdG9yX3RhYmxlW05VTV9JVkVDU10gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKFNNUF9DQUNIRV9CWVRFUykpKTsKIAorI2RlZmluZSBfX2lycV9pbm8oaXJxKSBcCisgICAgICAgICgoKHN0cnVjdCBpbm9fYnVja2V0ICopKHVuc2lnbmVkIGxvbmcpKGlycSkpIC0gJml2ZWN0b3JfdGFibGVbMF0pCisjZGVmaW5lIF9fYnVja2V0KGlycSkgKChzdHJ1Y3QgaW5vX2J1Y2tldCAqKSh1bnNpZ25lZCBsb25nKShpcnEpKQorI2RlZmluZSBfX2lycShidWNrZXQpICgodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKShidWNrZXQpKQorCiAvKiBUaGlzIGhhcyB0byBiZSBpbiB0aGUgbWFpbiBrZXJuZWwgaW1hZ2UsIGl0IGNhbm5vdCBiZQogICogdHVybmVkIGludG8gcGVyLWNwdSBkYXRhLiAgVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBtYWluCiAgKiBrZXJuZWwgaW1hZ2UgaXMgbG9ja2VkIGludG8gdGhlIFRMQiBhbmQgdGhpcyBzdHJ1Y3R1cmUKQEAgLTY4LDcxICs4NCw4MiBAQAogICogYWNjZXNzIHRvIHRoaXMgc3RydWN0dXJlIHRha2VzIGEgVExCIG1pc3MgaXQgY291bGQgY2F1c2UKICAqIHRoZSA1LWxldmVsIHNwYXJjIHY5IHRyYXAgc3RhY2sgdG8gb3ZlcmZsb3cuCiAgKi8KLXN0cnVjdCBpcnFfd29ya19zdHJ1Y3QgewotCXVuc2lnbmVkIGludAlpcnFfd29ya2xpc3RzWzE2XTsKLX07Ci1zdHJ1Y3QgaXJxX3dvcmtfc3RydWN0IF9faXJxX3dvcmtbTlJfQ1BVU107Ci0jZGVmaW5lIGlycV93b3JrKF9fY3B1LCBfX3BpbCkJJihfX2lycV93b3JrWyhfX2NwdSldLmlycV93b3JrbGlzdHNbKF9fcGlsKV0pCisjZGVmaW5lIGlycV93b3JrKF9fY3B1KQkmKHRyYXBfYmxvY2tbKF9fY3B1KV0uaXJxX3dvcmtsaXN0KQogCi1zdGF0aWMgc3RydWN0IGlycWFjdGlvbiAqaXJxX2FjdGlvbltOUl9JUlFTKzFdOworc3RhdGljIHVuc2lnbmVkIGludCB2aXJ0X3RvX3JlYWxfaXJxX3RhYmxlW05SX0lSUVNdOworc3RhdGljIHVuc2lnbmVkIGNoYXIgdmlydF9pcnFfY3VyID0gMTsKIAotLyogVGhpcyBvbmx5IHN5bmNocm9uaXplcyBlbnRpdGllcyB3aGljaCBtb2RpZnkgSVJRIGhhbmRsZXIKLSAqIHN0YXRlIGFuZCBzb21lIHNlbGVjdGVkIHVzZXItbGV2ZWwgc3BvdHMgdGhhdCB3YW50IHRvCi0gKiByZWFkIHRoaW5ncyBpbiB0aGUgdGFibGUuICBJUlEgaGFuZGxlciBwcm9jZXNzaW5nIG9yZGVycwotICogaXRzJyBhY2Nlc3NlcyBzdWNoIHRoYXQgbm8gbG9ja2luZyBpcyBuZWVkZWQuCi0gKi8KLXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaXJxX2FjdGlvbl9sb2NrKTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHZpcnRfaXJxX2FsbG9jKHVuc2lnbmVkIGludCByZWFsX2lycSkKK3sKKwl1bnNpZ25lZCBjaGFyIGVudDsKIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJfaXJxX3Byb2MgKHVuc2lnbmVkIGludCBpcnEpOworCUJVSUxEX0JVR19PTihOUl9JUlFTID49IDI1Nik7CisKKwllbnQgPSB2aXJ0X2lycV9jdXI7CisJaWYgKGVudCA+PSBOUl9JUlFTKSB7CisJCXByaW50ayhLRVJOX0VSUiAiSVJROiBPdXQgb2YgdmlydHVhbCBJUlFzLlxuIik7CisJCXJldHVybiAwOworCX0KKworCXZpcnRfaXJxX2N1ciA9IGVudCArIDE7CisJdmlydF90b19yZWFsX2lycV90YWJsZVtlbnRdID0gcmVhbF9pcnE7CisKKwlyZXR1cm4gZW50OworfQorCisjaWYgMCAvKiBDdXJyZW50bHkgdW51c2VkLiAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgcmVhbF90b192aXJ0X2lycSh1bnNpZ25lZCBpbnQgcmVhbF9pcnEpCit7CisJc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IF9fYnVja2V0KHJlYWxfaXJxKTsKKworCXJldHVybiBidWNrZXQtPnZpcnRfaXJxOworfQorI2VuZGlmCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdmlydF90b19yZWFsX2lycSh1bnNpZ25lZCBjaGFyIHZpcnRfaXJxKQoreworCXJldHVybiB2aXJ0X3RvX3JlYWxfaXJxX3RhYmxlW3ZpcnRfaXJxXTsKK30KIAogLyoKLSAqIFVwcGVyIDJiIG9mIGlycWFjdGlvbi0+ZmxhZ3MgaG9sZHMgdGhlIGluby4KLSAqIGlycWFjdGlvbi0+bWFzayBob2xkcyB0aGUgc21wIGFmZmluaXR5IGluZm9ybWF0aW9uLgorICogL3Byb2MvaW50ZXJydXB0cyBwcmludGluZzoKICAqLwotI2RlZmluZSBwdXRfaW5vX2luX2lycWFjdGlvbihhY3Rpb24sIGlycSkgXAotCWFjdGlvbi0+ZmxhZ3MgJj0gMHhmZmZmZmZmZmZmZmZVTDsgXAotCWlmIChfX2J1Y2tldChpcnEpID09ICZwaWwwX2R1bW15X2J1Y2tldCkgXAotCQlhY3Rpb24tPmZsYWdzIHw9IDB4ZGVhZFVMIDw8IDQ4OyAgXAotCWVsc2UgXAotCQlhY3Rpb24tPmZsYWdzIHw9IF9faXJxX2lubyhpcnEpIDw8IDQ4OwotI2RlZmluZSBnZXRfaW5vX2luX2lycWFjdGlvbihhY3Rpb24pCShhY3Rpb24tPmZsYWdzID4+IDQ4KQotCi0jZGVmaW5lIHB1dF9zbXBhZmZfaW5faXJxYWN0aW9uKGFjdGlvbiwgc21wYWZmKQkoYWN0aW9uKS0+bWFzayA9IChzbXBhZmYpCi0jZGVmaW5lIGdldF9zbXBhZmZfaW5faXJxYWN0aW9uKGFjdGlvbikgCSgoYWN0aW9uKS0+bWFzaykKIAogaW50IHNob3dfaW50ZXJydXB0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnAsIHZvaWQgKnYpCiB7CisJaW50IGkgPSAqKGxvZmZfdCAqKSB2LCBqOworCXN0cnVjdCBpcnFhY3Rpb24gKiBhY3Rpb247CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgaSA9ICoobG9mZl90ICopIHY7Ci0Jc3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwotI2lmZGVmIENPTkZJR19TTVAKLQlpbnQgajsKLSNlbmRpZgogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOwotCWlmIChpIDw9IE5SX0lSUVMpIHsKLQkJaWYgKCEoYWN0aW9uID0gKihpICsgaXJxX2FjdGlvbikpKQotCQkJZ290byBvdXRfdW5sb2NrOwotCQlzZXFfcHJpbnRmKHAsICIlM2Q6ICIsIGkpOworCWlmIChpID09IDApIHsKKwkJc2VxX3ByaW50ZihwLCAiICAgICAgICAgICAiKTsKKwkJZm9yX2VhY2hfb25saW5lX2NwdShqKQorCQkJc2VxX3ByaW50ZihwLCAiQ1BVJWQgICAgICAgIixqKTsKKwkJc2VxX3B1dGMocCwgJ1xuJyk7CisJfQorCisJaWYgKGkgPCBOUl9JUlFTKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZpcnFfZGVzY1tpXS5sb2NrLCBmbGFncyk7CisJCWFjdGlvbiA9IGlycV9kZXNjW2ldLmFjdGlvbjsKKwkJaWYgKCFhY3Rpb24pCisJCQlnb3RvIHNraXA7CisJCXNlcV9wcmludGYocCwgIiUzZDogIixpKTsKICNpZm5kZWYgQ09ORklHX1NNUAogCQlzZXFfcHJpbnRmKHAsICIlMTB1ICIsIGtzdGF0X2lycXMoaSkpOwogI2Vsc2UKLQkJZm9yX2VhY2hfb25saW5lX2NwdShqKSB7Ci0JCQlzZXFfcHJpbnRmKHAsICIlMTB1ICIsCi0JCQkJICAga3N0YXRfY3B1KGopLmlycXNbaV0pOwotCQl9CisJCWZvcl9lYWNoX29ubGluZV9jcHUoaikKKwkJCXNlcV9wcmludGYocCwgIiUxMHUgIiwga3N0YXRfY3B1KGopLmlycXNbaV0pOwogI2VuZGlmCi0JCXNlcV9wcmludGYocCwgIiAlczolbHgiLCBhY3Rpb24tPm5hbWUsCi0JCQkgICBnZXRfaW5vX2luX2lycWFjdGlvbihhY3Rpb24pKTsKLQkJZm9yIChhY3Rpb24gPSBhY3Rpb24tPm5leHQ7IGFjdGlvbjsgYWN0aW9uID0gYWN0aW9uLT5uZXh0KSB7Ci0JCQlzZXFfcHJpbnRmKHAsICIsICVzOiVseCIsIGFjdGlvbi0+bmFtZSwKLQkJCQkgICBnZXRfaW5vX2luX2lycWFjdGlvbihhY3Rpb24pKTsKLQkJfQotCQlzZXFfcHV0YyhwLCAnXG4nKTsKLQl9Ci1vdXRfdW5sb2NrOgotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOworCQlzZXFfcHJpbnRmKHAsICIgJTlzIiwgaXJxX2Rlc2NbaV0uaGFuZGxlci0+dHlwZW5hbWUpOworCQlzZXFfcHJpbnRmKHAsICIgICVzIiwgYWN0aW9uLT5uYW1lKTsKIAorCQlmb3IgKGFjdGlvbj1hY3Rpb24tPm5leHQ7IGFjdGlvbjsgYWN0aW9uID0gYWN0aW9uLT5uZXh0KQorCQkJc2VxX3ByaW50ZihwLCAiLCAlcyIsIGFjdGlvbi0+bmFtZSk7CisKKwkJc2VxX3B1dGMocCwgJ1xuJyk7Citza2lwOgorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpcnFfZGVzY1tpXS5sb2NrLCBmbGFncyk7CisJfQogCXJldHVybiAwOwogfQogCkBAIC0xNzMsMjcgKzIwMCwxMjQgQEAKIAlyZXR1cm4gdGlkOwogfQogCi0vKiBOb3cgdGhlc2UgYXJlIGFsd2F5cyBwYXNzZWQgYSB0cnVlIGZ1bGx5IHNwZWNpZmllZCBzdW40dSBJTk8uICovCi12b2lkIGVuYWJsZV9pcnEodW5zaWduZWQgaW50IGlycSkKK3N0cnVjdCBpcnFfaGFuZGxlcl9kYXRhIHsKKwl1bnNpZ25lZCBsb25nCWljbHI7CisJdW5zaWduZWQgbG9uZwlpbWFwOworCisJdm9pZAkJKCpwcmVfaGFuZGxlcikodW5zaWduZWQgaW50LCB2b2lkICosIHZvaWQgKik7CisJdm9pZAkJKnByZV9oYW5kbGVyX2FyZzE7CisJdm9pZAkJKnByZV9oYW5kbGVyX2FyZzI7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9fYnVja2V0ICp2aXJ0X2lycV90b19idWNrZXQodW5zaWduZWQgaW50IHZpcnRfaXJxKQogewotCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXVuc2lnbmVkIGxvbmcgaW1hcCwgY3B1aWQ7CisJdW5zaWduZWQgaW50IHJlYWxfaXJxID0gdmlydF90b19yZWFsX2lycSh2aXJ0X2lycSk7CisJc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IE5VTEw7CiAKLQlpbWFwID0gYnVja2V0LT5pbWFwOwotCWlmIChpbWFwID09IDBVTCkKLQkJcmV0dXJuOworCWlmIChsaWtlbHkocmVhbF9pcnEpKQorCQlidWNrZXQgPSBfX2J1Y2tldChyZWFsX2lycSk7CiAKLQlwcmVlbXB0X2Rpc2FibGUoKTsKKwlyZXR1cm4gYnVja2V0OworfQogCi0JLyogVGhpcyBnZXRzIHRoZSBwaHlzaWNhbCBwcm9jZXNzb3IgSUQsIGV2ZW4gb24gdW5pcHJvY2Vzc29yLAotCSAqIHNvIHdlIGNhbiBhbHdheXMgcHJvZ3JhbSB0aGUgaW50ZXJydXB0IHRhcmdldCBjb3JyZWN0bHkuCi0JICovCi0JY3B1aWQgPSByZWFsX2hhcmRfc21wX3Byb2Nlc3Nvcl9pZCgpOworI2lmZGVmIENPTkZJR19TTVAKK3N0YXRpYyBpbnQgaXJxX2Nob29zZV9jcHUodW5zaWduZWQgaW50IHZpcnRfaXJxKQoreworCWNwdW1hc2tfdCBtYXNrID0gaXJxX2FmZmluaXR5W3ZpcnRfaXJxXTsKKwlpbnQgY3B1aWQ7CiAKLQlpZiAodGxiX3R5cGUgPT0gaHlwZXJ2aXNvcikgewotCQl1bnNpZ25lZCBpbnQgaW5vID0gX19pcnFfaW5vKGlycSk7CisJaWYgKGNwdXNfZXF1YWwobWFzaywgQ1BVX01BU0tfQUxMKSkgeworCQlzdGF0aWMgaW50IGlycV9yb3ZlcjsKKwkJc3RhdGljIERFRklORV9TUElOTE9DSyhpcnFfcm92ZXJfbG9jayk7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJLyogUm91bmQtcm9iaW4gZGlzdHJpYnV0aW9uLi4uICovCisJZG9fcm91bmRfcm9iaW46CisJCXNwaW5fbG9ja19pcnFzYXZlKCZpcnFfcm92ZXJfbG9jaywgZmxhZ3MpOworCisJCXdoaWxlICghY3B1X29ubGluZShpcnFfcm92ZXIpKSB7CisJCQlpZiAoKytpcnFfcm92ZXIgPj0gTlJfQ1BVUykKKwkJCQlpcnFfcm92ZXIgPSAwOworCQl9CisJCWNwdWlkID0gaXJxX3JvdmVyOworCQlkbyB7CisJCQlpZiAoKytpcnFfcm92ZXIgPj0gTlJfQ1BVUykKKwkJCQlpcnFfcm92ZXIgPSAwOworCQl9IHdoaWxlICghY3B1X29ubGluZShpcnFfcm92ZXIpKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpcnFfcm92ZXJfbG9jaywgZmxhZ3MpOworCX0gZWxzZSB7CisJCWNwdW1hc2tfdCB0bXA7CisKKwkJY3B1c19hbmQodG1wLCBjcHVfb25saW5lX21hcCwgbWFzayk7CisKKwkJaWYgKGNwdXNfZW1wdHkodG1wKSkKKwkJCWdvdG8gZG9fcm91bmRfcm9iaW47CisKKwkJY3B1aWQgPSBmaXJzdF9jcHUodG1wKTsKKwl9CisKKwlyZXR1cm4gY3B1aWQ7Cit9CisjZWxzZQorc3RhdGljIGludCBpcnFfY2hvb3NlX2NwdSh1bnNpZ25lZCBpbnQgdmlydF9pcnEpCit7CisJcmV0dXJuIHJlYWxfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc3VuNHVfaXJxX2VuYWJsZSh1bnNpZ25lZCBpbnQgdmlydF9pcnEpCit7CisJaXJxX2Rlc2NfdCAqZGVzYyA9IGlycV9kZXNjICsgdmlydF9pcnE7CisJc3RydWN0IGlycV9oYW5kbGVyX2RhdGEgKmRhdGEgPSBkZXNjLT5oYW5kbGVyX2RhdGE7CisKKwlpZiAobGlrZWx5KGRhdGEpKSB7CisJCXVuc2lnbmVkIGxvbmcgY3B1aWQsIGltYXA7CisJCXVuc2lnbmVkIGludCB0aWQ7CisKKwkJY3B1aWQgPSBpcnFfY2hvb3NlX2NwdSh2aXJ0X2lycSk7CisJCWltYXAgPSBkYXRhLT5pbWFwOworCisJCXRpZCA9IHN1bjR1X2NvbXB1dGVfdGlkKGltYXAsIGNwdWlkKTsKKworCQl1cGFfd3JpdGVsKHRpZCB8IElNQVBfVkFMSUQsIGltYXApOworCX0KK30KKworc3RhdGljIHZvaWQgc3VuNHVfaXJxX2Rpc2FibGUodW5zaWduZWQgaW50IHZpcnRfaXJxKQoreworCWlycV9kZXNjX3QgKmRlc2MgPSBpcnFfZGVzYyArIHZpcnRfaXJxOworCXN0cnVjdCBpcnFfaGFuZGxlcl9kYXRhICpkYXRhID0gZGVzYy0+aGFuZGxlcl9kYXRhOworCisJaWYgKGxpa2VseShkYXRhKSkgeworCQl1bnNpZ25lZCBsb25nIGltYXAgPSBkYXRhLT5pbWFwOworCQl1MzIgdG1wID0gdXBhX3JlYWRsKGltYXApOworCisJCXRtcCAmPSB+SU1BUF9WQUxJRDsKKwkJdXBhX3dyaXRlbCh0bXAsIGltYXApOworCX0KK30KKworc3RhdGljIHZvaWQgc3VuNHVfaXJxX2VuZCh1bnNpZ25lZCBpbnQgdmlydF9pcnEpCit7CisJaXJxX2Rlc2NfdCAqZGVzYyA9IGlycV9kZXNjICsgdmlydF9pcnE7CisJc3RydWN0IGlycV9oYW5kbGVyX2RhdGEgKmRhdGEgPSBkZXNjLT5oYW5kbGVyX2RhdGE7CisKKwlpZiAobGlrZWx5KGRhdGEpKQorCQl1cGFfd3JpdGVsKElDTFJfSURMRSwgZGF0YS0+aWNscik7Cit9CisKK3N0YXRpYyB2b2lkIHN1bjR2X2lycV9lbmFibGUodW5zaWduZWQgaW50IHZpcnRfaXJxKQoreworCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQgPSB2aXJ0X2lycV90b19idWNrZXQodmlydF9pcnEpOworCXVuc2lnbmVkIGludCBpbm8gPSBidWNrZXQgLSAmaXZlY3Rvcl90YWJsZVswXTsKKworCWlmIChsaWtlbHkoYnVja2V0KSkgeworCQl1bnNpZ25lZCBsb25nIGNwdWlkOwogCQlpbnQgZXJyOwogCisJCWNwdWlkID0gaXJxX2Nob29zZV9jcHUodmlydF9pcnEpOworCiAJCWVyciA9IHN1bjR2X2ludHJfc2V0dGFyZ2V0KGlubywgY3B1aWQpOwogCQlpZiAoZXJyICE9IEhWX0VPSykKIAkJCXByaW50aygic3VuNHZfaW50cl9zZXR0YXJnZXQoJXgsJWx1KTogZXJyKCVkKVxuIiwKQEAgLTIwMiw1MjcgKzMyNiwyMzkgQEAKIAkJaWYgKGVyciAhPSBIVl9FT0spCiAJCQlwcmludGsoInN1bjR2X2ludHJfc2V0ZW5hYmxlZCgleCk6IGVyciglZClcbiIsCiAJCQkgICAgICAgaW5vLCBlcnIpOwotCX0gZWxzZSB7Ci0JCXVuc2lnbmVkIGludCB0aWQgPSBzdW40dV9jb21wdXRlX3RpZChpbWFwLCBjcHVpZCk7Ci0KLQkJLyogTk9URSBOT1RFIE5PVEUsIElHTiBhbmQgSU5PIGFyZSByZWFkLW9ubHksIElHTiBpcyBhIHByb2R1Y3QKLQkJICogb2YgdGhpcyBTWVNJTydzIHByZWNvbmZpZ3VyZWQgSUdOIGluIHRoZSBTWVNJTyBDb250cm9sCi0JCSAqIFJlZ2lzdGVyLCB0aGUgaGFyZHdhcmUganVzdCBtaXJyb3JzIHRoYXQgdmFsdWUgaGVyZS4KLQkJICogSG93ZXZlciBmb3IgR3JhcGhpY3MgYW5kIFVQQSBTbGF2ZSBkZXZpY2VzIHRoZSBmdWxsCi0JCSAqIElNQVBfSU5SIGZpZWxkIGNhbiBiZSBzZXQgYnkgdGhlIHByb2dyYW1tZXIgaGVyZS4KLQkJICoKLQkJICogVGhpbmdzIGxpa2UgRkZCIGNhbiBub3cgYmUgaGFuZGxlZCB2aWEgdGhlIG5ldyBJUlEKLQkJICogbWVjaGFuaXNtLgotCQkgKi8KLQkJdXBhX3dyaXRlbCh0aWQgfCBJTUFQX1ZBTElELCBpbWFwKTsKIAl9Ci0KLQlwcmVlbXB0X2VuYWJsZSgpOwogfQogCi0vKiBUaGlzIG5vdyBnZXRzIHBhc3NlZCB0cnVlIGlubydzIGFzIHdlbGwuICovCi12b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGludCBpcnEpCitzdGF0aWMgdm9pZCBzdW40dl9pcnFfZGlzYWJsZSh1bnNpZ25lZCBpbnQgdmlydF9pcnEpCiB7Ci0Jc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IF9fYnVja2V0KGlycSk7Ci0JdW5zaWduZWQgbG9uZyBpbWFwOworCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQgPSB2aXJ0X2lycV90b19idWNrZXQodmlydF9pcnEpOworCXVuc2lnbmVkIGludCBpbm8gPSBidWNrZXQgLSAmaXZlY3Rvcl90YWJsZVswXTsKIAotCWltYXAgPSBidWNrZXQtPmltYXA7Ci0JaWYgKGltYXAgIT0gMFVMKSB7Ci0JCWlmICh0bGJfdHlwZSA9PSBoeXBlcnZpc29yKSB7Ci0JCQl1bnNpZ25lZCBpbnQgaW5vID0gX19pcnFfaW5vKGlycSk7Ci0JCQlpbnQgZXJyOworCWlmIChsaWtlbHkoYnVja2V0KSkgeworCQlpbnQgZXJyOwogCi0JCQllcnIgPSBzdW40dl9pbnRyX3NldGVuYWJsZWQoaW5vLCBIVl9JTlRSX0RJU0FCTEVEKTsKLQkJCWlmIChlcnIgIT0gSFZfRU9LKQotCQkJCXByaW50aygic3VuNHZfaW50cl9zZXRlbmFibGVkKCV4KTogIgotCQkJCSAgICAgICAiZXJyKCVkKVxuIiwgaW5vLCBlcnIpOwotCQl9IGVsc2UgewotCQkJdTMyIHRtcDsKLQotCQkJLyogTk9URTogV2UgZG8gbm90IHdhbnQgdG8gZnV0eiB3aXRoIHRoZSBJUlEgY2xlYXIgcmVnaXN0ZXJzCi0JCQkgKiAgICAgICBhbmQgbW92ZSB0aGUgc3RhdGUgdG8gSURMRSwgdGhlIFNDU0kgY29kZSBkb2VzIGNhbGwKLQkJCSAqICAgICAgIGRpc2FibGVfaXJxKCkgdG8gYXNzdXJlIGF0b21pY2l0eSBpbiB0aGUgcXVldWUgY21kCi0JCQkgKiAgICAgICBTQ1NJIGFkYXB0ZXIgZHJpdmVyIGNvZGUuICBUaHVzIHdlJ2QgbG9zZSBpbnRlcnJ1cHRzLgotCQkJICovCi0JCQl0bXAgPSB1cGFfcmVhZGwoaW1hcCk7Ci0JCQl0bXAgJj0gfklNQVBfVkFMSUQ7Ci0JCQl1cGFfd3JpdGVsKHRtcCwgaW1hcCk7Ci0JCX0KKwkJZXJyID0gc3VuNHZfaW50cl9zZXRlbmFibGVkKGlubywgSFZfSU5UUl9ESVNBQkxFRCk7CisJCWlmIChlcnIgIT0gSFZfRU9LKQorCQkJcHJpbnRrKCJzdW40dl9pbnRyX3NldGVuYWJsZWQoJXgpOiAiCisJCQkgICAgICAgImVyciglZClcbiIsIGlubywgZXJyKTsKIAl9CiB9CiAKLS8qIFRoZSB0aW1lciBpcyB0aGUgb25lICJ3ZWlyZCIgaW50ZXJydXB0IHdoaWNoIGlzIGdlbmVyYXRlZCBieQotICogdGhlIENQVSAldGljayByZWdpc3RlciBhbmQgbm90IGJ5IHNvbWUgbm9ybWFsIHZlY3RvcmVkIGludGVycnVwdAotICogc291cmNlLiAgVG8gaGFuZGxlIHRoaXMgc3BlY2lhbCBjYXNlLCB3ZSB1c2UgdGhpcyBkdW1teSBJTk8gYnVja2V0LgotICovCi1zdGF0aWMgc3RydWN0IGlycV9kZXNjIHBpbDBfZHVtbXlfZGVzYzsKLXN0YXRpYyBzdHJ1Y3QgaW5vX2J1Y2tldCBwaWwwX2R1bW15X2J1Y2tldCA9IHsKLQkuaXJxX2luZm8JPQkmcGlsMF9kdW1teV9kZXNjLAorc3RhdGljIHZvaWQgc3VuNHZfaXJxX2VuZCh1bnNpZ25lZCBpbnQgdmlydF9pcnEpCit7CisJc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IHZpcnRfaXJxX3RvX2J1Y2tldCh2aXJ0X2lycSk7CisJdW5zaWduZWQgaW50IGlubyA9IGJ1Y2tldCAtICZpdmVjdG9yX3RhYmxlWzBdOworCisJaWYgKGxpa2VseShidWNrZXQpKSB7CisJCWludCBlcnI7CisKKwkJZXJyID0gc3VuNHZfaW50cl9zZXRzdGF0ZShpbm8sIEhWX0lOVFJfU1RBVEVfSURMRSk7CisJCWlmIChlcnIgIT0gSFZfRU9LKQorCQkJcHJpbnRrKCJzdW40dl9pbnRyX3NldHN0YXRlKCV4KTogIgorCQkJICAgICAgICJlcnIoJWQpXG4iLCBpbm8sIGVycik7CisJfQorfQorCitzdGF0aWMgdm9pZCBydW5fcHJlX2hhbmRsZXIodW5zaWduZWQgaW50IHZpcnRfaXJxKQoreworCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQgPSB2aXJ0X2lycV90b19idWNrZXQodmlydF9pcnEpOworCWlycV9kZXNjX3QgKmRlc2MgPSBpcnFfZGVzYyArIHZpcnRfaXJxOworCXN0cnVjdCBpcnFfaGFuZGxlcl9kYXRhICpkYXRhID0gZGVzYy0+aGFuZGxlcl9kYXRhOworCisJaWYgKGxpa2VseShkYXRhLT5wcmVfaGFuZGxlcikpIHsKKwkJZGF0YS0+cHJlX2hhbmRsZXIoX19pcnFfaW5vKF9faXJxKGJ1Y2tldCkpLAorCQkJCSAgZGF0YS0+cHJlX2hhbmRsZXJfYXJnMSwKKwkJCQkgIGRhdGEtPnByZV9oYW5kbGVyX2FyZzIpOworCX0KK30KKworc3RhdGljIHN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSBzdW40dV9pcnEgPSB7CisJLnR5cGVuYW1lCT0gInN1bjR1IiwKKwkuZW5hYmxlCQk9IHN1bjR1X2lycV9lbmFibGUsCisJLmRpc2FibGUJPSBzdW40dV9pcnFfZGlzYWJsZSwKKwkuZW5kCQk9IHN1bjR1X2lycV9lbmQsCiB9OwogCi1zdGF0aWMgdm9pZCBidWlsZF9pcnFfZXJyb3IoY29uc3QgY2hhciAqbXNnLCB1bnNpZ25lZCBpbnQgaW5vLCBpbnQgcGlsLCBpbnQgaW5vZml4dXAsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpY2xyLCB1bnNpZ25lZCBsb25nIGltYXAsCi0JCQkgICAgc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCkKK3N0YXRpYyBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgc3VuNHVfaXJxX2FjayA9IHsKKwkudHlwZW5hbWUJPSAic3VuNHUrYWNrIiwKKwkuZW5hYmxlCQk9IHN1bjR1X2lycV9lbmFibGUsCisJLmRpc2FibGUJPSBzdW40dV9pcnFfZGlzYWJsZSwKKwkuYWNrCQk9IHJ1bl9wcmVfaGFuZGxlciwKKwkuZW5kCQk9IHN1bjR1X2lycV9lbmQsCit9OworCitzdGF0aWMgc3RydWN0IGh3X2ludGVycnVwdF90eXBlIHN1bjR2X2lycSA9IHsKKwkudHlwZW5hbWUJPSAic3VuNHYiLAorCS5lbmFibGUJCT0gc3VuNHZfaXJxX2VuYWJsZSwKKwkuZGlzYWJsZQk9IHN1bjR2X2lycV9kaXNhYmxlLAorCS5lbmQJCT0gc3VuNHZfaXJxX2VuZCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgc3VuNHZfaXJxX2FjayA9IHsKKwkudHlwZW5hbWUJPSAic3VuNHYrYWNrIiwKKwkuZW5hYmxlCQk9IHN1bjR2X2lycV9lbmFibGUsCisJLmRpc2FibGUJPSBzdW40dl9pcnFfZGlzYWJsZSwKKwkuYWNrCQk9IHJ1bl9wcmVfaGFuZGxlciwKKwkuZW5kCQk9IHN1bjR2X2lycV9lbmQsCit9OworCit2b2lkIGlycV9pbnN0YWxsX3ByZV9oYW5kbGVyKGludCB2aXJ0X2lycSwKKwkJCSAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGludCwgdm9pZCAqLCB2b2lkICopLAorCQkJICAgICB2b2lkICphcmcxLCB2b2lkICphcmcyKQogewotCXByb21fcHJpbnRmKCJJUlE6IElOTyAlMDR4ICglZDolMDE2bHg6JTAxNmx4KSAtLT4gIgotCQkgICAgIiglZDolZDolMDE2bHg6JTAxNmx4KSwgaGFsdGluZy4uLlxuIiwKLQkJICAgIGlubywgYnVja2V0LT5waWwsIGJ1Y2tldC0+aWNsciwgYnVja2V0LT5pbWFwLAotCQkgICAgcGlsLCBpbm9maXh1cCwgaWNsciwgaW1hcCk7Ci0JcHJvbV9oYWx0KCk7CisJaXJxX2Rlc2NfdCAqZGVzYyA9IGlycV9kZXNjICsgdmlydF9pcnE7CisJc3RydWN0IGlycV9oYW5kbGVyX2RhdGEgKmRhdGEgPSBkZXNjLT5oYW5kbGVyX2RhdGE7CisKKwlkYXRhLT5wcmVfaGFuZGxlciA9IGZ1bmM7CisJZGF0YS0+cHJlX2hhbmRsZXJfYXJnMSA9IGFyZzE7CisJZGF0YS0+cHJlX2hhbmRsZXJfYXJnMiA9IGFyZzI7CisKKwlkZXNjLT5oYW5kbGVyID0gKGRlc2MtPmhhbmRsZXIgPT0gJnN1bjR1X2lycSA/CisJCQkgJnN1bjR1X2lycV9hY2sgOiAmc3VuNHZfaXJxX2Fjayk7CiB9CiAKLXVuc2lnbmVkIGludCBidWlsZF9pcnEoaW50IHBpbCwgaW50IGlub2ZpeHVwLCB1bnNpZ25lZCBsb25nIGljbHIsIHVuc2lnbmVkIGxvbmcgaW1hcCkKK3Vuc2lnbmVkIGludCBidWlsZF9pcnEoaW50IGlub2ZpeHVwLCB1bnNpZ25lZCBsb25nIGljbHIsIHVuc2lnbmVkIGxvbmcgaW1hcCkKIHsKIAlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OworCXN0cnVjdCBpcnFfaGFuZGxlcl9kYXRhICpkYXRhOworCWlycV9kZXNjX3QgKmRlc2M7CiAJaW50IGlubzsKIAotCWlmIChwaWwgPT0gMCkgewotCQlpZiAoaWNsciAhPSAwVUwgfHwgaW1hcCAhPSAwVUwpIHsKLQkJCXByb21fcHJpbnRmKCJJbnZhbGlkIGR1bW15IGJ1Y2tldCBmb3IgUElMMCAoJWx4OiVseClcbiIsCi0JCQkJICAgIGljbHIsIGltYXApOwotCQkJcHJvbV9oYWx0KCk7Ci0JCX0KLQkJcmV0dXJuIF9faXJxKCZwaWwwX2R1bW15X2J1Y2tldCk7Ci0JfQotCiAJQlVHX09OKHRsYl90eXBlID09IGh5cGVydmlzb3IpOwogCi0JLyogUlVMRTogQm90aCBtdXN0IGJlIHNwZWNpZmllZCBpbiBhbGwgb3RoZXIgY2FzZXMuICovCi0JaWYgKGljbHIgPT0gMFVMIHx8IGltYXAgPT0gMFVMKSB7Ci0JCXByb21fcHJpbnRmKCJJbnZhbGlkIGJ1aWxkX2lycSAlZCAlZCAlMDE2bHggJTAxNmx4XG4iLAotCQkJICAgIHBpbCwgaW5vZml4dXAsIGljbHIsIGltYXApOwotCQlwcm9tX2hhbHQoKTsKLQl9Ci0JCiAJaW5vID0gKHVwYV9yZWFkbChpbWFwKSAmIChJTUFQX0lHTiB8IElNQVBfSU5PKSkgKyBpbm9maXh1cDsKLQlpZiAoaW5vID4gTlVNX0lWRUNTKSB7Ci0JCXByb21fcHJpbnRmKCJJbnZhbGlkIElOTyAlMDR4ICglZDolZDolMDE2bHg6JTAxNmx4KVxuIiwKLQkJCSAgICBpbm8sIHBpbCwgaW5vZml4dXAsIGljbHIsIGltYXApOwotCQlwcm9tX2hhbHQoKTsKLQl9Ci0KIAlidWNrZXQgPSAmaXZlY3Rvcl90YWJsZVtpbm9dOwotCWlmIChidWNrZXQtPmZsYWdzICYgSUJGX0FDVElWRSkKLQkJYnVpbGRfaXJxX2Vycm9yKCJJUlE6IFRyeWluZyB0byBidWlsZCBhY3RpdmUgSU5PIGJ1Y2tldC5cbiIsCi0JCQkJaW5vLCBwaWwsIGlub2ZpeHVwLCBpY2xyLCBpbWFwLCBidWNrZXQpOwotCi0JaWYgKGJ1Y2tldC0+aXJxX2luZm8pIHsKLQkJaWYgKGJ1Y2tldC0+aW1hcCAhPSBpbWFwIHx8IGJ1Y2tldC0+aWNsciAhPSBpY2xyKQotCQkJYnVpbGRfaXJxX2Vycm9yKCJJUlE6IFRyeWluZyB0byByZWluaXQgSU5PIGJ1Y2tldC5cbiIsCi0JCQkJCWlubywgcGlsLCBpbm9maXh1cCwgaWNsciwgaW1hcCwgYnVja2V0KTsKLQotCQlnb3RvIG91dDsKKwlpZiAoIWJ1Y2tldC0+dmlydF9pcnEpIHsKKwkJYnVja2V0LT52aXJ0X2lycSA9IHZpcnRfaXJxX2FsbG9jKF9faXJxKGJ1Y2tldCkpOworCQlpcnFfZGVzY1tidWNrZXQtPnZpcnRfaXJxXS5oYW5kbGVyID0gJnN1bjR1X2lycTsKIAl9CiAKLQlidWNrZXQtPmlycV9pbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlycV9kZXNjKSwgR0ZQX0FUT01JQyk7Ci0JaWYgKCFidWNrZXQtPmlycV9pbmZvKSB7Ci0JCXByb21fcHJpbnRmKCJJUlE6IEVycm9yLCBrbWFsbG9jKGlycV9kZXNjKSBmYWlsZWQuXG4iKTsKKwlkZXNjID0gaXJxX2Rlc2MgKyBidWNrZXQtPnZpcnRfaXJxOworCWlmICh1bmxpa2VseShkZXNjLT5oYW5kbGVyX2RhdGEpKQorCQlnb3RvIG91dDsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaXJxX2hhbmRsZXJfZGF0YSksIEdGUF9BVE9NSUMpOworCWlmICh1bmxpa2VseSghZGF0YSkpIHsKKwkJcHJvbV9wcmludGYoIklSUToga3phbGxvYyhpcnFfaGFuZGxlcl9kYXRhKSBmYWlsZWQuXG4iKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQorCWRlc2MtPmhhbmRsZXJfZGF0YSA9IGRhdGE7CiAKLQkvKiBPaywgbG9va3MgZ29vZCwgc2V0IGl0IHVwLiAgRG9uJ3QgdG91Y2ggdGhlIGlycV9jaGFpbiBvcgotCSAqIHRoZSBwZW5kaW5nIGZsYWcuCi0JICovCi0JYnVja2V0LT5pbWFwICA9IGltYXA7Ci0JYnVja2V0LT5pY2xyICA9IGljbHI7Ci0JYnVja2V0LT5waWwgICA9IHBpbDsKLQlidWNrZXQtPmZsYWdzID0gMDsKKwlkYXRhLT5pbWFwICA9IGltYXA7CisJZGF0YS0+aWNsciAgPSBpY2xyOwogCiBvdXQ6Ci0JcmV0dXJuIF9faXJxKGJ1Y2tldCk7CisJcmV0dXJuIGJ1Y2tldC0+dmlydF9pcnE7CiB9CiAKLXVuc2lnbmVkIGludCBzdW40dl9idWlsZF9pcnEodTMyIGRldmhhbmRsZSwgdW5zaWduZWQgaW50IGRldmlubywgaW50IHBpbCwgdW5zaWduZWQgY2hhciBmbGFncykKK3Vuc2lnbmVkIGludCBzdW40dl9idWlsZF9pcnEodTMyIGRldmhhbmRsZSwgdW5zaWduZWQgaW50IGRldmlubykKIHsKIAlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OworCXN0cnVjdCBpcnFfaGFuZGxlcl9kYXRhICpkYXRhOwogCXVuc2lnbmVkIGxvbmcgc3lzaW5vOworCWlycV9kZXNjX3QgKmRlc2M7CisKKwlCVUdfT04odGxiX3R5cGUgIT0gaHlwZXJ2aXNvcik7CiAKIAlzeXNpbm8gPSBzdW40dl9kZXZpbm9fdG9fc3lzaW5vKGRldmhhbmRsZSwgZGV2aW5vKTsKLQogCWJ1Y2tldCA9ICZpdmVjdG9yX3RhYmxlW3N5c2lub107CisJaWYgKCFidWNrZXQtPnZpcnRfaXJxKSB7CisJCWJ1Y2tldC0+dmlydF9pcnEgPSB2aXJ0X2lycV9hbGxvYyhfX2lycShidWNrZXQpKTsKKwkJaXJxX2Rlc2NbYnVja2V0LT52aXJ0X2lycV0uaGFuZGxlciA9ICZzdW40dl9pcnE7CisJfQorCisJZGVzYyA9IGlycV9kZXNjICsgYnVja2V0LT52aXJ0X2lycTsKKwlpZiAodW5saWtlbHkoZGVzYy0+aGFuZGxlcl9kYXRhKSkKKwkJZ290byBvdXQ7CisKKwlkYXRhID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlycV9oYW5kbGVyX2RhdGEpLCBHRlBfQVRPTUlDKTsKKwlpZiAodW5saWtlbHkoIWRhdGEpKSB7CisJCXByb21fcHJpbnRmKCJJUlE6IGt6YWxsb2MoaXJxX2hhbmRsZXJfZGF0YSkgZmFpbGVkLlxuIik7CisJCXByb21faGFsdCgpOworCX0KKwlkZXNjLT5oYW5kbGVyX2RhdGEgPSBkYXRhOwogCiAJLyogQ2F0Y2ggYWNjaWRlbnRhbCBhY2Nlc3NlcyB0byB0aGVzZSB0aGluZ3MuICBJTUFQL0lDTFIgaGFuZGxpbmcKIAkgKiBpcyBkb25lIGJ5IGh5cGVydmlzb3IgY2FsbHMgb24gc3VuNHYgcGxhdGZvcm1zLCBub3QgYnkgZGlyZWN0CiAJICogcmVnaXN0ZXIgYWNjZXNzZXMuCi0JICoKLQkgKiBCdXQgd2UgbmVlZCB0byBtYWtlIHRoZW0gbG9vayB1bmlxdWUgZm9yIHRoZSBkaXNhYmxlX2lycSgpIGxvZ2ljCi0JICogaW4gZnJlZV9pcnEoKS4KIAkgKi8KLQlidWNrZXQtPmltYXAgPSB+MFVMIC0gc3lzaW5vOwotCWJ1Y2tldC0+aWNsciA9IH4wVUwgLSBzeXNpbm87CisJZGF0YS0+aW1hcCA9IH4wVUw7CisJZGF0YS0+aWNsciA9IH4wVUw7CiAKLQlidWNrZXQtPnBpbCA9IHBpbDsKLQlidWNrZXQtPmZsYWdzID0gZmxhZ3M7Ci0KLQlidWNrZXQtPmlycV9pbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlycV9kZXNjKSwgR0ZQX0FUT01JQyk7Ci0JaWYgKCFidWNrZXQtPmlycV9pbmZvKSB7Ci0JCXByb21fcHJpbnRmKCJJUlE6IEVycm9yLCBrbWFsbG9jKGlycV9kZXNjKSBmYWlsZWQuXG4iKTsKLQkJcHJvbV9oYWx0KCk7Ci0JfQotCi0JcmV0dXJuIF9faXJxKGJ1Y2tldCk7CitvdXQ6CisJcmV0dXJuIGJ1Y2tldC0+dmlydF9pcnE7CiB9CiAKLXN0YXRpYyB2b2lkIGF0b21pY19idWNrZXRfaW5zZXJ0KHN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQpCit2b2lkIGh3X3Jlc2VuZF9pcnEoc3RydWN0IGh3X2ludGVycnVwdF90eXBlICpoYW5kbGVyLCB1bnNpZ25lZCBpbnQgdmlydF9pcnEpCiB7CisJc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IHZpcnRfaXJxX3RvX2J1Y2tldCh2aXJ0X2lycSk7CiAJdW5zaWduZWQgbG9uZyBwc3RhdGU7CiAJdW5zaWduZWQgaW50ICplbnQ7CiAKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygicmRwciAlJXBzdGF0ZSwgJTAiIDogIj1yIiAocHN0YXRlKSk7CiAJX19hc21fXyBfX3ZvbGF0aWxlX18oIndycHIgJTAsICUxLCAlJXBzdGF0ZSIKIAkJCSAgICAgOiA6ICJyIiAocHN0YXRlKSwgImkiIChQU1RBVEVfSUUpKTsKLQllbnQgPSBpcnFfd29yayhzbXBfcHJvY2Vzc29yX2lkKCksIGJ1Y2tldC0+cGlsKTsKKwllbnQgPSBpcnFfd29yayhzbXBfcHJvY2Vzc29yX2lkKCkpOwogCWJ1Y2tldC0+aXJxX2NoYWluID0gKmVudDsKIAkqZW50ID0gX19pcnEoYnVja2V0KTsKKwlzZXRfc29mdGludCgxIDw8IFBJTF9ERVZJQ0VfSVJRKTsKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygid3JwciAlMCwgMHgwLCAlJXBzdGF0ZSIgOiA6ICJyIiAocHN0YXRlKSk7CiB9CiAKLXN0YXRpYyBpbnQgY2hlY2tfaXJxX3NoYXJpbmcoaW50IHBpbCwgdW5zaWduZWQgbG9uZyBpcnFmbGFncykKK3ZvaWQgYWNrX2JhZF9pcnEodW5zaWduZWQgaW50IHZpcnRfaXJxKQogewotCXN0cnVjdCBpcnFhY3Rpb24gKmFjdGlvbiwgKnRtcDsKKwlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0ID0gdmlydF9pcnFfdG9fYnVja2V0KHZpcnRfaXJxKTsKKwl1bnNpZ25lZCBpbnQgaW5vID0gMHhkZWFkYmVlZjsKIAotCWFjdGlvbiA9ICooaXJxX2FjdGlvbiArIHBpbCk7Ci0JaWYgKGFjdGlvbikgewotCQlpZiAoKGFjdGlvbi0+ZmxhZ3MgJiBTQV9TSElSUSkgJiYgKGlycWZsYWdzICYgU0FfU0hJUlEpKSB7Ci0JCQlmb3IgKHRtcCA9IGFjdGlvbjsgdG1wLT5uZXh0OyB0bXAgPSB0bXAtPm5leHQpCi0JCQkJOwotCQl9IGVsc2UgewotCQkJcmV0dXJuIC1FQlVTWTsKLQkJfQotCX0KLQlyZXR1cm4gMDsKKwlpZiAoYnVja2V0KQorCQlpbm8gPSBidWNrZXQgLSAmaXZlY3Rvcl90YWJsZVswXTsKKworCXByaW50ayhLRVJOX0NSSVQgIlVuZXhwZWN0ZWQgSVJRIGZyb20gaW5vWyV4XSB2aXJ0X2lycVsldV1cbiIsCisJICAgICAgIGlubywgdmlydF9pcnEpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRfaXJxX2FjdGlvbihpbnQgcGlsLCBzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb24pCi17Ci0Jc3RydWN0IGlycWFjdGlvbiAqKnBwID0gaXJxX2FjdGlvbiArIHBpbDsKKyNpZm5kZWYgQ09ORklHX1NNUAorZXh0ZXJuIGlycXJldHVybl90IHRpbWVyX2ludGVycnVwdChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiAKLQl3aGlsZSAoKnBwKQotCQlwcCA9ICYoKCpwcCktPm5leHQpOwotCSpwcCA9IGFjdGlvbjsKK3ZvaWQgdGltZXJfaXJxKGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXVuc2lnbmVkIGxvbmcgY2xyX21hc2sgPSAxIDw8IGlycTsKKwl1bnNpZ25lZCBsb25nIHRpY2tfbWFzayA9IHRpY2tfb3BzLT5zb2Z0aW50X21hc2s7CisKKwlpZiAoZ2V0X3NvZnRpbnQoKSAmIHRpY2tfbWFzaykgeworCQlpcnEgPSAwOworCQljbHJfbWFzayA9IHRpY2tfbWFzazsKKwl9CisJY2xlYXJfc29mdGludChjbHJfbWFzayk7CisKKwlpcnFfZW50ZXIoKTsKKworCWtzdGF0X3RoaXNfY3B1LmlycXNbMF0rKzsKKwl0aW1lcl9pbnRlcnJ1cHQoaXJxLCBOVUxMLCByZWdzKTsKKworCWlycV9leGl0KCk7CiB9Ci0KLXN0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uICpnZXRfYWN0aW9uX3Nsb3Qoc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCkKLXsKLQlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBidWNrZXQtPmlycV9pbmZvOwotCWludCBtYXhfaXJxLCBpOwotCi0JbWF4X2lycSA9IDE7Ci0JaWYgKGJ1Y2tldC0+ZmxhZ3MgJiBJQkZfUENJKQotCQltYXhfaXJxID0gTUFYX0lSUV9ERVNDX0FDVElPTjsKLQlmb3IgKGkgPSAwOyBpIDwgbWF4X2lycTsgaSsrKSB7Ci0JCXN0cnVjdCBpcnFhY3Rpb24gKnAgPSAmZGVzYy0+YWN0aW9uW2ldOwotCQl1MzIgbWFzayA9ICgxIDw8IGkpOwotCi0JCWlmIChkZXNjLT5hY3Rpb25fYWN0aXZlX21hc2sgJiBtYXNrKQotCQkJY29udGludWU7Ci0KLQkJZGVzYy0+YWN0aW9uX2FjdGl2ZV9tYXNrIHw9IG1hc2s7Ci0JCXJldHVybiBwOwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotaW50IHJlcXVlc3RfaXJxKHVuc2lnbmVkIGludCBpcnEsIGlycXJldHVybl90ICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAotCQl1bnNpZ25lZCBsb25nIGlycWZsYWdzLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpkZXZfaWQpCi17Ci0Jc3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwotCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IHBlbmRpbmcgPSAwOwotCi0JaWYgKHVubGlrZWx5KCFoYW5kbGVyKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAodW5saWtlbHkoIWJ1Y2tldC0+aXJxX2luZm8pKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWlmICgoYnVja2V0ICE9ICZwaWwwX2R1bW15X2J1Y2tldCkgJiYgKGlycWZsYWdzICYgU0FfU0FNUExFX1JBTkRPTSkpIHsKLQkJLyoKLQkgCSAqIFRoaXMgZnVuY3Rpb24gbWlnaHQgc2xlZXAsIHdlIHdhbnQgdG8gY2FsbCBpdCBmaXJzdCwKLQkgCSAqIG91dHNpZGUgb2YgdGhlIGF0b21pYyBibG9jay4gSW4gU0FfU1RBVElDX0FMTE9DIGNhc2UsCi0JCSAqIHJhbmRvbSBkcml2ZXIncyBrbWFsbG9jIHdpbGwgZmFpbCwgYnV0IGl0IGlzIHNhZmUuCi0JCSAqIElmIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJhbmRvbSBkcml2ZXIgd2lsbCBub3QgcmVpbml0LgotCSAJICogWWVzLCB0aGlzIG1pZ2h0IGNsZWFyIHRoZSBlbnRyb3B5IHBvb2wgaWYgdGhlIHdyb25nCi0JIAkgKiBkcml2ZXIgaXMgYXR0ZW1wdGVkIHRvIGJlIGxvYWRlZCwgd2l0aG91dCBhY3R1YWxseQotCSAJICogaW5zdGFsbGluZyBhIG5ldyBoYW5kbGVyLCBidXQgaXMgdGhpcyByZWFsbHkgYSBwcm9ibGVtLAotCSAJICogb25seSB0aGUgc3lzYWRtaW4gaXMgYWJsZSB0byBkbyB0aGlzLgotCSAJICovCi0JCXJhbmRfaW5pdGlhbGl6ZV9pcnEoaXJxKTsKLQl9Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmaXJxX2FjdGlvbl9sb2NrLCBmbGFncyk7Ci0KLQlpZiAoY2hlY2tfaXJxX3NoYXJpbmcoYnVja2V0LT5waWwsIGlycWZsYWdzKSkgewotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpcnFfYWN0aW9uX2xvY2ssIGZsYWdzKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlhY3Rpb24gPSBnZXRfYWN0aW9uX3Nsb3QoYnVja2V0KTsKLQlpZiAoIWFjdGlvbikgeyAKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxX2FjdGlvbl9sb2NrLCBmbGFncyk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCWJ1Y2tldC0+ZmxhZ3MgfD0gSUJGX0FDVElWRTsKLQlwZW5kaW5nID0gMDsKLQlpZiAoYnVja2V0ICE9ICZwaWwwX2R1bW15X2J1Y2tldCkgewotCQlwZW5kaW5nID0gYnVja2V0LT5wZW5kaW5nOwotCQlpZiAocGVuZGluZykKLQkJCWJ1Y2tldC0+cGVuZGluZyA9IDA7Ci0JfQotCi0JYWN0aW9uLT5oYW5kbGVyID0gaGFuZGxlcjsKLQlhY3Rpb24tPmZsYWdzID0gaXJxZmxhZ3M7Ci0JYWN0aW9uLT5uYW1lID0gbmFtZTsKLQlhY3Rpb24tPm5leHQgPSBOVUxMOwotCWFjdGlvbi0+ZGV2X2lkID0gZGV2X2lkOwotCXB1dF9pbm9faW5faXJxYWN0aW9uKGFjdGlvbiwgaXJxKTsKLQlwdXRfc21wYWZmX2luX2lycWFjdGlvbihhY3Rpb24sIENQVV9NQVNLX05PTkUpOwotCi0JYXBwZW5kX2lycV9hY3Rpb24oYnVja2V0LT5waWwsIGFjdGlvbik7Ci0KLQllbmFibGVfaXJxKGlycSk7Ci0KLQkvKiBXZSBhdGUgdGhlIElWRUMgYWxyZWFkeSwgdGhpcyBtYWtlcyBzdXJlIGl0IGRvZXMgbm90IGdldCBsb3N0LiAqLwotCWlmIChwZW5kaW5nKSB7Ci0JCWF0b21pY19idWNrZXRfaW5zZXJ0KGJ1Y2tldCk7Ci0JCXNldF9zb2Z0aW50KDEgPDwgYnVja2V0LT5waWwpOwotCX0KLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOwotCi0JaWYgKGJ1Y2tldCAhPSAmcGlsMF9kdW1teV9idWNrZXQpCi0JCXJlZ2lzdGVyX2lycV9wcm9jKF9faXJxX2lubyhpcnEpKTsKLQotI2lmZGVmIENPTkZJR19TTVAKLQlkaXN0cmlidXRlX2lycXMoKTsKICNlbmRpZgotCXJldHVybiAwOwotfQotCi1FWFBPUlRfU1lNQk9MKHJlcXVlc3RfaXJxKTsKLQotc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gKnVubGlua19pcnFfYWN0aW9uKHVuc2lnbmVkIGludCBpcnEsIHZvaWQgKmRldl9pZCkKLXsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0ID0gX19idWNrZXQoaXJxKTsKLQlzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb24sICoqcHA7Ci0KLQlwcCA9IGlycV9hY3Rpb24gKyBidWNrZXQtPnBpbDsKLQlhY3Rpb24gPSAqcHA7Ci0JaWYgKHVubGlrZWx5KCFhY3Rpb24pKQotCQlyZXR1cm4gTlVMTDsKLQotCWlmICh1bmxpa2VseSghYWN0aW9uLT5oYW5kbGVyKSkgewotCQlwcmludGsoIkZyZWVpbmcgZnJlZSBJUlEgJWRcbiIsIGJ1Y2tldC0+cGlsKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0Jd2hpbGUgKGFjdGlvbiAmJiBhY3Rpb24tPmRldl9pZCAhPSBkZXZfaWQpIHsKLQkJcHAgPSAmYWN0aW9uLT5uZXh0OwotCQlhY3Rpb24gPSAqcHA7Ci0JfQotCi0JaWYgKGxpa2VseShhY3Rpb24pKQotCQkqcHAgPSBhY3Rpb24tPm5leHQ7Ci0KLQlyZXR1cm4gYWN0aW9uOwotfQotCi12b2lkIGZyZWVfaXJxKHVuc2lnbmVkIGludCBpcnEsIHZvaWQgKmRldl9pZCkKLXsKLQlzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb247Ci0Jc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOwotCi0JYWN0aW9uID0gdW5saW5rX2lycV9hY3Rpb24oaXJxLCBkZXZfaWQpOwotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxX2FjdGlvbl9sb2NrLCBmbGFncyk7Ci0KLQlpZiAodW5saWtlbHkoIWFjdGlvbikpCi0JCXJldHVybjsKLQotCXN5bmNocm9uaXplX2lycShpcnEpOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOwotCi0JYnVja2V0ID0gX19idWNrZXQoaXJxKTsKLQlpZiAoYnVja2V0ICE9ICZwaWwwX2R1bW15X2J1Y2tldCkgewotCQlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBidWNrZXQtPmlycV9pbmZvOwotCQlpbnQgZW50LCBpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBNQVhfSVJRX0RFU0NfQUNUSU9OOyBpKyspIHsKLQkJCXN0cnVjdCBpcnFhY3Rpb24gKnAgPSAmZGVzYy0+YWN0aW9uW2ldOwotCi0JCQlpZiAocCA9PSBhY3Rpb24pIHsKLQkJCQlkZXNjLT5hY3Rpb25fYWN0aXZlX21hc2sgJj0gfigxIDw8IGkpOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0KLQkJaWYgKCFkZXNjLT5hY3Rpb25fYWN0aXZlX21hc2spIHsKLQkJCXVuc2lnbmVkIGxvbmcgaW1hcCA9IGJ1Y2tldC0+aW1hcDsKLQotCQkJLyogVGhpcyB1bmlxdWUgaW50ZXJydXB0IHNvdXJjZSBpcyBub3cgaW5hY3RpdmUuICovCi0JCQlidWNrZXQtPmZsYWdzICY9IH5JQkZfQUNUSVZFOwotCi0JCQkvKiBTZWUgaWYgYW55IG90aGVyIGJ1Y2tldHMgc2hhcmUgdGhpcyBidWNrZXQncyBJTUFQCi0JCQkgKiBhbmQgYXJlIHN0aWxsIGFjdGl2ZS4KLQkJCSAqLwotCQkJZm9yIChlbnQgPSAwOyBlbnQgPCBOVU1fSVZFQ1M7IGVudCsrKSB7Ci0JCQkJc3RydWN0IGlub19idWNrZXQgKmJwID0gJml2ZWN0b3JfdGFibGVbZW50XTsKLQkJCQlpZiAoYnAgIT0gYnVja2V0CSYmCi0JCQkJICAgIGJwLT5pbWFwID09IGltYXAJJiYKLQkJCQkgICAgKGJwLT5mbGFncyAmIElCRl9BQ1RJVkUpICE9IDApCi0JCQkJCWJyZWFrOwotCQkJfQotCi0JCQkvKiBPbmx5IGRpc2FibGUgd2hlbiBubyBvdGhlciBzdWItaXJxIGxldmVscyBvZgotCQkJICogdGhlIHNhbWUgSU1BUCBhcmUgYWN0aXZlLgotCQkJICovCi0JCQlpZiAoZW50ID09IE5VTV9JVkVDUykKLQkJCQlkaXNhYmxlX2lycShpcnEpOwotCQl9Ci0JfQotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxX2FjdGlvbl9sb2NrLCBmbGFncyk7Ci19Ci0KLUVYUE9SVF9TWU1CT0woZnJlZV9pcnEpOwotCi0jaWZkZWYgQ09ORklHX1NNUAotdm9pZCBzeW5jaHJvbml6ZV9pcnEodW5zaWduZWQgaW50IGlycSkKLXsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0ID0gX19idWNrZXQoaXJxKTsKLQotI2lmIDAKLQkvKiBUaGUgZm9sbG93aW5nIGlzIGhvdyBJIHdpc2ggSSBjb3VsZCBpbXBsZW1lbnQgdGhpcy4KLQkgKiBVbmZvcnR1bmF0ZWx5IHRoZSBJQ0xSIHJlZ2lzdGVycyBhcmUgcmVhZC1vbmx5LCB5b3UgY2FuCi0JICogb25seSB3cml0ZSBJQ0xSX2ZvbyB2YWx1ZXMgdG8gdGhlbS4gIFRvIGdldCB0aGUgY3VycmVudAotCSAqIElSUSBzdGF0dXMgeW91IHdvdWxkIG5lZWQgdG8gZ2V0IGF0IHRoZSBJUlEgZGlhZyByZWdpc3RlcnMKLQkgKiBpbiB0aGUgUENJL1NCVVMgY29udHJvbGxlciBhbmQgdGhlIGxheW91dCBvZiB0aG9zZSB2YXJ5Ci0JICogZnJvbSBvbmUgY29udHJvbGxlciB0byB0aGUgbmV4dCwgc2lnaC4uLiAtRGF2ZU0KLQkgKi8KLQl1bnNpZ25lZCBsb25nIGljbHIgPSBidWNrZXQtPmljbHI7Ci0KLQl3aGlsZSAoMSkgewotCQl1MzIgdG1wID0gdXBhX3JlYWRsKGljbHIpOwotCQkKLQkJaWYgKHRtcCA9PSBJQ0xSX1RSQU5TTUlUIHx8Ci0JCSAgICB0bXAgPT0gSUNMUl9QRU5ESU5HKSB7Ci0JCQljcHVfcmVsYXgoKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWJyZWFrOwotCX0KLSNlbHNlCi0JLyogU28gd2UgaGF2ZSB0byBkbyB0aGlzIHdpdGggYSBJTlBST0dSRVNTIGJpdCBqdXN0IGxpa2UgeDg2LiAgKi8KLQl3aGlsZSAoYnVja2V0LT5mbGFncyAmIElCRl9JTlBST0dSRVNTKQotCQljcHVfcmVsYXgoKTsKLSNlbmRpZgotfQotI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KLQotc3RhdGljIHZvaWQgcHJvY2Vzc19idWNrZXQoaW50IGlycSwgc3RydWN0IGlub19idWNrZXQgKmJwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBicC0+aXJxX2luZm87Ci0JdW5zaWduZWQgY2hhciBmbGFncyA9IGJwLT5mbGFnczsKLQl1MzIgYWN0aW9uX21hc2ssIGk7Ci0JaW50IHJhbmRvbTsKLQotCWJwLT5mbGFncyB8PSBJQkZfSU5QUk9HUkVTUzsKLQotCWlmICh1bmxpa2VseSghKGZsYWdzICYgSUJGX0FDVElWRSkpKSB7Ci0JCWJwLT5wZW5kaW5nID0gMTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JaWYgKGRlc2MtPnByZV9oYW5kbGVyKQotCQlkZXNjLT5wcmVfaGFuZGxlcihicCwKLQkJCQkgIGRlc2MtPnByZV9oYW5kbGVyX2FyZzEsCi0JCQkJICBkZXNjLT5wcmVfaGFuZGxlcl9hcmcyKTsKLQotCWFjdGlvbl9tYXNrID0gZGVzYy0+YWN0aW9uX2FjdGl2ZV9tYXNrOwotCXJhbmRvbSA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IE1BWF9JUlFfREVTQ19BQ1RJT047IGkrKykgewotCQlzdHJ1Y3QgaXJxYWN0aW9uICpwID0gJmRlc2MtPmFjdGlvbltpXTsKLQkJdTMyIG1hc2sgPSAoMSA8PCBpKTsKLQotCQlpZiAoIShhY3Rpb25fbWFzayAmIG1hc2spKQotCQkJY29udGludWU7Ci0KLQkJYWN0aW9uX21hc2sgJj0gfm1hc2s7Ci0KLQkJaWYgKHAtPmhhbmRsZXIoX19pcnEoYnApLCBwLT5kZXZfaWQsIHJlZ3MpID09IElSUV9IQU5ETEVEKQotCQkJcmFuZG9tIHw9IHAtPmZsYWdzOwotCi0JCWlmICghYWN0aW9uX21hc2spCi0JCQlicmVhazsKLQl9Ci0JaWYgKGJwLT5waWwgIT0gMCkgewotCQlpZiAodGxiX3R5cGUgPT0gaHlwZXJ2aXNvcikgewotCQkJdW5zaWduZWQgaW50IGlubyA9IF9faXJxX2lubyhicCk7Ci0JCQlpbnQgZXJyOwotCi0JCQllcnIgPSBzdW40dl9pbnRyX3NldHN0YXRlKGlubywgSFZfSU5UUl9TVEFURV9JRExFKTsKLQkJCWlmIChlcnIgIT0gSFZfRU9LKQotCQkJCXByaW50aygic3VuNHZfaW50cl9zZXRzdGF0ZSgleCk6ICIKLQkJCQkgICAgICAgImVyciglZClcbiIsIGlubywgZXJyKTsKLQkJfSBlbHNlIHsKLQkJCXVwYV93cml0ZWwoSUNMUl9JRExFLCBicC0+aWNscik7Ci0JCX0KLQotCQkvKiBUZXN0IGFuZCBhZGQgZW50cm9weSAqLwotCQlpZiAocmFuZG9tICYgU0FfU0FNUExFX1JBTkRPTSkKLQkJCWFkZF9pbnRlcnJ1cHRfcmFuZG9tbmVzcyhpcnEpOwotCX0KLW91dDoKLQlicC0+ZmxhZ3MgJj0gfklCRl9JTlBST0dSRVNTOwotfQogCiB2b2lkIGhhbmRsZXJfaXJxKGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXN0cnVjdCBpbm9fYnVja2V0ICpicDsKLQlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQ7CiAKLSNpZm5kZWYgQ09ORklHX1NNUAotCS8qCi0JICogQ2hlY2sgZm9yIFRJQ0tfSU5UIG9uIGxldmVsIDE0IHNvZnRpbnQuCi0JICovCi0JewotCQl1bnNpZ25lZCBsb25nIGNscl9tYXNrID0gMSA8PCBpcnE7Ci0JCXVuc2lnbmVkIGxvbmcgdGlja19tYXNrID0gdGlja19vcHMtPnNvZnRpbnRfbWFzazsKLQotCQlpZiAoKGlycSA9PSAxNCkgJiYgKGdldF9zb2Z0aW50KCkgJiB0aWNrX21hc2spKSB7Ci0JCQlpcnEgPSAwOwotCQkJY2xyX21hc2sgPSB0aWNrX21hc2s7Ci0JCX0KLQkJY2xlYXJfc29mdGludChjbHJfbWFzayk7Ci0JfQotI2Vsc2UKIAljbGVhcl9zb2Z0aW50KDEgPDwgaXJxKTsKLSNlbmRpZgogCiAJaXJxX2VudGVyKCk7Ci0Ja3N0YXRfdGhpc19jcHUuaXJxc1tpcnFdKys7CiAKIAkvKiBTbGlpaWljay4uLiAqLwotI2lmbmRlZiBDT05GSUdfU01QCi0JYnAgPSAoKGlycSAhPSAwKSA/Ci0JICAgICAgX19idWNrZXQoeGNoZzMyKGlycV93b3JrKGNwdSwgaXJxKSwgMCkpIDoKLQkgICAgICAmcGlsMF9kdW1teV9idWNrZXQpOwotI2Vsc2UKLQlicCA9IF9fYnVja2V0KHhjaGczMihpcnFfd29yayhjcHUsIGlycSksIDApKTsKLSNlbmRpZgotCXdoaWxlIChicCkgewotCQlzdHJ1Y3QgaW5vX2J1Y2tldCAqbmJwID0gX19idWNrZXQoYnAtPmlycV9jaGFpbik7CisJYnVja2V0ID0gX19idWNrZXQoeGNoZzMyKGlycV93b3JrKHNtcF9wcm9jZXNzb3JfaWQoKSksIDApKTsKKwl3aGlsZSAoYnVja2V0KSB7CisJCXN0cnVjdCBpbm9fYnVja2V0ICpuZXh0ID0gX19idWNrZXQoYnVja2V0LT5pcnFfY2hhaW4pOwogCi0JCWJwLT5pcnFfY2hhaW4gPSAwOwotCQlwcm9jZXNzX2J1Y2tldChpcnEsIGJwLCByZWdzKTsKLQkJYnAgPSBuYnA7CisJCWJ1Y2tldC0+aXJxX2NoYWluID0gMDsKKwkJX19kb19JUlEoYnVja2V0LT52aXJ0X2lycSwgcmVncyk7CisKKwkJYnVja2V0ID0gbmV4dDsKIAl9CisKIAlpcnFfZXhpdCgpOwogfQogCkBAIC03ODcsODEgKzYyMyw2IEBACiBFWFBPUlRfU1lNQk9MKHNwYXJjX2Zsb3BweV9pcnEpOwogI2VuZGlmCiAKLS8qIFdlIHJlYWxseSBkb24ndCBuZWVkIHRoZXNlIGF0IGFsbCBvbiB0aGUgU3BhcmMuICBXZSBvbmx5IGhhdmUKLSAqIHN0dWJzIGhlcmUgYmVjYXVzZSB0aGV5IGFyZSBleHBvcnRlZCB0byBtb2R1bGVzLgotICovCi11bnNpZ25lZCBsb25nIHByb2JlX2lycV9vbih2b2lkKQotewotCXJldHVybiAwOwotfQotCi1FWFBPUlRfU1lNQk9MKHByb2JlX2lycV9vbik7Ci0KLWludCBwcm9iZV9pcnFfb2ZmKHVuc2lnbmVkIGxvbmcgbWFzaykKLXsKLQlyZXR1cm4gMDsKLX0KLQotRVhQT1JUX1NZTUJPTChwcm9iZV9pcnFfb2ZmKTsKLQotI2lmZGVmIENPTkZJR19TTVAKLXN0YXRpYyBpbnQgcmV0YXJnZXRfb25lX2lycShzdHJ1Y3QgaXJxYWN0aW9uICpwLCBpbnQgZ29hbF9jcHUpCi17Ci0Jc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldCA9IGdldF9pbm9faW5faXJxYWN0aW9uKHApICsgaXZlY3Rvcl90YWJsZTsKLQotCXdoaWxlICghY3B1X29ubGluZShnb2FsX2NwdSkpIHsKLQkJaWYgKCsrZ29hbF9jcHUgPj0gTlJfQ1BVUykKLQkJCWdvYWxfY3B1ID0gMDsKLQl9Ci0KLQlpZiAodGxiX3R5cGUgPT0gaHlwZXJ2aXNvcikgewotCQl1bnNpZ25lZCBpbnQgaW5vID0gX19pcnFfaW5vKGJ1Y2tldCk7Ci0KLQkJc3VuNHZfaW50cl9zZXR0YXJnZXQoaW5vLCBnb2FsX2NwdSk7Ci0JCXN1bjR2X2ludHJfc2V0ZW5hYmxlZChpbm8sIEhWX0lOVFJfRU5BQkxFRCk7Ci0JfSBlbHNlIHsKLQkJdW5zaWduZWQgbG9uZyBpbWFwID0gYnVja2V0LT5pbWFwOwotCQl1bnNpZ25lZCBpbnQgdGlkID0gc3VuNHVfY29tcHV0ZV90aWQoaW1hcCwgZ29hbF9jcHUpOwotCi0JCXVwYV93cml0ZWwodGlkIHwgSU1BUF9WQUxJRCwgaW1hcCk7Ci0JfQotCi0JZG8gewotCQlpZiAoKytnb2FsX2NwdSA+PSBOUl9DUFVTKQotCQkJZ29hbF9jcHUgPSAwOwotCX0gd2hpbGUgKCFjcHVfb25saW5lKGdvYWxfY3B1KSk7Ci0KLQlyZXR1cm4gZ29hbF9jcHU7Ci19Ci0KLS8qIENhbGxlZCBmcm9tIHJlcXVlc3RfaXJxLiAqLwotc3RhdGljIHZvaWQgZGlzdHJpYnV0ZV9pcnFzKHZvaWQpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgY3B1LCBsZXZlbDsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZpcnFfYWN0aW9uX2xvY2ssIGZsYWdzKTsKLQljcHUgPSAwOwotCi0JLyoKLQkgKiBTa2lwIHRoZSB0aW1lciBhdCBbMF0sIGFuZCB2ZXJ5IHJhcmUgZXJyb3IvcG93ZXIgaW50cnMgYXQgWzE1XS4KLQkgKiBBbHNvIGxldmVsIFsxMl0sIGl0IGNhdXNlcyBwcm9ibGVtcyBvbiBFeDAwMCBzeXN0ZW1zLgotCSAqLwotCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8IE5SX0lSUVM7IGxldmVsKyspIHsKLQkJc3RydWN0IGlycWFjdGlvbiAqcCA9IGlycV9hY3Rpb25bbGV2ZWxdOwotCi0JCWlmIChsZXZlbCA9PSAxMikKLQkJCWNvbnRpbnVlOwotCi0JCXdoaWxlKHApIHsKLQkJCWNwdSA9IHJldGFyZ2V0X29uZV9pcnEocCwgY3B1KTsKLQkJCXAgPSBwLT5uZXh0OwotCQl9Ci0JfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlycV9hY3Rpb25fbG9jaywgZmxhZ3MpOwotfQotI2VuZGlmCi0KIHN0cnVjdCBzdW41X3RpbWVyIHsKIAl1NjQJY291bnQwOwogCXU2NAlsaW1pdDA7CkBAIC05MjksNyArNjkwLDcgQEAKIHsKIAlpbnQgY3B1ID0gaGFyZF9zbXBfcHJvY2Vzc29yX2lkKCk7CiAKLQltZW1zZXQoX19pcnFfd29yayArIGNwdSwgMCwgc2l6ZW9mKHN0cnVjdCBpcnFfd29ya19zdHJ1Y3QpKTsKKwl0cmFwX2Jsb2NrW2NwdV0uaXJxX3dvcmtsaXN0ID0gMDsKIH0KIAogc3RhdGljIHZvaWQgX19jcHVpbml0IHJlZ2lzdGVyX29uZV9tb25kbyh1bnNpZ25lZCBsb25nIHBhZGRyLCB1bnNpZ25lZCBsb25nIHR5cGUpCkBAIC0xMDM3LDYgKzc5OCwxMCBAQAogCX0KIH0KIAorc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gdGltZXJfaXJxX2FjdGlvbiA9IHsKKwkubmFtZSA9ICJ0aW1lciIsCit9OworCiAvKiBPbmx5IGludm9rZWQgb24gYm9vdCBwcm9jZXNzb3IuICovCiB2b2lkIF9faW5pdCBpbml0X0lSUSh2b2lkKQogewpAQCAtMTA2NCwxMDkgKzgyOSw2IEBACiAJCQkgICAgIDogLyogTm8gb3V0cHV0cyAqLwogCQkJICAgICA6ICJpIiAoUFNUQVRFX0lFKQogCQkJICAgICA6ICJnMSIpOworCisJaXJxX2Rlc2NbMF0uYWN0aW9uID0gJnRpbWVyX2lycV9hY3Rpb247CiB9Ci0KLXN0YXRpYyBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKiByb290X2lycV9kaXI7Ci1zdGF0aWMgc3RydWN0IHByb2NfZGlyX2VudHJ5ICogaXJxX2RpciBbTlVNX0lWRUNTXTsKLQotI2lmZGVmIENPTkZJR19TTVAKLQotc3RhdGljIGludCBpcnFfYWZmaW5pdHlfcmVhZF9wcm9jIChjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZiwKLQkJCWludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IGlub19idWNrZXQgKmJwID0gaXZlY3Rvcl90YWJsZSArIChsb25nKWRhdGE7Ci0Jc3RydWN0IGlycV9kZXNjICpkZXNjID0gYnAtPmlycV9pbmZvOwotCXN0cnVjdCBpcnFhY3Rpb24gKmFwID0gZGVzYy0+YWN0aW9uOwotCWNwdW1hc2tfdCBtYXNrOwotCWludCBsZW47Ci0KLQltYXNrID0gZ2V0X3NtcGFmZl9pbl9pcnFhY3Rpb24oYXApOwotCWlmIChjcHVzX2VtcHR5KG1hc2spKQotCQltYXNrID0gY3B1X29ubGluZV9tYXA7Ci0KLQlsZW4gPSBjcHVtYXNrX3NjbnByaW50ZihwYWdlLCBjb3VudCwgbWFzayk7Ci0JaWYgKGNvdW50IC0gbGVuIDwgMikKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JbGVuICs9IHNwcmludGYocGFnZSArIGxlbiwgIlxuIik7Ci0JcmV0dXJuIGxlbjsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHNldF9pbnRyX2FmZmluaXR5KGludCBpcnEsIGNwdW1hc2tfdCBod19hZmYpCi17Ci0Jc3RydWN0IGlub19idWNrZXQgKmJwID0gaXZlY3Rvcl90YWJsZSArIGlycTsKLQlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBicC0+aXJxX2luZm87Ci0Jc3RydWN0IGlycWFjdGlvbiAqYXAgPSBkZXNjLT5hY3Rpb247Ci0KLQkvKiBVc2VycyBzcGVjaWZ5IGFmZmluaXR5IGluIHRlcm1zIG9mIGh3IGNwdSBpZHMuCi0JICogQXMgc29vbiBhcyB3ZSBkbyB0aGlzLCBoYW5kbGVyX2lycSgpIG1pZ2h0IHNlZSBhbmQgdGFrZSBhY3Rpb24uCi0JICovCi0JcHV0X3NtcGFmZl9pbl9pcnFhY3Rpb24oYXAsIGh3X2FmZik7Ci0KLQkvKiBNaWdyYXRpb24gaXMgc2ltcGx5IGRvbmUgYnkgdGhlIG5leHQgY3B1IHRvIHNlcnZpY2UgdGhpcwotCSAqIGludGVycnVwdC4KLQkgKi8KLX0KLQotc3RhdGljIGludCBpcnFfYWZmaW5pdHlfd3JpdGVfcHJvYyAoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsCi0JCQkJCXVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpCi17Ci0JaW50IGlycSA9IChsb25nKSBkYXRhLCBmdWxsX2NvdW50ID0gY291bnQsIGVycjsKLQljcHVtYXNrX3QgbmV3X3ZhbHVlOwotCi0JZXJyID0gY3B1bWFza19wYXJzZShidWZmZXIsIGNvdW50LCBuZXdfdmFsdWUpOwotCi0JLyoKLQkgKiBEbyBub3QgYWxsb3cgZGlzYWJsaW5nIElSUXMgY29tcGxldGVseSAtIGl0J3MgYSB0b28gZWFzeQotCSAqIHdheSB0byBtYWtlIHRoZSBzeXN0ZW0gdW51c2FibGUgYWNjaWRlbnRhbGx5IDotKSBBdCBsZWFzdAotCSAqIG9uZSBvbmxpbmUgQ1BVIHN0aWxsIGhhcyB0byBiZSB0YXJnZXRlZC4KLQkgKi8KLQljcHVzX2FuZChuZXdfdmFsdWUsIG5ld192YWx1ZSwgY3B1X29ubGluZV9tYXApOwotCWlmIChjcHVzX2VtcHR5KG5ld192YWx1ZSkpCi0JCXJldHVybiAtRUlOVkFMOwotCi0Jc2V0X2ludHJfYWZmaW5pdHkoaXJxLCBuZXdfdmFsdWUpOwotCi0JcmV0dXJuIGZ1bGxfY291bnQ7Ci19Ci0KLSNlbmRpZgotCi0jZGVmaW5lIE1BWF9OQU1FTEVOIDEwCi0KLXN0YXRpYyB2b2lkIHJlZ2lzdGVyX2lycV9wcm9jICh1bnNpZ25lZCBpbnQgaXJxKQotewotCWNoYXIgbmFtZSBbTUFYX05BTUVMRU5dOwotCi0JaWYgKCFyb290X2lycV9kaXIgfHwgaXJxX2RpcltpcnFdKQotCQlyZXR1cm47Ci0KLQltZW1zZXQobmFtZSwgMCwgTUFYX05BTUVMRU4pOwotCXNwcmludGYobmFtZSwgIiV4IiwgaXJxKTsKLQotCS8qIGNyZWF0ZSAvcHJvYy9pcnEvMTIzNCAqLwotCWlycV9kaXJbaXJxXSA9IHByb2NfbWtkaXIobmFtZSwgcm9vdF9pcnFfZGlyKTsKLQotI2lmZGVmIENPTkZJR19TTVAKLQkvKiBYWFggU01QIGFmZmluaXR5IG5vdCBzdXBwb3J0ZWQgb24gc3RhcmZpcmUgeWV0LiAqLwotCWlmICh0aGlzX2lzX3N0YXJmaXJlID09IDApIHsKLQkJc3RydWN0IHByb2NfZGlyX2VudHJ5ICplbnRyeTsKLQotCQkvKiBjcmVhdGUgL3Byb2MvaXJxLzEyMzQvc21wX2FmZmluaXR5ICovCi0JCWVudHJ5ID0gY3JlYXRlX3Byb2NfZW50cnkoInNtcF9hZmZpbml0eSIsIDA2MDAsIGlycV9kaXJbaXJxXSk7Ci0KLQkJaWYgKGVudHJ5KSB7Ci0JCQllbnRyeS0+bmxpbmsgPSAxOwotCQkJZW50cnktPmRhdGEgPSAodm9pZCAqKShsb25nKWlycTsKLQkJCWVudHJ5LT5yZWFkX3Byb2MgPSBpcnFfYWZmaW5pdHlfcmVhZF9wcm9jOwotCQkJZW50cnktPndyaXRlX3Byb2MgPSBpcnFfYWZmaW5pdHlfd3JpdGVfcHJvYzsKLQkJfQotCX0KLSNlbmRpZgotfQotCi12b2lkIGluaXRfaXJxX3Byb2MgKHZvaWQpCi17Ci0JLyogY3JlYXRlIC9wcm9jL2lycSAqLwotCXJvb3RfaXJxX2RpciA9IHByb2NfbWtkaXIoImlycSIsIE5VTEwpOwotfQotCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3BjaS5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2kuYwppbmRleCBmOTdkZGViLi45NDcyNTgwIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3BjaS5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpLmMKQEAgLTQ3LDEyICs0Nyw2IEBACiAvKiBFYWNoIFBDSSBjb250cm9sbGVyIGZvdW5kIGdldHMgYSB1bmlxdWUgaW5kZXguICovCiBpbnQgcGNpX251bV9jb250cm9sbGVycyA9IDA7CiAKLS8qIEF0IGJvb3QgdGltZSB0aGUgdXNlciBjYW4gZ2l2ZSB0aGUga2VybmVsIGEgY29tbWFuZAotICogbGluZSBvcHRpb24gd2hpY2ggY29udHJvbHMgaWYgYW5kIGhvdyBQQ0kgZGV2aWNlcwotICogYXJlIHJlb3JkZXJlZCBhdCBQQ0kgYnVzIHByb2JpbmcgdGltZS4KLSAqLwotaW50IHBjaV9kZXZpY2VfcmVvcmRlciA9IDA7Ci0KIHZvbGF0aWxlIGludCBwY2lfcG9rZV9pbl9wcm9ncmVzczsKIHZvbGF0aWxlIGludCBwY2lfcG9rZV9jcHUgPSAtMTsKIHZvbGF0aWxlIGludCBwY2lfcG9rZV9mYXVsdGVkOwpAQCAtMzE2LDI3ICszMTAsNiBAQAogCQlwLT5zY2FuX2J1cyhwKTsKIH0KIAotLyogUmVvcmRlciB0aGUgcGNpX2RldiBjaGFpbiwgc28gdGhhdCBvbmJvYXJkIGRldmljZXMgY29tZSBmaXJzdAotICogYW5kIHRoZW4gY29tZSB0aGUgcGx1Z2dhYmxlIGNhcmRzLgotICovCi1zdGF0aWMgdm9pZCBfX2luaXQgcGNpX3Jlb3JkZXJfZGV2cyh2b2lkKQotewotCXN0cnVjdCBsaXN0X2hlYWQgKnBjaV9vbmJvYXJkID0gJnBjaV9kZXZpY2VzOwotCXN0cnVjdCBsaXN0X2hlYWQgKndhbGsgPSBwY2lfb25ib2FyZC0+bmV4dDsKLQotCXdoaWxlICh3YWxrICE9IHBjaV9vbmJvYXJkKSB7Ci0JCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gcGNpX2Rldl9nKHdhbGspOwotCQlzdHJ1Y3QgbGlzdF9oZWFkICp3YWxrX25leHQgPSB3YWxrLT5uZXh0OwotCi0JCWlmIChwZGV2LT5pcnEgJiYgKF9faXJxX2lubyhwZGV2LT5pcnEpICYgMHgyMCkpIHsKLQkJCWxpc3RfZGVsKHdhbGspOwotCQkJbGlzdF9hZGQod2FsaywgcGNpX29uYm9hcmQpOwotCQl9Ci0KLQkJd2FsayA9IHdhbGtfbmV4dDsKLQl9Ci19Ci0KIGV4dGVybiB2b2lkIGNsb2NrX3Byb2JlKHZvaWQpOwogZXh0ZXJuIHZvaWQgcG93ZXJfaW5pdCh2b2lkKTsKIApAQCAtMzQ4LDkgKzMyMSw2IEBACiAKIAlwY2lfc2Nhbl9lYWNoX2NvbnRyb2xsZXJfYnVzKCk7CiAKLQlpZiAocGNpX2RldmljZV9yZW9yZGVyKQotCQlwY2lfcmVvcmRlcl9kZXZzKCk7Ci0KIAlpc2FfaW5pdCgpOwogCWVidXNfaW5pdCgpOwogCWNsb2NrX3Byb2JlKCk7CkBAIC00NDEsMTQgKzQxMSw2IEBACiAKIGNoYXIgKiBfX2luaXQgcGNpYmlvc19zZXR1cChjaGFyICpzdHIpCiB7Ci0JaWYgKCFzdHJjbXAoc3RyLCAib25ib2FyZGZpcnN0IikpIHsKLQkJcGNpX2RldmljZV9yZW9yZGVyID0gMTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCWlmICghc3RyY21wKHN0ciwgIm5vcmVvcmRlciIpKSB7Ci0JCXBjaV9kZXZpY2VfcmVvcmRlciA9IDA7Ci0JCXJldHVybiBOVUxMOwotCX0KIAlyZXR1cm4gc3RyOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9wc3ljaG8uYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3BzeWNoby5jCmluZGV4IGQxNzg3OGIuLjI0ZGIyMmEgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3BzeWNoby5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3BzeWNoby5jCkBAIC0yNzYsODIgKzI3NiwxMyBAQAogCSgoaW5vICYgMHgyMCkgPyAoUFNZQ0hPX0lDTFJfU0NTSSArICgoKGlubykgJiAweDFmKSA8PCAzKSkgOiAgXAogCQkJKFBTWUNIT19JQ0xSX0FfU0xPVDAgKyAoKChpbm8pICYgMHgxZik8PDMpKSkKIAotLyogUENJIFBTWUNITyBJTk8gbnVtYmVyIHRvIFNwYXJjIFBJTCBsZXZlbC4gKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHBzeWNob19waWxfdGFibGVbXSA9IHsKLS8qMHgwMCovMCwgMCwgMCwgMCwJLyogUENJIEEgc2xvdCAwICBJbnQgQSwgQiwgQywgRCAqLwotLyoweDA0Ki8wLCAwLCAwLCAwLAkvKiBQQ0kgQSBzbG90IDEgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MDgqLzAsIDAsIDAsIDAsCS8qIFBDSSBBIHNsb3QgMiAgSW50IEEsIEIsIEMsIEQgKi8KLS8qMHgwYyovMCwgMCwgMCwgMCwJLyogUENJIEEgc2xvdCAzICBJbnQgQSwgQiwgQywgRCAqLwotLyoweDEwKi8wLCAwLCAwLCAwLAkvKiBQQ0kgQiBzbG90IDAgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MTQqLzAsIDAsIDAsIDAsCS8qIFBDSSBCIHNsb3QgMSAgSW50IEEsIEIsIEMsIEQgKi8KLS8qMHgxOCovMCwgMCwgMCwgMCwJLyogUENJIEIgc2xvdCAyICBJbnQgQSwgQiwgQywgRCAqLwotLyoweDFjKi8wLCAwLCAwLCAwLAkvKiBQQ0kgQiBzbG90IDMgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MjAqLzUsCQkvKiBTQ1NJCQkJCSovCi0vKjB4MjEqLzUsCQkvKiBFdGhlcm5ldAkJCSovCi0vKjB4MjIqLzgsCQkvKiBQYXJhbGxlbCBQb3J0CQkqLwotLyoweDIzKi8xMywJCS8qIEF1ZGlvIFJlY29yZAkJCSovCi0vKjB4MjQqLzE0LAkJLyogQXVkaW8gUGxheWJhY2sJCSovCi0vKjB4MjUqLzE1LAkJLyogUG93ZXJGYWlsCQkJKi8KLS8qMHgyNiovNSwJCS8qIHNlY29uZCBTQ1NJCQkJKi8KLS8qMHgyNyovMTEsCQkvKiBGbG9wcHkJCQkqLwotLyoweDI4Ki81LAkJLyogU3BhcmUgSGFyZHdhcmUJCSovCi0vKjB4MjkqLzksCQkvKiBLZXlib2FyZAkJCSovCi0vKjB4MmEqLzUsCQkvKiBNb3VzZQkJCSovCi0vKjB4MmIqLzEyLAkJLyogU2VyaWFsCQkJKi8KLS8qMHgyYyovMTAsCQkvKiBUaW1lciAwCQkJKi8KLS8qMHgyZCovMTEsCQkvKiBUaW1lciAxCQkJKi8KLS8qMHgyZSovMTUsCQkvKiBVbmNvcnJlY3RhYmxlIEVDQwkJKi8KLS8qMHgyZiovMTUsCQkvKiBDb3JyZWN0YWJsZSBFQ0MJCSovCi0vKjB4MzAqLzE1LAkJLyogUENJIEJ1cyBBIEVycm9yCQkqLwotLyoweDMxKi8xNSwJCS8qIFBDSSBCdXMgQiBFcnJvcgkJKi8KLS8qMHgzMiovMTUsCQkvKiBQb3dlciBNYW5hZ2VtZW50CQkqLwotfTsKLQotc3RhdGljIGludCBwc3ljaG9faW5vX3RvX3BpbChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IGlubykKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gcHN5Y2hvX3BpbF90YWJsZVtpbm9dOwotCWlmIChyZXQgPT0gMCAmJiBwZGV2ID09IE5VTEwpIHsKLQkJcmV0ID0gNTsKLQl9IGVsc2UgaWYgKHJldCA9PSAwKSB7Ci0JCXN3aXRjaCAoKHBkZXYtPmNsYXNzID4+IDE2KSAmIDB4ZmYpIHsKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19TVE9SQUdFOgotCQkJcmV0ID0gNTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfTkVUV09SSzoKLQkJCXJldCA9IDY7Ci0JCQlicmVhazsKLQotCQljYXNlIFBDSV9CQVNFX0NMQVNTX0RJU1BMQVk6Ci0JCQlyZXQgPSA5OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19NVUxUSU1FRElBOgotCQljYXNlIFBDSV9CQVNFX0NMQVNTX01FTU9SWToKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19CUklER0U6Ci0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfU0VSSUFMOgotCQkJcmV0ID0gMTA7Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJcmV0ID0gNTsKLQkJCWJyZWFrOwotCQl9OwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyB1bnNpZ25lZCBpbnQgcHN5Y2hvX2lycV9idWlsZChzdHJ1Y3QgcGNpX3BibV9pbmZvICpwYm0sCiAJCQkJICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBpbm8pCiB7Ci0Jc3RydWN0IGlub19idWNrZXQgKmJ1Y2tldDsKIAl1bnNpZ25lZCBsb25nIGltYXAsIGljbHI7CiAJdW5zaWduZWQgbG9uZyBpbWFwX29mZiwgaWNscl9vZmY7Ci0JaW50IHBpbCwgaW5vZml4dXAgPSAwOworCWludCBpbm9maXh1cCA9IDA7CiAKIAlpbm8gJj0gUENJX0lSUV9JTk87CiAJaWYgKGlubyA8IFBTWUNIT19PTkJPQVJEX0lSUV9CQVNFKSB7CkBAIC0zNjcsMTEgKzI5OCw2IEBACiAJfQogCiAJLyogTm93IGJ1aWxkIHRoZSBJUlEgYnVja2V0LiAqLwotCXBpbCA9IHBzeWNob19pbm9fdG9fcGlsKHBkZXYsIGlubyk7Ci0KLQlpZiAoUElMX1JFU0VSVkVEKHBpbCkpCi0JCUJVRygpOwotCiAJaW1hcCA9IHBibS0+Y29udHJvbGxlcl9yZWdzICsgaW1hcF9vZmY7CiAJaW1hcCArPSA0OwogCkBAIC0zODIsMTAgKzMwOCw3IEBACiAJaWYgKChpbm8gJiAweDIwKSA9PSAwKQogCQlpbm9maXh1cCA9IGlubyAmIDB4MDM7CiAKLQlidWNrZXQgPSBfX2J1Y2tldChidWlsZF9pcnEocGlsLCBpbm9maXh1cCwgaWNsciwgaW1hcCkpOwotCWJ1Y2tldC0+ZmxhZ3MgfD0gSUJGX1BDSTsKLQotCXJldHVybiBfX2lycShidWNrZXQpOworCXJldHVybiBidWlsZF9pcnEoaW5vZml4dXAsIGljbHIsIGltYXApOwogfQogCiAvKiBQU1lDSE8gZXJyb3IgaGFuZGxpbmcgc3VwcG9ydC4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3NhYnJlLmMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zYWJyZS5jCmluZGV4IGY2N2JiN2YuLmI3ZDk5N2IgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3NhYnJlLmMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc2FicmUuYwpAQCAtNTIzLDc4ICs1MjMsNiBAQAogCSgoaW5vICYgMHgyMCkgPyAoU0FCUkVfSUNMUl9TQ1NJICsgKCgoaW5vKSAmIDB4MWYpIDw8IDMpKSA6ICBcCiAJCQkoU0FCUkVfSUNMUl9BX1NMT1QwICsgKCgoaW5vKSAmIDB4MWYpPDwzKSkpCiAKLS8qIFBDSSBTQUJSRSBJTk8gbnVtYmVyIHRvIFNwYXJjIFBJTCBsZXZlbC4gKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHNhYnJlX3BpbF90YWJsZVtdID0gewotLyoweDAwKi8wLCAwLCAwLCAwLAkvKiBQQ0kgQSBzbG90IDAgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MDQqLzAsIDAsIDAsIDAsCS8qIFBDSSBBIHNsb3QgMSAgSW50IEEsIEIsIEMsIEQgKi8KLS8qMHgwOCovMCwgMCwgMCwgMCwJLyogUENJIEEgc2xvdCAyICBJbnQgQSwgQiwgQywgRCAqLwotLyoweDBjKi8wLCAwLCAwLCAwLAkvKiBQQ0kgQSBzbG90IDMgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MTAqLzAsIDAsIDAsIDAsCS8qIFBDSSBCIHNsb3QgMCAgSW50IEEsIEIsIEMsIEQgKi8KLS8qMHgxNCovMCwgMCwgMCwgMCwJLyogUENJIEIgc2xvdCAxICBJbnQgQSwgQiwgQywgRCAqLwotLyoweDE4Ki8wLCAwLCAwLCAwLAkvKiBQQ0kgQiBzbG90IDIgIEludCBBLCBCLCBDLCBEICovCi0vKjB4MWMqLzAsIDAsIDAsIDAsCS8qIFBDSSBCIHNsb3QgMyAgSW50IEEsIEIsIEMsIEQgKi8KLS8qMHgyMCovNSwJCS8qIFNDU0kJCQkJKi8KLS8qMHgyMSovNSwJCS8qIEV0aGVybmV0CQkJKi8KLS8qMHgyMiovOCwJCS8qIFBhcmFsbGVsIFBvcnQJCSovCi0vKjB4MjMqLzEzLAkJLyogQXVkaW8gUmVjb3JkCQkJKi8KLS8qMHgyNCovMTQsCQkvKiBBdWRpbyBQbGF5YmFjawkJKi8KLS8qMHgyNSovMTUsCQkvKiBQb3dlckZhaWwJCQkqLwotLyoweDI2Ki81LAkJLyogc2Vjb25kIFNDU0kJCQkqLwotLyoweDI3Ki8xMSwJCS8qIEZsb3BweQkJCSovCi0vKjB4MjgqLzUsCQkvKiBTcGFyZSBIYXJkd2FyZQkJKi8KLS8qMHgyOSovOSwJCS8qIEtleWJvYXJkCQkJKi8KLS8qMHgyYSovNSwJCS8qIE1vdXNlCQkJKi8KLS8qMHgyYiovMTIsCQkvKiBTZXJpYWwJCQkqLwotLyoweDJjKi8xMCwJCS8qIFRpbWVyIDAJCQkqLwotLyoweDJkKi8xMSwJCS8qIFRpbWVyIDEJCQkqLwotLyoweDJlKi8xNSwJCS8qIFVuY29ycmVjdGFibGUgRUNDCQkqLwotLyoweDJmKi8xNSwJCS8qIENvcnJlY3RhYmxlIEVDQwkJKi8KLS8qMHgzMCovMTUsCQkvKiBQQ0kgQnVzIEEgRXJyb3IJCSovCi0vKjB4MzEqLzE1LAkJLyogUENJIEJ1cyBCIEVycm9yCQkqLwotLyoweDMyKi8xNSwJCS8qIFBvd2VyIE1hbmFnZW1lbnQJCSovCi19OwotCi1zdGF0aWMgaW50IHNhYnJlX2lub190b19waWwoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCBpbm8pCi17Ci0JaW50IHJldDsKLQotCWlmIChwZGV2ICYmCi0JICAgIHBkZXYtPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX1NVTiAmJgotCSAgICBwZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9TVU5fUklPX1VTQikKLQkJcmV0dXJuIDk7Ci0KLQlyZXQgPSBzYWJyZV9waWxfdGFibGVbaW5vXTsKLQlpZiAocmV0ID09IDAgJiYgcGRldiA9PSBOVUxMKSB7Ci0JCXJldCA9IDU7Ci0JfSBlbHNlIGlmIChyZXQgPT0gMCkgewotCQlzd2l0Y2ggKChwZGV2LT5jbGFzcyA+PiAxNikgJiAweGZmKSB7Ci0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfU1RPUkFHRToKLQkJCXJldCA9IDU7Ci0JCQlicmVhazsKLQotCQljYXNlIFBDSV9CQVNFX0NMQVNTX05FVFdPUks6Ci0JCQlyZXQgPSA2OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19ESVNQTEFZOgotCQkJcmV0ID0gOTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfTVVMVElNRURJQToKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19NRU1PUlk6Ci0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfQlJJREdFOgotCQljYXNlIFBDSV9CQVNFX0NMQVNTX1NFUklBTDoKLQkJCXJldCA9IDEwOwotCQkJYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJCXJldCA9IDU7Ci0JCQlicmVhazsKLQkJfTsKLQl9Ci0JcmV0dXJuIHJldDsKLX0KLQogLyogV2hlbiBhIGRldmljZSBsaXZlcyBiZWhpbmQgYSBicmlkZ2UgZGVlcGVyIGluIHRoZSBQQ0kgYnVzIHRvcG9sb2d5CiAgKiB0aGFuIEFQQiwgYSBzcGVjaWFsIHNlcXVlbmNlIG11c3QgcnVuIHRvIG1ha2Ugc3VyZSBhbGwgcGVuZGluZyBETUEKICAqIHRyYW5zZmVycyBhdCB0aGUgdGltZSBvZiBJUlEgZGVsaXZlcnkgYXJlIHZpc2libGUgaW4gdGhlIGNvaGVyZW5jeQpAQCAtNjAyLDcgKzUzMCw3IEBACiAgKiBzaWRlIG9mIHRoZSBub24tQVBCIGJyaWRnZSwgdGhlbiBwZXJmb3JtIGEgcmVhZCBvZiBTYWJyZSdzIERNQQogICogd3JpdGUtc3luYyByZWdpc3Rlci4KICAqLwotc3RhdGljIHZvaWQgc2FicmVfd3N5bmNfaGFuZGxlcihzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0LCB2b2lkICpfYXJnMSwgdm9pZCAqX2FyZzIpCitzdGF0aWMgdm9pZCBzYWJyZV93c3luY19oYW5kbGVyKHVuc2lnbmVkIGludCBpbm8sIHZvaWQgKl9hcmcxLCB2b2lkICpfYXJnMikKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IF9hcmcxOwogCXVuc2lnbmVkIGxvbmcgc3luY19yZWcgPSAodW5zaWduZWQgbG9uZykgX2FyZzI7CkBAIC02MTYsMTAgKzU0NCwxMCBAQAogCQkJCSAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJCQkgICAgdW5zaWduZWQgaW50IGlubykKIHsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OwogCXVuc2lnbmVkIGxvbmcgaW1hcCwgaWNscjsKIAl1bnNpZ25lZCBsb25nIGltYXBfb2ZmLCBpY2xyX29mZjsKLQlpbnQgcGlsLCBpbm9maXh1cCA9IDA7CisJaW50IGlub2ZpeHVwID0gMDsKKwlpbnQgdmlydF9pcnE7CiAKIAlpbm8gJj0gUENJX0lSUV9JTk87CiAJaWYgKGlubyA8IFNBQlJFX09OQk9BUkRfSVJRX0JBU0UpIHsKQEAgLTYzNSwxMSArNTYzLDYgQEAKIAl9CiAKIAkvKiBOb3cgYnVpbGQgdGhlIElSUSBidWNrZXQuICovCi0JcGlsID0gc2FicmVfaW5vX3RvX3BpbChwZGV2LCBpbm8pOwotCi0JaWYgKFBJTF9SRVNFUlZFRChwaWwpKQotCQlCVUcoKTsKLQogCWltYXAgPSBwYm0tPmNvbnRyb2xsZXJfcmVncyArIGltYXBfb2ZmOwogCWltYXAgKz0gNDsKIApAQCAtNjUwLDIzICs1NzMsMjMgQEAKIAlpZiAoKGlubyAmIDB4MjApID09IDApCiAJCWlub2ZpeHVwID0gaW5vICYgMHgwMzsKIAotCWJ1Y2tldCA9IF9fYnVja2V0KGJ1aWxkX2lycShwaWwsIGlub2ZpeHVwLCBpY2xyLCBpbWFwKSk7Ci0JYnVja2V0LT5mbGFncyB8PSBJQkZfUENJOworCXZpcnRfaXJxID0gYnVpbGRfaXJxKGlub2ZpeHVwLCBpY2xyLCBpbWFwKTsKIAogCWlmIChwZGV2KSB7CiAJCXN0cnVjdCBwY2lkZXZfY29va2llICpwY3AgPSBwZGV2LT5zeXNkYXRhOwogCiAJCWlmIChwZGV2LT5idXMtPm51bWJlciAhPSBwY3AtPnBibS0+cGNpX2ZpcnN0X2J1c25vKSB7CiAJCQlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXJfaW5mbyAqcCA9IHBjcC0+cGJtLT5wYXJlbnQ7Ci0JCQlzdHJ1Y3QgaXJxX2Rlc2MgKmQgPSBidWNrZXQtPmlycV9pbmZvOwogCi0JCQlkLT5wcmVfaGFuZGxlciA9IHNhYnJlX3dzeW5jX2hhbmRsZXI7Ci0JCQlkLT5wcmVfaGFuZGxlcl9hcmcxID0gcGRldjsKLQkJCWQtPnByZV9oYW5kbGVyX2FyZzIgPSAodm9pZCAqKQotCQkJCXAtPnBibV9BLmNvbnRyb2xsZXJfcmVncyArIFNBQlJFX1dSU1lOQzsKKwkJCWlycV9pbnN0YWxsX3ByZV9oYW5kbGVyKHZpcnRfaXJxLAorCQkJCQkJc2FicmVfd3N5bmNfaGFuZGxlciwKKwkJCQkJCXBkZXYsCisJCQkJCQkodm9pZCAqKQorCQkJCQkJcC0+cGJtX0EuY29udHJvbGxlcl9yZWdzICsKKwkJCQkJCVNBQlJFX1dSU1lOQyk7CiAJCX0KIAl9Ci0JcmV0dXJuIF9faXJxKGJ1Y2tldCk7CisJcmV0dXJuIHZpcnRfaXJxOwogfQogCiAvKiBTQUJSRSBlcnJvciBoYW5kbGluZyBzdXBwb3J0LiAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc2NoaXpvLmMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zY2hpem8uYwppbmRleCA3ZmU0ZGUwLi5jYzY2MmU5IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zY2hpem8uYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zY2hpem8uYwpAQCAtMjMyLDEwNSArMjMyLDEwIEBACiAJcmV0dXJuIFNDSElaT19JQ0xSX0JBU0UgKyAoaW5vICogOFVMKTsKIH0KIAotLyogUENJIFNDSElaTyBJTk8gbnVtYmVyIHRvIFNwYXJjIFBJTCBsZXZlbC4gIFRoaXMgdGFibGUgb25seSBtYXR0ZXJzIGZvcgotICogSU5PcyB3aGljaCB3aWxsIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgUENJIGRldmljZSBzdHJ1Y3QsIGllLiBvbmJvYXJkCi0gKiBFQlVTIGRldmljZXMgYW5kIFBDSSBjb250cm9sbGVyIGludGVybmFsIGVycm9yIGludGVycnVwdHMuCi0gKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIHNjaGl6b19waWxfdGFibGVbXSA9IHsKLS8qMHgwMCovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgMCAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgwNCovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgMSAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgwOCovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgMiAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgwYyovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgMyAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgxMCovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgNCAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgxNCovMCwgMCwgMCwgMCwJLyogUENJIHNsb3QgNSAgSW50IEEsIEIsIEMsIEQJKi8KLS8qMHgxOCovNSwJCS8qIFNDU0kJCQkJKi8KLS8qMHgxOSovNSwJCS8qIHNlY29uZCBTQ1NJCQkJKi8KLS8qMHgxYSovMCwJCS8qIFVOS05PV04JCQkqLwotLyoweDFiKi8wLAkJLyogVU5LTk9XTgkJCSovCi0vKjB4MWMqLzgsCQkvKiBQYXJhbGxlbAkJCSovCi0vKjB4MWQqLzUsCQkvKiBFdGhlcm5ldAkJCSovCi0vKjB4MWUqLzgsCQkvKiBGaXJld2lyZS0xMzk0CQkqLwotLyoweDFmKi85LAkJLyogVVNCCQkJCSovCi0vKjB4MjAqLzEzLAkJLyogQXVkaW8gUmVjb3JkCQkJKi8KLS8qMHgyMSovMTQsCQkvKiBBdWRpbyBQbGF5YmFjawkJKi8KLS8qMHgyMiovMTIsCQkvKiBTZXJpYWwJCQkqLwotLyoweDIzKi81LAkJLyogRUJVUyBJMkMgCQkJKi8KLS8qMHgyNCovMTAsCQkvKiBSVEMgQ2xvY2sJCQkqLwotLyoweDI1Ki8xMSwJCS8qIEZsb3BweQkJCSovCi0vKjB4MjYqLzAsCQkvKiBVTktOT1dOCQkJKi8KLS8qMHgyNyovMCwJCS8qIFVOS05PV04JCQkqLwotLyoweDI4Ki8wLAkJLyogVU5LTk9XTgkJCSovCi0vKjB4MjkqLzAsCQkvKiBVTktOT1dOCQkJKi8KLS8qMHgyYSovMTAsCQkvKiBVUEEgMQkJCSovCi0vKjB4MmIqLzEwLAkJLyogVVBBIDIJCQkqLwotLyoweDJjKi8wLAkJLyogVU5LTk9XTgkJCSovCi0vKjB4MmQqLzAsCQkvKiBVTktOT1dOCQkJKi8KLS8qMHgyZSovMCwJCS8qIFVOS05PV04JCQkqLwotLyoweDJmKi8wLAkJLyogVU5LTk9XTgkJCSovCi0vKjB4MzAqLzE1LAkJLyogVW5jb3JyZWN0YWJsZSBFQ0MJCSovCi0vKjB4MzEqLzE1LAkJLyogQ29ycmVjdGFibGUgRUNDCQkqLwotLyoweDMyKi8xNSwJCS8qIFBDSSBCdXMgQSBFcnJvcgkJKi8KLS8qMHgzMyovMTUsCQkvKiBQQ0kgQnVzIEIgRXJyb3IJCSovCi0vKjB4MzQqLzE1LAkJLyogU2FmYXJpIEJ1cyBFcnJvcgkJKi8KLS8qMHgzNSovMCwJCS8qIFJlc2VydmVkCQkJKi8KLS8qMHgzNiovMCwJCS8qIFJlc2VydmVkCQkJKi8KLS8qMHgzNyovMCwJCS8qIFJlc2VydmVkCQkJKi8KLS8qMHgzOCovMCwJCS8qIFJlc2VydmVkIGZvciBOZXdMaW5rCQkqLwotLyoweDM5Ki8wLAkJLyogUmVzZXJ2ZWQgZm9yIE5ld0xpbmsJCSovCi0vKjB4M2EqLzAsCQkvKiBSZXNlcnZlZCBmb3IgTmV3TGluawkJKi8KLS8qMHgzYiovMCwJCS8qIFJlc2VydmVkIGZvciBOZXdMaW5rCQkqLwotLyoweDNjKi8wLAkJLyogUmVzZXJ2ZWQgZm9yIE5ld0xpbmsJCSovCi0vKjB4M2QqLzAsCQkvKiBSZXNlcnZlZCBmb3IgTmV3TGluawkJKi8KLS8qMHgzZSovMCwJCS8qIFJlc2VydmVkIGZvciBOZXdMaW5rCQkqLwotLyoweDNmKi8wLAkJLyogUmVzZXJ2ZWQgZm9yIE5ld0xpbmsJCSovCi19OwotCi1zdGF0aWMgaW50IHNjaGl6b19pbm9fdG9fcGlsKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgaW5vKQotewotCWludCByZXQ7Ci0KLQlpZiAocGRldiAmJgotCSAgICBwZGV2LT52ZW5kb3IgPT0gUENJX1ZFTkRPUl9JRF9TVU4gJiYKLQkgICAgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfU1VOX1JJT19VU0IpCi0JCXJldHVybiA5OwotCi0JcmV0ID0gc2NoaXpvX3BpbF90YWJsZVtpbm9dOwotCWlmIChyZXQgPT0gMCAmJiBwZGV2ID09IE5VTEwpIHsKLQkJcmV0ID0gNTsKLQl9IGVsc2UgaWYgKHJldCA9PSAwKSB7Ci0JCXN3aXRjaCAoKHBkZXYtPmNsYXNzID4+IDE2KSAmIDB4ZmYpIHsKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19TVE9SQUdFOgotCQkJcmV0ID0gNTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfTkVUV09SSzoKLQkJCXJldCA9IDY7Ci0JCQlicmVhazsKLQotCQljYXNlIFBDSV9CQVNFX0NMQVNTX0RJU1BMQVk6Ci0JCQlyZXQgPSA5OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19NVUxUSU1FRElBOgotCQljYXNlIFBDSV9CQVNFX0NMQVNTX01FTU9SWToKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19CUklER0U6Ci0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfU0VSSUFMOgotCQkJcmV0ID0gMTA7Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJcmV0ID0gNTsKLQkJCWJyZWFrOwotCQl9OwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRvbWF0aWxsb193c3luY19oYW5kbGVyKHN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQsIHZvaWQgKl9hcmcxLCB2b2lkICpfYXJnMikKK3N0YXRpYyB2b2lkIHRvbWF0aWxsb193c3luY19oYW5kbGVyKHVuc2lnbmVkIGludCBpbm8sIHZvaWQgKl9hcmcxLCB2b2lkICpfYXJnMikKIHsKIAl1bnNpZ25lZCBsb25nIHN5bmNfcmVnID0gKHVuc2lnbmVkIGxvbmcpIF9hcmcyOwotCXU2NCBtYXNrID0gMVVMIDw8IChfX2lycV9pbm8oX19pcnEoYnVja2V0KSkgJiBJTUFQX0lOTyk7CisJdTY0IG1hc2sgPSAxVUwgPDwgKGlubyAmIElNQVBfSU5PKTsKIAl1NjQgdmFsOwogCWludCBsaW1pdDsKIApAQCAtMzY1LDMwICsyNzAsMzMgQEAKIAl9CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHNjaGl6b19pbm9fdG9faWNscihzdHJ1Y3QgcGNpX3BibV9pbmZvICpwYm0sCisJCQkJCXVuc2lnbmVkIGludCBpbm8pCit7CisJaW5vICY9IFBDSV9JUlFfSU5POworCXJldHVybiBwYm0tPnBibV9yZWdzICsgc2NoaXpvX2ljbHJfb2Zmc2V0KGlubykgKyA0OworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBzY2hpem9faW5vX3RvX2ltYXAoc3RydWN0IHBjaV9wYm1faW5mbyAqcGJtLAorCQkJCQl1bnNpZ25lZCBpbnQgaW5vKQoreworCWlubyAmPSBQQ0lfSVJRX0lOTzsKKwlyZXR1cm4gcGJtLT5wYm1fcmVncyArIHNjaGl6b19pbWFwX29mZnNldChpbm8pICsgNDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCBzY2hpem9faXJxX2J1aWxkKHN0cnVjdCBwY2lfcGJtX2luZm8gKnBibSwKIAkJCQkgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCQkJCSAgICAgdW5zaWduZWQgaW50IGlubykKIHsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OwogCXVuc2lnbmVkIGxvbmcgaW1hcCwgaWNscjsKLQl1bnNpZ25lZCBsb25nIGltYXBfb2ZmLCBpY2xyX29mZjsKLQlpbnQgcGlsLCBpZ25fZml4dXA7CisJaW50IGlnbl9maXh1cDsKKwlpbnQgdmlydF9pcnE7CiAKIAlpbm8gJj0gUENJX0lSUV9JTk87Ci0JaW1hcF9vZmYgPSBzY2hpem9faW1hcF9vZmZzZXQoaW5vKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgSVJRIGJ1Y2tldC4gKi8KLQlwaWwgPSBzY2hpem9faW5vX3RvX3BpbChwZGV2LCBpbm8pOwotCi0JaWYgKFBJTF9SRVNFUlZFRChwaWwpKQotCQlCVUcoKTsKLQotCWltYXAgPSBwYm0tPnBibV9yZWdzICsgaW1hcF9vZmY7Ci0JaW1hcCArPSA0OwotCi0JaWNscl9vZmYgPSBzY2hpem9faWNscl9vZmZzZXQoaW5vKTsKLQlpY2xyID0gcGJtLT5wYm1fcmVncyArIGljbHJfb2ZmOwotCWljbHIgKz0gNDsKKwlpbWFwID0gc2NoaXpvX2lub190b19pbWFwKHBibSwgaW5vKTsKKwlpY2xyID0gc2NoaXpvX2lub190b19pY2xyKHBibSwgaW5vKTsKIAogCS8qIE9uIFNjaGl6bywgbm8gaW5vZml4dXAgb2NjdXJzLiAgVGhpcyBpcyBiZWNhdXNlIGVhY2gKIAkgKiBJTk8gaGFzIGl0J3Mgb3duIElNQVAgcmVnaXN0ZXIuICBPbiBQc3ljaG8gYW5kIFNhYnJlCkBAIC00MDUsMTkgKzMxMywxNyBAQAogCQkJaWduX2ZpeHVwID0gKDEgPDwgNik7CiAJfQogCi0JYnVja2V0ID0gX19idWNrZXQoYnVpbGRfaXJxKHBpbCwgaWduX2ZpeHVwLCBpY2xyLCBpbWFwKSk7Ci0JYnVja2V0LT5mbGFncyB8PSBJQkZfUENJOworCXZpcnRfaXJxID0gYnVpbGRfaXJxKGlnbl9maXh1cCwgaWNsciwgaW1hcCk7CiAKIAlpZiAocGRldiAmJiBwYm0tPmNoaXBfdHlwZSA9PSBQQk1fQ0hJUF9UWVBFX1RPTUFUSUxMTykgewotCQlzdHJ1Y3QgaXJxX2Rlc2MgKnAgPSBidWNrZXQtPmlycV9pbmZvOwotCi0JCXAtPnByZV9oYW5kbGVyID0gdG9tYXRpbGxvX3dzeW5jX2hhbmRsZXI7Ci0JCXAtPnByZV9oYW5kbGVyX2FyZzEgPSAoKHBibS0+Y2hpcF92ZXJzaW9uIDw9IDQpID8KLQkJCQkgICAgICAgKHZvaWQgKikgMSA6ICh2b2lkICopIDApOwotCQlwLT5wcmVfaGFuZGxlcl9hcmcyID0gKHZvaWQgKikgcGJtLT5zeW5jX3JlZzsKKwkJaXJxX2luc3RhbGxfcHJlX2hhbmRsZXIodmlydF9pcnEsCisJCQkJCXRvbWF0aWxsb193c3luY19oYW5kbGVyLAorCQkJCQkoKHBibS0+Y2hpcF92ZXJzaW9uIDw9IDQpID8KKwkJCQkJICh2b2lkICopIDEgOiAodm9pZCAqKSAwKSwKKwkJCQkJKHZvaWQgKikgcGJtLT5zeW5jX3JlZyk7CiAJfQogCi0JcmV0dXJuIF9faXJxKGJ1Y2tldCk7CisJcmV0dXJuIHZpcnRfaXJxOwogfQogCiAvKiBTQ0hJWk8gZXJyb3IgaGFuZGxpbmcgc3VwcG9ydC4gKi8KQEAgLTQ1OCw3ICszNjQsNiBAQAogc3RhdGljIHZvaWQgc2NoaXpvX2NsZWFyX290aGVyX2Vycl9pbnRyKHN0cnVjdCBwY2lfY29udHJvbGxlcl9pbmZvICpwLCBpbnQgaXJxKQogewogCXN0cnVjdCBwY2lfcGJtX2luZm8gKnBibTsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OwogCXVuc2lnbmVkIGxvbmcgaWNscjsKIAogCS8qIERvIG5vdCBjbGVhciB0aGUgaW50ZXJydXB0IGZvciB0aGUgb3RoZXIgUENJIGJ1cy4KQEAgLTQ3NiwxMSArMzgxLDExIEBACiAJZWxzZQogCQlwYm0gPSAmcC0+cGJtX0E7CiAKLQlpcnEgPSBzY2hpem9faXJxX2J1aWxkKHBibSwgTlVMTCwKLQkJCSAgICAgICAocGJtLT5wb3J0aWQgPDwgNikgfCAoaXJxICYgSU1BUF9JTk8pKTsKLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCWljbHIgPSBidWNrZXQtPmljbHI7CisJc2NoaXpvX2lycV9idWlsZChwYm0sIE5VTEwsCisJCQkgKHBibS0+cG9ydGlkIDw8IDYpIHwgKGlycSAmIElNQVBfSU5PKSk7CiAKKwlpY2xyID0gc2NoaXpvX2lub190b19pY2xyKHBibSwKKwkJCQkgIChwYm0tPnBvcnRpZCA8PCA2KSB8IChpcnEgJiBJTUFQX0lOTykpOwogCXVwYV93cml0ZWwoSUNMUl9JRExFLCBpY2xyKTsKIH0KIApAQCAtMTIyNSw3ICsxMTMwLDYgQEAKIHsKIAlzdHJ1Y3QgcGNpX3BibV9pbmZvICpwYm07CiAJdW5zaWduZWQgaW50IGlycTsKLQlzdHJ1Y3QgaW5vX2J1Y2tldCAqYnVja2V0OwogCXU2NCB0bXAsIGVycl9tYXNrLCBlcnJfbm9fbWFzazsKIAogCS8qIEJ1aWxkIElSUXMgYW5kIHJlZ2lzdGVyIGhhbmRsZXJzLiAqLwpAQCAtMTIzNyw4ICsxMTQxLDcgQEAKIAkJCSAgICBwYm0tPm5hbWUpOwogCQlwcm9tX2hhbHQoKTsKIAl9Ci0JYnVja2V0ID0gX19idWNrZXQoaXJxKTsKLQl0bXAgPSB1cGFfcmVhZGwoYnVja2V0LT5pbWFwKTsKKwl0bXAgPSB1cGFfcmVhZGwoc2NoaXpvX2lub190b19pbWFwKHBibSwgKHBibS0+cG9ydGlkIDw8IDYpIHwgU0NISVpPX1VFX0lOTykpOwogCXVwYV93cml0ZWwodG1wLCAocGJtLT5wYm1fcmVncyArCiAJCQkgc2NoaXpvX2ltYXBfb2Zmc2V0KFNDSElaT19VRV9JTk8pICsgNCkpOwogCkBAIC0xMjUwLDggKzExNTMsNyBAQAogCQkJICAgIHBibS0+bmFtZSk7CiAJCXByb21faGFsdCgpOwogCX0KLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXRtcCA9IHVwYV9yZWFkbChidWNrZXQtPmltYXApOworCXRtcCA9IHVwYV9yZWFkbChzY2hpem9faW5vX3RvX2ltYXAocGJtLCAocGJtLT5wb3J0aWQgPDwgNikgfCBTQ0hJWk9fQ0VfSU5PKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsKIAkJCSBzY2hpem9faW1hcF9vZmZzZXQoU0NISVpPX0NFX0lOTykgKyA0KSk7CiAKQEAgLTEyNjQsOCArMTE2Niw4IEBACiAJCQkgICAgcGJtLT5uYW1lKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQotCWJ1Y2tldCA9IF9fYnVja2V0KGlycSk7Ci0JdG1wID0gdXBhX3JlYWRsKGJ1Y2tldC0+aW1hcCk7CisJdG1wID0gdXBhX3JlYWRsKHNjaGl6b19pbm9fdG9faW1hcChwYm0sICgocGJtLT5wb3J0aWQgPDwgNikgfAorCQkJCQkJIFNDSElaT19QQ0lFUlJfQV9JTk8pKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsKIAkJCSBzY2hpem9faW1hcF9vZmZzZXQoU0NISVpPX1BDSUVSUl9BX0lOTykgKyA0KSk7CiAKQEAgLTEyNzgsOCArMTE4MCw4IEBACiAJCQkgICAgcGJtLT5uYW1lKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQotCWJ1Y2tldCA9IF9fYnVja2V0KGlycSk7Ci0JdG1wID0gdXBhX3JlYWRsKGJ1Y2tldC0+aW1hcCk7CisJdG1wID0gdXBhX3JlYWRsKHNjaGl6b19pbm9fdG9faW1hcChwYm0sICgocGJtLT5wb3J0aWQgPDwgNikgfAorCQkJCQkJIFNDSElaT19QQ0lFUlJfQl9JTk8pKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsKIAkJCSBzY2hpem9faW1hcF9vZmZzZXQoU0NISVpPX1BDSUVSUl9CX0lOTykgKyA0KSk7CiAKQEAgLTEyOTEsOCArMTE5Myw4IEBACiAJCQkgICAgcGJtLT5uYW1lKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQotCWJ1Y2tldCA9IF9fYnVja2V0KGlycSk7Ci0JdG1wID0gdXBhX3JlYWRsKGJ1Y2tldC0+aW1hcCk7CisJdG1wID0gdXBhX3JlYWRsKHNjaGl6b19pbm9fdG9faW1hcChwYm0sICgocGJtLT5wb3J0aWQgPDwgNikgfAorCQkJCQkJIFNDSElaT19TRVJSX0lOTykpKTsKIAl1cGFfd3JpdGVsKHRtcCwgKHBibS0+cGJtX3JlZ3MgKwogCQkJIHNjaGl6b19pbWFwX29mZnNldChTQ0hJWk9fU0VSUl9JTk8pICsgNCkpOwogCkBAIC0xMzYzLDcgKzEyNjUsNiBAQAogewogCXN0cnVjdCBwY2lfcGJtX2luZm8gKnBibTsKIAl1bnNpZ25lZCBpbnQgaXJxOwotCXN0cnVjdCBpbm9fYnVja2V0ICpidWNrZXQ7CiAJdTY0IHRtcCwgZXJyX21hc2ssIGVycl9ub19tYXNrOwogCiAJLyogQnVpbGQgSVJRcyBhbmQgcmVnaXN0ZXIgaGFuZGxlcnMuICovCkBAIC0xMzc1LDggKzEyNzYsNyBAQAogCQkJICAgIHBibS0+bmFtZSk7CiAJCXByb21faGFsdCgpOwogCX0KLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXRtcCA9IHVwYV9yZWFkbChidWNrZXQtPmltYXApOworCXRtcCA9IHVwYV9yZWFkbChzY2hpem9faW5vX3RvX2ltYXAocGJtLCAocGJtLT5wb3J0aWQgPDwgNikgfCBTQ0hJWk9fVUVfSU5PKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsgc2NoaXpvX2ltYXBfb2Zmc2V0KFNDSElaT19VRV9JTk8pICsgNCkpOwogCiAJcGJtID0gcGJtX2Zvcl9pbm8ocCwgU0NISVpPX0NFX0lOTyk7CkBAIC0xMzg3LDggKzEyODcsNyBAQAogCQkJICAgIHBibS0+bmFtZSk7CiAJCXByb21faGFsdCgpOwogCX0KLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXRtcCA9IHVwYV9yZWFkbChidWNrZXQtPmltYXApOworCXRtcCA9IHVwYV9yZWFkbChzY2hpem9faW5vX3RvX2ltYXAocGJtLCAocGJtLT5wb3J0aWQgPDwgNikgfCBTQ0hJWk9fQ0VfSU5PKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsgc2NoaXpvX2ltYXBfb2Zmc2V0KFNDSElaT19DRV9JTk8pICsgNCkpOwogCiAJcGJtID0gcGJtX2Zvcl9pbm8ocCwgU0NISVpPX1BDSUVSUl9BX0lOTyk7CkBAIC0xMzk5LDggKzEyOTgsNyBAQAogCQkJICAgIHBibS0+bmFtZSk7CiAJCXByb21faGFsdCgpOwogCX0KLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXRtcCA9IHVwYV9yZWFkbChidWNrZXQtPmltYXApOworCXRtcCA9IHVwYV9yZWFkbChzY2hpem9faW5vX3RvX2ltYXAocGJtLCAocGJtLT5wb3J0aWQgPDwgNikgfCBTQ0hJWk9fUENJRVJSX0FfSU5PKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsgc2NoaXpvX2ltYXBfb2Zmc2V0KFNDSElaT19QQ0lFUlJfQV9JTk8pICsgNCkpOwogCiAJcGJtID0gcGJtX2Zvcl9pbm8ocCwgU0NISVpPX1BDSUVSUl9CX0lOTyk7CkBAIC0xNDExLDggKzEzMDksNyBAQAogCQkJICAgIHBibS0+bmFtZSk7CiAJCXByb21faGFsdCgpOwogCX0KLQlidWNrZXQgPSBfX2J1Y2tldChpcnEpOwotCXRtcCA9IHVwYV9yZWFkbChidWNrZXQtPmltYXApOworCXRtcCA9IHVwYV9yZWFkbChzY2hpem9faW5vX3RvX2ltYXAocGJtLCAocGJtLT5wb3J0aWQgPDwgNikgfCBTQ0hJWk9fUENJRVJSX0JfSU5PKSk7CiAJdXBhX3dyaXRlbCh0bXAsIChwYm0tPnBibV9yZWdzICsgc2NoaXpvX2ltYXBfb2Zmc2V0KFNDSElaT19QQ0lFUlJfQl9JTk8pICsgNCkpOwogCiAJcGJtID0gcGJtX2Zvcl9pbm8ocCwgU0NISVpPX1NFUlJfSU5PKTsKQEAgLTE0MjMsOCArMTMyMCw3IEBACiAJCQkgICAgcGJtLT5uYW1lKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQotCWJ1Y2tldCA9IF9fYnVja2V0KGlycSk7Ci0JdG1wID0gdXBhX3JlYWRsKGJ1Y2tldC0+aW1hcCk7CisJdG1wID0gdXBhX3JlYWRsKHNjaGl6b19pbm9fdG9faW1hcChwYm0sIChwYm0tPnBvcnRpZCA8PCA2KSB8IFNDSElaT19TRVJSX0lOTykpOwogCXVwYV93cml0ZWwodG1wLCAocGJtLT5wYm1fcmVncyArIHNjaGl6b19pbWFwX29mZnNldChTQ0hJWk9fU0VSUl9JTk8pICsgNCkpOwogCiAJLyogRW5hYmxlIFVFIGFuZCBDRSBpbnRlcnJ1cHRzIGZvciBjb250cm9sbGVyLiAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc3VuNHYuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvcGNpX3N1bjR2LmMKaW5kZXggMGMwODk1Mi4uNTQxOTQ4MCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9wY2lfc3VuNHYuYworKysgYi9hcmNoL3NwYXJjNjQva2VybmVsL3BjaV9zdW40di5jCkBAIC04NDMsMzggKzg0Myw4IEBACiAJCQkJCXVuc2lnbmVkIGludCBkZXZpbm8pCiB7CiAJdTMyIGRldmhhbmRsZSA9IHBibS0+ZGV2aGFuZGxlOwotCWludCBwaWw7CiAKLQlwaWwgPSA1OwotCWlmIChwZGV2KSB7Ci0JCXN3aXRjaCAoKHBkZXYtPmNsYXNzID4+IDE2KSAmIDB4ZmYpIHsKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19TVE9SQUdFOgotCQkJcGlsID0gNTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfTkVUV09SSzoKLQkJCXBpbCA9IDY7Ci0JCQlicmVhazsKLQotCQljYXNlIFBDSV9CQVNFX0NMQVNTX0RJU1BMQVk6Ci0JCQlwaWwgPSA5OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19NVUxUSU1FRElBOgotCQljYXNlIFBDSV9CQVNFX0NMQVNTX01FTU9SWToKLQkJY2FzZSBQQ0lfQkFTRV9DTEFTU19CUklER0U6Ci0JCWNhc2UgUENJX0JBU0VfQ0xBU1NfU0VSSUFMOgotCQkJcGlsID0gMTA7Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJcGlsID0gNTsKLQkJCWJyZWFrOwotCQl9OwotCX0KLQlCVUdfT04oUElMX1JFU0VSVkVEKHBpbCkpOwotCi0JcmV0dXJuIHN1bjR2X2J1aWxkX2lycShkZXZoYW5kbGUsIGRldmlubywgcGlsLCBJQkZfUENJKTsKKwlyZXR1cm4gc3VuNHZfYnVpbGRfaXJxKGRldmhhbmRsZSwgZGV2aW5vKTsKIH0KIAogc3RhdGljIHZvaWQgcGNpX3N1bjR2X2Jhc2VfYWRkcmVzc191cGRhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvc2J1cy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zYnVzLmMKaW5kZXggMWQ2ZmZkZS4uODgxMjQxNyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zYnVzLmMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zYnVzLmMKQEAgLTY5MSwzNiArNjkxLDYgQEAKIAl1cGFfd3JpdGVxKHZhbCwgY2ZnX3JlZyk7CiB9CiAKLS8qIFNCVVMgU1lTSU8gSU5PIG51bWJlciB0byBTcGFyYyBQSUwgbGV2ZWwuICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBzeXNpb19pbm9fdG9fcGlsW10gPSB7Ci0JMCwgNSwgNSwgNywgNSwgNywgOCwgOSwJCS8qIFNCVVMgc2xvdCAwICovCi0JMCwgNSwgNSwgNywgNSwgNywgOCwgOSwJCS8qIFNCVVMgc2xvdCAxICovCi0JMCwgNSwgNSwgNywgNSwgNywgOCwgOSwJCS8qIFNCVVMgc2xvdCAyICovCi0JMCwgNSwgNSwgNywgNSwgNywgOCwgOSwJCS8qIFNCVVMgc2xvdCAzICovCi0JNSwgLyogT25ib2FyZCBTQ1NJICovCi0JNSwgLyogT25ib2FyZCBFdGhlcm5ldCAqLwotLypYWFgqLwk4LCAvKiBPbmJvYXJkIEJQUCAqLwotCTAsIC8qIEJvZ29uICovCi0gICAgICAgMTMsIC8qIEF1ZGlvICovCi0vKlhYWCovMTUsIC8qIFBvd2VyRmFpbCAqLwotCTAsIC8qIEJvZ29uICovCi0JMCwgLyogQm9nb24gKi8KLSAgICAgICAxMiwgLyogWmlsb2cgU2VyaWFsIENoYW5uZWxzIChpbmNsLiBLZXlib2FyZC9Nb3VzZSBsaW5lcykgKi8KLSAgICAgICAxMSwgLyogRmxvcHB5ICovCi0JMCwgLyogU3BhcmUgSGFyZHdhcmUgKGJvZ29uIGZvciBub3cpICovCi0JMCwgLyogS2V5Ym9hcmQgKGJvZ29uIGZvciBub3cpICovCi0JMCwgLyogTW91c2UgKGJvZ29uIGZvciBub3cpICovCi0JMCwgLyogU2VyaWFsIChib2dvbiBmb3Igbm93KSAqLwotICAgICAwLCAwLCAvKiBCb2dvbiwgQm9nb24gKi8KLSAgICAgICAxMCwgLyogVGltZXIgMCAqLwotICAgICAgIDExLCAvKiBUaW1lciAxICovCi0gICAgIDAsIDAsIC8qIEJvZ29uLCBCb2dvbiAqLwotICAgICAgIDE1LCAvKiBVbmNvcnJlY3RhYmxlIFNCVVMgRXJyb3IgKi8KLSAgICAgICAxNSwgLyogQ29ycmVjdGFibGUgU0JVUyBFcnJvciAqLwotICAgICAgIDE1LCAvKiBTQlVTIEVycm9yICovCi0vKlhYWCovIDAsIC8qIFBvd2VyIE1hbmFnZW1lbnQgKGJvZ29uIGZvciBub3cpICovCi19OwotCiAvKiBJTk8gbnVtYmVyIHRvIElNQVAgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTWVNJTyBleHRlcm5hbCBJUlEncy4KICAqIFRoaXMgc2hvdWxkIGNvbmZvcm0gdG8gYm90aCBTdW5maXJlL1dpbGRmaXJlIHNlcnZlciBhbmQgRnVzaW9uCiAgKiBkZXNrdG9wIGRlc2lnbnMuCkBAIC04MTIsMjEgKzc4MiwxMiBAQAogCXN0cnVjdCBzYnVzX2lvbW11ICppb21tdSA9IHNidXMtPmlvbW11OwogCXVuc2lnbmVkIGxvbmcgcmVnX2Jhc2UgPSBpb21tdS0+c2J1c19jb250cm9sX3JlZyAtIDB4MjAwMFVMOwogCXVuc2lnbmVkIGxvbmcgaW1hcCwgaWNscjsKLQlpbnQgcGlsLCBzYnVzX2xldmVsID0gMDsKLQotCXBpbCA9IHN5c2lvX2lub190b19waWxbaW5vXTsKLQlpZiAoIXBpbCkgewotCQlwcmludGsoInNidXNfaXJxX2J1aWxkOiBCYWQgU1lTSU8gSU5PWyV4XVxuIiwgaW5vKTsKLQkJcGFuaWMoIkJhZCBTWVNJTyBJUlEgdHJhbnNsYXRpb25zLi4uIik7Ci0JfQotCi0JaWYgKFBJTF9SRVNFUlZFRChwaWwpKQotCQlCVUcoKTsKKwlpbnQgc2J1c19sZXZlbCA9IDA7CiAKIAlpbWFwID0gc3lzaW9faXJxX29mZnNldHNbaW5vXTsKIAlpZiAoaW1hcCA9PSAoKHVuc2lnbmVkIGxvbmcpLTEpKSB7Ci0JCXByb21fcHJpbnRmKCJnZXRfaXJxX3RyYW5zbGF0aW9uczogQmFkIFNZU0lPIElOT1sleF0gY3B1WyVkXVxuIiwKLQkJCSAgICBpbm8sIHBpbCk7CisJCXByb21fcHJpbnRmKCJnZXRfaXJxX3RyYW5zbGF0aW9uczogQmFkIFNZU0lPIElOT1sleF1cbiIsCisJCQkgICAgaW5vKTsKIAkJcHJvbV9oYWx0KCk7CiAJfQogCWltYXAgKz0gcmVnX2Jhc2U7CkBAIC04NjAsNyArODIxLDcgQEAKIAogCQlpY2xyICs9ICgodW5zaWduZWQgbG9uZylzYnVzX2xldmVsIC0gMVVMKSAqIDhVTDsKIAl9Ci0JcmV0dXJuIGJ1aWxkX2lycShwaWwsIHNidXNfbGV2ZWwsIGljbHIsIGltYXApOworCXJldHVybiBidWlsZF9pcnEoc2J1c19sZXZlbCwgaWNsciwgaW1hcCk7CiB9CiAKIC8qIEVycm9yIGludGVycnVwdCBoYW5kbGluZy4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3BhcmM2NF9rc3ltcy5jIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zcGFyYzY0X2tzeW1zLmMKaW5kZXggMzhlNTY5Zi4uNGFjMzVkZCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC9zcGFyYzY0X2tzeW1zLmMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC9zcGFyYzY0X2tzeW1zLmMKQEAgLTEyNSw5ICsxMjUsNiBAQAogRVhQT1JUX1NZTUJPTChfX3dyaXRlX3VubG9jayk7CiBFWFBPUlRfU1lNQk9MKF9fd3JpdGVfdHJ5bG9jayk7CiAKLS8qIEhhcmQgSVJRIGxvY2tpbmcgKi8KLUVYUE9SVF9TWU1CT0woc3luY2hyb25pemVfaXJxKTsKLQogI2lmIGRlZmluZWQoQ09ORklHX01DT1VOVCkKIGV4dGVybiB2b2lkIF9tY291bnQodm9pZCk7CiBFWFBPUlRfU1lNQk9MKF9tY291bnQpOwpAQCAtMTc1LDEwICsxNzIsNiBAQAogRVhQT1JUX1NZTUJPTChjbGVhcl9iaXQpOwogRVhQT1JUX1NZTUJPTChjaGFuZ2VfYml0KTsKIAotRVhQT1JUX1NZTUJPTChpdmVjdG9yX3RhYmxlKTsKLUVYUE9SVF9TWU1CT0woZW5hYmxlX2lycSk7Ci1FWFBPUlRfU1lNQk9MKGRpc2FibGVfaXJxKTsKLQogRVhQT1JUX1NZTUJPTChfX2ZsdXNod191c2VyKTsKIAogRVhQT1JUX1NZTUJPTCh0bGJfdHlwZSk7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3N1bjR2X2l2ZWMuUyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3VuNHZfaXZlYy5TCmluZGV4IGI0OWE2OGIuLjQ5NzAzYzMgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3VuNHZfaXZlYy5TCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvc3VuNHZfaXZlYy5TCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSA8YXNtL2NwdWRhdGEuaD4KICNpbmNsdWRlIDxhc20vaW50cl9xdWV1ZS5oPgorI2luY2x1ZGUgPGFzbS9waWwuaD4KIAogCS50ZXh0CiAJLmFsaWduCTMyCkBAIC0xMDIsMjMgKzEwMywxNyBAQAogCiAJLyogR2V0ICZpdmVjdG9yX3RhYmxlW0lWRUNdIGludG8gJWc0LiAgKi8KIAlzZXRoaQklaGkoaXZlY3Rvcl90YWJsZSksICVnNAotCXNsbHgJJWczLCA1LCAlZzMKKwlzbGx4CSVnMywgMywgJWczCiAJb3IJJWc0LCAlbG8oaXZlY3Rvcl90YWJsZSksICVnNAogCWFkZAklZzQsICVnMywgJWc0CiAKLQkvKiBMb2FkIElSUSAlcGlsIGludG8gJWc1LiAgKi8KLQlsZHViCVslZzQgKyAweDA0XSwgJWc1Ci0KIAkvKiBJbnNlcnQgaXZlY3Rvcl90YWJsZVtdIGVudHJ5IGludG8gX19pcnFfd29ya1tdIHF1ZXVlLiAgKi8KLQlzbGx4CSVnNSwgMiwgJWczCi0JbGR1dwlbJWcxICsgJWczXSwgJWcyCS8qIGcyID0gaXJxX3dvcmsoY3B1LCBwaWwpICovCisJbGR1dwlbJWcxXSwgJWcyCQkvKiBnMiA9IGlycV93b3JrKGNwdSkgKi8KIAlzdHcJJWcyLCBbJWc0ICsgMHgwMF0JLyogYnVja2V0LT5pcnFfY2hhaW4gPSBnMiAqLwotCXN0dwklZzQsIFslZzEgKyAlZzNdCS8qIGlycV93b3JrKGNwdSwgcGlsKSA9IGJ1Y2tldCAqLworCXN0dwklZzQsIFslZzFdCQkvKiBpcnFfd29yayhjcHUpID0gYnVja2V0ICovCiAKIAkvKiBTaWduYWwgdGhlIGludGVycnVwdCBieSBzZXR0aW5nICgxIDw8IHBpbCkgaW4gJXNvZnRpbnQuICAqLwotCW1vdgkxLCAlZzIKLQlzbGx4CSVnMiwgJWc1LCAlZzIKLQl3cgklZzIsIDB4MCwgJXNldF9zb2Z0aW50CisJd3IJJWcwLCAxIDw8IFBJTF9ERVZJQ0VfSVJRLCAlc2V0X3NvZnRpbnQKIAogc3VuNHZfZGV2X21vbmRvX3F1ZXVlX2VtcHR5OgogCXJldHJ5CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3RpbWUuYyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCmluZGV4IGU1NWI1YzYuLjBmMDBhOTkgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvdGltZS5jCkBAIC00NTcsNyArNDU3LDcgQEAKIAl9CiB9CiAKLXN0YXRpYyBpcnFyZXR1cm5fdCB0aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpCitpcnFyZXR1cm5fdCB0aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyB0aWNrcywgY29tcGFyZSwgcHN0YXRlOwogCkBAIC0xMDIwLDE5ICsxMDIwLDkgQEAKIAlyZXR1cm4gY2xvY2s7CiB9CiAKLXN0YXRpYyB2b2lkIHNwYXJjNjRfc3RhcnRfdGltZXJzKGlycXJldHVybl90ICgqY2Z1bmMpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSkKK3N0YXRpYyB2b2lkIHNwYXJjNjRfc3RhcnRfdGltZXJzKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBwc3RhdGU7Ci0JaW50IGVycjsKLQotCS8qIFJlZ2lzdGVyIElSUSBoYW5kbGVyLiAqLwotCWVyciA9IHJlcXVlc3RfaXJxKGJ1aWxkX2lycSgwLCAwLCAwVUwsIDBVTCksIGNmdW5jLCAwLAotCQkJICAidGltZXIiLCBOVUxMKTsKLQotCWlmIChlcnIpIHsKLQkJcHJvbV9wcmludGYoIlNlcmlvdXMgcHJvYmxlbSwgY2Fubm90IHJlZ2lzdGVyIFRJQ0tfSU5UXG4iKTsKLQkJcHJvbV9oYWx0KCk7Ci0JfQogCiAJLyogR3VhcmFudGVlIHRoYXQgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZXMgZXhlY3V0ZQogCSAqIHVuaW50ZXJydXB0ZWQuCkBAIC0xMTE2LDcgKzExMDYsNyBAQAogCS8qIE5vdyB0aGF0IHRoZSBpbnRlcnBvbGF0b3IgaXMgcmVnaXN0ZXJlZCwgaXQgaXMKIAkgKiBzYWZlIHRvIHN0YXJ0IHRoZSB0aW1lciB0aWNraW5nLgogCSAqLwotCXNwYXJjNjRfc3RhcnRfdGltZXJzKHRpbWVyX2ludGVycnVwdCk7CisJc3BhcmM2NF9zdGFydF90aW1lcnMoKTsKIAogCXRpbWVyX3RpY2tzX3Blcl9uc2VjX3F1b3RpZW50ID0KIAkJKCgoTlNFQ19QRVJfU0VDIDw8IFNQQVJDNjRfTlNFQ19QRVJfQ1lDX1NISUZUKSArCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjNjQva2VybmVsL3RyYXBzLmMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3RyYXBzLmMKaW5kZXggNTYzZGI1Mi4uNTA1OWNiZCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYzY0L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvc3BhcmM2NC9rZXJuZWwvdHJhcHMuYwpAQCAtMjU0NCw3ICsyNTQ0LDkgQEAKIAkgICAgKFRSQVBfUEVSX0NQVV9UU0JfSFVHRSAhPQogCSAgICAgb2Zmc2V0b2Yoc3RydWN0IHRyYXBfcGVyX2NwdSwgdHNiX2h1Z2UpKSB8fAogCSAgICAoVFJBUF9QRVJfQ1BVX1RTQl9IVUdFX1RFTVAgIT0KLQkgICAgIG9mZnNldG9mKHN0cnVjdCB0cmFwX3Blcl9jcHUsIHRzYl9odWdlX3RlbXApKSkKKwkgICAgIG9mZnNldG9mKHN0cnVjdCB0cmFwX3Blcl9jcHUsIHRzYl9odWdlX3RlbXApKSB8fAorCSAgICAoVFJBUF9QRVJfQ1BVX0lSUV9XT1JLTElTVCAhPQorCSAgICAgb2Zmc2V0b2Yoc3RydWN0IHRyYXBfcGVyX2NwdSwgaXJxX3dvcmtsaXN0KSkpCiAJCXRyYXBfcGVyX2NwdV9vZmZzZXRzX2FyZV9ib2xpeGVkX2RhdmUoKTsKIAogCWlmICgoVFNCX0NPTkZJR19UU0IgIT0KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdHRhYmxlLlMgYi9hcmNoL3NwYXJjNjQva2VybmVsL3R0YWJsZS5TCmluZGV4IDVkOTAxNTEuLmVlNDVjYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9rZXJuZWwvdHRhYmxlLlMKKysrIGIvYXJjaC9zcGFyYzY0L2tlcm5lbC90dGFibGUuUwpAQCAtNTgsMTMgKzU4LDExIEBACiB0bDBfaXJxMzoJQlRSQVAoMHg0MykKIHRsMF9pcnE0OglCVFJBUCgweDQ0KQogI2VuZGlmCi10bDBfaXJxNToJVFJBUF9JUlEoaGFuZGxlcl9pcnEsIDUpICBUUkFQX0lSUShoYW5kbGVyX2lycSwgNikKLXRsMF9pcnE3OglUUkFQX0lSUShoYW5kbGVyX2lycSwgNykgIFRSQVBfSVJRKGhhbmRsZXJfaXJxLCA4KQotdGwwX2lycTk6CVRSQVBfSVJRKGhhbmRsZXJfaXJxLCA5KSAgVFJBUF9JUlEoaGFuZGxlcl9pcnEsIDEwKQotdGwwX2lycTExOglUUkFQX0lSUShoYW5kbGVyX2lycSwgMTEpIFRSQVBfSVJRKGhhbmRsZXJfaXJxLCAxMikKLXRsMF9pcnExMzoJVFJBUF9JUlEoaGFuZGxlcl9pcnEsIDEzKQordGwwX2lycTU6CVRSQVBfSVJRKGhhbmRsZXJfaXJxLCA1KQordGwwX2lycTY6CUJUUkFQKDB4NDYpIEJUUkFQKDB4NDcpIEJUUkFQKDB4NDgpIEJUUkFQKDB4NDkpCit0bDBfaXJxMTA6CUJUUkFQKDB4NGEpIEJUUkFQKDB4NGIpIEJUUkFQKDB4NGMpIEJUUkFQKDB4NGQpCiAjaWZuZGVmIENPTkZJR19TTVAKLXRsMF9pcnExNDoJVFJBUF9JUlEoaGFuZGxlcl9pcnEsIDE0KQordGwwX2lycTE0OglUUkFQX0lSUSh0aW1lcl9pcnEsIDE0KQogI2Vsc2UKIHRsMF9pcnExNDoJVElDS19TTVBfSVJRCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmM2NC9zb2xhcmlzL2ZzLmMgYi9hcmNoL3NwYXJjNjQvc29sYXJpcy9mcy5jCmluZGV4IDQ4ODVjYTYuLjBmMGViNmEgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmM2NC9zb2xhcmlzL2ZzLmMKKysrIGIvYXJjaC9zcGFyYzY0L3NvbGFyaXMvZnMuYwpAQCAtMzU2LDcgKzM1Niw3IEBACiAJaW50IGVycm9yOwogCXN0cnVjdCBzb2xfc3RhdHZmcyBfX3VzZXIgKnNzID0gQShidWYpOwogCi0JZXJyb3IgPSB2ZnNfc3RhdGZzKG1udC0+bW50X3NiLCAmcyk7CisJZXJyb3IgPSB2ZnNfc3RhdGZzKG1udC0+bW50X3Jvb3QsICZzKTsKIAlpZiAoIWVycm9yKSB7CiAJCWNvbnN0IGNoYXIgKnAgPSBtbnQtPm1udF9zYi0+c190eXBlLT5uYW1lOwogCQlpbnQgaSA9IDA7CkBAIC0zOTIsNyArMzkyLDcgQEAKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHNvbF9zdGF0dmZzNjQgX191c2VyICpzcyA9IEEoYnVmKTsKIAkJCQotCWVycm9yID0gdmZzX3N0YXRmcyhtbnQtPm1udF9zYiwgJnMpOworCWVycm9yID0gdmZzX3N0YXRmcyhtbnQtPm1udF9yb290LCAmcyk7CiAJaWYgKCFlcnJvcikgewogCQljb25zdCBjaGFyICpwID0gbW50LT5tbnRfc2ItPnNfdHlwZS0+bmFtZTsKIAkJaW50IGkgPSAwOwpkaWZmIC0tZ2l0IGEvYXJjaC91bS9LY29uZmlnLmRlYnVnIGIvYXJjaC91bS9LY29uZmlnLmRlYnVnCmluZGV4IDU2ODFhOGIuLmJhYjUxZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0vS2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL3VtL0tjb25maWcuZGVidWcKQEAgLTQ5LDcgKzQ5LDYgQEAKIAogY29uZmlnIFNZU0NBTExfREVCVUcKIAlib29sICJFbmFibGUgc3lzdGVtIGNhbGwgZGVidWdnaW5nIgotCWRlZmF1bHQgTgogCWRlcGVuZHMgb24gREVCVUdfSU5GTwogCWhlbHAKIAlUaGlzIGFkZHMgc29tZSBzeXN0ZW0gZGVidWdnaW5nIHRvIFVNTCwgaW5jbHVkaW5nIGtlZXBpbmcgYSByaW5nIGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvdGltZV9rZXJuLmMgYi9hcmNoL3VtL2tlcm5lbC90aW1lX2tlcm4uYwppbmRleCA4NmY1MWQwLi44N2NkYmM1IDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC90aW1lX2tlcm4uYworKysgYi9hcmNoL3VtL2tlcm5lbC90aW1lX2tlcm4uYwpAQCAtODcsNyArODcsNyBAQAogCiB2b2lkIHRpbWVfaW5pdF9rZXJuKHZvaWQpCiB7Ci0JdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzOworCWxvbmcgbG9uZyBuc2VjczsKIAogCW5zZWNzID0gb3NfbnNlY3MoKTsKIAlzZXRfbm9ybWFsaXplZF90aW1lc3BlYygmd2FsbF90b19tb25vdG9uaWMsIC1uc2VjcyAvIEJJTExJT04sCmRpZmYgLS1naXQgYS9hcmNoL3VtL3N5cy1wcGMvbWlzYy5TIGIvYXJjaC91bS9zeXMtcHBjL21pc2MuUwppbmRleCAxMWI3YmQ3Li5mMGM5NzFkYiAxMDA2NDQKLS0tIGEvYXJjaC91bS9zeXMtcHBjL21pc2MuUworKysgYi9hcmNoL3VtL3N5cy1wcGMvbWlzYy5TCkBAIC0yMywxNCArMjMsMTAgQEAKICNkZWZpbmUgQ0FDSEVfTElORV9TSVpFCQkxNgogI2RlZmluZSBMR19DQUNIRV9MSU5FX1NJWkUJNAogI2RlZmluZSBNQVhfQ09QWV9QUkVGRVRDSAkxCi0jZWxpZiAhZGVmaW5lZChDT05GSUdfUFBDNjRCUklER0UpCisjZWxzZQogI2RlZmluZSBDQUNIRV9MSU5FX1NJWkUJCTMyCiAjZGVmaW5lIExHX0NBQ0hFX0xJTkVfU0laRQk1CiAjZGVmaW5lIE1BWF9DT1BZX1BSRUZFVENICTQKLSNlbHNlCi0jZGVmaW5lIENBQ0hFX0xJTkVfU0laRQkJMTI4Ci0jZGVmaW5lIExHX0NBQ0hFX0xJTkVfU0laRQk3Ci0jZGVmaW5lIE1BWF9DT1BZX1BSRUZFVENICTEKICNlbmRpZiAvKiBDT05GSUdfNHh4IHx8IENPTkZJR184eHggKi8KIAogCS50ZXh0CmRpZmYgLS1naXQgYS9hcmNoL3Y4NTAva2VybmVsL3NpZ25hbC5jIGIvYXJjaC92ODUwL2tlcm5lbC9zaWduYWwuYwppbmRleCA2MzNlNGUxLi4xN2MyZDQzIDEwMDY0NAotLS0gYS9hcmNoL3Y4NTAva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvdjg1MC9rZXJuZWwvc2lnbmFsLmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogCS8qIERlZmF1bHQgdG8gdXNpbmcgbm9ybWFsIHN0YWNrICovCiAJdW5zaWduZWQgbG9uZyBzcCA9IHJlZ3MtPmdwcltHUFJfU1BdOwogCi0JaWYgKChrYS0+c2Euc2FfZmxhZ3MgJiBTQV9PTlNUQUNLKSAhPSAwICYmICEgb25fc2lnX3N0YWNrKHNwKSkKKwlpZiAoKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spICE9IDAgJiYgISBzYXNfc3NfZmxhZ3Moc3ApKQogCQlzcCA9IGN1cnJlbnQtPnNhc19zc19zcCArIGN1cnJlbnQtPnNhc19zc19zaXplOwogCiAJcmV0dXJuICh2b2lkICopKChzcCAtIGZyYW1lX3NpemUpICYgLThVTCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9LY29uZmlnIGIvYXJjaC94ODZfNjQvS2NvbmZpZwppbmRleCA0MDhkNDRhLi5hZjQ0MTMwIDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9LY29uZmlnCisrKyBiL2FyY2gveDg2XzY0L0tjb25maWcKQEAgLTI5OSw2ICsyOTksNyBAQAogICAgICAgIGJvb2wgIkFDUEkgTlVNQSBkZXRlY3Rpb24iCiAgICAgICAgZGVwZW5kcyBvbiBOVU1BCiAgICAgICAgc2VsZWN0IEFDUEkgCisJc2VsZWN0IFBDSQogICAgICAgIHNlbGVjdCBBQ1BJX05VTUEKICAgICAgICBkZWZhdWx0IHkKICAgICAgICBoZWxwCkBAIC0zODksNiArMzkwLDcgQEAKIAlib29sICJLOCBHQVJUIElPTU1VIHN1cHBvcnQiCiAJZGVmYXVsdCB5CiAJc2VsZWN0IFNXSU9UTEIKKwlzZWxlY3QgQUdQCiAJZGVwZW5kcyBvbiBQQ0kKIAloZWxwCiAJICBTdXBwb3J0IGZvciBoYXJkd2FyZSBJT01NVSBpbiBBTUQncyBPcHRlcm9uL0F0aGxvbjY0IFByb2Nlc3NvcnMKQEAgLTQwMSwxMSArNDAzLDkgQEAKICAgCSAgbm9ydGhicmlkZ2UgYW5kIGEgc29mdHdhcmUgZW11bGF0aW9uIHVzZWQgb24gb3RoZXIgc3lzdGVtcyB3aXRob3V0CiAJICBoYXJkd2FyZSBJT01NVS4gIElmIHVuc3VyZSwgc2F5IFkuCiAKLSMgbmVlZCB0aGlzIGFsd2F5cyBlbmFibGVkIHdpdGggR0FSVF9JT01NVSBmb3IgdGhlIFZJQSB3b3JrYXJvdW5kCisjIG5lZWQgdGhpcyBhbHdheXMgc2VsZWN0ZWQgYnkgR0FSVF9JT01NVSBmb3IgdGhlIFZJQSB3b3JrYXJvdW5kCiBjb25maWcgU1dJT1RMQgogCWJvb2wKLQlkZWZhdWx0IHkKLQlkZXBlbmRzIG9uIEdBUlRfSU9NTVUKIAogY29uZmlnIFg4Nl9NQ0UKIAlib29sICJNYWNoaW5lIGNoZWNrIHN1cHBvcnQiIGlmIEVNQkVEREVECmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9pYTMyL2lhMzJlbnRyeS5TIGIvYXJjaC94ODZfNjQvaWEzMi9pYTMyZW50cnkuUwppbmRleCA1YTkyZmVkLi40ZWM1OTRhIDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9pYTMyL2lhMzJlbnRyeS5TCisrKyBiL2FyY2gveDg2XzY0L2lhMzIvaWEzMmVudHJ5LlMKQEAgLTY5Niw0ICs2OTYsNSBAQAogCS5xdWFkIHN5c19zeW5jX2ZpbGVfcmFuZ2UKIAkucXVhZCBzeXNfdGVlCiAJLnF1YWQgY29tcGF0X3N5c192bXNwbGljZQorCS5xdWFkIGNvbXBhdF9zeXNfbW92ZV9wYWdlcwogaWEzMl9zeXNjYWxsX2VuZDoJCQpkaWZmIC0tZ2l0IGEvYXJjaC94ODZfNjQva2VybmVsL2FjcGkvTWFrZWZpbGUgYi9hcmNoL3g4Nl82NC9rZXJuZWwvYWNwaS9NYWtlZmlsZQppbmRleCA0ZmU5NzA3Li4wODBiOTk2IDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9rZXJuZWwvYWNwaS9NYWtlZmlsZQorKysgYi9hcmNoL3g4Nl82NC9rZXJuZWwvYWNwaS9NYWtlZmlsZQpAQCAtNCw1ICs0LDYgQEAKIAogaWZuZXEgKCQoQ09ORklHX0FDUElfUFJPQ0VTU09SKSwpCiBvYmoteQkJCSs9IHByb2Nlc3Nvci5vCitwcm9jZXNzb3IteQkJOj0gLi4vLi4vLi4vaTM4Ni9rZXJuZWwvYWNwaS9wcm9jZXNzb3IubyAuLi8uLi8uLi9pMzg2L2tlcm5lbC9hY3BpL2NzdGF0ZS5vCiBlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9rZXJuZWwvYWNwaS9wcm9jZXNzb3IuYyBiL2FyY2gveDg2XzY0L2tlcm5lbC9hY3BpL3Byb2Nlc3Nvci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmRjMmJhLi4wMDAwMDAwCi0tLSBhL2FyY2gveDg2XzY0L2tlcm5lbC9hY3BpL3Byb2Nlc3Nvci5jCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIGFyY2gveDg2XzY0L2tlcm5lbC9hY3BpL3Byb2Nlc3Nvci5jCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEludGVsIENvcnBvcmF0aW9uCi0gKiAJVmVua2F0ZXNoIFBhbGxpcGFkaSA8dmVua2F0ZXNoLnBhbGxpcGFkaUBpbnRlbC5jb20+Ci0gKiAJLSBBZGRlZCBfUERDIGZvciBwbGF0Zm9ybXMgd2l0aCBJbnRlbCBDUFVzCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Ci0KLSNpbmNsdWRlIDxhY3BpL3Byb2Nlc3Nvci5oPgotI2luY2x1ZGUgPGFzbS9hY3BpLmg+Ci0KLXN0YXRpYyB2b2lkIGluaXRfaW50ZWxfcGRjKHN0cnVjdCBhY3BpX3Byb2Nlc3NvciAqcHIsIHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKLXsKLQlzdHJ1Y3QgYWNwaV9vYmplY3RfbGlzdCAqb2JqX2xpc3Q7Ci0JdW5pb24gYWNwaV9vYmplY3QgKm9iajsKLQl1MzIgKmJ1ZjsKLQotCS8qIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHBkYy4gSXQgd2lsbCBiZSB1c2VkIGxhdGVyLiAqLwotCW9ial9saXN0ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGFjcGlfb2JqZWN0X2xpc3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW9ial9saXN0KSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiTWVtb3J5IGFsbG9jYXRpb24gZXJyb3JcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0Jb2JqID0ga21hbGxvYyhzaXplb2YodW5pb24gYWNwaV9vYmplY3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW9iaikgewotCQlwcmludGsoS0VSTl9FUlIgIk1lbW9yeSBhbGxvY2F0aW9uIGVycm9yXG4iKTsKLQkJa2ZyZWUob2JqX2xpc3QpOwotCQlyZXR1cm47Ci0JfQotCi0JYnVmID0ga21hbGxvYygxMiwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFidWYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJNZW1vcnkgYWxsb2NhdGlvbiBlcnJvclxuIik7Ci0JCWtmcmVlKG9iaik7Ci0JCWtmcmVlKG9ial9saXN0KTsKLQkJcmV0dXJuOwotCX0KLQotCWJ1ZlswXSA9IEFDUElfUERDX1JFVklTSU9OX0lEOwotCWJ1ZlsxXSA9IDE7Ci0JYnVmWzJdID0gQUNQSV9QRENfRVNUX0NBUEFCSUxJVFlfU01QOwotCi0Jb2JqLT50eXBlID0gQUNQSV9UWVBFX0JVRkZFUjsKLQlvYmotPmJ1ZmZlci5sZW5ndGggPSAxMjsKLQlvYmotPmJ1ZmZlci5wb2ludGVyID0gKHU4ICopIGJ1ZjsKLQlvYmpfbGlzdC0+Y291bnQgPSAxOwotCW9ial9saXN0LT5wb2ludGVyID0gb2JqOwotCXByLT5wZGMgPSBvYmpfbGlzdDsKLQotCXJldHVybjsKLX0KLQotLyogSW5pdGlhbGl6ZSBfUERDIGRhdGEgYmFzZWQgb24gdGhlIENQVSB2ZW5kb3IgKi8KLXZvaWQgYXJjaF9hY3BpX3Byb2Nlc3Nvcl9pbml0X3BkYyhzdHJ1Y3QgYWNwaV9wcm9jZXNzb3IgKnByKQotewotCXVuc2lnbmVkIGludCBjcHUgPSBwci0+aWQ7Ci0Jc3RydWN0IGNwdWluZm9feDg2ICpjID0gY3B1X2RhdGEgKyBjcHU7Ci0KLQlwci0+cGRjID0gTlVMTDsKLQlpZiAoYy0+eDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0lOVEVMICYmIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfRVNUKSkKLQkJaW5pdF9pbnRlbF9wZGMocHIsIGMpOwotCi0JcmV0dXJuOwotfQotCi1FWFBPUlRfU1lNQk9MKGFyY2hfYWNwaV9wcm9jZXNzb3JfaW5pdF9wZGMpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODZfNjQva2VybmVsL2FjcGkvc2xlZXAuYyBiL2FyY2gveDg2XzY0L2tlcm5lbC9hY3BpL3NsZWVwLmMKaW5kZXggODY3YTBlYi4uMDkxYmM3OSAxMDA2NDQKLS0tIGEvYXJjaC94ODZfNjQva2VybmVsL2FjcGkvc2xlZXAuYworKysgYi9hcmNoL3g4Nl82NC9rZXJuZWwvYWNwaS9zbGVlcC5jCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvYm9vdG1lbS5oPgogI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+CisKICNpbmNsdWRlIDxhc20vbXBzcGVjLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL2FwaWMuaD4KQEAgLTY2LDcgKzY4LDggQEAKIAlwZ2RfdCAqc2xvdDAgPSBwZ2Rfb2Zmc2V0KGN1cnJlbnQtPm1tLCAwVUwpOwogCWxvd19wdHIgPSAqc2xvdDA7CiAJc2V0X3BnZChzbG90MCwgKnBnZF9vZmZzZXQoY3VycmVudC0+bW0sIFBBR0VfT0ZGU0VUKSk7Ci0JZmx1c2hfdGxiX2FsbCgpOworCVdBUk5fT04obnVtX29ubGluZV9jcHVzKCkgIT0gMSk7CisJbG9jYWxfZmx1c2hfdGxiKCk7CiB9CiAKIC8qKgpAQCAtOTIsNyArOTUsNyBAQAogdm9pZCBhY3BpX3Jlc3RvcmVfc3RhdGVfbWVtKHZvaWQpCiB7CiAJc2V0X3BnZChwZ2Rfb2Zmc2V0KGN1cnJlbnQtPm1tLCAwVUwpLCBsb3dfcHRyKTsKLQlmbHVzaF90bGJfYWxsKCk7CisJbG9jYWxfZmx1c2hfdGxiKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvYXJjaC94ODZfNjQva2VybmVsL2FwaWMuYyBiL2FyY2gveDg2XzY0L2tlcm5lbC9hcGljLmMKaW5kZXggMTAwYTMwYy4uMjllZjk5MCAxMDA2NDQKLS0tIGEvYXJjaC94ODZfNjQva2VybmVsL2FwaWMuYworKysgYi9hcmNoL3g4Nl82NC9rZXJuZWwvYXBpYy5jCkBAIC01MSw3ICs1MSw3IEBACiBzdGF0aWMgY3B1bWFza190IHRpbWVyX2ludGVycnVwdF9icm9hZGNhc3RfaXBpX21hc2s7CiAKIC8qIFVzaW5nIEFQSUMgdG8gZ2VuZXJhdGUgc21wX2xvY2FsX3RpbWVyX2ludGVycnVwdD8gKi8KLWludCB1c2luZ19hcGljX3RpbWVyID0gMDsKK2ludCB1c2luZ19hcGljX3RpbWVyIF9fcmVhZF9tb3N0bHkgPSAwOwogCiBzdGF0aWMgdm9pZCBhcGljX3BtX2FjdGl2YXRlKHZvaWQpOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9rZXJuZWwvaTM4Ny5jIGIvYXJjaC94ODZfNjQva2VybmVsL2kzODcuYwppbmRleCBhNWQ3ZTE2Li40NGRkYjFlIDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9rZXJuZWwvaTM4Ny5jCisrKyBiL2FyY2gveDg2XzY0L2tlcm5lbC9pMzg3LmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KIAotdW5zaWduZWQgaW50IG14Y3NyX2ZlYXR1cmVfbWFzayA9IDB4ZmZmZmZmZmY7Cit1bnNpZ25lZCBpbnQgbXhjc3JfZmVhdHVyZV9tYXNrIF9fcmVhZF9tb3N0bHkgPSAweGZmZmZmZmZmOwogCiB2b2lkIG14Y3NyX2ZlYXR1cmVfbWFza19pbml0KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9rZXJuZWwvc2V0dXAuYyBiL2FyY2gveDg2XzY0L2tlcm5lbC9zZXR1cC5jCmluZGV4IDY1NWI5MTkuLmI4ZDUxMTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2XzY0L2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gveDg2XzY0L2tlcm5lbC9zZXR1cC5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8bGludXgvZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4KIAogI2luY2x1ZGUgPGFzbS9tdHJyLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KQEAgLTU5NSw2ICs1OTYsMTAwIEBACiAJCWViZGFfc2l6ZSA9IDY0KjEwMjQ7CiB9CiAKKyNpZmRlZiBDT05GSUdfU09GVFdBUkVfU1VTUEVORAorc3RhdGljIHZvaWQgX19pbml0IG1hcmtfbm9zYXZlX3BhZ2VfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJd2hpbGUgKHN0YXJ0IDw9IGVuZCkgeworCQlwYWdlID0gcGZuX3RvX3BhZ2Uoc3RhcnQpOworCQlTZXRQYWdlTm9zYXZlKHBhZ2UpOworCQlzdGFydCsrOworCX0KK30KKworc3RhdGljIHZvaWQgX19pbml0IGU4MjBfbm9zYXZlX3Jlc2VydmVkX3BhZ2VzKHZvaWQpCit7CisJaW50IGk7CisJdW5zaWduZWQgbG9uZyByX3N0YXJ0ID0gMCwgcl9lbmQgPSAwOworCisJLyogQXNzdW1lIGU4MjAgbWFwIGlzIHNvcnRlZCAqLworCWZvciAoaSA9IDA7IGkgPCBlODIwLm5yX21hcDsgaSsrKSB7CisJCXN0cnVjdCBlODIwZW50cnkgKmVpID0gJmU4MjAubWFwW2ldOworCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisKKwkJc3RhcnQgPSByb3VuZF9kb3duKGVpLT5hZGRyLCBQQUdFX1NJWkUpOworCQllbmQgPSByb3VuZF91cChlaS0+YWRkciArIGVpLT5zaXplLCBQQUdFX1NJWkUpOworCQlpZiAoc3RhcnQgPj0gZW5kKQorCQkJY29udGludWU7CisJCWlmIChlaS0+dHlwZSA9PSBFODIwX1JFU0VSVkVEKQorCQkJY29udGludWU7CisJCXJfZW5kID0gc3RhcnQ+PlBBR0VfU0hJRlQ7CisJCS8qIHN3c3VzcCBpZ25vcmVzIGludmFsaWQgcGZuLCBpZ25vcmUgdGhlc2UgcGFnZXMgaGVyZSAqLworCQlpZiAocl9lbmQgPiBlbmRfcGZuKQorCQkJcl9lbmQgPSBlbmRfcGZuOworCQlpZiAocl9lbmQgPiByX3N0YXJ0KQorCQkJbWFya19ub3NhdmVfcGFnZV9yYW5nZShyX3N0YXJ0LCByX2VuZC0xKTsKKwkJaWYgKHJfZW5kID49IGVuZF9wZm4pCisJCQlicmVhazsKKwkJcl9zdGFydCA9IGVuZD4+UEFHRV9TSElGVDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBlODIwX3NhdmVfYWNwaV9wYWdlcyh2b2lkKQoreworCWludCBpOworCisJLyogQXNzdW1lIGU4MjAgbWFwIGlzIHNvcnRlZCAqLworCWZvciAoaSA9IDA7IGkgPCBlODIwLm5yX21hcDsgaSsrKSB7CisJCXN0cnVjdCBlODIwZW50cnkgKmVpID0gJmU4MjAubWFwW2ldOworCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisKKwkJc3RhcnQgPSBlaS0+YWRkciwgUEFHRV9TSVpFOworCQllbmQgPSBlaS0+YWRkciArIGVpLT5zaXplOworCQlpZiAoc3RhcnQgPj0gZW5kKQorCQkJY29udGludWU7CisJCWlmIChlaS0+dHlwZSAhPSBFODIwX0FDUEkgJiYgZWktPnR5cGUgIT0gRTgyMF9OVlMpCisJCQljb250aW51ZTsKKwkJLyoKKwkJICogSWYgdGhlIHJlZ2lvbiBpcyBiZWxvdyBlbmRfcGZuLCBpdCB3aWxsIGJlCisJCSAqIHNhdmVkL3Jlc3RvcmVkIGJ5IHN3c3VzcCBmb2xsb3cgJ1JBTScgdHlwZS4KKwkJICovCisJCWlmIChzdGFydCA8IChlbmRfcGZuIDw8IFBBR0VfU0hJRlQpKQorCQkJc3RhcnQgPSBlbmRfcGZuIDw8IFBBR0VfU0hJRlQ7CisJCWlmIChlbmQgPiBzdGFydCkKKwkJCXN3c3VzcF9hZGRfYXJjaF9wYWdlcyhzdGFydCwgZW5kKTsKKwl9Cit9CisKK2V4dGVybiBjaGFyIF9fc3RhcnRfcm9kYXRhLCBfX2VuZF9yb2RhdGE7CisvKgorICogQklPUyByZXNlcnZlZCByZWdpb24vaG9sZSAtIG5vIHNhdmUvcmVzdG9yZQorICogQUNQSSBOVlMgLSBzYXZlL3Jlc3RvcmUKKyAqIEFDUEkgRGF0YSAtIHRoaXMgaXMgYSBsaXR0bGUgdHJpY2t5LCB0aGUgbWVtIGNvdWxkIGJlIHVzZWQgYnkgT1MgYWZ0ZXIgT1MKKyAqIHJlYWRzIHRhYmxlcyBmcm9tIHRoZSByZWdpb24sIGJ1dCBhbnl3YXkgc2F2ZS9yZXN0b3JlIHRoZSBtZW1vcnkgaGFzbid0IGFueQorICogc2lkZSBlZmZlY3QgYW5kIExpbnV4IHJ1bnRpbWUgbW9kdWxlIGxvYWQvdW5sb2FkIG1pZ2h0IHVzZSBpdC4KKyAqIGtlcm5lbCByb2RhdGEgLSBubyBzYXZlL3Jlc3RvcmUgKGtlcm5lbCByb2RhdGEgaXNuJ3QgY2hhbmdlZCkKKyAqLworc3RhdGljIGludCBfX2luaXQgbWFya19ub3NhdmVfcGFnZXModm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHBmbl9zdGFydCwgcGZuX2VuZDsKKworCS8qIEJJT1MgcmVzZXJ2ZWQgcmVnaW9ucyAmIGhvbGVzICovCisJZTgyMF9ub3NhdmVfcmVzZXJ2ZWRfcGFnZXMoKTsKKworCS8qIGtlcm5lbCByb2RhdGEgKi8KKwlwZm5fc3RhcnQgPSByb3VuZF91cChfX3BhX3N5bWJvbCgmX19zdGFydF9yb2RhdGEpLCBQQUdFX1NJWkUpID4+IFBBR0VfU0hJRlQ7CisJcGZuX2VuZCA9IHJvdW5kX2Rvd24oX19wYV9zeW1ib2woJl9fZW5kX3JvZGF0YSksIFBBR0VfU0laRSkgPj4gUEFHRV9TSElGVDsKKwltYXJrX25vc2F2ZV9wYWdlX3JhbmdlKHBmbl9zdGFydCwgcGZuX2VuZC0xKTsKKworCS8qIHJlY29yZCBBQ1BJIERhdGEvTlZTIGFzIHNhdmVhYmxlICovCisJZTgyMF9zYXZlX2FjcGlfcGFnZXMoKTsKKworCXJldHVybiAwOworfQorY29yZV9pbml0Y2FsbChtYXJrX25vc2F2ZV9wYWdlcyk7CisjZW5kaWYKKwogdm9pZCBfX2luaXQgc2V0dXBfYXJjaChjaGFyICoqY21kbGluZV9wKQogewogCXVuc2lnbmVkIGxvbmcga2VybmVsX2VuZDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0L21tL3NyYXQuYyBiL2FyY2gveDg2XzY0L21tL3NyYXQuYwppbmRleCA0NzRkZjIyLi41MDJmY2U2IDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9tbS9zcmF0LmMKKysrIGIvYXJjaC94ODZfNjQvbW0vc3JhdC5jCkBAIC0zMCw3ICszMCw2IEBACiBzdGF0aWMgc3RydWN0IGFjcGlfdGFibGVfc2xpdCAqYWNwaV9zbGl0OwogCiBzdGF0aWMgbm9kZW1hc2tfdCBub2Rlc19wYXJzZWQgX19pbml0ZGF0YTsKLXN0YXRpYyBub2RlbWFza190IG5vZGVzX2ZvdW5kIF9faW5pdGRhdGE7CiBzdGF0aWMgc3RydWN0IGJvb3Rub2RlIG5vZGVzW01BWF9OVU1OT0RFU10gX19pbml0ZGF0YTsKIHN0YXRpYyBzdHJ1Y3QgYm9vdG5vZGUgbm9kZXNfYWRkW01BWF9OVU1OT0RFU10gX19pbml0ZGF0YTsKIHN0YXRpYyBpbnQgZm91bmRfYWRkX2FyZWEgX19pbml0ZGF0YTsKQEAgLTM4LDMzICszNywxNCBAQAogI2lmbmRlZiBSRVNFUlZFX0hPVEFERAogI2RlZmluZSBob3RhZGRfcGVyY2VudCAwCS8qIElnbm9yZSBhbGwgc2V0dGluZ3MgKi8KICNlbmRpZgotc3RhdGljIHU4IHB4bTJub2RlWzI1Nl0gPSB7IFswIC4uLiAyNTVdID0gMHhmZiB9OwogCiAvKiBUb28gc21hbGwgbm9kZXMgY29uZnVzZSB0aGUgVk0gYmFkbHkuIFVzdWFsbHkgdGhleSByZXN1bHQKICAgIGZyb20gQklPUyBidWdzLiAqLwogI2RlZmluZSBOT0RFX01JTl9TSVpFICg0KjEwMjQqMTAyNCkKIAotc3RhdGljIGludCBub2RlX3RvX3B4bShpbnQgbik7Ci0KLWludCBweG1fdG9fbm9kZShpbnQgcHhtKQotewotCWlmICgodW5zaWduZWQpcHhtID49IDI1NikKLQkJcmV0dXJuIC0xOwotCS8qIEV4dGVuZCAweGZmIHRvIChpbnQpLTEgKi8KLQlyZXR1cm4gKHNpZ25lZCBjaGFyKXB4bTJub2RlW3B4bV07Ci19Ci0KIHN0YXRpYyBfX2luaXQgaW50IHNldHVwX25vZGUoaW50IHB4bSkKIHsKLQl1bnNpZ25lZCBub2RlID0gcHhtMm5vZGVbcHhtXTsKLQlpZiAobm9kZSA9PSAweGZmKSB7Ci0JCWlmIChub2Rlc193ZWlnaHQobm9kZXNfZm91bmQpID49IE1BWF9OVU1OT0RFUykKLQkJCXJldHVybiAtMTsKLQkJbm9kZSA9IGZpcnN0X3Vuc2V0X25vZGUobm9kZXNfZm91bmQpOyAKLQkJbm9kZV9zZXQobm9kZSwgbm9kZXNfZm91bmQpOwotCQlweG0ybm9kZVtweG1dID0gbm9kZTsKLQl9Ci0JcmV0dXJuIHB4bTJub2RlW3B4bV07CisJcmV0dXJuIGFjcGlfbWFwX3B4bV90b19ub2RlKHB4bSk7CiB9CiAKIHN0YXRpYyBfX2luaXQgaW50IGNvbmZsaWN0aW5nX25vZGVzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQpAQCAtNDQwLDE3ICs0MjAsNiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG5vZGVfdG9fcHhtKGludCBuKQotewotICAgICAgIGludCBpOwotICAgICAgIGlmIChweG0ybm9kZVtuXSA9PSBuKQotICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgICAgICAgICAgICAgaWYgKHB4bTJub2RlW2ldID09IG4pCi0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgIHJldHVybiAwOwotfQotCiB2b2lkIF9faW5pdCBzcmF0X3Jlc2VydmVfYWRkX2FyZWEoaW50IG5vZGVpZCkKIHsKIAlpZiAoZm91bmRfYWRkX2FyZWEgJiYgbm9kZXNfYWRkW25vZGVpZF0uZW5kKSB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9wY2kvbW1jb25maWcuYyBiL2FyY2gveDg2XzY0L3BjaS9tbWNvbmZpZy5jCmluZGV4IGEyMDYwZTQuLjNjNTVjNzYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2XzY0L3BjaS9tbWNvbmZpZy5jCisrKyBiL2FyY2gveDg2XzY0L3BjaS9tbWNvbmZpZy5jCkBAIC0xMyw3ICsxMywxMCBAQAogCiAjaW5jbHVkZSAicGNpLmgiCiAKLSNkZWZpbmUgTU1DT05GSUdfQVBFUl9TSVpFICgyNTYqMTAyNCoxMDI0KQorLyogYXBlcnR1cmUgaXMgdXAgdG8gMjU2TUIgYnV0IEJJT1MgbWF5IHJlc2VydmUgbGVzcyAqLworI2RlZmluZSBNTUNPTkZJR19BUEVSX01JTgkoMiAqIDEwMjQqMTAyNCkKKyNkZWZpbmUgTU1DT05GSUdfQVBFUl9NQVgJKDI1NiAqIDEwMjQqMTAyNCkKKwogLyogVmVyaWZ5IHRoZSBmaXJzdCAxNiBidXNzZXMuIFdlIGFzc3VtZSB0aGF0IHN5c3RlbXMgd2l0aCBtb3JlIGJ1c3NlcwogICAgZ2V0IE1DRkcgcmlnaHQuICovCiAjZGVmaW5lIE1BWF9DSEVDS19CVVMgMTYKQEAgLTE3NSw5ICsxNzgsMTAgQEAKIAkJcmV0dXJuOwogCiAJaWYgKCFlODIwX2FsbF9tYXBwZWQocGNpX21tY2ZnX2NvbmZpZ1swXS5iYXNlX2FkZHJlc3MsCi0JCQlwY2lfbW1jZmdfY29uZmlnWzBdLmJhc2VfYWRkcmVzcyArIE1NQ09ORklHX0FQRVJfU0laRSwKKwkJCXBjaV9tbWNmZ19jb25maWdbMF0uYmFzZV9hZGRyZXNzICsgTU1DT05GSUdfQVBFUl9NSU4sCiAJCQlFODIwX1JFU0VSVkVEKSkgewotCQlwcmludGsoS0VSTl9FUlIgIlBDSTogQklPUyBCdWc6IE1DRkcgYXJlYSBpcyBub3QgRTgyMC1yZXNlcnZlZFxuIik7CisJCXByaW50ayhLRVJOX0VSUiAiUENJOiBCSU9TIEJ1ZzogTUNGRyBhcmVhIGF0ICV4IGlzIG5vdCBFODIwLXJlc2VydmVkXG4iLAorCQkJCXBjaV9tbWNmZ19jb25maWdbMF0uYmFzZV9hZGRyZXNzKTsKIAkJcHJpbnRrKEtFUk5fRVJSICJQQ0k6IE5vdCB1c2luZyBNTUNPTkZJRy5cbiIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTkwLDcgKzE5NCw4IEBACiAJfQogCWZvciAoaSA9IDA7IGkgPCBwY2lfbW1jZmdfY29uZmlnX251bTsgKytpKSB7CiAJCXBjaV9tbWNmZ192aXJ0W2ldLmNmZyA9ICZwY2lfbW1jZmdfY29uZmlnW2ldOwotCQlwY2lfbW1jZmdfdmlydFtpXS52aXJ0ID0gaW9yZW1hcF9ub2NhY2hlKHBjaV9tbWNmZ19jb25maWdbaV0uYmFzZV9hZGRyZXNzLCBNTUNPTkZJR19BUEVSX1NJWkUpOworCQlwY2lfbW1jZmdfdmlydFtpXS52aXJ0ID0gaW9yZW1hcF9ub2NhY2hlKHBjaV9tbWNmZ19jb25maWdbaV0uYmFzZV9hZGRyZXNzLAorCQkJCQkJCSBNTUNPTkZJR19BUEVSX01BWCk7CiAJCWlmICghcGNpX21tY2ZnX3ZpcnRbaV0udmlydCkgewogCQkJcHJpbnRrKCJQQ0k6IENhbm5vdCBtYXAgbW1jb25maWcgYXBlcnR1cmUgZm9yIHNlZ21lbnQgJWRcbiIsCiAJCQkgICAgICAgcGNpX21tY2ZnX2NvbmZpZ1tpXS5wY2lfc2VnbWVudF9ncm91cF9udW1iZXIpOwpkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2EvS2NvbmZpZyBiL2FyY2gveHRlbnNhL0tjb25maWcKaW5kZXggZGJlYjM1MC4uODQ4ZjE3MyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2EvS2NvbmZpZworKysgYi9hcmNoL3h0ZW5zYS9LY29uZmlnCkBAIC0zNCwxMCArMzQsNiBAQAogCWJvb2wKIAlkZWZhdWx0IHkKIAotY29uZmlnIFJXU0VNX0dFTkVSSUNfU1BJTkxPQ0sKLSAgICAgICBib29sCi0gICAgICAgZGVmYXVsdCB5Ci0KIHNvdXJjZSAiaW5pdC9LY29uZmlnIgogCiBtZW51ICJQcm9jZXNzb3IgdHlwZSBhbmQgZmVhdHVyZXMiCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9ib290L2xpYi9NYWtlZmlsZSBiL2FyY2gveHRlbnNhL2Jvb3QvbGliL01ha2VmaWxlCmluZGV4IDllNzNiYjguLmQzZDJhYTIgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2Jvb3QvbGliL01ha2VmaWxlCisrKyBiL2FyY2gveHRlbnNhL2Jvb3QvbGliL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQAogIyBNYWtlZmlsZSBmb3Igc29tZSBsaWJzIG5lZWRlZCBieSB6SW1hZ2UuCiAjCiAKLXpsaWIJOj0gaW5mYmxvY2suYyBpbmZjb2Rlcy5jIGluZmZhc3QuYyBpbmZsYXRlLmMgaW5mdHJlZXMuYyBpbmZ1dGlsLmMKK3psaWIJOj0gaW5mZmFzdC5jIGluZmxhdGUuYyBpbmZ0cmVlcy5jCiAKIGxpYi15CSs9ICQoemxpYjouYz0ubykgem1lbS5vCiAKZGlmZiAtLWdpdCBhL2FyY2gveHRlbnNhL2tlcm5lbC9lbnRyeS5TIGIvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKaW5kZXggNWMwMThjNS4uODllNDA5ZSAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKQEAgLTExMDIsNyArMTEwMiw3IEBACiAJczMyaQlhNywgYTIsIFBUX0FSRUc3CiAKIAltb3ZpCWE3LCA0CQkJIyBzaXplb2YodW5zaWduZWQgaW50KQotCXZlcmlmeV9hcmVhIGEzLCBhNywgYTAsIGEyLCAuTGVhYworCWFjY2Vzc19vayBhMCwgYTMsIGE3LCBhMiwgLkxlYWMKIAogCV9iZXFpCWE2LCBTWVNYVEVOU0FfQVRPTUlDX1NFVCwgLkxzZXQKIAlfYmVxaQlhNiwgU1lTWFRFTlNBX0FUT01JQ19FWEdfQURELCAuTGV4ZwpkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2Eva2VybmVsL3NpZ25hbC5jIGIvYXJjaC94dGVuc2Eva2VybmVsL3NpZ25hbC5jCmluZGV4IGUyNTJiNjEuLmM0OTRmMDggMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2tlcm5lbC9zaWduYWwuYworKysgYi9hcmNoL3h0ZW5zYS9rZXJuZWwvc2lnbmFsLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogCiAJaWYgKGFjdCkgewogCQlvbGRfc2lnc2V0X3QgbWFzazsKLQkJaWYgKHZlcmlmeV9hcmVhKFZFUklGWV9SRUFELCBhY3QsIHNpemVvZigqYWN0KSkgfHwKKwkJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGFjdCwgc2l6ZW9mKCphY3QpKSB8fAogCQkgICAgX19nZXRfdXNlcihuZXdfa2Euc2Euc2FfaGFuZGxlciwgJmFjdC0+c2FfaGFuZGxlcikgfHwKIAkJICAgIF9fZ2V0X3VzZXIobmV3X2thLnNhLnNhX3Jlc3RvcmVyLCAmYWN0LT5zYV9yZXN0b3JlcikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKQEAgLTExNiw3ICsxMTYsNyBAQAogCXJldCA9IGRvX3NpZ2FjdGlvbihzaWcsIGFjdCA/ICZuZXdfa2EgOiBOVUxMLCBvYWN0ID8gJm9sZF9rYSA6IE5VTEwpOwogCiAJaWYgKCFyZXQgJiYgb2FjdCkgewotCQlpZiAodmVyaWZ5X2FyZWEoVkVSSUZZX1dSSVRFLCBvYWN0LCBzaXplb2YoKm9hY3QpKSB8fAorCQlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIG9hY3QsIHNpemVvZigqb2FjdCkpIHx8CiAJCSAgICBfX3B1dF91c2VyKG9sZF9rYS5zYS5zYV9oYW5kbGVyLCAmb2FjdC0+c2FfaGFuZGxlcikgfHwKIAkJICAgIF9fcHV0X3VzZXIob2xkX2thLnNhLnNhX3Jlc3RvcmVyLCAmb2FjdC0+c2FfcmVzdG9yZXIpKQogCQkJcmV0dXJuIC1FRkFVTFQ7CkBAIC0yMzYsNyArMjM2LDcgQEAKIAllcnIgfD0gX19jb3B5X2Zyb21fdXNlciAocmVncy0+YXJlZywgc2MtPnNjX2FyZWcsIFhDSEFMX05VTV9BUkVHUyo0KTsKIAllcnIgfD0gX19nZXRfdXNlcihidWYsICZzYy0+c2NfY3BzdGF0ZSk7CiAJaWYgKGJ1ZikgewotCQlpZiAodmVyaWZ5X2FyZWEoVkVSSUZZX1JFQUQsIGJ1Ziwgc2l6ZW9mKCpidWYpKSkKKwkJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGJ1Ziwgc2l6ZW9mKCpidWYpKSkKIAkJCWdvdG8gYmFkZnJhbWU7CiAJCWVyciB8PSByZXN0b3JlX2NwZXh0cmEoYnVmKTsKIAl9CkBAIC0zNTcsNyArMzU3LDcgQEAKIAlpZiAocmVncy0+ZGVwYyA+IDY0KQogCQlwYW5pYyAoIkRvdWJsZSBleGNlcHRpb24gc3lzX3NpZ3JldHVyblxuIik7CiAKLQlpZiAodmVyaWZ5X2FyZWEoVkVSSUZZX1JFQUQsIGZyYW1lLCBzaXplb2YoKmZyYW1lKSkpCisJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZyYW1lLCBzaXplb2YoKmZyYW1lKSkpCiAJCWdvdG8gYmFkZnJhbWU7CiAKIAlpZiAoX19nZXRfdXNlcihzZXQuc2lnWzBdLCAmZnJhbWUtPnNjLm9sZG1hc2spCkBAIC0zOTQsNyArMzk0LDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKHZlcmlmeV9hcmVhKFZFUklGWV9SRUFELCBmcmFtZSwgc2l6ZW9mKCpmcmFtZSkpKQorCWlmICghYWNjZXNzX29rKFZFUklGWV9SRUFELCBmcmFtZSwgc2l6ZW9mKCpmcmFtZSkpKQogCQlnb3RvIGJhZGZyYW1lOwogCiAJaWYgKF9fY29weV9mcm9tX3VzZXIoJnNldCwgJmZyYW1lLT51Yy51Y19zaWdtYXNrLCBzaXplb2Yoc2V0KSkpCkBAIC00MzMsNyArNDMzLDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqCiBnZXRfc2lnZnJhbWUoc3RydWN0IGtfc2lnYWN0aW9uICprYSwgdW5zaWduZWQgbG9uZyBzcCwgc2l6ZV90IGZyYW1lX3NpemUpCiB7Ci0JaWYgKChrYS0+c2Euc2FfZmxhZ3MgJiBTQV9PTlNUQUNLKSAhPSAwICYmICEgb25fc2lnX3N0YWNrKHNwKSkKKwlpZiAoKGthLT5zYS5zYV9mbGFncyAmIFNBX09OU1RBQ0spICE9IDAgJiYgISBzYXNfc3NfZmxhZ3Moc3ApKQogCQlzcCA9IGN1cnJlbnQtPnNhc19zc19zcCArIGN1cnJlbnQtPnNhc19zc19zaXplOwogCiAJcmV0dXJuICh2b2lkICopKChzcCAtIGZyYW1lX3NpemUpICYgLTE2dWwpOwpkaWZmIC0tZ2l0IGEvYmxvY2svS2NvbmZpZy5pb3NjaGVkIGIvYmxvY2svS2NvbmZpZy5pb3NjaGVkCmluZGV4IGYzYjc3NTMuLjQ4ZDA5MGUgMTAwNjQ0Ci0tLSBhL2Jsb2NrL0tjb25maWcuaW9zY2hlZAorKysgYi9ibG9jay9LY29uZmlnLmlvc2NoZWQKQEAgLTQwLDcgKzQwLDcgQEAKIAogY2hvaWNlCiAJcHJvbXB0ICJEZWZhdWx0IEkvTyBzY2hlZHVsZXIiCi0JZGVmYXVsdCBERUZBVUxUX0FTCisJZGVmYXVsdCBERUZBVUxUX0NGUQogCWhlbHAKIAkgIFNlbGVjdCB0aGUgSS9PIHNjaGVkdWxlciB3aGljaCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCBmb3IgYWxsCiAJICBibG9jayBkZXZpY2VzLgpkaWZmIC0tZ2l0IGEvYmxvY2svYXMtaW9zY2hlZC5jIGIvYmxvY2svYXMtaW9zY2hlZC5jCmluZGV4IDBjNzUwMzkuLjFlYzVkZjQgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2FzLWlvc2NoZWQuYworKysgYi9ibG9jay9hcy1pb3NjaGVkLmMKQEAgLTk2LDcgKzk2LDcgQEAKIAogCXN0cnVjdCBhc19ycSAqbmV4dF9hcnFbMl07CS8qIG5leHQgaW4gc29ydCBvcmRlciAqLwogCXNlY3Rvcl90IGxhc3Rfc2VjdG9yWzJdOwkvKiBsYXN0IFJFUV9TWU5DICYgUkVRX0FTWU5DIHNlY3RvcnMgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoOwkJLyogcmVxdWVzdCBoYXNoICovCisJc3RydWN0IGhsaXN0X2hlYWQgKmhhc2g7CS8qIHJlcXVlc3QgaGFzaCAqLwogCiAJdW5zaWduZWQgbG9uZyBleGl0X3Byb2I7CS8qIHByb2JhYmlsaXR5IGEgdGFzayB3aWxsIGV4aXQgd2hpbGUKIAkJCQkJICAgYmVpbmcgd2FpdGVkIG9uICovCkBAIC0xNjUsOCArMTY1LDcgQEAKIAkvKgogCSAqIHJlcXVlc3QgaGFzaCwga2V5IGlzIHRoZSBlbmRpbmcgb2Zmc2V0IChmb3IgYmFjayBtZXJnZSBsb29rdXApCiAJICovCi0Jc3RydWN0IGxpc3RfaGVhZCBoYXNoOwotCXVuc2lnbmVkIGludCBvbl9oYXNoOworCXN0cnVjdCBobGlzdF9ub2RlIGhhc2g7CiAKIAkvKgogCSAqIGV4cGlyZSBmaWZvCkBAIC0yODIsMTcgKzI4MSwxNSBAQAogI2RlZmluZSBBU19IQVNIX0ZOKHNlYykJCShoYXNoX2xvbmcoQVNfSEFTSF9CTE9DSygoc2VjKSksIGFzX2hhc2hfc2hpZnQpKQogI2RlZmluZSBBU19IQVNIX0VOVFJJRVMJCSgxIDw8IGFzX2hhc2hfc2hpZnQpCiAjZGVmaW5lIHJxX2hhc2hfa2V5KHJxKQkJKChycSktPnNlY3RvciArIChycSktPm5yX3NlY3RvcnMpCi0jZGVmaW5lIGxpc3RfZW50cnlfaGFzaChwdHIpCWxpc3RfZW50cnkoKHB0ciksIHN0cnVjdCBhc19ycSwgaGFzaCkKIAogc3RhdGljIGlubGluZSB2b2lkIF9fYXNfZGVsX2FycV9oYXNoKHN0cnVjdCBhc19ycSAqYXJxKQogewotCWFycS0+b25faGFzaCA9IDA7Ci0JbGlzdF9kZWxfaW5pdCgmYXJxLT5oYXNoKTsKKwlobGlzdF9kZWxfaW5pdCgmYXJxLT5oYXNoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFzX2RlbF9hcnFfaGFzaChzdHJ1Y3QgYXNfcnEgKmFycSkKIHsKLQlpZiAoYXJxLT5vbl9oYXNoKQorCWlmICghaGxpc3RfdW5oYXNoZWQoJmFycS0+aGFzaCkpCiAJCV9fYXNfZGVsX2FycV9oYXNoKGFycSk7CiB9CiAKQEAgLTMwMCwxMCArMjk3LDkgQEAKIHsKIAlzdHJ1Y3QgcmVxdWVzdCAqcnEgPSBhcnEtPnJlcXVlc3Q7CiAKLQlCVUdfT04oYXJxLT5vbl9oYXNoKTsKKwlCVUdfT04oIWhsaXN0X3VuaGFzaGVkKCZhcnEtPmhhc2gpKTsKIAotCWFycS0+b25faGFzaCA9IDE7Ci0JbGlzdF9hZGQoJmFycS0+aGFzaCwgJmFkLT5oYXNoW0FTX0hBU0hfRk4ocnFfaGFzaF9rZXkocnEpKV0pOworCWhsaXN0X2FkZF9oZWFkKCZhcnEtPmhhc2gsICZhZC0+aGFzaFtBU19IQVNIX0ZOKHJxX2hhc2hfa2V5KHJxKSldKTsKIH0KIAogLyoKQEAgLTMxMiwzMSArMzA4LDI5IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgYXNfaG90X2FycV9oYXNoKHN0cnVjdCBhc19kYXRhICphZCwgc3RydWN0IGFzX3JxICphcnEpCiB7CiAJc3RydWN0IHJlcXVlc3QgKnJxID0gYXJxLT5yZXF1ZXN0OwotCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQgPSAmYWQtPmhhc2hbQVNfSEFTSF9GTihycV9oYXNoX2tleShycSkpXTsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9ICZhZC0+aGFzaFtBU19IQVNIX0ZOKHJxX2hhc2hfa2V5KHJxKSldOwogCi0JaWYgKCFhcnEtPm9uX2hhc2gpIHsKKwlpZiAoaGxpc3RfdW5oYXNoZWQoJmFycS0+aGFzaCkpIHsKIAkJV0FSTl9PTigxKTsKIAkJcmV0dXJuOwogCX0KIAotCWlmIChhcnEtPmhhc2gucHJldiAhPSBoZWFkKSB7Ci0JCWxpc3RfZGVsKCZhcnEtPmhhc2gpOwotCQlsaXN0X2FkZCgmYXJxLT5oYXNoLCBoZWFkKTsKKwlpZiAoJmFycS0+aGFzaCAhPSBoZWFkLT5maXJzdCkgeworCQlobGlzdF9kZWwoJmFycS0+aGFzaCk7CisJCWhsaXN0X2FkZF9oZWFkKCZhcnEtPmhhc2gsIGhlYWQpOwogCX0KIH0KIAogc3RhdGljIHN0cnVjdCByZXF1ZXN0ICphc19maW5kX2FycV9oYXNoKHN0cnVjdCBhc19kYXRhICphZCwgc2VjdG9yX3Qgb2Zmc2V0KQogewotCXN0cnVjdCBsaXN0X2hlYWQgKmhhc2hfbGlzdCA9ICZhZC0+aGFzaFtBU19IQVNIX0ZOKG9mZnNldCldOwotCXN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5LCAqbmV4dCA9IGhhc2hfbGlzdC0+bmV4dDsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGFzaF9saXN0ID0gJmFkLT5oYXNoW0FTX0hBU0hfRk4ob2Zmc2V0KV07CisJc3RydWN0IGhsaXN0X25vZGUgKmVudHJ5LCAqbmV4dDsKKwlzdHJ1Y3QgYXNfcnEgKmFycTsKIAotCXdoaWxlICgoZW50cnkgPSBuZXh0KSAhPSBoYXNoX2xpc3QpIHsKLQkJc3RydWN0IGFzX3JxICphcnEgPSBsaXN0X2VudHJ5X2hhc2goZW50cnkpOworCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYXJxLCBlbnRyeSwgbmV4dCwgaGFzaF9saXN0LCBoYXNoKSB7CiAJCXN0cnVjdCByZXF1ZXN0ICpfX3JxID0gYXJxLT5yZXF1ZXN0OwogCi0JCW5leHQgPSBlbnRyeS0+bmV4dDsKLQotCQlCVUdfT04oIWFycS0+b25faGFzaCk7CisJCUJVR19PTihobGlzdF91bmhhc2hlZCgmYXJxLT5oYXNoKSk7CiAKIAkJaWYgKCFycV9tZXJnZWFibGUoX19ycSkpIHsKIAkJCWFzX2RlbF9hcnFfaGFzaChhcnEpOwpAQCAtMzUzLDkgKzM0Nyw2IEBACiAvKgogICogcmIgdHJlZSBzdXBwb3J0IGZ1bmN0aW9ucwogICovCi0jZGVmaW5lIFJCX0VNUFRZKHJvb3QpCSgocm9vdCktPnJiX25vZGUgPT0gTlVMTCkKLSNkZWZpbmUgT05fUkIobm9kZSkJKHJiX3BhcmVudChub2RlKSAhPSBub2RlKQotI2RlZmluZSBSQl9DTEVBUihub2RlKQkocmJfc2V0X3BhcmVudChub2RlLCBub2RlKSkKICNkZWZpbmUgcmJfZW50cnlfYXJxKG5vZGUpCXJiX2VudHJ5KChub2RlKSwgc3RydWN0IGFzX3JxLCByYl9ub2RlKQogI2RlZmluZSBBUlFfUkJfUk9PVChhZCwgYXJxKQkoJihhZCktPnNvcnRfbGlzdFsoYXJxKS0+aXNfc3luY10pCiAjZGVmaW5lIHJxX3JiX2tleShycSkJCShycSktPnNlY3RvcgpAQCAtNDI0LDEzICs0MTUsMTMgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIGFzX2RlbF9hcnFfcmIoc3RydWN0IGFzX2RhdGEgKmFkLCBzdHJ1Y3QgYXNfcnEgKmFycSkKIHsKLQlpZiAoIU9OX1JCKCZhcnEtPnJiX25vZGUpKSB7CisJaWYgKCFSQl9FTVBUWV9OT0RFKCZhcnEtPnJiX25vZGUpKSB7CiAJCVdBUk5fT04oMSk7CiAJCXJldHVybjsKIAl9CiAKIAlyYl9lcmFzZSgmYXJxLT5yYl9ub2RlLCBBUlFfUkJfUk9PVChhZCwgYXJxKSk7Ci0JUkJfQ0xFQVIoJmFycS0+cmJfbm9kZSk7CisJUkJfQ0xFQVJfTk9ERSgmYXJxLT5yYl9ub2RlKTsKIH0KIAogc3RhdGljIHN0cnVjdCByZXF1ZXN0ICoKQEAgLTU1MSw3ICs1NDIsNyBAQAogCXN0cnVjdCByYl9ub2RlICpyYnByZXYgPSByYl9wcmV2KCZsYXN0LT5yYl9ub2RlKTsKIAlzdHJ1Y3QgYXNfcnEgKmFycV9uZXh0LCAqYXJxX3ByZXY7CiAKLQlCVUdfT04oIU9OX1JCKCZsYXN0LT5yYl9ub2RlKSk7CisJQlVHX09OKCFSQl9FTVBUWV9OT0RFKCZsYXN0LT5yYl9ub2RlKSk7CiAKIAlpZiAocmJwcmV2KQogCQlhcnFfcHJldiA9IHJiX2VudHJ5X2FycShyYnByZXYpOwpAQCAtMTEyOCw3ICsxMTE5LDcgQEAKIAlzdHJ1Y3QgcmVxdWVzdCAqcnEgPSBhcnEtPnJlcXVlc3Q7CiAJY29uc3QgaW50IGRhdGFfZGlyID0gYXJxLT5pc19zeW5jOwogCi0JQlVHX09OKCFPTl9SQigmYXJxLT5yYl9ub2RlKSk7CisJQlVHX09OKCFSQl9FTVBUWV9OT0RFKCZhcnEtPnJiX25vZGUpKTsKIAogCWFzX2FudGljX3N0b3AoYWQpOwogCWFkLT5hbnRpY19zdGF0dXMgPSBBTlRJQ19PRkY7CkBAIC0xMjUzLDcgKzEyNDQsNyBAQAogCSAqLwogCiAJaWYgKHJlYWRzKSB7Ci0JCUJVR19PTihSQl9FTVBUWSgmYWQtPnNvcnRfbGlzdFtSRVFfU1lOQ10pKTsKKwkJQlVHX09OKFJCX0VNUFRZX1JPT1QoJmFkLT5zb3J0X2xpc3RbUkVRX1NZTkNdKSk7CiAKIAkJaWYgKHdyaXRlcyAmJiBhZC0+YmF0Y2hfZGF0YV9kaXIgPT0gUkVRX1NZTkMpCiAJCQkvKgpAQCAtMTI3Nyw3ICsxMjY4LDcgQEAKIAogCWlmICh3cml0ZXMpIHsKIGRpc3BhdGNoX3dyaXRlczoKLQkJQlVHX09OKFJCX0VNUFRZKCZhZC0+c29ydF9saXN0W1JFUV9BU1lOQ10pKTsKKwkJQlVHX09OKFJCX0VNUFRZX1JPT1QoJmFkLT5zb3J0X2xpc3RbUkVRX0FTWU5DXSkpOwogCiAJCWlmIChhZC0+YmF0Y2hfZGF0YV9kaXIgPT0gUkVRX1NZTkMpIHsKIAkJCWFkLT5jaGFuZ2VkX2JhdGNoID0gMTsKQEAgLTEzNDUsNyArMTMzNiw3IEBACiAJYXJxLT5zdGF0ZSA9IEFTX1JRX05FVzsKIAogCWlmIChycV9kYXRhX2RpcihhcnEtPnJlcXVlc3QpID09IFJFQUQKLQkJCXx8IGN1cnJlbnQtPmZsYWdzJlBGX1NZTkNXUklURSkKKwkJCXx8IChhcnEtPnJlcXVlc3QtPmZsYWdzICYgUkVRX1JXX1NZTkMpKQogCQlhcnEtPmlzX3N5bmMgPSAxOwogCWVsc2UKIAkJYXJxLT5pc19zeW5jID0gMDsKQEAgLTE1OTcsMTIgKzE1ODgsMTEgQEAKIAogCWlmIChhcnEpIHsKIAkJbWVtc2V0KGFycSwgMCwgc2l6ZW9mKCphcnEpKTsKLQkJUkJfQ0xFQVIoJmFycS0+cmJfbm9kZSk7CisJCVJCX0NMRUFSX05PREUoJmFycS0+cmJfbm9kZSk7CiAJCWFycS0+cmVxdWVzdCA9IHJxOwogCQlhcnEtPnN0YXRlID0gQVNfUlFfUFJFU0NIRUQ7CiAJCWFycS0+aW9fY29udGV4dCA9IE5VTEw7Ci0JCUlOSVRfTElTVF9IRUFEKCZhcnEtPmhhc2gpOwotCQlhcnEtPm9uX2hhc2ggPSAwOworCQlJTklUX0hMSVNUX05PREUoJmFycS0+aGFzaCk7CiAJCUlOSVRfTElTVF9IRUFEKCZhcnEtPmZpZm8pOwogCQlycS0+ZWxldmF0b3JfcHJpdmF0ZSA9IGFycTsKIAkJcmV0dXJuIDA7CkBAIC0xNjYyLDcgKzE2NTIsNyBAQAogCiAJYWQtPnEgPSBxOyAvKiBJZGVudGlmeSB3aGF0IHF1ZXVlIHRoZSBkYXRhIGJlbG9uZ3MgdG8gKi8KIAotCWFkLT5oYXNoID0ga21hbGxvY19ub2RlKHNpemVvZihzdHJ1Y3QgbGlzdF9oZWFkKSpBU19IQVNIX0VOVFJJRVMsCisJYWQtPmhhc2ggPSBrbWFsbG9jX25vZGUoc2l6ZW9mKHN0cnVjdCBobGlzdF9oZWFkKSpBU19IQVNIX0VOVFJJRVMsCiAJCQkJR0ZQX0tFUk5FTCwgcS0+bm9kZSk7CiAJaWYgKCFhZC0+aGFzaCkgewogCQlrZnJlZShhZCk7CkBAIC0xNjg0LDcgKzE2NzQsNyBAQAogCUlOSVRfV09SSygmYWQtPmFudGljX3dvcmssIGFzX3dvcmtfaGFuZGxlciwgcSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVNfSEFTSF9FTlRSSUVTOyBpKyspCi0JCUlOSVRfTElTVF9IRUFEKCZhZC0+aGFzaFtpXSk7CisJCUlOSVRfSExJU1RfSEVBRCgmYWQtPmhhc2hbaV0pOwogCiAJSU5JVF9MSVNUX0hFQUQoJmFkLT5maWZvX2xpc3RbUkVRX1NZTkNdKTsKIAlJTklUX0xJU1RfSEVBRCgmYWQtPmZpZm9fbGlzdFtSRVFfQVNZTkNdKTsKZGlmZiAtLWdpdCBhL2Jsb2NrL2NmcS1pb3NjaGVkLmMgYi9ibG9jay9jZnEtaW9zY2hlZC5jCmluZGV4IDYyMDBkOWIuLmUyNTIyM2UgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2NmcS1pb3NjaGVkLmMKKysrIGIvYmxvY2svY2ZxLWlvc2NoZWQuYwpAQCAtMjYsNyArMjYsNyBAQAogc3RhdGljIGNvbnN0IGludCBjZnFfc2xpY2Vfc3luYyA9IEhaIC8gMTA7CiBzdGF0aWMgaW50IGNmcV9zbGljZV9hc3luYyA9IEhaIC8gMjU7CiBzdGF0aWMgY29uc3QgaW50IGNmcV9zbGljZV9hc3luY19ycSA9IDI7Ci1zdGF0aWMgaW50IGNmcV9zbGljZV9pZGxlID0gSFogLyA3MDsKK3N0YXRpYyBpbnQgY2ZxX3NsaWNlX2lkbGUgPSBIWiAvIDEyNTsKIAogI2RlZmluZSBDRlFfSURMRV9HUkFDRQkJKEhaIC8gMTApCiAjZGVmaW5lIENGUV9TTElDRV9TQ0FMRQkJKDUpCkBAIC02MCwxMSArNjAsNiBAQAogLyoKICAqIHJiLXRyZWUgZGVmaW5lcwogICovCi0jZGVmaW5lIFJCX0VNUFRZKG5vZGUpCQkoKG5vZGUpLT5yYl9ub2RlID09IE5VTEwpCi0jZGVmaW5lIFJCX0NMRUFSKG5vZGUpCQlkbyB7CVwKLQkJbWVtc2V0KG5vZGUsIDAsIHNpemVvZigqbm9kZSkpOyBcCi19IHdoaWxlICgwKQotI2RlZmluZSBSQl9DTEVBUl9ST09UKHJvb3QpCSgocm9vdCktPnJiX25vZGUgPSBOVUxMKQogI2RlZmluZSByYl9lbnRyeV9jcnEobm9kZSkJcmJfZW50cnkoKG5vZGUpLCBzdHJ1Y3QgY2ZxX3JxLCByYl9ub2RlKQogI2RlZmluZSBycV9yYl9rZXkocnEpCQkocnEpLT5zZWN0b3IKIApAQCAtMTIzLDggKzExOCw2IEBACiAJICovCiAJc3RydWN0IGhsaXN0X2hlYWQgKmNycV9oYXNoOwogCi0JdW5zaWduZWQgaW50IG1heF9xdWV1ZWQ7Ci0KIAltZW1wb29sX3QgKmNycV9wb29sOwogCiAJaW50IHJxX2luX2RyaXZlcjsKQEAgLTI3OSw4ICsyNzIsNiBAQAogc3RhdGljIHZvaWQgY2ZxX2Rpc3BhdGNoX2luc2VydChyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IGNmcV9ycSAqKTsKIHN0YXRpYyBzdHJ1Y3QgY2ZxX3F1ZXVlICpjZnFfZ2V0X3F1ZXVlKHN0cnVjdCBjZnFfZGF0YSAqY2ZxZCwgdW5zaWduZWQgaW50IGtleSwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGdmcF90IGdmcF9tYXNrKTsKIAotI2RlZmluZSBwcm9jZXNzX3N5bmModHNrKQkoKHRzayktPmZsYWdzICYgUEZfU1lOQ1dSSVRFKQotCiAvKgogICogbG90cyBvZiBkZWFkbGluZSBpb3NjaGVkIGR1cGVzLCBjYW4gYmUgYWJzdHJhY3RlZCBsYXRlci4uLgogICovCkBAIC0zMzYsNyArMzI3LDcgQEAKIAogc3RhdGljIGlubGluZSBwaWRfdCBjZnFfcXVldWVfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IHJ3KQogewotCWlmIChydyA9PSBSRUFEIHx8IHByb2Nlc3Nfc3luYyh0YXNrKSkKKwlpZiAocncgPT0gUkVBRCB8fCBydyA9PSBXUklURV9TWU5DKQogCQlyZXR1cm4gdGFzay0+cGlkOwogCiAJcmV0dXJuIENGUV9LRVlfQVNZTkM7CkBAIC01NjMsNyArNTU0LDcgQEAKIAogCXJiX2VyYXNlKCZjcnEtPnJiX25vZGUsICZjZnFxLT5zb3J0X2xpc3QpOwogCi0JaWYgKGNmcV9jZnFxX29uX3JyKGNmcXEpICYmIFJCX0VNUFRZKCZjZnFxLT5zb3J0X2xpc3QpKQorCWlmIChjZnFfY2ZxcV9vbl9ycihjZnFxKSAmJiBSQl9FTVBUWV9ST09UKCZjZnFxLT5zb3J0X2xpc3QpKQogCQljZnFfZGVsX2NmcXFfcnIoY2ZxZCwgY2ZxcSk7CiB9CiAKQEAgLTkxMCwxMyArOTAxLDE1IEBACiAJcmV0dXJuIGNmcXE7CiB9CiAKKyNkZWZpbmUgQ0lDX1NFRUtZKGNpYykgKChjaWMpLT5zZWVrX21lYW4gPiAoMTI4ICogMTAyNCkpCisKIHN0YXRpYyBpbnQgY2ZxX2FybV9zbGljZV90aW1lcihzdHJ1Y3QgY2ZxX2RhdGEgKmNmcWQsIHN0cnVjdCBjZnFfcXVldWUgKmNmcXEpCiAKIHsKIAlzdHJ1Y3QgY2ZxX2lvX2NvbnRleHQgKmNpYzsKIAl1bnNpZ25lZCBsb25nIHNsOwogCi0JV0FSTl9PTighUkJfRU1QVFkoJmNmcXEtPnNvcnRfbGlzdCkpOworCVdBUk5fT04oIVJCX0VNUFRZX1JPT1QoJmNmcXEtPnNvcnRfbGlzdCkpOwogCVdBUk5fT04oY2ZxcSAhPSBjZnFkLT5hY3RpdmVfcXVldWUpOwogCiAJLyoKQEAgLTk0Myw3ICs5MzYsNyBAQAogCSAqIGZhaXIgZGlzdHJpYnV0aW9uIG9mIHNsaWNlIHRpbWUgZm9yIGEgcHJvY2VzcyBkb2luZyBiYWNrLXRvLWJhY2sKIAkgKiBzZWVrcy4gc28gYWxsb3cgYSBsaXR0bGUgYml0IG9mIHRpbWUgZm9yIGhpbSB0byBzdWJtaXQgYSBuZXcgcnEKIAkgKi8KLQlpZiAoc2FtcGxlX3ZhbGlkKGNpYy0+c2Vla19zYW1wbGVzKSAmJiBjaWMtPnNlZWtfbWVhbiA+IDEzMTA3MikKKwlpZiAoc2FtcGxlX3ZhbGlkKGNpYy0+c2Vla19zYW1wbGVzKSAmJiBDSUNfU0VFS1koY2ljKSkKIAkJc2wgPSAyOwogCiAJbW9kX3RpbWVyKCZjZnFkLT5pZGxlX3NsaWNlX3RpbWVyLCBqaWZmaWVzICsgc2wpOwpAQCAtOTU0LDExICs5NDcsMTUgQEAKIHsKIAlzdHJ1Y3QgY2ZxX2RhdGEgKmNmcWQgPSBxLT5lbGV2YXRvci0+ZWxldmF0b3JfZGF0YTsKIAlzdHJ1Y3QgY2ZxX3F1ZXVlICpjZnFxID0gY3JxLT5jZnFfcXVldWU7CisJc3RydWN0IHJlcXVlc3QgKnJxOwogCiAJY2ZxcS0+bmV4dF9jcnEgPSBjZnFfZmluZF9uZXh0X2NycShjZnFkLCBjZnFxLCBjcnEpOwogCWNmcV9yZW1vdmVfcmVxdWVzdChjcnEtPnJlcXVlc3QpOwogCWNmcXEtPm9uX2Rpc3BhdGNoW2NmcV9jcnFfaXNfc3luYyhjcnEpXSsrOwogCWVsdl9kaXNwYXRjaF9zb3J0KHEsIGNycS0+cmVxdWVzdCk7CisKKwlycSA9IGxpc3RfZW50cnkocS0+cXVldWVfaGVhZC5wcmV2LCBzdHJ1Y3QgcmVxdWVzdCwgcXVldWVsaXN0KTsKKwljZnFkLT5sYXN0X3NlY3RvciA9IHJxLT5zZWN0b3IgKyBycS0+bnJfc2VjdG9yczsKIH0KIAogLyoKQEAgLTEwNDAsMTAgKzEwMzcsMTIgQEAKIAkgKiBpZiBxdWV1ZSBoYXMgcmVxdWVzdHMsIGRpc3BhdGNoIG9uZS4gaWYgbm90LCBjaGVjayBpZgogCSAqIGVub3VnaCBzbGljZSBpcyBsZWZ0IHRvIHdhaXQgZm9yIG9uZQogCSAqLwotCWlmICghUkJfRU1QVFkoJmNmcXEtPnNvcnRfbGlzdCkpCisJaWYgKCFSQl9FTVBUWV9ST09UKCZjZnFxLT5zb3J0X2xpc3QpKQogCQlnb3RvIGtlZXBfcXVldWU7Ci0JZWxzZSBpZiAoY2ZxX2NmcXFfY2xhc3Nfc3luYyhjZnFxKSAmJgotCQkgdGltZV9iZWZvcmUobm93LCBjZnFxLT5zbGljZV9lbmQpKSB7CisJZWxzZSBpZiAoY2ZxX2NmcXFfZGlzcGF0Y2hlZChjZnFxKSkgeworCQljZnFxID0gTlVMTDsKKwkJZ290byBrZWVwX3F1ZXVlOworCX0gZWxzZSBpZiAoY2ZxX2NmcXFfY2xhc3Nfc3luYyhjZnFxKSkgewogCQlpZiAoY2ZxX2FybV9zbGljZV90aW1lcihjZnFkLCBjZnFxKSkKIAkJCXJldHVybiBOVUxMOwogCX0KQEAgLTEwNjIsNyArMTA2MSw3IEBACiB7CiAJaW50IGRpc3BhdGNoZWQgPSAwOwogCi0JQlVHX09OKFJCX0VNUFRZKCZjZnFxLT5zb3J0X2xpc3QpKTsKKwlCVUdfT04oUkJfRU1QVFlfUk9PVCgmY2ZxcS0+c29ydF9saXN0KSk7CiAKIAlkbyB7CiAJCXN0cnVjdCBjZnFfcnEgKmNycTsKQEAgLTEwODYsMTQgKzEwODUsMTMgQEAKIAkJCWNmcWQtPmFjdGl2ZV9jaWMgPSBjcnEtPmlvX2NvbnRleHQ7CiAJCX0KIAotCQlpZiAoUkJfRU1QVFkoJmNmcXEtPnNvcnRfbGlzdCkpCisJCWlmIChSQl9FTVBUWV9ST09UKCZjZnFxLT5zb3J0X2xpc3QpKQogCQkJYnJlYWs7CiAKIAl9IHdoaWxlIChkaXNwYXRjaGVkIDwgbWF4X2Rpc3BhdGNoKTsKIAogCS8qCi0JICogaWYgc2xpY2UgZW5kIGlzbid0IHNldCB5ZXQsIHNldCBpdC4gaWYgYXQgbGVhc3Qgb25lIHJlcXVlc3Qgd2FzCi0JICogc3luYywgdXNlIHRoZSBzeW5jIHRpbWUgc2xpY2UgdmFsdWUKKwkgKiBpZiBzbGljZSBlbmQgaXNuJ3Qgc2V0IHlldCwgc2V0IGl0LgogCSAqLwogCWlmICghY2ZxcS0+c2xpY2VfZW5kKQogCQljZnFfc2V0X3ByaW9fc2xpY2UoY2ZxZCwgY2ZxcSk7CkBAIC0xMTA0LDcgKzExMDIsOCBAQAogCSAqLwogCWlmICgoIWNmcV9jZnFxX3N5bmMoY2ZxcSkgJiYKIAkgICAgY2ZxZC0+ZGlzcGF0Y2hfc2xpY2UgPj0gY2ZxX3ByaW9fdG9fbWF4cnEoY2ZxZCwgY2ZxcSkpIHx8Ci0JICAgIGNmcV9jbGFzc19pZGxlKGNmcXEpKQorCSAgICBjZnFfY2xhc3NfaWRsZShjZnFxKSB8fAorCSAgICAhY2ZxX2NmcXFfaWRsZV93aW5kb3coY2ZxcSkpCiAJCWNmcV9zbGljZV9leHBpcmVkKGNmcWQsIDApOwogCiAJcmV0dXJuIGRpc3BhdGNoZWQ7CkBAIC0xMTEzLDEwICsxMTEyLDExIEBACiBzdGF0aWMgaW50CiBjZnFfZm9yY2VkX2Rpc3BhdGNoX2NmcXFzKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiB7Ci0JaW50IGRpc3BhdGNoZWQgPSAwOwogCXN0cnVjdCBjZnFfcXVldWUgKmNmcXEsICpuZXh0OwogCXN0cnVjdCBjZnFfcnEgKmNycTsKKwlpbnQgZGlzcGF0Y2hlZDsKIAorCWRpc3BhdGNoZWQgPSAwOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjZnFxLCBuZXh0LCBsaXN0LCBjZnFfbGlzdCkgewogCQl3aGlsZSAoKGNycSA9IGNmcXEtPm5leHRfY3JxKSkgewogCQkJY2ZxX2Rpc3BhdGNoX2luc2VydChjZnFxLT5jZnFkLT5xdWV1ZSwgY3JxKTsKQEAgLTExMjQsNiArMTEyNCw3IEBACiAJCX0KIAkJQlVHX09OKCFsaXN0X2VtcHR5KCZjZnFxLT5maWZvKSk7CiAJfQorCiAJcmV0dXJuIGRpc3BhdGNoZWQ7CiB9CiAKQEAgLTExNTAsNyArMTE1MSw4IEBACiBjZnFfZGlzcGF0Y2hfcmVxdWVzdHMocmVxdWVzdF9xdWV1ZV90ICpxLCBpbnQgZm9yY2UpCiB7CiAJc3RydWN0IGNmcV9kYXRhICpjZnFkID0gcS0+ZWxldmF0b3ItPmVsZXZhdG9yX2RhdGE7Ci0Jc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcTsKKwlzdHJ1Y3QgY2ZxX3F1ZXVlICpjZnFxLCAqcHJldl9jZnFxOworCWludCBkaXNwYXRjaGVkOwogCiAJaWYgKCFjZnFkLT5idXN5X3F1ZXVlcykKIAkJcmV0dXJuIDA7CkBAIC0xMTU4LDEwICsxMTYwLDE3IEBACiAJaWYgKHVubGlrZWx5KGZvcmNlKSkKIAkJcmV0dXJuIGNmcV9mb3JjZWRfZGlzcGF0Y2goY2ZxZCk7CiAKLQljZnFxID0gY2ZxX3NlbGVjdF9xdWV1ZShjZnFkKTsKLQlpZiAoY2ZxcSkgeworCWRpc3BhdGNoZWQgPSAwOworCXByZXZfY2ZxcSA9IE5VTEw7CisJd2hpbGUgKChjZnFxID0gY2ZxX3NlbGVjdF9xdWV1ZShjZnFkKSkgIT0gTlVMTCkgewogCQlpbnQgbWF4X2Rpc3BhdGNoOwogCisJCS8qCisJCSAqIERvbid0IHJlcGVhdCBkaXNwYXRjaCBmcm9tIHRoZSBwcmV2aW91cyBxdWV1ZS4KKwkJICovCisJCWlmIChwcmV2X2NmcXEgPT0gY2ZxcSkKKwkJCWJyZWFrOworCiAJCWNmcV9jbGVhcl9jZnFxX211c3RfZGlzcGF0Y2goY2ZxcSk7CiAJCWNmcV9jbGVhcl9jZnFxX3dhaXRfcmVxdWVzdChjZnFxKTsKIAkJZGVsX3RpbWVyKCZjZnFkLT5pZGxlX3NsaWNlX3RpbWVyKTsKQEAgLTExNzAsMTAgKzExNzksMTkgQEAKIAkJaWYgKGNmcV9jbGFzc19pZGxlKGNmcXEpKQogCQkJbWF4X2Rpc3BhdGNoID0gMTsKIAotCQlyZXR1cm4gX19jZnFfZGlzcGF0Y2hfcmVxdWVzdHMoY2ZxZCwgY2ZxcSwgbWF4X2Rpc3BhdGNoKTsKKwkJZGlzcGF0Y2hlZCArPSBfX2NmcV9kaXNwYXRjaF9yZXF1ZXN0cyhjZnFkLCBjZnFxLCBtYXhfZGlzcGF0Y2gpOworCisJCS8qCisJCSAqIElmIHRoZSBkaXNwYXRjaCBjZnFxIGhhcyBpZGxpbmcgZW5hYmxlZCBhbmQgaXMgc3RpbGwKKwkJICogdGhlIGFjdGl2ZSBxdWV1ZSwgYnJlYWsgb3V0LgorCQkgKi8KKwkJaWYgKGNmcV9jZnFxX2lkbGVfd2luZG93KGNmcXEpICYmIGNmcWQtPmFjdGl2ZV9xdWV1ZSkKKwkJCWJyZWFrOworCisJCXByZXZfY2ZxcSA9IGNmcXE7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIGRpc3BhdGNoZWQ7CiB9CiAKIC8qCkBAIC0xMzE4LDcgKzEzMzYsNiBAQAogCiAJaWYgKGNpYykgewogCQltZW1zZXQoY2ljLCAwLCBzaXplb2YoKmNpYykpOwotCQlSQl9DTEVBUl9DT0xPUigmY2ljLT5yYl9ub2RlKTsKIAkJY2ljLT5sYXN0X2VuZF9yZXF1ZXN0ID0gamlmZmllczsKIAkJSU5JVF9MSVNUX0hFQUQoJmNpYy0+cXVldWVfbGlzdCk7CiAJCWNpYy0+ZHRvciA9IGNmcV9mcmVlX2lvX2NvbnRleHQ7CkBAIC0xMzgwLDI1ICsxMzk3LDI4IEBACiB7CiAJc3RydWN0IGNmcV9kYXRhICpjZnFkID0gY2ljLT5rZXk7CiAJc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcTsKLQlpZiAoY2ZxZCkgewotCQlzcGluX2xvY2soY2ZxZC0+cXVldWUtPnF1ZXVlX2xvY2spOwotCQljZnFxID0gY2ljLT5jZnFxW0FTWU5DXTsKLQkJaWYgKGNmcXEpIHsKLQkJCXN0cnVjdCBjZnFfcXVldWUgKm5ld19jZnFxOwotCQkJbmV3X2NmcXEgPSBjZnFfZ2V0X3F1ZXVlKGNmcWQsIENGUV9LRVlfQVNZTkMsCi0JCQkJCQljaWMtPmlvYy0+dGFzaywgR0ZQX0FUT01JQyk7Ci0JCQlpZiAobmV3X2NmcXEpIHsKLQkJCQljaWMtPmNmcXFbQVNZTkNdID0gbmV3X2NmcXE7Ci0JCQkJY2ZxX3B1dF9xdWV1ZShjZnFxKTsKLQkJCX0KKworCWlmICh1bmxpa2VseSghY2ZxZCkpCisJCXJldHVybjsKKworCXNwaW5fbG9jayhjZnFkLT5xdWV1ZS0+cXVldWVfbG9jayk7CisKKwljZnFxID0gY2ljLT5jZnFxW0FTWU5DXTsKKwlpZiAoY2ZxcSkgeworCQlzdHJ1Y3QgY2ZxX3F1ZXVlICpuZXdfY2ZxcTsKKwkJbmV3X2NmcXEgPSBjZnFfZ2V0X3F1ZXVlKGNmcWQsIENGUV9LRVlfQVNZTkMsIGNpYy0+aW9jLT50YXNrLAorCQkJCQkgR0ZQX0FUT01JQyk7CisJCWlmIChuZXdfY2ZxcSkgeworCQkJY2ljLT5jZnFxW0FTWU5DXSA9IG5ld19jZnFxOworCQkJY2ZxX3B1dF9xdWV1ZShjZnFxKTsKIAkJfQotCQljZnFxID0gY2ljLT5jZnFxW1NZTkNdOwotCQlpZiAoY2ZxcSkgewotCQkJY2ZxX21hcmtfY2ZxcV9wcmlvX2NoYW5nZWQoY2ZxcSk7Ci0JCQljZnFfaW5pdF9wcmlvX2RhdGEoY2ZxcSk7Ci0JCX0KLQkJc3Bpbl91bmxvY2soY2ZxZC0+cXVldWUtPnF1ZXVlX2xvY2spOwogCX0KKworCWNmcXEgPSBjaWMtPmNmcXFbU1lOQ107CisJaWYgKGNmcXEpCisJCWNmcV9tYXJrX2NmcXFfcHJpb19jaGFuZ2VkKGNmcXEpOworCisJc3Bpbl91bmxvY2soY2ZxZC0+cXVldWUtPnF1ZXVlX2xvY2spOwogfQogCiAvKgpAQCAtMTQ1NSw3ICsxNDc1LDYgQEAKIAogCQlJTklUX0hMSVNUX05PREUoJmNmcXEtPmNmcV9oYXNoKTsKIAkJSU5JVF9MSVNUX0hFQUQoJmNmcXEtPmNmcV9saXN0KTsKLQkJUkJfQ0xFQVJfUk9PVCgmY2ZxcS0+c29ydF9saXN0KTsKIAkJSU5JVF9MSVNUX0hFQUQoJmNmcXEtPmZpZm8pOwogCiAJCWNmcXEtPmtleSA9IGtleTsKQEAgLTE0NjcsOCArMTQ4Niw3IEBACiAJCSAqIHNldCAtPnNsaWNlX2xlZnQgdG8gYWxsb3cgcHJlZW1wdGlvbiBmb3IgYSBuZXcgcHJvY2VzcwogCQkgKi8KIAkJY2ZxcS0+c2xpY2VfbGVmdCA9IDIgKiBjZnFkLT5jZnFfc2xpY2VfaWRsZTsKLQkJaWYgKCFjZnFkLT5od190YWcpCi0JCQljZnFfbWFya19jZnFxX2lkbGVfd2luZG93KGNmcXEpOworCQljZnFfbWFya19jZnFxX2lkbGVfd2luZG93KGNmcXEpOwogCQljZnFfbWFya19jZnFxX3ByaW9fY2hhbmdlZChjZnFxKTsKIAkJY2ZxX2luaXRfcHJpb19kYXRhKGNmcXEpOwogCX0KQEAgLTE2NTksNyArMTY3Nyw4IEBACiB7CiAJaW50IGVuYWJsZV9pZGxlID0gY2ZxX2NmcXFfaWRsZV93aW5kb3coY2ZxcSk7CiAKLQlpZiAoIWNpYy0+aW9jLT50YXNrIHx8ICFjZnFkLT5jZnFfc2xpY2VfaWRsZSB8fCBjZnFkLT5od190YWcpCisJaWYgKCFjaWMtPmlvYy0+dGFzayB8fCAhY2ZxZC0+Y2ZxX3NsaWNlX2lkbGUgfHwKKwkgICAgKGNmcWQtPmh3X3RhZyAmJiBDSUNfU0VFS1koY2ljKSkpCiAJCWVuYWJsZV9pZGxlID0gMDsKIAllbHNlIGlmIChzYW1wbGVfdmFsaWQoY2ljLT50dGltZV9zYW1wbGVzKSkgewogCQlpZiAoY2ljLT50dGltZV9tZWFuID4gY2ZxZC0+Y2ZxX3NsaWNlX2lkbGUpCkBAIC0xNjg5LDcgKzE3MDgsNyBAQAogCQlyZXR1cm4gMDsKIAogCWlmICghY2ZxcSkKLQkJcmV0dXJuIDE7CisJCXJldHVybiAwOwogCiAJaWYgKGNmcV9jbGFzc19pZGxlKGNmcXEpKQogCQlyZXR1cm4gMTsKQEAgLTE3MjEsNyArMTc0MCw3IEBACiAJCWNmcXEtPnNsaWNlX2xlZnQgPSBjZnFfcHJpb190b19zbGljZShjZnFkLCBjZnFxKSAvIDI7CiAKIAljZnFxLT5zbGljZV9lbmQgPSBjZnFxLT5zbGljZV9sZWZ0ICsgamlmZmllczsKLQlfX2NmcV9zbGljZV9leHBpcmVkKGNmcWQsIGNmcXEsIDEpOworCWNmcV9zbGljZV9leHBpcmVkKGNmcWQsIDEpOwogCV9fY2ZxX3NldF9hY3RpdmVfcXVldWUoY2ZxZCwgY2ZxcSk7CiB9CiAKQEAgLTE3NDYsMTEgKzE3NjUsNyBAQAogY2ZxX2NycV9lbnF1ZXVlZChzdHJ1Y3QgY2ZxX2RhdGEgKmNmcWQsIHN0cnVjdCBjZnFfcXVldWUgKmNmcXEsCiAJCSBzdHJ1Y3QgY2ZxX3JxICpjcnEpCiB7Ci0Jc3RydWN0IGNmcV9pb19jb250ZXh0ICpjaWM7Ci0KLQljZnFxLT5uZXh0X2NycSA9IGNmcV9jaG9vc2VfcmVxKGNmcWQsIGNmcXEtPm5leHRfY3JxLCBjcnEpOwotCi0JY2ljID0gY3JxLT5pb19jb250ZXh0OworCXN0cnVjdCBjZnFfaW9fY29udGV4dCAqY2ljID0gY3JxLT5pb19jb250ZXh0OwogCiAJLyoKIAkgKiB3ZSBuZXZlciB3YWl0IGZvciBhbiBhc3luYyByZXF1ZXN0IGFuZCB3ZSBkb24ndCBhbGxvdyBwcmVlbXB0aW9uCkBAIC0xODQwLDExICsxODU1LDIzIEBACiAJCQljZnFxLT5zZXJ2aWNlX2xhc3QgPSBub3c7CiAJCQljZnFfcmVzb3J0X3JyX2xpc3QoY2ZxcSwgMCk7CiAJCX0KLQkJY2ZxX3NjaGVkdWxlX2Rpc3BhdGNoKGNmcWQpOwogCX0KIAotCWlmIChjZnFfY3JxX2lzX3N5bmMoY3JxKSkKKwlpZiAoc3luYykKIAkJY3JxLT5pb19jb250ZXh0LT5sYXN0X2VuZF9yZXF1ZXN0ID0gbm93OworCisJLyoKKwkgKiBJZiB0aGlzIGlzIHRoZSBhY3RpdmUgcXVldWUsIGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIGV4cGlyZWQsCisJICogb3IgaWYgd2Ugd2FudCB0byBpZGxlIGluIGNhc2UgaXQgaGFzIG5vIHBlbmRpbmcgcmVxdWVzdHMuCisJICovCisJaWYgKGNmcWQtPmFjdGl2ZV9xdWV1ZSA9PSBjZnFxKSB7CisJCWlmICh0aW1lX2FmdGVyKG5vdywgY2ZxcS0+c2xpY2VfZW5kKSkKKwkJCWNmcV9zbGljZV9leHBpcmVkKGNmcWQsIDApOworCQllbHNlIGlmIChzeW5jICYmIFJCX0VNUFRZX1JPT1QoJmNmcXEtPnNvcnRfbGlzdCkpIHsKKwkJCWlmICghY2ZxX2FybV9zbGljZV90aW1lcihjZnFkLCBjZnFxKSkKKwkJCQljZnFfc2NoZWR1bGVfZGlzcGF0Y2goY2ZxZCk7CisJCX0KKwl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqCkBAIC0xOTExLDcgKzE5MzgsNiBAQAogX19jZnFfbWF5X3F1ZXVlKHN0cnVjdCBjZnFfZGF0YSAqY2ZxZCwgc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcSwKIAkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQgcncpCiB7Ci0jaWYgMQogCWlmICgoY2ZxX2NmcXFfd2FpdF9yZXF1ZXN0KGNmcXEpIHx8IGNmcV9jZnFxX211c3RfYWxsb2MoY2ZxcSkpICYmCiAJICAgICFjZnFfY2ZxcV9tdXN0X2FsbG9jX3NsaWNlKGNmcXEpKSB7CiAJCWNmcV9tYXJrX2NmcXFfbXVzdF9hbGxvY19zbGljZShjZnFxKTsKQEAgLTE5MTksMzkgKzE5NDUsNiBAQAogCX0KIAogCXJldHVybiBFTFZfTVFVRVVFX01BWTsKLSNlbHNlCi0JaWYgKCFjZnFxIHx8IHRhc2stPmZsYWdzICYgUEZfTUVNQUxMT0MpCi0JCXJldHVybiBFTFZfTVFVRVVFX01BWTsKLQlpZiAoIWNmcXEtPmFsbG9jYXRlZFtyd10gfHwgY2ZxX2NmcXFfbXVzdF9hbGxvYyhjZnFxKSkgewotCQlpZiAoY2ZxX2NmcXFfd2FpdF9yZXF1ZXN0KGNmcXEpKQotCQkJcmV0dXJuIEVMVl9NUVVFVUVfTVVTVDsKLQotCQkvKgotCQkgKiBvbmx5IGFsbG93IDEgRUxWX01RVUVVRV9NVVNUIHBlciBzbGljZSwgb3RoZXJ3aXNlIHdlCi0JCSAqIGNhbiBxdWlja2x5IGZsb29kIHRoZSBxdWV1ZSB3aXRoIHdyaXRlcyBmcm9tIGEgc2luZ2xlIHRhc2sKLQkJICovCi0JCWlmIChydyA9PSBSRUFEIHx8ICFjZnFfY2ZxcV9tdXN0X2FsbG9jX3NsaWNlKGNmcXEpKSB7Ci0JCQljZnFfbWFya19jZnFxX211c3RfYWxsb2Nfc2xpY2UoY2ZxcSk7Ci0JCQlyZXR1cm4gRUxWX01RVUVVRV9NVVNUOwotCQl9Ci0KLQkJcmV0dXJuIEVMVl9NUVVFVUVfTUFZOwotCX0KLQlpZiAoY2ZxX2NsYXNzX2lkbGUoY2ZxcSkpCi0JCXJldHVybiBFTFZfTVFVRVVFX05POwotCWlmIChjZnFxLT5hbGxvY2F0ZWRbcnddID49IGNmcWQtPm1heF9xdWV1ZWQpIHsKLQkJc3RydWN0IGlvX2NvbnRleHQgKmlvYyA9IGdldF9pb19jb250ZXh0KEdGUF9BVE9NSUMpOwotCQlpbnQgcmV0ID0gRUxWX01RVUVVRV9OTzsKLQotCQlpZiAoaW9jICYmIGlvYy0+bnJfYmF0Y2hfcmVxdWVzdHMpCi0JCQlyZXQgPSBFTFZfTVFVRVVFX01BWTsKLQotCQlwdXRfaW9fY29udGV4dChpb2MpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiBFTFZfTVFVRVVFX01BWTsKLSNlbmRpZgogfQogCiBzdGF0aWMgaW50IGNmcV9tYXlfcXVldWUocmVxdWVzdF9xdWV1ZV90ICpxLCBpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKQEAgLTE5ODAsMTYgKzE5NzMsMTMgQEAKIHN0YXRpYyB2b2lkIGNmcV9jaGVja193YWl0ZXJzKHJlcXVlc3RfcXVldWVfdCAqcSwgc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcSkKIHsKIAlzdHJ1Y3QgY2ZxX2RhdGEgKmNmcWQgPSBxLT5lbGV2YXRvci0+ZWxldmF0b3JfZGF0YTsKLQlzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybCA9ICZxLT5ycTsKIAotCWlmIChjZnFxLT5hbGxvY2F0ZWRbUkVBRF0gPD0gY2ZxZC0+bWF4X3F1ZXVlZCB8fCBjZnFkLT5ycV9zdGFydmVkKSB7CisJaWYgKHVubGlrZWx5KGNmcWQtPnJxX3N0YXJ2ZWQpKSB7CisJCXN0cnVjdCByZXF1ZXN0X2xpc3QgKnJsID0gJnEtPnJxOworCiAJCXNtcF9tYigpOwogCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmcmwtPndhaXRbUkVBRF0pKQogCQkJd2FrZV91cCgmcmwtPndhaXRbUkVBRF0pOwotCX0KLQotCWlmIChjZnFxLT5hbGxvY2F0ZWRbV1JJVEVdIDw9IGNmcWQtPm1heF9xdWV1ZWQgfHwgY2ZxZC0+cnFfc3RhcnZlZCkgewotCQlzbXBfbWIoKTsKIAkJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJnJsLT53YWl0W1dSSVRFXSkpCiAJCQl3YWtlX3VwKCZybC0+d2FpdFtXUklURV0pOwogCX0KQEAgLTIwNjMsNyArMjA1Myw3IEBACiAKIAljcnEgPSBtZW1wb29sX2FsbG9jKGNmcWQtPmNycV9wb29sLCBnZnBfbWFzayk7CiAJaWYgKGNycSkgewotCQlSQl9DTEVBUigmY3JxLT5yYl9ub2RlKTsKKwkJUkJfQ0xFQVJfTk9ERSgmY3JxLT5yYl9ub2RlKTsKIAkJY3JxLT5yYl9rZXkgPSAwOwogCQljcnEtPnJlcXVlc3QgPSBycTsKIAkJSU5JVF9ITElTVF9OT0RFKCZjcnEtPmhhc2gpOwpAQCAtMjE0OSwxNiArMjEzOSwxMyBAQAogCQkgKiBvbmx5IGV4cGlyZSBhbmQgcmVpbnZva2UgcmVxdWVzdCBoYW5kbGVyLCBpZiB0aGVyZSBhcmUKIAkJICogb3RoZXIgcXVldWVzIHdpdGggcGVuZGluZyByZXF1ZXN0cwogCQkgKi8KLQkJaWYgKCFjZnFkLT5idXN5X3F1ZXVlcykgewotCQkJY2ZxZC0+aWRsZV9zbGljZV90aW1lci5leHBpcmVzID0gbWluKG5vdyArIGNmcWQtPmNmcV9zbGljZV9pZGxlLCBjZnFxLT5zbGljZV9lbmQpOwotCQkJYWRkX3RpbWVyKCZjZnFkLT5pZGxlX3NsaWNlX3RpbWVyKTsKKwkJaWYgKCFjZnFkLT5idXN5X3F1ZXVlcykKIAkJCWdvdG8gb3V0X2NvbnQ7Ci0JCX0KIAogCQkvKgogCQkgKiBub3QgZXhwaXJlZCBhbmQgaXQgaGFzIGEgcmVxdWVzdCBwZW5kaW5nLCBsZXQgaXQgZGlzcGF0Y2gKIAkJICovCi0JCWlmICghUkJfRU1QVFkoJmNmcXEtPnNvcnRfbGlzdCkpIHsKKwkJaWYgKCFSQl9FTVBUWV9ST09UKCZjZnFxLT5zb3J0X2xpc3QpKSB7CiAJCQljZnFfbWFya19jZnFxX211c3RfZGlzcGF0Y2goY2ZxcSk7CiAJCQlnb3RvIG91dF9raWNrOwogCQl9CkBAIC0yMjc5LDkgKzIyNjYsNiBAQAogCiAJY2ZxZC0+cXVldWUgPSBxOwogCi0JY2ZxZC0+bWF4X3F1ZXVlZCA9IHEtPm5yX3JlcXVlc3RzIC8gNDsKLQlxLT5ucl9iYXRjaGluZyA9IGNmcV9xdWV1ZWQ7Ci0KIAlpbml0X3RpbWVyKCZjZnFkLT5pZGxlX3NsaWNlX3RpbWVyKTsKIAljZnFkLT5pZGxlX3NsaWNlX3RpbWVyLmZ1bmN0aW9uID0gY2ZxX2lkbGVfc2xpY2VfdGltZXI7CiAJY2ZxZC0+aWRsZV9zbGljZV90aW1lci5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIGNmcWQ7CmRpZmYgLS1naXQgYS9ibG9jay9kZWFkbGluZS1pb3NjaGVkLmMgYi9ibG9jay9kZWFkbGluZS1pb3NjaGVkLmMKaW5kZXggYzk0ZGU4ZS4uNDQ2OWRkOCAxMDA2NDQKLS0tIGEvYmxvY2svZGVhZGxpbmUtaW9zY2hlZC5jCisrKyBiL2Jsb2NrL2RlYWRsaW5lLWlvc2NoZWQuYwpAQCAtMzAsOCArMzAsNyBAQAogI2RlZmluZSBETF9IQVNIX0ZOKHNlYykJCShoYXNoX2xvbmcoRExfSEFTSF9CTE9DSygoc2VjKSksIGRlYWRsaW5lX2hhc2hfc2hpZnQpKQogI2RlZmluZSBETF9IQVNIX0VOVFJJRVMJCSgxIDw8IGRlYWRsaW5lX2hhc2hfc2hpZnQpCiAjZGVmaW5lIHJxX2hhc2hfa2V5KHJxKQkJKChycSktPnNlY3RvciArIChycSktPm5yX3NlY3RvcnMpCi0jZGVmaW5lIGxpc3RfZW50cnlfaGFzaChwdHIpCWxpc3RfZW50cnkoKHB0ciksIHN0cnVjdCBkZWFkbGluZV9ycSwgaGFzaCkKLSNkZWZpbmUgT05fSEFTSChkcnEpCQkoZHJxKS0+b25faGFzaAorI2RlZmluZSBPTl9IQVNIKGRycSkJCSghaGxpc3RfdW5oYXNoZWQoJihkcnEpLT5oYXNoKSkKIAogc3RydWN0IGRlYWRsaW5lX2RhdGEgewogCS8qCkBAIC00OCw3ICs0Nyw3IEBACiAJICogbmV4dCBpbiBzb3J0IG9yZGVyLiByZWFkLCB3cml0ZSBvciBib3RoIGFyZSBOVUxMCiAJICovCiAJc3RydWN0IGRlYWRsaW5lX3JxICpuZXh0X2RycVsyXTsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoOwkJLyogcmVxdWVzdCBoYXNoICovCisJc3RydWN0IGhsaXN0X2hlYWQgKmhhc2g7CS8qIHJlcXVlc3QgaGFzaCAqLwogCXVuc2lnbmVkIGludCBiYXRjaGluZzsJCS8qIG51bWJlciBvZiBzZXF1ZW50aWFsIHJlcXVlc3RzIG1hZGUgKi8KIAlzZWN0b3JfdCBsYXN0X3NlY3RvcjsJCS8qIGhlYWQgcG9zaXRpb24gKi8KIAl1bnNpZ25lZCBpbnQgc3RhcnZlZDsJCS8qIHRpbWVzIHJlYWRzIGhhdmUgc3RhcnZlZCB3cml0ZXMgKi8KQEAgLTc5LDggKzc4LDcgQEAKIAkvKgogCSAqIHJlcXVlc3QgaGFzaCwga2V5IGlzIHRoZSBlbmRpbmcgb2Zmc2V0IChmb3IgYmFjayBtZXJnZSBsb29rdXApCiAJICovCi0Jc3RydWN0IGxpc3RfaGVhZCBoYXNoOwotCWNoYXIgb25faGFzaDsKKwlzdHJ1Y3QgaGxpc3Rfbm9kZSBoYXNoOwogCiAJLyoKIAkgKiBleHBpcmUgZmlmbwpAQCAtMTAwLDggKzk4LDcgQEAKICAqLwogc3RhdGljIGlubGluZSB2b2lkIF9fZGVhZGxpbmVfZGVsX2RycV9oYXNoKHN0cnVjdCBkZWFkbGluZV9ycSAqZHJxKQogewotCWRycS0+b25faGFzaCA9IDA7Ci0JbGlzdF9kZWxfaW5pdCgmZHJxLT5oYXNoKTsKKwlobGlzdF9kZWxfaW5pdCgmZHJxLT5oYXNoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGRlYWRsaW5lX2RlbF9kcnFfaGFzaChzdHJ1Y3QgZGVhZGxpbmVfcnEgKmRycSkKQEAgLTExNyw4ICsxMTQsNyBAQAogCiAJQlVHX09OKE9OX0hBU0goZHJxKSk7CiAKLQlkcnEtPm9uX2hhc2ggPSAxOwotCWxpc3RfYWRkKCZkcnEtPmhhc2gsICZkZC0+aGFzaFtETF9IQVNIX0ZOKHJxX2hhc2hfa2V5KHJxKSldKTsKKwlobGlzdF9hZGRfaGVhZCgmZHJxLT5oYXNoLCAmZGQtPmhhc2hbRExfSEFTSF9GTihycV9oYXNoX2tleShycSkpXSk7CiB9CiAKIC8qCkBAIC0xMjgsMjYgKzEyNCwyNCBAQAogZGVhZGxpbmVfaG90X2RycV9oYXNoKHN0cnVjdCBkZWFkbGluZV9kYXRhICpkZCwgc3RydWN0IGRlYWRsaW5lX3JxICpkcnEpCiB7CiAJc3RydWN0IHJlcXVlc3QgKnJxID0gZHJxLT5yZXF1ZXN0OwotCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQgPSAmZGQtPmhhc2hbRExfSEFTSF9GTihycV9oYXNoX2tleShycSkpXTsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9ICZkZC0+aGFzaFtETF9IQVNIX0ZOKHJxX2hhc2hfa2V5KHJxKSldOwogCi0JaWYgKE9OX0hBU0goZHJxKSAmJiBkcnEtPmhhc2gucHJldiAhPSBoZWFkKSB7Ci0JCWxpc3RfZGVsKCZkcnEtPmhhc2gpOwotCQlsaXN0X2FkZCgmZHJxLT5oYXNoLCBoZWFkKTsKKwlpZiAoT05fSEFTSChkcnEpICYmICZkcnEtPmhhc2ggIT0gaGVhZC0+Zmlyc3QpIHsKKwkJaGxpc3RfZGVsKCZkcnEtPmhhc2gpOworCQlobGlzdF9hZGRfaGVhZCgmZHJxLT5oYXNoLCBoZWFkKTsKIAl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqCiBkZWFkbGluZV9maW5kX2RycV9oYXNoKHN0cnVjdCBkZWFkbGluZV9kYXRhICpkZCwgc2VjdG9yX3Qgb2Zmc2V0KQogewotCXN0cnVjdCBsaXN0X2hlYWQgKmhhc2hfbGlzdCA9ICZkZC0+aGFzaFtETF9IQVNIX0ZOKG9mZnNldCldOwotCXN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5LCAqbmV4dCA9IGhhc2hfbGlzdC0+bmV4dDsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGFzaF9saXN0ID0gJmRkLT5oYXNoW0RMX0hBU0hfRk4ob2Zmc2V0KV07CisJc3RydWN0IGhsaXN0X25vZGUgKmVudHJ5LCAqbmV4dDsKKwlzdHJ1Y3QgZGVhZGxpbmVfcnEgKmRycTsKIAotCXdoaWxlICgoZW50cnkgPSBuZXh0KSAhPSBoYXNoX2xpc3QpIHsKLQkJc3RydWN0IGRlYWRsaW5lX3JxICpkcnEgPSBsaXN0X2VudHJ5X2hhc2goZW50cnkpOworCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHJxLCBlbnRyeSwgbmV4dCwgaGFzaF9saXN0LCBoYXNoKSB7CiAJCXN0cnVjdCByZXF1ZXN0ICpfX3JxID0gZHJxLT5yZXF1ZXN0OwogCi0JCW5leHQgPSBlbnRyeS0+bmV4dDsKLQkJCiAJCUJVR19PTighT05fSEFTSChkcnEpKTsKIAogCQlpZiAoIXJxX21lcmdlYWJsZShfX3JxKSkgewpAQCAtMTY1LDkgKzE1OSw2IEBACiAvKgogICogcmIgdHJlZSBzdXBwb3J0IGZ1bmN0aW9ucwogICovCi0jZGVmaW5lIFJCX0VNUFRZKHJvb3QpCSgocm9vdCktPnJiX25vZGUgPT0gTlVMTCkKLSNkZWZpbmUgT05fUkIobm9kZSkJKHJiX3BhcmVudChub2RlKSAhPSBub2RlKQotI2RlZmluZSBSQl9DTEVBUihub2RlKQkocmJfc2V0X3BhcmVudChub2RlLCBub2RlKSkKICNkZWZpbmUgcmJfZW50cnlfZHJxKG5vZGUpCXJiX2VudHJ5KChub2RlKSwgc3RydWN0IGRlYWRsaW5lX3JxLCByYl9ub2RlKQogI2RlZmluZSBEUlFfUkJfUk9PVChkZCwgZHJxKQkoJihkZCktPnNvcnRfbGlzdFtycV9kYXRhX2RpcigoZHJxKS0+cmVxdWVzdCldKQogI2RlZmluZSBycV9yYl9rZXkocnEpCQkocnEpLT5zZWN0b3IKQEAgLTIyNiw5ICsyMTcsOSBAQAogCQkJZGQtPm5leHRfZHJxW2RhdGFfZGlyXSA9IHJiX2VudHJ5X2RycShyYm5leHQpOwogCX0KIAotCUJVR19PTighT05fUkIoJmRycS0+cmJfbm9kZSkpOworCUJVR19PTighUkJfRU1QVFlfTk9ERSgmZHJxLT5yYl9ub2RlKSk7CiAJcmJfZXJhc2UoJmRycS0+cmJfbm9kZSwgRFJRX1JCX1JPT1QoZGQsIGRycSkpOwotCVJCX0NMRUFSKCZkcnEtPnJiX25vZGUpOworCVJCX0NMRUFSX05PREUoJmRycS0+cmJfbm9kZSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqCkBAIC01MDIsNyArNDkzLDcgQEAKIAkgKi8KIAogCWlmIChyZWFkcykgewotCQlCVUdfT04oUkJfRU1QVFkoJmRkLT5zb3J0X2xpc3RbUkVBRF0pKTsKKwkJQlVHX09OKFJCX0VNUFRZX1JPT1QoJmRkLT5zb3J0X2xpc3RbUkVBRF0pKTsKIAogCQlpZiAod3JpdGVzICYmIChkZC0+c3RhcnZlZCsrID49IGRkLT53cml0ZXNfc3RhcnZlZCkpCiAJCQlnb3RvIGRpc3BhdGNoX3dyaXRlczsKQEAgLTUxOCw3ICs1MDksNyBAQAogCiAJaWYgKHdyaXRlcykgewogZGlzcGF0Y2hfd3JpdGVzOgotCQlCVUdfT04oUkJfRU1QVFkoJmRkLT5zb3J0X2xpc3RbV1JJVEVdKSk7CisJCUJVR19PTihSQl9FTVBUWV9ST09UKCZkZC0+c29ydF9saXN0W1dSSVRFXSkpOwogCiAJCWRkLT5zdGFydmVkID0gMDsKIApAQCAtNjI1LDcgKzYxNiw3IEBACiAJCXJldHVybiBOVUxMOwogCW1lbXNldChkZCwgMCwgc2l6ZW9mKCpkZCkpOwogCi0JZGQtPmhhc2ggPSBrbWFsbG9jX25vZGUoc2l6ZW9mKHN0cnVjdCBsaXN0X2hlYWQpKkRMX0hBU0hfRU5UUklFUywKKwlkZC0+aGFzaCA9IGttYWxsb2Nfbm9kZShzaXplb2Yoc3RydWN0IGhsaXN0X2hlYWQpKkRMX0hBU0hfRU5UUklFUywKIAkJCQlHRlBfS0VSTkVMLCBxLT5ub2RlKTsKIAlpZiAoIWRkLT5oYXNoKSB7CiAJCWtmcmVlKGRkKTsKQEAgLTY0MSw3ICs2MzIsNyBAQAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBETF9IQVNIX0VOVFJJRVM7IGkrKykKLQkJSU5JVF9MSVNUX0hFQUQoJmRkLT5oYXNoW2ldKTsKKwkJSU5JVF9ITElTVF9IRUFEKCZkZC0+aGFzaFtpXSk7CiAKIAlJTklUX0xJU1RfSEVBRCgmZGQtPmZpZm9fbGlzdFtSRUFEXSk7CiAJSU5JVF9MSVNUX0hFQUQoJmRkLT5maWZvX2xpc3RbV1JJVEVdKTsKQEAgLTY3NCwxMSArNjY1LDEwIEBACiAJZHJxID0gbWVtcG9vbF9hbGxvYyhkZC0+ZHJxX3Bvb2wsIGdmcF9tYXNrKTsKIAlpZiAoZHJxKSB7CiAJCW1lbXNldChkcnEsIDAsIHNpemVvZigqZHJxKSk7Ci0JCVJCX0NMRUFSKCZkcnEtPnJiX25vZGUpOworCQlSQl9DTEVBUl9OT0RFKCZkcnEtPnJiX25vZGUpOwogCQlkcnEtPnJlcXVlc3QgPSBycTsKIAotCQlJTklUX0xJU1RfSEVBRCgmZHJxLT5oYXNoKTsKLQkJZHJxLT5vbl9oYXNoID0gMDsKKwkJSU5JVF9ITElTVF9OT0RFKCZkcnEtPmhhc2gpOwogCiAJCUlOSVRfTElTVF9IRUFEKCZkcnEtPmZpZm8pOwogCmRpZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuYwppbmRleCBhMGFmZGQzLi5kMDBiMjgzIDEwMDY0NAotLS0gYS9ibG9jay9lbGV2YXRvci5jCisrKyBiL2Jsb2NrL2VsZXZhdG9yLmMKQEAgLTg1MCwxMiArODUwLDkgQEAKIAkgKiBvbmUgYWdhaW4gKGFsb25nIHdpdGggcmUtYWRkaW5nIHRoZSBzeXNmcyBkaXIpCiAJICovCiAJZWxldmF0b3JfZXhpdChlKTsKLQllID0gTlVMTDsKIAlxLT5lbGV2YXRvciA9IG9sZF9lbGV2YXRvcjsKIAllbHZfcmVnaXN0ZXJfcXVldWUocSk7CiAJY2xlYXJfYml0KFFVRVVFX0ZMQUdfRUxWU1dJVENILCAmcS0+cXVldWVfZmxhZ3MpOwotCWlmIChlKQotCQlrb2JqZWN0X3B1dCgmZS0+a29iaik7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2Jsb2NrL2dlbmhkLmMgYi9ibG9jay9nZW5oZC5jCmluZGV4IDVhOGQzYmYuLjhkNzMzOTUgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2dlbmhkLmMKKysrIGIvYmxvY2svZ2VuaGQuYwpAQCAtMTcsOCArMTcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2J1ZmZlcl9oZWFkLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KIAotc3RhdGljIHN0cnVjdCBzdWJzeXN0ZW0gYmxvY2tfc3Vic3lzOwotCitzdHJ1Y3Qgc3Vic3lzdGVtIGJsb2NrX3N1YnN5czsKIHN0YXRpYyBERUZJTkVfTVVURVgoYmxvY2tfc3Vic3lzX2xvY2spOwogCiAvKgpAQCAtNTExLDkgKzUxMCw3IEBACiAJLnVldmVudAkJPSBibG9ja191ZXZlbnQsCiB9OwogCi0vKiBkZWNsYXJlIGJsb2NrX3N1YnN5cy4gKi8KLXN0YXRpYyBkZWNsX3N1YnN5cyhibG9jaywgJmt0eXBlX2Jsb2NrLCAmYmxvY2tfdWV2ZW50X29wcyk7Ci0KK2RlY2xfc3Vic3lzKGJsb2NrLCAma3R5cGVfYmxvY2ssICZibG9ja191ZXZlbnRfb3BzKTsKIAogLyoKICAqIGFnZ3JlZ2F0ZSBkaXNrIHN0YXQgY29sbGVjdG9yLiAgVXNlcyB0aGUgc2FtZSBzdGF0cyB0aGF0IHRoZSBzeXNmcwpkaWZmIC0tZ2l0IGEvYmxvY2svbGxfcndfYmxrLmMgYi9ibG9jay9sbF9yd19ibGsuYwppbmRleCA3ZWIzNmM1Li4wNjAzYWIyIDEwMDY0NAotLS0gYS9ibG9jay9sbF9yd19ibGsuYworKysgYi9ibG9jay9sbF9yd19ibGsuYwpAQCAtNjM4LDcgKzYzOCw3IEBACiAJLyogQXNzdW1lIGFueXRoaW5nIDw9IDRHQiBjYW4gYmUgaGFuZGxlZCBieSBJT01NVS4KIAkgICBBY3R1YWxseSBzb21lIElPTU1VcyBjYW4gaGFuZGxlIGV2ZXJ5dGhpbmcsIGJ1dCBJIGRvbid0CiAJICAga25vdyBvZiBhIHdheSB0byB0ZXN0IHRoaXMgaGVyZS4gKi8KLQlpZiAoYm91bmNlX3BmbiA8ICgweGZmZmZmZmZmPj5QQUdFX1NISUZUKSkKKwlpZiAoYm91bmNlX3BmbiA8IChtaW5fdCh1NjQsMHhmZmZmZmZmZixCTEtfQk9VTkNFX0hJR0gpID4+IFBBR0VfU0hJRlQpKQogCQlkbWEgPSAxOwogCXEtPmJvdW5jZV9wZm4gPSBtYXhfbG93X3BmbjsKICNlbHNlCkBAIC0xNjYzLDYgKzE2NjMsOCBAQAogICoqLwogdm9pZCBibGtfc3RhcnRfcXVldWUocmVxdWVzdF9xdWV1ZV90ICpxKQogeworCVdBUk5fT04oIWlycXNfZGlzYWJsZWQoKSk7CisKIAljbGVhcl9iaXQoUVVFVUVfRkxBR19TVE9QUEVELCAmcS0+cXVldWVfZmxhZ3MpOwogCiAJLyoKQEAgLTE4NzgsNyArMTg4MCw4IEBACiAgKiAgICBnZXQgZGVhbHQgd2l0aCBldmVudHVhbGx5LgogICoKICAqICAgIFRoZSBxdWV1ZSBzcGluIGxvY2sgbXVzdCBiZSBoZWxkIHdoaWxlIG1hbmlwdWxhdGluZyB0aGUgcmVxdWVzdHMgb24gdGhlCi0gKiAgICByZXF1ZXN0IHF1ZXVlLgorICogICAgcmVxdWVzdCBxdWV1ZTsgdGhpcyBsb2NrIHdpbGwgYmUgdGFrZW4gYWxzbyBmcm9tIGludGVycnVwdCBjb250ZXh0LCBzbyBpcnEKKyAqICAgIGRpc2FibGluZyBpcyBuZWVkZWQgZm9yIGl0LgogICoKICAqICAgIEZ1bmN0aW9uIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBpbml0aWFsaXplZCByZXF1ZXN0IHF1ZXVlLCBvciBOVUxMIGlmCiAgKiAgICBpdCBkaWRuJ3Qgc3VjY2VlZC4KQEAgLTI4MjQsNiArMjgyNyw5IEBACiAJaWYgKHVubGlrZWx5KGJpb19iYXJyaWVyKGJpbykpKQogCQlyZXEtPmZsYWdzIHw9IChSRVFfSEFSREJBUlJJRVIgfCBSRVFfTk9NRVJHRSk7CiAKKwlpZiAoYmlvX3N5bmMoYmlvKSkKKwkJcmVxLT5mbGFncyB8PSBSRVFfUldfU1lOQzsKKwogCXJlcS0+ZXJyb3JzID0gMDsKIAlyZXEtPmhhcmRfc2VjdG9yID0gcmVxLT5zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKIAlyZXEtPmhhcmRfbnJfc2VjdG9ycyA9IHJlcS0+bnJfc2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbyk7CkBAIC0zMzU5LDEyICszMzY1LDExIEBACiAgKi8KIHN0YXRpYyB2b2lkIGJsa19kb25lX3NvZnRpcnEoc3RydWN0IHNvZnRpcnFfYWN0aW9uICpoKQogewotCXN0cnVjdCBsaXN0X2hlYWQgKmNwdV9saXN0OwotCUxJU1RfSEVBRChsb2NhbF9saXN0KTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpjcHVfbGlzdCwgbG9jYWxfbGlzdDsKIAogCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJY3B1X2xpc3QgPSAmX19nZXRfY3B1X3ZhcihibGtfY3B1X2RvbmUpOwotCWxpc3Rfc3BsaWNlX2luaXQoY3B1X2xpc3QsICZsb2NhbF9saXN0KTsKKwlsaXN0X3JlcGxhY2VfaW5pdChjcHVfbGlzdCwgJmxvY2FsX2xpc3QpOwogCWxvY2FsX2lycV9lbmFibGUoKTsKIAogCXdoaWxlICghbGlzdF9lbXB0eSgmbG9jYWxfbGlzdCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9LY29uZmlnIGIvZHJpdmVycy9hY3BpL0tjb25maWcKaW5kZXggYzI0NjUyZC4uOTRiOGQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL0tjb25maWcKKysrIGIvZHJpdmVycy9hY3BpL0tjb25maWcKQEAgLTEwLDkgKzEwLDggQEAKIGNvbmZpZyBBQ1BJCiAJYm9vbCAiQUNQSSBTdXBwb3J0IgogCWRlcGVuZHMgb24gSUE2NCB8fCBYODYKKwlkZXBlbmRzIG9uIFBDSQogCXNlbGVjdCBQTQotCXNlbGVjdCBQQ0kKLQogCWRlZmF1bHQgeQogCS0tLWhlbHAtLS0KIAkgIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSAoQUNQSSkgc3VwcG9ydCBmb3IgCkBAIC0xNjIsNyArMTYxLDcgQEAKIGNvbmZpZyBBQ1BJX05VTUEKIAlib29sICJOVU1BIHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBOVU1BCi0JZGVwZW5kcyBvbiAoSUE2NCB8fCBYODZfNjQpCisJZGVwZW5kcyBvbiAoWDg2IHx8IElBNjQpCiAJZGVmYXVsdCB5IGlmIElBNjRfR0VORVJJQyB8fCBJQTY0X1NHSV9TTjIKIAogY29uZmlnIEFDUElfQVNVUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jIGIvZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jCmluZGV4IGQ4ODJiZjguLmUwYTk1YmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYworKysgYi9kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMKQEAgLTc0LDcgKzc0LDcgQEAKIAl1bnNpZ25lZCBzaG9ydCBjYWNoaW5nOwkvKiBtZW1vcnkgY2FjaGUgYXR0cmlidXRlICovCiAJdW5zaWduZWQgc2hvcnQgd3JpdGVfcHJvdGVjdDsJLyogbWVtb3J5IHJlYWQvd3JpdGUgYXR0cmlidXRlICovCiAJdTY0IHN0YXJ0X2FkZHI7CQkvKiBNZW1vcnkgUmFuZ2Ugc3RhcnQgcGh5c2ljYWwgYWRkciAqLwotCXU2NCBlbmRfYWRkcjsJCS8qIE1lbW9yeSBSYW5nZSBlbmQgcGh5c2ljYWwgYWRkciAqLworCXU2NCBsZW5ndGg7CQkvKiBNZW1vcnkgUmFuZ2UgbGVuZ3RoICovCiB9OwogCiBzdGF0aWMgaW50CkBAIC05NywxMiArOTcsMTEgQEAKIAlpZiAoQUNQSV9TVUNDRVNTKHN0YXR1cykpIHsKIAkJaWYgKGFkZHJlc3M2NC5yZXNvdXJjZV90eXBlID09IEFDUElfTUVNT1JZX1JBTkdFKSB7CiAJCQkvKiBQb3B1bGF0ZSB0aGUgc3RydWN0dXJlICovCi0JCQltZW1fZGV2aWNlLT5jYWNoaW5nID0KLQkJCSAgICBhZGRyZXNzNjQuaW5mby5tZW0uY2FjaGluZzsKKwkJCW1lbV9kZXZpY2UtPmNhY2hpbmcgPSBhZGRyZXNzNjQuaW5mby5tZW0uY2FjaGluZzsKIAkJCW1lbV9kZXZpY2UtPndyaXRlX3Byb3RlY3QgPQogCQkJICAgIGFkZHJlc3M2NC5pbmZvLm1lbS53cml0ZV9wcm90ZWN0OwogCQkJbWVtX2RldmljZS0+c3RhcnRfYWRkciA9IGFkZHJlc3M2NC5taW5pbXVtOwotCQkJbWVtX2RldmljZS0+ZW5kX2FkZHIgPSBhZGRyZXNzNjQubWF4aW11bTsKKwkJCW1lbV9kZXZpY2UtPmxlbmd0aCA9IGFkZHJlc3M2NC5hZGRyZXNzX2xlbmd0aDsKIAkJfQogCX0KIApAQCAtMTk5LDggKzE5OCw3IEBACiAJICogVGVsbCB0aGUgVk0gdGhlcmUgaXMgbW9yZSBtZW1vcnkgaGVyZS4uLgogCSAqIE5vdGU6IEFzc3VtZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MKIAkgKi8KLQlyZXN1bHQgPSBhZGRfbWVtb3J5KG1lbV9kZXZpY2UtPnN0YXJ0X2FkZHIsCi0JCQkgICAgKG1lbV9kZXZpY2UtPmVuZF9hZGRyIC0gbWVtX2RldmljZS0+c3RhcnRfYWRkcikgKyAxKTsKKwlyZXN1bHQgPSBhZGRfbWVtb3J5KG1lbV9kZXZpY2UtPnN0YXJ0X2FkZHIsIG1lbV9kZXZpY2UtPmxlbmd0aCk7CiAJaWYgKHJlc3VsdCkgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLCAiXG5hZGRfbWVtb3J5IGZhaWxlZFxuIikpOwogCQltZW1fZGV2aWNlLT5zdGF0ZSA9IE1FTU9SWV9JTlZBTElEX1NUQVRFOwpAQCAtMjQ5LDcgKzI0Nyw3IEBACiB7CiAJaW50IHJlc3VsdDsKIAl1NjQgc3RhcnQgPSBtZW1fZGV2aWNlLT5zdGFydF9hZGRyOwotCXU2NCBsZW4gPSBtZW1fZGV2aWNlLT5lbmRfYWRkciAtIHN0YXJ0ICsgMTsKKwl1NjQgbGVuID0gbWVtX2RldmljZS0+bGVuZ3RoOwogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9tZW1vcnlfZGlzYWJsZV9kZXZpY2UiKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FzdXNfYWNwaS5jIGIvZHJpdmVycy9hY3BpL2FzdXNfYWNwaS5jCmluZGV4IGY0Yzg3NzUuLjgzOWY0MjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9hc3VzX2FjcGkuYworKysgYi9kcml2ZXJzL2FjcGkvYXN1c19hY3BpLmMKQEAgLTgxNyw3ICs4MTcsNyBAQAogCQkJICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9pZCAqZGF0YSk7CiAKIHN0YXRpYyBpbnQKLV9faW5pdCBhc3VzX3Byb2NfYWRkKGNoYXIgKm5hbWUsIHByb2Nfd3JpdGVmdW5jICogd3JpdGVmdW5jLAorYXN1c19wcm9jX2FkZChjaGFyICpuYW1lLCBwcm9jX3dyaXRlZnVuYyAqIHdyaXRlZnVuYywKIAkJICAgICBwcm9jX3JlYWRmdW5jICogcmVhZGZ1bmMsIG1vZGVfdCBtb2RlLAogCQkgICAgIHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKQogewpAQCAtODM2LDcgKzgzNiw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGFzdXNfaG90a19hZGRfZnMoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCitzdGF0aWMgaW50IGFzdXNfaG90a19hZGRfZnMoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7CiAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogCW1vZGVfdCBtb2RlOwpAQCAtOTU0LDcgKzk1NCw3IEBACiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgaG90ayB3aXRoIHJpZ2h0IHZhbHVlcy4gSW4gdGhpcwogICogbWV0aG9kLCB3ZSBjYW4gbWFrZSBhbGwgdGhlIGRldGVjdGlvbiB3ZSB3YW50LCBhbmQgbW9kaWZ5IHRoZSBob3RrIHN0cnVjdAogICovCi1zdGF0aWMgaW50IF9faW5pdCBhc3VzX2hvdGtfZ2V0X2luZm8odm9pZCkKK3N0YXRpYyBpbnQgYXN1c19ob3RrX2dldF9pbmZvKHZvaWQpCiB7CiAJc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlciA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTsKIAlzdHJ1Y3QgYWNwaV9idWZmZXIgZHNkdCA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTsKQEAgLTk3MCw3ICs5NzAsNyBAQAogCSAqIEhJRCksIHRoaXMgYml0IHdpbGwgYmUgbW92ZWQuIEEgZ2xvYmFsIHZhcmlhYmxlIGFzdXNfaW5mbyBjb250YWlucwogCSAqIHRoZSBEU0RUIGhlYWRlci4KIAkgKi8KLQlzdGF0dXMgPSBhY3BpX2dldF90YWJsZShBQ1BJX1RBQkxFX0RTRFQsIDEsICZkc2R0KTsKKwlzdGF0dXMgPSBhY3BpX2dldF90YWJsZShBQ1BJX1RBQkxFX0lEX0RTRFQsIDEsICZkc2R0KTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIiAgQ291bGRuJ3QgZ2V0IHRoZSBEU0RUIHRhYmxlIGhlYWRlclxuIik7CiAJZWxzZQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAKIAlyZXR1cm4gQUVfT0s7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGFzdXNfaG90a19jaGVjayh2b2lkKQorc3RhdGljIGludCBhc3VzX2hvdGtfY2hlY2sodm9pZCkKIHsKIAlpbnQgcmVzdWx0ID0gMDsKIApAQCAtMTExOSw3ICsxMTE5LDkgQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBhc3VzX2hvdGtfYWRkKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKQorc3RhdGljIGludCBhc3VzX2hvdGtfZm91bmQ7CisKK3N0YXRpYyBpbnQgYXN1c19ob3RrX2FkZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAlpbnQgcmVzdWx0OwpAQCAtMTE4MCw2ICsxMTgyLDggQEAKIAkJfQogCX0KIAorCWFzdXNfaG90a19mb3VuZCA9IDE7CisKICAgICAgIGVuZDoKIAlpZiAocmVzdWx0KSB7CiAJCWtmcmVlKGhvdGspOwpAQCAtMTIyNiwxMiArMTIzMCwyNCBAQAogCWFzdXNfcHJvY19kaXItPm93bmVyID0gVEhJU19NT0RVTEU7CiAKIAlyZXN1bHQgPSBhY3BpX2J1c19yZWdpc3Rlcl9kcml2ZXIoJmFzdXNfaG90a19kcml2ZXIpOwotCWlmIChyZXN1bHQgPCAxKSB7Ci0JCWFjcGlfYnVzX3VucmVnaXN0ZXJfZHJpdmVyKCZhc3VzX2hvdGtfZHJpdmVyKTsKKwlpZiAocmVzdWx0IDwgMCkgewogCQlyZW1vdmVfcHJvY19lbnRyeShQUk9DX0FTVVMsIGFjcGlfcm9vdF9kaXIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKKwkvKgorCSAqIFRoaXMgaXMgYSBiaXQgb2YgYSBrbHVkZ2UuICBXZSBvbmx5IHdhbnQgdGhpcyBtb2R1bGUgbG9hZGVkCisJICogZm9yIEFTVVMgc3lzdGVtcywgYnV0IHRoZXJlJ3MgY3VycmVudGx5IG5vIHdheSB0byBwcm9iZSB0aGUKKwkgKiBBQ1BJIG5hbWVzcGFjZSBmb3IgQVNVUyBISURzLiAgU28gd2UganVzdCByZXR1cm4gZmFpbHVyZSBpZgorCSAqIHdlIGRpZG4ndCBmaW5kIG9uZSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgbW9kdWxlIHRvIGJlCisJICogdW5sb2FkZWQuCisJICovCisJaWYgKCFhc3VzX2hvdGtfZm91bmQpIHsKKwkJYWNwaV9idXNfdW5yZWdpc3Rlcl9kcml2ZXIoJmFzdXNfaG90a19kcml2ZXIpOworCQlyZW1vdmVfcHJvY19lbnRyeShQUk9DX0FTVVMsIGFjcGlfcm9vdF9kaXIpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYnVzLmMgYi9kcml2ZXJzL2FjcGkvYnVzLmMKaW5kZXggNjA2Zjg3My4uZGQzOTgzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2J1cy5jCisrKyBiL2RyaXZlcnMvYWNwaS9idXMuYwpAQCAtNDMsNyArNDMsNyBAQAogZXh0ZXJuIHZvaWQgX19pbml0IGFjcGlfcGljX3NjaV9zZXRfdHJpZ2dlcih1bnNpZ25lZCBpbnQgaXJxLCB1MTYgdHJpZ2dlcik7CiAjZW5kaWYKIAotRkFEVF9ERVNDUklQVE9SIGFjcGlfZmFkdDsKK3N0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgYWNwaV9mYWR0OwogRVhQT1JUX1NZTUJPTChhY3BpX2ZhZHQpOwogCiBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFjcGlfcm9vdDsKQEAgLTIwNSwxMiArMjA1LDE0IEBACiAJICogR2V0IGRldmljZSdzIGN1cnJlbnQgcG93ZXIgc3RhdGUgaWYgaXQncyB1bmtub3duCiAJICogVGhpcyBtZWFucyBkZXZpY2UgcG93ZXIgc3RhdGUgaXNuJ3QgaW5pdGlhbGl6ZWQgb3IgcHJldmlvdXMgc2V0dGluZyBmYWlsZWQKIAkgKi8KLQlpZiAoZGV2aWNlLT5wb3dlci5zdGF0ZSA9PSBBQ1BJX1NUQVRFX1VOS05PV04pCi0JCWFjcGlfYnVzX2dldF9wb3dlcihkZXZpY2UtPmhhbmRsZSwgJmRldmljZS0+cG93ZXIuc3RhdGUpOwotCWlmIChzdGF0ZSA9PSBkZXZpY2UtPnBvd2VyLnN0YXRlKSB7Ci0JCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIkRldmljZSBpcyBhbHJlYWR5IGF0IEQlZFxuIiwKLQkJCQkgIHN0YXRlKSk7Ci0JCXJldHVybl9WQUxVRSgwKTsKKwlpZiAoIWRldmljZS0+ZmxhZ3MuZm9yY2VfcG93ZXJfc3RhdGUpIHsKKwkJaWYgKGRldmljZS0+cG93ZXIuc3RhdGUgPT0gQUNQSV9TVEFURV9VTktOT1dOKQorCQkJYWNwaV9idXNfZ2V0X3Bvd2VyKGRldmljZS0+aGFuZGxlLCAmZGV2aWNlLT5wb3dlci5zdGF0ZSk7CisJCWlmIChzdGF0ZSA9PSBkZXZpY2UtPnBvd2VyLnN0YXRlKSB7CisJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJEZXZpY2UgaXMgYWxyZWFkeSBhdCBEJWRcbiIsCisJCQkJCSAgc3RhdGUpKTsKKwkJCXJldHVybl9WQUxVRSgwKTsKKwkJfQogCX0KIAlpZiAoIWRldmljZS0+cG93ZXIuc3RhdGVzW3N0YXRlXS5mbGFncy52YWxpZCkgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1dBUk4sICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBEJWRcbiIsCkBAIC01OTYsNiArNTk4LDggQEAKIAlpZiAoYWNwaV9kaXNhYmxlZCkKIAkJcmV0dXJuX1ZPSUQ7CiAKKwlwcmludGsoS0VSTl9JTkZPIFBSRUZJWCAiQ29yZSByZXZpc2lvbiAlMDh4XG4iLCBBQ1BJX0NBX1ZFUlNJT04pOworCiAJLyogZW5hYmxlIHdvcmthcm91bmRzLCB1bmxlc3Mgc3RyaWN0IEFDUEkgc3BlYy4gY29tcGxpYW5jZSAqLwogCWlmICghYWNwaV9zdHJpY3QpCiAJCWFjcGlfZ2JsX2VuYWJsZV9pbnRlcnByZXRlcl9zbGFjayA9IFRSVUU7CkBAIC02MTcsNyArNjIxLDcgQEAKIAkvKgogCSAqIEdldCBhIHNlcGFyYXRlIGNvcHkgb2YgdGhlIEZBRFQgZm9yIHVzZSBieSBvdGhlciBkcml2ZXJzLgogCSAqLwotCXN0YXR1cyA9IGFjcGlfZ2V0X3RhYmxlKEFDUElfVEFCTEVfRkFEVCwgMSwgJmJ1ZmZlcik7CisJc3RhdHVzID0gYWNwaV9nZXRfdGFibGUoQUNQSV9UQUJMRV9JRF9GQURULCAxLCAmYnVmZmVyKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJcHJpbnRrKEtFUk5fRVJSIFBSRUZJWCAiVW5hYmxlIHRvIGdldCB0aGUgRkFEVFxuIik7CiAJCWdvdG8gZXJyb3IwOwpAQCAtNzQzLDggKzc0Nyw2IEBACiAKIAlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2luaXQiKTsKIAotCXByaW50ayhLRVJOX0lORk8gUFJFRklYICJTdWJzeXN0ZW0gcmV2aXNpb24gJTA4eFxuIiwgQUNQSV9DQV9WRVJTSU9OKTsKLQogCWlmIChhY3BpX2Rpc2FibGVkKSB7CiAJCXByaW50ayhLRVJOX0lORk8gUFJFRklYICJJbnRlcnByZXRlciBkaXNhYmxlZC5cbiIpOwogCQlyZXR1cm5fVkFMVUUoLUVOT0RFVik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc2ZpZWxkLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc2ZpZWxkLmMKaW5kZXggNzZiYzA0Ni4uYTZkNzdlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNmaWVsZC5jCisrKyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzZmllbGQuYwpAQCAtODcsNyArODcsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnNlY29uZF9kZXNjID0gTlVMTDsKIAl1MzIgZmxhZ3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19jcmVhdGVfYnVmZmVyX2ZpZWxkIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19jcmVhdGVfYnVmZmVyX2ZpZWxkKTsKIAogCS8qIEdldCB0aGUgbmFtZV9zdHJpbmcgYXJndW1lbnQgKi8KIApAQCAtMjEwLDcgKzIxMCw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfaW50ZWdlciBwb3NpdGlvbjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19nZXRfZmllbGRfbmFtZXMiLCBpbmZvKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19nZXRfZmllbGRfbmFtZXMsIGluZm8pOwogCiAJLyogRmlyc3QgZmllbGQgc3RhcnRzIGF0IGJpdCB6ZXJvICovCiAKQEAgLTM0Miw3ICszNDIsNyBAQAogCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICphcmc7CiAJc3RydWN0IGFjcGlfY3JlYXRlX2ZpZWxkX2luZm8gaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19jcmVhdGVfZmllbGQiLCBvcCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfY3JlYXRlX2ZpZWxkLCBvcCk7CiAKIAkvKiBGaXJzdCBhcmcgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcmVudCBvcF9yZWdpb24gKG11c3QgYWxyZWFkeSBleGlzdCkgKi8KIApAQCAtMzk5LDcgKzM5OSw3IEBACiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CiAJdTggdHlwZSA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfaW5pdF9maWVsZF9vYmplY3RzIiwgb3ApOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2luaXRfZmllbGRfb2JqZWN0cywgb3ApOwogCiAJc3dpdGNoICh3YWxrX3N0YXRlLT5vcGNvZGUpIHsKIAljYXNlIEFNTF9GSUVMRF9PUDoKQEAgLTQyNSw2ICs0MjUsNyBAQAogCSAqIFdhbGsgdGhlIGxpc3Qgb2YgZW50cmllcyBpbiB0aGUgZmllbGRfbGlzdAogCSAqLwogCXdoaWxlIChhcmcpIHsKKwogCQkvKiBJZ25vcmUgT0ZGU0VUIGFuZCBBQ0NFU1NBUyB0ZXJtcyBoZXJlICovCiAKIAkJaWYgKGFyZy0+Y29tbW9uLmFtbF9vcGNvZGUgPT0gQU1MX0lOVF9OQU1FREZJRUxEX09QKSB7CkBAIC00ODEsNyArNDgyLDcgQEAKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqYXJnOwogCXN0cnVjdCBhY3BpX2NyZWF0ZV9maWVsZF9pbmZvIGluZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfY3JlYXRlX2JhbmtfZmllbGQiLCBvcCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfY3JlYXRlX2JhbmtfZmllbGQsIG9wKTsKIAogCS8qIEZpcnN0IGFyZyBpcyB0aGUgbmFtZSBvZiB0aGUgcGFyZW50IG9wX3JlZ2lvbiAobXVzdCBhbHJlYWR5IGV4aXN0KSAqLwogCkBAIC01NTQsNyArNTU1LDcgQEAKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqYXJnOwogCXN0cnVjdCBhY3BpX2NyZWF0ZV9maWVsZF9pbmZvIGluZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfY3JlYXRlX2luZGV4X2ZpZWxkIiwgb3ApOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2NyZWF0ZV9pbmRleF9maWVsZCwgb3ApOwogCiAJLyogRmlyc3QgYXJnIGlzIHRoZSBuYW1lIG9mIHRoZSBJbmRleCByZWdpc3RlciAobXVzdCBhbHJlYWR5IGV4aXN0KSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc2luaXQuYyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzaW5pdC5jCmluZGV4IGU2NWEwN2EuLmJiZGY5OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzaW5pdC5jCisrKyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzaW5pdC5jCkBAIC0xODQsNyArMTg0LDcgQEAKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgotICogREVTQ1JJUFRJT046IFdhbGsgdGhlIG5hbWVzcGFjZSBzdGFydGluZyBhdCAic3RhcnRfbm9kZSIgYW5kIHBlcmZvcm0gYW55CisgKiBERVNDUklQVElPTjogV2FsayB0aGUgbmFtZXNwYWNlIHN0YXJ0aW5nIGF0ICJTdGFydE5vZGUiIGFuZCBwZXJmb3JtIGFueQogICogICAgICAgICAgICAgIG5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbiBvbiB0aGUgb2JqZWN0cyBmb3VuZCB0aGVyZWluCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE5Niw3ICsxOTYsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9pbml0X3dhbGtfaW5mbyBpbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfaW5pdGlhbGl6ZV9vYmplY3RzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19pbml0aWFsaXplX29iamVjdHMpOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9ESVNQQVRDSCwKIAkJCSAgIioqKiogU3RhcnRpbmcgaW5pdGlhbGl6YXRpb24gb2YgbmFtZXNwYWNlIG9iamVjdHMgKioqKlxuIikpOwpAQCAtMjEzLDcgKzIxMyw3IEBACiAJc3RhdHVzID0gYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfQU5ZLCBzdGFydF9ub2RlLCBBQ1BJX1VJTlQzMl9NQVgsCiAJCQkJICAgICBhY3BpX2RzX2luaXRfb25lX29iamVjdCwgJmluZm8sIE5VTEwpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlBQ1BJX0VYQ0VQVElPTigoQUVfSU5GTywgc3RhdHVzLCAiRHVyaW5nIHdhbGtfbmFtZXNwYWNlIikpOworCQlBQ1BJX0VYQ0VQVElPTigoQUVfSU5GTywgc3RhdHVzLCAiRHVyaW5nIFdhbGtOYW1lc3BhY2UiKSk7CiAJfQogCiAJQUNQSV9ERUJVR19QUklOVF9SQVcoKEFDUElfREJfSU5JVCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzbWV0aG9kLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc21ldGhvZC5jCmluZGV4IGM0NzU1NDYuLmJjOWFjYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzbWV0aG9kLmMKKysrIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNtZXRob2QuYwpAQCAtODEsNiArODEsNyBAQAogCS8qIEludm9rZSB0aGUgZ2xvYmFsIGV4Y2VwdGlvbiBoYW5kbGVyICovCiAKIAlpZiAoYWNwaV9nYmxfZXhjZXB0aW9uX2hhbmRsZXIpIHsKKwogCQkvKiBFeGl0IHRoZSBpbnRlcnByZXRlciwgYWxsb3cgaGFuZGxlciB0byBleGVjdXRlIG1ldGhvZHMgKi8KIAogCQlhY3BpX2V4X2V4aXRfaW50ZXJwcmV0ZXIoKTsKQEAgLTEwMCw2ICsxMDEsNyBAQAogCX0KICNpZmRlZiBBQ1BJX0RJU0FTU0VNQkxFUgogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCiAJCS8qIERpc3BsYXkgbWV0aG9kIGxvY2Fscy9hcmdzIGlmIGRpc2Fzc2VtYmxlciBpcyBwcmVzZW50ICovCiAKIAkJYWNwaV9kbV9kdW1wX21ldGhvZF9pbmZvKHN0YXR1cywgd2Fsa19zdGF0ZSwgd2Fsa19zdGF0ZS0+b3ApOwpAQCAtMTMyLDcgKzEzNCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfYmVnaW5fbWV0aG9kX2V4ZWN1dGlvbiIsIG1ldGhvZF9ub2RlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19iZWdpbl9tZXRob2RfZXhlY3V0aW9uLCBtZXRob2Rfbm9kZSk7CiAKIAlpZiAoIW1ldGhvZF9ub2RlKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OVUxMX0VOVFJZKTsKQEAgLTE2OCwxMSArMTcwLDE0IEBACiAKIAkJLyoKIAkJICogR2V0IGEgdW5pdCBmcm9tIHRoZSBtZXRob2Qgc2VtYXBob3JlLiBUaGlzIHJlbGVhc2VzIHRoZQotCQkgKiBpbnRlcnByZXRlciBpZiB3ZSBibG9jaworCQkgKiBpbnRlcnByZXRlciBpZiB3ZSBibG9jayAodGhlbiByZWFjcXVpcmVzIGl0KQogCQkgKi8KIAkJc3RhdHVzID0KIAkJICAgIGFjcGlfZXhfc3lzdGVtX3dhaXRfc2VtYXBob3JlKG9ial9kZXNjLT5tZXRob2Quc2VtYXBob3JlLAogCQkJCQkJICBBQ1BJX1dBSVRfRk9SRVZFUik7CisJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTgzLDcgKzE4OCw3IEBACiAJaWYgKCFvYmpfZGVzYy0+bWV0aG9kLm93bmVyX2lkKSB7CiAJCXN0YXR1cyA9IGFjcGlfdXRfYWxsb2NhdGVfb3duZXJfaWQoJm9ial9kZXNjLT5tZXRob2Qub3duZXJfaWQpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworCQkJZ290byBjbGVhbnVwOwogCQl9CiAJfQogCkBAIC0xOTMsNiArMTk4LDE0IEBACiAJICovCiAJb2JqX2Rlc2MtPm1ldGhvZC50aHJlYWRfY291bnQrKzsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKworICAgICAgY2xlYW51cDoKKwkvKiBPbiBlcnJvciwgbXVzdCBzaWduYWwgdGhlIG1ldGhvZCBzZW1hcGhvcmUgaWYgcHJlc2VudCAqLworCisJaWYgKG9ial9kZXNjLT5tZXRob2Quc2VtYXBob3JlKSB7CisJCSh2b2lkKWFjcGlfb3Nfc2lnbmFsX3NlbWFwaG9yZShvYmpfZGVzYy0+bWV0aG9kLnNlbWFwaG9yZSwgMSk7CisJfQorCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjE4LDEwICsyMzEsMTAgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbWV0aG9kX25vZGU7CiAJc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqbmV4dF93YWxrX3N0YXRlID0gTlVMTDsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKLQlzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyBpbmZvOworCXN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm87CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfY2FsbF9jb250cm9sX21ldGhvZCIsIHRoaXNfd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfY2FsbF9jb250cm9sX21ldGhvZCwgdGhpc193YWxrX3N0YXRlKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsCiAJCQkgICJFeGVjdXRlIG1ldGhvZCAlcCwgY3VycmVudHN0YXRlPSVwXG4iLApAQCAtMjQwLDI1ICsyNTMsMzEgQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05VTExfT0JKRUNUKTsKIAl9CiAKLQkvKiBJbml0IGZvciBuZXcgbWV0aG9kLCB3YWl0IG9uIGNvbmN1cnJlbmN5IHNlbWFwaG9yZSAqLworCS8qIEluaXQgZm9yIG5ldyBtZXRob2QsIHBvc3NpYmx5IHdhaXQgb24gY29uY3VycmVuY3kgc2VtYXBob3JlICovCiAKIAlzdGF0dXMgPSBhY3BpX2RzX2JlZ2luX21ldGhvZF9leGVjdXRpb24obWV0aG9kX25vZGUsIG9ial9kZXNjLAogCQkJCQkJdGhpc193YWxrX3N0YXRlLT5tZXRob2Rfbm9kZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCWdvdG8gY2xlYW51cDsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCisJLyoKKwkgKiAxKSBQYXJzZSB0aGUgbWV0aG9kLiBBbGwgIm5vcm1hbCIgbWV0aG9kcyBhcmUgcGFyc2VkIGZvciBlYWNoIGV4ZWN1dGlvbi4KKwkgKiBJbnRlcm5hbCBtZXRob2RzIChfT1NJLCBldGMuKSBkbyBub3QgcmVxdWlyZSBwYXJzaW5nLgorCSAqLwogCWlmICghKG9ial9kZXNjLT5tZXRob2QubWV0aG9kX2ZsYWdzICYgQU1MX01FVEhPRF9JTlRFUk5BTF9PTkxZKSkgewotCQkvKiAxKSBQYXJzZTogQ3JlYXRlIGEgbmV3IHdhbGsgc3RhdGUgZm9yIHRoZSBwcmVlbXB0aW5nIHdhbGsgKi8KKworCQkvKiBDcmVhdGUgYSBuZXcgd2FsayBzdGF0ZSBmb3IgdGhlIHBhcnNlICovCiAKIAkJbmV4dF93YWxrX3N0YXRlID0KIAkJICAgIGFjcGlfZHNfY3JlYXRlX3dhbGtfc3RhdGUob2JqX2Rlc2MtPm1ldGhvZC5vd25lcl9pZCwgb3AsCiAJCQkJCSAgICAgIG9ial9kZXNjLCBOVUxMKTsKIAkJaWYgKCFuZXh0X3dhbGtfc3RhdGUpIHsKLQkJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOworCQkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOworCQkJZ290byBjbGVhbnVwOwogCQl9CiAKLQkJLyogQ3JlYXRlIGFuZCBpbml0IGEgUm9vdCBOb2RlICovCisJCS8qIENyZWF0ZSBhbmQgaW5pdCBhIHBhcnNlIHRyZWUgcm9vdCAqLwogCiAJCW9wID0gYWNwaV9wc19jcmVhdGVfc2NvcGVfb3AoKTsKIAkJaWYgKCFvcCkgewpAQCAtMjcxLDE3ICsyOTAsMjAgQEAKIAkJCQkJICAgICAgIG9ial9kZXNjLT5tZXRob2QuYW1sX2xlbmd0aCwKIAkJCQkJICAgICAgIE5VTEwsIDEpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCWFjcGlfZHNfZGVsZXRlX3dhbGtfc3RhdGUobmV4dF93YWxrX3N0YXRlKTsKKwkJCWFjcGlfcHNfZGVsZXRlX3BhcnNlX3RyZWUob3ApOwogCQkJZ290byBjbGVhbnVwOwogCQl9CiAKLQkJLyogQmVnaW4gQU1MIHBhcnNlICovCisJCS8qIEJlZ2luIEFNTCBwYXJzZSAoZGVsZXRlcyBuZXh0X3dhbGtfc3RhdGUpICovCiAKIAkJc3RhdHVzID0gYWNwaV9wc19wYXJzZV9hbWwobmV4dF93YWxrX3N0YXRlKTsKIAkJYWNwaV9wc19kZWxldGVfcGFyc2VfdHJlZShvcCk7CisJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQkJZ290byBjbGVhbnVwOworCQl9CiAJfQogCi0JLyogMikgRXhlY3V0ZTogQ3JlYXRlIGEgbmV3IHN0YXRlIGZvciB0aGUgcHJlZW1wdGluZyB3YWxrICovCisJLyogMikgQmVnaW4gbWV0aG9kIGV4ZWN1dGlvbi4gQ3JlYXRlIGEgbmV3IHdhbGsgc3RhdGUgKi8KIAogCW5leHRfd2Fsa19zdGF0ZSA9IGFjcGlfZHNfY3JlYXRlX3dhbGtfc3RhdGUob2JqX2Rlc2MtPm1ldGhvZC5vd25lcl9pZCwKIAkJCQkJCSAgICBOVUxMLCBvYmpfZGVzYywgdGhyZWFkKTsKQEAgLTI4OSw2ICszMTEsNyBAQAogCQlzdGF0dXMgPSBBRV9OT19NRU1PUlk7CiAJCWdvdG8gY2xlYW51cDsKIAl9CisKIAkvKgogCSAqIFRoZSByZXNvbHZlZCBhcmd1bWVudHMgd2VyZSBwdXQgb24gdGhlIHByZXZpb3VzIHdhbGsgc3RhdGUncyBvcGVyYW5kCiAJICogc3RhY2suIE9wZXJhbmRzIG9uIHRoZSBwcmV2aW91cyB3YWxrIHN0YXRlIHN0YWNrIGFsd2F5cwpAQCAtMjk2LDEyICszMTksMjQgQEAKIAkgKi8KIAl0aGlzX3dhbGtfc3RhdGUtPm9wZXJhbmRzW3RoaXNfd2Fsa19zdGF0ZS0+bnVtX29wZXJhbmRzXSA9IE5VTEw7CiAKLQlpbmZvLnBhcmFtZXRlcnMgPSAmdGhpc193YWxrX3N0YXRlLT5vcGVyYW5kc1swXTsKLQlpbmZvLnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOworCS8qCisJICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgdGhlIGV2YWx1YXRpb24gaW5mb3JtYXRpb24gYmxvY2sKKwkgKiBUQkQ6IHRoaXMgaXMgc29tZXdoYXQgaW5lZmZpY2llbnQsIHNob3VsZCBjaGFuZ2UgaW50ZXJmYWNlIHRvCisJICogZHNfaW5pdF9hbWxfd2Fsay4gRm9yIG5vdywga2VlcHMgdGhpcyBzdHJ1Y3Qgb2ZmIHRoZSBDUFUgc3RhY2sKKwkgKi8KKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8pKTsKKwlpZiAoIWluZm8pIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CisJfQorCisJaW5mby0+cGFyYW1ldGVycyA9ICZ0aGlzX3dhbGtfc3RhdGUtPm9wZXJhbmRzWzBdOworCWluZm8tPnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOwogCiAJc3RhdHVzID0gYWNwaV9kc19pbml0X2FtbF93YWxrKG5leHRfd2Fsa19zdGF0ZSwgTlVMTCwgbWV0aG9kX25vZGUsCiAJCQkJICAgICAgIG9ial9kZXNjLT5tZXRob2QuYW1sX3N0YXJ0LAotCQkJCSAgICAgICBvYmpfZGVzYy0+bWV0aG9kLmFtbF9sZW5ndGgsICZpbmZvLCAzKTsKKwkJCQkgICAgICAgb2JqX2Rlc2MtPm1ldGhvZC5hbWxfbGVuZ3RoLCBpbmZvLCAzKTsKKworCUFDUElfRlJFRShpbmZvKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJZ290byBjbGVhbnVwOwogCX0KQEAgLTMyMyw2ICszNTgsOCBAQAogCQkJICAiU3RhcnRpbmcgbmVzdGVkIGV4ZWN1dGlvbiwgbmV3c3RhdGU9JXBcbiIsCiAJCQkgIG5leHRfd2Fsa19zdGF0ZSkpOwogCisJLyogSW52b2tlIGFuIGludGVybmFsIG1ldGhvZCBpZiBuZWNlc3NhcnkgKi8KKwogCWlmIChvYmpfZGVzYy0+bWV0aG9kLm1ldGhvZF9mbGFncyAmIEFNTF9NRVRIT0RfSU5URVJOQUxfT05MWSkgewogCQlzdGF0dXMgPSBvYmpfZGVzYy0+bWV0aG9kLmltcGxlbWVudGF0aW9uKG5leHRfd2Fsa19zdGF0ZSk7CiAJfQpAQCAtMzMwLDE2ICszNjcsMTQgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAogICAgICAgY2xlYW51cDoKLQkvKiBEZWNyZW1lbnQgdGhlIHRocmVhZCBjb3VudCBvbiB0aGUgbWV0aG9kIHBhcnNlIHRyZWUgKi8KIAotCWlmIChuZXh0X3dhbGtfc3RhdGUgJiYgKG5leHRfd2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MpKSB7Ci0JCW5leHRfd2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MtPm1ldGhvZC50aHJlYWRfY291bnQtLTsKKwkvKiBPbiBlcnJvciwgd2UgbXVzdCB0ZXJtaW5hdGUgdGhlIG1ldGhvZCBwcm9wZXJseSAqLworCisJYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2Qob2JqX2Rlc2MsIG5leHRfd2Fsa19zdGF0ZSk7CisJaWYgKG5leHRfd2Fsa19zdGF0ZSkgeworCQlhY3BpX2RzX2RlbGV0ZV93YWxrX3N0YXRlKG5leHRfd2Fsa19zdGF0ZSk7CiAJfQogCi0JLyogT24gZXJyb3IsIHdlIG11c3QgZGVsZXRlIHRoZSBuZXcgd2FsayBzdGF0ZSAqLwotCi0JYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2QobmV4dF93YWxrX3N0YXRlKTsKLQlhY3BpX2RzX2RlbGV0ZV93YWxrX3N0YXRlKG5leHRfd2Fsa19zdGF0ZSk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKQEAgLTM2MiwyNSArMzk3LDMzIEBACiAJCQkgICAgICAgdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmV0dXJuX2Rlc2MpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOworCWludCBzYW1lX2FzX2ltcGxpY2l0X3JldHVybjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19yZXN0YXJ0X2NvbnRyb2xfbWV0aG9kIiwgd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfcmVzdGFydF9jb250cm9sX21ldGhvZCwgd2Fsa19zdGF0ZSk7CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILAotCQkJICAiKioqKlJlc3RhcnQgWyU0LjRzXSBPcCAlcCByZXR1cm5fdmFsdWVfZnJvbV9jYWxsZWUgJXBcbiIsCisJCQkgICIqKioqUmVzdGFydCBbJTQuNHNdIE9wICVwIFJldHVyblZhbHVlRnJvbUNhbGxlZSAlcFxuIiwKIAkJCSAgKGNoYXIgKikmd2Fsa19zdGF0ZS0+bWV0aG9kX25vZGUtPm5hbWUsCiAJCQkgIHdhbGtfc3RhdGUtPm1ldGhvZF9jYWxsX29wLCByZXR1cm5fZGVzYykpOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9ESVNQQVRDSCwKLQkJCSAgIiAgICByZXR1cm5fZnJvbV90aGlzX21ldGhvZF91c2VkPz0lWCByZXNfc3RhY2sgJXAgV2FsayAlcFxuIiwKKwkJCSAgIiAgICBSZXR1cm5Gcm9tVGhpc01ldGhvZFVzZWQ/PSVYIFJlc1N0YWNrICVwIFdhbGsgJXBcbiIsCiAJCQkgIHdhbGtfc3RhdGUtPnJldHVybl91c2VkLAogCQkJICB3YWxrX3N0YXRlLT5yZXN1bHRzLCB3YWxrX3N0YXRlKSk7CiAKIAkvKiBEaWQgdGhlIGNhbGxlZCBtZXRob2QgcmV0dXJuIGEgdmFsdWU/ICovCiAKIAlpZiAocmV0dXJuX2Rlc2MpIHsKKworCQkvKiBJcyB0aGUgaW1wbGljaXQgcmV0dXJuIG9iamVjdCB0aGUgc2FtZSBhcyB0aGUgcmV0dXJuIGRlc2M/ICovCisKKwkJc2FtZV9hc19pbXBsaWNpdF9yZXR1cm4gPQorCQkgICAgKHdhbGtfc3RhdGUtPmltcGxpY2l0X3JldHVybl9vYmogPT0gcmV0dXJuX2Rlc2MpOworCiAJCS8qIEFyZSB3ZSBhY3R1YWxseSBnb2luZyB0byB1c2UgdGhlIHJldHVybiB2YWx1ZT8gKi8KIAogCQlpZiAod2Fsa19zdGF0ZS0+cmV0dXJuX3VzZWQpIHsKKwogCQkJLyogU2F2ZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHByZXZpb3VzIG1ldGhvZCAqLwogCiAJCQlzdGF0dXMgPSBhY3BpX2RzX3Jlc3VsdF9wdXNoKHJldHVybl9kZXNjLCB3YWxrX3N0YXRlKTsKQEAgLTM5NywxOCArNDQwLDIzIEBACiAJCX0KIAogCQkvKgotCQkgKiBUaGUgZm9sbG93aW5nIGNvZGUgaXMgdGhlCi0JCSAqIG9wdGlvbmFsIHN1cHBvcnQgZm9yIGEgc28tY2FsbGVkICJpbXBsaWNpdCByZXR1cm4iLiBTb21lIEFNTCBjb2RlCi0JCSAqIGFzc3VtZXMgdGhhdCB0aGUgbGFzdCB2YWx1ZSBvZiB0aGUgbWV0aG9kIGlzICJpbXBsaWNpdGx5IiByZXR1cm5lZAotCQkgKiB0byB0aGUgY2FsbGVyLiBKdXN0IHNhdmUgdGhlIGxhc3QgcmVzdWx0IGFzIHRoZSByZXR1cm4gdmFsdWUuCisJCSAqIFRoZSBmb2xsb3dpbmcgY29kZSBpcyB0aGUgb3B0aW9uYWwgc3VwcG9ydCBmb3IgdGhlIHNvLWNhbGxlZAorCQkgKiAiaW1wbGljaXQgcmV0dXJuIi4gU29tZSBBTUwgY29kZSBhc3N1bWVzIHRoYXQgdGhlIGxhc3QgdmFsdWUgb2YgdGhlCisJCSAqIG1ldGhvZCBpcyAiaW1wbGljaXRseSIgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciwgaW4gdGhlIGFic2VuY2Ugb2YgYW4KKwkJICogZXhwbGljaXQgcmV0dXJuIHZhbHVlLgorCQkgKgorCQkgKiBKdXN0IHNhdmUgdGhlIGxhc3QgcmVzdWx0IG9mIHRoZSBtZXRob2QgYXMgdGhlIHJldHVybiB2YWx1ZS4KKwkJICoKIAkJICogTk9URTogdGhpcyBpcyBvcHRpb25hbCBiZWNhdXNlIHRoZSBBU0wgbGFuZ3VhZ2UgZG9lcyBub3QgYWN0dWFsbHkKIAkJICogc3VwcG9ydCB0aGlzIGJlaGF2aW9yLgogCQkgKi8KIAkJZWxzZSBpZiAoIWFjcGlfZHNfZG9faW1wbGljaXRfcmV0dXJuCi0JCQkgKHJldHVybl9kZXNjLCB3YWxrX3N0YXRlLCBGQUxTRSkpIHsKKwkJCSAocmV0dXJuX2Rlc2MsIHdhbGtfc3RhdGUsIEZBTFNFKQorCQkJIHx8IHNhbWVfYXNfaW1wbGljaXRfcmV0dXJuKSB7CiAJCQkvKgogCQkJICogRGVsZXRlIHRoZSByZXR1cm4gdmFsdWUgaWYgaXQgd2lsbCBub3QgYmUgdXNlZCBieSB0aGUKLQkJCSAqIGNhbGxpbmcgbWV0aG9kCisJCQkgKiBjYWxsaW5nIG1ldGhvZCBvciByZW1vdmUgb25lIHJlZmVyZW5jZSBpZiB0aGUgZXhwbGljaXQgcmV0dXJuCisJCQkgKiBpcyB0aGUgc2FtZSBhcyB0aGUgaW1wbGljaXQgcmV0dXJuIHZhbHVlLgogCQkJICovCiAJCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UocmV0dXJuX2Rlc2MpOwogCQl9CkBAIC00MjEsNyArNDY5LDggQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2QKICAqCi0gKiBQQVJBTUVURVJTOiAgd2Fsa19zdGF0ZSAgICAgICAgICAtIFN0YXRlIG9mIHRoZSBtZXRob2QKKyAqIFBBUkFNRVRFUlM6ICBtZXRob2RfZGVzYyAgICAgICAgIC0gTWV0aG9kIG9iamVjdAorICogICAgICAgICAgICAgIHdhbGtfc3RhdGUgICAgICAgICAgLSBTdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1ldGhvZAogICoKICAqIFJFVFVSTjogICAgICBOb25lCiAgKgpAQCAtNDMxLDk1ICs0ODAsMTAwIEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdm9pZCBhY3BpX2RzX3Rlcm1pbmF0ZV9jb250cm9sX21ldGhvZChzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlKQordm9pZAorYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2QodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqbWV0aG9kX2Rlc2MsCisJCQkJIHN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGUpCiB7Ci0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm1ldGhvZF9ub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2QiLCB3YWxrX3N0YXRlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2QsIHdhbGtfc3RhdGUpOwogCi0JaWYgKCF3YWxrX3N0YXRlKSB7CisJLyogbWV0aG9kX2Rlc2MgaXMgcmVxdWlyZWQsIHdhbGtfc3RhdGUgaXMgb3B0aW9uYWwgKi8KKworCWlmICghbWV0aG9kX2Rlc2MpIHsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQogCi0JLyogVGhlIGN1cnJlbnQgbWV0aG9kIG9iamVjdCB3YXMgc2F2ZWQgaW4gdGhlIHdhbGsgc3RhdGUgKi8KKwlpZiAod2Fsa19zdGF0ZSkgewogCi0Jb2JqX2Rlc2MgPSB3YWxrX3N0YXRlLT5tZXRob2RfZGVzYzsKLQlpZiAoIW9ial9kZXNjKSB7Ci0JCXJldHVybl9WT0lEOworCQkvKiBEZWxldGUgYWxsIGFyZ3VtZW50cyBhbmQgbG9jYWxzICovCisKKwkJYWNwaV9kc19tZXRob2RfZGF0YV9kZWxldGVfYWxsKHdhbGtfc3RhdGUpOwogCX0KIAotCS8qIERlbGV0ZSBhbGwgYXJndW1lbnRzIGFuZCBsb2NhbHMgKi8KLQotCWFjcGlfZHNfbWV0aG9kX2RhdGFfZGVsZXRlX2FsbCh3YWxrX3N0YXRlKTsKLQogCS8qCiAJICogTG9jayB0aGUgcGFyc2VyIHdoaWxlIHdlIHRlcm1pbmF0ZSB0aGlzIG1ldGhvZC4KIAkgKiBJZiB0aGlzIGlzIHRoZSBsYXN0IHRocmVhZCBleGVjdXRpbmcgdGhlIG1ldGhvZCwKIAkgKiB3ZSBoYXZlIGFkZGl0aW9uYWwgY2xlYW51cCB0byBwZXJmb3JtCiAJICovCi0Jc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX1BBUlNFUik7CisJc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0NPTlRST0xfTUVUSE9EKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQogCiAJLyogU2lnbmFsIGNvbXBsZXRpb24gb2YgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIG1ldGhvZCBpZiBuZWNlc3NhcnkgKi8KIAotCWlmICh3YWxrX3N0YXRlLT5tZXRob2RfZGVzYy0+bWV0aG9kLnNlbWFwaG9yZSkgeworCWlmIChtZXRob2RfZGVzYy0+bWV0aG9kLnNlbWFwaG9yZSkgewogCQlzdGF0dXMgPQotCQkgICAgYWNwaV9vc19zaWduYWxfc2VtYXBob3JlKHdhbGtfc3RhdGUtPm1ldGhvZF9kZXNjLT5tZXRob2QuCi0JCQkJCSAgICAgc2VtYXBob3JlLCAxKTsKKwkJICAgIGFjcGlfb3Nfc2lnbmFsX3NlbWFwaG9yZShtZXRob2RfZGVzYy0+bWV0aG9kLnNlbWFwaG9yZSwgMSk7CiAJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCQkgICAgIkNvdWxkIG5vdCBzaWduYWwgbWV0aG9kIHNlbWFwaG9yZSIpKTsKIAotCQkJLyogSWdub3JlIGVycm9yIGFuZCBjb250aW51ZSBjbGVhbnVwICovCisJCQkvKiBJZ25vcmUgZXJyb3IgYW5kIGNvbnRpbnVlICovCisKKwkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCisJCQkJCSJDb3VsZCBub3Qgc2lnbmFsIG1ldGhvZCBzZW1hcGhvcmUiKSk7CiAJCX0KIAl9CiAKLQkvKgotCSAqIFRoZXJlIGFyZSBubyBtb3JlIHRocmVhZHMgZXhlY3V0aW5nIHRoaXMgbWV0aG9kLiAgUGVyZm9ybQotCSAqIGFkZGl0aW9uYWwgY2xlYW51cC4KLQkgKgotCSAqIFRoZSBtZXRob2QgTm9kZSBpcyBzdG9yZWQgaW4gdGhlIHdhbGsgc3RhdGUKLQkgKi8KLQltZXRob2Rfbm9kZSA9IHdhbGtfc3RhdGUtPm1ldGhvZF9ub2RlOworCWlmICh3YWxrX3N0YXRlKSB7CisJCS8qCisJCSAqIERlbGV0ZSBhbnkgb2JqZWN0cyBjcmVhdGVkIGJ5IHRoaXMgbWV0aG9kIGR1cmluZyBleGVjdXRpb24uCisJCSAqIFRoZSBtZXRob2QgTm9kZSBpcyBzdG9yZWQgaW4gdGhlIHdhbGsgc3RhdGUKKwkJICovCisJCW1ldGhvZF9ub2RlID0gd2Fsa19zdGF0ZS0+bWV0aG9kX25vZGU7CiAKLQkvKiBMb2NrIG5hbWVzcGFjZSBmb3IgcG9zc2libGUgdXBkYXRlICovCisJCS8qIExvY2sgbmFtZXNwYWNlIGZvciBwb3NzaWJsZSB1cGRhdGUgKi8KIAotCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9OQU1FU1BBQ0UpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlnb3RvIGV4aXQ7CisJCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9OQU1FU1BBQ0UpOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCWdvdG8gZXhpdDsKKwkJfQorCisJCS8qCisJCSAqIERlbGV0ZSBhbnkgbmFtZXNwYWNlIGVudHJpZXMgY3JlYXRlZCBpbW1lZGlhdGVseSB1bmRlcm5lYXRoCisJCSAqIHRoZSBtZXRob2QKKwkJICovCisJCWlmIChtZXRob2Rfbm9kZSAmJiBtZXRob2Rfbm9kZS0+Y2hpbGQpIHsKKwkJCWFjcGlfbnNfZGVsZXRlX25hbWVzcGFjZV9zdWJ0cmVlKG1ldGhvZF9ub2RlKTsKKwkJfQorCisJCS8qCisJCSAqIERlbGV0ZSBhbnkgbmFtZXNwYWNlIGVudHJpZXMgY3JlYXRlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbgorCQkgKiB0aGUgbmFtZXNwYWNlIGJ5IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QKKwkJICovCisJCWFjcGlfbnNfZGVsZXRlX25hbWVzcGFjZV9ieV9vd25lcihtZXRob2RfZGVzYy0+bWV0aG9kLm93bmVyX2lkKTsKKwkJc3RhdHVzID0gYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX05BTUVTUEFDRSk7CiAJfQogCi0JLyoKLQkgKiBEZWxldGUgYW55IG5hbWVzcGFjZSBlbnRyaWVzIGNyZWF0ZWQgaW1tZWRpYXRlbHkgdW5kZXJuZWF0aAotCSAqIHRoZSBtZXRob2QKLQkgKi8KLQlpZiAobWV0aG9kX25vZGUtPmNoaWxkKSB7Ci0JCWFjcGlfbnNfZGVsZXRlX25hbWVzcGFjZV9zdWJ0cmVlKG1ldGhvZF9ub2RlKTsKLQl9CisJLyogRGVjcmVtZW50IHRoZSB0aHJlYWQgY291bnQgb24gdGhlIG1ldGhvZCAqLwogCi0JLyoKLQkgKiBEZWxldGUgYW55IG5hbWVzcGFjZSBlbnRyaWVzIGNyZWF0ZWQgYW55d2hlcmUgZWxzZSB3aXRoaW4KLQkgKiB0aGUgbmFtZXNwYWNlIGJ5IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QKLQkgKi8KLQlhY3BpX25zX2RlbGV0ZV9uYW1lc3BhY2VfYnlfb3duZXIod2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MtPm1ldGhvZC4KLQkJCQkJICBvd25lcl9pZCk7Ci0Jc3RhdHVzID0gYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX05BTUVTUEFDRSk7CisJaWYgKG1ldGhvZF9kZXNjLT5tZXRob2QudGhyZWFkX2NvdW50KSB7CisJCW1ldGhvZF9kZXNjLT5tZXRob2QudGhyZWFkX2NvdW50LS07CisJfSBlbHNlIHsKKwkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkludmFsaWQgemVybyB0aHJlYWQgY291bnQgaW4gbWV0aG9kIikpOworCX0KIAogCS8qIEFyZSB0aGVyZSBhbnkgb3RoZXIgdGhyZWFkcyBjdXJyZW50bHkgZXhlY3V0aW5nIHRoaXMgbWV0aG9kPyAqLwogCi0JaWYgKHdhbGtfc3RhdGUtPm1ldGhvZF9kZXNjLT5tZXRob2QudGhyZWFkX2NvdW50KSB7CisJaWYgKG1ldGhvZF9kZXNjLT5tZXRob2QudGhyZWFkX2NvdW50KSB7CiAJCS8qCiAJCSAqIEFkZGl0aW9uYWwgdGhyZWFkcy4gRG8gbm90IHJlbGVhc2UgdGhlIG93bmVyX2lkIGluIHRoaXMgY2FzZSwKIAkJICogd2UgaW1tZWRpYXRlbHkgcmV1c2UgaXQgZm9yIHRoZSBuZXh0IHRocmVhZCBleGVjdXRpbmcgdGhpcyBtZXRob2QKIAkJICovCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsCiAJCQkJICAiKioqIENvbXBsZXRlZCBleGVjdXRpb24gb2Ygb25lIHRocmVhZCwgJWQgdGhyZWFkcyByZW1haW5pbmdcbiIsCi0JCQkJICB3YWxrX3N0YXRlLT5tZXRob2RfZGVzYy0+bWV0aG9kLgotCQkJCSAgdGhyZWFkX2NvdW50KSk7CisJCQkJICBtZXRob2RfZGVzYy0+bWV0aG9kLnRocmVhZF9jb3VudCkpOwogCX0gZWxzZSB7CiAJCS8qIFRoaXMgaXMgdGhlIG9ubHkgZXhlY3V0aW5nIHRocmVhZCBmb3IgdGhpcyBtZXRob2QgKi8KIApAQCAtNTMzLDIyICs1ODcsMjAgQEAKIAkJICogVGhpcyBjb2RlIGlzIGhlcmUgYmVjYXVzZSB3ZSBtdXN0IHdhaXQgdW50aWwgdGhlIGxhc3QgdGhyZWFkIGV4aXRzCiAJCSAqIGJlZm9yZSBjcmVhdGluZyB0aGUgc3luY2hyb25pemF0aW9uIHNlbWFwaG9yZS4KIAkJICovCi0JCWlmICgod2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MtPm1ldGhvZC5jb25jdXJyZW5jeSA9PSAxKSAmJgotCQkgICAgKCF3YWxrX3N0YXRlLT5tZXRob2RfZGVzYy0+bWV0aG9kLnNlbWFwaG9yZSkpIHsKKwkJaWYgKChtZXRob2RfZGVzYy0+bWV0aG9kLmNvbmN1cnJlbmN5ID09IDEpICYmCisJCSAgICAoIW1ldGhvZF9kZXNjLT5tZXRob2Quc2VtYXBob3JlKSkgewogCQkJc3RhdHVzID0gYWNwaV9vc19jcmVhdGVfc2VtYXBob3JlKDEsIDEsCi0JCQkJCQkJICAmd2Fsa19zdGF0ZS0+Ci0JCQkJCQkJICBtZXRob2RfZGVzYy0+bWV0aG9kLgorCQkJCQkJCSAgJm1ldGhvZF9kZXNjLT5tZXRob2QuCiAJCQkJCQkJICBzZW1hcGhvcmUpOwogCQl9CiAKIAkJLyogTm8gbW9yZSB0aHJlYWRzLCB3ZSBjYW4gZnJlZSB0aGUgb3duZXJfaWQgKi8KIAotCQlhY3BpX3V0X3JlbGVhc2Vfb3duZXJfaWQoJndhbGtfc3RhdGUtPm1ldGhvZF9kZXNjLT5tZXRob2QuCi0JCQkJCSBvd25lcl9pZCk7CisJCWFjcGlfdXRfcmVsZWFzZV9vd25lcl9pZCgmbWV0aG9kX2Rlc2MtPm1ldGhvZC5vd25lcl9pZCk7CiAJfQogCiAgICAgICBleGl0OgotCSh2b2lkKWFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9QQVJTRVIpOworCSh2b2lkKWFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9DT05UUk9MX01FVEhPRCk7CiAJcmV0dXJuX1ZPSUQ7CiB9CiAKQEAgLTU4MSw3ICs2MzMsNyBAQAogCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpvcDsKIAlzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX3BhcnNlX21ldGhvZCIsIG5vZGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX3BhcnNlX21ldGhvZCwgbm9kZSk7CiAKIAkvKiBQYXJhbWV0ZXIgVmFsaWRhdGlvbiAqLwogCkBAIC01OTAsNyArNjQyLDcgQEAKIAl9CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAotCQkJICAiKioqKiBQYXJzaW5nIFslNC40c10gKioqKiBuYW1lZF9vYmo9JXBcbiIsCisJCQkgICIqKioqIFBhcnNpbmcgWyU0LjRzXSAqKioqIE5hbWVkT2JqPSVwXG4iLAogCQkJICBhY3BpX3V0X2dldF9ub2RlX25hbWUobm9kZSksIG5vZGUpKTsKIAogCS8qIEV4dHJhY3QgdGhlIG1ldGhvZCBvYmplY3QgZnJvbSB0aGUgbWV0aG9kIE5vZGUgKi8KQEAgLTY2OSw3ICs3MjEsNyBAQAogCX0KIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfUEFSU0UsCi0JCQkgICIqKioqIFslNC40c10gUGFyc2VkICoqKiogbmFtZWRfb2JqPSVwIE9wPSVwXG4iLAorCQkJICAiKioqKiBbJTQuNHNdIFBhcnNlZCAqKioqIE5hbWVkT2JqPSVwIE9wPSVwXG4iLAogCQkJICBhY3BpX3V0X2dldF9ub2RlX25hbWUobm9kZSksIG5vZGUsIG9wKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNtdGhkYXQuYyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzbXRoZGF0LmMKaW5kZXggYzAyNTY3NC4uNDU5MTYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNtdGhkYXQuYworKysgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc210aGRhdC5jCkBAIC04MSw3ICs4MSw3IEBACiAgKiAgICAgICAgICAgICAgc3BlY2lhbCBkYXRhIHR5cGVzLgogICoKICAqIE5PVEVTOiAgICAgICB3YWxrX3N0YXRlIGZpZWxkcyBhcmUgaW5pdGlhbGl6ZWQgdG8gemVybyBieSB0aGUKLSAqICAgICAgICAgICAgICBBQ1BJX01FTV9DQUxMT0NBVEUoKS4KKyAqICAgICAgICAgICAgICBBQ1BJX0FMTE9DQVRFX1pFUk9FRCgpLgogICoKICAqICAgICAgICAgICAgICBBIHBzZXVkby1OYW1lc3BhY2UgTm9kZSBpcyBhc3NpZ25lZCB0byBlYWNoIGFyZ3VtZW50IGFuZCBsb2NhbAogICogICAgICAgICAgICAgIHNvIHRoYXQgcmVmX29mKCkgY2FuIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIE5vZGUuCkBAIC05Miw3ICs5Miw3IEBACiB7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19tZXRob2RfZGF0YV9pbml0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19tZXRob2RfZGF0YV9pbml0KTsKIAogCS8qIEluaXQgdGhlIG1ldGhvZCBhcmd1bWVudHMgKi8KIApAQCAtMTAwLDEwICsxMDAsMTAgQEAKIAkJQUNQSV9NT1ZFXzMyX1RPXzMyKCZ3YWxrX3N0YXRlLT5hcmd1bWVudHNbaV0ubmFtZSwKIAkJCQkgICBOQU1FT0ZfQVJHX05URSk7CiAJCXdhbGtfc3RhdGUtPmFyZ3VtZW50c1tpXS5uYW1lLmludGVnZXIgfD0gKGkgPDwgMjQpOwotCQl3YWxrX3N0YXRlLT5hcmd1bWVudHNbaV0uZGVzY3JpcHRvciA9IEFDUElfREVTQ19UWVBFX05BTUVEOworCQl3YWxrX3N0YXRlLT5hcmd1bWVudHNbaV0uZGVzY3JpcHRvcl90eXBlID0gQUNQSV9ERVNDX1RZUEVfTkFNRUQ7CiAJCXdhbGtfc3RhdGUtPmFyZ3VtZW50c1tpXS50eXBlID0gQUNQSV9UWVBFX0FOWTsKLQkJd2Fsa19zdGF0ZS0+YXJndW1lbnRzW2ldLmZsYWdzID0gQU5PQkpfRU5EX09GX1BFRVJfTElTVCB8Ci0JCSAgICBBTk9CSl9NRVRIT0RfQVJHOworCQl3YWxrX3N0YXRlLT5hcmd1bWVudHNbaV0uZmxhZ3MgPQorCQkgICAgQU5PQkpfRU5EX09GX1BFRVJfTElTVCB8IEFOT0JKX01FVEhPRF9BUkc7CiAJfQogCiAJLyogSW5pdCB0aGUgbWV0aG9kIGxvY2FscyAqLwpAQCAtMTEzLDExICsxMTMsMTEgQEAKIAkJCQkgICBOQU1FT0ZfTE9DQUxfTlRFKTsKIAogCQl3YWxrX3N0YXRlLT5sb2NhbF92YXJpYWJsZXNbaV0ubmFtZS5pbnRlZ2VyIHw9IChpIDw8IDI0KTsKLQkJd2Fsa19zdGF0ZS0+bG9jYWxfdmFyaWFibGVzW2ldLmRlc2NyaXB0b3IgPQorCQl3YWxrX3N0YXRlLT5sb2NhbF92YXJpYWJsZXNbaV0uZGVzY3JpcHRvcl90eXBlID0KIAkJICAgIEFDUElfREVTQ19UWVBFX05BTUVEOwogCQl3YWxrX3N0YXRlLT5sb2NhbF92YXJpYWJsZXNbaV0udHlwZSA9IEFDUElfVFlQRV9BTlk7Ci0JCXdhbGtfc3RhdGUtPmxvY2FsX3ZhcmlhYmxlc1tpXS5mbGFncyA9IEFOT0JKX0VORF9PRl9QRUVSX0xJU1QgfAotCQkgICAgQU5PQkpfTUVUSE9EX0xPQ0FMOworCQl3YWxrX3N0YXRlLT5sb2NhbF92YXJpYWJsZXNbaV0uZmxhZ3MgPQorCQkgICAgQU5PQkpfRU5EX09GX1BFRVJfTElTVCB8IEFOT0JKX01FVEhPRF9MT0NBTDsKIAl9CiAKIAlyZXR1cm5fVk9JRDsKQEAgLTE0MCw3ICsxNDAsNyBAQAogewogCXUzMiBpbmRleDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX21ldGhvZF9kYXRhX2RlbGV0ZV9hbGwiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX21ldGhvZF9kYXRhX2RlbGV0ZV9hbGwpOwogCiAJLyogRGV0YWNoIHRoZSBsb2NhbHMgKi8KIApAQCAtMTk5LDcgKzE5OSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXUzMiBpbmRleCA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfbWV0aG9kX2RhdGFfaW5pdF9hcmdzIiwgcGFyYW1zKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19tZXRob2RfZGF0YV9pbml0X2FyZ3MsIHBhcmFtcyk7CiAKIAlpZiAoIXBhcmFtcykgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCkBAIC0yNTEsNyArMjUxLDcgQEAKIAkJCSAgICAgc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSwKIAkJCSAgICAgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKipub2RlKQogewotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX21ldGhvZF9kYXRhX2dldF9ub2RlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19tZXRob2RfZGF0YV9nZXRfbm9kZSk7CiAKIAkvKgogCSAqIE1ldGhvZCBMb2NhbHMgYW5kIEFyZ3VtZW50cyBhcmUgc3VwcG9ydGVkCkBAIC0zMTgsMTAgKzMxOCwxMCBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX21ldGhvZF9kYXRhX3NldF92YWx1ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfbWV0aG9kX2RhdGFfc2V0X3ZhbHVlKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKLQkJCSAgIm5ld19vYmogJXAgT3Bjb2RlICVYLCBSZWZzPSVkIFslc11cbiIsIG9iamVjdCwKKwkJCSAgIk5ld09iaiAlcCBPcGNvZGUgJVgsIFJlZnM9JWQgWyVzXVxuIiwgb2JqZWN0LAogCQkJICBvcGNvZGUsIG9iamVjdC0+Y29tbW9uLnJlZmVyZW5jZV9jb3VudCwKIAkJCSAgYWNwaV91dF9nZXRfdHlwZV9uYW1lKG9iamVjdC0+Y29tbW9uLnR5cGUpKSk7CiAKQEAgLTMzNiw3ICszMzYsNyBAQAogCSAqIEluY3JlbWVudCByZWYgY291bnQgc28gb2JqZWN0IGNhbid0IGJlIGRlbGV0ZWQgd2hpbGUgaW5zdGFsbGVkLgogCSAqIE5PVEU6IFdlIGRvIG5vdCBjb3B5IHRoZSBvYmplY3QgaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNhbGwgYnkKIAkgKiByZWZlcmVuY2Ugc2VtYW50aWNzIG9mIEFDUEkgQ29udHJvbCBNZXRob2QgaW52b2NhdGlvbi4KLQkgKiAoU2VlIEFDUEkgc3BlY2lmaWNhdGlvbiAyLjBfYykKKwkgKiAoU2VlIEFDUEkgU3BlY2lmaWNhdGlvbiAyLjBfYykKIAkgKi8KIAlhY3BpX3V0X2FkZF9yZWZlcmVuY2Uob2JqZWN0KTsKIApAQCAtMzUxLDcgKzM1MSw3IEBACiAgKiBGVU5DVElPTjogICAgYWNwaV9kc19tZXRob2RfZGF0YV9nZXRfdmFsdWUKICAqCiAgKiBQQVJBTUVURVJTOiAgT3Bjb2RlICAgICAgICAgICAgICAtIEVpdGhlciBBTUxfTE9DQUxfT1Agb3IgQU1MX0FSR19PUAotICogICAgICAgICAgICAgIEluZGV4ICAgICAgICAgICAgICAgLSB3aGljaCBsb2NhbF92YXIgb3IgYXJndW1lbnQgdG8gZ2V0CisgKiAgICAgICAgICAgICAgSW5kZXggICAgICAgICAgICAgICAtIFdoaWNoIGxvY2FsX3ZhciBvciBhcmd1bWVudCB0byBnZXQKICAqICAgICAgICAgICAgICB3YWxrX3N0YXRlICAgICAgICAgIC0gQ3VycmVudCB3YWxrIHN0YXRlIG9iamVjdAogICogICAgICAgICAgICAgIGRlc3RfZGVzYyAgICAgICAgICAgLSBXaGVyZSBBcmcgb3IgTG9jYWwgdmFsdWUgaXMgcmV0dXJuZWQKICAqCkBAIC0zNzIsNyArMzcyLDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmplY3Q7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19tZXRob2RfZGF0YV9nZXRfdmFsdWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX21ldGhvZF9kYXRhX2dldF92YWx1ZSk7CiAKIAkvKiBWYWxpZGF0ZSB0aGUgb2JqZWN0IGRlc2NyaXB0b3IgKi8KIApAQCAtNDU5LDcgKzQ1OSw3IEBACiAgKiBGVU5DVElPTjogICAgYWNwaV9kc19tZXRob2RfZGF0YV9kZWxldGVfdmFsdWUKICAqCiAgKiBQQVJBTUVURVJTOiAgT3Bjb2RlICAgICAgICAgICAgICAtIEVpdGhlciBBTUxfTE9DQUxfT1Agb3IgQU1MX0FSR19PUAotICogICAgICAgICAgICAgIEluZGV4ICAgICAgICAgICAgICAgLSB3aGljaCBsb2NhbF92YXIgb3IgYXJndW1lbnQgdG8gZGVsZXRlCisgKiAgICAgICAgICAgICAgSW5kZXggICAgICAgICAgICAgICAtIFdoaWNoIGxvY2FsX3ZhciBvciBhcmd1bWVudCB0byBkZWxldGUKICAqICAgICAgICAgICAgICB3YWxrX3N0YXRlICAgICAgICAgIC0gQ3VycmVudCB3YWxrIHN0YXRlIG9iamVjdAogICoKICAqIFJFVFVSTjogICAgICBOb25lCkBAIC00NzcsNyArNDc3LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmplY3Q7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19tZXRob2RfZGF0YV9kZWxldGVfdmFsdWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX21ldGhvZF9kYXRhX2RlbGV0ZV92YWx1ZSk7CiAKIAkvKiBHZXQgdGhlIG5hbWVzcGFjZSBub2RlIGZvciB0aGUgYXJnL2xvY2FsICovCiAKQEAgLTUzOCw3ICs1MzgsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKmN1cnJlbnRfb2JqX2Rlc2M7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqbmV3X29ial9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfc3RvcmVfb2JqZWN0X3RvX2xvY2FsIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19zdG9yZV9vYmplY3RfdG9fbG9jYWwpOwogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgIk9wY29kZT0lWCBJbmRleD0lZCBPYmo9JXBcbiIsCiAJCQkgIG9wY29kZSwgaW5kZXgsIG9ial9kZXNjKSk7CiAKQEAgLTYxNCw3ICs2MTQsNyBAQAogCQkJICAgICYmIChjdXJyZW50X29ial9kZXNjLT5yZWZlcmVuY2Uub3Bjb2RlID09CiAJCQkJQU1MX1JFRl9PRl9PUCkpIHsKIAkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCi0JCQkJCQkgICJBcmcgKCVwKSBpcyBhbiBvYmpfcmVmKE5vZGUpLCBzdG9yaW5nIGluIG5vZGUgJXBcbiIsCisJCQkJCQkgICJBcmcgKCVwKSBpcyBhbiBPYmpSZWYoTm9kZSksIHN0b3JpbmcgaW4gbm9kZSAlcFxuIiwKIAkJCQkJCSAgbmV3X29ial9kZXNjLAogCQkJCQkJICBjdXJyZW50X29ial9kZXNjKSk7CiAKQEAgLTY4OCw3ICs2ODgsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9iamVjdDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX21ldGhvZF9kYXRhX2dldF90eXBlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19tZXRob2RfZGF0YV9nZXRfdHlwZSk7CiAKIAkvKiBHZXQgdGhlIG5hbWVzcGFjZSBub2RlIGZvciB0aGUgYXJnL2xvY2FsICovCiAKQEAgLTcwMSw2ICs3MDEsNyBAQAogCiAJb2JqZWN0ID0gYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG5vZGUpOwogCWlmICghb2JqZWN0KSB7CisKIAkJLyogVW5pbml0aWFsaXplZCBsb2NhbC9hcmcsIHJldHVybiBUWVBFX0FOWSAqLwogCiAJCXJldHVybl9WQUxVRShBQ1BJX1RZUEVfQU5ZKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzb2JqZWN0LmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc29iamVjdC5jCmluZGV4IDhiMjFmMGYuLjcyMTkwYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzb2JqZWN0LmMKKysrIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNvYmplY3QuYwpAQCAtODEsNyArODEsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX2J1aWxkX2ludGVybmFsX29iamVjdCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfYnVpbGRfaW50ZXJuYWxfb2JqZWN0KTsKIAogCSpvYmpfZGVzY19wdHIgPSBOVUxMOwogCWlmIChvcC0+Y29tbW9uLmFtbF9vcGNvZGUgPT0gQU1MX0lOVF9OQU1FUEFUSF9PUCkgewpAQCAtMTAzLDYgKzEwMyw3IEBACiAJCQkJCQkJCQkgY29tbW9uLgogCQkJCQkJCQkJIG5vZGUpKSk7CiAJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkJCS8qIENoZWNrIGlmIHdlIGFyZSByZXNvbHZpbmcgYSBuYW1lZCByZWZlcmVuY2Ugd2l0aGluIGEgcGFja2FnZSAqLwogCiAJCQkJaWYgKChzdGF0dXMgPT0gQUVfTk9UX0ZPVU5EKQpAQCAtMTg2LDcgKzE4Nyw3IEBACiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKmJ5dGVfbGlzdDsKIAl1MzIgYnl0ZV9saXN0X2xlbmd0aCA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19idWlsZF9pbnRlcm5hbF9idWZmZXJfb2JqIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19idWlsZF9pbnRlcm5hbF9idWZmZXJfb2JqKTsKIAogCS8qCiAJICogSWYgd2UgYXJlIGV2YWx1YXRpbmcgYSBOYW1lZCBidWZmZXIgb2JqZWN0ICJOYW1lICh4eHh4LCBCdWZmZXIpIi4KQEAgLTE5NSw2ICsxOTYsNyBAQAogCSAqLwogCW9ial9kZXNjID0gKm9ial9kZXNjX3B0cjsKIAlpZiAoIW9ial9kZXNjKSB7CisKIAkJLyogQ3JlYXRlIGEgbmV3IGJ1ZmZlciBvYmplY3QgKi8KIAogCQlvYmpfZGVzYyA9IGFjcGlfdXRfY3JlYXRlX2ludGVybmFsX29iamVjdChBQ1BJX1RZUEVfQlVGRkVSKTsKQEAgLTI0Myw3ICsyNDUsNyBAQAogCQkJCSAgIkJ1ZmZlciBkZWZpbmVkIHdpdGggemVybyBsZW5ndGggaW4gQU1MLCBjcmVhdGluZ1xuIikpOwogCX0gZWxzZSB7CiAJCW9ial9kZXNjLT5idWZmZXIucG9pbnRlciA9Ci0JCSAgICBBQ1BJX01FTV9DQUxMT0NBVEUob2JqX2Rlc2MtPmJ1ZmZlci5sZW5ndGgpOworCQkgICAgQUNQSV9BTExPQ0FURV9aRVJPRUQob2JqX2Rlc2MtPmJ1ZmZlci5sZW5ndGgpOwogCQlpZiAoIW9ial9kZXNjLT5idWZmZXIucG9pbnRlcikgewogCQkJYWNwaV91dF9kZWxldGVfb2JqZWN0X2Rlc2Mob2JqX2Rlc2MpOwogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CkBAIC0yOTEsNyArMjkzLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19idWlsZF9pbnRlcm5hbF9wYWNrYWdlX29iaiIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfYnVpbGRfaW50ZXJuYWxfcGFja2FnZV9vYmopOwogCiAJLyogRmluZCB0aGUgcGFyZW50IG9mIGEgcG9zc2libHkgbmVzdGVkIHBhY2thZ2UgKi8KIApAQCAtMzM5LDkgKzM0MSwxMCBAQAogCSAqIGluZGl2aWR1YWwgb2JqZWN0cykuIEFkZCBhbiBleHRyYSBwb2ludGVyIHNsb3Qgc28KIAkgKiB0aGF0IHRoZSBsaXN0IGlzIGFsd2F5cyBudWxsIHRlcm1pbmF0ZWQuCiAJICovCi0Jb2JqX2Rlc2MtPnBhY2thZ2UuZWxlbWVudHMgPSBBQ1BJX01FTV9DQUxMT0NBVEUoKChhY3BpX3NpemUpIG9ial9kZXNjLT4KLQkJCQkJCQkgcGFja2FnZS5jb3VudCArCi0JCQkJCQkJIDEpICogc2l6ZW9mKHZvaWQgKikpOworCW9ial9kZXNjLT5wYWNrYWdlLmVsZW1lbnRzID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoKChhY3BpX3NpemUpCisJCQkJCQkJICAgb2JqX2Rlc2MtPnBhY2thZ2UuCisJCQkJCQkJICAgY291bnQgKworCQkJCQkJCSAgIDEpICogc2l6ZW9mKHZvaWQgKikpOwogCiAJaWYgKCFvYmpfZGVzYy0+cGFja2FnZS5lbGVtZW50cykgewogCQlhY3BpX3V0X2RlbGV0ZV9vYmplY3RfZGVzYyhvYmpfZGVzYyk7CkBAIC0zNTUsNiArMzU4LDcgQEAKIAlhcmcgPSBhcmctPmNvbW1vbi5uZXh0OwogCWZvciAoaSA9IDA7IGFyZzsgaSsrKSB7CiAJCWlmIChhcmctPmNvbW1vbi5hbWxfb3Bjb2RlID09IEFNTF9JTlRfUkVUVVJOX1ZBTFVFX09QKSB7CisKIAkJCS8qIE9iamVjdCAocGFja2FnZSBvciBidWZmZXIpIGlzIGFscmVhZHkgYnVpbHQgKi8KIAogCQkJb2JqX2Rlc2MtPnBhY2thZ2UuZWxlbWVudHNbaV0gPQpAQCAtMzk2LDcgKzQwMCw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX2NyZWF0ZV9ub2RlIiwgb3ApOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2NyZWF0ZV9ub2RlLCBvcCk7CiAKIAkvKgogCSAqIEJlY2F1c2Ugb2YgdGhlIGV4ZWN1dGlvbiBwYXNzIHRocm91Z2ggdGhlIG5vbi1jb250cm9sLW1ldGhvZApAQCAtNDA4LDYgKzQxMiw3IEBACiAJfQogCiAJaWYgKCFvcC0+Y29tbW9uLnZhbHVlLmFyZykgeworCiAJCS8qIE5vIGFyZ3VtZW50cywgdGhlcmUgaXMgbm90aGluZyB0byBkbyAqLwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC00NjQsMTEgKzQ2OSwxMiBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfaW5pdF9vYmplY3RfZnJvbV9vcCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfaW5pdF9vYmplY3RfZnJvbV9vcCk7CiAKIAlvYmpfZGVzYyA9ICpyZXRfb2JqX2Rlc2M7CiAJb3BfaW5mbyA9IGFjcGlfcHNfZ2V0X29wY29kZV9pbmZvKG9wY29kZSk7CiAJaWYgKG9wX2luZm8tPmNsYXNzID09IEFNTF9DTEFTU19VTktOT1dOKSB7CisKIAkJLyogVW5rbm93biBvcGNvZGUgKi8KIAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfVFlQRSk7CkBAIC02MjYsNiArNjMyLDcgQEAKIAkJZGVmYXVsdDoJLyogT3RoZXIgbGl0ZXJhbHMsIGV0Yy4uICovCiAKIAkJCWlmIChvcC0+Y29tbW9uLmFtbF9vcGNvZGUgPT0gQU1MX0lOVF9OQU1FUEFUSF9PUCkgeworCiAJCQkJLyogTm9kZSB3YXMgc2F2ZWQgaW4gT3AgKi8KIAogCQkJCW9ial9kZXNjLT5yZWZlcmVuY2Uubm9kZSA9IG9wLT5jb21tb24ubm9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzb3Bjb2RlLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc29wY29kZS5jCmluZGV4IDYyMjljMTAuLjViOTc0YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzb3Bjb2RlLmMKKysrIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHNvcGNvZGUuYwpAQCAtOTEsNyArOTEsNyBAQAogCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpvcDsKIAlzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfZXhlY3V0ZV9hcmd1bWVudHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX2V4ZWN1dGVfYXJndW1lbnRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgYSBuZXcgcGFyc2VyIG9wIHRvIGJlIHRoZSByb290IG9mIHRoZSBwYXJzZWQgdHJlZQpAQCAtMTkzLDcgKzE5Myw3IEBACiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX2dldF9idWZmZXJfZmllbGRfYXJndW1lbnRzIiwgb2JqX2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2dldF9idWZmZXJfZmllbGRfYXJndW1lbnRzLCBvYmpfZGVzYyk7CiAKIAlpZiAob2JqX2Rlc2MtPmNvbW1vbi5mbGFncyAmIEFPUE9CSl9EQVRBX1ZBTElEKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC0yMDYsNyArMjA2LDcgQEAKIAogCUFDUElfREVCVUdfRVhFQyhhY3BpX3V0X2Rpc3BsYXlfaW5pdF9wYXRobmFtZQogCQkJKEFDUElfVFlQRV9CVUZGRVJfRklFTEQsIG5vZGUsIE5VTEwpKTsKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsICJbJTQuNHNdIGJ1ZmZlcl9maWVsZCBBcmcgSW5pdFxuIiwKKwlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsICJbJTQuNHNdIEJ1ZmZlckZpZWxkIEFyZyBJbml0XG4iLAogCQkJICBhY3BpX3V0X2dldF9ub2RlX25hbWUobm9kZSkpKTsKIAogCS8qIEV4ZWN1dGUgdGhlIEFNTCBjb2RlIGZvciB0aGUgdGVybV9hcmcgYXJndW1lbnRzICovCkBAIC0yMzUsNyArMjM1LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfZ2V0X2J1ZmZlcl9hcmd1bWVudHMiLCBvYmpfZGVzYyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfZ2V0X2J1ZmZlcl9hcmd1bWVudHMsIG9ial9kZXNjKTsKIAogCWlmIChvYmpfZGVzYy0+Y29tbW9uLmZsYWdzICYgQU9QT0JKX0RBVEFfVkFMSUQpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKQEAgLTI3OSw3ICsyNzksNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19nZXRfcGFja2FnZV9hcmd1bWVudHMiLCBvYmpfZGVzYyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfZ2V0X3BhY2thZ2VfYXJndW1lbnRzLCBvYmpfZGVzYyk7CiAKIAlpZiAob2JqX2Rlc2MtPmNvbW1vbi5mbGFncyAmIEFPUE9CSl9EQVRBX1ZBTElEKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC0zMjQsNyArMzI0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqZXh0cmFfZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19nZXRfcmVnaW9uX2FyZ3VtZW50cyIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19nZXRfcmVnaW9uX2FyZ3VtZW50cywgb2JqX2Rlc2MpOwogCiAJaWYgKG9ial9kZXNjLT5yZWdpb24uZmxhZ3MgJiBBT1BPQkpfREFUQV9WQUxJRCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwpAQCAtMzQyLDggKzM0Miw3IEBACiAJQUNQSV9ERUJVR19FWEVDKGFjcGlfdXRfZGlzcGxheV9pbml0X3BhdGhuYW1lCiAJCQkoQUNQSV9UWVBFX1JFR0lPTiwgbm9kZSwgTlVMTCkpOwogCi0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJICAiWyU0LjRzXSBvcF9yZWdpb24gQXJnIEluaXQgYXQgQU1MICVwXG4iLAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgIlslNC40c10gT3BSZWdpb24gQXJnIEluaXQgYXQgQU1MICVwXG4iLAogCQkJICBhY3BpX3V0X2dldF9ub2RlX25hbWUobm9kZSksCiAJCQkgIGV4dHJhX2Rlc2MtPmV4dHJhLmFtbF9zdGFydCkpOwogCkBAIC0zNTIsNiArMzUxLDI4IEBACiAJc3RhdHVzID0gYWNwaV9kc19leGVjdXRlX2FyZ3VtZW50cyhub2RlLCBhY3BpX25zX2dldF9wYXJlbnRfbm9kZShub2RlKSwKIAkJCQkJICAgZXh0cmFfZGVzYy0+ZXh0cmEuYW1sX2xlbmd0aCwKIAkJCQkJICAgZXh0cmFfZGVzYy0+ZXh0cmEuYW1sX3N0YXJ0KTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJfQorCisJLyogVmFsaWRhdGUgdGhlIHJlZ2lvbiBhZGRyZXNzL2xlbmd0aCB2aWEgdGhlIGhvc3QgT1MgKi8KKworCXN0YXR1cyA9IGFjcGlfb3NfdmFsaWRhdGVfYWRkcmVzcyhvYmpfZGVzYy0+cmVnaW9uLnNwYWNlX2lkLAorCQkJCQkgIG9ial9kZXNjLT5yZWdpb24uYWRkcmVzcywKKwkJCQkJICAoYWNwaV9zaXplKSBvYmpfZGVzYy0+cmVnaW9uLmxlbmd0aCk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCS8qCisJCSAqIEludmFsaWQgYWRkcmVzcy9sZW5ndGguIFdlIHdpbGwgZW1pdCBhbiBlcnJvciBtZXNzYWdlIGFuZCBtYXJrCisJCSAqIHRoZSByZWdpb24gYXMgaW52YWxpZCwgc28gdGhhdCBpdCB3aWxsIGNhdXNlIGFuIGFkZGl0aW9uYWwgZXJyb3IgaWYKKwkJICogaXQgaXMgZXZlciB1c2VkLiBUaGVuIHJldHVybiBBRV9PSy4KKwkJICovCisJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCisJCQkJIkR1cmluZyBhZGRyZXNzIHZhbGlkYXRpb24gb2YgT3BSZWdpb24gWyU0LjRzXSIsCisJCQkJbm9kZS0+bmFtZS5hc2NpaSkpOworCQlvYmpfZGVzYy0+Y29tbW9uLmZsYWdzIHw9IEFPUE9CSl9JTlZBTElEOworCQlzdGF0dXMgPSBBRV9PSzsKKwl9CisKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIApAQCAtNDExLDcgKzQzMiw3IEBACiAJdTggZmllbGRfZmxhZ3M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX2luaXRfYnVmZmVyX2ZpZWxkIiwgb2JqX2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2luaXRfYnVmZmVyX2ZpZWxkLCBvYmpfZGVzYyk7CiAKIAkvKiBIb3N0IG9iamVjdCBtdXN0IGJlIGEgQnVmZmVyICovCiAKQEAgLTQ1Nyw3ICs0NzgsNyBAQAogCiAJCWlmIChiaXRfY291bnQgPT0gMCkgewogCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCQkgICAgIkF0dGVtcHQgdG8gY3JlYXRlX2ZpZWxkIG9mIGxlbmd0aCB6ZXJvIikpOworCQkJCSAgICAiQXR0ZW1wdCB0byBDcmVhdGVGaWVsZCBvZiBsZW5ndGggemVybyIpKTsKIAkJCXN0YXR1cyA9IEFFX0FNTF9PUEVSQU5EX1ZBTFVFOwogCQkJZ290byBjbGVhbnVwOwogCQl9CkBAIC01OTUsNyArNjE2LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqbmV4dF9vcDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19ldmFsX2J1ZmZlcl9maWVsZF9vcGVyYW5kcyIsIG9wKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19ldmFsX2J1ZmZlcl9maWVsZF9vcGVyYW5kcywgb3ApOwogCiAJLyoKIAkgKiBUaGlzIGlzIHdoZXJlIHdlIGV2YWx1YXRlIHRoZSBhZGRyZXNzIGFuZCBsZW5ndGggZmllbGRzIG9mIHRoZQpAQCAtNjI3LDcgKzY0OCw3IEBACiAJQUNQSV9EVU1QX09QRVJBTkRTKEFDUElfV0FMS19PUEVSQU5EUywgQUNQSV9JTU9ERV9FWEVDVVRFLAogCQkJICAgYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUob3AtPmNvbW1vbi5hbWxfb3Bjb2RlKSwKIAkJCSAgIHdhbGtfc3RhdGUtPm51bV9vcGVyYW5kcywKLQkJCSAgICJhZnRlciBhY3BpX2V4X3Jlc29sdmVfb3BlcmFuZHMiKTsKKwkJCSAgICJhZnRlciBBY3BpRXhSZXNvbHZlT3BlcmFuZHMiKTsKIAogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiKCVzKSBiYWQgb3BlcmFuZChzKSAoJVgpIiwKQEAgLTY0MCw2ICs2NjEsNyBAQAogCS8qIEluaXRpYWxpemUgdGhlIEJ1ZmZlciBGaWVsZCAqLwogCiAJaWYgKG9wLT5jb21tb24uYW1sX29wY29kZSA9PSBBTUxfQ1JFQVRFX0ZJRUxEX09QKSB7CisKIAkJLyogTk9URTogU2xpZ2h0bHkgZGlmZmVyZW50IG9wZXJhbmRzIGZvciB0aGlzIG9wY29kZSAqLwogCiAJCXN0YXR1cyA9CkBAIC02ODUsNyArNzA3LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqbmV4dF9vcDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19ldmFsX3JlZ2lvbl9vcGVyYW5kcyIsIG9wKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19ldmFsX3JlZ2lvbl9vcGVyYW5kcywgb3ApOwogCiAJLyoKIAkgKiBUaGlzIGlzIHdoZXJlIHdlIGV2YWx1YXRlIHRoZSBhZGRyZXNzIGFuZCBsZW5ndGggZmllbGRzIG9mIHRoZQpAQCAtNzE4LDcgKzc0MCw3IEBACiAKIAlBQ1BJX0RVTVBfT1BFUkFORFMoQUNQSV9XQUxLX09QRVJBTkRTLCBBQ1BJX0lNT0RFX0VYRUNVVEUsCiAJCQkgICBhY3BpX3BzX2dldF9vcGNvZGVfbmFtZShvcC0+Y29tbW9uLmFtbF9vcGNvZGUpLAotCQkJICAgMSwgImFmdGVyIGFjcGlfZXhfcmVzb2x2ZV9vcGVyYW5kcyIpOworCQkJICAgMSwgImFmdGVyIEFjcGlFeFJlc29sdmVPcGVyYW5kcyIpOwogCiAJb2JqX2Rlc2MgPSBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3Qobm9kZSk7CiAJaWYgKCFvYmpfZGVzYykgewpAQCAtNzQ0LDcgKzc2Niw3IEBACiAJICAgIG9wZXJhbmRfZGVzYy0+aW50ZWdlci52YWx1ZTsKIAlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2Uob3BlcmFuZF9kZXNjKTsKIAotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgInJnbl9vYmogJXAgQWRkciAlOC44WCU4LjhYIExlbiAlWFxuIiwKKwlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsICJSZ25PYmogJXAgQWRkciAlOC44WCU4LjhYIExlbiAlWFxuIiwKIAkJCSAgb2JqX2Rlc2MsCiAJCQkgIEFDUElfRk9STUFUX1VJTlQ2NChvYmpfZGVzYy0+cmVnaW9uLmFkZHJlc3MpLAogCQkJICBvYmpfZGVzYy0+cmVnaW9uLmxlbmd0aCkpOwpAQCAtNzgwLDcgKzgwMiw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqYXJnX2Rlc2M7CiAJdTMyIGxlbmd0aDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX2V2YWxfZGF0YV9vYmplY3Rfb3BlcmFuZHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX2V2YWxfZGF0YV9vYmplY3Rfb3BlcmFuZHMpOwogCiAJLyogVGhlIGZpcnN0IG9wZXJhbmQgKGZvciBhbGwgb2YgdGhlc2UgZGF0YSBvYmplY3RzKSBpcyB0aGUgbGVuZ3RoICovCiAKQEAgLTg3NCw3ICs4OTYsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqY29udHJvbF9zdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfZXhlY19iZWdpbl9jb250cm9sX29wIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX2V4ZWNfYmVnaW5fY29udHJvbF9vcCk7CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILCAiT3A9JXAgT3Bjb2RlPSUyLjJYIFN0YXRlPSVwXG4iLCBvcCwKIAkJCSAgb3AtPmNvbW1vbi5hbWxfb3Bjb2RlLCB3YWxrX3N0YXRlKSk7CkBAIC05NTIsNyArOTc0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKmNvbnRyb2xfc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImRzX2V4ZWNfZW5kX2NvbnRyb2xfb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfZXhlY19lbmRfY29udHJvbF9vcCk7CiAKIAlzd2l0Y2ggKG9wLT5jb21tb24uYW1sX29wY29kZSkgewogCWNhc2UgQU1MX0lGX09QOgpAQCAtOTg0LDYgKzEwMDYsNyBAQAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILCAiW1dISUxFX09QXSBPcD0lcFxuIiwgb3ApKTsKIAogCQlpZiAod2Fsa19zdGF0ZS0+Y29udHJvbF9zdGF0ZS0+Y29tbW9uLnZhbHVlKSB7CisKIAkJCS8qIFByZWRpY2F0ZSB3YXMgdHJ1ZSwgZ28gYmFjayBhbmQgZXZhbHVhdGUgaXQgYWdhaW4hICovCiAKIAkJCXN0YXR1cyA9IEFFX0NUUkxfUEVORElORzsKQEAgLTEwMTQsNiArMTAzNyw3IEBACiAJCSAqIGhhcyBiZWVuIGJ1YmJsZWQgdXAgdGhlIHRyZWUKIAkJICovCiAJCWlmIChvcC0+Y29tbW9uLnZhbHVlLmFyZykgeworCiAJCQkvKiBTaW5jZSB3ZSBoYXZlIGEgcmVhbCBSZXR1cm4oKSwgZGVsZXRlIGFueSBpbXBsaWNpdCByZXR1cm4gKi8KIAogCQkJYWNwaV9kc19jbGVhcl9pbXBsaWNpdF9yZXR1cm4od2Fsa19zdGF0ZSk7CkBAIC0xMDQ3LDYgKzEwNzEsNyBAQAogCQkJd2Fsa19zdGF0ZS0+cmV0dXJuX2Rlc2MgPSB3YWxrX3N0YXRlLT5vcGVyYW5kc1swXTsKIAkJfSBlbHNlIGlmICgod2Fsa19zdGF0ZS0+cmVzdWx0cykgJiYKIAkJCSAgICh3YWxrX3N0YXRlLT5yZXN1bHRzLT5yZXN1bHRzLm51bV9yZXN1bHRzID4gMCkpIHsKKwogCQkJLyogU2luY2Ugd2UgaGF2ZSBhIHJlYWwgUmV0dXJuKCksIGRlbGV0ZSBhbnkgaW1wbGljaXQgcmV0dXJuICovCiAKIAkJCWFjcGlfZHNfY2xlYXJfaW1wbGljaXRfcmV0dXJuKHdhbGtfc3RhdGUpOwpAQCAtMTA5NSw3ICsxMTIwLDcgQEAKIAkJfQogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsCi0JCQkJICAiQ29tcGxldGVkIFJFVFVSTl9PUCBTdGF0ZT0lcCwgcmV0X3ZhbD0lcFxuIiwKKwkJCQkgICJDb21wbGV0ZWQgUkVUVVJOX09QIFN0YXRlPSVwLCBSZXRWYWw9JXBcbiIsCiAJCQkJICB3YWxrX3N0YXRlLCB3YWxrX3N0YXRlLT5yZXR1cm5fZGVzYykpOwogCiAJCS8qIEVuZCB0aGUgY29udHJvbCBtZXRob2QgZXhlY3V0aW9uIHJpZ2h0IG5vdyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN1dGlscy5jIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN1dGlscy5jCmluZGV4IDUzMzU2YTUuLjA1MjMwYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2RzdXRpbHMuYworKysgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3V0aWxzLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB2b2lkIGFjcGlfZHNfY2xlYXJfaW1wbGljaXRfcmV0dXJuKHN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGUpCiB7Ci0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19jbGVhcl9pbXBsaWNpdF9yZXR1cm4iKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfY2xlYXJfaW1wbGljaXRfcmV0dXJuKTsKIAogCS8qCiAJICogU2xhY2sgbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIGZlYXR1cmUKQEAgLTExNSw3ICsxMTUsNyBAQAogYWNwaV9kc19kb19pbXBsaWNpdF9yZXR1cm4odW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmV0dXJuX2Rlc2MsCiAJCQkgICBzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlLCB1OCBhZGRfcmVmZXJlbmNlKQogewotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfZG9faW1wbGljaXRfcmV0dXJuIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX2RvX2ltcGxpY2l0X3JldHVybik7CiAKIAkvKgogCSAqIFNsYWNrIG11c3QgYmUgZW5hYmxlZCBmb3IgdGhpcyBmZWF0dXJlLCBhbmQgd2UgbXVzdApAQCAtMTcxLDcgKzE3MSw3IEBACiB7CiAJY29uc3Qgc3RydWN0IGFjcGlfb3Bjb2RlX2luZm8gKnBhcmVudF9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX2lzX3Jlc3VsdF91c2VkIiwgb3ApOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2lzX3Jlc3VsdF91c2VkLCBvcCk7CiAKIAkvKiBNdXN0IGhhdmUgYm90aCBhbiBPcCBhbmQgYSBSZXN1bHQgT2JqZWN0ICovCiAKQEAgLTIwMiw2ICsyMDIsNyBAQAogCSAqLwogCWlmICgoIW9wLT5jb21tb24ucGFyZW50KSB8fAogCSAgICAob3AtPmNvbW1vbi5wYXJlbnQtPmNvbW1vbi5hbWxfb3Bjb2RlID09IEFNTF9TQ09QRV9PUCkpIHsKKwogCQkvKiBObyBwYXJlbnQsIHRoZSByZXR1cm4gdmFsdWUgY2Fubm90IHBvc3NpYmx5IGJlIHVzZWQgKi8KIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILApAQCAtMzQwLDcgKzM0MSw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImRzX2RlbGV0ZV9yZXN1bHRfaWZfbm90X3VzZWQiLCByZXN1bHRfb2JqKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19kZWxldGVfcmVzdWx0X2lmX25vdF91c2VkLCByZXN1bHRfb2JqKTsKIAogCWlmICghb3ApIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywgIk51bGwgT3AiKSk7CkBAIC0zNTIsNiArMzUzLDcgQEAKIAl9CiAKIAlpZiAoIWFjcGlfZHNfaXNfcmVzdWx0X3VzZWQob3AsIHdhbGtfc3RhdGUpKSB7CisKIAkJLyogTXVzdCBwb3AgdGhlIHJlc3VsdCBzdGFjayAob2JqX2Rlc2Mgc2hvdWxkIGJlIGVxdWFsIHRvIHJlc3VsdF9vYmopICovCiAKIAkJc3RhdHVzID0gYWNwaV9kc19yZXN1bHRfcG9wKCZvYmpfZGVzYywgd2Fsa19zdGF0ZSk7CkBAIC0zODIsNyArMzg0LDcgQEAKIAl1MzIgaTsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19yZXNvbHZlX29wZXJhbmRzIiwgd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfcmVzb2x2ZV9vcGVyYW5kcywgd2Fsa19zdGF0ZSk7CiAKIAkvKgogCSAqIEF0dGVtcHQgdG8gcmVzb2x2ZSBlYWNoIG9mIHRoZSB2YWxpZCBvcGVyYW5kcwpAQCAtNDE3LDcgKzQxOSw3IEBACiB7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfY2xlYXJfb3BlcmFuZHMiLCB3YWxrX3N0YXRlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19jbGVhcl9vcGVyYW5kcywgd2Fsa19zdGF0ZSk7CiAKIAkvKiBSZW1vdmUgYSByZWZlcmVuY2Ugb24gZWFjaCBvcGVyYW5kIG9uIHRoZSBzdGFjayAqLwogCkBAIC00NjUsNyArNDY3LDcgQEAKIAlhY3BpX2ludGVycHJldGVyX21vZGUgaW50ZXJwcmV0ZXJfbW9kZTsKIAljb25zdCBzdHJ1Y3QgYWNwaV9vcGNvZGVfaW5mbyAqb3BfaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19jcmVhdGVfb3BlcmFuZCIsIGFyZyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfY3JlYXRlX29wZXJhbmQsIGFyZyk7CiAKIAkvKiBBIHZhbGlkIG5hbWUgbXVzdCBiZSBsb29rZWQgdXAgaW4gdGhlIG5hbWVzcGFjZSAqLwogCkBAIC00OTgsNyArNTAwLDkgQEAKIAkJICovCiAJCWlmICgod2Fsa19zdGF0ZS0+ZGVmZXJyZWRfbm9kZSkgJiYKIAkJICAgICh3YWxrX3N0YXRlLT5kZWZlcnJlZF9ub2RlLT50eXBlID09IEFDUElfVFlQRV9CVUZGRVJfRklFTEQpCi0JCSAgICAmJiAoYXJnX2luZGV4ICE9IDApKSB7CisJCSAgICAmJiAoYXJnX2luZGV4ID09CisJCQkodTMyKSAoKHdhbGtfc3RhdGUtPm9wY29kZSA9PQorCQkJCUFNTF9DUkVBVEVfRklFTERfT1ApID8gMyA6IDIpKSkgewogCQkJb2JqX2Rlc2MgPQogCQkJICAgIEFDUElfQ0FTVF9QVFIodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCwKIAkJCQkJICB3YWxrX3N0YXRlLT5kZWZlcnJlZF9ub2RlKTsKQEAgLTUyMSw2ICs1MjUsNyBAQAogCQkJICAgICYmIChwYXJlbnRfb3AtPmNvbW1vbi5hbWxfb3Bjb2RlICE9IEFNTF9SRUdJT05fT1ApCiAJCQkgICAgJiYgKHBhcmVudF9vcC0+Y29tbW9uLmFtbF9vcGNvZGUgIT0KIAkJCQlBTUxfSU5UX05BTUVQQVRIX09QKSkgeworCiAJCQkJLyogRW50ZXIgbmFtZSBpbnRvIG5hbWVzcGFjZSBpZiBub3QgZm91bmQgKi8KIAogCQkJCWludGVycHJldGVyX21vZGUgPSBBQ1BJX0lNT0RFX0xPQURfUEFTUzI7CkBAIC01NzIsNyArNTc3LDcgQEAKIAogCQkvKiBGcmVlIHRoZSBuYW1lc3RyaW5nIGNyZWF0ZWQgYWJvdmUgKi8KIAotCQlBQ1BJX01FTV9GUkVFKG5hbWVfc3RyaW5nKTsKKwkJQUNQSV9GUkVFKG5hbWVfc3RyaW5nKTsKIAogCQkvKiBDaGVjayBzdGF0dXMgZnJvbSB0aGUgbG9va3VwICovCiAKQEAgLTY5Niw3ICs3MDEsNyBAQAogCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICphcmc7CiAJdTMyIGFyZ19jb3VudCA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfY3JlYXRlX29wZXJhbmRzIiwgZmlyc3RfYXJnKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihkc19jcmVhdGVfb3BlcmFuZHMsIGZpcnN0X2FyZyk7CiAKIAkvKiBGb3IgYWxsIGFyZ3VtZW50cyBpbiB0aGUgbGlzdC4uLiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dleGVjLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dleGVjLmMKaW5kZXggZjFhZjY1NS4uM2FjYmQ5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN3ZXhlYy5jCisrKyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd2V4ZWMuYwpAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgPGFjcGkvYWNpbnRlcnAuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CiAjaW5jbHVkZSA8YWNwaS9hY2RlYnVnLmg+Ci0jaW5jbHVkZSA8YWNwaS9hY2Rpc2FzbS5oPgogCiAjZGVmaW5lIF9DT01QT05FTlQgICAgICAgICAgQUNQSV9ESVNQQVRDSEVSCiBBQ1BJX01PRFVMRV9OQU1FKCJkc3dleGVjIikKQEAgLTkzLDcgKzkyLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpsb2NhbF9vYmpfZGVzYyA9IE5VTEw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZHNfZ2V0X3ByZWRpY2F0ZV92YWx1ZSIsIHdhbGtfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2dldF9wcmVkaWNhdGVfdmFsdWUsIHdhbGtfc3RhdGUpOwogCiAJd2Fsa19zdGF0ZS0+Y29udHJvbF9zdGF0ZS0+Y29tbW9uLnN0YXRlID0gMDsKIApAQCAtMTIzLDcgKzEyMiw3IEBACiAKIAlpZiAoIW9ial9kZXNjKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIk5vIHByZWRpY2F0ZSBvYmpfZGVzYz0lcCBTdGF0ZT0lcCIsCisJCQkgICAgIk5vIHByZWRpY2F0ZSBPYmpEZXNjPSVwIFN0YXRlPSVwIiwKIAkJCSAgICBvYmpfZGVzYywgd2Fsa19zdGF0ZSkpOwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfTk9fT1BFUkFORCk7CkBAIC0xNDAsNyArMTM5LDcgQEAKIAogCWlmIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShsb2NhbF9vYmpfZGVzYykgIT0gQUNQSV9UWVBFX0lOVEVHRVIpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCSAgICAiQmFkIHByZWRpY2F0ZSAobm90IGFuIGludGVnZXIpIG9ial9kZXNjPSVwIFN0YXRlPSVwIFR5cGU9JVgiLAorCQkJICAgICJCYWQgcHJlZGljYXRlIChub3QgYW4gaW50ZWdlcikgT2JqRGVzYz0lcCBTdGF0ZT0lcCBUeXBlPSVYIiwKIAkJCSAgICBvYmpfZGVzYywgd2Fsa19zdGF0ZSwKIAkJCSAgICBBQ1BJX0dFVF9PQkpFQ1RfVFlQRShvYmpfZGVzYykpKTsKIApAQCAtMjE0LDcgKzIxMyw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJdTMyIG9wY29kZV9jbGFzczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19leGVjX2JlZ2luX29wIiwgd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfZXhlY19iZWdpbl9vcCwgd2Fsa19zdGF0ZSk7CiAKIAlvcCA9IHdhbGtfc3RhdGUtPm9wOwogCWlmICghb3ApIHsKQEAgLTI5Niw3ICsyOTUsNyBAQAogCiAJY2FzZSBBTUxfQ0xBU1NfTkFNRURfT0JKRUNUOgogCi0JCWlmICh3YWxrX3N0YXRlLT53YWxrX3R5cGUgPT0gQUNQSV9XQUxLX01FVEhPRCkgeworCQlpZiAod2Fsa19zdGF0ZS0+d2Fsa190eXBlICYgQUNQSV9XQUxLX01FVEhPRCkgewogCQkJLyoKIAkJCSAqIEZvdW5kIGEgbmFtZWQgb2JqZWN0IGRlY2xhcmF0aW9uIGR1cmluZyBtZXRob2QgZXhlY3V0aW9uOwogCQkJICogd2UgbXVzdCBlbnRlciB0aGlzIG9iamVjdCBpbnRvIHRoZSBuYW1lc3BhY2UuICBUaGUgY3JlYXRlZApAQCAtMzU0LDcgKzM1Myw3IEBACiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm5leHRfb3A7CiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKmZpcnN0X2FyZzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19leGVjX2VuZF9vcCIsIHdhbGtfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2V4ZWNfZW5kX29wLCB3YWxrX3N0YXRlKTsKIAogCW9wID0gd2Fsa19zdGF0ZS0+b3A7CiAJb3BfdHlwZSA9IHdhbGtfc3RhdGUtPm9wX2luZm8tPnR5cGU7CkBAIC00MDksNiArNDA4LDcgQEAKIAkJICogYmVpbmcgdGhlIG9iamVjdF90eXBlIGFuZCBzaXplX29mIG9wZXJhdG9ycy4KIAkJICovCiAJCWlmICghKHdhbGtfc3RhdGUtPm9wX2luZm8tPmZsYWdzICYgQU1MX05PX09QRVJBTkRfUkVTT0xWRSkpIHsKKwogCQkJLyogUmVzb2x2ZSBhbGwgb3BlcmFuZHMgKi8KIAogCQkJc3RhdHVzID0gYWNwaV9leF9yZXNvbHZlX29wZXJhbmRzKHdhbGtfc3RhdGUtPm9wY29kZSwKQEAgLTQyMyw3ICs0MjMsNyBAQAogCQkJCQkJICAgYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUKIAkJCQkJCSAgICh3YWxrX3N0YXRlLT5vcGNvZGUpLAogCQkJCQkJICAgd2Fsa19zdGF0ZS0+bnVtX29wZXJhbmRzLAotCQkJCQkJICAgImFmdGVyIGV4X3Jlc29sdmVfb3BlcmFuZHMiKTsKKwkJCQkJCSAgICJhZnRlciBFeFJlc29sdmVPcGVyYW5kcyIpOwogCQkJfQogCQl9CiAKQEAgLTQzNyw3ICs0MzcsNyBAQAogCQkJICAgIGFjcGlfZ2JsX29wX3R5cGVfZGlzcGF0Y2hbb3BfdHlwZV0gKHdhbGtfc3RhdGUpOwogCQl9IGVsc2UgewogCQkJLyoKLQkJCSAqIFRyZWF0IGNvbnN0cnVjdHMgb2YgdGhlIGZvcm0gIlN0b3JlKGxvY2FsX3gsbG9jYWxfeCkiIGFzIG5vb3BzIHdoZW4gdGhlCisJCQkgKiBUcmVhdCBjb25zdHJ1Y3RzIG9mIHRoZSBmb3JtICJTdG9yZShMb2NhbFgsTG9jYWxYKSIgYXMgbm9vcHMgd2hlbiB0aGUKIAkJCSAqIExvY2FsIGlzIHVuaW5pdGlhbGl6ZWQuCiAJCQkgKi8KIAkJCWlmICgoc3RhdHVzID09IEFFX0FNTF9VTklOSVRJQUxJWkVEX0xPQ0FMKSAmJgpAQCAtNTQ4LDYgKzU0OCw3IEBACiAJCQkgKi8KIAkJCXN0YXR1cyA9IGFjcGlfZHNfcmVzb2x2ZV9vcGVyYW5kcyh3YWxrX3N0YXRlKTsKIAkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCiAJCQkJLyogT24gZXJyb3IsIGNsZWFyIGFsbCByZXNvbHZlZCBvcGVyYW5kcyAqLwogCiAJCQkJYWNwaV9kc19jbGVhcl9vcGVyYW5kcyh3YWxrX3N0YXRlKTsKQEAgLTU2OSw3ICs1NzAsNyBAQAogCQljYXNlIEFNTF9UWVBFX0NSRUFURV9GSUVMRDoKIAogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCQkgICJFeGVjdXRpbmcgY3JlYXRlX2ZpZWxkIEJ1ZmZlci9JbmRleCBPcD0lcFxuIiwKKwkJCQkJICAiRXhlY3V0aW5nIENyZWF0ZUZpZWxkIEJ1ZmZlci9JbmRleCBPcD0lcFxuIiwKIAkJCQkJICBvcCkpOwogCiAJCQlzdGF0dXMgPSBhY3BpX2RzX2xvYWQyX2VuZF9vcCh3YWxrX3N0YXRlKTsKQEAgLTU4NCw3ICs1ODUsNyBAQAogCQljYXNlIEFNTF9UWVBFX0NSRUFURV9PQkpFQ1Q6CiAKIAkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKLQkJCQkJICAiRXhlY3V0aW5nIGNyZWF0ZV9vYmplY3QgKEJ1ZmZlci9QYWNrYWdlKSBPcD0lcFxuIiwKKwkJCQkJICAiRXhlY3V0aW5nIENyZWF0ZU9iamVjdCAoQnVmZmVyL1BhY2thZ2UpIE9wPSVwXG4iLAogCQkJCQkgIG9wKSk7CiAKIAkJCXN3aXRjaCAob3AtPmNvbW1vbi5wYXJlbnQtPmNvbW1vbi5hbWxfb3Bjb2RlKSB7CkBAIC02NTcsNyArNjU4LDcgQEAKIAogCQkJaWYgKG9wLT5jb21tb24uYW1sX29wY29kZSA9PSBBTUxfUkVHSU9OX09QKSB7CiAJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCQkJICAiRXhlY3V0aW5nIG9wX3JlZ2lvbiBBZGRyZXNzL0xlbmd0aCBPcD0lcFxuIiwKKwkJCQkJCSAgIkV4ZWN1dGluZyBPcFJlZ2lvbiBBZGRyZXNzL0xlbmd0aCBPcD0lcFxuIiwKIAkJCQkJCSAgb3ApKTsKIAogCQkJCXN0YXR1cyA9CkBAIC03MjIsNiArNzIzLDcgQEAKICAgICAgIGNsZWFudXA6CiAKIAlpZiAod2Fsa19zdGF0ZS0+cmVzdWx0X29iaikgeworCiAJCS8qIEJyZWFrIHRvIGRlYnVnZ2VyIHRvIGRpc3BsYXkgcmVzdWx0ICovCiAKIAkJQUNQSV9ERUJVR0dFUl9FWEVDKGFjcGlfZGJfZGlzcGxheV9yZXN1bHRfb2JqZWN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dsb2FkLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dsb2FkLmMKaW5kZXggZDNkMjRkYS4uMzUwNzQzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN3bG9hZC5jCisrKyBiL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd2xvYWQuYwpAQCAtMTI3LDcgKzEyNyw3IEBACiAJY2hhciAqcGF0aDsKIAl1MzIgZmxhZ3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19sb2FkMV9iZWdpbl9vcCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfbG9hZDFfYmVnaW5fb3ApOwogCiAJb3AgPSB3YWxrX3N0YXRlLT5vcDsKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILCAiT3A9JXAgU3RhdGU9JXBcbiIsIG9wLApAQCAtMTc4LDEyICsxNzgsMTIgQEAKIAkJCSAqIFRhcmdldCBvZiBTY29wZSgpIG5vdCBmb3VuZC4gIEdlbmVyYXRlIGFuIEV4dGVybmFsIGZvciBpdCwgYW5kCiAJCQkgKiBpbnNlcnQgdGhlIG5hbWUgaW50byB0aGUgbmFtZXNwYWNlLgogCQkJICovCi0JCQlhY3BpX2RtX2FkZF90b19leHRlcm5hbF9saXN0KHBhdGgpOworCQkJYWNwaV9kbV9hZGRfdG9fZXh0ZXJuYWxfbGlzdChwYXRoLCBBQ1BJX1RZUEVfREVWSUNFLCAwKTsKIAkJCXN0YXR1cyA9CiAJCQkgICAgYWNwaV9uc19sb29rdXAod2Fsa19zdGF0ZS0+c2NvcGVfaW5mbywgcGF0aCwKIAkJCQkJICAgb2JqZWN0X3R5cGUsIEFDUElfSU1PREVfTE9BRF9QQVNTMSwKIAkJCQkJICAgQUNQSV9OU19TRUFSQ0hfUEFSRU5ULCB3YWxrX3N0YXRlLAotCQkJCQkgICAmKG5vZGUpKTsKKwkJCQkJICAgJm5vZGUpOwogCQl9CiAjZW5kaWYKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CkBAIC0yNjEsNiArMjYxLDcgQEAKIAkJICovCiAKIAkJaWYgKHdhbGtfc3RhdGUtPmRlZmVycmVkX25vZGUpIHsKKwogCQkJLyogVGhpcyBuYW1lIGlzIGFscmVhZHkgaW4gdGhlIG5hbWVzcGFjZSwgZ2V0IHRoZSBub2RlICovCiAKIAkJCW5vZGUgPSB3YWxrX3N0YXRlLT5kZWZlcnJlZF9ub2RlOwpAQCAtMzAwLDEwICszMDEsNDEgQEAKIAkJc3RhdHVzID0KIAkJICAgIGFjcGlfbnNfbG9va3VwKHdhbGtfc3RhdGUtPnNjb3BlX2luZm8sIHBhdGgsIG9iamVjdF90eXBlLAogCQkJCSAgIEFDUElfSU1PREVfTE9BRF9QQVNTMSwgZmxhZ3MsIHdhbGtfc3RhdGUsCi0JCQkJICAgJihub2RlKSk7CisJCQkJICAgJm5vZGUpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCUFDUElfRVJST1JfTkFNRVNQQUNFKHBhdGgsIHN0YXR1cyk7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwkJCWlmIChzdGF0dXMgPT0gQUVfQUxSRUFEWV9FWElTVFMpIHsKKworCQkJCS8qIFRoZSBuYW1lIGFscmVhZHkgZXhpc3RzIGluIHRoaXMgc2NvcGUgKi8KKworCQkJCWlmIChub2RlLT5mbGFncyAmIEFOT0JKX0lTX0VYVEVSTkFMKSB7CisJCQkJCS8qCisJCQkJCSAqIEFsbG93IG9uZSBjcmVhdGUgb24gYW4gb2JqZWN0IG9yIHNlZ21lbnQgdGhhdCB3YXMKKwkJCQkJICogcHJldmlvdXNseSBkZWNsYXJlZCBFeHRlcm5hbAorCQkJCQkgKi8KKwkJCQkJbm9kZS0+ZmxhZ3MgJj0gfkFOT0JKX0lTX0VYVEVSTkFMOworCQkJCQlub2RlLT50eXBlID0gKHU4KSBvYmplY3RfdHlwZTsKKworCQkJCQkvKiBKdXN0IHJldHlwZWQgYSBub2RlLCBwcm9iYWJseSB3aWxsIG5lZWQgdG8gb3BlbiBhIHNjb3BlICovCisKKwkJCQkJaWYgKGFjcGlfbnNfb3BlbnNfc2NvcGUob2JqZWN0X3R5cGUpKSB7CisJCQkJCQlzdGF0dXMgPQorCQkJCQkJICAgIGFjcGlfZHNfc2NvcGVfc3RhY2tfcHVzaAorCQkJCQkJICAgIChub2RlLCBvYmplY3RfdHlwZSwKKwkJCQkJCSAgICAgd2Fsa19zdGF0ZSk7CisJCQkJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCQkJCQlyZXR1cm5fQUNQSV9TVEFUVVMKKwkJCQkJCQkgICAgKHN0YXR1cyk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJc3RhdHVzID0gQUVfT0s7CisJCQkJfQorCQkJfQorCisJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKworCQkJCUFDUElfRVJST1JfTkFNRVNQQUNFKHBhdGgsIHN0YXR1cyk7CisJCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpAQCAtMzExLDYgKzM0Myw3IEBACiAJLyogQ29tbW9uIGV4aXQgKi8KIAogCWlmICghb3ApIHsKKwogCQkvKiBDcmVhdGUgYSBuZXcgb3AgKi8KIAogCQlvcCA9IGFjcGlfcHNfYWxsb2Nfb3Aod2Fsa19zdGF0ZS0+b3Bjb2RlKTsKQEAgLTM1OSw3ICszOTIsNyBAQAogCWFjcGlfb2JqZWN0X3R5cGUgb2JqZWN0X3R5cGU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19sb2FkMV9lbmRfb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX2xvYWQxX2VuZF9vcCk7CiAKIAlvcCA9IHdhbGtfc3RhdGUtPm9wOwogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsICJPcD0lcCBTdGF0ZT0lcFxuIiwgb3AsCkBAIC00MTMsNiArNDQ2LDcgQEAKICNlbmRpZgogCiAJaWYgKG9wLT5jb21tb24uYW1sX29wY29kZSA9PSBBTUxfTkFNRV9PUCkgeworCiAJCS8qIEZvciBOYW1lIG9wY29kZSwgZ2V0IHRoZSBvYmplY3QgdHlwZSBmcm9tIHRoZSBhcmd1bWVudCAqLwogCiAJCWlmIChvcC0+Y29tbW9uLnZhbHVlLmFyZykgewpAQCAtNDQ1LDcgKzQ3OSw3IEBACiAJCQkgKiBhcmd1bWVudHMuKQogCQkJICovCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILAotCQkJCQkgICJMT0FESU5HLU1ldGhvZDogU3RhdGU9JXAgT3A9JXAgbmFtZWRfb2JqPSVwXG4iLAorCQkJCQkgICJMT0FESU5HLU1ldGhvZDogU3RhdGU9JXAgT3A9JXAgTmFtZWRPYmo9JXBcbiIsCiAJCQkJCSAgd2Fsa19zdGF0ZSwgb3AsIG9wLT5uYW1lZC5ub2RlKSk7CiAKIAkJCWlmICghYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG9wLT5uYW1lZC5ub2RlKSkgewpAQCAtNTExLDcgKzU0NSw3IEBACiAJYWNwaV9vYmplY3RfdHlwZSBvYmplY3RfdHlwZTsKIAljaGFyICpidWZmZXJfcHRyOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfbG9hZDJfYmVnaW5fb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX2xvYWQyX2JlZ2luX29wKTsKIAogCW9wID0gd2Fsa19zdGF0ZS0+b3A7CiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9ESVNQQVRDSCwgIk9wPSVwIFN0YXRlPSVwXG4iLCBvcCwKQEAgLTUyMSw2ICs1NTUsNyBAQAogCQlpZiAoKHdhbGtfc3RhdGUtPmNvbnRyb2xfc3RhdGUpICYmCiAJCSAgICAod2Fsa19zdGF0ZS0+Y29udHJvbF9zdGF0ZS0+Y29tbW9uLnN0YXRlID09CiAJCSAgICAgQUNQSV9DT05UUk9MX0NPTkRJVElPTkFMX0VYRUNVVElORykpIHsKKwogCQkJLyogV2UgYXJlIGV4ZWN1dGluZyBhIHdoaWxlIGxvb3Agb3V0c2lkZSBvZiBhIG1ldGhvZCAqLwogCiAJCQlzdGF0dXMgPSBhY3BpX2RzX2V4ZWNfYmVnaW5fb3Aod2Fsa19zdGF0ZSwgb3V0X29wKTsKQEAgLTU1NCwxMCArNTg5LDEyIEBACiAJCS8qIEdldCB0aGUgbmFtZSB3ZSBhcmUgZ29pbmcgdG8gZW50ZXIgb3IgbG9va3VwIGluIHRoZSBuYW1lc3BhY2UgKi8KIAogCQlpZiAod2Fsa19zdGF0ZS0+b3Bjb2RlID09IEFNTF9JTlRfTkFNRVBBVEhfT1ApIHsKKwogCQkJLyogRm9yIE5hbWVwYXRoIG9wLCBnZXQgdGhlIHBhdGggc3RyaW5nICovCiAKIAkJCWJ1ZmZlcl9wdHIgPSBvcC0+Y29tbW9uLnZhbHVlLnN0cmluZzsKIAkJCWlmICghYnVmZmVyX3B0cikgeworCiAJCQkJLyogTm8gbmFtZSwganVzdCBleGl0ICovCiAKIAkJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwpAQCAtNjgwLDYgKzcxNyw3IEBACiAJCS8qIEFsbCBvdGhlciBvcGNvZGVzICovCiAKIAkJaWYgKG9wICYmIG9wLT5jb21tb24ubm9kZSkgeworCiAJCQkvKiBUaGlzIG9wL25vZGUgd2FzIHByZXZpb3VzbHkgZW50ZXJlZCBpbnRvIHRoZSBuYW1lc3BhY2UgKi8KIAogCQkJbm9kZSA9IG9wLT5jb21tb24ubm9kZTsKQEAgLTcwNSw2ICs3NDMsNyBAQAogCQkgKiBOb3RlOiBOYW1lIG1heSBhbHJlYWR5IGV4aXN0IGlmIHdlIGFyZSBleGVjdXRpbmcgYSBkZWZlcnJlZCBvcGNvZGUuCiAJCSAqLwogCQlpZiAod2Fsa19zdGF0ZS0+ZGVmZXJyZWRfbm9kZSkgeworCiAJCQkvKiBUaGlzIG5hbWUgaXMgYWxyZWFkeSBpbiB0aGUgbmFtZXNwYWNlLCBnZXQgdGhlIG5vZGUgKi8KIAogCQkJbm9kZSA9IHdhbGtfc3RhdGUtPmRlZmVycmVkX25vZGU7CkBAIC03MjcsNiArNzY2LDcgQEAKIAl9CiAKIAlpZiAoIW9wKSB7CisKIAkJLyogQ3JlYXRlIGEgbmV3IG9wICovCiAKIAkJb3AgPSBhY3BpX3BzX2FsbG9jX29wKHdhbGtfc3RhdGUtPm9wY29kZSk7CkBAIC03NzYsNyArODE2LDcgQEAKIAl1MzIgaTsKICNlbmRpZgogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfbG9hZDJfZW5kX29wIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19sb2FkMl9lbmRfb3ApOwogCiAJb3AgPSB3YWxrX3N0YXRlLT5vcDsKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILCAiT3Bjb2RlIFslc10gT3AgJXAgU3RhdGUgJXBcbiIsCkBAIC04NzAsNyArOTEwLDcgQEAKIAkgKi8KIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsCi0JCQkgICJDcmVhdGUtTG9hZCBbJXNdIFN0YXRlPSVwIE9wPSVwIG5hbWVkX29iaj0lcFxuIiwKKwkJCSAgIkNyZWF0ZS1Mb2FkIFslc10gU3RhdGU9JXAgT3A9JXAgTmFtZWRPYmo9JXBcbiIsCiAJCQkgIGFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKG9wLT5jb21tb24uYW1sX29wY29kZSksCiAJCQkgIHdhbGtfc3RhdGUsIG9wLCBub2RlKSk7CiAKQEAgLTEwNDUsNyArMTA4NSw3IEBACiAJCQkgKiBhcmd1bWVudHMuKQogCQkJICovCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILAotCQkJCQkgICJMT0FESU5HLU1ldGhvZDogU3RhdGU9JXAgT3A9JXAgbmFtZWRfb2JqPSVwXG4iLAorCQkJCQkgICJMT0FESU5HLU1ldGhvZDogU3RhdGU9JXAgT3A9JXAgTmFtZWRPYmo9JXBcbiIsCiAJCQkJCSAgd2Fsa19zdGF0ZSwgb3AsIG9wLT5uYW1lZC5ub2RlKSk7CiAKIAkJCWlmICghYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG9wLT5uYW1lZC5ub2RlKSkgewpAQCAtMTA5MCw3ICsxMTMwLDcgQEAKIAljYXNlIEFNTF9DTEFTU19NRVRIT0RfQ0FMTDoKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0RJU1BBVENILAotCQkJCSAgIlJFU09MVklORy1tZXRob2RfY2FsbDogU3RhdGU9JXAgT3A9JXAgbmFtZWRfb2JqPSVwXG4iLAorCQkJCSAgIlJFU09MVklORy1NZXRob2RDYWxsOiBTdGF0ZT0lcCBPcD0lcCBOYW1lZE9iaj0lcFxuIiwKIAkJCQkgIHdhbGtfc3RhdGUsIG9wLCBub2RlKSk7CiAKIAkJLyoKQEAgLTExMDQsNyArMTE0NCw2IEBACiAJCQkJICAgQUNQSV9OU19ET05UX09QRU5fU0NPUEUsIHdhbGtfc3RhdGUsCiAJCQkJICAgJihuZXdfbm9kZSkpOwogCQlpZiAoQUNQSV9TVUNDRVNTKHN0YXR1cykpIHsKLQogCQkJLyoKIAkJCSAqIE1ha2Ugc3VyZSB0aGF0IHdoYXQgd2UgZm91bmQgaXMgaW5kZWVkIGEgbWV0aG9kCiAJCQkgKiBXZSBkaWRuJ3Qgc2VhcmNoIGZvciBhIG1ldGhvZCBvbiBwdXJwb3NlLCB0byBzZWUgaWYgdGhlIG5hbWUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd3Njb3BlLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dzY29wZS5jCmluZGV4IGFkYTIxZWYuLmM5MjI4OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd3Njb3BlLmMKKysrIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN3c2NvcGUuYwpAQCAtNjMsOSArNjMsMTAgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnNjb3BlX2luZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImRzX3Njb3BlX3N0YWNrX2NsZWFyIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX3Njb3BlX3N0YWNrX2NsZWFyKTsKIAogCXdoaWxlICh3YWxrX3N0YXRlLT5zY29wZV9pbmZvKSB7CisKIAkJLyogUG9wIGEgc2NvcGUgb2ZmIHRoZSBzdGFjayAqLwogCiAJCXNjb3BlX2luZm8gPSB3YWxrX3N0YXRlLT5zY29wZV9pbmZvOwpAQCAtMTAyLDkgKzEwMywxMCBAQAogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc2NvcGVfaW5mbzsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKm9sZF9zY29wZV9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfc2NvcGVfc3RhY2tfcHVzaCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZHNfc2NvcGVfc3RhY2tfcHVzaCk7CiAKIAlpZiAoIW5vZGUpIHsKKwogCQkvKiBJbnZhbGlkIHNjb3BlICAgKi8KIAogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiTnVsbCBzY29wZSBwYXJhbWV0ZXIiKSk7CkBAIC0xMjYsNyArMTI4LDcgQEAKIAogCS8qIEluaXQgbmV3IHNjb3BlIG9iamVjdCAqLwogCi0Jc2NvcGVfaW5mby0+Y29tbW9uLmRhdGFfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX1dTQ09QRTsKKwlzY29wZV9pbmZvLT5jb21tb24uZGVzY3JpcHRvcl90eXBlID0gQUNQSV9ERVNDX1RZUEVfU1RBVEVfV1NDT1BFOwogCXNjb3BlX2luZm8tPnNjb3BlLm5vZGUgPSBub2RlOwogCXNjb3BlX2luZm8tPmNvbW1vbi52YWx1ZSA9ICh1MTYpIHR5cGU7CiAKQEAgLTE3Niw3ICsxNzgsNyBAQAogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc2NvcGVfaW5mbzsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKm5ld19zY29wZV9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfc2NvcGVfc3RhY2tfcG9wIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19zY29wZV9zdGFja19wb3ApOwogCiAJLyoKIAkgKiBQb3Agc2NvcGUgaW5mbyBvYmplY3Qgb2ZmIHRoZSBzdGFjay4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd3N0YXRlLmMgYi9kcml2ZXJzL2FjcGkvZGlzcGF0Y2hlci9kc3dzdGF0ZS5jCmluZGV4IGZhNzhjYjcuLjc4MTdlNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9kaXNwYXRjaGVyL2Rzd3N0YXRlLmMKKysrIGIvZHJpdmVycy9hY3BpL2Rpc3BhdGNoZXIvZHN3c3RhdGUuYwpAQCAtNjYsNyArNjYsNiBAQAogI2VuZGlmCiAKICNpZmRlZiBBQ1BJX0ZVVFVSRV9VU0FHRQotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX2RzX3Jlc3VsdF9yZW1vdmUKQEAgLTg4LDcgKzg3LDcgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnN0YXRlOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19yZXN1bHRfcmVtb3ZlIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX3Jlc3VsdF9yZW1vdmUpOwogCiAJc3RhdGUgPSB3YWxrX3N0YXRlLT5yZXN1bHRzOwogCWlmICghc3RhdGUpIHsKQEAgLTEyOCw3ICsxMjcsNiBAQAogCiAJcmV0dXJuIChBRV9PSyk7CiB9Ci0KICNlbmRpZgkJCQkvKiAgQUNQSV9GVVRVUkVfVVNBR0UgICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNTIsNyArMTUwLDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGluZGV4OwogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImRzX3Jlc3VsdF9wb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfcmVzdWx0X3BvcCk7CiAKIAlzdGF0ZSA9IHdhbGtfc3RhdGUtPnJlc3VsdHM7CiAJaWYgKCFzdGF0ZSkgewpAQCAtMTcwLDYgKzE2OCw3IEBACiAJc3RhdGUtPnJlc3VsdHMubnVtX3Jlc3VsdHMtLTsKIAogCWZvciAoaW5kZXggPSBBQ1BJX09CSl9OVU1fT1BFUkFORFM7IGluZGV4OyBpbmRleC0tKSB7CisKIAkJLyogQ2hlY2sgZm9yIGEgdmFsaWQgcmVzdWx0IG9iamVjdCAqLwogCiAJCWlmIChzdGF0ZS0+cmVzdWx0cy5vYmpfZGVzY1tpbmRleCAtIDFdKSB7CkBAIC0yMTMsNyArMjEyLDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGluZGV4OwogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImRzX3Jlc3VsdF9wb3BfZnJvbV9ib3R0b20iKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfcmVzdWx0X3BvcF9mcm9tX2JvdHRvbSk7CiAKIAlzdGF0ZSA9IHdhbGtfc3RhdGUtPnJlc3VsdHM7CiAJaWYgKCFzdGF0ZSkgewpAQCAtMjc4LDcgKzI3Nyw3IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfcmVzdWx0X3B1c2giKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfcmVzdWx0X3B1c2gpOwogCiAJc3RhdGUgPSB3YWxrX3N0YXRlLT5yZXN1bHRzOwogCWlmICghc3RhdGUpIHsKQEAgLTMzMSwxNCArMzMwLDE0IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfcmVzdWx0X3N0YWNrX3B1c2giKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfcmVzdWx0X3N0YWNrX3B1c2gpOwogCiAJc3RhdGUgPSBhY3BpX3V0X2NyZWF0ZV9nZW5lcmljX3N0YXRlKCk7CiAJaWYgKCFzdGF0ZSkgewogCQlyZXR1cm4gKEFFX05PX01FTU9SWSk7CiAJfQogCi0Jc3RhdGUtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9SRVNVTFQ7CisJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9SRVNVTFQ7CiAJYWNwaV91dF9wdXNoX2dlbmVyaWNfc3RhdGUoJndhbGtfc3RhdGUtPnJlc3VsdHMsIHN0YXRlKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgIlJlc3VsdHM9JXAgU3RhdGU9JXBcbiIsCkBAIC0zNjMsNyArMzYyLDcgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnN0YXRlOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19yZXN1bHRfc3RhY2tfcG9wIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX3Jlc3VsdF9zdGFja19wb3ApOwogCiAJLyogQ2hlY2sgZm9yIHN0YWNrIHVuZGVyZmxvdyAqLwogCkBAIC0zNzYsNyArMzc1LDcgQEAKIAlzdGF0ZSA9IGFjcGlfdXRfcG9wX2dlbmVyaWNfc3RhdGUoJndhbGtfc3RhdGUtPnJlc3VsdHMpOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJICAiUmVzdWx0PSVwIHJlbWFpbmluZ19yZXN1bHRzPSVYIFN0YXRlPSVwXG4iLAorCQkJICAiUmVzdWx0PSVwIFJlbWFpbmluZ1Jlc3VsdHM9JVggU3RhdGU9JXBcbiIsCiAJCQkgIHN0YXRlLCBzdGF0ZS0+cmVzdWx0cy5udW1fcmVzdWx0cywgd2Fsa19zdGF0ZSkpOwogCiAJYWNwaV91dF9kZWxldGVfZ2VuZXJpY19zdGF0ZShzdGF0ZSk7CkBAIC00MDAsNyArMzk5LDcgQEAKIGFjcGlfc3RhdHVzCiBhY3BpX2RzX29ial9zdGFja19wdXNoKHZvaWQgKm9iamVjdCwgc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqIHdhbGtfc3RhdGUpCiB7Ci0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19vYmpfc3RhY2tfcHVzaCIpOworCUFDUElfRlVOQ1RJT05fTkFNRShkc19vYmpfc3RhY2tfcHVzaCk7CiAKIAkvKiBDaGVjayBmb3Igc3RhY2sgb3ZlcmZsb3cgKi8KIApAQCAtNDQ1LDkgKzQ0NCwxMCBAQAogewogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19vYmpfc3RhY2tfcG9wIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGRzX29ial9zdGFja19wb3ApOwogCiAJZm9yIChpID0gMDsgaSA8IHBvcF9jb3VudDsgaSsrKSB7CisKIAkJLyogQ2hlY2sgZm9yIHN0YWNrIHVuZGVyZmxvdyAqLwogCiAJCWlmICh3YWxrX3N0YXRlLT5udW1fb3BlcmFuZHMgPT0gMCkgewpAQCAtNDkxLDkgKzQ5MSwxMCBAQAogCXUzMiBpOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJkc19vYmpfc3RhY2tfcG9wX2FuZF9kZWxldGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfb2JqX3N0YWNrX3BvcF9hbmRfZGVsZXRlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBwb3BfY291bnQ7IGkrKykgeworCiAJCS8qIENoZWNrIGZvciBzdGFjayB1bmRlcmZsb3cgKi8KIAogCQlpZiAod2Fsa19zdGF0ZS0+bnVtX29wZXJhbmRzID09IDApIHsKQEAgLTUzOCwxMyArNTM5LDEzIEBACiBzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICphY3BpX2RzX2dldF9jdXJyZW50X3dhbGtfc3RhdGUoc3RydWN0IGFjcGlfdGhyZWFkX3N0YXRlCiAJCQkJCQkgICAgICAgKnRocmVhZCkKIHsKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImRzX2dldF9jdXJyZW50X3dhbGtfc3RhdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfZ2V0X2N1cnJlbnRfd2Fsa19zdGF0ZSk7CiAKIAlpZiAoIXRocmVhZCkgewogCQlyZXR1cm4gKE5VTEwpOwogCX0KIAotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfUEFSU0UsICJDdXJyZW50IHdhbGtfc3RhdGUgJXBcbiIsCisJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9QQVJTRSwgIkN1cnJlbnQgV2Fsa1N0YXRlICVwXG4iLAogCQkJICB0aHJlYWQtPndhbGtfc3RhdGVfbGlzdCkpOwogCiAJcmV0dXJuICh0aHJlYWQtPndhbGtfc3RhdGVfbGlzdCk7CkBAIC01NjcsNyArNTY4LDcgQEAKIGFjcGlfZHNfcHVzaF93YWxrX3N0YXRlKHN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGUsCiAJCQlzdHJ1Y3QgYWNwaV90aHJlYWRfc3RhdGUgKnRocmVhZCkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19wdXNoX3dhbGtfc3RhdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX3B1c2hfd2Fsa19zdGF0ZSk7CiAKIAl3YWxrX3N0YXRlLT5uZXh0ID0gdGhyZWFkLT53YWxrX3N0YXRlX2xpc3Q7CiAJdGhyZWFkLT53YWxrX3N0YXRlX2xpc3QgPSB3YWxrX3N0YXRlOwpAQCAtNTkzLDExICs1OTQsMTIgQEAKIHsKIAlzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZHNfcG9wX3dhbGtfc3RhdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGRzX3BvcF93YWxrX3N0YXRlKTsKIAogCXdhbGtfc3RhdGUgPSB0aHJlYWQtPndhbGtfc3RhdGVfbGlzdDsKIAogCWlmICh3YWxrX3N0YXRlKSB7CisKIAkJLyogTmV4dCB3YWxrIHN0YXRlIGJlY29tZXMgdGhlIGN1cnJlbnQgd2FsayBzdGF0ZSAqLwogCiAJCXRocmVhZC0+d2Fsa19zdGF0ZV9saXN0ID0gd2Fsa19zdGF0ZS0+bmV4dDsKQEAgLTYxOCw3ICs2MjAsNyBAQAogICoKICAqIFBBUkFNRVRFUlM6ICBvd25lcl9pZCAgICAgICAgLSBJRCBmb3Igb2JqZWN0IGNyZWF0aW9uCiAgKiAgICAgICAgICAgICAgT3JpZ2luICAgICAgICAgIC0gU3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgd2FsawotICogICAgICAgICAgICAgIG10aF9kZXNjICAgICAgICAtIE1ldGhvZCBvYmplY3QKKyAqICAgICAgICAgICAgICBtZXRob2RfZGVzYyAgICAgLSBNZXRob2Qgb2JqZWN0CiAgKiAgICAgICAgICAgICAgVGhyZWFkICAgICAgICAgIC0gQ3VycmVudCB0aHJlYWQgc3RhdGUKICAqCiAgKiBSRVRVUk46ICAgICAgUG9pbnRlciB0byB0aGUgbmV3IHdhbGsgc3RhdGUuCkBAIC02MzIsMjQgKzYzNCwyNCBAQAogCQkJCQkJICB1bmlvbiBhY3BpX3BhcnNlX29iamVjdAogCQkJCQkJICAqb3JpZ2luLAogCQkJCQkJICB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0Ci0JCQkJCQkgICptdGhfZGVzYywKKwkJCQkJCSAgKm1ldGhvZF9kZXNjLAogCQkJCQkJICBzdHJ1Y3QgYWNwaV90aHJlYWRfc3RhdGUKIAkJCQkJCSAgKnRocmVhZCkKIHsKIAlzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImRzX2NyZWF0ZV93YWxrX3N0YXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19jcmVhdGVfd2Fsa19zdGF0ZSk7CiAKLQl3YWxrX3N0YXRlID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHNpemVvZihzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlKSk7CisJd2Fsa19zdGF0ZSA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHNpemVvZihzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlKSk7CiAJaWYgKCF3YWxrX3N0YXRlKSB7CiAJCXJldHVybl9QVFIoTlVMTCk7CiAJfQogCi0Jd2Fsa19zdGF0ZS0+ZGF0YV90eXBlID0gQUNQSV9ERVNDX1RZUEVfV0FMSzsKKwl3YWxrX3N0YXRlLT5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9XQUxLOworCXdhbGtfc3RhdGUtPm1ldGhvZF9kZXNjID0gbWV0aG9kX2Rlc2M7CiAJd2Fsa19zdGF0ZS0+b3duZXJfaWQgPSBvd25lcl9pZDsKIAl3YWxrX3N0YXRlLT5vcmlnaW4gPSBvcmlnaW47Ci0Jd2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MgPSBtdGhfZGVzYzsKIAl3YWxrX3N0YXRlLT50aHJlYWQgPSB0aHJlYWQ7CiAKIAl3YWxrX3N0YXRlLT5wYXJzZXJfc3RhdGUuc3RhcnRfb3AgPSBvcmlnaW47CkBAIC02NjQsNyArNjY2LDcgQEAKIAogCXN0YXR1cyA9IGFjcGlfZHNfcmVzdWx0X3N0YWNrX3B1c2god2Fsa19zdGF0ZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCUFDUElfTUVNX0ZSRUUod2Fsa19zdGF0ZSk7CisJCUFDUElfRlJFRSh3YWxrX3N0YXRlKTsKIAkJcmV0dXJuX1BUUihOVUxMKTsKIAl9CiAKQEAgLTcwMSwxMyArNzAzLDEzIEBACiAJCSAgICAgIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICptZXRob2Rfbm9kZSwKIAkJICAgICAgdTggKiBhbWxfc3RhcnQsCiAJCSAgICAgIHUzMiBhbWxfbGVuZ3RoLAotCQkgICAgICBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbywgdTggcGFzc19udW1iZXIpCisJCSAgICAgIHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm8sIHU4IHBhc3NfbnVtYmVyKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9wYXJzZV9zdGF0ZSAqcGFyc2VyX3N0YXRlID0gJndhbGtfc3RhdGUtPnBhcnNlcl9zdGF0ZTsKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqZXh0cmFfb3A7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJkc19pbml0X2FtbF93YWxrIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShkc19pbml0X2FtbF93YWxrKTsKIAogCXdhbGtfc3RhdGUtPnBhcnNlcl9zdGF0ZS5hbWwgPQogCSAgICB3YWxrX3N0YXRlLT5wYXJzZXJfc3RhdGUuYW1sX3N0YXJ0ID0gYW1sX3N0YXJ0OwpAQCAtNzc4LDYgKzc4MCw3IEBACiAJCX0KIAogCQlpZiAocGFyc2VyX3N0YXRlLT5zdGFydF9ub2RlKSB7CisKIAkJCS8qIFB1c2ggc3RhcnQgc2NvcGUgb24gc2NvcGUgc3RhY2sgYW5kIG1ha2UgaXQgY3VycmVudCAgKi8KIAogCQkJc3RhdHVzID0KQEAgLTgxMCwyMSArODEzLDI0IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19kZWxldGVfd2Fsa19zdGF0ZSIsIHdhbGtfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX2RlbGV0ZV93YWxrX3N0YXRlLCB3YWxrX3N0YXRlKTsKIAogCWlmICghd2Fsa19zdGF0ZSkgewogCQlyZXR1cm47CiAJfQogCi0JaWYgKHdhbGtfc3RhdGUtPmRhdGFfdHlwZSAhPSBBQ1BJX0RFU0NfVFlQRV9XQUxLKSB7CisJaWYgKHdhbGtfc3RhdGUtPmRlc2NyaXB0b3JfdHlwZSAhPSBBQ1BJX0RFU0NfVFlQRV9XQUxLKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sICIlcCBpcyBub3QgYSB2YWxpZCB3YWxrIHN0YXRlIiwKIAkJCSAgICB3YWxrX3N0YXRlKSk7CiAJCXJldHVybjsKIAl9CiAKKwkvKiBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBvcGVuIHNjb3BlcyAqLworCiAJaWYgKHdhbGtfc3RhdGUtPnBhcnNlcl9zdGF0ZS5zY29wZSkgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiJXAgd2FsayBzdGlsbCBoYXMgYSBzY29wZSBsaXN0IiwKIAkJCSAgICB3YWxrX3N0YXRlKSk7CisJCWFjcGlfcHNfY2xlYW51cF9zY29wZSgmd2Fsa19zdGF0ZS0+cGFyc2VyX3N0YXRlKTsKIAl9CiAKIAkvKiBBbHdheXMgbXVzdCBmcmVlIGFueSBsaW5rZWQgY29udHJvbCBzdGF0ZXMgKi8KQEAgLTg1NCw3ICs4NjAsNyBAQAogCQlhY3BpX3V0X2RlbGV0ZV9nZW5lcmljX3N0YXRlKHN0YXRlKTsKIAl9CiAKLQlBQ1BJX01FTV9GUkVFKHdhbGtfc3RhdGUpOworCUFDUElfRlJFRSh3YWxrX3N0YXRlKTsKIAlyZXR1cm5fVk9JRDsKIH0KIApAQCAtODc5LDcgKzg4NSw3IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfcmVzdWx0X2luc2VydCIpOworCUFDUElfRlVOQ1RJT05fTkFNRShkc19yZXN1bHRfaW5zZXJ0KTsKIAogCXN0YXRlID0gd2Fsa19zdGF0ZS0+cmVzdWx0czsKIAlpZiAoIXN0YXRlKSB7CkBAIC05MzcsNyArOTQzLDcgQEAKIHsKIAl1MzIgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19vYmpfc3RhY2tfZGVsZXRlX2FsbCIsIHdhbGtfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGRzX29ial9zdGFja19kZWxldGVfYWxsLCB3YWxrX3N0YXRlKTsKIAogCS8qIFRoZSBzdGFjayBzaXplIGlzIGNvbmZpZ3VyYWJsZSwgYnV0IGZpeGVkICovCiAKQEAgLTk2OSw3ICs5NzUsNyBAQAogYWNwaV9kc19vYmpfc3RhY2tfcG9wX29iamVjdCh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICoqb2JqZWN0LAogCQkJICAgICBzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlKQogewotCUFDUElfRlVOQ1RJT05fTkFNRSgiZHNfb2JqX3N0YWNrX3BvcF9vYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZHNfb2JqX3N0YWNrX3BvcF9vYmplY3QpOwogCiAJLyogQ2hlY2sgZm9yIHN0YWNrIHVuZGVyZmxvdyAqLwogCkBAIC0xMDI1LDcgKzEwMzEsNyBAQAogdm9pZCAqYWNwaV9kc19vYmpfc3RhY2tfZ2V0X3ZhbHVlKHUzMiBpbmRleCwgc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSkKIHsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJkc19vYmpfc3RhY2tfZ2V0X3ZhbHVlIiwgd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZHNfb2JqX3N0YWNrX2dldF92YWx1ZSwgd2Fsa19zdGF0ZSk7CiAKIAkvKiBDYW4ndCBkbyBpdCBpZiB0aGUgc3RhY2sgaXMgZW1wdHkgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2VjLmMgYi9kcml2ZXJzL2FjcGkvZWMuYwppbmRleCBlZWUwODY0Li4xOGIzZWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZWMuYworKysgYi9kcml2ZXJzL2FjcGkvZWMuYwpAQCAtMTE2LDcgKzExNiw3IEBACiAJCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyBjb21tYW5kX2FkZHI7CiAJCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyBkYXRhX2FkZHI7CiAJCXVuc2lnbmVkIGxvbmcgZ2xvYmFsX2xvY2s7Ci0JCXNwaW5sb2NrX3QgbG9jazsKKwkJc3RydWN0IHNlbWFwaG9yZSBzZW07CiAJfSBwb2xsOwogfTsKIApAQCAtMzIzLDcgKzMyMyw2IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJaW50IHJlc3VsdCA9IDA7Ci0JdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CiAJdTMyIGdsayA9IDA7CiAKIAlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2VjX3JlYWQiKTsKQEAgLTMzOSw4ICszMzgsMTEgQEAKIAkJCXJldHVybl9WQUxVRSgtRU5PREVWKTsKIAl9CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZWMtPnBvbGwubG9jaywgZmxhZ3MpOwotCisJaWYgKGRvd25faW50ZXJydXB0aWJsZSgmZWMtPnBvbGwuc2VtKSkgeworCQlyZXN1bHQgPSAtRVJFU1RBUlRTWVM7CisJCWdvdG8gZW5kX25vc2VtOworCX0KKwkKIAlhY3BpX2h3X2xvd19sZXZlbF93cml0ZSg4LCBBQ1BJX0VDX0NPTU1BTkRfUkVBRCwKIAkJCQkmZWMtPmNvbW1vbi5jb21tYW5kX2FkZHIpOwogCXJlc3VsdCA9IGFjcGlfZWNfd2FpdChlYywgQUNQSV9FQ19FVkVOVF9JQkUpOwpAQCAtMzU4LDggKzM2MCw4IEBACiAJCQkgICpkYXRhLCBhZGRyZXNzKSk7CiAKICAgICAgIGVuZDoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlYy0+cG9sbC5sb2NrLCBmbGFncyk7Ci0KKwl1cCgmZWMtPnBvbGwuc2VtKTsKK2VuZF9ub3NlbToKIAlpZiAoZWMtPmNvbW1vbi5nbG9iYWxfbG9jaykKIAkJYWNwaV9yZWxlYXNlX2dsb2JhbF9sb2NrKGdsayk7CiAKQEAgLTM3MCw3ICszNzIsNiBAQAogewogCWludCByZXN1bHQgPSAwOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCXUzMiBnbGsgPSAwOwogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9lY193cml0ZSIpOwpAQCAtMzg0LDggKzM4NSwxMSBAQAogCQkJcmV0dXJuX1ZBTFVFKC1FTk9ERVYpOwogCX0KIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlYy0+cG9sbC5sb2NrLCBmbGFncyk7Ci0KKwlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlKCZlYy0+cG9sbC5zZW0pKSB7CisJCXJlc3VsdCA9IC1FUkVTVEFSVFNZUzsKKwkJZ290byBlbmRfbm9zZW07CisJfQorCQogCWFjcGlfaHdfbG93X2xldmVsX3dyaXRlKDgsIEFDUElfRUNfQ09NTUFORF9XUklURSwKIAkJCQkmZWMtPmNvbW1vbi5jb21tYW5kX2FkZHIpOwogCXJlc3VsdCA9IGFjcGlfZWNfd2FpdChlYywgQUNQSV9FQ19FVkVOVF9JQkUpOwpAQCAtNDA2LDggKzQxMCw4IEBACiAJCQkgIGRhdGEsIGFkZHJlc3MpKTsKIAogICAgICAgZW5kOgotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVjLT5wb2xsLmxvY2ssIGZsYWdzKTsKLQorCXVwKCZlYy0+cG9sbC5zZW0pOworZW5kX25vc2VtOgogCWlmIChlYy0+Y29tbW9uLmdsb2JhbF9sb2NrKQogCQlhY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2soZ2xrKTsKIApAQCAtNTY4LDcgKzU3Miw2IEBACiB7CiAJaW50IHJlc3VsdCA9IDA7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7Ci0JdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CiAJdTMyIGdsayA9IDA7CiAKIAlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2VjX3F1ZXJ5Iik7CkBAIC01ODksOCArNTkyLDExIEBACiAJICogTm90ZSB0aGF0IHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiB0aGUgcXVlcnkgY2F1c2VzIHRoZSBBQ1BJX0VDX1NDSQogCSAqIGJpdCB0byBiZSBjbGVhcmVkIChhbmQgdGh1cyBjbGVhcmluZyB0aGUgaW50ZXJydXB0IHNvdXJjZSkuCiAJICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVjLT5wb2xsLmxvY2ssIGZsYWdzKTsKLQorCWlmIChkb3duX2ludGVycnVwdGlibGUoJmVjLT5wb2xsLnNlbSkpIHsKKwkJcmVzdWx0ID0gLUVSRVNUQVJUU1lTOworCQlnb3RvIGVuZF9ub3NlbTsKKwl9CisJCiAJYWNwaV9od19sb3dfbGV2ZWxfd3JpdGUoOCwgQUNQSV9FQ19DT01NQU5EX1FVRVJZLAogCQkJCSZlYy0+Y29tbW9uLmNvbW1hbmRfYWRkcik7CiAJcmVzdWx0ID0gYWNwaV9lY193YWl0KGVjLCBBQ1BJX0VDX0VWRU5UX09CRik7CkBAIC02MDIsOCArNjA4LDggQEAKIAkJcmVzdWx0ID0gLUVOT0RBVEE7CiAKICAgICAgIGVuZDoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlYy0+cG9sbC5sb2NrLCBmbGFncyk7Ci0KKwl1cCgmZWMtPnBvbGwuc2VtKTsKK2VuZF9ub3NlbToKIAlpZiAoZWMtPmNvbW1vbi5nbG9iYWxfbG9jaykKIAkJYWNwaV9yZWxlYXNlX2dsb2JhbF9sb2NrKGdsayk7CiAKQEAgLTY4MCw3ICs2ODYsNiBAQAogewogCXVuaW9uIGFjcGlfZWMgKmVjID0gKHVuaW9uIGFjcGlfZWMgKillY19jeHQ7CiAJdTMyIHZhbHVlID0gMDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKIAlzdGF0aWMgY2hhciBvYmplY3RfbmFtZVs1XSA9IHsgJ18nLCAnUScsICcwJywgJzAnLCAnXDAnIH07CiAJY29uc3QgY2hhciBoZXhbXSA9IHsgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsCiAJCSc4JywgJzknLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnCkBAIC02OTEsOSArNjk2LDExIEBACiAJaWYgKCFlY19jeHQpCiAJCWdvdG8gZW5kOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVjLT5wb2xsLmxvY2ssIGZsYWdzKTsKKwlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlICgmZWMtPnBvbGwuc2VtKSkgeworCQlyZXR1cm5fVk9JRDsKKwl9CiAJYWNwaV9od19sb3dfbGV2ZWxfcmVhZCg4LCAmdmFsdWUsICZlYy0+Y29tbW9uLmNvbW1hbmRfYWRkcik7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZWMtPnBvbGwubG9jaywgZmxhZ3MpOworCXVwKCZlYy0+cG9sbC5zZW0pOwogCiAJLyogVEJEOiBJbXBsZW1lbnQgYXN5bmNoIGV2ZW50cyEKIAkgKiBOT1RFOiBBbGwgd2UgY2FyZSBhYm91dCBhcmUgRUMtU0NJJ3MuICBPdGhlciBFQyBldmVudHMgYXJlCkBAIC03NjMsOCArNzcwLDcgQEAKIAogCWFjcGlfZGlzYWJsZV9ncGUoTlVMTCwgZWMtPmNvbW1vbi5ncGVfYml0LCBBQ1BJX0lTUik7CiAKLQlzdGF0dXMgPSBhY3BpX29zX3F1ZXVlX2Zvcl9leGVjdXRpb24oT1NEX1BSSU9SSVRZX0dQRSwKLQkJCQkJICAgICBhY3BpX2VjX2dwZV9xdWVyeSwgZWMpOworCXN0YXR1cyA9IGFjcGlfb3NfZXhlY3V0ZShPU0xfRUNfUE9MTF9IQU5ETEVSLCBhY3BpX2VjX2dwZV9xdWVyeSwgZWMpOwogCiAJaWYgKHN0YXR1cyA9PSBBRV9PSykKIAkJcmV0dXJuIEFDUElfSU5URVJSVVBUX0hBTkRMRUQ7CkBAIC03OTksNyArODA1LDcgQEAKIAogCWlmICh2YWx1ZSAmIEFDUElfRUNfRkxBR19TQ0kpIHsKIAkJYXRvbWljX2FkZCgxLCAmZWMtPmludHIucGVuZGluZ19ncGUpOwotCQlzdGF0dXMgPSBhY3BpX29zX3F1ZXVlX2Zvcl9leGVjdXRpb24oT1NEX1BSSU9SSVRZX0dQRSwKKwkJc3RhdHVzID0gYWNwaV9vc19leGVjdXRlKE9TTF9FQ19CVVJTVF9IQU5ETEVSLAogCQkJCQkJICAgICBhY3BpX2VjX2dwZV9xdWVyeSwgZWMpOwogCQlyZXR1cm4gc3RhdHVzID09IEFFX09LID8KIAkJICAgIEFDUElfSU5URVJSVVBUX0hBTkRMRUQgOiBBQ1BJX0lOVEVSUlVQVF9OT1RfSEFORExFRDsKQEAgLTk5MSw3ICs5OTcsNiBAQAogCWludCByZXN1bHQgPSAwOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXVuaW9uIGFjcGlfZWMgKmVjID0gTlVMTDsKLQl1bnNpZ25lZCBsb25nIHVpZDsKIAogCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZWNfYWRkIik7CiAKQEAgLTEwMDUsNyArMTAxMCw3IEBACiAKIAllYy0+Y29tbW9uLmhhbmRsZSA9IGRldmljZS0+aGFuZGxlOwogCWVjLT5jb21tb24udWlkID0gLTE7Ci0Jc3Bpbl9sb2NrX2luaXQoJmVjLT5wb2xsLmxvY2spOworCWluaXRfTVVURVgoJmVjLT5wb2xsLnNlbSk7CiAJc3RyY3B5KGFjcGlfZGV2aWNlX25hbWUoZGV2aWNlKSwgQUNQSV9FQ19ERVZJQ0VfTkFNRSk7CiAJc3RyY3B5KGFjcGlfZGV2aWNlX2NsYXNzKGRldmljZSksIEFDUElfRUNfQ0xBU1MpOwogCWFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKSA9IGVjOwpAQCAtMTAxNCwxMCArMTAxOSw5IEBACiAJYWNwaV9ldmFsdWF0ZV9pbnRlZ2VyKGVjLT5jb21tb24uaGFuZGxlLCAiX0dMSyIsIE5VTEwsCiAJCQkgICAgICAmZWMtPmNvbW1vbi5nbG9iYWxfbG9jayk7CiAKLQkvKiBJZiBvdXIgVUlEIG1hdGNoZXMgdGhlIFVJRCBmb3IgdGhlIEVDRFQtZW51bWVyYXRlZCBFQywKLQkgICB3ZSBub3cgaGF2ZSB0aGUgKnJlYWwqIEVDIGluZm8sIHNvIGtpbGwgdGhlIG1ha2VzaGlmdCBvbmUuICovCi0JYWNwaV9ldmFsdWF0ZV9pbnRlZ2VyKGVjLT5jb21tb24uaGFuZGxlLCAiX1VJRCIsIE5VTEwsICZ1aWQpOwotCWlmIChlY19lY2R0ICYmIGVjX2VjZHQtPmNvbW1vbi51aWQgPT0gdWlkKSB7CisJLyogWFhYIHdlIGRvbid0IHRlc3QgdWlkcywgYmVjYXVzZSBvbiBzb21lIGJveGVzIGVjZHQgdWlkID0gMCwgc2VlOgorCSAgIGh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD02MTExICovCisJaWYgKGVjX2VjZHQpIHsKIAkJYWNwaV9yZW1vdmVfYWRkcmVzc19zcGFjZV9oYW5kbGVyKEFDUElfUk9PVF9PQkpFQ1QsCiAJCQkJCQkgIEFDUElfQURSX1NQQUNFX0VDLAogCQkJCQkJICAmYWNwaV9lY19zcGFjZV9oYW5kbGVyKTsKQEAgLTEwNjIsNyArMTA2Niw2IEBACiAJaW50IHJlc3VsdCA9IDA7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJdW5pb24gYWNwaV9lYyAqZWMgPSBOVUxMOwotCXVuc2lnbmVkIGxvbmcgdWlkOwogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9lY19hZGQiKTsKIApAQCAtMTA4OCwxMCArMTA5MSw5IEBACiAJYWNwaV9ldmFsdWF0ZV9pbnRlZ2VyKGVjLT5jb21tb24uaGFuZGxlLCAiX0dMSyIsIE5VTEwsCiAJCQkgICAgICAmZWMtPmNvbW1vbi5nbG9iYWxfbG9jayk7CiAKLQkvKiBJZiBvdXIgVUlEIG1hdGNoZXMgdGhlIFVJRCBmb3IgdGhlIEVDRFQtZW51bWVyYXRlZCBFQywKLQkgICB3ZSBub3cgaGF2ZSB0aGUgKnJlYWwqIEVDIGluZm8sIHNvIGtpbGwgdGhlIG1ha2VzaGlmdCBvbmUuICovCi0JYWNwaV9ldmFsdWF0ZV9pbnRlZ2VyKGVjLT5jb21tb24uaGFuZGxlLCAiX1VJRCIsIE5VTEwsICZ1aWQpOwotCWlmIChlY19lY2R0ICYmIGVjX2VjZHQtPmNvbW1vbi51aWQgPT0gdWlkKSB7CisJLyogWFhYIHdlIGRvbid0IHRlc3QgdWlkcywgYmVjYXVzZSBvbiBzb21lIGJveGVzIGVjZHQgdWlkID0gMCwgc2VlOgorCSAgIGh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD02MTExICovCisJaWYgKGVjX2VjZHQpIHsKIAkJYWNwaV9yZW1vdmVfYWRkcmVzc19zcGFjZV9oYW5kbGVyKEFDUElfUk9PVF9PQkpFQ1QsCiAJCQkJCQkgIEFDUElfQURSX1NQQUNFX0VDLAogCQkJCQkJICAmYWNwaV9lY19zcGFjZV9oYW5kbGVyKTsKQEAgLTEzMDAsNyArMTMwMiw3IEBACiAJCQkJICAmZWNfZWNkdC0+Y29tbW9uLmdwZV9iaXQpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKIAkJcmV0dXJuIHN0YXR1czsKLQlzcGluX2xvY2tfaW5pdCgmZWNfZWNkdC0+cG9sbC5sb2NrKTsKKwlpbml0X01VVEVYKCZlY19lY2R0LT5wb2xsLnNlbSk7CiAJZWNfZWNkdC0+Y29tbW9uLmdsb2JhbF9sb2NrID0gVFJVRTsKIAllY19lY2R0LT5jb21tb24uaGFuZGxlID0gaGFuZGxlOwogCkBAIC0xNDE2LDcgKzE0MTgsNyBAQAogCWVjX2VjZHQtPmNvbW1vbi5zdGF0dXNfYWRkciA9IGVjZHRfcHRyLT5lY19jb250cm9sOwogCWVjX2VjZHQtPmNvbW1vbi5kYXRhX2FkZHIgPSBlY2R0X3B0ci0+ZWNfZGF0YTsKIAllY19lY2R0LT5jb21tb24uZ3BlX2JpdCA9IGVjZHRfcHRyLT5ncGVfYml0OwotCXNwaW5fbG9ja19pbml0KCZlY19lY2R0LT5wb2xsLmxvY2spOworCWluaXRfTVVURVgoJmVjX2VjZHQtPnBvbGwuc2VtKTsKIAkvKiB1c2UgdGhlIEdMIGp1c3QgdG8gYmUgc2FmZSAqLwogCWVjX2VjZHQtPmNvbW1vbi5nbG9iYWxfbG9jayA9IFRSVUU7CiAJZWNfZWNkdC0+Y29tbW9uLnVpZCA9IGVjZHRfcHRyLT51aWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2ZXZlbnQuYyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZldmVudC5jCmluZGV4IGM5YWMwNWMuLjkxOTAzN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZldmVudC5jCisrKyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZldmVudC5jCkBAIC02OCw3ICs2OCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfaW5pdGlhbGl6ZV9ldmVudHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2luaXRpYWxpemVfZXZlbnRzKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIEFDUEkgdGFibGVzICovCiAKQEAgLTExOCw3ICsxMTgsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfZmFkdF9ncGVzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9pbnN0YWxsX2ZhZHRfZ3Blcyk7CiAKIAkvKiBOYW1lc3BhY2UgbXVzdCBiZSBsb2NrZWQgKi8KIApAQCAtMTU3LDcgKzE1Nyw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfaW5zdGFsbF94cnVwdF9oYW5kbGVycyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfaW5zdGFsbF94cnVwdF9oYW5kbGVycyk7CiAKIAkvKiBJbnN0YWxsIHRoZSBTQ0kgaGFuZGxlciAqLwogCkBAIC0yNDEsNyArMjQxLDcgQEAKIAl1MzIgZml4ZWRfZW5hYmxlOwogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiZXZfZml4ZWRfZXZlbnRfZGV0ZWN0Iik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGV2X2ZpeGVkX2V2ZW50X2RldGVjdCk7CiAKIAkvKgogCSAqIFJlYWQgdGhlIGZpeGVkIGZlYXR1cmUgc3RhdHVzIGFuZCBlbmFibGUgcmVnaXN0ZXJzLCBhcyBhbGwgdGhlIGNhc2VzCkBAIC0yNjAsMTIgKzI2MCwxNCBAQAogCSAqIENoZWNrIGZvciBhbGwgcG9zc2libGUgRml4ZWQgRXZlbnRzIGFuZCBkaXNwYXRjaCB0aG9zZSB0aGF0IGFyZSBhY3RpdmUKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQUNQSV9OVU1fRklYRURfRVZFTlRTOyBpKyspIHsKKwogCQkvKiBCb3RoIHRoZSBzdGF0dXMgYW5kIGVuYWJsZSBiaXRzIG11c3QgYmUgb24gZm9yIHRoaXMgZXZlbnQgKi8KIAogCQlpZiAoKGZpeGVkX3N0YXR1cyAmIGFjcGlfZ2JsX2ZpeGVkX2V2ZW50X2luZm9baV0uCiAJCSAgICAgc3RhdHVzX2JpdF9tYXNrKQogCQkgICAgJiYgKGZpeGVkX2VuYWJsZSAmIGFjcGlfZ2JsX2ZpeGVkX2V2ZW50X2luZm9baV0uCiAJCQllbmFibGVfYml0X21hc2spKSB7CisKIAkJCS8qIEZvdW5kIGFuIGFjdGl2ZSAoc2lnbmFsbGVkKSBldmVudCAqLwogCiAJCQlpbnRfc3RhdHVzIHw9IGFjcGlfZXZfZml4ZWRfZXZlbnRfZGlzcGF0Y2goKHUzMikgaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2Z3BlLmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2Z3BlLmMKaW5kZXggZjY0Zjk3Ny4uZjAxZDMzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldmdwZS5jCisrKyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZncGUuYwpAQCAtNjksNyArNjksNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X3NldF9ncGVfdHlwZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfc2V0X2dwZV90eXBlKTsKIAogCS8qIFZhbGlkYXRlIHR5cGUgYW5kIHVwZGF0ZSByZWdpc3RlciBlbmFibGUgbWFza3MgKi8KIApAQCAtMTE1LDcgKzExNSw3IEBACiAJc3RydWN0IGFjcGlfZ3BlX3JlZ2lzdGVyX2luZm8gKmdwZV9yZWdpc3Rlcl9pbmZvOwogCXU4IHJlZ2lzdGVyX2JpdDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X3VwZGF0ZV9ncGVfZW5hYmxlX21hc2tzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl91cGRhdGVfZ3BlX2VuYWJsZV9tYXNrcyk7CiAKIAlncGVfcmVnaXN0ZXJfaW5mbyA9IGdwZV9ldmVudF9pbmZvLT5yZWdpc3Rlcl9pbmZvOwogCWlmICghZ3BlX3JlZ2lzdGVyX2luZm8pIHsKQEAgLTE3OCw3ICsxNzgsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2VuYWJsZV9ncGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2VuYWJsZV9ncGUpOwogCiAJLyogTWFrZSBzdXJlIEhXIGVuYWJsZSBtYXNrcyBhcmUgdXBkYXRlZCAqLwogCkBAIC0yMDcsNiArMjA3LDcgQEAKIAkJQUNQSV9TRVRfQklUKGdwZV9ldmVudF9pbmZvLT5mbGFncywgQUNQSV9HUEVfUlVOX0VOQUJMRUQpOwogCiAJCWlmICh3cml0ZV90b19oYXJkd2FyZSkgeworCiAJCQkvKiBDbGVhciB0aGUgR1BFIChvZiBzdGFsZSBldmVudHMpLCB0aGVuIGVuYWJsZSBpdCAqLwogCiAJCQlzdGF0dXMgPSBhY3BpX2h3X2NsZWFyX2dwZShncGVfZXZlbnRfaW5mbyk7CkBAIC0yNDMsNyArMjQ0LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9kaXNhYmxlX2dwZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfZGlzYWJsZV9ncGUpOwogCiAJaWYgKCEoZ3BlX2V2ZW50X2luZm8tPmZsYWdzICYgQUNQSV9HUEVfRU5BQkxFX01BU0spKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC0zMTMsNiArMzE0LDcgQEAKIAkvKiBBIE5VTEwgZ3BlX2Jsb2NrIG1lYW5zIHVzZSB0aGUgRkFEVC1kZWZpbmVkIEdQRSBibG9jayhzKSAqLwogCiAJaWYgKCFncGVfZGV2aWNlKSB7CisKIAkJLyogRXhhbWluZSBHUEUgQmxvY2sgMCBhbmQgMSAoVGhlc2UgYmxvY2tzIGFyZSBwZXJtYW5lbnQpICovCiAKIAkJZm9yIChpID0gMDsgaSA8IEFDUElfTUFYX0dQRV9CTE9DS1M7IGkrKykgewpAQCAtMzgwLDEwICszODIsMTEgQEAKIAl1MzIgc3RhdHVzX3JlZzsKIAl1MzIgZW5hYmxlX3JlZzsKIAlhY3BpX2NwdV9mbGFncyBmbGFnczsKKwlhY3BpX2NwdV9mbGFncyBod19mbGFnczsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAJYWNwaV9uYXRpdmVfdWludCBqOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJldl9ncGVfZGV0ZWN0Iik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGV2X2dwZV9kZXRlY3QpOwogCiAJLyogQ2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSBubyBHUEVzICovCiAKQEAgLTM5MSw5ICszOTQsMTIgQEAKIAkJcmV0dXJuIChpbnRfc3RhdHVzKTsKIAl9CiAKLQkvKiBFeGFtaW5lIGFsbCBHUEUgYmxvY2tzIGF0dGFjaGVkIHRvIHRoaXMgaW50ZXJydXB0IGxldmVsICovCisJLyogV2UgbmVlZCB0byBob2xkIHRoZSBHUEUgbG9jayBub3csIGhhcmR3YXJlIGxvY2sgaW4gdGhlIGxvb3AgKi8KIAogCWZsYWdzID0gYWNwaV9vc19hY3F1aXJlX2xvY2soYWNwaV9nYmxfZ3BlX2xvY2spOworCisJLyogRXhhbWluZSBhbGwgR1BFIGJsb2NrcyBhdHRhY2hlZCB0byB0aGlzIGludGVycnVwdCBsZXZlbCAqLworCiAJZ3BlX2Jsb2NrID0gZ3BlX3hydXB0X2xpc3QtPmdwZV9ibG9ja19saXN0X2hlYWQ7CiAJd2hpbGUgKGdwZV9ibG9jaykgewogCQkvKgpAQCAtNDAyLDEwICs0MDgsMTMgQEAKIAkJICogRmluZCBhbGwgY3VycmVudGx5IGFjdGl2ZSBHUCBldmVudHMuCiAJCSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgZ3BlX2Jsb2NrLT5yZWdpc3Rlcl9jb3VudDsgaSsrKSB7CisKIAkJCS8qIEdldCB0aGUgbmV4dCBzdGF0dXMvZW5hYmxlIHBhaXIgKi8KIAogCQkJZ3BlX3JlZ2lzdGVyX2luZm8gPSAmZ3BlX2Jsb2NrLT5yZWdpc3Rlcl9pbmZvW2ldOwogCisJCQlod19mbGFncyA9IGFjcGlfb3NfYWNxdWlyZV9sb2NrKGFjcGlfZ2JsX2hhcmR3YXJlX2xvY2spOworCiAJCQkvKiBSZWFkIHRoZSBTdGF0dXMgUmVnaXN0ZXIgKi8KIAogCQkJc3RhdHVzID0KQEAgLTQxNCw2ICs0MjMsOCBAQAogCQkJCQkJICAgJmdwZV9yZWdpc3Rlcl9pbmZvLT4KIAkJCQkJCSAgIHN0YXR1c19hZGRyZXNzKTsKIAkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQkJCWFjcGlfb3NfcmVsZWFzZV9sb2NrKGFjcGlfZ2JsX2hhcmR3YXJlX2xvY2ssCisJCQkJCQkgICAgIGh3X2ZsYWdzKTsKIAkJCQlnb3RvIHVubG9ja19hbmRfZXhpdDsKIAkJCX0KIApAQCAtNDI0LDYgKzQzNSw4IEBACiAJCQkJCQkgICAmZW5hYmxlX3JlZywKIAkJCQkJCSAgICZncGVfcmVnaXN0ZXJfaW5mby0+CiAJCQkJCQkgICBlbmFibGVfYWRkcmVzcyk7CisJCQlhY3BpX29zX3JlbGVhc2VfbG9jayhhY3BpX2dibF9oYXJkd2FyZV9sb2NrLCBod19mbGFncyk7CisKIAkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQkJCWdvdG8gdW5sb2NrX2FuZF9leGl0OwogCQkJfQpAQCAtNDM3LDYgKzQ1MCw3IEBACiAKIAkJCWVuYWJsZWRfc3RhdHVzX2J5dGUgPSAodTgpIChzdGF0dXNfcmVnICYgZW5hYmxlX3JlZyk7CiAJCQlpZiAoIWVuYWJsZWRfc3RhdHVzX2J5dGUpIHsKKwogCQkJCS8qIE5vIGFjdGl2ZSBHUEVzIGluIHRoaXMgcmVnaXN0ZXIsIG1vdmUgb24gKi8KIAogCQkJCWNvbnRpbnVlOwpAQCAtNDQ1LDYgKzQ1OSw3IEBACiAJCQkvKiBOb3cgbG9vayBhdCB0aGUgaW5kaXZpZHVhbCBHUEVzIGluIHRoaXMgYnl0ZSByZWdpc3RlciAqLwogCiAJCQlmb3IgKGogPSAwOyBqIDwgQUNQSV9HUEVfUkVHSVNURVJfV0lEVEg7IGorKykgeworCiAJCQkJLyogRXhhbWluZSBvbmUgR1BFIGJpdCAqLwogCiAJCQkJaWYgKGVuYWJsZWRfc3RhdHVzX2J5dGUgJgpAQCAtNDgzLDkgKzQ5OCw5IEBACiAgKgogICogUkVUVVJOOiAgICAgIE5vbmUKICAqCi0gKiBERVNDUklQVElPTjogUGVyZm9ybSB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiBhIEdQRSBjb250cm9sIG1ldGhvZC4gIFRoaXMKLSAqICAgICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBhbiBpbnZvY2F0aW9uIG9mIGFjcGlfb3NfcXVldWVfZm9yX2V4ZWN1dGlvbgotICogICAgICAgICAgICAgIChhbmQgdGhlcmVmb3JlIGRvZXMgTk9UIGV4ZWN1dGUgYXQgaW50ZXJydXB0IGxldmVsKSBzbyB0aGF0CisgKiBERVNDUklQVElPTjogUGVyZm9ybSB0aGUgYWN0dWFsIGV4ZWN1dGlvbiBvZiBhIEdQRSBjb250cm9sIG1ldGhvZC4gVGhpcworICogICAgICAgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGFuIGludm9jYXRpb24gb2YgYWNwaV9vc19leGVjdXRlIGFuZAorICogICAgICAgICAgICAgIHRoZXJlZm9yZSBkb2VzIE5PVCBleGVjdXRlIGF0IGludGVycnVwdCBsZXZlbCAtIHNvIHRoYXQKICAqICAgICAgICAgICAgICB0aGUgY29udHJvbCBtZXRob2QgaXRzZWxmIGlzIG5vdCBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZgogICogICAgICAgICAgICAgIGFuIGludGVycnVwdCBoYW5kbGVyLgogICoKQEAgLTQ5NCwxMiArNTA5LDExIEBACiBzdGF0aWMgdm9pZCBBQ1BJX1NZU1RFTV9YRkFDRSBhY3BpX2V2X2FzeW5jaF9leGVjdXRlX2dwZV9tZXRob2Qodm9pZCAqY29udGV4dCkKIHsKIAlzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbyAqZ3BlX2V2ZW50X2luZm8gPSAodm9pZCAqKWNvbnRleHQ7Ci0JdTMyIGdwZV9udW1iZXIgPSAwOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbyBsb2NhbF9ncGVfZXZlbnRfaW5mbzsKLQlzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyBpbmZvOworCXN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9hc3luY2hfZXhlY3V0ZV9ncGVfbWV0aG9kIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9hc3luY2hfZXhlY3V0ZV9ncGVfbWV0aG9kKTsKIAogCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9FVkVOVFMpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewpAQCAtNTM1LDIyICs1NDksMzUgQEAKIAkgKi8KIAlpZiAoKGxvY2FsX2dwZV9ldmVudF9pbmZvLmZsYWdzICYgQUNQSV9HUEVfRElTUEFUQ0hfTUFTSykgPT0KIAkgICAgQUNQSV9HUEVfRElTUEFUQ0hfTUVUSE9EKSB7Ci0JCS8qCi0JCSAqIEludm9rZSB0aGUgR1BFIE1ldGhvZCAoX0x4eCwgX0V4eCkgaS5lLiwgZXZhbHVhdGUgdGhlIF9MeHgvX0V4eAotCQkgKiBjb250cm9sIG1ldGhvZCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgR1BFCi0JCSAqLwotCQlpbmZvLm5vZGUgPSBsb2NhbF9ncGVfZXZlbnRfaW5mby5kaXNwYXRjaC5tZXRob2Rfbm9kZTsKLQkJaW5mby5wYXJhbWV0ZXJzID0KLQkJICAgIEFDUElfQ0FTVF9QVFIodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqLCBncGVfZXZlbnRfaW5mbyk7Ci0JCWluZm8ucGFyYW1ldGVyX3R5cGUgPSBBQ1BJX1BBUkFNX0dQRTsKIAotCQlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlX2J5X2hhbmRsZSgmaW5mbyk7CisJCS8qIEFsbG9jYXRlIHRoZSBldmFsdWF0aW9uIGluZm9ybWF0aW9uIGJsb2NrICovCisKKwkJaW5mbyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHNpemVvZihzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvKSk7CisJCWlmICghaW5mbykgeworCQkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIEludm9rZSB0aGUgR1BFIE1ldGhvZCAoX0x4eCwgX0V4eCkgaS5lLiwgZXZhbHVhdGUgdGhlIF9MeHgvX0V4eAorCQkJICogY29udHJvbCBtZXRob2QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIEdQRQorCQkJICovCisJCQlpbmZvLT5wcmVmaXhfbm9kZSA9CisJCQkgICAgbG9jYWxfZ3BlX2V2ZW50X2luZm8uZGlzcGF0Y2gubWV0aG9kX25vZGU7CisJCQlpbmZvLT5wYXJhbWV0ZXJzID0KKwkJCSAgICBBQ1BJX0NBU1RfUFRSKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKiwKKwkJCQkJICBncGVfZXZlbnRfaW5mbyk7CisJCQlpbmZvLT5wYXJhbWV0ZXJfdHlwZSA9IEFDUElfUEFSQU1fR1BFOworCQkJaW5mby0+ZmxhZ3MgPSBBQ1BJX0lHTk9SRV9SRVRVUk5fVkFMVUU7CisKKwkJCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGUoaW5mbyk7CisJCQlBQ1BJX0ZSRUUoaW5mbyk7CisJCX0KKwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCi0JCQkJCSJXaGlsZSBldmFsdWF0aW5nIG1ldGhvZCBbJTQuNHNdIGZvciBHUEVbJTJYXSIsCisJCQkJCSJXaGlsZSBldmFsdWF0aW5nIEdQRSBtZXRob2QgWyU0LjRzXSIsCiAJCQkJCWFjcGlfdXRfZ2V0X25vZGVfbmFtZQogCQkJCQkobG9jYWxfZ3BlX2V2ZW50X2luZm8uZGlzcGF0Y2guCi0JCQkJCSBtZXRob2Rfbm9kZSksIGdwZV9udW1iZXIpKTsKKwkJCQkJIG1ldGhvZF9ub2RlKSkpOwogCQl9CiAJfQogCkBAIC01OTMsNyArNjIwLDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9ncGVfZGlzcGF0Y2giKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2dwZV9kaXNwYXRjaCk7CiAKIAkvKgogCSAqIElmIGVkZ2UtdHJpZ2dlcmVkLCBjbGVhciB0aGUgR1BFIHN0YXR1cyBiaXQgbm93LiAgTm90ZSB0aGF0CkBAIC02NjksOSArNjk2LDkgQEAKIAkJICogRXhlY3V0ZSB0aGUgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgR1BFCiAJCSAqIE5PVEU6IExldmVsLXRyaWdnZXJlZCBHUEVzIGFyZSBjbGVhcmVkIGFmdGVyIHRoZSBtZXRob2QgY29tcGxldGVzLgogCQkgKi8KLQkJc3RhdHVzID0gYWNwaV9vc19xdWV1ZV9mb3JfZXhlY3V0aW9uKE9TRF9QUklPUklUWV9HUEUsCi0JCQkJCQkgICAgIGFjcGlfZXZfYXN5bmNoX2V4ZWN1dGVfZ3BlX21ldGhvZCwKLQkJCQkJCSAgICAgZ3BlX2V2ZW50X2luZm8pOworCQlzdGF0dXMgPSBhY3BpX29zX2V4ZWN1dGUoT1NMX0dQRV9IQU5ETEVSLAorCQkJCQkgYWNwaV9ldl9hc3luY2hfZXhlY3V0ZV9ncGVfbWV0aG9kLAorCQkJCQkgZ3BlX2V2ZW50X2luZm8pOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCiAJCQkJCSJVbmFibGUgdG8gcXVldWUgaGFuZGxlciBmb3IgR1BFWyUyWF0gLSBldmVudCBkaXNhYmxlZCIsCkBAIC03MTYsNyArNzQzLDcgQEAKICAqCiAgKiBERVNDUklQVElPTjogRGV0ZXJtaW5lIGlmIGEgYSBHUEUgaXMgIndha2Utb25seSIuCiAgKgotICogICAgICAgICAgICAgIENhbGxlZCBmcm9tIE5vdGlmeSgpIGNvZGUgaW4gaW50ZXJwcmV0ZXIgd2hlbiBhICJkZXZpY2Vfd2FrZSIKKyAqICAgICAgICAgICAgICBDYWxsZWQgZnJvbSBOb3RpZnkoKSBjb2RlIGluIGludGVycHJldGVyIHdoZW4gYSAiRGV2aWNlV2FrZSIKICAqICAgICAgICAgICAgICBOb3RpZnkgY29tZXMgaW4uCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTcyNiw3ICs3NTMsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2NoZWNrX2Zvcl93YWtlX29ubHlfZ3BlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9jaGVja19mb3Jfd2FrZV9vbmx5X2dwZSk7CiAKIAlpZiAoKGdwZV9ldmVudF9pbmZvKSAmJgkvKiBPbmx5ID4wIGZvciBfTHh4L19FeHggKi8KIAkgICAgKChncGVfZXZlbnRfaW5mby0+ZmxhZ3MgJiBBQ1BJX0dQRV9TWVNURU1fTUFTSykgPT0gQUNQSV9HUEVfU1lTVEVNX1JVTk5JTkcpKSB7CS8qIFN5c3RlbSBzdGF0ZSBhdCBHUEUgdGltZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldmdwZWJsay5jIGIvZHJpdmVycy9hY3BpL2V2ZW50cy9ldmdwZWJsay5jCmluZGV4IDBmZDAwYjUuLjk1ZGRlYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZncGVibGsuYworKysgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2Z3BlYmxrLmMKQEAgLTEzMSwxNCArMTMxLDE0IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotYWNwaV9zdGF0dXMgYWNwaV9ldl93YWxrX2dwZV9saXN0KEFDUElfR1BFX0NBTExCQUNLIGdwZV93YWxrX2NhbGxiYWNrKQorYWNwaV9zdGF0dXMgYWNwaV9ldl93YWxrX2dwZV9saXN0KGFjcGlfZ3BlX2NhbGxiYWNrIGdwZV93YWxrX2NhbGxiYWNrKQogewogCXN0cnVjdCBhY3BpX2dwZV9ibG9ja19pbmZvICpncGVfYmxvY2s7CiAJc3RydWN0IGFjcGlfZ3BlX3hydXB0X2luZm8gKmdwZV94cnVwdF9pbmZvOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCWFjcGlfY3B1X2ZsYWdzIGZsYWdzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfd2Fsa19ncGVfbGlzdCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfd2Fsa19ncGVfbGlzdCk7CiAKIAlmbGFncyA9IGFjcGlfb3NfYWNxdWlyZV9sb2NrKGFjcGlfZ2JsX2dwZV9sb2NrKTsKIApAQCAtMTQ2LDEwICsxNDYsMTIgQEAKIAogCWdwZV94cnVwdF9pbmZvID0gYWNwaV9nYmxfZ3BlX3hydXB0X2xpc3RfaGVhZDsKIAl3aGlsZSAoZ3BlX3hydXB0X2luZm8pIHsKKwogCQkvKiBXYWxrIGFsbCBHcGUgQmxvY2tzIGF0dGFjaGVkIHRvIHRoaXMgaW50ZXJydXB0IGxldmVsICovCiAKIAkJZ3BlX2Jsb2NrID0gZ3BlX3hydXB0X2luZm8tPmdwZV9ibG9ja19saXN0X2hlYWQ7CiAJCXdoaWxlIChncGVfYmxvY2spIHsKKwogCQkJLyogT25lIGNhbGxiYWNrIHBlciBHUEUgYmxvY2sgKi8KIAogCQkJc3RhdHVzID0gZ3BlX3dhbGtfY2FsbGJhY2soZ3BlX3hydXB0X2luZm8sIGdwZV9ibG9jayk7CkBAIC0xOTAsMTEgKzE5MiwxMiBAQAogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAlhY3BpX25hdGl2ZV91aW50IGo7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9kZWxldGVfZ3BlX2hhbmRsZXJzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9kZWxldGVfZ3BlX2hhbmRsZXJzKTsKIAogCS8qIEV4YW1pbmUgZWFjaCBHUEUgUmVnaXN0ZXIgd2l0aGluIHRoZSBibG9jayAqLwogCiAJZm9yIChpID0gMDsgaSA8IGdwZV9ibG9jay0+cmVnaXN0ZXJfY291bnQ7IGkrKykgeworCiAJCS8qIE5vdyBsb29rIGF0IHRoZSBpbmRpdmlkdWFsIEdQRXMgaW4gdGhpcyBieXRlIHJlZ2lzdGVyICovCiAKIAkJZm9yIChqID0gMDsgaiA8IEFDUElfR1BFX1JFR0lTVEVSX1dJRFRIOyBqKyspIHsKQEAgLTIwNCw3ICsyMDcsNyBAQAogCiAJCQlpZiAoKGdwZV9ldmVudF9pbmZvLT5mbGFncyAmIEFDUElfR1BFX0RJU1BBVENIX01BU0spID09CiAJCQkgICAgQUNQSV9HUEVfRElTUEFUQ0hfSEFORExFUikgewotCQkJCUFDUElfTUVNX0ZSRUUoZ3BlX2V2ZW50X2luZm8tPmRpc3BhdGNoLmhhbmRsZXIpOworCQkJCUFDUElfRlJFRShncGVfZXZlbnRfaW5mby0+ZGlzcGF0Y2guaGFuZGxlcik7CiAJCQkJZ3BlX2V2ZW50X2luZm8tPmRpc3BhdGNoLmhhbmRsZXIgPSBOVUxMOwogCQkJCWdwZV9ldmVudF9pbmZvLT5mbGFncyAmPQogCQkJCSAgICB+QUNQSV9HUEVfRElTUEFUQ0hfTUFTSzsKQEAgLTI0OCw3ICsyNTEsNyBAQAogCXU4IHR5cGU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfc2F2ZV9tZXRob2RfaW5mbyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfc2F2ZV9tZXRob2RfaW5mbyk7CiAKIAkvKgogCSAqIF9MeHggYW5kIF9FeHggR1BFIG1ldGhvZCBzdXBwb3J0CkBAIC0yNzksOSArMjgyLDkgQEAKIAlkZWZhdWx0OgogCQkvKiBVbmtub3duIG1ldGhvZCB0eXBlLCBqdXN0IGlnbm9yZSBpdCEgKi8KIAotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJICAgICJVbmtub3duIEdQRSBtZXRob2QgdHlwZTogJXMgKG5hbWUgbm90IG9mIGZvcm0gX0x4eCBvciBfRXh4KSIsCi0JCQkgICAgbmFtZSkpOworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0xPQUQsCisJCQkJICAiSWdub3JpbmcgdW5rbm93biBHUEUgbWV0aG9kIHR5cGU6ICVzIChuYW1lIG5vdCBvZiBmb3JtIF9MeHggb3IgX0V4eCkiLAorCQkJCSAgbmFtZSkpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogCX0KIApAQCAtMjg5LDExICsyOTIsMTIgQEAKIAogCWdwZV9udW1iZXIgPSBBQ1BJX1NUUlRPVUwoJm5hbWVbMl0sIE5VTEwsIDE2KTsKIAlpZiAoZ3BlX251bWJlciA9PSBBQ1BJX1VJTlQzMl9NQVgpIHsKKwogCQkvKiBDb252ZXJzaW9uIGZhaWxlZDsgaW52YWxpZCBtZXRob2QsIGp1c3QgaWdub3JlIGl0ICovCiAKLQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCSAgICAiQ291bGQgbm90IGV4dHJhY3QgR1BFIG51bWJlciBmcm9tIG5hbWU6ICVzIChuYW1lIGlzIG5vdCBvZiBmb3JtIF9MeHggb3IgX0V4eCkiLAotCQkJICAgIG5hbWUpKTsKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9MT0FELAorCQkJCSAgIkNvdWxkIG5vdCBleHRyYWN0IEdQRSBudW1iZXIgZnJvbSBuYW1lOiAlcyAobmFtZSBpcyBub3Qgb2YgZm9ybSBfTHh4IG9yIF9FeHgpIiwKKwkJCQkgIG5hbWUpKTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIAl9CiAKQEAgLTM2NCwxMyArMzY4LDE0IEBACiAJdTMyIGdwZV9udW1iZXI7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfbWF0Y2hfcHJ3X2FuZF9ncGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X21hdGNoX3Byd19hbmRfZ3BlKTsKIAogCS8qIENoZWNrIGZvciBhIF9QUlcgbWV0aG9kIHVuZGVyIHRoaXMgZGV2aWNlICovCiAKIAlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChvYmpfaGFuZGxlLCBNRVRIT0RfTkFNRV9fUFJXLAogCQkJCQkgQUNQSV9CVFlQRV9QQUNLQUdFLCAmcGtnX2Rlc2MpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCiAJCS8qIElnbm9yZSBhbGwgZXJyb3JzIGZyb20gX1BSVywgd2UgZG9uJ3Qgd2FudCB0byBhYm9ydCB0aGUgc3Vic3lzdGVtICovCiAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKQEAgLTM5NCw2ICszOTksNyBAQAogCW9ial9kZXNjID0gcGtnX2Rlc2MtPnBhY2thZ2UuZWxlbWVudHNbMF07CiAKIAlpZiAoQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpID09IEFDUElfVFlQRV9JTlRFR0VSKSB7CisKIAkJLyogVXNlIEZBRFQtZGVmaW5lZCBHUEUgZGV2aWNlIChmcm9tIGRlZmluaXRpb24gb2YgX1BSVykgKi8KIAogCQl0YXJnZXRfZ3BlX2RldmljZSA9IGFjcGlfZ2JsX2ZhZHRfZ3BlX2RldmljZTsKQEAgLTQwMiw2ICs0MDgsNyBAQAogCiAJCWdwZV9udW1iZXIgPSAodTMyKSBvYmpfZGVzYy0+aW50ZWdlci52YWx1ZTsKIAl9IGVsc2UgaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSA9PSBBQ1BJX1RZUEVfUEFDS0FHRSkgeworCiAJCS8qIFBhY2thZ2UgY29udGFpbnMgYSBHUEUgcmVmZXJlbmNlIGFuZCBHUEUgbnVtYmVyIHdpdGhpbiBhIEdQRSBibG9jayAqLwogCiAJCWlmICgob2JqX2Rlc2MtPnBhY2thZ2UuY291bnQgPCAyKSB8fApAQCAtNDgyLDcgKzQ4OSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfY3B1X2ZsYWdzIGZsYWdzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfZ2V0X2dwZV94cnVwdF9ibG9jayIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfZ2V0X2dwZV94cnVwdF9ibG9jayk7CiAKIAkvKiBObyBuZWVkIGZvciBsb2NrIHNpbmNlIHdlIGFyZSBub3QgY2hhbmdpbmcgYW55IGxpc3QgZWxlbWVudHMgaGVyZSAqLwogCkBAIC00OTcsNyArNTA0LDcgQEAKIAogCS8qIE5vdCBmb3VuZCwgbXVzdCBhbGxvY2F0ZSBhIG5ldyB4cnVwdCBkZXNjcmlwdG9yICovCiAKLQlncGVfeHJ1cHQgPSBBQ1BJX01FTV9DQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvKSk7CisJZ3BlX3hydXB0ID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvKSk7CiAJaWYgKCFncGVfeHJ1cHQpIHsKIAkJcmV0dXJuX1BUUihOVUxMKTsKIAl9CkBAIC01NTYsNyArNTYzLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJYWNwaV9jcHVfZmxhZ3MgZmxhZ3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9kZWxldGVfZ3BlX3hydXB0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9kZWxldGVfZ3BlX3hydXB0KTsKIAogCS8qIFdlIG5ldmVyIHdhbnQgdG8gcmVtb3ZlIHRoZSBTQ0kgaW50ZXJydXB0IGhhbmRsZXIgKi8KIApAQCAtNTg4LDcgKzU5NSw3IEBACiAKIAkvKiBGcmVlIHRoZSBibG9jayAqLwogCi0JQUNQSV9NRU1fRlJFRShncGVfeHJ1cHQpOworCUFDUElfRlJFRShncGVfeHJ1cHQpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CiAKQEAgLTYxNCw3ICs2MjEsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX2NwdV9mbGFncyBmbGFnczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfZ3BlX2Jsb2NrIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9pbnN0YWxsX2dwZV9ibG9jayk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfRVZFTlRTKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTY2Nyw3ICs2NzQsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX2NwdV9mbGFncyBmbGFnczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfZ3BlX2Jsb2NrIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9pbnN0YWxsX2dwZV9ibG9jayk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfRVZFTlRTKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTY3OSw2ICs2ODYsNyBAQAogCXN0YXR1cyA9IGFjcGlfaHdfZGlzYWJsZV9ncGVfYmxvY2soZ3BlX2Jsb2NrLT54cnVwdF9ibG9jaywgZ3BlX2Jsb2NrKTsKIAogCWlmICghZ3BlX2Jsb2NrLT5wcmV2aW91cyAmJiAhZ3BlX2Jsb2NrLT5uZXh0KSB7CisKIAkJLyogVGhpcyBpcyB0aGUgbGFzdCBncGVfYmxvY2sgb24gdGhpcyBpbnRlcnJ1cHQgKi8KIAogCQlzdGF0dXMgPSBhY3BpX2V2X2RlbGV0ZV9ncGVfeHJ1cHQoZ3BlX2Jsb2NrLT54cnVwdF9ibG9jayk7CkBAIC03MDQsOSArNzEyLDkgQEAKIAogCS8qIEZyZWUgdGhlIGdwZV9ibG9jayAqLwogCi0JQUNQSV9NRU1fRlJFRShncGVfYmxvY2stPnJlZ2lzdGVyX2luZm8pOwotCUFDUElfTUVNX0ZSRUUoZ3BlX2Jsb2NrLT5ldmVudF9pbmZvKTsKLQlBQ1BJX01FTV9GUkVFKGdwZV9ibG9jayk7CisJQUNQSV9GUkVFKGdwZV9ibG9jay0+cmVnaXN0ZXJfaW5mbyk7CisJQUNQSV9GUkVFKGdwZV9ibG9jay0+ZXZlbnRfaW5mbyk7CisJQUNQSV9GUkVFKGdwZV9ibG9jayk7CiAKICAgICAgIHVubG9ja19hbmRfZXhpdDoKIAlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfRVZFTlRTKTsKQEAgLTczNiwxNyArNzQ0LDE3IEBACiAJYWNwaV9uYXRpdmVfdWludCBqOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2NyZWF0ZV9ncGVfaW5mb19ibG9ja3MiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2NyZWF0ZV9ncGVfaW5mb19ibG9ja3MpOwogCiAJLyogQWxsb2NhdGUgdGhlIEdQRSByZWdpc3RlciBpbmZvcm1hdGlvbiBibG9jayAqLwogCi0JZ3BlX3JlZ2lzdGVyX2luZm8gPSBBQ1BJX01FTV9DQUxMT0NBVEUoKGFjcGlfc2l6ZSkgZ3BlX2Jsb2NrLT4KLQkJCQkJICAgICAgIHJlZ2lzdGVyX2NvdW50ICoKLQkJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QKLQkJCQkJCSAgICAgIGFjcGlfZ3BlX3JlZ2lzdGVyX2luZm8pKTsKKwlncGVfcmVnaXN0ZXJfaW5mbyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKChhY3BpX3NpemUpIGdwZV9ibG9jay0+CisJCQkJCQkgcmVnaXN0ZXJfY291bnQgKgorCQkJCQkJIHNpemVvZihzdHJ1Y3QKKwkJCQkJCQlhY3BpX2dwZV9yZWdpc3Rlcl9pbmZvKSk7CiAJaWYgKCFncGVfcmVnaXN0ZXJfaW5mbykgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJICAgICJDb3VsZCBub3QgYWxsb2NhdGUgdGhlIGdwZV9yZWdpc3Rlcl9pbmZvIHRhYmxlIikpOworCQkJICAgICJDb3VsZCBub3QgYWxsb2NhdGUgdGhlIEdwZVJlZ2lzdGVySW5mbyB0YWJsZSIpKTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQogCkBAIC03NTQsMTMgKzc2MiwxNCBAQAogCSAqIEFsbG9jYXRlIHRoZSBHUEUgZXZlbnRfaW5mbyBibG9jay4gVGhlcmUgYXJlIGVpZ2h0IGRpc3RpbmN0IEdQRXMKIAkgKiBwZXIgcmVnaXN0ZXIuIEluaXRpYWxpemF0aW9uIHRvIHplcm9zIGlzIHN1ZmZpY2llbnQuCiAJICovCi0JZ3BlX2V2ZW50X2luZm8gPSBBQ1BJX01FTV9DQUxMT0NBVEUoKChhY3BpX3NpemUpIGdwZV9ibG9jay0+Ci0JCQkJCSAgICAgcmVnaXN0ZXJfY291bnQgKgotCQkJCQkgICAgIEFDUElfR1BFX1JFR0lTVEVSX1dJRFRIKSAqCi0JCQkJCSAgICBzaXplb2Yoc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8pKTsKKwlncGVfZXZlbnRfaW5mbyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKCgoYWNwaV9zaXplKSBncGVfYmxvY2stPgorCQkJCQkgICAgICAgcmVnaXN0ZXJfY291bnQgKgorCQkJCQkgICAgICAgQUNQSV9HUEVfUkVHSVNURVJfV0lEVEgpICoKKwkJCQkJICAgICAgc2l6ZW9mKHN0cnVjdAorCQkJCQkJICAgICBhY3BpX2dwZV9ldmVudF9pbmZvKSk7CiAJaWYgKCFncGVfZXZlbnRfaW5mbykgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJICAgICJDb3VsZCBub3QgYWxsb2NhdGUgdGhlIGdwZV9ldmVudF9pbmZvIHRhYmxlIikpOworCQkJICAgICJDb3VsZCBub3QgYWxsb2NhdGUgdGhlIEdwZUV2ZW50SW5mbyB0YWJsZSIpKTsKIAkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOwogCQlnb3RvIGVycm9yX2V4aXQ7CiAJfQpAQCAtNzgwLDYgKzc4OSw3IEBACiAJdGhpc19ldmVudCA9IGdwZV9ldmVudF9pbmZvOwogCiAJZm9yIChpID0gMDsgaSA8IGdwZV9ibG9jay0+cmVnaXN0ZXJfY291bnQ7IGkrKykgeworCiAJCS8qIEluaXQgdGhlIHJlZ2lzdGVyX2luZm8gZm9yIHRoaXMgR1BFIHJlZ2lzdGVyICg4IEdQRXMpICovCiAKIAkJdGhpc19yZWdpc3Rlci0+YmFzZV9ncGVfbnVtYmVyID0KQEAgLTgzOSwxMCArODQ5LDEwIEBACiAKICAgICAgIGVycm9yX2V4aXQ6CiAJaWYgKGdwZV9yZWdpc3Rlcl9pbmZvKSB7Ci0JCUFDUElfTUVNX0ZSRUUoZ3BlX3JlZ2lzdGVyX2luZm8pOworCQlBQ1BJX0ZSRUUoZ3BlX3JlZ2lzdGVyX2luZm8pOwogCX0KIAlpZiAoZ3BlX2V2ZW50X2luZm8pIHsKLQkJQUNQSV9NRU1fRlJFRShncGVfZXZlbnRfaW5mbyk7CisJCUFDUElfRlJFRShncGVfZXZlbnRfaW5mbyk7CiAJfQogCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CkBAIC04NzgsNyArODg4LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfZ3BlX2Jsb2NrX2luZm8gKmdwZV9ibG9jazsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2NyZWF0ZV9ncGVfYmxvY2siKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2NyZWF0ZV9ncGVfYmxvY2spOwogCiAJaWYgKCFyZWdpc3Rlcl9jb3VudCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwpAQCAtODg2LDcgKzg5Niw3IEBACiAKIAkvKiBBbGxvY2F0ZSBhIG5ldyBHUEUgYmxvY2sgKi8KIAotCWdwZV9ibG9jayA9IEFDUElfTUVNX0NBTExPQ0FURShzaXplb2Yoc3RydWN0IGFjcGlfZ3BlX2Jsb2NrX2luZm8pKTsKKwlncGVfYmxvY2sgPSBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzaXplb2Yoc3RydWN0IGFjcGlfZ3BlX2Jsb2NrX2luZm8pKTsKIAlpZiAoIWdwZV9ibG9jaykgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAl9CkBAIC05MDYsNyArOTE2LDcgQEAKIAkgKi8KIAlzdGF0dXMgPSBhY3BpX2V2X2NyZWF0ZV9ncGVfaW5mb19ibG9ja3MoZ3BlX2Jsb2NrKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJQUNQSV9NRU1fRlJFRShncGVfYmxvY2spOworCQlBQ1BJX0ZSRUUoZ3BlX2Jsb2NrKTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCkBAIC05MTQsNyArOTI0LDcgQEAKIAogCXN0YXR1cyA9IGFjcGlfZXZfaW5zdGFsbF9ncGVfYmxvY2soZ3BlX2Jsb2NrLCBpbnRlcnJ1cHRfbnVtYmVyKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJQUNQSV9NRU1fRlJFRShncGVfYmxvY2spOworCQlBQ1BJX0ZSRUUoZ3BlX2Jsb2NrKTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCkBAIC05NzEsNyArOTgxLDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAJYWNwaV9uYXRpdmVfdWludCBqOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfaW5pdGlhbGl6ZV9ncGVfYmxvY2siKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2luaXRpYWxpemVfZ3BlX2Jsb2NrKTsKIAogCS8qIElnbm9yZSBhIG51bGwgR1BFIGJsb2NrIChlLmcuLCBpZiBubyBHUEUgYmxvY2sgMSBleGlzdHMpICovCiAKQEAgLTEwMTMsNiArMTAyMyw3IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgZ3BlX2Jsb2NrLT5yZWdpc3Rlcl9jb3VudDsgaSsrKSB7CiAJCWZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKwogCQkJLyogR2V0IHRoZSBpbmZvIGJsb2NrIGZvciB0aGlzIHBhcnRpY3VsYXIgR1BFICovCiAKIAkJCWdwZV9ldmVudF9pbmZvID0KQEAgLTEwNDAsNyArMTA1MSw3IEBACiAKIAlzdGF0dXMgPSBhY3BpX2h3X2VuYWJsZV9ydW50aW1lX2dwZV9ibG9jayhOVUxMLCBncGVfYmxvY2spOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiQ291bGQgbm90IGVuYWJsZSBHUEVzIGluIGdwZV9ibG9jayAlcCIsCisJCUFDUElfRVJST1IoKEFFX0lORk8sICJDb3VsZCBub3QgZW5hYmxlIEdQRXMgaW4gR3BlQmxvY2sgJXAiLAogCQkJICAgIGdwZV9ibG9jaykpOwogCX0KIApAQCAtMTA2Niw3ICsxMDc3LDcgQEAKIAl1MzIgZ3BlX251bWJlcl9tYXggPSAwOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2dwZV9pbml0aWFsaXplIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9ncGVfaW5pdGlhbGl6ZSk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTEwOTksNiArMTExMCw3IEBACiAJICogcGFydGljdWxhciBibG9jayBpcyBub3Qgc3VwcG9ydGVkLgogCSAqLwogCWlmIChhY3BpX2dibF9GQURULT5ncGUwX2Jsa19sZW4gJiYgYWNwaV9nYmxfRkFEVC0+eGdwZTBfYmxrLmFkZHJlc3MpIHsKKwogCQkvKiBHUEUgYmxvY2sgMCBleGlzdHMgKGhhcyBib3RoIGxlbmd0aCBhbmQgYWRkcmVzcyA+IDApICovCiAKIAkJcmVnaXN0ZXJfY291bnQwID0gKHUxNikgKGFjcGlfZ2JsX0ZBRFQtPmdwZTBfYmxrX2xlbiAvIDIpOwpAQCAtMTEyMSw2ICsxMTMzLDcgQEAKIAl9CiAKIAlpZiAoYWNwaV9nYmxfRkFEVC0+Z3BlMV9ibGtfbGVuICYmIGFjcGlfZ2JsX0ZBRFQtPnhncGUxX2Jsay5hZGRyZXNzKSB7CisKIAkJLyogR1BFIGJsb2NrIDEgZXhpc3RzIChoYXMgYm90aCBsZW5ndGggYW5kIGFkZHJlc3MgPiAwKSAqLwogCiAJCXJlZ2lzdGVyX2NvdW50MSA9ICh1MTYpIChhY3BpX2dibF9GQURULT5ncGUxX2Jsa19sZW4gLyAyKTsKQEAgLTExNjgsNiArMTE4MSw3IEBACiAJLyogRXhpdCBpZiB0aGVyZSBhcmUgbm8gR1BFIHJlZ2lzdGVycyAqLwogCiAJaWYgKChyZWdpc3Rlcl9jb3VudDAgKyByZWdpc3Rlcl9jb3VudDEpID09IDApIHsKKwogCQkvKiBHUEVzIGFyZSBub3QgcmVxdWlyZWQgYnkgQUNQSSwgdGhpcyBpcyBPSyAqLwogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5JVCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZtaXNjLmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2bWlzYy5jCmluZGV4IDA5MDliYTYuLjZlZWY0ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZtaXNjLmMKKysrIGIvZHJpdmVycy9hY3BpL2V2ZW50cy9ldm1pc2MuYwpAQCAtNDksMTIgKzQ5LDEzIEBACiAjZGVmaW5lIF9DT01QT05FTlQgICAgICAgICAgQUNQSV9FVkVOVFMKIEFDUElfTU9EVUxFX05BTUUoImV2bWlzYyIpCiAKKy8qIE5hbWVzIGZvciBOb3RpZnkoKSB2YWx1ZXMsIHVzZWQgZm9yIGRlYnVnIG91dHB1dCAqLwogI2lmZGVmIEFDUElfREVCVUdfT1VUUFVUCiBzdGF0aWMgY29uc3QgY2hhciAqYWNwaV9ub3RpZnlfdmFsdWVfbmFtZXNbXSA9IHsKIAkiQnVzIENoZWNrIiwKIAkiRGV2aWNlIENoZWNrIiwKIAkiRGV2aWNlIFdha2UiLAotCSJFamVjdCByZXF1ZXN0IiwKKwkiRWplY3QgUmVxdWVzdCIsCiAJIkRldmljZSBDaGVjayBMaWdodCIsCiAJIkZyZXF1ZW5jeSBNaXNtYXRjaCIsCiAJIkJ1cyBNb2RlIE1pc21hdGNoIiwKQEAgLTEyNCw3ICsxMjUsNyBAQAogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqbm90aWZ5X2luZm87CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImV2X3F1ZXVlX25vdGlmeV9yZXF1ZXN0Iik7CisJQUNQSV9GVU5DVElPTl9OQU1FKGV2X3F1ZXVlX25vdGlmeV9yZXF1ZXN0KTsKIAogCS8qCiAJICogRm9yIHZhbHVlIDMgKEVqZWN0aW9uIFJlcXVlc3QpLCBzb21lIGRldmljZSBtZXRob2QgbWF5IG5lZWQgdG8gYmUgcnVuLgpAQCAtMTUwLDYgKzE1MSw3IEBACiAKIAlvYmpfZGVzYyA9IGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdChub2RlKTsKIAlpZiAob2JqX2Rlc2MpIHsKKwogCQkvKiBXZSBoYXZlIHRoZSBub3RpZnkgb2JqZWN0LCBHZXQgdGhlIHJpZ2h0IGhhbmRsZXIgKi8KIAogCQlzd2l0Y2ggKG5vZGUtPnR5cGUpIHsKQEAgLTE4NCwxNCArMTg2LDE1IEBACiAJCQlyZXR1cm4gKEFFX05PX01FTU9SWSk7CiAJCX0KIAotCQlub3RpZnlfaW5mby0+Y29tbW9uLmRhdGFfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX05PVElGWTsKKwkJbm90aWZ5X2luZm8tPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPQorCQkgICAgQUNQSV9ERVNDX1RZUEVfU1RBVEVfTk9USUZZOwogCQlub3RpZnlfaW5mby0+bm90aWZ5Lm5vZGUgPSBub2RlOwogCQlub3RpZnlfaW5mby0+bm90aWZ5LnZhbHVlID0gKHUxNikgbm90aWZ5X3ZhbHVlOwogCQlub3RpZnlfaW5mby0+bm90aWZ5LmhhbmRsZXJfb2JqID0gaGFuZGxlcl9vYmo7CiAKLQkJc3RhdHVzID0gYWNwaV9vc19xdWV1ZV9mb3JfZXhlY3V0aW9uKE9TRF9QUklPUklUWV9ISUdILAotCQkJCQkJICAgICBhY3BpX2V2X25vdGlmeV9kaXNwYXRjaCwKLQkJCQkJCSAgICAgbm90aWZ5X2luZm8pOworCQlzdGF0dXMgPQorCQkgICAgYWNwaV9vc19leGVjdXRlKE9TTF9OT1RJRllfSEFORExFUiwgYWNwaV9ldl9ub3RpZnlfZGlzcGF0Y2gsCisJCQkJICAgIG5vdGlmeV9pbmZvKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlhY3BpX3V0X2RlbGV0ZV9nZW5lcmljX3N0YXRlKG5vdGlmeV9pbmZvKTsKIAkJfQpAQCAtMjQwLDYgKzI0Myw3IEBACiAJICogdG8gdGhlIGRldmljZS4KIAkgKi8KIAlpZiAobm90aWZ5X2luZm8tPm5vdGlmeS52YWx1ZSA8PSBBQ1BJX01BWF9TWVNfTk9USUZZKSB7CisKIAkJLyogR2xvYmFsIHN5c3RlbSBub3RpZmljYXRpb24gaGFuZGxlciAqLwogCiAJCWlmIChhY3BpX2dibF9zeXN0ZW1fbm90aWZ5LmhhbmRsZXIpIHsKQEAgLTI5Nyw2ICszMDEsNyBAQAogCS8qIFNpZ25hbCB0aHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBsb2NrICovCiAKIAlpZiAoYWNwaV9nYmxfZ2xvYmFsX2xvY2tfdGhyZWFkX2NvdW50KSB7CisKIAkJLyogU2VuZCBzdWZmaWNpZW50IHVuaXRzIHRvIHRoZSBzZW1hcGhvcmUgKi8KIAogCQlzdGF0dXMgPQpAQCAtMzM1LDE1ICszNDAsMTYgQEAKIAkgKi8KIAlBQ1BJX0FDUVVJUkVfR0xPQkFMX0xPQ0soYWNwaV9nYmxfY29tbW9uX2ZBQ1MuZ2xvYmFsX2xvY2ssIGFjcXVpcmVkKTsKIAlpZiAoYWNxdWlyZWQpIHsKKwogCQkvKiBHb3QgdGhlIGxvY2ssIG5vdyB3YWtlIGFsbCB0aHJlYWRzIHdhaXRpbmcgZm9yIGl0ICovCiAKIAkJYWNwaV9nYmxfZ2xvYmFsX2xvY2tfYWNxdWlyZWQgPSBUUlVFOwogCiAJCS8qIFJ1biB0aGUgR2xvYmFsIExvY2sgdGhyZWFkIHdoaWNoIHdpbGwgc2lnbmFsIGFsbCB3YWl0aW5nIHRocmVhZHMgKi8KIAotCQlzdGF0dXMgPSBhY3BpX29zX3F1ZXVlX2Zvcl9leGVjdXRpb24oT1NEX1BSSU9SSVRZX0hJR0gsCi0JCQkJCQkgICAgIGFjcGlfZXZfZ2xvYmFsX2xvY2tfdGhyZWFkLAotCQkJCQkJICAgICBjb250ZXh0KTsKKwkJc3RhdHVzID0KKwkJICAgIGFjcGlfb3NfZXhlY3V0ZShPU0xfR0xPQkFMX0xPQ0tfSEFORExFUiwKKwkJCQkgICAgYWNwaV9ldl9nbG9iYWxfbG9ja190aHJlYWQsIGNvbnRleHQpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCiAJCQkJCSJDb3VsZCBub3QgcXVldWUgR2xvYmFsIExvY2sgdGhyZWFkIikpOwpAQCAtMzcxLDcgKzM3Nyw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfaW5pdF9nbG9iYWxfbG9ja19oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9pbml0X2dsb2JhbF9sb2NrX2hhbmRsZXIpOwogCiAJYWNwaV9nYmxfZ2xvYmFsX2xvY2tfcHJlc2VudCA9IFRSVUU7CiAJc3RhdHVzID0gYWNwaV9pbnN0YWxsX2ZpeGVkX2V2ZW50X2hhbmRsZXIoQUNQSV9FVkVOVF9HTE9CQUwsCkBAIC00MTMsNyArNDE5LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAl1OCBhY3F1aXJlZCA9IEZBTFNFOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfYWNxdWlyZV9nbG9iYWxfbG9jayIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfYWNxdWlyZV9nbG9iYWxfbG9jayk7CiAKICNpZm5kZWYgQUNQSV9BUFBMSUNBVElPTgogCS8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFjdHVhbGx5IGhhdmUgYSBnbG9iYWwgbG9jayAqLwpAQCAtNDM5LDYgKzQ0NSw3IEBACiAKIAlBQ1BJX0FDUVVJUkVfR0xPQkFMX0xPQ0soYWNwaV9nYmxfY29tbW9uX2ZBQ1MuZ2xvYmFsX2xvY2ssIGFjcXVpcmVkKTsKIAlpZiAoYWNxdWlyZWQpIHsKKwogCQkvKiBXZSBnb3QgdGhlIGxvY2sgKi8KIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCkBAIC00NTgsOCArNDY1LDkgQEAKIAkgKiBBY3F1aXJlIHRoZSBnbG9iYWwgbG9jayBzZW1hcGhvcmUgZmlyc3QuCiAJICogU2luY2UgdGhpcyB3YWl0IHdpbGwgYmxvY2ssIHdlIG11c3QgcmVsZWFzZSB0aGUgaW50ZXJwcmV0ZXIKIAkgKi8KLQlzdGF0dXMgPSBhY3BpX2V4X3N5c3RlbV93YWl0X3NlbWFwaG9yZShhY3BpX2dibF9nbG9iYWxfbG9ja19zZW1hcGhvcmUsCi0JCQkJCSAgICAgICB0aW1lb3V0KTsKKwlzdGF0dXMgPQorCSAgICBhY3BpX2V4X3N5c3RlbV93YWl0X3NlbWFwaG9yZShhY3BpX2dibF9nbG9iYWxfbG9ja19zZW1hcGhvcmUsCisJCQkJCSAgdGltZW91dCk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKQEAgLTQ4MCw3ICs0ODgsNyBAQAogCXU4IHBlbmRpbmcgPSBGQUxTRTsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X3JlbGVhc2VfZ2xvYmFsX2xvY2siKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X3JlbGVhc2VfZ2xvYmFsX2xvY2spOwogCiAJaWYgKCFhY3BpX2dibF9nbG9iYWxfbG9ja190aHJlYWRfY291bnQpIHsKIAkJQUNQSV9XQVJOSU5HKChBRV9JTkZPLApAQCAtNDkyLDYgKzUwMCw3IEBACiAKIAlhY3BpX2dibF9nbG9iYWxfbG9ja190aHJlYWRfY291bnQtLTsKIAlpZiAoYWNwaV9nYmxfZ2xvYmFsX2xvY2tfdGhyZWFkX2NvdW50KSB7CisKIAkJLyogVGhlcmUgYXJlIHN0aWxsIHNvbWUgdGhyZWFkcyBob2xkaW5nIHRoZSBsb2NrLCBjYW5ub3QgcmVsZWFzZSAqLwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC01MzMsNyArNTQyLDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfdGVybWluYXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl90ZXJtaW5hdGUpOwogCiAJaWYgKGFjcGlfZ2JsX2V2ZW50c19pbml0aWFsaXplZCkgewogCQkvKgpAQCAtNTczLDcgKzU4Miw3IEBACiAJaWYgKGFjcGlfZ2JsX29yaWdpbmFsX21vZGUgPT0gQUNQSV9TWVNfTU9ERV9MRUdBQ1kpIHsKIAkJc3RhdHVzID0gYWNwaV9kaXNhYmxlKCk7CiAJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkJQUNQSV9XQVJOSU5HKChBRV9JTkZPLCAiYWNwaV9kaXNhYmxlIGZhaWxlZCIpKTsKKwkJCUFDUElfV0FSTklORygoQUVfSU5GTywgIkFjcGlEaXNhYmxlIGZhaWxlZCIpKTsKIAkJfQogCX0KIAlyZXR1cm5fVk9JRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZyZWdpb24uYyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZyZWdpb24uYwppbmRleCA2ZGE1OGU3Li4wOTRhMTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2cmVnaW9uLmMKKysrIGIvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnJlZ2lvbi5jCkBAIC04Myw3ICs4Myw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfcmVnaW9uX2hhbmRsZXJzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9pbnN0YWxsX3JlZ2lvbl9oYW5kbGVycyk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9pbml0aWFsaXplX29wX3JlZ2lvbnMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2luaXRpYWxpemVfb3BfcmVnaW9ucyk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTE2NCw2ICsxNjQsNyBAQAogCSAqIFJ1biB0aGUgX1JFRyBtZXRob2RzIGZvciBvcF9yZWdpb25zIGluIGVhY2ggZGVmYXVsdCBhZGRyZXNzIHNwYWNlCiAJICovCiAJZm9yIChpID0gMDsgaSA8IEFDUElfTlVNX0RFRkFVTFRfU1BBQ0VTOyBpKyspIHsKKwogCQkvKiBUQkQ6IE1ha2Ugc3VyZSBoYW5kbGVyIGlzIHRoZSBERUZBVUxUIGhhbmRsZXIsIG90aGVyd2lzZQogCQkgKiBfUkVHIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gcnVuLgogCQkgKi8KQEAgLTE5MiwxMiArMTkzLDEyIEBACiBhY3BpX3N0YXR1cwogYWNwaV9ldl9leGVjdXRlX3JlZ19tZXRob2QodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVnaW9uX29iaiwgdTMyIGZ1bmN0aW9uKQogewotCXN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvIGluZm87Ci0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcGFyYW1zWzNdOworCXN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm87CisJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqYXJnc1szXTsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZWdpb25fb2JqMjsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9leGVjdXRlX3JlZ19tZXRob2QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2V4ZWN1dGVfcmVnX21ldGhvZCk7CiAKIAlyZWdpb25fb2JqMiA9IGFjcGlfbnNfZ2V0X3NlY29uZGFyeV9vYmplY3QocmVnaW9uX29iaik7CiAJaWYgKCFyZWdpb25fb2JqMikgewpAQCAtMjA4LDQ4ICsyMDksNjAgQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIAl9CiAKLQkvKgotCSAqIFRoZSBfUkVHIG1ldGhvZCBoYXMgdHdvIGFyZ3VtZW50czoKLQkgKgotCSAqIEFyZzAsIEludGVnZXI6IE9wZXJhdGlvbiByZWdpb24gc3BhY2UgSUQKLQkgKiAgICAgICAgICBTYW1lIHZhbHVlIGFzIHJlZ2lvbl9vYmotPlJlZ2lvbi5zcGFjZV9pZAotCSAqIEFyZzEsIEludGVnZXI6IGNvbm5lY3Rpb24gc3RhdHVzCi0JICogICAgICAgICAgMSBmb3IgY29ubmVjdGluZyB0aGUgaGFuZGxlciwKLQkgKiAgICAgICAgICAwIGZvciBkaXNjb25uZWN0aW5nIHRoZSBoYW5kbGVyCi0JICogICAgICAgICAgUGFzc2VkIGFzIGEgcGFyYW1ldGVyCi0JICovCi0JcGFyYW1zWzBdID0gYWNwaV91dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0KEFDUElfVFlQRV9JTlRFR0VSKTsKLQlpZiAoIXBhcmFtc1swXSkgeworCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBldmFsdWF0aW9uIGluZm9ybWF0aW9uIGJsb2NrICovCisKKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8pKTsKKwlpZiAoIWluZm8pIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQogCi0JcGFyYW1zWzFdID0gYWNwaV91dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0KEFDUElfVFlQRV9JTlRFR0VSKTsKLQlpZiAoIXBhcmFtc1sxXSkgeworCWluZm8tPnByZWZpeF9ub2RlID0gcmVnaW9uX29iajItPmV4dHJhLm1ldGhvZF9SRUc7CisJaW5mby0+cGF0aG5hbWUgPSBOVUxMOworCWluZm8tPnBhcmFtZXRlcnMgPSBhcmdzOworCWluZm8tPnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOworCWluZm8tPmZsYWdzID0gQUNQSV9JR05PUkVfUkVUVVJOX1ZBTFVFOworCisJLyoKKwkgKiBUaGUgX1JFRyBtZXRob2QgaGFzIHR3byBhcmd1bWVudHM6CisJICoKKwkgKiBBcmcwIC0gSW50ZWdlcjoKKwkgKiAgT3BlcmF0aW9uIHJlZ2lvbiBzcGFjZSBJRCBTYW1lIHZhbHVlIGFzIHJlZ2lvbl9vYmotPlJlZ2lvbi5zcGFjZV9pZAorCSAqCisJICogQXJnMSAtIEludGVnZXI6CisJICogIGNvbm5lY3Rpb24gc3RhdHVzIDEgZm9yIGNvbm5lY3RpbmcgdGhlIGhhbmRsZXIsIDAgZm9yIGRpc2Nvbm5lY3RpbmcKKwkgKiAgdGhlIGhhbmRsZXIgKFBhc3NlZCBhcyBhIHBhcmFtZXRlcikKKwkgKi8KKwlhcmdzWzBdID0gYWNwaV91dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0KEFDUElfVFlQRV9JTlRFR0VSKTsKKwlpZiAoIWFyZ3NbMF0pIHsKIAkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOwotCQlnb3RvIGNsZWFudXA7CisJCWdvdG8gY2xlYW51cDE7CisJfQorCisJYXJnc1sxXSA9IGFjcGlfdXRfY3JlYXRlX2ludGVybmFsX29iamVjdChBQ1BJX1RZUEVfSU5URUdFUik7CisJaWYgKCFhcmdzWzFdKSB7CisJCXN0YXR1cyA9IEFFX05PX01FTU9SWTsKKwkJZ290byBjbGVhbnVwMjsKIAl9CiAKIAkvKiBTZXR1cCB0aGUgcGFyYW1ldGVyIG9iamVjdHMgKi8KIAotCXBhcmFtc1swXS0+aW50ZWdlci52YWx1ZSA9IHJlZ2lvbl9vYmotPnJlZ2lvbi5zcGFjZV9pZDsKLQlwYXJhbXNbMV0tPmludGVnZXIudmFsdWUgPSBmdW5jdGlvbjsKLQlwYXJhbXNbMl0gPSBOVUxMOwotCi0JaW5mby5ub2RlID0gcmVnaW9uX29iajItPmV4dHJhLm1ldGhvZF9SRUc7Ci0JaW5mby5wYXJhbWV0ZXJzID0gcGFyYW1zOwotCWluZm8ucGFyYW1ldGVyX3R5cGUgPSBBQ1BJX1BBUkFNX0FSR1M7CisJYXJnc1swXS0+aW50ZWdlci52YWx1ZSA9IHJlZ2lvbl9vYmotPnJlZ2lvbi5zcGFjZV9pZDsKKwlhcmdzWzFdLT5pbnRlZ2VyLnZhbHVlID0gZnVuY3Rpb247CisJYXJnc1syXSA9IE5VTEw7CiAKIAkvKiBFeGVjdXRlIHRoZSBtZXRob2QsIG5vIHJldHVybiB2YWx1ZSAqLwogCiAJQUNQSV9ERUJVR19FWEVDKGFjcGlfdXRfZGlzcGxheV9pbml0X3BhdGhuYW1lCi0JCQkoQUNQSV9UWVBFX01FVEhPRCwgaW5mby5ub2RlLCBOVUxMKSk7Ci0Jc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZV9ieV9oYW5kbGUoJmluZm8pOworCQkJKEFDUElfVFlQRV9NRVRIT0QsIGluZm8tPnByZWZpeF9ub2RlLCBOVUxMKSk7CiAKLQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UocGFyYW1zWzFdKTsKKwlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlKGluZm8pOworCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShhcmdzWzFdKTsKIAotICAgICAgY2xlYW51cDoKLQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UocGFyYW1zWzBdKTsKKyAgICAgIGNsZWFudXAyOgorCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShhcmdzWzBdKTsKIAorICAgICAgY2xlYW51cDE6CisJQUNQSV9GUkVFKGluZm8pOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCkBAIC0yNjEsNyArMjc0LDggQEAKICAqICAgICAgICAgICAgICBGdW5jdGlvbiAgICAgICAgICAgIC0gUmVhZCBvciBXcml0ZSBvcGVyYXRpb24KICAqICAgICAgICAgICAgICBBZGRyZXNzICAgICAgICAgICAgIC0gV2hlcmUgaW4gdGhlIHNwYWNlIHRvIHJlYWQgb3Igd3JpdGUKICAqICAgICAgICAgICAgICBiaXRfd2lkdGggICAgICAgICAgIC0gRmllbGQgd2lkdGggaW4gYml0cyAoOCwgMTYsIDMyLCBvciA2NCkKLSAqICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgIC0gUG9pbnRlciB0byBpbiBvciBvdXQgdmFsdWUKKyAqICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgIC0gUG9pbnRlciB0byBpbiBvciBvdXQgdmFsdWUsIG11c3QgYmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCA2NC1iaXQgYWNwaV9pbnRlZ2VyCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKQEAgLTI3NCw3ICsyODgsNyBAQAogYWNwaV9ldl9hZGRyZXNzX3NwYWNlX2Rpc3BhdGNoKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnJlZ2lvbl9vYmosCiAJCQkgICAgICAgdTMyIGZ1bmN0aW9uLAogCQkJICAgICAgIGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyZXNzLAotCQkJICAgICAgIHUzMiBiaXRfd2lkdGgsIHZvaWQgKnZhbHVlKQorCQkJICAgICAgIHUzMiBiaXRfd2lkdGgsIGFjcGlfaW50ZWdlciAqIHZhbHVlKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX3N0YXR1cyBzdGF0dXMyOwpAQCAtMjg0LDcgKzI5OCw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVnaW9uX29iajI7CiAJdm9pZCAqcmVnaW9uX2NvbnRleHQgPSBOVUxMOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfYWRkcmVzc19zcGFjZV9kaXNwYXRjaCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfYWRkcmVzc19zcGFjZV9kaXNwYXRjaCk7CiAKIAlyZWdpb25fb2JqMiA9IGFjcGlfbnNfZ2V0X3NlY29uZGFyeV9vYmplY3QocmVnaW9uX29iaik7CiAJaWYgKCFyZWdpb25fb2JqMikgewpAQCAtMzE1LDYgKzMyOSw3IEBACiAJCSAqLwogCQlyZWdpb25fc2V0dXAgPSBoYW5kbGVyX2Rlc2MtPmFkZHJlc3Nfc3BhY2Uuc2V0dXA7CiAJCWlmICghcmVnaW9uX3NldHVwKSB7CisKIAkJCS8qIE5vIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIGV4aXQgd2l0aCBlcnJvciAqLwogCiAJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLApAQCAtMzYxLDkgKzM3NiwxMCBAQAogCQkJcmVnaW9uX29iai0+cmVnaW9uLmZsYWdzIHw9IEFPUE9CSl9TRVRVUF9DT01QTEVURTsKIAogCQkJaWYgKHJlZ2lvbl9vYmoyLT5leHRyYS5yZWdpb25fY29udGV4dCkgeworCiAJCQkJLyogVGhlIGhhbmRsZXIgZm9yIHRoaXMgcmVnaW9uIHdhcyBhbHJlYWR5IGluc3RhbGxlZCAqLwogCi0JCQkJQUNQSV9NRU1fRlJFRShyZWdpb25fY29udGV4dCk7CisJCQkJQUNQSV9GUkVFKHJlZ2lvbl9jb250ZXh0KTsKIAkJCX0gZWxzZSB7CiAJCQkJLyoKIAkJCQkgKiBTYXZlIHRoZSByZXR1cm5lZCBjb250ZXh0IGZvciB1c2UgaW4gYWxsIGFjY2Vzc2VzIHRvCkBAIC0zODYsOSArNDAyLDggQEAKIAkJCSAgYWNwaV91dF9nZXRfcmVnaW9uX25hbWUocmVnaW9uX29iai0+cmVnaW9uLgogCQkJCQkJICBzcGFjZV9pZCkpKTsKIAotCWlmICghCi0JICAgIChoYW5kbGVyX2Rlc2MtPmFkZHJlc3Nfc3BhY2UuCi0JICAgICBoZmxhZ3MgJiBBQ1BJX0FERFJfSEFORExFUl9ERUZBVUxUX0lOU1RBTExFRCkpIHsKKwlpZiAoIShoYW5kbGVyX2Rlc2MtPmFkZHJlc3Nfc3BhY2UuaGFuZGxlcl9mbGFncyAmCisJICAgICAgQUNQSV9BRERSX0hBTkRMRVJfREVGQVVMVF9JTlNUQUxMRUQpKSB7CiAJCS8qCiAJCSAqIEZvciBoYW5kbGVycyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IChzdXBwbGllZCkgaGFuZGxlcnMsIHdlIG11c3QKIAkJICogZXhpdCB0aGUgaW50ZXJwcmV0ZXIgYmVjYXVzZSB0aGUgaGFuZGxlciAqbWlnaHQqIGJsb2NrIC0tIHdlIGRvbid0CkBAIC00MDksOSArNDI0LDggQEAKIAkJCQkJCQlzcGFjZV9pZCkpKTsKIAl9CiAKLQlpZiAoIQotCSAgICAoaGFuZGxlcl9kZXNjLT5hZGRyZXNzX3NwYWNlLgotCSAgICAgaGZsYWdzICYgQUNQSV9BRERSX0hBTkRMRVJfREVGQVVMVF9JTlNUQUxMRUQpKSB7CisJaWYgKCEoaGFuZGxlcl9kZXNjLT5hZGRyZXNzX3NwYWNlLmhhbmRsZXJfZmxhZ3MgJgorCSAgICAgIEFDUElfQUREUl9IQU5ETEVSX0RFRkFVTFRfSU5TVEFMTEVEKSkgewogCQkvKgogCQkgKiBXZSBqdXN0IHJldHVybmVkIGZyb20gYSBub24tZGVmYXVsdCBoYW5kbGVyLCB3ZSBtdXN0IHJlLWVudGVyIHRoZQogCQkgKiBpbnRlcnByZXRlcgpAQCAtNDUxLDcgKzQ2NSw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVnaW9uX29iajI7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfZGV0YWNoX3JlZ2lvbiIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfZGV0YWNoX3JlZ2lvbik7CiAKIAlyZWdpb25fb2JqMiA9IGFjcGlfbnNfZ2V0X3NlY29uZGFyeV9vYmplY3QocmVnaW9uX29iaik7CiAJaWYgKCFyZWdpb25fb2JqMikgewpAQCAtNDYzLDYgKzQ3Nyw3IEBACiAKIAloYW5kbGVyX29iaiA9IHJlZ2lvbl9vYmotPnJlZ2lvbi5oYW5kbGVyOwogCWlmICghaGFuZGxlcl9vYmopIHsKKwogCQkvKiBUaGlzIHJlZ2lvbiBoYXMgbm8gaGFuZGxlciwgYWxsIGRvbmUgKi8KIAogCQlyZXR1cm5fVk9JRDsKQEAgLTQ3NCw2ICs0ODksNyBAQAogCWxhc3Rfb2JqX3B0ciA9ICZoYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5yZWdpb25fbGlzdDsKIAogCXdoaWxlIChvYmpfZGVzYykgeworCiAJCS8qIElzIHRoaXMgdGhlIGNvcnJlY3QgUmVnaW9uPyAqLwogCiAJCWlmIChvYmpfZGVzYyA9PSByZWdpb25fb2JqKSB7CkBAIC01ODMsNyArNTk5LDcgQEAKIAkJICAgICAgdTggYWNwaV9uc19pc19sb2NrZWQpCiB7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9hdHRhY2hfcmVnaW9uIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9hdHRhY2hfcmVnaW9uKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfT1BSRUdJT04sCiAJCQkgICJBZGRpbmcgUmVnaW9uIFslNC40c10gJXAgdG8gYWRkcmVzcyBoYW5kbGVyICVwIFslc11cbiIsCkBAIC02MzYsNyArNjUyLDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImV2X2luc3RhbGxfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fTkFNRShldl9pbnN0YWxsX2hhbmRsZXIpOwogCiAJaGFuZGxlcl9vYmogPSAodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqKWNvbnRleHQ7CiAKQEAgLTY2Niw2ICs2ODIsNyBAQAogCiAJb2JqX2Rlc2MgPSBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3Qobm9kZSk7CiAJaWYgKCFvYmpfZGVzYykgeworCiAJCS8qIE5vIG9iamVjdCwganVzdCBleGl0ICovCiAKIAkJcmV0dXJuIChBRV9PSyk7CkBAIC02NzQsMTAgKzY5MSwxMiBAQAogCS8qIERldmljZXMgYXJlIGhhbmRsZWQgZGlmZmVyZW50IHRoYW4gcmVnaW9ucyAqLwogCiAJaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSA9PSBBQ1BJX1RZUEVfREVWSUNFKSB7CisKIAkJLyogQ2hlY2sgaWYgdGhpcyBEZXZpY2UgYWxyZWFkeSBoYXMgYSBoYW5kbGVyIGZvciB0aGlzIGFkZHJlc3Mgc3BhY2UgKi8KIAogCQluZXh0X2hhbmRsZXJfb2JqID0gb2JqX2Rlc2MtPmRldmljZS5oYW5kbGVyOwogCQl3aGlsZSAobmV4dF9oYW5kbGVyX29iaikgeworCiAJCQkvKiBGb3VuZCBhIGhhbmRsZXIsIGlzIGl0IGZvciB0aGUgc2FtZSBhZGRyZXNzIHNwYWNlPyAqLwogCiAJCQlpZiAobmV4dF9oYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5zcGFjZV9pZCA9PQpAQCAtNzY0LDkgKzc4Myw5IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqaGFuZGxlcl9vYmo7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfb2JqZWN0X3R5cGUgdHlwZTsKLQl1MTYgZmxhZ3MgPSAwOworCXU4IGZsYWdzID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfc3BhY2VfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfaW5zdGFsbF9zcGFjZV9oYW5kbGVyKTsKIAogCS8qCiAJICogVGhpcyByZWdpc3RyYXRpb24gaXMgdmFsaWQgZm9yIG9ubHkgdGhlIHR5cGVzIGJlbG93CkBAIC04MzksNiArODU4LDcgQEAKIAkJLyogV2FsayB0aGUgaGFuZGxlciBsaXN0IGZvciB0aGlzIGRldmljZSAqLwogCiAJCXdoaWxlIChoYW5kbGVyX29iaikgeworCiAJCQkvKiBTYW1lIHNwYWNlX2lkIGluZGljYXRlcyBhIGhhbmRsZXIgYWxyZWFkeSBpbnN0YWxsZWQgKi8KIAogCQkJaWYgKGhhbmRsZXJfb2JqLT5hZGRyZXNzX3NwYWNlLnNwYWNlX2lkID09IHNwYWNlX2lkKSB7CkBAIC05MjEsNyArOTQxLDcgQEAKIAkvKiBJbml0IGhhbmRsZXIgb2JqICovCiAKIAloYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5zcGFjZV9pZCA9ICh1OCkgc3BhY2VfaWQ7Ci0JaGFuZGxlcl9vYmotPmFkZHJlc3Nfc3BhY2UuaGZsYWdzID0gZmxhZ3M7CisJaGFuZGxlcl9vYmotPmFkZHJlc3Nfc3BhY2UuaGFuZGxlcl9mbGFncyA9IGZsYWdzOwogCWhhbmRsZXJfb2JqLT5hZGRyZXNzX3NwYWNlLnJlZ2lvbl9saXN0ID0gTlVMTDsKIAloYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5ub2RlID0gbm9kZTsKIAloYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5oYW5kbGVyID0gaGFuZGxlcjsKQEAgLTk3OSw3ICs5OTksNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2V4ZWN1dGVfcmVnX21ldGhvZHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2V4ZWN1dGVfcmVnX21ldGhvZHMpOwogCiAJLyoKIAkgKiBSdW4gYWxsIF9SRUcgbWV0aG9kcyBmb3IgYWxsIE9wZXJhdGlvbiBSZWdpb25zIGZvciB0aGlzCkBAIC0xMDAxLDcgKzEwMjEsNyBAQAogICoKICAqIFBBUkFNRVRFUlM6ICB3YWxrX25hbWVzcGFjZSBjYWxsYmFjawogICoKLSAqIERFU0NSSVBUSU9OOiBSdW4gX1JFZyBtZXRob2QgZm9yIHJlZ2lvbiBvYmplY3RzIG9mIHRoZSByZXF1ZXN0ZWQgc3BhY2VfaUQKKyAqIERFU0NSSVBUSU9OOiBSdW4gX1JFRyBtZXRob2QgZm9yIHJlZ2lvbiBvYmplY3RzIG9mIHRoZSByZXF1ZXN0ZWQgc3BhY2VfaUQKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMDM1LDYgKzEwNTUsNyBAQAogCiAJb2JqX2Rlc2MgPSBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3Qobm9kZSk7CiAJaWYgKCFvYmpfZGVzYykgeworCiAJCS8qIE5vIG9iamVjdCwganVzdCBleGl0ICovCiAKIAkJcmV0dXJuIChBRV9PSyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2cmduaW5pLmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2cmduaW5pLmMKaW5kZXggYmFlZDhjMS4uNWIzYzdhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnJnbmluaS5jCisrKyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZyZ25pbmkuYwpAQCAtNzEsMTEgKzcxLDIyIEBACiAJICAgICh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICopaGFuZGxlOwogCXN0cnVjdCBhY3BpX21lbV9zcGFjZV9jb250ZXh0ICpsb2NhbF9yZWdpb25fY29udGV4dDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X3N5c3RlbV9tZW1vcnlfcmVnaW9uX3NldHVwIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9zeXN0ZW1fbWVtb3J5X3JlZ2lvbl9zZXR1cCk7CiAKIAlpZiAoZnVuY3Rpb24gPT0gQUNQSV9SRUdJT05fREVBQ1RJVkFURSkgewogCQlpZiAoKnJlZ2lvbl9jb250ZXh0KSB7Ci0JCQlBQ1BJX01FTV9GUkVFKCpyZWdpb25fY29udGV4dCk7CisJCQlsb2NhbF9yZWdpb25fY29udGV4dCA9CisJCQkgICAgKHN0cnVjdCBhY3BpX21lbV9zcGFjZV9jb250ZXh0ICopKnJlZ2lvbl9jb250ZXh0OworCisJCQkvKiBEZWxldGUgYSBjYWNoZWQgbWFwcGluZyBpZiBwcmVzZW50ICovCisKKwkJCWlmIChsb2NhbF9yZWdpb25fY29udGV4dC0+bWFwcGVkX2xlbmd0aCkgeworCQkJCWFjcGlfb3NfdW5tYXBfbWVtb3J5KGxvY2FsX3JlZ2lvbl9jb250ZXh0LT4KKwkJCQkJCSAgICAgbWFwcGVkX2xvZ2ljYWxfYWRkcmVzcywKKwkJCQkJCSAgICAgbG9jYWxfcmVnaW9uX2NvbnRleHQtPgorCQkJCQkJICAgICBtYXBwZWRfbGVuZ3RoKTsKKwkJCX0KKwkJCUFDUElfRlJFRShsb2NhbF9yZWdpb25fY29udGV4dCk7CiAJCQkqcmVnaW9uX2NvbnRleHQgPSBOVUxMOwogCQl9CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC04NCw3ICs5NSw3IEBACiAJLyogQ3JlYXRlIGEgbmV3IGNvbnRleHQgKi8KIAogCWxvY2FsX3JlZ2lvbl9jb250ZXh0ID0KLQkgICAgQUNQSV9NRU1fQ0FMTE9DQVRFKHNpemVvZihzdHJ1Y3QgYWNwaV9tZW1fc3BhY2VfY29udGV4dCkpOworCSAgICBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzaXplb2Yoc3RydWN0IGFjcGlfbWVtX3NwYWNlX2NvbnRleHQpKTsKIAlpZiAoIShsb2NhbF9yZWdpb25fY29udGV4dCkpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQpAQCAtMTE4LDcgKzEyOSw3IEBACiAJCQkgICAgICB1MzIgZnVuY3Rpb24sCiAJCQkgICAgICB2b2lkICpoYW5kbGVyX2NvbnRleHQsIHZvaWQgKipyZWdpb25fY29udGV4dCkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9pb19zcGFjZV9yZWdpb25fc2V0dXAiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2lvX3NwYWNlX3JlZ2lvbl9zZXR1cCk7CiAKIAlpZiAoZnVuY3Rpb24gPT0gQUNQSV9SRUdJT05fREVBQ1RJVkFURSkgewogCQkqcmVnaW9uX2NvbnRleHQgPSBOVUxMOwpAQCAtMTYxLDcgKzE3Miw3IEBACiAJICAgICh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICopaGFuZGxlOwogCXN0cnVjdCBhY3BpX2RldmljZV9pZCBvYmplY3RfaElEOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfcGNpX2NvbmZpZ19yZWdpb25fc2V0dXAiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X3BjaV9jb25maWdfcmVnaW9uX3NldHVwKTsKIAogCWhhbmRsZXJfb2JqID0gcmVnaW9uX29iai0+cmVnaW9uLmhhbmRsZXI7CiAJaWYgKCFoYW5kbGVyX29iaikgewpAQCAtMTc4LDcgKzE4OSw3IEBACiAJKnJlZ2lvbl9jb250ZXh0ID0gTlVMTDsKIAlpZiAoZnVuY3Rpb24gPT0gQUNQSV9SRUdJT05fREVBQ1RJVkFURSkgewogCQlpZiAocGNpX2lkKSB7Ci0JCQlBQ1BJX01FTV9GUkVFKHBjaV9pZCk7CisJCQlBQ1BJX0ZSRUUocGNpX2lkKTsKIAkJfQogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CkBAIC0xOTksNiArMjEwLDcgQEAKIAkgKiBoYW5kbGVycyB3aXRoIHRoYXQgZGV2aWNlLgogCSAqLwogCWlmIChoYW5kbGVyX29iai0+YWRkcmVzc19zcGFjZS5ub2RlID09IGFjcGlfZ2JsX3Jvb3Rfbm9kZSkgeworCiAJCS8qIFN0YXJ0IHNlYXJjaCBmcm9tIHRoZSBwYXJlbnQgb2JqZWN0ICovCiAKIAkJcGNpX3Jvb3Rfbm9kZSA9IHBhcmVudF9ub2RlOwpAQCAtMjIwLDYgKzIzMiw3IEBACiAJCQkJCVBDSV9FWFBSRVNTX1JPT1RfSElEX1NUUklORywKIAkJCQkJc2l6ZW9mKFBDSV9FWFBSRVNTX1JPT1RfSElEX1NUUklORykpKSkpCiAJCQkJeworCiAJCQkJCS8qIEluc3RhbGwgYSBoYW5kbGVyIGZvciB0aGlzIFBDSSByb290IGJyaWRnZSAqLwogCiAJCQkJCXN0YXR1cyA9CkBAIC0yMzUsNyArMjQ4LDcgQEAKIAkJCQkJCX0gZWxzZSB7CiAJCQkJCQkJQUNQSV9FWENFUFRJT04oKEFFX0lORk8sCiAJCQkJCQkJCQlzdGF0dXMsCi0JCQkJCQkJCQkiQ291bGQgbm90IGluc3RhbGwgcGNpX2NvbmZpZyBoYW5kbGVyIGZvciBSb290IEJyaWRnZSAlNC40cyIsCisJCQkJCQkJCQkiQ291bGQgbm90IGluc3RhbGwgUGNpQ29uZmlnIGhhbmRsZXIgZm9yIFJvb3QgQnJpZGdlICU0LjRzIiwKIAkJCQkJCQkJCWFjcGlfdXRfZ2V0X25vZGVfbmFtZQogCQkJCQkJCQkJKHBjaV9yb290X25vZGUpKSk7CiAJCQkJCQl9CkBAIC0yNjIsNyArMjc1LDcgQEAKIAogCS8qIFJlZ2lvbiBpcyBzdGlsbCBub3QgaW5pdGlhbGl6ZWQuIENyZWF0ZSBhIG5ldyBjb250ZXh0ICovCiAKLQlwY2lfaWQgPSBBQ1BJX01FTV9DQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX3BjaV9pZCkpOworCXBjaV9pZCA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHNpemVvZihzdHJ1Y3QgYWNwaV9wY2lfaWQpKTsKIAlpZiAoIXBjaV9pZCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAl9CkBAIC0zMzcsNyArMzUwLDcgQEAKIAkJCSAgICAgdTMyIGZ1bmN0aW9uLAogCQkJICAgICB2b2lkICpoYW5kbGVyX2NvbnRleHQsIHZvaWQgKipyZWdpb25fY29udGV4dCkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9wY2lfYmFyX3JlZ2lvbl9zZXR1cCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfcGNpX2Jhcl9yZWdpb25fc2V0dXApOwogCiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KQEAgLTM2NCw3ICszNzcsNyBAQAogCQkJICB1MzIgZnVuY3Rpb24sCiAJCQkgIHZvaWQgKmhhbmRsZXJfY29udGV4dCwgdm9pZCAqKnJlZ2lvbl9jb250ZXh0KQogewotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2Ntb3NfcmVnaW9uX3NldHVwIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9jbW9zX3JlZ2lvbl9zZXR1cCk7CiAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogfQpAQCAtMzg5LDcgKzQwMiw3IEBACiAJCQkgICAgIHUzMiBmdW5jdGlvbiwKIAkJCSAgICAgdm9pZCAqaGFuZGxlcl9jb250ZXh0LCB2b2lkICoqcmVnaW9uX2NvbnRleHQpCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfZGVmYXVsdF9yZWdpb25fc2V0dXAiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2RlZmF1bHRfcmVnaW9uX3NldHVwKTsKIAogCWlmIChmdW5jdGlvbiA9PSBBQ1BJX1JFR0lPTl9ERUFDVElWQVRFKSB7CiAJCSpyZWdpb25fY29udGV4dCA9IE5VTEw7CkBAIC00MzUsNyArNDQ4LDcgQEAKIAlhY3BpX25hbWUgKnJlZ19uYW1lX3B0ciA9IChhY3BpX25hbWUgKikgTUVUSE9EX05BTUVfX1JFRzsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZWdpb25fb2JqMjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJldl9pbml0aWFsaXplX3JlZ2lvbiIsIGFjcGlfbnNfbG9ja2VkKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMihldl9pbml0aWFsaXplX3JlZ2lvbiwgYWNwaV9uc19sb2NrZWQpOwogCiAJaWYgKCFyZWdpb25fb2JqKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTQ2Miw4ICs0NzUsOSBAQAogCiAJLyogRmluZCBhbnkgIl9SRUciIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZWdpb24gZGVmaW5pdGlvbiAqLwogCi0Jc3RhdHVzID0gYWNwaV9uc19zZWFyY2hfbm9kZSgqcmVnX25hbWVfcHRyLCBub2RlLAotCQkJCSAgICAgQUNQSV9UWVBFX01FVEhPRCwgJm1ldGhvZF9ub2RlKTsKKwlzdGF0dXMgPQorCSAgICBhY3BpX25zX3NlYXJjaF9vbmVfc2NvcGUoKnJlZ19uYW1lX3B0ciwgbm9kZSwgQUNQSV9UWVBFX01FVEhPRCwKKwkJCQkgICAgICZtZXRob2Rfbm9kZSk7CiAJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CiAJCS8qCiAJCSAqIFRoZSBfUkVHIG1ldGhvZCBpcyBvcHRpb25hbCBhbmQgdGhlcmUgY2FuIGJlIG9ubHkgb25lIHBlciByZWdpb24KQEAgLTQ3OCwxMSArNDkyLDEzIEBACiAJICogaWU6IGFjcGlfZ2JsX3Jvb3Rfbm9kZS0+cGFyZW50X2VudHJ5IGJlaW5nIHNldCB0byBOVUxMCiAJICovCiAJd2hpbGUgKG5vZGUpIHsKKwogCQkvKiBDaGVjayB0byBzZWUgaWYgYSBoYW5kbGVyIGV4aXN0cyAqLwogCiAJCWhhbmRsZXJfb2JqID0gTlVMTDsKIAkJb2JqX2Rlc2MgPSBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3Qobm9kZSk7CiAJCWlmIChvYmpfZGVzYykgeworCiAJCQkvKiBDYW4gb25seSBiZSBhIGhhbmRsZXIgaWYgdGhlIG9iamVjdCBleGlzdHMgKi8KIAogCQkJc3dpdGNoIChub2RlLT50eXBlKSB7CkBAIC01MDcsMTAgKzUyMywxMiBAQAogCQkJfQogCiAJCQl3aGlsZSAoaGFuZGxlcl9vYmopIHsKKwogCQkJCS8qIElzIHRoaXMgaGFuZGxlciBvZiB0aGUgY29ycmVjdCB0eXBlPyAqLwogCiAJCQkJaWYgKGhhbmRsZXJfb2JqLT5hZGRyZXNzX3NwYWNlLnNwYWNlX2lkID09CiAJCQkJICAgIHNwYWNlX2lkKSB7CisKIAkJCQkJLyogRm91bmQgY29ycmVjdCBoYW5kbGVyICovCiAKIAkJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9PUFJFR0lPTiwKQEAgLTU3MSw3ICs1ODksNyBAQAogCS8qIElmIHdlIGdldCBoZXJlLCB0aGVyZSBpcyBubyBoYW5kbGVyIGZvciB0aGlzIHJlZ2lvbiAqLwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9PUFJFR0lPTiwKLQkJCSAgIk5vIGhhbmRsZXIgZm9yIHJlZ2lvbl90eXBlICVzKCVYKSAocmVnaW9uX29iaiAlcClcbiIsCisJCQkgICJObyBoYW5kbGVyIGZvciBSZWdpb25UeXBlICVzKCVYKSAoUmVnaW9uT2JqICVwKVxuIiwKIAkJCSAgYWNwaV91dF9nZXRfcmVnaW9uX25hbWUoc3BhY2VfaWQpLCBzcGFjZV9pZCwKIAkJCSAgcmVnaW9uX29iaikpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2c2NpLmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2c2NpLmMKaW5kZXggOWE2MjIxNi4uODEwNjIxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnNjaS5jCisrKyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZzY2kuYwpAQCAtNjksNyArNjksNyBAQAogCXN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvICpncGVfeHJ1cHRfbGlzdCA9IGNvbnRleHQ7CiAJdTMyIGludGVycnVwdF9oYW5kbGVkID0gQUNQSV9JTlRFUlJVUFRfTk9UX0hBTkRMRUQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9zY2lfeHJ1cHRfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfc2NpX3hydXB0X2hhbmRsZXIpOwogCiAJLyoKIAkgKiBXZSBhcmUgZ3VhcmFudGVlZCBieSB0aGUgQUNQSSBDQSBpbml0aWFsaXphdGlvbi9zaHV0ZG93biBjb2RlIHRoYXQKQEAgLTEwOCw3ICsxMDgsNyBAQAogCXN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvICpncGVfeHJ1cHRfbGlzdCA9IGNvbnRleHQ7CiAJdTMyIGludGVycnVwdF9oYW5kbGVkID0gQUNQSV9JTlRFUlJVUFRfTk9UX0hBTkRMRUQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJldl9ncGVfeHJ1cHRfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXZfZ3BlX3hydXB0X2hhbmRsZXIpOwogCiAJLyoKIAkgKiBXZSBhcmUgZ3VhcmFudGVlZCBieSB0aGUgQUNQSSBDQSBpbml0aWFsaXphdGlvbi9zaHV0ZG93biBjb2RlIHRoYXQKQEAgLTE0MCw3ICsxNDAsNyBAQAogewogCXUzMiBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV2X2luc3RhbGxfc2NpX2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV2X2luc3RhbGxfc2NpX2hhbmRsZXIpOwogCiAJc3RhdHVzID0gYWNwaV9vc19pbnN0YWxsX2ludGVycnVwdF9oYW5kbGVyKCh1MzIpIGFjcGlfZ2JsX0ZBRFQtPnNjaV9pbnQsCiAJCQkJCQkgICBhY3BpX2V2X3NjaV94cnVwdF9oYW5kbGVyLApAQCAtMTcxLDcgKzE3MSw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXZfcmVtb3ZlX3NjaV9oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShldl9yZW1vdmVfc2NpX2hhbmRsZXIpOwogCiAJLyogSnVzdCBsZXQgdGhlIE9TIHJlbW92ZSB0aGUgaGFuZGxlciBhbmQgZGlzYWJsZSB0aGUgbGV2ZWwgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnhmYWNlLmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZhY2UuYwppbmRleCBiMzhiMzlkLi43NmMzNGE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZhY2UuYworKysgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZhY2UuYwpAQCAtNDEsOCArNDEsNiBAQAogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQogI2luY2x1ZGUgPGFjcGkvYWNwaS5oPgogI2luY2x1ZGUgPGFjcGkvYWNuYW1lc3AuaD4KICNpbmNsdWRlIDxhY3BpL2FjZXZlbnRzLmg+CkBAIC02OCw3ICs2Niw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9pbnN0YWxsX2V4Y2VwdGlvbl9oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2luc3RhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOwogCiAJc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0VWRU5UUyk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CkBAIC05MCw2ICs4OCw4IEBACiAJKHZvaWQpYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX0VWRU5UUyk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CisKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2luc3RhbGxfZXhjZXB0aW9uX2hhbmRsZXIpCiAjZW5kaWYJCQkJLyogIEFDUElfRlVUVVJFX1VTQUdFICAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTA3LDE0ICsxMDcsMTMgQEAKICAqICAgICAgICAgICAgICBldmVudC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9pbnN0YWxsX2ZpeGVkX2V2ZW50X2hhbmRsZXIodTMyIGV2ZW50LAogCQkJCSBhY3BpX2V2ZW50X2hhbmRsZXIgaGFuZGxlciwgdm9pZCAqY29udGV4dCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2luc3RhbGxfZml4ZWRfZXZlbnRfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9pbnN0YWxsX2ZpeGVkX2V2ZW50X2hhbmRsZXIpOwogCiAJLyogUGFyYW1ldGVyIHZhbGlkYXRpb24gKi8KIApAQCAtMTYxLDcgKzE2MCw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9pbnN0YWxsX2ZpeGVkX2V2ZW50X2hhbmRsZXIpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9maXhlZF9ldmVudF9oYW5kbGVyKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE3NSwxMyArMTc0LDEyIEBACiAgKiBERVNDUklQVElPTjogRGlzYWJsZXMgdGhlIGV2ZW50IGFuZCB1bnJlZ2lzdGVycyB0aGUgZXZlbnQgaGFuZGxlci4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9yZW1vdmVfZml4ZWRfZXZlbnRfaGFuZGxlcih1MzIgZXZlbnQsIGFjcGlfZXZlbnRfaGFuZGxlciBoYW5kbGVyKQogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9yZW1vdmVfZml4ZWRfZXZlbnRfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9yZW1vdmVfZml4ZWRfZXZlbnRfaGFuZGxlcik7CiAKIAkvKiBQYXJhbWV0ZXIgdmFsaWRhdGlvbiAqLwogCkBAIC0yMTYsNyArMjE0LDcgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX3JlbW92ZV9maXhlZF9ldmVudF9oYW5kbGVyKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3JlbW92ZV9maXhlZF9ldmVudF9oYW5kbGVyKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTIzNSw3ICsyMzMsNiBAQAogICogREVTQ1JJUFRJT046IEluc3RhbGwgYSBoYW5kbGVyIGZvciBub3RpZmllcyBvbiBhbiBBQ1BJIGRldmljZQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2luc3RhbGxfbm90aWZ5X2hhbmRsZXIoYWNwaV9oYW5kbGUgZGV2aWNlLAogCQkJICAgIHUzMiBoYW5kbGVyX3R5cGUsCkBAIC0yNDYsNyArMjQzLDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2luc3RhbGxfbm90aWZ5X2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfaW5zdGFsbF9ub3RpZnlfaGFuZGxlcik7CiAKIAkvKiBQYXJhbWV0ZXIgdmFsaWRhdGlvbiAqLwogCkBAIC0yNzUsNiArMjcyLDcgQEAKIAkgKiBvbmx5IG9uZSA8ZXh0ZXJuYWw+IGdsb2JhbCBoYW5kbGVyIGNhbiBiZSByZWdzaXRlcmVkIChwZXIgbm90aWZ5IHR5cGUpLgogCSAqLwogCWlmIChkZXZpY2UgPT0gQUNQSV9ST09UX09CSkVDVCkgeworCiAJCS8qIE1ha2Ugc3VyZSB0aGUgaGFuZGxlciBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQgKi8KIAogCQlpZiAoKChoYW5kbGVyX3R5cGUgJiBBQ1BJX1NZU1RFTV9OT1RJRlkpICYmCkBAIC0zMTcsNiArMzE1LDcgQEAKIAogCQlvYmpfZGVzYyA9IGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdChub2RlKTsKIAkJaWYgKG9ial9kZXNjKSB7CisKIAkJCS8qIE9iamVjdCBleGlzdHMgLSBtYWtlIHN1cmUgdGhlcmUncyBubyBoYW5kbGVyICovCiAKIAkJCWlmICgoKGhhbmRsZXJfdHlwZSAmIEFDUElfU1lTVEVNX05PVElGWSkgJiYKQEAgLTM3MCw2ICszNjksNyBAQAogCQl9CiAKIAkJaWYgKGhhbmRsZXJfdHlwZSA9PSBBQ1BJX0FMTF9OT1RJRlkpIHsKKwogCQkJLyogRXh0cmEgcmVmIGlmIGluc3RhbGxlZCBpbiBib3RoICovCiAKIAkJCWFjcGlfdXRfYWRkX3JlZmVyZW5jZShub3RpZnlfb2JqKTsKQEAgLTM4MSw3ICszODEsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9ub3RpZnlfaGFuZGxlcik7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9pbnN0YWxsX25vdGlmeV9oYW5kbGVyKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTM5OSw3ICszOTksNiBAQAogICogREVTQ1JJUFRJT046IFJlbW92ZSBhIGhhbmRsZXIgZm9yIG5vdGlmaWVzIG9uIGFuIEFDUEkgZGV2aWNlCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfcmVtb3ZlX25vdGlmeV9oYW5kbGVyKGFjcGlfaGFuZGxlIGRldmljZSwKIAkJCSAgIHUzMiBoYW5kbGVyX3R5cGUsIGFjcGlfbm90aWZ5X2hhbmRsZXIgaGFuZGxlcikKQEAgLTQwOSw3ICs0MDgsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfcmVtb3ZlX25vdGlmeV9oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX3JlbW92ZV9ub3RpZnlfaGFuZGxlcik7CiAKIAkvKiBQYXJhbWV0ZXIgdmFsaWRhdGlvbiAqLwogCkBAIC01MzUsNyArNTM0LDcgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX3JlbW92ZV9ub3RpZnlfaGFuZGxlcik7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9yZW1vdmVfbm90aWZ5X2hhbmRsZXIpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNTU0LDcgKzU1Myw2IEBACiAgKiBERVNDUklQVElPTjogSW5zdGFsbCBhIGhhbmRsZXIgZm9yIGEgR2VuZXJhbCBQdXJwb3NlIEV2ZW50LgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2luc3RhbGxfZ3BlX2hhbmRsZXIoYWNwaV9oYW5kbGUgZ3BlX2RldmljZSwKIAkJCSB1MzIgZ3BlX251bWJlciwKQEAgLTU2NSw3ICs1NjMsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX2NwdV9mbGFncyBmbGFnczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfaW5zdGFsbF9ncGVfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9pbnN0YWxsX2dwZV9oYW5kbGVyKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTU5Niw3ICs1OTQsNyBAQAogCiAJLyogQWxsb2NhdGUgYW5kIGluaXQgaGFuZGxlciBvYmplY3QgKi8KIAotCWhhbmRsZXIgPSBBQ1BJX01FTV9DQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX2hhbmRsZXJfaW5mbykpOworCWhhbmRsZXIgPSBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzaXplb2Yoc3RydWN0IGFjcGlfaGFuZGxlcl9pbmZvKSk7CiAJaWYgKCFoYW5kbGVyKSB7CiAJCXN0YXR1cyA9IEFFX05PX01FTU9SWTsKIAkJZ290byB1bmxvY2tfYW5kX2V4aXQ7CkBAIC02MzAsNyArNjI4LDcgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2luc3RhbGxfZ3BlX2hhbmRsZXIpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9ncGVfaGFuZGxlcikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC02NDYsNyArNjQ0LDYgQEAKICAqIERFU0NSSVBUSU9OOiBSZW1vdmUgYSBoYW5kbGVyIGZvciBhIEdlbmVyYWwgUHVycG9zZSBhY3BpX2V2ZW50LgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX3JlbW92ZV9ncGVfaGFuZGxlcihhY3BpX2hhbmRsZSBncGVfZGV2aWNlLAogCQkJdTMyIGdwZV9udW1iZXIsIGFjcGlfZXZlbnRfaGFuZGxlciBhZGRyZXNzKQpAQCAtNjU2LDcgKzY1Myw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfY3B1X2ZsYWdzIGZsYWdzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9yZW1vdmVfZ3BlX2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfcmVtb3ZlX2dwZV9oYW5kbGVyKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTcyNCwxNCArNzIxLDE0IEBACiAKIAkvKiBOb3cgd2UgY2FuIGZyZWUgdGhlIGhhbmRsZXIgb2JqZWN0ICovCiAKLQlBQ1BJX01FTV9GUkVFKGhhbmRsZXIpOworCUFDUElfRlJFRShoYW5kbGVyKTsKIAogICAgICAgdW5sb2NrX2FuZF9leGl0OgogCSh2b2lkKWFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9FVkVOVFMpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfcmVtb3ZlX2dwZV9oYW5kbGVyKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3JlbW92ZV9ncGVfaGFuZGxlcikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC03NDYsNyArNzQzLDYgQEAKICAqIERFU0NSSVBUSU9OOiBBY3F1aXJlIHRoZSBBQ1BJIEdsb2JhbCBMb2NrCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9hY3F1aXJlX2dsb2JhbF9sb2NrKHUxNiB0aW1lb3V0LCB1MzIgKiBoYW5kbGUpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwpAQCAtNzcxLDcgKzc2Nyw3IEBACiAJcmV0dXJuIChzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfYWNxdWlyZV9nbG9iYWxfbG9jayk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9hY3F1aXJlX2dsb2JhbF9sb2NrKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTc4NCw3ICs3ODAsNiBAQAogICogREVTQ1JJUFRJT046IFJlbGVhc2UgdGhlIEFDUEkgR2xvYmFsIExvY2suIFRoZSBoYW5kbGUgbXVzdCBiZSB2YWxpZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2sodTMyIGhhbmRsZSkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CkBAIC03OTcsNCArNzkyLDQgQEAKIAlyZXR1cm4gKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9yZWxlYXNlX2dsb2JhbF9sb2NrKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3JlbGVhc2VfZ2xvYmFsX2xvY2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZldm50LmMgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZldm50LmMKaW5kZXggZWM5Y2U4NC4uN2ViYzJlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnhmZXZudC5jCisrKyBiL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZ4ZmV2bnQuYwpAQCAtNDEsOCArNDEsNiBAQAogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQogI2luY2x1ZGUgPGFjcGkvYWNwaS5oPgogI2luY2x1ZGUgPGFjcGkvYWNldmVudHMuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CkBAIC02NSw3ICs2Myw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2VuYWJsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9lbmFibGUpOwogCiAJLyogTWFrZSBzdXJlIHdlIGhhdmUgdGhlIEZBRFQgKi8KIApAQCAtOTQsNiArOTIsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9lbmFibGUpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZGlzYWJsZQpAQCAtMTA1LDEyICsxMDUsMTEgQEAKICAqIERFU0NSSVBUSU9OOiBUcmFuc2ZlcnMgdGhlIHN5c3RlbSBpbnRvIExFR0FDWSAobm9uLUFDUEkpIG1vZGUuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9kaXNhYmxlKHZvaWQpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2Rpc2FibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZGlzYWJsZSk7CiAKIAlpZiAoIWFjcGlfZ2JsX0ZBRFQpIHsKIAkJQUNQSV9XQVJOSU5HKChBRV9JTkZPLCAiTm8gRkFEVCBpbmZvcm1hdGlvbiBwcmVzZW50ISIpKTsKQEAgLTEzNyw2ICsxMzYsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9kaXNhYmxlKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX2VuYWJsZV9ldmVudApAQCAtMTQ5LDEzICsxNTAsMTIgQEAKICAqIERFU0NSSVBUSU9OOiBFbmFibGUgYW4gQUNQSSBldmVudCAoZml4ZWQpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9lbmFibGVfZXZlbnQodTMyIGV2ZW50LCB1MzIgZmxhZ3MpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJdTMyIHZhbHVlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9lbmFibGVfZXZlbnQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZW5hYmxlX2V2ZW50KTsKIAogCS8qIERlY29kZSB0aGUgRml4ZWQgRXZlbnQgKi8KIApAQCAtMTkzLDcgKzE5Myw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9lbmFibGVfZXZlbnQpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZW5hYmxlX2V2ZW50KQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTIwOCwxMyArMjA4LDEyIEBACiAgKiBERVNDUklQVElPTjogU2V0IHRoZSB0eXBlIG9mIGFuIGluZGl2aWR1YWwgR1BFCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9zZXRfZ3BlX3R5cGUoYWNwaV9oYW5kbGUgZ3BlX2RldmljZSwgdTMyIGdwZV9udW1iZXIsIHU4IHR5cGUpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9zZXRfZ3BlX3R5cGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfc2V0X2dwZV90eXBlKTsKIAogCS8qIEVuc3VyZSB0aGF0IHdlIGhhdmUgYSB2YWxpZCBHUEUgbnVtYmVyICovCiAKQEAgLTIzNiw3ICsyMzUsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfc2V0X2dwZV90eXBlKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3NldF9ncGVfdHlwZSkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yNTIsMTMgKzI1MSwxMiBAQAogICogREVTQ1JJUFRJT046IEVuYWJsZSBhbiBBQ1BJIGV2ZW50IChnZW5lcmFsIHB1cnBvc2UpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9lbmFibGVfZ3BlKGFjcGlfaGFuZGxlIGdwZV9kZXZpY2UsIHUzMiBncGVfbnVtYmVyLCB1MzIgZmxhZ3MpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9lbmFibGVfZ3BlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2VuYWJsZV9ncGUpOwogCiAJLyogVXNlIHNlbWFwaG9yZSBsb2NrIGlmIG5vdCBleGVjdXRpbmcgYXQgaW50ZXJydXB0IGxldmVsICovCiAKQEAgLTI4OCw3ICsyODYsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZW5hYmxlX2dwZSk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9lbmFibGVfZ3BlKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTMwNCwxMyArMzAyLDEyIEBACiAgKiBERVNDUklQVElPTjogRGlzYWJsZSBhbiBBQ1BJIGV2ZW50IChnZW5lcmFsIHB1cnBvc2UpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9kaXNhYmxlX2dwZShhY3BpX2hhbmRsZSBncGVfZGV2aWNlLCB1MzIgZ3BlX251bWJlciwgdTMyIGZsYWdzKQogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXN0cnVjdCBhY3BpX2dwZV9ldmVudF9pbmZvICpncGVfZXZlbnRfaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZGlzYWJsZV9ncGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZGlzYWJsZV9ncGUpOwogCiAJLyogVXNlIHNlbWFwaG9yZSBsb2NrIGlmIG5vdCBleGVjdXRpbmcgYXQgaW50ZXJydXB0IGxldmVsICovCiAKQEAgLTMzOCw2ICszMzUsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9kaXNhYmxlX2dwZSkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9kaXNhYmxlX2V2ZW50CkBAIC0zNTAsMTMgKzM0OSwxMiBAQAogICogREVTQ1JJUFRJT046IERpc2FibGUgYW4gQUNQSSBldmVudCAoZml4ZWQpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9kaXNhYmxlX2V2ZW50KHUzMiBldmVudCwgdTMyIGZsYWdzKQogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXUzMiB2YWx1ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZGlzYWJsZV9ldmVudCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9kaXNhYmxlX2V2ZW50KTsKIAogCS8qIERlY29kZSB0aGUgRml4ZWQgRXZlbnQgKi8KIApAQCAtMzkyLDcgKzM5MCw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9kaXNhYmxlX2V2ZW50KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2Rpc2FibGVfZXZlbnQpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDA1LDEyICs0MDMsMTEgQEAKICAqIERFU0NSSVBUSU9OOiBDbGVhciBhbiBBQ1BJIGV2ZW50IChmaXhlZCkKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX2NsZWFyX2V2ZW50KHUzMiBldmVudCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfY2xlYXJfZXZlbnQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfY2xlYXJfZXZlbnQpOwogCiAJLyogRGVjb2RlIHRoZSBGaXhlZCBFdmVudCAqLwogCkBAIC00MjksNyArNDI2LDcgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2NsZWFyX2V2ZW50KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2NsZWFyX2V2ZW50KQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTQ0NCwxMyArNDQxLDEyIEBACiAgKiBERVNDUklQVElPTjogQ2xlYXIgYW4gQUNQSSBldmVudCAoZ2VuZXJhbCBwdXJwb3NlKQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFjcGlfY2xlYXJfZ3BlKGFjcGlfaGFuZGxlIGdwZV9kZXZpY2UsIHUzMiBncGVfbnVtYmVyLCB1MzIgZmxhZ3MpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9jbGVhcl9ncGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfY2xlYXJfZ3BlKTsKIAogCS8qIFVzZSBzZW1hcGhvcmUgbG9jayBpZiBub3QgZXhlY3V0aW5nIGF0IGludGVycnVwdCBsZXZlbCAqLwogCkBAIC00NzgsNiArNDc0LDggQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfY2xlYXJfZ3BlKQorCiAjaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDkyLDEyICs0OTAsMTEgQEAKICAqIERFU0NSSVBUSU9OOiBPYnRhaW5zIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgZXZlbnQKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX2dldF9ldmVudF9zdGF0dXModTMyIGV2ZW50LCBhY3BpX2V2ZW50X3N0YXR1cyAqIGV2ZW50X3N0YXR1cykKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZ2V0X2V2ZW50X3N0YXR1cyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfZXZlbnRfc3RhdHVzKTsKIAogCWlmICghZXZlbnRfc3RhdHVzKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTUxOCw2ICs1MTUsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9nZXRfZXZlbnRfc3RhdHVzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX2dldF9ncGVfc3RhdHVzCkBAIC01MzMsNyArNTMyLDYgQEAKICAqIERFU0NSSVBUSU9OOiBHZXQgc3RhdHVzIG9mIGFuIGV2ZW50IChnZW5lcmFsIHB1cnBvc2UpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfZ2V0X2dwZV9zdGF0dXMoYWNwaV9oYW5kbGUgZ3BlX2RldmljZSwKIAkJICAgIHUzMiBncGVfbnVtYmVyLCB1MzIgZmxhZ3MsIGFjcGlfZXZlbnRfc3RhdHVzICogZXZlbnRfc3RhdHVzKQpAQCAtNTQxLDcgKzUzOSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfZ3BlX3N0YXR1cyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfZ3BlX3N0YXR1cyk7CiAKIAkvKiBVc2Ugc2VtYXBob3JlIGxvY2sgaWYgbm90IGV4ZWN1dGluZyBhdCBpbnRlcnJ1cHQgbGV2ZWwgKi8KIApAQCAtNTcwLDYgKzU2OCw4IEBACiAJfQogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQorCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9nZXRfZ3BlX3N0YXR1cykKICNlbmRpZgkJCQkvKiAgQUNQSV9GVVRVUkVfVVNBR0UgICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC01ODYsNyArNTg2LDYgQEAKICAqIERFU0NSSVBUSU9OOiBDcmVhdGUgYW5kIEluc3RhbGwgYSBibG9jayBvZiBHUEUgcmVnaXN0ZXJzCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfaW5zdGFsbF9ncGVfYmxvY2soYWNwaV9oYW5kbGUgZ3BlX2RldmljZSwKIAkJICAgICAgIHN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyAqZ3BlX2Jsb2NrX2FkZHJlc3MsCkBAIC01OTcsNyArNTk2LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAlzdHJ1Y3QgYWNwaV9ncGVfYmxvY2tfaW5mbyAqZ3BlX2Jsb2NrOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9pbnN0YWxsX2dwZV9ibG9jayIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9pbnN0YWxsX2dwZV9ibG9jayk7CiAKIAlpZiAoKCFncGVfZGV2aWNlKSB8fCAoIWdwZV9ibG9ja19hZGRyZXNzKSB8fCAoIXJlZ2lzdGVyX2NvdW50KSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CkBAIC02MzYsNiArNjM1LDcgQEAKIAogCW9ial9kZXNjID0gYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG5vZGUpOwogCWlmICghb2JqX2Rlc2MpIHsKKwogCQkvKiBObyBvYmplY3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi8KIAogCQlvYmpfZGVzYyA9IGFjcGlfdXRfY3JlYXRlX2ludGVybmFsX29iamVjdChBQ1BJX1RZUEVfREVWSUNFKTsKQEAgLTY2NSw3ICs2NjUsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9ncGVfYmxvY2spOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9ncGVfYmxvY2spCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNjc4LDE0ICs2NzgsMTMgQEAKICAqIERFU0NSSVBUSU9OOiBSZW1vdmUgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBibG9jayBvZiBHUEUgcmVnaXN0ZXJzCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9yZW1vdmVfZ3BlX2Jsb2NrKGFjcGlfaGFuZGxlIGdwZV9kZXZpY2UpCiB7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9yZW1vdmVfZ3BlX2Jsb2NrIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX3JlbW92ZV9ncGVfYmxvY2spOwogCiAJaWYgKCFncGVfZGV2aWNlKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTcyMSw0ICs3MjAsNCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfcmVtb3ZlX2dwZV9ibG9jayk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9yZW1vdmVfZ3BlX2Jsb2NrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnhmcmVnbi5jIGIvZHJpdmVycy9hY3BpL2V2ZW50cy9ldnhmcmVnbi5jCmluZGV4IGFiZjVjYWMuLmU4Yjg2YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9ldmVudHMvZXZ4ZnJlZ24uYworKysgYi9kcml2ZXJzL2FjcGkvZXZlbnRzL2V2eGZyZWduLmMKQEAgLTQyLDggKzQyLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CiAjaW5jbHVkZSA8YWNwaS9hY2V2ZW50cy5oPgpAQCAtNzUsNyArNzMsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfaW5zdGFsbF9hZGRyZXNzX3NwYWNlX2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfaW5zdGFsbF9hZGRyZXNzX3NwYWNlX2hhbmRsZXIpOwogCiAJLyogUGFyYW1ldGVyIHZhbGlkYXRpb24gKi8KIApAQCAtMTE0LDcgKzExMiw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9pbnN0YWxsX2FkZHJlc3Nfc3BhY2VfaGFuZGxlcik7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9pbnN0YWxsX2FkZHJlc3Nfc3BhY2VfaGFuZGxlcikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xMjksNyArMTI3LDYgQEAKICAqIERFU0NSSVBUSU9OOiBSZW1vdmUgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBoYW5kbGVyLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX3JlbW92ZV9hZGRyZXNzX3NwYWNlX2hhbmRsZXIoYWNwaV9oYW5kbGUgZGV2aWNlLAogCQkJCSAgYWNwaV9hZHJfc3BhY2VfdHlwZSBzcGFjZV9pZCwKQEAgLTE0Miw3ICsxMzksNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfcmVtb3ZlX2FkZHJlc3Nfc3BhY2VfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9yZW1vdmVfYWRkcmVzc19zcGFjZV9oYW5kbGVyKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTE3Niw5ICsxNzMsMTEgQEAKIAloYW5kbGVyX29iaiA9IG9ial9kZXNjLT5kZXZpY2UuaGFuZGxlcjsKIAlsYXN0X29ial9wdHIgPSAmb2JqX2Rlc2MtPmRldmljZS5oYW5kbGVyOwogCXdoaWxlIChoYW5kbGVyX29iaikgeworCiAJCS8qIFdlIGhhdmUgYSBoYW5kbGVyLCBzZWUgaWYgdXNlciByZXF1ZXN0ZWQgdGhpcyBvbmUgKi8KIAogCQlpZiAoaGFuZGxlcl9vYmotPmFkZHJlc3Nfc3BhY2Uuc3BhY2VfaWQgPT0gc3BhY2VfaWQpIHsKKwogCQkJLyogTWF0Y2hlZCBzcGFjZV9pZCwgZmlyc3QgZGVyZWZlcmVuY2UgdGhpcyBpbiB0aGUgUmVnaW9ucyAqLwogCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX09QUkVHSU9OLApAQCAtMjI5LDcgKzIyOCw3IEBACiAJLyogVGhlIGhhbmRsZXIgZG9lcyBub3QgZXhpc3QgKi8KIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfT1BSRUdJT04sCi0JCQkgICJVbmFibGUgdG8gcmVtb3ZlIGFkZHJlc3MgaGFuZGxlciAlcCBmb3IgJXMoJVgpLCBkZXZfbm9kZSAlcCwgb2JqICVwXG4iLAorCQkJICAiVW5hYmxlIHRvIHJlbW92ZSBhZGRyZXNzIGhhbmRsZXIgJXAgZm9yICVzKCVYKSwgRGV2Tm9kZSAlcCwgb2JqICVwXG4iLAogCQkJICBoYW5kbGVyLCBhY3BpX3V0X2dldF9yZWdpb25fbmFtZShzcGFjZV9pZCksIHNwYWNlX2lkLAogCQkJICBub2RlLCBvYmpfZGVzYykpOwogCkBAIC0yNDAsNCArMjM5LDQgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX3JlbW92ZV9hZGRyZXNzX3NwYWNlX2hhbmRsZXIpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfcmVtb3ZlX2FkZHJlc3Nfc3BhY2VfaGFuZGxlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGNvbmZpZy5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4Y29uZmlnLmMKaW5kZXggYTI5NzgyZi4uODIzMzUyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4Y29uZmlnLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4Y29uZmlnLmMKQEAgLTgyLDcgKzgyLDcgQEAKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjIHRhYmxlX2luZm87CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9hZGRfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2FkZF90YWJsZSk7CiAKIAkvKiBDcmVhdGUgYW4gb2JqZWN0IHRvIGJlIHRoZSB0YWJsZSBoYW5kbGUgKi8KIApAQCAtMTAwLDcgKzEwMCw3IEBACiAKIAlBQ1BJX01FTVNFVCgmdGFibGVfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MpKTsKIAotCXRhYmxlX2luZm8udHlwZSA9IEFDUElfVEFCTEVfU1NEVDsKKwl0YWJsZV9pbmZvLnR5cGUgPSBBQ1BJX1RBQkxFX0lEX1NTRFQ7CiAJdGFibGVfaW5mby5wb2ludGVyID0gdGFibGU7CiAJdGFibGVfaW5mby5sZW5ndGggPSAoYWNwaV9zaXplKSB0YWJsZS0+bGVuZ3RoOwogCXRhYmxlX2luZm8uYWxsb2NhdGlvbiA9IEFDUElfTUVNX0FMTE9DQVRFRDsKQEAgLTExMCw2ICsxMTAsNyBAQAogCiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCWlmIChzdGF0dXMgPT0gQUVfQUxSRUFEWV9FWElTVFMpIHsKKwogCQkJLyogVGFibGUgYWxyZWFkeSBleGlzdHMsIGp1c3QgcmV0dXJuIHRoZSBoYW5kbGUgKi8KIAogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKQEAgLTEyMSw2ICsxMjIsNyBAQAogCiAJc3RhdHVzID0gYWNwaV9uc19sb2FkX3RhYmxlKHRhYmxlX2luZm8uaW5zdGFsbGVkX2Rlc2MsIHBhcmVudF9ub2RlKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkvKiBVbmluc3RhbGwgdGFibGUgb24gZXJyb3IgKi8KIAogCQkodm9pZClhY3BpX3RiX3VuaW5zdGFsbF90YWJsZSh0YWJsZV9pbmZvLmluc3RhbGxlZF9kZXNjKTsKQEAgLTE2MCw3ICsxNjIsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwYXJhbWV0ZXJfbm9kZSA9IE5VTEw7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqZGRiX2hhbmRsZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2xvYWRfdGFibGVfb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2xvYWRfdGFibGVfb3ApOwogCiAjaWYgMAogCS8qCkBAIC0xNjksNiArMTcxLDcgQEAKIAkgKi8KIAlzdGF0dXMgPSBhY3BpX3RiX21hdGNoX3NpZ25hdHVyZShvcGVyYW5kWzBdLT5zdHJpbmcucG9pbnRlciwgTlVMTCk7CiAJaWYgKHN0YXR1cyA9PSBBRV9PSykgeworCiAJCS8qIFNpZ25hdHVyZSBtYXRjaGVkIC0tIGRvbid0IGFsbG93IG92ZXJyaWRlICovCiAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FMUkVBRFlfRVhJU1RTKTsKQEAgLTIxMSw5ICsyMTQsOCBAQAogCQkgKiBsb2NhdGlvbiB3aXRoaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGUgdGFibGUgd2lsbCBiZSBsb2FkZWQuCiAJCSAqLwogCQlzdGF0dXMgPQotCQkgICAgYWNwaV9uc19nZXRfbm9kZV9ieV9wYXRoKG9wZXJhbmRbM10tPnN0cmluZy5wb2ludGVyLAotCQkJCQkgICAgIHN0YXJ0X25vZGUsIEFDUElfTlNfU0VBUkNIX1BBUkVOVCwKLQkJCQkJICAgICAmcGFyZW50X25vZGUpOworCQkgICAgYWNwaV9uc19nZXRfbm9kZShzdGFydF9ub2RlLCBvcGVyYW5kWzNdLT5zdHJpbmcucG9pbnRlciwKKwkJCQkgICAgIEFDUElfTlNfU0VBUkNIX1BBUkVOVCwgJnBhcmVudF9ub2RlKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAkJfQpAQCAtMjM0LDkgKzIzNiw4IEBACiAJCS8qIEZpbmQgdGhlIG5vZGUgcmVmZXJlbmNlZCBieSB0aGUgcGFyYW1ldGVyX3BhdGhfc3RyaW5nICovCiAKIAkJc3RhdHVzID0KLQkJICAgIGFjcGlfbnNfZ2V0X25vZGVfYnlfcGF0aChvcGVyYW5kWzRdLT5zdHJpbmcucG9pbnRlciwKLQkJCQkJICAgICBzdGFydF9ub2RlLCBBQ1BJX05TX1NFQVJDSF9QQVJFTlQsCi0JCQkJCSAgICAgJnBhcmFtZXRlcl9ub2RlKTsKKwkJICAgIGFjcGlfbnNfZ2V0X25vZGUoc3RhcnRfbm9kZSwgb3BlcmFuZFs0XS0+c3RyaW5nLnBvaW50ZXIsCisJCQkJICAgICBBQ1BJX05TX1NFQVJDSF9QQVJFTlQsICZwYXJhbWV0ZXJfbm9kZSk7CiAJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJCX0KQEAgLTI1Miw2ICsyNTMsNyBAQAogCS8qIFBhcmFtZXRlciBEYXRhIChvcHRpb25hbCkgKi8KIAogCWlmIChwYXJhbWV0ZXJfbm9kZSkgeworCiAJCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgZGF0YSBpbnRvIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgb2JqZWN0ICovCiAKIAkJc3RhdHVzID0gYWNwaV9leF9zdG9yZShvcGVyYW5kWzVdLApAQCAtMjk0LDkgKzI5NiwxMCBAQAogCXN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGVfcHRyID0gTlVMTDsKIAlhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkcmVzczsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOworCWFjcGlfaW50ZWdlciB0ZW1wOwogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfbG9hZF9vcCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfbG9hZF9vcCk7CiAKIAkvKiBPYmplY3QgY2FuIGJlIGVpdGhlciBhbiBvcF9yZWdpb24gb3IgYSBGaWVsZCAqLwogCkBAIC0zMjIsNyArMzI1LDcgQEAKIAogCQlhZGRyZXNzID0gb2JqX2Rlc2MtPnJlZ2lvbi5hZGRyZXNzOwogCi0JCS8qIEdldCB0aGUgdGFibGUgbGVuZ3RoIGZyb20gdGhlIHRhYmxlIGhlYWRlciAqLworCQkvKiBHZXQgcGFydCBvZiB0aGUgdGFibGUgaGVhZGVyIHRvIGdldCB0aGUgdGFibGUgbGVuZ3RoICovCiAKIAkJdGFibGVfaGVhZGVyLmxlbmd0aCA9IDA7CiAJCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKQEAgLTMzMCwxMSArMzMzLDE0IEBACiAJCQkgICAgYWNwaV9ldl9hZGRyZXNzX3NwYWNlX2Rpc3BhdGNoKG9ial9kZXNjLCBBQ1BJX1JFQUQsCiAJCQkJCQkJICAgKGFjcGlfcGh5c2ljYWxfYWRkcmVzcykKIAkJCQkJCQkgICAoaSArIGFkZHJlc3MpLCA4LAotCQkJCQkJCSAgICgodTggKikgJgotCQkJCQkJCSAgICB0YWJsZV9oZWFkZXIpICsgaSk7CisJCQkJCQkJICAgJnRlbXApOwogCQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJCQl9CisKKwkJCS8qIEdldCB0aGUgb25lIHZhbGlkIGJ5dGUgb2YgdGhlIHJldHVybmVkIDY0LWJpdCB2YWx1ZSAqLworCisJCQlBQ1BJX0NBU1RfUFRSKHU4LCAmdGFibGVfaGVhZGVyKVtpXSA9ICh1OCkgdGVtcDsKIAkJfQogCiAJCS8qIFNhbml0eSBjaGVjayB0aGUgdGFibGUgbGVuZ3RoICovCkBAIC0zNDUsNyArMzUxLDcgQEAKIAogCQkvKiBBbGxvY2F0ZSBhIGJ1ZmZlciBmb3IgdGhlIGVudGlyZSB0YWJsZSAqLwogCi0JCXRhYmxlX3B0ciA9IEFDUElfTUVNX0FMTE9DQVRFKHRhYmxlX2hlYWRlci5sZW5ndGgpOworCQl0YWJsZV9wdHIgPSBBQ1BJX0FMTE9DQVRFKHRhYmxlX2hlYWRlci5sZW5ndGgpOwogCQlpZiAoIXRhYmxlX3B0cikgewogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJCX0KQEAgLTM1NywxMSArMzYzLDE0IEBACiAJCQkgICAgYWNwaV9ldl9hZGRyZXNzX3NwYWNlX2Rpc3BhdGNoKG9ial9kZXNjLCBBQ1BJX1JFQUQsCiAJCQkJCQkJICAgKGFjcGlfcGh5c2ljYWxfYWRkcmVzcykKIAkJCQkJCQkgICAoaSArIGFkZHJlc3MpLCA4LAotCQkJCQkJCSAgICgodTggKikgdGFibGVfcHRyICsKLQkJCQkJCQkgICAgaSkpOworCQkJCQkJCSAgICZ0ZW1wKTsKIAkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQkJCWdvdG8gY2xlYW51cDsKIAkJCX0KKworCQkJLyogR2V0IHRoZSBvbmUgdmFsaWQgYnl0ZSBvZiB0aGUgcmV0dXJuZWQgNjQtYml0IHZhbHVlICovCisKKwkJCUFDUElfQ0FTVF9QVFIodTgsIHRhYmxlX3B0cilbaV0gPSAodTgpIHRlbXA7CiAJCX0KIAkJYnJlYWs7CiAKQEAgLTQwNywxMiArNDE2LDggQEAKIAogCS8qIFRoZSB0YWJsZSBtdXN0IGJlIGVpdGhlciBhbiBTU0RUIG9yIGEgUFNEVCAqLwogCi0JaWYgKCghQUNQSV9TVFJOQ01QKHRhYmxlX3B0ci0+c2lnbmF0dXJlLAotCQkJICAgYWNwaV9nYmxfdGFibGVfZGF0YVtBQ1BJX1RBQkxFX1BTRFRdLnNpZ25hdHVyZSwKLQkJCSAgIGFjcGlfZ2JsX3RhYmxlX2RhdGFbQUNQSV9UQUJMRV9QU0RUXS5zaWdfbGVuZ3RoKSkgJiYKLQkgICAgKCFBQ1BJX1NUUk5DTVAodGFibGVfcHRyLT5zaWduYXR1cmUsCi0JCQkgICBhY3BpX2dibF90YWJsZV9kYXRhW0FDUElfVEFCTEVfU1NEVF0uc2lnbmF0dXJlLAotCQkJICAgYWNwaV9nYmxfdGFibGVfZGF0YVtBQ1BJX1RBQkxFX1NTRFRdLnNpZ19sZW5ndGgpKSkgeworCWlmICgoIUFDUElfQ09NUEFSRV9OQU1FKHRhYmxlX3B0ci0+c2lnbmF0dXJlLCBQU0RUX1NJRykpICYmCisJICAgICghQUNQSV9DT01QQVJFX05BTUUodGFibGVfcHRyLT5zaWduYXR1cmUsIFNTRFRfU0lHKSkpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCSAgICAiVGFibGUgaGFzIGludmFsaWQgc2lnbmF0dXJlIFslNC40c10sIG11c3QgYmUgU1NEVCBvciBQU0RUIiwKIAkJCSAgICB0YWJsZV9wdHItPnNpZ25hdHVyZSkpOwpAQCAtNDI0LDYgKzQyOSw3IEBACiAKIAlzdGF0dXMgPSBhY3BpX2V4X2FkZF90YWJsZSh0YWJsZV9wdHIsIGFjcGlfZ2JsX3Jvb3Rfbm9kZSwgJmRkYl9oYW5kbGUpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCiAJCS8qIE9uIGVycm9yLCB0YWJsZV9wdHIgd2FzIGRlYWxsb2NhdGVkIGFib3ZlICovCiAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CkBAIC00NDIsNyArNDQ4LDcgQEAKIAogICAgICAgY2xlYW51cDoKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJQUNQSV9NRU1fRlJFRSh0YWJsZV9wdHIpOworCQlBQ1BJX0ZSRUUodGFibGVfcHRyKTsKIAl9CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CkBAIC00NjUsNyArNDcxLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICp0YWJsZV9kZXNjID0gZGRiX2hhbmRsZTsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfdW5sb2FkX3RhYmxlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF91bmxvYWRfdGFibGUpOwogCiAJLyoKIAkgKiBWYWxpZGF0ZSB0aGUgaGFuZGxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhjb252cnQuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGNvbnZydC5jCmluZGV4IGU2ZDUyZTEuLmI3MzJlMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGNvbnZydC5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGNvbnZydC5jCkBAIC03OSw3ICs3OSw3IEBACiAJdTMyIGNvdW50OwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9jb252ZXJ0X3RvX2ludGVnZXIiLCBvYmpfZGVzYyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZXhfY29udmVydF90b19pbnRlZ2VyLCBvYmpfZGVzYyk7CiAKIAlzd2l0Y2ggKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSkgewogCWNhc2UgQUNQSV9UWVBFX0lOVEVHRVI6CkBAIC0xOTksNyArMTk5LDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZXR1cm5fZGVzYzsKIAl1OCAqbmV3X2J1ZjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9jb252ZXJ0X3RvX2J1ZmZlciIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9jb252ZXJ0X3RvX2J1ZmZlciwgb2JqX2Rlc2MpOwogCiAJc3dpdGNoIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShvYmpfZGVzYykpIHsKIAljYXNlIEFDUElfVFlQRV9CVUZGRVI6CkBAIC0zMTksNiArMzE5LDcgQEAKIAkJcmVtYWluZGVyID0gMDsKIAogCQlmb3IgKGkgPSBkZWNpbWFsX2xlbmd0aDsgaSA+IDA7IGktLSkgeworCiAJCQkvKiBEaXZpZGUgYnkgbnRoIGZhY3RvciBvZiAxMCAqLwogCiAJCQlkaWdpdCA9IGludGVnZXI7CkBAIC0zNDYsNiArMzQ3LDcgQEAKIAogCQloZXhfbGVuZ3RoID0gKGFjcGlfbmF0aXZlX3VpbnQpIEFDUElfTVVMXzIoZGF0YV93aWR0aCk7CiAJCWZvciAoaSA9IDAsIGogPSAoaGV4X2xlbmd0aCAtIDEpOyBpIDwgaGV4X2xlbmd0aDsgaSsrLCBqLS0pIHsKKwogCQkJLyogR2V0IG9uZSBoZXggZGlnaXQsIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzIGZpcnN0ICovCiAKIAkJCXN0cmluZ1trXSA9CkBAIC00MDAsNyArNDAyLDcgQEAKIAl1MTYgYmFzZSA9IDE2OwogCXU4IHNlcGFyYXRvciA9ICcsJzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9jb252ZXJ0X3RvX3N0cmluZyIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9jb252ZXJ0X3RvX3N0cmluZywgb2JqX2Rlc2MpOwogCiAJc3dpdGNoIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShvYmpfZGVzYykpIHsKIAljYXNlIEFDUElfVFlQRV9TVFJJTkc6CkBAIC01NjcsNyArNTY5LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2NvbnZlcnRfdG9fdGFyZ2V0X3R5cGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2NvbnZlcnRfdG9fdGFyZ2V0X3R5cGUpOwogCiAJLyogRGVmYXVsdCBiZWhhdmlvciAqLwogCkBAIC02NTcsNyArNjU5LDcgQEAKIAogCWRlZmF1bHQ6CiAJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIlVua25vd24gVGFyZ2V0IHR5cGUgSUQgMHglWCBhbWxfb3Bjb2RlICVYIGRlc3RfdHlwZSAlcyIsCisJCQkgICAgIlVua25vd24gVGFyZ2V0IHR5cGUgSUQgMHglWCBBbWxPcGNvZGUgJVggRGVzdFR5cGUgJXMiLAogCQkJICAgIEdFVF9DVVJSRU5UX0FSR19UWVBFKHdhbGtfc3RhdGUtPm9wX2luZm8tPgogCQkJCQkJIHJ1bnRpbWVfYXJncyksCiAJCQkgICAgd2Fsa19zdGF0ZS0+b3Bjb2RlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4Y3JlYXRlLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhjcmVhdGUuYwppbmRleCA2ODA1NzU0Li4xMDZkYzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhjcmVhdGUuYworKysgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhjcmVhdGUuYwpAQCAtNjksNyArNjksNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICphbGlhc19ub2RlOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfY3JlYXRlX2FsaWFzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9jcmVhdGVfYWxpYXMpOwogCiAJLyogR2V0IHRoZSBzb3VyY2UvYWxpYXMgb3BlcmFuZHMgKGJvdGggbmFtZXNwYWNlIG5vZGVzKSAqLwogCkBAIC0xNjQsNyArMTY0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9jcmVhdGVfZXZlbnQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2NyZWF0ZV9ldmVudCk7CiAKIAlvYmpfZGVzYyA9IGFjcGlfdXRfY3JlYXRlX2ludGVybmFsX29iamVjdChBQ1BJX1RZUEVfRVZFTlQpOwogCWlmICghb2JqX2Rlc2MpIHsKQEAgLTIxNiw3ICsyMTYsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImV4X2NyZWF0ZV9tdXRleCIsIEFDUElfV0FMS19PUEVSQU5EUyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZXhfY3JlYXRlX211dGV4LCBBQ1BJX1dBTEtfT1BFUkFORFMpOwogCiAJLyogQ3JlYXRlIHRoZSBuZXcgbXV0ZXggb2JqZWN0ICovCiAKQEAgLTI0Myw4ICsyNDMsOSBAQAogCW9ial9kZXNjLT5tdXRleC5ub2RlID0KIAkgICAgKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICopd2Fsa19zdGF0ZS0+b3BlcmFuZHNbMF07CiAKLQlzdGF0dXMgPSBhY3BpX25zX2F0dGFjaF9vYmplY3Qob2JqX2Rlc2MtPm11dGV4Lm5vZGUsCi0JCQkJICAgICAgIG9ial9kZXNjLCBBQ1BJX1RZUEVfTVVURVgpOworCXN0YXR1cyA9CisJICAgIGFjcGlfbnNfYXR0YWNoX29iamVjdChvYmpfZGVzYy0+bXV0ZXgubm9kZSwgb2JqX2Rlc2MsCisJCQkJICBBQ1BJX1RZUEVfTVVURVgpOwogCiAgICAgICBjbGVhbnVwOgogCS8qCkBAIC0yODAsNyArMjgxLDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZWdpb25fb2JqMjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2NyZWF0ZV9yZWdpb24iKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2NyZWF0ZV9yZWdpb24pOwogCiAJLyogR2V0IHRoZSBOYW1lc3BhY2UgTm9kZSAqLwogCkBAIC0zMDAsNyArMzAxLDcgQEAKIAkgKi8KIAlpZiAoKHJlZ2lvbl9zcGFjZSA+PSBBQ1BJX05VTV9QUkVERUZJTkVEX1JFR0lPTlMpICYmCiAJICAgIChyZWdpb25fc3BhY2UgPCBBQ1BJX1VTRVJfUkVHSU9OX0JFR0lOKSkgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBhZGRyZXNzX3NwYWNlIHR5cGUgJVgiLAorCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBBZGRyZXNzU3BhY2UgdHlwZSAlWCIsCiAJCQkgICAgcmVnaW9uX3NwYWNlKSk7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfSU5WQUxJRF9TUEFDRV9JRCk7CiAJfQpAQCAtMzY0LDcgKzM2NSw3IEBACiAJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZTsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZWdpb25fb2JqMjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2NyZWF0ZV90YWJsZV9yZWdpb24iKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2NyZWF0ZV90YWJsZV9yZWdpb24pOwogCiAJLyogR2V0IHRoZSBOb2RlIGZyb20gdGhlIG9iamVjdCBzdGFjayAgKi8KIApAQCAtNDUyLDcgKzQ1Myw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImV4X2NyZWF0ZV9wcm9jZXNzb3IiLCB3YWxrX3N0YXRlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9jcmVhdGVfcHJvY2Vzc29yLCB3YWxrX3N0YXRlKTsKIAogCS8qIENyZWF0ZSB0aGUgcHJvY2Vzc29yIG9iamVjdCAqLwogCkBAIC00NjQsOSArNDY1LDkgQEAKIAkvKiBJbml0aWFsaXplIHRoZSBwcm9jZXNzb3Igb2JqZWN0IGZyb20gdGhlIG9wZXJhbmRzICovCiAKIAlvYmpfZGVzYy0+cHJvY2Vzc29yLnByb2NfaWQgPSAodTgpIG9wZXJhbmRbMV0tPmludGVnZXIudmFsdWU7CisJb2JqX2Rlc2MtPnByb2Nlc3Nvci5sZW5ndGggPSAodTgpIG9wZXJhbmRbM10tPmludGVnZXIudmFsdWU7CiAJb2JqX2Rlc2MtPnByb2Nlc3Nvci5hZGRyZXNzID0KIAkgICAgKGFjcGlfaW9fYWRkcmVzcykgb3BlcmFuZFsyXS0+aW50ZWdlci52YWx1ZTsKLQlvYmpfZGVzYy0+cHJvY2Vzc29yLmxlbmd0aCA9ICh1OCkgb3BlcmFuZFszXS0+aW50ZWdlci52YWx1ZTsKIAogCS8qIEluc3RhbGwgdGhlIHByb2Nlc3NvciBvYmplY3QgaW4gdGhlIHBhcmVudCBOb2RlICovCiAKQEAgLTQ5OSw3ICs1MDAsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9jcmVhdGVfcG93ZXJfcmVzb3VyY2UiLCB3YWxrX3N0YXRlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9jcmVhdGVfcG93ZXJfcmVzb3VyY2UsIHdhbGtfc3RhdGUpOwogCiAJLyogQ3JlYXRlIHRoZSBwb3dlciByZXNvdXJjZSBvYmplY3QgKi8KIApAQCAtNTQ5LDcgKzU1MCw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXU4IG1ldGhvZF9mbGFnczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9jcmVhdGVfbWV0aG9kIiwgd2Fsa19zdGF0ZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZXhfY3JlYXRlX21ldGhvZCwgd2Fsa19zdGF0ZSk7CiAKIAkvKiBDcmVhdGUgYSBuZXcgbWV0aG9kIG9iamVjdCAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhkdW1wLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhkdW1wLmMKaW5kZXggYTdjY2E4ZC4uN2I5NzE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4ZHVtcC5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGR1bXAuYwpAQCAtNjEsNiArNjEsMTAgQEAKIAogc3RhdGljIHZvaWQgYWNwaV9leF9vdXRfYWRkcmVzcyhjaGFyICp0aXRsZSwgYWNwaV9waHlzaWNhbF9hZGRyZXNzIHZhbHVlKTsKIAorc3RhdGljIHZvaWQKK2FjcGlfZXhfZHVtcF9vYmplY3QodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2MsCisJCSAgICBzdHJ1Y3QgYWNwaV9leGR1bXBfaW5mbyAqaW5mbyk7CisKIHN0YXRpYyB2b2lkIGFjcGlfZXhfZHVtcF9yZWZlcmVuY2Vfb2JqKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjKTsKIAogc3RhdGljIHZvaWQKQEAgLTExOSw3ICsxMjMsNyBAQAogCiBzdGF0aWMgc3RydWN0IGFjcGlfZXhkdW1wX2luZm8gYWNwaV9leF9kdW1wX21ldGhvZFs4XSA9IHsKIAl7QUNQSV9FWERfSU5JVCwgQUNQSV9FWERfVEFCTEVfU0laRShhY3BpX2V4X2R1bXBfbWV0aG9kKSwgTlVMTH0sCi0Je0FDUElfRVhEX1VJTlQ4LCBBQ1BJX0VYRF9PRkZTRVQobWV0aG9kLnBhcmFtX2NvdW50KSwgInBhcmFtX2NvdW50In0sCisJe0FDUElfRVhEX1VJTlQ4LCBBQ1BJX0VYRF9PRkZTRVQobWV0aG9kLnBhcmFtX2NvdW50KSwgIlBhcmFtQ291bnQifSwKIAl7QUNQSV9FWERfVUlOVDgsIEFDUElfRVhEX09GRlNFVChtZXRob2QuY29uY3VycmVuY3kpLCAiQ29uY3VycmVuY3kifSwKIAl7QUNQSV9FWERfUE9JTlRFUiwgQUNQSV9FWERfT0ZGU0VUKG1ldGhvZC5zZW1hcGhvcmUpLCAiU2VtYXBob3JlIn0sCiAJe0FDUElfRVhEX1VJTlQ4LCBBQ1BJX0VYRF9PRkZTRVQobWV0aG9kLm93bmVyX2lkKSwgIk93bmVyIElkIn0sCkBAIC0yNjMsMTIgKzI2NywxMCBAQAogCXtBQ1BJX0VYRF9QT0lOVEVSLCBBQ1BJX0VYRF9PRkZTRVQoY29tbW9uX2ZpZWxkLm5vZGUpLCAiUGFyZW50IE5vZGUifQogfTsKIAotc3RhdGljIHN0cnVjdCBhY3BpX2V4ZHVtcF9pbmZvIGFjcGlfZXhfZHVtcF9ub2RlWzZdID0geworc3RhdGljIHN0cnVjdCBhY3BpX2V4ZHVtcF9pbmZvIGFjcGlfZXhfZHVtcF9ub2RlWzVdID0gewogCXtBQ1BJX0VYRF9JTklULCBBQ1BJX0VYRF9UQUJMRV9TSVpFKGFjcGlfZXhfZHVtcF9ub2RlKSwgTlVMTH0sCiAJe0FDUElfRVhEX1VJTlQ4LCBBQ1BJX0VYRF9OU09GRlNFVChmbGFncyksICJGbGFncyJ9LAogCXtBQ1BJX0VYRF9VSU5UOCwgQUNQSV9FWERfTlNPRkZTRVQob3duZXJfaWQpLCAiT3duZXIgSWQifSwKLQl7QUNQSV9FWERfVUlOVDE2LCBBQ1BJX0VYRF9OU09GRlNFVChyZWZlcmVuY2VfY291bnQpLAotCSAiUmVmZXJlbmNlIENvdW50In0sCiAJe0FDUElfRVhEX1BPSU5URVIsIEFDUElfRVhEX05TT0ZGU0VUKGNoaWxkKSwgIkNoaWxkIExpc3QifSwKIAl7QUNQSV9FWERfUE9JTlRFUiwgQUNQSV9FWERfTlNPRkZTRVQocGVlciksICJOZXh0IFBlZXIifQogfTsKQEAgLTMzMCw3ICszMzIsNyBAQAogCiAJaWYgKCFpbmZvKSB7CiAJCWFjcGlfb3NfcHJpbnRmCi0JCSAgICAoImV4X2R1bXBfb2JqZWN0OiBEaXNwbGF5IG5vdCBpbXBsZW1lbnRlZCBmb3Igb2JqZWN0IHR5cGUgJXNcbiIsCisJCSAgICAoIkV4RHVtcE9iamVjdDogRGlzcGxheSBub3QgaW1wbGVtZW50ZWQgZm9yIG9iamVjdCB0eXBlICVzXG4iLAogCQkgICAgIGFjcGlfdXRfZ2V0X29iamVjdF90eXBlX25hbWUob2JqX2Rlc2MpKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQ1NCw3ICs0NTYsNyBAQAogCXUzMiBsZW5ndGg7CiAJdTMyIGluZGV4OwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJleF9kdW1wX29wZXJhbmQiKQorCUFDUElfRlVOQ1RJT05fTkFNRShleF9kdW1wX29wZXJhbmQpCiAKIAkgICAgaWYgKCEKIAkJKChBQ1BJX0xWX0VYRUMgJiBhY3BpX2RiZ19sZXZlbCkKQEAgLTQ2Myw2ICs0NjUsNyBAQAogCX0KIAogCWlmICghb2JqX2Rlc2MpIHsKKwogCQkvKiBUaGlzIGNvdWxkIGJlIGEgbnVsbCBlbGVtZW50IG9mIGEgcGFja2FnZSAqLwogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgIk51bGwgT2JqZWN0IERlc2NyaXB0b3JcbiIpKTsKQEAgLTUyMiw3ICs1MjUsNyBAQAogCiAJCWNhc2UgQU1MX1JFRl9PRl9PUDoKIAotCQkJYWNwaV9vc19wcmludGYoIlJlZmVyZW5jZTogKHJlZl9vZikgJXBcbiIsCisJCQlhY3BpX29zX3ByaW50ZigiUmVmZXJlbmNlOiAoUmVmT2YpICVwXG4iLAogCQkJCSAgICAgICBvYmpfZGVzYy0+cmVmZXJlbmNlLm9iamVjdCk7CiAJCQlicmVhazsKIApAQCAtNTMyLDYgKzUzNSw3IEBACiAJCQkJICAgICAgIG9ial9kZXNjLT5yZWZlcmVuY2Uub2Zmc2V0KTsKIAogCQkJaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSA9PSBBQ1BJX1RZUEVfSU5URUdFUikgeworCiAJCQkJLyogVmFsdWUgaXMgYW4gSW50ZWdlciAqLwogCiAJCQkJYWNwaV9vc19wcmludGYoIiB2YWx1ZSBpcyBbJTguOFglOC44eF0iLApAQCAtNjEwLDcgKzYxNCw3IEBACiAKIAljYXNlIEFDUElfVFlQRV9QQUNLQUdFOgogCi0JCWFjcGlfb3NfcHJpbnRmKCJQYWNrYWdlIFtMZW4gJVhdIGVsZW1lbnRfYXJyYXkgJXBcbiIsCisJCWFjcGlfb3NfcHJpbnRmKCJQYWNrYWdlIFtMZW4gJVhdIEVsZW1lbnRBcnJheSAlcFxuIiwKIAkJCSAgICAgICBvYmpfZGVzYy0+cGFja2FnZS5jb3VudCwKIAkJCSAgICAgICBvYmpfZGVzYy0+cGFja2FnZS5lbGVtZW50cyk7CiAKQEAgLTY2MiwxMyArNjY2LDEzIEBACiAKIAljYXNlIEFDUElfVFlQRV9MT0NBTF9CQU5LX0ZJRUxEOgogCi0JCWFjcGlfb3NfcHJpbnRmKCJiYW5rX2ZpZWxkXG4iKTsKKwkJYWNwaV9vc19wcmludGYoIkJhbmtGaWVsZFxuIik7CiAJCWJyZWFrOwogCiAJY2FzZSBBQ1BJX1RZUEVfTE9DQUxfUkVHSU9OX0ZJRUxEOgogCiAJCWFjcGlfb3NfcHJpbnRmCi0JCSAgICAoInJlZ2lvbl9maWVsZDogQml0cz0lWCBhY2Nfd2lkdGg9JVggTG9jaz0lWCBVcGRhdGU9JVggYXQgYnl0ZT0lWCBiaXQ9JVggb2YgYmVsb3c6XG4iLAorCQkgICAgKCJSZWdpb25GaWVsZDogQml0cz0lWCBBY2NXaWR0aD0lWCBMb2NrPSVYIFVwZGF0ZT0lWCBhdCBieXRlPSVYIGJpdD0lWCBvZiBiZWxvdzpcbiIsCiAJCSAgICAgb2JqX2Rlc2MtPmZpZWxkLmJpdF9sZW5ndGgsCiAJCSAgICAgb2JqX2Rlc2MtPmZpZWxkLmFjY2Vzc19ieXRlX3dpZHRoLAogCQkgICAgIG9ial9kZXNjLT5maWVsZC5maWVsZF9mbGFncyAmIEFNTF9GSUVMRF9MT0NLX1JVTEVfTUFTSywKQEAgLTY4MSwxMiArNjg1LDEyIEBACiAKIAljYXNlIEFDUElfVFlQRV9MT0NBTF9JTkRFWF9GSUVMRDoKIAotCQlhY3BpX29zX3ByaW50ZigiaW5kZXhfZmllbGRcbiIpOworCQlhY3BpX29zX3ByaW50ZigiSW5kZXhGaWVsZFxuIik7CiAJCWJyZWFrOwogCiAJY2FzZSBBQ1BJX1RZUEVfQlVGRkVSX0ZJRUxEOgogCi0JCWFjcGlfb3NfcHJpbnRmKCJidWZmZXJfZmllbGQ6ICVYIGJpdHMgYXQgYnl0ZSAlWCBiaXQgJVggb2ZcbiIsCisJCWFjcGlfb3NfcHJpbnRmKCJCdWZmZXJGaWVsZDogJVggYml0cyBhdCBieXRlICVYIGJpdCAlWCBvZlxuIiwKIAkJCSAgICAgICBvYmpfZGVzYy0+YnVmZmVyX2ZpZWxkLmJpdF9sZW5ndGgsCiAJCQkgICAgICAgb2JqX2Rlc2MtPmJ1ZmZlcl9maWVsZC5iYXNlX2J5dGVfb2Zmc2V0LAogCQkJICAgICAgIG9ial9kZXNjLT5idWZmZXJfZmllbGQuc3RhcnRfZmllbGRfYml0X29mZnNldCk7CkBAIC03NzcsNyArNzgxLDcgQEAKIHsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImV4X2R1bXBfb3BlcmFuZHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoZXhfZHVtcF9vcGVyYW5kcyk7CiAKIAlpZiAoIWlkZW50KSB7CiAJCWlkZW50ID0gIj8iOwpAQCAtOTAxLDcgKzkwNSw3IEBACiAJCQlhY3BpX29zX3ByaW50ZigiQ291bGQgbm90IGNvbnZlcnQgbmFtZSB0byBwYXRobmFtZVxuIik7CiAJCX0gZWxzZSB7CiAJCQlhY3BpX29zX3ByaW50ZigiJXNcbiIsIChjaGFyICopcmV0X2J1Zi5wb2ludGVyKTsKLQkJCUFDUElfTUVNX0ZSRUUocmV0X2J1Zi5wb2ludGVyKTsKKwkJCUFDUElfRlJFRShyZXRfYnVmLnBvaW50ZXIpOwogCQl9CiAJfSBlbHNlIGlmIChvYmpfZGVzYy0+cmVmZXJlbmNlLm9iamVjdCkgewogCQlhY3BpX29zX3ByaW50ZigiXG5SZWZlcmVuY2VkIE9iamVjdDogJXBcbiIsCkBAIC0xMDE3LDcgKzEwMjEsNyBAQAogdm9pZAogYWNwaV9leF9kdW1wX29iamVjdF9kZXNjcmlwdG9yKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjLCB1MzIgZmxhZ3MpCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfZHVtcF9vYmplY3RfZGVzY3JpcHRvciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZHVtcF9vYmplY3RfZGVzY3JpcHRvcik7CiAKIAlpZiAoIW9ial9kZXNjKSB7CiAJCXJldHVybl9WT0lEOwpAQCAtMTA0Niw3ICsxMDUwLDcgQEAKIAogCWlmIChBQ1BJX0dFVF9ERVNDUklQVE9SX1RZUEUob2JqX2Rlc2MpICE9IEFDUElfREVTQ19UWVBFX09QRVJBTkQpIHsKIAkJYWNwaV9vc19wcmludGYKLQkJICAgICgiZXhfZHVtcF9vYmplY3RfZGVzY3JpcHRvcjogJXAgaXMgbm90IGFuIEFDUEkgb3BlcmFuZCBvYmplY3Q6IFslc11cbiIsCisJCSAgICAoIkV4RHVtcE9iamVjdERlc2NyaXB0b3I6ICVwIGlzIG5vdCBhbiBBQ1BJIG9wZXJhbmQgb2JqZWN0OiBbJXNdXG4iLAogCQkgICAgIG9ial9kZXNjLCBhY3BpX3V0X2dldF9kZXNjcmlwdG9yX25hbWUob2JqX2Rlc2MpKTsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4ZmllbGQuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGZpZWxkLmMKaW5kZXggZTI1OTIwMS4uOWVhOWMzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4ZmllbGQuYworKysgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhmaWVsZC5jCkBAIC03Myw3ICs3Myw3IEBACiAJdm9pZCAqYnVmZmVyOwogCXU4IGxvY2tlZDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9yZWFkX2RhdGFfZnJvbV9maWVsZCIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9yZWFkX2RhdGFfZnJvbV9maWVsZCwgb2JqX2Rlc2MpOwogCiAJLyogUGFyYW1ldGVyIHZhbGlkYXRpb24gKi8KIApAQCAtMTQyLDYgKzE0Miw3IEBACiAJbGVuZ3RoID0KIAkgICAgKGFjcGlfc2l6ZSkgQUNQSV9ST1VORF9CSVRTX1VQX1RPX0JZVEVTKG9ial9kZXNjLT5maWVsZC5iaXRfbGVuZ3RoKTsKIAlpZiAobGVuZ3RoID4gYWNwaV9nYmxfaW50ZWdlcl9ieXRlX3dpZHRoKSB7CisKIAkJLyogRmllbGQgaXMgdG9vIGxhcmdlIGZvciBhbiBJbnRlZ2VyLCBjcmVhdGUgYSBCdWZmZXIgaW5zdGVhZCAqLwogCiAJCWJ1ZmZlcl9kZXNjID0gYWNwaV91dF9jcmVhdGVfYnVmZmVyX29iamVjdChsZW5ndGgpOwpAQCAtMTYzLDExICsxNjQsMTEgQEAKIAl9CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCSAgImZpZWxkX3JlYWQgW1RPXTogIE9iaiAlcCwgVHlwZSAlWCwgQnVmICVwLCBieXRlX2xlbiAlWFxuIiwKKwkJCSAgIkZpZWxkUmVhZCBbVE9dOiAgIE9iaiAlcCwgVHlwZSAlWCwgQnVmICVwLCBCeXRlTGVuICVYXG4iLAogCQkJICBvYmpfZGVzYywgQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpLCBidWZmZXIsCiAJCQkgICh1MzIpIGxlbmd0aCkpOwogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfQkZJRUxELAotCQkJICAiZmllbGRfcmVhZCBbRlJPTV06IGJpdF9sZW4gJVgsIGJpdF9vZmYgJVgsIGJ5dGVfb2ZmICVYXG4iLAorCQkJICAiRmllbGRSZWFkIFtGUk9NXTogQml0TGVuICVYLCBCaXRPZmYgJVgsIEJ5dGVPZmYgJVhcbiIsCiAJCQkgIG9ial9kZXNjLT5jb21tb25fZmllbGQuYml0X2xlbmd0aCwKIAkJCSAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5zdGFydF9maWVsZF9iaXRfb2Zmc2V0LAogCQkJICBvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLmJhc2VfYnl0ZV9vZmZzZXQpKTsKQEAgLTIxOSw3ICsyMjAsNyBAQAogCXU4IGxvY2tlZDsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpidWZmZXJfZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF93cml0ZV9kYXRhX3RvX2ZpZWxkIiwgb2JqX2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGV4X3dyaXRlX2RhdGFfdG9fZmllbGQsIG9ial9kZXNjKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTMyOSw5ICszMzAsMTAgQEAKIAkgICAgQUNQSV9ST1VORF9CSVRTX1VQX1RPX0JZVEVTKG9ial9kZXNjLT5jb21tb25fZmllbGQuYml0X2xlbmd0aCk7CiAKIAlpZiAobGVuZ3RoIDwgcmVxdWlyZWRfbGVuZ3RoKSB7CisKIAkJLyogV2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgYnVmZmVyICovCiAKLQkJbmV3X2J1ZmZlciA9IEFDUElfTUVNX0NBTExPQ0FURShyZXF1aXJlZF9sZW5ndGgpOworCQluZXdfYnVmZmVyID0gQUNQSV9BTExPQ0FURV9aRVJPRUQocmVxdWlyZWRfbGVuZ3RoKTsKIAkJaWYgKCFuZXdfYnVmZmVyKSB7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAkJfQpAQCAtMzQ3LDE0ICszNDksMTQgQEAKIAl9CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCSAgImZpZWxkX3dyaXRlIFtGUk9NXTogT2JqICVwICglczolWCksIEJ1ZiAlcCwgYnl0ZV9sZW4gJVhcbiIsCisJCQkgICJGaWVsZFdyaXRlIFtGUk9NXTogT2JqICVwICglczolWCksIEJ1ZiAlcCwgQnl0ZUxlbiAlWFxuIiwKIAkJCSAgc291cmNlX2Rlc2MsCiAJCQkgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZShBQ1BJX0dFVF9PQkpFQ1RfVFlQRQogCQkJCQkJKHNvdXJjZV9kZXNjKSksCiAJCQkgIEFDUElfR0VUX09CSkVDVF9UWVBFKHNvdXJjZV9kZXNjKSwgYnVmZmVyLCBsZW5ndGgpKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfQkZJRUxELAotCQkJICAiZmllbGRfd3JpdGUgW1RPXTogIE9iaiAlcCAoJXM6JVgpLCBiaXRfbGVuICVYLCBiaXRfb2ZmICVYLCBieXRlX29mZiAlWFxuIiwKKwkJCSAgIkZpZWxkV3JpdGUgW1RPXTogICBPYmogJXAgKCVzOiVYKSwgQml0TGVuICVYLCBCaXRPZmYgJVgsIEJ5dGVPZmYgJVhcbiIsCiAJCQkgIG9ial9kZXNjLAogCQkJICBhY3BpX3V0X2dldF90eXBlX25hbWUoQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpKSwKIAkJCSAgQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpLApAQCAtMzc1LDcgKzM3Nyw3IEBACiAJLyogRnJlZSB0ZW1wb3JhcnkgYnVmZmVyIGlmIHdlIHVzZWQgb25lICovCiAKIAlpZiAobmV3X2J1ZmZlcikgewotCQlBQ1BJX01FTV9GUkVFKG5ld19idWZmZXIpOworCQlBQ1BJX0ZSRUUobmV3X2J1ZmZlcik7CiAJfQogCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhmbGRpby5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4ZmxkaW8uYwppbmRleCBiZDFhZjM1Li4wNTEwNTNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhmbGRpby5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leGZsZGlvLmMKQEAgLTg3LDcgKzg3LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZ25fZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJleF9zZXR1cF9yZWdpb24iLCBmaWVsZF9kYXR1bV9ieXRlX29mZnNldCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoZXhfc2V0dXBfcmVnaW9uLCBmaWVsZF9kYXR1bV9ieXRlX29mZnNldCk7CiAKIAlyZ25fZGVzYyA9IG9ial9kZXNjLT5jb21tb25fZmllbGQucmVnaW9uX29iajsKIApAQCAtMTEyLDcgKzExMiwxOCBAQAogCQl9CiAJfQogCisJLyogRXhpdCBpZiBBZGRyZXNzL0xlbmd0aCBoYXZlIGJlZW4gZGlzYWxsb3dlZCBieSB0aGUgaG9zdCBPUyAqLworCisJaWYgKHJnbl9kZXNjLT5jb21tb24uZmxhZ3MgJiBBT1BPQkpfSU5WQUxJRCkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX0lMTEVHQUxfQUREUkVTUyk7CisJfQorCisJLyoKKwkgKiBFeGl0IG5vdyBmb3IgU01CdXMgYWRkcmVzcyBzcGFjZSwgaXQgaGFzIGEgbm9uLWxpbmVhciBhZGRyZXNzIHNwYWNlCisJICogYW5kIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBkaXJlY3RseSB2YWxpZGF0ZWQKKwkgKi8KIAlpZiAocmduX2Rlc2MtPnJlZ2lvbi5zcGFjZV9pZCA9PSBBQ1BJX0FEUl9TUEFDRV9TTUJVUykgeworCiAJCS8qIFNNQnVzIGhhcyBhIG5vbi1saW5lYXIgYWRkcmVzcyBzcGFjZSAqLwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC0xMzQsMTAgKzE0NSwxMCBAQAogCSAqIGxlbmd0aCBvZiBvbmUgZmllbGQgZGF0dW0gKGFjY2VzcyB3aWR0aCkgbXVzdCBmaXQgd2l0aGluIHRoZSByZWdpb24uCiAJICogKFJlZ2lvbiBsZW5ndGggaXMgc3BlY2lmaWVkIGluIGJ5dGVzKQogCSAqLwotCWlmIChyZ25fZGVzYy0+cmVnaW9uLmxlbmd0aCA8IChvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLmJhc2VfYnl0ZV9vZmZzZXQgKwotCQkJCSAgICAgICBmaWVsZF9kYXR1bV9ieXRlX29mZnNldCArCi0JCQkJICAgICAgIG9ial9kZXNjLT5jb21tb25fZmllbGQuCi0JCQkJICAgICAgIGFjY2Vzc19ieXRlX3dpZHRoKSkgeworCWlmIChyZ25fZGVzYy0+cmVnaW9uLmxlbmd0aCA8CisJICAgIChvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLmJhc2VfYnl0ZV9vZmZzZXQgKworCSAgICAgZmllbGRfZGF0dW1fYnl0ZV9vZmZzZXQgKworCSAgICAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5hY2Nlc3NfYnl0ZV93aWR0aCkpIHsKIAkJaWYgKGFjcGlfZ2JsX2VuYWJsZV9pbnRlcnByZXRlcl9zbGFjaykgewogCQkJLyoKIAkJCSAqIFNsYWNrIG1vZGUgb25seTogIFdlIHdpbGwgZ28gYWhlYWQgYW5kIGFsbG93IGFjY2VzcyB0byB0aGlzCkBAIC0yMTcsNyArMjI4LDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZ25fZGVzYzsKIAlhY3BpX3BoeXNpY2FsX2FkZHJlc3MgYWRkcmVzczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2FjY2Vzc19yZWdpb24iKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2FjY2Vzc19yZWdpb24pOwogCiAJLyoKIAkgKiBFbnN1cmUgdGhhdCB0aGUgcmVnaW9uIG9wZXJhbmRzIGFyZSBmdWxseSBldmFsdWF0ZWQgYW5kIHZlcmlmeQpAQCAtMjQ2LDcgKzI1Nyw3IEBACiAJfQogCiAJQUNQSV9ERUJVR19QUklOVF9SQVcoKEFDUElfREJfQkZJRUxELAotCQkJICAgICAgIiBSZWdpb24gWyVzOiVYXSwgV2lkdGggJVgsIGJ5dGVfYmFzZSAlWCwgT2Zmc2V0ICVYIGF0ICU4LjhYJTguOFhcbiIsCisJCQkgICAgICAiIFJlZ2lvbiBbJXM6JVhdLCBXaWR0aCAlWCwgQnl0ZUJhc2UgJVgsIE9mZnNldCAlWCBhdCAlOC44WCU4LjhYXG4iLAogCQkJICAgICAgYWNwaV91dF9nZXRfcmVnaW9uX25hbWUocmduX2Rlc2MtPnJlZ2lvbi4KIAkJCQkJCSAgICAgIHNwYWNlX2lkKSwKIAkJCSAgICAgIHJnbl9kZXNjLT5yZWdpb24uc3BhY2VfaWQsCkBAIC0zNTIsNyArMzYzLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJYWNwaV9pbnRlZ2VyIGxvY2FsX3ZhbHVlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoImV4X2ZpZWxkX2RhdHVtX2lvIiwgZmllbGRfZGF0dW1fYnl0ZV9vZmZzZXQpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKGV4X2ZpZWxkX2RhdHVtX2lvLCBmaWVsZF9kYXR1bV9ieXRlX29mZnNldCk7CiAKIAlpZiAocmVhZF93cml0ZSA9PSBBQ1BJX1JFQUQpIHsKIAkJaWYgKCF2YWx1ZSkgewpAQCAtNDg3LDEwICs0OTgsMTEgQEAKIAkJfQogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfQkZJRUxELAotCQkJCSAgIkkvTyB0byBEYXRhIFJlZ2lzdGVyOiB2YWx1ZV9wdHIgJXBcbiIsCisJCQkJICAiSS9PIHRvIERhdGEgUmVnaXN0ZXI6IFZhbHVlUHRyICVwXG4iLAogCQkJCSAgdmFsdWUpKTsKIAogCQlpZiAocmVhZF93cml0ZSA9PSBBQ1BJX1JFQUQpIHsKKwogCQkJLyogUmVhZCB0aGUgZGF0dW0gZnJvbSB0aGUgZGF0YV9yZWdpc3RlciAqLwogCiAJCQlzdGF0dXMgPQpAQCAtNTU5LDcgKzU3MSw3IEBACiAJYWNwaV9pbnRlZ2VyIG1lcmdlZF92YWx1ZTsKIAlhY3BpX2ludGVnZXIgY3VycmVudF92YWx1ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJleF93cml0ZV93aXRoX3VwZGF0ZV9ydWxlIiwgbWFzayk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoZXhfd3JpdGVfd2l0aF91cGRhdGVfcnVsZSwgbWFzayk7CiAKIAkvKiBTdGFydCB3aXRoIHRoZSBuZXcgYml0cyAgKi8KIApAQCAtNTY4LDYgKzU4MCw3IEBACiAJLyogSWYgdGhlIG1hc2sgaXMgYWxsIG9uZXMsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIHVwZGF0ZSBydWxlICovCiAKIAlpZiAobWFzayAhPSBBQ1BJX0lOVEVHRVJfTUFYKSB7CisKIAkJLyogRGVjb2RlIHRoZSB1cGRhdGUgcnVsZSAqLwogCiAJCXN3aXRjaCAob2JqX2Rlc2MtPmNvbW1vbl9maWVsZC4KQEAgLTYxNCw3ICs2MjcsNyBAQAogCQlkZWZhdWx0OgogCiAJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCSAgICAiVW5rbm93biB1cGRhdGVfcnVsZSB2YWx1ZTogJVgiLAorCQkJCSAgICAiVW5rbm93biBVcGRhdGVSdWxlIHZhbHVlOiAlWCIsCiAJCQkJICAgIChvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLgogCQkJCSAgICAgZmllbGRfZmxhZ3MgJgogCQkJCSAgICAgQU1MX0ZJRUxEX1VQREFURV9SVUxFX01BU0spKSk7CkBAIC02MjMsNyArNjM2LDcgQEAKIAl9CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCSAgIk1hc2sgJTguOFglOC44WCwgZGF0dW1fb2Zmc2V0ICVYLCBXaWR0aCAlWCwgVmFsdWUgJTguOFglOC44WCwgbWVyZ2VkX3ZhbHVlICU4LjhYJTguOFhcbiIsCisJCQkgICJNYXNrICU4LjhYJTguOFgsIERhdHVtT2Zmc2V0ICVYLCBXaWR0aCAlWCwgVmFsdWUgJTguOFglOC44WCwgTWVyZ2VkVmFsdWUgJTguOFglOC44WFxuIiwKIAkJCSAgQUNQSV9GT1JNQVRfVUlOVDY0KG1hc2spLAogCQkJICBmaWVsZF9kYXR1bV9ieXRlX29mZnNldCwKIAkJCSAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5hY2Nlc3NfYnl0ZV93aWR0aCwKQEAgLTY2Niw3ICs2NzksNyBAQAogCXUzMiBmaWVsZF9kYXR1bV9jb3VudDsKIAl1MzIgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2V4dHJhY3RfZnJvbV9maWVsZCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZXh0cmFjdF9mcm9tX2ZpZWxkKTsKIAogCS8qIFZhbGlkYXRlIHRhcmdldCBidWZmZXIgYW5kIGNsZWFyIGl0ICovCiAKQEAgLTcwNCw2ICs3MTcsNyBAQAogCS8qIFJlYWQgdGhlIHJlc3Qgb2YgdGhlIGZpZWxkICovCiAKIAlmb3IgKGkgPSAxOyBpIDwgZmllbGRfZGF0dW1fY291bnQ7IGkrKykgeworCiAJCS8qIEdldCBuZXh0IGlucHV0IGRhdHVtIGZyb20gdGhlIGZpZWxkICovCiAKIAkJZmllbGRfb2Zmc2V0ICs9IG9ial9kZXNjLT5jb21tb25fZmllbGQuYWNjZXNzX2J5dGVfd2lkdGg7CkBAIC03NzEsNiArNzg1LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJYWNwaV9pbnRlZ2VyIG1hc2s7CisJYWNwaV9pbnRlZ2VyIHdpZHRoX21hc2s7CiAJYWNwaV9pbnRlZ2VyIG1lcmdlZF9kYXR1bTsKIAlhY3BpX2ludGVnZXIgcmF3X2RhdHVtID0gMDsKIAl1MzIgZmllbGRfb2Zmc2V0ID0gMDsKQEAgLTc4MCw3ICs3OTUsNyBAQAogCXUzMiBmaWVsZF9kYXR1bV9jb3VudDsKIAl1MzIgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2luc2VydF9pbnRvX2ZpZWxkIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9pbnNlcnRfaW50b19maWVsZCk7CiAKIAkvKiBWYWxpZGF0ZSBpbnB1dCBidWZmZXIgKi8KIApAQCAtNzk1LDE1ICs4MTAsMjAgQEAKIAogCS8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBkYXR1bXMgKGFjY2VzcyB3aWR0aCBkYXRhIGl0ZW1zKSAqLwogCisJd2lkdGhfbWFzayA9CisJICAgIEFDUElfTUFTS19CSVRTX0FCT1ZFKG9ial9kZXNjLT5jb21tb25fZmllbGQuYWNjZXNzX2JpdF93aWR0aCk7CiAJbWFzayA9Ci0JICAgIEFDUElfTUFTS19CSVRTX0JFTE9XKG9ial9kZXNjLT5jb21tb25fZmllbGQuc3RhcnRfZmllbGRfYml0X29mZnNldCk7Ci0JZGF0dW1fY291bnQgPQotCSAgICBBQ1BJX1JPVU5EX1VQX1RPKG9ial9kZXNjLT5jb21tb25fZmllbGQuYml0X2xlbmd0aCwKLQkJCSAgICAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5hY2Nlc3NfYml0X3dpZHRoKTsKLQlmaWVsZF9kYXR1bV9jb3VudCA9Ci0JICAgIEFDUElfUk9VTkRfVVBfVE8ob2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5iaXRfbGVuZ3RoICsKLQkJCSAgICAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5zdGFydF9maWVsZF9iaXRfb2Zmc2V0LAotCQkJICAgICBvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLmFjY2Vzc19iaXRfd2lkdGgpOworCSAgICB3aWR0aF9tYXNrICYgQUNQSV9NQVNLX0JJVFNfQkVMT1cob2JqX2Rlc2MtPmNvbW1vbl9maWVsZC4KKwkJCQkJICAgICAgc3RhcnRfZmllbGRfYml0X29mZnNldCk7CisKKwlkYXR1bV9jb3VudCA9IEFDUElfUk9VTkRfVVBfVE8ob2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5iaXRfbGVuZ3RoLAorCQkJCSAgICAgICBvYmpfZGVzYy0+Y29tbW9uX2ZpZWxkLmFjY2Vzc19iaXRfd2lkdGgpOworCisJZmllbGRfZGF0dW1fY291bnQgPSBBQ1BJX1JPVU5EX1VQX1RPKG9ial9kZXNjLT5jb21tb25fZmllbGQuYml0X2xlbmd0aCArCisJCQkJCSAgICAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC4KKwkJCQkJICAgICBzdGFydF9maWVsZF9iaXRfb2Zmc2V0LAorCQkJCQkgICAgIG9ial9kZXNjLT5jb21tb25fZmllbGQuCisJCQkJCSAgICAgYWNjZXNzX2JpdF93aWR0aCk7CiAKIAkvKiBHZXQgaW5pdGlhbCBEYXR1bSBmcm9tIHRoZSBpbnB1dCBidWZmZXIgKi8KIApAQCAtODE3LDYgKzgzNyw3IEBACiAJLyogV3JpdGUgdGhlIGVudGlyZSBmaWVsZCAqLwogCiAJZm9yIChpID0gMTsgaSA8IGZpZWxkX2RhdHVtX2NvdW50OyBpKyspIHsKKwogCQkvKiBXcml0ZSBtZXJnZWQgZGF0dW0gdG8gdGhlIHRhcmdldCBmaWVsZCAqLwogCiAJCW1lcmdlZF9kYXR1bSAmPSBtYXNrOwpAQCAtODMzLDcgKzg1NCw3IEBACiAJCW1lcmdlZF9kYXR1bSA9IHJhd19kYXR1bSA+PgogCQkgICAgKG9ial9kZXNjLT5jb21tb25fZmllbGQuYWNjZXNzX2JpdF93aWR0aCAtCiAJCSAgICAgb2JqX2Rlc2MtPmNvbW1vbl9maWVsZC5zdGFydF9maWVsZF9iaXRfb2Zmc2V0KTsKLQkJbWFzayA9IEFDUElfSU5URUdFUl9NQVg7CisJCW1hc2sgPSB3aWR0aF9tYXNrOwogCiAJCWlmIChpID09IGRhdHVtX2NvdW50KSB7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG1pc2MuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG1pc2MuYwppbmRleCA0OGMxOGQyLi5iZDk4YWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhtaXNjLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4bWlzYy5jCkBAIC03Miw3ICs3Miw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVmZXJlbmNlX29iajsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZWZlcmVuY2VkX29iajsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9nZXRfb2JqZWN0X3JlZmVyZW5jZSIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9nZXRfb2JqZWN0X3JlZmVyZW5jZSwgb2JqX2Rlc2MpOwogCiAJKnJldHVybl9kZXNjID0gTlVMTDsKIApAQCAtMTY4LDcgKzE2OCw3IEBACiAJYWNwaV9zaXplIGxlbmd0aDE7CiAJYWNwaV9zaXplIG5ld19sZW5ndGg7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9jb25jYXRfdGVtcGxhdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2NvbmNhdF90ZW1wbGF0ZSk7CiAKIAkvKgogCSAqIEZpbmQgdGhlIGVuZF90YWcgZGVzY3JpcHRvciBpbiBlYWNoIHJlc291cmNlIHRlbXBsYXRlLgpAQCAtMjUwLDcgKzI1MCw3IEBACiAJY2hhciAqbmV3X2J1ZjsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9kb19jb25jYXRlbmF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZG9fY29uY2F0ZW5hdGUpOwogCiAJLyoKIAkgKiBDb252ZXJ0IHRoZSBzZWNvbmQgb3BlcmFuZCBpZiBuZWNlc3NhcnkuICBUaGUgZmlyc3Qgb3BlcmFuZApAQCAtNDQ1LDEwICs0NDUsMjQgQEAKIAogCWNhc2UgQU1MX1NISUZUX0xFRlRfT1A6CS8qIHNoaWZ0X2xlZnQgKE9wZXJhbmQsIHNoaWZ0X2NvdW50LCBSZXN1bHQpICovCiAKKwkJLyoKKwkJICogV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgc2hpZnRjb3VudCBpcyBsYXJnZXIgdGhhbiB0aGUgaW50ZWdlciBiaXQKKwkJICogd2lkdGggc2luY2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgaXMgbm90IHdlbGwtZGVmaW5lZCBpbiB0aGUgQyBsYW5ndWFnZS4KKwkJICovCisJCWlmIChpbnRlZ2VyMSA+PSBhY3BpX2dibF9pbnRlZ2VyX2JpdF93aWR0aCkgeworCQkJcmV0dXJuICgwKTsKKwkJfQogCQlyZXR1cm4gKGludGVnZXIwIDw8IGludGVnZXIxKTsKIAogCWNhc2UgQU1MX1NISUZUX1JJR0hUX09QOgkvKiBzaGlmdF9yaWdodCAoT3BlcmFuZCwgc2hpZnRfY291bnQsIFJlc3VsdCkgKi8KIAorCQkvKgorCQkgKiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzaGlmdGNvdW50IGlzIGxhcmdlciB0aGFuIHRoZSBpbnRlZ2VyIGJpdAorCQkgKiB3aWR0aCBzaW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhpcyBpcyBub3Qgd2VsbC1kZWZpbmVkIGluIHRoZSBDIGxhbmd1YWdlLgorCQkgKi8KKwkJaWYgKGludGVnZXIxID49IGFjcGlfZ2JsX2ludGVnZXJfYml0X3dpZHRoKSB7CisJCQlyZXR1cm4gKDApOworCQl9CiAJCXJldHVybiAoaW50ZWdlcjAgPj4gaW50ZWdlcjEpOwogCiAJY2FzZSBBTUxfU1VCVFJBQ1RfT1A6CS8qIFN1YnRyYWN0IChJbnRlZ2VyMCwgSW50ZWdlcjEsIFJlc3VsdCkgKi8KQEAgLTQ4OSw3ICs1MDMsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXU4IGxvY2FsX3Jlc3VsdCA9IEZBTFNFOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfZG9fbG9naWNhbF9udW1lcmljX29wIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9kb19sb2dpY2FsX251bWVyaWNfb3ApOwogCiAJc3dpdGNoIChvcGNvZGUpIHsKIAljYXNlIEFNTF9MQU5EX09QOgkvKiBMQW5kIChJbnRlZ2VyMCwgSW50ZWdlcjEpICovCkBAIC01NTcsNyArNTcxLDcgQEAKIAl1OCBsb2NhbF9yZXN1bHQgPSBGQUxTRTsKIAlpbnQgY29tcGFyZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2RvX2xvZ2ljYWxfb3AiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2RvX2xvZ2ljYWxfb3ApOwogCiAJLyoKIAkgKiBDb252ZXJ0IHRoZSBzZWNvbmQgb3BlcmFuZCBpZiBuZWNlc3NhcnkuICBUaGUgZmlyc3Qgb3BlcmFuZApAQCAtNjQ5LDYgKzY2Myw3IEBACiAJCQkvKiBMZW5ndGggYW5kIGFsbCBieXRlcyBtdXN0IGJlIGVxdWFsICovCiAKIAkJCWlmICgobGVuZ3RoMCA9PSBsZW5ndGgxKSAmJiAoY29tcGFyZSA9PSAwKSkgeworCiAJCQkJLyogTGVuZ3RoIGFuZCBhbGwgYnl0ZXMgbWF0Y2ggPT0+IFRSVUUgKi8KIAogCQkJCWxvY2FsX3Jlc3VsdCA9IFRSVUU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhtdXRleC5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4bXV0ZXguYwppbmRleCBmODQzYjIyLi45MzA5OGQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhtdXRleC5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG11dGV4LmMKQEAgLTYxLDcgKzYxLDcgQEAKICAqCiAgKiBSRVRVUk46ICAgICAgTm9uZQogICoKLSAqIERFU0NSSVBUSU9OOiBSZW1vdmUgYSBtdXRleCBmcm9tIHRoZSAiYWNxdWlyZWRfbXV0ZXgiIGxpc3QKKyAqIERFU0NSSVBUSU9OOiBSZW1vdmUgYSBtdXRleCBmcm9tIHRoZSAiQWNxdWlyZWRNdXRleCIgbGlzdAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTk1LDcgKzk1LDcgQEAKICAqCiAgKiBSRVRVUk46ICAgICAgTm9uZQogICoKLSAqIERFU0NSSVBUSU9OOiBBZGQgYSBtdXRleCB0byB0aGUgImFjcXVpcmVkX211dGV4IiBsaXN0IGZvciB0aGlzIHdhbGsKKyAqIERFU0NSSVBUSU9OOiBBZGQgYSBtdXRleCB0byB0aGUgIkFjcXVpcmVkTXV0ZXgiIGxpc3QgZm9yIHRoaXMgd2FsawogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTE0NCw3ICsxNDQsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9hY3F1aXJlX211dGV4Iiwgb2JqX2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGV4X2FjcXVpcmVfbXV0ZXgsIG9ial9kZXNjKTsKIAogCWlmICghb2JqX2Rlc2MpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwpAQCAtMTY1LDcgKzE2NSw3IEBACiAJICovCiAJaWYgKHdhbGtfc3RhdGUtPnRocmVhZC0+Y3VycmVudF9zeW5jX2xldmVsID4gb2JqX2Rlc2MtPm11dGV4LnN5bmNfbGV2ZWwpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCSAgICAiQ2Fubm90IGFjcXVpcmUgTXV0ZXggWyU0LjRzXSwgaW5jb3JyZWN0IHN5bmNfbGV2ZWwiLAorCQkJICAgICJDYW5ub3QgYWNxdWlyZSBNdXRleCBbJTQuNHNdLCBpbmNvcnJlY3QgU3luY0xldmVsIiwKIAkJCSAgICBhY3BpX3V0X2dldF9ub2RlX25hbWUob2JqX2Rlc2MtPm11dGV4Lm5vZGUpKSk7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfTVVURVhfT1JERVIpOwogCX0KQEAgLTE3Myw2ICsxNzMsNyBAQAogCS8qIFN1cHBvcnQgZm9yIG11bHRpcGxlIGFjcXVpcmVzIGJ5IHRoZSBvd25pbmcgdGhyZWFkICovCiAKIAlpZiAob2JqX2Rlc2MtPm11dGV4Lm93bmVyX3RocmVhZCkgeworCiAJCS8qIFNwZWNpYWwgY2FzZSBmb3IgR2xvYmFsIExvY2ssIGFsbG93IGFsbCB0aHJlYWRzICovCiAKIAkJaWYgKChvYmpfZGVzYy0+bXV0ZXgub3duZXJfdGhyZWFkLT50aHJlYWRfaWQgPT0KQEAgLTE5Miw2ICsxOTMsNyBAQAogCiAJc3RhdHVzID0gYWNwaV9leF9zeXN0ZW1fYWNxdWlyZV9tdXRleCh0aW1lX2Rlc2MsIG9ial9kZXNjKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkvKiBJbmNsdWRlcyBmYWlsdXJlIGZyb20gYSB0aW1lb3V0IG9uIHRpbWVfZGVzYyAqLwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwpAQCAtMjMyLDcgKzIzNCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfcmVsZWFzZV9tdXRleCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfcmVsZWFzZV9tdXRleCk7CiAKIAlpZiAoIW9ial9kZXNjKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTI3Nyw3ICsyNzksNyBAQAogCSAqLwogCWlmIChvYmpfZGVzYy0+bXV0ZXguc3luY19sZXZlbCA+IHdhbGtfc3RhdGUtPnRocmVhZC0+Y3VycmVudF9zeW5jX2xldmVsKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIkNhbm5vdCByZWxlYXNlIE11dGV4IFslNC40c10sIGluY29ycmVjdCBzeW5jX2xldmVsIiwKKwkJCSAgICAiQ2Fubm90IHJlbGVhc2UgTXV0ZXggWyU0LjRzXSwgaW5jb3JyZWN0IFN5bmNMZXZlbCIsCiAJCQkgICAgYWNwaV91dF9nZXRfbm9kZV9uYW1lKG9ial9kZXNjLT5tdXRleC5ub2RlKSkpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX01VVEVYX09SREVSKTsKIAl9CkBAIC0yODYsNiArMjg4LDcgQEAKIAogCW9ial9kZXNjLT5tdXRleC5hY3F1aXNpdGlvbl9kZXB0aC0tOwogCWlmIChvYmpfZGVzYy0+bXV0ZXguYWNxdWlzaXRpb25fZGVwdGggIT0gMCkgeworCiAJCS8qIEp1c3QgZGVjcmVtZW50IHRoZSBkZXB0aCBhbmQgcmV0dXJuICovCiAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG5hbWVzLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhuYW1lcy5jCmluZGV4IDA1NGZlNWUuLmQzZDcwMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG5hbWVzLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4bmFtZXMuYwpAQCAtNzcsNyArNzcsNyBAQAogCWNoYXIgKm5hbWVfc3RyaW5nOwogCXUzMiBzaXplX25lZWRlZDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2FsbG9jYXRlX25hbWVfc3RyaW5nIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9hbGxvY2F0ZV9uYW1lX3N0cmluZyk7CiAKIAkvKgogCSAqIEFsbG93IHJvb20gZm9yIGFsbCBcIGFuZCBeIHByZWZpeGVzLCBhbGwgc2VnbWVudHMgYW5kIGEgbXVsdGlfbmFtZV9wcmVmaXguCkBAIC04NSw2ICs4NSw3IEBACiAJICogVGhpcyBtYXkgYWN0dWFsbHkgYmUgc29tZXdoYXQgbG9uZ2VyIHRoYW4gbmVlZGVkLgogCSAqLwogCWlmIChwcmVmaXhfY291bnQgPT0gQUNQSV9VSU5UMzJfTUFYKSB7CisKIAkJLyogU3BlY2lhbCBjYXNlIGZvciByb290ICovCiAKIAkJc2l6ZV9uZWVkZWQgPSAxICsgKEFDUElfTkFNRV9TSVpFICogbnVtX25hbWVfc2VncykgKyAyICsgMTsKQEAgLTk3LDcgKzk4LDcgQEAKIAkgKiBBbGxvY2F0ZSBhIGJ1ZmZlciBmb3IgdGhlIG5hbWUuCiAJICogVGhpcyBidWZmZXIgbXVzdCBiZSBkZWxldGVkIGJ5IHRoZSBjYWxsZXIhCiAJICovCi0JbmFtZV9zdHJpbmcgPSBBQ1BJX01FTV9BTExPQ0FURShzaXplX25lZWRlZCk7CisJbmFtZV9zdHJpbmcgPSBBQ1BJX0FMTE9DQVRFKHNpemVfbmVlZGVkKTsKIAlpZiAoIW5hbWVfc3RyaW5nKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sCiAJCQkgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaXplICVkIiwgc2l6ZV9uZWVkZWQpKTsKQEAgLTExOSwxMSArMTIwLDEzIEBACiAJLyogU2V0IHVwIER1YWwgb3IgTXVsdGkgcHJlZml4ZXMgaWYgbmVlZGVkICovCiAKIAlpZiAobnVtX25hbWVfc2VncyA+IDIpIHsKKwogCQkvKiBTZXQgdXAgbXVsdGkgcHJlZml4ZXMgICAqLwogCiAJCSp0ZW1wX3B0cisrID0gQU1MX01VTFRJX05BTUVfUFJFRklYX09QOwogCQkqdGVtcF9wdHIrKyA9IChjaGFyKW51bV9uYW1lX3NlZ3M7CiAJfSBlbHNlIGlmICgyID09IG51bV9uYW1lX3NlZ3MpIHsKKwogCQkvKiBTZXQgdXAgZHVhbCBwcmVmaXhlcyAqLwogCiAJCSp0ZW1wX3B0cisrID0gQU1MX0RVQUxfTkFNRV9QUkVGSVg7CkBAIC0xNTksNyArMTYyLDcgQEAKIAl1MzIgaW5kZXg7CiAJY2hhciBjaGFyX2J1Zls1XTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X25hbWVfc2VnbWVudCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfbmFtZV9zZWdtZW50KTsKIAogCS8qCiAJICogSWYgZmlyc3QgY2hhcmFjdGVyIGlzIGEgZGlnaXQsIHRoZW4gd2Uga25vdyB0aGF0IHdlIGFyZW4ndCBsb29raW5nIGF0IGEKQEAgLTE3Niw3ICsxNzksNyBAQAogCiAJZm9yIChpbmRleCA9IDA7CiAJICAgICAoaW5kZXggPCBBQ1BJX05BTUVfU0laRSkKLQkgICAgICYmIChhY3BpX3V0X3ZhbGlkX2FjcGlfY2hhcmFjdGVyKCphbWxfYWRkcmVzcykpOyBpbmRleCsrKSB7CisJICAgICAmJiAoYWNwaV91dF92YWxpZF9hY3BpX2NoYXIoKmFtbF9hZGRyZXNzLCAwKSk7IGluZGV4KyspIHsKIAkJY2hhcl9idWZbaW5kZXhdID0gKmFtbF9hZGRyZXNzKys7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTE9BRCwgIiVjXG4iLCBjaGFyX2J1ZltpbmRleF0pKTsKIAl9CkBAIC0xODQsNiArMTg3LDcgQEAKIAkvKiBWYWxpZCBuYW1lIHNlZ21lbnQgICovCiAKIAlpZiAoaW5kZXggPT0gNCkgeworCiAJCS8qIEZvdW5kIDQgdmFsaWQgY2hhcmFjdGVycyAqLwogCiAJCWNoYXJfYnVmWzRdID0gJ1wwJzsKQEAgLTI0OSwxMSArMjUzLDEyIEBACiAJdTMyIHByZWZpeF9jb3VudCA9IDA7CiAJdTggaGFzX3ByZWZpeCA9IEZBTFNFOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImV4X2dldF9uYW1lX3N0cmluZyIsIGFtbF9hZGRyZXNzKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9nZXRfbmFtZV9zdHJpbmcsIGFtbF9hZGRyZXNzKTsKIAogCWlmIChBQ1BJX1RZUEVfTE9DQUxfUkVHSU9OX0ZJRUxEID09IGRhdGFfdHlwZSB8fAogCSAgICBBQ1BJX1RZUEVfTE9DQUxfQkFOS19GSUVMRCA9PSBkYXRhX3R5cGUgfHwKIAkgICAgQUNQSV9UWVBFX0xPQ0FMX0lOREVYX0ZJRUxEID09IGRhdGFfdHlwZSkgeworCiAJCS8qIERpc2FsbG93IHByZWZpeGVzIGZvciB0eXBlcyBhc3NvY2lhdGVkIHdpdGggZmllbGRfdW5pdCBuYW1lcyAqLwogCiAJCW5hbWVfc3RyaW5nID0gYWNwaV9leF9hbGxvY2F0ZV9uYW1lX3N0cmluZygwLCAxKTsKQEAgLTI3Miw3ICsyNzcsNyBAQAogCQljYXNlIEFNTF9ST09UX1BSRUZJWDoKIAogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9MT0FELAotCQkJCQkgICJyb290X3ByZWZpeChcXCkgYXQgJXBcbiIsCisJCQkJCSAgIlJvb3RQcmVmaXgoXFwpIGF0ICVwXG4iLAogCQkJCQkgIGFtbF9hZGRyZXNzKSk7CiAKIAkJCS8qCkBAIC0yOTAsNyArMjk1LDcgQEAKIAogCQkJZG8gewogCQkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTE9BRCwKLQkJCQkJCSAgInBhcmVudF9wcmVmaXggKF4pIGF0ICVwXG4iLAorCQkJCQkJICAiUGFyZW50UHJlZml4ICheKSBhdCAlcFxuIiwKIAkJCQkJCSAgYW1sX2FkZHJlc3MpKTsKIAogCQkJCWFtbF9hZGRyZXNzKys7CkBAIC0zMTQsNyArMzE5LDcgQEAKIAkJY2FzZSBBTUxfRFVBTF9OQU1FX1BSRUZJWDoKIAogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9MT0FELAotCQkJCQkgICJkdWFsX25hbWVfcHJlZml4IGF0ICVwXG4iLAorCQkJCQkgICJEdWFsTmFtZVByZWZpeCBhdCAlcFxuIiwKIAkJCQkJICBhbWxfYWRkcmVzcykpOwogCiAJCQlhbWxfYWRkcmVzcysrOwpAQCAtMzQxLDcgKzM0Niw3IEBACiAJCWNhc2UgQU1MX01VTFRJX05BTUVfUFJFRklYX09QOgogCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0xPQUQsCi0JCQkJCSAgIm11bHRpX25hbWVfcHJlZml4IGF0ICVwXG4iLAorCQkJCQkgICJNdWx0aU5hbWVQcmVmaXggYXQgJXBcbiIsCiAJCQkJCSAgYW1sX2FkZHJlc3MpKTsKIAogCQkJLyogRmV0Y2ggY291bnQgb2Ygc2VnbWVudHMgcmVtYWluaW5nIGluIG5hbWUgcGF0aCAqLwpAQCAtMzc3LDcgKzM4Miw3IEBACiAKIAkJCWlmIChwcmVmaXhfY291bnQgPT0gQUNQSV9VSU5UMzJfTUFYKSB7CiAJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCQkJICAibmFtZV9zZWcgaXMgXCJcXFwiIGZvbGxvd2VkIGJ5IE5VTExcbiIpKTsKKwkJCQkJCSAgIk5hbWVTZWcgaXMgXCJcXFwiIGZvbGxvd2VkIGJ5IE5VTExcbiIpKTsKIAkJCX0KIAogCQkJLyogQ29uc3VtZSB0aGUgTlVMTCBieXRlICovCkBAIC00MTAsNiArNDE1LDcgQEAKIAl9CiAKIAlpZiAoQUVfQ1RSTF9QRU5ESU5HID09IHN0YXR1cyAmJiBoYXNfcHJlZml4KSB7CisKIAkJLyogUmFuIG91dCBvZiBzZWdtZW50cyBhZnRlciBwcm9jZXNzaW5nIGEgcHJlZml4ICovCiAKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywgIk1hbGZvcm1lZCBOYW1lIGF0ICVwIiwgbmFtZV9zdHJpbmcpKTsKQEAgLTQxOCw3ICs0MjQsNyBAQAogCiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCWlmIChuYW1lX3N0cmluZykgewotCQkJQUNQSV9NRU1fRlJFRShuYW1lX3N0cmluZyk7CisJCQlBQ1BJX0ZSRUUobmFtZV9zdHJpbmcpOwogCQl9CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMS5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4b3BhcmcxLmMKaW5kZXggMjNkMDgyMy4uNjM3NGQ4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4b3BhcmcxLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4b3BhcmcxLmMKQEAgLTg5LDcgKzg5LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZXR1cm5fZGVzYyA9IE5VTEw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUigiZXhfb3Bjb2RlXzBBXzBUXzFSIiwKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihleF9vcGNvZGVfMEFfMFRfMVIsCiAJCQkJYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUod2Fsa19zdGF0ZS0+b3Bjb2RlKSk7CiAKIAkvKiBFeGFtaW5lIHRoZSBBTUwgb3Bjb2RlICovCkBAIC0xNTAsNyArMTUwLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICoqb3BlcmFuZCA9ICZ3YWxrX3N0YXRlLT5vcGVyYW5kc1swXTsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfU1RSKCJleF9vcGNvZGVfMUFfMFRfMFIiLAorCUFDUElfRlVOQ1RJT05fVFJBQ0VfU1RSKGV4X29wY29kZV8xQV8wVF8wUiwKIAkJCQlhY3BpX3BzX2dldF9vcGNvZGVfbmFtZSh3YWxrX3N0YXRlLT5vcGNvZGUpKTsKIAogCS8qIEV4YW1pbmUgdGhlIEFNTCBvcGNvZGUgKi8KQEAgLTIxNiw3ICsyMTYsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKipvcGVyYW5kID0gJndhbGtfc3RhdGUtPm9wZXJhbmRzWzBdOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV8xQV8xVF8wUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzFBXzFUXzBSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJLyogRXhhbWluZSB0aGUgQU1MIG9wY29kZSAqLwpAQCAtMjY0LDcgKzI2NCw3IEBACiAJYWNwaV9pbnRlZ2VyIHBvd2VyX29mX3RlbjsKIAlhY3BpX2ludGVnZXIgZGlnaXQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUigiZXhfb3Bjb2RlXzFBXzFUXzFSIiwKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihleF9vcGNvZGVfMUFfMVRfMVIsCiAJCQkJYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUod2Fsa19zdGF0ZS0+b3Bjb2RlKSk7CiAKIAkvKiBFeGFtaW5lIHRoZSBBTUwgb3Bjb2RlICovCkBAIC0zMjIsOCArMzIyLDkgQEAKIAogCQkJLyogU2luY2UgdGhlIGJpdCBwb3NpdGlvbiBpcyBvbmUtYmFzZWQsIHN1YnRyYWN0IGZyb20gMzMgKDY1KSAqLwogCi0JCQlyZXR1cm5fZGVzYy0+aW50ZWdlci52YWx1ZSA9IHRlbXAzMiA9PSAwID8gMCA6Ci0JCQkgICAgKEFDUElfSU5URUdFUl9CSVRfU0laRSArIDEpIC0gdGVtcDMyOworCQkJcmV0dXJuX2Rlc2MtPmludGVnZXIudmFsdWUgPQorCQkJICAgIHRlbXAzMiA9PQorCQkJICAgIDAgPyAwIDogKEFDUElfSU5URUdFUl9CSVRfU0laRSArIDEpIC0gdGVtcDMyOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBBTUxfRlJPTV9CQ0RfT1A6CS8qIGZyb21fYmNkIChCQ0RWYWx1ZSwgUmVzdWx0KSAqLwpAQCAtMzQyLDYgKzM0Myw3IEBACiAJCQlmb3IgKGkgPSAwOwogCQkJICAgICAoaSA8IGFjcGlfZ2JsX2ludGVnZXJfbnliYmxlX3dpZHRoKSAmJiAoZGlnaXQgPiAwKTsKIAkJCSAgICAgaSsrKSB7CisKIAkJCQkvKiBHZXQgdGhlIGxlYXN0IHNpZ25pZmljYW50IDQtYml0IEJDRCBkaWdpdCAqLwogCiAJCQkJdGVtcDMyID0gKCh1MzIpIGRpZ2l0KSAmIDB4RjsKQEAgLTQ4Nyw2ICs0ODksNyBAQAogCQlzdGF0dXMgPSBhY3BpX2V4X2NvbnZlcnRfdG9fc3RyaW5nKG9wZXJhbmRbMF0sICZyZXR1cm5fZGVzYywKIAkJCQkJCSAgIEFDUElfRVhQTElDSVRfQ09OVkVSVF9ERUNJTUFMKTsKIAkJaWYgKHJldHVybl9kZXNjID09IG9wZXJhbmRbMF0pIHsKKwogCQkJLyogTm8gY29udmVyc2lvbiBwZXJmb3JtZWQsIGFkZCByZWYgdG8gaGFuZGxlIHJldHVybiB2YWx1ZSAqLwogCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKHJldHVybl9kZXNjKTsKIAkJfQpAQCAtNDk3LDYgKzUwMCw3IEBACiAJCXN0YXR1cyA9IGFjcGlfZXhfY29udmVydF90b19zdHJpbmcob3BlcmFuZFswXSwgJnJldHVybl9kZXNjLAogCQkJCQkJICAgQUNQSV9FWFBMSUNJVF9DT05WRVJUX0hFWCk7CiAJCWlmIChyZXR1cm5fZGVzYyA9PSBvcGVyYW5kWzBdKSB7CisKIAkJCS8qIE5vIGNvbnZlcnNpb24gcGVyZm9ybWVkLCBhZGQgcmVmIHRvIGhhbmRsZSByZXR1cm4gdmFsdWUgKi8KIAkJCWFjcGlfdXRfYWRkX3JlZmVyZW5jZShyZXR1cm5fZGVzYyk7CiAJCX0KQEAgLTUwNiw2ICs1MTAsNyBAQAogCiAJCXN0YXR1cyA9IGFjcGlfZXhfY29udmVydF90b19idWZmZXIob3BlcmFuZFswXSwgJnJldHVybl9kZXNjKTsKIAkJaWYgKHJldHVybl9kZXNjID09IG9wZXJhbmRbMF0pIHsKKwogCQkJLyogTm8gY29udmVyc2lvbiBwZXJmb3JtZWQsIGFkZCByZWYgdG8gaGFuZGxlIHJldHVybiB2YWx1ZSAqLwogCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKHJldHVybl9kZXNjKTsKIAkJfQpAQCAtNTE2LDYgKzUyMSw3IEBACiAJCXN0YXR1cyA9IGFjcGlfZXhfY29udmVydF90b19pbnRlZ2VyKG9wZXJhbmRbMF0sICZyZXR1cm5fZGVzYywKIAkJCQkJCSAgICBBQ1BJX0FOWV9CQVNFKTsKIAkJaWYgKHJldHVybl9kZXNjID09IG9wZXJhbmRbMF0pIHsKKwogCQkJLyogTm8gY29udmVyc2lvbiBwZXJmb3JtZWQsIGFkZCByZWYgdG8gaGFuZGxlIHJldHVybiB2YWx1ZSAqLwogCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKHJldHVybl9kZXNjKTsKIAkJfQpAQCAtNTQxLDYgKzU0Nyw3IEBACiAJfQogCiAJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJLyogU3RvcmUgdGhlIHJldHVybiB2YWx1ZSBjb21wdXRlZCBhYm92ZSBpbnRvIHRoZSB0YXJnZXQgb2JqZWN0ICovCiAKIAkJc3RhdHVzID0gYWNwaV9leF9zdG9yZShyZXR1cm5fZGVzYywgb3BlcmFuZFsxXSwgd2Fsa19zdGF0ZSk7CkBAIC01NDgsMTYgKzU1NSwxOCBAQAogCiAgICAgICBjbGVhbnVwOgogCi0JaWYgKCF3YWxrX3N0YXRlLT5yZXN1bHRfb2JqKSB7Ci0JCXdhbGtfc3RhdGUtPnJlc3VsdF9vYmogPSByZXR1cm5fZGVzYzsKLQl9Ci0KIAkvKiBEZWxldGUgcmV0dXJuIG9iamVjdCBvbiBlcnJvciAqLwogCiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShyZXR1cm5fZGVzYyk7CiAJfQogCisJLyogU2F2ZSByZXR1cm4gb2JqZWN0IG9uIHN1Y2Nlc3MgKi8KKworCWVsc2UgaWYgKCF3YWxrX3N0YXRlLT5yZXN1bHRfb2JqKSB7CisJCXdhbGtfc3RhdGUtPnJlc3VsdF9vYmogPSByZXR1cm5fZGVzYzsKKwl9CisKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIApAQCAtNTgyLDcgKzU5MSw3IEBACiAJdTMyIHR5cGU7CiAJYWNwaV9pbnRlZ2VyIHZhbHVlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV8xQV8wVF8xUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzFBXzBUXzFSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJLyogRXhhbWluZSB0aGUgQU1MIG9wY29kZSAqLwpAQCAtNjI1LDYgKzYzNCw3IEBACiAJCXRlbXBfZGVzYyA9IG9wZXJhbmRbMF07CiAJCWlmIChBQ1BJX0dFVF9ERVNDUklQVE9SX1RZUEUodGVtcF9kZXNjKSA9PQogCQkgICAgQUNQSV9ERVNDX1RZUEVfT1BFUkFORCkgeworCiAJCQkvKiBJbnRlcm5hbCByZWZlcmVuY2Ugb2JqZWN0IC0gcHJldmVudCBkZWxldGlvbiAqLwogCiAJCQlhY3BpX3V0X2FkZF9yZWZlcmVuY2UodGVtcF9kZXNjKTsKQEAgLTY4OSw2ICs2OTksNyBAQAogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCWdvdG8gY2xlYW51cDsKIAkJfQorCiAJCS8qIEFsbG9jYXRlIGEgZGVzY3JpcHRvciB0byBob2xkIHRoZSB0eXBlLiAqLwogCiAJCXJldHVybl9kZXNjID0gYWNwaV91dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0KEFDUElfVFlQRV9JTlRFR0VSKTsKQEAgLTc3Nyw4ICs3ODgsMjUgQEAKIAogCQkvKiBDaGVjayBmb3IgYSBtZXRob2QgbG9jYWwgb3IgYXJndW1lbnQsIG9yIHN0YW5kYWxvbmUgU3RyaW5nICovCiAKLQkJaWYgKEFDUElfR0VUX0RFU0NSSVBUT1JfVFlQRShvcGVyYW5kWzBdKSAhPQorCQlpZiAoQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKG9wZXJhbmRbMF0pID09CiAJCSAgICBBQ1BJX0RFU0NfVFlQRV9OQU1FRCkgeworCQkJdGVtcF9kZXNjID0KKwkJCSAgICBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3QoKHN0cnVjdAorCQkJCQkJCSBhY3BpX25hbWVzcGFjZV9ub2RlICopCisJCQkJCQkJb3BlcmFuZFswXSk7CisJCQlpZiAodGVtcF9kZXNjCisJCQkgICAgJiYKKwkJCSAgICAoKEFDUElfR0VUX09CSkVDVF9UWVBFKHRlbXBfZGVzYykgPT0KKwkJCSAgICAgIEFDUElfVFlQRV9TVFJJTkcpCisJCQkgICAgIHx8IChBQ1BJX0dFVF9PQkpFQ1RfVFlQRSh0ZW1wX2Rlc2MpID09CisJCQkJIEFDUElfVFlQRV9MT0NBTF9SRUZFUkVOQ0UpKSkgeworCQkJCW9wZXJhbmRbMF0gPSB0ZW1wX2Rlc2M7CisJCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKHRlbXBfZGVzYyk7CisJCQl9IGVsc2UgeworCQkJCXN0YXR1cyA9IEFFX0FNTF9PUEVSQU5EX1RZUEU7CisJCQkJZ290byBjbGVhbnVwOworCQkJfQorCQl9IGVsc2UgewogCQkJc3dpdGNoIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShvcGVyYW5kWzBdKSkgewogCQkJY2FzZSBBQ1BJX1RZUEVfTE9DQUxfUkVGRVJFTkNFOgogCQkJCS8qCkBAIC04MjcsMjYgKzg1NSwzNSBAQAogCQkJCWJyZWFrOwogCiAJCQljYXNlIEFDUElfVFlQRV9TVFJJTkc6CisJCQkJYnJlYWs7CiAKKwkJCWRlZmF1bHQ6CisJCQkJc3RhdHVzID0gQUVfQU1MX09QRVJBTkRfVFlQRTsKKwkJCQlnb3RvIGNsZWFudXA7CisJCQl9CisJCX0KKworCQlpZiAoQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKG9wZXJhbmRbMF0pICE9CisJCSAgICBBQ1BJX0RFU0NfVFlQRV9OQU1FRCkgeworCQkJaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9wZXJhbmRbMF0pID09CisJCQkgICAgQUNQSV9UWVBFX1NUUklORykgewogCQkJCS8qCiAJCQkJICogVGhpcyBpcyBhIGRlcmVmX29mIChTdHJpbmcpLiBUaGUgc3RyaW5nIGlzIGEgcmVmZXJlbmNlCiAJCQkJICogdG8gYSBuYW1lZCBBQ1BJIG9iamVjdC4KIAkJCQkgKgogCQkJCSAqIDEpIEZpbmQgdGhlIG93bmluZyBOb2RlCi0JCQkJICogMikgRGVyZWZlcmVuY2UgdGhlIG5vZGUgdG8gYW4gYWN0dWFsIG9iamVjdC4gIENvdWxkIGJlIGEKKwkJCQkgKiAyKSBEZXJlZmVyZW5jZSB0aGUgbm9kZSB0byBhbiBhY3R1YWwgb2JqZWN0LiBDb3VsZCBiZSBhCiAJCQkJICogICAgRmllbGQsIHNvIHdlIG5lZWQgdG8gcmVzb2x2ZSB0aGUgbm9kZSB0byBhIHZhbHVlLgogCQkJCSAqLwogCQkJCXN0YXR1cyA9Ci0JCQkJICAgIGFjcGlfbnNfZ2V0X25vZGVfYnlfcGF0aChvcGVyYW5kWzBdLT5zdHJpbmcuCi0JCQkJCQkJICAgICBwb2ludGVyLAotCQkJCQkJCSAgICAgd2Fsa19zdGF0ZS0+Ci0JCQkJCQkJICAgICBzY29wZV9pbmZvLT5zY29wZS4KLQkJCQkJCQkgICAgIG5vZGUsCi0JCQkJCQkJICAgICBBQ1BJX05TX1NFQVJDSF9QQVJFTlQsCi0JCQkJCQkJICAgICBBQ1BJX0NBU1RfSU5ESVJFQ1RfUFRSCi0JCQkJCQkJICAgICAoc3RydWN0Ci0JCQkJCQkJICAgICAgYWNwaV9uYW1lc3BhY2Vfbm9kZSwKLQkJCQkJCQkgICAgICAmcmV0dXJuX2Rlc2MpKTsKKwkJCQkgICAgYWNwaV9uc19nZXRfbm9kZSh3YWxrX3N0YXRlLT5zY29wZV9pbmZvLT4KKwkJCQkJCSAgICAgc2NvcGUubm9kZSwKKwkJCQkJCSAgICAgb3BlcmFuZFswXS0+c3RyaW5nLnBvaW50ZXIsCisJCQkJCQkgICAgIEFDUElfTlNfU0VBUkNIX1BBUkVOVCwKKwkJCQkJCSAgICAgQUNQSV9DQVNUX0lORElSRUNUX1BUUgorCQkJCQkJICAgICAoc3RydWN0CisJCQkJCQkgICAgICBhY3BpX25hbWVzcGFjZV9ub2RlLAorCQkJCQkJICAgICAgJnJldHVybl9kZXNjKSk7CiAJCQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQkJCWdvdG8gY2xlYW51cDsKIAkJCQl9CkBAIC04NTcsMTEgKzg5NCw2IEBACiAJCQkJICAgICAoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUsICZyZXR1cm5fZGVzYyksCiAJCQkJICAgICB3YWxrX3N0YXRlKTsKIAkJCQlnb3RvIGNsZWFudXA7Ci0KLQkJCWRlZmF1bHQ6Ci0KLQkJCQlzdGF0dXMgPSBBRV9BTUxfT1BFUkFORF9UWVBFOwotCQkJCWdvdG8gY2xlYW51cDsKIAkJCX0KIAkJfQogCkBAIC05MzcsMTMgKzk2OSwxMiBAQAogCQkJCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlCiAJCQkJCQkgICAgKHJldHVybl9kZXNjKTsKIAkJCQkJfQotCiAJCQkJCWJyZWFrOwogCiAJCQkJZGVmYXVsdDoKIAogCQkJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCQkJICAgICJVbmtub3duIEluZGV4IHRhcmdldF90eXBlICVYIGluIG9iaiAlcCIsCisJCQkJCQkgICAgIlVua25vd24gSW5kZXggVGFyZ2V0VHlwZSAlWCBpbiBvYmogJXAiLAogCQkJCQkJICAgIG9wZXJhbmRbMF0tPnJlZmVyZW5jZS4KIAkJCQkJCSAgICB0YXJnZXRfdHlwZSwgb3BlcmFuZFswXSkpOwogCQkJCQlzdGF0dXMgPSBBRV9BTUxfT1BFUkFORF9UWVBFOwpAQCAtOTU3LDcgKzk4OCw2IEBACiAKIAkJCQlpZiAoQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKHJldHVybl9kZXNjKSA9PQogCQkJCSAgICBBQ1BJX0RFU0NfVFlQRV9OQU1FRCkgewotCiAJCQkJCXJldHVybl9kZXNjID0KIAkJCQkJICAgIGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdCgoc3RydWN0CiAJCQkJCQkJCQkgYWNwaV9uYW1lc3BhY2Vfbm9kZQpAQCAtOTcyLDcgKzEwMDIsNyBAQAogCiAJCQlkZWZhdWx0OgogCQkJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkJCSAgICAiVW5rbm93biBvcGNvZGUgaW4gcmVmKCVwKSAtICVYIiwKKwkJCQkJICAgICJVbmtub3duIG9wY29kZSBpbiByZWZlcmVuY2UoJXApIC0gJVgiLAogCQkJCQkgICAgb3BlcmFuZFswXSwKIAkJCQkJICAgIG9wZXJhbmRbMF0tPnJlZmVyZW5jZS5vcGNvZGUpKTsKIApAQCAtOTk4LDYgKzEwMjgsMTEgQEAKIAkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKHJldHVybl9kZXNjKTsKIAl9CiAKLQl3YWxrX3N0YXRlLT5yZXN1bHRfb2JqID0gcmV0dXJuX2Rlc2M7CisJLyogU2F2ZSByZXR1cm4gb2JqZWN0IG9uIHN1Y2Nlc3MgKi8KKworCWVsc2UgeworCQl3YWxrX3N0YXRlLT5yZXN1bHRfb2JqID0gcmV0dXJuX2Rlc2M7CisJfQorCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhvcGFyZzIuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMi5jCmluZGV4IGUyNjNhNWQuLjdkMmNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMi5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMi5jCkBAIC05Miw3ICs5Miw3IEBACiAJdTMyIHZhbHVlOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV8yQV8wVF8wUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzJBXzBUXzBSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJLyogRXhhbWluZSB0aGUgb3Bjb2RlICovCkBAIC0xMjEsNyArMTIxLDcgQEAKICNpZmRlZiBBQ1BJX0dQRV9OT1RJRllfQ0hFQ0sKIAkJLyoKIAkJICogR1BFIG1ldGhvZCB3YWtlL25vdGlmeSBjaGVjay4gIEhlcmUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgd2UKLQkJICogZG9uJ3QgcmVjZWl2ZSBhbnkgImRldmljZV93YWtlIiBOb3RpZmllcyBmcm9tIGEgR1BFIF9MeHggb3IgX0V4eAorCQkgKiBkb24ndCByZWNlaXZlIGFueSAiRGV2aWNlV2FrZSIgTm90aWZpZXMgZnJvbSBhIEdQRSBfTHh4IG9yIF9FeHgKIAkJICogR1BFIG1ldGhvZCBkdXJpbmcgc3lzdGVtIHJ1bnRpbWUuICBJZiB3ZSBkbywgdGhlIEdQRSBpcyBtYXJrZWQKIAkJICogYXMgIndha2Utb25seSIgYW5kIGRpc2FibGVkLgogCQkgKgpAQCAtMTM4LDYgKzEzOCw3IEBACiAJCQkgICAgYWNwaV9ldl9jaGVja19mb3Jfd2FrZV9vbmx5X2dwZSh3YWxrX3N0YXRlLT4KIAkJCQkJCQkgICAgZ3BlX2V2ZW50X2luZm8pOwogCQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisKIAkJCQkvKiBBRV9XQUtFX09OTFlfR1BFIG9ubHkgZXJyb3IsIG1lYW5zIGlnbm9yZSB0aGlzIG5vdGlmeSAqLwogCiAJCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKQpAQCAtMTg1LDcgKzE4Niw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmV0dXJuX2Rlc2MyID0gTlVMTDsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUigiZXhfb3Bjb2RlXzJBXzJUXzFSIiwKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihleF9vcGNvZGVfMkFfMlRfMVIsCiAJCQkJYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUod2Fsa19zdGF0ZS0+b3Bjb2RlKSk7CiAKIAkvKiBFeGVjdXRlIHRoZSBvcGNvZGUgKi8KQEAgLTI1Miw2ICsyNTMsNyBAQAogCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShyZXR1cm5fZGVzYzIpOwogCiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisKIAkJLyogRGVsZXRlIHRoZSByZXR1cm4gb2JqZWN0ICovCiAKIAkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKHJldHVybl9kZXNjMSk7CkBAIC0yODEsMTIgKzI4MywxMyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCWFjcGlfc2l6ZSBsZW5ndGg7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUigiZXhfb3Bjb2RlXzJBXzFUXzFSIiwKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihleF9vcGNvZGVfMkFfMVRfMVIsCiAJCQkJYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUod2Fsa19zdGF0ZS0+b3Bjb2RlKSk7CiAKIAkvKiBFeGVjdXRlIHRoZSBvcGNvZGUgKi8KIAogCWlmICh3YWxrX3N0YXRlLT5vcF9pbmZvLT5mbGFncyAmIEFNTF9NQVRIKSB7CisKIAkJLyogQWxsIHNpbXBsZSBtYXRoIG9wY29kZXMgKGFkZCwgZXRjLikgKi8KIAogCQlyZXR1cm5fZGVzYyA9IGFjcGlfdXRfY3JlYXRlX2ludGVybmFsX29iamVjdChBQ1BJX1RZUEVfSU5URUdFUik7CkBAIC0zODMsNTQgKzM4Niw3MCBAQAogCQkJZ290byBjbGVhbnVwOwogCQl9CiAKKwkJLyogSW5pdGlhbGl6ZSB0aGUgSW5kZXggcmVmZXJlbmNlIG9iamVjdCAqLworCiAJCWluZGV4ID0gb3BlcmFuZFsxXS0+aW50ZWdlci52YWx1ZTsKKwkJcmV0dXJuX2Rlc2MtPnJlZmVyZW5jZS5vZmZzZXQgPSAodTMyKSBpbmRleDsKKwkJcmV0dXJuX2Rlc2MtPnJlZmVyZW5jZS5vcGNvZGUgPSBBTUxfSU5ERVhfT1A7CiAKLQkJLyogQXQgdGhpcyBwb2ludCwgdGhlIFNvdXJjZSBvcGVyYW5kIGlzIGEgUGFja2FnZSwgQnVmZmVyLCBvciBTdHJpbmcgKi8KKwkJLyoKKwkJICogQXQgdGhpcyBwb2ludCwgdGhlIFNvdXJjZSBvcGVyYW5kIGlzIGEgU3RyaW5nLCBCdWZmZXIsIG9yIFBhY2thZ2UuCisJCSAqIFZlcmlmeSB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gcmFuZ2UuCisJCSAqLworCQlzd2l0Y2ggKEFDUElfR0VUX09CSkVDVF9UWVBFKG9wZXJhbmRbMF0pKSB7CisJCWNhc2UgQUNQSV9UWVBFX1NUUklORzoKIAotCQlpZiAoQUNQSV9HRVRfT0JKRUNUX1RZUEUob3BlcmFuZFswXSkgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHsKLQkJCS8qIE9iamVjdCB0byBiZSBpbmRleGVkIGlzIGEgUGFja2FnZSAqLwotCi0JCQlpZiAoaW5kZXggPj0gb3BlcmFuZFswXS0+cGFja2FnZS5jb3VudCkgewotCQkJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkJCSAgICAiSW5kZXggdmFsdWUgKCVYJTguOFgpIGJleW9uZCBwYWNrYWdlIGVuZCAoJVgpIiwKLQkJCQkJICAgIEFDUElfRk9STUFUX1VJTlQ2NChpbmRleCksCi0JCQkJCSAgICBvcGVyYW5kWzBdLT5wYWNrYWdlLmNvdW50KSk7Ci0JCQkJc3RhdHVzID0gQUVfQU1MX1BBQ0tBR0VfTElNSVQ7Ci0JCQkJZ290byBjbGVhbnVwOwotCQkJfQotCi0JCQlyZXR1cm5fZGVzYy0+cmVmZXJlbmNlLnRhcmdldF90eXBlID0gQUNQSV9UWVBFX1BBQ0tBR0U7Ci0JCQlyZXR1cm5fZGVzYy0+cmVmZXJlbmNlLm9iamVjdCA9IG9wZXJhbmRbMF07Ci0JCQlyZXR1cm5fZGVzYy0+cmVmZXJlbmNlLndoZXJlID0KLQkJCSAgICAmb3BlcmFuZFswXS0+cGFja2FnZS5lbGVtZW50c1tpbmRleF07Ci0JCX0gZWxzZSB7Ci0JCQkvKiBPYmplY3QgdG8gYmUgaW5kZXhlZCBpcyBhIEJ1ZmZlci9TdHJpbmcgKi8KLQotCQkJaWYgKGluZGV4ID49IG9wZXJhbmRbMF0tPmJ1ZmZlci5sZW5ndGgpIHsKLQkJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCQkgICAgIkluZGV4IHZhbHVlICglWCU4LjhYKSBiZXlvbmQgZW5kIG9mIGJ1ZmZlciAoJVgpIiwKLQkJCQkJICAgIEFDUElfRk9STUFUX1VJTlQ2NChpbmRleCksCi0JCQkJCSAgICBvcGVyYW5kWzBdLT5idWZmZXIubGVuZ3RoKSk7Ci0JCQkJc3RhdHVzID0gQUVfQU1MX0JVRkZFUl9MSU1JVDsKLQkJCQlnb3RvIGNsZWFudXA7CisJCQlpZiAoaW5kZXggPj0gb3BlcmFuZFswXS0+c3RyaW5nLmxlbmd0aCkgeworCQkJCXN0YXR1cyA9IEFFX0FNTF9TVFJJTkdfTElNSVQ7CiAJCQl9CiAKIAkJCXJldHVybl9kZXNjLT5yZWZlcmVuY2UudGFyZ2V0X3R5cGUgPQogCQkJICAgIEFDUElfVFlQRV9CVUZGRVJfRklFTEQ7Ci0JCQlyZXR1cm5fZGVzYy0+cmVmZXJlbmNlLm9iamVjdCA9IG9wZXJhbmRbMF07CisJCQlicmVhazsKKworCQljYXNlIEFDUElfVFlQRV9CVUZGRVI6CisKKwkJCWlmIChpbmRleCA+PSBvcGVyYW5kWzBdLT5idWZmZXIubGVuZ3RoKSB7CisJCQkJc3RhdHVzID0gQUVfQU1MX0JVRkZFUl9MSU1JVDsKKwkJCX0KKworCQkJcmV0dXJuX2Rlc2MtPnJlZmVyZW5jZS50YXJnZXRfdHlwZSA9CisJCQkgICAgQUNQSV9UWVBFX0JVRkZFUl9GSUVMRDsKKwkJCWJyZWFrOworCisJCWNhc2UgQUNQSV9UWVBFX1BBQ0tBR0U6CisKKwkJCWlmIChpbmRleCA+PSBvcGVyYW5kWzBdLT5wYWNrYWdlLmNvdW50KSB7CisJCQkJc3RhdHVzID0gQUVfQU1MX1BBQ0tBR0VfTElNSVQ7CisJCQl9CisKKwkJCXJldHVybl9kZXNjLT5yZWZlcmVuY2UudGFyZ2V0X3R5cGUgPSBBQ1BJX1RZUEVfUEFDS0FHRTsKKwkJCXJldHVybl9kZXNjLT5yZWZlcmVuY2Uud2hlcmUgPQorCQkJICAgICZvcGVyYW5kWzBdLT5wYWNrYWdlLmVsZW1lbnRzW2luZGV4XTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisKKwkJCXN0YXR1cyA9IEFFX0FNTF9JTlRFUk5BTDsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCisJCS8qIEZhaWx1cmUgbWVhbnMgdGhhdCB0aGUgSW5kZXggd2FzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBvYmplY3QgKi8KKworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCisJCQkJCSJJbmRleCAoJVglOC44WCkgaXMgYmV5b25kIGVuZCBvZiBvYmplY3QiLAorCQkJCQlBQ1BJX0ZPUk1BVF9VSU5UNjQoaW5kZXgpKSk7CisJCQlnb3RvIGNsZWFudXA7CiAJCX0KIAogCQkvKgotCQkgKiBBZGQgYSByZWZlcmVuY2UgdG8gdGhlIHRhcmdldCBwYWNrYWdlL2J1ZmZlci9zdHJpbmcgZm9yIHRoZSBsaWZlCi0JCSAqIG9mIHRoZSBpbmRleC4KKwkJICogU2F2ZSB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgYWRkIGEgcmVmZXJlbmNlIHRvIGl0IGZvciB0aGUgbGlmZQorCQkgKiBvZiB0aGUgaW5kZXgKIAkJICovCisJCXJldHVybl9kZXNjLT5yZWZlcmVuY2Uub2JqZWN0ID0gb3BlcmFuZFswXTsKIAkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKG9wZXJhbmRbMF0pOwogCi0JCS8qIENvbXBsZXRlIHRoZSBJbmRleCByZWZlcmVuY2Ugb2JqZWN0ICovCi0KLQkJcmV0dXJuX2Rlc2MtPnJlZmVyZW5jZS5vcGNvZGUgPSBBTUxfSU5ERVhfT1A7Ci0JCXJldHVybl9kZXNjLT5yZWZlcmVuY2Uub2Zmc2V0ID0gKHUzMikgaW5kZXg7Ci0KIAkJLyogU3RvcmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgVGFyZ2V0ICovCiAKIAkJc3RhdHVzID0gYWNwaV9leF9zdG9yZShyZXR1cm5fZGVzYywgb3BlcmFuZFsyXSwgd2Fsa19zdGF0ZSk7CkBAIC00OTUsNyArNTE0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAl1OCBsb2dpY2FsX3Jlc3VsdCA9IEZBTFNFOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV8yQV8wVF8xUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzJBXzBUXzFSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJLyogQ3JlYXRlIHRoZSBpbnRlcm5hbCByZXR1cm4gb2JqZWN0ICovCkBAIC01MDksNiArNTI4LDcgQEAKIAkvKiBFeGVjdXRlIHRoZSBPcGNvZGUgKi8KIAogCWlmICh3YWxrX3N0YXRlLT5vcF9pbmZvLT5mbGFncyAmIEFNTF9MT0dJQ0FMX05VTUVSSUMpIHsKKwogCQkvKiBsb2dpY2FsX29wIChPcGVyYW5kMCwgT3BlcmFuZDEpICovCiAKIAkJc3RhdHVzID0gYWNwaV9leF9kb19sb2dpY2FsX251bWVyaWNfb3Aod2Fsa19zdGF0ZS0+b3Bjb2RlLApAQCAtNTE4LDYgKzUzOCw3IEBACiAJCQkJCQkgICAgICAgdmFsdWUsICZsb2dpY2FsX3Jlc3VsdCk7CiAJCWdvdG8gc3RvcmVfbG9naWNhbF9yZXN1bHQ7CiAJfSBlbHNlIGlmICh3YWxrX3N0YXRlLT5vcF9pbmZvLT5mbGFncyAmIEFNTF9MT0dJQ0FMKSB7CisKIAkJLyogbG9naWNhbF9vcCAoT3BlcmFuZDAsIE9wZXJhbmQxKSAqLwogCiAJCXN0YXR1cyA9IGFjcGlfZXhfZG9fbG9naWNhbF9vcCh3YWxrX3N0YXRlLT5vcGNvZGUsIG9wZXJhbmRbMF0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhvcGFyZzMuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMy5jCmluZGV4IDZhM2E4ODMuLmUyZDk0NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMy5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnMy5jCkBAIC04OCwyMCArODgsMTkgQEAKIAlzdHJ1Y3QgYWNwaV9zaWduYWxfZmF0YWxfaW5mbyAqZmF0YWw7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUigiZXhfb3Bjb2RlXzNBXzBUXzBSIiwKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihleF9vcGNvZGVfM0FfMFRfMFIsCiAJCQkJYWNwaV9wc19nZXRfb3Bjb2RlX25hbWUod2Fsa19zdGF0ZS0+b3Bjb2RlKSk7CiAKIAlzd2l0Y2ggKHdhbGtfc3RhdGUtPm9wY29kZSkgewogCWNhc2UgQU1MX0ZBVEFMX09QOgkvKiBGYXRhbCAoZmF0YWxfdHlwZSBmYXRhbF9jb2RlIGZhdGFsX2FyZykgKi8KIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sCi0JCQkJICAiZmF0YWxfb3A6IFR5cGUgJVggQ29kZSAlWCBBcmcgJVggPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PFxuIiwKKwkJCQkgICJGYXRhbE9wOiBUeXBlICVYIENvZGUgJVggQXJnICVYIDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDxcbiIsCiAJCQkJICAodTMyKSBvcGVyYW5kWzBdLT5pbnRlZ2VyLnZhbHVlLAogCQkJCSAgKHUzMikgb3BlcmFuZFsxXS0+aW50ZWdlci52YWx1ZSwKIAkJCQkgICh1MzIpIG9wZXJhbmRbMl0tPmludGVnZXIudmFsdWUpKTsKIAotCQlmYXRhbCA9Ci0JCSAgICBBQ1BJX01FTV9BTExPQ0FURShzaXplb2Yoc3RydWN0IGFjcGlfc2lnbmFsX2ZhdGFsX2luZm8pKTsKKwkJZmF0YWwgPSBBQ1BJX0FMTE9DQVRFKHNpemVvZihzdHJ1Y3QgYWNwaV9zaWduYWxfZmF0YWxfaW5mbykpOwogCQlpZiAoZmF0YWwpIHsKIAkJCWZhdGFsLT50eXBlID0gKHUzMikgb3BlcmFuZFswXS0+aW50ZWdlci52YWx1ZTsKIAkJCWZhdGFsLT5jb2RlID0gKHUzMikgb3BlcmFuZFsxXS0+aW50ZWdlci52YWx1ZTsKQEAgLTExNCw3ICsxMTMsNyBAQAogCiAJCS8qIE1pZ2h0IHJldHVybiB3aGlsZSBPUyBpcyBzaHV0dGluZyBkb3duLCBqdXN0IGNvbnRpbnVlICovCiAKLQkJQUNQSV9NRU1fRlJFRShmYXRhbCk7CisJCUFDUElfRlJFRShmYXRhbCk7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTAsNyBAQAogCWFjcGlfaW50ZWdlciBpbmRleDsKIAlhY3BpX3NpemUgbGVuZ3RoOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV8zQV8xVF8xUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzNBXzFUXzFSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJc3dpdGNoICh3YWxrX3N0YXRlLT5vcGNvZGUpIHsKQEAgLTE5Niw3ICsxOTUsNyBAQAogCiAJCQkvKiBBbHdheXMgYWxsb2NhdGUgYSBuZXcgYnVmZmVyIGZvciB0aGUgU3RyaW5nICovCiAKLQkJCWJ1ZmZlciA9IEFDUElfTUVNX0NBTExPQ0FURSgoYWNwaV9zaXplKSBsZW5ndGggKyAxKTsKKwkJCWJ1ZmZlciA9IEFDUElfQUxMT0NBVEVfWkVST0VEKChhY3BpX3NpemUpIGxlbmd0aCArIDEpOwogCQkJaWYgKCFidWZmZXIpIHsKIAkJCQlzdGF0dXMgPSBBRV9OT19NRU1PUlk7CiAJCQkJZ290byBjbGVhbnVwOwpAQCAtMjA4LDkgKzIwNywxMCBAQAogCQkJLyogSWYgdGhlIHJlcXVlc3RlZCBsZW5ndGggaXMgemVybywgZG9uJ3QgYWxsb2NhdGUgYSBidWZmZXIgKi8KIAogCQkJaWYgKGxlbmd0aCA+IDApIHsKKwogCQkJCS8qIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBmb3IgdGhlIEJ1ZmZlciAqLwogCi0JCQkJYnVmZmVyID0gQUNQSV9NRU1fQ0FMTE9DQVRFKGxlbmd0aCk7CisJCQkJYnVmZmVyID0gQUNQSV9BTExPQ0FURV9aRVJPRUQobGVuZ3RoKTsKIAkJCQlpZiAoIWJ1ZmZlcikgewogCQkJCQlzdGF0dXMgPSBBRV9OT19NRU1PUlk7CiAJCQkJCWdvdG8gY2xlYW51cDsKQEAgLTIyNSw2ICsyMjUsNyBAQAogCQl9CiAKIAkJaWYgKGJ1ZmZlcikgeworCiAJCQkvKiBXZSBoYXZlIGEgYnVmZmVyLCBjb3B5IHRoZSBwb3J0aW9uIHJlcXVlc3RlZCAqLwogCiAJCQlBQ1BJX01FTUNQWShidWZmZXIsIG9wZXJhbmRbMF0tPnN0cmluZy5wb2ludGVyICsgaW5kZXgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhvcGFyZzYuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnNi5jCmluZGV4IGUwNDNkOTIuLmYwYzBiYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnNi5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leG9wYXJnNi5jCkBAIC0yMjAsNyArMjIwLDcgQEAKIAlhY3BpX2ludGVnZXIgaW5kZXg7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqdGhpc19lbGVtZW50OwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoImV4X29wY29kZV82QV8wVF8xUiIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoZXhfb3Bjb2RlXzZBXzBUXzFSLAogCQkJCWFjcGlfcHNfZ2V0X29wY29kZV9uYW1lKHdhbGtfc3RhdGUtPm9wY29kZSkpOwogCiAJc3dpdGNoICh3YWxrX3N0YXRlLT5vcGNvZGUpIHsKQEAgLTI3Niw2ICsyNzYsNyBAQAogCQkgKiBtYXRjaCB3YXMgZm91bmQuCiAJCSAqLwogCQlmb3IgKDsgaW5kZXggPCBvcGVyYW5kWzBdLT5wYWNrYWdlLmNvdW50OyBpbmRleCsrKSB7CisKIAkJCS8qIEdldCB0aGUgY3VycmVudCBwYWNrYWdlIGVsZW1lbnQgKi8KIAogCQkJdGhpc19lbGVtZW50ID0gb3BlcmFuZFswXS0+cGFja2FnZS5lbGVtZW50c1tpbmRleF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhwcmVwLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhwcmVwLmMKaW5kZXggNzcxOWFlNS4uNDRkMDY0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4cHJlcC5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHByZXAuYwpAQCAtOTcsNyArOTcsNyBAQAogCXUzMiBtaW5pbXVtX2FjY2Vzc2VzID0gMHhGRkZGRkZGRjsKIAl1MzIgYWNjZXNzZXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9nZW5lcmF0ZV9hY2Nlc3MiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2dlbmVyYXRlX2FjY2Vzcyk7CiAKIAkvKiBSb3VuZCBGaWVsZCBzdGFydCBvZmZzZXQgYW5kIGxlbmd0aCB0byAibWluaW1hbCIgYnl0ZSBib3VuZGFyaWVzICovCiAKQEAgLTE0Niw3ICsxNDYsNyBAQAogCQkJYWNjZXNzZXMgPSBmaWVsZF9lbmRfb2Zmc2V0IC0gZmllbGRfc3RhcnRfb2Zmc2V0OwogCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCQkJICAiYWNjZXNzX3dpZHRoICVkIGVuZCBpcyB3aXRoaW4gcmVnaW9uXG4iLAorCQkJCQkgICJBY2Nlc3NXaWR0aCAlZCBlbmQgaXMgd2l0aGluIHJlZ2lvblxuIiwKIAkJCQkJICBhY2Nlc3NfYnl0ZV93aWR0aCkpOwogCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKQEAgLTE3Myw3ICsxNzMsNyBAQAogCQkJfQogCQl9IGVsc2UgewogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9CRklFTEQsCi0JCQkJCSAgImFjY2Vzc193aWR0aCAlZCBlbmQgaXMgTk9UIHdpdGhpbiByZWdpb25cbiIsCisJCQkJCSAgIkFjY2Vzc1dpZHRoICVkIGVuZCBpcyBOT1Qgd2l0aGluIHJlZ2lvblxuIiwKIAkJCQkJICBhY2Nlc3NfYnl0ZV93aWR0aCkpOwogCQkJaWYgKGFjY2Vzc19ieXRlX3dpZHRoID09IDEpIHsKIAkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKQEAgLTIyOCw3ICsyMjgsNyBAQAogCXUzMiBieXRlX2FsaWdubWVudDsKIAl1MzIgYml0X2xlbmd0aDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2RlY29kZV9maWVsZF9hY2Nlc3MiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X2RlY29kZV9maWVsZF9hY2Nlc3MpOwogCiAJYWNjZXNzID0gKGZpZWxkX2ZsYWdzICYgQU1MX0ZJRUxEX0FDQ0VTU19UWVBFX01BU0spOwogCkBAIC0zMjIsNyArMzIyLDcgQEAKIAl1MzIgYnl0ZV9hbGlnbm1lbnQ7CiAJdTMyIG5lYXJlc3RfYnl0ZV9hZGRyZXNzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfcHJlcF9jb21tb25fZmllbGRfb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9wcmVwX2NvbW1vbl9maWVsZF9vYmplY3QpOwogCiAJLyoKIAkgKiBOb3RlOiB0aGUgc3RydWN0dXJlIGJlaW5nIGluaXRpYWxpemVkIGlzIHRoZQpAQCAtNDE1LDEzICs0MTUsMTMgQEAKIAl1MzIgdHlwZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9wcmVwX2ZpZWxkX3ZhbHVlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9wcmVwX2ZpZWxkX3ZhbHVlKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKIAlpZiAoaW5mby0+ZmllbGRfdHlwZSAhPSBBQ1BJX1RZUEVfTE9DQUxfSU5ERVhfRklFTEQpIHsKIAkJaWYgKCFpbmZvLT5yZWdpb25fbm9kZSkgewotCQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIk51bGwgcmVnaW9uX25vZGUiKSk7CisJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiTnVsbCBSZWdpb25Ob2RlIikpOwogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9OT19PUEVSQU5EKTsKIAkJfQogCkBAIC00NjcsNyArNDY3LDcgQEAKIAkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKG9ial9kZXNjLT5maWVsZC5yZWdpb25fb2JqKTsKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCQkgICJyZWdpb25fZmllbGQ6IGJpdF9vZmYgJVgsIE9mZiAlWCwgR3JhbiAlWCwgUmVnaW9uICVwXG4iLAorCQkJCSAgIlJlZ2lvbkZpZWxkOiBCaXRPZmYgJVgsIE9mZiAlWCwgR3JhbiAlWCwgUmVnaW9uICVwXG4iLAogCQkJCSAgb2JqX2Rlc2MtPmZpZWxkLnN0YXJ0X2ZpZWxkX2JpdF9vZmZzZXQsCiAJCQkJICBvYmpfZGVzYy0+ZmllbGQuYmFzZV9ieXRlX29mZnNldCwKIAkJCQkgIG9ial9kZXNjLT5maWVsZC5hY2Nlc3NfYnl0ZV93aWR0aCwKQEAgLTQ4OCw3ICs0ODgsNyBAQAogCQlhY3BpX3V0X2FkZF9yZWZlcmVuY2Uob2JqX2Rlc2MtPmJhbmtfZmllbGQuYmFua19vYmopOwogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfQkZJRUxELAotCQkJCSAgIkJhbmsgRmllbGQ6IGJpdF9vZmYgJVgsIE9mZiAlWCwgR3JhbiAlWCwgUmVnaW9uICVwLCBiYW5rX3JlZyAlcFxuIiwKKwkJCQkgICJCYW5rIEZpZWxkOiBCaXRPZmYgJVgsIE9mZiAlWCwgR3JhbiAlWCwgUmVnaW9uICVwLCBCYW5rUmVnICVwXG4iLAogCQkJCSAgb2JqX2Rlc2MtPmJhbmtfZmllbGQuc3RhcnRfZmllbGRfYml0X29mZnNldCwKIAkJCQkgIG9ial9kZXNjLT5iYW5rX2ZpZWxkLmJhc2VfYnl0ZV9vZmZzZXQsCiAJCQkJICBvYmpfZGVzYy0+ZmllbGQuYWNjZXNzX2J5dGVfd2lkdGgsCkBAIC01MTksMTYgKzUxOSwyOSBAQAogCQlhY3BpX3V0X2FkZF9yZWZlcmVuY2Uob2JqX2Rlc2MtPmluZGV4X2ZpZWxkLmluZGV4X29iaik7CiAKIAkJLyoKKwkJICogQXByaWwgMjAwNjogQ2hhbmdlZCB0byBtYXRjaCBNUyBiZWhhdmlvcgorCQkgKgogCQkgKiBUaGUgdmFsdWUgd3JpdHRlbiB0byB0aGUgSW5kZXggcmVnaXN0ZXIgaXMgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRoZQotCQkgKiB0YXJnZXQgZmllbGQKLQkJICogTm90ZTogbWF5IGNoYW5nZSBjb2RlIHRvOiBBQ1BJX0RJVl84IChJbmZvLT5maWVsZF9iaXRfcG9zaXRpb24pCisJCSAqIHRhcmdldCBmaWVsZCBpbiB1bml0cyBvZiB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGluZGV4X2ZpZWxkCisJCSAqCisJCSAqIFByZXZpb3VzbHksIHRoZSB2YWx1ZSB3YXMgY2FsY3VsYXRlZCBhcyBhbiBpbmRleCBpbiB0ZXJtcyBvZiB0aGUKKwkJICogd2lkdGggb2YgdGhlIERhdGEgcmVnaXN0ZXIsIGFzIGJlbG93OgorCQkgKgorCQkgKiAgICAgIG9ial9kZXNjLT5pbmRleF9maWVsZC5WYWx1ZSA9ICh1MzIpCisJCSAqICAgICAgICAgIChJbmZvLT5maWVsZF9iaXRfcG9zaXRpb24gLyBBQ1BJX01VTF84ICgKKwkJICogICAgICAgICAgICAgIG9ial9kZXNjLT5GaWVsZC5hY2Nlc3NfYnl0ZV93aWR0aCkpOworCQkgKgorCQkgKiBGZWJydWFyeSAyMDA2OiBUcmllZCB2YWx1ZSBhcyBhIGJ5dGUgb2Zmc2V0OgorCQkgKiAgICAgIG9ial9kZXNjLT5pbmRleF9maWVsZC5WYWx1ZSA9ICh1MzIpCisJCSAqICAgICAgICAgIEFDUElfRElWXzggKEluZm8tPmZpZWxkX2JpdF9wb3NpdGlvbik7CiAJCSAqLwotCQlvYmpfZGVzYy0+aW5kZXhfZmllbGQudmFsdWUgPSAodTMyKQotCQkgICAgKGluZm8tPmZpZWxkX2JpdF9wb3NpdGlvbiAvCi0JCSAgICAgQUNQSV9NVUxfOChvYmpfZGVzYy0+ZmllbGQuYWNjZXNzX2J5dGVfd2lkdGgpKTsKKwkJb2JqX2Rlc2MtPmluZGV4X2ZpZWxkLnZhbHVlID0KKwkJICAgICh1MzIpIEFDUElfUk9VTkRfRE9XTihBQ1BJX0RJVl84KGluZm8tPmZpZWxkX2JpdF9wb3NpdGlvbiksCisJCQkJCSAgb2JqX2Rlc2MtPmluZGV4X2ZpZWxkLgorCQkJCQkgIGFjY2Vzc19ieXRlX3dpZHRoKTsKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCQkgICJpbmRleF9maWVsZDogYml0X29mZiAlWCwgT2ZmICVYLCBWYWx1ZSAlWCwgR3JhbiAlWCwgSW5kZXggJXAsIERhdGEgJXBcbiIsCisJCQkJICAiSW5kZXhGaWVsZDogQml0T2ZmICVYLCBPZmYgJVgsIFZhbHVlICVYLCBHcmFuICVYLCBJbmRleCAlcCwgRGF0YSAlcFxuIiwKIAkJCQkgIG9ial9kZXNjLT5pbmRleF9maWVsZC5zdGFydF9maWVsZF9iaXRfb2Zmc2V0LAogCQkJCSAgb2JqX2Rlc2MtPmluZGV4X2ZpZWxkLmJhc2VfYnl0ZV9vZmZzZXQsCiAJCQkJICBvYmpfZGVzYy0+aW5kZXhfZmllbGQudmFsdWUsCkBAIC01NTAsNyArNTYzLDcgQEAKIAkJCQkgICAgICAgYWNwaV9uc19nZXRfdHlwZShpbmZvLT5maWVsZF9ub2RlKSk7CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0JGSUVMRCwKLQkJCSAgIlNldCBuYW1lZF9vYmogJXAgWyU0LjRzXSwgb2JqX2Rlc2MgJXBcbiIsCisJCQkgICJTZXQgTmFtZWRPYmogJXAgWyU0LjRzXSwgT2JqRGVzYyAlcFxuIiwKIAkJCSAgaW5mby0+ZmllbGRfbm9kZSwKIAkJCSAgYWNwaV91dF9nZXRfbm9kZV9uYW1lKGluZm8tPmZpZWxkX25vZGUpLCBvYmpfZGVzYykpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhyZWdpb24uYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlZ2lvbi5jCmluZGV4IDZhNGNmZGYuLjNjYzk3YmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlZ2lvbi5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlZ2lvbi5jCkBAIC04MSw3ICs4MSw3IEBACiAJdTMyIHJlbWFpbmRlcjsKICNlbmRpZgogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfc3lzdGVtX21lbW9yeV9zcGFjZV9oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9zeXN0ZW1fbWVtb3J5X3NwYWNlX2hhbmRsZXIpOwogCiAJLyogVmFsaWRhdGUgYW5kIHRyYW5zbGF0ZSB0aGUgYml0IHdpZHRoICovCiAKQEAgLTEwMyw3ICsxMDMsNyBAQAogCQlicmVhazsKIAogCWRlZmF1bHQ6Ci0JCUFDUElfRVJST1IoKEFFX0lORk8sICJJbnZhbGlkIHN5c3RlbV9tZW1vcnkgd2lkdGggJWQiLAorCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBTeXN0ZW1NZW1vcnkgd2lkdGggJWQiLAogCQkJICAgIGJpdF93aWR0aCkpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX09QRVJBTkRfVkFMVUUpOwogCX0KQEAgLTEzNSw2ICsxMzUsNyBAQAogCQkgKiBEZWxldGUgdGhlIGV4aXN0aW5nIG1hcHBpbmcgYW5kIGNyZWF0ZSBhIG5ldyBvbmUuCiAJCSAqLwogCQlpZiAobWVtX2luZm8tPm1hcHBlZF9sZW5ndGgpIHsKKwogCQkJLyogVmFsaWQgbWFwcGluZywgZGVsZXRlIGl0ICovCiAKIAkJCWFjcGlfb3NfdW5tYXBfbWVtb3J5KG1lbV9pbmZvLT5tYXBwZWRfbG9naWNhbF9hZGRyZXNzLApAQCAtMTgxLDggKzE4Miw4IEBACiAJICAgICAoYWNwaV9pbnRlZ2VyKSBtZW1faW5mby0+bWFwcGVkX3BoeXNpY2FsX2FkZHJlc3MpOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAotCQkJICAic3lzdGVtX21lbW9yeSAlZCAoJWQgd2lkdGgpIEFkZHJlc3M9JTguOFglOC44WFxuIiwKLQkJCSAgZnVuY3Rpb24sIGJpdF93aWR0aCwgQUNQSV9GT1JNQVRfVUlOVDY0KGFkZHJlc3MpKSk7CisJCQkgICJTeXN0ZW0tTWVtb3J5ICh3aWR0aCAlZCkgUi9XICVkIEFkZHJlc3M9JTguOFglOC44WFxuIiwKKwkJCSAgYml0X3dpZHRoLCBmdW5jdGlvbiwgQUNQSV9GT1JNQVRfVUlOVDY0KGFkZHJlc3MpKSk7CiAKIAkvKgogCSAqIFBlcmZvcm0gdGhlIG1lbW9yeSByZWFkIG9yIHdyaXRlCkBAIC0yODMsMTEgKzI4NCwxMSBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXUzMiB2YWx1ZTMyOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfc3lzdGVtX2lvX3NwYWNlX2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3N5c3RlbV9pb19zcGFjZV9oYW5kbGVyKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywKLQkJCSAgInN5c3RlbV9pTyAlZCAoJWQgd2lkdGgpIEFkZHJlc3M9JTguOFglOC44WFxuIiwKLQkJCSAgZnVuY3Rpb24sIGJpdF93aWR0aCwgQUNQSV9GT1JNQVRfVUlOVDY0KGFkZHJlc3MpKSk7CisJCQkgICJTeXN0ZW0tSU8gKHdpZHRoICVkKSBSL1cgJWQgQWRkcmVzcz0lOC44WCU4LjhYXG4iLAorCQkJICBiaXRfd2lkdGgsIGZ1bmN0aW9uLCBBQ1BJX0ZPUk1BVF9VSU5UNjQoYWRkcmVzcykpKTsKIAogCS8qIERlY29kZSB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyICovCiAKQEAgLTM0Miw3ICszNDMsNyBAQAogCXN0cnVjdCBhY3BpX3BjaV9pZCAqcGNpX2lkOwogCXUxNiBwY2lfcmVnaXN0ZXI7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9wY2lfY29uZmlnX3NwYWNlX2hhbmRsZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3BjaV9jb25maWdfc3BhY2VfaGFuZGxlcik7CiAKIAkvKgogCSAqICBUaGUgYXJndW1lbnRzIHRvIGFjcGlfb3MoUmVhZHxXcml0ZSlwY2lfY29uZmlndXJhdGlvbiBhcmU6CkBAIC0zNjAsNyArMzYxLDcgQEAKIAlwY2lfcmVnaXN0ZXIgPSAodTE2KSAodTMyKSBhZGRyZXNzOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAotCQkJICAicGNpX2NvbmZpZyAlZCAoJWQpIFNlZyglMDR4KSBCdXMoJTA0eCkgRGV2KCUwNHgpIEZ1bmMoJTA0eCkgUmVnKCUwNHgpXG4iLAorCQkJICAiUGNpLUNvbmZpZyAlZCAoJWQpIFNlZyglMDR4KSBCdXMoJTA0eCkgRGV2KCUwNHgpIEZ1bmMoJTA0eCkgUmVnKCUwNHgpXG4iLAogCQkJICBmdW5jdGlvbiwgYml0X3dpZHRoLCBwY2lfaWQtPnNlZ21lbnQsIHBjaV9pZC0+YnVzLAogCQkJICBwY2lfaWQtPmRldmljZSwgcGNpX2lkLT5mdW5jdGlvbiwgcGNpX3JlZ2lzdGVyKSk7CiAKQEAgLTQxNCw3ICs0MTUsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfY21vc19zcGFjZV9oYW5kbGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9jbW9zX3NwYWNlX2hhbmRsZXIpOwogCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CkBAIC00NDYsNyArNDQ3LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X3BjaV9iYXJfc3BhY2VfaGFuZGxlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfcGNpX2Jhcl9zcGFjZV9oYW5kbGVyKTsKIAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQpAQCAtNDc2LDIzICs0NzcsMTYgQEAKIAkJCQkgYWNwaV9pbnRlZ2VyICogdmFsdWUsCiAJCQkJIHZvaWQgKmhhbmRsZXJfY29udGV4dCwgdm9pZCAqcmVnaW9uX2NvbnRleHQpCiB7Ci0JYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7Ci0JdTMyIGJ5dGVfd2lkdGggPSBBQ1BJX0RJVl84KGJpdF93aWR0aCk7Ci0JdTMyIGk7Ci0JY2hhciAqbG9naWNhbF9hZGRyX3B0cjsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X2RhdGFfdGFibGVfc3BhY2VfaGFuZGxlciIpOwotCi0JbG9naWNhbF9hZGRyX3B0ciA9IEFDUElfUEhZU0FERFJfVE9fUFRSKGFkZHJlc3MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZGF0YV90YWJsZV9zcGFjZV9oYW5kbGVyKTsKIAogCS8qIFBlcmZvcm0gdGhlIG1lbW9yeSByZWFkIG9yIHdyaXRlICovCiAKIAlzd2l0Y2ggKGZ1bmN0aW9uKSB7CiAJY2FzZSBBQ1BJX1JFQUQ6CiAKLQkJZm9yIChpID0gMDsgaSA8IGJ5dGVfd2lkdGg7IGkrKykgewotCQkJKChjaGFyICopdmFsdWUpW2ldID0gbG9naWNhbF9hZGRyX3B0cltpXTsKLQkJfQorCQlBQ1BJX01FTUNQWShBQ1BJX0NBU1RfUFRSKGNoYXIsIHZhbHVlKSwKKwkJCSAgICBBQ1BJX1BIWVNBRERSX1RPX1BUUihhZGRyZXNzKSwKKwkJCSAgICBBQ1BJX0RJVl84KGJpdF93aWR0aCkpOwogCQlicmVhazsKIAogCWNhc2UgQUNQSV9XUklURToKQEAgLTUwMSw1ICs0OTUsNSBAQAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfU1VQUE9SVCk7CiAJfQogCi0JcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc250ZS5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4cmVzbnRlLmMKaW5kZXggMDFiMjZjOC4uMzA4OWIwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4cmVzbnRlLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4cmVzbnRlLmMKQEAgLTg3LDcgKzg3LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAlhY3BpX29iamVjdF90eXBlIGVudHJ5X3R5cGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9yZXNvbHZlX25vZGVfdG9fdmFsdWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3Jlc29sdmVfbm9kZV90b192YWx1ZSk7CiAKIAkvKgogCSAqIFRoZSBzdGFjayBwb2ludGVyIHBvaW50cyB0byBhIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlIChOb2RlKS4gIEdldCB0aGUKQEAgLTk3LDEyICs5NywxMyBAQAogCXNvdXJjZV9kZXNjID0gYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG5vZGUpOwogCWVudHJ5X3R5cGUgPSBhY3BpX25zX2dldF90eXBlKChhY3BpX2hhbmRsZSkgbm9kZSk7CiAKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsICJFbnRyeT0lcCBzb3VyY2VfZGVzYz0lcCBbJXNdXG4iLAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywgIkVudHJ5PSVwIFNvdXJjZURlc2M9JXAgWyVzXVxuIiwKIAkJCSAgbm9kZSwgc291cmNlX2Rlc2MsCiAJCQkgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZShlbnRyeV90eXBlKSkpOwogCiAJaWYgKChlbnRyeV90eXBlID09IEFDUElfVFlQRV9MT0NBTF9BTElBUykgfHwKIAkgICAgKGVudHJ5X3R5cGUgPT0gQUNQSV9UWVBFX0xPQ0FMX01FVEhPRF9BTElBUykpIHsKKwogCQkvKiBUaGVyZSBpcyBhbHdheXMgZXhhY3RseSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KIAogCQlub2RlID0gQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSwgbm9kZS0+b2JqZWN0KTsKQEAgLTExMywxMCArMTE0LDExIEBACiAKIAkvKgogCSAqIFNldmVyYWwgb2JqZWN0IHR5cGVzIHJlcXVpcmUgbm8gZnVydGhlciBwcm9jZXNzaW5nOgotCSAqIDEpIERldmljZXMgcmFyZWx5IGhhdmUgYW4gYXR0YWNoZWQgb2JqZWN0LCByZXR1cm4gdGhlIE5vZGUKKwkgKiAxKSBEZXZpY2UvVGhlcm1hbCBvYmplY3RzIGRvbid0IGhhdmUgYSAicmVhbCIgc3Vib2JqZWN0LCByZXR1cm4gdGhlIE5vZGUKIAkgKiAyKSBNZXRob2QgbG9jYWxzIGFuZCBhcmd1bWVudHMgaGF2ZSBhIHBzZXVkby1Ob2RlCiAJICovCi0JaWYgKGVudHJ5X3R5cGUgPT0gQUNQSV9UWVBFX0RFVklDRSB8fAorCWlmICgoZW50cnlfdHlwZSA9PSBBQ1BJX1RZUEVfREVWSUNFKSB8fAorCSAgICAoZW50cnlfdHlwZSA9PSBBQ1BJX1RZUEVfVEhFUk1BTCkgfHwKIAkgICAgKG5vZGUtPmZsYWdzICYgKEFOT0JKX01FVEhPRF9BUkcgfCBBTk9CSl9NRVRIT0RfTE9DQUwpKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogCX0KQEAgLTE0MSw2ICsxNDMsNyBAQAogCiAJCXN0YXR1cyA9IGFjcGlfZHNfZ2V0X3BhY2thZ2VfYXJndW1lbnRzKHNvdXJjZV9kZXNjKTsKIAkJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJCS8qIFJldHVybiBhbiBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0ICovCiAKIAkJCW9ial9kZXNjID0gc291cmNlX2Rlc2M7CkBAIC0xNTgsNiArMTYxLDcgQEAKIAogCQlzdGF0dXMgPSBhY3BpX2RzX2dldF9idWZmZXJfYXJndW1lbnRzKHNvdXJjZV9kZXNjKTsKIAkJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJCS8qIFJldHVybiBhbiBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0ICovCiAKIAkJCW9ial9kZXNjID0gc291cmNlX2Rlc2M7CkBAIC0xOTksNyArMjAzLDcgQEAKIAljYXNlIEFDUElfVFlQRV9MT0NBTF9JTkRFWF9GSUVMRDoKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCi0JCQkJICAiZmllbGRfcmVhZCBOb2RlPSVwIHNvdXJjZV9kZXNjPSVwIFR5cGU9JVhcbiIsCisJCQkJICAiRmllbGRSZWFkIE5vZGU9JXAgU291cmNlRGVzYz0lcCBUeXBlPSVYXG4iLAogCQkJCSAgbm9kZSwgc291cmNlX2Rlc2MsIGVudHJ5X3R5cGUpKTsKIAogCQlzdGF0dXMgPQpAQCAtMjEzLDcgKzIxNyw2IEBACiAJY2FzZSBBQ1BJX1RZUEVfTUVUSE9EOgogCWNhc2UgQUNQSV9UWVBFX1BPV0VSOgogCWNhc2UgQUNQSV9UWVBFX1BST0NFU1NPUjoKLQljYXNlIEFDUElfVFlQRV9USEVSTUFMOgogCWNhc2UgQUNQSV9UWVBFX0VWRU5UOgogCWNhc2UgQUNQSV9UWVBFX1JFR0lPTjoKIApAQCAtMjQwLDYgKzI0Myw4IEBACiAJCQkvKiBUaGlzIGlzIGEgZGRiX2hhbmRsZSAqLwogCQkJLyogUmV0dXJuIGFuIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgKi8KIAorCQljYXNlIEFNTF9SRUZfT0ZfT1A6CisKIAkJCW9ial9kZXNjID0gc291cmNlX2Rlc2M7CiAJCQlhY3BpX3V0X2FkZF9yZWZlcmVuY2Uob2JqX2Rlc2MpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhyZXNvbHYuYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc29sdi5jCmluZGV4IDFkZWVkNDkuLjY0OTlkZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc29sdi5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc29sdi5jCkBAIC03OCw3ICs3OCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImV4X3Jlc29sdmVfdG9fdmFsdWUiLCBzdGFja19wdHIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGV4X3Jlc29sdmVfdG9fdmFsdWUsIHN0YWNrX3B0cik7CiAKIAlpZiAoIXN0YWNrX3B0ciB8fCAhKnN0YWNrX3B0cikgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW50ZXJuYWwgLSBudWxsIHBvaW50ZXIiKSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKIAl1MTYgb3Bjb2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfcmVzb2x2ZV9vYmplY3RfdG9fdmFsdWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3Jlc29sdmVfb2JqZWN0X3RvX3ZhbHVlKTsKIAogCXN0YWNrX2Rlc2MgPSAqc3RhY2tfcHRyOwogCkBAIC0xOTAsNyArMTkwLDcgQEAKIAkJCX0KIAogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCQkgICJbQXJnL0xvY2FsICVYXSB2YWx1ZV9vYmogaXMgJXBcbiIsCisJCQkJCSAgIltBcmcvTG9jYWwgJVhdIFZhbHVlT2JqIGlzICVwXG4iLAogCQkJCQkgIHN0YWNrX2Rlc2MtPnJlZmVyZW5jZS5vZmZzZXQsCiAJCQkJCSAgb2JqX2Rlc2MpKTsKIApAQCAtMjM5LDcgKzIzOSw3IEBACiAJCQkJLyogSW52YWxpZCByZWZlcmVuY2Ugb2JqZWN0ICovCiAKIAkJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCQkgICAgIlVua25vd24gdGFyZ2V0X3R5cGUgJVggaW4gSW5kZXgvUmVmZXJlbmNlIG9iaiAlcCIsCisJCQkJCSAgICAiVW5rbm93biBUYXJnZXRUeXBlICVYIGluIEluZGV4L1JlZmVyZW5jZSBvYmogJXAiLAogCQkJCQkgICAgc3RhY2tfZGVzYy0+cmVmZXJlbmNlLnRhcmdldF90eXBlLAogCQkJCQkgICAgc3RhY2tfZGVzYykpOwogCQkJCXN0YXR1cyA9IEFFX0FNTF9JTlRFUk5BTDsKQEAgLTI1NywxMCArMjU3LDI0IEBACiAKIAkJY2FzZSBBTUxfSU5UX05BTUVQQVRIX09QOgkvKiBSZWZlcmVuY2UgdG8gYSBuYW1lZCBvYmplY3QgKi8KIAotCQkJLyogR2V0IHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSB0aGUgbmFtZXNwYWNlIG5vZGUgKi8KKwkJCS8qIERlcmVmZXJlbmNlIHRoZSBuYW1lICovCiAKLQkJCSpzdGFja19wdHIgPSAoc3RhY2tfZGVzYy0+cmVmZXJlbmNlLm5vZGUpLT5vYmplY3Q7Ci0JCQlhY3BpX3V0X2FkZF9yZWZlcmVuY2UoKnN0YWNrX3B0cik7CisJCQlpZiAoKHN0YWNrX2Rlc2MtPnJlZmVyZW5jZS5ub2RlLT50eXBlID09CisJCQkgICAgIEFDUElfVFlQRV9ERVZJQ0UpCisJCQkgICAgfHwgKHN0YWNrX2Rlc2MtPnJlZmVyZW5jZS5ub2RlLT50eXBlID09CisJCQkJQUNQSV9UWVBFX1RIRVJNQUwpKSB7CisKKwkJCQkvKiBUaGVzZSBub2RlIHR5cGVzIGRvIG5vdCBoYXZlICdyZWFsJyBzdWJvYmplY3RzICovCisKKwkJCQkqc3RhY2tfcHRyID0gKHZvaWQgKilzdGFja19kZXNjLT5yZWZlcmVuY2Uubm9kZTsKKwkJCX0gZWxzZSB7CisJCQkJLyogR2V0IHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSB0aGUgbmFtZXNwYWNlIG5vZGUgKi8KKworCQkJCSpzdGFja19wdHIgPQorCQkJCSAgICAoc3RhY2tfZGVzYy0+cmVmZXJlbmNlLm5vZGUpLT5vYmplY3Q7CisJCQkJYWNwaV91dF9hZGRfcmVmZXJlbmNlKCpzdGFja19wdHIpOworCQkJfQorCiAJCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2Uoc3RhY2tfZGVzYyk7CiAJCQlicmVhazsKIApAQCAtMjkzLDcgKzMwNyw3IEBACiAJY2FzZSBBQ1BJX1RZUEVfTE9DQUxfSU5ERVhfRklFTEQ6CiAKIAkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCSAgImZpZWxkX3JlYWQgc291cmNlX2Rlc2M9JXAgVHlwZT0lWFxuIiwKKwkJCQkgICJGaWVsZFJlYWQgU291cmNlRGVzYz0lcCBUeXBlPSVYXG4iLAogCQkJCSAgc3RhY2tfZGVzYywKIAkJCQkgIEFDUElfR0VUX09CSkVDVF9UWVBFKHN0YWNrX2Rlc2MpKSk7CiAKQEAgLTMzNyw3ICszNTEsNyBAQAogCWFjcGlfb2JqZWN0X3R5cGUgdHlwZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2V4X3Jlc29sdmVfbXVsdGlwbGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZXhfcmVzb2x2ZV9tdWx0aXBsZSk7CiAKIAkvKiBPcGVyYW5kIGNhbiBiZSBlaXRoZXIgYSBuYW1lc3BhY2Ugbm9kZSBvciBhbiBvcGVyYW5kIGRlc2NyaXB0b3IgKi8KIApAQCAtMzgyLDEwICszOTYsMTYgQEAKIAl3aGlsZSAoQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpID09IEFDUElfVFlQRV9MT0NBTF9SRUZFUkVOQ0UpIHsKIAkJc3dpdGNoIChvYmpfZGVzYy0+cmVmZXJlbmNlLm9wY29kZSkgewogCQljYXNlIEFNTF9SRUZfT0ZfT1A6CisJCWNhc2UgQU1MX0lOVF9OQU1FUEFUSF9PUDoKIAogCQkJLyogRGVyZWZlcmVuY2UgdGhlIHJlZmVyZW5jZSBwb2ludGVyICovCiAKLQkJCW5vZGUgPSBvYmpfZGVzYy0+cmVmZXJlbmNlLm9iamVjdDsKKwkJCWlmIChvYmpfZGVzYy0+cmVmZXJlbmNlLm9wY29kZSA9PSBBTUxfUkVGX09GX09QKSB7CisJCQkJbm9kZSA9IG9ial9kZXNjLT5yZWZlcmVuY2Uub2JqZWN0OworCQkJfSBlbHNlIHsJLyogQU1MX0lOVF9OQU1FUEFUSF9PUCAqLworCisJCQkJbm9kZSA9IG9ial9kZXNjLT5yZWZlcmVuY2Uubm9kZTsKKwkJCX0KIAogCQkJLyogQWxsICJSZWZlcmVuY2VzIiBwb2ludCB0byBhIE5TIG5vZGUgKi8KIApAQCAtNDAxLDYgKzQyMSw3IEBACiAKIAkJCW9ial9kZXNjID0gYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG5vZGUpOwogCQkJaWYgKCFvYmpfZGVzYykgeworCiAJCQkJLyogTm8gb2JqZWN0LCB1c2UgdGhlIE5TIG5vZGUgdHlwZSAqLwogCiAJCQkJdHlwZSA9IGFjcGlfbnNfZ2V0X3R5cGUobm9kZSk7CkBAIC00MzIsNiArNDUzLDcgQEAKIAkJCSAqLwogCQkJb2JqX2Rlc2MgPSAqKG9ial9kZXNjLT5yZWZlcmVuY2Uud2hlcmUpOwogCQkJaWYgKCFvYmpfZGVzYykgeworCiAJCQkJLyogTlVMTCBwYWNrYWdlIGVsZW1lbnRzIGFyZSBhbGxvd2VkICovCiAKIAkJCQl0eXBlID0gMDsJLyogVW5pbml0aWFsaXplZCAqLwpAQCAtNDM5LDM5ICs0NjEsNiBAQAogCQkJfQogCQkJYnJlYWs7CiAKLQkJY2FzZSBBTUxfSU5UX05BTUVQQVRIX09QOgotCi0JCQkvKiBEZXJlZmVyZW5jZSB0aGUgcmVmZXJlbmNlIHBvaW50ZXIgKi8KLQotCQkJbm9kZSA9IG9ial9kZXNjLT5yZWZlcmVuY2Uubm9kZTsKLQotCQkJLyogQWxsICJSZWZlcmVuY2VzIiBwb2ludCB0byBhIE5TIG5vZGUgKi8KLQotCQkJaWYgKEFDUElfR0VUX0RFU0NSSVBUT1JfVFlQRShub2RlKSAhPQotCQkJICAgIEFDUElfREVTQ19UWVBFX05BTUVEKSB7Ci0JCQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIk5vdCBhIE5TIG5vZGUgJXAgWyVzXSIsCi0JCQkJCSAgICBub2RlLAotCQkJCQkgICAgYWNwaV91dF9nZXRfZGVzY3JpcHRvcl9uYW1lKG5vZGUpKSk7Ci0JCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9JTlRFUk5BTCk7Ci0JCQl9Ci0KLQkJCS8qIEdldCB0aGUgYXR0YWNoZWQgb2JqZWN0ICovCi0KLQkJCW9ial9kZXNjID0gYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KG5vZGUpOwotCQkJaWYgKCFvYmpfZGVzYykgewotCQkJCS8qIE5vIG9iamVjdCwgdXNlIHRoZSBOUyBub2RlIHR5cGUgKi8KLQotCQkJCXR5cGUgPSBhY3BpX25zX2dldF90eXBlKG5vZGUpOwotCQkJCWdvdG8gZXhpdDsKLQkJCX0KLQotCQkJLyogQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgKi8KLQotCQkJaWYgKG9ial9kZXNjID09IG9wZXJhbmQpIHsKLQkJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX0NJUkNVTEFSX1JFRkVSRU5DRSk7Ci0JCQl9Ci0JCQlicmVhazsKLQogCQljYXNlIEFNTF9MT0NBTF9PUDoKIAkJY2FzZSBBTUxfQVJHX09QOgogCkBAIC01MTMsNyArNTAyLDcgQEAKIAogCQljYXNlIEFNTF9ERUJVR19PUDoKIAotCQkJLyogVGhlIERlYnVnIE9iamVjdCBpcyBvZiB0eXBlICJkZWJ1Z19vYmplY3QiICovCisJCQkvKiBUaGUgRGVidWcgT2JqZWN0IGlzIG9mIHR5cGUgIkRlYnVnT2JqZWN0IiAqLwogCiAJCQl0eXBlID0gQUNQSV9UWVBFX0RFQlVHX09CSkVDVDsKIAkJCWdvdG8gZXhpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc29wLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhyZXNvcC5jCmluZGV4IGExYzAwMGYuLjRjOTNkMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHJlc29wLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4cmVzb3AuYwpAQCAtNzcsNiArNzcsNyBAQAogCUFDUElfRlVOQ1RJT05fRU5UUlkoKTsKIAogCWlmICh0eXBlX25lZWRlZCA9PSBBQ1BJX1RZUEVfQU5ZKSB7CisKIAkJLyogQWxsIHR5cGVzIE9LLCBzbyB3ZSBkb24ndCBwZXJmb3JtIGFueSB0eXBlY2hlY2tzICovCiAKIAkJcmV0dXJuIChBRV9PSyk7CkBAIC0xNDMsNyArMTQ0LDcgQEAKIAlhY3BpX29iamVjdF90eXBlIHR5cGVfbmVlZGVkOwogCXUxNiB0YXJnZXRfb3AgPSAwOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoImV4X3Jlc29sdmVfb3BlcmFuZHMiLCBvcGNvZGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKGV4X3Jlc29sdmVfb3BlcmFuZHMsIG9wY29kZSk7CiAKIAlvcF9pbmZvID0gYWNwaV9wc19nZXRfb3Bjb2RlX2luZm8ob3Bjb2RlKTsKIAlpZiAob3BfaW5mby0+Y2xhc3MgPT0gQU1MX0NMQVNTX1VOS05PV04pIHsKQEAgLTE1OCw3ICsxNTksNyBAQAogCX0KIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKLQkJCSAgIk9wY29kZSAlWCBbJXNdIHJlcXVpcmVkX29wZXJhbmRfdHlwZXM9JTguOFhcbiIsCisJCQkgICJPcGNvZGUgJVggWyVzXSBSZXF1aXJlZE9wZXJhbmRUeXBlcz0lOC44WFxuIiwKIAkJCSAgb3Bjb2RlLCBvcF9pbmZvLT5uYW1lLCBhcmdfdHlwZXMpKTsKIAogCS8qCkBAIC0yMjQsNiArMjI1LDcgQEAKIAkJCX0KIAogCQkJaWYgKG9iamVjdF90eXBlID09ICh1OCkgQUNQSV9UWVBFX0xPQ0FMX1JFRkVSRU5DRSkgeworCiAJCQkJLyogRGVjb2RlIHRoZSBSZWZlcmVuY2UgKi8KIAogCQkJCW9wX2luZm8gPSBhY3BpX3BzX2dldF9vcGNvZGVfaW5mbyhvcGNvZGUpOwpAQCAtMjQ3LDcgKzI0OSw3IEBACiAKIAkJCQkJQUNQSV9ERUJVR19PTkxZX01FTUJFUlMoQUNQSV9ERUJVR19QUklOVAogCQkJCQkJCQkoKEFDUElfREJfRVhFQywKLQkJCQkJCQkJICAiT3BlcmFuZCBpcyBhIFJlZmVyZW5jZSwgcmVmX29wY29kZSBbJXNdXG4iLAorCQkJCQkJCQkgICJPcGVyYW5kIGlzIGEgUmVmZXJlbmNlLCBSZWZPcGNvZGUgWyVzXVxuIiwKIAkJCQkJCQkJICAoYWNwaV9wc19nZXRfb3Bjb2RlX2luZm8KIAkJCQkJCQkJICAgKG9ial9kZXNjLT4KIAkJCQkJCQkJICAgIHJlZmVyZW5jZS4KQEAgLTMzMiw2ICszMzQsNyBAQAogCQkJfQogCiAJCQlpZiAob2JqX2Rlc2MtPnJlZmVyZW5jZS5vcGNvZGUgPT0gQU1MX05BTUVfT1ApIHsKKwogCQkJCS8qIENvbnZlcnQgYSBuYW1lZCByZWZlcmVuY2UgdG8gdGhlIGFjdHVhbCBuYW1lZCBvYmplY3QgKi8KIAogCQkJCXRlbXBfbm9kZSA9IG9ial9kZXNjLT5yZWZlcmVuY2Uub2JqZWN0OwpAQCAtNjIzLDcgKzYyNiw3IEBACiAKIAkJCWRlZmF1bHQ6CiAJCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCQkJICAgICJOZWVkZWQgW1JlZ2lvbi9yZWdpb25fZmllbGRdLCBmb3VuZCBbJXNdICVwIiwKKwkJCQkJICAgICJOZWVkZWQgW1JlZ2lvbi9SZWdpb25GaWVsZF0sIGZvdW5kIFslc10gJXAiLAogCQkJCQkgICAgYWNwaV91dF9nZXRfb2JqZWN0X3R5cGVfbmFtZQogCQkJCQkgICAgKG9ial9kZXNjKSwgb2JqX2Rlc2MpKTsKIApAQCAtNjYyLDYgKzY2NSw3IEBACiAJCQkJfQogCiAJCQkJaWYgKHRhcmdldF9vcCA9PSBBTUxfREVCVUdfT1ApIHsKKwogCQkJCQkvKiBBbGxvdyBzdG9yZSBvZiBhbnkgb2JqZWN0IHRvIHRoZSBEZWJ1ZyBvYmplY3QgKi8KIAogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3JlLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhzdG9yZS5jCmluZGV4IDNmMDIwYzAuLjA0NTY0MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3JlLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4c3RvcmUuYwpAQCAtODIsNyArODIsNyBAQAogewogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoImV4X2RvX2RlYnVnX29iamVjdCIsIHNvdXJjZV9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9kb19kZWJ1Z19vYmplY3QsIHNvdXJjZV9kZXNjKTsKIAogCUFDUElfREVCVUdfUFJJTlRfUkFXKChBQ1BJX0RCX0RFQlVHX09CSkVDVCwgIltBQ1BJIERlYnVnXSAlKnMiLAogCQkJICAgICAgbGV2ZWwsICIgIikpOwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVmX2Rlc2MgPSBkZXN0X2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZXhfc3RvcmUiLCBkZXN0X2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGV4X3N0b3JlLCBkZXN0X2Rlc2MpOwogCiAJLyogVmFsaWRhdGUgcGFyYW1ldGVycyAqLwogCkBAIC0yOTcsNyArMjk3LDcgQEAKIAogCQlBQ1BJX0RVTVBfU1RBQ0tfRU5UUlkoc291cmNlX2Rlc2MpOwogCQlBQ1BJX0RVTVBfU1RBQ0tfRU5UUlkoZGVzdF9kZXNjKTsKLQkJQUNQSV9EVU1QX09QRVJBTkRTKCZkZXN0X2Rlc2MsIEFDUElfSU1PREVfRVhFQ1VURSwgImV4X3N0b3JlIiwKKwkJQUNQSV9EVU1QX09QRVJBTkRTKCZkZXN0X2Rlc2MsIEFDUElfSU1PREVfRVhFQ1VURSwgIkV4U3RvcmUiLAogCQkJCSAgIDIsCiAJCQkJICAgIlRhcmdldCBpcyBub3QgYSBSZWZlcmVuY2Ugb3IgQ29uc3RhbnQgb2JqZWN0Iik7CiAKQEAgLTM5Niw3ICszOTYsNyBAQAogCXU4IHZhbHVlID0gMDsKIAl1MzIgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X3N0b3JlX29iamVjdF90b19pbmRleCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfc3RvcmVfb2JqZWN0X3RvX2luZGV4KTsKIAogCS8qCiAJICogRGVzdGluYXRpb24gbXVzdCBiZSBhIHJlZmVyZW5jZSBwb2ludGVyLCBhbmQKQEAgLTQyMyw2ICs0MjMsNyBAQAogCQl9CiAKIAkJaWYgKG9ial9kZXNjKSB7CisKIAkJCS8qIERlY3JlbWVudCByZWZlcmVuY2UgY291bnQgYnkgdGhlIHJlZiBjb3VudCBvZiB0aGUgcGFyZW50IHBhY2thZ2UgKi8KIAogCQkJZm9yIChpID0gMDsgaSA8ICgodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqKQpAQCAtNTAyLDggKzUwMyw3IEBACiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCSAgICAiVGFyZ2V0IGlzIG5vdCBhIFBhY2thZ2Ugb3IgYnVmZmVyX2ZpZWxkIikpOworCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiVGFyZ2V0IGlzIG5vdCBhIFBhY2thZ2Ugb3IgQnVmZmVyRmllbGQiKSk7CiAJCXN0YXR1cyA9IEFFX0FNTF9PUEVSQU5EX1RZUEU7CiAJCWJyZWFrOwogCX0KQEAgLTU0OCw3ICs1NDgsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm5ld19kZXNjOwogCWFjcGlfb2JqZWN0X3R5cGUgdGFyZ2V0X3R5cGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZXhfc3RvcmVfb2JqZWN0X3RvX25vZGUiLCBzb3VyY2VfZGVzYyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoZXhfc3RvcmVfb2JqZWN0X3RvX25vZGUsIHNvdXJjZV9kZXNjKTsKIAogCS8qIEdldCBjdXJyZW50IHR5cGUgb2YgdGhlIG5vZGUsIGFuZCBvYmplY3QgYXR0YWNoZWQgdG8gTm9kZSAqLwogCkBAIC01NzIsNiArNTcyLDcgQEAKIAkvKiBJZiBubyBpbXBsaWNpdCBjb252ZXJzaW9uLCBkcm9wIGludG8gdGhlIGRlZmF1bHQgY2FzZSBiZWxvdyAqLwogCiAJaWYgKCghaW1wbGljaXRfY29udmVyc2lvbikgfHwgKHdhbGtfc3RhdGUtPm9wY29kZSA9PSBBTUxfQ09QWV9PUCkpIHsKKwogCQkvKiBGb3JjZSBleGVjdXRpb24gb2YgZGVmYXVsdCAobm8gaW1wbGljaXQgY29udmVyc2lvbikgKi8KIAogCQl0YXJnZXRfdHlwZSA9IEFDUElfVFlQRV9BTlk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhzdG9yZW4uYyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3Jlbi5jCmluZGV4IDQyOTY3YmEuLjU5MWFhZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3Jlbi5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3Jlbi5jCkBAIC03Miw3ICs3Miw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqc291cmNlX2Rlc2MgPSAqc291cmNlX2Rlc2NfcHRyOwogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfcmVzb2x2ZV9vYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3Jlc29sdmVfb2JqZWN0KTsKIAogCS8qIEVuc3VyZSB3ZSBoYXZlIGEgVGFyZ2V0IHRoYXQgY2FuIGJlIHN0b3JlZCB0byAqLwogCkBAIC05Nyw2ICs5Nyw3IEBACiAJCSAqLwogCQlpZiAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoc291cmNlX2Rlc2MpID09CiAJCSAgICBBQ1BJX1RZUEVfTE9DQUxfUkVGRVJFTkNFKSB7CisKIAkJCS8qIFJlc29sdmUgYSByZWZlcmVuY2Ugb2JqZWN0IGZpcnN0ICovCiAKIAkJCXN0YXR1cyA9CkBAIC0xMjEsNiArMTIyLDcgQEAKIAkJICAgICEoKEFDUElfR0VUX09CSkVDVF9UWVBFKHNvdXJjZV9kZXNjKSA9PQogCQkgICAgICAgQUNQSV9UWVBFX0xPQ0FMX1JFRkVSRU5DRSkKIAkJICAgICAgJiYgKHNvdXJjZV9kZXNjLT5yZWZlcmVuY2Uub3Bjb2RlID09IEFNTF9MT0FEX09QKSkpIHsKKwogCQkJLyogQ29udmVyc2lvbiBzdWNjZXNzZnVsIGJ1dCBzdGlsbCBub3QgYSB2YWxpZCB0eXBlICovCiAKIAkJCUFDUElfRVJST1IoKEFFX0lORk8sCkBAIC0xOTksNyArMjAxLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICphY3R1YWxfc3JjX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZXhfc3RvcmVfb2JqZWN0X3RvX29iamVjdCIsIHNvdXJjZV9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9zdG9yZV9vYmplY3RfdG9fb2JqZWN0LCBzb3VyY2VfZGVzYyk7CiAKIAlhY3R1YWxfc3JjX2Rlc2MgPSBzb3VyY2VfZGVzYzsKIAlpZiAoIWRlc3RfZGVzYykgewpAQCAtMjg5LDYgKzI5MSw3IEBACiAJfQogCiAJaWYgKGFjdHVhbF9zcmNfZGVzYyAhPSBzb3VyY2VfZGVzYykgeworCiAJCS8qIERlbGV0ZSB0aGUgaW50ZXJtZWRpYXRlICh0ZW1wb3JhcnkpIHNvdXJjZSBvYmplY3QgKi8KIAogCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UoYWN0dWFsX3NyY19kZXNjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHN0b3JvYi5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4c3Rvcm9iLmMKaW5kZXggNmFiNzA3MC4uOTllYmU1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4c3Rvcm9iLmMKKysrIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4c3Rvcm9iLmMKQEAgLTY3LDcgKzY3LDcgQEAKIAl1MzIgbGVuZ3RoOwogCXU4ICpidWZmZXI7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigiZXhfc3RvcmVfYnVmZmVyX3RvX2J1ZmZlciIsIHNvdXJjZV9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9zdG9yZV9idWZmZXJfdG9fYnVmZmVyLCBzb3VyY2VfZGVzYyk7CiAKIAkvKiBXZSBrbm93IHRoYXQgc291cmNlX2Rlc2MgaXMgYSBidWZmZXIgYnkgbm93ICovCiAKQEAgLTgwLDcgKzgwLDcgQEAKIAkgKi8KIAlpZiAoKHRhcmdldF9kZXNjLT5idWZmZXIubGVuZ3RoID09IDApIHx8CiAJICAgICh0YXJnZXRfZGVzYy0+Y29tbW9uLmZsYWdzICYgQU9QT0JKX1NUQVRJQ19QT0lOVEVSKSkgewotCQl0YXJnZXRfZGVzYy0+YnVmZmVyLnBvaW50ZXIgPSBBQ1BJX01FTV9BTExPQ0FURShsZW5ndGgpOworCQl0YXJnZXRfZGVzYy0+YnVmZmVyLnBvaW50ZXIgPSBBQ1BJX0FMTE9DQVRFKGxlbmd0aCk7CiAJCWlmICghdGFyZ2V0X2Rlc2MtPmJ1ZmZlci5wb2ludGVyKSB7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAkJfQpAQCAtOTEsNiArOTEsNyBAQAogCS8qIENvcHkgc291cmNlIGJ1ZmZlciB0byB0YXJnZXQgYnVmZmVyICovCiAKIAlpZiAobGVuZ3RoIDw9IHRhcmdldF9kZXNjLT5idWZmZXIubGVuZ3RoKSB7CisKIAkJLyogQ2xlYXIgZXhpc3RpbmcgYnVmZmVyIGFuZCBjb3B5IGluIHRoZSBuZXcgb25lICovCiAKIAkJQUNQSV9NRU1TRVQodGFyZ2V0X2Rlc2MtPmJ1ZmZlci5wb2ludGVyLCAwLApAQCAtMTAyLDcgKzEwMyw3IEBACiAJCSAqIE5PVEU6IEFDUEkgdmVyc2lvbnMgdXAgdG8gMy4wIHNwZWNpZmllZCB0aGF0IHRoZSBidWZmZXIgbXVzdCBiZQogCQkgKiB0cnVuY2F0ZWQgaWYgdGhlIHN0cmluZyBpcyBzbWFsbGVyIHRoYW4gdGhlIGJ1ZmZlci4gIEhvd2V2ZXIsICJvdGhlciIKIAkJICogaW1wbGVtZW50YXRpb25zIG9mIEFDUEkgbmV2ZXIgZGlkIHRoaXMgYW5kIHRodXMgYmVjYW1lIHRoZSBkZWZhY3RvCi0JCSAqIHN0YW5kYXJkLiBBQ1BpIDMuMF9hIGNoYW5nZXMgdGhpcyBiZWhhdmlvciBzdWNoIHRoYXQgdGhlIGJ1ZmZlcgorCQkgKiBzdGFuZGFyZC4gQUNQSSAzLjBfYSBjaGFuZ2VzIHRoaXMgYmVoYXZpb3Igc3VjaCB0aGF0IHRoZSBidWZmZXIKIAkJICogaXMgbm8gbG9uZ2VyIHRydW5jYXRlZC4KIAkJICovCiAKQEAgLTExMyw2ICsxMTQsNyBAQAogCQkgKiBjb3B5IG11c3Qgbm90IHRydW5jYXRlIHRoZSBvcmlnaW5hbCBidWZmZXIuCiAJCSAqLwogCQlpZiAob3JpZ2luYWxfc3JjX3R5cGUgPT0gQUNQSV9UWVBFX1NUUklORykgeworCiAJCQkvKiBTZXQgdGhlIG5ldyBsZW5ndGggb2YgdGhlIHRhcmdldCAqLwogCiAJCQl0YXJnZXRfZGVzYy0+YnVmZmVyLmxlbmd0aCA9IGxlbmd0aDsKQEAgLTE1Niw3ICsxNTgsNyBAQAogCXUzMiBsZW5ndGg7CiAJdTggKmJ1ZmZlcjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9zdG9yZV9zdHJpbmdfdG9fc3RyaW5nIiwgc291cmNlX2Rlc2MpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKGV4X3N0b3JlX3N0cmluZ190b19zdHJpbmcsIHNvdXJjZV9kZXNjKTsKIAogCS8qIFdlIGtub3cgdGhhdCBzb3VyY2VfZGVzYyBpcyBhIHN0cmluZyBieSBub3cgKi8KIApAQCAtMTgzLDEzICsxODUsMTQgQEAKIAkJICovCiAJCWlmICh0YXJnZXRfZGVzYy0+c3RyaW5nLnBvaW50ZXIgJiYKIAkJICAgICghKHRhcmdldF9kZXNjLT5jb21tb24uZmxhZ3MgJiBBT1BPQkpfU1RBVElDX1BPSU5URVIpKSkgeworCiAJCQkvKiBPbmx5IGZyZWUgaWYgbm90IGEgcG9pbnRlciBpbnRvIHRoZSBEU0RUICovCiAKLQkJCUFDUElfTUVNX0ZSRUUodGFyZ2V0X2Rlc2MtPnN0cmluZy5wb2ludGVyKTsKKwkJCUFDUElfRlJFRSh0YXJnZXRfZGVzYy0+c3RyaW5nLnBvaW50ZXIpOwogCQl9CiAKLQkJdGFyZ2V0X2Rlc2MtPnN0cmluZy5wb2ludGVyID0gQUNQSV9NRU1fQ0FMTE9DQVRFKChhY3BpX3NpemUpCi0JCQkJCQkJCSBsZW5ndGggKyAxKTsKKwkJdGFyZ2V0X2Rlc2MtPnN0cmluZy5wb2ludGVyID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoKGFjcGlfc2l6ZSkKKwkJCQkJCQkJICAgbGVuZ3RoICsgMSk7CiAJCWlmICghdGFyZ2V0X2Rlc2MtPnN0cmluZy5wb2ludGVyKSB7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4c3lzdGVtLmMgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhzeXN0ZW0uYwppbmRleCBlYTkxNDRmLi41MmJlZWUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhzeXN0ZW0uYworKysgYi9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXhzeXN0ZW0uYwpAQCAtNjgsNyArNjgsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlhY3BpX3N0YXR1cyBzdGF0dXMyOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfc3lzdGVtX3dhaXRfc2VtYXBob3JlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9zeXN0ZW1fd2FpdF9zZW1hcGhvcmUpOwogCiAJc3RhdHVzID0gYWNwaV9vc193YWl0X3NlbWFwaG9yZShzZW1hcGhvcmUsIDEsIDApOwogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewpAQCAtNzYsNiArNzYsNyBAQAogCX0KIAogCWlmIChzdGF0dXMgPT0gQUVfVElNRSkgeworCiAJCS8qIFdlIG11c3Qgd2FpdCwgc28gdW5sb2NrIHRoZSBpbnRlcnByZXRlciAqLwogCiAJCWFjcGlfZXhfZXhpdF9pbnRlcnByZXRlcigpOwpAQCAtOTAsNiArOTEsNyBAQAogCiAJCXN0YXR1czIgPSBhY3BpX2V4X2VudGVyX2ludGVycHJldGVyKCk7CiAJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzMikpIHsKKwogCQkJLyogUmVwb3J0IGZhdGFsIGVycm9yLCBjb3VsZCBub3QgYWNxdWlyZSBpbnRlcnByZXRlciAqLwogCiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzMik7CkBAIC0xOTEsNyArMTkzLDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJleF9zeXN0ZW1fYWNxdWlyZV9tdXRleCIsIG9ial9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihleF9zeXN0ZW1fYWNxdWlyZV9tdXRleCwgb2JqX2Rlc2MpOwogCiAJaWYgKCFvYmpfZGVzYykgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CkBAIC0yMjksNyArMjMxLDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X3N5c3RlbV9yZWxlYXNlX211dGV4Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9zeXN0ZW1fcmVsZWFzZV9tdXRleCk7CiAKIAlpZiAoIW9ial9kZXNjKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTI2Myw3ICsyNjUsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfc3lzdGVtX3NpZ25hbF9ldmVudCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfc3lzdGVtX3NpZ25hbF9ldmVudCk7CiAKIAlpZiAob2JqX2Rlc2MpIHsKIAkJc3RhdHVzID0gYWNwaV9vc19zaWduYWxfc2VtYXBob3JlKG9ial9kZXNjLT5ldmVudC5zZW1hcGhvcmUsIDEpOwpAQCAtMjkzLDcgKzI5NSw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9zeXN0ZW1fd2FpdF9ldmVudCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfc3lzdGVtX3dhaXRfZXZlbnQpOwogCiAJaWYgKG9ial9kZXNjKSB7CiAJCXN0YXR1cyA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXh1dGlscy5jIGIvZHJpdmVycy9hY3BpL2V4ZWN1dGVyL2V4dXRpbHMuYwppbmRleCBmNzNhNjFhLi45ODJjOGI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvZXhlY3V0ZXIvZXh1dGlscy5jCisrKyBiL2RyaXZlcnMvYWNwaS9leGVjdXRlci9leHV0aWxzLmMKQEAgLTg3LDkgKzg3LDkgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9lbnRlcl9pbnRlcnByZXRlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZW50ZXJfaW50ZXJwcmV0ZXIpOwogCi0Jc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0VYRUNVVEUpOworCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9JTlRFUlBSRVRFUik7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sICJDb3VsZCBub3QgYWNxdWlyZSBpbnRlcnByZXRlciBtdXRleCIpKTsKIAl9CkBAIC0xMjMsOSArMTIzLDkgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9leGl0X2ludGVycHJldGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9leGl0X2ludGVycHJldGVyKTsKIAotCXN0YXR1cyA9IGFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9FWEVDVVRFKTsKKwlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfSU5URVJQUkVURVIpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiQ291bGQgbm90IHJlbGVhc2UgaW50ZXJwcmV0ZXIgbXV0ZXgiKSk7CiAJfQpAQCAtMTg5LDExICsxODksMTIgQEAKIAl1OCBsb2NrZWQgPSBGQUxTRTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJleF9hY3F1aXJlX2dsb2JhbF9sb2NrIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShleF9hY3F1aXJlX2dsb2JhbF9sb2NrKTsKIAogCS8qIE9ubHkgYXR0ZW1wdCBsb2NrIGlmIHRoZSBhbHdheXNfbG9jayBiaXQgaXMgc2V0ICovCiAKIAlpZiAoZmllbGRfZmxhZ3MgJiBBTUxfRklFTERfTE9DS19SVUxFX01BU0spIHsKKwogCQkvKiBXZSBzaG91bGQgYXR0ZW1wdCB0byBnZXQgdGhlIGxvY2ssIHdhaXQgZm9yZXZlciAqLwogCiAJCXN0YXR1cyA9IGFjcGlfZXZfYWNxdWlyZV9nbG9iYWxfbG9jayhBQ1BJX1dBSVRfRk9SRVZFUik7CkBAIC0yMjUsMTUgKzIyNiwxNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImV4X3JlbGVhc2VfZ2xvYmFsX2xvY2siKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGV4X3JlbGVhc2VfZ2xvYmFsX2xvY2spOwogCiAJLyogT25seSBhdHRlbXB0IHVubG9jayBpZiB0aGUgY2FsbGVyIGxvY2tlZCBpdCAqLwogCiAJaWYgKGxvY2tlZF9ieV9tZSkgeworCiAJCS8qIE9LLCBub3cgcmVsZWFzZSB0aGUgbG9jayAqLwogCiAJCXN0YXR1cyA9IGFjcGlfZXZfcmVsZWFzZV9nbG9iYWxfbG9jaygpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkJLyogUmVwb3J0IHRoZSBlcnJvciwgYnV0IHRoZXJlIGlzbid0IG11Y2ggZWxzZSB3ZSBjYW4gZG8gKi8KIAogCQkJQUNQSV9FWENFUFRJT04oKEFFX0lORk8sIHN0YXR1cywKQEAgLTI2Myw3ICsyNjYsNyBAQAogCXUzMiBudW1fZGlnaXRzOwogCWFjcGlfaW50ZWdlciBjdXJyZW50X3ZhbHVlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiZXhfZGlnaXRzX25lZWRlZCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoZXhfZGlnaXRzX25lZWRlZCk7CiAKIAkvKiBhY3BpX2ludGVnZXIgaXMgdW5zaWduZWQsIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGEgJy0nIHByZWZpeCAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvZmFuLmMgYi9kcml2ZXJzL2FjcGkvZmFuLmMKaW5kZXggZTgxNjVjNC4uMWNkMjU3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2Zhbi5jCisrKyBiL2RyaXZlcnMvYWNwaS9mYW4uYwpAQCAtNDgsNiArNDgsOCBAQAogCiBzdGF0aWMgaW50IGFjcGlfZmFuX2FkZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSk7CiBzdGF0aWMgaW50IGFjcGlfZmFuX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgaW50IHR5cGUpOworc3RhdGljIGludCBhY3BpX2Zhbl9zdXNwZW5kKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCBpbnQgc3RhdGUpOworc3RhdGljIGludCBhY3BpX2Zhbl9yZXN1bWUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsIGludCBzdGF0ZSk7CiAKIHN0YXRpYyBzdHJ1Y3QgYWNwaV9kcml2ZXIgYWNwaV9mYW5fZHJpdmVyID0gewogCS5uYW1lID0gQUNQSV9GQU5fRFJJVkVSX05BTUUsCkBAIC01Niw2ICs1OCw4IEBACiAJLm9wcyA9IHsKIAkJLmFkZCA9IGFjcGlfZmFuX2FkZCwKIAkJLnJlbW92ZSA9IGFjcGlfZmFuX3JlbW92ZSwKKwkJLnN1c3BlbmQgPSBhY3BpX2Zhbl9zdXNwZW5kLAorCQkucmVzdW1lID0gYWNwaV9mYW5fcmVzdW1lLAogCQl9LAogfTsKIApAQCAtMjA2LDYgKzIxMCwxMCBAQAogCQlnb3RvIGVuZDsKIAl9CiAKKwlkZXZpY2UtPmZsYWdzLmZvcmNlX3Bvd2VyX3N0YXRlID0gMTsKKwlhY3BpX2J1c19zZXRfcG93ZXIoZGV2aWNlLT5oYW5kbGUsIHN0YXRlKTsKKwlkZXZpY2UtPmZsYWdzLmZvcmNlX3Bvd2VyX3N0YXRlID0gMDsKKwogCXJlc3VsdCA9IGFjcGlfZmFuX2FkZF9mcyhkZXZpY2UpOwogCWlmIChyZXN1bHQpCiAJCWdvdG8gZW5kOwpAQCAtMjM5LDYgKzI0NywzOCBAQAogCXJldHVybl9WQUxVRSgwKTsKIH0KIAorc3RhdGljIGludCBhY3BpX2Zhbl9zdXNwZW5kKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCBpbnQgc3RhdGUpCit7CisJaWYgKCFkZXZpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJYWNwaV9idXNfc2V0X3Bvd2VyKGRldmljZS0+aGFuZGxlLCBBQ1BJX1NUQVRFX0QwKTsKKworCXJldHVybiBBRV9PSzsKK30KKworc3RhdGljIGludCBhY3BpX2Zhbl9yZXN1bWUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsIGludCBzdGF0ZSkKK3sKKwlpbnQgcmVzdWx0ID0gMDsKKwlpbnQgcG93ZXJfc3RhdGUgPSAwOworCisJaWYgKCFkZXZpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJcmVzdWx0ID0gYWNwaV9idXNfZ2V0X3Bvd2VyKGRldmljZS0+aGFuZGxlLCAmcG93ZXJfc3RhdGUpOworCWlmIChyZXN1bHQpIHsKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FUlJPUiwKKwkJCQkgICJFcnJvciByZWFkaW5nIGZhbiBwb3dlciBzdGF0ZVxuIikpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWRldmljZS0+ZmxhZ3MuZm9yY2VfcG93ZXJfc3RhdGUgPSAxOworCWFjcGlfYnVzX3NldF9wb3dlcihkZXZpY2UtPmhhbmRsZSwgcG93ZXJfc3RhdGUpOworCWRldmljZS0+ZmxhZ3MuZm9yY2VfcG93ZXJfc3RhdGUgPSAwOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIGludCBfX2luaXQgYWNwaV9mYW5faW5pdCh2b2lkKQogewogCWludCByZXN1bHQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3YWNwaS5jIGIvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3YWNwaS5jCmluZGV4IGVhMmYxMzI3MS4uZGU1MGZhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3YWNwaS5jCisrKyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od2FjcGkuYwpAQCAtNjMsNyArNjMsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImh3X2luaXRpYWxpemUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGh3X2luaXRpYWxpemUpOwogCiAJLyogV2UgbXVzdCBoYXZlIHRoZSBBQ1BJIHRhYmxlcyBieSB0aGUgdGltZSB3ZSBnZXQgaGVyZSAqLwogCkBAIC0xMDAsNyArMTAwLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTMyIHJldHJ5OwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiaHdfc2V0X21vZGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGh3X3NldF9tb2RlKTsKIAogCS8qCiAJICogQUNQSSAyLjAgY2xhcmlmaWVkIHRoYXQgaWYgU01JX0NNRCBpbiBGQURUIGlzIHplcm8sCkBAIC0xOTgsNyArMTk4LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTMyIHZhbHVlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiaHdfZ2V0X21vZGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGh3X2dldF9tb2RlKTsKIAogCS8qCiAJICogQUNQSSAyLjAgY2xhcmlmaWVkIHRoYXQgaWYgU01JX0NNRCBpbiBGQURUIGlzIHplcm8sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHdncGUuYyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od2dwZS5jCmluZGV4IGQ4NDk0MmQuLjYwOGEzYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od2dwZS5jCisrKyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od2dwZS5jCkBAIC0yMTQsNiArMjE0LDcgQEAKIAkvKiBFeGFtaW5lIGVhY2ggR1BFIFJlZ2lzdGVyIHdpdGhpbiB0aGUgYmxvY2sgKi8KIAogCWZvciAoaSA9IDA7IGkgPCBncGVfYmxvY2stPnJlZ2lzdGVyX2NvdW50OyBpKyspIHsKKwogCQkvKiBEaXNhYmxlIGFsbCBHUEVzIGluIHRoaXMgcmVnaXN0ZXIgKi8KIAogCQlzdGF0dXMgPSBhY3BpX2h3X2xvd19sZXZlbF93cml0ZSg4LCAweDAwLApAQCAtMjUwLDYgKzI1MSw3IEBACiAJLyogRXhhbWluZSBlYWNoIEdQRSBSZWdpc3RlciB3aXRoaW4gdGhlIGJsb2NrICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgZ3BlX2Jsb2NrLT5yZWdpc3Rlcl9jb3VudDsgaSsrKSB7CisKIAkJLyogQ2xlYXIgc3RhdHVzIG9uIGFsbCBHUEVzIGluIHRoaXMgcmVnaXN0ZXIgKi8KIAogCQlzdGF0dXMgPSBhY3BpX2h3X2xvd19sZXZlbF93cml0ZSg4LCAweEZGLApAQCAtMzY4LDcgKzM3MCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiaHdfZGlzYWJsZV9hbGxfZ3BlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoaHdfZGlzYWJsZV9hbGxfZ3Blcyk7CiAKIAlzdGF0dXMgPSBhY3BpX2V2X3dhbGtfZ3BlX2xpc3QoYWNwaV9od19kaXNhYmxlX2dwZV9ibG9jayk7CiAJc3RhdHVzID0gYWNwaV9ldl93YWxrX2dwZV9saXN0KGFjcGlfaHdfY2xlYXJfZ3BlX2Jsb2NrKTsKQEAgLTM5MSw3ICszOTMsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImh3X2VuYWJsZV9hbGxfcnVudGltZV9ncGVzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShod19lbmFibGVfYWxsX3J1bnRpbWVfZ3Blcyk7CiAKIAlzdGF0dXMgPSBhY3BpX2V2X3dhbGtfZ3BlX2xpc3QoYWNwaV9od19lbmFibGVfcnVudGltZV9ncGVfYmxvY2spOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwpAQCAtNDEzLDcgKzQxNSw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiaHdfZW5hYmxlX2FsbF93YWtldXBfZ3BlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoaHdfZW5hYmxlX2FsbF93YWtldXBfZ3Blcyk7CiAKIAlzdGF0dXMgPSBhY3BpX2V2X3dhbGtfZ3BlX2xpc3QoYWNwaV9od19lbmFibGVfd2FrZXVwX2dwZV9ibG9jayk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHdyZWdzLmMgYi9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHdyZWdzLmMKaW5kZXggZTFmZTc1NC4uYWUxNDJkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3cmVncy5jCisrKyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od3JlZ3MuYwpAQCAtNDMsOCArNDMsNiBAQAogICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQogI2luY2x1ZGUgPGFjcGkvYWNwaS5oPgogI2luY2x1ZGUgPGFjcGkvYWNuYW1lc3AuaD4KICNpbmNsdWRlIDxhY3BpL2FjZXZlbnRzLmg+CkBAIC02MywyMyArNjEsMjEgQEAKICAqIERFU0NSSVBUSU9OOiBDbGVhcnMgYWxsIGZpeGVkIGFuZCBnZW5lcmFsIHB1cnBvc2Ugc3RhdHVzIGJpdHMKICAqICAgICAgICAgICAgICBUSElTIEZVTkNUSU9OIE1VU1QgQkUgQ0FMTEVEIFdJVEggSU5URVJSVVBUUyBESVNBQkxFRAogICoKKyAqIE5PVEU6IFRCRDogRmxhZ3MgcGFyYW1ldGVyIGlzIG9ic29sZXRlLCB0byBiZSByZW1vdmVkCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGFjcGlfc3RhdHVzIGFjcGlfaHdfY2xlYXJfYWNwaV9zdGF0dXModTMyIGZsYWdzKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlhY3BpX2NwdV9mbGFncyBsb2NrX2ZsYWdzID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImh3X2NsZWFyX2FjcGlfc3RhdHVzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShod19jbGVhcl9hY3BpX3N0YXR1cyk7CiAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lPLCAiQWJvdXQgdG8gd3JpdGUgJTA0WCB0byAlMDRYXG4iLAogCQkJICBBQ1BJX0JJVE1BU0tfQUxMX0ZJWEVEX1NUQVRVUywKIAkJCSAgKHUxNikgYWNwaV9nYmxfRkFEVC0+eHBtMWFfZXZ0X2Jsay5hZGRyZXNzKSk7CiAKLQlpZiAoZmxhZ3MgJiBBQ1BJX01UWF9MT0NLKSB7Ci0JCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9IQVJEV0FSRSk7Ci0JCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JCX0KLQl9CisJbG9ja19mbGFncyA9IGFjcGlfb3NfYWNxdWlyZV9sb2NrKGFjcGlfZ2JsX2hhcmR3YXJlX2xvY2spOwogCiAJc3RhdHVzID0gYWNwaV9od19yZWdpc3Rlcl93cml0ZShBQ1BJX01UWF9ET19OT1RfTE9DSywKIAkJCQkJQUNQSV9SRUdJU1RFUl9QTTFfU1RBVFVTLApAQCAtMTA0LDkgKzEwMCw3IEBACiAJc3RhdHVzID0gYWNwaV9ldl93YWxrX2dwZV9saXN0KGFjcGlfaHdfY2xlYXJfZ3BlX2Jsb2NrKTsKIAogICAgICAgdW5sb2NrX2FuZF9leGl0OgotCWlmIChmbGFncyAmIEFDUElfTVRYX0xPQ0spIHsKLQkJKHZvaWQpYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX0hBUkRXQVJFKTsKLQl9CisJYWNwaV9vc19yZWxlYXNlX2xvY2soYWNwaV9nYmxfaGFyZHdhcmVfbG9jaywgbG9ja19mbGFncyk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKQEAgLTEyOSwxMCArMTIzLDkgQEAKIGFjcGlfZ2V0X3NsZWVwX3R5cGVfZGF0YSh1OCBzbGVlcF9zdGF0ZSwgdTggKiBzbGVlcF90eXBlX2EsIHU4ICogc2xlZXBfdHlwZV9iKQogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwotCXN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvIGluZm87Ci0JY2hhciAqc2xlZXBfc3RhdGVfbmFtZTsKKwlzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfc2xlZXBfdHlwZV9kYXRhIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2dldF9zbGVlcF90eXBlX2RhdGEpOwogCiAJLyogVmFsaWRhdGUgcGFyYW1ldGVycyAqLwogCkBAIC0xNDAsMzQgKzEzMywzOSBAQAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CiAJfQogCi0JLyogRXZhbHVhdGUgdGhlIG5hbWVzcGFjZSBvYmplY3QgY29udGFpbmluZyB0aGUgdmFsdWVzIGZvciB0aGlzIHN0YXRlICovCisJLyogQWxsb2NhdGUgdGhlIGV2YWx1YXRpb24gaW5mb3JtYXRpb24gYmxvY2sgKi8KIAotCWluZm8ucGFyYW1ldGVycyA9IE5VTEw7Ci0JaW5mby5yZXR1cm5fb2JqZWN0ID0gTlVMTDsKLQlzbGVlcF9zdGF0ZV9uYW1lID0KKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8pKTsKKwlpZiAoIWluZm8pIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CisJfQorCisJaW5mby0+cGF0aG5hbWUgPQogCSAgICBBQ1BJX0NBU1RfUFRSKGNoYXIsIGFjcGlfZ2JsX3NsZWVwX3N0YXRlX25hbWVzW3NsZWVwX3N0YXRlXSk7CiAKLQlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlX2J5X25hbWUoc2xlZXBfc3RhdGVfbmFtZSwgJmluZm8pOworCS8qIEV2YWx1YXRlIHRoZSBuYW1lc3BhY2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyBmb3IgdGhpcyBzdGF0ZSAqLworCisJc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZShpbmZvKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLAotCQkJCSAgIiVzIHdoaWxlIGV2YWx1YXRpbmcgc2xlZXBfc3RhdGUgWyVzXVxuIiwKKwkJCQkgICIlcyB3aGlsZSBldmFsdWF0aW5nIFNsZWVwU3RhdGUgWyVzXVxuIiwKIAkJCQkgIGFjcGlfZm9ybWF0X2V4Y2VwdGlvbihzdGF0dXMpLAotCQkJCSAgc2xlZXBfc3RhdGVfbmFtZSkpOworCQkJCSAgaW5mby0+cGF0aG5hbWUpKTsKIAotCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwkJZ290byBjbGVhbnVwOwogCX0KIAogCS8qIE11c3QgaGF2ZSBhIHJldHVybiBvYmplY3QgKi8KIAotCWlmICghaW5mby5yZXR1cm5fb2JqZWN0KSB7CisJaWYgKCFpbmZvLT5yZXR1cm5fb2JqZWN0KSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sICJObyBTbGVlcCBTdGF0ZSBvYmplY3QgcmV0dXJuZWQgZnJvbSBbJXNdIiwKLQkJCSAgICBzbGVlcF9zdGF0ZV9uYW1lKSk7CisJCQkgICAgaW5mby0+cGF0aG5hbWUpKTsKIAkJc3RhdHVzID0gQUVfTk9UX0VYSVNUOwogCX0KIAogCS8qIEl0IG11c3QgYmUgb2YgdHlwZSBQYWNrYWdlICovCiAKLQllbHNlIGlmIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShpbmZvLnJldHVybl9vYmplY3QpICE9IEFDUElfVFlQRV9QQUNLQUdFKSB7CisJZWxzZSBpZiAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW5mby0+cmV0dXJuX29iamVjdCkgIT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCSAgICAiU2xlZXAgU3RhdGUgcmV0dXJuIG9iamVjdCBpcyBub3QgYSBQYWNrYWdlIikpOwogCQlzdGF0dXMgPSBBRV9BTUxfT1BFUkFORF9UWVBFOwpAQCAtMTgwLDcgKzE3OCw3IEBACiAJICogYnkgQklPUyB2ZW5kb3JzIHNlZW1zIHRvIGJlIHRvIGhhdmUgMiBvciBtb3JlIGVsZW1lbnRzLCBhdCBsZWFzdAogCSAqIG9uZSBwZXIgc2xlZXAgdHlwZSAoQS9CKS4KIAkgKi8KLQllbHNlIGlmIChpbmZvLnJldHVybl9vYmplY3QtPnBhY2thZ2UuY291bnQgPCAyKSB7CisJZWxzZSBpZiAoaW5mby0+cmV0dXJuX29iamVjdC0+cGFja2FnZS5jb3VudCA8IDIpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCSAgICAiU2xlZXAgU3RhdGUgcmV0dXJuIHBhY2thZ2UgZG9lcyBub3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMiKSk7CiAJCXN0YXR1cyA9IEFFX0FNTF9OT19PUEVSQU5EOwpAQCAtMTg4LDM5ICsxODYsNDIgQEAKIAogCS8qIFRoZSBmaXJzdCB0d28gZWxlbWVudHMgbXVzdCBib3RoIGJlIG9mIHR5cGUgSW50ZWdlciAqLwogCi0JZWxzZSBpZiAoKEFDUElfR0VUX09CSkVDVF9UWVBFKGluZm8ucmV0dXJuX29iamVjdC0+cGFja2FnZS5lbGVtZW50c1swXSkKKwllbHNlIGlmICgoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW5mby0+cmV0dXJuX29iamVjdC0+cGFja2FnZS5lbGVtZW50c1swXSkKIAkJICAhPSBBQ1BJX1RZUEVfSU5URUdFUikgfHwKLQkJIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShpbmZvLnJldHVybl9vYmplY3QtPnBhY2thZ2UuZWxlbWVudHNbMV0pCisJCSAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW5mby0+cmV0dXJuX29iamVjdC0+cGFja2FnZS5lbGVtZW50c1sxXSkKIAkJICAhPSBBQ1BJX1RZUEVfSU5URUdFUikpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCSAgICAiU2xlZXAgU3RhdGUgcmV0dXJuIHBhY2thZ2UgZWxlbWVudHMgYXJlIG5vdCBib3RoIEludGVnZXJzICglcywgJXMpIiwKLQkJCSAgICBhY3BpX3V0X2dldF9vYmplY3RfdHlwZV9uYW1lKGluZm8ucmV0dXJuX29iamVjdC0+CisJCQkgICAgYWNwaV91dF9nZXRfb2JqZWN0X3R5cGVfbmFtZShpbmZvLT5yZXR1cm5fb2JqZWN0LT4KIAkJCQkJCQkgcGFja2FnZS5lbGVtZW50c1swXSksCi0JCQkgICAgYWNwaV91dF9nZXRfb2JqZWN0X3R5cGVfbmFtZShpbmZvLnJldHVybl9vYmplY3QtPgorCQkJICAgIGFjcGlfdXRfZ2V0X29iamVjdF90eXBlX25hbWUoaW5mby0+cmV0dXJuX29iamVjdC0+CiAJCQkJCQkJIHBhY2thZ2UuZWxlbWVudHNbMV0pKSk7CiAJCXN0YXR1cyA9IEFFX0FNTF9PUEVSQU5EX1RZUEU7CiAJfSBlbHNlIHsKIAkJLyogVmFsaWQgX1N4XyBwYWNrYWdlIHNpemUsIHR5cGUsIGFuZCB2YWx1ZSAqLwogCiAJCSpzbGVlcF90eXBlX2EgPSAodTgpCi0JCSAgICAoaW5mby5yZXR1cm5fb2JqZWN0LT5wYWNrYWdlLmVsZW1lbnRzWzBdKS0+aW50ZWdlci52YWx1ZTsKKwkJICAgIChpbmZvLT5yZXR1cm5fb2JqZWN0LT5wYWNrYWdlLmVsZW1lbnRzWzBdKS0+aW50ZWdlci52YWx1ZTsKIAkJKnNsZWVwX3R5cGVfYiA9ICh1OCkKLQkJICAgIChpbmZvLnJldHVybl9vYmplY3QtPnBhY2thZ2UuZWxlbWVudHNbMV0pLT5pbnRlZ2VyLnZhbHVlOworCQkgICAgKGluZm8tPnJldHVybl9vYmplY3QtPnBhY2thZ2UuZWxlbWVudHNbMV0pLT5pbnRlZ2VyLnZhbHVlOwogCX0KIAogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJX0VYQ0VQVElPTigoQUVfSU5GTywgc3RhdHVzLAotCQkJCSJXaGlsZSBldmFsdWF0aW5nIHNsZWVwX3N0YXRlIFslc10sIGJhZCBTbGVlcCBvYmplY3QgJXAgdHlwZSAlcyIsCi0JCQkJc2xlZXBfc3RhdGVfbmFtZSwgaW5mby5yZXR1cm5fb2JqZWN0LAotCQkJCWFjcGlfdXRfZ2V0X29iamVjdF90eXBlX25hbWUoaW5mby4KKwkJCQkiV2hpbGUgZXZhbHVhdGluZyBTbGVlcFN0YXRlIFslc10sIGJhZCBTbGVlcCBvYmplY3QgJXAgdHlwZSAlcyIsCisJCQkJaW5mby0+cGF0aG5hbWUsIGluZm8tPnJldHVybl9vYmplY3QsCisJCQkJYWNwaV91dF9nZXRfb2JqZWN0X3R5cGVfbmFtZShpbmZvLT4KIAkJCQkJCQkgICAgIHJldHVybl9vYmplY3QpKSk7CiAJfQogCi0JYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGluZm8ucmV0dXJuX29iamVjdCk7CisJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGluZm8tPnJldHVybl9vYmplY3QpOworCisgICAgICBjbGVhbnVwOgorCUFDUElfRlJFRShpbmZvKTsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2dldF9zbGVlcF90eXBlX2RhdGEpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3NsZWVwX3R5cGVfZGF0YSkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMzMsMTMgKzIzNCwxMiBAQAogICogREVTQ1JJUFRJT046IE1hcCByZWdpc3Rlcl9pZCBpbnRvIGEgcmVnaXN0ZXIgYml0bWFzay4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBzdHJ1Y3QgYWNwaV9iaXRfcmVnaXN0ZXJfaW5mbyAqYWNwaV9od19nZXRfYml0X3JlZ2lzdGVyX2luZm8odTMyIHJlZ2lzdGVyX2lkKQogewogCUFDUElfRlVOQ1RJT05fRU5UUlkoKTsKIAogCWlmIChyZWdpc3Rlcl9pZCA+IEFDUElfQklUUkVHX01BWCkgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBiaXRfcmVnaXN0ZXIgSUQ6ICVYIiwKKwkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkludmFsaWQgQml0UmVnaXN0ZXIgSUQ6ICVYIiwKIAkJCSAgICByZWdpc3Rlcl9pZCkpOwogCQlyZXR1cm4gKE5VTEwpOwogCX0KQEAgLTI2MCw2ICsyNjAsOCBAQAogICoKICAqIERFU0NSSVBUSU9OOiBBQ1BJIGJpdF9yZWdpc3RlciByZWFkIGZ1bmN0aW9uLgogICoKKyAqIE5PVEU6IFRCRDogRmxhZ3MgcGFyYW1ldGVyIGlzIG9ic29sZXRlLCB0byBiZSByZW1vdmVkCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogYWNwaV9zdGF0dXMgYWNwaV9nZXRfcmVnaXN0ZXIodTMyIHJlZ2lzdGVyX2lkLCB1MzIgKiByZXR1cm5fdmFsdWUsIHUzMiBmbGFncykKQEAgLTI2OCw3ICsyNzAsNyBAQAogCXN0cnVjdCBhY3BpX2JpdF9yZWdpc3Rlcl9pbmZvICpiaXRfcmVnX2luZm87CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfcmVnaXN0ZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZ2V0X3JlZ2lzdGVyKTsKIAogCS8qIEdldCB0aGUgaW5mbyBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZyB0byB0aGUgcmVxdWVzdGVkIEFDUEkgUmVnaXN0ZXIgKi8KIApAQCAtMjc3LDI0ICsyNzksMTQgQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAotCWlmIChmbGFncyAmIEFDUElfTVRYX0xPQ0spIHsKLQkJc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0hBUkRXQVJFKTsKLQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLQkJfQotCX0KLQogCS8qIFJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIgKi8KIAotCXN0YXR1cyA9IGFjcGlfaHdfcmVnaXN0ZXJfcmVhZChBQ1BJX01UWF9ET19OT1RfTE9DSywKKwlzdGF0dXMgPSBhY3BpX2h3X3JlZ2lzdGVyX3JlYWQoQUNQSV9NVFhfTE9DSywKIAkJCQkgICAgICAgYml0X3JlZ19pbmZvLT5wYXJlbnRfcmVnaXN0ZXIsCiAJCQkJICAgICAgICZyZWdpc3Rlcl92YWx1ZSk7CiAKLQlpZiAoZmxhZ3MgJiBBQ1BJX01UWF9MT0NLKSB7Ci0JCSh2b2lkKWFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9IQVJEV0FSRSk7Ci0JfQotCiAJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJLyogTm9ybWFsaXplIHRoZSB2YWx1ZSB0aGF0IHdhcyByZWFkICovCiAKIAkJcmVnaXN0ZXJfdmFsdWUgPQpAQCAtMzExLDcgKzMwMyw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9nZXRfcmVnaXN0ZXIpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3JlZ2lzdGVyKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTMyNiwzMSArMzE4LDI4IEBACiAgKgogICogREVTQ1JJUFRJT046IEFDUEkgQml0IFJlZ2lzdGVyIHdyaXRlIGZ1bmN0aW9uLgogICoKKyAqIE5PVEU6IFRCRDogRmxhZ3MgcGFyYW1ldGVyIGlzIG9ic29sZXRlLCB0byBiZSByZW1vdmVkCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9zZXRfcmVnaXN0ZXIodTMyIHJlZ2lzdGVyX2lkLCB1MzIgdmFsdWUsIHUzMiBmbGFncykKIHsKIAl1MzIgcmVnaXN0ZXJfdmFsdWUgPSAwOwogCXN0cnVjdCBhY3BpX2JpdF9yZWdpc3Rlcl9pbmZvICpiaXRfcmVnX2luZm87CiAJYWNwaV9zdGF0dXMgc3RhdHVzOworCWFjcGlfY3B1X2ZsYWdzIGxvY2tfZmxhZ3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMigiYWNwaV9zZXRfcmVnaXN0ZXIiLCByZWdpc3Rlcl9pZCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoYWNwaV9zZXRfcmVnaXN0ZXIsIHJlZ2lzdGVyX2lkKTsKIAogCS8qIEdldCB0aGUgaW5mbyBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZyB0byB0aGUgcmVxdWVzdGVkIEFDUEkgUmVnaXN0ZXIgKi8KIAogCWJpdF9yZWdfaW5mbyA9IGFjcGlfaHdfZ2V0X2JpdF9yZWdpc3Rlcl9pbmZvKHJlZ2lzdGVyX2lkKTsKIAlpZiAoIWJpdF9yZWdfaW5mbykgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiQmFkIEFDUEkgSFcgcmVnaXN0ZXJfaWQ6ICVYIiwKKwkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkJhZCBBQ1BJIEhXIFJlZ2lzdGVySWQ6ICVYIiwKIAkJCSAgICByZWdpc3Rlcl9pZCkpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CiAJfQogCi0JaWYgKGZsYWdzICYgQUNQSV9NVFhfTE9DSykgewotCQlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfSEFSRFdBUkUpOwotCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotCQl9Ci0JfQorCWxvY2tfZmxhZ3MgPSBhY3BpX29zX2FjcXVpcmVfbG9jayhhY3BpX2dibF9oYXJkd2FyZV9sb2NrKTsKIAogCS8qIEFsd2F5cyBkbyBhIHJlZ2lzdGVyIHJlYWQgZmlyc3Qgc28gd2UgY2FuIGluc2VydCB0aGUgbmV3IGJpdHMgICovCiAKQEAgLTQ1OCw5ICs0NDcsNyBAQAogCiAgICAgICB1bmxvY2tfYW5kX2V4aXQ6CiAKLQlpZiAoZmxhZ3MgJiBBQ1BJX01UWF9MT0NLKSB7Ci0JCSh2b2lkKWFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9IQVJEV0FSRSk7Ci0JfQorCWFjcGlfb3NfcmVsZWFzZV9sb2NrKGFjcGlfZ2JsX2hhcmR3YXJlX2xvY2ssIGxvY2tfZmxhZ3MpOwogCiAJLyogTm9ybWFsaXplIHRoZSB2YWx1ZSB0aGF0IHdhcyByZWFkICovCiAKQEAgLTQ3NCw3ICs0NjEsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfc2V0X3JlZ2lzdGVyKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3NldF9yZWdpc3RlcikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTQ5MCwyMSArNDc3LDE4IEBACiAgKiAgICAgICAgICAgICAgZ2l2ZW4gb2Zmc2V0LgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2h3X3JlZ2lzdGVyX3JlYWQodTggdXNlX2xvY2ssIHUzMiByZWdpc3Rlcl9pZCwgdTMyICogcmV0dXJuX3ZhbHVlKQogewogCXUzMiB2YWx1ZTEgPSAwOwogCXUzMiB2YWx1ZTIgPSAwOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlhY3BpX2NwdV9mbGFncyBsb2NrX2ZsYWdzID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImh3X3JlZ2lzdGVyX3JlYWQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGh3X3JlZ2lzdGVyX3JlYWQpOwogCiAJaWYgKEFDUElfTVRYX0xPQ0sgPT0gdXNlX2xvY2spIHsKLQkJc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0hBUkRXQVJFKTsKLQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLQkJfQorCQlsb2NrX2ZsYWdzID0gYWNwaV9vc19hY3F1aXJlX2xvY2soYWNwaV9nYmxfaGFyZHdhcmVfbG9jayk7CiAJfQogCiAJc3dpdGNoIChyZWdpc3Rlcl9pZCkgewpAQCAtNTgyLDcgKzU2Niw3IEBACiAKICAgICAgIHVubG9ja19hbmRfZXhpdDoKIAlpZiAoQUNQSV9NVFhfTE9DSyA9PSB1c2VfbG9jaykgewotCQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfSEFSRFdBUkUpOworCQlhY3BpX29zX3JlbGVhc2VfbG9jayhhY3BpX2dibF9oYXJkd2FyZV9sb2NrLCBsb2NrX2ZsYWdzKTsKIAl9CiAKIAlpZiAoQUNQSV9TVUNDRVNTKHN0YXR1cykpIHsKQEAgLTYxMCwxNCArNTk0LDEyIEBACiBhY3BpX3N0YXR1cyBhY3BpX2h3X3JlZ2lzdGVyX3dyaXRlKHU4IHVzZV9sb2NrLCB1MzIgcmVnaXN0ZXJfaWQsIHUzMiB2YWx1ZSkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CisJYWNwaV9jcHVfZmxhZ3MgbG9ja19mbGFncyA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJod19yZWdpc3Rlcl93cml0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoaHdfcmVnaXN0ZXJfd3JpdGUpOwogCiAJaWYgKEFDUElfTVRYX0xPQ0sgPT0gdXNlX2xvY2spIHsKLQkJc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX0hBUkRXQVJFKTsKLQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLQkJfQorCQlsb2NrX2ZsYWdzID0gYWNwaV9vc19hY3F1aXJlX2xvY2soYWNwaV9nYmxfaGFyZHdhcmVfbG9jayk7CiAJfQogCiAJc3dpdGNoIChyZWdpc3Rlcl9pZCkgewpAQCAtNzA3LDcgKzY4OSw3IEBACiAKICAgICAgIHVubG9ja19hbmRfZXhpdDoKIAlpZiAoQUNQSV9NVFhfTE9DSyA9PSB1c2VfbG9jaykgewotCQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfSEFSRFdBUkUpOworCQlhY3BpX29zX3JlbGVhc2VfbG9jayhhY3BpX2dibF9oYXJkd2FyZV9sb2NrLCBsb2NrX2ZsYWdzKTsKIAl9CiAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTczMyw3ICs3MTUsNyBAQAogCXU2NCBhZGRyZXNzOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fTkFNRSgiaHdfbG93X2xldmVsX3JlYWQiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUoaHdfbG93X2xldmVsX3JlYWQpOwogCiAJLyoKIAkgKiBNdXN0IGhhdmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgR0FTIHN0cnVjdHVyZSwgYW5kCkBAIC04MDUsNyArNzg3LDcgQEAKIAl1NjQgYWRkcmVzczsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoImh3X2xvd19sZXZlbF93cml0ZSIpOworCUFDUElfRlVOQ1RJT05fTkFNRShod19sb3dfbGV2ZWxfd3JpdGUpOwogCiAJLyoKIAkgKiBNdXN0IGhhdmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgR0FTIHN0cnVjdHVyZSwgYW5kCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHdzbGVlcC5jIGIvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3c2xlZXAuYwppbmRleCA4OTI2OTI3Li44YmI0M2NhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHdzbGVlcC5jCisrKyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od3NsZWVwLmMKQEAgLTQyLDcgKzQyLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAKICNkZWZpbmUgX0NPTVBPTkVOVCAgICAgICAgICBBQ1BJX0hBUkRXQVJFCkBAIC02NCw3ICs2Myw3IEBACiBhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBwaHlzaWNhbF9hZGRyZXNzKQogewogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3Rvcik7CiAKIAkvKiBTZXQgdGhlIHZlY3RvciAqLwogCkBAIC03OSw2ICs3OCw4IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IKQEAgLTkyLDEzICs5MywxMiBAQAogICogREVTQ1JJUFRJT046IEFjY2VzcyBmdW5jdGlvbiBmb3IgdGhlIGZpcm13YXJlX3dha2luZ192ZWN0b3IgZmllbGQgaW4gRkFDUwogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KICNpZmRlZiBBQ1BJX0ZVVFVSRV9VU0FHRQogYWNwaV9zdGF0dXMKIGFjcGlfZ2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IoYWNwaV9waHlzaWNhbF9hZGRyZXNzICogcGh5c2ljYWxfYWRkcmVzcykKIHsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZ2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZ2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IpOwogCiAJaWYgKCFwaHlzaWNhbF9hZGRyZXNzKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTExOCw2ICsxMTgsOCBAQAogCiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KKworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IpCiAjZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEzNCwxNCArMTM2LDEzIEBACiAgKiAgICAgICAgICAgICAgdmFyaW91cyBPUy1zcGVjaWZpYyB0YXNrcyBiZXR3ZWVuIHRoZSB0d28gc3RlcHMuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZV9wcmVwKHU4IHNsZWVwX3N0YXRlKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9vYmplY3RfbGlzdCBhcmdfbGlzdDsKIAl1bmlvbiBhY3BpX29iamVjdCBhcmc7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2VudGVyX3NsZWVwX3N0YXRlX3ByZXAiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZW50ZXJfc2xlZXBfc3RhdGVfcHJlcCk7CiAKIAkvKgogCSAqIF9QU1cgbWV0aG9kcyBjb3VsZCBiZSBydW4gaGVyZSB0byBlbmFibGUgd2FrZS1vbiBrZXlib2FyZCwgTEFOLCBldGMuCkBAIC0yMDYsNiArMjA3LDggQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZV9wcmVwKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX2VudGVyX3NsZWVwX3N0YXRlCkBAIC0yMTgsNyArMjIxLDYgQEAKICAqICAgICAgICAgICAgICBUSElTIEZVTkNUSU9OIE1VU1QgQkUgQ0FMTEVEIFdJVEggSU5URVJSVVBUUyBESVNBQkxFRAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFzbWxpbmthZ2UgYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZSh1OCBzbGVlcF9zdGF0ZSkKIHsKIAl1MzIgUE0xQWNvbnRyb2w7CkBAIC0yMjgsNyArMjMwLDcgQEAKIAl1MzIgaW5fdmFsdWU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZSk7CiAKIAlpZiAoKGFjcGlfZ2JsX3NsZWVwX3R5cGVfYSA+IEFDUElfU0xFRVBfVFlQRV9NQVgpIHx8CiAJICAgIChhY3BpX2dibF9zbGVlcF90eXBlX2IgPiBBQ1BJX1NMRUVQX1RZUEVfTUFYKSkgewpAQCAtMzc4LDcgKzM4MCw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2VudGVyX3NsZWVwX3N0YXRlKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2VudGVyX3NsZWVwX3N0YXRlKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTM5MiwxMyArMzk0LDEyIEBACiAgKiAgICAgICAgICAgICAgVEhJUyBGVU5DVElPTiBNVVNUIEJFIENBTExFRCBXSVRIIElOVEVSUlVQVFMgRElTQUJMRUQKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhc21saW5rYWdlIGFjcGlfZW50ZXJfc2xlZXBfc3RhdGVfczRiaW9zKHZvaWQpCiB7CiAJdTMyIGluX3ZhbHVlOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZW50ZXJfc2xlZXBfc3RhdGVfczRiaW9zIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2VudGVyX3NsZWVwX3N0YXRlX3M0Ymlvcyk7CiAKIAlzdGF0dXMgPQogCSAgICBhY3BpX3NldF9yZWdpc3RlcihBQ1BJX0JJVFJFR19XQUtFX1NUQVRVUywgMSwgQUNQSV9NVFhfRE9fTk9UX0xPQ0spOwpAQCAtNDQzLDcgKzQ0NCw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2VudGVyX3NsZWVwX3N0YXRlX3M0Ymlvcyk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9lbnRlcl9zbGVlcF9zdGF0ZV9zNGJpb3MpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDU3LDcgKzQ1OCw2IEBACiAgKiAgICAgICAgICAgICAgQ2FsbGVkIHdpdGggaW50ZXJydXB0cyBFTkFCTEVELgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFjcGlfbGVhdmVfc2xlZXBfc3RhdGUodTggc2xlZXBfc3RhdGUpCiB7CiAJc3RydWN0IGFjcGlfb2JqZWN0X2xpc3QgYXJnX2xpc3Q7CkBAIC00NjgsNyArNDY4LDcgQEAKIAl1MzIgUE0xQWNvbnRyb2w7CiAJdTMyIFBNMUJjb250cm9sOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9sZWF2ZV9zbGVlcF9zdGF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9sZWF2ZV9zbGVlcF9zdGF0ZSk7CiAKIAkvKgogCSAqIFNldCBTTFBfVFlQRSBhbmQgU0xQX0VOIHRvIHN0YXRlIFMwLgpAQCAtNDkwLDYgKzQ5MCw3IEBACiAJCQkJCSAgICAgICBBQ1BJX1JFR0lTVEVSX1BNMV9DT05UUk9MLAogCQkJCQkgICAgICAgJlBNMUFjb250cm9sKTsKIAkJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJCS8qIENsZWFyIFNMUF9FTiBhbmQgU0xQX1RZUCBmaWVsZHMgKi8KIAogCQkJUE0xQWNvbnRyb2wgJj0gfihzbGVlcF90eXBlX3JlZ19pbmZvLT5hY2Nlc3NfYml0X21hc2sgfApAQCAtNTgzLDMgKzU4NCw1IEBACiAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KKworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfbGVhdmVfc2xlZXBfc3RhdGUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHd0aW1lci5jIGIvZHJpdmVycy9hY3BpL2hhcmR3YXJlL2h3dGltZXIuYwppbmRleCBmYzEwYjdjLi5jNGVjNDdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvaGFyZHdhcmUvaHd0aW1lci5jCisrKyBiL2RyaXZlcnMvYWNwaS9oYXJkd2FyZS9od3RpbWVyLmMKQEAgLTQyLDcgKzQyLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAKICNkZWZpbmUgX0NPTVBPTkVOVCAgICAgICAgICBBQ1BJX0hBUkRXQVJFCkBAIC02MSwxMyArNjAsMTMgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBhY3BpX3N0YXR1cyBhY3BpX2dldF90aW1lcl9yZXNvbHV0aW9uKHUzMiAqIHJlc29sdXRpb24pCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfdGltZXJfcmVzb2x1dGlvbiIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfdGltZXJfcmVzb2x1dGlvbik7CiAKIAlpZiAoIXJlc29sdXRpb24pIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAotCWlmICgwID09IGFjcGlfZ2JsX0ZBRFQtPnRtcl92YWxfZXh0KSB7CisJaWYgKGFjcGlfZ2JsX0ZBRFQtPnRtcl92YWxfZXh0ID09IDApIHsKIAkJKnJlc29sdXRpb24gPSAyNDsKIAl9IGVsc2UgewogCQkqcmVzb2x1dGlvbiA9IDMyOwpAQCAtNzYsNiArNzUsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CiAKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90aW1lcl9yZXNvbHV0aW9uKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X3RpbWVyCkBAIC04NywxMiArODgsMTEgQEAKICAqIERFU0NSSVBUSU9OOiBPYnRhaW5zIGN1cnJlbnQgdmFsdWUgb2YgQUNQSSBQTSBUaW1lciAoaW4gdGlja3MpLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFjcGlfZ2V0X3RpbWVyKHUzMiAqIHRpY2tzKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZ2V0X3RpbWVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2dldF90aW1lcik7CiAKIAlpZiAoIXRpY2tzKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTEwMyw3ICsxMDMsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3RpbWVyKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90aW1lcikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTEzMyw3ICsxMzMsNiBAQAogICogICAgICAgICAgICAgIDIqKjMyIFRpY2tzIC8gMyw2MDAsMDAwIFRpY2tzL1NlYyA9IDExOTMgc2VjIG9yIDE5Ljg4IG1pbnV0ZXMKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9nZXRfdGltZXJfZHVyYXRpb24odTMyIHN0YXJ0X3RpY2tzLCB1MzIgZW5kX3RpY2tzLCB1MzIgKiB0aW1lX2VsYXBzZWQpCiB7CkBAIC0xNDEsNyArMTQwLDcgQEAKIAl1MzIgZGVsdGFfdGlja3M7CiAJYWNwaV9pbnRlZ2VyIHF1b3RpZW50OwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfdGltZXJfZHVyYXRpb24iKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZ2V0X3RpbWVyX2R1cmF0aW9uKTsKIAogCWlmICghdGltZV9lbGFwc2VkKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTE1NCw3ICsxNTMsOCBAQAogCWlmIChzdGFydF90aWNrcyA8IGVuZF90aWNrcykgewogCQlkZWx0YV90aWNrcyA9IGVuZF90aWNrcyAtIHN0YXJ0X3RpY2tzOwogCX0gZWxzZSBpZiAoc3RhcnRfdGlja3MgPiBlbmRfdGlja3MpIHsKLQkJaWYgKDAgPT0gYWNwaV9nYmxfRkFEVC0+dG1yX3ZhbF9leHQpIHsKKwkJaWYgKGFjcGlfZ2JsX0ZBRFQtPnRtcl92YWxfZXh0ID09IDApIHsKKwogCQkJLyogMjQtYml0IFRpbWVyICovCiAKIAkJCWRlbHRhX3RpY2tzID0KQEAgLTE4Myw0ICsxODMsNCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3RpbWVyX2R1cmF0aW9uKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90aW1lcl9kdXJhdGlvbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9ob3RrZXkuYyBiL2RyaXZlcnMvYWNwaS9ob3RrZXkuYwppbmRleCAyZTJlNDA1MS4uYzI1YjJiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2hvdGtleS5jCisrKyBiL2RyaXZlcnMvYWNwaS9ob3RrZXkuYwpAQCAtNzIzLDYgKzcyMyw4IEBACiAJCWdvdG8gZG9fZmFpbDsKIAljb3VudCA9IHRtcDEgLSB0bXA7CiAJKmFjdGlvbl9oYW5kbGUgPSAoY2hhciAqKWttYWxsb2MoY291bnQgKyAxLCBHRlBfS0VSTkVMKTsKKwlpZiAoISphY3Rpb25faGFuZGxlKQorCQlnb3RvIGRvX2ZhaWw7CiAJc3RybmNweSgqYWN0aW9uX2hhbmRsZSwgdG1wLCBjb3VudCk7CiAJKigqYWN0aW9uX2hhbmRsZSArIGNvdW50KSA9IDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9pYm1fYWNwaS5jIGIvZHJpdmVycy9hY3BpL2libV9hY3BpLmMKaW5kZXggMjYyYjFmNC4uMTVmYzEyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2libV9hY3BpLmMKKysrIGIvZHJpdmVycy9hY3BpL2libV9hY3BpLmMKQEAgLTU2Nyw2ICs1NjcsNjkgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB3YW5fc3VwcG9ydGVkOworCitzdGF0aWMgaW50IHdhbl9pbml0KHZvaWQpCit7CisJd2FuX3N1cHBvcnRlZCA9IGhrZXlfaGFuZGxlICYmCisJICAgIGFjcGlfZXZhbGYoaGtleV9oYW5kbGUsIE5VTEwsICJHV0FOIiwgInF2Iik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3YW5fc3RhdHVzKHZvaWQpCit7CisJaW50IHN0YXR1czsKKworCWlmICghd2FuX3N1cHBvcnRlZCB8fAorCSAgICAhYWNwaV9ldmFsZihoa2V5X2hhbmRsZSwgJnN0YXR1cywgIkdXQU4iLCAiZCIpKQorCQlzdGF0dXMgPSAwOworCisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGludCB3YW5fcmVhZChjaGFyICpwKQoreworCWludCBsZW4gPSAwOworCWludCBzdGF0dXMgPSB3YW5fc3RhdHVzKCk7CisKKwlpZiAoIXdhbl9zdXBwb3J0ZWQpCisJCWxlbiArPSBzcHJpbnRmKHAgKyBsZW4sICJzdGF0dXM6XHRcdG5vdCBzdXBwb3J0ZWRcbiIpOworCWVsc2UgaWYgKCEoc3RhdHVzICYgMSkpCisJCWxlbiArPSBzcHJpbnRmKHAgKyBsZW4sICJzdGF0dXM6XHRcdG5vdCBpbnN0YWxsZWRcbiIpOworCWVsc2UgeworCQlsZW4gKz0gc3ByaW50ZihwICsgbGVuLCAic3RhdHVzOlx0XHQlc1xuIiwgZW5hYmxlZChzdGF0dXMsIDEpKTsKKwkJbGVuICs9IHNwcmludGYocCArIGxlbiwgImNvbW1hbmRzOlx0ZW5hYmxlLCBkaXNhYmxlXG4iKTsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgaW50IHdhbl93cml0ZShjaGFyICpidWYpCit7CisJaW50IHN0YXR1cyA9IHdhbl9zdGF0dXMoKTsKKwljaGFyICpjbWQ7CisJaW50IGRvX2NtZCA9IDA7CisKKwlpZiAoIXdhbl9zdXBwb3J0ZWQpCisJCXJldHVybiAtRU5PREVWOworCisJd2hpbGUgKChjbWQgPSBuZXh0X2NtZCgmYnVmKSkpIHsKKwkJaWYgKHN0cmxlbmNtcChjbWQsICJlbmFibGUiKSA9PSAwKSB7CisJCQlzdGF0dXMgfD0gMjsKKwkJfSBlbHNlIGlmIChzdHJsZW5jbXAoY21kLCAiZGlzYWJsZSIpID09IDApIHsKKwkJCXN0YXR1cyAmPSB+MjsKKwkJfSBlbHNlCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJZG9fY21kID0gMTsKKwl9CisKKwlpZiAoZG9fY21kICYmICFhY3BpX2V2YWxmKGhrZXlfaGFuZGxlLCBOVUxMLCAiU1dBTiIsICJ2ZCIsIHN0YXR1cykpCisJCXJldHVybiAtRUlPOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgdmlkZW9fc3VwcG9ydGVkOwogc3RhdGljIGludCB2aWRlb19vcmlnX2F1dG9zdzsKIApAQCAtMTU2Myw2ICsxNjI2LDEzIEBACiAJIC53cml0ZSA9IGJsdWV0b290aF93cml0ZSwKIAkgfSwKIAl7CisJIC5uYW1lID0gIndhbiIsCisJIC5pbml0ID0gd2FuX2luaXQsCisJIC5yZWFkID0gd2FuX3JlYWQsCisJIC53cml0ZSA9IHdhbl93cml0ZSwKKwkgLmV4cGVyaW1lbnRhbCA9IDEsCisJIH0sCisJewogCSAubmFtZSA9ICJ2aWRlbyIsCiAJIC5pbml0ID0gdmlkZW9faW5pdCwKIAkgLnJlYWQgPSB2aWRlb19yZWFkLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL21vdGhlcmJvYXJkLmMgYi9kcml2ZXJzL2FjcGkvbW90aGVyYm9hcmQuYwppbmRleCA0NjgyNDQxLi5kNTFkNjhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbW90aGVyYm9hcmQuYworKysgYi9kcml2ZXJzL2FjcGkvbW90aGVyYm9hcmQuYwpAQCAtMzcsNyArMzcsNyBAQAogI2RlZmluZSBBQ1BJX01CX0hJRDIJCQkiUE5QMEMwMiIKIC8qKgogICogRG9lc24ndCBjYXJlIGFib3V0IGxlZ2FjeSBJTyBwb3J0cywgb25seSBJTyBwb3J0cyBiZXlvbmQgMHgxMDAwIGFyZSByZXNlcnZlZAotICogRG9lc24ndCBjYXJlIGFib3V0IHRoZSBmYWlsdXJlIG9mICdyZXF1ZXN0X3JlZ2lvbicsIHNpbmNlIG90aGVyIG1heSByZXNlcnZlIAorICogRG9lc24ndCBjYXJlIGFib3V0IHRoZSBmYWlsdXJlIG9mICdyZXF1ZXN0X3JlZ2lvbicsIHNpbmNlIG90aGVyIG1heSByZXNlcnZlCiAgKiB0aGUgaW8gcG9ydHMgYXMgd2VsbAogICovCiAjZGVmaW5lIElTX1JFU0VSVkVEX0FERFIoYmFzZSwgbGVuKSBcCkBAIC00Niw3ICs0Niw3IEBACiAvKgogICogQ2xlYXJpbmcgdGhlIGZsYWcgKElPUkVTT1VSQ0VfQlVTWSkgYWxsb3dzIGRyaXZlcnMgdG8gdXNlCiAgKiB0aGUgaW8gcG9ydHMgaWYgdGhleSByZWFsbHkga25vdyB0aGV5IGNhbiB1c2UgaXQsIHdoaWxlCi0gKiBzdGlsbCBwcmV2ZW50aW5nIGhvdHBsdWcgUENJIGRldmljZXMgZnJvbSB1c2luZyBpdC4gCisgKiBzdGlsbCBwcmV2ZW50aW5nIGhvdHBsdWcgUENJIGRldmljZXMgZnJvbSB1c2luZyBpdC4KICAqLwogc3RhdGljIGFjcGlfc3RhdHVzIGFjcGlfcmVzZXJ2ZV9pb19yYW5nZXMoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlcywgdm9pZCAqZGF0YSkKIHsKQEAgLTEyMyw0OSArMTIzLDU0IEBACiAJCX0sCiB9OwogCitzdGF0aWMgdm9pZCBfX2luaXQgYWNwaV9yZXF1ZXN0X3JlZ2lvbiAoc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzICphZGRyLAorCXVuc2lnbmVkIGludCBsZW5ndGgsIGNoYXIgKmRlc2MpCit7CisJaWYgKCFhZGRyLT5hZGRyZXNzIHx8ICFsZW5ndGgpCisJCXJldHVybjsKKworCWlmIChhZGRyLT5hZGRyZXNzX3NwYWNlX2lkID09IEFDUElfQURSX1NQQUNFX1NZU1RFTV9JTykKKwkJcmVxdWVzdF9yZWdpb24oYWRkci0+YWRkcmVzcywgbGVuZ3RoLCBkZXNjKTsKKwllbHNlIGlmIChhZGRyLT5hZGRyZXNzX3NwYWNlX2lkID09IEFDUElfQURSX1NQQUNFX1NZU1RFTV9NRU1PUlkpCisJCXJlcXVlc3RfbWVtX3JlZ2lvbihhZGRyLT5hZGRyZXNzLCBsZW5ndGgsIGRlc2MpOworfQorCiBzdGF0aWMgdm9pZCBfX2luaXQgYWNwaV9yZXNlcnZlX3Jlc291cmNlcyh2b2lkKQogewotCWlmIChhY3BpX2dibF9GQURULT54cG0xYV9ldnRfYmxrLmFkZHJlc3MgJiYgYWNwaV9nYmxfRkFEVC0+cG0xX2V2dF9sZW4pCi0JCXJlcXVlc3RfcmVnaW9uKGFjcGlfZ2JsX0ZBRFQtPnhwbTFhX2V2dF9ibGsuYWRkcmVzcywKLQkJCSAgICAgICBhY3BpX2dibF9GQURULT5wbTFfZXZ0X2xlbiwgIlBNMWFfRVZUX0JMSyIpOworCWFjcGlfcmVxdWVzdF9yZWdpb24oJmFjcGlfZ2JsX0ZBRFQtPnhwbTFhX2V2dF9ibGssCisJCQkgICAgICAgYWNwaV9nYmxfRkFEVC0+cG0xX2V2dF9sZW4sICJBQ1BJIFBNMWFfRVZUX0JMSyIpOwogCi0JaWYgKGFjcGlfZ2JsX0ZBRFQtPnhwbTFiX2V2dF9ibGsuYWRkcmVzcyAmJiBhY3BpX2dibF9GQURULT5wbTFfZXZ0X2xlbikKLQkJcmVxdWVzdF9yZWdpb24oYWNwaV9nYmxfRkFEVC0+eHBtMWJfZXZ0X2Jsay5hZGRyZXNzLAotCQkJICAgICAgIGFjcGlfZ2JsX0ZBRFQtPnBtMV9ldnRfbGVuLCAiUE0xYl9FVlRfQkxLIik7CisJYWNwaV9yZXF1ZXN0X3JlZ2lvbigmYWNwaV9nYmxfRkFEVC0+eHBtMWJfZXZ0X2JsaywKKwkJCSAgICAgICBhY3BpX2dibF9GQURULT5wbTFfZXZ0X2xlbiwgIkFDUEkgUE0xYl9FVlRfQkxLIik7CiAKLQlpZiAoYWNwaV9nYmxfRkFEVC0+eHBtMWFfY250X2Jsay5hZGRyZXNzICYmIGFjcGlfZ2JsX0ZBRFQtPnBtMV9jbnRfbGVuKQotCQlyZXF1ZXN0X3JlZ2lvbihhY3BpX2dibF9GQURULT54cG0xYV9jbnRfYmxrLmFkZHJlc3MsCi0JCQkgICAgICAgYWNwaV9nYmxfRkFEVC0+cG0xX2NudF9sZW4sICJQTTFhX0NOVF9CTEsiKTsKKwlhY3BpX3JlcXVlc3RfcmVnaW9uKCZhY3BpX2dibF9GQURULT54cG0xYV9jbnRfYmxrLAorCQkJICAgICAgIGFjcGlfZ2JsX0ZBRFQtPnBtMV9jbnRfbGVuLCAiQUNQSSBQTTFhX0NOVF9CTEsiKTsKIAotCWlmIChhY3BpX2dibF9GQURULT54cG0xYl9jbnRfYmxrLmFkZHJlc3MgJiYgYWNwaV9nYmxfRkFEVC0+cG0xX2NudF9sZW4pCi0JCXJlcXVlc3RfcmVnaW9uKGFjcGlfZ2JsX0ZBRFQtPnhwbTFiX2NudF9ibGsuYWRkcmVzcywKLQkJCSAgICAgICBhY3BpX2dibF9GQURULT5wbTFfY250X2xlbiwgIlBNMWJfQ05UX0JMSyIpOworCWFjcGlfcmVxdWVzdF9yZWdpb24oJmFjcGlfZ2JsX0ZBRFQtPnhwbTFiX2NudF9ibGssCisJCQkgICAgICAgYWNwaV9nYmxfRkFEVC0+cG0xX2NudF9sZW4sICJBQ1BJIFBNMWJfQ05UX0JMSyIpOwogCi0JaWYgKGFjcGlfZ2JsX0ZBRFQtPnhwbV90bXJfYmxrLmFkZHJlc3MgJiYgYWNwaV9nYmxfRkFEVC0+cG1fdG1fbGVuID09IDQpCi0JCXJlcXVlc3RfcmVnaW9uKGFjcGlfZ2JsX0ZBRFQtPnhwbV90bXJfYmxrLmFkZHJlc3MsIDQsICJQTV9UTVIiKTsKKwlpZiAoYWNwaV9nYmxfRkFEVC0+cG1fdG1fbGVuID09IDQpCisJCWFjcGlfcmVxdWVzdF9yZWdpb24oJmFjcGlfZ2JsX0ZBRFQtPnhwbV90bXJfYmxrLCA0LCAiQUNQSSBQTV9UTVIiKTsKIAotCWlmIChhY3BpX2dibF9GQURULT54cG0yX2NudF9ibGsuYWRkcmVzcyAmJiBhY3BpX2dibF9GQURULT5wbTJfY250X2xlbikKLQkJcmVxdWVzdF9yZWdpb24oYWNwaV9nYmxfRkFEVC0+eHBtMl9jbnRfYmxrLmFkZHJlc3MsCi0JCQkgICAgICAgYWNwaV9nYmxfRkFEVC0+cG0yX2NudF9sZW4sICJQTTJfQ05UX0JMSyIpOworCWFjcGlfcmVxdWVzdF9yZWdpb24oJmFjcGlfZ2JsX0ZBRFQtPnhwbTJfY250X2JsaywKKwkJCSAgICAgICBhY3BpX2dibF9GQURULT5wbTJfY250X2xlbiwgIkFDUEkgUE0yX0NOVF9CTEsiKTsKIAogCS8qIExlbmd0aCBvZiBHUEUgYmxvY2tzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbXVsdGlwbGUgb2YgMiAqLwogCi0JaWYgKGFjcGlfZ2JsX0ZBRFQtPnhncGUwX2Jsay5hZGRyZXNzICYmIGFjcGlfZ2JsX0ZBRFQtPmdwZTBfYmxrX2xlbiAmJgotCSAgICAhKGFjcGlfZ2JsX0ZBRFQtPmdwZTBfYmxrX2xlbiAmIDB4MSkpCi0JCXJlcXVlc3RfcmVnaW9uKGFjcGlfZ2JsX0ZBRFQtPnhncGUwX2Jsay5hZGRyZXNzLAotCQkJICAgICAgIGFjcGlfZ2JsX0ZBRFQtPmdwZTBfYmxrX2xlbiwgIkdQRTBfQkxLIik7CisJaWYgKCEoYWNwaV9nYmxfRkFEVC0+Z3BlMF9ibGtfbGVuICYgMHgxKSkKKwkJYWNwaV9yZXF1ZXN0X3JlZ2lvbigmYWNwaV9nYmxfRkFEVC0+eGdwZTBfYmxrLAorCQkJICAgICAgIGFjcGlfZ2JsX0ZBRFQtPmdwZTBfYmxrX2xlbiwgIkFDUEkgR1BFMF9CTEsiKTsKIAotCWlmIChhY3BpX2dibF9GQURULT54Z3BlMV9ibGsuYWRkcmVzcyAmJiBhY3BpX2dibF9GQURULT5ncGUxX2Jsa19sZW4gJiYKLQkgICAgIShhY3BpX2dibF9GQURULT5ncGUxX2Jsa19sZW4gJiAweDEpKQotCQlyZXF1ZXN0X3JlZ2lvbihhY3BpX2dibF9GQURULT54Z3BlMV9ibGsuYWRkcmVzcywKLQkJCSAgICAgICBhY3BpX2dibF9GQURULT5ncGUxX2Jsa19sZW4sICJHUEUxX0JMSyIpOworCWlmICghKGFjcGlfZ2JsX0ZBRFQtPmdwZTFfYmxrX2xlbiAmIDB4MSkpCisJCWFjcGlfcmVxdWVzdF9yZWdpb24oJmFjcGlfZ2JsX0ZBRFQtPnhncGUxX2JsaywKKwkJCSAgICAgICBhY3BpX2dibF9GQURULT5ncGUxX2Jsa19sZW4sICJBQ1BJIEdQRTFfQkxLIik7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IGFjcGlfbW90aGVyYm9hcmRfaW5pdCh2b2lkKQogewogCWFjcGlfYnVzX3JlZ2lzdGVyX2RyaXZlcigmYWNwaV9tb3RoZXJib2FyZF9kcml2ZXIxKTsKIAlhY3BpX2J1c19yZWdpc3Rlcl9kcml2ZXIoJmFjcGlfbW90aGVyYm9hcmRfZHJpdmVyMik7Ci0JLyogCisJLyoKIAkgKiBHdWFyYW50ZWUgbW90aGVyYm9hcmQgSU8gcmVzZXJ2YXRpb24gZmlyc3QKIAkgKiBUaGlzIG1vZHVsZSBtdXN0IHJ1biBhZnRlciBzY2FuLmMKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNhY2Nlc3MuYyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNhY2Nlc3MuYwppbmRleCAxMTQ5YmMxLi40OGZhZGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zYWNjZXNzLmMKKysrIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2FjY2Vzcy5jCkBAIC03MCw3ICs3MCw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJYWNwaV9zdHJpbmcgdmFsID0gTlVMTDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX3Jvb3RfaW5pdGlhbGl6ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfcm9vdF9pbml0aWFsaXplKTsKIAogCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9OQU1FU1BBQ0UpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewpAQCAtOTgsNiArOTgsNyBAQAogCQkJICAiRW50ZXJpbmcgcHJlZGVmaW5lZCBlbnRyaWVzIGludG8gbmFtZXNwYWNlXG4iKSk7CiAKIAlmb3IgKGluaXRfdmFsID0gYWNwaV9nYmxfcHJlX2RlZmluZWRfbmFtZXM7IGluaXRfdmFsLT5uYW1lOyBpbml0X3ZhbCsrKSB7CisKIAkJLyogX09TSSBpcyBvcHRpb25hbCBmb3Igbm93LCB3aWxsIGJlIHBlcm1hbmVudCBsYXRlciAqLwogCiAJCWlmICghQUNQSV9TVFJDTVAoaW5pdF92YWwtPm5hbWUsICJfT1NJIikKQEAgLTE1Niw3ICsxNTcsNyBAQAogCiAjaWYgZGVmaW5lZCAoQUNQSV9BU0xfQ09NUElMRVIpCiAKLQkJCQkvKiBzYXZlIHRoZSBwYXJhbWV0ZXIgY291bnQgZm9yIHRoZSBpX2FTTCBjb21waWxlciAqLworCQkJCS8qIFNhdmUgdGhlIHBhcmFtZXRlciBjb3VudCBmb3IgdGhlIGlfYVNMIGNvbXBpbGVyICovCiAKIAkJCQluZXdfbm9kZS0+dmFsdWUgPSBvYmpfZGVzYy0+bWV0aG9kLnBhcmFtX2NvdW50OwogI2Vsc2UKQEAgLTI1OCwxMCArMjU5LDggQEAKIAkvKiBTYXZlIGEgaGFuZGxlIHRvICJfR1BFIiwgaXQgaXMgYWx3YXlzIHByZXNlbnQgKi8KIAogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewotCQlzdGF0dXMgPQotCQkgICAgYWNwaV9uc19nZXRfbm9kZV9ieV9wYXRoKCJcXF9HUEUiLCBOVUxMLAotCQkJCQkgICAgIEFDUElfTlNfTk9fVVBTRUFSQ0gsCi0JCQkJCSAgICAgJmFjcGlfZ2JsX2ZhZHRfZ3BlX2RldmljZSk7CisJCXN0YXR1cyA9IGFjcGlfbnNfZ2V0X25vZGUoTlVMTCwgIlxcX0dQRSIsIEFDUElfTlNfTk9fVVBTRUFSQ0gsCisJCQkJCSAgJmFjcGlfZ2JsX2ZhZHRfZ3BlX2RldmljZSk7CiAJfQogCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CkBAIC0zMTAsMTcgKzMwOSwxNyBAQAogCWFjcGlfb2JqZWN0X3R5cGUgdHlwZV90b19jaGVja19mb3I7CiAJYWNwaV9vYmplY3RfdHlwZSB0aGlzX3NlYXJjaF90eXBlOwogCXUzMiBzZWFyY2hfcGFyZW50X2ZsYWcgPSBBQ1BJX05TX1NFQVJDSF9QQVJFTlQ7Ci0JdTMyIGxvY2FsX2ZsYWdzID0gZmxhZ3MgJiB+KEFDUElfTlNfRVJST1JfSUZfRk9VTkQgfAotCQkJCSAgICBBQ1BJX05TX1NFQVJDSF9QQVJFTlQpOworCXUzMiBsb2NhbF9mbGFnczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2xvb2t1cCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfbG9va3VwKTsKIAogCWlmICghcmV0dXJuX25vZGUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAotCWFjcGlfZ2JsX25zX2xvb2t1cF9jb3VudCsrOworCWxvY2FsX2ZsYWdzID0gZmxhZ3MgJiB+KEFDUElfTlNfRVJST1JfSUZfRk9VTkQgfCBBQ1BJX05TX1NFQVJDSF9QQVJFTlQpOwogCSpyZXR1cm5fbm9kZSA9IEFDUElfRU5UUllfTk9UX0ZPVU5EOworCWFjcGlfZ2JsX25zX2xvb2t1cF9jb3VudCsrOwogCiAJaWYgKCFhY3BpX2dibF9yb290X25vZGUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX05BTUVTUEFDRSk7CkBAIC0zNDYsMTQgKzM0NSwxNyBAQAogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9JTlRFUk5BTCk7CiAJCX0KIAotCQkvKgotCQkgKiBUaGlzIG5vZGUgbWlnaHQgbm90IGJlIGEgYWN0dWFsICJzY29wZSIgbm9kZSAoc3VjaCBhcyBhCi0JCSAqIERldmljZS9NZXRob2QsIGV0Yy4pICBJdCBjb3VsZCBiZSBhIFBhY2thZ2Ugb3Igb3RoZXIgb2JqZWN0IG5vZGUuCi0JCSAqIEJhY2t1cCB1cCB0aGUgdHJlZSB0byBmaW5kIHRoZSBjb250YWluaW5nIHNjb3BlIG5vZGUuCi0JCSAqLwotCQl3aGlsZSAoIWFjcGlfbnNfb3BlbnNfc2NvcGUocHJlZml4X25vZGUtPnR5cGUpICYmCi0JCSAgICAgICBwcmVmaXhfbm9kZS0+dHlwZSAhPSBBQ1BJX1RZUEVfQU5ZKSB7Ci0JCQlwcmVmaXhfbm9kZSA9IGFjcGlfbnNfZ2V0X3BhcmVudF9ub2RlKHByZWZpeF9ub2RlKTsKKwkJaWYgKCEoZmxhZ3MgJiBBQ1BJX05TX1BSRUZJWF9JU19TQ09QRSkpIHsKKwkJCS8qCisJCQkgKiBUaGlzIG5vZGUgbWlnaHQgbm90IGJlIGEgYWN0dWFsICJzY29wZSIgbm9kZSAoc3VjaCBhcyBhCisJCQkgKiBEZXZpY2UvTWV0aG9kLCBldGMuKSAgSXQgY291bGQgYmUgYSBQYWNrYWdlIG9yIG90aGVyIG9iamVjdCBub2RlLgorCQkJICogQmFja3VwIHVwIHRoZSB0cmVlIHRvIGZpbmQgdGhlIGNvbnRhaW5pbmcgc2NvcGUgbm9kZS4KKwkJCSAqLworCQkJd2hpbGUgKCFhY3BpX25zX29wZW5zX3Njb3BlKHByZWZpeF9ub2RlLT50eXBlKSAmJgorCQkJICAgICAgIHByZWZpeF9ub2RlLT50eXBlICE9IEFDUElfVFlQRV9BTlkpIHsKKwkJCQlwcmVmaXhfbm9kZSA9CisJCQkJICAgIGFjcGlfbnNfZ2V0X3BhcmVudF9ub2RlKHByZWZpeF9ub2RlKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtMzY1LDYgKzM2Nyw3IEBACiAJICogQmVnaW4gZXhhbWluYXRpb24gb2YgdGhlIGFjdHVhbCBwYXRobmFtZQogCSAqLwogCWlmICghcGF0aG5hbWUpIHsKKwogCQkvKiBBIE51bGwgbmFtZV9wYXRoIGlzIGFsbG93ZWQgYW5kIHJlZmVycyB0byB0aGUgcm9vdCAqLwogCiAJCW51bV9zZWdtZW50cyA9IDA7CkBAIC0zODksNiArMzkyLDcgQEAKIAkJICogdG8gdGhlIGN1cnJlbnQgc2NvcGUpLgogCQkgKi8KIAkJaWYgKCpwYXRoID09ICh1OCkgQU1MX1JPT1RfUFJFRklYKSB7CisKIAkJCS8qIFBhdGhuYW1lIGlzIGZ1bGx5IHF1YWxpZmllZCwgc3RhcnQgZnJvbSB0aGUgcm9vdCAqLwogCiAJCQl0aGlzX25vZGUgPSBhY3BpX2dibF9yb290X25vZGU7CkBAIC00MTYsNiArNDIwLDcgQEAKIAkJCXRoaXNfbm9kZSA9IHByZWZpeF9ub2RlOwogCQkJbnVtX2NhcmF0cyA9IDA7CiAJCQl3aGlsZSAoKnBhdGggPT0gKHU4KSBBTUxfUEFSRU5UX1BSRUZJWCkgeworCiAJCQkJLyogTmFtZSBpcyBmdWxseSBxdWFsaWZpZWQsIG5vIHNlYXJjaCBydWxlcyBhcHBseSAqLwogCiAJCQkJc2VhcmNoX3BhcmVudF9mbGFnID0gQUNQSV9OU19OT19VUFNFQVJDSDsKQEAgLTQzMCw2ICs0MzUsNyBAQAogCQkJCW51bV9jYXJhdHMrKzsKIAkJCQl0aGlzX25vZGUgPSBhY3BpX25zX2dldF9wYXJlbnRfbm9kZSh0aGlzX25vZGUpOwogCQkJCWlmICghdGhpc19ub2RlKSB7CisKIAkJCQkJLyogQ3VycmVudCBzY29wZSBoYXMgbm8gcGFyZW50IHNjb3BlICovCiAKIAkJCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKQEAgLTU2OSw2ICs1NzUsNyBAQAogCQkJCQkgICAgICZ0aGlzX25vZGUpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCWlmIChzdGF0dXMgPT0gQUVfTk9UX0ZPVU5EKSB7CisKIAkJCQkvKiBOYW1lIG5vdCBmb3VuZCBpbiBBQ1BJIG5hbWVzcGFjZSAqLwogCiAJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9OQU1FUywKQEAgLTYwMiwxMCArNjA5LDExIEBACiAJCSAgICAodHlwZV90b19jaGVja19mb3IgIT0gQUNQSV9UWVBFX0xPQ0FMX1NDT1BFKSAmJgogCQkgICAgKHRoaXNfbm9kZS0+dHlwZSAhPSBBQ1BJX1RZUEVfQU5ZKSAmJgogCQkgICAgKHRoaXNfbm9kZS0+dHlwZSAhPSB0eXBlX3RvX2NoZWNrX2ZvcikpIHsKKwogCQkJLyogQ29tcGxhaW4gYWJvdXQgYSB0eXBlIG1pc21hdGNoICovCiAKIAkJCUFDUElfV0FSTklORygoQUVfSU5GTywKLQkJCQkgICAgICAibnNfbG9va3VwOiBUeXBlIG1pc21hdGNoIG9uICU0LjRzICglcyksIHNlYXJjaGluZyBmb3IgKCVzKSIsCisJCQkJICAgICAgIk5zTG9va3VwOiBUeXBlIG1pc21hdGNoIG9uICU0LjRzICglcyksIHNlYXJjaGluZyBmb3IgKCVzKSIsCiAJCQkJICAgICAgQUNQSV9DQVNUX1BUUihjaGFyLCAmc2ltcGxlX25hbWUpLAogCQkJCSAgICAgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZSh0aGlzX25vZGUtPnR5cGUpLAogCQkJCSAgICAgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2FsbG9jLmMgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zYWxsb2MuYwppbmRleCA5Yjg3MWYzLi5kYzNmMDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zYWxsb2MuYworKysgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zYWxsb2MuYwpAQCAtNDcsOSArNDcsNiBAQAogI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfTkFNRVNQQUNFCiBBQ1BJX01PRFVMRV9OQU1FKCJuc2FsbG9jIikKIAotLyogTG9jYWwgcHJvdG90eXBlcyAqLwotc3RhdGljIHZvaWQgYWNwaV9uc19yZW1vdmVfcmVmZXJlbmNlKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlKTsKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9uc19jcmVhdGVfbm9kZQpAQCAtNjEsMTQgKzU4LDEzIEBACiAgKiBERVNDUklQVElPTjogQ3JlYXRlIGEgbmFtZXNwYWNlIG5vZGUKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqYWNwaV9uc19jcmVhdGVfbm9kZSh1MzIgbmFtZSkKIHsKIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2NyZWF0ZV9ub2RlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19jcmVhdGVfbm9kZSk7CiAKLQlub2RlID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHNpemVvZihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSkpOworCW5vZGUgPSBhY3BpX29zX2FjcXVpcmVfb2JqZWN0KGFjcGlfZ2JsX25hbWVzcGFjZV9jYWNoZSk7CiAJaWYgKCFub2RlKSB7CiAJCXJldHVybl9QVFIoTlVMTCk7CiAJfQpAQCAtNzYsOSArNzIsNyBAQAogCUFDUElfTUVNX1RSQUNLSU5HKGFjcGlfZ2JsX25zX25vZGVfbGlzdC0+dG90YWxfYWxsb2NhdGVkKyspOwogCiAJbm9kZS0+bmFtZS5pbnRlZ2VyID0gbmFtZTsKLQlub2RlLT5yZWZlcmVuY2VfY291bnQgPSAxOwogCUFDUElfU0VUX0RFU0NSSVBUT1JfVFlQRShub2RlLCBBQ1BJX0RFU0NfVFlQRV9OQU1FRCk7Ci0KIAlyZXR1cm5fUFRSKG5vZGUpOwogfQogCkBAIC0xMDAsNyArOTQsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwcmV2X25vZGU7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5leHRfbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJuc19kZWxldGVfbm9kZSIsIG5vZGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKG5zX2RlbGV0ZV9ub2RlLCBub2RlKTsKIAogCXBhcmVudF9ub2RlID0gYWNwaV9uc19nZXRfcGFyZW50X25vZGUobm9kZSk7CiAKQEAgLTExNSw2ICsxMDksNyBAQAogCX0KIAogCWlmIChwcmV2X25vZGUpIHsKKwogCQkvKiBOb2RlIGlzIG5vdCBmaXJzdCBjaGlsZCwgdW5saW5rIGl0ICovCiAKIAkJcHJldl9ub2RlLT5wZWVyID0gbmV4dF9ub2RlLT5wZWVyOwpAQCAtMTI1LDYgKzEyMCw3IEBACiAJCS8qIE5vZGUgaXMgZmlyc3QgY2hpbGQgKGhhcyBubyBwcmV2aW91cyBwZWVyKSAqLwogCiAJCWlmIChuZXh0X25vZGUtPmZsYWdzICYgQU5PQkpfRU5EX09GX1BFRVJfTElTVCkgeworCiAJCQkvKiBObyBwZWVycyBhdCBhbGwgKi8KIAogCQkJcGFyZW50X25vZGUtPmNoaWxkID0gTlVMTDsKQEAgLTEzNywxMCArMTMzLDEwIEBACiAJQUNQSV9NRU1fVFJBQ0tJTkcoYWNwaV9nYmxfbnNfbm9kZV9saXN0LT50b3RhbF9mcmVlZCsrKTsKIAogCS8qCi0JICogRGV0YWNoIGFuIG9iamVjdCBpZiB0aGVyZSBpcyBvbmUgdGhlbiBkZWxldGUgdGhlIG5vZGUKKwkgKiBEZXRhY2ggYW4gb2JqZWN0IGlmIHRoZXJlIGlzIG9uZSwgdGhlbiBkZWxldGUgdGhlIG5vZGUKIAkgKi8KIAlhY3BpX25zX2RldGFjaF9vYmplY3Qobm9kZSk7Ci0JQUNQSV9NRU1fRlJFRShub2RlKTsKKwkodm9pZClhY3BpX29zX3JlbGVhc2Vfb2JqZWN0KGFjcGlfZ2JsX25hbWVzcGFjZV9jYWNoZSwgbm9kZSk7CiAJcmV0dXJuX1ZPSUQ7CiB9CiAKQEAgLTE3MSw3ICsxNjcsNyBAQAogCWFjcGlfb3duZXJfaWQgb3duZXJfaWQgPSAwOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpjaGlsZF9ub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfaW5zdGFsbF9ub2RlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19pbnN0YWxsX25vZGUpOwogCiAJLyoKIAkgKiBHZXQgdGhlIG93bmVyIElEIGZyb20gdGhlIFdhbGsgc3RhdGUKQEAgLTIxNiwxNCArMjEyLDYgQEAKIAkJCSAgYWNwaV91dF9nZXRfdHlwZV9uYW1lKHBhcmVudF9ub2RlLT50eXBlKSwKIAkJCSAgcGFyZW50X25vZGUpKTsKIAotCS8qCi0JICogSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQocykgb2YgYWxsIHBhcmVudHMgdXAgdG8KLQkgKiB0aGUgcm9vdCEKLQkgKi8KLQl3aGlsZSAoKG5vZGUgPSBhY3BpX25zX2dldF9wYXJlbnRfbm9kZShub2RlKSkgIT0gTlVMTCkgewotCQlub2RlLT5yZWZlcmVuY2VfY291bnQrKzsKLQl9Ci0KIAlyZXR1cm5fVk9JRDsKIH0KIApAQCAtMjQ0LDEwICsyMzIsOSBAQAogewogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpjaGlsZF9ub2RlOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpuZXh0X25vZGU7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CiAJdTggZmxhZ3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigibnNfZGVsZXRlX2NoaWxkcmVuIiwgcGFyZW50X25vZGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKG5zX2RlbGV0ZV9jaGlsZHJlbiwgcGFyZW50X25vZGUpOwogCiAJaWYgKCFwYXJlbnRfbm9kZSkgewogCQlyZXR1cm5fVk9JRDsKQEAgLTI2NCw2ICsyNTEsNyBAQAogCSAqIERlYWxsb2NhdGUgYWxsIGNoaWxkcmVuIGF0IHRoaXMgbGV2ZWwKIAkgKi8KIAlkbyB7CisKIAkJLyogR2V0IHRoZSB0aGluZ3Mgd2UgbmVlZCAqLwogCiAJCW5leHRfbm9kZSA9IGNoaWxkX25vZGUtPnBlZXI7CkBAIC0yODksMjYgKzI3NywxMCBAQAogCQkgKi8KIAkJYWNwaV9uc19kZXRhY2hfb2JqZWN0KGNoaWxkX25vZGUpOwogCi0JCS8qCi0JCSAqIERlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50KHMpIG9mIGFsbCBwYXJlbnRzIHVwIHRvCi0JCSAqIHRoZSByb290ISAoY291bnRzIHdlcmUgaW5jcmVtZW50ZWQgd2hlbiB0aGUgbm9kZSB3YXMgY3JlYXRlZCkKLQkJICovCi0JCW5vZGUgPSBjaGlsZF9ub2RlOwotCQl3aGlsZSAoKG5vZGUgPSBhY3BpX25zX2dldF9wYXJlbnRfbm9kZShub2RlKSkgIT0gTlVMTCkgewotCQkJbm9kZS0+cmVmZXJlbmNlX2NvdW50LS07Ci0JCX0KLQotCQkvKiBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgcmVmZXJlbmNlIHJlbWFpbmluZyBvbiB0aGlzIG5vZGUgKi8KLQotCQlpZiAoY2hpbGRfbm9kZS0+cmVmZXJlbmNlX2NvdW50ICE9IDEpIHsKLQkJCUFDUElfV0FSTklORygoQUVfSU5GTywKLQkJCQkgICAgICAiRXhpc3RpbmcgcmVmZXJlbmNlcyAoJWQpIG9uIG5vZGUgYmVpbmcgZGVsZXRlZCAoJXApIiwKLQkJCQkgICAgICBjaGlsZF9ub2RlLT5yZWZlcmVuY2VfY291bnQsIGNoaWxkX25vZGUpKTsKLQkJfQotCiAJCS8qIE5vdyB3ZSBjYW4gZGVsZXRlIHRoZSBub2RlICovCiAKLQkJQUNQSV9NRU1fRlJFRShjaGlsZF9ub2RlKTsKKwkJKHZvaWQpYWNwaV9vc19yZWxlYXNlX29iamVjdChhY3BpX2dibF9uYW1lc3BhY2VfY2FjaGUsCisJCQkJCSAgICAgY2hpbGRfbm9kZSk7CiAKIAkJLyogQW5kIG1vdmUgb24gdG8gdGhlIG5leHQgY2hpbGQgaW4gdGhlIGxpc3QgKi8KIApAQCAtMzQxLDcgKzMxMyw3IEBACiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKmNoaWxkX25vZGUgPSBOVUxMOwogCXUzMiBsZXZlbCA9IDE7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19kZWxldGVfbmFtZXNwYWNlX3N1YnRyZWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKG5zX2RlbGV0ZV9uYW1lc3BhY2Vfc3VidHJlZSk7CiAKIAlpZiAoIXBhcmVudF9ub2RlKSB7CiAJCXJldHVybl9WT0lEOwpAQCAtMzUyLDExICszMjQsMTQgQEAKIAkgKiB0byB3aGVyZSB3ZSBzdGFydGVkLgogCSAqLwogCXdoaWxlIChsZXZlbCA+IDApIHsKKwogCQkvKiBHZXQgdGhlIG5leHQgbm9kZSBpbiB0aGlzIHNjb3BlIChOVUxMIGlmIG5vbmUpICovCiAKLQkJY2hpbGRfbm9kZSA9IGFjcGlfbnNfZ2V0X25leHRfbm9kZShBQ1BJX1RZUEVfQU5ZLCBwYXJlbnRfbm9kZSwKLQkJCQkJCSAgIGNoaWxkX25vZGUpOworCQljaGlsZF9ub2RlID0KKwkJICAgIGFjcGlfbnNfZ2V0X25leHRfbm9kZShBQ1BJX1RZUEVfQU5ZLCBwYXJlbnRfbm9kZSwKKwkJCQkJICBjaGlsZF9ub2RlKTsKIAkJaWYgKGNoaWxkX25vZGUpIHsKKwogCQkJLyogRm91bmQgYSBjaGlsZCBub2RlIC0gZGV0YWNoIGFueSBhdHRhY2hlZCBvYmplY3QgKi8KIAogCQkJYWNwaV9uc19kZXRhY2hfb2JqZWN0KGNoaWxkX25vZGUpOwpAQCAtNDAxLDU1ICszNzYsNiBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX25zX3JlbW92ZV9yZWZlcmVuY2UKLSAqCi0gKiBQQVJBTUVURVJTOiAgTm9kZSAgICAgICAgICAgLSBOYW1lZCBub2RlIHdob3NlIHJlZmVyZW5jZSBjb3VudCBpcyB0byBiZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50ZWQKLSAqCi0gKiBSRVRVUk46ICAgICAgTm9uZS4KLSAqCi0gKiBERVNDUklQVElPTjogUmVtb3ZlIGEgTm9kZSByZWZlcmVuY2UuICBEZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQKLSAqICAgICAgICAgICAgICBvZiBhbGwgcGFyZW50IE5vZGVzIHVwIHRvIHRoZSByb290LiAgQW55IG5vZGUgYWxvbmcKLSAqICAgICAgICAgICAgICB0aGUgd2F5IHRoYXQgcmVhY2hlcyB6ZXJvIHJlZmVyZW5jZXMgaXMgZnJlZWQuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIHZvaWQgYWNwaV9uc19yZW1vdmVfcmVmZXJlbmNlKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlKQotewotCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwYXJlbnRfbm9kZTsKLQlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqdGhpc19ub2RlOwotCi0JQUNQSV9GVU5DVElPTl9FTlRSWSgpOwotCi0JLyoKLQkgKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudChzKSBvZiB0aGlzIG5vZGUgYW5kIGFsbAotCSAqIG5vZGVzIHVwIHRvIHRoZSByb290LCAgRGVsZXRlIGFueXRoaW5nIHdpdGggemVybyByZW1haW5pbmcgcmVmZXJlbmNlcy4KLQkgKi8KLQl0aGlzX25vZGUgPSBub2RlOwotCXdoaWxlICh0aGlzX25vZGUpIHsKLQkJLyogUHJlcGFyZSB0byBtb3ZlIHVwIHRvIHBhcmVudCAqLwotCi0JCXBhcmVudF9ub2RlID0gYWNwaV9uc19nZXRfcGFyZW50X25vZGUodGhpc19ub2RlKTsKLQotCQkvKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGlzIG5vZGUgKi8KLQotCQl0aGlzX25vZGUtPnJlZmVyZW5jZV9jb3VudC0tOwotCi0JCS8qIERlbGV0ZSB0aGUgbm9kZSBpZiBubyBtb3JlIHJlZmVyZW5jZXMgKi8KLQotCQlpZiAoIXRoaXNfbm9kZS0+cmVmZXJlbmNlX2NvdW50KSB7Ci0JCQkvKiBEZWxldGUgYWxsIGNoaWxkcmVuIGFuZCBkZWxldGUgdGhlIG5vZGUgKi8KLQotCQkJYWNwaV9uc19kZWxldGVfY2hpbGRyZW4odGhpc19ub2RlKTsKLQkJCWFjcGlfbnNfZGVsZXRlX25vZGUodGhpc19ub2RlKTsKLQkJfQotCi0JCXRoaXNfbm9kZSA9IHBhcmVudF9ub2RlOwotCX0KLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9uc19kZWxldGVfbmFtZXNwYWNlX2J5X293bmVyCiAgKgogICogUEFSQU1FVEVSUzogIG93bmVyX2lkICAgIC0gQWxsIG5vZGVzIHdpdGggdGhpcyBvd25lciB3aWxsIGJlIGRlbGV0ZWQKQEAgLTQ2OSwxNSArMzk1LDE1IEBACiAJdTMyIGxldmVsOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwYXJlbnRfbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJuc19kZWxldGVfbmFtZXNwYWNlX2J5X293bmVyIiwgb3duZXJfaWQpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKG5zX2RlbGV0ZV9uYW1lc3BhY2VfYnlfb3duZXIsIG93bmVyX2lkKTsKIAogCWlmIChvd25lcl9pZCA9PSAwKSB7CiAJCXJldHVybl9WT0lEOwogCX0KIAorCWRlbGV0aW9uX25vZGUgPSBOVUxMOwogCXBhcmVudF9ub2RlID0gYWNwaV9nYmxfcm9vdF9ub2RlOwogCWNoaWxkX25vZGUgPSBOVUxMOwotCWRlbGV0aW9uX25vZGUgPSBOVUxMOwogCWxldmVsID0gMTsKIAogCS8qCkBAIC00OTQsMTIgKzQyMCwxNCBAQAogCQkJCQkgIGNoaWxkX25vZGUpOwogCiAJCWlmIChkZWxldGlvbl9ub2RlKSB7Ci0JCQlhY3BpX25zX3JlbW92ZV9yZWZlcmVuY2UoZGVsZXRpb25fbm9kZSk7CisJCQlhY3BpX25zX2RlbGV0ZV9jaGlsZHJlbihkZWxldGlvbl9ub2RlKTsKKwkJCWFjcGlfbnNfZGVsZXRlX25vZGUoZGVsZXRpb25fbm9kZSk7CiAJCQlkZWxldGlvbl9ub2RlID0gTlVMTDsKIAkJfQogCiAJCWlmIChjaGlsZF9ub2RlKSB7CiAJCQlpZiAoY2hpbGRfbm9kZS0+b3duZXJfaWQgPT0gb3duZXJfaWQpIHsKKwogCQkJCS8qIEZvdW5kIGEgbWF0Y2hpbmcgY2hpbGQgbm9kZSAtIGRldGFjaCBhbnkgYXR0YWNoZWQgb2JqZWN0ICovCiAKIAkJCQlhY3BpX25zX2RldGFjaF9vYmplY3QoY2hpbGRfbm9kZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zZHVtcC5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2R1bXAuYwppbmRleCBhMjgwNzMxLi5kNzJkZjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zZHVtcC5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNkdW1wLmMKQEAgLTc1LDcgKzc1LDcgQEAKIHsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoIm5zX3ByaW50X3BhdGhuYW1lIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKG5zX3ByaW50X3BhdGhuYW1lKTsKIAogCWlmICghKGFjcGlfZGJnX2xldmVsICYgQUNQSV9MVl9OQU1FUykKIAkgICAgfHwgIShhY3BpX2RiZ19sYXllciAmIEFDUElfTkFNRVNQQUNFKSkgewpAQCAtMTIzLDcgKzEyMyw3IEBACiBhY3BpX25zX2R1bXBfcGF0aG5hbWUoYWNwaV9oYW5kbGUgaGFuZGxlLCBjaGFyICptc2csIHUzMiBsZXZlbCwgdTMyIGNvbXBvbmVudCkKIHsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2R1bXBfcGF0aG5hbWUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKG5zX2R1bXBfcGF0aG5hbWUpOwogCiAJLyogRG8gdGhpcyBvbmx5IGlmIHRoZSByZXF1ZXN0ZWQgZGVidWcgbGV2ZWwgYW5kIGNvbXBvbmVudCBhcmUgZW5hYmxlZCAqLwogCkBAIC0xNjcsNyArMTY3LDcgQEAKIAl1MzIgZGJnX2xldmVsOwogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJuc19kdW1wX29uZV9vYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUobnNfZHVtcF9vbmVfb2JqZWN0KTsKIAogCS8qIElzIG91dHB1dCBlbmFibGVkPyAqLwogCkBAIC0xOTEsNiArMTkxLDcgQEAKIAl9CiAKIAlpZiAoIShpbmZvLT5kaXNwbGF5X3R5cGUgJiBBQ1BJX0RJU1BMQVlfU0hPUlQpKSB7CisKIAkJLyogSW5kZW50IHRoZSBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBsZXZlbCAqLwogCiAJCWFjcGlfb3NfcHJpbnRmKCIlMmQlKnMiLCAodTMyKSBsZXZlbCAtIDEsIChpbnQpbGV2ZWwgKiAyLCAiICIpOwpAQCAtMjAzLDYgKzIwNCw5IEBACiAJCX0KIAogCQlpZiAoIWFjcGlfdXRfdmFsaWRfYWNwaV9uYW1lKHRoaXNfbm9kZS0+bmFtZS5pbnRlZ2VyKSkgeworCQkJdGhpc19ub2RlLT5uYW1lLmludGVnZXIgPQorCQkJICAgIGFjcGlfdXRfcmVwYWlyX25hbWUodGhpc19ub2RlLT5uYW1lLmludGVnZXIpOworCiAJCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sICJJbnZhbGlkIEFDUEkgTmFtZSAlMDhYIiwKIAkJCQkgICAgICB0aGlzX25vZGUtPm5hbWUuaW50ZWdlcikpOwogCQl9CkBAIC0yMjYsNiArMjMwLDcgQEAKIAljYXNlIEFDUElfRElTUExBWV9TVU1NQVJZOgogCiAJCWlmICghb2JqX2Rlc2MpIHsKKwogCQkJLyogTm8gYXR0YWNoZWQgb2JqZWN0LCB3ZSBhcmUgZG9uZSAqLwogCiAJCQlhY3BpX29zX3ByaW50ZigiXG4iKTsKQEAgLTQxOSw2ICs0MjQsNyBAQAogCiAJCWFjcGlfb3NfcHJpbnRmKCJPOiVwIiwgb2JqX2Rlc2MpOwogCQlpZiAoIW9ial9kZXNjKSB7CisKIAkJCS8qIE5vIGF0dGFjaGVkIG9iamVjdCwgd2UgYXJlIGRvbmUgKi8KIAogCQkJYWNwaV9vc19wcmludGYoIlxuIik7CkBAIC02NjksNyArNjc1LDcgQEAKIHsKIAlhY3BpX2hhbmRsZSBzZWFyY2hfaGFuZGxlID0gc2VhcmNoX2Jhc2U7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19kdW1wX3RhYmxlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZHVtcF90YWJsZXMpOwogCiAJaWYgKCFhY3BpX2dibF9yb290X25vZGUpIHsKIAkJLyoKQEAgLTY4Miw2ICs2ODgsNyBAQAogCX0KIAogCWlmIChBQ1BJX05TX0FMTCA9PSBzZWFyY2hfYmFzZSkgeworCiAJCS8qIEVudGlyZSBuYW1lc3BhY2UgKi8KIAogCQlzZWFyY2hfaGFuZGxlID0gYWNwaV9nYmxfcm9vdF9ub2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2R1bXBkdi5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2R1bXBkdi5jCmluZGV4IGFmZjg5OWEuLmM2YmY1ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNkdW1wZHYuYworKysgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zZHVtcGR2LmMKQEAgLTc0LDcgKzc0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoIm5zX2R1bXBfb25lX2RldmljZSIpOworCUFDUElfRlVOQ1RJT05fTkFNRShuc19kdW1wX29uZV9kZXZpY2UpOwogCiAJc3RhdHVzID0KIAkgICAgYWNwaV9uc19kdW1wX29uZV9vYmplY3Qob2JqX2hhbmRsZSwgbGV2ZWwsIGNvbnRleHQsIHJldHVybl92YWx1ZSk7CkBAIC05Miw3ICs5Miw3IEBACiAJCQkJICAgICAgaW5mby0+aGFyZHdhcmVfaWQudmFsdWUsCiAJCQkJICAgICAgQUNQSV9GT1JNQVRfVUlOVDY0KGluZm8tPmFkZHJlc3MpLAogCQkJCSAgICAgIGluZm8tPmN1cnJlbnRfc3RhdHVzKSk7Ci0JCUFDUElfTUVNX0ZSRUUoaW5mbyk7CisJCUFDUElfRlJFRShpbmZvKTsKIAl9CiAKIAlyZXR1cm4gKHN0YXR1cyk7CkBAIC0xMTUsNyArMTE1LDcgQEAKIAlhY3BpX2hhbmRsZSBzeXNfYnVzX2hhbmRsZTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoIm5zX2R1bXBfcm9vdF9kZXZpY2VzIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKG5zX2R1bXBfcm9vdF9kZXZpY2VzKTsKIAogCS8qIE9ubHkgZHVtcCB0aGUgdGFibGUgaWYgdHJhY2luZyBpcyBlbmFibGVkICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNldmFsLmMgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zZXZhbC5jCmluZGV4IDE5ZDdiOTQuLjRiMGE0YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNldmFsLmMKKysrIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2V2YWwuYwpAQCAtMSw3ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgotICogTW9kdWxlIE5hbWU6IG5zZXZhbCAtIE9iamVjdCBldmFsdWF0aW9uIGludGVyZmFjZXMgLS0gaW5jbHVkZXMgY29udHJvbAotICogICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBsb29rdXAgYW5kIGV4ZWN1dGlvbi4KKyAqIE1vZHVsZSBOYW1lOiBuc2V2YWwgLSBPYmplY3QgZXZhbHVhdGlvbiwgaW5jbHVkZXMgY29udHJvbCBtZXRob2QgZXhlY3V0aW9uCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtNTAsMTk2ICs0OSwxNCBAQAogI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfTkFNRVNQQUNFCiBBQ1BJX01PRFVMRV9OQU1FKCJuc2V2YWwiKQogCi0vKiBMb2NhbCBwcm90b3R5cGVzICovCi1zdGF0aWMgYWNwaV9zdGF0dXMKLWFjcGlfbnNfZXhlY3V0ZV9jb250cm9sX21ldGhvZChzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbyk7Ci0KLXN0YXRpYyBhY3BpX3N0YXR1cyBhY3BpX25zX2dldF9vYmplY3RfdmFsdWUoc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gKmluZm8pOwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX25zX2V2YWx1YXRlX3JlbGF0aXZlCisgKiBGVU5DVElPTjogICAgYWNwaV9uc19ldmFsdWF0ZQogICoKLSAqIFBBUkFNRVRFUlM6ICBQYXRobmFtZSAgICAgICAgLSBOYW1lIG9mIG1ldGhvZCB0byBleGVjdXRlLCBJZiBOVUxMLCB0aGUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgaXMgdGhlIG9iamVjdCB0byBleGVjdXRlCi0gKiAgICAgICAgICAgICAgSW5mbyAgICAgICAgICAgIC0gTWV0aG9kIGluZm8gYmxvY2ssIGNvbnRhaW5zOgotICogICAgICAgICAgICAgICAgICByZXR1cm5fb2JqZWN0ICAgLSBXaGVyZSB0byBwdXQgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIChpZgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkpLiAgSWYgTlVMTCwgbm8gdmFsdWUgaXMgcmV0dXJuZWQuCi0gKiAgICAgICAgICAgICAgICAgIFBhcmFtcyAgICAgICAgICAtIExpc3Qgb2YgcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSBtZXRob2QsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgYnkgTlVMTC4gIFBhcmFtcyBpdHNlbGYgbWF5IGJlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgaWYgbm8gcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkLgotICoKLSAqIFJFVFVSTjogICAgICBTdGF0dXMKLSAqCi0gKiBERVNDUklQVElPTjogRXZhbHVhdGUgdGhlIG9iamVjdCBvciBmaW5kIGFuZCBleGVjdXRlIHRoZSByZXF1ZXN0ZWQgbWV0aG9kCi0gKgotICogTVVURVg6ICAgICAgIExvY2tzIE5hbWVzcGFjZQotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLWFjcGlfc3RhdHVzCi1hY3BpX25zX2V2YWx1YXRlX3JlbGF0aXZlKGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbykKLXsKLQlhY3BpX3N0YXR1cyBzdGF0dXM7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGUgPSBOVUxMOwotCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc2NvcGVfaW5mbzsKLQljaGFyICppbnRlcm5hbF9wYXRoID0gTlVMTDsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2V2YWx1YXRlX3JlbGF0aXZlIik7Ci0KLQkvKgotCSAqIE11c3QgaGF2ZSBhIHZhbGlkIG9iamVjdCBoYW5kbGUKLQkgKi8KLQlpZiAoIWluZm8gfHwgIWluZm8tPm5vZGUpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwotCX0KLQotCS8qIEJ1aWxkIGFuIGludGVybmFsIG5hbWUgc3RyaW5nIGZvciB0aGUgbWV0aG9kICovCi0KLQlzdGF0dXMgPSBhY3BpX25zX2ludGVybmFsaXplX25hbWUocGF0aG5hbWUsICZpbnRlcm5hbF9wYXRoKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JfQotCi0Jc2NvcGVfaW5mbyA9IGFjcGlfdXRfY3JlYXRlX2dlbmVyaWNfc3RhdGUoKTsKLQlpZiAoIXNjb3BlX2luZm8pIHsKLQkJZ290byBjbGVhbnVwMTsKLQl9Ci0KLQkvKiBHZXQgdGhlIHByZWZpeCBoYW5kbGUgYW5kIE5vZGUgKi8KLQotCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9OQU1FU1BBQ0UpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlnb3RvIGNsZWFudXA7Ci0JfQotCi0JaW5mby0+bm9kZSA9IGFjcGlfbnNfbWFwX2hhbmRsZV90b19ub2RlKGluZm8tPm5vZGUpOwotCWlmICghaW5mby0+bm9kZSkgewotCQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQkJc3RhdHVzID0gQUVfQkFEX1BBUkFNRVRFUjsKLQkJZ290byBjbGVhbnVwOwotCX0KLQotCS8qIExvb2t1cCB0aGUgbmFtZSBpbiB0aGUgbmFtZXNwYWNlICovCi0KLQlzY29wZV9pbmZvLT5zY29wZS5ub2RlID0gaW5mby0+bm9kZTsKLQlzdGF0dXMgPSBhY3BpX25zX2xvb2t1cChzY29wZV9pbmZvLCBpbnRlcm5hbF9wYXRoLCBBQ1BJX1RZUEVfQU5ZLAotCQkJCUFDUElfSU1PREVfRVhFQ1VURSwgQUNQSV9OU19OT19VUFNFQVJDSCwgTlVMTCwKLQkJCQkmbm9kZSk7Ci0KLQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLCAiT2JqZWN0IFslc10gbm90IGZvdW5kIFslc11cbiIsCi0JCQkJICBwYXRobmFtZSwgYWNwaV9mb3JtYXRfZXhjZXB0aW9uKHN0YXR1cykpKTsKLQkJZ290byBjbGVhbnVwOwotCX0KLQotCS8qCi0JICogTm93IHRoYXQgd2UgaGF2ZSBhIGhhbmRsZSB0byB0aGUgb2JqZWN0LCB3ZSBjYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdC4KLQkgKi8KLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLCAiJXMgWyVwXSBWYWx1ZSAlcFxuIiwKLQkJCSAgcGF0aG5hbWUsIG5vZGUsIGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdChub2RlKSkpOwotCi0JaW5mby0+bm9kZSA9IG5vZGU7Ci0Jc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZV9ieV9oYW5kbGUoaW5mbyk7Ci0KLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLAotCQkJICAiKioqIENvbXBsZXRlZCBldmFsIG9mIG9iamVjdCAlcyAqKipcbiIsIHBhdGhuYW1lKSk7Ci0KLSAgICAgIGNsZWFudXA6Ci0JYWNwaV91dF9kZWxldGVfZ2VuZXJpY19zdGF0ZShzY29wZV9pbmZvKTsKLQotICAgICAgY2xlYW51cDE6Ci0JQUNQSV9NRU1fRlJFRShpbnRlcm5hbF9wYXRoKTsKLQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV9uc19ldmFsdWF0ZV9ieV9uYW1lCi0gKgotICogUEFSQU1FVEVSUzogIFBhdGhuYW1lICAgICAgICAtIEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSB0byB0aGUgb2JqZWN0Ci0gKiAgICAgICAgICAgICAgSW5mbyAgICAgICAgICAgICAgICAtIE1ldGhvZCBpbmZvIGJsb2NrLCBjb250YWluczoKLSAqICAgICAgICAgICAgICAgICAgcmV0dXJuX29iamVjdCAgIC0gV2hlcmUgdG8gcHV0IG1ldGhvZCdzIHJldHVybiB2YWx1ZSAoaWYKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55KS4gIElmIE5VTEwsIG5vIHZhbHVlIGlzIHJldHVybmVkLgotICogICAgICAgICAgICAgICAgICBQYXJhbXMgICAgICAgICAgLSBMaXN0IG9mIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgbWV0aG9kLAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVkIGJ5IE5VTEwuICBQYXJhbXMgaXRzZWxmIG1heSBiZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIGlmIG5vIHBhcmFtZXRlcnMgYXJlIGJlaW5nIHBhc3NlZC4KLSAqCi0gKiBSRVRVUk46ICAgICAgU3RhdHVzCi0gKgotICogREVTQ1JJUFRJT046IEV2YWx1YXRlIHRoZSBvYmplY3Qgb3IgcmluZCBhbmQgZXhlY3V0ZSB0aGUgcmVxdWVzdGVkIG1ldGhvZAotICogICAgICAgICAgICAgIHBhc3NpbmcgdGhlIGdpdmVuIHBhcmFtZXRlcnMKLSAqCi0gKiBNVVRFWDogICAgICAgTG9ja3MgTmFtZXNwYWNlCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotYWNwaV9zdGF0dXMKLWFjcGlfbnNfZXZhbHVhdGVfYnlfbmFtZShjaGFyICpwYXRobmFtZSwgc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gKmluZm8pCi17Ci0JYWNwaV9zdGF0dXMgc3RhdHVzOwotCWNoYXIgKmludGVybmFsX3BhdGggPSBOVUxMOwotCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfZXZhbHVhdGVfYnlfbmFtZSIpOwotCi0JLyogQnVpbGQgYW4gaW50ZXJuYWwgbmFtZSBzdHJpbmcgZm9yIHRoZSBtZXRob2QgKi8KLQotCXN0YXR1cyA9IGFjcGlfbnNfaW50ZXJuYWxpemVfbmFtZShwYXRobmFtZSwgJmludGVybmFsX3BhdGgpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLQl9Ci0KLQlzdGF0dXMgPSBhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJZ290byBjbGVhbnVwOwotCX0KLQotCS8qIExvb2t1cCB0aGUgbmFtZSBpbiB0aGUgbmFtZXNwYWNlICovCi0KLQlzdGF0dXMgPSBhY3BpX25zX2xvb2t1cChOVUxMLCBpbnRlcm5hbF9wYXRoLCBBQ1BJX1RZUEVfQU5ZLAotCQkJCUFDUElfSU1PREVfRVhFQ1VURSwgQUNQSV9OU19OT19VUFNFQVJDSCwgTlVMTCwKLQkJCQkmaW5mby0+bm9kZSk7Ci0KLQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLAotCQkJCSAgIk9iamVjdCBhdCBbJXNdIHdhcyBub3QgZm91bmQsIHN0YXR1cz0lLjRYXG4iLAotCQkJCSAgcGF0aG5hbWUsIHN0YXR1cykpOwotCQlnb3RvIGNsZWFudXA7Ci0JfQotCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBoYXZlIGEgaGFuZGxlIHRvIHRoZSBvYmplY3QsIHdlIGNhbiBhdHRlbXB0IHRvIGV2YWx1YXRlIGl0LgotCSAqLwotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTkFNRVMsICIlcyBbJXBdIFZhbHVlICVwXG4iLAotCQkJICBwYXRobmFtZSwgaW5mby0+bm9kZSwKLQkJCSAgYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KGluZm8tPm5vZGUpKSk7Ci0KLQlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlX2J5X2hhbmRsZShpbmZvKTsKLQotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTkFNRVMsCi0JCQkgICIqKiogQ29tcGxldGVkIGV2YWwgb2Ygb2JqZWN0ICVzICoqKlxuIiwgcGF0aG5hbWUpKTsKLQotICAgICAgY2xlYW51cDoKLQotCS8qIENsZWFudXAgKi8KLQotCWlmIChpbnRlcm5hbF9wYXRoKSB7Ci0JCUFDUElfTUVNX0ZSRUUoaW50ZXJuYWxfcGF0aCk7Ci0JfQotCi0JcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogRlVOQ1RJT046ICAgIGFjcGlfbnNfZXZhbHVhdGVfYnlfaGFuZGxlCi0gKgotICogUEFSQU1FVEVSUzogIEluZm8gICAgICAgICAgICAtIE1ldGhvZCBpbmZvIGJsb2NrLCBjb250YWluczoKLSAqICAgICAgICAgICAgICAgICAgTm9kZSAgICAgICAgICAgIC0gTWV0aG9kL09iamVjdCBOb2RlIHRvIGV4ZWN1dGUKKyAqIFBBUkFNRVRFUlM6ICBJbmZvICAgICAgICAgICAgLSBFdmFsdWF0aW9uIGluZm8gYmxvY2ssIGNvbnRhaW5zOgorICogICAgICAgICAgICAgICAgICBwcmVmaXhfbm9kZSAgICAgLSBQcmVmaXggb3IgTWV0aG9kL09iamVjdCBOb2RlIHRvIGV4ZWN1dGUKKyAqICAgICAgICAgICAgICAgICAgUGF0aG5hbWUgICAgICAgIC0gTmFtZSBvZiBtZXRob2QgdG8gZXhlY3V0ZSwgSWYgTlVMTCwgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgaXMgdGhlIG9iamVjdCB0byBleGVjdXRlCiAgKiAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgICAgICAtIExpc3Qgb2YgcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSBtZXRob2QsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgYnkgTlVMTC4gUGFyYW1zIGl0c2VsZiBtYXkgYmUKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCBpZiBubyBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQuCkBAIC0yNDgsMjkgKzY1LDIxIEBACiAgKiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcl90eXBlICAtIFR5cGUgb2YgUGFyYW1ldGVyIGxpc3QKICAqICAgICAgICAgICAgICAgICAgcmV0dXJuX29iamVjdCAgIC0gV2hlcmUgdG8gcHV0IG1ldGhvZCdzIHJldHVybiB2YWx1ZSAoaWYKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55KS4gSWYgTlVMTCwgbm8gdmFsdWUgaXMgcmV0dXJuZWQuCisgKiAgICAgICAgICAgICAgICAgIEZsYWdzICAgICAgICAgICAtIEFDUElfSUdOT1JFX1JFVFVSTl9WQUxVRSB0byBkZWxldGUgcmV0dXJuCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKLSAqIERFU0NSSVBUSU9OOiBFdmFsdWF0ZSBvYmplY3Qgb3IgZXhlY3V0ZSB0aGUgcmVxdWVzdGVkIG1ldGhvZCBwYXNzaW5nIHRoZQotICogICAgICAgICAgICAgIGdpdmVuIHBhcmFtZXRlcnMKKyAqIERFU0NSSVBUSU9OOiBFeGVjdXRlIGEgY29udHJvbCBtZXRob2Qgb3IgcmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIGFuCisgKiAgICAgICAgICAgICAgQUNQSSBuYW1lc3BhY2Ugb2JqZWN0LgogICoKLSAqIE1VVEVYOiAgICAgICBMb2NrcyBOYW1lc3BhY2UKKyAqIE1VVEVYOiAgICAgICBMb2NrcyBpbnRlcnByZXRlcgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLWFjcGlfc3RhdHVzIGFjcGlfbnNfZXZhbHVhdGVfYnlfaGFuZGxlKHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvKQorYWNwaV9zdGF0dXMgYWNwaV9uc19ldmFsdWF0ZShzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2V2YWx1YXRlX2J5X2hhbmRsZSIpOwotCi0JLyogQ2hlY2sgaWYgbmFtZXNwYWNlIGhhcyBiZWVuIGluaXRpYWxpemVkICovCi0KLQlpZiAoIWFjcGlfZ2JsX3Jvb3Rfbm9kZSkgewotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTkFNRVNQQUNFKTsKLQl9Ci0KLQkvKiBQYXJhbWV0ZXIgVmFsaWRhdGlvbiAqLworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZXZhbHVhdGUpOwogCiAJaWYgKCFpbmZvKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKQEAgLTI4MCwyMDIgKzg5LDEyMCBAQAogCiAJaW5mby0+cmV0dXJuX29iamVjdCA9IE5VTEw7CiAKLQkvKiBHZXQgdGhlIHByZWZpeCBoYW5kbGUgYW5kIE5vZGUgKi8KLQotCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9OQU1FU1BBQ0UpOworCS8qCisJICogR2V0IHRoZSBhY3R1YWwgbmFtZXNwYWNlIG5vZGUgZm9yIHRoZSB0YXJnZXQgb2JqZWN0LiBIYW5kbGVzIHRoZXNlIGNhc2VzOgorCSAqCisJICogMSkgTnVsbCBub2RlLCBQYXRobmFtZSAoYWJzb2x1dGUgcGF0aCkKKwkgKiAyKSBOb2RlLCBQYXRobmFtZSAocGF0aCByZWxhdGl2ZSB0byBOb2RlKQorCSAqIDMpIE5vZGUsIE51bGwgUGF0aG5hbWUKKwkgKi8KKwlzdGF0dXMgPSBhY3BpX25zX2dldF9ub2RlKGluZm8tPnByZWZpeF9ub2RlLCBpbmZvLT5wYXRobmFtZSwKKwkJCQkgIEFDUElfTlNfTk9fVVBTRUFSQ0gsICZpbmZvLT5yZXNvbHZlZF9ub2RlKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCi0JaW5mby0+bm9kZSA9IGFjcGlfbnNfbWFwX2hhbmRsZV90b19ub2RlKGluZm8tPm5vZGUpOwotCWlmICghaW5mby0+bm9kZSkgewotCQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwotCX0KLQogCS8qCiAJICogRm9yIGEgbWV0aG9kIGFsaWFzLCB3ZSBtdXN0IGdyYWIgdGhlIGFjdHVhbCBtZXRob2Qgbm9kZSBzbyB0aGF0IHByb3BlcgogCSAqIHNjb3BpbmcgY29udGV4dCB3aWxsIGJlIGVzdGFibGlzaGVkIGJlZm9yZSBleGVjdXRpb24uCiAJICovCi0JaWYgKGFjcGlfbnNfZ2V0X3R5cGUoaW5mby0+bm9kZSkgPT0gQUNQSV9UWVBFX0xPQ0FMX01FVEhPRF9BTElBUykgewotCQlpbmZvLT5ub2RlID0KKwlpZiAoYWNwaV9uc19nZXRfdHlwZShpbmZvLT5yZXNvbHZlZF9ub2RlKSA9PQorCSAgICBBQ1BJX1RZUEVfTE9DQUxfTUVUSE9EX0FMSUFTKSB7CisJCWluZm8tPnJlc29sdmVkX25vZGUgPQogCQkgICAgQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSwKLQkJCQkgIGluZm8tPm5vZGUtPm9iamVjdCk7CisJCQkJICBpbmZvLT5yZXNvbHZlZF9ub2RlLT5vYmplY3QpOwogCX0KIAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTkFNRVMsICIlcyBbJXBdIFZhbHVlICVwXG4iLCBpbmZvLT5wYXRobmFtZSwKKwkJCSAgaW5mby0+cmVzb2x2ZWRfbm9kZSwKKwkJCSAgYWNwaV9uc19nZXRfYXR0YWNoZWRfb2JqZWN0KGluZm8tPnJlc29sdmVkX25vZGUpKSk7CisKIAkvKgogCSAqIFR3byBtYWpvciBjYXNlcyBoZXJlOgotCSAqIDEpIFRoZSBvYmplY3QgaXMgYW4gYWN0dWFsIGNvbnRyb2wgbWV0aG9kIC0tIGV4ZWN1dGUgaXQuCi0JICogMikgVGhlIG9iamVjdCBpcyBub3QgYSBtZXRob2QgLS0ganVzdCByZXR1cm4gaXQncyBjdXJyZW50IHZhbHVlCiAJICoKLQkgKiBJbiBib3RoIGNhc2VzLCB0aGUgbmFtZXNwYWNlIGlzIHVubG9ja2VkIGJ5IHRoZSBhY3BpX25zKiBwcm9jZWR1cmUKKwkgKiAxKSBUaGUgb2JqZWN0IGlzIGEgY29udHJvbCBtZXRob2QgLS0gZXhlY3V0ZSBpdAorCSAqIDIpIFRoZSBvYmplY3QgaXMgbm90IGEgbWV0aG9kIC0tIGp1c3QgcmV0dXJuIGl0J3MgY3VycmVudCB2YWx1ZQogCSAqLwotCWlmIChhY3BpX25zX2dldF90eXBlKGluZm8tPm5vZGUpID09IEFDUElfVFlQRV9NRVRIT0QpIHsKKwlpZiAoYWNwaV9uc19nZXRfdHlwZShpbmZvLT5yZXNvbHZlZF9ub2RlKSA9PSBBQ1BJX1RZUEVfTUVUSE9EKSB7CiAJCS8qCi0JCSAqIENhc2UgMSkgV2UgaGF2ZSBhbiBhY3R1YWwgY29udHJvbCBtZXRob2QgdG8gZXhlY3V0ZQorCQkgKiAxKSBPYmplY3QgaXMgYSBjb250cm9sIG1ldGhvZCAtIGV4ZWN1dGUgaXQKIAkJICovCi0JCXN0YXR1cyA9IGFjcGlfbnNfZXhlY3V0ZV9jb250cm9sX21ldGhvZChpbmZvKTsKKworCQkvKiBWZXJpZnkgdGhhdCB0aGVyZSBpcyBhIG1ldGhvZCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbm9kZSAqLworCisJCWluZm8tPm9ial9kZXNjID0KKwkJICAgIGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdChpbmZvLT5yZXNvbHZlZF9ub2RlKTsKKwkJaWYgKCFpbmZvLT5vYmpfZGVzYykgeworCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKKwkJCQkgICAgIkNvbnRyb2wgbWV0aG9kIGhhcyBubyBhdHRhY2hlZCBzdWItb2JqZWN0IikpOworCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05VTExfT0JKRUNUKTsKKwkJfQorCisJCUFDUElfRFVNUF9QQVRITkFNRShpbmZvLT5yZXNvbHZlZF9ub2RlLCAiRXhlY3V0ZSBNZXRob2Q6IiwKKwkJCQkgICBBQ1BJX0xWX0lORk8sIF9DT01QT05FTlQpOworCisJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKKwkJCQkgICJNZXRob2QgYXQgQU1MIGFkZHJlc3MgJXAgTGVuZ3RoICVYXG4iLAorCQkJCSAgaW5mby0+b2JqX2Rlc2MtPm1ldGhvZC5hbWxfc3RhcnQgKyAxLAorCQkJCSAgaW5mby0+b2JqX2Rlc2MtPm1ldGhvZC5hbWxfbGVuZ3RoIC0gMSkpOworCisJCS8qCisJCSAqIEFueSBuYW1lc3BhY2UgZGVsZXRpb24gbXVzdCBhY3F1aXJlIGJvdGggdGhlIG5hbWVzcGFjZSBhbmQKKwkJICogaW50ZXJwcmV0ZXIgbG9ja3MgdG8gZW5zdXJlIHRoYXQgbm8gdGhyZWFkIGlzIHVzaW5nIHRoZSBwb3J0aW9uIG9mCisJCSAqIHRoZSBuYW1lc3BhY2UgdGhhdCBpcyBiZWluZyBkZWxldGVkLgorCQkgKgorCQkgKiBFeGVjdXRlIHRoZSBtZXRob2QgdmlhIHRoZSBpbnRlcnByZXRlci4gVGhlIGludGVycHJldGVyIGlzIGxvY2tlZAorCQkgKiBoZXJlIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIEFNTCBwYXJzZXIKKwkJICovCisJCXN0YXR1cyA9IGFjcGlfZXhfZW50ZXJfaW50ZXJwcmV0ZXIoKTsKKwkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwkJfQorCisJCXN0YXR1cyA9IGFjcGlfcHNfZXhlY3V0ZV9tZXRob2QoaW5mbyk7CisJCWFjcGlfZXhfZXhpdF9pbnRlcnByZXRlcigpOwogCX0gZWxzZSB7CiAJCS8qCi0JCSAqIENhc2UgMikgT2JqZWN0IGlzIE5PVCBhIG1ldGhvZCwganVzdCByZXR1cm4gaXRzIGN1cnJlbnQgdmFsdWUKKwkJICogMikgT2JqZWN0IGlzIG5vdCBhIG1ldGhvZCwgcmV0dXJuIGl0cyBjdXJyZW50IHZhbHVlCiAJCSAqLwotCQlzdGF0dXMgPSBhY3BpX25zX2dldF9vYmplY3RfdmFsdWUoaW5mbyk7Ci0JfQogCi0JLyoKLQkgKiBDaGVjayBpZiB0aGVyZSBpcyBhIHJldHVybiB2YWx1ZSBvbiB0aGUgc3RhY2sgdGhhdCBtdXN0IGJlIGRlYWx0IHdpdGgKLQkgKi8KLQlpZiAoc3RhdHVzID09IEFFX0NUUkxfUkVUVVJOX1ZBTFVFKSB7Ci0JCS8qIE1hcCBBRV9DVFJMX1JFVFVSTl9WQUxVRSB0byBBRV9PSywgd2UgYXJlIGRvbmUgd2l0aCBpdCAqLworCQkvKgorCQkgKiBPYmplY3RzIHJlcXVpcmUgYWRkaXRpb25hbCByZXNvbHV0aW9uIHN0ZXBzIChlLmcuLCB0aGUgTm9kZSBtYXkgYmUKKwkJICogYSBmaWVsZCB0aGF0IG11c3QgYmUgcmVhZCwgZXRjLikgLS0gd2UgY2FuJ3QganVzdCBncmFiIHRoZSBvYmplY3QKKwkJICogb3V0IG9mIHRoZSBub2RlLgorCQkgKgorCQkgKiBVc2UgcmVzb2x2ZV9ub2RlX3RvX3ZhbHVlKCkgdG8gZ2V0IHRoZSBhc3NvY2lhdGVkIHZhbHVlLgorCQkgKgorCQkgKiBOT1RFOiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBwYXNzaW5nIGluIE5VTEwgZm9yIGEgd2FsayBzdGF0ZSBiZWNhdXNlCisJCSAqIHJlc29sdmVkX25vZGUgaXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSByZWZlcmVuY2UgdG8gZWl0aGVyIGEgbWV0aG9kCisJCSAqIGxvY2FsIG9yIGEgbWV0aG9kIGFyZ3VtZW50IChiZWNhdXNlIHRoaXMgaW50ZXJmYWNlIGlzIG5ldmVyIGNhbGxlZAorCQkgKiBmcm9tIGEgcnVubmluZyBtZXRob2QuKQorCQkgKgorCQkgKiBFdmVuIHRob3VnaCB3ZSBkbyBub3QgZGlyZWN0bHkgaW52b2tlIHRoZSBpbnRlcnByZXRlciBmb3Igb2JqZWN0CisJCSAqIHJlc29sdXRpb24sIHdlIG11c3QgbG9jayBpdCBiZWNhdXNlIHdlIGNvdWxkIGFjY2VzcyBhbiBvcHJlZ2lvbi4KKwkJICogVGhlIG9wcmVnaW9uIGFjY2VzcyBjb2RlIGFzc3VtZXMgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgbG9ja2VkLgorCQkgKi8KKwkJc3RhdHVzID0gYWNwaV9leF9lbnRlcl9pbnRlcnByZXRlcigpOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworCQl9CiAKLQkJc3RhdHVzID0gQUVfT0s7Ci0JfQorCQkvKiBGdW5jdGlvbiBoYXMgYSBzdHJhbmdlIGludGVyZmFjZSAqLwogCi0JLyoKLQkgKiBOYW1lc3BhY2Ugd2FzIHVubG9ja2VkIGJ5IHRoZSBoYW5kbGluZyBhY3BpX25zKiBmdW5jdGlvbiwgc28gd2UKLQkgKiBqdXN0IHJldHVybgotCSAqLwotCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotfQorCQlzdGF0dXMgPQorCQkgICAgYWNwaV9leF9yZXNvbHZlX25vZGVfdG9fdmFsdWUoJmluZm8tPnJlc29sdmVkX25vZGUsIE5VTEwpOworCQlhY3BpX2V4X2V4aXRfaW50ZXJwcmV0ZXIoKTsKIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV9uc19leGVjdXRlX2NvbnRyb2xfbWV0aG9kCi0gKgotICogUEFSQU1FVEVSUzogIEluZm8gICAgICAgICAgICAtIE1ldGhvZCBpbmZvIGJsb2NrLCBjb250YWluczoKLSAqICAgICAgICAgICAgICAgICAgTm9kZSAgICAgICAgICAgIC0gTWV0aG9kIE5vZGUgdG8gZXhlY3V0ZQotICogICAgICAgICAgICAgICAgICBvYmpfZGVzYyAgICAgICAgLSBNZXRob2Qgb2JqZWN0Ci0gKiAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgICAgICAtIExpc3Qgb2YgcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSBtZXRob2QsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgYnkgTlVMTC4gUGFyYW1zIGl0c2VsZiBtYXkgYmUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCBpZiBubyBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQuCi0gKiAgICAgICAgICAgICAgICAgIHJldHVybl9vYmplY3QgICAtIFdoZXJlIHRvIHB1dCBtZXRob2QncyByZXR1cm4gdmFsdWUgKGlmCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSkuIElmIE5VTEwsIG5vIHZhbHVlIGlzIHJldHVybmVkLgotICogICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfdHlwZSAgLSBUeXBlIG9mIFBhcmFtZXRlciBsaXN0Ci0gKiAgICAgICAgICAgICAgICAgIHJldHVybl9vYmplY3QgICAtIFdoZXJlIHRvIHB1dCBtZXRob2QncyByZXR1cm4gdmFsdWUgKGlmCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSkuIElmIE5VTEwsIG5vIHZhbHVlIGlzIHJldHVybmVkLgotICoKLSAqIFJFVFVSTjogICAgICBTdGF0dXMKLSAqCi0gKiBERVNDUklQVElPTjogRXhlY3V0ZSB0aGUgcmVxdWVzdGVkIG1ldGhvZCBwYXNzaW5nIHRoZSBnaXZlbiBwYXJhbWV0ZXJzCi0gKgotICogTVVURVg6ICAgICAgIEFzc3VtZXMgbmFtZXNwYWNlIGlzIGxvY2tlZAotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBhY3BpX3N0YXR1cwotYWNwaV9uc19leGVjdXRlX2NvbnRyb2xfbWV0aG9kKHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvKQotewotCWFjcGlfc3RhdHVzIHN0YXR1czsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2V4ZWN1dGVfY29udHJvbF9tZXRob2QiKTsKLQotCS8qIFZlcmlmeSB0aGF0IHRoZXJlIGlzIGEgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdCAqLwotCi0JaW5mby0+b2JqX2Rlc2MgPSBhY3BpX25zX2dldF9hdHRhY2hlZF9vYmplY3QoaW5mby0+bm9kZSk7Ci0JaWYgKCFpbmZvLT5vYmpfZGVzYykgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiTm8gYXR0YWNoZWQgbWV0aG9kIG9iamVjdCIpKTsKLQotCQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05VTExfT0JKRUNUKTsKLQl9Ci0KLQlBQ1BJX0RVTVBfUEFUSE5BTUUoaW5mby0+bm9kZSwgIkV4ZWN1dGUgTWV0aG9kOiIsCi0JCQkgICBBQ1BJX0xWX0lORk8sIF9DT01QT05FTlQpOwotCi0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FWEVDLCAiTWV0aG9kIGF0IEFNTCBhZGRyZXNzICVwIExlbmd0aCAlWFxuIiwKLQkJCSAgaW5mby0+b2JqX2Rlc2MtPm1ldGhvZC5hbWxfc3RhcnQgKyAxLAotCQkJICBpbmZvLT5vYmpfZGVzYy0+bWV0aG9kLmFtbF9sZW5ndGggLSAxKSk7Ci0KLQkvKgotCSAqIFVubG9jayB0aGUgbmFtZXNwYWNlIGJlZm9yZSBleGVjdXRpb24uICBUaGlzIGFsbG93cyBuYW1lc3BhY2UgYWNjZXNzCi0JICogdmlhIHRoZSBleHRlcm5hbCBBY3BpKiBpbnRlcmZhY2VzIHdoaWxlIGEgbWV0aG9kIGlzIGJlaW5nIGV4ZWN1dGVkLgotCSAqIEhvd2V2ZXIsIGFueSBuYW1lc3BhY2UgZGVsZXRpb24gbXVzdCBhY3F1aXJlIGJvdGggdGhlIG5hbWVzcGFjZSBhbmQKLQkgKiBpbnRlcnByZXRlciBsb2NrcyB0byBlbnN1cmUgdGhhdCBubyB0aHJlYWQgaXMgdXNpbmcgdGhlIHBvcnRpb24gb2YgdGhlCi0JICogbmFtZXNwYWNlIHRoYXQgaXMgYmVpbmcgZGVsZXRlZC4KLQkgKi8KLQlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JfQotCi0JLyoKLQkgKiBFeGVjdXRlIHRoZSBtZXRob2QgdmlhIHRoZSBpbnRlcnByZXRlci4gIFRoZSBpbnRlcnByZXRlciBpcyBsb2NrZWQKLQkgKiBoZXJlIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIEFNTCBwYXJzZXIKLQkgKi8KLQlzdGF0dXMgPSBhY3BpX2V4X2VudGVyX2ludGVycHJldGVyKCk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotCX0KLQotCXN0YXR1cyA9IGFjcGlfcHNfZXhlY3V0ZV9tZXRob2QoaW5mbyk7Ci0JYWNwaV9leF9leGl0X2ludGVycHJldGVyKCk7Ci0KLQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV9uc19nZXRfb2JqZWN0X3ZhbHVlCi0gKgotICogUEFSQU1FVEVSUzogIEluZm8gICAgICAgICAgICAtIE1ldGhvZCBpbmZvIGJsb2NrLCBjb250YWluczoKLSAqICAgICAgICAgICAgICAgICAgTm9kZSAgICAgICAgICAgIC0gT2JqZWN0J3MgTlMgbm9kZQotICogICAgICAgICAgICAgICAgICByZXR1cm5fb2JqZWN0ICAgLSBXaGVyZSB0byBwdXQgb2JqZWN0IHZhbHVlIChpZgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkpLiBJZiBOVUxMLCBubyB2YWx1ZSBpcyByZXR1cm5lZC4KLSAqCi0gKiBSRVRVUk46ICAgICAgU3RhdHVzCi0gKgotICogREVTQ1JJUFRJT046IFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb2JqZWN0Ci0gKgotICogTVVURVg6ICAgICAgIEFzc3VtZXMgbmFtZXNwYWNlIGlzIGxvY2tlZCwgbGVhdmVzIG5hbWVzcGFjZSB1bmxvY2tlZAotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBhY3BpX3N0YXR1cyBhY3BpX25zX2dldF9vYmplY3RfdmFsdWUoc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gKmluZm8pCi17Ci0JYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnJlc29sdmVkX25vZGUgPSBpbmZvLT5ub2RlOwotCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfZ2V0X29iamVjdF92YWx1ZSIpOwotCi0JLyoKLQkgKiBPYmplY3RzIHJlcXVpcmUgYWRkaXRpb25hbCByZXNvbHV0aW9uIHN0ZXBzIChlLmcuLCB0aGUgTm9kZSBtYXkgYmUgYQotCSAqIGZpZWxkIHRoYXQgbXVzdCBiZSByZWFkLCBldGMuKSAtLSB3ZSBjYW4ndCBqdXN0IGdyYWIgdGhlIG9iamVjdCBvdXQgb2YKLQkgKiB0aGUgbm9kZS4KLQkgKi8KLQotCS8qCi0JICogVXNlIHJlc29sdmVfbm9kZV90b192YWx1ZSgpIHRvIGdldCB0aGUgYXNzb2NpYXRlZCB2YWx1ZS4gVGhpcyBjYWxsIGFsd2F5cwotCSAqIGRlbGV0ZXMgb2JqX2Rlc2MgKGFsbG9jYXRlZCBhYm92ZSkuCi0JICoKLQkgKiBOT1RFOiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBwYXNzaW5nIGluIE5VTEwgZm9yIGEgd2FsayBzdGF0ZSBiZWNhdXNlCi0JICogb2JqX2Rlc2MgaXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSByZWZlcmVuY2UgdG8gZWl0aGVyIGEgbWV0aG9kIGxvY2FsIG9yCi0JICogYSBtZXRob2QgYXJndW1lbnQgKGJlY2F1c2UgdGhpcyBpbnRlcmZhY2UgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlCi0JICogYWNwaV9ldmFsdWF0ZSBleHRlcm5hbCBpbnRlcmZhY2UsIG5ldmVyIGNhbGxlZCBmcm9tIGEgcnVubmluZyBtZXRob2QuKQotCSAqCi0JICogRXZlbiB0aG91Z2ggd2UgZG8gbm90IGRpcmVjdGx5IGludm9rZSB0aGUgaW50ZXJwcmV0ZXIgZm9yIHRoaXMsIHdlIG11c3QKLQkgKiBlbnRlciBpdCBiZWNhdXNlIHdlIGNvdWxkIGFjY2VzcyBhbiBvcHJlZ2lvbi4gVGhlIG9wcmVnaW9uIGFjY2VzcyBjb2RlCi0JICogYXNzdW1lcyB0aGF0IHRoZSBpbnRlcnByZXRlciBpcyBsb2NrZWQuCi0JICoKLQkgKiBXZSBtdXN0IHJlbGVhc2UgdGhlIG5hbWVzcGFjZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgaW50ZXByZXRlci4KLQkgKi8KLQlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JfQotCi0Jc3RhdHVzID0gYWNwaV9leF9lbnRlcl9pbnRlcnByZXRlcigpOwotCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewotCQlzdGF0dXMgPSBhY3BpX2V4X3Jlc29sdmVfbm9kZV90b192YWx1ZSgmcmVzb2x2ZWRfbm9kZSwgTlVMTCk7CiAJCS8qCiAJCSAqIElmIGFjcGlfZXhfcmVzb2x2ZV9ub2RlX3RvX3ZhbHVlKCkgc3VjY2VlZGVkLCB0aGUgcmV0dXJuIHZhbHVlIHdhcyBwbGFjZWQKIAkJICogaW4gcmVzb2x2ZWRfbm9kZS4KIAkJICovCi0JCWFjcGlfZXhfZXhpdF9pbnRlcnByZXRlcigpOwotCiAJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewogCQkJc3RhdHVzID0gQUVfQ1RSTF9SRVRVUk5fVkFMVUU7Ci0JCQlpbmZvLT5yZXR1cm5fb2JqZWN0ID0gQUNQSV9DQVNUX1BUUgotCQkJICAgICh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0LCByZXNvbHZlZF9ub2RlKTsKKwkJCWluZm8tPnJldHVybl9vYmplY3QgPQorCQkJICAgIEFDUElfQ0FTVF9QVFIodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCwKKwkJCQkJICBpbmZvLT5yZXNvbHZlZF9ub2RlKTsKKwogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9OQU1FUywKIAkJCQkJICAiUmV0dXJuaW5nIG9iamVjdCAlcCBbJXNdXG4iLAogCQkJCQkgIGluZm8tPnJldHVybl9vYmplY3QsCkBAIC00ODQsNyArMjExLDMwIEBACiAJCX0KIAl9CiAKLQkvKiBOYW1lc3BhY2UgaXMgdW5sb2NrZWQgKi8KKwkvKgorCSAqIENoZWNrIGlmIHRoZXJlIGlzIGEgcmV0dXJuIHZhbHVlIHRoYXQgbXVzdCBiZSBkZWFsdCB3aXRoCisJICovCisJaWYgKHN0YXR1cyA9PSBBRV9DVFJMX1JFVFVSTl9WQUxVRSkgewogCisJCS8qIElmIGNhbGxlciBkb2VzIG5vdCB3YW50IHRoZSByZXR1cm4gdmFsdWUsIGRlbGV0ZSBpdCAqLworCisJCWlmIChpbmZvLT5mbGFncyAmIEFDUElfSUdOT1JFX1JFVFVSTl9WQUxVRSkgeworCQkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGluZm8tPnJldHVybl9vYmplY3QpOworCQkJaW5mby0+cmV0dXJuX29iamVjdCA9IE5VTEw7CisJCX0KKworCQkvKiBNYXAgQUVfQ1RSTF9SRVRVUk5fVkFMVUUgdG8gQUVfT0ssIHdlIGFyZSBkb25lIHdpdGggaXQgKi8KKworCQlzdGF0dXMgPSBBRV9PSzsKKwl9CisKKwlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLAorCQkJICAiKioqIENvbXBsZXRlZCBldmFsdWF0aW9uIG9mIG9iamVjdCAlcyAqKipcbiIsCisJCQkgIGluZm8tPnBhdGhuYW1lKSk7CisKKwkvKgorCSAqIE5hbWVzcGFjZSB3YXMgdW5sb2NrZWQgYnkgdGhlIGhhbmRsaW5nIGFjcGlfbnMqIGZ1bmN0aW9uLCBzbyB3ZQorCSAqIGp1c3QgcmV0dXJuCisJICovCiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zaW5pdC5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2luaXQuYwppbmRleCA5ZjkyOWU0Li5hZWM4NDg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zaW5pdC5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNpbml0LmMKQEAgLTU4LDYgKzU4LDEwIEBACiBhY3BpX25zX2luaXRfb25lX2RldmljZShhY3BpX2hhbmRsZSBvYmpfaGFuZGxlLAogCQkJdTMyIG5lc3RpbmdfbGV2ZWwsIHZvaWQgKmNvbnRleHQsIHZvaWQgKipyZXR1cm5fdmFsdWUpOwogCitzdGF0aWMgYWNwaV9zdGF0dXMKK2FjcGlfbnNfZmluZF9pbmlfbWV0aG9kcyhhY3BpX2hhbmRsZSBvYmpfaGFuZGxlLAorCQkJIHUzMiBuZXN0aW5nX2xldmVsLCB2b2lkICpjb250ZXh0LCB2b2lkICoqcmV0dXJuX3ZhbHVlKTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9uc19pbml0aWFsaXplX29iamVjdHMKQEAgLTc2LDcgKzgwLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfaW5pdF93YWxrX2luZm8gaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2luaXRpYWxpemVfb2JqZWN0cyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfaW5pdGlhbGl6ZV9vYmplY3RzKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRElTUEFUQ0gsCiAJCQkgICIqKioqIFN0YXJ0aW5nIGluaXRpYWxpemF0aW9uIG9mIG5hbWVzcGFjZSBvYmplY3RzICoqKipcbiIpKTsKQEAgLTkzLDcgKzk3LDcgQEAKIAkJCQkgICAgIEFDUElfVUlOVDMyX01BWCwgYWNwaV9uc19pbml0X29uZV9vYmplY3QsCiAJCQkJICAgICAmaW5mbywgTlVMTCk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJEdXJpbmcgd2Fsa19uYW1lc3BhY2UiKSk7CisJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJEdXJpbmcgV2Fsa05hbWVzcGFjZSIpKTsKIAl9CiAKIAlBQ1BJX0RFQlVHX1BSSU5UX1JBVygoQUNQSV9EQl9JTklULApAQCAtMTMzLDcgKzEzNyw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXN0cnVjdCBhY3BpX2RldmljZV93YWxrX2luZm8gaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2luaXRpYWxpemVfZGV2aWNlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfaW5pdGlhbGl6ZV9kZXZpY2VzKTsKIAogCS8qIEluaXQgY291bnRlcnMgKi8KIApAQCAtMTQyLDMwICsxNDYsNDYgQEAKIAlpbmZvLm51bV9JTkkgPSAwOwogCiAJQUNQSV9ERUJVR19QUklOVF9SQVcoKEFDUElfREJfSU5JVCwKLQkJCSAgICAgICJFeGVjdXRpbmcgYWxsIERldmljZSBfU1RBIGFuZF9JTkkgbWV0aG9kczoiKSk7CisJCQkgICAgICAiSW5pdGlhbGl6aW5nIERldmljZS9Qcm9jZXNzb3IvVGhlcm1hbCBvYmplY3RzIGJ5IGV4ZWN1dGluZyBfSU5JIG1ldGhvZHM6IikpOwogCi0Jc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX05BTUVTUEFDRSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotCX0KLQotCS8qIFdhbGsgbmFtZXNwYWNlIGZvciBhbGwgb2JqZWN0cyAqLworCS8qIFRyZWUgYW5hbHlzaXM6IGZpbmQgYWxsIHN1YnRyZWVzIHRoYXQgY29udGFpbiBfSU5JIG1ldGhvZHMgKi8KIAogCXN0YXR1cyA9IGFjcGlfbnNfd2Fsa19uYW1lc3BhY2UoQUNQSV9UWVBFX0FOWSwgQUNQSV9ST09UX09CSkVDVCwKLQkJCQkJQUNQSV9VSU5UMzJfTUFYLCBUUlVFLAorCQkJCQlBQ1BJX1VJTlQzMl9NQVgsIEZBTFNFLAorCQkJCQlhY3BpX25zX2ZpbmRfaW5pX21ldGhvZHMsICZpbmZvLCBOVUxMKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJZ290byBlcnJvcl9leGl0OworCX0KKworCS8qIEFsbG9jYXRlIHRoZSBldmFsdWF0aW9uIGluZm9ybWF0aW9uIGJsb2NrICovCisKKwlpbmZvLmV2YWx1YXRlX2luZm8gPQorCSAgICBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzaXplb2Yoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbykpOworCWlmICghaW5mby5ldmFsdWF0ZV9pbmZvKSB7CisJCXN0YXR1cyA9IEFFX05PX01FTU9SWTsKKwkJZ290byBlcnJvcl9leGl0OworCX0KKworCS8qIFdhbGsgbmFtZXNwYWNlIHRvIGV4ZWN1dGUgYWxsIF9JTklzIG9uIHByZXNlbnQgZGV2aWNlcyAqLworCisJc3RhdHVzID0gYWNwaV9uc193YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfQU5ZLCBBQ1BJX1JPT1RfT0JKRUNULAorCQkJCQlBQ1BJX1VJTlQzMl9NQVgsIEZBTFNFLAogCQkJCQlhY3BpX25zX2luaXRfb25lX2RldmljZSwgJmluZm8sIE5VTEwpOwogCi0JKHZvaWQpYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX05BTUVTUEFDRSk7Ci0KKwlBQ1BJX0ZSRUUoaW5mby5ldmFsdWF0ZV9pbmZvKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJQUNQSV9FWENFUFRJT04oKEFFX0lORk8sIHN0YXR1cywgIkR1cmluZyB3YWxrX25hbWVzcGFjZSIpKTsKKwkJZ290byBlcnJvcl9leGl0OwogCX0KIAogCUFDUElfREVCVUdfUFJJTlRfUkFXKChBQ1BJX0RCX0lOSVQsCi0JCQkgICAgICAiXG4laGQgRGV2aWNlcyBmb3VuZCAtIGV4ZWN1dGVkICVoZCBfU1RBLCAlaGQgX0lOSSBtZXRob2RzXG4iLAotCQkJICAgICAgaW5mby5kZXZpY2VfY291bnQsIGluZm8ubnVtX1NUQSwgaW5mby5udW1fSU5JKSk7CisJCQkgICAgICAiXG5FeGVjdXRlZCAlaGQgX0lOSSBtZXRob2RzIHJlcXVpcmluZyAlaGQgX1NUQSBleGVjdXRpb25zIChleGFtaW5lZCAlaGQgb2JqZWN0cylcbiIsCisJCQkgICAgICBpbmZvLm51bV9JTkksIGluZm8ubnVtX1NUQSwgaW5mby5kZXZpY2VfY291bnQpKTsKIAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworCisgICAgICBlcnJvcl9leGl0OgorCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJEdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIikpOworCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjAwLDcgKzIyMCw3IEBACiAJICAgIChzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKW9ial9oYW5kbGU7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoIm5zX2luaXRfb25lX29iamVjdCIpOworCUFDUElfRlVOQ1RJT05fTkFNRShuc19pbml0X29uZV9vYmplY3QpOwogCiAJaW5mby0+b2JqZWN0X2NvdW50Kys7CiAKQEAgLTMxMSw2ICszMzEsNzIgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCisgKiBGVU5DVElPTjogICAgYWNwaV9uc19maW5kX2luaV9tZXRob2RzCisgKgorICogUEFSQU1FVEVSUzogIGFjcGlfd2Fsa19jYWxsYmFjaworICoKKyAqIFJFVFVSTjogICAgICBhY3BpX3N0YXR1cworICoKKyAqIERFU0NSSVBUSU9OOiBDYWxsZWQgZHVyaW5nIG5hbWVzcGFjZSB3YWxrLiBGaW5kcyBvYmplY3RzIG5hbWVkIF9JTkkgdW5kZXIKKyAqICAgICAgICAgICAgICBkZXZpY2UvcHJvY2Vzc29yL3RoZXJtYWwgb2JqZWN0cywgYW5kIG1hcmtzIHRoZSBlbnRpcmUgc3VidHJlZQorICogICAgICAgICAgICAgIHdpdGggYSBTVUJUUkVFX0hBU19JTkkgZmxhZy4gVGhpcyBmbGFnIGlzIHVzZWQgZHVyaW5nIHRoZQorICogICAgICAgICAgICAgIHN1YnNlcXVlbnQgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdhbGsgdG8gYXZvaWQgZW50aXJlIHN1YnRyZWVzCisgKiAgICAgICAgICAgICAgdGhhdCBkbyBub3QgY29udGFpbiBhbiBfSU5JLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBhY3BpX3N0YXR1cworYWNwaV9uc19maW5kX2luaV9tZXRob2RzKGFjcGlfaGFuZGxlIG9ial9oYW5kbGUsCisJCQkgdTMyIG5lc3RpbmdfbGV2ZWwsIHZvaWQgKmNvbnRleHQsIHZvaWQgKipyZXR1cm5fdmFsdWUpCit7CisJc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbyAqaW5mbyA9CisJICAgIEFDUElfQ0FTVF9QVFIoc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbywgY29udGV4dCk7CisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnBhcmVudF9ub2RlOworCisJLyogS2VlcCBjb3VudCBvZiBkZXZpY2UvcHJvY2Vzc29yL3RoZXJtYWwgb2JqZWN0cyAqLworCisJbm9kZSA9IEFDUElfQ0FTVF9QVFIoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUsIG9ial9oYW5kbGUpOworCWlmICgobm9kZS0+dHlwZSA9PSBBQ1BJX1RZUEVfREVWSUNFKSB8fAorCSAgICAobm9kZS0+dHlwZSA9PSBBQ1BJX1RZUEVfUFJPQ0VTU09SKSB8fAorCSAgICAobm9kZS0+dHlwZSA9PSBBQ1BJX1RZUEVfVEhFUk1BTCkpIHsKKwkJaW5mby0+ZGV2aWNlX2NvdW50Kys7CisJCXJldHVybiAoQUVfT0spOworCX0KKworCS8qIFdlIGFyZSBvbmx5IGxvb2tpbmcgZm9yIG1ldGhvZHMgbmFtZWQgX0lOSSAqLworCisJaWYgKCFBQ1BJX0NPTVBBUkVfTkFNRShub2RlLT5uYW1lLmFzY2lpLCBNRVRIT0RfTkFNRV9fSU5JKSkgeworCQlyZXR1cm4gKEFFX09LKTsKKwl9CisKKwkvKgorCSAqIFRoZSBvbmx5IF9JTkkgbWV0aG9kcyB0aGF0IHdlIGNhcmUgYWJvdXQgYXJlIHRob3NlIHRoYXQgYXJlCisJICogcHJlc2VudCB1bmRlciBEZXZpY2UsIFByb2Nlc3NvciwgYW5kIFRoZXJtYWwgb2JqZWN0cy4KKwkgKi8KKwlwYXJlbnRfbm9kZSA9IGFjcGlfbnNfZ2V0X3BhcmVudF9ub2RlKG5vZGUpOworCXN3aXRjaCAocGFyZW50X25vZGUtPnR5cGUpIHsKKwljYXNlIEFDUElfVFlQRV9ERVZJQ0U6CisJY2FzZSBBQ1BJX1RZUEVfUFJPQ0VTU09SOgorCWNhc2UgQUNQSV9UWVBFX1RIRVJNQUw6CisKKwkJLyogTWFyayBwYXJlbnQgYW5kIGJ1YmJsZSB1cCB0aGUgSU5JIHByZXNlbnQgZmxhZyB0byB0aGUgcm9vdCAqLworCisJCXdoaWxlIChwYXJlbnRfbm9kZSkgeworCQkJcGFyZW50X25vZGUtPmZsYWdzIHw9IEFOT0JKX1NVQlRSRUVfSEFTX0lOSTsKKwkJCXBhcmVudF9ub2RlID0gYWNwaV9uc19nZXRfcGFyZW50X25vZGUocGFyZW50X25vZGUpOworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIChBRV9PSyk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgogICogRlVOQ1RJT046ICAgIGFjcGlfbnNfaW5pdF9vbmVfZGV2aWNlCiAgKgogICogUEFSQU1FVEVSUzogIGFjcGlfd2Fsa19jYWxsYmFjawpAQCAtMzI3LDExOSArNDEzLDE2NSBAQAogYWNwaV9uc19pbml0X29uZV9kZXZpY2UoYWNwaV9oYW5kbGUgb2JqX2hhbmRsZSwKIAkJCXUzMiBuZXN0aW5nX2xldmVsLCB2b2lkICpjb250ZXh0LCB2b2lkICoqcmV0dXJuX3ZhbHVlKQogewotCXN0cnVjdCBhY3BpX2RldmljZV93YWxrX2luZm8gKmluZm8gPQotCSAgICAoc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbyAqKWNvbnRleHQ7Ci0Jc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gcGluZm87CisJc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbyAqd2Fsa19pbmZvID0KKwkgICAgQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV9kZXZpY2Vfd2Fsa19pbmZvLCBjb250ZXh0KTsKKwlzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvID0gd2Fsa19pbmZvLT5ldmFsdWF0ZV9pbmZvOwogCXUzMiBmbGFnczsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKmluaV9ub2RlOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpkZXZpY2Vfbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2luaXRfb25lX2RldmljZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfaW5pdF9vbmVfZGV2aWNlKTsKIAotCWRldmljZV9ub2RlID0gYWNwaV9uc19tYXBfaGFuZGxlX3RvX25vZGUob2JqX2hhbmRsZSk7Ci0JaWYgKCFkZXZpY2Vfbm9kZSkgewotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7Ci0JfQorCS8qIFdlIGFyZSBpbnRlcmVzdGVkIGluIERldmljZXMsIFByb2Nlc3NvcnMgYW5kIHRoZXJtYWxfem9uZXMgb25seSAqLwogCi0JLyoKLQkgKiBXZSB3aWxsIHJ1biBfU1RBL19JTkkgb24gRGV2aWNlcywgUHJvY2Vzc29ycyBhbmQgdGhlcm1hbF96b25lcyBvbmx5Ci0JICovCisJZGV2aWNlX25vZGUgPSBBQ1BJX0NBU1RfUFRSKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlLCBvYmpfaGFuZGxlKTsKIAlpZiAoKGRldmljZV9ub2RlLT50eXBlICE9IEFDUElfVFlQRV9ERVZJQ0UpICYmCiAJICAgIChkZXZpY2Vfbm9kZS0+dHlwZSAhPSBBQ1BJX1RZUEVfUFJPQ0VTU09SKSAmJgogCSAgICAoZGV2aWNlX25vZGUtPnR5cGUgIT0gQUNQSV9UWVBFX1RIRVJNQUwpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiAJfQogCi0JaWYgKChhY3BpX2RiZ19sZXZlbCA8PSBBQ1BJX0xWX0FMTF9FWENFUFRJT05TKSAmJgotCSAgICAoIShhY3BpX2RiZ19sZXZlbCAmIEFDUElfTFZfSU5GTykpKSB7Ci0JCUFDUElfREVCVUdfUFJJTlRfUkFXKChBQ1BJX0RCX0lOSVQsICIuIikpOwotCX0KLQotCWluZm8tPmRldmljZV9jb3VudCsrOwotCiAJLyoKLQkgKiBDaGVjayBpZiB0aGUgX0lOSSBtZXRob2QgZXhpc3RzIGZvciB0aGlzIGRldmljZSAtCi0JICogaWYgX0lOSSBkb2VzIG5vdCBleGlzdCwgdGhlcmUgaXMgbm8gbmVlZCB0byBydW4gX1NUQQotCSAqIE5vIF9JTkkgbWVhbnMgZGV2aWNlIHJlcXVpcmVzIG5vIGluaXRpYWxpemF0aW9uCisJICogQmVjYXVzZSBvZiBhbiBlYXJsaWVyIG5hbWVzcGFjZSBhbmFseXNpcywgYWxsIHN1YnRyZWVzIHRoYXQgY29udGFpbiBhbgorCSAqIF9JTkkgbWV0aG9kIGFyZSB0YWdnZWQuCisJICoKKwkgKiBJZiB0aGlzIGRldmljZSBzdWJ0cmVlIGRvZXMgbm90IGNvbnRhaW4gYW55IF9JTkkgbWV0aG9kcywgd2UKKwkgKiBjYW4gZXhpdCBub3cgYW5kIHN0b3AgdHJhdmVyc2luZyB0aGlzIGVudGlyZSBzdWJ0cmVlLgogCSAqLwotCXN0YXR1cyA9IGFjcGlfbnNfc2VhcmNoX25vZGUoKkFDUElfQ0FTVF9QVFIodTMyLCBNRVRIT0RfTkFNRV9fSU5JKSwKLQkJCQkgICAgIGRldmljZV9ub2RlLCBBQ1BJX1RZUEVfTUVUSE9ELCAmaW5pX25vZGUpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkvKiBObyBfSU5JIG1ldGhvZCBmb3VuZCAtIG1vdmUgb24gdG8gbmV4dCBkZXZpY2UgKi8KLQotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwotCX0KLQotCS8qCi0JICogUnVuIF9TVEEgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBydW4gX0lOSSBvbiB0aGUgZGV2aWNlIC0KLQkgKiB0aGUgZGV2aWNlIG11c3QgYmUgcHJlc2VudCBiZWZvcmUgX0lOSSBjYW4gYmUgcnVuLgotCSAqIEhvd2V2ZXIsIF9TVEEgaXMgbm90IHJlcXVpcmVkIC0gYXNzdW1lIGRldmljZSBwcmVzZW50IGlmIG5vIF9TVEEKLQkgKi8KLQlBQ1BJX0RFQlVHX0VYRUMoYWNwaV91dF9kaXNwbGF5X2luaXRfcGF0aG5hbWUoQUNQSV9UWVBFX01FVEhPRCwKLQkJCQkJCSAgICAgIGRldmljZV9ub2RlLAotCQkJCQkJICAgICAgTUVUSE9EX05BTUVfX1NUQSkpOwotCi0JcGluZm8ubm9kZSA9IGRldmljZV9ub2RlOwotCXBpbmZvLnBhcmFtZXRlcnMgPSBOVUxMOwotCXBpbmZvLnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOwotCi0Jc3RhdHVzID0gYWNwaV91dF9leGVjdXRlX1NUQShwaW5mby5ub2RlLCAmZmxhZ3MpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkvKiBJZ25vcmUgZXJyb3IgYW5kIG1vdmUgb24gdG8gbmV4dCBkZXZpY2UgKi8KLQotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwotCX0KLQotCWlmIChmbGFncyAhPSBBQ1BJX1VJTlQzMl9NQVgpIHsKLQkJaW5mby0+bnVtX1NUQSsrOwotCX0KLQotCWlmICghKGZsYWdzICYgQUNQSV9TVEFfREVWSUNFX1BSRVNFTlQpKSB7Ci0JCS8qIERvbid0IGxvb2sgYXQgY2hpbGRyZW4gb2YgYSBub3QgcHJlc2VudCBkZXZpY2UgKi8KLQorCWlmICghKGRldmljZV9ub2RlLT5mbGFncyAmIEFOT0JKX1NVQlRSRUVfSEFTX0lOSSkpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0NUUkxfREVQVEgpOwogCX0KIAogCS8qCi0JICogVGhlIGRldmljZSBpcyBwcmVzZW50IGFuZCBfSU5JIGV4aXN0cy4gUnVuIHRoZSBfSU5JIG1ldGhvZC4KLQkgKiAoV2UgYWxyZWFkeSBoYXZlIHRoZSBfSU5JIG5vZGUgZnJvbSBhYm92ZSkKKwkgKiBSdW4gX1NUQSB0byBkZXRlcm1pbmUgaWYgdGhpcyBkZXZpY2UgaXMgcHJlc2VudCBhbmQgZnVuY3Rpb25pbmcuIFdlCisJICogbXVzdCBrbm93IHRoaXMgaW5mb3JtYXRpb24gZm9yIHR3byBpbXBvcnRhbnQgcmVhc29ucyAoZnJvbSBBQ1BJIHNwZWMpOgorCSAqCisJICogMSkgV2UgY2FuIG9ubHkgcnVuIF9JTkkgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50LgorCSAqIDIpIFdlIG11c3QgYWJvcnQgdGhlIGRldmljZSB0cmVlIHdhbGsgb24gdGhpcyBzdWJ0cmVlIGlmIHRoZSBkZXZpY2UgaXMKKwkgKiAgICBub3QgcHJlc2VudCBhbmQgaXMgbm90IGZ1bmN0aW9uYWwgKHdlIHdpbGwgbm90IGV4YW1pbmUgdGhlIGNoaWxkcmVuKQorCSAqCisJICogVGhlIF9TVEEgbWV0aG9kIGlzIG5vdCByZXF1aXJlZCB0byBiZSBwcmVzZW50IHVuZGVyIHRoZSBkZXZpY2UsIHdlCisJICogYXNzdW1lIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBpZiBfU1RBIGRvZXMgbm90IGV4aXN0LgogCSAqLwotCUFDUElfREVCVUdfRVhFQyhhY3BpX3V0X2Rpc3BsYXlfaW5pdF9wYXRobmFtZShBQ1BJX1RZUEVfTUVUSE9ELAotCQkJCQkJICAgICAgcGluZm8ubm9kZSwKLQkJCQkJCSAgICAgIE1FVEhPRF9OQU1FX19JTkkpKTsKKwlBQ1BJX0RFQlVHX0VYRUMoYWNwaV91dF9kaXNwbGF5X2luaXRfcGF0aG5hbWUKKwkJCShBQ1BJX1RZUEVfTUVUSE9ELCBkZXZpY2Vfbm9kZSwgTUVUSE9EX05BTUVfX1NUQSkpOwogCi0JcGluZm8ubm9kZSA9IGluaV9ub2RlOwotCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGVfYnlfaGFuZGxlKCZwaW5mbyk7CisJc3RhdHVzID0gYWNwaV91dF9leGVjdXRlX1NUQShkZXZpY2Vfbm9kZSwgJmZsYWdzKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkvKiBJZ25vcmUgZXJyb3IgYW5kIG1vdmUgb24gdG8gbmV4dCBkZXZpY2UgKi8KIAotI2lmZGVmIEFDUElfREVCVUdfT1VUUFVUCi0JCWNoYXIgKnNjb3BlX25hbWUgPSBhY3BpX25zX2dldF9leHRlcm5hbF9wYXRobmFtZShpbmlfbm9kZSk7CisJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CisJfQogCi0JCUFDUElfV0FSTklORygoQUVfSU5GTywgIiVzLl9JTkkgZmFpbGVkOiAlcyIsCi0JCQkgICAgICBzY29wZV9uYW1lLCBhY3BpX2Zvcm1hdF9leGNlcHRpb24oc3RhdHVzKSkpOworCS8qCisJICogRmxhZ3MgPT0gLTEgbWVhbnMgdGhhdCBfU1RBIHdhcyBub3QgZm91bmQuIEluIHRoaXMgY2FzZSwgd2UgYXNzdW1lIHRoYXQKKwkgKiB0aGUgZGV2aWNlIGlzIGJvdGggcHJlc2VudCBhbmQgZnVuY3Rpb25hbC4KKwkgKgorCSAqIEZyb20gdGhlIEFDUEkgc3BlYywgZGVzY3JpcHRpb24gb2YgX1NUQToKKwkgKgorCSAqICJJZiBhIGRldmljZSBvYmplY3QgKGluY2x1ZGluZyB0aGUgcHJvY2Vzc29yIG9iamVjdCkgZG9lcyBub3QgaGF2ZSBhbgorCSAqIF9TVEEgb2JqZWN0LCB0aGVuIE9TUE0gYXNzdW1lcyB0aGF0IGFsbCBvZiB0aGUgYWJvdmUgYml0cyBhcmUgc2V0IChpbgorCSAqIG90aGVyIHdvcmRzLCB0aGUgZGV2aWNlIGlzIHByZXNlbnQsIC4uLiwgYW5kIGZ1bmN0aW9uaW5nKSIKKwkgKi8KKwlpZiAoZmxhZ3MgIT0gQUNQSV9VSU5UMzJfTUFYKSB7CisJCXdhbGtfaW5mby0+bnVtX1NUQSsrOworCX0KIAotCQlBQ1BJX01FTV9GUkVFKHNjb3BlX25hbWUpOwotI2VuZGlmCi0JfSBlbHNlIHsKLQkJLyogRGVsZXRlIGFueSByZXR1cm4gb2JqZWN0IChlc3BlY2lhbGx5IGlmIGltcGxpY2l0X3JldHVybiBpcyBlbmFibGVkKSAqLworCS8qCisJICogRXhhbWluZSB0aGUgUFJFU0VOVCBhbmQgRlVOQ1RJT05JTkcgc3RhdHVzIGJpdHMKKwkgKgorCSAqIE5vdGU6IEFDUEkgc3BlYyBkb2VzIG5vdCBzZWVtIHRvIHNwZWNpZnkgYmVoYXZpb3IgZm9yIHRoZSBwcmVzZW50IGJ1dAorCSAqIG5vdCBmdW5jdGlvbmluZyBjYXNlLCBzbyB3ZSBhc3N1bWUgZnVuY3Rpb25pbmcgaWYgcHJlc2VudC4KKwkgKi8KKwlpZiAoIShmbGFncyAmIEFDUElfU1RBX0RFVklDRV9QUkVTRU5UKSkgewogCi0JCWlmIChwaW5mby5yZXR1cm5fb2JqZWN0KSB7Ci0JCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UocGluZm8ucmV0dXJuX29iamVjdCk7CisJCS8qIERldmljZSBpcyBub3QgcHJlc2VudCwgd2UgbXVzdCBleGFtaW5lIHRoZSBGdW5jdGlvbmluZyBiaXQgKi8KKworCQlpZiAoZmxhZ3MgJiBBQ1BJX1NUQV9ERVZJQ0VfRlVOQ1RJT05JTkcpIHsKKwkJCS8qCisJCQkgKiBEZXZpY2UgaXMgbm90IHByZXNlbnQgYnV0IGlzICJmdW5jdGlvbmluZyIuIEluIHRoaXMgY2FzZSwKKwkJCSAqIHdlIHdpbGwgbm90IHJ1biBfSU5JLCBidXQgd2UgY29udGludWUgdG8gZXhhbWluZSB0aGUgY2hpbGRyZW4KKwkJCSAqIG9mIHRoaXMgZGV2aWNlLgorCQkJICoKKwkJCSAqIEZyb20gdGhlIEFDUEkgc3BlYywgZGVzY3JpcHRpb24gb2YgX1NUQTogKE5vdGUgLSBubyBtZW50aW9uCisJCQkgKiBvZiB3aGV0aGVyIHRvIHJ1biBfSU5JIG9yIG5vdCBvbiB0aGUgZGV2aWNlIGluIHF1ZXN0aW9uKQorCQkJICoKKwkJCSAqICJfU1RBIG1heSByZXR1cm4gYml0IDAgY2xlYXIgKG5vdCBwcmVzZW50KSB3aXRoIGJpdCAzIHNldAorCQkJICogKGRldmljZSBpcyBmdW5jdGlvbmFsKS4gVGhpcyBjYXNlIGlzIHVzZWQgdG8gaW5kaWNhdGUgYSB2YWxpZAorCQkJICogZGV2aWNlIGZvciB3aGljaCBubyBkZXZpY2UgZHJpdmVyIHNob3VsZCBiZSBsb2FkZWQgKGZvciBleGFtcGxlLAorCQkJICogYSBicmlkZ2UgZGV2aWNlLikgQ2hpbGRyZW4gb2YgdGhpcyBkZXZpY2UgbWF5IGJlIHByZXNlbnQgYW5kCisJCQkgKiB2YWxpZC4gT1NQTSBzaG91bGQgY29udGludWUgZW51bWVyYXRpb24gYmVsb3cgYSBkZXZpY2Ugd2hvc2UKKwkJCSAqIF9TVEEgcmV0dXJucyB0aGlzIGJpdCBjb21iaW5hdGlvbiIKKwkJCSAqLworCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiBEZXZpY2UgaXMgbm90IHByZXNlbnQgYW5kIGlzIG5vdCBmdW5jdGlvbmluZy4gV2UgbXVzdCBhYm9ydCB0aGUKKwkJCSAqIHdhbGsgb2YgdGhpcyBzdWJ0cmVlIGltbWVkaWF0ZWx5IC0tIGRvbid0IGxvb2sgYXQgdGhlIGNoaWxkcmVuCisJCQkgKiBvZiBzdWNoIGEgZGV2aWNlLgorCQkJICoKKwkJCSAqIEZyb20gdGhlIEFDUEkgc3BlYywgZGVzY3JpcHRpb24gb2YgX0lOSToKKwkJCSAqCisJCQkgKiAiSWYgdGhlIF9TVEEgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UgaXMgbm90IHByZXNlbnQsCisJCQkgKiBPU1BNIHdpbGwgbm90IHJ1biB0aGUgX0lOSSBhbmQgd2lsbCBub3QgZXhhbWluZSB0aGUgY2hpbGRyZW4KKwkJCSAqIG9mIHRoZSBkZXZpY2UgZm9yIF9JTkkgbWV0aG9kcyIKKwkJCSAqLworCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0NUUkxfREVQVEgpOwogCQl9Ci0KLQkJLyogQ291bnQgb2Ygc3VjY2Vzc2Z1bCBJTklzICovCi0KLQkJaW5mby0+bnVtX0lOSSsrOwogCX0KIAorCS8qCisJICogVGhlIGRldmljZSBpcyBwcmVzZW50IG9yIGlzIGFzc3VtZWQgcHJlc2VudCBpZiBubyBfU1RBIGV4aXN0cy4KKwkgKiBSdW4gdGhlIF9JTkkgaWYgaXQgZXhpc3RzIChub3QgcmVxdWlyZWQgdG8gZXhpc3QpCisJICoKKwkgKiBOb3RlOiBXZSBrbm93IHRoZXJlIGlzIGFuIF9JTkkgd2l0aGluIHRoaXMgc3VidHJlZSwgYnV0IGl0IG1heSBub3QgYmUKKwkgKiB1bmRlciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLCBpdCBtYXkgYmUgbG93ZXIgaW4gdGhlIGJyYW5jaC4KKwkgKi8KKwlBQ1BJX0RFQlVHX0VYRUMoYWNwaV91dF9kaXNwbGF5X2luaXRfcGF0aG5hbWUKKwkJCShBQ1BJX1RZUEVfTUVUSE9ELCBkZXZpY2Vfbm9kZSwgTUVUSE9EX05BTUVfX0lOSSkpOworCisJaW5mby0+cHJlZml4X25vZGUgPSBkZXZpY2Vfbm9kZTsKKwlpbmZvLT5wYXRobmFtZSA9IE1FVEhPRF9OQU1FX19JTkk7CisJaW5mby0+cGFyYW1ldGVycyA9IE5VTEw7CisJaW5mby0+cGFyYW1ldGVyX3R5cGUgPSBBQ1BJX1BBUkFNX0FSR1M7CisJaW5mby0+ZmxhZ3MgPSBBQ1BJX0lHTk9SRV9SRVRVUk5fVkFMVUU7CisKKwlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlKGluZm8pOworCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgeworCQl3YWxrX2luZm8tPm51bV9JTkkrKzsKKworCQlpZiAoKGFjcGlfZGJnX2xldmVsIDw9IEFDUElfTFZfQUxMX0VYQ0VQVElPTlMpICYmCisJCSAgICAoIShhY3BpX2RiZ19sZXZlbCAmIEFDUElfTFZfSU5GTykpKSB7CisJCQlBQ1BJX0RFQlVHX1BSSU5UX1JBVygoQUNQSV9EQl9JTklULCAiLiIpKTsKKwkJfQorCX0KKyNpZmRlZiBBQ1BJX0RFQlVHX09VVFBVVAorCWVsc2UgaWYgKHN0YXR1cyAhPSBBRV9OT1RfRk9VTkQpIHsKKworCQkvKiBJZ25vcmUgZXJyb3IgYW5kIG1vdmUgb24gdG8gbmV4dCBkZXZpY2UgKi8KKworCQljaGFyICpzY29wZV9uYW1lID0KKwkJICAgIGFjcGlfbnNfZ2V0X2V4dGVybmFsX3BhdGhuYW1lKGluZm8tPnJlc29sdmVkX25vZGUpOworCisJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJkdXJpbmcgJXMuX0lOSSBleGVjdXRpb24iLAorCQkJCXNjb3BlX25hbWUpKTsKKwkJQUNQSV9GUkVFKHNjb3BlX25hbWUpOworCX0KKyNlbmRpZgorCisJLyogSWdub3JlIGVycm9ycyBmcm9tIGFib3ZlICovCisKKwlzdGF0dXMgPSBBRV9PSzsKKworCS8qCisJICogVGhlIF9JTkkgbWV0aG9kIGhhcyBiZWVuIHJ1biBpZiBwcmVzZW50OyBjYWxsIHRoZSBHbG9iYWwgSW5pdGlhbGl6YXRpb24KKwkgKiBIYW5kbGVyIGZvciB0aGlzIGRldmljZS4KKwkgKi8KIAlpZiAoYWNwaV9nYmxfaW5pdF9oYW5kbGVyKSB7Ci0JCS8qIEV4dGVybmFsIGluaXRpYWxpemF0aW9uIGhhbmRsZXIgaXMgcHJlc2VudCwgY2FsbCBpdCAqLwotCiAJCXN0YXR1cyA9Ci0JCSAgICBhY3BpX2dibF9pbml0X2hhbmRsZXIocGluZm8ubm9kZSwgQUNQSV9JTklUX0RFVklDRV9JTkkpOworCQkgICAgYWNwaV9nYmxfaW5pdF9oYW5kbGVyKGRldmljZV9ub2RlLCBBQ1BJX0lOSVRfREVWSUNFX0lOSSk7CiAJfQogCi0JcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKKwlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNsb2FkLmMgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zbG9hZC5jCmluZGV4IDRlMGIwNTIuLmZlNzVkODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNsb2FkLmMKKysrIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc2xvYWQuYwpAQCAtNzcsMTMgKzc3LDE0IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfbG9hZF90YWJsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfbG9hZF90YWJsZSk7CiAKIAkvKiBDaGVjayBpZiB0YWJsZSBjb250YWlucyB2YWxpZCBBTUwgKG11c3QgYmUgRFNEVCwgUFNEVCwgU1NEVCwgZXRjLikgKi8KIAogCWlmICghCiAJICAgIChhY3BpX2dibF90YWJsZV9kYXRhW3RhYmxlX2Rlc2MtPnR5cGVdLgogCSAgICAgZmxhZ3MgJiBBQ1BJX1RBQkxFX0VYRUNVVEFCTEUpKSB7CisKIAkJLyogSnVzdCBpZ25vcmUgdGhpcyB0YWJsZSAqLwogCiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CkBAIC0xNjgsNyArMTY5LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfdGFibGVfZGVzYyAqdGFibGVfZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX2xvYWRfdGFibGVfYnlfdHlwZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfbG9hZF90YWJsZV9ieV90eXBlKTsKIAogCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9UQUJMRVMpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewpAQCAtMTgwLDExICsxODEsMTEgQEAKIAkgKiBEU0RUIChvbmUpLCBTU0RUL1BTRFQgKG11bHRpcGxlKQogCSAqLwogCXN3aXRjaCAodGFibGVfdHlwZSkgewotCWNhc2UgQUNQSV9UQUJMRV9EU0RUOgorCWNhc2UgQUNQSV9UQUJMRV9JRF9EU0RUOgogCiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIk5hbWVzcGFjZSBsb2FkOiBEU0RUXG4iKSk7CiAKLQkJdGFibGVfZGVzYyA9IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW0FDUElfVEFCTEVfRFNEVF0ubmV4dDsKKwkJdGFibGVfZGVzYyA9IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW0FDUElfVEFCTEVfSURfRFNEVF0ubmV4dDsKIAogCQkvKiBJZiB0YWJsZSBhbHJlYWR5IGxvYWRlZCBpbnRvIG5hbWVzcGFjZSwganVzdCByZXR1cm4gKi8KIApAQCAtMjAwLDggKzIwMSw4IEBACiAJCX0KIAkJYnJlYWs7CiAKLQljYXNlIEFDUElfVEFCTEVfU1NEVDoKLQljYXNlIEFDUElfVEFCTEVfUFNEVDoKKwljYXNlIEFDUElfVEFCTEVfSURfU1NEVDoKKwljYXNlIEFDUElfVEFCTEVfSURfUFNEVDoKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sCiAJCQkJICAiTmFtZXNwYWNlIGxvYWQ6ICVkIFNTRFQgb3IgUFNEVHNcbiIsCkBAIC0yNTgsNyArMjU5LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2xvYWRfbmFtZV9zcGFjZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9sb2FkX25hbWVfc3BhY2UpOwogCiAJLyogVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBhIERTRFQgaW5zdGFsbGVkICovCiAKQEAgLTI3MSwxNSArMjcyLDE1IEBACiAJICogTG9hZCB0aGUgbmFtZXNwYWNlLiAgVGhlIERTRFQgaXMgcmVxdWlyZWQsCiAJICogYnV0IHRoZSBTU0RUIGFuZCBQU0RUIHRhYmxlcyBhcmUgb3B0aW9uYWwuCiAJICovCi0Jc3RhdHVzID0gYWNwaV9uc19sb2FkX3RhYmxlX2J5X3R5cGUoQUNQSV9UQUJMRV9EU0RUKTsKKwlzdGF0dXMgPSBhY3BpX25zX2xvYWRfdGFibGVfYnlfdHlwZShBQ1BJX1RBQkxFX0lEX0RTRFQpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKIAkvKiBJZ25vcmUgZXhjZXB0aW9ucyBmcm9tIHRoZXNlICovCiAKLQkodm9pZClhY3BpX25zX2xvYWRfdGFibGVfYnlfdHlwZShBQ1BJX1RBQkxFX1NTRFQpOwotCSh2b2lkKWFjcGlfbnNfbG9hZF90YWJsZV9ieV90eXBlKEFDUElfVEFCTEVfUFNEVCk7CisJKHZvaWQpYWNwaV9uc19sb2FkX3RhYmxlX2J5X3R5cGUoQUNQSV9UQUJMRV9JRF9TU0RUKTsKKwkodm9pZClhY3BpX25zX2xvYWRfdGFibGVfYnlfdHlwZShBQ1BJX1RBQkxFX0lEX1BTRFQpOwogCiAJQUNQSV9ERUJVR19QUklOVF9SQVcoKEFDUElfREJfSU5JVCwKIAkJCSAgICAgICJBQ1BJIE5hbWVzcGFjZSBzdWNjZXNzZnVsbHkgbG9hZGVkIGF0IHJvb3QgJXBcbiIsCkBAIC0zMTQsNyArMzE1LDcgQEAKIAlhY3BpX2hhbmRsZSBkdW1teTsKIAl1MzIgbGV2ZWw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19kZWxldGVfc3VidHJlZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZGVsZXRlX3N1YnRyZWUpOwogCiAJcGFyZW50X2hhbmRsZSA9IHN0YXJ0X2hhbmRsZTsKIAljaGlsZF9oYW5kbGUgPSBOVUxMOwpAQCAtMzI1LDYgKzMyNiw3IEBACiAJICogdG8gd2hlcmUgd2Ugc3RhcnRlZC4KIAkgKi8KIAl3aGlsZSAobGV2ZWwgPiAwKSB7CisKIAkJLyogQXR0ZW1wdCB0byBnZXQgdGhlIG5leHQgb2JqZWN0IGluIHRoaXMgc2NvcGUgKi8KIAogCQlzdGF0dXMgPSBhY3BpX2dldF9uZXh0X29iamVjdChBQ1BJX1RZUEVfQU5ZLCBwYXJlbnRfaGFuZGxlLApAQCAtMzM1LDYgKzMzNyw3IEBACiAJCS8qIERpZCB3ZSBnZXQgYSBuZXcgb2JqZWN0PyAqLwogCiAJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgeworCiAJCQkvKiBDaGVjayBpZiB0aGlzIG9iamVjdCBoYXMgYW55IGNoaWxkcmVuICovCiAKIAkJCWlmIChBQ1BJX1NVQ0NFU1MKQEAgLTM5Miw3ICszOTUsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX3VubG9hZF9uYW1lX3NwYWNlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc191bmxvYWRfbmFtZV9zcGFjZSk7CiAKIAkvKiBQYXJhbWV0ZXIgdmFsaWRhdGlvbiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zbmFtZXMuYyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNuYW1lcy5jCmluZGV4IDYzOWY2NTMuLjk3YjgzMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNuYW1lcy5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNuYW1lcy5jCkBAIC00OCwxMSArNDgsNiBAQAogI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfTkFNRVNQQUNFCiBBQ1BJX01PRFVMRV9OQU1FKCJuc25hbWVzIikKIAotLyogTG9jYWwgcHJvdG90eXBlcyAqLwotc3RhdGljIHZvaWQKLWFjcGlfbnNfYnVpbGRfZXh0ZXJuYWxfcGF0aChzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKLQkJCSAgICBhY3BpX3NpemUgc2l6ZSwgY2hhciAqbmFtZV9idWZmZXIpOwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX25zX2J1aWxkX2V4dGVybmFsX3BhdGgKQEAgLTY3LDggKzYyLDcgQEAKICAqIERFU0NSSVBUSU9OOiBHZW5lcmF0ZSBhIGZ1bGwgcGF0aGFuYW1lCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIHZvaWQKK3ZvaWQKIGFjcGlfbnNfYnVpbGRfZXh0ZXJuYWxfcGF0aChzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKIAkJCSAgICBhY3BpX3NpemUgc2l6ZSwgY2hhciAqbmFtZV9idWZmZXIpCiB7CkBAIC0xMzgsNyArMTMyLDcgQEAKIAljaGFyICpuYW1lX2J1ZmZlcjsKIAlhY3BpX3NpemUgc2l6ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJuc19nZXRfZXh0ZXJuYWxfcGF0aG5hbWUiLCBub2RlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihuc19nZXRfZXh0ZXJuYWxfcGF0aG5hbWUsIG5vZGUpOwogCiAJLyogQ2FsY3VsYXRlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIGJhc2VkIG9uIGRlcHRoIGJlbG93IHJvb3QgKi8KIApAQCAtMTQ2LDcgKzE0MCw3IEBACiAKIAkvKiBBbGxvY2F0ZSBhIGJ1ZmZlciB0byBiZSByZXR1cm5lZCB0byBjYWxsZXIgKi8KIAotCW5hbWVfYnVmZmVyID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHNpemUpOworCW5hbWVfYnVmZmVyID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZSk7CiAJaWYgKCFuYW1lX2J1ZmZlcikgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiQWxsb2NhdGlvbiBmYWlsdXJlIikpOwogCQlyZXR1cm5fUFRSKE5VTEwpOwpAQCAtMjE5LDcgKzIxMyw3IEBACiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CiAJYWNwaV9zaXplIHJlcXVpcmVkX3NpemU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigibnNfaGFuZGxlX3RvX3BhdGhuYW1lIiwgdGFyZ2V0X2hhbmRsZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIobnNfaGFuZGxlX3RvX3BhdGhuYW1lLCB0YXJnZXRfaGFuZGxlKTsKIAogCW5vZGUgPSBhY3BpX25zX21hcF9oYW5kbGVfdG9fbm9kZSh0YXJnZXRfaGFuZGxlKTsKIAlpZiAoIW5vZGUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNvYmplY3QuYyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNvYmplY3QuYwppbmRleCAxMGFlNjI5Li5hYWJlODc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zb2JqZWN0LmMKKysrIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc29iamVjdC5jCkBAIC03NiwxOSArNzYsMjEgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpsYXN0X29ial9kZXNjOwogCWFjcGlfb2JqZWN0X3R5cGUgb2JqZWN0X3R5cGUgPSBBQ1BJX1RZUEVfQU5ZOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfYXR0YWNoX29iamVjdCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfYXR0YWNoX29iamVjdCk7CiAKIAkvKgogCSAqIFBhcmFtZXRlciB2YWxpZGF0aW9uCiAJICovCiAJaWYgKCFub2RlKSB7CisKIAkJLyogSW52YWxpZCBoYW5kbGUgKi8KIAotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiTnVsbCBuYW1lZF9vYmogaGFuZGxlIikpOworCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiTnVsbCBOYW1lZE9iaiBoYW5kbGUiKSk7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKIAl9CiAKIAlpZiAoIW9iamVjdCAmJiAoQUNQSV9UWVBFX0FOWSAhPSB0eXBlKSkgeworCiAJCS8qIE51bGwgb2JqZWN0ICovCiAKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKQEAgLTk3LDYgKzk5LDcgQEAKIAl9CiAKIAlpZiAoQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKG5vZGUpICE9IEFDUElfREVTQ19UWVBFX05BTUVEKSB7CisKIAkJLyogTm90IGEgbmFtZSBoYW5kbGUgKi8KIAogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBoYW5kbGUgJXAgWyVzXSIsCkBAIC0xMDgsNyArMTExLDcgQEAKIAogCWlmIChub2RlLT5vYmplY3QgPT0gb2JqZWN0KSB7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKLQkJCQkgICJPYmogJXAgYWxyZWFkeSBpbnN0YWxsZWQgaW4gbmFtZV9vYmogJXBcbiIsCisJCQkJICAiT2JqICVwIGFscmVhZHkgaW5zdGFsbGVkIGluIE5hbWVPYmogJXBcbiIsCiAJCQkJICBvYmplY3QsIG5vZGUpKTsKIAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwpAQCAtMjAxLDcgKzIwNCw3IEBACiB7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19kZXRhY2hfb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19kZXRhY2hfb2JqZWN0KTsKIAogCW9ial9kZXNjID0gbm9kZS0+b2JqZWN0OwogCkBAIC0yNTIsNyArMjU1LDcgQEAKIAkJCQkJCSAgICAgICBhY3BpX25hbWVzcGFjZV9ub2RlCiAJCQkJCQkgICAgICAgKm5vZGUpCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoIm5zX2dldF9hdHRhY2hlZF9vYmplY3QiLCBub2RlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihuc19nZXRfYXR0YWNoZWRfb2JqZWN0LCBub2RlKTsKIAogCWlmICghbm9kZSkgewogCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sICJOdWxsIE5vZGUgcHRyIikpOwpAQCAtMjg3LDcgKzI5MCw3IEBACiAJCQkJCQkJYWNwaV9vcGVyYW5kX29iamVjdAogCQkJCQkJCSpvYmpfZGVzYykKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigibnNfZ2V0X3NlY29uZGFyeV9vYmplY3QiLCBvYmpfZGVzYyk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIobnNfZ2V0X3NlY29uZGFyeV9vYmplY3QsIG9ial9kZXNjKTsKIAogCWlmICgoIW9ial9kZXNjKSB8fAogCSAgICAoQUNQSV9HRVRfT0JKRUNUX1RZUEUob2JqX2Rlc2MpID09IEFDUElfVFlQRV9MT0NBTF9EQVRBKSB8fApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3BhcnNlLmMgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zcGFyc2UuYwppbmRleCAyMzJiZTQzLi4xNTU1MDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zcGFyc2UuYworKysgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zcGFyc2UuYwpAQCAtNjIsMTMgKzYyLDEzIEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGFjcGlfc3RhdHVzCi1hY3BpX25zX29uZV9jb21wbGV0ZV9wYXJzZSh1OCBwYXNzX251bWJlciwgc3RydWN0IGFjcGlfdGFibGVfZGVzYyAqIHRhYmxlX2Rlc2MpCithY3BpX25zX29uZV9jb21wbGV0ZV9wYXJzZSh1OCBwYXNzX251bWJlciwgc3RydWN0IGFjcGlfdGFibGVfZGVzYyAqdGFibGVfZGVzYykKIHsKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqcGFyc2Vfcm9vdDsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoIm5zX29uZV9jb21wbGV0ZV9wYXJzZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfb25lX2NvbXBsZXRlX3BhcnNlKTsKIAogCS8qIENyZWF0ZSBhbmQgaW5pdCBhIFJvb3QgTm9kZSAqLwogCkBAIC0xMjQsNyArMTI0LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19wYXJzZV90YWJsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfcGFyc2VfdGFibGUpOwogCiAJLyoKIAkgKiBBTUwgUGFyc2UsIHBhc3MgMQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3NlYXJjaC5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3NlYXJjaC5jCmluZGV4IGQ2NGI3ODkuLjUwMGUyYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnNzZWFyY2guYworKysgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zc2VhcmNoLmMKQEAgLTU2LDE2ICs1NiwxNiBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX25zX3NlYXJjaF9ub2RlCisgKiBGVU5DVElPTjogICAgYWNwaV9uc19zZWFyY2hfb25lX3Njb3BlCiAgKgogICogUEFSQU1FVEVSUzogIHRhcmdldF9uYW1lICAgICAtIEFzY2lpIEFDUEkgbmFtZSB0byBzZWFyY2ggZm9yCi0gKiAgICAgICAgICAgICAgTm9kZSAgICAgICAgICAgIC0gU3RhcnRpbmcgbm9kZSB3aGVyZSBzZWFyY2ggd2lsbCBiZWdpbgorICogICAgICAgICAgICAgIHBhcmVudF9ub2RlICAgICAtIFN0YXJ0aW5nIG5vZGUgd2hlcmUgc2VhcmNoIHdpbGwgYmVnaW4KICAqICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgLSBPYmplY3QgdHlwZSB0byBtYXRjaAogICogICAgICAgICAgICAgIHJldHVybl9ub2RlICAgICAtIFdoZXJlIHRoZSBtYXRjaGVkIE5hbWVkIG9iaiBpcyByZXR1cm5lZAogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKICAqCi0gKiBERVNDUklQVElPTjogU2VhcmNoIGEgc2luZ2xlIGxldmVsIG9mIHRoZSBuYW1lc3BhY2UuICBQZXJmb3JtcyBhCisgKiBERVNDUklQVElPTjogU2VhcmNoIGEgc2luZ2xlIGxldmVsIG9mIHRoZSBuYW1lc3BhY2UuIFBlcmZvcm1zIGEKICAqICAgICAgICAgICAgICBzaW1wbGUgc2VhcmNoIG9mIHRoZSBzcGVjaWZpZWQgbGV2ZWwsIGFuZCBkb2VzIG5vdCBhZGQKICAqICAgICAgICAgICAgICBlbnRyaWVzIG9yIHNlYXJjaCBwYXJlbnRzLgogICoKQEAgLTc1LDM1ICs3NSw0MCBAQAogICoKICAqICAgICAgQWxsIG5hbWVzcGFjZSBzZWFyY2hpbmcgaXMgbGluZWFyIGluIHRoaXMgaW1wbGVtZW50YXRpb24sIGJ1dAogICogICAgICBjb3VsZCBiZSBlYXNpbHkgbW9kaWZpZWQgdG8gc3VwcG9ydCBhbnkgaW1wcm92ZWQgc2VhcmNoCi0gKiAgICAgIGFsZ29yaXRobS4gIEhvd2V2ZXIsIHRoZSBsaW5lYXIgc2VhcmNoIHdhcyBjaG9zZW4gZm9yIHNpbXBsaWNpdHkKKyAqICAgICAgYWxnb3JpdGhtLiBIb3dldmVyLCB0aGUgbGluZWFyIHNlYXJjaCB3YXMgY2hvc2VuIGZvciBzaW1wbGljaXR5CiAgKiAgICAgIGFuZCBiZWNhdXNlIHRoZSB0cmVlcyBhcmUgc21hbGwgYW5kIHRoZSBvdGhlciBpbnRlcnByZXRlcgogICogICAgICBleGVjdXRpb24gb3ZlcmhlYWQgaXMgcmVsYXRpdmVseSBoaWdoLgogICoKKyAqICAgICAgTm90ZTogQ1BVIGV4ZWN1dGlvbiBhbmFseXNpcyBoYXMgc2hvd24gdGhhdCB0aGUgQU1MIGludGVycHJldGVyIHNwZW5kcworICogICAgICBhIHZlcnkgc21hbGwgcGVyY2VudGFnZSBvZiBpdHMgdGltZSBzZWFyY2hpbmcgdGhlIG5hbWVzcGFjZS4gVGhlcmVmb3JlLAorICogICAgICB0aGUgbGluZWFyIHNlYXJjaCBzZWVtcyB0byBiZSBzdWZmaWNpZW50LCBhcyB0aGVyZSB3b3VsZCBzZWVtIHRvIGJlCisgKiAgICAgIGxpdHRsZSB2YWx1ZSBpbiBpbXByb3ZpbmcgdGhlIHNlYXJjaC4KKyAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBhY3BpX3N0YXR1cwotYWNwaV9uc19zZWFyY2hfbm9kZSh1MzIgdGFyZ2V0X25hbWUsCi0JCSAgICBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKLQkJICAgIGFjcGlfb2JqZWN0X3R5cGUgdHlwZSwKLQkJICAgIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICoqcmV0dXJuX25vZGUpCithY3BpX25zX3NlYXJjaF9vbmVfc2NvcGUodTMyIHRhcmdldF9uYW1lLAorCQkJIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwYXJlbnRfbm9kZSwKKwkJCSBhY3BpX29iamVjdF90eXBlIHR5cGUsCisJCQkgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKipyZXR1cm5fbm9kZSkKIHsKLQlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbmV4dF9ub2RlOworCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfc2VhcmNoX25vZGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKG5zX3NlYXJjaF9vbmVfc2NvcGUpOwogCiAjaWZkZWYgQUNQSV9ERUJVR19PVVRQVVQKIAlpZiAoQUNQSV9MVl9OQU1FUyAmIGFjcGlfZGJnX2xldmVsKSB7CiAJCWNoYXIgKnNjb3BlX25hbWU7CiAKLQkJc2NvcGVfbmFtZSA9IGFjcGlfbnNfZ2V0X2V4dGVybmFsX3BhdGhuYW1lKG5vZGUpOworCQlzY29wZV9uYW1lID0gYWNwaV9uc19nZXRfZXh0ZXJuYWxfcGF0aG5hbWUocGFyZW50X25vZGUpOwogCQlpZiAoc2NvcGVfbmFtZSkgewogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9OQU1FUywKIAkJCQkJICAiU2VhcmNoaW5nICVzICglcCkgRm9yIFslNC40c10gKCVzKVxuIiwKLQkJCQkJICBzY29wZV9uYW1lLCBub2RlLCBBQ1BJX0NBU1RfUFRSKGNoYXIsCi0JCQkJCQkJCQkgICZ0YXJnZXRfbmFtZSksCisJCQkJCSAgc2NvcGVfbmFtZSwgcGFyZW50X25vZGUsCisJCQkJCSAgQUNQSV9DQVNUX1BUUihjaGFyLCAmdGFyZ2V0X25hbWUpLAogCQkJCQkgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZSh0eXBlKSkpOwogCi0JCQlBQ1BJX01FTV9GUkVFKHNjb3BlX25hbWUpOworCQkJQUNQSV9GUkVFKHNjb3BlX25hbWUpOwogCQl9CiAJfQogI2VuZGlmCkBAIC0xMTIsMzIgKzExNywzMyBAQAogCSAqIFNlYXJjaCBmb3IgbmFtZSBhdCB0aGlzIG5hbWVzcGFjZSBsZXZlbCwgd2hpY2ggaXMgdG8gc2F5IHRoYXQgd2UKIAkgKiBtdXN0IHNlYXJjaCBmb3IgdGhlIG5hbWUgYW1vbmcgdGhlIGNoaWxkcmVuIG9mIHRoaXMgb2JqZWN0CiAJICovCi0JbmV4dF9ub2RlID0gbm9kZS0+Y2hpbGQ7Ci0Jd2hpbGUgKG5leHRfbm9kZSkgeworCW5vZGUgPSBwYXJlbnRfbm9kZS0+Y2hpbGQ7CisJd2hpbGUgKG5vZGUpIHsKKwogCQkvKiBDaGVjayBmb3IgbWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSAqLwogCi0JCWlmIChuZXh0X25vZGUtPm5hbWUuaW50ZWdlciA9PSB0YXJnZXRfbmFtZSkgeworCQlpZiAobm9kZS0+bmFtZS5pbnRlZ2VyID09IHRhcmdldF9uYW1lKSB7CisKIAkJCS8qIFJlc29sdmUgYSBjb250cm9sIG1ldGhvZCBhbGlhcyBpZiBhbnkgKi8KIAotCQkJaWYgKGFjcGlfbnNfZ2V0X3R5cGUobmV4dF9ub2RlKSA9PQorCQkJaWYgKGFjcGlfbnNfZ2V0X3R5cGUobm9kZSkgPT0KIAkJCSAgICBBQ1BJX1RZUEVfTE9DQUxfTUVUSE9EX0FMSUFTKSB7Ci0JCQkJbmV4dF9ub2RlID0KKwkJCQlub2RlID0KIAkJCQkgICAgQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSwKLQkJCQkJCSAgbmV4dF9ub2RlLT5vYmplY3QpOworCQkJCQkJICBub2RlLT5vYmplY3QpOwogCQkJfQogCi0JCQkvKgotCQkJICogRm91bmQgbWF0Y2hpbmcgZW50cnkuCi0JCQkgKi8KKwkJCS8qIEZvdW5kIG1hdGNoaW5nIGVudHJ5ICovCisKIAkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTkFNRVMsCiAJCQkJCSAgIk5hbWUgWyU0LjRzXSAoJXMpICVwIGZvdW5kIGluIHNjb3BlIFslNC40c10gJXBcbiIsCiAJCQkJCSAgQUNQSV9DQVNUX1BUUihjaGFyLCAmdGFyZ2V0X25hbWUpLAotCQkJCQkgIGFjcGlfdXRfZ2V0X3R5cGVfbmFtZShuZXh0X25vZGUtPgotCQkJCQkJCQl0eXBlKSwKLQkJCQkJICBuZXh0X25vZGUsCi0JCQkJCSAgYWNwaV91dF9nZXRfbm9kZV9uYW1lKG5vZGUpLCBub2RlKSk7CisJCQkJCSAgYWNwaV91dF9nZXRfdHlwZV9uYW1lKG5vZGUtPnR5cGUpLAorCQkJCQkgIG5vZGUsCisJCQkJCSAgYWNwaV91dF9nZXRfbm9kZV9uYW1lKHBhcmVudF9ub2RlKSwKKwkJCQkJICBwYXJlbnRfbm9kZSkpOwogCi0JCQkqcmV0dXJuX25vZGUgPSBuZXh0X25vZGU7CisJCQkqcmV0dXJuX25vZGUgPSBub2RlOwogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIAkJfQogCkBAIC0xNDUsNyArMTUxLDggQEAKIAkJICogVGhlIGxhc3QgZW50cnkgaW4gdGhlIGxpc3QgcG9pbnRzIGJhY2sgdG8gdGhlIHBhcmVudCwKIAkJICogc28gYSBmbGFnIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGVuZC1vZi1saXN0CiAJCSAqLwotCQlpZiAobmV4dF9ub2RlLT5mbGFncyAmIEFOT0JKX0VORF9PRl9QRUVSX0xJU1QpIHsKKwkJaWYgKG5vZGUtPmZsYWdzICYgQU5PQkpfRU5EX09GX1BFRVJfTElTVCkgeworCiAJCQkvKiBTZWFyY2hlZCBlbnRpcmUgbGlzdCwgd2UgYXJlIGRvbmUgKi8KIAogCQkJYnJlYWs7CkBAIC0xNTMsNyArMTYwLDcgQEAKIAogCQkvKiBEaWRuJ3QgbWF0Y2ggbmFtZSwgbW92ZSBvbiB0byB0aGUgbmV4dCBwZWVyIG9iamVjdCAqLwogCi0JCW5leHRfbm9kZSA9IG5leHRfbm9kZS0+cGVlcjsKKwkJbm9kZSA9IG5vZGUtPnBlZXI7CiAJfQogCiAJLyogU2VhcmNoZWQgZW50aXJlIG5hbWVzcGFjZSBsZXZlbCwgbm90IGZvdW5kICovCkBAIC0xNjIsNyArMTY5LDggQEAKIAkJCSAgIk5hbWUgWyU0LjRzXSAoJXMpIG5vdCBmb3VuZCBpbiBzZWFyY2ggaW4gc2NvcGUgWyU0LjRzXSAlcCBmaXJzdCBjaGlsZCAlcFxuIiwKIAkJCSAgQUNQSV9DQVNUX1BUUihjaGFyLCAmdGFyZ2V0X25hbWUpLAogCQkJICBhY3BpX3V0X2dldF90eXBlX25hbWUodHlwZSksCi0JCQkgIGFjcGlfdXRfZ2V0X25vZGVfbmFtZShub2RlKSwgbm9kZSwgbm9kZS0+Y2hpbGQpKTsKKwkJCSAgYWNwaV91dF9nZXRfbm9kZV9uYW1lKHBhcmVudF9ub2RlKSwgcGFyZW50X25vZGUsCisJCQkgIHBhcmVudF9ub2RlLT5jaGlsZCkpOwogCiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PVF9GT1VORCk7CiB9CkBAIC0xNzksMTQgKzE4NywxNCBAQAogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKICAqIERFU0NSSVBUSU9OOiBDYWxsZWQgd2hlbiBhIG5hbWUgaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IG5hbWVzcGFjZQotICogICAgICAgICAgICAgIGxldmVsLiAgQmVmb3JlIGFkZGluZyBpdCBvciBnaXZpbmcgdXAsIEFDUEkgc2NvcGUgcnVsZXMgcmVxdWlyZQorICogICAgICAgICAgICAgIGxldmVsLiBCZWZvcmUgYWRkaW5nIGl0IG9yIGdpdmluZyB1cCwgQUNQSSBzY29wZSBydWxlcyByZXF1aXJlCiAgKiAgICAgICAgICAgICAgc2VhcmNoaW5nIGVuY2xvc2luZyBzY29wZXMgaW4gY2FzZXMgaWRlbnRpZmllZCBieSBhY3BpX25zX2xvY2FsKCkuCiAgKgogICogICAgICAgICAgICAgICJBIG5hbWUgaXMgbG9jYXRlZCBieSBmaW5kaW5nIHRoZSBtYXRjaGluZyBuYW1lIGluIHRoZSBjdXJyZW50CiAgKiAgICAgICAgICAgICAgbmFtZSBzcGFjZSwgYW5kIHRoZW4gaW4gdGhlIHBhcmVudCBuYW1lIHNwYWNlLiBJZiB0aGUgcGFyZW50CiAgKiAgICAgICAgICAgICAgbmFtZSBzcGFjZSBkb2VzIG5vdCBjb250YWluIHRoZSBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcwogICogICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5IHVudGlsIGVpdGhlciB0aGUgbmFtZSBpcyBmb3VuZCBvciB0aGUgbmFtZSBzcGFjZQotICogICAgICAgICAgICAgIGRvZXMgbm90IGhhdmUgYSBwYXJlbnQgKHRoZSByb290IG9mIHRoZSBuYW1lIHNwYWNlKS4gIFRoaXMKKyAqICAgICAgICAgICAgICBkb2VzIG5vdCBoYXZlIGEgcGFyZW50ICh0aGUgcm9vdCBvZiB0aGUgbmFtZSBzcGFjZSkuIFRoaXMKICAqICAgICAgICAgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgbmFtZSBpcyBub3QgZm91bmQiIChGcm9tIEFDUEkgU3BlY2lmaWNhdGlvbiwKICAqICAgICAgICAgICAgICBzZWN0aW9uIDUuMykKICAqCkBAIC0yMDEsNyArMjA5LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnBhcmVudF9ub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfc2VhcmNoX3BhcmVudF90cmVlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19zZWFyY2hfcGFyZW50X3RyZWUpOwogCiAJcGFyZW50X25vZGUgPSBhY3BpX25zX2dldF9wYXJlbnRfbm9kZShub2RlKTsKIApAQCAtMjM1LDIwICsyNDMsMTkgQEAKIAkgKi8KIAl3aGlsZSAocGFyZW50X25vZGUpIHsKIAkJLyoKLQkJICogU2VhcmNoIHBhcmVudCBzY29wZS4gIFVzZSBUWVBFX0FOWSBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlCisJCSAqIFNlYXJjaCBwYXJlbnQgc2NvcGUuIFVzZSBUWVBFX0FOWSBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlCiAJCSAqIG9iamVjdCB0eXBlIGF0IHRoaXMgcG9pbnQsIHdlIG9ubHkgY2FyZSBhYm91dCB0aGUgZXhpc3RlbmNlIG9mCi0JCSAqIHRoZSBhY3R1YWwgbmFtZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci4gIFR5cGVjaGVja2luZyBjb21lcyBsYXRlci4KKwkJICogdGhlIGFjdHVhbCBuYW1lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBUeXBlY2hlY2tpbmcgY29tZXMgbGF0ZXIuCiAJCSAqLwotCQlzdGF0dXMgPSBhY3BpX25zX3NlYXJjaF9ub2RlKHRhcmdldF9uYW1lLCBwYXJlbnRfbm9kZSwKKwkJc3RhdHVzID0KKwkJICAgIGFjcGlfbnNfc2VhcmNoX29uZV9zY29wZSh0YXJnZXRfbmFtZSwgcGFyZW50X25vZGUsCiAJCQkJCSAgICAgQUNQSV9UWVBFX0FOWSwgcmV0dXJuX25vZGUpOwogCQlpZiAoQUNQSV9TVUNDRVNTKHN0YXR1cykpIHsKIAkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQl9CiAKLQkJLyoKLQkJICogTm90IGZvdW5kIGhlcmUsIGdvIHVwIGFub3RoZXIgbGV2ZWwKLQkJICogKHVudGlsIHdlIHJlYWNoIHRoZSByb290KQotCQkgKi8KKwkJLyogTm90IGZvdW5kIGhlcmUsIGdvIHVwIGFub3RoZXIgbGV2ZWwgKHVudGlsIHdlIHJlYWNoIHRoZSByb290KSAqLworCiAJCXBhcmVudF9ub2RlID0gYWNwaV9uc19nZXRfcGFyZW50X25vZGUocGFyZW50X25vZGUpOwogCX0KIApAQCAtMjczLDcgKzI4MCw3IEBACiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgogICogREVTQ1JJUFRJT046IFNlYXJjaCBmb3IgYSBuYW1lIHNlZ21lbnQgaW4gYSBzaW5nbGUgbmFtZXNwYWNlIGxldmVsLAotICogICAgICAgICAgICAgIG9wdGlvbmFsbHkgYWRkaW5nIGl0IGlmIGl0IGlzIG5vdCBmb3VuZC4gIElmIHRoZSBwYXNzZWQKKyAqICAgICAgICAgICAgICBvcHRpb25hbGx5IGFkZGluZyBpdCBpZiBpdCBpcyBub3QgZm91bmQuIElmIHRoZSBwYXNzZWQKICAqICAgICAgICAgICAgICBUeXBlIGlzIG5vdCBBbnkgYW5kIHRoZSB0eXBlIHByZXZpb3VzbHkgc3RvcmVkIGluIHRoZQogICogICAgICAgICAgICAgIGVudHJ5IHdhcyBBbnkgKGkuZS4gdW5rbm93biksIHVwZGF0ZSB0aGUgc3RvcmVkIHR5cGUuCiAgKgpAQCAtMjkzLDI5ICszMDAsNDYgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5ld19ub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfc2VhcmNoX2FuZF9lbnRlciIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfc2VhcmNoX2FuZF9lbnRlcik7CiAKIAkvKiBQYXJhbWV0ZXIgdmFsaWRhdGlvbiAqLwogCiAJaWYgKCFub2RlIHx8ICF0YXJnZXRfbmFtZSB8fCAhcmV0dXJuX25vZGUpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCSAgICAiTnVsbCBwYXJhbTogTm9kZSAlcCBOYW1lICVYIHJldHVybl9ub2RlICVwIiwKKwkJCSAgICAiTnVsbCBwYXJhbWV0ZXI6IE5vZGUgJXAgTmFtZSAlWCBSZXR1cm5Ob2RlICVwIiwKIAkJCSAgICBub2RlLCB0YXJnZXRfbmFtZSwgcmV0dXJuX25vZGUpKTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAotCS8qIE5hbWUgbXVzdCBjb25zaXN0IG9mIHByaW50YWJsZSBjaGFyYWN0ZXJzICovCi0KKwkvKgorCSAqIE5hbWUgbXVzdCBjb25zaXN0IG9mIHZhbGlkIEFDUEkgY2hhcmFjdGVycy4gV2Ugd2lsbCByZXBhaXIgdGhlIG5hbWUgaWYKKwkgKiBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFib3J0IGJlY2F1c2Ugb2YgdGhpcywgYnV0IHdlIHdhbnQKKwkgKiBhbGwgbmFtZXNwYWNlIG5hbWVzIHRvIGJlIHByaW50YWJsZS4gQSB3YXJuaW5nIG1lc3NhZ2UgaXMgYXBwcm9wcmlhdGUuCisJICoKKwkgKiBUaGlzIGlzc3VlIGNhbWUgdXAgYmVjYXVzZSB0aGVyZSBhcmUgaW4gZmFjdCBtYWNoaW5lcyB0aGF0IGV4aGliaXQKKwkgKiB0aGlzIHByb2JsZW0sIGFuZCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZW5hYmxlIEFDUEkgc3VwcG9ydCBmb3IgdGhlbSwKKwkgKiBldmVuIHRob3VnaCB0aGVyZSBhcmUgYSBmZXcgYmFkIG5hbWVzLgorCSAqLwogCWlmICghYWNwaV91dF92YWxpZF9hY3BpX25hbWUodGFyZ2V0X25hbWUpKSB7Ci0JCUFDUElfRVJST1IoKEFFX0lORk8sICJCYWQgY2hhcmFjdGVyIGluIEFDUEkgTmFtZTogJVgiLAotCQkJICAgIHRhcmdldF9uYW1lKSk7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfQ0hBUkFDVEVSKTsKKwkJdGFyZ2V0X25hbWUgPSBhY3BpX3V0X3JlcGFpcl9uYW1lKHRhcmdldF9uYW1lKTsKKworCQkvKiBSZXBvcnQgd2FybmluZyBvbmx5IGlmIGluIHN0cmljdCBtb2RlIG9yIGRlYnVnIG1vZGUgKi8KKworCQlpZiAoIWFjcGlfZ2JsX2VuYWJsZV9pbnRlcnByZXRlcl9zbGFjaykgeworCQkJQUNQSV9XQVJOSU5HKChBRV9JTkZPLAorCQkJCSAgICAgICJGb3VuZCBiYWQgY2hhcmFjdGVyKHMpIGluIG5hbWUsIHJlcGFpcmVkOiBbJTQuNHNdXG4iLAorCQkJCSAgICAgIEFDUElfQ0FTVF9QVFIoY2hhciwgJnRhcmdldF9uYW1lKSkpOworCQl9IGVsc2UgeworCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9XQVJOLAorCQkJCQkgICJGb3VuZCBiYWQgY2hhcmFjdGVyKHMpIGluIG5hbWUsIHJlcGFpcmVkOiBbJTQuNHNdXG4iLAorCQkJCQkgIEFDUElfQ0FTVF9QVFIoY2hhciwgJnRhcmdldF9uYW1lKSkpOworCQl9CiAJfQogCiAJLyogVHJ5IHRvIGZpbmQgdGhlIG5hbWUgaW4gdGhlIG5hbWVzcGFjZSBsZXZlbCBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciAqLwogCiAJKnJldHVybl9ub2RlID0gQUNQSV9FTlRSWV9OT1RfRk9VTkQ7Ci0Jc3RhdHVzID0gYWNwaV9uc19zZWFyY2hfbm9kZSh0YXJnZXRfbmFtZSwgbm9kZSwgdHlwZSwgcmV0dXJuX25vZGUpOworCXN0YXR1cyA9IGFjcGlfbnNfc2VhcmNoX29uZV9zY29wZSh0YXJnZXRfbmFtZSwgbm9kZSwgdHlwZSwgcmV0dXJuX25vZGUpOwogCWlmIChzdGF0dXMgIT0gQUVfTk9UX0ZPVU5EKSB7CiAJCS8qCiAJCSAqIElmIHdlIGZvdW5kIGl0IEFORCB0aGUgcmVxdWVzdCBzcGVjaWZpZXMgdGhhdCBhIGZpbmQgaXMgYW4gZXJyb3IsCkBAIC0zMjUsMTggKzM0OSwxNiBAQAogCQkJc3RhdHVzID0gQUVfQUxSRUFEWV9FWElTVFM7CiAJCX0KIAotCQkvKgotCQkgKiBFaXRoZXIgZm91bmQgaXQgb3IgdGhlcmUgd2FzIGFuIGVycm9yCi0JCSAqIC0tIGZpbmlzaGVkIGVpdGhlciB3YXkKLQkJICovCisJCS8qIEVpdGhlciBmb3VuZCBpdCBvciB0aGVyZSB3YXMgYW4gZXJyb3I6IGZpbmlzaGVkIGVpdGhlciB3YXkgKi8KKwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKIAkvKgotCSAqIFRoZSBuYW1lIHdhcyBub3QgZm91bmQuICBJZiB3ZSBhcmUgTk9UIHBlcmZvcm1pbmcgdGhlIGZpcnN0IHBhc3MKKwkgKiBUaGUgbmFtZSB3YXMgbm90IGZvdW5kLiBJZiB3ZSBhcmUgTk9UIHBlcmZvcm1pbmcgdGhlIGZpcnN0IHBhc3MKIAkgKiAobmFtZSBlbnRyeSkgb2YgbG9hZGluZyB0aGUgbmFtZXNwYWNlLCBzZWFyY2ggdGhlIHBhcmVudCB0cmVlIChhbGwgdGhlCiAJICogd2F5IHRvIHRoZSByb290IGlmIG5lY2Vzc2FyeS4pIFdlIGRvbid0IHdhbnQgdG8gcGVyZm9ybSB0aGUgcGFyZW50Ci0JICogc2VhcmNoIHdoZW4gdGhlIG5hbWVzcGFjZSBpcyBhY3R1YWxseSBiZWluZyBsb2FkZWQuICBXZSB3YW50IHRvIHBlcmZvcm0KKwkgKiBzZWFyY2ggd2hlbiB0aGUgbmFtZXNwYWNlIGlzIGFjdHVhbGx5IGJlaW5nIGxvYWRlZC4gV2Ugd2FudCB0byBwZXJmb3JtCiAJICogdGhlIHNlYXJjaCB3aGVuIG5hbWVzcGFjZSByZWZlcmVuY2VzIGFyZSBiZWluZyByZXNvbHZlZCAobG9hZCBwYXNzIDIpCiAJICogYW5kIGR1cmluZyB0aGUgZXhlY3V0aW9uIHBoYXNlLgogCSAqLwpAQCAtMzU0LDkgKzM3Niw4IEBACiAJCX0KIAl9CiAKLQkvKgotCSAqIEluIGV4ZWN1dGUgbW9kZSwganVzdCBzZWFyY2gsIG5ldmVyIGFkZCBuYW1lcy4gIEV4aXQgbm93LgotCSAqLworCS8qIEluIGV4ZWN1dGUgbW9kZSwganVzdCBzZWFyY2gsIG5ldmVyIGFkZCBuYW1lcy4gRXhpdCBub3cgKi8KKwogCWlmIChpbnRlcnByZXRlcl9tb2RlID09IEFDUElfSU1PREVfRVhFQ1VURSkgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX05BTUVTLAogCQkJCSAgIiU0LjRzIE5vdCBmb3VuZCBpbiAlcCBbTm90IGFkZGluZ11cbiIsCkBAIC0zNzEsMTEgKzM5MiwxOCBAQAogCWlmICghbmV3X25vZGUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQorI2lmZGVmIEFDUElfQVNMX0NPTVBJTEVSCisJLyoKKwkgKiBOb2RlIGlzIGFuIG9iamVjdCBkZWZpbmVkIGJ5IGFuIEV4dGVybmFsKCkgc3RhdGVtZW50CisJICovCisJaWYgKGZsYWdzICYgQUNQSV9OU19FWFRFUk5BTCkgeworCQluZXdfbm9kZS0+ZmxhZ3MgfD0gQU5PQkpfSVNfRVhURVJOQUw7CisJfQorI2VuZGlmCiAKIAkvKiBJbnN0YWxsIHRoZSBuZXcgb2JqZWN0IGludG8gdGhlIHBhcmVudCdzIGxpc3Qgb2YgY2hpbGRyZW4gKi8KIAogCWFjcGlfbnNfaW5zdGFsbF9ub2RlKHdhbGtfc3RhdGUsIG5vZGUsIG5ld19ub2RlLCB0eXBlKTsKIAkqcmV0dXJuX25vZGUgPSBuZXdfbm9kZTsKLQogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zdXRpbHMuYyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN1dGlscy5jCmluZGV4IDNlN2NhZDUuLmFhNGU3OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN1dGlscy5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN1dGlscy5jCkBAIC03OCwxNSArNzgsMTcgQEAKIAkJICAgICBjaGFyICppbnRlcm5hbF9uYW1lLCBhY3BpX3N0YXR1cyBsb29rdXBfc3RhdHVzKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKKwl1MzIgYmFkX25hbWU7CiAJY2hhciAqbmFtZSA9IE5VTEw7CiAKLQlhY3BpX3V0X3JlcG9ydF9lcnJvcihtb2R1bGVfbmFtZSwgbGluZV9udW1iZXIpOworCWFjcGlfb3NfcHJpbnRmKCJBQ1BJIEVycm9yICglcy0lMDRkKTogIiwgbW9kdWxlX25hbWUsIGxpbmVfbnVtYmVyKTsKIAogCWlmIChsb29rdXBfc3RhdHVzID09IEFFX0JBRF9DSEFSQUNURVIpIHsKKwogCQkvKiBUaGVyZSBpcyBhIG5vbi1hc2NpaSBjaGFyYWN0ZXIgaW4gdGhlIG5hbWUgKi8KIAotCQlhY3BpX29zX3ByaW50ZigiWzB4JTQuNFhdIChOT04tQVNDSUkpIiwKLQkJCSAgICAgICAqKEFDUElfQ0FTVF9QVFIodTMyLCBpbnRlcm5hbF9uYW1lKSkpOworCQlBQ1BJX01PVkVfMzJfVE9fMzIoJmJhZF9uYW1lLCBpbnRlcm5hbF9uYW1lKTsKKwkJYWNwaV9vc19wcmludGYoIlsweCU0LjRYXSAoTk9OLUFTQ0lJKSIsIGJhZF9uYW1lKTsKIAl9IGVsc2UgewogCQkvKiBDb252ZXJ0IHBhdGggdG8gZXh0ZXJuYWwgZm9ybWF0ICovCiAKQEAgLTEwMiw3ICsxMDQsNyBAQAogCQl9CiAKIAkJaWYgKG5hbWUpIHsKLQkJCUFDUElfTUVNX0ZSRUUobmFtZSk7CisJCQlBQ1BJX0ZSRUUobmFtZSk7CiAJCX0KIAl9CiAKQEAgLTEzNywxMSArMTM5LDEyIEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlID0gcHJlZml4X25vZGU7CiAKLQlhY3BpX3V0X3JlcG9ydF9lcnJvcihtb2R1bGVfbmFtZSwgbGluZV9udW1iZXIpOworCWFjcGlfb3NfcHJpbnRmKCJBQ1BJIEVycm9yICglcy0lMDRkKTogIiwgbW9kdWxlX25hbWUsIGxpbmVfbnVtYmVyKTsKIAogCWlmIChwYXRoKSB7Ci0JCXN0YXR1cyA9IGFjcGlfbnNfZ2V0X25vZGVfYnlfcGF0aChwYXRoLCBwcmVmaXhfbm9kZSwKLQkJCQkJCSAgQUNQSV9OU19OT19VUFNFQVJDSCwgJm5vZGUpOworCQlzdGF0dXMgPQorCQkgICAgYWNwaV9uc19nZXRfbm9kZShwcmVmaXhfbm9kZSwgcGF0aCwgQUNQSV9OU19OT19VUFNFQVJDSCwKKwkJCQkgICAgICZub2RlKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlhY3BpX29zX3ByaW50ZigiW0NvdWxkIG5vdCBnZXQgbm9kZSBieSBwYXRobmFtZV0iKTsKIAkJfQpAQCAtMTg1LDcgKzE4OCw3IEBACiAJCX0KIAogCQlhY3BpX29zX3ByaW50ZigiWyVzXSAoTm9kZSAlcCkiLCAoY2hhciAqKWJ1ZmZlci5wb2ludGVyLCBub2RlKTsKLQkJQUNQSV9NRU1fRlJFRShidWZmZXIucG9pbnRlcik7CisJCUFDUElfRlJFRShidWZmZXIucG9pbnRlcik7CiAJfQogfQogCkBAIC0yMzksNyArMjQyLDcgQEAKIAogYWNwaV9vYmplY3RfdHlwZSBhY3BpX25zX2dldF90eXBlKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICogbm9kZSkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19nZXRfdHlwZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZ2V0X3R5cGUpOwogCiAJaWYgKCFub2RlKSB7CiAJCUFDUElfV0FSTklORygoQUVfSU5GTywgIk51bGwgTm9kZSBwYXJhbWV0ZXIiKSk7CkBAIC0yNjQsOSArMjY3LDEwIEBACiAKIHUzMiBhY3BpX25zX2xvY2FsKGFjcGlfb2JqZWN0X3R5cGUgdHlwZSkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19sb2NhbCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfbG9jYWwpOwogCiAJaWYgKCFhY3BpX3V0X3ZhbGlkX29iamVjdF90eXBlKHR5cGUpKSB7CisKIAkJLyogVHlwZSBjb2RlIG91dCBvZiByYW5nZSAgKi8KIAogCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sICJJbnZhbGlkIE9iamVjdCBUeXBlICVYIiwgdHlwZSkpOwpAQCAtMzYzLDcgKzM2Nyw3IEBACiAJY2hhciAqcmVzdWx0ID0gTlVMTDsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19idWlsZF9pbnRlcm5hbF9uYW1lIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19idWlsZF9pbnRlcm5hbF9uYW1lKTsKIAogCS8qIFNldHVwIHRoZSBjb3JyZWN0IHByZWZpeGVzLCBjb3VudHMsIGFuZCBwb2ludGVycyAqLwogCkBAIC00MTEsNiArNDE1LDcgQEAKIAkJZm9yIChpID0gMDsgaSA8IEFDUElfTkFNRV9TSVpFOyBpKyspIHsKIAkJCWlmIChhY3BpX25zX3ZhbGlkX3BhdGhfc2VwYXJhdG9yKCpleHRlcm5hbF9uYW1lKSB8fAogCQkJICAgICgqZXh0ZXJuYWxfbmFtZSA9PSAwKSkgeworCiAJCQkJLyogUGFkIHRoZSBzZWdtZW50IHdpdGggdW5kZXJzY29yZShzKSBpZiBzZWdtZW50IGlzIHNob3J0ICovCiAKIAkJCQlyZXN1bHRbaV0gPSAnXyc7CkBAIC00NzMsNyArNDc4LDcgQEAKIAlzdHJ1Y3QgYWNwaV9uYW1lc3RyaW5nX2luZm8gaW5mbzsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc19pbnRlcm5hbGl6ZV9uYW1lIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc19pbnRlcm5hbGl6ZV9uYW1lKTsKIAogCWlmICgoIWV4dGVybmFsX25hbWUpIHx8ICgqZXh0ZXJuYWxfbmFtZSA9PSAwKSB8fCAoIWNvbnZlcnRlZF9uYW1lKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CkBAIC00ODYsNyArNDkxLDcgQEAKIAogCS8qIFdlIG5lZWQgYSBzZWdtZW50IHRvIHN0b3JlIHRoZSBpbnRlcm5hbCAgbmFtZSAqLwogCi0JaW50ZXJuYWxfbmFtZSA9IEFDUElfTUVNX0NBTExPQ0FURShpbmZvLmxlbmd0aCk7CisJaW50ZXJuYWxfbmFtZSA9IEFDUElfQUxMT0NBVEVfWkVST0VEKGluZm8ubGVuZ3RoKTsKIAlpZiAoIWludGVybmFsX25hbWUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQpAQCAtNDk2LDcgKzUwMSw3IEBACiAJaW5mby5pbnRlcm5hbF9uYW1lID0gaW50ZXJuYWxfbmFtZTsKIAlzdGF0dXMgPSBhY3BpX25zX2J1aWxkX2ludGVybmFsX25hbWUoJmluZm8pOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlBQ1BJX01FTV9GUkVFKGludGVybmFsX25hbWUpOworCQlBQ1BJX0ZSRUUoaW50ZXJuYWxfbmFtZSk7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCX0KIApAQCAtNTMzLDcgKzUzOCw3IEBACiAJYWNwaV9uYXRpdmVfdWludCBpID0gMDsKIAlhY3BpX25hdGl2ZV91aW50IGogPSAwOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfZXh0ZXJuYWxpemVfbmFtZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZXh0ZXJuYWxpemVfbmFtZSk7CiAKIAlpZiAoIWludGVybmFsX25hbWVfbGVuZ3RoIHx8ICFpbnRlcm5hbF9uYW1lIHx8ICFjb252ZXJ0ZWRfbmFtZSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CkBAIC02MjgsNyArNjMzLDcgQEAKIAkvKgogCSAqIEJ1aWxkIGNvbnZlcnRlZF9uYW1lCiAJICovCi0JKmNvbnZlcnRlZF9uYW1lID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHJlcXVpcmVkX2xlbmd0aCk7CisJKmNvbnZlcnRlZF9uYW1lID0gQUNQSV9BTExPQ0FURV9aRVJPRUQocmVxdWlyZWRfbGVuZ3RoKTsKIAlpZiAoISgqY29udmVydGVkX25hbWUpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOwogCX0KQEAgLTY4MSwxMyArNjg2LDkgQEAKIAlBQ1BJX0ZVTkNUSU9OX0VOVFJZKCk7CiAKIAkvKgotCSAqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbi4KKwkgKiBTaW1wbGUgaW1wbGVtZW50YXRpb24KIAkgKi8KLQlpZiAoIWhhbmRsZSkgewotCQlyZXR1cm4gKE5VTEwpOwotCX0KLQotCWlmIChoYW5kbGUgPT0gQUNQSV9ST09UX09CSkVDVCkgeworCWlmICgoIWhhbmRsZSkgfHwgKGhhbmRsZSA9PSBBQ1BJX1JPT1RfT0JKRUNUKSkgewogCQlyZXR1cm4gKGFjcGlfZ2JsX3Jvb3Rfbm9kZSk7CiAJfQogCkBAIC02OTcsNyArNjk4LDcgQEAKIAkJcmV0dXJuIChOVUxMKTsKIAl9CiAKLQlyZXR1cm4gKChzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKWhhbmRsZSk7CisJcmV0dXJuIChBQ1BJX0NBU1RfUFRSKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlLCBoYW5kbGUpKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTc1Miw3ICs3NTMsNyBAQAogewogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfdGVybWluYXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShuc190ZXJtaW5hdGUpOwogCiAJLyoKIAkgKiAxKSBGcmVlIHRoZSBlbnRpcmUgbmFtZXNwYWNlIC0tIGFsbCBub2RlcyBhbmQgb2JqZWN0cwpAQCAtNzkyLDkgKzc5MywxMCBAQAogCiB1MzIgYWNwaV9uc19vcGVuc19zY29wZShhY3BpX29iamVjdF90eXBlIHR5cGUpCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIoIm5zX29wZW5zX3Njb3BlIiwgYWNwaV91dF9nZXRfdHlwZV9uYW1lKHR5cGUpKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUihuc19vcGVuc19zY29wZSwgYWNwaV91dF9nZXRfdHlwZV9uYW1lKHR5cGUpKTsKIAogCWlmICghYWNwaV91dF92YWxpZF9vYmplY3RfdHlwZSh0eXBlKSkgeworCiAJCS8qIHR5cGUgY29kZSBvdXQgb2YgcmFuZ2UgICovCiAKIAkJQUNQSV9XQVJOSU5HKChBRV9JTkZPLCAiSW52YWxpZCBPYmplY3QgVHlwZSAlWCIsIHR5cGUpKTsKQEAgLTgwNiwxMiArODA4LDEyIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgotICogRlVOQ1RJT046ICAgIGFjcGlfbnNfZ2V0X25vZGVfYnlfcGF0aAorICogRlVOQ1RJT046ICAgIGFjcGlfbnNfZ2V0X25vZGUKICAqCiAgKiBQQVJBTUVURVJTOiAgKlBhdGhuYW1lICAgLSBOYW1lIHRvIGJlIGZvdW5kLCBpbiBleHRlcm5hbCAoQVNMKSBmb3JtYXQuIFRoZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAoYmFja3NsYXNoKSBhbmQgXiAoY2FyYXQpIHByZWZpeGVzLCBhbmQgdGhlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuIChwZXJpb2QpIHRvIHNlcGFyYXRlIHNlZ21lbnRzIGFyZSBzdXBwb3J0ZWQuCi0gKiAgICAgICAgICAgICAgc3RhcnRfbm9kZSAgLSBSb290IG9mIHN1YnRyZWUgdG8gYmUgc2VhcmNoZWQsIG9yIE5TX0FMTCBmb3IgdGhlCisgKiAgICAgICAgICAgICAgcHJlZml4X25vZGUgIC0gUm9vdCBvZiBzdWJ0cmVlIHRvIGJlIHNlYXJjaGVkLCBvciBOU19BTEwgZm9yIHRoZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBvZiB0aGUgbmFtZSBzcGFjZS4gIElmIE5hbWUgaXMgZnVsbHkKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllZCAoZmlyc3QgczggaXMgJ1wnKSwgdGhlIHBhc3NlZCB2YWx1ZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgU2NvcGUgd2lsbCBub3QgYmUgYWNjZXNzZWQuCkBAIC04MjcsMjMgKzgyOSwyOSBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogYWNwaV9zdGF0dXMKLWFjcGlfbnNfZ2V0X25vZGVfYnlfcGF0aChjaGFyICpwYXRobmFtZSwKLQkJCSBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqc3RhcnRfbm9kZSwKLQkJCSB1MzIgZmxhZ3MsIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICoqcmV0dXJuX25vZGUpCithY3BpX25zX2dldF9ub2RlKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwcmVmaXhfbm9kZSwKKwkJIGNoYXIgKnBhdGhuYW1lLAorCQkgdTMyIGZsYWdzLCBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKnJldHVybl9ub2RlKQogewogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSBzY29wZV9pbmZvOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKLQljaGFyICppbnRlcm5hbF9wYXRoID0gTlVMTDsKKwljaGFyICppbnRlcm5hbF9wYXRoOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoIm5zX2dldF9ub2RlX2J5X3BhdGgiLCBwYXRobmFtZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIobnNfZ2V0X25vZGUsIHBhdGhuYW1lKTsKIAotCWlmIChwYXRobmFtZSkgewotCQkvKiBDb252ZXJ0IHBhdGggdG8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gKi8KLQotCQlzdGF0dXMgPSBhY3BpX25zX2ludGVybmFsaXplX25hbWUocGF0aG5hbWUsICZpbnRlcm5hbF9wYXRoKTsKLQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwlpZiAoIXBhdGhuYW1lKSB7CisJCSpyZXR1cm5fbm9kZSA9IHByZWZpeF9ub2RlOworCQlpZiAoIXByZWZpeF9ub2RlKSB7CisJCQkqcmV0dXJuX25vZGUgPSBhY3BpX2dibF9yb290X25vZGU7CiAJCX0KKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKKwl9CisKKwkvKiBDb252ZXJ0IHBhdGggdG8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gKi8KKworCXN0YXR1cyA9IGFjcGlfbnNfaW50ZXJuYWxpemVfbmFtZShwYXRobmFtZSwgJmludGVybmFsX3BhdGgpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKIAkvKiBNdXN0IGxvY2sgbmFtZXNwYWNlIGR1cmluZyBsb29rdXAgKi8KQEAgLTg1NSwyNiArODYzLDIzIEBACiAKIAkvKiBTZXR1cCBsb29rdXAgc2NvcGUgKHNlYXJjaCBzdGFydGluZyBwb2ludCkgKi8KIAotCXNjb3BlX2luZm8uc2NvcGUubm9kZSA9IHN0YXJ0X25vZGU7CisJc2NvcGVfaW5mby5zY29wZS5ub2RlID0gcHJlZml4X25vZGU7CiAKIAkvKiBMb29rdXAgdGhlIG5hbWUgaW4gdGhlIG5hbWVzcGFjZSAqLwogCi0Jc3RhdHVzID0gYWNwaV9uc19sb29rdXAoJnNjb3BlX2luZm8sIGludGVybmFsX3BhdGgsCi0JCQkJQUNQSV9UWVBFX0FOWSwgQUNQSV9JTU9ERV9FWEVDVVRFLAotCQkJCShmbGFncyB8IEFDUElfTlNfRE9OVF9PUEVOX1NDT1BFKSwKLQkJCQlOVUxMLCByZXR1cm5fbm9kZSk7CisJc3RhdHVzID0gYWNwaV9uc19sb29rdXAoJnNjb3BlX2luZm8sIGludGVybmFsX3BhdGgsIEFDUElfVFlQRV9BTlksCisJCQkJQUNQSV9JTU9ERV9FWEVDVVRFLAorCQkJCShmbGFncyB8IEFDUElfTlNfRE9OVF9PUEVOX1NDT1BFKSwgTlVMTCwKKwkJCQlyZXR1cm5fbm9kZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIiVzLCAlc1xuIiwKLQkJCQkgIGludGVybmFsX3BhdGgsCi0JCQkJICBhY3BpX2Zvcm1hdF9leGNlcHRpb24oc3RhdHVzKSkpOworCQkJCSAgcGF0aG5hbWUsIGFjcGlfZm9ybWF0X2V4Y2VwdGlvbihzdGF0dXMpKSk7CiAJfQogCiAJKHZvaWQpYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX05BTUVTUEFDRSk7CiAKICAgICAgIGNsZWFudXA6Ci0JaWYgKGludGVybmFsX3BhdGgpIHsKLQkJQUNQSV9NRU1fRlJFRShpbnRlcm5hbF9wYXRoKTsKLQl9CisJQUNQSV9GUkVFKGludGVybmFsX3BhdGgpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCkBAIC05NjAsOSArOTY1LDEwIEBACiB7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnBhcmVudF9ub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgibnNfZmluZF9wYXJlbnRfbmFtZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfZmluZF9wYXJlbnRfbmFtZSk7CiAKIAlpZiAoY2hpbGRfbm9kZSkgeworCiAJCS8qIFZhbGlkIGVudHJ5LiAgR2V0IHRoZSBwYXJlbnQgTm9kZSAqLwogCiAJCXBhcmVudF9ub2RlID0gYWNwaV9uc19nZXRfcGFyZW50X25vZGUoY2hpbGRfbm9kZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zd2Fsay5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3dhbGsuYwppbmRleCBmY2FiMWU3Li5jOGY2YmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zd2Fsay5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN3YWxrLmMKQEAgLTc2LDYgKzc2LDcgQEAKIAlBQ1BJX0ZVTkNUSU9OX0VOVFJZKCk7CiAKIAlpZiAoIWNoaWxkX25vZGUpIHsKKwogCQkvKiBJdCdzIHJlYWxseSB0aGUgcGFyZW50J3MgX3Njb3BlXyB0aGF0IHdlIHdhbnQgKi8KIAogCQlpZiAocGFyZW50X25vZGUtPmNoaWxkKSB7CkBAIC05Miw2ICs5Myw3IEBACiAJLyogSWYgYW55IHR5cGUgaXMgT0ssIHdlIGFyZSBkb25lICovCiAKIAlpZiAodHlwZSA9PSBBQ1BJX1RZUEVfQU5ZKSB7CisKIAkJLyogbmV4dF9ub2RlIGlzIE5VTEwgaWYgd2UgYXJlIGF0IHRoZSBlbmQtb2YtbGlzdCAqLwogCiAJCXJldHVybiAobmV4dF9ub2RlKTsKQEAgLTEwMCw2ICsxMDIsNyBAQAogCS8qIE11c3Qgc2VhcmNoIGZvciB0aGUgbm9kZSAtLSBidXQgd2l0aGluIHRoaXMgc2NvcGUgb25seSAqLwogCiAJd2hpbGUgKG5leHRfbm9kZSkgeworCiAJCS8qIElmIHR5cGUgbWF0Y2hlcywgd2UgYXJlIGRvbmUgKi8KIAogCQlpZiAobmV4dF9ub2RlLT50eXBlID09IHR5cGUpIHsKQEAgLTE2MSw3ICsxNjQsNyBAQAogCWFjcGlfb2JqZWN0X3R5cGUgY2hpbGRfdHlwZTsKIAl1MzIgbGV2ZWw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJuc193YWxrX25hbWVzcGFjZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UobnNfd2Fsa19uYW1lc3BhY2UpOwogCiAJLyogU3BlY2lhbCBjYXNlIGZvciB0aGUgbmFtZXNwYWNlIFJvb3QgTm9kZSAqLwogCkBAIC0xODIsNiArMTg1LDcgQEAKIAkgKiBidWJibGVkIHVwIHRvIChhbmQgcGFzc2VkKSB0aGUgb3JpZ2luYWwgcGFyZW50IGhhbmRsZSAoc3RhcnRfZW50cnkpCiAJICovCiAJd2hpbGUgKGxldmVsID4gMCkgeworCiAJCS8qIEdldCB0aGUgbmV4dCBub2RlIGluIHRoaXMgc2NvcGUuICBOdWxsIGlmIG5vdCBmb3VuZCAqLwogCiAJCXN0YXR1cyA9IEFFX09LOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3hmZXZhbC5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3hmZXZhbC5jCmluZGV4IGE5NWY2MzYuLjZkOWJkNDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zeGZldmFsLmMKKysrIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3hmZXZhbC5jCkBAIC00Miw4ICs0Miw2IEBACiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY25hbWVzcC5oPgogI2luY2x1ZGUgPGFjcGkvYWNpbnRlcnAuaD4KQEAgLTUxLDYgKzQ5LDcgQEAKICNkZWZpbmUgX0NPTVBPTkVOVCAgICAgICAgICBBQ1BJX05BTUVTUEFDRQogQUNQSV9NT0RVTEVfTkFNRSgibnN4ZmV2YWwiKQogCisjaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZXZhbHVhdGVfb2JqZWN0X3R5cGVkCkBAIC03MSwxOCArNzAsMTcgQEAKICAqICAgICAgICAgICAgICBiZSB2YWxpZCAobm9uLW51bGwpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNpZmRlZiBBQ1BJX0ZVVFVSRV9VU0FHRQogYWNwaV9zdGF0dXMKIGFjcGlfZXZhbHVhdGVfb2JqZWN0X3R5cGVkKGFjcGlfaGFuZGxlIGhhbmRsZSwKIAkJCSAgIGFjcGlfc3RyaW5nIHBhdGhuYW1lLAotCQkJICAgc3RydWN0IGFjcGlfb2JqZWN0X2xpc3QgKmV4dGVybmFsX3BhcmFtcywKLQkJCSAgIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0dXJuX2J1ZmZlciwKKwkJCSAgIHN0cnVjdCBhY3BpX29iamVjdF9saXN0ICogZXh0ZXJuYWxfcGFyYW1zLAorCQkJICAgc3RydWN0IGFjcGlfYnVmZmVyICogcmV0dXJuX2J1ZmZlciwKIAkJCSAgIGFjcGlfb2JqZWN0X3R5cGUgcmV0dXJuX3R5cGUpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXU4IG11c3RfZnJlZSA9IEZBTFNFOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9ldmFsdWF0ZV9vYmplY3RfdHlwZWQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZXZhbHVhdGVfb2JqZWN0X3R5cGVkKTsKIAogCS8qIFJldHVybiBidWZmZXIgbXVzdCBiZSB2YWxpZCAqLwogCkBAIC0xMTAsNiArMTA4LDcgQEAKIAl9CiAKIAlpZiAocmV0dXJuX2J1ZmZlci0+bGVuZ3RoID09IDApIHsKKwogCQkvKiBFcnJvciBiZWNhdXNlIGNhbGxlciBzcGVjaWZpY2FsbHkgYXNrZWQgZm9yIGEgcmV0dXJuIHZhbHVlICovCiAKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywgIk5vIHJldHVybiB2YWx1ZSIpKTsKQEAgLTEzMSw2ICsxMzAsNyBAQAogCQkgICAgYWNwaV91dF9nZXRfdHlwZV9uYW1lKHJldHVybl90eXBlKSkpOwogCiAJaWYgKG11c3RfZnJlZSkgeworCiAJCS8qIENhbGxlciB1c2VkIEFDUElfQUxMT0NBVEVfQlVGRkVSLCBmcmVlIHRoZSByZXR1cm4gYnVmZmVyICovCiAKIAkJYWNwaV9vc19mcmVlKHJldHVybl9idWZmZXItPnBvaW50ZXIpOwpAQCAtMTQwLDYgKzE0MCw4IEBACiAJcmV0dXJuX2J1ZmZlci0+bGVuZ3RoID0gMDsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfVFlQRSk7CiB9CisKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2V2YWx1YXRlX29iamVjdF90eXBlZCkKICNlbmRpZgkJCQkvKiAgQUNQSV9GVVRVUkVfVVNBR0UgICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNjEsNyArMTYzLDYgQEAKICAqICAgICAgICAgICAgICBiZSB2YWxpZCAobm9uLW51bGwpCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfZXZhbHVhdGVfb2JqZWN0KGFjcGlfaGFuZGxlIGhhbmRsZSwKIAkJICAgICBhY3BpX3N0cmluZyBwYXRobmFtZSwKQEAgLTE3MCw1MSArMTcxLDYxIEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfc3RhdHVzIHN0YXR1czI7Ci0Jc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gaW5mbzsKKwlzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvOwogCWFjcGlfc2l6ZSBidWZmZXJfc3BhY2VfbmVlZGVkOwogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9ldmFsdWF0ZV9vYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZXZhbHVhdGVfb2JqZWN0KTsKIAotCWluZm8ubm9kZSA9IGhhbmRsZTsKLQlpbmZvLnBhcmFtZXRlcnMgPSBOVUxMOwotCWluZm8ucmV0dXJuX29iamVjdCA9IE5VTEw7Ci0JaW5mby5wYXJhbWV0ZXJfdHlwZSA9IEFDUElfUEFSQU1fQVJHUzsKKwkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgZXZhbHVhdGlvbiBpbmZvcm1hdGlvbiBibG9jayAqLworCisJaW5mbyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHNpemVvZihzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvKSk7CisJaWYgKCFpbmZvKSB7CisJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOworCX0KKworCWluZm8tPnBhdGhuYW1lID0gcGF0aG5hbWU7CisJaW5mby0+cGFyYW1ldGVyX3R5cGUgPSBBQ1BJX1BBUkFNX0FSR1M7CisKKwkvKiBDb252ZXJ0IGFuZCB2YWxpZGF0ZSB0aGUgZGV2aWNlIGhhbmRsZSAqLworCisJaW5mby0+cHJlZml4X25vZGUgPSBhY3BpX25zX21hcF9oYW5kbGVfdG9fbm9kZShoYW5kbGUpOworCWlmICghaW5mby0+cHJlZml4X25vZGUpIHsKKwkJc3RhdHVzID0gQUVfQkFEX1BBUkFNRVRFUjsKKwkJZ290byBjbGVhbnVwOworCX0KIAogCS8qCi0JICogSWYgdGhlcmUgYXJlIHBhcmFtZXRlcnMgdG8gYmUgcGFzc2VkIHRvIHRoZSBvYmplY3QKLQkgKiAod2hpY2ggbXVzdCBiZSBhIGNvbnRyb2wgbWV0aG9kKSwgdGhlIGV4dGVybmFsIG9iamVjdHMKLQkgKiBtdXN0IGJlIGNvbnZlcnRlZCB0byBpbnRlcm5hbCBvYmplY3RzCisJICogSWYgdGhlcmUgYXJlIHBhcmFtZXRlcnMgdG8gYmUgcGFzc2VkIHRvIGEgY29udHJvbCBtZXRob2QsIHRoZSBleHRlcm5hbAorCSAqIG9iamVjdHMgbXVzdCBhbGwgYmUgY29udmVydGVkIHRvIGludGVybmFsIG9iamVjdHMKIAkgKi8KIAlpZiAoZXh0ZXJuYWxfcGFyYW1zICYmIGV4dGVybmFsX3BhcmFtcy0+Y291bnQpIHsKIAkJLyoKIAkJICogQWxsb2NhdGUgYSBuZXcgcGFyYW1ldGVyIGJsb2NrIGZvciB0aGUgaW50ZXJuYWwgb2JqZWN0cwogCQkgKiBBZGQgMSB0byBjb3VudCB0byBhbGxvdyBmb3IgbnVsbCB0ZXJtaW5hdGVkIGludGVybmFsIGxpc3QKIAkJICovCi0JCWluZm8ucGFyYW1ldGVycyA9IEFDUElfTUVNX0NBTExPQ0FURSgoKGFjcGlfc2l6ZSkKLQkJCQkJCSAgICAgIGV4dGVybmFsX3BhcmFtcy0+Y291bnQgKwotCQkJCQkJICAgICAgMSkgKiBzaXplb2Yodm9pZCAqKSk7Ci0JCWlmICghaW5mby5wYXJhbWV0ZXJzKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKKwkJaW5mby0+cGFyYW1ldGVycyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKCgoYWNwaV9zaXplKQorCQkJCQkJCSBleHRlcm5hbF9wYXJhbXMtPgorCQkJCQkJCSBjb3VudCArCisJCQkJCQkJIDEpICogc2l6ZW9mKHZvaWQgKikpOworCQlpZiAoIWluZm8tPnBhcmFtZXRlcnMpIHsKKwkJCXN0YXR1cyA9IEFFX05PX01FTU9SWTsKKwkJCWdvdG8gY2xlYW51cDsKIAkJfQogCi0JCS8qCi0JCSAqIENvbnZlcnQgZWFjaCBleHRlcm5hbCBvYmplY3QgaW4gdGhlIGxpc3QgdG8gYW4KLQkJICogaW50ZXJuYWwgb2JqZWN0Ci0JCSAqLworCQkvKiBDb252ZXJ0IGVhY2ggZXh0ZXJuYWwgb2JqZWN0IGluIHRoZSBsaXN0IHRvIGFuIGludGVybmFsIG9iamVjdCAqLworCiAJCWZvciAoaSA9IDA7IGkgPCBleHRlcm5hbF9wYXJhbXMtPmNvdW50OyBpKyspIHsKIAkJCXN0YXR1cyA9CiAJCQkgICAgYWNwaV91dF9jb3B5X2VvYmplY3RfdG9faW9iamVjdCgmZXh0ZXJuYWxfcGFyYW1zLT4KIAkJCQkJCQkgICAgcG9pbnRlcltpXSwKLQkJCQkJCQkgICAgJmluZm8uCisJCQkJCQkJICAgICZpbmZvLT4KIAkJCQkJCQkgICAgcGFyYW1ldGVyc1tpXSk7CiAJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCQlhY3BpX3V0X2RlbGV0ZV9pbnRlcm5hbF9vYmplY3RfbGlzdChpbmZvLgotCQkJCQkJCQkgICAgcGFyYW1ldGVycyk7Ci0JCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJCQkJZ290byBjbGVhbnVwOwogCQkJfQogCQl9Ci0JCWluZm8ucGFyYW1ldGVyc1tleHRlcm5hbF9wYXJhbXMtPmNvdW50XSA9IE5VTEw7CisJCWluZm8tPnBhcmFtZXRlcnNbZXh0ZXJuYWxfcGFyYW1zLT5jb3VudF0gPSBOVUxMOwogCX0KIAogCS8qCkBAIC0yMjQsNDMgKzIzNSwzMSBAQAogCSAqIDMpIFZhbGlkIGhhbmRsZQogCSAqLwogCWlmICgocGF0aG5hbWUpICYmIChhY3BpX25zX3ZhbGlkX3Jvb3RfcHJlZml4KHBhdGhuYW1lWzBdKSkpIHsKLQkJLyoKLQkJICogIFRoZSBwYXRoIGlzIGZ1bGx5IHF1YWxpZmllZCwganVzdCBldmFsdWF0ZSBieSBuYW1lCi0JCSAqLwotCQlzdGF0dXMgPSBhY3BpX25zX2V2YWx1YXRlX2J5X25hbWUocGF0aG5hbWUsICZpbmZvKTsKKworCQkvKiBUaGUgcGF0aCBpcyBmdWxseSBxdWFsaWZpZWQsIGp1c3QgZXZhbHVhdGUgYnkgbmFtZSAqLworCisJCWluZm8tPnByZWZpeF9ub2RlID0gTlVMTDsKKwkJc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZShpbmZvKTsKIAl9IGVsc2UgaWYgKCFoYW5kbGUpIHsKIAkJLyoKLQkJICogQSBoYW5kbGUgaXMgb3B0aW9uYWwgaWZmIGEgZnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lCi0JCSAqIGlzIHNwZWNpZmllZC4gIFNpbmNlIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCBmdWxseQotCQkgKiBxdWFsaWZpZWQgbmFtZXMgYWJvdmUsIHRoaXMgaXMgYW4gZXJyb3IKKwkJICogQSBoYW5kbGUgaXMgb3B0aW9uYWwgaWZmIGEgZnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIGlzIHNwZWNpZmllZC4KKwkJICogU2luY2Ugd2UndmUgYWxyZWFkeSBoYW5kbGVkIGZ1bGx5IHF1YWxpZmllZCBuYW1lcyBhYm92ZSwgdGhpcyBpcworCQkgKiBhbiBlcnJvcgogCQkgKi8KIAkJaWYgKCFwYXRobmFtZSkgewotCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCQkgICAgIkJvdGggSGFuZGxlIGFuZCBQYXRobmFtZSBhcmUgTlVMTCIpKTsKKwkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywKKwkJCQkJICAiQm90aCBIYW5kbGUgYW5kIFBhdGhuYW1lIGFyZSBOVUxMIikpOwogCQl9IGVsc2UgewotCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJCQkgICAgIkhhbmRsZSBpcyBOVUxMIGFuZCBQYXRobmFtZSBpcyByZWxhdGl2ZSIpKTsKKwkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywKKwkJCQkJICAiTnVsbCBIYW5kbGUgd2l0aCByZWxhdGl2ZSBwYXRobmFtZSBbJXNdIiwKKwkJCQkJICBwYXRobmFtZSkpOwogCQl9CiAKIAkJc3RhdHVzID0gQUVfQkFEX1BBUkFNRVRFUjsKIAl9IGVsc2UgewotCQkvKgotCQkgKiBXZSBnZXQgaGVyZSBpZiB3ZSBoYXZlIGEgaGFuZGxlIC0tIGFuZCBpZiB3ZSBoYXZlIGEKLQkJICogcGF0aG5hbWUgaXQgaXMgcmVsYXRpdmUuICBUaGUgaGFuZGxlIHdpbGwgYmUgdmFsaWRhdGVkCi0JCSAqIGluIHRoZSBsb3dlciBwcm9jZWR1cmVzCi0JCSAqLwotCQlpZiAoIXBhdGhuYW1lKSB7Ci0JCQkvKgotCQkJICogVGhlIG51bGwgcGF0aG5hbWUgY2FzZSBtZWFucyB0aGUgaGFuZGxlIGlzIGZvcgotCQkJICogdGhlIGFjdHVhbCBvYmplY3QgdG8gYmUgZXZhbHVhdGVkCi0JCQkgKi8KLQkJCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGVfYnlfaGFuZGxlKCZpbmZvKTsKLQkJfSBlbHNlIHsKLQkJCS8qCi0JCQkgKiBCb3RoIGEgSGFuZGxlIGFuZCBhIHJlbGF0aXZlIFBhdGhuYW1lCi0JCQkgKi8KLQkJCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGVfcmVsYXRpdmUocGF0aG5hbWUsICZpbmZvKTsKLQkJfQorCQkvKiBXZSBoYXZlIGEgbmFtZXNwYWNlIGEgbm9kZSBhbmQgYSBwb3NzaWJsZSByZWxhdGl2ZSBwYXRoICovCisKKwkJc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZShpbmZvKTsKIAl9CiAKIAkvKgpAQCAtMjY4LDEwICsyNjcsMTAgQEAKIAkgKiBjb3B5IHRoZSByZXR1cm4gdmFsdWUgdG8gYW4gZXh0ZXJuYWwgb2JqZWN0LgogCSAqLwogCWlmIChyZXR1cm5fYnVmZmVyKSB7Ci0JCWlmICghaW5mby5yZXR1cm5fb2JqZWN0KSB7CisJCWlmICghaW5mby0+cmV0dXJuX29iamVjdCkgewogCQkJcmV0dXJuX2J1ZmZlci0+bGVuZ3RoID0gMDsKIAkJfSBlbHNlIHsKLQkJCWlmIChBQ1BJX0dFVF9ERVNDUklQVE9SX1RZUEUoaW5mby5yZXR1cm5fb2JqZWN0KSA9PQorCQkJaWYgKEFDUElfR0VUX0RFU0NSSVBUT1JfVFlQRShpbmZvLT5yZXR1cm5fb2JqZWN0KSA9PQogCQkJICAgIEFDUElfREVTQ19UWVBFX05BTUVEKSB7CiAJCQkJLyoKIAkJCQkgKiBJZiB3ZSByZWNlaXZlZCBhIE5TIE5vZGUgYXMgYSByZXR1cm4gb2JqZWN0LCB0aGlzIG1lYW5zIHRoYXQKQEAgLTI4MiwxOSArMjgxLDE5IEBACiAJCQkJICogc3VwcG9ydCBmb3IgdmFyaW91cyB0eXBlcyBhdCBhIGxhdGVyIGRhdGUgaWYgbmVjZXNzYXJ5LgogCQkJCSAqLwogCQkJCXN0YXR1cyA9IEFFX1RZUEU7Ci0JCQkJaW5mby5yZXR1cm5fb2JqZWN0ID0gTlVMTDsJLyogTm8gbmVlZCB0byBkZWxldGUgYSBOUyBOb2RlICovCisJCQkJaW5mby0+cmV0dXJuX29iamVjdCA9IE5VTEw7CS8qIE5vIG5lZWQgdG8gZGVsZXRlIGEgTlMgTm9kZSAqLwogCQkJCXJldHVybl9idWZmZXItPmxlbmd0aCA9IDA7CiAJCQl9CiAKIAkJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewotCQkJCS8qCi0JCQkJICogRmluZCBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIGlzIG5lZWRlZAotCQkJCSAqIHRvIGNvbnRhaW4gdGhlIHJldHVybmVkIG9iamVjdAotCQkJCSAqLworCisJCQkJLyogR2V0IHRoZSBzaXplIG9mIHRoZSByZXR1cm5lZCBvYmplY3QgKi8KKwogCQkJCXN0YXR1cyA9Ci0JCQkJICAgIGFjcGlfdXRfZ2V0X29iamVjdF9zaXplKGluZm8ucmV0dXJuX29iamVjdCwKKwkJCQkgICAgYWNwaV91dF9nZXRfb2JqZWN0X3NpemUoaW5mby0+cmV0dXJuX29iamVjdCwKIAkJCQkJCQkgICAgJmJ1ZmZlcl9zcGFjZV9uZWVkZWQpOwogCQkJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgeworCiAJCQkJCS8qIFZhbGlkYXRlL0FsbG9jYXRlL0NsZWFyIGNhbGxlciBidWZmZXIgKi8KIAogCQkJCQlzdGF0dXMgPQpAQCAtMzAzLDcgKzMwMiw4IEBACiAJCQkJCSAgICAgYnVmZmVyX3NwYWNlX25lZWRlZCk7CiAJCQkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQkJCQkJLyoKLQkJCQkJCSAqIENhbGxlcidzIGJ1ZmZlciBpcyB0b28gc21hbGwgb3IgYSBuZXcgb25lIGNhbid0IGJlIGFsbG9jYXRlZAorCQkJCQkJICogQ2FsbGVyJ3MgYnVmZmVyIGlzIHRvbyBzbWFsbCBvciBhIG5ldyBvbmUgY2FuJ3QKKwkJCQkJCSAqIGJlIGFsbG9jYXRlZAogCQkJCQkJICovCiAJCQkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sCiAJCQkJCQkJCSAgIk5lZWRlZCBidWZmZXIgc2l6ZSAlWCwgJXNcbiIsCkBAIC0zMTIsMTIgKzMxMiwxMSBAQAogCQkJCQkJCQkgIGFjcGlfZm9ybWF0X2V4Y2VwdGlvbgogCQkJCQkJCQkgIChzdGF0dXMpKSk7CiAJCQkJCX0gZWxzZSB7Ci0JCQkJCQkvKgotCQkJCQkJICogIFdlIGhhdmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgb2JqZWN0LCBidWlsZCBpdAotCQkJCQkJICovCisJCQkJCQkvKiBXZSBoYXZlIGVub3VnaCBzcGFjZSBmb3IgdGhlIG9iamVjdCwgYnVpbGQgaXQgKi8KKwogCQkJCQkJc3RhdHVzID0KIAkJCQkJCSAgICBhY3BpX3V0X2NvcHlfaW9iamVjdF90b19lb2JqZWN0Ci0JCQkJCQkgICAgKGluZm8ucmV0dXJuX29iamVjdCwKKwkJCQkJCSAgICAoaW5mby0+cmV0dXJuX29iamVjdCwKIAkJCQkJCSAgICAgcmV0dXJuX2J1ZmZlcik7CiAJCQkJCX0KIAkJCQl9CkBAIC0zMjUsMzUgKzMyNCwzNyBAQAogCQl9CiAJfQogCi0JaWYgKGluZm8ucmV0dXJuX29iamVjdCkgeworCWlmIChpbmZvLT5yZXR1cm5fb2JqZWN0KSB7CiAJCS8qCi0JCSAqIERlbGV0ZSB0aGUgaW50ZXJuYWwgcmV0dXJuIG9iamVjdC4gIE5PVEU6IEludGVycHJldGVyCi0JCSAqIG11c3QgYmUgbG9ja2VkIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9uLgorCQkgKiBEZWxldGUgdGhlIGludGVybmFsIHJldHVybiBvYmplY3QuIE5PVEU6IEludGVycHJldGVyIG11c3QgYmUKKwkJICogbG9ja2VkIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9uLgogCQkgKi8KIAkJc3RhdHVzMiA9IGFjcGlfZXhfZW50ZXJfaW50ZXJwcmV0ZXIoKTsKIAkJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMyKSkgewotCQkJLyoKLQkJCSAqIERlbGV0ZSB0aGUgaW50ZXJuYWwgcmV0dXJuIG9iamVjdC4gKE9yIGF0IGxlYXN0Ci0JCQkgKiBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBieSBvbmUpCi0JCQkgKi8KLQkJCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShpbmZvLnJldHVybl9vYmplY3QpOworCisJCQkvKiBSZW1vdmUgb25lIHJlZmVyZW5jZSBvbiB0aGUgcmV0dXJuIG9iamVjdCAoc2hvdWxkIGRlbGV0ZSBpdCkgKi8KKworCQkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGluZm8tPnJldHVybl9vYmplY3QpOwogCQkJYWNwaV9leF9leGl0X2ludGVycHJldGVyKCk7CiAJCX0KIAl9CiAKLQkvKgotCSAqIEZyZWUgdGhlIGlucHV0IHBhcmFtZXRlciBsaXN0IChpZiB3ZSBjcmVhdGVkIG9uZSksCi0JICovCi0JaWYgKGluZm8ucGFyYW1ldGVycykgeworICAgICAgY2xlYW51cDoKKworCS8qIEZyZWUgdGhlIGlucHV0IHBhcmFtZXRlciBsaXN0IChpZiB3ZSBjcmVhdGVkIG9uZSkgKi8KKworCWlmIChpbmZvLT5wYXJhbWV0ZXJzKSB7CisKIAkJLyogRnJlZSB0aGUgYWxsb2NhdGVkIHBhcmFtZXRlciBibG9jayAqLwogCi0JCWFjcGlfdXRfZGVsZXRlX2ludGVybmFsX29iamVjdF9saXN0KGluZm8ucGFyYW1ldGVycyk7CisJCWFjcGlfdXRfZGVsZXRlX2ludGVybmFsX29iamVjdF9saXN0KGluZm8tPnBhcmFtZXRlcnMpOwogCX0KIAorCUFDUElfRlJFRShpbmZvKTsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2V2YWx1YXRlX29iamVjdCk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9ldmFsdWF0ZV9vYmplY3QpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMzg0LDcgKzM4NSw2IEBACiAgKiAgICAgICAgICAgICAgZnVuY3Rpb24sIGV0Yy4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV93YWxrX25hbWVzcGFjZShhY3BpX29iamVjdF90eXBlIHR5cGUsCiAJCSAgICBhY3BpX2hhbmRsZSBzdGFydF9vYmplY3QsCkBAIC0zOTQsNyArMzk0LDcgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX3dhbGtfbmFtZXNwYWNlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX3dhbGtfbmFtZXNwYWNlKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTQyMSw3ICs0MjEsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfd2Fsa19uYW1lc3BhY2UpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfd2Fsa19uYW1lc3BhY2UpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDM2LDcgKzQzNiw2IEBACiAgKiAgICAgICAgICAgICAgb24gdGhhdC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBzdGF0aWMgYWNwaV9zdGF0dXMKIGFjcGlfbnNfZ2V0X2RldmljZV9jYWxsYmFjayhhY3BpX2hhbmRsZSBvYmpfaGFuZGxlLAogCQkJICAgIHUzMiBuZXN0aW5nX2xldmVsLApAQCAtNDczLDYgKzQ3Miw3IEBACiAJfQogCiAJaWYgKCEoZmxhZ3MgJiBBQ1BJX1NUQV9ERVZJQ0VfUFJFU0VOVCkpIHsKKwogCQkvKiBEb24ndCBleGFtaW5lIGNoaWxkcmVuIG9mIHRoZSBkZXZpY2UgaWYgbm90IHByZXNlbnQgKi8KIAogCQlyZXR1cm4gKEFFX0NUUkxfREVQVEgpOwpAQCAtNDg5LDYgKzQ4OSw3IEBACiAJCX0KIAogCQlpZiAoQUNQSV9TVFJOQ01QKGhpZC52YWx1ZSwgaW5mby0+aGlkLCBzaXplb2YoaGlkLnZhbHVlKSkgIT0gMCkgeworCiAJCQkvKiBHZXQgdGhlIGxpc3Qgb2YgQ29tcGF0aWJsZSBJRHMgKi8KIAogCQkJc3RhdHVzID0gYWNwaV91dF9leGVjdXRlX0NJRChub2RlLCAmY2lkKTsKQEAgLTUwNSwxMSArNTA2LDExIEBACiAJCQkJCQkgc2l6ZW9mKHN0cnVjdAogCQkJCQkJCWFjcGlfY29tcGF0aWJsZV9pZCkpICE9CiAJCQkJICAgIDApIHsKLQkJCQkJQUNQSV9NRU1fRlJFRShjaWQpOworCQkJCQlBQ1BJX0ZSRUUoY2lkKTsKIAkJCQkJcmV0dXJuIChBRV9PSyk7CiAJCQkJfQogCQkJfQotCQkJQUNQSV9NRU1fRlJFRShjaWQpOworCQkJQUNQSV9GUkVFKGNpZCk7CiAJCX0KIAl9CiAKQEAgLTU1MSw3ICs1NTIsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9nZXRfZGV2aWNlc19pbmZvIGluZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2dldF9kZXZpY2VzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2dldF9kZXZpY2VzKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKQEAgLTU2Myw5ICs1NjQsOSBAQAogCSAqIFdlJ3JlIGdvaW5nIHRvIGNhbGwgdGhlaXIgY2FsbGJhY2sgZnJvbSBPVVIgY2FsbGJhY2ssIHNvIHdlIG5lZWQKIAkgKiB0byBrbm93IHdoYXQgaXQgaXMsIGFuZCB0aGVpciBjb250ZXh0IHBhcmFtZXRlci4KIAkgKi8KKwlpbmZvLmhpZCA9IEhJRDsKIAlpbmZvLmNvbnRleHQgPSBjb250ZXh0OwogCWluZm8udXNlcl9mdW5jdGlvbiA9IHVzZXJfZnVuY3Rpb247Ci0JaW5mby5oaWQgPSBISUQ7CiAKIAkvKgogCSAqIExvY2sgdGhlIG5hbWVzcGFjZSBhcm91bmQgdGhlIHdhbGsuCkBAIC01NzgsOSArNTc5LDggQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCi0Jc3RhdHVzID0gYWNwaV9uc193YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLAotCQkJCQlBQ1BJX1JPT1RfT0JKRUNULCBBQ1BJX1VJTlQzMl9NQVgsCi0JCQkJCUFDUElfTlNfV0FMS19VTkxPQ0ssCisJc3RhdHVzID0gYWNwaV9uc193YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLCBBQ1BJX1JPT1RfT0JKRUNULAorCQkJCQlBQ1BJX1VJTlQzMl9NQVgsIEFDUElfTlNfV0FMS19VTkxPQ0ssCiAJCQkJCWFjcGlfbnNfZ2V0X2RldmljZV9jYWxsYmFjaywgJmluZm8sCiAJCQkJCXJldHVybl92YWx1ZSk7CiAKQEAgLTU4OCw3ICs1ODgsNyBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2RldmljZXMpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2RldmljZXMpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNjAzLDcgKzYwMyw2IEBACiAgKiBERVNDUklQVElPTjogQXR0YWNoIGFyYml0cmFyeSBkYXRhIGFuZCBoYW5kbGVyIHRvIGEgbmFtZXNwYWNlIG5vZGUuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfYXR0YWNoX2RhdGEoYWNwaV9oYW5kbGUgb2JqX2hhbmRsZSwKIAkJIGFjcGlfb2JqZWN0X2hhbmRsZXIgaGFuZGxlciwgdm9pZCAqZGF0YSkKQEAgLTYzNyw2ICs2MzYsOCBAQAogCXJldHVybiAoc3RhdHVzKTsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfYXR0YWNoX2RhdGEpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZGV0YWNoX2RhdGEKQEAgLTY0OSw3ICs2NTAsNiBAQAogICogREVTQ1JJUFRJT046IFJlbW92ZSBkYXRhIHRoYXQgd2FzIHByZXZpb3VzbHkgYXR0YWNoZWQgdG8gYSBub2RlLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2RldGFjaF9kYXRhKGFjcGlfaGFuZGxlIG9ial9oYW5kbGUsIGFjcGlfb2JqZWN0X2hhbmRsZXIgaGFuZGxlcikKIHsKQEAgLTY4Miw2ICs2ODIsOCBAQAogCXJldHVybiAoc3RhdHVzKTsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZGV0YWNoX2RhdGEpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X2RhdGEKQEAgLTY5NSw3ICs2OTcsNiBAQAogICogREVTQ1JJUFRJT046IFJldHJpZXZlIGRhdGEgdGhhdCB3YXMgcHJldmlvdXNseSBhdHRhY2hlZCB0byBhIG5hbWVzcGFjZSBub2RlLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2dldF9kYXRhKGFjcGlfaGFuZGxlIG9ial9oYW5kbGUsIGFjcGlfb2JqZWN0X2hhbmRsZXIgaGFuZGxlciwgdm9pZCAqKmRhdGEpCiB7CkBAIC03MjcsMyArNzI4LDUgQEAKIAkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTkFNRVNQQUNFKTsKIAlyZXR1cm4gKHN0YXR1cyk7CiB9CisKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF9kYXRhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3hmbmFtZS5jIGIvZHJpdmVycy9hY3BpL25hbWVzcGFjZS9uc3hmbmFtZS5jCmluZGV4IDhjZDg2NzUuLjk3ODIxM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN4Zm5hbWUuYworKysgYi9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zeGZuYW1lLmMKQEAgLTQyLDggKzQyLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CiAKQEAgLTExNCw5ICsxMTIsOCBAQAogCS8qCiAJICogIEZpbmQgdGhlIE5vZGUgYW5kIGNvbnZlcnQgdG8gYSBoYW5kbGUKIAkgKi8KLQlzdGF0dXMgPQotCSAgICBhY3BpX25zX2dldF9ub2RlX2J5X3BhdGgocGF0aG5hbWUsIHByZWZpeF9ub2RlLCBBQ1BJX05TX05PX1VQU0VBUkNILAotCQkJCSAgICAgJm5vZGUpOworCXN0YXR1cyA9IGFjcGlfbnNfZ2V0X25vZGUocHJlZml4X25vZGUsIHBhdGhuYW1lLCBBQ1BJX05TX05PX1VQU0VBUkNILAorCQkJCSAgJm5vZGUpOwogCiAJKnJldF9oYW5kbGUgPSBOVUxMOwogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewpAQCAtMTI2LDcgKzEyMyw3IEBACiAJcmV0dXJuIChzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2hhbmRsZSk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9nZXRfaGFuZGxlKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTQzLDcgKzE0MCw2IEBACiAgKiAgICAgICAgICAgICAgY29tcGxlbWVudGFyeSBmdW5jdGlvbnMuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfZ2V0X25hbWUoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgbmFtZV90eXBlLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKiBidWZmZXIpCiB7CkBAIC0xNjIsNiArMTU4LDcgQEAKIAl9CiAKIAlpZiAobmFtZV90eXBlID09IEFDUElfRlVMTF9QQVRITkFNRSkgeworCiAJCS8qIEdldCB0aGUgZnVsbCBwYXRobmFtZSAoRnJvbSB0aGUgbmFtZXNwYWNlIHJvb3QpICovCiAKIAkJc3RhdHVzID0gYWNwaV9uc19oYW5kbGVfdG9fcGF0aG5hbWUoaGFuZGxlLCBidWZmZXIpOwpAQCAtMjAzLDcgKzIwMCw3IEBACiAJcmV0dXJuIChzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X25hbWUpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X25hbWUpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMTksNyArMjE2LDYgQEAKICAqICAgICAgICAgICAgICBjb250cm9sIG1ldGhvZHMgKFN1Y2ggYXMgaW4gdGhlIGNhc2Ugb2YgYSBkZXZpY2UuKQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2dldF9vYmplY3RfaW5mbyhhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3BpX2J1ZmZlciAqIGJ1ZmZlcikKIHsKQEAgLTI0MSw3ICsyMzcsNyBAQAogCQlyZXR1cm4gKHN0YXR1cyk7CiAJfQogCi0JaW5mbyA9IEFDUElfTUVNX0NBTExPQ0FURShzaXplb2Yoc3RydWN0IGFjcGlfZGV2aWNlX2luZm8pKTsKKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2RldmljZV9pbmZvKSk7CiAJaWYgKCFpbmZvKSB7CiAJCXJldHVybiAoQUVfTk9fTUVNT1JZKTsKIAl9CkBAIC0zNDUsMTEgKzM0MSwxMSBAQAogCX0KIAogICAgICAgY2xlYW51cDoKLQlBQ1BJX01FTV9GUkVFKGluZm8pOworCUFDUElfRlJFRShpbmZvKTsKIAlpZiAoY2lkX2xpc3QpIHsKLQkJQUNQSV9NRU1fRlJFRShjaWRfbGlzdCk7CisJCUFDUElfRlJFRShjaWRfbGlzdCk7CiAJfQogCXJldHVybiAoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2dldF9vYmplY3RfaW5mbyk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9nZXRfb2JqZWN0X2luZm8pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmFtZXNwYWNlL25zeGZvYmouYyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN4Zm9iai5jCmluZGV4IGEwMzMyNTkuLmExNjNlMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN4Zm9iai5jCisrKyBiL2RyaXZlcnMvYWNwaS9uYW1lc3BhY2UvbnN4Zm9iai5jCkBAIC00Miw4ICs0Miw2IEBACiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY25hbWVzcC5oPgogCkBAIC0xMDEsNyArOTksNyBAQAogCXJldHVybiAoc3RhdHVzKTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX2dldF90eXBlKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90eXBlKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTExNiw3ICsxMTQsNiBAQAogICogICAgICAgICAgICAgIEhhbmRsZS4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX2dldF9wYXJlbnQoYWNwaV9oYW5kbGUgaGFuZGxlLCBhY3BpX2hhbmRsZSAqIHJldF9oYW5kbGUpCiB7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CkBAIC0xNjIsNyArMTU5LDcgQEAKIAlyZXR1cm4gKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9nZXRfcGFyZW50KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF9wYXJlbnQpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTgxLDcgKzE3OCw2IEBACiAgKiAgICAgICAgICAgICAgU2NvcGUgaXMgcmV0dXJuZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfZ2V0X25leHRfb2JqZWN0KGFjcGlfb2JqZWN0X3R5cGUgdHlwZSwKIAkJICAgICBhY3BpX2hhbmRsZSBwYXJlbnQsCkBAIC0yMDYsNiArMjAyLDcgQEAKIAkvKiBJZiBudWxsIGhhbmRsZSwgdXNlIHRoZSBwYXJlbnQgKi8KIAogCWlmICghY2hpbGQpIHsKKwogCQkvKiBTdGFydCBzZWFyY2ggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3BlY2lmaWVkIHNjb3BlICovCiAKIAkJcGFyZW50X25vZGUgPSBhY3BpX25zX21hcF9oYW5kbGVfdG9fbm9kZShwYXJlbnQpOwpAQCAtMjQyLDQgKzIzOSw0IEBACiAJcmV0dXJuIChzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X25leHRfb2JqZWN0KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF9uZXh0X29iamVjdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9udW1hLmMgYi9kcml2ZXJzL2FjcGkvbnVtYS5jCmluZGV4IDY0Yjk4ZTguLmUyYzFhMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9udW1hLmMKKysrIGIvZHJpdmVycy9hY3BpL251bWEuYwpAQCAtMzYsMTIgKzM2LDYwIEBACiAjZGVmaW5lIF9DT01QT05FTlQJQUNQSV9OVU1BCiBBQ1BJX01PRFVMRV9OQU1FKCJudW1hIikKIAorc3RhdGljIG5vZGVtYXNrX3Qgbm9kZXNfZm91bmRfbWFwID0gTk9ERV9NQVNLX05PTkU7CisjZGVmaW5lIFBYTV9JTlZBTAktMQorI2RlZmluZSBOSURfSU5WQUwJLTEKKworLyogbWFwcyB0byBjb252ZXJ0IGJldHdlZW4gcHJveGltaXR5IGRvbWFpbiBhbmQgbG9naWNhbCBub2RlIElEICovCitpbnQgX19jcHVpbml0ZGF0YSBweG1fdG9fbm9kZV9tYXBbTUFYX1BYTV9ET01BSU5TXQorCQkJCT0geyBbMCAuLi4gTUFYX1BYTV9ET01BSU5TIC0gMV0gPSBOSURfSU5WQUwgfTsKK2ludCBfX2NwdWluaXRkYXRhIG5vZGVfdG9fcHhtX21hcFtNQVhfTlVNTk9ERVNdCisJCQkJPSB7IFswIC4uLiBNQVhfTlVNTk9ERVMgLSAxXSA9IFBYTV9JTlZBTCB9OworCiBleHRlcm4gaW50IF9faW5pdCBhY3BpX3RhYmxlX3BhcnNlX21hZHRfZmFtaWx5KGVudW0gYWNwaV90YWJsZV9pZCBpZCwKIAkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgbWFkdF9zaXplLAogCQkJCQkgICAgICAgaW50IGVudHJ5X2lkLAogCQkJCQkgICAgICAgYWNwaV9tYWR0X2VudHJ5X2hhbmRsZXIgaGFuZGxlciwKIAkJCQkJICAgICAgIHVuc2lnbmVkIGludCBtYXhfZW50cmllcyk7CiAKK2ludCBfX2NwdWluaXQgcHhtX3RvX25vZGUoaW50IHB4bSkKK3sKKwlpZiAocHhtIDwgMCkKKwkJcmV0dXJuIE5JRF9JTlZBTDsKKwlyZXR1cm4gcHhtX3RvX25vZGVfbWFwW3B4bV07Cit9CisKK2ludCBfX2NwdWluaXQgbm9kZV90b19weG0oaW50IG5vZGUpCit7CisJaWYgKG5vZGUgPCAwKQorCQlyZXR1cm4gUFhNX0lOVkFMOworCXJldHVybiBub2RlX3RvX3B4bV9tYXBbbm9kZV07Cit9CisKK2ludCBfX2NwdWluaXQgYWNwaV9tYXBfcHhtX3RvX25vZGUoaW50IHB4bSkKK3sKKwlpbnQgbm9kZSA9IHB4bV90b19ub2RlX21hcFtweG1dOworCisJaWYgKG5vZGUgPCAwKXsKKwkJaWYgKG5vZGVzX3dlaWdodChub2Rlc19mb3VuZF9tYXApID49IE1BWF9OVU1OT0RFUykKKwkJCXJldHVybiBOSURfSU5WQUw7CisJCW5vZGUgPSBmaXJzdF91bnNldF9ub2RlKG5vZGVzX2ZvdW5kX21hcCk7CisJCXB4bV90b19ub2RlX21hcFtweG1dID0gbm9kZTsKKwkJbm9kZV90b19weG1fbWFwW25vZGVdID0gcHhtOworCQlub2RlX3NldChub2RlLCBub2Rlc19mb3VuZF9tYXApOworCX0KKworCXJldHVybiBub2RlOworfQorCit2b2lkIF9fY3B1aW5pdCBhY3BpX3VubWFwX3B4bV90b19ub2RlKGludCBub2RlKQoreworCWludCBweG0gPSBub2RlX3RvX3B4bV9tYXBbbm9kZV07CisJcHhtX3RvX25vZGVfbWFwW3B4bV0gPSBOSURfSU5WQUw7CisJbm9kZV90b19weG1fbWFwW25vZGVdID0gUFhNX0lOVkFMOworCW5vZGVfY2xlYXIobm9kZSwgbm9kZXNfZm91bmRfbWFwKTsKK30KKwogdm9pZCBfX2luaXQgYWNwaV90YWJsZV9wcmludF9zcmF0X2VudHJ5KGFjcGlfdGFibGVfZW50cnlfaGVhZGVyICogaGVhZGVyKQogewogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvb3NsLmMgYi9kcml2ZXJzL2FjcGkvb3NsLmMKaW5kZXggMTNiNWZkNS4uMWJiNTU4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL29zbC5jCisrKyBiL2RyaXZlcnMvYWNwaS9vc2wuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAjaW5jbHVkZSA8bGludXgvbm1pLmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1ZGUgPGFjcGkvYWNwaS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFjcGkvYWNwaV9idXMuaD4KQEAgLTYwMCwyMyArNjAxLDQxIEBACiAJcmV0dXJuX1ZPSUQ7CiB9CiAKLWFjcGlfc3RhdHVzCi1hY3BpX29zX3F1ZXVlX2Zvcl9leGVjdXRpb24odTMyIHByaW9yaXR5LAorc3RhdGljIGludCBhY3BpX29zX2V4ZWN1dGVfdGhyZWFkKHZvaWQgKmNvbnRleHQpCit7CisJc3RydWN0IGFjcGlfb3NfZHBjICpkcGMgPSAoc3RydWN0IGFjcGlfb3NfZHBjICopY29udGV4dDsKKwlpZiAoZHBjKSB7CisJCWRwYy0+ZnVuY3Rpb24oZHBjLT5jb250ZXh0KTsKKwkJa2ZyZWUoZHBjKTsKKwl9CisJZG9fZXhpdCgwKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGVU5DVElPTjogICAgYWNwaV9vc19leGVjdXRlCisgKgorICogUEFSQU1FVEVSUzogIFR5cGUgICAgICAgICAgICAgICAtIFR5cGUgb2YgdGhlIGNhbGxiYWNrCisgKiAgICAgICAgICAgICAgRnVuY3Rpb24gICAgICAgICAgIC0gRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQKKyAqICAgICAgICAgICAgICBDb250ZXh0ICAgICAgICAgICAgLSBGdW5jdGlvbiBwYXJhbWV0ZXJzCisgKgorICogUkVUVVJOOiAgICAgIFN0YXR1cworICoKKyAqIERFU0NSSVBUSU9OOiBEZXBlbmRpbmcgb24gdHlwZSwgZWl0aGVyIHF1ZXVlcyBmdW5jdGlvbiBmb3IgZGVmZXJyZWQgZXhlY3V0aW9uIG9yCisgKiAgICAgICAgICAgICAgaW1tZWRpYXRlbHkgZXhlY3V0ZXMgZnVuY3Rpb24gb24gYSBzZXBhcmF0ZSB0aHJlYWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYWNwaV9zdGF0dXMgYWNwaV9vc19leGVjdXRlKGFjcGlfZXhlY3V0ZV90eXBlIHR5cGUsCiAJCQkgICAgYWNwaV9vc2RfZXhlY19jYWxsYmFjayBmdW5jdGlvbiwgdm9pZCAqY29udGV4dCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAlzdHJ1Y3QgYWNwaV9vc19kcGMgKmRwYzsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnRhc2s7Ci0KLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJvc19xdWV1ZV9mb3JfZXhlY3V0aW9uIik7Ci0KLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCi0JCQkgICJTY2hlZHVsaW5nIGZ1bmN0aW9uIFslcCglcCldIGZvciBkZWZlcnJlZCBleGVjdXRpb24uXG4iLAotCQkJICBmdW5jdGlvbiwgY29udGV4dCkpOworCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsKIAogCWlmICghZnVuY3Rpb24pCi0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKLQorCQlyZXR1cm4gQUVfQkFEX1BBUkFNRVRFUjsKIAkvKgogCSAqIEFsbG9jYXRlL2luaXRpYWxpemUgRFBDIHN0cnVjdHVyZS4gIE5vdGUgdGhhdCB0aGlzIG1lbW9yeSB3aWxsIGJlCiAJICogZnJlZWQgYnkgdGhlIGNhbGxlZS4gIFRoZSBrZXJuZWwgaGFuZGxlcyB0aGUgdHFfc3RydWN0IGxpc3QgIGluIGEKQEAgLTYyNywzMCArNjQ2LDM3IEBACiAJICogV2UgY2FuIHNhdmUgdGltZSBhbmQgY29kZSBieSBhbGxvY2F0aW5nIHRoZSBEUEMgYW5kIHRxX3N0cnVjdHMKIAkgKiBmcm9tIHRoZSBzYW1lIG1lbW9yeS4KIAkgKi8KLQotCWRwYyA9Ci0JICAgIGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpX29zX2RwYykgKyBzaXplb2Yoc3RydWN0IHdvcmtfc3RydWN0KSwKLQkJICAgIEdGUF9BVE9NSUMpOworCWlmICh0eXBlID09IE9TTF9OT1RJRllfSEFORExFUikgeworCQlkcGMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV9vc19kcGMpLCBHRlBfS0VSTkVMKTsKKwl9IGVsc2UgeworCQlkcGMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaV9vc19kcGMpICsKKwkJCQlzaXplb2Yoc3RydWN0IHdvcmtfc3RydWN0KSwgR0ZQX0FUT01JQyk7CisJfQogCWlmICghZHBjKQotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKLQorCQlyZXR1cm4gQUVfTk9fTUVNT1JZOwogCWRwYy0+ZnVuY3Rpb24gPSBmdW5jdGlvbjsKIAlkcGMtPmNvbnRleHQgPSBjb250ZXh0OwogCi0JdGFzayA9ICh2b2lkICopKGRwYyArIDEpOwotCUlOSVRfV09SSyh0YXNrLCBhY3BpX29zX2V4ZWN1dGVfZGVmZXJyZWQsICh2b2lkICopZHBjKTsKLQotCWlmICghcXVldWVfd29yayhrYWNwaWRfd3EsIHRhc2spKSB7Ci0JCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsCi0JCQkJICAiQ2FsbCB0byBxdWV1ZV93b3JrKCkgZmFpbGVkLlxuIikpOwotCQlrZnJlZShkcGMpOwotCQlzdGF0dXMgPSBBRV9FUlJPUjsKKwlpZiAodHlwZSA9PSBPU0xfTk9USUZZX0hBTkRMRVIpIHsKKwkJcCA9IGt0aHJlYWRfY3JlYXRlKGFjcGlfb3NfZXhlY3V0ZV90aHJlYWQsIGRwYywgImthY3BpZF9ub3RpZnkiKTsKKwkJaWYgKCFJU19FUlIocCkpIHsKKwkJCXdha2VfdXBfcHJvY2VzcyhwKTsKKwkJfSBlbHNlIHsKKwkJCXN0YXR1cyA9IEFFX05PX01FTU9SWTsKKwkJCWtmcmVlKGRwYyk7CisJCX0KKwl9IGVsc2UgeworCQl0YXNrID0gKHZvaWQgKikoZHBjICsgMSk7CisJCUlOSVRfV09SSyh0YXNrLCBhY3BpX29zX2V4ZWN1dGVfZGVmZXJyZWQsICh2b2lkICopZHBjKTsKKwkJaWYgKCFxdWV1ZV93b3JrKGthY3BpZF93cSwgdGFzaykpIHsKKwkJCXN0YXR1cyA9IEFFX0VSUk9SOworCQkJa2ZyZWUoZHBjKTsKKwkJfQogCX0KLQotCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworCXJldHVybiBzdGF0dXM7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9vc19xdWV1ZV9mb3JfZXhlY3V0aW9uKTsKK0VYUE9SVF9TWU1CT0woYWNwaV9vc19leGVjdXRlKTsKIAogdm9pZCBhY3BpX29zX3dhaXRfZXZlbnRzX2NvbXBsZXRlKHZvaWQgKmNvbnRleHQpCiB7CkBAIC03NjksOSArNzk1LDYgQEAKIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX01VVEVYLCAiV2FpdGluZyBmb3Igc2VtYXBob3JlWyVwfCVkfCVkXVxuIiwKIAkJCSAgaGFuZGxlLCB1bml0cywgdGltZW91dCkpOwogCi0JaWYgKGluX2F0b21pYygpKQotCQl0aW1lb3V0ID0gMDsKLQogCXN3aXRjaCAodGltZW91dCkgewogCQkvKgogCQkgKiBObyBXYWl0OgpAQCAtODk2LDE0ICs5MTksNiBAQAogfQogI2VuZGlmCiAKLXUzMiBhY3BpX29zX2dldF90aHJlYWRfaWQodm9pZCkKLXsKLQlpZiAoIWluX2F0b21pYygpKQotCQlyZXR1cm4gY3VycmVudC0+cGlkOwotCi0JcmV0dXJuIDA7Ci19Ci0KIGFjcGlfc3RhdHVzIGFjcGlfb3Nfc2lnbmFsKHUzMiBmdW5jdGlvbiwgdm9pZCAqaW5mbykKIHsKIAlzd2l0Y2ggKGZ1bmN0aW9uKSB7CkBAIC0xMDUwLDEyICsxMDY1LDEyIEBACiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfb3NfY3JlYXRlX2NhY2hlCiAgKgotICogUEFSQU1FVEVSUzogIENhY2hlTmFtZSAgICAgICAtIEFzY2lpIG5hbWUgZm9yIHRoZSBjYWNoZQotICogICAgICAgICAgICAgIE9iamVjdFNpemUgICAgICAtIFNpemUgb2YgZWFjaCBjYWNoZWQgb2JqZWN0Ci0gKiAgICAgICAgICAgICAgTWF4RGVwdGggICAgICAgIC0gTWF4aW11bSBkZXB0aCBvZiB0aGUgY2FjaGUgKGluIG9iamVjdHMpCi0gKiAgICAgICAgICAgICAgUmV0dXJuQ2FjaGUgICAgIC0gV2hlcmUgdGhlIG5ldyBjYWNoZSBvYmplY3QgaXMgcmV0dXJuZWQKKyAqIFBBUkFNRVRFUlM6ICBuYW1lICAgICAgLSBBc2NpaSBuYW1lIGZvciB0aGUgY2FjaGUKKyAqICAgICAgICAgICAgICBzaXplICAgICAgLSBTaXplIG9mIGVhY2ggY2FjaGVkIG9iamVjdAorICogICAgICAgICAgICAgIGRlcHRoICAgICAtIE1heGltdW0gZGVwdGggb2YgdGhlIGNhY2hlIChpbiBvYmplY3RzKSA8aWdub3JlZD4KKyAqICAgICAgICAgICAgICBjYWNoZSAgICAgLSBXaGVyZSB0aGUgbmV3IGNhY2hlIG9iamVjdCBpcyByZXR1cm5lZAogICoKLSAqIFJFVFVSTjogICAgICBTdGF0dXMKKyAqIFJFVFVSTjogICAgICBzdGF0dXMKICAqCiAgKiBERVNDUklQVElPTjogQ3JlYXRlIGEgY2FjaGUgb2JqZWN0CiAgKgpAQCAtMTA2NSw3ICsxMDgwLDEwIEBACiBhY3BpX29zX2NyZWF0ZV9jYWNoZShjaGFyICpuYW1lLCB1MTYgc2l6ZSwgdTE2IGRlcHRoLCBhY3BpX2NhY2hlX3QgKiogY2FjaGUpCiB7CiAJKmNhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUobmFtZSwgc2l6ZSwgMCwgMCwgTlVMTCwgTlVMTCk7Ci0JcmV0dXJuIEFFX09LOworCWlmIChjYWNoZSA9PSBOVUxMKQorCQlyZXR1cm4gQUVfRVJST1I7CisJZWxzZQorCQlyZXR1cm4gQUVfT0s7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMTM0LDE2ICsxMTUyLDYzIEBACiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKLSAqIERFU0NSSVBUSU9OOiBHZXQgYW4gb2JqZWN0IGZyb20gdGhlIHNwZWNpZmllZCBjYWNoZS4gIElmIGNhY2hlIGlzIGVtcHR5LAotICogICAgICAgICAgICAgIHRoZSBvYmplY3QgaXMgYWxsb2NhdGVkLgorICogREVTQ1JJUFRJT046IFJldHVybiBhIHplcm8tZmlsbGVkIG9iamVjdC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB2b2lkICphY3BpX29zX2FjcXVpcmVfb2JqZWN0KGFjcGlfY2FjaGVfdCAqIGNhY2hlKQogewotCXZvaWQgKm9iamVjdCA9IGttZW1fY2FjaGVfYWxsb2MoY2FjaGUsIEdGUF9LRVJORUwpOworCXZvaWQgKm9iamVjdCA9IGttZW1fY2FjaGVfemFsbG9jKGNhY2hlLCBHRlBfS0VSTkVMKTsKIAlXQVJOX09OKCFvYmplY3QpOwogCXJldHVybiBvYmplY3Q7CiB9CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGVU5DVElPTjogICAgYWNwaV9vc192YWxpZGF0ZV9pbnRlcmZhY2UKKyAqCisgKiBQQVJBTUVURVJTOiAgaW50ZXJmYWNlICAgICAgICAgICAtIFJlcXVlc3RlZCBpbnRlcmZhY2UgdG8gYmUgdmFsaWRhdGVkCisgKgorICogUkVUVVJOOiAgICAgIEFFX09LIGlmIGludGVyZmFjZSBpcyBzdXBwb3J0ZWQsIEFFX1NVUFBPUlQgb3RoZXJ3aXNlCisgKgorICogREVTQ1JJUFRJT046IE1hdGNoIGFuIGludGVyZmFjZSBzdHJpbmcgdG8gdGhlIGludGVyZmFjZXMgc3VwcG9ydGVkIGJ5IHRoZQorICogICAgICAgICAgICAgIGhvc3QuIFN0cmluZ3Mgb3JpZ2luYXRlIGZyb20gYW4gQU1MIGNhbGwgdG8gdGhlIF9PU0kgbWV0aG9kLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYWNwaV9zdGF0dXMKK2FjcGlfb3NfdmFsaWRhdGVfaW50ZXJmYWNlIChjaGFyICppbnRlcmZhY2UpCit7CisKKyAgICByZXR1cm4gQUVfU1VQUE9SVDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRlVOQ1RJT046ICAgIGFjcGlfb3NfdmFsaWRhdGVfYWRkcmVzcworICoKKyAqIFBBUkFNRVRFUlM6ICBzcGFjZV9pZCAgICAgICAgICAgICAtIEFDUEkgc3BhY2UgSUQKKyAqICAgICAgICAgICAgICBhZGRyZXNzICAgICAgICAgICAgIC0gUGh5c2ljYWwgYWRkcmVzcworICogICAgICAgICAgICAgIGxlbmd0aCAgICAgICAgICAgICAgLSBBZGRyZXNzIGxlbmd0aAorICoKKyAqIFJFVFVSTjogICAgICBBRV9PSyBpZiBhZGRyZXNzL2xlbmd0aCBpcyB2YWxpZCBmb3IgdGhlIHNwYWNlX2lkLiBPdGhlcndpc2UsCisgKiAgICAgICAgICAgICAgc2hvdWxkIHJldHVybiBBRV9BTUxfSUxMRUdBTF9BRERSRVNTLgorICoKKyAqIERFU0NSSVBUSU9OOiBWYWxpZGF0ZSBhIHN5c3RlbSBhZGRyZXNzIHZpYSB0aGUgaG9zdCBPUy4gVXNlZCB0byB2YWxpZGF0ZQorICogICAgICAgICAgICAgIHRoZSBhZGRyZXNzZXMgYWNjZXNzZWQgYnkgQU1MIG9wZXJhdGlvbiByZWdpb25zLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYWNwaV9zdGF0dXMKK2FjcGlfb3NfdmFsaWRhdGVfYWRkcmVzcyAoCisgICAgdTggICAgICAgICAgICAgICAgICAgc3BhY2VfaWQsCisgICAgYWNwaV9waHlzaWNhbF9hZGRyZXNzICAgYWRkcmVzcywKKyAgICBhY3BpX3NpemUgICAgICAgICAgICAgICBsZW5ndGgpCit7CisKKyAgICByZXR1cm4gQUVfT0s7Cit9CisKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzYXJncy5jIGIvZHJpdmVycy9hY3BpL3BhcnNlci9wc2FyZ3MuYwppbmRleCBkZTU3M2JlLi5iZjg4ZTA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzYXJncy5jCisrKyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHNhcmdzLmMKQEAgLTc5LDcgKzc5LDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGJ5dGVfY291bnQ7CiAJdTggYnl0ZV96ZXJvX21hc2sgPSAweDNGOwkvKiBEZWZhdWx0IFswOjVdICovCiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJwc19nZXRfbmV4dF9wYWNrYWdlX2xlbmd0aCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocHNfZ2V0X25leHRfcGFja2FnZV9sZW5ndGgpOwogCiAJLyoKIAkgKiBCeXRlIDAgYml0cyBbNjo3XSBjb250YWluIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBieXRlcwpAQCAtMTI4LDcgKzEyOCw3IEBACiAJdTggKnN0YXJ0ID0gcGFyc2VyX3N0YXRlLT5hbWw7CiAJdTMyIHBhY2thZ2VfbGVuZ3RoOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicHNfZ2V0X25leHRfcGFja2FnZV9lbmQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHBzX2dldF9uZXh0X3BhY2thZ2VfZW5kKTsKIAogCS8qIEZ1bmN0aW9uIGJlbG93IHVwZGF0ZXMgcGFyc2VyX3N0YXRlLT5BbWwgKi8KIApAQCAtMTU3LDcgKzE1Nyw3IEBACiAJdTggKnN0YXJ0ID0gcGFyc2VyX3N0YXRlLT5hbWw7CiAJdTggKmVuZCA9IHBhcnNlcl9zdGF0ZS0+YW1sOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicHNfZ2V0X25leHRfbmFtZXN0cmluZyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocHNfZ2V0X25leHRfbmFtZXN0cmluZyk7CiAKIAkvKiBQb2ludCBwYXN0IGFueSBuYW1lc3RyaW5nIHByZWZpeCBjaGFyYWN0ZXJzIChiYWNrc2xhc2ggb3IgY2FyYXQpICovCiAKQEAgLTIzNyw3ICsyMzcsNyBAQAogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSBzY29wZV9pbmZvOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicHNfZ2V0X25leHRfbmFtZXBhdGgiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHBzX2dldF9uZXh0X25hbWVwYXRoKTsKIAogCXBhdGggPSBhY3BpX3BzX2dldF9uZXh0X25hbWVzdHJpbmcocGFyc2VyX3N0YXRlKTsKIAlhY3BpX3BzX2luaXRfb3AoYXJnLCBBTUxfSU5UX05BTUVQQVRIX09QKTsKQEAgLTI3NSw2ICsyNzUsNyBAQAogCSAqLwogCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSAmJgogCSAgICBwb3NzaWJsZV9tZXRob2RfY2FsbCAmJiAobm9kZS0+dHlwZSA9PSBBQ1BJX1RZUEVfTUVUSE9EKSkgeworCiAJCS8qIFRoaXMgbmFtZSBpcyBhY3R1YWxseSBhIGNvbnRyb2wgbWV0aG9kIGludm9jYXRpb24gKi8KIAogCQltZXRob2RfZGVzYyA9IGFjcGlfbnNfZ2V0X2F0dGFjaGVkX29iamVjdChub2RlKTsKQEAgLTMxOSw2ICszMjAsNyBAQAogCSAqIHNvbWUgbm90X2ZvdW5kIGNhc2VzIGFyZSBhbGxvd2VkCiAJICovCiAJaWYgKHN0YXR1cyA9PSBBRV9OT1RfRk9VTkQpIHsKKwogCQkvKiAxKSBub3RfZm91bmQgaXMgb2sgZHVyaW5nIGxvYWQgcGFzcyAxLzIgKGFsbG93IGZvcndhcmQgcmVmZXJlbmNlcykgKi8KIAogCQlpZiAoKHdhbGtfc3RhdGUtPnBhcnNlX2ZsYWdzICYgQUNQSV9QQVJTRV9NT0RFX01BU0spICE9CkBAIC0zNTQsNiArMzU2LDcgQEAKIAogCQlpZiAoKHdhbGtfc3RhdGUtPnBhcnNlX2ZsYWdzICYgQUNQSV9QQVJTRV9NT0RFX01BU0spID09CiAJCSAgICBBQ1BJX1BBUlNFX0VYRUNVVEUpIHsKKwogCQkJLyogUmVwb3J0IGEgY29udHJvbCBtZXRob2QgZXhlY3V0aW9uIGVycm9yICovCiAKIAkJCXN0YXR1cyA9IGFjcGlfZHNfbWV0aG9kX2Vycm9yKHN0YXR1cywgd2Fsa19zdGF0ZSk7CkBAIC0zODgsNyArMzkxLDcgQEAKIAl1MTYgb3Bjb2RlOwogCXU4ICphbWwgPSBwYXJzZXJfc3RhdGUtPmFtbDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJwc19nZXRfbmV4dF9zaW1wbGVfYXJnIiwgYXJnX3R5cGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKHBzX2dldF9uZXh0X3NpbXBsZV9hcmcsIGFyZ190eXBlKTsKIAogCXN3aXRjaCAoYXJnX3R5cGUpIHsKIAljYXNlIEFSR1BfQllURURBVEE6CkBAIC00NTMsNyArNDU2LDcgQEAKIAogCWRlZmF1bHQ6CiAKLQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkludmFsaWQgYXJnX3R5cGUgJVgiLCBhcmdfdHlwZSkpOworCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBBcmdUeXBlICVYIiwgYXJnX3R5cGUpKTsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQogCkBAIC00ODQsNyArNDg3LDcgQEAKIAl1MTYgb3Bjb2RlOwogCXUzMiBuYW1lOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicHNfZ2V0X25leHRfZmllbGQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHBzX2dldF9uZXh0X2ZpZWxkKTsKIAogCS8qIERldGVybWluZSBmaWVsZCB0eXBlICovCiAKQEAgLTU5MCw3ICs1OTMsNyBAQAogCXUzMiBzdWJvcDsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJwc19nZXRfbmV4dF9hcmciLCBwYXJzZXJfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHBzX2dldF9uZXh0X2FyZywgcGFyc2VyX3N0YXRlKTsKIAogCXN3aXRjaCAoYXJnX3R5cGUpIHsKIAljYXNlIEFSR1BfQllURURBVEE6CkBAIC02MjAsNiArNjIzLDcgQEAKIAljYXNlIEFSR1BfRklFTERMSVNUOgogCiAJCWlmIChwYXJzZXJfc3RhdGUtPmFtbCA8IHBhcnNlcl9zdGF0ZS0+cGtnX2VuZCkgeworCiAJCQkvKiBOb24tZW1wdHkgbGlzdCAqLwogCiAJCQl3aGlsZSAocGFyc2VyX3N0YXRlLT5hbWwgPCBwYXJzZXJfc3RhdGUtPnBrZ19lbmQpIHsKQEAgLTY0NSw2ICs2NDksNyBAQAogCWNhc2UgQVJHUF9CWVRFTElTVDoKIAogCQlpZiAocGFyc2VyX3N0YXRlLT5hbWwgPCBwYXJzZXJfc3RhdGUtPnBrZ19lbmQpIHsKKwogCQkJLyogTm9uLWVtcHR5IGxpc3QgKi8KIAogCQkJYXJnID0gYWNwaV9wc19hbGxvY19vcChBTUxfSU5UX0JZVEVMSVNUX09QKTsKQEAgLTY3Myw2ICs2NzgsNyBAQAogCQlpZiAoc3Vib3AgPT0gMCB8fAogCQkgICAgYWNwaV9wc19pc19sZWFkaW5nX2NoYXIoc3Vib3ApIHx8CiAJCSAgICBhY3BpX3BzX2lzX3ByZWZpeF9jaGFyKHN1Ym9wKSkgeworCiAJCQkvKiBudWxsX25hbWUgb3IgbmFtZV9zdHJpbmcgKi8KIAogCQkJYXJnID0gYWNwaV9wc19hbGxvY19vcChBTUxfSU5UX05BTUVQQVRIX09QKTsKQEAgLTcwMyw2ICs3MDksNyBAQAogCWNhc2UgQVJHUF9PQkpMSVNUOgogCiAJCWlmIChwYXJzZXJfc3RhdGUtPmFtbCA8IHBhcnNlcl9zdGF0ZS0+cGtnX2VuZCkgeworCiAJCQkvKiBOb24tZW1wdHkgbGlzdCBvZiB2YXJpYWJsZSBhcmd1bWVudHMsIG5vdGhpbmcgcmV0dXJuZWQgKi8KIAogCQkJd2Fsa19zdGF0ZS0+YXJnX2NvdW50ID0gQUNQSV9WQVJfQVJHUzsKQEAgLTcxMSw3ICs3MTgsNyBAQAogCiAJZGVmYXVsdDoKIAotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBhcmdfdHlwZTogJVgiLCBhcmdfdHlwZSkpOworCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBBcmdUeXBlOiAlWCIsIGFyZ190eXBlKSk7CiAJCXN0YXR1cyA9IEFFX0FNTF9PUEVSQU5EX1RZUEU7CiAJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHNsb29wLmMgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzbG9vcC5jCmluZGV4IDAwYjA3MmUuLmUxNTQxZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHNsb29wLmMKKysrIGIvZHJpdmVycy9hY3BpL3BhcnNlci9wc2xvb3AuYwpAQCAtODMsNyArODMsNyBAQAogCXN0cnVjdCBhY3BpX3BhcnNlX3N0YXRlICpwYXJzZXJfc3RhdGU7CiAJdTggKmFtbF9vcF9zdGFydCA9IE5VTEw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigicHNfcGFyc2VfbG9vcCIsIHdhbGtfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHBzX3BhcnNlX2xvb3AsIHdhbGtfc3RhdGUpOwogCiAJaWYgKHdhbGtfc3RhdGUtPmRlc2NlbmRpbmdfY2FsbGJhY2sgPT0gTlVMTCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CkBAIC05NSw2ICs5NSw3IEBACiAjaWYgKCFkZWZpbmVkIChBQ1BJX05PX01FVEhPRF9FWEVDVVRJT04pICYmICFkZWZpbmVkIChBQ1BJX0NPTlNUQU5UX0VWQUxfT05MWSkpCiAKIAlpZiAod2Fsa19zdGF0ZS0+d2Fsa190eXBlICYgQUNQSV9XQUxLX01FVEhPRF9SRVNUQVJUKSB7CisKIAkJLyogV2UgYXJlIHJlc3RhcnRpbmcgYSBwcmVlbXB0ZWQgY29udHJvbCBtZXRob2QgKi8KIAogCQlpZiAoYWNwaV9wc19oYXNfY29tcGxldGVkX3Njb3BlKHBhcnNlcl9zdGF0ZSkpIHsKQEAgLTEyOCw3ICsxMjksNyBAQAogCiAJCQkJCX0KIAkJCQkJQUNQSV9FWENFUFRJT04oKEFFX0lORk8sIHN0YXR1cywKLQkJCQkJCQkiZ2V0X3ByZWRpY2F0ZSBGYWlsZWQiKSk7CisJCQkJCQkJIkdldFByZWRpY2F0ZSBGYWlsZWQiKSk7CiAJCQkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQkJCX0KIApAQCAtMTQzLDYgKzE0NCw3IEBACiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAogCQkJCQkgICJQb3BwZWQgc2NvcGUsIE9wPSVwXG4iLCBvcCkpOwogCQl9IGVsc2UgaWYgKHdhbGtfc3RhdGUtPnByZXZfb3ApIHsKKwogCQkJLyogV2Ugd2VyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIG9wICovCiAKIAkJCW9wID0gd2Fsa19zdGF0ZS0+cHJldl9vcDsKQEAgLTE1Niw2ICsxNTgsNyBAQAogCXdoaWxlICgocGFyc2VyX3N0YXRlLT5hbWwgPCBwYXJzZXJfc3RhdGUtPmFtbF9lbmQpIHx8IChvcCkpIHsKIAkJYW1sX29wX3N0YXJ0ID0gcGFyc2VyX3N0YXRlLT5hbWw7CiAJCWlmICghb3ApIHsKKwogCQkJLyogR2V0IHRoZSBuZXh0IG9wY29kZSBmcm9tIHRoZSBBTUwgc3RyZWFtICovCiAKIAkJCXdhbGtfc3RhdGUtPmFtbF9vZmZzZXQgPQpAQCAtMjEzLDYgKzIxNiw3IEBACiAJCQkvKiBDcmVhdGUgT3Agc3RydWN0dXJlIGFuZCBhcHBlbmQgdG8gcGFyZW50J3MgYXJndW1lbnQgbGlzdCAqLwogCiAJCQlpZiAod2Fsa19zdGF0ZS0+b3BfaW5mby0+ZmxhZ3MgJiBBTUxfTkFNRUQpIHsKKwogCQkJCS8qIEFsbG9jYXRlIGEgbmV3IHByZV9vcCBpZiBuZWNlc3NhcnkgKi8KIAogCQkJCWlmICghcHJlX29wKSB7CkBAIC0zNzEsNyArMzc1LDcgQEAKIAogCQkJaWYgKHdhbGtfc3RhdGUtPm9wX2luZm8pIHsKIAkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAotCQkJCQkJICAiT3Bjb2RlICU0LjRYIFslc10gT3AgJXAgQW1sICVwIGFtbF9vZmZzZXQgJTUuNVhcbiIsCisJCQkJCQkgICJPcGNvZGUgJTQuNFggWyVzXSBPcCAlcCBBbWwgJXAgQW1sT2Zmc2V0ICU1LjVYXG4iLAogCQkJCQkJICAodTMyKSBvcC0+Y29tbW9uLmFtbF9vcGNvZGUsCiAJCQkJCQkgIHdhbGtfc3RhdGUtPm9wX2luZm8tPm5hbWUsIG9wLAogCQkJCQkJICBwYXJzZXJfc3RhdGUtPmFtbCwKQEAgLTM4OCw2ICszOTIsNyBAQAogCQkvKiBBcmUgdGhlcmUgYW55IGFyZ3VtZW50cyB0aGF0IG11c3QgYmUgcHJvY2Vzc2VkPyAqLwogCiAJCWlmICh3YWxrX3N0YXRlLT5hcmdfdHlwZXMpIHsKKwogCQkJLyogR2V0IGFyZ3VtZW50cyAqLwogCiAJCQlzd2l0Y2ggKG9wLT5jb21tb24uYW1sX29wY29kZSkgewpAQCAtNzQyLDcgKzc0NywxOSBAQAogCQkJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1czIpKSB7CiAJCQkJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzMik7CiAJCQkJCX0KKworCQkJCQlzdGF0dXMyID0KKwkJCQkJICAgIGFjcGlfZHNfcmVzdWx0X3N0YWNrX3BvcAorCQkJCQkgICAgKHdhbGtfc3RhdGUpOworCQkJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1czIpKSB7CisJCQkJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzMik7CisJCQkJCX0KKworCQkJCQlhY3BpX3V0X2RlbGV0ZV9nZW5lcmljX3N0YXRlCisJCQkJCSAgICAoYWNwaV91dF9wb3BfZ2VuZXJpY19zdGF0ZQorCQkJCQkgICAgICgmd2Fsa19zdGF0ZS0+Y29udHJvbF9zdGF0ZSkpOwogCQkJCX0KKwogCQkJCWFjcGlfcHNfcG9wX3Njb3BlKHBhcnNlcl9zdGF0ZSwgJm9wLAogCQkJCQkJICAmd2Fsa19zdGF0ZS0+YXJnX3R5cGVzLAogCQkJCQkJICAmd2Fsa19zdGF0ZS0+YXJnX2NvdW50KTsKQEAgLTc2Miw2ICs3NzksNyBAQAogCQkJCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1czIpOwogCQkJCQl9CiAJCQkJfQorCiAJCQkJYWNwaV9wc19wb3Bfc2NvcGUocGFyc2VyX3N0YXRlLCAmb3AsCiAJCQkJCQkgICZ3YWxrX3N0YXRlLT5hcmdfdHlwZXMsCiAJCQkJCQkgICZ3YWxrX3N0YXRlLT5hcmdfY291bnQpOwpAQCAtODUzLDYgKzg3MSw3IEBACiAJCQkJfQogCiAJCQkJZWxzZSBpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkJCQkvKiBGaXJzdCBlcnJvciBpcyBtb3N0IGltcG9ydGFudCAqLwogCiAJCQkJCSh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3BhcnNlci9wc29wY29kZS5jIGIvZHJpdmVycy9hY3BpL3BhcnNlci9wc29wY29kZS5jCmluZGV4IDExZDYzNTEuLjRiZDI1ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHNvcGNvZGUuYworKysgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3Bzb3Bjb2RlLmMKQEAgLTcyNSwxMiArNzI1LDEzIEBACiAKIGNvbnN0IHN0cnVjdCBhY3BpX29wY29kZV9pbmZvICphY3BpX3BzX2dldF9vcGNvZGVfaW5mbyh1MTYgb3Bjb2RlKQogewotCUFDUElfRlVOQ1RJT05fTkFNRSgicHNfZ2V0X29wY29kZV9pbmZvIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKHBzX2dldF9vcGNvZGVfaW5mbyk7CiAKIAkvKgogCSAqIERldGVjdCBub3JtYWwgOC1iaXQgb3Bjb2RlIG9yIGV4dGVuZGVkIDE2LWJpdCBvcGNvZGUKIAkgKi8KIAlpZiAoIShvcGNvZGUgJiAweEZGMDApKSB7CisKIAkJLyogU2ltcGxlICg4LWJpdCkgb3Bjb2RlOiAwLTI1NSwgY2FuJ3QgaW5kZXggYmV5b25kIHRhYmxlICAqLwogCiAJCXJldHVybiAoJmFjcGlfZ2JsX2FtbF9vcF9pbmZvCkBAIC03MzksNiArNzQwLDcgQEAKIAogCWlmICgoKG9wY29kZSAmIDB4RkYwMCkgPT0gQU1MX0VYVEVOREVEX09QQ09ERSkgJiYKIAkgICAgKCgodTgpIG9wY29kZSkgPD0gTUFYX0VYVEVOREVEX09QQ09ERSkpIHsKKwogCQkvKiBWYWxpZCBleHRlbmRlZCAoMTYtYml0KSBvcGNvZGUgKi8KIAogCQlyZXR1cm4gKCZhY3BpX2dibF9hbWxfb3BfaW5mbwpAQCAtNzc5LDcgKzc4MSw3IEBACiAJcmV0dXJuIChvcC0+bmFtZSk7CiAKICNlbHNlCi0JcmV0dXJuICgiQUVfTk9UX0NPTkZJR1VSRUQiKTsKKwlyZXR1cm4gKCJPcGNvZGVOYW1lIHVuYXZhaWxhYmxlIik7CiAKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3BhcnNlci9wc3BhcnNlLmMgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzcGFyc2UuYwppbmRleCBhOWYzMjI5Li43ZWUyZjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzcGFyc2UuYworKysgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzcGFyc2UuYwpAQCAtMTA2LDYgKzEwNiw3IEBACiAJb3Bjb2RlID0gKHUxNikgQUNQSV9HRVQ4KGFtbCk7CiAKIAlpZiAob3Bjb2RlID09IEFNTF9FWFRFTkRFRF9PUF9QUkVGSVgpIHsKKwogCQkvKiBFeHRlbmRlZCBvcGNvZGUsIGdldCB0aGUgc2Vjb25kIG9wY29kZSBieXRlICovCiAKIAkJYW1sKys7CkBAIC0xMzcsNyArMTM4LDcgQEAKIAljb25zdCBzdHJ1Y3QgYWNwaV9vcGNvZGVfaW5mbyAqcGFyZW50X2luZm87CiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKnJlcGxhY2VtZW50X29wID0gTlVMTDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJwc19jb21wbGV0ZV90aGlzX29wIiwgb3ApOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHBzX2NvbXBsZXRlX3RoaXNfb3AsIG9wKTsKIAogCS8qIENoZWNrIGZvciBudWxsIE9wLCBjYW4gaGFwcGVuIGlmIEFNTCBjb2RlIGlzIGNvcnJ1cHQgKi8KIApAQCAtMTU4LDYgKzE1OSw3IEBACiAJaWYgKG9wLT5jb21tb24ucGFyZW50KSB7CiAJCXByZXYgPSBvcC0+Y29tbW9uLnBhcmVudC0+Y29tbW9uLnZhbHVlLmFyZzsKIAkJaWYgKCFwcmV2KSB7CisKIAkJCS8qIE5vdGhpbmcgbW9yZSB0byBkbyAqLwogCiAJCQlnb3RvIGNsZWFudXA7CkBAIC0yNDUsNiArMjQ3LDcgQEAKIAkJLyogV2UgbXVzdCB1bmxpbmsgdGhpcyBvcCBmcm9tIHRoZSBwYXJlbnQgdHJlZSAqLwogCiAJCWlmIChwcmV2ID09IG9wKSB7CisKIAkJCS8qIFRoaXMgb3AgaXMgdGhlIGZpcnN0IGluIHRoZSBsaXN0ICovCiAKIAkJCWlmIChyZXBsYWNlbWVudF9vcCkgewpAQCAtMjY1LDYgKzI2OCw3IEBACiAKIAkJZWxzZQogCQkJd2hpbGUgKHByZXYpIHsKKwogCQkJCS8qIFRyYXZlcnNlIGFsbCBzaWJsaW5ncyBpbiB0aGUgcGFyZW50J3MgYXJndW1lbnQgbGlzdCAqLwogCiAJCQkJbmV4dCA9IHByZXYtPmNvbW1vbi5uZXh0OwpAQCAtMzI5LDcgKzMzMyw3IEBACiAJc3RydWN0IGFjcGlfcGFyc2Vfc3RhdGUgKnBhcnNlcl9zdGF0ZSA9ICZ3YWxrX3N0YXRlLT5wYXJzZXJfc3RhdGU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfQ1RSTF9QRU5ESU5HOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoInBzX25leHRfcGFyc2Vfc3RhdGUiLCBvcCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIocHNfbmV4dF9wYXJzZV9zdGF0ZSwgb3ApOwogCiAJc3dpdGNoIChjYWxsYmFja19zdGF0dXMpIHsKIAljYXNlIEFFX0NUUkxfVEVSTUlOQVRFOgpAQCAtNDQ5LDEwICs0NTMsMTAgQEAKIAlzdHJ1Y3QgYWNwaV90aHJlYWRfc3RhdGUgKnByZXZfd2Fsa19saXN0ID0gYWNwaV9nYmxfY3VycmVudF93YWxrX2xpc3Q7CiAJc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqcHJldmlvdXNfd2Fsa19zdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInBzX3BhcnNlX2FtbCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocHNfcGFyc2VfYW1sKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfUEFSU0UsCi0JCQkgICJFbnRlcmVkIHdpdGggd2Fsa19zdGF0ZT0lcCBBbWw9JXAgc2l6ZT0lWFxuIiwKKwkJCSAgIkVudGVyZWQgd2l0aCBXYWxrU3RhdGU9JXAgQW1sPSVwIHNpemU9JVhcbiIsCiAJCQkgIHdhbGtfc3RhdGUsIHdhbGtfc3RhdGUtPnBhcnNlcl9zdGF0ZS5hbWwsCiAJCQkgIHdhbGtfc3RhdGUtPnBhcnNlcl9zdGF0ZS5hbWxfc2l6ZSkpOwogCkBAIC00NjAsNiArNDY0LDcgQEAKIAogCXRocmVhZCA9IGFjcGlfdXRfY3JlYXRlX3RocmVhZF9zdGF0ZSgpOwogCWlmICghdGhyZWFkKSB7CisJCWFjcGlfZHNfZGVsZXRlX3dhbGtfc3RhdGUod2Fsa19zdGF0ZSk7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOwogCX0KIApAQCAtNTEwLDYgKzUxNSw3IEBACiAJCX0gZWxzZSBpZiAoc3RhdHVzID09IEFFX0NUUkxfVEVSTUlOQVRFKSB7CiAJCQlzdGF0dXMgPSBBRV9PSzsKIAkJfSBlbHNlIGlmICgoc3RhdHVzICE9IEFFX09LKSAmJiAod2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MpKSB7CisKIAkJCS8qIEVpdGhlciB0aGUgbWV0aG9kIHBhcnNlIG9yIGFjdHVhbCBleGVjdXRpb24gZmFpbGVkICovCiAKIAkJCUFDUElfRVJST1JfTUVUSE9EKCJNZXRob2QgcGFyc2UvZXhlY3V0aW9uIGZhaWxlZCIsCkBAIC01NTAsMjAgKzU1Niw5IEBACiAJCSAqLwogCQlpZiAoKCh3YWxrX3N0YXRlLT5wYXJzZV9mbGFncyAmIEFDUElfUEFSU0VfTU9ERV9NQVNLKSA9PQogCQkgICAgIEFDUElfUEFSU0VfRVhFQ1VURSkgfHwgKEFDUElfRkFJTFVSRShzdGF0dXMpKSkgewotCQkJaWYgKHdhbGtfc3RhdGUtPm1ldGhvZF9kZXNjKSB7Ci0JCQkJLyogRGVjcmVtZW50IHRoZSB0aHJlYWQgY291bnQgb24gdGhlIG1ldGhvZCBwYXJzZSB0cmVlICovCi0KLQkJCQlpZiAod2Fsa19zdGF0ZS0+bWV0aG9kX2Rlc2MtPm1ldGhvZC4KLQkJCQkgICAgdGhyZWFkX2NvdW50KSB7Ci0JCQkJCXdhbGtfc3RhdGUtPm1ldGhvZF9kZXNjLT5tZXRob2QuCi0JCQkJCSAgICB0aHJlYWRfY291bnQtLTsKLQkJCQl9IGVsc2UgewotCQkJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCQkJICAgICJJbnZhbGlkIHplcm8gdGhyZWFkIGNvdW50IGluIG1ldGhvZCIpKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCWFjcGlfZHNfdGVybWluYXRlX2NvbnRyb2xfbWV0aG9kKHdhbGtfc3RhdGUpOworCQkJYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2Qod2Fsa19zdGF0ZS0+CisJCQkJCQkJIG1ldGhvZF9kZXNjLAorCQkJCQkJCSB3YWxrX3N0YXRlKTsKIAkJfQogCiAJCS8qIERlbGV0ZSB0aGlzIHdhbGsgc3RhdGUgYW5kIGFsbCBsaW5rZWQgY29udHJvbCBzdGF0ZXMgKi8KQEAgLTU3Miw3ICs1NjcsNyBAQAogCQlwcmV2aW91c193YWxrX3N0YXRlID0gd2Fsa19zdGF0ZTsKIAogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAotCQkJCSAgInJldHVybl92YWx1ZT0lcCwgaW1wbGljaXRfdmFsdWU9JXAgU3RhdGU9JXBcbiIsCisJCQkJICAiUmV0dXJuVmFsdWU9JXAsIEltcGxpY2l0VmFsdWU9JXAgU3RhdGU9JXBcbiIsCiAJCQkJICB3YWxrX3N0YXRlLT5yZXR1cm5fZGVzYywKIAkJCQkgIHdhbGtfc3RhdGUtPmltcGxpY2l0X3JldHVybl9vYmosIHdhbGtfc3RhdGUpKTsKIApAQCAtNjMzLDEyICs2MjgsMTQgQEAKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlmIChwcmV2aW91c193YWxrX3N0YXRlLT5yZXR1cm5fZGVzYykgeworCiAJCQkJLyogQ2FsbGVyIGRvZXNuJ3Qgd2FudCBpdCwgbXVzdCBkZWxldGUgaXQgKi8KIAogCQkJCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShwcmV2aW91c193YWxrX3N0YXRlLT4KIAkJCQkJCQkgcmV0dXJuX2Rlc2MpOwogCQkJfQogCQkJaWYgKHByZXZpb3VzX3dhbGtfc3RhdGUtPmltcGxpY2l0X3JldHVybl9vYmopIHsKKwogCQkJCS8qIENhbGxlciBkb2Vzbid0IHdhbnQgaXQsIG11c3QgZGVsZXRlIGl0ICovCiAKIAkJCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UocHJldmlvdXNfd2Fsa19zdGF0ZS0+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3Bzc2NvcGUuYyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHNzY29wZS5jCmluZGV4IGJjNjA0N2MuLmEzZTAzMTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3Bzc2NvcGUuYworKysgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3Bzc2NvcGUuYwpAQCAtMTA2LDE0ICsxMDYsMTQgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnNjb3BlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoInBzX2luaXRfc2NvcGUiLCByb290X29wKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUihwc19pbml0X3Njb3BlLCByb290X29wKTsKIAogCXNjb3BlID0gYWNwaV91dF9jcmVhdGVfZ2VuZXJpY19zdGF0ZSgpOwogCWlmICghc2NvcGUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQogCi0Jc2NvcGUtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9SUFNDT1BFOworCXNjb3BlLT5jb21tb24uZGVzY3JpcHRvcl90eXBlID0gQUNQSV9ERVNDX1RZUEVfU1RBVEVfUlBTQ09QRTsKIAlzY29wZS0+cGFyc2Vfc2NvcGUub3AgPSByb290X29wOwogCXNjb3BlLT5wYXJzZV9zY29wZS5hcmdfY291bnQgPSBBQ1BJX1ZBUl9BUkdTOwogCXNjb3BlLT5wYXJzZV9zY29wZS5hcmdfZW5kID0gcGFyc2VyX3N0YXRlLT5hbWxfZW5kOwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnNjb3BlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoInBzX3B1c2hfc2NvcGUiLCBvcCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIocHNfcHVzaF9zY29wZSwgb3ApOwogCiAJc2NvcGUgPSBhY3BpX3V0X2NyZWF0ZV9nZW5lcmljX3N0YXRlKCk7CiAJaWYgKCFzY29wZSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKIAl9CiAKLQlzY29wZS0+Y29tbW9uLmRhdGFfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX1BTQ09QRTsKKwlzY29wZS0+Y29tbW9uLmRlc2NyaXB0b3JfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX1BTQ09QRTsKIAlzY29wZS0+cGFyc2Vfc2NvcGUub3AgPSBvcDsKIAlzY29wZS0+cGFyc2Vfc2NvcGUuYXJnX2xpc3QgPSByZW1haW5pbmdfYXJnczsKIAlzY29wZS0+cGFyc2Vfc2NvcGUuYXJnX2NvdW50ID0gYXJnX2NvdW50OwpAQCAtMTY1LDYgKzE2NSw3IEBACiAJYWNwaV91dF9wdXNoX2dlbmVyaWNfc3RhdGUoJnBhcnNlcl9zdGF0ZS0+c2NvcGUsIHNjb3BlKTsKIAogCWlmIChhcmdfY291bnQgPT0gQUNQSV9WQVJfQVJHUykgeworCiAJCS8qIE11bHRpcGxlIGFyZ3VtZW50cyAqLwogCiAJCXNjb3BlLT5wYXJzZV9zY29wZS5hcmdfZW5kID0gcGFyc2VyX3N0YXRlLT5wa2dfZW5kOwpAQCAtMTk5LDE0ICsyMDAsMTQgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnNjb3BlID0gcGFyc2VyX3N0YXRlLT5zY29wZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInBzX3BvcF9zY29wZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocHNfcG9wX3Njb3BlKTsKIAogCS8qIE9ubHkgcG9wIHRoZSBzY29wZSBpZiB0aGVyZSBpcyBpbiBmYWN0IGEgbmV4dCBzY29wZSAqLwogCiAJaWYgKHNjb3BlLT5jb21tb24ubmV4dCkgewogCQlzY29wZSA9IGFjcGlfdXRfcG9wX2dlbmVyaWNfc3RhdGUoJnBhcnNlcl9zdGF0ZS0+c2NvcGUpOwogCi0JCS8qIHJldHVybiB0byBwYXJzaW5nIHByZXZpb3VzIG9wICovCisJCS8qIFJldHVybiB0byBwYXJzaW5nIHByZXZpb3VzIG9wICovCiAKIAkJKm9wID0gc2NvcGUtPnBhcnNlX3Njb3BlLm9wOwogCQkqYXJnX2xpc3QgPSBzY29wZS0+cGFyc2Vfc2NvcGUuYXJnX2xpc3Q7CkBAIC0yMTcsNyArMjE4LDcgQEAKIAogCQlhY3BpX3V0X2RlbGV0ZV9nZW5lcmljX3N0YXRlKHNjb3BlKTsKIAl9IGVsc2UgewotCQkvKiBlbXB0eSBwYXJzZSBzdGFjaywgcHJlcGFyZSB0byBmZXRjaCBuZXh0IG9wY29kZSAqLworCQkvKiBFbXB0eSBwYXJzZSBzdGFjaywgcHJlcGFyZSB0byBmZXRjaCBuZXh0IG9wY29kZSAqLwogCiAJCSpvcCA9IE5VTEw7CiAJCSphcmdfbGlzdCA9IDA7CkBAIC0yNDYsNyArMjQ3LDcgQEAKIHsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnNjb3BlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoInBzX2NsZWFudXBfc2NvcGUiLCBwYXJzZXJfc3RhdGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHBzX2NsZWFudXBfc2NvcGUsIHBhcnNlcl9zdGF0ZSk7CiAKIAlpZiAoIXBhcnNlcl9zdGF0ZSkgewogCQlyZXR1cm5fVk9JRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN0cmVlLmMgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzdHJlZS5jCmluZGV4IGRkNmYxNjcuLjAwMTU3MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN0cmVlLmMKKysrIGIvZHJpdmVycy9hY3BpL3BhcnNlci9wc3RyZWUuYwpAQCAtNzcsNiArNzcsNyBAQAogCiAJb3BfaW5mbyA9IGFjcGlfcHNfZ2V0X29wY29kZV9pbmZvKG9wLT5jb21tb24uYW1sX29wY29kZSk7CiAJaWYgKG9wX2luZm8tPmNsYXNzID09IEFNTF9DTEFTU19VTktOT1dOKSB7CisKIAkJLyogSW52YWxpZCBvcGNvZGUgb3IgQVNDSUkgY2hhcmFjdGVyICovCiAKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTg1LDYgKzg2LDcgQEAKIAkvKiBDaGVjayBpZiB0aGlzIG9wY29kZSByZXF1aXJlcyBhcmd1bWVudCBzdWItb2JqZWN0cyAqLwogCiAJaWYgKCEob3BfaW5mby0+ZmxhZ3MgJiBBTUxfSEFTX0FSR1MpKSB7CisKIAkJLyogSGFzIG5vIGxpbmtlZCBhcmd1bWVudCBvYmplY3RzICovCiAKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTEzMCw2ICsxMzIsNyBAQAogCiAJb3BfaW5mbyA9IGFjcGlfcHNfZ2V0X29wY29kZV9pbmZvKG9wLT5jb21tb24uYW1sX29wY29kZSk7CiAJaWYgKG9wX2luZm8tPmNsYXNzID09IEFNTF9DTEFTU19VTktOT1dOKSB7CisKIAkJLyogSW52YWxpZCBvcGNvZGUgKi8KIAogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLCAiSW52YWxpZCBBTUwgT3Bjb2RlOiAweCUyLjJYIiwKQEAgLTE0MCw2ICsxNDMsNyBAQAogCS8qIENoZWNrIGlmIHRoaXMgb3Bjb2RlIHJlcXVpcmVzIGFyZ3VtZW50IHN1Yi1vYmplY3RzICovCiAKIAlpZiAoIShvcF9pbmZvLT5mbGFncyAmIEFNTF9IQVNfQVJHUykpIHsKKwogCQkvKiBIYXMgbm8gbGlua2VkIGFyZ3VtZW50IG9iamVjdHMgKi8KIAogCQlyZXR1cm47CkBAIC0xNDgsNiArMTUyLDcgQEAKIAkvKiBBcHBlbmQgdGhlIGFyZ3VtZW50IHRvIHRoZSBsaW5rZWQgYXJndW1lbnQgbGlzdCAqLwogCiAJaWYgKG9wLT5jb21tb24udmFsdWUuYXJnKSB7CisKIAkJLyogQXBwZW5kIHRvIGV4aXN0aW5nIGFyZ3VtZW50IGxpc3QgKi8KIAogCQlwcmV2X2FyZyA9IG9wLT5jb21tb24udmFsdWUuYXJnOwpAQCAtMjIyLDEyICsyMjcsMTQgQEAKIAkJfQogCiAJCWlmIChhcmcgPT0gb3JpZ2luKSB7CisKIAkJCS8qIFJlYWNoZWQgcGFyZW50IG9mIG9yaWdpbiwgZW5kIHNlYXJjaCAqLwogCiAJCQlyZXR1cm4gKE5VTEwpOwogCQl9CiAKIAkJaWYgKHBhcmVudC0+Y29tbW9uLm5leHQpIHsKKwogCQkJLyogRm91bmQgc2libGluZyBvZiBwYXJlbnQgKi8KIAogCQkJcmV0dXJuIChwYXJlbnQtPmNvbW1vbi5uZXh0KTsKQEAgLTI5OSw1ICszMDYsNCBAQAogCXJldHVybiAoY2hpbGQpOwogfQogI2VuZGlmCi0KICNlbmRpZgkJCQkvKiAgQUNQSV9GVVRVUkVfVVNBR0UgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzdXRpbHMuYyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN1dGlscy5jCmluZGV4IDNlMDdjYjkuLjE4MjQ3NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN1dGlscy5jCisrKyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN1dGlscy5jCkBAIC04OSw3ICs4OSw3IEBACiB7CiAJQUNQSV9GVU5DVElPTl9FTlRSWSgpOwogCi0Jb3AtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9QQVJTRVI7CisJb3AtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9QQVJTRVI7CiAJb3AtPmNvbW1vbi5hbWxfb3Bjb2RlID0gb3Bjb2RlOwogCiAJQUNQSV9ESVNBU01fT05MWV9NRU1CRVJTKEFDUElfU1RSTkNQWShvcC0+Y29tbW9uLmFtbF9vcF9uYW1lLApAQCAtMTM1LDYgKzEzNSw3IEBACiAJLyogQWxsb2NhdGUgdGhlIG1pbmltdW0gcmVxdWlyZWQgc2l6ZSBvYmplY3QgKi8KIAogCWlmIChmbGFncyA9PSBBQ1BJX1BBUlNFT1BfR0VORVJJQykgeworCiAJCS8qIFRoZSBnZW5lcmljIG9wIChkZWZhdWx0KSBpcyBieSBmYXIgdGhlIG1vc3QgY29tbW9uICgxNiB0byAxKSAqLwogCiAJCW9wID0gYWNwaV9vc19hY3F1aXJlX29iamVjdChhY3BpX2dibF9wc19ub2RlX2NhY2hlKTsKQEAgLTE3MSw3ICsxNzIsNyBAQAogCiB2b2lkIGFjcGlfcHNfZnJlZV9vcCh1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqb3ApCiB7Ci0JQUNQSV9GVU5DVElPTl9OQU1FKCJwc19mcmVlX29wIik7CisJQUNQSV9GVU5DVElPTl9OQU1FKHBzX2ZyZWVfb3ApOwogCiAJaWYgKG9wLT5jb21tb24uYW1sX29wY29kZSA9PSBBTUxfSU5UX1JFVFVSTl9WQUxVRV9PUCkgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0FMTE9DQVRJT05TLCAiRnJlZSByZXR2YWwgb3A6ICVwXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3BhcnNlci9wc3dhbGsuYyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN3YWxrLmMKaW5kZXggMDZmMDViZi4uYTg0YTU0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3BhcnNlci9wc3dhbGsuYworKysgYi9kcml2ZXJzL2FjcGkvcGFyc2VyL3Bzd2Fsay5jCkBAIC02NCwxOCArNjQsMjEgQEAKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqbmV4dCA9IE5VTEw7CiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKnBhcmVudCA9IE5VTEw7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigicHNfZGVsZXRlX3BhcnNlX3RyZWUiLCBzdWJ0cmVlX3Jvb3QpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHBzX2RlbGV0ZV9wYXJzZV90cmVlLCBzdWJ0cmVlX3Jvb3QpOwogCiAJLyogVmlzaXQgYWxsIG5vZGVzIGluIHRoZSBzdWJ0cmVlICovCiAKIAl3aGlsZSAob3ApIHsKKwogCQkvKiBDaGVjayBpZiB3ZSBhcmUgbm90IGFzY2VuZGluZyAqLwogCiAJCWlmIChvcCAhPSBwYXJlbnQpIHsKKwogCQkJLyogTG9vayBmb3IgYW4gYXJndW1lbnQgb3IgY2hpbGQgb2YgdGhlIGN1cnJlbnQgb3AgKi8KIAogCQkJbmV4dCA9IGFjcGlfcHNfZ2V0X2FyZyhvcCwgMCk7CiAJCQlpZiAobmV4dCkgeworCiAJCQkJLyogU3RpbGwgZ29pbmcgZG93bndhcmQgaW4gdHJlZSAoT3AgaXMgbm90IGNvbXBsZXRlZCB5ZXQpICovCiAKIAkJCQlvcCA9IG5leHQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGFyc2VyL3BzeGZhY2UuYyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN4ZmFjZS5jCmluZGV4IDJkZDQ4Y2IuLjVkOTk2YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN4ZmFjZS5jCisrKyBiL2RyaXZlcnMvYWNwaS9wYXJzZXIvcHN4ZmFjZS5jCkBAIC01MCwxNCArNTAsMTQgQEAKIEFDUElfTU9EVUxFX05BTUUoInBzeGZhY2UiKQogCiAvKiBMb2NhbCBQcm90b3R5cGVzICovCi1zdGF0aWMgdm9pZCBhY3BpX3BzX3N0YXJ0X3RyYWNlKHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvKTsKK3N0YXRpYyB2b2lkIGFjcGlfcHNfc3RhcnRfdHJhY2Uoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbyk7CiAKLXN0YXRpYyB2b2lkIGFjcGlfcHNfc3RvcF90cmFjZShzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbyk7CitzdGF0aWMgdm9pZCBhY3BpX3BzX3N0b3BfdHJhY2Uoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbyk7CiAKLXN0YXRpYyBhY3BpX3N0YXR1cyBhY3BpX3BzX2V4ZWN1dGVfcGFzcyhzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbyk7CitzdGF0aWMgYWNwaV9zdGF0dXMgYWNwaV9wc19leGVjdXRlX3Bhc3Moc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbyk7CiAKIHN0YXRpYyB2b2lkCi1hY3BpX3BzX3VwZGF0ZV9wYXJhbWV0ZXJfbGlzdChzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbywgdTE2IGFjdGlvbik7CithY3BpX3BzX3VwZGF0ZV9wYXJhbWV0ZXJfbGlzdChzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvLCB1MTYgYWN0aW9uKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xMTMsNyArMTEzLDcgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgdm9pZCBhY3BpX3BzX3N0YXJ0X3RyYWNlKHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvKQorc3RhdGljIHZvaWQgYWNwaV9wc19zdGFydF90cmFjZShzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIApAQCAtMTI1LDcgKzEyNSw3IEBACiAJfQogCiAJaWYgKCghYWNwaV9nYmxfdHJhY2VfbWV0aG9kX25hbWUpIHx8Ci0JICAgIChhY3BpX2dibF90cmFjZV9tZXRob2RfbmFtZSAhPSBpbmZvLT5ub2RlLT5uYW1lLmludGVnZXIpKSB7CisJICAgIChhY3BpX2dibF90cmFjZV9tZXRob2RfbmFtZSAhPSBpbmZvLT5yZXNvbHZlZF9ub2RlLT5uYW1lLmludGVnZXIpKSB7CiAJCWdvdG8gZXhpdDsKIAl9CiAKQEAgLTE1OCw3ICsxNTgsNyBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyB2b2lkIGFjcGlfcHNfc3RvcF90cmFjZShzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbykKK3N0YXRpYyB2b2lkIGFjcGlfcHNfc3RvcF90cmFjZShzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIApAQCAtMTcwLDcgKzE3MCw3IEBACiAJfQogCiAJaWYgKCghYWNwaV9nYmxfdHJhY2VfbWV0aG9kX25hbWUpIHx8Ci0JICAgIChhY3BpX2dibF90cmFjZV9tZXRob2RfbmFtZSAhPSBpbmZvLT5ub2RlLT5uYW1lLmludGVnZXIpKSB7CisJICAgIChhY3BpX2dibF90cmFjZV9tZXRob2RfbmFtZSAhPSBpbmZvLT5yZXNvbHZlZF9ub2RlLT5uYW1lLmludGVnZXIpKSB7CiAJCWdvdG8gZXhpdDsKIAl9CiAKQEAgLTIxMiwyMiArMjEyLDIzIEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotYWNwaV9zdGF0dXMgYWNwaV9wc19leGVjdXRlX21ldGhvZChzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbykKK2FjcGlfc3RhdHVzIGFjcGlfcHNfZXhlY3V0ZV9tZXRob2Qoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbykKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJwc19leGVjdXRlX21ldGhvZCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocHNfZXhlY3V0ZV9tZXRob2QpOwogCiAJLyogVmFsaWRhdGUgdGhlIEluZm8gYW5kIG1ldGhvZCBOb2RlICovCiAKLQlpZiAoIWluZm8gfHwgIWluZm8tPm5vZGUpIHsKKwlpZiAoIWluZm8gfHwgIWluZm8tPnJlc29sdmVkX25vZGUpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05VTExfRU5UUlkpOwogCX0KIAogCS8qIEluaXQgZm9yIG5ldyBtZXRob2QsIHdhaXQgb24gY29uY3VycmVuY3kgc2VtYXBob3JlICovCiAKIAlzdGF0dXMgPQotCSAgICBhY3BpX2RzX2JlZ2luX21ldGhvZF9leGVjdXRpb24oaW5mby0+bm9kZSwgaW5mby0+b2JqX2Rlc2MsIE5VTEwpOworCSAgICBhY3BpX2RzX2JlZ2luX21ldGhvZF9leGVjdXRpb24oaW5mby0+cmVzb2x2ZWRfbm9kZSwgaW5mby0+b2JqX2Rlc2MsCisJCQkJCSAgIE5VTEwpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CkBAIC0yNDgsNyArMjQ5LDcgQEAKIAkgKi8KIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAogCQkJICAiKioqKiBCZWdpbiBNZXRob2QgUGFyc2UgKioqKiBFbnRyeT0lcCBvYmo9JXBcbiIsCi0JCQkgIGluZm8tPm5vZGUsIGluZm8tPm9ial9kZXNjKSk7CisJCQkgIGluZm8tPnJlc29sdmVkX25vZGUsIGluZm8tPm9ial9kZXNjKSk7CiAKIAlpbmZvLT5wYXNzX251bWJlciA9IDE7CiAJc3RhdHVzID0gYWNwaV9wc19leGVjdXRlX3Bhc3MoaW5mbyk7CkBAIC0yNjEsNyArMjYyLDcgQEAKIAkgKi8KIAlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1BBUlNFLAogCQkJICAiKioqKiBCZWdpbiBNZXRob2QgRXhlY3V0aW9uICoqKiogRW50cnk9JXAgb2JqPSVwXG4iLAotCQkJICBpbmZvLT5ub2RlLCBpbmZvLT5vYmpfZGVzYykpOworCQkJICBpbmZvLT5yZXNvbHZlZF9ub2RlLCBpbmZvLT5vYmpfZGVzYykpOwogCiAJaW5mby0+cGFzc19udW1iZXIgPSAzOwogCXN0YXR1cyA9IGFjcGlfcHNfZXhlY3V0ZV9wYXNzKGluZm8pOwpAQCAtMjg2LDggKzI4Nyw3IEBACiAJICogYSBjb250cm9sIGV4Y2VwdGlvbiBjb2RlCiAJICovCiAJaWYgKGluZm8tPnJldHVybl9vYmplY3QpIHsKLQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9QQVJTRSwKLQkJCQkgICJNZXRob2QgcmV0dXJuZWQgb2JqX2Rlc2M9JXBcbiIsCisJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfUEFSU0UsICJNZXRob2QgcmV0dXJuZWQgT2JqRGVzYz0lcFxuIiwKIAkJCQkgIGluZm8tPnJldHVybl9vYmplY3QpKTsKIAkJQUNQSV9EVU1QX1NUQUNLX0VOVFJZKGluZm8tPnJldHVybl9vYmplY3QpOwogCkBAIC0zMDEsNyArMzAxLDcgQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9wc191cGRhdGVfcGFyYW1ldGVyX2xpc3QKICAqCi0gKiBQQVJBTUVURVJTOiAgSW5mbyAgICAgICAgICAgIC0gU2VlIHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvCisgKiBQQVJBTUVURVJTOiAgSW5mbyAgICAgICAgICAgIC0gU2VlIHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXNlZDogcGFyYW1ldGVyX3R5cGUgYW5kIFBhcmFtZXRlcnMpCiAgKiAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgIC0gQWRkIG9yIFJlbW92ZSByZWZlcmVuY2UKICAqCkBAIC0zMTIsMTQgKzMxMiwxNiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIHZvaWQKLWFjcGlfcHNfdXBkYXRlX3BhcmFtZXRlcl9saXN0KHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvLCB1MTYgYWN0aW9uKQorYWNwaV9wc191cGRhdGVfcGFyYW1ldGVyX2xpc3Qoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbywgdTE2IGFjdGlvbikKIHsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKIAlpZiAoKGluZm8tPnBhcmFtZXRlcl90eXBlID09IEFDUElfUEFSQU1fQVJHUykgJiYgKGluZm8tPnBhcmFtZXRlcnMpKSB7CisKIAkJLyogVXBkYXRlIHJlZmVyZW5jZSBjb3VudCBmb3IgZWFjaCBwYXJhbWV0ZXIgKi8KIAogCQlmb3IgKGkgPSAwOyBpbmZvLT5wYXJhbWV0ZXJzW2ldOyBpKyspIHsKKwogCQkJLyogSWdub3JlIGVycm9ycywganVzdCBkbyB0aGVtIGFsbCAqLwogCiAJCQkodm9pZClhY3BpX3V0X3VwZGF0ZV9vYmplY3RfcmVmZXJlbmNlKGluZm8tPgpAQCAtMzMzLDcgKzMzNSw3IEBACiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfcHNfZXhlY3V0ZV9wYXNzCiAgKgotICogUEFSQU1FVEVSUzogIEluZm8gICAgICAgICAgICAtIFNlZSBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbworICogUEFSQU1FVEVSUzogIEluZm8gICAgICAgICAgICAtIFNlZSBzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVzZWQ6IHBhc3NfbnVtYmVyLCBOb2RlLCBhbmQgb2JqX2Rlc2MpCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwpAQCAtMzQyLDEzICszNDQsMTMgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgYWNwaV9zdGF0dXMgYWNwaV9wc19leGVjdXRlX3Bhc3Moc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gKmluZm8pCitzdGF0aWMgYWNwaV9zdGF0dXMgYWNwaV9wc19leGVjdXRlX3Bhc3Moc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbykKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm9wOwogCXN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJwc19leGVjdXRlX3Bhc3MiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHBzX2V4ZWN1dGVfcGFzcyk7CiAKIAkvKiBDcmVhdGUgYW5kIGluaXQgYSBSb290IE5vZGUgKi8KIApAQCAtMzY3LDcgKzM2OSw3IEBACiAJCWdvdG8gY2xlYW51cDsKIAl9CiAKLQlzdGF0dXMgPSBhY3BpX2RzX2luaXRfYW1sX3dhbGsod2Fsa19zdGF0ZSwgb3AsIGluZm8tPm5vZGUsCisJc3RhdHVzID0gYWNwaV9kc19pbml0X2FtbF93YWxrKHdhbGtfc3RhdGUsIG9wLCBpbmZvLT5yZXNvbHZlZF9ub2RlLAogCQkJCSAgICAgICBpbmZvLT5vYmpfZGVzYy0+bWV0aG9kLmFtbF9zdGFydCwKIAkJCQkgICAgICAgaW5mby0+b2JqX2Rlc2MtPm1ldGhvZC5hbWxfbGVuZ3RoLAogCQkJCSAgICAgICBpbmZvLT5wYXNzX251bWJlciA9PSAxID8gTlVMTCA6IGluZm8sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGNpX2xpbmsuYyBiL2RyaXZlcnMvYWNwaS9wY2lfbGluay5jCmluZGV4IDg5MjBlOGMuLjIyOGJkYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wY2lfbGluay5jCisrKyBiL2RyaXZlcnMvYWNwaS9wY2lfbGluay5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC9wbS5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CiAKICNpbmNsdWRlIDxhY3BpL2FjcGlfYnVzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpX2RyaXZlcnMuaD4KQEAgLTkxLDcgKzkyLDcgQEAKIAlpbnQgY291bnQ7CiAJc3RydWN0IGxpc3RfaGVhZCBlbnRyaWVzOwogfSBhY3BpX2xpbms7Ci1ERUNMQVJFX01VVEVYKGFjcGlfbGlua19sb2NrKTsKK0RFRklORV9NVVRFWChhY3BpX2xpbmtfbG9jayk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJIExpbmsgRGV2aWNlIE1hbmFnZW1lbnQKQEAgLTY0MSwxOSArNjQyLDE5IEBACiAJCXJldHVybl9WQUxVRSgtMSk7CiAJfQogCi0JZG93bigmYWNwaV9saW5rX2xvY2spOworCW11dGV4X2xvY2soJmFjcGlfbGlua19sb2NrKTsKIAlpZiAoYWNwaV9wY2lfbGlua19hbGxvY2F0ZShsaW5rKSkgewotCQl1cCgmYWNwaV9saW5rX2xvY2spOworCQltdXRleF91bmxvY2soJmFjcGlfbGlua19sb2NrKTsKIAkJcmV0dXJuX1ZBTFVFKC0xKTsKIAl9CiAKIAlpZiAoIWxpbmstPmlycS5hY3RpdmUpIHsKLQkJdXAoJmFjcGlfbGlua19sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZhY3BpX2xpbmtfbG9jayk7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsICJMaW5rIGFjdGl2ZSBJUlEgaXMgMCFcbiIpKTsKIAkJcmV0dXJuX1ZBTFVFKC0xKTsKIAl9CiAJbGluay0+cmVmY250Kys7Ci0JdXAoJmFjcGlfbGlua19sb2NrKTsKKwltdXRleF91bmxvY2soJmFjcGlfbGlua19sb2NrKTsKIAogCWlmICh0cmlnZ2VyaW5nKQogCQkqdHJpZ2dlcmluZyA9IGxpbmstPmlycS50cmlnZ2VyaW5nOwpAQCAtNjkxLDkgKzY5Miw5IEBACiAJCXJldHVybl9WQUxVRSgtMSk7CiAJfQogCi0JZG93bigmYWNwaV9saW5rX2xvY2spOworCW11dGV4X2xvY2soJmFjcGlfbGlua19sb2NrKTsKIAlpZiAoIWxpbmstPmlycS5pbml0aWFsaXplZCkgewotCQl1cCgmYWNwaV9saW5rX2xvY2spOworCQltdXRleF91bmxvY2soJmFjcGlfbGlua19sb2NrKTsKIAkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FUlJPUiwgIkxpbmsgaXNuJ3QgaW5pdGlhbGl6ZWRcbiIpKTsKIAkJcmV0dXJuX1ZBTFVFKC0xKTsKIAl9CkBAIC03MTYsNyArNzE3LDcgQEAKIAlpZiAobGluay0+cmVmY250ID09IDApIHsKIAkJYWNwaV91dF9ldmFsdWF0ZV9vYmplY3QobGluay0+aGFuZGxlLCAiX0RJUyIsIDAsIE5VTEwpOwogCX0KLQl1cCgmYWNwaV9saW5rX2xvY2spOworCW11dGV4X3VubG9jaygmYWNwaV9saW5rX2xvY2spOwogCXJldHVybl9WQUxVRShsaW5rLT5pcnEuYWN0aXZlKTsKIH0KIApAQCAtNzQ3LDcgKzc0OCw3IEBACiAJc3RyY3B5KGFjcGlfZGV2aWNlX2NsYXNzKGRldmljZSksIEFDUElfUENJX0xJTktfQ0xBU1MpOwogCWFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKSA9IGxpbms7CiAKLQlkb3duKCZhY3BpX2xpbmtfbG9jayk7CisJbXV0ZXhfbG9jaygmYWNwaV9saW5rX2xvY2spOwogCXJlc3VsdCA9IGFjcGlfcGNpX2xpbmtfZ2V0X3Bvc3NpYmxlKGxpbmspOwogCWlmIChyZXN1bHQpCiAJCWdvdG8gZW5kOwpAQCAtNzgyLDcgKzc4Myw3IEBACiAgICAgICBlbmQ6CiAJLyogZGlzYWJsZSBhbGwgbGlua3MgLS0gdG8gYmUgYWN0aXZhdGVkIG9uIHVzZSAqLwogCWFjcGlfdXRfZXZhbHVhdGVfb2JqZWN0KGxpbmstPmhhbmRsZSwgIl9ESVMiLCAwLCBOVUxMKTsKLQl1cCgmYWNwaV9saW5rX2xvY2spOworCW11dGV4X3VubG9jaygmYWNwaV9saW5rX2xvY2spOwogCiAJaWYgKHJlc3VsdCkKIAkJa2ZyZWUobGluayk7CkBAIC04NDAsOSArODQxLDkgQEAKIAogCWxpbmsgPSAoc3RydWN0IGFjcGlfcGNpX2xpbmsgKilhY3BpX2RyaXZlcl9kYXRhKGRldmljZSk7CiAKLQlkb3duKCZhY3BpX2xpbmtfbG9jayk7CisJbXV0ZXhfbG9jaygmYWNwaV9saW5rX2xvY2spOwogCWxpc3RfZGVsKCZsaW5rLT5ub2RlKTsKLQl1cCgmYWNwaV9saW5rX2xvY2spOworCW11dGV4X3VubG9jaygmYWNwaV9saW5rX2xvY2spOwogCiAJa2ZyZWUobGluayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfY29yZS5jIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9jb3JlLmMKaW5kZXggNzEzYjc2My4uZGVjYWViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9jb3JlLmMKKysrIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9jb3JlLmMKQEAgLTExMCw3ICsxMTAsNyBAQAogfTsKIAogc3RydWN0IGFjcGlfcHJvY2Vzc29yICpwcm9jZXNzb3JzW05SX0NQVVNdOwotc3RydWN0IGFjcGlfcHJvY2Vzc29yX2VycmF0YSBlcnJhdGE7CitzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfZXJyYXRhIGVycmF0YSBfX3JlYWRfbW9zdGx5OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJhdGEgSGFuZGxpbmcKQEAgLTM4OCw3ICszODgsNyBAQAogCiAvKiBVc2UgdGhlIGFjcGlpZCBpbiBNQURUIHRvIG1hcCBjcHVzIGluIGNhc2Ugb2YgU01QICovCiAjaWZuZGVmIENPTkZJR19TTVAKLSNkZWZpbmUgY29udmVydF9hY3BpaWRfdG9fY3B1KGFjcGlfaWQpICgweGZmKQorI2RlZmluZSBjb252ZXJ0X2FjcGlpZF90b19jcHUoYWNwaV9pZCkgKC0xKQogI2Vsc2UKIAogI2lmZGVmIENPTkZJR19JQTY0CkBAIC00MDEsNyArNDAxLDcgQEAKICNkZWZpbmUgQVJDSF9CQURfQVBJQ0lECQkoMHhmZikKICNlbmRpZgogCi1zdGF0aWMgdTggY29udmVydF9hY3BpaWRfdG9fY3B1KHU4IGFjcGlfaWQpCitzdGF0aWMgaW50IGNvbnZlcnRfYWNwaWlkX3RvX2NwdSh1OCBhY3BpX2lkKQogewogCXUxNiBhcGljX2lkOwogCWludCBpOwpAQCAtNDI3LDcgKzQyNyw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gMDsKIAl1bmlvbiBhY3BpX29iamVjdCBvYmplY3QgPSB7IDAgfTsKIAlzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmZmVyID0geyBzaXplb2YodW5pb24gYWNwaV9vYmplY3QpLCAmb2JqZWN0IH07Ci0JdTggY3B1X2luZGV4OworCWludCBjcHVfaW5kZXg7CiAJc3RhdGljIGludCBjcHUwX2luaXRpYWxpemVkOwogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9wcm9jZXNzb3JfZ2V0X2luZm8iKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQAogCWNwdV9pbmRleCA9IGNvbnZlcnRfYWNwaWlkX3RvX2NwdShwci0+YWNwaV9pZCk7CiAKIAkvKiBIYW5kbGUgVVAgc3lzdGVtIHJ1bm5pbmcgU01QIGtlcm5lbCwgd2l0aCBubyBMQVBJQyBpbiBNQURUICovCi0JaWYgKCFjcHUwX2luaXRpYWxpemVkICYmIChjcHVfaW5kZXggPT0gMHhmZikgJiYKKwlpZiAoIWNwdTBfaW5pdGlhbGl6ZWQgJiYgKGNwdV9pbmRleCA9PSAtMSkgJiYKIAkgICAgKG51bV9vbmxpbmVfY3B1cygpID09IDEpKSB7CiAJCWNwdV9pbmRleCA9IDA7CiAJfQpAQCAtNDg3LDcgKzQ4Nyw3IEBACiAJICogIGxlc3MgdGhhbiB0aGUgbWF4ICMgb2YgQ1BVcy4gVGhleSBzaG91bGQgYmUgaWdub3JlZCBfaWZmCiAJICogIHRoZXkgYXJlIHBoeXNpY2FsbHkgbm90IHByZXNlbnQuCiAJICovCi0JaWYgKGNwdV9pbmRleCA+PSBOUl9DUFVTKSB7CisJaWYgKGNwdV9pbmRleCA9PSAtMSkgewogCQlpZiAoQUNQSV9GQUlMVVJFCiAJCSAgICAoYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQocHItPmhhbmRsZSwgJnByLT5pZCkpKSB7CiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLApAQCAtNTU4LDggKzU1OCw4IEBACiAJICovCiAJaWYgKHByb2Nlc3Nvcl9kZXZpY2VfYXJyYXlbcHItPmlkXSAhPSBOVUxMICYmCiAJICAgIHByb2Nlc3Nvcl9kZXZpY2VfYXJyYXlbcHItPmlkXSAhPSAodm9pZCAqKWRldmljZSkgewotCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLCAiQklPUyByZXBvcnRpbmcgd3JvbmcgQUNQSSBpZCIKLQkJCSJmb3IgdGhlIHByb2Nlc3NvclxuIikpOworCQlwcmludGsoS0VSTl9XQVJOSU5HICJCSU9TIHJlcG9ydGVkIHdyb25nIEFDUEkgaWQiCisJCQkiZm9yIHRoZSBwcm9jZXNzb3JcbiIpOwogCQlyZXR1cm5fVkFMVUUoLUVOT0RFVik7CiAJfQogCXByb2Nlc3Nvcl9kZXZpY2VfYXJyYXlbcHItPmlkXSA9ICh2b2lkICopZGV2aWNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9pZGxlLmMgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYwppbmRleCA4MGZhNDM0Li4zYjk3YTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYworKysgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX2lkbGUuYwpAQCAtNTQsMTAgKzU0LDEwIEBACiAjZGVmaW5lIFVTX1RPX1BNX1RJTUVSX1RJQ0tTKHQpCQkoKHQgKiAoUE1fVElNRVJfRlJFUVVFTkNZLzEwMDApKSAvIDEwMDApCiAjZGVmaW5lIEMyX09WRVJIRUFECQkJNAkvKiAxdXMgKDMuNTc5IHRpY2tzIHBlciB1cykgKi8KICNkZWZpbmUgQzNfT1ZFUkhFQUQJCQk0CS8qIDF1cyAoMy41NzkgdGlja3MgcGVyIHVzKSAqLwotc3RhdGljIHZvaWQgKCpwbV9pZGxlX3NhdmUpICh2b2lkKTsKK3N0YXRpYyB2b2lkICgqcG1faWRsZV9zYXZlKSAodm9pZCkgX19yZWFkX21vc3RseTsKIG1vZHVsZV9wYXJhbShtYXhfY3N0YXRlLCB1aW50LCAwNjQ0KTsKIAotc3RhdGljIHVuc2lnbmVkIGludCBub2NzdCA9IDA7CitzdGF0aWMgdW5zaWduZWQgaW50IG5vY3N0IF9fcmVhZF9tb3N0bHk7CiBtb2R1bGVfcGFyYW0obm9jc3QsIHVpbnQsIDAwMDApOwogCiAvKgpAQCAtNjcsNyArNjcsNyBAQAogICogMTAwIEhaOiAweDAwMDAwMDBGOiA0IGppZmZpZXMgPSA0MG1zCiAgKiByZWR1Y2UgaGlzdG9yeSBmb3IgbW9yZSBhZ2dyZXNzaXZlIGVudHJ5IGludG8gQzMKICAqLwotc3RhdGljIHVuc2lnbmVkIGludCBibV9oaXN0b3J5ID0KK3N0YXRpYyB1bnNpZ25lZCBpbnQgYm1faGlzdG9yeSBfX3JlYWRfbW9zdGx5ID0KICAgICAoSFogPj0gODAwID8gMHhGRkZGRkZGRiA6ICgoMVUgPDwgKEhaIC8gMjUpKSAtIDEpKTsKIG1vZHVsZV9wYXJhbShibV9oaXN0b3J5LCB1aW50LCAwNjQ0KTsKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgxLDcgKzEwODEsNyBAQAogCQkJICAgICAgc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gMDsKLQlzdGF0aWMgaW50IGZpcnN0X3J1biA9IDA7CisJc3RhdGljIGludCBmaXJzdF9ydW47CiAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICplbnRyeSA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfcGVyZmxpYi5jIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9wZXJmbGliLmMKaW5kZXggZjM2ZGIyMi4uNDFhYWFiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9wZXJmbGliLmMKKysrIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9wZXJmbGliLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpZmRlZiBDT05GSUdfWDg2X0FDUElfQ1BVRlJFUV9QUk9DX0lOVEYKICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNlbmRpZgpAQCAtNDgsNyArNDksNyBAQAogI2RlZmluZSBfQ09NUE9ORU5UCQlBQ1BJX1BST0NFU1NPUl9DT01QT05FTlQKIEFDUElfTU9EVUxFX05BTUUoImFjcGlfcHJvY2Vzc29yIikKIAotc3RhdGljIERFQ0xBUkVfTVVURVgocGVyZm9ybWFuY2Vfc2VtKTsKK3N0YXRpYyBERUZJTkVfTVVURVgocGVyZm9ybWFuY2VfbXV0ZXgpOwogCiAvKgogICogX1BQQyBzdXBwb3J0IGlzIGltcGxlbWVudGVkIGFzIGEgQ1BVZnJlcSBwb2xpY3kgbm90aWZpZXI6CkBAIC03Miw3ICs3Myw3IEBACiAJc3RydWN0IGFjcGlfcHJvY2Vzc29yICpwcjsKIAl1bnNpZ25lZCBpbnQgcHBjID0gMDsKIAotCWRvd24oJnBlcmZvcm1hbmNlX3NlbSk7CisJbXV0ZXhfbG9jaygmcGVyZm9ybWFuY2VfbXV0ZXgpOwogCiAJaWYgKGV2ZW50ICE9IENQVUZSRVFfSU5DT01QQVRJQkxFKQogCQlnb3RvIG91dDsKQEAgLTkzLDcgKzk0LDcgQEAKIAkJCQkgICAgIGNvcmVfZnJlcXVlbmN5ICogMTAwMCk7CiAKICAgICAgIG91dDoKLQl1cCgmcGVyZm9ybWFuY2Vfc2VtKTsKKwltdXRleF91bmxvY2soJnBlcmZvcm1hbmNlX211dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtNTUzLDYgKzU1NCwyMzAgQEAKIH0KICNlbmRpZgkJCQkvKiBDT05GSUdfWDg2X0FDUElfQ1BVRlJFUV9QUk9DX0lOVEYgKi8KIAorc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9nZXRfcHNkKHN0cnVjdCBhY3BpX3Byb2Nlc3NvcgkqcHIpCit7CisJaW50IHJlc3VsdCA9IDA7CisJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CisJc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlciA9IHtBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTH07CisJc3RydWN0IGFjcGlfYnVmZmVyIGZvcm1hdCA9IHtzaXplb2YoIk5OTk5OIiksICJOTk5OTiJ9OworCXN0cnVjdCBhY3BpX2J1ZmZlciBzdGF0ZSA9IHswLCBOVUxMfTsKKwl1bmlvbiBhY3BpX29iamVjdCAgKnBzZCA9IE5VTEw7CisJc3RydWN0IGFjcGlfcHNkX3BhY2thZ2UgKnBkb21haW47CisKKwlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChwci0+aGFuZGxlLCAiX1BTRCIsIE5VTEwsICZidWZmZXIpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlwc2QgPSAodW5pb24gYWNwaV9vYmplY3QgKikgYnVmZmVyLnBvaW50ZXI7CisJaWYgKCFwc2QgfHwgKHBzZC0+dHlwZSAhPSBBQ1BJX1RZUEVfUEFDS0FHRSkpIHsKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FUlJPUiwgIkludmFsaWQgX1BTRCBkYXRhXG4iKSk7CisJCXJlc3VsdCA9IC1FRkFVTFQ7CisJCWdvdG8gZW5kOworCX0KKworCWlmIChwc2QtPnBhY2thZ2UuY291bnQgIT0gMSkgeworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLCAiSW52YWxpZCBfUFNEIGRhdGFcbiIpKTsKKwkJcmVzdWx0ID0gLUVGQVVMVDsKKwkJZ290byBlbmQ7CisJfQorCisJcGRvbWFpbiA9ICYocHItPnBlcmZvcm1hbmNlLT5kb21haW5faW5mbyk7CisKKwlzdGF0ZS5sZW5ndGggPSBzaXplb2Yoc3RydWN0IGFjcGlfcHNkX3BhY2thZ2UpOworCXN0YXRlLnBvaW50ZXIgPSBwZG9tYWluOworCisJc3RhdHVzID0gYWNwaV9leHRyYWN0X3BhY2thZ2UoJihwc2QtPnBhY2thZ2UuZWxlbWVudHNbMF0pLAorCQkmZm9ybWF0LCAmc3RhdGUpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLCAiSW52YWxpZCBfUFNEIGRhdGFcbiIpKTsKKwkJcmVzdWx0ID0gLUVGQVVMVDsKKwkJZ290byBlbmQ7CisJfQorCisJaWYgKHBkb21haW4tPm51bV9lbnRyaWVzICE9IEFDUElfUFNEX1JFVjBfRU5UUklFUykgeworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLCAiVW5rbm93biBfUFNEOm51bV9lbnRyaWVzXG4iKSk7CisJCXJlc3VsdCA9IC1FRkFVTFQ7CisJCWdvdG8gZW5kOworCX0KKworCWlmIChwZG9tYWluLT5yZXZpc2lvbiAhPSBBQ1BJX1BTRF9SRVYwX1JFVklTSU9OKSB7CisJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsICJVbmtub3duIF9QU0Q6cmV2aXNpb25cbiIpKTsKKwkJcmVzdWx0ID0gLUVGQVVMVDsKKwkJZ290byBlbmQ7CisJfQorCitlbmQ6CisJYWNwaV9vc19mcmVlKGJ1ZmZlci5wb2ludGVyKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitpbnQgYWNwaV9wcm9jZXNzb3JfcHJlcmVnaXN0ZXJfcGVyZm9ybWFuY2UoCisJCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZSAqKnBlcmZvcm1hbmNlKQoreworCWludCBjb3VudCwgY291bnRfdGFyZ2V0OworCWludCByZXR2YWwgPSAwOworCXVuc2lnbmVkIGludCBpLCBqOworCWNwdW1hc2tfdCBjb3ZlcmVkX2NwdXM7CisJc3RydWN0IGFjcGlfcHJvY2Vzc29yICpwcjsKKwlzdHJ1Y3QgYWNwaV9wc2RfcGFja2FnZSAqcGRvbWFpbjsKKwlzdHJ1Y3QgYWNwaV9wcm9jZXNzb3IgKm1hdGNoX3ByOworCXN0cnVjdCBhY3BpX3BzZF9wYWNrYWdlICptYXRjaF9wZG9tYWluOworCisJbXV0ZXhfbG9jaygmcGVyZm9ybWFuY2VfbXV0ZXgpOworCisJcmV0dmFsID0gMDsKKworCS8qIENhbGwgX1BTRCBmb3IgYWxsIENQVXMgKi8KKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoaSkgeworCQlwciA9IHByb2Nlc3NvcnNbaV07CisJCWlmICghcHIpIHsKKwkJCS8qIExvb2sgb25seSBhdCBwcm9jZXNzb3JzIGluIEFDUEkgbmFtZXNwYWNlICovCisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChwci0+cGVyZm9ybWFuY2UpIHsKKwkJCXJldHZhbCA9IC1FQlVTWTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFwZXJmb3JtYW5jZSB8fCAhcGVyZm9ybWFuY2VbaV0pIHsKKwkJCXJldHZhbCA9IC1FSU5WQUw7CisJCQljb250aW51ZTsKKwkJfQorCisJCXByLT5wZXJmb3JtYW5jZSA9IHBlcmZvcm1hbmNlW2ldOworCQljcHVfc2V0KGksIHByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX2NwdV9tYXApOworCQlpZiAoYWNwaV9wcm9jZXNzb3JfZ2V0X3BzZChwcikpIHsKKwkJCXJldHZhbCA9IC1FSU5WQUw7CisJCQljb250aW51ZTsKKwkJfQorCX0KKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9yZXQ7CisKKwkvKgorCSAqIE5vdyB0aGF0IHdlIGhhdmUgX1BTRCBkYXRhIGZyb20gYWxsIENQVXMsIGxldHMgc2V0dXAgUC1zdGF0ZSAKKwkgKiBkb21haW4gaW5mby4KKwkgKi8KKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoaSkgeworCQlwciA9IHByb2Nlc3NvcnNbaV07CisJCWlmICghcHIpCisJCQljb250aW51ZTsKKworCQkvKiBCYXNpYyB2YWxpZGl0eSBjaGVjayBmb3IgZG9tYWluIGluZm8gKi8KKwkJcGRvbWFpbiA9ICYocHItPnBlcmZvcm1hbmNlLT5kb21haW5faW5mbyk7CisJCWlmICgocGRvbWFpbi0+cmV2aXNpb24gIT0gQUNQSV9QU0RfUkVWMF9SRVZJU0lPTikgfHwKKwkJICAgIChwZG9tYWluLT5udW1fZW50cmllcyAhPSBBQ1BJX1BTRF9SRVYwX0VOVFJJRVMpKSB7CisJCQlyZXR2YWwgPSAtRUlOVkFMOworCQkJZ290byBlcnJfcmV0OworCQl9CisJCWlmIChwZG9tYWluLT5jb29yZF90eXBlICE9IERPTUFJTl9DT09SRF9UWVBFX1NXX0FMTCAmJgorCQkgICAgcGRvbWFpbi0+Y29vcmRfdHlwZSAhPSBET01BSU5fQ09PUkRfVFlQRV9TV19BTlkgJiYKKwkJICAgIHBkb21haW4tPmNvb3JkX3R5cGUgIT0gRE9NQUlOX0NPT1JEX1RZUEVfSFdfQUxMKSB7CisJCQlyZXR2YWwgPSAtRUlOVkFMOworCQkJZ290byBlcnJfcmV0OworCQl9CisJfQorCisJY3B1c19jbGVhcihjb3ZlcmVkX2NwdXMpOworCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7CisJCXByID0gcHJvY2Vzc29yc1tpXTsKKwkJaWYgKCFwcikKKwkJCWNvbnRpbnVlOworCisJCWlmIChjcHVfaXNzZXQoaSwgY292ZXJlZF9jcHVzKSkKKwkJCWNvbnRpbnVlOworCisJCXBkb21haW4gPSAmKHByLT5wZXJmb3JtYW5jZS0+ZG9tYWluX2luZm8pOworCQljcHVfc2V0KGksIHByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX2NwdV9tYXApOworCQljcHVfc2V0KGksIGNvdmVyZWRfY3B1cyk7CisJCWlmIChwZG9tYWluLT5udW1fcHJvY2Vzc29ycyA8PSAxKQorCQkJY29udGludWU7CisKKwkJLyogVmFsaWRhdGUgdGhlIERvbWFpbiBpbmZvICovCisJCWNvdW50X3RhcmdldCA9IHBkb21haW4tPm51bV9wcm9jZXNzb3JzOworCQljb3VudCA9IDE7CisJCWlmIChwZG9tYWluLT5jb29yZF90eXBlID09IERPTUFJTl9DT09SRF9UWVBFX1NXX0FMTCB8fAorCQkgICAgcGRvbWFpbi0+Y29vcmRfdHlwZSA9PSBET01BSU5fQ09PUkRfVFlQRV9IV19BTEwpIHsKKwkJCXByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX3R5cGUgPSBDUFVGUkVRX1NIQVJFRF9UWVBFX0FMTDsKKwkJfSBlbHNlIGlmIChwZG9tYWluLT5jb29yZF90eXBlID09IERPTUFJTl9DT09SRF9UWVBFX1NXX0FOWSkgeworCQkJcHItPnBlcmZvcm1hbmNlLT5zaGFyZWRfdHlwZSA9IENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZOworCQl9CisKKwkJZm9yX2VhY2hfcG9zc2libGVfY3B1KGopIHsKKwkJCWlmIChpID09IGopCisJCQkJY29udGludWU7CisKKwkJCW1hdGNoX3ByID0gcHJvY2Vzc29yc1tqXTsKKwkJCWlmICghbWF0Y2hfcHIpCisJCQkJY29udGludWU7CisKKwkJCW1hdGNoX3Bkb21haW4gPSAmKG1hdGNoX3ByLT5wZXJmb3JtYW5jZS0+ZG9tYWluX2luZm8pOworCQkJaWYgKG1hdGNoX3Bkb21haW4tPmRvbWFpbiAhPSBwZG9tYWluLT5kb21haW4pCisJCQkJY29udGludWU7CisKKwkJCS8qIEhlcmUgaSBhbmQgaiBhcmUgaW4gdGhlIHNhbWUgZG9tYWluICovCisKKwkJCWlmIChtYXRjaF9wZG9tYWluLT5udW1fcHJvY2Vzc29ycyAhPSBjb3VudF90YXJnZXQpIHsKKwkJCQlyZXR2YWwgPSAtRUlOVkFMOworCQkJCWdvdG8gZXJyX3JldDsKKwkJCX0KKworCQkJaWYgKHBkb21haW4tPmNvb3JkX3R5cGUgIT0gbWF0Y2hfcGRvbWFpbi0+Y29vcmRfdHlwZSkgeworCQkJCXJldHZhbCA9IC1FSU5WQUw7CisJCQkJZ290byBlcnJfcmV0OworCQkJfQorCisJCQljcHVfc2V0KGosIGNvdmVyZWRfY3B1cyk7CisJCQljcHVfc2V0KGosIHByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX2NwdV9tYXApOworCQkJY291bnQrKzsKKwkJfQorCisJCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShqKSB7CisJCQlpZiAoaSA9PSBqKQorCQkJCWNvbnRpbnVlOworCisJCQltYXRjaF9wciA9IHByb2Nlc3NvcnNbal07CisJCQlpZiAoIW1hdGNoX3ByKQorCQkJCWNvbnRpbnVlOworCisJCQltYXRjaF9wZG9tYWluID0gJihtYXRjaF9wci0+cGVyZm9ybWFuY2UtPmRvbWFpbl9pbmZvKTsKKwkJCWlmIChtYXRjaF9wZG9tYWluLT5kb21haW4gIT0gcGRvbWFpbi0+ZG9tYWluKQorCQkJCWNvbnRpbnVlOworCisJCQltYXRjaF9wci0+cGVyZm9ybWFuY2UtPnNoYXJlZF90eXBlID0gCisJCQkJCXByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX3R5cGU7CisJCQltYXRjaF9wci0+cGVyZm9ybWFuY2UtPnNoYXJlZF9jcHVfbWFwID0KKwkJCQlwci0+cGVyZm9ybWFuY2UtPnNoYXJlZF9jcHVfbWFwOworCQl9CisJfQorCitlcnJfcmV0OgorCWlmIChyZXR2YWwpIHsKKwkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9FUlJPUiwgIkVycm9yIHdoaWxlIHBhcnNpbmcgX1BTRCBkb21haW4gaW5mb3JtYXRpb24uIEFzc3VtaW5nIG5vIGNvb3JkaW5hdGlvblxuIikpOworCX0KKworCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7CisJCXByID0gcHJvY2Vzc29yc1tpXTsKKwkJaWYgKCFwciB8fCAhcHItPnBlcmZvcm1hbmNlKQorCQkJY29udGludWU7CisKKwkJLyogQXNzdW1lIG5vIGNvb3JkaW5hdGlvbiBvbiBhbnkgZXJyb3IgcGFyc2luZyBkb21haW4gaW5mbyAqLworCQlpZiAocmV0dmFsKSB7CisJCQljcHVzX2NsZWFyKHByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX2NwdV9tYXApOworCQkJY3B1X3NldChpLCBwci0+cGVyZm9ybWFuY2UtPnNoYXJlZF9jcHVfbWFwKTsKKwkJCXByLT5wZXJmb3JtYW5jZS0+c2hhcmVkX3R5cGUgPSBDUFVGUkVRX1NIQVJFRF9UWVBFX0FMTDsKKwkJfQorCQlwci0+cGVyZm9ybWFuY2UgPSBOVUxMOyAvKiBXaWxsIGJlIHNldCBmb3IgcmVhbCBpbiByZWdpc3RlciAqLworCX0KKworCW11dGV4X3VubG9jaygmcGVyZm9ybWFuY2VfbXV0ZXgpOworCXJldHVybiByZXR2YWw7Cit9CitFWFBPUlRfU1lNQk9MKGFjcGlfcHJvY2Vzc29yX3ByZXJlZ2lzdGVyX3BlcmZvcm1hbmNlKTsKKworCiBpbnQKIGFjcGlfcHJvY2Vzc29yX3JlZ2lzdGVyX3BlcmZvcm1hbmNlKHN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZQogCQkJCSAgICAqcGVyZm9ybWFuY2UsIHVuc2lnbmVkIGludCBjcHUpCkBAIC01NjQsMTYgKzc4OSwxNiBAQAogCWlmICghKGFjcGlfcHJvY2Vzc29yX3BwY19zdGF0dXMgJiBQUENfUkVHSVNURVJFRCkpCiAJCXJldHVybl9WQUxVRSgtRUlOVkFMKTsKIAotCWRvd24oJnBlcmZvcm1hbmNlX3NlbSk7CisJbXV0ZXhfbG9jaygmcGVyZm9ybWFuY2VfbXV0ZXgpOwogCiAJcHIgPSBwcm9jZXNzb3JzW2NwdV07CiAJaWYgKCFwcikgewotCQl1cCgmcGVyZm9ybWFuY2Vfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZwZXJmb3JtYW5jZV9tdXRleCk7CiAJCXJldHVybl9WQUxVRSgtRU5PREVWKTsKIAl9CiAKIAlpZiAocHItPnBlcmZvcm1hbmNlKSB7Ci0JCXVwKCZwZXJmb3JtYW5jZV9zZW0pOworCQltdXRleF91bmxvY2soJnBlcmZvcm1hbmNlX211dGV4KTsKIAkJcmV0dXJuX1ZBTFVFKC1FQlVTWSk7CiAJfQogCkBAIC01ODMsMTMgKzgwOCwxMyBAQAogCiAJaWYgKGFjcGlfcHJvY2Vzc29yX2dldF9wZXJmb3JtYW5jZV9pbmZvKHByKSkgewogCQlwci0+cGVyZm9ybWFuY2UgPSBOVUxMOwotCQl1cCgmcGVyZm9ybWFuY2Vfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZwZXJmb3JtYW5jZV9tdXRleCk7CiAJCXJldHVybl9WQUxVRSgtRUlPKTsKIAl9CiAKIAlhY3BpX2NwdWZyZXFfYWRkX2ZpbGUocHIpOwogCi0JdXAoJnBlcmZvcm1hbmNlX3NlbSk7CisJbXV0ZXhfdW5sb2NrKCZwZXJmb3JtYW5jZV9tdXRleCk7CiAJcmV0dXJuX1ZBTFVFKDApOwogfQogCkBAIC02MDMsMTEgKzgyOCwxMSBAQAogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9wcm9jZXNzb3JfdW5yZWdpc3Rlcl9wZXJmb3JtYW5jZSIpOwogCi0JZG93bigmcGVyZm9ybWFuY2Vfc2VtKTsKKwltdXRleF9sb2NrKCZwZXJmb3JtYW5jZV9tdXRleCk7CiAKIAlwciA9IHByb2Nlc3NvcnNbY3B1XTsKIAlpZiAoIXByKSB7Ci0JCXVwKCZwZXJmb3JtYW5jZV9zZW0pOworCQltdXRleF91bmxvY2soJnBlcmZvcm1hbmNlX211dGV4KTsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQogCkBAIC02MTcsNyArODQyLDcgQEAKIAogCWFjcGlfY3B1ZnJlcV9yZW1vdmVfZmlsZShwcik7CiAKLQl1cCgmcGVyZm9ybWFuY2Vfc2VtKTsKKwltdXRleF91bmxvY2soJnBlcmZvcm1hbmNlX211dGV4KTsKIAogCXJldHVybl9WT0lEOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2NhbGMuYyBiL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNjYWxjLmMKaW5kZXggNDAzOGRiZi4uY2Y4N2IwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2NhbGMuYworKysgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzY2FsYy5jCkBAIC03OCw2ICs3OCw3IEBACiAJQUNQSV9GVU5DVElPTl9FTlRSWSgpOwogCiAJZm9yIChiaXRzX3NldCA9IDA7IGJpdF9maWVsZDsgYml0c19zZXQrKykgeworCiAJCS8qIFplcm8gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCB0aGF0IGlzIHNldCAqLwogCiAJCWJpdF9maWVsZCAmPSAoYml0X2ZpZWxkIC0gMSk7CkBAIC0xNTQsMTUgKzE1NSwxOCBAQAogCSAqIGxlbmd0aCwgbWludXMgb25lIGJ5dGUgZm9yIHRoZSByZXNvdXJjZV9zb3VyY2VfaW5kZXggaXRzZWxmLgogCSAqLwogCWlmIChyZXNvdXJjZV9sZW5ndGggPiBtaW5pbXVtX2FtbF9yZXNvdXJjZV9sZW5ndGgpIHsKKwogCQkvKiBDb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG9wdGlvbmFsIHN0cmluZyAqLwogCiAJCXN0cmluZ19sZW5ndGggPQogCQkgICAgcmVzb3VyY2VfbGVuZ3RoIC0gbWluaW11bV9hbWxfcmVzb3VyY2VfbGVuZ3RoIC0gMTsKIAl9CiAKLQkvKiBSb3VuZCB1cCBsZW5ndGggdG8gMzIgYml0cyBmb3IgaW50ZXJuYWwgc3RydWN0dXJlIGFsaWdubWVudCAqLwotCi0JcmV0dXJuIChBQ1BJX1JPVU5EX1VQX3RvXzMyX2JJVFMoc3RyaW5nX2xlbmd0aCkpOworCS8qCisJICogUm91bmQgdGhlIGxlbmd0aCB1cCB0byBhIG11bHRpcGxlIG9mIHRoZSBuYXRpdmUgd29yZCBpbiBvcmRlciB0bworCSAqIGd1YXJhbnRlZSB0aGF0IHRoZSBlbnRpcmUgcmVzb3VyY2UgZGVzY3JpcHRvciBpcyBuYXRpdmUgd29yZCBhbGlnbmVkCisJICovCisJcmV0dXJuICgodTMyKSBBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEKHN0cmluZ19sZW5ndGgpKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE4NiwxMSArMTkwLDEyIEBACiAJYWNwaV9zaXplIGFtbF9zaXplX25lZWRlZCA9IDA7CiAJYWNwaV9yc19sZW5ndGggdG90YWxfc2l6ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX2dldF9hbWxfbGVuZ3RoIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19nZXRfYW1sX2xlbmd0aCk7CiAKIAkvKiBUcmF2ZXJzZSBlbnRpcmUgbGlzdCBvZiBpbnRlcm5hbCByZXNvdXJjZSBkZXNjcmlwdG9ycyAqLwogCiAJd2hpbGUgKHJlc291cmNlKSB7CisKIAkJLyogVmFsaWRhdGUgdGhlIGRlc2NyaXB0b3IgdHlwZSAqLwogCiAJCWlmIChyZXNvdXJjZS0+dHlwZSA+IEFDUElfUkVTT1VSQ0VfVFlQRV9NQVgpIHsKQEAgLTIxNCw2ICsyMTksNyBAQAogCQkJICogaXMgYSBMYXJnZSBSZXNvdXJjZSBkYXRhIHR5cGUuCiAJCQkgKi8KIAkJCWlmIChyZXNvdXJjZS0+ZGF0YS52ZW5kb3IuYnl0ZV9sZW5ndGggPiA3KSB7CisKIAkJCQkvKiBCYXNlIHNpemUgb2YgYSBMYXJnZSByZXNvdXJjZSBkZXNjcmlwdG9yICovCiAKIAkJCQl0b3RhbF9zaXplID0KQEAgLTMzMiwyMCArMzM4LDIyIEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXU4ICplbmRfYW1sOwogCXU4ICpidWZmZXI7Ci0JdTMyIGJ1ZmZlcl9zaXplID0gMDsKKwl1MzIgYnVmZmVyX3NpemU7CiAJdTE2IHRlbXAxNjsKIAl1MTYgcmVzb3VyY2VfbGVuZ3RoOwogCXUzMiBleHRyYV9zdHJ1Y3RfYnl0ZXM7CiAJdTggcmVzb3VyY2VfaW5kZXg7CiAJdTggbWluaW11bV9hbWxfcmVzb3VyY2VfbGVuZ3RoOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicnNfZ2V0X2xpc3RfbGVuZ3RoIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19nZXRfbGlzdF9sZW5ndGgpOwogCisJKnNpemVfbmVlZGVkID0gMDsKIAllbmRfYW1sID0gYW1sX2J1ZmZlciArIGFtbF9idWZmZXJfbGVuZ3RoOwogCiAJLyogV2FsayB0aGUgbGlzdCBvZiBBTUwgcmVzb3VyY2UgZGVzY3JpcHRvcnMgKi8KIAogCXdoaWxlIChhbWxfYnVmZmVyIDwgZW5kX2FtbCkgeworCiAJCS8qIFZhbGlkYXRlIHRoZSBSZXNvdXJjZSBUeXBlIGFuZCBSZXNvdXJjZSBMZW5ndGggKi8KIAogCQlzdGF0dXMgPSBhY3BpX3V0X3ZhbGlkYXRlX3Jlc291cmNlKGFtbF9idWZmZXIsICZyZXNvdXJjZV9pbmRleCk7CkBAIC0zODYsMzUgKzM5NCwyOCBAQAogCQkJYnJlYWs7CiAKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX05BTUVfVkVORE9SX1NNQUxMOgorCQljYXNlIEFDUElfUkVTT1VSQ0VfTkFNRV9WRU5ET1JfTEFSR0U6CiAJCQkvKgogCQkJICogVmVuZG9yIFJlc291cmNlOgotCQkJICogRW5zdXJlIGEgMzItYml0IGJvdW5kYXJ5IGZvciB0aGUgc3RydWN0dXJlCisJCQkgKiBHZXQgdGhlIG51bWJlciBvZiB2ZW5kb3IgZGF0YSBieXRlcwogCQkJICovCi0JCQlleHRyYV9zdHJ1Y3RfYnl0ZXMgPQotCQkJICAgIEFDUElfUk9VTkRfVVBfdG9fMzJfYklUUyhyZXNvdXJjZV9sZW5ndGgpOworCQkJZXh0cmFfc3RydWN0X2J5dGVzID0gcmVzb3VyY2VfbGVuZ3RoOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX05BTUVfRU5EX1RBRzoKIAkJCS8qCi0JCQkgKiBFbmQgVGFnOiBUaGlzIGlzIHRoZSBub3JtYWwgZXhpdCwgYWRkIHNpemUgb2YgZW5kX3RhZworCQkJICogRW5kIFRhZzoKKwkJCSAqIFRoaXMgaXMgdGhlIG5vcm1hbCBleGl0LCBhZGQgc2l6ZSBvZiBlbmRfdGFnCiAJCQkgKi8KLQkJCSpzaXplX25lZWRlZCA9IGJ1ZmZlcl9zaXplICsgQUNQSV9SU19TSVpFX01JTjsKKwkJCSpzaXplX25lZWRlZCArPSBBQ1BJX1JTX1NJWkVfTUlOOwogCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIAotCQljYXNlIEFDUElfUkVTT1VSQ0VfTkFNRV9WRU5ET1JfTEFSR0U6Ci0JCQkvKgotCQkJICogVmVuZG9yIFJlc291cmNlOgotCQkJICogQWRkIHZlbmRvciBkYXRhIGFuZCBlbnN1cmUgYSAzMi1iaXQgYm91bmRhcnkgZm9yIHRoZSBzdHJ1Y3R1cmUKLQkJCSAqLwotCQkJZXh0cmFfc3RydWN0X2J5dGVzID0KLQkJCSAgICBBQ1BJX1JPVU5EX1VQX3RvXzMyX2JJVFMocmVzb3VyY2VfbGVuZ3RoKTsKLQkJCWJyZWFrOwotCiAJCWNhc2UgQUNQSV9SRVNPVVJDRV9OQU1FX0FERFJFU1MzMjoKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX05BTUVfQUREUkVTUzE2OgorCQljYXNlIEFDUElfUkVTT1VSQ0VfTkFNRV9BRERSRVNTNjQ6CiAJCQkvKgotCQkJICogMzItQml0IG9yIDE2LWJpdCBBZGRyZXNzIFJlc291cmNlOgotCQkJICogQWRkIHRoZSBzaXplIG9mIGFueSBvcHRpb25hbCBkYXRhIChyZXNvdXJjZV9zb3VyY2UpCisJCQkgKiBBZGRyZXNzIFJlc291cmNlOgorCQkJICogQWRkIHRoZSBzaXplIG9mIHRoZSBvcHRpb25hbCByZXNvdXJjZV9zb3VyY2UKIAkJCSAqLwogCQkJZXh0cmFfc3RydWN0X2J5dGVzID0KIAkJCSAgICBhY3BpX3JzX3N0cmVhbV9vcHRpb25fbGVuZ3RoKHJlc291cmNlX2xlbmd0aCwKQEAgLTQyMyw1MCArNDI0LDQ2IEBACiAKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX05BTUVfRVhURU5ERURfSVJROgogCQkJLyoKLQkJCSAqIEV4dGVuZGVkIElSUToKLQkJCSAqIFBvaW50IHBhc3QgdGhlIGludGVycnVwdF92ZWN0b3JfZmxhZ3MgdG8gZ2V0IHRoZQotCQkJICogaW50ZXJydXB0X3RhYmxlX2xlbmd0aC4KKwkJCSAqIEV4dGVuZGVkIElSUSBSZXNvdXJjZToKKwkJCSAqIFVzaW5nIHRoZSBpbnRlcnJ1cHRfdGFibGVfbGVuZ3RoLCBhZGQgNCBieXRlcyBmb3IgZWFjaCBhZGRpdGlvbmFsCisJCQkgKiBpbnRlcnJ1cHQuIE5vdGU6IGF0IGxlYXN0IG9uZSBpbnRlcnJ1cHQgaXMgcmVxdWlyZWQgYW5kIGlzCisJCQkgKiBpbmNsdWRlZCBpbiB0aGUgbWluaW11bSBkZXNjcmlwdG9yIHNpemUgKHJlYXNvbiBmb3IgdGhlIC0xKQogCQkJICovCi0JCQlidWZmZXIrKzsKKwkJCWV4dHJhX3N0cnVjdF9ieXRlcyA9IChidWZmZXJbMV0gLSAxKSAqIHNpemVvZih1MzIpOwogCi0JCQlleHRyYV9zdHJ1Y3RfYnl0ZXMgPQotCQkJICAgIC8qCi0JCQkgICAgICogQWRkIDQgYnl0ZXMgZm9yIGVhY2ggYWRkaXRpb25hbCBpbnRlcnJ1cHQuIE5vdGU6IGF0Ci0JCQkgICAgICogbGVhc3Qgb25lIGludGVycnVwdCBpcyByZXF1aXJlZCBhbmQgaXMgaW5jbHVkZWQgaW4KLQkJCSAgICAgKiB0aGUgbWluaW11bSBkZXNjcmlwdG9yIHNpemUKLQkJCSAgICAgKi8KLQkJCSAgICAoKCpidWZmZXIgLSAxKSAqIHNpemVvZih1MzIpKSArCi0JCQkgICAgLyogQWRkIHRoZSBzaXplIG9mIGFueSBvcHRpb25hbCBkYXRhIChyZXNvdXJjZV9zb3VyY2UpICovCisJCQkvKiBBZGQgdGhlIHNpemUgb2YgdGhlIG9wdGlvbmFsIHJlc291cmNlX3NvdXJjZSAqLworCisJCQlleHRyYV9zdHJ1Y3RfYnl0ZXMgKz0KIAkJCSAgICBhY3BpX3JzX3N0cmVhbV9vcHRpb25fbGVuZ3RoKHJlc291cmNlX2xlbmd0aCAtCiAJCQkJCQkJIGV4dHJhX3N0cnVjdF9ieXRlcywKIAkJCQkJCQkgbWluaW11bV9hbWxfcmVzb3VyY2VfbGVuZ3RoKTsKIAkJCWJyZWFrOwogCi0JCWNhc2UgQUNQSV9SRVNPVVJDRV9OQU1FX0FERFJFU1M2NDoKLQkJCS8qCi0JCQkgKiA2NC1CaXQgQWRkcmVzcyBSZXNvdXJjZToKLQkJCSAqIEFkZCB0aGUgc2l6ZSBvZiBhbnkgb3B0aW9uYWwgZGF0YSAocmVzb3VyY2Vfc291cmNlKQotCQkJICogRW5zdXJlIGEgNjQtYml0IGJvdW5kYXJ5IGZvciB0aGUgc3RydWN0dXJlCi0JCQkgKi8KLQkJCWV4dHJhX3N0cnVjdF9ieXRlcyA9Ci0JCQkgICAgQUNQSV9ST1VORF9VUF90b182NF9iSVRTCi0JCQkgICAgKGFjcGlfcnNfc3RyZWFtX29wdGlvbl9sZW5ndGgKLQkJCSAgICAgKHJlc291cmNlX2xlbmd0aCwgbWluaW11bV9hbWxfcmVzb3VyY2VfbGVuZ3RoKSk7Ci0JCQlicmVhazsKLQogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJCX0KIAotCQkvKiBVcGRhdGUgdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIGZvciB0aGUgaW50ZXJuYWwgZGVzY3JpcHRvciBzdHJ1Y3RzICovCisJCS8qCisJCSAqIFVwZGF0ZSB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgZm9yIHRoZSBpbnRlcm5hbCBkZXNjcmlwdG9yIHN0cnVjdHMKKwkJICoKKwkJICogSW1wb3J0YW50OiBSb3VuZCB0aGUgc2l6ZSB1cCBmb3IgdGhlIGFwcHJvcHJpYXRlIGFsaWdubWVudC4gVGhpcworCQkgKiBpcyBhIHJlcXVpcmVtZW50IG9uIElBNjQuCisJCSAqLworCQlidWZmZXJfc2l6ZSA9IGFjcGlfZ2JsX3Jlc291cmNlX3N0cnVjdF9zaXplc1tyZXNvdXJjZV9pbmRleF0gKworCQkgICAgZXh0cmFfc3RydWN0X2J5dGVzOworCQlidWZmZXJfc2l6ZSA9ICh1MzIpIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQoYnVmZmVyX3NpemUpOwogCi0JCXRlbXAxNiA9ICh1MTYpIChhY3BpX2dibF9yZXNvdXJjZV9zdHJ1Y3Rfc2l6ZXNbcmVzb3VyY2VfaW5kZXhdICsKLQkJCQlleHRyYV9zdHJ1Y3RfYnl0ZXMpOwotCQlidWZmZXJfc2l6ZSArPSAodTMyKSBBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEKHRlbXAxNik7CisJCSpzaXplX25lZWRlZCArPSBidWZmZXJfc2l6ZTsKKworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1JFU09VUkNFUywKKwkJCQkgICJUeXBlICUuMlgsIEFtbExlbmd0aCAlLjJYIEludGVybmFsTGVuZ3RoICUuMlhcbiIsCisJCQkJICBhY3BpX3V0X2dldF9yZXNvdXJjZV90eXBlKGFtbF9idWZmZXIpLAorCQkJCSAgYWNwaV91dF9nZXRfZGVzY3JpcHRvcl9sZW5ndGgoYW1sX2J1ZmZlciksCisJCQkJICBidWZmZXJfc2l6ZSkpOwogCiAJCS8qCi0JCSAqIFBvaW50IHRvIHRoZSBuZXh0IHJlc291cmNlIHdpdGhpbiB0aGUgc3RyZWFtCi0JCSAqIHVzaW5nIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgcGx1cyB0aGUgbGVuZ3RoIGNvbnRhaW5lZCBpbiB0aGUgaGVhZGVyCisJCSAqIFBvaW50IHRvIHRoZSBuZXh0IHJlc291cmNlIHdpdGhpbiB0aGUgQU1MIHN0cmVhbSB1c2luZyB0aGUgbGVuZ3RoCisJCSAqIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UgZGVzY3JpcHRvciBoZWFkZXIKIAkJICovCiAJCWFtbF9idWZmZXIgKz0gYWNwaV91dF9nZXRfZGVzY3JpcHRvcl9sZW5ndGgoYW1sX2J1ZmZlcik7CiAJfQpAQCAtNTA2LDcgKzUwMyw3IEBACiAJdTggbmFtZV9mb3VuZDsKIAl1MzIgdGFibGVfaW5kZXg7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJyc19nZXRfcGNpX3JvdXRpbmdfdGFibGVfbGVuZ3RoIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19nZXRfcGNpX3JvdXRpbmdfdGFibGVfbGVuZ3RoKTsKIAogCW51bWJlcl9vZl9lbGVtZW50cyA9IHBhY2thZ2Vfb2JqZWN0LT5wYWNrYWdlLmNvdW50OwogCkBAIC01MjMsNiArNTIwLDcgQEAKIAl0b3Bfb2JqZWN0X2xpc3QgPSBwYWNrYWdlX29iamVjdC0+cGFja2FnZS5lbGVtZW50czsKIAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IG51bWJlcl9vZl9lbGVtZW50czsgaW5kZXgrKykgeworCiAJCS8qIERlcmVmZXJlbmNlIHRoZSBzdWItcGFja2FnZSAqLwogCiAJCXBhY2thZ2VfZWxlbWVudCA9ICp0b3Bfb2JqZWN0X2xpc3Q7CkBAIC01ODEsNyArNTc5LDcgQEAKIAogCQkvKiBSb3VuZCB1cCB0aGUgc2l6ZSBzaW5jZSBlYWNoIGVsZW1lbnQgbXVzdCBiZSBhbGlnbmVkICovCiAKLQkJdGVtcF9zaXplX25lZWRlZCA9IEFDUElfUk9VTkRfVVBfdG9fNjRfYklUUyh0ZW1wX3NpemVfbmVlZGVkKTsKKwkJdGVtcF9zaXplX25lZWRlZCA9IEFDUElfUk9VTkRfVVBfVE9fNjRCSVQodGVtcF9zaXplX25lZWRlZCk7CiAKIAkJLyogUG9pbnQgdG8gdGhlIG5leHQgdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqLwogCkBAIC01ODksNyArNTg3LDcgQEAKIAl9CiAKIAkvKgotCSAqIEFkZGluZyBhbiBleHRyYSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QsIGVzc2VudGlhbGx5IGEKKwkgKiBBZGQgYW4gZXh0cmEgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LCBlc3NlbnRpYWxseSBhCiAJICogTlVMTCB0ZXJtaW5hdG9yCiAJICovCiAJKmJ1ZmZlcl9zaXplX25lZWRlZCA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzY3JlYXRlLmMgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzY3JlYXRlLmMKaW5kZXggOGMxMjhkZS4uMDA4MDU4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2NyZWF0ZS5jCisrKyBiL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNjcmVhdGUuYwpAQCAtNzUsMTAgKzc1LDExIEBACiAJdTggKmFtbF9zdGFydDsKIAlhY3BpX3NpemUgbGlzdF9zaXplX25lZWRlZCA9IDA7CiAJdTMyIGFtbF9idWZmZXJfbGVuZ3RoOworCXZvaWQgKnJlc291cmNlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicnNfY3JlYXRlX3Jlc291cmNlX2xpc3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX2NyZWF0ZV9yZXNvdXJjZV9saXN0KTsKIAotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgImFtbF9idWZmZXIgPSAlcFxuIiwgYW1sX2J1ZmZlcikpOworCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIkFtbEJ1ZmZlciA9ICVwXG4iLCBhbWxfYnVmZmVyKSk7CiAKIAkvKiBQYXJhbXMgYWxyZWFkeSB2YWxpZGF0ZWQsIHNvIHdlIGRvbid0IHJlLXZhbGlkYXRlIGhlcmUgKi8KIApAQCAtOTIsNyArOTMsNyBAQAogCXN0YXR1cyA9IGFjcGlfcnNfZ2V0X2xpc3RfbGVuZ3RoKGFtbF9zdGFydCwgYW1sX2J1ZmZlcl9sZW5ndGgsCiAJCQkJCSAmbGlzdF9zaXplX25lZWRlZCk7CiAKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJTdGF0dXM9JVggbGlzdF9zaXplX25lZWRlZD0lWFxuIiwKKwlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJTdGF0dXM9JVggTGlzdFNpemVOZWVkZWQ9JVhcbiIsCiAJCQkgIHN0YXR1cywgKHUzMikgbGlzdF9zaXplX25lZWRlZCkpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTEwNywxMyArMTA4LDE1IEBACiAKIAkvKiBEbyB0aGUgY29udmVyc2lvbiAqLwogCi0Jc3RhdHVzID0gYWNwaV9yc19jb252ZXJ0X2FtbF90b19yZXNvdXJjZXMoYW1sX3N0YXJ0LCBhbWxfYnVmZmVyX2xlbmd0aCwKLQkJCQkJCSAgb3V0cHV0X2J1ZmZlci0+cG9pbnRlcik7CisJcmVzb3VyY2UgPSBvdXRwdXRfYnVmZmVyLT5wb2ludGVyOworCXN0YXR1cyA9IGFjcGlfdXRfd2Fsa19hbWxfcmVzb3VyY2VzKGFtbF9zdGFydCwgYW1sX2J1ZmZlcl9sZW5ndGgsCisJCQkJCSAgICBhY3BpX3JzX2NvbnZlcnRfYW1sX3RvX3Jlc291cmNlcywKKwkJCQkJICAgICZyZXNvdXJjZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCX0KIAotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIm91dHB1dF9idWZmZXIgJXAgTGVuZ3RoICVYXG4iLAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIk91dHB1dEJ1ZmZlciAlcCBMZW5ndGggJVhcbiIsCiAJCQkgIG91dHB1dF9idWZmZXItPnBvaW50ZXIsICh1MzIpIG91dHB1dF9idWZmZXItPmxlbmd0aCkpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CkBAIC0xNTUsNyArMTU4LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfYnVmZmVyIHBhdGhfYnVmZmVyOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicnNfY3JlYXRlX3BjaV9yb3V0aW5nX3RhYmxlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19jcmVhdGVfcGNpX3JvdXRpbmdfdGFibGUpOwogCiAJLyogUGFyYW1zIGFscmVhZHkgdmFsaWRhdGVkLCBzbyB3ZSBkb24ndCByZS12YWxpZGF0ZSBoZXJlICovCiAKQEAgLTE2Nyw3ICsxNzAsNyBAQAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJidWZmZXJfc2l6ZV9uZWVkZWQgPSAlWFxuIiwKKwlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJCdWZmZXJTaXplTmVlZGVkID0gJVhcbiIsCiAJCQkgICh1MzIpIGJ1ZmZlcl9zaXplX25lZWRlZCkpOwogCiAJLyogVmFsaWRhdGUvQWxsb2NhdGUvQ2xlYXIgY2FsbGVyIGJ1ZmZlciAqLwpAQCAtMzMyLDcgKzMzNSw3IEBACiAJCS8qIE5vdyBhbGlnbiB0aGUgY3VycmVudCBsZW5ndGggKi8KIAogCQl1c2VyX3BydC0+bGVuZ3RoID0KLQkJICAgICh1MzIpIEFDUElfUk9VTkRfVVBfdG9fNjRfYklUUyh1c2VyX3BydC0+bGVuZ3RoKTsKKwkJICAgICh1MzIpIEFDUElfUk9VTkRfVVBfVE9fNjRCSVQodXNlcl9wcnQtPmxlbmd0aCk7CiAKIAkJLyogNCkgRm91cnRoIHN1Ym9iamVjdDogRGVyZWZlcmVuY2UgdGhlIFBSVC5zb3VyY2VfaW5kZXggKi8KIApAQCAtMzQxLDcgKzM0NCw3IEBACiAJCQl1c2VyX3BydC0+c291cmNlX2luZGV4ID0gKHUzMikgb2JqX2Rlc2MtPmludGVnZXIudmFsdWU7CiAJCX0gZWxzZSB7CiAJCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJCSAgICAiKFBSVFslWF0uc291cmNlX2luZGV4KSBOZWVkIEludGVnZXIsIGZvdW5kICVzIiwKKwkJCQkgICAgIihQUlRbJVhdLlNvdXJjZUluZGV4KSBOZWVkIEludGVnZXIsIGZvdW5kICVzIiwKIAkJCQkgICAgaW5kZXgsCiAJCQkJICAgIGFjcGlfdXRfZ2V0X29iamVjdF90eXBlX25hbWUob2JqX2Rlc2MpKSk7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX0RBVEEpOwpAQCAtMzUyLDcgKzM1NSw3IEBACiAJCXRvcF9vYmplY3RfbGlzdCsrOwogCX0KIAotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIm91dHB1dF9idWZmZXIgJXAgTGVuZ3RoICVYXG4iLAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIk91dHB1dEJ1ZmZlciAlcCBMZW5ndGggJVhcbiIsCiAJCQkgIG91dHB1dF9idWZmZXItPnBvaW50ZXIsICh1MzIpIG91dHB1dF9idWZmZXItPmxlbmd0aCkpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CkBAIC0zODIsOSArMzg1LDkgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJYWNwaV9zaXplIGFtbF9zaXplX25lZWRlZCA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJyc19jcmVhdGVfYW1sX3Jlc291cmNlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocnNfY3JlYXRlX2FtbF9yZXNvdXJjZXMpOwogCi0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAibGlua2VkX2xpc3RfYnVmZmVyID0gJXBcbiIsCisJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAiTGlua2VkTGlzdEJ1ZmZlciA9ICVwXG4iLAogCQkJICBsaW5rZWRfbGlzdF9idWZmZXIpKTsKIAogCS8qCkBAIC0zOTUsNyArMzk4LDcgQEAKIAkgKi8KIAlzdGF0dXMgPSBhY3BpX3JzX2dldF9hbWxfbGVuZ3RoKGxpbmtlZF9saXN0X2J1ZmZlciwgJmFtbF9zaXplX25lZWRlZCk7CiAKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sICJhbWxfc2l6ZV9uZWVkZWQ9JVgsICVzXG4iLAorCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIkFtbFNpemVOZWVkZWQ9JVgsICVzXG4iLAogCQkJICAodTMyKSBhbWxfc2l6ZV9uZWVkZWQsCiAJCQkgIGFjcGlfZm9ybWF0X2V4Y2VwdGlvbihzdGF0dXMpKSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CkBAIC00MTksNyArNDIyLDcgQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCi0JQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAib3V0cHV0X2J1ZmZlciAlcCBMZW5ndGggJVhcbiIsCisJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAiT3V0cHV0QnVmZmVyICVwIExlbmd0aCAlWFxuIiwKIAkJCSAgb3V0cHV0X2J1ZmZlci0+cG9pbnRlciwgKHUzMikgb3V0cHV0X2J1ZmZlci0+bGVuZ3RoKSk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNkdW1wLmMgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzZHVtcC5jCmluZGV4IGU3ZGUwNjEuLjljOTlhNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNkdW1wLmMKKysrIGIvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2R1bXAuYwpAQCAtOTEsMTEgKzkxLDExIEBACiBzdHJ1Y3QgYWNwaV9yc2R1bXBfaW5mbyBhY3BpX3JzX2R1bXBfaXJxWzZdID0gewogCXtBQ1BJX1JTRF9USVRMRSwgQUNQSV9SU0RfVEFCTEVfU0laRShhY3BpX3JzX2R1bXBfaXJxKSwgIklSUSIsIE5VTEx9LAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGlycS50cmlnZ2VyaW5nKSwgIlRyaWdnZXJpbmciLAotCSBhY3BpX2dibF9IRWRlY29kZX0sCisJIGFjcGlfZ2JsX2hlX2RlY29kZX0sCiAJe0FDUElfUlNEXzFCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoaXJxLnBvbGFyaXR5KSwgIlBvbGFyaXR5IiwKLQkgYWNwaV9nYmxfTExkZWNvZGV9LAorCSBhY3BpX2dibF9sbF9kZWNvZGV9LAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGlycS5zaGFyYWJsZSksICJTaGFyaW5nIiwKLQkgYWNwaV9nYmxfU0hSZGVjb2RlfSwKKwkgYWNwaV9nYmxfc2hyX2RlY29kZX0sCiAJe0FDUElfUlNEX1VJTlQ4LCBBQ1BJX1JTRF9PRkZTRVQoaXJxLmludGVycnVwdF9jb3VudCksCiAJICJJbnRlcnJ1cHQgQ291bnQiLCBOVUxMfSwKIAl7QUNQSV9SU0RfU0hPUlRMSVNULCBBQ1BJX1JTRF9PRkZTRVQoaXJxLmludGVycnVwdHNbMF0pLApAQCAtMTA1LDExICsxMDUsMTEgQEAKIHN0cnVjdCBhY3BpX3JzZHVtcF9pbmZvIGFjcGlfcnNfZHVtcF9kbWFbNl0gPSB7CiAJe0FDUElfUlNEX1RJVExFLCBBQ1BJX1JTRF9UQUJMRV9TSVpFKGFjcGlfcnNfZHVtcF9kbWEpLCAiRE1BIiwgTlVMTH0sCiAJe0FDUElfUlNEXzJCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoZG1hLnR5cGUpLCAiU3BlZWQiLAotCSBhY3BpX2dibF9UWVBkZWNvZGV9LAorCSBhY3BpX2dibF90eXBfZGVjb2RlfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChkbWEuYnVzX21hc3RlciksICJNYXN0ZXJpbmciLAotCSBhY3BpX2dibF9CTWRlY29kZX0sCisJIGFjcGlfZ2JsX2JtX2RlY29kZX0sCiAJe0FDUElfUlNEXzJCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoZG1hLnRyYW5zZmVyKSwgIlRyYW5zZmVyIFR5cGUiLAotCSBhY3BpX2dibF9TSVpkZWNvZGV9LAorCSBhY3BpX2dibF9zaXpfZGVjb2RlfSwKIAl7QUNQSV9SU0RfVUlOVDgsIEFDUElfUlNEX09GRlNFVChkbWEuY2hhbm5lbF9jb3VudCksICJDaGFubmVsIENvdW50IiwKIAkgTlVMTH0sCiAJe0FDUElfUlNEX1NIT1JUTElTVCwgQUNQSV9SU0RfT0ZGU0VUKGRtYS5jaGFubmVsc1swXSksICJDaGFubmVsIExpc3QiLApAQCAtMTU4LDcgKzE1OCw3IEBACiB9OwogCiBzdHJ1Y3QgYWNwaV9yc2R1bXBfaW5mbyBhY3BpX3JzX2R1bXBfZW5kX3RhZ1sxXSA9IHsKLQl7QUNQSV9SU0RfVElUTEUsIEFDUElfUlNEX1RBQkxFX1NJWkUoYWNwaV9yc19kdW1wX2VuZF90YWcpLCAiZW5kX3RhZyIsCisJe0FDUElfUlNEX1RJVExFLCBBQ1BJX1JTRF9UQUJMRV9TSVpFKGFjcGlfcnNfZHVtcF9lbmRfdGFnKSwgIkVuZFRhZyIsCiAJIE5VTEx9CiB9OwogCkBAIC0xNjYsNyArMTY2LDcgQEAKIAl7QUNQSV9SU0RfVElUTEUsIEFDUElfUlNEX1RBQkxFX1NJWkUoYWNwaV9yc19kdW1wX21lbW9yeTI0KSwKIAkgIjI0LUJpdCBNZW1vcnkgUmFuZ2UiLCBOVUxMfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChtZW1vcnkyNC53cml0ZV9wcm90ZWN0KSwKLQkgIldyaXRlIFByb3RlY3QiLCBhY3BpX2dibF9SV2RlY29kZX0sCisJICJXcml0ZSBQcm90ZWN0IiwgYWNwaV9nYmxfcndfZGVjb2RlfSwKIAl7QUNQSV9SU0RfVUlOVDE2LCBBQ1BJX1JTRF9PRkZTRVQobWVtb3J5MjQubWluaW11bSksICJBZGRyZXNzIE1pbmltdW0iLAogCSBOVUxMfSwKIAl7QUNQSV9SU0RfVUlOVDE2LCBBQ1BJX1JTRF9PRkZTRVQobWVtb3J5MjQubWF4aW11bSksICJBZGRyZXNzIE1heGltdW0iLApAQCAtMTgxLDcgKzE4MSw3IEBACiAJe0FDUElfUlNEX1RJVExFLCBBQ1BJX1JTRF9UQUJMRV9TSVpFKGFjcGlfcnNfZHVtcF9tZW1vcnkzMiksCiAJICIzMi1CaXQgTWVtb3J5IFJhbmdlIiwgTlVMTH0sCiAJe0FDUElfUlNEXzFCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQobWVtb3J5MzIud3JpdGVfcHJvdGVjdCksCi0JICJXcml0ZSBQcm90ZWN0IiwgYWNwaV9nYmxfUldkZWNvZGV9LAorCSAiV3JpdGUgUHJvdGVjdCIsIGFjcGlfZ2JsX3J3X2RlY29kZX0sCiAJe0FDUElfUlNEX1VJTlQzMiwgQUNQSV9SU0RfT0ZGU0VUKG1lbW9yeTMyLm1pbmltdW0pLCAiQWRkcmVzcyBNaW5pbXVtIiwKIAkgTlVMTH0sCiAJe0FDUElfUlNEX1VJTlQzMiwgQUNQSV9SU0RfT0ZGU0VUKG1lbW9yeTMyLm1heGltdW0pLCAiQWRkcmVzcyBNYXhpbXVtIiwKQEAgLTE5Niw3ICsxOTYsNyBAQAogCXtBQ1BJX1JTRF9USVRMRSwgQUNQSV9SU0RfVEFCTEVfU0laRShhY3BpX3JzX2R1bXBfZml4ZWRfbWVtb3J5MzIpLAogCSAiMzItQml0IEZpeGVkIE1lbW9yeSBSYW5nZSIsIE5VTEx9LAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGZpeGVkX21lbW9yeTMyLndyaXRlX3Byb3RlY3QpLAotCSAiV3JpdGUgUHJvdGVjdCIsIGFjcGlfZ2JsX1JXZGVjb2RlfSwKKwkgIldyaXRlIFByb3RlY3QiLCBhY3BpX2dibF9yd19kZWNvZGV9LAogCXtBQ1BJX1JTRF9VSU5UMzIsIEFDUElfUlNEX09GRlNFVChmaXhlZF9tZW1vcnkzMi5hZGRyZXNzKSwgIkFkZHJlc3MiLAogCSBOVUxMfSwKIAl7QUNQSV9SU0RfVUlOVDMyLCBBQ1BJX1JTRF9PRkZTRVQoZml4ZWRfbWVtb3J5MzIuYWRkcmVzc19sZW5ndGgpLApAQCAtMjc4LDExICsyNzgsMTEgQEAKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChleHRlbmRlZF9pcnEucHJvZHVjZXJfY29uc3VtZXIpLAogCSAiVHlwZSIsIGFjcGlfZ2JsX2NvbnN1bWVfZGVjb2RlfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChleHRlbmRlZF9pcnEudHJpZ2dlcmluZyksCi0JICJUcmlnZ2VyaW5nIiwgYWNwaV9nYmxfSEVkZWNvZGV9LAorCSAiVHJpZ2dlcmluZyIsIGFjcGlfZ2JsX2hlX2RlY29kZX0sCiAJe0FDUElfUlNEXzFCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoZXh0ZW5kZWRfaXJxLnBvbGFyaXR5KSwgIlBvbGFyaXR5IiwKLQkgYWNwaV9nYmxfTExkZWNvZGV9LAorCSBhY3BpX2dibF9sbF9kZWNvZGV9LAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGV4dGVuZGVkX2lycS5zaGFyYWJsZSksICJTaGFyaW5nIiwKLQkgYWNwaV9nYmxfU0hSZGVjb2RlfSwKKwkgYWNwaV9nYmxfc2hyX2RlY29kZX0sCiAJe0FDUElfUlNEX1NPVVJDRSwgQUNQSV9SU0RfT0ZGU0VUKGV4dGVuZGVkX2lycS5yZXNvdXJjZV9zb3VyY2UpLCBOVUxMLAogCSBOVUxMfSwKIAl7QUNQSV9SU0RfVUlOVDgsIEFDUElfUlNEX09GRlNFVChleHRlbmRlZF9pcnEuaW50ZXJydXB0X2NvdW50KSwKQEAgLTMxNCw3ICszMTQsNyBAQAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGFkZHJlc3MucHJvZHVjZXJfY29uc3VtZXIpLAogCSAiQ29uc3VtZXIvUHJvZHVjZXIiLCBhY3BpX2dibF9jb25zdW1lX2RlY29kZX0sCiAJe0FDUElfUlNEXzFCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoYWRkcmVzcy5kZWNvZGUpLCAiQWRkcmVzcyBEZWNvZGUiLAotCSBhY3BpX2dibF9ERUNkZWNvZGV9LAorCSBhY3BpX2dibF9kZWNfZGVjb2RlfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLm1pbl9hZGRyZXNzX2ZpeGVkKSwKIAkgIk1pbiBSZWxvY2F0YWJpbGl0eSIsIGFjcGlfZ2JsX21pbl9kZWNvZGV9LAogCXtBQ1BJX1JTRF8xQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGFkZHJlc3MubWF4X2FkZHJlc3NfZml4ZWQpLApAQCAtMzI1LDI0ICszMjUsMjQgQEAKIAl7QUNQSV9SU0RfTElURVJBTCwgQUNQSV9SU0RfVEFCTEVfU0laRShhY3BpX3JzX2R1bXBfbWVtb3J5X2ZsYWdzKSwKIAkgIlJlc291cmNlIFR5cGUiLCAodm9pZCAqKSJNZW1vcnkgUmFuZ2UifSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLmluZm8ubWVtLndyaXRlX3Byb3RlY3QpLAotCSAiV3JpdGUgUHJvdGVjdCIsIGFjcGlfZ2JsX1JXZGVjb2RlfSwKKwkgIldyaXRlIFByb3RlY3QiLCBhY3BpX2dibF9yd19kZWNvZGV9LAogCXtBQ1BJX1JTRF8yQklURkxBRywgQUNQSV9SU0RfT0ZGU0VUKGFkZHJlc3MuaW5mby5tZW0uY2FjaGluZyksCi0JICJDYWNoaW5nIiwgYWNwaV9nYmxfTUVNZGVjb2RlfSwKKwkgIkNhY2hpbmciLCBhY3BpX2dibF9tZW1fZGVjb2RlfSwKIAl7QUNQSV9SU0RfMkJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLmluZm8ubWVtLnJhbmdlX3R5cGUpLAotCSAiUmFuZ2UgVHlwZSIsIGFjcGlfZ2JsX01UUGRlY29kZX0sCisJICJSYW5nZSBUeXBlIiwgYWNwaV9nYmxfbXRwX2RlY29kZX0sCiAJe0FDUElfUlNEXzFCSVRGTEFHLCBBQ1BJX1JTRF9PRkZTRVQoYWRkcmVzcy5pbmZvLm1lbS50cmFuc2xhdGlvbiksCi0JICJUcmFuc2xhdGlvbiIsIGFjcGlfZ2JsX1RUUGRlY29kZX0KKwkgIlRyYW5zbGF0aW9uIiwgYWNwaV9nYmxfdHRwX2RlY29kZX0KIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYWNwaV9yc2R1bXBfaW5mbyBhY3BpX3JzX2R1bXBfaW9fZmxhZ3NbNF0gPSB7CiAJe0FDUElfUlNEX0xJVEVSQUwsIEFDUElfUlNEX1RBQkxFX1NJWkUoYWNwaV9yc19kdW1wX2lvX2ZsYWdzKSwKIAkgIlJlc291cmNlIFR5cGUiLCAodm9pZCAqKSJJL08gUmFuZ2UifSwKIAl7QUNQSV9SU0RfMkJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLmluZm8uaW8ucmFuZ2VfdHlwZSksCi0JICJSYW5nZSBUeXBlIiwgYWNwaV9nYmxfUk5HZGVjb2RlfSwKKwkgIlJhbmdlIFR5cGUiLCBhY3BpX2dibF9ybmdfZGVjb2RlfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLmluZm8uaW8udHJhbnNsYXRpb24pLAotCSAiVHJhbnNsYXRpb24iLCBhY3BpX2dibF9UVFBkZWNvZGV9LAorCSAiVHJhbnNsYXRpb24iLCBhY3BpX2dibF90dHBfZGVjb2RlfSwKIAl7QUNQSV9SU0RfMUJJVEZMQUcsIEFDUElfUlNEX09GRlNFVChhZGRyZXNzLmluZm8uaW8udHJhbnNsYXRpb25fdHlwZSksCi0JICJUcmFuc2xhdGlvbiBUeXBlIiwgYWNwaV9nYmxfVFJTZGVjb2RlfQorCSAiVHJhbnNsYXRpb24gVHlwZSIsIGFjcGlfZ2JsX3Ryc19kZWNvZGV9CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2luZm8uYyBiL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNpbmZvLmMKaW5kZXggZDlhZTY0Yi4uOWU3YWUyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2luZm8uYworKysgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzaW5mby5jCkBAIC0xNDEsNiArMTQxLDcgQEAKIAlhY3BpX3JzX2R1bXBfZ2VuZXJpY19yZWcsCS8qIEFDUElfUkVTT1VSQ0VfVFlQRV9HRU5FUklDX1JFR0lTVEVSICovCiB9OwogI2VuZGlmCisKICNlbmRpZgkvKiBBQ1BJX0ZVVFVSRV9VU0FHRSAqLwogLyoKICAqIEJhc2Ugc2l6ZXMgZm9yIGV4dGVybmFsIEFNTCByZXNvdXJjZSBkZXNjcmlwdG9ycywgaW5kZXhlZCBieSBpbnRlcm5hbCB0eXBlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2xpc3QuYyBiL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNsaXN0LmMKaW5kZXggMTQzNGU3OC4uMjk0MjNjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc2xpc3QuYworKysgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzbGlzdC5jCkBAIC01MSw3NiArNTEsNjIgQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9yc19jb252ZXJ0X2FtbF90b19yZXNvdXJjZXMKICAqCi0gKiBQQVJBTUVURVJTOiAgQW1sICAgICAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGJ5dGUgc3RyZWFtCi0gKiAgICAgICAgICAgICAgYW1sX2xlbmd0aCAgICAgICAgICAtIExlbmd0aCBvZiBBbWwKLSAqICAgICAgICAgICAgICBvdXRwdXRfYnVmZmVyICAgICAgIC0gUG9pbnRlciB0byB0aGUgYnVmZmVyIHRoYXQgd2lsbAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSBvdXRwdXQgc3RydWN0dXJlcworICogUEFSQU1FVEVSUzogIGFjcGlfd2Fsa19hbWxfY2FsbGJhY2sKKyAqICAgICAgICAgICAgICByZXNvdXJjZV9wdHIgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0aGF0IHdpbGwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIG91dHB1dCBzdHJ1Y3R1cmVzCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKLSAqIERFU0NSSVBUSU9OOiBUYWtlcyB0aGUgcmVzb3VyY2UgYnl0ZSBzdHJlYW0gYW5kIHBhcnNlcyBpdCwgY3JlYXRpbmcgYQotICogICAgICAgICAgICAgIGxpbmtlZCBsaXN0IG9mIHJlc291cmNlcyBpbiB0aGUgY2FsbGVyJ3Mgb3V0cHV0IGJ1ZmZlcgorICogREVTQ1JJUFRJT046IENvbnZlcnQgYW4gQU1MIHJlc291cmNlIHRvIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICogICAgICAgICAgICAgIHJlc291cmNlIHRoYXQgaXMgYWxpZ25lZCBhbmQgZWFzaWVyIHRvIGFjY2Vzcy4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogYWNwaV9zdGF0dXMKLWFjcGlfcnNfY29udmVydF9hbWxfdG9fcmVzb3VyY2VzKHU4ICogYW1sLCB1MzIgYW1sX2xlbmd0aCwgdTggKiBvdXRwdXRfYnVmZmVyKQorYWNwaV9yc19jb252ZXJ0X2FtbF90b19yZXNvdXJjZXModTggKiBhbWwsCisJCQkJIHUzMiBsZW5ndGgsCisJCQkJIHUzMiBvZmZzZXQsIHU4IHJlc291cmNlX2luZGV4LCB2b2lkICoqY29udGV4dCkKIHsKLQlzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UgPSAodm9pZCAqKW91dHB1dF9idWZmZXI7CisJc3RydWN0IGFjcGlfcmVzb3VyY2UgKipyZXNvdXJjZV9wdHIgPQorCSAgICBBQ1BJX0NBU1RfSU5ESVJFQ1RfUFRSKHN0cnVjdCBhY3BpX3Jlc291cmNlLCBjb250ZXh0KTsKKwlzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2U7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwotCXU4IHJlc291cmNlX2luZGV4OwotCXU4ICplbmRfYW1sOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicnNfY29udmVydF9hbWxfdG9fcmVzb3VyY2VzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19jb252ZXJ0X2FtbF90b19yZXNvdXJjZXMpOwogCi0JZW5kX2FtbCA9IGFtbCArIGFtbF9sZW5ndGg7Ci0KLQkvKiBMb29wIHVudGlsIGVuZC1vZi1idWZmZXIgb3IgYW4gZW5kX3RhZyBpcyBmb3VuZCAqLwotCi0Jd2hpbGUgKGFtbCA8IGVuZF9hbWwpIHsKLQkJLyogVmFsaWRhdGUgdGhlIFJlc291cmNlIFR5cGUgYW5kIFJlc291cmNlIExlbmd0aCAqLwotCi0JCXN0YXR1cyA9IGFjcGlfdXRfdmFsaWRhdGVfcmVzb3VyY2UoYW1sLCAmcmVzb3VyY2VfaW5kZXgpOwotCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotCQl9Ci0KLQkJLyogQ29udmVydCB0aGUgQU1MIGJ5dGUgc3RyZWFtIHJlc291cmNlIHRvIGEgbG9jYWwgcmVzb3VyY2Ugc3RydWN0ICovCi0KLQkJc3RhdHVzID0KLQkJICAgIGFjcGlfcnNfY29udmVydF9hbWxfdG9fcmVzb3VyY2UocmVzb3VyY2UsCi0JCQkJCQkgICAgQUNQSV9DQVNUX1BUUih1bmlvbgotCQkJCQkJCQkgIGFtbF9yZXNvdXJjZSwKLQkJCQkJCQkJICBhbWwpLAotCQkJCQkJICAgIGFjcGlfZ2JsX2dldF9yZXNvdXJjZV9kaXNwYXRjaAotCQkJCQkJICAgIFtyZXNvdXJjZV9pbmRleF0pOwotCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCi0JCQkJCSJDb3VsZCBub3QgY29udmVydCBBTUwgcmVzb3VyY2UgKFR5cGUgJVgpIiwKLQkJCQkJKmFtbCkpOwotCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JCX0KLQotCQkvKiBOb3JtYWwgZXhpdCBvbiBjb21wbGV0aW9uIG9mIGFuIGVuZF90YWcgcmVzb3VyY2UgZGVzY3JpcHRvciAqLwotCi0JCWlmIChhY3BpX3V0X2dldF9yZXNvdXJjZV90eXBlKGFtbCkgPT0KLQkJICAgIEFDUElfUkVTT1VSQ0VfTkFNRV9FTkRfVEFHKSB7Ci0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwotCQl9Ci0KLQkJLyogUG9pbnQgdG8gdGhlIG5leHQgaW5wdXQgQU1MIHJlc291cmNlICovCi0KLQkJYW1sICs9IGFjcGlfdXRfZ2V0X2Rlc2NyaXB0b3JfbGVuZ3RoKGFtbCk7Ci0KLQkJLyogUG9pbnQgdG8gdGhlIG5leHQgc3RydWN0dXJlIGluIHRoZSBvdXRwdXQgYnVmZmVyICovCi0KLQkJcmVzb3VyY2UgPQotCQkgICAgQUNQSV9BRERfUFRSKHN0cnVjdCBhY3BpX3Jlc291cmNlLCByZXNvdXJjZSwKLQkJCQkgcmVzb3VyY2UtPmxlbmd0aCk7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoZSBpbnB1dCBidWZmZXIgYW5kIGFsbCBzdWJzZXF1ZW50IHBvaW50ZXJzIGludG8gaXQKKwkgKiBhcmUgYWxpZ25lZCBvbiBhIG5hdGl2ZSB3b3JkIGJvdW5kYXJ5LiBNb3N0IGltcG9ydGFudCBvbiBJQTY0CisJICovCisJcmVzb3VyY2UgPSAqcmVzb3VyY2VfcHRyOworCWlmIChBQ1BJX0lTX01JU0FMSUdORUQocmVzb3VyY2UpKSB7CisJCUFDUElfV0FSTklORygoQUVfSU5GTywKKwkJCSAgICAgICJNaXNhbGlnbmVkIHJlc291cmNlIHBvaW50ZXIgJXAiLCByZXNvdXJjZSkpOwogCX0KIAotCS8qIERpZCBub3QgZmluZCBhbiBlbmRfdGFnIHJlc291cmNlIGRlc2NyaXB0b3IgKi8KKwkvKiBDb252ZXJ0IHRoZSBBTUwgYnl0ZSBzdHJlYW0gcmVzb3VyY2UgdG8gYSBsb2NhbCByZXNvdXJjZSBzdHJ1Y3QgKi8KIAotCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfTk9fUkVTT1VSQ0VfRU5EX1RBRyk7CisJc3RhdHVzID0KKwkgICAgYWNwaV9yc19jb252ZXJ0X2FtbF90b19yZXNvdXJjZShyZXNvdXJjZSwKKwkJCQkJICAgIEFDUElfQ0FTVF9QVFIodW5pb24gYW1sX3Jlc291cmNlLAorCQkJCQkJCSAgYW1sKSwKKwkJCQkJICAgIGFjcGlfZ2JsX2dldF9yZXNvdXJjZV9kaXNwYXRjaAorCQkJCQkgICAgW3Jlc291cmNlX2luZGV4XSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCisJCQkJIkNvdWxkIG5vdCBjb252ZXJ0IEFNTCByZXNvdXJjZSAoVHlwZSAlWCkiLAorCQkJCSphbWwpKTsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJfQorCisJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9SRVNPVVJDRVMsCisJCQkgICJUeXBlICUuMlgsIEFtbExlbmd0aCAlLjJYIEludGVybmFsTGVuZ3RoICUuMlhcbiIsCisJCQkgIGFjcGlfdXRfZ2V0X3Jlc291cmNlX3R5cGUoYW1sKSwgbGVuZ3RoLAorCQkJICByZXNvdXJjZS0+bGVuZ3RoKSk7CisKKwkvKiBQb2ludCB0byB0aGUgbmV4dCBzdHJ1Y3R1cmUgaW4gdGhlIG91dHB1dCBidWZmZXIgKi8KKworCSpyZXNvdXJjZV9wdHIgPSBBQ1BJX0FERF9QVFIodm9pZCwgcmVzb3VyY2UsIHJlc291cmNlLT5sZW5ndGgpOworCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNTAsMTEgKzEzNiwxMiBAQAogCXU4ICplbmRfYW1sID0gb3V0cHV0X2J1ZmZlciArIGFtbF9zaXplX25lZWRlZDsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJyc19jb252ZXJ0X3Jlc291cmNlc190b19hbWwiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX2NvbnZlcnRfcmVzb3VyY2VzX3RvX2FtbCk7CiAKIAkvKiBXYWxrIHRoZSByZXNvdXJjZSBkZXNjcmlwdG9yIGxpc3QsIGNvbnZlcnQgZWFjaCBkZXNjcmlwdG9yICovCiAKIAl3aGlsZSAoYW1sIDwgZW5kX2FtbCkgeworCiAJCS8qIFZhbGlkYXRlIHRoZSAoaW50ZXJuYWwpIFJlc291cmNlIFR5cGUgKi8KIAogCQlpZiAocmVzb3VyY2UtPnR5cGUgPiBBQ1BJX1JFU09VUkNFX1RZUEVfTUFYKSB7CkBAIC0xOTEsNiArMTc4LDcgQEAKIAkJLyogQ2hlY2sgZm9yIGVuZC1vZi1saXN0LCBub3JtYWwgZXhpdCAqLwogCiAJCWlmIChyZXNvdXJjZS0+dHlwZSA9PSBBQ1BJX1JFU09VUkNFX1RZUEVfRU5EX1RBRykgeworCiAJCQkvKiBBbiBFbmQgVGFnIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBpbnB1dCBSZXNvdXJjZSBUZW1wbGF0ZSAqLwogCiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc21pc2MuYyBiL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnNtaXNjLmMKaW5kZXggZWQ4NjZjZi4uZmFmNmUxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc21pc2MuYworKysgYi9kcml2ZXJzL2FjcGkvcmVzb3VyY2VzL3JzbWlzYy5jCkBAIC04MSw5ICs4MSwxMCBAQAogCXUxNiBpdGVtX2NvdW50ID0gMDsKIAl1MTYgdGVtcDE2ID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX2dldF9yZXNvdXJjZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocnNfY29udmVydF9hbWxfdG9fcmVzb3VyY2UpOwogCiAJaWYgKCgoYWNwaV9uYXRpdmVfdWludCkgcmVzb3VyY2UpICYgMHgzKSB7CisKIAkJLyogRWFjaCBpbnRlcm5hbCByZXNvdXJjZSBzdHJ1Y3QgaXMgZXhwZWN0ZWQgdG8gYmUgMzItYml0IGFsaWduZWQgKi8KIAogCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sCkBAIC0yOTUsOSArMjk2LDExIEBACiAKICAgICAgIGV4aXQ6CiAJaWYgKCFmbGFnc19tb2RlKSB7Ci0JCS8qIFJvdW5kIHRoZSByZXNvdXJjZSBzdHJ1Y3QgbGVuZ3RoIHVwIHRvIHRoZSBuZXh0IDMyLWJpdCBib3VuZGFyeSAqLwogCi0JCXJlc291cmNlLT5sZW5ndGggPSBBQ1BJX1JPVU5EX1VQX3RvXzMyX2JJVFMocmVzb3VyY2UtPmxlbmd0aCk7CisJCS8qIFJvdW5kIHRoZSByZXNvdXJjZSBzdHJ1Y3QgbGVuZ3RoIHVwIHRvIHRoZSBuZXh0IGJvdW5kYXJ5ICgzMiBvciA2NCkgKi8KKworCQlyZXNvdXJjZS0+bGVuZ3RoID0KKwkJICAgICh1MzIpIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQocmVzb3VyY2UtPmxlbmd0aCk7CiAJfQogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CkBAIC0zMjksNyArMzMyLDcgQEAKIAl1MTYgdGVtcDE2ID0gMDsKIAl1MTYgaXRlbV9jb3VudCA9IDA7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJyc19jb252ZXJ0X3Jlc291cmNlX3RvX2FtbCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UocnNfY29udmVydF9yZXNvdXJjZV90b19hbWwpOwogCiAJLyoKIAkgKiBGaXJzdCB0YWJsZSBlbnRyeSBtdXN0IGJlIEFDUElfUlNDX0lOSVR4eHggYW5kIG11c3QgY29udGFpbiB0aGUKQEAgLTUzNSw2ICs1MzgsNyBAQAogCiByZXNvdXJjZS0+ZGF0YS5leHRlbmRlZF9pcnEuaW50ZXJydXB0X2NvdW50ID0gdGVtcDg7CiBpZiAodGVtcDggPCAxKSB7CisKIAkvKiBNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIElSUSAqLwogCiAJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9CQURfUkVTT1VSQ0VfTEVOR1RIKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnN1dGlscy5jIGIvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3V0aWxzLmMKaW5kZXggMjViNWFlZC4uYTljYmVlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3V0aWxzLmMKKysrIGIvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3V0aWxzLmMKQEAgLTIwNSw2ICsyMDUsNyBAQAogCS8qIExlbmd0aCBpcyBzdG9yZWQgZGlmZmVyZW50bHkgZm9yIGxhcmdlIGFuZCBzbWFsbCBkZXNjcmlwdG9ycyAqLwogCiAJaWYgKGFtbC0+c21hbGxfaGVhZGVyLmRlc2NyaXB0b3JfdHlwZSAmIEFDUElfUkVTT1VSQ0VfTkFNRV9MQVJHRSkgeworCiAJCS8qIExhcmdlIGRlc2NyaXB0b3IgLS0gYnl0ZXMgMS0yIGNvbnRhaW4gdGhlIDE2LWJpdCBsZW5ndGggKi8KIAogCQlBQ1BJX01PVkVfMTZfVE9fMTYoJmFtbC0+bGFyZ2VfaGVhZGVyLnJlc291cmNlX2xlbmd0aCwKQEAgLTI5OCw3ICsyOTksOCBAQAogICogICAgICAgICAgICAgIHN0cmluZ19wdHIgICAgICAgICAgLSAob3B0aW9uYWwpIHdoZXJlIHRvIHN0b3JlIHRoZSBhY3R1YWwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vfc291cmNlIHN0cmluZwogICoKLSAqIFJFVFVSTjogICAgICBMZW5ndGggb2YgdGhlIHN0cmluZyBwbHVzIE5VTEwgdGVybWluYXRvciwgcm91bmRlZCB1cCB0byAzMiBiaXQKKyAqIFJFVFVSTjogICAgICBMZW5ndGggb2YgdGhlIHN0cmluZyBwbHVzIE5VTEwgdGVybWluYXRvciwgcm91bmRlZCB1cCB0byBuYXRpdmUKKyAqICAgICAgICAgICAgICB3b3JkIGJvdW5kYXJ5CiAgKgogICogREVTQ1JJUFRJT046IENvcHkgdGhlIG9wdGlvbmFsIHJlc291cmNlX3NvdXJjZSBkYXRhIGZyb20gYSByYXcgQU1MIGRlc2NyaXB0b3IKICAqICAgICAgICAgICAgICB0byBhbiBpbnRlcm5hbCByZXNvdXJjZSBkZXNjcmlwdG9yCkBAIC0zMjgsNiArMzMwLDcgQEAKIAkgKiB3ZSBhZGQgMSB0byB0aGUgbWluaW11bSBsZW5ndGguCiAJICovCiAJaWYgKHRvdGFsX2xlbmd0aCA+IChhY3BpX3JzZGVzY19zaXplKSAobWluaW11bV9sZW5ndGggKyAxKSkgeworCiAJCS8qIEdldCB0aGUgcmVzb3VyY2Vfc291cmNlX2luZGV4ICovCiAKIAkJcmVzb3VyY2Vfc291cmNlLT5pbmRleCA9IGFtbF9yZXNvdXJjZV9zb3VyY2VbMF07CkBAIC0zNDQsMjMgKzM0NywyNiBAQAogCQl9CiAKIAkJLyoKLQkJICogSW4gb3JkZXIgZm9yIHRoZSBzdHJ1Y3Rfc2l6ZSB0byBmYWxsIG9uIGEgMzItYml0IGJvdW5kYXJ5LCBjYWxjdWxhdGUKLQkJICogdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICgrMSBmb3IgdGhlIE5VTEwgdGVybWluYXRvcikgYW5kIGV4cGFuZCB0aGUKLQkJICogc3RydWN0X3NpemUgdG8gdGhlIG5leHQgMzItYml0IGJvdW5kYXJ5LgorCQkgKiBJbiBvcmRlciBmb3IgdGhlIFJlc291cmNlIGxlbmd0aCB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSBuYXRpdmUKKwkJICogd29yZCwgY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAoKzEgZm9yIE5VTEwgdGVybWluYXRvcikKKwkJICogYW5kIGV4cGFuZCB0byB0aGUgbmV4dCB3b3JkIG11bHRpcGxlLgogCQkgKgogCQkgKiBaZXJvIHRoZSBlbnRpcmUgYXJlYSBvZiB0aGUgYnVmZmVyLgogCQkgKi8KIAkJdG90YWxfbGVuZ3RoID0KLQkJICAgIEFDUElfUk9VTkRfVVBfdG9fMzJfYklUUyhBQ1BJX1NUUkxFTgotCQkJCQkgICAgICgoY2hhciAqKSZhbWxfcmVzb3VyY2Vfc291cmNlWzFdKSArCi0JCQkJCSAgICAgMSk7CisJCSAgICAodTMyKQorCQkgICAgQUNQSV9TVFJMRU4oQUNQSV9DQVNUX1BUUihjaGFyLCAmYW1sX3Jlc291cmNlX3NvdXJjZVsxXSkpICsKKwkJICAgIDE7CisJCXRvdGFsX2xlbmd0aCA9ICh1MzIpIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQodG90YWxfbGVuZ3RoKTsKKwogCQlBQ1BJX01FTVNFVChyZXNvdXJjZV9zb3VyY2UtPnN0cmluZ19wdHIsIDAsIHRvdGFsX2xlbmd0aCk7CiAKIAkJLyogQ29weSB0aGUgcmVzb3VyY2Vfc291cmNlIHN0cmluZyB0byB0aGUgZGVzdGluYXRpb24gKi8KIAogCQlyZXNvdXJjZV9zb3VyY2UtPnN0cmluZ19sZW5ndGggPQogCQkgICAgYWNwaV9yc19zdHJjcHkocmVzb3VyY2Vfc291cmNlLT5zdHJpbmdfcHRyLAotCQkJCSAgIChjaGFyICopJmFtbF9yZXNvdXJjZV9zb3VyY2VbMV0pOworCQkJCSAgIEFDUElfQ0FTVF9QVFIoY2hhciwKKwkJCQkJCSAmYW1sX3Jlc291cmNlX3NvdXJjZVsxXSkpOwogCiAJCXJldHVybiAoKGFjcGlfcnNfbGVuZ3RoKSB0b3RhbF9sZW5ndGgpOwogCX0KQEAgLTQwNSw2ICs0MTEsNyBAQAogCS8qIE5vbi16ZXJvIHN0cmluZyBsZW5ndGggaW5kaWNhdGVzIHByZXNlbmNlIG9mIGEgcmVzb3VyY2Vfc291cmNlICovCiAKIAlpZiAocmVzb3VyY2Vfc291cmNlLT5zdHJpbmdfbGVuZ3RoKSB7CisKIAkJLyogUG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgQU1MIGRlc2NyaXB0b3IgKi8KIAogCQlhbWxfcmVzb3VyY2Vfc291cmNlID0gQUNQSV9BRERfUFRSKHU4LCBhbWwsIG1pbmltdW1fbGVuZ3RoKTsKQEAgLTQxNSw3ICs0MjIsNyBAQAogCiAJCS8qIENvcHkgdGhlIHJlc291cmNlX3NvdXJjZSBzdHJpbmcgKi8KIAotCQlBQ1BJX1NUUkNQWSgoY2hhciAqKSZhbWxfcmVzb3VyY2Vfc291cmNlWzFdLAorCQlBQ1BJX1NUUkNQWShBQ1BJX0NBU1RfUFRSKGNoYXIsICZhbWxfcmVzb3VyY2Vfc291cmNlWzFdKSwKIAkJCSAgICByZXNvdXJjZV9zb3VyY2UtPnN0cmluZ19wdHIpOwogCiAJCS8qCkBAIC00MzUsOSArNDQyLDkgQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9yc19nZXRfcHJ0X21ldGhvZF9kYXRhCiAgKgotICogUEFSQU1FVEVSUzogIEhhbmRsZSAgICAgICAgICAtIGEgaGFuZGxlIHRvIHRoZSBjb250YWluaW5nIG9iamVjdAotICogICAgICAgICAgICAgIHJldF9idWZmZXIgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgZm9yIHRoZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cworICogUEFSQU1FVEVSUzogIE5vZGUgICAgICAgICAgICAtIERldmljZSBub2RlCisgKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gUG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgZm9yIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgpAQCAtNDUwLDE4ICs0NTcsMTkgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIGFjcGlfc3RhdHVzCi1hY3BpX3JzX2dldF9wcnRfbWV0aG9kX2RhdGEoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKiByZXRfYnVmZmVyKQorYWNwaV9yc19nZXRfcHJ0X21ldGhvZF9kYXRhKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICogbm9kZSwKKwkJCSAgICBzdHJ1Y3QgYWNwaV9idWZmZXIgKiByZXRfYnVmZmVyKQogewogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX2dldF9wcnRfbWV0aG9kX2RhdGEiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX2dldF9wcnRfbWV0aG9kX2RhdGEpOwogCiAJLyogUGFyYW1ldGVycyBndWFyYW50ZWVkIHZhbGlkIGJ5IGNhbGxlciAqLwogCiAJLyogRXhlY3V0ZSB0aGUgbWV0aG9kLCBubyBwYXJhbWV0ZXJzICovCiAKLQlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE1FVEhPRF9OQU1FX19QUlQsCisJc3RhdHVzID0gYWNwaV91dF9ldmFsdWF0ZV9vYmplY3Qobm9kZSwgTUVUSE9EX05BTUVfX1BSVCwKIAkJCQkJIEFDUElfQlRZUEVfUEFDS0FHRSwgJm9ial9kZXNjKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CkBAIC00ODMsOSArNDkxLDkgQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9yc19nZXRfY3JzX21ldGhvZF9kYXRhCiAgKgotICogUEFSQU1FVEVSUzogIEhhbmRsZSAgICAgICAgICAtIGEgaGFuZGxlIHRvIHRoZSBjb250YWluaW5nIG9iamVjdAotICogICAgICAgICAgICAgIHJldF9idWZmZXIgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgZm9yIHRoZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cworICogUEFSQU1FVEVSUzogIE5vZGUgICAgICAgICAgICAtIERldmljZSBub2RlCisgKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gUG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgZm9yIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgpAQCAtNDk4LDE4ICs1MDYsMTkgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIGFjcGlfc3RhdHVzCi1hY3BpX3JzX2dldF9jcnNfbWV0aG9kX2RhdGEoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpCithY3BpX3JzX2dldF9jcnNfbWV0aG9kX2RhdGEoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGUsCisJCQkgICAgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKQogewogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX2dldF9jcnNfbWV0aG9kX2RhdGEiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX2dldF9jcnNfbWV0aG9kX2RhdGEpOwogCiAJLyogUGFyYW1ldGVycyBndWFyYW50ZWVkIHZhbGlkIGJ5IGNhbGxlciAqLwogCiAJLyogRXhlY3V0ZSB0aGUgbWV0aG9kLCBubyBwYXJhbWV0ZXJzICovCiAKLQlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE1FVEhPRF9OQU1FX19DUlMsCisJc3RhdHVzID0gYWNwaV91dF9ldmFsdWF0ZV9vYmplY3Qobm9kZSwgTUVUSE9EX05BTUVfX0NSUywKIAkJCQkJIEFDUElfQlRZUEVfQlVGRkVSLCAmb2JqX2Rlc2MpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTUyMiw3ICs1MzEsNyBAQAogCSAqLwogCXN0YXR1cyA9IGFjcGlfcnNfY3JlYXRlX3Jlc291cmNlX2xpc3Qob2JqX2Rlc2MsIHJldF9idWZmZXIpOwogCi0JLyogb24gZXhpdCwgd2UgbXVzdCBkZWxldGUgdGhlIG9iamVjdCByZXR1cm5lZCBieSBldmFsdWF0ZV9vYmplY3QgKi8KKwkvKiBPbiBleGl0LCB3ZSBtdXN0IGRlbGV0ZSB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IGV2YWx1YXRlX29iamVjdCAqLwogCiAJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKG9ial9kZXNjKTsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTUzMiw5ICs1NDEsOSBAQAogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3JzX2dldF9wcnNfbWV0aG9kX2RhdGEKICAqCi0gKiBQQVJBTUVURVJTOiAgSGFuZGxlICAgICAgICAgIC0gYSBoYW5kbGUgdG8gdGhlIGNvbnRhaW5pbmcgb2JqZWN0Ci0gKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gYSBwb2ludGVyIHRvIGEgYnVmZmVyIHN0cnVjdHVyZSBmb3IgdGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzCisgKiBQQVJBTUVURVJTOiAgTm9kZSAgICAgICAgICAgIC0gRGV2aWNlIG5vZGUKKyAqICAgICAgICAgICAgICByZXRfYnVmZmVyICAgICAgLSBQb2ludGVyIHRvIGEgYnVmZmVyIHN0cnVjdHVyZSBmb3IgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cwogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKICAqCkBAIC01NDgsMTggKzU1NywxOSBAQAogCiAjaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKIGFjcGlfc3RhdHVzCi1hY3BpX3JzX2dldF9wcnNfbWV0aG9kX2RhdGEoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpCithY3BpX3JzX2dldF9wcnNfbWV0aG9kX2RhdGEoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGUsCisJCQkgICAgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKQogewogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX2dldF9wcnNfbWV0aG9kX2RhdGEiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX2dldF9wcnNfbWV0aG9kX2RhdGEpOwogCiAJLyogUGFyYW1ldGVycyBndWFyYW50ZWVkIHZhbGlkIGJ5IGNhbGxlciAqLwogCiAJLyogRXhlY3V0ZSB0aGUgbWV0aG9kLCBubyBwYXJhbWV0ZXJzICovCiAKLQlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE1FVEhPRF9OQU1FX19QUlMsCisJc3RhdHVzID0gYWNwaV91dF9ldmFsdWF0ZV9vYmplY3Qobm9kZSwgTUVUSE9EX05BTUVfX1BSUywKIAkJCQkJIEFDUElfQlRZUEVfQlVGRkVSLCAmb2JqX2Rlc2MpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTU3Miw3ICs1ODIsNyBAQAogCSAqLwogCXN0YXR1cyA9IGFjcGlfcnNfY3JlYXRlX3Jlc291cmNlX2xpc3Qob2JqX2Rlc2MsIHJldF9idWZmZXIpOwogCi0JLyogb24gZXhpdCwgd2UgbXVzdCBkZWxldGUgdGhlIG9iamVjdCByZXR1cm5lZCBieSBldmFsdWF0ZV9vYmplY3QgKi8KKwkvKiBPbiBleGl0LCB3ZSBtdXN0IGRlbGV0ZSB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IGV2YWx1YXRlX29iamVjdCAqLwogCiAJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKG9ial9kZXNjKTsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTU4MywxMCArNTkzLDEwIEBACiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfcnNfZ2V0X21ldGhvZF9kYXRhCiAgKgotICogUEFSQU1FVEVSUzogIEhhbmRsZSAgICAgICAgICAtIGEgaGFuZGxlIHRvIHRoZSBjb250YWluaW5nIG9iamVjdAorICogUEFSQU1FVEVSUzogIEhhbmRsZSAgICAgICAgICAtIEhhbmRsZSB0byB0aGUgY29udGFpbmluZyBvYmplY3QKICAqICAgICAgICAgICAgICBQYXRoICAgICAgICAgICAgLSBQYXRoIHRvIG1ldGhvZCwgcmVsYXRpdmUgdG8gSGFuZGxlCi0gKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gYSBwb2ludGVyIHRvIGEgYnVmZmVyIHN0cnVjdHVyZSBmb3IgdGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzCisgKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gUG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgZm9yIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgpAQCAtNjA1LDcgKzYxNSw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgicnNfZ2V0X21ldGhvZF9kYXRhIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShyc19nZXRfbWV0aG9kX2RhdGEpOwogCiAJLyogUGFyYW1ldGVycyBndWFyYW50ZWVkIHZhbGlkIGJ5IGNhbGxlciAqLwogCkBAIC02MzQsOSArNjQ0LDkgQEAKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9yc19zZXRfc3JzX21ldGhvZF9kYXRhCiAgKgotICogUEFSQU1FVEVSUzogIEhhbmRsZSAgICAgICAgICAtIGEgaGFuZGxlIHRvIHRoZSBjb250YWluaW5nIG9iamVjdAotICogICAgICAgICAgICAgIGluX2J1ZmZlciAgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBzdHJ1Y3R1cmUgb2YgdGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIKKyAqIFBBUkFNRVRFUlM6ICBOb2RlICAgICAgICAgICAgLSBEZXZpY2Ugbm9kZQorICogICAgICAgICAgICAgIGluX2J1ZmZlciAgICAgICAtIFBvaW50ZXIgdG8gYSBidWZmZXIgc3RydWN0dXJlIG9mIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcgogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKICAqCkBAIC02NDYsMjMgKzY1NiwzNyBAQAogICogICAgICAgICAgICAgIElmIHRoZSBmdW5jdGlvbiBmYWlscyBhbiBhcHByb3ByaWF0ZSBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZAogICogICAgICAgICAgICAgIGFuZCB0aGUgY29udGVudHMgb2YgdGhlIGNhbGxlcnMgYnVmZmVyIGlzIHVuZGVmaW5lZC4KICAqCisgKiBOb3RlOiBQYXJhbWV0ZXJzIGd1YXJhbnRlZWQgdmFsaWQgYnkgY2FsbGVyCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogYWNwaV9zdGF0dXMKLWFjcGlfcnNfc2V0X3Nyc19tZXRob2RfZGF0YShhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3BpX2J1ZmZlciAqaW5fYnVmZmVyKQorYWNwaV9yc19zZXRfc3JzX21ldGhvZF9kYXRhKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlLAorCQkJICAgIHN0cnVjdCBhY3BpX2J1ZmZlciAqaW5fYnVmZmVyKQogewotCXN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvIGluZm87Ci0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcGFyYW1zWzJdOworCXN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm87CisJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqYXJnc1syXTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlcjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInJzX3NldF9zcnNfbWV0aG9kX2RhdGEiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHJzX3NldF9zcnNfbWV0aG9kX2RhdGEpOwogCi0JLyogUGFyYW1ldGVycyBndWFyYW50ZWVkIHZhbGlkIGJ5IGNhbGxlciAqLworCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBldmFsdWF0aW9uIGluZm9ybWF0aW9uIGJsb2NrICovCisKKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8pKTsKKwlpZiAoIWluZm8pIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CisJfQorCisJaW5mby0+cHJlZml4X25vZGUgPSBub2RlOworCWluZm8tPnBhdGhuYW1lID0gTUVUSE9EX05BTUVfX1NSUzsKKwlpbmZvLT5wYXJhbWV0ZXJzID0gYXJnczsKKwlpbmZvLT5wYXJhbWV0ZXJfdHlwZSA9IEFDUElfUEFSQU1fQVJHUzsKKwlpbmZvLT5mbGFncyA9IEFDUElfSUdOT1JFX1JFVFVSTl9WQUxVRTsKIAogCS8qCiAJICogVGhlIGluX2J1ZmZlciBwYXJhbWV0ZXIgd2lsbCBwb2ludCB0byBhIGxpbmtlZCBsaXN0IG9mCi0JICogcmVzb3VyY2UgcGFyYW1ldGVycy4gIEl0IG5lZWRzIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGEKKwkgKiByZXNvdXJjZSBwYXJhbWV0ZXJzLiBJdCBuZWVkcyB0byBiZSBmb3JtYXR0ZWQgaW50byBhCiAJICogYnl0ZSBzdHJlYW0gdG8gYmUgc2VudCBpbiBhcyBhbiBpbnB1dCBwYXJhbWV0ZXIgdG8gX1NSUwogCSAqCiAJICogQ29udmVydCB0aGUgbGlua2VkIGxpc3QgaW50byBhIGJ5dGUgc3RyZWFtCkBAIC02NzAsNDEgKzY5NCwzNiBAQAogCWJ1ZmZlci5sZW5ndGggPSBBQ1BJX0FMTE9DQVRFX0xPQ0FMX0JVRkZFUjsKIAlzdGF0dXMgPSBhY3BpX3JzX2NyZWF0ZV9hbWxfcmVzb3VyY2VzKGluX2J1ZmZlci0+cG9pbnRlciwgJmJ1ZmZlcik7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworCQlnb3RvIGNsZWFudXA7CiAJfQogCi0JLyogSW5pdCB0aGUgcGFyYW0gb2JqZWN0ICovCisJLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtZXRob2QgcGFyYW1ldGVyIG9iamVjdCAqLwogCi0JcGFyYW1zWzBdID0gYWNwaV91dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0KEFDUElfVFlQRV9CVUZGRVIpOwotCWlmICghcGFyYW1zWzBdKSB7Ci0JCWFjcGlfb3NfZnJlZShidWZmZXIucG9pbnRlcik7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOworCWFyZ3NbMF0gPSBhY3BpX3V0X2NyZWF0ZV9pbnRlcm5hbF9vYmplY3QoQUNQSV9UWVBFX0JVRkZFUik7CisJaWYgKCFhcmdzWzBdKSB7CisJCS8qCisJCSAqIE11c3QgZnJlZSB0aGUgYnVmZmVyIGFsbG9jYXRlZCBhYm92ZSAob3RoZXJ3aXNlIGl0IGlzIGZyZWVkCisJCSAqIGxhdGVyKQorCQkgKi8KKwkJQUNQSV9GUkVFKGJ1ZmZlci5wb2ludGVyKTsKKwkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOworCQlnb3RvIGNsZWFudXA7CiAJfQogCi0JLyogU2V0IHVwIHRoZSBwYXJhbWV0ZXIgb2JqZWN0ICovCisJYXJnc1swXS0+YnVmZmVyLmxlbmd0aCA9ICh1MzIpIGJ1ZmZlci5sZW5ndGg7CisJYXJnc1swXS0+YnVmZmVyLnBvaW50ZXIgPSBidWZmZXIucG9pbnRlcjsKKwlhcmdzWzBdLT5jb21tb24uZmxhZ3MgPSBBT1BPQkpfREFUQV9WQUxJRDsKKwlhcmdzWzFdID0gTlVMTDsKIAotCXBhcmFtc1swXS0+YnVmZmVyLmxlbmd0aCA9ICh1MzIpIGJ1ZmZlci5sZW5ndGg7Ci0JcGFyYW1zWzBdLT5idWZmZXIucG9pbnRlciA9IGJ1ZmZlci5wb2ludGVyOwotCXBhcmFtc1swXS0+Y29tbW9uLmZsYWdzID0gQU9QT0JKX0RBVEFfVkFMSUQ7Ci0JcGFyYW1zWzFdID0gTlVMTDsKKwkvKiBFeGVjdXRlIHRoZSBtZXRob2QsIG5vIHJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCAqLwogCi0JaW5mby5ub2RlID0gaGFuZGxlOwotCWluZm8ucGFyYW1ldGVycyA9IHBhcmFtczsKLQlpbmZvLnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOworCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGUoaW5mbyk7CiAKLQkvKiBFeGVjdXRlIHRoZSBtZXRob2QsIG5vIHJldHVybiB2YWx1ZSAqLworCS8qIENsZWFuIHVwIGFuZCByZXR1cm4gdGhlIHN0YXR1cyBmcm9tIGFjcGlfbnNfZXZhbHVhdGUgKi8KIAotCXN0YXR1cyA9IGFjcGlfbnNfZXZhbHVhdGVfcmVsYXRpdmUoTUVUSE9EX05BTUVfX1NSUywgJmluZm8pOwotCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewotCQkvKiBEZWxldGUgYW55IHJldHVybiBvYmplY3QgKGVzcGVjaWFsbHkgaWYgaW1wbGljaXRfcmV0dXJuIGlzIGVuYWJsZWQpICovCisJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGFyZ3NbMF0pOwogCi0JCWlmIChpbmZvLnJldHVybl9vYmplY3QpIHsKLQkJCWFjcGlfdXRfcmVtb3ZlX3JlZmVyZW5jZShpbmZvLnJldHVybl9vYmplY3QpOwotCQl9Ci0JfQotCi0JLyogQ2xlYW4gdXAgYW5kIHJldHVybiB0aGUgc3RhdHVzIGZyb20gYWNwaV9uc19ldmFsdWF0ZV9yZWxhdGl2ZSAqLwotCi0JYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKHBhcmFtc1swXSk7CisgICAgICBjbGVhbnVwOgorCUFDUElfRlJFRShpbmZvKTsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9yZXNvdXJjZXMvcnN4ZmFjZS5jIGIvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3hmYWNlLmMKaW5kZXggODhiNjcwNy4uMTk5OWUyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3hmYWNlLmMKKysrIGIvZHJpdmVycy9hY3BpL3Jlc291cmNlcy9yc3hmYWNlLmMKQEAgLTQxLDEwICs0MSw5IEBACiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3Jlc3JjLmg+CisjaW5jbHVkZSA8YWNwaS9hY25hbWVzcC5oPgogCiAjZGVmaW5lIF9DT01QT05FTlQgICAgICAgICAgQUNQSV9SRVNPVVJDRVMKIEFDUElfTU9EVUxFX05BTUUoInJzeGZhY2UiKQpAQCAtNjgsMTkgKzY3LDgwIEBACiBzdGF0aWMgYWNwaV9zdGF0dXMKIGFjcGlfcnNfbWF0Y2hfdmVuZG9yX3Jlc291cmNlKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSwgdm9pZCAqY29udGV4dCk7CiAKK3N0YXRpYyBhY3BpX3N0YXR1cworYWNwaV9yc192YWxpZGF0ZV9wYXJhbWV0ZXJzKGFjcGlfaGFuZGxlIGRldmljZV9oYW5kbGUsCisJCQkgICAgc3RydWN0IGFjcGlfYnVmZmVyICpidWZmZXIsCisJCQkgICAgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKipyZXR1cm5fbm9kZSk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRlVOQ1RJT046ICAgIGFjcGlfcnNfdmFsaWRhdGVfcGFyYW1ldGVycworICoKKyAqIFBBUkFNRVRFUlM6ICBkZXZpY2VfaGFuZGxlICAgLSBIYW5kbGUgdG8gYSBkZXZpY2UKKyAqICAgICAgICAgICAgICBCdWZmZXIgICAgICAgICAgLSBQb2ludGVyIHRvIGEgZGF0YSBidWZmZXIKKyAqICAgICAgICAgICAgICByZXR1cm5fbm9kZSAgICAgLSBQb2ludGVyIHRvIHdoZXJlIHRoZSBkZXZpY2Ugbm9kZSBpcyByZXR1cm5lZAorICoKKyAqIFJFVFVSTjogICAgICBTdGF0dXMKKyAqCisgKiBERVNDUklQVElPTjogQ29tbW9uIHBhcmFtZXRlciB2YWxpZGF0aW9uIGZvciByZXNvdXJjZSBpbnRlcmZhY2VzCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGFjcGlfc3RhdHVzCithY3BpX3JzX3ZhbGlkYXRlX3BhcmFtZXRlcnMoYWNwaV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKKwkJCSAgICBzdHJ1Y3QgYWNwaV9idWZmZXIgKmJ1ZmZlciwKKwkJCSAgICBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKnJldHVybl9ub2RlKQoreworCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKKworCUFDUElfRlVOQ1RJT05fVFJBQ0UocnNfdmFsaWRhdGVfcGFyYW1ldGVycyk7CisKKwkvKgorCSAqIE11c3QgaGF2ZSBhIHZhbGlkIGhhbmRsZSB0byBhbiBBQ1BJIGRldmljZQorCSAqLworCWlmICghZGV2aWNlX2hhbmRsZSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CisJfQorCisJbm9kZSA9IGFjcGlfbnNfbWFwX2hhbmRsZV90b19ub2RlKGRldmljZV9oYW5kbGUpOworCWlmICghbm9kZSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CisJfQorCisJaWYgKG5vZGUtPnR5cGUgIT0gQUNQSV9UWVBFX0RFVklDRSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfVFlQRSk7CisJfQorCisJLyoKKwkgKiBWYWxpZGF0ZSB0aGUgdXNlciBidWZmZXIgb2JqZWN0CisJICoKKwkgKiBpZiB0aGVyZSBpcyBhIG5vbi16ZXJvIGJ1ZmZlciBsZW5ndGggd2UgYWxzbyBuZWVkIGEgdmFsaWQgcG9pbnRlciBpbgorCSAqIHRoZSBidWZmZXIuIElmIGl0J3MgYSB6ZXJvIGJ1ZmZlciBsZW5ndGgsIHdlJ2xsIGJlIHJldHVybmluZyB0aGUKKwkgKiBuZWVkZWQgYnVmZmVyIHNpemUgKGxhdGVyKSwgc28ga2VlcCBnb2luZy4KKwkgKi8KKwlzdGF0dXMgPSBhY3BpX3V0X3ZhbGlkYXRlX2J1ZmZlcihidWZmZXIpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwl9CisKKwkqcmV0dXJuX25vZGUgPSBub2RlOworCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X2lycV9yb3V0aW5nX3RhYmxlCiAgKgotICogUEFSQU1FVEVSUzogIGRldmljZV9oYW5kbGUgICAtIGEgaGFuZGxlIHRvIHRoZSBCdXMgZGV2aWNlIHdlIGFyZSBxdWVyeWluZwotICogICAgICAgICAgICAgIHJldF9idWZmZXIgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRoZQorICogUEFSQU1FVEVSUzogIGRldmljZV9oYW5kbGUgICAtIEhhbmRsZSB0byB0aGUgQnVzIGRldmljZSB3ZSBhcmUgcXVlcnlpbmcKKyAqICAgICAgICAgICAgICByZXRfYnVmZmVyICAgICAgLSBQb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCByZXNvdXJjZXMgZm9yIHRoZSBkZXZpY2UKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgogICogREVTQ1JJUFRJT046IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGdldCB0aGUgSVJRIHJvdXRpbmcgdGFibGUgZm9yIGEKLSAqICAgICAgICAgICAgICBzcGVjaWZpYyBidXMuICBUaGUgY2FsbGVyIG11c3QgZmlyc3QgYWNxdWlyZSBhIGhhbmRsZSBmb3IgdGhlCi0gKiAgICAgICAgICAgICAgZGVzaXJlZCBidXMuICBUaGUgcm91dGluZSB0YWJsZSBpcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlciBwb2ludGVkCisgKiAgICAgICAgICAgICAgc3BlY2lmaWMgYnVzLiBUaGUgY2FsbGVyIG11c3QgZmlyc3QgYWNxdWlyZSBhIGhhbmRsZSBmb3IgdGhlCisgKiAgICAgICAgICAgICAgZGVzaXJlZCBidXMuIFRoZSByb3V0aW5lIHRhYmxlIGlzIHBsYWNlZCBpbiB0aGUgYnVmZmVyIHBvaW50ZWQKICAqICAgICAgICAgICAgICB0byBieSB0aGUgcmV0X2J1ZmZlciB2YXJpYWJsZSBwYXJhbWV0ZXIuCiAgKgogICogICAgICAgICAgICAgIElmIHRoZSBmdW5jdGlvbiBmYWlscyBhbiBhcHByb3ByaWF0ZSBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZApAQCAtOTYsNDIgKzE1NiwzNyBAQAogCQkJICAgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZ2V0X2lycV9yb3V0aW5nX3RhYmxlICIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfaXJxX3JvdXRpbmdfdGFibGUpOwogCi0JLyoKLQkgKiBNdXN0IGhhdmUgYSB2YWxpZCBoYW5kbGUgYW5kIGJ1ZmZlciwgU28gd2UgaGF2ZSB0byBoYXZlIGEgaGFuZGxlCi0JICogYW5kIGEgcmV0dXJuIGJ1ZmZlciBzdHJ1Y3R1cmUsIGFuZCBpZiB0aGVyZSBpcyBhIG5vbi16ZXJvIGJ1ZmZlciBsZW5ndGgKLQkgKiB3ZSBhbHNvIG5lZWQgYSB2YWxpZCBwb2ludGVyIGluIHRoZSBidWZmZXIuIElmIGl0J3MgYSB6ZXJvIGJ1ZmZlciBsZW5ndGgsCi0JICogd2UnbGwgYmUgcmV0dXJuaW5nIHRoZSBuZWVkZWQgYnVmZmVyIHNpemUsIHNvIGtlZXAgZ29pbmcuCi0JICovCi0JaWYgKCFkZXZpY2VfaGFuZGxlKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKLQl9CisJLyogVmFsaWRhdGUgcGFyYW1ldGVycyB0aGVuIGRpc3BhdGNoIHRvIGludGVybmFsIHJvdXRpbmUgKi8KIAotCXN0YXR1cyA9IGFjcGlfdXRfdmFsaWRhdGVfYnVmZmVyKHJldF9idWZmZXIpOworCXN0YXR1cyA9IGFjcGlfcnNfdmFsaWRhdGVfcGFyYW1ldGVycyhkZXZpY2VfaGFuZGxlLCByZXRfYnVmZmVyLCAmbm9kZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCX0KIAotCXN0YXR1cyA9IGFjcGlfcnNfZ2V0X3BydF9tZXRob2RfZGF0YShkZXZpY2VfaGFuZGxlLCByZXRfYnVmZmVyKTsKKwlzdGF0dXMgPSBhY3BpX3JzX2dldF9wcnRfbWV0aG9kX2RhdGEobm9kZSwgcmV0X2J1ZmZlcik7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF9pcnFfcm91dGluZ190YWJsZSkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9nZXRfY3VycmVudF9yZXNvdXJjZXMKICAqCi0gKiBQQVJBTUVURVJTOiAgZGV2aWNlX2hhbmRsZSAgIC0gYSBoYW5kbGUgdG8gdGhlIGRldmljZSBvYmplY3QgZm9yIHRoZQorICogUEFSQU1FVEVSUzogIGRldmljZV9oYW5kbGUgICAtIEhhbmRsZSB0byB0aGUgZGV2aWNlIG9iamVjdCBmb3IgdGhlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHdlIGFyZSBxdWVyeWluZwotICogICAgICAgICAgICAgIHJldF9idWZmZXIgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRoZQorICogICAgICAgICAgICAgIHJldF9idWZmZXIgICAgICAtIFBvaW50ZXIgdG8gYSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHJlc291cmNlcyBmb3IgdGhlIGRldmljZQogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKICAqCiAgKiBERVNDUklQVElPTjogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHJlc291cmNlcyBmb3IgYQotICogICAgICAgICAgICAgIHNwZWNpZmljIGRldmljZS4gIFRoZSBjYWxsZXIgbXVzdCBmaXJzdCBhY3F1aXJlIGEgaGFuZGxlIGZvcgotICogICAgICAgICAgICAgIHRoZSBkZXNpcmVkIGRldmljZS4gIFRoZSByZXNvdXJjZSBkYXRhIGlzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCisgKiAgICAgICAgICAgICAgc3BlY2lmaWMgZGV2aWNlLiBUaGUgY2FsbGVyIG11c3QgZmlyc3QgYWNxdWlyZSBhIGhhbmRsZSBmb3IKKyAqICAgICAgICAgICAgICB0aGUgZGVzaXJlZCBkZXZpY2UuIFRoZSByZXNvdXJjZSBkYXRhIGlzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCiAgKiAgICAgICAgICAgICAgcG9pbnRlZCB0byBieSB0aGUgcmV0X2J1ZmZlciB2YXJpYWJsZSBwYXJhbWV0ZXIuCiAgKgogICogICAgICAgICAgICAgIElmIHRoZSBmdW5jdGlvbiBmYWlscyBhbiBhcHByb3ByaWF0ZSBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZApAQCAtMTQxLDIzOSArMTk2LDEzMyBAQAogICogICAgICAgICAgICAgIHRoZSBvYmplY3QgaW5kaWNhdGVkIGJ5IHRoZSBwYXNzZWQgZGV2aWNlX2hhbmRsZS4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9nZXRfY3VycmVudF9yZXNvdXJjZXMoYWNwaV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKIAkJCSAgIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0X2J1ZmZlcikKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2dldF9jdXJyZW50X3Jlc291cmNlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfY3VycmVudF9yZXNvdXJjZXMpOwogCi0JLyoKLQkgKiBNdXN0IGhhdmUgYSB2YWxpZCBoYW5kbGUgYW5kIGJ1ZmZlciwgU28gd2UgaGF2ZSB0byBoYXZlIGEgaGFuZGxlCi0JICogYW5kIGEgcmV0dXJuIGJ1ZmZlciBzdHJ1Y3R1cmUsIGFuZCBpZiB0aGVyZSBpcyBhIG5vbi16ZXJvIGJ1ZmZlciBsZW5ndGgKLQkgKiB3ZSBhbHNvIG5lZWQgYSB2YWxpZCBwb2ludGVyIGluIHRoZSBidWZmZXIuIElmIGl0J3MgYSB6ZXJvIGJ1ZmZlciBsZW5ndGgsCi0JICogd2UnbGwgYmUgcmV0dXJuaW5nIHRoZSBuZWVkZWQgYnVmZmVyIHNpemUsIHNvIGtlZXAgZ29pbmcuCi0JICovCi0JaWYgKCFkZXZpY2VfaGFuZGxlKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKLQl9CisJLyogVmFsaWRhdGUgcGFyYW1ldGVycyB0aGVuIGRpc3BhdGNoIHRvIGludGVybmFsIHJvdXRpbmUgKi8KIAotCXN0YXR1cyA9IGFjcGlfdXRfdmFsaWRhdGVfYnVmZmVyKHJldF9idWZmZXIpOworCXN0YXR1cyA9IGFjcGlfcnNfdmFsaWRhdGVfcGFyYW1ldGVycyhkZXZpY2VfaGFuZGxlLCByZXRfYnVmZmVyLCAmbm9kZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCX0KIAotCXN0YXR1cyA9IGFjcGlfcnNfZ2V0X2Nyc19tZXRob2RfZGF0YShkZXZpY2VfaGFuZGxlLCByZXRfYnVmZmVyKTsKKwlzdGF0dXMgPSBhY3BpX3JzX2dldF9jcnNfbWV0aG9kX2RhdGEobm9kZSwgcmV0X2J1ZmZlcik7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9nZXRfY3VycmVudF9yZXNvdXJjZXMpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2N1cnJlbnRfcmVzb3VyY2VzKQogCisjaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X3Bvc3NpYmxlX3Jlc291cmNlcwogICoKLSAqIFBBUkFNRVRFUlM6ICBkZXZpY2VfaGFuZGxlICAgLSBhIGhhbmRsZSB0byB0aGUgZGV2aWNlIG9iamVjdCBmb3IgdGhlCisgKiBQQVJBTUVURVJTOiAgZGV2aWNlX2hhbmRsZSAgIC0gSGFuZGxlIHRvIHRoZSBkZXZpY2Ugb2JqZWN0IGZvciB0aGUKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Ugd2UgYXJlIHF1ZXJ5aW5nCi0gKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gYSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlCisgKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgIC0gUG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZlIHRoZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcyBmb3IgdGhlIGRldmljZQogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKICAqCiAgKiBERVNDUklQVElPTjogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZ2V0IGEgbGlzdCBvZiB0aGUgcG9zc2libGUgcmVzb3VyY2VzCi0gKiAgICAgICAgICAgICAgZm9yIGEgc3BlY2lmaWMgZGV2aWNlLiAgVGhlIGNhbGxlciBtdXN0IGZpcnN0IGFjcXVpcmUgYSBoYW5kbGUKLSAqICAgICAgICAgICAgICBmb3IgdGhlIGRlc2lyZWQgZGV2aWNlLiAgVGhlIHJlc291cmNlIGRhdGEgaXMgcGxhY2VkIGluIHRoZQorICogICAgICAgICAgICAgIGZvciBhIHNwZWNpZmljIGRldmljZS4gVGhlIGNhbGxlciBtdXN0IGZpcnN0IGFjcXVpcmUgYSBoYW5kbGUKKyAqICAgICAgICAgICAgICBmb3IgdGhlIGRlc2lyZWQgZGV2aWNlLiBUaGUgcmVzb3VyY2UgZGF0YSBpcyBwbGFjZWQgaW4gdGhlCiAgKiAgICAgICAgICAgICAgYnVmZmVyIHBvaW50ZWQgdG8gYnkgdGhlIHJldF9idWZmZXIgdmFyaWFibGUuCiAgKgogICogICAgICAgICAgICAgIElmIHRoZSBmdW5jdGlvbiBmYWlscyBhbiBhcHByb3ByaWF0ZSBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZAogICogICAgICAgICAgICAgIGFuZCB0aGUgdmFsdWUgb2YgcmV0X2J1ZmZlciBpcyB1bmRlZmluZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIEFDUElfRlVUVVJFX1VTQUdFCiBhY3BpX3N0YXR1cwogYWNwaV9nZXRfcG9zc2libGVfcmVzb3VyY2VzKGFjcGlfaGFuZGxlIGRldmljZV9oYW5kbGUsCiAJCQkgICAgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZ2V0X3Bvc3NpYmxlX3Jlc291cmNlcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfcG9zc2libGVfcmVzb3VyY2VzKTsKIAotCS8qCi0JICogTXVzdCBoYXZlIGEgdmFsaWQgaGFuZGxlIGFuZCBidWZmZXIsIFNvIHdlIGhhdmUgdG8gaGF2ZSBhIGhhbmRsZQotCSAqIGFuZCBhIHJldHVybiBidWZmZXIgc3RydWN0dXJlLCBhbmQgaWYgdGhlcmUgaXMgYSBub24temVybyBidWZmZXIgbGVuZ3RoCi0JICogd2UgYWxzbyBuZWVkIGEgdmFsaWQgcG9pbnRlciBpbiB0aGUgYnVmZmVyLiBJZiBpdCdzIGEgemVybyBidWZmZXIgbGVuZ3RoLAotCSAqIHdlJ2xsIGJlIHJldHVybmluZyB0aGUgbmVlZGVkIGJ1ZmZlciBzaXplLCBzbyBrZWVwIGdvaW5nLgotCSAqLwotCWlmICghZGV2aWNlX2hhbmRsZSkgewotCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7Ci0JfQorCS8qIFZhbGlkYXRlIHBhcmFtZXRlcnMgdGhlbiBkaXNwYXRjaCB0byBpbnRlcm5hbCByb3V0aW5lICovCiAKLQlzdGF0dXMgPSBhY3BpX3V0X3ZhbGlkYXRlX2J1ZmZlcihyZXRfYnVmZmVyKTsKKwlzdGF0dXMgPSBhY3BpX3JzX3ZhbGlkYXRlX3BhcmFtZXRlcnMoZGV2aWNlX2hhbmRsZSwgcmV0X2J1ZmZlciwgJm5vZGUpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKLQlzdGF0dXMgPSBhY3BpX3JzX2dldF9wcnNfbWV0aG9kX2RhdGEoZGV2aWNlX2hhbmRsZSwgcmV0X2J1ZmZlcik7CisJc3RhdHVzID0gYWNwaV9yc19nZXRfcHJzX21ldGhvZF9kYXRhKG5vZGUsIHJldF9idWZmZXIpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3Bvc3NpYmxlX3Jlc291cmNlcyk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9nZXRfcG9zc2libGVfcmVzb3VyY2VzKQogI2VuZGlmCQkJCS8qICBBQ1BJX0ZVVFVSRV9VU0FHRSAgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBGVU5DVElPTjogICAgYWNwaV93YWxrX3Jlc291cmNlcwotICoKLSAqIFBBUkFNRVRFUlM6ICBkZXZpY2VfaGFuZGxlICAgLSBIYW5kbGUgdG8gdGhlIGRldmljZSBvYmplY3QgZm9yIHRoZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB3ZSBhcmUgcXVlcnlpbmcKLSAqICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgLSBNZXRob2QgbmFtZSBvZiB0aGUgcmVzb3VyY2VzIHdlIHdhbnQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTUVUSE9EX05BTUVfX0NSUyBvciBNRVRIT0RfTkFNRV9fUFJTKQotICogICAgICAgICAgICAgIHVzZXJfZnVuY3Rpb24gICAtIENhbGxlZCBmb3IgZWFjaCByZXNvdXJjZQotICogICAgICAgICAgICAgIENvbnRleHQgICAgICAgICAtIFBhc3NlZCB0byB1c2VyX2Z1bmN0aW9uCi0gKgotICogUkVUVVJOOiAgICAgIFN0YXR1cwotICoKLSAqIERFU0NSSVBUSU9OOiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgb3IgcG9zc2libGUgcmVzb3VyY2UgbGlzdCBmb3IgdGhlCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGRldmljZS4gIFRoZSB1c2VyX2Z1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvcgotICogICAgICAgICAgICAgIGVhY2ggcmVzb3VyY2UgaW4gdGhlIGxpc3QuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotYWNwaV9zdGF0dXMKLWFjcGlfd2Fsa19yZXNvdXJjZXMoYWNwaV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKLQkJICAgIGNoYXIgKm5hbWUsCi0JCSAgICBBQ1BJX1dBTEtfUkVTT1VSQ0VfQ0FMTEJBQ0sgdXNlcl9mdW5jdGlvbiwgdm9pZCAqY29udGV4dCkKLXsKLQlhY3BpX3N0YXR1cyBzdGF0dXM7Ci0Jc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlcjsKLQlzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2U7Ci0Jc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlX2VuZDsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfd2Fsa19yZXNvdXJjZXMiKTsKLQotCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCi0KLQlpZiAoIWRldmljZV9oYW5kbGUgfHwgIXVzZXJfZnVuY3Rpb24gfHwgIW5hbWUgfHwKLQkgICAgKEFDUElfU1RSTkNNUChuYW1lLCBNRVRIT0RfTkFNRV9fQ1JTLCBzaXplb2YoTUVUSE9EX05BTUVfX0NSUykpICYmCi0JICAgICBBQ1BJX1NUUk5DTVAobmFtZSwgTUVUSE9EX05BTUVfX1BSUywgc2l6ZW9mKE1FVEhPRF9OQU1FX19QUlMpKSkpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwotCX0KLQotCS8qIEdldCB0aGUgX0NSUyBvciBfUFJTIHJlc291cmNlIGxpc3QgKi8KLQotCWJ1ZmZlci5sZW5ndGggPSBBQ1BJX0FMTE9DQVRFX0xPQ0FMX0JVRkZFUjsKLQlzdGF0dXMgPSBhY3BpX3JzX2dldF9tZXRob2RfZGF0YShkZXZpY2VfaGFuZGxlLCBuYW1lLCAmYnVmZmVyKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JfQotCi0JLyogQnVmZmVyIG5vdyBjb250YWlucyB0aGUgcmVzb3VyY2UgbGlzdCAqLwotCi0JcmVzb3VyY2UgPSBBQ1BJX0NBU1RfUFRSKHN0cnVjdCBhY3BpX3Jlc291cmNlLCBidWZmZXIucG9pbnRlcik7Ci0JcmVzb3VyY2VfZW5kID0KLQkgICAgQUNQSV9BRERfUFRSKHN0cnVjdCBhY3BpX3Jlc291cmNlLCBidWZmZXIucG9pbnRlciwgYnVmZmVyLmxlbmd0aCk7Ci0KLQkvKiBXYWxrIHRoZSByZXNvdXJjZSBsaXN0IHVudGlsIHRoZSBlbmRfdGFnIGlzIGZvdW5kIChvciBidWZmZXIgZW5kKSAqLwotCi0Jd2hpbGUgKHJlc291cmNlIDwgcmVzb3VyY2VfZW5kKSB7Ci0JCS8qIFNhbml0eSBjaGVjayB0aGUgcmVzb3VyY2UgKi8KLQotCQlpZiAocmVzb3VyY2UtPnR5cGUgPiBBQ1BJX1JFU09VUkNFX1RZUEVfTUFYKSB7Ci0JCQlzdGF0dXMgPSBBRV9BTUxfSU5WQUxJRF9SRVNPVVJDRV9UWVBFOwotCQkJYnJlYWs7Ci0JCX0KLQotCQkvKiBJbnZva2UgdGhlIHVzZXIgZnVuY3Rpb24sIGFib3J0IG9uIGFueSBlcnJvciByZXR1cm5lZCAqLwotCi0JCXN0YXR1cyA9IHVzZXJfZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRleHQpOwotCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJCWlmIChzdGF0dXMgPT0gQUVfQ1RSTF9URVJNSU5BVEUpIHsKLQkJCQkvKiBUaGlzIGlzIGFuIE9LIHRlcm1pbmF0aW9uIGJ5IHRoZSB1c2VyIGZ1bmN0aW9uICovCi0KLQkJCQlzdGF0dXMgPSBBRV9PSzsKLQkJCX0KLQkJCWJyZWFrOwotCQl9Ci0KLQkJLyogZW5kX3RhZyBpbmRpY2F0ZXMgZW5kLW9mLWxpc3QgKi8KLQotCQlpZiAocmVzb3VyY2UtPnR5cGUgPT0gQUNQSV9SRVNPVVJDRV9UWVBFX0VORF9UQUcpIHsKLQkJCWJyZWFrOwotCQl9Ci0KLQkJLyogR2V0IHRoZSBuZXh0IHJlc291cmNlIGRlc2NyaXB0b3IgKi8KLQotCQlyZXNvdXJjZSA9Ci0JCSAgICBBQ1BJX0FERF9QVFIoc3RydWN0IGFjcGlfcmVzb3VyY2UsIHJlc291cmNlLAotCQkJCSByZXNvdXJjZS0+bGVuZ3RoKTsKLQl9Ci0KLQlBQ1BJX01FTV9GUkVFKGJ1ZmZlci5wb2ludGVyKTsKLQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLX0KLQotRVhQT1JUX1NZTUJPTChhY3BpX3dhbGtfcmVzb3VyY2VzKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9zZXRfY3VycmVudF9yZXNvdXJjZXMKICAqCi0gKiBQQVJBTUVURVJTOiAgZGV2aWNlX2hhbmRsZSAgIC0gYSBoYW5kbGUgdG8gdGhlIGRldmljZSBvYmplY3QgZm9yIHRoZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB3ZSBhcmUgY2hhbmdpbmcgdGhlIHJlc291cmNlcyBvZgotICogICAgICAgICAgICAgIGluX2J1ZmZlciAgICAgICAtIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBjb250YWluaW5nIHRoZQorICogUEFSQU1FVEVSUzogIGRldmljZV9oYW5kbGUgICAtIEhhbmRsZSB0byB0aGUgZGV2aWNlIG9iamVjdCBmb3IgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHdlIGFyZSBzZXR0aW5nIHJlc291cmNlcworICogICAgICAgICAgICAgIGluX2J1ZmZlciAgICAgICAtIFBvaW50ZXIgdG8gYSBidWZmZXIgY29udGFpbmluZyB0aGUKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMgdG8gYmUgc2V0IGZvciB0aGUgZGV2aWNlCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKICAqIERFU0NSSVBUSU9OOiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBzZXQgdGhlIGN1cnJlbnQgcmVzb3VyY2VzIGZvciBhCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWMgZGV2aWNlLiAgVGhlIGNhbGxlciBtdXN0IGZpcnN0IGFjcXVpcmUgYSBoYW5kbGUgZm9yCi0gKiAgICAgICAgICAgICAgdGhlIGRlc2lyZWQgZGV2aWNlLiAgVGhlIHJlc291cmNlIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSByb3V0aW5lCisgKiAgICAgICAgICAgICAgc3BlY2lmaWMgZGV2aWNlLiBUaGUgY2FsbGVyIG11c3QgZmlyc3QgYWNxdWlyZSBhIGhhbmRsZSBmb3IKKyAqICAgICAgICAgICAgICB0aGUgZGVzaXJlZCBkZXZpY2UuIFRoZSByZXNvdXJjZSBkYXRhIGlzIHBhc3NlZCB0byB0aGUgcm91dGluZQogICogICAgICAgICAgICAgIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSB0aGUgaW5fYnVmZmVyIHZhcmlhYmxlLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX3NldF9jdXJyZW50X3Jlc291cmNlcyhhY3BpX2hhbmRsZSBkZXZpY2VfaGFuZGxlLAogCQkJICAgc3RydWN0IGFjcGlfYnVmZmVyICppbl9idWZmZXIpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOworCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9zZXRfY3VycmVudF9yZXNvdXJjZXMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfc2V0X2N1cnJlbnRfcmVzb3VyY2VzKTsKIAotCS8qIE11c3QgaGF2ZSBhIHZhbGlkIGhhbmRsZSBhbmQgYnVmZmVyICovCisJLyogVmFsaWRhdGUgdGhlIGJ1ZmZlciwgZG9uJ3QgYWxsb3cgemVybyBsZW5ndGggKi8KIAotCWlmICgoIWRldmljZV9oYW5kbGUpIHx8Ci0JICAgICghaW5fYnVmZmVyKSB8fCAoIWluX2J1ZmZlci0+cG9pbnRlcikgfHwgKCFpbl9idWZmZXItPmxlbmd0aCkpIHsKKwlpZiAoKCFpbl9idWZmZXIpIHx8ICghaW5fYnVmZmVyLT5wb2ludGVyKSB8fCAoIWluX2J1ZmZlci0+bGVuZ3RoKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CiAJfQogCi0Jc3RhdHVzID0gYWNwaV9yc19zZXRfc3JzX21ldGhvZF9kYXRhKGRldmljZV9oYW5kbGUsIGluX2J1ZmZlcik7CisJLyogVmFsaWRhdGUgcGFyYW1ldGVycyB0aGVuIGRpc3BhdGNoIHRvIGludGVybmFsIHJvdXRpbmUgKi8KKworCXN0YXR1cyA9IGFjcGlfcnNfdmFsaWRhdGVfcGFyYW1ldGVycyhkZXZpY2VfaGFuZGxlLCBpbl9idWZmZXIsICZub2RlKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJfQorCisJc3RhdHVzID0gYWNwaV9yc19zZXRfc3JzX21ldGhvZF9kYXRhKG5vZGUsIGluX2J1ZmZlcik7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9zZXRfY3VycmVudF9yZXNvdXJjZXMpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfc2V0X2N1cnJlbnRfcmVzb3VyY2VzKQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfcmVzb3VyY2VfdG9fYWRkcmVzczY0CiAgKgotICogUEFSQU1FVEVSUzogIFJlc291cmNlICAgICAgICAgICAgICAgIC0gUG9pbnRlciB0byBhIHJlc291cmNlCi0gKiAgICAgICAgICAgICAgT3V0ICAgICAgICAgICAgICAgICAgICAgLSBQb2ludGVyIHRvIHRoZSB1c2VycydzIHJldHVybgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIChhIHN0cnVjdAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFjcGlfcmVzb3VyY2VfYWRkcmVzczY0KQorICogUEFSQU1FVEVSUzogIFJlc291cmNlICAgICAgICAtIFBvaW50ZXIgdG8gYSByZXNvdXJjZQorICogICAgICAgICAgICAgIE91dCAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIHVzZXJzJ3MgcmV0dXJuIGJ1ZmZlcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIHN0cnVjdCBhY3BpX3Jlc291cmNlX2FkZHJlc3M2NCkKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzCiAgKgogICogREVTQ1JJUFRJT046IElmIHRoZSByZXNvdXJjZSBpcyBhbiBhZGRyZXNzMTYsIGFkZHJlc3MzMiwgb3IgYWRkcmVzczY0LAotICogICAgICAgICAgICAgIGNvcHkgaXQgdG8gdGhlIGFkZHJlc3M2NCByZXR1cm4gYnVmZmVyLiAgVGhpcyBzYXZlcyB0aGUKKyAqICAgICAgICAgICAgICBjb3B5IGl0IHRvIHRoZSBhZGRyZXNzNjQgcmV0dXJuIGJ1ZmZlci4gVGhpcyBzYXZlcyB0aGUKICAqICAgICAgICAgICAgICBjYWxsZXIgZnJvbSBoYXZpbmcgdG8gZHVwbGljYXRlIGNvZGUgZm9yIGRpZmZlcmVudC1zaXplZAogICogICAgICAgICAgICAgIGFkZHJlc3Nlcy4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9yZXNvdXJjZV90b19hZGRyZXNzNjQoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLAogCQkJICAgc3RydWN0IGFjcGlfcmVzb3VyY2VfYWRkcmVzczY0ICpvdXQpCkBAIC00MTUsMTggKzM2NCwxOCBAQAogCXJldHVybiAoQUVfT0spOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfcmVzb3VyY2VfdG9fYWRkcmVzczY0KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3Jlc291cmNlX3RvX2FkZHJlc3M2NCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9nZXRfdmVuZG9yX3Jlc291cmNlCiAgKgotICogUEFSQU1FVEVSUzogIGRldmljZV9oYW5kbGUgICAgICAgLSBIYW5kbGUgZm9yIHRoZSBwYXJlbnQgZGV2aWNlIG9iamVjdAotICogICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgLSBNZXRob2QgbmFtZSBmb3IgdGhlIHBhcmVudCByZXNvdXJjZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTUVUSE9EX05BTUVfX0NSUyBvciBNRVRIT0RfTkFNRV9fUFJTKQotICogICAgICAgICAgICAgIFV1aWQgICAgICAgICAgICAgICAgLSBQb2ludGVyIHRvIHRoZSBVVUlEIHRvIGJlIG1hdGNoZWQuCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGJvdGggc3VidHlwZSBhbmQgMTYtYnl0ZSBVVUlECi0gKiAgICAgICAgICAgICAgcmV0X2J1ZmZlciAgICAgICAgICAtIFdoZXJlIHRoZSB2ZW5kb3IgcmVzb3VyY2UgaXMgcmV0dXJuZWQKKyAqIFBBUkFNRVRFUlM6ICBkZXZpY2VfaGFuZGxlICAgLSBIYW5kbGUgZm9yIHRoZSBwYXJlbnQgZGV2aWNlIG9iamVjdAorICogICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAtIE1ldGhvZCBuYW1lIGZvciB0aGUgcGFyZW50IHJlc291cmNlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1FVEhPRF9OQU1FX19DUlMgb3IgTUVUSE9EX05BTUVfX1BSUykKKyAqICAgICAgICAgICAgICBVdWlkICAgICAgICAgICAgLSBQb2ludGVyIHRvIHRoZSBVVUlEIHRvIGJlIG1hdGNoZWQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgYm90aCBzdWJ0eXBlIGFuZCAxNi1ieXRlIFVVSUQKKyAqICAgICAgICAgICAgICByZXRfYnVmZmVyICAgICAgLSBXaGVyZSB0aGUgdmVuZG9yIHJlc291cmNlIGlzIHJldHVybmVkCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKQEAgLTQzNSw3ICszODQsNiBAQAogICogICAgICAgICAgICAgIFVVSUQgc3VidHlwZS4gUmV0dXJucyBhIHN0cnVjdCBhY3BpX3Jlc291cmNlIG9mIHR5cGUgVmVuZG9yLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2dldF92ZW5kb3JfcmVzb3VyY2UoYWNwaV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKIAkJCSBjaGFyICpuYW1lLApAQCAtNDY3LDE4ICs0MTUsMTkgQEAKIAlyZXR1cm4gKGluZm8uc3RhdHVzKTsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3ZlbmRvcl9yZXNvdXJjZSkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9yc19tYXRjaF92ZW5kb3JfcmVzb3VyY2UKICAqCi0gKiBQQVJBTUVURVJTOiAgQUNQSV9XQUxLX1JFU09VUkNFX0NBTExCQUNLCisgKiBQQVJBTUVURVJTOiAgYWNwaV93YWxrX3Jlc291cmNlX2NhbGxiYWNrCiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKICAqIERFU0NSSVBUSU9OOiBNYXRjaCBhIHZlbmRvciByZXNvdXJjZSB2aWEgdGhlIEFDUEkgMy4wIFVVSUQKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBzdGF0aWMgYWNwaV9zdGF0dXMKIGFjcGlfcnNfbWF0Y2hfdmVuZG9yX3Jlc291cmNlKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSwgdm9pZCAqY29udGV4dCkKIHsKQEAgLTUyNiwzICs0NzUsMTAxIEBACiAJaW5mby0+c3RhdHVzID0gQUVfT0s7CiAJcmV0dXJuIChBRV9DVFJMX1RFUk1JTkFURSk7CiB9CisKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3JzX21hdGNoX3ZlbmRvcl9yZXNvdXJjZSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGVU5DVElPTjogICAgYWNwaV93YWxrX3Jlc291cmNlcworICoKKyAqIFBBUkFNRVRFUlM6ICBkZXZpY2VfaGFuZGxlICAgLSBIYW5kbGUgdG8gdGhlIGRldmljZSBvYmplY3QgZm9yIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB3ZSBhcmUgcXVlcnlpbmcKKyAqICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgLSBNZXRob2QgbmFtZSBvZiB0aGUgcmVzb3VyY2VzIHdlIHdhbnQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTUVUSE9EX05BTUVfX0NSUyBvciBNRVRIT0RfTkFNRV9fUFJTKQorICogICAgICAgICAgICAgIHVzZXJfZnVuY3Rpb24gICAtIENhbGxlZCBmb3IgZWFjaCByZXNvdXJjZQorICogICAgICAgICAgICAgIENvbnRleHQgICAgICAgICAtIFBhc3NlZCB0byB1c2VyX2Z1bmN0aW9uCisgKgorICogUkVUVVJOOiAgICAgIFN0YXR1cworICoKKyAqIERFU0NSSVBUSU9OOiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgb3IgcG9zc2libGUgcmVzb3VyY2UgbGlzdCBmb3IgdGhlCisgKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGRldmljZS4gVGhlIHVzZXJfZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yCisgKiAgICAgICAgICAgICAgZWFjaCByZXNvdXJjZSBpbiB0aGUgbGlzdC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCithY3BpX3N0YXR1cworYWNwaV93YWxrX3Jlc291cmNlcyhhY3BpX2hhbmRsZSBkZXZpY2VfaGFuZGxlLAorCQkgICAgY2hhciAqbmFtZSwKKwkJICAgIGFjcGlfd2Fsa19yZXNvdXJjZV9jYWxsYmFjayB1c2VyX2Z1bmN0aW9uLCB2b2lkICpjb250ZXh0KQoreworCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmZmVyOworCXN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZTsKKwlzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2VfZW5kOworCisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX3dhbGtfcmVzb3VyY2VzKTsKKworCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCisKKwlpZiAoIWRldmljZV9oYW5kbGUgfHwgIXVzZXJfZnVuY3Rpb24gfHwgIW5hbWUgfHwKKwkgICAgKCFBQ1BJX0NPTVBBUkVfTkFNRShuYW1lLCBNRVRIT0RfTkFNRV9fQ1JTKSAmJgorCSAgICAgIUFDUElfQ09NUEFSRV9OQU1FKG5hbWUsIE1FVEhPRF9OQU1FX19QUlMpKSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CisJfQorCisJLyogR2V0IHRoZSBfQ1JTIG9yIF9QUlMgcmVzb3VyY2UgbGlzdCAqLworCisJYnVmZmVyLmxlbmd0aCA9IEFDUElfQUxMT0NBVEVfTE9DQUxfQlVGRkVSOworCXN0YXR1cyA9IGFjcGlfcnNfZ2V0X21ldGhvZF9kYXRhKGRldmljZV9oYW5kbGUsIG5hbWUsICZidWZmZXIpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwl9CisKKwkvKiBCdWZmZXIgbm93IGNvbnRhaW5zIHRoZSByZXNvdXJjZSBsaXN0ICovCisKKwlyZXNvdXJjZSA9IEFDUElfQ0FTVF9QVFIoc3RydWN0IGFjcGlfcmVzb3VyY2UsIGJ1ZmZlci5wb2ludGVyKTsKKwlyZXNvdXJjZV9lbmQgPQorCSAgICBBQ1BJX0FERF9QVFIoc3RydWN0IGFjcGlfcmVzb3VyY2UsIGJ1ZmZlci5wb2ludGVyLCBidWZmZXIubGVuZ3RoKTsKKworCS8qIFdhbGsgdGhlIHJlc291cmNlIGxpc3QgdW50aWwgdGhlIGVuZF90YWcgaXMgZm91bmQgKG9yIGJ1ZmZlciBlbmQpICovCisKKwl3aGlsZSAocmVzb3VyY2UgPCByZXNvdXJjZV9lbmQpIHsKKworCQkvKiBTYW5pdHkgY2hlY2sgdGhlIHJlc291cmNlICovCisKKwkJaWYgKHJlc291cmNlLT50eXBlID4gQUNQSV9SRVNPVVJDRV9UWVBFX01BWCkgeworCQkJc3RhdHVzID0gQUVfQU1MX0lOVkFMSURfUkVTT1VSQ0VfVFlQRTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogSW52b2tlIHRoZSB1c2VyIGZ1bmN0aW9uLCBhYm9ydCBvbiBhbnkgZXJyb3IgcmV0dXJuZWQgKi8KKworCQlzdGF0dXMgPSB1c2VyX2Z1bmN0aW9uKHJlc291cmNlLCBjb250ZXh0KTsKKwkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCQlpZiAoc3RhdHVzID09IEFFX0NUUkxfVEVSTUlOQVRFKSB7CisKKwkJCQkvKiBUaGlzIGlzIGFuIE9LIHRlcm1pbmF0aW9uIGJ5IHRoZSB1c2VyIGZ1bmN0aW9uICovCisKKwkJCQlzdGF0dXMgPSBBRV9PSzsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisKKwkJLyogZW5kX3RhZyBpbmRpY2F0ZXMgZW5kLW9mLWxpc3QgKi8KKworCQlpZiAocmVzb3VyY2UtPnR5cGUgPT0gQUNQSV9SRVNPVVJDRV9UWVBFX0VORF9UQUcpIHsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogR2V0IHRoZSBuZXh0IHJlc291cmNlIGRlc2NyaXB0b3IgKi8KKworCQlyZXNvdXJjZSA9CisJCSAgICBBQ1BJX0FERF9QVFIoc3RydWN0IGFjcGlfcmVzb3VyY2UsIHJlc291cmNlLAorCQkJCSByZXNvdXJjZS0+bGVuZ3RoKTsKKwl9CisKKwlBQ1BJX0ZSRUUoYnVmZmVyLnBvaW50ZXIpOworCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOworfQorCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV93YWxrX3Jlc291cmNlcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9zY2FuLmMgYi9kcml2ZXJzL2FjcGkvc2Nhbi5jCmluZGV4IGEwYWI4MjguLmY4MzE2YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9zY2FuLmMKKysrIGIvZHJpdmVycy9hY3BpL3NjYW4uYwpAQCAtMTQyLDcgKzE0Miw3IEBACiAJY3JlYXRlX3N5c2ZzX2RldmljZV9maWxlcyhkZXZpY2UpOwogfQogCi1zdGF0aWMgaW50IGFjcGlfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsIGludCB0eXBlKQorc3RhdGljIHZvaWQgYWNwaV9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgaW50IHR5cGUpCiB7CiAJc3Bpbl9sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKIAlpZiAoZGV2aWNlLT5wYXJlbnQpIHsKQEAgLTE1OCw3ICsxNTgsNiBAQAogCWFjcGlfZGV0YWNoX2RhdGEoZGV2aWNlLT5oYW5kbGUsIGFjcGlfYnVzX2RhdGFfaGFuZGxlcik7CiAJcmVtb3ZlX3N5c2ZzX2RldmljZV9maWxlcyhkZXZpY2UpOwogCWtvYmplY3RfdW5yZWdpc3RlcigmZGV2aWNlLT5rb2JqKTsKLQlyZXR1cm4gMDsKIH0KIAogdm9pZCBhY3BpX2J1c19kYXRhX2hhbmRsZXIoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZnVuY3Rpb24sIHZvaWQgKmNvbnRleHQpCkBAIC0yMzQsMTIgKzIzMyw5IEBACiAKIGludCBhY3BpX21hdGNoX2lkcyhzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgY2hhciAqaWRzKQogewotCWludCBlcnJvciA9IDA7Ci0Jc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlciA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTsKLQogCWlmIChkZXZpY2UtPmZsYWdzLmhhcmR3YXJlX2lkKQogCQlpZiAoc3Ryc3RyKGlkcywgZGV2aWNlLT5wbnAuaGFyZHdhcmVfaWQpKQotCQkJZ290byBEb25lOworCQkJcmV0dXJuIDA7CiAKIAlpZiAoZGV2aWNlLT5mbGFncy5jb21wYXRpYmxlX2lkcykgewogCQlzdHJ1Y3QgYWNwaV9jb21wYXRpYmxlX2lkX2xpc3QgKmNpZF9saXN0ID0gZGV2aWNlLT5wbnAuY2lkX2xpc3Q7CkBAIC0yNDgsMTUgKzI0NCwxMCBAQAogCQkvKiBjb21wYXJlIG11bHRpcGxlIF9DSUQgZW50cmllcyBhZ2FpbnN0IGRyaXZlciBpZHMgKi8KIAkJZm9yIChpID0gMDsgaSA8IGNpZF9saXN0LT5jb3VudDsgaSsrKSB7CiAJCQlpZiAoc3Ryc3RyKGlkcywgY2lkX2xpc3QtPmlkW2ldLnZhbHVlKSkKLQkJCQlnb3RvIERvbmU7CisJCQkJcmV0dXJuIDA7CiAJCX0KIAl9Ci0JZXJyb3IgPSAtRU5PRU5UOwotCi0gICAgICBEb25lOgotCWlmIChidWZmZXIucG9pbnRlcikKLQkJYWNwaV9vc19mcmVlKGJ1ZmZlci5wb2ludGVyKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIC1FTk9FTlQ7CiB9CiAKIHN0YXRpYyBhY3BpX3N0YXR1cwpAQCAtNDQxLDEwICs0MzIsNyBAQAogCWlzbG9ja2FibGUgPSBkZXZpY2UtPmZsYWdzLmxvY2thYmxlOwogCWhhbmRsZSA9IGRldmljZS0+aGFuZGxlOwogCi0JaWYgKHR5cGUgPT0gQUNQSV9UWVBFX1BST0NFU1NPUikKLQkJcmVzdWx0ID0gYWNwaV9idXNfdHJpbShkZXZpY2UsIDApOwotCWVsc2UKLQkJcmVzdWx0ID0gYWNwaV9idXNfdHJpbShkZXZpY2UsIDEpOworCXJlc3VsdCA9IGFjcGlfYnVzX3RyaW0oZGV2aWNlLCAxKTsKIAogCWlmICghcmVzdWx0KQogCQlyZXN1bHQgPSBhY3BpX2VqZWN0X29wZXJhdGlvbihoYW5kbGUsIGlzbG9ja2FibGUpOwpAQCAtNDcxLDcgKzQ1OSw2IEBACiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBzdGF0aWMgTElTVF9IRUFEKGFjcGlfYnVzX2RyaXZlcnMpOwotc3RhdGljIERFQ0xBUkVfTVVURVgoYWNwaV9idXNfZHJpdmVyc19sb2NrKTsKIAogLyoqCiAgKiBhY3BpX2J1c19tYXRjaCAtIG1hdGNoIGRldmljZSBJRHMgdG8gZHJpdmVyJ3Mgc3VwcG9ydGVkIElEcwpAQCAtNTQ4LDEwICs1MzUsOSBAQAogCXJldHVybl9WQUxVRShyZXN1bHQpOwogfQogCi1zdGF0aWMgaW50IGFjcGlfZHJpdmVyX2F0dGFjaChzdHJ1Y3QgYWNwaV9kcml2ZXIgKmRydikKK3N0YXRpYyB2b2lkIGFjcGlfZHJpdmVyX2F0dGFjaChzdHJ1Y3QgYWNwaV9kcml2ZXIgKmRydikKIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpub2RlLCAqbmV4dDsKLQlpbnQgY291bnQgPSAwOwogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9kcml2ZXJfYXR0YWNoIik7CiAKQEAgLTU2OCw3ICs1NTQsNiBAQAogCQkJaWYgKCFhY3BpX2J1c19kcml2ZXJfaW5pdChkZXYsIGRydikpIHsKIAkJCQlhY3BpX3N0YXJ0X3NpbmdsZV9vYmplY3QoZGV2KTsKIAkJCQlhdG9taWNfaW5jKCZkcnYtPnJlZmVyZW5jZXMpOwotCQkJCWNvdW50Kys7CiAJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAogCQkJCQkJICAiRm91bmQgZHJpdmVyIFslc10gZm9yIGRldmljZSBbJXNdXG4iLAogCQkJCQkJICBkcnYtPm5hbWUsIGRldi0+cG5wLmJ1c19pZCkpOwpAQCAtNTc3LDEwICs1NjIsOSBAQAogCQlzcGluX2xvY2soJmFjcGlfZGV2aWNlX2xvY2spOwogCX0KIAlzcGluX3VubG9jaygmYWNwaV9kZXZpY2VfbG9jayk7Ci0JcmV0dXJuX1ZBTFVFKGNvdW50KTsKIH0KIAotc3RhdGljIGludCBhY3BpX2RyaXZlcl9kZXRhY2goc3RydWN0IGFjcGlfZHJpdmVyICpkcnYpCitzdGF0aWMgdm9pZCBhY3BpX2RyaXZlcl9kZXRhY2goc3RydWN0IGFjcGlfZHJpdmVyICpkcnYpCiB7CiAJc3RydWN0IGxpc3RfaGVhZCAqbm9kZSwgKm5leHQ7CiAKQEAgLTYwMiw3ICs1ODYsNiBAQAogCQl9CiAJfQogCXNwaW5fdW5sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKLQlyZXR1cm5fVkFMVUUoMCk7CiB9CiAKIC8qKgpAQCAtNjEwLDI4ICs1OTMsMjIgQEAKICAqIEBkcml2ZXI6IGRyaXZlciBiZWluZyByZWdpc3RlcmVkCiAgKgogICogUmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIEFDUEkgYnVzLiAgU2VhcmNoZXMgdGhlIG5hbWVzcGFjZSBmb3IgYWxsCi0gKiBkZXZpY2VzIHRoYXQgbWF0Y2ggdGhlIGRyaXZlcidzIGNyaXRlcmlhIGFuZCBiaW5kcy4gIFJldHVybnMgdGhlCi0gKiBudW1iZXIgb2YgZGV2aWNlcyB0aGF0IHdlcmUgY2xhaW1lZCBieSB0aGUgZHJpdmVyLCBvciBhIG5lZ2F0aXZlCi0gKiBlcnJvciBzdGF0dXMgZm9yIGZhaWx1cmUuCisgKiBkZXZpY2VzIHRoYXQgbWF0Y2ggdGhlIGRyaXZlcidzIGNyaXRlcmlhIGFuZCBiaW5kcy4gIFJldHVybnMgemVybyBmb3IKKyAqIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBzdGF0dXMgZm9yIGZhaWx1cmUuCiAgKi8KIGludCBhY3BpX2J1c19yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGFjcGlfZHJpdmVyICpkcml2ZXIpCiB7Ci0JaW50IGNvdW50OwotCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9idXNfcmVnaXN0ZXJfZHJpdmVyIik7CiAKIAlpZiAoYWNwaV9kaXNhYmxlZCkKIAkJcmV0dXJuX1ZBTFVFKC1FTk9ERVYpOwogCi0JaWYgKCFkcml2ZXIpCi0JCXJldHVybl9WQUxVRSgtRUlOVkFMKTsKLQogCXNwaW5fbG9jaygmYWNwaV9kZXZpY2VfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmZHJpdmVyLT5ub2RlLCAmYWNwaV9idXNfZHJpdmVycyk7CiAJc3Bpbl91bmxvY2soJmFjcGlfZGV2aWNlX2xvY2spOwotCWNvdW50ID0gYWNwaV9kcml2ZXJfYXR0YWNoKGRyaXZlcik7CisJYWNwaV9kcml2ZXJfYXR0YWNoKGRyaXZlcik7CiAKLQlyZXR1cm5fVkFMVUUoY291bnQpOworCXJldHVybl9WQUxVRSgwKTsKIH0KIAogRVhQT1JUX1NZTUJPTChhY3BpX2J1c19yZWdpc3Rlcl9kcml2ZXIpOwpAQCAtNjQzLDIzICs2MjAsMTYgQEAKICAqIFVucmVnaXN0ZXJzIGEgZHJpdmVyIHdpdGggdGhlIEFDUEkgYnVzLiAgU2VhcmNoZXMgdGhlIG5hbWVzcGFjZSBmb3IgYWxsCiAgKiBkZXZpY2VzIHRoYXQgbWF0Y2ggdGhlIGRyaXZlcidzIGNyaXRlcmlhIGFuZCB1bmJpbmRzLgogICovCi1pbnQgYWNwaV9idXNfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGFjcGlfZHJpdmVyICpkcml2ZXIpCit2b2lkIGFjcGlfYnVzX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBhY3BpX2RyaXZlciAqZHJpdmVyKQogewotCWludCBlcnJvciA9IDA7CisJYWNwaV9kcml2ZXJfZGV0YWNoKGRyaXZlcik7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2J1c191bnJlZ2lzdGVyX2RyaXZlciIpOwotCi0JaWYgKGRyaXZlcikgewotCQlhY3BpX2RyaXZlcl9kZXRhY2goZHJpdmVyKTsKLQotCQlpZiAoIWF0b21pY19yZWFkKCZkcml2ZXItPnJlZmVyZW5jZXMpKSB7Ci0JCQlzcGluX2xvY2soJmFjcGlfZGV2aWNlX2xvY2spOwotCQkJbGlzdF9kZWxfaW5pdCgmZHJpdmVyLT5ub2RlKTsKLQkJCXNwaW5fdW5sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKLQkJfQotCX0gZWxzZQotCQllcnJvciA9IC1FSU5WQUw7Ci0JcmV0dXJuX1ZBTFVFKGVycm9yKTsKKwlpZiAoIWF0b21pY19yZWFkKCZkcml2ZXItPnJlZmVyZW5jZXMpKSB7CisJCXNwaW5fbG9jaygmYWNwaV9kZXZpY2VfbG9jayk7CisJCWxpc3RfZGVsX2luaXQoJmRyaXZlci0+bm9kZSk7CisJCXNwaW5fdW5sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKKwl9CisJcmV0dXJuOwogfQogCiBFWFBPUlRfU1lNQk9MKGFjcGlfYnVzX3VucmVnaXN0ZXJfZHJpdmVyKTsKQEAgLTEzNzEsNiArMTM0MSwxMDAgQEAKIAlyZXR1cm5fVkFMVUUocmVzdWx0KTsKIH0KIAorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBhY3BpX2RldmljZSAqIHRvX2FjcGlfZGV2KHN0cnVjdCBkZXZpY2UgKiBkZXYpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBhY3BpX2RldmljZSwgZGV2KTsKK30KKworCitzdGF0aWMgaW50IHJvb3Rfc3VzcGVuZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKiBhY3BpX2RldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0cnVjdCBhY3BpX2RldmljZSAqIGRldiwgKiBuZXh0OworCWludCByZXN1bHQ7CisKKwlzcGluX2xvY2soJmFjcGlfZGV2aWNlX2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZV9yZXZlcnNlKGRldiwgbmV4dCwgJmFjcGlfZGV2aWNlX2xpc3QsIGdfbGlzdCkgeworCQlpZiAoZGV2LT5kcml2ZXIgJiYgZGV2LT5kcml2ZXItPm9wcy5zdXNwZW5kKSB7CisJCQlzcGluX3VubG9jaygmYWNwaV9kZXZpY2VfbG9jayk7CisJCQlyZXN1bHQgPSBkZXYtPmRyaXZlci0+b3BzLnN1c3BlbmQoZGV2LCAwKTsKKwkJCWlmIChyZXN1bHQpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIgUFJFRklYICJbJXMgLSAlc10gU3VzcGVuZCBmYWlsZWQ6ICVkXG4iLAorCQkJCSAgICAgICBhY3BpX2RldmljZV9uYW1lKGRldiksCisJCQkJICAgICAgIGFjcGlfZGV2aWNlX2JpZChkZXYpLCByZXN1bHQpOworCQkJfQorCQkJc3Bpbl9sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKKwkJfQorCX0KKwlzcGluX3VubG9jaygmYWNwaV9kZXZpY2VfbG9jayk7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBhY3BpX2RldmljZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKiBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwlzdHJ1Y3QgYWNwaV9kZXZpY2UgKiBhY3BpX2RldiA9IHRvX2FjcGlfZGV2KGRldik7CisKKwkvKgorCSAqIEZvciBub3csIHdlIHNob3VsZCBvbmx5IHJlZ2lzdGVyIDEgZ2VuZXJpYyBkZXZpY2UgLQorCSAqIHRoZSBBQ1BJIHJvb3QgZGV2aWNlIC0gYW5kIGZyb20gdGhlcmUsIHdlIHdhbGsgdGhlCisJICogdHJlZSBvZiBBQ1BJIGRldmljZXMgdG8gc3VzcGVuZCBlYWNoIG9uZSB1c2luZyB0aGUKKwkgKiBBQ1BJIGRyaXZlciBtZXRob2RzLgorCSAqLworCWlmIChhY3BpX2Rldi0+aGFuZGxlID09IEFDUElfUk9PVF9PQkpFQ1QpCisJCXJvb3Rfc3VzcGVuZChhY3BpX2Rldiwgc3RhdGUpOworCXJldHVybiAwOworfQorCisKKworc3RhdGljIGludCByb290X3Jlc3VtZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKiBhY3BpX2RldikKK3sKKwlzdHJ1Y3QgYWNwaV9kZXZpY2UgKiBkZXYsICogbmV4dDsKKwlpbnQgcmVzdWx0OworCisJc3Bpbl9sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCBuZXh0LCAmYWNwaV9kZXZpY2VfbGlzdCwgZ19saXN0KSB7CisJCWlmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+b3BzLnJlc3VtZSkgeworCQkJc3Bpbl91bmxvY2soJmFjcGlfZGV2aWNlX2xvY2spOworCQkJcmVzdWx0ID0gZGV2LT5kcml2ZXItPm9wcy5yZXN1bWUoZGV2LCAwKTsKKwkJCWlmIChyZXN1bHQpIHsKKwkJCQlwcmludGsoS0VSTl9FUlIgUFJFRklYICJbJXMgLSAlc10gcmVzdW1lIGZhaWxlZDogJWRcbiIsCisJCQkJICAgICAgIGFjcGlfZGV2aWNlX25hbWUoZGV2KSwKKwkJCQkgICAgICAgYWNwaV9kZXZpY2VfYmlkKGRldiksIHJlc3VsdCk7CisJCQl9CisJCQlzcGluX2xvY2soJmFjcGlfZGV2aWNlX2xvY2spOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IGFjcGlfZGV2aWNlX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICogZGV2KQoreworCXN0cnVjdCBhY3BpX2RldmljZSAqIGFjcGlfZGV2ID0gdG9fYWNwaV9kZXYoZGV2KTsKKworCS8qCisJICogRm9yIG5vdywgd2Ugc2hvdWxkIG9ubHkgcmVnaXN0ZXIgMSBnZW5lcmljIGRldmljZSAtCisJICogdGhlIEFDUEkgcm9vdCBkZXZpY2UgLSBhbmQgZnJvbSB0aGVyZSwgd2Ugd2FsayB0aGUKKwkgKiB0cmVlIG9mIEFDUEkgZGV2aWNlcyB0byByZXN1bWUgZWFjaCBvbmUgdXNpbmcgdGhlCisJICogQUNQSSBkcml2ZXIgbWV0aG9kcy4KKwkgKi8KKwlpZiAoYWNwaV9kZXYtPmhhbmRsZSA9PSBBQ1BJX1JPT1RfT0JKRUNUKQorCQlyb290X3Jlc3VtZShhY3BpX2Rldik7CisJcmV0dXJuIDA7Cit9CisKKworc3RydWN0IGJ1c190eXBlIGFjcGlfYnVzX3R5cGUgPSB7CisJLm5hbWUJCT0gImFjcGkiLAorCS5zdXNwZW5kCT0gYWNwaV9kZXZpY2Vfc3VzcGVuZCwKKwkucmVzdW1lCQk9IGFjcGlfZGV2aWNlX3Jlc3VtZSwKK307CisKKworCiBzdGF0aWMgaW50IF9faW5pdCBhY3BpX3NjYW5faW5pdCh2b2lkKQogewogCWludCByZXN1bHQ7CkBAIC0xMzgzLDYgKzE0NDcsMTIgQEAKIAogCWtzZXRfcmVnaXN0ZXIoJmFjcGlfbmFtZXNwYWNlX2tzZXQpOwogCisJcmVzdWx0ID0gYnVzX3JlZ2lzdGVyKCZhY3BpX2J1c190eXBlKTsKKwlpZiAocmVzdWx0KSB7CisJCS8qIFdlIGRvbid0IHdhbnQgdG8gcXVpdCBldmVuIGlmIHdlIGZhaWxlZCB0byBhZGQgc3VzcGVuZC9yZXN1bWUgKi8KKwkJcHJpbnRrKEtFUk5fRVJSIFBSRUZJWCAiQ291bGQgbm90IHJlZ2lzdGVyIGJ1cyB0eXBlXG4iKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSB0aGUgcm9vdCBkZXZpY2UgaW4gdGhlIGJ1cydzIGRldmljZSB0cmVlCiAJICovCkBAIC0xMzkyLDYgKzE0NjIsMTYgQEAKIAkJZ290byBEb25lOwogCiAJcmVzdWx0ID0gYWNwaV9zdGFydF9zaW5nbGVfb2JqZWN0KGFjcGlfcm9vdCk7CisJaWYgKHJlc3VsdCkKKwkJZ290byBEb25lOworCisJYWNwaV9yb290LT5kZXYuYnVzID0gJmFjcGlfYnVzX3R5cGU7CisJc25wcmludGYoYWNwaV9yb290LT5kZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgIiVzIiwgYWNwaV9idXNfdHlwZS5uYW1lKTsKKwlyZXN1bHQgPSBkZXZpY2VfcmVnaXN0ZXIoJmFjcGlfcm9vdC0+ZGV2KTsKKwlpZiAocmVzdWx0KSB7CisJCS8qIFdlIGRvbid0IHdhbnQgdG8gcXVpdCBldmVuIGlmIHdlIGZhaWxlZCB0byBhZGQgc3VzcGVuZC9yZXN1bWUgKi8KKwkJcHJpbnRrKEtFUk5fRVJSIFBSRUZJWCAiQ291bGQgbm90IHJlZ2lzdGVyIGRldmljZVxuIik7CisJfQogCiAJLyoKIAkgKiBFbnVtZXJhdGUgZGV2aWNlcyBpbiB0aGUgQUNQSSBuYW1lc3BhY2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvc2xlZXAvbWFpbi5jIGIvZHJpdmVycy9hY3BpL3NsZWVwL21haW4uYwppbmRleCA5MzA0MjdmLi42MmNlODdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvc2xlZXAvbWFpbi5jCisrKyBiL2RyaXZlcnMvYWNwaS9zbGVlcC9tYWluLmMKQEAgLTEwNSw2ICsxMDUsMTQgQEAKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CisKKwkvKiBBQ1BJIDMuMCBzcGVjcyAoUDYyKSBzYXlzIHRoYXQgaXQncyB0aGUgcmVzcG9uc2FiaWx0eQorCSAqIG9mIHRoZSBPU1BNIHRvIGNsZWFyIHRoZSBzdGF0dXMgYml0IFsgaW1wbHlpbmcgdGhhdCB0aGUKKwkgKiBQT1dFUl9CVVRUT04gZXZlbnQgc2hvdWxkIG5vdCByZWFjaCB1c2Vyc3BhY2UgXQorCSAqLworCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSAmJiAoYWNwaV9zdGF0ZSA9PSBBQ1BJX1NUQVRFX1MzKSkKKwkJYWNwaV9jbGVhcl9ldmVudChBQ1BJX0VWRU5UX1BPV0VSX0JVVFRPTik7CisKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAJcHJpbnRrKEtFUk5fREVCVUcgIkJhY2sgdG8gQyFcbiIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvc2xlZXAvd2FrZXVwLmMgYi9kcml2ZXJzL2FjcGkvc2xlZXAvd2FrZXVwLmMKaW5kZXggODVkZjBjZS4uYWYxZGJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3NsZWVwL3dha2V1cC5jCisrKyBiL2RyaXZlcnMvYWNwaS9zbGVlcC93YWtldXAuYwpAQCAtMTU1LDcgKzE1NSw2IEBACiAKIAlpZiAoYWNwaV9kaXNhYmxlZCkKIAkJcmV0dXJuIDA7Ci0JcHJpbnRrKCJBQ1BJIHdha2V1cCBkZXZpY2VzOiBcbiIpOwogCiAJc3Bpbl9sb2NrKCZhY3BpX2RldmljZV9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX3NhZmUobm9kZSwgbmV4dCwgJmFjcGlfd2FrZXVwX2RldmljZV9saXN0KSB7CkBAIC0xNzQsMTAgKzE3Myw4IEBACiAJCQlkZXYtPndha2V1cC5zdGF0ZS5lbmFibGVkID0gMTsKIAkJCXNwaW5fbG9jaygmYWNwaV9kZXZpY2VfbG9jayk7CiAJCX0KLQkJcHJpbnRrKCIlNHMgIiwgZGV2LT5wbnAuYnVzX2lkKTsKIAl9CiAJc3Bpbl91bmxvY2soJmFjcGlfZGV2aWNlX2xvY2spOwotCXByaW50aygiXG4iKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3N5c3RlbS5jIGIvZHJpdmVycy9hY3BpL3N5c3RlbS5jCmluZGV4IGU0MzA4YzcuLmE5MzRhYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9zeXN0ZW0uYworKysgYi9kcml2ZXJzL2FjcGkvc3lzdGVtLmMKQEAgLTM5LDcgKzM5LDcgQEAKICNkZWZpbmUgQUNQSV9TWVNURU1fRklMRV9FVkVOVAkJImV2ZW50IgogI2RlZmluZSBBQ1BJX1NZU1RFTV9GSUxFX0RTRFQJCSJkc2R0IgogI2RlZmluZSBBQ1BJX1NZU1RFTV9GSUxFX0ZBRFQJCSJmYWR0IgotZXh0ZXJuIEZBRFRfREVTQ1JJUFRPUiBhY3BpX2ZhZHQ7CitleHRlcm4gc3RydWN0IGZhZHRfZGVzY3JpcHRvciBhY3BpX2ZhZHQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUyBJbnRlcmZhY2UgKC9wcm9jKQpAQCAtODIsNyArODIsNyBAQAogCiAJQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9zeXN0ZW1fcmVhZF9kc2R0Iik7CiAKLQlzdGF0dXMgPSBhY3BpX2dldF90YWJsZShBQ1BJX1RBQkxFX0RTRFQsIDEsICZkc2R0KTsKKwlzdGF0dXMgPSBhY3BpX2dldF90YWJsZShBQ1BJX1RBQkxFX0lEX0RTRFQsIDEsICZkc2R0KTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCiAJCXJldHVybl9WQUxVRSgtRU5PREVWKTsKIApAQCAtMTEwLDcgKzExMCw3IEBACiAKIAlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX3N5c3RlbV9yZWFkX2ZhZHQiKTsKIAotCXN0YXR1cyA9IGFjcGlfZ2V0X3RhYmxlKEFDUElfVEFCTEVfRkFEVCwgMSwgJmZhZHQpOworCXN0YXR1cyA9IGFjcGlfZ2V0X3RhYmxlKEFDUElfVEFCTEVfSURfRkFEVCwgMSwgJmZhZHQpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKIAkJcmV0dXJuX1ZBTFVFKC1FTk9ERVYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdGFibGVzLmMgYi9kcml2ZXJzL2FjcGkvdGFibGVzLmMKaW5kZXggN2YzN2M3Yy4uZWQ1ZTg4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3RhYmxlcy5jCisrKyBiL2RyaXZlcnMvYWNwaS90YWJsZXMuYwpAQCAtMjgyLDggKzI4Miw4IEBACiAKIAkvKiBNYXAgdGhlIERTRFQgaGVhZGVyIHZpYSB0aGUgcG9pbnRlciBpbiB0aGUgRkFEVCAqLwogCWlmIChpZCA9PSBBQ1BJX0RTRFQpIHsKLQkJc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyICpmYWR0ID0KLQkJICAgIChzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjIgKikqaGVhZGVyOworCQlzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICpmYWR0ID0KKwkJICAgIChzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICopKmhlYWRlcjsKIAogCQlpZiAoZmFkdC0+cmV2aXNpb24gPT0gMyAmJiBmYWR0LT5YZHNkdCkgewogCQkJKmhlYWRlciA9ICh2b2lkICopX19hY3BpX21hcF90YWJsZShmYWR0LT5YZHNkdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJjb252cnQuYyBiL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJjb252cnQuYwppbmRleCAwM2IzN2QyLi5kNjk3ZmNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RiY29udnJ0LmMKKysrIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90YmNvbnZydC5jCkBAIC00MSw4ICs0MSw2IEBACiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3RhYmxlcy5oPgogCkBAIC01NiwxNSArNTQsMTUgQEAKIAkJCSAgICAgYWNwaV9waHlzaWNhbF9hZGRyZXNzIGFkZHJlc3MpOwogCiBzdGF0aWMgdm9pZAotYWNwaV90Yl9jb252ZXJ0X2ZhZHQxKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqbG9jYWxfZmFkdCwKK2FjcGlfdGJfY29udmVydF9mYWR0MShzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICpsb2NhbF9mYWR0LAogCQkgICAgICBzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjEgKm9yaWdpbmFsX2ZhZHQpOwogCiBzdGF0aWMgdm9pZAotYWNwaV90Yl9jb252ZXJ0X2ZhZHQyKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqbG9jYWxfZmFkdCwKLQkJICAgICAgc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyICpvcmlnaW5hbF9mYWR0KTsKK2FjcGlfdGJfY29udmVydF9mYWR0MihzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICpsb2NhbF9mYWR0LAorCQkgICAgICBzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICpvcmlnaW5hbF9mYWR0KTsKIAogdTggYWNwaV9mYWR0X2lzX3YxOwotRVhQT1JUX1NZTUJPTChhY3BpX2ZhZHRfaXNfdjEpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZmFkdF9pc192MSkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xMjIsNyArMTIwLDcgQEAKIHsKIAlhY3BpX3NpemUgdGFibGVfc2l6ZTsKIAl1MzIgaTsKLQlYU0RUX0RFU0NSSVBUT1IgKm5ld190YWJsZTsKKwlzdHJ1Y3QgeHNkdF9kZXNjcmlwdG9yICpuZXdfdGFibGU7CiAKIAlBQ1BJX0ZVTkNUSU9OX0VOVFJZKCk7CiAKQEAgLTEzMyw3ICsxMzEsNyBAQAogCiAJLyogQWxsb2NhdGUgYW4gWFNEVCAqLwogCi0JbmV3X3RhYmxlID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHRhYmxlX3NpemUpOworCW5ld190YWJsZSA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHRhYmxlX3NpemUpOwogCWlmICghbmV3X3RhYmxlKSB7CiAJCXJldHVybiAoQUVfTk9fTUVNT1JZKTsKIAl9CkBAIC0xNDcsMTcgKzE0NSwxOCBAQAogCS8qIENvcHkgdGhlIHRhYmxlIHBvaW50ZXJzICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgYWNwaV9nYmxfcnNkdF90YWJsZV9jb3VudDsgaSsrKSB7CisKIAkJLyogUlNEVCBwb2ludGVycyBhcmUgMzIgYml0cywgWFNEVCBwb2ludGVycyBhcmUgNjQgYml0cyAqLwogCiAJCWlmIChhY3BpX2dibF9yb290X3RhYmxlX3R5cGUgPT0gQUNQSV9UQUJMRV9UWVBFX1JTRFQpIHsKIAkJCUFDUElfU1RPUkVfQUREUkVTUyhuZXdfdGFibGUtPnRhYmxlX29mZnNldF9lbnRyeVtpXSwKIAkJCQkJICAgKEFDUElfQ0FTVF9QVFIKLQkJCQkJICAgIChzdHJ1Y3QgcnNkdF9kZXNjcmlwdG9yX3JldjEsCisJCQkJCSAgICAoc3RydWN0IHJzZHRfZGVzY3JpcHRvciwKIAkJCQkJICAgICB0YWJsZV9pbmZvLT5wb2ludGVyKSktPgogCQkJCQkgICB0YWJsZV9vZmZzZXRfZW50cnlbaV0pOwogCQl9IGVsc2UgewogCQkJbmV3X3RhYmxlLT50YWJsZV9vZmZzZXRfZW50cnlbaV0gPQotCQkJICAgIChBQ1BJX0NBU1RfUFRSKFhTRFRfREVTQ1JJUFRPUiwKKwkJCSAgICAoQUNQSV9DQVNUX1BUUihzdHJ1Y3QgeHNkdF9kZXNjcmlwdG9yLAogCQkJCQkgICB0YWJsZV9pbmZvLT5wb2ludGVyKSktPgogCQkJICAgIHRhYmxlX29mZnNldF9lbnRyeVtpXTsKIAkJfQpAQCAtMjE5LDcgKzIxOCw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotYWNwaV90Yl9jb252ZXJ0X2ZhZHQxKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqbG9jYWxfZmFkdCwKK2FjcGlfdGJfY29udmVydF9mYWR0MShzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yICpsb2NhbF9mYWR0LAogCQkgICAgICBzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjEgKm9yaWdpbmFsX2ZhZHQpCiB7CiAKQEAgLTM2NSwxNCArMzY0LDEzIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotYWNwaV90Yl9jb252ZXJ0X2ZhZHQyKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiAqbG9jYWxfZmFkdCwKLQkJICAgICAgc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyICpvcmlnaW5hbF9mYWR0KQorYWNwaV90Yl9jb252ZXJ0X2ZhZHQyKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgKmxvY2FsX2ZhZHQsCisJCSAgICAgIHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgKm9yaWdpbmFsX2ZhZHQpCiB7CiAKIAkvKiBXZSBoYXZlIGFuIEFDUEkgMi4wIEZBRFQgYnV0IHdlIG11c3QgY29weSBpdCB0byBvdXIgbG9jYWwgYnVmZmVyICovCiAKLQlBQ1BJX01FTUNQWShsb2NhbF9mYWR0LCBvcmlnaW5hbF9mYWR0LAotCQkgICAgc2l6ZW9mKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MikpOworCUFDUElfTUVNQ1BZKGxvY2FsX2ZhZHQsIG9yaWdpbmFsX2ZhZHQsIHNpemVvZihzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yKSk7CiAKIAkvKgogCSAqICJYIiBmaWVsZHMgYXJlIG9wdGlvbmFsIGV4dGVuc2lvbnMgdG8gdGhlIG9yaWdpbmFsIFYxLjAgZmllbGRzLCBzbwpAQCAtNDkxLDEwICs0ODksMTAgQEAKIAogYWNwaV9zdGF0dXMgYWNwaV90Yl9jb252ZXJ0X3RhYmxlX2ZhZHQodm9pZCkKIHsKLQlzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjIgKmxvY2FsX2ZhZHQ7CisJc3RydWN0IGZhZHRfZGVzY3JpcHRvciAqbG9jYWxfZmFkdDsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidGJfY29udmVydF90YWJsZV9mYWR0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh0Yl9jb252ZXJ0X3RhYmxlX2ZhZHQpOwogCiAJLyoKIAkgKiBhY3BpX2dibF9GQURUIGlzIHZhbGlkLiBWYWxpZGF0ZSB0aGUgRkFEVCBsZW5ndGguIFRoZSB0YWJsZSBtdXN0IGJlCkBAIC01MDgsMTMgKzUwNiwxNCBAQAogCiAJLyogQWxsb2NhdGUgYnVmZmVyIGZvciB0aGUgQUNQSSAyLjAoKykgRkFEVCAqLwogCi0JbG9jYWxfZmFkdCA9IEFDUElfTUVNX0NBTExPQ0FURShzaXplb2Yoc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyKSk7CisJbG9jYWxfZmFkdCA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHNpemVvZihzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yKSk7CiAJaWYgKCFsb2NhbF9mYWR0KSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOwogCX0KIAogCWlmIChhY3BpX2dibF9GQURULT5yZXZpc2lvbiA+PSBGQURUMl9SRVZJU0lPTl9JRCkgewotCQlpZiAoYWNwaV9nYmxfRkFEVC0+bGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MikpIHsKKwkJaWYgKGFjcGlfZ2JsX0ZBRFQtPmxlbmd0aCA8IHNpemVvZihzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yKSkgeworCiAJCQkvKiBMZW5ndGggaXMgdG9vIHNob3J0IHRvIGJlIGEgVjIuMCB0YWJsZSAqLwogCiAJCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sCkBAIC01MzgsMTEgKzUzNywxMSBAQAogCS8qIEdsb2JhbCBGQURUIHBvaW50ZXIgd2lsbCBwb2ludCB0byB0aGUgbmV3IGNvbW1vbiBWMi4wIEZBRFQgKi8KIAogCWFjcGlfZ2JsX0ZBRFQgPSBsb2NhbF9mYWR0OwotCWFjcGlfZ2JsX0ZBRFQtPmxlbmd0aCA9IHNpemVvZihGQURUX0RFU0NSSVBUT1IpOworCWFjcGlfZ2JsX0ZBRFQtPmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yKTsKIAogCS8qIEZyZWUgdGhlIG9yaWdpbmFsIHRhYmxlICovCiAKLQl0YWJsZV9kZXNjID0gYWNwaV9nYmxfdGFibGVfbGlzdHNbQUNQSV9UQUJMRV9GQURUXS5uZXh0OworCXRhYmxlX2Rlc2MgPSBhY3BpX2dibF90YWJsZV9saXN0c1tBQ1BJX1RBQkxFX0lEX0ZBRFRdLm5leHQ7CiAJYWNwaV90Yl9kZWxldGVfc2luZ2xlX3RhYmxlKHRhYmxlX2Rlc2MpOwogCiAJLyogSW5zdGFsbCB0aGUgbmV3IHRhYmxlICovCkBAIC01NTAsNyArNTQ5LDcgQEAKIAl0YWJsZV9kZXNjLT5wb2ludGVyID0KIAkgICAgQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIsIGFjcGlfZ2JsX0ZBRFQpOwogCXRhYmxlX2Rlc2MtPmFsbG9jYXRpb24gPSBBQ1BJX01FTV9BTExPQ0FURUQ7Ci0JdGFibGVfZGVzYy0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2Mik7CisJdGFibGVfZGVzYy0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IpOwogCiAJLyogRHVtcCB0aGUgZW50aXJlIEZBRFQgKi8KIApAQCAtNTgwLDcgKzU3OSw3IEBACiBhY3BpX3N0YXR1cyBhY3BpX3RiX2J1aWxkX2NvbW1vbl9mYWNzKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKnRhYmxlX2luZm8pCiB7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9idWlsZF9jb21tb25fZmFjcyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfYnVpbGRfY29tbW9uX2ZhY3MpOwogCiAJLyogQWJzb2x1dGUgbWluaW11bSBsZW5ndGggaXMgMjQsIGJ1dCB0aGUgQUNQSSBzcGVjIHNheXMgNjQgKi8KIApAQCAtNjAzLDYgKzYwMiw3IEBACiAJaWYgKChhY3BpX2dibF9SU0RQLT5yZXZpc2lvbiA8IDIpIHx8CiAJICAgIChhY3BpX2dibF9GQUNTLT5sZW5ndGggPCAzMikgfHwKIAkgICAgKCEoYWNwaV9nYmxfRkFDUy0+eGZpcm13YXJlX3dha2luZ192ZWN0b3IpKSkgeworCiAJCS8qIEFDUEkgMS4wIEZBQ1Mgb3Igc2hvcnQgdGFibGUgb3Igb3B0aW9uYWwgWF8gZmllbGQgaXMgemVybyAqLwogCiAJCWFjcGlfZ2JsX2NvbW1vbl9mQUNTLmZpcm13YXJlX3dha2luZ192ZWN0b3IgPSBBQ1BJX0NBU1RfUFRSKHU2NCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJnZXQuYyBiL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJnZXQuYwppbmRleCAwOWI0ZWU2Li45OWVhY2NlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RiZ2V0LmMKKysrIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90YmdldC5jCkBAIC03OCw3ICs3OCw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciBoZWFkZXI7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9nZXRfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2dldF90YWJsZSk7CiAKIAkvKiBHZXQgdGhlIGhlYWRlciBpbiBvcmRlciB0byBnZXQgc2lnbmF0dXJlIGFuZCB0YWJsZSBzaXplICovCiAKQEAgLTEyNCw3ICsxMjQsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqaGVhZGVyID0gTlVMTDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2dldF90YWJsZV9oZWFkZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2dldF90YWJsZV9oZWFkZXIpOwogCiAJLyoKIAkgKiBGbGFncyBjb250YWlucyB0aGUgY3VycmVudCBwcm9jZXNzb3IgbW9kZSAoVmlydHVhbCBvciBQaHlzaWNhbApAQCAtMTQ4LDYgKzE0OCwxMCBAQAogCQkJCQkgICAgc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciksCiAJCQkJCSAgICAodm9pZCAqKSZoZWFkZXIpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCUFDUElfRVJST1IoKEFFX0lORk8sCisJCQkJICAgICJDb3VsZCBub3QgbWFwIG1lbW9yeSBhdCAlOC44WCU4LjhYIGZvciB0YWJsZSBoZWFkZXIiLAorCQkJCSAgICBBQ1BJX0ZPUk1BVF9VSU5UNjQoYWRkcmVzcy0+cG9pbnRlci4KKwkJCQkJCSAgICAgICBwaHlzaWNhbCkpKTsKIAkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQl9CiAKQEAgLTE5OCw3ICsyMDIsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2dldF90YWJsZV9ib2R5Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh0Yl9nZXRfdGFibGVfYm9keSk7CiAKIAlpZiAoIXRhYmxlX2luZm8gfHwgIWFkZHJlc3MpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwpAQCAtMjA4LDYgKzIxMiw3IEBACiAKIAlzdGF0dXMgPSBhY3BpX3RiX3RhYmxlX292ZXJyaWRlKGhlYWRlciwgdGFibGVfaW5mbyk7CiAJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJLyogVGFibGUgd2FzIG92ZXJyaWRkZW4gYnkgdGhlIGhvc3QgT1MgKi8KIAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKQEAgLTI0MSw3ICsyNDYsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9wb2ludGVyIGFkZHJlc3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl90YWJsZV9vdmVycmlkZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfdGFibGVfb3ZlcnJpZGUpOwogCiAJLyoKIAkgKiBUaGUgT1NMIHdpbGwgZXhhbWluZSB0aGUgaGVhZGVyIGFuZCBkZWNpZGUgd2hldGhlciB0byBvdmVycmlkZSB0aGlzCkBAIC0yNTAsNiArMjU1LDcgQEAKIAkgKi8KIAlzdGF0dXMgPSBhY3BpX29zX3RhYmxlX292ZXJyaWRlKGhlYWRlciwgJm5ld190YWJsZSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisKIAkJLyogU29tZSBzZXZlcmUgZXJyb3IgZnJvbSB0aGUgT1NMLCBidXQgd2UgYmFzaWNhbGx5IGlnbm9yZSBpdCAqLwogCiAJCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsCkBAIC0yNTgsNiArMjY0LDcgQEAKIAl9CiAKIAlpZiAoIW5ld190YWJsZSkgeworCiAJCS8qIE5vIHRhYmxlIG92ZXJyaWRlICovCiAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX0FDUElfVEFCTEVTKTsKQEAgLTMxMSw3ICszMTgsNyBAQAogCXU4IGFsbG9jYXRpb247CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9nZXRfdGhpc190YWJsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfZ2V0X3RoaXNfdGFibGUpOwogCiAJLyoKIAkgKiBGbGFncyBjb250YWlucyB0aGUgY3VycmVudCBwcm9jZXNzb3IgbW9kZSAoVmlydHVhbCBvciBQaHlzaWNhbApAQCAtMzIzLDcgKzMzMCw3IEBACiAKIAkJLyogUG9pbnRlciBtYXRjaGVzIHByb2Nlc3NvciBtb2RlLCBjb3B5IHRoZSB0YWJsZSB0byBhIG5ldyBidWZmZXIgKi8KIAotCQlmdWxsX3RhYmxlID0gQUNQSV9NRU1fQUxMT0NBVEUoaGVhZGVyLT5sZW5ndGgpOworCQlmdWxsX3RhYmxlID0gQUNQSV9BTExPQ0FURShoZWFkZXItPmxlbmd0aCk7CiAJCWlmICghZnVsbF90YWJsZSkgewogCQkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCQkgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSB0YWJsZSBtZW1vcnkgZm9yIFslNC40c10gbGVuZ3RoICVYIiwKQEAgLTM3NiwxMSArMzgzLDEyIEBACiAJICogVmFsaWRhdGUgY2hlY2tzdW0gZm9yIF9tb3N0XyB0YWJsZXMsCiAJICogZXZlbiB0aGUgb25lcyB3aG9zZSBzaWduYXR1cmUgd2UgZG9uJ3QgcmVjb2duaXplCiAJICovCi0JaWYgKHRhYmxlX2luZm8tPnR5cGUgIT0gQUNQSV9UQUJMRV9GQUNTKSB7CisJaWYgKHRhYmxlX2luZm8tPnR5cGUgIT0gQUNQSV9UQUJMRV9JRF9GQUNTKSB7CiAJCXN0YXR1cyA9IGFjcGlfdGJfdmVyaWZ5X3RhYmxlX2NoZWNrc3VtKGZ1bGxfdGFibGUpOwogCiAjaWYgKCFBQ1BJX0NIRUNLU1VNX0FCT1JUKQogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwogCQkJLyogSWdub3JlIHRoZSBlcnJvciBpZiBjb25maWd1cmF0aW9uIHNheXMgc28gKi8KIAogCQkJc3RhdHVzID0gQUVfT0s7CkBAIC00MDksNyArNDE3LDcgQEAKICAqCiAgKiBQQVJBTUVURVJTOiAgdGFibGVfdHlwZSAgICAgIC0gb25lIG9mIHRoZSBkZWZpbmVkIHRhYmxlIHR5cGVzCiAgKiAgICAgICAgICAgICAgSW5zdGFuY2UgICAgICAgIC0gV2hpY2ggdGFibGUgb2YgdGhpcyB0eXBlCi0gKiAgICAgICAgICAgICAgdGFibGVfcHRyX2xvYyAgIC0gcG9pbnRlciB0byBsb2NhdGlvbiB0byBwbGFjZSB0aGUgcG9pbnRlciBmb3IKKyAqICAgICAgICAgICAgICByZXR1cm5fdGFibGUgICAgLSBwb2ludGVyIHRvIGxvY2F0aW9uIHRvIHBsYWNlIHRoZSBwb2ludGVyIGZvcgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMKQEAgLTQyMCw1NyArNDI4LDM0IEBACiAKIGFjcGlfc3RhdHVzCiBhY3BpX3RiX2dldF90YWJsZV9wdHIoYWNwaV90YWJsZV90eXBlIHRhYmxlX3R5cGUsCi0JCSAgICAgIHUzMiBpbnN0YW5jZSwgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICoqdGFibGVfcHRyX2xvYykKKwkJICAgICAgdTMyIGluc3RhbmNlLCBzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKipyZXR1cm5fdGFibGUpCiB7CiAJc3RydWN0IGFjcGlfdGFibGVfZGVzYyAqdGFibGVfZGVzYzsKIAl1MzIgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2dldF90YWJsZV9wdHIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2dldF90YWJsZV9wdHIpOwogCi0JaWYgKCFhY3BpX2dibF9EU0RUKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19BQ1BJX1RBQkxFUyk7Ci0JfQotCi0JaWYgKHRhYmxlX3R5cGUgPiBBQ1BJX1RBQkxFX01BWCkgeworCWlmICh0YWJsZV90eXBlID4gQUNQSV9UQUJMRV9JRF9NQVgpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAotCS8qCi0JICogRm9yIGFsbCB0YWJsZSB0eXBlcyAoU2luZ2xlL011bHRpcGxlKSwgdGhlIGZpcnN0Ci0JICogaW5zdGFuY2UgaXMgYWx3YXlzIGluIHRoZSBsaXN0IGhlYWQuCi0JICovCi0JaWYgKGluc3RhbmNlID09IDEpIHsKLQkJLyogR2V0IHRoZSBmaXJzdCAqLwotCi0JCSp0YWJsZV9wdHJfbG9jID0gTlVMTDsKLQkJaWYgKGFjcGlfZ2JsX3RhYmxlX2xpc3RzW3RhYmxlX3R5cGVdLm5leHQpIHsKLQkJCSp0YWJsZV9wdHJfbG9jID0KLQkJCSAgICBhY3BpX2dibF90YWJsZV9saXN0c1t0YWJsZV90eXBlXS5uZXh0LT5wb2ludGVyOwotCQl9Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7Ci0JfQotCi0JLyogQ2hlY2sgZm9yIGluc3RhbmNlIG91dCBvZiByYW5nZSAqLworCS8qIENoZWNrIGZvciBpbnN0YW5jZSBvdXQgb2YgcmFuZ2Ugb2YgdGhlIGN1cnJlbnQgdGFibGUgY291bnQgKi8KIAogCWlmIChpbnN0YW5jZSA+IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW3RhYmxlX3R5cGVdLmNvdW50KSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT1RfRVhJU1QpOwogCX0KIAotCS8qIFdhbGsgdGhlIGxpc3QgdG8gZ2V0IHRoZSBkZXNpcmVkIHRhYmxlCi0JICogU2luY2UgdGhlIGlmIChJbnN0YW5jZSA9PSAxKSBjaGVjayBhYm92ZSBjaGVja2VkIGZvciB0aGUKLQkgKiBmaXJzdCB0YWJsZSwgc2V0dGluZyB0YWJsZV9kZXNjIGVxdWFsIHRvIHRoZSAuTmV4dCBtZW1iZXIKLQkgKiBpcyBhY3R1YWxseSBwb2ludGluZyB0byB0aGUgc2Vjb25kIHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQotCSAqIG5lZWQgdG8gd2FsayBmcm9tIHRoZSAybmQgdGFibGUgdW50aWwgd2UgcmVhY2ggdGhlIEluc3RhbmNlCi0JICogdGhhdCB0aGUgdXNlciBpcyBsb29raW5nIGZvciBhbmQgcmV0dXJuIGl0cyB0YWJsZSBwb2ludGVyLgorCS8qCisJICogV2FsayB0aGUgbGlzdCB0byBnZXQgdGhlIGRlc2lyZWQgdGFibGUKKwkgKiBOb3RlOiBJbnN0YW5jZSBpcyBvbmUtYmFzZWQKIAkgKi8KIAl0YWJsZV9kZXNjID0gYWNwaV9nYmxfdGFibGVfbGlzdHNbdGFibGVfdHlwZV0ubmV4dDsKLQlmb3IgKGkgPSAyOyBpIDwgaW5zdGFuY2U7IGkrKykgeworCWZvciAoaSA9IDE7IGkgPCBpbnN0YW5jZTsgaSsrKSB7CiAJCXRhYmxlX2Rlc2MgPSB0YWJsZV9kZXNjLT5uZXh0OwogCX0KIAogCS8qIFdlIGFyZSBub3cgcG9pbnRpbmcgdG8gdGhlIHJlcXVlc3RlZCB0YWJsZSdzIGRlc2NyaXB0b3IgKi8KIAotCSp0YWJsZV9wdHJfbG9jID0gdGFibGVfZGVzYy0+cG9pbnRlcjsKLQorCSpyZXR1cm5fdGFibGUgPSB0YWJsZV9kZXNjLT5wb2ludGVyOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RiZ2V0YWxsLmMgYi9kcml2ZXJzL2FjcGkvdGFibGVzL3RiZ2V0YWxsLmMKaW5kZXggMTM0ZTVkYy4uYWQ5ODIxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3RhYmxlcy90YmdldGFsbC5jCisrKyBiL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJnZXRhbGwuYwpAQCAtNzcsNyArNzcsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgaGVhZGVyOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidGJfZ2V0X3ByaW1hcnlfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2dldF9wcmltYXJ5X3RhYmxlKTsKIAogCS8qIElnbm9yZSBhIE5VTEwgYWRkcmVzcyBpbiB0aGUgUlNEVCAqLwogCkBAIC0xNDAsNyArMTQwLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyIGhlYWRlcjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfU1RSKCJ0Yl9nZXRfc2Vjb25kYXJ5X3RhYmxlIiwgc2lnbmF0dXJlKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1NUUih0Yl9nZXRfc2Vjb25kYXJ5X3RhYmxlLCBzaWduYXR1cmUpOwogCiAJLyogR2V0IHRoZSBoZWFkZXIgaW4gb3JkZXIgdG8gbWF0Y2ggdGhlIHNpZ25hdHVyZSAqLwogCkBAIC0xNTEsNyArMTUxLDcgQEAKIAogCS8qIFNpZ25hdHVyZSBtdXN0IG1hdGNoIHJlcXVlc3QgKi8KIAotCWlmIChBQ1BJX1NUUk5DTVAoaGVhZGVyLnNpZ25hdHVyZSwgc2lnbmF0dXJlLCBBQ1BJX05BTUVfU0laRSkpIHsKKwlpZiAoIUFDUElfQ09NUEFSRV9OQU1FKGhlYWRlci5zaWduYXR1cmUsIHNpZ25hdHVyZSkpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKIAkJCSAgICAiSW5jb3JyZWN0IHRhYmxlIHNpZ25hdHVyZSAtIHdhbnRlZCBbJXNdIGZvdW5kIFslNC40c10iLAogCQkJICAgIHNpZ25hdHVyZSwgaGVhZGVyLnNpZ25hdHVyZSkpOwpAQCAtMjA3LDcgKzIwNyw3IEBACiAJc3RydWN0IGFjcGlfdGFibGVfZGVzYyB0YWJsZV9pbmZvOwogCXN0cnVjdCBhY3BpX3BvaW50ZXIgYWRkcmVzczsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2dldF9yZXF1aXJlZF90YWJsZXMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2dldF9yZXF1aXJlZF90YWJsZXMpOwogCiAJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLCAiJWQgQUNQSSB0YWJsZXMgaW4gUlNEVFxuIiwKIAkJCSAgYWNwaV9nYmxfcnNkdF90YWJsZV9jb3VudCkpOwpAQCAtMjIzLDYgKzIyMyw3IEBACiAJICogYW55IFNTRFRzLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBhY3BpX2dibF9yc2R0X3RhYmxlX2NvdW50OyBpKyspIHsKKwogCQkvKiBHZXQgdGhlIHRhYmxlIGFkZHJlc3MgZnJvbSB0aGUgY29tbW9uIGludGVybmFsIFhTRFQgKi8KIAogCQlhZGRyZXNzLnBvaW50ZXIudmFsdWUgPSBhY3BpX2dibF9YU0RULT50YWJsZV9vZmZzZXRfZW50cnlbaV07CkBAIC0zMDUsNiArMzA2LDYgQEAKIAogCS8qIEFsd2F5cyBkZWxldGUgdGhlIFJTRFAgbWFwcGluZywgd2UgYXJlIGRvbmUgd2l0aCBpdCAqLwogCi0JYWNwaV90Yl9kZWxldGVfdGFibGVzX2J5X3R5cGUoQUNQSV9UQUJMRV9SU0RQKTsKKwlhY3BpX3RiX2RlbGV0ZV90YWJsZXNfYnlfdHlwZShBQ1BJX1RBQkxFX0lEX1JTRFApOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3RhYmxlcy90Ymluc3RhbC5jIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90Ymluc3RhbC5jCmluZGV4IDdmZmQwZmQuLjdjYTJkZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJpbnN0YWwuYworKysgYi9kcml2ZXJzL2FjcGkvdGFibGVzL3RiaW5zdGFsLmMKQEAgLTczLDE3ICs3MywxOCBAQAogewogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX21hdGNoX3NpZ25hdHVyZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfbWF0Y2hfc2lnbmF0dXJlKTsKIAogCS8qIFNlYXJjaCBmb3IgYSBzaWduYXR1cmUgbWF0Y2ggYW1vbmcgdGhlIGtub3duIHRhYmxlIHR5cGVzICovCiAKLQlmb3IgKGkgPSAwOyBpIDwgTlVNX0FDUElfVEFCTEVfVFlQRVM7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCAoQUNQSV9UQUJMRV9JRF9NQVggKyAxKTsgaSsrKSB7CiAJCWlmICghKGFjcGlfZ2JsX3RhYmxlX2RhdGFbaV0uZmxhZ3MgJiBzZWFyY2hfdHlwZSkpIHsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKCFBQ1BJX1NUUk5DTVAoc2lnbmF0dXJlLCBhY3BpX2dibF90YWJsZV9kYXRhW2ldLnNpZ25hdHVyZSwKIAkJCQkgIGFjcGlfZ2JsX3RhYmxlX2RhdGFbaV0uc2lnX2xlbmd0aCkpIHsKKwogCQkJLyogRm91bmQgYSBzaWduYXR1cmUgbWF0Y2gsIHJldHVybiBpbmRleCBpZiByZXF1ZXN0ZWQgKi8KIAogCQkJaWYgKHRhYmxlX2luZm8pIHsKQEAgLTEyMiw3ICsxMjMsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2luc3RhbGxfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2luc3RhbGxfdGFibGUpOwogCiAJLyogTG9jayB0YWJsZXMgd2hpbGUgaW5zdGFsbGluZyAqLwogCkBAIC0xODcsNyArMTg4LDcgQEAKIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlX2hlYWRlcjsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9yZWNvZ25pemVfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX3JlY29nbml6ZV90YWJsZSk7CiAKIAkvKiBFbnN1cmUgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgdGFibGUgcG9pbnRlciAqLwogCkBAIC0yMTgsNyArMjE5LDYgQEAKIAkvKiBSZXR1cm4gdGhlIHRhYmxlIHR5cGUgYW5kIGxlbmd0aCB2aWEgdGhlIGluZm8gc3RydWN0ICovCiAKIAl0YWJsZV9pbmZvLT5sZW5ndGggPSAoYWNwaV9zaXplKSB0YWJsZV9oZWFkZXItPmxlbmd0aDsKLQogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCkBAIC0yNDMsMTEgKzI0MywxMSBAQAogCXN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKnRhYmxlX2Rlc2M7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoInRiX2luaXRfdGFibGVfZGVzY3JpcHRvciIsIHRhYmxlX3R5cGUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKHRiX2luaXRfdGFibGVfZGVzY3JpcHRvciwgdGFibGVfdHlwZSk7CiAKIAkvKiBBbGxvY2F0ZSBhIGRlc2NyaXB0b3IgZm9yIHRoaXMgdGFibGUgKi8KIAotCXRhYmxlX2Rlc2MgPSBBQ1BJX01FTV9DQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MpKTsKKwl0YWJsZV9kZXNjID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MpKTsKIAlpZiAoIXRhYmxlX2Rlc2MpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQpAQCAtMjc0LDcgKzI3NCw3IEBACiAJCSAqIGF0IHRoaXMgbG9jYXRpb24sIHNvIHJldHVybiBhbiBlcnJvci4KIAkJICovCiAJCWlmIChsaXN0X2hlYWQtPm5leHQpIHsKLQkJCUFDUElfTUVNX0ZSRUUodGFibGVfZGVzYyk7CisJCQlBQ1BJX0ZSRUUodGFibGVfZGVzYyk7CiAJCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQUxSRUFEWV9FWElTVFMpOwogCQl9CiAKQEAgLTMxMiwxNSArMzEyLDE0IEBACiAKIAkvKiBGaW5pc2ggaW5pdGlhbGl6YXRpb24gb2YgdGhlIHRhYmxlIGRlc2NyaXB0b3IgKi8KIAorCXRhYmxlX2Rlc2MtPmxvYWRlZF9pbnRvX25hbWVzcGFjZSA9IEZBTFNFOwogCXRhYmxlX2Rlc2MtPnR5cGUgPSAodTgpIHRhYmxlX3R5cGU7CiAJdGFibGVfZGVzYy0+cG9pbnRlciA9IHRhYmxlX2luZm8tPnBvaW50ZXI7CiAJdGFibGVfZGVzYy0+bGVuZ3RoID0gdGFibGVfaW5mby0+bGVuZ3RoOwogCXRhYmxlX2Rlc2MtPmFsbG9jYXRpb24gPSB0YWJsZV9pbmZvLT5hbGxvY2F0aW9uOwogCXRhYmxlX2Rlc2MtPmFtbF9zdGFydCA9ICh1OCAqKSAodGFibGVfZGVzYy0+cG9pbnRlciArIDEpLAotCSAgICB0YWJsZV9kZXNjLT5hbWxfbGVuZ3RoID0gKHUzMikgKHRhYmxlX2Rlc2MtPmxlbmd0aCAtCi0JCQkJCSAgICAodTMyKSBzaXplb2Yoc3RydWN0Ci0JCQkJCQkJIGFjcGlfdGFibGVfaGVhZGVyKSk7Ci0JdGFibGVfZGVzYy0+bG9hZGVkX2ludG9fbmFtZXNwYWNlID0gRkFMU0U7CisJICAgIHRhYmxlX2Rlc2MtPmFtbF9sZW5ndGggPSAodTMyKQorCSAgICAodGFibGVfZGVzYy0+bGVuZ3RoIC0gKHUzMikgc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlcikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIGFwcHJvcHJpYXRlIGdsb2JhbCBwb2ludGVyIChpZiB0aGVyZSBpcyBvbmUpIHRvIHBvaW50IHRvIHRoZQpAQCAtMzM1LDcgKzMzNCw2IEBACiAKIAl0YWJsZV9pbmZvLT5vd25lcl9pZCA9IHRhYmxlX2Rlc2MtPm93bmVyX2lkOwogCXRhYmxlX2luZm8tPmluc3RhbGxlZF9kZXNjID0gdGFibGVfZGVzYzsKLQogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CiAKQEAgLTM1OSw3ICszNTcsNyBAQAogCSAqIEZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgQUNQSSB0YWJsZXMKIAkgKiBNZW1vcnkgY2FuIGVpdGhlciBiZSBtYXBwZWQgb3IgYWxsb2NhdGVkCiAJICovCi0JZm9yICh0eXBlID0gMDsgdHlwZSA8IE5VTV9BQ1BJX1RBQkxFX1RZUEVTOyB0eXBlKyspIHsKKwlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgKEFDUElfVEFCTEVfSURfTUFYICsgMSk7IHR5cGUrKykgewogCQlhY3BpX3RiX2RlbGV0ZV90YWJsZXNfYnlfdHlwZSh0eXBlKTsKIAl9CiB9CkBAIC0zODMsOSArMzgxLDkgQEAKIAl1MzIgY291bnQ7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMigidGJfZGVsZXRlX3RhYmxlc19ieV90eXBlIiwgdHlwZSk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIodGJfZGVsZXRlX3RhYmxlc19ieV90eXBlLCB0eXBlKTsKIAotCWlmICh0eXBlID4gQUNQSV9UQUJMRV9NQVgpIHsKKwlpZiAodHlwZSA+IEFDUElfVEFCTEVfSURfTUFYKSB7CiAJCXJldHVybl9WT0lEOwogCX0KIApAQCAtMzk2LDI4ICszOTQsMjggQEAKIAkvKiBDbGVhciB0aGUgYXBwcm9wcmlhdGUgInR5cGVkIiBnbG9iYWwgdGFibGUgcG9pbnRlciAqLwogCiAJc3dpdGNoICh0eXBlKSB7Ci0JY2FzZSBBQ1BJX1RBQkxFX1JTRFA6CisJY2FzZSBBQ1BJX1RBQkxFX0lEX1JTRFA6CiAJCWFjcGlfZ2JsX1JTRFAgPSBOVUxMOwogCQlicmVhazsKIAotCWNhc2UgQUNQSV9UQUJMRV9EU0RUOgorCWNhc2UgQUNQSV9UQUJMRV9JRF9EU0RUOgogCQlhY3BpX2dibF9EU0RUID0gTlVMTDsKIAkJYnJlYWs7CiAKLQljYXNlIEFDUElfVEFCTEVfRkFEVDoKKwljYXNlIEFDUElfVEFCTEVfSURfRkFEVDoKIAkJYWNwaV9nYmxfRkFEVCA9IE5VTEw7CiAJCWJyZWFrOwogCi0JY2FzZSBBQ1BJX1RBQkxFX0ZBQ1M6CisJY2FzZSBBQ1BJX1RBQkxFX0lEX0ZBQ1M6CiAJCWFjcGlfZ2JsX0ZBQ1MgPSBOVUxMOwogCQlicmVhazsKIAotCWNhc2UgQUNQSV9UQUJMRV9YU0RUOgorCWNhc2UgQUNQSV9UQUJMRV9JRF9YU0RUOgogCQlhY3BpX2dibF9YU0RUID0gTlVMTDsKIAkJYnJlYWs7CiAKLQljYXNlIEFDUElfVEFCTEVfU1NEVDoKLQljYXNlIEFDUElfVEFCTEVfUFNEVDoKKwljYXNlIEFDUElfVEFCTEVfSURfU1NEVDoKKwljYXNlIEFDUElfVEFCTEVfSURfUFNEVDoKIAlkZWZhdWx0OgogCQlicmVhazsKIAl9CkBAIC00NzEsNyArNDY5LDcgQEAKIAogCWNhc2UgQUNQSV9NRU1fQUxMT0NBVEVEOgogCi0JCUFDUElfTUVNX0ZSRUUodGFibGVfZGVzYy0+cG9pbnRlcik7CisJCUFDUElfRlJFRSh0YWJsZV9kZXNjLT5wb2ludGVyKTsKIAkJYnJlYWs7CiAKIAljYXNlIEFDUElfTUVNX01BUFBFRDoKQEAgLTUwMyw3ICs1MDEsNyBAQAogewogCXN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKm5leHRfZGVzYzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ0Yl91bmluc3RhbGxfdGFibGUiLCB0YWJsZV9kZXNjKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUih0Yl91bmluc3RhbGxfdGFibGUsIHRhYmxlX2Rlc2MpOwogCiAJaWYgKCF0YWJsZV9kZXNjKSB7CiAJCXJldHVybl9QVFIoTlVMTCk7CkBAIC01MzAsNyArNTI4LDcgQEAKIAkvKiBGcmVlIHRoZSB0YWJsZSBkZXNjcmlwdG9yICovCiAKIAluZXh0X2Rlc2MgPSB0YWJsZV9kZXNjLT5uZXh0OwotCUFDUElfTUVNX0ZSRUUodGFibGVfZGVzYyk7CisJQUNQSV9GUkVFKHRhYmxlX2Rlc2MpOwogCiAJLyogUmV0dXJuIHBvaW50ZXIgdG8gdGhlIG5leHQgZGVzY3JpcHRvciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RicnNkdC5jIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90YnJzZHQuYwppbmRleCA0ZDMwODIyLi5hYmNiMDhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RicnNkdC5jCisrKyBiL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJyc2R0LmMKQEAgLTY0LDcgKzY0LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IHJzZHBfZGVzY3JpcHRvciAqcnNkcDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX3ZlcmlmeV9yc2RwIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh0Yl92ZXJpZnlfcnNkcCk7CiAKIAlzd2l0Y2ggKGFkZHJlc3MtPnBvaW50ZXJfdHlwZSkgewogCWNhc2UgQUNQSV9MT0dJQ0FMX1BPSU5URVI6CkBAIC03OCw3ICs3OCw3IEBACiAJCSAqLwogCQlzdGF0dXMgPSBhY3BpX29zX21hcF9tZW1vcnkoYWRkcmVzcy0+cG9pbnRlci5waHlzaWNhbCwKIAkJCQkJICAgIHNpemVvZihzdHJ1Y3QgcnNkcF9kZXNjcmlwdG9yKSwKLQkJCQkJICAgICh2b2lkICopJnJzZHApOworCQkJCQkgICAgQUNQSV9DQVNUX1BUUih2b2lkLCAmcnNkcCkpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQl9CkBAIC05NSwxNSArOTUsMjAgQEAKIAkJZ290byBjbGVhbnVwOwogCX0KIAotCS8qIFRoZSBSU0RQIHN1cHBsaWVkIGlzIE9LICovCisJLyogUlNEUCBpcyBvay4gSW5pdCB0aGUgdGFibGUgaW5mbyAqLwogCiAJdGFibGVfaW5mby5wb2ludGVyID0gQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIsIHJzZHApOwogCXRhYmxlX2luZm8ubGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCByc2RwX2Rlc2NyaXB0b3IpOwotCXRhYmxlX2luZm8uYWxsb2NhdGlvbiA9IEFDUElfTUVNX01BUFBFRDsKKworCWlmIChhZGRyZXNzLT5wb2ludGVyX3R5cGUgPT0gQUNQSV9QSFlTSUNBTF9QT0lOVEVSKSB7CisJCXRhYmxlX2luZm8uYWxsb2NhdGlvbiA9IEFDUElfTUVNX01BUFBFRDsKKwl9IGVsc2UgeworCQl0YWJsZV9pbmZvLmFsbG9jYXRpb24gPSBBQ1BJX01FTV9OT1RfQUxMT0NBVEVEOworCX0KIAogCS8qIFNhdmUgdGhlIHRhYmxlIHBvaW50ZXJzIGFuZCBhbGxvY2F0aW9uIGluZm8gKi8KIAotCXN0YXR1cyA9IGFjcGlfdGJfaW5pdF90YWJsZV9kZXNjcmlwdG9yKEFDUElfVEFCTEVfUlNEUCwgJnRhYmxlX2luZm8pOworCXN0YXR1cyA9IGFjcGlfdGJfaW5pdF90YWJsZV9kZXNjcmlwdG9yKEFDUElfVEFCTEVfSURfUlNEUCwgJnRhYmxlX2luZm8pOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlnb3RvIGNsZWFudXA7CiAJfQpAQCAtMTc0LDIyICsxNzksMjAgQEAKIAogYWNwaV9zdGF0dXMgYWNwaV90Yl92YWxpZGF0ZV9yc2R0KHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGVfcHRyKQogewotCWludCBub19tYXRjaDsKKwljaGFyICpzaWduYXR1cmU7CiAKIAlBQ1BJX0ZVTkNUSU9OX0VOVFJZKCk7CiAKLQkvKgotCSAqIFNlYXJjaCBmb3IgYXBwcm9wcmlhdGUgc2lnbmF0dXJlLCBSU0RUIG9yIFhTRFQKLQkgKi8KKwkvKiBTZWFyY2ggZm9yIGFwcHJvcHJpYXRlIHNpZ25hdHVyZSwgUlNEVCBvciBYU0RUICovCisKIAlpZiAoYWNwaV9nYmxfcm9vdF90YWJsZV90eXBlID09IEFDUElfVEFCTEVfVFlQRV9SU0RUKSB7Ci0JCW5vX21hdGNoID0gQUNQSV9TVFJOQ01QKChjaGFyICopdGFibGVfcHRyLCBSU0RUX1NJRywKLQkJCQkJc2l6ZW9mKFJTRFRfU0lHKSAtIDEpOworCQlzaWduYXR1cmUgPSBSU0RUX1NJRzsKIAl9IGVsc2UgewotCQlub19tYXRjaCA9IEFDUElfU1RSTkNNUCgoY2hhciAqKXRhYmxlX3B0ciwgWFNEVF9TSUcsCi0JCQkJCXNpemVvZihYU0RUX1NJRykgLSAxKTsKKwkJc2lnbmF0dXJlID0gWFNEVF9TSUc7CiAJfQogCi0JaWYgKG5vX21hdGNoKSB7CisJaWYgKCFBQ1BJX0NPTVBBUkVfTkFNRSh0YWJsZV9wdHItPnNpZ25hdHVyZSwgc2lnbmF0dXJlKSkgeworCiAJCS8qIEludmFsaWQgUlNEVCBvciBYU0RUIHNpZ25hdHVyZSAqLwogCiAJCUFDUElfRVJST1IoKEFFX0lORk8sCkBAIC0xOTgsMTAgKzIwMSw4IEBACiAJCUFDUElfRFVNUF9CVUZGRVIoYWNwaV9nYmxfUlNEUCwgMjApOwogCiAJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIlJTRFQvWFNEVCBzaWduYXR1cmUgYXQgJVggKCVwKSBpcyBpbnZhbGlkIiwKLQkJCSAgICBhY3BpX2dibF9SU0RQLT5yc2R0X3BoeXNpY2FsX2FkZHJlc3MsCi0JCQkgICAgKHZvaWQgKikoYWNwaV9uYXRpdmVfdWludCkgYWNwaV9nYmxfUlNEUC0+Ci0JCQkgICAgcnNkdF9waHlzaWNhbF9hZGRyZXNzKSk7CisJCQkgICAgIlJTRFQvWFNEVCBzaWduYXR1cmUgYXQgJVggaXMgaW52YWxpZCIsCisJCQkgICAgYWNwaV9nYmxfUlNEUC0+cnNkdF9waHlzaWNhbF9hZGRyZXNzKSk7CiAKIAkJaWYgKGFjcGlfZ2JsX3Jvb3RfdGFibGVfdHlwZSA9PSBBQ1BJX1RBQkxFX1RZUEVfUlNEVCkgewogCQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkxvb2tpbmcgZm9yIFJTRFQiKSk7CkBAIC0yMzQsMTMgKzIzNSwxMyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV9wb2ludGVyIGFkZHJlc3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9nZXRfdGFibGVfcnNkdCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfZ2V0X3RhYmxlX3JzZHQpOwogCiAJLyogR2V0IHRoZSBSU0RUL1hTRFQgdmlhIHRoZSBSU0RQICovCiAKIAlhY3BpX3RiX2dldF9yc2R0X2FkZHJlc3MoJmFkZHJlc3MpOwogCi0JdGFibGVfaW5mby50eXBlID0gQUNQSV9UQUJMRV9YU0RUOworCXRhYmxlX2luZm8udHlwZSA9IEFDUElfVEFCTEVfSURfWFNEVDsKIAlzdGF0dXMgPSBhY3BpX3RiX2dldF90YWJsZSgmYWRkcmVzcywgJnRhYmxlX2luZm8pOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJX0VYQ0VQVElPTigoQUVfSU5GTywgc3RhdHVzLApAQCAtMjc0LDEyICsyNzUsMTMgQEAKIAogCS8qIFNhdmUgdGhlIHRhYmxlIHBvaW50ZXJzIGFuZCBhbGxvY2F0aW9uIGluZm8gKi8KIAotCXN0YXR1cyA9IGFjcGlfdGJfaW5pdF90YWJsZV9kZXNjcmlwdG9yKEFDUElfVEFCTEVfWFNEVCwgJnRhYmxlX2luZm8pOworCXN0YXR1cyA9IGFjcGlfdGJfaW5pdF90YWJsZV9kZXNjcmlwdG9yKEFDUElfVEFCTEVfSURfWFNEVCwgJnRhYmxlX2luZm8pOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIAl9CiAKLQlhY3BpX2dibF9YU0RUID0gQUNQSV9DQVNUX1BUUihYU0RUX0RFU0NSSVBUT1IsIHRhYmxlX2luZm8ucG9pbnRlcik7CisJYWNwaV9nYmxfWFNEVCA9CisJICAgIEFDUElfQ0FTVF9QVFIoc3RydWN0IHhzZHRfZGVzY3JpcHRvciwgdGFibGVfaW5mby5wb2ludGVyKTsKIAogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIlhTRFQgbG9jYXRlZCBhdCAlcFxuIiwgYWNwaV9nYmxfWFNEVCkpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3RhYmxlcy90YnV0aWxzLmMgYi9kcml2ZXJzL2FjcGkvdGFibGVzL3RidXRpbHMuYwppbmRleCBiYzU3MTU5Li4yMDlhNDAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RidXRpbHMuYworKysgYi9kcml2ZXJzL2FjcGkvdGFibGVzL3RidXRpbHMuYwpAQCAtNzEsNyArNzEsNyBAQAogewogCXN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKnRhYmxlX2Rlc2M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9pc190YWJsZV9pbnN0YWxsZWQiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2lzX3RhYmxlX2luc3RhbGxlZCk7CiAKIAkvKiBHZXQgdGhlIGxpc3QgZGVzY3JpcHRvciBhbmQgZmlyc3QgdGFibGUgZGVzY3JpcHRvciAqLwogCkBAIC05NiwxMCArOTYsMTEgQEAKIAkJICAgICghQUNQSV9NRU1DTVAKIAkJICAgICAodGFibGVfZGVzYy0+cG9pbnRlciwgbmV3X3RhYmxlX2Rlc2MtPnBvaW50ZXIsCiAJCSAgICAgIG5ld190YWJsZV9kZXNjLT5wb2ludGVyLT5sZW5ndGgpKSkgeworCiAJCQkvKiBNYXRjaDogdGhpcyB0YWJsZSBpcyBhbHJlYWR5IGluc3RhbGxlZCAqLwogCiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1RBQkxFUywKLQkJCQkJICAiVGFibGUgWyU0LjRzXSBhbHJlYWR5IGluc3RhbGxlZDogUmV2ICVYIG9lbV90YWJsZV9pZCBbJTguOHNdXG4iLAorCQkJCQkgICJUYWJsZSBbJTQuNHNdIGFscmVhZHkgaW5zdGFsbGVkOiBSZXYgJVggT2VtVGFibGVJZCBbJTguOHNdXG4iLAogCQkJCQkgIG5ld190YWJsZV9kZXNjLT5wb2ludGVyLT5zaWduYXR1cmUsCiAJCQkJCSAgbmV3X3RhYmxlX2Rlc2MtPnBvaW50ZXItPnJldmlzaW9uLAogCQkJCQkgIG5ld190YWJsZV9kZXNjLT5wb2ludGVyLT4KQEAgLTE1OSwxMiArMTYwLDggQEAKIAogCUFDUElfTU9WRV8zMl9UT18zMigmc2lnbmF0dXJlLCB0YWJsZV9oZWFkZXItPnNpZ25hdHVyZSk7CiAJaWYgKCFhY3BpX3V0X3ZhbGlkX2FjcGlfbmFtZShzaWduYXR1cmUpKSB7Ci0JCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIlRhYmxlIHNpZ25hdHVyZSBhdCAlcCBbJXBdIGhhcyBpbnZhbGlkIGNoYXJhY3RlcnMiLAotCQkJICAgIHRhYmxlX2hlYWRlciwgJnNpZ25hdHVyZSkpOwotCi0JCUFDUElfV0FSTklORygoQUVfSU5GTywgIkludmFsaWQgdGFibGUgc2lnbmF0dXJlIGZvdW5kOiBbJTQuNHNdIiwKLQkJCSAgICAgIEFDUElfQ0FTVF9QVFIoY2hhciwgJnNpZ25hdHVyZSkpKTsKKwkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkludmFsaWQgdGFibGUgc2lnbmF0dXJlIDB4JTguOFgiLAorCQkJICAgIHNpZ25hdHVyZSkpOwogCiAJCUFDUElfRFVNUF9CVUZGRVIodGFibGVfaGVhZGVyLAogCQkJCSBzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyKSk7CkBAIC0xNzUsMTIgKzE3Miw5IEBACiAKIAlpZiAodGFibGVfaGVhZGVyLT5sZW5ndGggPCBzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyKSkgewogCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJICAgICJJbnZhbGlkIGxlbmd0aCBpbiB0YWJsZSBoZWFkZXIgJXAgbmFtZSAlNC40cyIsCi0JCQkgICAgdGFibGVfaGVhZGVyLCAoY2hhciAqKSZzaWduYXR1cmUpKTsKLQotCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sCi0JCQkgICAgICAiSW52YWxpZCB0YWJsZSBoZWFkZXIgbGVuZ3RoICgweCVYKSBmb3VuZCIsCi0JCQkgICAgICAodTMyKSB0YWJsZV9oZWFkZXItPmxlbmd0aCkpOworCQkJICAgICJJbnZhbGlkIGxlbmd0aCAweCVYIGluIHRhYmxlIHdpdGggc2lnbmF0dXJlICU0LjRzIiwKKwkJCSAgICAodTMyKSB0YWJsZV9oZWFkZXItPmxlbmd0aCwKKwkJCSAgICBBQ1BJX0NBU1RfUFRSKGNoYXIsICZzaWduYXR1cmUpKSk7CiAKIAkJQUNQSV9EVU1QX0JVRkZFUih0YWJsZV9oZWFkZXIsCiAJCQkJIHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIpKTsKQEAgLTE5Miw3MiArMTg2LDExOSBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX3RiX3ZlcmlmeV90YWJsZV9jaGVja3N1bQorICogRlVOQ1RJT046ICAgIGFjcGlfdGJfc3VtX3RhYmxlCiAgKgotICogUEFSQU1FVEVSUzogICp0YWJsZV9oZWFkZXIgICAgICAgICAgIC0gQUNQSSB0YWJsZSB0byB2ZXJpZnkKKyAqIFBBUkFNRVRFUlM6ICBCdWZmZXIgICAgICAgICAgICAgIC0gQnVmZmVyIHRvIHN1bQorICogICAgICAgICAgICAgIExlbmd0aCAgICAgICAgICAgICAgLSBTaXplIG9mIHRoZSBidWZmZXIKICAqCi0gKiBSRVRVUk46ICAgICAgOCBiaXQgY2hlY2tzdW0gb2YgdGFibGUKKyAqIFJFVFVSTjogICAgICA4IGJpdCBzdW0gb2YgYnVmZmVyCiAgKgotICogREVTQ1JJUFRJT046IERvZXMgYW4gOCBiaXQgY2hlY2tzdW0gb2YgdGFibGUgYW5kIHJldHVybnMgc3RhdHVzLiAgQSBjb3JyZWN0Ci0gKiAgICAgICAgICAgICAgdGFibGUgc2hvdWxkIGhhdmUgYSBjaGVja3N1bSBvZiAwLgorICogREVTQ1JJUFRJT046IENvbXB1dGVzIGFuIDggYml0IHN1bSBvZiB0aGUgYnVmZmVyKGxlbmd0aCkgYW5kIHJldHVybnMgaXQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotYWNwaV9zdGF0dXMKLWFjcGlfdGJfdmVyaWZ5X3RhYmxlX2NoZWNrc3VtKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqIHRhYmxlX2hlYWRlcikKK3U4IGFjcGlfdGJfc3VtX3RhYmxlKHZvaWQgKmJ1ZmZlciwgdTMyIGxlbmd0aCkKIHsKLQl1OCBjaGVja3N1bTsKLQlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKKwlhY3BpX25hdGl2ZV91aW50IGk7CisJdTggc3VtID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX3ZlcmlmeV90YWJsZV9jaGVja3N1bSIpOwotCi0JLyogQ29tcHV0ZSB0aGUgY2hlY2tzdW0gb24gdGhlIHRhYmxlICovCi0KLQljaGVja3N1bSA9Ci0JICAgIGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0odGFibGVfaGVhZGVyLCB0YWJsZV9oZWFkZXItPmxlbmd0aCk7Ci0KLQkvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbiAqLwotCi0JaWYgKGNoZWNrc3VtKSB7Ci0JCUFDUElfV0FSTklORygoQUVfSU5GTywKLQkJCSAgICAgICJJbnZhbGlkIGNoZWNrc3VtIGluIHRhYmxlIFslNC40c10gKCUwMlgsIHN1bSAlMDJYIGlzIG5vdCB6ZXJvKSIsCi0JCQkgICAgICB0YWJsZV9oZWFkZXItPnNpZ25hdHVyZSwKLQkJCSAgICAgICh1MzIpIHRhYmxlX2hlYWRlci0+Y2hlY2tzdW0sICh1MzIpIGNoZWNrc3VtKSk7Ci0KLQkJc3RhdHVzID0gQUVfQkFEX0NIRUNLU1VNOworCWlmICghYnVmZmVyIHx8ICFsZW5ndGgpIHsKKwkJcmV0dXJuICgwKTsKIAl9Ci0JcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkJc3VtID0gKHU4KSAoc3VtICsgKCh1OCAqKSBidWZmZXIpW2ldKTsKKwl9CisJcmV0dXJuIChzdW0pOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3RiX2dlbmVyYXRlX2NoZWNrc3VtCiAgKgotICogUEFSQU1FVEVSUzogIEJ1ZmZlciAgICAgICAgICAgICAgLSBCdWZmZXIgdG8gY2hlY2tzdW0KLSAqICAgICAgICAgICAgICBMZW5ndGggICAgICAgICAgICAgIC0gU2l6ZSBvZiB0aGUgYnVmZmVyCisgKiBQQVJBTUVURVJTOiAgVGFibGUgICAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gYSB2YWxpZCBBQ1BJIHRhYmxlICh3aXRoIGEKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgQUNQSSBoZWFkZXIpCiAgKgogICogUkVUVVJOOiAgICAgIDggYml0IGNoZWNrc3VtIG9mIGJ1ZmZlcgogICoKLSAqIERFU0NSSVBUSU9OOiBDb21wdXRlcyBhbiA4IGJpdCBjaGVja3N1bSBvZiB0aGUgYnVmZmVyKGxlbmd0aCkgYW5kIHJldHVybnMgaXQuCisgKiBERVNDUklQVElPTjogQ29tcHV0ZXMgYW4gOCBiaXQgY2hlY2tzdW0gb2YgdGhlIHRhYmxlLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXU4IGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0odm9pZCAqYnVmZmVyLCB1MzIgbGVuZ3RoKQordTggYWNwaV90Yl9nZW5lcmF0ZV9jaGVja3N1bShzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKiB0YWJsZSkKIHsKLQl1OCAqZW5kX2J1ZmZlcjsKLQl1OCAqcm92ZXI7Ci0JdTggc3VtID0gMDsKKwl1OCBjaGVja3N1bTsKIAotCWlmIChidWZmZXIgJiYgbGVuZ3RoKSB7Ci0JCS8qICBCdWZmZXIgYW5kIExlbmd0aCBhcmUgdmFsaWQgICAqLworCS8qIFN1bSB0aGUgZW50aXJlIHRhYmxlIGFzLWlzICovCiAKLQkJZW5kX2J1ZmZlciA9IEFDUElfQUREX1BUUih1OCwgYnVmZmVyLCBsZW5ndGgpOworCWNoZWNrc3VtID0gYWNwaV90Yl9zdW1fdGFibGUodGFibGUsIHRhYmxlLT5sZW5ndGgpOwogCi0JCWZvciAocm92ZXIgPSBidWZmZXI7IHJvdmVyIDwgZW5kX2J1ZmZlcjsgcm92ZXIrKykgewotCQkJc3VtID0gKHU4KSAoc3VtICsgKnJvdmVyKTsKLQkJfQorCS8qIFN1YnRyYWN0IG9mZiB0aGUgZXhpc3RpbmcgY2hlY2tzdW0gdmFsdWUgaW4gdGhlIHRhYmxlICovCisKKwljaGVja3N1bSA9ICh1OCkgKGNoZWNrc3VtIC0gdGFibGUtPmNoZWNrc3VtKTsKKworCS8qIENvbXB1dGUgdGhlIGZpbmFsIGNoZWNrc3VtICovCisKKwljaGVja3N1bSA9ICh1OCkgKDAgLSBjaGVja3N1bSk7CisJcmV0dXJuIChjaGVja3N1bSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRlVOQ1RJT046ICAgIGFjcGlfdGJfc2V0X2NoZWNrc3VtCisgKgorICogUEFSQU1FVEVSUzogIFRhYmxlICAgICAgICAgICAgICAgLSBQb2ludGVyIHRvIGEgdmFsaWQgQUNQSSB0YWJsZSAod2l0aCBhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIEFDUEkgaGVhZGVyKQorICoKKyAqIFJFVFVSTjogICAgICBOb25lLiBTZXRzIHRoZSB0YWJsZSBjaGVja3N1bSBmaWVsZAorICoKKyAqIERFU0NSSVBUSU9OOiBDb21wdXRlcyBhbiA4IGJpdCBjaGVja3N1bSBvZiB0aGUgdGFibGUgYW5kIGluc2VydHMgdGhlCisgKiAgICAgICAgICAgICAgY2hlY2tzdW0gaW50byB0aGUgdGFibGUgaGVhZGVyLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3ZvaWQgYWNwaV90Yl9zZXRfY2hlY2tzdW0oc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkKK3sKKworCXRhYmxlLT5jaGVja3N1bSA9IGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0odGFibGUpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZVTkNUSU9OOiAgICBhY3BpX3RiX3ZlcmlmeV90YWJsZV9jaGVja3N1bQorICoKKyAqIFBBUkFNRVRFUlM6ICAqdGFibGVfaGVhZGVyICAgICAgICAgICAtIEFDUEkgdGFibGUgdG8gdmVyaWZ5CisgKgorICogUkVUVVJOOiAgICAgIDggYml0IGNoZWNrc3VtIG9mIHRhYmxlCisgKgorICogREVTQ1JJUFRJT046IEdlbmVyYXRlcyBhbiA4IGJpdCBjaGVja3N1bSBvZiB0YWJsZSBhbmQgcmV0dXJucyBhbmQgY29tcGFyZXMKKyAqICAgICAgICAgICAgICBpdCB0byB0aGUgZXhpc3RpbmcgY2hlY2tzdW0gdmFsdWUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYWNwaV9zdGF0dXMKK2FjcGlfdGJfdmVyaWZ5X3RhYmxlX2NoZWNrc3VtKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGVfaGVhZGVyKQoreworCXU4IGNoZWNrc3VtOworCisJQUNQSV9GVU5DVElPTl9UUkFDRSh0Yl92ZXJpZnlfdGFibGVfY2hlY2tzdW0pOworCisJLyogQ29tcHV0ZSB0aGUgY2hlY2tzdW0gb24gdGhlIHRhYmxlICovCisKKwljaGVja3N1bSA9IGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0odGFibGVfaGVhZGVyKTsKKworCS8qIENoZWNrc3VtIG9rPyAqLworCisJaWYgKGNoZWNrc3VtID09IHRhYmxlX2hlYWRlci0+Y2hlY2tzdW0pIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKIAl9Ci0JcmV0dXJuIChzdW0pOworCisJQUNQSV9XQVJOSU5HKChBRV9JTkZPLAorCQkgICAgICAiSW5jb3JyZWN0IGNoZWNrc3VtIGluIHRhYmxlIFslNC40c10gLSBpcyAlMi4yWCwgc2hvdWxkIGJlICUyLjJYIiwKKwkJICAgICAgdGFibGVfaGVhZGVyLT5zaWduYXR1cmUsIHRhYmxlX2hlYWRlci0+Y2hlY2tzdW0sCisJCSAgICAgIGNoZWNrc3VtKSk7CisKKwlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX0NIRUNLU1VNKTsKIH0KIAogI2lmZGVmIEFDUElfT0JTT0xFVEVfRlVOQ1RJT05TCkBAIC0yNzYsMTIgKzMxNywxMiBAQAogCiBhY3BpX3N0YXR1cwogYWNwaV90Yl9oYW5kbGVfdG9fb2JqZWN0KHUxNiB0YWJsZV9pZCwKLQkJCSBzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICoqIHJldHVybl90YWJsZV9kZXNjKQorCQkJIHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKipyZXR1cm5fdGFibGVfZGVzYykKIHsKIAl1MzIgaTsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJ0Yl9oYW5kbGVfdG9fb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9OQU1FKHRiX2hhbmRsZV90b19vYmplY3QpOwogCiAJZm9yIChpID0gMDsgaSA8IEFDUElfVEFCTEVfTUFYOyBpKyspIHsKIAkJdGFibGVfZGVzYyA9IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW2ldLm5leHQ7CkBAIC0yOTUsNyArMzM2LDcgQEAKIAkJfQogCX0KIAotCUFDUElfRVJST1IoKEFFX0lORk8sICJ0YWJsZV9pZD0lWCBkb2VzIG5vdCBleGlzdCIsIHRhYmxlX2lkKSk7CisJQUNQSV9FUlJPUigoQUVfSU5GTywgIlRhYmxlSWQ9JVggZG9lcyBub3QgZXhpc3QiLCB0YWJsZV9pZCkpOwogCXJldHVybiAoQUVfQkFEX1BBUkFNRVRFUik7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJ4ZmFjZS5jIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90YnhmYWNlLmMKaW5kZXggOWZlNTNjOS4uNGU5MWYyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3RhYmxlcy90YnhmYWNlLmMKKysrIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90YnhmYWNlLmMKQEAgLTQyLDggKzQyLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3RhYmxlcy5oPgpAQCAtNjgsNyArNjYsNyBAQAogCXN0cnVjdCBhY3BpX3BvaW50ZXIgcnNkcF9hZGRyZXNzOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfbG9hZF90YWJsZXMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfbG9hZF90YWJsZXMpOwogCiAJLyogR2V0IHRoZSBSU0RQICovCiAKQEAgLTEyMyw2ICsxMjEsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9sb2FkX3RhYmxlcykKKwogI2lmZGVmIEFDUElfRlVUVVJFX1VTQUdFCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTEzOSwxNCArMTM5LDEzIEBACiAgKiAgICAgICAgICAgICAgaXMgZGV0ZXJtaW5lZCB0aGF0IHRoZSB0YWJsZSBpcyBpbnZhbGlkLCB0aGUgY2FsbCB3aWxsIGZhaWwuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9sb2FkX3RhYmxlKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGVfcHRyKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjIHRhYmxlX2luZm87CiAJc3RydWN0IGFjcGlfcG9pbnRlciBhZGRyZXNzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9sb2FkX3RhYmxlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2xvYWRfdGFibGUpOwogCiAJaWYgKCF0YWJsZV9wdHIpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwpAQCAtMTc0LDYgKzE3Myw3IEBACiAJc3RhdHVzID0gYWNwaV90Yl9pbnN0YWxsX3RhYmxlKCZ0YWJsZV9pbmZvKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJaWYgKHN0YXR1cyA9PSBBRV9BTFJFQURZX0VYSVNUUykgeworCiAJCQkvKiBUYWJsZSBhbHJlYWR5IGV4aXN0cywgbm8gZXJyb3IgKi8KIAogCQkJc3RhdHVzID0gQUVfT0s7CkBAIC0xODgsMTIgKzE4OCwxMiBAQAogCS8qIENvbnZlcnQgdGhlIHRhYmxlIHRvIGNvbW1vbiBmb3JtYXQgaWYgbmVjZXNzYXJ5ICovCiAKIAlzd2l0Y2ggKHRhYmxlX2luZm8udHlwZSkgewotCWNhc2UgQUNQSV9UQUJMRV9GQURUOgorCWNhc2UgQUNQSV9UQUJMRV9JRF9GQURUOgogCiAJCXN0YXR1cyA9IGFjcGlfdGJfY29udmVydF90YWJsZV9mYWR0KCk7CiAJCWJyZWFrOwogCi0JY2FzZSBBQ1BJX1RBQkxFX0ZBQ1M6CisJY2FzZSBBQ1BJX1RBQkxFX0lEX0ZBQ1M6CiAKIAkJc3RhdHVzID0gYWNwaV90Yl9idWlsZF9jb21tb25fZmFjcygmdGFibGVfaW5mbyk7CiAJCWJyZWFrOwpAQCAtMjA4LDYgKzIwOCw3IEBACiAJfQogCiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisKIAkJLyogVW5pbnN0YWxsIHRhYmxlIGFuZCBmcmVlIHRoZSBidWZmZXIgKi8KIAogCQkodm9pZClhY3BpX3RiX3VuaW5zdGFsbF90YWJsZSh0YWJsZV9pbmZvLmluc3RhbGxlZF9kZXNjKTsKQEAgLTIxNiw2ICsyMTcsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9sb2FkX3RhYmxlKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3VubG9hZF90YWJsZQpAQCAtMjI3LDE2ICsyMzAsMTUgQEAKICAqIERFU0NSSVBUSU9OOiBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBmb3JjZSB0aGUgdW5sb2FkIG9mIGEgdGFibGUKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX3VubG9hZF90YWJsZShhY3BpX3RhYmxlX3R5cGUgdGFibGVfdHlwZSkKIHsKIAlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV91bmxvYWRfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfdW5sb2FkX3RhYmxlKTsKIAogCS8qIFBhcmFtZXRlciB2YWxpZGF0aW9uICovCiAKLQlpZiAodGFibGVfdHlwZSA+IEFDUElfVEFCTEVfTUFYKSB7CisJaWYgKHRhYmxlX3R5cGUgPiBBQ1BJX1RBQkxFX0lEX01BWCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CiAJfQogCkBAIC0yNjEsNiArMjYzLDggQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV91bmxvYWRfdGFibGUpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZ2V0X3RhYmxlX2hlYWRlcgpAQCAtMjgxLDcgKzI4NSw2IEBACiAgKiAgICAgICAgICAgICAgaGF2ZSBhIHN0YW5kYXJkIGhlYWRlciBhbmQgaXMgZml4ZWQgbGVuZ3RoLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzCiBhY3BpX2dldF90YWJsZV9oZWFkZXIoYWNwaV90YWJsZV90eXBlIHRhYmxlX3R5cGUsCiAJCSAgICAgIHUzMiBpbnN0YW5jZSwgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpvdXRfdGFibGVfaGVhZGVyKQpAQCAtMjg5LDE2ICsyOTIsMTYgQEAKIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRibF9wdHI7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfdGFibGVfaGVhZGVyIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2dldF90YWJsZV9oZWFkZXIpOwogCiAJaWYgKChpbnN0YW5jZSA9PSAwKSB8fAotCSAgICAodGFibGVfdHlwZSA9PSBBQ1BJX1RBQkxFX1JTRFApIHx8ICghb3V0X3RhYmxlX2hlYWRlcikpIHsKKwkgICAgKHRhYmxlX3R5cGUgPT0gQUNQSV9UQUJMRV9JRF9SU0RQKSB8fCAoIW91dF90YWJsZV9oZWFkZXIpKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKIAl9CiAKIAkvKiBDaGVjayB0aGUgdGFibGUgdHlwZSBhbmQgaW5zdGFuY2UgKi8KIAotCWlmICgodGFibGVfdHlwZSA+IEFDUElfVEFCTEVfTUFYKSB8fAorCWlmICgodGFibGVfdHlwZSA+IEFDUElfVEFCTEVfSURfTUFYKSB8fAogCSAgICAoQUNQSV9JU19TSU5HTEVfVEFCTEUoYWNwaV9nYmxfdGFibGVfZGF0YVt0YWJsZV90eXBlXS5mbGFncykgJiYKIAkgICAgIGluc3RhbmNlID4gMSkpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwpAQCAtMzI1LDYgKzMyOCw3IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90YWJsZV9oZWFkZXIpCiAjZW5kaWYJCQkJLyogIEFDUElfRlVUVVJFX1VTQUdFICAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzQ5LDcgKzM1Myw2IEBACiAgKiAgICAgICAgICAgICAgYSBjb21wbGV0ZSB0YWJsZSBpbmNsdWRpbmcgdGhlIGhlYWRlci4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cwogYWNwaV9nZXRfdGFibGUoYWNwaV90YWJsZV90eXBlIHRhYmxlX3R5cGUsCiAJICAgICAgIHUzMiBpbnN0YW5jZSwgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKQpAQCAtMzU4LDcgKzM2MSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCWFjcGlfc2l6ZSB0YWJsZV9sZW5ndGg7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2dldF90YWJsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfdGFibGUpOwogCiAJLyogUGFyYW1ldGVyIHZhbGlkYXRpb24gKi8KIApAQCAtMzczLDcgKzM3Niw3IEBACiAKIAkvKiBDaGVjayB0aGUgdGFibGUgdHlwZSBhbmQgaW5zdGFuY2UgKi8KIAotCWlmICgodGFibGVfdHlwZSA+IEFDUElfVEFCTEVfTUFYKSB8fAorCWlmICgodGFibGVfdHlwZSA+IEFDUElfVEFCTEVfSURfTUFYKSB8fAogCSAgICAoQUNQSV9JU19TSU5HTEVfVEFCTEUoYWNwaV9nYmxfdGFibGVfZGF0YVt0YWJsZV90eXBlXS5mbGFncykgJiYKIAkgICAgIGluc3RhbmNlID4gMSkpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwpAQCAtMzk2LDcgKzM5OSw4IEBACiAKIAkvKiBHZXQgdGhlIHRhYmxlIGxlbmd0aCAqLwogCi0JaWYgKHRhYmxlX3R5cGUgPT0gQUNQSV9UQUJMRV9SU0RQKSB7CisJaWYgKHRhYmxlX3R5cGUgPT0gQUNQSV9UQUJMRV9JRF9SU0RQKSB7CisKIAkJLyogUlNEIFBUUiBpcyB0aGUgb25seSAidGFibGUiIHdpdGhvdXQgYSBoZWFkZXIgKi8KIAogCQl0YWJsZV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHJzZHBfZGVzY3JpcHRvcik7CkBAIC00MTcsNCArNDIxLDQgQEAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3RhYmxlKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF90YWJsZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJ4ZnJvb3QuYyBiL2RyaXZlcnMvYWNwaS90YWJsZXMvdGJ4ZnJvb3QuYwppbmRleCBhNjJkYjZhLi5kYTI2NDhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGFibGVzL3RieGZyb290LmMKKysrIGIvZHJpdmVycy9hY3BpL3RhYmxlcy90Ynhmcm9vdC5jCkBAIC00MSw4ICs0MSw2IEBACiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3RhYmxlcy5oPgogCkBAIC03NSw2ICs3Myw3IEBACiAJICogIFRoZSBzaWduYXR1cmUgYW5kIGNoZWNrc3VtIG11c3QgYm90aCBiZSBjb3JyZWN0CiAJICovCiAJaWYgKEFDUElfU1RSTkNNUCgoY2hhciAqKXJzZHAsIFJTRFBfU0lHLCBzaXplb2YoUlNEUF9TSUcpIC0gMSkgIT0gMCkgeworCiAJCS8qIE5vcGUsIEJBRCBTaWduYXR1cmUgKi8KIAogCQlyZXR1cm4gKEFFX0JBRF9TSUdOQVRVUkUpOwpAQCAtODIsMTUgKzgxLDE0IEBACiAKIAkvKiBDaGVjayB0aGUgc3RhbmRhcmQgY2hlY2tzdW0gKi8KIAotCWlmIChhY3BpX3RiX2dlbmVyYXRlX2NoZWNrc3VtKHJzZHAsIEFDUElfUlNEUF9DSEVDS1NVTV9MRU5HVEgpICE9IDApIHsKKwlpZiAoYWNwaV90Yl9zdW1fdGFibGUocnNkcCwgQUNQSV9SU0RQX0NIRUNLU1VNX0xFTkdUSCkgIT0gMCkgewogCQlyZXR1cm4gKEFFX0JBRF9DSEVDS1NVTSk7CiAJfQogCiAJLyogQ2hlY2sgZXh0ZW5kZWQgY2hlY2tzdW0gaWYgdGFibGUgdmVyc2lvbiA+PSAyICovCiAKIAlpZiAoKHJzZHAtPnJldmlzaW9uID49IDIpICYmCi0JICAgIChhY3BpX3RiX2dlbmVyYXRlX2NoZWNrc3VtKHJzZHAsIEFDUElfUlNEUF9YQ0hFQ0tTVU1fTEVOR1RIKSAhPQotCSAgICAgMCkpIHsKKwkgICAgKGFjcGlfdGJfc3VtX3RhYmxlKHJzZHAsIEFDUElfUlNEUF9YQ0hFQ0tTVU1fTEVOR1RIKSAhPSAwKSkgewogCQlyZXR1cm4gKEFFX0JBRF9DSEVDS1NVTSk7CiAJfQogCkBAIC0xMjEsNyArMTE5LDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2ZpbmRfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHRiX2ZpbmRfdGFibGUpOwogCiAJLyogVmFsaWRhdGUgc3RyaW5nIGxlbmd0aHMgKi8KIApAQCAtMTMxLDcgKzEyOSw3IEBACiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfU1RSSU5HX0xJTUlUKTsKIAl9CiAKLQlpZiAoIUFDUElfU1RSTkNNUChzaWduYXR1cmUsIERTRFRfU0lHLCBBQ1BJX05BTUVfU0laRSkpIHsKKwlpZiAoQUNQSV9DT01QQVJFX05BTUUoc2lnbmF0dXJlLCBEU0RUX1NJRykpIHsKIAkJLyoKIAkJICogVGhlIERTRFQgcG9pbnRlciBpcyBjb250YWluZWQgaW4gdGhlIEZBRFQsIG5vdCB0aGUgUlNEVC4KIAkJICogVGhpcyBjb2RlIHNob3VsZCBzdWZmaWNlLCBiZWNhdXNlIHRoZSBvbmx5IGNvZGUgdGhhdCB3b3VsZCBwZXJmb3JtCkBAIC0xNTYsMTAgKzE1NCwxMiBAQAogCiAJLyogQ2hlY2sgb2VtX2lkIGFuZCBvZW1fdGFibGVfaWQgKi8KIAotCWlmICgob2VtX2lkWzBdICYmIEFDUElfU1RSTkNNUChvZW1faWQsIHRhYmxlLT5vZW1faWQsCi0JCQkJICAgICAgIHNpemVvZih0YWJsZS0+b2VtX2lkKSkpIHx8Ci0JICAgIChvZW1fdGFibGVfaWRbMF0gJiYgQUNQSV9TVFJOQ01QKG9lbV90YWJsZV9pZCwgdGFibGUtPm9lbV90YWJsZV9pZCwKLQkJCQkJICAgICBzaXplb2YodGFibGUtPm9lbV90YWJsZV9pZCkpKSkgeworCWlmICgob2VtX2lkWzBdICYmCisJICAgICBBQ1BJX1NUUk5DTVAob2VtX2lkLCB0YWJsZS0+b2VtX2lkLAorCQkJICBzaXplb2YodGFibGUtPm9lbV9pZCkpKSB8fAorCSAgICAob2VtX3RhYmxlX2lkWzBdICYmCisJICAgICBBQ1BJX1NUUk5DTVAob2VtX3RhYmxlX2lkLCB0YWJsZS0+b2VtX3RhYmxlX2lkLAorCQkJICBzaXplb2YodGFibGUtPm9lbV90YWJsZV9pZCkpKSkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX05BTUVfTk9UX0ZPVU5EKTsKIAl9CiAKQEAgLTIwMyw3ICsyMDMsNyBAQAogCXUzMiBpOwogCXUzMiBqOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgiYWNwaV9nZXRfZmlybXdhcmVfdGFibGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZ2V0X2Zpcm13YXJlX3RhYmxlKTsKIAogCS8qCiAJICogRW5zdXJlIHRoYXQgYXQgbGVhc3QgdGhlIHRhYmxlIG1hbmFnZXIgaXMgaW5pdGlhbGl6ZWQuICBXZSBkb24ndApAQCAtMjE3LDYgKzIxNyw3IEBACiAJLyogRW5zdXJlIHRoYXQgd2UgaGF2ZSBhIFJTRFAgKi8KIAogCWlmICghYWNwaV9nYmxfUlNEUCkgeworCiAJCS8qIEdldCB0aGUgUlNEUCAqLwogCiAJCXN0YXR1cyA9IGFjcGlfb3NfZ2V0X3Jvb3RfcG9pbnRlcihmbGFncywgJmFkZHJlc3MpOwpAQCAtMjYxLDcgKzI2Miw3IEBACiAKIAkvKiBHZXQgYW5kIHZhbGlkYXRlIHRoZSBSU0RUICovCiAKLQlyc2R0X2luZm8gPSBBQ1BJX01FTV9DQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MpKTsKKwlyc2R0X2luZm8gPSBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfZGVzYykpOwogCWlmICghcnNkdF9pbmZvKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9OT19NRU1PUlkpOwogCX0KQEAgLTI3OCwxMyArMjc5LDEzIEBACiAKIAkvKiBBbGxvY2F0ZSBhIHNjcmF0Y2ggdGFibGUgaGVhZGVyIGFuZCB0YWJsZSBkZXNjcmlwdG9yICovCiAKLQloZWFkZXIgPSBBQ1BJX01FTV9BTExPQ0FURShzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyKSk7CisJaGVhZGVyID0gQUNQSV9BTExPQ0FURShzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyKSk7CiAJaWYgKCFoZWFkZXIpIHsKIAkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOwogCQlnb3RvIGNsZWFudXA7CiAJfQogCi0JdGFibGVfaW5mbyA9IEFDUElfTUVNX0FMTE9DQVRFKHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjKSk7CisJdGFibGVfaW5mbyA9IEFDUElfQUxMT0NBVEUoc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MpKTsKIAlpZiAoIXRhYmxlX2luZm8pIHsKIAkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOwogCQlnb3RvIGNsZWFudXA7CkBAIC0zMDgsMTIgKzMwOSwxMiBAQAogCQlpZiAoYWNwaV9nYmxfcm9vdF90YWJsZV90eXBlID09IEFDUElfVEFCTEVfVFlQRV9SU0RUKSB7CiAJCQlhZGRyZXNzLnBvaW50ZXIudmFsdWUgPQogCQkJICAgIChBQ1BJX0NBU1RfUFRSCi0JCQkgICAgIChSU0RUX0RFU0NSSVBUT1IsCisJCQkgICAgIChzdHJ1Y3QgcnNkdF9kZXNjcmlwdG9yLAogCQkJICAgICAgcnNkdF9pbmZvLT5wb2ludGVyKSktPnRhYmxlX29mZnNldF9lbnRyeVtpXTsKIAkJfSBlbHNlIHsKIAkJCWFkZHJlc3MucG9pbnRlci52YWx1ZSA9CiAJCQkgICAgKEFDUElfQ0FTVF9QVFIKLQkJCSAgICAgKFhTRFRfREVTQ1JJUFRPUiwKKwkJCSAgICAgKHN0cnVjdCB4c2R0X2Rlc2NyaXB0b3IsCiAJCQkgICAgICByc2R0X2luZm8tPnBvaW50ZXIpKS0+dGFibGVfb2Zmc2V0X2VudHJ5W2ldOwogCQl9CiAKQEAgLTMyNiwxMSArMzI3LDEzIEBACiAKIAkJLyogQ29tcGFyZSB0YWJsZSBzaWduYXR1cmVzIGFuZCB0YWJsZSBpbnN0YW5jZSAqLwogCi0JCWlmICghQUNQSV9TVFJOQ01QKGhlYWRlci0+c2lnbmF0dXJlLCBzaWduYXR1cmUsIEFDUElfTkFNRV9TSVpFKSkgeworCQlpZiAoQUNQSV9DT01QQVJFX05BTUUoaGVhZGVyLT5zaWduYXR1cmUsIHNpZ25hdHVyZSkpIHsKKwogCQkJLyogQW4gaW5zdGFuY2Ugb2YgdGhlIHRhYmxlIHdhcyBmb3VuZCAqLwogCiAJCQlqKys7CiAJCQlpZiAoaiA+PSBpbnN0YW5jZSkgeworCiAJCQkJLyogRm91bmQgdGhlIGNvcnJlY3QgaW5zdGFuY2UsIGdldCB0aGUgZW50aXJlIHRhYmxlICovCiAKIAkJCQlzdGF0dXMgPQpAQCAtMzU1LDIzICszNTgsMjEgQEAKIAkJYWNwaV9vc191bm1hcF9tZW1vcnkocnNkdF9pbmZvLT5wb2ludGVyLAogCQkJCSAgICAgKGFjcGlfc2l6ZSkgcnNkdF9pbmZvLT5wb2ludGVyLT5sZW5ndGgpOwogCX0KLQlBQ1BJX01FTV9GUkVFKHJzZHRfaW5mbyk7CisJQUNQSV9GUkVFKHJzZHRfaW5mbyk7CiAKIAlpZiAoaGVhZGVyKSB7Ci0JCUFDUElfTUVNX0ZSRUUoaGVhZGVyKTsKKwkJQUNQSV9GUkVFKGhlYWRlcik7CiAJfQogCWlmICh0YWJsZV9pbmZvKSB7Ci0JCUFDUElfTUVNX0ZSRUUodGFibGVfaW5mbyk7CisJCUFDUElfRlJFRSh0YWJsZV9pbmZvKTsKIAl9CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV9nZXRfZmlybXdhcmVfdGFibGUpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X2Zpcm13YXJlX3RhYmxlKQogCiAvKiBUQkQ6IE1vdmUgdG8gYSBuZXcgZmlsZSAqLwotCiAjaWYgQUNQSV9NQUNISU5FX1dJRFRIICE9IDE2Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfZmluZF9yb290X3BvaW50ZXIKQEAgLTM4NCwxMyArMzg1LDEyIEBACiAgKiBERVNDUklQVElPTjogRmluZCB0aGUgUlNEUAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFjcGlfZmluZF9yb290X3BvaW50ZXIodTMyIGZsYWdzLCBzdHJ1Y3QgYWNwaV9wb2ludGVyICpyc2RwX2FkZHJlc3MpCiB7CiAJc3RydWN0IGFjcGlfdGFibGVfZGVzYyB0YWJsZV9pbmZvOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZmluZF9yb290X3BvaW50ZXIiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfZmluZF9yb290X3BvaW50ZXIpOwogCiAJLyogR2V0IHRoZSBSU0RQICovCiAKQEAgLTQwNyw2ICs0MDcsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CiAKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2ZpbmRfcm9vdF9wb2ludGVyKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3RiX3NjYW5fbWVtb3J5X2Zvcl9yc2RwCkBAIC00MTksMTQgKzQyMSwxMyBAQAogICogREVTQ1JJUFRJT046IFNlYXJjaCBhIGJsb2NrIG9mIG1lbW9yeSBmb3IgdGhlIFJTRFAgc2lnbmF0dXJlCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogc3RhdGljIHU4ICphY3BpX3RiX3NjYW5fbWVtb3J5X2Zvcl9yc2RwKHU4ICogc3RhcnRfYWRkcmVzcywgdTMyIGxlbmd0aCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTggKm1lbV9yb3ZlcjsKIAl1OCAqZW5kX2FkZHJlc3M7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ0Yl9zY2FuX21lbW9yeV9mb3JfcnNkcCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfc2Nhbl9tZW1vcnlfZm9yX3JzZHApOwogCiAJZW5kX2FkZHJlc3MgPSBzdGFydF9hZGRyZXNzICsgbGVuZ3RoOwogCkBAIC00MzQsMTIgKzQzNSwxNCBAQAogCiAJZm9yIChtZW1fcm92ZXIgPSBzdGFydF9hZGRyZXNzOyBtZW1fcm92ZXIgPCBlbmRfYWRkcmVzczsKIAkgICAgIG1lbV9yb3ZlciArPSBBQ1BJX1JTRFBfU0NBTl9TVEVQKSB7CisKIAkJLyogVGhlIFJTRFAgc2lnbmF0dXJlIGFuZCBjaGVja3N1bSBtdXN0IGJvdGggYmUgY29ycmVjdCAqLwogCiAJCXN0YXR1cyA9CiAJCSAgICBhY3BpX3RiX3ZhbGlkYXRlX3JzZHAoQUNQSV9DQVNUX1BUUgogCQkJCQkgIChzdHJ1Y3QgcnNkcF9kZXNjcmlwdG9yLCBtZW1fcm92ZXIpKTsKIAkJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7CisKIAkJCS8qIFNpZyBhbmQgY2hlY2tzdW0gdmFsaWQsIHdlIGhhdmUgZm91bmQgYSByZWFsIFJTRFAgKi8KIAogCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLApAQCAtNDY5LDEwICs0NzIsMTAgQEAKICAqCiAgKiBSRVRVUk46ICAgICAgU3RhdHVzLCBSU0RQIHBoeXNpY2FsIGFkZHJlc3MKICAqCi0gKiBERVNDUklQVElPTjogc2VhcmNoIGxvd2VyIDFfbWJ5dGUgb2YgbWVtb3J5IGZvciB0aGUgcm9vdCBzeXN0ZW0gZGVzY3JpcHRvcgorICogREVTQ1JJUFRJT046IFNlYXJjaCBsb3dlciAxX21ieXRlIG9mIG1lbW9yeSBmb3IgdGhlIHJvb3Qgc3lzdGVtIGRlc2NyaXB0b3IKICAqICAgICAgICAgICAgICBwb2ludGVyIHN0cnVjdHVyZS4gIElmIGl0IGlzIGZvdW5kLCBzZXQgKlJTRFAgdG8gcG9pbnQgdG8gaXQuCiAgKgotICogICAgICAgICAgICAgIE5PVEUxOiBUaGUgUlNEcCBtdXN0IGJlIGVpdGhlciBpbiB0aGUgZmlyc3QgMV9rIG9mIHRoZSBFeHRlbmRlZAorICogICAgICAgICAgICAgIE5PVEUxOiBUaGUgUlNEUCBtdXN0IGJlIGVpdGhlciBpbiB0aGUgZmlyc3QgMV9rIG9mIHRoZSBFeHRlbmRlZAogICogICAgICAgICAgICAgIEJJT1MgRGF0YSBBcmVhIG9yIGJldHdlZW4gRTAwMDAgYW5kIEZGRkZGIChGcm9tIEFDUEkgU3BlYy4pCiAgKiAgICAgICAgICAgICAgT25seSBhIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIGlzIG5lY2Vzc2FyeS4KICAqCkBAIC00ODksMTIgKzQ5MiwxMyBAQAogCXUzMiBwaHlzaWNhbF9hZGRyZXNzOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInRiX2ZpbmRfcnNkcCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodGJfZmluZF9yc2RwKTsKIAogCS8qCiAJICogU2NhbiBzdXBwb3J0cyBlaXRoZXIgbG9naWNhbCBhZGRyZXNzaW5nIG9yIHBoeXNpY2FsIGFkZHJlc3NpbmcKIAkgKi8KIAlpZiAoKGZsYWdzICYgQUNQSV9NRU1PUllfTU9ERSkgPT0gQUNQSV9MT0dJQ0FMX0FERFJFU1NJTkcpIHsKKwogCQkvKiAxYSkgR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgRXh0ZW5kZWQgQklPUyBEYXRhIEFyZWEgKEVCREEpICovCiAKIAkJc3RhdHVzID0gYWNwaV9vc19tYXBfbWVtb3J5KChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpCkBAIC01MjEsNyArNTI1LDcgQEAKIAogCQlpZiAocGh5c2ljYWxfYWRkcmVzcyA+IDB4NDAwKSB7CiAJCQkvKgotCQkJICogMWIpIFNlYXJjaCBFQkRBIHBhcmFncmFwaHMgKEVCRGEgaXMgcmVxdWlyZWQgdG8gYmUgYQorCQkJICogMWIpIFNlYXJjaCBFQkRBIHBhcmFncmFwaHMgKEVCREEgaXMgcmVxdWlyZWQgdG8gYmUgYQogCQkJICogICAgIG1pbmltdW0gb2YgMV9rIGxlbmd0aCkKIAkJCSAqLwogCQkJc3RhdHVzID0gYWNwaV9vc19tYXBfbWVtb3J5KChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpCkBAIC01NDIsMTAgKzU0NiwxMSBAQAogCQkJYWNwaV9vc191bm1hcF9tZW1vcnkodGFibGVfcHRyLCBBQ1BJX0VCREFfV0lORE9XX1NJWkUpOwogCiAJCQlpZiAobWVtX3JvdmVyKSB7CisKIAkJCQkvKiBSZXR1cm4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgKi8KIAogCQkJCXBoeXNpY2FsX2FkZHJlc3MgKz0KLQkJCQkgICAgQUNQSV9QVFJfRElGRihtZW1fcm92ZXIsIHRhYmxlX3B0cik7CisJCQkJICAgICh1MzIpIEFDUElfUFRSX0RJRkYobWVtX3JvdmVyLCB0YWJsZV9wdHIpOwogCiAJCQkJdGFibGVfaW5mby0+cGh5c2ljYWxfYWRkcmVzcyA9CiAJCQkJICAgIChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpIHBoeXNpY2FsX2FkZHJlc3M7CkBAIC01NzYsMTEgKzU4MSwxMiBAQAogCQlhY3BpX29zX3VubWFwX21lbW9yeSh0YWJsZV9wdHIsIEFDUElfSElfUlNEUF9XSU5ET1dfU0laRSk7CiAKIAkJaWYgKG1lbV9yb3ZlcikgeworCiAJCQkvKiBSZXR1cm4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgKi8KIAotCQkJcGh5c2ljYWxfYWRkcmVzcyA9Ci0JCQkgICAgQUNQSV9ISV9SU0RQX1dJTkRPV19CQVNFICsgQUNQSV9QVFJfRElGRihtZW1fcm92ZXIsCi0JCQkJCQkJCSAgICAgdGFibGVfcHRyKTsKKwkJCXBoeXNpY2FsX2FkZHJlc3MgPSAodTMyKQorCQkJICAgIChBQ1BJX0hJX1JTRFBfV0lORE9XX0JBU0UgKworCQkJICAgICBBQ1BJX1BUUl9ESUZGKG1lbV9yb3ZlciwgdGFibGVfcHRyKSk7CiAKIAkJCXRhYmxlX2luZm8tPnBoeXNpY2FsX2FkZHJlc3MgPQogCQkJICAgIChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpIHBoeXNpY2FsX2FkZHJlc3M7CkBAIC02MDEsNyArNjA3LDcgQEAKIAogCQlpZiAocGh5c2ljYWxfYWRkcmVzcyA+IDB4NDAwKSB7CiAJCQkvKgotCQkJICogMWIpIFNlYXJjaCBFQkRBIHBhcmFncmFwaHMgKEVCRGEgaXMgcmVxdWlyZWQgdG8gYmUgYSBtaW5pbXVtIG9mCisJCQkgKiAxYikgU2VhcmNoIEVCREEgcGFyYWdyYXBocyAoRUJEQSBpcyByZXF1aXJlZCB0byBiZSBhIG1pbmltdW0gb2YKIAkJCSAqICAgICAxX2sgbGVuZ3RoKQogCQkJICovCiAJCQltZW1fcm92ZXIgPQpAQCAtNjA5LDYgKzYxNSw3IEBACiAJCQkJCQkJIChwaHlzaWNhbF9hZGRyZXNzKSwKIAkJCQkJCQkgQUNQSV9FQkRBX1dJTkRPV19TSVpFKTsKIAkJCWlmIChtZW1fcm92ZXIpIHsKKwogCQkJCS8qIFJldHVybiB0aGUgcGh5c2ljYWwgYWRkcmVzcyAqLwogCiAJCQkJdGFibGVfaW5mby0+cGh5c2ljYWxfYWRkcmVzcyA9CkBAIC02MjQsNiArNjMxLDcgQEAKIAkJCQkJCSAoQUNQSV9ISV9SU0RQX1dJTkRPV19CQVNFKSwKIAkJCQkJCSBBQ1BJX0hJX1JTRFBfV0lORE9XX1NJWkUpOwogCQlpZiAobWVtX3JvdmVyKSB7CisKIAkJCS8qIEZvdW5kIGl0LCByZXR1cm4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgKi8KIAogCQkJdGFibGVfaW5mby0+cGh5c2ljYWxfYWRkcmVzcyA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdGhlcm1hbC5jIGIvZHJpdmVycy9hY3BpL3RoZXJtYWwuYwppbmRleCAxOWYzZWE0Li5lN2ZlM2ExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvYWNwaS90aGVybWFsLmMKQEAgLTgyLDYgKzgyLDcgQEAKIAogc3RhdGljIGludCBhY3BpX3RoZXJtYWxfYWRkKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKTsKIHN0YXRpYyBpbnQgYWNwaV90aGVybWFsX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgaW50IHR5cGUpOworc3RhdGljIGludCBhY3BpX3RoZXJtYWxfcmVzdW1lKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCBpbnQgc3RhdGUpOwogc3RhdGljIGludCBhY3BpX3RoZXJtYWxfc3RhdGVfb3Blbl9mcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7CiBzdGF0aWMgaW50IGFjcGlfdGhlcm1hbF90ZW1wX29wZW5fZnMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwogc3RhdGljIGludCBhY3BpX3RoZXJtYWxfdHJpcF9vcGVuX2ZzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKQEAgLTEwMyw2ICsxMDQsNyBAQAogCS5vcHMgPSB7CiAJCS5hZGQgPSBhY3BpX3RoZXJtYWxfYWRkLAogCQkucmVtb3ZlID0gYWNwaV90aGVybWFsX3JlbW92ZSwKKwkJLnJlc3VtZSA9IGFjcGlfdGhlcm1hbF9yZXN1bWUsCiAJCX0sCiB9OwogCkBAIC02ODQsOCArNjg2LDcgQEAKIHsKIAlzdHJ1Y3QgYWNwaV90aGVybWFsICp0eiA9IChzdHJ1Y3QgYWNwaV90aGVybWFsICopZGF0YTsKIAlpZiAoIXR6LT56b21iaWUpCi0JCWFjcGlfb3NfcXVldWVfZm9yX2V4ZWN1dGlvbihPU0RfUFJJT1JJVFlfR1BFLAotCQkJCQkgICAgYWNwaV90aGVybWFsX2NoZWNrLCAodm9pZCAqKWRhdGEpOworCQlhY3BpX29zX2V4ZWN1dGUoT1NMX0dQRV9IQU5ETEVSLCBhY3BpX3RoZXJtYWxfY2hlY2ssICh2b2lkICopZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFjcGlfdGhlcm1hbF9jaGVjayh2b2lkICpkYXRhKQpAQCAtOTQyLDggKzk0MywxMCBAQAogCW1lbXNldChsaW1pdF9zdHJpbmcsIDAsIEFDUElfVEhFUk1BTF9NQVhfTElNSVRfU1RSX0xFTik7CiAKIAlhY3RpdmUgPSBrbWFsbG9jKEFDUElfVEhFUk1BTF9NQVhfQUNUSVZFICogc2l6ZW9mKGludCksIEdGUF9LRVJORUwpOwotCWlmICghYWN0aXZlKQorCWlmICghYWN0aXZlKSB7CisJCWtmcmVlKGxpbWl0X3N0cmluZyk7CiAJCXJldHVybl9WQUxVRSgtRU5PTUVNKTsKKwl9CiAKIAlpZiAoIXR6IHx8IChjb3VudCA+IEFDUElfVEhFUk1BTF9NQVhfTElNSVRfU1RSX0xFTiAtIDEpKSB7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsICJJbnZhbGlkIGFyZ3VtZW50XG4iKSk7CkBAIC0xMzQyLDcgKzEzNDUsNyBAQAogCiAJcmVzdWx0ID0gYWNwaV90aGVybWFsX2FkZF9mcyhkZXZpY2UpOwogCWlmIChyZXN1bHQpCi0JCXJldHVybl9WQUxVRShyZXN1bHQpOworCQlnb3RvIGVuZDsKIAogCWluaXRfdGltZXIoJnR6LT50aW1lcik7CiAKQEAgLTE0MTYsNiArMTQxOSwyMCBAQAogCXJldHVybl9WQUxVRSgwKTsKIH0KIAorc3RhdGljIGludCBhY3BpX3RoZXJtYWxfcmVzdW1lKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCBpbnQgc3RhdGUpCit7CisJc3RydWN0IGFjcGlfdGhlcm1hbCAqdHogPSBOVUxMOworCisJaWYgKCFkZXZpY2UgfHwgIWFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKSkKKwkJcmV0dXJuX1ZBTFVFKC1FSU5WQUwpOworCisJdHogPSAoc3RydWN0IGFjcGlfdGhlcm1hbCAqKWFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKTsKKworCWFjcGlfdGhlcm1hbF9jaGVjayh0eik7CisKKwlyZXR1cm4gQUVfT0s7Cit9CisKIHN0YXRpYyBpbnQgX19pbml0IGFjcGlfdGhlcm1hbF9pbml0KHZvaWQpCiB7CiAJaW50IHJlc3VsdCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0YWxsb2MuYyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRhbGxvYy5jCmluZGV4IDAzYjAwNDQuLjc5NDBmYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRhbGxvYy5jCisrKyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRhbGxvYy5jCkBAIC00NiwyNCArNDYsNiBAQAogI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfVVRJTElUSUVTCiBBQ1BJX01PRFVMRV9OQU1FKCJ1dGFsbG9jIikKIAotLyogTG9jYWwgcHJvdG90eXBlcyAqLwotI2lmZGVmIEFDUElfREJHX1RSQUNLX0FMTE9DQVRJT05TCi1zdGF0aWMgc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphY3BpX3V0X2ZpbmRfYWxsb2NhdGlvbih2b2lkICphbGxvY2F0aW9uKTsKLQotc3RhdGljIGFjcGlfc3RhdHVzCi1hY3BpX3V0X3RyYWNrX2FsbG9jYXRpb24oc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphZGRyZXNzLAotCQkJIGFjcGlfc2l6ZSBzaXplLAotCQkJIHU4IGFsbG9jX3R5cGUsIHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSwgdTMyIGxpbmUpOwotCi1zdGF0aWMgYWNwaV9zdGF0dXMKLWFjcGlfdXRfcmVtb3ZlX2FsbG9jYXRpb24oc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphZGRyZXNzLAotCQkJICB1MzIgY29tcG9uZW50LCBjaGFyICptb2R1bGUsIHUzMiBsaW5lKTsKLQotc3RhdGljIGFjcGlfc3RhdHVzCi1hY3BpX3V0X2NyZWF0ZV9saXN0KGNoYXIgKmxpc3RfbmFtZSwKLQkJICAgIHUxNiBvYmplY3Rfc2l6ZSwgc3RydWN0IGFjcGlfbWVtb3J5X2xpc3QgKipyZXR1cm5fY2FjaGUpOwotI2VuZGlmCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfdXRfY3JlYXRlX2NhY2hlcwpAQCAtNzUsMTEgKzU3LDU2IEBACiAgKiBERVNDUklQVElPTjogQ3JlYXRlIGFsbCBsb2NhbCBjYWNoZXMKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX3V0X2NyZWF0ZV9jYWNoZXModm9pZCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKKwkvKiBPYmplY3QgQ2FjaGVzLCBmb3IgZnJlcXVlbnRseSB1c2VkIG9iamVjdHMgKi8KKworCXN0YXR1cyA9CisJICAgIGFjcGlfb3NfY3JlYXRlX2NhY2hlKCJBY3BpLU5hbWVzcGFjZSIsCisJCQkJIHNpemVvZihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSksCisJCQkJIEFDUElfTUFYX05BTUVTUEFDRV9DQUNIRV9ERVBUSCwKKwkJCQkgJmFjcGlfZ2JsX25hbWVzcGFjZV9jYWNoZSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCXJldHVybiAoc3RhdHVzKTsKKwl9CisKKwlzdGF0dXMgPQorCSAgICBhY3BpX29zX2NyZWF0ZV9jYWNoZSgiQWNwaS1TdGF0ZSIsIHNpemVvZih1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUpLAorCQkJCSBBQ1BJX01BWF9TVEFURV9DQUNIRV9ERVBUSCwKKwkJCQkgJmFjcGlfZ2JsX3N0YXRlX2NhY2hlKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJcmV0dXJuIChzdGF0dXMpOworCX0KKworCXN0YXR1cyA9CisJICAgIGFjcGlfb3NfY3JlYXRlX2NhY2hlKCJBY3BpLVBhcnNlIiwKKwkJCQkgc2l6ZW9mKHN0cnVjdCBhY3BpX3BhcnNlX29ial9jb21tb24pLAorCQkJCSBBQ1BJX01BWF9QQVJTRV9DQUNIRV9ERVBUSCwKKwkJCQkgJmFjcGlfZ2JsX3BzX25vZGVfY2FjaGUpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQlyZXR1cm4gKHN0YXR1cyk7CisJfQorCisJc3RhdHVzID0KKwkgICAgYWNwaV9vc19jcmVhdGVfY2FjaGUoIkFjcGktUGFyc2VFeHQiLAorCQkJCSBzaXplb2Yoc3RydWN0IGFjcGlfcGFyc2Vfb2JqX25hbWVkKSwKKwkJCQkgQUNQSV9NQVhfRVhUUEFSU0VfQ0FDSEVfREVQVEgsCisJCQkJICZhY3BpX2dibF9wc19ub2RlX2V4dF9jYWNoZSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCXJldHVybiAoc3RhdHVzKTsKKwl9CisKKwlzdGF0dXMgPQorCSAgICBhY3BpX29zX2NyZWF0ZV9jYWNoZSgiQWNwaS1PcGVyYW5kIiwKKwkJCQkgc2l6ZW9mKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QpLAorCQkJCSBBQ1BJX01BWF9PQkpFQ1RfQ0FDSEVfREVQVEgsCisJCQkJICZhY3BpX2dibF9vcGVyYW5kX2NhY2hlKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJcmV0dXJuIChzdGF0dXMpOworCX0KKwogI2lmZGVmIEFDUElfREJHX1RSQUNLX0FMTE9DQVRJT05TCiAKIAkvKiBNZW1vcnkgYWxsb2NhdGlvbiBsaXN0cyAqLwpAQCAtOTgsNDMgKzEyNSw2IEBACiAJfQogI2VuZGlmCiAKLQkvKiBPYmplY3QgQ2FjaGVzLCBmb3IgZnJlcXVlbnRseSB1c2VkIG9iamVjdHMgKi8KLQotCXN0YXR1cyA9Ci0JICAgIGFjcGlfb3NfY3JlYXRlX2NhY2hlKCJhY3BpX3N0YXRlIiwgc2l6ZW9mKHVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSksCi0JCQkJIEFDUElfTUFYX1NUQVRFX0NBQ0hFX0RFUFRILAotCQkJCSAmYWNwaV9nYmxfc3RhdGVfY2FjaGUpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlyZXR1cm4gKHN0YXR1cyk7Ci0JfQotCi0Jc3RhdHVzID0KLQkgICAgYWNwaV9vc19jcmVhdGVfY2FjaGUoImFjcGlfcGFyc2UiLAotCQkJCSBzaXplb2Yoc3RydWN0IGFjcGlfcGFyc2Vfb2JqX2NvbW1vbiksCi0JCQkJIEFDUElfTUFYX1BBUlNFX0NBQ0hFX0RFUFRILAotCQkJCSAmYWNwaV9nYmxfcHNfbm9kZV9jYWNoZSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybiAoc3RhdHVzKTsKLQl9Ci0KLQlzdGF0dXMgPQotCSAgICBhY3BpX29zX2NyZWF0ZV9jYWNoZSgiYWNwaV9wYXJzZV9leHQiLAotCQkJCSBzaXplb2Yoc3RydWN0IGFjcGlfcGFyc2Vfb2JqX25hbWVkKSwKLQkJCQkgQUNQSV9NQVhfRVhUUEFSU0VfQ0FDSEVfREVQVEgsCi0JCQkJICZhY3BpX2dibF9wc19ub2RlX2V4dF9jYWNoZSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybiAoc3RhdHVzKTsKLQl9Ci0KLQlzdGF0dXMgPQotCSAgICBhY3BpX29zX2NyZWF0ZV9jYWNoZSgiYWNwaV9vcGVyYW5kIiwKLQkJCQkgc2l6ZW9mKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QpLAotCQkJCSBBQ1BJX01BWF9PQkpFQ1RfQ0FDSEVfREVQVEgsCi0JCQkJICZhY3BpX2dibF9vcGVyYW5kX2NhY2hlKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJcmV0dXJuIChzdGF0dXMpOwotCX0KLQogCXJldHVybiAoQUVfT0spOwogfQogCkBAIC0xNTMsNiArMTQzLDkgQEAKIGFjcGlfc3RhdHVzIGFjcGlfdXRfZGVsZXRlX2NhY2hlcyh2b2lkKQogewogCisJKHZvaWQpYWNwaV9vc19kZWxldGVfY2FjaGUoYWNwaV9nYmxfbmFtZXNwYWNlX2NhY2hlKTsKKwlhY3BpX2dibF9uYW1lc3BhY2VfY2FjaGUgPSBOVUxMOworCiAJKHZvaWQpYWNwaV9vc19kZWxldGVfY2FjaGUoYWNwaV9nYmxfc3RhdGVfY2FjaGUpOwogCWFjcGlfZ2JsX3N0YXRlX2NhY2hlID0gTlVMTDsKIApAQCAtMTY1LDYgKzE1OCwyMSBAQAogCSh2b2lkKWFjcGlfb3NfZGVsZXRlX2NhY2hlKGFjcGlfZ2JsX3BzX25vZGVfZXh0X2NhY2hlKTsKIAlhY3BpX2dibF9wc19ub2RlX2V4dF9jYWNoZSA9IE5VTEw7CiAKKyNpZmRlZiBBQ1BJX0RCR19UUkFDS19BTExPQ0FUSU9OUworCisJLyogRGVidWcgb25seSAtIGRpc3BsYXkgbGVmdG92ZXIgbWVtb3J5IGFsbG9jYXRpb24sIGlmIGFueSAqLworCisJYWNwaV91dF9kdW1wX2FsbG9jYXRpb25zKEFDUElfVUlOVDMyX01BWCwgTlVMTCk7CisKKwkvKiBGcmVlIG1lbW9yeSBsaXN0cyAqLworCisJYWNwaV9vc19mcmVlKGFjcGlfZ2JsX2dsb2JhbF9saXN0KTsKKwlhY3BpX2dibF9nbG9iYWxfbGlzdCA9IE5VTEw7CisKKwlhY3BpX29zX2ZyZWUoYWNwaV9nYmxfbnNfbm9kZV9saXN0KTsKKwlhY3BpX2dibF9uc19ub2RlX2xpc3QgPSBOVUxMOworI2VuZGlmCisKIAlyZXR1cm4gKEFFX09LKTsKIH0KIApAQCAtMjUyLDcgKzI2MCw3IEBACiAKIAkJLyogQWxsb2NhdGUgYSBuZXcgYnVmZmVyIHdpdGggbG9jYWwgaW50ZXJmYWNlIHRvIGFsbG93IHRyYWNraW5nICovCiAKLQkJYnVmZmVyLT5wb2ludGVyID0gQUNQSV9NRU1fQ0FMTE9DQVRFKHJlcXVpcmVkX2xlbmd0aCk7CisJCWJ1ZmZlci0+cG9pbnRlciA9IEFDUElfQUxMT0NBVEVfWkVST0VEKHJlcXVpcmVkX2xlbmd0aCk7CiAJCWlmICghYnVmZmVyLT5wb2ludGVyKSB7CiAJCQlyZXR1cm4gKEFFX05PX01FTU9SWSk7CiAJCX0KQEAgLTI4OCw3ICsyOTYsNyBAQAogICoKICAqIFJFVFVSTjogICAgICBBZGRyZXNzIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFpbHVyZS4KICAqCi0gKiBERVNDUklQVElPTjogVGhlIHN1YnN5c3RlbSdzIGVxdWl2YWxlbnQgb2YgbWFsbG9jLgorICogREVTQ1JJUFRJT046IFN1YnN5c3RlbSBlcXVpdmFsZW50IG9mIG1hbGxvYy4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0yOTYsMjMgKzMwNCwyMyBAQAogewogCXZvaWQgKmFsbG9jYXRpb247CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMigidXRfYWxsb2NhdGUiLCBzaXplKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMih1dF9hbGxvY2F0ZSwgc2l6ZSk7CiAKIAkvKiBDaGVjayBmb3IgYW4gaW5hZHZlcnRlbnQgc2l6ZSBvZiB6ZXJvIGJ5dGVzICovCiAKIAlpZiAoIXNpemUpIHsKLQkJQUNQSV9FUlJPUigobW9kdWxlLCBsaW5lLAotCQkJICAgICJ1dF9hbGxvY2F0ZTogQXR0ZW1wdCB0byBhbGxvY2F0ZSB6ZXJvIGJ5dGVzLCBhbGxvY2F0aW5nIDEgYnl0ZSIpKTsKKwkJQUNQSV9XQVJOSU5HKChtb2R1bGUsIGxpbmUsCisJCQkgICAgICAiQXR0ZW1wdCB0byBhbGxvY2F0ZSB6ZXJvIGJ5dGVzLCBhbGxvY2F0aW5nIDEgYnl0ZSIpKTsKIAkJc2l6ZSA9IDE7CiAJfQogCiAJYWxsb2NhdGlvbiA9IGFjcGlfb3NfYWxsb2NhdGUoc2l6ZSk7CiAJaWYgKCFhbGxvY2F0aW9uKSB7CisKIAkJLyogUmVwb3J0IGFsbG9jYXRpb24gZXJyb3IgKi8KIAotCQlBQ1BJX0VSUk9SKChtb2R1bGUsIGxpbmUsCi0JCQkgICAgInV0X2FsbG9jYXRlOiBDb3VsZCBub3QgYWxsb2NhdGUgc2l6ZSAlWCIsCi0JCQkgICAgKHUzMikgc2l6ZSkpOworCQlBQ1BJX1dBUk5JTkcoKG1vZHVsZSwgbGluZSwKKwkJCSAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgc2l6ZSAlWCIsICh1MzIpIHNpemUpKTsKIAogCQlyZXR1cm5fUFRSKE5VTEwpOwogCX0KQEAgLTMyMiw3ICszMzAsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X2NhbGxvY2F0ZQorICogRlVOQ1RJT046ICAgIGFjcGlfdXRfYWxsb2NhdGVfemVyb2VkCiAgKgogICogUEFSQU1FVEVSUzogIFNpemUgICAgICAgICAgICAgICAgLSBTaXplIG9mIHRoZSBhbGxvY2F0aW9uCiAgKiAgICAgICAgICAgICAgQ29tcG9uZW50ICAgICAgICAgICAtIENvbXBvbmVudCB0eXBlIG9mIGNhbGxlcgpAQCAtMzMxLDU0MiArMzM5LDI0IEBACiAgKgogICogUkVUVVJOOiAgICAgIEFkZHJlc3Mgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlLgogICoKLSAqIERFU0NSSVBUSU9OOiBTdWJzeXN0ZW0gZXF1aXZhbGVudCBvZiBjYWxsb2MuCisgKiBERVNDUklQVElPTjogU3Vic3lzdGVtIGVxdWl2YWxlbnQgb2YgY2FsbG9jLiBBbGxvY2F0ZSBhbmQgemVybyBtZW1vcnkuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdm9pZCAqYWNwaV91dF9jYWxsb2NhdGUoYWNwaV9zaXplIHNpemUsIHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSwgdTMyIGxpbmUpCit2b2lkICphY3BpX3V0X2FsbG9jYXRlX3plcm9lZChhY3BpX3NpemUgc2l6ZSwKKwkJCSAgICAgIHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSwgdTMyIGxpbmUpCiB7CiAJdm9pZCAqYWxsb2NhdGlvbjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJ1dF9jYWxsb2NhdGUiLCBzaXplKTsKLQotCS8qIENoZWNrIGZvciBhbiBpbmFkdmVydGVudCBzaXplIG9mIHplcm8gYnl0ZXMgKi8KLQotCWlmICghc2l6ZSkgewotCQlBQ1BJX0VSUk9SKChtb2R1bGUsIGxpbmUsCi0JCQkgICAgIkF0dGVtcHQgdG8gYWxsb2NhdGUgemVybyBieXRlcywgYWxsb2NhdGluZyAxIGJ5dGUiKSk7Ci0JCXNpemUgPSAxOwotCX0KLQotCWFsbG9jYXRpb24gPSBhY3BpX29zX2FsbG9jYXRlKHNpemUpOwotCWlmICghYWxsb2NhdGlvbikgewotCQkvKiBSZXBvcnQgYWxsb2NhdGlvbiBlcnJvciAqLwotCi0JCUFDUElfRVJST1IoKG1vZHVsZSwgbGluZSwKLQkJCSAgICAiQ291bGQgbm90IGFsbG9jYXRlIHNpemUgJVgiLCAodTMyKSBzaXplKSk7Ci0JCXJldHVybl9QVFIoTlVMTCk7Ci0JfQotCi0JLyogQ2xlYXIgdGhlIG1lbW9yeSBibG9jayAqLwotCi0JQUNQSV9NRU1TRVQoYWxsb2NhdGlvbiwgMCwgc2l6ZSk7Ci0JcmV0dXJuX1BUUihhbGxvY2F0aW9uKTsKLX0KLQotI2lmZGVmIEFDUElfREJHX1RSQUNLX0FMTE9DQVRJT05TCi0vKgotICogVGhlc2UgcHJvY2VkdXJlcyBhcmUgdXNlZCBmb3IgdHJhY2tpbmcgbWVtb3J5IGxlYWtzIGluIHRoZSBzdWJzeXN0ZW0sIGFuZAotICogdGhleSBnZXQgY29tcGlsZWQgb3V0IHdoZW4gdGhlIEFDUElfREJHX1RSQUNLX0FMTE9DQVRJT05TIGlzIG5vdCBzZXQuCi0gKgotICogRWFjaCBtZW1vcnkgYWxsb2NhdGlvbiBpcyB0cmFja2VkIHZpYSBhIGRvdWJseSBsaW5rZWQgbGlzdC4gIEVhY2gKLSAqIGVsZW1lbnQgY29udGFpbnMgdGhlIGNhbGxlcidzIGNvbXBvbmVudCwgbW9kdWxlIG5hbWUsIGZ1bmN0aW9uIG5hbWUsIGFuZAotICogbGluZSBudW1iZXIuICBhY3BpX3V0X2FsbG9jYXRlIGFuZCBhY3BpX3V0X2NhbGxvY2F0ZSBjYWxsCi0gKiBhY3BpX3V0X3RyYWNrX2FsbG9jYXRpb24gdG8gYWRkIGFuIGVsZW1lbnQgdG8gdGhlIGxpc3Q7IGRlbGV0aW9uCi0gKiBvY2N1cnMgaW4gdGhlIGJvZHkgb2YgYWNwaV91dF9mcmVlLgotICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogRlVOQ1RJT046ICAgIGFjcGlfdXRfY3JlYXRlX2xpc3QKLSAqCi0gKiBQQVJBTUVURVJTOiAgY2FjaGVfbmFtZSAgICAgIC0gQXNjaWkgbmFtZSBmb3IgdGhlIGNhY2hlCi0gKiAgICAgICAgICAgICAgb2JqZWN0X3NpemUgICAgIC0gU2l6ZSBvZiBlYWNoIGNhY2hlZCBvYmplY3QKLSAqICAgICAgICAgICAgICByZXR1cm5fY2FjaGUgICAgLSBXaGVyZSB0aGUgbmV3IGNhY2hlIG9iamVjdCBpcyByZXR1cm5lZAotICoKLSAqIFJFVFVSTjogICAgICBTdGF0dXMKLSAqCi0gKiBERVNDUklQVElPTjogQ3JlYXRlIGEgbG9jYWwgbWVtb3J5IGxpc3QgZm9yIHRyYWNraW5nIHB1cnBvc2VkCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIGFjcGlfc3RhdHVzCi1hY3BpX3V0X2NyZWF0ZV9saXN0KGNoYXIgKmxpc3RfbmFtZSwKLQkJICAgIHUxNiBvYmplY3Rfc2l6ZSwgc3RydWN0IGFjcGlfbWVtb3J5X2xpc3QgKipyZXR1cm5fY2FjaGUpCi17Ci0Jc3RydWN0IGFjcGlfbWVtb3J5X2xpc3QgKmNhY2hlOwotCi0JY2FjaGUgPSBhY3BpX29zX2FsbG9jYXRlKHNpemVvZihzdHJ1Y3QgYWNwaV9tZW1vcnlfbGlzdCkpOwotCWlmICghY2FjaGUpIHsKLQkJcmV0dXJuIChBRV9OT19NRU1PUlkpOwotCX0KLQotCUFDUElfTUVNU0VUKGNhY2hlLCAwLCBzaXplb2Yoc3RydWN0IGFjcGlfbWVtb3J5X2xpc3QpKTsKLQotCWNhY2hlLT5saXN0X25hbWUgPSBsaXN0X25hbWU7Ci0JY2FjaGUtPm9iamVjdF9zaXplID0gb2JqZWN0X3NpemU7Ci0KLQkqcmV0dXJuX2NhY2hlID0gY2FjaGU7Ci0JcmV0dXJuIChBRV9PSyk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogRlVOQ1RJT046ICAgIGFjcGlfdXRfYWxsb2NhdGVfYW5kX3RyYWNrCi0gKgotICogUEFSQU1FVEVSUzogIFNpemUgICAgICAgICAgICAgICAgLSBTaXplIG9mIHRoZSBhbGxvY2F0aW9uCi0gKiAgICAgICAgICAgICAgQ29tcG9uZW50ICAgICAgICAgICAtIENvbXBvbmVudCB0eXBlIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIE1vZHVsZSAgICAgICAgICAgICAgLSBTb3VyY2UgZmlsZSBuYW1lIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIExpbmUgICAgICAgICAgICAgICAgLSBMaW5lIG51bWJlciBvZiBjYWxsZXIKLSAqCi0gKiBSRVRVUk46ICAgICAgQWRkcmVzcyBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUuCi0gKgotICogREVTQ1JJUFRJT046IFRoZSBzdWJzeXN0ZW0ncyBlcXVpdmFsZW50IG9mIG1hbGxvYy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi12b2lkICphY3BpX3V0X2FsbG9jYXRlX2FuZF90cmFjayhhY3BpX3NpemUgc2l6ZSwKLQkJCQkgdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSkKLXsKLQlzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1fYmxvY2sgKmFsbG9jYXRpb247Ci0JYWNwaV9zdGF0dXMgc3RhdHVzOwotCi0JYWxsb2NhdGlvbiA9Ci0JICAgIGFjcGlfdXRfYWxsb2NhdGUoc2l6ZSArIHNpemVvZihzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1faGVhZGVyKSwKLQkJCSAgICAgY29tcG9uZW50LCBtb2R1bGUsIGxpbmUpOwotCWlmICghYWxsb2NhdGlvbikgewotCQlyZXR1cm4gKE5VTEwpOwotCX0KLQotCXN0YXR1cyA9IGFjcGlfdXRfdHJhY2tfYWxsb2NhdGlvbihhbGxvY2F0aW9uLCBzaXplLAotCQkJCQkgIEFDUElfTUVNX01BTExPQywgY29tcG9uZW50LCBtb2R1bGUsCi0JCQkJCSAgbGluZSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCWFjcGlfb3NfZnJlZShhbGxvY2F0aW9uKTsKLQkJcmV0dXJuIChOVUxMKTsKLQl9Ci0KLQlhY3BpX2dibF9nbG9iYWxfbGlzdC0+dG90YWxfYWxsb2NhdGVkKys7Ci0JYWNwaV9nYmxfZ2xvYmFsX2xpc3QtPmN1cnJlbnRfdG90YWxfc2l6ZSArPSAodTMyKSBzaXplOwotCi0JcmV0dXJuICgodm9pZCAqKSZhbGxvY2F0aW9uLT51c2VyX3NwYWNlKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9jYWxsb2NhdGVfYW5kX3RyYWNrCi0gKgotICogUEFSQU1FVEVSUzogIFNpemUgICAgICAgICAgICAgICAgLSBTaXplIG9mIHRoZSBhbGxvY2F0aW9uCi0gKiAgICAgICAgICAgICAgQ29tcG9uZW50ICAgICAgICAgICAtIENvbXBvbmVudCB0eXBlIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIE1vZHVsZSAgICAgICAgICAgICAgLSBTb3VyY2UgZmlsZSBuYW1lIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIExpbmUgICAgICAgICAgICAgICAgLSBMaW5lIG51bWJlciBvZiBjYWxsZXIKLSAqCi0gKiBSRVRVUk46ICAgICAgQWRkcmVzcyBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeSBvbiBzdWNjZXNzLCBOVUxMIG9uIGZhaWx1cmUuCi0gKgotICogREVTQ1JJUFRJT046IFN1YnN5c3RlbSBlcXVpdmFsZW50IG9mIGNhbGxvYy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi12b2lkICphY3BpX3V0X2NhbGxvY2F0ZV9hbmRfdHJhY2soYWNwaV9zaXplIHNpemUsCi0JCQkJICB1MzIgY29tcG9uZW50LCBjaGFyICptb2R1bGUsIHUzMiBsaW5lKQotewotCXN0cnVjdCBhY3BpX2RlYnVnX21lbV9ibG9jayAqYWxsb2NhdGlvbjsKLQlhY3BpX3N0YXR1cyBzdGF0dXM7Ci0KLQlhbGxvY2F0aW9uID0KLQkgICAgYWNwaV91dF9jYWxsb2NhdGUoc2l6ZSArIHNpemVvZihzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1faGVhZGVyKSwKLQkJCSAgICAgIGNvbXBvbmVudCwgbW9kdWxlLCBsaW5lKTsKLQlpZiAoIWFsbG9jYXRpb24pIHsKLQkJLyogUmVwb3J0IGFsbG9jYXRpb24gZXJyb3IgKi8KLQotCQlBQ1BJX0VSUk9SKChtb2R1bGUsIGxpbmUsCi0JCQkgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaXplICVYIiwgKHUzMikgc2l6ZSkpOwotCQlyZXR1cm4gKE5VTEwpOwotCX0KLQotCXN0YXR1cyA9IGFjcGlfdXRfdHJhY2tfYWxsb2NhdGlvbihhbGxvY2F0aW9uLCBzaXplLAotCQkJCQkgIEFDUElfTUVNX0NBTExPQywgY29tcG9uZW50LCBtb2R1bGUsCi0JCQkJCSAgbGluZSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCWFjcGlfb3NfZnJlZShhbGxvY2F0aW9uKTsKLQkJcmV0dXJuIChOVUxMKTsKLQl9Ci0KLQlhY3BpX2dibF9nbG9iYWxfbGlzdC0+dG90YWxfYWxsb2NhdGVkKys7Ci0JYWNwaV9nYmxfZ2xvYmFsX2xpc3QtPmN1cnJlbnRfdG90YWxfc2l6ZSArPSAodTMyKSBzaXplOwotCi0JcmV0dXJuICgodm9pZCAqKSZhbGxvY2F0aW9uLT51c2VyX3NwYWNlKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9mcmVlX2FuZF90cmFjawotICoKLSAqIFBBUkFNRVRFUlM6ICBBbGxvY2F0aW9uICAgICAgICAgIC0gQWRkcmVzcyBvZiB0aGUgbWVtb3J5IHRvIGRlYWxsb2NhdGUKLSAqICAgICAgICAgICAgICBDb21wb25lbnQgICAgICAgICAgIC0gQ29tcG9uZW50IHR5cGUgb2YgY2FsbGVyCi0gKiAgICAgICAgICAgICAgTW9kdWxlICAgICAgICAgICAgICAtIFNvdXJjZSBmaWxlIG5hbWUgb2YgY2FsbGVyCi0gKiAgICAgICAgICAgICAgTGluZSAgICAgICAgICAgICAgICAtIExpbmUgbnVtYmVyIG9mIGNhbGxlcgotICoKLSAqIFJFVFVSTjogICAgICBOb25lCi0gKgotICogREVTQ1JJUFRJT046IEZyZWVzIHRoZSBtZW1vcnkgYXQgQWxsb2NhdGlvbgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXZvaWQKLWFjcGlfdXRfZnJlZV9hbmRfdHJhY2sodm9pZCAqYWxsb2NhdGlvbiwgdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSkKLXsKLQlzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1fYmxvY2sgKmRlYnVnX2Jsb2NrOwotCWFjcGlfc3RhdHVzIHN0YXR1czsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ1dF9mcmVlIiwgYWxsb2NhdGlvbik7Ci0KLQlpZiAoTlVMTCA9PSBhbGxvY2F0aW9uKSB7Ci0JCUFDUElfRVJST1IoKG1vZHVsZSwgbGluZSwgIkF0dGVtcHQgdG8gZGVsZXRlIGEgTlVMTCBhZGRyZXNzIikpOwotCi0JCXJldHVybl9WT0lEOwotCX0KLQotCWRlYnVnX2Jsb2NrID0gQUNQSV9DQVNUX1BUUihzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1fYmxvY2ssCi0JCQkJICAgICgoKGNoYXIgKilhbGxvY2F0aW9uKSAtCi0JCQkJICAgICBzaXplb2Yoc3RydWN0IGFjcGlfZGVidWdfbWVtX2hlYWRlcikpKTsKLQotCWFjcGlfZ2JsX2dsb2JhbF9saXN0LT50b3RhbF9mcmVlZCsrOwotCWFjcGlfZ2JsX2dsb2JhbF9saXN0LT5jdXJyZW50X3RvdGFsX3NpemUgLT0gZGVidWdfYmxvY2stPnNpemU7Ci0KLQlzdGF0dXMgPSBhY3BpX3V0X3JlbW92ZV9hbGxvY2F0aW9uKGRlYnVnX2Jsb2NrLAotCQkJCQkgICBjb21wb25lbnQsIG1vZHVsZSwgbGluZSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCUFDUElfRVhDRVBUSU9OKChBRV9JTkZPLCBzdGF0dXMsICJDb3VsZCBub3QgZnJlZSBtZW1vcnkiKSk7Ci0JfQotCi0JYWNwaV9vc19mcmVlKGRlYnVnX2Jsb2NrKTsKLQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0FMTE9DQVRJT05TLCAiJXAgZnJlZWRcbiIsIGFsbG9jYXRpb24pKTsKLQlyZXR1cm5fVk9JRDsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9maW5kX2FsbG9jYXRpb24KLSAqCi0gKiBQQVJBTUVURVJTOiAgQWxsb2NhdGlvbiAgICAgICAgICAgICAgLSBBZGRyZXNzIG9mIGFsbG9jYXRlZCBtZW1vcnkKLSAqCi0gKiBSRVRVUk46ICAgICAgQSBsaXN0IGVsZW1lbnQgaWYgZm91bmQ7IE5VTEwgb3RoZXJ3aXNlLgotICoKLSAqIERFU0NSSVBUSU9OOiBTZWFyY2hlcyBmb3IgYW4gZWxlbWVudCBpbiB0aGUgZ2xvYmFsIGFsbG9jYXRpb24gdHJhY2tpbmcgbGlzdC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphY3BpX3V0X2ZpbmRfYWxsb2NhdGlvbih2b2lkICphbGxvY2F0aW9uKQotewotCXN0cnVjdCBhY3BpX2RlYnVnX21lbV9ibG9jayAqZWxlbWVudDsKLQogCUFDUElfRlVOQ1RJT05fRU5UUlkoKTsKIAotCWVsZW1lbnQgPSBhY3BpX2dibF9nbG9iYWxfbGlzdC0+bGlzdF9oZWFkOworCWFsbG9jYXRpb24gPSBhY3BpX3V0X2FsbG9jYXRlKHNpemUsIGNvbXBvbmVudCwgbW9kdWxlLCBsaW5lKTsKKwlpZiAoYWxsb2NhdGlvbikgewogCi0JLyogU2VhcmNoIGZvciB0aGUgYWRkcmVzcy4gKi8KKwkJLyogQ2xlYXIgdGhlIG1lbW9yeSBibG9jayAqLwogCi0Jd2hpbGUgKGVsZW1lbnQpIHsKLQkJaWYgKGVsZW1lbnQgPT0gYWxsb2NhdGlvbikgewotCQkJcmV0dXJuIChlbGVtZW50KTsKLQkJfQotCi0JCWVsZW1lbnQgPSBlbGVtZW50LT5uZXh0OworCQlBQ1BJX01FTVNFVChhbGxvY2F0aW9uLCAwLCBzaXplKTsKIAl9CiAKLQlyZXR1cm4gKE5VTEwpOworCXJldHVybiAoYWxsb2NhdGlvbik7CiB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogRlVOQ1RJT046ICAgIGFjcGlfdXRfdHJhY2tfYWxsb2NhdGlvbgotICoKLSAqIFBBUkFNRVRFUlM6ICBBbGxvY2F0aW9uICAgICAgICAgIC0gQWRkcmVzcyBvZiBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgU2l6ZSAgICAgICAgICAgICAgICAtIFNpemUgb2YgdGhlIGFsbG9jYXRpb24KLSAqICAgICAgICAgICAgICBhbGxvY190eXBlICAgICAgICAgIC0gTUVNX01BTExPQyBvciBNRU1fQ0FMTE9DCi0gKiAgICAgICAgICAgICAgQ29tcG9uZW50ICAgICAgICAgICAtIENvbXBvbmVudCB0eXBlIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIE1vZHVsZSAgICAgICAgICAgICAgLSBTb3VyY2UgZmlsZSBuYW1lIG9mIGNhbGxlcgotICogICAgICAgICAgICAgIExpbmUgICAgICAgICAgICAgICAgLSBMaW5lIG51bWJlciBvZiBjYWxsZXIKLSAqCi0gKiBSRVRVUk46ICAgICAgTm9uZS4KLSAqCi0gKiBERVNDUklQVElPTjogSW5zZXJ0cyBhbiBlbGVtZW50IGludG8gdGhlIGdsb2JhbCBhbGxvY2F0aW9uIHRyYWNraW5nIGxpc3QuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIGFjcGlfc3RhdHVzCi1hY3BpX3V0X3RyYWNrX2FsbG9jYXRpb24oc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphbGxvY2F0aW9uLAotCQkJIGFjcGlfc2l6ZSBzaXplLAotCQkJIHU4IGFsbG9jX3R5cGUsIHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSwgdTMyIGxpbmUpCi17Ci0Jc3RydWN0IGFjcGlfbWVtb3J5X2xpc3QgKm1lbV9saXN0OwotCXN0cnVjdCBhY3BpX2RlYnVnX21lbV9ibG9jayAqZWxlbWVudDsKLQlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKLQotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ1dF90cmFja19hbGxvY2F0aW9uIiwgYWxsb2NhdGlvbik7Ci0KLQltZW1fbGlzdCA9IGFjcGlfZ2JsX2dsb2JhbF9saXN0OwotCXN0YXR1cyA9IGFjcGlfdXRfYWNxdWlyZV9tdXRleChBQ1BJX01UWF9NRU1PUlkpOwotCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLQl9Ci0KLQkvKgotCSAqIFNlYXJjaCBsaXN0IGZvciB0aGlzIGFkZHJlc3MgdG8gbWFrZSBzdXJlIGl0IGlzIG5vdCBhbHJlYWR5IG9uIHRoZSBsaXN0LgotCSAqIFRoaXMgd2lsbCBjYXRjaCBzZXZlcmFsIGtpbmRzIG9mIHByb2JsZW1zLgotCSAqLwotCWVsZW1lbnQgPSBhY3BpX3V0X2ZpbmRfYWxsb2NhdGlvbihhbGxvY2F0aW9uKTsKLQlpZiAoZWxlbWVudCkgewotCQlBQ1BJX0VSUk9SKChBRV9JTkZPLAotCQkJICAgICJ1dF90cmFja19hbGxvY2F0aW9uOiBBbGxvY2F0aW9uIGFscmVhZHkgcHJlc2VudCBpbiBsaXN0ISAoJXApIiwKLQkJCSAgICBhbGxvY2F0aW9uKSk7Ci0KLQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkVsZW1lbnQgJXAgQWRkcmVzcyAlcCIsCi0JCQkgICAgZWxlbWVudCwgYWxsb2NhdGlvbikpOwotCi0JCWdvdG8gdW5sb2NrX2FuZF9leGl0OwotCX0KLQotCS8qIEZpbGwgaW4gdGhlIGluc3RhbmNlIGRhdGEuICovCi0KLQlhbGxvY2F0aW9uLT5zaXplID0gKHUzMikgc2l6ZTsKLQlhbGxvY2F0aW9uLT5hbGxvY190eXBlID0gYWxsb2NfdHlwZTsKLQlhbGxvY2F0aW9uLT5jb21wb25lbnQgPSBjb21wb25lbnQ7Ci0JYWxsb2NhdGlvbi0+bGluZSA9IGxpbmU7Ci0KLQlBQ1BJX1NUUk5DUFkoYWxsb2NhdGlvbi0+bW9kdWxlLCBtb2R1bGUsIEFDUElfTUFYX01PRFVMRV9OQU1FKTsKLQlhbGxvY2F0aW9uLT5tb2R1bGVbQUNQSV9NQVhfTU9EVUxFX05BTUUgLSAxXSA9IDA7Ci0KLQkvKiBJbnNlcnQgYXQgbGlzdCBoZWFkICovCi0KLQlpZiAobWVtX2xpc3QtPmxpc3RfaGVhZCkgewotCQkoKHN0cnVjdCBhY3BpX2RlYnVnX21lbV9ibG9jayAqKShtZW1fbGlzdC0+bGlzdF9oZWFkKSktPgotCQkgICAgcHJldmlvdXMgPSBhbGxvY2F0aW9uOwotCX0KLQotCWFsbG9jYXRpb24tPm5leHQgPSBtZW1fbGlzdC0+bGlzdF9oZWFkOwotCWFsbG9jYXRpb24tPnByZXZpb3VzID0gTlVMTDsKLQotCW1lbV9saXN0LT5saXN0X2hlYWQgPSBhbGxvY2F0aW9uOwotCi0gICAgICB1bmxvY2tfYW5kX2V4aXQ6Ci0Jc3RhdHVzID0gYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX01FTU9SWSk7Ci0JcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogRlVOQ1RJT046ICAgIGFjcGlfdXRfcmVtb3ZlX2FsbG9jYXRpb24KLSAqCi0gKiBQQVJBTUVURVJTOiAgQWxsb2NhdGlvbiAgICAgICAgICAtIEFkZHJlc3Mgb2YgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgIENvbXBvbmVudCAgICAgICAgICAgLSBDb21wb25lbnQgdHlwZSBvZiBjYWxsZXIKLSAqICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgIC0gU291cmNlIGZpbGUgbmFtZSBvZiBjYWxsZXIKLSAqICAgICAgICAgICAgICBMaW5lICAgICAgICAgICAgICAgIC0gTGluZSBudW1iZXIgb2YgY2FsbGVyCi0gKgotICogUkVUVVJOOgotICoKLSAqIERFU0NSSVBUSU9OOiBEZWxldGVzIGFuIGVsZW1lbnQgZnJvbSB0aGUgZ2xvYmFsIGFsbG9jYXRpb24gdHJhY2tpbmcgbGlzdC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgYWNwaV9zdGF0dXMKLWFjcGlfdXRfcmVtb3ZlX2FsbG9jYXRpb24oc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICphbGxvY2F0aW9uLAotCQkJICB1MzIgY29tcG9uZW50LCBjaGFyICptb2R1bGUsIHUzMiBsaW5lKQotewotCXN0cnVjdCBhY3BpX21lbW9yeV9saXN0ICptZW1fbGlzdDsKLQlhY3BpX3N0YXR1cyBzdGF0dXM7Ci0KLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9yZW1vdmVfYWxsb2NhdGlvbiIpOwotCi0JbWVtX2xpc3QgPSBhY3BpX2dibF9nbG9iYWxfbGlzdDsKLQlpZiAoTlVMTCA9PSBtZW1fbGlzdC0+bGlzdF9oZWFkKSB7Ci0JCS8qIE5vIGFsbG9jYXRpb25zISAqLwotCi0JCUFDUElfRVJST1IoKG1vZHVsZSwgbGluZSwKLQkJCSAgICAiRW1wdHkgYWxsb2NhdGlvbiBsaXN0LCBub3RoaW5nIHRvIGZyZWUhIikpOwotCi0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7Ci0JfQotCi0Jc3RhdHVzID0gYWNwaV91dF9hY3F1aXJlX211dGV4KEFDUElfTVRYX01FTU9SWSk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwotCX0KLQotCS8qIFVubGluayAqLwotCi0JaWYgKGFsbG9jYXRpb24tPnByZXZpb3VzKSB7Ci0JCShhbGxvY2F0aW9uLT5wcmV2aW91cyktPm5leHQgPSBhbGxvY2F0aW9uLT5uZXh0OwotCX0gZWxzZSB7Ci0JCW1lbV9saXN0LT5saXN0X2hlYWQgPSBhbGxvY2F0aW9uLT5uZXh0OwotCX0KLQotCWlmIChhbGxvY2F0aW9uLT5uZXh0KSB7Ci0JCShhbGxvY2F0aW9uLT5uZXh0KS0+cHJldmlvdXMgPSBhbGxvY2F0aW9uLT5wcmV2aW91czsKLQl9Ci0KLQkvKiBNYXJrIHRoZSBzZWdtZW50IGFzIGRlbGV0ZWQgKi8KLQotCUFDUElfTUVNU0VUKCZhbGxvY2F0aW9uLT51c2VyX3NwYWNlLCAweEVBLCBhbGxvY2F0aW9uLT5zaXplKTsKLQotCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfQUxMT0NBVElPTlMsICJGcmVlaW5nIHNpemUgMCVYXG4iLAotCQkJICBhbGxvY2F0aW9uLT5zaXplKSk7Ci0KLQlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTUVNT1JZKTsKLQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9kdW1wX2FsbG9jYXRpb25faW5mbwotICoKLSAqIFBBUkFNRVRFUlM6Ci0gKgotICogUkVUVVJOOiAgICAgIE5vbmUKLSAqCi0gKiBERVNDUklQVElPTjogUHJpbnQgc29tZSBpbmZvIGFib3V0IHRoZSBvdXRzdGFuZGluZyBhbGxvY2F0aW9ucy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKLXZvaWQgYWNwaV91dF9kdW1wX2FsbG9jYXRpb25faW5mbyh2b2lkKQotewotLyoKLQlzdHJ1Y3QgYWNwaV9tZW1vcnlfbGlzdCAgICAgICAgICptZW1fbGlzdDsKLSovCi0KLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9kdW1wX2FsbG9jYXRpb25faW5mbyIpOwotCi0vKgotCUFDUElfREVCVUdfUFJJTlQgKFRSQUNFX0FMTE9DQVRJT05TIHwgVFJBQ0VfVEFCTEVTLAotCQkJICAoIiUzMHM6ICU0ZCAoJTNkIEtiKVxuIiwgIkN1cnJlbnQgYWxsb2NhdGlvbnMiLAotCQkJICBtZW1fbGlzdC0+Y3VycmVudF9jb3VudCwKLQkJCSAgUk9VTkRfVVBfVE9fMUsgKG1lbV9saXN0LT5jdXJyZW50X3NpemUpKSk7Ci0KLQlBQ1BJX0RFQlVHX1BSSU5UIChUUkFDRV9BTExPQ0FUSU9OUyB8IFRSQUNFX1RBQkxFUywKLQkJCSAgKCIlMzBzOiAlNGQgKCUzZCBLYilcbiIsICJNYXggY29uY3VycmVudCBhbGxvY2F0aW9ucyIsCi0JCQkgIG1lbV9saXN0LT5tYXhfY29uY3VycmVudF9jb3VudCwKLQkJCSAgUk9VTkRfVVBfVE9fMUsgKG1lbV9saXN0LT5tYXhfY29uY3VycmVudF9zaXplKSkpOwotCi0JQUNQSV9ERUJVR19QUklOVCAoVFJBQ0VfQUxMT0NBVElPTlMgfCBUUkFDRV9UQUJMRVMsCi0JCQkgICgiJTMwczogJTRkICglM2QgS2IpXG4iLCAiVG90YWwgKGFsbCkgaW50ZXJuYWwgb2JqZWN0cyIsCi0JCQkgIHJ1bm5pbmdfb2JqZWN0X2NvdW50LAotCQkJICBST1VORF9VUF9UT18xSyAocnVubmluZ19vYmplY3Rfc2l6ZSkpKTsKLQotCUFDUElfREVCVUdfUFJJTlQgKFRSQUNFX0FMTE9DQVRJT05TIHwgVFJBQ0VfVEFCTEVTLAotCQkJICAoIiUzMHM6ICU0ZCAoJTNkIEtiKVxuIiwgIlRvdGFsIChhbGwpIGFsbG9jYXRpb25zIiwKLQkJCSAgcnVubmluZ19hbGxvY19jb3VudCwKLQkJCSAgUk9VTkRfVVBfVE9fMUsgKHJ1bm5pbmdfYWxsb2Nfc2l6ZSkpKTsKLQotCUFDUElfREVCVUdfUFJJTlQgKFRSQUNFX0FMTE9DQVRJT05TIHwgVFJBQ0VfVEFCTEVTLAotCQkJICAoIiUzMHM6ICU0ZCAoJTNkIEtiKVxuIiwgIkN1cnJlbnQgTm9kZXMiLAotCQkJICBhY3BpX2dibF9jdXJyZW50X25vZGVfY291bnQsCi0JCQkgIFJPVU5EX1VQX1RPXzFLIChhY3BpX2dibF9jdXJyZW50X25vZGVfc2l6ZSkpKTsKLQotCUFDUElfREVCVUdfUFJJTlQgKFRSQUNFX0FMTE9DQVRJT05TIHwgVFJBQ0VfVEFCTEVTLAotCQkJICAoIiUzMHM6ICU0ZCAoJTNkIEtiKVxuIiwgIk1heCBOb2RlcyIsCi0JCQkgIGFjcGlfZ2JsX21heF9jb25jdXJyZW50X25vZGVfY291bnQsCi0JCQkgIFJPVU5EX1VQX1RPXzFLICgoYWNwaV9nYmxfbWF4X2NvbmN1cnJlbnRfbm9kZV9jb3VudCAqCi0JCQkJCSBzaXplb2YgKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlKSkpKSk7Ci0qLwotCXJldHVybl9WT0lEOwotfQotI2VuZGlmCQkJCS8qICBBQ1BJX0ZVVFVSRV9VU0FHRSAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9kdW1wX2FsbG9jYXRpb25zCi0gKgotICogUEFSQU1FVEVSUzogIENvbXBvbmVudCAgICAgICAgICAgLSBDb21wb25lbnQocykgdG8gZHVtcCBpbmZvIGZvci4KLSAqICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgIC0gTW9kdWxlIHRvIGR1bXAgaW5mbyBmb3IuICBOVUxMIG1lYW5zIGFsbC4KLSAqCi0gKiBSRVRVUk46ICAgICAgTm9uZQotICoKLSAqIERFU0NSSVBUSU9OOiBQcmludCBhIGxpc3Qgb2YgYWxsIG91dHN0YW5kaW5nIGFsbG9jYXRpb25zLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXZvaWQgYWNwaV91dF9kdW1wX2FsbG9jYXRpb25zKHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSkKLXsKLQlzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1fYmxvY2sgKmVsZW1lbnQ7Ci0JdW5pb24gYWNwaV9kZXNjcmlwdG9yICpkZXNjcmlwdG9yOwotCXUzMiBudW1fb3V0c3RhbmRpbmcgPSAwOwotCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfZHVtcF9hbGxvY2F0aW9ucyIpOwotCi0JLyoKLQkgKiBXYWxrIHRoZSBhbGxvY2F0aW9uIGxpc3QuCi0JICovCi0JaWYgKEFDUElfRkFJTFVSRShhY3BpX3V0X2FjcXVpcmVfbXV0ZXgoQUNQSV9NVFhfTUVNT1JZKSkpIHsKLQkJcmV0dXJuOwotCX0KLQotCWVsZW1lbnQgPSBhY3BpX2dibF9nbG9iYWxfbGlzdC0+bGlzdF9oZWFkOwotCXdoaWxlIChlbGVtZW50KSB7Ci0JCWlmICgoZWxlbWVudC0+Y29tcG9uZW50ICYgY29tcG9uZW50KSAmJgotCQkgICAgKChtb2R1bGUgPT0gTlVMTCkKLQkJICAgICB8fCAoMCA9PSBBQ1BJX1NUUkNNUChtb2R1bGUsIGVsZW1lbnQtPm1vZHVsZSkpKSkgewotCQkJLyogSWdub3JlIGFsbG9jYXRlZCBvYmplY3RzIHRoYXQgYXJlIGluIGEgY2FjaGUgKi8KLQotCQkJZGVzY3JpcHRvciA9Ci0JCQkgICAgQUNQSV9DQVNUX1BUUih1bmlvbiBhY3BpX2Rlc2NyaXB0b3IsCi0JCQkJCSAgJmVsZW1lbnQtPnVzZXJfc3BhY2UpOwotCQkJaWYgKGRlc2NyaXB0b3ItPmRlc2NyaXB0b3JfaWQgIT0gQUNQSV9ERVNDX1RZUEVfQ0FDSEVEKSB7Ci0JCQkJYWNwaV9vc19wcmludGYoIiVwIExlbiAlMDRYICU5LjlzLSVkIFslc10gIiwKLQkJCQkJICAgICAgIGRlc2NyaXB0b3IsIGVsZW1lbnQtPnNpemUsCi0JCQkJCSAgICAgICBlbGVtZW50LT5tb2R1bGUsIGVsZW1lbnQtPmxpbmUsCi0JCQkJCSAgICAgICBhY3BpX3V0X2dldF9kZXNjcmlwdG9yX25hbWUKLQkJCQkJICAgICAgIChkZXNjcmlwdG9yKSk7Ci0KLQkJCQkvKiBNb3N0IG9mIHRoZSBlbGVtZW50cyB3aWxsIGJlIE9wZXJhbmQgb2JqZWN0cy4gKi8KLQotCQkJCXN3aXRjaCAoQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKGRlc2NyaXB0b3IpKSB7Ci0JCQkJY2FzZSBBQ1BJX0RFU0NfVFlQRV9PUEVSQU5EOgotCQkJCQlhY3BpX29zX3ByaW50ZigiJTEyLjEycyBSJWhkIiwKLQkJCQkJCSAgICAgICBhY3BpX3V0X2dldF90eXBlX25hbWUKLQkJCQkJCSAgICAgICAoZGVzY3JpcHRvci0+b2JqZWN0LgotCQkJCQkJCWNvbW1vbi50eXBlKSwKLQkJCQkJCSAgICAgICBkZXNjcmlwdG9yLT5vYmplY3QuCi0JCQkJCQkgICAgICAgY29tbW9uLnJlZmVyZW5jZV9jb3VudCk7Ci0JCQkJCWJyZWFrOwotCi0JCQkJY2FzZSBBQ1BJX0RFU0NfVFlQRV9QQVJTRVI6Ci0JCQkJCWFjcGlfb3NfcHJpbnRmKCJhbWxfb3Bjb2RlICUwNGhYIiwKLQkJCQkJCSAgICAgICBkZXNjcmlwdG9yLT5vcC5hc2wuCi0JCQkJCQkgICAgICAgYW1sX29wY29kZSk7Ci0JCQkJCWJyZWFrOwotCi0JCQkJY2FzZSBBQ1BJX0RFU0NfVFlQRV9OQU1FRDoKLQkJCQkJYWNwaV9vc19wcmludGYoIiU0LjRzIiwKLQkJCQkJCSAgICAgICBhY3BpX3V0X2dldF9ub2RlX25hbWUKLQkJCQkJCSAgICAgICAoJmRlc2NyaXB0b3ItPm5vZGUpKTsKLQkJCQkJYnJlYWs7Ci0KLQkJCQlkZWZhdWx0OgotCQkJCQlicmVhazsKLQkJCQl9Ci0KLQkJCQlhY3BpX29zX3ByaW50ZigiXG4iKTsKLQkJCQludW1fb3V0c3RhbmRpbmcrKzsKLQkJCX0KLQkJfQotCQllbGVtZW50ID0gZWxlbWVudC0+bmV4dDsKLQl9Ci0KLQkodm9pZClhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfTUVNT1JZKTsKLQotCS8qIFByaW50IHN1bW1hcnkgKi8KLQotCWlmICghbnVtX291dHN0YW5kaW5nKSB7Ci0JCUFDUElfSU5GTygoQUVfSU5GTywgIk5vIG91dHN0YW5kaW5nIGFsbG9jYXRpb25zIikpOwotCX0gZWxzZSB7Ci0JCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIiVkKCVYKSBPdXRzdGFuZGluZyBhbGxvY2F0aW9ucyIsCi0JCQkgICAgbnVtX291dHN0YW5kaW5nLCBudW1fb3V0c3RhbmRpbmcpKTsKLQl9Ci0KLQlyZXR1cm5fVk9JRDsKLX0KLQotI2VuZGlmCQkJCS8qICNpZmRlZiBBQ1BJX0RCR19UUkFDS19BTExPQ0FUSU9OUyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGNhY2hlLmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0Y2FjaGUuYwppbmRleCAyMTc3Y2IxLi41NjI3MGEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0Y2FjaGUuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0Y2FjaGUuYwpAQCAtMTE4LDEzICsxMTgsMTQgQEAKIAkvKiBXYWxrIHRoZSBsaXN0IG9mIG9iamVjdHMgaW4gdGhpcyBjYWNoZSAqLwogCiAJd2hpbGUgKGNhY2hlLT5saXN0X2hlYWQpIHsKKwogCQkvKiBEZWxldGUgYW5kIHVubGluayBvbmUgY2FjaGVkIHN0YXRlIG9iamVjdCAqLwogCiAJCW5leHQgPSAqKEFDUElfQ0FTVF9JTkRJUkVDVF9QVFIoY2hhciwKIAkJCQkJCSYoKChjaGFyICopY2FjaGUtPgogCQkJCQkJICAgbGlzdF9oZWFkKVtjYWNoZS0+CiAJCQkJCQkJICAgICAgbGlua19vZmZzZXRdKSkpOwotCQlBQ1BJX01FTV9GUkVFKGNhY2hlLT5saXN0X2hlYWQpOworCQlBQ1BJX0ZSRUUoY2FjaGUtPmxpc3RfaGVhZCk7CiAKIAkJY2FjaGUtPmxpc3RfaGVhZCA9IG5leHQ7CiAJCWNhY2hlLT5jdXJyZW50X2RlcHRoLS07CkBAIC0xOTMsNyArMTk0LDcgQEAKIAkvKiBJZiBjYWNoZSBpcyBmdWxsLCBqdXN0IGZyZWUgdGhpcyBvYmplY3QgKi8KIAogCWlmIChjYWNoZS0+Y3VycmVudF9kZXB0aCA+PSBjYWNoZS0+bWF4X2RlcHRoKSB7Ci0JCUFDUElfTUVNX0ZSRUUob2JqZWN0KTsKKwkJQUNQSV9GUkVFKG9iamVjdCk7CiAJCUFDUElfTUVNX1RSQUNLSU5HKGNhY2hlLT50b3RhbF9mcmVlZCsrKTsKIAl9CiAKQEAgLTI0Myw3ICsyNDQsNyBAQAogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAl2b2lkICpvYmplY3Q7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoIm9zX2FjcXVpcmVfb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9OQU1FKG9zX2FjcXVpcmVfb2JqZWN0KTsKIAogCWlmICghY2FjaGUpIHsKIAkJcmV0dXJuIChOVUxMKTsKQEAgLTI1OSw2ICsyNjAsNyBAQAogCS8qIENoZWNrIHRoZSBjYWNoZSBmaXJzdCAqLwogCiAJaWYgKGNhY2hlLT5saXN0X2hlYWQpIHsKKwogCQkvKiBUaGVyZSBpcyBhbiBvYmplY3QgYXZhaWxhYmxlLCB1c2UgaXQgKi8KIAogCQlvYmplY3QgPSBjYWNoZS0+bGlzdF9oZWFkOwpAQCAtMjcwLDkgKzI3Miw5IEBACiAJCWNhY2hlLT5jdXJyZW50X2RlcHRoLS07CiAKIAkJQUNQSV9NRU1fVFJBQ0tJTkcoY2FjaGUtPmhpdHMrKyk7Ci0JCUFDUElfTUVNX1RSQUNLSU5HKEFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKLQkJCQkJCSAgICAiT2JqZWN0ICVwIGZyb20gJXMgY2FjaGVcbiIsCi0JCQkJCQkgICAgb2JqZWN0LCBjYWNoZS0+bGlzdF9uYW1lKSkpOworCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCisJCQkJICAiT2JqZWN0ICVwIGZyb20gJXMgY2FjaGVcbiIsIG9iamVjdCwKKwkJCQkgIGNhY2hlLT5saXN0X25hbWUpKTsKIAogCQlzdGF0dXMgPSBhY3BpX3V0X3JlbGVhc2VfbXV0ZXgoQUNQSV9NVFhfQ0FDSEVTKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CkBAIC0yODcsMTQgKzI4OSwxNCBAQAogCiAJCUFDUElfTUVNX1RSQUNLSU5HKGNhY2hlLT50b3RhbF9hbGxvY2F0ZWQrKyk7CiAKLQkJLyogQXZvaWQgZGVhZGxvY2sgd2l0aCBBQ1BJX01FTV9DQUxMT0NBVEUgKi8KKwkJLyogQXZvaWQgZGVhZGxvY2sgd2l0aCBBQ1BJX0FMTE9DQVRFX1pFUk9FRCAqLwogCiAJCXN0YXR1cyA9IGFjcGlfdXRfcmVsZWFzZV9tdXRleChBQ1BJX01UWF9DQUNIRVMpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KIAotCQlvYmplY3QgPSBBQ1BJX01FTV9DQUxMT0NBVEUoY2FjaGUtPm9iamVjdF9zaXplKTsKKwkJb2JqZWN0ID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoY2FjaGUtPm9iamVjdF9zaXplKTsKIAkJaWYgKCFvYmplY3QpIHsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRjb3B5LmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0Y29weS5jCmluZGV4IGRmMmQzMjAuLjVlMWE4MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRjb3B5LmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGNvcHkuYwpAQCAtMTA5LDcgKzEwOSw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9jb3B5X2lzaW1wbGVfdG9fZXNpbXBsZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfY29weV9pc2ltcGxlX3RvX2VzaW1wbGUpOwogCiAJKmJ1ZmZlcl9zcGFjZV91c2VkID0gMDsKIApAQCAtMzI1LDcgKzMyNSw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXN0cnVjdCBhY3BpX3BrZ19pbmZvIGluZm87CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9jb3B5X2lwYWNrYWdlX3RvX2VwYWNrYWdlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9jb3B5X2lwYWNrYWdlX3RvX2VwYWNrYWdlKTsKIAogCS8qCiAJICogRmlyc3QgcGFja2FnZSBhdCBoZWFkIG9mIHRoZSBidWZmZXIKQEAgLTM4Myw3ICszODMsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X2NvcHlfaW9iamVjdF90b19lb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9jb3B5X2lvYmplY3RfdG9fZW9iamVjdCk7CiAKIAlpZiAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW50ZXJuYWxfb2JqZWN0KSA9PSBBQ1BJX1RZUEVfUEFDS0FHRSkgewogCQkvKgpAQCAtNDQyLDcgKzQ0Miw3IEBACiB7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqaW50ZXJuYWxfb2JqZWN0OwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfY29weV9lc2ltcGxlX3RvX2lzaW1wbGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2NvcHlfZXNpbXBsZV90b19pc2ltcGxlKTsKIAogCS8qCiAJICogU2ltcGxlIHR5cGVzIHN1cHBvcnRlZCBhcmU6IFN0cmluZywgQnVmZmVyLCBJbnRlZ2VyCkBAIC00NzIsOCArNDcyLDggQEAKIAljYXNlIEFDUElfVFlQRV9TVFJJTkc6CiAKIAkJaW50ZXJuYWxfb2JqZWN0LT5zdHJpbmcucG9pbnRlciA9Ci0JCSAgICBBQ1BJX01FTV9DQUxMT0NBVEUoKGFjcGlfc2l6ZSkgZXh0ZXJuYWxfb2JqZWN0LT5zdHJpbmcuCi0JCQkJICAgICAgIGxlbmd0aCArIDEpOworCQkgICAgQUNQSV9BTExPQ0FURV9aRVJPRUQoKGFjcGlfc2l6ZSkgZXh0ZXJuYWxfb2JqZWN0LT5zdHJpbmcuCisJCQkJCSBsZW5ndGggKyAxKTsKIAkJaWYgKCFpbnRlcm5hbF9vYmplY3QtPnN0cmluZy5wb2ludGVyKSB7CiAJCQlnb3RvIGVycm9yX2V4aXQ7CiAJCX0KQEAgLTQ4OCw3ICs0ODgsNyBAQAogCWNhc2UgQUNQSV9UWVBFX0JVRkZFUjoKIAogCQlpbnRlcm5hbF9vYmplY3QtPmJ1ZmZlci5wb2ludGVyID0KLQkJICAgIEFDUElfTUVNX0NBTExPQ0FURShleHRlcm5hbF9vYmplY3QtPmJ1ZmZlci5sZW5ndGgpOworCQkgICAgQUNQSV9BTExPQ0FURV9aRVJPRUQoZXh0ZXJuYWxfb2JqZWN0LT5idWZmZXIubGVuZ3RoKTsKIAkJaWYgKCFpbnRlcm5hbF9vYmplY3QtPmJ1ZmZlci5wb2ludGVyKSB7CiAJCQlnb3RvIGVycm9yX2V4aXQ7CiAJCX0KQEAgLTU1Miw3ICs1NTIsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnRoaXNfaW50ZXJuYWxfb2JqOwogCXVuaW9uIGFjcGlfb2JqZWN0ICp0aGlzX2V4dGVybmFsX29iajsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X2NvcHlfZXBhY2thZ2VfdG9faXBhY2thZ2UiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2NvcHlfZXBhY2thZ2VfdG9faXBhY2thZ2UpOwogCiAJLyoKIAkgKiBGaXJzdCBwYWNrYWdlIGF0IGhlYWQgb2YgdGhlIGJ1ZmZlcgpAQCAtNjAwLDcgKzYwMCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfY29weV9lb2JqZWN0X3RvX2lvYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2NvcHlfZW9iamVjdF90b19pb2JqZWN0KTsKIAogCWlmIChleHRlcm5hbF9vYmplY3QtPnR5cGUgPT0gQUNQSV9UWVBFX1BBQ0tBR0UpIHsKIAkJLyoKQEAgLTY3Niw3ICs2NzYsNyBAQAogCQlpZiAoKHNvdXJjZV9kZXNjLT5idWZmZXIucG9pbnRlcikgJiYKIAkJICAgIChzb3VyY2VfZGVzYy0+YnVmZmVyLmxlbmd0aCkpIHsKIAkJCWRlc3RfZGVzYy0+YnVmZmVyLnBvaW50ZXIgPQotCQkJICAgIEFDUElfTUVNX0FMTE9DQVRFKHNvdXJjZV9kZXNjLT5idWZmZXIubGVuZ3RoKTsKKwkJCSAgICBBQ1BJX0FMTE9DQVRFKHNvdXJjZV9kZXNjLT5idWZmZXIubGVuZ3RoKTsKIAkJCWlmICghZGVzdF9kZXNjLT5idWZmZXIucG9pbnRlcikgewogCQkJCXJldHVybiAoQUVfTk9fTUVNT1JZKTsKIAkJCX0KQEAgLTY5Nyw4ICs2OTcsOCBAQAogCQkgKi8KIAkJaWYgKHNvdXJjZV9kZXNjLT5zdHJpbmcucG9pbnRlcikgewogCQkJZGVzdF9kZXNjLT5zdHJpbmcucG9pbnRlciA9Ci0JCQkgICAgQUNQSV9NRU1fQUxMT0NBVEUoKGFjcGlfc2l6ZSkgc291cmNlX2Rlc2MtPnN0cmluZy4KLQkJCQkJICAgICAgbGVuZ3RoICsgMSk7CisJCQkgICAgQUNQSV9BTExPQ0FURSgoYWNwaV9zaXplKSBzb3VyY2VfZGVzYy0+c3RyaW5nLgorCQkJCQkgIGxlbmd0aCArIDEpOwogCQkJaWYgKCFkZXN0X2Rlc2MtPnN0cmluZy5wb2ludGVyKSB7CiAJCQkJcmV0dXJuIChBRV9OT19NRU1PUlkpOwogCQkJfQpAQCAtODA1LDkgKzgwNSw3IEBACiAJCS8qCiAJCSAqIENyZWF0ZSB0aGUgb2JqZWN0IGFycmF5CiAJCSAqLwotCQl0YXJnZXRfb2JqZWN0LT5wYWNrYWdlLmVsZW1lbnRzID0KLQkJICAgIEFDUElfTUVNX0NBTExPQ0FURSgoKGFjcGlfc2l6ZSkgc291cmNlX29iamVjdC0+cGFja2FnZS4KLQkJCQkJY291bnQgKyAxKSAqIHNpemVvZih2b2lkICopKTsKKwkJdGFyZ2V0X29iamVjdC0+cGFja2FnZS5lbGVtZW50cyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKCgoYWNwaV9zaXplKSBzb3VyY2Vfb2JqZWN0LT5wYWNrYWdlLmNvdW50ICsgMSkgKiBzaXplb2Yodm9pZCAqKSk7CiAJCWlmICghdGFyZ2V0X29iamVjdC0+cGFja2FnZS5lbGVtZW50cykgewogCQkJc3RhdHVzID0gQUVfTk9fTUVNT1JZOwogCQkJZ290byBlcnJvcl9leGl0OwpAQCAtODU2LDcgKzg1NCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9jb3B5X2lwYWNrYWdlX3RvX2lwYWNrYWdlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9jb3B5X2lwYWNrYWdlX3RvX2lwYWNrYWdlKTsKIAogCWRlc3Rfb2JqLT5jb21tb24udHlwZSA9IEFDUElfR0VUX09CSkVDVF9UWVBFKHNvdXJjZV9vYmopOwogCWRlc3Rfb2JqLT5jb21tb24uZmxhZ3MgPSBzb3VyY2Vfb2JqLT5jb21tb24uZmxhZ3M7CkBAIC04NjUsMTAgKzg2MywxMCBAQAogCS8qCiAJICogQ3JlYXRlIHRoZSBvYmplY3QgYXJyYXkgYW5kIHdhbGsgdGhlIHNvdXJjZSBwYWNrYWdlIHRyZWUKIAkgKi8KLQlkZXN0X29iai0+cGFja2FnZS5lbGVtZW50cyA9IEFDUElfTUVNX0NBTExPQ0FURSgoKGFjcGlfc2l6ZSkKLQkJCQkJCQkgc291cmNlX29iai0+cGFja2FnZS4KLQkJCQkJCQkgY291bnQgKwotCQkJCQkJCSAxKSAqIHNpemVvZih2b2lkICopKTsKKwlkZXN0X29iai0+cGFja2FnZS5lbGVtZW50cyA9IEFDUElfQUxMT0NBVEVfWkVST0VEKCgoYWNwaV9zaXplKQorCQkJCQkJCSAgIHNvdXJjZV9vYmotPnBhY2thZ2UuCisJCQkJCQkJICAgY291bnQgKworCQkJCQkJCSAgIDEpICogc2l6ZW9mKHZvaWQgKikpOwogCWlmICghZGVzdF9vYmotPnBhY2thZ2UuZWxlbWVudHMpIHsKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywgIlBhY2thZ2UgYWxsb2NhdGlvbiBmYWlsdXJlIikpOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9fTUVNT1JZKTsKQEAgLTg4Miw2ICs4ODAsNyBAQAogCQkJCQkgICBhY3BpX3V0X2NvcHlfaWVsZW1lbnRfdG9faWVsZW1lbnQsCiAJCQkJCSAgIHdhbGtfc3RhdGUpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCiAJCS8qIE9uIGZhaWx1cmUsIGRlbGV0ZSB0aGUgZGVzdGluYXRpb24gcGFja2FnZSBvYmplY3QgKi8KIAogCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UoZGVzdF9vYmopOwpAQCAtOTExLDcgKzkxMCw3IEBACiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9jb3B5X2lvYmplY3RfdG9faW9iamVjdCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfY29weV9pb2JqZWN0X3RvX2lvYmplY3QpOwogCiAJLyogQ3JlYXRlIHRoZSB0b3AgbGV2ZWwgb2JqZWN0ICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRkZWJ1Zy5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGRlYnVnLmMKaW5kZXggMzVmM2Q1OC4uNWVjMWNmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGRlYnVnLmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGRlYnVnLmMKQEAgLTQxLDggKzQxLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KIAogI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfVVRJTElUSUVTCkBAIC0xMjMsMTIgKzEyMSwxNCBAQAogCS8qIEFsbCBGdW5jdGlvbiBuYW1lcyBhcmUgbG9uZ2VyIHRoYW4gNCBjaGFycywgY2hlY2sgaXMgc2FmZSAqLwogCiAJaWYgKCooQUNQSV9DQVNUX1BUUih1MzIsIGZ1bmN0aW9uX25hbWUpKSA9PSBBQ1BJX1BSRUZJWF9NSVhFRCkgeworCiAJCS8qIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgdGhlIG9yaWdpbmFsIHNvdXJjZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgKi8KIAogCQlyZXR1cm4gKGZ1bmN0aW9uX25hbWUgKyA0KTsKIAl9CiAKIAlpZiAoKihBQ1BJX0NBU1RfUFRSKHUzMiwgZnVuY3Rpb25fbmFtZSkpID09IEFDUElfUFJFRklYX0xPV0VSKSB7CisKIAkJLyogVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB0aGUgc291cmNlIGhhcyBiZWVuICdsaW51eGl6ZWQnICovCiAKIAkJcmV0dXJuIChmdW5jdGlvbl9uYW1lICsgNSk7CkBAIC0xNjIsNyArMTYyLDcgQEAKIAkJICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCiAJCSAgICBjaGFyICptb2R1bGVfbmFtZSwgdTMyIGNvbXBvbmVudF9pZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7Ci0JdTMyIHRocmVhZF9pZDsKKwlhY3BpX3RocmVhZF9pZCB0aHJlYWRfaWQ7CiAJdmFfbGlzdCBhcmdzOwogCiAJLyoKQEAgLTE3Nyw3ICsxNzcsNiBAQAogCSAqIFRocmVhZCB0cmFja2luZyBhbmQgY29udGV4dCBzd2l0Y2ggbm90aWZpY2F0aW9uCiAJICovCiAJdGhyZWFkX2lkID0gYWNwaV9vc19nZXRfdGhyZWFkX2lkKCk7Ci0KIAlpZiAodGhyZWFkX2lkICE9IGFjcGlfZ2JsX3ByZXZfdGhyZWFkX2lkKSB7CiAJCWlmIChBQ1BJX0xWX1RIUkVBRFMgJiBhY3BpX2RiZ19sZXZlbCkgewogCQkJYWNwaV9vc19wcmludGYKQEAgLTIwNiw3ICsyMDUsNyBAQAogCWFjcGlfb3NfdnByaW50Zihmb3JtYXQsIGFyZ3MpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfdXRfZGVidWdfcHJpbnQpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfdXRfZGVidWdfcHJpbnQpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjI2LDcgKzIyNSw2IEBACiAgKiAgICAgICAgICAgICAgZGVidWdfcHJpbnQgc28gdGhhdCB0aGUgc2FtZSBtYWNyb3MgY2FuIGJlIHVzZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogdm9pZCBBQ1BJX0lOVEVSTkFMX1ZBUl9YRkFDRQogYWNwaV91dF9kZWJ1Z19wcmludF9yYXcodTMyIHJlcXVlc3RlZF9kZWJ1Z19sZXZlbCwKIAkJCXUzMiBsaW5lX251bWJlciwKQEAgLTI0NCw3ICsyNDIsNyBAQAogCWFjcGlfb3NfdnByaW50Zihmb3JtYXQsIGFyZ3MpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfdXRfZGVidWdfcHJpbnRfcmF3KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3V0X2RlYnVnX3ByaW50X3JhdykKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yNjEsNyArMjU5LDYgQEAKICAqICAgICAgICAgICAgICBzZXQgaW4gZGVidWdfbGV2ZWwKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiB2b2lkCiBhY3BpX3V0X3RyYWNlKHUzMiBsaW5lX251bWJlciwKIAkgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICptb2R1bGVfbmFtZSwgdTMyIGNvbXBvbmVudF9pZCkKQEAgLTI3NSw3ICsyNzIsNyBAQAogCQkJICAgIGNvbXBvbmVudF9pZCwgIiVzXG4iLCBhY3BpX2dibF9mbl9lbnRyeV9zdHIpOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfdXRfdHJhY2UpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfdXRfdHJhY2UpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjkzLDcgKzI5MCw2IEBACiAgKiAgICAgICAgICAgICAgc2V0IGluIGRlYnVnX2xldmVsCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogdm9pZAogYWNwaV91dF90cmFjZV9wdHIodTMyIGxpbmVfbnVtYmVyLAogCQkgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCkBAIC00MDAsNyArMzk2LDcgQEAKIAlhY3BpX2dibF9uZXN0aW5nX2xldmVsLS07CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV91dF9leGl0KTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3V0X2V4aXQpCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDE4LDcgKzQxNCw2IEBACiAgKiAgICAgICAgICAgICAgc2V0IGluIGRlYnVnX2xldmVsLiBQcmludHMgZXhpdCBzdGF0dXMgYWxzby4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiB2b2lkCiBhY3BpX3V0X3N0YXR1c19leGl0KHUzMiBsaW5lX251bWJlciwKIAkJICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCkBAIC00NDIsNyArNDM3LDcgQEAKIAlhY3BpX2dibF9uZXN0aW5nX2xldmVsLS07CiB9CiAKLUVYUE9SVF9TWU1CT0woYWNwaV91dF9zdGF0dXNfZXhpdCk7CitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV91dF9zdGF0dXNfZXhpdCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC00NjAsNyArNDU1LDYgQEAKICAqICAgICAgICAgICAgICBzZXQgaW4gZGVidWdfbGV2ZWwuIFByaW50cyBleGl0IHZhbHVlIGFsc28uCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogdm9pZAogYWNwaV91dF92YWx1ZV9leGl0KHUzMiBsaW5lX251bWJlciwKIAkJICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKQEAgLTQ3NSw3ICs0NjksNyBAQAogCWFjcGlfZ2JsX25lc3RpbmdfbGV2ZWwtLTsKIH0KIAotRVhQT1JUX1NZTUJPTChhY3BpX3V0X3ZhbHVlX2V4aXQpOworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfdXRfdmFsdWVfZXhpdCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC00OTMsNyArNDg3LDYgQEAKICAqICAgICAgICAgICAgICBzZXQgaW4gZGVidWdfbGV2ZWwuIFByaW50cyBleGl0IHZhbHVlIGFsc28uCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogdm9pZAogYWNwaV91dF9wdHJfZXhpdCh1MzIgbGluZV9udW1iZXIsCiAJCSBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLApAQCAtNTI0LDIwICs1MTcsMTMgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkIGFjcGlfdXRfZHVtcF9idWZmZXIodTggKiBidWZmZXIsIHUzMiBjb3VudCwgdTMyIGRpc3BsYXksIHUzMiBjb21wb25lbnRfaWQpCit2b2lkIGFjcGlfdXRfZHVtcF9idWZmZXIyKHU4ICogYnVmZmVyLCB1MzIgY291bnQsIHUzMiBkaXNwbGF5KQogewogCWFjcGlfbmF0aXZlX3VpbnQgaSA9IDA7CiAJYWNwaV9uYXRpdmVfdWludCBqOwogCXUzMiB0ZW1wMzI7CiAJdTggYnVmX2NoYXI7CiAKLQkvKiBPbmx5IGR1bXAgdGhlIGJ1ZmZlciBpZiB0cmFjaW5nIGlzIGVuYWJsZWQgKi8KLQotCWlmICghKChBQ1BJX0xWX1RBQkxFUyAmIGFjcGlfZGJnX2xldmVsKSAmJgotCSAgICAgIChjb21wb25lbnRfaWQgJiBhY3BpX2RiZ19sYXllcikpKSB7Ci0JCXJldHVybjsKLQl9Ci0KIAlpZiAoKGNvdW50IDwgNCkgfHwgKGNvdW50ICYgMHgwMSkpIHsKIAkJZGlzcGxheSA9IERCX0JZVEVfRElTUExBWTsKIAl9CkBAIC01NDUsNiArNTMxLDcgQEAKIAkvKiBOYXN0eSBsaXR0bGUgZHVtcCBidWZmZXIgcm91dGluZSEgKi8KIAogCXdoaWxlIChpIDwgY291bnQpIHsKKwogCQkvKiBQcmludCBjdXJyZW50IG9mZnNldCAqLwogCiAJCWFjcGlfb3NfcHJpbnRmKCIlNi40WDogIiwgKHUzMikgaSk7CkBAIC01NTMsNiArNTQwLDcgQEAKIAogCQlmb3IgKGogPSAwOyBqIDwgMTY7KSB7CiAJCQlpZiAoaSArIGogPj0gY291bnQpIHsKKwogCQkJCS8qIER1bXAgZmlsbCBzcGFjZXMgKi8KIAogCQkJCWFjcGlfb3NfcHJpbnRmKCIlKnMiLCAoKGRpc3BsYXkgKiAyKSArIDEpLCAiICIpOwpAQCAtNTYxLDYgKzU0OSw3IEBACiAJCQl9CiAKIAkJCXN3aXRjaCAoZGlzcGxheSkgeworCQkJY2FzZSBEQl9CWVRFX0RJU1BMQVk6CiAJCQlkZWZhdWx0OgkvKiBEZWZhdWx0IGlzIEJZVEUgZGlzcGxheSAqLwogCiAJCQkJYWNwaV9vc19wcmludGYoIiUwMlggIiwgYnVmZmVyW2kgKyBqXSk7CkBAIC02MTgsMyArNjA3LDMxIEBACiAKIAlyZXR1cm47CiB9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRlVOQ1RJT046ICAgIGFjcGlfdXRfZHVtcF9idWZmZXIKKyAqCisgKiBQQVJBTUVURVJTOiAgQnVmZmVyICAgICAgICAgICAgICAtIEJ1ZmZlciB0byBkdW1wCisgKiAgICAgICAgICAgICAgQ291bnQgICAgICAgICAgICAgICAtIEFtb3VudCB0byBkdW1wLCBpbiBieXRlcworICogICAgICAgICAgICAgIERpc3BsYXkgICAgICAgICAgICAgLSBCWVRFLCBXT1JELCBEV09SRCwgb3IgUVdPUkQgZGlzcGxheQorICogICAgICAgICAgICAgIGNvbXBvbmVudF9pRCAgICAgICAgLSBDYWxsZXIncyBjb21wb25lbnQgSUQKKyAqCisgKiBSRVRVUk46ICAgICAgTm9uZQorICoKKyAqIERFU0NSSVBUSU9OOiBHZW5lcmljIGR1bXAgYnVmZmVyIGluIGJvdGggaGV4IGFuZCBhc2NpaS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit2b2lkIGFjcGlfdXRfZHVtcF9idWZmZXIodTggKiBidWZmZXIsIHUzMiBjb3VudCwgdTMyIGRpc3BsYXksIHUzMiBjb21wb25lbnRfaWQpCit7CisKKwkvKiBPbmx5IGR1bXAgdGhlIGJ1ZmZlciBpZiB0cmFjaW5nIGlzIGVuYWJsZWQgKi8KKworCWlmICghKChBQ1BJX0xWX1RBQkxFUyAmIGFjcGlfZGJnX2xldmVsKSAmJgorCSAgICAgIChjb21wb25lbnRfaWQgJiBhY3BpX2RiZ19sYXllcikpKSB7CisJCXJldHVybjsKKwl9CisKKwlhY3BpX3V0X2R1bXBfYnVmZmVyMihidWZmZXIsIGNvdW50LCBkaXNwbGF5KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRkZWxldGUuYyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRkZWxldGUuYwppbmRleCAxZGI5Njk1Li42N2I5ZjMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZGVsZXRlLmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGRlbGV0ZS5jCkBAIC03Niw3ICs3Niw3IEBACiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqc2Vjb25kX2Rlc2M7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqbmV4dF9kZXNjOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoInV0X2RlbGV0ZV9pbnRlcm5hbF9vYmoiLCBvYmplY3QpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHV0X2RlbGV0ZV9pbnRlcm5hbF9vYmosIG9iamVjdCk7CiAKIAlpZiAoIW9iamVjdCkgewogCQlyZXR1cm5fVk9JRDsKQEAgLTk2LDYgKzk2LDcgQEAKIAkJLyogRnJlZSB0aGUgYWN0dWFsIHN0cmluZyBidWZmZXIgKi8KIAogCQlpZiAoIShvYmplY3QtPmNvbW1vbi5mbGFncyAmIEFPUE9CSl9TVEFUSUNfUE9JTlRFUikpIHsKKwogCQkJLyogQnV0IG9ubHkgaWYgaXQgaXMgTk9UIGEgcG9pbnRlciBpbnRvIGFuIEFDUEkgdGFibGUgKi8KIAogCQkJb2JqX3BvaW50ZXIgPSBvYmplY3QtPnN0cmluZy5wb2ludGVyOwpAQCAtMTExLDYgKzExMiw3IEBACiAJCS8qIEZyZWUgdGhlIGFjdHVhbCBidWZmZXIgKi8KIAogCQlpZiAoIShvYmplY3QtPmNvbW1vbi5mbGFncyAmIEFPUE9CSl9TVEFUSUNfUE9JTlRFUikpIHsKKwogCQkJLyogQnV0IG9ubHkgaWYgaXQgaXMgTk9UIGEgcG9pbnRlciBpbnRvIGFuIEFDUEkgdGFibGUgKi8KIAogCQkJb2JqX3BvaW50ZXIgPSBvYmplY3QtPmJ1ZmZlci5wb2ludGVyOwpAQCAtMTk4LDExICsyMDAsMjIgQEAKIAkJCSAqLwogCQkJaGFuZGxlcl9kZXNjID0gb2JqZWN0LT5yZWdpb24uaGFuZGxlcjsKIAkJCWlmIChoYW5kbGVyX2Rlc2MpIHsKLQkJCQlpZiAoaGFuZGxlcl9kZXNjLT5hZGRyZXNzX3NwYWNlLgotCQkJCSAgICBoZmxhZ3MgJgorCQkJCWlmIChoYW5kbGVyX2Rlc2MtPmFkZHJlc3Nfc3BhY2UuaGFuZGxlcl9mbGFncyAmCiAJCQkJICAgIEFDUElfQUREUl9IQU5ETEVSX0RFRkFVTFRfSU5TVEFMTEVEKSB7Ci0JCQkJCW9ial9wb2ludGVyID0KLQkJCQkJICAgIHNlY29uZF9kZXNjLT5leHRyYS5yZWdpb25fY29udGV4dDsKKworCQkJCQkvKiBEZWFjdGl2YXRlIHJlZ2lvbiBhbmQgZnJlZSByZWdpb24gY29udGV4dCAqLworCisJCQkJCWlmIChoYW5kbGVyX2Rlc2MtPmFkZHJlc3Nfc3BhY2Uuc2V0dXApIHsKKwkJCQkJCSh2b2lkKWhhbmRsZXJfZGVzYy0+CisJCQkJCQkgICAgYWRkcmVzc19zcGFjZS5zZXR1cChvYmplY3QsCisJCQkJCQkJCQlBQ1BJX1JFR0lPTl9ERUFDVElWQVRFLAorCQkJCQkJCQkJaGFuZGxlcl9kZXNjLT4KKwkJCQkJCQkJCWFkZHJlc3Nfc3BhY2UuCisJCQkJCQkJCQljb250ZXh0LAorCQkJCQkJCQkJJnNlY29uZF9kZXNjLT4KKwkJCQkJCQkJCWV4dHJhLgorCQkJCQkJCQkJcmVnaW9uX2NvbnRleHQpOworCQkJCQl9CiAJCQkJfQogCiAJCQkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGhhbmRsZXJfZGVzYyk7CkBAIC0yMzQsNyArMjQ3LDcgQEAKIAlpZiAob2JqX3BvaW50ZXIpIHsKIAkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9BTExPQ0FUSU9OUywKIAkJCQkgICJEZWxldGluZyBPYmplY3QgU3VicHRyICVwXG4iLCBvYmpfcG9pbnRlcikpOwotCQlBQ1BJX01FTV9GUkVFKG9ial9wb2ludGVyKTsKKwkJQUNQSV9GUkVFKG9ial9wb2ludGVyKTsKIAl9CiAKIAkvKiBOb3cgdGhlIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQgKi8KQEAgLTI2Myw3ICsyNzYsNyBAQAogewogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKippbnRlcm5hbF9vYmo7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9kZWxldGVfaW50ZXJuYWxfb2JqZWN0X2xpc3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2RlbGV0ZV9pbnRlcm5hbF9vYmplY3RfbGlzdCk7CiAKIAkvKiBXYWxrIHRoZSBudWxsLXRlcm1pbmF0ZWQgaW50ZXJuYWwgbGlzdCAqLwogCkBAIC0yNzMsNyArMjg2LDcgQEAKIAogCS8qIEZyZWUgdGhlIGNvbWJpbmVkIHBhcmFtZXRlciBwb2ludGVyIGxpc3QgYW5kIG9iamVjdCBhcnJheSAqLwogCi0JQUNQSV9NRU1fRlJFRShvYmpfbGlzdCk7CisJQUNQSV9GUkVFKG9ial9saXN0KTsKIAlyZXR1cm5fVk9JRDsKIH0KIApAQCAtMjk2LDcgKzMwOSw3IEBACiAJdTE2IGNvdW50OwogCXUxNiBuZXdfY291bnQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoInV0X3VwZGF0ZV9yZWZfY291bnQiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUodXRfdXBkYXRlX3JlZl9jb3VudCk7CiAKIAlpZiAoIW9iamVjdCkgewogCQlyZXR1cm47CkBAIC0zMDYsMTEgKzMxOSw5IEBACiAJbmV3X2NvdW50ID0gY291bnQ7CiAKIAkvKgotCSAqIFBlcmZvcm0gdGhlIHJlZmVyZW5jZSBjb3VudCBhY3Rpb24KLQkgKiAoaW5jcmVtZW50LCBkZWNyZW1lbnQsIG9yIGZvcmNlIGRlbGV0ZSkKKwkgKiBQZXJmb3JtIHRoZSByZWZlcmVuY2UgY291bnQgYWN0aW9uIChpbmNyZW1lbnQsIGRlY3JlbWVudCwgZm9yY2UgZGVsZXRlKQogCSAqLwogCXN3aXRjaCAoYWN0aW9uKSB7Ci0KIAljYXNlIFJFRl9JTkNSRU1FTlQ6CiAKIAkJbmV3X2NvdW50Kys7CkBAIC0zNDcsNyArMzU4LDYgQEAKIAkJaWYgKG5ld19jb3VudCA9PSAwKSB7CiAJCQlhY3BpX3V0X2RlbGV0ZV9pbnRlcm5hbF9vYmoob2JqZWN0KTsKIAkJfQotCiAJCWJyZWFrOwogCiAJY2FzZSBSRUZfRk9SQ0VfREVMRVRFOgpAQCAtMzcyLDEzICszODIsMTAgQEAKIAkgKiAoQSBkZWxldGVkIG9iamVjdCB3aWxsIGhhdmUgYSBodWdlIHJlZmVyZW5jZSBjb3VudCkKIAkgKi8KIAlpZiAoY291bnQgPiBBQ1BJX01BWF9SRUZFUkVOQ0VfQ09VTlQpIHsKLQogCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sCi0JCQkgICAgICAiTGFyZ2UgUmVmZXJlbmNlIENvdW50ICglWCkgaW4gb2JqZWN0ICVwIiwKLQkJCSAgICAgIGNvdW50LCBvYmplY3QpKTsKKwkJCSAgICAgICJMYXJnZSBSZWZlcmVuY2UgQ291bnQgKCVYKSBpbiBvYmplY3QgJXAiLCBjb3VudCwKKwkJCSAgICAgIG9iamVjdCkpOwogCX0KLQotCXJldHVybjsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTQwNCw3ICs0MTEsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogYWNwaV9zdGF0dXMKLWFjcGlfdXRfdXBkYXRlX29iamVjdF9yZWZlcmVuY2UodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqIG9iamVjdCwgdTE2IGFjdGlvbikKK2FjcGlfdXRfdXBkYXRlX29iamVjdF9yZWZlcmVuY2UodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqZWN0LCB1MTYgYWN0aW9uKQogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGVfbGlzdCA9IE5VTEw7CkBAIC00MTIsOSArNDE5LDEwIEBACiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigidXRfdXBkYXRlX29iamVjdF9yZWZlcmVuY2UiLCBvYmplY3QpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKHV0X3VwZGF0ZV9vYmplY3RfcmVmZXJlbmNlLCBvYmplY3QpOwogCiAJd2hpbGUgKG9iamVjdCkgeworCiAJCS8qIE1ha2Ugc3VyZSB0aGF0IHRoaXMgaXNuJ3QgYSBuYW1lc3BhY2UgaGFuZGxlICovCiAKIAkJaWYgKEFDUElfR0VUX0RFU0NSSVBUT1JfVFlQRShvYmplY3QpID09IEFDUElfREVTQ19UWVBFX05BTUVEKSB7CkBAIC01MDcsMTEgKzUxNSwxMSBAQAogCiAJCWNhc2UgQUNQSV9UWVBFX1JFR0lPTjoKIAkJZGVmYXVsdDoKLQkJCWJyZWFrOwkvKiBObyBzdWJvYmplY3RzICovCisJCQlicmVhazsJLyogTm8gc3Vib2JqZWN0cyBmb3IgYWxsIG90aGVyIHR5cGVzICovCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgd2UgY2FuIHVwZGF0ZSB0aGUgY291bnQgaW4gdGhlIG1haW4gb2JqZWN0LiAgVGhpcyBjYW4gb25seQorCQkgKiBOb3cgd2UgY2FuIHVwZGF0ZSB0aGUgY291bnQgaW4gdGhlIG1haW4gb2JqZWN0LiBUaGlzIGNhbiBvbmx5CiAJCSAqIGhhcHBlbiBhZnRlciB3ZSB1cGRhdGUgdGhlIHN1Yi1vYmplY3RzIGluIGNhc2UgdGhpcyBjYXVzZXMgdGhlCiAJCSAqIG1haW4gb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAJCSAqLwpAQCAtNTU2LDcgKzU2NCw3IEBACiB2b2lkIGFjcGlfdXRfYWRkX3JlZmVyZW5jZSh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmplY3QpCiB7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigidXRfYWRkX3JlZmVyZW5jZSIsIG9iamVjdCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIodXRfYWRkX3JlZmVyZW5jZSwgb2JqZWN0KTsKIAogCS8qIEVuc3VyZSB0aGF0IHdlIGhhdmUgYSB2YWxpZCBvYmplY3QgKi8KIApAQCAtNTg5LDExICs1OTcsMTEgQEAKIHZvaWQgYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9iamVjdCkKIHsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ1dF9yZW1vdmVfcmVmZXJlbmNlIiwgb2JqZWN0KTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUih1dF9yZW1vdmVfcmVmZXJlbmNlLCBvYmplY3QpOwogCiAJLyoKLQkgKiBBbGxvdyBhIE5VTEwgcG9pbnRlciB0byBiZSBwYXNzZWQgaW4sIGp1c3QgaWdub3JlIGl0LiAgVGhpcyBzYXZlcwotCSAqIGVhY2ggY2FsbGVyIGZyb20gaGF2aW5nIHRvIGNoZWNrLiAgQWxzbywgaWdub3JlIE5TIG5vZGVzLgorCSAqIEFsbG93IGEgTlVMTCBwb2ludGVyIHRvIGJlIHBhc3NlZCBpbiwganVzdCBpZ25vcmUgaXQuIFRoaXMgc2F2ZXMKKwkgKiBlYWNoIGNhbGxlciBmcm9tIGhhdmluZyB0byBjaGVjay4gQWxzbywgaWdub3JlIE5TIG5vZGVzLgogCSAqCiAJICovCiAJaWYgKCFvYmplY3QgfHwKQEAgLTYxMyw3ICs2MjEsNyBAQAogCiAJLyoKIAkgKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCwgYW5kIG9ubHkgYWN0dWFsbHkgZGVsZXRlIHRoZSBvYmplY3QKLQkgKiBpZiB0aGUgcmVmZXJlbmNlIGNvdW50IGJlY29tZXMgMC4gIChNdXN0IGFsc28gZGVjcmVtZW50IHRoZSByZWYgY291bnQKKwkgKiBpZiB0aGUgcmVmZXJlbmNlIGNvdW50IGJlY29tZXMgMC4gKE11c3QgYWxzbyBkZWNyZW1lbnQgdGhlIHJlZiBjb3VudAogCSAqIG9mIGFsbCBzdWJvYmplY3RzISkKIAkgKi8KIAkodm9pZClhY3BpX3V0X3VwZGF0ZV9vYmplY3RfcmVmZXJlbmNlKG9iamVjdCwgUkVGX0RFQ1JFTUVOVCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZXZhbC5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGV2YWwuYwppbmRleCAxMDZjYzk3Li5kNmQ3MTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0ZXZhbC5jCisrKyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRldmFsLmMKQEAgLTU2LDYgKzU2LDM0IEBACiBhY3BpX3V0X3RyYW5zbGF0ZV9vbmVfY2lkKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjLAogCQkJICBzdHJ1Y3QgYWNwaV9jb21wYXRpYmxlX2lkICpvbmVfY2lkKTsKIAorLyoKKyAqIFN0cmluZ3Mgc3VwcG9ydGVkIGJ5IHRoZSBfT1NJIHByZWRlZmluZWQgKGludGVybmFsKSBtZXRob2QuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICphY3BpX2ludGVyZmFjZXNfc3VwcG9ydGVkW10gPSB7CisJLyogT3BlcmF0aW5nIFN5c3RlbSBWZW5kb3IgU3RyaW5ncyAqLworCisJIkxpbnV4IiwKKwkiV2luZG93cyAyMDAwIiwKKwkiV2luZG93cyAyMDAxIiwKKwkiV2luZG93cyAyMDAxIFNQMCIsCisJIldpbmRvd3MgMjAwMSBTUDEiLAorCSJXaW5kb3dzIDIwMDEgU1AyIiwKKwkiV2luZG93cyAyMDAxIFNQMyIsCisJIldpbmRvd3MgMjAwMSBTUDQiLAorCSJXaW5kb3dzIDIwMDEuMSIsCisJIldpbmRvd3MgMjAwMS4xIFNQMSIsCS8qIEFkZGVkIDAzLzIwMDYgKi8KKwkiV2luZG93cyAyMDA2IiwJCS8qIEFkZGVkIDAzLzIwMDYgKi8KKworCS8qIEZlYXR1cmUgR3JvdXAgU3RyaW5ncyAqLworCisJIkV4dGVuZGVkIEFkZHJlc3MgU3BhY2UgRGVzY3JpcHRvciIKKwkgICAgLyoKKwkgICAgICogQWxsICJvcHRpb25hbCIgZmVhdHVyZSBncm91cCBzdHJpbmdzIChmZWF0dXJlcyB0aGF0IGFyZSBpbXBsZW1lbnRlZAorCSAgICAgKiBieSB0aGUgaG9zdCkgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSBob3N0IHZlcnNpb24gb2YKKwkgICAgICogYWNwaV9vc192YWxpZGF0ZV9pbnRlcmZhY2UgYW5kIHNob3VsZCBub3QgYmUgYWRkZWQgaGVyZS4KKwkgICAgICovCit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X29zaV9pbXBsZW1lbnRhdGlvbgpAQCAtNjQsMTggKzkyLDE4IEBACiAgKgogICogUkVUVVJOOiAgICAgIFN0YXR1cwogICoKLSAqIERFU0NSSVBUSU9OOiBJbXBsZW1lbnRhdGlvbiBvZiBfT1NJIHByZWRlZmluZWQgY29udHJvbCBtZXRob2QKLSAqICAgICAgICAgICAgICBTdXBwb3J0ZWQgPSBfT1NJIChTdHJpbmcpCisgKiBERVNDUklQVElPTjogSW1wbGVtZW50YXRpb24gb2YgdGhlIF9PU0kgcHJlZGVmaW5lZCBjb250cm9sIG1ldGhvZAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIGFjcGlfc3RhdHVzIGFjcGlfdXRfb3NpX2ltcGxlbWVudGF0aW9uKHN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGUpCiB7CisJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnN0cmluZ19kZXNjOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnJldHVybl9kZXNjOwogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X29zaV9pbXBsZW1lbnRhdGlvbiIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfb3NpX2ltcGxlbWVudGF0aW9uKTsKIAogCS8qIFZhbGlkYXRlIHRoZSBzdHJpbmcgaW5wdXQgYXJndW1lbnQgKi8KIApAQCAtODQsMjggKzExMiw0NyBAQAogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfVFlQRSk7CiAJfQogCi0JLyogQ3JlYXRlIGEgcmV0dXJuIG9iamVjdCAoRGVmYXVsdCB2YWx1ZSA9IDApICovCisJLyogQ3JlYXRlIGEgcmV0dXJuIG9iamVjdCAqLwogCiAJcmV0dXJuX2Rlc2MgPSBhY3BpX3V0X2NyZWF0ZV9pbnRlcm5hbF9vYmplY3QoQUNQSV9UWVBFX0lOVEVHRVIpOwogCWlmICghcmV0dXJuX2Rlc2MpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQogCi0JLyogQ29tcGFyZSBpbnB1dCBzdHJpbmcgdG8gdGFibGUgb2Ygc3VwcG9ydGVkIHN0cmluZ3MgKi8KKwkvKiBEZWZhdWx0IHJldHVybiB2YWx1ZSBpcyBTVVBQT1JURUQgKi8KIAotCWZvciAoaSA9IDA7IGkgPCBBQ1BJX05VTV9PU0lfU1RSSU5HUzsgaSsrKSB7Ci0JCWlmICghQUNQSV9TVFJDTVAoc3RyaW5nX2Rlc2MtPnN0cmluZy5wb2ludGVyLAotCQkJCSBBQ1BJX0NBU1RfUFRSKGNoYXIsCi0JCQkJCSAgICAgICBhY3BpX2dibF92YWxpZF9vc2lfc3RyaW5nc1tpXSkpKQotCQl7Ci0JCQkvKiBUaGlzIHN0cmluZyBpcyBzdXBwb3J0ZWQgKi8KKwlyZXR1cm5fZGVzYy0+aW50ZWdlci52YWx1ZSA9IEFDUElfVUlOVDMyX01BWDsKKwl3YWxrX3N0YXRlLT5yZXR1cm5fZGVzYyA9IHJldHVybl9kZXNjOwogCi0JCQlyZXR1cm5fZGVzYy0+aW50ZWdlci52YWx1ZSA9IDB4RkZGRkZGRkY7Ci0JCQlicmVhazsKKwkvKiBDb21wYXJlIGlucHV0IHN0cmluZyB0byBzdGF0aWMgdGFibGUgb2Ygc3VwcG9ydGVkIGludGVyZmFjZXMgKi8KKworCWZvciAoaSA9IDA7IGkgPCBBQ1BJX0FSUkFZX0xFTkdUSChhY3BpX2ludGVyZmFjZXNfc3VwcG9ydGVkKTsgaSsrKSB7CisJCWlmICghQUNQSV9TVFJDTVAKKwkJICAgIChzdHJpbmdfZGVzYy0+c3RyaW5nLnBvaW50ZXIsCisJCSAgICAgYWNwaV9pbnRlcmZhY2VzX3N1cHBvcnRlZFtpXSkpIHsKKworCQkJLyogVGhlIGludGVyZmFjZSBpcyBzdXBwb3J0ZWQgKi8KKworCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0NUUkxfVEVSTUlOQVRFKTsKIAkJfQogCX0KIAotCXdhbGtfc3RhdGUtPnJldHVybl9kZXNjID0gcmV0dXJuX2Rlc2M7CisJLyoKKwkgKiBEaWQgbm90IG1hdGNoIHRoZSBzdHJpbmcgaW4gdGhlIHN0YXRpYyB0YWJsZSwgY2FsbCB0aGUgaG9zdCBPU0wgdG8KKwkgKiBjaGVjayBmb3IgYSBtYXRjaCB3aXRoIG9uZSBvZiB0aGUgb3B0aW9uYWwgc3RyaW5ncyAoc3VjaCBhcworCSAqICJNb2R1bGUgRGV2aWNlIiwgIjMuMCBUaGVybWFsIE1vZGVsIiwgZXRjLikKKwkgKi8KKwlzdGF0dXMgPSBhY3BpX29zX3ZhbGlkYXRlX2ludGVyZmFjZShzdHJpbmdfZGVzYy0+c3RyaW5nLnBvaW50ZXIpOworCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgeworCisJCS8qIFRoZSBpbnRlcmZhY2UgaXMgc3VwcG9ydGVkICovCisKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0NUUkxfVEVSTUlOQVRFKTsKKwl9CisKKwkvKiBUaGUgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKworCXJldHVybl9kZXNjLT5pbnRlZ2VyLnZhbHVlID0gMDsKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQ1RSTF9URVJNSU5BVEUpOwogfQogCkBAIC0xMzQsMTkgKzE4MSwyNiBAQAogCQkJdTMyIGV4cGVjdGVkX3JldHVybl9idHlwZXMsCiAJCQl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICoqcmV0dXJuX2Rlc2MpCiB7Ci0Jc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gaW5mbzsKKwlzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAl1MzIgcmV0dXJuX2J0eXBlOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfZXZhbHVhdGVfb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9ldmFsdWF0ZV9vYmplY3QpOwogCi0JaW5mby5ub2RlID0gcHJlZml4X25vZGU7Ci0JaW5mby5wYXJhbWV0ZXJzID0gTlVMTDsKLQlpbmZvLnBhcmFtZXRlcl90eXBlID0gQUNQSV9QQVJBTV9BUkdTOworCS8qIEFsbG9jYXRlIHRoZSBldmFsdWF0aW9uIGluZm9ybWF0aW9uIGJsb2NrICovCisKKwlpbmZvID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoc2l6ZW9mKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8pKTsKKwlpZiAoIWluZm8pIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CisJfQorCisJaW5mby0+cHJlZml4X25vZGUgPSBwcmVmaXhfbm9kZTsKKwlpbmZvLT5wYXRobmFtZSA9IHBhdGg7CisJaW5mby0+cGFyYW1ldGVyX3R5cGUgPSBBQ1BJX1BBUkFNX0FSR1M7CiAKIAkvKiBFdmFsdWF0ZSB0aGUgb2JqZWN0L21ldGhvZCAqLwogCi0Jc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZV9yZWxhdGl2ZShwYXRoLCAmaW5mbyk7CisJc3RhdHVzID0gYWNwaV9uc19ldmFsdWF0ZShpbmZvKTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJaWYgKHN0YXR1cyA9PSBBRV9OT1RfRk9VTkQpIHsKIAkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVhFQywKQEAgLTE1OCwyNSArMjEyLDI1IEBACiAJCQkJCSAgcHJlZml4X25vZGUsIHBhdGgsIHN0YXR1cyk7CiAJCX0KIAotCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwkJZ290byBjbGVhbnVwOwogCX0KIAogCS8qIERpZCB3ZSBnZXQgYSByZXR1cm4gb2JqZWN0PyAqLwogCi0JaWYgKCFpbmZvLnJldHVybl9vYmplY3QpIHsKKwlpZiAoIWluZm8tPnJldHVybl9vYmplY3QpIHsKIAkJaWYgKGV4cGVjdGVkX3JldHVybl9idHlwZXMpIHsKIAkJCUFDUElfRVJST1JfTUVUSE9EKCJObyBvYmplY3Qgd2FzIHJldHVybmVkIGZyb20iLAogCQkJCQkgIHByZWZpeF9ub2RlLCBwYXRoLCBBRV9OT1RfRVhJU1QpOwogCi0JCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9UX0VYSVNUKTsKKwkJCXN0YXR1cyA9IEFFX05PVF9FWElTVDsKIAkJfQogCi0JCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CisJCWdvdG8gY2xlYW51cDsKIAl9CiAKIAkvKiBNYXAgdGhlIHJldHVybiBvYmplY3QgdHlwZSB0byB0aGUgYml0bWFwcGVkIHR5cGUgKi8KIAotCXN3aXRjaCAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW5mby5yZXR1cm5fb2JqZWN0KSkgeworCXN3aXRjaCAoQUNQSV9HRVRfT0JKRUNUX1RZUEUoaW5mby0+cmV0dXJuX29iamVjdCkpIHsKIAljYXNlIEFDUElfVFlQRV9JTlRFR0VSOgogCQlyZXR1cm5fYnR5cGUgPSBBQ1BJX0JUWVBFX0lOVEVHRVI7CiAJCWJyZWFrOwpAQCAtMjA0LDggKzI1OCw4IEBACiAJCSAqIGhhcHBlbiBmcmVxdWVudGx5IGlmIHRoZSAiaW1wbGljaXQgcmV0dXJuIiBmZWF0dXJlIGlzIGVuYWJsZWQuCiAJCSAqIEp1c3QgZGVsZXRlIHRoZSByZXR1cm4gb2JqZWN0IGFuZCByZXR1cm4gQUVfT0suCiAJCSAqLwotCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UoaW5mby5yZXR1cm5fb2JqZWN0KTsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKKwkJYWNwaV91dF9yZW1vdmVfcmVmZXJlbmNlKGluZm8tPnJldHVybl9vYmplY3QpOworCQlnb3RvIGNsZWFudXA7CiAJfQogCiAJLyogSXMgdGhlIHJldHVybiBvYmplY3Qgb25lIG9mIHRoZSBleHBlY3RlZCB0eXBlcz8gKi8KQEAgLTIxNywxOSArMjcxLDIzIEBACiAJCUFDUElfRVJST1IoKEFFX0lORk8sCiAJCQkgICAgIlR5cGUgcmV0dXJuZWQgZnJvbSAlcyB3YXMgaW5jb3JyZWN0OiAlcywgZXhwZWN0ZWQgQnR5cGVzOiAlWCIsCiAJCQkgICAgcGF0aCwKLQkJCSAgICBhY3BpX3V0X2dldF9vYmplY3RfdHlwZV9uYW1lKGluZm8ucmV0dXJuX29iamVjdCksCisJCQkgICAgYWNwaV91dF9nZXRfb2JqZWN0X3R5cGVfbmFtZShpbmZvLT5yZXR1cm5fb2JqZWN0KSwKIAkJCSAgICBleHBlY3RlZF9yZXR1cm5fYnR5cGVzKSk7CiAKIAkJLyogT24gZXJyb3IgZXhpdCwgd2UgbXVzdCBkZWxldGUgdGhlIHJldHVybiBvYmplY3QgKi8KIAotCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UoaW5mby5yZXR1cm5fb2JqZWN0KTsKLQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX1RZUEUpOworCQlhY3BpX3V0X3JlbW92ZV9yZWZlcmVuY2UoaW5mby0+cmV0dXJuX29iamVjdCk7CisJCXN0YXR1cyA9IEFFX1RZUEU7CisJCWdvdG8gY2xlYW51cDsKIAl9CiAKIAkvKiBPYmplY3QgdHlwZSBpcyBPSywgcmV0dXJuIGl0ICovCiAKLQkqcmV0dXJuX2Rlc2MgPSBpbmZvLnJldHVybl9vYmplY3Q7Ci0JcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKKwkqcmV0dXJuX2Rlc2MgPSBpbmZvLT5yZXR1cm5fb2JqZWN0OworCisgICAgICBjbGVhbnVwOgorCUFDUElfRlJFRShpbmZvKTsKKwlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTI1Nyw3ICszMTUsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X2V2YWx1YXRlX251bWVyaWNfb2JqZWN0Iik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9ldmFsdWF0ZV9udW1lcmljX29iamVjdCk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChkZXZpY2Vfbm9kZSwgb2JqZWN0X25hbWUsCiAJCQkJCSBBQ1BJX0JUWVBFX0lOVEVHRVIsICZvYmpfZGVzYyk7CkBAIC0zMzMsNyArMzkxLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9leGVjdXRlX0hJRCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfZXhlY3V0ZV9ISUQpOwogCiAJc3RhdHVzID0gYWNwaV91dF9ldmFsdWF0ZV9vYmplY3QoZGV2aWNlX25vZGUsIE1FVEhPRF9OQU1FX19ISUQsCiAJCQkJCSBBQ1BJX0JUWVBFX0lOVEVHRVIgfCBBQ1BJX0JUWVBFX1NUUklORywKQEAgLTM0Myw2ICs0MDEsNyBAQAogCX0KIAogCWlmIChBQ1BJX0dFVF9PQkpFQ1RfVFlQRShvYmpfZGVzYykgPT0gQUNQSV9UWVBFX0lOVEVHRVIpIHsKKwogCQkvKiBDb252ZXJ0IHRoZSBOdW1lcmljIEhJRCB0byBzdHJpbmcgKi8KIAogCQlhY3BpX2V4X2Vpc2FfaWRfdG9fc3RyaW5nKCh1MzIpIG9ial9kZXNjLT5pbnRlZ2VyLnZhbHVlLApAQCAtNDM2LDcgKzQ5NSw3IEBACiAJc3RydWN0IGFjcGlfY29tcGF0aWJsZV9pZF9saXN0ICpjaWRfbGlzdDsKIAlhY3BpX25hdGl2ZV91aW50IGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9leGVjdXRlX0NJRCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfZXhlY3V0ZV9DSUQpOwogCiAJLyogRXZhbHVhdGUgdGhlIF9DSUQgbWV0aG9kIGZvciB0aGlzIGRldmljZSAqLwogCkBAIC00NTksNyArNTE4LDcgQEAKIAlzaXplID0gKCgoY291bnQgLSAxKSAqIHNpemVvZihzdHJ1Y3QgYWNwaV9jb21wYXRpYmxlX2lkKSkgKwogCQlzaXplb2Yoc3RydWN0IGFjcGlfY29tcGF0aWJsZV9pZF9saXN0KSk7CiAKLQljaWRfbGlzdCA9IEFDUElfTUVNX0NBTExPQ0FURSgoYWNwaV9zaXplKSBzaXplKTsKKwljaWRfbGlzdCA9IEFDUElfQUxMT0NBVEVfWkVST0VEKChhY3BpX3NpemUpIHNpemUpOwogCWlmICghY2lkX2xpc3QpIHsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX05PX01FTU9SWSk7CiAJfQpAQCAtNDc5LDYgKzUzOCw3IEBACiAJLyogVGhlIF9DSUQgb2JqZWN0IGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgQ0lEIG9yIGEgcGFja2FnZSAobGlzdCkgb2YgQ0lEcyAqLwogCiAJaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSA9PSBBQ1BJX1RZUEVfUEFDS0FHRSkgeworCiAJCS8qIFRyYW5zbGF0ZSBlYWNoIHBhY2thZ2UgZWxlbWVudCAqLwogCiAJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CkBAIC00OTksNyArNTU5LDcgQEAKIAkvKiBDbGVhbnVwIG9uIGVycm9yICovCiAKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKLQkJQUNQSV9NRU1fRlJFRShjaWRfbGlzdCk7CisJCUFDUElfRlJFRShjaWRfbGlzdCk7CiAJfSBlbHNlIHsKIAkJKnJldHVybl9jaWRfbGlzdCA9IGNpZF9saXN0OwogCX0KQEAgLTUzMyw3ICs1OTMsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X2V4ZWN1dGVfVUlEIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9leGVjdXRlX1VJRCk7CiAKIAlzdGF0dXMgPSBhY3BpX3V0X2V2YWx1YXRlX29iamVjdChkZXZpY2Vfbm9kZSwgTUVUSE9EX05BTUVfX1VJRCwKIAkJCQkJIEFDUElfQlRZUEVfSU5URUdFUiB8IEFDUElfQlRZUEVfU1RSSU5HLApAQCAtNTQzLDYgKzYwMyw3IEBACiAJfQogCiAJaWYgKEFDUElfR0VUX09CSkVDVF9UWVBFKG9ial9kZXNjKSA9PSBBQ1BJX1RZUEVfSU5URUdFUikgeworCiAJCS8qIENvbnZlcnQgdGhlIE51bWVyaWMgVUlEIHRvIHN0cmluZyAqLwogCiAJCWFjcGlfZXhfdW5zaWduZWRfaW50ZWdlcl90b19zdHJpbmcob2JqX2Rlc2MtPmludGVnZXIudmFsdWUsCkBAIC01ODIsNyArNjQzLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzYzsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9leGVjdXRlX1NUQSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfZXhlY3V0ZV9TVEEpOwogCiAJc3RhdHVzID0gYWNwaV91dF9ldmFsdWF0ZV9vYmplY3QoZGV2aWNlX25vZGUsIE1FVEhPRF9OQU1FX19TVEEsCiAJCQkJCSBBQ1BJX0JUWVBFX0lOVEVHRVIsICZvYmpfZGVzYyk7CkBAIC02MzIsNyArNjkzLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9leGVjdXRlX1N4ZHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2V4ZWN1dGVfc3hkcyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCWhpZ2hlc3RbaV0gPSAweEZGOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGdsb2JhbC5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGdsb2JhbC5jCmluZGV4IGZmZDEzMzguLmU1OTk5YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRnbG9iYWwuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0Z2xvYmFsLmMKQEAgLTQzLDcgKzQzLDYgQEAKIAogI2RlZmluZSBERUZJTkVfQUNQSV9HTE9CQUxTCiAKLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2FjbmFtZXNwLmg+CiAKQEAgLTExOSw2ICsxMTgsNyBAQAogCX0KIAogCWlmICghZXhjZXB0aW9uKSB7CisKIAkJLyogRXhjZXB0aW9uIGNvZGUgd2FzIG5vdCByZWNvZ25pemVkICovCiAKIAkJQUNQSV9FUlJPUigoQUVfSU5GTywKQEAgLTE0MywxMiArMTQzLDEwIEBACiAKIC8qIERlYnVnIHN3aXRjaCAtIGxldmVsIGFuZCB0cmFjZSBtYXNrICovCiB1MzIgYWNwaV9kYmdfbGV2ZWwgPSBBQ1BJX0RFQlVHX0RFRkFVTFQ7Ci1FWFBPUlRfU1lNQk9MKGFjcGlfZGJnX2xldmVsKTsKIAogLyogRGVidWcgc3dpdGNoIC0gbGF5ZXIgKGNvbXBvbmVudCkgbWFzayAqLwogCiB1MzIgYWNwaV9kYmdfbGF5ZXIgPSBBQ1BJX0NPTVBPTkVOVF9ERUZBVUxUIHwgQUNQSV9BTExfRFJJVkVSUzsKLUVYUE9SVF9TWU1CT0woYWNwaV9kYmdfbGF5ZXIpOwogdTMyIGFjcGlfZ2JsX25lc3RpbmdfbGV2ZWwgPSAwOwogCiAvKiBEZWJ1Z2dlciBnbG9iYWxzICovCkBAIC0xODMsMjggKzE4MSw2IEBACiAJIl9TNEQiCiB9OwogCi0vKgotICogU3RyaW5ncyBzdXBwb3J0ZWQgYnkgdGhlIF9PU0kgcHJlZGVmaW5lZCAoaW50ZXJuYWwpIG1ldGhvZC4KLSAqIFdoZW4gYWRkaW5nIHN0cmluZ3MsIGJlIHN1cmUgdG8gdXBkYXRlIEFDUElfTlVNX09TSV9TVFJJTkdTLgotICovCi1jb25zdCBjaGFyICphY3BpX2dibF92YWxpZF9vc2lfc3RyaW5nc1tBQ1BJX05VTV9PU0lfU1RSSU5HU10gPSB7Ci0JLyogT3BlcmF0aW5nIFN5c3RlbSBWZW5kb3IgU3RyaW5ncyAqLwotCi0JIkxpbnV4IiwKLQkiV2luZG93cyAyMDAwIiwKLQkiV2luZG93cyAyMDAxIiwKLQkiV2luZG93cyAyMDAxLjEiLAotCSJXaW5kb3dzIDIwMDEgU1AwIiwKLQkiV2luZG93cyAyMDAxIFNQMSIsCi0JIldpbmRvd3MgMjAwMSBTUDIiLAotCSJXaW5kb3dzIDIwMDEgU1AzIiwKLQkiV2luZG93cyAyMDAxIFNQNCIsCi0KLQkvKiBGZWF0dXJlIEdyb3VwIFN0cmluZ3MgKi8KLQotCSJFeHRlbmRlZCBBZGRyZXNzIFNwYWNlIERlc2NyaXB0b3IiCi19OwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIE5hbWVzcGFjZSBnbG9iYWxzCkBAIC0zMTcsOSArMjkzLDkgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdHJ1Y3QgYWNwaV90YWJsZV9saXN0IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW05VTV9BQ1BJX1RBQkxFX1RZUEVTXTsKK3N0cnVjdCBhY3BpX3RhYmxlX2xpc3QgYWNwaV9nYmxfdGFibGVfbGlzdHNbQUNQSV9UQUJMRV9JRF9NQVggKyAxXTsKIAotc3RydWN0IGFjcGlfdGFibGVfc3VwcG9ydCBhY3BpX2dibF90YWJsZV9kYXRhW05VTV9BQ1BJX1RBQkxFX1RZUEVTXSA9IHsKK3N0cnVjdCBhY3BpX3RhYmxlX3N1cHBvcnQgYWNwaV9nYmxfdGFibGVfZGF0YVtBQ1BJX1RBQkxFX0lEX01BWCArIDFdID0gewogCS8qKioqKioqKioqKiAgICBOYW1lLCAgIFNpZ25hdHVyZSwgR2xvYmFsIHR5cGVkIHBvaW50ZXIgICAgIFNpZ25hdHVyZSBzaXplLCAgICAgIFR5cGUgICAgICAgICAgICAgICAgICBIb3cgbWFueSBhbGxvd2VkPywgICAgQ29udGFpbnMgdmFsaWQgQU1MPyAqLwogCiAJLyogUlNEUCAwICovIHtSU0RQX05BTUUsIFJTRFBfU0lHLCBOVUxMLCBzaXplb2YoUlNEUF9TSUcpIC0gMSwKQEAgLTQ2Nyw3ICs0NDMsNiBAQAogLyogUmVnaW9uIHR5cGUgZGVjb2RpbmcgKi8KIAogY29uc3QgY2hhciAqYWNwaV9nYmxfcmVnaW9uX3R5cGVzW0FDUElfTlVNX1BSRURFRklORURfUkVHSU9OU10gPSB7Ci0vKiEgW0JlZ2luXSBubyBzb3VyY2UgY29kZSB0cmFuc2xhdGlvbiAoa2VlcCB0aGVzZSBBU0wgS2V5d29yZHMgYXMtaXMpICovCiAJIlN5c3RlbU1lbW9yeSIsCiAJIlN5c3RlbUlPIiwKIAkiUENJX0NvbmZpZyIsCkBAIC00NzYsMTYgKzQ1MSwxNSBAQAogCSJDTU9TIiwKIAkiUENJQkFSVGFyZ2V0IiwKIAkiRGF0YVRhYmxlIgotLyohIFtFbmRdIG5vIHNvdXJjZSBjb2RlIHRyYW5zbGF0aW9uICEqLwogfTsKIAogY2hhciAqYWNwaV91dF9nZXRfcmVnaW9uX25hbWUodTggc3BhY2VfaWQpCiB7CiAKIAlpZiAoc3BhY2VfaWQgPj0gQUNQSV9VU0VSX1JFR0lPTl9CRUdJTikgewotCQlyZXR1cm4gKCJ1c2VyX2RlZmluZWRfcmVnaW9uIik7CisJCXJldHVybiAoIlVzZXJEZWZpbmVkUmVnaW9uIik7CiAJfSBlbHNlIGlmIChzcGFjZV9pZCA+PSBBQ1BJX05VTV9QUkVERUZJTkVEX1JFR0lPTlMpIHsKLQkJcmV0dXJuICgiaW52YWxpZF9zcGFjZV9pZCIpOworCQlyZXR1cm4gKCJJbnZhbGlkU3BhY2VJZCIpOwogCX0KIAogCXJldHVybiAoQUNQSV9DQVNUX1BUUihjaGFyLCBhY3BpX2dibF9yZWdpb25fdHlwZXNbc3BhY2VfaWRdKSk7CkBAIC01MDYsMjAgKzQ4MCwxOCBAQAogLyogRXZlbnQgdHlwZSBkZWNvZGluZyAqLwogCiBzdGF0aWMgY29uc3QgY2hhciAqYWNwaV9nYmxfZXZlbnRfdHlwZXNbQUNQSV9OVU1fRklYRURfRVZFTlRTXSA9IHsKLS8qISBbQmVnaW5dIG5vIHNvdXJjZSBjb2RlIHRyYW5zbGF0aW9uIChrZWVwIHRoZXNlIHN0cmluZ3MgYXMtaXMpICovCiAJIlBNX1RpbWVyIiwKIAkiR2xvYmFsTG9jayIsCiAJIlBvd2VyQnV0dG9uIiwKIAkiU2xlZXBCdXR0b24iLAogCSJSZWFsVGltZUNsb2NrIiwKLS8qISBbRW5kXSBubyBzb3VyY2UgY29kZSB0cmFuc2xhdGlvbiAhKi8KIH07CiAKIGNoYXIgKmFjcGlfdXRfZ2V0X2V2ZW50X25hbWUodTMyIGV2ZW50X2lkKQogewogCiAJaWYgKGV2ZW50X2lkID4gQUNQSV9FVkVOVF9NQVgpIHsKLQkJcmV0dXJuICgiaW52YWxpZF9ldmVudF9pRCIpOworCQlyZXR1cm4gKCJJbnZhbGlkRXZlbnRJRCIpOwogCX0KIAogCXJldHVybiAoQUNQSV9DQVNUX1BUUihjaGFyLCBhY3BpX2dibF9ldmVudF90eXBlc1tldmVudF9pZF0pKTsKQEAgLTU1MCw3ICs1MjIsNiBAQAogLyogUHJpbnRhYmxlIG5hbWVzIG9mIHRoZSBBQ1BJIG9iamVjdCB0eXBlcyAqLwogCiBzdGF0aWMgY29uc3QgY2hhciAqYWNwaV9nYmxfbnNfdHlwZV9uYW1lc1tdID0gewotLyohIFtCZWdpbl0gbm8gc291cmNlIGNvZGUgdHJhbnNsYXRpb24gKGtlZXAgdGhlc2Ugc3RyaW5ncyBhcy1pcykgKi8KIAkvKiAwMCAqLyAiVW50eXBlZCIsCiAJLyogMDEgKi8gIkludGVnZXIiLAogCS8qIDAyICovICJTdHJpbmciLApAQCAtNTgyLDcgKzU1Myw2IEBACiAJLyogMjggKi8gIkV4dHJhIiwKIAkvKiAyOSAqLyAiRGF0YSIsCiAJLyogMzAgKi8gIkludmFsaWQiCi0vKiEgW0VuZF0gbm8gc291cmNlIGNvZGUgdHJhbnNsYXRpb24gISovCiB9OwogCiBjaGFyICphY3BpX3V0X2dldF90eXBlX25hbWUoYWNwaV9vYmplY3RfdHlwZSB0eXBlKQpAQCAtNjM1LDE0ICs2MDUsMTQgQEAKIAogCS8qIERlc2NyaXB0b3IgbXVzdCBiZSBhIG5hbWVzcGFjZSBub2RlICovCiAKLQlpZiAobm9kZS0+ZGVzY3JpcHRvciAhPSBBQ1BJX0RFU0NfVFlQRV9OQU1FRCkgeworCWlmIChBQ1BJX0dFVF9ERVNDUklQVE9SX1RZUEUobm9kZSkgIT0gQUNQSV9ERVNDX1RZUEVfTkFNRUQpIHsKIAkJcmV0dXJuICgiIyMjIyIpOwogCX0KIAogCS8qIE5hbWUgbXVzdCBiZSBhIHZhbGlkIEFDUEkgbmFtZSAqLwogCiAJaWYgKCFhY3BpX3V0X3ZhbGlkX2FjcGlfbmFtZShub2RlLT5uYW1lLmludGVnZXIpKSB7Ci0JCXJldHVybiAoIj8/Pz8iKTsKKwkJbm9kZS0+bmFtZS5pbnRlZ2VyID0gYWNwaV91dF9yZXBhaXJfbmFtZShub2RlLT5uYW1lLmludGVnZXIpOwogCX0KIAogCS8qIFJldHVybiB0aGUgbmFtZSAqLwpAQCAtNjY1LDcgKzYzNSw2IEBACiAvKiBQcmludGFibGUgbmFtZXMgb2Ygb2JqZWN0IGRlc2NyaXB0b3IgdHlwZXMgKi8KIAogc3RhdGljIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX2Rlc2NfdHlwZV9uYW1lc1tdID0gewotLyohIFtCZWdpbl0gbm8gc291cmNlIGNvZGUgdHJhbnNsYXRpb24gKGtlZXAgdGhlc2UgQVNMIEtleXdvcmRzIGFzLWlzKSAqLwogCS8qIDAwICovICJJbnZhbGlkIiwKIAkvKiAwMSAqLyAiQ2FjaGVkIiwKIAkvKiAwMiAqLyAiU3RhdGUtR2VuZXJpYyIsCkBAIC02ODIsNyArNjUxLDYgQEAKIAkvKiAxMyAqLyAiUGFyc2VyIiwKIAkvKiAxNCAqLyAiT3BlcmFuZCIsCiAJLyogMTUgKi8gIk5vZGUiCi0vKiEgW0VuZF0gbm8gc291cmNlIGNvZGUgdHJhbnNsYXRpb24gISovCiB9OwogCiBjaGFyICphY3BpX3V0X2dldF9kZXNjcmlwdG9yX25hbWUodm9pZCAqb2JqZWN0KQpAQCAtNzIzLDcgKzY5MSw3IEBACiBjaGFyICphY3BpX3V0X2dldF9tdXRleF9uYW1lKHUzMiBtdXRleF9pZCkKIHsKIAotCWlmIChtdXRleF9pZCA+IE1BWF9NVVRFWCkgeworCWlmIChtdXRleF9pZCA+IEFDUElfTUFYX01VVEVYKSB7CiAJCXJldHVybiAoIkludmFsaWQgTXV0ZXggSUQiKTsKIAl9CiAKQEAgLTc0Nyw2ICs3MTUsNyBAQAogewogCiAJaWYgKHR5cGUgPiBBQ1BJX1RZUEVfTE9DQUxfTUFYKSB7CisKIAkJLyogTm90ZTogQXNzdW1lcyBhbGwgVFlQRXMgYXJlIGNvbnRpZ3VvdXMgKGV4dGVybmFsL2xvY2FsKSAqLwogCiAJCXJldHVybiAoRkFMU0UpOwpAQCAtNzczLDcgKzc0Miw3IEBACiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXUzMiBpOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfaW5pdF9nbG9iYWxzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9pbml0X2dsb2JhbHMpOwogCiAJLyogQ3JlYXRlIGFsbCBtZW1vcnkgY2FjaGVzICovCiAKQEAgLTc4NCwxNCArNzUzLDE0IEBACiAKIAkvKiBBQ1BJIHRhYmxlIHN0cnVjdHVyZSAqLwogCi0JZm9yIChpID0gMDsgaSA8IE5VTV9BQ1BJX1RBQkxFX1RZUEVTOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgKEFDUElfVEFCTEVfSURfTUFYICsgMSk7IGkrKykgewogCQlhY3BpX2dibF90YWJsZV9saXN0c1tpXS5uZXh0ID0gTlVMTDsKIAkJYWNwaV9nYmxfdGFibGVfbGlzdHNbaV0uY291bnQgPSAwOwogCX0KIAogCS8qIE11dGV4IGxvY2tlZCBmbGFncyAqLwogCi0JZm9yIChpID0gMDsgaSA8IE5VTV9NVVRFWDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFDUElfTlVNX01VVEVYOyBpKyspIHsKIAkJYWNwaV9nYmxfbXV0ZXhfaW5mb1tpXS5tdXRleCA9IE5VTEw7CiAJCWFjcGlfZ2JsX211dGV4X2luZm9baV0udGhyZWFkX2lkID0gQUNQSV9NVVRFWF9OT1RfQUNRVUlSRUQ7CiAJCWFjcGlfZ2JsX211dGV4X2luZm9baV0udXNlX2NvdW50ID0gMDsKQEAgLTg1Niw3ICs4MjUsNyBAQAogCiAJYWNwaV9nYmxfcm9vdF9ub2RlID0gTlVMTDsKIAlhY3BpX2dibF9yb290X25vZGVfc3RydWN0Lm5hbWUuaW50ZWdlciA9IEFDUElfUk9PVF9OQU1FOwotCWFjcGlfZ2JsX3Jvb3Rfbm9kZV9zdHJ1Y3QuZGVzY3JpcHRvciA9IEFDUElfREVTQ19UWVBFX05BTUVEOworCWFjcGlfZ2JsX3Jvb3Rfbm9kZV9zdHJ1Y3QuZGVzY3JpcHRvcl90eXBlID0gQUNQSV9ERVNDX1RZUEVfTkFNRUQ7CiAJYWNwaV9nYmxfcm9vdF9ub2RlX3N0cnVjdC50eXBlID0gQUNQSV9UWVBFX0RFVklDRTsKIAlhY3BpX2dibF9yb290X25vZGVfc3RydWN0LmNoaWxkID0gTlVMTDsKIAlhY3BpX2dibF9yb290X25vZGVfc3RydWN0LnBlZXIgPSBOVUxMOwpAQCAtODY5LDMgKzgzOCw2IEBACiAKIAlyZXR1cm5fVk9JRDsKIH0KKworQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZGJnX2xldmVsKQorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfZGJnX2xheWVyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGluaXQuYyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRpbml0LmMKaW5kZXggYmE3NzFiNC4uZmY3NjA1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dGluaXQuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0aW5pdC5jCkBAIC01MCw3ICs1MCw3IEBACiAKIC8qIExvY2FsIHByb3RvdHlwZXMgKi8KIHN0YXRpYyB2b2lkCi1hY3BpX3V0X2ZhZHRfcmVnaXN0ZXJfZXJyb3IoY2hhciAqcmVnaXN0ZXJfbmFtZSwgdTMyIHZhbHVlLCBhY3BpX3NpemUgb2Zmc2V0KTsKK2FjcGlfdXRfZmFkdF9yZWdpc3Rlcl9lcnJvcihjaGFyICpyZWdpc3Rlcl9uYW1lLCB1MzIgdmFsdWUsIHU4IG9mZnNldCk7CiAKIHN0YXRpYyB2b2lkIGFjcGlfdXRfdGVybWluYXRlKHZvaWQpOwogCkBAIC02OSwxMiArNjksMTIgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1hY3BpX3V0X2ZhZHRfcmVnaXN0ZXJfZXJyb3IoY2hhciAqcmVnaXN0ZXJfbmFtZSwgdTMyIHZhbHVlLCBhY3BpX3NpemUgb2Zmc2V0KQorYWNwaV91dF9mYWR0X3JlZ2lzdGVyX2Vycm9yKGNoYXIgKnJlZ2lzdGVyX25hbWUsIHUzMiB2YWx1ZSwgdTggb2Zmc2V0KQogewogCiAJQUNQSV9XQVJOSU5HKChBRV9JTkZPLAogCQkgICAgICAiSW52YWxpZCBGQURUIHZhbHVlICVzPSVYIGF0IG9mZnNldCAlWCBGQURUPSVwIiwKLQkJICAgICAgcmVnaXN0ZXJfbmFtZSwgdmFsdWUsICh1MzIpIG9mZnNldCwgYWNwaV9nYmxfRkFEVCkpOworCQkgICAgICByZWdpc3Rlcl9uYW1lLCB2YWx1ZSwgb2Zmc2V0LCBhY3BpX2dibF9GQURUKSk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE3Niw3ICsxNzYsNyBAQAogCXN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvICpncGVfeHJ1cHRfaW5mbzsKIAlzdHJ1Y3QgYWNwaV9ncGVfeHJ1cHRfaW5mbyAqbmV4dF9ncGVfeHJ1cHRfaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X3Rlcm1pbmF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfdGVybWluYXRlKTsKIAogCS8qIEZyZWUgZ2xvYmFsIHRhYmxlcywgZXRjLiAqLwogCS8qIEZyZWUgZ2xvYmFsIEdQRSBibG9ja3MgYW5kIHJlbGF0ZWQgaW5mbyBzdHJ1Y3R1cmVzICovCkBAIC0xODYsMTQgKzE4NiwxNCBAQAogCQlncGVfYmxvY2sgPSBncGVfeHJ1cHRfaW5mby0+Z3BlX2Jsb2NrX2xpc3RfaGVhZDsKIAkJd2hpbGUgKGdwZV9ibG9jaykgewogCQkJbmV4dF9ncGVfYmxvY2sgPSBncGVfYmxvY2stPm5leHQ7Ci0JCQlBQ1BJX01FTV9GUkVFKGdwZV9ibG9jay0+ZXZlbnRfaW5mbyk7Ci0JCQlBQ1BJX01FTV9GUkVFKGdwZV9ibG9jay0+cmVnaXN0ZXJfaW5mbyk7Ci0JCQlBQ1BJX01FTV9GUkVFKGdwZV9ibG9jayk7CisJCQlBQ1BJX0ZSRUUoZ3BlX2Jsb2NrLT5ldmVudF9pbmZvKTsKKwkJCUFDUElfRlJFRShncGVfYmxvY2stPnJlZ2lzdGVyX2luZm8pOworCQkJQUNQSV9GUkVFKGdwZV9ibG9jayk7CiAKIAkJCWdwZV9ibG9jayA9IG5leHRfZ3BlX2Jsb2NrOwogCQl9CiAJCW5leHRfZ3BlX3hydXB0X2luZm8gPSBncGVfeHJ1cHRfaW5mby0+bmV4dDsKLQkJQUNQSV9NRU1fRlJFRShncGVfeHJ1cHRfaW5mbyk7CisJCUFDUElfRlJFRShncGVfeHJ1cHRfaW5mbyk7CiAJCWdwZV94cnVwdF9pbmZvID0gbmV4dF9ncGVfeHJ1cHRfaW5mbzsKIAl9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQAogdm9pZCBhY3BpX3V0X3N1YnN5c3RlbV9zaHV0ZG93bih2b2lkKQogewogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfc3Vic3lzdGVtX3NodXRkb3duIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9zdWJzeXN0ZW1fc2h1dGRvd24pOwogCiAJLyogSnVzdCBleGl0IGlmIHN1YnN5c3RlbSBpcyBhbHJlYWR5IHNodXRkb3duICovCiAKQEAgLTIyOCw2ICsyMjgsNyBAQAogCS8qIFN1YnN5c3RlbSBhcHBlYXJzIGFjdGl2ZSwgZ28gYWhlYWQgYW5kIHNodXQgaXQgZG93biAqLwogCiAJYWNwaV9nYmxfc2h1dGRvd24gPSBUUlVFOworCWFjcGlfZ2JsX3N0YXJ0dXBfZmxhZ3MgPSAwOwogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIlNodXR0aW5nIGRvd24gQUNQSSBTdWJzeXN0ZW1cbiIpKTsKIAogCS8qIENsb3NlIHRoZSBhY3BpX2V2ZW50IEhhbmRsaW5nICovCkBAIC0yNDUsMTIgKzI0Niw1IEBACiAJLyogUHVyZ2UgdGhlIGxvY2FsIGNhY2hlcyAqLwogCiAJKHZvaWQpYWNwaV91dF9kZWxldGVfY2FjaGVzKCk7Ci0KLQkvKiBEZWJ1ZyBvbmx5IC0gZGlzcGxheSBsZWZ0b3ZlciBtZW1vcnkgYWxsb2NhdGlvbiwgaWYgYW55ICovCi0KLSNpZmRlZiBBQ1BJX0RCR19UUkFDS19BTExPQ0FUSU9OUwotCWFjcGlfdXRfZHVtcF9hbGxvY2F0aW9ucyhBQ1BJX1VJTlQzMl9NQVgsIE5VTEwpOwotI2VuZGlmCi0KIAlyZXR1cm5fVk9JRDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtYXRoLmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0bWF0aC5jCmluZGV4IDRhMzM2MDQuLjE5ZDc0YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtYXRoLmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dG1hdGguYwpAQCAtNzcsNyArNzcsNyBAQAogCXVuaW9uIHVpbnQ2NF9vdmVybGF5IHF1b3RpZW50OwogCXUzMiByZW1haW5kZXIzMjsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X3Nob3J0X2RpdmlkZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfc2hvcnRfZGl2aWRlKTsKIAogCS8qIEFsd2F5cyBjaGVjayBmb3IgYSB6ZXJvIGRpdmlzb3IgKi8KIApAQCAtMTM5LDcgKzEzOSw3IEBACiAJdW5pb24gdWludDY0X292ZXJsYXkgcGFydGlhbDI7CiAJdW5pb24gdWludDY0X292ZXJsYXkgcGFydGlhbDM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9kaXZpZGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2RpdmlkZSk7CiAKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGEgemVybyBkaXZpc29yICovCiAKQEAgLTI2MSw3ICsyNjEsNyBAQAogCQkgICAgIGFjcGlfaW50ZWdlciAqIG91dF9xdW90aWVudCwgdTMyICogb3V0X3JlbWFpbmRlcikKIHsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X3Nob3J0X2RpdmlkZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfc2hvcnRfZGl2aWRlKTsKIAogCS8qIEFsd2F5cyBjaGVjayBmb3IgYSB6ZXJvIGRpdmlzb3IgKi8KIApAQCAtMjg3LDcgKzI4Nyw3IEBACiAJICAgICAgIGFjcGlfaW50ZWdlciBpbl9kaXZpc29yLAogCSAgICAgICBhY3BpX2ludGVnZXIgKiBvdXRfcXVvdGllbnQsIGFjcGlfaW50ZWdlciAqIG91dF9yZW1haW5kZXIpCiB7Ci0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfZGl2aWRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9kaXZpZGUpOwogCiAJLyogQWx3YXlzIGNoZWNrIGZvciBhIHplcm8gZGl2aXNvciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0bWlzYy5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dG1pc2MuYwppbmRleCA3MzY0ZjVmLi41Yzc1ZDM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0bWlzYy5jCisrKyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtaXNjLmMKQEAgLTQ5LDYgKzQ5LDMzIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgorICogRlVOQ1RJT046ICAgIGFjcGlfdXRfaXNfYW1sX3RhYmxlCisgKgorICogUEFSQU1FVEVSUzogIFRhYmxlICAgICAgICAgICAgICAgLSBBbiBBQ1BJIHRhYmxlCisgKgorICogUkVUVVJOOiAgICAgIFRSVUUgaWYgdGFibGUgY29udGFpbnMgZXhlY3V0YWJsZSBBTUw7IEZBTFNFIG90aGVyd2lzZQorICoKKyAqIERFU0NSSVBUSU9OOiBDaGVjayBBQ1BJIFNpZ25hdHVyZSBmb3IgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIEFNTCBjb2RlLgorICogICAgICAgICAgICAgIEN1cnJlbnRseSwgdGhlc2UgYXJlIERTRFQsU1NEVCxQU0RULiBBbGwgb3RoZXIgdGFibGUgdHlwZXMgYXJlCisgKiAgICAgICAgICAgICAgZGF0YSB0YWJsZXMgdGhhdCBkbyBub3QgY29udGFpbiBBTUwgY29kZS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordTggYWNwaV91dF9pc19hbWxfdGFibGUoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkKK3sKKworCS8qIElnbm9yZSB0YWJsZXMgdGhhdCBjb250YWluIEFNTCAqLworCisJaWYgKEFDUElfQ09NUEFSRV9OQU1FKHRhYmxlLT5zaWduYXR1cmUsIERTRFRfU0lHKSB8fAorCSAgICBBQ1BJX0NPTVBBUkVfTkFNRSh0YWJsZS0+c2lnbmF0dXJlLCBQU0RUX1NJRykgfHwKKwkgICAgQUNQSV9DT01QQVJFX05BTUUodGFibGUtPnNpZ25hdHVyZSwgU1NEVF9TSUcpKSB7CisJCXJldHVybiAoVFJVRSk7CisJfQorCisJcmV0dXJuIChGQUxTRSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgogICogRlVOQ1RJT046ICAgIGFjcGlfdXRfYWxsb2NhdGVfb3duZXJfaWQKICAqCiAgKiBQQVJBTUVURVJTOiAgb3duZXJfaWQgICAgICAgIC0gV2hlcmUgdGhlIG5ldyBvd25lciBJRCBpcyByZXR1cm5lZApAQCAtNjAsNiArODcsNyBAQAogICogICAgICAgICAgICAgIHdoZW4gdGhlIG1ldGhvZCBleGl0cyBvciB0aGUgdGFibGUgaXMgdW5sb2FkZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogYWNwaV9zdGF0dXMgYWNwaV91dF9hbGxvY2F0ZV9vd25lcl9pZChhY3BpX293bmVyX2lkICogb3duZXJfaWQpCiB7CiAJYWNwaV9uYXRpdmVfdWludCBpOwpAQCAtNjcsNyArOTUsNyBAQAogCWFjcGlfbmF0aXZlX3VpbnQgazsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9hbGxvY2F0ZV9vd25lcl9pZCIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfYWxsb2NhdGVfb3duZXJfaWQpOwogCiAJLyogR3VhcmQgYWdhaW5zdCBtdWx0aXBsZSBhbGxvY2F0aW9ucyBvZiBJRCB0byB0aGUgc2FtZSBsb2NhdGlvbiAqLwogCkBAIC05Nyw2ICsxMjUsNyBAQAogCiAJCWZvciAoayA9IGFjcGlfZ2JsX25leHRfb3duZXJfaWRfb2Zmc2V0OyBrIDwgMzI7IGsrKykgewogCQkJaWYgKGFjcGlfZ2JsX293bmVyX2lkX21hc2tbal0gPT0gQUNQSV9VSU5UMzJfTUFYKSB7CisKIAkJCQkvKiBUaGVyZSBhcmUgbm8gZnJlZSBJRHMgaW4gdGhpcyBtYXNrICovCiAKIAkJCQlicmVhazsKQEAgLTEyMyw3ICsxNTIsNyBAQAogCQkJCSAgICAoYWNwaV9vd25lcl9pZCkgKChrICsgMSkgKyBBQ1BJX01VTF8zMihqKSk7CiAKIAkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX1ZBTFVFUywKLQkJCQkJCSAgIkFsbG9jYXRlZCBvd25lcl9pZDogJTIuMlhcbiIsCisJCQkJCQkgICJBbGxvY2F0ZWQgT3duZXJJZDogJTIuMlhcbiIsCiAJCQkJCQkgICh1bnNpZ25lZCBpbnQpKm93bmVyX2lkKSk7CiAJCQkJZ290byBleGl0OwogCQkJfQpAQCAtMTQ0LDcgKzE3Myw3IEBACiAJICovCiAJc3RhdHVzID0gQUVfT1dORVJfSURfTElNSVQ7CiAJQUNQSV9FUlJPUigoQUVfSU5GTywKLQkJICAgICJDb3VsZCBub3QgYWxsb2NhdGUgbmV3IG93bmVyX2lkICgyNTUgbWF4KSwgQUVfT1dORVJfSURfTElNSVQiKSk7CisJCSAgICAiQ291bGQgbm90IGFsbG9jYXRlIG5ldyBPd25lcklkICgyNTUgbWF4KSwgQUVfT1dORVJfSURfTElNSVQiKSk7CiAKICAgICAgIGV4aXQ6CiAJKHZvaWQpYWNwaV91dF9yZWxlYXNlX211dGV4KEFDUElfTVRYX0NBQ0hFUyk7CkBAIC0xNzIsNyArMjAxLDcgQEAKIAlhY3BpX25hdGl2ZV91aW50IGluZGV4OwogCXUzMiBiaXQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMigidXRfcmVsZWFzZV9vd25lcl9pZCIsIG93bmVyX2lkKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMih1dF9yZWxlYXNlX293bmVyX2lkLCBvd25lcl9pZCk7CiAKIAkvKiBBbHdheXMgY2xlYXIgdGhlIGlucHV0IG93bmVyX2lkICh6ZXJvIGlzIGFuIGludmFsaWQgSUQpICovCiAKQEAgLTE4MSw3ICsyMTAsNyBAQAogCS8qIFplcm8gaXMgbm90IGEgdmFsaWQgb3duZXJfaUQgKi8KIAogCWlmIChvd25lcl9pZCA9PSAwKSB7Ci0JCUFDUElfRVJST1IoKEFFX0lORk8sICJJbnZhbGlkIG93bmVyX2lkOiAlMi4yWCIsIG93bmVyX2lkKSk7CisJCUFDUElfRVJST1IoKEFFX0lORk8sICJJbnZhbGlkIE93bmVySWQ6ICUyLjJYIiwgb3duZXJfaWQpKTsKIAkJcmV0dXJuX1ZPSUQ7CiAJfQogCkBAIC0yMDcsNyArMjM2LDcgQEAKIAkJYWNwaV9nYmxfb3duZXJfaWRfbWFza1tpbmRleF0gXj0gYml0OwogCX0gZWxzZSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sCi0JCQkgICAgIlJlbGVhc2Ugb2Ygbm9uLWFsbG9jYXRlZCBvd25lcl9pZDogJTIuMlgiLAorCQkJICAgICJSZWxlYXNlIG9mIG5vbi1hbGxvY2F0ZWQgT3duZXJJZDogJTIuMlgiLAogCQkJICAgIG93bmVyX2lkICsgMSkpOwogCX0KIApAQCAtMjczLDYgKzMwMiw3IEBACiAKIAlhY3BpX29zX3ByaW50ZigiXCIiKTsKIAlmb3IgKGkgPSAwOyBzdHJpbmdbaV0gJiYgKGkgPCBtYXhfbGVuZ3RoKTsgaSsrKSB7CisKIAkJLyogRXNjYXBlIHNlcXVlbmNlcyAqLwogCiAJCXN3aXRjaCAoc3RyaW5nW2ldKSB7CkBAIC00NjEsMTIgKzQ5MSw0NyBAQAogCX0KIAlhY3BpX29zX3ByaW50ZigiXG4iKTsKIAotCUFDUElfTUVNX0ZSRUUoYnVmZmVyLnBvaW50ZXIpOworCUFDUElfRlJFRShidWZmZXIucG9pbnRlcik7CiB9CiAjZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCisgKiBGVU5DVElPTjogICAgYWNwaV91dF92YWxpZF9hY3BpX2NoYXIKKyAqCisgKiBQQVJBTUVURVJTOiAgQ2hhciAgICAgICAgICAgIC0gVGhlIGNoYXJhY3RlciB0byBiZSBleGFtaW5lZAorICoKKyAqIFJFVFVSTjogICAgICBUUlVFIGlmIHRoZSBjaGFyYWN0ZXIgaXMgdmFsaWQsIEZBTFNFIG90aGVyd2lzZQorICoKKyAqIERFU0NSSVBUSU9OOiBDaGVjayBmb3IgYSB2YWxpZCBBQ1BJIGNoYXJhY3Rlci4gTXVzdCBiZSBvbmUgb2Y6CisgKiAgICAgICAgICAgICAgMSkgVXBwZXIgY2FzZSBhbHBoYQorICogICAgICAgICAgICAgIDIpIG51bWVyaWMKKyAqICAgICAgICAgICAgICAzKSB1bmRlcnNjb3JlCisgKgorICogICAgICAgICAgICAgIFdlIGFsbG93IGEgJyEnIGFzIHRoZSBsYXN0IGNoYXJhY3RlciBiZWNhdXNlIG9mIHRoZSBBU0YhIHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordTggYWNwaV91dF92YWxpZF9hY3BpX2NoYXIoY2hhciBjaGFyYWN0ZXIsIGFjcGlfbmF0aXZlX3VpbnQgcG9zaXRpb24pCit7CisKKwlpZiAoISgoY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ1onKSB8fAorCSAgICAgIChjaGFyYWN0ZXIgPj0gJzAnICYmIGNoYXJhY3RlciA8PSAnOScpIHx8IChjaGFyYWN0ZXIgPT0gJ18nKSkpIHsKKworCQkvKiBBbGxvdyBhICchJyBpbiB0aGUgbGFzdCBwb3NpdGlvbiAqLworCisJCWlmIChjaGFyYWN0ZXIgPT0gJyEnICYmIHBvc2l0aW9uID09IDMpIHsKKwkJCXJldHVybiAoVFJVRSk7CisJCX0KKworCQlyZXR1cm4gKEZBTFNFKTsKKwl9CisKKwlyZXR1cm4gKFRSVUUpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X3ZhbGlkX2FjcGlfbmFtZQogICoKICAqIFBBUkFNRVRFUlM6ICBOYW1lICAgICAgICAgICAgLSBUaGUgbmFtZSB0byBiZSBleGFtaW5lZApAQCAtNDgyLDE5ICs1NDcsMTMgQEAKIAogdTggYWNwaV91dF92YWxpZF9hY3BpX25hbWUodTMyIG5hbWUpCiB7Ci0JY2hhciAqbmFtZV9wdHIgPSAoY2hhciAqKSZuYW1lOwotCWNoYXIgY2hhcmFjdGVyOwogCWFjcGlfbmF0aXZlX3VpbnQgaTsKIAogCUFDUElfRlVOQ1RJT05fRU5UUlkoKTsKIAogCWZvciAoaSA9IDA7IGkgPCBBQ1BJX05BTUVfU0laRTsgaSsrKSB7Ci0JCWNoYXJhY3RlciA9ICpuYW1lX3B0cjsKLQkJbmFtZV9wdHIrKzsKLQotCQlpZiAoISgoY2hhcmFjdGVyID09ICdfJykgfHwKLQkJICAgICAgKGNoYXJhY3RlciA+PSAnQScgJiYgY2hhcmFjdGVyIDw9ICdaJykgfHwKLQkJICAgICAgKGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykpKSB7CisJCWlmICghYWNwaV91dF92YWxpZF9hY3BpX2NoYXIKKwkJICAgICgoQUNQSV9DQVNUX1BUUihjaGFyLCAmbmFtZSkpW2ldLCBpKSkgewogCQkJcmV0dXJuIChGQUxTRSk7CiAJCX0KIAl9CkBAIC01MDQsMjQgKzU2MywzNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X3ZhbGlkX2FjcGlfY2hhcmFjdGVyCisgKiBGVU5DVElPTjogICAgYWNwaV91dF9yZXBhaXJfbmFtZQogICoKLSAqIFBBUkFNRVRFUlM6ICBDaGFyYWN0ZXIgICAgICAgICAgIC0gVGhlIGNoYXJhY3RlciB0byBiZSBleGFtaW5lZAorICogUEFSQU1FVEVSUzogIE5hbWUgICAgICAgICAgICAtIFRoZSBBQ1BJIG5hbWUgdG8gYmUgcmVwYWlyZWQKICAqCi0gKiBSRVRVUk46ICAgICAgMSBpZiBDaGFyYWN0ZXIgbWF5IGFwcGVhciBpbiBhIG5hbWUsIGVsc2UgMAorICogUkVUVVJOOiAgICAgIFJlcGFpcmVkIHZlcnNpb24gb2YgdGhlIG5hbWUKICAqCi0gKiBERVNDUklQVElPTjogQ2hlY2sgZm9yIGEgcHJpbnRhYmxlIGNoYXJhY3RlcgorICogREVTQ1JJUFRJT046IFJlcGFpciBhbiBBQ1BJIG5hbWU6IENoYW5nZSBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gJyonIGFuZAorICogICAgICAgICAgICAgIHJldHVybiB0aGUgbmV3IG5hbWUuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotdTggYWNwaV91dF92YWxpZF9hY3BpX2NoYXJhY3RlcihjaGFyIGNoYXJhY3RlcikKK2FjcGlfbmFtZSBhY3BpX3V0X3JlcGFpcl9uYW1lKGFjcGlfbmFtZSBuYW1lKQogeworCWNoYXIgKm5hbWVfcHRyID0gQUNQSV9DQVNUX1BUUihjaGFyLCAmbmFtZSk7CisJY2hhciBuZXdfbmFtZVtBQ1BJX05BTUVfU0laRV07CisJYWNwaV9uYXRpdmVfdWludCBpOwogCi0JQUNQSV9GVU5DVElPTl9FTlRSWSgpOworCWZvciAoaSA9IDA7IGkgPCBBQ1BJX05BTUVfU0laRTsgaSsrKSB7CisJCW5ld19uYW1lW2ldID0gbmFtZV9wdHJbaV07CiAKLQlyZXR1cm4gKCh1OCkgKChjaGFyYWN0ZXIgPT0gJ18nKSB8fAotCQkgICAgICAoY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ1onKSB8fAotCQkgICAgICAoY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknKSkpOworCQkvKgorCQkgKiBSZXBsYWNlIGEgYmFkIGNoYXJhY3RlciB3aXRoIHNvbWV0aGluZyBwcmludGFibGUsIHlldCB0ZWNobmljYWxseQorCQkgKiBzdGlsbCBpbnZhbGlkLiBUaGlzIHByZXZlbnRzIGFueSBjb2xsaXNpb25zIHdpdGggZXhpc3RpbmcgImdvb2QiCisJCSAqIG5hbWVzIGluIHRoZSBuYW1lc3BhY2UuCisJCSAqLworCQlpZiAoIWFjcGlfdXRfdmFsaWRfYWNwaV9jaGFyKG5hbWVfcHRyW2ldLCBpKSkgeworCQkJbmV3X25hbWVbaV0gPSAnKic7CisJCX0KKwl9CisKKwlyZXR1cm4gKCpBQ1BJX0NBU1RfUFRSKHUzMiwgbmV3X25hbWUpKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTUyOSw3ICs2MDEsOCBAQAogICogRlVOQ1RJT046ICAgIGFjcGlfdXRfc3RydG91bDY0CiAgKgogICogUEFSQU1FVEVSUzogIFN0cmluZyAgICAgICAgICAtIE51bGwgdGVybWluYXRlZCBzdHJpbmcKLSAqICAgICAgICAgICAgICBCYXNlICAgICAgICAgICAgLSBSYWRpeCBvZiB0aGUgc3RyaW5nOiAxMCwgMTYsIG9yIEFDUElfQU5ZX0JBU0UKKyAqICAgICAgICAgICAgICBCYXNlICAgICAgICAgICAgLSBSYWRpeCBvZiB0aGUgc3RyaW5nOiAxNiBvciBBQ1BJX0FOWV9CQVNFOworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfQU5ZX0JBU0UgbWVhbnMgJ2luIGJlaGFsZiBvZiB0b19pbnRlZ2VyJwogICogICAgICAgICAgICAgIHJldF9pbnRlZ2VyICAgICAtIFdoZXJlIHRoZSBjb252ZXJ0ZWQgaW50ZWdlciBpcyByZXR1cm5lZAogICoKICAqIFJFVFVSTjogICAgICBTdGF0dXMgYW5kIENvbnZlcnRlZCB2YWx1ZQpAQCAtNTQ1LDE2ICs2MTgsMTcgQEAKIAl1MzIgdGhpc19kaWdpdCA9IDA7CiAJYWNwaV9pbnRlZ2VyIHJldHVybl92YWx1ZSA9IDA7CiAJYWNwaV9pbnRlZ2VyIHF1b3RpZW50OworCWFjcGlfaW50ZWdlciBkaXZpZGVuZDsKKwl1MzIgdG9faW50ZWdlcl9vcCA9IChiYXNlID09IEFDUElfQU5ZX0JBU0UpOworCXUzMiBtb2RlMzIgPSAoYWNwaV9nYmxfaW50ZWdlcl9ieXRlX3dpZHRoID09IDQpOworCXU4IHZhbGlkX2RpZ2l0cyA9IDA7CisJdTggc2lnbl9vZjB4ID0gMDsKKwl1OCB0ZXJtID0gMDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X3N0cm91bDY0Iik7Ci0KLQlpZiAoKCFzdHJpbmcpIHx8ICEoKnN0cmluZykpIHsKLQkJZ290byBlcnJvcl9leGl0OwotCX0KKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X3N0cm91bDY0KTsKIAogCXN3aXRjaCAoYmFzZSkgewogCWNhc2UgQUNQSV9BTllfQkFTRToKLQljYXNlIDEwOgogCWNhc2UgMTY6CiAJCWJyZWFrOwogCkBAIC01NjMsNzYgKzYzNywxMTAgQEAKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIAorCWlmICghc3RyaW5nKSB7CisJCWdvdG8gZXJyb3JfZXhpdDsKKwl9CisKIAkvKiBTa2lwIG92ZXIgYW55IHdoaXRlIHNwYWNlIGluIHRoZSBidWZmZXIgKi8KIAotCXdoaWxlIChBQ1BJX0lTX1NQQUNFKCpzdHJpbmcpIHx8ICpzdHJpbmcgPT0gJ1x0JykgeworCXdoaWxlICgoKnN0cmluZykgJiYgKEFDUElfSVNfU1BBQ0UoKnN0cmluZykgfHwgKnN0cmluZyA9PSAnXHQnKSkgewogCQlzdHJpbmcrKzsKIAl9CiAKLQkvKgotCSAqIElmIHRoZSBpbnB1dCBwYXJhbWV0ZXIgQmFzZSBpcyB6ZXJvLCB0aGVuIHdlIG5lZWQgdG8KLQkgKiBkZXRlcm1pbmUgaWYgaXQgaXMgZGVjaW1hbCBvciBoZXhhZGVjaW1hbDoKLQkgKi8KLQlpZiAoYmFzZSA9PSAwKSB7CisJaWYgKHRvX2ludGVnZXJfb3ApIHsKKwkJLyoKKwkJICogQmFzZSBlcXVhbCB0byBBQ1BJX0FOWV9CQVNFIG1lYW5zICd0b19pbnRlZ2VyIG9wZXJhdGlvbiBjYXNlJy4KKwkJICogV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgZGVjaW1hbCBvciBoZXhhZGVjaW1hbC4KKwkJICovCiAJCWlmICgoKnN0cmluZyA9PSAnMCcpICYmIChBQ1BJX1RPTE9XRVIoKihzdHJpbmcgKyAxKSkgPT0gJ3gnKSkgeworCQkJc2lnbl9vZjB4ID0gMTsKIAkJCWJhc2UgPSAxNjsKKworCQkJLyogU2tpcCBvdmVyIHRoZSBsZWFkaW5nICcweCcgKi8KIAkJCXN0cmluZyArPSAyOwogCQl9IGVsc2UgewogCQkJYmFzZSA9IDEwOwogCQl9CiAJfQogCi0JLyoKLQkgKiBGb3IgaGV4YWRlY2ltYWwgYmFzZSwgc2tpcCBvdmVyIHRoZSBsZWFkaW5nCi0JICogMCBvciAweCwgaWYgdGhleSBhcmUgcHJlc2VudC4KLQkgKi8KLQlpZiAoKGJhc2UgPT0gMTYpICYmCi0JICAgICgqc3RyaW5nID09ICcwJykgJiYgKEFDUElfVE9MT1dFUigqKHN0cmluZyArIDEpKSA9PSAneCcpKSB7Ci0JCXN0cmluZyArPSAyOworCS8qIEFueSBzdHJpbmcgbGVmdD8gQ2hlY2sgdGhhdCAnMHgnIGlzIG5vdCBmb2xsb3dlZCBieSB3aGl0ZSBzcGFjZS4gKi8KKworCWlmICghKCpzdHJpbmcpIHx8IEFDUElfSVNfU1BBQ0UoKnN0cmluZykgfHwgKnN0cmluZyA9PSAnXHQnKSB7CisJCWlmICh0b19pbnRlZ2VyX29wKSB7CisJCQlnb3RvIGVycm9yX2V4aXQ7CisJCX0gZWxzZSB7CisJCQlnb3RvIGFsbF9kb25lOworCQl9CiAJfQogCi0JLyogQW55IHN0cmluZyBsZWZ0PyAqLworCWRpdmlkZW5kID0gKG1vZGUzMikgPyBBQ1BJX1VJTlQzMl9NQVggOiBBQ1BJX1VJTlQ2NF9NQVg7CiAKLQlpZiAoISgqc3RyaW5nKSkgewotCQlnb3RvIGVycm9yX2V4aXQ7Ci0JfQorCS8qIEF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBoZXJlICovCiAKIAkvKiBNYWluIGxvb3A6IGNvbnZlcnQgdGhlIHN0cmluZyB0byBhIDY0LWJpdCBpbnRlZ2VyICovCiAKIAl3aGlsZSAoKnN0cmluZykgewogCQlpZiAoQUNQSV9JU19ESUdJVCgqc3RyaW5nKSkgeworCiAJCQkvKiBDb252ZXJ0IEFTQ0lJIDAtOSB0byBEZWNpbWFsIHZhbHVlICovCiAKIAkJCXRoaXNfZGlnaXQgPSAoKHU4KSAqIHN0cmluZykgLSAnMCc7CisJCX0gZWxzZSBpZiAoYmFzZSA9PSAxMCkgeworCisJCQkvKiBEaWdpdCBpcyBvdXQgb2YgcmFuZ2U7IHBvc3NpYmxlIGluIHRvX2ludGVnZXIgY2FzZSBvbmx5ICovCisKKwkJCXRlcm0gPSAxOwogCQl9IGVsc2UgewotCQkJaWYgKGJhc2UgPT0gMTApIHsKLQkJCQkvKiBEaWdpdCBpcyBvdXQgb2YgcmFuZ2UgKi8KLQotCQkJCWdvdG8gZXJyb3JfZXhpdDsKLQkJCX0KLQogCQkJdGhpc19kaWdpdCA9ICh1OCkgQUNQSV9UT1VQUEVSKCpzdHJpbmcpOwogCQkJaWYgKEFDUElfSVNfWERJR0lUKChjaGFyKXRoaXNfZGlnaXQpKSB7CisKIAkJCQkvKiBDb252ZXJ0IEFTQ0lJIEhleCBjaGFyIHRvIHZhbHVlICovCiAKIAkJCQl0aGlzX2RpZ2l0ID0gdGhpc19kaWdpdCAtICdBJyArIDEwOwogCQkJfSBlbHNlIHsKLQkJCQkvKgotCQkJCSAqIFdlIGFsbG93IG5vbi1oZXggY2hhcnMsIGp1c3Qgc3RvcCBub3csIHNhbWUgYXMgZW5kLW9mLXN0cmluZy4KLQkJCQkgKiBTZWUgQUNQSSBzcGVjLCBzdHJpbmctdG8taW50ZWdlciBjb252ZXJzaW9uLgotCQkJCSAqLworCQkJCXRlcm0gPSAxOworCQkJfQorCQl9CisKKwkJaWYgKHRlcm0pIHsKKwkJCWlmICh0b19pbnRlZ2VyX29wKSB7CisJCQkJZ290byBlcnJvcl9leGl0OworCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKIAkJCX0KKwkJfSBlbHNlIGlmICgodmFsaWRfZGlnaXRzID09IDApICYmICh0aGlzX2RpZ2l0ID09IDApCisJCQkgICAmJiAhc2lnbl9vZjB4KSB7CisKKwkJCS8qIFNraXAgemVyb3MgKi8KKwkJCXN0cmluZysrOworCQkJY29udGludWU7CisJCX0KKworCQl2YWxpZF9kaWdpdHMrKzsKKworCQlpZiAoc2lnbl9vZjB4CisJCSAgICAmJiAoKHZhbGlkX2RpZ2l0cyA+IDE2KQorCQkJfHwgKCh2YWxpZF9kaWdpdHMgPiA4KSAmJiBtb2RlMzIpKSkgeworCQkJLyoKKwkJCSAqIFRoaXMgaXMgdG9faW50ZWdlciBvcGVyYXRpb24gY2FzZS4KKwkJCSAqIE5vIGFueSByZXN0cmljdGlvbnMgZm9yIHN0cmluZy10by1pbnRlZ2VyIGNvbnZlcnNpb24sCisJCQkgKiBzZWUgQUNQSSBzcGVjLgorCQkJICovCisJCQlnb3RvIGVycm9yX2V4aXQ7CiAJCX0KIAogCQkvKiBEaXZpZGUgdGhlIGRpZ2l0IGludG8gdGhlIGNvcnJlY3QgcG9zaXRpb24gKi8KIAogCQkodm9pZCkKLQkJICAgIGFjcGlfdXRfc2hvcnRfZGl2aWRlKChBQ1BJX0lOVEVHRVJfTUFYIC0KLQkJCQkJICAoYWNwaV9pbnRlZ2VyKSB0aGlzX2RpZ2l0KSwgYmFzZSwKLQkJCQkJICZxdW90aWVudCwgTlVMTCk7CisJCSAgICBhY3BpX3V0X3Nob3J0X2RpdmlkZSgoZGl2aWRlbmQgLSAoYWNwaV9pbnRlZ2VyKSB0aGlzX2RpZ2l0KSwKKwkJCQkJIGJhc2UsICZxdW90aWVudCwgTlVMTCk7CisKIAkJaWYgKHJldHVybl92YWx1ZSA+IHF1b3RpZW50KSB7Ci0JCQlnb3RvIGVycm9yX2V4aXQ7CisJCQlpZiAodG9faW50ZWdlcl9vcCkgeworCQkJCWdvdG8gZXJyb3JfZXhpdDsKKwkJCX0gZWxzZSB7CisJCQkJYnJlYWs7CisJCQl9CiAJCX0KIAogCQlyZXR1cm5fdmFsdWUgKj0gYmFzZTsKQEAgLTY0Miw2ICs3NTAsOCBAQAogCiAJLyogQWxsIGRvbmUsIG5vcm1hbCBleGl0ICovCiAKKyAgICAgIGFsbF9kb25lOgorCiAJKnJldF9pbnRlZ2VyID0gcmV0dXJuX3ZhbHVlOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiAKQEAgLTcxOSw3ICs4MjksNyBAQAogCXUzMiB0aGlzX2luZGV4OwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnRoaXNfc291cmNlX29iajsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X3dhbGtfcGFja2FnZV90cmVlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF93YWxrX3BhY2thZ2VfdHJlZSk7CiAKIAlzdGF0ZSA9IGFjcGlfdXRfY3JlYXRlX3BrZ19zdGF0ZShzb3VyY2Vfb2JqZWN0LCB0YXJnZXRfb2JqZWN0LCAwKTsKIAlpZiAoIXN0YXRlKSB7CkBAIC03MjcsNiArODM3LDcgQEAKIAl9CiAKIAl3aGlsZSAoc3RhdGUpIHsKKwogCQkvKiBHZXQgb25lIGVsZW1lbnQgb2YgdGhlIHBhY2thZ2UgKi8KIAogCQl0aGlzX2luZGV4ID0gc3RhdGUtPnBrZy5pbmRleDsKQEAgLTgxNCwzMSArOTI1LDYgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBGVU5DVElPTjogICAgYWNwaV91dF9nZW5lcmF0ZV9jaGVja3N1bQotICoKLSAqIFBBUkFNRVRFUlM6ICBCdWZmZXIgICAgICAgICAgLSBCdWZmZXIgdG8gYmUgc2Nhbm5lZAotICogICAgICAgICAgICAgIExlbmd0aCAgICAgICAgICAtIG51bWJlciBvZiBieXRlcyB0byBleGFtaW5lCi0gKgotICogUkVUVVJOOiAgICAgIFRoZSBnZW5lcmF0ZWQgY2hlY2tzdW0KLSAqCi0gKiBERVNDUklQVElPTjogR2VuZXJhdGUgYSBjaGVja3N1bSBvbiBhIHJhdyBidWZmZXIKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi11OCBhY3BpX3V0X2dlbmVyYXRlX2NoZWNrc3VtKHU4ICogYnVmZmVyLCB1MzIgbGVuZ3RoKQotewotCXUzMiBpOwotCXNpZ25lZCBjaGFyIHN1bSA9IDA7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLQkJc3VtID0gKHNpZ25lZCBjaGFyKShzdW0gKyBidWZmZXJbaV0pOwotCX0KLQotCXJldHVybiAoKHU4KSAoMCAtIHN1bSkpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X2Vycm9yLCBhY3BpX3V0X3dhcm5pbmcsIGFjcGlfdXRfaW5mbwogICoKICAqIFBBUkFNRVRFUlM6ICBtb2R1bGVfbmFtZSAgICAgICAgIC0gQ2FsbGVyJ3MgbW9kdWxlIG5hbWUgKGZvciBlcnJvciBvdXRwdXQpCkBAIC05MDAsMzYgKzk4NiwzIEBACiAJYWNwaV9vc192cHJpbnRmKGZvcm1hdCwgYXJncyk7CiAJYWNwaV9vc19wcmludGYoIiBbJVhdXG4iLCBBQ1BJX0NBX1ZFUlNJT04pOwogfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X3JlcG9ydF9lcnJvciwgV2FybmluZywgSW5mbwotICoKLSAqIFBBUkFNRVRFUlM6ICBtb2R1bGVfbmFtZSAgICAgICAgIC0gQ2FsbGVyJ3MgbW9kdWxlIG5hbWUgKGZvciBlcnJvciBvdXRwdXQpCi0gKiAgICAgICAgICAgICAgbGluZV9udW1iZXIgICAgICAgICAtIENhbGxlcidzIGxpbmUgbnVtYmVyIChmb3IgZXJyb3Igb3V0cHV0KQotICoKLSAqIFJFVFVSTjogICAgICBOb25lCi0gKgotICogREVTQ1JJUFRJT046IFByaW50IGVycm9yIG1lc3NhZ2UKLSAqCi0gKiBOb3RlOiBMZWdhY3kgb25seSwgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBubyBsb25nZXIgdXNlZCBieSBkcml2ZXJzLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXZvaWQgYWNwaV91dF9yZXBvcnRfZXJyb3IoY2hhciAqbW9kdWxlX25hbWUsIHUzMiBsaW5lX251bWJlcikKLXsKLQotCWFjcGlfb3NfcHJpbnRmKCJBQ1BJIEVycm9yICglcy0lMDRkKTogIiwgbW9kdWxlX25hbWUsIGxpbmVfbnVtYmVyKTsKLX0KLQotdm9pZCBhY3BpX3V0X3JlcG9ydF93YXJuaW5nKGNoYXIgKm1vZHVsZV9uYW1lLCB1MzIgbGluZV9udW1iZXIpCi17Ci0KLQlhY3BpX29zX3ByaW50ZigiQUNQSSBXYXJuaW5nICglcy0lMDRkKTogIiwgbW9kdWxlX25hbWUsIGxpbmVfbnVtYmVyKTsKLX0KLQotdm9pZCBhY3BpX3V0X3JlcG9ydF9pbmZvKGNoYXIgKm1vZHVsZV9uYW1lLCB1MzIgbGluZV9udW1iZXIpCi17Ci0KLQlhY3BpX29zX3ByaW50ZigiQUNQSSAoJXMtJTA0ZCk6ICIsIG1vZHVsZV9uYW1lLCBsaW5lX251bWJlcik7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0bXV0ZXguYyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtdXRleC5jCmluZGV4IDQ1YTcyNDQuLjI1ZWIzNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtdXRleC5jCisrKyBiL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRtdXRleC5jCkBAIC02OCwxOSArNjgsMjYgQEAKIAl1MzIgaTsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9tdXRleF9pbml0aWFsaXplIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9tdXRleF9pbml0aWFsaXplKTsKIAogCS8qCiAJICogQ3JlYXRlIGVhY2ggb2YgdGhlIHByZWRlZmluZWQgbXV0ZXggb2JqZWN0cwogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBOVU1fTVVURVg7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBQ1BJX05VTV9NVVRFWDsgaSsrKSB7CiAJCXN0YXR1cyA9IGFjcGlfdXRfY3JlYXRlX211dGV4KGkpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQl9CiAJfQogCisJLyogQ3JlYXRlIHRoZSBzcGlubG9ja3MgZm9yIHVzZSBhdCBpbnRlcnJ1cHQgbGV2ZWwgKi8KKwogCXN0YXR1cyA9IGFjcGlfb3NfY3JlYXRlX2xvY2soJmFjcGlfZ2JsX2dwZV9sb2NrKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CisJfQorCisJc3RhdHVzID0gYWNwaV9vc19jcmVhdGVfbG9jaygmYWNwaV9nYmxfaGFyZHdhcmVfbG9jayk7CiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKQEAgLTEwMCwxNiArMTA3LDE5IEBACiB7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9tdXRleF90ZXJtaW5hdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X211dGV4X3Rlcm1pbmF0ZSk7CiAKIAkvKgogCSAqIERlbGV0ZSBlYWNoIHByZWRlZmluZWQgbXV0ZXggb2JqZWN0CiAJICovCi0JZm9yIChpID0gMDsgaSA8IE5VTV9NVVRFWDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFDUElfTlVNX01VVEVYOyBpKyspIHsKIAkJKHZvaWQpYWNwaV91dF9kZWxldGVfbXV0ZXgoaSk7CiAJfQogCisJLyogRGVsZXRlIHRoZSBzcGlubG9ja3MgKi8KKwogCWFjcGlfb3NfZGVsZXRlX2xvY2soYWNwaV9nYmxfZ3BlX2xvY2spOworCWFjcGlfb3NfZGVsZXRlX2xvY2soYWNwaV9nYmxfaGFyZHdhcmVfbG9jayk7CiAJcmV0dXJuX1ZPSUQ7CiB9CiAKQEAgLTEyOSw5ICsxMzksOSBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1cyA9IEFFX09LOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoInV0X2NyZWF0ZV9tdXRleCIsIG11dGV4X2lkKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMih1dF9jcmVhdGVfbXV0ZXgsIG11dGV4X2lkKTsKIAotCWlmIChtdXRleF9pZCA+IE1BWF9NVVRFWCkgeworCWlmIChtdXRleF9pZCA+IEFDUElfTUFYX01VVEVYKSB7CiAJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVSKTsKIAl9CiAKQEAgLTE2Myw5ICsxNzMsOSBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJ1dF9kZWxldGVfbXV0ZXgiLCBtdXRleF9pZCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIodXRfZGVsZXRlX211dGV4LCBtdXRleF9pZCk7CiAKLQlpZiAobXV0ZXhfaWQgPiBNQVhfTVVURVgpIHsKKwlpZiAobXV0ZXhfaWQgPiBBQ1BJX01BWF9NVVRFWCkgewogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7CiAJfQogCkBAIC0xOTIsMTEgKzIwMiwxMSBAQAogYWNwaV9zdGF0dXMgYWNwaV91dF9hY3F1aXJlX211dGV4KGFjcGlfbXV0ZXhfaGFuZGxlIG11dGV4X2lkKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKLQl1MzIgdGhpc190aHJlYWRfaWQ7CisJYWNwaV90aHJlYWRfaWQgdGhpc190aHJlYWRfaWQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoInV0X2FjcXVpcmVfbXV0ZXgiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUodXRfYWNxdWlyZV9tdXRleCk7CiAKLQlpZiAobXV0ZXhfaWQgPiBNQVhfTVVURVgpIHsKKwlpZiAobXV0ZXhfaWQgPiBBQ1BJX01BWF9NVVRFWCkgewogCQlyZXR1cm4gKEFFX0JBRF9QQVJBTUVURVIpOwogCX0KIApAQCAtMjEzLDcgKzIyMyw3IEBACiAJCSAqIHRoZSBtdXRleCBvcmRlcmluZyBydWxlLiAgVGhpcyBpbmRpY2F0ZXMgYSBjb2RpbmcgZXJyb3Igc29tZXdoZXJlIGluCiAJCSAqIHRoZSBBQ1BJIHN1YnN5c3RlbSBjb2RlLgogCQkgKi8KLQkJZm9yIChpID0gbXV0ZXhfaWQ7IGkgPCBNQVhfTVVURVg7IGkrKykgeworCQlmb3IgKGkgPSBtdXRleF9pZDsgaSA8IEFDUElfTUFYX01VVEVYOyBpKyspIHsKIAkJCWlmIChhY3BpX2dibF9tdXRleF9pbmZvW2ldLnRocmVhZF9pZCA9PSB0aGlzX3RocmVhZF9pZCkgewogCQkJCWlmIChpID09IG11dGV4X2lkKSB7CiAJCQkJCUFDUElfRVJST1IoKEFFX0lORk8sCkBAIC0yNzUsMTYgKzI4NSwxNiBAQAogYWNwaV9zdGF0dXMgYWNwaV91dF9yZWxlYXNlX211dGV4KGFjcGlfbXV0ZXhfaGFuZGxlIG11dGV4X2lkKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKLQl1MzIgdGhpc190aHJlYWRfaWQ7CisJYWNwaV90aHJlYWRfaWQgdGhpc190aHJlYWRfaWQ7CiAKLQlBQ1BJX0ZVTkNUSU9OX05BTUUoInV0X3JlbGVhc2VfbXV0ZXgiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUodXRfcmVsZWFzZV9tdXRleCk7CiAKIAl0aGlzX3RocmVhZF9pZCA9IGFjcGlfb3NfZ2V0X3RocmVhZF9pZCgpOwogCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfTVVURVgsCiAJCQkgICJUaHJlYWQgJVggcmVsZWFzaW5nIE11dGV4IFslc11cbiIsIHRoaXNfdGhyZWFkX2lkLAogCQkJICBhY3BpX3V0X2dldF9tdXRleF9uYW1lKG11dGV4X2lkKSkpOwogCi0JaWYgKG11dGV4X2lkID4gTUFYX01VVEVYKSB7CisJaWYgKG11dGV4X2lkID4gQUNQSV9NQVhfTVVURVgpIHsKIAkJcmV0dXJuIChBRV9CQURfUEFSQU1FVEVSKTsKIAl9CiAKQEAgLTMwOSw3ICszMTksNyBAQAogCQkgKiBvcmRlcmluZyBydWxlLiAgVGhpcyBpbmRpY2F0ZXMgYSBjb2RpbmcgZXJyb3Igc29tZXdoZXJlIGluCiAJCSAqIHRoZSBBQ1BJIHN1YnN5c3RlbSBjb2RlLgogCQkgKi8KLQkJZm9yIChpID0gbXV0ZXhfaWQ7IGkgPCBNQVhfTVVURVg7IGkrKykgeworCQlmb3IgKGkgPSBtdXRleF9pZDsgaSA8IEFDUElfTUFYX01VVEVYOyBpKyspIHsKIAkJCWlmIChhY3BpX2dibF9tdXRleF9pbmZvW2ldLnRocmVhZF9pZCA9PSB0aGlzX3RocmVhZF9pZCkgewogCQkJCWlmIChpID09IG11dGV4X2lkKSB7CiAJCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dG9iamVjdC5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dG9iamVjdC5jCmluZGV4IDdlZTJkMWQuLmJhN2Q4YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXRvYmplY3QuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0b2JqZWN0LmMKQEAgLTkyLDcgKzkyLDcgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmplY3Q7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqc2Vjb25kX29iamVjdDsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfU1RSKCJ1dF9jcmVhdGVfaW50ZXJuYWxfb2JqZWN0X2RiZyIsCisJQUNQSV9GVU5DVElPTl9UUkFDRV9TVFIodXRfY3JlYXRlX2ludGVybmFsX29iamVjdF9kYmcsCiAJCQkJYWNwaV91dF9nZXRfdHlwZV9uYW1lKHR5cGUpKTsKIAogCS8qIEFsbG9jYXRlIHRoZSByYXcgb2JqZWN0IGRlc2NyaXB0b3IgKi8KQEAgLTE2MSw3ICsxNjEsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKmJ1ZmZlcl9kZXNjOwogCXU4ICpidWZmZXIgPSBOVUxMOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRV9VMzIoInV0X2NyZWF0ZV9idWZmZXJfb2JqZWN0IiwgYnVmZmVyX3NpemUpOworCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKHV0X2NyZWF0ZV9idWZmZXJfb2JqZWN0LCBidWZmZXJfc2l6ZSk7CiAKIAkvKiBDcmVhdGUgYSBuZXcgQnVmZmVyIG9iamVjdCAqLwogCkBAIC0xNzMsOSArMTczLDEwIEBACiAJLyogQ3JlYXRlIGFuIGFjdHVhbCBidWZmZXIgb25seSBpZiBzaXplID4gMCAqLwogCiAJaWYgKGJ1ZmZlcl9zaXplID4gMCkgeworCiAJCS8qIEFsbG9jYXRlIHRoZSBhY3R1YWwgYnVmZmVyICovCiAKLQkJYnVmZmVyID0gQUNQSV9NRU1fQ0FMTE9DQVRFKGJ1ZmZlcl9zaXplKTsKKwkJYnVmZmVyID0gQUNQSV9BTExPQ0FURV9aRVJPRUQoYnVmZmVyX3NpemUpOwogCQlpZiAoIWJ1ZmZlcikgewogCQkJQUNQSV9FUlJPUigoQUVfSU5GTywgIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaXplICVYIiwKIAkJCQkgICAgKHUzMikgYnVmZmVyX3NpemUpKTsKQEAgLTIxNCw3ICsyMTUsNyBAQAogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnN0cmluZ19kZXNjOwogCWNoYXIgKnN0cmluZzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfVTMyKCJ1dF9jcmVhdGVfc3RyaW5nX29iamVjdCIsIHN0cmluZ19zaXplKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMih1dF9jcmVhdGVfc3RyaW5nX29iamVjdCwgc3RyaW5nX3NpemUpOwogCiAJLyogQ3JlYXRlIGEgbmV3IFN0cmluZyBvYmplY3QgKi8KIApAQCAtMjI3LDcgKzIyOCw3IEBACiAJICogQWxsb2NhdGUgdGhlIGFjdHVhbCBzdHJpbmcgYnVmZmVyIC0tIChTaXplICsgMSkgZm9yIE5VTEwgdGVybWluYXRvci4KIAkgKiBOT1RFOiBaZXJvLWxlbmd0aCBzdHJpbmdzIGFyZSBOVUxMIHRlcm1pbmF0ZWQKIAkgKi8KLQlzdHJpbmcgPSBBQ1BJX01FTV9DQUxMT0NBVEUoc3RyaW5nX3NpemUgKyAxKTsKKwlzdHJpbmcgPSBBQ1BJX0FMTE9DQVRFX1pFUk9FRChzdHJpbmdfc2l6ZSArIDEpOwogCWlmICghc3RyaW5nKSB7CiAJCUFDUElfRVJST1IoKEFFX0lORk8sICJDb3VsZCBub3QgYWxsb2NhdGUgc2l6ZSAlWCIsCiAJCQkgICAgKHUzMikgc3RyaW5nX3NpemUpKTsKQEAgLTI2MCw3ICsyNjEsNyBAQAogdTggYWNwaV91dF92YWxpZF9pbnRlcm5hbF9vYmplY3Qodm9pZCAqb2JqZWN0KQogewogCi0JQUNQSV9GVU5DVElPTl9OQU1FKCJ1dF92YWxpZF9pbnRlcm5hbF9vYmplY3QiKTsKKwlBQ1BJX0ZVTkNUSU9OX05BTUUodXRfdmFsaWRfaW50ZXJuYWxfb2JqZWN0KTsKIAogCS8qIENoZWNrIGZvciBhIG51bGwgcG9pbnRlciAqLwogCkBAIC0zMDgsNyArMzA5LDcgQEAKIHsKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmplY3Q7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9hbGxvY2F0ZV9vYmplY3RfZGVzY19kYmciKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X2FsbG9jYXRlX29iamVjdF9kZXNjX2RiZyk7CiAKIAlvYmplY3QgPSBhY3BpX29zX2FjcXVpcmVfb2JqZWN0KGFjcGlfZ2JsX29wZXJhbmRfY2FjaGUpOwogCWlmICghb2JqZWN0KSB7CkBAIC0zMTksNiArMzIwLDcgQEAKIAl9CiAKIAkvKiBNYXJrIHRoZSBkZXNjcmlwdG9yIHR5cGUgKi8KKwogCW1lbXNldChvYmplY3QsIDAsIHNpemVvZih1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0KSk7CiAJQUNQSV9TRVRfREVTQ1JJUFRPUl9UWVBFKG9iamVjdCwgQUNQSV9ERVNDX1RZUEVfT1BFUkFORCk7CiAKQEAgLTM0Miw3ICszNDQsNyBAQAogCiB2b2lkIGFjcGlfdXRfZGVsZXRlX29iamVjdF9kZXNjKHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9iamVjdCkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigidXRfZGVsZXRlX29iamVjdF9kZXNjIiwgb2JqZWN0KTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUih1dF9kZWxldGVfb2JqZWN0X2Rlc2MsIG9iamVjdCk7CiAKIAkvKiBPYmplY3QgbXVzdCBiZSBhbiB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgICovCiAKQEAgLTM4MSw3ICszODMsNyBAQAogCWFjcGlfc2l6ZSBsZW5ndGg7CiAJYWNwaV9zdGF0dXMgc3RhdHVzID0gQUVfT0s7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigidXRfZ2V0X3NpbXBsZV9vYmplY3Rfc2l6ZSIsIGludGVybmFsX29iamVjdCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIodXRfZ2V0X3NpbXBsZV9vYmplY3Rfc2l6ZSwgaW50ZXJuYWxfb2JqZWN0KTsKIAogCS8qCiAJICogSGFuZGxlIGEgbnVsbCBvYmplY3QgKENvdWxkIGJlIGEgdW5pbml0aWFsaXplZCBwYWNrYWdlCkBAIC0zOTcsNiArMzk5LDcgQEAKIAlsZW5ndGggPSBzaXplb2YodW5pb24gYWNwaV9vYmplY3QpOwogCiAJaWYgKEFDUElfR0VUX0RFU0NSSVBUT1JfVFlQRShpbnRlcm5hbF9vYmplY3QpID09IEFDUElfREVTQ19UWVBFX05BTUVEKSB7CisKIAkJLyogT2JqZWN0IGlzIGEgbmFtZWQgb2JqZWN0IChyZWZlcmVuY2UpLCBqdXN0IHJldHVybiB0aGUgbGVuZ3RoICovCiAKIAkJKm9ial9sZW5ndGggPSBBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEKGxlbmd0aCk7CkBAIC01NTksNyArNTYyLDcgQEAKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IGFjcGlfcGtnX2luZm8gaW5mbzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ1dF9nZXRfcGFja2FnZV9vYmplY3Rfc2l6ZSIsIGludGVybmFsX29iamVjdCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIodXRfZ2V0X3BhY2thZ2Vfb2JqZWN0X3NpemUsIGludGVybmFsX29iamVjdCk7CiAKIAlpbmZvLmxlbmd0aCA9IDA7CiAJaW5mby5vYmplY3Rfc3BhY2UgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dHJlc3JjLmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0cmVzcmMuYwppbmRleCAxNjQ2MTMxLi41YTJkZTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0cmVzcmMuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0cmVzcmMuYwpAQCAtNDUsMTEzICs0NSwxMTMgQEAKICNpbmNsdWRlIDxhY3BpL2FtbHJlc3JjLmg+CiAKICNkZWZpbmUgX0NPTVBPTkVOVCAgICAgICAgICBBQ1BJX1VUSUxJVElFUwotQUNQSV9NT0RVTEVfTkFNRSgidXRtaXNjIikKK0FDUElfTU9EVUxFX05BTUUoInV0cmVzcmMiKQogCiAjaWYgZGVmaW5lZChBQ1BJX0RJU0FTU0VNQkxFUikgfHwgZGVmaW5lZCAoQUNQSV9ERUJVR0dFUikKIC8qCiAgKiBTdHJpbmdzIHVzZWQgdG8gZGVjb2RlIHJlc291cmNlIGRlc2NyaXB0b3JzLgogICogVXNlZCBieSBib3RoIHRoZSBkaXNhc3NzZW1ibGVyIGFuZCB0aGUgZGVidWdnZXIgcmVzb3VyY2UgZHVtcCByb3V0aW5lcwogICovCi1jb25zdCBjaGFyICphY3BpX2dibF9CTWRlY29kZVsyXSA9IHsKLQkibm90X2J1c19tYXN0ZXIiLAotCSJidXNfbWFzdGVyIgorY29uc3QgY2hhciAqYWNwaV9nYmxfYm1fZGVjb2RlW10gPSB7CisJIk5vdEJ1c01hc3RlciIsCisJIkJ1c01hc3RlciIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX2NvbmZpZ19kZWNvZGVbNF0gPSB7Citjb25zdCBjaGFyICphY3BpX2dibF9jb25maWdfZGVjb2RlW10gPSB7CiAJIjAgLSBHb29kIENvbmZpZ3VyYXRpb24iLAogCSIxIC0gQWNjZXB0YWJsZSBDb25maWd1cmF0aW9uIiwKIAkiMiAtIFN1Ym9wdGltYWwgQ29uZmlndXJhdGlvbiIsCiAJIjMgLSAqKipJbnZhbGlkIENvbmZpZ3VyYXRpb24qKioiLAogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfY29uc3VtZV9kZWNvZGVbMl0gPSB7Ci0JInJlc291cmNlX3Byb2R1Y2VyIiwKLQkicmVzb3VyY2VfY29uc3VtZXIiCitjb25zdCBjaGFyICphY3BpX2dibF9jb25zdW1lX2RlY29kZVtdID0geworCSJSZXNvdXJjZVByb2R1Y2VyIiwKKwkiUmVzb3VyY2VDb25zdW1lciIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX0RFQ2RlY29kZVsyXSA9IHsKLQkicG9zX2RlY29kZSIsCi0JInN1Yl9kZWNvZGUiCitjb25zdCBjaGFyICphY3BpX2dibF9kZWNfZGVjb2RlW10gPSB7CisJIlBvc0RlY29kZSIsCisJIlN1YkRlY29kZSIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX0hFZGVjb2RlWzJdID0geworY29uc3QgY2hhciAqYWNwaV9nYmxfaGVfZGVjb2RlW10gPSB7CiAJIkxldmVsIiwKIAkiRWRnZSIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX2lvX2RlY29kZVsyXSA9IHsKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX2lvX2RlY29kZVtdID0gewogCSJEZWNvZGUxMCIsCiAJIkRlY29kZTE2IgogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfTExkZWNvZGVbMl0gPSB7Ci0JImFjdGl2ZV9oaWdoIiwKLQkiYWN0aXZlX2xvdyIKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX2xsX2RlY29kZVtdID0geworCSJBY3RpdmVIaWdoIiwKKwkiQWN0aXZlTG93IgogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfbWF4X2RlY29kZVsyXSA9IHsKLQkibWF4X25vdF9maXhlZCIsCi0JIm1heF9maXhlZCIKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX21heF9kZWNvZGVbXSA9IHsKKwkiTWF4Tm90Rml4ZWQiLAorCSJNYXhGaXhlZCIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX01FTWRlY29kZVs0XSA9IHsKLQkibm9uX2NhY2hlYWJsZSIsCitjb25zdCBjaGFyICphY3BpX2dibF9tZW1fZGVjb2RlW10gPSB7CisJIk5vbkNhY2hlYWJsZSIsCiAJIkNhY2hlYWJsZSIsCi0JIndyaXRlX2NvbWJpbmluZyIsCisJIldyaXRlQ29tYmluaW5nIiwKIAkiUHJlZmV0Y2hhYmxlIgogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfbWluX2RlY29kZVsyXSA9IHsKLQkibWluX25vdF9maXhlZCIsCi0JIm1pbl9maXhlZCIKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX21pbl9kZWNvZGVbXSA9IHsKKwkiTWluTm90Rml4ZWQiLAorCSJNaW5GaXhlZCIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX01UUGRlY29kZVs0XSA9IHsKLQkiYWRkcmVzc19yYW5nZV9tZW1vcnkiLAotCSJhZGRyZXNzX3JhbmdlX3Jlc2VydmVkIiwKLQkiYWRkcmVzc19yYW5nZV9hQ1BJIiwKLQkiYWRkcmVzc19yYW5nZV9uVlMiCitjb25zdCBjaGFyICphY3BpX2dibF9tdHBfZGVjb2RlW10gPSB7CisJIkFkZHJlc3NSYW5nZU1lbW9yeSIsCisJIkFkZHJlc3NSYW5nZVJlc2VydmVkIiwKKwkiQWRkcmVzc1JhbmdlQUNQSSIsCisJIkFkZHJlc3NSYW5nZU5WUyIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX1JOR2RlY29kZVs0XSA9IHsKLQkiaW52YWxpZF9yYW5nZXMiLAotCSJub25faVNBb25seV9yYW5nZXMiLAotCSJJU0Fvbmx5X3JhbmdlcyIsCi0JImVudGlyZV9yYW5nZSIKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX3JuZ19kZWNvZGVbXSA9IHsKKwkiSW52YWxpZFJhbmdlcyIsCisJIk5vbklTQU9ubHlSYW5nZXMiLAorCSJJU0FPbmx5UmFuZ2VzIiwKKwkiRW50aXJlUmFuZ2UiCiB9OwogCi1jb25zdCBjaGFyICphY3BpX2dibF9SV2RlY29kZVsyXSA9IHsKLQkicmVhZF9vbmx5IiwKLQkicmVhZF93cml0ZSIKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX3J3X2RlY29kZVtdID0geworCSJSZWFkT25seSIsCisJIlJlYWRXcml0ZSIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX1NIUmRlY29kZVsyXSA9IHsKK2NvbnN0IGNoYXIgKmFjcGlfZ2JsX3Nocl9kZWNvZGVbXSA9IHsKIAkiRXhjbHVzaXZlIiwKIAkiU2hhcmVkIgogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfU0laZGVjb2RlWzRdID0geworY29uc3QgY2hhciAqYWNwaV9nYmxfc2l6X2RlY29kZVtdID0gewogCSJUcmFuc2ZlcjgiLAogCSJUcmFuc2ZlcjhfMTYiLAogCSJUcmFuc2ZlcjE2IiwKLQkiaW52YWxpZF9zaXplIgorCSJJbnZhbGlkU2l6ZSIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX1RSU2RlY29kZVsyXSA9IHsKLQkiZGVuc2VfdHJhbnNsYXRpb24iLAotCSJzcGFyc2VfdHJhbnNsYXRpb24iCitjb25zdCBjaGFyICphY3BpX2dibF90cnNfZGVjb2RlW10gPSB7CisJIkRlbnNlVHJhbnNsYXRpb24iLAorCSJTcGFyc2VUcmFuc2xhdGlvbiIKIH07CiAKLWNvbnN0IGNoYXIgKmFjcGlfZ2JsX1RUUGRlY29kZVsyXSA9IHsKLQkidHlwZV9zdGF0aWMiLAotCSJ0eXBlX3RyYW5zbGF0aW9uIgorY29uc3QgY2hhciAqYWNwaV9nYmxfdHRwX2RlY29kZVtdID0geworCSJUeXBlU3RhdGljIiwKKwkiVHlwZVRyYW5zbGF0aW9uIgogfTsKIAotY29uc3QgY2hhciAqYWNwaV9nYmxfVFlQZGVjb2RlWzRdID0geworY29uc3QgY2hhciAqYWNwaV9nYmxfdHlwX2RlY29kZVtdID0gewogCSJDb21wYXRpYmlsaXR5IiwKLQkidHlwZV9hIiwKLQkidHlwZV9iIiwKLQkidHlwZV9mIgorCSJUeXBlQSIsCisJIlR5cGVCIiwKKwkiVHlwZUYiCiB9OwogCiAjZW5kaWYKQEAgLTI0MCw2ICsyNDAsMTA0IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgorICogRlVOQ1RJT046ICAgIGFjcGlfdXRfd2Fsa19hbWxfcmVzb3VyY2VzCisgKgorICogUEFSQU1FVEVSUzogIEFtbCAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIHJhdyBBTUwgcmVzb3VyY2UgdGVtcGxhdGUKKyAqICAgICAgICAgICAgICBhbWxfbGVuZ3RoICAgICAgLSBMZW5ndGggb2YgdGhlIGVudGlyZSB0ZW1wbGF0ZQorICogICAgICAgICAgICAgIHVzZXJfZnVuY3Rpb24gICAtIENhbGxlZCBvbmNlIGZvciBlYWNoIGRlc2NyaXB0b3IgZm91bmQuIElmCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYSBwb2ludGVyIHRvIHRoZSBlbmRfdGFnIGlzIHJldHVybmVkCisgKiAgICAgICAgICAgICAgQ29udGV4dCAgICAgICAgIC0gUGFzc2VkIHRvIHVzZXJfZnVuY3Rpb24KKyAqCisgKiBSRVRVUk46ICAgICAgU3RhdHVzCisgKgorICogREVTQ1JJUFRJT046IFdhbGsgYSByYXcgQU1MIHJlc291cmNlIGxpc3QoYnVmZmVyKS4gVXNlciBmdW5jdGlvbiBjYWxsZWQKKyAqICAgICAgICAgICAgICBvbmNlIGZvciBlYWNoIHJlc291cmNlIGZvdW5kLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2FjcGlfc3RhdHVzCithY3BpX3V0X3dhbGtfYW1sX3Jlc291cmNlcyh1OCAqIGFtbCwKKwkJCSAgIGFjcGlfc2l6ZSBhbWxfbGVuZ3RoLAorCQkJICAgYWNwaV93YWxrX2FtbF9jYWxsYmFjayB1c2VyX2Z1bmN0aW9uLCB2b2lkICoqY29udGV4dCkKK3sKKwlhY3BpX3N0YXR1cyBzdGF0dXM7CisJdTggKmVuZF9hbWw7CisJdTggcmVzb3VyY2VfaW5kZXg7CisJdTMyIGxlbmd0aDsKKwl1MzIgb2Zmc2V0ID0gMDsKKworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfd2Fsa19hbWxfcmVzb3VyY2VzKTsKKworCS8qIFRoZSBhYnNvbHV0ZSBtaW5pbXVtIHJlc291cmNlIHRlbXBsYXRlIGlzIG9uZSBlbmRfdGFnIGRlc2NyaXB0b3IgKi8KKworCWlmIChhbWxfbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBhbWxfcmVzb3VyY2VfZW5kX3RhZykpIHsKKwkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9OT19SRVNPVVJDRV9FTkRfVEFHKTsKKwl9CisKKwkvKiBQb2ludCB0byB0aGUgZW5kIG9mIHRoZSByZXNvdXJjZSB0ZW1wbGF0ZSBidWZmZXIgKi8KKworCWVuZF9hbWwgPSBhbWwgKyBhbWxfbGVuZ3RoOworCisJLyogV2FsayB0aGUgYnl0ZSBsaXN0LCBhYm9ydCBvbiBhbnkgaW52YWxpZCBkZXNjcmlwdG9yIHR5cGUgb3IgbGVuZ3RoICovCisKKwl3aGlsZSAoYW1sIDwgZW5kX2FtbCkgeworCisJCS8qIFZhbGlkYXRlIHRoZSBSZXNvdXJjZSBUeXBlIGFuZCBSZXNvdXJjZSBMZW5ndGggKi8KKworCQlzdGF0dXMgPSBhY3BpX3V0X3ZhbGlkYXRlX3Jlc291cmNlKGFtbCwgJnJlc291cmNlX2luZGV4KTsKKwkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCQlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsKKwkJfQorCisJCS8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoaXMgZGVzY3JpcHRvciAqLworCisJCWxlbmd0aCA9IGFjcGlfdXRfZ2V0X2Rlc2NyaXB0b3JfbGVuZ3RoKGFtbCk7CisKKwkJLyogSW52b2tlIHRoZSB1c2VyIGZ1bmN0aW9uICovCisKKwkJaWYgKHVzZXJfZnVuY3Rpb24pIHsKKwkJCXN0YXR1cyA9CisJCQkgICAgdXNlcl9mdW5jdGlvbihhbWwsIGxlbmd0aCwgb2Zmc2V0LCByZXNvdXJjZV9pbmRleCwKKwkJCQkJICBjb250ZXh0KTsKKwkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgeworCQkJCXJldHVybiAoc3RhdHVzKTsKKwkJCX0KKwkJfQorCisJCS8qIEFuIGVuZF90YWcgZGVzY3JpcHRvciB0ZXJtaW5hdGVzIHRoaXMgcmVzb3VyY2UgdGVtcGxhdGUgKi8KKworCQlpZiAoYWNwaV91dF9nZXRfcmVzb3VyY2VfdHlwZShhbWwpID09CisJCSAgICBBQ1BJX1JFU09VUkNFX05BTUVfRU5EX1RBRykgeworCQkJLyoKKwkJCSAqIFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG1vcmUgYnl0ZSBpbiB0aGUgYnVmZmVyIGZvcgorCQkJICogdGhlIDJuZCBieXRlIG9mIHRoZSBlbmRfdGFnCisJCQkgKi8KKwkJCWlmICgoYW1sICsgMSkgPj0gZW5kX2FtbCkgeworCQkJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9BTUxfTk9fUkVTT1VSQ0VfRU5EX1RBRyk7CisJCQl9CisKKwkJCS8qIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgZW5kX3RhZyBpZiByZXF1ZXN0ZWQgKi8KKworCQkJaWYgKCF1c2VyX2Z1bmN0aW9uKSB7CisJCQkJKmNvbnRleHQgPSBhbWw7CisJCQl9CisKKwkJCS8qIE5vcm1hbCBleGl0ICovCisKKwkJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CisJCX0KKworCQlhbWwgKz0gbGVuZ3RoOworCQlvZmZzZXQgKz0gbGVuZ3RoOworCX0KKworCS8qIERpZCBub3QgZmluZCBhbiBlbmRfdGFnIGRlc2NyaXB0b3IgKi8KKworCXJldHVybiAoQUVfQU1MX05PX1JFU09VUkNFX0VORF9UQUcpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKICAqIEZVTkNUSU9OOiAgICBhY3BpX3V0X3ZhbGlkYXRlX3Jlc291cmNlCiAgKgogICogUEFSQU1FVEVSUzogIEFtbCAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIHJhdyBBTUwgcmVzb3VyY2UgZGVzY3JpcHRvcgpAQCAtMjczLDYgKzM3MSw3IEBACiAJICogRXhhbWluZSB0aGUgbGFyZ2Uvc21hbGwgYml0IGluIHRoZSByZXNvdXJjZSBoZWFkZXIKIAkgKi8KIAlpZiAocmVzb3VyY2VfdHlwZSAmIEFDUElfUkVTT1VSQ0VfTkFNRV9MQVJHRSkgeworCiAJCS8qIFZlcmlmeSB0aGUgbGFyZ2UgcmVzb3VyY2UgdHlwZSAobmFtZSkgYWdhaW5zdCB0aGUgbWF4ICovCiAKIAkJaWYgKHJlc291cmNlX3R5cGUgPiBBQ1BJX1JFU09VUkNFX05BTUVfTEFSR0VfTUFYKSB7CkBAIC0zNzYsNiArNDc1LDcgQEAKIAkgKiBFeGFtaW5lIHRoZSBsYXJnZS9zbWFsbCBiaXQgaW4gdGhlIHJlc291cmNlIGhlYWRlcgogCSAqLwogCWlmIChBQ1BJX0dFVDgoYW1sKSAmIEFDUElfUkVTT1VSQ0VfTkFNRV9MQVJHRSkgeworCiAJCS8qIExhcmdlIFJlc291cmNlIFR5cGUgLS0gYml0cyA2OjAgY29udGFpbiB0aGUgbmFtZSAqLwogCiAJCXJldHVybiAoQUNQSV9HRVQ4KGFtbCkpOwpAQCAtNDExLDYgKzUxMSw3IEBACiAJICogRXhhbWluZSB0aGUgbGFyZ2Uvc21hbGwgYml0IGluIHRoZSByZXNvdXJjZSBoZWFkZXIKIAkgKi8KIAlpZiAoQUNQSV9HRVQ4KGFtbCkgJiBBQ1BJX1JFU09VUkNFX05BTUVfTEFSR0UpIHsKKwogCQkvKiBMYXJnZSBSZXNvdXJjZSB0eXBlIC0tIGJ5dGVzIDEtMiBjb250YWluIHRoZSAxNi1iaXQgbGVuZ3RoICovCiAKIAkJQUNQSV9NT1ZFXzE2X1RPXzE2KCZyZXNvdXJjZV9sZW5ndGgsIEFDUElfQUREX1BUUih1OCwgYW1sLCAxKSk7CkBAIC00OTUsNjAgKzU5NiwyMSBAQAogCQkJICAgICB1OCAqKiBlbmRfdGFnKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKLQl1OCAqYW1sOwotCXU4ICplbmRfYW1sOwogCi0JQUNQSV9GVU5DVElPTl9UUkFDRSgidXRfZ2V0X3Jlc291cmNlX2VuZF90YWciKTsKLQotCS8qIEdldCBzdGFydCBhbmQgZW5kIHBvaW50ZXJzICovCi0KLQlhbWwgPSBvYmpfZGVzYy0+YnVmZmVyLnBvaW50ZXI7Ci0JZW5kX2FtbCA9IGFtbCArIG9ial9kZXNjLT5idWZmZXIubGVuZ3RoOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfZ2V0X3Jlc291cmNlX2VuZF90YWcpOwogCiAJLyogQWxsb3cgYSBidWZmZXIgbGVuZ3RoIG9mIHplcm8gKi8KIAogCWlmICghb2JqX2Rlc2MtPmJ1ZmZlci5sZW5ndGgpIHsKLQkJKmVuZF90YWcgPSBhbWw7CisJCSplbmRfdGFnID0gb2JqX2Rlc2MtPmJ1ZmZlci5wb2ludGVyOwogCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogCX0KIAotCS8qIFdhbGsgdGhlIHJlc291cmNlIHRlbXBsYXRlLCBvbmUgZGVzY3JpcHRvciBwZXIgaXRlcmF0aW9uICovCisJLyogVmFsaWRhdGUgdGhlIHRlbXBsYXRlIGFuZCBnZXQgYSBwb2ludGVyIHRvIHRoZSBlbmRfdGFnICovCiAKLQl3aGlsZSAoYW1sIDwgZW5kX2FtbCkgewotCQkvKiBWYWxpZGF0ZSB0aGUgUmVzb3VyY2UgVHlwZSBhbmQgUmVzb3VyY2UgTGVuZ3RoICovCisJc3RhdHVzID0gYWNwaV91dF93YWxrX2FtbF9yZXNvdXJjZXMob2JqX2Rlc2MtPmJ1ZmZlci5wb2ludGVyLAorCQkJCQkgICAgb2JqX2Rlc2MtPmJ1ZmZlci5sZW5ndGgsIE5VTEwsCisJCQkJCSAgICAodm9pZCAqKillbmRfdGFnKTsKIAotCQlzdGF0dXMgPSBhY3BpX3V0X3ZhbGlkYXRlX3Jlc291cmNlKGFtbCwgTlVMTCk7Ci0JCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewotCQkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7Ci0JCX0KLQotCQkvKiBlbmRfdGFnIHJlc291cmNlIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSByZXNvdXJjZSB0ZW1wbGF0ZSAqLwotCi0JCWlmIChhY3BpX3V0X2dldF9yZXNvdXJjZV90eXBlKGFtbCkgPT0KLQkJICAgIEFDUElfUkVTT1VSQ0VfTkFNRV9FTkRfVEFHKSB7Ci0JCQkvKgotCQkJICogVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgbW9yZSBieXRlIGluIHRoZSBidWZmZXIgZm9yCi0JCQkgKiB0aGUgMm5kIGJ5dGUgb2YgdGhlIGVuZF90YWcKLQkJCSAqLwotCQkJaWYgKChhbWwgKyAxKSA+PSBlbmRfYW1sKSB7Ci0JCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0FNTF9OT19SRVNPVVJDRV9FTkRfVEFHKTsKLQkJCX0KLQotCQkJLyogUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBlbmRfdGFnICovCi0KLQkJCSplbmRfdGFnID0gYW1sOwotCQkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX09LKTsKLQkJfQotCi0JCS8qCi0JCSAqIFBvaW50IHRvIHRoZSBuZXh0IHJlc291cmNlIGRlc2NyaXB0b3IgaW4gdGhlIEFNTCBidWZmZXIuIFRoZQotCQkgKiBkZXNjcmlwdG9yIGxlbmd0aCBpcyBndWFyYW50ZWVkIHRvIGJlIG5vbi16ZXJvIGJ5IHJlc291cmNlCi0JCSAqIHZhbGlkYXRpb24gYWJvdmUuCi0JCSAqLwotCQlhbWwgKz0gYWNwaV91dF9nZXRfZGVzY3JpcHRvcl9sZW5ndGgoYW1sKTsKLQl9Ci0KLQkvKiBEaWQgbm90IGZpbmQgYW4gZW5kX3RhZyByZXNvdXJjZSBkZXNjcmlwdG9yICovCi0KLQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfQU1MX05PX1JFU09VUkNFX0VORF9UQUcpOworCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dHN0YXRlLmMgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0c3RhdGUuYwppbmRleCA0YjEzNGE3Li4wZjVjNWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0c3RhdGUuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbGl0aWVzL3V0c3RhdGUuYwpAQCAtOTYsNyArOTYsNyBAQAogYWNwaV91dF9wdXNoX2dlbmVyaWNfc3RhdGUodW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICoqbGlzdF9oZWFkLAogCQkJICAgdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZSkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9wdXNoX2dlbmVyaWNfc3RhdGUiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKHV0X3B1c2hfZ2VuZXJpY19zdGF0ZSk7CiAKIAkvKiBQdXNoIHRoZSBzdGF0ZSBvYmplY3Qgb250byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QgKHN0YWNrKSAqLwogCkBAIC0xMjMsMTIgKzEyMywxMyBAQAogewogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9wb3BfZ2VuZXJpY19zdGF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfcG9wX2dlbmVyaWNfc3RhdGUpOwogCiAJLyogUmVtb3ZlIHRoZSBzdGF0ZSBvYmplY3QgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QgKHN0YWNrKSAqLwogCiAJc3RhdGUgPSAqbGlzdF9oZWFkOwogCWlmIChzdGF0ZSkgeworCiAJCS8qIFVwZGF0ZSB0aGUgbGlzdCBoZWFkICovCiAKIAkJKmxpc3RfaGVhZCA9IHN0YXRlLT5jb21tb24ubmV4dDsKQEAgLTE1OCw5ICsxNTksMTAgQEAKIAogCXN0YXRlID0gYWNwaV9vc19hY3F1aXJlX29iamVjdChhY3BpX2dibF9zdGF0ZV9jYWNoZSk7CiAJaWYgKHN0YXRlKSB7CisKIAkJLyogSW5pdGlhbGl6ZSAqLwogCQltZW1zZXQoc3RhdGUsIDAsIHNpemVvZih1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUpKTsKLQkJc3RhdGUtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURTsKKwkJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURTsKIAl9CiAKIAlyZXR1cm4gKHN0YXRlKTsKQEAgLTE4Myw3ICsxODUsNyBAQAogewogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9jcmVhdGVfdGhyZWFkX3N0YXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9jcmVhdGVfdGhyZWFkX3N0YXRlKTsKIAogCS8qIENyZWF0ZSB0aGUgZ2VuZXJpYyBzdGF0ZSBvYmplY3QgKi8KIApAQCAtMTk0LDcgKzE5Niw3IEBACiAKIAkvKiBJbml0IGZpZWxkcyBzcGVjaWZpYyB0byB0aGUgdXBkYXRlIHN0cnVjdCAqLwogCi0Jc3RhdGUtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9USFJFQUQ7CisJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9USFJFQUQ7CiAJc3RhdGUtPnRocmVhZC50aHJlYWRfaWQgPSBhY3BpX29zX2dldF90aHJlYWRfaWQoKTsKIAogCXJldHVybl9QVFIoKHN0cnVjdCBhY3BpX3RocmVhZF9zdGF0ZSAqKXN0YXRlKTsKQEAgLTIyMCw3ICsyMjIsNyBAQAogewogCXVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqc3RhdGU7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUigidXRfY3JlYXRlX3VwZGF0ZV9zdGF0ZSIsIG9iamVjdCk7CisJQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIodXRfY3JlYXRlX3VwZGF0ZV9zdGF0ZSwgb2JqZWN0KTsKIAogCS8qIENyZWF0ZSB0aGUgZ2VuZXJpYyBzdGF0ZSBvYmplY3QgKi8KIApAQCAtMjMxLDcgKzIzMyw3IEBACiAKIAkvKiBJbml0IGZpZWxkcyBzcGVjaWZpYyB0byB0aGUgdXBkYXRlIHN0cnVjdCAqLwogCi0Jc3RhdGUtPmNvbW1vbi5kYXRhX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9VUERBVEU7CisJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9VUERBVEU7CiAJc3RhdGUtPnVwZGF0ZS5vYmplY3QgPSBvYmplY3Q7CiAJc3RhdGUtPnVwZGF0ZS52YWx1ZSA9IGFjdGlvbjsKIApAQCAtMjU3LDcgKzI1OSw3IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0VfUFRSKCJ1dF9jcmVhdGVfcGtnX3N0YXRlIiwgaW50ZXJuYWxfb2JqZWN0KTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFX1BUUih1dF9jcmVhdGVfcGtnX3N0YXRlLCBpbnRlcm5hbF9vYmplY3QpOwogCiAJLyogQ3JlYXRlIHRoZSBnZW5lcmljIHN0YXRlIG9iamVjdCAqLwogCkBAIC0yNjgsNyArMjcwLDcgQEAKIAogCS8qIEluaXQgZmllbGRzIHNwZWNpZmljIHRvIHRoZSB1cGRhdGUgc3RydWN0ICovCiAKLQlzdGF0ZS0+Y29tbW9uLmRhdGFfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX1BBQ0tBR0U7CisJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9QQUNLQUdFOwogCXN0YXRlLT5wa2cuc291cmNlX29iamVjdCA9ICh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICopaW50ZXJuYWxfb2JqZWN0OwogCXN0YXRlLT5wa2cuZGVzdF9vYmplY3QgPSBleHRlcm5hbF9vYmplY3Q7CiAJc3RhdGUtPnBrZy5pbmRleCA9IGluZGV4OwpAQCAtMjk0LDcgKzI5Niw3IEBACiB7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZTsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoInV0X2NyZWF0ZV9jb250cm9sX3N0YXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRSh1dF9jcmVhdGVfY29udHJvbF9zdGF0ZSk7CiAKIAkvKiBDcmVhdGUgdGhlIGdlbmVyaWMgc3RhdGUgb2JqZWN0ICovCiAKQEAgLTMwNSw3ICszMDcsNyBAQAogCiAJLyogSW5pdCBmaWVsZHMgc3BlY2lmaWMgdG8gdGhlIGNvbnRyb2wgc3RydWN0ICovCiAKLQlzdGF0ZS0+Y29tbW9uLmRhdGFfdHlwZSA9IEFDUElfREVTQ19UWVBFX1NUQVRFX0NPTlRST0w7CisJc3RhdGUtPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUgPSBBQ1BJX0RFU0NfVFlQRV9TVEFURV9DT05UUk9MOwogCXN0YXRlLT5jb21tb24uc3RhdGUgPSBBQ1BJX0NPTlRST0xfQ09ORElUSU9OQUxfRVhFQ1VUSU5HOwogCiAJcmV0dXJuX1BUUihzdGF0ZSk7CkBAIC0zMTksMTUgKzMyMSwxOSBAQAogICoKICAqIFJFVFVSTjogICAgICBOb25lCiAgKgotICogREVTQ1JJUFRJT046IFB1dCBhIHN0YXRlIG9iamVjdCBiYWNrIGludG8gdGhlIGdsb2JhbCBzdGF0ZSBjYWNoZS4gIFRoZSBvYmplY3QKLSAqICAgICAgICAgICAgICBpcyBub3QgYWN0dWFsbHkgZnJlZWQgYXQgdGhpcyB0aW1lLgorICogREVTQ1JJUFRJT046IFJlbGVhc2UgYSBzdGF0ZSBvYmplY3QgdG8gdGhlIHN0YXRlIGNhY2hlLiBOVUxMIHN0YXRlIG9iamVjdHMKKyAqICAgICAgICAgICAgICBhcmUgaWdub3JlZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB2b2lkIGFjcGlfdXRfZGVsZXRlX2dlbmVyaWNfc3RhdGUodW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzdGF0ZSkKIHsKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJ1dF9kZWxldGVfZ2VuZXJpY19zdGF0ZSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UodXRfZGVsZXRlX2dlbmVyaWNfc3RhdGUpOwogCi0JKHZvaWQpYWNwaV9vc19yZWxlYXNlX29iamVjdChhY3BpX2dibF9zdGF0ZV9jYWNoZSwgc3RhdGUpOworCS8qIElnbm9yZSBudWxsIHN0YXRlICovCisKKwlpZiAoc3RhdGUpIHsKKwkJKHZvaWQpYWNwaV9vc19yZWxlYXNlX29iamVjdChhY3BpX2dibF9zdGF0ZV9jYWNoZSwgc3RhdGUpOworCX0KIAlyZXR1cm5fVk9JRDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlsaXRpZXMvdXR4ZmFjZS5jIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dHhmYWNlLmMKaW5kZXggMzA4YTk2MC4uMzUzOGY2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dHhmYWNlLmMKKysrIGIvZHJpdmVycy9hY3BpL3V0aWxpdGllcy91dHhmYWNlLmMKQEAgLTQxLDggKzQxLDYgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2FjZXZlbnRzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY25hbWVzcC5oPgpAQCAtNjcsNyArNjUsNyBAQAogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfaW5pdGlhbGl6ZV9zdWJzeXN0ZW0iKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfaW5pdGlhbGl6ZV9zdWJzeXN0ZW0pOwogCiAJQUNQSV9ERUJVR19FWEVDKGFjcGlfdXRfaW5pdF9zdGFja19wdHJfdHJhY2UoKSk7CiAKQEAgLTEwOSw2ICsxMDcsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9pbml0aWFsaXplX3N1YnN5c3RlbSkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9lbmFibGVfc3Vic3lzdGVtCkBAIC0xMjEsMTIgKzEyMSwxMSBAQAogICogICAgICAgICAgICAgIFB1dHMgc3lzdGVtIGludG8gQUNQSSBtb2RlIGlmIGl0IGlzbid0IGFscmVhZHkuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9lbmFibGVfc3Vic3lzdGVtKHUzMiBmbGFncykKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfZW5hYmxlX3N1YnN5c3RlbSIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9lbmFibGVfc3Vic3lzdGVtKTsKIAogCS8qCiAJICogV2UgbXVzdCBpbml0aWFsaXplIHRoZSBoYXJkd2FyZSBiZWZvcmUgd2UgY2FuIGVuYWJsZSBBQ1BJLgpAQCAtMTUyLDcgKzE1MSw3IEBACiAKIAkJc3RhdHVzID0gYWNwaV9lbmFibGUoKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7Ci0JCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sICJhY3BpX2VuYWJsZSBmYWlsZWQiKSk7CisJCQlBQ1BJX1dBUk5JTkcoKEFFX0lORk8sICJBY3BpRW5hYmxlIGZhaWxlZCIpKTsKIAkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogCQl9CiAJfQpAQCAtMjI5LDYgKzIyOCw4IEBACiAJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiB9CiAKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2VuYWJsZV9zdWJzeXN0ZW0pCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfaW5pdGlhbGl6ZV9vYmplY3RzCkBAIC0yNDEsMTIgKzI0MiwxMSBAQAogICogICAgICAgICAgICAgIG9iamVjdHMgYW5kIGV4ZWN1dGluZyBBTUwgY29kZSBmb3IgUmVnaW9ucywgYnVmZmVycywgZXRjLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KIGFjcGlfc3RhdHVzIGFjcGlfaW5pdGlhbGl6ZV9vYmplY3RzKHUzMiBmbGFncykKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfaW5pdGlhbGl6ZV9vYmplY3RzIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX2luaXRpYWxpemVfb2JqZWN0cyk7CiAKIAkvKgogCSAqIFJ1biBhbGwgX1JFRyBtZXRob2RzCkBAIC0yNTcsNyArMjU3LDcgQEAKIAkgKi8KIAlpZiAoIShmbGFncyAmIEFDUElfTk9fQUREUkVTU19TUEFDRV9JTklUKSkgewogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VYRUMsCi0JCQkJICAiW0luaXRdIEV4ZWN1dGluZyBfUkVHIG9wX3JlZ2lvbiBtZXRob2RzXG4iKSk7CisJCQkJICAiW0luaXRdIEV4ZWN1dGluZyBfUkVHIE9wUmVnaW9uIG1ldGhvZHNcbiIpKTsKIAogCQlzdGF0dXMgPSBhY3BpX2V2X2luaXRpYWxpemVfb3BfcmVnaW9ucygpOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKQEAgLTMwNSw2ICszMDUsOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9pbml0aWFsaXplX29iamVjdHMpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRlVOQ1RJT046ICAgIGFjcGlfdGVybWluYXRlCkBAIC0zMTYsMTIgKzMxOCwxMSBAQAogICogREVTQ1JJUFRJT046IFNodXRkb3duIHRoZSBBQ1BJIHN1YnN5c3RlbS4gIFJlbGVhc2UgYWxsIHJlc291cmNlcy4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX3Rlcm1pbmF0ZSh2b2lkKQogewogCWFjcGlfc3RhdHVzIHN0YXR1czsKIAotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfdGVybWluYXRlIik7CisJQUNQSV9GVU5DVElPTl9UUkFDRShhY3BpX3Rlcm1pbmF0ZSk7CiAKIAkvKiBUZXJtaW5hdGUgdGhlIEFNTCBEZWJ1Z2dlciBpZiBwcmVzZW50ICovCiAKQEAgLTM0OCw2ICszNDksOCBAQAogCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0dXMpOwogfQogCitBQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV90ZXJtaW5hdGUpCisKICNpZmRlZiBBQ1BJX0ZVVFVSRV9VU0FHRQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0zNjIsNyArMzY1LDYgQEAKICAqICAgICAgICAgICAgICBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9zdWJzeXN0ZW1fc3RhdHVzKHZvaWQpCiB7CiAKQEAgLTM3Myw2ICszNzUsOCBAQAogCX0KIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfc3Vic3lzdGVtX3N0YXR1cykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBGVU5DVElPTjogICAgYWNwaV9nZXRfc3lzdGVtX2luZm8KQEAgLTM5MCwxNCArMzk0LDEzIEBACiAgKiAgICAgICAgICAgICAgYW5kIHRoZSB2YWx1ZSBvZiBvdXRfYnVmZmVyIGlzIHVuZGVmaW5lZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCiBhY3BpX3N0YXR1cyBhY3BpX2dldF9zeXN0ZW1faW5mbyhzdHJ1Y3QgYWNwaV9idWZmZXIgKiBvdXRfYnVmZmVyKQogewogCXN0cnVjdCBhY3BpX3N5c3RlbV9pbmZvICppbmZvX3B0cjsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJdTMyIGk7CiAKLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKCJhY3BpX2dldF9zeXN0ZW1faW5mbyIpOworCUFDUElfRlVOQ1RJT05fVFJBQ0UoYWNwaV9nZXRfc3lzdGVtX2luZm8pOwogCiAJLyogUGFyYW1ldGVyIHZhbGlkYXRpb24gKi8KIApAQCAtNDQ4LDE1ICs0NTEsMTUgQEAKIAogCS8qIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBBQ1BJIHRhYmxlcywgcGVyIHRhYmxlIHR5cGUgKi8KIAotCWluZm9fcHRyLT5udW1fdGFibGVfdHlwZXMgPSBOVU1fQUNQSV9UQUJMRV9UWVBFUzsKLQlmb3IgKGkgPSAwOyBpIDwgTlVNX0FDUElfVEFCTEVfVFlQRVM7IGkrKykgeworCWluZm9fcHRyLT5udW1fdGFibGVfdHlwZXMgPSBBQ1BJX1RBQkxFX0lEX01BWCArIDE7CisJZm9yIChpID0gMDsgaSA8IChBQ1BJX1RBQkxFX0lEX01BWCArIDEpOyBpKyspIHsKIAkJaW5mb19wdHItPnRhYmxlX2luZm9baV0uY291bnQgPSBhY3BpX2dibF90YWJsZV9saXN0c1tpXS5jb3VudDsKIAl9CiAKIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOwogfQogCi1FWFBPUlRfU1lNQk9MKGFjcGlfZ2V0X3N5c3RlbV9pbmZvKTsKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX2dldF9zeXN0ZW1faW5mbykKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNDcyLDcgKzQ3NSw2IEBACiAgKiBUQkQ6IFdoZW4gYSBzZWNvbmQgZnVuY3Rpb24gaXMgYWRkZWQsIG11c3Qgc2F2ZSB0aGUgRnVuY3Rpb24gYWxzby4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMKIGFjcGlfaW5zdGFsbF9pbml0aWFsaXphdGlvbl9oYW5kbGVyKGFjcGlfaW5pdF9oYW5kbGVyIGhhbmRsZXIsIHUzMiBmdW5jdGlvbikKIHsKQEAgLTQ4OSw2ICs0OTEsNyBAQAogCXJldHVybiBBRV9PSzsKIH0KIAorQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfaW5zdGFsbF9pbml0aWFsaXphdGlvbl9oYW5kbGVyKQogI2VuZGlmCQkJCS8qICBBQ1BJX0ZVVFVSRV9VU0FHRSAgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC01MDIsMTAgKzUwNSw5IEBACiAgKiBERVNDUklQVElPTjogRW1wdHkgYWxsIGNhY2hlcyAoZGVsZXRlIHRoZSBjYWNoZWQgb2JqZWN0cykKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQogYWNwaV9zdGF0dXMgYWNwaV9wdXJnZV9jYWNoZWRfb2JqZWN0cyh2b2lkKQogewotCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfcHVyZ2VfY2FjaGVkX29iamVjdHMiKTsKKwlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfcHVyZ2VfY2FjaGVkX29iamVjdHMpOwogCiAJKHZvaWQpYWNwaV9vc19wdXJnZV9jYWNoZShhY3BpX2dibF9zdGF0ZV9jYWNoZSk7CiAJKHZvaWQpYWNwaV9vc19wdXJnZV9jYWNoZShhY3BpX2dibF9vcGVyYW5kX2NhY2hlKTsKQEAgLTUxMywzICs1MTUsNSBAQAogCSh2b2lkKWFjcGlfb3NfcHVyZ2VfY2FjaGUoYWNwaV9nYmxfcHNfbm9kZV9leHRfY2FjaGUpOwogCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9PSyk7CiB9CisKK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3B1cmdlX2NhY2hlZF9vYmplY3RzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3V0aWxzLmMgYi9kcml2ZXJzL2FjcGkvdXRpbHMuYwppbmRleCA2NDU4YzQ3Li42YjUxNjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdXRpbHMuYworKysgYi9kcml2ZXJzL2FjcGkvdXRpbHMuYwpAQCAtMjczLDExICsyNzMsMTMgQEAKIAlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIHBhdGhuYW1lLCBhcmd1bWVudHMsICZidWZmZXIpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlhY3BpX3V0aWxfZXZhbF9lcnJvcihoYW5kbGUsIHBhdGhuYW1lLCBzdGF0dXMpOworCQlrZnJlZShlbGVtZW50KTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7CiAJfQogCiAJaWYgKGVsZW1lbnQtPnR5cGUgIT0gQUNQSV9UWVBFX0lOVEVHRVIpIHsKIAkJYWNwaV91dGlsX2V2YWxfZXJyb3IoaGFuZGxlLCBwYXRobmFtZSwgQUVfQkFEX0RBVEEpOworCQlrZnJlZShlbGVtZW50KTsKIAkJcmV0dXJuX0FDUElfU1RBVFVTKEFFX0JBRF9EQVRBKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS92aWRlby5jIGIvZHJpdmVycy9hY3BpL3ZpZGVvLmMKaW5kZXggYmQ0ODg3NS4uZTdlOWE2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS92aWRlby5jCisrKyBiL2RyaXZlcnMvYWNwaS92aWRlby5jCkBAIC0zMjMsNyArMzIzLDcgQEAKIAlpZiAoIUFDUElfU1VDQ0VTUyhzdGF0dXMpKQogCQlyZXR1cm5fVkFMVUUoc3RhdHVzKTsKIAlvYmogPSAodW5pb24gYWNwaV9vYmplY3QgKilidWZmZXIucG9pbnRlcjsKLQlpZiAoIW9iaiAmJiAob2JqLT50eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFKSkgeworCWlmICghb2JqIHx8IChvYmotPnR5cGUgIT0gQUNQSV9UWVBFX1BBQ0tBR0UpKSB7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsICJJbnZhbGlkIF9CQ0wgZGF0YVxuIikpOwogCQlzdGF0dXMgPSAtRUZBVUxUOwogCQlnb3RvIGVycjsKQEAgLTEyOTQsNyArMTI5NCw3IEBACiAJCQkgICAgICBzdHJ1Y3QgYWNwaV92aWRlb19idXMgKnZpZGVvKQogewogCXVuc2lnbmVkIGxvbmcgZGV2aWNlX2lkOwotCWludCBzdGF0dXMsIHJlc3VsdDsKKwlpbnQgc3RhdHVzOwogCXN0cnVjdCBhY3BpX3ZpZGVvX2RldmljZSAqZGF0YTsKIAogCUFDUElfRlVOQ1RJT05fVFJBQ0UoImFjcGlfdmlkZW9fYnVzX2dldF9vbmVfZGV2aWNlIik7CkBAIC0xMzQ2LDggKzEzNDYsMTEgQEAKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0VSUk9SLAogCQkJCQkgICJFcnJvciBpbnN0YWxsaW5nIG5vdGlmeSBoYW5kbGVyXG4iKSk7Ci0JCQlyZXN1bHQgPSAtRU5PREVWOwotCQkJZ290byBlbmQ7CisJCQlpZihkYXRhLT5icmlnaHRuZXNzKQorCQkJCWtmcmVlKGRhdGEtPmJyaWdodG5lc3MtPmxldmVscyk7CisJCQlrZnJlZShkYXRhLT5icmlnaHRuZXNzKTsKKwkJCWtmcmVlKGRhdGEpOworCQkJcmV0dXJuIC1FTk9ERVY7CiAJCX0KIAogCQlkb3duKCZ2aWRlby0+c2VtKTsKQEAgLTEzNTksNyArMTM2Miw2IEBACiAJCXJldHVybl9WQUxVRSgwKTsKIAl9CiAKLSAgICAgIGVuZDoKIAlyZXR1cm5fVkFMVUUoLUVOT0VOVCk7CiB9CiAKQEAgLTE2NDMsOCArMTY0NSw5IEBACiAJCQlwcmludGsoS0VSTl9XQVJOSU5HIFBSRUZJWAogCQkJICAgICAgICJoaHV1aGh1dSBidWcgaW4gYWNwaSB2aWRlbyBkcml2ZXIuXG4iKTsKIAorCQlpZiAoZGF0YS0+YnJpZ2h0bmVzcykKKwkJCWtmcmVlKGRhdGEtPmJyaWdodG5lc3MtPmxldmVscyk7CiAJCWtmcmVlKGRhdGEtPmJyaWdodG5lc3MpOwotCiAJCWtmcmVlKGRhdGEpOwogCX0KIApAQCAtMTc4NSw2ICsxNzg4LDEwIEBACiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfRVJST1IsCiAJCQkJICAiRXJyb3IgaW5zdGFsbGluZyBub3RpZnkgaGFuZGxlclxuIikpOworCQlhY3BpX3ZpZGVvX2J1c19zdG9wX2RldmljZXModmlkZW8pOworCQlhY3BpX3ZpZGVvX2J1c19wdXRfZGV2aWNlcyh2aWRlbyk7CisJCWtmcmVlKHZpZGVvLT5hdHRhY2hlZF9hcnJheSk7CisJCWFjcGlfdmlkZW9fYnVzX3JlbW92ZV9mcyhkZXZpY2UpOwogCQlyZXN1bHQgPSAtRU5PREVWOwogCQlnb3RvIGVuZDsKIAl9CkBAIC0xNzk2LDEwICsxODAzLDggQEAKIAkgICAgICAgdmlkZW8tPmZsYWdzLnBvc3QgPyAieWVzIiA6ICJubyIpOwogCiAgICAgICBlbmQ6Ci0JaWYgKHJlc3VsdCkgewotCQlhY3BpX3ZpZGVvX2J1c19yZW1vdmVfZnMoZGV2aWNlKTsKKwlpZiAocmVzdWx0KQogCQlrZnJlZSh2aWRlbyk7Ci0JfQogCiAJcmV0dXJuX1ZBTFVFKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9mb3JlMjAwZS5jIGIvZHJpdmVycy9hdG0vZm9yZTIwMGUuYwppbmRleCAwNTk4M2EzLi45MjkyM2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9mb3JlMjAwZS5jCisrKyBiL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmMKQEAgLTE2NywxMyArMTY3LDkgQEAKIHN0YXRpYyBjaGFyKgogZm9yZTIwMGVfaXJxX2l0b2EoaW50IGlycSkKIHsKLSNpZiBkZWZpbmVkKF9fc3BhcmNfdjlfXykKLSAgICByZXR1cm4gX19pcnFfaXRvYShpcnEpOwotI2Vsc2UKICAgICBzdGF0aWMgY2hhciBzdHJbOF07CiAgICAgc3ByaW50ZihzdHIsICIlZCIsIGlycSk7CiAgICAgcmV0dXJuIHN0cjsKLSNlbmRpZgogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9LY29uZmlnIGIvZHJpdmVycy9iYXNlL0tjb25maWcKaW5kZXggZjBlZmYzZC4uODA1MDJkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL0tjb25maWcKKysrIGIvZHJpdmVycy9iYXNlL0tjb25maWcKQEAgLTM4LDMgKzM4LDcgQEAKIAkgIElmIHlvdSBhcmUgdW5zdXJlIGFib3V0IHRoaXMsIHNheSBOIGhlcmUuCiAKIGVuZG1lbnUKKworY29uZmlnIFNZU19IWVBFUlZJU09SCisJYm9vbAorCWRlZmF1bHQgbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL01ha2VmaWxlIGIvZHJpdmVycy9iYXNlL01ha2VmaWxlCmluZGV4IGU5OTQ3MWQuLmI1MzllNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2Jhc2UvTWFrZWZpbGUKQEAgLTUsMTAgKzUsMTIgQEAKIAkJCSAgIGNwdS5vIGZpcm13YXJlLm8gaW5pdC5vIG1hcC5vIGRtYXBvb2wubyBcCiAJCQkgICBhdHRyaWJ1dGVfY29udGFpbmVyLm8gdHJhbnNwb3J0X2NsYXNzLm8KIG9iai15CQkJKz0gcG93ZXIvCitvYmotJChDT05GSUdfSVNBKQkrPSBpc2Eubwogb2JqLSQoQ09ORklHX0ZXX0xPQURFUikJKz0gZmlybXdhcmVfY2xhc3Mubwogb2JqLSQoQ09ORklHX05VTUEpCSs9IG5vZGUubwogb2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSArPSBtZW1vcnkubwogb2JqLSQoQ09ORklHX1NNUCkJKz0gdG9wb2xvZ3kubworb2JqLSQoQ09ORklHX1NZU19IWVBFUlZJU09SKSArPSBoeXBlcnZpc29yLm8KIAogaWZlcSAoJChDT05GSUdfREVCVUdfRFJJVkVSKSx5KQogRVhUUkFfQ0ZMQUdTICs9IC1EREVCVUcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9hdHRyaWJ1dGVfY29udGFpbmVyLmMgYi9kcml2ZXJzL2Jhc2UvYXR0cmlidXRlX2NvbnRhaW5lci5jCmluZGV4IDJhN2Q3YWUuLjIyMjIwNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9hdHRyaWJ1dGVfY29udGFpbmVyLmMKKysrIGIvZHJpdmVycy9iYXNlL2F0dHJpYnV0ZV9jb250YWluZXIuYwpAQCAtMjM2LDcgKzIzNiw2IEBACiAJfQogCXVwKCZhdHRyaWJ1dGVfY29udGFpbmVyX211dGV4KTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGF0dHJpYnV0ZV9jb250YWluZXJfcmVtb3ZlX2RldmljZSk7CiAKIC8qKgogICogYXR0cmlidXRlX2NvbnRhaW5lcl9kZXZpY2VfdHJpZ2dlciAtIGV4ZWN1dGUgYSB0cmlnZ2VyIGZvciBlYWNoIG1hdGNoaW5nIGNsYXNzZGV2CkBAIC0yNzYsNyArMjc1LDYgQEAKIAl9CiAJdXAoJmF0dHJpYnV0ZV9jb250YWluZXJfbXV0ZXgpOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoYXR0cmlidXRlX2NvbnRhaW5lcl9kZXZpY2VfdHJpZ2dlcik7CiAKIC8qKgogICogYXR0cmlidXRlX2NvbnRhaW5lcl90cmlnZ2VyIC0gdHJpZ2dlciBhIGZ1bmN0aW9uIGZvciBlYWNoIG1hdGNoaW5nIGNvbnRhaW5lcgpAQCAtMzA0LDcgKzMwMiw2IEBACiAJfQogCXVwKCZhdHRyaWJ1dGVfY29udGFpbmVyX211dGV4KTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGF0dHJpYnV0ZV9jb250YWluZXJfdHJpZ2dlcik7CiAKIC8qKgogICogYXR0cmlidXRlX2NvbnRhaW5lcl9hZGRfYXR0cnMgLSBhZGQgYXR0cmlidXRlcwpAQCAtMzMzLDcgKzMzMCw2IEBACiAKIAlyZXR1cm4gMDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGF0dHJpYnV0ZV9jb250YWluZXJfYWRkX2F0dHJzKTsKIAogLyoqCiAgKiBhdHRyaWJ1dGVfY29udGFpbmVyX2FkZF9jbGFzc19kZXZpY2UgLSBzYW1lIGZ1bmN0aW9uIGFzIGNsYXNzX2RldmljZV9hZGQKQEAgLTM1Miw3ICszNDgsNiBAQAogCQlyZXR1cm4gZXJyb3I7CiAJcmV0dXJuIGF0dHJpYnV0ZV9jb250YWluZXJfYWRkX2F0dHJzKGNsYXNzZGV2KTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGF0dHJpYnV0ZV9jb250YWluZXJfYWRkX2NsYXNzX2RldmljZSk7CiAKIC8qKgogICogYXR0cmlidXRlX2NvbnRhaW5lcl9hZGRfY2xhc3NfZGV2aWNlX2FkYXB0ZXIgLSBzaW1wbGUgYWRhcHRlciBmb3IgdHJpZ2dlcnMKQEAgLTM2Nyw3ICszNjIsNiBAQAogewogCXJldHVybiBhdHRyaWJ1dGVfY29udGFpbmVyX2FkZF9jbGFzc19kZXZpY2UoY2xhc3NkZXYpOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoYXR0cmlidXRlX2NvbnRhaW5lcl9hZGRfY2xhc3NfZGV2aWNlX2FkYXB0ZXIpOwogCiAvKioKICAqIGF0dHJpYnV0ZV9jb250YWluZXJfcmVtb3ZlX2F0dHJzIC0gcmVtb3ZlIGFueSBhdHRyaWJ1dGUgZmlsZXMKQEAgLTM4OSw3ICszODMsNiBAQAogCWZvciAoaSA9IDA7IGF0dHJzW2ldOyBpKyspCiAJCWNsYXNzX2RldmljZV9yZW1vdmVfZmlsZShjbGFzc2RldiwgYXR0cnNbaV0pOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoYXR0cmlidXRlX2NvbnRhaW5lcl9yZW1vdmVfYXR0cnMpOwogCiAvKioKICAqIGF0dHJpYnV0ZV9jb250YWluZXJfY2xhc3NfZGV2aWNlX2RlbCAtIGVxdWl2YWxlbnQgb2YgY2xhc3NfZGV2aWNlX2RlbApAQCAtNDA1LDcgKzM5OCw2IEBACiAJYXR0cmlidXRlX2NvbnRhaW5lcl9yZW1vdmVfYXR0cnMoY2xhc3NkZXYpOwogCWNsYXNzX2RldmljZV9kZWwoY2xhc3NkZXYpOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoYXR0cmlidXRlX2NvbnRhaW5lcl9jbGFzc19kZXZpY2VfZGVsKTsKIAogLyoqCiAgKiBhdHRyaWJ1dGVfY29udGFpbmVyX2ZpbmRfY2xhc3NfZGV2aWNlIC0gZmluZCB0aGUgY29ycmVzcG9uZGluZyBjbGFzc19kZXZpY2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9iYXNlLmggYi9kcml2ZXJzL2Jhc2UvYmFzZS5oCmluZGV4IDU3MzViMzguLmMzYjhkYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9iYXNlLmgKKysrIGIvZHJpdmVycy9iYXNlL2Jhc2UuaApAQCAtNSwxMyArNSwyMSBAQAogZXh0ZXJuIGludCBidXNlc19pbml0KHZvaWQpOwogZXh0ZXJuIGludCBjbGFzc2VzX2luaXQodm9pZCk7CiBleHRlcm4gaW50IGZpcm13YXJlX2luaXQodm9pZCk7CisjaWZkZWYgQ09ORklHX1NZU19IWVBFUlZJU09SCitleHRlcm4gaW50IGh5cGVydmlzb3JfaW5pdCh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX2luaXQodm9pZCkgeyByZXR1cm4gMDsgfQorI2VuZGlmCiBleHRlcm4gaW50IHBsYXRmb3JtX2J1c19pbml0KHZvaWQpOwogZXh0ZXJuIGludCBzeXN0ZW1fYnVzX2luaXQodm9pZCk7CiBleHRlcm4gaW50IGNwdV9kZXZfaW5pdCh2b2lkKTsKIGV4dGVybiBpbnQgYXR0cmlidXRlX2NvbnRhaW5lcl9pbml0KHZvaWQpOwogCiBleHRlcm4gaW50IGJ1c19hZGRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKiBkZXYpOworZXh0ZXJuIHZvaWQgYnVzX2F0dGFjaF9kZXZpY2Uoc3RydWN0IGRldmljZSAqIGRldik7CiBleHRlcm4gdm9pZCBidXNfcmVtb3ZlX2RldmljZShzdHJ1Y3QgZGV2aWNlICogZGV2KTsKK2V4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgKmdldF9idXMoc3RydWN0IGJ1c190eXBlICogYnVzKTsKK2V4dGVybiB2b2lkIHB1dF9idXMoc3RydWN0IGJ1c190eXBlICogYnVzKTsKIAogZXh0ZXJuIGludCBidXNfYWRkX2RyaXZlcihzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqKTsKIGV4dGVybiB2b2lkIGJ1c19yZW1vdmVfZHJpdmVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICopOwpAQCAtMzQsNCArNDIsNSBAQAogCXJldHVybiBjb250YWluZXJfb2YoX2F0dHIsIHN0cnVjdCBjbGFzc19kZXZpY2VfYXR0cmlidXRlLCBhdHRyKTsKIH0KIAorZXh0ZXJuIGNoYXIgKm1ha2VfY2xhc3NfbmFtZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qga29iamVjdCAqa29iaik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9idXMuYyBiL2RyaXZlcnMvYmFzZS9idXMuYwppbmRleCA3NjY1NmFjLi4wNTBkODZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvYnVzLmMKKysrIGIvZHJpdmVycy9iYXNlL2J1cy5jCkBAIC0zNjIsOCArMzYyLDcgQEAKICAqCUBkZXY6CWRldmljZSBiZWluZyBhZGRlZAogICoKICAqCS0gQWRkIHRoZSBkZXZpY2UgdG8gaXRzIGJ1cydzIGxpc3Qgb2YgZGV2aWNlcy4KLSAqCS0gVHJ5IHRvIGF0dGFjaCB0byBkcml2ZXIuCi0gKgktIENyZWF0ZSBsaW5rIHRvIGRldmljZSdzIHBoeXNpY2FsIGxvY2F0aW9uLgorICoJLSBDcmVhdGUgbGluayB0byBkZXZpY2UncyBidXMuCiAgKi8KIGludCBidXNfYWRkX2RldmljZShzdHJ1Y3QgZGV2aWNlICogZGV2KQogewpAQCAtMzcyLDExICszNzEsMTAgQEAKIAogCWlmIChidXMpIHsKIAkJcHJfZGVidWcoImJ1cyAlczogYWRkIGRldmljZSAlc1xuIiwgYnVzLT5uYW1lLCBkZXYtPmJ1c19pZCk7Ci0JCWRldmljZV9hdHRhY2goZGV2KTsKLQkJa2xpc3RfYWRkX3RhaWwoJmRldi0+a25vZGVfYnVzLCAmYnVzLT5rbGlzdF9kZXZpY2VzKTsKIAkJZXJyb3IgPSBkZXZpY2VfYWRkX2F0dHJzKGJ1cywgZGV2KTsKIAkJaWYgKCFlcnJvcikgewogCQkJc3lzZnNfY3JlYXRlX2xpbmsoJmJ1cy0+ZGV2aWNlcy5rb2JqLCAmZGV2LT5rb2JqLCBkZXYtPmJ1c19pZCk7CisJCQlzeXNmc19jcmVhdGVfbGluaygmZGV2LT5rb2JqLCAmZGV2LT5idXMtPnN1YnN5cy5rc2V0LmtvYmosICJzdWJzeXN0ZW0iKTsKIAkJCXN5c2ZzX2NyZWF0ZV9saW5rKCZkZXYtPmtvYmosICZkZXYtPmJ1cy0+c3Vic3lzLmtzZXQua29iaiwgImJ1cyIpOwogCQl9CiAJfQpAQCAtMzg0LDYgKzM4MiwyMiBAQAogfQogCiAvKioKKyAqCWJ1c19hdHRhY2hfZGV2aWNlIC0gYWRkIGRldmljZSB0byBidXMKKyAqCUBkZXY6CWRldmljZSB0cmllZCB0byBhdHRhY2ggdG8gYSBkcml2ZXIKKyAqCisgKgktIFRyeSB0byBhdHRhY2ggdG8gZHJpdmVyLgorICovCit2b2lkIGJ1c19hdHRhY2hfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKiBkZXYpCit7CisJc3RydWN0IGJ1c190eXBlICogYnVzID0gZGV2LT5idXM7CisKKwlpZiAoYnVzKSB7CisJCWRldmljZV9hdHRhY2goZGV2KTsKKwkJa2xpc3RfYWRkX3RhaWwoJmRldi0+a25vZGVfYnVzLCAmYnVzLT5rbGlzdF9kZXZpY2VzKTsKKwl9Cit9CisKKy8qKgogICoJYnVzX3JlbW92ZV9kZXZpY2UgLSByZW1vdmUgZGV2aWNlIGZyb20gYnVzCiAgKglAZGV2OglkZXZpY2UgdG8gYmUgcmVtb3ZlZAogICoKQEAgLTM5NSw2ICs0MDksNyBAQAogdm9pZCBidXNfcmVtb3ZlX2RldmljZShzdHJ1Y3QgZGV2aWNlICogZGV2KQogewogCWlmIChkZXYtPmJ1cykgeworCQlzeXNmc19yZW1vdmVfbGluaygmZGV2LT5rb2JqLCAic3Vic3lzdGVtIik7CiAJCXN5c2ZzX3JlbW92ZV9saW5rKCZkZXYtPmtvYmosICJidXMiKTsKIAkJc3lzZnNfcmVtb3ZlX2xpbmsoJmRldi0+YnVzLT5kZXZpY2VzLmtvYmosIGRldi0+YnVzX2lkKTsKIAkJZGV2aWNlX3JlbW92ZV9hdHRycyhkZXYtPmJ1cywgZGV2KTsKQEAgLTczMiwxNCArNzQ3LDkgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKGJ1c19maW5kX2RldmljZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChidXNfZm9yX2VhY2hfZHJ2KTsKIAotRVhQT1JUX1NZTUJPTF9HUEwoYnVzX2FkZF9kZXZpY2UpOwotRVhQT1JUX1NZTUJPTF9HUEwoYnVzX3JlbW92ZV9kZXZpY2UpOwogRVhQT1JUX1NZTUJPTF9HUEwoYnVzX3JlZ2lzdGVyKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGJ1c191bnJlZ2lzdGVyKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGJ1c19yZXNjYW5fZGV2aWNlcyk7Ci1FWFBPUlRfU1lNQk9MX0dQTChnZXRfYnVzKTsKLUVYUE9SVF9TWU1CT0xfR1BMKHB1dF9idXMpOwotRVhQT1JUX1NZTUJPTF9HUEwoZmluZF9idXMpOwogCiBFWFBPUlRfU1lNQk9MX0dQTChidXNfY3JlYXRlX2ZpbGUpOwogRVhQT1JUX1NZTUJPTF9HUEwoYnVzX3JlbW92ZV9maWxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9jbGFzcy5jIGIvZHJpdmVycy9iYXNlL2NsYXNzLmMKaW5kZXggYjFlYTRkZi4uOWFhMTI3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2NsYXNzLmMKKysrIGIvZHJpdmVycy9iYXNlL2NsYXNzLmMKQEAgLTkxLDE0ICs5MSwxNCBAQAogCQlzeXNmc19yZW1vdmVfZmlsZSgmY2xzLT5zdWJzeXMua3NldC5rb2JqLCAmYXR0ci0+YXR0cik7CiB9CiAKLXN0cnVjdCBjbGFzcyAqIGNsYXNzX2dldChzdHJ1Y3QgY2xhc3MgKiBjbHMpCitzdGF0aWMgc3RydWN0IGNsYXNzICpjbGFzc19nZXQoc3RydWN0IGNsYXNzICpjbHMpCiB7CiAJaWYgKGNscykKIAkJcmV0dXJuIGNvbnRhaW5lcl9vZihzdWJzeXNfZ2V0KCZjbHMtPnN1YnN5cyksIHN0cnVjdCBjbGFzcywgc3Vic3lzKTsKIAlyZXR1cm4gTlVMTDsKIH0KIAotdm9pZCBjbGFzc19wdXQoc3RydWN0IGNsYXNzICogY2xzKQorc3RhdGljIHZvaWQgY2xhc3NfcHV0KHN0cnVjdCBjbGFzcyAqIGNscykKIHsKIAlpZiAoY2xzKQogCQlzdWJzeXNfcHV0KCZjbHMtPnN1YnN5cyk7CkBAIC0xNDIsNiArMTQyLDcgQEAKIAlwcl9kZWJ1ZygiZGV2aWNlIGNsYXNzICclcyc6IHJlZ2lzdGVyaW5nXG4iLCBjbHMtPm5hbWUpOwogCiAJSU5JVF9MSVNUX0hFQUQoJmNscy0+Y2hpbGRyZW4pOworCUlOSVRfTElTVF9IRUFEKCZjbHMtPmRldmljZXMpOwogCUlOSVRfTElTVF9IRUFEKCZjbHMtPmludGVyZmFjZXMpOwogCWluaXRfTVVURVgoJmNscy0+c2VtKTsKIAllcnJvciA9IGtvYmplY3Rfc2V0X25hbWUoJmNscy0+c3Vic3lzLmtzZXQua29iaiwgIiVzIiwgY2xzLT5uYW1lKTsKQEAgLTUwNCwyMiArNTA1LDIxIEBACiAJSU5JVF9MSVNUX0hFQUQoJmNsYXNzX2Rldi0+bm9kZSk7CiB9CiAKLXN0YXRpYyBjaGFyICptYWtlX2NsYXNzX25hbWUoc3RydWN0IGNsYXNzX2RldmljZSAqY2xhc3NfZGV2KQorY2hhciAqbWFrZV9jbGFzc19uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQogewotCWNoYXIgKm5hbWU7CisJY2hhciAqY2xhc3NfbmFtZTsKIAlpbnQgc2l6ZTsKIAotCXNpemUgPSBzdHJsZW4oY2xhc3NfZGV2LT5jbGFzcy0+bmFtZSkgKwotCQlzdHJsZW4oa29iamVjdF9uYW1lKCZjbGFzc19kZXYtPmtvYmopKSArIDI7CisJc2l6ZSA9IHN0cmxlbihuYW1lKSArIHN0cmxlbihrb2JqZWN0X25hbWUoa29iaikpICsgMjsKIAotCW5hbWUgPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwotCWlmICghbmFtZSkKKwljbGFzc19uYW1lID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNsYXNzX25hbWUpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0Jc3RyY3B5KG5hbWUsIGNsYXNzX2Rldi0+Y2xhc3MtPm5hbWUpOwotCXN0cmNhdChuYW1lLCAiOiIpOwotCXN0cmNhdChuYW1lLCBrb2JqZWN0X25hbWUoJmNsYXNzX2Rldi0+a29iaikpOwotCXJldHVybiBuYW1lOworCXN0cmNweShjbGFzc19uYW1lLCBuYW1lKTsKKwlzdHJjYXQoY2xhc3NfbmFtZSwgIjoiKTsKKwlzdHJjYXQoY2xhc3NfbmFtZSwga29iamVjdF9uYW1lKGtvYmopKTsKKwlyZXR1cm4gY2xhc3NfbmFtZTsKIH0KIAogaW50IGNsYXNzX2RldmljZV9hZGQoc3RydWN0IGNsYXNzX2RldmljZSAqY2xhc3NfZGV2KQpAQCAtNTM1LDE4ICs1MzUsMjIgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoIXN0cmxlbihjbGFzc19kZXYtPmNsYXNzX2lkKSkKLQkJZ290byByZWdpc3Rlcl9kb25lOworCQlnb3RvIG91dDE7CiAKIAlwYXJlbnRfY2xhc3MgPSBjbGFzc19nZXQoY2xhc3NfZGV2LT5jbGFzcyk7CiAJaWYgKCFwYXJlbnRfY2xhc3MpCi0JCWdvdG8gcmVnaXN0ZXJfZG9uZTsKKwkJZ290byBvdXQxOworCiAJcGFyZW50X2NsYXNzX2RldiA9IGNsYXNzX2RldmljZV9nZXQoY2xhc3NfZGV2LT5wYXJlbnQpOwogCiAJcHJfZGVidWcoIkNMQVNTOiByZWdpc3RlcmluZyBjbGFzcyBkZXZpY2U6IElEID0gJyVzJ1xuIiwKIAkJIGNsYXNzX2Rldi0+Y2xhc3NfaWQpOwogCiAJLyogZmlyc3QsIHJlZ2lzdGVyIHdpdGggZ2VuZXJpYyBsYXllci4gKi8KLQlrb2JqZWN0X3NldF9uYW1lKCZjbGFzc19kZXYtPmtvYmosICIlcyIsIGNsYXNzX2Rldi0+Y2xhc3NfaWQpOworCWVycm9yID0ga29iamVjdF9zZXRfbmFtZSgmY2xhc3NfZGV2LT5rb2JqLCAiJXMiLCBjbGFzc19kZXYtPmNsYXNzX2lkKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0MjsKKwogCWlmIChwYXJlbnRfY2xhc3NfZGV2KQogCQljbGFzc19kZXYtPmtvYmoucGFyZW50ID0gJnBhcmVudF9jbGFzc19kZXYtPmtvYmo7CiAJZWxzZQpAQCAtNTU0LDQxICs1NTgsNTggQEAKIAogCWVycm9yID0ga29iamVjdF9hZGQoJmNsYXNzX2Rldi0+a29iaik7CiAJaWYgKGVycm9yKQotCQlnb3RvIHJlZ2lzdGVyX2RvbmU7CisJCWdvdG8gb3V0MjsKIAogCS8qIGFkZCB0aGUgbmVlZGVkIGF0dHJpYnV0ZXMgdG8gdGhpcyBkZXZpY2UgKi8KKwlzeXNmc19jcmVhdGVfbGluaygmY2xhc3NfZGV2LT5rb2JqLCAmcGFyZW50X2NsYXNzLT5zdWJzeXMua3NldC5rb2JqLCAic3Vic3lzdGVtIik7CiAJY2xhc3NfZGV2LT51ZXZlbnRfYXR0ci5hdHRyLm5hbWUgPSAidWV2ZW50IjsKIAljbGFzc19kZXYtPnVldmVudF9hdHRyLmF0dHIubW9kZSA9IFNfSVdVU1I7CiAJY2xhc3NfZGV2LT51ZXZlbnRfYXR0ci5hdHRyLm93bmVyID0gcGFyZW50X2NsYXNzLT5vd25lcjsKIAljbGFzc19kZXYtPnVldmVudF9hdHRyLnN0b3JlID0gc3RvcmVfdWV2ZW50OwotCWNsYXNzX2RldmljZV9jcmVhdGVfZmlsZShjbGFzc19kZXYsICZjbGFzc19kZXYtPnVldmVudF9hdHRyKTsKKwllcnJvciA9IGNsYXNzX2RldmljZV9jcmVhdGVfZmlsZShjbGFzc19kZXYsICZjbGFzc19kZXYtPnVldmVudF9hdHRyKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0MzsKIAogCWlmIChNQUpPUihjbGFzc19kZXYtPmRldnQpKSB7CiAJCXN0cnVjdCBjbGFzc19kZXZpY2VfYXR0cmlidXRlICphdHRyOwogCQlhdHRyID0ga3phbGxvYyhzaXplb2YoKmF0dHIpLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFhdHRyKSB7CiAJCQllcnJvciA9IC1FTk9NRU07Ci0JCQlrb2JqZWN0X2RlbCgmY2xhc3NfZGV2LT5rb2JqKTsKLQkJCWdvdG8gcmVnaXN0ZXJfZG9uZTsKKwkJCWdvdG8gb3V0NDsKIAkJfQogCQlhdHRyLT5hdHRyLm5hbWUgPSAiZGV2IjsKIAkJYXR0ci0+YXR0ci5tb2RlID0gU19JUlVHTzsKIAkJYXR0ci0+YXR0ci5vd25lciA9IHBhcmVudF9jbGFzcy0+b3duZXI7CiAJCWF0dHItPnNob3cgPSBzaG93X2RldjsKLQkJY2xhc3NfZGV2aWNlX2NyZWF0ZV9maWxlKGNsYXNzX2RldiwgYXR0cik7CisJCWVycm9yID0gY2xhc3NfZGV2aWNlX2NyZWF0ZV9maWxlKGNsYXNzX2RldiwgYXR0cik7CisJCWlmIChlcnJvcikgeworCQkJa2ZyZWUoYXR0cik7CisJCQlnb3RvIG91dDQ7CisJCX0KKwogCQljbGFzc19kZXYtPmRldnRfYXR0ciA9IGF0dHI7CiAJfQogCi0JY2xhc3NfZGV2aWNlX2FkZF9hdHRycyhjbGFzc19kZXYpOworCWVycm9yID0gY2xhc3NfZGV2aWNlX2FkZF9hdHRycyhjbGFzc19kZXYpOworCWlmIChlcnJvcikKKwkJZ290byBvdXQ1OworCiAJaWYgKGNsYXNzX2Rldi0+ZGV2KSB7Ci0JCWNsYXNzX25hbWUgPSBtYWtlX2NsYXNzX25hbWUoY2xhc3NfZGV2KTsKLQkJc3lzZnNfY3JlYXRlX2xpbmsoJmNsYXNzX2Rldi0+a29iaiwKLQkJCQkgICZjbGFzc19kZXYtPmRldi0+a29iaiwgImRldmljZSIpOwotCQlzeXNmc19jcmVhdGVfbGluaygmY2xhc3NfZGV2LT5kZXYtPmtvYmosICZjbGFzc19kZXYtPmtvYmosCi0JCQkJICBjbGFzc19uYW1lKTsKKwkJY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYtPmNsYXNzLT5uYW1lLAorCQkJCQkgICAgICZjbGFzc19kZXYtPmtvYmopOworCQllcnJvciA9IHN5c2ZzX2NyZWF0ZV9saW5rKCZjbGFzc19kZXYtPmtvYmosCisJCQkJCSAgJmNsYXNzX2Rldi0+ZGV2LT5rb2JqLCAiZGV2aWNlIik7CisJCWlmIChlcnJvcikKKwkJCWdvdG8gb3V0NjsKKwkJZXJyb3IgPSBzeXNmc19jcmVhdGVfbGluaygmY2xhc3NfZGV2LT5kZXYtPmtvYmosICZjbGFzc19kZXYtPmtvYmosCisJCQkJCSAgY2xhc3NfbmFtZSk7CisJCWlmIChlcnJvcikKKwkJCWdvdG8gb3V0NzsKIAl9CiAKLQljbGFzc19kZXZpY2VfYWRkX2dyb3VwcyhjbGFzc19kZXYpOworCWVycm9yID0gY2xhc3NfZGV2aWNlX2FkZF9ncm91cHMoY2xhc3NfZGV2KTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0ODsKIAogCWtvYmplY3RfdWV2ZW50KCZjbGFzc19kZXYtPmtvYmosIEtPQkpfQUREKTsKIApAQCAtNjAxLDExICs2MjIsMjggQEAKIAl9CiAJdXAoJnBhcmVudF9jbGFzcy0+c2VtKTsKIAotIHJlZ2lzdGVyX2RvbmU6Ci0JaWYgKGVycm9yKSB7Ci0JCWNsYXNzX3B1dChwYXJlbnRfY2xhc3MpOworCWdvdG8gb3V0MTsKKworIG91dDg6CisJaWYgKGNsYXNzX2Rldi0+ZGV2KQorCQlzeXNmc19yZW1vdmVfbGluaygmY2xhc3NfZGV2LT5rb2JqLCBjbGFzc19uYW1lKTsKKyBvdXQ3OgorCWlmIChjbGFzc19kZXYtPmRldikKKwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmNsYXNzX2Rldi0+a29iaiwgImRldmljZSIpOworIG91dDY6CisJY2xhc3NfZGV2aWNlX3JlbW92ZV9hdHRycyhjbGFzc19kZXYpOworIG91dDU6CisJaWYgKGNsYXNzX2Rldi0+ZGV2dF9hdHRyKQorCQljbGFzc19kZXZpY2VfcmVtb3ZlX2ZpbGUoY2xhc3NfZGV2LCBjbGFzc19kZXYtPmRldnRfYXR0cik7Cisgb3V0NDoKKwljbGFzc19kZXZpY2VfcmVtb3ZlX2ZpbGUoY2xhc3NfZGV2LCAmY2xhc3NfZGV2LT51ZXZlbnRfYXR0cik7Cisgb3V0MzoKKwlrb2JqZWN0X2RlbCgmY2xhc3NfZGV2LT5rb2JqKTsKKyBvdXQyOgorCWlmKHBhcmVudF9jbGFzc19kZXYpCiAJCWNsYXNzX2RldmljZV9wdXQocGFyZW50X2NsYXNzX2Rldik7Ci0JfQorCWNsYXNzX3B1dChwYXJlbnRfY2xhc3MpOworIG91dDE6CiAJY2xhc3NfZGV2aWNlX3B1dChjbGFzc19kZXYpOwogCWtmcmVlKGNsYXNzX25hbWUpOwogCXJldHVybiBlcnJvcjsKQEAgLTY5NSwxMCArNzMzLDEyIEBACiAJfQogCiAJaWYgKGNsYXNzX2Rldi0+ZGV2KSB7Ci0JCWNsYXNzX25hbWUgPSBtYWtlX2NsYXNzX25hbWUoY2xhc3NfZGV2KTsKKwkJY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYtPmNsYXNzLT5uYW1lLAorCQkJCQkgICAgICZjbGFzc19kZXYtPmtvYmopOwogCQlzeXNmc19yZW1vdmVfbGluaygmY2xhc3NfZGV2LT5rb2JqLCAiZGV2aWNlIik7CiAJCXN5c2ZzX3JlbW92ZV9saW5rKCZjbGFzc19kZXYtPmRldi0+a29iaiwgY2xhc3NfbmFtZSk7CiAJfQorCXN5c2ZzX3JlbW92ZV9saW5rKCZjbGFzc19kZXYtPmtvYmosICJzdWJzeXN0ZW0iKTsKIAljbGFzc19kZXZpY2VfcmVtb3ZlX2ZpbGUoY2xhc3NfZGV2LCAmY2xhc3NfZGV2LT51ZXZlbnRfYXR0cik7CiAJaWYgKGNsYXNzX2Rldi0+ZGV2dF9hdHRyKQogCQljbGFzc19kZXZpY2VfcmVtb3ZlX2ZpbGUoY2xhc3NfZGV2LCBjbGFzc19kZXYtPmRldnRfYXR0cik7CkBAIC03NjAsMTQgKzgwMCwxNiBAQAogCQkgbmV3X25hbWUpOwogCiAJaWYgKGNsYXNzX2Rldi0+ZGV2KQotCQlvbGRfY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYpOworCQlvbGRfY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYtPmNsYXNzLT5uYW1lLAorCQkJCQkJICZjbGFzc19kZXYtPmtvYmopOwogCiAJc3RybGNweShjbGFzc19kZXYtPmNsYXNzX2lkLCBuZXdfbmFtZSwgS09CSl9OQU1FX0xFTik7CiAKIAllcnJvciA9IGtvYmplY3RfcmVuYW1lKCZjbGFzc19kZXYtPmtvYmosIG5ld19uYW1lKTsKIAogCWlmIChjbGFzc19kZXYtPmRldikgewotCQluZXdfY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYpOworCQluZXdfY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShjbGFzc19kZXYtPmNsYXNzLT5uYW1lLAorCQkJCQkJICZjbGFzc19kZXYtPmtvYmopOwogCQlzeXNmc19jcmVhdGVfbGluaygmY2xhc3NfZGV2LT5kZXYtPmtvYmosICZjbGFzc19kZXYtPmtvYmosCiAJCQkJICBuZXdfY2xhc3NfbmFtZSk7CiAJCXN5c2ZzX3JlbW92ZV9saW5rKCZjbGFzc19kZXYtPmRldi0+a29iaiwgb2xkX2NsYXNzX25hbWUpOwpAQCAtODU4LDggKzkwMCw2IEBACiBFWFBPUlRfU1lNQk9MX0dQTChjbGFzc19yZW1vdmVfZmlsZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChjbGFzc19yZWdpc3Rlcik7CiBFWFBPUlRfU1lNQk9MX0dQTChjbGFzc191bnJlZ2lzdGVyKTsKLUVYUE9SVF9TWU1CT0xfR1BMKGNsYXNzX2dldCk7Ci1FWFBPUlRfU1lNQk9MX0dQTChjbGFzc19wdXQpOwogRVhQT1JUX1NZTUJPTF9HUEwoY2xhc3NfY3JlYXRlKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGNsYXNzX2Rlc3Ryb3kpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuYwppbmRleCA2YjM1NWJkLi4yN2MyMTc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jCisrKyBiL2RyaXZlcnMvYmFzZS9jb3JlLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+CiAKICNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CiAKQEAgLTI4LDYgKzI5LDIyIEBACiAgKiBzeXNmcyBiaW5kaW5ncyBmb3IgZGV2aWNlcy4KICAqLwogCisvKioKKyAqIGRldl9kcml2ZXJfc3RyaW5nIC0gUmV0dXJuIGEgZGV2aWNlJ3MgZHJpdmVyIG5hbWUsIGlmIGF0IGFsbCBwb3NzaWJsZQorICogQGRldjogc3RydWN0IGRldmljZSB0byBnZXQgdGhlIG5hbWUgb2YKKyAqCisgKiBXaWxsIHJldHVybiB0aGUgZGV2aWNlJ3MgZHJpdmVyJ3MgbmFtZSBpZiBpdCBpcyBib3VuZCB0byBhIGRldmljZS4gIElmCisgKiB0aGUgZGV2aWNlIGlzIG5vdCBib3VuZCB0byBhIGRldmljZSwgaXQgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGJ1cworICogaXQgaXMgYXR0YWNoZWQgdG8uICBJZiBpdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBidXMgZWl0aGVyLCBhbiBlbXB0eQorICogc3RyaW5nIHdpbGwgYmUgcmV0dXJuZWQuCisgKi8KK2NvbnN0IGNoYXIgKmRldl9kcml2ZXJfc3RyaW5nKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gZGV2LT5kcml2ZXIgPyBkZXYtPmRyaXZlci0+bmFtZSA6CisJCQkoZGV2LT5idXMgPyBkZXYtPmJ1cy0+bmFtZSA6ICIiKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGRldl9kcml2ZXJfc3RyaW5nKTsKKwogI2RlZmluZSB0b19kZXYob2JqKSBjb250YWluZXJfb2Yob2JqLCBzdHJ1Y3QgZGV2aWNlLCBrb2JqKQogI2RlZmluZSB0b19kZXZfYXR0cihfYXR0cikgY29udGFpbmVyX29mKF9hdHRyLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSwgYXR0cikKIApAQCAtOTgsNiArMTE1LDggQEAKIAkJc3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2KGtvYmopOwogCQlpZiAoZGV2LT5idXMpCiAJCQlyZXR1cm4gMTsKKwkJaWYgKGRldi0+Y2xhc3MpCisJCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0xMDYsNyArMTI1LDExIEBACiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2KGtvYmopOwogCi0JcmV0dXJuIGRldi0+YnVzLT5uYW1lOworCWlmIChkZXYtPmJ1cykKKwkJcmV0dXJuIGRldi0+YnVzLT5uYW1lOworCWlmIChkZXYtPmNsYXNzKQorCQlyZXR1cm4gZGV2LT5jbGFzcy0+bmFtZTsKKwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludCBkZXZfdWV2ZW50KHN0cnVjdCBrc2V0ICprc2V0LCBzdHJ1Y3Qga29iamVjdCAqa29iaiwgY2hhciAqKmVudnAsCkBAIC0xMTcsNiArMTQwLDE2IEBACiAJaW50IGxlbmd0aCA9IDA7CiAJaW50IHJldHZhbCA9IDA7CiAKKwkvKiBhZGQgdGhlIG1ham9yL21pbm9yIGlmIHByZXNlbnQgKi8KKwlpZiAoTUFKT1IoZGV2LT5kZXZ0KSkgeworCQlhZGRfdWV2ZW50X3ZhcihlbnZwLCBudW1fZW52cCwgJmksCisJCQkgICAgICAgYnVmZmVyLCBidWZmZXJfc2l6ZSwgJmxlbmd0aCwKKwkJCSAgICAgICAiTUFKT1I9JXUiLCBNQUpPUihkZXYtPmRldnQpKTsKKwkJYWRkX3VldmVudF92YXIoZW52cCwgbnVtX2VudnAsICZpLAorCQkJICAgICAgIGJ1ZmZlciwgYnVmZmVyX3NpemUsICZsZW5ndGgsCisJCQkgICAgICAgIk1JTk9SPSV1IiwgTUlOT1IoZGV2LT5kZXZ0KSk7CisJfQorCiAJLyogYWRkIGJ1cyBuYW1lIG9mIHBoeXNpY2FsIGRldmljZSAqLwogCWlmIChkZXYtPmJ1cykKIAkJYWRkX3VldmVudF92YXIoZW52cCwgbnVtX2VudnAsICZpLApAQCAtMTYxLDYgKzE5NCwxMiBAQAogCXJldHVybiBjb3VudDsKIH0KIAorc3RhdGljIHNzaXplX3Qgc2hvd19kZXYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCWNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gcHJpbnRfZGV2X3QoYnVmLCBkZXYtPmRldnQpOworfQorCiAvKgogICoJZGV2aWNlc19zdWJzeXMgLSBzdHJ1Y3R1cmUgdG8gYmUgcmVnaXN0ZXJlZCB3aXRoIGtvYmplY3QgY29yZS4KICAqLwpAQCAtMjMxLDYgKzI3MCw3IEBACiAJa2xpc3RfaW5pdCgmZGV2LT5rbGlzdF9jaGlsZHJlbiwga2xpc3RfY2hpbGRyZW5fZ2V0LAogCQkgICBrbGlzdF9jaGlsZHJlbl9wdXQpOwogCUlOSVRfTElTVF9IRUFEKCZkZXYtPmRtYV9wb29scyk7CisJSU5JVF9MSVNUX0hFQUQoJmRldi0+bm9kZSk7CiAJaW5pdF9NVVRFWCgmZGV2LT5zZW0pOwogCWRldmljZV9pbml0X3dha2V1cChkZXYsIDApOwogfQpAQCAtMjQ5LDYgKzI4OSw3IEBACiBpbnQgZGV2aWNlX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqcGFyZW50ID0gTlVMTDsKKwljaGFyICpjbGFzc19uYW1lID0gTlVMTDsKIAlpbnQgZXJyb3IgPSAtRUlOVkFMOwogCiAJZGV2ID0gZ2V0X2RldmljZShkZXYpOwpAQCAtMjc0LDIzICszMTUsNjkgQEAKIAlkZXYtPnVldmVudF9hdHRyLnN0b3JlID0gc3RvcmVfdWV2ZW50OwogCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZkZXYtPnVldmVudF9hdHRyKTsKIAotCWtvYmplY3RfdWV2ZW50KCZkZXYtPmtvYmosIEtPQkpfQUREKTsKKwlpZiAoTUFKT1IoZGV2LT5kZXZ0KSkgeworCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cjsKKwkJYXR0ciA9IGt6YWxsb2Moc2l6ZW9mKCphdHRyKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghYXR0cikgeworCQkJZXJyb3IgPSAtRU5PTUVNOworCQkJZ290byBQTUVycm9yOworCQl9CisJCWF0dHItPmF0dHIubmFtZSA9ICJkZXYiOworCQlhdHRyLT5hdHRyLm1vZGUgPSBTX0lSVUdPOworCQlpZiAoZGV2LT5kcml2ZXIpCisJCQlhdHRyLT5hdHRyLm93bmVyID0gZGV2LT5kcml2ZXItPm93bmVyOworCQlhdHRyLT5zaG93ID0gc2hvd19kZXY7CisJCWVycm9yID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgYXR0cik7CisJCWlmIChlcnJvcikgeworCQkJa2ZyZWUoYXR0cik7CisJCQlnb3RvIGF0dHJFcnJvcjsKKwkJfQorCisJCWRldi0+ZGV2dF9hdHRyID0gYXR0cjsKKwl9CisKKwlpZiAoZGV2LT5jbGFzcykgeworCQlzeXNmc19jcmVhdGVfbGluaygmZGV2LT5rb2JqLCAmZGV2LT5jbGFzcy0+c3Vic3lzLmtzZXQua29iaiwKKwkJCQkgICJzdWJzeXN0ZW0iKTsKKwkJc3lzZnNfY3JlYXRlX2xpbmsoJmRldi0+Y2xhc3MtPnN1YnN5cy5rc2V0LmtvYmosICZkZXYtPmtvYmosCisJCQkJICBkZXYtPmJ1c19pZCk7CisKKwkJc3lzZnNfY3JlYXRlX2xpbmsoJmRldi0+a29iaiwgJmRldi0+cGFyZW50LT5rb2JqLCAiZGV2aWNlIik7CisJCWNsYXNzX25hbWUgPSBtYWtlX2NsYXNzX25hbWUoZGV2LT5jbGFzcy0+bmFtZSwgJmRldi0+a29iaik7CisJCXN5c2ZzX2NyZWF0ZV9saW5rKCZkZXYtPnBhcmVudC0+a29iaiwgJmRldi0+a29iaiwgY2xhc3NfbmFtZSk7CisJfQorCiAJaWYgKChlcnJvciA9IGRldmljZV9wbV9hZGQoZGV2KSkpCiAJCWdvdG8gUE1FcnJvcjsKIAlpZiAoKGVycm9yID0gYnVzX2FkZF9kZXZpY2UoZGV2KSkpCiAJCWdvdG8gQnVzRXJyb3I7CisJa29iamVjdF91ZXZlbnQoJmRldi0+a29iaiwgS09CSl9BREQpOworCWJ1c19hdHRhY2hfZGV2aWNlKGRldik7CiAJaWYgKHBhcmVudCkKIAkJa2xpc3RfYWRkX3RhaWwoJmRldi0+a25vZGVfcGFyZW50LCAmcGFyZW50LT5rbGlzdF9jaGlsZHJlbik7CiAKKwlpZiAoZGV2LT5jbGFzcykgeworCQkvKiB0aWUgdGhlIGNsYXNzIHRvIHRoZSBkZXZpY2UgKi8KKwkJZG93bigmZGV2LT5jbGFzcy0+c2VtKTsKKwkJbGlzdF9hZGRfdGFpbCgmZGV2LT5ub2RlLCAmZGV2LT5jbGFzcy0+ZGV2aWNlcyk7CisJCXVwKCZkZXYtPmNsYXNzLT5zZW0pOworCX0KKwogCS8qIG5vdGlmeSBwbGF0Zm9ybSBvZiBkZXZpY2UgZW50cnkgKi8KIAlpZiAocGxhdGZvcm1fbm90aWZ5KQogCQlwbGF0Zm9ybV9ub3RpZnkoZGV2KTsKICBEb25lOgorIAlrZnJlZShjbGFzc19uYW1lKTsKIAlwdXRfZGV2aWNlKGRldik7CiAJcmV0dXJuIGVycm9yOwogIEJ1c0Vycm9yOgogCWRldmljZV9wbV9yZW1vdmUoZGV2KTsKICBQTUVycm9yOgorCWlmIChkZXYtPmRldnRfYXR0cikgeworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoZGV2LCBkZXYtPmRldnRfYXR0cik7CisJCWtmcmVlKGRldi0+ZGV2dF9hdHRyKTsKKwl9CisgYXR0ckVycm9yOgogCWtvYmplY3RfdWV2ZW50KCZkZXYtPmtvYmosIEtPQkpfUkVNT1ZFKTsKIAlrb2JqZWN0X2RlbCgmZGV2LT5rb2JqKTsKICBFcnJvcjoKQEAgLTM2Miw5ICs0NDksMjMgQEAKIHZvaWQgZGV2aWNlX2RlbChzdHJ1Y3QgZGV2aWNlICogZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKiBwYXJlbnQgPSBkZXYtPnBhcmVudDsKKwljaGFyICpjbGFzc19uYW1lID0gTlVMTDsKIAogCWlmIChwYXJlbnQpCiAJCWtsaXN0X2RlbCgmZGV2LT5rbm9kZV9wYXJlbnQpOworCWlmIChkZXYtPmRldnRfYXR0cikKKwkJZGV2aWNlX3JlbW92ZV9maWxlKGRldiwgZGV2LT5kZXZ0X2F0dHIpOworCWlmIChkZXYtPmNsYXNzKSB7CisJCXN5c2ZzX3JlbW92ZV9saW5rKCZkZXYtPmtvYmosICJzdWJzeXN0ZW0iKTsKKwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmRldi0+Y2xhc3MtPnN1YnN5cy5rc2V0LmtvYmosIGRldi0+YnVzX2lkKTsKKwkJY2xhc3NfbmFtZSA9IG1ha2VfY2xhc3NfbmFtZShkZXYtPmNsYXNzLT5uYW1lLCAmZGV2LT5rb2JqKTsKKwkJc3lzZnNfcmVtb3ZlX2xpbmsoJmRldi0+a29iaiwgImRldmljZSIpOworCQlzeXNmc19yZW1vdmVfbGluaygmZGV2LT5wYXJlbnQtPmtvYmosIGNsYXNzX25hbWUpOworCQlrZnJlZShjbGFzc19uYW1lKTsKKwkJZG93bigmZGV2LT5jbGFzcy0+c2VtKTsKKwkJbGlzdF9kZWxfaW5pdCgmZGV2LT5ub2RlKTsKKwkJdXAoJmRldi0+Y2xhc3MtPnNlbSk7CisJfQogCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXYtPnVldmVudF9hdHRyKTsKIAogCS8qIE5vdGlmeSB0aGUgcGxhdGZvcm0gb2YgdGhlIHJlbW92YWwsIGluIGNhc2UgdGhleQpAQCAtNDQ5LDMgKzU1MCw5OCBAQAogCiBFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfY3JlYXRlX2ZpbGUpOwogRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX3JlbW92ZV9maWxlKTsKKworCitzdGF0aWMgdm9pZCBkZXZpY2VfY3JlYXRlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCXByX2RlYnVnKCIlcyBjYWxsZWQgZm9yICVzXG4iLCBfX0ZVTkNUSU9OX18sIGRldi0+YnVzX2lkKTsKKwlrZnJlZShkZXYpOworfQorCisvKioKKyAqIGRldmljZV9jcmVhdGUgLSBjcmVhdGVzIGEgZGV2aWNlIGFuZCByZWdpc3RlcnMgaXQgd2l0aCBzeXNmcworICogQGNzOiBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QgY2xhc3MgdGhhdCB0aGlzIGRldmljZSBzaG91bGQgYmUgcmVnaXN0ZXJlZCB0by4KKyAqIEBwYXJlbnQ6IHBvaW50ZXIgdG8gdGhlIHBhcmVudCBzdHJ1Y3QgZGV2aWNlIG9mIHRoaXMgbmV3IGRldmljZSwgaWYgYW55LgorICogQGRldjogdGhlIGRldl90IGZvciB0aGUgY2hhciBkZXZpY2UgdG8gYmUgYWRkZWQuCisgKiBAZm10OiBzdHJpbmcgZm9yIHRoZSBjbGFzcyBkZXZpY2UncyBuYW1lCisgKgorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBieSBjaGFyIGRldmljZSBjbGFzc2VzLiAgQSBzdHJ1Y3QKKyAqIGRldmljZSB3aWxsIGJlIGNyZWF0ZWQgaW4gc3lzZnMsIHJlZ2lzdGVyZWQgdG8gdGhlIHNwZWNpZmllZAorICogY2xhc3MuCisgKiBBICJkZXYiIGZpbGUgd2lsbCBiZSBjcmVhdGVkLCBzaG93aW5nIHRoZSBkZXZfdCBmb3IgdGhlIGRldmljZSwgaWYKKyAqIHRoZSBkZXZfdCBpcyBub3QgMCwwLgorICogSWYgYSBwb2ludGVyIHRvIGEgcGFyZW50IHN0cnVjdCBkZXZpY2UgaXMgcGFzc2VkIGluLCB0aGUgbmV3bHkKKyAqIGNyZWF0ZWQgc3RydWN0IGRldmljZSB3aWxsIGJlIGEgY2hpbGQgb2YgdGhhdCBkZXZpY2UgaW4gc3lzZnMuICBUaGUKKyAqIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBkZXZpY2Ugd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZSBjYWxsLiAgQW55CisgKiBmdXJ0aGVyIHN5c2ZzIGZpbGVzIHRoYXQgbWlnaHQgYmUgcmVxdWlyZWQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhpcworICogcG9pbnRlci4KKyAqCisgKiBOb3RlOiB0aGUgc3RydWN0IGNsYXNzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBwcmV2aW91c2x5CisgKiBiZWVuIGNyZWF0ZWQgd2l0aCBhIGNhbGwgdG8gY2xhc3NfY3JlYXRlKCkuCisgKi8KK3N0cnVjdCBkZXZpY2UgKmRldmljZV9jcmVhdGUoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGRldmljZSAqcGFyZW50LAorCQkJICAgICBkZXZfdCBkZXZ0LCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IGFyZ3M7CisJc3RydWN0IGRldmljZSAqZGV2ID0gTlVMTDsKKwlpbnQgcmV0dmFsID0gLUVOT0RFVjsKKworCWlmIChjbGFzcyA9PSBOVUxMIHx8IElTX0VSUihjbGFzcykpCisJCWdvdG8gZXJyb3I7CisJaWYgKHBhcmVudCA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzIGRvZXMgbm90IHdvcmsgeWV0IGZvciBOVUxMIHBhcmVudHNcbiIsIF9fRlVOQ1RJT05fXyk7CisJCWdvdG8gZXJyb3I7CisJfQorCisJZGV2ID0ga3phbGxvYyhzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOworCWlmICghZGV2KSB7CisJCXJldHZhbCA9IC1FTk9NRU07CisJCWdvdG8gZXJyb3I7CisJfQorCisJZGV2LT5kZXZ0ID0gZGV2dDsKKwlkZXYtPmNsYXNzID0gY2xhc3M7CisJZGV2LT5wYXJlbnQgPSBwYXJlbnQ7CisJZGV2LT5yZWxlYXNlID0gZGV2aWNlX2NyZWF0ZV9yZWxlYXNlOworCisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2c25wcmludGYoZGV2LT5idXNfaWQsIEJVU19JRF9TSVpFLCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwlyZXR2YWwgPSBkZXZpY2VfcmVnaXN0ZXIoZGV2KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm9yOworCisJcmV0dXJuIGRldjsKKworZXJyb3I6CisJa2ZyZWUoZGV2KTsKKwlyZXR1cm4gRVJSX1BUUihyZXR2YWwpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2NyZWF0ZSk7CisKKy8qKgorICogZGV2aWNlX2Rlc3Ryb3kgLSByZW1vdmVzIGEgZGV2aWNlIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aCBkZXZpY2VfY3JlYXRlKCkKKyAqIEBjbGFzczogdGhlIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBjbGFzcyB0aGF0IHRoaXMgZGV2aWNlIHdhcyByZWdpc3RlcmVkICogd2l0aC4KKyAqIEBkZXY6IHRoZSBkZXZfdCBvZiB0aGUgZGV2aWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZC4KKyAqCisgKiBUaGlzIGNhbGwgdW5yZWdpc3RlcnMgYW5kIGNsZWFucyB1cCBhIGNsYXNzIGRldmljZSB0aGF0IHdhcyBjcmVhdGVkIHdpdGggYQorICogY2FsbCB0byBjbGFzc19kZXZpY2VfY3JlYXRlKCkKKyAqLwordm9pZCBkZXZpY2VfZGVzdHJveShzdHJ1Y3QgY2xhc3MgKmNsYXNzLCBkZXZfdCBkZXZ0KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IE5VTEw7CisJc3RydWN0IGRldmljZSAqZGV2X3RtcDsKKworCWRvd24oJmNsYXNzLT5zZW0pOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2X3RtcCwgJmNsYXNzLT5kZXZpY2VzLCBub2RlKSB7CisJCWlmIChkZXZfdG1wLT5kZXZ0ID09IGRldnQpIHsKKwkJCWRldiA9IGRldl90bXA7CisJCQlicmVhazsKKwkJfQorCX0KKwl1cCgmY2xhc3MtPnNlbSk7CisKKwlpZiAoZGV2KQorCQlkZXZpY2VfdW5yZWdpc3RlcihkZXYpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2Rlc3Ryb3kpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2Zpcm13YXJlX2NsYXNzLmMgYi9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfY2xhc3MuYwppbmRleCAwYzk5YWU2Li41ZDZjMDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfY2xhc3MuYworKysgYi9kcml2ZXJzL2Jhc2UvZmlybXdhcmVfY2xhc3MuYwpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KLSNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KIAogI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CiAjaW5jbHVkZSAiYmFzZS5oIgpAQCAtMzYsNyArMzYsNyBAQAogCiAvKiBmd19sb2NrIGNvdWxkIGJlIG1vdmVkIHRvICdzdHJ1Y3QgZmlybXdhcmVfcHJpdicgYnV0IHNpbmNlIGl0IGlzIGp1c3QKICAqIGd1YXJkaW5nIGZvciBjb3JuZXIgY2FzZXMgYSBnbG9iYWwgbG9jayBzaG91bGQgYmUgT0sgKi8KLXN0YXRpYyBERUNMQVJFX01VVEVYKGZ3X2xvY2spOworc3RhdGljIERFRklORV9NVVRFWChmd19sb2NrKTsKIAogc3RydWN0IGZpcm13YXJlX3ByaXYgewogCWNoYXIgZndfaWRbRklSTVdBUkVfTkFNRV9NQVhdOwpAQCAtMTQyLDkgKzE0Miw5IEBACiAKIAlzd2l0Y2ggKGxvYWRpbmcpIHsKIAljYXNlIDE6Ci0JCWRvd24oJmZ3X2xvY2spOworCQltdXRleF9sb2NrKCZmd19sb2NrKTsKIAkJaWYgKCFmd19wcml2LT5mdykgewotCQkJdXAoJmZ3X2xvY2spOworCQkJbXV0ZXhfdW5sb2NrKCZmd19sb2NrKTsKIAkJCWJyZWFrOwogCQl9CiAJCXZmcmVlKGZ3X3ByaXYtPmZ3LT5kYXRhKTsKQEAgLTE1Miw3ICsxNTIsNyBAQAogCQlmd19wcml2LT5mdy0+c2l6ZSA9IDA7CiAJCWZ3X3ByaXYtPmFsbG9jX3NpemUgPSAwOwogCQlzZXRfYml0KEZXX1NUQVRVU19MT0FESU5HLCAmZndfcHJpdi0+c3RhdHVzKTsKLQkJdXAoJmZ3X2xvY2spOworCQltdXRleF91bmxvY2soJmZ3X2xvY2spOwogCQlicmVhazsKIAljYXNlIDA6CiAJCWlmICh0ZXN0X2JpdChGV19TVEFUVVNfTE9BRElORywgJmZ3X3ByaXYtPnN0YXR1cykpIHsKQEAgLTE4NSw3ICsxODUsNyBAQAogCXN0cnVjdCBmaXJtd2FyZSAqZnc7CiAJc3NpemVfdCByZXRfY291bnQgPSBjb3VudDsKIAotCWRvd24oJmZ3X2xvY2spOworCW11dGV4X2xvY2soJmZ3X2xvY2spOwogCWZ3ID0gZndfcHJpdi0+Znc7CiAJaWYgKCFmdyB8fCB0ZXN0X2JpdChGV19TVEFUVVNfRE9ORSwgJmZ3X3ByaXYtPnN0YXR1cykpIHsKIAkJcmV0X2NvdW50ID0gLUVOT0RFVjsKQEAgLTIwMCw3ICsyMDAsNyBAQAogCiAJbWVtY3B5KGJ1ZmZlciwgZnctPmRhdGEgKyBvZmZzZXQsIHJldF9jb3VudCk7CiBvdXQ6Ci0JdXAoJmZ3X2xvY2spOworCW11dGV4X3VubG9jaygmZndfbG9jayk7CiAJcmV0dXJuIHJldF9jb3VudDsKIH0KIApAQCAtMjUzLDcgKzI1Myw3IEBACiAJaWYgKCFjYXBhYmxlKENBUF9TWVNfUkFXSU8pKQogCQlyZXR1cm4gLUVQRVJNOwogCi0JZG93bigmZndfbG9jayk7CisJbXV0ZXhfbG9jaygmZndfbG9jayk7CiAJZncgPSBmd19wcml2LT5mdzsKIAlpZiAoIWZ3IHx8IHRlc3RfYml0KEZXX1NUQVRVU19ET05FLCAmZndfcHJpdi0+c3RhdHVzKSkgewogCQlyZXR2YWwgPSAtRU5PREVWOwpAQCAtMjY4LDcgKzI2OCw3IEBACiAJZnctPnNpemUgPSBtYXhfdChzaXplX3QsIG9mZnNldCArIGNvdW50LCBmdy0+c2l6ZSk7CiAJcmV0dmFsID0gY291bnQ7CiBvdXQ6Ci0JdXAoJmZ3X2xvY2spOworCW11dGV4X3VubG9jaygmZndfbG9jayk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtNDM2LDE0ICs0MzYsMTQgQEAKIAl9IGVsc2UKIAkJd2FpdF9mb3JfY29tcGxldGlvbigmZndfcHJpdi0+Y29tcGxldGlvbik7CiAKLQlkb3duKCZmd19sb2NrKTsKKwltdXRleF9sb2NrKCZmd19sb2NrKTsKIAlpZiAoIWZ3X3ByaXYtPmZ3LT5zaXplIHx8IHRlc3RfYml0KEZXX1NUQVRVU19BQk9SVCwgJmZ3X3ByaXYtPnN0YXR1cykpIHsKIAkJcmV0dmFsID0gLUVOT0VOVDsKIAkJcmVsZWFzZV9maXJtd2FyZShmd19wcml2LT5mdyk7CiAJCSpmaXJtd2FyZV9wID0gTlVMTDsKIAl9CiAJZndfcHJpdi0+ZncgPSBOVUxMOwotCXVwKCZmd19sb2NrKTsKKwltdXRleF91bmxvY2soJmZ3X2xvY2spOwogCWNsYXNzX2RldmljZV91bnJlZ2lzdGVyKGNsYXNzX2Rldik7CiAJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9oeXBlcnZpc29yLmMgYi9kcml2ZXJzL2Jhc2UvaHlwZXJ2aXNvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjODVlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2Jhc2UvaHlwZXJ2aXNvci5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBoeXBlcnZpc29yLmMgLSAvc3lzL2h5cGVydmlzb3Igc3Vic3lzdGVtLgorICoKKyAqIFRoaXMgZmlsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMdjIKKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKworI2luY2x1ZGUgImJhc2UuaCIKKworZGVjbF9zdWJzeXMoaHlwZXJ2aXNvciwgTlVMTCwgTlVMTCk7CitFWFBPUlRfU1lNQk9MX0dQTChoeXBlcnZpc29yX3N1YnN5cyk7CisKK2ludCBfX2luaXQgaHlwZXJ2aXNvcl9pbml0KHZvaWQpCit7CisJcmV0dXJuIHN1YnN5c3RlbV9yZWdpc3RlcigmaHlwZXJ2aXNvcl9zdWJzeXMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2luaXQuYyBiL2RyaXZlcnMvYmFzZS9pbml0LmMKaW5kZXggYzY0ODkxNC4uMzcxMzgxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2luaXQuYworKysgYi9kcml2ZXJzL2Jhc2UvaW5pdC5jCkBAIC0yNyw2ICsyNyw3IEBACiAJYnVzZXNfaW5pdCgpOwogCWNsYXNzZXNfaW5pdCgpOwogCWZpcm13YXJlX2luaXQoKTsKKwloeXBlcnZpc29yX2luaXQoKTsKIAogCS8qIFRoZXNlIGFyZSBhbHNvIGNvcmUgcGllY2VzLCBidXQgbXVzdCBjb21lIGFmdGVyIHRoZQogCSAqIGNvcmUgY29yZSBwaWVjZXMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvaXNhLmMgYi9kcml2ZXJzL2Jhc2UvaXNhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyMjIzOQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvYmFzZS9pc2EuYwpAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIElTQSBidXMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvaXNhLmg+CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlIGlzYV9idXMgPSB7CisJLmJ1c19pZAkJPSAiaXNhIgorfTsKKworc3RydWN0IGlzYV9kZXYgeworCXN0cnVjdCBkZXZpY2UgZGV2OworCXN0cnVjdCBkZXZpY2UgKm5leHQ7CisJdW5zaWduZWQgaW50IGlkOworfTsKKworI2RlZmluZSB0b19pc2FfZGV2KHgpIGNvbnRhaW5lcl9vZigoeCksIHN0cnVjdCBpc2FfZGV2LCBkZXYpCisKK3N0YXRpYyBpbnQgaXNhX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcml2ZXIpCit7CisJc3RydWN0IGlzYV9kcml2ZXIgKmlzYV9kcml2ZXIgPSB0b19pc2FfZHJpdmVyKGRyaXZlcik7CisKKwlpZiAoZGV2LT5wbGF0Zm9ybV9kYXRhID09IGlzYV9kcml2ZXIpIHsKKwkJaWYgKCFpc2FfZHJpdmVyLT5tYXRjaCB8fAorCQkJaXNhX2RyaXZlci0+bWF0Y2goZGV2LCB0b19pc2FfZGV2KGRldiktPmlkKSkKKwkJCXJldHVybiAxOworCQlkZXYtPnBsYXRmb3JtX2RhdGEgPSBOVUxMOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpc2FfYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgaXNhX2RyaXZlciAqaXNhX2RyaXZlciA9IGRldi0+cGxhdGZvcm1fZGF0YTsKKworCWlmIChpc2FfZHJpdmVyLT5wcm9iZSkKKwkJcmV0dXJuIGlzYV9kcml2ZXItPnByb2JlKGRldiwgdG9faXNhX2RldihkZXYpLT5pZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpc2FfYnVzX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGlzYV9kcml2ZXIgKmlzYV9kcml2ZXIgPSBkZXYtPnBsYXRmb3JtX2RhdGE7CisKKwlpZiAoaXNhX2RyaXZlci0+cmVtb3ZlKQorCQlyZXR1cm4gaXNhX2RyaXZlci0+cmVtb3ZlKGRldiwgdG9faXNhX2RldihkZXYpLT5pZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaXNhX2J1c19zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGlzYV9kcml2ZXIgKmlzYV9kcml2ZXIgPSBkZXYtPnBsYXRmb3JtX2RhdGE7CisKKwlpZiAoaXNhX2RyaXZlci0+c2h1dGRvd24pCisJCWlzYV9kcml2ZXItPnNodXRkb3duKGRldiwgdG9faXNhX2RldihkZXYpLT5pZCk7Cit9CisKK3N0YXRpYyBpbnQgaXNhX2J1c19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0cnVjdCBpc2FfZHJpdmVyICppc2FfZHJpdmVyID0gZGV2LT5wbGF0Zm9ybV9kYXRhOworCisJaWYgKGlzYV9kcml2ZXItPnN1c3BlbmQpCisJCXJldHVybiBpc2FfZHJpdmVyLT5zdXNwZW5kKGRldiwgdG9faXNhX2RldihkZXYpLT5pZCwgc3RhdGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaXNhX2J1c19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBpc2FfZHJpdmVyICppc2FfZHJpdmVyID0gZGV2LT5wbGF0Zm9ybV9kYXRhOworCisJaWYgKGlzYV9kcml2ZXItPnJlc3VtZSkKKwkJcmV0dXJuIGlzYV9kcml2ZXItPnJlc3VtZShkZXYsIHRvX2lzYV9kZXYoZGV2KS0+aWQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYnVzX3R5cGUgaXNhX2J1c190eXBlID0geworCS5uYW1lCQk9ICJpc2EiLAorCS5tYXRjaAkJPSBpc2FfYnVzX21hdGNoLAorCS5wcm9iZQkJPSBpc2FfYnVzX3Byb2JlLAorCS5yZW1vdmUJCT0gaXNhX2J1c19yZW1vdmUsCisJLnNodXRkb3duCT0gaXNhX2J1c19zaHV0ZG93biwKKwkuc3VzcGVuZAk9IGlzYV9idXNfc3VzcGVuZCwKKwkucmVzdW1lCQk9IGlzYV9idXNfcmVzdW1lCit9OworCitzdGF0aWMgdm9pZCBpc2FfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCWtmcmVlKHRvX2lzYV9kZXYoZGV2KSk7Cit9CisKK3ZvaWQgaXNhX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBpc2FfZHJpdmVyICppc2FfZHJpdmVyKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlzYV9kcml2ZXItPmRldmljZXM7CisKKwl3aGlsZSAoZGV2KSB7CisJCXN0cnVjdCBkZXZpY2UgKnRtcCA9IHRvX2lzYV9kZXYoZGV2KS0+bmV4dDsKKwkJZGV2aWNlX3VucmVnaXN0ZXIoZGV2KTsKKwkJZGV2ID0gdG1wOworCX0KKwlkcml2ZXJfdW5yZWdpc3RlcigmaXNhX2RyaXZlci0+ZHJpdmVyKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzYV91bnJlZ2lzdGVyX2RyaXZlcik7CisKK2ludCBpc2FfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBpc2FfZHJpdmVyICppc2FfZHJpdmVyLCB1bnNpZ25lZCBpbnQgbmRldikKK3sKKwlpbnQgZXJyb3I7CisJdW5zaWduZWQgaW50IGlkOworCisJaXNhX2RyaXZlci0+ZHJpdmVyLmJ1cwk9ICZpc2FfYnVzX3R5cGU7CisJaXNhX2RyaXZlci0+ZGV2aWNlcwk9IE5VTEw7CisKKwllcnJvciA9IGRyaXZlcl9yZWdpc3RlcigmaXNhX2RyaXZlci0+ZHJpdmVyKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCWZvciAoaWQgPSAwOyBpZCA8IG5kZXY7IGlkKyspIHsKKwkJc3RydWN0IGlzYV9kZXYgKmlzYV9kZXY7CisKKwkJaXNhX2RldiA9IGt6YWxsb2Moc2l6ZW9mICppc2FfZGV2LCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFpc2FfZGV2KSB7CisJCQllcnJvciA9IC1FTk9NRU07CisJCQlicmVhazsKKwkJfQorCisJCWlzYV9kZXYtPmRldi5wYXJlbnQJPSAmaXNhX2J1czsKKwkJaXNhX2Rldi0+ZGV2LmJ1cwk9ICZpc2FfYnVzX3R5cGU7CisKKwkJc25wcmludGYoaXNhX2Rldi0+ZGV2LmJ1c19pZCwgQlVTX0lEX1NJWkUsICIlcy4ldSIsCisJCQkJaXNhX2RyaXZlci0+ZHJpdmVyLm5hbWUsIGlkKTsKKworCQlpc2FfZGV2LT5kZXYucGxhdGZvcm1fZGF0YQk9IGlzYV9kcml2ZXI7CisJCWlzYV9kZXYtPmRldi5yZWxlYXNlCQk9IGlzYV9kZXZfcmVsZWFzZTsKKwkJaXNhX2Rldi0+aWQJCQk9IGlkOworCisJCWVycm9yID0gZGV2aWNlX3JlZ2lzdGVyKCZpc2FfZGV2LT5kZXYpOworCQlpZiAoZXJyb3IpIHsKKwkJCXB1dF9kZXZpY2UoJmlzYV9kZXYtPmRldik7CisJCQlicmVhazsKKwkJfQorCisJCWlmIChpc2FfZGV2LT5kZXYucGxhdGZvcm1fZGF0YSkgeworCQkJaXNhX2Rldi0+bmV4dCA9IGlzYV9kcml2ZXItPmRldmljZXM7CisJCQlpc2FfZHJpdmVyLT5kZXZpY2VzID0gJmlzYV9kZXYtPmRldjsKKwkJfSBlbHNlCisJCQlkZXZpY2VfdW5yZWdpc3RlcigmaXNhX2Rldi0+ZGV2KTsKKwl9CisKKwlpZiAoIWVycm9yICYmICFpc2FfZHJpdmVyLT5kZXZpY2VzKQorCQllcnJvciA9IC1FTk9ERVY7CisKKwlpZiAoZXJyb3IpCisJCWlzYV91bnJlZ2lzdGVyX2RyaXZlcihpc2FfZHJpdmVyKTsKKworCXJldHVybiBlcnJvcjsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzYV9yZWdpc3Rlcl9kcml2ZXIpOworCitzdGF0aWMgaW50IF9faW5pdCBpc2FfYnVzX2luaXQodm9pZCkKK3sKKwlpbnQgZXJyb3I7CisKKwllcnJvciA9IGJ1c19yZWdpc3RlcigmaXNhX2J1c190eXBlKTsKKwlpZiAoIWVycm9yKSB7CisJCWVycm9yID0gZGV2aWNlX3JlZ2lzdGVyKCZpc2FfYnVzKTsKKwkJaWYgKGVycm9yKQorCQkJYnVzX3VucmVnaXN0ZXIoJmlzYV9idXNfdHlwZSk7CisJfQorCXJldHVybiBlcnJvcjsKK30KKworZGV2aWNlX2luaXRjYWxsKGlzYV9idXNfaW5pdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvcGxhdGZvcm0uYyBiL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jCmluZGV4IDgzZjVjNTkuLjJiODc1NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jCisrKyBiL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jCkBAIC0yNzUsNyArMjc1LDcgQEAKIAlwcl9kZWJ1ZygiUmVnaXN0ZXJpbmcgcGxhdGZvcm0gZGV2aWNlICclcycuIFBhcmVudCBhdCAlc1xuIiwKIAkJIHBkZXYtPmRldi5idXNfaWQsIHBkZXYtPmRldi5wYXJlbnQtPmJ1c19pZCk7CiAKLQlyZXQgPSBkZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldik7CisJcmV0ID0gZGV2aWNlX2FkZCgmcGRldi0+ZGV2KTsKIAlpZiAocmV0ID09IDApCiAJCXJldHVybiByZXQ7CiAKQEAgLTQ1Miw2ICs0NTIsMzcgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKTsKIAogCisvKiBtb2RhbGlhcyBzdXBwb3J0IGVuYWJsZXMgbW9yZSBoYW5kcy1vZmYgdXNlcnNwYWNlIHNldHVwOgorICogKGEpIGVudmlyb25tZW50IHZhcmlhYmxlIGxldHMgbmV3LXN0eWxlIGhvdHBsdWcgZXZlbnRzIHdvcmsgb25jZSBzeXN0ZW0gaXMKKyAqICAgICBmdWxseSBydW5uaW5nOiAgIm1vZHByb2JlICRNT0RBTElBUyIKKyAqIChiKSBzeXNmcyBhdHRyaWJ1dGUgbGV0cyBuZXctc3R5bGUgY29sZHBsdWcgcmVjb3ZlciBmcm9tIGhvdHBsdWcgZXZlbnRzCisgKiAgICAgbWlzaGFuZGxlZCBiZWZvcmUgc3lzdGVtIGlzIGZ1bGx5IHJ1bm5pbmc6ICAibW9kcHJvYmUgJChjYXQgbW9kYWxpYXMpIgorICovCitzdGF0aWMgc3NpemVfdAorbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphLCBjaGFyICpidWYpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZQkqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOworCWludCBsZW4gPSBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVzXG4iLCBwZGV2LT5uYW1lKTsKKworCXJldHVybiAobGVuID49IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC0gMSkgOiBsZW47Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBwbGF0Zm9ybV9kZXZfYXR0cnNbXSA9IHsKKwlfX0FUVFJfUk8obW9kYWxpYXMpLAorCV9fQVRUUl9OVUxMLAorfTsKKworc3RhdGljIGludCBwbGF0Zm9ybV91ZXZlbnQoc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICoqZW52cCwgaW50IG51bV9lbnZwLAorCQljaGFyICpidWZmZXIsIGludCBidWZmZXJfc2l6ZSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCSpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CisKKwllbnZwWzBdID0gYnVmZmVyOworCXNucHJpbnRmKGJ1ZmZlciwgYnVmZmVyX3NpemUsICJNT0RBTElBUz0lcyIsIHBkZXYtPm5hbWUpOworCXJldHVybiAwOworfQorCisKIC8qKgogICoJcGxhdGZvcm1fbWF0Y2ggLSBiaW5kIHBsYXRmb3JtIGRldmljZSB0byBwbGF0Zm9ybSBkcml2ZXIuCiAgKglAZGV2OglkZXZpY2UuCkBAIC00OTYsNyArNTI3LDkgQEAKIAogc3RydWN0IGJ1c190eXBlIHBsYXRmb3JtX2J1c190eXBlID0gewogCS5uYW1lCQk9ICJwbGF0Zm9ybSIsCisJLmRldl9hdHRycwk9IHBsYXRmb3JtX2Rldl9hdHRycywKIAkubWF0Y2gJCT0gcGxhdGZvcm1fbWF0Y2gsCisJLnVldmVudAkJPSBwbGF0Zm9ybV91ZXZlbnQsCiAJLnN1c3BlbmQJPSBwbGF0Zm9ybV9zdXNwZW5kLAogCS5yZXN1bWUJCT0gcGxhdGZvcm1fcmVzdW1lLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9wb3dlci9NYWtlZmlsZSBiL2RyaXZlcnMvYmFzZS9wb3dlci9NYWtlZmlsZQppbmRleCBjMDIxOWFkLi5jZWVlYmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcG93ZXIvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9iYXNlL3Bvd2VyL01ha2VmaWxlCkBAIC00LDMgKzQsNiBAQAogaWZlcSAoJChDT05GSUdfREVCVUdfRFJJVkVSKSx5KQogRVhUUkFfQ0ZMQUdTICs9IC1EREVCVUcKIGVuZGlmCitpZmVxICgkKENPTkZJR19QTV9ERUJVRykseSkKK0VYVFJBX0NGTEFHUyArPSAtRERFQlVHCitlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL3Bvd2VyL3N1c3BlbmQuYyBiL2RyaXZlcnMvYmFzZS9wb3dlci9zdXNwZW5kLmMKaW5kZXggMmE3NjljYy4uMWExZmU0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL3Bvd2VyL3N1c3BlbmQuYworKysgYi9kcml2ZXJzL2Jhc2UvcG93ZXIvc3VzcGVuZC5jCkBAIC0yOSw2ICsyOSwxNSBAQAogICogbGlzdHMuIFRoaXMgd2F5LCB0aGUgYW5jZXN0b3JzIHdpbGwgYmUgYWNjZXNzZWQgYmVmb3JlIHRoZWlyIGRlc2NlbmRlbnRzLgogICovCiAKK3N0YXRpYyBpbmxpbmUgY2hhciAqc3VzcGVuZF92ZXJiKHUzMiBldmVudCkKK3sKKwlzd2l0Y2ggKGV2ZW50KSB7CisJY2FzZSBQTV9FVkVOVF9TVVNQRU5EOglyZXR1cm4gInN1c3BlbmQiOworCWNhc2UgUE1fRVZFTlRfRlJFRVpFOglyZXR1cm4gImZyZWV6ZSI7CisJZGVmYXVsdDoJCXJldHVybiAiKHVua25vd24gc3VzcGVuZCBldmVudCkiOworCX0KK30KKwogCiAvKioKICAqCXN1c3BlbmRfZGV2aWNlIC0gU2F2ZSBzdGF0ZSBvZiBvbmUgZGV2aWNlLgpAQCAtNTcsNyArNjYsMTMgQEAKIAlkZXYtPnBvd2VyLnByZXZfc3RhdGUgPSBkZXYtPnBvd2VyLnBvd2VyX3N0YXRlOwogCiAJaWYgKGRldi0+YnVzICYmIGRldi0+YnVzLT5zdXNwZW5kICYmICFkZXYtPnBvd2VyLnBvd2VyX3N0YXRlLmV2ZW50KSB7Ci0JCWRldl9kYmcoZGV2LCAic3VzcGVuZGluZ1xuIik7CisJCWRldl9kYmcoZGV2LCAiJXMlc1xuIiwKKwkJCXN1c3BlbmRfdmVyYihzdGF0ZS5ldmVudCksCisJCQkoKHN0YXRlLmV2ZW50ID09IFBNX0VWRU5UX1NVU1BFTkQpCisJCQkJCSYmIGRldmljZV9tYXlfd2FrZXVwKGRldikpCisJCQkJPyAiLCBtYXkgd2FrZXVwIgorCQkJCTogIiIKKwkJCSk7CiAJCWVycm9yID0gZGV2LT5idXMtPnN1c3BlbmQoZGV2LCBzdGF0ZSk7CiAJCXN1c3BlbmRfcmVwb3J0X3Jlc3VsdChkZXYtPmJ1cy0+c3VzcGVuZCwgZXJyb3IpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9zeXMuYyBiL2RyaXZlcnMvYmFzZS9zeXMuYwppbmRleCA2ZmMyM2FiLi42ODU4MTc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2Uvc3lzLmMKKysrIGIvZHJpdmVycy9iYXNlL3N5cy5jCkBAIC04MCwxMCArODAsNTkgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKHN5c2Rldl9jcmVhdGVfZmlsZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChzeXNkZXZfcmVtb3ZlX2ZpbGUpOwogCisjZGVmaW5lIHRvX3N5c2Rldl9jbGFzcyhrKSBjb250YWluZXJfb2Yoaywgc3RydWN0IHN5c2Rldl9jbGFzcywga3NldC5rb2JqKQorI2RlZmluZSB0b19zeXNkZXZfY2xhc3NfYXR0cihhKSBjb250YWluZXJfb2YoYSwgXAorCXN0cnVjdCBzeXNkZXZfY2xhc3NfYXR0cmlidXRlLCBhdHRyKQorCitzdGF0aWMgc3NpemVfdCBzeXNkZXZfY2xhc3Nfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgY2hhciAqYnVmZmVyKQoreworCXN0cnVjdCBzeXNkZXZfY2xhc3MgKiBjbGFzcyA9IHRvX3N5c2Rldl9jbGFzcyhrb2JqKTsKKwlzdHJ1Y3Qgc3lzZGV2X2NsYXNzX2F0dHJpYnV0ZSAqY2xhc3NfYXR0ciA9IHRvX3N5c2Rldl9jbGFzc19hdHRyKGF0dHIpOworCisJaWYgKGNsYXNzX2F0dHItPnNob3cpCisJCXJldHVybiBjbGFzc19hdHRyLT5zaG93KGNsYXNzLCBidWZmZXIpOworCXJldHVybiAtRUlPOworfQorCitzdGF0aWMgc3NpemVfdCBzeXNkZXZfY2xhc3Nfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisJCQkJICBjb25zdCBjaGFyICpidWZmZXIsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgc3lzZGV2X2NsYXNzICogY2xhc3MgPSB0b19zeXNkZXZfY2xhc3Moa29iaik7CisJc3RydWN0IHN5c2Rldl9jbGFzc19hdHRyaWJ1dGUgKiBjbGFzc19hdHRyID0gdG9fc3lzZGV2X2NsYXNzX2F0dHIoYXR0cik7CisKKwlpZiAoY2xhc3NfYXR0ci0+c3RvcmUpCisJCXJldHVybiBjbGFzc19hdHRyLT5zdG9yZShjbGFzcywgYnVmZmVyLCBjb3VudCk7CisJcmV0dXJuIC1FSU87Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc3lzZnNfb3BzIHN5c2ZzX2NsYXNzX29wcyA9IHsKKwkuc2hvdwk9IHN5c2Rldl9jbGFzc19zaG93LAorCS5zdG9yZQk9IHN5c2Rldl9jbGFzc19zdG9yZSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qga29ial90eXBlIGt0eXBlX3N5c2Rldl9jbGFzcyA9IHsKKwkuc3lzZnNfb3BzCT0gJnN5c2ZzX2NsYXNzX29wcywKK307CisKK2ludCBzeXNkZXZfY2xhc3NfY3JlYXRlX2ZpbGUoc3RydWN0IHN5c2Rldl9jbGFzcyAqYywKKwkJCSAgICAgc3RydWN0IHN5c2Rldl9jbGFzc19hdHRyaWJ1dGUgKmEpCit7CisJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlKCZjLT5rc2V0LmtvYmosICZhLT5hdHRyKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHN5c2Rldl9jbGFzc19jcmVhdGVfZmlsZSk7CisKK3ZvaWQgc3lzZGV2X2NsYXNzX3JlbW92ZV9maWxlKHN0cnVjdCBzeXNkZXZfY2xhc3MgKmMsCisJCQkgICAgICBzdHJ1Y3Qgc3lzZGV2X2NsYXNzX2F0dHJpYnV0ZSAqYSkKK3sKKwlzeXNmc19yZW1vdmVfZmlsZSgmYy0+a3NldC5rb2JqLCAmYS0+YXR0cik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChzeXNkZXZfY2xhc3NfcmVtb3ZlX2ZpbGUpOworCiAvKgogICogZGVjbGFyZSBzeXN0ZW1fc3Vic3lzCiAgKi8KLXN0YXRpYyBkZWNsX3N1YnN5cyhzeXN0ZW0sICZrdHlwZV9zeXNkZXYsIE5VTEwpOworc3RhdGljIGRlY2xfc3Vic3lzKHN5c3RlbSwgJmt0eXBlX3N5c2Rldl9jbGFzcywgTlVMTCk7CiAKIGludCBzeXNkZXZfY2xhc3NfcmVnaXN0ZXIoc3RydWN0IHN5c2Rldl9jbGFzcyAqIGNscykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svREFDOTYwLmMgYi9kcml2ZXJzL2Jsb2NrL0RBQzk2MC5jCmluZGV4IDQ1YmNkYTUuLmRkOGExNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svREFDOTYwLmMKKysrIGIvZHJpdmVycy9ibG9jay9EQUM5NjAuYwpAQCAtMTcsOCArMTcsOCBAQAogKi8KIAogCi0jZGVmaW5lIERBQzk2MF9Ecml2ZXJWZXJzaW9uCQkJIjIuNS40NyIKLSNkZWZpbmUgREFDOTYwX0RyaXZlckRhdGUJCQkiMTQgTm92ZW1iZXIgMjAwMiIKKyNkZWZpbmUgREFDOTYwX0RyaXZlclZlcnNpb24JCQkiMi41LjQ4IgorI2RlZmluZSBEQUM5NjBfRHJpdmVyRGF0ZQkJCSIxNCBNYXkgMjAwNiIKIAogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CkBAIC00NzgwLDE1ICs0NzgwLDE2IEBACiAJICAgICAgKE5ld1BoeXNpY2FsRGV2aWNlSW5mby0+TG9naWNhbFVuaXQgIT0KIAkgICAgICAgUGh5c2ljYWxEZXZpY2VJbmZvLT5Mb2dpY2FsVW5pdCkpCiAJICAgIHsKLQkgICAgICBQaHlzaWNhbERldmljZUluZm8gPSAoREFDOTYwX1YyX1BoeXNpY2FsRGV2aWNlSW5mb19UICopCisJICAgICAgUGh5c2ljYWxEZXZpY2VJbmZvID0KIAkJa21hbGxvYyhzaXplb2YoREFDOTYwX1YyX1BoeXNpY2FsRGV2aWNlSW5mb19UKSwgR0ZQX0FUT01JQyk7CiAJICAgICAgSW5xdWlyeVVuaXRTZXJpYWxOdW1iZXIgPQotCQkoREFDOTYwX1NDU0lfSW5xdWlyeV9Vbml0U2VyaWFsTnVtYmVyX1QgKikKIAkJICBrbWFsbG9jKHNpemVvZihEQUM5NjBfU0NTSV9JbnF1aXJ5X1VuaXRTZXJpYWxOdW1iZXJfVCksCiAJCQkgIEdGUF9BVE9NSUMpOwotCSAgICAgIGlmIChJbnF1aXJ5VW5pdFNlcmlhbE51bWJlciA9PSBOVUxMICYmCi0JCSAgUGh5c2ljYWxEZXZpY2VJbmZvICE9IE5VTEwpCisJICAgICAgaWYgKElucXVpcnlVbml0U2VyaWFsTnVtYmVyID09IE5VTEwgfHwKKwkJICBQaHlzaWNhbERldmljZUluZm8gPT0gTlVMTCkKIAkJeworCQkgIGtmcmVlKElucXVpcnlVbml0U2VyaWFsTnVtYmVyKTsKKwkJICBJbnF1aXJ5VW5pdFNlcmlhbE51bWJlciA9IE5VTEw7CiAJCSAga2ZyZWUoUGh5c2ljYWxEZXZpY2VJbmZvKTsKIAkJICBQaHlzaWNhbERldmljZUluZm8gPSBOVUxMOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL0tjb25maWcgYi9kcml2ZXJzL2Jsb2NrL0tjb25maWcKaW5kZXggYWUwOTQ5Yi4uOTNkOTQ3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9LY29uZmlnCisrKyBiL2RyaXZlcnMvYmxvY2svS2NvbmZpZwpAQCAtNDAyLDYgKzQwMiw3IEBACiAKIGNvbmZpZyBCTEtfREVWX0lOSVRSRAogCWJvb2wgIkluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gYW5kIFJBTSBkaXNrIChpbml0cmFtZnMvaW5pdHJkKSBzdXBwb3J0IgorCWRlcGVuZHMgb24gQlJPS0VOIHx8ICFGUlYKIAloZWxwCiAJICBUaGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpcyBhIHJhbWZzIHdoaWNoIGlzIGxvYWRlZCBieSB0aGUKIAkgIGJvb3QgbG9hZGVyIChsb2FkbGluIG9yIGxpbG8pIGFuZCB0aGF0IGlzIG1vdW50ZWQgYXMgcm9vdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9jY2lzcy5jIGIvZHJpdmVycy9ibG9jay9jY2lzcy5jCmluZGV4IDEzMTlkOGYuLjI1YzNjNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svY2Npc3MuYworKysgYi9kcml2ZXJzL2Jsb2NrL2NjaXNzLmMKQEAgLTMyMzcsNiArMzIzNyw3IEBACiAJCWRpc2stPmZvcHMgPSAmY2Npc3NfZm9wczsKIAkJZGlzay0+cXVldWUgPSBxOwogCQlkaXNrLT5wcml2YXRlX2RhdGEgPSBkcnY7CisJCWRpc2stPmRyaXZlcmZzX2RldiA9ICZwZGV2LT5kZXY7CiAJCS8qIHdlIG11c3QgcmVnaXN0ZXIgdGhlIGNvbnRyb2xsZXIgZXZlbiBpZiBubyBkaXNrcyBleGlzdCAqLwogCQkvKiB0aGlzIGlzIGZvciB0aGUgb25saW5lIGFycmF5IHV0aWxpdGllcyAqLwogCQlpZighZHJ2LT5oZWFkcyAmJiBqKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9jY2lzc19zY3NpLmMgYi9kcml2ZXJzL2Jsb2NrL2NjaXNzX3Njc2kuYwppbmRleCA1OTdjMDA3Li5hZmRmZjMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2NjaXNzX3Njc2kuYworKysgYi9kcml2ZXJzL2Jsb2NrL2NjaXNzX3Njc2kuYwpAQCAtNTc4LDcgKzU3OCw3IEBACiAKIAlpZiAoY21kLT51c2Vfc2cpIHsKIAkJcGNpX3VubWFwX3NnKGN0bHItPnBkZXYsCi0JCQljbWQtPmJ1ZmZlciwgY21kLT51c2Vfc2csCisJCQljbWQtPnJlcXVlc3RfYnVmZmVyLCBjbWQtPnVzZV9zZywKIAkJCQljbWQtPnNjX2RhdGFfZGlyZWN0aW9uKTsgCiAJfQogCWVsc2UgaWYgKGNtZC0+cmVxdWVzdF9idWZmbGVuKSB7CkBAIC0xMjEwLDcgKzEyMTAsNyBAQAogCQlzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpCiB7CiAJdW5zaWduZWQgaW50IHVzZV9zZywgbnNlZ3M9MCwgbGVuOwotCXN0cnVjdCBzY2F0dGVybGlzdCAqc2NhdHRlciA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKikgY21kLT5idWZmZXI7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzY2F0dGVyID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKSBjbWQtPnJlcXVlc3RfYnVmZmVyOwogCV9fdTY0IGFkZHI2NDsKIAogCS8qIGlzIGl0IGp1c3Qgb25lIHZpcnR1YWwgYWRkcmVzcz8gKi8JCkBAIC0xMjMyLDcgKzEyMzIsNyBAQAogCX0gLyogZWxzZSwgbXVzdCBiZSBhIGxpc3Qgb2YgdmlydHVhbCBhZGRyZXNzZXMuLi4uICovCiAJZWxzZSBpZiAoY21kLT51c2Vfc2cgPD0gTUFYU0dFTlRSSUVTKSB7CS8qIG5vdCB0b28gbWFueSBhZGRycz8gKi8KIAotCQl1c2Vfc2cgPSBwY2lfbWFwX3NnKHBkZXYsIGNtZC0+YnVmZmVyLCBjbWQtPnVzZV9zZywgCisJCXVzZV9zZyA9IHBjaV9tYXBfc2cocGRldiwgY21kLT5yZXF1ZXN0X2J1ZmZlciwgY21kLT51c2Vfc2csCiAJCQljbWQtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAogCQlmb3IgKG5zZWdzPTA7IG5zZWdzIDwgdXNlX3NnOyBuc2VncysrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCmluZGV4IDljM2I5NGUuLjNjNzRlYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBAIC04MTgsNyArODE4LDcgQEAKIAlsby0+bG9fZGV2aWNlID0gYmRldjsKIAlsby0+bG9fZmxhZ3MgPSBsb19mbGFnczsKIAlsby0+bG9fYmFja2luZ19maWxlID0gZmlsZTsKLQlsby0+dHJhbnNmZXIgPSBOVUxMOworCWxvLT50cmFuc2ZlciA9IHRyYW5zZmVyX25vbmU7CiAJbG8tPmlvY3RsID0gTlVMTDsKIAlsby0+bG9fc2l6ZWxpbWl0ID0gMDsKIAlsby0+b2xkX2dmcF9tYXNrID0gbWFwcGluZ19nZnBfbWFzayhtYXBwaW5nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdWIuYyBiL2RyaXZlcnMvYmxvY2svdWIuYwppbmRleCBjNjg4YzI1Li42MGU5YTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3ViLmMKKysrIGIvZHJpdmVycy9ibG9jay91Yi5jCkBAIC0xMCwxNyArMTAsMTMgQEAKICAqIFRPRE8gKHNvcnRlZCBieSBkZWNyZWFzaW5nIHByaW9yaXR5KQogICogIC0tIHNldCByZWFkb25seSBmbGFnIGZvciBDRHMsIHNldCByZW1vdmFibGUgZmxhZyBmb3IgQ0YgcmVhZGVycwogICogIC0tIGRvIGlucXVpcnkgYW5kIHZlcmlmeSB3ZSBnb3QgYSBkaXNrIGFuZCBub3QgYSB0YXBlIChmb3IgTFVOIG1pc21hdGNoKQotICogIC0tIHNwZWNpYWwgY2FzZSBzb21lIHNlbnNlcywgZS5nLiAzYS8wIC0+IG5vIG1lZGlhIHByZXNlbnQsIHJlZHVjZSByZXRyaWVzCiAgKiAgLS0gdmVyaWZ5IHRoZSAxMyBjb25kaXRpb25zIGFuZCBkbyBidWxrIHJlc2V0cwotICogIC0tIGtpbGwgbGFzdF9waXBlIGFuZCBzaW1wbHkgZG8gdHdvLXN0YXRlIGNsZWFyaW5nIG9uIGJvdGggcGlwZXMKICAqICAtLSBoaWdobWVtCiAgKiAgLS0gbW92ZSB0b3Bfc2Vuc2UgYW5kIHdvcmtfYmNzIGludG8gc2VwYXJhdGUgYWxsb2NhdGlvbnMgKGlmIHRoZXkgc3Vydml2ZSkKICAqICAgICBmb3IgY2FjaGUgcHVyaXN0cyBhbmQgZXNvdGVyaWMgYXJjaGl0ZWN0dXJlcy4KICAqICAtLSBBbGxvY2F0ZSBzdHJ1Y3R1cmUgZm9yIExVTiAwIGJlZm9yZSB0aGUgZmlyc3QgdWJfc3luY190dXIsIGF2b2lkIE5VTEwuID8KICAqICAtLSBwcnVuZSBjb21tZW50cywgdGhleSBhcmUgdG9vIHZvbHVtbm91cwotICogIC0tIEV4dGVybWluYXRlIFAzIHByaW50a3MKICAqICAtLSBSZXNvdmUgWFhYJ3MKLSAqICAtLSBSZWRvICJiZW5oJ3MgcmV0cmllcyIsIHBlcmhhcHMgaGF2ZSBzcGluLXVwIGNvZGUgdG8gaGFuZGxlIHRoZW0uIFY6RD0/CiAgKiAgLS0gQ0xFQVIsIENMUjJTVFMsIENMUlJTIHNlZW0gdG8gYmUgcmlwZSBmb3IgcmVmYWN0b3JpbmcuCiAgKi8KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KQEAgLTE4MCw3ICsxNzYsNiBAQAogI2RlZmluZSBVQl9ESVJfSUxMRUdBTDIJMgogI2RlZmluZSBVQl9ESVJfV1JJVEUJMwogCi0vKiBQMyAqLwogI2RlZmluZSBVQl9ESVJfQ0hBUihjKSAgKCgoYyk9PVVCX0RJUl9XUklURSk/ICd3JzogXAogCQkJICgoKGMpPT1VQl9ESVJfUkVBRCk/ICdyJzogJ24nKSkKIApAQCAtNjY5LDggKzY2NCw5IEBACiAJICovCiAJbl9lbGVtID0gYmxrX3JxX21hcF9zZyhsdW4tPmRpc2stPnF1ZXVlLCBycSwgJnVycS0+c2d2WzBdKTsKIAlpZiAobl9lbGVtIDwgMCkgeworCQkvKiBJbXBvc3NpYmxlLCBiZWNhdXNlIGJsa19ycV9tYXBfc2cgc2hvdWxkIG5vdCBoaXQgRU5PTUVNLiAqLwogCQlwcmludGsoS0VSTl9JTkZPICIlczogZmFpbGVkIHJlcXVlc3QgbWFwICglZClcbiIsCi0JCSAgICBsdW4tPm5hbWUsIG5fZWxlbSk7IC8qIFAzICovCisJCSAgICBsdW4tPm5hbWUsIG5fZWxlbSk7CiAJCWdvdG8gZHJvcDsKIAl9CiAJaWYgKG5fZWxlbSA+IFVCX01BWF9SRVFfU0cpIHsJLyogUGFyYW5vaWEgKi8KQEAgLTgyNCw3ICs4MjAsOSBAQAogCWlmICh1cnEtPmN1cnJlbnRfdHJ5ID49IDMpCiAJCXJldHVybiAtRUlPOwogCXVycS0+Y3VycmVudF90cnkrKzsKLQkvKiBQMyAqLyBwcmludGsoIiVzOiBkaXIgJWMgbGVuL2FjdCAlZC8lZCAiCisKKwkvKiBSZW1vdmUgdGhpcyBpZiBhbnlvbmUgY29tcGxhaW5zIG9mIGZsb29kaW5nLiAqLworCXByaW50ayhLRVJOX0RFQlVHICIlczogZGlyICVjIGxlbi9hY3QgJWQvJWQgIgogCSAgICAiW3NlbnNlICV4ICUwMnggJTAyeF0gcmV0cnkgJWRcbiIsCiAJICAgIHNjLT5uYW1lLCBVQl9ESVJfQ0hBUihjbWQtPmRpciksIGNtZC0+bGVuLCBjbWQtPmFjdF9sZW4sCiAJICAgIGNtZC0+a2V5LCBjbWQtPmFzYywgY21kLT5hc2NxLCB1cnEtPmN1cnJlbnRfdHJ5KTsKQEAgLTEyNDEsOCArMTIzOSw2IEBACiAJCQkgKiB0byBjaGVjay4gQnV0IGl0J3Mgbm90IGFsbCByaWdodCBpZiB0aGUgZGV2aWNlCiAJCQkgKiBjb3VudHMgZGlzYWdyZWUgd2l0aCBvdXIgY291bnRzLgogCQkJICovCi0JCQkvKiBQMyAqLyBwcmludGsoIiVzOiByZXNpZCAlZCBsZW4gJWQgYWN0ICVkXG4iLAotCQkJICAgIHNjLT5uYW1lLCBsZW4sIGNtZC0+bGVuLCBjbWQtPmFjdF9sZW4pOwogCQkJZ290byBCYWRfRW5kOwogCQl9CiAKQEAgLTEyNTMsNyArMTI0OSw2IEBACiAJCQl1Yl9zdGF0ZV9zZW5zZShzYywgY21kKTsKIAkJCXJldHVybjsKIAkJY2FzZSBVU19CVUxLX1NUQVRfUEhBU0U6Ci0JCQkvKiBQMyAqLyBwcmludGsoIiVzOiBzdGF0dXMgUEhBU0VcbiIsIHNjLT5uYW1lKTsKIAkJCWdvdG8gQmFkX0VuZDsKIAkJZGVmYXVsdDoKIAkJCXByaW50ayhLRVJOX0lORk8gIiVzOiB1bmtub3duIENTVyBzdGF0dXMgMHgleFxuIiwKQEAgLTE1NjgsMTYgKzE1NjMsMTQgQEAKIAl9CiAKIAlpZiAoYXRvbWljX3JlYWQoJnNjLT5wb2lzb24pKSB7Ci0JCXByaW50ayhLRVJOX05PVElDRSAiJXM6IE5vdCByZXNldHRpbmcgZGlzY29ubmVjdGVkIGRldmljZVxuIiwKLQkJICAgIHNjLT5uYW1lKTsgLyogUDMgVGhpcyBmbG9vZHMuIFJlbW92ZSBzb29uLiBYWFggKi8KKwkJOwogCX0gZWxzZSBpZiAoKHNjLT5yZXNldCAmIDEpID09IDApIHsKIAkJdWJfc3luY19yZXNldChzYyk7CiAJCW1zbGVlcCg3MDApOwkvKiB1c2Itc3RvcmFnZSBzbGVlcHMgNnMgKCEpICovCiAJCXViX3Byb2JlX2NsZWFyX3N0YWxsKHNjLCBzYy0+cmVjdl9idWxrX3BpcGUpOwogCQl1Yl9wcm9iZV9jbGVhcl9zdGFsbChzYywgc2MtPnNlbmRfYnVsa19waXBlKTsKIAl9IGVsc2UgaWYgKHNjLT5kZXYtPmFjdGNvbmZpZy0+ZGVzYy5iTnVtSW50ZXJmYWNlcyAhPSAxKSB7Ci0JCXByaW50ayhLRVJOX05PVElDRSAiJXM6IE5vdCByZXNldHRpbmcgbXVsdGktaW50ZXJmYWNlIGRldmljZVxuIiwKLQkJICAgIHNjLT5uYW1lKTsgLyogUDMgVGhpcyBmbG9vZHMuIFJlbW92ZSBzb29uLiBYWFggKi8KKwkJOwogCX0gZWxzZSB7CiAJCWlmICgobGtyID0gdXNiX2xvY2tfZGV2aWNlX2Zvcl9yZXNldChzYy0+ZGV2LCBzYy0+aW50ZikpIDwgMCkgewogCQkJcHJpbnRrKEtFUk5fTk9USUNFCkBAIC0xNjUxLDE1ICsxNjQ0LDExIEBACiBzdGF0aWMgaW50IHViX2JkX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiB7CiAJc3RydWN0IGdlbmRpc2sgKmRpc2sgPSBpbm9kZS0+aV9iZGV2LT5iZF9kaXNrOwotCXN0cnVjdCB1Yl9sdW4gKmx1bjsKLQlzdHJ1Y3QgdWJfZGV2ICpzYzsKKwlzdHJ1Y3QgdWJfbHVuICpsdW4gPSBkaXNrLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IHViX2RldiAqc2MgPSBsdW4tPnVkZXY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmM7CiAKLQlpZiAoKGx1biA9IGRpc2stPnByaXZhdGVfZGF0YSkgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTlhJTzsKLQlzYyA9IGx1bi0+dWRldjsKLQogCXNwaW5fbG9ja19pcnFzYXZlKCZ1Yl9sb2NrLCBmbGFncyk7CiAJaWYgKGF0b21pY19yZWFkKCZzYy0+cG9pc29uKSkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1Yl9sb2NrLCBmbGFncyk7CkBAIC0xODIzLDEwICsxODEyLDggQEAKIAlyYyA9IHViX3N1Ym1pdF9zY3NpKHNjLCBjbWQpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2MtPmxvY2ssIGZsYWdzKTsKIAotCWlmIChyYyAhPSAwKSB7Ci0JCXByaW50aygidWI6IHRlc3RpbmcgcmVhZHk6IHN1Ym1pdCBlcnJvciAoJWQpXG4iLCByYyk7IC8qIFAzICovCisJaWYgKHJjICE9IDApCiAJCWdvdG8gZXJyX3N1Ym1pdDsKLQl9CiAKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjb21wbCk7CiAKQEAgLTE4ODQsMjAgKzE4NzEsMTYgQEAKIAlyYyA9IHViX3N1Ym1pdF9zY3NpKHNjLCBjbWQpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2MtPmxvY2ssIGZsYWdzKTsKIAotCWlmIChyYyAhPSAwKSB7Ci0JCXByaW50aygidWI6IHJlYWRpbmcgY2FwYWNpdHk6IHN1Ym1pdCBlcnJvciAoJWQpXG4iLCByYyk7IC8qIFAzICovCisJaWYgKHJjICE9IDApCiAJCWdvdG8gZXJyX3N1Ym1pdDsKLQl9CiAKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjb21wbCk7CiAKIAlpZiAoY21kLT5lcnJvciAhPSAwKSB7Ci0JCXByaW50aygidWI6IHJlYWRpbmcgY2FwYWNpdHk6IGVycm9yICVkXG4iLCBjbWQtPmVycm9yKTsgLyogUDMgKi8KIAkJcmMgPSAtRUlPOwogCQlnb3RvIGVycl9yZWFkOwogCX0KIAlpZiAoY21kLT5hY3RfbGVuICE9IDgpIHsKLQkJcHJpbnRrKCJ1YjogcmVhZGluZyBjYXBhY2l0eTogc2l6ZSAlZFxuIiwgY21kLT5hY3RfbGVuKTsgLyogUDMgKi8KIAkJcmMgPSAtRUlPOwogCQlnb3RvIGVycl9yZWFkOwogCX0KQEAgLTE5MTEsNyArMTg5NCw2IEBACiAJY2FzZSAyMDQ4OglzaGlmdCA9IDI7CWJyZWFrOwogCWNhc2UgNDA5NjoJc2hpZnQgPSAzOwlicmVhazsKIAlkZWZhdWx0OgotCQlwcmludGsoInViOiBCYWQgc2VjdG9yIHNpemUgJXVcbiIsIGJzaXplKTsgLyogUDMgKi8KIAkJcmMgPSAtRURPTTsKIAkJZ290byBlcnJfaW52X2JzaXplOwogCX0KQEAgLTIwMjMsMTcgKzIwMDUsOCBAQAogCXNjLT53b3JrX3VyYi5lcnJvcl9jb3VudCA9IDA7CiAJc2MtPndvcmtfdXJiLnN0YXR1cyA9IDA7CiAKLQlpZiAoKHJjID0gdXNiX3N1Ym1pdF91cmIoJnNjLT53b3JrX3VyYiwgR0ZQX0tFUk5FTCkpICE9IDApIHsKLQkJaWYgKHJjID09IC1FUElQRSkgewotCQkJcHJpbnRrKCIlczogU3RhbGwgc3VibWl0dGluZyBHZXRNYXhMVU4sIHVzaW5nIDEgTFVOXG4iLAotCQkJICAgICBzYy0+bmFtZSk7IC8qIFAzICovCi0JCX0gZWxzZSB7Ci0JCQlwcmludGsoS0VSTl9OT1RJQ0UKLQkJCSAgICAgIiVzOiBVbmFibGUgdG8gc3VibWl0IEdldE1heExVTiAoJWQpXG4iLAotCQkJICAgICBzYy0+bmFtZSwgcmMpOwotCQl9CisJaWYgKChyYyA9IHVzYl9zdWJtaXRfdXJiKCZzYy0+d29ya191cmIsIEdGUF9LRVJORUwpKSAhPSAwKQogCQlnb3RvIGVycl9zdWJtaXQ7Ci0JfQogCiAJaW5pdF90aW1lcigmdGltZXIpOwogCXRpbWVyLmZ1bmN0aW9uID0gdWJfcHJvYmVfdGltZW91dDsKQEAgLTIwNDYsMjEgKzIwMTksMTAgQEAKIAlkZWxfdGltZXJfc3luYygmdGltZXIpOwogCXVzYl9raWxsX3VyYigmc2MtPndvcmtfdXJiKTsKIAotCWlmICgocmMgPSBzYy0+d29ya191cmIuc3RhdHVzKSA8IDApIHsKLQkJaWYgKHJjID09IC1FUElQRSkgewotCQkJcHJpbnRrKCIlczogU3RhbGwgYXQgR2V0TWF4TFVOLCB1c2luZyAxIExVTlxuIiwKLQkJCSAgICAgc2MtPm5hbWUpOyAvKiBQMyAqLwotCQl9IGVsc2UgewotCQkJcHJpbnRrKEtFUk5fTk9USUNFCi0JCQkgICAgICIlczogRXJyb3IgYXQgR2V0TWF4TFVOICglZClcbiIsCi0JCQkgICAgIHNjLT5uYW1lLCByYyk7Ci0JCX0KKwlpZiAoKHJjID0gc2MtPndvcmtfdXJiLnN0YXR1cykgPCAwKQogCQlnb3RvIGVycl9pbzsKLQl9CiAKIAlpZiAoc2MtPndvcmtfdXJiLmFjdHVhbF9sZW5ndGggIT0gMSkgewotCQlwcmludGsoIiVzOiBHZXRNYXhMVU4gcmV0dXJuZWQgJWQgYnl0ZXNcbiIsIHNjLT5uYW1lLAotCQkgICAgc2MtPndvcmtfdXJiLmFjdHVhbF9sZW5ndGgpOyAvKiBQMyAqLwogCQlubHVucyA9IDA7CiAJfSBlbHNlIHsKIAkJaWYgKChubHVucyA9ICpwKSA9PSA1NSkgewpAQCAtMjA3MSw4ICsyMDMzLDYgQEAKIAkJCWlmIChubHVucyA+IFVCX01BWF9MVU5TKQogCQkJCW5sdW5zID0gVUJfTUFYX0xVTlM7CiAJCX0KLQkJcHJpbnRrKCIlczogR2V0TWF4TFVOIHJldHVybmVkICVkLCB1c2luZyAlZCBMVU5zXG4iLCBzYy0+bmFtZSwKLQkJICAgICpwLCBubHVucyk7IC8qIFAzICovCiAJfQogCiAJa2ZyZWUocCk7CkBAIC0yMjcwLDcgKzIyMzAsNyBAQAogCSAqIGhhcyB0byBzdWNjZWVkLCBzbyB3ZSBjbGVhciBjaGVja3Mgd2l0aCBhbiBhZGRpdGlvbmFsIG9uZSBoZXJlLgogCSAqIEluIGFueSBjYXNlIGl0J3Mgbm90IG91ciBidXNpbmVzcyBob3cgcmV2YWxpYWRhdGlvbiBpcyBpbXBsZW1lbnRlZC4KIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CS8qIFJldHJpZXMgZm9yIGJlbmgncyBrZXkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7ICAvKiBSZXRyaWVzIGZvciB0aGUgc2Nod2FnIGtleSBmcm9tIEtTJzA0ICovCiAJCWlmICgocmMgPSB1Yl9zeW5jX3R1cihzYywgTlVMTCkpIDw9IDApIGJyZWFrOwogCQlpZiAocmMgIT0gMHg2KSBicmVhazsKIAkJbXNsZWVwKDEwKTsKQEAgLTIzMTgsNyArMjI3OCw2IEBACiAJCWdvdG8gZXJyX2lkOwogCiAJbHVuLT51ZGV2ID0gc2M7Ci0JbGlzdF9hZGQoJmx1bi0+bGluaywgJnNjLT5sdW5zKTsKIAogCXNucHJpbnRmKGx1bi0+bmFtZSwgMTYsIERSVl9OQU1FICIlYyglZC4lZC4lZCkiLAogCSAgICBsdW4tPmlkICsgJ2EnLCBzYy0+ZGV2LT5idXMtPmJ1c251bSwgc2MtPmRldi0+ZGV2bnVtLCBsdW4tPm51bSk7CkBAIC0yMzMxLDcgKzIyOTAsNiBAQAogCWlmICgoZGlzayA9IGFsbG9jX2Rpc2soVUJfUEFSVFNfUEVSX0xVTikpID09IE5VTEwpCiAJCWdvdG8gZXJyX2Rpc2thbGxvYzsKIAotCWx1bi0+ZGlzayA9IGRpc2s7CiAJc3ByaW50ZihkaXNrLT5kaXNrX25hbWUsIERSVl9OQU1FICIlYyIsIGx1bi0+aWQgKyAnYScpOwogCXNwcmludGYoZGlzay0+ZGV2ZnNfbmFtZSwgREVWRlNfTkFNRSAiLyVjIiwgbHVuLT5pZCArICdhJyk7CiAJZGlzay0+bWFqb3IgPSBVQl9NQUpPUjsKQEAgLTIzNTMsNyArMjMxMSw5IEBACiAJYmxrX3F1ZXVlX21heF9zZWN0b3JzKHEsIFVCX01BWF9TRUNUT1JTKTsKIAlibGtfcXVldWVfaGFyZHNlY3Rfc2l6ZShxLCBsdW4tPmNhcGFjaXR5LmJzaXplKTsKIAorCWx1bi0+ZGlzayA9IGRpc2s7CiAJcS0+cXVldWVkYXRhID0gbHVuOworCWxpc3RfYWRkKCZsdW4tPmxpbmssICZzYy0+bHVucyk7CiAKIAlzZXRfY2FwYWNpdHkoZGlzaywgbHVuLT5jYXBhY2l0eS5uc2VjKTsKIAlpZiAobHVuLT5yZW1vdmFibGUpCkBAIC0yMzY2LDcgKzIzMjYsNiBAQAogZXJyX2Jsa3Fpbml0OgogCXB1dF9kaXNrKGRpc2spOwogZXJyX2Rpc2thbGxvYzoKLQlsaXN0X2RlbCgmbHVuLT5saW5rKTsKIAl1Yl9pZF9wdXQobHVuLT5pZCk7CiBlcnJfaWQ6CiAJa2ZyZWUobHVuKTsKQEAgLTIzNzksNyArMjMzOCw2IEBACiAJc3RydWN0IHViX2RldiAqc2MgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwogCXN0cnVjdCBsaXN0X2hlYWQgKnA7CiAJc3RydWN0IHViX2x1biAqbHVuOwotCXN0cnVjdCBnZW5kaXNrICpkaXNrOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkvKgpAQCAtMjQzNSw5ICsyMzkzLDcgQEAKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoIChwLCAmc2MtPmx1bnMpIHsKIAkJbHVuID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgdWJfbHVuLCBsaW5rKTsKLQkJZGlzayA9IGx1bi0+ZGlzazsKLQkJaWYgKGRpc2stPmZsYWdzICYgR0VOSERfRkxfVVApCi0JCQlkZWxfZ2VuZGlzayhkaXNrKTsKKwkJZGVsX2dlbmRpc2sobHVuLT5kaXNrKTsKIAkJLyoKIAkJICogSSB3aXNoIEkgY291bGQgZG86CiAJCSAqICAgIHNldF9iaXQoUVVFVUVfRkxBR19ERUFELCAmcS0+cXVldWVfZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay92aW9kYXNkLmMgYi9kcml2ZXJzL2Jsb2NrL3Zpb2Rhc2QuYwppbmRleCBmNjNlMDdiLi5iMGRmNGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3Zpb2Rhc2QuYworKysgYi9kcml2ZXJzL2Jsb2NrL3Zpb2Rhc2QuYwpAQCAtNzQ3LDcgKzc0Nyw3IEBACiAgKiBzdXBwb3J0LgogICovCiBzdGF0aWMgc3RydWN0IHZpb19kZXZpY2VfaWQgdmlvZGFzZF9kZXZpY2VfdGFibGVbXSBfX2RldmluaXRkYXRhID0gewotCXsgInZpb2Rhc2QiLCAiIiB9LAorCXsgImJsb2NrIiwgIklCTSxpU2VyaWVzLXZpb2Rhc2QiIH0sCiAJeyAiIiwgIiIgfQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodmlvLCB2aW9kYXNkX2RldmljZV90YWJsZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nkcm9tL3Zpb2NkLmMgYi9kcml2ZXJzL2Nkcm9tL3Zpb2NkLmMKaW5kZXggYzBmODE3Yi4uYWY2YjNiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jZHJvbS92aW9jZC5jCisrKyBiL2RyaXZlcnMvY2Ryb20vdmlvY2QuYwpAQCAtNzMxLDcgKzczMSw3IEBACiAgKiBzdXBwb3J0LgogICovCiBzdGF0aWMgc3RydWN0IHZpb19kZXZpY2VfaWQgdmlvY2RfZGV2aWNlX3RhYmxlW10gX19kZXZpbml0ZGF0YSA9IHsKLQl7ICJ2aW9jZCIsICIiIH0sCisJeyAiYmxvY2siLCAiSUJNLGlTZXJpZXMtdmlvY2QiIH0sCiAJeyAiIiwgIiIgfQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodmlvLCB2aW9jZF9kZXZpY2VfdGFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2FncC9LY29uZmlnIGIvZHJpdmVycy9jaGFyL2FncC9LY29uZmlnCmluZGV4IDdjODhjMDYuLjQ2Njg1YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9hZ3AvS2NvbmZpZworKysgYi9kcml2ZXJzL2NoYXIvYWdwL0tjb25maWcKQEAgLTEsNyArMSw2IEBACiBjb25maWcgQUdQCi0JdHJpc3RhdGUgIi9kZXYvYWdwZ2FydCAoQUdQIFN1cHBvcnQpIiBpZiAhR0FSVF9JT01NVQorCXRyaXN0YXRlICIvZGV2L2FncGdhcnQgKEFHUCBTdXBwb3J0KSIKIAlkZXBlbmRzIG9uIEFMUEhBIHx8IElBNjQgfHwgUFBDIHx8IFg4NgotCWRlZmF1bHQgeSBpZiBHQVJUX0lPTU1VCiAJLS0taGVscC0tLQogCSAgQUdQIChBY2NlbGVyYXRlZCBHcmFwaGljcyBQb3J0KSBpcyBhIGJ1cyBzeXN0ZW0gbWFpbmx5IHVzZWQgdG8KIAkgIGNvbm5lY3QgZ3JhcGhpY3MgY2FyZHMgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9hZ3AvaHAtYWdwLmMgYi9kcml2ZXJzL2NoYXIvYWdwL2hwLWFncC5jCmluZGV4IDhjNGM2ZWYuLjkwN2ZiNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9hZ3AvaHAtYWdwLmMKKysrIGIvZHJpdmVycy9jaGFyL2FncC9ocC1hZ3AuYwpAQCAtNDk3LDcgKzQ5Nyw3IEBACiAJCQlpbmZvID0gYnVmZmVyLnBvaW50ZXI7CiAJCQlpbmZvLT5oYXJkd2FyZV9pZC52YWx1ZVtzaXplb2YoaW5mby0+aGFyZHdhcmVfaWQpLTFdID0gJ1wwJzsKIAkJCW1hdGNoID0gKHN0cmNtcChpbmZvLT5oYXJkd2FyZV9pZC52YWx1ZSwgIkhXUDAwMDEiKSA9PSAwKTsKLQkJCUFDUElfTUVNX0ZSRUUoaW5mbyk7CisJCQlrZnJlZShpbmZvKTsKIAkJCWlmIChtYXRjaCkgewogCQkJCXN0YXR1cyA9IGhwX2FjcGlfY3NyX3NwYWNlKGhhbmRsZSwgJnNiYV9ocGEsICZsZW5ndGgpOwogCQkJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9ocGV0LmMgYi9kcml2ZXJzL2NoYXIvaHBldC5jCmluZGV4IGVmMTQwZWIuLjA3NDczY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9ocGV0LmMKKysrIGIvZHJpdmVycy9jaGFyL2hwZXQuYwpAQCAtOTI1LDExICs5MjUsOCBAQAogCXN0YXR1cyA9IGFjcGlfcmVzb3VyY2VfdG9fYWRkcmVzczY0KHJlcywgJmFkZHIpOwogCiAJaWYgKEFDUElfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0JCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQotCQlzaXplID0gYWRkci5tYXhpbXVtIC0gYWRkci5taW5pbXVtICsgMTsKIAkJaGRwLT5oZF9waHlzX2FkZHJlc3MgPSBhZGRyLm1pbmltdW07Ci0JCWhkcC0+aGRfYWRkcmVzcyA9IGlvcmVtYXAoYWRkci5taW5pbXVtLCBzaXplKTsKKwkJaGRwLT5oZF9hZGRyZXNzID0gaW9yZW1hcChhZGRyLm1pbmltdW0sIGFkZHIuYWRkcmVzc19sZW5ndGgpOwogCiAJCWlmIChocGV0X2lzX2tub3duKGhkcCkpIHsKIAkJCXByaW50ayhLRVJOX0RFQlVHICIlczogMHglbHggaXMgYnVzeVxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9odmNfY29uc29sZS5jIGIvZHJpdmVycy9jaGFyL2h2Y19jb25zb2xlLmMKaW5kZXggMmI2YTU2Yi4uYTVjNmE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2h2Y19jb25zb2xlLmMKKysrIGIvZHJpdmVycy9jaGFyL2h2Y19jb25zb2xlLmMKQEAgLTU1Myw3ICs1NTMsNiBAQAogCiAjZGVmaW5lIEhWQ19QT0xMX1JFQUQJMHgwMDAwMDAwMQogI2RlZmluZSBIVkNfUE9MTF9XUklURQkweDAwMDAwMDAyCi0jZGVmaW5lIEhWQ19QT0xMX1FVSUNLCTB4MDAwMDAwMDQKIAogc3RhdGljIGludCBodmNfcG9sbChzdHJ1Y3QgaHZjX3N0cnVjdCAqaHApCiB7CkBAIC01NjgsNiArNTY3LDcgQEAKIAkvKiBQdXNoIHBlbmRpbmcgd3JpdGVzICovCiAJaWYgKGhwLT5uX291dGJ1ZiA+IDApCiAJCWh2Y19wdXNoKGhwKTsKKwogCS8qIFJlc2NoZWR1bGUgdXMgaWYgc3RpbGwgc29tZSB3cml0ZSBwZW5kaW5nICovCiAJaWYgKGhwLT5uX291dGJ1ZiA+IDApCiAJCXBvbGxfbWFzayB8PSBIVkNfUE9MTF9XUklURTsKQEAgLTY4MCw3ICs2ODAsNyBAQAogCQkJcG9sbF9tYXNrIHw9IEhWQ19QT0xMX1JFQUQ7CiAJCWlmIChodmNfa2lja2VkKQogCQkJY29udGludWU7Ci0JCWlmIChwb2xsX21hc2sgJiBIVkNfUE9MTF9RVUlDSykgeworCQlpZiAocG9sbF9tYXNrICYgSFZDX1BPTExfV1JJVEUpIHsKIAkJCXlpZWxkKCk7CiAJCQljb250aW51ZTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2h2Y19ydGFzLmMgYi9kcml2ZXJzL2NoYXIvaHZjX3J0YXMuYwppbmRleCA4MzM2NGVhLi41NzEwNmUwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2h2Y19ydGFzLmMKKysrIGIvZHJpdmVycy9jaGFyL2h2Y19ydGFzLmMKQEAgLTQxLDM3ICs0MSwyOCBAQAogI2RlZmluZSBodmNfcnRhc19jb29raWUgMHg2Nzc4MWUxNQogc3RydWN0IGh2Y19zdHJ1Y3QgKmh2Y19ydGFzX2RldjsKIAotI2RlZmluZSBSVEFTQ09OU19QVVRfQVRURU1QVFMgIDE2Ci0KIHN0YXRpYyBpbnQgcnRhc2NvbnNfcHV0X2NoYXJfdG9rZW4gPSBSVEFTX1VOS05PV05fU0VSVklDRTsKIHN0YXRpYyBpbnQgcnRhc2NvbnNfZ2V0X2NoYXJfdG9rZW4gPSBSVEFTX1VOS05PV05fU0VSVklDRTsKLXN0YXRpYyBpbnQgcnRhc2NvbnNfcHV0X2RlbGF5ID0gMTAwOwotbW9kdWxlX3BhcmFtX25hbWVkKHB1dF9kZWxheSwgcnRhc2NvbnNfcHV0X2RlbGF5LCBpbnQsIDA2NDQpOwogCi1zdGF0aWMgaW5saW5lIGludCBodmNfcnRhc193cml0ZV9jb25zb2xlKHVpbnQzMl90IHZ0ZXJtbm8sIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGNvdW50KQotewotCWludCBkb25lOwotCi0JLyogaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgdG8gYmUgZGlzcGxheWVkLCB3YWl0IGEgYml0ICovCi0JZm9yIChkb25lID0gMDsgZG9uZSA8IGNvdW50OyBkb25lKyspIHsKLQkJaW50IHJlc3VsdDsKLQkJcmVzdWx0ID0gcnRhc19jYWxsKHJ0YXNjb25zX3B1dF9jaGFyX3Rva2VuLCAxLCAxLCBOVUxMLCBidWZbZG9uZV0pOwotCQlpZiAocmVzdWx0KQotCQkJYnJlYWs7Ci0JfQotCS8qIHRoZSBjYWxsaW5nIHJvdXRpbmUgZXhwZWN0cyB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCAqLwotCXJldHVybiBkb25lOwotfQotCi1zdGF0aWMgaW50IGh2Y19ydGFzX3JlYWRfY29uc29sZSh1aW50MzJfdCB2dGVybW5vLCBjaGFyICpidWYsIGludCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgaW50IGh2Y19ydGFzX3dyaXRlX2NvbnNvbGUodWludDMyX3QgdnRlcm1ubywgY29uc3QgY2hhciAqYnVmLAorCQlpbnQgY291bnQpCiB7CiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQlpbnQgYywgZXJyOworCQlpZiAocnRhc19jYWxsKHJ0YXNjb25zX3B1dF9jaGFyX3Rva2VuLCAxLCAxLCBOVUxMLCBidWZbaV0pKQorCQkJYnJlYWs7CisJfQogCi0JCWVyciA9IHJ0YXNfY2FsbChydGFzY29uc19nZXRfY2hhcl90b2tlbiwgMCwgMiwgJmMpOwotCQlpZiAoZXJyKQorCXJldHVybiBpOworfQorCitzdGF0aWMgaW50IGh2Y19ydGFzX3JlYWRfY29uc29sZSh1aW50MzJfdCB2dGVybW5vLCBjaGFyICpidWYsIGludCBjb3VudCkKK3sKKwlpbnQgaSwgYzsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCWlmIChydGFzX2NhbGwocnRhc2NvbnNfZ2V0X2NoYXJfdG9rZW4sIDAsIDIsICZjKSkKIAkJCWJyZWFrOwogCiAJCWJ1ZltpXSA9IGM7CkBAIC0xMDYsNyArOTcsOSBAQAogCWhwID0gaHZjX2FsbG9jKGh2Y19ydGFzX2Nvb2tpZSwgTk9fSVJRLCAmaHZjX3J0YXNfZ2V0X3B1dF9vcHMpOwogCWlmIChJU19FUlIoaHApKQogCQlyZXR1cm4gUFRSX0VSUihocCk7CisKIAlodmNfcnRhc19kZXYgPSBocDsKKwogCXJldHVybiAwOwogfQogbW9kdWxlX2luaXQoaHZjX3J0YXNfaW5pdCk7CkBAIC0xMTQsOCArMTA3LDggQEAKIC8qIFRoaXMgd2lsbCB0ZWFyIGRvd24gdGhlIHR0eSBwb3J0aW9uIG9mIHRoZSBkcml2ZXIgKi8KIHN0YXRpYyB2b2lkIF9fZXhpdCBodmNfcnRhc19leGl0KHZvaWQpCiB7Ci0JLyogUmVhbGx5IHRoZSBmdW4gaXNuJ3Qgb3ZlciB1bnRpbCB0aGUgd29ya2VyIHRocmVhZCBicmVha3MgZG93biBhbmQgdGhlCi0JICogdHR5IGNsZWFucyB1cCAqLworCS8qIFJlYWxseSB0aGUgZnVuIGlzbid0IG92ZXIgdW50aWwgdGhlIHdvcmtlciB0aHJlYWQgYnJlYWtzIGRvd24gYW5kCisJICogdGhlIHR0eSBjbGVhbnMgdXAgKi8KIAlpZiAoaHZjX3J0YXNfZGV2KQogCQlodmNfcmVtb3ZlKGh2Y19ydGFzX2Rldik7CiB9CkBAIC0xMjcsMTIgKzEyMCwxNCBAQAogCXJ0YXNjb25zX3B1dF9jaGFyX3Rva2VuID0gcnRhc190b2tlbigicHV0LXRlcm0tY2hhciIpOwogCWlmIChydGFzY29uc19wdXRfY2hhcl90b2tlbiA9PSBSVEFTX1VOS05PV05fU0VSVklDRSkKIAkJcmV0dXJuIC1FSU87CisKIAlydGFzY29uc19nZXRfY2hhcl90b2tlbiA9IHJ0YXNfdG9rZW4oImdldC10ZXJtLWNoYXIiKTsKIAlpZiAocnRhc2NvbnNfZ2V0X2NoYXJfdG9rZW4gPT0gUlRBU19VTktOT1dOX1NFUlZJQ0UpCiAJCXJldHVybiAtRUlPOwogCi0JaHZjX2luc3RhbnRpYXRlKGh2Y19ydGFzX2Nvb2tpZSwgMCwgJmh2Y19ydGFzX2dldF9wdXRfb3BzICk7CisJaHZjX2luc3RhbnRpYXRlKGh2Y19ydGFzX2Nvb2tpZSwgMCwgJmh2Y19ydGFzX2dldF9wdXRfb3BzKTsKIAlhZGRfcHJlZmVycmVkX2NvbnNvbGUoImh2YyIsIDAsIE5VTEwpOworCiAJcmV0dXJuIDA7CiB9CiBjb25zb2xlX2luaXRjYWxsKGh2Y19ydGFzX2NvbnNvbGVfaW5pdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaHZzaS5jIGIvZHJpdmVycy9jaGFyL2h2c2kuYwppbmRleCBhOTUyMjE4Li5hMDM3MGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvaHZzaS5jCisrKyBiL2RyaXZlcnMvY2hhci9odnNpLmMKQEAgLTExNzksNyArMTE3OSw3IEBACiAJaWYgKHR0eV9yZWdpc3Rlcl9kcml2ZXIoaHZzaV9kcml2ZXIpKQogCQlwYW5pYygiQ291bGRuJ3QgcmVnaXN0ZXIgaHZzaSBjb25zb2xlIGRyaXZlclxuIik7CiAKLQlwcmludGsoS0VSTl9JTkZPICJIVlNJOiByZWdpc3RlcmVkICVpIGRldmljZXNcbiIsIGh2c2lfY291bnQpOworCXByaW50ayhLRVJOX0RFQlVHICJIVlNJOiByZWdpc3RlcmVkICVpIGRldmljZXNcbiIsIGh2c2lfY291bnQpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3dhdGNoZG9nLmMgYi9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3dhdGNoZG9nLmMKaW5kZXggMmQxMWRkZC4uOGY4ODY3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV93YXRjaGRvZy5jCisrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfd2F0Y2hkb2cuYwpAQCAtMjEyLDI0ICsyMTIsMTYgQEAKIHsKIAlhY3Rpb25fZm4gIGZuID0gKGFjdGlvbl9mbikga3AtPmFyZzsKIAlpbnQgICAgICAgIHJ2ID0gMDsKLQljb25zdCBjaGFyICplbmQ7Ci0JY2hhciAgICAgICB2YWxjcFsxNl07Ci0JaW50ICAgICAgICBsZW47CisJY2hhciAgICAgICAqZHVwLCAqczsKIAotCS8qIFRydW5jYXRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy4gKi8KLQl3aGlsZSAoaXNzcGFjZSgqdmFsKSkKLQkJdmFsKys7Ci0JZW5kID0gdmFsICsgc3RybGVuKHZhbCkgLSAxOwotCXdoaWxlICgoZW5kID49IHZhbCkgJiYgaXNzcGFjZSgqZW5kKSkKLQkJZW5kLS07Ci0JbGVuID0gZW5kIC0gdmFsICsgMTsKLQlpZiAobGVuID4gc2l6ZW9mKHZhbGNwKSAtIDEpCi0JCXJldHVybiAtRUlOVkFMOwotCW1lbWNweSh2YWxjcCwgdmFsLCBsZW4pOwotCXZhbGNwW2xlbl0gPSAnXDAnOworCWR1cCA9IGtzdHJkdXAodmFsLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWR1cCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzID0gc3Ryc3RyaXAoZHVwKTsKIAogCWRvd25fcmVhZCgmcmVnaXN0ZXJfc2VtKTsKLQlydiA9IGZuKHZhbGNwLCBOVUxMKTsKKwlydiA9IGZuKHMsIE5VTEwpOwogCWlmIChydikKIAkJZ290byBvdXRfdW5sb2NrOwogCkBAIC0yMzksNiArMjMxLDcgQEAKIAogIG91dF91bmxvY2s6CiAJdXBfcmVhZCgmcmVnaXN0ZXJfc2VtKTsKKwlrZnJlZShkdXApOwogCXJldHVybiBydjsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3BjbWNpYS9zeW5jbGlua19jcy5jIGIvZHJpdmVycy9jaGFyL3BjbWNpYS9zeW5jbGlua19jcy5jCmluZGV4IDA3MjEzNDUuLjBjMTQxYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9wY21jaWEvc3luY2xpbmtfY3MuYworKysgYi9kcml2ZXJzL2NoYXIvcGNtY2lhL3N5bmNsaW5rX2NzLmMKQEAgLTg0NCw3ICs4NDQsNyBAQAogCXJldHVybiByYzsKIH0KIAotdm9pZCBiaF9oYW5kbGVyKHZvaWQqIENvbnRleHQpCitzdGF0aWMgdm9pZCBiaF9oYW5kbGVyKHZvaWQqIENvbnRleHQpCiB7CiAJTUdTTFBDX0lORk8gKmluZm8gPSAoTUdTTFBDX0lORk8qKUNvbnRleHQ7CiAJaW50IGFjdGlvbjsKQEAgLTg4OCw3ICs4ODgsNyBAQAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUpOwogfQogCi12b2lkIGJoX3RyYW5zbWl0KE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgYmhfdHJhbnNtaXQoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSA9IGluZm8tPnR0eTsKIAlpZiAoZGVidWdfbGV2ZWwgPj0gREVCVUdfTEVWRUxfQkgpCkBAIC05MDAsNyArOTAwLDcgQEAKIAl9CiB9CiAKLXZvaWQgYmhfc3RhdHVzKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgYmhfc3RhdHVzKE1HU0xQQ19JTkZPICppbmZvKQogewogCWluZm8tPnJpX2Noa2NvdW50ID0gMDsKIAlpbmZvLT5kc3JfY2hrY291bnQgPSAwOwpAQCAtMjMwNSw3ICsyMzA1LDcgQEAKIAlyZXR1cm4gaW9jdGxfY29tbW9uKGluZm8sIGNtZCwgYXJnKTsKIH0KIAotaW50IGlvY3RsX2NvbW1vbihNR1NMUENfSU5GTyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCitzdGF0aWMgaW50IGlvY3RsX2NvbW1vbihNR1NMUENfSU5GTyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJaW50IGVycm9yOwogCXN0cnVjdCBtZ3NsX2ljb3VudCBjbm93OwkvKiBrZXJuZWwgY291bnRlciB0ZW1wcyAqLwpAQCAtMjg3Nyw3ICsyODc3LDcgQEAKIAlyZXR1cm4gKChjb3VudCA8IGJlZ2luK2xlbi1vZmYpID8gY291bnQgOiBiZWdpbitsZW4tb2ZmKTsKIH0KIAotaW50IHJ4X2FsbG9jX2J1ZmZlcnMoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgaW50IHJ4X2FsbG9jX2J1ZmZlcnMoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJLyogZWFjaCBidWZmZXIgaGFzIGhlYWRlciBhbmQgZGF0YSAqLwogCWluZm8tPnJ4X2J1Zl9zaXplID0gc2l6ZW9mKFJYQlVGKSArIGluZm8tPm1heF9mcmFtZV9zaXplOwpAQCAtMjkwMCwxMyArMjkwMCwxMyBAQAogCXJldHVybiAwOwogfQogCi12b2lkIHJ4X2ZyZWVfYnVmZmVycyhNR1NMUENfSU5GTyAqaW5mbykKK3N0YXRpYyB2b2lkIHJ4X2ZyZWVfYnVmZmVycyhNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlrZnJlZShpbmZvLT5yeF9idWYpOwogCWluZm8tPnJ4X2J1ZiA9IE5VTEw7CiB9CiAKLWludCBjbGFpbV9yZXNvdXJjZXMoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgaW50IGNsYWltX3Jlc291cmNlcyhNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlpZiAocnhfYWxsb2NfYnVmZmVycyhpbmZvKSA8IDAgKSB7CiAJCXByaW50ayggIkNhbnQgYWxsb2NhdGUgcnggYnVmZmVyICVzXG4iLCBpbmZvLT5kZXZpY2VfbmFtZSk7CkBAIC0yOTE2LDcgKzI5MTYsNyBAQAogCXJldHVybiAwOwogfQogCi12b2lkIHJlbGVhc2VfcmVzb3VyY2VzKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgcmVsZWFzZV9yZXNvdXJjZXMoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJaWYgKGRlYnVnX2xldmVsID49IERFQlVHX0xFVkVMX0lORk8pCiAJCXByaW50aygicmVsZWFzZV9yZXNvdXJjZXMoJXMpXG4iLCBpbmZvLT5kZXZpY2VfbmFtZSk7CkBAIC0yOTI4LDcgKzI5MjgsNyBAQAogICogCQogICogQXJndW1lbnRzOgkJaW5mbwlwb2ludGVyIHRvIGRldmljZSBpbnN0YW5jZSBkYXRhCiAgKi8KLXZvaWQgbWdzbHBjX2FkZF9kZXZpY2UoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgdm9pZCBtZ3NscGNfYWRkX2RldmljZShNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlpbmZvLT5uZXh0X2RldmljZSA9IE5VTEw7CiAJaW5mby0+bGluZSA9IG1nc2xwY19kZXZpY2VfY291bnQ7CkBAIC0yOTY0LDcgKzI5NjQsNyBAQAogI2VuZGlmCiB9CiAKLXZvaWQgbWdzbHBjX3JlbW92ZV9kZXZpY2UoTUdTTFBDX0lORk8gKnJlbW92ZV9pbmZvKQorc3RhdGljIHZvaWQgbWdzbHBjX3JlbW92ZV9kZXZpY2UoTUdTTFBDX0lORk8gKnJlbW92ZV9pbmZvKQogewogCU1HU0xQQ19JTkZPICppbmZvID0gbWdzbHBjX2RldmljZV9saXN0OwogCU1HU0xQQ19JTkZPICpsYXN0ID0gTlVMTDsKQEAgLTMyNTcsNyArMzI1Nyw3IEBACiAJd3JpdGVfcmVnKGluZm8sIENIQSArIE1PREUsIHZhbCk7CiB9CiAKLXZvaWQgaGRsY19tb2RlKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgaGRsY19tb2RlKE1HU0xQQ19JTkZPICppbmZvKQogewogCXVuc2lnbmVkIGNoYXIgdmFsOwogCXVuc2lnbmVkIGNoYXIgY2xrbW9kZSwgY2xrc3VibW9kZTsKQEAgLTM0OTcsNyArMzQ5Nyw3IEBACiAJcnhfc3RvcChpbmZvKTsKIH0KIAotdm9pZCByeF9zdG9wKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgcnhfc3RvcChNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlpZiAoZGVidWdfbGV2ZWwgPj0gREVCVUdfTEVWRUxfSVNSKQogCQlwcmludGsoIiVzKCVkKTpyeF9zdG9wKCVzKVxuIiwKQEAgLTM1MTAsNyArMzUxMCw3IEBACiAJaW5mby0+cnhfb3ZlcmZsb3cgPSAwOwogfQogCi12b2lkIHJ4X3N0YXJ0KE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgcnhfc3RhcnQoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJaWYgKGRlYnVnX2xldmVsID49IERFQlVHX0xFVkVMX0lTUikKIAkJcHJpbnRrKCIlcyglZCk6cnhfc3RhcnQoJXMpXG4iLApAQCAtMzUyNiw3ICszNTI2LDcgQEAKIAlpbmZvLT5yeF9lbmFibGVkID0gMTsKIH0KIAotdm9pZCB0eF9zdGFydChNR1NMUENfSU5GTyAqaW5mbykKK3N0YXRpYyB2b2lkIHR4X3N0YXJ0KE1HU0xQQ19JTkZPICppbmZvKQogewogCWlmIChkZWJ1Z19sZXZlbCA+PSBERUJVR19MRVZFTF9JU1IpCiAJCXByaW50aygiJXMoJWQpOnR4X3N0YXJ0KCVzKVxuIiwKQEAgLTM1NjQsNyArMzU2NCw3IEBACiAJCWluZm8tPnR4X2VuYWJsZWQgPSAxOwogfQogCi12b2lkIHR4X3N0b3AoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgdm9pZCB0eF9zdG9wKE1HU0xQQ19JTkZPICppbmZvKQogewogCWlmIChkZWJ1Z19sZXZlbCA+PSBERUJVR19MRVZFTF9JU1IpCiAJCXByaW50aygiJXMoJWQpOnR4X3N0b3AoJXMpXG4iLApAQCAtMzU3OCw3ICszNTc4LDcgQEAKIAogLyogUmVzZXQgdGhlIGFkYXB0ZXIgdG8gYSBrbm93biBzdGF0ZSBhbmQgcHJlcGFyZSBpdCBmb3IgZnVydGhlciB1c2UuCiAgKi8KLXZvaWQgcmVzZXRfZGV2aWNlKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgcmVzZXRfZGV2aWNlKE1HU0xQQ19JTkZPICppbmZvKQogewogCS8qIHBvd2VyIHVwIGJvdGggY2hhbm5lbHMgKHNldCBCSVQ3KSAqLyAKIAl3cml0ZV9yZWcoaW5mbywgQ0hBICsgQ0NSMCwgMHg4MCk7CkBAIC0zNjI4LDcgKzM2MjgsNyBAQAogCXdyaXRlX3JlZyhpbmZvLCBJUEMsIDB4MDUpOwogfQogCi12b2lkIGFzeW5jX21vZGUoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgdm9pZCBhc3luY19tb2RlKE1HU0xQQ19JTkZPICppbmZvKQogewogCXVuc2lnbmVkIGNoYXIgdmFsOwogCkBAIC0zNzk5LDcgKzM3OTksNyBAQAogCiAvKiBTZXQgdGhlIEhETEMgaWRsZSBtb2RlIGZvciB0aGUgdHJhbnNtaXR0ZXIuCiAgKi8KLXZvaWQgdHhfc2V0X2lkbGUoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgdm9pZCB0eF9zZXRfaWRsZShNR1NMUENfSU5GTyAqaW5mbykKIHsKIAkvKiBOb3RlOiBFU0NDMiBvbmx5IHN1cHBvcnRzIGZsYWdzIGFuZCBvbmUgaWRsZSBtb2RlcyAqLyAKIAlpZiAoaW5mby0+aWRsZV9tb2RlID09IEhETENfVFhJRExFX0ZMQUdTKQpAQCAtMzgxMCw3ICszODEwLDcgQEAKIAogLyogZ2V0IHN0YXRlIG9mIHRoZSBWMjQgc3RhdHVzIChpbnB1dCkgc2lnbmFscy4KICAqLwotdm9pZCBnZXRfc2lnbmFscyhNR1NMUENfSU5GTyAqaW5mbykKK3N0YXRpYyB2b2lkIGdldF9zaWduYWxzKE1HU0xQQ19JTkZPICppbmZvKQogewogCXVuc2lnbmVkIGNoYXIgc3RhdHVzID0gMDsKIAkKQEAgLTM4MzIsNyArMzgzMiw3IEBACiAvKiBTZXQgdGhlIHN0YXRlIG9mIERUUiBhbmQgUlRTIGJhc2VkIG9uIGNvbnRlbnRzIG9mCiAgKiBzZXJpYWxfc2lnbmFscyBtZW1iZXIgb2YgZGV2aWNlIGV4dGVuc2lvbi4KICAqLwotdm9pZCBzZXRfc2lnbmFscyhNR1NMUENfSU5GTyAqaW5mbykKK3N0YXRpYyB2b2lkIHNldF9zaWduYWxzKE1HU0xQQ19JTkZPICppbmZvKQogewogCXVuc2lnbmVkIGNoYXIgdmFsOwogCkBAIC0zODU2LDcgKzM4NTYsNyBAQAogCQlzZXRfcmVnX2JpdHMoaW5mbywgQ0hBICsgUFZSLCBQVlJfRFRSKTsKIH0KIAotdm9pZCByeF9yZXNldF9idWZmZXJzKE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIHZvaWQgcnhfcmVzZXRfYnVmZmVycyhNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlSWEJVRiAqYnVmOwogCWludCBpOwpAQCAtMzg3NSw3ICszODc1LDcgQEAKICAqCiAgKiBSZXR1cm5zIDEgaWYgZnJhbWUgcmV0dXJuZWQsIG90aGVyd2lzZSAwCiAgKi8KLWludCByeF9nZXRfZnJhbWUoTUdTTFBDX0lORk8gKmluZm8pCitzdGF0aWMgaW50IHJ4X2dldF9mcmFtZShNR1NMUENfSU5GTyAqaW5mbykKIHsKIAl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAJUlhCVUYgKmJ1ZjsKQEAgLTM5NjEsNyArMzk2MSw3IEBACiAJcmV0dXJuIDE7CiB9CiAKLUJPT0xFQU4gcmVnaXN0ZXJfdGVzdChNR1NMUENfSU5GTyAqaW5mbykKK3N0YXRpYyBCT09MRUFOIHJlZ2lzdGVyX3Rlc3QoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJc3RhdGljIHVuc2lnbmVkIGNoYXIgcGF0dGVybnNbXSA9IAogCSAgICB7IDB4MDAsIDB4ZmYsIDB4YWEsIDB4NTUsIDB4NjksIDB4OTYsIDB4MGYgfTsKQEAgLTM5ODcsNyArMzk4Nyw3IEBACiAJcmV0dXJuIHJjOwogfQogCi1CT09MRUFOIGlycV90ZXN0KE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIEJPT0xFQU4gaXJxX3Rlc3QoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJdW5zaWduZWQgbG9uZyBlbmRfdGltZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtNDAyMiw3ICs0MDIyLDcgQEAKIAlyZXR1cm4gaW5mby0+aXJxX29jY3VycmVkID8gVFJVRSA6IEZBTFNFOwogfQogCi1pbnQgYWRhcHRlcl90ZXN0KE1HU0xQQ19JTkZPICppbmZvKQorc3RhdGljIGludCBhZGFwdGVyX3Rlc3QoTUdTTFBDX0lORk8gKmluZm8pCiB7CiAJaWYgKCFyZWdpc3Rlcl90ZXN0KGluZm8pKSB7CiAJCWluZm8tPmluaXRfZXJyb3IgPSBEaWFnU3RhdHVzX0FkZHJlc3NGYWlsdXJlOwpAQCAtNDA0NCw3ICs0MDQ0LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCB0cmFjZV9ibG9jayhNR1NMUENfSU5GTyAqaW5mbyxjb25zdCBjaGFyKiBkYXRhLCBpbnQgY291bnQsIGludCB4bWl0KQorc3RhdGljIHZvaWQgdHJhY2VfYmxvY2soTUdTTFBDX0lORk8gKmluZm8sY29uc3QgY2hhciogZGF0YSwgaW50IGNvdW50LCBpbnQgeG1pdCkKIHsKIAlpbnQgaTsKIAlpbnQgbGluZWNvdW50OwpAQCAtNDA3OSw3ICs0MDc5LDcgQEAKIC8qIEhETEMgZnJhbWUgdGltZSBvdXQKICAqIHVwZGF0ZSBzdGF0cyBhbmQgZG8gdHggY29tcGxldGlvbiBwcm9jZXNzaW5nCiAgKi8KLXZvaWQgdHhfdGltZW91dCh1bnNpZ25lZCBsb25nIGNvbnRleHQpCitzdGF0aWMgdm9pZCB0eF90aW1lb3V0KHVuc2lnbmVkIGxvbmcgY29udGV4dCkKIHsKIAlNR1NMUENfSU5GTyAqaW5mbyA9IChNR1NMUENfSU5GTyopY29udGV4dDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3J0Yy5jIGIvZHJpdmVycy9jaGFyL3J0Yy5jCmluZGV4IDdjYWM2ZDAuLmY2Njg2ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9ydGMuYworKysgYi9kcml2ZXJzL2NoYXIvcnRjLmMKQEAgLTk2MCwxMCArOTYwLDYgQEAKIAkgKiBQQ0kgU2xvdCAyIElOVEEjIChhbmQgc29tZSBJTlR4IyBpbiBTbG90IDEpLgogCSAqLwogCWlmIChyZXF1ZXN0X2lycShydGNfaXJxLCBydGNfaW50ZXJydXB0LCBTQV9TSElSUSwgInJ0YyIsICh2b2lkICopJnJ0Y19wb3J0KSkgewotCQkvKgotCQkgKiBTdGFuZGFyZCB3YXkgZm9yIHNwYXJjIHRvIHByaW50IGlycSdzIGlzIHRvIHVzZQotCQkgKiBfX2lycV9pdG9hKCkuIEkgdGhpbmsgZm9yIEVCdXMgaXQncyBvayB0byB1c2UgJWQuCi0JCSAqLwogCQlwcmludGsoS0VSTl9FUlIgInJ0YzogY2Fubm90IHJlZ2lzdGVyIElSUSAlZFxuIiwgcnRjX2lycSk7CiAJCXJldHVybiAtRUlPOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9zb255cGkuYyBiL2RyaXZlcnMvY2hhci9zb255cGkuYwppbmRleCBhOTBmNWQ5Li40M2RmZDg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvc29ueXBpLmMKKysrIGIvZHJpdmVycy9jaGFyL3NvbnlwaS5jCkBAIC01MTIsNyArNTEyLDcgQEAKIAogI2lmZGVmIENPTkZJR19BQ1BJCiBzdGF0aWMgc3RydWN0IGFjcGlfZGV2aWNlICpzb255cGlfYWNwaV9kZXZpY2U7Ci1zdGF0aWMgaW50IGFjcGlfZW5hYmxlZDsKK3N0YXRpYyBpbnQgYWNwaV9kcml2ZXJfcmVnaXN0ZXJlZDsKICNlbmRpZgogCiBzdGF0aWMgaW50IHNvbnlwaV9lY193cml0ZSh1OCBhZGRyLCB1OCB2YWx1ZSkKQEAgLTg2OSw3ICs4NjksNyBAQAogCQlzb255cGlfcmVwb3J0X2lucHV0X2V2ZW50KGV2ZW50KTsKIAogI2lmZGVmIENPTkZJR19BQ1BJCi0JaWYgKGFjcGlfZW5hYmxlZCkKKwlpZiAoc29ueXBpX2FjcGlfZGV2aWNlKQogCQlhY3BpX2J1c19nZW5lcmF0ZV9ldmVudChzb255cGlfYWNwaV9kZXZpY2UsIDEsIGV2ZW50KTsKICNlbmRpZgogCkBAIC0xNTUxLDggKzE1NTEsOCBAQAogCQlnb3RvIGVycl9mcmVlX2RldmljZTsKIAogI2lmZGVmIENPTkZJR19BQ1BJCi0JaWYgKGFjcGlfYnVzX3JlZ2lzdGVyX2RyaXZlcigmc29ueXBpX2FjcGlfZHJpdmVyKSA+IDApCi0JCWFjcGlfZW5hYmxlZCA9IDE7CisJaWYgKGFjcGlfYnVzX3JlZ2lzdGVyX2RyaXZlcigmc29ueXBpX2FjcGlfZHJpdmVyKSA+PSAwKQorCQlhY3BpX2RyaXZlcl9yZWdpc3RlcmVkID0gMTsKICNlbmRpZgogCiAJcmV0dXJuIDA7CkBAIC0xNTY3LDcgKzE1NjcsNyBAQAogc3RhdGljIHZvaWQgX19leGl0IHNvbnlwaV9leGl0KHZvaWQpCiB7CiAjaWZkZWYgQ09ORklHX0FDUEkKLQlpZiAoYWNwaV9lbmFibGVkKQorCWlmIChhY3BpX2RyaXZlcl9yZWdpc3RlcmVkKQogCQlhY3BpX2J1c191bnJlZ2lzdGVyX2RyaXZlcigmc29ueXBpX2FjcGlfZHJpdmVyKTsKICNlbmRpZgogCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHNvbnlwaV9wbGF0Zm9ybV9kZXZpY2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3R0eV9pby5jIGIvZHJpdmVycy9jaGFyL3R0eV9pby5jCmluZGV4IGE4OGI5NGEuLjhiMmE1OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci90dHlfaW8uYworKysgYi9kcml2ZXJzL2NoYXIvdHR5X2lvLmMKQEAgLTI5NjEsMTIgKzI5NjEsMTQgQEAKICAqCVRoaXMgZmllbGQgaXMgb3B0aW9uYWwsIGlmIHRoZXJlIGlzIG5vIGtub3duIHN0cnVjdCBkZXZpY2UgZm9yIHRoaXMKICAqCXR0eSBkZXZpY2UgaXQgY2FuIGJlIHNldCB0byBOVUxMIHNhZmVseS4KICAqCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgY2xhc3MgZGV2aWNlIChvciBFUlJfUFRSKC1FRk9PKSBvbiBlcnJvcikuCisgKgogICogVGhpcyBjYWxsIGlzIHJlcXVpcmVkIHRvIGJlIG1hZGUgdG8gcmVnaXN0ZXIgYW4gaW5kaXZpZHVhbCB0dHkgZGV2aWNlIGlmCiAgKiB0aGUgdHR5IGRyaXZlcidzIGZsYWdzIGhhdmUgdGhlIFRUWV9EUklWRVJfTk9fREVWRlMgYml0IHNldC4gIElmIHRoYXQKICAqIGJpdCBpcyBub3Qgc2V0LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkLgogICovCi12b2lkIHR0eV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW5kZXgsCi0JCQkgc3RydWN0IGRldmljZSAqZGV2aWNlKQorc3RydWN0IGNsYXNzX2RldmljZSAqdHR5X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLAorCQkJCQkgdW5zaWduZWQgaW5kZXgsIHN0cnVjdCBkZXZpY2UgKmRldmljZSkKIHsKIAljaGFyIG5hbWVbNjRdOwogCWRldl90IGRldiA9IE1LREVWKGRyaXZlci0+bWFqb3IsIGRyaXZlci0+bWlub3Jfc3RhcnQpICsgaW5kZXg7CkBAIC0yOTc0LDcgKzI5NzYsNyBAQAogCWlmIChpbmRleCA+PSBkcml2ZXItPm51bSkgewogCQlwcmludGsoS0VSTl9FUlIgIkF0dGVtcHQgdG8gcmVnaXN0ZXIgaW52YWxpZCB0dHkgbGluZSBudW1iZXIgIgogCQkgICAgICAgIiAoJWQpLlxuIiwgaW5kZXgpOwotCQlyZXR1cm47CisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCX0KIAogCWRldmZzX21rX2NkZXYoZGV2LCBTX0lGQ0hSIHwgU19JUlVTUiB8IFNfSVdVU1IsCkBAIC0yOTg0LDcgKzI5ODYsOCBAQAogCQlwdHlfbGluZV9uYW1lKGRyaXZlciwgaW5kZXgsIG5hbWUpOwogCWVsc2UKIAkJdHR5X2xpbmVfbmFtZShkcml2ZXIsIGluZGV4LCBuYW1lKTsKLQljbGFzc19kZXZpY2VfY3JlYXRlKHR0eV9jbGFzcywgTlVMTCwgZGV2LCBkZXZpY2UsICIlcyIsIG5hbWUpOworCisJcmV0dXJuIGNsYXNzX2RldmljZV9jcmVhdGUodHR5X2NsYXNzLCBOVUxMLCBkZXYsIGRldmljZSwgIiVzIiwgbmFtZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3Zpb3RhcGUuYyBiL2RyaXZlcnMvY2hhci92aW90YXBlLmMKaW5kZXggNjBhYWJkYi4uMTFjN2U5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3Zpb3RhcGUuYworKysgYi9kcml2ZXJzL2NoYXIvdmlvdGFwZS5jCkBAIC05ODksNyArOTg5LDcgQEAKICAqIHN1cHBvcnQuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdmlvX2RldmljZV9pZCB2aW90YXBlX2RldmljZV90YWJsZVtdIF9fZGV2aW5pdGRhdGEgPSB7Ci0JeyAidmlvdGFwZSIsICIiIH0sCisJeyAiYnl0ZSIsICJJQk0saVNlcmllcy12aW90YXBlIiB9LAogCXsgIiIsICIiIH0KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHZpbywgdmlvdGFwZV9kZXZpY2VfdGFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jCmluZGV4IDRiNGQ3ZGIuLjQ5OGFhMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYworKysgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9rdGltZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25uZWN0b3IuaD4KICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CiAKICNpbmNsdWRlIDxsaW51eC9jbl9wcm9jLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nvbm5lY3Rvci9jb25uZWN0b3IuYyBiL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCmluZGV4IDM1ODk3MDcuLmI0OWJhY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCisrKyBiL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCkBAIC0xMjEsNiArMTIxLDcgQEAKIAlrZnJlZV9za2Ioc2tiKTsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKGNuX25ldGxpbmtfc2VuZCk7CiAKIC8qCiAgKiBDYWxsYmFjayBoZWxwZXIgLSBxdWV1ZXMgd29yayBhbmQgc2V0dXAgZGVzdHJ1Y3RvciBmb3IgZ2l2ZW4gZGF0YS4KQEAgLTMwOCw2ICszMDksOSBAQAogCWludCBlcnI7CiAJc3RydWN0IGNuX2RldiAqZGV2ID0gJmNkZXY7CiAKKwlpZiAoIWNuX2FscmVhZHlfaW5pdGlhbGl6ZWQpCisJCXJldHVybiAtRUFHQUlOOworCiAJZXJyID0gY25fcXVldWVfYWRkX2NhbGxiYWNrKGRldi0+Y2JkZXYsIG5hbWUsIGlkLCBjYWxsYmFjayk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKQEAgLTMxNiw2ICszMjAsNyBAQAogCiAJcmV0dXJuIDA7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChjbl9hZGRfY2FsbGJhY2spOwogCiAvKgogICogQ2FsbGJhY2sgcmVtb3ZlIHJvdXRpbmcgLSByZW1vdmVzIGNhbGxiYWNrCkBAIC0zMzIsNiArMzM3LDcgQEAKIAljbl9xdWV1ZV9kZWxfY2FsbGJhY2soZGV2LT5jYmRldiwgaWQpOwogCWNuX25vdGlmeShpZCwgMSk7CiB9CitFWFBPUlRfU1lNQk9MX0dQTChjbl9kZWxfY2FsbGJhY2spOwogCiAvKgogICogQ2hlY2tzIHR3byBjb25uZWN0b3IncyBjb250cm9sIG1lc3NhZ2VzIHRvIGJlIHRoZSBzYW1lLgpAQCAtNDM1LDcgKzQ0MSw3IEBACiAJbXV0ZXhfdW5sb2NrKCZub3RpZnlfbG9jayk7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGNuX2luaXQodm9pZCkKK3N0YXRpYyBpbnQgX19kZXZpbml0IGNuX2luaXQodm9pZCkKIHsKIAlzdHJ1Y3QgY25fZGV2ICpkZXYgPSAmY2RldjsKIAlpbnQgZXJyOwpAQCAtNDU2LDIxICs0NjIsMjIgQEAKIAkJCXNvY2tfcmVsZWFzZShkZXYtPm5scy0+c2tfc29ja2V0KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQorCQorCWNuX2FscmVhZHlfaW5pdGlhbGl6ZWQgPSAxOwogCiAJZXJyID0gY25fYWRkX2NhbGxiYWNrKCZkZXYtPmlkLCAiY29ubmVjdG9yIiwgJmNuX2NhbGxiYWNrKTsKIAlpZiAoZXJyKSB7CisJCWNuX2FscmVhZHlfaW5pdGlhbGl6ZWQgPSAwOwogCQljbl9xdWV1ZV9mcmVlX2RldihkZXYtPmNiZGV2KTsKIAkJaWYgKGRldi0+bmxzLT5za19zb2NrZXQpCiAJCQlzb2NrX3JlbGVhc2UoZGV2LT5ubHMtPnNrX3NvY2tldCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWNuX2FscmVhZHlfaW5pdGlhbGl6ZWQgPSAxOwotCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9fZXhpdCBjbl9maW5pKHZvaWQpCitzdGF0aWMgdm9pZCBfX2RldmV4aXQgY25fZmluaSh2b2lkKQogewogCXN0cnVjdCBjbl9kZXYgKmRldiA9ICZjZGV2OwogCkBAIC00ODIsOSArNDg5LDUgQEAKIAkJc29ja19yZWxlYXNlKGRldi0+bmxzLT5za19zb2NrZXQpOwogfQogCi1tb2R1bGVfaW5pdChjbl9pbml0KTsKK3N1YnN5c19pbml0Y2FsbChjbl9pbml0KTsKIG1vZHVsZV9leGl0KGNuX2ZpbmkpOwotCi1FWFBPUlRfU1lNQk9MX0dQTChjbl9hZGRfY2FsbGJhY2spOwotRVhQT1JUX1NZTUJPTF9HUEwoY25fZGVsX2NhbGxiYWNrKTsKLUVYUE9SVF9TWU1CT0xfR1BMKGNuX25ldGxpbmtfc2VuZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9jb25zZXJ2YXRpdmUuYyBiL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX2NvbnNlcnZhdGl2ZS5jCmluZGV4IGUwN2EzNTQuLmIzZWJjOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX2NvbnNlcnZhdGl2ZS5jCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX2NvbnNlcnZhdGl2ZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisjaW5jbHVkZSA8bGludXgvY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CkBAIC03Miw2ICs3MywxNCBAQAogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRic19lbmFibGU7CS8qIG51bWJlciBvZiBDUFVzIHVzaW5nIHRoaXMgcG9saWN5ICovCiAKKy8qCisgKiBERUFETE9DSyBBTEVSVCEgVGhlcmUgaXMgYSBvcmRlcmluZyByZXF1aXJlbWVudCBiZXR3ZWVuIGNwdV9ob3RwbHVnCisgKiBsb2NrIGFuZCBkYnNfbXV0ZXguIGNwdV9ob3RwbHVnIGxvY2sgc2hvdWxkIGFsd2F5cyBiZSBoZWxkIGJlZm9yZQorICogZGJzX211dGV4LiBJZiBhbnkgZnVuY3Rpb24gdGhhdCBjYW4gcG90ZW50aWFsbHkgdGFrZSBjcHVfaG90cGx1ZyBsb2NrCisgKiAobGlrZSBfX2NwdWZyZXFfZHJpdmVyX3RhcmdldCgpKSBpcyBiZWluZyBjYWxsZWQgd2l0aCBkYnNfbXV0ZXggdGFrZW4sIHRoZW4KKyAqIGNwdV9ob3RwbHVnIGxvY2sgc2hvdWxkIGJlIHRha2VuIGJlZm9yZSB0aGF0LiBOb3RlIHRoYXQgY3B1X2hvdHBsdWcgbG9jaworICogaXMgcmVjdXJzaXZlIGZvciB0aGUgc2FtZSBwcm9jZXNzLiAtVmVua2kKKyAqLwogc3RhdGljIERFRklORV9NVVRFWCAJKGRic19tdXRleCk7CiBzdGF0aWMgREVDTEFSRV9XT1JLCShkYnNfd29yaywgZG9fZGJzX3RpbWVyLCBOVUxMKTsKIApAQCAtNDE0LDEyICs0MjMsMTQgQEAKIHN0YXRpYyB2b2lkIGRvX2Ric190aW1lcih2b2lkICpkYXRhKQogeyAKIAlpbnQgaTsKKwlsb2NrX2NwdV9ob3RwbHVnKCk7CiAJbXV0ZXhfbG9jaygmZGJzX211dGV4KTsKIAlmb3JfZWFjaF9vbmxpbmVfY3B1KGkpCiAJCWRic19jaGVja19jcHUoaSk7CiAJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkYnNfd29yaywgCiAJCQl1c2Vjc190b19qaWZmaWVzKGRic190dW5lcnNfaW5zLnNhbXBsaW5nX3JhdGUpKTsKIAltdXRleF91bmxvY2soJmRic19tdXRleCk7CisJdW5sb2NrX2NwdV9ob3RwbHVnKCk7CiB9IAogCiBzdGF0aWMgaW5saW5lIHZvaWQgZGJzX3RpbWVyX2luaXQodm9pZCkKQEAgLTUxNCw2ICs1MjUsNyBAQAogCQlicmVhazsKIAogCWNhc2UgQ1BVRlJFUV9HT1ZfTElNSVRTOgorCQlsb2NrX2NwdV9ob3RwbHVnKCk7CiAJCW11dGV4X2xvY2soJmRic19tdXRleCk7CiAJCWlmIChwb2xpY3ktPm1heCA8IHRoaXNfZGJzX2luZm8tPmN1cl9wb2xpY3ktPmN1cikKIAkJCV9fY3B1ZnJlcV9kcml2ZXJfdGFyZ2V0KApAQCAtNTI0LDYgKzUzNiw3IEBACiAJCQkJCXRoaXNfZGJzX2luZm8tPmN1cl9wb2xpY3ksCiAJCQkJICAgICAgIAlwb2xpY3ktPm1pbiwgQ1BVRlJFUV9SRUxBVElPTl9MKTsKIAkJbXV0ZXhfdW5sb2NrKCZkYnNfbXV0ZXgpOworCQl1bmxvY2tfY3B1X2hvdHBsdWcoKTsKIAkJYnJlYWs7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfb25kZW1hbmQuYyBiL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX29uZGVtYW5kLmMKaW5kZXggM2U2ZmZjYS4uNjkzZTU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfb25kZW1hbmQuYworKysgYi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9vbmRlbWFuZC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisjaW5jbHVkZSA8bGludXgvY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CkBAIC03MSw2ICs3MiwxNCBAQAogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRic19lbmFibGU7CS8qIG51bWJlciBvZiBDUFVzIHVzaW5nIHRoaXMgcG9saWN5ICovCiAKKy8qCisgKiBERUFETE9DSyBBTEVSVCEgVGhlcmUgaXMgYSBvcmRlcmluZyByZXF1aXJlbWVudCBiZXR3ZWVuIGNwdV9ob3RwbHVnCisgKiBsb2NrIGFuZCBkYnNfbXV0ZXguIGNwdV9ob3RwbHVnIGxvY2sgc2hvdWxkIGFsd2F5cyBiZSBoZWxkIGJlZm9yZQorICogZGJzX211dGV4LiBJZiBhbnkgZnVuY3Rpb24gdGhhdCBjYW4gcG90ZW50aWFsbHkgdGFrZSBjcHVfaG90cGx1ZyBsb2NrCisgKiAobGlrZSBfX2NwdWZyZXFfZHJpdmVyX3RhcmdldCgpKSBpcyBiZWluZyBjYWxsZWQgd2l0aCBkYnNfbXV0ZXggdGFrZW4sIHRoZW4KKyAqIGNwdV9ob3RwbHVnIGxvY2sgc2hvdWxkIGJlIHRha2VuIGJlZm9yZSB0aGF0LiBOb3RlIHRoYXQgY3B1X2hvdHBsdWcgbG9jaworICogaXMgcmVjdXJzaXZlIGZvciB0aGUgc2FtZSBwcm9jZXNzLiAtVmVua2kKKyAqLwogc3RhdGljIERFRklORV9NVVRFWCAoZGJzX211dGV4KTsKIHN0YXRpYyBERUNMQVJFX1dPUksJKGRic193b3JrLCBkb19kYnNfdGltZXIsIE5VTEwpOwogCkBAIC0zNjMsMTIgKzM3MiwxNCBAQAogc3RhdGljIHZvaWQgZG9fZGJzX3RpbWVyKHZvaWQgKmRhdGEpCiB7CiAJaW50IGk7CisJbG9ja19jcHVfaG90cGx1ZygpOwogCW11dGV4X2xvY2soJmRic19tdXRleCk7CiAJZm9yX2VhY2hfb25saW5lX2NwdShpKQogCQlkYnNfY2hlY2tfY3B1KGkpOwogCXF1ZXVlX2RlbGF5ZWRfd29yayhkYnNfd29ya3EsICZkYnNfd29yaywKIAkJCSAgIHVzZWNzX3RvX2ppZmZpZXMoZGJzX3R1bmVyc19pbnMuc2FtcGxpbmdfcmF0ZSkpOwogCW11dGV4X3VubG9jaygmZGJzX211dGV4KTsKKwl1bmxvY2tfY3B1X2hvdHBsdWcoKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGRic190aW1lcl9pbml0KHZvaWQpCkBAIC00NjksNiArNDgwLDcgQEAKIAkJYnJlYWs7CiAKIAljYXNlIENQVUZSRVFfR09WX0xJTUlUUzoKKwkJbG9ja19jcHVfaG90cGx1ZygpOwogCQltdXRleF9sb2NrKCZkYnNfbXV0ZXgpOwogCQlpZiAocG9saWN5LT5tYXggPCB0aGlzX2Ric19pbmZvLT5jdXJfcG9saWN5LT5jdXIpCiAJCQlfX2NwdWZyZXFfZHJpdmVyX3RhcmdldCgKQEAgLTQ3OSw2ICs0OTEsNyBAQAogCQkJCQl0aGlzX2Ric19pbmZvLT5jdXJfcG9saWN5LAogCQkJCQlwb2xpY3ktPm1pbiwgQ1BVRlJFUV9SRUxBVElPTl9MKTsKIAkJbXV0ZXhfdW5sb2NrKCZkYnNfbXV0ZXgpOworCQl1bmxvY2tfY3B1X2hvdHBsdWcoKTsKIAkJYnJlYWs7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9mYzQvc29jLmMgYi9kcml2ZXJzL2ZjNC9zb2MuYwppbmRleCBlYzFmOTQ3Li5jZjg3NjhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2ZjNC9zb2MuYworKysgYi9kcml2ZXJzL2ZjNC9zb2MuYwpAQCAtNjQzLDcgKzY0Myw3IEBACiAJCXJldHVybjsKIAl9CiAKLQlTT0QoKCJTT0MgdXNlcyBJUlElc1xuIiwgX19pcnFfaXRvYShpcnEpKSkKKwlTT0QoKCJTT0MgdXNlcyBJUlEgJWRcbiIsIGlycSkpCiAJCiAJcy0+cG9ydFswXS5mYy5pcnEgPSBpcnE7CiAJcy0+cG9ydFsxXS5mYy5pcnEgPSBpcnE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZjNC9zb2NhbC5jIGIvZHJpdmVycy9mYzQvc29jYWwuYwppbmRleCA5MjJlOTYxLi5mNTJkMWU1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9mYzQvc29jYWwuYworKysgYi9kcml2ZXJzL2ZjNC9zb2NhbC5jCkBAIC03NjcsNyArNzY3LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCVNPRCgoIlNPQ0FMIHVzZXMgSVJRICVzXG4iLCBfX2lycV9pdG9hKGlycSkpKQorCVNPRCgoIlNPQ0FMIHVzZXMgSVJRICVkXG4iLCBpcnEpKQogCQogCXMtPnBvcnRbMF0uZmMuaXJxID0gaXJxOwogCXMtPnBvcnRbMV0uZmMuaXJxID0gaXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9LY29uZmlnIGIvZHJpdmVycy9od21vbi9LY29uZmlnCmluZGV4IDk5Y2RjNjEuLjBlMzFhMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vS2NvbmZpZworKysgYi9kcml2ZXJzL2h3bW9uL0tjb25maWcKQEAgLTEsNSArMSw1IEBACiAjCi0jIEkyQyBTZW5zb3IgY2hpcCBkcml2ZXJzIGNvbmZpZ3VyYXRpb24KKyMgSGFyZHdhcmUgbW9uaXRvcmluZyBjaGlwIGRyaXZlcnMgY29uZmlndXJhdGlvbgogIwogCiBtZW51ICJIYXJkd2FyZSBNb25pdG9yaW5nIHN1cHBvcnQiCkBAIC0xNiw2ICsxNiwxMCBAQAogCSAgc2hvdWxkIHNheSBZIGhlcmUgYW5kIGFsc28gdG8gdGhlIHNwZWNpZmljIGRyaXZlcihzKSBmb3IgeW91cgogCSAgc2Vuc29ycyBjaGlwKHMpIGJlbG93LgogCisJICBUbyBmaW5kIG91dCB3aGljaCBzcGVjaWZpYyBkcml2ZXIocykgeW91IG5lZWQsIHVzZSB0aGUKKwkgIHNlbnNvcnMtZGV0ZWN0IHNjcmlwdCBmcm9tIHRoZSBsbV9zZW5zb3JzIHBhY2thZ2UuICBSZWFkCisJICA8ZmlsZTpEb2N1bWVudGF0aW9uL2h3bW9uL3VzZXJzcGFjZS10b29scz4gZm9yIGRldGFpbHMuCisKIAkgIFRoaXMgc3VwcG9ydCBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBod21vbi4KIApAQCAtMjMsNiArMjcsMTggQEAKIAl0cmlzdGF0ZQogCWRlZmF1bHQgbgogCitjb25maWcgU0VOU09SU19BQklUVUdVUlUKKwl0cmlzdGF0ZSAiQWJpdCB1R3VydSIKKwlkZXBlbmRzIG9uIEhXTU9OICYmIEVYUEVSSU1FTlRBTAorCWhlbHAKKwkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgQWJpdCB1R3VydSBjaGlwcworCSAgc2Vuc29yIHBhcnQuIFRoZSB2b2x0YWdlIGFuZCBmcmVxdWVuY3kgY29udHJvbCBwYXJ0cyBvZiB0aGUgQWJpdAorCSAgdUd1cnUgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoZSBBYml0IHVHdXJ1IGNoaXAgY2FuIGJlIGZvdW5kIG9uIEFiaXQKKwkgIHVHdXJ1IGZlYXR1cmluZyBtb3RoZXJib2FyZHMgKG1vc3QgbW9kZXJuIEFiaXQgbW90aGVyYm9hcmRzKS4KKworCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgYWJpdHVndXJ1LgorCiBjb25maWcgU0VOU09SU19BRE0xMDIxCiAJdHJpc3RhdGUgIkFuYWxvZyBEZXZpY2VzIEFETTEwMjEgYW5kIGNvbXBhdGlibGVzIgogCWRlcGVuZHMgb24gSFdNT04gJiYgSTJDCkBAIC0xODgsNiArMjA0LDE2IEBACiAJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBsbTYzLgogCitjb25maWcgU0VOU09SU19MTTcwCisJdHJpc3RhdGUgIk5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MCIKKwlkZXBlbmRzIG9uIEhXTU9OICYmIFNQSV9NQVNURVIgJiYgRVhQRVJJTUVOVEFMCisJaGVscAorCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yCisJICBMTTcwIGRpZ2l0YWwgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXAuCisKKwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGxtNzAuCisKIGNvbmZpZyBTRU5TT1JTX0xNNzUKIAl0cmlzdGF0ZSAiTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTc1IGFuZCBjb21wYXRpYmxlcyIKIAlkZXBlbmRzIG9uIEhXTU9OICYmIEkyQwpAQCAtMjM2LDExICsyNjIsMTEgQEAKIAkgIHdpbGwgYmUgY2FsbGVkIGxtODAuCiAKIGNvbmZpZyBTRU5TT1JTX0xNODMKLQl0cmlzdGF0ZSAiTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTgzIgorCXRyaXN0YXRlICJOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODMgYW5kIGNvbXBhdGlibGVzIgogCWRlcGVuZHMgb24gSFdNT04gJiYgSTJDCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IKLQkgIExNODMgc2Vuc29yIGNoaXBzLgorCSAgTE04MiBhbmQgTE04MyBzZW5zb3IgY2hpcHMuCiAKIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIGxtODMuCkBAIC0zMzMsMTEgKzM1OSwzMiBAQAogCWhlbHAKIAkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBmYW4KIAkgIG1vbml0b3JpbmcgYW5kIGNvbnRyb2wgY2FwYWJpbGl0aWVzIG9mIHRoZSBTTVNDIExQQzQ3QjI3eCwKLQkgIExQQzQ3TTEweCwgTFBDNDdNMTN4LCBMUEM0N00xNHgsIExQQzQ3TTE1eCBhbmQgTFBDNDdNMTkyIGNoaXBzLgorCSAgTFBDNDdNMTB4LCBMUEM0N00xM3gsIExQQzQ3TTE0eCwgTFBDNDdNMTV4LCBMUEM0N00xOTIgYW5kCisJICBMUEM0N005OTcgY2hpcHMuCisKKwkgIFRoZSB0ZW1wZXJhdHVyZSBhbmQgdm9sdGFnZSBzZW5zb3IgZmVhdHVyZXMgb2YgdGhlIExQQzQ3TTE5MgorCSAgYW5kIExQQzQ3TTk5NyBhcmUgc3VwcG9ydGVkIGJ5IGFub3RoZXIgZHJpdmVyLCBzZWxlY3QgYWxzbworCSAgIlNNU0MgTFBDNDdNMTkyIGFuZCBjb21wYXRpYmxlcyIgYmVsb3cgZm9yIHRob3NlLgogCiAJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBzbXNjNDdtMS4KIAorY29uZmlnIFNFTlNPUlNfU01TQzQ3TTE5MgorCXRyaXN0YXRlICJTTVNDIExQQzQ3TTE5MiBhbmQgY29tcGF0aWJsZXMiCisJZGVwZW5kcyBvbiBIV01PTiAmJiBJMkMgJiYgRVhQRVJJTUVOVEFMCisJc2VsZWN0IEhXTU9OX1ZJRAorCWhlbHAKKwkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgdGVtcGVyYXR1cmUgYW5kCisJICB2b2x0YWdlIHNlbnNvcnMgb2YgdGhlIFNNU0MgTFBDNDdNMTkyIGFuZCBMUEM0N005OTcgY2hpcHMuCisKKwkgIFRoZSBmYW4gbW9uaXRvcmluZyBhbmQgY29udHJvbCBjYXBhYmlsaXRpZXMgb2YgdGhlc2UgY2hpcHMKKwkgIGFyZSBzdXBwb3J0ZWQgYnkgYW5vdGhlciBkcml2ZXIsIHNlbGVjdAorCSAgIlNNU0MgTFBDNDdNMTB4IGFuZCBjb21wYXRpYmxlcyIgYWJvdmUuIFlvdSBuZWVkIGJvdGggZHJpdmVycworCSAgaWYgeW91IHdhbnQgZmFuIGNvbnRyb2wgYW5kIHZvbHRhZ2UvdGVtcGVyYXR1cmUgc2Vuc29yIHN1cHBvcnQuCisKKwkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIHNtc2M0N20xOTIuCisKIGNvbmZpZyBTRU5TT1JTX1NNU0M0N0IzOTcKIAl0cmlzdGF0ZSAiU01TQyBMUEM0N0IzOTctTkMiCiAJZGVwZW5kcyBvbiBIV01PTiAmJiBJMkMgJiYgRVhQRVJJTUVOVEFMCkBAIC0zODUsNiArNDMyLDE2IEBACiAJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCB3ODM3ODFkLgogCitjb25maWcgU0VOU09SU19XODM3OTFECisJdHJpc3RhdGUgIldpbmJvbmQgVzgzNzkxRCIKKwlkZXBlbmRzIG9uIEhXTU9OICYmIEkyQyAmJiBFWFBFUklNRU5UQUwKKwlzZWxlY3QgSFdNT05fVklECisJaGVscAorCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9yIHRoZSBXaW5ib25kIFc4Mzc5MUQgY2hpcC4KKworCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgdzgzNzkxZC4KKwogY29uZmlnIFNFTlNPUlNfVzgzNzkyRAogCXRyaXN0YXRlICJXaW5ib25kIFc4Mzc5MkQiCiAJZGVwZW5kcyBvbiBIV01PTiAmJiBJMkMgJiYgRVhQRVJJTUVOVEFMCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlIGIvZHJpdmVycy9od21vbi9NYWtlZmlsZQppbmRleCBmYmRiOGQ5Li4zMTQxNTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvaHdtb24vTWFrZWZpbGUKQEAgLTEwLDcgKzEwLDkgQEAKIG9iai0kKENPTkZJR19TRU5TT1JTX1c4MzYyN0hGKQkrPSB3ODM2MjdoZi5vCiBvYmotJChDT05GSUdfU0VOU09SU19XODM3OTJEKQkrPSB3ODM3OTJkLm8KIG9iai0kKENPTkZJR19TRU5TT1JTX1c4Mzc4MUQpCSs9IHc4Mzc4MWQubworb2JqLSQoQ09ORklHX1NFTlNPUlNfVzgzNzkxRCkJKz0gdzgzNzkxZC5vCiAKK29iai0kKENPTkZJR19TRU5TT1JTX0FCSVRVR1VSVSkJKz0gYWJpdHVndXJ1Lm8KIG9iai0kKENPTkZJR19TRU5TT1JTX0FETTEwMjEpCSs9IGFkbTEwMjEubwogb2JqLSQoQ09ORklHX1NFTlNPUlNfQURNMTAyNSkJKz0gYWRtMTAyNS5vCiBvYmotJChDT05GSUdfU0VOU09SU19BRE0xMDI2KQkrPSBhZG0xMDI2Lm8KQEAgLTI2LDYgKzI4LDcgQEAKIG9iai0kKENPTkZJR19TRU5TT1JTX0hEQVBTKQkrPSBoZGFwcy5vCiBvYmotJChDT05GSUdfU0VOU09SU19JVDg3KQkrPSBpdDg3Lm8KIG9iai0kKENPTkZJR19TRU5TT1JTX0xNNjMpCSs9IGxtNjMubworb2JqLSQoQ09ORklHX1NFTlNPUlNfTE03MCkJKz0gbG03MC5vCiBvYmotJChDT05GSUdfU0VOU09SU19MTTc1KQkrPSBsbTc1Lm8KIG9iai0kKENPTkZJR19TRU5TT1JTX0xNNzcpCSs9IGxtNzcubwogb2JqLSQoQ09ORklHX1NFTlNPUlNfTE03OCkJKz0gbG03OC5vCkBAIC00MCw2ICs0Myw3IEBACiBvYmotJChDT05GSUdfU0VOU09SU19TSVM1NTk1KQkrPSBzaXM1NTk1Lm8KIG9iai0kKENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcpKz0gc21zYzQ3YjM5Ny5vCiBvYmotJChDT05GSUdfU0VOU09SU19TTVNDNDdNMSkJKz0gc21zYzQ3bTEubworb2JqLSQoQ09ORklHX1NFTlNPUlNfU01TQzQ3TTE5MikrPSBzbXNjNDdtMTkyLm8KIG9iai0kKENPTkZJR19TRU5TT1JTX1ZJQTY4NkEpCSs9IHZpYTY4NmEubwogb2JqLSQoQ09ORklHX1NFTlNPUlNfVlQ4MjMxKQkrPSB2dDgyMzEubwogb2JqLSQoQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGKQkrPSB3ODM2MjdlaGYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hYml0dWd1cnUuYyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkxMjJjYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMKQEAgLTAsMCArMSwxNDE1IEBACisvKgorICAgIGFiaXR1Z3VydS5jIENvcHlyaWdodCAoYykgMjAwNS0yMDA2IEhhbnMgZGUgR29lZGUgPGoudy5yLmRlZ29lZGVAaGhzLm5sPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisqLworLyoKKyAgICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgc2Vuc29yIHBhcnQgb2YgdGhlIGN1c3RvbSBBYml0IHVHdXJ1IGNoaXAgZm91bmQKKyAgICBvbiBBYml0IHVHdXJ1IG1vdGhlcmJvYXJkcy4gTm90ZTogYmVjYXVzZSBvZiBsYWNrIG9mIHNwZWNzIHRoZSBDUFUgLyBSQU0gLworICAgIGV0YyB2b2x0YWdlICYgZnJlcXVlbmN5IGNvbnRyb2wgaXMgbm90IHN1cHBvcnRlZCEKKyovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgorI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKy8qIEJhbmtzICovCisjZGVmaW5lIEFCSVRfVUdVUlVfQUxBUk1fQkFOSwkJCTB4MjAgLyogMXggMyBieXRlcyAqLworI2RlZmluZSBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMQkJCTB4MjEgLyogMTZ4IHZvbHQgYW5kIHRlbXAgKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9GQU5fUFdNCQkJMHgyNCAvKiAzeCA1IGJ5dGVzICovCisjZGVmaW5lIEFCSVRfVUdVUlVfU0VOU09SX0JBTksyCQkJMHgyNiAvKiBmYW5zICovCisvKiBtYXggbnIgb2Ygc2Vuc29ycyBpbiBiYW5rMSwgYSBiYW5rMSBzZW5zb3IgY2FuIGJlIGluLCB0ZW1wIG9yIG5jICovCisjZGVmaW5lIEFCSVRfVUdVUlVfTUFYX0JBTksxX1NFTlNPUlMJCTE2CisvKiBXYXJuaW5nIGlmIHlvdSBpbmNyZWFzZSBvbmUgb2YgdGhlIDIgTUFYIGRlZmluZXMgYmVsb3cgdG8gMTAgb3IgaGlnaGVyIHlvdQorICAgc2hvdWxkIGFkanVzdCB0aGUgYmVsb25naW5nIF9OQU1FU19MRU5HVEggbWFjcm8gZm9yIHRoZSAyIGRpZ2l0IG51bWJlciEgKi8KKy8qIG1heCBuciBvZiBzZW5zb3JzIGluIGJhbmsyLCBjdXJyZW50bHkgbWIncyB3aXRoIG1heCA2IGZhbnMgYXJlIGtub3duICovCisjZGVmaW5lIEFCSVRfVUdVUlVfTUFYX0JBTksyX1NFTlNPUlMJCTYKKy8qIG1heCBuciBvZiBwd20gb3V0cHV0cywgY3VycmVudGx5IG1iJ3Mgd2l0aCBtYXggNSBwd20gb3V0cHV0cyBhcmUga25vd24gKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9NQVhfUFdNUwkJCTUKKy8qIHVHdXJ1IHNlbnNvciBiYW5rIDEgZmxhZ3MgKi8JCQkgICAgIC8qIEFsYXJtIGlmOiAqLworI2RlZmluZSBBQklUX1VHVVJVX1RFTVBfSElHSF9BTEFSTV9FTkFCTEUJMHgwMSAvKiAgdGVtcCBvdmVyIHdhcm4gKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9WT0xUX0hJR0hfQUxBUk1fRU5BQkxFCTB4MDIgLyogIHZvbHQgb3ZlciBtYXggKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9WT0xUX0xPV19BTEFSTV9FTkFCTEUJMHgwNCAvKiAgdm9sdCB1bmRlciBtaW4gKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9URU1QX0hJR0hfQUxBUk1fRkxBRwkJMHgxMCAvKiB0ZW1wIGlzIG92ZXIgd2FybiAqLworI2RlZmluZSBBQklUX1VHVVJVX1ZPTFRfSElHSF9BTEFSTV9GTEFHCQkweDIwIC8qIHZvbHQgaXMgb3ZlciBtYXggKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9WT0xUX0xPV19BTEFSTV9GTEFHCQkweDQwIC8qIHZvbHQgaXMgdW5kZXIgbWluICovCisvKiB1R3VydSBzZW5zb3IgYmFuayAyIGZsYWdzICovCQkJICAgICAvKiBBbGFybSBpZjogKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9GQU5fTE9XX0FMQVJNX0VOQUJMRQkJMHgwMSAvKiAgIGZhbiB1bmRlciBtaW4gKi8KKy8qIHVHdXJ1IHNlbnNvciBiYW5rIGNvbW1vbiBmbGFncyAqLworI2RlZmluZSBBQklUX1VHVVJVX0JFRVBfRU5BQkxFCQkJMHgwOCAvKiBiZWVwIGlmIGFsYXJtICovCisjZGVmaW5lIEFCSVRfVUdVUlVfU0hVVERPV05fRU5BQkxFCQkweDgwIC8qIHNodXRkb3duIGlmIGFsYXJtICovCisvKiB1R3VydSBmYW4gUFdNIChzcGVlZCBjb250cm9sKSBmbGFncyAqLworI2RlZmluZSBBQklUX1VHVVJVX0ZBTl9QV01fRU5BQkxFCQkweDgwIC8qIGVuYWJsZSBzcGVlZCBjb250cm9sICovCisvKiBWYWx1ZXMgdXNlZCBmb3IgY29udmVyc2lvbiAqLworI2RlZmluZSBBQklUX1VHVVJVX0ZBTl9NQVgJCQkxNTMwMCAvKiBSUE0gKi8KKy8qIEJhbmsxIHNlbnNvciB0eXBlcyAqLworI2RlZmluZSBBQklUX1VHVVJVX0lOX1NFTlNPUgkJCTAKKyNkZWZpbmUgQUJJVF9VR1VSVV9URU1QX1NFTlNPUgkJCTEKKyNkZWZpbmUgQUJJVF9VR1VSVV9OQwkJCQkyCisvKiBUaW1lb3V0cyAvIFJldHJpZXMsIGlmIHRoZXNlIHR1cm4gb3V0IHRvIG5lZWQgYSBsb3Qgb2YgZmlkZGxpbmcgd2UgY291bGQKKyAgIGNvbnZlcnQgdGhlbSB0byBwYXJhbXMuICovCisvKiAyNTAgd2FzIGRldGVybWluZWQgYnkgdHJpYWwgYW5kIGVycm9yLCAyMDAgd29ya3MgbW9zdCBvZiB0aGUgdGltZSwgYnV0IG5vdAorICAgYWx3YXlzLiBJIGFzc3VtZSB0aGlzIGlzIGNwdS1zcGVlZCBpbmRlcGVuZGVudCwgc2luY2UgdGhlIElTQS1idXMgYW5kIG5vdAorICAgdGhlIENQVSBzaG91bGQgYmUgdGhlIGJvdHRsZW5lY2suIE5vdGUgdGhhdCAyNTAgc29tZXRpbWVzIGlzIHN0aWxsIG5vdAorICAgZW5vdWdoIChvbmx5IHJlcG9ydGVkIG9uIEFONyBtYikgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgaGlnaGVyIGxheWVyLiAqLworI2RlZmluZSBBQklUX1VHVVJVX1dBSVRfVElNRU9VVAkJCTI1MAorLyogTm9ybWFsbHkgYWxsIGV4cGVjdGVkIHN0YXR1cyBpbiBhYml0dWd1cnVfcmVhZHksIGFyZSByZXBvcnRlZCBhZnRlciB0aGUKKyAgIGZpcnN0IHJlYWQsIGJ1dCBzb21ldGltZXMgbm90IGFuZCB3ZSBuZWVkIHRvIHBvbGwsIDUgcG9sbHMgd2FzIG5vdCBlbm91Z2gKKyAgIDUwIHNvZmFyIGlzLiAqLworI2RlZmluZSBBQklUX1VHVVJVX1JFQURZX1RJTUVPVVQJCTUwCisvKiBNYXhpbXVtIDMgcmV0cmllcyBvbiB0aW1lZG91dCByZWFkcy93cml0ZXMsIGRlbGF5IDIwMCBtcyBiZWZvcmUgcmV0cnlpbmcgKi8KKyNkZWZpbmUgQUJJVF9VR1VSVV9NQVhfUkVUUklFUwkJCTMKKyNkZWZpbmUgQUJJVF9VR1VSVV9SRVRSWV9ERUxBWQkJCShIWi81KQorLyogTWF4aW11bSAyIHRpbWVvdXRzIGluIGFiaXR1Z3VydV91cGRhdGVfZGV2aWNlLCBpb3cgMyBpbiBhIHJvdyBpcyBhbiBlcnJvciAqLworI2RlZmluZSBBQklUX1VHVVJVX01BWF9USU1FT1VUUwkJCTIKKy8qIHV0aWxpdHkgbWFjcm9zICovCisjZGVmaW5lIEFCSVRfVUdVUlVfTkFNRQkJCQkiYWJpdHVndXJ1IgorI2RlZmluZSBBQklUX1VHVVJVX0RFQlVHKGxldmVsLCBmb3JtYXQsIGFyZy4uLikJCQkJXAorCWlmIChsZXZlbCA8PSB2ZXJib3NlKQkJCQkJCVwKKwkJcHJpbnRrKEtFUk5fREVCVUcgQUJJVF9VR1VSVV9OQU1FICI6ICIJZm9ybWF0ICwgIyMgYXJnKQorLyogTWFjcm9zIHRvIGhlbHAgY2FsY3VsYXRlIHRoZSBzeXNmc19uYW1lcyBhcnJheSBsZW5ndGggKi8KKy8qIHN1bSBvZiBzdHJsZW4gb2Y6IGluPz9faW5wdXRcMCwgaW4/P197bWluLG1heH1cMCwgaW4/P197bWluLG1heH1fYWxhcm1cMCwKKyAgIGluPz9fe21pbixtYXh9X2FsYXJtX2VuYWJsZVwwLCBpbj8/X2JlZXBcMCwgaW4/P19zaHV0ZG93blwwICovCisjZGVmaW5lIEFCSVRVR1VSVV9JTl9OQU1FU19MRU5HVEgJKDExICsgMiAqIDkgKyAyICogMTUgKyAyICogMjIgKyAxMCArIDE0KQorLyogc3VtIG9mIHN0cmxlbiBvZjogdGVtcD8/X2lucHV0XDAsIHRlbXA/P19tYXhcMCwgdGVtcD8/X2NyaXRcMCwKKyAgIHRlbXA/P19hbGFybVwwLCB0ZW1wPz9fYWxhcm1fZW5hYmxlXDAsIHRlbXA/P19iZWVwXDAsIHRlbXA/P19zaHV0ZG93blwwICovCisjZGVmaW5lIEFCSVRVR1VSVV9URU1QX05BTUVTX0xFTkdUSAkoMTMgKyAxMSArIDEyICsgMTMgKyAyMCArIDEyICsgMTYpCisvKiBzdW0gb2Ygc3RybGVuIG9mOiBmYW4/X2lucHV0XDAsIGZhbj9fbWluXDAsIGZhbj9fYWxhcm1cMCwKKyAgIGZhbj9fYWxhcm1fZW5hYmxlXDAsIGZhbj9fYmVlcFwwLCBmYW4/X3NodXRkb3duXDAgKi8KKyNkZWZpbmUgQUJJVFVHVVJVX0ZBTl9OQU1FU19MRU5HVEgJKDExICsgOSArIDExICsgMTggKyAxMCArIDE0KQorLyogc3VtIG9mIHN0cmxlbiBvZjogcHdtP19lbmFibGVcMCwgcHdtP19hdXRvX2NoYW5uZWxzX3RlbXBcMCwKKyAgIHB3bT9fYXV0b19wb2ludHsxLDJ9X3B3bVwwLCBwd20/X2F1dG9fcG9pbnR7MSwyfV90ZW1wXDAgKi8KKyNkZWZpbmUgQUJJVFVHVVJVX1BXTV9OQU1FU19MRU5HVEgJKDEyICsgMjQgKyAyICogMjEgKyAyICogMjIpCisvKiBJTl9OQU1FU19MRU5HVEggPiBURU1QX05BTUVTX0xFTkdUSCBzbyBhc3N1bWUgYWxsIGJhbmsxIHNlbnNvcnMgYXJlIGluICovCisjZGVmaW5lIEFCSVRVR1VSVV9TWVNGU19OQU1FU19MRU5HVEgJKCBcCisJQUJJVF9VR1VSVV9NQVhfQkFOSzFfU0VOU09SUyAqIEFCSVRVR1VSVV9JTl9OQU1FU19MRU5HVEggKyBcCisJQUJJVF9VR1VSVV9NQVhfQkFOSzJfU0VOU09SUyAqIEFCSVRVR1VSVV9GQU5fTkFNRVNfTEVOR1RIICsgXAorCUFCSVRfVUdVUlVfTUFYX1BXTVMgKiBBQklUVUdVUlVfUFdNX05BTUVTX0xFTkdUSCkKKworLyogQWxsIHRoZSBtYWNyb3MgYmVsb3cgYXJlIG5hbWVkIGlkZW50aWNhbCB0byB0aGUgb2d1cnUgYW5kIG9ndXJ1MiBwcm9ncmFtcworICAgcmV2ZXJzZSBlbmdpbmVlcmVkIGJ5IE9sbGUgU2FuZGJlcmcsIGhlbmNlIHRoZSBuYW1lcyBtaWdodCBub3QgYmUgMTAwJQorICAgbG9naWNhbC4gSSBjb3VsZCBjb21lIHVwIHdpdGggYmV0dGVyIG5hbWVzLCBidXQgSSBwcmVmZXIga2VlcGluZyB0aGUgbmFtZXMKKyAgIGlkZW50aWNhbCBzbyB0aGF0IHRoaXMgZHJpdmVyIGNhbiBiZSBjb21wYXJlZCB3aXRoIGhpcyB3b3JrIG1vcmUgZWFzaWx5LiAqLworLyogVHdvIGkvby1wb3J0cyBhcmUgdXNlZCBieSB1R3VydSAqLworI2RlZmluZSBBQklUX1VHVVJVX0JBU0UJCQkJMHgwMEUwCisvKiBVc2VkIHRvIHRlbGwgdUd1cnUgd2hhdCB0byByZWFkIGFuZCB0byByZWFkIHRoZSBhY3R1YWwgZGF0YSAqLworI2RlZmluZSBBQklUX1VHVVJVX0NNRAkJCQkweDAwCisvKiBNb3N0bHkgdXNlZCB0byBjaGVjayBpZiB1R3VydSBpcyBidXN5ICovCisjZGVmaW5lIEFCSVRfVUdVUlVfREFUQQkJCQkweDA0CisjZGVmaW5lIEFCSVRfVUdVUlVfUkVHSU9OX0xFTkdUSAkJNQorLyogdUd1cnUgc3RhdHVzJyAqLworI2RlZmluZSBBQklUX1VHVVJVX1NUQVRVU19XUklURQkJCTB4MDAgLyogUmVhZHkgdG8gYmUgd3JpdHRlbiAqLworI2RlZmluZSBBQklUX1VHVVJVX1NUQVRVU19SRUFECQkJMHgwMSAvKiBSZWFkeSB0byBiZSByZWFkICovCisjZGVmaW5lIEFCSVRfVUdVUlVfU1RBVFVTX0lOUFVUCQkJMHgwOCAvKiBNb3JlIGlucHV0ICovCisjZGVmaW5lIEFCSVRfVUdVUlVfU1RBVFVTX1JFQURZCQkJMHgwOSAvKiBSZWFkeSB0byBiZSB3cml0dGVuICovCisKKy8qIENvbnN0YW50cyAqLworLyogaW4gKFZvbHQpIHNlbnNvcnMgZ28gdXAgdG8gMzQ5NCBtViwgdGVtcCB0byAyNTUwMDAgbWlsbGlkZWdyZWVzIENlbHNpdXMgKi8KK3N0YXRpYyBjb25zdCBpbnQgYWJpdHVndXJ1X2JhbmsxX21heF92YWx1ZVsyXSA9IHsgMzQ5NCwgMjU1MDAwIH07CisvKiBNaW4gLyBNYXggYWxsb3dlZCB2YWx1ZXMgZm9yIHNlbnNvcjIgKGZhbikgYWxhcm0gdGhyZXNob2xkLCB0aGVzZSB2YWx1ZXMKKyAgIGNvcnJlc3BvbmQgdG8gMzAwLTMwMDAgUlBNICovCitzdGF0aWMgY29uc3QgdTggYWJpdHVndXJ1X2JhbmsyX21pbl90aHJlc2hvbGQgPSA1Oworc3RhdGljIGNvbnN0IHU4IGFiaXR1Z3VydV9iYW5rMl9tYXhfdGhyZXNob2xkID0gNTA7CisvKiBSZWdpc3RlciAwIGlzIGEgYml0ZmllbGQsIDEgYW5kIDIgYXJlIHB3bSBzZXR0aW5ncyAoMjU1ID0gMTAwJSksIDMgYW5kIDQKKyAgIGFyZSB0ZW1wZXJhdHVyZSB0cmlwIHBvaW50cy4gKi8KK3N0YXRpYyBjb25zdCBpbnQgYWJpdHVndXJ1X3B3bV9zZXR0aW5nc19tdWx0aXBsaWVyWzVdID0geyAwLCAxLCAxLCAxMDAwLCAxMDAwIH07CisvKiBNaW4gLyBNYXggYWxsb3dlZCB2YWx1ZXMgZm9yIHB3bV9zZXR0aW5ncy4gTm90ZTogcHdtMSAoQ1BVIGZhbikgaXMgYQorICAgc3BlY2lhbCBjYXNlIHRoZSBtaW5pdW0gYWxsb3dlZCBwd20lIHNldHRpbmcgZm9yIHRoaXMgaXMgMzAlICg3Nykgb24KKyAgIHNvbWUgTUIncyB0aGlzIHNwZWNpYWwgY2FzZSBpcyBoYW5kbGVkIGluIHRoZSBjb2RlISAqLworc3RhdGljIGNvbnN0IHU4IGFiaXR1Z3VydV9wd21fbWluWzVdID0geyAwLCAxNzAsIDE3MCwgMjUsIDI1IH07CitzdGF0aWMgY29uc3QgdTggYWJpdHVndXJ1X3B3bV9tYXhbNV0gPSB7IDAsIDI1NSwgMjU1LCA3NSwgNzUgfTsKKworCisvKiBJbnNtb2QgcGFyYW1ldGVycyAqLworc3RhdGljIGludCBmb3JjZTsKK21vZHVsZV9wYXJhbShmb3JjZSwgYm9vbCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKGZvcmNlLCAiU2V0IHRvIG9uZSB0byBmb3JjZSBkZXRlY3Rpb24uIik7CitzdGF0aWMgaW50IGZhbl9zZW5zb3JzOworbW9kdWxlX3BhcmFtKGZhbl9zZW5zb3JzLCBpbnQsIDApOworTU9EVUxFX1BBUk1fREVTQyhmYW5fc2Vuc29ycywgIk51bWJlciBvZiBmYW4gc2Vuc29ycyBvbiB0aGUgdUd1cnUgIgorCSIoMCA9IGF1dG9kZXRlY3QpIik7CitzdGF0aWMgaW50IHB3bXM7Cittb2R1bGVfcGFyYW0ocHdtcywgaW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MocHdtcywgIk51bWJlciBvZiBQV01zIG9uIHRoZSB1R3VydSAiCisJIigwID0gYXV0b2RldGVjdCkiKTsKKworLyogRGVmYXVsdCB2ZXJib3NlIGlzIDIsIHNpbmNlIHRoaXMgZHJpdmVyIGlzIHN0aWxsIGluIHRoZSB0ZXN0aW5nIHBoYXNlICovCitzdGF0aWMgaW50IHZlcmJvc2UgPSAyOworbW9kdWxlX3BhcmFtKHZlcmJvc2UsIGludCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKHZlcmJvc2UsICJIb3cgdmVyYm9zZSBzaG91bGQgdGhlIGRyaXZlciBiZT8gKDAtMyk6XG4iCisJIiAgIDAgbm9ybWFsIG91dHB1dFxuIgorCSIgICAxICsgdmVyYm9zZSBlcnJvciByZXBvcnRpbmdcbiIKKwkiICAgMiArIHNlbnNvcnMgdHlwZSBwcm9iaW5nIGluZm9cbiIKKwkiICAgMyArIHJldHJ5YWJsZSBlcnJvciByZXBvcnRpbmciKTsKKworCisvKiBGb3IgdGhlIEFiaXQgdUd1cnUsIHdlIG5lZWQgdG8ga2VlcCBzb21lIGRhdGEgaW4gbWVtb3J5LgorICAgVGhlIHN0cnVjdHVyZSBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQsIGF0IHRoZSBzYW1lIHRpbWUgd2hlbiBhIG5ldworICAgYWJpdHVndXJ1IGRldmljZSBpcyBhbGxvY2F0ZWQuICovCitzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgeworCXN0cnVjdCBjbGFzc19kZXZpY2UgKmNsYXNzX2RldjsgLyogaHdtb24gcmVnaXN0ZXJlZCBkZXZpY2UgKi8KKwlzdHJ1Y3QgbXV0ZXggdXBkYXRlX2xvY2s7CS8qIHByb3RlY3QgYWNjZXNzIHRvIGRhdGEgYW5kIHVHdXJ1ICovCisJdW5zaWduZWQgbG9uZyBsYXN0X3VwZGF0ZWQ7CS8qIEluIGppZmZpZXMgKi8KKwl1bnNpZ25lZCBzaG9ydCBhZGRyOwkJLyogdWd1cnUgYmFzZSBhZGRyZXNzICovCisJY2hhciB1Z3VydV9yZWFkeTsJCS8qIGlzIHRoZSB1Z3VydSBpbiByZWFkeSBzdGF0ZT8gKi8KKwl1bnNpZ25lZCBjaGFyIHVwZGF0ZV90aW1lb3V0czsJLyogbnVtYmVyIG9mIHVwZGF0ZSB0aW1lb3V0cyBzaW5jZSBsYXN0CisJCQkJCSAgIHN1Y2Nlc3NmdWwgdXBkYXRlICovCisKKwkvKiBUaGUgc3lzZnMgYXR0ciBhbmQgdGhlaXIgbmFtZXMgYXJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LCBmb3IgYmFuazEKKwkgICB3ZSBjYW5ub3QgdXNlIGEgcHJlZGVmaW5lZCBhcnJheSBiZWNhdXNlIHdlIGRvbid0IGtub3cgYmVmb3JlaGFuZAorCSAgIG9mIGEgc2Vuc29yIGlzIGEgdm9sdCBvciBhIHRlbXAgc2Vuc29yLCBmb3IgYmFuazIgYW5kIHRoZSBwd21zIGl0cworCSAgIGVhc2llciB0b2RvIHRoaW5ncyB0aGUgc2FtZSB3YXkuICBGb3IgaW4gc2Vuc29ycyB3ZSBoYXZlIDkgKHRlbXAgNykKKwkgICBzeXNmcyBlbnRyaWVzIHBlciBzZW5zb3IsIGZvciBiYW5rMiBhbmQgcHdtcyA2LiAqLworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yIHN5c2ZzX2F0dHJbCisJCUFCSVRfVUdVUlVfTUFYX0JBTksxX1NFTlNPUlMgKiA5ICsKKwkJQUJJVF9VR1VSVV9NQVhfQkFOSzJfU0VOU09SUyAqIDYgKyBBQklUX1VHVVJVX01BWF9QV01TICogNl07CisJLyogQnVmZmVyIHRvIHN0b3JlIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgc3lzZnMgbmFtZXMgKi8KKwljaGFyIHN5c2ZzX25hbWVzW0FCSVRVR1VSVV9TWVNGU19OQU1FU19MRU5HVEhdOworCisJLyogQmFuayAxIGRhdGEgKi8KKwkvKiBudW1iZXIgb2YgYW5kIGFkZHJlc3NlcyBvZiBbMF0gaW4sIFsxXSB0ZW1wIHNlbnNvcnMgKi8KKwl1OCBiYW5rMV9zZW5zb3JzWzJdOworCXU4IGJhbmsxX2FkZHJlc3NbMl1bQUJJVF9VR1VSVV9NQVhfQkFOSzFfU0VOU09SU107CisJdTggYmFuazFfdmFsdWVbQUJJVF9VR1VSVV9NQVhfQkFOSzFfU0VOU09SU107CisJLyogVGhpcyBhcnJheSBob2xkcyAzIGVudHJpZXMgcGVyIHNlbnNvciBmb3IgdGhlIGJhbmsgMSBzZW5zb3Igc2V0dGluZ3MKKwkgICAoZmxhZ3MsIG1pbiwgbWF4IGZvciB2b2x0YWdlIC8gZmxhZ3MsIHdhcm4sIHNodXRkb3duIGZvciB0ZW1wKS4gKi8KKwl1OCBiYW5rMV9zZXR0aW5nc1tBQklUX1VHVVJVX01BWF9CQU5LMV9TRU5TT1JTXVszXTsKKwkvKiBNYXhpbXVtIHZhbHVlIGZvciBlYWNoIHNlbnNvciB1c2VkIGZvciBzY2FsaW5nIGluIG1WL21pbGxpZGVncmVlcworCSAgIENlbHNpdXMuICovCisJaW50IGJhbmsxX21heF92YWx1ZVtBQklUX1VHVVJVX01BWF9CQU5LMV9TRU5TT1JTXTsKKworCS8qIEJhbmsgMiBkYXRhLCBBQklUX1VHVVJVX01BWF9CQU5LMl9TRU5TT1JTIGVudHJpZXMgZm9yIGJhbmsyICovCisJdTggYmFuazJfc2Vuc29yczsgLyogYWN0dWFsIG51bWJlciBvZiBiYW5rMiBzZW5zb3JzIGZvdW5kICovCisJdTggYmFuazJfdmFsdWVbQUJJVF9VR1VSVV9NQVhfQkFOSzJfU0VOU09SU107CisJdTggYmFuazJfc2V0dGluZ3NbQUJJVF9VR1VSVV9NQVhfQkFOSzJfU0VOU09SU11bMl07IC8qIGZsYWdzLCBtaW4gKi8KKworCS8qIEFsYXJtcyAyIGJ5dGVzIGZvciBiYW5rMSwgMSBieXRlIGZvciBiYW5rMiAqLworCXU4IGFsYXJtc1szXTsKKworCS8qIEZhbiBQV00gKHNwZWVkIGNvbnRyb2wpIDUgYnl0ZXMgcGVyIFBXTSAqLworCXU4IHB3bXM7IC8qIGFjdHVhbCBudW1iZXIgb2YgcHdtcyBmb3VuZCAqLworCXU4IHB3bV9zZXR0aW5nc1tBQklUX1VHVVJVX01BWF9QV01TXVs1XTsKK307CisKKy8qIHdhaXQgdGlsbCB0aGUgdWd1cnUgaXMgaW4gdGhlIHNwZWNpZmllZCBzdGF0ZSAqLworc3RhdGljIGludCBhYml0dWd1cnVfd2FpdChzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEsIHU4IHN0YXRlKQoreworCWludCB0aW1lb3V0ID0gQUJJVF9VR1VSVV9XQUlUX1RJTUVPVVQ7CisKKwl3aGlsZSAoaW5iX3AoZGF0YS0+YWRkciArIEFCSVRfVUdVUlVfREFUQSkgIT0gc3RhdGUpIHsKKwkJdGltZW91dC0tOworCQlpZiAodGltZW91dCA9PSAwKQorCQkJcmV0dXJuIC1FQlVTWTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qIFB1dCB0aGUgdWd1cnUgaW4gcmVhZHkgZm9yIGlucHV0IHN0YXRlICovCitzdGF0aWMgaW50IGFiaXR1Z3VydV9yZWFkeShzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEpCit7CisJaW50IHRpbWVvdXQgPSBBQklUX1VHVVJVX1JFQURZX1RJTUVPVVQ7CisKKwlpZiAoZGF0YS0+dWd1cnVfcmVhZHkpCisJCXJldHVybiAwOworCisJLyogUmVzZXQ/IC8gUHJlcGFyZSBmb3IgbmV4dCByZWFkL3dyaXRlIGN5Y2xlICovCisJb3V0YigweDAwLCBkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9EQVRBKTsKKworCS8qIFdhaXQgdGlsbCB0aGUgdWd1cnUgaXMgcmVhZHkgKi8KKwlpZiAoYWJpdHVndXJ1X3dhaXQoZGF0YSwgQUJJVF9VR1VSVV9TVEFUVVNfUkVBRFkpKSB7CisJCUFCSVRfVUdVUlVfREVCVUcoMSwKKwkJCSJ0aW1lb3V0IGV4Y2VlZGVkIHdhaXRpbmcgZm9yIHJlYWR5IHN0YXRlXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogQ21kIHBvcnQgTVVTVCBiZSByZWFkIG5vdyBhbmQgc2hvdWxkIGNvbnRhaW4gMHhBQyAqLworCXdoaWxlIChpbmJfcChkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9DTUQpICE9IDB4QUMpIHsKKwkJdGltZW91dC0tOworCQlpZiAodGltZW91dCA9PSAwKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDEsCisJCQkgICAiQ01EIHJlZyBkb2VzIG5vdCBob2xkIDB4QUMgYWZ0ZXIgcmVhZHkgY29tbWFuZFxuIik7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKworCS8qIEFmdGVyIHRoaXMgdGhlIEFCSVRfVUdVUlVfREFUQSBwb3J0IHNob3VsZCBjb250YWluCisJICAgQUJJVF9VR1VSVV9TVEFUVVNfSU5QVVQgKi8KKwl0aW1lb3V0ID0gQUJJVF9VR1VSVV9SRUFEWV9USU1FT1VUOworCXdoaWxlIChpbmJfcChkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9EQVRBKSAhPSBBQklUX1VHVVJVX1NUQVRVU19JTlBVVCkgeworCQl0aW1lb3V0LS07CisJCWlmICh0aW1lb3V0ID09IDApIHsKKwkJCUFCSVRfVUdVUlVfREVCVUcoMSwKKwkJCQkic3RhdGUgIT0gbW9yZSBpbnB1dCBhZnRlciByZWFkeSBjb21tYW5kXG4iKTsKKwkJCXJldHVybiAtRUlPOworCQl9CisJfQorCisJZGF0YS0+dWd1cnVfcmVhZHkgPSAxOworCXJldHVybiAwOworfQorCisvKiBTZW5kIHRoZSBiYW5rIGFuZCB0aGVuIHNlbnNvciBhZGRyZXNzIHRvIHRoZSB1R3VydSBmb3IgdGhlIG5leHQgcmVhZC93cml0ZQorICAgY3ljbGUuIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYXMgdGhlIGZpcnN0IHBhcnQgb2YgYSByZWFkL3dyaXRlIGJ5CisgICBhYml0dWd1cnVfcmVhZCBhbmQgYWJpdHVndXJ1X3dyaXRlLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBiZQorICAgY2FsbGVkIGJ5IGFueSBvdGhlciBmdW5jdGlvbi4gKi8KK3N0YXRpYyBpbnQgYWJpdHVndXJ1X3NlbmRfYWRkcmVzcyhzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEsCisJdTggYmFua19hZGRyLCB1OCBzZW5zb3JfYWRkciwgaW50IHJldHJpZXMpCit7CisJLyogYXNzdW1lIHRoZSBjYWxsZXIgZG9lcyBlcnJvciBoYW5kbGluZyBpdHNlbGYgaWYgaXQgaGFzIG5vdCByZXF1ZXN0ZWQKKwkgICBhbnkgcmV0cmllcywgYW5kIHRodXMgYmUgcXVpZXQuICovCisJaW50IHJlcG9ydF9lcnJvcnMgPSByZXRyaWVzOworCisJZm9yICg7OykgeworCQkvKiBNYWtlIHN1cmUgdGhlIHVndXJ1IGlzIHJlYWR5IGFuZCB0aGVuIHNlbmQgdGhlIGJhbmsgYWRkcmVzcywKKwkJICAgYWZ0ZXIgdGhpcyB0aGUgdWd1cnUgaXMgbm8gbG9uZ2VyICJyZWFkeSIuICovCisJCWlmIChhYml0dWd1cnVfcmVhZHkoZGF0YSkgIT0gMCkKKwkJCXJldHVybiAtRUlPOworCQlvdXRiKGJhbmtfYWRkciwgZGF0YS0+YWRkciArIEFCSVRfVUdVUlVfREFUQSk7CisJCWRhdGEtPnVndXJ1X3JlYWR5ID0gMDsKKworCQkvKiBXYWl0IHRpbGwgdGhlIHVndXJ1IGlzIEFCSVRfVUdVUlVfU1RBVFVTX0lOUFVUIHN0YXRlIGFnYWluCisJCSAgIGFuZCBzZW5kIHRoZSBzZW5zb3IgYWRkciAqLworCQlpZiAoYWJpdHVndXJ1X3dhaXQoZGF0YSwgQUJJVF9VR1VSVV9TVEFUVVNfSU5QVVQpKSB7CisJCQlpZiAocmV0cmllcykgeworCQkJCUFCSVRfVUdVUlVfREVCVUcoMywgInRpbWVvdXQgZXhjZWVkZWQgIgorCQkJCQkid2FpdGluZyBmb3IgbW9yZSBpbnB1dCBzdGF0ZSwgJWQgIgorCQkJCQkidHJpZXMgcmVtYWluaW5nXG4iLCByZXRyaWVzKTsKKwkJCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBUSUJMRSk7CisJCQkJc2NoZWR1bGVfdGltZW91dChBQklUX1VHVVJVX1JFVFJZX0RFTEFZKTsKKwkJCQlyZXRyaWVzLS07CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAocmVwb3J0X2Vycm9ycykKKwkJCQlBQklUX1VHVVJVX0RFQlVHKDEsICJ0aW1lb3V0IGV4Y2VlZGVkICIKKwkJCQkJIndhaXRpbmcgZm9yIG1vcmUgaW5wdXQgc3RhdGUgIgorCQkJCQkiKGJhbms6ICVkKVxuIiwgKGludCliYW5rX2FkZHIpOworCQkJcmV0dXJuIC1FQlVTWTsKKwkJfQorCQlvdXRiKHNlbnNvcl9hZGRyLCBkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9DTUQpOworCQlyZXR1cm4gMDsKKwl9Cit9CisKKy8qIFJlYWQgY291bnQgYnl0ZXMgZnJvbSBzZW5zb3Igc2Vuc29yX2FkZHIgaW4gYmFuayBiYW5rX2FkZHIgYW5kIHN0b3JlIHRoZQorICAgcmVzdWx0IGluIGJ1ZiwgcmV0cnkgdGhlIHNlbmQgYWRkcmVzcyBwYXJ0IG9mIHRoZSByZWFkIHJldHJpZXMgdGltZXMuICovCitzdGF0aWMgaW50IGFiaXR1Z3VydV9yZWFkKHN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSwKKwl1OCBiYW5rX2FkZHIsIHU4IHNlbnNvcl9hZGRyLCB1OCAqYnVmLCBpbnQgY291bnQsIGludCByZXRyaWVzKQoreworCWludCBpOworCisJLyogU2VuZCB0aGUgYWRkcmVzcyAqLworCWkgPSBhYml0dWd1cnVfc2VuZF9hZGRyZXNzKGRhdGEsIGJhbmtfYWRkciwgc2Vuc29yX2FkZHIsIHJldHJpZXMpOworCWlmIChpKQorCQlyZXR1cm4gaTsKKworCS8qIEFuZCByZWFkIHRoZSBkYXRhICovCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJaWYgKGFiaXR1Z3VydV93YWl0KGRhdGEsIEFCSVRfVUdVUlVfU1RBVFVTX1JFQUQpKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDEsICJ0aW1lb3V0IGV4Y2VlZGVkIHdhaXRpbmcgZm9yICIKKwkJCQkicmVhZCBzdGF0ZSAoYmFuazogJWQsIHNlbnNvcjogJWQpXG4iLAorCQkJCShpbnQpYmFua19hZGRyLCAoaW50KXNlbnNvcl9hZGRyKTsKKwkJCWJyZWFrOworCQl9CisJCWJ1ZltpXSA9IGluYihkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9DTUQpOworCX0KKworCS8qIExhc3QgcHV0IHRoZSBjaGlwIGJhY2sgaW4gcmVhZHkgc3RhdGUgKi8KKwlhYml0dWd1cnVfcmVhZHkoZGF0YSk7CisKKwlyZXR1cm4gaTsKK30KKworLyogV3JpdGUgY291bnQgYnl0ZXMgZnJvbSBidWYgdG8gc2Vuc29yIHNlbnNvcl9hZGRyIGluIGJhbmsgYmFua19hZGRyLCB0aGUgc2VuZAorICAgYWRkcmVzcyBwYXJ0IG9mIHRoZSB3cml0ZSBpcyBhbHdheXMgcmV0cmllZCBBQklUX1VHVVJVX01BWF9SRVRSSUVTIHRpbWVzLiAqLworc3RhdGljIGludCBhYml0dWd1cnVfd3JpdGUoc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhLAorCXU4IGJhbmtfYWRkciwgdTggc2Vuc29yX2FkZHIsIHU4ICpidWYsIGludCBjb3VudCkKK3sKKwlpbnQgaTsKKworCS8qIFNlbmQgdGhlIGFkZHJlc3MgKi8KKwlpID0gYWJpdHVndXJ1X3NlbmRfYWRkcmVzcyhkYXRhLCBiYW5rX2FkZHIsIHNlbnNvcl9hZGRyLAorCQlBQklUX1VHVVJVX01BWF9SRVRSSUVTKTsKKwlpZiAoaSkKKwkJcmV0dXJuIGk7CisKKwkvKiBBbmQgd3JpdGUgdGhlIGRhdGEgKi8KKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQlpZiAoYWJpdHVndXJ1X3dhaXQoZGF0YSwgQUJJVF9VR1VSVV9TVEFUVVNfV1JJVEUpKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDEsICJ0aW1lb3V0IGV4Y2VlZGVkIHdhaXRpbmcgZm9yICIKKwkJCQkid3JpdGUgc3RhdGUgKGJhbms6ICVkLCBzZW5zb3I6ICVkKVxuIiwKKwkJCQkoaW50KWJhbmtfYWRkciwgKGludClzZW5zb3JfYWRkcik7CisJCQlicmVhazsKKwkJfQorCQlvdXRiKGJ1ZltpXSwgZGF0YS0+YWRkciArIEFCSVRfVUdVUlVfQ01EKTsKKwl9CisKKwkvKiBOb3cgd2UgbmVlZCB0byB3YWl0IHRpbGwgdGhlIGNoaXAgaXMgcmVhZHkgdG8gYmUgcmVhZCBhZ2FpbiwKKwkgICBkb24ndCBhc2sgd2h5ICovCisJaWYgKGFiaXR1Z3VydV93YWl0KGRhdGEsIEFCSVRfVUdVUlVfU1RBVFVTX1JFQUQpKSB7CisJCUFCSVRfVUdVUlVfREVCVUcoMSwgInRpbWVvdXQgZXhjZWVkZWQgd2FpdGluZyBmb3IgcmVhZCBzdGF0ZSAiCisJCQkiYWZ0ZXIgd3JpdGUgKGJhbms6ICVkLCBzZW5zb3I6ICVkKVxuIiwgKGludCliYW5rX2FkZHIsCisJCQkoaW50KXNlbnNvcl9hZGRyKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJLyogQ21kIHBvcnQgTVVTVCBiZSByZWFkIG5vdyBhbmQgc2hvdWxkIGNvbnRhaW4gMHhBQyAqLworCWlmIChpbmJfcChkYXRhLT5hZGRyICsgQUJJVF9VR1VSVV9DTUQpICE9IDB4QUMpIHsKKwkJQUJJVF9VR1VSVV9ERUJVRygxLCAiQ01EIHJlZyBkb2VzIG5vdCBob2xkIDB4QUMgYWZ0ZXIgd3JpdGUgIgorCQkJIihiYW5rOiAlZCwgc2Vuc29yOiAlZClcbiIsIChpbnQpYmFua19hZGRyLAorCQkJKGludClzZW5zb3JfYWRkcik7CisJCXJldHVybiAtRUlPOworCX0KKworCS8qIExhc3QgcHV0IHRoZSBjaGlwIGJhY2sgaW4gcmVhZHkgc3RhdGUgKi8KKwlhYml0dWd1cnVfcmVhZHkoZGF0YSk7CisKKwlyZXR1cm4gaTsKK30KKworLyogRGV0ZWN0IHNlbnNvciB0eXBlLiBUZW1wIGFuZCBWb2x0IHNlbnNvcnMgYXJlIGVuYWJsZWQgd2l0aAorICAgZGlmZmVyZW50IG1hc2tzIGFuZCB3aWxsIGlnbm9yZSBlbmFibGUgbWFza3Mgbm90IG1lYW50IGZvciB0aGVtLgorICAgVGhpcyBlbmFibGVzIHVzIHRvIHRlc3Qgd2hhdCBraW5kIG9mIHNlbnNvciB3ZSdyZSBkZWFsaW5nIHdpdGguCisgICBCeSBzZXR0aW5nIHRoZSBhbGFybSB0aHJlc2hvbGRzIHNvIHRoYXQgd2Ugd2lsbCBhbHdheXMgZ2V0IGFuCisgICBhbGFybSBmb3Igc2Vuc29yIHR5cGUgWCBhbmQgdGhlbiBlbmFibGluZyB0aGUgc2Vuc29yIGFzIHNlbnNvciB0eXBlCisgICBYLCBpZiB3ZSB0aGVuIGdldCBhbiBhbGFybSBpdCBpcyBhIHNlbnNvciBvZiB0eXBlIFguICovCitzdGF0aWMgaW50IF9fZGV2aW5pdAorYWJpdHVndXJ1X2RldGVjdF9iYW5rMV9zZW5zb3JfdHlwZShzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEsCisJCQkJICAgdTggc2Vuc29yX2FkZHIpCit7CisJdTggdmFsLCBidWZbM107CisJaW50IHJldCA9IEFCSVRfVUdVUlVfTkM7CisKKwkvKiBGaXJzdCByZWFkIHRoZSBzZW5zb3IgYW5kIHRoZSBjdXJyZW50IHNldHRpbmdzICovCisJaWYgKGFiaXR1Z3VydV9yZWFkKGRhdGEsIEFCSVRfVUdVUlVfU0VOU09SX0JBTksxLCBzZW5zb3JfYWRkciwgJnZhbCwKKwkJCTEsIEFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDEpCisJCXJldHVybiAtRU5PREVWOworCisJLyogVGVzdCB2YWwgaXMgc2FuZSAvIHVzYWJsZSBmb3Igc2Vuc29yIHR5cGUgZGV0ZWN0aW9uLiAqLworCWlmICgodmFsIDwgMTB1KSB8fCAodmFsID4gMjQwdSkpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyBBQklUX1VHVVJVX05BTUUKKwkJCSI6IGJhbmsxLXNlbnNvcjogJWQgcmVhZGluZyAoJWQpIHRvbyBjbG9zZSB0byBsaW1pdHMsICIKKwkJCSJ1bmFibGUgdG8gZGV0ZXJtaW5lIHNlbnNvciB0eXBlLCBza2lwcGluZyBzZW5zb3JcbiIsCisJCQkoaW50KXNlbnNvcl9hZGRyLCAoaW50KXZhbCk7CisJCS8qIGFzc3VtZSBubyBzZW5zb3IgaXMgdGhlcmUgZm9yIHNlbnNvcnMgZm9yIHdoaWNoIHdlIGNhbid0CisJCSAgIGRldGVybWluZSB0aGUgc2Vuc29yIHR5cGUgYmVjYXVzZSB0aGVpciByZWFkaW5nIGlzIHRvbyBjbG9zZQorCQkgICB0byB0aGVpciBsaW1pdHMsIHRoaXMgdXN1YWxseSBtZWFucyBubyBzZW5zb3IgaXMgdGhlcmUuICovCisJCXJldHVybiBBQklUX1VHVVJVX05DOworCX0KKworCUFCSVRfVUdVUlVfREVCVUcoMiwgInRlc3RpbmcgYmFuazEgc2Vuc29yICVkXG4iLCAoaW50KXNlbnNvcl9hZGRyKTsKKwkvKiBWb2x0IHNlbnNvciB0ZXN0LCBlbmFibGUgdm9sdCBsb3cgYWxhcm0sIHNldCBtaW4gdmFsdWUgcmlkaWNvdXNseQorCSAgIGhpZ2guIElmIGl0cyBhIHZvbHQgc2Vuc29yIHRoaXMgc2hvdWxkIGFsd2F5cyBnaXZlIHVzIGFuIGFsYXJtLiAqLworCWJ1ZlswXSA9IEFCSVRfVUdVUlVfVk9MVF9MT1dfQUxBUk1fRU5BQkxFOworCWJ1ZlsxXSA9IDI0NTsKKwlidWZbMl0gPSAyNTA7CisJaWYgKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMSArIDIsIHNlbnNvcl9hZGRyLAorCQkJYnVmLCAzKSAhPSAzKQorCQlyZXR1cm4gLUVOT0RFVjsKKwkvKiBOb3cgd2UgbmVlZCAyMCBtcyB0byBnaXZlIHRoZSB1Z3VydSB0aW1lIHRvIHJlYWQgdGhlIHNlbnNvcnMKKwkgICBhbmQgcmFpc2UgYSB2b2x0YWdlIGFsYXJtICovCisJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOworCXNjaGVkdWxlX3RpbWVvdXQoSFovNTApOworCS8qIENoZWNrIGZvciBhbGFybSBhbmQgY2hlY2sgdGhlIGFsYXJtIGlzIGEgdm9sdCBsb3cgYWxhcm0uICovCisJaWYgKGFiaXR1Z3VydV9yZWFkKGRhdGEsIEFCSVRfVUdVUlVfQUxBUk1fQkFOSywgMCwgYnVmLCAzLAorCQkJQUJJVF9VR1VSVV9NQVhfUkVUUklFUykgIT0gMykKKwkJcmV0dXJuIC1FTk9ERVY7CisJaWYgKGJ1ZltzZW5zb3JfYWRkci84XSAmICgweDAxIDw8IChzZW5zb3JfYWRkciAlIDgpKSkgeworCQlpZiAoYWJpdHVndXJ1X3JlYWQoZGF0YSwgQUJJVF9VR1VSVV9TRU5TT1JfQkFOSzEgKyAxLAorCQkJCXNlbnNvcl9hZGRyLCBidWYsIDMsCisJCQkJQUJJVF9VR1VSVV9NQVhfUkVUUklFUykgIT0gMykKKwkJCXJldHVybiAtRU5PREVWOworCQlpZiAoYnVmWzBdICYgQUJJVF9VR1VSVV9WT0xUX0xPV19BTEFSTV9GTEFHKSB7CisJCQkvKiBSZXN0b3JlIG9yaWdpbmFsIHNldHRpbmdzICovCisJCQlpZiAoYWJpdHVndXJ1X3dyaXRlKGRhdGEsIEFCSVRfVUdVUlVfU0VOU09SX0JBTksxICsgMiwKKwkJCQkJc2Vuc29yX2FkZHIsCisJCQkJCWRhdGEtPmJhbmsxX3NldHRpbmdzW3NlbnNvcl9hZGRyXSwKKwkJCQkJMykgIT0gMykKKwkJCQlyZXR1cm4gLUVOT0RFVjsKKwkJCUFCSVRfVUdVUlVfREVCVUcoMiwgIiAgZm91bmQgdm9sdCBzZW5zb3JcbiIpOworCQkJcmV0dXJuIEFCSVRfVUdVUlVfSU5fU0VOU09SOworCQl9IGVsc2UKKwkJCUFCSVRfVUdVUlVfREVCVUcoMiwgIiAgYWxhcm0gcmFpc2VkIGR1cmluZyB2b2x0ICIKKwkJCQkic2Vuc29yIHRlc3QsIGJ1dCB2b2x0IGxvdyBmbGFnIG5vdCBzZXRcbiIpOworCX0gZWxzZQorCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIGFsYXJtIG5vdCByYWlzZWQgZHVyaW5nIHZvbHQgc2Vuc29yICIKKwkJCSJ0ZXN0XG4iKTsKKworCS8qIFRlbXAgc2Vuc29yIHRlc3QsIGVuYWJsZSBzZW5zb3IgYXMgYSB0ZW1wIHNlbnNvciwgc2V0IGJlZXAgdmFsdWUKKwkgICByaWRpY291c2x5IGxvdyAoYnV0IG5vdCB0b28gbG93LCBvdGhlcndpc2UgdWd1cnUgaWdub3JlcyBpdCkuCisJICAgSWYgaXRzIGEgdGVtcCBzZW5zb3IgdGhpcyBzaG91bGQgYWx3YXlzIGdpdmUgdXMgYW4gYWxhcm0uICovCisJYnVmWzBdID0gQUJJVF9VR1VSVV9URU1QX0hJR0hfQUxBUk1fRU5BQkxFOworCWJ1ZlsxXSA9IDU7CisJYnVmWzJdID0gMTA7CisJaWYgKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMSArIDIsIHNlbnNvcl9hZGRyLAorCQkJYnVmLCAzKSAhPSAzKQorCQlyZXR1cm4gLUVOT0RFVjsKKwkvKiBOb3cgd2UgbmVlZCA1MCBtcyB0byBnaXZlIHRoZSB1Z3VydSB0aW1lIHRvIHJlYWQgdGhlIHNlbnNvcnMKKwkgICBhbmQgcmFpc2UgYSB0ZW1wIGFsYXJtICovCisJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOworCXNjaGVkdWxlX3RpbWVvdXQoSFovMjApOworCS8qIENoZWNrIGZvciBhbGFybSBhbmQgY2hlY2sgdGhlIGFsYXJtIGlzIGEgdGVtcCBoaWdoIGFsYXJtLiAqLworCWlmIChhYml0dWd1cnVfcmVhZChkYXRhLCBBQklUX1VHVVJVX0FMQVJNX0JBTkssIDAsIGJ1ZiwgMywKKwkJCUFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDMpCisJCXJldHVybiAtRU5PREVWOworCWlmIChidWZbc2Vuc29yX2FkZHIvOF0gJiAoMHgwMSA8PCAoc2Vuc29yX2FkZHIgJSA4KSkpIHsKKwkJaWYgKGFiaXR1Z3VydV9yZWFkKGRhdGEsIEFCSVRfVUdVUlVfU0VOU09SX0JBTksxICsgMSwKKwkJCQlzZW5zb3JfYWRkciwgYnVmLCAzLAorCQkJCUFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDMpCisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJaWYgKGJ1ZlswXSAmIEFCSVRfVUdVUlVfVEVNUF9ISUdIX0FMQVJNX0ZMQUcpIHsKKwkJCXJldCA9IEFCSVRfVUdVUlVfVEVNUF9TRU5TT1I7CisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIGZvdW5kIHRlbXAgc2Vuc29yXG4iKTsKKwkJfSBlbHNlCisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIGFsYXJtIHJhaXNlZCBkdXJpbmcgdGVtcCAiCisJCQkJInNlbnNvciB0ZXN0LCBidXQgdGVtcCBoaWdoIGZsYWcgbm90IHNldFxuIik7CisJfSBlbHNlCisJCUFCSVRfVUdVUlVfREVCVUcoMiwgIiAgYWxhcm0gbm90IHJhaXNlZCBkdXJpbmcgdGVtcCBzZW5zb3IgIgorCQkJInRlc3RcbiIpOworCisJLyogUmVzdG9yZSBvcmlnaW5hbCBzZXR0aW5ncyAqLworCWlmIChhYml0dWd1cnVfd3JpdGUoZGF0YSwgQUJJVF9VR1VSVV9TRU5TT1JfQkFOSzEgKyAyLCBzZW5zb3JfYWRkciwKKwkJCWRhdGEtPmJhbmsxX3NldHRpbmdzW3NlbnNvcl9hZGRyXSwgMykgIT0gMykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiBUaGVzZSBmdW5jdGlvbnMgdHJ5IHRvIGZpbmQgb3V0IGhvdyBtYW55IHNlbnNvcnMgdGhlcmUgYXJlIGluIGJhbmsyIGFuZCBob3cKKyAgIG1hbnkgcHdtcyB0aGVyZSBhcmUuIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgZ2l2ZQorICAgdGhlIHVzZXIgdGhlIHBvc3NpYmlsaXR5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3Igbm9uLWV4aXN0ZW50IHNlbnNvcnMgLyBwd20uCisgICBUaGUgdUd1cnUgd2lsbCBoYXBwaWx5IHJlYWQgLyB3cml0ZSB3aGF0ZXZlciBtZW1vcnkgaGFwcGVucyB0byBiZSBhZnRlciB0aGUKKyAgIG1lbW9yeSBzdG9yaW5nIHRoZSBQV00gc2V0dGluZ3Mgd2hlbiByZWFkaW5nL3dyaXRpbmcgdG8gYSBQV00gd2hpY2ggaXMgbm90CisgICB0aGVyZS4gTm90aWNlIGV2ZW4gaWYgd2UgZGV0ZWN0IGEgUFdNIHdoaWNoIGRvZXNuJ3QgZXhpc3Qgd2Ugbm9ybWFsbHkgd29uJ3QKKyAgIHdyaXRlIHRvIGl0LCB1bmxlc3MgdGhlIHVzZXIgdHJpZXMgdG8gY2hhbmdlIHRoZSBzZXR0aW5ncy4KKworICAgQWx0aG91Z2ggdGhlIHVHdXJ1IGFsbG93cyByZWFkaW5nIChzZXR0aW5ncykgZnJvbSBub24gZXhpc3RpbmcgYmFuazIKKyAgIHNlbnNvcnMsIG15IHZlcnNpb24gb2YgdGhlIHVHdXJ1IGRvZXMgc2VlbSB0byBzdG9wIHdyaXRpbmcgdG8gdGhlbSwgdGhlCisgICB3cml0ZSBmdW5jdGlvbiBhYm92ZSBhYm9ydHMgaW4gdGhpcyBjYXNlIHdpdGg6CisgICAiQ01EIHJlZyBkb2VzIG5vdCBob2xkIDB4QUMgYWZ0ZXIgd3JpdGUiCisKKyAgIE5vdGljZSB0aGVzZSAyIHRlc3RzIGFyZSBub24gZGVzdHJ1Y3RpdmUgaW93IHJlYWQtb25seSB0ZXN0cywgb3RoZXJ3aXNlCisgICB0aGV5IHdvdWxkIGRlZmVhdCB0aGVpciBwdXJwb3NlLiBBbHRob3VnaCBmb3IgdGhlIGJhbmsyX3NlbnNvcnMgZGV0ZWN0aW9uIGEKKyAgIHJlYWQvd3JpdGUgdGVzdCB3b3VsZCBiZSBmZWFzaWJsZSBiZWNhdXNlIG9mIHRoZSByZWFjdGlvbiBhYm92ZSwgSSd2ZQorICAgaG93ZXZlciBvcHRlZCB0byBzdGF5IG9uIHRoZSBzYWZlIHNpZGUuICovCitzdGF0aWMgdm9pZCBfX2RldmluaXQKK2FiaXR1Z3VydV9kZXRlY3Rfbm9fYmFuazJfc2Vuc29ycyhzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEpCit7CisJaW50IGk7CisKKwlpZiAoZmFuX3NlbnNvcnMpIHsKKwkJZGF0YS0+YmFuazJfc2Vuc29ycyA9IGZhbl9zZW5zb3JzOworCQlBQklUX1VHVVJVX0RFQlVHKDIsICJhc3N1bWluZyAlZCBmYW4gc2Vuc29ycyBiZWNhdXNlIG9mICIKKwkJCSJcImZhbl9zZW5zb3JzXCIgbW9kdWxlIHBhcmFtXG4iLAorCQkJKGludClkYXRhLT5iYW5rMl9zZW5zb3JzKTsKKwkJcmV0dXJuOworCX0KKworCUFCSVRfVUdVUlVfREVCVUcoMiwgImRldGVjdGluZyBudW1iZXIgb2YgZmFuIHNlbnNvcnNcbiIpOworCWZvciAoaSA9IDA7IGkgPCBBQklUX1VHVVJVX01BWF9CQU5LMl9TRU5TT1JTOyBpKyspIHsKKwkJLyogMHg4OSBhcmUgdGhlIGtub3duIHVzZWQgYml0czoKKwkJICAgLTB4ODAgZW5hYmxlIHNodXRkb3duCisJCSAgIC0weDA4IGVuYWJsZSBiZWVwCisJCSAgIC0weDAxIGVuYWJsZSBhbGFybQorCQkgICBBbGwgb3RoZXIgYml0cyBzaG91bGQgYmUgMCwgYnV0IG9uIHNvbWUgbW90aGVyYm9hcmRzCisJCSAgIDB4NDAgKGJpdCA2KSBpcyBhbHNvIGhpZ2ggZm9yIHNvbWUgb2YgdGhlIGZhbnM/PyAqLworCQlpZiAoZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMF0gJiB+MHhDOSkgeworCQkJQUJJVF9VR1VSVV9ERUJVRygyLCAiICBiYW5rMiBzZW5zb3IgJWQgZG9lcyBub3Qgc2VlbSAiCisJCQkJInRvIGJlIGEgZmFuIHNlbnNvcjogc2V0dGluZ3NbMF0gPSAlMDJYXG4iLAorCQkJCWksICh1bnNpZ25lZCBpbnQpZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMF0pOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBjaGVjayBpZiB0aGUgdGhyZXNob2xkIGlzIHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZSAqLworCQlpZiAoZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMV0gPAorCQkJCWFiaXR1Z3VydV9iYW5rMl9taW5fdGhyZXNob2xkKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIGJhbmsyIHNlbnNvciAlZCBkb2VzIG5vdCBzZWVtICIKKwkJCQkidG8gYmUgYSBmYW4gc2Vuc29yOiB0aGUgdGhyZXNob2xkICglZCkgaXMgIgorCQkJCSJiZWxvdyB0aGUgbWluaW11bSAoJWQpXG4iLCBpLAorCQkJCShpbnQpZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMV0sCisJCQkJKGludClhYml0dWd1cnVfYmFuazJfbWluX3RocmVzaG9sZCk7CisJCQlicmVhazsKKwkJfQorCQlpZiAoZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMV0gPgorCQkJCWFiaXR1Z3VydV9iYW5rMl9tYXhfdGhyZXNob2xkKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIGJhbmsyIHNlbnNvciAlZCBkb2VzIG5vdCBzZWVtICIKKwkJCQkidG8gYmUgYSBmYW4gc2Vuc29yOiB0aGUgdGhyZXNob2xkICglZCkgaXMgIgorCQkJCSJhYm92ZSB0aGUgbWF4aW11bSAoJWQpXG4iLCBpLAorCQkJCShpbnQpZGF0YS0+YmFuazJfc2V0dGluZ3NbaV1bMV0sCisJCQkJKGludClhYml0dWd1cnVfYmFuazJfbWF4X3RocmVzaG9sZCk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWRhdGEtPmJhbmsyX3NlbnNvcnMgPSBpOworCUFCSVRfVUdVUlVfREVCVUcoMiwgIiBmb3VuZDogJWQgZmFuIHNlbnNvcnNcbiIsCisJCShpbnQpZGF0YS0+YmFuazJfc2Vuc29ycyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdAorYWJpdHVndXJ1X2RldGVjdF9ub19wd21zKHN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSkKK3sKKwlpbnQgaSwgajsKKworCWlmIChwd21zKSB7CisJCWRhdGEtPnB3bXMgPSBwd21zOworCQlBQklUX1VHVVJVX0RFQlVHKDIsICJhc3N1bWluZyAlZCBQV00gb3V0cHV0cyBiZWNhdXNlIG9mICIKKwkJCSJcInB3bXNcIiBtb2R1bGUgcGFyYW1cbiIsIChpbnQpZGF0YS0+cHdtcyk7CisJCXJldHVybjsKKwl9CisKKwlBQklUX1VHVVJVX0RFQlVHKDIsICJkZXRlY3RpbmcgbnVtYmVyIG9mIFBXTSBvdXRwdXRzXG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgQUJJVF9VR1VSVV9NQVhfUFdNUzsgaSsrKSB7CisJCS8qIDB4ODAgaXMgdGhlIGVuYWJsZSBiaXQgYW5kIHRoZSBsb3cKKwkJICAgbmliYmxlIGlzIHdoaWNoIHRlbXAgc2Vuc29yIHRvIHVzZSwKKwkJICAgdGhlIG90aGVyIGJpdHMgc2hvdWxkIGJlIDAgKi8KKwkJaWYgKGRhdGEtPnB3bV9zZXR0aW5nc1tpXVswXSAmIH4weDhGKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIHB3bSBjaGFubmVsICVkIGRvZXMgbm90IHNlZW0gIgorCQkJCSJ0byBiZSBhIHB3bSBjaGFubmVsOiBzZXR0aW5nc1swXSA9ICUwMlhcbiIsCisJCQkJaSwgKHVuc2lnbmVkIGludClkYXRhLT5wd21fc2V0dGluZ3NbaV1bMF0pOworCQkJYnJlYWs7CisJCX0KKworCQkvKiB0aGUgbG93IG5pYmJsZSBtdXN0IGNvcnJlc3BvbmQgdG8gb25lIG9mIHRoZSB0ZW1wIHNlbnNvcnMKKwkJICAgd2UndmUgZm91bmQgKi8KKwkJZm9yIChqID0gMDsgaiA8IGRhdGEtPmJhbmsxX3NlbnNvcnNbQUJJVF9VR1VSVV9URU1QX1NFTlNPUl07CisJCQkJaisrKSB7CisJCQlpZiAoZGF0YS0+YmFuazFfYWRkcmVzc1tBQklUX1VHVVJVX1RFTVBfU0VOU09SXVtqXSA9PQorCQkJCQkoZGF0YS0+cHdtX3NldHRpbmdzW2ldWzBdICYgMHgwRikpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKGogPT0gZGF0YS0+YmFuazFfc2Vuc29yc1tBQklUX1VHVVJVX1RFTVBfU0VOU09SXSkgeworCQkJQUJJVF9VR1VSVV9ERUJVRygyLCAiICBwd20gY2hhbm5lbCAlZCBkb2VzIG5vdCBzZWVtICIKKwkJCQkidG8gYmUgYSBwd20gY2hhbm5lbDogJWQgaXMgbm90IGEgdmFsaWQgdGVtcCAiCisJCQkJInNlbnNvciBhZGRyZXNzXG4iLCBpLAorCQkJCWRhdGEtPnB3bV9zZXR0aW5nc1tpXVswXSAmIDB4MEYpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBjaGVjayBpZiBhbGwgb3RoZXIgc2V0dGluZ3MgYXJlIHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZSAqLworCQlmb3IgKGogPSAxOyBqIDwgNTsgaisrKSB7CisJCQl1OCBtaW47CisJCQkvKiBzcGVjaWFsIGNhc2UgcHdtMSBtaW4gcHdtJSAqLworCQkJaWYgKChpID09IDApICYmICgoaiA9PSAxKSB8fCAoaiA9PSAyKSkpCisJCQkJbWluID0gNzc7CisJCQllbHNlCisJCQkJbWluID0gYWJpdHVndXJ1X3B3bV9taW5bal07CisJCQlpZiAoZGF0YS0+cHdtX3NldHRpbmdzW2ldW2pdIDwgbWluKSB7CisJCQkJQUJJVF9VR1VSVV9ERUJVRygyLCAiICBwd20gY2hhbm5lbCAlZCBkb2VzICIKKwkJCQkJIm5vdCBzZWVtIHRvIGJlIGEgcHdtIGNoYW5uZWw6ICIKKwkJCQkJInNldHRpbmcgJWQgKCVkKSBpcyBiZWxvdyB0aGUgbWluaW11bSAiCisJCQkJCSJ2YWx1ZSAoJWQpXG4iLCBpLCBqLAorCQkJCQkoaW50KWRhdGEtPnB3bV9zZXR0aW5nc1tpXVtqXSwKKwkJCQkJKGludCltaW4pOworCQkJCWdvdG8gYWJpdHVndXJ1X2RldGVjdF9ub19wd21zX2V4aXQ7CisJCQl9CisJCQlpZiAoZGF0YS0+cHdtX3NldHRpbmdzW2ldW2pdID4gYWJpdHVndXJ1X3B3bV9tYXhbal0pIHsKKwkJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIHB3bSBjaGFubmVsICVkIGRvZXMgIgorCQkJCQkibm90IHNlZW0gdG8gYmUgYSBwd20gY2hhbm5lbDogIgorCQkJCQkic2V0dGluZyAlZCAoJWQpIGlzIGFib3ZlIHRoZSBtYXhpbXVtICIKKwkJCQkJInZhbHVlICglZClcbiIsIGksIGosCisJCQkJCShpbnQpZGF0YS0+cHdtX3NldHRpbmdzW2ldW2pdLAorCQkJCQkoaW50KWFiaXR1Z3VydV9wd21fbWF4W2pdKTsKKwkJCQlnb3RvIGFiaXR1Z3VydV9kZXRlY3Rfbm9fcHdtc19leGl0OworCQkJfQorCQl9CisKKwkJLyogY2hlY2sgdGhhdCBtaW4gdGVtcCA8IG1heCB0ZW1wIGFuZCBtaW4gcHdtIDwgbWF4IHB3bSAqLworCQlpZiAoZGF0YS0+cHdtX3NldHRpbmdzW2ldWzFdID49IGRhdGEtPnB3bV9zZXR0aW5nc1tpXVsyXSkgeworCQkJQUJJVF9VR1VSVV9ERUJVRygyLCAiICBwd20gY2hhbm5lbCAlZCBkb2VzIG5vdCBzZWVtICIKKwkJCQkidG8gYmUgYSBwd20gY2hhbm5lbDogbWluIHB3bSAoJWQpID49ICIKKwkJCQkibWF4IHB3bSAoJWQpXG4iLCBpLAorCQkJCShpbnQpZGF0YS0+cHdtX3NldHRpbmdzW2ldWzFdLAorCQkJCShpbnQpZGF0YS0+cHdtX3NldHRpbmdzW2ldWzJdKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChkYXRhLT5wd21fc2V0dGluZ3NbaV1bM10gPj0gZGF0YS0+cHdtX3NldHRpbmdzW2ldWzRdKSB7CisJCQlBQklUX1VHVVJVX0RFQlVHKDIsICIgIHB3bSBjaGFubmVsICVkIGRvZXMgbm90IHNlZW0gIgorCQkJCSJ0byBiZSBhIHB3bSBjaGFubmVsOiBtaW4gdGVtcCAoJWQpID49ICIKKwkJCQkibWF4IHRlbXAgKCVkKVxuIiwgaSwKKwkJCQkoaW50KWRhdGEtPnB3bV9zZXR0aW5nc1tpXVszXSwKKwkJCQkoaW50KWRhdGEtPnB3bV9zZXR0aW5nc1tpXVs0XSk7CisJCQlicmVhazsKKwkJfQorCX0KKworYWJpdHVndXJ1X2RldGVjdF9ub19wd21zX2V4aXQ6CisJZGF0YS0+cHdtcyA9IGk7CisJQUJJVF9VR1VSVV9ERUJVRygyLCAiIGZvdW5kOiAlZCBQV00gb3V0cHV0c1xuIiwgKGludClkYXRhLT5wd21zKTsKK30KKworLyogRm9sbG93aW5nIGFyZSB0aGUgc3lzZnMgY2FsbGJhY2sgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgZXhwZWN0OgorICAgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMi0+aW5kZXg6ICAgc2Vuc29yIGFkZHJlc3Mvb2Zmc2V0IGluIHRoZSBiYW5rCisgICBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yLT5ucjogICAgICByZWdpc3RlciBvZmZzZXQsIGJpdG1hc2sgb3IgTkEuICovCitzdGF0aWMgc3RydWN0IGFiaXR1Z3VydV9kYXRhICphYml0dWd1cnVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCitzdGF0aWMgc3NpemVfdCBzaG93X2JhbmsxX3ZhbHVlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gYWJpdHVndXJ1X3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRUlPOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCAoZGF0YS0+YmFuazFfdmFsdWVbYXR0ci0+aW5kZXhdICoKKwkJZGF0YS0+YmFuazFfbWF4X3ZhbHVlW2F0dHItPmluZGV4XSArIDEyOCkgLyAyNTUpOworfQorCitzdGF0aWMgc3NpemVfdCBzaG93X2JhbmsxX3NldHRpbmcoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwKKwkJKGRhdGEtPmJhbmsxX3NldHRpbmdzW2F0dHItPmluZGV4XVthdHRyLT5ucl0gKgorCQlkYXRhLT5iYW5rMV9tYXhfdmFsdWVbYXR0ci0+aW5kZXhdICsgMTI4KSAvIDI1NSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfYmFuazJfdmFsdWUoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBhYml0dWd1cnVfdXBkYXRlX2RldmljZShkZXYpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FSU87CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIChkYXRhLT5iYW5rMl92YWx1ZVthdHRyLT5pbmRleF0gKgorCQlBQklUX1VHVVJVX0ZBTl9NQVggKyAxMjgpIC8gMjU1KTsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd19iYW5rMl9zZXR0aW5nKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsCisJCShkYXRhLT5iYW5rMl9zZXR0aW5nc1thdHRyLT5pbmRleF1bYXR0ci0+bnJdICoKKwkJQUJJVF9VR1VSVV9GQU5fTUFYICsgMTI4KSAvIDI1NSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX2JhbmsxX3NldHRpbmcoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQorCSpkZXZhdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cl8yKGRldmF0dHIpOworCXN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXU4IHZhbCA9IChzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKSAqIDI1NSArCisJCWRhdGEtPmJhbmsxX21heF92YWx1ZVthdHRyLT5pbmRleF0vMikgLworCQlkYXRhLT5iYW5rMV9tYXhfdmFsdWVbYXR0ci0+aW5kZXhdOworCXNzaXplX3QgcmV0ID0gY291bnQ7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJaWYgKGRhdGEtPmJhbmsxX3NldHRpbmdzW2F0dHItPmluZGV4XVthdHRyLT5ucl0gIT0gdmFsKSB7CisJCXU4IG9yaWdfdmFsID0gZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXTsKKwkJZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9IHZhbDsKKwkJaWYgKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMSArIDIsCisJCQkJYXR0ci0+aW5kZXgsIGRhdGEtPmJhbmsxX3NldHRpbmdzW2F0dHItPmluZGV4XSwKKwkJCQkzKSA8PSBhdHRyLT5ucikgeworCQkJZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9IG9yaWdfdmFsOworCQkJcmV0ID0gLUVJTzsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9iYW5rMl9zZXR0aW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUKKwkqZGV2YXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1OCB2YWwgPSAoc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCkqMjU1ICsgQUJJVF9VR1VSVV9GQU5fTUFYLzIpIC8KKwkJQUJJVF9VR1VSVV9GQU5fTUFYOworCXNzaXplX3QgcmV0ID0gY291bnQ7CisKKwkvKiB0aGlzIGNoZWNrIGNhbiBiZSBkb25lIGJlZm9yZSB0YWtpbmcgdGhlIGxvY2sgKi8KKwlpZiAoKHZhbCA8IGFiaXR1Z3VydV9iYW5rMl9taW5fdGhyZXNob2xkKSB8fAorCQkJKHZhbCA+IGFiaXR1Z3VydV9iYW5rMl9tYXhfdGhyZXNob2xkKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJaWYgKGRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XVthdHRyLT5ucl0gIT0gdmFsKSB7CisJCXU4IG9yaWdfdmFsID0gZGF0YS0+YmFuazJfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXTsKKwkJZGF0YS0+YmFuazJfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9IHZhbDsKKwkJaWYgKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMiArIDIsCisJCQkJYXR0ci0+aW5kZXgsIGRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XSwKKwkJCQkyKSA8PSBhdHRyLT5ucikgeworCQkJZGF0YS0+YmFuazJfc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9IG9yaWdfdmFsOworCQkJcmV0ID0gLUVJTzsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdCBzaG93X2JhbmsxX2FsYXJtKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gYWJpdHVndXJ1X3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRUlPOworCS8qIFNlZSBpZiB0aGUgYWxhcm0gYml0IGZvciB0aGlzIHNlbnNvciBpcyBzZXQsIGFuZCBpZiB0aGUKKwkgICBhbGFybSBtYXRjaGVzIHRoZSB0eXBlIG9mIGFsYXJtIHdlJ3JlIGxvb2tpbmcgZm9yIChmb3Igdm9sdAorCSAgIGl0IGNhbiBiZSBlaXRoZXIgbG93IG9yIGhpZ2gpLiBUaGUgdHlwZSBpcyBzdG9yZWQgaW4gYSBmZXcKKwkgICByZWFkb25seSBiaXRzIGluIHRoZSBzZXR0aW5ncyBwYXJ0IG9mIHRoZSByZWxldmFudCBzZW5zb3IuCisJICAgVGhlIGJpdG1hc2sgb2YgdGhlIHR5cGUgaXMgcGFzc2VkIHRvIHVzIGluIGF0dHItPm5yLiAqLworCWlmICgoZGF0YS0+YWxhcm1zW2F0dHItPmluZGV4IC8gOF0gJiAoMHgwMSA8PCAoYXR0ci0+aW5kZXggJSA4KSkpICYmCisJCQkoZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdICYgYXR0ci0+bnIpKQorCQlyZXR1cm4gc3ByaW50ZihidWYsICIxXG4iKTsKKwllbHNlCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjBcbiIpOworfQorCitzdGF0aWMgc3NpemVfdCBzaG93X2JhbmsyX2FsYXJtKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gYWJpdHVndXJ1X3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRUlPOworCWlmIChkYXRhLT5hbGFybXNbMl0gJiAoMHgwMSA8PCBhdHRyLT5pbmRleCkpCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjFcbiIpOworCWVsc2UKKwkJcmV0dXJuIHNwcmludGYoYnVmLCAiMFxuIik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfYmFuazFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cl8yKGRldmF0dHIpOworCXN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWlmIChkYXRhLT5iYW5rMV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF0gJiBhdHRyLT5ucikKKwkJcmV0dXJuIHNwcmludGYoYnVmLCAiMVxuIik7CisJZWxzZQorCQlyZXR1cm4gc3ByaW50ZihidWYsICIwXG4iKTsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd19iYW5rMl9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaWYgKGRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSAmIGF0dHItPm5yKQorCQlyZXR1cm4gc3ByaW50ZihidWYsICIxXG4iKTsKKwllbHNlCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjBcbiIpOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9iYW5rMV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgbWFzayA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOworCXNzaXplX3QgcmV0ID0gY291bnQ7CisJdTggb3JpZ192YWw7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJb3JpZ192YWwgPSBkYXRhLT5iYW5rMV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF07CisKKwlpZiAobWFzaykKKwkJZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdIHw9IGF0dHItPm5yOworCWVsc2UKKwkJZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdICY9IH5hdHRyLT5ucjsKKworCWlmICgoZGF0YS0+YmFuazFfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdICE9IG9yaWdfdmFsKSAmJgorCQkJKGFiaXR1Z3VydV93cml0ZShkYXRhLAorCQkJQUJJVF9VR1VSVV9TRU5TT1JfQkFOSzEgKyAyLCBhdHRyLT5pbmRleCwKKwkJCWRhdGEtPmJhbmsxX3NldHRpbmdzW2F0dHItPmluZGV4XSwgMykgPCAxKSkgeworCQlkYXRhLT5iYW5rMV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF0gPSBvcmlnX3ZhbDsKKwkJcmV0ID0gLUVJTzsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfYmFuazJfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IG1hc2sgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKKwlzc2l6ZV90IHJldCA9IGNvdW50OworCXU4IG9yaWdfdmFsOworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCW9yaWdfdmFsID0gZGF0YS0+YmFuazJfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdOworCisJaWYgKG1hc2spCisJCWRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSB8PSBhdHRyLT5ucjsKKwllbHNlCisJCWRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSAmPSB+YXR0ci0+bnI7CisKKwlpZiAoKGRhdGEtPmJhbmsyX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSAhPSBvcmlnX3ZhbCkgJiYKKwkJCShhYml0dWd1cnVfd3JpdGUoZGF0YSwKKwkJCUFCSVRfVUdVUlVfU0VOU09SX0JBTksyICsgMiwgYXR0ci0+aW5kZXgsCisJCQlkYXRhLT5iYW5rMl9zZXR0aW5nc1thdHRyLT5pbmRleF0sIDIpIDwgMSkpIHsKKwkJZGF0YS0+YmFuazJfc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdID0gb3JpZ192YWw7CisJCXJldCA9IC1FSU87CisJfQorCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiByZXQ7Cit9CisKKy8qIEZhbiBQV00gKHNwZWVkIGNvbnRyb2wpICovCitzdGF0aWMgc3NpemVfdCBzaG93X3B3bV9zZXR0aW5nKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bYXR0ci0+bnJdICoKKwkJYWJpdHVndXJ1X3B3bV9zZXR0aW5nc19tdWx0aXBsaWVyW2F0dHItPm5yXSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3B3bV9zZXR0aW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUKKwkqZGV2YXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1OCBtaW4sIHZhbCA9IChzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKSArCisJCWFiaXR1Z3VydV9wd21fc2V0dGluZ3NfbXVsdGlwbGllclthdHRyLT5ucl0vMikgLworCQlhYml0dWd1cnVfcHdtX3NldHRpbmdzX211bHRpcGxpZXJbYXR0ci0+bnJdOworCXNzaXplX3QgcmV0ID0gY291bnQ7CisKKwkvKiBzcGVjaWFsIGNhc2UgcHdtMSBtaW4gcHdtJSAqLworCWlmICgoYXR0ci0+aW5kZXggPT0gMCkgJiYgKChhdHRyLT5uciA9PSAxKSB8fCAoYXR0ci0+bnIgPT0gMikpKQorCQltaW4gPSA3NzsKKwllbHNlCisJCW1pbiA9IGFiaXR1Z3VydV9wd21fbWluW2F0dHItPm5yXTsKKworCS8qIHRoaXMgY2hlY2sgY2FuIGJlIGRvbmUgYmVmb3JlIHRha2luZyB0aGUgbG9jayAqLworCWlmICgodmFsIDwgbWluKSB8fCAodmFsID4gYWJpdHVndXJ1X3B3bV9tYXhbYXR0ci0+bnJdKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJLyogdGhpcyBjaGVjayBuZWVkcyB0byBiZSBkb25lIGFmdGVyIHRha2luZyB0aGUgbG9jayAqLworCWlmICgoYXR0ci0+bnIgJiAxKSAmJgorCQkJKHZhbCA+PSBkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yICsgMV0pKQorCQlyZXQgPSAtRUlOVkFMOworCWVsc2UgaWYgKCEoYXR0ci0+bnIgJiAxKSAmJgorCQkJKHZhbCA8PSBkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yIC0gMV0pKQorCQlyZXQgPSAtRUlOVkFMOworCWVsc2UgaWYgKGRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bYXR0ci0+bnJdICE9IHZhbCkgeworCQl1OCBvcmlnX3ZhbCA9IGRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bYXR0ci0+bnJdOworCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9IHZhbDsKKwkJaWYgKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX0ZBTl9QV00gKyAxLAorCQkJCWF0dHItPmluZGV4LCBkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdLAorCQkJCTUpIDw9IGF0dHItPm5yKSB7CisJCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdW2F0dHItPm5yXSA9CisJCQkJb3JpZ192YWw7CisJCQlyZXQgPSAtRUlPOworCQl9CisJfQorCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfcHdtX3NlbnNvcihzdHJ1Y3QgZGV2aWNlICpkZXYsCisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cl8yKGRldmF0dHIpOworCXN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCBpOworCS8qIFdlIG5lZWQgdG8gd2FsayB0byB0aGUgdGVtcCBzZW5zb3IgYWRkcmVzc2VzIHRvIGZpbmQgd2hhdAorCSAgIHRoZSB1c2Vyc3BhY2UgaWQgb2YgdGhlIGNvbmZpZ3VyZWQgdGVtcCBzZW5zb3IgaXMuICovCisJZm9yIChpID0gMDsgaSA8IGRhdGEtPmJhbmsxX3NlbnNvcnNbQUJJVF9VR1VSVV9URU1QX1NFTlNPUl07IGkrKykKKwkJaWYgKGRhdGEtPmJhbmsxX2FkZHJlc3NbQUJJVF9VR1VSVV9URU1QX1NFTlNPUl1baV0gPT0KKwkJCQkoZGF0YS0+cHdtX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSAmIDB4MEYpKQorCQkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGkrMSk7CisKKwlyZXR1cm4gLUVOWElPOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9wd21fc2Vuc29yKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUKKwkqZGV2YXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1bnNpZ25lZCBsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApIC0gMTsKKwlzc2l6ZV90IHJldCA9IGNvdW50OworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCWlmICh2YWwgPCBkYXRhLT5iYW5rMV9zZW5zb3JzW0FCSVRfVUdVUlVfVEVNUF9TRU5TT1JdKSB7CisJCXU4IG9yaWdfdmFsID0gZGF0YS0+cHdtX3NldHRpbmdzW2F0dHItPmluZGV4XVswXTsKKwkJdTggYWRkcmVzcyA9IGRhdGEtPmJhbmsxX2FkZHJlc3NbQUJJVF9VR1VSVV9URU1QX1NFTlNPUl1bdmFsXTsKKwkJZGF0YS0+cHdtX3NldHRpbmdzW2F0dHItPmluZGV4XVswXSAmPSAweEYwOworCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdIHw9IGFkZHJlc3M7CisJCWlmIChkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdICE9IG9yaWdfdmFsKSB7CisJCQlpZiAoYWJpdHVndXJ1X3dyaXRlKGRhdGEsIEFCSVRfVUdVUlVfRkFOX1BXTSArIDEsCisJCQkJCWF0dHItPmluZGV4LAorCQkJCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdLAorCQkJCQk1KSA8IDEpIHsKKwkJCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdID0gb3JpZ192YWw7CisJCQkJcmV0ID0gLUVJTzsKKwkJCX0KKwkJfQorCX0KKwllbHNlCisJCXJldCA9IC1FSU5WQUw7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd19wd21fZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyXzIoZGV2YXR0cik7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJlcyA9IDA7CisJaWYgKGRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF0gJiBBQklUX1VHVVJVX0ZBTl9QV01fRU5BQkxFKQorCQlyZXMgPSAyOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCByZXMpOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9wd21fZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUKKwkqZGV2YXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwl1OCBvcmlnX3ZhbCwgdXNlcl92YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKKwlzc2l6ZV90IHJldCA9IGNvdW50OworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCW9yaWdfdmFsID0gZGF0YS0+cHdtX3NldHRpbmdzW2F0dHItPmluZGV4XVswXTsKKwlzd2l0Y2ggKHVzZXJfdmFsKSB7CisJCWNhc2UgMDoKKwkJCWRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF0gJj0KKwkJCQl+QUJJVF9VR1VSVV9GQU5fUFdNX0VOQUJMRTsKKwkJCWJyZWFrOworCQljYXNlIDI6CisJCQlkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdIHw9CisJCQkJQUJJVF9VR1VSVV9GQU5fUFdNX0VOQUJMRTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0ID0gLUVJTlZBTDsKKwl9CisJaWYgKChkYXRhLT5wd21fc2V0dGluZ3NbYXR0ci0+aW5kZXhdWzBdICE9IG9yaWdfdmFsKSAmJgorCQkJKGFiaXR1Z3VydV93cml0ZShkYXRhLCBBQklUX1VHVVJVX0ZBTl9QV00gKyAxLAorCQkJYXR0ci0+aW5kZXgsIGRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF0sCisJCQk1KSA8IDEpKSB7CisJCWRhdGEtPnB3bV9zZXR0aW5nc1thdHRyLT5pbmRleF1bMF0gPSBvcmlnX3ZhbDsKKwkJcmV0ID0gLUVJTzsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd19uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwKKwlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBBQklUX1VHVVJVX05BTUUpOworfQorCisvKiBTeXNmcyBhdHRyIHRlbXBsYXRlcywgdGhlIHJlYWwgZW50cmllcyBhcmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuICovCitzdGF0aWMgY29uc3QKK3N0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yIGFiaXR1Z3VydV9zeXNmc19iYW5rMV90ZW1wbFsyXVs5XSA9IHsKKwl7CisJU0VOU09SX0FUVFJfMihpbiVkX2lucHV0LCAwNDQ0LCBzaG93X2JhbmsxX3ZhbHVlLCBOVUxMLCAwLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGluJWRfbWluLCAwNjQ0LCBzaG93X2JhbmsxX3NldHRpbmcsCisJCXN0b3JlX2JhbmsxX3NldHRpbmcsIDEsIDApLAorCVNFTlNPUl9BVFRSXzIoaW4lZF9taW5fYWxhcm0sIDA0NDQsIHNob3dfYmFuazFfYWxhcm0sIE5VTEwsCisJCUFCSVRfVUdVUlVfVk9MVF9MT1dfQUxBUk1fRkxBRywgMCksCisJU0VOU09SX0FUVFJfMihpbiVkX21heCwgMDY0NCwgc2hvd19iYW5rMV9zZXR0aW5nLAorCQlzdG9yZV9iYW5rMV9zZXR0aW5nLCAyLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGluJWRfbWF4X2FsYXJtLCAwNDQ0LCBzaG93X2JhbmsxX2FsYXJtLCBOVUxMLAorCQlBQklUX1VHVVJVX1ZPTFRfSElHSF9BTEFSTV9GTEFHLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGluJWRfYmVlcCwgMDY0NCwgc2hvd19iYW5rMV9tYXNrLAorCQlzdG9yZV9iYW5rMV9tYXNrLCBBQklUX1VHVVJVX0JFRVBfRU5BQkxFLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGluJWRfc2h1dGRvd24sIDA2NDQsIHNob3dfYmFuazFfbWFzaywKKwkJc3RvcmVfYmFuazFfbWFzaywgQUJJVF9VR1VSVV9TSFVURE9XTl9FTkFCTEUsIDApLAorCVNFTlNPUl9BVFRSXzIoaW4lZF9taW5fYWxhcm1fZW5hYmxlLCAwNjQ0LCBzaG93X2JhbmsxX21hc2ssCisJCXN0b3JlX2JhbmsxX21hc2ssIEFCSVRfVUdVUlVfVk9MVF9MT1dfQUxBUk1fRU5BQkxFLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGluJWRfbWF4X2FsYXJtX2VuYWJsZSwgMDY0NCwgc2hvd19iYW5rMV9tYXNrLAorCQlzdG9yZV9iYW5rMV9tYXNrLCBBQklUX1VHVVJVX1ZPTFRfSElHSF9BTEFSTV9FTkFCTEUsIDApLAorCX0sIHsKKwlTRU5TT1JfQVRUUl8yKHRlbXAlZF9pbnB1dCwgMDQ0NCwgc2hvd19iYW5rMV92YWx1ZSwgTlVMTCwgMCwgMCksCisJU0VOU09SX0FUVFJfMih0ZW1wJWRfYWxhcm0sIDA0NDQsIHNob3dfYmFuazFfYWxhcm0sIE5VTEwsCisJCUFCSVRfVUdVUlVfVEVNUF9ISUdIX0FMQVJNX0ZMQUcsIDApLAorCVNFTlNPUl9BVFRSXzIodGVtcCVkX21heCwgMDY0NCwgc2hvd19iYW5rMV9zZXR0aW5nLAorCQlzdG9yZV9iYW5rMV9zZXR0aW5nLCAxLCAwKSwKKwlTRU5TT1JfQVRUUl8yKHRlbXAlZF9jcml0LCAwNjQ0LCBzaG93X2JhbmsxX3NldHRpbmcsCisJCXN0b3JlX2JhbmsxX3NldHRpbmcsIDIsIDApLAorCVNFTlNPUl9BVFRSXzIodGVtcCVkX2JlZXAsIDA2NDQsIHNob3dfYmFuazFfbWFzaywKKwkJc3RvcmVfYmFuazFfbWFzaywgQUJJVF9VR1VSVV9CRUVQX0VOQUJMRSwgMCksCisJU0VOU09SX0FUVFJfMih0ZW1wJWRfc2h1dGRvd24sIDA2NDQsIHNob3dfYmFuazFfbWFzaywKKwkJc3RvcmVfYmFuazFfbWFzaywgQUJJVF9VR1VSVV9TSFVURE9XTl9FTkFCTEUsIDApLAorCVNFTlNPUl9BVFRSXzIodGVtcCVkX2FsYXJtX2VuYWJsZSwgMDY0NCwgc2hvd19iYW5rMV9tYXNrLAorCQlzdG9yZV9iYW5rMV9tYXNrLCBBQklUX1VHVVJVX1RFTVBfSElHSF9BTEFSTV9FTkFCTEUsIDApLAorCX0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiBhYml0dWd1cnVfc3lzZnNfZmFuX3RlbXBsWzZdID0geworCVNFTlNPUl9BVFRSXzIoZmFuJWRfaW5wdXQsIDA0NDQsIHNob3dfYmFuazJfdmFsdWUsIE5VTEwsIDAsIDApLAorCVNFTlNPUl9BVFRSXzIoZmFuJWRfYWxhcm0sIDA0NDQsIHNob3dfYmFuazJfYWxhcm0sIE5VTEwsIDAsIDApLAorCVNFTlNPUl9BVFRSXzIoZmFuJWRfbWluLCAwNjQ0LCBzaG93X2JhbmsyX3NldHRpbmcsCisJCXN0b3JlX2JhbmsyX3NldHRpbmcsIDEsIDApLAorCVNFTlNPUl9BVFRSXzIoZmFuJWRfYmVlcCwgMDY0NCwgc2hvd19iYW5rMl9tYXNrLAorCQlzdG9yZV9iYW5rMl9tYXNrLCBBQklUX1VHVVJVX0JFRVBfRU5BQkxFLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGZhbiVkX3NodXRkb3duLCAwNjQ0LCBzaG93X2JhbmsyX21hc2ssCisJCXN0b3JlX2JhbmsyX21hc2ssIEFCSVRfVUdVUlVfU0hVVERPV05fRU5BQkxFLCAwKSwKKwlTRU5TT1JfQVRUUl8yKGZhbiVkX2FsYXJtX2VuYWJsZSwgMDY0NCwgc2hvd19iYW5rMl9tYXNrLAorCQlzdG9yZV9iYW5rMl9tYXNrLCBBQklUX1VHVVJVX0ZBTl9MT1dfQUxBUk1fRU5BQkxFLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiBhYml0dWd1cnVfc3lzZnNfcHdtX3RlbXBsWzZdID0geworCVNFTlNPUl9BVFRSXzIocHdtJWRfZW5hYmxlLCAwNjQ0LCBzaG93X3B3bV9lbmFibGUsCisJCXN0b3JlX3B3bV9lbmFibGUsIDAsIDApLAorCVNFTlNPUl9BVFRSXzIocHdtJWRfYXV0b19jaGFubmVsc190ZW1wLCAwNjQ0LCBzaG93X3B3bV9zZW5zb3IsCisJCXN0b3JlX3B3bV9zZW5zb3IsIDAsIDApLAorCVNFTlNPUl9BVFRSXzIocHdtJWRfYXV0b19wb2ludDFfcHdtLCAwNjQ0LCBzaG93X3B3bV9zZXR0aW5nLAorCQlzdG9yZV9wd21fc2V0dGluZywgMSwgMCksCisJU0VOU09SX0FUVFJfMihwd20lZF9hdXRvX3BvaW50Ml9wd20sIDA2NDQsIHNob3dfcHdtX3NldHRpbmcsCisJCXN0b3JlX3B3bV9zZXR0aW5nLCAyLCAwKSwKKwlTRU5TT1JfQVRUUl8yKHB3bSVkX2F1dG9fcG9pbnQxX3RlbXAsIDA2NDQsIHNob3dfcHdtX3NldHRpbmcsCisJCXN0b3JlX3B3bV9zZXR0aW5nLCAzLCAwKSwKKwlTRU5TT1JfQVRUUl8yKHB3bSVkX2F1dG9fcG9pbnQyX3RlbXAsIDA2NDQsIHNob3dfcHdtX3NldHRpbmcsCisJCXN0b3JlX3B3bV9zZXR0aW5nLCA0LCAwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiBhYml0dWd1cnVfc3lzZnNfYXR0cltdID0geworCVNFTlNPUl9BVFRSXzIobmFtZSwgMDQ0NCwgc2hvd19uYW1lLCBOVUxMLCAwLCAwKSwKK307CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGFiaXR1Z3VydV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YTsKKwlpbnQgaSwgaiwgdXNlZCwgc3lzZnNfbmFtZXNfZnJlZSwgc3lzZnNfYXR0cl9pLCByZXMgPSAtRU5PREVWOworCWNoYXIgKnN5c2ZzX2ZpbGVuYW1lOworCisJLyogRWwgd2VpcmRvIHByb2JlIG9yZGVyLCB0byBrZWVwIHRoZSBzeXNmcyBvcmRlciBpZGVudGljYWwgdG8gdGhlCisJICAgQklPUyBhbmQgd2luZG93LWFwcGxpY3Rpb24gbGlzdGluZyBvcmRlci4gKi8KKwljb25zdCB1OCBwcm9iZV9vcmRlcltBQklUX1VHVVJVX01BWF9CQU5LMV9TRU5TT1JTXSA9IHsKKwkJMHgwMCwgMHgwMSwgMHgwMywgMHgwNCwgMHgwQSwgMHgwOCwgMHgwRSwgMHgwMiwKKwkJMHgwOSwgMHgwNiwgMHgwNSwgMHgwQiwgMHgwRiwgMHgwRCwgMHgwNywgMHgwQyB9OworCisJaWYgKCEoZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhYml0dWd1cnVfZGF0YSksIEdGUF9LRVJORUwpKSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkYXRhLT5hZGRyID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSU8sIDApLT5zdGFydDsKKwltdXRleF9pbml0KCZkYXRhLT51cGRhdGVfbG9jayk7CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZGF0YSk7CisKKwkvKiBTZWUgaWYgdGhlIHVHdXJ1IGlzIHJlYWR5ICovCisJaWYgKGluYl9wKGRhdGEtPmFkZHIgKyBBQklUX1VHVVJVX0RBVEEpID09IEFCSVRfVUdVUlVfU1RBVFVTX0lOUFVUKQorCQlkYXRhLT51Z3VydV9yZWFkeSA9IDE7CisKKwkvKiBDb21wbGV0ZWx5IHJlYWQgdGhlIHVHdXJ1IHRoaXMgaGFzIDIgcHVycG9zZXM6CisJICAgLSB0ZXN0cmVhZCAvIHNlZSBpZiBvbmUgcmVhbGx5IGlzIHRoZXJlLgorCSAgIC0gbWFrZSBhbiBpbiBtZW1vcnkgY29weSBvZiBhbGwgdGhlIHVndXJ1IHNldHRpbmdzIGZvciBmdXR1cmUgdXNlLiAqLworCWlmIChhYml0dWd1cnVfcmVhZChkYXRhLCBBQklUX1VHVVJVX0FMQVJNX0JBTkssIDAsCisJCQlkYXRhLT5hbGFybXMsIDMsIEFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDMpCisJCWdvdG8gYWJpdHVndXJ1X3Byb2JlX2Vycm9yOworCisJZm9yIChpID0gMDsgaSA8IEFCSVRfVUdVUlVfTUFYX0JBTksxX1NFTlNPUlM7IGkrKykgeworCQlpZiAoYWJpdHVndXJ1X3JlYWQoZGF0YSwgQUJJVF9VR1VSVV9TRU5TT1JfQkFOSzEsIGksCisJCQkJJmRhdGEtPmJhbmsxX3ZhbHVlW2ldLCAxLAorCQkJCUFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDEpCisJCQlnb3RvIGFiaXR1Z3VydV9wcm9iZV9lcnJvcjsKKwkJaWYgKGFiaXR1Z3VydV9yZWFkKGRhdGEsIEFCSVRfVUdVUlVfU0VOU09SX0JBTksxKzEsIGksCisJCQkJZGF0YS0+YmFuazFfc2V0dGluZ3NbaV0sIDMsCisJCQkJQUJJVF9VR1VSVV9NQVhfUkVUUklFUykgIT0gMykKKwkJCWdvdG8gYWJpdHVndXJ1X3Byb2JlX2Vycm9yOworCX0KKwkvKiBOb3RlOiBXZSBkb24ndCBrbm93IGhvdyBtYW55IGJhbmsyIHNlbnNvcnMgLyBwd21zIHRoZXJlIHJlYWxseSBhcmUsCisJICAgYnV0IGluIG9yZGVyIHRvICJkZXRlY3QiIHRoaXMgd2UgbmVlZCB0byByZWFkIHRoZSBtYXhpbXVtIGFtb3VudAorCSAgIGFueXdheXMuIElmIHdlIHJlYWQgc2Vuc29ycy9wd21zIG5vdCB0aGVyZSB3ZSdsbCBqdXN0IHJlYWQgY3JhcAorCSAgIHRoaXMgY2FuJ3QgaHVydC4gV2UgbmVlZCB0aGUgZGV0ZWN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudAorCSAgIHVud2FudGVkIHdyaXRlcywgd2hpY2ggd2lsbCBodXJ0ISAqLworCWZvciAoaSA9IDA7IGkgPCBBQklUX1VHVVJVX01BWF9CQU5LMl9TRU5TT1JTOyBpKyspIHsKKwkJaWYgKGFiaXR1Z3VydV9yZWFkKGRhdGEsIEFCSVRfVUdVUlVfU0VOU09SX0JBTksyLCBpLAorCQkJCSZkYXRhLT5iYW5rMl92YWx1ZVtpXSwgMSwKKwkJCQlBQklUX1VHVVJVX01BWF9SRVRSSUVTKSAhPSAxKQorCQkJZ290byBhYml0dWd1cnVfcHJvYmVfZXJyb3I7CisJCWlmIChhYml0dWd1cnVfcmVhZChkYXRhLCBBQklUX1VHVVJVX1NFTlNPUl9CQU5LMisxLCBpLAorCQkJCWRhdGEtPmJhbmsyX3NldHRpbmdzW2ldLCAyLAorCQkJCUFCSVRfVUdVUlVfTUFYX1JFVFJJRVMpICE9IDIpCisJCQlnb3RvIGFiaXR1Z3VydV9wcm9iZV9lcnJvcjsKKwl9CisJZm9yIChpID0gMDsgaSA8IEFCSVRfVUdVUlVfTUFYX1BXTVM7IGkrKykgeworCQlpZiAoYWJpdHVndXJ1X3JlYWQoZGF0YSwgQUJJVF9VR1VSVV9GQU5fUFdNLCBpLAorCQkJCWRhdGEtPnB3bV9zZXR0aW5nc1tpXSwgNSwKKwkJCQlBQklUX1VHVVJVX01BWF9SRVRSSUVTKSAhPSA1KQorCQkJZ290byBhYml0dWd1cnVfcHJvYmVfZXJyb3I7CisJfQorCWRhdGEtPmxhc3RfdXBkYXRlZCA9IGppZmZpZXM7CisKKwkvKiBEZXRlY3Qgc2Vuc29yIHR5cGVzIGFuZCBmaWxsIHRoZSBzeXNmcyBhdHRyIGZvciBiYW5rMSAqLworCXN5c2ZzX2F0dHJfaSA9IDA7CisJc3lzZnNfZmlsZW5hbWUgPSBkYXRhLT5zeXNmc19uYW1lczsKKwlzeXNmc19uYW1lc19mcmVlID0gQUJJVFVHVVJVX1NZU0ZTX05BTUVTX0xFTkdUSDsKKwlmb3IgKGkgPSAwOyBpIDwgQUJJVF9VR1VSVV9NQVhfQkFOSzFfU0VOU09SUzsgaSsrKSB7CisJCXJlcyA9IGFiaXR1Z3VydV9kZXRlY3RfYmFuazFfc2Vuc29yX3R5cGUoZGF0YSwgcHJvYmVfb3JkZXJbaV0pOworCQlpZiAocmVzIDwgMCkKKwkJCWdvdG8gYWJpdHVndXJ1X3Byb2JlX2Vycm9yOworCQlpZiAocmVzID09IEFCSVRfVUdVUlVfTkMpCisJCQljb250aW51ZTsKKworCQkvKiByZXMgMSAodGVtcCkgc2Vuc29ycyBoYXZlIDcgc3lzZnMgZW50cmllcywgMCAoaW4pIDkgKi8KKwkJZm9yIChqID0gMDsgaiA8IChyZXMgPyA3IDogOSk7IGorKykgeworCQkJdXNlZCA9IHNucHJpbnRmKHN5c2ZzX2ZpbGVuYW1lLCBzeXNmc19uYW1lc19mcmVlLAorCQkJCWFiaXR1Z3VydV9zeXNmc19iYW5rMV90ZW1wbFtyZXNdW2pdLmRldl9hdHRyLgorCQkJCWF0dHIubmFtZSwgZGF0YS0+YmFuazFfc2Vuc29yc1tyZXNdICsgcmVzKQorCQkJCSsgMTsKKwkJCWRhdGEtPnN5c2ZzX2F0dHJbc3lzZnNfYXR0cl9pXSA9CisJCQkJYWJpdHVndXJ1X3N5c2ZzX2JhbmsxX3RlbXBsW3Jlc11bal07CisJCQlkYXRhLT5zeXNmc19hdHRyW3N5c2ZzX2F0dHJfaV0uZGV2X2F0dHIuYXR0ci5uYW1lID0KKwkJCQlzeXNmc19maWxlbmFtZTsKKwkJCWRhdGEtPnN5c2ZzX2F0dHJbc3lzZnNfYXR0cl9pXS5pbmRleCA9IHByb2JlX29yZGVyW2ldOworCQkJc3lzZnNfZmlsZW5hbWUgKz0gdXNlZDsKKwkJCXN5c2ZzX25hbWVzX2ZyZWUgLT0gdXNlZDsKKwkJCXN5c2ZzX2F0dHJfaSsrOworCQl9CisJCWRhdGEtPmJhbmsxX21heF92YWx1ZVtwcm9iZV9vcmRlcltpXV0gPQorCQkJYWJpdHVndXJ1X2JhbmsxX21heF92YWx1ZVtyZXNdOworCQlkYXRhLT5iYW5rMV9hZGRyZXNzW3Jlc11bZGF0YS0+YmFuazFfc2Vuc29yc1tyZXNdXSA9CisJCQlwcm9iZV9vcmRlcltpXTsKKwkJZGF0YS0+YmFuazFfc2Vuc29yc1tyZXNdKys7CisJfQorCS8qIERldGVjdCBudW1iZXIgb2Ygc2Vuc29ycyBhbmQgZmlsbCB0aGUgc3lzZnMgYXR0ciBmb3IgYmFuazIgKGZhbnMpICovCisJYWJpdHVndXJ1X2RldGVjdF9ub19iYW5rMl9zZW5zb3JzKGRhdGEpOworCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5iYW5rMl9zZW5zb3JzOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoYWJpdHVndXJ1X3N5c2ZzX2Zhbl90ZW1wbCk7IGorKykgeworCQkJdXNlZCA9IHNucHJpbnRmKHN5c2ZzX2ZpbGVuYW1lLCBzeXNmc19uYW1lc19mcmVlLAorCQkJCWFiaXR1Z3VydV9zeXNmc19mYW5fdGVtcGxbal0uZGV2X2F0dHIuYXR0ci5uYW1lLAorCQkJCWkgKyAxKSArIDE7CisJCQlkYXRhLT5zeXNmc19hdHRyW3N5c2ZzX2F0dHJfaV0gPQorCQkJCWFiaXR1Z3VydV9zeXNmc19mYW5fdGVtcGxbal07CisJCQlkYXRhLT5zeXNmc19hdHRyW3N5c2ZzX2F0dHJfaV0uZGV2X2F0dHIuYXR0ci5uYW1lID0KKwkJCQlzeXNmc19maWxlbmFtZTsKKwkJCWRhdGEtPnN5c2ZzX2F0dHJbc3lzZnNfYXR0cl9pXS5pbmRleCA9IGk7CisJCQlzeXNmc19maWxlbmFtZSArPSB1c2VkOworCQkJc3lzZnNfbmFtZXNfZnJlZSAtPSB1c2VkOworCQkJc3lzZnNfYXR0cl9pKys7CisJCX0KKwl9CisJLyogRGV0ZWN0IG51bWJlciBvZiBzZW5zb3JzIGFuZCBmaWxsIHRoZSBzeXNmcyBhdHRyIGZvciBwd21zICovCisJYWJpdHVndXJ1X2RldGVjdF9ub19wd21zKGRhdGEpOworCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5wd21zOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoYWJpdHVndXJ1X3N5c2ZzX3B3bV90ZW1wbCk7IGorKykgeworCQkJdXNlZCA9IHNucHJpbnRmKHN5c2ZzX2ZpbGVuYW1lLCBzeXNmc19uYW1lc19mcmVlLAorCQkJCWFiaXR1Z3VydV9zeXNmc19wd21fdGVtcGxbal0uZGV2X2F0dHIuYXR0ci5uYW1lLAorCQkJCWkgKyAxKSArIDE7CisJCQlkYXRhLT5zeXNmc19hdHRyW3N5c2ZzX2F0dHJfaV0gPQorCQkJCWFiaXR1Z3VydV9zeXNmc19wd21fdGVtcGxbal07CisJCQlkYXRhLT5zeXNmc19hdHRyW3N5c2ZzX2F0dHJfaV0uZGV2X2F0dHIuYXR0ci5uYW1lID0KKwkJCQlzeXNmc19maWxlbmFtZTsKKwkJCWRhdGEtPnN5c2ZzX2F0dHJbc3lzZnNfYXR0cl9pXS5pbmRleCA9IGk7CisJCQlzeXNmc19maWxlbmFtZSArPSB1c2VkOworCQkJc3lzZnNfbmFtZXNfZnJlZSAtPSB1c2VkOworCQkJc3lzZnNfYXR0cl9pKys7CisJCX0KKwl9CisJLyogRmFpbCBzYWZlIGNoZWNrLCB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4hICovCisJaWYgKHN5c2ZzX25hbWVzX2ZyZWUgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiBBQklUX1VHVVJVX05BTUUgIjogRmF0YWwgZXJyb3IgcmFuIG91dCBvZiAiCisJCSAgICAgICAic3BhY2UgZm9yIHN5c2ZzIGF0dHIgbmFtZXMuIFRoaXMgc2hvdWxkIG5ldmVyICIKKwkJICAgICAgICJoYXBwZW4gcGxlYXNlIHJlcG9ydCB0byB0aGUgYWJpdHVndXJ1IG1haW50YWluZXIgIgorCQkgICAgICAgIihzZWUgTUFJTlRBSU5FUlMpXG4iKTsKKwkJcmVzID0gLUVOQU1FVE9PTE9ORzsKKwkJZ290byBhYml0dWd1cnVfcHJvYmVfZXJyb3I7CisJfQorCXByaW50ayhLRVJOX0lORk8gQUJJVF9VR1VSVV9OQU1FICI6IGZvdW5kIEFiaXQgdUd1cnVcbiIpOworCisJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KKwlkYXRhLT5jbGFzc19kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldik7CisJaWYgKElTX0VSUihkYXRhLT5jbGFzc19kZXYpKSB7CisJCXJlcyA9IFBUUl9FUlIoZGF0YS0+Y2xhc3NfZGV2KTsKKwkJZ290byBhYml0dWd1cnVfcHJvYmVfZXJyb3I7CisJfQorCWZvciAoaSA9IDA7IGkgPCBzeXNmc19hdHRyX2k7IGkrKykKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYsICZkYXRhLT5zeXNmc19hdHRyW2ldLmRldl9hdHRyKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhYml0dWd1cnVfc3lzZnNfYXR0cik7IGkrKykKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZwZGV2LT5kZXYsCisJCQkmYWJpdHVndXJ1X3N5c2ZzX2F0dHJbaV0uZGV2X2F0dHIpOworCisJcmV0dXJuIDA7CisKK2FiaXR1Z3VydV9wcm9iZV9lcnJvcjoKKwlrZnJlZShkYXRhKTsKKwlyZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhpdCBhYml0dWd1cnVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGFiaXR1Z3VydV9kYXRhICpkYXRhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKKwlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5jbGFzc19kZXYpOworCWtmcmVlKGRhdGEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYWJpdHVndXJ1X2RhdGEgKmFiaXR1Z3VydV91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgaSwgZXJyOworCXN0cnVjdCBhYml0dWd1cnVfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCS8qIGZha2UgYSBjb21wbGV0ZSBzdWNjZXNzZnVsIHJlYWQgaWYgbm8gdXBkYXRlIG5lY2Vzc2FyeS4gKi8KKwljaGFyIHN1Y2Nlc3MgPSAxOworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIGRhdGEtPmxhc3RfdXBkYXRlZCArIEhaKSkgeworCQlzdWNjZXNzID0gMDsKKwkJaWYgKChlcnIgPSBhYml0dWd1cnVfcmVhZChkYXRhLCBBQklUX1VHVVJVX0FMQVJNX0JBTkssIDAsCisJCQkJZGF0YS0+YWxhcm1zLCAzLCAwKSkgIT0gMykKKwkJCWdvdG8gTEVBVkVfVVBEQVRFOworCQlmb3IgKGkgPSAwOyBpIDwgQUJJVF9VR1VSVV9NQVhfQkFOSzFfU0VOU09SUzsgaSsrKSB7CisJCQlpZiAoKGVyciA9IGFiaXR1Z3VydV9yZWFkKGRhdGEsCisJCQkJCUFCSVRfVUdVUlVfU0VOU09SX0JBTksxLCBpLAorCQkJCQkmZGF0YS0+YmFuazFfdmFsdWVbaV0sIDEsIDApKSAhPSAxKQorCQkJCWdvdG8gTEVBVkVfVVBEQVRFOworCQkJaWYgKChlcnIgPSBhYml0dWd1cnVfcmVhZChkYXRhLAorCQkJCQlBQklUX1VHVVJVX1NFTlNPUl9CQU5LMSArIDEsIGksCisJCQkJCWRhdGEtPmJhbmsxX3NldHRpbmdzW2ldLCAzLCAwKSkgIT0gMykKKwkJCQlnb3RvIExFQVZFX1VQREFURTsKKwkJfQorCQlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+YmFuazJfc2Vuc29yczsgaSsrKQorCQkJaWYgKChlcnIgPSBhYml0dWd1cnVfcmVhZChkYXRhLAorCQkJCQlBQklUX1VHVVJVX1NFTlNPUl9CQU5LMiwgaSwKKwkJCQkJJmRhdGEtPmJhbmsyX3ZhbHVlW2ldLCAxLCAwKSkgIT0gMSkKKwkJCQlnb3RvIExFQVZFX1VQREFURTsKKwkJLyogc3VjY2VzcyEgKi8KKwkJc3VjY2VzcyA9IDE7CisJCWRhdGEtPnVwZGF0ZV90aW1lb3V0cyA9IDA7CitMRUFWRV9VUERBVEU6CisJCS8qIGhhbmRsZSB0aW1lb3V0IGNvbmRpdGlvbiAqLworCQlpZiAoZXJyID09IC1FQlVTWSkgeworCQkJLyogTm8gb3ZlcmZsb3cgcGxlYXNlICovCisJCQlpZiAoZGF0YS0+dXBkYXRlX3RpbWVvdXRzIDwgMjU1dSkKKwkJCQlkYXRhLT51cGRhdGVfdGltZW91dHMrKzsKKwkJCWlmIChkYXRhLT51cGRhdGVfdGltZW91dHMgPD0gQUJJVF9VR1VSVV9NQVhfVElNRU9VVFMpIHsKKwkJCQlBQklUX1VHVVJVX0RFQlVHKDMsICJ0aW1lb3V0IGV4Y2VlZGVkLCB3aWxsICIKKwkJCQkJInRyeSBhZ2FpbiBuZXh0IHVwZGF0ZVxuIik7CisJCQkJLyogSnVzdCBhIHRpbWVvdXQsIGZha2UgYSBzdWNjZXNzZnVsIHJlYWQgKi8KKwkJCQlzdWNjZXNzID0gMTsKKwkJCX0gZWxzZQorCQkJCUFCSVRfVUdVUlVfREVCVUcoMSwgInRpbWVvdXQgZXhjZWVkZWQgJWQgIgorCQkJCQkidGltZXMgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCBzdGF0ZVxuIiwKKwkJCQkJKGludClkYXRhLT51cGRhdGVfdGltZW91dHMpOworCQl9CisJCS8qIE9uIHN1Y2Nlc3Mgc2V0IGxhc3RfdXBkYXRlZCAqLworCQlpZiAoc3VjY2VzcykKKwkJCWRhdGEtPmxhc3RfdXBkYXRlZCA9IGppZmZpZXM7CisJfQorCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCisJaWYgKHN1Y2Nlc3MpCisJCXJldHVybiBkYXRhOworCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFiaXR1Z3VydV9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCisJCS5uYW1lCT0gQUJJVF9VR1VSVV9OQU1FLAorCX0sCisJLnByb2JlCT0gYWJpdHVndXJ1X3Byb2JlLAorCS5yZW1vdmUJPSBfX2RldmV4aXRfcChhYml0dWd1cnVfcmVtb3ZlKSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGFiaXR1Z3VydV9kZXRlY3Qodm9pZCkKK3sKKwkvKiBTZWUgaWYgdGhlcmUgaXMgYW4gdWd1cnUgdGhlcmUuIEFmdGVyIGEgcmVib290IHVHdXJ1IHdpbGwgaG9sZCAweDAwCisJICAgYXQgREFUQSBhbmQgMHhBQywgd2hlbiB0aGlzIGRyaXZlciBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCBvbmNlCisJICAgREFUQSB3aWxsIGhvbGQgMHgwOC4gRm9yIG1vc3QgdUd1cnUncyBDTUQgd2lsbCBob2xkIDB4QUMgaW4gZWl0aGVyCisJICAgc2NlbmFyaW8gYnV0IHNvbWUgd2lsbCBob2xkIDB4MDAuCisJICAgU29tZSB1R3VydSdzIGluaXRhbGx5IGhvbGQgMHgwOSBhdCBEQVRBIGFuZCB3aWxsIG9ubHkgaG9sZCAweDA4CisJICAgYWZ0ZXIgcmVhZGluZyBDTUQgZmlyc3QsIHNvIENNRCBtdXN0IGJlIHJlYWQgZmlyc3QhICovCisJdTggY21kX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfQ01EKTsKKwl1OCBkYXRhX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfREFUQSk7CisJaWYgKCgoZGF0YV92YWwgPT0gMHgwMCkgfHwgKGRhdGFfdmFsID09IDB4MDgpKSAmJgorCSAgICAoKGNtZF92YWwgPT0gMHgwMCkgfHwgKGNtZF92YWwgPT0gMHhBQykpKQorCQlyZXR1cm4gQUJJVF9VR1VSVV9CQVNFOworCisJQUJJVF9VR1VSVV9ERUJVRygyLCAibm8gQWJpdCB1R3VydSBmb3VuZCwgZGF0YSA9IDB4JTAyWCwgY21kID0gIgorCQkiMHglMDJYXG4iLCAodW5zaWduZWQgaW50KWRhdGFfdmFsLCAodW5zaWduZWQgaW50KWNtZF92YWwpOworCisJaWYgKGZvcmNlKSB7CisJCXByaW50ayhLRVJOX0lORk8gQUJJVF9VR1VSVV9OQU1FICI6IEFzc3VtaW5nIEFiaXQgdUd1cnUgaXMgIgorCQkJCSJwcmVzZW50IGJlY2F1c2Ugb2YgXCJmb3JjZVwiIHBhcmFtZXRlclxuIik7CisJCXJldHVybiBBQklUX1VHVVJVX0JBU0U7CisJfQorCisJLyogTm8gdUd1cnUgZm91bmQgKi8KKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmFiaXR1Z3VydV9wZGV2OworCitzdGF0aWMgaW50IF9faW5pdCBhYml0dWd1cnVfaW5pdCh2b2lkKQoreworCWludCBhZGRyZXNzLCBlcnI7CisJc3RydWN0IHJlc291cmNlIHJlcyA9IHsgLmZsYWdzID0gSU9SRVNPVVJDRV9JTyB9OworCisJYWRkcmVzcyA9IGFiaXR1Z3VydV9kZXRlY3QoKTsKKwlpZiAoYWRkcmVzcyA8IDApCisJCXJldHVybiBhZGRyZXNzOworCisJZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZhYml0dWd1cnVfZHJpdmVyKTsKKwlpZiAoZXJyKQorCQlnb3RvIGV4aXQ7CisKKwlhYml0dWd1cnVfcGRldiA9IHBsYXRmb3JtX2RldmljZV9hbGxvYyhBQklUX1VHVVJVX05BTUUsIGFkZHJlc3MpOworCWlmICghYWJpdHVndXJ1X3BkZXYpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIEFCSVRfVUdVUlVfTkFNRQorCQkJIjogRGV2aWNlIGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBleGl0X2RyaXZlcl91bnJlZ2lzdGVyOworCX0KKworCXJlcy5zdGFydCA9IGFkZHJlc3M7CisJcmVzLmVuZCA9IGFkZHJlc3MgKyBBQklUX1VHVVJVX1JFR0lPTl9MRU5HVEggLSAxOworCXJlcy5uYW1lID0gQUJJVF9VR1VSVV9OQU1FOworCisJZXJyID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMoYWJpdHVndXJ1X3BkZXYsICZyZXMsIDEpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIEFCSVRfVUdVUlVfTkFNRQorCQkJIjogRGV2aWNlIHJlc291cmNlIGFkZGl0aW9uIGZhaWxlZCAoJWQpXG4iLCBlcnIpOworCQlnb3RvIGV4aXRfZGV2aWNlX3B1dDsKKwl9CisKKwllcnIgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKGFiaXR1Z3VydV9wZGV2KTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUiBBQklUX1VHVVJVX05BTUUKKwkJCSI6IERldmljZSBhZGRpdGlvbiBmYWlsZWQgKCVkKVxuIiwgZXJyKTsKKwkJZ290byBleGl0X2RldmljZV9wdXQ7CisJfQorCisJcmV0dXJuIDA7CisKK2V4aXRfZGV2aWNlX3B1dDoKKwlwbGF0Zm9ybV9kZXZpY2VfcHV0KGFiaXR1Z3VydV9wZGV2KTsKK2V4aXRfZHJpdmVyX3VucmVnaXN0ZXI6CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmFiaXR1Z3VydV9kcml2ZXIpOworZXhpdDoKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgYWJpdHVndXJ1X2V4aXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihhYml0dWd1cnVfcGRldik7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmFiaXR1Z3VydV9kcml2ZXIpOworfQorCitNT0RVTEVfQVVUSE9SKCJIYW5zIGRlIEdvZWRlIDxqLncuci5kZWdvZWRlQGhocy5ubD4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiQWJpdCB1R3VydSBTZW5zb3IgZGV2aWNlIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK21vZHVsZV9pbml0KGFiaXR1Z3VydV9pbml0KTsKK21vZHVsZV9leGl0KGFiaXR1Z3VydV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZjcxODA1Zi5jIGIvZHJpdmVycy9od21vbi9mNzE4MDVmLmMKaW5kZXggODg1NDY1ZC4uZmQ3MjQ0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9mNzE4MDVmLmMKKysrIGIvZHJpdmVycy9od21vbi9mNzE4MDVmLmMKQEAgLTk5LDEwICs5OSw2IEBACiAjZGVmaW5lIEFERFJfUkVHX09GRlNFVAkJMAogI2RlZmluZSBEQVRBX1JFR19PRkZTRVQJCTEKIAotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBmNzE4MDVmX3Jlc291cmNlIF9faW5pdGRhdGEgPSB7Ci0JLmZsYWdzCT0gSU9SRVNPVVJDRV9JTywKLX07Ci0KIC8qCiAgKiBSZWdpc3RlcnMKICAqLwpAQCAtNzgyLDYgKzc3OCwxMSBAQAogCiBzdGF0aWMgaW50IF9faW5pdCBmNzE4MDVmX2RldmljZV9hZGQodW5zaWduZWQgc2hvcnQgYWRkcmVzcykKIHsKKwlzdHJ1Y3QgcmVzb3VyY2UgcmVzID0geworCQkuc3RhcnQJPSBhZGRyZXNzLAorCQkuZW5kCT0gYWRkcmVzcyArIFJFR0lPTl9MRU5HVEggLSAxLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lPLAorCX07CiAJaW50IGVycjsKIAogCXBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoRFJWTkFNRSwgYWRkcmVzcyk7CkBAIC03OTEsMTAgKzc5Miw4IEBACiAJCWdvdG8gZXhpdDsKIAl9CiAKLQlmNzE4MDVmX3Jlc291cmNlLnN0YXJ0ID0gYWRkcmVzczsKLQlmNzE4MDVmX3Jlc291cmNlLmVuZCA9IGFkZHJlc3MgKyBSRUdJT05fTEVOR1RIIC0gMTsKLQlmNzE4MDVmX3Jlc291cmNlLm5hbWUgPSBwZGV2LT5uYW1lOwotCWVyciA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHBkZXYsICZmNzE4MDVmX3Jlc291cmNlLCAxKTsKKwlyZXMubmFtZSA9IHBkZXYtPm5hbWU7CisJZXJyID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMocGRldiwgJnJlcywgMSk7CiAJaWYgKGVycikgewogCQlwcmludGsoS0VSTl9FUlIgRFJWTkFNRSAiOiBEZXZpY2UgcmVzb3VyY2UgYWRkaXRpb24gZmFpbGVkICIKIAkJICAgICAgICIoJWQpXG4iLCBlcnIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9oZGFwcy5jIGIvZHJpdmVycy9od21vbi9oZGFwcy5jCmluZGV4IDE2NTlmNmMuLjQyYjYzMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaGRhcHMuYworKysgYi9kcml2ZXJzL2h3bW9uL2hkYXBzLmMKQEAgLTQxLDcgKzQxLDcgQEAKICNkZWZpbmUgSERBUFNfUE9SVF9TVEFURQkweDE2MTEJLyogZGV2aWNlIHN0YXRlICovCiAjZGVmaW5lIEhEQVBTX1BPUlRfWVBPUwkJMHgxNjEyCS8qIHktYXhpcyBwb3NpdGlvbiAqLwogI2RlZmluZQlIREFQU19QT1JUX1hQT1MJCTB4MTYxNAkvKiB4LWF4aXMgcG9zaXRpb24gKi8KLSNkZWZpbmUgSERBUFNfUE9SVF9URU1QMQkweDE2MTYJLyogZGV2aWNlIHRlbXBlcmF0dXJlLCBpbiBjZWxjaXVzICovCisjZGVmaW5lIEhEQVBTX1BPUlRfVEVNUDEJMHgxNjE2CS8qIGRldmljZSB0ZW1wZXJhdHVyZSwgaW4gQ2Vsc2l1cyAqLwogI2RlZmluZSBIREFQU19QT1JUX1lWQVIJCTB4MTYxNwkvKiB5LWF4aXMgdmFyaWFuY2UgKHdoYXQgaXMgdGhpcz8pICovCiAjZGVmaW5lIEhEQVBTX1BPUlRfWFZBUgkJMHgxNjE5CS8qIHgtYXhpcyB2YXJpYW5jZSAod2hhdCBpcyB0aGlzPykgKi8KICNkZWZpbmUgSERBUFNfUE9SVF9URU1QMgkweDE2MWIJLyogZGV2aWNlIHRlbXBlcmF0dXJlIChhZ2Fpbj8pICovCkBAIC01MjIsMTMgKzUyMiwxNSBAQAogewogCWludCByZXQ7CiAKLQkvKiBOb3RlIHRoYXQgRE1JX01BVENIKC4uLiwiVGhpbmtQYWQgVDQyIikgd2lsbCBtYXRjaCAiVGhpbmtQYWQgVDQycCIgKi8KKwkvKiBOb3RlIHRoYXQgSERBUFNfRE1JX01BVENIX05PUk1BTCgiVGhpbmtQYWQgVDQyIikgd291bGQgbWF0Y2gKKwkgICJUaGlua1BhZCBUNDJwIiwgc28gdGhlIG9yZGVyIG9mIHRoZSBlbnRyaWVzIG1hdHRlcnMgKi8KIAlzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBoZGFwc193aGl0ZWxpc3RbXSA9IHsKIAkJSERBUFNfRE1JX01BVENIX05PUk1BTCgiVGhpbmtQYWQgSCIpLAogCQlIREFQU19ETUlfTUFUQ0hfSU5WRVJUKCJUaGlua1BhZCBSNTBwIiksCiAJCUhEQVBTX0RNSV9NQVRDSF9OT1JNQUwoIlRoaW5rUGFkIFI1MCIpLAogCQlIREFQU19ETUlfTUFUQ0hfTk9STUFMKCJUaGlua1BhZCBSNTEiKSwKIAkJSERBUFNfRE1JX01BVENIX05PUk1BTCgiVGhpbmtQYWQgUjUyIiksCisJCUhEQVBTX0RNSV9NQVRDSF9OT1JNQUwoIlRoaW5rUGFkIEgiKSwJIC8qIFI1MiAoMTg0NkFRRykgKi8KIAkJSERBUFNfRE1JX01BVENIX0lOVkVSVCgiVGhpbmtQYWQgVDQxcCIpLAogCQlIREFQU19ETUlfTUFUQ0hfTk9STUFMKCJUaGlua1BhZCBUNDEiKSwKIAkJSERBUFNfRE1JX01BVENIX0lOVkVSVCgiVGhpbmtQYWQgVDQycCIpLApAQCAtNTM2LDkgKzUzOCw5IEBACiAJCUhEQVBTX0RNSV9NQVRDSF9OT1JNQUwoIlRoaW5rUGFkIFQ0MyIpLAogCQlIREFQU19ETUlfTUFUQ0hfTEVOT1ZPKCJUaGlua1BhZCBUNjBwIiksCiAJCUhEQVBTX0RNSV9NQVRDSF9OT1JNQUwoIlRoaW5rUGFkIFg0MCIpLAotCQlIREFQU19ETUlfTUFUQ0hfTk9STUFMKCJUaGlua1BhZCBYNDEgVGFibGV0IiksCiAJCUhEQVBTX0RNSV9NQVRDSF9OT1JNQUwoIlRoaW5rUGFkIFg0MSIpLAogCQlIREFQU19ETUlfTUFUQ0hfTEVOT1ZPKCJUaGlua1BhZCBYNjAiKSwKKwkJSERBUFNfRE1JX01BVENIX05PUk1BTCgiVGhpbmtQYWQgWjYwbSIpLAogCQl7IC5pZGVudCA9IE5VTEwgfQogCX07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vaHdtb24tdmlkLmMgYi9kcml2ZXJzL2h3bW9uL2h3bW9uLXZpZC5jCmluZGV4IGE3NGE0NGYuLmE2NzY0ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaHdtb24tdmlkLmMKKysrIGIvZHJpdmVycy9od21vbi9od21vbi12aWQuYwpAQCAtNTgsMTEgKzU4LDIwIEBACiAgICAgZG9lc24ndCBzZWVtIHRvIGJlIGFueSBuYW1lZCBzcGVjaWZpY2F0aW9uIGZvciB0aGVzZS4gVGhlIGNvbnZlcnNpb24KICAgICB0YWJsZXMgYXJlIGRldGFpbGVkIGRpcmVjdGx5IGluIHRoZSB2YXJpb3VzIFBlbnRpdW0gTSBkYXRhc2hlZXRzOgogICAgIGh0dHA6Ly93d3cuaW50ZWwuY29tL2Rlc2lnbi9pbnRhcmNoL3BlbnRpdW1tL2RvY3NfcGVudGl1bW0uaHRtCisKKyAgICBUaGUgMTQgc3BlY2lmaWNhdGlvbiBjb3JyZXNwb25kcyB0byBJbnRlbCBDb3JlIHNlcmllcy4gVGhlcmUKKyAgICBkb2Vzbid0IHNlZW0gdG8gYmUgYW55IG5hbWVkIHNwZWNpZmljYXRpb24gZm9yIHRoZXNlLiBUaGUgY29udmVyc2lvbgorICAgIHRhYmxlcyBhcmUgZGV0YWlsZWQgZGlyZWN0bHkgaW4gdGhlIHZhcmlvdXMgUGVudGl1bSBDb3JlIGRhdGFzaGVldHM6CisgICAgaHR0cDovL3d3dy5pbnRlbC5jb20vZGVzaWduL21vYmlsZS9kYXRhc2h0cy8zMDkyMjEuaHRtCisKKyAgICBUaGUgMTEwIChWUk0gMTEpIHNwZWNpZmljYXRpb24gY29ycmVzcG9uZHMgdG8gSW50ZWwgQ29ucm9lIGJhc2VkIHNlcmllcy4KKyAgICBodHRwOi8vd3d3LmludGVsLmNvbS9kZXNpZ24vcHJvY2Vzc29yL2FwcGxub3RzLzMxMzIxNC5odG0KICovCiAKIC8qIHZybSBpcyB0aGUgVlJNL1ZSRCBkb2N1bWVudCB2ZXJzaW9uIG11bHRpcGxpZWQgYnkgMTAuCi0gICB2YWwgaXMgdGhlIDQtLCA1LSBvciA2LWJpdCBWSUQgY29kZS4KLSAgIFJldHVybmVkIHZhbHVlIGlzIGluIG1WIHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IGluIHRoZSBrZXJuZWwuICovCisgICB2YWwgaXMgdGhlIDQtYml0IG9yIG1vcmUgVklEIGNvZGUuCisgICBSZXR1cm5lZCB2YWx1ZSBpcyBpbiBtViB0byBhdm9pZCBmbG9hdGluZyBwb2ludCBpbiB0aGUga2VybmVsLgorICAgU29tZSBWSUQgaGF2ZSBzb21lIGJpdHMgaW4gdVYgc2NhbGUsIHRoaXMgaXMgcm91bmRlZCB0byBtViAqLwogaW50IHZpZF9mcm9tX3JlZyhpbnQgdmFsLCB1OCB2cm0pCiB7CiAJaW50IHZpZDsKQEAgLTcwLDI2ICs3OSwzNiBAQAogCXN3aXRjaCh2cm0pIHsKIAogCWNhc2UgMTAwOiAgICAgICAgICAgICAgIC8qIFZSRCAxMC4wICovCisJCS8qIGNvbXB1dGUgaW4gdVYsIHJvdW5kIHRvIG1WICovCisJCXZhbCAmPSAweDNmOwogCQlpZigodmFsICYgMHgxZikgPT0gMHgxZikKIAkJCXJldHVybiAwOwogCQlpZigodmFsICYgMHgxZikgPD0gMHgwOSB8fCB2YWwgPT0gMHgwYSkKLQkJCXZpZCA9IDEwODc1IC0gKHZhbCAmIDB4MWYpICogMjUwOworCQkJdmlkID0gMTA4NzUwMCAtICh2YWwgJiAweDFmKSAqIDI1MDAwOwogCQllbHNlCi0JCQl2aWQgPSAxODYyNSAtICh2YWwgJiAweDFmKSAqIDI1MDsKKwkJCXZpZCA9IDE4NjI1MDAgLSAodmFsICYgMHgxZikgKiAyNTAwMDsKIAkJaWYodmFsICYgMHgyMCkKLQkJCXZpZCAtPSAxMjU7Ci0JCXZpZCAvPSAxMDsgICAgICAvKiBvbmx5IHJldHVybiAzIGRlYy4gcGxhY2VzIGZvciBub3cgKi8KLQkJcmV0dXJuIHZpZDsKKwkJCXZpZCAtPSAxMjUwMDsKKwkJcmV0dXJuKCh2aWQgKyA1MDApIC8gMTAwMCk7CiAKKwljYXNlIDExMDoJCS8qIEludGVsIENvbnJvZSAqLworCQkJCS8qIGNvbXB1dGUgaW4gdVYsIHJvdW5kIHRvIG1WICovCisJCXZhbCAmPSAweGZmOworCQlpZigoKHZhbCAmIDB4N2UpID09IDB4ZmUpIHx8ICghKHZhbCAmIDB4N2UpKSkKKwkJCXJldHVybiAwOworCQlyZXR1cm4oKDE2MDAwMDAgLSAodmFsIC0gMikgKiA2MjUwICsgNTAwKSAvIDEwMDApOwogCWNhc2UgMjQ6ICAgICAgICAgICAgICAgIC8qIE9wdGVyb24gcHJvY2Vzc29yICovCisJCXZhbCAmPSAweDFmOwogCQlyZXR1cm4odmFsID09IDB4MWYgPyAwIDogMTU1MCAtIHZhbCAqIDI1KTsKIAogCWNhc2UgOTE6CQkvKiBWUk0gOS4xICovCiAJY2FzZSA5MDoJCS8qIFZSTSA5LjAgKi8KKwkJdmFsICY9IDB4MWY7CiAJCXJldHVybih2YWwgPT0gMHgxZiA/IDAgOgogCQkgICAgICAgICAgICAgICAgICAgICAgIDE4NTAgLSB2YWwgKiAyNSk7CiAKIAljYXNlIDg1OgkJLyogVlJNIDguNSAqLworCQl2YWwgJj0gMHgxZjsKIAkJcmV0dXJuKCh2YWwgJiAweDEwICA/IDI1IDogMCkgKwogCQkgICAgICAgKCh2YWwgJiAweDBmKSA+IDB4MDQgPyAyMDUwIDogMTI1MCkgLQogCQkgICAgICAgKCh2YWwgJiAweDBmKSAqIDUwKSk7CkBAIC05OCwxNCArMTE3LDIxIEBACiAJCXZhbCAmPSAweDBmOwogCQkJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgODI6CQkvKiBWUk0gOC4yICovCisJCXZhbCAmPSAweDFmOwogCQlyZXR1cm4odmFsID09IDB4MWYgPyAwIDoKIAkJICAgICAgIHZhbCAmIDB4MTAgID8gNTEwMCAtICh2YWwpICogMTAwIDoKIAkJICAgICAgICAgICAgICAgICAgICAgMjA1MCAtICh2YWwpICogNTApOwogCWNhc2UgMTc6CQkvKiBJbnRlbCBJTVZQLUlJICovCisJCXZhbCAmPSAweDFmOwogCQlyZXR1cm4odmFsICYgMHgxMCA/IDk3NSAtICh2YWwgJiAweEYpICogMjUgOgogCQkJCSAgICAxNzUwIC0gdmFsICogNTApOwogCWNhc2UgMTM6Ci0JCXJldHVybigxNzA4IC0gKHZhbCAmIDB4M2YpICogMTYpOworCQl2YWwgJj0gMHgzZjsKKwkJcmV0dXJuKDE3MDggLSB2YWwgKiAxNik7CisJY2FzZSAxNDoJCS8qIEludGVsIENvcmUgKi8KKwkJCQkvKiBjb21wdXRlIGluIHVWLCByb3VuZCB0byBtViAqLworCQl2YWwgJj0gMHg3ZjsKKwkJcmV0dXJuKHZhbCA+IDB4NzcgPyAwIDogKDE1MDAwMDAgLSAodmFsICogMTI1MDApICsgNTAwKSAvIDEwMDApOwogCWRlZmF1bHQ6CQkvKiByZXBvcnQgMCBmb3IgdW5rbm93biAqLwogCQlwcmludGsoS0VSTl9JTkZPICJod21vbi12aWQ6IHJlcXVlc3RlZCB1bmtub3duIFZSTSB2ZXJzaW9uXG4iKTsKIAkJcmV0dXJuIDA7CkBAIC0xMzgsNiArMTY0LDggQEAKIAl7WDg2X1ZFTkRPUl9JTlRFTCwgMHg2LCAweDksIEFOWSwgMTN9LAkJLyogUGVudGl1bSBNICgxMzAgbm0pICovCiAJe1g4Nl9WRU5ET1JfSU5URUwsIDB4NiwgMHhCLCBBTlksIDg1fSwJCS8qIFR1YWxhdGluICovCiAJe1g4Nl9WRU5ET1JfSU5URUwsIDB4NiwgMHhELCBBTlksIDEzfSwJCS8qIFBlbnRpdW0gTSAoOTAgbm0pICovCisJe1g4Nl9WRU5ET1JfSU5URUwsIDB4NiwgMHhFLCBBTlksIDE0fSwJCS8qIEludGVsIENvcmUgKDY1IG5tKSAqLworCXtYODZfVkVORE9SX0lOVEVMLCAweDYsIDB4RiwgQU5ZLCAxMTB9LAkJLyogSW50ZWwgQ29ucm9lICovCiAJe1g4Nl9WRU5ET1JfSU5URUwsIDB4NiwgQU5ZLCBBTlksIDgyfSwJCS8qIGFueSBQNiAqLwogCXtYODZfVkVORE9SX0lOVEVMLCAweDcsIEFOWSwgQU5ZLCAwfSwJCS8qIEl0YW5pdW0gKi8KIAl7WDg2X1ZFTkRPUl9JTlRFTCwgMHhGLCAweDAsIEFOWSwgOTB9LAkJLyogUDQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03MC5jIGIvZHJpdmVycy9od21vbi9sbTcwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJhODQ3MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaHdtb24vbG03MC5jCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogbG03MC5jCisgKgorICogVGhlIExNNzAgaXMgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgY2hpcCBmcm9tIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgKE5TKS4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBLYWl3YW4gTiBCaWxsaW1vcmlhIDxrYWl3YW5AZGVzaWduZXJncmFwaGl4LmNvbT4KKyAqCisgKiBUaGUgTE03MCBjb21tdW5pY2F0ZXMgd2l0aCBhIGhvc3QgcHJvY2Vzc29yIHZpYSBhbiBTUEkvTWljcm93aXJlIEJ1cworICogaW50ZXJmYWNlLiBUaGUgY29tcGxldGUgZGF0YXNoZWV0IGlzIGF2YWlsYWJsZSBhdCBOYXRpb25hbCdzIHdlYnNpdGUKKyAqIGhlcmU6CisgKiBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTcwLmh0bWwKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisjaW5jbHVkZSA8bGludXgvaHdtb24uaD4KKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+CisjaW5jbHVkZSA8YXNtL3NlbWFwaG9yZS5oPgorCisjZGVmaW5lIERSVk5BTUUJCSJsbTcwIgorCitzdHJ1Y3QgbG03MCB7CisJc3RydWN0IGNsYXNzX2RldmljZSAqY2RldjsKKwlzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKK307CisKKy8qIHN5c2ZzIGhvb2sgZnVuY3Rpb24gKi8KK3N0YXRpYyBzc2l6ZV90IGxtNzBfc2Vuc2VfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9IHRvX3NwaV9kZXZpY2UoZGV2KTsKKwlpbnQgc3RhdHVzLCB2YWw7CisJdTggcnhidWZbMl07CisJczE2IHJhdz0wOworCXN0cnVjdCBsbTcwICpwX2xtNzAgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ZGV2KTsKKworCWlmIChkb3duX2ludGVycnVwdGlibGUoJnBfbG03MC0+c2VtKSkKKwkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKKworCS8qCisJICogc3BpX3JlYWQoKSByZXF1aXJlcyBhIERNQS1zYWZlIGJ1ZmZlcjsgc28gd2UgdXNlCisJICogc3BpX3dyaXRlX3RoZW5fcmVhZCgpLCB0cmFuc21pdHRpbmcgMCBieXRlcy4KKwkgKi8KKwlzdGF0dXMgPSBzcGlfd3JpdGVfdGhlbl9yZWFkKHNwaSwgTlVMTCwgMCwgJnJ4YnVmWzBdLCAyKTsKKwlpZiAoc3RhdHVzIDwgMCkgeworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSJzcGlfd3JpdGVfdGhlbl9yZWFkIGZhaWxlZCB3aXRoIHN0YXR1cyAlZFxuIiwgc3RhdHVzKTsKKwkJZ290byBvdXQ7CisJfQorCWRldl9kYmcoZGV2LCAicnhidWZbMV0gOiAweCV4IHJ4YnVmWzBdIDogMHgleFxuIiwgcnhidWZbMV0sIHJ4YnVmWzBdKTsKKworCXJhdyA9IChyeGJ1ZlsxXSA8PCA4KSArIHJ4YnVmWzBdOworCWRldl9kYmcoZGV2LCAicmF3PTB4JXhcbiIsIHJhdyk7CisKKwkvKgorCSAqIFRoZSAicmF3IiB0ZW1wZXJhdHVyZSByZWFkIGludG8gcnhidWZbXSBpcyBhIDE2LWJpdCBzaWduZWQgMidzCisJICogY29tcGxlbWVudCB2YWx1ZS4gT25seSB0aGUgTVNCIDExIGJpdHMgKDEgc2lnbiArIDEwIHRlbXBlcmF0dXJlCisJICogYml0cykgYXJlIG1lYW5pbmdmdWw7IHRoZSBMU0IgNSBiaXRzIGFyZSB0byBiZSBkaXNjYXJkZWQuCisJICogU2VlIHRoZSBkYXRhc2hlZXQuCisJICoKKwkgKiBGdXJ0aGVyLCBlYWNoIGJpdCByZXByZXNlbnRzIDAuMjUgZGVncmVlcyBDZWxzaXVzOyBzbywgbXVsdGlwbHkKKwkgKiBieSAwLjI1LiBBbHNvIG11bHRpcGx5IGJ5IDEwMDAgdG8gcmVwcmVzZW50IGluIG1pbGxpZGVncmVlcworCSAqIENlbHNpdXMuCisJICogU28gaXQncyBlcXVpdmFsZW50IHRvIG11bHRpcGx5aW5nIGJ5IDAuMjUgKiAxMDAwID0gMjUwLgorCSAqLworCXZhbCA9ICgoaW50KXJhdy8zMikgKiAyNTA7CisJc3RhdHVzID0gc3ByaW50ZihidWYsICIlK2RcbiIsIHZhbCk7IC8qIG1pbGxpZGVncmVlcyBDZWxzaXVzICovCitvdXQ6CisJdXAoJnBfbG03MC0+c2VtKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVWSUNFX0FUVFIodGVtcDFfaW5wdXQsIFNfSVJVR08sIGxtNzBfc2Vuc2VfdGVtcCwgTlVMTCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGxtNzBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlzdHJ1Y3QgbG03MCAqcF9sbTcwOworCWludCBzdGF0dXM7CisKKwlwX2xtNzAgPSBremFsbG9jKHNpemVvZiAqcF9sbTcwLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBfbG03MCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpbml0X01VVEVYKCZwX2xtNzAtPnNlbSk7CisKKwkvKiBzeXNmcyBob29rICovCisJcF9sbTcwLT5jZGV2ID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyKCZzcGktPmRldik7CisJaWYgKElTX0VSUihwX2xtNzAtPmNkZXYpKSB7CisJCWRldl9kYmcoJnNwaS0+ZGV2LCAiaHdtb25fZGV2aWNlX3JlZ2lzdGVyIGZhaWxlZC5cbiIpOworCQlzdGF0dXMgPSBQVFJfRVJSKHBfbG03MC0+Y2Rldik7CisJCWdvdG8gb3V0X2Rldl9yZWdfZmFpbGVkOworCX0KKwlkZXZfc2V0X2RydmRhdGEoJnNwaS0+ZGV2LCBwX2xtNzApOworCisJaWYgKChzdGF0dXMgPSBkZXZpY2VfY3JlYXRlX2ZpbGUoJnNwaS0+ZGV2LCAmZGV2X2F0dHJfdGVtcDFfaW5wdXQpKSkgeworCQlkZXZfZGJnKCZzcGktPmRldiwgImRldmljZV9jcmVhdGVfZmlsZSBmYWlsdXJlLlxuIik7CisJCWdvdG8gb3V0X2Rldl9jcmVhdGVfZmlsZV9mYWlsZWQ7CisJfQorCisJcmV0dXJuIDA7CisKK291dF9kZXZfY3JlYXRlX2ZpbGVfZmFpbGVkOgorCWh3bW9uX2RldmljZV91bnJlZ2lzdGVyKHBfbG03MC0+Y2Rldik7CitvdXRfZGV2X3JlZ19mYWlsZWQ6CisJZGV2X3NldF9kcnZkYXRhKCZzcGktPmRldiwgTlVMTCk7CisJa2ZyZWUocF9sbTcwKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgaW50IF9fZXhpdCBsbTcwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCXN0cnVjdCBsbTcwICpwX2xtNzAgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ZGV2KTsKKworCWRldmljZV9yZW1vdmVfZmlsZSgmc3BpLT5kZXYsICZkZXZfYXR0cl90ZW1wMV9pbnB1dCk7CisJaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIocF9sbTcwLT5jZGV2KTsKKwlkZXZfc2V0X2RydmRhdGEoJnNwaS0+ZGV2LCBOVUxMKTsKKwlrZnJlZShwX2xtNzApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBsbTcwX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZQk9ICJsbTcwIiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCisJfSwKKwkucHJvYmUJPSBsbTcwX3Byb2JlLAorCS5yZW1vdmUJPSBfX2RldmV4aXRfcChsbTcwX3JlbW92ZSksCit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0X2xtNzAodm9pZCkKK3sKKwlyZXR1cm4gc3BpX3JlZ2lzdGVyX2RyaXZlcigmbG03MF9kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgY2xlYW51cF9sbTcwKHZvaWQpCit7CisJc3BpX3VucmVnaXN0ZXJfZHJpdmVyKCZsbTcwX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KGluaXRfbG03MCk7Cittb2R1bGVfZXhpdChjbGVhbnVwX2xtNzApOworCitNT0RVTEVfQVVUSE9SKCJLYWl3YW4gTiBCaWxsaW1vcmlhIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MCBMaW51eCBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04My5jIGIvZHJpdmVycy9od21vbi9sbTgzLmMKaW5kZXggYWFjNGVjMi4uMjEzN2Q3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTgzLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgzLmMKQEAgLTEyLDYgKzEyLDEwIEBACiAgKiBTaW5jZSB0aGUgZGF0YXNoZWV0IG9taXRzIHRvIGdpdmUgdGhlIGNoaXAgc3RlcHBpbmcgY29kZSwgSSBnaXZlIGl0CiAgKiBoZXJlOiAweDAzIChhdCByZWdpc3RlciAweGZmKS4KICAqCisgKiBBbHNvIHN1cHBvcnRzIHRoZSBMTTgyIHRlbXAgc2Vuc29yLCB3aGljaCBpcyBiYXNpY2FsbHkgYSBzdHJpcHBlZCBkb3duCisgKiBtb2RlbCBvZiB0aGUgTE04My4gIERhdGFzaGVldCBpcyBoZXJlOgorICogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE04Mi5odG1sCisgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtNTIsNyArNTYsNyBAQAogICogSW5zbW9kIHBhcmFtZXRlcnMKICAqLwogCi1JMkNfQ0xJRU5UX0lOU01PRF8xKGxtODMpOworSTJDX0NMSUVOVF9JTlNNT0RfMihsbTgzLCBsbTgyKTsKIAogLyoKICAqIFRoZSBMTTgzIHJlZ2lzdGVycwpAQCAtMjgzLDYgKzI4Nyw5IEBACiAJCWlmIChtYW5faWQgPT0gMHgwMSkgeyAvKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yICovCiAJCQlpZiAoY2hpcF9pZCA9PSAweDAzKSB7CiAJCQkJa2luZCA9IGxtODM7CisJCQl9IGVsc2UKKwkJCWlmIChjaGlwX2lkID09IDB4MDEpIHsKKwkJCQlraW5kID0gbG04MjsKIAkJCX0KIAkJfQogCkBAIC0yOTYsNiArMzAzLDkgQEAKIAogCWlmIChraW5kID09IGxtODMpIHsKIAkJbmFtZSA9ICJsbTgzIjsKKwl9IGVsc2UKKwlpZiAoa2luZCA9PSBsbTgyKSB7CisJCW5hbWUgPSAibG04MiI7CiAJfQogCiAJLyogV2UgY2FuIGZpbGwgaW4gdGhlIHJlbWFpbmluZyBjbGllbnQgZmllbGRzICovCkBAIC0zMTksMzIgKzMyOSw0NiBAQAogCQlnb3RvIGV4aXRfZGV0YWNoOwogCX0KIAorCS8qCisJICogVGhlIExNODIgY2FuIG9ubHkgbW9uaXRvciBvbmUgZXh0ZXJuYWwgZGlvZGUgd2hpY2ggaXMKKwkgKiBhdCB0aGUgc2FtZSByZWdpc3RlciBhcyB0aGUgTE04MyB0ZW1wMyBlbnRyeSAtIHNvIHdlCisJICogZGVjbGFyZSAxIGFuZCAzIGNvbW1vbiwgYW5kIHRoZW4gMiBhbmQgNCBvbmx5IGZvciB0aGUgTE04My4KKwkgKi8KKwogCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAogCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0cik7CiAJZGV2aWNlX2NyZWF0ZV9maWxlKCZuZXdfY2xpZW50LT5kZXYsCi0JCQkgICAmc2Vuc29yX2Rldl9hdHRyX3RlbXAyX2lucHV0LmRldl9hdHRyKTsKLQlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKIAkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDNfaW5wdXQuZGV2X2F0dHIpOwotCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAotCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wNF9pbnB1dC5kZXZfYXR0cik7CisKIAlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKIAkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWF4LmRldl9hdHRyKTsKIAlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKLQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfbWF4LmRldl9hdHRyKTsKLQlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKIAkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDNfbWF4LmRldl9hdHRyKTsKLQlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKLQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDRfbWF4LmRldl9hdHRyKTsKKwogCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAogCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9jcml0LmRldl9hdHRyKTsKIAlkZXZpY2VfY3JlYXRlX2ZpbGUoJm5ld19jbGllbnQtPmRldiwKLQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfY3JpdC5kZXZfYXR0cik7Ci0JZGV2aWNlX2NyZWF0ZV9maWxlKCZuZXdfY2xpZW50LT5kZXYsCiAJCQkgICAmc2Vuc29yX2Rldl9hdHRyX3RlbXAzX2NyaXQuZGV2X2F0dHIpOwotCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAotCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wNF9jcml0LmRldl9hdHRyKTsKKwogCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LCAmZGV2X2F0dHJfYWxhcm1zKTsKIAorCWlmIChraW5kID09IGxtODMpIHsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZuZXdfY2xpZW50LT5kZXYsCisJCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMl9pbnB1dC5kZXZfYXR0cik7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAorCQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDRfaW5wdXQuZGV2X2F0dHIpOworCisJCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAorCQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfbWF4LmRldl9hdHRyKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZuZXdfY2xpZW50LT5kZXYsCisJCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wNF9tYXguZGV2X2F0dHIpOworCisJCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAorCQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfY3JpdC5kZXZfYXR0cik7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmbmV3X2NsaWVudC0+ZGV2LAorCQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDRfY3JpdC5kZXZfYXR0cik7CisJfQorCiAJcmV0dXJuIDA7CiAKIGV4aXRfZGV0YWNoOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGM0NTcwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMKQEAgLTAsMCArMSw2NDggQEAKKy8qCisgICAgc21zYzQ3bTE5Mi5jIC0gU3VwcG9ydCBmb3IgaGFyZHdhcmUgbW9uaXRvcmluZyBibG9jayBvZgorICAgICAgICAgICAgICAgICAgIFNNU0MgTFBDNDdNMTkyIGFuZCBMUEM0N005OTcgU3VwZXIgSS9PIGNoaXBzCisKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgIEhhcnRtdXQgUmljayA8bGludXhAcmljay5jbGFyYW5ldC5kZT4KKworICAgIERlcml2ZWQgZnJvbSBsbTc4LmMgYW5kIG90aGVyIGNoaXAgZHJpdmVycy4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L2h3bW9uLmg+CisjaW5jbHVkZSA8bGludXgvaHdtb24tc3lzZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9od21vbi12aWQuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKworLyogQWRkcmVzc2VzIHRvIHNjYW4gKi8KK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJjW10gPSB7IDB4MmMsIDB4MmQsIEkyQ19DTElFTlRfRU5EIH07CisKKy8qIEluc21vZCBwYXJhbWV0ZXJzICovCitJMkNfQ0xJRU5UX0lOU01PRF8xKHNtc2M0N20xOTIpOworCisvKiBTTVNDNDdNMTkyIHJlZ2lzdGVycyAqLworI2RlZmluZSBTTVNDNDdNMTkyX1JFR19JTihucikJCSgobnIpPDYgPyAoMHgyMCArIChucikpIDogXAorCQkJCQkoMHg1MCArIChucikgLSA2KSkKKyNkZWZpbmUgU01TQzQ3TTE5Ml9SRUdfSU5fTUFYKG5yKQkoKG5yKTw2ID8gKDB4MmIgKyAobnIpICogMikgOiBcCisJCQkJCSgweDU0ICsgKCgobnIpIC0gNikgKiAyKSkpCisjZGVmaW5lIFNNU0M0N00xOTJfUkVHX0lOX01JTihucikJKChucik8NiA/ICgweDJjICsgKG5yKSAqIDIpIDogXAorCQkJCQkoMHg1NSArICgoKG5yKSAtIDYpICogMikpKQorc3RhdGljIHU4IFNNU0M0N00xOTJfUkVHX1RFTVBbM10gPQl7IDB4MjcsIDB4MjYsIDB4NTIgfTsKK3N0YXRpYyB1OCBTTVNDNDdNMTkyX1JFR19URU1QX01BWFszXSA9CXsgMHgzOSwgMHgzNywgMHg1OCB9Oworc3RhdGljIHU4IFNNU0M0N00xOTJfUkVHX1RFTVBfTUlOWzNdID0JeyAweDNBLCAweDM4LCAweDU5IH07CisjZGVmaW5lIFNNU0M0N00xOTJfUkVHX1RFTVBfT0ZGU0VUKG5yKQkoKG5yKT09MiA/IDB4MWUgOiAweDFmKQorI2RlZmluZSBTTVNDNDdNMTkyX1JFR19BTEFSTTEJCTB4NDEKKyNkZWZpbmUgU01TQzQ3TTE5Ml9SRUdfQUxBUk0yCQkweDQyCisjZGVmaW5lIFNNU0M0N00xOTJfUkVHX1ZJRAkJMHg0NworI2RlZmluZSBTTVNDNDdNMTkyX1JFR19WSUQ0CQkweDQ5CisjZGVmaW5lIFNNU0M0N00xOTJfUkVHX0NPTkZJRwkJMHg0MAorI2RlZmluZSBTTVNDNDdNMTkyX1JFR19TRlIJCTB4NGYKKyNkZWZpbmUgU01TQzQ3TTE5Ml9SRUdfQ09NUEFOWV9JRAkweDNlCisjZGVmaW5lIFNNU0M0N00xOTJfUkVHX1ZFUlNJT04JCTB4M2YKKworLyogZ2VuZXJhbGlzZWQgc2NhbGluZyB3aXRoIGludGVnZXIgcm91bmRpbmcgKi8KK3N0YXRpYyBpbmxpbmUgaW50IFNDQUxFKGxvbmcgdmFsLCBpbnQgbXVsLCBpbnQgZGl2KQoreworCWlmICh2YWwgPCAwKQorCQlyZXR1cm4gKHZhbCAqIG11bCAtIGRpdiAvIDIpIC8gZGl2OworCWVsc2UKKwkJcmV0dXJuICh2YWwgKiBtdWwgKyBkaXYgLyAyKSAvIGRpdjsKK30KKworLyogQ29udmVyc2lvbnMgKi8KKworLyogc21zYzQ3bTE5MiBpbnRlcm5hbGx5IHNjYWxlcyB2b2x0YWdlIG1lYXN1cmVtZW50cyAqLworc3RhdGljIGNvbnN0IHUxNiBub21fbXZbXSA9IHsgMjUwMCwgMjI1MCwgMzMwMCwgNTAwMCwgMTIwMDAsIDMzMDAsIDE1MDAsIDE4MDAgfTsKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgSU5fRlJPTV9SRUcodTggcmVnLCBpbnQgbikKK3sKKwlyZXR1cm4gU0NBTEUocmVnLCBub21fbXZbbl0sIDE5Mik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTggSU5fVE9fUkVHKHVuc2lnbmVkIGxvbmcgdmFsLCBpbnQgbikKK3sKKwlyZXR1cm4gU0VOU09SU19MSU1JVChTQ0FMRSh2YWwsIDE5Miwgbm9tX212W25dKSwgMCwgMjU1KTsKK30KKworLyogVEVNUDogMC4wMDEgZGVnQyB1bml0cyAoLTEyOEMgdG8gKzEyN0MpCisgICBSRUc6IDFDL2JpdCwgdHdvJ3MgY29tcGxlbWVudCAqLworc3RhdGljIGlubGluZSBzOCBURU1QX1RPX1JFRyhpbnQgdmFsKQoreworCXJldHVybiBTRU5TT1JTX0xJTUlUKFNDQUxFKHZhbCwgMSwgMTAwMCksIC0xMjgwMDAsIDEyNzAwMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IFRFTVBfRlJPTV9SRUcoczggdmFsKQoreworCXJldHVybiB2YWwgKiAxMDAwOworfQorCitzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhIHsKKwlzdHJ1Y3QgaTJjX2NsaWVudCBjbGllbnQ7CisJc3RydWN0IGNsYXNzX2RldmljZSAqY2xhc3NfZGV2OworCXN0cnVjdCBzZW1hcGhvcmUgdXBkYXRlX2xvY2s7CisJY2hhciB2YWxpZDsJCS8qICE9MCBpZiBmb2xsb3dpbmcgZmllbGRzIGFyZSB2YWxpZCAqLworCXVuc2lnbmVkIGxvbmcgbGFzdF91cGRhdGVkOwkvKiBJbiBqaWZmaWVzICovCisKKwl1OCBpbls4XTsJCS8qIFJlZ2lzdGVyIHZhbHVlICovCisJdTggaW5fbWF4WzhdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBpbl9taW5bOF07CQkvKiBSZWdpc3RlciB2YWx1ZSAqLworCXM4IHRlbXBbM107CQkvKiBSZWdpc3RlciB2YWx1ZSAqLworCXM4IHRlbXBfbWF4WzNdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwlzOCB0ZW1wX21pblszXTsJCS8qIFJlZ2lzdGVyIHZhbHVlICovCisJczggdGVtcF9vZmZzZXRbM107CS8qIFJlZ2lzdGVyIHZhbHVlICovCisJdTE2IGFsYXJtczsJCS8qIFJlZ2lzdGVyIGVuY29kaW5nLCBjb21iaW5lZCAqLworCXU4IHZpZDsJCQkvKiBSZWdpc3RlciBlbmNvZGluZywgY29tYmluZWQgKi8KKwl1OCB2cm07Cit9OworCitzdGF0aWMgaW50IHNtc2M0N20xOTJfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKK3N0YXRpYyBpbnQgc21zYzQ3bTE5Ml9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywKKwkJaW50IGtpbmQpOworc3RhdGljIGludCBzbXNjNDdtMTkyX2RldGFjaF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7CitzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldik7CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzbXNjNDdtMTkyX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZQk9ICJzbXNjNDdtMTkyIiwKKwl9LAorCS5hdHRhY2hfYWRhcHRlcgk9IHNtc2M0N20xOTJfYXR0YWNoX2FkYXB0ZXIsCisJLmRldGFjaF9jbGllbnQJPSBzbXNjNDdtMTkyX2RldGFjaF9jbGllbnQsCit9OworCisvKiBWb2x0YWdlcyAqLworc3RhdGljIHNzaXplX3Qgc2hvd19pbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBJTl9GUk9NX1JFRyhkYXRhLT5pbltucl0sIG5yKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfaW5fbWluKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCWNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOworCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhID0gc21zYzQ3bTE5Ml91cGRhdGVfZGV2aWNlKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIElOX0ZST01fUkVHKGRhdGEtPmluX21pbltucl0sIG5yKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfaW5fbWF4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCWNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOworCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhID0gc21zYzQ3bTE5Ml91cGRhdGVfZGV2aWNlKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIElOX0ZST01fUkVHKGRhdGEtPmluX21heFtucl0sIG5yKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNldF9pbl9taW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJdW5zaWduZWQgbG9uZyB2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKKworCWRvd24oJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT5pbl9taW5bbnJdID0gSU5fVE9fUkVHKHZhbCwgbnIpOworCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBTTVNDNDdNMTkyX1JFR19JTl9NSU4obnIpLAorCQkJCQkJCWRhdGEtPmluX21pbltucl0pOworCXVwKCZkYXRhLT51cGRhdGVfbG9jayk7CisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCBzZXRfaW5fbWF4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCXVuc2lnbmVkIGxvbmcgdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisKKwlkb3duKCZkYXRhLT51cGRhdGVfbG9jayk7CisJZGF0YS0+aW5fbWF4W25yXSA9IElOX1RPX1JFRyh2YWwsIG5yKTsKKwlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfSU5fTUFYKG5yKSwKKwkJCQkJCQlkYXRhLT5pbl9tYXhbbnJdKTsKKwl1cCgmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiBjb3VudDsKK30KKworI2RlZmluZSBzaG93X2luX29mZnNldChvZmZzZXQpCQkJCQlcCitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGluIyNvZmZzZXQjI19pbnB1dCwgU19JUlVHTywJCVwKKwkJc2hvd19pbiwgTlVMTCwgb2Zmc2V0KTsJCQkJXAorc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbiMjb2Zmc2V0IyNfbWluLCBTX0lSVUdPIHwgU19JV1VTUiwJXAorCQlzaG93X2luX21pbiwgc2V0X2luX21pbiwgb2Zmc2V0KTsJCVwKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW4jI29mZnNldCMjX21heCwgU19JUlVHTyB8IFNfSVdVU1IsCVwKKwkJc2hvd19pbl9tYXgsIHNldF9pbl9tYXgsIG9mZnNldCk7CisKK3Nob3dfaW5fb2Zmc2V0KDApCitzaG93X2luX29mZnNldCgxKQorc2hvd19pbl9vZmZzZXQoMikKK3Nob3dfaW5fb2Zmc2V0KDMpCitzaG93X2luX29mZnNldCg0KQorc2hvd19pbl9vZmZzZXQoNSkKK3Nob3dfaW5fb2Zmc2V0KDYpCitzaG93X2luX29mZnNldCg3KQorCisvKiBUZW1wZXJhdHVyZXMgKi8KK3N0YXRpYyBzc2l6ZV90IHNob3dfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBURU1QX0ZST01fUkVHKGRhdGEtPnRlbXBbbnJdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfdGVtcF9taW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJY2hhciAqYnVmKQoreworCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCXN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKmRhdGEgPSBzbXNjNDdtMTkyX3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgVEVNUF9GUk9NX1JFRyhkYXRhLT50ZW1wX21pbltucl0pKTsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd190ZW1wX21heChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBURU1QX0ZST01fUkVHKGRhdGEtPnRlbXBfbWF4W25yXSkpOworfQorCitzdGF0aWMgc3NpemVfdCBzZXRfdGVtcF9taW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJbG9uZyB2YWwgPSBzaW1wbGVfc3RydG9sKGJ1ZiwgTlVMTCwgMTApOworCisJZG93bigmZGF0YS0+dXBkYXRlX2xvY2spOworCWRhdGEtPnRlbXBfbWluW25yXSA9IFRFTVBfVE9fUkVHKHZhbCk7CisJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFNNU0M0N00xOTJfUkVHX1RFTVBfTUlOW25yXSwKKwkJCQkJCWRhdGEtPnRlbXBfbWluW25yXSk7CisJdXAoJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNldF90ZW1wX21heChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOworCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAxMCk7CisKKwlkb3duKCZkYXRhLT51cGRhdGVfbG9jayk7CisJZGF0YS0+dGVtcF9tYXhbbnJdID0gVEVNUF9UT19SRUcodmFsKTsKKwlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfVEVNUF9NQVhbbnJdLAorCQkJCQkJZGF0YS0+dGVtcF9tYXhbbnJdKTsKKwl1cCgmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd190ZW1wX29mZnNldChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlCisJCSphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBURU1QX0ZST01fUkVHKGRhdGEtPnRlbXBfb2Zmc2V0W25yXSkpOworfQorCitzdGF0aWMgc3NpemVfdCBzZXRfdGVtcF9vZmZzZXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZQorCQkqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJdTggc2ZyID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfU0ZSKTsKKwlsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAxMCk7CisKKwlkb3duKCZkYXRhLT51cGRhdGVfbG9jayk7CisJZGF0YS0+dGVtcF9vZmZzZXRbbnJdID0gVEVNUF9UT19SRUcodmFsKTsKKwlpZiAobnI+MSkKKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQlTTVNDNDdNMTkyX1JFR19URU1QX09GRlNFVChuciksIGRhdGEtPnRlbXBfb2Zmc2V0W25yXSk7CisJZWxzZSBpZiAoZGF0YS0+dGVtcF9vZmZzZXRbbnJdICE9IDApIHsKKwkJLyogb2Zmc2V0WzBdIGFuZCBvZmZzZXRbMV0gc2hhcmUgdGhlIHNhbWUgcmVnaXN0ZXIsCisJCQlTRlIgYml0IDQgYWN0aXZhdGVzIG9mZnNldFswXSAqLworCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfU0ZSLAorCQkJCQkoc2ZyICYgMHhlZikgfCAobnI9PTAgPyAweDEwIDogMCkpOworCQlkYXRhLT50ZW1wX29mZnNldFsxLW5yXSA9IDA7CisJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LAorCQkJU01TQzQ3TTE5Ml9SRUdfVEVNUF9PRkZTRVQobnIpLCBkYXRhLT50ZW1wX29mZnNldFtucl0pOworCX0gZWxzZSBpZiAoKHNmciAmIDB4MTApID09IChucj09MCA/IDB4MTAgOiAwKSkKKwkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCVNNU0M0N00xOTJfUkVHX1RFTVBfT0ZGU0VUKG5yKSwgMCk7CisJdXAoJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlyZXR1cm4gY291bnQ7Cit9CisKKyNkZWZpbmUgc2hvd190ZW1wX2luZGV4KGluZGV4KQkJCQkJCVwKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcCMjaW5kZXgjI19pbnB1dCwgU19JUlVHTywJCQlcCisJCXNob3dfdGVtcCwgTlVMTCwgaW5kZXgtMSk7CQkJCVwKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcCMjaW5kZXgjI19taW4sIFNfSVJVR08gfCBTX0lXVVNSLAkJXAorCQlzaG93X3RlbXBfbWluLCBzZXRfdGVtcF9taW4sIGluZGV4LTEpOwkJCVwKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcCMjaW5kZXgjI19tYXgsIFNfSVJVR08gfCBTX0lXVVNSLAkJXAorCQlzaG93X3RlbXBfbWF4LCBzZXRfdGVtcF9tYXgsIGluZGV4LTEpOwkJCVwKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcCMjaW5kZXgjI19vZmZzZXQsIFNfSVJVR08gfCBTX0lXVVNSLAlcCisJCXNob3dfdGVtcF9vZmZzZXQsIHNldF90ZW1wX29mZnNldCwgaW5kZXgtMSk7CisKK3Nob3dfdGVtcF9pbmRleCgxKQorc2hvd190ZW1wX2luZGV4KDIpCitzaG93X3RlbXBfaW5kZXgoMykKKworLyogVklEICovCitzdGF0aWMgc3NpemVfdCBzaG93X3ZpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB2aWRfZnJvbV9yZWcoZGF0YS0+dmlkLCBkYXRhLT52cm0pKTsKK30KK3N0YXRpYyBERVZJQ0VfQVRUUihjcHUwX3ZpZCwgU19JUlVHTywgc2hvd192aWQsIE5VTEwpOworCitzdGF0aWMgc3NpemVfdCBzaG93X3ZybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBkYXRhLT52cm0pOworfQorCitzdGF0aWMgc3NpemVfdCBzZXRfdnJtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWRhdGEtPnZybSA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOworCXJldHVybiBjb3VudDsKK30KK3N0YXRpYyBERVZJQ0VfQVRUUih2cm0sIFNfSVJVR08gfCBTX0lXVVNSLCBzaG93X3ZybSwgc2V0X3ZybSk7CisKKy8qIEFsYXJtcyAqLworc3RhdGljIHNzaXplX3Qgc2hvd19hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqZGF0YSA9IHNtc2M0N20xOTJfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCAoZGF0YS0+YWxhcm1zICYgbnIpID8gMSA6IDApOworfQorCitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAweDAwMTApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMHgwMDIwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDNfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDB4MDA0MCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAyX2lucHV0X2ZhdWx0LCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAweDQwMDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wM19pbnB1dF9mYXVsdCwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMHg4MDAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW4wX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAweDAwMDEpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbjFfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDB4MDAwMik7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGluMl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMHgwMDA0KTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW4zX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAweDAwMDgpOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbjRfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDB4MDEwMCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGluNV9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMHgwMjAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoaW42X2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAweDA0MDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihpbjdfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDB4MDgwMCk7CisKKy8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW46CisgICAgKiBzbXNjNDdtMTkyX2RyaXZlciBpcyBpbnNlcnRlZCAod2hlbiB0aGlzIG1vZHVsZSBpcyBsb2FkZWQpLCBmb3IgZWFjaAorICAgICAgYXZhaWxhYmxlIGFkYXB0ZXIKKyAgICAqIHdoZW4gYSBuZXcgYWRhcHRlciBpcyBpbnNlcnRlZCAoYW5kIHNtc2M0N20xOTJfZHJpdmVyIGlzIHN0aWxsIHByZXNlbnQpICovCitzdGF0aWMgaW50IHNtc2M0N20xOTJfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQoreworCWlmICghKGFkYXB0ZXItPmNsYXNzICYgSTJDX0NMQVNTX0hXTU9OKSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIGkyY19wcm9iZShhZGFwdGVyLCAmYWRkcl9kYXRhLCBzbXNjNDdtMTkyX2RldGVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHNtc2M0N20xOTJfaW5pdF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlpbnQgaTsKKwl1OCBjb25maWcgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBTTVNDNDdNMTkyX1JFR19DT05GSUcpOworCXU4IHNmciA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIFNNU0M0N00xOTJfUkVHX1NGUik7CisKKwkvKiBzZWxlY3QgY3ljbGUgbW9kZSAocGF1c2UgMSBzZWMgYmV0d2VlbiB1cGRhdGVzKSAqLworCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBTTVNDNDdNMTkyX1JFR19TRlIsCisJCQkJCQkoc2ZyICYgMHhmZCkgfCAweDAyKTsKKwlpZiAoIShjb25maWcgJiAweDAxKSkgeworCQkvKiBpbml0aWFsaXplIGFsYXJtIGxpbWl0cyAqLworCQlmb3IgKGk9MDsgaTw4OyBpKyspIHsKKwkJCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LAorCQkJCVNNU0M0N00xOTJfUkVHX0lOX01JTihpKSwgMCk7CisJCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQlTTVNDNDdNMTkyX1JFR19JTl9NQVgoaSksIDB4ZmYpOworCQl9CisJCWZvciAoaT0wOyBpPDM7IGkrKykgeworCQkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQkJU01TQzQ3TTE5Ml9SRUdfVEVNUF9NSU5baV0sIDB4ODApOworCQkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQkJU01TQzQ3TTE5Ml9SRUdfVEVNUF9NQVhbaV0sIDB4N2YpOworCQl9CisKKwkJLyogc3RhcnQgbW9uaXRvcmluZyAqLworCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfQ09ORklHLAorCQkJCQkJKGNvbmZpZyAmIDB4ZjcpIHwgMHgwMSk7CisJfQorfQorCisvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBpMmNfcHJvYmUgKi8KK3N0YXRpYyBpbnQgc21zYzQ3bTE5Ml9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywKKwkJaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhICpkYXRhOworCWludCBlcnIgPSAwOworCWludCB2ZXJzaW9uLCBjb25maWc7CisKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXB0ZXIsIEkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQSkpCisJCWdvdG8gZXhpdDsKKworCWlmICghKGRhdGEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc21zYzQ3bTE5Ml9kYXRhKSwgR0ZQX0tFUk5FTCkpKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXhpdDsKKwl9CisKKwljbGllbnQgPSAmZGF0YS0+Y2xpZW50OworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpOworCWNsaWVudC0+YWRkciA9IGFkZHJlc3M7CisJY2xpZW50LT5hZGFwdGVyID0gYWRhcHRlcjsKKwljbGllbnQtPmRyaXZlciA9ICZzbXNjNDdtMTkyX2RyaXZlcjsKKworCWlmIChraW5kID09IDApCisJCWtpbmQgPSBzbXNjNDdtMTkyOworCisJLyogRGV0ZWN0aW9uIGNyaXRlcmlhIGZyb20gc2Vuc29yc19kZXRlY3Qgc2NyaXB0ICovCisJaWYgKGtpbmQgPCAwKSB7CisJCWlmIChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkJCVNNU0M0N00xOTJfUkVHX0NPTVBBTllfSUQpID09IDB4NTUKKwkJICYmICgodmVyc2lvbiA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJU01TQzQ3TTE5Ml9SRUdfVkVSU0lPTikpICYgMHhmMCkgPT0gMHgyMAorCQkgJiYgKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJU01TQzQ3TTE5Ml9SRUdfVklEKSAmIDB4NzApID09IDB4MDAKKwkJICYmIChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkJCVNNU0M0N00xOTJfUkVHX1ZJRDQpICYgMHhmZSkgPT0gMHg4MCkgeworCQkJZGV2X2luZm8oJmFkYXB0ZXItPmRldiwKKwkJCQkgImZvdW5kIFNNU0M0N00xOTIgb3IgU01TQzQ3TTk5NywgIgorCQkJCSAidmVyc2lvbiAyLCBzdGVwcGluZyBBJWRcbiIsIHZlcnNpb24gJiAweDBmKTsKKwkJfSBlbHNlIHsKKwkJCWRldl9kYmcoJmFkYXB0ZXItPmRldiwKKwkJCQkiU01TQzQ3TTE5MiBkZXRlY3Rpb24gZmFpbGVkIGF0IDB4JTAyeFxuIiwKKwkJCQlhZGRyZXNzKTsKKwkJCWdvdG8gZXhpdF9mcmVlOworCQl9CisJfQorCisJLyogRmlsbCBpbiB0aGUgcmVtYWluaW5nIGNsaWVudCBmaWVsZHMgYW5kIHB1dCBpbnRvIHRoZSBnbG9iYWwgbGlzdCAqLworCXN0cmxjcHkoY2xpZW50LT5uYW1lLCAic21zYzQ3bTE5MiIsIEkyQ19OQU1FX1NJWkUpOworCWRhdGEtPnZybSA9IHZpZF93aGljaF92cm0oKTsKKwlpbml0X01VVEVYKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwkvKiBUZWxsIHRoZSBJMkMgbGF5ZXIgYSBuZXcgY2xpZW50IGhhcyBhcnJpdmVkICovCisJaWYgKChlcnIgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpKSkKKwkJZ290byBleGl0X2ZyZWU7CisKKwkvKiBJbml0aWFsaXplIHRoZSBTTVNDNDdNMTkyIGNoaXAgKi8KKwlzbXNjNDdtMTkyX2luaXRfY2xpZW50KGNsaWVudCk7CisKKwkvKiBSZWdpc3RlciBzeXNmcyBob29rcyAqLworCWRhdGEtPmNsYXNzX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3RlcigmY2xpZW50LT5kZXYpOworCWlmIChJU19FUlIoZGF0YS0+Y2xhc3NfZGV2KSkgeworCQllcnIgPSBQVFJfRVJSKGRhdGEtPmNsYXNzX2Rldik7CisJCWdvdG8gZXhpdF9kZXRhY2g7CisJfQorCisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjBfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW4wX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjBfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luMF9hbGFybS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjFfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW4xX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjFfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luMV9hbGFybS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjJfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW4yX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjJfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luMl9hbGFybS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjNfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW4zX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjNfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luM19hbGFybS5kZXZfYXR0cik7CisKKwkvKiBQaW4gMTEwIGlzIGVpdGhlciBpbjQgKCsxMlYpIG9yIFZJRDQgKi8KKwljb25maWcgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBTTVNDNDdNMTkyX1JFR19DT05GSUcpOworCWlmICghKGNvbmZpZyAmIDB4MjApKSB7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsCisJCQkJICAgJnNlbnNvcl9kZXZfYXR0cl9pbjRfaW5wdXQuZGV2X2F0dHIpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LAorCQkJCSAgICZzZW5zb3JfZGV2X2F0dHJfaW40X21pbi5kZXZfYXR0cik7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsCisJCQkJICAgJnNlbnNvcl9kZXZfYXR0cl9pbjRfbWF4LmRldl9hdHRyKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwKKwkJCQkgICAmc2Vuc29yX2Rldl9hdHRyX2luNF9hbGFybS5kZXZfYXR0cik7CisJfQorCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW41X2lucHV0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luNV9taW4uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW41X21heC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjVfYWxhcm0uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW42X2lucHV0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luNl9taW4uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW42X21heC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjZfYWxhcm0uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW43X2lucHV0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX2luN19taW4uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfaW43X21heC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl9pbjdfYWxhcm0uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwKKwkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfb2Zmc2V0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX2FsYXJtLmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAyX2lucHV0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAyX21heC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMl9taW4uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsCisJCQkgICAmc2Vuc29yX2Rldl9hdHRyX3RlbXAyX29mZnNldC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMl9hbGFybS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwKKwkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDJfaW5wdXRfZmF1bHQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfdGVtcDNfaW5wdXQuZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZSgmY2xpZW50LT5kZXYsICZzZW5zb3JfZGV2X2F0dHJfdGVtcDNfbWF4LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAzX21pbi5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwKKwkJCSAgICZzZW5zb3JfZGV2X2F0dHJfdGVtcDNfb2Zmc2V0LmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmc2Vuc29yX2Rldl9hdHRyX3RlbXAzX2FsYXJtLmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LAorCQkJICAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wM19pbnB1dF9mYXVsdC5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKCZjbGllbnQtPmRldiwgJmRldl9hdHRyX2NwdTBfdmlkKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmNsaWVudC0+ZGV2LCAmZGV2X2F0dHJfdnJtKTsKKworCXJldHVybiAwOworCitleGl0X2RldGFjaDoKKwlpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpOworZXhpdF9mcmVlOgorCWtmcmVlKGRhdGEpOworZXhpdDoKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHNtc2M0N20xOTJfZGV0YWNoX2NsaWVudChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQoreworCXN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlpbnQgZXJyOworCisJaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+Y2xhc3NfZGV2KTsKKworCWlmICgoZXJyID0gaTJjX2RldGFjaF9jbGllbnQoY2xpZW50KSkpCisJCXJldHVybiBlcnI7CisKKwlrZnJlZShkYXRhKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlpbnQgaSwgY29uZmlnOworCisJZG93bigmZGF0YS0+dXBkYXRlX2xvY2spOworCisJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgZGF0YS0+bGFzdF91cGRhdGVkICsgSFogKyBIWiAvIDIpCisJIHx8ICFkYXRhLT52YWxpZCkgeworCQl1OCBzZnIgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBTTVNDNDdNMTkyX1JFR19TRlIpOworCisJCWRldl9kYmcoJmNsaWVudC0+ZGV2LCAiU3RhcnRpbmcgc21zYzQ3bTE5MiB1cGRhdGVcbiIpOworCisJCWZvciAoaSA9IDA7IGkgPD0gNzsgaSsrKSB7CisJCQlkYXRhLT5pbltpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCQlTTVNDNDdNMTkyX1JFR19JTihpKSk7CisJCQlkYXRhLT5pbl9taW5baV0gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkJCQkJU01TQzQ3TTE5Ml9SRUdfSU5fTUlOKGkpKTsKKwkJCWRhdGEtPmluX21heFtpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCQlTTVNDNDdNMTkyX1JFR19JTl9NQVgoaSkpOworCQl9CisJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJCWRhdGEtPnRlbXBbaV0gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkJCQkJU01TQzQ3TTE5Ml9SRUdfVEVNUFtpXSk7CisJCQlkYXRhLT50ZW1wX21heFtpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCQlTTVNDNDdNMTkyX1JFR19URU1QX01BWFtpXSk7CisJCQlkYXRhLT50ZW1wX21pbltpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCQlTTVNDNDdNMTkyX1JFR19URU1QX01JTltpXSk7CisJCX0KKwkJZm9yIChpID0gMTsgaSA8IDM7IGkrKykKKwkJCWRhdGEtPnRlbXBfb2Zmc2V0W2ldID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJCVNNU0M0N00xOTJfUkVHX1RFTVBfT0ZGU0VUKGkpKTsKKwkJLyogZmlyc3Qgb2Zmc2V0IGlzIHRlbXBfb2Zmc2V0WzBdIGlmIFNGUiBiaXQgNCBpcyBzZXQsCisJCQkJCXRlbXBfb2Zmc2V0WzFdIG90aGVyd2lzZSAqLworCQlpZiAoc2ZyICYgMHgxMCkgeworCQkJZGF0YS0+dGVtcF9vZmZzZXRbMF0gPSBkYXRhLT50ZW1wX29mZnNldFsxXTsKKwkJCWRhdGEtPnRlbXBfb2Zmc2V0WzFdID0gMDsKKwkJfSBlbHNlCisJCQlkYXRhLT50ZW1wX29mZnNldFswXSA9IDA7CisKKwkJZGF0YS0+dmlkID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgU01TQzQ3TTE5Ml9SRUdfVklEKQorCQkJICAgICYgMHgwZjsKKwkJY29uZmlnID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJCSAgU01TQzQ3TTE5Ml9SRUdfQ09ORklHKTsKKwkJaWYgKGNvbmZpZyAmIDB4MjApCisJCQlkYXRhLT52aWQgfD0gKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCVNNU0M0N00xOTJfUkVHX1ZJRDQpICYgMHgwMSkgPDwgNDsKKwkJZGF0YS0+YWxhcm1zID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJCVNNU0M0N00xOTJfUkVHX0FMQVJNMSkgfAorCQkJICAgICAgIChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkgICAgICAgCQkJCVNNU0M0N00xOTJfUkVHX0FMQVJNMikgPDwgOCk7CisKKwkJZGF0YS0+bGFzdF91cGRhdGVkID0gamlmZmllczsKKwkJZGF0YS0+dmFsaWQgPSAxOworCX0KKworCXVwKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwlyZXR1cm4gZGF0YTsKK30KKworc3RhdGljIGludCBfX2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCit7CisJcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZzbXNjNDdtMTkyX2RyaXZlcik7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4aXQodm9pZCkKK3sKKwlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOworfQorCitNT0RVTEVfQVVUSE9SKCJIYXJ0bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNNU0M0N00xOTIgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK21vZHVsZV9pbml0KHNtc2M0N20xOTJfaW5pdCk7Cittb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM2MjdlaGYuYyBiL2RyaXZlcnMvaHdtb24vdzgzNjI3ZWhmLmMKaW5kZXggYjZiZDU2OC4uNDAzMDFiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93ODM2MjdlaGYuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4MzYyN2VoZi5jCkBAIC0zMCwxMCArMzAsNyBAQAogICAgIFN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgY2hpcHM6CiAKICAgICBDaGlwICAgICAgICAjdmluICAgICNmYW4gICAgI3B3bSAgICAjdGVtcCAgIGNoaXBfaWQgbWFuX2lkCi0gICAgdzgzNjI3ZWhmICAgLSAgICAgICA1ICAgICAgIC0gICAgICAgMyAgICAgICAweDg4ICAgIDB4NWNhMwotCi0gICAgVGhpcyBpcyBhIHByZWxpbWluYXJ5IHZlcnNpb24gb2YgdGhlIGRyaXZlciwgb25seSBzdXBwb3J0aW5nIHRoZQotICAgIGZhbiBhbmQgdGVtcGVyYXR1cmUgaW5wdXRzLiBUaGUgY2hpcCBkb2VzIG11Y2ggbW9yZSB0aGFuIHRoYXQuCisgICAgdzgzNjI3ZWhmICAgMTAgICAgICA1ICAgICAgIC0gICAgICAgMyAgICAgICAweDg4ICAgIDB4NWNhMwogKi8KIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpAQCAtMTIxLDYgKzExOCwxNCBAQAogc3RhdGljIGNvbnN0IHUxNiBXODM2MjdFSEZfUkVHX0ZBTltdID0geyAweDI4LCAweDI5LCAweDJhLCAweDNmLCAweDU1MyB9Owogc3RhdGljIGNvbnN0IHUxNiBXODM2MjdFSEZfUkVHX0ZBTl9NSU5bXSA9IHsgMHgzYiwgMHgzYywgMHgzZCwgMHgzZSwgMHg1NWMgfTsKIAorLyogVGhlIFc4MzYyN0VIRiByZWdpc3RlcnMgZm9yIG5yPTcsOCw5IGFyZSBpbiBiYW5rIDUgKi8KKyNkZWZpbmUgVzgzNjI3RUhGX1JFR19JTl9NQVgobnIpCSgobnIgPCA3KSA/ICgweDJiICsgKG5yKSAqIDIpIDogXAorCQkJCQkgKDB4NTU0ICsgKCgobnIpIC0gNykgKiAyKSkpCisjZGVmaW5lIFc4MzYyN0VIRl9SRUdfSU5fTUlOKG5yKQkoKG5yIDwgNykgPyAoMHgyYyArIChucikgKiAyKSA6IFwKKwkJCQkJICgweDU1NSArICgoKG5yKSAtIDcpICogMikpKQorI2RlZmluZSBXODM2MjdFSEZfUkVHX0lOKG5yKQkJKChuciA8IDcpID8gKDB4MjAgKyAobnIpKSA6IFwKKwkJCQkJICgweDU1MCArIChucikgLSA3KSkKKwogI2RlZmluZSBXODM2MjdFSEZfUkVHX1RFTVAxCQkweDI3CiAjZGVmaW5lIFc4MzYyN0VIRl9SRUdfVEVNUDFfSFlTVAkweDNhCiAjZGVmaW5lIFc4MzYyN0VIRl9SRUdfVEVNUDFfT1ZFUgkweDM5CkBAIC0xMzYsNiArMTQxLDEwIEBACiAjZGVmaW5lIFc4MzYyN0VIRl9SRUdfRElPREUJCTB4NTkKICNkZWZpbmUgVzgzNjI3RUhGX1JFR19TTUlfT1ZUCQkweDRDCiAKKyNkZWZpbmUgVzgzNjI3RUhGX1JFR19BTEFSTTEJCTB4NDU5CisjZGVmaW5lIFc4MzYyN0VIRl9SRUdfQUxBUk0yCQkweDQ1QQorI2RlZmluZSBXODM2MjdFSEZfUkVHX0FMQVJNMwkJMHg0NUIKKwogLyoKICAqIENvbnZlcnNpb25zCiAgKi8KQEAgLTE3Miw2ICsxODEsMjAgQEAKIAlyZXR1cm4gKHRlbXAgKyA1MDApIC8gMTAwMDsKIH0KIAorLyogU29tZSBvZiBhbmFsb2cgaW5wdXRzIGhhdmUgaW50ZXJuYWwgc2NhbGluZyAoMngpLCA4bVYgaXMgQURDIExTQiAqLworCitzdGF0aWMgdTggc2NhbGVfaW5bMTBdID0geyA4LCA4LCAxNiwgMTYsIDgsIDgsIDgsIDE2LCAxNiwgOCB9OworCitzdGF0aWMgaW5saW5lIGxvbmcgaW5fZnJvbV9yZWcodTggcmVnLCB1OCBucikKK3sKKwlyZXR1cm4gcmVnICogc2NhbGVfaW5bbnJdOworfQorCitzdGF0aWMgaW5saW5lIHU4IGluX3RvX3JlZyh1MzIgdmFsLCB1OCBucikKK3sKKwlyZXR1cm4gU0VOU09SU19MSU1JVCgoKHZhbCArIChzY2FsZV9pbltucl0gLyAyKSkgLyBzY2FsZV9pbltucl0pLCAwLCAyNTUpOworfQorCiAvKgogICogRGF0YSBzdHJ1Y3R1cmVzIGFuZCBtYW5pcHVsYXRpb24gdGhlcmVvZgogICovCkBAIC0xODYsNiArMjA5LDkgQEAKIAl1bnNpZ25lZCBsb25nIGxhc3RfdXBkYXRlZDsJLyogSW4gamlmZmllcyAqLwogCiAJLyogUmVnaXN0ZXIgdmFsdWVzICovCisJdTggaW5bMTBdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBpbl9tYXhbMTBdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBpbl9taW5bMTBdOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KIAl1OCBmYW5bNV07CiAJdTggZmFuX21pbls1XTsKIAl1OCBmYW5fZGl2WzVdOwpAQCAtMTk2LDYgKzIyMiw3IEBACiAJczE2IHRlbXBbMl07CiAJczE2IHRlbXBfbWF4WzJdOwogCXMxNiB0ZW1wX21heF9oeXN0WzJdOworCXUzMiBhbGFybXM7CiB9OwogCiBzdGF0aWMgaW5saW5lIGludCBpc193b3JkX3NpemVkKHUxNiByZWcpCkBAIC0zNDksNiArMzc2LDE2IEBACiAJCQlkYXRhLT5mYW5fZGl2WzNdIHw9IChpID4+IDUpICYgMHgwNDsKIAkJfQogCisJCS8qIE1lYXN1cmVkIHZvbHRhZ2VzIGFuZCBsaW1pdHMgKi8KKwkJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJCWRhdGEtPmluW2ldID0gdzgzNjI3ZWhmX3JlYWRfdmFsdWUoY2xpZW50LAorCQkJCSAgICAgIFc4MzYyN0VIRl9SRUdfSU4oaSkpOworCQkJZGF0YS0+aW5fbWluW2ldID0gdzgzNjI3ZWhmX3JlYWRfdmFsdWUoY2xpZW50LAorCQkJCQkgIFc4MzYyN0VIRl9SRUdfSU5fTUlOKGkpKTsKKwkJCWRhdGEtPmluX21heFtpXSA9IHc4MzYyN2VoZl9yZWFkX3ZhbHVlKGNsaWVudCwKKwkJCQkJICBXODM2MjdFSEZfUkVHX0lOX01BWChpKSk7CisJCX0KKwogCQkvKiBNZWFzdXJlZCBmYW4gc3BlZWRzIGFuZCBsaW1pdHMgKi8KIAkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogCQkJaWYgKCEoZGF0YS0+aGFzX2ZhbiAmICgxIDw8IGkpKSkKQEAgLTM5NSw2ICs0MzIsMTMgQEAKIAkJCQkJCSBXODM2MjdFSEZfUkVHX1RFTVBfSFlTVFtpXSk7CiAJCX0KIAorCQlkYXRhLT5hbGFybXMgPSB3ODM2MjdlaGZfcmVhZF92YWx1ZShjbGllbnQsCisJCQkJCVc4MzYyN0VIRl9SRUdfQUxBUk0xKSB8CisJCQkgICAgICAgKHc4MzYyN2VoZl9yZWFkX3ZhbHVlKGNsaWVudCwKKwkJCQkJVzgzNjI3RUhGX1JFR19BTEFSTTIpIDw8IDgpIHwKKwkJCSAgICAgICAodzgzNjI3ZWhmX3JlYWRfdmFsdWUoY2xpZW50LAorCQkJCQlXODM2MjdFSEZfUkVHX0FMQVJNMykgPDwgMTYpOworCiAJCWRhdGEtPmxhc3RfdXBkYXRlZCA9IGppZmZpZXM7CiAJCWRhdGEtPnZhbGlkID0gMTsKIAl9CkBAIC00MDYsNiArNDUwLDEwOSBAQAogLyoKICAqIFN5c2ZzIGNhbGxiYWNrIGZ1bmN0aW9ucwogICovCisjZGVmaW5lIHNob3dfaW5fcmVnKHJlZykgXAorc3RhdGljIHNzaXplX3QgXAorc2hvd18jI3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBcCisJICAgY2hhciAqYnVmKSBcCit7IFwKKwlzdHJ1Y3QgdzgzNjI3ZWhmX2RhdGEgKmRhdGEgPSB3ODM2MjdlaGZfdXBkYXRlX2RldmljZShkZXYpOyBcCisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsgXAorCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsgXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgaW5fZnJvbV9yZWcoZGF0YS0+cmVnW25yXSwgbnIpKTsgXAorfQorc2hvd19pbl9yZWcoaW4pCitzaG93X2luX3JlZyhpbl9taW4pCitzaG93X2luX3JlZyhpbl9tYXgpCisKKyNkZWZpbmUgc3RvcmVfaW5fcmVnKFJFRywgcmVnKSBcCitzdGF0aWMgc3NpemVfdCBcCitzdG9yZV9pbl8jI3JlZyAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXAorCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpIFwKK3sgXAorCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7IFwKKwlzdHJ1Y3QgdzgzNjI3ZWhmX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsgXAorCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7IFwKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7IFwKKwl1MzIgdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7IFwKKyBcCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOyBcCisJZGF0YS0+aW5fIyNyZWdbbnJdID0gaW5fdG9fcmVnKHZhbCwgbnIpOyBcCisJdzgzNjI3ZWhmX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNjI3RUhGX1JFR19JTl8jI1JFRyhuciksIFwKKwkJCSAgICAgIGRhdGEtPmluXyMjcmVnW25yXSk7IFwKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsgXAorCXJldHVybiBjb3VudDsgXAorfQorCitzdG9yZV9pbl9yZWcoTUlOLCBtaW4pCitzdG9yZV9pbl9yZWcoTUFYLCBtYXgpCisKK3N0YXRpYyBzc2l6ZV90IHNob3dfYWxhcm0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCB3ODM2MjdlaGZfZGF0YSAqZGF0YSA9IHc4MzYyN2VoZl91cGRhdGVfZGV2aWNlKGRldik7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXVcbiIsIChkYXRhLT5hbGFybXMgPj4gbnIpICYgMHgwMSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX2luX2lucHV0W10gPSB7CisJU0VOU09SX0FUVFIoaW4wX2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCAwKSwKKwlTRU5TT1JfQVRUUihpbjFfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDEpLAorCVNFTlNPUl9BVFRSKGluMl9pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgMiksCisJU0VOU09SX0FUVFIoaW4zX2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCAzKSwKKwlTRU5TT1JfQVRUUihpbjRfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDQpLAorCVNFTlNPUl9BVFRSKGluNV9pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgNSksCisJU0VOU09SX0FUVFIoaW42X2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCA2KSwKKwlTRU5TT1JfQVRUUihpbjdfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDcpLAorCVNFTlNPUl9BVFRSKGluOF9pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgOCksCisJU0VOU09SX0FUVFIoaW45X2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCA5KSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX2luX2FsYXJtW10gPSB7CisJU0VOU09SX0FUVFIoaW4wX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAwKSwKKwlTRU5TT1JfQVRUUihpbjFfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDEpLAorCVNFTlNPUl9BVFRSKGluMl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMiksCisJU0VOU09SX0FUVFIoaW4zX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAzKSwKKwlTRU5TT1JfQVRUUihpbjRfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDgpLAorCVNFTlNPUl9BVFRSKGluNV9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMjEpLAorCVNFTlNPUl9BVFRSKGluNl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMjApLAorCVNFTlNPUl9BVFRSKGluN19hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMTYpLAorCVNFTlNPUl9BVFRSKGluOF9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMTcpLAorCVNFTlNPUl9BVFRSKGluOV9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMTkpLAorfTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfaW5fbWluW10gPSB7CisgICAgICAgU0VOU09SX0FUVFIoaW4wX21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDApLAorICAgICAgIFNFTlNPUl9BVFRSKGluMV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCAxKSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjJfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgMiksCisgICAgICAgU0VOU09SX0FUVFIoaW4zX21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDMpLAorICAgICAgIFNFTlNPUl9BVFRSKGluNF9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCA0KSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjVfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgNSksCisgICAgICAgU0VOU09SX0FUVFIoaW42X21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDYpLAorICAgICAgIFNFTlNPUl9BVFRSKGluN19taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCA3KSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjhfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgOCksCisgICAgICAgU0VOU09SX0FUVFIoaW45X21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDkpLAorfTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfaW5fbWF4W10gPSB7CisgICAgICAgU0VOU09SX0FUVFIoaW4wX21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDApLAorICAgICAgIFNFTlNPUl9BVFRSKGluMV9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCAxKSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjJfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgMiksCisgICAgICAgU0VOU09SX0FUVFIoaW4zX21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDMpLAorICAgICAgIFNFTlNPUl9BVFRSKGluNF9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCA0KSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjVfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgNSksCisgICAgICAgU0VOU09SX0FUVFIoaW42X21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDYpLAorICAgICAgIFNFTlNPUl9BVFRSKGluN19tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCA3KSwKKyAgICAgICBTRU5TT1JfQVRUUihpbjhfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgOCksCisgICAgICAgU0VOU09SX0FUVFIoaW45X21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDkpLAorfTsKKworc3RhdGljIHZvaWQgZGV2aWNlX2NyZWF0ZV9maWxlX2luKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGkpCit7CisJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV9pbl9pbnB1dFtpXS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV9pbl9hbGFybVtpXS5kZXZfYXR0cik7CisJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV9pbl9taW5baV0uZGV2X2F0dHIpOworCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfaW5fbWF4W2ldLmRldl9hdHRyKTsKK30KIAogI2RlZmluZSBzaG93X2Zhbl9yZWcocmVnKSBcCiBzdGF0aWMgc3NpemVfdCBcCkBAIC01MDUsNiArNjUyLDE0IEBACiAJU0VOU09SX0FUVFIoZmFuNV9pbnB1dCwgU19JUlVHTywgc2hvd19mYW4sIE5VTEwsIDQpLAogfTsKIAorc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfZmFuX2FsYXJtW10gPSB7CisJU0VOU09SX0FUVFIoZmFuMV9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgNiksCisJU0VOU09SX0FUVFIoZmFuMl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgNyksCisJU0VOU09SX0FUVFIoZmFuM19hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgMTEpLAorCVNFTlNPUl9BVFRSKGZhbjRfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDEwKSwKKwlTRU5TT1JfQVRUUihmYW41X2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCAyMyksCit9OworCiBzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHNkYV9mYW5fbWluW10gPSB7CiAJU0VOU09SX0FUVFIoZmFuMV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2Zhbl9taW4sCiAJCSAgICBzdG9yZV9mYW5fbWluLCAwKSwKQEAgLTUyOSw2ICs2ODQsNyBAQAogc3RhdGljIHZvaWQgZGV2aWNlX2NyZWF0ZV9maWxlX2ZhbihzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBpKQogewogCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfZmFuX2lucHV0W2ldLmRldl9hdHRyKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmc2RhX2Zhbl9hbGFybVtpXS5kZXZfYXR0cik7CiAJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV9mYW5fZGl2W2ldLmRldl9hdHRyKTsKIAlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmc2RhX2Zhbl9taW5baV0uZGV2X2F0dHIpOwogfQpAQCAtNjE2LDYgKzc3Miw5IEBACiAJCSAgICBzdG9yZV90ZW1wX21heF9oeXN0LCAwKSwKIAlTRU5TT1JfQVRUUih0ZW1wM19tYXhfaHlzdCwgU19JUlVHTyB8IFNfSVdVU1IsIHNob3dfdGVtcF9tYXhfaHlzdCwKIAkJICAgIHN0b3JlX3RlbXBfbWF4X2h5c3QsIDEpLAorCVNFTlNPUl9BVFRSKHRlbXAxX2FsYXJtLCBTX0lSVUdPLCBzaG93X2FsYXJtLCBOVUxMLCA0KSwKKwlTRU5TT1JfQVRUUih0ZW1wMl9hbGFybSwgU19JUlVHTywgc2hvd19hbGFybSwgTlVMTCwgNSksCisJU0VOU09SX0FUVFIodGVtcDNfYWxhcm0sIFNfSVJVR08sIHNob3dfYWxhcm0sIE5VTEwsIDEzKSwKIH07CiAKIC8qCkBAIC03MDUsNiArODY0LDkgQEAKIAkJZ290byBleGl0X2RldGFjaDsKIAl9CiAKKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykKKwkJZGV2aWNlX2NyZWF0ZV9maWxlX2luKGRldiwgaSk7CisKIAlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAJCWlmIChkYXRhLT5oYXNfZmFuICYgKDEgPDwgaSkpCiAJCQlkZXZpY2VfY3JlYXRlX2ZpbGVfZmFuKGRldiwgaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYzQzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwpAQCAtMCwwICsxLDEyNTUgQEAKKy8qCisgICAgdzgzNzkxZC5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICBtb25pdG9yaW5nCisKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorKi8KKworLyoKKyAgICBTdXBwb3J0cyBmb2xsb3dpbmcgY2hpcHM6CisKKyAgICBDaGlwCSN2aW4JI2ZhbmluCSNwd20JI3RlbXAJd2NoaXBpZAl2ZW5kaWQJaTJjCUlTQQorICAgIHc4Mzc5MWQJMTAJNQkzCTMJMHg3MQkweDVjYTMJeWVzCW5vCisKKyAgICBUaGUgdzgzNzkxZCBjaGlwIGFwcGVhcnMgdG8gYmUgcGFydCB3YXkgYmV0d2VlbiB0aGUgODM3ODFkIGFuZCB0aGUKKyAgICA4Mzc5MmQuIFRodXMsIHRoaXMgZmlsZSBpcyBkZXJpdmVkIGZyb20gYm90aCB0aGUgdzgzNzkyZC5jIGFuZAorICAgIHc4Mzc4MWQuYyBmaWxlcywgYnV0IGl0cyBvdXRwdXQgaXMgbW9yZSBhbG9uZyB0aGUgbGluZXMgb2YgdGhlCisgICAgODM3ODFkICh3aGljaCBtZWFucyB0aGVyZSBhcmUgbm8gY2hhbmdlcyB0byB0aGUgdXNlci1tb2RlIHNlbnNvcnMKKyAgICBwcm9ncmFtIHdoaWNoIHRyZWF0cyB0aGUgODM3OTFkIGFzIGFuIDgzNzgxZCkuCisqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgorI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXZpZC5oPgorI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKworI2RlZmluZSBOVU1CRVJfT0ZfVklOCQkxMAorI2RlZmluZSBOVU1CRVJfT0ZfRkFOSU4JCTUKKyNkZWZpbmUgTlVNQkVSX09GX1RFTVBJTgkzCisKKy8qIEFkZHJlc3NlcyB0byBzY2FuICovCitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyAweDJjLCAweDJkLCAweDJlLCAweDJmLCBJMkNfQ0xJRU5UX0VORCB9OworCisvKiBJbnNtb2QgcGFyYW1ldGVycyAqLworSTJDX0NMSUVOVF9JTlNNT0RfMSh3ODM3OTFkKTsKK0kyQ19DTElFTlRfTU9EVUxFX1BBUk0oZm9yY2Vfc3ViY2xpZW50cywgIkxpc3Qgb2Ygc3ViY2xpZW50IGFkZHJlc3NlczogIgorCQkJIntidXMsIGNsaWVudGFkZHIsIHN1YmNsaWVudGFkZHIxLCBzdWJjbGllbnRhZGRyMn0iKTsKKworc3RhdGljIGludCByZXNldDsKK21vZHVsZV9wYXJhbShyZXNldCwgYm9vbCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKHJlc2V0LCAiU2V0IHRvIG9uZSB0byBmb3JjZSBhIGhhcmR3YXJlIGNoaXAgcmVzZXQiKTsKKworc3RhdGljIGludCBpbml0OworbW9kdWxlX3BhcmFtKGluaXQsIGJvb2wsIDApOworTU9EVUxFX1BBUk1fREVTQyhpbml0LCAiU2V0IHRvIG9uZSB0byBmb3JjZSBleHRyYSBzb2Z0d2FyZSBpbml0aWFsaXphdGlvbiIpOworCisvKiBUaGUgVzgzNzkxRCByZWdpc3RlcnMgKi8KK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19JTltOVU1CRVJfT0ZfVklOXSA9IHsKKwkweDIwLAkJCS8qIFZDT1JFQSBpbiBEYXRhU2hlZXQgKi8KKwkweDIxLAkJCS8qIFZJTlIwIGluIERhdGFTaGVldCAqLworCTB4MjIsCQkJLyogKzMuM1ZJTiBpbiBEYXRhU2hlZXQgKi8KKwkweDIzLAkJCS8qIFZERDVWIGluIERhdGFTaGVldCAqLworCTB4MjQsCQkJLyogKzEyVklOIGluIERhdGFTaGVldCAqLworCTB4MjUsCQkJLyogLTEyVklOIGluIERhdGFTaGVldCAqLworCTB4MjYsCQkJLyogLTVWSU4gaW4gRGF0YVNoZWV0ICovCisJMHhCMCwJCQkvKiA1VlNCIGluIERhdGFTaGVldCAqLworCTB4QjEsCQkJLyogVkJBVCBpbiBEYXRhU2hlZXQgKi8KKwkweEIyCQkJLyogVklOUjEgaW4gRGF0YVNoZWV0ICovCit9OworCitzdGF0aWMgY29uc3QgdTggVzgzNzkxRF9SRUdfSU5fTUFYW05VTUJFUl9PRl9WSU5dID0geworCTB4MkIsCQkJLyogVkNPUkVBIEhpZ2ggTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgyRCwJCQkvKiBWSU5SMCBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MkYsCQkJLyogKzMuM1ZJTiBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MzEsCQkJLyogVkRENVYgSGlnaCBMaW1pdCBpbiBEYXRhU2hlZXQgKi8KKwkweDMzLAkJCS8qICsxMlZJTiBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MzUsCQkJLyogLTEyVklOIEhpZ2ggTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgzNywJCQkvKiAtNVZJTiBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4QjQsCQkJLyogNVZTQiBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4QjYsCQkJLyogVkJBVCBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworCTB4QjgJCQkvKiBWSU5SMSBIaWdoIExpbWl0IGluIERhdGFTaGVldCAqLworfTsKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19JTl9NSU5bTlVNQkVSX09GX1ZJTl0gPSB7CisJMHgyQywJCQkvKiBWQ09SRUEgTG93IExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MkUsCQkJLyogVklOUjAgTG93IExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MzAsCQkJLyogKzMuM1ZJTiBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgzMiwJCQkvKiBWREQ1ViBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgzNCwJCQkvKiArMTJWSU4gTG93IExpbWl0IGluIERhdGFTaGVldCAqLworCTB4MzYsCQkJLyogLTEyVklOIExvdyBMaW1pdCBpbiBEYXRhU2hlZXQgKi8KKwkweDM4LAkJCS8qIC01VklOIExvdyBMaW1pdCBpbiBEYXRhU2hlZXQgKi8KKwkweEI1LAkJCS8qIDVWU0IgTG93IExpbWl0IGluIERhdGFTaGVldCAqLworCTB4QjcsCQkJLyogVkJBVCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHhCOQkJCS8qIFZJTlIxIExvdyBMaW1pdCBpbiBEYXRhU2hlZXQgKi8KK307CitzdGF0aWMgY29uc3QgdTggVzgzNzkxRF9SRUdfRkFOW05VTUJFUl9PRl9GQU5JTl0gPSB7CisJMHgyOCwJCQkvKiBGQU4gMSBDb3VudCBpbiBEYXRhU2hlZXQgKi8KKwkweDI5LAkJCS8qIEZBTiAyIENvdW50IGluIERhdGFTaGVldCAqLworCTB4MkEsCQkJLyogRkFOIDMgQ291bnQgaW4gRGF0YVNoZWV0ICovCisJMHhCQSwJCQkvKiBGQU4gNCBDb3VudCBpbiBEYXRhU2hlZXQgKi8KKwkweEJCLAkJCS8qIEZBTiA1IENvdW50IGluIERhdGFTaGVldCAqLworfTsKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19GQU5fTUlOW05VTUJFUl9PRl9GQU5JTl0gPSB7CisJMHgzQiwJCQkvKiBGQU4gMSBDb3VudCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgzQywJCQkvKiBGQU4gMiBDb3VudCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHgzRCwJCQkvKiBGQU4gMyBDb3VudCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHhCQywJCQkvKiBGQU4gNCBDb3VudCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCisJMHhCRCwJCQkvKiBGQU4gNSBDb3VudCBMb3cgTGltaXQgaW4gRGF0YVNoZWV0ICovCit9OworCitzdGF0aWMgY29uc3QgdTggVzgzNzkxRF9SRUdfRkFOX0NGR1syXSA9IHsKKwkweDg0LAkJCS8qIEZBTiAxLzIgY29uZmlndXJhdGlvbiAqLworCTB4OTUsCQkJLyogRkFOIDMgY29uZmlndXJhdGlvbiAqLworfTsKKworc3RhdGljIGNvbnN0IHU4IFc4Mzc5MURfUkVHX0ZBTl9ESVZbM10gPSB7CisJMHg0NywJCQkvKiBjb250YWlucyBGQU4xIGFuZCBGQU4yIERpdmlzb3IgKi8KKwkweDRiLAkJCS8qIGNvbnRhaW5zIEZBTjMgRGl2aXNvciAqLworCTB4NUMsCQkJLyogY29udGFpbnMgRkFONCBhbmQgRkFONSBEaXZpc29yICovCit9OworCisjZGVmaW5lIFc4Mzc5MURfUkVHX0JBTksJCTB4NEUKKyNkZWZpbmUgVzgzNzkxRF9SRUdfVEVNUDJfQ09ORklHCTB4QzIKKyNkZWZpbmUgVzgzNzkxRF9SRUdfVEVNUDNfQ09ORklHCTB4Q0EKKworc3RhdGljIGNvbnN0IHU4IFc4Mzc5MURfUkVHX1RFTVAxWzNdID0geworCTB4MjcsCQkJLyogVEVNUCAxIGluIERhdGFTaGVldCAqLworCTB4MzksCQkJLyogVEVNUCAxIE92ZXIgaW4gRGF0YVNoZWV0ICovCisJMHgzQSwJCQkvKiBURU1QIDEgSHlzdCBpbiBEYXRhU2hlZXQgKi8KK307CisKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19URU1QX0FERFsyXVs2XSA9IHsKKwl7MHhDMCwJCQkvKiBURU1QIDIgaW4gRGF0YVNoZWV0ICovCisJIDB4QzEsCQkJLyogVEVNUCAyKDAuNSBkZWcpIGluIERhdGFTaGVldCAqLworCSAweEM1LAkJCS8qIFRFTVAgMiBPdmVyIEhpZ2ggcGFydCBpbiBEYXRhU2hlZXQgKi8KKwkgMHhDNiwJCQkvKiBURU1QIDIgT3ZlciBMb3cgcGFydCBpbiBEYXRhU2hlZXQgKi8KKwkgMHhDMywJCQkvKiBURU1QIDIgVGh5c3QgSGlnaCBwYXJ0IGluIERhdGFTaGVldCAqLworCSAweEM0fSwJCQkvKiBURU1QIDIgVGh5c3QgTG93IHBhcnQgaW4gRGF0YVNoZWV0ICovCisJezB4QzgsCQkJLyogVEVNUCAzIGluIERhdGFTaGVldCAqLworCSAweEM5LAkJCS8qIFRFTVAgMygwLjUgZGVnKSBpbiBEYXRhU2hlZXQgKi8KKwkgMHhDRCwJCQkvKiBURU1QIDMgT3ZlciBIaWdoIHBhcnQgaW4gRGF0YVNoZWV0ICovCisJIDB4Q0UsCQkJLyogVEVNUCAzIE92ZXIgTG93IHBhcnQgaW4gRGF0YVNoZWV0ICovCisJIDB4Q0IsCQkJLyogVEVNUCAzIFRoeXN0IEhpZ2ggcGFydCBpbiBEYXRhU2hlZXQgKi8KKwkgMHhDQ30JCQkvKiBURU1QIDMgVGh5c3QgTG93IHBhcnQgaW4gRGF0YVNoZWV0ICovCit9OworCisjZGVmaW5lIFc4Mzc5MURfUkVHX0JFRVBfQ09ORklHCQkweDRECisKK3N0YXRpYyBjb25zdCB1OCBXODM3OTFEX1JFR19CRUVQX0NUUkxbM10gPSB7CisJMHg1NiwJCQkvKiBCRUVQIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworCTB4NTcsCQkJLyogQkVFUCBDb250cm9sIFJlZ2lzdGVyIDIgKi8KKwkweEEzLAkJCS8qIEJFRVAgQ29udHJvbCBSZWdpc3RlciAzICovCit9OworCisjZGVmaW5lIFc4Mzc5MURfUkVHX0NPTkZJRwkJMHg0MAorI2RlZmluZSBXODM3OTFEX1JFR19WSURfRkFORElWCQkweDQ3CisjZGVmaW5lIFc4Mzc5MURfUkVHX0RJRF9WSUQ0CQkweDQ5CisjZGVmaW5lIFc4Mzc5MURfUkVHX1dDSElQSUQJCTB4NTgKKyNkZWZpbmUgVzgzNzkxRF9SRUdfQ0hJUE1BTgkJMHg0RgorI2RlZmluZSBXODM3OTFEX1JFR19QSU4JCQkweDRCCisjZGVmaW5lIFc4Mzc5MURfUkVHX0kyQ19TVUJBRERSCQkweDRBCisKKyNkZWZpbmUgVzgzNzkxRF9SRUdfQUxBUk0xIDB4QTkJLyogcmVhbHRpbWUgc3RhdHVzIHJlZ2lzdGVyMSAqLworI2RlZmluZSBXODM3OTFEX1JFR19BTEFSTTIgMHhBQQkvKiByZWFsdGltZSBzdGF0dXMgcmVnaXN0ZXIyICovCisjZGVmaW5lIFc4Mzc5MURfUkVHX0FMQVJNMyAweEFCCS8qIHJlYWx0aW1lIHN0YXR1cyByZWdpc3RlcjMgKi8KKworI2RlZmluZSBXODM3OTFEX1JFR19WQkFUCQkweDVECisjZGVmaW5lIFc4Mzc5MURfUkVHX0kyQ19BRERSCQkweDQ4CisKKy8qIFRoZSBTTUJ1cyBsb2NrcyBpdHNlbGYuIFRoZSBXaW5ib25kIFc4Mzc5MUQgaGFzIGEgYmFuayBzZWxlY3QgcmVnaXN0ZXIKKyAgIChpbmRleCAweDRlKSwgYnV0IHRoZSBkcml2ZXIgb25seSBhY2Nlc3NlcyByZWdpc3RlcnMgaW4gYmFuayAwLiBTaW5jZQorICAgd2UgZG9uJ3Qgc3dpdGNoIGJhbmtzLCB3ZSBkb24ndCBuZWVkIGFueSBzcGVjaWFsIGNvZGUgdG8gaGFuZGxlCisgICBsb2NraW5nIGFjY2VzcyBiZXR3ZWVuIGJhbmsgc3dpdGNoZXMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHc4Mzc5MWRfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcpCit7CisJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHc4Mzc5MWRfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1OCB2YWx1ZSkKK3sKKwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHJlZywgdmFsdWUpOworfQorCisvKiBUaGUgYW5hbG9nIHZvbHRhZ2UgaW5wdXRzIGhhdmUgMTZtViBMU0IuIFNpbmNlIHRoZSBzeXNmcyBvdXRwdXQgaXMKKyAgIGluIG1WIGFzIHdvdWxkIGJlIG1lYXN1cmVkIG9uIHRoZSBjaGlwIGlucHV0IHBpbiwgbmVlZCB0byBqdXN0CisgICBtdWx0aXBseS9kaXZpZGUgYnkgMTYgdG8gdHJhbnNsYXRlIGZyb20vdG8gcmVnaXN0ZXIgdmFsdWVzLiAqLworI2RlZmluZSBJTl9UT19SRUcodmFsKQkJKFNFTlNPUlNfTElNSVQoKCgodmFsKSArIDgpIC8gMTYpLCAwLCAyNTUpKQorI2RlZmluZSBJTl9GUk9NX1JFRyh2YWwpCSgodmFsKSAqIDE2KQorCitzdGF0aWMgdTggZmFuX3RvX3JlZyhsb25nIHJwbSwgaW50IGRpdikKK3sKKwlpZiAocnBtID09IDApCisJCXJldHVybiAyNTU7CisJcnBtID0gU0VOU09SU19MSU1JVChycG0sIDEsIDEwMDAwMDApOworCXJldHVybiBTRU5TT1JTX0xJTUlUKCgxMzUwMDAwICsgcnBtICogZGl2IC8gMikgLyAocnBtICogZGl2KSwgMSwgMjU0KTsKK30KKworI2RlZmluZSBGQU5fRlJPTV9SRUcodmFsLGRpdikJKCh2YWwpID09IDAgICA/IC0xIDogXAorCQkJCSgodmFsKSA9PSAyNTUgPyAwIDogXAorCQkJCQkxMzUwMDAwIC8gKCh2YWwpICogKGRpdikpKSkKKworLyogZm9yIHRlbXAxIHdoaWNoIGlzIDgtYml0IHJlc29sdXRpb24sIExTQiA9IDEgZGVncmVlIENlbHNpdXMgKi8KKyNkZWZpbmUgVEVNUDFfRlJPTV9SRUcodmFsKQkoKHZhbCkgKiAxMDAwKQorI2RlZmluZSBURU1QMV9UT19SRUcodmFsKQkoKHZhbCkgPD0gLTEyODAwMCA/IC0xMjggOiBcCisJCQkJICh2YWwpID49IDEyNzAwMCA/IDEyNyA6IFwKKwkJCQkgKHZhbCkgPCAwID8gKCh2YWwpIC0gNTAwKSAvIDEwMDAgOiBcCisJCQkJICgodmFsKSArIDUwMCkgLyAxMDAwKQorCisvKiBmb3IgdGVtcDIgYW5kIHRlbXAzIHdoaWNoIGFyZSA5LWJpdCByZXNvbHV0aW9uLCBMU0IgPSAwLjUgZGVncmVlIENlbHNpdXMKKyAgIEFzc3VtZXMgdGhlIHRvcCA4IGJpdHMgYXJlIHRoZSBpbnRlZ3JhbCBhbW91bnQgYW5kIHRoZSBib3R0b20gOCBiaXRzCisgICBhcmUgdGhlIGZyYWN0aW9uYWwgYW1vdW50LiBTaW5jZSB3ZSBvbmx5IGhhdmUgMC41IGRlZ3JlZSByZXNvbHV0aW9uLAorICAgdGhlIGJvdHRvbSA3IGJpdHMgd2lsbCBhbHdheXMgYmUgemVybyAqLworI2RlZmluZSBURU1QMjNfRlJPTV9SRUcodmFsKQkoKHZhbCkgLyAxMjggKiA1MDApCisjZGVmaW5lIFRFTVAyM19UT19SRUcodmFsKQkoKHZhbCkgPD0gLTEyODAwMCA/IDB4ODAwMCA6IFwKKwkJCQkgKHZhbCkgPj0gMTI3NTAwID8gMHg3RjgwIDogXAorCQkJCSAodmFsKSA8IDAgPyAoKHZhbCkgLSAyNTApIC8gNTAwICogMTI4IDogXAorCQkJCSAoKHZhbCkgKyAyNTApIC8gNTAwICogMTI4KQorCisKKyNkZWZpbmUgQkVFUF9NQVNLX1RPX1JFRyh2YWwpCQkoKHZhbCkgJiAweGZmZmZmZikKKyNkZWZpbmUgQkVFUF9NQVNLX0ZST01fUkVHKHZhbCkJCSgodmFsKSAmIDB4ZmZmZmZmKQorCisjZGVmaW5lIERJVl9GUk9NX1JFRyh2YWwpCQkoMSA8PCAodmFsKSkKKworc3RhdGljIHU4IGRpdl90b19yZWcoaW50IG5yLCBsb25nIHZhbCkKK3sKKwlpbnQgaTsKKwlpbnQgbWF4OworCisJLyogZmlyc3QgdGhyZWUgZmFuJ3MgZGl2aXNvciBtYXggb3V0IGF0IDgsIHJlc3QgbWF4IG91dCBhdCAxMjggKi8KKwltYXggPSAobnIgPCAzKSA/IDggOiAxMjg7CisJdmFsID0gU0VOU09SU19MSU1JVCh2YWwsIDEsIG1heCkgPj4gMTsKKwlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CisJCWlmICh2YWwgPT0gMCkKKwkJCWJyZWFrOworCQl2YWwgPj49IDE7CisJfQorCXJldHVybiAodTgpIGk7Cit9CisKK3N0cnVjdCB3ODM3OTFkX2RhdGEgeworCXN0cnVjdCBpMmNfY2xpZW50IGNsaWVudDsKKwlzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXY7CisJc3RydWN0IG11dGV4IHVwZGF0ZV9sb2NrOworCisJY2hhciB2YWxpZDsJCQkvKiAhPTAgaWYgZm9sbG93aW5nIGZpZWxkcyBhcmUgdmFsaWQgKi8KKwl1bnNpZ25lZCBsb25nIGxhc3RfdXBkYXRlZDsJLyogSW4gamlmZmllcyAqLworCisJLyogYXJyYXkgb2YgMiBwb2ludGVycyB0byBzdWJjbGllbnRzICovCisJc3RydWN0IGkyY19jbGllbnQgKmxtNzVbMl07CisKKwkvKiB2b2x0cyAqLworCXU4IGluW05VTUJFUl9PRl9WSU5dOwkJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBpbl9tYXhbTlVNQkVSX09GX1ZJTl07CS8qIFJlZ2lzdGVyIHZhbHVlICovCisJdTggaW5fbWluW05VTUJFUl9PRl9WSU5dOwkvKiBSZWdpc3RlciB2YWx1ZSAqLworCisJLyogZmFucyAqLworCXU4IGZhbltOVU1CRVJfT0ZfRkFOSU5dOwkvKiBSZWdpc3RlciB2YWx1ZSAqLworCXU4IGZhbl9taW5bTlVNQkVSX09GX0ZBTklOXTsJLyogUmVnaXN0ZXIgdmFsdWUgKi8KKwl1OCBmYW5fZGl2W05VTUJFUl9PRl9GQU5JTl07CS8qIFJlZ2lzdGVyIGVuY29kaW5nLCBzaGlmdGVkIHJpZ2h0ICovCisKKwkvKiBUZW1wZXJhdHVyZSBzZW5zb3JzICovCisKKwlzOCB0ZW1wMVszXTsJCS8qIGN1cnJlbnQsIG92ZXIsIHRoeXN0ICovCisJczE2IHRlbXBfYWRkWzJdWzNdOwkvKiBmaXhlZCBwb2ludCB2YWx1ZS4gVG9wIDggYml0cyBhcmUgdGhlCisJCQkJICAgaW50ZWdyYWwgcGFydCwgYm90dG9tIDggYml0cyBhcmUgdGhlCisJCQkJICAgZnJhY3Rpb25hbCBwYXJ0LiBXZSBvbmx5IHVzZSB0aGUgdG9wCisJCQkJICAgOSBiaXRzIGFzIHRoZSByZXNvbHV0aW9uIGlzIG9ubHkKKwkJCQkgICB0byB0aGUgMC41IGRlZ3JlZSBDLi4uCisJCQkJICAgdHdvIHNlbnNvcnMgd2l0aCB0aHJlZSB2YWx1ZXMKKwkJCQkgICAoY3VyLCBvdmVyLCBoeXN0KSAgKi8KKworCS8qIE1pc2MgKi8KKwl1MzIgYWxhcm1zOwkJLyogcmVhbHRpbWUgc3RhdHVzIHJlZ2lzdGVyIGVuY29kaW5nLGNvbWJpbmVkICovCisJdTggYmVlcF9lbmFibGU7CQkvKiBHbG9iYWwgYmVlcCBlbmFibGUgKi8KKwl1MzIgYmVlcF9tYXNrOwkJLyogTWFzayBvZmYgc3BlY2lmaWMgYmVlcHMgKi8KKwl1OCB2aWQ7CQkJLyogUmVnaXN0ZXIgZW5jb2RpbmcsIGNvbWJpbmVkICovCisJdTggdnJtOwkJCS8qIGh3bW9uLXZpZCAqLworfTsKKworc3RhdGljIGludCB3ODM3OTFkX2F0dGFjaF9hZGFwdGVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7CitzdGF0aWMgaW50IHc4Mzc5MWRfZGV0ZWN0KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgaW50IGFkZHJlc3MsIGludCBraW5kKTsKK3N0YXRpYyBpbnQgdzgzNzkxZF9kZXRhY2hfY2xpZW50KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworCitzdGF0aWMgaW50IHc4Mzc5MWRfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWdpc3Rlcik7CitzdGF0aWMgaW50IHc4Mzc5MWRfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnaXN0ZXIsIHU4IHZhbHVlKTsKK3N0YXRpYyBzdHJ1Y3QgdzgzNzkxZF9kYXRhICp3ODM3OTFkX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KTsKKworI2lmZGVmIERFQlVHCitzdGF0aWMgdm9pZCB3ODM3OTFkX3ByaW50X2RlYnVnKHN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEsIHN0cnVjdCBkZXZpY2UgKmRldik7CisjZW5kaWYKKworc3RhdGljIHZvaWQgdzgzNzkxZF9pbml0X2NsaWVudChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5MWRfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInc4Mzc5MWQiLAorCX0sCisJLmF0dGFjaF9hZGFwdGVyID0gdzgzNzkxZF9hdHRhY2hfYWRhcHRlciwKKwkuZGV0YWNoX2NsaWVudCA9IHc4Mzc5MWRfZGV0YWNoX2NsaWVudCwKK307CisKKy8qIGZvbGxvd2luZyBhcmUgdGhlIHN5c2ZzIGNhbGxiYWNrIGZ1bmN0aW9ucyAqLworI2RlZmluZSBzaG93X2luX3JlZyhyZWcpIFwKK3N0YXRpYyBzc2l6ZV90IHNob3dfIyNyZWcoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgXAorCQkJY2hhciAqYnVmKSBcCit7IFwKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gXAorCQkJCQkJdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOyBcCisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOyBcCisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OyBcCisJcmV0dXJuIHNwcmludGYoYnVmLCIlZFxuIiwgSU5fRlJPTV9SRUcoZGF0YS0+cmVnW25yXSkpOyBcCit9CisKK3Nob3dfaW5fcmVnKGluKTsKK3Nob3dfaW5fcmVnKGluX21pbik7CitzaG93X2luX3JlZyhpbl9tYXgpOworCisjZGVmaW5lIHN0b3JlX2luX3JlZyhSRUcsIHJlZykgXAorc3RhdGljIHNzaXplX3Qgc3RvcmVfaW5fIyNyZWcoc3RydWN0IGRldmljZSAqZGV2LCBcCisJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIFwKKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkgXAoreyBcCisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IFwKKwkJCQkJCXRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsgXAorCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7IFwKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7IFwKKwl1bnNpZ25lZCBsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOyBcCisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OyBcCisJIFwKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7IFwKKwlkYXRhLT5pbl8jI3JlZ1tucl0gPSBJTl9UT19SRUcodmFsKTsgXAorCXc4Mzc5MWRfd3JpdGUoY2xpZW50LCBXODM3OTFEX1JFR19JTl8jI1JFR1tucl0sIGRhdGEtPmluXyMjcmVnW25yXSk7IFwKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsgXAorCSBcCisJcmV0dXJuIGNvdW50OyBcCit9CitzdG9yZV9pbl9yZWcoTUlOLCBtaW4pOworc3RvcmVfaW5fcmVnKE1BWCwgbWF4KTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfaW5faW5wdXRbXSA9IHsKKwlTRU5TT1JfQVRUUihpbjBfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDApLAorCVNFTlNPUl9BVFRSKGluMV9pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgMSksCisJU0VOU09SX0FUVFIoaW4yX2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCAyKSwKKwlTRU5TT1JfQVRUUihpbjNfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDMpLAorCVNFTlNPUl9BVFRSKGluNF9pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgNCksCisJU0VOU09SX0FUVFIoaW41X2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCA1KSwKKwlTRU5TT1JfQVRUUihpbjZfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDYpLAorCVNFTlNPUl9BVFRSKGluN19pbnB1dCwgU19JUlVHTywgc2hvd19pbiwgTlVMTCwgNyksCisJU0VOU09SX0FUVFIoaW44X2lucHV0LCBTX0lSVUdPLCBzaG93X2luLCBOVUxMLCA4KSwKKwlTRU5TT1JfQVRUUihpbjlfaW5wdXQsIFNfSVJVR08sIHNob3dfaW4sIE5VTEwsIDkpLAorfTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfaW5fbWluW10gPSB7CisJU0VOU09SX0FUVFIoaW4wX21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDApLAorCVNFTlNPUl9BVFRSKGluMV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCAxKSwKKwlTRU5TT1JfQVRUUihpbjJfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgMiksCisJU0VOU09SX0FUVFIoaW4zX21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDMpLAorCVNFTlNPUl9BVFRSKGluNF9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCA0KSwKKwlTRU5TT1JfQVRUUihpbjVfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgNSksCisJU0VOU09SX0FUVFIoaW42X21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDYpLAorCVNFTlNPUl9BVFRSKGluN19taW4sIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21pbiwgc3RvcmVfaW5fbWluLCA3KSwKKwlTRU5TT1JfQVRUUihpbjhfbWluLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9taW4sIHN0b3JlX2luX21pbiwgOCksCisJU0VOU09SX0FUVFIoaW45X21pbiwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWluLCBzdG9yZV9pbl9taW4sIDkpLAorfTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfaW5fbWF4W10gPSB7CisJU0VOU09SX0FUVFIoaW4wX21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDApLAorCVNFTlNPUl9BVFRSKGluMV9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCAxKSwKKwlTRU5TT1JfQVRUUihpbjJfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgMiksCisJU0VOU09SX0FUVFIoaW4zX21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDMpLAorCVNFTlNPUl9BVFRSKGluNF9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCA0KSwKKwlTRU5TT1JfQVRUUihpbjVfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgNSksCisJU0VOU09SX0FUVFIoaW42X21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDYpLAorCVNFTlNPUl9BVFRSKGluN19tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X2luX21heCwgc3RvcmVfaW5fbWF4LCA3KSwKKwlTRU5TT1JfQVRUUihpbjhfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19pbl9tYXgsIHN0b3JlX2luX21heCwgOCksCisJU0VOU09SX0FUVFIoaW45X21heCwgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfaW5fbWF4LCBzdG9yZV9pbl9tYXgsIDkpLAorfTsKKworI2RlZmluZSBzaG93X2Zhbl9yZWcocmVnKSBcCitzdGF0aWMgc3NpemVfdCBzaG93XyMjcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIFwKKwkJCQljaGFyICpidWYpIFwKK3sgXAorCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSBcCisJCQkJCQl0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7IFwKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gdzgzNzkxZF91cGRhdGVfZGV2aWNlKGRldik7IFwKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7IFwKKwlyZXR1cm4gc3ByaW50ZihidWYsIiVkXG4iLCBcCisJCUZBTl9GUk9NX1JFRyhkYXRhLT5yZWdbbnJdLCBESVZfRlJPTV9SRUcoZGF0YS0+ZmFuX2Rpdltucl0pKSk7IFwKK30KKworc2hvd19mYW5fcmVnKGZhbik7CitzaG93X2Zhbl9yZWcoZmFuX21pbik7CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX2Zhbl9taW4oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCXVuc2lnbmVkIGxvbmcgdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OworCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCWRhdGEtPmZhbl9taW5bbnJdID0gZmFuX3RvX3JlZyh2YWwsIERJVl9GUk9NX1JFRyhkYXRhLT5mYW5fZGl2W25yXSkpOworCXc4Mzc5MWRfd3JpdGUoY2xpZW50LCBXODM3OTFEX1JFR19GQU5fTUlOW25yXSwgZGF0YS0+ZmFuX21pbltucl0pOworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCBzaG93X2Zhbl9kaXYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBESVZfRlJPTV9SRUcoZGF0YS0+ZmFuX2Rpdltucl0pKTsKK30KKworLyogTm90ZTogd2Ugc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZmFuIG1pbmltdW0gaGVyZSwgYmVjYXVzZSBpdHMgdmFsdWUgaXMKKyAgIGRldGVybWluZWQgaW4gcGFydCBieSB0aGUgZmFuIGRpdmlzb3IuICBUaGlzIGZvbGxvd3MgdGhlIHByaW5jaXBsZSBvZgorICAgbGVhc3Qgc3VwcmlzZTsgdGhlIHVzZXIgZG9lc24ndCBleHBlY3QgdGhlIGZhbiBtaW5pbXVtIHRvIGNoYW5nZSBqdXN0CisgICBiZWNhdXNlIHRoZSBkaXZpc29yIGNoYW5nZWQuICovCitzdGF0aWMgc3NpemVfdCBzdG9yZV9mYW5fZGl2KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICpzZW5zb3JfYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihhdHRyKTsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlpbnQgbnIgPSBzZW5zb3JfYXR0ci0+aW5kZXg7CisJdW5zaWduZWQgbG9uZyBtaW47CisJdTggdG1wX2Zhbl9kaXY7CisJdTggZmFuX2Rpdl9yZWc7CisJaW50IGluZHggPSAwOworCXU4IGtlZXBfbWFzayA9IDA7CisJdTggbmV3X3NoaWZ0ID0gMDsKKworCS8qIFNhdmUgZmFuX21pbiAqLworCW1pbiA9IEZBTl9GUk9NX1JFRyhkYXRhLT5mYW5fbWluW25yXSwgRElWX0ZST01fUkVHKGRhdGEtPmZhbl9kaXZbbnJdKSk7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJZGF0YS0+ZmFuX2Rpdltucl0gPSBkaXZfdG9fcmVnKG5yLCBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKSk7CisKKwlzd2l0Y2ggKG5yKSB7CisJY2FzZSAwOgorCQlpbmR4ID0gMDsKKwkJa2VlcF9tYXNrID0gMHhjZjsKKwkJbmV3X3NoaWZ0ID0gNDsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlpbmR4ID0gMDsKKwkJa2VlcF9tYXNrID0gMHgzZjsKKwkJbmV3X3NoaWZ0ID0gNjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlpbmR4ID0gMTsKKwkJa2VlcF9tYXNrID0gMHgzZjsKKwkJbmV3X3NoaWZ0ID0gNjsKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlpbmR4ID0gMjsKKwkJa2VlcF9tYXNrID0gMHhmODsKKwkJbmV3X3NoaWZ0ID0gMDsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlpbmR4ID0gMjsKKwkJa2VlcF9tYXNrID0gMHg4ZjsKKwkJbmV3X3NoaWZ0ID0gNDsKKwkJYnJlYWs7CisjaWZkZWYgREVCVUcKKwlkZWZhdWx0OgorCQlkZXZfd2FybihkZXYsICJzdG9yZV9mYW5fZGl2OiBVbmV4cGVjdGVkIG5yIHNlZW46ICVkXG4iLCBucik7CisJCWNvdW50ID0gLUVJTlZBTDsKKwkJZ290byBlcnJfZXhpdDsKKyNlbmRpZgorCX0KKworCWZhbl9kaXZfcmVnID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfRkFOX0RJVltpbmR4XSkKKwkJCSYga2VlcF9tYXNrOworCXRtcF9mYW5fZGl2ID0gKGRhdGEtPmZhbl9kaXZbbnJdIDw8IG5ld19zaGlmdCkgJiB+a2VlcF9tYXNrOworCisJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0ZBTl9ESVZbaW5keF0sCisJCQkJZmFuX2Rpdl9yZWcgfCB0bXBfZmFuX2Rpdik7CisKKwkvKiBSZXN0b3JlIGZhbl9taW4gKi8KKwlkYXRhLT5mYW5fbWluW25yXSA9IGZhbl90b19yZWcobWluLCBESVZfRlJPTV9SRUcoZGF0YS0+ZmFuX2Rpdltucl0pKTsKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfRkFOX01JTltucl0sIGRhdGEtPmZhbl9taW5bbnJdKTsKKworI2lmZGVmIERFQlVHCitlcnJfZXhpdDoKKyNlbmRpZgorCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHNkYV9mYW5faW5wdXRbXSA9IHsKKwlTRU5TT1JfQVRUUihmYW4xX2lucHV0LCBTX0lSVUdPLCBzaG93X2ZhbiwgTlVMTCwgMCksCisJU0VOU09SX0FUVFIoZmFuMl9pbnB1dCwgU19JUlVHTywgc2hvd19mYW4sIE5VTEwsIDEpLAorCVNFTlNPUl9BVFRSKGZhbjNfaW5wdXQsIFNfSVJVR08sIHNob3dfZmFuLCBOVUxMLCAyKSwKKwlTRU5TT1JfQVRUUihmYW40X2lucHV0LCBTX0lSVUdPLCBzaG93X2ZhbiwgTlVMTCwgMyksCisJU0VOU09SX0FUVFIoZmFuNV9pbnB1dCwgU19JUlVHTywgc2hvd19mYW4sIE5VTEwsIDQpLAorfTsKKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSBzZGFfZmFuX21pbltdID0geworCVNFTlNPUl9BVFRSKGZhbjFfbWluLCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfZmFuX21pbiwgc3RvcmVfZmFuX21pbiwgMCksCisJU0VOU09SX0FUVFIoZmFuMl9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19mYW5fbWluLCBzdG9yZV9mYW5fbWluLCAxKSwKKwlTRU5TT1JfQVRUUihmYW4zX21pbiwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X2Zhbl9taW4sIHN0b3JlX2Zhbl9taW4sIDIpLAorCVNFTlNPUl9BVFRSKGZhbjRfbWluLCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfZmFuX21pbiwgc3RvcmVfZmFuX21pbiwgMyksCisJU0VOU09SX0FUVFIoZmFuNV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19mYW5fbWluLCBzdG9yZV9mYW5fbWluLCA0KSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX2Zhbl9kaXZbXSA9IHsKKwlTRU5TT1JfQVRUUihmYW4xX2RpdiwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X2Zhbl9kaXYsIHN0b3JlX2Zhbl9kaXYsIDApLAorCVNFTlNPUl9BVFRSKGZhbjJfZGl2LCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfZmFuX2Rpdiwgc3RvcmVfZmFuX2RpdiwgMSksCisJU0VOU09SX0FUVFIoZmFuM19kaXYsIFNfSVdVU1IgfCBTX0lSVUdPLAorCQkJc2hvd19mYW5fZGl2LCBzdG9yZV9mYW5fZGl2LCAyKSwKKwlTRU5TT1JfQVRUUihmYW40X2RpdiwgU19JV1VTUiB8IFNfSVJVR08sCisJCQlzaG93X2Zhbl9kaXYsIHN0b3JlX2Zhbl9kaXYsIDMpLAorCVNFTlNPUl9BVFRSKGZhbjVfZGl2LCBTX0lXVVNSIHwgU19JUlVHTywKKwkJCXNob3dfZmFuX2Rpdiwgc3RvcmVfZmFuX2RpdiwgNCksCit9OworCisvKiByZWFkL3dyaXRlIHRoZSB0ZW1wZXJhdHVyZTEsIGluY2x1ZGVzIG1lYXN1cmVkIHZhbHVlIGFuZCBsaW1pdHMgKi8KK3N0YXRpYyBzc2l6ZV90IHNob3dfdGVtcDEoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSB3ODM3OTFkX3VwZGF0ZV9kZXZpY2UoZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgVEVNUDFfRlJPTV9SRUcoZGF0YS0+dGVtcDFbYXR0ci0+aW5kZXhdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3RlbXAxKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsCisJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWxvbmcgdmFsID0gc2ltcGxlX3N0cnRvbChidWYsIE5VTEwsIDEwKTsKKwlpbnQgbnIgPSBhdHRyLT5pbmRleDsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT50ZW1wMVtucl0gPSBURU1QMV9UT19SRUcodmFsKTsKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUDFbbnJdLCBkYXRhLT50ZW1wMVtucl0pOworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCXJldHVybiBjb3VudDsKK30KKworLyogcmVhZC93cml0ZSB0ZW1wZXJhdHVyZTItMywgaW5jbHVkZXMgbWVhc3VyZWQgdmFsdWUgYW5kIGxpbWl0cyAqLworc3RhdGljIHNzaXplX3Qgc2hvd190ZW1wMjMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gdzgzNzkxZF91cGRhdGVfZGV2aWNlKGRldik7CisJaW50IG5yID0gYXR0ci0+bnI7CisJaW50IGluZGV4ID0gYXR0ci0+aW5kZXg7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIFRFTVAyM19GUk9NX1JFRyhkYXRhLT50ZW1wX2FkZFtucl1baW5kZXhdKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX3RlbXAyMyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsCisJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHJfMihkZXZhdHRyKTsKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAxMCk7CisJaW50IG5yID0gYXR0ci0+bnI7CisJaW50IGluZGV4ID0gYXR0ci0+aW5kZXg7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJZGF0YS0+dGVtcF9hZGRbbnJdW2luZGV4XSA9IFRFTVAyM19UT19SRUcodmFsKTsKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUF9BRERbbnJdW2luZGV4ICogMl0sCisJCQkJZGF0YS0+dGVtcF9hZGRbbnJdW2luZGV4XSA+PiA4KTsKKwl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUF9BRERbbnJdW2luZGV4ICogMiArIDFdLAorCQkJCWRhdGEtPnRlbXBfYWRkW25yXVtpbmRleF0gJiAweDgwKTsKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZV8yIHNkYV90ZW1wX2lucHV0W10gPSB7CisJU0VOU09SX0FUVFJfMih0ZW1wMV9pbnB1dCwgU19JUlVHTywgc2hvd190ZW1wMSwgTlVMTCwgMCwgMCksCisJU0VOU09SX0FUVFJfMih0ZW1wMl9pbnB1dCwgU19JUlVHTywgc2hvd190ZW1wMjMsIE5VTEwsIDAsIDApLAorCVNFTlNPUl9BVFRSXzIodGVtcDNfaW5wdXQsIFNfSVJVR08sIHNob3dfdGVtcDIzLCBOVUxMLCAxLCAwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiBzZGFfdGVtcF9tYXhbXSA9IHsKKwlTRU5TT1JfQVRUUl8yKHRlbXAxX21heCwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQlzaG93X3RlbXAxLCBzdG9yZV90ZW1wMSwgMCwgMSksCisJU0VOU09SX0FUVFJfMih0ZW1wMl9tYXgsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJc2hvd190ZW1wMjMsIHN0b3JlX3RlbXAyMywgMCwgMSksCisJU0VOU09SX0FUVFJfMih0ZW1wM19tYXgsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJc2hvd190ZW1wMjMsIHN0b3JlX3RlbXAyMywgMSwgMSksCit9OworCitzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgc2RhX3RlbXBfbWF4X2h5c3RbXSA9IHsKKwlTRU5TT1JfQVRUUl8yKHRlbXAxX21heF9oeXN0LCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCXNob3dfdGVtcDEsIHN0b3JlX3RlbXAxLCAwLCAyKSwKKwlTRU5TT1JfQVRUUl8yKHRlbXAyX21heF9oeXN0LCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCXNob3dfdGVtcDIzLCBzdG9yZV90ZW1wMjMsIDAsIDIpLAorCVNFTlNPUl9BVFRSXzIodGVtcDNfbWF4X2h5c3QsIFNfSVJVR08gfCBTX0lXVVNSLAorCQkJc2hvd190ZW1wMjMsIHN0b3JlX3RlbXAyMywgMSwgMiksCit9OworCisKKy8qIGdldCByZWF0aW1lIHN0YXR1cyBvZiBhbGwgc2Vuc29ycyBpdGVtczogdm9sdGFnZSwgdGVtcCwgZmFuICovCitzdGF0aWMgc3NpemVfdCBzaG93X2FsYXJtc19yZWcoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBkYXRhLT5hbGFybXMpOworfQorCitzdGF0aWMgREVWSUNFX0FUVFIoYWxhcm1zLCBTX0lSVUdPLCBzaG93X2FsYXJtc19yZWcsIE5VTEwpOworCisvKiBCZWVwIGNvbnRyb2wgKi8KKworI2RlZmluZSBHTE9CQUxfQkVFUF9FTkFCTEVfU0hJRlQJMTUKKyNkZWZpbmUgR0xPQkFMX0JFRVBfRU5BQkxFX01BU0sJCSgxIDw8IEdMT0JBTF9CRUVQX0VOQUJMRV9TSElGVCkKKworc3RhdGljIHNzaXplX3Qgc2hvd19iZWVwX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gdzgzNzkxZF91cGRhdGVfZGV2aWNlKGRldik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGRhdGEtPmJlZXBfZW5hYmxlKTsKK30KKworc3RhdGljIHNzaXplX3Qgc2hvd19iZWVwX21hc2soc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBCRUVQX01BU0tfRlJPTV9SRUcoZGF0YS0+YmVlcF9tYXNrKSk7Cit9CisKKworc3RhdGljIHNzaXplX3Qgc3RvcmVfYmVlcF9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAxMCk7CisJaW50IGk7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwkvKiBUaGUgYmVlcF9lbmFibGUgc3RhdGUgb3ZlcnJpZGVzIGFueSBlbmFibGluZyByZXF1ZXN0IGZyb20KKwkgICB0aGUgbWFza3MgKi8KKwlkYXRhLT5iZWVwX21hc2sgPSBCRUVQX01BU0tfVE9fUkVHKHZhbCkgJiB+R0xPQkFMX0JFRVBfRU5BQkxFX01BU0s7CisJZGF0YS0+YmVlcF9tYXNrIHw9IChkYXRhLT5iZWVwX2VuYWJsZSA8PCBHTE9CQUxfQkVFUF9FTkFCTEVfU0hJRlQpOworCisJdmFsID0gZGF0YS0+YmVlcF9tYXNrOworCisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfQkVFUF9DVFJMW2ldLCAodmFsICYgMHhmZikpOworCQl2YWwgPj49IDg7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX2JlZXBfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwlsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAxMCk7CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwlkYXRhLT5iZWVwX2VuYWJsZSA9IHZhbCA/IDEgOiAwOworCisJLyogS2VlcCB0aGUgZnVsbCBtYXNrIHZhbHVlIGluIHN5bmMgd2l0aCB0aGUgY3VycmVudCBlbmFibGUgKi8KKwlkYXRhLT5iZWVwX21hc2sgJj0gfkdMT0JBTF9CRUVQX0VOQUJMRV9NQVNLOworCWRhdGEtPmJlZXBfbWFzayB8PSAoZGF0YS0+YmVlcF9lbmFibGUgPDwgR0xPQkFMX0JFRVBfRU5BQkxFX1NISUZUKTsKKworCS8qIFRoZSBnbG9iYWwgY29udHJvbCBpcyBpbiB0aGUgc2Vjb25kIGJlZXAgY29udHJvbCByZWdpc3RlcgorCSAgIHNvIG9ubHkgbmVlZCB0byB1cGRhdGUgdGhhdCByZWdpc3RlciAqLworCXZhbCA9IChkYXRhLT5iZWVwX21hc2sgPj4gOCkgJiAweGZmOworCisJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ1RSTFsxXSwgdmFsKTsKKworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHNkYV9iZWVwX2N0cmxbXSA9IHsKKwlTRU5TT1JfQVRUUihiZWVwX2VuYWJsZSwgU19JUlVHTyB8IFNfSVdVU1IsCisJCQlzaG93X2JlZXBfZW5hYmxlLCBzdG9yZV9iZWVwX2VuYWJsZSwgMCksCisJU0VOU09SX0FUVFIoYmVlcF9tYXNrLCBTX0lSVUdPIHwgU19JV1VTUiwKKwkJCXNob3dfYmVlcF9tYXNrLCBzdG9yZV9iZWVwX21hc2ssIDEpCit9OworCisvKiBjcHUgdm9sdGFnZSByZWd1bGF0aW9uIGluZm9ybWF0aW9uICovCitzdGF0aWMgc3NpemVfdCBzaG93X3ZpZF9yZWcoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB2aWRfZnJvbV9yZWcoZGF0YS0+dmlkLCBkYXRhLT52cm0pKTsKK30KKworc3RhdGljIERFVklDRV9BVFRSKGNwdTBfdmlkLCBTX0lSVUdPLCBzaG93X3ZpZF9yZWcsIE5VTEwpOworCitzdGF0aWMgc3NpemVfdCBzaG93X3ZybV9yZWcoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IHc4Mzc5MWRfdXBkYXRlX2RldmljZShkZXYpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBkYXRhLT52cm0pOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV92cm1fcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOworCXN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKwl1bnNpZ25lZCBsb25nIHZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOworCisJLyogTm8gbG9jayBuZWVkZWQgYXMgdnJtIGlzIGludGVybmFsIHRvIHRoZSBkcml2ZXIKKwkgICAobm90IHJlYWQgZnJvbSBhIGNoaXAgcmVnaXN0ZXIpIGFuZCBzbyBpcyBub3QKKwkgICB1cGRhdGVkIGluIHc4Mzc5MWRfdXBkYXRlX2RldmljZSgpICovCisJZGF0YS0+dnJtID0gdmFsOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgREVWSUNFX0FUVFIodnJtLCBTX0lSVUdPIHwgU19JV1VTUiwgc2hvd192cm1fcmVnLCBzdG9yZV92cm1fcmVnKTsKKworLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbjoKKyAgICAgKiB3ODM3OTFkX2RyaXZlciBpcyBpbnNlcnRlZCAod2hlbiB0aGlzIG1vZHVsZSBpcyBsb2FkZWQpLCBmb3IgZWFjaAorICAgICAgIGF2YWlsYWJsZSBhZGFwdGVyCisgICAgICogd2hlbiBhIG5ldyBhZGFwdGVyIGlzIGluc2VydGVkIChhbmQgdzgzNzkxZF9kcml2ZXIgaXMgc3RpbGwgcHJlc2VudCkgKi8KK3N0YXRpYyBpbnQgdzgzNzkxZF9hdHRhY2hfYWRhcHRlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCit7CisJaWYgKCEoYWRhcHRlci0+Y2xhc3MgJiBJMkNfQ0xBU1NfSFdNT04pKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gaTJjX3Byb2JlKGFkYXB0ZXIsICZhZGRyX2RhdGEsIHc4Mzc5MWRfZGV0ZWN0KTsKK30KKworCitzdGF0aWMgaW50IHc4Mzc5MWRfY3JlYXRlX3N1YmNsaWVudChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCisJCQkJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IGFkZHIsCisJCQkJc3RydWN0IGkyY19jbGllbnQgKipzdWJfY2xpKQoreworCWludCBlcnI7CisJc3RydWN0IGkyY19jbGllbnQgKnN1Yl9jbGllbnQ7CisKKwkoKnN1Yl9jbGkpID0gc3ViX2NsaWVudCA9CisJCQlremFsbG9jKHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCksIEdGUF9LRVJORUwpOworCWlmICghKHN1Yl9jbGllbnQpKSB7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlzdWJfY2xpZW50LT5hZGRyID0gMHg0OCArIGFkZHI7CisJaTJjX3NldF9jbGllbnRkYXRhKHN1Yl9jbGllbnQsIE5VTEwpOworCXN1Yl9jbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOworCXN1Yl9jbGllbnQtPmRyaXZlciA9ICZ3ODM3OTFkX2RyaXZlcjsKKwlzdHJsY3B5KHN1Yl9jbGllbnQtPm5hbWUsICJ3ODM3OTFkIHN1YmNsaWVudCIsIEkyQ19OQU1FX1NJWkUpOworCWlmICgoZXJyID0gaTJjX2F0dGFjaF9jbGllbnQoc3ViX2NsaWVudCkpKSB7CisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAic3ViY2xpZW50IHJlZ2lzdHJhdGlvbiAiCisJCQkiYXQgYWRkcmVzcyAweCV4IGZhaWxlZFxuIiwgc3ViX2NsaWVudC0+YWRkcik7CisJCWtmcmVlKHN1Yl9jbGllbnQpOworCQlyZXR1cm4gZXJyOworCX0KKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IHc4Mzc5MWRfZGV0ZWN0X3N1YmNsaWVudHMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywKKwkJCQlpbnQga2luZCwgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IGksIGlkLCBlcnI7CisJdTggdmFsOworCisJaWQgPSBpMmNfYWRhcHRlcl9pZChhZGFwdGVyKTsKKwlpZiAoZm9yY2Vfc3ViY2xpZW50c1swXSA9PSBpZCAmJiBmb3JjZV9zdWJjbGllbnRzWzFdID09IGFkZHJlc3MpIHsKKwkJZm9yIChpID0gMjsgaSA8PSAzOyBpKyspIHsKKwkJCWlmIChmb3JjZV9zdWJjbGllbnRzW2ldIDwgMHg0OCB8fAorCQkJICAgIGZvcmNlX3N1YmNsaWVudHNbaV0gPiAweDRmKSB7CisJCQkJZGV2X2VycigmY2xpZW50LT5kZXYsCisJCQkJCSJpbnZhbGlkIHN1YmNsaWVudCAiCisJCQkJCSJhZGRyZXNzICVkOyBtdXN0IGJlIDB4NDgtMHg0ZlxuIiwKKwkJCQkJZm9yY2Vfc3ViY2xpZW50c1tpXSk7CisJCQkJZXJyID0gLUVOT0RFVjsKKwkJCQlnb3RvIGVycm9yX3NjXzA7CisJCQl9CisJCX0KKwkJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0kyQ19TVUJBRERSLAorCQkJCQkoZm9yY2Vfc3ViY2xpZW50c1syXSAmIDB4MDcpIHwKKwkJCQkJKChmb3JjZV9zdWJjbGllbnRzWzNdICYgMHgwNykgPDwgNCkpOworCX0KKworCXZhbCA9IHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0kyQ19TVUJBRERSKTsKKwlpZiAoISh2YWwgJiAweDA4KSkgeworCQllcnIgPSB3ODM3OTFkX2NyZWF0ZV9zdWJjbGllbnQoYWRhcHRlciwgY2xpZW50LAorCQkJCQkJdmFsICYgMHg3LCAmZGF0YS0+bG03NVswXSk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBlcnJvcl9zY18wOworCX0KKwlpZiAoISh2YWwgJiAweDgwKSkgeworCQlpZiAoKGRhdGEtPmxtNzVbMF0gIT0gTlVMTCkgJiYKKwkJCQkoKHZhbCAmIDB4NykgPT0gKCh2YWwgPj4gNCkgJiAweDcpKSkgeworCQkJZGV2X2VycigmY2xpZW50LT5kZXYsCisJCQkJImR1cGxpY2F0ZSBhZGRyZXNzZXMgMHgleCwgIgorCQkJCSJ1c2UgZm9yY2Vfc3ViY2xpZW50XG4iLAorCQkJCWRhdGEtPmxtNzVbMF0tPmFkZHIpOworCQkJZXJyID0gLUVOT0RFVjsKKwkJCWdvdG8gZXJyb3Jfc2NfMTsKKwkJfQorCQllcnIgPSB3ODM3OTFkX2NyZWF0ZV9zdWJjbGllbnQoYWRhcHRlciwgY2xpZW50LAorCQkJCQkodmFsID4+IDQpICYgMHg3LCAmZGF0YS0+bG03NVsxXSk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBlcnJvcl9zY18xOworCX0KKworCXJldHVybiAwOworCisvKiBVbmRvIGluaXRzIGluIGNhc2Ugb2YgZXJyb3JzICovCisKK2Vycm9yX3NjXzE6CisJaWYgKGRhdGEtPmxtNzVbMF0gIT0gTlVMTCkgeworCQlpMmNfZGV0YWNoX2NsaWVudChkYXRhLT5sbTc1WzBdKTsKKwkJa2ZyZWUoZGF0YS0+bG03NVswXSk7CisJfQorZXJyb3Jfc2NfMDoKKwlyZXR1cm4gZXJyOworfQorCisKK3N0YXRpYyBpbnQgdzgzNzkxZF9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBpbnQgYWRkcmVzcywgaW50IGtpbmQpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YTsKKwlpbnQgaSwgdmFsMSwgdmFsMjsKKwlpbnQgZXJyID0gMDsKKwljb25zdCBjaGFyICpjbGllbnRfbmFtZSA9ICIiOworCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKSB7CisJCWdvdG8gZXJyb3IwOworCX0KKworCS8qIE9LLiBGb3Igbm93LCB3ZSBwcmVzdW1lIHdlIGhhdmUgYSB2YWxpZCBjbGllbnQuIFdlIG5vdyBjcmVhdGUgdGhlCisJICAgY2xpZW50IHN0cnVjdHVyZSwgZXZlbiB0aG91Z2ggd2UgY2Fubm90IGZpbGwgaXQgY29tcGxldGVseSB5ZXQuCisJICAgQnV0IGl0IGFsbG93cyB1cyB0byBhY2Nlc3MgdzgzNzkxZF97cmVhZCx3cml0ZX1fdmFsdWUuICovCisJaWYgKCEoZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB3ODM3OTFkX2RhdGEpLCBHRlBfS0VSTkVMKSkpIHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBlcnJvcjA7CisJfQorCisJY2xpZW50ID0gJmRhdGEtPmNsaWVudDsKKwlkZXYgPSAmY2xpZW50LT5kZXY7CisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7CisJY2xpZW50LT5hZGRyID0gYWRkcmVzczsKKwljbGllbnQtPmFkYXB0ZXIgPSBhZGFwdGVyOworCWNsaWVudC0+ZHJpdmVyID0gJnc4Mzc5MWRfZHJpdmVyOworCW11dGV4X2luaXQoJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKworCS8qIE5vdywgd2UgZG8gdGhlIHJlbWFpbmluZyBkZXRlY3Rpb24uICovCisKKwkvKiBUaGUgdzgzNzkxZCBtYXkgYmUgc3R1Y2sgaW4gc29tZSBvdGhlciBiYW5rIHRoYW4gYmFuayAwLiBUaGlzIG1heQorCSAgIG1ha2UgcmVhZGluZyBvdGhlciBpbmZvcm1hdGlvbiBpbXBvc3NpYmxlLiBTcGVjaWZ5IGEgZm9yY2U9Li4uCisJICAgcGFyYW1ldGVyLCBhbmQgdGhlIFdpbmJvbmQgd2lsbCBiZSByZXNldCB0byB0aGUgcmlnaHQgYmFuay4gKi8KKwlpZiAoa2luZCA8IDApIHsKKwkJaWYgKHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0NPTkZJRykgJiAweDgwKSB7CisJCQlkZXZfZGJnKGRldiwgIkRldGVjdGlvbiBmYWlsZWQgYXQgc3RlcCAxXG4iKTsKKwkJCWdvdG8gZXJyb3IxOworCQl9CisJCXZhbDEgPSB3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19CQU5LKTsKKwkJdmFsMiA9IHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0NISVBNQU4pOworCQkvKiBDaGVjayBmb3IgV2luYm9uZCBJRCBpZiBpbiBiYW5rIDAgKi8KKwkJaWYgKCEodmFsMSAmIDB4MDcpKSB7CisJCQkvKiB5ZXMgaXQgaXMgQmFuazAgKi8KKwkJCWlmICgoKCEodmFsMSAmIDB4ODApKSAmJiAodmFsMiAhPSAweGEzKSkgfHwKKwkJCSAgICAoKHZhbDEgJiAweDgwKSAmJiAodmFsMiAhPSAweDVjKSkpIHsKKwkJCQlkZXZfZGJnKGRldiwgIkRldGVjdGlvbiBmYWlsZWQgYXQgc3RlcCAyXG4iKTsKKwkJCQlnb3RvIGVycm9yMTsKKwkJCX0KKwkJfQorCQkvKiBJZiBXaW5ib25kIGNoaXAsIGFkZHJlc3Mgb2YgY2hpcCBhbmQgVzgzNzkxRF9SRUdfSTJDX0FERFIKKwkJICAgc2hvdWxkIG1hdGNoICovCisJCWlmICh3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19JMkNfQUREUikgIT0gYWRkcmVzcykgeworCQkJZGV2X2RiZyhkZXYsICJEZXRlY3Rpb24gZmFpbGVkIGF0IHN0ZXAgM1xuIik7CisJCQlnb3RvIGVycm9yMTsKKwkJfQorCX0KKworCS8qIFdlIGVpdGhlciBoYXZlIGEgZm9yY2UgcGFyYW1ldGVyIG9yIHdlIGhhdmUgcmVhc29uIHRvCisJICAgYmVsaWV2ZSBpdCBpcyBhIFdpbmJvbmQgY2hpcC4gRWl0aGVyIHdheSwgd2Ugd2FudCBiYW5rIDAgYW5kCisJICAgVmVuZG9yIElEIGhpZ2ggYnl0ZSAqLworCXZhbDEgPSB3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19CQU5LKSAmIDB4Nzg7CisJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0JBTkssIHZhbDEgfCAweDgwKTsKKworCS8qIFZlcmlmeSBpdCBpcyBhIFdpbmJvbmQgdzgzNzkxZCAqLworCWlmIChraW5kIDw9IDApIHsKKwkJLyogZ2V0IHZlbmRvciBJRCAqLworCQl2YWwyID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfQ0hJUE1BTik7CisJCWlmICh2YWwyICE9IDB4NWMpIHsJLyogdGhlIHZlbmRvciBpcyBOT1QgV2luYm9uZCAqLworCQkJZGV2X2RiZyhkZXYsICJEZXRlY3Rpb24gZmFpbGVkIGF0IHN0ZXAgNFxuIik7CisJCQlnb3RvIGVycm9yMTsKKwkJfQorCQl2YWwxID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfV0NISVBJRCk7CisJCWlmICh2YWwxID09IDB4NzEpIHsKKwkJCWtpbmQgPSB3ODM3OTFkOworCQl9IGVsc2UgeworCQkJaWYgKGtpbmQgPT0gMCkKKwkJCQlkZXZfd2FybihkZXYsCisJCQkJCSJ3ODM3OTFkOiBJZ25vcmluZyAnZm9yY2UnIHBhcmFtZXRlciAiCisJCQkJCSJmb3IgdW5rbm93biBjaGlwIGF0IGFkYXB0ZXIgJWQsICIKKwkJCQkJImFkZHJlc3MgMHglMDJ4XG4iLAorCQkJCQlpMmNfYWRhcHRlcl9pZChhZGFwdGVyKSwgYWRkcmVzcyk7CisJCQlnb3RvIGVycm9yMTsKKwkJfQorCX0KKworCWlmIChraW5kID09IHc4Mzc5MWQpIHsKKwkJY2xpZW50X25hbWUgPSAidzgzNzkxZCI7CisJfSBlbHNlIHsKKwkJZGV2X2VycihkZXYsICJ3ODM3OTFkOiBJbnRlcm5hbCBlcnJvcjogdW5rbm93biBraW5kICglZCk/IT8iLAorCQkJa2luZCk7CisJCWdvdG8gZXJyb3IxOworCX0KKworI2lmZGVmIERFQlVHCisJdmFsMSA9IHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0RJRF9WSUQ0KTsKKwlkZXZfZGJnKGRldiwgIkRldmljZSBJRCB2ZXJzaW9uOiAlZC4lZCAoMHglMDJ4KVxuIiwKKwkJCSh2YWwxID4+IDUpICYgMHgwNywgKHZhbDEgPj4gMSkgJiAweDBmLCB2YWwxKTsKKyNlbmRpZgorCisJLyogRmlsbCBpbiB0aGUgcmVtYWluaW5nIGNsaWVudCBmaWVsZHMgYW5kIHB1dCBpbnRvIHRoZSBnbG9iYWwgbGlzdCAqLworCXN0cmxjcHkoY2xpZW50LT5uYW1lLCBjbGllbnRfbmFtZSwgSTJDX05BTUVfU0laRSk7CisKKwkvKiBUZWxsIHRoZSBJMkMgbGF5ZXIgYSBuZXcgY2xpZW50IGhhcyBhcnJpdmVkICovCisJaWYgKChlcnIgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpKSkKKwkJZ290byBlcnJvcjE7CisKKwlpZiAoKGVyciA9IHc4Mzc5MWRfZGV0ZWN0X3N1YmNsaWVudHMoYWRhcHRlciwgYWRkcmVzcywga2luZCwgY2xpZW50KSkpCisJCWdvdG8gZXJyb3IyOworCisJLyogSW5pdGlhbGl6ZSB0aGUgY2hpcCAqLworCXc4Mzc5MWRfaW5pdF9jbGllbnQoY2xpZW50KTsKKworCS8qIElmIHRoZSBmYW5fZGl2IGlzIGNoYW5nZWQsIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHJhdGlvbmFsCisJICAgZmFuX21pbiBpbiBwbGFjZSAqLworCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfRkFOSU47IGkrKykgeworCQlkYXRhLT5mYW5fbWluW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfRkFOX01JTltpXSk7CisJfQorCisJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KKwlkYXRhLT5jbGFzc19kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0ZXIoZGV2KTsKKwlpZiAoSVNfRVJSKGRhdGEtPmNsYXNzX2RldikpIHsKKwkJZXJyID0gUFRSX0VSUihkYXRhLT5jbGFzc19kZXYpOworCQlnb3RvIGVycm9yMzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNQkVSX09GX1ZJTjsgaSsrKSB7CisJCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfaW5faW5wdXRbaV0uZGV2X2F0dHIpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmc2RhX2luX21pbltpXS5kZXZfYXR0cik7CisJCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfaW5fbWF4W2ldLmRldl9hdHRyKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNQkVSX09GX0ZBTklOOyBpKyspIHsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV9mYW5faW5wdXRbaV0uZGV2X2F0dHIpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmc2RhX2Zhbl9kaXZbaV0uZGV2X2F0dHIpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmc2RhX2Zhbl9taW5baV0uZGV2X2F0dHIpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfVEVNUElOOyBpKyspIHsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV90ZW1wX2lucHV0W2ldLmRldl9hdHRyKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJnNkYV90ZW1wX21heFtpXS5kZXZfYXR0cik7CisJCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfdGVtcF9tYXhfaHlzdFtpXS5kZXZfYXR0cik7CisJfQorCisJZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX2FsYXJtcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzZGFfYmVlcF9jdHJsKTsgaSsrKSB7CisJCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZzZGFfYmVlcF9jdHJsW2ldLmRldl9hdHRyKTsKKwl9CisKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmZGV2X2F0dHJfY3B1MF92aWQpOworCWRldmljZV9jcmVhdGVfZmlsZShkZXYsICZkZXZfYXR0cl92cm0pOworCisJcmV0dXJuIDA7CisKK2Vycm9yMzoKKwlpZiAoZGF0YS0+bG03NVswXSAhPSBOVUxMKSB7CisJCWkyY19kZXRhY2hfY2xpZW50KGRhdGEtPmxtNzVbMF0pOworCQlrZnJlZShkYXRhLT5sbTc1WzBdKTsKKwl9CisJaWYgKGRhdGEtPmxtNzVbMV0gIT0gTlVMTCkgeworCQlpMmNfZGV0YWNoX2NsaWVudChkYXRhLT5sbTc1WzFdKTsKKwkJa2ZyZWUoZGF0YS0+bG03NVsxXSk7CisJfQorZXJyb3IyOgorCWkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CitlcnJvcjE6CisJa2ZyZWUoZGF0YSk7CitlcnJvcjA6CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCB3ODM3OTFkX2RldGFjaF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJaW50IGVycjsKKworCS8qIG1haW4gY2xpZW50ICovCisJaWYgKGRhdGEpCisJCWh3bW9uX2RldmljZV91bnJlZ2lzdGVyKGRhdGEtPmNsYXNzX2Rldik7CisKKwlpZiAoKGVyciA9IGkyY19kZXRhY2hfY2xpZW50KGNsaWVudCkpKQorCQlyZXR1cm4gZXJyOworCisJLyogbWFpbiBjbGllbnQgKi8KKwlpZiAoZGF0YSkKKwkJa2ZyZWUoZGF0YSk7CisJLyogc3ViY2xpZW50ICovCisJZWxzZQorCQlrZnJlZShjbGllbnQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHc4Mzc5MWRfaW5pdF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisJdTggdG1wOworCXU4IG9sZF9iZWVwOworCisJLyogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiByZXNldCBhbmQgaW5pdCBpcyB0aGF0IHJlc2V0CisJICAgZG9lcyBhIGhhcmQgcmVzZXQgb2YgdGhlIGNoaXAgdmlhIGluZGV4IDB4NDAsIGJpdCA3LAorCSAgIGJ1dCBpbml0IHNpbXBseSBmb3JjZXMgY2VydGFpbiByZWdpc3RlcnMgdG8gaGF2ZSAic2FuZSIKKwkgICB2YWx1ZXMuIFRoZSBob3BlIGlzIHRoYXQgdGhlIEJJT1MgaGFzIGRvbmUgdGhlIHJpZ2h0CisJICAgdGhpbmcgKHdoaWNoIGlzIHdoeSB0aGUgZGVmYXVsdCBpcyByZXNldD0wLCBpbml0PTApLAorCSAgIGJ1dCBpZiBub3QsIHJlc2V0IGlzIHRoZSBoYXJkIGhhbW1lciBhbmQgaW5pdAorCSAgIGlzIHRoZSBzb2Z0IG1hbGxldCBib3RoIG9mIHdoaWNoIGFyZSB0cnlpbmcgdG8gd2hhY2sKKwkgICB0aGluZ3MgaW50byBwbGFjZS4uLgorCSAgIE5PVEU6IFRoZSBkYXRhIHNoZWV0IG1ha2VzIGEgZGlzdGluY3Rpb24gYmV0d2VlbgorCSAgICJwb3dlciBvbiBkZWZhdWx0cyIgYW5kICJyZXNldCBieSBNUiIuIEFzIGZhciBhcyBJIGNhbiB0ZWxsLAorCSAgIHRoZSBoYXJkIHJlc2V0IHB1dHMgZXZlcnl0aGluZyBpbnRvIGEgcG93ZXItb24gc3RhdGUgc28gSSdtCisJICAgbm90IHN1cmUgd2hhdCAicmVzZXQgYnkgTVIiIG1lYW5zIG9yIGhvdyBpdCBjYW4gaGFwcGVuLgorCSAgICovCisJaWYgKHJlc2V0IHx8IGluaXQpIHsKKwkJLyoga2VlcCBzb21lIEJJT1Mgc2V0dGluZ3Mgd2hlbiB3ZS4uLiAqLworCQlvbGRfYmVlcCA9IHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ09ORklHKTsKKworCQlpZiAocmVzZXQpIHsKKwkJCS8qIC4uLiByZXNldCB0aGUgY2hpcCBhbmQgLi4uICovCisJCQl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfQ09ORklHLCAweDgwKTsKKwkJfQorCisJCS8qIC4uLiBkaXNhYmxlIHBvd2VyLW9uIGFibm9ybWFsIGJlZXAgKi8KKwkJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ09ORklHLCBvbGRfYmVlcCB8IDB4ODApOworCisJCS8qIGRpc2FibGUgdGhlIGdsb2JhbCBiZWVwIChub3QgZG9uZSBieSBoYXJkIHJlc2V0KSAqLworCQl0bXAgPSB3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19CRUVQX0NUUkxbMV0pOworCQl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfQkVFUF9DVFJMWzFdLCB0bXAgJiAweGVmKTsKKworCQlpZiAoaW5pdCkgeworCQkJLyogTWFrZSBzdXJlIG1vbml0b3JpbmcgaXMgdHVybmVkIG9uIGZvciBhZGQtb25zICovCisJCQl0bXAgPSB3ODM3OTFkX3JlYWQoY2xpZW50LCBXODM3OTFEX1JFR19URU1QMl9DT05GSUcpOworCQkJaWYgKHRtcCAmIDEpIHsKKwkJCQl3ODM3OTFkX3dyaXRlKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUDJfQ09ORklHLAorCQkJCQl0bXAgJiAweGZlKTsKKwkJCX0KKworCQkJdG1wID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfVEVNUDNfQ09ORklHKTsKKwkJCWlmICh0bXAgJiAxKSB7CisJCQkJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX1RFTVAzX0NPTkZJRywKKwkJCQkJdG1wICYgMHhmZSk7CisJCQl9CisKKwkJCS8qIFN0YXJ0IG1vbml0b3JpbmcgKi8KKwkJCXRtcCA9IHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0NPTkZJRykgJiAweGY3OworCQkJdzgzNzkxZF93cml0ZShjbGllbnQsIFc4Mzc5MURfUkVHX0NPTkZJRywgdG1wIHwgMHgwMSk7CisJCX0KKwl9CisKKwlkYXRhLT52cm0gPSB2aWRfd2hpY2hfdnJtKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdzgzNzkxZF9kYXRhICp3ODM3OTFkX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CisJc3RydWN0IHc4Mzc5MWRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWludCBpLCBqOworCXU4IHJlZ19hcnJheV90bXBbM107CisKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKwlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBkYXRhLT5sYXN0X3VwZGF0ZWQgKyAoSFogKiAzKSkKKwkJCXx8ICFkYXRhLT52YWxpZCkgeworCQlkZXZfZGJnKGRldiwgIlN0YXJ0aW5nIHc4Mzc5MWQgZGV2aWNlIHVwZGF0ZVxuIik7CisKKwkJLyogVXBkYXRlIHRoZSB2b2x0YWdlcyBtZWFzdXJlZCB2YWx1ZSBhbmQgbGltaXRzICovCisJCWZvciAoaSA9IDA7IGkgPCBOVU1CRVJfT0ZfVklOOyBpKyspIHsKKwkJCWRhdGEtPmluW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCQkJCVc4Mzc5MURfUkVHX0lOW2ldKTsKKwkJCWRhdGEtPmluX21heFtpXSA9IHc4Mzc5MWRfcmVhZChjbGllbnQsCisJCQkJCQlXODM3OTFEX1JFR19JTl9NQVhbaV0pOworCQkJZGF0YS0+aW5fbWluW2ldID0gdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCQkJCVc4Mzc5MURfUkVHX0lOX01JTltpXSk7CisJCX0KKworCQkvKiBVcGRhdGUgdGhlIGZhbiBjb3VudHMgYW5kIGxpbWl0cyAqLworCQlmb3IgKGkgPSAwOyBpIDwgTlVNQkVSX09GX0ZBTklOOyBpKyspIHsKKwkJCS8qIFVwZGF0ZSB0aGUgRmFuIG1lYXN1cmVkIHZhbHVlIGFuZCBsaW1pdHMgKi8KKwkJCWRhdGEtPmZhbltpXSA9IHc4Mzc5MWRfcmVhZChjbGllbnQsCisJCQkJCQlXODM3OTFEX1JFR19GQU5baV0pOworCQkJZGF0YS0+ZmFuX21pbltpXSA9IHc4Mzc5MWRfcmVhZChjbGllbnQsCisJCQkJCQlXODM3OTFEX1JFR19GQU5fTUlOW2ldKTsKKwkJfQorCisJCS8qIFVwZGF0ZSB0aGUgZmFuIGRpdmlzb3IgKi8KKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJcmVnX2FycmF5X3RtcFtpXSA9IHc4Mzc5MWRfcmVhZChjbGllbnQsCisJCQkJCQlXODM3OTFEX1JFR19GQU5fRElWW2ldKTsKKwkJfQorCQlkYXRhLT5mYW5fZGl2WzBdID0gKHJlZ19hcnJheV90bXBbMF0gPj4gNCkgJiAweDAzOworCQlkYXRhLT5mYW5fZGl2WzFdID0gKHJlZ19hcnJheV90bXBbMF0gPj4gNikgJiAweDAzOworCQlkYXRhLT5mYW5fZGl2WzJdID0gKHJlZ19hcnJheV90bXBbMV0gPj4gNikgJiAweDAzOworCQlkYXRhLT5mYW5fZGl2WzNdID0gcmVnX2FycmF5X3RtcFsyXSAmIDB4MDc7CisJCWRhdGEtPmZhbl9kaXZbNF0gPSAocmVnX2FycmF5X3RtcFsyXSA+PiA0KSAmIDB4MDc7CisKKwkJLyogVXBkYXRlIHRoZSBmaXJzdCB0ZW1wZXJhdHVyZSBzZW5zb3IgKi8KKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJZGF0YS0+dGVtcDFbaV0gPSB3ODM3OTFkX3JlYWQoY2xpZW50LAorCQkJCQkJVzgzNzkxRF9SRUdfVEVNUDFbaV0pOworCQl9CisKKwkJLyogVXBkYXRlIHRoZSByZXN0IG9mIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3JzICovCisJCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJCWZvciAoaiA9IDA7IGogPCAzOyBqKyspIHsKKwkJCQlkYXRhLT50ZW1wX2FkZFtpXVtqXSA9CisJCQkJCSh3ODM3OTFkX3JlYWQoY2xpZW50LAorCQkJCQlXODM3OTFEX1JFR19URU1QX0FERFtpXVtqICogMl0pIDw8IDgpIHwKKwkJCQkJdzgzNzkxZF9yZWFkKGNsaWVudCwKKwkJCQkJVzgzNzkxRF9SRUdfVEVNUF9BRERbaV1baiAqIDIgKyAxXSk7CisJCQl9CisJCX0KKworCQkvKiBVcGRhdGUgdGhlIHJlYWx0aW1lIHN0YXR1cyAqLworCQlkYXRhLT5hbGFybXMgPQorCQkJdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfQUxBUk0xKSArCisJCQkodzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfQUxBUk0yKSA8PCA4KSArCisJCQkodzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfQUxBUk0zKSA8PCAxNik7CisKKwkJLyogVXBkYXRlIHRoZSBiZWVwIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gKi8KKwkJZGF0YS0+YmVlcF9tYXNrID0KKwkJCXc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ1RSTFswXSkgKworCQkJKHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ1RSTFsxXSkgPDwgOCkgKworCQkJKHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0JFRVBfQ1RSTFsyXSkgPDwgMTYpOworCisJCWRhdGEtPmJlZXBfZW5hYmxlID0KKwkJCShkYXRhLT5iZWVwX21hc2sgPj4gR0xPQkFMX0JFRVBfRU5BQkxFX1NISUZUKSAmIDB4MDE7CisKKwkJLyogVXBkYXRlIHRoZSBjcHUgdm9sdGFnZSBpbmZvcm1hdGlvbiAqLworCQlpID0gdzgzNzkxZF9yZWFkKGNsaWVudCwgVzgzNzkxRF9SRUdfVklEX0ZBTkRJVik7CisJCWRhdGEtPnZpZCA9IGkgJiAweDBmOworCQlkYXRhLT52aWQgfD0gKHc4Mzc5MWRfcmVhZChjbGllbnQsIFc4Mzc5MURfUkVHX0RJRF9WSUQ0KSAmIDB4MDEpCisJCQkJPDwgNDsKKworCQlkYXRhLT5sYXN0X3VwZGF0ZWQgPSBqaWZmaWVzOworCQlkYXRhLT52YWxpZCA9IDE7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisKKyNpZmRlZiBERUJVRworCXc4Mzc5MWRfcHJpbnRfZGVidWcoZGF0YSwgZGV2KTsKKyNlbmRpZgorCisJcmV0dXJuIGRhdGE7Cit9CisKKyNpZmRlZiBERUJVRworc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3QgdzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJaW50IGkgPSAwLCBqID0gMDsKKworCWRldl9kYmcoZGV2LCAiPT09PT09U3RhcnQgb2YgdzgzNzkxZCBkZWJ1ZyB2YWx1ZXM9PT09PT1cbiIpOworCWRldl9kYmcoZGV2LCAiJWQgc2V0IG9mIFZvbHRhZ2VzOiA9PT0+XG4iLCBOVU1CRVJfT0ZfVklOKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlVNQkVSX09GX1ZJTjsgaSsrKSB7CisJCWRldl9kYmcoZGV2LCAidmluWyVkXSBpczogICAgIDB4JTAyeFxuIiwgaSwgZGF0YS0+aW5baV0pOworCQlkZXZfZGJnKGRldiwgInZpblslZF0gbWluIGlzOiAweCUwMnhcbiIsIGksIGRhdGEtPmluX21pbltpXSk7CisJCWRldl9kYmcoZGV2LCAidmluWyVkXSBtYXggaXM6IDB4JTAyeFxuIiwgaSwgZGF0YS0+aW5fbWF4W2ldKTsKKwl9CisJZGV2X2RiZyhkZXYsICIlZCBzZXQgb2YgRmFuIENvdW50cy9EaXZpc29yczogPT09PlxuIiwgTlVNQkVSX09GX0ZBTklOKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlVNQkVSX09GX0ZBTklOOyBpKyspIHsKKwkJZGV2X2RiZyhkZXYsICJmYW5bJWRdIGlzOiAgICAgMHglMDJ4XG4iLCBpLCBkYXRhLT5mYW5baV0pOworCQlkZXZfZGJnKGRldiwgImZhblslZF0gbWluIGlzOiAweCUwMnhcbiIsIGksIGRhdGEtPmZhbl9taW5baV0pOworCQlkZXZfZGJnKGRldiwgImZhbl9kaXZbJWRdIGlzOiAweCUwMnhcbiIsIGksIGRhdGEtPmZhbl9kaXZbaV0pOworCX0KKworCS8qIHRlbXBlcmF0dXJlIG1hdGggaXMgc2lnbmVkLCBidXQgb25seSBwcmludCBvdXQgdGhlCisJICAgYml0cyB0aGF0IG1hdHRlciAqLworCWRldl9kYmcoZGV2LCAiJWQgc2V0IG9mIFRlbXBlcmF0dXJlczogPT09PlxuIiwgTlVNQkVSX09GX1RFTVBJTik7CisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQlkZXZfZGJnKGRldiwgInRlbXAxWyVkXSBpczogMHglMDJ4XG4iLCBpLCAodTgpIGRhdGEtPnRlbXAxW2ldKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgMzsgaisrKSB7CisJCQlkZXZfZGJnKGRldiwgInRlbXBfYWRkWyVkXVslZF0gaXM6IDB4JTA0eFxuIiwgaSwgaiwKKwkJCQkodTE2KSBkYXRhLT50ZW1wX2FkZFtpXVtqXSk7CisJCX0KKwl9CisKKwlkZXZfZGJnKGRldiwgIk1pc2MgSW5mb3JtYXRpb246ID09PT5cbiIpOworCWRldl9kYmcoZGV2LCAiYWxhcm0gaXM6ICAgICAweCUwOHhcbiIsIGRhdGEtPmFsYXJtcyk7CisJZGV2X2RiZyhkZXYsICJiZWVwX21hc2sgaXM6IDB4JTA4eFxuIiwgZGF0YS0+YmVlcF9tYXNrKTsKKwlkZXZfZGJnKGRldiwgImJlZXBfZW5hYmxlIGlzOiAlZFxuIiwgZGF0YS0+YmVlcF9lbmFibGUpOworCWRldl9kYmcoZGV2LCAidmlkIGlzOiAweCUwMnhcbiIsIGRhdGEtPnZpZCk7CisJZGV2X2RiZyhkZXYsICJ2cm0gaXM6IDB4JTAyeFxuIiwgZGF0YS0+dnJtKTsKKwlkZXZfZGJnKGRldiwgIj09PT09PT1FbmQgb2YgdzgzNzkxZCBkZWJ1ZyB2YWx1ZXM9PT09PT09PVxuIik7CisJZGV2X2RiZyhkZXYsICJcbiIpOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfdzgzNzkxZF9pbml0KHZvaWQpCit7CisJcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTFkX2RyaXZlcik7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX3c4Mzc5MWRfZXhpdCh2b2lkKQoreworCWkyY19kZWxfZHJpdmVyKCZ3ODM3OTFkX2RyaXZlcik7Cit9CisKK01PRFVMRV9BVVRIT1IoIkNoYXJsZXMgU3BpcmFraXMgPGJlemF1ckBnbWFpbC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlc4Mzc5MUQgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK21vZHVsZV9pbml0KHNlbnNvcnNfdzgzNzkxZF9pbml0KTsKK21vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkxZF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jIGIvZHJpdmVycy9od21vbi93ODM3OTJkLmMKaW5kZXggOTU4NjAyZS4uNGVmODg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTJkLmMKQEAgLTI1MCw4ICsyNTAsNiBAQAogCQkJOiAodmFsKSkgLyAxMDAwLCAwLCAweGZmKSkKICNkZWZpbmUgVEVNUF9BRERfVE9fUkVHX0xPVyh2YWwpCSgodmFsJTEwMDApID8gMHg4MCA6IDB4MDApCiAKLSNkZWZpbmUgUFdNX0ZST01fUkVHKHZhbCkJCSh2YWwpCi0jZGVmaW5lIFBXTV9UT19SRUcodmFsKQkJCShTRU5TT1JTX0xJTUlUKCh2YWwpLDAsMjU1KSkKICNkZWZpbmUgRElWX0ZST01fUkVHKHZhbCkJCSgxIDw8ICh2YWwpKQogCiBzdGF0aWMgaW5saW5lIHU4CkBAIC0yOTEsNyArMjg5LDYgQEAKIAl1OCBwd21bN107CQkvKiBXZSBvbmx5IGNvbnNpZGVyIHRoZSBmaXJzdCAzIHNldCBvZiBwd20sCiAJCQkJICAgYWx0aG91Z2ggNzkyIGNoaXAgaGFzIDcgc2V0IG9mIHB3bS4gKi8KIAl1OCBwd21lbmFibGVbM107Ci0JdTggcHdtX21vZGVbN107CQkvKiBpbmRpY2F0ZXMgUFdNIG9yIERDIG1vZGU6IDEtPlBXTTsgMC0+REMgKi8KIAl1MzIgYWxhcm1zOwkJLyogcmVhbHRpbWUgc3RhdHVzIHJlZ2lzdGVyIGVuY29kaW5nLGNvbWJpbmVkICovCiAJdTggY2hhc3NpczsJCS8qIENoYXNzaXMgc3RhdHVzICovCiAJdTggY2hhc3Npc19jbGVhcjsJLyogQ0xSX0NIUywgY2xlYXIgY2hhc3NpcyBpbnRydXNpb24gZGV0ZWN0aW9uICovCkBAIC0zNzUsOCArMzcyLDEwIEBACiAJdTMyIHZhbDsgXAogCSBcCiAJdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7IFwKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7IFwKIAlkYXRhLT5pbl8jI3JlZ1tucl0gPSBTRU5TT1JTX0xJTUlUKElOX1RPX1JFRyhuciwgdmFsKS80LCAwLCAyNTUpOyBcCiAJdzgzNzkyZF93cml0ZV92YWx1ZShjbGllbnQsIFc4Mzc5MkRfUkVHX0lOXyMjUkVHW25yXSwgZGF0YS0+aW5fIyNyZWdbbnJdKTsgXAorCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOyBcCiAJIFwKIAlyZXR1cm4gY291bnQ7IFwKIH0KQEAgLTQ0Myw5ICs0NDIsMTEgQEAKIAl1MzIgdmFsOwogCiAJdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCWRhdGEtPmZhbl9taW5bbnJdID0gRkFOX1RPX1JFRyh2YWwsIERJVl9GUk9NX1JFRyhkYXRhLT5mYW5fZGl2W25yXSkpOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19GQU5fTUlOW25yXSwKIAkJCQlkYXRhLT5mYW5fbWluW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC00NzgsNiArNDc5LDcgQEAKIAl1OCB0bXBfZmFuX2RpdjsKIAogCS8qIFNhdmUgZmFuX21pbiAqLworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAltaW4gPSBGQU5fRlJPTV9SRUcoZGF0YS0+ZmFuX21pbltucl0sCiAJCQkgICBESVZfRlJPTV9SRUcoZGF0YS0+ZmFuX2Rpdltucl0pKTsKIApAQCAtNDkzLDYgKzQ5NSw3IEBACiAJLyogUmVzdG9yZSBmYW5fbWluICovCiAJZGF0YS0+ZmFuX21pbltucl0gPSBGQU5fVE9fUkVHKG1pbiwgRElWX0ZST01fUkVHKGRhdGEtPmZhbl9kaXZbbnJdKSk7CiAJdzgzNzkyZF93cml0ZV92YWx1ZShjbGllbnQsIFc4Mzc5MkRfUkVHX0ZBTl9NSU5bbnJdLCBkYXRhLT5mYW5fbWluW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC01NDcsMTAgKzU1MCwxMSBAQAogCXMzMiB2YWw7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG9sKGJ1ZiwgTlVMTCwgMTApOwotCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCWRhdGEtPnRlbXAxW25yXSA9IFRFTVAxX1RPX1JFRyh2YWwpOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19URU1QMVtucl0sCiAJCWRhdGEtPnRlbXAxW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC01ODAsMTMgKzU4NCwxNCBAQAogCXMzMiB2YWw7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG9sKGJ1ZiwgTlVMTCwgMTApOwotCisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCWRhdGEtPnRlbXBfYWRkW25yXVtpbmRleF0gPSBURU1QX0FERF9UT19SRUdfSElHSCh2YWwpOwogCWRhdGEtPnRlbXBfYWRkW25yXVtpbmRleCsxXSA9IFRFTVBfQUREX1RPX1JFR19MT1codmFsKTsKIAl3ODM3OTJkX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfVEVNUF9BRERbbnJdW2luZGV4XSwKIAkJZGF0YS0+dGVtcF9hZGRbbnJdW2luZGV4XSk7CiAJdzgzNzkyZF93cml0ZV92YWx1ZShjbGllbnQsIFc4Mzc5MkRfUkVHX1RFTVBfQUREW25yXVtpbmRleCsxXSwKIAkJZGF0YS0+dGVtcF9hZGRbbnJdW2luZGV4KzFdKTsKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTYyNyw3ICs2MzIsNyBAQAogCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vuc29yX2F0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoYXR0cik7CiAJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OwogCXN0cnVjdCB3ODM3OTJkX2RhdGEgKmRhdGEgPSB3ODM3OTJkX3VwZGF0ZV9kZXZpY2UoZGV2KTsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIChsb25nKSBQV01fRlJPTV9SRUcoZGF0YS0+cHdtW25yLTFdKSk7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIChkYXRhLT5wd21bbnJdICYgMHgwZikgPDwgNCk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90CkBAIC02NTksMTQgKzY2NCwxNiBAQAogCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKIHsKIAlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOwotCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleCAtIDE7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OwogCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CiAJc3RydWN0IHc4Mzc5MmRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwotCXUzMiB2YWw7CisJdTggdmFsID0gU0VOU09SU19MSU1JVChzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKSwgMCwgMjU1KSA+PiA0OwogCi0JdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7Ci0JZGF0YS0+cHdtW25yXSA9IFBXTV9UT19SRUcodmFsKTsKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CisJdmFsIHw9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsIFc4Mzc5MkRfUkVHX1BXTVtucl0pICYgMHhmMDsKKwlkYXRhLT5wd21bbnJdID0gdmFsOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19QV01bbnJdLCBkYXRhLT5wd21bbnJdKTsKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTY4Myw2ICs2OTAsMTAgQEAKIAl1OCBmYW5fY2ZnX3RtcCwgY2ZnMV90bXAsIGNmZzJfdG1wLCBjZmczX3RtcCwgY2ZnNF90bXA7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKKwlpZiAodmFsIDwgMSB8fCB2YWwgPiAzKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlzd2l0Y2ggKHZhbCkgewogCWNhc2UgMToKIAkJZGF0YS0+cHdtZW5hYmxlW25yXSA9IDA7IC8qIG1hbnVhbCBtb2RlICovCkBAIC02OTMsOCArNzA0LDYgQEAKIAljYXNlIDM6CiAJCWRhdGEtPnB3bWVuYWJsZVtucl0gPSAxOyAvKiB0aGVybWFsIGNydWlzZS9TbWFydCBGYW4gSSAqLwogCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJY2ZnMV90bXAgPSBkYXRhLT5wd21lbmFibGVbMF07CiAJY2ZnMl90bXAgPSAoZGF0YS0+cHdtZW5hYmxlWzFdKSA8PCAyOwpAQCAtNzAyLDE0ICs3MTEsMTUgQEAKIAljZmc0X3RtcCA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsVzgzNzkyRF9SRUdfRkFOX0NGRykgJiAweGMwOwogCWZhbl9jZmdfdG1wID0gKChjZmc0X3RtcCB8IGNmZzNfdG1wKSB8IGNmZzJfdG1wKSB8IGNmZzFfdG1wOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19GQU5fQ0ZHLCBmYW5fY2ZnX3RtcCk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX3B3bVtdID0gewotCVNFTlNPUl9BVFRSKHB3bTEsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X3B3bSwgc3RvcmVfcHdtLCAxKSwKLQlTRU5TT1JfQVRUUihwd20yLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19wd20sIHN0b3JlX3B3bSwgMiksCi0JU0VOU09SX0FUVFIocHdtMywgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfcHdtLCBzdG9yZV9wd20sIDMpLAorCVNFTlNPUl9BVFRSKHB3bTEsIFNfSVdVU1IgfCBTX0lSVUdPLCBzaG93X3B3bSwgc3RvcmVfcHdtLCAwKSwKKwlTRU5TT1JfQVRUUihwd20yLCBTX0lXVVNSIHwgU19JUlVHTywgc2hvd19wd20sIHN0b3JlX3B3bSwgMSksCisJU0VOU09SX0FUVFIocHdtMywgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfcHdtLCBzdG9yZV9wd20sIDIpLAogfTsKIHN0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX3B3bV9lbmFibGVbXSA9IHsKIAlTRU5TT1JfQVRUUihwd20xX2VuYWJsZSwgU19JV1VTUiB8IFNfSVJVR08sCkBAIC03MjgsNyArNzM4LDcgQEAKIAlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOwogCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleDsKIAlzdHJ1Y3QgdzgzNzkyZF9kYXRhICpkYXRhID0gdzgzNzkyZF91cGRhdGVfZGV2aWNlKGRldik7Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGRhdGEtPnB3bV9tb2RlW25yLTFdKTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgZGF0YS0+cHdtW25yXSA+PiA3KTsKIH0KIAogc3RhdGljIHNzaXplX3QKQEAgLTczNiwyOSArNzQ2LDM1IEBACiAJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKIHsKIAlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKnNlbnNvcl9hdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGF0dHIpOwotCWludCBuciA9IHNlbnNvcl9hdHRyLT5pbmRleCAtIDE7CisJaW50IG5yID0gc2Vuc29yX2F0dHItPmluZGV4OwogCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7CiAJc3RydWN0IHc4Mzc5MmRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwogCXUzMiB2YWw7Ci0JdTggcHdtX21vZGVfbWFzayA9IDA7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKLQlkYXRhLT5wd21fbW9kZVtucl0gPSBTRU5TT1JTX0xJTUlUKHZhbCwgMCwgMSk7Ci0JcHdtX21vZGVfbWFzayA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsCi0JCVc4Mzc5MkRfUkVHX1BXTVtucl0pICYgMHg3ZjsKLQl3ODM3OTJkX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfUFdNW25yXSwKLQkJKChkYXRhLT5wd21fbW9kZVtucl0pIDw8IDcpIHwgcHdtX21vZGVfbWFzayk7CisJaWYgKHZhbCAhPSAwICYmIHZhbCAhPSAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKKwlkYXRhLT5wd21bbnJdID0gdzgzNzkyZF9yZWFkX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfUFdNW25yXSk7CisJaWYgKHZhbCkgewkJCS8qIFBXTSBtb2RlICovCisJCWRhdGEtPnB3bVtucl0gfD0gMHg4MDsKKwl9IGVsc2UgewkJCS8qIERDIG1vZGUgKi8KKwkJZGF0YS0+cHdtW25yXSAmPSAweDdmOworCX0KKwl3ODM3OTJkX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfUFdNW25yXSwgZGF0YS0+cHdtW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgc2RhX3B3bV9tb2RlW10gPSB7CiAJU0VOU09SX0FUVFIocHdtMV9tb2RlLCBTX0lXVVNSIHwgU19JUlVHTywKLQkJICAgIHNob3dfcHdtX21vZGUsIHN0b3JlX3B3bV9tb2RlLCAxKSwKKwkJICAgIHNob3dfcHdtX21vZGUsIHN0b3JlX3B3bV9tb2RlLCAwKSwKIAlTRU5TT1JfQVRUUihwd20yX21vZGUsIFNfSVdVU1IgfCBTX0lSVUdPLAotCQkgICAgc2hvd19wd21fbW9kZSwgc3RvcmVfcHdtX21vZGUsIDIpLAorCQkgICAgc2hvd19wd21fbW9kZSwgc3RvcmVfcHdtX21vZGUsIDEpLAogCVNFTlNPUl9BVFRSKHB3bTNfbW9kZSwgU19JV1VTUiB8IFNfSVJVR08sCi0JCSAgICBzaG93X3B3bV9tb2RlLCBzdG9yZV9wd21fbW9kZSwgMyksCisJCSAgICBzaG93X3B3bV9tb2RlLCBzdG9yZV9wd21fbW9kZSwgMiksCiB9OwogCiAKQEAgLTc4OSwxMiArODA1LDEzIEBACiAJdTggdGVtcDEgPSAwLCB0ZW1wMiA9IDA7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKLQorCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAlkYXRhLT5jaGFzc2lzX2NsZWFyID0gU0VOU09SU19MSU1JVCh2YWwsIDAgLDEpOwogCXRlbXAxID0gKChkYXRhLT5jaGFzc2lzX2NsZWFyKSA8PCA3KSAmIDB4ODA7CiAJdGVtcDIgPSB3ODM3OTJkX3JlYWRfdmFsdWUoY2xpZW50LAogCQlXODM3OTJEX1JFR19DSEFTU0lTX0NMUikgJiAweDdmOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19DSEFTU0lTX0NMUiwgdGVtcDEgfCB0ZW1wMik7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC04MjcsMTAgKzg0NCwxMiBAQAogCXZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOwogCXRhcmdldF90bXAgPSB2YWw7CiAJdGFyZ2V0X3RtcCA9IHRhcmdldF90bXAgJiAweDdmOworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAl0YXJnZXRfbWFzayA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsIFc4Mzc5MkRfUkVHX1RIRVJNQUxbbnJdKSAmIDB4ODA7CiAJZGF0YS0+dGhlcm1hbF9jcnVpc2VbbnJdID0gU0VOU09SU19MSU1JVCh0YXJnZXRfdG1wLCAwLCAyNTUpOwogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19USEVSTUFMW25yXSwKIAkJKGRhdGEtPnRoZXJtYWxfY3J1aXNlW25yXSkgfCB0YXJnZXRfbWFzayk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC04NjcsNiArODg2LDcgQEAKIAl1OCB0b2xfdG1wLCB0b2xfbWFzazsKIAogCXZhbCA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOworCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAl0b2xfbWFzayA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsCiAJCVc4Mzc5MkRfUkVHX1RPTEVSQU5DRVtucl0pICYgKChuciA9PSAxKSA/IDB4MGYgOiAweGYwKTsKIAl0b2xfdG1wID0gU0VOU09SU19MSU1JVCh2YWwsIDAsIDE1KTsKQEAgLTg3Nyw2ICs4OTcsNyBAQAogCX0KIAl3ODM3OTJkX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfVE9MRVJBTkNFW25yXSwKIAkJdG9sX21hc2sgfCB0b2xfdG1wKTsKKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTkxNSwxMSArOTM2LDEzIEBACiAJdTggbWFza190bXAgPSAwOwogCiAJdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCWRhdGEtPnNmMl9wb2ludHNbaW5kZXhdW25yXSA9IFNFTlNPUlNfTElNSVQodmFsLCAwLCAxMjcpOwogCW1hc2tfdG1wID0gdzgzNzkyZF9yZWFkX3ZhbHVlKGNsaWVudCwKIAkJCQkJVzgzNzkyRF9SRUdfUE9JTlRTW2luZGV4XVtucl0pICYgMHg4MDsKIAl3ODM3OTJkX3dyaXRlX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfUE9JTlRTW2luZGV4XVtucl0sCiAJCW1hc2tfdG1wfGRhdGEtPnNmMl9wb2ludHNbaW5kZXhdW25yXSk7CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC05NzksNiArMTAwMiw3IEBACiAJdTggbWFza190bXA9MCwgbGV2ZWxfdG1wPTA7CiAKIAl2YWwgPSBzaW1wbGVfc3RydG91bChidWYsIE5VTEwsIDEwKTsKKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAJZGF0YS0+c2YyX2xldmVsc1tpbmRleF1bbnJdID0gU0VOU09SU19MSU1JVCgodmFsICogMTUpIC8gMTAwLCAwLCAxNSk7CiAJbWFza190bXAgPSB3ODM3OTJkX3JlYWRfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19MRVZFTFNbaW5kZXhdW25yXSkKIAkJJiAoKG5yPT0zKSA/IDB4ZjAgOiAweDBmKTsKQEAgLTk4OCw2ICsxMDEyLDcgQEAKIAkJbGV2ZWxfdG1wID0gZGF0YS0+c2YyX2xldmVsc1tpbmRleF1bbnJdIDw8IDQ7CiAJfQogCXc4Mzc5MmRfd3JpdGVfdmFsdWUoY2xpZW50LCBXODM3OTJEX1JFR19MRVZFTFNbaW5kZXhdW25yXSwgbGV2ZWxfdG1wIHwgbWFza190bXApOworCW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwogCiAJcmV0dXJuIGNvdW50OwogfQpAQCAtMTM3Myw3ICsxMzk4LDcgQEAKIAlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOwogCXN0cnVjdCB3ODM3OTJkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAlpbnQgaSwgajsKLQl1OCByZWdfYXJyYXlfdG1wWzRdLCBwd21fYXJyYXlfdG1wWzddLCByZWdfdG1wOworCXU4IHJlZ19hcnJheV90bXBbNF0sIHJlZ190bXA7CiAKIAltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7CiAKQEAgLTE0MDIsMTAgKzE0MjcsOCBAQAogCQkJZGF0YS0+ZmFuX21pbltpXSA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsCiAJCQkJCQlXODM3OTJEX1JFR19GQU5fTUlOW2ldKTsKIAkJCS8qIFVwZGF0ZSB0aGUgUFdNL0RDIFZhbHVlIGFuZCBQV00vREMgZmxhZyAqLwotCQkJcHdtX2FycmF5X3RtcFtpXSA9IHc4Mzc5MmRfcmVhZF92YWx1ZShjbGllbnQsCisJCQlkYXRhLT5wd21baV0gPSB3ODM3OTJkX3JlYWRfdmFsdWUoY2xpZW50LAogCQkJCQkJVzgzNzkyRF9SRUdfUFdNW2ldKTsKLQkJCWRhdGEtPnB3bVtpXSA9IHB3bV9hcnJheV90bXBbaV0gJiAweDBmOwotCQkJZGF0YS0+cHdtX21vZGVbaV0gPSBwd21fYXJyYXlfdG1wW2ldID4+IDc7CiAJCX0KIAogCQlyZWdfdG1wID0gdzgzNzkyZF9yZWFkX3ZhbHVlKGNsaWVudCwgVzgzNzkyRF9SRUdfRkFOX0NGRyk7CkBAIC0xNTEzLDcgKzE1MzYsNiBAQAogCQlkZXZfZGJnKGRldiwgImZhblslZF0gaXM6IDB4JXhcbiIsIGksIGRhdGEtPmZhbltpXSk7CiAJCWRldl9kYmcoZGV2LCAiZmFuWyVkXSBtaW4gaXM6IDB4JXhcbiIsIGksIGRhdGEtPmZhbl9taW5baV0pOwogCQlkZXZfZGJnKGRldiwgInB3bVslZF0gICAgIGlzOiAweCV4XG4iLCBpLCBkYXRhLT5wd21baV0pOwotCQlkZXZfZGJnKGRldiwgInB3bV9tb2RlWyVkXSBpczogMHgleFxuIiwgaSwgZGF0YS0+cHdtX21vZGVbaV0pOwogCX0KIAlkZXZfZGJnKGRldiwgIjMgc2V0IG9mIFRlbXBlcmF0dXJlczogPT09PT0+XG4iKTsKIAlmb3IgKGk9MDsgaTwzOyBpKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKaW5kZXggZDZkNDQ5NC4uODg0MzIwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKQEAgLTE2Myw3ICsxNjMsNyBAQAogCSAgSTJDIGJ1cy4KIAogY29uZmlnIEkyQ19QSUlYNAotCXRyaXN0YXRlICJJbnRlbCBQSUlYNCIKKwl0cmlzdGF0ZSAiSW50ZWwgUElJWDQgYW5kIGNvbXBhdGlibGUgKEFUSS9TZXJ2ZXJ3b3Jrcy9Ccm9hZGNvbS9TTVNDKSIKIAlkZXBlbmRzIG9uIEkyQyAmJiBQQ0kKIAloZWxwCiAJICBJZiB5b3Ugc2F5IHllcyB0byB0aGlzIG9wdGlvbiwgc3VwcG9ydCB3aWxsIGJlIGluY2x1ZGVkIGZvciB0aGUgSW50ZWwKQEAgLTE3Miw2ICsxNzIsOSBAQAogCSAgb2YgQnJvYWRjb20pOgogCSAgICBJbnRlbCBQSUlYNAogCSAgICBJbnRlbCA0NDBNWAorCSAgICBBVEkgSVhQMjAwCisJICAgIEFUSSBJWFAzMDAKKwkgICAgQVRJIElYUDQwMAogCSAgICBTZXJ2ZXJ3b3JrcyBPU0I0CiAJICAgIFNlcnZlcndvcmtzIENTQjUKIAkgICAgU2VydmVyd29ya3MgQ1NCNgpAQCAtMjUyLDEyICsyNTUsMTIgQEAKIAkgIHdpbGwgYmUgY2FsbGVkIGkyYy1wb3dlcm1hYy4KIAogY29uZmlnIEkyQ19NUEMKLQl0cmlzdGF0ZSAiTVBDMTA3LzgyNHgvODV4eC81Mnh4IgorCXRyaXN0YXRlICJNUEMxMDcvODI0eC84NXh4LzUyeHgvODZ4eCIKIAlkZXBlbmRzIG9uIEkyQyAmJiBQUEMzMgogCWhlbHAKIAkgIElmIHlvdSBzYXkgeWVzIHRvIHRoaXMgb3B0aW9uLCBzdXBwb3J0IHdpbGwgYmUgaW5jbHVkZWQgZm9yIHRoZQogCSAgYnVpbHQtaW4gSTJDIGludGVyZmFjZSBvbiB0aGUgTVBDMTA3L1RzaTEwNy9NUEM4MjQwL01QQzgyNDUgYW5kCi0JICBNUEM4NXh4IGZhbWlseSBwcm9jZXNzb3JzLiBUaGUgZHJpdmVyIG1heSBhbHNvIHdvcmsgb24gNTJ4eAorCSAgTVBDODV4eC9NUEM4NjQxIGZhbWlseSBwcm9jZXNzb3JzLiBUaGUgZHJpdmVyIG1heSBhbHNvIHdvcmsgb24gNTJ4eAogCSAgZmFtaWx5IHByb2Nlc3NvcnMsIHRob3VnaCBpbnRlcnJ1cHRzIGFyZSBrbm93biBub3QgdG8gd29yay4KIAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQpAQCAtMjczLDYgKzI3NiwxNyBAQAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgaTJjLW5mb3JjZTIuCiAKK2NvbmZpZyBJMkNfT0NPUkVTCisJdHJpc3RhdGUgIk9wZW5Db3JlcyBJMkMgQ29udHJvbGxlciIKKwlkZXBlbmRzIG9uIEkyQyAmJiBFWFBFUklNRU5UQUwKKwloZWxwCisJICBJZiB5b3Ugc2F5IHllcyB0byB0aGlzIG9wdGlvbiwgc3VwcG9ydCB3aWxsIGJlIGluY2x1ZGVkIGZvciB0aGUKKwkgIE9wZW5Db3JlcyBJMkMgY29udHJvbGxlci4gRm9yIGRldGFpbHMgc2VlCisJICBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvcHJvamVjdHMuY2dpL3dlYi9pMmMvb3ZlcnZpZXcKKworCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgaTJjLW9jb3Jlcy4KKwogY29uZmlnIEkyQ19QQVJQT1JUCiAJdHJpc3RhdGUgIlBhcmFsbGVsIHBvcnQgYWRhcHRlciIKIAlkZXBlbmRzIG9uIEkyQyAmJiBQQVJQT1JUCkBAIC01MDAsNiArNTE0LDcgQEAKIAl0cmlzdGF0ZSAiUENBOTU2NCBvbiBhbiBJU0EgYnVzIgogCWRlcGVuZHMgb24gSTJDCiAJc2VsZWN0IEkyQ19BTEdPUENBCisJZGVmYXVsdCBuCiAJaGVscAogCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSVNBIGJvYXJkcyB1c2luZyB0aGUgUGhpbGlwcyBQQ0EgOTU2NAogCSAgUGFyYWxsZWwgYnVzIHRvIEkyQyBidXMgY29udHJvbGxlcgpAQCAtNTA3LDYgKzUyMiwxMSBAQAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgaTJjLXBjYS1pc2EuCiAKKwkgIFRoaXMgZGV2aWNlIGlzIGFsbW9zdCB1bmRldGVjdGFibGUgYW5kIHVzaW5nIHRoaXMgZHJpdmVyIG9uIGEKKwkgIHN5c3RlbSB3aGljaCBkb2Vzbid0IGhhdmUgdGhpcyBkZXZpY2Ugd2lsbCByZXN1bHQgaW4gbG9uZworCSAgZGVsYXlzIHdoZW4gSTJDL1NNQnVzIGNoaXAgZHJpdmVycyBhcmUgbG9hZGVkIChlLmcuIGF0IGJvb3QKKwkgIHRpbWUpLiAgSWYgdW5zdXJlLCBzYXkgTi4KKwogY29uZmlnIEkyQ19NVjY0WFhYCiAJdHJpc3RhdGUgIk1hcnZlbGwgbXY2NHh4eCBJMkMgQ29udHJvbGxlciIKIAlkZXBlbmRzIG9uIEkyQyAmJiBNVjY0WDYwICYmIEVYUEVSSU1FTlRBTApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlIGIvZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlCmluZGV4IGI0NDgzMWQuLmFjNTZkZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUKQEAgLTIzLDYgKzIzLDcgQEAKIG9iai0kKENPTkZJR19JMkNfTVBDKQkJKz0gaTJjLW1wYy5vCiBvYmotJChDT05GSUdfSTJDX01WNjRYWFgpCSs9IGkyYy1tdjY0eHh4Lm8KIG9iai0kKENPTkZJR19JMkNfTkZPUkNFMikJKz0gaTJjLW5mb3JjZTIubworb2JqLSQoQ09ORklHX0kyQ19PQ09SRVMpCSs9IGkyYy1vY29yZXMubwogb2JqLSQoQ09ORklHX0kyQ19QQVJQT1JUKQkrPSBpMmMtcGFycG9ydC5vCiBvYmotJChDT05GSUdfSTJDX1BBUlBPUlRfTElHSFQpCSs9IGkyYy1wYXJwb3J0LWxpZ2h0Lm8KIG9iai0kKENPTkZJR19JMkNfUENBX0lTQSkJKz0gaTJjLXBjYS1pc2EubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWk4MDEuYwppbmRleCBkZmNhNzQ5Li4zZTBkMDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWk4MDEuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWk4MDEuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgaTgwMS5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKKyAgICBpMmMtaTgwMS5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKICAgICAgICAgICAgICAgbW9uaXRvcmluZwogICAgIENvcHlyaWdodCAoYykgMTk5OCAtIDIwMDIgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCiAgICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwgYW5kIE1hcmsgRC4gU3R1ZGViYWtlcgpAQCAtMzYsNyArMzYsNyBAQAogICAgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwgdmVyc2lvbnMgb2YgSW50ZWwncyBJL08gQ29udHJvbGxlciBIdWJzIChJQ0gpLgogICAgIEZvciBTTUJ1cyBzdXBwb3J0LCB0aGV5IGFyZSBzaW1pbGFyIHRvIHRoZSBQSUlYNCBhbmQgYXJlIHBhcnQKICAgICBvZiBJbnRlbCdzICc4MTAnIGFuZCBvdGhlciBjaGlwc2V0cy4KLSAgICBTZWUgdGhlIGRvYy9idXNzZXMvaTJjLWk4MDEgZmlsZSBmb3IgZGV0YWlscy4KKyAgICBTZWUgdGhlIGZpbGUgRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1pODAxIGZvciBkZXRhaWxzLgogICAgIEkyQyBCbG9jayBSZWFkIGFuZCBQcm9jZXNzIENhbGwgYXJlIG5vdCBzdXBwb3J0ZWQuCiAqLwogCkBAIC02Niw5ICs2Niw4IEBACiAjZGVmaW5lIFNNQkFVWENUTAkoMTMgKyBpODAxX3NtYmEpCS8qIElDSDQgb25seSAqLwogCiAvKiBQQ0kgQWRkcmVzcyBDb25zdGFudHMgKi8KLSNkZWZpbmUgU01CQkEJCTB4MDIwCisjZGVmaW5lIFNNQkJBUgkJNAogI2RlZmluZSBTTUJIU1RDRkcJMHgwNDAKLSNkZWZpbmUgU01CUkVWCQkweDAwOAogCiAvKiBIb3N0IGNvbmZpZ3VyYXRpb24gYml0cyBmb3IgU01CSFNUQ0ZHICovCiAjZGVmaW5lIFNNQkhTVENGR19IU1RfRU4JMQpAQCAtOTIsOTIgKzkxLDE2IEBACiAjZGVmaW5lIEk4MDFfU1RBUlQJCTB4NDAKICNkZWZpbmUgSTgwMV9QRUNfRU4JCTB4ODAJLyogSUNINCBvbmx5ICovCiAKLS8qIGluc21vZCBwYXJhbWV0ZXJzICovCi0KLS8qIElmIGZvcmNlX2FkZHIgaXMgc2V0IHRvIGFueXRoaW5nIGRpZmZlcmVudCBmcm9tIDAsIHdlIGZvcmNpYmx5IGVuYWJsZQotICAgdGhlIEk4MDEgYXQgdGhlIGdpdmVuIGFkZHJlc3MuIFZFUlkgREFOR0VST1VTISAqLwotc3RhdGljIHUxNiBmb3JjZV9hZGRyOwotbW9kdWxlX3BhcmFtKGZvcmNlX2FkZHIsIHVzaG9ydCwgMCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGZvcmNlX2FkZHIsCi0JCSAiRm9yY2libHkgZW5hYmxlIHRoZSBJODAxIGF0IHRoZSBnaXZlbiBhZGRyZXNzLiAiCi0JCSAiRVhUUkVNRUxZIERBTkdFUk9VUyEiKTsKIAogc3RhdGljIGludCBpODAxX3RyYW5zYWN0aW9uKHZvaWQpOwogc3RhdGljIGludCBpODAxX2Jsb2NrX3RyYW5zYWN0aW9uKHVuaW9uIGkyY19zbWJ1c19kYXRhICpkYXRhLCBjaGFyIHJlYWRfd3JpdGUsCiAJCQkJICBpbnQgY29tbWFuZCwgaW50IGh3cGVjKTsKIAotc3RhdGljIHVuc2lnbmVkIHNob3J0IGk4MDFfc21iYTsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGk4MDFfc21iYTsKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpODAxX2RyaXZlcjsKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldiAqSTgwMV9kZXY7CiBzdGF0aWMgaW50IGlzaWNoNDsKIAotc3RhdGljIGludCBpODAxX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCi17Ci0JaW50IGVycm9yX3JldHVybiA9IDA7Ci0JdW5zaWduZWQgY2hhciB0ZW1wOwotCi0JLyogTm90ZTogd2Uga2VlcCBvbiBzZWFyY2hpbmcgdW50aWwgd2UgaGF2ZSBmb3VuZCAnZnVuY3Rpb24gMycgKi8KLQlpZihQQ0lfRlVOQyhkZXYtPmRldmZuKSAhPSAzKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCUk4MDFfZGV2ID0gZGV2OwotCWlmICgoZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF84MjgwMURCXzMpIHx8Ci0JICAgIChkZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODAxRUJfMykgfHwKLQkgICAgKGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfRVNCXzQpKQotCQlpc2ljaDQgPSAxOwotCWVsc2UKLQkJaXNpY2g0ID0gMDsKLQotCS8qIERldGVybWluZSB0aGUgYWRkcmVzcyBvZiB0aGUgU01CdXMgYXJlYXMgKi8KLQlpZiAoZm9yY2VfYWRkcikgewotCQlpODAxX3NtYmEgPSBmb3JjZV9hZGRyICYgMHhmZmYwOwotCX0gZWxzZSB7Ci0JCXBjaV9yZWFkX2NvbmZpZ193b3JkKEk4MDFfZGV2LCBTTUJCQSwgJmk4MDFfc21iYSk7Ci0JCWk4MDFfc21iYSAmPSAweGZmZjA7Ci0JCWlmKGk4MDFfc21iYSA9PSAwKSB7Ci0JCQlkZXZfZXJyKCZkZXYtPmRldiwgIlNNQiBiYXNlIGFkZHJlc3MgdW5pbml0aWFsaXplZCAiCi0JCQkJIi0gdXBncmFkZSBCSU9TIG9yIHVzZSBmb3JjZV9hZGRyPTB4YWRkclxuIik7Ci0JCQlyZXR1cm4gLUVOT0RFVjsKLQkJfQotCX0KLQotCWlmICghcmVxdWVzdF9yZWdpb24oaTgwMV9zbWJhLCAoaXNpY2g0ID8gMTYgOiA4KSwgaTgwMV9kcml2ZXIubmFtZSkpIHsKLQkJZGV2X2VycigmZGV2LT5kZXYsICJJODAxX3NtYiByZWdpb24gMHgleCBhbHJlYWR5IGluIHVzZSFcbiIsCi0JCQlpODAxX3NtYmEpOwotCQllcnJvcl9yZXR1cm4gPSAtRUJVU1k7Ci0JCWdvdG8gRU5EOwotCX0KLQotCXBjaV9yZWFkX2NvbmZpZ19ieXRlKEk4MDFfZGV2LCBTTUJIU1RDRkcsICZ0ZW1wKTsKLQl0ZW1wICY9IH5TTUJIU1RDRkdfSTJDX0VOOwkvKiBTTUJ1cyB0aW1pbmcgKi8KLQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoSTgwMV9kZXYsIFNNQkhTVENGRywgdGVtcCk7Ci0KLQkvKiBJZiBmb3JjZV9hZGRyIGlzIHNldCwgd2UgcHJvZ3JhbSB0aGUgbmV3IGFkZHJlc3MgaGVyZS4gSnVzdCB0byBtYWtlCi0JICAgc3VyZSwgd2UgZGlzYWJsZSB0aGUgZGV2aWNlIGZpcnN0LiAqLwotCWlmIChmb3JjZV9hZGRyKSB7Ci0JCXBjaV93cml0ZV9jb25maWdfYnl0ZShJODAxX2RldiwgU01CSFNUQ0ZHLCB0ZW1wICYgMHhmZSk7Ci0JCXBjaV93cml0ZV9jb25maWdfd29yZChJODAxX2RldiwgU01CQkEsIGk4MDFfc21iYSk7Ci0JCXBjaV93cml0ZV9jb25maWdfYnl0ZShJODAxX2RldiwgU01CSFNUQ0ZHLCB0ZW1wIHwgMHgwMSk7Ci0JCWRldl93YXJuKCZkZXYtPmRldiwgIldBUk5JTkc6IEk4MDEgU01CdXMgaW50ZXJmYWNlIHNldCB0byAiCi0JCQkibmV3IGFkZHJlc3MgJTA0eCFcbiIsIGk4MDFfc21iYSk7Ci0JfSBlbHNlIGlmICgodGVtcCAmIDEpID09IDApIHsKLQkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKEk4MDFfZGV2LCBTTUJIU1RDRkcsIHRlbXAgfCAxKTsKLQkJZGV2X3dhcm4oJmRldi0+ZGV2LCAiZW5hYmxpbmcgU01CdXMgZGV2aWNlXG4iKTsKLQl9Ci0KLQlpZiAodGVtcCAmIDB4MDIpCi0JCWRldl9kYmcoJmRldi0+ZGV2LCAiSTgwMSB1c2luZyBJbnRlcnJ1cHQgU01JIyBmb3IgU01CdXMuXG4iKTsKLQllbHNlCi0JCWRldl9kYmcoJmRldi0+ZGV2LCAiSTgwMSB1c2luZyBQQ0kgSW50ZXJydXB0IGZvciBTTUJ1cy5cbiIpOwotCi0JcGNpX3JlYWRfY29uZmlnX2J5dGUoSTgwMV9kZXYsIFNNQlJFViwgJnRlbXApOwotCWRldl9kYmcoJmRldi0+ZGV2LCAiU01CUkVWID0gMHglWFxuIiwgdGVtcCk7Ci0JZGV2X2RiZygmZGV2LT5kZXYsICJJODAxX3NtYmEgPSAweCVYXG4iLCBpODAxX3NtYmEpOwotCi1FTkQ6Ci0JcmV0dXJuIGVycm9yX3JldHVybjsKLX0KLQogc3RhdGljIGludCBpODAxX3RyYW5zYWN0aW9uKHZvaWQpCiB7CiAJaW50IHRlbXA7CkBAIC0zMzQsOCArMjU3LDggQEAKIAkJLyogV2Ugd2lsbCBhbHdheXMgd2FpdCBmb3IgYSBmcmFjdGlvbiBvZiBhIHNlY29uZCEgKi8KIAkJdGltZW91dCA9IDA7CiAJCWRvIHsKLQkJCXRlbXAgPSBpbmJfcChTTUJIU1RTVFMpOwogCQkJbXNsZWVwKDEpOworCQkJdGVtcCA9IGluYl9wKFNNQkhTVFNUUyk7CiAJCX0KIAkJICAgIHdoaWxlICgoISh0ZW1wICYgMHg4MCkpCiAJCQkgICAmJiAodGltZW91dCsrIDwgTUFYX1RJTUVPVVQpKTsKQEAgLTM5Myw4ICszMTYsOCBAQAogCQkvKiB3YWl0IGZvciBJTlRSIGJpdCBhcyBhZHZpc2VkIGJ5IEludGVsICovCiAJCXRpbWVvdXQgPSAwOwogCQlkbyB7Ci0JCQl0ZW1wID0gaW5iX3AoU01CSFNUU1RTKTsKIAkJCW1zbGVlcCgxKTsKKwkJCXRlbXAgPSBpbmJfcChTTUJIU1RTVFMpOwogCQl9IHdoaWxlICgoISh0ZW1wICYgMHgwMikpCiAJCQkgICAmJiAodGltZW91dCsrIDwgTUFYX1RJTUVPVVQpKTsKIApAQCAtNTQxLDI1ICs0NjQsNzYgQEAKIAogc3RhdGljIGludCBfX2RldmluaXQgaTgwMV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCiB7CisJdW5zaWduZWQgY2hhciB0ZW1wOworCWludCBlcnI7CiAKLQlpZiAoaTgwMV9zZXR1cChkZXYpKSB7Ci0JCWRldl93YXJuKCZkZXYtPmRldiwKLQkJCSJJODAxIG5vdCBkZXRlY3RlZCwgbW9kdWxlIG5vdCBpbnNlcnRlZC5cbiIpOwotCQlyZXR1cm4gLUVOT0RFVjsKKwlJODAxX2RldiA9IGRldjsKKwlpZiAoKGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4MDFEQl8zKSB8fAorCSAgICAoZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF84MjgwMUVCXzMpIHx8CisJICAgIChkZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX0VTQl80KSkKKwkJaXNpY2g0ID0gMTsKKwllbHNlCisJCWlzaWNoNCA9IDA7CisKKwllcnIgPSBwY2lfZW5hYmxlX2RldmljZShkZXYpOworCWlmIChlcnIpIHsKKwkJZGV2X2VycigmZGV2LT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIFNNQnVzIFBDSSBkZXZpY2UgKCVkKVxuIiwKKwkJCWVycik7CisJCWdvdG8gZXhpdDsKIAl9CiAKKwkvKiBEZXRlcm1pbmUgdGhlIGFkZHJlc3Mgb2YgdGhlIFNNQnVzIGFyZWEgKi8KKwlpODAxX3NtYmEgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBTTUJCQVIpOworCWlmICghaTgwMV9zbWJhKSB7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAiU01CdXMgYmFzZSBhZGRyZXNzIHVuaW5pdGlhbGl6ZWQsICIKKwkJCSJ1cGdyYWRlIEJJT1NcbiIpOworCQllcnIgPSAtRU5PREVWOworCQlnb3RvIGV4aXRfZGlzYWJsZTsKKwl9CisKKwllcnIgPSBwY2lfcmVxdWVzdF9yZWdpb24oZGV2LCBTTUJCQVIsIGk4MDFfZHJpdmVyLm5hbWUpOworCWlmIChlcnIpIHsKKwkJZGV2X2VycigmZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBTTUJ1cyByZWdpb24gIgorCQkJIjB4JWx4LTB4JWx4XG4iLCBpODAxX3NtYmEsCisJCQlwY2lfcmVzb3VyY2VfZW5kKGRldiwgU01CQkFSKSk7CisJCWdvdG8gZXhpdF9kaXNhYmxlOworCX0KKworCXBjaV9yZWFkX2NvbmZpZ19ieXRlKEk4MDFfZGV2LCBTTUJIU1RDRkcsICZ0ZW1wKTsKKwl0ZW1wICY9IH5TTUJIU1RDRkdfSTJDX0VOOwkvKiBTTUJ1cyB0aW1pbmcgKi8KKwlpZiAoISh0ZW1wICYgU01CSFNUQ0ZHX0hTVF9FTikpIHsKKwkJZGV2X2luZm8oJmRldi0+ZGV2LCAiRW5hYmxpbmcgU01CdXMgZGV2aWNlXG4iKTsKKwkJdGVtcCB8PSBTTUJIU1RDRkdfSFNUX0VOOworCX0KKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoSTgwMV9kZXYsIFNNQkhTVENGRywgdGVtcCk7CisKKwlpZiAodGVtcCAmIFNNQkhTVENGR19TTUJfU01JX0VOKQorCQlkZXZfZGJnKCZkZXYtPmRldiwgIlNNQnVzIHVzaW5nIGludGVycnVwdCBTTUkjXG4iKTsKKwllbHNlCisJCWRldl9kYmcoJmRldi0+ZGV2LCAiU01CdXMgdXNpbmcgUENJIEludGVycnVwdFxuIik7CisKIAkvKiBzZXQgdXAgdGhlIGRyaXZlcmZzIGxpbmthZ2UgdG8gb3VyIHBhcmVudCBkZXZpY2UgKi8KIAlpODAxX2FkYXB0ZXIuZGV2LnBhcmVudCA9ICZkZXYtPmRldjsKIAogCXNucHJpbnRmKGk4MDFfYWRhcHRlci5uYW1lLCBJMkNfTkFNRV9TSVpFLAotCQkiU01CdXMgSTgwMSBhZGFwdGVyIGF0ICUwNHgiLCBpODAxX3NtYmEpOwotCXJldHVybiBpMmNfYWRkX2FkYXB0ZXIoJmk4MDFfYWRhcHRlcik7CisJCSJTTUJ1cyBJODAxIGFkYXB0ZXIgYXQgJTA0bHgiLCBpODAxX3NtYmEpOworCWVyciA9IGkyY19hZGRfYWRhcHRlcigmaTgwMV9hZGFwdGVyKTsKKwlpZiAoZXJyKSB7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAiRmFpbGVkIHRvIGFkZCBTTUJ1cyBhZGFwdGVyXG4iKTsKKwkJZ290byBleGl0X2Rpc2FibGU7CisJfQorCitleGl0X2Rpc2FibGU6CisJcGNpX2Rpc2FibGVfZGV2aWNlKGRldik7CitleGl0OgorCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIF9fZGV2ZXhpdCBpODAxX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCWkyY19kZWxfYWRhcHRlcigmaTgwMV9hZGFwdGVyKTsKLQlyZWxlYXNlX3JlZ2lvbihpODAxX3NtYmEsIChpc2ljaDQgPyAxNiA6IDgpKTsKKwlwY2lfcmVsZWFzZV9yZWdpb24oZGV2LCBTTUJCQVIpOworCXBjaV9kaXNhYmxlX2RldmljZShkZXYpOwogfQogCiBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaTgwMV9kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5mb3JjZTIuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbmZvcmNlMi5jCmluZGV4IDJkODBlYjIuLjYwNGI0OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbmZvcmNlMi5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbmZvcmNlMi5jCkBAIC0zMSw2ICszMSw4IEBACiAgICAgbkZvcmNlMyAyNTBHYiBNQ1AJCTAwRTQKICAgICBuRm9yY2U0IE1DUAkJCTAwNTIKICAgICBuRm9yY2U0IE1DUC0wNAkJMDAzNAorICAgIG5Gb3JjZTQgTUNQNTEJCTAyNjQKKyAgICBuRm9yY2U0IE1DUDU1CQkwMzY4CiAKICAgICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMiBTTUJ1c2VzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBNQ1Agb2YgdGhlCiAgICAgbkZvcmNlMi8zLzQgY2hpcHNldHMuCkBAIC02NCw2ICs2Niw3IEBACiAKIC8qCiAgKiBuVmlkaWEgbkZvcmNlMiBTTUJ1cyBjb250cm9sIHJlZ2lzdGVyIGRlZmluaXRpb25zCisgKiAoTmV3ZXIgaW5jYXJuYXRpb25zIHVzZSBzdGFuZGFyZCBCQVJzIDQgYW5kIDUgaW5zdGVhZCkKICAqLwogI2RlZmluZSBORk9SQ0VfUENJX1NNQjEJMHg1MAogI2RlZmluZSBORk9SQ0VfUENJX1NNQjIJMHg1NApAQCAtMjU5LDYgKzI2Miw4IEBACiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0UzU19TTUJVUykgfSwKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTRfU01CVVMpIH0sCiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQMDRfU01CVVMpIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTFfU01CVVMpIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTVfU01CVVMpIH0sCiAJeyAwIH0KIH07CiAKQEAgLTI2NiwxOSArMjcxLDI5IEBACiBNT0RVTEVfREVWSUNFX1RBQkxFIChwY2ksIG5mb3JjZTJfaWRzKTsKIAogCi1zdGF0aWMgaW50IF9fZGV2aW5pdCBuZm9yY2UyX3Byb2JlX3NtYiAoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlZywKLQlzdHJ1Y3QgbmZvcmNlMl9zbWJ1cyAqc21idXMsIGNoYXIgKm5hbWUpCitzdGF0aWMgaW50IF9fZGV2aW5pdCBuZm9yY2UyX3Byb2JlX3NtYiAoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IGJhciwKKwlpbnQgYWx0X3JlZywgc3RydWN0IG5mb3JjZTJfc21idXMgKnNtYnVzLCBjb25zdCBjaGFyICpuYW1lKQogewotCXUxNiBpb2Jhc2U7CiAJaW50IGVycm9yOwogCi0JaWYgKHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgcmVnLCAmaW9iYXNlKSAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKLQkJZGV2X2Vycigmc21idXMtPmFkYXB0ZXIuZGV2LCAiRXJyb3IgcmVhZGluZyBQQ0kgY29uZmlnIGZvciAlc1xuIiwgbmFtZSk7Ci0JCXJldHVybiAtMTsKKwlzbWJ1cy0+YmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIGJhcik7CisJaWYgKHNtYnVzLT5iYXNlKSB7CisJCXNtYnVzLT5zaXplID0gcGNpX3Jlc291cmNlX2xlbihkZXYsIGJhcik7CisJfSBlbHNlIHsKKwkJLyogT2xkZXIgaW5jYXJuYXRpb25zIG9mIHRoZSBkZXZpY2UgdXNlZCBub24tc3RhbmRhcmQgQkFScyAqLworCQl1MTYgaW9iYXNlOworCisJCWlmIChwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIGFsdF9yZWcsICZpb2Jhc2UpCisJCSAgICAhPSBQQ0lCSU9TX1NVQ0NFU1NGVUwpIHsKKwkJCWRldl9lcnIoJmRldi0+ZGV2LCAiRXJyb3IgcmVhZGluZyBQQ0kgY29uZmlnIGZvciAlc1xuIiwKKwkJCQluYW1lKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCXNtYnVzLT5iYXNlID0gaW9iYXNlICYgUENJX0JBU0VfQUREUkVTU19JT19NQVNLOworCQlzbWJ1cy0+c2l6ZSA9IDg7CiAJfQotCXNtYnVzLT5kZXYgID0gZGV2OwotCXNtYnVzLT5iYXNlID0gaW9iYXNlICYgMHhmZmZjOwotCXNtYnVzLT5zaXplID0gODsKKwlzbWJ1cy0+ZGV2ID0gZGV2OwogCiAJaWYgKCFyZXF1ZXN0X3JlZ2lvbihzbWJ1cy0+YmFzZSwgc21idXMtPnNpemUsIG5mb3JjZTJfZHJpdmVyLm5hbWUpKSB7CiAJCWRldl9lcnIoJnNtYnVzLT5hZGFwdGVyLmRldiwgIkVycm9yIHJlcXVlc3RpbmcgcmVnaW9uICUwMnggLi4gJTAyWCBmb3IgJXNcbiIsCkBAIC0zMTMsMTIgKzMyOCwxMyBAQAogCXBjaV9zZXRfZHJ2ZGF0YShkZXYsIHNtYnVzZXMpOwogCiAJLyogU01CdXMgYWRhcHRlciAxICovCi0JcmVzMSA9IG5mb3JjZTJfcHJvYmVfc21iIChkZXYsIE5GT1JDRV9QQ0lfU01CMSwgJnNtYnVzZXNbMF0sICJTTUIxIik7CisJcmVzMSA9IG5mb3JjZTJfcHJvYmVfc21iKGRldiwgNCwgTkZPUkNFX1BDSV9TTUIxLCAmc21idXNlc1swXSwgIlNNQjEiKTsKIAlpZiAocmVzMSA8IDApIHsKIAkJZGV2X2VycigmZGV2LT5kZXYsICJFcnJvciBwcm9iaW5nIFNNQjEuXG4iKTsKIAkJc21idXNlc1swXS5iYXNlID0gMDsJLyogdG8gaGF2ZSBhIGNoZWNrIHZhbHVlICovCiAJfQotCXJlczIgPSBuZm9yY2UyX3Byb2JlX3NtYiAoZGV2LCBORk9SQ0VfUENJX1NNQjIsICZzbWJ1c2VzWzFdLCAiU01CMiIpOworCS8qIFNNQnVzIGFkYXB0ZXIgMiAqLworCXJlczIgPSBuZm9yY2UyX3Byb2JlX3NtYihkZXYsIDUsIE5GT1JDRV9QQ0lfU01CMiwgJnNtYnVzZXNbMV0sICJTTUIyIik7CiAJaWYgKHJlczIgPCAwKSB7CiAJCWRldl9lcnIoJmRldi0+ZGV2LCAiRXJyb3IgcHJvYmluZyBTTUIyLlxuIik7CiAJCXNtYnVzZXNbMV0uYmFzZSA9IDA7CS8qIHRvIGhhdmUgYSBjaGVjayB2YWx1ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1vY29yZXMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb2NvcmVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyODI0MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb2NvcmVzLmMKQEAgLTAsMCArMSwzNDEgQEAKKy8qCisgKiBpMmMtb2NvcmVzLmM6IEkyQyBidXMgZHJpdmVyIGZvciBPcGVuQ29yZXMgSTJDIGNvbnRyb2xsZXIKKyAqIChodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvcHJvamVjdHMuY2dpL3dlYi9pMmMvb3ZlcnZpZXcpLgorICoKKyAqIFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIHZlcnNpb24gMi4gIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy1vY29yZXMuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKworc3RydWN0IG9jb3Jlc19pMmMgeworCXZvaWQgX19pb21lbSAqYmFzZTsKKwlpbnQgcmVnc3RlcDsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OworCXN0cnVjdCBpMmNfYWRhcHRlciBhZGFwOworCXN0cnVjdCBpMmNfbXNnICptc2c7CisJaW50IHBvczsKKwlpbnQgbm1zZ3M7CisJaW50IHN0YXRlOyAvKiBzZWUgU1RBVEVfICovCit9OworCisvKiByZWdpc3RlcnMgKi8KKyNkZWZpbmUgT0NJMkNfUFJFTE9XCQkwCisjZGVmaW5lIE9DSTJDX1BSRUhJR0gJCTEKKyNkZWZpbmUgT0NJMkNfQ09OVFJPTAkJMgorI2RlZmluZSBPQ0kyQ19EQVRBCQkzCisjZGVmaW5lIE9DSTJDX0NNRAkJNCAvKiB3cml0ZSBvbmx5ICovCisjZGVmaW5lIE9DSTJDX1NUQVRVUwkJNCAvKiByZWFkIG9ubHksIHNhbWUgYWRkcmVzcyBhcyBPQ0kyQ19DTUQgKi8KKworI2RlZmluZSBPQ0kyQ19DVFJMX0lFTgkJMHg0MAorI2RlZmluZSBPQ0kyQ19DVFJMX0VOCQkweDgwCisKKyNkZWZpbmUgT0NJMkNfQ01EX1NUQVJUCQkweDkxCisjZGVmaW5lIE9DSTJDX0NNRF9TVE9QCQkweDQxCisjZGVmaW5lIE9DSTJDX0NNRF9SRUFECQkweDIxCisjZGVmaW5lIE9DSTJDX0NNRF9XUklURQkJMHgxMQorI2RlZmluZSBPQ0kyQ19DTURfUkVBRF9BQ0sJMHgyMQorI2RlZmluZSBPQ0kyQ19DTURfUkVBRF9OQUNLCTB4MjkKKyNkZWZpbmUgT0NJMkNfQ01EX0lBQ0sJCTB4MDEKKworI2RlZmluZSBPQ0kyQ19TVEFUX0lGCQkweDAxCisjZGVmaW5lIE9DSTJDX1NUQVRfVElQCQkweDAyCisjZGVmaW5lIE9DSTJDX1NUQVRfQVJCTE9TVAkweDIwCisjZGVmaW5lIE9DSTJDX1NUQVRfQlVTWQkJMHg0MAorI2RlZmluZSBPQ0kyQ19TVEFUX05BQ0sJCTB4ODAKKworI2RlZmluZSBTVEFURV9ET05FCQkwCisjZGVmaW5lIFNUQVRFX1NUQVJUCQkxCisjZGVmaW5lIFNUQVRFX1dSSVRFCQkyCisjZGVmaW5lIFNUQVRFX1JFQUQJCTMKKyNkZWZpbmUgU1RBVEVfRVJST1IJCTQKKworc3RhdGljIGlubGluZSB2b2lkIG9jX3NldHJlZyhzdHJ1Y3Qgb2NvcmVzX2kyYyAqaTJjLCBpbnQgcmVnLCB1OCB2YWx1ZSkKK3sKKwlpb3dyaXRlOCh2YWx1ZSwgaTJjLT5iYXNlICsgcmVnICogaTJjLT5yZWdzdGVwKTsKK30KKworc3RhdGljIGlubGluZSB1OCBvY19nZXRyZWcoc3RydWN0IG9jb3Jlc19pMmMgKmkyYywgaW50IHJlZykKK3sKKwlyZXR1cm4gaW9yZWFkOChpMmMtPmJhc2UgKyByZWcgKiBpMmMtPnJlZ3N0ZXApOworfQorCitzdGF0aWMgdm9pZCBvY29yZXNfcHJvY2VzcyhzdHJ1Y3Qgb2NvcmVzX2kyYyAqaTJjKQoreworCXN0cnVjdCBpMmNfbXNnICptc2cgPSBpMmMtPm1zZzsKKwl1OCBzdGF0ID0gb2NfZ2V0cmVnKGkyYywgT0NJMkNfU1RBVFVTKTsKKworCWlmICgoaTJjLT5zdGF0ZSA9PSBTVEFURV9ET05FKSB8fCAoaTJjLT5zdGF0ZSA9PSBTVEFURV9FUlJPUikpIHsKKwkJLyogc3RvcCBoYXMgYmVlbiBzZW50ICovCisJCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NNRCwgT0NJMkNfQ01EX0lBQ0spOworCQl3YWtlX3VwKCZpMmMtPndhaXQpOworCQlyZXR1cm47CisJfQorCisJLyogZXJyb3I/ICovCisJaWYgKHN0YXQgJiBPQ0kyQ19TVEFUX0FSQkxPU1QpIHsKKwkJaTJjLT5zdGF0ZSA9IFNUQVRFX0VSUk9SOworCQlvY19zZXRyZWcoaTJjLCBPQ0kyQ19DTUQsIE9DSTJDX0NNRF9TVE9QKTsKKwkJcmV0dXJuOworCX0KKworCWlmICgoaTJjLT5zdGF0ZSA9PSBTVEFURV9TVEFSVCkgfHwgKGkyYy0+c3RhdGUgPT0gU1RBVEVfV1JJVEUpKSB7CisJCWkyYy0+c3RhdGUgPQorCQkJKG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCkgPyBTVEFURV9SRUFEIDogU1RBVEVfV1JJVEU7CisKKwkJaWYgKHN0YXQgJiBPQ0kyQ19TVEFUX05BQ0spIHsKKwkJCWkyYy0+c3RhdGUgPSBTVEFURV9FUlJPUjsKKwkJCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NNRCwgT0NJMkNfQ01EX1NUT1ApOworCQkJcmV0dXJuOworCQl9CisJfSBlbHNlCisJCW1zZy0+YnVmW2kyYy0+cG9zKytdID0gb2NfZ2V0cmVnKGkyYywgT0NJMkNfREFUQSk7CisKKwkvKiBlbmQgb2YgbXNnPyAqLworCWlmIChpMmMtPnBvcyA9PSBtc2ctPmxlbikgeworCQlpMmMtPm5tc2dzLS07CisJCWkyYy0+bXNnKys7CisJCWkyYy0+cG9zID0gMDsKKwkJbXNnID0gaTJjLT5tc2c7CisKKwkJaWYgKGkyYy0+bm1zZ3MpIHsJLyogZW5kPyAqLworCQkJLyogc2VuZCBzdGFydD8gKi8KKwkJCWlmICghKG1zZy0+ZmxhZ3MgJiBJMkNfTV9OT1NUQVJUKSkgeworCQkJCXU4IGFkZHIgPSAobXNnLT5hZGRyIDw8IDEpOworCisJCQkJaWYgKG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCkKKwkJCQkJYWRkciB8PSAxOworCisJCQkJaTJjLT5zdGF0ZSA9IFNUQVRFX1NUQVJUOworCisJCQkJb2Nfc2V0cmVnKGkyYywgT0NJMkNfREFUQSwgYWRkcik7CisJCQkJb2Nfc2V0cmVnKGkyYywgT0NJMkNfQ01ELCAgT0NJMkNfQ01EX1NUQVJUKTsKKwkJCQlyZXR1cm47CisJCQl9IGVsc2UKKwkJCQlpMmMtPnN0YXRlID0gKG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCkKKwkJCQkJPyBTVEFURV9SRUFEIDogU1RBVEVfV1JJVEU7CisJCX0gZWxzZSB7CisJCQlpMmMtPnN0YXRlID0gU1RBVEVfRE9ORTsKKwkJCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NNRCwgT0NJMkNfQ01EX1NUT1ApOworCQkJcmV0dXJuOworCQl9CisJfQorCisJaWYgKGkyYy0+c3RhdGUgPT0gU1RBVEVfUkVBRCkgeworCQlvY19zZXRyZWcoaTJjLCBPQ0kyQ19DTUQsIGkyYy0+cG9zID09IChtc2ctPmxlbi0xKSA/CisJCQkgIE9DSTJDX0NNRF9SRUFEX05BQ0sgOiBPQ0kyQ19DTURfUkVBRF9BQ0spOworCX0gZWxzZSB7CisJCW9jX3NldHJlZyhpMmMsIE9DSTJDX0RBVEEsIG1zZy0+YnVmW2kyYy0+cG9zKytdKTsKKwkJb2Nfc2V0cmVnKGkyYywgT0NJMkNfQ01ELCBPQ0kyQ19DTURfV1JJVEUpOworCX0KK30KKworc3RhdGljIGlycXJldHVybl90IG9jb3Jlc19pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlzdHJ1Y3Qgb2NvcmVzX2kyYyAqaTJjID0gZGV2X2lkOworCisJb2NvcmVzX3Byb2Nlc3MoaTJjKTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBvY29yZXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIHN0cnVjdCBpMmNfbXNnICptc2dzLCBpbnQgbnVtKQoreworCXN0cnVjdCBvY29yZXNfaTJjICppMmMgPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXApOworCisJaTJjLT5tc2cgPSBtc2dzOworCWkyYy0+cG9zID0gMDsKKwlpMmMtPm5tc2dzID0gbnVtOworCWkyYy0+c3RhdGUgPSBTVEFURV9TVEFSVDsKKworCW9jX3NldHJlZyhpMmMsIE9DSTJDX0RBVEEsCisJCQkoaTJjLT5tc2ctPmFkZHIgPDwgMSkgfAorCQkJKChpMmMtPm1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCkgPyAxOjApKTsKKworCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NNRCwgT0NJMkNfQ01EX1NUQVJUKTsKKworCWlmICh3YWl0X2V2ZW50X3RpbWVvdXQoaTJjLT53YWl0LCAoaTJjLT5zdGF0ZSA9PSBTVEFURV9FUlJPUikgfHwKKwkJCSAgICAgICAoaTJjLT5zdGF0ZSA9PSBTVEFURV9ET05FKSwgSFopKQorCQlyZXR1cm4gKGkyYy0+c3RhdGUgPT0gU1RBVEVfRE9ORSkgPyBudW0gOiAtRUlPOworCWVsc2UKKwkJcmV0dXJuIC1FVElNRURPVVQ7Cit9CisKK3N0YXRpYyB2b2lkIG9jb3Jlc19pbml0KHN0cnVjdCBvY29yZXNfaTJjICppMmMsCisJCQlzdHJ1Y3Qgb2NvcmVzX2kyY19wbGF0Zm9ybV9kYXRhICpwZGF0YSkKK3sKKwlpbnQgcHJlc2NhbGU7CisJdTggY3RybCA9IG9jX2dldHJlZyhpMmMsIE9DSTJDX0NPTlRST0wpOworCisJLyogbWFrZSBzdXJlIHRoZSBkZXZpY2UgaXMgZGlzYWJsZWQgKi8KKwlvY19zZXRyZWcoaTJjLCBPQ0kyQ19DT05UUk9MLCBjdHJsICYgfihPQ0kyQ19DVFJMX0VOfE9DSTJDX0NUUkxfSUVOKSk7CisKKwlwcmVzY2FsZSA9IChwZGF0YS0+Y2xvY2tfa2h6IC8gKDUqMTAwKSkgLSAxOworCW9jX3NldHJlZyhpMmMsIE9DSTJDX1BSRUxPVywgcHJlc2NhbGUgJiAweGZmKTsKKwlvY19zZXRyZWcoaTJjLCBPQ0kyQ19QUkVISUdILCBwcmVzY2FsZSA+PiA4KTsKKworCS8qIEluaXQgdGhlIGRldmljZSAqLworCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NNRCwgT0NJMkNfQ01EX0lBQ0spOworCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NPTlRST0wsIGN0cmwgfCBPQ0kyQ19DVFJMX0lFTiB8IE9DSTJDX0NUUkxfRU4pOworfQorCisKK3N0YXRpYyB1MzIgb2NvcmVzX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKQoreworCXJldHVybiBJMkNfRlVOQ19JMkMgfCBJMkNfRlVOQ19TTUJVU19FTVVMOworfQorCitzdGF0aWMgc3RydWN0IGkyY19hbGdvcml0aG0gb2NvcmVzX2FsZ29yaXRobSA9IHsKKwkubWFzdGVyX3hmZXIJPSBvY29yZXNfeGZlciwKKwkuZnVuY3Rpb25hbGl0eQk9IG9jb3Jlc19mdW5jLAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfYWRhcHRlciBvY29yZXNfYWRhcHRlciA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm5hbWUJCT0gImkyYy1vY29yZXMiLAorCS5jbGFzcwkJPSBJMkNfQ0xBU1NfSFdNT04sCisJLmFsZ28JCT0gJm9jb3Jlc19hbGdvcml0aG0sCit9OworCisKK3N0YXRpYyBpbnQgX19kZXZpbml0IG9jb3Jlc19pMmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3Qgb2NvcmVzX2kyYyAqaTJjOworCXN0cnVjdCBvY29yZXNfaTJjX3BsYXRmb3JtX2RhdGEgKnBkYXRhOworCXN0cnVjdCByZXNvdXJjZSAqcmVzLCAqcmVzMjsKKwlpbnQgcmV0OworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXMyID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCAwKTsKKwlpZiAoIXJlczIpCisJCXJldHVybiAtRU5PREVWOworCisJcGRhdGEgPSAoc3RydWN0IG9jb3Jlc19pMmNfcGxhdGZvcm1fZGF0YSopIHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOworCWlmICghcGRhdGEpCisJCXJldHVybiAtRU5PREVWOworCisJaTJjID0ga3phbGxvYyhzaXplb2YoKmkyYyksIEdGUF9LRVJORUwpOworCWlmICghaTJjKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmICghcmVxdWVzdF9tZW1fcmVnaW9uKHJlcy0+c3RhcnQsIHJlcy0+ZW5kIC0gcmVzLT5zdGFydCArIDEsCisJCQkJcGRldi0+bmFtZSkpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiTWVtb3J5IHJlZ2lvbiBidXN5XG4iKTsKKwkJcmV0ID0gLUVCVVNZOworCQlnb3RvIHJlcXVlc3RfbWVtX2ZhaWxlZDsKKwl9CisKKwlpMmMtPmJhc2UgPSBpb3JlbWFwKHJlcy0+c3RhcnQsIHJlcy0+ZW5kIC0gcmVzLT5zdGFydCArIDEpOworCWlmICghaTJjLT5iYXNlKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIlVuYWJsZSB0byBtYXAgcmVnaXN0ZXJzXG4iKTsKKwkJcmV0ID0gLUVJTzsKKwkJZ290byBtYXBfZmFpbGVkOworCX0KKworCWkyYy0+cmVnc3RlcCA9IHBkYXRhLT5yZWdzdGVwOworCW9jb3Jlc19pbml0KGkyYywgcGRhdGEpOworCisJaW5pdF93YWl0cXVldWVfaGVhZCgmaTJjLT53YWl0KTsKKwlyZXQgPSByZXF1ZXN0X2lycShyZXMyLT5zdGFydCwgb2NvcmVzX2lzciwgMCwgcGRldi0+bmFtZSwgaTJjKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNhbm5vdCBjbGFpbSBJUlFcbiIpOworCQlnb3RvIHJlcXVlc3RfaXJxX2ZhaWxlZDsKKwl9CisKKwkvKiBob29rIHVwIGRyaXZlciB0byB0cmVlICovCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaTJjKTsKKwlpMmMtPmFkYXAgPSBvY29yZXNfYWRhcHRlcjsKKwlpMmNfc2V0X2FkYXBkYXRhKCZpMmMtPmFkYXAsIGkyYyk7CisJaTJjLT5hZGFwLmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2OworCisJLyogYWRkIGkyYyBhZGFwdGVyIHRvIGkyYyB0cmVlICovCisJcmV0ID0gaTJjX2FkZF9hZGFwdGVyKCZpMmMtPmFkYXApOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGFkZCBhZGFwdGVyXG4iKTsKKwkJZ290byBhZGRfYWRhcHRlcl9mYWlsZWQ7CisJfQorCisJcmV0dXJuIDA7CisKK2FkZF9hZGFwdGVyX2ZhaWxlZDoKKwlmcmVlX2lycShyZXMyLT5zdGFydCwgaTJjKTsKK3JlcXVlc3RfaXJxX2ZhaWxlZDoKKwlpb3VubWFwKGkyYy0+YmFzZSk7CittYXBfZmFpbGVkOgorCXJlbGVhc2VfbWVtX3JlZ2lvbihyZXMtPnN0YXJ0LCByZXMtPmVuZCAtIHJlcy0+c3RhcnQgKyAxKTsKK3JlcXVlc3RfbWVtX2ZhaWxlZDoKKwlrZnJlZShpMmMpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX2RldmV4aXQgb2NvcmVzX2kyY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogcGRldikKK3sKKwlzdHJ1Y3Qgb2NvcmVzX2kyYyAqaTJjID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisKKwkvKiBkaXNhYmxlIGkyYyBsb2dpYyAqLworCW9jX3NldHJlZyhpMmMsIE9DSTJDX0NPTlRST0wsIG9jX2dldHJlZyhpMmMsIE9DSTJDX0NPTlRST0wpCisJCSAgJiB+KE9DSTJDX0NUUkxfRU58T0NJMkNfQ1RSTF9JRU4pKTsKKworCS8qIHJlbW92ZSBhZGFwdGVyICYgZGF0YSAqLworCWkyY19kZWxfYWRhcHRlcigmaTJjLT5hZGFwKTsKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX0lSUSwgMCk7CisJaWYgKHJlcykKKwkJZnJlZV9pcnEocmVzLT5zdGFydCwgaTJjKTsKKworCWlvdW5tYXAoaTJjLT5iYXNlKTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKHJlcykKKwkJcmVsZWFzZV9tZW1fcmVnaW9uKHJlcy0+c3RhcnQsIHJlcy0+ZW5kIC0gcmVzLT5zdGFydCArIDEpOworCisJa2ZyZWUoaTJjKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBvY29yZXNfaTJjX2RyaXZlciA9IHsKKwkucHJvYmUgID0gb2NvcmVzX2kyY19wcm9iZSwKKwkucmVtb3ZlID0gX19kZXZleGl0X3Aob2NvcmVzX2kyY19yZW1vdmUpLAorCS5kcml2ZXIgPSB7CisJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCQkubmFtZSA9ICJvY29yZXMtaTJjIiwKKwl9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgb2NvcmVzX2kyY19pbml0KHZvaWQpCit7CisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmb2NvcmVzX2kyY19kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgb2NvcmVzX2kyY19leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJm9jb3Jlc19pMmNfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQob2NvcmVzX2kyY19pbml0KTsKK21vZHVsZV9leGl0KG9jb3Jlc19pMmNfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoIlBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk9wZW5Db3JlcyBJMkMgYnVzIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1waWl4NC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1waWl4NC5jCmluZGV4IGQ5YzdjMDAuLjhmMmY2NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcGlpeDQuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXBpaXg0LmMKQEAgLTEwMiwxMyArMTAyLDYgQEAKIAkJICJGb3JjaWJseSBlbmFibGUgdGhlIFBJSVg0IGF0IHRoZSBnaXZlbiBhZGRyZXNzLiAiCiAJCSAiRVhUUkVNRUxZIERBTkdFUk9VUyEiKTsKIAotLyogSWYgZml4X2hzdGNmZyBpcyBzZXQgdG8gYW55dGhpbmcgZGlmZmVyZW50IGZyb20gMCwgd2UgcmVzZXQgb25lIG9mIHRoZQotICAgcmVnaXN0ZXJzIHRvIGJlIGEgdmFsaWQgdmFsdWUuICovCi1zdGF0aWMgaW50IGZpeF9oc3RjZmc7Ci1tb2R1bGVfcGFyYW0gKGZpeF9oc3RjZmcsIGludCwgMCk7Ci1NT0RVTEVfUEFSTV9ERVNDKGZpeF9oc3RjZmcsCi0JCSJGaXggY29uZmlnIHJlZ2lzdGVyLiBOZWVkZWQgb24gc29tZSBib2FyZHMgKEZvcmNlIENQQ0k3MzUpLiIpOwotCiBzdGF0aWMgaW50IHBpaXg0X3RyYW5zYWN0aW9uKHZvaWQpOwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgcGlpeDRfc21iYTsKQEAgLTEzNyw3ICsxMzAsNyBAQAogCS8qIERvbid0IGFjY2VzcyBTTUJ1cyBvbiBJQk0gc3lzdGVtcyB3aGljaCBnZXQgY29ycnVwdGVkIGVlcHJvbXMgKi8KIAlpZiAoZG1pX2NoZWNrX3N5c3RlbShwaWl4NF9kbWlfdGFibGUpICYmCiAJCQlQSUlYNF9kZXYtPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0lOVEVMKSB7Ci0JCWRldl9lcnIoJlBJSVg0X2Rldi0+ZGV2LCAiSUJNIExhcHRvcCBkZXRlY3RlZDsgdGhpcyBtb2R1bGUgIgorCQlkZXZfZXJyKCZQSUlYNF9kZXYtPmRldiwgIklCTSBzeXN0ZW0gZGV0ZWN0ZWQ7IHRoaXMgbW9kdWxlICIKIAkJCSJtYXkgY29ycnVwdCB5b3VyIHNlcmlhbCBlZXByb20hIFJlZnVzaW5nIHRvIGxvYWQgIgogCQkJIm1vZHVsZSFcbiIpOwogCQlyZXR1cm4gLUVQRVJNOwpAQCAtMTY2LDIyICsxNTksNiBAQAogCiAJcGNpX3JlYWRfY29uZmlnX2J5dGUoUElJWDRfZGV2LCBTTUJIU1RDRkcsICZ0ZW1wKTsKIAotCS8qIFNvbWUgQklPUyB3aWxsIHNldCB1cCB0aGUgY2hpcHNldCBpbmNvcnJlY3RseSBhbmQgbGVhdmUgYSByZWdpc3RlcgotCSAgIGluIGFuIHVuZGVmaW5lZCBzdGF0ZSAoY2F1c2luZyBJMkMgdG8gYWN0IHZlcnkgc3RyYW5nZWx5KS4gKi8KLQlpZiAodGVtcCAmIDB4MDIpIHsKLQkJaWYgKGZpeF9oc3RjZmcpIHsKLQkJCWRldl9pbmZvKCZQSUlYNF9kZXYtPmRldiwgIldvcmtpbmcgYXJvdW5kIGJ1Z2d5IEJJT1MgIgotCQkJCQkiKEkyQylcbiIpOwotCQkJdGVtcCAmPSAweGZkOwotCQkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKFBJSVg0X2RldiwgU01CSFNUQ0ZHLCB0ZW1wKTsKLQkJfSBlbHNlIHsKLQkJCWRldl9pbmZvKCZQSUlYNF9kZXYtPmRldiwgIlVudXN1YWwgY29uZmlnIHJlZ2lzdGVyICIKLQkJCQkJInZhbHVlXG4iKTsKLQkJCWRldl9pbmZvKCZQSUlYNF9kZXYtPmRldiwgIlRyeSB1c2luZyBmaXhfaHN0Y2ZnPTEgaWYgIgotCQkJCQkieW91IGV4cGVyaWVuY2UgcHJvYmxlbXNcbiIpOwotCQl9Ci0JfQotIAogCS8qIElmIGZvcmNlX2FkZHIgaXMgc2V0LCB3ZSBwcm9ncmFtIHRoZSBuZXcgYWRkcmVzcyBoZXJlLiBKdXN0IHRvIG1ha2UKIAkgICBzdXJlLCB3ZSBkaXNhYmxlIHRoZSBQSUlYNCBmaXJzdC4gKi8KIAlpZiAoZm9yY2VfYWRkcikgewpAQCAtMjE0LDcgKzE5MSw3IEBACiAJCX0KIAl9CiAKLQlpZiAoKHRlbXAgJiAweDBFKSA9PSA4KQorCWlmICgoKHRlbXAgJiAweDBFKSA9PSA4KSB8fCAoKHRlbXAgJiAweDBFKSA9PSAyKSkKIAkJZGV2X2RiZygmUElJWDRfZGV2LT5kZXYsICJVc2luZyBJbnRlcnJ1cHQgOSBmb3IgU01CdXMuXG4iKTsKIAllbHNlIGlmICgodGVtcCAmIDB4MEUpID09IDApCiAJCWRldl9kYmcoJlBJSVg0X2Rldi0+ZGV2LCAiVXNpbmcgSW50ZXJydXB0IFNNSSMgZm9yIFNNQnVzLlxuIik7CkBAIC00MTMsNiArMzkwLDEyIEBACiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcGlpeDRfaWRzW10gPSB7CiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIFBDSV9ERVZJQ0VfSURfSU5URUxfODIzNzFBQl8zKSwKIAkgIC5kcml2ZXJfZGF0YSA9IDMgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BVEksIFBDSV9ERVZJQ0VfSURfQVRJX0lYUDIwMF9TTUJVUyksCisJICAuZHJpdmVyX2RhdGEgPSAwIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVRJLCBQQ0lfREVWSUNFX0lEX0FUSV9JWFAzMDBfU01CVVMpLAorCSAgLmRyaXZlcl9kYXRhID0gMCB9LAorCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0FUSSwgUENJX0RFVklDRV9JRF9BVElfSVhQNDAwX1NNQlVTKSwKKwkgIC5kcml2ZXJfZGF0YSA9IDAgfSwKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9TRVJWRVJXT1JLUywgUENJX0RFVklDRV9JRF9TRVJWRVJXT1JLU19PU0I0KSwKIAkgIC5kcml2ZXJfZGF0YSA9IDAgfSwKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9TRVJWRVJXT1JLUywgUENJX0RFVklDRV9JRF9TRVJWRVJXT1JLU19DU0I1KSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9zY3gyMDBfYWNiLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvc2N4MjAwX2FjYi5jCmluZGV4IDc2NmNjOTYuLjIyYTNlZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9zY3gyMDBfYWNiLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL3NjeDIwMF9hY2IuYwpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vbXNyLmg+CiAKICNpbmNsdWRlIDxsaW51eC9zY3gyMDAuaD4KIApAQCAtODUsNiArODQsMTAgQEAKIAl1OCAqcHRyOwogCWNoYXIgbmVlZHNfcmVzZXQ7CiAJdW5zaWduZWQgbGVuOworCisJLyogUENJIGRldmljZSBpbmZvICovCisJc3RydWN0IHBjaV9kZXYgKnBkZXY7CisJaW50IGJhcjsKIH07CiAKIC8qIFJlZ2lzdGVyIERlZmluaXRpb25zICovCkBAIC0zODEsNyArMzg0LDcgQEAKIHN0YXRpYyBzdHJ1Y3Qgc2N4MjAwX2FjYl9pZmFjZSAqc2N4MjAwX2FjYl9saXN0Owogc3RhdGljIERFQ0xBUkVfTVVURVgoc2N4MjAwX2FjYl9saXN0X211dGV4KTsKIAotc3RhdGljIGludCBzY3gyMDBfYWNiX3Byb2JlKHN0cnVjdCBzY3gyMDBfYWNiX2lmYWNlICppZmFjZSkKK3N0YXRpYyBfX2luaXQgaW50IHNjeDIwMF9hY2JfcHJvYmUoc3RydWN0IHNjeDIwMF9hY2JfaWZhY2UgKmlmYWNlKQogewogCXU4IHZhbDsKIApAQCAtNDE3LDE3ICs0MjAsMTYgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAgX19pbml0IHNjeDIwMF9hY2JfY3JlYXRlKGNvbnN0IGNoYXIgKnRleHQsIGludCBiYXNlLCBpbnQgaW5kZXgpCitzdGF0aWMgX19pbml0IHN0cnVjdCBzY3gyMDBfYWNiX2lmYWNlICpzY3gyMDBfY3JlYXRlX2lmYWNlKGNvbnN0IGNoYXIgKnRleHQsCisJCWludCBpbmRleCkKIHsKIAlzdHJ1Y3Qgc2N4MjAwX2FjYl9pZmFjZSAqaWZhY2U7CiAJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyOwotCWludCByYzsKIAogCWlmYWNlID0ga3phbGxvYyhzaXplb2YoKmlmYWNlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFpZmFjZSkgewogCQlwcmludGsoS0VSTl9FUlIgTkFNRSAiOiBjYW4ndCBhbGxvY2F0ZSBtZW1vcnlcbiIpOwotCQlyYyA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyb3V0OworCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlhZGFwdGVyID0gJmlmYWNlLT5hZGFwdGVyOwpAQCAtNDQwLDI2ICs0NDIsMjcgQEAKIAogCW11dGV4X2luaXQoJmlmYWNlLT5tdXRleCk7CiAKLQlpZiAoIXJlcXVlc3RfcmVnaW9uKGJhc2UsIDgsIGFkYXB0ZXItPm5hbWUpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiBOQU1FICI6IGNhbid0IGFsbG9jYXRlIGlvIDB4JXgtMHgleFxuIiwKLQkJCWJhc2UsIGJhc2UgKyA4LTEpOwotCQlyYyA9IC1FQlVTWTsKLQkJZ290byBlcnJvdXRfZnJlZTsKLQl9Ci0JaWZhY2UtPmJhc2UgPSBiYXNlOworCXJldHVybiBpZmFjZTsKK30KKworc3RhdGljIGludCBfX2luaXQgc2N4MjAwX2FjYl9jcmVhdGUoc3RydWN0IHNjeDIwMF9hY2JfaWZhY2UgKmlmYWNlKQoreworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcjsKKwlpbnQgcmM7CisKKwlhZGFwdGVyID0gJmlmYWNlLT5hZGFwdGVyOwogCiAJcmMgPSBzY3gyMDBfYWNiX3Byb2JlKGlmYWNlKTsKIAlpZiAocmMpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBOQU1FICI6IHByb2JlIGZhaWxlZFxuIik7Ci0JCWdvdG8gZXJyb3V0X3JlbGVhc2U7CisJCXJldHVybiByYzsKIAl9CiAKIAlzY3gyMDBfYWNiX3Jlc2V0KGlmYWNlKTsKIAogCWlmIChpMmNfYWRkX2FkYXB0ZXIoYWRhcHRlcikgPCAwKSB7CiAJCXByaW50ayhLRVJOX0VSUiBOQU1FICI6IGZhaWxlZCB0byByZWdpc3RlclxuIik7Ci0JCXJjID0gLUVOT0RFVjsKLQkJZ290byBlcnJvdXRfcmVsZWFzZTsKKwkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiAJZG93bigmc2N4MjAwX2FjYl9saXN0X211dGV4KTsKQEAgLTQ2OCw2NCArNDcxLDE0OCBAQAogCXVwKCZzY3gyMDBfYWNiX2xpc3RfbXV0ZXgpOwogCiAJcmV0dXJuIDA7Cit9CiAKLSBlcnJvdXRfcmVsZWFzZToKLQlyZWxlYXNlX3JlZ2lvbihpZmFjZS0+YmFzZSwgOCk7CitzdGF0aWMgX19pbml0IGludCBzY3gyMDBfY3JlYXRlX3BjaShjb25zdCBjaGFyICp0ZXh0LCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKKwkJaW50IGJhcikKK3sKKwlzdHJ1Y3Qgc2N4MjAwX2FjYl9pZmFjZSAqaWZhY2U7CisJaW50IHJjOworCisJaWZhY2UgPSBzY3gyMDBfY3JlYXRlX2lmYWNlKHRleHQsIDApOworCisJaWYgKGlmYWNlID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJaWZhY2UtPnBkZXYgPSBwZGV2OworCWlmYWNlLT5iYXIgPSBiYXI7CisKKwlwY2lfZW5hYmxlX2RldmljZV9iYXJzKGlmYWNlLT5wZGV2LCAxIDw8IGlmYWNlLT5iYXIpOworCisJcmMgPSBwY2lfcmVxdWVzdF9yZWdpb24oaWZhY2UtPnBkZXYsIGlmYWNlLT5iYXIsIGlmYWNlLT5hZGFwdGVyLm5hbWUpOworCisJaWYgKHJjICE9IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSIE5BTUUgIjogY2FuJ3QgYWxsb2NhdGUgUENJIEJBUiAlZFxuIiwKKwkJCQlpZmFjZS0+YmFyKTsKKwkJZ290byBlcnJvdXRfZnJlZTsKKwl9CisKKwlpZmFjZS0+YmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChpZmFjZS0+cGRldiwgaWZhY2UtPmJhcik7CisJcmMgPSBzY3gyMDBfYWNiX2NyZWF0ZShpZmFjZSk7CisKKwlpZiAocmMgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlwY2lfcmVsZWFzZV9yZWdpb24oaWZhY2UtPnBkZXYsIGlmYWNlLT5iYXIpOworCXBjaV9kZXZfcHV0KGlmYWNlLT5wZGV2KTsKICBlcnJvdXRfZnJlZToKIAlrZnJlZShpZmFjZSk7Ci0gZXJyb3V0OgogCXJldHVybiByYzsKIH0KIAotc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHNjeDIwMFtdID0gewotCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05TLCBQQ0lfREVWSUNFX0lEX05TX1NDeDIwMF9CUklER0UpIH0sCi0JeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlMsIFBDSV9ERVZJQ0VfSURfTlNfU0MxMTAwX0JSSURHRSkgfSwKLQl7IH0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGl2aWxfcGNpW10gPSB7Ci0JeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTlMsICBQQ0lfREVWSUNFX0lEX05TX0NTNTUzNV9JU0EpIH0sCi0JeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQU1ELCBQQ0lfREVWSUNFX0lEX0FNRF9DUzU1MzZfSVNBKSB9LAotCXsgfSAvKiBOVUxMIGVudHJ5ICovCi19OwotCi0jZGVmaW5lIE1TUl9MQkFSX1NNQgkJMHg1MTQwMDAwQgotCi1zdGF0aWMgX19pbml0IGludCBzY3gyMDBfYWRkX2NzNTUzeCh2b2lkKQorc3RhdGljIGludCBfX2luaXQgc2N4MjAwX2NyZWF0ZV9pc2EoY29uc3QgY2hhciAqdGV4dCwgdW5zaWduZWQgbG9uZyBiYXNlLAorCQlpbnQgaW5kZXgpCiB7Ci0JdTMyCWxvdywgaGk7Ci0JdTMyCXNtYl9iYXNlOworCXN0cnVjdCBzY3gyMDBfYWNiX2lmYWNlICppZmFjZTsKKwlpbnQgcmM7CiAKLQkvKiBHcmFiICYgcmVzZXJ2ZSB0aGUgU01CIEkvTyByYW5nZSAqLwotCXJkbXNyKE1TUl9MQkFSX1NNQiwgbG93LCBoaSk7CisJaWZhY2UgPSBzY3gyMDBfY3JlYXRlX2lmYWNlKHRleHQsIGluZGV4KTsKIAotCS8qIENoZWNrIHRoZSBJTyBtYXNrIGFuZCB3aGV0aGVyIFNNQiBpcyBlbmFibGVkICovCi0JaWYgKGhpICE9IDB4MDAwMEYwMDEpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyBOQU1FICI6IFNNQnVzIG5vdCBlbmFibGVkXG4iKTsKLQkJcmV0dXJuIC1FTk9ERVY7CisJaWYgKGlmYWNlID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKHJlcXVlc3RfcmVnaW9uKGJhc2UsIDgsIGlmYWNlLT5hZGFwdGVyLm5hbWUpID09IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSIE5BTUUgIjogY2FuJ3QgYWxsb2NhdGUgaW8gMHglbHgtMHglbHhcbiIsCisJCSAgICAgICBiYXNlLCBiYXNlICsgOCAtIDEpOworCQlyYyA9IC1FQlVTWTsKKwkJZ290byBlcnJvdXRfZnJlZTsKIAl9CiAKLQkvKiBTTUJ1cyBJTyBzaXplIGlzIDggYnl0ZXMgKi8KLQlzbWJfYmFzZSA9IGxvdyAmIDB4MDAwMEZGRjg7CisJaWZhY2UtPmJhc2UgPSBiYXNlOworCXJjID0gc2N4MjAwX2FjYl9jcmVhdGUoaWZhY2UpOwogCi0JcmV0dXJuIHNjeDIwMF9hY2JfY3JlYXRlKCJDUzU1MzUiLCBzbWJfYmFzZSwgMCk7CisJaWYgKHJjID09IDApCisJCXJldHVybiAwOworCisJcmVsZWFzZV9yZWdpb24oYmFzZSwgOCk7CisgZXJyb3V0X2ZyZWU6CisJa2ZyZWUoaWZhY2UpOworCXJldHVybiByYzsKK30KKworLyogRHJpdmVyIGRhdGEgaXMgYW4gaW5kZXggaW50byB0aGUgc2N4MjAwX2RhdGEgYXJyYXkgdGhhdCBpbmRpY2F0ZXMKKyAqIHRoZSBuYW1lIGFuZCB0aGUgQkFSIHdoZXJlIHRoZSBJL08gYWRkcmVzcyByZXNvdXJjZSBpcyBsb2NhdGVkLiAgSVNBCisgKiBkZXZpY2VzIGFyZSBmbGFnZ2VkIHdpdGggYSBiYXIgdmFsdWUgb2YgLTEgKi8KKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHNjeDIwMF9wY2lbXSA9IHsKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OUywgUENJX0RFVklDRV9JRF9OU19TQ3gyMDBfQlJJREdFKSwKKwkgIC5kcml2ZXJfZGF0YSA9IDAgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OUywgUENJX0RFVklDRV9JRF9OU19TQzExMDBfQlJJREdFKSwKKwkgIC5kcml2ZXJfZGF0YSA9IDAgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OUywgUENJX0RFVklDRV9JRF9OU19DUzU1MzVfSVNBKSwKKwkgIC5kcml2ZXJfZGF0YSA9IDEgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BTUQsIFBDSV9ERVZJQ0VfSURfQU1EX0NTNTUzNl9JU0EpLAorCSAgLmRyaXZlcl9kYXRhID0gMiB9Cit9OworCitzdGF0aWMgc3RydWN0IHsKKwljb25zdCBjaGFyICpuYW1lOworCWludCBiYXI7Cit9IHNjeDIwMF9kYXRhW10gPSB7CisJeyAiU0N4MjAwIiwgLTEgfSwKKwl7ICJDUzU1MzUiLCAgMCB9LAorCXsgIkNTNTUzNiIsICAwIH0KK307CisKK3N0YXRpYyBfX2luaXQgaW50IHNjeDIwMF9zY2FuX3BjaSh2b2lkKQoreworCWludCBkYXRhLCBkZXY7CisJaW50IHJjID0gLUVOT0RFVjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldjsKKworCWZvcihkZXYgPSAwOyBkZXYgPCBBUlJBWV9TSVpFKHNjeDIwMF9wY2kpOyBkZXYrKykgeworCQlwZGV2ID0gcGNpX2dldF9kZXZpY2Uoc2N4MjAwX3BjaVtkZXZdLnZlbmRvciwKKwkJCQlzY3gyMDBfcGNpW2Rldl0uZGV2aWNlLCBOVUxMKTsKKworCQlpZiAocGRldiA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJZGF0YSA9IHNjeDIwMF9wY2lbZGV2XS5kcml2ZXJfZGF0YTsKKworCQkvKiBpZiAuYmFyIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gemVybywgdGhpcyBpcyBhCisJCSAqIFBDSSBkZXZpY2UgLSBvdGhlcndpc2UsIHdlIGFzc3VtZQorCQkgICB0aGF0IHRoZSBwb3J0cyBhcmUgSVNBIGJhc2VkCisJCSovCisKKwkJaWYgKHNjeDIwMF9kYXRhW2RhdGFdLmJhciA+PSAwKQorCQkJcmMgPSBzY3gyMDBfY3JlYXRlX3BjaShzY3gyMDBfZGF0YVtkYXRhXS5uYW1lLCBwZGV2LAorCQkJCQlzY3gyMDBfZGF0YVtkYXRhXS5iYXIpOworCQllbHNlIHsKKwkJCWludCBpOworCisJCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0RFVklDRVM7ICsraSkgeworCQkJCWlmIChiYXNlW2ldID09IDApCisJCQkJCWNvbnRpbnVlOworCisJCQkJcmMgPSBzY3gyMDBfY3JlYXRlX2lzYShzY3gyMDBfZGF0YVtkYXRhXS5uYW1lLAorCQkJCQkJYmFzZVtpXSwKKwkJCQkJCWkpOworCQkJfQorCQl9CisKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBzY3gyMDBfYWNiX2luaXQodm9pZCkKIHsKLQlpbnQgaTsKLQlpbnQJcmMgPSAtRU5PREVWOworCWludCByYzsKIAogCXByX2RlYnVnKE5BTUUgIjogTmF0U2VtaSBTQ3gyMDAgQUNDRVNTLmJ1cyBEcml2ZXJcbiIpOwogCi0JLyogVmVyaWZ5IHRoYXQgdGhpcyByZWFsbHkgaXMgYSBTQ3gyMDAgcHJvY2Vzc29yICovCi0JaWYgKHBjaV9kZXZfcHJlc2VudChzY3gyMDApKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBNQVhfREVWSUNFUzsgKytpKSB7Ci0JCQlpZiAoYmFzZVtpXSA+IDApCi0JCQkJcmMgPSBzY3gyMDBfYWNiX2NyZWF0ZSgiU0N4MjAwIiwgYmFzZVtpXSwgaSk7Ci0JCX0KLQl9IGVsc2UgaWYgKHBjaV9kZXZfcHJlc2VudChkaXZpbF9wY2kpKQotCQlyYyA9IHNjeDIwMF9hZGRfY3M1NTN4KCk7CisJcmMgPSBzY3gyMDBfc2Nhbl9wY2koKTsKIAogCS8qIElmIGF0IGxlYXN0IG9uZSBidXMgd2FzIGNyZWF0ZWQsIGluaXQgbXVzdCBzdWNjZWVkICovCiAJaWYgKHNjeDIwMF9hY2JfbGlzdCkKQEAgLTU0Myw3ICs2MzAsMTQgQEAKIAkJdXAoJnNjeDIwMF9hY2JfbGlzdF9tdXRleCk7CiAKIAkJaTJjX2RlbF9hZGFwdGVyKCZpZmFjZS0+YWRhcHRlcik7Ci0JCXJlbGVhc2VfcmVnaW9uKGlmYWNlLT5iYXNlLCA4KTsKKworCQlpZiAoaWZhY2UtPnBkZXYpIHsKKwkJCXBjaV9yZWxlYXNlX3JlZ2lvbihpZmFjZS0+cGRldiwgaWZhY2UtPmJhcik7CisJCQlwY2lfZGV2X3B1dChpZmFjZS0+cGRldik7CisJCX0KKwkJZWxzZQorCQkJcmVsZWFzZV9yZWdpb24oaWZhY2UtPmJhc2UsIDgpOworCiAJCWtmcmVlKGlmYWNlKTsKIAkJZG93bigmc2N4MjAwX2FjYl9saXN0X211dGV4KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9jaGlwcy9LY29uZmlnIGIvZHJpdmVycy9pMmMvY2hpcHMvS2NvbmZpZwppbmRleCA3YWE1YzM4Li44N2VlM2NlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9jaGlwcy9LY29uZmlnCisrKyBiL2RyaXZlcnMvaTJjL2NoaXBzL0tjb25maWcKQEAgLTM5LDYgKzM5LDcgQEAKIGNvbmZpZyBTRU5TT1JTX1BDRjg1NzQKIAl0cmlzdGF0ZSAiUGhpbGlwcyBQQ0Y4NTc0IGFuZCBQQ0Y4NTc0QSIKIAlkZXBlbmRzIG9uIEkyQyAmJiBFWFBFUklNRU5UQUwKKwlkZWZhdWx0IG4KIAloZWxwCiAJICBJZiB5b3Ugc2F5IHllcyBoZXJlIHlvdSBnZXQgc3VwcG9ydCBmb3IgUGhpbGlwcyBQQ0Y4NTc0IGFuZCAKIAkgIFBDRjg1NzRBIGNoaXBzLgpAQCAtNDYsNiArNDcsOSBAQAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgcGNmODU3NC4KIAorCSAgVGhlc2UgZGV2aWNlcyBhcmUgaGFyZCB0byBkZXRlY3QgYW5kIHJhcmVseSBmb3VuZCBvbiBtYWluc3RyZWFtCisJICBoYXJkd2FyZS4gIElmIHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBTRU5TT1JTX1BDQTk1MzkKIAl0cmlzdGF0ZSAiUGhpbGlwcyBQQ0E5NTM5IDE2LWJpdCBJL08gcG9ydCIKIAlkZXBlbmRzIG9uIEkyQyAmJiBFWFBFUklNRU5UQUwKQEAgLTU5LDEyICs2MywxNiBAQAogY29uZmlnIFNFTlNPUlNfUENGODU5MQogCXRyaXN0YXRlICJQaGlsaXBzIFBDRjg1OTEiCiAJZGVwZW5kcyBvbiBJMkMgJiYgRVhQRVJJTUVOVEFMCisJZGVmYXVsdCBuCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9yIFBoaWxpcHMgUENGODU5MSBjaGlwcy4KIAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxsZWQgcGNmODU5MS4KIAorCSAgVGhlc2UgZGV2aWNlcyBhcmUgaGFyZCB0byBkZXRlY3QgYW5kIHJhcmVseSBmb3VuZCBvbiBtYWluc3RyZWFtCisJICBoYXJkd2FyZS4gIElmIHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBJU1AxMzAxX09NQVAKIAl0cmlzdGF0ZSAiUGhpbGlwcyBJU1AxMzAxIHdpdGggT01BUCBPVEciCiAJZGVwZW5kcyBvbiBJMkMgJiYgQVJDSF9PTUFQX09URwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvY2hpcHMvbTQxdDAwLmMgYi9kcml2ZXJzL2kyYy9jaGlwcy9tNDF0MDAuYwppbmRleCA5OWFiNGVjLi4yZGQwYTM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9jaGlwcy9tNDF0MDAuYworKysgYi9kcml2ZXJzL2kyYy9jaGlwcy9tNDF0MDAuYwpAQCAtMSwxMSArMSw5IEBACiAvKgotICogZHJpdmVycy9pMmMvY2hpcHMvbTQxdDAwLmMKLSAqCi0gKiBJMkMgY2xpZW50L2RyaXZlciBmb3IgdGhlIFNUIE00MVQwMCBSZWFsLVRpbWUgQ2xvY2sgY2hpcC4KKyAqIEkyQyBjbGllbnQvZHJpdmVyIGZvciB0aGUgU1QgTTQxVDAwIGZhbWlseSBvZiBpMmMgcnRjIGNoaXBzLgogICoKICAqIEF1dGhvcjogTWFyayBBLiBHcmVlciA8bWdyZWVyQG12aXN0YS5jb20+CiAgKgotICogMjAwNSAoYykgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIKKyAqIDIwMDUsIDIwMDYgKGMpIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4gVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyCiAgKiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtCiAgKiBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJlc3MKICAqIG9yIGltcGxpZWQuCkBAIC0xMyw5ICsxMSw2IEBACiAvKgogICogVGhpcyBpMmMgY2xpZW50L2RyaXZlciB3ZWRnZXMgYmV0d2VlbiB0aGUgZHJpdmVycy9jaGFyL2dlbnJ0Yy5jIFJUQwogICogaW50ZXJmYWNlIGFuZCB0aGUgU01CdXMgaW50ZXJmYWNlIG9mIHRoZSBpMmMgc3Vic3lzdGVtLgotICogSXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgdG8gdXNlIGkyYyBtc2dzL2kyY190cmFuc2ZlciBkaXJlY3RseSBidXQsIGFzCi0gKiByZWNvbW1lbmVkIGluIC4uLi9Eb2N1bWVudGF0aW9uL2kyYy93cml0aW5nLWNsaWVudHMgc2VjdGlvbgotICogIlNlbmRpbmcgYW5kIHJlY2VpdmluZyIsIHVzaW5nIFNNQnVzIGxldmVsIGNvbW11bmljYXRpb24gaXMgcHJlZmVycmVkLgogICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KQEAgLTI0LDU2ICsxOSwxMTAgQEAKICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KICNpbmNsdWRlIDxsaW51eC9ydGMuaD4KICNpbmNsdWRlIDxsaW51eC9iY2QuaD4KLSNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgotCisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvbTQxdDAwLmg+CiAjaW5jbHVkZSA8YXNtL3RpbWUuaD4KICNpbmNsdWRlIDxhc20vcnRjLmg+CiAKLSNkZWZpbmUJTTQxVDAwX0RSVl9OQU1FCQkibTQxdDAwIgotCi1zdGF0aWMgREVGSU5FX01VVEVYKG00MXQwMF9tdXRleCk7Ci0KIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtNDF0MDBfZHJpdmVyOwogc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50ICpzYXZlX2NsaWVudDsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZVtdID0geyBJMkNfQ0xJRU5UX0VORCB9Owotc3RhdGljIHVuc2lnbmVkIHNob3J0IG5vcm1hbF9hZGRyW10gPSB7IDB4NjgsIEkyQ19DTElFTlRfRU5EIH07CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2FkZHJbXSA9IHsgSTJDX0NMSUVOVF9FTkQsIEkyQ19DTElFTlRfRU5EIH07CiAKIHN0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudF9hZGRyZXNzX2RhdGEgYWRkcl9kYXRhID0gewotCS5ub3JtYWxfaTJjCQk9IG5vcm1hbF9hZGRyLAotCS5wcm9iZQkJCT0gaWdub3JlLAotCS5pZ25vcmUJCQk9IGlnbm9yZSwKKwkubm9ybWFsX2kyYwk9IG5vcm1hbF9hZGRyLAorCS5wcm9iZQkJPSBpZ25vcmUsCisJLmlnbm9yZQkJPSBpZ25vcmUsCiB9OwogCitzdHJ1Y3QgbTQxdDAwX2NoaXBfaW5mbyB7CisJdTgJdHlwZTsKKwljaGFyCSpuYW1lOworCXU4CXJlYWRfbGltaXQ7CisJdTgJc2VjOwkJLyogT2Zmc2V0cyBmb3IgY2hpcCByZWdzICovCisJdTgJbWluOworCXU4CWhvdXI7CisJdTgJZGF5OworCXU4CW1vbjsKKwl1OAl5ZWFyOworCXU4CWFsYXJtX21vbjsKKwl1OAlhbGFybV9ob3VyOworCXU4CXNxdzsKKwl1OAlzcXdfZnJlcTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgbTQxdDAwX2NoaXBfaW5mbyBtNDF0MDBfY2hpcF9pbmZvX3RibFtdID0geworCXsKKwkJLnR5cGUJCT0gTTQxVDAwX1RZUEVfTTQxVDAwLAorCQkubmFtZQkJPSAibTQxdDAwIiwKKwkJLnJlYWRfbGltaXQJPSA1LAorCQkuc2VjCQk9IDAsCisJCS5taW4JCT0gMSwKKwkJLmhvdXIJCT0gMiwKKwkJLmRheQkJPSA0LAorCQkubW9uCQk9IDUsCisJCS55ZWFyCQk9IDYsCisJfSwKKwl7CisJCS50eXBlCQk9IE00MVQwMF9UWVBFX000MVQ4MSwKKwkJLm5hbWUJCT0gIm00MXQ4MSIsCisJCS5yZWFkX2xpbWl0CT0gMSwKKwkJLnNlYwkJPSAxLAorCQkubWluCQk9IDIsCisJCS5ob3VyCQk9IDMsCisJCS5kYXkJCT0gNSwKKwkJLm1vbgkJPSA2LAorCQkueWVhcgkJPSA3LAorCQkuYWxhcm1fbW9uCT0gMHhhLAorCQkuYWxhcm1faG91cgk9IDB4YywKKwkJLnNxdwkJPSAweDEzLAorCX0sCisJeworCQkudHlwZQkJPSBNNDFUMDBfVFlQRV9NNDFUODUsCisJCS5uYW1lCQk9ICJtNDF0ODUiLAorCQkucmVhZF9saW1pdAk9IDEsCisJCS5zZWMJCT0gMSwKKwkJLm1pbgkJPSAyLAorCQkuaG91cgkJPSAzLAorCQkuZGF5CQk9IDUsCisJCS5tb24JCT0gNiwKKwkJLnllYXIJCT0gNywKKwkJLmFsYXJtX21vbgk9IDB4YSwKKwkJLmFsYXJtX2hvdXIJPSAweGMsCisJCS5zcXcJCT0gMHgxMywKKwl9LAorfTsKK3N0YXRpYyBzdHJ1Y3QgbTQxdDAwX2NoaXBfaW5mbyAqbTQxdDAwX2NoaXA7CisKIHVsb25nCiBtNDF0MDBfZ2V0X3J0Y190aW1lKHZvaWQpCiB7Ci0JczMyCXNlYywgbWluLCBob3VyLCBkYXksIG1vbiwgeWVhcjsKLQlzMzIJc2VjMSwgbWluMSwgaG91cjEsIGRheTEsIG1vbjEsIHllYXIxOwotCXVsb25nCWxpbWl0ID0gMTA7CisJczMyIHNlYywgbWluLCBob3VyLCBkYXksIG1vbiwgeWVhcjsKKwlzMzIgc2VjMSwgbWluMSwgaG91cjEsIGRheTEsIG1vbjEsIHllYXIxOworCXU4IHJlYWRzID0gMDsKKwl1OCBidWZbOF0sIG1zZ2J1ZlsxXSA9IHsgMCB9OyAvKiBvZmZzZXQgaW50byBydGMncyByZWdzICovCisJc3RydWN0IGkyY19tc2cgbXNnc1tdID0geworCQl7CisJCQkuYWRkcgk9IHNhdmVfY2xpZW50LT5hZGRyLAorCQkJLmZsYWdzCT0gMCwKKwkJCS5sZW4JPSAxLAorCQkJLmJ1Zgk9IG1zZ2J1ZiwKKwkJfSwKKwkJeworCQkJLmFkZHIJPSBzYXZlX2NsaWVudC0+YWRkciwKKwkJCS5mbGFncwk9IEkyQ19NX1JELAorCQkJLmxlbgk9IDgsCisJCQkuYnVmCT0gYnVmLAorCQl9LAorCX07CiAKIAlzZWMgPSBtaW4gPSBob3VyID0gZGF5ID0gbW9uID0geWVhciA9IDA7Ci0Jc2VjMSA9IG1pbjEgPSBob3VyMSA9IGRheTEgPSBtb24xID0geWVhcjEgPSAwOwogCi0JbXV0ZXhfbG9jaygmbTQxdDAwX211dGV4KTsKIAlkbyB7Ci0JCWlmICgoKHNlYyA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShzYXZlX2NsaWVudCwgMCkpID49IDApCi0JCQkmJiAoKG1pbiA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShzYXZlX2NsaWVudCwgMSkpCi0JCQkJPj0gMCkKLQkJCSYmICgoaG91ciA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShzYXZlX2NsaWVudCwgMikpCi0JCQkJPj0gMCkKLQkJCSYmICgoZGF5ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKHNhdmVfY2xpZW50LCA0KSkKLQkJCQk+PSAwKQotCQkJJiYgKChtb24gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoc2F2ZV9jbGllbnQsIDUpKQotCQkJCT49IDApCi0JCQkmJiAoKHllYXIgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoc2F2ZV9jbGllbnQsIDYpKQotCQkJCT49IDApCi0JCQkmJiAoKHNlYyA9PSBzZWMxKSAmJiAobWluID09IG1pbjEpICYmIChob3VyID09IGhvdXIxKQotCQkJCSYmIChkYXkgPT0gZGF5MSkgJiYgKG1vbiA9PSBtb24xKQotCQkJCSYmICh5ZWFyID09IHllYXIxKSkpCi0KLQkJCQlicmVhazsKKwkJaWYgKGkyY190cmFuc2ZlcihzYXZlX2NsaWVudC0+YWRhcHRlciwgbXNncywgMikgPCAwKQorCQkJZ290byByZWFkX2VycjsKIAogCQlzZWMxID0gc2VjOwogCQltaW4xID0gbWluOwpAQCAtODEsNjkgKzEzMCw4OCBAQAogCQlkYXkxID0gZGF5OwogCQltb24xID0gbW9uOwogCQl5ZWFyMSA9IHllYXI7Ci0JfSB3aGlsZSAoLS1saW1pdCA+IDApOwotCW11dGV4X3VubG9jaygmbTQxdDAwX211dGV4KTsKIAotCWlmIChsaW1pdCA9PSAwKSB7Ci0JCWRldl93YXJuKCZzYXZlX2NsaWVudC0+ZGV2LAotCQkJIm00MXQwMDogY2FuJ3QgcmVhZCBydGMgY2hpcFxuIik7Ci0JCXNlYyA9IG1pbiA9IGhvdXIgPSBkYXkgPSBtb24gPSB5ZWFyID0gMDsKLQl9CisJCXNlYyA9IGJ1ZlttNDF0MDBfY2hpcC0+c2VjXSAmIDB4N2Y7CisJCW1pbiA9IGJ1ZlttNDF0MDBfY2hpcC0+bWluXSAmIDB4N2Y7CisJCWhvdXIgPSBidWZbbTQxdDAwX2NoaXAtPmhvdXJdICYgMHgzZjsKKwkJZGF5ID0gYnVmW200MXQwMF9jaGlwLT5kYXldICYgMHgzZjsKKwkJbW9uID0gYnVmW200MXQwMF9jaGlwLT5tb25dICYgMHgxZjsKKwkJeWVhciA9IGJ1ZlttNDF0MDBfY2hpcC0+eWVhcl07CisJfSB3aGlsZSAoKCsrcmVhZHMgPCBtNDF0MDBfY2hpcC0+cmVhZF9saW1pdCkgJiYgKChzZWMgIT0gc2VjMSkKKwkJCXx8IChtaW4gIT0gbWluMSkgfHwgKGhvdXIgIT0gaG91cjEpIHx8IChkYXkgIT0gZGF5MSkKKwkJCXx8IChtb24gIT0gbW9uMSkgfHwgKHllYXIgIT0geWVhcjEpKSk7CiAKLQlzZWMgJj0gMHg3ZjsKLQltaW4gJj0gMHg3ZjsKLQlob3VyICY9IDB4M2Y7Ci0JZGF5ICY9IDB4M2Y7Ci0JbW9uICY9IDB4MWY7Ci0JeWVhciAmPSAweGZmOworCWlmICgobTQxdDAwX2NoaXAtPnJlYWRfbGltaXQgPiAxKSAmJiAoKHNlYyAhPSBzZWMxKSB8fCAobWluICE9IG1pbjEpCisJCQl8fCAoaG91ciAhPSBob3VyMSkgfHwgKGRheSAhPSBkYXkxKSB8fCAobW9uICE9IG1vbjEpCisJCQl8fCAoeWVhciAhPSB5ZWFyMSkpKQorCQlnb3RvIHJlYWRfZXJyOwogCi0JQkNEX1RPX0JJTihzZWMpOwotCUJDRF9UT19CSU4obWluKTsKLQlCQ0RfVE9fQklOKGhvdXIpOwotCUJDRF9UT19CSU4oZGF5KTsKLQlCQ0RfVE9fQklOKG1vbik7Ci0JQkNEX1RPX0JJTih5ZWFyKTsKKwlzZWMgPSBCQ0QyQklOKHNlYyk7CisJbWluID0gQkNEMkJJTihtaW4pOworCWhvdXIgPSBCQ0QyQklOKGhvdXIpOworCWRheSA9IEJDRDJCSU4oZGF5KTsKKwltb24gPSBCQ0QyQklOKG1vbik7CisJeWVhciA9IEJDRDJCSU4oeWVhcik7CiAKIAl5ZWFyICs9IDE5MDA7CiAJaWYgKHllYXIgPCAxOTcwKQogCQl5ZWFyICs9IDEwMDsKIAogCXJldHVybiBta3RpbWUoeWVhciwgbW9uLCBkYXksIGhvdXIsIG1pbiwgc2VjKTsKKworcmVhZF9lcnI6CisJZGV2X2Vycigmc2F2ZV9jbGllbnQtPmRldiwgIm00MXQwMF9nZXRfcnRjX3RpbWU6IFJlYWQgZXJyb3JcbiIpOworCXJldHVybiAwOwogfQorRVhQT1JUX1NZTUJPTF9HUEwobTQxdDAwX2dldF9ydGNfdGltZSk7CiAKIHN0YXRpYyB2b2lkCiBtNDF0MDBfc2V0KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgcnRjX3RpbWUJdG07Ci0JdWxvbmcJbm93dGltZSA9ICoodWxvbmcgKilhcmc7CisJaW50IG5vd3RpbWUgPSAqKGludCAqKWFyZzsKKwlzMzIgc2VjLCBtaW4sIGhvdXIsIGRheSwgbW9uLCB5ZWFyOworCXU4IHdidWZbOV0sICpidWYgPSAmd2J1ZlsxXSwgbXNnYnVmWzFdID0geyAwIH07CisJc3RydWN0IGkyY19tc2cgbXNnc1tdID0geworCQl7CisJCQkuYWRkcgk9IHNhdmVfY2xpZW50LT5hZGRyLAorCQkJLmZsYWdzCT0gMCwKKwkJCS5sZW4JPSAxLAorCQkJLmJ1Zgk9IG1zZ2J1ZiwKKwkJfSwKKwkJeworCQkJLmFkZHIJPSBzYXZlX2NsaWVudC0+YWRkciwKKwkJCS5mbGFncwk9IEkyQ19NX1JELAorCQkJLmxlbgk9IDgsCisJCQkuYnVmCT0gYnVmLAorCQl9LAorCX07CiAKIAl0b190bShub3d0aW1lLCAmdG0pOwogCXRtLnRtX3llYXIgPSAodG0udG1feWVhciAtIDE5MDApICUgMTAwOwogCi0JQklOX1RPX0JDRCh0bS50bV9zZWMpOwotCUJJTl9UT19CQ0QodG0udG1fbWluKTsKLQlCSU5fVE9fQkNEKHRtLnRtX2hvdXIpOwotCUJJTl9UT19CQ0QodG0udG1fbW9uKTsKLQlCSU5fVE9fQkNEKHRtLnRtX21kYXkpOwotCUJJTl9UT19CQ0QodG0udG1feWVhcik7CisJc2VjID0gQklOMkJDRCh0bS50bV9zZWMpOworCW1pbiA9IEJJTjJCQ0QodG0udG1fbWluKTsKKwlob3VyID0gQklOMkJDRCh0bS50bV9ob3VyKTsKKwlkYXkgPSBCSU4yQkNEKHRtLnRtX21kYXkpOworCW1vbiA9IEJJTjJCQ0QodG0udG1fbW9uKTsKKwl5ZWFyID0gQklOMkJDRCh0bS50bV95ZWFyKTsKIAotCW11dGV4X2xvY2soJm00MXQwMF9tdXRleCk7Ci0JaWYgKChpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHNhdmVfY2xpZW50LCAwLCB0bS50bV9zZWMgJiAweDdmKSA8IDApCi0JCXx8IChpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHNhdmVfY2xpZW50LCAxLCB0bS50bV9taW4gJiAweDdmKQotCQkJPCAwKQotCQl8fCAoaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShzYXZlX2NsaWVudCwgMiwgdG0udG1faG91ciAmIDB4M2YpCi0JCQk8IDApCi0JCXx8IChpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHNhdmVfY2xpZW50LCA0LCB0bS50bV9tZGF5ICYgMHgzZikKLQkJCTwgMCkKLQkJfHwgKGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoc2F2ZV9jbGllbnQsIDUsIHRtLnRtX21vbiAmIDB4MWYpCi0JCQk8IDApCi0JCXx8IChpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHNhdmVfY2xpZW50LCA2LCB0bS50bV95ZWFyICYgMHhmZikKLQkJCTwgMCkpCisJLyogUmVhZCByZWcgdmFsdWVzIGludG8gYnVmWzAuLjddL3didWZbMS4uOF0gKi8KKwlpZiAoaTJjX3RyYW5zZmVyKHNhdmVfY2xpZW50LT5hZGFwdGVyLCBtc2dzLCAyKSA8IDApIHsKKwkJZGV2X2Vycigmc2F2ZV9jbGllbnQtPmRldiwgIm00MXQwMF9zZXQ6IFJlYWQgZXJyb3JcbiIpOworCQlyZXR1cm47CisJfQogCi0JCWRldl93YXJuKCZzYXZlX2NsaWVudC0+ZGV2LCJtNDF0MDA6IGNhbid0IHdyaXRlIHRvIHJ0YyBjaGlwXG4iKTsKKwl3YnVmWzBdID0gMDsgLyogb2Zmc2V0IGludG8gcnRjJ3MgcmVncyAqLworCWJ1ZlttNDF0MDBfY2hpcC0+c2VjXSA9IChidWZbbTQxdDAwX2NoaXAtPnNlY10gJiB+MHg3ZikgfCAoc2VjICYgMHg3Zik7CisJYnVmW200MXQwMF9jaGlwLT5taW5dID0gKGJ1ZlttNDF0MDBfY2hpcC0+bWluXSAmIH4weDdmKSB8IChtaW4gJiAweDdmKTsKKwlidWZbbTQxdDAwX2NoaXAtPmhvdXJdID0gKGJ1ZlttNDF0MDBfY2hpcC0+aG91cl0gJiB+MHgzZikgfCAoaG91ciYgMHgzZik7CisJYnVmW200MXQwMF9jaGlwLT5kYXldID0gKGJ1ZlttNDF0MDBfY2hpcC0+ZGF5XSAmIH4weDNmKSB8IChkYXkgJiAweDNmKTsKKwlidWZbbTQxdDAwX2NoaXAtPm1vbl0gPSAoYnVmW200MXQwMF9jaGlwLT5tb25dICYgfjB4MWYpIHwgKG1vbiAmIDB4MWYpOwogCi0JbXV0ZXhfdW5sb2NrKCZtNDF0MDBfbXV0ZXgpOwotCXJldHVybjsKKwlpZiAoaTJjX21hc3Rlcl9zZW5kKHNhdmVfY2xpZW50LCB3YnVmLCA5KSA8IDApCisJCWRldl9lcnIoJnNhdmVfY2xpZW50LT5kZXYsICJtNDF0MDBfc2V0OiBXcml0ZSBlcnJvclxuIik7CiB9CiAKIHN0YXRpYyB1bG9uZyBuZXdfdGltZTsKQEAgLTE2Miw2ICsyMzAsNDggQEAKIAogCXJldHVybiAwOwogfQorRVhQT1JUX1NZTUJPTF9HUEwobTQxdDAwX3NldF9ydGNfdGltZSk7CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKglwbGF0Zm9ybV9kYXRhIERyaXZlciBJbnRlcmZhY2UKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworc3RhdGljIGludCBfX2luaXQKK200MXQwMF9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBtNDF0MDBfcGxhdGZvcm1fZGF0YSAqcGRhdGE7CisJaW50IGk7CisKKwlpZiAocGRldiAmJiAocGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YSkpIHsKKwkJbm9ybWFsX2FkZHJbMF0gPSBwZGF0YS0+aTJjX2FkZHI7CisKKwkJZm9yIChpPTA7IGk8QVJSQVlfU0laRShtNDF0MDBfY2hpcF9pbmZvX3RibCk7IGkrKykKKwkJCWlmIChtNDF0MDBfY2hpcF9pbmZvX3RibFtpXS50eXBlID09IHBkYXRhLT50eXBlKSB7CisJCQkJbTQxdDAwX2NoaXAgPSAmbTQxdDAwX2NoaXBfaW5mb190YmxbaV07CisJCQkJbTQxdDAwX2NoaXAtPnNxd19mcmVxID0gcGRhdGEtPnNxd19mcmVxOworCQkJCXJldHVybiAwOworCQkJfQorCX0KKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIGludCBfX2V4aXQKK200MXQwMF9wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbTQxdDAwX3BsYXRmb3JtX2RyaXZlciA9IHsKKwkucHJvYmUgID0gbTQxdDAwX3BsYXRmb3JtX3Byb2JlLAorCS5yZW1vdmUgPSBtNDF0MDBfcGxhdGZvcm1fcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCQkubmFtZSAgPSBNNDFUMDBfRFJWX05BTUUsCisJfSwKK307CiAKIC8qCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE3NiwyMyArMjg2LDcxIEBACiAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKIAlpbnQgcmM7CiAKKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGFkYXAsIEkyQ19GVU5DX0kyQworCQkJfCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQorCQlyZXR1cm4gMDsKKwogCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMmNfY2xpZW50KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjbGllbnQpCiAJCXJldHVybiAtRU5PTUVNOwogCi0Jc3RybmNweShjbGllbnQtPm5hbWUsIE00MVQwMF9EUlZfTkFNRSwgSTJDX05BTUVfU0laRSk7CisJc3RybGNweShjbGllbnQtPm5hbWUsIG00MXQwMF9jaGlwLT5uYW1lLCBJMkNfTkFNRV9TSVpFKTsKIAljbGllbnQtPmFkZHIgPSBhZGRyOwogCWNsaWVudC0+YWRhcHRlciA9IGFkYXA7CiAJY2xpZW50LT5kcml2ZXIgPSAmbTQxdDAwX2RyaXZlcjsKIAotCWlmICgocmMgPSBpMmNfYXR0YWNoX2NsaWVudChjbGllbnQpKSAhPSAwKSB7Ci0JCWtmcmVlKGNsaWVudCk7Ci0JCXJldHVybiByYzsKKwlpZiAoKHJjID0gaTJjX2F0dGFjaF9jbGllbnQoY2xpZW50KSkpCisJCWdvdG8gYXR0YWNoX2VycjsKKworCWlmIChtNDF0MDBfY2hpcC0+dHlwZSAhPSBNNDFUMDBfVFlQRV9NNDFUMDApIHsKKwkJLyogSWYgYXNrZWQsIGRpc2FibGUgU1FXLCBzZXQgU1FXIGZyZXF1ZW5jeSAmIHJlLWVuYWJsZSAqLworCQlpZiAobTQxdDAwX2NoaXAtPnNxd19mcmVxKQorCQkJaWYgKCgocmMgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LAorCQkJCQltNDF0MDBfY2hpcC0+YWxhcm1fbW9uKSkgPCAwKQorCQkJIHx8ICgocmMgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJbTQxdDAwX2NoaXAtPmFsYXJtX21vbiwgcmMgJiB+MHg0MCkpIDwwKQorCQkJIHx8ICgocmMgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJbTQxdDAwX2NoaXAtPnNxdywKKwkJCQkJbTQxdDAwX2NoaXAtPnNxd19mcmVxKSkgPCAwKQorCQkJIHx8ICgocmMgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQkJbTQxdDAwX2NoaXAtPmFsYXJtX21vbiwgcmMgfCAweDQwKSkgPDApKQorCQkJCWdvdG8gc3F3X2VycjsKKworCQkvKiBNYWtlIHN1cmUgSFQgKEhhbHQgVXBkYXRlKSBiaXQgaXMgY2xlYXJlZCAqLworCQlpZiAoKHJjID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwKKwkJCQltNDF0MDBfY2hpcC0+YWxhcm1faG91cikpIDwgMCkKKwkJCWdvdG8gaHRfZXJyOworCisJCWlmIChyYyAmIDB4NDApCisJCQlpZiAoKHJjID0gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsCisJCQkJCW00MXQwMF9jaGlwLT5hbGFybV9ob3VyLCByYyAmIH4weDQwKSk8MCkKKwkJCQlnb3RvIGh0X2VycjsKIAl9CiAKLQltNDF0MDBfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgibTQxdDAwIik7CisJLyogTWFrZSBzdXJlIFNUIChzdG9wKSBiaXQgaXMgY2xlYXJlZCAqLworCWlmICgocmMgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBtNDF0MDBfY2hpcC0+c2VjKSkgPCAwKQorCQlnb3RvIHN0X2VycjsKKworCWlmIChyYyAmIDB4ODApCisJCWlmICgocmMgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgbTQxdDAwX2NoaXAtPnNlYywKKwkJCQlyYyAmIH4weDgwKSkgPCAwKQorCQkJZ290byBzdF9lcnI7CisKKwltNDF0MDBfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShtNDF0MDBfY2hpcC0+bmFtZSk7CiAJc2F2ZV9jbGllbnQgPSBjbGllbnQ7CiAJcmV0dXJuIDA7CisKK3N0X2VycjoKKwlkZXZfZXJyKCZjbGllbnQtPmRldiwgIm00MXQwMF9wcm9iZTogQ2FuJ3QgY2xlYXIgU1QgYml0XG4iKTsKKwlnb3RvIGF0dGFjaF9lcnI7CitodF9lcnI6CisJZGV2X2VycigmY2xpZW50LT5kZXYsICJtNDF0MDBfcHJvYmU6IENhbid0IGNsZWFyIEhUIGJpdFxuIik7CisJZ290byBhdHRhY2hfZXJyOworc3F3X2VycjoKKwlkZXZfZXJyKCZjbGllbnQtPmRldiwgIm00MXQwMF9wcm9iZTogQ2FuJ3Qgc2V0IFNRVyBGcmVxdWVuY3lcbiIpOworYXR0YWNoX2VycjoKKwlrZnJlZShjbGllbnQpOworCXJldHVybiByYzsKIH0KIAogc3RhdGljIGludApAQCAtMjA0LDcgKzM2Miw3IEBACiBzdGF0aWMgaW50CiBtNDF0MDBfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiB7Ci0JaW50CXJjOworCWludCByYzsKIAogCWlmICgocmMgPSBpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpKSA9PSAwKSB7CiAJCWtmcmVlKGNsaWVudCk7CkBAIC0yMjUsMTQgKzM4MywxOCBAQAogc3RhdGljIGludCBfX2luaXQKIG00MXQwMF9pbml0KHZvaWQpCiB7Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtNDF0MDBfZHJpdmVyKTsKKwlpbnQgcmM7CisKKwlpZiAoIShyYyA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmbTQxdDAwX3BsYXRmb3JtX2RyaXZlcikpKQorCQlyYyA9IGkyY19hZGRfZHJpdmVyKCZtNDF0MDBfZHJpdmVyKTsKKwlyZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyB2b2lkIF9fZXhpdAogbTQxdDAwX2V4aXQodm9pZCkKIHsKIAlpMmNfZGVsX2RyaXZlcigmbTQxdDAwX2RyaXZlcik7Ci0JcmV0dXJuOworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZtNDF0MDBfcGxhdGZvcm1fZHJpdmVyKTsKIH0KIAogbW9kdWxlX2luaXQobTQxdDAwX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYyBiL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKaW5kZXggNDVlMmNkZi4uYTQ1MTU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYworKysgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCkBAIC05MTYsNyArOTE2LDcgQEAKIH0KIAogczMyIGkyY19zbWJ1c193cml0ZV9ibG9ja19kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IGNvbW1hbmQsCi0JCQkgICAgICAgdTggbGVuZ3RoLCB1OCAqdmFsdWVzKQorCQkJICAgICAgIHU4IGxlbmd0aCwgY29uc3QgdTggKnZhbHVlcykKIHsKIAl1bmlvbiBpMmNfc21idXNfZGF0YSBkYXRhOwogCkBAIC05NDQsNyArOTQ0LDcgQEAKIH0KIAogczMyIGkyY19zbWJ1c193cml0ZV9pMmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBjb21tYW5kLAotCQkJCSAgIHU4IGxlbmd0aCwgdTggKnZhbHVlcykKKwkJCQkgICB1OCBsZW5ndGgsIGNvbnN0IHU4ICp2YWx1ZXMpCiB7CiAJdW5pb24gaTJjX3NtYnVzX2RhdGEgZGF0YTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvaTJjLWRldi5jIGIvZHJpdmVycy9pMmMvaTJjLWRldi5jCmluZGV4IGVkN2VlZDMuLjU4Y2NkZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2kyYy1kZXYuYworKysgYi9kcml2ZXJzL2kyYy9pMmMtZGV2LmMKQEAgLTQyNiwxMCArNDI2LDcgQEAKIAogCS8qIHJlZ2lzdGVyIHRoaXMgaTJjIGRldmljZSB3aXRoIHRoZSBkcml2ZXIgY29yZSAqLwogCWkyY19kZXYtPmFkYXAgPSBhZGFwOwotCWlmIChhZGFwLT5kZXYucGFyZW50ID09ICZwbGF0Zm9ybV9idXMpCi0JCWRldiA9ICZhZGFwLT5kZXY7Ci0JZWxzZQotCQlkZXYgPSBhZGFwLT5kZXYucGFyZW50OworCWRldiA9ICZhZGFwLT5kZXY7CiAJaTJjX2Rldi0+Y2xhc3NfZGV2ID0gY2xhc3NfZGV2aWNlX2NyZWF0ZShpMmNfZGV2X2NsYXNzLCBOVUxMLAogCQkJCQkJIE1LREVWKEkyQ19NQUpPUiwgaTJjX2Rldi0+bWlub3IpLAogCQkJCQkJIGRldiwgImkyYy0lZCIsIGkyY19kZXYtPm1pbm9yKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1jZC5jIGIvZHJpdmVycy9pZGUvaWRlLWNkLmMKaW5kZXggYjRhNDFkNi4uNmRlM2NkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWNkLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWNkLmMKQEAgLTE0NTEsOSArMTQ1MSwxMiBAQAogCX0gZWxzZSB7CiBjb25mdXNlZDoKIAkJcHJpbnRrIChLRVJOX0VSUiAiJXM6IGNkcm9tX3BjX2ludHI6IFRoZSBkcml2ZSAiCi0JCQkiYXBwZWFycyBjb25mdXNlZCAoaXJlYXNvbiA9IDB4JTAyeClcbiIsCisJCQkiYXBwZWFycyBjb25mdXNlZCAoaXJlYXNvbiA9IDB4JTAyeCkuICIKKwkJCSJUcnlpbmcgdG8gcmVjb3ZlciBieSBlbmRpbmcgcmVxdWVzdC5cbiIsCiAJCQlkcml2ZS0+bmFtZSwgaXJlYXNvbik7CiAJCXJxLT5mbGFncyB8PSBSRVFfRkFJTEVEOworCQljZHJvbV9lbmRfcmVxdWVzdChkcml2ZSwgMCk7CisJCXJldHVybiBpZGVfc3RvcHBlZDsKIAl9CiAKIAkvKiBOb3cgd2Ugd2FpdCBmb3IgYW5vdGhlciBpbnRlcnJ1cHQuICovCkBAIC0xNzIyLDggKzE3MjUsNyBAQAogCQl9CiAJfQogCi0JaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCi0JCUJVRygpOworCUJVR19PTihIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKTsKIAogCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgY2Ryb21fbmV3cGNfaW50ciwgcnEtPnRpbWVvdXQsIE5VTEwpOwogCXJldHVybiBpZGVfc3RhcnRlZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1kbWEuYyBiL2RyaXZlcnMvaWRlL2lkZS1kbWEuYwppbmRleCBjNDgxYmU4Li43ODNhMjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtZG1hLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWRtYS5jCkBAIC0yMDYsOCArMjA2LDcgQEAKIAlpZGVfaHdpZl90ICpod2lmID0gSFdJRihkcml2ZSk7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IGh3aWYtPnNnX3RhYmxlOwogCi0JaWYgKChycS0+ZmxhZ3MgJiBSRVFfRFJJVkVfVEFTS0ZJTEUpICYmIHJxLT5ucl9zZWN0b3JzID4gMjU2KQotCQlCVUcoKTsKKwlCVUdfT04oKHJxLT5mbGFncyAmIFJFUV9EUklWRV9UQVNLRklMRSkgJiYgcnEtPm5yX3NlY3RvcnMgPiAyNTYpOwogCiAJaWRlX21hcF9zZyhkcml2ZSwgcnEpOwogCkBAIC05NDcsOCArOTQ2LDcgQEAKIAl9CiAJcHJpbnRrKCJcbiIpOwogCi0JaWYgKCEoaHdpZi0+ZG1hX21hc3RlcikpCi0JCUJVRygpOworCUJVR19PTighaHdpZi0+ZG1hX21hc3Rlcik7CiB9CiAKIEVYUE9SVF9TWU1CT0xfR1BMKGlkZV9zZXR1cF9kbWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jIGIvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCmluZGV4IGE1M2UzY2UuLmExMTc5ZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMKQEAgLTg5OCw4ICs4OTgsNyBAQAogCQkJCQkidG8gc2VuZCB1cyBtb3JlIGRhdGEgdGhhbiBleHBlY3RlZCAiCiAJCQkJCSItIGRpc2NhcmRpbmcgZGF0YVxuIik7CiAJCQkJaWRlZmxvcHB5X2Rpc2NhcmRfZGF0YShkcml2ZSxiY291bnQuYWxsKTsKLQkJCQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkKLQkJCQkJQlVHKCk7CisJCQkJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpOwogCQkJCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwKIAkJCQkJCSZpZGVmbG9wcHlfcGNfaW50ciwKIAkJCQkJCUlERUZMT1BQWV9XQUlUX0NNRCwKQEAgLTkzMiw4ICs5MzEsNyBAQAogCXBjLT5hY3R1YWxseV90cmFuc2ZlcnJlZCArPSBiY291bnQuYWxsOwogCXBjLT5jdXJyZW50X3Bvc2l0aW9uICs9IGJjb3VudC5hbGw7CiAKLQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkKLQkJQlVHKCk7CisJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpOwogCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJmlkZWZsb3BweV9wY19pbnRyLCBJREVGTE9QUFlfV0FJVF9DTUQsIE5VTEwpOwkJLyogQW5kIHNldCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYWdhaW4gKi8KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7CiB9CkBAIC05NjAsOCArOTU4LDcgQEAKIAkJCQkiaXNzdWluZyBhIHBhY2tldCBjb21tYW5kXG4iKTsKIAkJcmV0dXJuIGlkZV9kb19yZXNldChkcml2ZSk7CiAJfQotCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQotCQlCVUcoKTsKKwlCVUdfT04oSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCk7CiAJLyogU2V0IHRoZSBpbnRlcnJ1cHQgcm91dGluZSAqLwogCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJmlkZWZsb3BweV9wY19pbnRyLCBJREVGTE9QUFlfV0FJVF9DTUQsIE5VTEwpOwogCS8qIFNlbmQgdGhlIGFjdHVhbCBwYWNrZXQgKi8KQEAgLTEwMTcsOCArMTAxNCw3IEBACiAJICogNDAgYW5kIDUwbXNlYyB3b3JrIHdlbGwuIGlkZWZsb3BweV9wY19pbnRyIHdpbGwgbm90IGJlIGFjdHVhbGx5CiAJICogdXNlZCB1bnRpbCBhZnRlciB0aGUgcGFja2V0IGlzIG1vdmVkIGluIGFib3V0IDUwIG1zZWMuCiAJICovCi0JaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCi0JCUJVRygpOworCUJVR19PTihIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKTsKIAlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsIAogCSAgJmlkZWZsb3BweV9wY19pbnRyLCAJCS8qIHNlcnZpY2Ugcm91dGluZSBmb3IgcGFja2V0IGNvbW1hbmQgKi8KIAkgIGZsb3BweS0+dGlja3MsCQkvKiB3YWl0IHRoaXMgbG9uZyBiZWZvcmUgImZhaWxpbmciICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtaW8uYyBiL2RyaXZlcnMvaWRlL2lkZS1pby5jCmluZGV4IGMwMTYxNWQuLjRmMmYxMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1pby5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1pby5jCkBAIC0xNDIsMzggKzE0Miw0MSBAQAogCiBzdGF0aWMgdm9pZCBpZGVfY29tcGxldGVfcG93ZXJfc3RlcChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSwgdTggc3RhdCwgdTggZXJyb3IpCiB7CisJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmVuZF9pb19kYXRhOworCiAJaWYgKGRyaXZlLT5tZWRpYSAhPSBpZGVfZGlzaykKIAkJcmV0dXJuOwogCi0Jc3dpdGNoIChycS0+cG0tPnBtX3N0ZXApIHsKKwlzd2l0Y2ggKHBtLT5wbV9zdGVwKSB7CiAJY2FzZSBpZGVfcG1fZmx1c2hfY2FjaGU6CS8qIFN1c3BlbmQgc3RlcCAxIChmbHVzaCBjYWNoZSkgY29tcGxldGUgKi8KLQkJaWYgKHJxLT5wbS0+cG1fc3RhdGUgPT0gUE1fRVZFTlRfRlJFRVpFKQotCQkJcnEtPnBtLT5wbV9zdGVwID0gaWRlX3BtX3N0YXRlX2NvbXBsZXRlZDsKKwkJaWYgKHBtLT5wbV9zdGF0ZSA9PSBQTV9FVkVOVF9GUkVFWkUpCisJCQlwbS0+cG1fc3RlcCA9IGlkZV9wbV9zdGF0ZV9jb21wbGV0ZWQ7CiAJCWVsc2UKLQkJCXJxLT5wbS0+cG1fc3RlcCA9IGlkZWRpc2tfcG1fc3RhbmRieTsKKwkJCXBtLT5wbV9zdGVwID0gaWRlZGlza19wbV9zdGFuZGJ5OwogCQlicmVhazsKIAljYXNlIGlkZWRpc2tfcG1fc3RhbmRieToJLyogU3VzcGVuZCBzdGVwIDIgKHN0YW5kYnkpIGNvbXBsZXRlICovCi0JCXJxLT5wbS0+cG1fc3RlcCA9IGlkZV9wbV9zdGF0ZV9jb21wbGV0ZWQ7CisJCXBtLT5wbV9zdGVwID0gaWRlX3BtX3N0YXRlX2NvbXBsZXRlZDsKIAkJYnJlYWs7CiAJY2FzZSBpZGVkaXNrX3BtX2lkbGU6CQkvKiBSZXN1bWUgc3RlcCAxIChpZGxlKSBjb21wbGV0ZSAqLwotCQlycS0+cG0tPnBtX3N0ZXAgPSBpZGVfcG1fcmVzdG9yZV9kbWE7CisJCXBtLT5wbV9zdGVwID0gaWRlX3BtX3Jlc3RvcmVfZG1hOwogCQlicmVhazsKIAl9CiB9CiAKIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRlX3N0YXJ0X3Bvd2VyX3N0ZXAoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCiB7CisJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmVuZF9pb19kYXRhOwogCWlkZV90YXNrX3QgKmFyZ3MgPSBycS0+c3BlY2lhbDsKIAogCW1lbXNldChhcmdzLCAwLCBzaXplb2YoKmFyZ3MpKTsKIAogCWlmIChkcml2ZS0+bWVkaWEgIT0gaWRlX2Rpc2spIHsKIAkJLyogc2tpcCBpZGVkaXNrX3BtX2lkbGUgZm9yIEFUQVBJIGRldmljZXMgKi8KLQkJaWYgKHJxLT5wbS0+cG1fc3RlcCA9PSBpZGVkaXNrX3BtX2lkbGUpCi0JCQlycS0+cG0tPnBtX3N0ZXAgPSBpZGVfcG1fcmVzdG9yZV9kbWE7CisJCWlmIChwbS0+cG1fc3RlcCA9PSBpZGVkaXNrX3BtX2lkbGUpCisJCQlwbS0+cG1fc3RlcCA9IGlkZV9wbV9yZXN0b3JlX2RtYTsKIAl9CiAKLQlzd2l0Y2ggKHJxLT5wbS0+cG1fc3RlcCkgeworCXN3aXRjaCAocG0tPnBtX3N0ZXApIHsKIAljYXNlIGlkZV9wbV9mbHVzaF9jYWNoZToJLyogU3VzcGVuZCBzdGVwIDEgKGZsdXNoIGNhY2hlKSAqLwogCQlpZiAoZHJpdmUtPm1lZGlhICE9IGlkZV9kaXNrKQogCQkJYnJlYWs7CkBAIC0yMTUsNyArMjE4LDcgQEAKIAkJZHJpdmUtPmh3aWYtPmlkZV9kbWFfY2hlY2soZHJpdmUpOwogCQlicmVhazsKIAl9Ci0JcnEtPnBtLT5wbV9zdGVwID0gaWRlX3BtX3N0YXRlX2NvbXBsZXRlZDsKKwlwbS0+cG1fc3RlcCA9IGlkZV9wbV9zdGF0ZV9jb21wbGV0ZWQ7CiAJcmV0dXJuIGlkZV9zdG9wcGVkOwogfQogCkBAIC0zNjIsMTIgKzM2NSwxMyBAQAogCQkJfQogCQl9CiAJfSBlbHNlIGlmIChibGtfcG1fcmVxdWVzdChycSkpIHsKKwkJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmVuZF9pb19kYXRhOwogI2lmZGVmIERFQlVHX1BNCiAJCXByaW50aygiJXM6IGNvbXBsZXRlX3Bvd2VyX3N0ZXAoc3RlcDogJWQsIHN0YXQ6ICV4LCBlcnI6ICV4KVxuIiwKIAkJCWRyaXZlLT5uYW1lLCBycS0+cG0tPnBtX3N0ZXAsIHN0YXQsIGVycik7CiAjZW5kaWYKIAkJaWRlX2NvbXBsZXRlX3Bvd2VyX3N0ZXAoZHJpdmUsIHJxLCBzdGF0LCBlcnIpOwotCQlpZiAocnEtPnBtLT5wbV9zdGVwID09IGlkZV9wbV9zdGF0ZV9jb21wbGV0ZWQpCisJCWlmIChwbS0+cG1fc3RlcCA9PSBpZGVfcG1fc3RhdGVfY29tcGxldGVkKQogCQkJaWRlX2NvbXBsZXRlX3BtX3JlcXVlc3QoZHJpdmUsIHJxKTsKIAkJcmV0dXJuOwogCX0KQEAgLTg3MSw2ICs4NzUsMzkgQEAKICAJcmV0dXJuIGlkZV9zdG9wcGVkOwogfQogCitzdGF0aWMgdm9pZCBpZGVfY2hlY2tfcG1fc3RhdGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmVuZF9pb19kYXRhOworCisJaWYgKGJsa19wbV9zdXNwZW5kX3JlcXVlc3QocnEpICYmCisJICAgIHBtLT5wbV9zdGVwID09IGlkZV9wbV9zdGF0ZV9zdGFydF9zdXNwZW5kKQorCQkvKiBNYXJrIGRyaXZlIGJsb2NrZWQgd2hlbiBzdGFydGluZyB0aGUgc3VzcGVuZCBzZXF1ZW5jZS4gKi8KKwkJZHJpdmUtPmJsb2NrZWQgPSAxOworCWVsc2UgaWYgKGJsa19wbV9yZXN1bWVfcmVxdWVzdChycSkgJiYKKwkJIHBtLT5wbV9zdGVwID09IGlkZV9wbV9zdGF0ZV9zdGFydF9yZXN1bWUpIHsKKwkJLyogCisJCSAqIFRoZSBmaXJzdCB0aGluZyB3ZSBkbyBvbiB3YWtldXAgaXMgdG8gd2FpdCBmb3IgQlNZIGJpdCB0bworCQkgKiBnbyBhd2F5ICh3aXRoIGEgbG9vb25nIHRpbWVvdXQpIGFzIGEgZHJpdmUgb24gdGhpcyBod2lmIG1heQorCQkgKiBqdXN0IGJlIFBPU1RpbmcgaXRzZWxmLgorCQkgKiBXZSBkbyB0aGF0IGJlZm9yZSBldmVuIHNlbGVjdGluZyBhcyB0aGUgIm90aGVyIiBkZXZpY2Ugb24KKwkJICogdGhlIGJ1cyBtYXkgYmUgYnJva2VuIGVub3VnaCB0byB3YWxrIG9uIG91ciB0b2VzIGF0IHRoaXMKKwkJICogcG9pbnQuCisJCSAqLworCQlpbnQgcmM7CisjaWZkZWYgREVCVUdfUE0KKwkJcHJpbnRrKCIlczogV2FrZXVwIHJlcXVlc3QgaW5pdGVkLCB3YWl0aW5nIGZvciAhQlNZLi4uXG4iLCBkcml2ZS0+bmFtZSk7CisjZW5kaWYKKwkJcmMgPSBpZGVfd2FpdF9ub3RfYnVzeShIV0lGKGRyaXZlKSwgMzUwMDApOworCQlpZiAocmMpCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogYnVzIG5vdCByZWFkeSBvbiB3YWtldXBcbiIsIGRyaXZlLT5uYW1lKTsKKwkJU0VMRUNUX0RSSVZFKGRyaXZlKTsKKwkJSFdJRihkcml2ZSktPk9VVEIoOCwgSFdJRihkcml2ZSktPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0pOworCQlyYyA9IGlkZV93YWl0X25vdF9idXN5KEhXSUYoZHJpdmUpLCAxMDAwMCk7CisJCWlmIChyYykKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBkcml2ZSBub3QgcmVhZHkgb24gd2FrZXVwXG4iLCBkcml2ZS0+bmFtZSk7CisJfQorfQorCiAvKioKICAqCXN0YXJ0X3JlcXVlc3QJLQlzdGFydCBvZiBJL08gYW5kIGNvbW1hbmQgaXNzdWluZyBmb3IgSURFCiAgKgpAQCAtOTA5LDMzICs5NDYsOCBAQAogCWlmIChibG9jayA9PSAwICYmIGRyaXZlLT5yZW1hcF8wX3RvXzEgPT0gMSkKIAkJYmxvY2sgPSAxOyAgLyogcmVkaXJlY3QgTUJSIGFjY2VzcyB0byBFWi1Ecml2ZSBwYXJ0biB0YWJsZSAqLwogCi0JaWYgKGJsa19wbV9zdXNwZW5kX3JlcXVlc3QocnEpICYmCi0JICAgIHJxLT5wbS0+cG1fc3RlcCA9PSBpZGVfcG1fc3RhdGVfc3RhcnRfc3VzcGVuZCkKLQkJLyogTWFyayBkcml2ZSBibG9ja2VkIHdoZW4gc3RhcnRpbmcgdGhlIHN1c3BlbmQgc2VxdWVuY2UuICovCi0JCWRyaXZlLT5ibG9ja2VkID0gMTsKLQllbHNlIGlmIChibGtfcG1fcmVzdW1lX3JlcXVlc3QocnEpICYmCi0JCSBycS0+cG0tPnBtX3N0ZXAgPT0gaWRlX3BtX3N0YXRlX3N0YXJ0X3Jlc3VtZSkgewotCQkvKiAKLQkJICogVGhlIGZpcnN0IHRoaW5nIHdlIGRvIG9uIHdha2V1cCBpcyB0byB3YWl0IGZvciBCU1kgYml0IHRvCi0JCSAqIGdvIGF3YXkgKHdpdGggYSBsb29vbmcgdGltZW91dCkgYXMgYSBkcml2ZSBvbiB0aGlzIGh3aWYgbWF5Ci0JCSAqIGp1c3QgYmUgUE9TVGluZyBpdHNlbGYuCi0JCSAqIFdlIGRvIHRoYXQgYmVmb3JlIGV2ZW4gc2VsZWN0aW5nIGFzIHRoZSAib3RoZXIiIGRldmljZSBvbgotCQkgKiB0aGUgYnVzIG1heSBiZSBicm9rZW4gZW5vdWdoIHRvIHdhbGsgb24gb3VyIHRvZXMgYXQgdGhpcwotCQkgKiBwb2ludC4KLQkJICovCi0JCWludCByYzsKLSNpZmRlZiBERUJVR19QTQotCQlwcmludGsoIiVzOiBXYWtldXAgcmVxdWVzdCBpbml0ZWQsIHdhaXRpbmcgZm9yICFCU1kuLi5cbiIsIGRyaXZlLT5uYW1lKTsKLSNlbmRpZgotCQlyYyA9IGlkZV93YWl0X25vdF9idXN5KEhXSUYoZHJpdmUpLCAzNTAwMCk7Ci0JCWlmIChyYykKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBidXMgbm90IHJlYWR5IG9uIHdha2V1cFxuIiwgZHJpdmUtPm5hbWUpOwotCQlTRUxFQ1RfRFJJVkUoZHJpdmUpOwotCQlIV0lGKGRyaXZlKS0+T1VUQig4LCBIV0lGKGRyaXZlKS0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSk7Ci0JCXJjID0gaWRlX3dhaXRfbm90X2J1c3koSFdJRihkcml2ZSksIDEwMDAwKTsKLQkJaWYgKHJjKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGRyaXZlIG5vdCByZWFkeSBvbiB3YWtldXBcbiIsIGRyaXZlLT5uYW1lKTsKLQl9CisJaWYgKGJsa19wbV9yZXF1ZXN0KHJxKSkKKwkJaWRlX2NoZWNrX3BtX3N0YXRlKGRyaXZlLCBycSk7CiAKIAlTRUxFQ1RfRFJJVkUoZHJpdmUpOwogCWlmIChpZGVfd2FpdF9zdGF0KCZzdGFydHN0b3AsIGRyaXZlLCBkcml2ZS0+cmVhZHlfc3RhdCwgQlVTWV9TVEFUfERSUV9TVEFULCBXQUlUX1JFQURZKSkgewpAQCAtOTUwLDEzICs5NjIsMTQgQEAKIAkJZWxzZSBpZiAocnEtPmZsYWdzICYgUkVRX0RSSVZFX1RBU0tGSUxFKQogCQkJcmV0dXJuIGV4ZWN1dGVfZHJpdmVfY21kKGRyaXZlLCBycSk7CiAJCWVsc2UgaWYgKGJsa19wbV9yZXF1ZXN0KHJxKSkgeworCQkJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmVuZF9pb19kYXRhOwogI2lmZGVmIERFQlVHX1BNCiAJCQlwcmludGsoIiVzOiBzdGFydF9wb3dlcl9zdGVwKHN0ZXA6ICVkKVxuIiwKIAkJCQlkcml2ZS0+bmFtZSwgcnEtPnBtLT5wbV9zdGVwKTsKICNlbmRpZgogCQkJc3RhcnRzdG9wID0gaWRlX3N0YXJ0X3Bvd2VyX3N0ZXAoZHJpdmUsIHJxKTsKIAkJCWlmIChzdGFydHN0b3AgPT0gaWRlX3N0b3BwZWQgJiYKLQkJCSAgICBycS0+cG0tPnBtX3N0ZXAgPT0gaWRlX3BtX3N0YXRlX2NvbXBsZXRlZCkKKwkJCSAgICBwbS0+cG1fc3RlcCA9PSBpZGVfcG1fc3RhdGVfY29tcGxldGVkKQogCQkJCWlkZV9jb21wbGV0ZV9wbV9yZXF1ZXN0KGRyaXZlLCBycSk7CiAJCQlyZXR1cm4gc3RhcnRzdG9wOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtaW9wcy5jIGIvZHJpdmVycy9pZGUvaWRlLWlvcHMuYwppbmRleCBiNzJkZGU3Li45N2E0OWU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtaW9wcy5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1pb3BzLmMKQEAgLTkzOSw4ICs5MzksNyBAQAogCQogCXNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9jaywgZmxhZ3MpOwogCQotCWlmKGh3Z3JvdXAtPmhhbmRsZXIpCi0JCUJVRygpOworCUJVR19PTihod2dyb3VwLT5oYW5kbGVyKTsKIAlod2dyb3VwLT5oYW5kbGVyCT0gaGFuZGxlcjsKIAlod2dyb3VwLT5leHBpcnkJCT0gZXhwaXJ5OwogCWh3Z3JvdXAtPnRpbWVyLmV4cGlyZXMJPSBqaWZmaWVzICsgdGltZW91dDsKQEAgLTk4MSw4ICs5ODAsNyBAQAogCQlwcmludGsoIiVzOiBBVEFQSSByZXNldCBjb21wbGV0ZVxuIiwgZHJpdmUtPm5hbWUpOwogCX0gZWxzZSB7CiAJCWlmICh0aW1lX2JlZm9yZShqaWZmaWVzLCBod2dyb3VwLT5wb2xsX3RpbWVvdXQpKSB7Ci0JCQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkKLQkJCQlCVUcoKTsKKwkJCUJVR19PTihIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKTsKIAkJCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJmF0YXBpX3Jlc2V0X3BvbGxmdW5jLCBIWi8yMCwgTlVMTCk7CiAJCQkvKiBjb250aW51ZSBwb2xsaW5nICovCiAJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7CkBAIC0xMDIxLDggKzEwMTksNyBAQAogCiAJaWYgKCFPS19TVEFUKHRtcCA9IGh3aWYtPklOQihJREVfU1RBVFVTX1JFRyksIDAsIEJVU1lfU1RBVCkpIHsKIAkJaWYgKHRpbWVfYmVmb3JlKGppZmZpZXMsIGh3Z3JvdXAtPnBvbGxfdGltZW91dCkpIHsKLQkJCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQotCQkJCUJVRygpOworCQkJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpOwogCQkJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmcmVzZXRfcG9sbGZ1bmMsIEhaLzIwLCBOVUxMKTsKIAkJCS8qIGNvbnRpbnVlIHBvbGxpbmcgKi8KIAkJCXJldHVybiBpZGVfc3RhcnRlZDsKQEAgLTExMzgsOCArMTEzNSw3IEBACiAJaHdncm91cCA9IEhXR1JPVVAoZHJpdmUpOwogCiAJLyogV2UgbXVzdCBub3QgcmVzZXQgd2l0aCBydW5uaW5nIGhhbmRsZXJzICovCi0JaWYoaHdncm91cC0+aGFuZGxlciAhPSBOVUxMKQotCQlCVUcoKTsKKwlCVUdfT04oaHdncm91cC0+aGFuZGxlciAhPSBOVUxMKTsKIAogCS8qIEZvciBhbiBBVEFQSSBkZXZpY2UsIGZpcnN0IHRyeSBhbiBBVEFQSSBTUlNULiAqLwogCWlmIChkcml2ZS0+bWVkaWEgIT0gaWRlX2Rpc2sgJiYgIWRvX25vdF90cnlfYXRhcGkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1saWIuYyBiL2RyaXZlcnMvaWRlL2lkZS1saWIuYwppbmRleCA0MWQ0NmRiLi4xNmExNDMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtbGliLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWxpYi5jCkBAIC0xNjQsOCArMTY0LDcgQEAKIC8vCXByaW50aygiJXM6IG1vZGUgMHglMDJ4LCBzcGVlZCAweCUwMnhcbiIsIF9fRlVOQ1RJT05fXywgbW9kZSwgc3BlZWQpOwogCiAJLyogU28gdGhhdCB3ZSByZW1lbWJlciB0byB1cGRhdGUgdGhpcyBpZiBuZXcgbW9kZXMgYXBwZWFyICovCi0JaWYgKG1vZGUgPiA0KQotCQlCVUcoKTsKKwlCVUdfT04obW9kZSA+IDQpOwogCXJldHVybiBtaW4oc3BlZWQsIHNwZWVkX21heFttb2RlXSk7CiAjZWxzZSAvKiAhQ09ORklHX0JMS19ERVZfSURFRE1BICovCiAJcmV0dXJuIG1pbihzcGVlZCwgKHU4KVhGRVJfUElPXzQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXByb2JlLmMgYi9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYwppbmRleCAxYjdiNGM1Li45ZWJmOGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYwpAQCAtMTEzOCwxNiArMTEzOCwxMSBAQAogCQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsKIAl9CiAKLSNpZiAhZGVmaW5lZChfX21jNjgwMDBfXykgJiYgIWRlZmluZWQoQ09ORklHX0FQVVMpICYmICFkZWZpbmVkKF9fc3BhcmNfXykKKyNpZiAhZGVmaW5lZChfX21jNjgwMDBfXykgJiYgIWRlZmluZWQoQ09ORklHX0FQVVMpCiAJcHJpbnRrKCIlcyBhdCAweCUwM2x4LTB4JTAzbHgsMHglMDNseCBvbiBpcnEgJWQiLCBod2lmLT5uYW1lLAogCQlod2lmLT5pb19wb3J0c1tJREVfREFUQV9PRkZTRVRdLAogCQlod2lmLT5pb19wb3J0c1tJREVfREFUQV9PRkZTRVRdKzcsCiAJCWh3aWYtPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0sIGh3aWYtPmlycSk7Ci0jZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykKLQlwcmludGsoIiVzIGF0IDB4JTAzbHgtMHglMDNseCwweCUwM2x4IG9uIGlycSAlcyIsIGh3aWYtPm5hbWUsCi0JCWh3aWYtPmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0sCi0JCWh3aWYtPmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0rNywKLQkJaHdpZi0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSwgX19pcnFfaXRvYShod2lmLT5pcnEpKTsKICNlbHNlCiAJcHJpbnRrKCIlcyBhdCAweCUwOGx4IG9uIGlycSAlZCIsIGh3aWYtPm5hbWUsCiAJCWh3aWYtPmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0sIGh3aWYtPmlycSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYyBiL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCmluZGV4IDkyMzNiODEuLmE4MzliMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCkBAIC0xOTYsOCArMTk2LDcgQEAKIAlpZiAoc3RhdCAmIChFUlJfU1RBVHxEUlFfU1RBVCkpCiAJCXJldHVybiBpZGVfZXJyb3IoZHJpdmUsICJzZXRfZ2VvbWV0cnlfaW50ciIsIHN0YXQpOwogCi0JaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCi0JCUJVRygpOworCUJVR19PTihIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKTsKIAlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZzZXRfZ2VvbWV0cnlfaW50ciwgV0FJVF9XT1JTVENBU0UsIE5VTEwpOwogCXJldHVybiBpZGVfc3RhcnRlZDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS5jIGIvZHJpdmVycy9pZGUvaWRlLmMKaW5kZXggM2ZkYWI1Ni4uNTlmZTM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLmMKQEAgLTcyNiw2ICs3MjYsNyBAQAogewogCWludCBpOwogCisJbWVtc2V0KGh3LCAwLCBzaXplb2YoaHdfcmVnc190KSk7CiAJZm9yIChpID0gMDsgaSA8IElERV9OUl9QT1JUUzsgaSsrKSB7CiAJCWlmIChvZmZzZXRzW2ldID09IC0xKSB7CiAJCQlzd2l0Y2goaSkgewpAQCAtMTIyNSw3ICsxMjI2LDcgQEAKIAltZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7CiAJcnEuZmxhZ3MgPSBSRVFfUE1fU1VTUEVORDsKIAlycS5zcGVjaWFsID0gJmFyZ3M7Ci0JcnEucG0gPSAmcnFwbTsKKwlycS5lbmRfaW9fZGF0YSA9ICZycXBtOwogCXJxcG0ucG1fc3RlcCA9IGlkZV9wbV9zdGF0ZV9zdGFydF9zdXNwZW5kOwogCXJxcG0ucG1fc3RhdGUgPSBzdGF0ZS5ldmVudDsKIApAQCAtMTI0NCw3ICsxMjQ1LDcgQEAKIAltZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7CiAJcnEuZmxhZ3MgPSBSRVFfUE1fUkVTVU1FOwogCXJxLnNwZWNpYWwgPSAmYXJnczsKLQlycS5wbSA9ICZycXBtOworCXJxLmVuZF9pb19kYXRhID0gJnJxcG07CiAJcnFwbS5wbV9zdGVwID0gaWRlX3BtX3N0YXRlX3N0YXJ0X3Jlc3VtZTsKIAlycXBtLnBtX3N0YXRlID0gUE1fRVZFTlRfT047CiAKQEAgLTEzNjYsOCArMTM2Nyw3IEBACiAKIAkJCWlkZV9hYm9ydChkcml2ZSwgImRyaXZlIHJlc2V0Iik7CiAKLQkJCWlmKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyKQotCQkJCUJVRygpOworCQkJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyKTsKIAkJCQkKIAkJCS8qIEVuc3VyZSBub3RoaW5nIGdldHMgcXVldWVkIGFmdGVyIHdlCiAJCQkgICBkcm9wIHRoZSBsb2NrLiBSZXNldCB3aWxsIGNsZWFyIHRoZSBidXN5ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9sZWdhY3kvcTQwaWRlLmMgYi9kcml2ZXJzL2lkZS9sZWdhY3kvcTQwaWRlLmMKaW5kZXggMmE3OGI3OS4uNDM0YTk0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvbGVnYWN5L3E0MGlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL2xlZ2FjeS9xNDBpZGUuYwpAQCAtODAsNiArODAsNyBAQAogewogCWludCBpOwogCisJbWVtc2V0KGh3LCAwLCBzaXplb2YoaHdfcmVnc190KSk7CiAJZm9yIChpID0gMDsgaSA8IElERV9OUl9QT1JUUzsgaSsrKSB7CiAJCS8qIEJJRyBGQVQgV0FSTklORzogCiAJCSAgIGFzc3VtcHRpb246IG9ubHkgREFUQSBwb3J0IGlzIGV2ZXIgdXNlZCBpbiAxNiBiaXQgbW9kZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGNpL2FtZDc0eHguYyBiL2RyaXZlcnMvaWRlL3BjaS9hbWQ3NHh4LmMKaW5kZXggYjIyZWU1NC4uNmU5ZGJmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvcGNpL2FtZDc0eHguYworKysgYi9kcml2ZXJzL2lkZS9wY2kvYW1kNzR4eC5jCkBAIC03NCw2ICs3NCw3IEBACiAJeyBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQMDRfSURFLAkweDUwLCBBTURfVURNQV8xMzMgfSwKIAl7IFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A1MV9JREUsCTB4NTAsIEFNRF9VRE1BXzEzMyB9LAogCXsgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDU1X0lERSwJMHg1MCwgQU1EX1VETUFfMTMzIH0sCisJeyBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNjFfSURFLAkweDUwLCBBTURfVURNQV8xMzMgfSwKIAl7IFBDSV9ERVZJQ0VfSURfQU1EX0NTNTUzNl9JREUsCQkJMHg0MCwgQU1EX1VETUFfMTAwIH0sCiAJeyAwIH0KIH07CkBAIC00ODgsNyArNDg5LDggQEAKIAkvKiAxNCAqLyBERUNMQVJFX05WX0RFVigiTkZPUkNFLU1DUDA0IiksCiAJLyogMTUgKi8gREVDTEFSRV9OVl9ERVYoIk5GT1JDRS1NQ1A1MSIpLAogCS8qIDE2ICovIERFQ0xBUkVfTlZfREVWKCJORk9SQ0UtTUNQNTUiKSwKLQkvKiAxNyAqLyBERUNMQVJFX0FNRF9ERVYoIkFNRDU1MzYiKSwKKwkvKiAxNyAqLyBERUNMQVJFX05WX0RFVigiTkZPUkNFLU1DUDYxIiksCisJLyogMTggKi8gREVDTEFSRV9BTURfREVWKCJBTUQ1NTM2IiksCiB9OwogCiBzdGF0aWMgaW50IF9fZGV2aW5pdCBhbWQ3NHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKQEAgLTUyNSw3ICs1MjcsOCBAQAogCXsgUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1AwNF9JREUsCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDE0IH0sCiAJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDUxX0lERSwJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMTUgfSwKIAl7IFBDSV9WRU5ET1JfSURfTlZJRElBLCBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTVfSURFLAlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAxNiB9LAotCXsgUENJX1ZFTkRPUl9JRF9BTUQsCVBDSV9ERVZJQ0VfSURfQU1EX0NTNTUzNl9JREUsCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAxNyB9LAorCXsgUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A2MV9JREUsCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDE3IH0sCisJeyBQQ0lfVkVORE9SX0lEX0FNRCwJUENJX0RFVklDRV9JRF9BTURfQ1M1NTM2X0lERSwJCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDE4IH0sCiAJeyAwLCB9LAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBhbWQ3NHh4X3BjaV90YmwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGNpL3NnaWlvYzQuYyBiL2RyaXZlcnMvaWRlL3BjaS9zZ2lpb2M0LmMKaW5kZXggMjdjOWViOS4uZTEyNTAzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvcGNpL3NnaWlvYzQuYworKysgYi9kcml2ZXJzL2lkZS9wY2kvc2dpaW9jNC5jCkBAIC03MjMsNiArNzIzLDEyIEBACiBpbnQKIGlvYzRfaWRlX2F0dGFjaF9vbmUoc3RydWN0IGlvYzRfZHJpdmVyX2RhdGEgKmlkZCkKIHsKKwkvKiBQQ0ktUlQgZG9lcyBub3QgYnJpbmcgb3V0IElERSBjb25uZWN0aW9uLgorCSAqIERvIG5vdCBhdHRhY2ggdG8gdGhpcyBwYXJ0aWN1bGFyIElPQzQuCisJICovCisJaWYgKGlkZC0+aWRkX3ZhcmlhbnQgPT0gSU9DNF9WQVJJQU5UX1BDSV9SVCkKKwkJcmV0dXJuIDA7CisKIAlyZXR1cm4gcGNpX2luaXRfc2dpaW9jNChpZGQtPmlkZF9wZGV2LAogCQkJCSZzZ2lpb2M0X2NoaXBzZXRzW2lkZC0+aWRkX3BjaV9pZC0+ZHJpdmVyX2RhdGFdKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BjaS90cm0yOTAuYyBiL2RyaXZlcnMvaWRlL3BjaS90cm0yOTAuYwppbmRleCBjMjZjOGNhLi5mZTgwMjk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9wY2kvdHJtMjkwLmMKKysrIGIvZHJpdmVycy9pZGUvcGNpL3RybTI5MC5jCkBAIC0xODMsOCArMTgzLDcgQEAKIHsKIAlpZGVfaHdpZl90ICpod2lmCT0gSFdJRihkcml2ZSk7CiAKLQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sgKi8KLQkJQlVHKCk7CisJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpOwkvKiBwYXJhbm9pYSBjaGVjayAqLwogCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJmlkZV9kbWFfaW50ciwgV0FJVF9DTUQsIE5VTEwpOwogCS8qIGlzc3VlIGNtZCB0byBkcml2ZSAqLwogCWh3aWYtPk9VVEIoY29tbWFuZCwgSURFX0NPTU1BTkRfUkVHKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3NldHVwLXBjaS5jIGIvZHJpdmVycy9pZGUvc2V0dXAtcGNpLmMKaW5kZXggNDYyZWQzMC4uYzExZTNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvc2V0dXAtcGNpLmMKKysrIGIvZHJpdmVycy9pZGUvc2V0dXAtcGNpLmMKQEAgLTY5NCwxMyArNjk0LDggQEAKIAkJCQlnb3RvIG91dDsKIAkJfQogCQlpZiAobm9pc3kpCi0jaWZkZWYgX19zcGFyY19fCi0JCQlwcmludGsoS0VSTl9JTkZPICIlczogMTAwJSUgbmF0aXZlIG1vZGUgb24gaXJxICVzXG4iLAotCQkJICAgICAgIGQtPm5hbWUsIF9faXJxX2l0b2EocGNpaXJxKSk7Ci0jZWxzZQogCQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IDEwMCUlIG5hdGl2ZSBtb2RlIG9uIGlycSAlZFxuIiwKIAkJCQlkLT5uYW1lLCBwY2lpcnEpOwotI2VuZGlmCiAJfQogCiAJLyogRklYTUU6IHNpbGVudCBmYWlsdXJlIGNhbiBoYXBwZW4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvS2NvbmZpZyBiL2RyaXZlcnMvaWVlZTEzOTQvS2NvbmZpZwppbmRleCAzOTE0MmUyLi43OWI4MWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2llZWUxMzk0L0tjb25maWcKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9LY29uZmlnCkBAIC00LDcgKzQsNyBAQAogCiBjb25maWcgSUVFRTEzOTQKIAl0cmlzdGF0ZSAiSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydCIKLQlkZXBlbmRzIG9uIFBDSSB8fCBCUk9LRU4KKwlkZXBlbmRzIG9uIChQQ0kgfHwgQlJPS0VOKSAmJiAoQlJPS0VOIHx8ICFGUlYpCiAJc2VsZWN0IE5FVAogCWhlbHAKIAkgIElFRUUgMTM5NCBkZXNjcmliZXMgYSBoaWdoIHBlcmZvcm1hbmNlIHNlcmlhbCBidXMsIHdoaWNoIGlzIGFsc28KQEAgLTEyOCw4ICsxMjgsMTcgQEAKIAkgIDEzOTQgYnVzLiAgU0JQLTIgZGV2aWNlcyBpbmNsdWRlIGhhcmRkcml2ZXMgYW5kIERWRCBkZXZpY2VzLgogCiBjb25maWcgSUVFRTEzOTRfU0JQMl9QSFlTX0RNQQotCWJvb2wgIkVuYWJsZSBQaHlzIERNQSBzdXBwb3J0IGZvciBTQlAyIChEZWJ1ZykiCi0JZGVwZW5kcyBvbiBJRUVFMTM5NCAmJiBJRUVFMTM5NF9TQlAyCisJYm9vbCAiRW5hYmxlIHJlcGxhY2VtZW50IGZvciBwaHlzaWNhbCBETUEgaW4gU0JQMiIKKwlkZXBlbmRzIG9uIElFRUUxMzk0ICYmIElFRUUxMzk0X1NCUDIgJiYgRVhQRVJJTUVOVEFMICYmIChYODZfMzIgfHwgUFBDXzMyKQorCWhlbHAKKwkgIFRoaXMgYnVpbGRzIHNicDIgZm9yIHVzZSB3aXRoIG5vbi1PSENJIGhvc3QgYWRhcHRlcnMgd2hpY2ggZG8gbm90CisJICBzdXBwb3J0IHBoeXNpY2FsIERNQSBvciBmb3Igd2hlbiBvaGNpMTM5NCBpcyBydW4gd2l0aCBwaHlzX2RtYT0wLgorCSAgUGh5c2ljYWwgRE1BIGlzIGRhdGEgbW92ZW1lbnQgd2l0aG91dCBhc3Npc3RlbmNlIG9mIHRoZSBkcml2ZXJzJworCSAgaW50ZXJydXB0IGhhbmRsZXJzLiAgVGhpcyBvcHRpb24gaW5jbHVkZXMgdGhlIGludGVycnVwdCBoYW5kbGVycworCSAgdGhhdCBhcmUgcmVxdWlyZWQgaW4gYWJzZW5jZSBvZiB0aGlzIGhhcmR3YXJlIGZlYXR1cmUuCisKKwkgIFRoaXMgb3B0aW9uIGlzIGJ1Z2d5IGFuZCBjdXJyZW50bHkgYnJva2VuIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy4KKwkgIElmIHVuc3VyZSwgc2F5IE4uCiAKIGNvbmZpZyBJRUVFMTM5NF9FVEgxMzk0CiAJdHJpc3RhdGUgIkV0aGVybmV0IG92ZXIgMTM5NCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvY3NyMTIxMi5jIGIvZHJpdmVycy9pZWVlMTM5NC9jc3IxMjEyLmMKaW5kZXggMTU3NzM1NC4uNTg2ZjcxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZWVlMTM5NC9jc3IxMjEyLmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9jc3IxMjEyLmMKQEAgLTc3OSw3ICs3NzksNyBAQAogCXJvbXNpemUgPSAocm9tc2l6ZSArIChjc3ItPm1heF9yb20gLSAxKSkgJiB+KGNzci0+bWF4X3JvbSAtIDEpOwogCiAJY3NyX2FkZHIgPSBjc3ItPm9wcy0+YWxsb2NhdGVfYWRkcl9yYW5nZShyb21zaXplLCBjc3ItPm1heF9yb20sIGNzci0+cHJpdmF0ZSk7Ci0JaWYgKGNzcl9hZGRyID09IH4wVUxMKSB7CisJaWYgKGNzcl9hZGRyID09IENTUjEyMTJfSU5WQUxJRF9BRERSX1NQQUNFKSB7CiAJCXJldHVybiBDU1IxMjEyX0VOT01FTTsKIAl9CiAJaWYgKGNzcl9hZGRyIDwgQ1NSMTIxMl9SRUdJU1RFUl9TUEFDRV9CQVNFKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L2NzcjEyMTIuaCBiL2RyaXZlcnMvaWVlZTEzOTQvY3NyMTIxMi5oCmluZGV4IGNlY2Q1ODcuLjE3ZGRkNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvY3NyMTIxMi5oCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvY3NyMTIxMi5oCkBAIC0xOTIsNiArMTkyLDcgQEAKIAogI2RlZmluZSAgQ1NSMTIxMl9FWFRFTkRFRF9ST01fU0laRQkJKDB4MTAwMDAgKiBzaXplb2YodV9pbnQzMl90KSkKIAorI2RlZmluZSAgQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UJCS0xCiAKIC8qIENvbmZpZyBST00gaW1hZ2Ugc3RydWN0dXJlcyAqLwogc3RydWN0IGNzcjEyMTJfYnVzX2luZm9fYmxvY2tfaW1nIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvZG1hLmMgYi9kcml2ZXJzL2llZWUxMzk0L2RtYS5jCmluZGV4IDlmYjI3NjkuLmNhNTE2N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvZG1hLmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9kbWEuYwpAQCAtMTQ1LDEyICsxNDUsMTIgQEAKIC8qIGZpbmQgdGhlIHNjYXR0ZXJsaXN0IGluZGV4IGFuZCByZW1haW5pbmcgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gYQogICAgZ2l2ZW4gb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyICovCiBzdGF0aWMgaW5saW5lIGludCBkbWFfcmVnaW9uX2ZpbmQoc3RydWN0IGRtYV9yZWdpb24gKmRtYSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCi0JCQkJICB1bnNpZ25lZCBsb25nICpyZW0pCisJCQkJICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGxvbmcgKnJlbSkKIHsKIAlpbnQgaTsKIAl1bnNpZ25lZCBsb25nIG9mZiA9IG9mZnNldDsKIAotCWZvciAoaSA9IDA7IGkgPCBkbWEtPm5fZG1hX3BhZ2VzOyBpKyspIHsKKwlmb3IgKGkgPSBzdGFydDsgaSA8IGRtYS0+bl9kbWFfcGFnZXM7IGkrKykgewogCQlpZiAob2ZmIDwgc2dfZG1hX2xlbigmZG1hLT5zZ2xpc3RbaV0pKSB7CiAJCQkqcmVtID0gb2ZmOwogCQkJYnJlYWs7CkBAIC0xNzAsNyArMTcwLDcgQEAKIAl1bnNpZ25lZCBsb25nIHJlbSA9IDA7CiAKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0KLQkgICAgJmRtYS0+c2dsaXN0W2RtYV9yZWdpb25fZmluZChkbWEsIG9mZnNldCwgJnJlbSldOworCSAgICAmZG1hLT5zZ2xpc3RbZG1hX3JlZ2lvbl9maW5kKGRtYSwgb2Zmc2V0LCAwLCAmcmVtKV07CiAJcmV0dXJuIHNnX2RtYV9hZGRyZXNzKHNnKSArIHJlbTsKIH0KIApAQCAtMTc4LDEzICsxNzgsMTMgQEAKIAkJCSAgICAgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJaW50IGZpcnN0LCBsYXN0OwotCXVuc2lnbmVkIGxvbmcgcmVtOworCXVuc2lnbmVkIGxvbmcgcmVtID0gMDsKIAogCWlmICghbGVuKQogCQlsZW4gPSAxOwogCi0JZmlyc3QgPSBkbWFfcmVnaW9uX2ZpbmQoZG1hLCBvZmZzZXQsICZyZW0pOwotCWxhc3QgPSBkbWFfcmVnaW9uX2ZpbmQoZG1hLCBvZmZzZXQgKyBsZW4gLSAxLCAmcmVtKTsKKwlmaXJzdCA9IGRtYV9yZWdpb25fZmluZChkbWEsIG9mZnNldCwgMCwgJnJlbSk7CisJbGFzdCA9IGRtYV9yZWdpb25fZmluZChkbWEsIHJlbSArIGxlbiAtIDEsIGZpcnN0LCAmcmVtKTsKIAogCXBjaV9kbWFfc3luY19zZ19mb3JfY3B1KGRtYS0+ZGV2LCAmZG1hLT5zZ2xpc3RbZmlyc3RdLCBsYXN0IC0gZmlyc3QgKyAxLAogCQkJCWRtYS0+ZGlyZWN0aW9uKTsKQEAgLTE5NCwxMyArMTk0LDEzIEBACiAJCQkJdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJaW50IGZpcnN0LCBsYXN0OwotCXVuc2lnbmVkIGxvbmcgcmVtOworCXVuc2lnbmVkIGxvbmcgcmVtID0gMDsKIAogCWlmICghbGVuKQogCQlsZW4gPSAxOwogCi0JZmlyc3QgPSBkbWFfcmVnaW9uX2ZpbmQoZG1hLCBvZmZzZXQsICZyZW0pOwotCWxhc3QgPSBkbWFfcmVnaW9uX2ZpbmQoZG1hLCBvZmZzZXQgKyBsZW4gLSAxLCAmcmVtKTsKKwlmaXJzdCA9IGRtYV9yZWdpb25fZmluZChkbWEsIG9mZnNldCwgMCwgJnJlbSk7CisJbGFzdCA9IGRtYV9yZWdpb25fZmluZChkbWEsIHJlbSArIGxlbiAtIDEsIGZpcnN0LCAmcmVtKTsKIAogCXBjaV9kbWFfc3luY19zZ19mb3JfZGV2aWNlKGRtYS0+ZGV2LCAmZG1hLT5zZ2xpc3RbZmlyc3RdLAogCQkJCSAgIGxhc3QgLSBmaXJzdCArIDEsIGRtYS0+ZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvZXRoMTM5NC5jIGIvZHJpdmVycy9pZWVlMTM5NC9ldGgxMzk0LmMKaW5kZXggMzBmYTBkNC4uNWJkYTE1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZWVlMTM5NC9ldGgxMzk0LmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9ldGgxMzk0LmMKQEAgLTM2Nyw3ICszNjcsNyBAQAogCXNwaW5fbG9ja19pbml0KCZub2RlX2luZm8tPnBkZy5sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmbm9kZV9pbmZvLT5wZGcubGlzdCk7CiAJbm9kZV9pbmZvLT5wZGcuc3ogPSAwOwotCW5vZGVfaW5mby0+ZmlmbyA9IEVUSEVSMTM5NF9JTlZBTElEX0FERFI7CisJbm9kZV9pbmZvLT5maWZvID0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0U7CiAKIAl1ZC0+ZGV2aWNlLmRyaXZlcl9kYXRhID0gbm9kZV9pbmZvOwogCW5ld19ub2RlLT51ZCA9IHVkOwpAQCAtNTAyLDEwICs1MDIsOCBAQAogCiAJLyogRGV0ZXJtaW5lIHNwZWVkIGxpbWl0ICovCiAJZm9yIChpID0gMDsgaSA8IGhvc3QtPm5vZGVfY291bnQ7IGkrKykKLQkJaWYgKG1heF9zcGVlZCA+IGhvc3QtPnNwZWVkX21hcFtOT0RFSURfVE9fTk9ERShob3N0LT5ub2RlX2lkKSAqCi0JCQkJCQk2NCArIGldKQotCQkJbWF4X3NwZWVkID0gaG9zdC0+c3BlZWRfbWFwW05PREVJRF9UT19OT0RFKGhvc3QtPm5vZGVfaWQpICoKLQkJCQkJCSAgICA2NCArIGldOworCQlpZiAobWF4X3NwZWVkID4gaG9zdC0+c3BlZWRbaV0pCisJCQltYXhfc3BlZWQgPSBob3N0LT5zcGVlZFtpXTsKIAlwcml2LT5iY19zc3BkID0gbWF4X3NwZWVkOwogCiAJLyogV2UnbGwgdXNlIG91ciBtYXhwYXlsb2FkIGFzIHRoZSBkZWZhdWx0IG10dSAqLwpAQCAtNTY4LDEzICs1NjYsMTEgQEAKIAlpZiAoIShob3N0LT5jb25maWdfcm9tcyAmIEhQU0JfQ09ORklHX1JPTV9FTlRSWV9JUDEzOTQpKQogCQlyZXR1cm47CiAKLQlmaWZvX2FkZHIgPSBocHNiX2FsbG9jYXRlX2FuZF9yZWdpc3Rlcl9hZGRyc3BhY2UoJmV0aDEzOTRfaGlnaGxldmVsLAotCQkJCQkJCSBob3N0LAotCQkJCQkJCSAmYWRkcl9vcHMsCi0JCQkJCQkJIEVUSEVSMTM5NF9SRUdJT05fQUREUl9MRU4sCi0JCQkJCQkJIEVUSEVSMTM5NF9SRUdJT05fQUREUl9MRU4sCi0JCQkJCQkJIC0xLCAtMSk7Ci0JaWYgKGZpZm9fYWRkciA9PSB+MFVMTCkKKwlmaWZvX2FkZHIgPSBocHNiX2FsbG9jYXRlX2FuZF9yZWdpc3Rlcl9hZGRyc3BhY2UoCisJCQkmZXRoMTM5NF9oaWdobGV2ZWwsIGhvc3QsICZhZGRyX29wcywKKwkJCUVUSEVSMTM5NF9SRUdJT05fQUREUl9MRU4sIEVUSEVSMTM5NF9SRUdJT05fQUREUl9MRU4sCisJCQlDU1IxMjEyX0lOVkFMSURfQUREUl9TUEFDRSwgQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UpOworCWlmIChmaWZvX2FkZHIgPT0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UpCiAJCWdvdG8gb3V0OwogCiAJLyogV2Ugc2hvdWxkIHJlYWxseSBoYXZlIG91ciBvd24gYWxsb2NfaHBzYmRldigpIGZ1bmN0aW9uIGluCkBAIC03NzQsNyArNzcwLDcgQEAKIAlkZWZhdWx0OgogCQlFVEgxMzk0X1BSSU5UKEtFUk5fREVCVUcsIGRldi0+bmFtZSwKIAkJCSAgICAgICJ1bmFibGUgdG8gcmVzb2x2ZSB0eXBlICUwNHggYWRkcmVzc2VzLlxuIiwKLQkJCSAgICAgIGV0aC0+aF9wcm90byk7CisJCQkgICAgICBudG9ocyhldGgtPmhfcHJvdG8pKTsKIAkJYnJlYWs7CiAJfQogCkBAIC03OTYsOSArNzkyLDggQEAKIAkJCQkJCSAgICAgICgxNiAtIEVUSDEzOTRfSExFTikpOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZWlnaC0+ZGV2OwogCi0JaWYgKHR5cGUgPT0gX19jb25zdGFudF9odG9ucyhFVEhfUF84MDJfMykpIHsKKwlpZiAodHlwZSA9PSBodG9ucyhFVEhfUF84MDJfMykpCiAJCXJldHVybiAtMTsKLQl9CiAKIAlldGgtPmhfcHJvdG8gPSB0eXBlOwogCW1lbWNweShldGgtPmhfZGVzdCwgbmVpZ2gtPmhhLCBkZXYtPmFkZHJfbGVuKTsKQEAgLTg4Nyw3ICs4ODIsNyBAQAogCS8qIElmIHRoaXMgaXMgYW4gQVJQIHBhY2tldCwgY29udmVydCBpdC4gRmlyc3QsIHdlIHdhbnQgdG8gbWFrZQogCSAqIHVzZSBvZiBzb21lIG9mIHRoZSBmaWVsZHMsIHNpbmNlIHRoZXkgdGVsbCB1cyBhIGxpdHRsZSBiaXQKIAkgKiBhYm91dCB0aGUgc2VuZGluZyBtYWNoaW5lLiAgKi8KLQlpZiAoZXRoZXJfdHlwZSA9PSBfX2NvbnN0YW50X2h0b25zIChFVEhfUF9BUlApKSB7CisJaWYgKGV0aGVyX3R5cGUgPT0gaHRvbnMoRVRIX1BfQVJQKSkgewogCQlzdHJ1Y3QgZXRoMTM5NF9hcnAgKmFycDEzOTQgPSAoc3RydWN0IGV0aDEzOTRfYXJwKilza2ItPmRhdGE7CiAJCXN0cnVjdCBhcnBoZHIgKmFycCA9IChzdHJ1Y3QgYXJwaGRyICopc2tiLT5kYXRhOwogCQl1bnNpZ25lZCBjaGFyICphcnBfcHRyID0gKHVuc2lnbmVkIGNoYXIgKikoYXJwICsgMSk7CkBAIC05MzUsNyArOTMwLDcgQEAKIAkJKih1MzIqKWFycF9wdHIgPSBhcnAxMzk0LT5zaXA7CS8qIG1vdmUgc2VuZGVyIElQIGFkZHIgKi8KIAkJYXJwX3B0ciArPSBhcnAtPmFyX3BsbjsJCS8qIHNraXAgb3ZlciBzZW5kZXIgSVAgYWRkciAqLwogCi0JCWlmIChhcnAtPmFyX29wID09IDEpCisJCWlmIChhcnAtPmFyX29wID09IGh0b25zKEFSUE9QX1JFUVVFU1QpKQogCQkJLyoganVzdCBzZXQgQVJQIHJlcSB0YXJnZXQgdW5pcXVlIElEIHRvIDAgKi8KIAkJCSooKHU2NCopYXJwX3B0cikgPSAwOwogCQllbHNlCkBAIC05NDMsOCArOTM4LDggQEAKIAl9CiAKIAkvKiBOb3cgYWRkIHRoZSBldGhlcm5ldCBoZWFkZXIuICovCi0JaWYgKGRldi0+aGFyZF9oZWFkZXIgKHNrYiwgZGV2LCBfX2NvbnN0YW50X250b2hzIChldGhlcl90eXBlKSwKLQkJCSAgICAgICZkZXN0X2h3LCBOVUxMLCBza2ItPmxlbikgPj0gMCkKKwlpZiAoZGV2LT5oYXJkX2hlYWRlcihza2IsIGRldiwgbnRvaHMoZXRoZXJfdHlwZSksICZkZXN0X2h3LCBOVUxMLAorCQkJICAgICBza2ItPmxlbikgPj0gMCkKIAkJcmV0ID0gZXRoZXIxMzk0X3R5cGVfdHJhbnMoc2tiLCBkZXYpOwogCiAJcmV0dXJuIHJldDsKQEAgLTEzOTUsNyArMTM5MCw3IEBACiAvKiBXZSBuZWVkIHRvIGVuY2Fwc3VsYXRlIHRoZSBzdGFuZGFyZCBoZWFkZXIgd2l0aCBvdXIgb3duLiBXZSB1c2UgdGhlCiAgKiBldGhlcm5ldCBoZWFkZXIncyBwcm90byBmb3Igb3VyIG93bi4gKi8KIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGV0aGVyMTM5NF9lbmNhcHN1bGF0ZV9wcmVwKHVuc2lnbmVkIGludCBtYXhfcGF5bG9hZCwKLQkJCQkJCSAgICAgIGludCBwcm90bywKKwkJCQkJCSAgICAgIF9fYmUxNiBwcm90bywKIAkJCQkJCSAgICAgIHVuaW9uIGV0aDEzOTRfaGRyICpoZHIsCiAJCQkJCQkgICAgICB1MTYgZGdfc2l6ZSwgdTE2IGRnbCkKIHsKQEAgLTE1MTQsOCArMTUwOSw4IEBACiAJcC0+ZGF0YSA9ICgocXVhZGxldF90Kilza2ItPmRhdGEpIC0gMjsKIAlwLT5kYXRhWzBdID0gY3B1X3RvX2JlMzIoKHByaXYtPmhvc3QtPm5vZGVfaWQgPDwgMTYpIHwKIAkJCQkgRVRIRVIxMzk0X0dBU1BfU1BFQ0lGSUVSX0lEX0hJKTsKLQlwLT5kYXRhWzFdID0gX19jb25zdGFudF9jcHVfdG9fYmUzMigoRVRIRVIxMzk0X0dBU1BfU1BFQ0lGSUVSX0lEX0xPIDw8IDI0KSB8Ci0JCQkJCSAgICBFVEhFUjEzOTRfR0FTUF9WRVJTSU9OKTsKKwlwLT5kYXRhWzFdID0gY3B1X3RvX2JlMzIoKEVUSEVSMTM5NF9HQVNQX1NQRUNJRklFUl9JRF9MTyA8PCAyNCkgfAorCQkJCSBFVEhFUjEzOTRfR0FTUF9WRVJTSU9OKTsKIAogCS8qIFNldHRpbmcgdGhlIG5vZGUgaWQgdG8gQUxMX05PREVTIChub3QgTE9DQUxfQlVTIHwgQUxMX05PREVTKQogCSAqIHByZXZlbnRzIGhwc2Jfc2VuZF9wYWNrZXQoKSBmcm9tIHNldHRpbmcgdGhlIHNwZWVkIHRvIGFuIGFyYml0cmFyeQpAQCAtMTYyNiw3ICsxNjIxLDcgQEAKIAlnZnBfdCBrbWZsYWdzID0gaW5faW50ZXJydXB0KCkgPyBHRlBfQVRPTUlDIDogR0ZQX0tFUk5FTDsKIAlzdHJ1Y3QgZXRoMTM5NGhkciAqZXRoOwogCXN0cnVjdCBldGgxMzk0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwotCWludCBwcm90bzsKKwlfX2JlMTYgcHJvdG87CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlub2RlaWRfdCBkZXN0X25vZGU7CiAJZXRoMTM5NF90eF90eXBlIHR4X3R5cGU7CkBAIC0xNjcwLDkgKzE2NjUsOSBAQAogCS8qIFNldCB0aGUgdHJhbnNtaXNzaW9uIHR5cGUgZm9yIHRoZSBwYWNrZXQuICBBUlAgcGFja2V0cyBhbmQgSVAKIAkgKiBicm9hZGNhc3QgcGFja2V0cyBhcmUgc2VudCB2aWEgR0FTUC4gKi8KIAlpZiAobWVtY21wKGV0aC0+aF9kZXN0LCBkZXYtPmJyb2FkY2FzdCwgRVRIMTM5NF9BTEVOKSA9PSAwIHx8Ci0JICAgIHByb3RvID09IF9fY29uc3RhbnRfaHRvbnMoRVRIX1BfQVJQKSB8fAotCSAgICAocHJvdG8gPT0gX19jb25zdGFudF9odG9ucyhFVEhfUF9JUCkgJiYKLQkgICAgIElOX01VTFRJQ0FTVChfX2NvbnN0YW50X250b2hsKHNrYi0+bmguaXBoLT5kYWRkcikpKSkgeworCSAgICBwcm90byA9PSBodG9ucyhFVEhfUF9BUlApIHx8CisJICAgIChwcm90byA9PSBodG9ucyhFVEhfUF9JUCkgJiYKKwkgICAgIElOX01VTFRJQ0FTVChudG9obChza2ItPm5oLmlwaC0+ZGFkZHIpKSkpIHsKIAkJdHhfdHlwZSA9IEVUSDEzOTRfR0FTUDsKIAkJZGVzdF9ub2RlID0gTE9DQUxfQlVTIHwgQUxMX05PREVTOwogCQltYXhfcGF5bG9hZCA9IHByaXYtPmJjX21heHBheWxvYWQgLSBFVEhFUjEzOTRfR0FTUF9PVkVSSEVBRDsKQEAgLTE2ODgsNyArMTY4Myw3IEBACiAJCQlnb3RvIGZhaWw7CiAJCX0KIAkJbm9kZV9pbmZvID0gKHN0cnVjdCBldGgxMzk0X25vZGVfaW5mbyopbm9kZS0+dWQtPmRldmljZS5kcml2ZXJfZGF0YTsKLQkJaWYgKG5vZGVfaW5mby0+ZmlmbyA9PSBFVEhFUjEzOTRfSU5WQUxJRF9BRERSKSB7CisJCWlmIChub2RlX2luZm8tPmZpZm8gPT0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UpIHsKIAkJCXJldCA9IC1FQUdBSU47CiAJCQlnb3RvIGZhaWw7CiAJCX0KQEAgLTE3MDQsNyArMTY5OSw3IEBACiAJfQogCiAJLyogSWYgdGhpcyBpcyBhbiBBUlAgcGFja2V0LCBjb252ZXJ0IGl0ICovCi0JaWYgKHByb3RvID09IF9fY29uc3RhbnRfaHRvbnMgKEVUSF9QX0FSUCkpCisJaWYgKHByb3RvID09IGh0b25zKEVUSF9QX0FSUCkpCiAJCWV0aGVyMTM5NF9hcnBfdG9fMTM5NGFycCAoc2tiLCBkZXYpOwogCiAJcHRhc2stPmhkci53b3Jkcy53b3JkMSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L2V0aDEzOTQuaCBiL2RyaXZlcnMvaWVlZTEzOTQvZXRoMTM5NC5oCmluZGV4IGE3NzIxM2MuLmM0NWNiZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvZXRoMTM5NC5oCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvZXRoMTM5NC5oCkBAIC0zMiw4ICszMiw2IEBACiAgKiBTMzIwMCAocGVyIFRhYmxlIDE2LTMgb2YgSUVFRSAxMzk0Yi0yMDAyKS4gKi8KICNkZWZpbmUgRVRIRVIxMzk0X1JFR0lPTl9BRERSX0xFTgk0MDk2CiAKLSNkZWZpbmUgRVRIRVIxMzk0X0lOVkFMSURfQUREUgkJfjBVTEwKLQogLyogR0FTUCBpZGVudGlmaWVyIG51bWJlcnMgZm9yIElQdjQgb3ZlciBJRUVFIDEzOTQgKi8KICNkZWZpbmUgRVRIRVIxMzk0X0dBU1BfU1BFQ0lGSUVSX0lECTB4MDAwMDVFCiAjZGVmaW5lIEVUSEVSMTM5NF9HQVNQX1NQRUNJRklFUl9JRF9ISQkoKEVUSEVSMTM5NF9HQVNQX1NQRUNJRklFUl9JRCA+PiA4KSAmIDB4ZmZmZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvaGlnaGxldmVsLmMgYi9kcml2ZXJzL2llZWUxMzk0L2hpZ2hsZXZlbC5jCmluZGV4IDQ5MWU2MDMuLjI1YjIyNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvaGlnaGxldmVsLmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC9oaWdobGV2ZWwuYwpAQCAtNTMsNyArNTMsNyBAQAogCiAKIHN0YXRpYyBzdHJ1Y3QgaGxfaG9zdF9pbmZvICpobF9nZXRfaG9zdGluZm8oc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwKLQkJCQkJICAgICAgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCkKKwkJCQkJICAgIHN0cnVjdCBocHNiX2hvc3QgKmhvc3QpCiB7CiAJc3RydWN0IGhsX2hvc3RfaW5mbyAqaGkgPSBOVUxMOwogCkBAIC02OCwyNCArNjgsMTggQEAKIAkJfQogCX0KIAlyZWFkX3VubG9jaygmaGwtPmhvc3RfaW5mb19sb2NrKTsKLQogCXJldHVybiBOVUxMOwogfQogCi0KIC8qIFJldHVybnMgYSBwZXIgaG9zdC9kcml2ZXIgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgcHJldmlvdXNseSBzdG9yZWQgYnkKICAqIGhwc2JfY3JlYXRlX2hvc3RpbmZvLiAqLwogdm9pZCAqaHBzYl9nZXRfaG9zdGluZm8oc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCkKIHsKIAlzdHJ1Y3QgaGxfaG9zdF9pbmZvICpoaSA9IGhsX2dldF9ob3N0aW5mbyhobCwgaG9zdCk7CiAKLQlpZiAoaGkpCi0JCXJldHVybiBoaS0+ZGF0YTsKLQotCXJldHVybiBOVUxMOworCXJldHVybiBoaSA/IGhpLT5kYXRhIDogTlVMTDsKIH0KIAotCiAvKiBJZiBzaXplIGlzIHplcm8sIHRoZW4gdGhlIHJldHVybiBoZXJlIGlzIG9ubHkgdmFsaWQgZm9yIGVycm9yIGNoZWNraW5nICovCiB2b2lkICpocHNiX2NyZWF0ZV9ob3N0aW5mbyhzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsLCBzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LAogCQkJICAgc2l6ZV90IGRhdGFfc2l6ZSkKQEAgLTk2LDggKzkwLDggQEAKIAogCWhpID0gaGxfZ2V0X2hvc3RpbmZvKGhsLCBob3N0KTsKIAlpZiAoaGkpIHsKLQkJSFBTQl9FUlIoIiVzIGNhbGxlZCBocHNiX2NyZWF0ZV9ob3N0aW5mbyB3aGVuIGhvc3RpbmZvIGFscmVhZHkgZXhpc3RzIiwKLQkJCSBobC0+bmFtZSk7CisJCUhQU0JfRVJSKCIlcyBjYWxsZWQgaHBzYl9jcmVhdGVfaG9zdGluZm8gd2hlbiBob3N0aW5mbyBhbHJlYWR5IgorCQkJICIgZXhpc3RzIiwgaGwtPm5hbWUpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTEyMCw3ICsxMTQsNiBAQAogCXJldHVybiBkYXRhOwogfQogCi0KIGludCBocHNiX3NldF9ob3N0aW5mbyhzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsLCBzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LAogCQkgICAgICB2b2lkICpkYXRhKQogewpAQCAtMTMyLDE2ICsxMjUsMTQgQEAKIAkJCWhpLT5kYXRhID0gZGF0YTsKIAkJCXJldHVybiAwOwogCQl9IGVsc2UKLQkJCUhQU0JfRVJSKCIlcyBjYWxsZWQgaHBzYl9zZXRfaG9zdGluZm8gd2hlbiBob3N0aW5mbyBhbHJlYWR5IGhhcyBkYXRhIiwKLQkJCQkgaGwtPm5hbWUpOworCQkJSFBTQl9FUlIoIiVzIGNhbGxlZCBocHNiX3NldF9ob3N0aW5mbyB3aGVuIGhvc3RpbmZvICIKKwkJCQkgImFscmVhZHkgaGFzIGRhdGEiLCBobC0+bmFtZSk7CiAJfSBlbHNlCiAJCUhQU0JfRVJSKCIlcyBjYWxsZWQgaHBzYl9zZXRfaG9zdGluZm8gd2hlbiBubyBob3N0aW5mbyBleGlzdHMiLAogCQkJIGhsLT5uYW1lKTsKLQogCXJldHVybiAtRUlOVkFMOwogfQogCi0KIHZvaWQgaHBzYl9kZXN0cm95X2hvc3RpbmZvKHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGwsIHN0cnVjdCBocHNiX2hvc3QgKmhvc3QpCiB7CiAJc3RydWN0IGhsX2hvc3RfaW5mbyAqaGk7CkBAIC0xNTQsMjMgKzE0NSwyMCBAQAogCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmaGwtPmhvc3RfaW5mb19sb2NrLCBmbGFncyk7CiAJCWtmcmVlKGhpKTsKIAl9Ci0KIAlyZXR1cm47CiB9CiAKLQotdm9pZCBocHNiX3NldF9ob3N0aW5mb19rZXkoc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgdW5zaWduZWQgbG9uZyBrZXkpCit2b2lkIGhwc2Jfc2V0X2hvc3RpbmZvX2tleShzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsLCBzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LAorCQkJICAgdW5zaWduZWQgbG9uZyBrZXkpCiB7CiAJc3RydWN0IGhsX2hvc3RfaW5mbyAqaGk7CiAKIAloaSA9IGhsX2dldF9ob3N0aW5mbyhobCwgaG9zdCk7CiAJaWYgKGhpKQogCQloaS0+a2V5ID0ga2V5OwotCiAJcmV0dXJuOwogfQogCi0KIHZvaWQgKmhwc2JfZ2V0X2hvc3RpbmZvX2J5a2V5KHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGwsIHVuc2lnbmVkIGxvbmcga2V5KQogewogCXN0cnVjdCBobF9ob3N0X2luZm8gKmhpOwpAQCAtMTg3LDQ2ICsxNzUsNDEgQEAKIAkJfQogCX0KIAlyZWFkX3VubG9jaygmaGwtPmhvc3RfaW5mb19sb2NrKTsKLQogCXJldHVybiBkYXRhOwogfQogCi0KIHN0YXRpYyBpbnQgaGlnaGxldmVsX2Zvcl9lYWNoX2hvc3RfcmVnKHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsIHZvaWQgKl9fZGF0YSkKIHsKIAlzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsID0gX19kYXRhOwogCiAJaGwtPmFkZF9ob3N0KGhvc3QpOwogCi0gICAgICAgIGlmIChob3N0LT51cGRhdGVfY29uZmlnX3JvbSkgewotCQlpZiAoaHBzYl91cGRhdGVfY29uZmlnX3JvbV9pbWFnZShob3N0KSA8IDApIHsKLQkJCUhQU0JfRVJSKCJGYWlsZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbiBST00gaW1hZ2UgZm9yIGhvc3QgIgotCQkJCSAiJXMtJWQiLCBobC0+bmFtZSwgaG9zdC0+aWQpOwotCQl9Ci0JfQotCisJaWYgKGhvc3QtPnVwZGF0ZV9jb25maWdfcm9tICYmIGhwc2JfdXBkYXRlX2NvbmZpZ19yb21faW1hZ2UoaG9zdCkgPCAwKQorCQlIUFNCX0VSUigiRmFpbGVkIHRvIGdlbmVyYXRlIENvbmZpZ3VyYXRpb24gUk9NIGltYWdlIGZvciBob3N0ICIKKwkJCSAiJXMtJWQiLCBobC0+bmFtZSwgaG9zdC0+aWQpOwogCXJldHVybiAwOwogfQogCiB2b2lkIGhwc2JfcmVnaXN0ZXJfaGlnaGxldmVsKHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGwpCiB7Ci0gICAgICAgIElOSVRfTElTVF9IRUFEKCZobC0+YWRkcl9saXN0KTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJSU5JVF9MSVNUX0hFQUQoJmhsLT5hZGRyX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZobC0+aG9zdF9pbmZvX2xpc3QpOwogCiAJcndsb2NrX2luaXQoJmhsLT5ob3N0X2luZm9fbG9jayk7CiAKIAlkb3duX3dyaXRlKCZobF9kcml2ZXJzX3NlbSk7Ci0gICAgICAgIGxpc3RfYWRkX3RhaWwoJmhsLT5obF9saXN0LCAmaGxfZHJpdmVycyk7CisJbGlzdF9hZGRfdGFpbCgmaGwtPmhsX2xpc3QsICZobF9kcml2ZXJzKTsKIAl1cF93cml0ZSgmaGxfZHJpdmVyc19zZW0pOwogCi0Jd3JpdGVfbG9jaygmaGxfaXJxc19sb2NrKTsKKwl3cml0ZV9sb2NrX2lycXNhdmUoJmhsX2lycXNfbG9jaywgZmxhZ3MpOwogCWxpc3RfYWRkX3RhaWwoJmhsLT5pcnFfbGlzdCwgJmhsX2lycXMpOwotCXdyaXRlX3VubG9jaygmaGxfaXJxc19sb2NrKTsKKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmaGxfaXJxc19sb2NrLCBmbGFncyk7CiAKIAlpZiAoaGwtPmFkZF9ob3N0KQogCQlub2RlbWdyX2Zvcl9lYWNoX2hvc3QoaGwsIGhpZ2hsZXZlbF9mb3JfZWFjaF9ob3N0X3JlZyk7Ci0KLSAgICAgICAgcmV0dXJuOworCXJldHVybjsKIH0KIAogc3RhdGljIHZvaWQgX19kZWxldGVfYWRkcihzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlICphcykKQEAgLTIzNiw3ICsyMTksOCBAQAogCWtmcmVlKGFzKTsKIH0KIAotc3RhdGljIHZvaWQgX191bnJlZ2lzdGVyX2hvc3Qoc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgaW50IHVwZGF0ZV9jcikKK3N0YXRpYyB2b2lkIF9fdW5yZWdpc3Rlcl9ob3N0KHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGwsIHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsCisJCQkgICAgICBpbnQgdXBkYXRlX2NyKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IGxpc3RfaGVhZCAqbGgsICpuZXh0OwpAQCAtMjUxLDcgKzIzNSw2IEBACiAJd3JpdGVfbG9ja19pcnFzYXZlKCZhZGRyX3NwYWNlX2xvY2ssIGZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX3NhZmUgKGxoLCBuZXh0LCAmaGwtPmFkZHJfbGlzdCkgewogCQlhcyA9IGxpc3RfZW50cnkobGgsIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUsIGhsX2xpc3QpOwotCiAJCWlmIChhcy0+aG9zdCA9PSBob3N0KQogCQkJX19kZWxldGVfYWRkcihhcyk7CiAJfQpAQCAtMjU5LDE1ICsyNDIsMTIgQEAKIAogCS8qIE5vdyB1cGRhdGUgdGhlIGNvbmZpZy1yb20gdG8gcmVmbGVjdCBhbnl0aGluZyByZW1vdmVkIGJ5IHRoZQogCSAqIGhpZ2hsZXZlbCBkcml2ZXIuICovCi0JaWYgKHVwZGF0ZV9jciAmJiBob3N0LT51cGRhdGVfY29uZmlnX3JvbSkgewotCQlpZiAoaHBzYl91cGRhdGVfY29uZmlnX3JvbV9pbWFnZShob3N0KSA8IDApIHsKLQkJCUhQU0JfRVJSKCJGYWlsZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbiBST00gaW1hZ2UgZm9yIGhvc3QgIgotCQkJCSAiJXMtJWQiLCBobC0+bmFtZSwgaG9zdC0+aWQpOwotCQl9Ci0JfQorCWlmICh1cGRhdGVfY3IgJiYgaG9zdC0+dXBkYXRlX2NvbmZpZ19yb20gJiYKKwkgICAgaHBzYl91cGRhdGVfY29uZmlnX3JvbV9pbWFnZShob3N0KSA8IDApCisJCUhQU0JfRVJSKCJGYWlsZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbiBST00gaW1hZ2UgZm9yIGhvc3QgIgorCQkJICIlcy0lZCIsIGhsLT5uYW1lLCBob3N0LT5pZCk7CiAKLQkvKiBBbmQgZmluYWxseSwgcmVtb3ZlIGFsbCB0aGUgaG9zdCBpbmZvIGFzc29jaWF0ZWQgYmV0d2VlbiB0aGVzZQotCSAqIHR3by4gKi8KKwkvKiBGaW5hbGx5IHJlbW92ZSBhbGwgdGhlIGhvc3QgaW5mbyBhc3NvY2lhdGVkIGJldHdlZW4gdGhlc2UgdHdvLiAqLwogCWhwc2JfZGVzdHJveV9ob3N0aW5mbyhobCwgaG9zdCk7CiB9CiAKQEAgLTI3NiwxOCArMjU2LDE5IEBACiAJc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCA9IF9fZGF0YTsKIAogCV9fdW5yZWdpc3Rlcl9ob3N0KGhsLCBob3N0LCAxKTsKLQogCXJldHVybiAwOwogfQogCiB2b2lkIGhwc2JfdW5yZWdpc3Rlcl9oaWdobGV2ZWwoc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCkKIHsKLQl3cml0ZV9sb2NrKCZobF9pcnFzX2xvY2spOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwl3cml0ZV9sb2NrX2lycXNhdmUoJmhsX2lycXNfbG9jaywgZmxhZ3MpOwogCWxpc3RfZGVsKCZobC0+aXJxX2xpc3QpOwotCXdyaXRlX3VubG9jaygmaGxfaXJxc19sb2NrKTsKKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmaGxfaXJxc19sb2NrLCBmbGFncyk7CiAKIAlkb3duX3dyaXRlKCZobF9kcml2ZXJzX3NlbSk7Ci0gICAgICAgIGxpc3RfZGVsKCZobC0+aGxfbGlzdCk7CisJbGlzdF9kZWwoJmhsLT5obF9saXN0KTsKIAl1cF93cml0ZSgmaGxfZHJpdmVyc19zZW0pOwogCiAJbm9kZW1ncl9mb3JfZWFjaF9ob3N0KGhsLCBoaWdobGV2ZWxfZm9yX2VhY2hfaG9zdF91bnJlZyk7CkBAIC0zMDEsNyArMjgyLDcgQEAKIHsKIAlzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlICphcywgKmExLCAqYTI7CiAJc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7Ci0JdTY0IHJldHZhbCA9IH4wVUxMOworCXU2NCByZXR2YWwgPSBDU1IxMjEyX0lOVkFMSURfQUREUl9TUEFDRTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXU2NCBhbGlnbl9tYXNrID0gfihhbGlnbm1lbnQgLSAxKTsKIApAQCAtMzEyLDE0ICsyOTMsMTkgQEAKIAkJcmV0dXJuIHJldHZhbDsKIAl9CiAKLQlpZiAoc3RhcnQgPT0gfjBVTEwgJiYgZW5kID09IH4wVUxMKSB7Ci0JCXN0YXJ0ID0gQ1NSMTIxMl9BTExfU1BBQ0VfQkFTRSArIDB4ZmZmZjAwMDAwMDAwVUxMOyAgLyogb2hjaTEzOTQuYyBsaW1pdCAqLwotCQllbmQgPSBDU1IxMjEyX0FMTF9TUEFDRV9FTkQ7CisJLyogZGVmYXVsdCByYW5nZSwKKwkgKiBhdm9pZHMgY29udHJvbGxlcidzIHBvc3RlZCB3cml0ZSBhcmVhIChzZWUgT0hDSSAxLjEgY2xhdXNlIDEuNSkgKi8KKwlpZiAoc3RhcnQgPT0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UgJiYKKwkgICAgZW5kICAgPT0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UpIHsKKwkJc3RhcnQgPSBob3N0LT5taWRkbGVfYWRkcl9zcGFjZTsKKwkJZW5kICAgPSBDU1IxMjEyX0FMTF9TUEFDRV9FTkQ7CiAJfQogCi0JaWYgKCgoc3RhcnR8ZW5kKSAmIH5hbGlnbl9tYXNrKSB8fCAoc3RhcnQgPj0gZW5kKSB8fCAoZW5kID4gMHgxMDAwMDAwMDAwMDAwVUxMKSkgewotCQlIUFNCX0VSUigiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBhZGRyZXNzZXMgKHN0YXJ0ID0gJTAxMkx4ICAgIGVuZCA9ICUwMTJMeCkiLAotCQkJIF9fRlVOQ1RJT05fXywgKHVuc2lnbmVkIGxvbmcgbG9uZylzdGFydCwgKHVuc2lnbmVkIGxvbmcgbG9uZyllbmQpOworCWlmICgoKHN0YXJ0fGVuZCkgJiB+YWxpZ25fbWFzaykgfHwgKHN0YXJ0ID49IGVuZCkgfHwKKwkgICAgKGVuZCA+IENTUjEyMTJfQUxMX1NQQUNFX0VORCkpIHsKKwkJSFBTQl9FUlIoIiVzIGNhbGxlZCB3aXRoIGludmFsaWQgYWRkcmVzc2VzICIKKwkJCSAiKHN0YXJ0ID0gJTAxMkx4ICBlbmQgPSAlMDEyTHgpIiwgX19GVU5DVElPTl9fLAorCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpc3RhcnQsKHVuc2lnbmVkIGxvbmcgbG9uZyllbmQpOwogCQlyZXR1cm4gcmV0dmFsOwogCX0KIApAQCAtMzMzLDIwICszMTksMjEgQEAKIAlhcy0+aG9zdCA9IGhvc3Q7CiAKIAl3cml0ZV9sb2NrX2lycXNhdmUoJmFkZHJfc3BhY2VfbG9jaywgZmxhZ3MpOwotCiAJbGlzdF9mb3JfZWFjaChlbnRyeSwgJmhvc3QtPmFkZHJfc3BhY2UpIHsKIAkJdTY0IGExc2EsIGExZWE7CiAJCXU2NCBhMnNhLCBhMmVhOwogCiAJCWExID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSwgaG9zdF9saXN0KTsKLQkJYTIgPSBsaXN0X2VudHJ5KGVudHJ5LT5uZXh0LCBzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlLCBob3N0X2xpc3QpOworCQlhMiA9IGxpc3RfZW50cnkoZW50cnktPm5leHQsIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUsCisJCQkJaG9zdF9saXN0KTsKIAogCQlhMXNhID0gYTEtPnN0YXJ0ICYgYWxpZ25fbWFzazsKIAkJYTFlYSA9IChhMS0+ZW5kICsgYWxpZ25tZW50IC0xKSAmIGFsaWduX21hc2s7CiAJCWEyc2EgPSBhMi0+c3RhcnQgJiBhbGlnbl9tYXNrOwogCQlhMmVhID0gKGEyLT5lbmQgKyBhbGlnbm1lbnQgLTEpICYgYWxpZ25fbWFzazsKIAotCQlpZiAoKGEyc2EgLSBhMWVhID49IHNpemUpICYmIChhMnNhIC0gc3RhcnQgPj0gc2l6ZSkgJiYgKGEyc2EgPiBzdGFydCkpIHsKKwkJaWYgKChhMnNhIC0gYTFlYSA+PSBzaXplKSAmJiAoYTJzYSAtIHN0YXJ0ID49IHNpemUpICYmCisJCSAgICAoYTJzYSA+IHN0YXJ0KSkgewogCQkJYXMtPnN0YXJ0ID0gbWF4KHN0YXJ0LCBhMWVhKTsKIAkJCWFzLT5lbmQgPSBhcy0+c3RhcnQgKyBzaXplOwogCQkJbGlzdF9hZGQoJmFzLT5ob3N0X2xpc3QsIGVudHJ5KTsKQEAgLTM1NSw0NyArMzQyLDQ1IEBACiAJCQlicmVhazsKIAkJfQogCX0KLQogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhZGRyX3NwYWNlX2xvY2ssIGZsYWdzKTsKIAotCWlmIChyZXR2YWwgPT0gfjBVTEwpIHsKKwlpZiAocmV0dmFsID09IENTUjEyMTJfSU5WQUxJRF9BRERSX1NQQUNFKQogCQlrZnJlZShhcyk7Ci0JfQotCiAJcmV0dXJuIHJldHZhbDsKIH0KIAogaW50IGhwc2JfcmVnaXN0ZXJfYWRkcnNwYWNlKHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGwsIHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhwc2JfYWRkcmVzc19vcHMgKm9wcywgdTY0IHN0YXJ0LCB1NjQgZW5kKQorCQkJICAgIHN0cnVjdCBocHNiX2FkZHJlc3Nfb3BzICpvcHMsIHU2NCBzdGFydCwgdTY0IGVuZCkKIHsKLSAgICAgICAgc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXM7CisJc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXM7CiAJc3RydWN0IGxpc3RfaGVhZCAqbGg7Ci0gICAgICAgIGludCByZXR2YWwgPSAwOwotICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCByZXR2YWwgPSAwOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLSAgICAgICAgaWYgKCgoc3RhcnR8ZW5kKSAmIDMpIHx8IChzdGFydCA+PSBlbmQpIHx8IChlbmQgPiAweDEwMDAwMDAwMDAwMDBVTEwpKSB7Ci0gICAgICAgICAgICAgICAgSFBTQl9FUlIoIiVzIGNhbGxlZCB3aXRoIGludmFsaWQgYWRkcmVzc2VzIiwgX19GVU5DVElPTl9fKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQorCWlmICgoKHN0YXJ0fGVuZCkgJiAzKSB8fCAoc3RhcnQgPj0gZW5kKSB8fAorCSAgICAoZW5kID4gQ1NSMTIxMl9BTExfU1BBQ0VfRU5EKSkgeworCQlIUFNCX0VSUigiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBhZGRyZXNzZXMiLCBfX0ZVTkNUSU9OX18pOworCQlyZXR1cm4gMDsKKwl9CiAKIAlhcyA9IGttYWxsb2Moc2l6ZW9mKCphcyksIEdGUF9BVE9NSUMpOwogCWlmICghYXMpCiAJCXJldHVybiAwOwogCi0gICAgICAgIElOSVRfTElTVF9IRUFEKCZhcy0+aG9zdF9saXN0KTsKLSAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmFzLT5obF9saXN0KTsKLSAgICAgICAgYXMtPm9wID0gb3BzOwotICAgICAgICBhcy0+c3RhcnQgPSBzdGFydDsKLSAgICAgICAgYXMtPmVuZCA9IGVuZDsKKwlJTklUX0xJU1RfSEVBRCgmYXMtPmhvc3RfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmFzLT5obF9saXN0KTsKKwlhcy0+b3AgPSBvcHM7CisJYXMtPnN0YXJ0ID0gc3RhcnQ7CisJYXMtPmVuZCA9IGVuZDsKIAlhcy0+aG9zdCA9IGhvc3Q7CiAKIAl3cml0ZV9sb2NrX2lycXNhdmUoJmFkZHJfc3BhY2VfbG9jaywgZmxhZ3MpOwotCiAJbGlzdF9mb3JfZWFjaChsaCwgJmhvc3QtPmFkZHJfc3BhY2UpIHsKIAkJc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXNfdGhpcyA9CiAJCQlsaXN0X2VudHJ5KGxoLCBzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlLCBob3N0X2xpc3QpOwogCQlzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlICphc19uZXh0ID0KLQkJCWxpc3RfZW50cnkobGgtPm5leHQsIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUsIGhvc3RfbGlzdCk7CisJCQlsaXN0X2VudHJ5KGxoLT5uZXh0LCBzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlLAorCQkJCSAgIGhvc3RfbGlzdCk7CiAKIAkJaWYgKGFzX3RoaXMtPmVuZCA+IGFzLT5zdGFydCkKIAkJCWJyZWFrOwpAQCAtNDExLDYwICszOTYsNTEgQEAKIAogCWlmIChyZXR2YWwgPT0gMCkKIAkJa2ZyZWUoYXMpOwotCi0gICAgICAgIHJldHVybiByZXR2YWw7CisJcmV0dXJuIHJldHZhbDsKIH0KIAogaW50IGhwc2JfdW5yZWdpc3Rlcl9hZGRyc3BhY2Uoc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBzdGFydCkKKwkJCSAgICAgIHU2NCBzdGFydCkKIHsKLSAgICAgICAgaW50IHJldHZhbCA9IDA7Ci0gICAgICAgIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUgKmFzOwotICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsaCwgKm5leHQ7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJldHZhbCA9IDA7CisJc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXM7CisJc3RydWN0IGxpc3RfaGVhZCAqbGgsICpuZXh0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLSAgICAgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZhZGRyX3NwYWNlX2xvY2ssIGZsYWdzKTsKLQorCXdyaXRlX2xvY2tfaXJxc2F2ZSgmYWRkcl9zcGFjZV9sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaF9zYWZlIChsaCwgbmV4dCwgJmhsLT5hZGRyX2xpc3QpIHsKLSAgICAgICAgICAgICAgICBhcyA9IGxpc3RfZW50cnkobGgsIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUsIGhsX2xpc3QpOwotICAgICAgICAgICAgICAgIGlmIChhcy0+c3RhcnQgPT0gc3RhcnQgJiYgYXMtPmhvc3QgPT0gaG9zdCkgeworCQlhcyA9IGxpc3RfZW50cnkobGgsIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUsIGhsX2xpc3QpOworCQlpZiAoYXMtPnN0YXJ0ID09IHN0YXJ0ICYmIGFzLT5ob3N0ID09IGhvc3QpIHsKIAkJCV9fZGVsZXRlX2FkZHIoYXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhZGRyX3NwYWNlX2xvY2ssIGZsYWdzKTsKLQotICAgICAgICByZXR1cm4gcmV0dmFsOworCQkJcmV0dmFsID0gMTsKKwkJCWJyZWFrOworCQl9CisJfQorCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZhZGRyX3NwYWNlX2xvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0dmFsOwogfQogCiBpbnQgaHBzYl9saXN0ZW5fY2hhbm5lbChzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsLCBzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjaGFubmVsKQorCQkJdW5zaWduZWQgaW50IGNoYW5uZWwpCiB7Ci0gICAgICAgIGlmIChjaGFubmVsID4gNjMpIHsKLSAgICAgICAgICAgICAgICBIUFNCX0VSUigiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBjaGFubmVsIiwgX19GVU5DVElPTl9fKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChob3N0LT5pc29fbGlzdGVuX2NvdW50W2NoYW5uZWxdKysgPT0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiBob3N0LT5kcml2ZXItPmRldmN0bChob3N0LCBJU09fTElTVEVOX0NIQU5ORUwsIGNoYW5uZWwpOwotICAgICAgICB9Ci0KKwlpZiAoY2hhbm5lbCA+IDYzKSB7CisJCUhQU0JfRVJSKCIlcyBjYWxsZWQgd2l0aCBpbnZhbGlkIGNoYW5uZWwiLCBfX0ZVTkNUSU9OX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJaWYgKGhvc3QtPmlzb19saXN0ZW5fY291bnRbY2hhbm5lbF0rKyA9PSAwKQorCQlyZXR1cm4gaG9zdC0+ZHJpdmVyLT5kZXZjdGwoaG9zdCwgSVNPX0xJU1RFTl9DSEFOTkVMLCBjaGFubmVsKTsKIAlyZXR1cm4gMDsKIH0KIAogdm9pZCBocHNiX3VubGlzdGVuX2NoYW5uZWwoc3RydWN0IGhwc2JfaGlnaGxldmVsICpobCwgc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjaGFubmVsKQorCQkJICAgdW5zaWduZWQgaW50IGNoYW5uZWwpCiB7Ci0gICAgICAgIGlmIChjaGFubmVsID4gNjMpIHsKLSAgICAgICAgICAgICAgICBIUFNCX0VSUigiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBjaGFubmVsIiwgX19GVU5DVElPTl9fKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoLS1ob3N0LT5pc29fbGlzdGVuX2NvdW50W2NoYW5uZWxdID09IDApIHsKLSAgICAgICAgICAgICAgICBob3N0LT5kcml2ZXItPmRldmN0bChob3N0LCBJU09fVU5MSVNURU5fQ0hBTk5FTCwgY2hhbm5lbCk7Ci0gICAgICAgIH0KKwlpZiAoY2hhbm5lbCA+IDYzKSB7CisJCUhQU0JfRVJSKCIlcyBjYWxsZWQgd2l0aCBpbnZhbGlkIGNoYW5uZWwiLCBfX0ZVTkNUSU9OX18pOworCQlyZXR1cm47CisJfQorCWlmICgtLWhvc3QtPmlzb19saXN0ZW5fY291bnRbY2hhbm5lbF0gPT0gMCkKKwkJaG9zdC0+ZHJpdmVyLT5kZXZjdGwoaG9zdCwgSVNPX1VOTElTVEVOX0NIQU5ORUwsIGNoYW5uZWwpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0X2hwc2JfaGlnaGxldmVsKHN0cnVjdCBocHNiX2hvc3QgKmhvc3QpCkBAIC00ODUsMjYgKzQ2MSwyNCBAQAogCiB2b2lkIGhpZ2hsZXZlbF9hZGRfaG9zdChzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0KQogewotICAgICAgICBzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsOworCXN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGw7CiAKIAlpbml0X2hwc2JfaGlnaGxldmVsKGhvc3QpOwogCiAJZG93bl9yZWFkKCZobF9kcml2ZXJzX3NlbSk7Ci0gICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoaGwsICZobF9kcml2ZXJzLCBobF9saXN0KSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShobCwgJmhsX2RyaXZlcnMsIGhsX2xpc3QpIHsKIAkJaWYgKGhsLT5hZGRfaG9zdCkKIAkJCWhsLT5hZGRfaG9zdChob3N0KTsKLSAgICAgICAgfQotCXVwX3JlYWQoJmhsX2RyaXZlcnNfc2VtKTsKLQlpZiAoaG9zdC0+dXBkYXRlX2NvbmZpZ19yb20pIHsKLQkJaWYgKGhwc2JfdXBkYXRlX2NvbmZpZ19yb21faW1hZ2UoaG9zdCkgPCAwKQotCQkJSFBTQl9FUlIoIkZhaWxlZCB0byBnZW5lcmF0ZSBDb25maWd1cmF0aW9uIFJPTSBpbWFnZSBmb3IgIgotCQkJCSAiaG9zdCAlcy0lZCIsIGhsLT5uYW1lLCBob3N0LT5pZCk7CiAJfQorCXVwX3JlYWQoJmhsX2RyaXZlcnNfc2VtKTsKKwlpZiAoaG9zdC0+dXBkYXRlX2NvbmZpZ19yb20gJiYgaHBzYl91cGRhdGVfY29uZmlnX3JvbV9pbWFnZShob3N0KSA8IDApCisJCUhQU0JfRVJSKCJGYWlsZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbiBST00gaW1hZ2UgZm9yIGhvc3QgIgorCQkJICIlcy0lZCIsIGhsLT5uYW1lLCBob3N0LT5pZCk7CiB9CiAKIHZvaWQgaGlnaGxldmVsX3JlbW92ZV9ob3N0KHN0cnVjdCBocHNiX2hvc3QgKmhvc3QpCiB7Ci0gICAgICAgIHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGw7CisJc3RydWN0IGhwc2JfaGlnaGxldmVsICpobDsKIAogCWRvd25fcmVhZCgmaGxfZHJpdmVyc19zZW0pOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoaGwsICZobF9kcml2ZXJzLCBobF9saXN0KQpAQCAtNTE0LDE4NCArNDg4LDE2OSBAQAogCiB2b2lkIGhpZ2hsZXZlbF9ob3N0X3Jlc2V0KHN0cnVjdCBocHNiX2hvc3QgKmhvc3QpCiB7Ci0gICAgICAgIHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGw7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsOwogCi0JcmVhZF9sb2NrKCZobF9pcnFzX2xvY2spOworCXJlYWRfbG9ja19pcnFzYXZlKCZobF9pcnFzX2xvY2ssIGZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGhsLCAmaGxfaXJxcywgaXJxX2xpc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoaGwtPmhvc3RfcmVzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBobC0+aG9zdF9yZXNldChob3N0KTsKLSAgICAgICAgfQotCXJlYWRfdW5sb2NrKCZobF9pcnFzX2xvY2spOworCQlpZiAoaGwtPmhvc3RfcmVzZXQpCisJCQlobC0+aG9zdF9yZXNldChob3N0KTsKKwl9CisJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmaGxfaXJxc19sb2NrLCBmbGFncyk7CiB9CiAKIHZvaWQgaGlnaGxldmVsX2lzb19yZWNlaXZlKHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsIHZvaWQgKmRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgICAgIHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGw7Ci0gICAgICAgIGludCBjaGFubmVsID0gKCgocXVhZGxldF90ICopZGF0YSlbMF0gPj4gOCkgJiAweDNmOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGhwc2JfaGlnaGxldmVsICpobDsKKwlpbnQgY2hhbm5lbCA9ICgoKHF1YWRsZXRfdCAqKWRhdGEpWzBdID4+IDgpICYgMHgzZjsKIAotICAgICAgICByZWFkX2xvY2soJmhsX2lycXNfbG9jayk7CisJcmVhZF9sb2NrX2lycXNhdmUoJmhsX2lycXNfbG9jaywgZmxhZ3MpOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoaGwsICZobF9pcnFzLCBpcnFfbGlzdCkgewotICAgICAgICAgICAgICAgIGlmIChobC0+aXNvX3JlY2VpdmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBobC0+aXNvX3JlY2VpdmUoaG9zdCwgY2hhbm5lbCwgZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgfQotICAgICAgICByZWFkX3VubG9jaygmaGxfaXJxc19sb2NrKTsKKwkJaWYgKGhsLT5pc29fcmVjZWl2ZSkKKwkJCWhsLT5pc29fcmVjZWl2ZShob3N0LCBjaGFubmVsLCBkYXRhLCBsZW5ndGgpOworCX0KKwlyZWFkX3VubG9ja19pcnFyZXN0b3JlKCZobF9pcnFzX2xvY2ssIGZsYWdzKTsKIH0KIAogdm9pZCBoaWdobGV2ZWxfZmNwX3JlcXVlc3Qoc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgaW50IG5vZGVpZCwgaW50IGRpcmVjdGlvbiwKIAkJCSAgIHZvaWQgKmRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgICAgIHN0cnVjdCBocHNiX2hpZ2hsZXZlbCAqaGw7Ci0gICAgICAgIGludCBjdHMgPSAoKHF1YWRsZXRfdCAqKWRhdGEpWzBdID4+IDQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaHBzYl9oaWdobGV2ZWwgKmhsOworCWludCBjdHMgPSAoKHF1YWRsZXRfdCAqKWRhdGEpWzBdID4+IDQ7CiAKLSAgICAgICAgcmVhZF9sb2NrKCZobF9pcnFzX2xvY2spOworCXJlYWRfbG9ja19pcnFzYXZlKCZobF9pcnFzX2xvY2ssIGZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGhsLCAmaGxfaXJxcywgaXJxX2xpc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoaGwtPmZjcF9yZXF1ZXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgaGwtPmZjcF9yZXF1ZXN0KGhvc3QsIG5vZGVpZCwgZGlyZWN0aW9uLCBjdHMsIGRhdGEsCisJCWlmIChobC0+ZmNwX3JlcXVlc3QpCisJCQlobC0+ZmNwX3JlcXVlc3QoaG9zdCwgbm9kZWlkLCBkaXJlY3Rpb24sIGN0cywgZGF0YSwKIAkJCQkJbGVuZ3RoKTsKLSAgICAgICAgfQotICAgICAgICByZWFkX3VubG9jaygmaGxfaXJxc19sb2NrKTsKKwl9CisJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmaGxfaXJxc19sb2NrLCBmbGFncyk7CiB9CiAKLWludCBoaWdobGV2ZWxfcmVhZChzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LCBpbnQgbm9kZWlkLCB2b2lkICpkYXRhLAotICAgICAgICAgICAgICAgICAgIHU2NCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1MTYgZmxhZ3MpCitpbnQgaGlnaGxldmVsX3JlYWQoc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgaW50IG5vZGVpZCwgdm9pZCAqZGF0YSwgdTY0IGFkZHIsCisJCSAgIHVuc2lnbmVkIGludCBsZW5ndGgsIHUxNiBmbGFncykKIHsKLSAgICAgICAgc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXM7Ci0gICAgICAgIHVuc2lnbmVkIGludCBwYXJ0bGVuZ3RoOwotICAgICAgICBpbnQgcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOworCXN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUgKmFzOworCXVuc2lnbmVkIGludCBwYXJ0bGVuZ3RoOworCWludCByY29kZSA9IFJDT0RFX0FERFJFU1NfRVJST1I7CiAKLSAgICAgICAgcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwotCisJcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYXMsICZob3N0LT5hZGRyX3NwYWNlLCBob3N0X2xpc3QpIHsKIAkJaWYgKGFzLT5zdGFydCA+IGFkZHIpCiAJCQlicmVhazsKIAotICAgICAgICAgICAgICAgIGlmIChhcy0+ZW5kID4gYWRkcikgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFydGxlbmd0aCA9IG1pbihhcy0+ZW5kIC0gYWRkciwgKHU2NCkgbGVuZ3RoKTsKKwkJaWYgKGFzLT5lbmQgPiBhZGRyKSB7CisJCQlwYXJ0bGVuZ3RoID0gbWluKGFzLT5lbmQgLSBhZGRyLCAodTY0KSBsZW5ndGgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXMtPm9wLT5yZWFkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjb2RlID0gYXMtPm9wLT5yZWFkKGhvc3QsIG5vZGVpZCwgZGF0YSwKKwkJCWlmIChhcy0+b3AtPnJlYWQpCisJCQkJcmNvZGUgPSBhcy0+b3AtPnJlYWQoaG9zdCwgbm9kZWlkLCBkYXRhLAogCQkJCQkJICAgICBhZGRyLCBwYXJ0bGVuZ3RoLCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY29kZSA9IFJDT0RFX1RZUEVfRVJST1I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisJCQllbHNlCisJCQkJcmNvZGUgPSBSQ09ERV9UWVBFX0VSUk9SOwogCiAJCQlkYXRhICs9IHBhcnRsZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggLT0gcGFydGxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIgKz0gcGFydGxlbmd0aDsKKwkJCWxlbmd0aCAtPSBwYXJ0bGVuZ3RoOworCQkJYWRkciArPSBwYXJ0bGVuZ3RoOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJjb2RlICE9IFJDT0RFX0NPTVBMRVRFKSB8fCAhbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCQkJaWYgKChyY29kZSAhPSBSQ09ERV9DT01QTEVURSkgfHwgIWxlbmd0aCkKKwkJCQlicmVhazsKKwkJfQorCX0KKwlyZWFkX3VubG9jaygmYWRkcl9zcGFjZV9sb2NrKTsKIAotICAgICAgICByZWFkX3VubG9jaygmYWRkcl9zcGFjZV9sb2NrKTsKLQotICAgICAgICBpZiAobGVuZ3RoICYmIChyY29kZSA9PSBSQ09ERV9DT01QTEVURSkpIHsKLSAgICAgICAgICAgICAgICByY29kZSA9IFJDT0RFX0FERFJFU1NfRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmNvZGU7CisJaWYgKGxlbmd0aCAmJiAocmNvZGUgPT0gUkNPREVfQ09NUExFVEUpKQorCQlyY29kZSA9IFJDT0RFX0FERFJFU1NfRVJST1I7CisJcmV0dXJuIHJjb2RlOwogfQogCi1pbnQgaGlnaGxldmVsX3dyaXRlKHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsIGludCBub2RlaWQsIGludCBkZXN0aWQsCi0JCSAgICB2b2lkICpkYXRhLCB1NjQgYWRkciwgdW5zaWduZWQgaW50IGxlbmd0aCwgdTE2IGZsYWdzKQoraW50IGhpZ2hsZXZlbF93cml0ZShzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LCBpbnQgbm9kZWlkLCBpbnQgZGVzdGlkLCB2b2lkICpkYXRhLAorCQkgICAgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBsZW5ndGgsIHUxNiBmbGFncykKIHsKLSAgICAgICAgc3RydWN0IGhwc2JfYWRkcmVzc19zZXJ2ZSAqYXM7Ci0gICAgICAgIHVuc2lnbmVkIGludCBwYXJ0bGVuZ3RoOwotICAgICAgICBpbnQgcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOworCXN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUgKmFzOworCXVuc2lnbmVkIGludCBwYXJ0bGVuZ3RoOworCWludCByY29kZSA9IFJDT0RFX0FERFJFU1NfRVJST1I7CiAKLSAgICAgICAgcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwotCisJcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYXMsICZob3N0LT5hZGRyX3NwYWNlLCBob3N0X2xpc3QpIHsKIAkJaWYgKGFzLT5zdGFydCA+IGFkZHIpCiAJCQlicmVhazsKIAotICAgICAgICAgICAgICAgIGlmIChhcy0+ZW5kID4gYWRkcikgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFydGxlbmd0aCA9IG1pbihhcy0+ZW5kIC0gYWRkciwgKHU2NCkgbGVuZ3RoKTsKKwkJaWYgKGFzLT5lbmQgPiBhZGRyKSB7CisJCQlwYXJ0bGVuZ3RoID0gbWluKGFzLT5lbmQgLSBhZGRyLCAodTY0KSBsZW5ndGgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXMtPm9wLT53cml0ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY29kZSA9IGFzLT5vcC0+d3JpdGUoaG9zdCwgbm9kZWlkLCBkZXN0aWQsCi0JCQkJCQkgICAgICBkYXRhLCBhZGRyLCBwYXJ0bGVuZ3RoLCBmbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY29kZSA9IFJDT0RFX1RZUEVfRVJST1I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisJCQlpZiAoYXMtPm9wLT53cml0ZSkKKwkJCQlyY29kZSA9IGFzLT5vcC0+d3JpdGUoaG9zdCwgbm9kZWlkLCBkZXN0aWQsCisJCQkJCQkgICAgICBkYXRhLCBhZGRyLCBwYXJ0bGVuZ3RoLAorCQkJCQkJICAgICAgZmxhZ3MpOworCQkJZWxzZQorCQkJCXJjb2RlID0gUkNPREVfVFlQRV9FUlJPUjsKIAogCQkJZGF0YSArPSBwYXJ0bGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIC09IHBhcnRsZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyICs9IHBhcnRsZW5ndGg7CisJCQlsZW5ndGggLT0gcGFydGxlbmd0aDsKKwkJCWFkZHIgKz0gcGFydGxlbmd0aDsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyY29kZSAhPSBSQ09ERV9DT01QTEVURSkgfHwgIWxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkJCWlmICgocmNvZGUgIT0gUkNPREVfQ09NUExFVEUpIHx8ICFsZW5ndGgpCisJCQkJYnJlYWs7CisJCX0KKwl9CisJcmVhZF91bmxvY2soJmFkZHJfc3BhY2VfbG9jayk7CiAKLSAgICAgICAgcmVhZF91bmxvY2soJmFkZHJfc3BhY2VfbG9jayk7Ci0KLSAgICAgICAgaWYgKGxlbmd0aCAmJiAocmNvZGUgPT0gUkNPREVfQ09NUExFVEUpKSB7Ci0gICAgICAgICAgICAgICAgcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJjb2RlOworCWlmIChsZW5ndGggJiYgKHJjb2RlID09IFJDT0RFX0NPTVBMRVRFKSkKKwkJcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOworCXJldHVybiByY29kZTsKIH0KIAotCiBpbnQgaGlnaGxldmVsX2xvY2soc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgaW50IG5vZGVpZCwgcXVhZGxldF90ICpzdG9yZSwKLSAgICAgICAgICAgICAgICAgICB1NjQgYWRkciwgcXVhZGxldF90IGRhdGEsIHF1YWRsZXRfdCBhcmcsIGludCBleHRfdGNvZGUsIHUxNiBmbGFncykKKwkJICAgdTY0IGFkZHIsIHF1YWRsZXRfdCBkYXRhLCBxdWFkbGV0X3QgYXJnLCBpbnQgZXh0X3Rjb2RlLAorCQkgICB1MTYgZmxhZ3MpCiB7Ci0gICAgICAgIHN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUgKmFzOwotICAgICAgICBpbnQgcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOworCXN0cnVjdCBocHNiX2FkZHJlc3Nfc2VydmUgKmFzOworCWludCByY29kZSA9IFJDT0RFX0FERFJFU1NfRVJST1I7CiAKLSAgICAgICAgcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwotCisJcmVhZF9sb2NrKCZhZGRyX3NwYWNlX2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoYXMsICZob3N0LT5hZGRyX3NwYWNlLCBob3N0X2xpc3QpIHsKIAkJaWYgKGFzLT5zdGFydCA+IGFkZHIpCiAJCQlicmVhazsKIAotICAgICAgICAgICAgICAgIGlmIChhcy0+ZW5kID4gYWRkcikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFzLT5vcC0+bG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY29kZSA9IGFzLT5vcC0+bG9jayhob3N0LCBub2RlaWQsIHN0b3JlLCBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBhcmcsIGV4dF90Y29kZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNvZGUgPSBSQ09ERV9UWVBFX0VSUk9SOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZWFkX3VubG9jaygmYWRkcl9zcGFjZV9sb2NrKTsKLQotICAgICAgICByZXR1cm4gcmNvZGU7CisJCWlmIChhcy0+ZW5kID4gYWRkcikgeworCQkJaWYgKGFzLT5vcC0+bG9jaykKKwkJCQlyY29kZSA9IGFzLT5vcC0+bG9jayhob3N0LCBub2RlaWQsIHN0b3JlLCBhZGRyLAorCQkJCQkJICAgICBkYXRhLCBhcmcsIGV4dF90Y29kZSwKKwkJCQkJCSAgICAgZmxhZ3MpOworCQkJZWxzZQorCQkJCXJjb2RlID0gUkNPREVfVFlQRV9FUlJPUjsKKwkJCWJyZWFrOworCQl9CisJfQorCXJlYWRfdW5sb2NrKCZhZGRyX3NwYWNlX2xvY2spOworCXJldHVybiByY29kZTsKIH0KIAogaW50IGhpZ2hsZXZlbF9sb2NrNjQoc3RydWN0IGhwc2JfaG9zdCAqaG9zdCwgaW50IG5vZGVpZCwgb2N0bGV0X3QgKnN0b3JlLAotICAgICAgICAgICAgICAgICAgICAgdTY0IGFkZHIsIG9jdGxldF90IGRhdGEsIG9jdGxldF90IGFyZywgaW50IGV4dF90Y29kZSwgdTE2IGZsYWdzKQorCQkgICAgIHU2NCBhZGRyLCBvY3RsZXRfdCBkYXRhLCBvY3RsZXRfdCBhcmcsIGludCBleHRfdGNvZGUsCisJCSAgICAgdTE2IGZsYWdzKQogewotICAgICAgICBzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlICphczsKLSAgICAgICAgaW50IHJjb2RlID0gUkNPREVfQUREUkVTU19FUlJPUjsKKwlzdHJ1Y3QgaHBzYl9hZGRyZXNzX3NlcnZlICphczsKKwlpbnQgcmNvZGUgPSBSQ09ERV9BRERSRVNTX0VSUk9SOwogCi0gICAgICAgIHJlYWRfbG9jaygmYWRkcl9zcGFjZV9sb2NrKTsKKwlyZWFkX2xvY2soJmFkZHJfc3BhY2VfbG9jayk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFzLCAmaG9zdC0+YWRkcl9zcGFjZSwgaG9zdF9saXN0KSB7CiAJCWlmIChhcy0+c3RhcnQgPiBhZGRyKQogCQkJYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBpZiAoYXMtPmVuZCA+IGFkZHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcy0+b3AtPmxvY2s2NCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY29kZSA9IGFzLT5vcC0+bG9jazY0KGhvc3QsIG5vZGVpZCwgc3RvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgZGF0YSwgYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF90Y29kZSwgZmxhZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNvZGUgPSBSQ09ERV9UWVBFX0VSUk9SOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZWFkX3VubG9jaygmYWRkcl9zcGFjZV9sb2NrKTsKLQotICAgICAgICByZXR1cm4gcmNvZGU7CisJCWlmIChhcy0+ZW5kID4gYWRkcikgeworCQkJaWYgKGFzLT5vcC0+bG9jazY0KQorCQkJCXJjb2RlID0gYXMtPm9wLT5sb2NrNjQoaG9zdCwgbm9kZWlkLCBzdG9yZSwKKwkJCQkJCSAgICAgICBhZGRyLCBkYXRhLCBhcmcsCisJCQkJCQkgICAgICAgZXh0X3Rjb2RlLCBmbGFncyk7CisJCQllbHNlCisJCQkJcmNvZGUgPSBSQ09ERV9UWVBFX0VSUk9SOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmVhZF91bmxvY2soJmFkZHJfc3BhY2VfbG9jayk7CisJcmV0dXJuIHJjb2RlOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZWVlMTM5NC9ob3N0cy5jIGIvZHJpdmVycy9pZWVlMTM5NC9ob3N0cy5jCmluZGV4IGJhMDk3NDEuLjJkNDdiMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvaG9zdHMuYworKysgYi9kcml2ZXJzL2llZWUxMzk0L2hvc3RzLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogCiAjaW5jbHVkZSAiY3NyMTIxMi5oIgogI2luY2x1ZGUgImllZWUxMzk0LmgiCkBAIC0xMDUsNyArMTA2LDcgQEAKICAqIFJldHVybiBWYWx1ZTogYSBwb2ludGVyIHRvIHRoZSAmaHBzYl9ob3N0IGlmIHN1Y2Nlc2Z1bCwgJU5VTEwgaWYKICAqIG5vIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgogICovCi1zdGF0aWMgREVDTEFSRV9NVVRFWChob3N0X251bV9hbGxvYyk7CitzdGF0aWMgREVGSU5FX01VVEVYKGhvc3RfbnVtX2FsbG9jKTsKIAogc3RydWN0IGhwc2JfaG9zdCAqaHBzYl9hbGxvY19ob3N0KHN0cnVjdCBocHNiX2hvc3RfZHJpdmVyICpkcnYsIHNpemVfdCBleHRyYSwKIAkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldikKQEAgLTE0OCw3ICsxNDksNyBAQAogCWgtPnRvcG9sb2d5X21hcCA9IGgtPmNzci50b3BvbG9neV9tYXAgKyAzOwogCWgtPnNwZWVkX21hcCA9ICh1OCAqKShoLT5jc3Iuc3BlZWRfbWFwICsgMik7CiAKLQlkb3duKCZob3N0X251bV9hbGxvYyk7CisJbXV0ZXhfbG9jaygmaG9zdF9udW1fYWxsb2MpOwogCiAJd2hpbGUgKG5vZGVtZ3JfZm9yX2VhY2hfaG9zdCgmaG9zdG51bSwgYWxsb2NfaG9zdG51bV9jYikpCiAJCWhvc3RudW0rKzsKQEAgLTE2Nyw3ICsxNjgsNyBAQAogCWNsYXNzX2RldmljZV9yZWdpc3RlcigmaC0+Y2xhc3NfZGV2KTsKIAlnZXRfZGV2aWNlKCZoLT5kZXZpY2UpOwogCi0JdXAoJmhvc3RfbnVtX2FsbG9jKTsKKwltdXRleF91bmxvY2soJmhvc3RfbnVtX2FsbG9jKTsKIAogCXJldHVybiBoOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZWVlMTM5NC9ob3N0cy5oIGIvZHJpdmVycy9pZWVlMTM5NC9ob3N0cy5oCmluZGV4IDA3ZDE4OGMuLjlhZDRiMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvaG9zdHMuaAorKysgYi9kcml2ZXJzL2llZWUxMzk0L2hvc3RzLmgKQEAgLTMwLDEzICszMCwxNCBAQAogCiAJdW5zaWduZWQgY2hhciBpc29fbGlzdGVuX2NvdW50WzY0XTsKIAotCWludCBub2RlX2NvdW50OyAvKiBudW1iZXIgb2YgaWRlbnRpZmllZCBub2RlcyBvbiB0aGlzIGJ1cyAqLwotCWludCBzZWxmaWRfY291bnQ7IC8qIHRvdGFsIG51bWJlciBvZiBTZWxmSURzIHJlY2VpdmVkICovCi0JaW50IG5vZGVzX2FjdGl2ZTsgLyogbnVtYmVyIG9mIG5vZGVzIHRoYXQgYXJlIGFjdHVhbGx5IGFjdGl2ZSAqLworCWludCBub2RlX2NvdW50OyAgICAgIC8qIG51bWJlciBvZiBpZGVudGlmaWVkIG5vZGVzIG9uIHRoaXMgYnVzICovCisJaW50IHNlbGZpZF9jb3VudDsgICAgLyogdG90YWwgbnVtYmVyIG9mIFNlbGZJRHMgcmVjZWl2ZWQgKi8KKwlpbnQgbm9kZXNfYWN0aXZlOyAgICAvKiBudW1iZXIgb2Ygbm9kZXMgd2l0aCBhY3RpdmUgbGluayBsYXllciAqLworCXU4IHNwZWVkW0FMTF9OT0RFU107IC8qIHNwZWVkIGJldHdlZW4gZWFjaCBub2RlIGFuZCBsb2NhbCBub2RlICovCiAKLQlub2RlaWRfdCBub2RlX2lkOyAvKiBub2RlIElEIG9mIHRoaXMgaG9zdCAqLwotCW5vZGVpZF90IGlybV9pZDsgLyogSUQgb2YgdGhpcyBidXMnIGlzb2Nocm9ub3VzIHJlc291cmNlIG1hbmFnZXIgKi8KLQlub2RlaWRfdCBidXNtZ3JfaWQ7IC8qIElEIG9mIHRoaXMgYnVzJyBidXMgbWFuYWdlciAqLworCW5vZGVpZF90IG5vZGVfaWQ7ICAgIC8qIG5vZGUgSUQgb2YgdGhpcyBob3N0ICovCisJbm9kZWlkX3QgaXJtX2lkOyAgICAgLyogSUQgb2YgdGhpcyBidXMnIGlzb2Nocm9ub3VzIHJlc291cmNlIG1hbmFnZXIgKi8KKwlub2RlaWRfdCBidXNtZ3JfaWQ7ICAvKiBJRCBvZiB0aGlzIGJ1cycgYnVzIG1hbmFnZXIgKi8KIAogCS8qIHRoaXMgbm9kZXMgc3RhdGUgKi8KIAl1bnNpZ25lZCBpbl9idXNfcmVzZXQ6MTsKQEAgLTU1LDcgKzU2LDcgQEAKIAlzdHJ1Y3QgY3NyX2NvbnRyb2wgY3NyOwogCiAJLyogUGVyIG5vZGUgdGxhYmVsIHBvb2wgYWxsb2NhdGlvbiAqLwotCXN0cnVjdCBocHNiX3RsYWJlbF9wb29sIHRwb29sWzY0XTsKKwlzdHJ1Y3QgaHBzYl90bGFiZWxfcG9vbCB0cG9vbFtBTExfTk9ERVNdOwogCiAJc3RydWN0IGhwc2JfaG9zdF9kcml2ZXIgKmRyaXZlcjsKIApAQCAtNzIsNiArNzMsOCBAQAogCXVuc2lnbmVkIGludCBjb25maWdfcm9tczsKIAogCXN0cnVjdCBsaXN0X2hlYWQgYWRkcl9zcGFjZTsKKwl1NjQgbG93X2FkZHJfc3BhY2U7CS8qIHVwcGVyIGJvdW5kIG9mIHBoeXNpY2FsIERNQSBhcmVhICovCisJdTY0IG1pZGRsZV9hZGRyX3NwYWNlOwkvKiB1cHBlciBib3VuZCBvZiBwb3N0ZWQgd3JpdGUgYXJlYSAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L2llZWUxMzk0X2NvcmUuYyBiL2RyaXZlcnMvaWVlZTEzOTQvaWVlZTEzOTRfY29yZS5jCmluZGV4IGJlNjg1NGUuLjQ5MzU0ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvaWVlZTEzOTRfY29yZS5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvaWVlZTEzOTRfY29yZS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+CiAjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CiAjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgorI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KIAogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CkBAIC0yODUsOSArMjg2LDkgQEAKIAogc3RhdGljIHZvaWQgYnVpbGRfc3BlZWRfbWFwKHN0cnVjdCBocHNiX2hvc3QgKmhvc3QsIGludCBub2RlY291bnQpCiB7Ci0JdTggc3BlZWRjYXBbbm9kZWNvdW50XTsKIAl1OCBjbGRjbnRbbm9kZWNvdW50XTsKIAl1OCAqbWFwID0gaG9zdC0+c3BlZWRfbWFwOworCXU4ICpzcGVlZGNhcCA9IGhvc3QtPnNwZWVkOwogCXN0cnVjdCBzZWxmaWQgKnNpZDsKIAlzdHJ1Y3QgZXh0X3NlbGZpZCAqZXNpZDsKIAlpbnQgaSwgaiwgbjsKQEAgLTM1NCw2ICszNTUsMTEgQEAKIAkJCX0KIAkJfQogCX0KKworCS8qIGFzc3VtZSBtYXhpbXVtIHNwZWVkIGZvciAxMzk0YiBQSFlzLCBub2RlbWdyIHdpbGwgY29ycmVjdCBpdCAqLworCWZvciAobiA9IDA7IG4gPCBub2RlY291bnQ7IG4rKykKKwkJaWYgKHNwZWVkY2FwW25dID09IDMpCisJCQlzcGVlZGNhcFtuXSA9IElFRUUxMzk0X1NQRUVEX01BWDsKIH0KIAogCkBAIC01NTQsMTEgKzU2MCwxMCBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAocGFja2V0LT50eXBlID09IGhwc2JfYXN5bmMgJiYgcGFja2V0LT5ub2RlX2lkICE9IEFMTF9OT0RFUykgeworCWlmIChwYWNrZXQtPnR5cGUgPT0gaHBzYl9hc3luYyAmJgorCSAgICBOT0RFSURfVE9fTk9ERShwYWNrZXQtPm5vZGVfaWQpICE9IEFMTF9OT0RFUykKIAkJcGFja2V0LT5zcGVlZF9jb2RlID0KLQkJCWhvc3QtPnNwZWVkX21hcFtOT0RFSURfVE9fTk9ERShob3N0LT5ub2RlX2lkKSAqIDY0Ci0JCQkJICAgICAgICsgTk9ERUlEX1RPX05PREUocGFja2V0LT5ub2RlX2lkKV07Ci0JfQorCQkJaG9zdC0+c3BlZWRbTk9ERUlEX1RPX05PREUocGFja2V0LT5ub2RlX2lkKV07CiAKIAlkdW1wX3BhY2tldCgic2VuZCBwYWNrZXQiLCBwYWNrZXQtPmhlYWRlciwgcGFja2V0LT5oZWFkZXJfc2l6ZSwgcGFja2V0LT5zcGVlZF9jb2RlKTsKIApAQCAtOTk3LDExICsxMDAyLDggQEAKICAqIHBhY2tldHMgdGhhdCBoYXZlIGEgImNvbXBsZXRlIiBmdW5jdGlvbiBhcmUgc2VudCBoZXJlLiBUaGlzIHdheSwgdGhlCiAgKiBjb21wbGV0aW9uIGlzIHJ1biBvdXQgb2Yga2VybmVsIGNvbnRleHQsIGFuZCBkb2Vzbid0IGJsb2NrIHRoZSByZXN0IG9mCiAgKiB0aGUgc3RhY2suICovCi1zdGF0aWMgaW50IGtocHNicGt0X3BpZCA9IC0xLCBraHBzYnBrdF9raWxsOwotc3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihraHBzYnBrdF9jb21wbGV0ZSk7CitzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpraHBzYnBrdF90aHJlYWQ7CiBzdGF0aWMgc3RydWN0IHNrX2J1ZmZfaGVhZCBocHNicGt0X3F1ZXVlOwotc3RhdGljIERFQ0xBUkVfTVVURVhfTE9DS0VEKGtocHNicGt0X3NpZyk7Ci0KIAogc3RhdGljIHZvaWQgcXVldWVfcGFja2V0X2NvbXBsZXRlKHN0cnVjdCBocHNiX3BhY2tldCAqcGFja2V0KQogewpAQCAtMTAxMSw5ICsxMDEzLDcgQEAKIAl9CiAJaWYgKHBhY2tldC0+Y29tcGxldGVfcm91dGluZSAhPSBOVUxMKSB7CiAJCXNrYl9xdWV1ZV90YWlsKCZocHNicGt0X3F1ZXVlLCBwYWNrZXQtPnNrYik7Ci0KLQkJLyogU2lnbmFsIHRoZSBrZXJuZWwgdGhyZWFkIHRvIGhhbmRsZSB0aGlzICovCi0JCXVwKCZraHBzYnBrdF9zaWcpOworCQl3YWtlX3VwX3Byb2Nlc3Moa2hwc2Jwa3RfdGhyZWFkKTsKIAl9CiAJcmV0dXJuOwogfQpAQCAtMTAyNSwxOSArMTAyNSw5IEBACiAJdm9pZCAoKmNvbXBsZXRlX3JvdXRpbmUpKHZvaWQqKTsKIAl2b2lkICpjb21wbGV0ZV9kYXRhOwogCi0JZGFlbW9uaXplKCJraHBzYnBrdCIpOwotCiAJY3VycmVudC0+ZmxhZ3MgfD0gUEZfTk9GUkVFWkU7CiAKLQl3aGlsZSAoMSkgewotCQlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlKCZraHBzYnBrdF9zaWcpKSB7Ci0JCQlwcmludGsoImtocHNicGt0OiByZWNlaXZlZCB1bmV4cGVjdGVkIHNpZ25hbD8hXG4iICk7Ci0JCQlicmVhazsKLQkJfQotCi0JCWlmIChraHBzYnBrdF9raWxsKQotCQkJYnJlYWs7Ci0KKwl3aGlsZSAoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewogCQl3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZocHNicGt0X3F1ZXVlKSkgIT0gTlVMTCkgewogCQkJcGFja2V0ID0gKHN0cnVjdCBocHNiX3BhY2tldCAqKXNrYi0+ZGF0YTsKIApAQCAtMTA0OCw5ICsxMDM4LDEzIEBACiAKIAkJCWNvbXBsZXRlX3JvdXRpbmUoY29tcGxldGVfZGF0YSk7CiAJCX0KLQl9CiAKLQljb21wbGV0ZV9hbmRfZXhpdCgma2hwc2Jwa3RfY29tcGxldGUsIDApOworCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOworCQlpZiAoIXNrYl9wZWVrKCZocHNicGt0X3F1ZXVlKSkKKwkJCXNjaGVkdWxlKCk7CisJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKKwl9CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IGllZWUxMzk0X2luaXQodm9pZCkKQEAgLTEwNjUsMTAgKzEwNTksMTAgQEAKIAkJSFBTQl9FUlIoIlNvbWUgZmVhdHVyZXMgbWF5IG5vdCBiZSBhdmFpbGFibGVcbiIpOwogCX0KIAotCWtocHNicGt0X3BpZCA9IGtlcm5lbF90aHJlYWQoaHBzYnBrdF90aHJlYWQsIE5VTEwsIENMT05FX0tFUk5FTCk7Ci0JaWYgKGtocHNicGt0X3BpZCA8IDApIHsKKwlraHBzYnBrdF90aHJlYWQgPSBrdGhyZWFkX3J1bihocHNicGt0X3RocmVhZCwgTlVMTCwgImtocHNicGt0Iik7CisJaWYgKElTX0VSUihraHBzYnBrdF90aHJlYWQpKSB7CiAJCUhQU0JfRVJSKCJGYWlsZWQgdG8gc3RhcnQgaHBzYnBrdCB0aHJlYWQhXG4iKTsKLQkJcmV0ID0gLUVOT01FTTsKKwkJcmV0ID0gUFRSX0VSUihraHBzYnBrdF90aHJlYWQpOwogCQlnb3RvIGV4aXRfY2xlYW51cF9jb25maWdfcm9tczsKIAl9CiAKQEAgLTExNDgsMTAgKzExNDIsNyBAQAogcmVsZWFzZV9jaHJkZXY6CiAJdW5yZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKElFRUUxMzk0X0NPUkVfREVWLCAyNTYpOwogZXhpdF9yZWxlYXNlX2tlcm5lbF90aHJlYWQ6Ci0JaWYgKGtocHNicGt0X3BpZCA+PSAwKSB7Ci0JCWtpbGxfcHJvYyhraHBzYnBrdF9waWQsIFNJR1RFUk0sIDEpOwotCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZraHBzYnBrdF9jb21wbGV0ZSk7Ci0JfQorCWt0aHJlYWRfc3RvcChraHBzYnBrdF90aHJlYWQpOwogZXhpdF9jbGVhbnVwX2NvbmZpZ19yb21zOgogCWhwc2JfY2xlYW51cF9jb25maWdfcm9tcygpOwogCXJldHVybiByZXQ7CkBAIC0xMTcyLDEyICsxMTYzLDcgQEAKIAkJYnVzX3JlbW92ZV9maWxlKCZpZWVlMTM5NF9idXNfdHlwZSwgZndfYnVzX2F0dHJzW2ldKTsKIAlidXNfdW5yZWdpc3RlcigmaWVlZTEzOTRfYnVzX3R5cGUpOwogCi0JaWYgKGtocHNicGt0X3BpZCA+PSAwKSB7Ci0JCWtocHNicGt0X2tpbGwgPSAxOwotCQltYigpOwotCQl1cCgma2hwc2Jwa3Rfc2lnKTsKLQkJd2FpdF9mb3JfY29tcGxldGlvbigma2hwc2Jwa3RfY29tcGxldGUpOwotCX0KKwlrdGhyZWFkX3N0b3Aoa2hwc2Jwa3RfdGhyZWFkKTsKIAogCWhwc2JfY2xlYW51cF9jb25maWdfcm9tcygpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L2llZWUxMzk0X3RyYW5zYWN0aW9ucy5jIGIvZHJpdmVycy9pZWVlMTM5NC9pZWVlMTM5NF90cmFuc2FjdGlvbnMuYwppbmRleCAzZmUyZjZjLi5hMTE0YjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2llZWUxMzk0L2llZWUxMzk0X3RyYW5zYWN0aW9ucy5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvaWVlZTEzOTRfdHJhbnNhY3Rpb25zLmMKQEAgLTEzNiw4ICsxMzYsMTEgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBocHNiX3RsYWJlbF9wb29sICp0cDsKKwlpbnQgbiA9IE5PREVJRF9UT19OT0RFKHBhY2tldC0+bm9kZV9pZCk7CiAKLQl0cCA9ICZwYWNrZXQtPmhvc3QtPnRwb29sW3BhY2tldC0+bm9kZV9pZCAmIE5PREVfTUFTS107CisJaWYgKHVubGlrZWx5KG4gPT0gQUxMX05PREVTKSkKKwkJcmV0dXJuIDA7CisJdHAgPSAmcGFja2V0LT5ob3N0LT50cG9vbFtuXTsKIAogCWlmIChpcnFzX2Rpc2FibGVkKCkgfHwgaW5fYXRvbWljKCkpIHsKIAkJaWYgKGRvd25fdHJ5bG9jaygmdHAtPmNvdW50KSkKQEAgLTE3NSw4ICsxNzgsMTEgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBocHNiX3RsYWJlbF9wb29sICp0cDsKKwlpbnQgbiA9IE5PREVJRF9UT19OT0RFKHBhY2tldC0+bm9kZV9pZCk7CiAKLQl0cCA9ICZwYWNrZXQtPmhvc3QtPnRwb29sW3BhY2tldC0+bm9kZV9pZCAmIE5PREVfTUFTS107CisJaWYgKHVubGlrZWx5KG4gPT0gQUxMX05PREVTKSkKKwkJcmV0dXJuOworCXRwID0gJnBhY2tldC0+aG9zdC0+dHBvb2xbbl07CiAKIAlCVUdfT04ocGFja2V0LT50bGFiZWwgPiA2MyB8fCBwYWNrZXQtPnRsYWJlbCA8IDApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L25vZGVtZ3IuYyBiL2RyaXZlcnMvaWVlZTEzOTQvbm9kZW1nci5jCmluZGV4IDA4MmM3ZmQuLjk0OGYxYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvbm9kZW1nci5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvbm9kZW1nci5jCkBAIC0zOCw2ICszOCw3IEBACiAJc3RydWN0IGhwc2JfaG9zdCAqaG9zdDsKIAlub2RlaWRfdCBub2RlaWQ7CiAJdW5zaWduZWQgaW50IGdlbmVyYXRpb247CisJdW5zaWduZWQgaW50IHNwZWVkX3VudmVyaWZpZWQ6MTsKIH07CiAKIApAQCAtNTcsMjMgKzU4LDc1IEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBDb3JyZWN0IHRoZSBzcGVlZCBtYXAgZW50cnkuICBUaGlzIGlzIG5lY2Vzc2FyeQorICogIC0gZm9yIG5vZGVzIHdpdGggbGluayBzcGVlZCA8IHBoeSBzcGVlZCwKKyAqICAtIGZvciAxMzk0YiBub2RlcyB3aXRoIG5lZ290aWF0ZWQgcGh5IHBvcnQgc3BlZWQgPCBJRUVFMTM5NF9TUEVFRF9NQVguCisgKiBBIHBvc3NpYmxlIHNwZWVkIGlzIGRldGVybWluZWQgYnkgdHJpYWwgYW5kIGVycm9yLCB1c2luZyBxdWFkbGV0IHJlYWRzLgorICovCitzdGF0aWMgaW50IG5vZGVtZ3JfY2hlY2tfc3BlZWQoc3RydWN0IG5vZGVtZ3JfY3NyX2luZm8gKmNpLCB1NjQgYWRkciwKKwkJCSAgICAgICBxdWFkbGV0X3QgKmJ1ZmZlcikKK3sKKwlxdWFkbGV0X3QgcTsKKwl1OCBpLCAqc3BlZWQsIG9sZF9zcGVlZCwgZ29vZF9zcGVlZDsKKwlpbnQgcmV0OworCisJc3BlZWQgPSBjaS0+aG9zdC0+c3BlZWQgKyBOT0RFSURfVE9fTk9ERShjaS0+bm9kZWlkKTsKKwlvbGRfc3BlZWQgPSAqc3BlZWQ7CisJZ29vZF9zcGVlZCA9IElFRUUxMzk0X1NQRUVEX01BWCArIDE7CisKKwkvKiBUcnkgZXZlcnkgc3BlZWQgZnJvbSBTMTAwIHRvIG9sZF9zcGVlZC4KKwkgKiBJZiB3ZSBkaWQgaXQgdGhlIG90aGVyIHdheSBhcm91bmQsIGEgdG9vIGxvdyBzcGVlZCBjb3VsZCBiZSBjYXVnaHQKKwkgKiBpZiB0aGUgcmV0cnkgc3VjY2VlZGVkIGZvciBzb21lIG90aGVyIHJlYXNvbiwgZS5nLiBiZWNhdXNlIHRoZSBsaW5rCisJICoganVzdCBmaW5pc2hlZCBpdHMgaW5pdGlhbGl6YXRpb24uICovCisJZm9yIChpID0gSUVFRTEzOTRfU1BFRURfMTAwOyBpIDw9IG9sZF9zcGVlZDsgaSsrKSB7CisJCSpzcGVlZCA9IGk7CisJCXJldCA9IGhwc2JfcmVhZChjaS0+aG9zdCwgY2ktPm5vZGVpZCwgY2ktPmdlbmVyYXRpb24sIGFkZHIsCisJCQkJJnEsIHNpemVvZihxdWFkbGV0X3QpKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOworCQkqYnVmZmVyID0gcTsKKwkJZ29vZF9zcGVlZCA9IGk7CisJfQorCWlmIChnb29kX3NwZWVkIDw9IElFRUUxMzk0X1NQRUVEX01BWCkgeworCQlIUFNCX0RFQlVHKCJTcGVlZCBwcm9iZSBvZiBub2RlICIgTk9ERV9CVVNfRk1UICIgeWllbGRzICVzIiwKKwkJCSAgIE5PREVfQlVTX0FSR1MoY2ktPmhvc3QsIGNpLT5ub2RlaWQpLAorCQkJICAgaHBzYl9zcGVlZHRvX3N0cltnb29kX3NwZWVkXSk7CisJCSpzcGVlZCA9IGdvb2Rfc3BlZWQ7CisJCWNpLT5zcGVlZF91bnZlcmlmaWVkID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCSpzcGVlZCA9IG9sZF9zcGVlZDsKKwlyZXR1cm4gcmV0OworfQogCiBzdGF0aWMgaW50IG5vZGVtZ3JfYnVzX3JlYWQoc3RydWN0IGNzcjEyMTJfY3NyICpjc3IsIHU2NCBhZGRyLCB1MTYgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJ1ZmZlciwgdm9pZCAqX19jaSkKIHsKIAlzdHJ1Y3Qgbm9kZW1ncl9jc3JfaW5mbyAqY2kgPSAoc3RydWN0IG5vZGVtZ3JfY3NyX2luZm8qKV9fY2k7Ci0JaW50IGksIHJldCA9IDA7CisJaW50IGksIHJldDsKIAogCWZvciAoaSA9IDE7IDsgaSsrKSB7CiAJCXJldCA9IGhwc2JfcmVhZChjaS0+aG9zdCwgY2ktPm5vZGVpZCwgY2ktPmdlbmVyYXRpb24sIGFkZHIsCiAJCQkJYnVmZmVyLCBsZW5ndGgpOwotCQlpZiAoIXJldCB8fCBpID09IDMpCisJCWlmICghcmV0KSB7CisJCQljaS0+c3BlZWRfdW52ZXJpZmllZCA9IDA7CisJCQlicmVhazsKKwkJfQorCQkvKiBHaXZlIHVwIGFmdGVyIDNyZCBmYWlsdXJlLiAqLworCQlpZiAoaSA9PSAzKQogCQkJYnJlYWs7CiAKKwkJLyogVGhlIGllZWUxMzk0X2NvcmUgZ3Vlc3NlZCB0aGUgbm9kZSdzIHNwZWVkIGNhcGFiaWxpdHkgZnJvbQorCQkgKiB0aGUgc2VsZiBJRC4gIENoZWNrIHdoZXRoZXIgYSBsb3dlciBzcGVlZCB3b3Jrcy4gKi8KKwkJaWYgKGNpLT5zcGVlZF91bnZlcmlmaWVkICYmIGxlbmd0aCA9PSBzaXplb2YocXVhZGxldF90KSkgeworCQkJcmV0ID0gbm9kZW1ncl9jaGVja19zcGVlZChjaSwgYWRkciwgYnVmZmVyKTsKKwkJCWlmICghcmV0KQorCQkJCWJyZWFrOworCQl9CiAJCWlmIChtc2xlZXBfaW50ZXJydXB0aWJsZSgzMzQpKQogCQkJcmV0dXJuIC1FSU5UUjsKIAl9Ci0KIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMjA0LDYgKzEyNTcsOCBAQAogCWNpLT5ob3N0ID0gaG9zdDsKIAljaS0+bm9kZWlkID0gbm9kZWlkOwogCWNpLT5nZW5lcmF0aW9uID0gZ2VuZXJhdGlvbjsKKwljaS0+c3BlZWRfdW52ZXJpZmllZCA9CisJCWhvc3QtPnNwZWVkW05PREVJRF9UT19OT0RFKG5vZGVpZCldID4gSUVFRTEzOTRfU1BFRURfMTAwOwogCiAJLyogV2UgbmVlZCB0byBkZXRlY3Qgd2hlbiB0aGUgQ29uZmlnUk9NJ3MgZ2VuZXJhdGlvbiBoYXMgY2hhbmdlZCwKIAkgKiBzbyB3ZSBvbmx5IHVwZGF0ZSB0aGUgbm9kZSdzIGluZm8gd2hlbiBpdCBuZWVkcyB0byBiZS4gICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L29oY2kxMzk0LmMgYi9kcml2ZXJzL2llZWUxMzk0L29oY2kxMzk0LmMKaW5kZXggMTFmMTM3Ny4uM2QyNzg0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZWVlMTM5NC9vaGNpMTM5NC5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvb2hjaTEzOTQuYwpAQCAtMTYzLDcgKzE2Myw3IEBACiAKIC8qIE1vZHVsZSBQYXJhbWV0ZXJzICovCiBzdGF0aWMgaW50IHBoeXNfZG1hID0gMTsKLW1vZHVsZV9wYXJhbShwaHlzX2RtYSwgaW50LCAwNjQ0KTsKK21vZHVsZV9wYXJhbShwaHlzX2RtYSwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MocGh5c19kbWEsICJFbmFibGUgcGh5c2ljYWwgZG1hIChkZWZhdWx0ID0gMSkuIik7CiAKIHN0YXRpYyB2b2lkIGRtYV90cm1fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOwpAQCAtNTUzLDcgKzU1Myw4IEBACiAJICogcmVnaXN0ZXIgY29udGVudC4KIAkgKiBUbyBhY3R1YWxseSBlbmFibGUgcGh5c2ljYWwgcmVzcG9uc2VzIGlzIHRoZSBqb2Igb2Ygb3VyIGludGVycnVwdAogCSAqIGhhbmRsZXIgd2hpY2ggcHJvZ3JhbXMgdGhlIHBoeXNpY2FsIHJlcXVlc3QgZmlsdGVyLiAqLwotCXJlZ193cml0ZShvaGNpLCBPSENJMTM5NF9QaHlVcHBlckJvdW5kLCAweDAxMDAwMDAwKTsKKwlyZWdfd3JpdGUob2hjaSwgT0hDSTEzOTRfUGh5VXBwZXJCb3VuZCwKKwkJICBPSENJMTM5NF9QSFlTX1VQUEVSX0JPVU5EX1BST0dSQU1NRUQgPj4gMTYpOwogCiAJREJHTVNHKCJwaHlzVXBwZXJCb3VuZE9mZnNldD0lMDh4IiwKIAkgICAgICAgcmVnX3JlYWQob2hjaSwgT0hDSTEzOTRfUGh5VXBwZXJCb3VuZCkpOwpAQCAtNTgwLDE3ICs1ODEsMTQgQEAKIAkJICBPSENJMTM5NF9pc29jaFJ4IHwKIAkJICBPSENJMTM5NF9pc29jaFR4IHwKIAkJICBPSENJMTM5NF9wb3N0ZWRXcml0ZUVyciB8CisJCSAgT0hDSTEzOTRfY3ljbGVUb29Mb25nIHwKIAkJICBPSENJMTM5NF9jeWNsZUluY29uc2lzdGVudCk7CiAKIAkvKiBFbmFibGUgbGluayAqLwogCXJlZ193cml0ZShvaGNpLCBPSENJMTM5NF9IQ0NvbnRyb2xTZXQsIE9IQ0kxMzk0X0hDQ29udHJvbF9saW5rRW5hYmxlKTsKIAogCWJ1ZiA9IHJlZ19yZWFkKG9oY2ksIE9IQ0kxMzk0X1ZlcnNpb24pOwotI2lmbmRlZiBfX3NwYXJjX18KIAlzcHJpbnRmIChpcnFfYnVmLCAiJWQiLCBvaGNpLT5kZXYtPmlycSk7Ci0jZWxzZQotCXNwcmludGYgKGlycV9idWYsICIlcyIsIF9faXJxX2l0b2Eob2hjaS0+ZGV2LT5pcnEpKTsKLSNlbmRpZgogCVBSSU5UKEtFUk5fSU5GTywgIk9IQ0ktMTM5NCAlZC4lZCAoUENJKTogSVJRPVslc10gICIKIAkgICAgICAiTU1JTz1bJWx4LSVseF0gIE1heCBQYWNrZXQ9WyVkXSAgSVIvSVQgY29udGV4dHM9WyVkLyVkXSIsCiAJICAgICAgKCgoKGJ1ZikgPj4gMTYpICYgMHhmKSArICgoKGJ1ZikgPj4gMjApICYgMHhmKSAqIDEwKSwKQEAgLTIzODYsNiArMjM4NCwxNSBAQAogCQlQUklOVChLRVJOX0VSUiwgInBoeXNpY2FsIHBvc3RlZCB3cml0ZSBlcnJvciIpOwogCQkvKiBubyByZWNvdmVyeSBzdHJhdGVneSB5ZXQsIGhhZCB0byBpbnZvbHZlIHByb3RvY29sIGRyaXZlcnMgKi8KIAl9CisJaWYgKGV2ZW50ICYgT0hDSTEzOTRfY3ljbGVUb29Mb25nKSB7CisJCWlmKHByaW50a19yYXRlbGltaXQoKSkKKwkJCVBSSU5UKEtFUk5fV0FSTklORywgImlzb2Nocm9ub3VzIGN5Y2xlIHRvbyBsb25nIik7CisJCWVsc2UKKwkJCURCR01TRygiT0hDSTEzOTRfY3ljbGVUb29Mb25nIik7CisJCXJlZ193cml0ZShvaGNpLCBPSENJMTM5NF9MaW5rQ29udHJvbFNldCwKKwkJCSAgT0hDSTEzOTRfTGlua0NvbnRyb2xfQ3ljbGVNYXN0ZXIpOworCQlldmVudCAmPSB+T0hDSTEzOTRfY3ljbGVUb29Mb25nOworCX0KIAlpZiAoZXZlbnQgJiBPSENJMTM5NF9jeWNsZUluY29uc2lzdGVudCkgewogCQkvKiBXZSBzdWJzY3JpYmUgdG8gdGhlIGN5Y2xlSW5jb25zaXN0ZW50IGV2ZW50IG9ubHkgdG8KIAkJICogY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgYml0Li4uIG90aGVyd2lzZSwKQEAgLTM0MDQsNiArMzQxMSwxNCBAQAogCWhvc3QtPmNzci5tYXhfcmVjID0gKHJlZ19yZWFkKG9oY2ksIE9IQ0kxMzk0X0J1c09wdGlvbnMpID4+IDEyKSAmIDB4ZjsKIAlob3N0LT5jc3IubG5rX3NwZCA9IHJlZ19yZWFkKG9oY2ksIE9IQ0kxMzk0X0J1c09wdGlvbnMpICYgMHg3OwogCisJaWYgKHBoeXNfZG1hKSB7CisJCWhvc3QtPmxvd19hZGRyX3NwYWNlID0KKwkJCSh1NjQpIHJlZ19yZWFkKG9oY2ksIE9IQ0kxMzk0X1BoeVVwcGVyQm91bmQpIDw8IDE2OworCQlpZiAoIWhvc3QtPmxvd19hZGRyX3NwYWNlKQorCQkJaG9zdC0+bG93X2FkZHJfc3BhY2UgPSBPSENJMTM5NF9QSFlTX1VQUEVSX0JPVU5EX0ZJWEVEOworCX0KKwlob3N0LT5taWRkbGVfYWRkcl9zcGFjZSA9IE9IQ0kxMzk0X01JRERMRV9BRERSRVNTX1NQQUNFOworCiAJLyogVGVsbCB0aGUgaGlnaGxldmVsIHRoaXMgaG9zdCBpcyByZWFkeSAqLwogCWlmIChocHNiX2FkZF9ob3N0KGhvc3QpKQogCQlGQUlMKC1FTk9NRU0sICJGYWlsZWQgdG8gcmVnaXN0ZXIgaG9zdCB3aXRoIGhpZ2hsZXZlbCIpOwpAQCAtMzQ2MiwyNCArMzQ3NywxMyBAQAogCWNhc2UgT0hDSV9JTklUX0hBVkVfVFhSWF9CVUZGRVJTX19NQVlCRToKIAkJLyogVGhlIG9oY2lfc29mdF9yZXNldCgpIHN0b3BzIGFsbCBETUEgY29udGV4dHMsIHNvIHdlCiAJCSAqIGRvbnQgbmVlZCB0byBkbyB0aGlzLiAgKi8KLQkJLyogRnJlZSBBUiBkbWEgKi8KIAkJZnJlZV9kbWFfcmN2X2N0eCgmb2hjaS0+YXJfcmVxX2NvbnRleHQpOwogCQlmcmVlX2RtYV9yY3ZfY3R4KCZvaGNpLT5hcl9yZXNwX2NvbnRleHQpOwotCi0JCS8qIEZyZWUgQVQgZG1hICovCiAJCWZyZWVfZG1hX3RybV9jdHgoJm9oY2ktPmF0X3JlcV9jb250ZXh0KTsKIAkJZnJlZV9kbWFfdHJtX2N0eCgmb2hjaS0+YXRfcmVzcF9jb250ZXh0KTsKLQotCQkvKiBGcmVlIElSIGRtYSAqLwogCQlmcmVlX2RtYV9yY3ZfY3R4KCZvaGNpLT5pcl9sZWdhY3lfY29udGV4dCk7Ci0KLQkJLyogRnJlZSBJVCBkbWEgKi8KIAkJZnJlZV9kbWFfdHJtX2N0eCgmb2hjaS0+aXRfbGVnYWN5X2NvbnRleHQpOwogCi0JCS8qIEZyZWUgSVIgbGVnYWN5IGRtYSAqLwotCQlmcmVlX2RtYV9yY3ZfY3R4KCZvaGNpLT5pcl9sZWdhY3lfY29udGV4dCk7Ci0KLQogCWNhc2UgT0hDSV9JTklUX0hBVkVfU0VMRklEX0JVRkZFUjoKIAkJcGNpX2ZyZWVfY29uc2lzdGVudChvaGNpLT5kZXYsIE9IQ0kxMzk0X1NJX0RNQV9CVUZfU0laRSwKIAkJCQkgICAgb2hjaS0+c2VsZmlkX2J1Zl9jcHUsCkBAIC0zNTM5LDYgKzM1NDMsNyBAQAogCX0KICNlbmRpZiAvKiBDT05GSUdfUFBDX1BNQUMgKi8KIAorCXBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOwogCXBjaV9lbmFibGVfZGV2aWNlKHBkZXYpOwogCiAJcmV0dXJuIDA7CkBAIC0zNTU4LDYgKzM1NjMsOCBAQAogCX0KICNlbmRpZgogCisJcGNpX3NhdmVfc3RhdGUocGRldik7CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZWVlMTM5NC9vaGNpMTM5NC5oIGIvZHJpdmVycy9pZWVlMTM5NC9vaGNpMTM5NC5oCmluZGV4IDdkZjA5NjIuLmZhMDVmMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvb2hjaTEzOTQuaAorKysgYi9kcml2ZXJzL2llZWUxMzk0L29oY2kxMzk0LmgKQEAgLTQ0Myw2ICs0NDMsMTYgQEAKIAogI2RlZmluZSBPSENJMTM5NF9UQ09ERV9QSFkgICAgICAgICAgICAgICAweEUKIAorLyogTm9kZSBvZmZzZXQgbWFwIChwaHlzIERNQSBhcmVhLCBwb3N0ZWQgd3JpdGUgYXJlYSkuCisgKiBUaGUgdmFsdWUgb2YgT0hDSTEzOTRfUEhZU19VUFBFUl9CT1VORF9QUk9HUkFNTUVEIG1heSBiZSBtb2RpZmllZCBidXQgbXVzdAorICogYmUgbG93ZXIgdGhhbiBPSENJMTM5NF9NSURETEVfQUREUkVTU19TUEFDRS4KKyAqIE9IQ0kxMzk0X1BIWVNfVVBQRVJfQk9VTkRfRklYRUQgYW5kIE9IQ0kxMzk0X01JRERMRV9BRERSRVNTX1NQQUNFIGFyZQorICogY29uc3RhbnRzIGdpdmVuIGJ5IHRoZSBPSENJIHNwZWMuCisgKi8KKyNkZWZpbmUgT0hDSTEzOTRfUEhZU19VUFBFUl9CT1VORF9GSVhFRAkJMHgwMDAxMDAwMDAwMDBVTEwgLyogNCBHQiAqLworI2RlZmluZSBPSENJMTM5NF9QSFlTX1VQUEVSX0JPVU5EX1BST0dSQU1NRUQJMHgwMTAwMDAwMDAwMDBVTEwgLyogMSBUQiAqLworI2RlZmluZSBPSENJMTM5NF9NSURETEVfQUREUkVTU19TUEFDRQkJMHhmZmZmMDAwMDAwMDBVTEwKKwogdm9pZCBvaGNpMTM5NF9pbml0X2lzb190YXNrbGV0KHN0cnVjdCBvaGNpMTM5NF9pc29fdGFza2xldCAqdGFza2xldCwKIAkJCSAgICAgICBpbnQgdHlwZSwKIAkJCSAgICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L3BjaWx5bnguYyBiL2RyaXZlcnMvaWVlZTEzOTQvcGNpbHlueC5jCmluZGV4IGUyZWRjNDEuLmUyOWRmZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvcGNpbHlueC5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvcGNpbHlueC5jCkBAIC0xMjUyLDExICsxMjUyLDcgQEAKICAgICAgICAgLyogRml4IGJ1Z2d5IGNhcmRzIHdpdGggYXV0b2Jvb3QgcGluIG5vdCB0aWVkIGxvdzogKi8KICAgICAgICAgcmVnX3dyaXRlKGx5bngsIERNQTBfQ0hBTl9DVFJMLCAwKTsKIAotI2lmbmRlZiBfX3NwYXJjX18KIAlzcHJpbnRmIChpcnFfYnVmLCAiJWQiLCBkZXYtPmlycSk7Ci0jZWxzZQotCXNwcmludGYgKGlycV9idWYsICIlcyIsIF9faXJxX2l0b2EoZGV2LT5pcnEpKTsKLSNlbmRpZgogCiAgICAgICAgIGlmICghcmVxdWVzdF9pcnEoZGV2LT5pcnEsIGx5bnhfaXJxX2hhbmRsZXIsIFNBX1NISVJRLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBDSUxZTlhfRFJJVkVSX05BTUUsIGx5bngpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L3JhdzEzOTQuYyBiL2RyaXZlcnMvaWVlZTEzOTQvcmF3MTM5NC5jCmluZGV4IGY3ZGU1NDYuLjIwY2U1MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvcmF3MTM5NC5jCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvcmF3MTM5NC5jCkBAIC00MDgsMzQgKzQwOCwzNCBAQAogCiAjaWZkZWYgQ09ORklHX0NPTVBBVAogc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSB7Ci0gICAgICAgIF9fdTMyIHR5cGU7Ci0gICAgICAgIF9fczMyIGVycm9yOwotICAgICAgICBfX3UzMiBtaXNjOworCV9fdTMyIHR5cGU7CisJX19zMzIgZXJyb3I7CisJX191MzIgbWlzYzsKIAotICAgICAgICBfX3UzMiBnZW5lcmF0aW9uOwotICAgICAgICBfX3UzMiBsZW5ndGg7CisJX191MzIgZ2VuZXJhdGlvbjsKKwlfX3UzMiBsZW5ndGg7CiAKLSAgICAgICAgX191NjQgYWRkcmVzczsKKwlfX3U2NCBhZGRyZXNzOwogCi0gICAgICAgIF9fdTY0IHRhZzsKKwlfX3U2NCB0YWc7CiAKLSAgICAgICAgX191NjQgc2VuZGI7Ci0gICAgICAgIF9fdTY0IHJlY3ZiOwotfSAgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisJX191NjQgc2VuZGI7CisJX191NjQgcmVjdmI7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiBzdGF0aWMgY29uc3QgY2hhciBfX3VzZXIgKnJhdzEzOTRfY29tcGF0X3dyaXRlKGNvbnN0IGNoYXIgX191c2VyICpidWYpCiB7Ci0Jc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSBfX3VzZXIgKmNyID0gKHR5cGVvZihjcikpIGJ1ZjsgCisJc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSBfX3VzZXIgKmNyID0gKHR5cGVvZihjcikpIGJ1ZjsKIAlzdHJ1Y3QgcmF3MTM5NF9yZXF1ZXN0IF9fdXNlciAqcjsKIAlyID0gY29tcGF0X2FsbG9jX3VzZXJfc3BhY2Uoc2l6ZW9mKHN0cnVjdCByYXcxMzk0X3JlcXVlc3QpKTsKIAogI2RlZmluZSBDKHgpIF9fY29weV9pbl91c2VyKCZyLT54LCAmY3ItPngsIHNpemVvZihyLT54KSkKIAogCWlmIChjb3B5X2luX3VzZXIociwgY3IsIHNpemVvZihzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxKSkgfHwKLQkJQyhhZGRyZXNzKSB8fAotCQlDKHRhZykgfHwKLQkJQyhzZW5kYikgfHwKLQkJQyhyZWN2YikpCisJICAgIEMoYWRkcmVzcykgfHwKKwkgICAgQyh0YWcpIHx8CisJICAgIEMoc2VuZGIpIHx8CisJICAgIEMocmVjdmIpKQogCQlyZXR1cm4gRVJSX1BUUigtRUZBVUxUKTsKIAlyZXR1cm4gKGNvbnN0IGNoYXIgX191c2VyICopcjsKIH0KQEAgLTQ0MywxMSArNDQzLDExIEBACiAKICNkZWZpbmUgUCh4KSBfX3B1dF91c2VyKHItPngsICZjci0+eCkKIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIHJhdzEzOTRfY29tcGF0X3JlYWQoY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc3RydWN0IHJhdzEzOTRfcmVxdWVzdCAqcikKIHsKLQlzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxIF9fdXNlciAqY3IgPSAodHlwZW9mKGNyKSkgcjsgCi0JaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLGNyLHNpemVvZihzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxKSkgfHwKKwlzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxIF9fdXNlciAqY3IgPSAodHlwZW9mKGNyKSkgcjsKKwlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGNyLCBzaXplb2Yoc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSkpIHx8CiAJICAgIFAodHlwZSkgfHwKIAkgICAgUChlcnJvcikgfHwKIAkgICAgUChtaXNjKSB8fApAQCAtNTEyLDE4ICs1MTIsMTcgQEAKIAl9CiAKICNpZmRlZiBDT05GSUdfQ09NUEFUCi0JaWYgKGNvdW50ID09IHNpemVvZihzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxKSAmJiAKLSAgIAkJc2l6ZW9mKHN0cnVjdCBjb21wYXRfcmF3MTM5NF9yZXEpICE9IAotCQkJc2l6ZW9mKHN0cnVjdCByYXcxMzk0X3JlcXVlc3QpKSB7IAorCWlmIChjb3VudCA9PSBzaXplb2Yoc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSkgJiYKKyAgIAkgICAgc2l6ZW9mKHN0cnVjdCBjb21wYXRfcmF3MTM5NF9yZXEpICE9CisJCQlzaXplb2Yoc3RydWN0IHJhdzEzOTRfcmVxdWVzdCkpIHsKIAkJcmV0ID0gcmF3MTM5NF9jb21wYXRfcmVhZChidWZmZXIsICZyZXEtPnJlcSk7Ci0KLQl9IGVsc2UJCisJfSBlbHNlCiAjZW5kaWYKIAl7CiAJCWlmIChjb3B5X3RvX3VzZXIoYnVmZmVyLCAmcmVxLT5yZXEsIHNpemVvZihyZXEtPnJlcSkpKSB7CiAJCQlyZXQgPSAtRUZBVUxUOwogCQkJZ290byBvdXQ7Ci0JCX0JCQorCQl9CiAJCXJldCA9IChzc2l6ZV90KSBzaXplb2Yoc3RydWN0IHJhdzEzOTRfcmVxdWVzdCk7CiAJfQogICAgICAgb3V0OgpAQCAtMjM0OCw3ICsyMzQ3LDYgQEAKIAlyZXR1cm4gaGFuZGxlX2FzeW5jX3JlcXVlc3QoZmksIHJlcSwgbm9kZSk7CiB9CiAKLQogc3RhdGljIHNzaXplX3QgcmF3MTM5NF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKiBidWZmZXIsCiAJCQkgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICogb2Zmc2V0X2lzX2lnbm9yZWQpCiB7CkBAIC0yMzU3LDkgKzIzNTUsOSBAQAogCXNzaXplX3QgcmV0dmFsID0gMDsKIAogI2lmZGVmIENPTkZJR19DT01QQVQKLQlpZiAoY291bnQgPT0gc2l6ZW9mKHN0cnVjdCBjb21wYXRfcmF3MTM5NF9yZXEpICYmIAotICAgCQlzaXplb2Yoc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSkgIT0gCi0JCQlzaXplb2Yoc3RydWN0IHJhdzEzOTRfcmVxdWVzdCkpIHsgCisJaWYgKGNvdW50ID09IHNpemVvZihzdHJ1Y3QgY29tcGF0X3JhdzEzOTRfcmVxKSAmJgorICAgCSAgICBzaXplb2Yoc3RydWN0IGNvbXBhdF9yYXcxMzk0X3JlcSkgIT0KKwkJCXNpemVvZihzdHJ1Y3QgcmF3MTM5NF9yZXF1ZXN0KSkgewogCQlidWZmZXIgPSByYXcxMzk0X2NvbXBhdF93cml0ZShidWZmZXIpOwogCQlpZiAoSVNfRVJSKGJ1ZmZlcikpCiAJCQlyZXR1cm4gUFRSX0VSUihidWZmZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZWVlMTM5NC9zYnAyLmMgYi9kcml2ZXJzL2llZWUxMzk0L3NicDIuYwppbmRleCA1NDEzZGM0Li4xZDVjZWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2llZWUxMzk0L3NicDIuYworKysgYi9kcml2ZXJzL2llZWUxMzk0L3NicDIuYwpAQCAtMTI3LDEwICsxMjcsMTIgQEAKICAqIHRhbGtpbmcgdG8gYSBzaW5nbGUgc2JwMiBkZXZpY2UgYXQgdGhlIHNhbWUgdGltZSAoZmlsZXN5c3RlbSBjb2hlcmVuY3ksCiAgKiBldGMuKS4gSWYgeW91J3JlIHJ1bm5pbmcgYW4gc2JwMiBkZXZpY2UgdGhhdCBzdXBwb3J0cyBtdWx0aXBsZSBsb2dpbnMsCiAgKiBhbmQgeW91J3JlIGVpdGhlciBydW5uaW5nIHJlYWQtb25seSBmaWxlc3lzdGVtcyBvciBzb21lIHNvcnQgb2Ygc3BlY2lhbAotICogZmlsZXN5c3RlbSBzdXBwb3J0aW5nIG11bHRpcGxlIGhvc3RzIChvbmUgc3VjaCBmaWxlc3lzdGVtIGlzIE9wZW5HRlMsCi0gKiBzZWUgb3Blbmdmcy5zb3VyY2Vmb3JnZS5uZXQgZm9yIG1vcmUgaW5mbyksIHRoZW4gc2V0IGV4Y2x1c2l2ZV9sb2dpbgotICogdG8gemVyby4gTm90ZTogVGhlIE94c2VtaSBPWEZXOTExIHNicDIgY2hpcHNldCBzdXBwb3J0cyB1cCB0byBmb3VyCi0gKiBjb25jdXJyZW50IGxvZ2lucy4KKyAqIGZpbGVzeXN0ZW0gc3VwcG9ydGluZyBtdWx0aXBsZSBob3N0cywgZS5nLiBPcGVuR0ZTLCBPcmFjbGUgQ2x1c3RlcgorICogRmlsZSBTeXN0ZW0sIG9yIEx1c3RyZSwgdGhlbiBzZXQgZXhjbHVzaXZlX2xvZ2luIHRvIHplcm8uCisgKgorICogU28gZmFyIG9ubHkgYnJpZGdlcyBmcm9tIE94Zm9yZCBTZW1pY29uZHVjdG9yIGFyZSBrbm93biB0byBzdXBwb3J0CisgKiBjb25jdXJyZW50IGxvZ2lucy4gRGVwZW5kaW5nIG9uIGZpcm13YXJlLCBmb3VyIG9yIHR3byBjb25jdXJyZW50IGxvZ2lucworICogYXJlIHBvc3NpYmxlIG9uIE9YRlc5MTEgYW5kIG5ld2VyIE94c2VtaSBicmlkZ2VzLgogICovCiBzdGF0aWMgaW50IGV4Y2x1c2l2ZV9sb2dpbiA9IDE7CiBtb2R1bGVfcGFyYW0oZXhjbHVzaXZlX2xvZ2luLCBpbnQsIDA2NDQpOwpAQCAtMzA2LDggKzMwOCw5IEBACiAJdTMyIG1vZGVsX2lkOwogCXVuc2lnbmVkIHdvcmthcm91bmRzOwogfSBzYnAyX3dvcmthcm91bmRzX3RhYmxlW10gPSB7Ci0JLyogVFNCNDJBQTkgKi8geworCS8qIERWaUNPIE1vbW9iYXkgQ1gtMSB3aXRoIFRTQjQyQUE5IGJyaWRnZSAqLyB7CiAJCS5maXJtd2FyZV9yZXZpc2lvbgk9IDB4MDAyODAwLAorCQkubW9kZWxfaWQJCT0gMHgwMDEwMTAsCiAJCS53b3JrYXJvdW5kcwkJPSBTQlAyX1dPUktBUk9VTkRfSU5RVUlSWV8zNiB8CiAJCQkJCSAgU0JQMl9XT1JLQVJPVU5EX01PREVfU0VOU0VfOCwKIAl9LApAQCAtNzkxLDEyICs3OTQsMTIgQEAKIAlzY3NpX2lkLT51ZCA9IHVkOwogCXNjc2lfaWQtPnNwZWVkX2NvZGUgPSBJRUVFMTM5NF9TUEVFRF8xMDA7CiAJc2NzaV9pZC0+bWF4X3BheWxvYWRfc2l6ZSA9IHNicDJfc3BlZWR0b19tYXhfcGF5bG9hZFtJRUVFMTM5NF9TUEVFRF8xMDBdOworCXNjc2lfaWQtPnN0YXR1c19maWZvX2FkZHIgPSBDU1IxMjEyX0lOVkFMSURfQUREUl9TUEFDRTsKIAlhdG9taWNfc2V0KCZzY3NpX2lkLT5zYnAyX2xvZ2luX2NvbXBsZXRlLCAwKTsKIAlJTklUX0xJU1RfSEVBRCgmc2NzaV9pZC0+c2JwMl9jb21tYW5kX29yYl9pbnVzZSk7CiAJSU5JVF9MSVNUX0hFQUQoJnNjc2lfaWQtPnNicDJfY29tbWFuZF9vcmJfY29tcGxldGVkKTsKIAlJTklUX0xJU1RfSEVBRCgmc2NzaV9pZC0+c2NzaV9saXN0KTsKIAlzcGluX2xvY2tfaW5pdCgmc2NzaV9pZC0+c2JwMl9jb21tYW5kX29yYl9sb2NrKTsKLQlzY3NpX2lkLT5zYnAyX2x1biA9IDA7CiAKIAl1ZC0+ZGV2aWNlLmRyaXZlcl9kYXRhID0gc2NzaV9pZDsKIApAQCAtODQ0LDggKzg0Nyw4IEBACiAJc2NzaV9pZC0+c3RhdHVzX2ZpZm9fYWRkciA9IGhwc2JfYWxsb2NhdGVfYW5kX3JlZ2lzdGVyX2FkZHJzcGFjZSgKIAkJCSZzYnAyX2hpZ2hsZXZlbCwgdWQtPm5lLT5ob3N0LCAmc2JwMl9vcHMsCiAJCQlzaXplb2Yoc3RydWN0IHNicDJfc3RhdHVzX2Jsb2NrKSwgc2l6ZW9mKHF1YWRsZXRfdCksCi0JCQkweDAxMDAwMDAwMDAwMFVMTCwgQ1NSMTIxMl9BTExfU1BBQ0VfRU5EKTsKLQlpZiAoc2NzaV9pZC0+c3RhdHVzX2ZpZm9fYWRkciA9PSB+MFVMTCkgeworCQkJdWQtPm5lLT5ob3N0LT5sb3dfYWRkcl9zcGFjZSwgQ1NSMTIxMl9BTExfU1BBQ0VfRU5EKTsKKwlpZiAoc2NzaV9pZC0+c3RhdHVzX2ZpZm9fYWRkciA9PSBDU1IxMjEyX0lOVkFMSURfQUREUl9TUEFDRSkgewogCQlTQlAyX0VSUigiZmFpbGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBGSUZPIGFkZHJlc3MgcmFuZ2UiKTsKIAkJZ290byBmYWlsZWRfYWxsb2M7CiAJfQpAQCAtMTA4Nyw5ICsxMDkwLDkgQEAKIAkJU0JQMl9ETUFfRlJFRSgic2luZ2xlIHF1ZXJ5IGxvZ2lucyBkYXRhIik7CiAJfQogCi0JaWYgKHNjc2lfaWQtPnN0YXR1c19maWZvX2FkZHIpCisJaWYgKHNjc2lfaWQtPnN0YXR1c19maWZvX2FkZHIgIT0gQ1NSMTIxMl9JTlZBTElEX0FERFJfU1BBQ0UpCiAJCWhwc2JfdW5yZWdpc3Rlcl9hZGRyc3BhY2UoJnNicDJfaGlnaGxldmVsLCBoaS0+aG9zdCwKLQkJCXNjc2lfaWQtPnN0YXR1c19maWZvX2FkZHIpOworCQkJCQkgIHNjc2lfaWQtPnN0YXR1c19maWZvX2FkZHIpOwogCiAJc2NzaV9pZC0+dWQtPmRldmljZS5kcml2ZXJfZGF0YSA9IE5VTEw7CiAKQEAgLTEyMTMsMTMgKzEyMTYsMTEgQEAKIAlTQlAyX0RFQlVHKCJsZW5ndGhfbWF4X2xvZ2lucyA9ICV4IiwKIAkJICAgKHVuc2lnbmVkIGludClzY3NpX2lkLT5xdWVyeV9sb2dpbnNfcmVzcG9uc2UtPmxlbmd0aF9tYXhfbG9naW5zKTsKIAotCVNCUDJfREVCVUcoIlF1ZXJ5IGxvZ2lucyB0byBTQlAtMiBkZXZpY2Ugc3VjY2Vzc2Z1bCIpOwotCiAJbWF4X2xvZ2lucyA9IFJFU1BPTlNFX0dFVF9NQVhfTE9HSU5TKHNjc2lfaWQtPnF1ZXJ5X2xvZ2luc19yZXNwb25zZS0+bGVuZ3RoX21heF9sb2dpbnMpOwotCVNCUDJfREVCVUcoIk1heGltdW0gY29uY3VycmVudCBsb2dpbnMgc3VwcG9ydGVkOiAlZCIsIG1heF9sb2dpbnMpOworCVNCUDJfSU5GTygiTWF4aW11bSBjb25jdXJyZW50IGxvZ2lucyBzdXBwb3J0ZWQ6ICVkIiwgbWF4X2xvZ2lucyk7CiAKIAlhY3RpdmVfbG9naW5zID0gUkVTUE9OU0VfR0VUX0FDVElWRV9MT0dJTlMoc2NzaV9pZC0+cXVlcnlfbG9naW5zX3Jlc3BvbnNlLT5sZW5ndGhfbWF4X2xvZ2lucyk7Ci0JU0JQMl9ERUJVRygiTnVtYmVyIG9mIGFjdGl2ZSBsb2dpbnM6ICVkIiwgYWN0aXZlX2xvZ2lucyk7CisJU0JQMl9JTkZPKCJOdW1iZXIgb2YgYWN0aXZlIGxvZ2luczogJWQiLCBhY3RpdmVfbG9naW5zKTsKIAogCWlmIChhY3RpdmVfbG9naW5zID49IG1heF9sb2dpbnMpIHsKIAkJcmV0dXJuIC1FSU87CkBAIC0xNjQ4LDYgKzE2NDksOCBAQAogCX0KIH0KIAorI2RlZmluZSBTQlAyX1BBWUxPQURfVE9fQllURVMocCkgKDEgPDwgKChwKSArIDIpKQorCiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBtYXggc3BlZWQgYW5kIHBhY2tldAogICogc2l6ZSB3ZSBjYW4gdXNlIGluIG91ciBPUkJzLiBOb3RlLCB0aGF0IHdlICh0aGUgZHJpdmVyIGFuZCBob3N0KSBvbmx5CkBAIC0xNjYwLDEzICsxNjYzLDEyIEBACiBzdGF0aWMgaW50IHNicDJfbWF4X3NwZWVkX2FuZF9zaXplKHN0cnVjdCBzY3NpX2lkX2luc3RhbmNlX2RhdGEgKnNjc2lfaWQpCiB7CiAJc3RydWN0IHNicDJzY3NpX2hvc3RfaW5mbyAqaGkgPSBzY3NpX2lkLT5oaTsKKwl1OCBwYXlsb2FkOwogCiAJU0JQMl9ERUJVR19FTlRFUigpOwogCi0JLyogSW5pdGlhbCBzZXR0aW5nIGNvbWVzIGZyb20gdGhlIGhvc3RzIHNwZWVkIG1hcCAqLwogCXNjc2lfaWQtPnNwZWVkX2NvZGUgPQotCSAgICBoaS0+aG9zdC0+c3BlZWRfbWFwW05PREVJRF9UT19OT0RFKGhpLT5ob3N0LT5ub2RlX2lkKSAqIDY0ICsKLQkJCQlOT0RFSURfVE9fTk9ERShzY3NpX2lkLT5uZS0+bm9kZWlkKV07CisJICAgIGhpLT5ob3N0LT5zcGVlZFtOT0RFSURfVE9fTk9ERShzY3NpX2lkLT5uZS0+bm9kZWlkKV07CiAKIAkvKiBCdW1wIGRvd24gb3VyIHNwZWVkIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpdCAqLwogCWlmIChzY3NpX2lkLT5zcGVlZF9jb2RlID4gbWF4X3NwZWVkKSB7CkBAIC0xNjc3LDE1ICsxNjc5LDIyIEBACiAKIAkvKiBQYXlsb2FkIHNpemUgaXMgdGhlIGxlc3NlciBvZiB3aGF0IG91ciBzcGVlZCBzdXBwb3J0cyBhbmQgd2hhdAogCSAqIG91ciBob3N0IHN1cHBvcnRzLiAgKi8KLQlzY3NpX2lkLT5tYXhfcGF5bG9hZF9zaXplID0KLQkgICAgbWluKHNicDJfc3BlZWR0b19tYXhfcGF5bG9hZFtzY3NpX2lkLT5zcGVlZF9jb2RlXSwKLQkJKHU4KSAoaGktPmhvc3QtPmNzci5tYXhfcmVjIC0gMSkpOworCXBheWxvYWQgPSBtaW4oc2JwMl9zcGVlZHRvX21heF9wYXlsb2FkW3Njc2lfaWQtPnNwZWVkX2NvZGVdLAorCQkgICAgICAodTgpIChoaS0+aG9zdC0+Y3NyLm1heF9yZWMgLSAxKSk7CisKKwkvKiBJZiBwaHlzaWNhbCBETUEgaXMgb2ZmLCB3b3JrIGFyb3VuZCBsaW1pdGF0aW9uIGluIG9oY2kxMzk0OgorCSAqIHBhY2tldCBzaXplIG11c3Qgbm90IGV4Y2VlZCBQQUdFX1NJWkUgKi8KKwlpZiAoc2NzaV9pZC0+bmUtPmhvc3QtPmxvd19hZGRyX3NwYWNlIDwgKDFVTEwgPDwgMzIpKQorCQl3aGlsZSAoU0JQMl9QQVlMT0FEX1RPX0JZVEVTKHBheWxvYWQpICsgMjQgPiBQQUdFX1NJWkUgJiYKKwkJICAgICAgIHBheWxvYWQpCisJCQlwYXlsb2FkLS07CiAKIAlIUFNCX0RFQlVHKCJOb2RlICIgTk9ERV9CVVNfRk1UICI6IE1heCBzcGVlZCBbJXNdIC0gTWF4IHBheWxvYWQgWyV1XSIsCiAJCSAgIE5PREVfQlVTX0FSR1MoaGktPmhvc3QsIHNjc2lfaWQtPm5lLT5ub2RlaWQpLAogCQkgICBocHNiX3NwZWVkdG9fc3RyW3Njc2lfaWQtPnNwZWVkX2NvZGVdLAotCQkgICAxIDw8ICgodTMyKSBzY3NpX2lkLT5tYXhfcGF5bG9hZF9zaXplICsgMikpOworCQkgICBTQlAyX1BBWUxPQURfVE9fQllURVMocGF5bG9hZCkpOwogCisJc2NzaV9pZC0+bWF4X3BheWxvYWRfc2l6ZSA9IHBheWxvYWQ7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIxMTMsMzMgKzIxMjIsNiBAQAogfQogCiAvKgotICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21tYW5kIGlzIGNvbXBsZXRlZCwgaW4gb3JkZXIgdG8gZG8gYW55IG5lY2Vzc2FyeSBTQlAtMgotICogcmVzcG9uc2UgZGF0YSB0cmFuc2xhdGlvbnMgZm9yIHRoZSBTQ1NJIHN0YWNrCi0gKi8KLXN0YXRpYyB2b2lkIHNicDJfY2hlY2tfc2JwMl9yZXNwb25zZShzdHJ1Y3Qgc2NzaV9pZF9pbnN0YW5jZV9kYXRhICpzY3NpX2lkLAotCQkJCSAgICAgc3RydWN0IHNjc2lfY21uZCAqU0NwbnQpCi17Ci0JdTggKnNjc2lfYnVmID0gU0NwbnQtPnJlcXVlc3RfYnVmZmVyOwotCi0JU0JQMl9ERUJVR19FTlRFUigpOwotCi0JaWYgKFNDcG50LT5jbW5kWzBdID09IElOUVVJUlkgJiYgKFNDcG50LT5jbW5kWzFdICYgMykgPT0gMCkgewotCQkvKgotCQkgKiBNYWtlIHN1cmUgZGF0YSBsZW5ndGggaXMgb2suIE1pbmltdW0gbGVuZ3RoIGlzIDM2IGJ5dGVzCi0JCSAqLwotCQlpZiAoc2NzaV9idWZbNF0gPT0gMCkgewotCQkJc2NzaV9idWZbNF0gPSAzNiAtIDU7Ci0JCX0KLQotCQkvKgotCQkgKiBGaXggYW5zaSByZXZpc2lvbiBhbmQgcmVzcG9uc2UgZGF0YSBmb3JtYXQKLQkJICovCi0JCXNjc2lfYnVmWzJdIHw9IDI7Ci0JCXNjc2lfYnVmWzNdID0gKHNjc2lfYnVmWzNdICYgMHhmMCkgfCAyOwotCX0KLX0KLQotLyoKICAqIFRoaXMgZnVuY3Rpb24gZGVhbHMgd2l0aCBzdGF0dXMgd3JpdGVzIGZyb20gdGhlIFNCUC0yIGRldmljZQogICovCiBzdGF0aWMgaW50IHNicDJfaGFuZGxlX3N0YXR1c193cml0ZShzdHJ1Y3QgaHBzYl9ob3N0ICpob3N0LCBpbnQgbm9kZWlkLCBpbnQgZGVzdGlkLApAQCAtMjQ3OCwxMyArMjQ2MCw2IEBACiAJfQogCiAJLyoKLQkgKiBUYWtlIGNhcmUgb2YgYW55IHNicDIgcmVzcG9uc2UgZGF0YSBtdWNraW5nIGhlcmUgKFJCQyBzdHVmZiwgZXRjLikKLQkgKi8KLQlpZiAoU0NwbnQtPnJlc3VsdCA9PSBESURfT0sgPDwgMTYpIHsKLQkJc2JwMl9jaGVja19zYnAyX3Jlc3BvbnNlKHNjc2lfaWQsIFNDcG50KTsKLQl9Ci0KLQkvKgogCSAqIElmIGEgYnVzIHJlc2V0IGlzIGluIHByb2dyZXNzIGFuZCB0aGVyZSB3YXMgYW4gZXJyb3IsIGNvbXBsZXRlCiAJICogdGhlIGNvbW1hbmQgYXMgYnVzeSBzbyB0aGF0IGl0IHdpbGwgZ2V0IHJldHJpZWQuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2llZWUxMzk0L3NicDIuaCBiL2RyaXZlcnMvaWVlZTEzOTQvc2JwMi5oCmluZGV4IGY0Y2NjOWQuLmIyMmNlMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvc2JwMi5oCisrKyBiL2RyaXZlcnMvaWVlZTEzOTQvc2JwMi5oCkBAIC01Miw3ICs1Miw3IEBACiAJdTMyIGRhdGFfZGVzY3JpcHRvcl9sbzsKIAl1MzIgbWlzYzsKIAl1OCBjZGJbMTJdOwotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUgU0JQMl9MT0dJTl9SRVFVRVNUCQkweDAKICNkZWZpbmUgU0JQMl9RVUVSWV9MT0dJTlNfUkVRVUVTVAkweDEKQEAgLTgwLDcgKzgwLDcgQEAKIAl1MzIgcGFzc3dkX3Jlc3BfbGVuZ3RoczsKIAl1MzIgc3RhdHVzX2ZpZm9faGk7CiAJdTMyIHN0YXR1c19maWZvX2xvOwotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUgUkVTUE9OU0VfR0VUX0xPR0lOX0lEKHZhbHVlKSAgICAgICAgICAgICh2YWx1ZSAmIDB4ZmZmZikKICNkZWZpbmUgUkVTUE9OU0VfR0VUX0xFTkdUSCh2YWx1ZSkgICAgICAgICAgICAgICgodmFsdWUgPj4gMTYpICYgMHhmZmZmKQpAQCAtOTEsNyArOTEsNyBAQAogCXUzMiBjb21tYW5kX2Jsb2NrX2FnZW50X2hpOwogCXUzMiBjb21tYW5kX2Jsb2NrX2FnZW50X2xvOwogCXUzMiByZWNvbm5lY3RfaG9sZDsKLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAjZGVmaW5lIE9SQl9TRVRfTE9HSU5fSUQodmFsdWUpICAgICAgICAgICAgICAgICAodmFsdWUgJiAweGZmZmYpCiAKQEAgLTEwNiw3ICsxMDYsNyBAQAogCXUzMiByZXNlcnZlZF9yZXNwX2xlbmd0aDsKIAl1MzIgc3RhdHVzX2ZpZm9faGk7CiAJdTMyIHN0YXR1c19maWZvX2xvOwotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUgUkVTUE9OU0VfR0VUX01BWF9MT0dJTlModmFsdWUpICAgICAgICAgICh2YWx1ZSAmIDB4ZmZmZikKICNkZWZpbmUgUkVTUE9OU0VfR0VUX0FDVElWRV9MT0dJTlModmFsdWUpICAgICAgICgoUkVTUE9OU0VfR0VUX0xFTkdUSCh2YWx1ZSkgLSA0KSAvIDEyKQpAQCAtMTE2LDcgKzExNiw3IEBACiAJdTMyIG1pc2NfSURzOwogCXUzMiBpbml0aWF0b3JfbWlzY19oaTsKIAl1MzIgaW5pdGlhdG9yX21pc2NfbG87Ci19OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAogc3RydWN0IHNicDJfcmVjb25uZWN0X29yYiB7CiAJdTMyIHJlc2VydmVkMTsKQEAgLTEyNyw3ICsxMjcsNyBAQAogCXUzMiByZXNlcnZlZDU7CiAJdTMyIHN0YXR1c19maWZvX2hpOwogCXUzMiBzdGF0dXNfZmlmb19sbzsKLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiBzdHJ1Y3Qgc2JwMl9sb2dvdXRfb3JiIHsKIAl1MzIgcmVzZXJ2ZWQxOwpAQCAtMTM4LDcgKzEzOCw3IEBACiAJdTMyIHJlc2VydmVkNTsKIAl1MzIgc3RhdHVzX2ZpZm9faGk7CiAJdTMyIHN0YXR1c19maWZvX2xvOwotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUgUEFHRV9UQUJMRV9TRVRfU0VHTUVOVF9CQVNFX0hJKHZhbHVlKSAgICh2YWx1ZSAmIDB4ZmZmZikKICNkZWZpbmUgUEFHRV9UQUJMRV9TRVRfU0VHTUVOVF9MRU5HVEgodmFsdWUpICAgICgodmFsdWUgJiAweGZmZmYpIDw8IDE2KQpAQCAtMTQ2LDcgKzE0Niw3IEBACiBzdHJ1Y3Qgc2JwMl91bnJlc3RyaWN0ZWRfcGFnZV90YWJsZSB7CiAJdTMyIGxlbmd0aF9zZWdtZW50X2Jhc2VfaGk7CiAJdTMyIHNlZ21lbnRfYmFzZV9sbzsKLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAjZGVmaW5lIFJFU1BfU1RBVFVTX1JFUVVFU1RfQ09NUExFVEUJCTB4MAogI2RlZmluZSBSRVNQX1NUQVRVU19UUkFOU1BPUlRfRkFJTFVSRQkJMHgxCkBAIC0xOTEsNyArMTkxLDcgQEAKIAl1MzIgT1JCX29mZnNldF9oaV9taXNjOwogCXUzMiBPUkJfb2Zmc2V0X2xvOwogCXU4IGNvbW1hbmRfc2V0X2RlcGVuZGVudFsyNF07Ci19OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAogLyoKICAqIE1pc2NlbGxhbmVvdXMgU0JQMiByZWxhdGVkIGNvbmZpZyByb20gZGVmaW5lcwpAQCAtMzk1LDkgKzM5NSw4IEBACiBzdGF0aWMgaW50IHNicDJfc2VuZF9jb21tYW5kKHN0cnVjdCBzY3NpX2lkX2luc3RhbmNlX2RhdGEgKnNjc2lfaWQsCiAJCQkgICAgIHN0cnVjdCBzY3NpX2NtbmQgKlNDcG50LAogCQkJICAgICB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSk7Ci1zdGF0aWMgdW5zaWduZWQgaW50IHNicDJfc3RhdHVzX3RvX3NlbnNlX2RhdGEodW5jaGFyICpzYnAyX3N0YXR1cywgdW5jaGFyICpzZW5zZV9kYXRhKTsKLXN0YXRpYyB2b2lkIHNicDJfY2hlY2tfc2JwMl9yZXNwb25zZShzdHJ1Y3Qgc2NzaV9pZF9pbnN0YW5jZV9kYXRhICpzY3NpX2lkLAotCQkJCSAgICAgc3RydWN0IHNjc2lfY21uZCAqU0NwbnQpOworc3RhdGljIHVuc2lnbmVkIGludCBzYnAyX3N0YXR1c190b19zZW5zZV9kYXRhKHVuY2hhciAqc2JwMl9zdGF0dXMsCisJCQkJCSAgICAgIHVuY2hhciAqc2Vuc2VfZGF0YSk7CiBzdGF0aWMgdm9pZCBzYnAyX3BhcnNlX3VuaXRfZGlyZWN0b3J5KHN0cnVjdCBzY3NpX2lkX2luc3RhbmNlX2RhdGEgKnNjc2lfaWQsCiAJCQkJICAgICAgc3RydWN0IHVuaXRfZGlyZWN0b3J5ICp1ZCk7CiBzdGF0aWMgaW50IHNicDJfc2V0X2J1c3lfdGltZW91dChzdHJ1Y3Qgc2NzaV9pZF9pbnN0YW5jZV9kYXRhICpzY3NpX2lkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWVlZTEzOTQvdmlkZW8xMzk0LmMgYi9kcml2ZXJzL2llZWUxMzk0L3ZpZGVvMTM5NC5jCmluZGV4IDRlM2JkNjIuLjI5NWQwZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWVlZTEzOTQvdmlkZW8xMzk0LmMKKysrIGIvZHJpdmVycy9pZWVlMTM5NC92aWRlbzEzOTQuYwpAQCAtMzMxLDcgKzMzMSw3IEBACiAKICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmxvY2spOwogCi0JUFJJTlQoS0VSTl9JTkZPLCBvaGNpLT5ob3N0LT5pZCwgIklzbyAlcyBETUE6ICVkIGJ1ZmZlcnMgIgorCURCR01TRyhvaGNpLT5ob3N0LT5pZCwgIklzbyAlcyBETUE6ICVkIGJ1ZmZlcnMgIgogCSAgICAgICJvZiBzaXplICVkIGFsbG9jYXRlZCBmb3IgYSBmcmFtZSBzaXplICVkLCBlYWNoIHdpdGggJWQgcHJncyIsCiAJICAgICAgKHR5cGUgPT0gT0hDSV9JU09fUkVDRUlWRSkgPyAicmVjZWl2ZSIgOiAidHJhbnNtaXQiLAogCSAgICAgIGQtPm51bV9kZXNjIC0gMSwgZC0+YnVmX3NpemUsIGQtPmZyYW1lX3NpemUsIGQtPm5iX2NtZCk7CkBAIC03NTksNyArNzU5LDcgQEAKIAkJfSBlbHNlIHsKIAkJCW1hc2sgPSAodTY0KTB4MTw8di5jaGFubmVsOwogCQl9Ci0JCVBSSU5UKEtFUk5fSU5GTywgb2hjaS0+aG9zdC0+aWQsICJtYXNrOiAlMDhYJTA4WCB1c2FnZTogJTA4WCUwOFhcbiIsCisJCURCR01TRyhvaGNpLT5ob3N0LT5pZCwgIm1hc2s6ICUwOFglMDhYIHVzYWdlOiAlMDhYJTA4WFxuIiwKIAkJCSh1MzIpKG1hc2s+PjMyKSwodTMyKShtYXNrJjB4ZmZmZmZmZmYpLAogCQkJKHUzMikob2hjaS0+SVNPX2NoYW5uZWxfdXNhZ2U+PjMyKSwKIAkJCSh1MzIpKG9oY2ktPklTT19jaGFubmVsX3VzYWdlJjB4ZmZmZmZmZmYpKTsKQEAgLTgwNSw3ICs4MDUsNyBAQAogCQkJdi5idWZfc2l6ZSA9IGQtPmJ1Zl9zaXplOwogCQkJbGlzdF9hZGRfdGFpbCgmZC0+bGluaywgJmN0eC0+Y29udGV4dF9saXN0KTsKIAotCQkJUFJJTlQoS0VSTl9JTkZPLCBvaGNpLT5ob3N0LT5pZCwKKwkJCURCR01TRyhvaGNpLT5ob3N0LT5pZCwKIAkJCSAgICAgICJpc28gY29udGV4dCAlZCBsaXN0ZW4gb24gY2hhbm5lbCAlZCIsCiAJCQkgICAgICBkLT5jdHgsIHYuY2hhbm5lbCk7CiAJCX0KQEAgLTgyOCw3ICs4MjgsNyBAQAogCiAJCQlsaXN0X2FkZF90YWlsKCZkLT5saW5rLCAmY3R4LT5jb250ZXh0X2xpc3QpOwogCi0JCQlQUklOVChLRVJOX0lORk8sIG9oY2ktPmhvc3QtPmlkLAorCQkJREJHTVNHKG9oY2ktPmhvc3QtPmlkLAogCQkJICAgICAgIklzbyBjb250ZXh0ICVkIHRhbGsgb24gY2hhbm5lbCAlZCIsIGQtPmN0eCwKIAkJCSAgICAgIHYuY2hhbm5lbCk7CiAJCX0KQEAgLTg3Myw3ICs4NzMsNyBAQAogCQkJZCA9IGZpbmRfY3R4KCZjdHgtPmNvbnRleHRfbGlzdCwgT0hDSV9JU09fVFJBTlNNSVQsIGNoYW5uZWwpOwogCiAJCWlmIChkID09IE5VTEwpIHJldHVybiAtRVNSQ0g7Ci0JCVBSSU5UKEtFUk5fSU5GTywgb2hjaS0+aG9zdC0+aWQsICJJc28gY29udGV4dCAlZCAiCisJCURCR01TRyhvaGNpLT5ob3N0LT5pZCwgIklzbyBjb250ZXh0ICVkICIKIAkJICAgICAgInN0b3AgdGFsa2luZyBvbiBjaGFubmVsICVkIiwgZC0+Y3R4LCBjaGFubmVsKTsKIAkJZnJlZV9kbWFfaXNvX2N0eChkKTsKIApAQCAtOTM1LDcgKzkzNSw3IEBACiAJCWVsc2UgewogCQkJLyogV2FrZSB1cCBkbWEgY29udGV4dCBpZiBuZWNlc3NhcnkgKi8KIAkJCWlmICghKHJlZ19yZWFkKG9oY2ksIGQtPmN0cmxTZXQpICYgMHg0MDApKSB7Ci0JCQkJUFJJTlQoS0VSTl9JTkZPLCBvaGNpLT5ob3N0LT5pZCwKKwkJCQlEQkdNU0cob2hjaS0+aG9zdC0+aWQsCiAJCQkJICAgICAgIldha2luZyB1cCBpc28gZG1hIGN0eD0lZCIsIGQtPmN0eCk7CiAJCQkJcmVnX3dyaXRlKG9oY2ksIGQtPmN0cmxTZXQsIDB4MTAwMCk7CiAJCQl9CkBAIC0xMTA2LDcgKzExMDYsNyBAQAogCQllbHNlIHsKIAkJCS8qIFdha2UgdXAgZG1hIGNvbnRleHQgaWYgbmVjZXNzYXJ5ICovCiAJCQlpZiAoIShyZWdfcmVhZChvaGNpLCBkLT5jdHJsU2V0KSAmIDB4NDAwKSkgewotCQkJCVBSSU5UKEtFUk5fSU5GTywgb2hjaS0+aG9zdC0+aWQsCisJCQkJREJHTVNHKG9oY2ktPmhvc3QtPmlkLAogCQkJCSAgICAgICJXYWtpbmcgdXAgaXNvIHRyYW5zbWl0IGRtYSBjdHg9JWQiLAogCQkJCSAgICAgIGQtPmN0eCk7CiAJCQkJcHV0X3RpbWVzdGFtcChvaGNpLCBkLCBkLT5sYXN0X2J1ZmZlcik7CkBAIC0xMjMyLDcgKzEyMzIsNyBAQAogCQkJICAgICAgImlzIG5vdCBiZWluZyB1c2VkIiwgZC0+Y2hhbm5lbCk7CiAJCWVsc2UKIAkJCW9oY2ktPklTT19jaGFubmVsX3VzYWdlICY9IH5tYXNrOwotCQlQUklOVChLRVJOX0lORk8sIG9oY2ktPmhvc3QtPmlkLCAiT24gcmVsZWFzZTogSXNvICVzIGNvbnRleHQgIgorCQlEQkdNU0cob2hjaS0+aG9zdC0+aWQsICJPbiByZWxlYXNlOiBJc28gJXMgY29udGV4dCAiCiAJCSAgICAgICIlZCBzdG9wIGxpc3RlbmluZyBvbiBjaGFubmVsICVkIiwKIAkJICAgICAgZC0+dHlwZSA9PSBPSENJX0lTT19SRUNFSVZFID8gInJlY2VpdmUiIDogInRyYW5zbWl0IiwKIAkJICAgICAgZC0+Y3R4LCBkLT5jaGFubmVsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jCmluZGV4IDVlYzJkNDkuLmU1N2QzYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYwpAQCAtODIxLDExICs4MjEsMTIgQEAKIAlrcmVmX3B1dCgmdXZlcmJzX2Rldi0+cmVmLCBpYl91dmVyYnNfcmVsZWFzZV9kZXYpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICp1dmVyYnNfZXZlbnRfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsCi0JCQkJCSAgICAgICBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgdXZlcmJzX2V2ZW50X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAorCQkJICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCXJldHVybiBnZXRfc2JfcHNldWRvKGZzX3R5cGUsICJpbmZpbmliYW5kZXZlbnQ6IiwgTlVMTCwKLQkJCSAgICAgSU5GSU5JQkFOREVWRU5URlNfTUFHSUMpOworCQkJICAgICBJTkZJTklCQU5ERVZFTlRGU19NQUdJQywgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHV2ZXJic19ldmVudF9mcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9mcy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZzLmMKaW5kZXggZTI3NDEyMC4uNjNkZTMwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZzLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZzLmMKQEAgLTU0MiwxMyArNTQyLDE0IEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqaXBhdGhmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJICAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQl2b2lkICpkYXRhKQorc3RhdGljIGludCBpcGF0aGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLAorCQkJY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCWlwYXRoX3N1cGVyID0gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwKLQkJCQkgICAgaXBhdGhmc19maWxsX3N1cGVyKTsKLQlyZXR1cm4gaXBhdGhfc3VwZXI7CisJaW50IHJldCA9IGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsCisJCQkJICAgIGlwYXRoZnNfZmlsbF9zdXBlciwgbW50KTsKKwlpZiAocmV0ID49IDApCisJCWlwYXRoX3N1cGVyID0gbW50LT5tbnRfc2I7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgaXBhdGhmc19raWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvZXZkZXYuYyBiL2RyaXZlcnMvaW5wdXQvZXZkZXYuYwppbmRleCBiYTMyNWYxLi41ZjU2MWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2V2ZGV2LmMKKysrIGIvZHJpdmVycy9pbnB1dC9ldmRldi5jCkBAIC04Miw3ICs4Miw3IEBACiAJcmV0dXJuIHJldHZhbCA8IDAgPyByZXR2YWwgOiAwOwogfQogCi1zdGF0aWMgaW50IGV2ZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICogZmlsZSkKK3N0YXRpYyBpbnQgZXZkZXZfZmx1c2goc3RydWN0IGZpbGUgKiBmaWxlLCBmbF9vd25lcl90IGlkKQogewogCXN0cnVjdCBldmRldl9saXN0ICpsaXN0ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCWlmICghbGlzdC0+ZXZkZXYtPmV4aXN0KSByZXR1cm4gLUVOT0RFVjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvYW1pa2JkLmMgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2FtaWtiZC5jCmluZGV4IDRjOGZiMWYuLmYxZjlkYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvYW1pa2JkLmMKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9hbWlrYmQuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXlib2FyZC5oPgogCiAjaW5jbHVkZSA8YXNtL2FtaWdhaW50cy5oPgogI2luY2x1ZGUgPGFzbS9hbWlnYWh3Lmg+CkBAIC00NSw3ICs0Niw3IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkFtaWdhIGtleWJvYXJkIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciBhbWlrYmRfa2V5Y29kZVsweDc4XSA9IHsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGFtaWtiZF9rZXljb2RlWzB4NzhdIF9faW5pdGRhdGEgPSB7CiAJWzBdCSA9IEtFWV9HUkFWRSwKIAlbMV0JID0gS0VZXzEsCiAJWzJdCSA9IEtFWV8yLApAQCAtMTcwLDEyICsxNzEsOSBAQAogCXNjYW5jb2RlID4+PSAxOwogCiAJaWYgKHNjYW5jb2RlIDwgMHg3OCkgewkJLyogc2NhbmNvZGVzIDwgMHg3OCBhcmUga2V5cyAqLwotCi0JCXNjYW5jb2RlID0gYW1pa2JkX2tleWNvZGVbc2NhbmNvZGVdOwotCiAJCWlucHV0X3JlZ3MoYW1pa2JkX2RldiwgZnApOwogCi0JCWlmIChzY2FuY29kZSA9PSBLRVlfQ0FQU0xPQ0spIHsJLyogQ2Fwc0xvY2sgaXMgYSB0b2dnbGUgc3dpdGNoIGtleSBvbiBBbWlnYSAqLworCQlpZiAoc2NhbmNvZGUgPT0gOTgpIHsJLyogQ2Fwc0xvY2sgaXMgYSB0b2dnbGUgc3dpdGNoIGtleSBvbiBBbWlnYSAqLwogCQkJaW5wdXRfcmVwb3J0X2tleShhbWlrYmRfZGV2LCBzY2FuY29kZSwgMSk7CiAJCQlpbnB1dF9yZXBvcnRfa2V5KGFtaWtiZF9kZXYsIHNjYW5jb2RlLCAwKTsKIAkJfSBlbHNlIHsKQEAgLTE5MSw3ICsxODksNyBAQAogCiBzdGF0aWMgaW50IF9faW5pdCBhbWlrYmRfaW5pdCh2b2lkKQogewotCWludCBpOworCWludCBpLCBqOwogCiAJaWYgKCFBTUlHQUhXX1BSRVNFTlQoQU1JX0tFWUJPQVJEKSkKIAkJcmV0dXJuIC1FSU87CkBAIC0yMTQsMTQgKzIxMiwyNiBAQAogCWFtaWtiZF9kZXYtPmlkLnZlcnNpb24gPSAweDAxMDA7CiAKIAlhbWlrYmRfZGV2LT5ldmJpdFswXSA9IEJJVChFVl9LRVkpIHwgQklUKEVWX1JFUCk7Ci0JYW1pa2JkX2Rldi0+a2V5Y29kZSA9IGFtaWtiZF9rZXljb2RlOwotCWFtaWtiZF9kZXYtPmtleWNvZGVzaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOwotCWFtaWtiZF9kZXYtPmtleWNvZGVtYXggPSBBUlJBWV9TSVpFKGFtaWtiZF9rZXljb2RlKTsKIAogCWZvciAoaSA9IDA7IGkgPCAweDc4OyBpKyspCi0JCWlmIChhbWlrYmRfa2V5Y29kZVtpXSkKLQkJCXNldF9iaXQoYW1pa2JkX2tleWNvZGVbaV0sIGFtaWtiZF9kZXYtPmtleWJpdCk7CisJCXNldF9iaXQoaSwgYW1pa2JkX2Rldi0+a2V5Yml0KTsKIAorCWZvciAoaSA9IDA7IGkgPCBNQVhfTlJfS0VZTUFQUzsgaSsrKSB7CisJCXN0YXRpYyB1X3Nob3J0IHRlbXBfbWFwW05SX0tFWVNdIF9faW5pdGRhdGE7CisJCWlmICgha2V5X21hcHNbaV0pCisJCQljb250aW51ZTsKKwkJbWVtc2V0KHRlbXBfbWFwLCAwLCBzaXplb2YodGVtcF9tYXApKTsKKwkJZm9yIChqID0gMDsgaiA8IDB4Nzg7IGorKykgeworCQkJaWYgKCFhbWlrYmRfa2V5Y29kZVtqXSkKKwkJCQljb250aW51ZTsKKwkJCXRlbXBfbWFwW2pdID0ga2V5X21hcHNbaV1bYW1pa2JkX2tleWNvZGVbal1dOworCQl9CisJCWZvciAoaiA9IDA7IGogPCBOUl9LRVlTOyBqKyspIHsKKwkJCWlmICghdGVtcF9tYXBbal0pCisJCQkJdGVtcF9tYXBbal0gPSAweGYyMDA7CisJCX0KKwkJbWVtY3B5KGtleV9tYXBzW2ldLCB0ZW1wX21hcCwgc2l6ZW9mKHRlbXBfbWFwKSk7CisJfQogCWNpYWEuY3JhICY9IH4weDQxOwkgLyogc2VyaWFsIGRhdGEgaW4sIHR1cm4gb2ZmIFRBICovCiAJcmVxdWVzdF9pcnEoSVJRX0FNSUdBX0NJQUFfU1AsIGFtaWtiZF9pbnRlcnJ1cHQsIDAsICJhbWlrYmQiLCBhbWlrYmRfaW50ZXJydXB0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2NhcGkvY2FwaWZzLmMgYi9kcml2ZXJzL2lzZG4vY2FwaS9jYXBpZnMuYwppbmRleCAwYTM3YWRlLi45ZWE2YmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vY2FwaS9jYXBpZnMuYworKysgYi9kcml2ZXJzL2lzZG4vY2FwaS9jYXBpZnMuYwpAQCAtMTIxLDEwICsxMjEsMTAgQEAKIAlyZXR1cm4gLUVOT01FTTsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqY2FwaWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBjYXBpZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBjYXBpZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGNhcGlmc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgY2FwaWZzX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vZ2lnYXNldC9jb21tb24uYyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L2NvbW1vbi5jCmluZGV4IGU1NTc2N2IuLmFjYjdlMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L2NvbW1vbi5jCisrKyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L2NvbW1vbi5jCkBAIC00NjAsNiArNDYwLDkgQEAKIAogCXN3aXRjaCAoY3MtPmNzX2luaXQpIHsKIAlkZWZhdWx0OgorCQkvKiBjbGVhciBkZXZpY2Ugc3lzZnMgKi8KKwkJZ2lnYXNldF9mcmVlX2Rldl9zeXNmcyhjcyk7CisKIAkJZ2lnYXNldF9pZl9mcmVlKGNzKTsKIAogCQlnaWdfZGJnKERFQlVHX0lOSVQsICJjbGVhcmluZyBodyIpOwpAQCAtNjk5LDYgKzcwMiw3IEBACiAJY3MtPm9wZW5fY291bnQgPSAwOwogCWNzLT5kZXYgPSBOVUxMOwogCWNzLT50dHkgPSBOVUxMOworCWNzLT5jbGFzcyA9IE5VTEw7CiAJY3MtPmNpZG1vZGUgPSBjaWRtb2RlICE9IDA7CiAKIAkvL2lmKG9uZWNoYW5uZWwpIHsgLy9GSVhNRQpAQCAtNzYwLDYgKzc2NCw5IEBACiAKIAlnaWdhc2V0X2lmX2luaXQoY3MpOwogCisJLyogc2V0IHVwIGRldmljZSBzeXNmcyAqLworCWdpZ2FzZXRfaW5pdF9kZXZfc3lzZnMoY3MpOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNzLT5sb2NrLCBmbGFncyk7CiAJY3MtPnJ1bm5pbmcgPSAxOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNzLT5sb2NrLCBmbGFncyk7CkBAIC05MDIsOSArOTA5LDYgQEAKIAogCXdhaXRfZXZlbnQoY3MtPndhaXRxdWV1ZSwgIWNzLT53YWl0aW5nKTsKIAotCS8qIHNldCB1cCBkZXZpY2Ugc3lzZnMgKi8KLQlnaWdhc2V0X2luaXRfZGV2X3N5c2ZzKGNzKTsKLQogCW11dGV4X3VubG9jaygmY3MtPm11dGV4KTsKIAlyZXR1cm4gMTsKIApAQCAtOTY5LDkgKzk3Myw2IEBACiAJCS8vRklYTUUKIAl9CiAKLQkvKiBjbGVhciBkZXZpY2Ugc3lzZnMgKi8KLQlnaWdhc2V0X2ZyZWVfZGV2X3N5c2ZzKGNzKTsKLQogCWNsZWFudXBfY3MoY3MpOwogCiBleGl0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2dpZ2FzZXQvZ2lnYXNldC5oIGIvZHJpdmVycy9pc2RuL2dpZ2FzZXQvZ2lnYXNldC5oCmluZGV4IDIyYjk2OTMuLjhkNjNkODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L2dpZ2FzZXQuaAorKysgYi9kcml2ZXJzL2lzZG4vZ2lnYXNldC9naWdhc2V0LmgKQEAgLTQ0NSw2ICs0NDUsNyBAQAogCXN0cnVjdCBnaWdhc2V0X2RyaXZlciAqZHJpdmVyOwogCXVuc2lnbmVkIG1pbm9yX2luZGV4OwogCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzczsKIAogCWNvbnN0IHN0cnVjdCBnaWdhc2V0X29wcyAqb3BzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vZ2lnYXNldC9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L2ludGVyZmFjZS5jCmluZGV4IDA4ZTRjNGUuLjc0ZmQyMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L2ludGVyZmFjZS5jCisrKyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L2ludGVyZmFjZS5jCkBAIC02MjUsNyArNjI1LDE0IEBACiAJCXJldHVybjsKIAogCXRhc2tsZXRfaW5pdCgmY3MtPmlmX3dha2VfdGFza2xldCwgJmlmX3dha2UsICh1bnNpZ25lZCBsb25nKSBjcyk7Ci0JdHR5X3JlZ2lzdGVyX2RldmljZShkcnYtPnR0eSwgY3MtPm1pbm9yX2luZGV4LCBOVUxMKTsKKwljcy0+Y2xhc3MgPSB0dHlfcmVnaXN0ZXJfZGV2aWNlKGRydi0+dHR5LCBjcy0+bWlub3JfaW5kZXgsIE5VTEwpOworCisJaWYgKCFJU19FUlIoY3MtPmNsYXNzKSkKKwkJY2xhc3Nfc2V0X2RldmRhdGEoY3MtPmNsYXNzLCBjcyk7CisJZWxzZSB7CisJCXdhcm4oImNvdWxkIG5vdCByZWdpc3RlciBkZXZpY2UgdG8gdGhlIHR0eSBzdWJzeXN0ZW0iKTsKKwkJY3MtPmNsYXNzID0gTlVMTDsKKwl9CiB9CiAKIHZvaWQgZ2lnYXNldF9pZl9mcmVlKHN0cnVjdCBjYXJkc3RhdGUgKmNzKQpAQCAtNjM4LDYgKzY0NSw3IEBACiAKIAl0YXNrbGV0X2Rpc2FibGUoJmNzLT5pZl93YWtlX3Rhc2tsZXQpOwogCXRhc2tsZXRfa2lsbCgmY3MtPmlmX3dha2VfdGFza2xldCk7CisJY3MtPmNsYXNzID0gTlVMTDsKIAl0dHlfdW5yZWdpc3Rlcl9kZXZpY2UoZHJ2LT50dHksIGNzLT5taW5vcl9pbmRleCk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9naWdhc2V0L3Byb2MuYyBiL2RyaXZlcnMvaXNkbi9naWdhc2V0L3Byb2MuYwppbmRleCBkMjY3YTYzLi45YWUzYTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vZ2lnYXNldC9wcm9jLmMKKysrIGIvZHJpdmVycy9pc2RuL2dpZ2FzZXQvcHJvYy5jCkBAIC0xNiwxMiArMTYsMTEgQEAKICNpbmNsdWRlICJnaWdhc2V0LmgiCiAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KIAotc3RhdGljIHNzaXplX3Qgc2hvd19jaWRtb2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCi0JCQkgICAgY2hhciAqYnVmKQorc3RhdGljIHNzaXplX3Qgc2hvd19jaWRtb2RlKHN0cnVjdCBjbGFzc19kZXZpY2UgKmNsYXNzLCBjaGFyICpidWYpCiB7CiAJaW50IHJldDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBjYXJkc3RhdGUgKmNzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGNhcmRzdGF0ZSAqY3MgPSBjbGFzc19nZXRfZGV2ZGF0YShjbGFzcyk7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmY3MtPmxvY2ssIGZsYWdzKTsKIAlyZXQgPSBzcHJpbnRmKGJ1ZiwgIiV1XG4iLCBjcy0+Y2lkbW9kZSk7CkBAIC0zMCwxMCArMjksMTAgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgc3NpemVfdCBzZXRfY2lkbW9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorc3RhdGljIHNzaXplX3Qgc2V0X2NpZG1vZGUoc3RydWN0IGNsYXNzX2RldmljZSAqY2xhc3MsCiAJCQkgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKIHsKLQlzdHJ1Y3QgY2FyZHN0YXRlICpjcyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBjYXJkc3RhdGUgKmNzID0gY2xhc3NfZ2V0X2RldmRhdGEoY2xhc3MpOwogCWxvbmcgaW50IHZhbHVlOwogCWNoYXIgKmVuZDsKIApAQCAtNjUsMTggKzY0LDI0IEBACiAJcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgREVWSUNFX0FUVFIoY2lkbW9kZSwgU19JUlVHT3xTX0lXVVNSLCBzaG93X2NpZG1vZGUsIHNldF9jaWRtb2RlKTsKK3N0YXRpYyBDTEFTU19ERVZJQ0VfQVRUUihjaWRtb2RlLCBTX0lSVUdPfFNfSVdVU1IsIHNob3dfY2lkbW9kZSwgc2V0X2NpZG1vZGUpOwogCiAvKiBmcmVlIHN5c2ZzIGZvciBkZXZpY2UgKi8KIHZvaWQgZ2lnYXNldF9mcmVlX2Rldl9zeXNmcyhzdHJ1Y3QgY2FyZHN0YXRlICpjcykKIHsKKwlpZiAoIWNzLT5jbGFzcykKKwkJcmV0dXJuOworCiAJZ2lnX2RiZyhERUJVR19JTklULCAicmVtb3Zpbmcgc3lzZnMgZW50cmllcyIpOwotCWRldmljZV9yZW1vdmVfZmlsZShjcy0+ZGV2LCAmZGV2X2F0dHJfY2lkbW9kZSk7CisJY2xhc3NfZGV2aWNlX3JlbW92ZV9maWxlKGNzLT5jbGFzcywgJmNsYXNzX2RldmljZV9hdHRyX2NpZG1vZGUpOwogfQogCiAvKiBpbml0aWFsaXplIHN5c2ZzIGZvciBkZXZpY2UgKi8KIHZvaWQgZ2lnYXNldF9pbml0X2Rldl9zeXNmcyhzdHJ1Y3QgY2FyZHN0YXRlICpjcykKIHsKKwlpZiAoIWNzLT5jbGFzcykKKwkJcmV0dXJuOworCiAJZ2lnX2RiZyhERUJVR19JTklULCAic2V0dGluZyB1cCBzeXNmcyIpOwotCWRldmljZV9jcmVhdGVfZmlsZShjcy0+ZGV2LCAmZGV2X2F0dHJfY2lkbW9kZSk7CisJY2xhc3NfZGV2aWNlX2NyZWF0ZV9maWxlKGNzLT5jbGFzcywgJmNsYXNzX2RldmljZV9hdHRyX2NpZG1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX2NvbW1vbi5jIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX2NvbW1vbi5jCmluZGV4IDIyNzU5YzAuLjgxYWNjZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9jb21tb24uYworKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fY29tbW9uLmMKQEAgLTExNzcsOSArMTE3Nyw4IEBACiAJCQlnb3RvIG91dDsKIAkJfQogCQljaGlkeCA9IGlzZG5fbWlub3IyY2hhbihtaW5vcik7Ci0JCXdoaWxlIChpc2RuX3dyaXRlYnVmX3N0dWIoZHJ2aWR4LCBjaGlkeCwgYnVmLCBjb3VudCkgIT0gY291bnQpCisJCXdoaWxlICgocmV0dmFsID0gaXNkbl93cml0ZWJ1Zl9zdHViKGRydmlkeCwgY2hpZHgsIGJ1ZiwgY291bnQpKSA9PSAwKQogCQkJaW50ZXJydXB0aWJsZV9zbGVlcF9vbigmZGV2LT5kcnZbZHJ2aWR4XS0+c25kX3dhaXRxW2NoaWR4XSk7Ci0JCXJldHZhbCA9IGNvdW50OwogCQlnb3RvIG91dDsKIAl9CiAJaWYgKG1pbm9yIDw9IElTRE5fTUlOT1JfQ1RSTE1BWCkgewpAQCAtMTk1MSw5ICsxOTUwLDEwIEBACiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IGFsbG9jX3NrYihobCArIGxlbiwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoIXNrYikKLQkJcmV0dXJuIDA7CisJCXJldHVybiAtRU5PTUVNOwogCXNrYl9yZXNlcnZlKHNrYiwgaGwpOwotCWNvcHlfZnJvbV91c2VyKHNrYl9wdXQoc2tiLCBsZW4pLCBidWYsIGxlbik7CisJaWYgKGNvcHlfZnJvbV91c2VyKHNrYl9wdXQoc2tiLCBsZW4pLCBidWYsIGxlbikpCisJCXJldHVybiAtRUZBVUxUOwogCXJldCA9IGRldi0+ZHJ2W2RydmlkeF0tPmludGVyZmFjZS0+d3JpdGVidWZfc2tiKGRydmlkeCwgY2hhbiwgMSwgc2tiKTsKIAlpZiAocmV0IDw9IDApCiAJCWRldl9rZnJlZV9za2Ioc2tiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9zYy9pb2N0bC5jIGIvZHJpdmVycy9pc2RuL3NjL2lvY3RsLmMKaW5kZXggZjRmNzEyMi4uNTdjNGFiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL3NjL2lvY3RsLmMKKysrIGIvZHJpdmVycy9pc2RuL3NjL2lvY3RsLmMKQEAgLTk3LDYgKzk3LDcgQEAKIAogCWNhc2UgU0NJT0NTVEFSVDoKIAl7CisJCWtmcmVlKHJjdm1zZyk7CiAJCXByX2RlYnVnKCIlczogU0NJT1NUQVJUOiBpb2N0bCByZWNlaXZlZFxuIiwKIAkJCQlzY19hZGFwdGVyW2NhcmRdLT5kZXZpY2VuYW1lKTsKIAkJaWYoc2NfYWRhcHRlcltjYXJkXS0+RW5naW5lVXApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9LY29uZmlnIGIvZHJpdmVycy9sZWRzL0tjb25maWcKaW5kZXggNjI2NTA2Mi4uZjU3M2Q1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL0tjb25maWcKKysrIGIvZHJpdmVycy9sZWRzL0tjb25maWcKQEAgLTYzLDYgKzYzLDEyIEBACiAJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIExFRHMgY29ubmVjdGVkIHRvIEdQSU8gbGluZXMKIAkgIG9uIFNhbXN1bmcgUzNDMjRYWCBzZXJpZXMgQ1BVcywgc3VjaCBhcyB0aGUgUzNDMjQxMCBhbmQgUzNDMjQ0MC4KIAorY29uZmlnIExFRFNfQU1TX0RFTFRBCisJdHJpc3RhdGUgIkxFRCBTdXBwb3J0IGZvciB0aGUgQW1zdHJhZCBEZWx0YSAoRTMpIgorCWRlcGVuZHMgTEVEU19DTEFTUyAmJiBNQUNIX0FNU19ERUxUQQorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIExFRHMgb24gQW1zdHJhZCBEZWx0YSAoRTMpLgorCiBjb21tZW50ICJMRUQgVHJpZ2dlcnMiCiAKIGNvbmZpZyBMRURTX1RSSUdHRVJTCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUgYi9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKaW5kZXggNDBmMDQyNi4uZGNlYTEwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbGVkcy9NYWtlZmlsZQpAQCAtMTEsNiArMTEsNyBAQAogb2JqLSQoQ09ORklHX0xFRFNfSVhQNFhYKQkJKz0gbGVkcy1peHA0eHgtZ3Bpby5vCiBvYmotJChDT05GSUdfTEVEU19UT1NBKQkJCSs9IGxlZHMtdG9zYS5vCiBvYmotJChDT05GSUdfTEVEU19TM0MyNFhYKQkJKz0gbGVkcy1zM2MyNHh4Lm8KK29iai0kKENPTkZJR19MRURTX0FNU19ERUxUQSkJCSs9IGxlZHMtYW1zLWRlbHRhLm8KIAogIyBMRUQgVHJpZ2dlcnMKIG9iai0kKENPTkZJR19MRURTX1RSSUdHRVJfVElNRVIpCSs9IGxlZHRyaWctdGltZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1hbXMtZGVsdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWYwNjExCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBMRURzIGRyaXZlciBmb3IgQW1zdHJhZCBEZWx0YSAoRTMpCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEpvbmF0aGFuIE1jRG93ZWxsIDxub29kbGVzQGVhcnRoLmxpPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9sZWRzLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQtYW1zLWRlbHRhLmg+CisKKy8qCisgKiBPdXIgY29udGV4dAorICovCitzdHJ1Y3QgYW1zX2RlbHRhX2xlZCB7CisJc3RydWN0IGxlZF9jbGFzc2RldgljZGV2OworCXU4CQkJYml0bWFzazsKK307CisKK3N0YXRpYyB2b2lkIGFtc19kZWx0YV9sZWRfc2V0KHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZF9jZGV2LAorCQllbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKQoreworCXN0cnVjdCBhbXNfZGVsdGFfbGVkICpsZWRfZGV2ID0KKwkJY29udGFpbmVyX29mKGxlZF9jZGV2LCBzdHJ1Y3QgYW1zX2RlbHRhX2xlZCwgY2Rldik7CisKKwlpZiAodmFsdWUpCisJCWFtc19kZWx0YV9sYXRjaDFfd3JpdGUobGVkX2Rldi0+Yml0bWFzaywgbGVkX2Rldi0+Yml0bWFzayk7CisJZWxzZQorCQlhbXNfZGVsdGFfbGF0Y2gxX3dyaXRlKGxlZF9kZXYtPmJpdG1hc2ssIDApOworfQorCitzdGF0aWMgc3RydWN0IGFtc19kZWx0YV9sZWQgYW1zX2RlbHRhX2xlZHNbXSA9IHsKKwl7CisJCS5jZGV2CQk9IHsKKwkJCS5uYW1lCQk9ICJhbXMtZGVsdGE6Y2FtZXJhIiwKKwkJCS5icmlnaHRuZXNzX3NldCA9IGFtc19kZWx0YV9sZWRfc2V0LAorCQl9LAorCQkuYml0bWFzawk9IEFNU19ERUxUQV9MQVRDSDFfTEVEX0NBTUVSQSwKKwl9LAorCXsKKwkJLmNkZXYJCT0geworCQkJLm5hbWUJCT0gImFtcy1kZWx0YTphZHZlcnQiLAorCQkJLmJyaWdodG5lc3Nfc2V0ID0gYW1zX2RlbHRhX2xlZF9zZXQsCisJCX0sCisJCS5iaXRtYXNrCT0gQU1TX0RFTFRBX0xBVENIMV9MRURfQURWRVJULAorCX0sCisJeworCQkuY2RldgkJPSB7CisJCQkubmFtZQkJPSAiYW1zLWRlbHRhOmVtYWlsIiwKKwkJCS5icmlnaHRuZXNzX3NldCA9IGFtc19kZWx0YV9sZWRfc2V0LAorCQl9LAorCQkuYml0bWFzawk9IEFNU19ERUxUQV9MQVRDSDFfTEVEX0VNQUlMLAorCX0sCisJeworCQkuY2RldgkJPSB7CisJCQkubmFtZQkJPSAiYW1zLWRlbHRhOmhhbmRzZnJlZSIsCisJCQkuYnJpZ2h0bmVzc19zZXQgPSBhbXNfZGVsdGFfbGVkX3NldCwKKwkJfSwKKwkJLmJpdG1hc2sJPSBBTVNfREVMVEFfTEFUQ0gxX0xFRF9IQU5EU0ZSRUUsCisJfSwKKwl7CisJCS5jZGV2CQk9IHsKKwkJCS5uYW1lCQk9ICJhbXMtZGVsdGE6dm9pY2VtYWlsIiwKKwkJCS5icmlnaHRuZXNzX3NldCA9IGFtc19kZWx0YV9sZWRfc2V0LAorCQl9LAorCQkuYml0bWFzawk9IEFNU19ERUxUQV9MQVRDSDFfTEVEX1ZPSUNFTUFJTCwKKwl9LAorCXsKKwkJLmNkZXYJCT0geworCQkJLm5hbWUJCT0gImFtcy1kZWx0YTp2b2ljZSIsCisJCQkuYnJpZ2h0bmVzc19zZXQgPSBhbXNfZGVsdGFfbGVkX3NldCwKKwkJfSwKKwkJLmJpdG1hc2sJPSBBTVNfREVMVEFfTEFUQ0gxX0xFRF9WT0lDRSwKKwl9LAorfTsKKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBhbXNfZGVsdGFfbGVkX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2LAorCQlwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhbXNfZGVsdGFfbGVkcyk7IGkrKykKKwkJbGVkX2NsYXNzZGV2X3N1c3BlbmQoJmFtc19kZWx0YV9sZWRzW2ldLmNkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1zX2RlbHRhX2xlZF9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYW1zX2RlbHRhX2xlZHMpOyBpKyspCisJCWxlZF9jbGFzc2Rldl9yZXN1bWUoJmFtc19kZWx0YV9sZWRzW2ldLmNkZXYpOworCisJcmV0dXJuIDA7Cit9CisjZWxzZQorI2RlZmluZSBhbXNfZGVsdGFfbGVkX3N1c3BlbmQgTlVMTAorI2RlZmluZSBhbXNfZGVsdGFfbGVkX3Jlc3VtZSBOVUxMCisjZW5kaWYKKworc3RhdGljIGludCBhbXNfZGVsdGFfbGVkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJaW50IGk7CisJaW50IHJldDsKKworCWZvciAoaSA9IHJldCA9IDA7IHJldCA+PSAwICYmIGkgPCBBUlJBWV9TSVpFKGFtc19kZWx0YV9sZWRzKTsgaSsrKSB7CisJCXJldCA9IGxlZF9jbGFzc2Rldl9yZWdpc3RlcigmcGRldi0+ZGV2LAorCQkJCSZhbXNfZGVsdGFfbGVkc1tpXS5jZGV2KTsKKwl9CisKKwlpZiAocmV0IDwgMCAmJiBpID4gMSkgeworCQlmb3IgKGkgPSBpIC0gMjsgaSA+PSAwOyBpLS0pCisJCQlsZWRfY2xhc3NkZXZfdW5yZWdpc3RlcigmYW1zX2RlbHRhX2xlZHNbaV0uY2Rldik7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhbXNfZGVsdGFfbGVkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWludCBpOworCisJZm9yIChpID0gQVJSQVlfU0laRShhbXNfZGVsdGFfbGVkcykgLSAxOyBpID49IDA7IGktLSkKKwkJbGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIoJmFtc19kZWx0YV9sZWRzW2ldLmNkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFtc19kZWx0YV9sZWRfZHJpdmVyID0geworCS5wcm9iZQkJPSBhbXNfZGVsdGFfbGVkX3Byb2JlLAorCS5yZW1vdmUJCT0gYW1zX2RlbHRhX2xlZF9yZW1vdmUsCisJLnN1c3BlbmQJPSBhbXNfZGVsdGFfbGVkX3N1c3BlbmQsCisJLnJlc3VtZQkJPSBhbXNfZGVsdGFfbGVkX3Jlc3VtZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUgPSAiYW1zLWRlbHRhLWxlZCIsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGFtc19kZWx0YV9sZWRfaW5pdCh2b2lkKQoreworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmFtc19kZWx0YV9sZWRfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGFtc19kZWx0YV9sZWRfZXhpdCh2b2lkKQoreworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmYW1zX2RlbHRhX2xlZF9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChhbXNfZGVsdGFfbGVkX2luaXQpOworbW9kdWxlX2V4aXQoYW1zX2RlbHRhX2xlZF9leGl0KTsKKworTU9EVUxFX0FVVEhPUigiSm9uYXRoYW4gTWNEb3dlbGwgPG5vb2RsZXNAZWFydGgubGk+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkFtc3RyYWQgRGVsdGEgTEVEIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtbG9jb21vLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1sb2NvbW8uYwppbmRleCA3NDlhODZjLi44NDE5ZTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1sb2NvbW8uYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1sb2NvbW8uYwpAQCAtNDUsMTEgKzQ1LDEzIEBACiAKIHN0YXRpYyBzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxvY29tb19sZWQwID0gewogCS5uYW1lCQkJPSAibG9jb21vOmFtYmVyIiwKKwkuZGVmYXVsdF90cmlnZ2VyCT0gInNoYXJwc2wtY2hhcmdlIiwKIAkuYnJpZ2h0bmVzc19zZXQJCT0gbG9jb21vbGVkX2JyaWdodG5lc3Nfc2V0MCwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgbGVkX2NsYXNzZGV2IGxvY29tb19sZWQxID0gewogCS5uYW1lCQkJPSAibG9jb21vOmdyZWVuIiwKKwkuZGVmYXVsdF90cmlnZ2VyCT0gIm5hbmQtZGlzayIsCiAJLmJyaWdodG5lc3Nfc2V0CQk9IGxvY29tb2xlZF9icmlnaHRuZXNzX3NldDEsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC9LY29uZmlnIGIvZHJpdmVycy9tYWNpbnRvc2gvS2NvbmZpZwppbmRleCAxMmFkNDYyLi5jY2Y1ZGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL0tjb25maWcKQEAgLTE3MSw2ICsxNzEsNyBAQAogCiBjb25maWcgV0lOREZBUk0KIAl0cmlzdGF0ZSAiTmV3IFBvd2VyTWFjIHRoZXJtYWwgY29udHJvbCBpbmZyYXN0cnVjdHVyZSIKKwlkZXBlbmRzIG9uIFBQQwogCiBjb25maWcgV0lOREZBUk1fUE04MQogCXRyaXN0YXRlICJTdXBwb3J0IGZvciB0aGVybWFsIG1hbmFnZW1lbnQgb24gaU1hYyBHNSIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUuYyBiL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUuYwppbmRleCAwYjVmZjU1Li5jNjNkNGU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC92aWEtcG11LmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdmlhLXBtdS5jCkBAIC0yMjY4LDcgKzIyNjgsNyBAQAogIAkJX3NldF9MMkNSKHNhdmVfbDJjcik7CiAJCiAJLyogUmVzdG9yZSB1c2VybGFuZCBNTVUgY29udGV4dCAqLwotCXNldF9jb250ZXh0KGN1cnJlbnQtPmFjdGl2ZV9tbS0+Y29udGV4dCwgY3VycmVudC0+YWN0aXZlX21tLT5wZ2QpOworCXNldF9jb250ZXh0KGN1cnJlbnQtPmFjdGl2ZV9tbS0+Y29udGV4dC5pZCwgY3VycmVudC0+YWN0aXZlX21tLT5wZ2QpOwogCiAJLyogUG93ZXIgdGhpbmdzIHVwICovCiAJcG11X3VubG9jaygpOwpAQCAtMjM2Niw3ICsyMzY2LDcgQEAKICAJCV9zZXRfTDNDUihzYXZlX2wzY3IpOwogCQogCS8qIFJlc3RvcmUgdXNlcmxhbmQgTU1VIGNvbnRleHQgKi8KLQlzZXRfY29udGV4dChjdXJyZW50LT5hY3RpdmVfbW0tPmNvbnRleHQsIGN1cnJlbnQtPmFjdGl2ZV9tbS0+cGdkKTsKKwlzZXRfY29udGV4dChjdXJyZW50LT5hY3RpdmVfbW0tPmNvbnRleHQuaWQsIGN1cnJlbnQtPmFjdGl2ZV9tbS0+cGdkKTsKIAogCS8qIFRlbGwgUE1VIHdlIGFyZSByZWFkeSAqLwogCXBtdV91bmxvY2soKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDZhbGdvcy5jIGIvZHJpdmVycy9tZC9yYWlkNmFsZ29zLmMKaW5kZXggNTFjNjNjMC4uOTI2NTc2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkNmFsZ29zLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkNmFsZ29zLmMKQEAgLTEzOSwxNSArMTM5LDE0IEBACiAJCX0KIAl9CiAKLQlpZiAoIGJlc3QgKQorCWlmIChiZXN0KSB7CiAJCXByaW50aygicmFpZDY6IHVzaW5nIGFsZ29yaXRobSAlcyAoJWxkIE1CL3MpXG4iLAogCQkgICAgICAgYmVzdC0+bmFtZSwKIAkJICAgICAgIChiZXN0cGVyZipIWikgPj4gKDIwLTE2K1JBSUQ2X1RJTUVfSklGRklFU19MRzIpKTsKLQllbHNlCisJCXJhaWQ2X2NhbGwgPSAqYmVzdDsKKwl9IGVsc2UKIAkJcHJpbnRrKCJyYWlkNjogWWlrZXMhICBObyBhbGdvcml0aG0gZm91bmQhXG4iKTsKIAotCXJhaWQ2X2NhbGwgPSAqYmVzdDsKLQogCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpc3luZHJvbWVzLCAxKTsKIAogCXJldHVybiBiZXN0ID8gMCA6IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL2tvbmljYXdjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL2tvbmljYXdjLmMKaW5kZXggYzExZjVkNC4uNmYzMWVjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby9rb25pY2F3Yy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlkZW8va29uaWNhd2MuYwpAQCAtMTUsOCArMTUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogCiAjaW5jbHVkZSAidXNidmlkZW8uaCIKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwppbmRleCBhMzAwODQwLi4xMmRkOGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwpAQCAtNjMsOSArNjMsNiBAQAogI2lmZGVmIENPTkZJR19NVFJSCiAjaW5jbHVkZSA8YXNtL210cnIuaD4KICNlbmRpZgotI2lmZGVmIF9fc3BhcmNfXwotI2luY2x1ZGUgPGFzbS9pcnEuaD4JCQkvKiBuZWVkZWQgZm9yIF9faXJxX2l0b2EoKSBwcm90byAqLwotI2VuZGlmCiAKICNpbmNsdWRlICJtcHRiYXNlLmgiCiAKQEAgLTExODgsNyArMTE4NSw2IEBACiAJaW9jLT5wY2lkZXYgPSBwZGV2OwogCWlvYy0+ZGlhZ1BlbmRpbmcgPSAwOwogCXNwaW5fbG9ja19pbml0KCZpb2MtPmRpYWdMb2NrKTsKLQlzcGluX2xvY2tfaW5pdCgmaW9jLT5mY19yZXNjYW5fd29ya19sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmaW9jLT5pbml0aWFsaXppbmdfaGJhX2xvY2spOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgbG9nZ2luZy4KQEAgLTEzODYsMzkgKzEzODIsNiBAQAogCS8qIFNldCBsb29rdXAgcHRyLiAqLwogCWxpc3RfYWRkX3RhaWwoJmlvYy0+bGlzdCwgJmlvY19saXN0KTsKIAotCWlvYy0+cGNpX2lycSA9IC0xOwotCWlmIChwZGV2LT5pcnEpIHsKLQkJaWYgKG1wdF9tc2lfZW5hYmxlICYmICFwY2lfZW5hYmxlX21zaShwZGV2KSkKLQkJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJQQ0ktTVNJIGVuYWJsZWRcbiIsIGlvYy0+bmFtZSk7Ci0KLQkJciA9IHJlcXVlc3RfaXJxKHBkZXYtPmlycSwgbXB0X2ludGVycnVwdCwgU0FfU0hJUlEsIGlvYy0+bmFtZSwgaW9jKTsKLQotCQlpZiAociA8IDApIHsKLSNpZm5kZWYgX19zcGFyY19fCi0JCQlwcmludGsoTVlJT0Nfc19FUlJfRk1UICJVbmFibGUgdG8gYWxsb2NhdGUgaW50ZXJydXB0ICVkIVxuIiwKLQkJCQkJaW9jLT5uYW1lLCBwZGV2LT5pcnEpOwotI2Vsc2UKLQkJCXByaW50ayhNWUlPQ19zX0VSUl9GTVQgIlVuYWJsZSB0byBhbGxvY2F0ZSBpbnRlcnJ1cHQgJXMhXG4iLAotCQkJCQlpb2MtPm5hbWUsIF9faXJxX2l0b2EocGRldi0+aXJxKSk7Ci0jZW5kaWYKLQkJCWxpc3RfZGVsKCZpb2MtPmxpc3QpOwotCQkJaW91bm1hcChtZW0pOwotCQkJa2ZyZWUoaW9jKTsKLQkJCXJldHVybiAtRUJVU1k7Ci0JCX0KLQotCQlpb2MtPnBjaV9pcnEgPSBwZGV2LT5pcnE7Ci0KLQkJcGNpX3NldF9tYXN0ZXIocGRldik7CQkJLyogPz8gKi8KLQkJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGlvYyk7Ci0KLSNpZm5kZWYgX19zcGFyY19fCi0JCWRwcmludGsoKEtFUk5fSU5GTyBNWU5BTSAiOiAlcyBpbnN0YWxsZWQgYXQgaW50ZXJydXB0ICVkXG4iLCBpb2MtPm5hbWUsIHBkZXYtPmlycSkpOwotI2Vsc2UKLQkJZHByaW50aygoS0VSTl9JTkZPIE1ZTkFNICI6ICVzIGluc3RhbGxlZCBhdCBpbnRlcnJ1cHQgJXNcbiIsIGlvYy0+bmFtZSwgX19pcnFfaXRvYShwZGV2LT5pcnEpKSk7Ci0jZW5kaWYKLQl9Ci0KIAkvKiBDaGVjayBmb3IgImJvdW5kIHBvcnRzIiAoOTI5LCA5MjlYLCAxMDMwLCAxMDM1KSB0byByZWR1Y2UgcmVkdW5kYW50IHJlc2V0cy4KIAkgKi8KIAltcHRfZGV0ZWN0X2JvdW5kX3BvcnRzKGlvYywgcGRldik7CkBAIC0xNDI4LDExICsxMzkxLDcgQEAKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBNWU5BTQogCQkgICI6IFdBUk5JTkcgLSAlcyBkaWQgbm90IGluaXRpYWxpemUgcHJvcGVybHkhICglZClcbiIsCiAJCSAgaW9jLT5uYW1lLCByKTsKLQogCQlsaXN0X2RlbCgmaW9jLT5saXN0KTsKLQkJZnJlZV9pcnEoaW9jLT5wY2lfaXJxLCBpb2MpOwotCQlpZiAobXB0X21zaV9lbmFibGUpCi0JCQlwY2lfZGlzYWJsZV9tc2kocGRldik7CiAJCWlmIChpb2MtPmFsdF9pb2MpCiAJCQlpb2MtPmFsdF9pb2MtPmFsdF9pb2MgPSBOVUxMOwogCQlpb3VubWFwKG1lbSk7CkBAIC0xNjUxLDYgKzE2MTAsNyBAQAogCWludAkgaGFuZGxlcnM7CiAJaW50CSByZXQgPSAwOwogCWludAkgcmVzZXRfYWx0X2lvY19hY3RpdmUgPSAwOworCWludAkgaXJxX2FsbG9jYXRlZCA9IDA7CiAKIAlwcmludGsoS0VSTl9JTkZPIE1ZTkFNICI6IEluaXRpYXRpbmcgJXMgJXNcbiIsCiAJCQlpb2MtPm5hbWUsIHJlYXNvbj09TVBUX0hPU1RFVkVOVF9JT0NfQlJJTkdVUCA/ICJicmluZ3VwIiA6ICJyZWNvdmVyeSIpOwpAQCAtMTczNCw2ICsxNjk0LDM2IEBACiAJCX0KIAl9CiAKKwkvKgorCSAqIERldmljZSBpcyByZXNldCBub3cuIEl0IG11c3QgaGF2ZSBkZS1hc3NlcnRlZCB0aGUgaW50ZXJydXB0IGxpbmUKKwkgKiAoaWYgaXQgd2FzIGFzc2VydGVkKSBhbmQgaXQgc2hvdWxkIGJlIHNhZmUgdG8gcmVnaXN0ZXIgZm9yIHRoZQorCSAqIGludGVycnVwdCBub3cuCisJICovCisJaWYgKChyZXQgPT0gMCkgJiYgKHJlYXNvbiA9PSBNUFRfSE9TVEVWRU5UX0lPQ19CUklOR1VQKSkgeworCQlpb2MtPnBjaV9pcnEgPSAtMTsKKwkJaWYgKGlvYy0+cGNpZGV2LT5pcnEpIHsKKwkJCWlmIChtcHRfbXNpX2VuYWJsZSAmJiAhcGNpX2VuYWJsZV9tc2koaW9jLT5wY2lkZXYpKQorCQkJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJQQ0ktTVNJIGVuYWJsZWRcbiIsCisJCQkJCWlvYy0+bmFtZSk7CisJCQlyYyA9IHJlcXVlc3RfaXJxKGlvYy0+cGNpZGV2LT5pcnEsIG1wdF9pbnRlcnJ1cHQsCisJCQkJCVNBX1NISVJRLCBpb2MtPm5hbWUsIGlvYyk7CisJCQlpZiAocmMgPCAwKSB7CisJCQkJcHJpbnRrKE1ZSU9DX3NfRVJSX0ZNVCAiVW5hYmxlIHRvIGFsbG9jYXRlICIKKwkJCQkJImludGVycnVwdCAlZCFcbiIsIGlvYy0+bmFtZSwKKwkJCQkJaW9jLT5wY2lkZXYtPmlycSk7CisJCQkJaWYgKG1wdF9tc2lfZW5hYmxlKQorCQkJCQlwY2lfZGlzYWJsZV9tc2koaW9jLT5wY2lkZXYpOworCQkJCXJldHVybiAtRUJVU1k7CisJCQl9CisJCQlpcnFfYWxsb2NhdGVkID0gMTsKKwkJCWlvYy0+cGNpX2lycSA9IGlvYy0+cGNpZGV2LT5pcnE7CisJCQlwY2lfc2V0X21hc3Rlcihpb2MtPnBjaWRldik7CQkvKiA/PyAqLworCQkJcGNpX3NldF9kcnZkYXRhKGlvYy0+cGNpZGV2LCBpb2MpOworCQkJZHByaW50aygoS0VSTl9JTkZPIE1ZTkFNICI6ICVzIGluc3RhbGxlZCBhdCBpbnRlcnJ1cHQgIgorCQkJCSIlZFxuIiwgaW9jLT5uYW1lLCBpb2MtPnBjaWRldi0+aXJxKSk7CisJCX0KKwl9CisKIAkvKiBQcmltZSByZXBseSAmIHJlcXVlc3QgcXVldWVzIQogCSAqIChtdWNobyBhbGxvYydzKSBNdXN0IGJlIGRvbmUgcHJpb3IgdG8KIAkgKiBpbml0IGFzIHVwcGVyIGFkZHJlc3NlcyBhcmUgbmVlZGVkIGZvciBpbml0LgpAQCAtMTgzMyw3ICsxODIzLDcgQEAKIAkJCQlyZXQgPSBtcHRiYXNlX3Nhc19wZXJzaXN0X29wZXJhdGlvbihpb2MsCiAJCQkJICAgIE1QSV9TQVNfT1BfQ0xFQVJfTk9UX1BSRVNFTlQpOwogCQkJCWlmKHJldCAhPSAwKQotCQkJCQlyZXR1cm4gLTE7CisJCQkJCWdvdG8gb3V0OwogCQkJfQogCiAJCQkvKiBGaW5kIElNIHZvbHVtZXMKQEAgLTE4NDEsMTQgKzE4MzEsNiBAQAogCQkJbXB0X2ZpbmRJbVZvbHVtZXMoaW9jKTsKIAogCQl9IGVsc2UgaWYgKGlvYy0+YnVzX3R5cGUgPT0gRkMpIHsKLQkJCS8qCi0JCQkgKiAgUHJlLWZldGNoIEZDIHBvcnQgV1dOIGFuZCBzdHVmZi4uLgotCQkJICogIChGQ1BvcnRQYWdlMF90IHN0dWZmKQotCQkJICovCi0JCQlmb3IgKGlpPTA7IGlpIDwgaW9jLT5mYWN0cy5OdW1iZXJPZlBvcnRzOyBpaSsrKSB7Ci0JCQkJKHZvaWQpIG1wdGJhc2VfR2V0RmNQb3J0UGFnZTAoaW9jLCBpaSk7Ci0JCQl9Ci0KIAkJCWlmICgoaW9jLT5wZmFjdHNbMF0uUHJvdG9jb2xGbGFncyAmIE1QSV9QT1JURkFDVFNfUFJPVE9DT0xfTEFOKSAmJgogCQkJICAgIChpb2MtPmxhbl9jbmZnX3BhZ2UwLkhlYWRlci5QYWdlTGVuZ3RoID09IDApKSB7CiAJCQkJLyoKQEAgLTE5MTQsNiArMTg5NiwxMiBAQAogCQkvKiBGSVhNRT8gIEV4YW1pbmUgcmVzdWx0cyBoZXJlPyAqLwogCX0KIAorb3V0OgorCWlmICgocmV0ICE9IDApICYmIGlycV9hbGxvY2F0ZWQpIHsKKwkJZnJlZV9pcnEoaW9jLT5wY2lfaXJxLCBpb2MpOworCQlpZiAobXB0X21zaV9lbmFibGUpCisJCQlwY2lfZGlzYWJsZV9tc2koaW9jLT5wY2lkZXYpOworCX0KIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMjg4LDcgKzIyNzYsNyBAQAogCQl9CiAKIAkJaWYgKHNsZWVwRmxhZyA9PSBDQU5fU0xFRVApIHsKLQkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDEpOworCQkJbXNsZWVwKDEpOwogCQl9IGVsc2UgewogCQkJbWRlbGF5ICgxKTsJLyogMSBtc2VjIGRlbGF5ICovCiAJCX0KQEAgLTI2NzYsNyArMjY2NCw3IEBACiAJc3RhdGUgPSBtcHRfR2V0SW9jU3RhdGUoaW9jLCAxKTsKIAl3aGlsZSAoc3RhdGUgIT0gTVBJX0lPQ19TVEFURV9PUEVSQVRJT05BTCAmJiAtLWNudGRuKSB7CiAJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSgxKTsKKwkJCW1zbGVlcCgxKTsKIAkJfSBlbHNlIHsKIAkJCW1kZWxheSgxKTsKIAkJfQpAQCAtMjkyOCw3ICsyOTE2LDcgQEAKIAogCS8qIHdhaXQgMSBtc2VjICovCiAJaWYgKHNsZWVwRmxhZyA9PSBDQU5fU0xFRVApIHsKLQkJbXNsZWVwX2ludGVycnVwdGlibGUoMSk7CisJCW1zbGVlcCgxKTsKIAl9IGVsc2UgewogCQltZGVsYXkgKDEpOwogCX0KQEAgLTI5NDUsNyArMjkzMyw3IEBACiAJCX0KIAkJLyogd2FpdCAuMSBzZWMgKi8KIAkJaWYgKHNsZWVwRmxhZyA9PSBDQU5fU0xFRVApIHsKLQkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlICgxMDApOworCQkJbXNsZWVwICgxMDApOwogCQl9IGVsc2UgewogCQkJbWRlbGF5ICgxMDApOwogCQl9CkBAIC0zMDM1LDcgKzMwMjMsNyBAQAogCiAJCS8qIHdhaXQgMSBtc2VjICovCiAJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSAoMSk7CisJCQltc2xlZXAgKDEpOwogCQl9IGVsc2UgewogCQkJbWRlbGF5ICgxKTsKIAkJfQpAQCAtMzA4Myw3ICszMDcxLDcgQEAKIAkJCXJldHVybiAwOwogCQl9CiAJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSAoMTApOworCQkJbXNsZWVwICgxMCk7CiAJCX0gZWxzZSB7CiAJCQltZGVsYXkgKDEwKTsKIAkJfQpAQCAtMzEzNCw3ICszMTIyLDcgQEAKIAkJU2VuZElvY1Jlc2V0KGlvYywgTVBJX0ZVTkNUSU9OX0lPQ19NRVNTQUdFX1VOSVRfUkVTRVQsIHNsZWVwRmxhZyk7CiAKIAkJaWYgKHNsZWVwRmxhZyA9PSBDQU5fU0xFRVApIHsKLQkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlICgxMDAwKTsKKwkJCW1zbGVlcCAoMTAwMCk7CiAJCX0gZWxzZSB7CiAJCQltZGVsYXkgKDEwMDApOwogCQl9CkBAIC0zMTU2LDcgKzMxNDQsNyBAQAogCQkJcmV0dXJuIGhhcmRfcmVzZXRfZG9uZTsKIAkJfQogCQlpZiAoc2xlZXBGbGFnID09IENBTl9TTEVFUCkgewotCQkJbXNsZWVwX2ludGVycnVwdGlibGUgKDEwKTsKKwkJCW1zbGVlcCAoMTApOwogCQl9IGVsc2UgewogCQkJbWRlbGF5ICgxMCk7CiAJCX0KQEAgLTMyMjcsNyArMzIxNSw3IEBACiAKIAkJCS8qIHdhaXQgMTAwIG1zZWMgKi8KIAkJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQkJbXNsZWVwX2ludGVycnVwdGlibGUgKDEwMCk7CisJCQkJbXNsZWVwICgxMDApOwogCQkJfSBlbHNlIHsKIAkJCQltZGVsYXkgKDEwMCk7CiAJCQl9CkBAIC0zMzA2LDcgKzMyOTQsNyBAQAogCiAJCQkJLyogd2FpdCAxIHNlYyAqLwogCQkJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlICgxMDAwKTsKKwkJCQkJbXNsZWVwICgxMDAwKTsKIAkJCQl9IGVsc2UgewogCQkJCQltZGVsYXkgKDEwMDApOwogCQkJCX0KQEAgLTMzMzQsNyArMzMyMiw3IEBACiAKIAkJCQkvKiB3YWl0IDEgc2VjICovCiAJCQkJaWYgKHNsZWVwRmxhZyA9PSBDQU5fU0xFRVApIHsKLQkJCQkJbXNsZWVwX2ludGVycnVwdGlibGUgKDEwMDApOworCQkJCQltc2xlZXAgKDEwMDApOwogCQkJCX0gZWxzZSB7CiAJCQkJCW1kZWxheSAoMTAwMCk7CiAJCQkJfQpAQCAtMzM2OCw3ICszMzU2LDcgQEAKIAogCQkvKiB3YWl0IDEwMCBtc2VjICovCiAJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSAoMTAwKTsKKwkJCW1zbGVlcCAoMTAwKTsKIAkJfSBlbHNlIHsKIAkJCW1kZWxheSAoMTAwKTsKIAkJfQpAQCAtMzQ2Miw3ICszNDUwLDcgQEAKIAkJfQogCiAJCWlmIChzbGVlcEZsYWcgPT0gQ0FOX1NMRUVQKSB7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSgxKTsKKwkJCW1zbGVlcCgxKTsKIAkJfSBlbHNlIHsKIAkJCW1kZWxheSAoMSk7CS8qIDEgbXNlYyBkZWxheSAqLwogCQl9CkBAIC0zOTAyLDcgKzM4OTAsNyBAQAogCQkJaW50c3RhdCA9IENISVBSRUdfUkVBRDMyKCZpb2MtPmNoaXAtPkludFN0YXR1cyk7CiAJCQlpZiAoISAoaW50c3RhdCAmIE1QSV9ISVNfSU9QX0RPT1JCRUxMX1NUQVRVUykpCiAJCQkJYnJlYWs7Ci0JCQltc2xlZXBfaW50ZXJydXB0aWJsZSAoMSk7CisJCQltc2xlZXAgKDEpOwogCQkJY291bnQrKzsKIAkJfQogCX0gZWxzZSB7CkBAIC0zOTUxLDcgKzM5MzksNyBAQAogCQkJaW50c3RhdCA9IENISVBSRUdfUkVBRDMyKCZpb2MtPmNoaXAtPkludFN0YXR1cyk7CiAJCQlpZiAoaW50c3RhdCAmIE1QSV9ISVNfRE9PUkJFTExfSU5URVJSVVBUKQogCQkJCWJyZWFrOwotCQkJbXNsZWVwX2ludGVycnVwdGlibGUoMSk7CisJCQltc2xlZXAoMSk7CiAJCQljb3VudCsrOwogCQl9CiAJfSBlbHNlIHsKQEAgLTQxNzQsMTA4ICs0MTYyLDYgQEAKIAogLyo9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0qLwogLyoKLSAqCW1wdGJhc2VfR2V0RmNQb3J0UGFnZTAgLSBGZXRjaCBGQ1BvcnQgY29uZmlnIFBhZ2UwLgotICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwb3J0bnVtOiBJT0MgUG9ydCBudW1iZXIKLSAqCi0gKglSZXR1cm46IDAgZm9yIHN1Y2Nlc3MKLSAqCS1FTk9NRU0gaWYgbm8gbWVtb3J5IGF2YWlsYWJsZQotICoJCS1FUEVSTSBpZiBub3QgYWxsb3dlZCBkdWUgdG8gSVNSIGNvbnRleHQKLSAqCQktRUFHQUlOIGlmIG5vIG1zZyBmcmFtZXMgY3VycmVudGx5IGF2YWlsYWJsZQotICoJCS1FRkFVTFQgZm9yIG5vbi1zdWNjZXNzZnVsIHJlcGx5IG9yIG5vIHJlcGx5ICh0aW1lb3V0KQotICovCi1pbnQKLW1wdGJhc2VfR2V0RmNQb3J0UGFnZTAoTVBUX0FEQVBURVIgKmlvYywgaW50IHBvcnRudW0pCi17Ci0JQ29uZmlnUGFnZUhlYWRlcl90CSBoZHI7Ci0JQ09ORklHUEFSTVMJCSBjZmc7Ci0JRkNQb3J0UGFnZTBfdAkJKnBwYWdlMF9hbGxvYzsKLQlGQ1BvcnRQYWdlMF90CQkqcHAwZGVzdDsKLQlkbWFfYWRkcl90CQkgcGFnZTBfZG1hOwotCWludAkJCSBkYXRhX3N6OwotCWludAkJCSBjb3B5X3N6OwotCWludAkJCSByYzsKLQlpbnQJCQkgY291bnQgPSA0MDA7Ci0KLQotCS8qIEdldCBGQ1BvcnQgUGFnZSAwIGhlYWRlciAqLwotCWhkci5QYWdlVmVyc2lvbiA9IDA7Ci0JaGRyLlBhZ2VMZW5ndGggPSAwOwotCWhkci5QYWdlTnVtYmVyID0gMDsKLQloZHIuUGFnZVR5cGUgPSBNUElfQ09ORklHX1BBR0VUWVBFX0ZDX1BPUlQ7Ci0JY2ZnLmNmZ2hkci5oZHIgPSAmaGRyOwotCWNmZy5waHlzQWRkciA9IC0xOwotCWNmZy5hY3Rpb24gPSBNUElfQ09ORklHX0FDVElPTl9QQUdFX0hFQURFUjsKLQljZmcuZGlyID0gMDsKLQljZmcucGFnZUFkZHIgPSBwb3J0bnVtOwotCWNmZy50aW1lb3V0ID0gMDsKLQotCWlmICgocmMgPSBtcHRfY29uZmlnKGlvYywgJmNmZykpICE9IDApCi0JCXJldHVybiByYzsKLQotCWlmIChoZHIuUGFnZUxlbmd0aCA9PSAwKQotCQlyZXR1cm4gMDsKLQotCWRhdGFfc3ogPSBoZHIuUGFnZUxlbmd0aCAqIDQ7Ci0JcmMgPSAtRU5PTUVNOwotCXBwYWdlMF9hbGxvYyA9IChGQ1BvcnRQYWdlMF90ICopIHBjaV9hbGxvY19jb25zaXN0ZW50KGlvYy0+cGNpZGV2LCBkYXRhX3N6LCAmcGFnZTBfZG1hKTsKLQlpZiAocHBhZ2UwX2FsbG9jKSB7Ci0KLSB0cnlfYWdhaW46Ci0JCW1lbXNldCgodTggKilwcGFnZTBfYWxsb2MsIDAsIGRhdGFfc3opOwotCQljZmcucGh5c0FkZHIgPSBwYWdlMF9kbWE7Ci0JCWNmZy5hY3Rpb24gPSBNUElfQ09ORklHX0FDVElPTl9QQUdFX1JFQURfQ1VSUkVOVDsKLQotCQlpZiAoKHJjID0gbXB0X2NvbmZpZyhpb2MsICZjZmcpKSA9PSAwKSB7Ci0JCQkvKiBzYXZlIHRoZSBkYXRhICovCi0JCQlwcDBkZXN0ID0gJmlvYy0+ZmNfcG9ydF9wYWdlMFtwb3J0bnVtXTsKLQkJCWNvcHlfc3ogPSBtaW5fdChpbnQsIHNpemVvZihGQ1BvcnRQYWdlMF90KSwgZGF0YV9zeik7Ci0JCQltZW1jcHkocHAwZGVzdCwgcHBhZ2UwX2FsbG9jLCBjb3B5X3N6KTsKLQotCQkJLyoKLQkJCSAqCU5vcm1hbGl6ZSBlbmRpYW5uZXNzIG9mIHN0cnVjdHVyZSBkYXRhLAotCQkJICoJYnkgYnl0ZS1zd2FwcGluZyBhbGwgPiAxIGJ5dGUgZmllbGRzIQotCQkJICovCi0JCQlwcDBkZXN0LT5GbGFncyA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPkZsYWdzKTsKLQkJCXBwMGRlc3QtPlBvcnRJZGVudGlmaWVyID0gbGUzMl90b19jcHUocHAwZGVzdC0+UG9ydElkZW50aWZpZXIpOwotCQkJcHAwZGVzdC0+V1dOTi5Mb3cgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5XV05OLkxvdyk7Ci0JCQlwcDBkZXN0LT5XV05OLkhpZ2ggPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5XV05OLkhpZ2gpOwotCQkJcHAwZGVzdC0+V1dQTi5Mb3cgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5XV1BOLkxvdyk7Ci0JCQlwcDBkZXN0LT5XV1BOLkhpZ2ggPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5XV1BOLkhpZ2gpOwotCQkJcHAwZGVzdC0+U3VwcG9ydGVkU2VydmljZUNsYXNzID0gbGUzMl90b19jcHUocHAwZGVzdC0+U3VwcG9ydGVkU2VydmljZUNsYXNzKTsKLQkJCXBwMGRlc3QtPlN1cHBvcnRlZFNwZWVkcyA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPlN1cHBvcnRlZFNwZWVkcyk7Ci0JCQlwcDBkZXN0LT5DdXJyZW50U3BlZWQgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5DdXJyZW50U3BlZWQpOwotCQkJcHAwZGVzdC0+TWF4RnJhbWVTaXplID0gbGUzMl90b19jcHUocHAwZGVzdC0+TWF4RnJhbWVTaXplKTsKLQkJCXBwMGRlc3QtPkZhYnJpY1dXTk4uTG93ID0gbGUzMl90b19jcHUocHAwZGVzdC0+RmFicmljV1dOTi5Mb3cpOwotCQkJcHAwZGVzdC0+RmFicmljV1dOTi5IaWdoID0gbGUzMl90b19jcHUocHAwZGVzdC0+RmFicmljV1dOTi5IaWdoKTsKLQkJCXBwMGRlc3QtPkZhYnJpY1dXUE4uTG93ID0gbGUzMl90b19jcHUocHAwZGVzdC0+RmFicmljV1dQTi5Mb3cpOwotCQkJcHAwZGVzdC0+RmFicmljV1dQTi5IaWdoID0gbGUzMl90b19jcHUocHAwZGVzdC0+RmFicmljV1dQTi5IaWdoKTsKLQkJCXBwMGRlc3QtPkRpc2NvdmVyZWRQb3J0c0NvdW50ID0gbGUzMl90b19jcHUocHAwZGVzdC0+RGlzY292ZXJlZFBvcnRzQ291bnQpOwotCQkJcHAwZGVzdC0+TWF4SW5pdGlhdG9ycyA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPk1heEluaXRpYXRvcnMpOwotCi0JCQkvKgotCQkJICogaWYgc3RpbGwgZG9pbmcgZGlzY292ZXJ5LAotCQkJICogaGFuZyBsb29zZSBhIHdoaWxlIHVudGlsIGZpbmlzaGVkCi0JCQkgKi8KLQkJCWlmIChwcDBkZXN0LT5Qb3J0U3RhdGUgPT0gTVBJX0ZDUE9SVFBBR0UwX1BPUlRTVEFURV9VTktOT1dOKSB7Ci0JCQkJaWYgKGNvdW50LS0gPiAwKSB7Ci0JCQkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDEwMCk7Ci0JCQkJCWdvdG8gdHJ5X2FnYWluOwotCQkJCX0KLQkJCQlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVCAiRmlybXdhcmUgZGlzY292ZXJ5IG5vdCIKLQkJCQkJCQkiIGNvbXBsZXRlLlxuIiwKLQkJCQkJCWlvYy0+bmFtZSk7Ci0JCQl9Ci0JCX0KLQotCQlwY2lfZnJlZV9jb25zaXN0ZW50KGlvYy0+cGNpZGV2LCBkYXRhX3N6LCAodTggKikgcHBhZ2UwX2FsbG9jLCBwYWdlMF9kbWEpOwotCX0KLQotCXJldHVybiByYzsKLX0KLQotLyo9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0qLwotLyoKICAqCW1wdGJhc2Vfc2FzX3BlcnNpc3Rfb3BlcmF0aW9uIC0gUGVyZm9ybSBvcGVyYXRpb24gb24gU0FTIFBlcnNpdGVudCBUYWJsZQogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKICAqCUBzYXNfYWRkcmVzczogNjRiaXQgU0FTIEFkZHJlc3MgZm9yIG9wZXJhdGlvbi4KQEAgLTU2NDcsMTEgKzU1MzMsNyBAQAogCQkJYVs1XSwgYVs0XSwgYVszXSwgYVsyXSwgYVsxXSwgYVswXSk7CiAJfQogCi0jaWZuZGVmIF9fc3BhcmNfXwogCXkgKz0gc3ByaW50ZihidWZmZXIrbGVuK3ksICIsIElSUT0lZCIsIGlvYy0+cGNpX2lycSk7Ci0jZWxzZQotCXkgKz0gc3ByaW50ZihidWZmZXIrbGVuK3ksICIsIElSUT0lcyIsIF9faXJxX2l0b2EoaW9jLT5wY2lfaXJxKSk7Ci0jZW5kaWYKIAogCWlmICghaW9jLT5hY3RpdmUpCiAJCXkgKz0gc3ByaW50ZihidWZmZXIrbGVuK3ksICIgKGRpc2FibGVkKSIpOwpAQCAtNjQ4Myw3ICs2MzY1LDYgQEAKIEVYUE9SVF9TWU1CT0wobXB0X2FsbG9jX2Z3X21lbW9yeSk7CiBFWFBPUlRfU1lNQk9MKG1wdF9mcmVlX2Z3X21lbW9yeSk7CiBFWFBPUlRfU1lNQk9MKG1wdGJhc2Vfc2FzX3BlcnNpc3Rfb3BlcmF0aW9uKTsKLUVYUE9SVF9TWU1CT0wobXB0YmFzZV9HZXRGY1BvcnRQYWdlMCk7CiAKIAogLyo9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmggYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuaAppbmRleCBmNjczY2NhLi40NzIwZjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuaAorKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuaApAQCAtNzYsOCArNzYsOCBAQAogI2RlZmluZSBDT1BZUklHSFQJIkNvcHlyaWdodCAoYykgMTk5OS0yMDA1ICIgTU9EVUxFQVVUSE9SCiAjZW5kaWYKIAotI2RlZmluZSBNUFRfTElOVVhfVkVSU0lPTl9DT01NT04JIjMuMDMuMDkiCi0jZGVmaW5lIE1QVF9MSU5VWF9QQUNLQUdFX05BTUUJCSJAKCMpbXB0bGludXgtMy4wMy4wOSIKKyNkZWZpbmUgTVBUX0xJTlVYX1ZFUlNJT05fQ09NTU9OCSIzLjAzLjEwIgorI2RlZmluZSBNUFRfTElOVVhfUEFDS0FHRV9OQU1FCQkiQCgjKW1wdGxpbnV4LTMuMDMuMTAiCiAjZGVmaW5lIFdIQVRfTUFHSUNfU1RSSU5HCQkiQCIgIigiICIjIiAiKSIKIAogI2RlZmluZSBzaG93X21wdG1vZF92ZXIocyx2ZXIpICBcCkBAIC00ODcsNiArNDg3LDE1IEBACiAJaW50CQkgaXNSYWlkOwkJLyogYml0IGZpZWxkLCAxIGlmIFJBSUQgKi8KIH1SYWlkQ2ZnRGF0YTsKIAordHlwZWRlZiBzdHJ1Y3QgX0ZjQ2ZnRGF0YSB7CisJLyogd2lsbCB1bHRpbWF0ZWx5IGhvbGQgZmNfcG9ydF9wYWdlMCBhbHNvICovCisJc3RydWN0IHsKKwkJRkNQb3J0UGFnZTFfdAkqZGF0YTsKKwkJZG1hX2FkZHJfdAkgZG1hOworCQlpbnQJCSBwZ19zejsKKwl9CQkJIGZjX3BvcnRfcGFnZTFbMl07Cit9IEZjQ2ZnRGF0YTsKKwogI2RlZmluZSBNUFRfUlBPUlRfSU5GT19GTEFHU19SRUdJU1RFUkVECTB4MDEJLyogcnBvcnQgcmVnaXN0ZXJlZCAqLwogI2RlZmluZSBNUFRfUlBPUlRfSU5GT19GTEFHU19NSVNTSU5HCTB4MDIJLyogbWlzc2luZyBmcm9tIERldlBhZ2UwIHNjYW4gKi8KIApAQCAtNTY1LDYgKzU3NCw3IEBACiAJU3BpQ2ZnRGF0YQkJc3BpX2RhdGE7CS8qIFNjc2kgY29uZmlnLiBkYXRhICovCiAJUmFpZENmZ0RhdGEJCXJhaWRfZGF0YTsJLyogUmFpZCBjb25maWcuIGRhdGEgKi8KIAlTYXNDZmdEYXRhCQlzYXNfZGF0YTsJLyogU2FzIGNvbmZpZy4gZGF0YSAqLworCUZjQ2ZnRGF0YQkJZmNfZGF0YTsJLyogRmMgY29uZmlnLiBkYXRhICovCiAJTVBUX0lPQ1RMCQkqaW9jdGw7CQkvKiBpb2N0bCBkYXRhIHBvaW50ZXIgKi8KIAlzdHJ1Y3QgcHJvY19kaXJfZW50cnkJKmlvY19kZW50cnk7CiAJc3RydWN0IF9NUFRfQURBUFRFUgkqYWx0X2lvYzsJLyogcHRyIHRvIDkyOSBib3VuZCBhZGFwdGVyIHBvcnQgKi8KQEAgLTYyNSw2ICs2MzUsNyBAQAogCWludAkJCSBudW1fcG9ydHM7CiAJc3RydWN0IHdvcmtfc3RydWN0CSBtcHRzY3NpaF9wZXJzaXN0VGFzazsKIAorCXN0cnVjdCB3b3JrX3N0cnVjdAkgZmNfc2V0dXBfcmVzZXRfd29yazsKIAlzdHJ1Y3QgbGlzdF9oZWFkCSBmY19ycG9ydHM7CiAJc3BpbmxvY2tfdAkJIGZjX3Jlc2Nhbl93b3JrX2xvY2s7CiAJaW50CQkJIGZjX3Jlc2Nhbl93b3JrX2NvdW50OwpAQCAtMTAyNyw3ICsxMDM4LDYgQEAKIGV4dGVybiB2b2lkCSBtcHRfZnJlZV9md19tZW1vcnkoTVBUX0FEQVBURVIgKmlvYyk7CiBleHRlcm4gaW50CSBtcHRfZmluZEltVm9sdW1lcyhNUFRfQURBUFRFUiAqaW9jKTsKIGV4dGVybiBpbnQJIG1wdGJhc2Vfc2FzX3BlcnNpc3Rfb3BlcmF0aW9uKE1QVF9BREFQVEVSICppb2MsIHU4IHBlcnNpc3Rfb3Bjb2RlKTsKLWV4dGVybiBpbnQJIG1wdGJhc2VfR2V0RmNQb3J0UGFnZTAoTVBUX0FEQVBURVIgKmlvYywgaW50IHBvcnRudW0pOwogCiAvKgogICogIFB1YmxpYyBkYXRhIGRlY2wncy4uLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRmYy5jIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRmYy5jCmluZGV4IDg1NjQ4NzcuLjc0NzE0ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0ZmMuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGZjLmMKQEAgLTE2OSwxMyArMTY5LDYgQEAKIAogfTsKIAotLyogRklYTUUhIHZhbHVlcyBjb250cm9sbGluZyBmaXJtd2FyZSBSRVNDQU4gZXZlbnQKLSAqIG5lZWQgdG8gYmUgc2V0IGxvdyB0byBhbGxvdyBkZXZfbG9zc190bW8gdG8KLSAqIHdvcmsgYXMgZXhwZWN0ZWQuICBDdXJyZW50bHksIGZpcm13YXJlIGRvZXNuJ3QKLSAqIG5vdGlmeSBkcml2ZXIgb2YgUkVTQ0FOIGV2ZW50IHVudGlsIHNvbWUgbnVtYmVyCi0gKiBvZiBzZWNvbmRzIGVsYXBzZS4gIFRoaXMgdmFsdWUgY2FuIGJlIHNldCB2aWEKLSAqIGxzaXV0aWwuCi0gKi8KIHN0YXRpYyB2b2lkCiBtcHRmY19zZXRfcnBvcnRfbG9zc190bW8oc3RydWN0IGZjX3Jwb3J0ICpycG9ydCwgdWludDMyX3QgdGltZW91dCkKIHsKQEAgLTU4NywxNSArNTgwLDI2NiBAQAogI2lmZGVmIERNUFRfREVCVUdfRkMKIAlpZiAodW5saWtlbHkoZXJyKSkgewogCQlkZmNwcmludGsgKChNWUlPQ19zX0lORk9fRk1UCi0JCQkibXB0ZmNfcWNtZC4lZDogJWQ6JWQsIG1wdHNjc2loX3FjbWQgcmV0dXJucyBub24temVyby5cbiIsCisJCQkibXB0ZmNfcWNtZC4lZDogJWQ6JWQsIG1wdHNjc2loX3FjbWQgcmV0dXJucyBub24temVybywgKCV4KS5cbiIsCiAJCQkoKE1QVF9TQ1NJX0hPU1QgKikgU0NwbnQtPmRldmljZS0+aG9zdC0+aG9zdGRhdGEpLT5pb2MtPm5hbWUsCiAJCQkoKE1QVF9TQ1NJX0hPU1QgKikgU0NwbnQtPmRldmljZS0+aG9zdC0+aG9zdGRhdGEpLT5pb2MtPnNoLT5ob3N0X25vLAotCQkJU0NwbnQtPmRldmljZS0+aWQsU0NwbnQtPmRldmljZS0+bHVuKSk7CisJCQlTQ3BudC0+ZGV2aWNlLT5pZCxTQ3BudC0+ZGV2aWNlLT5sdW4sZXJyKSk7CiAJfQogI2VuZGlmCiAJcmV0dXJuIGVycjsKIH0KIAorLyoKKyAqCW1wdGZjX0dldEZjUG9ydFBhZ2UwIC0gRmV0Y2ggRkNQb3J0IGNvbmZpZyBQYWdlMC4KKyAqCUBpb2M6IFBvaW50ZXIgdG8gTVBUX0FEQVBURVIgc3RydWN0dXJlCisgKglAcG9ydG51bTogSU9DIFBvcnQgbnVtYmVyCisgKgorICoJUmV0dXJuOiAwIGZvciBzdWNjZXNzCisgKgktRU5PTUVNIGlmIG5vIG1lbW9yeSBhdmFpbGFibGUKKyAqCQktRVBFUk0gaWYgbm90IGFsbG93ZWQgZHVlIHRvIElTUiBjb250ZXh0CisgKgkJLUVBR0FJTiBpZiBubyBtc2cgZnJhbWVzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCQktRUZBVUxUIGZvciBub24tc3VjY2Vzc2Z1bCByZXBseSBvciBubyByZXBseSAodGltZW91dCkKKyAqCQktRUlOVkFMIHBvcnRudW0gYXJnIG91dCBvZiByYW5nZSAoaGFyZHdpcmVkIHRvIHR3byBlbGVtZW50cykKKyAqLworc3RhdGljIGludAorbXB0ZmNfR2V0RmNQb3J0UGFnZTAoTVBUX0FEQVBURVIgKmlvYywgaW50IHBvcnRudW0pCit7CisJQ29uZmlnUGFnZUhlYWRlcl90CSBoZHI7CisJQ09ORklHUEFSTVMJCSBjZmc7CisJRkNQb3J0UGFnZTBfdAkJKnBwYWdlMF9hbGxvYzsKKwlGQ1BvcnRQYWdlMF90CQkqcHAwZGVzdDsKKwlkbWFfYWRkcl90CQkgcGFnZTBfZG1hOworCWludAkJCSBkYXRhX3N6OworCWludAkJCSBjb3B5X3N6OworCWludAkJCSByYzsKKwlpbnQJCQkgY291bnQgPSA0MDA7CisKKwlpZiAocG9ydG51bSA+IDEpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogR2V0IEZDUG9ydCBQYWdlIDAgaGVhZGVyICovCisJaGRyLlBhZ2VWZXJzaW9uID0gMDsKKwloZHIuUGFnZUxlbmd0aCA9IDA7CisJaGRyLlBhZ2VOdW1iZXIgPSAwOworCWhkci5QYWdlVHlwZSA9IE1QSV9DT05GSUdfUEFHRVRZUEVfRkNfUE9SVDsKKwljZmcuY2ZnaGRyLmhkciA9ICZoZHI7CisJY2ZnLnBoeXNBZGRyID0gLTE7CisJY2ZnLmFjdGlvbiA9IE1QSV9DT05GSUdfQUNUSU9OX1BBR0VfSEVBREVSOworCWNmZy5kaXIgPSAwOworCWNmZy5wYWdlQWRkciA9IHBvcnRudW07CisJY2ZnLnRpbWVvdXQgPSAwOworCisJaWYgKChyYyA9IG1wdF9jb25maWcoaW9jLCAmY2ZnKSkgIT0gMCkKKwkJcmV0dXJuIHJjOworCisJaWYgKGhkci5QYWdlTGVuZ3RoID09IDApCisJCXJldHVybiAwOworCisJZGF0YV9zeiA9IGhkci5QYWdlTGVuZ3RoICogNDsKKwlyYyA9IC1FTk9NRU07CisJcHBhZ2UwX2FsbG9jID0gKEZDUG9ydFBhZ2UwX3QgKikgcGNpX2FsbG9jX2NvbnNpc3RlbnQoaW9jLT5wY2lkZXYsIGRhdGFfc3osICZwYWdlMF9kbWEpOworCWlmIChwcGFnZTBfYWxsb2MpIHsKKworIHRyeV9hZ2FpbjoKKwkJbWVtc2V0KCh1OCAqKXBwYWdlMF9hbGxvYywgMCwgZGF0YV9zeik7CisJCWNmZy5waHlzQWRkciA9IHBhZ2UwX2RtYTsKKwkJY2ZnLmFjdGlvbiA9IE1QSV9DT05GSUdfQUNUSU9OX1BBR0VfUkVBRF9DVVJSRU5UOworCisJCWlmICgocmMgPSBtcHRfY29uZmlnKGlvYywgJmNmZykpID09IDApIHsKKwkJCS8qIHNhdmUgdGhlIGRhdGEgKi8KKwkJCXBwMGRlc3QgPSAmaW9jLT5mY19wb3J0X3BhZ2UwW3BvcnRudW1dOworCQkJY29weV9zeiA9IG1pbl90KGludCwgc2l6ZW9mKEZDUG9ydFBhZ2UwX3QpLCBkYXRhX3N6KTsKKwkJCW1lbWNweShwcDBkZXN0LCBwcGFnZTBfYWxsb2MsIGNvcHlfc3opOworCisJCQkvKgorCQkJICoJTm9ybWFsaXplIGVuZGlhbm5lc3Mgb2Ygc3RydWN0dXJlIGRhdGEsCisJCQkgKglieSBieXRlLXN3YXBwaW5nIGFsbCA+IDEgYnl0ZSBmaWVsZHMhCisJCQkgKi8KKwkJCXBwMGRlc3QtPkZsYWdzID0gbGUzMl90b19jcHUocHAwZGVzdC0+RmxhZ3MpOworCQkJcHAwZGVzdC0+UG9ydElkZW50aWZpZXIgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5Qb3J0SWRlbnRpZmllcik7CisJCQlwcDBkZXN0LT5XV05OLkxvdyA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPldXTk4uTG93KTsKKwkJCXBwMGRlc3QtPldXTk4uSGlnaCA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPldXTk4uSGlnaCk7CisJCQlwcDBkZXN0LT5XV1BOLkxvdyA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPldXUE4uTG93KTsKKwkJCXBwMGRlc3QtPldXUE4uSGlnaCA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPldXUE4uSGlnaCk7CisJCQlwcDBkZXN0LT5TdXBwb3J0ZWRTZXJ2aWNlQ2xhc3MgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5TdXBwb3J0ZWRTZXJ2aWNlQ2xhc3MpOworCQkJcHAwZGVzdC0+U3VwcG9ydGVkU3BlZWRzID0gbGUzMl90b19jcHUocHAwZGVzdC0+U3VwcG9ydGVkU3BlZWRzKTsKKwkJCXBwMGRlc3QtPkN1cnJlbnRTcGVlZCA9IGxlMzJfdG9fY3B1KHBwMGRlc3QtPkN1cnJlbnRTcGVlZCk7CisJCQlwcDBkZXN0LT5NYXhGcmFtZVNpemUgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5NYXhGcmFtZVNpemUpOworCQkJcHAwZGVzdC0+RmFicmljV1dOTi5Mb3cgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5GYWJyaWNXV05OLkxvdyk7CisJCQlwcDBkZXN0LT5GYWJyaWNXV05OLkhpZ2ggPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5GYWJyaWNXV05OLkhpZ2gpOworCQkJcHAwZGVzdC0+RmFicmljV1dQTi5Mb3cgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5GYWJyaWNXV1BOLkxvdyk7CisJCQlwcDBkZXN0LT5GYWJyaWNXV1BOLkhpZ2ggPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5GYWJyaWNXV1BOLkhpZ2gpOworCQkJcHAwZGVzdC0+RGlzY292ZXJlZFBvcnRzQ291bnQgPSBsZTMyX3RvX2NwdShwcDBkZXN0LT5EaXNjb3ZlcmVkUG9ydHNDb3VudCk7CisJCQlwcDBkZXN0LT5NYXhJbml0aWF0b3JzID0gbGUzMl90b19jcHUocHAwZGVzdC0+TWF4SW5pdGlhdG9ycyk7CisKKwkJCS8qCisJCQkgKiBpZiBzdGlsbCBkb2luZyBkaXNjb3ZlcnksCisJCQkgKiBoYW5nIGxvb3NlIGEgd2hpbGUgdW50aWwgZmluaXNoZWQKKwkJCSAqLworCQkJaWYgKHBwMGRlc3QtPlBvcnRTdGF0ZSA9PSBNUElfRkNQT1JUUEFHRTBfUE9SVFNUQVRFX1VOS05PV04pIHsKKwkJCQlpZiAoY291bnQtLSA+IDApIHsKKwkJCQkJbXNsZWVwKDEwMCk7CisJCQkJCWdvdG8gdHJ5X2FnYWluOworCQkJCX0KKwkJCQlwcmludGsoTVlJT0Nfc19JTkZPX0ZNVCAiRmlybXdhcmUgZGlzY292ZXJ5IG5vdCIKKwkJCQkJCQkiIGNvbXBsZXRlLlxuIiwKKwkJCQkJCWlvYy0+bmFtZSk7CisJCQl9CisJCX0KKworCQlwY2lfZnJlZV9jb25zaXN0ZW50KGlvYy0+cGNpZGV2LCBkYXRhX3N6LCAodTggKikgcHBhZ2UwX2FsbG9jLCBwYWdlMF9kbWEpOworCX0KKworCXJldHVybiByYzsKK30KKworc3RhdGljIGludAorbXB0ZmNfV3JpdGVGY1BvcnRQYWdlMShNUFRfQURBUFRFUiAqaW9jLCBpbnQgcG9ydG51bSkKK3sKKwlDb25maWdQYWdlSGVhZGVyX3QJIGhkcjsKKwlDT05GSUdQQVJNUwkJIGNmZzsKKwlpbnQJCQkgcmM7CisKKwlpZiAocG9ydG51bSA+IDEpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCEoaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZGF0YSkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogZ2V0IGZjcG9ydCBwYWdlIDEgaGVhZGVyICovCisJaGRyLlBhZ2VWZXJzaW9uID0gMDsKKwloZHIuUGFnZUxlbmd0aCA9IDA7CisJaGRyLlBhZ2VOdW1iZXIgPSAxOworCWhkci5QYWdlVHlwZSA9IE1QSV9DT05GSUdfUEFHRVRZUEVfRkNfUE9SVDsKKwljZmcuY2ZnaGRyLmhkciA9ICZoZHI7CisJY2ZnLnBoeXNBZGRyID0gLTE7CisJY2ZnLmFjdGlvbiA9IE1QSV9DT05GSUdfQUNUSU9OX1BBR0VfSEVBREVSOworCWNmZy5kaXIgPSAwOworCWNmZy5wYWdlQWRkciA9IHBvcnRudW07CisJY2ZnLnRpbWVvdXQgPSAwOworCisJaWYgKChyYyA9IG1wdF9jb25maWcoaW9jLCAmY2ZnKSkgIT0gMCkKKwkJcmV0dXJuIHJjOworCisJaWYgKGhkci5QYWdlTGVuZ3RoID09IDApCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKGhkci5QYWdlTGVuZ3RoKjQgIT0gaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0ucGdfc3opCisJCXJldHVybiAtRUlOVkFMOworCisJY2ZnLnBoeXNBZGRyID0gaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZG1hOworCWNmZy5hY3Rpb24gPSBNUElfQ09ORklHX0FDVElPTl9QQUdFX1dSSVRFX0NVUlJFTlQ7CisJY2ZnLmRpciA9IDE7CisKKwlyYyA9IG1wdF9jb25maWcoaW9jLCAmY2ZnKTsKKworCXJldHVybiByYzsKK30KKworc3RhdGljIGludAorbXB0ZmNfR2V0RmNQb3J0UGFnZTEoTVBUX0FEQVBURVIgKmlvYywgaW50IHBvcnRudW0pCit7CisJQ29uZmlnUGFnZUhlYWRlcl90CSBoZHI7CisJQ09ORklHUEFSTVMJCSBjZmc7CisJRkNQb3J0UGFnZTFfdAkJKnBhZ2UxX2FsbG9jOworCWRtYV9hZGRyX3QJCSBwYWdlMV9kbWE7CisJaW50CQkJIGRhdGFfc3o7CisJaW50CQkJIHJjOworCisJaWYgKHBvcnRudW0gPiAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIGdldCBmY3BvcnQgcGFnZSAxIGhlYWRlciAqLworCWhkci5QYWdlVmVyc2lvbiA9IDA7CisJaGRyLlBhZ2VMZW5ndGggPSAwOworCWhkci5QYWdlTnVtYmVyID0gMTsKKwloZHIuUGFnZVR5cGUgPSBNUElfQ09ORklHX1BBR0VUWVBFX0ZDX1BPUlQ7CisJY2ZnLmNmZ2hkci5oZHIgPSAmaGRyOworCWNmZy5waHlzQWRkciA9IC0xOworCWNmZy5hY3Rpb24gPSBNUElfQ09ORklHX0FDVElPTl9QQUdFX0hFQURFUjsKKwljZmcuZGlyID0gMDsKKwljZmcucGFnZUFkZHIgPSBwb3J0bnVtOworCWNmZy50aW1lb3V0ID0gMDsKKworCWlmICgocmMgPSBtcHRfY29uZmlnKGlvYywgJmNmZykpICE9IDApCisJCXJldHVybiByYzsKKworCWlmIChoZHIuUGFnZUxlbmd0aCA9PSAwKQorCQlyZXR1cm4gLUVOT0RFVjsKKworc3RhcnRfb3ZlcjoKKworCWlmIChpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtwb3J0bnVtXS5kYXRhID09IE5VTEwpIHsKKwkJZGF0YV9zeiA9IGhkci5QYWdlTGVuZ3RoICogNDsKKwkJaWYgKGRhdGFfc3ogPCBzaXplb2YoRkNQb3J0UGFnZTFfdCkpCisJCQlkYXRhX3N6ID0gc2l6ZW9mKEZDUG9ydFBhZ2UxX3QpOworCisJCXBhZ2UxX2FsbG9jID0gKEZDUG9ydFBhZ2UxX3QgKikgcGNpX2FsbG9jX2NvbnNpc3RlbnQoaW9jLT5wY2lkZXYsCisJCQkJCQlkYXRhX3N6LAorCQkJCQkJJnBhZ2UxX2RtYSk7CisJCWlmICghcGFnZTFfYWxsb2MpCisJCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJZWxzZSB7CisJCXBhZ2UxX2FsbG9jID0gaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZGF0YTsKKwkJcGFnZTFfZG1hID0gaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZG1hOworCQlkYXRhX3N6ID0gaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0ucGdfc3o7CisJCWlmIChoZHIuUGFnZUxlbmd0aCAqIDQgPiBkYXRhX3N6KSB7CisJCQlpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtwb3J0bnVtXS5kYXRhID0gTlVMTDsKKwkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoaW9jLT5wY2lkZXYsIGRhdGFfc3osICh1OCAqKQorCQkJCXBhZ2UxX2FsbG9jLCBwYWdlMV9kbWEpOworCQkJZ290byBzdGFydF9vdmVyOworCQl9CisJfQorCisJbWVtc2V0KHBhZ2UxX2FsbG9jLDAsZGF0YV9zeik7CisKKwljZmcucGh5c0FkZHIgPSBwYWdlMV9kbWE7CisJY2ZnLmFjdGlvbiA9IE1QSV9DT05GSUdfQUNUSU9OX1BBR0VfUkVBRF9DVVJSRU5UOworCisJaWYgKChyYyA9IG1wdF9jb25maWcoaW9jLCAmY2ZnKSkgPT0gMCkgeworCQlpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtwb3J0bnVtXS5kYXRhID0gcGFnZTFfYWxsb2M7CisJCWlvYy0+ZmNfZGF0YS5mY19wb3J0X3BhZ2UxW3BvcnRudW1dLnBnX3N6ID0gZGF0YV9zejsKKwkJaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZG1hID0gcGFnZTFfZG1hOworCX0KKwllbHNlIHsKKwkJaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbcG9ydG51bV0uZGF0YSA9IE5VTEw7CisJCXBjaV9mcmVlX2NvbnNpc3RlbnQoaW9jLT5wY2lkZXYsIGRhdGFfc3osICh1OCAqKQorCQkJcGFnZTFfYWxsb2MsIHBhZ2UxX2RtYSk7CisJfQorCisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZAorbXB0ZmNfU2V0RmNQb3J0UGFnZTFfZGVmYXVsdHMoTVBUX0FEQVBURVIgKmlvYykKK3sKKwlpbnQJCWlpOworCUZDUG9ydFBhZ2UxX3QJKnBwMTsKKworCSNkZWZpbmUgTVBURkNfRldfREVWSUNFX1RJTUVPVVQJKDEpCisJI2RlZmluZSBNUFRGQ19GV19JT19QRU5EX1RJTUVPVVQgKDEpCisJI2RlZmluZSBPTl9GTEFHUyAgKE1QSV9GQ1BPUlRQQUdFMV9GTEFHU19JTU1FRElBVEVfRVJST1JfUkVQTFkpCisJI2RlZmluZSBPRkZfRkxBR1MgKE1QSV9GQ1BPUlRQQUdFMV9GTEFHU19WRVJCT1NFX1JFU0NBTl9FVkVOVFMpCisKKwlmb3IgKGlpPTA7IGlpPGlvYy0+ZmFjdHMuTnVtYmVyT2ZQb3J0czsgaWkrKykgeworCQlpZiAobXB0ZmNfR2V0RmNQb3J0UGFnZTEoaW9jLCBpaSkgIT0gMCkKKwkJCWNvbnRpbnVlOworCQlwcDEgPSBpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtpaV0uZGF0YTsKKwkJaWYgKChwcDEtPkluaXRpYXRvckRldmljZVRpbWVvdXQgPT0gTVBURkNfRldfREVWSUNFX1RJTUVPVVQpCisJCSAmJiAocHAxLT5Jbml0aWF0b3JJb1BlbmRUaW1lb3V0ID09IE1QVEZDX0ZXX0lPX1BFTkRfVElNRU9VVCkKKwkJICYmICgocHAxLT5GbGFncyAmIE9OX0ZMQUdTKSA9PSBPTl9GTEFHUykKKwkJICYmICgocHAxLT5GbGFncyAmIE9GRl9GTEFHUykgPT0gMCkpCisJCQljb250aW51ZTsKKwkJcHAxLT5Jbml0aWF0b3JEZXZpY2VUaW1lb3V0ID0gTVBURkNfRldfREVWSUNFX1RJTUVPVVQ7CisJCXBwMS0+SW5pdGlhdG9ySW9QZW5kVGltZW91dCA9IE1QVEZDX0ZXX0lPX1BFTkRfVElNRU9VVDsKKwkJcHAxLT5GbGFncyAmPSB+T0ZGX0ZMQUdTOworCQlwcDEtPkZsYWdzIHw9IE9OX0ZMQUdTOworCQltcHRmY19Xcml0ZUZjUG9ydFBhZ2UxKGlvYywgaWkpOworCX0KK30KKworCiBzdGF0aWMgdm9pZAogbXB0ZmNfaW5pdF9ob3N0X2F0dHIoTVBUX0FEQVBURVIgKmlvYyxpbnQgcG9ydG51bSkKIHsKQEAgLTYyOSw2ICs4NzMsMzEgQEAKIH0KIAogc3RhdGljIHZvaWQKK21wdGZjX3NldHVwX3Jlc2V0KHZvaWQgKmFyZykKK3sKKwlNUFRfQURBUFRFUgkJKmlvYyA9IChNUFRfQURBUFRFUiAqKWFyZzsKKwl1NjQJCQlwbjsKKwlzdHJ1Y3QgbXB0ZmNfcnBvcnRfaW5mbyAqcmk7CisKKwkvKiByZXNldCBhYm91dCB0byBoYXBwZW4sIGRlbGV0ZSAoYmxvY2spIGFsbCBycG9ydHMgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpLCAmaW9jLT5mY19ycG9ydHMsIGxpc3QpIHsKKwkJaWYgKHJpLT5mbGFncyAmIE1QVF9SUE9SVF9JTkZPX0ZMQUdTX1JFR0lTVEVSRUQpIHsKKwkJCXJpLT5mbGFncyAmPSB+TVBUX1JQT1JUX0lORk9fRkxBR1NfUkVHSVNURVJFRDsKKwkJCWZjX3JlbW90ZV9wb3J0X2RlbGV0ZShyaS0+cnBvcnQpOwkvKiB3b24ndCBzbGVlcCAqLworCQkJcmktPnJwb3J0ID0gTlVMTDsKKworCQkJcG4gPSAodTY0KXJpLT5wZzAuV1dQTi5IaWdoIDw8IDMyIHwKKwkJCSAgICAgKHU2NClyaS0+cGcwLldXUE4uTG93OworCQkJZGZjcHJpbnRrICgoTVlJT0Nfc19JTkZPX0ZNVAorCQkJCSJtcHRmY19zZXR1cF9yZXNldC4lZDogJWxseCBkZWxldGVkXG4iLAorCQkJCWlvYy0+bmFtZSwKKwkJCQlpb2MtPnNoLT5ob3N0X25vLAorCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpcG4pKTsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQKIG1wdGZjX3Jlc2Nhbl9kZXZpY2VzKHZvaWQgKmFyZykKIHsKIAlNUFRfQURBUFRFUgkJKmlvYyA9IChNUFRfQURBUFRFUiAqKWFyZzsKQEAgLTY1MSw3ICs5MjAsNyBAQAogCQkgKiB3aWxsIHJlcmVnaXN0ZXIgZXhpc3RpbmcgcnBvcnRzCiAJCSAqLwogCQlmb3IgKGlpPTA7IGlpIDwgaW9jLT5mYWN0cy5OdW1iZXJPZlBvcnRzOyBpaSsrKSB7Ci0JCQkodm9pZCkgbXB0YmFzZV9HZXRGY1BvcnRQYWdlMChpb2MsIGlpKTsKKwkJCSh2b2lkKSBtcHRmY19HZXRGY1BvcnRQYWdlMChpb2MsIGlpKTsKIAkJCW1wdGZjX2luaXRfaG9zdF9hdHRyKGlvYyxpaSk7CS8qIHJlZnJlc2ggKi8KIAkJCW1wdGZjX0dldEZjRGV2UGFnZTAoaW9jLGlpLG1wdGZjX3JlZ2lzdGVyX2Rldik7CiAJCX0KQEAgLTc1Myw3ICsxMDIyLDkgQEAKIAkJZ290byBvdXRfbXB0ZmNfcHJvYmU7CiAgICAgICAgIH0KIAorCXNwaW5fbG9ja19pbml0KCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2spOwogCUlOSVRfV09SSygmaW9jLT5mY19yZXNjYW5fd29yaywgbXB0ZmNfcmVzY2FuX2RldmljZXMsKHZvaWQgKilpb2MpOworCUlOSVRfV09SSygmaW9jLT5mY19zZXR1cF9yZXNldF93b3JrLCBtcHRmY19zZXR1cF9yZXNldCwgKHZvaWQgKilpb2MpOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmlvYy0+RnJlZVFsb2NrLCBmbGFncyk7CiAKQEAgLTg4OSw2ICsxMTYwLDE1IEBACiAJCWdvdG8gb3V0X21wdGZjX3Byb2JlOwogCiAJLyoKKwkgKiAgUHJlLWZldGNoIEZDIHBvcnQgV1dOIGFuZCBzdHVmZi4uLgorCSAqICAoRkNQb3J0UGFnZTBfdCBzdHVmZikKKwkgKi8KKwlmb3IgKGlpPTA7IGlpIDwgaW9jLT5mYWN0cy5OdW1iZXJPZlBvcnRzOyBpaSsrKSB7CisJCSh2b2lkKSBtcHRmY19HZXRGY1BvcnRQYWdlMChpb2MsIGlpKTsKKwl9CisJbXB0ZmNfU2V0RmNQb3J0UGFnZTFfZGVmYXVsdHMoaW9jKTsKKworCS8qCiAJICogc2NhbiBmb3IgcnBvcnRzIC0KIAkgKglieSBkb2luZyBpdCB2aWEgdGhlIHdvcmtxdWV1ZSwgc29tZSBsb2NraW5nIGlzIGVsaW1pbmF0ZWQKIAkgKi8KQEAgLTkxNyw2ICsxMTk3LDgxIEBACiAjZW5kaWYKIH07CiAKK3N0YXRpYyBpbnQKK21wdGZjX2V2ZW50X3Byb2Nlc3MoTVBUX0FEQVBURVIgKmlvYywgRXZlbnROb3RpZmljYXRpb25SZXBseV90ICpwRXZSZXBseSkKK3sKKwlNUFRfU0NTSV9IT1NUICpoZDsKKwl1OCBldmVudCA9IGxlMzJfdG9fY3B1KHBFdlJlcGx5LT5FdmVudCkgJiAweEZGOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJjPTE7CisKKwlkZXZ0dmVyYm9zZXByaW50aygoTVlJT0Nfc19JTkZPX0ZNVCAiTVBUIGV2ZW50ICg9JTAyWGgpIHJvdXRlZCB0byBTQ1NJIGhvc3QgZHJpdmVyIVxuIiwKKwkJCWlvYy0+bmFtZSwgZXZlbnQpKTsKKworCWlmIChpb2MtPnNoID09IE5VTEwgfHwKKwkJKChoZCA9IChNUFRfU0NTSV9IT1NUICopaW9jLT5zaC0+aG9zdGRhdGEpID09IE5VTEwpKQorCQlyZXR1cm4gMTsKKworCXN3aXRjaCAoZXZlbnQpIHsKKwljYXNlIE1QSV9FVkVOVF9SRVNDQU46CisJCXNwaW5fbG9ja19pcnFzYXZlKCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2ssIGZsYWdzKTsKKwkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfcSkgeworCQkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfY291bnQrKyA9PSAwKSB7CisJCQkJcXVldWVfd29yayhpb2MtPmZjX3Jlc2Nhbl93b3JrX3EsCisJCQkJCSAgICZpb2MtPmZjX3Jlc2Nhbl93b3JrKTsKKwkJCX0KKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2ssIGZsYWdzKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmMgPSBtcHRzY3NpaF9ldmVudF9wcm9jZXNzKGlvYyxwRXZSZXBseSk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQKK21wdGZjX2lvY19yZXNldChNUFRfQURBUFRFUiAqaW9jLCBpbnQgcmVzZXRfcGhhc2UpCit7CisJaW50CQlyYzsKKwl1bnNpZ25lZCBsb25nCWZsYWdzOworCisJcmMgPSBtcHRzY3NpaF9pb2NfcmVzZXQoaW9jLHJlc2V0X3BoYXNlKTsKKwlpZiAocmMgPT0gMCkKKwkJcmV0dXJuIHJjOworCisKKwlkdG1wcmludGsoKEtFUk5fV0FSTklORyBNWU5BTQorCQkiOiBJT0MgJXNfcmVzZXQgcm91dGVkIHRvIEZDIGhvc3QgZHJpdmVyIVxuIiwKKwkJcmVzZXRfcGhhc2U9PU1QVF9JT0NfU0VUVVBfUkVTRVQgPyAic2V0dXAiIDogKAorCQlyZXNldF9waGFzZT09TVBUX0lPQ19QUkVfUkVTRVQgPyAicHJlIiA6ICJwb3N0IikpKTsKKworCWlmIChyZXNldF9waGFzZSA9PSBNUFRfSU9DX1NFVFVQX1JFU0VUKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2ssIGZsYWdzKTsKKwkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfcSkgeworCQkJcXVldWVfd29yayhpb2MtPmZjX3Jlc2Nhbl93b3JrX3EsCisJCQkJICAgJmlvYy0+ZmNfc2V0dXBfcmVzZXRfd29yayk7CisJCX0KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5mY19yZXNjYW5fd29ya19sb2NrLCBmbGFncyk7CisJfQorCisJZWxzZSBpZiAocmVzZXRfcGhhc2UgPT0gTVBUX0lPQ19QUkVfUkVTRVQpIHsKKwl9CisKKwllbHNlIHsJLyogTVBUX0lPQ19QT1NUX1JFU0VUICovCisJCW1wdGZjX1NldEZjUG9ydFBhZ2UxX2RlZmF1bHRzKGlvYyk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2ssIGZsYWdzKTsKKwkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfcSkgeworCQkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfY291bnQrKyA9PSAwKSB7CisJCQkJcXVldWVfd29yayhpb2MtPmZjX3Jlc2Nhbl93b3JrX3EsCisJCQkJCSAgICZpb2MtPmZjX3Jlc2Nhbl93b3JrKTsKKwkJCX0KKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb2MtPmZjX3Jlc2Nhbl93b3JrX2xvY2ssIGZsYWdzKTsKKwl9CisJcmV0dXJuIDE7Cit9CisKIC8qPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09Ki8KIC8qKgogICoJbXB0ZmNfaW5pdCAtIFJlZ2lzdGVyIE1QVCBhZGFwdGVyKHMpIGFzIFNDU0kgaG9zdChzKSB3aXRoCkBAIC05MzEsOCArMTI4Niw4IEBACiAKIAlzaG93X21wdG1vZF92ZXIobXlfTkFNRSwgbXlfVkVSU0lPTik7CiAKLQkvKiBzYW5pdHkgY2hlY2sgbW9kdWxlIHBhcmFtZXRlciAqLwotCWlmIChtcHRmY19kZXZfbG9zc190bW8gPT0gMCkKKwkvKiBzYW5pdHkgY2hlY2sgbW9kdWxlIHBhcmFtZXRlcnMgKi8KKwlpZiAobXB0ZmNfZGV2X2xvc3NfdG1vIDw9IDApCiAJCW1wdGZjX2Rldl9sb3NzX3RtbyA9IE1QVEZDX0RFVl9MT1NTX1RNTzsKIAogCW1wdGZjX3RyYW5zcG9ydF90ZW1wbGF0ZSA9CkBAIC05NDUsMTIgKzEzMDAsMTIgQEAKIAltcHRmY1Rhc2tDdHggPSBtcHRfcmVnaXN0ZXIobXB0c2NzaWhfdGFza21nbXRfY29tcGxldGUsIE1QVEZDX0RSSVZFUik7CiAJbXB0ZmNJbnRlcm5hbEN0eCA9IG1wdF9yZWdpc3RlcihtcHRzY3NpaF9zY2FuZHZfY29tcGxldGUsIE1QVEZDX0RSSVZFUik7CiAKLQlpZiAobXB0X2V2ZW50X3JlZ2lzdGVyKG1wdGZjRG9uZUN0eCwgbXB0c2NzaWhfZXZlbnRfcHJvY2VzcykgPT0gMCkgeworCWlmIChtcHRfZXZlbnRfcmVnaXN0ZXIobXB0ZmNEb25lQ3R4LCBtcHRmY19ldmVudF9wcm9jZXNzKSA9PSAwKSB7CiAJCWRldnR2ZXJib3NlcHJpbnRrKChLRVJOX0lORk8gTVlOQU0KIAkJICAiOiBSZWdpc3RlcmVkIGZvciBJT0MgZXZlbnQgbm90aWZpY2F0aW9uc1xuIikpOwogCX0KIAotCWlmIChtcHRfcmVzZXRfcmVnaXN0ZXIobXB0ZmNEb25lQ3R4LCBtcHRzY3NpaF9pb2NfcmVzZXQpID09IDApIHsKKwlpZiAobXB0X3Jlc2V0X3JlZ2lzdGVyKG1wdGZjRG9uZUN0eCwgbXB0ZmNfaW9jX3Jlc2V0KSA9PSAwKSB7CiAJCWRwcmludGsoKEtFUk5fSU5GTyBNWU5BTQogCQkgICI6IFJlZ2lzdGVyZWQgZm9yIElPQyByZXNldCBub3RpZmljYXRpb25zXG4iKSk7CiAJfQpAQCAtOTc1LDYgKzEzMzAsNyBAQAogCXN0cnVjdCBtcHRmY19ycG9ydF9pbmZvCSpwLCAqbjsKIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya19xOwogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOworCWludAkJCWlpOwogCiAJLyogZGVzdHJveSB3b3JrcXVldWUgKi8KIAlpZiAoKHdvcmtfcT1pb2MtPmZjX3Jlc2Nhbl93b3JrX3EpKSB7CkBAIC05OTEsNiArMTM0NywxNiBAQAogCQlrZnJlZShwKTsKIAl9CiAKKwlmb3IgKGlpPTA7IGlpPGlvYy0+ZmFjdHMuTnVtYmVyT2ZQb3J0czsgaWkrKykgeworCQlpZiAoaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbaWldLmRhdGEpIHsKKwkJCXBjaV9mcmVlX2NvbnNpc3RlbnQoaW9jLT5wY2lkZXYsCisJCQkJaW9jLT5mY19kYXRhLmZjX3BvcnRfcGFnZTFbaWldLnBnX3N6LAorCQkJCSh1OCAqKSBpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtpaV0uZGF0YSwKKwkJCQlpb2MtPmZjX2RhdGEuZmNfcG9ydF9wYWdlMVtpaV0uZG1hKTsKKwkJCWlvYy0+ZmNfZGF0YS5mY19wb3J0X3BhZ2UxW2lpXS5kYXRhID0gTlVMTDsKKwkJfQorCX0KKwogCW1wdHNjc2loX3JlbW92ZShwZGV2KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzY3NpaC5jIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzY3NpaC5jCmluZGV4IDg0ZmEyNzEuLjgyNDJiMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2NzaWguYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdHNjc2loLmMKQEAgLTE5MjIsNyArMTkyMiw3IEBACiAJCQlicmVhazsKIAkJfQogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoZC0+aW9jLT5GcmVlUWxvY2ssIGZsYWdzKTsKLQkJbXNsZWVwX2ludGVycnVwdGlibGUoMjUwKTsKKwkJbXNsZWVwKDI1MCk7CiAJfSB3aGlsZSAoLS1sb29wX2NvdW50KTsKIAogCXJldHVybiBzdGF0dXM7CkBAIC0yNTIxLDE4ICsyNTIxLDYgQEAKIAkJCWhkLT5jbWRQdHIgPSBOVUxMOwogCQl9CiAKLQkJLyogNy4gRkM6IFJlc2NhbiBmb3IgYmxvY2tlZCBycG9ydHMgd2hpY2ggbWlnaHQgaGF2ZSByZXR1cm5lZC4KLQkJICovCi0JCWlmIChpb2MtPmJ1c190eXBlID09IEZDKSB7Ci0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmaW9jLT5mY19yZXNjYW5fd29ya19sb2NrLCBmbGFncyk7Ci0JCQlpZiAoaW9jLT5mY19yZXNjYW5fd29ya19xKSB7Ci0JCQkJaWYgKGlvYy0+ZmNfcmVzY2FuX3dvcmtfY291bnQrKyA9PSAwKSB7Ci0JCQkJCXF1ZXVlX3dvcmsoaW9jLT5mY19yZXNjYW5fd29ya19xLAotCQkJCQkJICAgJmlvYy0+ZmNfcmVzY2FuX3dvcmspOwotCQkJCX0KLQkJCX0KLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvYy0+ZmNfcmVzY2FuX3dvcmtfbG9jaywgZmxhZ3MpOwotCQl9CiAJCWR0bXByaW50aygoTVlJT0Nfc19XQVJOX0ZNVCAiUG9zdC1SZXNldCBjb21wbGV0ZS5cbiIsIGlvYy0+bmFtZSkpOwogCiAJfQpAQCAtMjU0Niw3ICsyNTM0LDYgQEAKIHsKIAlNUFRfU0NTSV9IT1NUICpoZDsKIAl1OCBldmVudCA9IGxlMzJfdG9fY3B1KHBFdlJlcGx5LT5FdmVudCkgJiAweEZGOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlkZXZ0dmVyYm9zZXByaW50aygoTVlJT0Nfc19JTkZPX0ZNVCAiTVBUIGV2ZW50ICg9JTAyWGgpIHJvdXRlZCB0byBTQ1NJIGhvc3QgZHJpdmVyIVxuIiwKIAkJCWlvYy0+bmFtZSwgZXZlbnQpKTsKQEAgLTI1NjksMTQgKzI1NTYsNiBAQAogCQlicmVhazsKIAogCWNhc2UgTVBJX0VWRU5UX1JFU0NBTjoJCQkJLyogMDYgKi8KLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlvYy0+ZmNfcmVzY2FuX3dvcmtfbG9jaywgZmxhZ3MpOwotCQlpZiAoaW9jLT5mY19yZXNjYW5fd29ya19xKSB7Ci0JCQlpZiAoaW9jLT5mY19yZXNjYW5fd29ya19jb3VudCsrID09IDApIHsKLQkJCQlxdWV1ZV93b3JrKGlvYy0+ZmNfcmVzY2FuX3dvcmtfcSwKLQkJCQkJICAgJmlvYy0+ZmNfcmVzY2FuX3dvcmspOwotCQkJfQotCQl9Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvYy0+ZmNfcmVzY2FuX3dvcmtfbG9jaywgZmxhZ3MpOwogCQlicmVhazsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fc2NzaS5jIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fc2NzaS5jCmluZGV4IGMwOGRkYWMuLjZlYmYzODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19zY3NpLmMKQEAgLTY1LDkgKzY1LDcgQEAKICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9yZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zZy5oPgotI2luY2x1ZGUgPHNjc2kvc2dfcmVxdWVzdC5oPgogCiAjZGVmaW5lIE9TTV9OQU1FCSJzY3NpLW9zbSIKICNkZWZpbmUgT1NNX1ZFUlNJT04JIjEuMzE2IgpAQCAtNTg4LDYgKzU4Niw3IEBACiAKIAltcHRyID0gJm1zZy0+Ym9keVswXTsKIAorI2lmIDAgLyogdGhpcyBjb2RlIGNhbid0IHdvcmsgKi8KICNpZmRlZiBDT05GSUdfSTJPX0VYVF9BREFQVEVDCiAJaWYgKGMtPmFkYXB0ZWMpIHsKIAkJdTMyIGFkcHRfZmxhZ3MgPSAwOwpAQCAtNjI1LDYgKzYyNCw3IEBACiAJCSptcHRyKysgPSBjcHVfdG9fbGUzMihhZHB0X2ZsYWdzIHwgdGlkKTsKIAl9CiAjZW5kaWYKKyNlbmRpZgogCiAJbXNnLT51LmhlYWRbMV0gPSBjcHVfdG9fbGUzMihjbWQgfCBIT1NUX1RJRCA8PCAxMiB8IHRpZCk7CiAJbXNnLT51LnMuaWNudHh0ID0gY3B1X3RvX2xlMzIoaTJvX3Njc2lfZHJpdmVyLmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2libWFzbS9pYm1hc21mcy5jIGIvZHJpdmVycy9taXNjL2libWFzbS9pYm1hc21mcy5jCmluZGV4IDI2YTIzMGIuLjRhMzVjYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9pYm1hc20vaWJtYXNtZnMuYworKysgYi9kcml2ZXJzL21pc2MvaWJtYXNtL2libWFzbWZzLmMKQEAgLTkwLDEwICs5MCwxMSBAQAogc3RhdGljIGludCBpYm1hc21mc19maWxsX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KTsKIAogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICppYm1hc21mc19nZXRfc3VwZXIoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzdCwKLQkJCWludCBmbGFncywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgaWJtYXNtZnNfZ2V0X3N1cGVyKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc3QsCisJCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEsCisJCQlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc3QsIGZsYWdzLCBkYXRhLCBpYm1hc21mc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc3QsIGZsYWdzLCBkYXRhLCBpYm1hc21mc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgaWJtYXNtZnNfc19vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9hdDkxX21jaS5jIGIvZHJpdmVycy9tbWMvYXQ5MV9tY2kuYwppbmRleCA4OGYwZWVmLi4zMjI4NTE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9hdDkxX21jaS5jCisrKyBiL2RyaXZlcnMvbW1jL2F0OTFfbWNpLmMKQEAgLTgxLDEzICs4MSw2IEBACiAKICN1bmRlZglTVVBQT1JUXzRXSVJFCiAKLSNpZmRlZiBDT05GSUdfTU1DX0RFQlVHCi0jZGVmaW5lIERCRyhmbXQuLi4pCVwKLQlwcmludGsoZm10KQotI2Vsc2UKLSNkZWZpbmUgREJHKGZtdC4uLikJZG8geyB9IHdoaWxlICgwKQotI2VuZGlmCi0KIHN0YXRpYyBzdHJ1Y3QgY2xrICptY2lfY2xrOwogCiAjZGVmaW5lIEZMX1NFTlRfQ09NTUFORCAoMSA8PCAwKQpAQCAtMjAyLDUwICsxOTUsNTAgQEAKIAlzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZDsKIAlzdHJ1Y3QgbW1jX2RhdGEgKmRhdGE7CiAKLQlEQkcoInByZSBkbWEgcmVhZFxuIik7CisJcHJfZGVidWcoInByZSBkbWEgcmVhZFxuIik7CiAKIAljbWQgPSBob3N0LT5jbWQ7CiAJaWYgKCFjbWQpIHsKLQkJREJHKCJubyBjb21tYW5kXG4iKTsKKwkJcHJfZGVidWcoIm5vIGNvbW1hbmRcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJZGF0YSA9IGNtZC0+ZGF0YTsKIAlpZiAoIWRhdGEpIHsKLQkJREJHKCJubyBkYXRhXG4iKTsKKwkJcHJfZGVidWcoIm5vIGRhdGFcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogCQkvKiBub3RoaW5nIGxlZnQgdG8gdHJhbnNmZXIgKi8KIAkJaWYgKGhvc3QtPnRyYW5zZmVyX2luZGV4ID49IGRhdGEtPnNnX2xlbikgewotCQkJREJHKCJOb3RoaW5nIGxlZnQgdG8gdHJhbnNmZXIgKGluZGV4ID0gJWQpXG4iLCBob3N0LT50cmFuc2Zlcl9pbmRleCk7CisJCQlwcl9kZWJ1ZygiTm90aGluZyBsZWZ0IHRvIHRyYW5zZmVyIChpbmRleCA9ICVkKVxuIiwgaG9zdC0+dHJhbnNmZXJfaW5kZXgpOwogCQkJYnJlYWs7CiAJCX0KIAogCQkvKiBDaGVjayB0byBzZWUgaWYgdGhpcyBuZWVkcyBmaWxsaW5nICovCiAJCWlmIChpID09IDApIHsKIAkJCWlmIChhdDkxX21jaV9yZWFkKEFUOTFfUERDX1JDUikgIT0gMCkgewotCQkJCURCRygiVHJhbnNmZXIgYWN0aXZlIGluIGN1cnJlbnRcbiIpOworCQkJCXByX2RlYnVnKCJUcmFuc2ZlciBhY3RpdmUgaW4gY3VycmVudFxuIik7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KIAkJZWxzZSB7CiAJCQlpZiAoYXQ5MV9tY2lfcmVhZChBVDkxX1BEQ19STkNSKSAhPSAwKSB7Ci0JCQkJREJHKCJUcmFuc2ZlciBhY3RpdmUgaW4gbmV4dFxuIik7CisJCQkJcHJfZGVidWcoIlRyYW5zZmVyIGFjdGl2ZSBpbiBuZXh0XG4iKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQogCiAJCS8qIFNldHVwIHRoZSBuZXh0IHRyYW5zZmVyICovCi0JCURCRygiVXNpbmcgdHJhbnNmZXIgaW5kZXggJWRcbiIsIGhvc3QtPnRyYW5zZmVyX2luZGV4KTsKKwkJcHJfZGVidWcoIlVzaW5nIHRyYW5zZmVyIGluZGV4ICVkXG4iLCBob3N0LT50cmFuc2Zlcl9pbmRleCk7CiAKIAkJc2cgPSAmZGF0YS0+c2dbaG9zdC0+dHJhbnNmZXJfaW5kZXgrK107Ci0JCURCRygic2cgPSAlcFxuIiwgc2cpOworCQlwcl9kZWJ1Zygic2cgPSAlcFxuIiwgc2cpOwogCiAJCXNnLT5kbWFfYWRkcmVzcyA9IGRtYV9tYXBfcGFnZShOVUxMLCBzZy0+cGFnZSwgc2ctPm9mZnNldCwgc2ctPmxlbmd0aCwgRE1BX0ZST01fREVWSUNFKTsKIAotCQlEQkcoImRtYSBhZGRyZXNzID0gJTA4WCwgbGVuZ3RoID0gJWRcbiIsIHNnLT5kbWFfYWRkcmVzcywgc2ctPmxlbmd0aCk7CisJCXByX2RlYnVnKCJkbWEgYWRkcmVzcyA9ICUwOFgsIGxlbmd0aCA9ICVkXG4iLCBzZy0+ZG1hX2FkZHJlc3MsIHNnLT5sZW5ndGgpOwogCiAJCWlmIChpID09IDApIHsKIAkJCWF0OTFfbWNpX3dyaXRlKEFUOTFfUERDX1JQUiwgc2ctPmRtYV9hZGRyZXNzKTsKQEAgLTI1Nyw3ICsyNTAsNyBAQAogCQl9CiAJfQogCi0JREJHKCJwcmUgZG1hIHJlYWQgZG9uZVxuIik7CisJcHJfZGVidWcoInByZSBkbWEgcmVhZCBkb25lXG4iKTsKIH0KIAogLyoKQEAgLTI2OCwxNyArMjYxLDE3IEBACiAJc3RydWN0IG1tY19jb21tYW5kICpjbWQ7CiAJc3RydWN0IG1tY19kYXRhICpkYXRhOwogCi0JREJHKCJwb3N0IGRtYSByZWFkXG4iKTsKKwlwcl9kZWJ1ZygicG9zdCBkbWEgcmVhZFxuIik7CiAKIAljbWQgPSBob3N0LT5jbWQ7CiAJaWYgKCFjbWQpIHsKLQkJREJHKCJubyBjb21tYW5kXG4iKTsKKwkJcHJfZGVidWcoIm5vIGNvbW1hbmRcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJZGF0YSA9IGNtZC0+ZGF0YTsKIAlpZiAoIWRhdGEpIHsKLQkJREJHKCJubyBkYXRhXG4iKTsKKwkJcHJfZGVidWcoIm5vIGRhdGFcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0yODksMTcgKzI4MiwxNyBAQAogCiAJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CiAKLQkJREJHKCJmaW5pc2hpbmcgaW5kZXggJWRcbiIsIGhvc3QtPmluX3VzZV9pbmRleCk7CisJCXByX2RlYnVnKCJmaW5pc2hpbmcgaW5kZXggJWRcbiIsIGhvc3QtPmluX3VzZV9pbmRleCk7CiAKIAkJc2cgPSAmZGF0YS0+c2dbaG9zdC0+aW5fdXNlX2luZGV4KytdOwogCi0JCURCRygiVW5tYXBwaW5nIHBhZ2UgJTA4WFxuIiwgc2ctPmRtYV9hZGRyZXNzKTsKKwkJcHJfZGVidWcoIlVubWFwcGluZyBwYWdlICUwOFhcbiIsIHNnLT5kbWFfYWRkcmVzcyk7CiAKIAkJZG1hX3VubWFwX3BhZ2UoTlVMTCwgc2ctPmRtYV9hZGRyZXNzLCBzZy0+bGVuZ3RoLCBETUFfRlJPTV9ERVZJQ0UpOwogCiAJCS8qIFN3YXAgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgKi8KIAkJYnVmZmVyID0ga21hcF9hdG9taWMoc2ctPnBhZ2UsIEtNX0JJT19TUkNfSVJRKSArIHNnLT5vZmZzZXQ7Ci0JCURCRygiYnVmZmVyID0gJXAsIGxlbmd0aCA9ICVkXG4iLCBidWZmZXIsIHNnLT5sZW5ndGgpOworCQlwcl9kZWJ1ZygiYnVmZmVyID0gJXAsIGxlbmd0aCA9ICVkXG4iLCBidWZmZXIsIHNnLT5sZW5ndGgpOwogCiAJCWRhdGEtPmJ5dGVzX3hmZXJlZCArPSBzZy0+bGVuZ3RoOwogCkBAIC0zMjAsNyArMzEzLDcgQEAKIAkJYXQ5MV9tY2lfd3JpdGUoQVQ5MV9QRENfUFRDUiwgQVQ5MV9QRENfUlhURElTIHwgQVQ5MV9QRENfVFhURElTKTsKIAl9CiAKLQlEQkcoInBvc3QgZG1hIHJlYWQgZG9uZVxuIik7CisJcHJfZGVidWcoInBvc3QgZG1hIHJlYWQgZG9uZVxuIik7CiB9CiAKIC8qCkBAIC0zMzEsNyArMzI0LDcgQEAKIAlzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZDsKIAlzdHJ1Y3QgbW1jX2RhdGEgKmRhdGE7CiAKLQlEQkcoIkhhbmRsaW5nIHRoZSB0cmFuc21pdFxuIik7CisJcHJfZGVidWcoIkhhbmRsaW5nIHRoZSB0cmFuc21pdFxuIik7CiAKIAkvKiBEaXNhYmxlIHRoZSB0cmFuc2ZlciAqLwogCWF0OTFfbWNpX3dyaXRlKEFUOTFfUERDX1BUQ1IsIEFUOTFfUERDX1JYVERJUyB8IEFUOTFfUERDX1RYVERJUyk7CkBAIC0zODcsMTIgKzM4MCwxMiBAQAogCS8qIE5vdCBzdXJlIGlmIHRoaXMgaXMgbmVlZGVkICovCiAjaWYgMAogCWlmICgoYXQ5MV9tY2lfcmVhZChBVDkxX01DSV9TUikgJiBBVDkxX01DSV9SVE9FKSAmJiAoY21kLT5vcGNvZGUgPT0gMSkpIHsKLQkJREJHKCJDbGVhcmluZyB0aW1lb3V0XG4iKTsKKwkJcHJfZGVidWcoIkNsZWFyaW5nIHRpbWVvdXRcbiIpOwogCQlhdDkxX21jaV93cml0ZShBVDkxX01DSV9BUkdSLCAwKTsKIAkJYXQ5MV9tY2lfd3JpdGUoQVQ5MV9NQ0lfQ01EUiwgQVQ5MV9NQ0lfT1BEQ01EKTsKIAkJd2hpbGUgKCEoYXQ5MV9tY2lfcmVhZChBVDkxX01DSV9TUikgJiBBVDkxX01DSV9DTURSRFkpKSB7CiAJCQkvKiBzcGluICovCi0JCQlEQkcoIkNsZWFyaW5nOiBTUiA9ICUwOFhcbiIsIGF0OTFfbWNpX3JlYWQoQVQ5MV9NQ0lfU1IpKTsKKwkJCXByX2RlYnVnKCJDbGVhcmluZzogU1IgPSAlMDhYXG4iLCBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX1NSKSk7CiAJCX0KIAl9CiAjZW5kaWYKQEAgLTQxMSw3ICs0MDQsNyBAQAogCX0KIAogCWlmIChkYXRhKSB7Ci0JCWJsb2NrX2xlbmd0aCA9IDEgPDwgZGF0YS0+Ymxrc3pfYml0czsKKwkJYmxvY2tfbGVuZ3RoID0gZGF0YS0+Ymxrc3o7CiAJCWJsb2NrcyA9IGRhdGEtPmJsb2NrczsKIAogCQkvKiBhbHdheXMgc2V0IGRhdGEgc3RhcnQgLSBhbHNvIHNldCBkaXJlY3Rpb24gZmxhZyBmb3IgcmVhZCAqLwpAQCAtNDM5LDcgKzQzMiw3IEBACiAJLyoKIAkgKiBTZXQgdGhlIGFyZ3VtZW50cyBhbmQgc2VuZCB0aGUgY29tbWFuZAogCSAqLwotCURCRygiU2VuZGluZyBjb21tYW5kICVkIGFzICUwOFgsIGFyZyA9ICUwOFgsIGJsb2NrcyA9ICVkLCBsZW5ndGggPSAlZCAoTVIgPSAlMDhsWClcbiIsCisJcHJfZGVidWcoIlNlbmRpbmcgY29tbWFuZCAlZCBhcyAlMDhYLCBhcmcgPSAlMDhYLCBibG9ja3MgPSAlZCwgbGVuZ3RoID0gJWQgKE1SID0gJTA4bFgpXG4iLAogCQljbWQtPm9wY29kZSwgY21kciwgY21kLT5hcmcsIGJsb2NrcywgYmxvY2tfbGVuZ3RoLCBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX01SKSk7CiAKIAlpZiAoIWRhdGEpIHsKQEAgLTQ5MSw3ICs0ODQsNyBAQAogCiAJCQlhdDkxbWNpX3NnX3RvX2RtYShob3N0LCBkYXRhKTsKIAotCQkJREJHKCJUcmFuc21pdHRpbmcgJWQgYnl0ZXNcbiIsIGhvc3QtPnRvdGFsX2xlbmd0aCk7CisJCQlwcl9kZWJ1ZygiVHJhbnNtaXR0aW5nICVkIGJ5dGVzXG4iLCBob3N0LT50b3RhbF9sZW5ndGgpOwogCiAJCQlhdDkxX21jaV93cml0ZShBVDkxX1BEQ19UUFIsIGhvc3QtPnBoeXNpY2FsX2FkZHJlc3MpOwogCQkJYXQ5MV9tY2lfd3JpdGUoQVQ5MV9QRENfVENSLCBob3N0LT50b3RhbF9sZW5ndGggLyA0KTsKQEAgLTUyNSw3ICs1MTgsNyBAQAogCiAJaWVyID0gYXQ5MV9tY2lfc2VuZF9jb21tYW5kKGhvc3QsIGNtZCk7CiAKLQlEQkcoInNldHRpbmcgaWVyIHRvICUwOFhcbiIsIGllcik7CisJcHJfZGVidWcoInNldHRpbmcgaWVyIHRvICUwOFhcbiIsIGllcik7CiAKIAkvKiBTdG9wIG9uIGVycm9ycyBvciB0aGUgcmVxdWlyZWQgdmFsdWUgKi8KIAlhdDkxX21jaV93cml0ZShBVDkxX01DSV9JRVIsIDB4ZmZmZjAwMDAgfCBpZXIpOwpAQCAtNTcwLDcgKzU2Myw3IEBACiAKIAlzdGF0dXMgPSBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX1NSKTsKIAotCURCRygiU3RhdHVzID0gJTA4WCBbJTA4WCAlMDhYICUwOFggJTA4WF1cbiIsCisJcHJfZGVidWcoIlN0YXR1cyA9ICUwOFggWyUwOFggJTA4WCAlMDhYICUwOFhdXG4iLAogCQkgc3RhdHVzLCBjbWQtPnJlc3BbMF0sIGNtZC0+cmVzcFsxXSwgY21kLT5yZXNwWzJdLCBjbWQtPnJlc3BbM10pOwogCiAJaWYgKHN0YXR1cyAmIChBVDkxX01DSV9SSU5ERSB8IEFUOTFfTUNJX1JESVJFIHwgQVQ5MV9NQ0lfUkNSQ0UgfApAQCAtNTkwLDcgKzU4Myw3IEBACiAJCQllbHNlCiAJCQkJY21kLT5lcnJvciA9IE1NQ19FUlJfRkFJTEVEOwogCi0JCQlEQkcoIkVycm9yIGRldGVjdGVkIGFuZCBzZXQgdG8gJWQgKGNtZCA9ICVkLCByZXRyaWVzID0gJWQpXG4iLAorCQkJcHJfZGVidWcoIkVycm9yIGRldGVjdGVkIGFuZCBzZXQgdG8gJWQgKGNtZCA9ICVkLCByZXRyaWVzID0gJWQpXG4iLAogCQkJCSBjbWQtPmVycm9yLCBjbWQtPm9wY29kZSwgY21kLT5yZXRyaWVzKTsKIAkJfQogCX0KQEAgLTYyMSwxMCArNjE0LDcgQEAKIAlzdHJ1Y3QgYXQ5MW1jaV9ob3N0ICpob3N0ID0gbW1jX3ByaXYobW1jKTsKIAl1bnNpZ25lZCBsb25nIGF0OTFfbWFzdGVyX2Nsb2NrID0gY2xrX2dldF9yYXRlKG1jaV9jbGspOwogCi0JaWYgKGhvc3QpCi0JCWhvc3QtPmJ1c19tb2RlID0gaW9zLT5idXNfbW9kZTsKLQllbHNlCi0JCXByaW50aygiTU1DOiBObyBob3N0IGZvciBidXNfbW9kZVxuIik7CisJaG9zdC0+YnVzX21vZGUgPSBpb3MtPmJ1c19tb2RlOwogCiAJaWYgKGlvcy0+Y2xvY2sgPT0gMCkgewogCQkvKiBEaXNhYmxlIHRoZSBNQ0kgY29udHJvbGxlciAqLwpAQCAtNjQwLDE1ICs2MzAsMTUgQEAKIAkJZWxzZQogCQkJY2xrZGl2ID0gKGF0OTFfbWFzdGVyX2Nsb2NrIC8gaW9zLT5jbG9jaykgLyAyOwogCi0JCURCRygiY2xrZGl2ID0gJWQuIG1jY2sgPSAlbGRcbiIsIGNsa2RpdiwKKwkJcHJfZGVidWcoImNsa2RpdiA9ICVkLiBtY2NrID0gJWxkXG4iLCBjbGtkaXYsCiAJCQlhdDkxX21hc3Rlcl9jbG9jayAvICgyICogKGNsa2RpdiArIDEpKSk7CiAJfQogCWlmIChpb3MtPmJ1c193aWR0aCA9PSBNTUNfQlVTX1dJRFRIXzQgJiYgaG9zdC0+Ym9hcmQtPndpcmU0KSB7Ci0JCURCRygiTU1DOiBTZXR0aW5nIGNvbnRyb2xsZXIgYnVzIHdpZHRoIHRvIDRcbiIpOworCQlwcl9kZWJ1ZygiTU1DOiBTZXR0aW5nIGNvbnRyb2xsZXIgYnVzIHdpZHRoIHRvIDRcbiIpOwogCQlhdDkxX21jaV93cml0ZShBVDkxX01DSV9TRENSLCBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX1NEQ1IpIHwgQVQ5MV9NQ0lfU0RDQlVTKTsKIAl9CiAJZWxzZSB7Ci0JCURCRygiTU1DOiBTZXR0aW5nIGNvbnRyb2xsZXIgYnVzIHdpZHRoIHRvIDFcbiIpOworCQlwcl9kZWJ1ZygiTU1DOiBTZXR0aW5nIGNvbnRyb2xsZXIgYnVzIHdpZHRoIHRvIDFcbiIpOwogCQlhdDkxX21jaV93cml0ZShBVDkxX01DSV9TRENSLCBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX1NEQ1IpICYgfkFUOTFfTUNJX1NEQ0JVUyk7CiAJfQogCkBAIC02NTYsNyArNjQ2LDcgQEAKIAlhdDkxX21jaV93cml0ZShBVDkxX01DSV9NUiwgKGF0OTFfbWNpX3JlYWQoQVQ5MV9NQ0lfTVIpICYgfkFUOTFfTUNJX0NMS0RJVikgfCBjbGtkaXYpOwogCiAJLyogbWF5YmUgc3dpdGNoIHBvd2VyIHRvIHRoZSBjYXJkICovCi0JaWYgKGhvc3QgJiYgaG9zdC0+Ym9hcmQtPnZjY19waW4pIHsKKwlpZiAoaG9zdC0+Ym9hcmQtPnZjY19waW4pIHsKIAkJc3dpdGNoIChpb3MtPnBvd2VyX21vZGUpIHsKIAkJCWNhc2UgTU1DX1BPV0VSX09GRjoKIAkJCQlhdDkxX3NldF9ncGlvX291dHB1dChob3N0LT5ib2FyZC0+dmNjX3BpbiwgMCk7CkBAIC02NzksMTEgKzY2OSw4IEBACiAKIAl1bnNpZ25lZCBpbnQgaW50X3N0YXR1czsKIAotCWlmIChob3N0ID09IE5VTEwpCi0JCXJldHVybiBJUlFfSEFORExFRDsKLQogCWludF9zdGF0dXMgPSBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX1NSKTsKLQlEQkcoIk1DSSBpcnE6IHN0YXR1cyA9ICUwOFgsICUwOGxYLCAlMDhsWFxuIiwgaW50X3N0YXR1cywgYXQ5MV9tY2lfcmVhZChBVDkxX01DSV9JTVIpLAorCXByX2RlYnVnKCJNQ0kgaXJxOiBzdGF0dXMgPSAlMDhYLCAlMDhsWCwgJTA4bFhcbiIsIGludF9zdGF0dXMsIGF0OTFfbWNpX3JlYWQoQVQ5MV9NQ0lfSU1SKSwKIAkJaW50X3N0YXR1cyAmIGF0OTFfbWNpX3JlYWQoQVQ5MV9NQ0lfSU1SKSk7CiAKIAlpZiAoKGludF9zdGF0dXMgJiBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX0lNUikpICYgMHhmZmZmMDAwMCkKQEAgLTY5Miw3NSArNjc5LDc1IEBACiAJaW50X3N0YXR1cyAmPSBhdDkxX21jaV9yZWFkKEFUOTFfTUNJX0lNUik7CiAKIAlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX1VOUkUpCi0JCURCRygiTU1DOiBVbmRlcnJ1biBlcnJvclxuIik7CisJCXByX2RlYnVnKCJNTUM6IFVuZGVycnVuIGVycm9yXG4iKTsKIAlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX09WUkUpCi0JCURCRygiTU1DOiBPdmVycnVuIGVycm9yXG4iKTsKKwkJcHJfZGVidWcoIk1NQzogT3ZlcnJ1biBlcnJvclxuIik7CiAJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9EVE9FKQotCQlEQkcoIk1NQzogRGF0YSB0aW1lb3V0XG4iKTsKKwkJcHJfZGVidWcoIk1NQzogRGF0YSB0aW1lb3V0XG4iKTsKIAlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX0RDUkNFKQotCQlEQkcoIk1NQzogQ1JDIGVycm9yIGluIGRhdGFcbiIpOworCQlwcl9kZWJ1ZygiTU1DOiBDUkMgZXJyb3IgaW4gZGF0YVxuIik7CiAJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9SVE9FKQotCQlEQkcoIk1NQzogUmVzcG9uc2UgdGltZW91dFxuIik7CisJCXByX2RlYnVnKCJNTUM6IFJlc3BvbnNlIHRpbWVvdXRcbiIpOwogCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfUkVOREUpCi0JCURCRygiTU1DOiBSZXNwb25zZSBlbmQgYml0IGVycm9yXG4iKTsKKwkJcHJfZGVidWcoIk1NQzogUmVzcG9uc2UgZW5kIGJpdCBlcnJvclxuIik7CiAJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9SQ1JDRSkKLQkJREJHKCJNTUM6IFJlc3BvbnNlIENSQyBlcnJvclxuIik7CisJCXByX2RlYnVnKCJNTUM6IFJlc3BvbnNlIENSQyBlcnJvclxuIik7CiAJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9SRElSRSkKLQkJREJHKCJNTUM6IFJlc3BvbnNlIGRpcmVjdGlvbiBlcnJvclxuIik7CisJCXByX2RlYnVnKCJNTUM6IFJlc3BvbnNlIGRpcmVjdGlvbiBlcnJvclxuIik7CiAJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9SSU5ERSkKLQkJREJHKCJNTUM6IFJlc3BvbnNlIGluZGV4IGVycm9yXG4iKTsKKwkJcHJfZGVidWcoIk1NQzogUmVzcG9uc2UgaW5kZXggZXJyb3JcbiIpOwogCiAJLyogT25seSBjb250aW51ZSBwcm9jZXNzaW5nIGlmIG5vIGVycm9ycyAqLwogCWlmICghY29tcGxldGVkKSB7CiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfVFhCVUZFKSB7Ci0JCQlEQkcoIlRYIGJ1ZmZlciBlbXB0eVxuIik7CisJCQlwcl9kZWJ1ZygiVFggYnVmZmVyIGVtcHR5XG4iKTsKIAkJCWF0OTFfbWNpX2hhbmRsZV90cmFuc21pdHRlZChob3N0KTsKIAkJfQogCiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfUlhCVUZGKSB7Ci0JCQlEQkcoIlJYIGJ1ZmZlciBmdWxsXG4iKTsKKwkJCXByX2RlYnVnKCJSWCBidWZmZXIgZnVsbFxuIik7CiAJCQlhdDkxX21jaV93cml0ZShBVDkxX01DSV9JRVIsIEFUOTFfTUNJX0NNRFJEWSk7CiAJCX0KIAogCQlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX0VORFRYKSB7Ci0JCQlEQkcoIlRyYW5zbWl0IGhhcyBlbmRlZFxuIik7CisJCQlwcl9kZWJ1ZygiVHJhbnNtaXQgaGFzIGVuZGVkXG4iKTsKIAkJfQogCiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfRU5EUlgpIHsKLQkJCURCRygiUmVjZWl2ZSBoYXMgZW5kZWRcbiIpOworCQkJcHJfZGVidWcoIlJlY2VpdmUgaGFzIGVuZGVkXG4iKTsKIAkJCWF0OTFtY2lfcG9zdF9kbWFfcmVhZChob3N0KTsKIAkJfQogCiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfTk9UQlVTWSkgewotCQkJREJHKCJDYXJkIGlzIHJlYWR5XG4iKTsKKwkJCXByX2RlYnVnKCJDYXJkIGlzIHJlYWR5XG4iKTsKIAkJCWF0OTFfbWNpX3dyaXRlKEFUOTFfTUNJX0lFUiwgQVQ5MV9NQ0lfQ01EUkRZKTsKIAkJfQogCiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfRFRJUCkgewotCQkJREJHKCJEYXRhIHRyYW5zZmVyIGluIHByb2dyZXNzXG4iKTsKKwkJCXByX2RlYnVnKCJEYXRhIHRyYW5zZmVyIGluIHByb2dyZXNzXG4iKTsKIAkJfQogCiAJCWlmIChpbnRfc3RhdHVzICYgQVQ5MV9NQ0lfQkxLRSkgewotCQkJREJHKCJCbG9jayB0cmFuc2ZlciBoYXMgZW5kZWRcbiIpOworCQkJcHJfZGVidWcoIkJsb2NrIHRyYW5zZmVyIGhhcyBlbmRlZFxuIik7CiAJCX0KIAogCQlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX1RYUkRZKSB7Ci0JCQlEQkcoIlJlYWR5IHRvIHRyYW5zbWl0XG4iKTsKKwkJCXByX2RlYnVnKCJSZWFkeSB0byB0cmFuc21pdFxuIik7CiAJCX0KIAogCQlpZiAoaW50X3N0YXR1cyAmIEFUOTFfTUNJX1JYUkRZKSB7Ci0JCQlEQkcoIlJlYWR5IHRvIHJlY2VpdmVcbiIpOworCQkJcHJfZGVidWcoIlJlYWR5IHRvIHJlY2VpdmVcbiIpOwogCQl9CiAKIAkJaWYgKGludF9zdGF0dXMgJiBBVDkxX01DSV9DTURSRFkpIHsKLQkJCURCRygiQ29tbWFuZCByZWFkeVxuIik7CisJCQlwcl9kZWJ1ZygiQ29tbWFuZCByZWFkeVxuIik7CiAJCQljb21wbGV0ZWQgPSAxOwogCQl9CiAJfQogCWF0OTFfbWNpX3dyaXRlKEFUOTFfTUNJX0lEUiwgaW50X3N0YXR1cyk7CiAKIAlpZiAoY29tcGxldGVkKSB7Ci0JCURCRygiQ29tcGxldGVkIGNvbW1hbmRcbiIpOworCQlwcl9kZWJ1ZygiQ29tcGxldGVkIGNvbW1hbmRcbiIpOwogCQlhdDkxX21jaV93cml0ZShBVDkxX01DSV9JRFIsIDB4ZmZmZmZmZmYpOwogCQlhdDkxbWNpX2NvbXBsZXRlZF9jb21tYW5kKGhvc3QpOwogCX0KQEAgLTc3OSwxMCArNzY2LDEwIEBACiAJICovCiAJaWYgKHByZXNlbnQgIT0gaG9zdC0+cHJlc2VudCkgewogCQlob3N0LT5wcmVzZW50ID0gcHJlc2VudDsKLQkJREJHKCIlczogY2FyZCAlc1xuIiwgbW1jX2hvc3RuYW1lKGhvc3QtPm1tYyksCisJCXByX2RlYnVnKCIlczogY2FyZCAlc1xuIiwgbW1jX2hvc3RuYW1lKGhvc3QtPm1tYyksCiAJCQlwcmVzZW50ID8gImluc2VydCIgOiAicmVtb3ZlIik7CiAJCWlmICghcHJlc2VudCkgewotCQkJREJHKCIqKioqKiogUmVzZXR0aW5nIFNELWNhcmQgYnVzIHdpZHRoICoqKioqKlxuIik7CisJCQlwcl9kZWJ1ZygiKioqKioqIFJlc2V0dGluZyBTRC1jYXJkIGJ1cyB3aWR0aCAqKioqKipcbiIpOwogCQkJYXQ5MV9tY2lfd3JpdGUoQVQ5MV9NQ0lfU0RDUiwgMCk7CiAJCX0KIAkJbW1jX2RldGVjdF9jaGFuZ2UoaG9zdC0+bW1jLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpOwpAQCAtODIyLDEzICs4MDksMTMgQEAKIAlzdHJ1Y3QgYXQ5MW1jaV9ob3N0ICpob3N0OwogCWludCByZXQ7CiAKLQlEQkcoIlByb2JlIE1DSSBkZXZpY2VzXG4iKTsKKwlwcl9kZWJ1ZygiUHJvYmUgTUNJIGRldmljZXNcbiIpOwogCWF0OTFfbWNpX2Rpc2FibGUoKTsKIAlhdDkxX21jaV9lbmFibGUoKTsKIAogCW1tYyA9IG1tY19hbGxvY19ob3N0KHNpemVvZihzdHJ1Y3QgYXQ5MW1jaV9ob3N0KSwgJnBkZXYtPmRldik7CiAJaWYgKCFtbWMpIHsKLQkJREJHKCJGYWlsZWQgdG8gYWxsb2NhdGUgbW1jIGhvc3RcbiIpOworCQlwcl9kZWJ1ZygiRmFpbGVkIHRvIGFsbG9jYXRlIG1tYyBob3N0XG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCkBAIC04NTQsOCArODQxLDkgQEAKIAkgKiBHZXQgQ2xvY2sKIAkgKi8KIAltY2lfY2xrID0gY2xrX2dldCgmcGRldi0+ZGV2LCAibWNpX2NsayIpOwotCWlmICghbWNpX2NsaykgeworCWlmIChJU19FUlIobWNpX2NsaykpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJBVDkxIE1NQzogbm8gY2xvY2sgZGVmaW5lZC5cbiIpOworCQltbWNfZnJlZV9ob3N0KG1tYyk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIAljbGtfZW5hYmxlKG1jaV9jbGspOwkJCS8qIEVuYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9jayAqLwpAQCAtODY1LDcgKzg1MywxMCBAQAogCSAqLwogCXJldCA9IHJlcXVlc3RfaXJxKEFUOTFfSURfTUNJLCBhdDkxX21jaV9pcnEsIFNBX1NISVJRLCBEUklWRVJfTkFNRSwgaG9zdCk7CiAJaWYgKHJldCkgewotCQlEQkcoIkZhaWxlZCB0byByZXF1ZXN0IE1DSSBpbnRlcnJ1cHRcbiIpOworCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZXF1ZXN0IE1DSSBpbnRlcnJ1cHRcbiIpOworCQljbGtfZGlzYWJsZShtY2lfY2xrKTsKKwkJY2xrX3B1dChtY2lfY2xrKTsKKwkJbW1jX2ZyZWVfaG9zdChtbWMpOwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtODg2LDEyICs4NzcsMTIgQEAKIAkgKi8KIAlpZiAoaG9zdC0+Ym9hcmQtPmRldF9waW4pIHsKIAkJcmV0ID0gcmVxdWVzdF9pcnEoaG9zdC0+Ym9hcmQtPmRldF9waW4sIGF0OTFfbW1jX2RldF9pcnEsCi0JCQkJU0FfU0FNUExFX1JBTkRPTSwgRFJJVkVSX05BTUUsIGhvc3QpOworCQkJCTAsIERSSVZFUl9OQU1FLCBob3N0KTsKIAkJaWYgKHJldCkKLQkJCURCRygiY291bGRuJ3QgYWxsb2NhdGUgTU1DIGRldGVjdCBpcnFcbiIpOworCQkJcHJpbnRrKEtFUk5fRVJSICJjb3VsZG4ndCBhbGxvY2F0ZSBNTUMgZGV0ZWN0IGlycVxuIik7CiAJfQogCi0JREJHKEtFUk5fSU5GTyAiQWRkZWQgTUNJIGRyaXZlclxuIik7CisJcHJfZGVidWcoS0VSTl9JTkZPICJBZGRlZCBNQ0kgZHJpdmVyXG4iKTsKIAogCXJldHVybiAwOwogfQpAQCAtOTI0LDcgKzkxNSw3IEBACiAKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAotCURCRygiUmVtb3ZlZFxuIik7CisJcHJfZGVidWcoIk1DSSBSZW1vdmVkXG4iKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaW14bW1jLmMgYi9kcml2ZXJzL21tYy9pbXhtbWMuYwppbmRleCBhNGViMWQwLi41YzYyZjRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9pbXhtbWMuYworKysgYi9kcml2ZXJzL21tYy9pbXhtbWMuYwpAQCAtMjI4LDcgKzIyOCw3IEBACiBzdGF0aWMgdm9pZCBpbXhtY2lfc2V0dXBfZGF0YShzdHJ1Y3QgaW14bWNpX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfZGF0YSAqZGF0YSkKIHsKIAl1bnNpZ25lZCBpbnQgbm9iID0gZGF0YS0+YmxvY2tzOwotCXVuc2lnbmVkIGludCBibGtzeiA9IDEgPDwgZGF0YS0+Ymxrc3pfYml0czsKKwl1bnNpZ25lZCBpbnQgYmxrc3ogPSBkYXRhLT5ibGtzejsKIAl1bnNpZ25lZCBpbnQgZGF0YXN6ID0gbm9iICogYmxrc3o7CiAJaW50IGk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL29tYXAuYyBiL2RyaXZlcnMvbW1jL29tYXAuYwppbmRleCBiZWNiM2M2Li5jMjUyNDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9vbWFwLmMKKysrIGIvZHJpdmVycy9tbWMvb21hcC5jCkBAIC01ODQsMTAgKzU4NCwxMCBAQAogCWludCBzeW5jX2RldiA9IDA7CiAKIAlkYXRhX2FkZHIgPSBpb192MnAoKHUzMikgaG9zdC0+YmFzZSkgKyBPTUFQX01NQ19SRUdfREFUQTsKLQlmcmFtZSA9IDEgPDwgZGF0YS0+Ymxrc3pfYml0czsKKwlmcmFtZSA9IGRhdGEtPmJsa3N6OwogCWNvdW50ID0gc2dfZG1hX2xlbihzZyk7CiAKLQlpZiAoKGRhdGEtPmJsb2NrcyA9PSAxKSAmJiAoY291bnQgPiAoMSA8PCBkYXRhLT5ibGtzel9iaXRzKSkpCisJaWYgKChkYXRhLT5ibG9ja3MgPT0gMSkgJiYgKGNvdW50ID4gZGF0YS0+Ymxrc3opKQogCQljb3VudCA9IGZyYW1lOwogCiAJaG9zdC0+ZG1hX2xlbiA9IGNvdW50OwpAQCAtNzc2LDcgKzc3Niw3IEBACiAJfQogCiAKLQlibG9ja19zaXplID0gMSA8PCBkYXRhLT5ibGtzel9iaXRzOworCWJsb2NrX3NpemUgPSBkYXRhLT5ibGtzejsKIAogCU9NQVBfTU1DX1dSSVRFKGhvc3QtPmJhc2UsIE5CTEssIGRhdGEtPmJsb2NrcyAtIDEpOwogCU9NQVBfTU1DX1dSSVRFKGhvc3QtPmJhc2UsIEJMRU4sIGJsb2NrX3NpemUgLSAxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL3NkaGNpLmMgYi9kcml2ZXJzL21tYy9zZGhjaS5jCmluZGV4IDZiZmNkYmMuLjhlOTEwMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL3NkaGNpLmMKKysrIGIvZHJpdmVycy9tbWMvc2RoY2kuYwpAQCAtMjY4LDcgKzI2OCw3IEBACiAJfQogCiAJREJHKCJibGtzeiAlMDR4IGJsa3MgJTA0eCBmbGFncyAlMDh4XG4iLAotCQkxIDw8IGRhdGEtPmJsa3N6X2JpdHMsIGRhdGEtPmJsb2NrcywgZGF0YS0+ZmxhZ3MpOworCQlkYXRhLT5ibGtzeiwgZGF0YS0+YmxvY2tzLCBkYXRhLT5mbGFncyk7CiAJREJHKCJ0c2FjICVkIG1zIG5zYWMgJWQgY2xrXG4iLAogCQlkYXRhLT50aW1lb3V0X25zIC8gMTAwMDAwMCwgZGF0YS0+dGltZW91dF9jbGtzKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBACiAKIAl3cml0ZXcobW9kZSwgaG9zdC0+aW9hZGRyICsgU0RIQ0lfVFJBTlNGRVJfTU9ERSk7CiAKLQl3cml0ZXcoMSA8PCBkYXRhLT5ibGtzel9iaXRzLCBob3N0LT5pb2FkZHIgKyBTREhDSV9CTE9DS19TSVpFKTsKKwl3cml0ZXcoZGF0YS0+Ymxrc3osIGhvc3QtPmlvYWRkciArIFNESENJX0JMT0NLX1NJWkUpOwogCXdyaXRldyhkYXRhLT5ibG9ja3MsIGhvc3QtPmlvYWRkciArIFNESENJX0JMT0NLX0NPVU5UKTsKIAogCWlmIChob3N0LT5mbGFncyAmIFNESENJX1VTRV9ETUEpIHsKQEAgLTI5NCw3ICsyOTQsNyBAQAogCiAJCXdyaXRlbChzZ19kbWFfYWRkcmVzcyhkYXRhLT5zZyksIGhvc3QtPmlvYWRkciArIFNESENJX0RNQV9BRERSRVNTKTsKIAl9IGVsc2UgewotCQlob3N0LT5zaXplID0gKDEgPDwgZGF0YS0+Ymxrc3pfYml0cykgKiBkYXRhLT5ibG9ja3M7CisJCWhvc3QtPnNpemUgPSBkYXRhLT5ibGtzeiAqIGRhdGEtPmJsb2NrczsKIAogCQlob3N0LT5jdXJfc2cgPSBkYXRhLT5zZzsKIAkJaG9zdC0+bnVtX3NnID0gZGF0YS0+c2dfbGVuOwpAQCAtMzM1LDcgKzMzNSw3IEBACiAJCWJsb2NrcyA9IDA7CiAJZWxzZQogCQlibG9ja3MgPSByZWFkdyhob3N0LT5pb2FkZHIgKyBTREhDSV9CTE9DS19DT1VOVCk7Ci0JZGF0YS0+Ynl0ZXNfeGZlcmVkID0gKDEgPDwgZGF0YS0+Ymxrc3pfYml0cykgKiAoZGF0YS0+YmxvY2tzIC0gYmxvY2tzKTsKKwlkYXRhLT5ieXRlc194ZmVyZWQgPSBkYXRhLT5ibGtzeiAqIChkYXRhLT5ibG9ja3MgLSBibG9ja3MpOwogCiAJaWYgKChkYXRhLT5lcnJvciA9PSBNTUNfRVJSX05PTkUpICYmIGJsb2NrcykgewogCQlwcmludGsoS0VSTl9FUlIgIiVzOiBDb250cm9sbGVyIHNpZ25hbGxlZCBjb21wbGV0aW9uIGV2ZW4gIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvM2M1MjcuYyBiL2RyaXZlcnMvbmV0LzNjNTI3LmMKaW5kZXggMWIxY2IwMC4uMTU3ZWRhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvM2M1MjcuYworKysgYi9kcml2ZXJzL25ldC8zYzUyNy5jCkBAIC0xMDMxLDggKzEwMzEsNyBAQAogCQlyZXR1cm4gMTsKIAl9CiAKLQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JaWYgKHNrYiA9PSBOVUxMKSB7CisJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkgewogCQluZXRpZl93YWtlX3F1ZXVlKGRldik7CiAJCXJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTl4LmMgYi9kcml2ZXJzL25ldC8zYzU5eC5jCmluZGV4IDI3NGIwMTMuLmUyNzc3ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTl4LmMKKysrIGIvZHJpdmVycy9uZXQvM2M1OXguYwpAQCAtMTM4MiwxNyArMTM4MiwxMiBAQAogCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspCiAJCWlvd3JpdGU4KGRldi0+ZGV2X2FkZHJbaV0sIGlvYWRkciArIGkpOwogCi0jaWZkZWYgX19zcGFyY19fCi0JaWYgKHByaW50X2luZm8pCi0JCXByaW50aygiLCBJUlEgJXNcbiIsIF9faXJxX2l0b2EoZGV2LT5pcnEpKTsKLSNlbHNlCiAJaWYgKHByaW50X2luZm8pCiAJCXByaW50aygiLCBJUlEgJWRcbiIsIGRldi0+aXJxKTsKIAkvKiBUZWxsIHRoZW0gYWJvdXQgYW4gaW52YWxpZCBJUlEuICovCiAJaWYgKGRldi0+aXJxIDw9IDAgfHwgZGV2LT5pcnEgPj0gTlJfSVJRUykKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiICoqKiBXYXJuaW5nOiBJUlEgJWQgaXMgdW5saWtlbHkgdG8gd29yayEgKioqXG4iLAogCQkJICAgZGV2LT5pcnEpOwotI2VuZGlmCiAKIAlFTDNXSU5ET1coNCk7CiAJc3RlcCA9IChpb3JlYWQ4KGlvYWRkciArIFduNF9OZXREaWFnKSAmIDB4MWUpID4+IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC84MTM5Y3AuYyBiL2RyaXZlcnMvbmV0LzgxMzljcC5jCmluZGV4IDQ2ZDhjMDEuLjBjZGM4MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzgxMzljcC5jCisrKyBiL2RyaXZlcnMvbmV0LzgxMzljcC5jCkBAIC00MDEsNiArNDAxLDExIEBACiAjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIKIHN0YXRpYyB2b2lkIGNwX3BvbGxfY29udHJvbGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICNlbmRpZgorc3RhdGljIGludCBjcF9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKK3N0YXRpYyBpbnQgY3BfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqZGF0YSk7CitzdGF0aWMgaW50IGNwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmRhdGEpOwogCiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgY3BfcGNpX3RibFtdID0gewogCXsgUENJX1ZFTkRPUl9JRF9SRUFMVEVLLCBQQ0lfREVWSUNFX0lEX1JFQUxURUtfODEzOSwKQEAgLTc5Miw3ICs3OTcsNyBAQAogCWVudHJ5ID0gY3AtPnR4X2hlYWQ7CiAJZW9yID0gKGVudHJ5ID09IChDUF9UWF9SSU5HX1NJWkUgLSAxKSkgPyBSaW5nRW5kIDogMDsKIAlpZiAoZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVFNPKQotCQltc3MgPSBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplOworCQltc3MgPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOwogCiAJaWYgKHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3MgPT0gMCkgewogCQlzdHJ1Y3QgY3BfZGVzYyAqdHhkID0gJmNwLT50eF9yaW5nW2VudHJ5XTsKQEAgLTE1NzcsNiArMTU4Miw5IEBACiAJLmdldF9zdHJpbmdzCQk9IGNwX2dldF9zdHJpbmdzLAogCS5nZXRfZXRodG9vbF9zdGF0cwk9IGNwX2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfcGVybV9hZGRyCQk9IGV0aHRvb2xfb3BfZ2V0X3Blcm1fYWRkciwKKwkuZ2V0X2VlcHJvbV9sZW4JCT0gY3BfZ2V0X2VlcHJvbV9sZW4sCisJLmdldF9lZXByb20JCT0gY3BfZ2V0X2VlcHJvbSwKKwkuc2V0X2VlcHJvbQkJPSBjcF9zZXRfZWVwcm9tLAogfTsKIAogc3RhdGljIGludCBjcF9pb2N0bCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZCkKQEAgLTE2MTIsMjQgKzE2MjAsMzIgQEAKICNkZWZpbmUgZWVwcm9tX2RlbGF5KCkJcmVhZGwoZWVfYWRkcikKIAogLyogVGhlIEVFUFJPTSBjb21tYW5kcyBpbmNsdWRlIHRoZSBhbHdheS1zZXQgbGVhZGluZyBiaXQuICovCisjZGVmaW5lIEVFX0VYVEVORF9DTUQJKDQpCiAjZGVmaW5lIEVFX1dSSVRFX0NNRAkoNSkKICNkZWZpbmUgRUVfUkVBRF9DTUQJCSg2KQogI2RlZmluZSBFRV9FUkFTRV9DTUQJKDcpCiAKLXN0YXRpYyBpbnQgcmVhZF9lZXByb20gKHZvaWQgX19pb21lbSAqaW9hZGRyLCBpbnQgbG9jYXRpb24sIGludCBhZGRyX2xlbikKLXsKLQlpbnQgaTsKLQl1bnNpZ25lZCByZXR2YWwgPSAwOwotCXZvaWQgX19pb21lbSAqZWVfYWRkciA9IGlvYWRkciArIENmZzkzNDY7Ci0JaW50IHJlYWRfY21kID0gbG9jYXRpb24gfCAoRUVfUkVBRF9DTUQgPDwgYWRkcl9sZW4pOworI2RlZmluZSBFRV9FV0RTX0FERFIJKDApCisjZGVmaW5lIEVFX1dSQUxfQUREUgkoMSkKKyNkZWZpbmUgRUVfRVJBTF9BRERSCSgyKQorI2RlZmluZSBFRV9FV0VOX0FERFIJKDMpCiAKKyNkZWZpbmUgQ1BfRUVQUk9NX01BR0lDIFBDSV9ERVZJQ0VfSURfUkVBTFRFS184MTM5CisKK3N0YXRpYyB2b2lkIGVlcHJvbV9jbWRfc3RhcnQodm9pZCBfX2lvbWVtICplZV9hZGRyKQorewogCXdyaXRlYiAoRUVfRU5CICYgfkVFX0NTLCBlZV9hZGRyKTsKIAl3cml0ZWIgKEVFX0VOQiwgZWVfYWRkcik7CiAJZWVwcm9tX2RlbGF5ICgpOworfQogCi0JLyogU2hpZnQgdGhlIHJlYWQgY29tbWFuZCBiaXRzIG91dC4gKi8KLQlmb3IgKGkgPSA0ICsgYWRkcl9sZW47IGkgPj0gMDsgaS0tKSB7Ci0JCWludCBkYXRhdmFsID0gKHJlYWRfY21kICYgKDEgPDwgaSkpID8gRUVfREFUQV9XUklURSA6IDA7CitzdGF0aWMgdm9pZCBlZXByb21fY21kKHZvaWQgX19pb21lbSAqZWVfYWRkciwgaW50IGNtZCwgaW50IGNtZF9sZW4pCit7CisJaW50IGk7CisKKwkvKiBTaGlmdCB0aGUgY29tbWFuZCBiaXRzIG91dC4gKi8KKwlmb3IgKGkgPSBjbWRfbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJaW50IGRhdGF2YWwgPSAoY21kICYgKDEgPDwgaSkpID8gRUVfREFUQV9XUklURSA6IDA7CiAJCXdyaXRlYiAoRUVfRU5CIHwgZGF0YXZhbCwgZWVfYWRkcik7CiAJCWVlcHJvbV9kZWxheSAoKTsKIAkJd3JpdGViIChFRV9FTkIgfCBkYXRhdmFsIHwgRUVfU0hJRlRfQ0xLLCBlZV9hZGRyKTsKQEAgLTE2MzcsNiArMTY1MywzMyBAQAogCX0KIAl3cml0ZWIgKEVFX0VOQiwgZWVfYWRkcik7CiAJZWVwcm9tX2RlbGF5ICgpOworfQorCitzdGF0aWMgdm9pZCBlZXByb21fY21kX2VuZCh2b2lkIF9faW9tZW0gKmVlX2FkZHIpCit7CisJd3JpdGViICh+RUVfQ1MsIGVlX2FkZHIpOworCWVlcHJvbV9kZWxheSAoKTsKK30KKworc3RhdGljIHZvaWQgZWVwcm9tX2V4dGVuZF9jbWQodm9pZCBfX2lvbWVtICplZV9hZGRyLCBpbnQgZXh0ZW5kX2NtZCwKKwkJCSAgICAgIGludCBhZGRyX2xlbikKK3sKKwlpbnQgY21kID0gKEVFX0VYVEVORF9DTUQgPDwgYWRkcl9sZW4pIHwgKGV4dGVuZF9jbWQgPDwgKGFkZHJfbGVuIC0gMikpOworCisJZWVwcm9tX2NtZF9zdGFydChlZV9hZGRyKTsKKwllZXByb21fY21kKGVlX2FkZHIsIGNtZCwgMyArIGFkZHJfbGVuKTsKKwllZXByb21fY21kX2VuZChlZV9hZGRyKTsKK30KKworc3RhdGljIHUxNiByZWFkX2VlcHJvbSAodm9pZCBfX2lvbWVtICppb2FkZHIsIGludCBsb2NhdGlvbiwgaW50IGFkZHJfbGVuKQoreworCWludCBpOworCXUxNiByZXR2YWwgPSAwOworCXZvaWQgX19pb21lbSAqZWVfYWRkciA9IGlvYWRkciArIENmZzkzNDY7CisJaW50IHJlYWRfY21kID0gbG9jYXRpb24gfCAoRUVfUkVBRF9DTUQgPDwgYWRkcl9sZW4pOworCisJZWVwcm9tX2NtZF9zdGFydChlZV9hZGRyKTsKKwllZXByb21fY21kKGVlX2FkZHIsIHJlYWRfY21kLCAzICsgYWRkcl9sZW4pOwogCiAJZm9yIChpID0gMTY7IGkgPiAwOyBpLS0pIHsKIAkJd3JpdGViIChFRV9FTkIgfCBFRV9TSElGVF9DTEssIGVlX2FkZHIpOwpAQCAtMTY0OCwxMyArMTY5MSwxMjUgQEAKIAkJZWVwcm9tX2RlbGF5ICgpOwogCX0KIAotCS8qIFRlcm1pbmF0ZSB0aGUgRUVQUk9NIGFjY2Vzcy4gKi8KLQl3cml0ZWIgKH5FRV9DUywgZWVfYWRkcik7Ci0JZWVwcm9tX2RlbGF5ICgpOworCWVlcHJvbV9jbWRfZW5kKGVlX2FkZHIpOwogCiAJcmV0dXJuIHJldHZhbDsKIH0KIAorc3RhdGljIHZvaWQgd3JpdGVfZWVwcm9tKHZvaWQgX19pb21lbSAqaW9hZGRyLCBpbnQgbG9jYXRpb24sIHUxNiB2YWwsCisJCQkgaW50IGFkZHJfbGVuKQoreworCWludCBpOworCXZvaWQgX19pb21lbSAqZWVfYWRkciA9IGlvYWRkciArIENmZzkzNDY7CisJaW50IHdyaXRlX2NtZCA9IGxvY2F0aW9uIHwgKEVFX1dSSVRFX0NNRCA8PCBhZGRyX2xlbik7CisKKwllZXByb21fZXh0ZW5kX2NtZChlZV9hZGRyLCBFRV9FV0VOX0FERFIsIGFkZHJfbGVuKTsKKworCWVlcHJvbV9jbWRfc3RhcnQoZWVfYWRkcik7CisJZWVwcm9tX2NtZChlZV9hZGRyLCB3cml0ZV9jbWQsIDMgKyBhZGRyX2xlbik7CisJZWVwcm9tX2NtZChlZV9hZGRyLCB2YWwsIDE2KTsKKwllZXByb21fY21kX2VuZChlZV9hZGRyKTsKKworCWVlcHJvbV9jbWRfc3RhcnQoZWVfYWRkcik7CisJZm9yIChpID0gMDsgaSA8IDIwMDAwOyBpKyspCisJCWlmIChyZWFkYihlZV9hZGRyKSAmIEVFX0RBVEFfUkVBRCkKKwkJCWJyZWFrOworCWVlcHJvbV9jbWRfZW5kKGVlX2FkZHIpOworCisJZWVwcm9tX2V4dGVuZF9jbWQoZWVfYWRkciwgRUVfRVdEU19BRERSLCBhZGRyX2xlbik7Cit9CisKK3N0YXRpYyBpbnQgY3BfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgY3BfcHJpdmF0ZSAqY3AgPSBuZXRkZXZfcHJpdihkZXYpOworCWludCBzaXplOworCisJc3Bpbl9sb2NrX2lycSgmY3AtPmxvY2spOworCXNpemUgPSByZWFkX2VlcHJvbShjcC0+cmVncywgMCwgOCkgPT0gMHg4MTI5ID8gMjU2IDogMTI4OworCXNwaW5fdW5sb2NrX2lycSgmY3AtPmxvY2spOworCisJcmV0dXJuIHNpemU7Cit9CisKK3N0YXRpYyBpbnQgY3BfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqZGF0YSkKK3sKKwlzdHJ1Y3QgY3BfcHJpdmF0ZSAqY3AgPSBuZXRkZXZfcHJpdihkZXYpOworCXVuc2lnbmVkIGludCBhZGRyX2xlbjsKKwl1MTYgdmFsOworCXUzMiBvZmZzZXQgPSBlZXByb20tPm9mZnNldCA+PiAxOworCXUzMiBsZW4gPSBlZXByb20tPmxlbjsKKwl1MzIgaSA9IDA7CisKKwllZXByb20tPm1hZ2ljID0gQ1BfRUVQUk9NX01BR0lDOworCisJc3Bpbl9sb2NrX2lycSgmY3AtPmxvY2spOworCisJYWRkcl9sZW4gPSByZWFkX2VlcHJvbShjcC0+cmVncywgMCwgOCkgPT0gMHg4MTI5ID8gOCA6IDY7CisKKwlpZiAoZWVwcm9tLT5vZmZzZXQgJiAxKSB7CisJCXZhbCA9IHJlYWRfZWVwcm9tKGNwLT5yZWdzLCBvZmZzZXQsIGFkZHJfbGVuKTsKKwkJZGF0YVtpKytdID0gKHU4KSh2YWwgPj4gOCk7CisJCW9mZnNldCsrOworCX0KKworCXdoaWxlIChpIDwgbGVuIC0gMSkgeworCQl2YWwgPSByZWFkX2VlcHJvbShjcC0+cmVncywgb2Zmc2V0LCBhZGRyX2xlbik7CisJCWRhdGFbaSsrXSA9ICh1OCl2YWw7CisJCWRhdGFbaSsrXSA9ICh1OCkodmFsID4+IDgpOworCQlvZmZzZXQrKzsKKwl9CisKKwlpZiAoaSA8IGxlbikgeworCQl2YWwgPSByZWFkX2VlcHJvbShjcC0+cmVncywgb2Zmc2V0LCBhZGRyX2xlbik7CisJCWRhdGFbaV0gPSAodTgpdmFsOworCX0KKworCXNwaW5fdW5sb2NrX2lycSgmY3AtPmxvY2spOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmRhdGEpCit7CisJc3RydWN0IGNwX3ByaXZhdGUgKmNwID0gbmV0ZGV2X3ByaXYoZGV2KTsKKwl1bnNpZ25lZCBpbnQgYWRkcl9sZW47CisJdTE2IHZhbDsKKwl1MzIgb2Zmc2V0ID0gZWVwcm9tLT5vZmZzZXQgPj4gMTsKKwl1MzIgbGVuID0gZWVwcm9tLT5sZW47CisJdTMyIGkgPSAwOworCisJaWYgKGVlcHJvbS0+bWFnaWMgIT0gQ1BfRUVQUk9NX01BR0lDKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXNwaW5fbG9ja19pcnEoJmNwLT5sb2NrKTsKKworCWFkZHJfbGVuID0gcmVhZF9lZXByb20oY3AtPnJlZ3MsIDAsIDgpID09IDB4ODEyOSA/IDggOiA2OworCisJaWYgKGVlcHJvbS0+b2Zmc2V0ICYgMSkgeworCQl2YWwgPSByZWFkX2VlcHJvbShjcC0+cmVncywgb2Zmc2V0LCBhZGRyX2xlbikgJiAweGZmOworCQl2YWwgfD0gKHUxNilkYXRhW2krK10gPDwgODsKKwkJd3JpdGVfZWVwcm9tKGNwLT5yZWdzLCBvZmZzZXQsIHZhbCwgYWRkcl9sZW4pOworCQlvZmZzZXQrKzsKKwl9CisKKwl3aGlsZSAoaSA8IGxlbiAtIDEpIHsKKwkJdmFsID0gKHUxNilkYXRhW2krK107CisJCXZhbCB8PSAodTE2KWRhdGFbaSsrXSA8PCA4OworCQl3cml0ZV9lZXByb20oY3AtPnJlZ3MsIG9mZnNldCwgdmFsLCBhZGRyX2xlbik7CisJCW9mZnNldCsrOworCX0KKworCWlmIChpIDwgbGVuKSB7CisJCXZhbCA9IHJlYWRfZWVwcm9tKGNwLT5yZWdzLCBvZmZzZXQsIGFkZHJfbGVuKSAmIDB4ZmYwMDsKKwkJdmFsIHw9ICh1MTYpZGF0YVtpXTsKKwkJd3JpdGVfZWVwcm9tKGNwLT5yZWdzLCBvZmZzZXQsIHZhbCwgYWRkcl9sZW4pOworCX0KKworCXNwaW5fdW5sb2NrX2lycSgmY3AtPmxvY2spOworCXJldHVybiAwOworfQorCiAvKiBQdXQgdGhlIGJvYXJkIGludG8gRDNjb2xkIHN0YXRlIGFuZCB3YWl0IGZvciBXYWtlVXAgc2lnbmFsICovCiBzdGF0aWMgdm9pZCBjcF9zZXRfZDNfc3RhdGUgKHN0cnVjdCBjcF9wcml2YXRlICpjcCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzgyNTk2LmMgYi9kcml2ZXJzL25ldC84MjU5Ni5jCmluZGV4IGRhMGM4NzguLjhhOWY3ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzgyNTk2LmMKKysrIGIvZHJpdmVycy9uZXQvODI1OTYuYwpAQCAtMTA3MCw4ICsxMDcwLDcgQEAKIAkJCQlza2ItPmxlbiwgKHVuc2lnbmVkIGludClza2ItPmRhdGEpKTsKIAogCWlmIChza2ItPmxlbiA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQorCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogCQkJcmV0dXJuIDA7CiAJCWxlbmd0aCA9IEVUSF9aTEVOOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzgzOTAuYyBiL2RyaXZlcnMvbmV0LzgzOTAuYwppbmRleCBmODcwMjc0Li44NmJlOTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC84MzkwLmMKKysrIGIvZHJpdmVycy9uZXQvODM5MC5jCkBAIC0yNzUsMTIgKzI3NSwxNCBAQAogCXN0cnVjdCBlaV9kZXZpY2UgKmVpX2xvY2FsID0gKHN0cnVjdCBlaV9kZXZpY2UgKikgbmV0ZGV2X3ByaXYoZGV2KTsKIAlpbnQgc2VuZF9sZW5ndGggPSBza2ItPmxlbiwgb3V0cHV0X3BhZ2U7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwljaGFyIGJ1ZltFVEhfWkxFTl07CisJY2hhciAqZGF0YSA9IHNrYi0+ZGF0YTsKIAogCWlmIChza2ItPmxlbiA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQotCQkJcmV0dXJuIDA7CisJCW1lbXNldChidWYsIDAsIEVUSF9aTEVOKTsJLyogbW9yZSBlZmZpY2llbnQgdGhhbiBkb2luZyBqdXN0IHRoZSBuZWVkZWQgYml0cyAqLworCQltZW1jcHkoYnVmLCBkYXRhLCBza2ItPmxlbik7CiAJCXNlbmRfbGVuZ3RoID0gRVRIX1pMRU47CisJCWRhdGEgPSBidWY7CiAJfQogCiAJLyogTWFzayBpbnRlcnJ1cHRzIGZyb20gdGhlIGV0aGVyY2FyZC4gCkBAIC0zNDcsNyArMzQ5LDcgQEAKIAkgKiB0cmlnZ2VyIHRoZSBzZW5kIGxhdGVyLCB1cG9uIHJlY2VpdmluZyBhIFR4IGRvbmUgaW50ZXJydXB0LgogCSAqLwogCSAKLQllaV9ibG9ja19vdXRwdXQoZGV2LCBzZW5kX2xlbmd0aCwgc2tiLT5kYXRhLCBvdXRwdXRfcGFnZSk7CisJZWlfYmxvY2tfb3V0cHV0KGRldiwgc2VuZF9sZW5ndGgsIGRhdGEsIG91dHB1dF9wYWdlKTsKIAkJCiAJaWYgKCEgZWlfbG9jYWwtPnR4aW5nKSAKIAl7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9LY29uZmlnIGIvZHJpdmVycy9uZXQvS2NvbmZpZwppbmRleCAwYzZiNDVhLi4zOTE4OTkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbmV0L0tjb25maWcKQEAgLTg1NCw2ICs4NTQsMTcgQEAKIAkgIDxmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXQtbW9kdWxlcy50eHQ+LiBUaGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBzbWM5MTk0LgogCitjb25maWcgTkVUX05FVFgKKwl0cmlzdGF0ZSAiTmV0WCBFdGhlcm5ldCBzdXBwb3J0IgorCXNlbGVjdCBNSUkKKwlkZXBlbmRzIG9uIE5FVF9FVEhFUk5FVCAmJiBBUkNIX05FVFgKKwloZWxwCisJICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBIaWxzY2hlciBuZXRYIGJ1aWx0aW4gRXRoZXJuZXQgcG9ydHMKKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZSBhbmQgcmVhZAorCSAgPGZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldC1tb2R1bGVzLnR4dD4uIFRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIG5ldHgtZXRoLgorCiBjb25maWcgRE05MDAwCiAJdHJpc3RhdGUgIkRNOTAwMCBzdXBwb3J0IgogCWRlcGVuZHMgb24gKEFSTSB8fCBNSVBTKSAmJiBORVRfRVRIRVJORVQKQEAgLTEzNzYsOCArMTM4Nyw4IEBACiAJICBjYWxsZWQgYXByaWNvdC4KIAogY29uZmlnIEI0NAotCXRyaXN0YXRlICJCcm9hZGNvbSA0NDAwIGV0aGVybmV0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCkiCi0JZGVwZW5kcyBvbiBORVRfUENJICYmIFBDSSAmJiBFWFBFUklNRU5UQUwKKwl0cmlzdGF0ZSAiQnJvYWRjb20gNDQwMCBldGhlcm5ldCBzdXBwb3J0IgorCWRlcGVuZHMgb24gTkVUX1BDSSAmJiBQQ0kKIAlzZWxlY3QgTUlJCiAJaGVscAogCSAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY29udHJvbGxlciBvZiB0aGlzIHR5cGUsIHNheSBZIGFuZApAQCAtMjE5MCw3ICsyMjAxLDcgQEAKIAogY29uZmlnIFNQSURFUl9ORVQKIAl0cmlzdGF0ZSAiU3BpZGVyIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyIgotCWRlcGVuZHMgb24gUENJICYmIFBQQ19DRUxMCisJZGVwZW5kcyBvbiBQQ0kgJiYgUFBDX0lCTV9DRUxMX0JMQURFCiAJc2VsZWN0IEZXX0xPQURFUgogCWhlbHAKIAkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBHaWdhYml0IEV0aGVybmV0IGNoaXBzIHByZXNlbnQgb24gdGhlCkBAIC0yMTk4LDExICsyMjA5LDExIEBACiAKIGNvbmZpZyBHSUFORkFSCiAJdHJpc3RhdGUgIkdpYW5mYXIgRXRoZXJuZXQiCi0JZGVwZW5kcyBvbiA4NXh4IHx8IDgzeHgKKwlkZXBlbmRzIG9uIDg1eHggfHwgODN4eCB8fCBQUENfODZ4eAogCXNlbGVjdCBQSFlMSUIKIAloZWxwCi0JICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4NXh4IAotCSAgZmFtaWx5IG9mIGNoaXBzLCBhbmQgdGhlIEZFQyBvbiB0aGUgODU0MAorCSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEdpZ2FiaXQgVFNFQyBvbiB0aGUgTVBDODN4eCwgTVBDODV4eCwKKwkgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgYW5kIHRoZSBGRUMgb24gdGhlIDg1NDAuCiAKIGNvbmZpZyBHRkFSX05BUEkKIAlib29sICJOQVBJIFN1cHBvcnQiCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L01ha2VmaWxlCmluZGV4IDFlY2VkMzIuLmM5MWU5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbmV0L01ha2VmaWxlCkBAIC0xODcsNiArMTg3LDcgQEAKIG9iai0kKENPTkZJR19NQUNNQUNFKSArPSBtYWNtYWNlLm8KIG9iai0kKENPTkZJR19NQUM4OXgwKSArPSBtYWM4OXgwLm8KIG9iai0kKENPTkZJR19UVU4pICs9IHR1bi5vCitvYmotJChDT05GSUdfTkVUX05FVFgpICs9IG5ldHgtZXRoLm8KIG9iai0kKENPTkZJR19ETDJLKSArPSBkbDJrLm8KIG9iai0kKENPTkZJR19SODE2OSkgKz0gcjgxNjkubwogb2JqLSQoQ09ORklHX0FNRDgxMTFfRVRIKSArPSBhbWQ4MTExZS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hMjA2NS5jIGIvZHJpdmVycy9uZXQvYTIwNjUuYwppbmRleCA3OWJiNTZiLi43MTE2NWFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hMjA2NS5jCisrKyBiL2RyaXZlcnMvbmV0L2EyMDY1LmMKQEAgLTU3Myw4ICs1NzMsNyBAQAogCQogCWlmIChsZW4gPCBFVEhfWkxFTikgewogCQlsZW4gPSBFVEhfWkxFTjsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCisJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAJCQlyZXR1cm4gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FjZW5pYy5jIGIvZHJpdmVycy9uZXQvYWNlbmljLmMKaW5kZXggYjUwODgxMi4uMjNmZjIyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYWNlbmljLmMKKysrIGIvZHJpdmVycy9uZXQvYWNlbmljLmMKQEAgLTU3OSwxMSArNTc5LDcgQEAKIAl9CiAKIAlwcmludGsoIkdpZ2FiaXQgRXRoZXJuZXQgYXQgMHglMDhseCwgIiwgZGV2LT5iYXNlX2FkZHIpOwotI2lmZGVmIF9fc3BhcmNfXwotCXByaW50aygiaXJxICVzXG4iLCBfX2lycV9pdG9hKHBkZXYtPmlycSkpOwotI2Vsc2UKLQlwcmludGsoImlycSAlaVxuIiwgcGRldi0+aXJxKTsKLSNlbmRpZgorCXByaW50aygiaXJxICVkXG4iLCBwZGV2LT5pcnEpOwogCiAjaWZkZWYgQ09ORklHX0FDRU5JQ19PTUlUX1RJR09OX0kKIAlpZiAoKHJlYWRsKCZhcC0+cmVncy0+SG9zdEN0cmwpID4+IDI4KSA9PSA0KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hcmlhZG5lLmMgYi9kcml2ZXJzL25ldC9hcmlhZG5lLmMKaW5kZXggZDFiNmIxZi4uYTliYjdhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXJpYWRuZS5jCisrKyBiL2RyaXZlcnMvbmV0L2FyaWFkbmUuYwpAQCAtNjA3LDggKzYwNyw3IEBACiAgICAgLyogRklYTUU6IGlzIHRoZSA3OUM5NjAgbmV3IGVub3VnaCB0byBkbyBpdHMgb3duIHBhZGRpbmcgcmlnaHQgPyAqLwogICAgIGlmIChza2ItPmxlbiA8IEVUSF9aTEVOKQogICAgIHsKLSAgICAJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotICAgIAlpZiAoc2tiID09IE5VTEwpCisgICAgCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAgICAgCSAgICByZXR1cm4gMDsKICAgICAJbGVuID0gRVRIX1pMRU47CiAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXJtL2F0OTFfZXRoZXIuYyBiL2RyaXZlcnMvbmV0L2FybS9hdDkxX2V0aGVyLmMKaW5kZXggNTUwM2RjOC4uNjEzMDA1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXJtL2F0OTFfZXRoZXIuYworKysgYi9kcml2ZXJzL25ldC9hcm0vYXQ5MV9ldGhlci5jCkBAIC00Myw3ICs0Myw5IEBACiAjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjAiCiAKIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqYXQ5MV9kZXY7Ci1zdGF0aWMgc3RydWN0IGNsayAqZXRoZXJfY2xrOworCitzdGF0aWMgc3RydWN0IHRpbWVyX2xpc3QgY2hlY2tfdGltZXI7CisjZGVmaW5lIExJTktfUE9MTF9JTlRFUlZBTAkoSFopCiAKIC8qIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAqLwogCkBAIC0xNDMsNyArMTQ1LDcgQEAKICAqIE1BQyBhY2NvcmRpbmdseS4KICAqIElmIG5vIGxpbmsgb3IgYXV0by1uZWdvdGlhdGlvbiBpcyBidXN5LCB0aGVuIG5vIGNoYW5nZXMgYXJlIG1hZGUuCiAgKi8KLXN0YXRpYyB2b2lkIHVwZGF0ZV9saW5rc3BlZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIHVwZGF0ZV9saW5rc3BlZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHNpbGVudCkKIHsKIAlzdHJ1Y3QgYXQ5MV9wcml2YXRlICpscCA9IChzdHJ1Y3QgYXQ5MV9wcml2YXRlICopIGRldi0+cHJpdjsKIAl1bnNpZ25lZCBpbnQgYm1zciwgYm1jciwgbHBhLCBtYWNfY2ZnOwpAQCAtMTUxLDcgKzE1Myw4IEBACiAKIAlpZiAoIW1paV9saW5rX29rKCZscC0+bWlpKSkgewkJLyogbm8gbGluayAqLwogCQluZXRpZl9jYXJyaWVyX29mZihkZXYpOwotCQlwcmludGsoS0VSTl9JTkZPICIlczogTGluayBkb3duLlxuIiwgZGV2LT5uYW1lKTsKKwkJaWYgKCFzaWxlbnQpCisJCQlwcmludGsoS0VSTl9JTkZPICIlczogTGluayBkb3duLlxuIiwgZGV2LT5uYW1lKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTg2LDcgKzE4OSw4IEBACiAJfQogCWF0OTFfZW1hY193cml0ZShBVDkxX0VNQUNfQ0ZHLCBtYWNfY2ZnKTsKIAotCXByaW50ayhLRVJOX0lORk8gIiVzOiBMaW5rIG5vdyAlaS0lc1xuIiwgZGV2LT5uYW1lLCBzcGVlZCwgKGR1cGxleCA9PSBEVVBMRVhfRlVMTCkgPyAiRnVsbER1cGxleCIgOiAiSGFsZkR1cGxleCIpOworCWlmICghc2lsZW50KQorCQlwcmludGsoS0VSTl9JTkZPICIlczogTGluayBub3cgJWktJXNcbiIsIGRldi0+bmFtZSwgc3BlZWQsIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpID8gIkZ1bGxEdXBsZXgiIDogIkhhbGZEdXBsZXgiKTsKIAluZXRpZl9jYXJyaWVyX29uKGRldik7CiB9CiAKQEAgLTIyNiw3ICsyMzAsNyBAQAogCQkJZ290byBkb25lOwogCX0KIAotCXVwZGF0ZV9saW5rc3BlZWQoZGV2KTsKKwl1cGRhdGVfbGlua3NwZWVkKGRldiwgMCk7CiAKIGRvbmU6CiAJZGlzYWJsZV9tZGkoKTsKQEAgLTI0MywxNCArMjQ3LDE3IEBACiAJdW5zaWduZWQgaW50IGRzaW50ciwgaXJxX251bWJlcjsKIAlpbnQgc3RhdHVzOwogCi0JaWYgKGxwLT5waHlfdHlwZSA9PSBNSUlfUlRMODIwMV9JRCkJLyogUlRMODIwMSBkb2VzIG5vdCBoYXZlIGFuIGludGVycnVwdCAqLwotCQlyZXR1cm47Ci0JaWYgKGxwLT5waHlfdHlwZSA9PSBNSUlfRFA4Mzg0N19JRCkJLyogRFA4Mzg0NyBkb2VzIG5vdCBoYXZlIGFuIGludGVycnVwdCAqLwotCQlyZXR1cm47Ci0JaWYgKGxwLT5waHlfdHlwZSA9PSBNSUlfQUMxMDFMX0lEKQkvKiBBQzEwMUwgaW50ZXJydXB0IG5vdCBzdXBwb3J0ZWQgeWV0ICovCi0JCXJldHVybjsKLQogCWlycV9udW1iZXIgPSBscC0+Ym9hcmRfZGF0YS5waHlfaXJxX3BpbjsKKwlpZiAoIWlycV9udW1iZXIpIHsKKwkJLyoKKwkJICogUEhZIGRvZXNuJ3QgaGF2ZSBhbiBJUlEgcGluIChSVEw4MjAxLCBEUDgzODQ3LCBBQzEwMUwpLAorCQkgKiBvciBib2FyZCBkb2VzIG5vdCBoYXZlIGl0IGNvbm5lY3RlZC4KKwkJICovCisJCWNoZWNrX3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgTElOS19QT0xMX0lOVEVSVkFMOworCQlhZGRfdGltZXIoJmNoZWNrX3RpbWVyKTsKKwkJcmV0dXJuOworCX0KKwogCXN0YXR1cyA9IHJlcXVlc3RfaXJxKGlycV9udW1iZXIsIGF0OTFldGhlcl9waHlfaW50ZXJydXB0LCAwLCBkZXYtPm5hbWUsIGRldik7CiAJaWYgKHN0YXR1cykgewogCQlwcmludGsoS0VSTl9FUlIgImF0OTFfZXRoZXI6IFBIWSBJUlEgJWQgcmVxdWVzdCBmYWlsZWQgLSBzdGF0dXMgJWQhXG4iLCBpcnFfbnVtYmVyLCBzdGF0dXMpOwpAQCAtMjkyLDEyICsyOTksMTEgQEAKIAl1bnNpZ25lZCBpbnQgZHNpbnRyOwogCXVuc2lnbmVkIGludCBpcnFfbnVtYmVyOwogCi0JaWYgKGxwLT5waHlfdHlwZSA9PSBNSUlfUlRMODIwMV9JRCkgCS8qIFJUTDgyMDEgZG9lcyBub3QgaGF2ZSBhbiBpbnRlcnJ1cHQgKi8KKwlpcnFfbnVtYmVyID0gbHAtPmJvYXJkX2RhdGEucGh5X2lycV9waW47CisJaWYgKCFpcnFfbnVtYmVyKSB7CisJCWRlbF90aW1lcl9zeW5jKCZjaGVja190aW1lcik7CiAJCXJldHVybjsKLQlpZiAobHAtPnBoeV90eXBlID09IE1JSV9EUDgzODQ3X0lEKQkvKiBEUDgzODQ3IGRvZXMgbm90IGhhdmUgYW4gaW50ZXJydXB0ICovCi0JCXJldHVybjsKLQlpZiAobHAtPnBoeV90eXBlID09IE1JSV9BQzEwMUxfSUQpCS8qIEFDMTAxTCBpbnRlcnJ1cHQgbm90IHN1cHBvcnRlZCB5ZXQgKi8KLQkJcmV0dXJuOworCX0KIAogCXNwaW5fbG9ja19pcnEoJmxwLT5sb2NrKTsKIAllbmFibGVfbWRpKCk7CkBAIC0zMjYsNyArMzMyLDYgQEAKIAlkaXNhYmxlX21kaSgpOwogCXNwaW5fdW5sb2NrX2lycSgmbHAtPmxvY2spOwogCi0JaXJxX251bWJlciA9IGxwLT5ib2FyZF9kYXRhLnBoeV9pcnFfcGluOwogCWZyZWVfaXJxKGlycV9udW1iZXIsIGRldik7CQkJLyogRnJlZSBpbnRlcnJ1cHQgaGFuZGxlciAqLwogfQogCkBAIC0zNTUsNiArMzYwLDE4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgYXQ5MWV0aGVyX2NoZWNrX2xpbmsodW5zaWduZWQgbG9uZyBkZXZfaWQpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgbmV0X2RldmljZSAqKSBkZXZfaWQ7CisKKwllbmFibGVfbWRpKCk7CisJdXBkYXRlX2xpbmtzcGVlZChkZXYsIDEpOworCWRpc2FibGVfbWRpKCk7CisKKwljaGVja190aW1lci5leHBpcmVzID0gamlmZmllcyArIExJTktfUE9MTF9JTlRFUlZBTDsKKwlhZGRfdGltZXIoJmNoZWNrX3RpbWVyKTsKK30KKwogLyogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBBRERSRVNTIE1BTkFHRU1FTlQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uICovCiAKIC8qCkBAIC01MDEsNyArNTE4LDcgQEAKIAkJaGFzaF9pbmRleCB8PSAoYml0dmFsIDw8IGopOwogCX0KIAotICAgICAgICByZXR1cm4gaGFzaF9pbmRleDsKKwlyZXR1cm4gaGFzaF9pbmRleDsKIH0KIAogLyoKQEAgLTU1NywxMCArNTc0LDggQEAKIAlhdDkxX2VtYWNfd3JpdGUoQVQ5MV9FTUFDX0NGRywgY2ZnKTsKIH0KIAotCiAvKiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIEVUSFRPT0wgU1VQUE9SVCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gKi8KIAotCiBzdGF0aWMgaW50IG1kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jYXRpb24pCiB7CiAJdW5zaWduZWQgaW50IHZhbHVlOwpAQCAtNjQyLDYgKzY1NywyMiBAQAogCS5nZXRfbGluawk9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiB9OwogCitzdGF0aWMgaW50IGF0OTFldGhlcl9pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQoreworCXN0cnVjdCBhdDkxX3ByaXZhdGUgKmxwID0gKHN0cnVjdCBhdDkxX3ByaXZhdGUgKikgZGV2LT5wcml2OworCWludCByZXM7CisKKwlpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzcGluX2xvY2tfaXJxKCZscC0+bG9jayk7CisJZW5hYmxlX21kaSgpOworCXJlcyA9IGdlbmVyaWNfbWlpX2lvY3RsKCZscC0+bWlpLCBpZl9taWkocnEpLCBjbWQsIE5VTEwpOworCWRpc2FibGVfbWRpKCk7CisJc3Bpbl91bmxvY2tfaXJxKCZscC0+bG9jayk7CisKKwlyZXR1cm4gcmVzOworfQogCiAvKiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBNQUMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gKi8KIApAQCAtNjg1LDEwICs3MTYsMTAgQEAKIAlzdHJ1Y3QgYXQ5MV9wcml2YXRlICpscCA9IChzdHJ1Y3QgYXQ5MV9wcml2YXRlICopIGRldi0+cHJpdjsKIAl1bnNpZ25lZCBsb25nIGN0bDsKIAotICAgICAgICBpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZGV2LT5kZXZfYWRkcikpCi0gICAgICAgIAlyZXR1cm4gLUVBRERSTk9UQVZBSUw7CisJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKGRldi0+ZGV2X2FkZHIpKQorCQlyZXR1cm4gLUVBRERSTk9UQVZBSUw7CiAKLQljbGtfZW5hYmxlKGV0aGVyX2Nsayk7CQkJLyogUmUtZW5hYmxlIFBlcmlwaGVyYWwgY2xvY2sgKi8KKwljbGtfZW5hYmxlKGxwLT5ldGhlcl9jbGspOwkJLyogUmUtZW5hYmxlIFBlcmlwaGVyYWwgY2xvY2sgKi8KIAogCS8qIENsZWFyIGludGVybmFsIHN0YXRpc3RpY3MgKi8KIAljdGwgPSBhdDkxX2VtYWNfcmVhZChBVDkxX0VNQUNfQ1RMKTsKQEAgLTcwOCw3ICs3MzksNyBAQAogCS8qIERldGVybWluZSBjdXJyZW50IGxpbmsgc3BlZWQgKi8KIAlzcGluX2xvY2tfaXJxKCZscC0+bG9jayk7CiAJZW5hYmxlX21kaSgpOwotCXVwZGF0ZV9saW5rc3BlZWQoZGV2KTsKKwl1cGRhdGVfbGlua3NwZWVkKGRldiwgMCk7CiAJZGlzYWJsZV9tZGkoKTsKIAlzcGluX3VubG9ja19pcnEoJmxwLT5sb2NrKTsKIApAQCAtNzIyLDYgKzc1Myw3IEBACiAgKi8KIHN0YXRpYyBpbnQgYXQ5MWV0aGVyX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IGF0OTFfcHJpdmF0ZSAqbHAgPSAoc3RydWN0IGF0OTFfcHJpdmF0ZSAqKSBkZXYtPnByaXY7CiAJdW5zaWduZWQgbG9uZyBjdGw7CiAKIAkvKiBEaXNhYmxlIFJlY2VpdmVyIGFuZCBUcmFuc21pdHRlciAqLwpAQCAtNzM4LDcgKzc3MCw3IEBACiAKIAluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAKLQljbGtfZGlzYWJsZShldGhlcl9jbGspOwkJCS8qIERpc2FibGUgUGVyaXBoZXJhbCBjbG9jayAqLworCWNsa19kaXNhYmxlKGxwLT5ldGhlcl9jbGspOwkJLyogRGlzYWJsZSBQZXJpcGhlcmFsIGNsb2NrICovCiAKIAlyZXR1cm4gMDsKIH0KQEAgLTg3MCw3ICs5MDIsNyBAQAogCWlmIChpbnRzdGF0dXMgJiBBVDkxX0VNQUNfUkNPTSkJCS8qIFJlY2VpdmUgY29tcGxldGUgKi8KIAkJYXQ5MWV0aGVyX3J4KGRldik7CiAKLQlpZiAoaW50c3RhdHVzICYgQVQ5MV9FTUFDX1RDT00pIHsJCS8qIFRyYW5zbWl0IGNvbXBsZXRlICovCisJaWYgKGludHN0YXR1cyAmIEFUOTFfRU1BQ19UQ09NKSB7CS8qIFRyYW5zbWl0IGNvbXBsZXRlICovCiAJCS8qIFRoZSBUQ09NIGJpdCBpcyBzZXQgZXZlbiBpZiB0aGUgdHJhbnNtaXNzaW9uIGZhaWxlZC4gKi8KIAkJaWYgKGludHN0YXR1cyAmIChBVDkxX0VNQUNfVFVORCB8IEFUOTFfRU1BQ19SVFJZKSkKIAkJCWxwLT5zdGF0cy50eF9lcnJvcnMgKz0gMTsKQEAgLTg5OSw3ICs5MzEsOCBAQAogLyoKICAqIEluaXRpYWxpemUgdGhlIGV0aGVybmV0IGludGVyZmFjZQogICovCi1zdGF0aWMgaW50IF9faW5pdCBhdDkxZXRoZXJfc2V0dXAodW5zaWduZWQgbG9uZyBwaHlfdHlwZSwgdW5zaWduZWQgc2hvcnQgcGh5X2FkZHJlc3MsIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0aWMgaW50IF9faW5pdCBhdDkxZXRoZXJfc2V0dXAodW5zaWduZWQgbG9uZyBwaHlfdHlwZSwgdW5zaWduZWQgc2hvcnQgcGh5X2FkZHJlc3MsCisJCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICpldGhlcl9jbGspCiB7CiAJc3RydWN0IGF0OTFfZXRoX2RhdGEgKmJvYXJkX2RhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwpAQCAtOTMzLDYgKzk2Niw3IEBACiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAlscC0+Ym9hcmRfZGF0YSA9ICpib2FyZF9kYXRhOworCWxwLT5ldGhlcl9jbGsgPSBldGhlcl9jbGs7CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZGV2KTsKIAogCXNwaW5fbG9ja19pbml0KCZscC0+bG9jayk7CkBAIC05NDUsNiArOTc5LDcgQEAKIAlkZXYtPnNldF9tdWx0aWNhc3RfbGlzdCA9IGF0OTFldGhlcl9zZXRfcnhfbW9kZTsKIAlkZXYtPnNldF9tYWNfYWRkcmVzcyA9IHNldF9tYWNfYWRkcmVzczsKIAlkZXYtPmV0aHRvb2xfb3BzID0gJmF0OTFldGhlcl9ldGh0b29sX29wczsKKwlkZXYtPmRvX2lvY3RsID0gYXQ5MWV0aGVyX2lvY3RsOwogCiAJU0VUX05FVERFVl9ERVYoZGV2LCAmcGRldi0+ZGV2KTsKIApAQCAtOTc1LDYgKzEwMTAsOSBAQAogCWxwLT5taWkuZGV2ID0gZGV2OwkJLyogU3VwcG9ydCBmb3IgZXRodG9vbCAqLwogCWxwLT5taWkubWRpb19yZWFkID0gbWRpb19yZWFkOwogCWxwLT5taWkubWRpb193cml0ZSA9IG1kaW9fd3JpdGU7CisJbHAtPm1paS5waHlfaWQgPSBwaHlfYWRkcmVzczsKKwlscC0+bWlpLnBoeV9pZF9tYXNrID0gMHgxZjsKKwlscC0+bWlpLnJlZ19udW1fbWFzayA9IDB4MWY7CiAKIAlscC0+cGh5X3R5cGUgPSBwaHlfdHlwZTsJLyogVHlwZSBvZiBQSFkgY29ubmVjdGVkICovCiAJbHAtPnBoeV9hZGRyZXNzID0gcGh5X2FkZHJlc3M7CS8qIE1ESSBhZGRyZXNzIG9mIFBIWSAqLwpAQCAtOTkyLDExICsxMDMwLDE4IEBACiAJLyogRGV0ZXJtaW5lIGN1cnJlbnQgbGluayBzcGVlZCAqLwogCXNwaW5fbG9ja19pcnEoJmxwLT5sb2NrKTsKIAllbmFibGVfbWRpKCk7Ci0JdXBkYXRlX2xpbmtzcGVlZChkZXYpOworCXVwZGF0ZV9saW5rc3BlZWQoZGV2LCAwKTsKIAlkaXNhYmxlX21kaSgpOwogCXNwaW5fdW5sb2NrX2lycSgmbHAtPmxvY2spOwogCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CQkvKiB3aWxsIGJlIGVuYWJsZWQgaW4gb3BlbigpICovCiAKKwkvKiBJZiBib2FyZCBoYXMgbm8gUEhZIElSUSwgdXNlIGEgdGltZXIgdG8gcG9sbCB0aGUgUEhZICovCisJaWYgKCFscC0+Ym9hcmRfZGF0YS5waHlfaXJxX3BpbikgeworCQlpbml0X3RpbWVyKCZjaGVja190aW1lcik7CisJCWNoZWNrX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZylkZXY7CisJCWNoZWNrX3RpbWVyLmZ1bmN0aW9uID0gYXQ5MWV0aGVyX2NoZWNrX2xpbms7CisJfQorCiAJLyogRGlzcGxheSBldGhlcm5ldCBiYW5uZXIgKi8KIAlwcmludGsoS0VSTl9JTkZPICIlczogQVQ5MSBldGhlcm5ldCBhdCAweCUwOHggaW50PSVkICVzJXMgKCUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4KVxuIiwKIAkJZGV2LT5uYW1lLCAodWludCkgZGV2LT5iYXNlX2FkZHIsIGRldi0+aXJxLApAQCAtMTAwNSw3ICsxMDUwLDcgQEAKIAkJZGV2LT5kZXZfYWRkclswXSwgZGV2LT5kZXZfYWRkclsxXSwgZGV2LT5kZXZfYWRkclsyXSwKIAkJZGV2LT5kZXZfYWRkclszXSwgZGV2LT5kZXZfYWRkcls0XSwgZGV2LT5kZXZfYWRkcls1XSk7CiAJaWYgKChwaHlfdHlwZSA9PSBNSUlfRE05MTYxX0lEKSB8fCAobHAtPnBoeV90eXBlID09IE1JSV9ETTkxNjFBX0lEKSkKLQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IERhdmljb20gOTE5NiBQSFkgJXNcbiIsIGRldi0+bmFtZSwgKGxwLT5waHlfbWVkaWEgPT0gUE9SVF9GSUJSRSkgPyAiKEZpYmVyKSIgOiAiKENvcHBlcikiKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IERhdmljb20gOTE2MSBQSFkgJXNcbiIsIGRldi0+bmFtZSwgKGxwLT5waHlfbWVkaWEgPT0gUE9SVF9GSUJSRSkgPyAiKEZpYmVyKSIgOiAiKENvcHBlcikiKTsKIAllbHNlIGlmIChwaHlfdHlwZSA9PSBNSUlfTFhUOTcxQV9JRCkKIAkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IEludGVsIExYVDk3MUEgUEhZXG4iLCBkZXYtPm5hbWUpOwogCWVsc2UgaWYgKHBoeV90eXBlID09IE1JSV9SVEw4MjAxX0lEKQpAQCAtMTAzMSw5ICsxMDc2LDEwIEBACiAJaW50IGRldGVjdGVkID0gLTE7CiAJdW5zaWduZWQgbG9uZyBwaHlfaWQ7CiAJdW5zaWduZWQgc2hvcnQgcGh5X2FkZHJlc3MgPSAwOworCXN0cnVjdCBjbGsgKmV0aGVyX2NsazsKIAogCWV0aGVyX2NsayA9IGNsa19nZXQoJnBkZXYtPmRldiwgImV0aGVyX2NsayIpOwotCWlmICghZXRoZXJfY2xrKSB7CisJaWYgKElTX0VSUihldGhlcl9jbGspKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYXQ5MV9ldGhlcjogbm8gY2xvY2sgZGVmaW5lZFxuIik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KQEAgLTEwNTYsNyArMTEwMiw3IEBACiAJCQljYXNlIE1JSV9EUDgzODQ3X0lEOgkJLyogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzODQ3OiAgKi8KIAkJCWNhc2UgTUlJX0FDMTAxTF9JRDoJCS8qIEFsdGltYSBBQzEwMUw6IFBIWV9JRDEgPSAweDIyLCBQSFlfSUQyID0gMHg1NTIwICovCiAJCQljYXNlIE1JSV9LUzg3MjFfSUQ6CQkvKiBNaWNyZWwgS1M4NzIxOiBQSFlfSUQxID0gMHgyMiwgUEhZX0lEMiA9IDB4MTYxMCAqLwotCQkJCWRldGVjdGVkID0gYXQ5MWV0aGVyX3NldHVwKHBoeV9pZCwgcGh5X2FkZHJlc3MsIHBkZXYpOworCQkJCWRldGVjdGVkID0gYXQ5MWV0aGVyX3NldHVwKHBoeV9pZCwgcGh5X2FkZHJlc3MsIHBkZXYsIGV0aGVyX2Nsayk7CiAJCQkJYnJlYWs7CiAJCX0KIApAQCAtMTA3NSwxNyArMTEyMSw2MSBAQAogCXVucmVnaXN0ZXJfbmV0ZGV2KGF0OTFfZGV2KTsKIAlmcmVlX2lycShhdDkxX2Rldi0+aXJxLCBhdDkxX2Rldik7CiAJZG1hX2ZyZWVfY29oZXJlbnQoTlVMTCwgc2l6ZW9mKHN0cnVjdCByZWN2X2Rlc2NfYnVmcyksIGxwLT5kbGlzdCwgKGRtYV9hZGRyX3QpbHAtPmRsaXN0X3BoeXMpOwotCWNsa19wdXQoZXRoZXJfY2xrKTsKKwljbGtfcHV0KGxwLT5ldGhlcl9jbGspOwogCiAJZnJlZV9uZXRkZXYoYXQ5MV9kZXYpOwogCWF0OTFfZGV2ID0gTlVMTDsKIAlyZXR1cm4gMDsKIH0KIAorI2lmZGVmIENPTkZJR19QTQorCitzdGF0aWMgaW50IGF0OTFldGhlcl9zdXNwZW5kKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHBtX21lc3NhZ2VfdCBtZXNnKQoreworCXN0cnVjdCBhdDkxX3ByaXZhdGUgKmxwID0gKHN0cnVjdCBhdDkxX3ByaXZhdGUgKikgYXQ5MV9kZXYtPnByaXY7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlpbnQgcGh5X2lycSA9IGxwLT5ib2FyZF9kYXRhLnBoeV9pcnFfcGluOworCisJaWYgKG5ldGlmX3J1bm5pbmcobmV0X2RldikpIHsKKwkJaWYgKHBoeV9pcnEpCisJCQlkaXNhYmxlX2lycShwaHlfaXJxKTsKKworCQluZXRpZl9zdG9wX3F1ZXVlKG5ldF9kZXYpOworCQluZXRpZl9kZXZpY2VfZGV0YWNoKG5ldF9kZXYpOworCisJCWNsa19kaXNhYmxlKGxwLT5ldGhlcl9jbGspOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhdDkxZXRoZXJfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGF0OTFfcHJpdmF0ZSAqbHAgPSAoc3RydWN0IGF0OTFfcHJpdmF0ZSAqKSBhdDkxX2Rldi0+cHJpdjsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCWludCBwaHlfaXJxID0gbHAtPmJvYXJkX2RhdGEucGh5X2lycV9waW47CisKKwlpZiAobmV0aWZfcnVubmluZyhuZXRfZGV2KSkgeworCQljbGtfZW5hYmxlKGxwLT5ldGhlcl9jbGspOworCisJCW5ldGlmX2RldmljZV9hdHRhY2gobmV0X2Rldik7CisJCW5ldGlmX3N0YXJ0X3F1ZXVlKG5ldF9kZXYpOworCisJCWlmIChwaHlfaXJxKQorCQkJZW5hYmxlX2lycShwaHlfaXJxKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKyNlbHNlCisjZGVmaW5lIGF0OTFldGhlcl9zdXNwZW5kCU5VTEwKKyNkZWZpbmUgYXQ5MWV0aGVyX3Jlc3VtZQlOVUxMCisjZW5kaWYKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXQ5MWV0aGVyX2RyaXZlciA9IHsKIAkucHJvYmUJCT0gYXQ5MWV0aGVyX3Byb2JlLAogCS5yZW1vdmUJCT0gX19kZXZleGl0X3AoYXQ5MWV0aGVyX3JlbW92ZSksCi0JLyogRklYTUU6ICBzdXBwb3J0IHN1c3BlbmQgYW5kIHJlc3VtZSAqLworCS5zdXNwZW5kCT0gYXQ5MWV0aGVyX3N1c3BlbmQsCisJLnJlc3VtZQkJPSBhdDkxZXRoZXJfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9IERSVl9OQU1FLAogCQkub3duZXIJPSBUSElTX01PRFVMRSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FybS9hdDkxX2V0aGVyLmggYi9kcml2ZXJzL25ldC9hcm0vYXQ5MV9ldGhlci5oCmluZGV4IDk4ODU3MzUuLmQxZTcyZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FybS9hdDkxX2V0aGVyLmgKKysrIGIvZHJpdmVycy9uZXQvYXJtL2F0OTFfZXRoZXIuaApAQCAtODAsNiArODAsNyBAQAogCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwogCXN0cnVjdCBtaWlfaWZfaW5mbyBtaWk7CQkJLyogZXRodG9vbCBzdXBwb3J0ICovCiAJc3RydWN0IGF0OTFfZXRoX2RhdGEgYm9hcmRfZGF0YTsJLyogYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiAqLworCXN0cnVjdCBjbGsgKmV0aGVyX2NsazsJCQkvKiBjbG9jayAqLwogCiAJLyogUEhZICovCiAJdW5zaWduZWQgbG9uZyBwaHlfdHlwZTsJCQkvKiB0eXBlIG9mIFBIWSAoUEhZX0lEKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXJtL2V0aGVyMS5jIGIvZHJpdmVycy9uZXQvYXJtL2V0aGVyMS5jCmluZGV4IDM2NDc1ZWIuLjMxMjk1NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FybS9ldGhlcjEuYworKysgYi9kcml2ZXJzL25ldC9hcm0vZXRoZXIxLmMKQEAgLTcwMCw4ICs3MDAsNyBAQAogCX0KIAogCWlmIChza2ItPmxlbiA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQorCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogCQkJZ290byBvdXQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hcm0vZXRoZXIzLmMgYi9kcml2ZXJzL25ldC9hcm0vZXRoZXIzLmMKaW5kZXggZjFkNWIxMC4uMDgxMDc0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXJtL2V0aGVyMy5jCisrKyBiL2RyaXZlcnMvbmV0L2FybS9ldGhlcjMuYwpAQCAtNTE4LDggKzUxOCw3IEBACiAKIAlsZW5ndGggPSAobGVuZ3RoICsgMSkgJiB+MTsKIAlpZiAobGVuZ3RoICE9IHNrYi0+bGVuKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIGxlbmd0aCk7Ci0JCWlmIChza2IgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhza2IsIGxlbmd0aCkpCiAJCQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2F0YXJpbGFuY2UuYyBiL2RyaXZlcnMvbmV0L2F0YXJpbGFuY2UuYwppbmRleCA0NDJiMmNiLi45MTc4M2E4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hdGFyaWxhbmNlLmMKKysrIGIvZHJpdmVycy9uZXQvYXRhcmlsYW5jZS5jCkBAIC04MDQsOCArODA0LDcgQEAKIAkJKytsZW47CiAJCQogCWlmIChsZW4gPiBza2ItPmxlbikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBsZW4pOwotCQlpZiAoc2tiID09IE5VTEwpCisJCWlmIChza2JfcGFkdG8oc2tiLCBsZW4pKQogCQkJcmV0dXJuIDA7CiAJfQogCQkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2I0NC5jIGIvZHJpdmVycy9uZXQvYjQ0LmMKaW5kZXggZDgyMzNlMC4uYTdlNGJhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYjQ0LmMKKysrIGIvZHJpdmVycy9uZXQvYjQ0LmMKQEAgLTI5LDggKzI5LDggQEAKIAogI2RlZmluZSBEUlZfTU9EVUxFX05BTUUJCSJiNDQiCiAjZGVmaW5lIFBGWCBEUlZfTU9EVUxFX05BTUUJIjogIgotI2RlZmluZSBEUlZfTU9EVUxFX1ZFUlNJT04JIjEuMDAiCi0jZGVmaW5lIERSVl9NT0RVTEVfUkVMREFURQkiQXByIDcsIDIwMDYiCisjZGVmaW5lIERSVl9NT0RVTEVfVkVSU0lPTgkiMS4wMSIKKyNkZWZpbmUgRFJWX01PRFVMRV9SRUxEQVRFCSJKdW4gMTYsIDIwMDYiCiAKICNkZWZpbmUgQjQ0X0RFRl9NU0dfRU5BQkxFCSAgXAogCShORVRJRl9NU0dfRFJWCQl8IFwKQEAgLTc1LDYgKzc1LDE1IEBACiAvKiBtaW5pbXVtIG51bWJlciBvZiBmcmVlIFRYIGRlc2NyaXB0b3JzIHJlcXVpcmVkIHRvIHdha2UgdXAgVFggcHJvY2VzcyAqLwogI2RlZmluZSBCNDRfVFhfV0FLRVVQX1RIUkVTSAkJKEI0NF9UWF9SSU5HX1NJWkUgLyA0KQogCisvKiBiNDQgaW50ZXJuYWwgcGF0dGVybiBtYXRjaCBmaWx0ZXIgaW5mbyAqLworI2RlZmluZSBCNDRfUEFUVEVSTl9CQVNFCTB4NDAwCisjZGVmaW5lIEI0NF9QQVRURVJOX1NJWkUJMHg4MAorI2RlZmluZSBCNDRfUE1BU0tfQkFTRQkJMHg2MDAKKyNkZWZpbmUgQjQ0X1BNQVNLX1NJWkUJCTB4MTAKKyNkZWZpbmUgQjQ0X01BWF9QQVRURVJOUwkxNgorI2RlZmluZSBCNDRfRVRISVBWNlVEUF9ITEVOCTYyCisjZGVmaW5lIEI0NF9FVEhJUFY0VURQX0hMRU4JNDIKKwogc3RhdGljIGNoYXIgdmVyc2lvbltdIF9fZGV2aW5pdGRhdGEgPQogCURSVl9NT0RVTEVfTkFNRSAiLmM6diIgRFJWX01PRFVMRV9WRVJTSU9OICIgKCIgRFJWX01PRFVMRV9SRUxEQVRFICIpXG4iOwogCkBAIC0xMDEsNyArMTEwLDcgQEAKIAogc3RhdGljIHZvaWQgYjQ0X2hhbHQoc3RydWN0IGI0NCAqKTsKIHN0YXRpYyB2b2lkIGI0NF9pbml0X3JpbmdzKHN0cnVjdCBiNDQgKik7Ci1zdGF0aWMgdm9pZCBiNDRfaW5pdF9odyhzdHJ1Y3QgYjQ0ICopOworc3RhdGljIHZvaWQgYjQ0X2luaXRfaHcoc3RydWN0IGI0NCAqLCBpbnQpOwogCiBzdGF0aWMgaW50IGRtYV9kZXNjX2FsaWduX21hc2s7CiBzdGF0aWMgaW50IGRtYV9kZXNjX3N5bmNfc2l6ZTsKQEAgLTg3Myw3ICs4ODIsNyBAQAogCQlzcGluX2xvY2tfaXJxKCZicC0+bG9jayk7CiAJCWI0NF9oYWx0KGJwKTsKIAkJYjQ0X2luaXRfcmluZ3MoYnApOwotCQliNDRfaW5pdF9odyhicCk7CisJCWI0NF9pbml0X2h3KGJwLCAxKTsKIAkJbmV0aWZfd2FrZV9xdWV1ZShicC0+ZGV2KTsKIAkJc3Bpbl91bmxvY2tfaXJxKCZicC0+bG9jayk7CiAJCWRvbmUgPSAxOwpAQCAtOTQyLDcgKzk1MSw3IEBACiAKIAliNDRfaGFsdChicCk7CiAJYjQ0X2luaXRfcmluZ3MoYnApOwotCWI0NF9pbml0X2h3KGJwKTsKKwliNDRfaW5pdF9odyhicCwgMSk7CiAKIAlzcGluX3VubG9ja19pcnEoJmJwLT5sb2NrKTsKIApAQCAtMTA1OSw3ICsxMDY4LDcgQEAKIAliNDRfaGFsdChicCk7CiAJZGV2LT5tdHUgPSBuZXdfbXR1OwogCWI0NF9pbml0X3JpbmdzKGJwKTsKLQliNDRfaW5pdF9odyhicCk7CisJYjQ0X2luaXRfaHcoYnAsIDEpOwogCXNwaW5fdW5sb2NrX2lycSgmYnAtPmxvY2spOwogCiAJYjQ0X2VuYWJsZV9pbnRzKGJwKTsKQEAgLTEzNTYsMTMgKzEzNjUsMTUgQEAKICAqIHBhY2tldCBwcm9jZXNzaW5nLiAgSW52b2tlZCB3aXRoIGJwLT5sb2NrIGhlbGQuCiAgKi8KIHN0YXRpYyB2b2lkIF9fYjQ0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICopOwotc3RhdGljIHZvaWQgYjQ0X2luaXRfaHcoc3RydWN0IGI0NCAqYnApCitzdGF0aWMgdm9pZCBiNDRfaW5pdF9odyhzdHJ1Y3QgYjQ0ICpicCwgaW50IGZ1bGxfcmVzZXQpCiB7CiAJdTMyIHZhbDsKIAogCWI0NF9jaGlwX3Jlc2V0KGJwKTsKLQliNDRfcGh5X3Jlc2V0KGJwKTsKLQliNDRfc2V0dXBfcGh5KGJwKTsKKwlpZiAoZnVsbF9yZXNldCkgeworCQliNDRfcGh5X3Jlc2V0KGJwKTsKKwkJYjQ0X3NldHVwX3BoeShicCk7CisJfQogCiAJLyogRW5hYmxlIENSQzMyLCBzZXQgcHJvcGVyIExFRCBtb2RlcyBhbmQgcG93ZXIgb24gUEhZICovCiAJYnczMihicCwgQjQ0X01BQ19DVFJMLCBNQUNfQ1RSTF9DUkMzMl9FTkFCIHwgTUFDX0NUUkxfUEhZX0xFRENUUkwpOwpAQCAtMTM3NiwxNiArMTM4NywyMSBAQAogCWJ3MzIoYnAsIEI0NF9UWE1BWExFTiwgYnAtPmRldi0+bXR1ICsgRVRIX0hMRU4gKyA4ICsgUlhfSEVBREVSX0xFTik7CiAKIAlidzMyKGJwLCBCNDRfVFhfV01BUkssIDU2KTsgLyogWFhYIG1hZ2ljICovCi0JYnczMihicCwgQjQ0X0RNQVRYX0NUUkwsIERNQVRYX0NUUkxfRU5BQkxFKTsKLQlidzMyKGJwLCBCNDRfRE1BVFhfQUREUiwgYnAtPnR4X3JpbmdfZG1hICsgYnAtPmRtYV9vZmZzZXQpOwotCWJ3MzIoYnAsIEI0NF9ETUFSWF9DVFJMLCAoRE1BUlhfQ1RSTF9FTkFCTEUgfAotCQkJICAgICAgKGJwLT5yeF9vZmZzZXQgPDwgRE1BUlhfQ1RSTF9ST1NISUZUKSkpOwotCWJ3MzIoYnAsIEI0NF9ETUFSWF9BRERSLCBicC0+cnhfcmluZ19kbWEgKyBicC0+ZG1hX29mZnNldCk7CisJaWYgKGZ1bGxfcmVzZXQpIHsKKwkJYnczMihicCwgQjQ0X0RNQVRYX0NUUkwsIERNQVRYX0NUUkxfRU5BQkxFKTsKKwkJYnczMihicCwgQjQ0X0RNQVRYX0FERFIsIGJwLT50eF9yaW5nX2RtYSArIGJwLT5kbWFfb2Zmc2V0KTsKKwkJYnczMihicCwgQjQ0X0RNQVJYX0NUUkwsIChETUFSWF9DVFJMX0VOQUJMRSB8CisJCQkJICAgICAgKGJwLT5yeF9vZmZzZXQgPDwgRE1BUlhfQ1RSTF9ST1NISUZUKSkpOworCQlidzMyKGJwLCBCNDRfRE1BUlhfQUREUiwgYnAtPnJ4X3JpbmdfZG1hICsgYnAtPmRtYV9vZmZzZXQpOwogCi0JYnczMihicCwgQjQ0X0RNQVJYX1BUUiwgYnAtPnJ4X3BlbmRpbmcpOwotCWJwLT5yeF9wcm9kID0gYnAtPnJ4X3BlbmRpbmc7CisJCWJ3MzIoYnAsIEI0NF9ETUFSWF9QVFIsIGJwLT5yeF9wZW5kaW5nKTsKKwkJYnAtPnJ4X3Byb2QgPSBicC0+cnhfcGVuZGluZzsKIAotCWJ3MzIoYnAsIEI0NF9NSUJfQ1RSTCwgTUlCX0NUUkxfQ0xSX09OX1JFQUQpOworCQlidzMyKGJwLCBCNDRfTUlCX0NUUkwsIE1JQl9DVFJMX0NMUl9PTl9SRUFEKTsKKwl9IGVsc2UgeworCQlidzMyKGJwLCBCNDRfRE1BUlhfQ1RSTCwgKERNQVJYX0NUUkxfRU5BQkxFIHwKKwkJCQkgICAgICAoYnAtPnJ4X29mZnNldCA8PCBETUFSWF9DVFJMX1JPU0hJRlQpKSk7CisJfQogCiAJdmFsID0gYnIzMihicCwgQjQ0X0VORVRfQ1RSTCk7CiAJYnczMihicCwgQjQ0X0VORVRfQ1RSTCwgKHZhbCB8IEVORVRfQ1RSTF9FTkFCTEUpKTsKQEAgLTE0MDEsNyArMTQxNyw3IEBACiAJCWdvdG8gb3V0OwogCiAJYjQ0X2luaXRfcmluZ3MoYnApOwotCWI0NF9pbml0X2h3KGJwKTsKKwliNDRfaW5pdF9odyhicCwgMSk7CiAKIAliNDRfY2hlY2tfcGh5KGJwKTsKIApAQCAtMTQ1MCw2ICsxNDY2LDE0MCBAQAogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIGJ3ZmlsdGVyX3RhYmxlKHN0cnVjdCBiNDQgKmJwLCB1OCAqcHAsIHUzMiBieXRlcywgdTMyIHRhYmxlX29mZnNldCkKK3sKKwl1MzIgaTsKKwl1MzIgKnBhdHRlcm4gPSAodTMyICopIHBwOworCisJZm9yIChpID0gMDsgaSA8IGJ5dGVzOyBpICs9IHNpemVvZih1MzIpKSB7CisJCWJ3MzIoYnAsIEI0NF9GSUxUX0FERFIsIHRhYmxlX29mZnNldCArIGkpOworCQlidzMyKGJwLCBCNDRfRklMVF9EQVRBLCBwYXR0ZXJuW2kgLyBzaXplb2YodTMyKV0pOworCX0KK30KKworc3RhdGljIGludCBiNDRfbWFnaWNfcGF0dGVybih1OCAqbWFjYWRkciwgdTggKnBwYXR0ZXJuLCB1OCAqcG1hc2ssIGludCBvZmZzZXQpCit7CisJaW50IG1hZ2ljc3luYyA9IDY7CisJaW50IGssIGosIGxlbiA9IG9mZnNldDsKKwlpbnQgZXRoYWRkcl9ieXRlcyA9IEVUSF9BTEVOOworCisJbWVtc2V0KHBwYXR0ZXJuICsgb2Zmc2V0LCAweGZmLCBtYWdpY3N5bmMpOworCWZvciAoaiA9IDA7IGogPCBtYWdpY3N5bmM7IGorKykKKwkJc2V0X2JpdChsZW4rKywgKHVuc2lnbmVkIGxvbmcgKikgcG1hc2spOworCisJZm9yIChqID0gMDsgaiA8IEI0NF9NQVhfUEFUVEVSTlM7IGorKykgeworCQlpZiAoKEI0NF9QQVRURVJOX1NJWkUgLSBsZW4pID49IEVUSF9BTEVOKQorCQkJZXRoYWRkcl9ieXRlcyA9IEVUSF9BTEVOOworCQllbHNlCisJCQlldGhhZGRyX2J5dGVzID0gQjQ0X1BBVFRFUk5fU0laRSAtIGxlbjsKKwkJaWYgKGV0aGFkZHJfYnl0ZXMgPD0wKQorCQkJYnJlYWs7CisJCWZvciAoayA9IDA7IGs8IGV0aGFkZHJfYnl0ZXM7IGsrKykgeworCQkJcHBhdHRlcm5bb2Zmc2V0ICsgbWFnaWNzeW5jICsKKwkJCQkoaiAqIEVUSF9BTEVOKSArIGtdID0gbWFjYWRkcltrXTsKKwkJCWxlbisrOworCQkJc2V0X2JpdChsZW4sICh1bnNpZ25lZCBsb25nICopIHBtYXNrKTsKKwkJfQorCX0KKwlyZXR1cm4gbGVuIC0gMTsKK30KKworLyogU2V0dXAgbWFnaWMgcGFja2V0IHBhdHRlcm5zIGluIHRoZSBiNDQgV09MCisgKiBwYXR0ZXJuIG1hdGNoaW5nIGZpbHRlci4KKyAqLworc3RhdGljIHZvaWQgYjQ0X3NldHVwX3BzZXVkb19tYWdpY3Aoc3RydWN0IGI0NCAqYnApCit7CisKKwl1MzIgdmFsOworCWludCBwbGVuMCwgcGxlbjEsIHBsZW4yOworCXU4ICpwd29sX3BhdHRlcm47CisJdTggcHdvbF9tYXNrW0I0NF9QTUFTS19TSVpFXTsKKworCXB3b2xfcGF0dGVybiA9IGttYWxsb2MoQjQ0X1BBVFRFUk5fU0laRSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwd29sX3BhdHRlcm4pIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiTWVtb3J5IG5vdCBhdmFpbGFibGUgZm9yIFdPTFxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBJcHY0IG1hZ2ljIHBhY2tldCBwYXR0ZXJuIC0gcGF0dGVybiAwLiovCisJbWVtc2V0KHB3b2xfcGF0dGVybiwgMCwgQjQ0X1BBVFRFUk5fU0laRSk7CisJbWVtc2V0KHB3b2xfbWFzaywgMCwgQjQ0X1BNQVNLX1NJWkUpOworCXBsZW4wID0gYjQ0X21hZ2ljX3BhdHRlcm4oYnAtPmRldi0+ZGV2X2FkZHIsIHB3b2xfcGF0dGVybiwgcHdvbF9tYXNrLAorCQkJCSAgQjQ0X0VUSElQVjRVRFBfSExFTik7CisKKyAgIAlid2ZpbHRlcl90YWJsZShicCwgcHdvbF9wYXR0ZXJuLCBCNDRfUEFUVEVSTl9TSVpFLCBCNDRfUEFUVEVSTl9CQVNFKTsKKyAgIAlid2ZpbHRlcl90YWJsZShicCwgcHdvbF9tYXNrLCBCNDRfUE1BU0tfU0laRSwgQjQ0X1BNQVNLX0JBU0UpOworCisJLyogUmF3IGV0aGVybmV0IElJIG1hZ2ljIHBhY2tldCBwYXR0ZXJuIC0gcGF0dGVybiAxICovCisJbWVtc2V0KHB3b2xfcGF0dGVybiwgMCwgQjQ0X1BBVFRFUk5fU0laRSk7CisJbWVtc2V0KHB3b2xfbWFzaywgMCwgQjQ0X1BNQVNLX1NJWkUpOworCXBsZW4xID0gYjQ0X21hZ2ljX3BhdHRlcm4oYnAtPmRldi0+ZGV2X2FkZHIsIHB3b2xfcGF0dGVybiwgcHdvbF9tYXNrLAorCQkJCSAgRVRIX0hMRU4pOworCisgICAJYndmaWx0ZXJfdGFibGUoYnAsIHB3b2xfcGF0dGVybiwgQjQ0X1BBVFRFUk5fU0laRSwKKwkJICAgICAgIEI0NF9QQVRURVJOX0JBU0UgKyBCNDRfUEFUVEVSTl9TSVpFKTsKKyAgCWJ3ZmlsdGVyX3RhYmxlKGJwLCBwd29sX21hc2ssIEI0NF9QTUFTS19TSVpFLAorCQkgICAgICAgQjQ0X1BNQVNLX0JBU0UgKyBCNDRfUE1BU0tfU0laRSk7CisKKwkvKiBJcHY2IG1hZ2ljIHBhY2tldCBwYXR0ZXJuIC0gcGF0dGVybiAyICovCisJbWVtc2V0KHB3b2xfcGF0dGVybiwgMCwgQjQ0X1BBVFRFUk5fU0laRSk7CisJbWVtc2V0KHB3b2xfbWFzaywgMCwgQjQ0X1BNQVNLX1NJWkUpOworCXBsZW4yID0gYjQ0X21hZ2ljX3BhdHRlcm4oYnAtPmRldi0+ZGV2X2FkZHIsIHB3b2xfcGF0dGVybiwgcHdvbF9tYXNrLAorCQkJCSAgQjQ0X0VUSElQVjZVRFBfSExFTik7CisKKyAgIAlid2ZpbHRlcl90YWJsZShicCwgcHdvbF9wYXR0ZXJuLCBCNDRfUEFUVEVSTl9TSVpFLAorCQkgICAgICAgQjQ0X1BBVFRFUk5fQkFTRSArIEI0NF9QQVRURVJOX1NJWkUgKyBCNDRfUEFUVEVSTl9TSVpFKTsKKyAgCWJ3ZmlsdGVyX3RhYmxlKGJwLCBwd29sX21hc2ssIEI0NF9QTUFTS19TSVpFLAorCQkgICAgICAgQjQ0X1BNQVNLX0JBU0UgKyBCNDRfUE1BU0tfU0laRSArIEI0NF9QTUFTS19TSVpFKTsKKworCWtmcmVlKHB3b2xfcGF0dGVybik7CisKKwkvKiBzZXQgdGhlc2UgcGF0dGVybidzIGxlbmd0aHM6IG9uZSBsZXNzIHRoYW4gZWFjaCByZWFsIGxlbmd0aCAqLworCXZhbCA9IHBsZW4wIHwgKHBsZW4xIDw8IDgpIHwgKHBsZW4yIDw8IDE2KSB8IFdLVVBfTEVOX0VOQUJMRV9USFJFRTsKKwlidzMyKGJwLCBCNDRfV0tVUF9MRU4sIHZhbCk7CisKKwkvKiBlbmFibGUgd2FrZXVwIHBhdHRlcm4gbWF0Y2hpbmcgKi8KKwl2YWwgPSBicjMyKGJwLCBCNDRfREVWQ1RSTCk7CisJYnczMihicCwgQjQ0X0RFVkNUUkwsIHZhbCB8IERFVkNUUkxfUEZFKTsKKworfQorCitzdGF0aWMgdm9pZCBiNDRfc2V0dXBfd29sKHN0cnVjdCBiNDQgKmJwKQoreworCXUzMiB2YWw7CisJdTE2IHBtdmFsOworCisJYnczMihicCwgQjQ0X1JYQ09ORklHLCBSWENPTkZJR19BTExNVUxUSSk7CisKKwlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfQjBfQU5ETEFURVIpIHsKKworCQlidzMyKGJwLCBCNDRfV0tVUF9MRU4sIFdLVVBfTEVOX0RJU0FCTEUpOworCisJCXZhbCA9IGJwLT5kZXYtPmRldl9hZGRyWzJdIDw8IDI0IHwKKwkJCWJwLT5kZXYtPmRldl9hZGRyWzNdIDw8IDE2IHwKKwkJCWJwLT5kZXYtPmRldl9hZGRyWzRdIDw8IDggfAorCQkJYnAtPmRldi0+ZGV2X2FkZHJbNV07CisJCWJ3MzIoYnAsIEI0NF9BRERSX0xPLCB2YWwpOworCisJCXZhbCA9IGJwLT5kZXYtPmRldl9hZGRyWzBdIDw8IDggfAorCQkJYnAtPmRldi0+ZGV2X2FkZHJbMV07CisJCWJ3MzIoYnAsIEI0NF9BRERSX0hJLCB2YWwpOworCisJCXZhbCA9IGJyMzIoYnAsIEI0NF9ERVZDVFJMKTsKKwkJYnczMihicCwgQjQ0X0RFVkNUUkwsIHZhbCB8IERFVkNUUkxfTVBNIHwgREVWQ1RSTF9QRkUpOworCisgCX0gZWxzZSB7CisgCQliNDRfc2V0dXBfcHNldWRvX21hZ2ljcChicCk7CisgCX0KKworCXZhbCA9IGJyMzIoYnAsIEI0NF9TQlRNU0xPVyk7CisJYnczMihicCwgQjQ0X1NCVE1TTE9XLCB2YWwgfCBTQlRNU0xPV19QRSk7CisKKwlwY2lfcmVhZF9jb25maWdfd29yZChicC0+cGRldiwgU1NCX1BNQ1NSLCAmcG12YWwpOworCXBjaV93cml0ZV9jb25maWdfd29yZChicC0+cGRldiwgU1NCX1BNQ1NSLCBwbXZhbCB8IFNTQl9QRSk7CisKK30KKwogc3RhdGljIGludCBiNDRfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYjQ0ICpicCA9IG5ldGRldl9wcml2KGRldik7CkBAIC0xNDc1LDYgKzE2MjUsMTEgQEAKIAogCW5ldGlmX3BvbGxfZW5hYmxlKGRldik7CiAKKwlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfV09MX0VOQUJMRSkgeworCQliNDRfaW5pdF9odyhicCwgMCk7CisJCWI0NF9zZXR1cF93b2woYnApOworCX0KKwogCWI0NF9mcmVlX2NvbnNpc3RlbnQoYnApOwogCiAJcmV0dXJuIDA7CkBAIC0xNjIwLDggKzE3NzUsNiBAQAogewogCXN0cnVjdCBiNDQgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAotCWlmICghbmV0aWZfcnVubmluZyhkZXYpKQotCQlyZXR1cm4gLUVBR0FJTjsKIAljbWQtPnN1cHBvcnRlZCA9IChTVVBQT1JURURfQXV0b25lZyk7CiAJY21kLT5zdXBwb3J0ZWQgfD0gKFNVUFBPUlRFRF8xMDBiYXNlVF9IYWxmIHwKIAkJCSAgU1VQUE9SVEVEXzEwMGJhc2VUX0Z1bGwgfApAQCAtMTY0OSw2ICsxODAyLDEyIEBACiAJCVhDVlJfSU5URVJOQUwgOiBYQ1ZSX0VYVEVSTkFMOwogCWNtZC0+YXV0b25lZyA9IChicC0+ZmxhZ3MgJiBCNDRfRkxBR19GT1JDRV9MSU5LKSA/CiAJCUFVVE9ORUdfRElTQUJMRSA6IEFVVE9ORUdfRU5BQkxFOworCWlmIChjbWQtPmF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpCisJCWNtZC0+YWR2ZXJ0aXNpbmcgfD0gQURWRVJUSVNFRF9BdXRvbmVnOworCWlmICghbmV0aWZfcnVubmluZyhkZXYpKXsKKwkJY21kLT5zcGVlZCA9IDA7CisJCWNtZC0+ZHVwbGV4ID0gMHhmZjsKKwl9CiAJY21kLT5tYXh0eHBrdCA9IDA7CiAJY21kLT5tYXhyeHBrdCA9IDA7CiAJcmV0dXJuIDA7CkBAIC0xNjU4LDkgKzE4MTcsNiBAQAogewogCXN0cnVjdCBiNDQgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAotCWlmICghbmV0aWZfcnVubmluZyhkZXYpKQotCQlyZXR1cm4gLUVBR0FJTjsKLQogCS8qIFdlIGRvIG5vdCBzdXBwb3J0IGdpZ2FiaXQuICovCiAJaWYgKGNtZC0+YXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSkgewogCQlpZiAoY21kLT5hZHZlcnRpc2luZyAmCkBAIC0xNjc3LDI4ICsxODMzLDM5IEBACiAJc3Bpbl9sb2NrX2lycSgmYnAtPmxvY2spOwogCiAJaWYgKGNtZC0+YXV0b25lZyA9PSBBVVRPTkVHX0VOQUJMRSkgewotCQlicC0+ZmxhZ3MgJj0gfkI0NF9GTEFHX0ZPUkNFX0xJTks7Ci0JCWJwLT5mbGFncyAmPSB+KEI0NF9GTEFHX0FEVl8xMEhBTEYgfAorCQlicC0+ZmxhZ3MgJj0gfihCNDRfRkxBR19GT1JDRV9MSU5LIHwKKwkJCSAgICAgICBCNDRfRkxBR18xMDBfQkFTRV9UIHwKKwkJCSAgICAgICBCNDRfRkxBR19GVUxMX0RVUExFWCB8CisJCQkgICAgICAgQjQ0X0ZMQUdfQURWXzEwSEFMRiB8CiAJCQkgICAgICAgQjQ0X0ZMQUdfQURWXzEwRlVMTCB8CiAJCQkgICAgICAgQjQ0X0ZMQUdfQURWXzEwMEhBTEYgfAogCQkJICAgICAgIEI0NF9GTEFHX0FEVl8xMDBGVUxMKTsKLQkJaWYgKGNtZC0+YWR2ZXJ0aXNpbmcgJiBBRFZFUlRJU0VfMTBIQUxGKQotCQkJYnAtPmZsYWdzIHw9IEI0NF9GTEFHX0FEVl8xMEhBTEY7Ci0JCWlmIChjbWQtPmFkdmVydGlzaW5nICYgQURWRVJUSVNFXzEwRlVMTCkKLQkJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19BRFZfMTBGVUxMOwotCQlpZiAoY21kLT5hZHZlcnRpc2luZyAmIEFEVkVSVElTRV8xMDBIQUxGKQotCQkJYnAtPmZsYWdzIHw9IEI0NF9GTEFHX0FEVl8xMDBIQUxGOwotCQlpZiAoY21kLT5hZHZlcnRpc2luZyAmIEFEVkVSVElTRV8xMDBGVUxMKQotCQkJYnAtPmZsYWdzIHw9IEI0NF9GTEFHX0FEVl8xMDBGVUxMOworCQlpZiAoY21kLT5hZHZlcnRpc2luZyA9PSAwKSB7CisJCQlicC0+ZmxhZ3MgfD0gKEI0NF9GTEFHX0FEVl8xMEhBTEYgfAorCQkJCSAgICAgIEI0NF9GTEFHX0FEVl8xMEZVTEwgfAorCQkJCSAgICAgIEI0NF9GTEFHX0FEVl8xMDBIQUxGIHwKKwkJCQkgICAgICBCNDRfRkxBR19BRFZfMTAwRlVMTCk7CisJCX0gZWxzZSB7CisJCQlpZiAoY21kLT5hZHZlcnRpc2luZyAmIEFEVkVSVElTRURfMTBiYXNlVF9IYWxmKQorCQkJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19BRFZfMTBIQUxGOworCQkJaWYgKGNtZC0+YWR2ZXJ0aXNpbmcgJiBBRFZFUlRJU0VEXzEwYmFzZVRfRnVsbCkKKwkJCQlicC0+ZmxhZ3MgfD0gQjQ0X0ZMQUdfQURWXzEwRlVMTDsKKwkJCWlmIChjbWQtPmFkdmVydGlzaW5nICYgQURWRVJUSVNFRF8xMDBiYXNlVF9IYWxmKQorCQkJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19BRFZfMTAwSEFMRjsKKwkJCWlmIChjbWQtPmFkdmVydGlzaW5nICYgQURWRVJUSVNFRF8xMDBiYXNlVF9GdWxsKQorCQkJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19BRFZfMTAwRlVMTDsKKwkJfQogCX0gZWxzZSB7CiAJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19GT1JDRV9MSU5LOworCQlicC0+ZmxhZ3MgJj0gfihCNDRfRkxBR18xMDBfQkFTRV9UIHwgQjQ0X0ZMQUdfRlVMTF9EVVBMRVgpOwogCQlpZiAoY21kLT5zcGVlZCA9PSBTUEVFRF8xMDApCiAJCQlicC0+ZmxhZ3MgfD0gQjQ0X0ZMQUdfMTAwX0JBU0VfVDsKIAkJaWYgKGNtZC0+ZHVwbGV4ID09IERVUExFWF9GVUxMKQogCQkJYnAtPmZsYWdzIHw9IEI0NF9GTEFHX0ZVTExfRFVQTEVYOwogCX0KIAotCWI0NF9zZXR1cF9waHkoYnApOworCWlmIChuZXRpZl9ydW5uaW5nKGRldikpCisJCWI0NF9zZXR1cF9waHkoYnApOwogCiAJc3Bpbl91bmxvY2tfaXJxKCZicC0+bG9jayk7CiAKQEAgLTE3MzQsNyArMTkwMSw3IEBACiAKIAliNDRfaGFsdChicCk7CiAJYjQ0X2luaXRfcmluZ3MoYnApOwotCWI0NF9pbml0X2h3KGJwKTsKKwliNDRfaW5pdF9odyhicCwgMSk7CiAJbmV0aWZfd2FrZV9xdWV1ZShicC0+ZGV2KTsKIAlzcGluX3VubG9ja19pcnEoJmJwLT5sb2NrKTsKIApAQCAtMTc3Nyw3ICsxOTQ0LDcgQEAKIAlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfUEFVU0VfQVVUTykgewogCQliNDRfaGFsdChicCk7CiAJCWI0NF9pbml0X3JpbmdzKGJwKTsKLQkJYjQ0X2luaXRfaHcoYnApOworCQliNDRfaW5pdF9odyhicCwgMSk7CiAJfSBlbHNlIHsKIAkJX19iNDRfc2V0X2Zsb3dfY3RybChicCwgYnAtPmZsYWdzKTsKIAl9CkBAIC0xODE5LDEyICsxOTg2LDQwIEBACiAJc3Bpbl91bmxvY2tfaXJxKCZicC0+bG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkIGI0NF9nZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbCkKK3sKKwlzdHJ1Y3QgYjQ0ICpicCA9IG5ldGRldl9wcml2KGRldik7CisKKwl3b2wtPnN1cHBvcnRlZCA9IFdBS0VfTUFHSUM7CisJaWYgKGJwLT5mbGFncyAmIEI0NF9GTEFHX1dPTF9FTkFCTEUpCisJCXdvbC0+d29sb3B0cyA9IFdBS0VfTUFHSUM7CisJZWxzZQorCQl3b2wtPndvbG9wdHMgPSAwOworCW1lbXNldCgmd29sLT5zb3Bhc3MsIDAsIHNpemVvZih3b2wtPnNvcGFzcykpOworfQorCitzdGF0aWMgaW50IGI0NF9zZXRfd29sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbCkKK3sKKwlzdHJ1Y3QgYjQ0ICpicCA9IG5ldGRldl9wcml2KGRldik7CisKKwlzcGluX2xvY2tfaXJxKCZicC0+bG9jayk7CisJaWYgKHdvbC0+d29sb3B0cyAmIFdBS0VfTUFHSUMpCisJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19XT0xfRU5BQkxFOworCWVsc2UKKwkJYnAtPmZsYWdzICY9IH5CNDRfRkxBR19XT0xfRU5BQkxFOworCXNwaW5fdW5sb2NrX2lycSgmYnAtPmxvY2spOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZXRodG9vbF9vcHMgYjQ0X2V0aHRvb2xfb3BzID0gewogCS5nZXRfZHJ2aW5mbwkJPSBiNDRfZ2V0X2RydmluZm8sCiAJLmdldF9zZXR0aW5ncwkJPSBiNDRfZ2V0X3NldHRpbmdzLAogCS5zZXRfc2V0dGluZ3MJCT0gYjQ0X3NldF9zZXR0aW5ncywKIAkubndheV9yZXNldAkJPSBiNDRfbndheV9yZXNldCwKIAkuZ2V0X2xpbmsJCT0gZXRodG9vbF9vcF9nZXRfbGluaywKKwkuZ2V0X3dvbAkJPSBiNDRfZ2V0X3dvbCwKKwkuc2V0X3dvbAkJPSBiNDRfc2V0X3dvbCwKIAkuZ2V0X3JpbmdwYXJhbQkJPSBiNDRfZ2V0X3JpbmdwYXJhbSwKIAkuc2V0X3JpbmdwYXJhbQkJPSBiNDRfc2V0X3JpbmdwYXJhbSwKIAkuZ2V0X3BhdXNlcGFyYW0JCT0gYjQ0X2dldF9wYXVzZXBhcmFtLApAQCAtMTkwMyw2ICsyMDk4LDEwIEBACiAJLyogWFhYIC0gcmVhbGx5IHJlcXVpcmVkPwogCSAgIGJwLT5mbGFncyB8PSBCNDRfRkxBR19CVUdHWV9UWFBUUjsKICAgICAgICAgICovCisKKyAJaWYgKHNzYl9nZXRfY29yZV9yZXYoYnApID49IDcpCisgCQlicC0+ZmxhZ3MgfD0gQjQ0X0ZMQUdfQjBfQU5ETEFURVI7CisKIG91dDoKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjEwMyw2ICsyMzAyLDEwIEBACiAJc3Bpbl91bmxvY2tfaXJxKCZicC0+bG9jayk7CiAKIAlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKKwlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfV09MX0VOQUJMRSkgeworCQliNDRfaW5pdF9odyhicCwgMCk7CisJCWI0NF9zZXR1cF93b2woYnApOworCX0KIAlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiAJcmV0dXJuIDA7CiB9CkBAIC0yMTI1LDcgKzIzMjgsNyBAQAogCXNwaW5fbG9ja19pcnEoJmJwLT5sb2NrKTsKIAogCWI0NF9pbml0X3JpbmdzKGJwKTsKLQliNDRfaW5pdF9odyhicCk7CisJYjQ0X2luaXRfaHcoYnAsIDEpOwogCW5ldGlmX2RldmljZV9hdHRhY2goYnAtPmRldik7CiAJc3Bpbl91bmxvY2tfaXJxKCZicC0+bG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2I0NC5oIGIvZHJpdmVycy9uZXQvYjQ0LmgKaW5kZXggYjE3ODY2Mi4uNDk0NDUwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYjQ0LmgKKysrIGIvZHJpdmVycy9uZXQvYjQ0LmgKQEAgLTI0LDYgKzI0LDkgQEAKICNkZWZpbmUgIFdLVVBfTEVOX1AzX01BU0sJMHg3ZjAwMDAwMCAvKiBQYXR0ZXJuIDMgKi8KICNkZWZpbmUgIFdLVVBfTEVOX1AzX1NISUZUCTI0CiAjZGVmaW5lICBXS1VQX0xFTl9EMwkJMHg4MDAwMDAwMAorI2RlZmluZSAgV0tVUF9MRU5fRElTQUJMRQkweDgwODA4MDgwCisjZGVmaW5lICBXS1VQX0xFTl9FTkFCTEVfVFdPCTB4ODA4MDAwMDAKKyNkZWZpbmUgIFdLVVBfTEVOX0VOQUJMRV9USFJFRQkweDgwMDAwMDAwCiAjZGVmaW5lIEI0NF9JU1RBVAkweDAwMjBVTCAvKiBJbnRlcnJ1cHQgU3RhdHVzICovCiAjZGVmaW5lICBJU1RBVF9MUwkJMHgwMDAwMDAyMCAvKiBMaW5rIENoYW5nZSAoQjAgb25seSkgKi8KICNkZWZpbmUgIElTVEFUX1BNRQkJMHgwMDAwMDA0MCAvKiBQb3dlciBNYW5hZ2VtZW50IEV2ZW50ICovCkBAIC0yNjQsNiArMjY3LDggQEAKICNkZWZpbmUgIFNCSURISUdIX1ZDX1NISUZUCTE2CiAKIC8qIFNTQiBQQ0kgY29uZmlnIHNwYWNlIHJlZ2lzdGVycy4gICovCisjZGVmaW5lIFNTQl9QTUNTUgkJMHg0NAorI2RlZmluZSAgU1NCX1BFCQkJMHgxMDAKICNkZWZpbmUJU1NCX0JBUjBfV0lOCQkweDgwCiAjZGVmaW5lCVNTQl9CQVIxX1dJTgkJMHg4NAogI2RlZmluZQlTU0JfU1BST01fQ09OVFJPTAkweDg4CkBAIC00MjAsNiArNDI1LDcgQEAKIAogCXUzMgkJCWRtYV9vZmZzZXQ7CiAJdTMyCQkJZmxhZ3M7CisjZGVmaW5lIEI0NF9GTEFHX0IwX0FORExBVEVSCTB4MDAwMDAwMDEKICNkZWZpbmUgQjQ0X0ZMQUdfQlVHR1lfVFhQVFIJMHgwMDAwMDAwMgogI2RlZmluZSBCNDRfRkxBR19SRU9SREVSX0JVRwkweDAwMDAwMDA0CiAjZGVmaW5lIEI0NF9GTEFHX1BBVVNFX0FVVE8JMHgwMDAwODAwMApAQCAtNDM1LDYgKzQ0MSw3IEBACiAjZGVmaW5lIEI0NF9GTEFHX0lOVEVSTkFMX1BIWQkweDEwMDAwMDAwCiAjZGVmaW5lIEI0NF9GTEFHX1JYX1JJTkdfSEFDSwkweDIwMDAwMDAwCiAjZGVmaW5lIEI0NF9GTEFHX1RYX1JJTkdfSEFDSwkweDQwMDAwMDAwCisjZGVmaW5lIEI0NF9GTEFHX1dPTF9FTkFCTEUJMHg4MDAwMDAwMAogCiAJdTMyCQkJcnhfb2Zmc2V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyLmMgYi9kcml2ZXJzL25ldC9ibngyLmMKaW5kZXggNzAyZDU0Ni4uNzYzNTczNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54Mi5jCisrKyBiL2RyaXZlcnMvbmV0L2JueDIuYwpAQCAtMTY0MCw3ICsxNjQwLDcgQEAKIAkJc2tiID0gdHhfYnVmLT5za2I7CiAjaWZkZWYgQkNNX1RTTyAKIAkJLyogcGFydGlhbCBCRCBjb21wbGV0aW9ucyBwb3NzaWJsZSB3aXRoIFRTTyBwYWNrZXRzICovCi0JCWlmIChza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplKSB7CisJCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSB7CiAJCQl1MTYgbGFzdF9pZHgsIGxhc3RfcmluZ19pZHg7CiAKIAkJCWxhc3RfaWR4ID0gc3dfY29ucyArCkBAIC00NDI4LDcgKzQ0MjgsNyBAQAogCQkJKFRYX0JEX0ZMQUdTX1ZMQU5fVEFHIHwgKHZsYW5fdHhfdGFnX2dldChza2IpIDw8IDE2KSk7CiAJfQogI2lmZGVmIEJDTV9UU08gCi0JaWYgKChtc3MgPSBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplKSAmJgorCWlmICgobXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSkgJiYKIAkJKHNrYi0+bGVuID4gKGJwLT5kZXYtPm10dSArIEVUSF9ITEVOKSkpIHsKIAkJdTMyIHRjcF9vcHRfbGVuLCBpcF90Y3BfbGVuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYXNzaW5pLmMgYi9kcml2ZXJzL25ldC9jYXNzaW5pLmMKaW5kZXggMzlmMzZhYS4uNTY1YTU0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fzc2luaS5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuYwpAQCAtMjkxNSw4ICsyOTE1LDcgQEAKIAkgKi8KIAlzdGF0aWMgaW50IHJpbmc7IAogCi0Jc2tiID0gc2tiX3BhZHRvKHNrYiwgY3AtPm1pbl9mcmFtZV9zaXplKTsKLQlpZiAoIXNrYikKKwlpZiAoc2tiX3BhZHRvKHNrYiwgY3AtPm1pbl9mcmFtZV9zaXplKSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBYWFg6IHdlIG5lZWQgc29tZSBoaWdoZXItbGV2ZWwgUW9TIGhvb2tzIHRvIHN0ZWVyIHBhY2tldHMgdG8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3NnZS5jCmluZGV4IDQzOTFiZjQuLjUzZWZmZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby9zZ2UuYwpAQCAtMTQxOCw3ICsxNDE4LDcgQEAKIAlzdHJ1Y3QgY3BsX3R4X3BrdCAqY3BsOwogCiAjaWZkZWYgTkVUSUZfRl9UU08KLQlpZiAoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkgeworCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSB7CiAJCWludCBldGhfdHlwZTsKIAkJc3RydWN0IGNwbF90eF9wa3RfbHNvICpoZHI7CiAKQEAgLTE0MzMsNyArMTQzMyw3IEBACiAJCWhkci0+aXBfaGRyX3dvcmRzID0gc2tiLT5uaC5pcGgtPmlobDsKIAkJaGRyLT50Y3BfaGRyX3dvcmRzID0gc2tiLT5oLnRoLT5kb2ZmOwogCQloZHItPmV0aF90eXBlX21zcyA9IGh0b25zKE1LX0VUSF9UWVBFX01TUyhldGhfdHlwZSwKLQkJCQkJCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUpKTsKKwkJCQkJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpKTsKIAkJaGRyLT5sZW4gPSBodG9ubChza2ItPmxlbiAtIHNpemVvZigqaGRyKSk7CiAJCWNwbCA9IChzdHJ1Y3QgY3BsX3R4X3BrdCAqKWhkcjsKIAkJc2dlLT5zdGF0cy50eF9sc29fcGt0cysrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZGVjbGFuY2UuYyBiL2RyaXZlcnMvbmV0L2RlY2xhbmNlLmMKaW5kZXggZjEzMGJkYS4uZDNkOTU4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZGVjbGFuY2UuYworKysgYi9kcml2ZXJzL25ldC9kZWNsYW5jZS5jCkBAIC04ODUsOCArODg1LDcgQEAKIAlsZW4gPSBza2JsZW47CiAJCiAJaWYgKGxlbiA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQorCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogCQkJcmV0dXJuIDA7CiAJCWxlbiA9IEVUSF9aTEVOOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RlcGNhLmMgYi9kcml2ZXJzL25ldC9kZXBjYS5jCmluZGV4IDA5NDFkNDAuLmU5NDZjNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RlcGNhLmMKKysrIGIvZHJpdmVycy9uZXQvZGVwY2EuYwpAQCAtOTM4LDExICs5MzgsOCBAQAogCWlmIChza2ItPmxlbiA8IDEpCiAJCWdvdG8gb3V0OwogCi0JaWYgKHNrYi0+bGVuIDwgRVRIX1pMRU4pIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCi0JCQlnb3RvIG91dDsKLQl9CisJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKKwkJZ290byBvdXQ7CiAJCiAJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMKaW5kZXggYTM3M2NjYi4uMzJiN2Q0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYwpAQCAtMjM5NCw3ICsyMzk0LDcgQEAKIAl1aW50OF90IGlwY3NzLCBpcGNzbywgdHVjc3MsIHR1Y3NvLCBoZHJfbGVuOwogCWludCBlcnI7CiAKLQlpZiAoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkgeworCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSB7CiAJCWlmIChza2JfaGVhZGVyX2Nsb25lZChza2IpKSB7CiAJCQllcnIgPSBwc2tiX2V4cGFuZF9oZWFkKHNrYiwgMCwgMCwgR0ZQX0FUT01JQyk7CiAJCQlpZiAoZXJyKQpAQCAtMjQwMiw3ICsyNDAyLDcgQEAKIAkJfQogCiAJCWhkcl9sZW4gPSAoKHNrYi0+aC5yYXcgLSBza2ItPmRhdGEpICsgKHNrYi0+aC50aC0+ZG9mZiA8PCAyKSk7Ci0JCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemU7CisJCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemU7CiAJCWlmIChza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSkgewogCQkJc2tiLT5uaC5pcGgtPnRvdF9sZW4gPSAwOwogCQkJc2tiLT5uaC5pcGgtPmNoZWNrID0gMDsKQEAgLTI1MTksNyArMjUxOSw3IEBACiAJCSAqIHRzbyBnZXRzIHdyaXR0ZW4gYmFjayBwcmVtYXR1cmVseSBiZWZvcmUgdGhlIGRhdGEgaXMgZnVsbHkKIAkJICogRE1BJ2QgdG8gdGhlIGNvbnRyb2xsZXIgKi8KIAkJaWYgKCFza2ItPmRhdGFfbGVuICYmIHR4X3JpbmctPmxhc3RfdHhfdHNvICYmCi0JCSAgICAhc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkgeworCQkgICAgIXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpIHsKIAkJCXR4X3JpbmctPmxhc3RfdHhfdHNvID0gMDsKIAkJCXNpemUgLT0gNDsKIAkJfQpAQCAtMjc1Nyw3ICsyNzU3LDcgQEAKIAl9CiAKICNpZmRlZiBORVRJRl9GX1RTTwotCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemU7CisJbXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAkvKiBUaGUgY29udHJvbGxlciBkb2VzIGEgc2ltcGxlIGNhbGN1bGF0aW9uIHRvCiAJICogbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIGluIHRoZSBGSUZPIGJlZm9yZQogCSAqIGluaXRpYXRpbmcgdGhlIERNQSBmb3IgZWFjaCBidWZmZXIuICBUaGUgY2FsYyBpczoKQEAgLTI4MDcsNyArMjgwNyw3IEBACiAjaWZkZWYgTkVUSUZfRl9UU08KIAkvKiBDb250cm9sbGVyIEVycmF0dW0gd29ya2Fyb3VuZCAqLwogCWlmICghc2tiLT5kYXRhX2xlbiAmJiB0eF9yaW5nLT5sYXN0X3R4X3RzbyAmJgotCSAgICAhc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkKKwkgICAgIXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCiAJCWNvdW50Kys7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZWVwcm8uYyBiL2RyaXZlcnMvbmV0L2VlcHJvLmMKaW5kZXggYTgwNmRmZS4uZTcwZjE3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZWVwcm8uYworKysgYi9kcml2ZXJzL25ldC9lZXByby5jCkBAIC0xMTU0LDggKzExNTQsNyBAQAogCQlwcmludGsoS0VSTl9ERUJVRyAgIiVzOiBlbnRlcmluZyBlZXByb19zZW5kX3BhY2tldCByb3V0aW5lLlxuIiwgZGV2LT5uYW1lKTsKIAogCWlmIChsZW5ndGggPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKIAkJCXJldHVybiAwOwogCQlsZW5ndGggPSBFVEhfWkxFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lZXhwcmVzcy5jIGIvZHJpdmVycy9uZXQvZWV4cHJlc3MuYwppbmRleCA4MmJkMzU2Li5hNzRiMjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lZXhwcmVzcy5jCisrKyBiL2RyaXZlcnMvbmV0L2VleHByZXNzLmMKQEAgLTY3Nyw4ICs2NzcsNyBAQAogI2VuZGlmCiAKIAlpZiAoYnVmLT5sZW4gPCBFVEhfWkxFTikgewotCQlidWYgPSBza2JfcGFkdG8oYnVmLCBFVEhfWkxFTik7Ci0JCWlmIChidWYgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhidWYsIEVUSF9aTEVOKSkKIAkJCXJldHVybiAwOwogCQlsZW5ndGggPSBFVEhfWkxFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lcGljMTAwLmMgYi9kcml2ZXJzL25ldC9lcGljMTAwLmMKaW5kZXggOGQ2ODBjZS4uNzI0ZDdkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXBpYzEwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2VwaWMxMDAuYwpAQCAtMTAyNywxMSArMTAyNyw4IEBACiAJdTMyIGN0cmxfd29yZDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKHNrYi0+bGVuIDwgRVRIX1pMRU4pIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCi0JCQlyZXR1cm4gMDsKLQl9CisJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKKwkJcmV0dXJuIDA7CiAKIAkvKiBDYXV0aW9uOiB0aGUgd3JpdGUgb3JkZXIgaXMgaW1wb3J0YW50IGhlcmUsIHNldCB0aGUgZmllbGQgd2l0aCB0aGUKIAkgICAib3duZXJzaGlwIiBiaXQgbGFzdC4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aDE2aS5jIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKaW5kZXggYjY3NTQ1Yi4uNGJmNzZmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoMTZpLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKQEAgLTEwNjQsOCArMTA2NCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChsZW5ndGggPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKIAkJCXJldHVybiAwOwogCQlsZW5ndGggPSBFVEhfWkxFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCmluZGV4IDA0YTUzZjEuLjIxYmU0ZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCisrKyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCkBAIC0xNDk1LDggKzE0OTUsOCBAQAogCW5wLT50eF9za2J1ZmZbbnJdID0gc2tiOwogCiAjaWZkZWYgTkVUSUZfRl9UU08KLQlpZiAoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkKLQkJdHhfZmxhZ3NfZXh0cmEgPSBOVl9UWDJfVFNPIHwgKHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUgPDwgTlZfVFgyX1RTT19TSElGVCk7CisJaWYgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCisJCXR4X2ZsYWdzX2V4dHJhID0gTlZfVFgyX1RTTyB8IChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplIDw8IE5WX1RYMl9UU09fU0hJRlQpOwogCWVsc2UKICNlbmRpZgogCXR4X2ZsYWdzX2V4dHJhID0gKHNrYi0+aXBfc3VtbWVkID09IENIRUNLU1VNX0hXID8gKE5WX1RYMl9DSEVDS1NVTV9MM3xOVl9UWDJfQ0hFQ0tTVU1fTDQpIDogMCk7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQAogCXNwaW5fdW5sb2NrX2lycSgmbnAtPmxvY2spOwogfQogCi12b2lkIG52X3VwZGF0ZV9wYXVzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcGF1c2VfZmxhZ3MpCitzdGF0aWMgdm9pZCBudl91cGRhdGVfcGF1c2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHBhdXNlX2ZsYWdzKQogewogCXN0cnVjdCBmZV9wcml2ICpucCA9IG5ldGRldl9wcml2KGRldik7CiAJdTggX19pb21lbSAqYmFzZSA9IGdldF9od2Jhc2UoZGV2KTsKQEAgLTI5OTEsMTMgKzI5OTEsMTMgQEAKIAluZXRpZl9jYXJyaWVyX29mZihkZXYpOwogCWlmIChuZXRpZl9ydW5uaW5nKGRldikpIHsKIAkJbnZfZGlzYWJsZV9pcnEoZGV2KTsKLQkJc3Bpbl9sb2NrX2JoKCZkZXYtPnhtaXRfbG9jayk7CisJCW5ldGlmX3R4X2xvY2tfYmgoZGV2KTsKIAkJc3Bpbl9sb2NrKCZucC0+bG9jayk7CiAJCS8qIHN0b3AgZW5naW5lcyAqLwogCQludl9zdG9wX3J4KGRldik7CiAJCW52X3N0b3BfdHgoZGV2KTsKIAkJc3Bpbl91bmxvY2soJm5wLT5sb2NrKTsKLQkJc3Bpbl91bmxvY2tfYmgoJmRldi0+eG1pdF9sb2NrKTsKKwkJbmV0aWZfdHhfdW5sb2NrX2JoKGRldik7CiAJfQogCiAJaWYgKGVjbWQtPmF1dG9uZWcgPT0gQVVUT05FR19FTkFCTEUpIHsKQEAgLTMxMzEsMTMgKzMxMzEsMTMgQEAKIAkJbmV0aWZfY2Fycmllcl9vZmYoZGV2KTsKIAkJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgewogCQkJbnZfZGlzYWJsZV9pcnEoZGV2KTsKLQkJCXNwaW5fbG9ja19iaCgmZGV2LT54bWl0X2xvY2spOworCQkJbmV0aWZfdHhfbG9ja19iaChkZXYpOwogCQkJc3Bpbl9sb2NrKCZucC0+bG9jayk7CiAJCQkvKiBzdG9wIGVuZ2luZXMgKi8KIAkJCW52X3N0b3BfcngoZGV2KTsKIAkJCW52X3N0b3BfdHgoZGV2KTsKIAkJCXNwaW5fdW5sb2NrKCZucC0+bG9jayk7Ci0JCQlzcGluX3VubG9ja19iaCgmZGV2LT54bWl0X2xvY2spOworCQkJbmV0aWZfdHhfdW5sb2NrX2JoKGRldik7CiAJCQlwcmludGsoS0VSTl9JTkZPICIlczogbGluayBkb3duLlxuIiwgZGV2LT5uYW1lKTsKIAkJfQogCkBAIC0zMjQ0LDcgKzMyNDQsNyBAQAogCiAJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgewogCQludl9kaXNhYmxlX2lycShkZXYpOwotCQlzcGluX2xvY2tfYmgoJmRldi0+eG1pdF9sb2NrKTsKKwkJbmV0aWZfdHhfbG9ja19iaChkZXYpOwogCQlzcGluX2xvY2soJm5wLT5sb2NrKTsKIAkJLyogc3RvcCBlbmdpbmVzICovCiAJCW52X3N0b3BfcngoZGV2KTsKQEAgLTMzMDMsNyArMzMwMyw3IEBACiAJCW52X3N0YXJ0X3J4KGRldik7CiAJCW52X3N0YXJ0X3R4KGRldik7CiAJCXNwaW5fdW5sb2NrKCZucC0+bG9jayk7Ci0JCXNwaW5fdW5sb2NrX2JoKCZkZXYtPnhtaXRfbG9jayk7CisJCW5ldGlmX3R4X3VubG9ja19iaChkZXYpOwogCQludl9lbmFibGVfaXJxKGRldik7CiAJfQogCXJldHVybiAwOwpAQCAtMzMzOSwxMyArMzMzOSwxMyBAQAogCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CiAJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgewogCQludl9kaXNhYmxlX2lycShkZXYpOwotCQlzcGluX2xvY2tfYmgoJmRldi0+eG1pdF9sb2NrKTsKKwkJbmV0aWZfdHhfbG9ja19iaChkZXYpOwogCQlzcGluX2xvY2soJm5wLT5sb2NrKTsKIAkJLyogc3RvcCBlbmdpbmVzICovCiAJCW52X3N0b3BfcngoZGV2KTsKIAkJbnZfc3RvcF90eChkZXYpOwogCQlzcGluX3VubG9jaygmbnAtPmxvY2spOwotCQlzcGluX3VubG9ja19iaCgmZGV2LT54bWl0X2xvY2spOworCQluZXRpZl90eF91bmxvY2tfYmgoZGV2KTsKIAl9CiAKIAlucC0+cGF1c2VfZmxhZ3MgJj0gfihOVl9QQVVTRUZSQU1FX1JYX1JFUXxOVl9QQVVTRUZSQU1FX1RYX1JFUSk7CkBAIC0zNzI5LDcgKzM3MjksNyBAQAogCWlmICh0ZXN0LT5mbGFncyAmIEVUSF9URVNUX0ZMX09GRkxJTkUpIHsKIAkJaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkgewogCQkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwotCQkJc3Bpbl9sb2NrX2JoKCZkZXYtPnhtaXRfbG9jayk7CisJCQluZXRpZl90eF9sb2NrX2JoKGRldik7CiAJCQlzcGluX2xvY2tfaXJxKCZucC0+bG9jayk7CiAJCQludl9kaXNhYmxlX2h3X2ludGVycnVwdHMoZGV2LCBucC0+aXJxbWFzayk7CiAJCQlpZiAoIShucC0+bXNpX2ZsYWdzICYgTlZfTVNJX1hfRU5BQkxFRCkpIHsKQEAgLTM3NDUsNyArMzc0NSw3IEBACiAJCQludl9kcmFpbl9yeChkZXYpOwogCQkJbnZfZHJhaW5fdHgoZGV2KTsKIAkJCXNwaW5fdW5sb2NrX2lycSgmbnAtPmxvY2spOwotCQkJc3Bpbl91bmxvY2tfYmgoJmRldi0+eG1pdF9sb2NrKTsKKwkJCW5ldGlmX3R4X3VubG9ja19iaChkZXYpOwogCQl9CiAKIAkJaWYgKCFudl9yZWdpc3Rlcl90ZXN0KGRldikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hwMTAwLmMgYi9kcml2ZXJzL25ldC9ocDEwMC5jCmluZGV4IDI0N2M4Y2EuLmRkMWRjMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hwMTAwLmMKKysrIGIvZHJpdmVycy9uZXQvaHAxMDAuYwpAQCAtMTQ4NywxMSArMTQ4Nyw4IEBACiAJaWYgKHNrYi0+bGVuIDw9IDApCiAJCXJldHVybiAwOwogCQkKLQlpZiAoc2tiLT5sZW4gPCBFVEhfWkxFTiAmJiBscC0+Y2hpcCA9PSBIUDEwMF9DSElQSURfU0hBU1RBKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQotCQkJcmV0dXJuIDA7Ci0JfQorCWlmIChscC0+Y2hpcCA9PSBIUDEwMF9DSElQSURfU0hBU1RBICYmIHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKKwkJcmV0dXJuIDA7CiAKIAkvKiBHZXQgVHggcmluZyB0YWlsIHBvaW50ZXIgKi8KIAlpZiAobHAtPnR4cnRhaWwtPm5leHQgPT0gbHAtPnR4cmhlYWQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2libXZldGguYyBiL2RyaXZlcnMvbmV0L2libXZldGguYwppbmRleCA2NjYzNDZmLi40YzJlNzI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pYm12ZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvaWJtdmV0aC5jCkBAIC02MSw3ICs2MSw3IEBACiAjdW5kZWYgREVCVUcKIAogI2RlZmluZSBpYm12ZXRoX3ByaW50ayhmbXQsIGFyZ3MuLi4pIFwKLSAgcHJpbnRrKEtFUk5fSU5GTyAiJXM6ICIgZm10LCBfX0ZJTEVfXywgIyMgYXJncykKKyAgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiAiIGZtdCwgX19GSUxFX18sICMjIGFyZ3MpCiAKICNkZWZpbmUgaWJtdmV0aF9lcnJvcl9wcmludGsoZm10LCBhcmdzLi4uKSBcCiAgIHByaW50ayhLRVJOX0VSUiAiKCVzOiUzLjNkIHVhOiV4KSBFUlJPUjogIiBmbXQsIF9fRklMRV9fLCBfX0xJTkVfXyAsIGFkYXB0ZXItPnZkZXYtPnVuaXRfYWRkcmVzcywgIyMgYXJncykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lvYzMtZXRoLmMgYi9kcml2ZXJzL25ldC9pb2MzLWV0aC5jCmluZGV4IGFlNzFlZDUuLmU3NmU2ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lvYzMtZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvaW9jMy1ldGguYwpAQCAtMTQ1LDcgKzE0NSw3IEBACiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgaW9jM19tYXAodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZkZXYpCiB7CiAjaWZkZWYgQ09ORklHX1NHSV9JUDI3Ci0JdmRldiA8PD0gNTg7ICAgLyogU2hpZnQgdG8gUENJNjRfQVRUUl9WSVJUVUFMICovCisJdmRldiA8PD0gNTc7ICAgLyogU2hpZnQgdG8gUENJNjRfQVRUUl9WSVJUVUFMICovCiAKIAlyZXR1cm4gdmRldiB8ICgweGFVTCA8PCBQQ0k2NF9BVFRSX1RBUkdfU0hGVCkgfCBQQ0k2NF9BVFRSX1BSRUYgfAogCSAgICAgICAoKHVuc2lnbmVkIGxvbmcpcHRyICYgVE9fUEhZU19NQVNLKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lzZXJpZXNfdmV0aC5jIGIvZHJpdmVycy9uZXQvaXNlcmllc192ZXRoLmMKaW5kZXggZjBmMDRiZS4uOTMzOTRkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXNlcmllc192ZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvaXNlcmllc192ZXRoLmMKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CiAKICNpbmNsdWRlIDxhc20vYWJzX2FkZHIuaD4KICNpbmNsdWRlIDxhc20vaXNlcmllcy9tZi5oPgpAQCAtMTAzNSwxMSArMTAzNiwyMiBAQAogCS5nZXRfbGluayA9IHZldGhfZ2V0X2xpbmssCiB9OwogCi1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKiBfX2luaXQgdmV0aF9wcm9iZV9vbmUoaW50IHZsYW4sIHN0cnVjdCBkZXZpY2UgKnZkZXYpCitzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKiBfX2luaXQgdmV0aF9wcm9iZV9vbmUoaW50IHZsYW4sCisJCXN0cnVjdCB2aW9fZGV2ICp2aW9fZGV2KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJc3RydWN0IHZldGhfcG9ydCAqcG9ydDsKKwlzdHJ1Y3QgZGV2aWNlICp2ZGV2ID0gJnZpb19kZXYtPmRldjsKIAlpbnQgaSwgcmM7CisJY29uc3QgdW5zaWduZWQgY2hhciAqbWFjX2FkZHI7CisKKwltYWNfYWRkciA9IHZpb19nZXRfYXR0cmlidXRlKHZpb19kZXYsICJsb2NhbC1tYWMtYWRkcmVzcyIsIE5VTEwpOworCWlmIChtYWNfYWRkciA9PSBOVUxMKQorCQltYWNfYWRkciA9IHZpb19nZXRfYXR0cmlidXRlKHZpb19kZXYsICJtYWMtYWRkcmVzcyIsIE5VTEwpOworCWlmIChtYWNfYWRkciA9PSBOVUxMKSB7CisJCXZldGhfZXJyb3IoIlVuYWJsZSB0byBmZXRjaCBNQUMgYWRkcmVzcyBmcm9tIGRldmljZSB0cmVlLlxuIik7CisJCXJldHVybiBOVUxMOworCX0KIAogCWRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZiAoc3RydWN0IHZldGhfcG9ydCkpOwogCWlmICghIGRldikgewpAQCAtMTA2NCwxNiArMTA3NiwxMSBAQAogCX0KIAlwb3J0LT5kZXYgPSB2ZGV2OwogCi0JZGV2LT5kZXZfYWRkclswXSA9IDB4MDI7Ci0JZGV2LT5kZXZfYWRkclsxXSA9IDB4MDE7Ci0JZGV2LT5kZXZfYWRkclsyXSA9IDB4ZmY7Ci0JZGV2LT5kZXZfYWRkclszXSA9IHZsYW47Ci0JZGV2LT5kZXZfYWRkcls0XSA9IDB4ZmY7Ci0JZGV2LT5kZXZfYWRkcls1XSA9IHRoaXNfbHA7CisJbWVtY3B5KGRldi0+ZGV2X2FkZHIsIG1hY19hZGRyLCBFVEhfQUxFTik7CiAKIAlkZXYtPm10dSA9IFZFVEhfTUFYX01UVTsKIAotCW1lbWNweSgmcG9ydC0+bWFjX2FkZHIsIGRldi0+ZGV2X2FkZHIsIDYpOworCW1lbWNweSgmcG9ydC0+bWFjX2FkZHIsIG1hY19hZGRyLCBFVEhfQUxFTik7CiAKIAlkZXYtPm9wZW4gPSB2ZXRoX29wZW47CiAJZGV2LT5oYXJkX3N0YXJ0X3htaXQgPSB2ZXRoX3N0YXJ0X3htaXQ7CkBAIC0xNjA4LDcgKzE2MTUsNyBAQAogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJc3RydWN0IHZldGhfcG9ydCAqcG9ydDsKIAotCWRldiA9IHZldGhfcHJvYmVfb25lKGksICZ2ZGV2LT5kZXYpOworCWRldiA9IHZldGhfcHJvYmVfb25lKGksIHZkZXYpOwogCWlmIChkZXYgPT0gTlVMTCkgewogCQl2ZXRoX3JlbW92ZSh2ZGV2KTsKIAkJcmV0dXJuIDE7CkBAIC0xNjQxLDcgKzE2NDgsNyBAQAogICogc3VwcG9ydC4KICAqLwogc3RhdGljIHN0cnVjdCB2aW9fZGV2aWNlX2lkIHZldGhfZGV2aWNlX3RhYmxlW10gX19kZXZpbml0ZGF0YSA9IHsKLQl7ICJ2bGFuIiwgIiIgfSwKKwl7ICJuZXR3b3JrIiwgIklCTSxpU2VyaWVzLWwtbGFuIiB9LAogCXsgIiIsICIiIH0KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHZpbywgdmV0aF9kZXZpY2VfdGFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYi9peGdiX21haW4uYyBiL2RyaXZlcnMvbmV0L2l4Z2IvaXhnYl9tYWluLmMKaW5kZXggNTcwMDZmYi4uOGJiMzJmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYi9peGdiX21haW4uYworKysgYi9kcml2ZXJzL25ldC9peGdiL2l4Z2JfbWFpbi5jCkBAIC0xMTczLDcgKzExNzMsNyBAQAogCXVpbnQxNl90IGlwY3NlLCB0dWNzZSwgbXNzOwogCWludCBlcnI7CiAKLQlpZihsaWtlbHkoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkpIHsKKwlpZihsaWtlbHkoc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSkpIHsKIAkJaWYgKHNrYl9oZWFkZXJfY2xvbmVkKHNrYikpIHsKIAkJCWVyciA9IHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCAwLCBHRlBfQVRPTUlDKTsKIAkJCWlmIChlcnIpCkBAIC0xMTgxLDcgKzExODEsNyBAQAogCQl9CiAKIAkJaGRyX2xlbiA9ICgoc2tiLT5oLnJhdyAtIHNrYi0+ZGF0YSkgKyAoc2tiLT5oLnRoLT5kb2ZmIDw8IDIpKTsKLQkJbXNzID0gc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZTsKKwkJbXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAkJc2tiLT5uaC5pcGgtPnRvdF9sZW4gPSAwOwogCQlza2ItPm5oLmlwaC0+Y2hlY2sgPSAwOwogCQlza2ItPmgudGgtPmNoZWNrID0gfmNzdW1fdGNwdWRwX21hZ2ljKHNrYi0+bmguaXBoLT5zYWRkciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2xhbmNlLmMgYi9kcml2ZXJzL25ldC9sYW5jZS5jCmluZGV4IGJiNWFkNDcuLmMxYzM0NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2xhbmNlLmMKKysrIGIvZHJpdmVycy9uZXQvbGFuY2UuYwpAQCAtOTY4LDggKzk2OCw3IEBACiAJLyogVGhlIG9sZCBMQU5DRSBjaGlwcyBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgcGFkIGJ1ZmZlcnMgdG8gbWluLiBzaXplLiAqLwogCWlmIChjaGlwX3RhYmxlW2xwLT5jaGlwX3ZlcnNpb25dLmZsYWdzICYgTEFOQ0VfTVVTVF9QQUQpIHsKIAkJaWYgKHNrYi0+bGVuIDwgRVRIX1pMRU4pIHsKLQkJCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJCWlmIChza2IgPT0gTlVMTCkKKwkJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAJCQkJZ290byBvdXQ7CiAJCQlscC0+dHhfcmluZ1tlbnRyeV0ubGVuZ3RoID0gLUVUSF9aTEVOOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9sYXNpXzgyNTk2LmMgYi9kcml2ZXJzL25ldC9sYXNpXzgyNTk2LmMKaW5kZXggOTU3ODg4ZC4uMWFiMDk0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbGFzaV84MjU5Ni5jCisrKyBiL2RyaXZlcnMvbmV0L2xhc2lfODI1OTYuYwpAQCAtMTA4Myw4ICsxMDgzLDcgQEAKIAkJCQlza2ItPmxlbiwgc2tiLT5kYXRhKSk7CiAKIAlpZiAobGVuZ3RoIDwgRVRIX1pMRU4pIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCisJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAJCQlyZXR1cm4gMDsKIAkJbGVuZ3RoID0gRVRIX1pMRU47CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbG9vcGJhY2suYyBiL2RyaXZlcnMvbmV0L2xvb3BiYWNrLmMKaW5kZXggYjc5ZDZlOC4uNDNmZWY3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbG9vcGJhY2suYworKysgYi9kcml2ZXJzL25ldC9sb29wYmFjay5jCkBAIC03NCw3ICs3NCw3IEBACiAJc3RydWN0IGlwaGRyICppcGggPSBza2ItPm5oLmlwaDsKIAlzdHJ1Y3QgdGNwaGRyICp0aCA9IChzdHJ1Y3QgdGNwaGRyKikoc2tiLT5uaC5yYXcgKyAoaXBoLT5paGwgKiA0KSk7CiAJdW5zaWduZWQgaW50IGRvZmZzZXQgPSAoaXBoLT5paGwgKyB0aC0+ZG9mZikgKiA0OwotCXVuc2lnbmVkIGludCBtdHUgPSBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplICsgZG9mZnNldDsKKwl1bnNpZ25lZCBpbnQgbXR1ID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSArIGRvZmZzZXQ7CiAJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CiAJdTMyIHNlcSA9IG50b2hsKHRoLT5zZXEpOwogCXUxNiBpZCAgPSBudG9ocyhpcGgtPmlkKTsKQEAgLTEzOSw3ICsxMzksNyBAQAogI2VuZGlmCiAKICNpZmRlZiBMT09QQkFDS19UU08KLQlpZiAoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkgeworCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSB7CiAJCUJVR19PTihza2ItPnByb3RvY29sICE9IGh0b25zKEVUSF9QX0lQKSk7CiAJCUJVR19PTihza2ItPm5oLmlwaC0+cHJvdG9jb2wgIT0gSVBQUk9UT19UQ1ApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9scDQ4NmUuYyBiL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCmluZGV4IDk0ZDVlYTEuLmJmM2YzNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCkBAIC04NzcsOCArODc3LDcgQEAKIAlsZW5ndGggPSBza2ItPmxlbjsKIAkKIAlpZiAobGVuZ3RoIDwgRVRIX1pMRU4pIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCisJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAJCQlyZXR1cm4gMDsKIAkJbGVuZ3RoID0gRVRIX1pMRU47CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYyBiL2RyaXZlcnMvbmV0L215cmkxMGdlL215cmkxMGdlLmMKaW5kZXggZTFmZWI1OC4uZGJkZjE4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYworKysgYi9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jCkBAIC0xODc5LDcgKzE4NzksNyBAQAogCiAjaWZkZWYgTkVUSUZfRl9UU08KIAlpZiAoc2tiLT5sZW4gPiAoZGV2LT5tdHUgKyBFVEhfSExFTikpIHsKLQkJbXNzID0gc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZTsKKwkJbXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAkJaWYgKG1zcyAhPSAwKQogCQkJbWF4X3NlZ21lbnRzID0gTVlSSTEwR0VfTUFYX1NFTkRfREVTQ19UU087CiAJfQpAQCAtMTkzOSw4ICsxOTM5LDcgQEAKIAogCQkvKiBwYWQgZnJhbWVzIHRvIGF0IGxlYXN0IEVUSF9aTEVOIGJ5dGVzICovCiAJCWlmICh1bmxpa2VseShza2ItPmxlbiA8IEVUSF9aTEVOKSkgewotCQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQkJaWYgKHNrYiA9PSBOVUxMKSB7CisJCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKSB7CiAJCQkJLyogVGhlIHBhY2tldCBpcyBnb25lLCBzbyB3ZSBtdXN0CiAJCQkJICogcmV0dXJuIDAgKi8KIAkJCQltZ3AtPnN0YXRzLnR4X2Ryb3BwZWQgKz0gMTsKQEAgLTIxMTMsMTQgKzIxMTIsMTQgQEAKIAkJfQogCQlpZHggPSAoaWR4ICsgMSkgJiB0eC0+bWFzazsKIAl9IHdoaWxlIChpZHggIT0gbGFzdF9pZHgpOwotCWlmIChza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplKSB7CisJaWYgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpIHsKIAkJcHJpbnRrKEtFUk5fRVJSCiAJCSAgICAgICAibXlyaTEwZ2U6ICVzOiBUU08gYnV0IHdhbnRlZCB0byBsaW5lYXJpemU/IT8hP1xuIiwKIAkJICAgICAgIG1ncC0+ZGV2LT5uYW1lKTsKIAkJZ290byBkcm9wOwogCX0KIAotCWlmIChza2JfbGluZWFyaXplKHNrYiwgR0ZQX0FUT01JQykpCisJaWYgKHNrYl9saW5lYXJpemUoc2tiKSkKIAkJZ290byBkcm9wOwogCiAJbWdwLT50eF9saW5lYXJpemVkKys7CkBAIC0yMjUxLDEyICsyMjUwLDYgQEAKIAl9CiAKIAljYXAgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShicmlkZ2UsIFBDSV9FWFRfQ0FQX0lEX0VSUik7Ci0JLyogbnZpZGlhIGV4dCBjYXAgaXMgbm90IGFsd2F5cyBsaW5rZWQgaW4gZXh0IGNhcCBjaGFpbiAqLwotCWlmICghY2FwCi0JICAgICYmIGJyaWRnZS0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURfTlZJRElBCi0JICAgICYmIGJyaWRnZS0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9DSzgwNF9QQ0lFKQotCQljYXAgPSAweDE2MDsKLQogCWlmICghY2FwKQogCQlyZXR1cm47CiAKQEAgLTI3MzIsOCArMjcyNSw2IEBACiAJLyogU2F2ZSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGJlIHJlc3RvcmVkIGlmIHRoZQogCSAqIG5pYyByZXNldHMgZHVlIHRvIGEgcGFyaXR5IGVycm9yICovCiAJbXlyaTEwZ2Vfc2F2ZV9zdGF0ZShtZ3ApOwotCS8qIFJlc3RvcmUgc3RhdGUgaW1tZWRpYXRlbHkgc2luY2UgcGNpX3NhdmVfbXNpX3N0YXRlIGRpc2FibGVzIE1TSSAqLwotCW15cmkxMGdlX3Jlc3RvcmVfc3RhdGUobWdwKTsKIAogCS8qIFNldHVwIHRoZSB3YXRjaGRvZyB0aW1lciAqLwogCXNldHVwX3RpbWVyKCZtZ3AtPndhdGNoZG9nX3RpbWVyLCBteXJpMTBnZV93YXRjaGRvZ190aW1lciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHgtZXRoLmMgYi9kcml2ZXJzL25ldC9uZXR4LWV0aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MjQzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9uZXR4LWV0aC5jCkBAIC0wLDAgKzEsNTE2IEBACisvKgorICogZHJpdmVycy9uZXQvbmV0eC1ldGguYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L21paS5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9uZXR4LXJlZ3MuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9wZmlmby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3hjLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZXRoLmg+CisKKy8qIFhDIEZpZm8gT2Zmc2V0cyAqLworI2RlZmluZSBFTVBUWV9QVFJfRklGTyh4Y25vKSAgICAoMCArICgoeGNubykgPDwgMykpCS8qIEluZGV4IG9mIHRoZSBlbXB0eSBwb2ludGVyIEZJRk8gKi8KKyNkZWZpbmUgSU5EX0ZJRk9fUE9SVF9ISSh4Y25vKSAgKDEgKyAoKHhjbm8pIDw8IDMpKQkvKiBJbmRleCBvZiB0aGUgRklGTyB3aGVyZSByZWNlaXZlZCAqLworCQkJCQkJCS8qIERhdGEgcGFja2FnZXMgYXJlIGluZGljYXRlZCBieSBYQyAqLworI2RlZmluZSBJTkRfRklGT19QT1JUX0xPKHhjbm8pICAoMiArICgoeGNubykgPDwgMykpCS8qIEluZGV4IG9mIHRoZSBGSUZPIHdoZXJlIHJlY2VpdmVkICovCisJCQkJCQkJLyogRGF0YSBwYWNrYWdlcyBhcmUgaW5kaWNhdGVkIGJ5IFhDICovCisjZGVmaW5lIFJFUV9GSUZPX1BPUlRfSEkoeGNubykgICgzICsgKCh4Y25vKSA8PCAzKSkJLyogSW5kZXggb2YgdGhlIEZJRk8gd2hlcmUgRGF0YSBwYWNrYWdlcyAqLworCQkJCQkJCS8qIGhhdmUgdG8gYmUgaW5kaWNhdGVkIGJ5IEFSTSB3aGljaCAqLworCQkJCQkJCS8qIHNoYWxsIGJlIHNlbnQgKi8KKyNkZWZpbmUgUkVRX0ZJRk9fUE9SVF9MTyh4Y25vKSAgKDQgKyAoKHhjbm8pIDw8IDMpKQkvKiBJbmRleCBvZiB0aGUgRklGTyB3aGVyZSBEYXRhIHBhY2thZ2VzICovCisJCQkJCQkJLyogaGF2ZSB0byBiZSBpbmRpY2F0ZWQgYnkgQVJNIHdoaWNoIHNoYWxsICovCisJCQkJCQkJLyogYmUgc2VudCAqLworI2RlZmluZSBDT05fRklGT19QT1JUX0hJKHhjbm8pICAoNSArICgoeGNubykgPDwgMykpCS8qIEluZGV4IG9mIHRoZSBGSUZPIHdoZXJlIHNlbnQgRGF0YSBwYWNrYWdlcyAqLworCQkJCQkJCS8qIGFyZSBjb25maXJtZWQgKi8KKyNkZWZpbmUgQ09OX0ZJRk9fUE9SVF9MTyh4Y25vKSAgKDYgKyAoKHhjbm8pIDw8IDMpKQkvKiBJbmRleCBvZiB0aGUgRklGTyB3aGVyZSBzZW50IERhdGEgKi8KKwkJCQkJCQkvKiBwYWNrYWdlcyBhcmUgY29uZmlybWVkICovCisjZGVmaW5lIFBGSUZPX01BU0soeGNubykgICAgICAgICgweDdmIDw8ICh4Y25vKjgpKQorCisjZGVmaW5lIEZJRk9fUFRSX0ZSQU1FTEVOX1NISUZUIDAKKyNkZWZpbmUgRklGT19QVFJfRlJBTUVMRU5fTUFTSyAgKDB4N2ZmIDw8IDApCisjZGVmaW5lIEZJRk9fUFRSX0ZSQU1FTEVOKGxlbikgICgoKGxlbikgPDwgMCkgJiBGSUZPX1BUUl9GUkFNRUxFTl9NQVNLKQorI2RlZmluZSBGSUZPX1BUUl9USU1FVFJJRyAgICAgICAoMTw8MTEpCisjZGVmaW5lIEZJRk9fUFRSX01VTFRJX1JFUQorI2RlZmluZSBGSUZPX1BUUl9PUklHSU4gICAgICAgICAoMTw8MTQpCisjZGVmaW5lIEZJRk9fUFRSX1ZMQU4gICAgICAgICAgICgxPDwxNSkKKyNkZWZpbmUgRklGT19QVFJfRlJBTUVOT19TSElGVCAgMTYKKyNkZWZpbmUgRklGT19QVFJfRlJBTUVOT19NQVNLICAgKDB4M2YgPDwgMTYpCisjZGVmaW5lIEZJRk9fUFRSX0ZSQU1FTk8obm8pICAgICgoKG5vKSA8PCAxNikgJiBGSUZPX1BUUl9GUkFNRU5PX01BU0spCisjZGVmaW5lIEZJRk9fUFRSX1NFR01FTlRfU0hJRlQgIDIyCisjZGVmaW5lIEZJRk9fUFRSX1NFR01FTlRfTUFTSyAgICgweGYgPDwgMjIpCisjZGVmaW5lIEZJRk9fUFRSX1NFR01FTlQoc2VnKSAgICgoKHNlZykgJiAweGYpIDw8IDIyKQorI2RlZmluZSBGSUZPX1BUUl9FUlJPUl9TSElGVCAgICAyOAorI2RlZmluZSBGSUZPX1BUUl9FUlJPUl9NQVNLICAgICAoMHhmIDw8IDI4KQorCisjZGVmaW5lIElTUl9MSU5LX1NUQVRVU19DSEFOR0UgKDE8PDQpCisjZGVmaW5lIElTUl9JTkRfTE8gICAgICAgICAgICAgKDE8PDMpCisjZGVmaW5lIElTUl9DT05fTE8gICAgICAgICAgICAgKDE8PDIpCisjZGVmaW5lIElTUl9JTkRfSEkgICAgICAgICAgICAgKDE8PDEpCisjZGVmaW5lIElTUl9DT05fSEkgICAgICAgICAgICAgKDE8PDApCisKKyNkZWZpbmUgRVRIX01BQ19MT0NBTF9DT05GSUcgMHgxNTYwCisjZGVmaW5lIEVUSF9NQUNfNDMyMSAgICAgICAgIDB4MTU2NAorI2RlZmluZSBFVEhfTUFDXzY1ICAgICAgICAgICAweDE1NjgKKworI2RlZmluZSBNQUNfVFJBRkZJQ19DTEFTU19BUlJBTkdFTUVOVF9TSElGVCAxNgorI2RlZmluZSBNQUNfVFJBRkZJQ19DTEFTU19BUlJBTkdFTUVOVF9NQVNLICgweGY8PE1BQ19UUkFGRklDX0NMQVNTX0FSUkFOR0VNRU5UX1NISUZUKQorI2RlZmluZSBNQUNfVFJBRkZJQ19DTEFTU19BUlJBTkdFTUVOVCh4KSAoKCh4KTw8TUFDX1RSQUZGSUNfQ0xBU1NfQVJSQU5HRU1FTlRfU0hJRlQpICYgTUFDX1RSQUZGSUNfQ0xBU1NfQVJSQU5HRU1FTlRfTUFTSykKKyNkZWZpbmUgTE9DQUxfQ09ORklHX0xJTktfU1RBVFVTX0lSUV9FTiAoMTw8MjQpCisjZGVmaW5lIExPQ0FMX0NPTkZJR19DT05fTE9fSVJRX0VOICgxPDwyMykKKyNkZWZpbmUgTE9DQUxfQ09ORklHX0NPTl9ISV9JUlFfRU4gKDE8PDIyKQorI2RlZmluZSBMT0NBTF9DT05GSUdfSU5EX0xPX0lSUV9FTiAoMTw8MjEpCisjZGVmaW5lIExPQ0FMX0NPTkZJR19JTkRfSElfSVJRX0VOICgxPDwyMCkKKworI2RlZmluZSBDQVJETkFNRSAibmV0eC1ldGgiCisKKy8qIExTQiBtdXN0IGJlIHplcm8gKi8KKyNkZWZpbmUgSU5URVJOQUxfUEhZX0FEUiAweDFjCisKK3N0cnVjdCBuZXR4X2V0aF9wcml2IHsKKwl2b2lkICAgICAgICAgICAgICAgICAgICBfX2lvbWVtICpzcmFtX2Jhc2UsICp4cGVjX2Jhc2UsICp4bWFjX2Jhc2U7CisJaW50ICAgICAgICAgICAgICAgICAgICAgaWQ7CisJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgc3RhdHM7CisJc3RydWN0IG1paV9pZl9pbmZvICAgICAgbWlpOworCXUzMiAgICAgICAgICAgICAgICAgICAgIG1zZ19lbmFibGU7CisJc3RydWN0IHhjICAgICAgICAgICAgICAgKnhjOworCXNwaW5sb2NrX3QgICAgICAgICAgICAgIGxvY2s7Cit9OworCitzdGF0aWMgdm9pZCBuZXR4X2V0aF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJLyogaW1wbGVtZW50IG1lICovCit9CisKK3N0YXRpYyBpbnQKK25ldHhfZXRoX2hhcmRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlzdHJ1Y3QgbmV0eF9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IHNrYi0+ZGF0YTsKKwl1bnNpZ25lZCBpbnQgbGVuID0gc2tiLT5sZW47CisKKwlzcGluX2xvY2tfaXJxKCZwcml2LT5sb2NrKTsKKwltZW1jcHlfdG9pbyhwcml2LT5zcmFtX2Jhc2UgKyAxNTYwLCAodm9pZCAqKWJ1ZiwgbGVuKTsKKwlpZiAobGVuIDwgNjApIHsKKwkJbWVtc2V0X2lvKHByaXYtPnNyYW1fYmFzZSArIDE1NjAgKyBsZW4sIDAsIDYwIC0gbGVuKTsKKwkJbGVuID0gNjA7CisJfQorCisJcGZpZm9fcHVzaChSRVFfRklGT19QT1JUX0xPKHByaXYtPmlkKSwKKwkgICAgICAgICAgIEZJRk9fUFRSX1NFR01FTlQocHJpdi0+aWQpIHwKKwkgICAgICAgICAgIEZJRk9fUFRSX0ZSQU1FTk8oMSkgfAorCSAgICAgICAgICAgRklGT19QVFJfRlJBTUVMRU4obGVuKSk7CisKKwluZGV2LT50cmFuc19zdGFydCA9IGppZmZpZXM7CisJcHJpdi0+c3RhdHMudHhfcGFja2V0cysrOworCXByaXYtPnN0YXRzLnR4X2J5dGVzICs9IHNrYi0+bGVuOworCisJbmV0aWZfc3RvcF9xdWV1ZShuZGV2KTsKKwlzcGluX3VubG9ja19pcnEoJnByaXYtPmxvY2spOworCWRldl9rZnJlZV9za2Ioc2tiKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBuZXR4X2V0aF9yZWNlaXZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisJdW5zaWduZWQgaW50IHZhbCwgZnJhbWVubywgc2VnLCBsZW47CisJdW5zaWduZWQgY2hhciAqZGF0YTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJdmFsID0gcGZpZm9fcG9wKElORF9GSUZPX1BPUlRfTE8ocHJpdi0+aWQpKTsKKworCWZyYW1lbm8gPSAodmFsICYgRklGT19QVFJfRlJBTUVOT19NQVNLKSA+PiBGSUZPX1BUUl9GUkFNRU5PX1NISUZUOworCXNlZyA9ICh2YWwgJiBGSUZPX1BUUl9TRUdNRU5UX01BU0spID4+IEZJRk9fUFRSX1NFR01FTlRfU0hJRlQ7CisJbGVuID0gKHZhbCAmIEZJRk9fUFRSX0ZSQU1FTEVOX01BU0spID4+IEZJRk9fUFRSX0ZSQU1FTEVOX1NISUZUOworCisJc2tiID0gZGV2X2FsbG9jX3NrYihsZW4pOworCWlmICh1bmxpa2VseShza2IgPT0gTlVMTCkpIHsKKwkJcHJpbnRrKEtFUk5fTk9USUNFICIlczogTG93IG1lbW9yeSwgcGFja2V0IGRyb3BwZWQuXG4iLAorCQkJbmRldi0+bmFtZSk7CisJCXByaXYtPnN0YXRzLnJ4X2Ryb3BwZWQrKzsKKwkJcmV0dXJuOworCX0KKworCWRhdGEgPSBza2JfcHV0KHNrYiwgbGVuKTsKKworCW1lbWNweV9mcm9taW8oZGF0YSwgcHJpdi0+c3JhbV9iYXNlICsgZnJhbWVubyAqIDE1NjAsIGxlbik7CisKKwlwZmlmb19wdXNoKEVNUFRZX1BUUl9GSUZPKHByaXYtPmlkKSwKKwkJRklGT19QVFJfU0VHTUVOVChzZWcpIHwgRklGT19QVFJfRlJBTUVOTyhmcmFtZW5vKSk7CisKKwluZGV2LT5sYXN0X3J4ID0gamlmZmllczsKKwlza2ItPmRldiA9IG5kZXY7CisJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7CisJbmV0aWZfcngoc2tiKTsKKwlwcml2LT5zdGF0cy5yeF9wYWNrZXRzKys7CisJcHJpdi0+c3RhdHMucnhfYnl0ZXMgKz0gbGVuOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QKK25ldHhfZXRoX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZGV2X2lkOworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisJaW50IHN0YXR1czsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKworCXN0YXR1cyA9IHJlYWRsKE5FVFhfUEZJRk9fWFBFQ19JU1IocHJpdi0+aWQpKTsKKwl3aGlsZSAoc3RhdHVzKSB7CisJCWludCBmaWxsX2xldmVsOworCQl3cml0ZWwoc3RhdHVzLCBORVRYX1BGSUZPX1hQRUNfSVNSKHByaXYtPmlkKSk7CisKKwkJaWYgKChzdGF0dXMgJiBJU1JfQ09OX0hJKSB8fCAoc3RhdHVzICYgSVNSX0lORF9ISSkpCisJCQlwcmludGsoIiVzOiB1bmV4cGVjdGVkIHN0YXR1czogMHglMDh4XG4iLAorCQkJICAgIF9fRlVOQ1RJT05fXywgc3RhdHVzKTsKKworCQlmaWxsX2xldmVsID0KKwkJICAgIHJlYWRsKE5FVFhfUEZJRk9fRklMTF9MRVZFTChJTkRfRklGT19QT1JUX0xPKHByaXYtPmlkKSkpOworCQl3aGlsZSAoZmlsbF9sZXZlbC0tKQorCQkJbmV0eF9ldGhfcmVjZWl2ZShuZGV2KTsKKworCQlpZiAoc3RhdHVzICYgSVNSX0NPTl9MTykKKwkJCW5ldGlmX3dha2VfcXVldWUobmRldik7CisKKwkJaWYgKHN0YXR1cyAmIElTUl9MSU5LX1NUQVRVU19DSEFOR0UpCisJCQltaWlfY2hlY2tfbWVkaWEoJnByaXYtPm1paSwgbmV0aWZfbXNnX2xpbmsocHJpdiksIDEpOworCisJCXN0YXR1cyA9IHJlYWRsKE5FVFhfUEZJRk9fWFBFQ19JU1IocHJpdi0+aWQpKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpuZXR4X2V0aF9xdWVyeV9zdGF0aXN0aWNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisJcmV0dXJuICZwcml2LT5zdGF0czsKK30KKworc3RhdGljIGludCBuZXR4X2V0aF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisKKwlpZiAocmVxdWVzdF9pcnEKKwkgICAgKG5kZXYtPmlycSwgJm5ldHhfZXRoX2ludGVycnVwdCwgU0FfU0hJUlEsIG5kZXYtPm5hbWUsIG5kZXYpKQorCQlyZXR1cm4gLUVBR0FJTjsKKworCXdyaXRlbChuZGV2LT5kZXZfYWRkclswXSB8CisJICAgICAgIG5kZXYtPmRldl9hZGRyWzFdPDw4IHwKKwkgICAgICAgbmRldi0+ZGV2X2FkZHJbMl08PDE2IHwKKwkgICAgICAgbmRldi0+ZGV2X2FkZHJbM108PDI0LAorCSAgICAgICBwcml2LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfUkFNX1NUQVJUX09GUyArIEVUSF9NQUNfNDMyMSk7CisJd3JpdGVsKG5kZXYtPmRldl9hZGRyWzRdIHwKKwkgICAgICAgbmRldi0+ZGV2X2FkZHJbNV08PDgsCisJICAgICAgIHByaXYtPnhwZWNfYmFzZSArIE5FVFhfWFBFQ19SQU1fU1RBUlRfT0ZTICsgRVRIX01BQ182NSk7CisKKwl3cml0ZWwoTE9DQUxfQ09ORklHX0xJTktfU1RBVFVTX0lSUV9FTiB8CisJCUxPQ0FMX0NPTkZJR19DT05fTE9fSVJRX0VOIHwKKwkJTE9DQUxfQ09ORklHX0NPTl9ISV9JUlFfRU4gfAorCQlMT0NBTF9DT05GSUdfSU5EX0xPX0lSUV9FTiB8CisJCUxPQ0FMX0NPTkZJR19JTkRfSElfSVJRX0VOLAorCQlwcml2LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfUkFNX1NUQVJUX09GUyArCisJCUVUSF9NQUNfTE9DQUxfQ09ORklHKTsKKworCW1paV9jaGVja19tZWRpYSgmcHJpdi0+bWlpLCBuZXRpZl9tc2dfbGluayhwcml2KSwgMSk7CisJbmV0aWZfc3RhcnRfcXVldWUobmRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXR4X2V0aF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlzdHJ1Y3QgbmV0eF9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOworCisJbmV0aWZfc3RvcF9xdWV1ZShuZGV2KTsKKworCXdyaXRlbCgwLAorCSAgICBwcml2LT54cGVjX2Jhc2UgKyBORVRYX1hQRUNfUkFNX1NUQVJUX09GUyArIEVUSF9NQUNfTE9DQUxfQ09ORklHKTsKKworCWZyZWVfaXJxKG5kZXYtPmlycSwgbmRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbmV0eF9ldGhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlzdHJ1Y3QgbmV0eF9ldGhfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOworCWludCBpOworCisJcHJpbnRrKEtFUk5fRVJSICIlczogdHJhbnNtaXQgdGltZWQgb3V0LCByZXNldHRpbmdcbiIsIG5kZXYtPm5hbWUpOworCisJc3Bpbl9sb2NrX2lycSgmcHJpdi0+bG9jayk7CisKKwl4Y19yZXNldChwcml2LT54Yyk7CisJeGNfc3RhcnQocHJpdi0+eGMpOworCisJZm9yIChpPTI7IGk8PTE4OyBpKyspCisJCXBmaWZvX3B1c2goRU1QVFlfUFRSX0ZJRk8ocHJpdi0+aWQpLAorCQkJRklGT19QVFJfRlJBTUVOTyhpKSB8IEZJRk9fUFRSX1NFR01FTlQocHJpdi0+aWQpKTsKKworCXNwaW5fdW5sb2NrX2lycSgmcHJpdi0+bG9jayk7CisKKwluZXRpZl93YWtlX3F1ZXVlKG5kZXYpOworfQorCitzdGF0aWMgaW50CituZXR4X2V0aF9waHlfcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IHBoeV9pZCwgaW50IHJlZykKK3sKKwl1bnNpZ25lZCBpbnQgdmFsOworCisJdmFsID0gTUlJTVVfU05SRFkgfCBNSUlNVV9QUkVBTUJMRSB8IE1JSU1VX1BIWUFERFIocGh5X2lkKSB8CisJICAgICAgTUlJTVVfUkVHQUREUihyZWcpIHwgTUlJTVVfUEhZX05SRVM7CisKKwl3cml0ZWwodmFsLCBORVRYX01JSU1VKTsKKwl3aGlsZSAocmVhZGwoTkVUWF9NSUlNVSkgJiBNSUlNVV9TTlJEWSk7CisKKwlyZXR1cm4gcmVhZGwoTkVUWF9NSUlNVSkgPj4gMTY7CisKK30KKworc3RhdGljIHZvaWQKK25ldHhfZXRoX3BoeV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IHBoeV9pZCwgaW50IHJlZywgaW50IHZhbHVlKQoreworCXVuc2lnbmVkIGludCB2YWw7CisKKwl2YWwgPSBNSUlNVV9TTlJEWSB8IE1JSU1VX1BSRUFNQkxFIHwgTUlJTVVfUEhZQUREUihwaHlfaWQpIHwKKwkgICAgICBNSUlNVV9SRUdBRERSKHJlZykgfCBNSUlNVV9QSFlfTlJFUyB8IE1JSU1VX09QTU9ERV9XUklURSB8CisJICAgICAgTUlJTVVfREFUQSh2YWx1ZSk7CisKKwl3cml0ZWwodmFsLCBORVRYX01JSU1VKTsKKwl3aGlsZSAocmVhZGwoTkVUWF9NSUlNVSkgJiBNSUlNVV9TTlJEWSk7Cit9CisKK3N0YXRpYyBpbnQgbmV0eF9ldGhfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisJdW5zaWduZWQgaW50IG1hYzQzMjEsIG1hYzY1OworCWludCBydW5uaW5nLCBpOworCisJZXRoZXJfc2V0dXAobmRldik7CisKKwluZGV2LT5vcGVuID0gbmV0eF9ldGhfb3BlbjsKKwluZGV2LT5zdG9wID0gbmV0eF9ldGhfY2xvc2U7CisJbmRldi0+aGFyZF9zdGFydF94bWl0ID0gbmV0eF9ldGhfaGFyZF9zdGFydF94bWl0OworCW5kZXYtPnR4X3RpbWVvdXQgPSBuZXR4X2V0aF90aW1lb3V0OworCW5kZXYtPndhdGNoZG9nX3RpbWVvID0gbXNlY3NfdG9famlmZmllcyg1MDAwKTsKKwluZGV2LT5nZXRfc3RhdHMgPSBuZXR4X2V0aF9xdWVyeV9zdGF0aXN0aWNzOworCW5kZXYtPnNldF9tdWx0aWNhc3RfbGlzdCA9IG5ldHhfZXRoX3NldF9tdWx0aWNhc3RfbGlzdDsKKworCXByaXYtPm1zZ19lbmFibGUgICAgICAgPSBORVRJRl9NU0dfTElOSzsKKwlwcml2LT5taWkucGh5X2lkX21hc2sgID0gMHgxZjsKKwlwcml2LT5taWkucmVnX251bV9tYXNrID0gMHgxZjsKKwlwcml2LT5taWkuZm9yY2VfbWVkaWEgID0gMDsKKwlwcml2LT5taWkuZnVsbF9kdXBsZXggID0gMDsKKwlwcml2LT5taWkuZGV2CSAgICAgPSBuZGV2OworCXByaXYtPm1paS5tZGlvX3JlYWQgICAgPSBuZXR4X2V0aF9waHlfcmVhZDsKKwlwcml2LT5taWkubWRpb193cml0ZSAgID0gbmV0eF9ldGhfcGh5X3dyaXRlOworCXByaXYtPm1paS5waHlfaWQgPSBJTlRFUk5BTF9QSFlfQURSICsgcHJpdi0+aWQ7CisKKwlydW5uaW5nID0geGNfcnVubmluZyhwcml2LT54Yyk7CisJeGNfc3RvcChwcml2LT54Yyk7CisKKwkvKiBpZiB0aGUgeGMgZW5naW5lIGlzIGFscmVhZHkgcnVubmluZywgYXNzdW1lIHRoZSBib290bG9hZGVyIGhhcworCSAqIGxvYWRlZCB0aGUgZmlybXdhcmUgZm9yIHVzCisJICovCisJaWYgKHJ1bm5pbmcpIHsKKwkJLyogZ2V0IE5vZGUgQWRkcmVzcyBmcm9tIGhhcmR3YXJlICovCisJCW1hYzQzMjEgPSByZWFkbChwcml2LT54cGVjX2Jhc2UgKworCQkJTkVUWF9YUEVDX1JBTV9TVEFSVF9PRlMgKyBFVEhfTUFDXzQzMjEpOworCQltYWM2NSA9IHJlYWRsKHByaXYtPnhwZWNfYmFzZSArCisJCQlORVRYX1hQRUNfUkFNX1NUQVJUX09GUyArIEVUSF9NQUNfNjUpOworCisJCW5kZXYtPmRldl9hZGRyWzBdID0gbWFjNDMyMSAmIDB4ZmY7CisJCW5kZXYtPmRldl9hZGRyWzFdID0gKG1hYzQzMjEgPj4gOCkgJiAweGZmOworCQluZGV2LT5kZXZfYWRkclsyXSA9IChtYWM0MzIxID4+IDE2KSAmIDB4ZmY7CisJCW5kZXYtPmRldl9hZGRyWzNdID0gKG1hYzQzMjEgPj4gMjQpICYgMHhmZjsKKwkJbmRldi0+ZGV2X2FkZHJbNF0gPSBtYWM2NSAmIDB4ZmY7CisJCW5kZXYtPmRldl9hZGRyWzVdID0gKG1hYzY1ID4+IDgpICYgMHhmZjsKKwl9IGVsc2UgeworCQlpZiAoeGNfcmVxdWVzdF9maXJtd2FyZShwcml2LT54YykpIHsKKwkJCXByaW50ayhDQVJETkFNRSAiOiByZXF1ZXN0aW5nIGZpcm13YXJlIGZhaWxlZFxuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCX0KKworCXhjX3Jlc2V0KHByaXYtPnhjKTsKKwl4Y19zdGFydChwcml2LT54Yyk7CisKKwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIobmRldi0+ZGV2X2FkZHIpKQorCQlwcmludGsoIiVzOiBJbnZhbGlkIGV0aGVybmV0IE1BQyBhZGRyZXNzLiAgUGxlYXNlICIKKwkJICAgICAgICJzZXQgdXNpbmcgaWZjb25maWdcbiIsIG5kZXYtPm5hbWUpOworCisJZm9yIChpPTI7IGk8PTE4OyBpKyspCisJCXBmaWZvX3B1c2goRU1QVFlfUFRSX0ZJRk8ocHJpdi0+aWQpLAorCQkJRklGT19QVFJfRlJBTUVOTyhpKSB8IEZJRk9fUFRSX1NFR01FTlQocHJpdi0+aWQpKTsKKworCXJldHVybiByZWdpc3Rlcl9uZXRkZXYobmRldik7CisKK30KKworc3RhdGljIGludCBuZXR4X2V0aF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgbmV0eF9ldGhfcHJpdiAqcHJpdjsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKKwlzdHJ1Y3QgbmV0eGV0aF9wbGF0Zm9ybV9kYXRhICpwZGF0YTsKKwlpbnQgcmV0OworCisJbmRldiA9IGFsbG9jX2V0aGVyZGV2KHNpemVvZiAoc3RydWN0IG5ldHhfZXRoX3ByaXYpKTsKKwlpZiAoIW5kZXYpIHsKKwkJcHJpbnRrKCIlczogY291bGQgbm90IGFsbG9jYXRlIGRldmljZS5cbiIsIENBUkROQU1FKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBleGl0OworCX0KKwlTRVRfTU9EVUxFX09XTkVSKG5kZXYpOworCVNFVF9ORVRERVZfREVWKG5kZXYsICZwZGV2LT5kZXYpOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbmRldik7CisKKwlwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisKKwlwZGF0YSA9IChzdHJ1Y3QgbmV0eGV0aF9wbGF0Zm9ybV9kYXRhICopcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CisJcHJpdi0+eGMgPSByZXF1ZXN0X3hjKHBkYXRhLT54Y25vLCAmcGRldi0+ZGV2KTsKKwlpZiAoIXByaXYtPnhjKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInVuYWJsZSB0byByZXF1ZXN0IHhjIGVuZ2luZVxuIik7CisJCXJldCA9IC1FTk9ERVY7CisJCWdvdG8gZXhpdF9mcmVlX25ldGRldjsKKwl9CisKKwluZGV2LT5pcnEgPSBwcml2LT54Yy0+aXJxOworCXByaXYtPmlkID0gcGRldi0+aWQ7CisJcHJpdi0+eHBlY19iYXNlID0gcHJpdi0+eGMtPnhwZWNfYmFzZTsKKwlwcml2LT54bWFjX2Jhc2UgPSBwcml2LT54Yy0+eG1hY19iYXNlOworCXByaXYtPnNyYW1fYmFzZSA9IHByaXYtPnhjLT5zcmFtX2Jhc2U7CisKKwlyZXQgPSBwZmlmb19yZXF1ZXN0KFBGSUZPX01BU0socHJpdi0+aWQpKTsKKwlpZiAocmV0KSB7CisJCXByaW50aygidW5hYmxlIHRvIHJlcXVlc3QgUEZJRk9cbiIpOworCQlnb3RvIGV4aXRfZnJlZV94YzsKKwl9CisKKwlyZXQgPSBuZXR4X2V0aF9lbmFibGUobmRldik7CisJaWYgKHJldCkKKwkJZ290byBleGl0X2ZyZWVfcGZpZm87CisKKwlyZXR1cm4gMDsKK2V4aXRfZnJlZV9wZmlmbzoKKwlwZmlmb19mcmVlKFBGSUZPX01BU0socHJpdi0+aWQpKTsKK2V4aXRfZnJlZV94YzoKKwlmcmVlX3hjKHByaXYtPnhjKTsKK2V4aXRfZnJlZV9uZXRkZXY6CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisJZnJlZV9uZXRkZXYobmRldik7CitleGl0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgbmV0eF9ldGhfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOworCXN0cnVjdCBuZXR4X2V0aF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKKworCXVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpOworCXhjX3N0b3AocHJpdi0+eGMpOworCWZyZWVfeGMocHJpdi0+eGMpOworCWZyZWVfbmV0ZGV2KG5kZXYpOworCXBmaWZvX2ZyZWUoUEZJRk9fTUFTSyhwcml2LT5pZCkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbmV0eF9ldGhfZHJ2X3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCWRldl9lcnIoJnBkZXYtPmRldiwgInN1c3BlbmQgbm90IGltcGxlbWVudGVkXG4iKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXR4X2V0aF9kcnZfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJZGV2X2VycigmcGRldi0+ZGV2LCAicmVzdW1lIG5vdCBpbXBsZW1lbnRlZFxuIik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG5ldHhfZXRoX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gbmV0eF9ldGhfZHJ2X3Byb2JlLAorCS5yZW1vdmUJCT0gbmV0eF9ldGhfZHJ2X3JlbW92ZSwKKwkuc3VzcGVuZAk9IG5ldHhfZXRoX2Rydl9zdXNwZW5kLAorCS5yZXN1bWUJCT0gbmV0eF9ldGhfZHJ2X3Jlc3VtZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSBDQVJETkFNRSwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IG5ldHhfZXRoX2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgcGh5X2NvbnRyb2wsIHZhbDsKKworCXByaW50aygiTmV0WCBFdGhlcm5ldCBkcml2ZXJcbiIpOworCisJcGh5X2NvbnRyb2wgPSBQSFlfQ09OVFJPTF9QSFlfQUREUkVTUyhJTlRFUk5BTF9QSFlfQURSPj4xKSB8CisJCSAgICAgIFBIWV9DT05UUk9MX1BIWTFfTU9ERShQSFlfTU9ERV9BTEwpIHwKKwkJICAgICAgUEhZX0NPTlRST0xfUEhZMV9BVVRPTURJWCB8CisJCSAgICAgIFBIWV9DT05UUk9MX1BIWTFfRU4gfAorCQkgICAgICBQSFlfQ09OVFJPTF9QSFkwX01PREUoUEhZX01PREVfQUxMKSB8CisJCSAgICAgIFBIWV9DT05UUk9MX1BIWTBfQVVUT01ESVggfAorCQkgICAgICBQSFlfQ09OVFJPTF9QSFkwX0VOIHwKKwkJICAgICAgUEhZX0NPTlRST0xfQ0xLX1hMQVRJTjsKKworCXZhbCA9IHJlYWRsKE5FVFhfU1lTVEVNX0lPQ19BQ0NFU1NfS0VZKTsKKwl3cml0ZWwodmFsLCBORVRYX1NZU1RFTV9JT0NfQUNDRVNTX0tFWSk7CisKKwl3cml0ZWwocGh5X2NvbnRyb2wgfCBQSFlfQ09OVFJPTF9SRVNFVCwgTkVUWF9TWVNURU1fUEhZX0NPTlRST0wpOworCXVkZWxheSgxMDApOworCisJdmFsID0gcmVhZGwoTkVUWF9TWVNURU1fSU9DX0FDQ0VTU19LRVkpOworCXdyaXRlbCh2YWwsIE5FVFhfU1lTVEVNX0lPQ19BQ0NFU1NfS0VZKTsKKworCXdyaXRlbChwaHlfY29udHJvbCwgTkVUWF9TWVNURU1fUEhZX0NPTlRST0wpOworCisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmbmV0eF9ldGhfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IG5ldHhfZXRoX2NsZWFudXAodm9pZCkKK3sKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmbmV0eF9ldGhfZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQobmV0eF9ldGhfaW5pdCk7Cittb2R1bGVfZXhpdChuZXR4X2V0aF9jbGVhbnVwKTsKKworTU9EVUxFX0FVVEhPUigiU2FzY2hhIEhhdWVyLCBQZW5ndXRyb25peCIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY21jaWEvZm12ajE4eF9jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL2ZtdmoxOHhfY3MuYwppbmRleCAwOWIxMTc2Li5lYTkzYjhmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNtY2lhL2ZtdmoxOHhfY3MuYworKysgYi9kcml2ZXJzL25ldC9wY21jaWEvZm12ajE4eF9jcy5jCkBAIC04MzEsOCArODMxLDcgQEAKICAgICAKICAgICBpZiAobGVuZ3RoIDwgRVRIX1pMRU4pCiAgICAgewotICAgIAlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0gICAgCWlmIChza2IgPT0gTlVMTCkKKyAgICAJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKICAgICAJCXJldHVybiAwOwogICAgIAlsZW5ndGggPSBFVEhfWkxFTjsKICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY21jaWEveGlyYzJwc19jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL3hpcmMycHNfY3MuYwppbmRleCA3MWY0NTA1Li45YmFlNzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY21jaWEveGlyYzJwc19jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BjbWNpYS94aXJjMnBzX2NzLmMKQEAgLTEzNTksNyArMTM1OSw3IEBACiAgICAga2lvX2FkZHJfdCBpb2FkZHIgPSBkZXYtPmJhc2VfYWRkcjsKICAgICBpbnQgb2theTsKICAgICB1bnNpZ25lZCBmcmVlc3BhY2U7Ci0gICAgdW5zaWduZWQgcGt0bGVuID0gc2tiPyBza2ItPmxlbiA6IDA7CisgICAgdW5zaWduZWQgcGt0bGVuID0gc2tiLT5sZW47CiAKICAgICBERUJVRygxLCAiZG9fc3RhcnRfeG1pdChza2I9JXAsIGRldj0lcCkgbGVuPSV1XG4iLAogCSAgc2tiLCBkZXYsIHBrdGxlbik7CkBAIC0xMzc0LDggKzEzNzQsNyBAQAogICAgICAqLwogICAgIGlmIChwa3RsZW4gPCBFVEhfWkxFTikKICAgICB7Ci0gICAgICAgIHNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLSAgICAgICAgaWYgKHNrYiA9PSBOVUxMKQorICAgICAgICBpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogICAgICAgICAJcmV0dXJuIDA7CiAJcGt0bGVuID0gRVRIX1pMRU47CiAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZwppbmRleCBjZGEzZTUzLi4yYmE2ZDNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZwpAQCAtNDQsNiArNDQsMTEgQEAKIAlkZXBlbmRzIG9uIFBIWUxJQgogCS0tLWhlbHAtLS0KIAkgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgY2lzODIwNAorY29uZmlnIFZJVEVTU0VfUEhZCisgICAgICAgIHRyaXN0YXRlICJEcml2ZXJzIGZvciB0aGUgVml0ZXNzZSBQSFlzIgorICAgICAgICBkZXBlbmRzIG9uIFBIWUxJQgorICAgICAgICAtLS1oZWxwLS0tCisgICAgICAgICAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSB2c2M4MjQ0CiAKIGNvbmZpZyBTTVNDX1BIWQogCXRyaXN0YXRlICJEcml2ZXJzIGZvciBTTVNDIFBIWXMiCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZDk2MTQxMy4uYTAwZTYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtOSwzICs5LDQgQEAKIG9iai0kKENPTkZJR19MWFRfUEhZKQkJKz0gbHh0Lm8KIG9iai0kKENPTkZJR19RU0VNSV9QSFkpCQkrPSBxc2VtaS5vCiBvYmotJChDT05GSUdfU01TQ19QSFkpCQkrPSBzbXNjLm8KK29iai0kKENPTkZJR19WSVRFU1NFX1BIWSkJKz0gdml0ZXNzZS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvdml0ZXNzZS5jIGIvZHJpdmVycy9uZXQvcGh5L3ZpdGVzc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmQyMTVkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvcGh5L3ZpdGVzc2UuYwpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIERyaXZlciBmb3IgVml0ZXNzZSBQSFlzCisgKgorICogQXV0aG9yOiBLcmlzdG9uIENhcnNvbgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9taWkuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CisjaW5jbHVkZSA8bGludXgvcGh5Lmg+CisKKy8qIFZpdGVzc2UgRXh0ZW5kZWQgQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIE1JSV9WU0M4MjQ0X0VYVF9DT04xICAgICAgICAgICAweDE3CisjZGVmaW5lIE1JSV9WU0M4MjQ0X0VYVENPTjFfSU5JVCAgICAgICAweDAwMDAKKworLyogVml0ZXNzZSBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLworI2RlZmluZSBNSUlfVlNDODI0NF9JTUFTSwkJMHgxOQorI2RlZmluZSBNSUlfVlNDODI0NF9JTUFTS19JRU4JCTB4ODAwMAorI2RlZmluZSBNSUlfVlNDODI0NF9JTUFTS19TUEVFRAkJMHg0MDAwCisjZGVmaW5lIE1JSV9WU0M4MjQ0X0lNQVNLX0xJTksJCTB4MjAwMAorI2RlZmluZSBNSUlfVlNDODI0NF9JTUFTS19EVVBMRVgJMHgxMDAwCisjZGVmaW5lIE1JSV9WU0M4MjQ0X0lNQVNLX01BU0sJCTB4ZjAwMAorCisvKiBWaXRlc3NlIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTUlJX1ZTQzgyNDRfSVNUQVQJCTB4MWEKKyNkZWZpbmUgTUlJX1ZTQzgyNDRfSVNUQVRfU1RBVFVTCTB4ODAwMAorI2RlZmluZSBNSUlfVlNDODI0NF9JU1RBVF9TUEVFRAkJMHg0MDAwCisjZGVmaW5lIE1JSV9WU0M4MjQ0X0lTVEFUX0xJTksJCTB4MjAwMAorI2RlZmluZSBNSUlfVlNDODI0NF9JU1RBVF9EVVBMRVgJMHgxMDAwCisKKy8qIFZpdGVzc2UgQXV4aWxpYXJ5IENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1JSV9WU0M4MjQ0X0FVWF9DT05TVEFUICAgICAgICAJMHgxYworI2RlZmluZSBNSUlfVlNDODI0NF9BVVhDT05TVEFUX0lOSVQgICAgCTB4MDAwNAorI2RlZmluZSBNSUlfVlNDODI0NF9BVVhDT05TVEFUX0RVUExFWCAgCTB4MDAyMAorI2RlZmluZSBNSUlfVlNDODI0NF9BVVhDT05TVEFUX1NQRUVEICAgCTB4MDAxOAorI2RlZmluZSBNSUlfVlNDODI0NF9BVVhDT05TVEFUX0dCSVQgICAgCTB4MDAxMAorI2RlZmluZSBNSUlfVlNDODI0NF9BVVhDT05TVEFUXzEwMCAgICAgCTB4MDAwOAorCitNT0RVTEVfREVTQ1JJUFRJT04oIlZpdGVzc2UgUEhZIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiS3Jpc3RvbiBDYXJzb24iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworc3RhdGljIGludCB2c2M4MjR4X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCit7CisJaW50IGVycjsKKworCWVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9WU0M4MjQ0X0FVWF9DT05TVEFULAorCQkJTUlJX1ZTQzgyNDRfQVVYQ09OU1RBVF9JTklUKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9WU0M4MjQ0X0VYVF9DT04xLAorCQkJTUlJX1ZTQzgyNDRfRVhUQ09OMV9JTklUKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHZzYzgyNHhfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQoreworCWludCBlcnIgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9WU0M4MjQ0X0lTVEFUKTsKKworCXJldHVybiAoZXJyIDwgMCkgPyBlcnIgOiAwOworfQorCitzdGF0aWMgaW50IHZzYzgyNHhfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKK3sKKwlpbnQgZXJyOworCisJaWYgKHBoeWRldi0+aW50ZXJydXB0cyA9PSBQSFlfSU5URVJSVVBUX0VOQUJMRUQpCisJCWVyciA9IHBoeV93cml0ZShwaHlkZXYsIE1JSV9WU0M4MjQ0X0lNQVNLLAorCQkJCU1JSV9WU0M4MjQ0X0lNQVNLX01BU0spOworCWVsc2UKKwkJZXJyID0gcGh5X3dyaXRlKHBoeWRldiwgTUlJX1ZTQzgyNDRfSU1BU0ssIDApOworCXJldHVybiBlcnI7Cit9CisKKy8qIFZpdGVzc2UgODI0eCAqLworc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHZzYzgyNDRfZHJpdmVyID0geworCS5waHlfaWQJCT0gMHgwMDBmYzZjMiwKKwkubmFtZQkJPSAiVml0ZXNzZSBWU0M4MjQ0IiwKKwkucGh5X2lkX21hc2sJPSAweDAwMGZmZmMwLAorCS5mZWF0dXJlcwk9IFBIWV9HQklUX0ZFQVRVUkVTLAorCS5mbGFncwkJPSBQSFlfSEFTX0lOVEVSUlVQVCwKKwkuY29uZmlnX2luaXQJPSAmdnNjODI0eF9jb25maWdfaW5pdCwKKwkuY29uZmlnX2FuZWcJPSAmZ2VucGh5X2NvbmZpZ19hbmVnLAorCS5yZWFkX3N0YXR1cwk9ICZnZW5waHlfcmVhZF9zdGF0dXMsCisJLmFja19pbnRlcnJ1cHQJPSAmdnNjODI0eF9hY2tfaW50ZXJydXB0LAorCS5jb25maWdfaW50cgk9ICZ2c2M4MjR4X2NvbmZpZ19pbnRyLAorCS5kcml2ZXIgCT0geyAub3duZXIgPSBUSElTX01PRFVMRSx9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgdnNjODI0NF9pbml0KHZvaWQpCit7CisJcmV0dXJuIHBoeV9kcml2ZXJfcmVnaXN0ZXIoJnZzYzgyNDRfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHZzYzgyNDRfZXhpdCh2b2lkKQoreworCXBoeV9kcml2ZXJfdW5yZWdpc3RlcigmdnNjODI0NF9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdCh2c2M4MjQ0X2luaXQpOworbW9kdWxlX2V4aXQodnNjODI0NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3I4MTY5LmMgYi9kcml2ZXJzL25ldC9yODE2OS5jCmluZGV4IDk5NDVjYzYuLjEyZDFjYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3I4MTY5LmMKKysrIGIvZHJpdmVycy9uZXQvcjgxNjkuYwpAQCAtMjE3Miw3ICsyMTcyLDcgQEAKIHN0YXRpYyBpbmxpbmUgdTMyIHJ0bDgxNjlfdHNvX2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlpZiAoZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVFNPKSB7Ci0JCXUzMiBtc3MgPSBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplOworCQl1MzIgbXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAogCQlpZiAobXNzKQogCQkJcmV0dXJuIExhcmdlU2VuZCB8ICgobXNzICYgTVNTTWFzaykgPDwgTVNTU2hpZnQpOwpAQCAtMjIyMiw4ICsyMjIyLDcgQEAKIAkJbGVuID0gc2tiLT5sZW47CiAKIAkJaWYgKHVubGlrZWx5KGxlbiA8IEVUSF9aTEVOKSkgewotCQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQkJaWYgKCFza2IpCisJCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogCQkJCWdvdG8gZXJyX3VwZGF0ZV9zdGF0czsKIAkJCWxlbiA9IEVUSF9aTEVOOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmMgYi9kcml2ZXJzL25ldC9zMmlvLmMKaW5kZXggY2FjOWZkZC4uM2RlZmU1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5jCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uYwpAQCAtMjYyNyw2ICsyNjI3LDUwIEBACiAjZW5kaWYKIAogLyoqCisgKiBzMmlvX25ldHBvbGwgLSBSeCBpbnRlcnJ1cHQgc2VydmljZSBoYW5kbGVyIGZvciBuZXRwb2xsIHN1cHBvcnQKKyAqIEBkZXYgOiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0dXJlLgorICogRGVzY3JpcHRpb246CisgKiBQb2xsaW5nICdpbnRlcnJ1cHQnIC0gdXNlZCBieSB0aGluZ3MgbGlrZSBuZXRjb25zb2xlIHRvIHNlbmQgc2ticworICogd2l0aG91dCBoYXZpbmcgdG8gcmUtZW5hYmxlIGludGVycnVwdHMuIEl0J3Mgbm90IGNhbGxlZCB3aGlsZQorICogdGhlIGludGVycnVwdCByb3V0aW5lIGlzIGV4ZWN1dGluZy4KKyAqLworCisjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIKK3N0YXRpYyB2b2lkIHMyaW9fbmV0cG9sbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCW5pY190ICpuaWMgPSBkZXYtPnByaXY7CisJbWFjX2luZm9fdCAqbWFjX2NvbnRyb2w7CisJc3RydWN0IGNvbmZpZ19wYXJhbSAqY29uZmlnOworCVhFTkFfZGV2X2NvbmZpZ190IF9faW9tZW0gKmJhcjAgPSBuaWMtPmJhcjA7CisJdTY0IHZhbDY0OworCWludCBpOworCisJZGlzYWJsZV9pcnEoZGV2LT5pcnEpOworCisJYXRvbWljX2luYygmbmljLT5pc3JfY250KTsKKwltYWNfY29udHJvbCA9ICZuaWMtPm1hY19jb250cm9sOworCWNvbmZpZyA9ICZuaWMtPmNvbmZpZzsKKworCXZhbDY0ID0gcmVhZHEoJmJhcjAtPnJ4X3RyYWZmaWNfaW50KTsKKwl3cml0ZXEodmFsNjQsICZiYXIwLT5yeF90cmFmZmljX2ludCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5yeF9yaW5nX251bTsgaSsrKQorCQlyeF9pbnRyX2hhbmRsZXIoJm1hY19jb250cm9sLT5yaW5nc1tpXSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5yeF9yaW5nX251bTsgaSsrKSB7CisJCWlmIChmaWxsX3J4X2J1ZmZlcnMobmljLCBpKSA9PSAtRU5PTUVNKSB7CisJCQlEQkdfUFJJTlQoRVJSX0RCRywgIiVzOk91dCBvZiBtZW1vcnkiLCBkZXYtPm5hbWUpOworCQkJREJHX1BSSU5UKEVSUl9EQkcsICIgaW4gUnggTmV0cG9sbCEhXG4iKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWF0b21pY19kZWMoJm5pYy0+aXNyX2NudCk7CisJZW5hYmxlX2lycShkZXYtPmlycSk7CisJcmV0dXJuOworfQorI2VuZGlmCisKKy8qKgogICogIHJ4X2ludHJfaGFuZGxlciAtIFJ4IGludGVycnVwdCBoYW5kbGVyCiAgKiAgQG5pYzogZGV2aWNlIHByaXZhdGUgdmFyaWFibGUuCiAgKiAgRGVzY3JpcHRpb246CkBAIC0zOTE1LDggKzM5NTksOCBAQAogCXR4ZHAtPkNvbnRyb2xfMSA9IDA7CiAJdHhkcC0+Q29udHJvbF8yID0gMDsKICNpZmRlZiBORVRJRl9GX1RTTwotCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemU7Ci0JaWYgKG1zcykgeworCW1zcyA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemU7CisJaWYgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGUgPT0gU0tCX0dTT19UQ1BWNCkgewogCQl0eGRwLT5Db250cm9sXzEgfD0gVFhEX1RDUF9MU09fRU47CiAJCXR4ZHAtPkNvbnRyb2xfMSB8PSBUWERfVENQX0xTT19NU1MobXNzKTsKIAl9CkBAIC0zOTM2LDEwICszOTgwLDEwIEBACiAJfQogCiAJZnJnX2xlbiA9IHNrYi0+bGVuIC0gc2tiLT5kYXRhX2xlbjsKLQlpZiAoc2tiX3NoaW5mbyhza2IpLT51Zm9fc2l6ZSkgeworCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID09IFNLQl9HU09fVURQVjQpIHsKIAkJaW50IHVmb19zaXplOwogCi0JCXVmb19zaXplID0gc2tiX3NoaW5mbyhza2IpLT51Zm9fc2l6ZTsKKwkJdWZvX3NpemUgPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOwogCQl1Zm9fc2l6ZSAmPSB+NzsKIAkJdHhkcC0+Q29udHJvbF8xIHw9IFRYRF9VRk9fRU47CiAJCXR4ZHAtPkNvbnRyb2xfMSB8PSBUWERfVUZPX01TUyh1Zm9fc2l6ZSk7CkBAIC0zOTY1LDcgKzQwMDksNyBAQAogCXR4ZHAtPkhvc3RfQ29udHJvbCA9ICh1bnNpZ25lZCBsb25nKSBza2I7CiAJdHhkcC0+Q29udHJvbF8xIHw9IFRYRF9CVUZGRVIwX1NJWkUoZnJnX2xlbik7CiAKLQlpZiAoc2tiX3NoaW5mbyhza2IpLT51Zm9fc2l6ZSkKKwlpZiAoc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSA9PSBTS0JfR1NPX1VEUFY0KQogCQl0eGRwLT5Db250cm9sXzEgfD0gVFhEX1VGT19FTjsKIAogCWZyZ19jbnQgPSBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzOwpAQCAtMzk4MCwxMiArNDAyNCwxMiBAQAogCQkgICAgKHNwLT5wZGV2LCBmcmFnLT5wYWdlLCBmcmFnLT5wYWdlX29mZnNldCwKIAkJICAgICBmcmFnLT5zaXplLCBQQ0lfRE1BX1RPREVWSUNFKTsKIAkJdHhkcC0+Q29udHJvbF8xID0gVFhEX0JVRkZFUjBfU0laRShmcmFnLT5zaXplKTsKLQkJaWYgKHNrYl9zaGluZm8oc2tiKS0+dWZvX3NpemUpCisJCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID09IFNLQl9HU09fVURQVjQpCiAJCQl0eGRwLT5Db250cm9sXzEgfD0gVFhEX1VGT19FTjsKIAl9CiAJdHhkcC0+Q29udHJvbF8xIHw9IFRYRF9HQVRIRVJfQ09ERV9MQVNUOwogCi0JaWYgKHNrYl9zaGluZm8oc2tiKS0+dWZvX3NpemUpCisJaWYgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGUgPT0gU0tCX0dTT19VRFBWNCkKIAkJZnJnX2NudCsrOyAvKiBhcyBUeGQwIHdhcyB1c2VkIGZvciBpbmJhbmQgaGVhZGVyICovCiAKIAl0eF9maWZvID0gbWFjX2NvbnRyb2wtPnR4X0ZJRk9fc3RhcnRbcXVldWVdOwpAQCAtMzk5OSw3ICs0MDQzLDcgQEAKIAlpZiAobXNzKQogCQl2YWw2NCB8PSBUWF9GSUZPX1NQRUNJQUxfRlVOQzsKICNlbmRpZgotCWlmIChza2Jfc2hpbmZvKHNrYiktPnVmb19zaXplKQorCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID09IFNLQl9HU09fVURQVjQpCiAJCXZhbDY0IHw9IFRYX0ZJRk9fU1BFQ0lBTF9GVU5DOwogCXdyaXRlcSh2YWw2NCwgJnR4X2ZpZm8tPkxpc3RfQ29udHJvbCk7CiAKQEAgLTY5NjcsNiArNzAxMSwxMCBAQAogCWRldi0+d2VpZ2h0ID0gMzI7CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCisJZGV2LT5wb2xsX2NvbnRyb2xsZXIgPSBzMmlvX25ldHBvbGw7CisjZW5kaWYKKwogCWRldi0+ZmVhdHVyZXMgfD0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTTsKIAlpZiAoc3AtPmhpZ2hfZG1hX2ZsYWcgPT0gVFJVRSkKIAkJZGV2LT5mZWF0dXJlcyB8PSBORVRJRl9GX0hJR0hETUE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZWVxODAwNS5jIGIvZHJpdmVycy9uZXQvc2VlcTgwMDUuYwppbmRleCBiY2VmMDNmLi5lZmQwZjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zZWVxODAwNS5jCisrKyBiL2RyaXZlcnMvbmV0L3NlZXE4MDA1LmMKQEAgLTM5Niw4ICszOTYsNyBAQAogCXVuc2lnbmVkIGNoYXIgKmJ1ZjsKIAogCWlmIChsZW5ndGggPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKIAkJCXJldHVybiAwOwogCQlsZW5ndGggPSBFVEhfWkxFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zaXMxOTAuYyBiL2RyaXZlcnMvbmV0L3NpczE5MC5jCmluZGV4IDMxZGQzZjAuLmRmMzlmMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NpczE5MC5jCisrKyBiL2RyaXZlcnMvbmV0L3NpczE5MC5jCkBAIC0xMTU2LDggKzExNTYsNyBAQAogCWRtYV9hZGRyX3QgbWFwcGluZzsKIAogCWlmICh1bmxpa2VseShza2ItPmxlbiA8IEVUSF9aTEVOKSkgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmICghc2tiKSB7CisJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpIHsKIAkJCXRwLT5zdGF0cy50eF9kcm9wcGVkKys7CiAJCQlnb3RvIG91dDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2s5OGxpbi9za2dlLmMgYi9kcml2ZXJzL25ldC9zazk4bGluL3NrZ2UuYwppbmRleCAzOGEyNmRmLi5mM2VmYmQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zazk4bGluL3NrZ2UuYworKysgYi9kcml2ZXJzL25ldC9zazk4bGluL3NrZ2UuYwpAQCAtMTUyNSw3ICsxNTI1LDcgQEAKIAkqKiBUaGlzIGlzIHRvIHJlc29sdmUgZmF1bHR5IHBhZGRpbmcgYnkgdGhlIEhXIHdpdGggMHhhYSBieXRlcy4KIAkqLwogCWlmIChCeXRlc1NlbmQgPCBDX0xFTl9FVEhFUk5FVF9NSU5TSVpFKSB7Ci0JCWlmICgocE1lc3NhZ2UgPSBza2JfcGFkdG8ocE1lc3NhZ2UsIENfTEVOX0VUSEVSTkVUX01JTlNJWkUpKSA9PSBOVUxMKSB7CisJCWlmIChza2JfcGFkdG8ocE1lc3NhZ2UsIENfTEVOX0VUSEVSTkVUX01JTlNJWkUpKSB7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwVHhQb3J0LT5UeERlc1JpbmdMb2NrLCBGbGFncyk7CiAJCQlyZXR1cm4gMDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tnZS5jIGIvZHJpdmVycy9uZXQvc2tnZS5jCmluZGV4IDUzNmRkMWMuLjE5YTRhMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZ2UuYworKysgYi9kcml2ZXJzL25ldC9za2dlLmMKQEAgLTIzMTAsOCArMjMxMCw3IEBACiAJdTY0IG1hcDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0Jc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCWlmICghc2tiKQorCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpCiAJCXJldHVybiBORVRERVZfVFhfT0s7CiAKIAlpZiAoIXNwaW5fdHJ5bG9ja19pcnFzYXZlKCZza2dlLT50eF9sb2NrLCBmbGFncykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za3kyLmMgYi9kcml2ZXJzL25ldC9za3kyLmMKaW5kZXggZmJhMWU0ZC4uZDM1Nzc4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2t5Mi5jCisrKyBiL2RyaXZlcnMvbmV0L3NreTIuYwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAKIAljb3VudCA9IHNpemVvZihkbWFfYWRkcl90KSAvIHNpemVvZih1MzIpOwogCWNvdW50ICs9IHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3MgKiBjb3VudDsKIAotCWlmIChza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplKQorCWlmIChza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKQogCQkrK2NvdW50OwogCiAJaWYgKHNrYi0+aXBfc3VtbWVkID09IENIRUNLU1VNX0hXKQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAKIAl9CiAKIAkvKiBDaGVjayBmb3IgVENQIFNlZ21lbnRhdGlvbiBPZmZsb2FkICovCi0JbXNzID0gc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZTsKKwltc3MgPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOwogCWlmIChtc3MgIT0gMCkgewogCQkvKiBqdXN0IGRyb3AgdGhlIHBhY2tldCBpZiBub24tbGluZWFyIGV4cGFuc2lvbiBmYWlscyAqLwogCQlpZiAoc2tiX2hlYWRlcl9jbG9uZWQoc2tiKSAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc21jOTE5NC5jIGIvZHJpdmVycy9uZXQvc21jOTE5NC5jCmluZGV4IDZjZjE2ZjMuLjhiMDMyMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NtYzkxOTQuYworKysgYi9kcml2ZXJzL25ldC9zbWM5MTk0LmMKQEAgLTUyMyw4ICs1MjMsNyBAQAogCWxlbmd0aCA9IHNrYi0+bGVuOwogCiAJaWYgKGxlbmd0aCA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKSB7CisJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpIHsKIAkJCW5ldGlmX3dha2VfcXVldWUoZGV2KTsKIAkJCXJldHVybiAwOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zb25pYy5jIGIvZHJpdmVycy9uZXQvc29uaWMuYwppbmRleCA5MGI4MThhLi5jYWIwZGQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zb25pYy5jCisrKyBiL2RyaXZlcnMvbmV0L3NvbmljLmMKQEAgLTIzMSw4ICsyMzEsNyBAQAogCiAJbGVuZ3RoID0gc2tiLT5sZW47CiAJaWYgKGxlbmd0aCA8IEVUSF9aTEVOKSB7Ci0JCXNrYiA9IHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKTsKLQkJaWYgKHNrYiA9PSBOVUxMKQorCQlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQogCQkJcmV0dXJuIDA7CiAJCWxlbmd0aCA9IEVUSF9aTEVOOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N0YXJmaXJlLmMgYi9kcml2ZXJzL25ldC9zdGFyZmlyZS5jCmluZGV4IDliNzgwNWIuLmMxNThlZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N0YXJmaXJlLmMKKysrIGIvZHJpdmVycy9uZXQvc3RhcmZpcmUuYwpAQCAtMTM0OSw4ICsxMzQ5LDcgQEAKIAogI2lmIGRlZmluZWQoWkVST0NPUFkpICYmIGRlZmluZWQoSEFTX0JST0tFTl9GSVJNV0FSRSkKIAlpZiAoc2tiLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fSFcpIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgKHNrYi0+bGVuICsgUEFERElOR19NQVNLKSAmIH5QQURESU5HX01BU0spOwotCQlpZiAoc2tiID09IE5VTEwpCisJCWlmIChza2JfcGFkdG8oc2tiLCAoc2tiLT5sZW4gKyBQQURESU5HX01BU0spICYgflBBRERJTkdfTUFTSykpCiAJCQlyZXR1cm4gTkVUREVWX1RYX09LOwogCX0KICNlbmRpZiAvKiBaRVJPQ09QWSAmJiBIQVNfQlJPS0VOX0ZJUk1XQVJFICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdW5kYW5jZS5jIGIvZHJpdmVycy9uZXQvc3VuZGFuY2UuYwppbmRleCA2MWVlYzQ2Li5mMTNiMmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5kYW5jZS5jCisrKyBiL2RyaXZlcnMvbmV0L3N1bmRhbmNlLmMKQEAgLTk0LDExICs5NCwxMyBAQAogCVZlcnNpb24gTEsxLjEwIChQaGlsaXBwZSBEZSBNdXl0ZXIgcGhkbUBtYWNxZWwuYmUpOgogCS0gTWFrZSAndW5ibG9jayBpbnRlcmZhY2UgYWZ0ZXIgVHggdW5kZXJydW4nIHdvcmsKIAorCVZlcnNpb24gTEsxLjExIChQZWRybyBBbGVqYW5kcm8gTG9wZXotVmFsZW5jaWEgcGFsb3BlenYgYXQgZ21haWwuY29tKToKKwktIEFkZCBzdXBwb3J0IGZvciBJQyBQbHVzIENvcnBvcmF0aW9uIElQMTAwQSBjaGlwc2V0CiAqLwogCiAjZGVmaW5lIERSVl9OQU1FCSJzdW5kYW5jZSIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjEuMDErTEsxLjEwIgotI2RlZmluZSBEUlZfUkVMREFURQkiMjgtT2N0LTIwMDUiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjAxK0xLMS4xMSIKKyNkZWZpbmUgRFJWX1JFTERBVEUJIjE0LUp1bi0yMDA2IgogCiAKIC8qIFRoZSB1c2VyLWNvbmZpZ3VyYWJsZSB2YWx1ZXMuCkBAIC0yODcsNiArMjg5LDcgQEAKIAl7MHgxMTg2LCAweDEwMDIsIDB4MTE4NiwgMHgxMDQwLCAwLCAwLCAzfSwKIAl7MHgxMTg2LCAweDEwMDIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDR9LAogCXsweDEzRjAsIDB4MDIwMSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgNX0sCisJezB4MTNGMCwgMHgwMjAwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCA2fSwKIAl7MCx9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN1bmRhbmNlX3BjaV90YmwpOwpAQCAtMzA1LDYgKzMwOCw3IEBACiAJeyJELUxpbmsgREZFLTUzMFRYUyBGQVNUIEV0aGVybmV0IEFkYXB0ZXIifSwKIAl7IkQtTGluayBETDEwMDUwLWJhc2VkIEZBU1QgRXRoZXJuZXQgQWRhcHRlciJ9LAogCXsiU3VuZGFuY2UgVGVjaG5vbG9neSBBbHRhIn0sCisJeyJJQyBQbHVzIENvcnBvcmF0aW9uIElQMTAwQSBGQVNUIEV0aGVybmV0IEFkYXB0ZXIifSwKIAl7TlVMTCx9LAkJCS8qIDAgdGVybWluYXRlZCBsaXN0LiAqLwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3VuaG1lLmMgYi9kcml2ZXJzL25ldC9zdW5obWUuYwppbmRleCA5ZjA0NmNhLi5iZDVkMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5obWUuYworKysgYi9kcml2ZXJzL25ldC9zdW5obWUuYwpAQCAtMjIyMSwxMyArMjIyMSw4IEBACiAJCWlmIChyZXF1ZXN0X2lycShkZXYtPmlycSwgJmhhcHB5X21lYWxfaW50ZXJydXB0LAogCQkJCVNBX1NISVJRLCBkZXYtPm5hbWUsICh2b2lkICopZGV2KSkgewogCQkJSE1EKCgiRUFHQUlOXG4iKSk7Ci0jaWZkZWYgX19zcGFyY19fCi0JCQlwcmludGsoS0VSTl9FUlIgImhhcHB5X21lYWwoU0JVUyk6IENhbid0IG9yZGVyIGlycSAlcyB0byBnby5cbiIsCi0JCQkgICAgICAgX19pcnFfaXRvYShkZXYtPmlycSkpOwotI2Vsc2UKIAkJCXByaW50ayhLRVJOX0VSUiAiaGFwcHlfbWVhbChTQlVTKTogQ2FuJ3Qgb3JkZXIgaXJxICVkIHRvIGdvLlxuIiwKIAkJCSAgICAgICBkZXYtPmlycSk7Ci0jZW5kaWYKIAogCQkJcmV0dXJuIC1FQUdBSU47CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N1bmxhbmNlLmMgYi9kcml2ZXJzL25ldC9zdW5sYW5jZS5jCmluZGV4IGI3ZDg3ZDQuLjYzODEyNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N1bmxhbmNlLmMKKysrIGIvZHJpdmVycy9uZXQvc3VubGFuY2UuYwpAQCAtOTM2LDcgKzkzNiw3IEBACiAKIAlpZiAocmVxdWVzdF9pcnEoZGV2LT5pcnEsICZsYW5jZV9pbnRlcnJ1cHQsIFNBX1NISVJRLAogCQkJbGFuY2VzdHIsICh2b2lkICopIGRldikpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJMYW5jZTogQ2FuJ3QgZ2V0IGlycSAlc1xuIiwgX19pcnFfaXRvYShkZXYtPmlycSkpOworCQlwcmludGsoS0VSTl9FUlIgIkxhbmNlOiBDYW4ndCBnZXQgaXJxICVkXG4iLCBkZXYtPmlycSk7CiAJCXJldHVybiAtRUFHQUlOOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGczLmMgYi9kcml2ZXJzL25ldC90ZzMuYwppbmRleCBiMmRkZDQ1Li5lM2UzODBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZzMuYworKysgYi9kcml2ZXJzL25ldC90ZzMuYwpAQCAtMzc4MCw3ICszNzgwLDcgQEAKICNpZiBURzNfVFNPX1NVUFBPUlQgIT0gMAogCW1zcyA9IDA7CiAJaWYgKHNrYi0+bGVuID4gKHRwLT5kZXYtPm10dSArIEVUSF9ITEVOKSAmJgotCSAgICAobXNzID0gc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkgIT0gMCkgeworCSAgICAobXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSkgIT0gMCkgewogCQlpbnQgdGNwX29wdF9sZW4sIGlwX3RjcF9sZW47CiAKIAkJaWYgKHNrYl9oZWFkZXJfY2xvbmVkKHNrYikgJiYKQEAgLTM5MDUsNyArMzkwNSw3IEBACiAjaWYgVEczX1RTT19TVVBQT1JUICE9IDAKIAltc3MgPSAwOwogCWlmIChza2ItPmxlbiA+ICh0cC0+ZGV2LT5tdHUgKyBFVEhfSExFTikgJiYKLQkgICAgKG1zcyA9IHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUpICE9IDApIHsKKwkgICAgKG1zcyA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpICE9IDApIHsKIAkJaW50IHRjcF9vcHRfbGVuLCBpcF90Y3BfbGVuOwogCiAJCWlmIChza2JfaGVhZGVyX2Nsb25lZChza2IpICYmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvb2x5bXBpYy5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL29seW1waWMuYwppbmRleCAyMzAzMmE3Li5jM2NiOGQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvb2x5bXBpYy5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9vbHltcGljLmMKQEAgLTIxNyw3ICsyMTcsNyBAQAogCWRldiA9IGFsbG9jX3RyZGV2KHNpemVvZihzdHJ1Y3Qgb2x5bXBpY19wcml2YXRlKSkgOyAKIAlpZiAoIWRldikgewogCQlpID0gLUVOT01FTTsgCi0JCWdvdG8gb3BfZnJlZV9kZXY7CisJCWdvdG8gb3BfcmVsZWFzZV9kZXY7CiAJfQogCiAJb2x5bXBpY19wcml2ID0gZGV2LT5wcml2IDsKQEAgLTI4Miw4ICsyODIsOCBAQAogCWlmIChvbHltcGljX3ByaXYtPm9seW1waWNfbGFwKQogCQlpb3VubWFwKG9seW1waWNfcHJpdi0+b2x5bXBpY19sYXApOwogCi1vcF9mcmVlX2RldjoKIAlmcmVlX25ldGRldihkZXYpOworb3BfcmVsZWFzZV9kZXY6CiAJcGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTsgCiAKIG9wX2Rpc2FibGVfZGV2OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVuLmMgYi9kcml2ZXJzL25ldC90dW4uYwppbmRleCBhMWVkMmQ5Li42YzYyZDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dW4uYworKysgYi9kcml2ZXJzL25ldC90dW4uYwpAQCAtNDkwLDYgKzQ5MCw5IEBACiAKIAkJZXJyID0gLUVJTlZBTDsKIAorCQlpZiAoIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpCisJCQlyZXR1cm4gLUVQRVJNOworCiAJCS8qIFNldCBkZXYgdHlwZSAqLwogCQlpZiAoaWZyLT5pZnJfZmxhZ3MgJiBJRkZfVFVOKSB7CiAJCQkvKiBUVU4gZGV2aWNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90eXBob29uLmMgYi9kcml2ZXJzL25ldC90eXBob29uLmMKaW5kZXggZDkyNThkNC4uZTQ5ZThiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHlwaG9vbi5jCisrKyBiL2RyaXZlcnMvbmV0L3R5cGhvb24uYwpAQCAtMzQwLDcgKzM0MCw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTkVUSUZfRl9UU08pCi0jZGVmaW5lIHNrYl90c29fc2l6ZSh4KQkJKHNrYl9zaGluZm8oeCktPnRzb19zaXplKQorI2RlZmluZSBza2JfdHNvX3NpemUoeCkJCShza2Jfc2hpbmZvKHgpLT5nc29fc2l6ZSkKICNkZWZpbmUgVFNPX05VTV9ERVNDUklQVE9SUwkyCiAjZGVmaW5lIFRTT19PRkZMT0FEX09OCQlUWVBIT09OX09GRkxPQURfVENQX1NFR01FTlQKICNlbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aWEtcmhpbmUuYyBiL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCmluZGV4IGZkYzIxMDMuLmM4MGE0ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCisrKyBiL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCkBAIC0xMjg0LDExICsxMjg0LDggQEAKIAkvKiBDYWxjdWxhdGUgdGhlIG5leHQgVHggZGVzY3JpcHRvciBlbnRyeS4gKi8KIAllbnRyeSA9IHJwLT5jdXJfdHggJSBUWF9SSU5HX1NJWkU7CiAKLQlpZiAoc2tiLT5sZW4gPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKLQkJCXJldHVybiAwOwotCX0KKwlpZiAoc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pKQorCQlyZXR1cm4gMDsKIAogCXJwLT50eF9za2J1ZmZbZW50cnldID0gc2tiOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYyBiL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCmluZGV4IDJlYjZiNWYuLjA5ZTA1ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCisrKyBiL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCkBAIC0yNDgsNiArMjQ4LDcgQEAKIHN0YXRpYyB2b2lkIHZlbG9jaXR5X2ZyZWVfdHhfYnVmKHN0cnVjdCB2ZWxvY2l0eV9pbmZvICp2cHRyLCBzdHJ1Y3QgdmVsb2NpdHlfdGRfaW5mbyAqKTsKIHN0YXRpYyBpbnQgdmVsb2NpdHlfc29mdF9yZXNldChzdHJ1Y3QgdmVsb2NpdHlfaW5mbyAqdnB0cik7CiBzdGF0aWMgdm9pZCBtaWlfaW5pdChzdHJ1Y3QgdmVsb2NpdHlfaW5mbyAqdnB0ciwgdTMyIG1paV9zdGF0dXMpOworc3RhdGljIHUzMiB2ZWxvY2l0eV9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIHN0YXRpYyB1MzIgdmVsb2NpdHlfZ2V0X29wdF9tZWRpYV9tb2RlKHN0cnVjdCB2ZWxvY2l0eV9pbmZvICp2cHRyKTsKIHN0YXRpYyB2b2lkIHZlbG9jaXR5X3ByaW50X2xpbmtfc3RhdHVzKHN0cnVjdCB2ZWxvY2l0eV9pbmZvICp2cHRyKTsKIHN0YXRpYyB2b2lkIHNhZmVfZGlzYWJsZV9taWlfYXV0b3BvbGwoc3RydWN0IG1hY19yZWdzIF9faW9tZW0gKiByZWdzKTsKQEAgLTc5OCw2ICs3OTksOSBAQAogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycl9pb3VubWFwOwogCisJaWYgKHZlbG9jaXR5X2dldF9saW5rKGRldikpCisJCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CisKIAl2ZWxvY2l0eV9wcmludF9pbmZvKHZwdHIpOwogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOwogCQpAQCAtMTY1Myw4ICsxNjU3LDEwIEBACiAKIAkJaWYgKGxpbmtlZCkgewogCQkJdnB0ci0+bWlpX3N0YXR1cyAmPSB+VkVMT0NJVFlfTElOS19GQUlMOworCQkJbmV0aWZfY2Fycmllcl9vbih2cHRyLT5kZXYpOwogCQl9IGVsc2UgewogCQkJdnB0ci0+bWlpX3N0YXR1cyB8PSBWRUxPQ0lUWV9MSU5LX0ZBSUw7CisJCQluZXRpZl9jYXJyaWVyX29mZih2cHRyLT5kZXYpOwogCQl9CiAKIAkJdmVsb2NpdHlfcHJpbnRfbGlua19zdGF0dXModnB0cik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vYzEwMS5jIGIvZHJpdmVycy9uZXQvd2FuL2MxMDEuYwppbmRleCA0M2Q4NTRhLi5iNjBlZjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vYzEwMS5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9jMTAxLmMKQEAgLTMyNiwyMSArMzI2LDIxIEBACiAJaWYgKHJlcXVlc3RfaXJxKGlycSwgc2NhX2ludHIsIDAsIGRldm5hbWUsIGNhcmQpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYzEwMTogY291bGQgbm90IGFsbG9jYXRlIElSUVxuIik7CiAJCWMxMDFfZGVzdHJveV9jYXJkKGNhcmQpOwotCQlyZXR1cm4oLUVCVVNZKTsKKwkJcmV0dXJuIC1FQlVTWTsKIAl9CiAJY2FyZC0+aXJxID0gaXJxOwogCiAJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24od2luYmFzZSwgQzEwMV9NQVBQRURfUkFNX1NJWkUsIGRldm5hbWUpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYzEwMTogY291bGQgbm90IHJlcXVlc3QgUkFNIHdpbmRvd1xuIik7CiAJCWMxMDFfZGVzdHJveV9jYXJkKGNhcmQpOwotCQlyZXR1cm4oLUVCVVNZKTsKKwkJcmV0dXJuIC1FQlVTWTsKIAl9CiAJY2FyZC0+cGh5X3dpbmJhc2UgPSB3aW5iYXNlOwogCWNhcmQtPndpbjBiYXNlID0gaW9yZW1hcCh3aW5iYXNlLCBDMTAxX01BUFBFRF9SQU1fU0laRSk7CiAJaWYgKCFjYXJkLT53aW4wYmFzZSkgewogCQlwcmludGsoS0VSTl9FUlIgImMxMDE6IGNvdWxkIG5vdCBtYXAgSS9PIGFkZHJlc3NcbiIpOwogCQljMTAxX2Rlc3Ryb3lfY2FyZChjYXJkKTsKLQkJcmV0dXJuIC1FQlVTWTsKKwkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCiAJY2FyZC0+dHhfcmluZ19idWZmZXJzID0gVFhfUklOR19CVUZGRVJTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2hkbGNfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvd2FuL2hkbGNfZ2VuZXJpYy5jCmluZGV4IDQ2Y2VmOGYuLjU3Zjk1MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi9oZGxjX2dlbmVyaWMuYworKysgYi9kcml2ZXJzL25ldC93YW4vaGRsY19nZW5lcmljLmMKQEAgLTI1OSw3ICsyNTksNyBAQAogCX0KIH0KIAotc3RhdGljIHZvaWQgaGRsY19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQordm9pZCBoZGxjX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJaGRsY19kZXZpY2UgKmhkbGMgPSBkZXZfdG9faGRsYyhkZXYpOwogCkBAIC0yODgsMjYgKzI4OCw2IEBACiAJcmV0dXJuIGRldjsKIH0KIAotaW50IHJlZ2lzdGVyX2hkbGNfZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCi17Ci0JaW50IHJlc3VsdCA9IGRldl9hbGxvY19uYW1lKGRldiwgImhkbGMlZCIpOwotCWlmIChyZXN1bHQgPCAwKQotCQlyZXR1cm4gcmVzdWx0OwotCi0JcmVzdWx0ID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7Ci0JaWYgKHJlc3VsdCAhPSAwKQotCQlyZXR1cm4gLUVJTzsKLQotI2lmIDAKLQlpZiAobmV0aWZfY2Fycmllcl9vayhkZXYpKQotCQluZXRpZl9jYXJyaWVyX29mZihkZXYpOyAvKiBubyBjYXJyaWVyIHVudGlsIERDRCBnb2VzIHVwICovCi0jZW5kaWYKLQotCXJldHVybiAwOwotfQotCi0KLQogdm9pZCB1bnJlZ2lzdGVyX2hkbGNfZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJcnRubF9sb2NrKCk7CkBAIC0zMjYsOCArMzA2LDggQEAKIEVYUE9SVF9TWU1CT0woaGRsY19jbG9zZSk7CiBFWFBPUlRfU1lNQk9MKGhkbGNfc2V0X2NhcnJpZXIpOwogRVhQT1JUX1NZTUJPTChoZGxjX2lvY3RsKTsKK0VYUE9SVF9TWU1CT0woaGRsY19zZXR1cCk7CiBFWFBPUlRfU1lNQk9MKGFsbG9jX2hkbGNkZXYpOwotRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9oZGxjX2RldmljZSk7CiBFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfaGRsY19kZXZpY2UpOwogCiBzdGF0aWMgc3RydWN0IHBhY2tldF90eXBlIGhkbGNfcGFja2V0X3R5cGUgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vbjIuYyBiL2RyaXZlcnMvbmV0L3dhbi9uMi5jCmluZGV4IGNkMzI3NTEuLmI3ZDg4ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi9uMi5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9uMi5jCkBAIC0zODcsNiArMzg3LDExIEBACiAJfQogCWNhcmQtPnBoeV93aW5iYXNlID0gd2luYmFzZTsKIAljYXJkLT53aW5iYXNlID0gaW9yZW1hcCh3aW5iYXNlLCBVU0VfV0lORE9XU0laRSk7CisJaWYgKCFjYXJkLT53aW5iYXNlKSB7CisJCXByaW50ayhLRVJOX0VSUiAibjI6IGlvcmVtYXAoKSBmYWlsZWRcbiIpOworCQluMl9kZXN0cm95X2NhcmQoY2FyZCk7CisJCXJldHVybiAtRUZBVUxUOworCX0KIAogCW91dGIoMCwgaW8gKyBOMl9QQ1IpOwogCW91dGIod2luYmFzZSA+PiAxMiwgaW8gKyBOMl9CQVIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL3BjaTIwMHN5bi5jIGIvZHJpdmVycy9uZXQvd2FuL3BjaTIwMHN5bi5jCmluZGV4IGY0ODVhOTcuLjY3MGU4YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi9wY2kyMDBzeW4uYworKysgYi9kcml2ZXJzL25ldC93YW4vcGNpMjAwc3luLmMKQEAgLTM1NCw2ICszNTQsNyBAQAogCSAgICBjYXJkLT5yYW1iYXNlID09IE5VTEwpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJwY2kyMDBzeW46IGlvcmVtYXAoKSBmYWlsZWRcbiIpOwogCQlwY2kyMDBfcGNpX3JlbW92ZV9vbmUocGRldik7CisJCXJldHVybiAtRUZBVUxUOwogCX0KIAogCS8qIFJlc2V0IFBMWCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL3dhbnhsLmMgYi9kcml2ZXJzL25ldC93YW4vd2FueGwuYwppbmRleCAyOWE3NTZkLi40MzdlMGU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vd2FueGwuYworKysgYi9kcml2ZXJzL25ldC93YW4vd2FueGwuYwpAQCAtNjM0LDcgKzYzNCwxMyBAQAogCiAJLyogc2V0IHVwIFBMWCBtYXBwaW5nICovCiAJcGx4X3BoeSA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAwKTsKKwogCWNhcmQtPnBseCA9IGlvcmVtYXBfbm9jYWNoZShwbHhfcGh5LCAweDcwKTsKKwlpZiAoIWNhcmQtPnBseCkgeworCQlwcmludGsoS0VSTl9FUlIgIndhbnhsOiBpb3JlbWFwKCkgZmFpbGVkXG4iKTsKKyAJCXdhbnhsX3BjaV9yZW1vdmVfb25lKHBkZXYpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CiAKICNpZiBSRVNFVF9XSElMRV9MT0FESU5HCiAJd2FueGxfcmVzZXQoY2FyZCk7CkBAIC03MDAsNiArNzA2LDEyIEBACiAJfQogCiAJbWVtID0gaW9yZW1hcF9ub2NhY2hlKG1lbV9waHksIFBETV9PRkZTRVQgKyBzaXplb2YoZmlybXdhcmUpKTsKKwlpZiAoIW1lbSkgeworCQlwcmludGsoS0VSTl9FUlIgIndhbnhsOiBpb3JlbWFwKCkgZmFpbGVkXG4iKTsKKyAJCXdhbnhsX3BjaV9yZW1vdmVfb25lKHBkZXYpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGZpcm13YXJlKTsgaSArPSA0KQogCQl3cml0ZWwoaHRvbmwoKih1MzIqKShmaXJtd2FyZSArIGkpKSwgbWVtICsgUERNX09GRlNFVCArIGkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eC5oCmluZGV4IGU2NmZkYjEuLmQ4ZjkxN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eC5oCkBAIC02MzYsNiArNjM2LDE3IEBACiAJdTggYWxnb3JpdGhtOwogfTsKIAorLyogRHJpdmVyIGluaXRpYWxpemF0aW9uIHN0YXR1cy4gKi8KK2VudW0geworCUJDTTQzeHhfU1RBVF9VTklOSVQsCQkvKiBVbmluaXRpYWxpemVkLiAqLworCUJDTTQzeHhfU1RBVF9JTklUSUFMSVpJTkcsCS8qIGluaXRfYm9hcmQoKSBpbiBwcm9ncmVzcy4gKi8KKwlCQ000M3h4X1NUQVRfSU5JVElBTElaRUQsCS8qIEZ1bGx5IG9wZXJhdGlvbmFsLiAqLworCUJDTTQzeHhfU1RBVF9TSFVUVElOR0RPV04sCS8qIGZyZWVfYm9hcmQoKSBpbiBwcm9ncmVzcy4gKi8KKwlCQ000M3h4X1NUQVRfUkVTVEFSVElORywJLyogY29udHJvbGxlcl9yZXN0YXJ0KCkgY2FsbGVkLiAqLworfTsKKyNkZWZpbmUgYmNtNDN4eF9zdGF0dXMoYmNtKQkJYXRvbWljX3JlYWQoJihiY20pLT5pbml0X3N0YXR1cykKKyNkZWZpbmUgYmNtNDN4eF9zZXRfc3RhdHVzKGJjbSwgc3RhdCkJYXRvbWljX3NldCgmKGJjbSktPmluaXRfc3RhdHVzLCAoc3RhdCkpCisKIHN0cnVjdCBiY200M3h4X3ByaXZhdGUgewogCXN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlOwogCXN0cnVjdCBpZWVlODAyMTFzb2Z0bWFjX2RldmljZSAqc29mdG1hYzsKQEAgLTY0NiwxOCArNjU3LDE3IEBACiAKIAl2b2lkIF9faW9tZW0gKm1taW9fYWRkcjsKIAotCS8qIERvIG5vdCB1c2UgdGhlIGxvY2sgZGlyZWN0bHkuIFVzZSB0aGUgYmNtNDN4eF9sb2NrKiBoZWxwZXIKLQkgKiBmdW5jdGlvbnMsIHRvIGJlIE1NSU8tc2FmZS4gKi8KLQlzcGlubG9ja190IF9sb2NrOworCS8qIExvY2tpbmcsIHNlZSAidGhlb3J5IG9mIGxvY2tpbmciIHRleHQgYmVsb3cuICovCisJc3BpbmxvY2tfdCBpcnFfbG9jazsKKwlzdHJ1Y3QgbXV0ZXggbXV0ZXg7CiAKLQkvKiBEcml2ZXIgc3RhdHVzIGZsYWdzLiAqLwotCXUzMiBpbml0aWFsaXplZDoxLAkJLyogaW5pdF9ib2FyZCgpIHN1Y2NlZWQgKi8KLQkgICAgd2FzX2luaXRpYWxpemVkOjEsCQkvKiBmb3IgUENJIHN1c3BlbmQvcmVzdW1lLiAqLwotCSAgICBzaHV0dGluZ19kb3duOjEsCQkvKiBmcmVlX2JvYXJkKCkgaW4gcHJvZ3Jlc3MgKi8KKwkvKiBEcml2ZXIgaW5pdGlhbGl6YXRpb24gc3RhdHVzIEJDTTQzeHhfU1RBVF8qKiogKi8KKwlhdG9taWNfdCBpbml0X3N0YXR1czsKKworCXUxNiB3YXNfaW5pdGlhbGl6ZWQ6MSwJCS8qIGZvciBQQ0kgc3VzcGVuZC9yZXN1bWUuICovCiAJICAgIF9fdXNpbmdfcGlvOjEsCQkvKiBJbnRlcm5hbCwgdXNlIGJjbTQzeHhfdXNpbmdfcGlvKCkuICovCiAJICAgIGJhZF9mcmFtZXNfcHJlZW1wdDoxLAkvKiBVc2UgIkJhZCBGcmFtZXMgUHJlZW1wdGlvbiIgKGRlZmF1bHQgb2ZmKSAqLwogCSAgICByZWcxMjRfc2V0XzB4NDoxLAkJLyogU29tZSB2YXJpYWJsZSB0byBrZWVwIHRyYWNrIG9mIElSUSBzdHVmZi4gKi8KLQkgICAgcG93ZXJzYXZpbmc6MSwJCS8qIFRSVUUgaWYgd2UgYXJlIGluIFBvd2VyU2F2aW5nIG1vZGUuIEZBTFNFIG90aGVyd2lzZS4gKi8KIAkgICAgc2hvcnRfcHJlYW1ibGU6MSwJCS8qIFRSVUUsIGlmIHNob3J0IHByZWFtYmxlIGlzIGVuYWJsZWQuICovCiAJICAgIGZpcm13YXJlX25vcmVsZWFzZToxOwkvKiBEbyBub3QgcmVsZWFzZSB0aGUgZmlybXdhcmUuIFVzZWQgb24gc3VzcGVuZC4gKi8KIApAQCAtNzIxLDcgKzczMSw3IEBACiAJc3RydWN0IHRhc2tsZXRfc3RydWN0IGlzcl90YXNrbGV0OwogCiAJLyogUGVyaW9kaWMgdGFza3MgKi8KLQlzdHJ1Y3QgdGltZXJfbGlzdCBwZXJpb2RpY190YXNrczsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcGVyaW9kaWNfd29yazsKIAl1bnNpZ25lZCBpbnQgcGVyaW9kaWNfc3RhdGU7CiAKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVzdGFydF93b3JrOwpAQCAtNzQ2LDIxICs3NTYsNTUgQEAKICNlbmRpZgogfTsKIAotLyogYmNtNDN4eF8odW4pbG9jaygpIHByb3RlY3Qgc3RydWN0IGJjbTQzeHhfcHJpdmF0ZS4KLSAqIE5vdGUgdGhhdCBfTk9fIE1NSU8gd3JpdGVzIGFyZSBhbGxvd2VkLiBJZiB5b3Ugd2FudCB0bwotICogd3JpdGUgdG8gdGhlIGRldmljZSB0aHJvdWdoIE1NSU8gaW4gdGhlIGNyaXRpY2FsIHNlY3Rpb24sIHVzZQotICogdGhlICpfbW1pbyBsb2NrIGZ1bmN0aW9ucy4KLSAqIE1NSU8gcmVhZC1hY2Nlc3MgaXMgYWxsb3dlZCwgdGhvdWdoLgorCisvKiAgICAqKiogVEhFT1JZIE9GIExPQ0tJTkcgKioqCisgKgorICogV2UgaGF2ZSB0d28gZGlmZmVyZW50IGxvY2tzIGluIHRoZSBiY200M3h4IGRyaXZlci4KKyAqID0+IGJjbS0+bXV0ZXg6ICAgIEdlbmVyYWwgc2xlZXBpbmcgbXV0ZXguIFByb3RlY3RzIHN0cnVjdCBiY200M3h4X3ByaXZhdGUKKyAqICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZGV2aWNlIHJlZ2lzdGVycy4KKyAqID0+IGJjbS0+aXJxX2xvY2s6IElSUSBzcGlubG9jay4gUHJvdGVjdHMgYWdhaW5zdCBJUlEgaGFuZGxlciBjb25jdXJyZW5jeS4KKyAqCisgKiBXZSBoYXZlIHRocmVlIHR5cGVzIG9mIGhlbHBlciBmdW5jdGlvbiBwYWlycyB0byB1dGlsaXplIHRoZXNlIGxvY2tzLgorICogICAgIChBbHdheXMgdXNlIHRoZSBoZWxwZXIgZnVuY3Rpb25zLikKKyAqIDEpIGJjbTQzeHhfe3VufWxvY2tfbm9pcnEoKToKKyAqICAgICBUYWtlcyBiY20tPm11dGV4LiBEb2VzIF9ub3RfIHByb3RlY3QgYWdhaW5zdCBJUlEgY29uY3VycmVuY3ksCisgKiAgICAgc28gaXQgaXMgYWxtb3N0IGFsd2F5cyB1bnNhZmUsIGlmIGRldmljZSBJUlFzIGFyZSBlbmFibGVkLgorICogICAgIFNvIG9ubHkgdXNlIHRoaXMsIGlmIGRldmljZSBJUlFzIGFyZSBtYXNrZWQuCisgKiAgICAgTG9ja2luZyBtYXkgc2xlZXAuCisgKiAgICAgWW91IGNhbiBzbGVlcCB3aXRoaW4gdGhlIGNyaXRpY2FsIHNlY3Rpb24uCisgKiAyKSBiY200M3h4X3t1bn1sb2NrX2lycW9ubHkoKToKKyAqICAgICBUYWtlcyBiY20tPmlycV9sb2NrLiBEb2VzIF9ub3RfIHByb3RlY3QgYWdhaW5zdAorICogICAgIGJjbTQzeHhfbG9ja19ub2lycSgpIGNyaXRpY2FsIHNlY3Rpb25zLgorICogICAgIERvZXMgb25seSBwcm90ZWN0IGFnYWluc3QgdGhlIElSUSBoYW5kbGVyIHBhdGggYW5kIG90aGVyCisgKiAgICAgaXJxb25seSgpIGNyaXRpY2FsIHNlY3Rpb25zLgorICogICAgIExvY2tpbmcgZG9lcyBub3Qgc2xlZXAuCisgKiAgICAgWW91IG11c3Qgbm90IHNsZWVwIHdpdGhpbiB0aGUgY3JpdGljYWwgc2VjdGlvbi4KKyAqIDMpIGJjbTQzeHhfe3VufWxvY2tfaXJxc2FmZSgpOgorICogICAgIFRoaXMgaXMgdGhlIGN1bW11bGF0aXZlIGxvY2sgYW5kIHRha2VzIGJvdGgsIG11dGV4IGFuZCBpcnFfbG9jay4KKyAqICAgICBQcm90ZWN0cyBhZ2FpbnN0IG5vaXJxKCkgYW5kIGlycW9ubHkoKSBjcml0aWNhbCBzZWN0aW9ucyAoYW5kCisgKiAgICAgdGhlIElSUSBoYW5kbGVyIHBhdGgpLgorICogICAgIExvY2tpbmcgbWF5IHNsZWVwLgorICogICAgIFlvdSBtdXN0IG5vdCBzbGVlcCB3aXRoaW4gdGhlIGNyaXRpY2FsIHNlY3Rpb24uCiAgKi8KLSNkZWZpbmUgYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpCXNwaW5fbG9ja19pcnFzYXZlKCYoYmNtKS0+X2xvY2ssIGZsYWdzKQotI2RlZmluZSBiY200M3h4X3VubG9jayhiY20sIGZsYWdzKQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCYoYmNtKS0+X2xvY2ssIGZsYWdzKQotLyogYmNtNDN4eF8odW4pbG9ja19tbWlvKCkgcHJvdGVjdCBzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlIGFuZCBNTUlPLgotICogTU1JTyB3cml0ZS1hY2Nlc3MgdG8gdGhlIGRldmljZSBpcyBhbGxvd2VkLgotICogQWxsIE1NSU8gd3JpdGVzIGFyZSBmbHVzaGVkIG9uIHVubG9jaywgc28gaXQgaXMgZ3VhcmFudGVlZCB0byBub3QKLSAqIGludGVyZmVyZSB3aXRoIG90aGVyIHRocmVhZHMgd3JpdGluZyBNTUlPIHJlZ2lzdGVycy4KLSAqLwotI2RlZmluZSBiY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKQliY200M3h4X2xvY2soYmNtLCBmbGFncykKLSNkZWZpbmUgYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKQlkbyB7IG1taW93YigpOyBiY200M3h4X3VubG9jayhiY20sIGZsYWdzKTsgfSB3aGlsZSAoMCkKKworLyogTG9jayB0eXBlIDEgKi8KKyNkZWZpbmUgYmNtNDN4eF9sb2NrX25vaXJxKGJjbSkJCW11dGV4X2xvY2soJihiY20pLT5tdXRleCkKKyNkZWZpbmUgYmNtNDN4eF91bmxvY2tfbm9pcnEoYmNtKQltdXRleF91bmxvY2soJihiY20pLT5tdXRleCkKKy8qIExvY2sgdHlwZSAyICovCisjZGVmaW5lIGJjbTQzeHhfbG9ja19pcnFvbmx5KGJjbSwgZmxhZ3MpCVwKKwlzcGluX2xvY2tfaXJxc2F2ZSgmKGJjbSktPmlycV9sb2NrLCBmbGFncykKKyNkZWZpbmUgYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKQlcCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmKGJjbSktPmlycV9sb2NrLCBmbGFncykKKy8qIExvY2sgdHlwZSAzICovCisjZGVmaW5lIGJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpIGRvIHsJXAorCWJjbTQzeHhfbG9ja19ub2lycShiY20pOwkJXAorCWJjbTQzeHhfbG9ja19pcnFvbmx5KGJjbSwgZmxhZ3MpOwlcCisJCX0gd2hpbGUgKDApCisjZGVmaW5lIGJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncykgZG8gewlcCisJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsJXAorCWJjbTQzeHhfdW5sb2NrX25vaXJxKGJjbSk7CQlcCisJCX0gd2hpbGUgKDApCisKIAogc3RhdGljIGlubGluZQogc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqIGJjbTQzeHhfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtODQzLDE2ICs4ODcsNiBAQAogCXJldHVybiAmKGJjbS0+Y29yZV84MDIxMV9leHRbYmNtLT5jdXJyZW50XzgwMjExX2NvcmVfaWR4XS5yYWRpbyk7CiB9CiAKLS8qIEFyZSB3ZSBydW5uaW5nIGluIGluaXRfYm9hcmQoKSBjb250ZXh0PyAqLwotc3RhdGljIGlubGluZQotaW50IGJjbTQzeHhfaXNfaW5pdGlhbGl6aW5nKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKLXsKLQlpZiAoYmNtLT5pbml0aWFsaXplZCkKLQkJcmV0dXJuIDA7Ci0JaWYgKGJjbS0+c2h1dHRpbmdfZG93bikKLQkJcmV0dXJuIDA7Ci0JcmV0dXJuIDE7Ci19CiAKIHN0YXRpYyBpbmxpbmUKIHN0cnVjdCBiY200M3h4X2xvcGFpciAqIGJjbTQzeHhfZ2V0X2xvcGFpcihzdHJ1Y3QgYmNtNDN4eF9waHlpbmZvICpwaHksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X2RlYnVnZnMuYwppbmRleCA3NDk3ZmIxLi5jZTJlNDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9kZWJ1Z2ZzLmMKQEAgLTc3LDggKzc3LDggQEAKIAogCWRvd24oJmJpZ19idWZmZXJfc2VtKTsKIAotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWlmICghYmNtLT5pbml0aWFsaXplZCkgeworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCWlmIChiY200M3h4X3N0YXR1cyhiY20pICE9IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkgewogCQlmYXBwZW5kKCJCb2FyZCBub3QgaW5pdGlhbGl6ZWQuXG4iKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTIxLDcgKzEyMSw3IEBACiAJZmFwcGVuZCgiXG4iKTsKIAogb3V0OgotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAlyZXMgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyYnVmLCBjb3VudCwgcHBvcywgYnVmLCBwb3MpOwogCXVwKCZiaWdfYnVmZmVyX3NlbSk7CiAJcmV0dXJuIHJlczsKQEAgLTE1OSw4ICsxNTksOCBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlkb3duKCZiaWdfYnVmZmVyX3NlbSk7Ci0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7Ci0JaWYgKCFiY20tPmluaXRpYWxpemVkKSB7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CisJaWYgKGJjbTQzeHhfc3RhdHVzKGJjbSkgIT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKSB7CiAJCWZhcHBlbmQoIkJvYXJkIG5vdCBpbml0aWFsaXplZC5cbiIpOwogCQlnb3RvIG91dDsKIAl9CkBAIC0xNjksNyArMTY5LDcgQEAKIAlmYXBwZW5kKCJib2FyZGZsYWdzOiAweCUwNHhcbiIsIGJjbS0+c3Byb20uYm9hcmRmbGFncyk7CiAKIG91dDoKLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJcmVzID0gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcmJ1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgcG9zKTsKIAl1cCgmYmlnX2J1ZmZlcl9zZW0pOwogCXJldHVybiByZXM7CkBAIC0xODgsOCArMTg4LDggQEAKIAl1NjQgdHNmOwogCiAJZG93bigmYmlnX2J1ZmZlcl9zZW0pOwotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWlmICghYmNtLT5pbml0aWFsaXplZCkgeworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCWlmIChiY200M3h4X3N0YXR1cyhiY20pICE9IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkgewogCQlmYXBwZW5kKCJCb2FyZCBub3QgaW5pdGlhbGl6ZWQuXG4iKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTk5LDcgKzE5OSw3IEBACiAJCSh1bnNpZ25lZCBpbnQpKHRzZiAmIDB4RkZGRkZGRkZVTEwpKTsKIAogb3V0OgotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAlyZXMgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyYnVmLCBjb3VudCwgcHBvcywgYnVmLCBwb3MpOwogCXVwKCZiaWdfYnVmZmVyX3NlbSk7CiAJcmV0dXJuIHJlczsKQEAgLTIyMSw4ICsyMjEsOCBAQAogCSAgICAgICAgcmVzID0gLUVGQVVMVDsKIAkJZ290byBvdXRfdXA7CiAJfQotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWlmICghYmNtLT5pbml0aWFsaXplZCkgeworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCWlmIChiY200M3h4X3N0YXR1cyhiY20pICE9IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkgewogCQlwcmludGsoS0VSTl9JTkZPIFBGWCAiZGVidWdmczogQm9hcmQgbm90IGluaXRpYWxpemVkLlxuIik7CiAJCXJlcyA9IC1FRkFVTFQ7CiAJCWdvdG8gb3V0X3VubG9jazsKQEAgLTIzMywxMCArMjMzLDExIEBACiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAJYmNtNDN4eF90c2Zfd3JpdGUoYmNtLCB0c2YpOworCW1taW93YigpOwogCXJlcyA9IGJ1Zl9zaXplOwogCQogb3V0X3VubG9jazoKLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiBvdXRfdXA6CiAJdXAoJmJpZ19idWZmZXJfc2VtKTsKIAlyZXR1cm4gcmVzOwpAQCAtMjU3LDcgKzI1OCw3IEBACiAJaW50IGksIGNudCwgaiA9IDA7CiAKIAlkb3duKCZiaWdfYnVmZmVyX3NlbSk7Ci0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJZmFwcGVuZCgiTGFzdCAlZCBsb2dnZWQgeG1pdHN0YXR1cyBibG9icyAoTGF0ZXN0IGZpcnN0KTpcblxuIiwKIAkJQkNNNDN4eF9OUl9MT0dHRURfWE1JVFNUQVRVUyk7CkBAIC0yOTMsMTQgKzI5NCwxNCBAQAogCQkJaSA9IEJDTTQzeHhfTlJfTE9HR0VEX1hNSVRTVEFUVVMgLSAxOwogCX0KIAotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJcmVzID0gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcmJ1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgcG9zKTsKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJaWYgKCpwcG9zID09IHBvcykgewogCQkvKiBEb25lLiBEcm9wIHRoZSBjb3BpZWQgZGF0YS4gKi8KIAkJZS0+eG1pdHN0YXR1c19wcmludGluZyA9IDA7CiAJfQotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJdXAoJmJpZ19idWZmZXJfc2VtKTsKIAlyZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X2xlZHMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9sZWRzLmMKaW5kZXggNGIyYzAyYy4uZWM4MDY5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X2xlZHMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfbGVkcy5jCkBAIC01MSwxMiArNTEsMTIgQEAKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBsZWQtPmJjbTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CiAJaWYgKGxlZC0+YmxpbmtfaW50ZXJ2YWwpIHsKIAkJYmNtNDN4eF9sZWRfY2hhbmdlc3RhdGUobGVkKTsKIAkJbW9kX3RpbWVyKCZsZWQtPmJsaW5rX3RpbWVyLCBqaWZmaWVzICsgbGVkLT5ibGlua19pbnRlcnZhbCk7CiAJfQotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgYmNtNDN4eF9sZWRfYmxpbmtfc3RhcnQoc3RydWN0IGJjbTQzeHhfbGVkICpsZWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X21haW4uYwppbmRleCA3MzZkZGU5Li4wODVkNzg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9tYWluLmMKQEAgLTQ5OCwyMCArNDk4LDMxIEBACiAJcmV0dXJuIG9sZF9tYXNrOwogfQogCisvKiBTeW5jaHJvbml6ZSBJUlEgdG9wLSBhbmQgYm90dG9tLWhhbGYuCisgKiBJUlFzIG11c3QgYmUgbWFza2VkIGJlZm9yZSBjYWxsaW5nIHRoaXMuCisgKiBUaGlzIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIHRoZSBpcnFfbG9jayBoZWxkLgorICovCitzdGF0aWMgdm9pZCBiY200M3h4X3N5bmNocm9uaXplX2lycShzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCit7CisJc3luY2hyb25pemVfaXJxKGJjbS0+aXJxKTsKKwl0YXNrbGV0X2Rpc2FibGUoJmJjbS0+aXNyX3Rhc2tsZXQpOworfQorCiAvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVjZWl2ZSBtb3JlIGRhdGEgZnJvbSB0aGUgZGV2aWNlLiAqLwogc3RhdGljIGludCBiY200M3h4X2Rpc2FibGVfaW50ZXJydXB0c19zeW5jKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSwgdTMyICpvbGRzdGF0ZSkKIHsKLQl1MzIgb2xkOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdTMyIG9sZDsKIAotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWlmIChiY200M3h4X2lzX2luaXRpYWxpemluZyhiY20pIHx8IGJjbS0+c2h1dHRpbmdfZG93bikgewotCQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFvbmx5KGJjbSwgZmxhZ3MpOworCWlmICh1bmxpa2VseShiY200M3h4X3N0YXR1cyhiY20pICE9IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkpIHsKKwkJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAJb2xkID0gYmNtNDN4eF9pbnRlcnJ1cHRfZGlzYWJsZShiY20sIEJDTTQzeHhfSVJRX0FMTCk7Ci0JdGFza2xldF9kaXNhYmxlKCZiY20tPmlzcl90YXNrbGV0KTsKLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CisJYmNtNDN4eF9zeW5jaHJvbml6ZV9pcnEoYmNtKTsKKwogCWlmIChvbGRzdGF0ZSkKIAkJKm9sZHN0YXRlID0gb2xkOwogCkBAIC0xMzg5LDcgKzE0MDAsNyBAQAogCQkJYmNtNDN4eF9kbWFjb250cm9sbGVyX3J4X3Jlc2V0KGJjbSwgQkNNNDN4eF9NTUlPX0RNQTRfQkFTRSk7CiAjZW5kaWYKIAl9Ci0JaWYgKGJjbS0+c2h1dHRpbmdfZG93bikgeworCWlmIChiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9TSFVUVElOR0RPV04pIHsKIAkJYmNtNDN4eF93cml0ZTMyKGJjbSwgQkNNNDN4eF9NTUlPX1NUQVRVU19CSVRGSUVMRCwKIAkJICAgICAgICAgICAgICAgIGJjbTQzeHhfcmVhZDMyKGJjbSwgQkNNNDN4eF9NTUlPX1NUQVRVU19CSVRGSUVMRCkKIAkJCQkmIH4oQkNNNDN4eF9TQkZfTUFDX0VOQUJMRUQgfCAweDAwMDAwMDAyKSk7CkBAIC0xNzA5LDcgKzE3MjAsNyBAQAogIyBkZWZpbmUgYmNtaXJxX2hhbmRsZWQoaXJxKQlkbyB7IC8qIG5vdGhpbmcgKi8gfSB3aGlsZSAoMCkKICNlbmRpZiAvKiBDT05GSUdfQkNNNDNYWF9ERUJVRyovCiAKLQliY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X2xvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIAlyZWFzb24gPSBiY20tPmlycV9yZWFzb247CiAJZG1hX3JlYXNvblswXSA9IGJjbS0+ZG1hX3JlYXNvblswXTsKIAlkbWFfcmVhc29uWzFdID0gYmNtLT5kbWFfcmVhc29uWzFdOwpAQCAtMTczNCw3ICsxNzQ1LDggQEAKIAkJICAgICAgICBkbWFfcmVhc29uWzBdLCBkbWFfcmVhc29uWzFdLAogCQkJZG1hX3JlYXNvblsyXSwgZG1hX3JlYXNvblszXSk7CiAJCWJjbTQzeHhfY29udHJvbGxlcl9yZXN0YXJ0KGJjbSwgIkRNQSBlcnJvciIpOwotCQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCQltbWlvd2IoKTsKKwkJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIAkJcmV0dXJuOwogCX0KIAlpZiAodW5saWtlbHkoKGRtYV9yZWFzb25bMF0gJiBCQ000M3h4X0RNQUlSUV9OT05GQVRBTE1BU0spIHwKQEAgLTE4MjEsNyArMTgzMyw4IEBACiAJaWYgKCFtb2RwYXJhbV9ub2xlZHMpCiAJCWJjbTQzeHhfbGVkc191cGRhdGUoYmNtLCBhY3Rpdml0eSk7CiAJYmNtNDN4eF9pbnRlcnJ1cHRfZW5hYmxlKGJjbSwgYmNtLT5pcnFfc2F2ZWRzdGF0ZSk7Ci0JYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwltbWlvd2IoKTsKKwliY200M3h4X3VubG9ja19pcnFvbmx5KGJjbSwgZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBwaW9faXJxX3dvcmthcm91bmQoc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqYmNtLApAQCAtMTg3MCw3ICsxODgzLDcgQEAKIAlpZiAoIWJjbSkKIAkJcmV0dXJuIElSUV9OT05FOwogCi0Jc3Bpbl9sb2NrKCZiY20tPl9sb2NrKTsKKwlzcGluX2xvY2soJmJjbS0+aXJxX2xvY2spOwogCiAJcmVhc29uID0gYmNtNDN4eF9yZWFkMzIoYmNtLCBCQ000M3h4X01NSU9fR0VOX0lSUV9SRUFTT04pOwogCWlmIChyZWFzb24gPT0gMHhmZmZmZmZmZikgewpAQCAtMTg5OSw3ICsxOTEyLDcgQEAKIAkgKiBjb21wbGV0ZWx5LCBidXQgc29tZSBjYXJlZnVsIHdvcmsgaXMgbmVlZGVkIHRvIGZpeCB0aGlzLiBJIHRoaW5rIGl0CiAJICogaXMgYmVzdCB0byBzdGF5IHdpdGggdGhpcyBjaGVhcCB3b3JrYXJvdW5kIGZvciBub3cuLi4gLgogCSAqLwotCWlmIChsaWtlbHkoYmNtLT5pbml0aWFsaXplZCkpIHsKKwlpZiAobGlrZWx5KGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKSkgewogCQkvKiBkaXNhYmxlIGFsbCBJUlFzLiBUaGV5IGFyZSBlbmFibGVkIGFnYWluIGluIHRoZSBib3R0b20gaGFsZi4gKi8KIAkJYmNtLT5pcnFfc2F2ZWRzdGF0ZSA9IGJjbTQzeHhfaW50ZXJydXB0X2Rpc2FibGUoYmNtLCBCQ000M3h4X0lSUV9BTEwpOwogCQkvKiBzYXZlIHRoZSByZWFzb24gY29kZSBhbmQgY2FsbCBvdXIgYm90dG9tIGhhbGYuICovCkBAIC0xOTA5LDcgKzE5MjIsNyBAQAogCiBvdXQ6CiAJbW1pb3diKCk7Ci0Jc3Bpbl91bmxvY2soJmJjbS0+X2xvY2spOworCXNwaW5fdW5sb2NrKCZiY20tPmlycV9sb2NrKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0yMTMzLDYgKzIxNDYsMTMgQEAKIAlyZXR1cm4gZXJyOwogfQogCisjaWZkZWYgQ09ORklHX0JDTTk0N1hYCitzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgYmNtNDN4eF80N3h4X2lkc1tdID0geworCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzMjQpIH0sCisJeyAwIH0KK307CisjZW5kaWYKKwogc3RhdGljIGludCBiY200M3h4X2luaXRpYWxpemVfaXJxKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKIHsKIAlpbnQgcmVzOwpAQCAtMjE0MiwxMSArMjE2MiwxNSBAQAogCWJjbS0+aXJxID0gYmNtLT5wY2lfZGV2LT5pcnE7CiAjaWZkZWYgQ09ORklHX0JDTTk0N1hYCiAJaWYgKGJjbS0+cGNpX2Rldi0+YnVzLT5udW1iZXIgPT0gMCkgewotCQlzdHJ1Y3QgcGNpX2RldiAqZCA9IE5VTEw7Ci0JCS8qIEZJWE1FOiB3ZSB3aWxsIHByb2JhYmx5IG5lZWQgbW9yZSBkZXZpY2UgSURzIGhlcmUuLi4gKi8KLQkJZCA9IHBjaV9maW5kX2RldmljZShQQ0lfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzMjQsIE5VTEwpOwotCQlpZiAoZCAhPSBOVUxMKSB7Ci0JCQliY20tPmlycSA9IGQtPmlycTsKKwkJc3RydWN0IHBjaV9kZXYgKmQ7CisJCXN0cnVjdCBwY2lfZGV2aWNlX2lkICppZDsKKwkJZm9yIChpZCA9IGJjbTQzeHhfNDd4eF9pZHM7IGlkLT52ZW5kb3I7IGlkKyspIHsKKwkJCWQgPSBwY2lfZ2V0X2RldmljZShpZC0+dmVuZG9yLCBpZC0+ZGV2aWNlLCBOVUxMKTsKKwkJCWlmIChkICE9IE5VTEwpIHsKKwkJCQliY20tPmlycSA9IGQtPmlycTsKKwkJCQlwY2lfZGV2X3B1dChkKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJfQogCX0KICNlbmRpZgpAQCAtMzEwNiwxNSArMzEzMCwxMCBAQAogCS8vVE9ETyBmb3IgQVBIWSAodGVtcGVyYXR1cmU/KQogfQogCi1zdGF0aWMgdm9pZCBiY200M3h4X3BlcmlvZGljX3Rhc2tfaGFuZGxlcih1bnNpZ25lZCBsb25nIGQpCitzdGF0aWMgdm9pZCBkb19wZXJpb2RpY193b3JrKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKIHsKLQlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSAoc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqKWQ7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBpbnQgc3RhdGU7CiAKLQliY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKTsKLQotCWFzc2VydChiY20tPmluaXRpYWxpemVkKTsKIAlzdGF0ZSA9IGJjbS0+cGVyaW9kaWNfc3RhdGU7CiAJaWYgKHN0YXRlICUgOCA9PSAwKQogCQliY200M3h4X3BlcmlvZGljX2V2ZXJ5MTIwc2VjKGJjbSk7CkBAIC0zMTIyLDI5ICszMTQxLDkzIEBACiAJCWJjbTQzeHhfcGVyaW9kaWNfZXZlcnk2MHNlYyhiY20pOwogCWlmIChzdGF0ZSAlIDIgPT0gMCkKIAkJYmNtNDN4eF9wZXJpb2RpY19ldmVyeTMwc2VjKGJjbSk7Ci0JYmNtNDN4eF9wZXJpb2RpY19ldmVyeTE1c2VjKGJjbSk7CisJaWYgKHN0YXRlICUgMSA9PSAwKQorCQliY200M3h4X3BlcmlvZGljX2V2ZXJ5MTVzZWMoYmNtKTsKIAliY20tPnBlcmlvZGljX3N0YXRlID0gc3RhdGUgKyAxOwogCi0JbW9kX3RpbWVyKCZiY20tPnBlcmlvZGljX3Rhc2tzLCBqaWZmaWVzICsgKEhaICogMTUpKTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmJjbS0+cGVyaW9kaWNfd29yaywgSFogKiAxNSk7Cit9CiAKLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworLyogRXN0aW1hdGUgYSAiQmFkbmVzcyIgdmFsdWUgYmFzZWQgb24gdGhlIHBlcmlvZGljIHdvcmsKKyAqIHN0YXRlLW1hY2hpbmUgc3RhdGUuICJCYWRuZXNzIiBpcyB3b3JzZSAoYmlnZ2VyKSwgaWYgdGhlCisgKiBwZXJpb2RpYyB3b3JrIHdpbGwgdGFrZSBsb25nZXIuCisgKi8KK3N0YXRpYyBpbnQgZXN0aW1hdGVfcGVyaW9kaWNfd29ya19iYWRuZXNzKHVuc2lnbmVkIGludCBzdGF0ZSkKK3sKKwlpbnQgYmFkbmVzcyA9IDA7CisKKwlpZiAoc3RhdGUgJSA4ID09IDApIC8qIGV2ZXJ5IDEyMCBzZWMgKi8KKwkJYmFkbmVzcyArPSAxMDsKKwlpZiAoc3RhdGUgJSA0ID09IDApIC8qIGV2ZXJ5IDYwIHNlYyAqLworCQliYWRuZXNzICs9IDU7CisJaWYgKHN0YXRlICUgMiA9PSAwKSAvKiBldmVyeSAzMCBzZWMgKi8KKwkJYmFkbmVzcyArPSAxOworCWlmIChzdGF0ZSAlIDEgPT0gMCkgLyogZXZlcnkgMTUgc2VjICovCisJCWJhZG5lc3MgKz0gMTsKKworI2RlZmluZSBCQURORVNTX0xJTUlUCTQKKwlyZXR1cm4gYmFkbmVzczsKK30KKworc3RhdGljIHZvaWQgYmNtNDN4eF9wZXJpb2RpY193b3JrX2hhbmRsZXIodm9pZCAqZCkKK3sKKwlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBkOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdTMyIHNhdmVkaXJxcyA9IDA7CisJaW50IGJhZG5lc3M7CisKKwliYWRuZXNzID0gZXN0aW1hdGVfcGVyaW9kaWNfd29ya19iYWRuZXNzKGJjbS0+cGVyaW9kaWNfc3RhdGUpOworCWlmIChiYWRuZXNzID4gQkFETkVTU19MSU1JVCkgeworCQkvKiBQZXJpb2RpYyB3b3JrIHdpbGwgdGFrZSBhIGxvbmcgdGltZSwgc28gd2Ugd2FudCBpdCB0bworCQkgKiBiZSBwcmVlbXRpYmxlLgorCQkgKi8KKwkJYmNtNDN4eF9sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CisJCW5ldGlmX3N0b3BfcXVldWUoYmNtLT5uZXRfZGV2KTsKKwkJaWYgKGJjbTQzeHhfdXNpbmdfcGlvKGJjbSkpCisJCQliY200M3h4X3Bpb19mcmVlemVfdHhxdWV1ZXMoYmNtKTsKKwkJc2F2ZWRpcnFzID0gYmNtNDN4eF9pbnRlcnJ1cHRfZGlzYWJsZShiY20sIEJDTTQzeHhfSVJRX0FMTCk7CisJCWJjbTQzeHhfdW5sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CisJCWJjbTQzeHhfbG9ja19ub2lycShiY20pOworCQliY200M3h4X3N5bmNocm9uaXplX2lycShiY20pOworCX0gZWxzZSB7CisJCS8qIFBlcmlvZGljIHdvcmsgc2hvdWxkIHRha2Ugc2hvcnQgdGltZSwgc28gd2Ugd2FudCBsb3cKKwkJICogbG9ja2luZyBvdmVyaGVhZC4KKwkJICovCisJCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCX0KKworCWRvX3BlcmlvZGljX3dvcmsoYmNtKTsKKworCWlmIChiYWRuZXNzID4gQkFETkVTU19MSU1JVCkgeworCQliY200M3h4X2xvY2tfaXJxb25seShiY20sIGZsYWdzKTsKKwkJaWYgKGxpa2VseShiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkpIHsKKwkJCXRhc2tsZXRfZW5hYmxlKCZiY20tPmlzcl90YXNrbGV0KTsKKwkJCWJjbTQzeHhfaW50ZXJydXB0X2VuYWJsZShiY20sIHNhdmVkaXJxcyk7CisJCQlpZiAoYmNtNDN4eF91c2luZ19waW8oYmNtKSkKKwkJCQliY200M3h4X3Bpb190aGF3X3R4cXVldWVzKGJjbSk7CisJCX0KKwkJbmV0aWZfd2FrZV9xdWV1ZShiY20tPm5ldF9kZXYpOworCQltbWlvd2IoKTsKKwkJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKKwkJYmNtNDN4eF91bmxvY2tfbm9pcnEoYmNtKTsKKwl9IGVsc2UgeworCQltbWlvd2IoKTsKKwkJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGJjbTQzeHhfcGVyaW9kaWNfdGFza3NfZGVsZXRlKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKIHsKLQlkZWxfdGltZXJfc3luYygmYmNtLT5wZXJpb2RpY190YXNrcyk7CisJY2FuY2VsX3JlYXJtaW5nX2RlbGF5ZWRfd29yaygmYmNtLT5wZXJpb2RpY193b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgYmNtNDN4eF9wZXJpb2RpY190YXNrc19zZXR1cChzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCiB7Ci0Jc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyID0gJihiY20tPnBlcmlvZGljX3Rhc2tzKTsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsgPSAmKGJjbS0+cGVyaW9kaWNfd29yayk7CiAKLQlhc3NlcnQoYmNtLT5pbml0aWFsaXplZCk7Ci0Jc2V0dXBfdGltZXIodGltZXIsCi0JCSAgICBiY200M3h4X3BlcmlvZGljX3Rhc2tfaGFuZGxlciwKLQkJICAgICh1bnNpZ25lZCBsb25nKWJjbSk7Ci0JdGltZXItPmV4cGlyZXMgPSBqaWZmaWVzOwotCWFkZF90aW1lcih0aW1lcik7CisJYXNzZXJ0KGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKTsKKwlJTklUX1dPUksod29yaywgYmNtNDN4eF9wZXJpb2RpY193b3JrX2hhbmRsZXIsIGJjbSk7CisJc2NoZWR1bGVfd29yayh3b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgYmNtNDN4eF9zZWN1cml0eV9pbml0KHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKQEAgLTMxNTgsMTYgKzMyNDEsMTIgQEAKIHN0YXRpYyB2b2lkIGJjbTQzeHhfZnJlZV9ib2FyZChzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCiB7CiAJaW50IGksIGVycjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJYmNtNDN4eF9sb2NrX25vaXJxKGJjbSk7CiAJYmNtNDN4eF9zeXNmc191bnJlZ2lzdGVyKGJjbSk7Ci0KIAliY200M3h4X3BlcmlvZGljX3Rhc2tzX2RlbGV0ZShiY20pOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOwotCWJjbS0+aW5pdGlhbGl6ZWQgPSAwOwotCWJjbS0+c2h1dHRpbmdfZG93biA9IDE7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9zZXRfc3RhdHVzKGJjbSwgQkNNNDN4eF9TVEFUX1NIVVRUSU5HRE9XTik7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQkNNNDN4eF9NQVhfODAyMTFfQ09SRVM7IGkrKykgewogCQlpZiAoIWJjbS0+Y29yZV84MDIxMVtpXS5hdmFpbGFibGUpCkBAIC0zMTgyLDIzICszMjYxLDE5IEBACiAKIAliY200M3h4X3BjdGxfc2V0X2NyeXN0YWwoYmNtLCAwKTsKIAotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKLQliY20tPnNodXR0aW5nX2Rvd24gPSAwOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfc2V0X3N0YXR1cyhiY20sIEJDTTQzeHhfU1RBVF9VTklOSVQpOworCWJjbTQzeHhfdW5sb2NrX25vaXJxKGJjbSk7CiB9CiAKIHN0YXRpYyBpbnQgYmNtNDN4eF9pbml0X2JvYXJkKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKIHsKIAlpbnQgaSwgZXJyOwogCWludCBjb25uZWN0X3BoeTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJbWlnaHRfc2xlZXAoKTsKIAotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKLQliY20tPmluaXRpYWxpemVkID0gMDsKLQliY20tPnNodXR0aW5nX2Rvd24gPSAwOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19ub2lycShiY20pOworCWJjbTQzeHhfc2V0X3N0YXR1cyhiY20sIEJDTTQzeHhfU1RBVF9JTklUSUFMSVpJTkcpOwogCiAJZXJyID0gYmNtNDN4eF9wY3RsX3NldF9jcnlzdGFsKGJjbSwgMSk7CiAJaWYgKGVycikKQEAgLTMyNjUsOSArMzM0MCw3IEBACiAJfQogCiAJLyogSW5pdGlhbGl6YXRpb24gb2YgdGhlIGJvYXJkIGlzIGRvbmUuIEZsYWcgaXQgYXMgc3VjaC4gKi8KLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7Ci0JYmNtLT5pbml0aWFsaXplZCA9IDE7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9zZXRfc3RhdHVzKGJjbSwgQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKTsKIAogCWJjbTQzeHhfcGVyaW9kaWNfdGFza3Nfc2V0dXAoYmNtKTsKIAliY200M3h4X3N5c2ZzX3JlZ2lzdGVyKGJjbSk7CkBAIC0zMjc4LDYgKzMzNTEsOCBAQAogCiAJYXNzZXJ0KGVyciA9PSAwKTsKIG91dDoKKwliY200M3h4X3VubG9ja19ub2lycShiY20pOworCiAJcmV0dXJuIGVycjsKIAogZXJyXzgwMjExX3Vud2luZDoKQEAgLTM1MzQsOCArMzYwOSw4IEBACiAJc3RydWN0IGJjbTQzeHhfcmFkaW9pbmZvICpyYWRpbzsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7Ci0JaWYgKGJjbS0+aW5pdGlhbGl6ZWQpIHsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKKwlpZiAoYmNtNDN4eF9zdGF0dXMoYmNtKSA9PSBCQ000M3h4X1NUQVRfSU5JVElBTElaRUQpIHsKIAkJYmNtNDN4eF9tYWNfc3VzcGVuZChiY20pOwogCQliY200M3h4X3JhZGlvX3NlbGVjdGNoYW5uZWwoYmNtLCBjaGFubmVsLCAwKTsKIAkJYmNtNDN4eF9tYWNfZW5hYmxlKGJjbSk7CkBAIC0zNTQzLDcgKzM2MTgsNyBAQAogCQlyYWRpbyA9IGJjbTQzeHhfY3VycmVudF9yYWRpbyhiY20pOwogCQlyYWRpby0+aW5pdGlhbF9jaGFubmVsID0gY2hhbm5lbDsKIAl9Ci0JYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogfQogCiAvKiBzZXRfc2VjdXJpdHkoKSBjYWxsYmFjayBpbiBzdHJ1Y3QgaWVlZTgwMjExX2RldmljZSAqLwpAQCAtMzU1Nyw3ICszNjMyLDcgQEAKIAkKIAlkcHJpbnRrKEtFUk5fSU5GTyBQRlggInNldCBzZWN1cml0eSBjYWxsZWQiKTsKIAotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJZm9yIChrZXlpZHggPSAwOyBrZXlpZHg8V0VQX0tFWVM7IGtleWlkeCsrKQogCQlpZiAoc2VjLT5mbGFncyAmICgxPDxrZXlpZHgpKSB7CkBAIC0zNTg3LDcgKzM2NjIsOCBAQAogCQlkcHJpbnRrKCIsIC5lbmNyeXB0ID0gJWQiLCBzZWMtPmVuY3J5cHQpOwogCX0KIAlkcHJpbnRrKCJcbiIpOwotCWlmIChiY20tPmluaXRpYWxpemVkICYmICFiY20tPmllZWUtPmhvc3RfZW5jcnlwdCkgeworCWlmIChiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCAmJgorCSAgICAhYmNtLT5pZWVlLT5ob3N0X2VuY3J5cHQpIHsKIAkJaWYgKHNlY2luZm8tPmVuYWJsZWQpIHsKIAkJCS8qIHVwbG9hZCBXRVAga2V5cyB0byBoYXJkd2FyZSAqLwogCQkJY2hhciBudWxsX2FkZHJlc3NbNl0gPSB7IDAgfTsKQEAgLTM2MjEsNyArMzY5Nyw3IEBACiAJCX0gZWxzZQogCQkJCWJjbTQzeHhfY2xlYXJfa2V5cyhiY20pOwogCX0KLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiB9CiAKIC8qIGhhcmRfc3RhcnRfeG1pdCgpIGNhbGxiYWNrIGluIHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICovCkBAIC0zNjMzLDEwICszNzA5LDEwIEBACiAJaW50IGVyciA9IC1FTk9ERVY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWlmIChsaWtlbHkoYmNtLT5pbml0aWFsaXplZCkpCisJYmNtNDN4eF9sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CisJaWYgKGxpa2VseShiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkpCiAJCWVyciA9IGJjbTQzeHhfdHgoYmNtLCB0eGIpOwotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0zNjUxLDkgKzM3MjcsOSBAQAogCXN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSA9IGJjbTQzeHhfcHJpdihuZXRfZGV2KTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CiAJYmNtNDN4eF9jb250cm9sbGVyX3Jlc3RhcnQoYmNtLCAiVFggdGltZW91dCIpOwotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIH0KIAogI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCkBAIC0zNjc4LDkgKzM3NTQsMTEgQEAKIHN0YXRpYyBpbnQgYmNtNDN4eF9uZXRfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldikKIHsKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBiY200M3h4X3ByaXYobmV0X2Rldik7CisJaW50IGVycjsKIAogCWllZWU4MDIxMXNvZnRtYWNfc3RvcChuZXRfZGV2KTsKLQliY200M3h4X2Rpc2FibGVfaW50ZXJydXB0c19zeW5jKGJjbSwgTlVMTCk7CisJZXJyID0gYmNtNDN4eF9kaXNhYmxlX2ludGVycnVwdHNfc3luYyhiY20sIE5VTEwpOworCWFzc2VydCghZXJyKTsKIAliY200M3h4X2ZyZWVfYm9hcmQoYmNtKTsKIAogCXJldHVybiAwOwpAQCAtMzY5Miw2ICszNzcwLDcgQEAKIHsKIAlpbnQgZXJyOwogCisJYmNtNDN4eF9zZXRfc3RhdHVzKGJjbSwgQkNNNDN4eF9TVEFUX1VOSU5JVCk7CiAJYmNtLT5pZWVlID0gbmV0ZGV2X3ByaXYobmV0X2Rldik7CiAJYmNtLT5zb2Z0bWFjID0gaWVlZTgwMjExX3ByaXYobmV0X2Rldik7CiAJYmNtLT5zb2Z0bWFjLT5zZXRfY2hhbm5lbCA9IGJjbTQzeHhfaWVlZTgwMjExX3NldF9jaGFuOwpAQCAtMzcwMCw3ICszNzc5LDggQEAKIAliY20tPnBjaV9kZXYgPSBwY2lfZGV2OwogCWJjbS0+bmV0X2RldiA9IG5ldF9kZXY7CiAJYmNtLT5iYWRfZnJhbWVzX3ByZWVtcHQgPSBtb2RwYXJhbV9iYWRfZnJhbWVzX3ByZWVtcHQ7Ci0Jc3Bpbl9sb2NrX2luaXQoJmJjbS0+X2xvY2spOworCXNwaW5fbG9ja19pbml0KCZiY20tPmlycV9sb2NrKTsKKwltdXRleF9pbml0KCZiY20tPm11dGV4KTsKIAl0YXNrbGV0X2luaXQoJmJjbS0+aXNyX3Rhc2tsZXQsCiAJCSAgICAgKHZvaWQgKCopKHVuc2lnbmVkIGxvbmcpKWJjbTQzeHhfaW50ZXJydXB0X3Rhc2tsZXQsCiAJCSAgICAgKHVuc2lnbmVkIGxvbmcpYmNtKTsKQEAgLTM4MzEsNyArMzkxMSw3IEBACiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYgPSBiY20tPm5ldF9kZXY7CiAJc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYgPSBiY20tPnBjaV9kZXY7CiAJaW50IGVycjsKLQlpbnQgd2FzX2luaXRpYWxpemVkID0gYmNtLT5pbml0aWFsaXplZDsKKwlpbnQgd2FzX2luaXRpYWxpemVkID0gKGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKTsKIAogCW5ldGlmX3N0b3BfcXVldWUoYmNtLT5uZXRfZGV2KTsKIAl0YXNrbGV0X2Rpc2FibGUoJmJjbS0+aXNyX3Rhc2tsZXQpOwpAQCAtMzg2Niw2ICszOTQ2LDcgQEAKICovCiB2b2lkIGJjbTQzeHhfY29udHJvbGxlcl9yZXN0YXJ0KHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSwgY29uc3QgY2hhciAqcmVhc29uKQogeworCWJjbTQzeHhfc2V0X3N0YXR1cyhiY20sIEJDTTQzeHhfU1RBVF9SRVNUQVJUSU5HKTsKIAliY200M3h4X2ludGVycnVwdF9kaXNhYmxlKGJjbSwgQkNNNDN4eF9JUlFfQUxMKTsKIAliY200M3h4X3JlYWQzMihiY20sIEJDTTQzeHhfTU1JT19TVEFUVVNfQklURklFTEQpOyAvKiBkdW1teSByZWFkICovCiAJcHJpbnRrKEtFUk5fRVJSIFBGWCAiQ29udHJvbGxlciBSRVNFVCAoJXMpIC4uLlxuIiwgcmVhc29uKTsKQEAgLTM4ODQsMTEgKzM5NjUsMTEgQEAKIAogCWRwcmludGsoS0VSTl9JTkZPIFBGWCAiU3VzcGVuZGluZy4uLlxuIik7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7Ci0JYmNtLT53YXNfaW5pdGlhbGl6ZWQgPSBiY20tPmluaXRpYWxpemVkOwotCWlmIChiY20tPmluaXRpYWxpemVkKQorCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCWJjbS0+d2FzX2luaXRpYWxpemVkID0gKGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKTsKKwlpZiAoYmNtLT53YXNfaW5pdGlhbGl6ZWQpCiAJCXRyeV90b19zaHV0ZG93biA9IDE7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCW5ldGlmX2RldmljZV9kZXRhY2gobmV0X2Rldik7CiAJaWYgKHRyeV90b19zaHV0ZG93bikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3BoeS5jCmluZGV4IGIwYWJhYzUuLmY4MjAwZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfcGh5LmMKQEAgLTE0MTAsNyArMTQxMCwxMCBAQAogdTE2IGJjbTQzeHhfcGh5X2xvX2dfZGV2aWF0aW9uX3N1YnZhbChzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20sIHUxNiBjb250cm9sKQogewogCXN0cnVjdCBiY200M3h4X3BoeWluZm8gKnBoeSA9IGJjbTQzeHhfY3VycmVudF9waHkoYmNtKTsKKwl1MTYgcmV0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAJaWYgKHBoeS0+Y29ubmVjdGVkKSB7CiAJCWJjbTQzeHhfcGh5X3dyaXRlKGJjbSwgMHgxNSwgMHhFMzAwKTsKIAkJY29udHJvbCA8PD0gODsKQEAgLTE0MzAsOCArMTQzMywxMCBAQAogCQliY200M3h4X3BoeV93cml0ZShiY20sIDB4MDAxNSwgY29udHJvbCB8IDB4RkZFMCk7CiAJCXVkZWxheSg4KTsKIAl9CisJcmV0ID0gYmNtNDN4eF9waHlfcmVhZChiY20sIDB4MDAyRCk7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCi0JcmV0dXJuIGJjbTQzeHhfcGh5X3JlYWQoYmNtLCAweDAwMkQpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB1MzIgYmNtNDN4eF9waHlfbG9fZ19zaW5nbGVkZXZpYXRpb24oc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqYmNtLCB1MTYgY29udHJvbCkKQEAgLTE2NDgsNyArMTY1Myw3IEBACiB2b2lkIGJjbTQzeHhfcGh5X2xvX2dfbWVhc3VyZShzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCiB7CiAJc3RhdGljIGNvbnN0IHU4IHBhaXJvcmRlclsxMF0gPSB7IDMsIDEsIDUsIDcsIDksIDIsIDAsIDQsIDYsIDggfTsKLQljb25zdCBpbnQgaXNfaW5pdGlhbGl6aW5nID0gYmNtNDN4eF9pc19pbml0aWFsaXppbmcoYmNtKTsKKwljb25zdCBpbnQgaXNfaW5pdGlhbGl6aW5nID0gKGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWklORyk7CiAJc3RydWN0IGJjbTQzeHhfcGh5aW5mbyAqcGh5ID0gYmNtNDN4eF9jdXJyZW50X3BoeShiY20pOwogCXN0cnVjdCBiY200M3h4X3JhZGlvaW5mbyAqcmFkaW8gPSBiY200M3h4X2N1cnJlbnRfcmFkaW8oYmNtKTsKIAl1MTYgaCwgaSwgb2xkaSA9IDAsIGo7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfcGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfcGlvLmMKaW5kZXggMGFhMWJkMi4uNTc0MDg1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3Bpby5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9waW8uYwpAQCAtMjYyLDggKzI2MiwxMCBAQAogCWludCBlcnI7CiAJdTE2IHR4Y3RsOwogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycW9ubHkoYmNtLCBmbGFncyk7CiAKKwlpZiAocXVldWUtPnR4X2Zyb3plbikKKwkJZ290byBvdXRfdW5sb2NrOwogCXR4Y3RsID0gYmNtNDN4eF9waW9fcmVhZChxdWV1ZSwgQkNNNDN4eF9QSU9fVFhDVEwpOwogCWlmICh0eGN0bCAmIEJDTTQzeHhfUElPX1RYQ1RMX1NVU1BFTkQpCiAJCWdvdG8gb3V0X3VubG9jazsKQEAgLTI5OCw3ICszMDAsNyBAQAogCQljb250aW51ZTsKIAl9CiBvdXRfdW5sb2NrOgotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxb25seShiY20sIGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBfdHhxdWV1ZXMoc3RydWN0IGJjbTQzeHhfcGlvcXVldWUgKnF1ZXVlKQpAQCAtMzc0LDcgKzM3Niw2IEBACiAJc3RydWN0IGJjbTQzeHhfcGlvX3R4cGFja2V0ICpwYWNrZXQsICp0bXBfcGFja2V0OwogCiAJbmV0aWZfdHhfZGlzYWJsZShxdWV1ZS0+YmNtLT5uZXRfZGV2KTsKLQlhc3NlcnQocXVldWUtPmJjbS0+c2h1dHRpbmdfZG93bik7CiAJdGFza2xldF9kaXNhYmxlKCZxdWV1ZS0+dHh0YXNrKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWNrZXQsIHRtcF9wYWNrZXQsICZxdWV1ZS0+dHhydW5uaW5nLCBsaXN0KQpAQCAtNjM0LDUgKzYzNSw0MCBAQAogCQkJICBiY200M3h4X3Bpb19yZWFkKHF1ZXVlLCBCQ000M3h4X1BJT19UWENUTCkKIAkJCSAgJiB+QkNNNDN4eF9QSU9fVFhDVExfU1VTUEVORCk7CiAJYmNtNDN4eF9wb3dlcl9zYXZpbmdfY3RsX2JpdHMocXVldWUtPmJjbSwgLTEsIC0xKTsKLQl0YXNrbGV0X3NjaGVkdWxlKCZxdWV1ZS0+dHh0YXNrKTsKKwlpZiAoIWxpc3RfZW1wdHkoJnF1ZXVlLT50eHF1ZXVlKSkKKwkJdGFza2xldF9zY2hlZHVsZSgmcXVldWUtPnR4dGFzayk7CiB9CisKK3ZvaWQgYmNtNDN4eF9waW9fZnJlZXplX3R4cXVldWVzKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKK3sKKwlzdHJ1Y3QgYmNtNDN4eF9waW8gKnBpbzsKKworCWFzc2VydChiY200M3h4X3VzaW5nX3BpbyhiY20pKTsKKwlwaW8gPSBiY200M3h4X2N1cnJlbnRfcGlvKGJjbSk7CisJcGlvLT5xdWV1ZTAtPnR4X2Zyb3plbiA9IDE7CisJcGlvLT5xdWV1ZTEtPnR4X2Zyb3plbiA9IDE7CisJcGlvLT5xdWV1ZTItPnR4X2Zyb3plbiA9IDE7CisJcGlvLT5xdWV1ZTMtPnR4X2Zyb3plbiA9IDE7Cit9CisKK3ZvaWQgYmNtNDN4eF9waW9fdGhhd190eHF1ZXVlcyhzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCit7CisJc3RydWN0IGJjbTQzeHhfcGlvICpwaW87CisKKwlhc3NlcnQoYmNtNDN4eF91c2luZ19waW8oYmNtKSk7CisJcGlvID0gYmNtNDN4eF9jdXJyZW50X3BpbyhiY20pOworCXBpby0+cXVldWUwLT50eF9mcm96ZW4gPSAwOworCXBpby0+cXVldWUxLT50eF9mcm96ZW4gPSAwOworCXBpby0+cXVldWUyLT50eF9mcm96ZW4gPSAwOworCXBpby0+cXVldWUzLT50eF9mcm96ZW4gPSAwOworCWlmICghbGlzdF9lbXB0eSgmcGlvLT5xdWV1ZTAtPnR4cXVldWUpKQorCQl0YXNrbGV0X3NjaGVkdWxlKCZwaW8tPnF1ZXVlMC0+dHh0YXNrKTsKKwlpZiAoIWxpc3RfZW1wdHkoJnBpby0+cXVldWUxLT50eHF1ZXVlKSkKKwkJdGFza2xldF9zY2hlZHVsZSgmcGlvLT5xdWV1ZTEtPnR4dGFzayk7CisJaWYgKCFsaXN0X2VtcHR5KCZwaW8tPnF1ZXVlMi0+dHhxdWV1ZSkpCisJCXRhc2tsZXRfc2NoZWR1bGUoJnBpby0+cXVldWUyLT50eHRhc2spOworCWlmICghbGlzdF9lbXB0eSgmcGlvLT5xdWV1ZTMtPnR4cXVldWUpKQorCQl0YXNrbGV0X3NjaGVkdWxlKCZwaW8tPnF1ZXVlMy0+dHh0YXNrKTsKK30KKworCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfcGlvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfcGlvLmgKaW5kZXggZGZjNzgyMC4uYmM3OGEzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3Bpby5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF9waW8uaApAQCAtNTQsNiArNTQsNyBAQAogCXUxNiBtbWlvX2Jhc2U7CiAKIAl1OCB0eF9zdXNwZW5kZWQ6MSwKKwkgICB0eF9mcm96ZW46MSwKIAkgICBuZWVkX3dvcmthcm91bmRzOjE7IC8qIFdvcmthcm91bmRzIG5lZWRlZCBmb3IgY29yZS5yZXYgPCAzICovCiAKIAkvKiBBZGp1c3RlZCBzaXplIG9mIHRoZSBkZXZpY2UgaW50ZXJuYWwgVFggYnVmZmVyLiAqLwpAQCAtMTA4LDggKzEwOSwxMiBAQAogCQkJCSAgIHN0cnVjdCBiY200M3h4X3htaXRzdGF0dXMgKnN0YXR1cyk7CiB2b2lkIGJjbTQzeHhfcGlvX3J4KHN0cnVjdCBiY200M3h4X3Bpb3F1ZXVlICpxdWV1ZSk7CiAKKy8qIFN1c3BlbmQgYSBUWCBxdWV1ZSBvbiBoYXJkd2FyZSBsZXZlbC4gKi8KIHZvaWQgYmNtNDN4eF9waW9fdHhfc3VzcGVuZChzdHJ1Y3QgYmNtNDN4eF9waW9xdWV1ZSAqcXVldWUpOwogdm9pZCBiY200M3h4X3Bpb190eF9yZXN1bWUoc3RydWN0IGJjbTQzeHhfcGlvcXVldWUgKnF1ZXVlKTsKKy8qIFN1c3BlbmQgKGZyZWV6ZSkgdGhlIFRYIHRhc2tsZXQgKHNvZnR3YXJlIGxldmVsKS4gKi8KK3ZvaWQgYmNtNDN4eF9waW9fZnJlZXplX3R4cXVldWVzKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSk7Cit2b2lkIGJjbTQzeHhfcGlvX3RoYXdfdHhxdWV1ZXMoc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqYmNtKTsKIAogI2Vsc2UgLyogQ09ORklHX0JDTTQzWFhfUElPICovCiAKQEAgLTE0NSw2ICsxNTAsMTQgQEAKIHZvaWQgYmNtNDN4eF9waW9fdHhfcmVzdW1lKHN0cnVjdCBiY200M3h4X3Bpb3F1ZXVlICpxdWV1ZSkKIHsKIH0KK3N0YXRpYyBpbmxpbmUKK3ZvaWQgYmNtNDN4eF9waW9fZnJlZXplX3R4cXVldWVzKHN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSkKK3sKK30KK3N0YXRpYyBpbmxpbmUKK3ZvaWQgYmNtNDN4eF9waW9fdGhhd190eHF1ZXVlcyhzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20pCit7Cit9CiAKICNlbmRpZiAvKiBDT05GSUdfQkNNNDNYWF9QSU8gKi8KICNlbmRpZiAvKiBCQ000M3h4X1BJT19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3N5c2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfc3lzZnMuYwppbmRleCBiNDM4ZjQ4Li42YTIzYmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfc3lzZnMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfc3lzZnMuYwpAQCAtMTIwLDEyICsxMjAsMTIgQEAKIAkJCUdGUF9LRVJORUwpOwogCWlmICghc3Byb20pCiAJCXJldHVybiAtRU5PTUVNOwotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWFzc2VydChiY20tPmluaXRpYWxpemVkKTsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAllcnIgPSBiY200M3h4X3Nwcm9tX3JlYWQoYmNtLCBzcHJvbSk7CiAJaWYgKCFlcnIpCiAJCWVyciA9IHNwcm9tMmhleChzcHJvbSwgYnVmLCBQQUdFX1NJWkUpOwotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJbW1pb3diKCk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAlrZnJlZShzcHJvbSk7CiAKIAlyZXR1cm4gZXJyOwpAQCAtMTUwLDEwICsxNTAsMTAgQEAKIAllcnIgPSBoZXgyc3Byb20oc3Byb20sIGJ1ZiwgY291bnQpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0X2tmcmVlOwotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOwotCWFzc2VydChiY20tPmluaXRpYWxpemVkKTsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAllcnIgPSBiY200M3h4X3Nwcm9tX3dyaXRlKGJjbSwgc3Byb20pOwotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJbW1pb3diKCk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIG91dF9rZnJlZToKIAlrZnJlZShzcHJvbSk7CiAKQEAgLTE3MCwxNSArMTcwLDEzIEBACiAJCQkJCSAgICBjaGFyICpidWYpCiB7CiAJc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqYmNtID0gZGV2X3RvX2JjbShkZXYpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGVycjsKIAlzc2l6ZV90IGNvdW50ID0gMDsKIAogCWlmICghY2FwYWJsZShDQVBfTkVUX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKLQlhc3NlcnQoYmNtLT5pbml0aWFsaXplZCk7CisJYmNtNDN4eF9sb2NrX25vaXJxKGJjbSk7CiAKIAlzd2l0Y2ggKGJjbTQzeHhfY3VycmVudF9yYWRpbyhiY20pLT5pbnRlcmZtb2RlKSB7CiAJY2FzZSBCQ000M3h4X1JBRElPX0lOVEVSRk1PREVfTk9ORToKQEAgLTE5NSw3ICsxOTMsNyBAQAogCX0KIAllcnIgPSAwOwogCi0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfbm9pcnEoYmNtKTsKIAogCXJldHVybiBlcnIgPyBlcnIgOiBjb3VudDsKIApAQCAtMjMxLDE2ICsyMjksMTUgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7Ci0JYXNzZXJ0KGJjbS0+aW5pdGlhbGl6ZWQpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJZXJyID0gYmNtNDN4eF9yYWRpb19zZXRfaW50ZXJmZXJlbmNlX21pdGlnYXRpb24oYmNtLCBtb2RlKTsKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX0VSUiBQRlggIkludGVyZmVyZW5jZSBNaXRpZ2F0aW9uIG5vdCAiCiAJCQkJICAgICJzdXBwb3J0ZWQgYnkgZGV2aWNlXG4iKTsKIAl9Ci0KLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCW1taW93YigpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7CiB9CkBAIC0yNTQsMTUgKzI1MSwxMyBAQAogCQkJCQkgIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBkZXZfdG9fYmNtKGRldik7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgZXJyOwogCXNzaXplX3QgY291bnQ7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpCiAJCXJldHVybiAtRVBFUk07CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7Ci0JYXNzZXJ0KGJjbS0+aW5pdGlhbGl6ZWQpOworCWJjbTQzeHhfbG9ja19ub2lycShiY20pOwogCiAJaWYgKGJjbS0+c2hvcnRfcHJlYW1ibGUpCiAJCWNvdW50ID0gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIxIChTaG9ydCBQcmVhbWJsZSBlbmFibGVkKVxuIik7CkBAIC0yNzAsNyArMjY1LDcgQEAKIAkJY291bnQgPSBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIjAgKFNob3J0IFByZWFtYmxlIGRpc2FibGVkKVxuIik7CiAKIAllcnIgPSAwOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX25vaXJxKGJjbSk7CiAKIAlyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7CiB9CkBAIC0yOTAsMTMgKzI4NSwxMiBAQAogCXZhbHVlID0gZ2V0X2Jvb2xlYW4oYnVmLCBjb3VudCk7CiAJaWYgKHZhbHVlIDwgMCkKIAkJcmV0dXJuIHZhbHVlOwotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKLQlhc3NlcnQoYmNtLT5pbml0aWFsaXplZCk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAliY20tPnNob3J0X3ByZWFtYmxlID0gISF2YWx1ZTsKIAogCWVyciA9IDA7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnIgPyBlcnIgOiBjb3VudDsKIH0KQEAgLTMxMCw3ICszMDQsNyBAQAogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZiY20tPnBjaV9kZXYtPmRldjsKIAlpbnQgZXJyOwogCi0JYXNzZXJ0KGJjbS0+aW5pdGlhbGl6ZWQpOworCWFzc2VydChiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCk7CiAKIAllcnIgPSBkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmZGV2X2F0dHJfc3Byb20pOwogCWlmIChlcnIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfd3guYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF93eC5jCmluZGV4IGI0NTA2MzkuLmMzNWNiM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF93eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF93eC5jCkBAIC01NSwxMyArNTUsMTMgQEAKIAkJCSAgICAgICBjaGFyICpleHRyYSkKIHsKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBiY200M3h4X3ByaXYobmV0X2Rldik7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgaTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBiY200M3h4X3BoeWluZm8gKnBoeTsKIAljaGFyIHN1ZmZpeFs3XSA9IHsgMCB9OwogCWludCBoYXZlX2EgPSAwLCBoYXZlX2IgPSAwLCBoYXZlX2cgPSAwOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCWZvciAoaSA9IDA7IGkgPCBiY20tPm5yXzgwMjExX2F2YWlsYWJsZTsgaSsrKSB7CiAJCXBoeSA9ICYoYmNtLT5jb3JlXzgwMjExX2V4dFtpXS5waHkpOwogCQlzd2l0Y2ggKHBoeS0+dHlwZSkgewpAQCAtNzcsNyArNzcsNyBAQAogCQkJYXNzZXJ0KDApOwogCQl9CiAJfQotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlpID0gMDsKIAlpZiAoaGF2ZV9hKSB7CkBAIC0xMTEsNyArMTExLDcgQEAKIAlpbnQgZnJlcTsKIAlpbnQgZXJyID0gLUVJTlZBTDsKIAotCWJjbTQzeHhfbG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCWlmICgoZGF0YS0+ZnJlcS5tID49IDApICYmIChkYXRhLT5mcmVxLm0gPD0gMTAwMCkpIHsKIAkJY2hhbm5lbCA9IGRhdGEtPmZyZXEubTsKIAkJZnJlcSA9IGJjbTQzeHhfY2hhbm5lbF90b19mcmVxKGJjbSwgY2hhbm5lbCk7CkBAIC0xMjEsNyArMTIxLDcgQEAKIAl9CiAJaWYgKCFiY200M3h4X2lzX3ZhbGlkX2NoYW5uZWwoYmNtLCBjaGFubmVsKSkKIAkJZ290byBvdXRfdW5sb2NrOwotCWlmIChiY20tPmluaXRpYWxpemVkKSB7CisJaWYgKGJjbTQzeHhfc3RhdHVzKGJjbSkgPT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKSB7CiAJCS8vaWVlZTgwMjExc29mdG1hY19kaXNhc3NvYyhzb2Z0bWFjLCAkUkVBU09OKTsKIAkJYmNtNDN4eF9tYWNfc3VzcGVuZChiY20pOwogCQllcnIgPSBiY200M3h4X3JhZGlvX3NlbGVjdGNoYW5uZWwoYmNtLCBjaGFubmVsLCAwKTsKQEAgLTEzMSw3ICsxMzEsNyBAQAogCQllcnIgPSAwOwogCX0KIG91dF91bmxvY2s6Ci0JYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTE0NywxMSArMTQ3LDEwIEBACiAJaW50IGVyciA9IC1FTk9ERVY7CiAJdTE2IGNoYW5uZWw7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJcmFkaW8gPSBiY200M3h4X2N1cnJlbnRfcmFkaW8oYmNtKTsKIAljaGFubmVsID0gcmFkaW8tPmNoYW5uZWw7CiAJaWYgKGNoYW5uZWwgPT0gMHhGRikgewotCQlhc3NlcnQoIWJjbS0+aW5pdGlhbGl6ZWQpOwogCQljaGFubmVsID0gcmFkaW8tPmluaXRpYWxfY2hhbm5lbDsKIAkJaWYgKGNoYW5uZWwgPT0gMHhGRikKIAkJCWdvdG8gb3V0X3VubG9jazsKQEAgLTE2Myw3ICsxNjIsNyBAQAogCiAJZXJyID0gMDsKIG91dF91bmxvY2s6Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC0xODEsMTMgKzE4MCwxMyBAQAogCWlmIChtb2RlID09IElXX01PREVfQVVUTykKIAkJbW9kZSA9IEJDTTQzeHhfSU5JVElBTF9JV01PREU7CiAKLQliY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKTsKLQlpZiAoYmNtLT5pbml0aWFsaXplZCkgeworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOworCWlmIChiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkgewogCQlpZiAoYmNtLT5pZWVlLT5pd19tb2RlICE9IG1vZGUpCiAJCQliY200M3h4X3NldF9pd21vZGUoYmNtLCBtb2RlKTsKIAl9IGVsc2UKIAkJYmNtLT5pZWVlLT5pd19tb2RlID0gbW9kZTsKLQliY200M3h4X3VubG9ja19tbWlvKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIwMCw5ICsxOTksOSBAQAogCXN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSA9IGJjbTQzeHhfcHJpdihuZXRfZGV2KTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCWRhdGEtPm1vZGUgPSBiY20tPmllZWUtPml3X21vZGU7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjU1LDcgKzI1NCw3IEBACiAJCQkgIElXX0VOQ19DQVBBX0NJUEhFUl9US0lQIHwKIAkJCSAgSVdfRU5DX0NBUEFfQ0lQSEVSX0NDTVA7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJcGh5ID0gYmNtNDN4eF9jdXJyZW50X3BoeShiY20pOwogCiAJcmFuZ2UtPm51bV9iaXRyYXRlcyA9IDA7CkBAIC0zMDIsNyArMzAxLDcgQEAKIAl9CiAJcmFuZ2UtPm51bV9mcmVxdWVuY3kgPSBqOwogCi0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzEzLDE0ICszMTIsMTMgQEAKIAkJCSAgICAgICBjaGFyICpleHRyYSkKIHsKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBiY200M3h4X3ByaXYobmV0X2Rldik7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzaXplX3QgbGVuOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19ub2lycShiY20pOwogCWxlbiA9ICBtaW4oKHNpemVfdClkYXRhLT5kYXRhLmxlbmd0aCwgKHNpemVfdClJV19FU1NJRF9NQVhfU0laRSk7CiAJbWVtY3B5KGJjbS0+bmljaywgZXh0cmEsIGxlbik7CiAJYmNtLT5uaWNrW2xlbl0gPSAnXDAnOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX25vaXJxKGJjbSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTMzMSwxNSArMzI5LDE0IEBACiAJCQkgICAgICAgY2hhciAqZXh0cmEpCiB7CiAJc3RydWN0IGJjbTQzeHhfcHJpdmF0ZSAqYmNtID0gYmNtNDN4eF9wcml2KG5ldF9kZXYpOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc2l6ZV90IGxlbjsKIAotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKKwliY200M3h4X2xvY2tfbm9pcnEoYmNtKTsKIAlsZW4gPSBzdHJsZW4oYmNtLT5uaWNrKSArIDE7CiAJbWVtY3B5KGV4dHJhLCBiY20tPm5pY2ssIGxlbik7CiAJZGF0YS0+ZGF0YS5sZW5ndGggPSAoX191MTYpbGVuOwogCWRhdGEtPmRhdGEuZmxhZ3MgPSAxOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX25vaXJxKGJjbSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM1Myw3ICszNTAsNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGVyciA9IC1FSU5WQUw7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJaWYgKGRhdGEtPnJ0cy5kaXNhYmxlZCkgewogCQliY20tPnJ0c190aHJlc2hvbGQgPSBCQ000M3h4X01BWF9SVFNfVEhSRVNIT0xEOwogCQllcnIgPSAwOwpAQCAtMzY0LDcgKzM2MSw3IEBACiAJCQllcnIgPSAwOwogCQl9CiAJfQotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlyZXR1cm4gZXJyOwogfQpAQCAtMzc3LDExICszNzQsMTEgQEAKIAlzdHJ1Y3QgYmNtNDN4eF9wcml2YXRlICpiY20gPSBiY200M3h4X3ByaXYobmV0X2Rldik7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWJjbTQzeHhfbG9jayhiY20sIGZsYWdzKTsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAlkYXRhLT5ydHMudmFsdWUgPSBiY20tPnJ0c190aHJlc2hvbGQ7CiAJZGF0YS0+cnRzLmZpeGVkID0gMDsKIAlkYXRhLT5ydHMuZGlzYWJsZWQgPSAoYmNtLT5ydHNfdGhyZXNob2xkID09IEJDTTQzeHhfTUFYX1JUU19USFJFU0hPTEQpOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM5NSw3ICszOTIsNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGVyciA9IC1FSU5WQUw7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJaWYgKGRhdGEtPmZyYWcuZGlzYWJsZWQpIHsKIAkJYmNtLT5pZWVlLT5mdHMgPSBNQVhfRlJBR19USFJFU0hPTEQ7CiAJCWVyciA9IDA7CkBAIC00MDYsNyArNDAzLDcgQEAKIAkJCWVyciA9IDA7CiAJCX0KIAl9Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC00MTksMTEgKzQxNiwxMSBAQAogCXN0cnVjdCBiY200M3h4X3ByaXZhdGUgKmJjbSA9IGJjbTQzeHhfcHJpdihuZXRfZGV2KTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCWRhdGEtPmZyYWcudmFsdWUgPSBiY20tPmllZWUtPmZ0czsKIAlkYXRhLT5mcmFnLmZpeGVkID0gMDsKIAlkYXRhLT5mcmFnLmRpc2FibGVkID0gKGJjbS0+aWVlZS0+ZnRzID09IE1BWF9GUkFHX1RIUkVTSE9MRCk7Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDQ1LDggKzQ0Miw4IEBACiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CiAKLQliY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKTsKLQlpZiAoIWJjbS0+aW5pdGlhbGl6ZWQpCisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CisJaWYgKGJjbTQzeHhfc3RhdHVzKGJjbSkgIT0gQkNNNDN4eF9TVEFUX0lOSVRJQUxJWkVEKQogCQlnb3RvIG91dF91bmxvY2s7CiAJcmFkaW8gPSBiY200M3h4X2N1cnJlbnRfcmFkaW8oYmNtKTsKIAlwaHkgPSBiY200M3h4X2N1cnJlbnRfcGh5KGJjbSk7CkBAIC00NjksNyArNDY2LDcgQEAKIAllcnIgPSAwOwogCiBvdXRfdW5sb2NrOgotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC00ODQsOCArNDgxLDggQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBlcnIgPSAtRU5PREVWOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOwotCWlmICghYmNtLT5pbml0aWFsaXplZCkKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKKwlpZiAoYmNtNDN4eF9zdGF0dXMoYmNtKSAhPSBCQ000M3h4X1NUQVRfSU5JVElBTElaRUQpCiAJCWdvdG8gb3V0X3VubG9jazsKIAlyYWRpbyA9IGJjbTQzeHhfY3VycmVudF9yYWRpbyhiY20pOwogCS8qIGRlc2lyZWQgZEJtIHZhbHVlIGlzIGluIFE1LjIgKi8KQEAgLTQ5Niw3ICs0OTMsNyBAQAogCiAJZXJyID0gMDsKIG91dF91bmxvY2s6Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiBlcnI7CiB9CkBAIC01ODMsOCArNTgwLDggQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7Ci0JaWYgKGJjbS0+aW5pdGlhbGl6ZWQpIHsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKKwlpZiAoYmNtNDN4eF9zdGF0dXMoYmNtKSA9PSBCQ000M3h4X1NUQVRfSU5JVElBTElaRUQpIHsKIAkJZXJyID0gYmNtNDN4eF9yYWRpb19zZXRfaW50ZXJmZXJlbmNlX21pdGlnYXRpb24oYmNtLCBtb2RlKTsKIAkJaWYgKGVycikgewogCQkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiSW50ZXJmZXJlbmNlIE1pdGlnYXRpb24gbm90ICIKQEAgLTU5OCw3ICs1OTUsNyBAQAogCQl9IGVsc2UKIAkJCWJjbTQzeHhfY3VycmVudF9yYWRpbyhiY20pLT5pbnRlcmZtb2RlID0gbW9kZTsKIAl9Ci0JYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJcmV0dXJuIGVycjsKIH0KQEAgLTYxMiw5ICs2MDksOSBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IG1vZGU7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJbW9kZSA9IGJjbTQzeHhfY3VycmVudF9yYWRpbyhiY20pLT5pbnRlcmZtb2RlOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlzd2l0Y2ggKG1vZGUpIHsKIAljYXNlIEJDTTQzeHhfUkFESU9fSU5URVJGTU9ERV9OT05FOgpAQCAtNjQ0LDkgKzY0MSw5IEBACiAJaW50IG9uOwogCiAJb24gPSAqKChpbnQgKilleHRyYSk7Ci0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCWJjbS0+c2hvcnRfcHJlYW1ibGUgPSAhIW9uOwotCWJjbTQzeHhfdW5sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfdW5sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTY2MCw5ICs2NTcsOSBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IG9uOwogCi0JYmNtNDN4eF9sb2NrKGJjbSwgZmxhZ3MpOworCWJjbTQzeHhfbG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCW9uID0gYmNtLT5zaG9ydF9wcmVhbWJsZTsKLQliY200M3h4X3VubG9jayhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJaWYgKG9uKQogCQlzdHJuY3B5KGV4dHJhLCAiMSAoU2hvcnQgUHJlYW1ibGUgZW5hYmxlZCkiLCBNQVhfV1hfU1RSSU5HKTsKQEAgLTY4NCwxMSArNjgxLDExIEBACiAJCiAJb24gPSAqKChpbnQgKilleHRyYSk7CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJYmNtLT5pZWVlLT5ob3N0X2VuY3J5cHQgPSAhIW9uOwogCWJjbS0+aWVlZS0+aG9zdF9kZWNyeXB0ID0gISFvbjsKIAliY20tPmllZWUtPmhvc3RfYnVpbGRfaXYgPSAhb247Ci0JYmNtNDN4eF91bmxvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQpAQCAtNzAyLDkgKzY5OSw5IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgb247CiAKLQliY200M3h4X2xvY2soYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJb24gPSBiY20tPmllZWUtPmhvc3RfZW5jcnlwdDsKLQliY200M3h4X3VubG9jayhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogCiAJaWYgKG9uKQogCQlzdHJuY3B5KGV4dHJhLCAiMSAoU1cgZW5jcnlwdGlvbiBlbmFibGVkKSAiLCBNQVhfV1hfU1RSSU5HKTsKQEAgLTc2NywxMSArNzY0LDExIEBACiAJaWYgKCFzcHJvbSkKIAkJZ290byBvdXQ7CiAKLQliY200M3h4X2xvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X2xvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAllcnIgPSAtRU5PREVWOwotCWlmIChiY20tPmluaXRpYWxpemVkKQorCWlmIChiY200M3h4X3N0YXR1cyhiY20pID09IEJDTTQzeHhfU1RBVF9JTklUSUFMSVpFRCkKIAkJZXJyID0gYmNtNDN4eF9zcHJvbV9yZWFkKGJjbSwgc3Byb20pOwotCWJjbTQzeHhfdW5sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF91bmxvY2tfaXJxc2FmZShiY20sIGZsYWdzKTsKIAlpZiAoIWVycikKIAkJZGF0YS0+ZGF0YS5sZW5ndGggPSBzcHJvbTJoZXgoc3Byb20sIGV4dHJhKTsKIAlrZnJlZShzcHJvbSk7CkBAIC04MTIsMTEgKzgwOSwxMSBAQAogCWlmIChlcnIpCiAJCWdvdG8gb3V0X2tmcmVlOwogCi0JYmNtNDN4eF9sb2NrX21taW8oYmNtLCBmbGFncyk7CisJYmNtNDN4eF9sb2NrX2lycXNhZmUoYmNtLCBmbGFncyk7CiAJZXJyID0gLUVOT0RFVjsKLQlpZiAoYmNtLT5pbml0aWFsaXplZCkKKwlpZiAoYmNtNDN4eF9zdGF0dXMoYmNtKSA9PSBCQ000M3h4X1NUQVRfSU5JVElBTElaRUQpCiAJCWVyciA9IGJjbTQzeHhfc3Byb21fd3JpdGUoYmNtLCBzcHJvbSk7Ci0JYmNtNDN4eF91bmxvY2tfbW1pbyhiY20sIGZsYWdzKTsKKwliY200M3h4X3VubG9ja19pcnFzYWZlKGJjbSwgZmxhZ3MpOwogb3V0X2tmcmVlOgogCWtmcmVlKHNwcm9tKTsKIG91dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuYwppbmRleCAzOWY4MmYyLi4wODFhODk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MjIwMC5jCkBAIC01MzMsNyArNTMzLDcgQEAKIAlpcHdfd3JpdGUzMihwcml2LCByZWcsIGlwd19yZWFkMzIocHJpdiwgcmVnKSAmIH5tYXNrKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGlwd19lbmFibGVfaW50ZXJydXB0cyhzdHJ1Y3QgaXB3X3ByaXYgKnByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgX19pcHdfZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IGlwd19wcml2ICpwcml2KQogewogCWlmIChwcml2LT5zdGF0dXMgJiBTVEFUVVNfSU5UX0VOQUJMRUQpCiAJCXJldHVybjsKQEAgLTU0MSw3ICs1NDEsNyBAQAogCWlwd193cml0ZTMyKHByaXYsIElQV19JTlRBX01BU0tfUiwgSVBXX0lOVEFfTUFTS19BTEwpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaXB3X2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgaXB3X3ByaXYgKnByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgX19pcHdfZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBpcHdfcHJpdiAqcHJpdikKIHsKIAlpZiAoIShwcml2LT5zdGF0dXMgJiBTVEFUVVNfSU5UX0VOQUJMRUQpKQogCQlyZXR1cm47CkBAIC01NDksNiArNTQ5LDI0IEBACiAJaXB3X3dyaXRlMzIocHJpdiwgSVBXX0lOVEFfTUFTS19SLCB+SVBXX0lOVEFfTUFTS19BTEwpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgaXB3X2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBpcHdfcHJpdiAqcHJpdikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmlycV9sb2NrLCBmbGFncyk7CisJX19pcHdfZW5hYmxlX2ludGVycnVwdHMocHJpdik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGlwd19kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGlwd19wcml2ICpwcml2KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKKwlfX2lwd19kaXNhYmxlX2ludGVycnVwdHMocHJpdik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKK30KKwogI2lmZGVmIENPTkZJR19JUFcyMjAwX0RFQlVHCiBzdGF0aWMgY2hhciAqaXB3X2Vycm9yX2Rlc2ModTMyIHZhbCkKIHsKQEAgLTE4NTYsNyArMTg3NCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmMgPSAwOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKIAogCWludGEgPSBpcHdfcmVhZDMyKHByaXYsIElQV19JTlRBX1JXKTsKIAlpbnRhX21hc2sgPSBpcHdfcmVhZDMyKHByaXYsIElQV19JTlRBX01BU0tfUik7CkBAIC0xODY1LDYgKzE4ODMsMTAgQEAKIAkvKiBBZGQgYW55IGNhY2hlZCBJTlRBIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZCAqLwogCWludGEgfD0gcHJpdi0+aXNyX2ludGE7CiAKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5pcnFfbG9jaywgZmxhZ3MpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwogCS8qIGhhbmRsZSBhbGwgdGhlIGp1c3RpZmljYXRpb25zIGZvciB0aGUgaW50ZXJydXB0ICovCiAJaWYgKGludGEgJiBJUFdfSU5UQV9CSVRfUlhfVFJBTlNGRVIpIHsKIAkJaXB3X3J4KHByaXYpOwpAQCAtMTk5MywxMCArMjAxNSwxMCBAQAogCQlJUFdfRVJST1IoIlVuaGFuZGxlZCBJTlRBIGJpdHMgMHglMDh4XG4iLCBpbnRhICYgfmhhbmRsZWQpOwogCX0KIAorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwogCS8qIGVuYWJsZSBhbGwgaW50ZXJydXB0cyAqLwogCWlwd19lbmFibGVfaW50ZXJydXB0cyhwcml2KTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKIH0KIAogI2RlZmluZSBJUFdfQ01EKHgpIGNhc2UgSVBXX0NNRF8gIyMgeCA6IHJldHVybiAjeApAQCAtMTA0NjAsNyArMTA0ODIsNyBAQAogCWlmICghcHJpdikKIAkJcmV0dXJuIElSUV9OT05FOwogCi0Jc3Bpbl9sb2NrKCZwcml2LT5sb2NrKTsKKwlzcGluX2xvY2soJnByaXYtPmlycV9sb2NrKTsKIAogCWlmICghKHByaXYtPnN0YXR1cyAmIFNUQVRVU19JTlRfRU5BQkxFRCkpIHsKIAkJLyogU2hhcmVkIElSUSAqLwpAQCAtMTA0ODIsNyArMTA1MDQsNyBAQAogCX0KIAogCS8qIHRlbGwgdGhlIGRldmljZSB0byBzdG9wIHNlbmRpbmcgaW50ZXJydXB0cyAqLwotCWlwd19kaXNhYmxlX2ludGVycnVwdHMocHJpdik7CisJX19pcHdfZGlzYWJsZV9pbnRlcnJ1cHRzKHByaXYpOwogCiAJLyogYWNrIGN1cnJlbnQgaW50ZXJydXB0cyAqLwogCWludGEgJj0gKElQV19JTlRBX01BU0tfQUxMICYgaW50YV9tYXNrKTsKQEAgLTEwNDkzLDExICsxMDUxNSwxMSBAQAogCiAJdGFza2xldF9zY2hlZHVsZSgmcHJpdi0+aXJxX3Rhc2tsZXQpOwogCi0Jc3Bpbl91bmxvY2soJnByaXYtPmxvY2spOworCXNwaW5fdW5sb2NrKCZwcml2LT5pcnFfbG9jayk7CiAKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiAgICAgICBub25lOgotCXNwaW5fdW5sb2NrKCZwcml2LT5sb2NrKTsKKwlzcGluX3VubG9jaygmcHJpdi0+aXJxX2xvY2spOwogCXJldHVybiBJUlFfTk9ORTsKIH0KIApAQCAtMTE0NzcsNiArMTE0OTksNyBAQAogI2lmZGVmIENPTkZJR19JUFcyMjAwX0RFQlVHCiAJaXB3X2RlYnVnX2xldmVsID0gZGVidWc7CiAjZW5kaWYKKwlzcGluX2xvY2tfaW5pdCgmcHJpdi0+aXJxX2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZwcml2LT5sb2NrKTsKIAlmb3IgKGkgPSAwOyBpIDwgSVBXX0lCU1NfTUFDX0hBU0hfU0laRTsgaSsrKQogCQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+aWJzc19tYWNfaGFzaFtpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmgKaW5kZXggNjA0NGMwYi4uZWExMmFkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MjIwMC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuaApAQCAtMTE3Myw2ICsxMTczLDcgQEAKIAlzdHJ1Y3QgaWVlZTgwMjExX2RldmljZSAqaWVlZTsKIAogCXNwaW5sb2NrX3QgbG9jazsKKwlzcGlubG9ja190IGlycV9sb2NrOwogCXN0cnVjdCBtdXRleCBtdXRleDsKIAogCS8qIGJhc2ljIHBjaS1uZXR3b3JrIGRyaXZlciBzdHVmZiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmF5X2NzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXlfY3MuYwppbmRleCA4NzllYjQyLi5hOTE1ZmU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXlfY3MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXlfY3MuYwpAQCAtOTI0LDggKzkyNCw3IEBACiAKICAgICBpZiAobGVuZ3RoIDwgRVRIX1pMRU4pCiAgICAgewotICAgIAlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0gICAgCWlmIChza2IgPT0gTlVMTCkKKyAgICAJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKICAgICAJCXJldHVybiAwOwogICAgIAlsZW5ndGggPSBFVEhfWkxFTjsKICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy93YXZlbGFuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93YXZlbGFuLmMKaW5kZXggZGFkZTRiOS4uNWI2OWJlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2F2ZWxhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dhdmVsYW4uYwpAQCAtMTY5NSw4ICsxNjk1LDggQEAKIAkJLyogTG9vayBpbiB0aGUgdGFibGUgaWYgdGhlIGZyZXF1ZW5jeSBpcyBhbGxvd2VkICovCiAJCWlmICh0YWJsZVs5IC0gKGZyZXEgLyAxNildICYgKDEgPDwgKGZyZXEgJSAxNikpKSB7CiAJCQkvKiBDb21wdXRlIGFwcHJveGltYXRlIGNoYW5uZWwgbnVtYmVyICovCi0JCQl3aGlsZSAoKCgoY2hhbm5lbF9iYW5kc1tjXSA+PiAxKSAtIDI0KSA8IGZyZXEpICYmCi0JCQkgICAgICAgKGMgPCBORUxTKGNoYW5uZWxfYmFuZHMpKSkKKwkJCXdoaWxlICgoYyA8IE5FTFMoY2hhbm5lbF9iYW5kcykpICYmCisJCQkJKCgoY2hhbm5lbF9iYW5kc1tjXSA+PiAxKSAtIDI0KSA8IGZyZXEpKSAKIAkJCQljKys7CiAJCQlsaXN0W2ldLmkgPSBjOwkvKiBTZXQgdGhlIGxpc3QgaW5kZXggKi8KIApAQCAtMjkwMyw2ICsyOTAzLDcgQEAKIHsKIAluZXRfbG9jYWwgKmxwID0gKG5ldF9sb2NhbCAqKSBkZXYtPnByaXY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwljaGFyIGRhdGFbRVRIX1pMRU5dOwogCiAjaWZkZWYgREVCVUdfVFhfVFJBQ0UKIAlwcmludGsoS0VSTl9ERUJVRyAiJXM6IC0+d2F2ZWxhbl9wYWNrZXRfeG1pdCgweCVYKVxuIiwgZGV2LT5uYW1lLApAQCAtMjkzNywxNSArMjkzOCwxNiBAQAogCSAqIGFibGUgdG8gZGV0ZWN0IGNvbGxpc2lvbnMsIHRoZXJlZm9yZSBpbiB0aGVvcnkgd2UgZG9uJ3QgcmVhbGx5CiAJICogbmVlZCB0byBwYWQuIEplYW4gSUkgKi8KIAlpZiAoc2tiLT5sZW4gPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKLQkJCXJldHVybiAwOworCQltZW1zZXQoZGF0YSwgMCwgRVRIX1pMRU4pOworCQltZW1jcHkoZGF0YSwgc2tiLT5kYXRhLCBza2ItPmxlbik7CisJCS8qIFdyaXRlIHBhY2tldCBvbiB0aGUgY2FyZCAqLworCQlpZih3dl9wYWNrZXRfd3JpdGUoZGV2LCBkYXRhLCBFVEhfWkxFTikpCisJCQlyZXR1cm4gMTsJLyogV2UgZmFpbGVkICovCiAJfQotCi0JLyogV3JpdGUgcGFja2V0IG9uIHRoZSBjYXJkICovCi0JaWYod3ZfcGFja2V0X3dyaXRlKGRldiwgc2tiLT5kYXRhLCBza2ItPmxlbikpCisJZWxzZSBpZih3dl9wYWNrZXRfd3JpdGUoZGV2LCBza2ItPmRhdGEsIHNrYi0+bGVuKSkKIAkJcmV0dXJuIDE7CS8qIFdlIGZhaWxlZCAqLwogCisKIAlkZXZfa2ZyZWVfc2tiKHNrYik7CiAKICNpZmRlZiBERUJVR19UWF9UUkFDRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2F2ZWxhbl9jcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2F2ZWxhbl9jcy5jCmluZGV4IGY3NzI0ZWIuLjU2MTI1MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dhdmVsYW5fY3MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93YXZlbGFuX2NzLmMKQEAgLTMxOTQsMTEgKzMxOTQsOCBAQAogCSAqIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBFdGhlcm5ldCBzcGVjaWZpYyByZXF1aXJlbWVudCBvZiBiZWVpbmcKIAkgKiBhYmxlIHRvIGRldGVjdCBjb2xsaXNpb25zLCB0aGVyZWZvcmUgaW4gdGhlb3J5IHdlIGRvbid0IHJlYWxseQogCSAqIG5lZWQgdG8gcGFkLiBKZWFuIElJICovCi0JaWYgKHNrYi0+bGVuIDwgRVRIX1pMRU4pIHsKLQkJc2tiID0gc2tiX3BhZHRvKHNrYiwgRVRIX1pMRU4pOwotCQlpZiAoc2tiID09IE5VTEwpCi0JCQlyZXR1cm4gMDsKLQl9CisJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKKwkJcmV0dXJuIDA7CiAKICAgd3ZfcGFja2V0X3dyaXRlKGRldiwgc2tiLT5kYXRhLCBza2ItPmxlbik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3llbGxvd2Zpbi5jIGIvZHJpdmVycy9uZXQveWVsbG93ZmluLmMKaW5kZXggZmQwZjQzYi4uZWNlYzhlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveWVsbG93ZmluLmMKKysrIGIvZHJpdmVycy9uZXQveWVsbG93ZmluLmMKQEAgLTg2MiwxMyArODYyLDExIEBACiAJCS8qIEZpeCBHWCBjaGlwc2V0IGVycmF0YS4gKi8KIAkJaWYgKGNhY2hlbGluZV9lbmQgPiAyNCAgfHwgY2FjaGVsaW5lX2VuZCA9PSAwKSB7CiAJCQlsZW4gPSBza2ItPmxlbiArIDMyIC0gY2FjaGVsaW5lX2VuZCArIDE7Ci0JCQlpZiAobGVuICE9IHNrYi0+bGVuKQotCQkJCXNrYiA9IHNrYl9wYWR0byhza2IsIGxlbik7Ci0JCX0KLQkJaWYgKHNrYiA9PSBOVUxMKSB7Ci0JCQl5cC0+dHhfc2tidWZmW2VudHJ5XSA9IE5VTEw7Ci0JCQluZXRpZl93YWtlX3F1ZXVlKGRldik7Ci0JCQlyZXR1cm4gMDsKKwkJCWlmIChza2JfcGFkdG8oc2tiLCBsZW4pKSB7CisJCQkJeXAtPnR4X3NrYnVmZltlbnRyeV0gPSBOVUxMOworCQkJCW5ldGlmX3dha2VfcXVldWUoZGV2KTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KIAkJfQogCX0KIAl5cC0+dHhfc2tidWZmW2VudHJ5XSA9IHNrYjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3puZXQuYyBiL2RyaXZlcnMvbmV0L3puZXQuYwppbmRleCAzYWMwNDdiLi5hN2MwODlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC96bmV0LmMKKysrIGIvZHJpdmVycy9uZXQvem5ldC5jCkBAIC01NDQsOCArNTQ0LDcgQEAKIAkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBaTmV0X3NlbmRfcGFja2V0LlxuIiwgZGV2LT5uYW1lKTsKIAogCWlmIChsZW5ndGggPCBFVEhfWkxFTikgewotCQlza2IgPSBza2JfcGFkdG8oc2tiLCBFVEhfWkxFTik7Ci0JCWlmIChza2IgPT0gTlVMTCkKKwkJaWYgKHNrYl9wYWR0byhza2IsIEVUSF9aTEVOKSkKIAkJCXJldHVybiAwOwogCQlsZW5ndGggPSBFVEhfWkxFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL29wcm9maWxlL29wcm9maWxlZnMuYyBiL2RyaXZlcnMvb3Byb2ZpbGUvb3Byb2ZpbGVmcy5jCmluZGV4IGI2MmRhOWIuLjcxYzJkYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb3Byb2ZpbGUvb3Byb2ZpbGVmcy5jCisrKyBiL2RyaXZlcnMvb3Byb2ZpbGUvb3Byb2ZpbGVmcy5jCkBAIC0yNzIsMTAgKzI3MiwxMCBAQAogfQogCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm9wcm9maWxlZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG9wcm9maWxlZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBvcHJvZmlsZWZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBvcHJvZmlsZWZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJwb3J0L0tjb25maWcgYi9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZwppbmRleCA2Yzg0NTJlLi40ZDhkYzI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZworKysgYi9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZwpAQCAtODUsMTEgKzg1LDYgQEAKIGNvbmZpZyBQQVJQT1JUX05PVF9QQwogCWJvb2wKIAotY29uZmlnIFBBUlBPUlRfQVJDCi0JdHJpc3RhdGUgIkFyY2hpbWVkZXMgaGFyZHdhcmUiCi0JZGVwZW5kcyBvbiBBUk0gJiYgUEFSUE9SVAotCXNlbGVjdCBQQVJQT1JUX05PVF9QQwotCiBjb25maWcgUEFSUE9SVF9JUDMyCiAJdHJpc3RhdGUgIlNHSSBJUDMyIGJ1aWx0aW4gcG9ydCAoRVhQRVJJTUVOVEFMKSIKIAlkZXBlbmRzIG9uIFNHSV9JUDMyICYmIFBBUlBPUlQgJiYgRVhQRVJJTUVOVEFMCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9hcmMuYyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X2FyYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzViYjRmLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X2FyYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qIExvdy1sZXZlbCBwYXJhbGxlbCBwb3J0IHJvdXRpbmVzIGZvciBBcmNoaW1lZGVzIG9uYm9hcmQgaGFyZHdhcmUKLSAqCi0gKiBBdXRob3I6IFBoaWwgQmx1bmRlbGwgPHBoaWxiQGdudS5vcmc+Ci0gKi8KLQotLyogVGhpcyBkcml2ZXIgaXMgZm9yIHRoZSBwYXJhbGxlbCBwb3J0IGhhcmR3YXJlIGZvdW5kIG9uIEFjb3JuJ3Mgb2xkCi0gKiByYW5nZSBvZiBBcmNoaW1lZGVzIG1hY2hpbmVzLiAgVGhlIEE1MDAwIGFuZCBuZXdlciBzeXN0ZW1zIGhhdmUgUEMtc3R5bGUKLSAqIEkvTyBoYXJkd2FyZSBhbmQgc2hvdWxkIHVzZSB0aGUgcGFycG9ydF9wYyBkcml2ZXIgaW5zdGVhZC4KLSAqCi0gKiBUaGUgQWNvcm4gcHJpbnRlciBwb3J0IGhhcmR3YXJlIGlzIHZlcnkgc2ltcGxlLiAgVGhlcmUgaXMgYSBzaW5nbGUgOC1iaXQKLSAqIHdyaXRlLW9ubHkgbGF0Y2ggZm9yIHRoZSBkYXRhIHBvcnQgYW5kIGNvbnRyb2wvc3RhdHVzIGJpdHMgYXJlIGhhbmRsZWQKLSAqIHdpdGggdmFyaW91cyBhdXhpbGxpYXJ5IGlucHV0IGFuZCBvdXRwdXQgbGluZXMuICBUaGUgcG9ydCBpcyBub3QKLSAqIGJpZGlyZWN0aW9uYWwsIGRvZXMgbm90IHN1cHBvcnQgYW55IG1vZGVzIG90aGVyIHRoYW4gU1BQLCBhbmQgaGFzIG9ubHkKLSAqIGEgc3Vic2V0IG9mIHRoZSBzdGFuZGFyZCBwcmludGVyIGNvbnRyb2wgbGluZXMgY29ubmVjdGVkLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC90aHJlYWRzLmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgotI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+Ci0KLSNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0jaW5jbHVkZSA8YXNtL2FyY2gvb2xkbGF0Y2hlcy5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL2lycXMuaD4KLQotI2RlZmluZSBEQVRBX0FERFJFU1MgICAgMHgzMzUwMDEwCi0KLS8qIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgYWJvdmUgYW5kIG9ubHkgdXNlZCBmb3IgcmVxdWVzdF9yZWdpb24uICovCi0jZGVmaW5lIFBPUlRfQkFTRSAgICAgICAweDgwMDAwMDAwIHwgKChEQVRBX0FERFJFU1MgLSBJT19CQVNFKSA+PiAyKQotCi0vKiBUaGUgaGFyZHdhcmUgY2FuJ3QgcmVhZCBmcm9tIHRoZSBkYXRhIGxhdGNoLCBzbyB3ZSBtdXN0IHVzZSBhIHNvZnQKLSAgIGNvcHkuICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBkYXRhX2NvcHk7Ci0KLS8qIFRoZXNlIGFyZSBwcmV0dHkgc2ltcGxlLiBXZSBrbm93IHRoZSBpcnEgaXMgbmV2ZXIgc2hhcmVkIGFuZCB0aGUKLSAgIGtlcm5lbCBkb2VzIGFsbCB0aGUgbWFnaWMgdGhhdCdzIHJlcXVpcmVkLiAqLwotc3RhdGljIHZvaWQgYXJjX2VuYWJsZV9pcnEoc3RydWN0IHBhcnBvcnQgKnApCi17Ci0JZW5hYmxlX2lycShwLT5pcnEpOwotfQotCi1zdGF0aWMgdm9pZCBhcmNfZGlzYWJsZV9pcnEoc3RydWN0IHBhcnBvcnQgKnApCi17Ci0JZGlzYWJsZV9pcnEocC0+aXJxKTsKLX0KLQotc3RhdGljIHZvaWQgYXJjX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXBhcnBvcnRfZ2VuZXJpY19pcnEoaXJxLCAoc3RydWN0IHBhcnBvcnQgKikgZGV2X2lkLCByZWdzKTsKLX0KLQotc3RhdGljIHZvaWQgYXJjX3dyaXRlX2RhdGEoc3RydWN0IHBhcnBvcnQgKnAsIHVuc2lnbmVkIGNoYXIgZGF0YSkKLXsKLQlkYXRhX2NvcHkgPSBkYXRhOwotCW91dGJfdChkYXRhLCBEQVRBX0xBVENIKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGNoYXIgYXJjX3JlYWRfZGF0YShzdHJ1Y3QgcGFycG9ydCAqcCkKLXsKLQlyZXR1cm4gZGF0YV9jb3B5OwotfQotCi1zdGF0aWMgc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyBwYXJwb3J0X2FyY19vcHMgPSAKLXsKLQkud3JpdGVfZGF0YQk9IGFyY193cml0ZV9kYXRhLAotCS5yZWFkX2RhdGEJPSBhcmNfcmVhZF9kYXRhLAotCi0JLndyaXRlX2NvbnRyb2wJPSBhcmNfd3JpdGVfY29udHJvbCwKLQkucmVhZF9jb250cm9sCT0gYXJjX3JlYWRfY29udHJvbCwKLQkuZnJvYl9jb250cm9sCT0gYXJjX2Zyb2JfY29udHJvbCwKLQotCS5yZWFkX3N0YXR1cwk9IGFyY19yZWFkX3N0YXR1cywKLQotCS5lbmFibGVfaXJxCT0gYXJjX2VuYWJsZV9pcnEsCi0JLmRpc2FibGVfaXJxCT0gYXJjX2Rpc2FibGVfaXJxLAotCi0JLmRhdGFfZm9yd2FyZAk9IGFyY19kYXRhX2ZvcndhcmQsCi0JLmRhdGFfcmV2ZXJzZQk9IGFyY19kYXRhX3JldmVyc2UsCi0KLQkuaW5pdF9zdGF0ZQk9IGFyY19pbml0X3N0YXRlLAotCS5zYXZlX3N0YXRlCT0gYXJjX3NhdmVfc3RhdGUsCi0JLnJlc3RvcmVfc3RhdGUJPSBhcmNfcmVzdG9yZV9zdGF0ZSwKLQotCS5lcHBfd3JpdGVfZGF0YQk9IHBhcnBvcnRfaWVlZTEyODRfZXBwX3dyaXRlX2RhdGEsCi0JLmVwcF9yZWFkX2RhdGEJPSBwYXJwb3J0X2llZWUxMjg0X2VwcF9yZWFkX2RhdGEsCi0JLmVwcF93cml0ZV9hZGRyCT0gcGFycG9ydF9pZWVlMTI4NF9lcHBfd3JpdGVfYWRkciwKLQkuZXBwX3JlYWRfYWRkcgk9IHBhcnBvcnRfaWVlZTEyODRfZXBwX3JlYWRfYWRkciwKLQotCS5lY3Bfd3JpdGVfZGF0YQk9IHBhcnBvcnRfaWVlZTEyODRfZWNwX3dyaXRlX2RhdGEsCi0JLmVjcF9yZWFkX2RhdGEJPSBwYXJwb3J0X2llZWUxMjg0X2VjcF9yZWFkX2RhdGEsCi0JLmVjcF93cml0ZV9hZGRyCT0gcGFycG9ydF9pZWVlMTI4NF9lY3Bfd3JpdGVfYWRkciwKLQkKLQkuY29tcGF0X3dyaXRlX2RhdGEJPSBwYXJwb3J0X2llZWUxMjg0X3dyaXRlX2NvbXBhdCwKLQkubmliYmxlX3JlYWRfZGF0YQk9IHBhcnBvcnRfaWVlZTEyODRfcmVhZF9uaWJibGUsCi0JLmJ5dGVfcmVhZF9kYXRhCQk9IHBhcnBvcnRfaWVlZTEyODRfcmVhZF9ieXRlLAotCi0JLm93bmVyCQk9IFRISVNfTU9EVUxFLAotfTsKLQotLyogLS0tIEluaXRpYWxpc2F0aW9uIGNvZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RhdGljIGludCBwYXJwb3J0X2FyY19pbml0KHZvaWQpCi17Ci0JLyogQXJjaGltZWRlcyBoYXJkd2FyZSBwcm92aWRlcyBvbmx5IG9uZSBwb3J0LCBhdCBhIGZpeGVkIGFkZHJlc3MgKi8KLQlzdHJ1Y3QgcGFycG9ydCAqcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgcmVzOwotCWNoYXIgKmZha2VfbmFtZSA9ICJwYXJwb3J0IHByb2JlIik7Ci0KLQlyZXMgPSByZXF1ZXN0X3JlZ2lvbihQT1JUX0JBU0UsIDEsIGZha2VfbmFtZSk7Ci0JaWYgKHJlcyA9PSBOVUxMKQotCQlyZXR1cm4gMDsKLQotCXAgPSBwYXJwb3J0X3JlZ2lzdGVyX3BvcnQgKFBPUlRfQkFTRSwgSVJRX1BSSU5URVJBQ0ssCi0JCQkJICAgUEFSUE9SVF9ETUFfTk9ORSwgJnBhcnBvcnRfYXJjX29wcyk7Ci0KLQlpZiAoIXApIHsKLQkJcmVsZWFzZV9yZWdpb24oUE9SVF9CQVNFLCAxKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JcC0+bW9kZXMgPSBQQVJQT1JUX01PREVfQVJDU1BQOwotCXAtPnNpemUgPSAxOwotCXJlbmFtZV9yZWdpb24ocmVzLCBwLT5uYW1lKTsKLQotCXByaW50ayhLRVJOX0lORk8gIiVzOiBBcmNoaW1lZGVzIG9uLWJvYXJkIHBvcnQsIHVzaW5nIGlycSAlZFxuIiwKLQkgICAgICAgcC0+aXJxKTsKLQotCS8qIFRlbGwgdGhlIGhpZ2gtbGV2ZWwgZHJpdmVycyBhYm91dCB0aGUgcG9ydC4gKi8KLQlwYXJwb3J0X2Fubm91bmNlX3BvcnQgKHApOwotCi0JcmV0dXJuIDE7Ci19Ci0KLW1vZHVsZV9pbml0KHBhcnBvcnRfYXJjX2luaXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9NYWtlZmlsZSBiL2RyaXZlcnMvcGNpL01ha2VmaWxlCmluZGV4IDY3MDdkZjkuLmYyZDE1MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcGNpL01ha2VmaWxlCkBAIC0yNiw3ICsyNiwxMSBAQAogb2JqLSQoQ09ORklHX1BQQzY0KSArPSBzZXR1cC1idXMubwogb2JqLSQoQ09ORklHX01JUFMpICs9IHNldHVwLWJ1cy5vIHNldHVwLWlycS5vCiBvYmotJChDT05GSUdfWDg2X1ZJU1dTKSArPSBzZXR1cC1pcnEubwotb2JqLSQoQ09ORklHX1BDSV9NU0kpICs9IG1zaS5vCisKK21zaW9iai15IDo9IG1zaS5vIG1zaS1hcGljLm8KK21zaW9iai0kKENPTkZJR19JQTY0X0dFTkVSSUMpICs9IG1zaS1hbHRpeC5vCittc2lvYmotJChDT05GSUdfSUE2NF9TR0lfU04yKSArPSBtc2ktYWx0aXgubworb2JqLSQoQ09ORklHX1BDSV9NU0kpICs9ICQobXNpb2JqLXkpCiAKICMKICMgQUNQSSBSZWxhdGVkIFBDSSBGVyBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2J1cy5jIGIvZHJpdmVycy9wY2kvYnVzLmMKaW5kZXggZWVkNjdkOS4uNzIzMDkyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvYnVzLmMKQEAgLTgxLDkgKzgxLDkgQEAKIHsKIAlkZXZpY2VfYWRkKCZkZXYtPmRldik7CiAKLQlzcGluX2xvY2soJnBjaV9idXNfbG9jayk7CisJZG93bl93cml0ZSgmcGNpX2J1c19zZW0pOwogCWxpc3RfYWRkX3RhaWwoJmRldi0+Z2xvYmFsX2xpc3QsICZwY2lfZGV2aWNlcyk7Ci0Jc3Bpbl91bmxvY2soJnBjaV9idXNfbG9jayk7CisJdXBfd3JpdGUoJnBjaV9idXNfc2VtKTsKIAogCXBjaV9wcm9jX2F0dGFjaF9kZXZpY2UoZGV2KTsKIAlwY2lfY3JlYXRlX3N5c2ZzX2Rldl9maWxlcyhkZXYpOwpAQCAtMTI1LDEwICsxMjUsMTAgQEAKIAkJICovCiAJCWlmIChkZXYtPnN1Ym9yZGluYXRlKSB7CiAJCSAgICAgICBpZiAobGlzdF9lbXB0eSgmZGV2LT5zdWJvcmRpbmF0ZS0+bm9kZSkpIHsKLQkJCSAgICAgICBzcGluX2xvY2soJnBjaV9idXNfbG9jayk7CisJCQkgICAgICAgZG93bl93cml0ZSgmcGNpX2J1c19zZW0pOwogCQkJICAgICAgIGxpc3RfYWRkX3RhaWwoJmRldi0+c3Vib3JkaW5hdGUtPm5vZGUsCiAJCQkJCSAgICAgICAmZGV2LT5idXMtPmNoaWxkcmVuKTsKLQkJCSAgICAgICBzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwkJCSAgICAgICB1cF93cml0ZSgmcGNpX2J1c19zZW0pOwogCQkgICAgICAgfQogCQkJcGNpX2J1c19hZGRfZGV2aWNlcyhkZXYtPnN1Ym9yZGluYXRlKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBACiAJc3RydWN0IGxpc3RfaGVhZCAqbmV4dDsKIAogCWJ1cyA9IHRvcDsKLQlzcGluX2xvY2soJnBjaV9idXNfbG9jayk7CisJZG93bl9yZWFkKCZwY2lfYnVzX3NlbSk7CiAJbmV4dCA9IHRvcC0+ZGV2aWNlcy5uZXh0OwogCWZvciAoOzspIHsKIAkJaWYgKG5leHQgPT0gJmJ1cy0+ZGV2aWNlcykgewpAQCAtMTgwLDIyICsxODAsMTkgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWRldiA9IGxpc3RfZW50cnkobmV4dCwgc3RydWN0IHBjaV9kZXYsIGJ1c19saXN0KTsKLQkJcGNpX2Rldl9nZXQoZGV2KTsKIAkJaWYgKGRldi0+c3Vib3JkaW5hdGUpIHsKIAkJCS8qIHRoaXMgaXMgYSBwY2ktcGNpIGJyaWRnZSwgZG8gaXRzIGRldmljZXMgbmV4dCAqLwogCQkJbmV4dCA9IGRldi0+c3Vib3JkaW5hdGUtPmRldmljZXMubmV4dDsKIAkJCWJ1cyA9IGRldi0+c3Vib3JkaW5hdGU7CiAJCX0gZWxzZQogCQkJbmV4dCA9IGRldi0+YnVzX2xpc3QubmV4dDsKLQkJc3Bpbl91bmxvY2soJnBjaV9idXNfbG9jayk7CiAKLQkJLyogUnVuIGRldmljZSByb3V0aW5lcyB3aXRoIHRoZSBidXMgdW5sb2NrZWQgKi8KKwkJLyogUnVuIGRldmljZSByb3V0aW5lcyB3aXRoIHRoZSBkZXZpY2UgbG9ja2VkICovCisJCWRvd24oJmRldi0+ZGV2LnNlbSk7CiAJCWNiKGRldiwgdXNlcmRhdGEpOwotCi0JCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKLQkJcGNpX2Rldl9wdXQoZGV2KTsKKwkJdXAoJmRldi0+ZGV2LnNlbSk7CiAJfQotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV93YWxrX2J1cyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaV9wY2locC5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKaW5kZXggMzlhZjljMy4uNTFjYjlmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKQEAgLTI1LDYgKzI1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgpAQCAtMzMsMTAgKzM0LDE4NCBAQAogI2luY2x1ZGUgPGFjcGkvYWN0eXBlcy5oPgogI2luY2x1ZGUgInBjaV9ob3RwbHVnLmgiCiAKKyNkZWZpbmUgTVlfTkFNRQkiYWNwaV9wY2locCIKKworI2RlZmluZSBkYmcoZm10LCBhcmcuLi4pIGRvIHsgaWYgKGRlYnVnX2FjcGkpIHByaW50ayhLRVJOX0RFQlVHICIlczogJXM6ICIgZm10ICwgTVlfTkFNRSAsIF9fRlVOQ1RJT05fXyAsICMjIGFyZyk7IH0gd2hpbGUgKDApCisjZGVmaW5lIGVycihmb3JtYXQsIGFyZy4uLikgcHJpbnRrKEtFUk5fRVJSICIlczogIiBmb3JtYXQgLCBNWV9OQU1FICwgIyMgYXJnKQorI2RlZmluZSBpbmZvKGZvcm1hdCwgYXJnLi4uKSBwcmludGsoS0VSTl9JTkZPICIlczogIiBmb3JtYXQgLCBNWV9OQU1FICwgIyMgYXJnKQorI2RlZmluZSB3YXJuKGZvcm1hdCwgYXJnLi4uKSBwcmludGsoS0VSTl9XQVJOSU5HICIlczogIiBmb3JtYXQgLCBNWV9OQU1FICwgIyMgYXJnKQorCiAjZGVmaW5lCU1FVEhPRF9OQU1FX19TVU4JIl9TVU4iCiAjZGVmaW5lCU1FVEhPRF9OQU1FX19IUFAJIl9IUFAiCiAjZGVmaW5lCU1FVEhPRF9OQU1FX09TSFAJIk9TSFAiCiAKK3N0YXRpYyBpbnQgZGVidWdfYWNwaTsKKworc3RhdGljIGFjcGlfc3RhdHVzCitkZWNvZGVfdHlwZTBfaHB4X3JlY29yZCh1bmlvbiBhY3BpX29iamVjdCAqcmVjb3JkLCBzdHJ1Y3QgaG90cGx1Z19wYXJhbXMgKmhweCkKK3sKKwlpbnQgaTsKKwl1bmlvbiBhY3BpX29iamVjdCAqZmllbGRzID0gcmVjb3JkLT5wYWNrYWdlLmVsZW1lbnRzOworCXUzMiByZXZpc2lvbiA9IGZpZWxkc1sxXS5pbnRlZ2VyLnZhbHVlOworCisJc3dpdGNoIChyZXZpc2lvbikgeworCWNhc2UgMToKKwkJaWYgKHJlY29yZC0+cGFja2FnZS5jb3VudCAhPSA2KQorCQkJcmV0dXJuIEFFX0VSUk9SOworCQlmb3IgKGkgPSAyOyBpIDwgNjsgaSsrKQorCQkJaWYgKGZpZWxkc1tpXS50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKQorCQkJCXJldHVybiBBRV9FUlJPUjsKKwkJaHB4LT50MCA9ICZocHgtPnR5cGUwX2RhdGE7CisJCWhweC0+dDAtPnJldmlzaW9uICAgICAgICA9IHJldmlzaW9uOworCQlocHgtPnQwLT5jYWNoZV9saW5lX3NpemUgPSBmaWVsZHNbMl0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50MC0+bGF0ZW5jeV90aW1lciAgID0gZmllbGRzWzNdLmludGVnZXIudmFsdWU7CisJCWhweC0+dDAtPmVuYWJsZV9zZXJyICAgICA9IGZpZWxkc1s0XS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQwLT5lbmFibGVfcGVyciAgICAgPSBmaWVsZHNbNV0uaW50ZWdlci52YWx1ZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgIiVzOiBUeXBlIDAgUmV2aXNpb24gJWQgcmVjb3JkIG5vdCBzdXBwb3J0ZWRcbiIsCisJCSAgICAgICBfX0ZVTkNUSU9OX18sIHJldmlzaW9uKTsKKwkJcmV0dXJuIEFFX0VSUk9SOworCX0KKwlyZXR1cm4gQUVfT0s7Cit9CisKK3N0YXRpYyBhY3BpX3N0YXR1cworZGVjb2RlX3R5cGUxX2hweF9yZWNvcmQodW5pb24gYWNwaV9vYmplY3QgKnJlY29yZCwgc3RydWN0IGhvdHBsdWdfcGFyYW1zICpocHgpCit7CisJaW50IGk7CisJdW5pb24gYWNwaV9vYmplY3QgKmZpZWxkcyA9IHJlY29yZC0+cGFja2FnZS5lbGVtZW50czsKKwl1MzIgcmV2aXNpb24gPSBmaWVsZHNbMV0uaW50ZWdlci52YWx1ZTsKKworCXN3aXRjaCAocmV2aXNpb24pIHsKKwljYXNlIDE6CisJCWlmIChyZWNvcmQtPnBhY2thZ2UuY291bnQgIT0gNSkKKwkJCXJldHVybiBBRV9FUlJPUjsKKwkJZm9yIChpID0gMjsgaSA8IDU7IGkrKykKKwkJCWlmIChmaWVsZHNbaV0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikKKwkJCQlyZXR1cm4gQUVfRVJST1I7CisJCWhweC0+dDEgPSAmaHB4LT50eXBlMV9kYXRhOworCQlocHgtPnQxLT5yZXZpc2lvbiAgICAgID0gcmV2aXNpb247CisJCWhweC0+dDEtPm1heF9tZW1fcmVhZCAgPSBmaWVsZHNbMl0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50MS0+YXZnX21heF9zcGxpdCA9IGZpZWxkc1szXS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQxLT50b3RfbWF4X3NwbGl0ID0gZmllbGRzWzRdLmludGVnZXIudmFsdWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX1dBUk5JTkcKKwkJICAgICAgICIlczogVHlwZSAxIFJldmlzaW9uICVkIHJlY29yZCBub3Qgc3VwcG9ydGVkXG4iLAorCQkgICAgICAgX19GVU5DVElPTl9fLCByZXZpc2lvbik7CisJCXJldHVybiBBRV9FUlJPUjsKKwl9CisJcmV0dXJuIEFFX09LOworfQorCitzdGF0aWMgYWNwaV9zdGF0dXMKK2RlY29kZV90eXBlMl9ocHhfcmVjb3JkKHVuaW9uIGFjcGlfb2JqZWN0ICpyZWNvcmQsIHN0cnVjdCBob3RwbHVnX3BhcmFtcyAqaHB4KQoreworCWludCBpOworCXVuaW9uIGFjcGlfb2JqZWN0ICpmaWVsZHMgPSByZWNvcmQtPnBhY2thZ2UuZWxlbWVudHM7CisJdTMyIHJldmlzaW9uID0gZmllbGRzWzFdLmludGVnZXIudmFsdWU7CisKKwlzd2l0Y2ggKHJldmlzaW9uKSB7CisJY2FzZSAxOgorCQlpZiAocmVjb3JkLT5wYWNrYWdlLmNvdW50ICE9IDE4KQorCQkJcmV0dXJuIEFFX0VSUk9SOworCQlmb3IgKGkgPSAyOyBpIDwgMTg7IGkrKykKKwkJCWlmIChmaWVsZHNbaV0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikKKwkJCQlyZXR1cm4gQUVfRVJST1I7CisJCWhweC0+dDIgPSAmaHB4LT50eXBlMl9kYXRhOworCQlocHgtPnQyLT5yZXZpc2lvbiAgICAgID0gcmV2aXNpb247CisJCWhweC0+dDItPnVuY19lcnJfbWFza19hbmQgICAgICA9IGZpZWxkc1syXS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT51bmNfZXJyX21hc2tfb3IgICAgICAgPSBmaWVsZHNbM10uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50Mi0+dW5jX2Vycl9zZXZlcl9hbmQgICAgID0gZmllbGRzWzRdLmludGVnZXIudmFsdWU7CisJCWhweC0+dDItPnVuY19lcnJfc2V2ZXJfb3IgICAgICA9IGZpZWxkc1s1XS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT5jb3JfZXJyX21hc2tfYW5kICAgICAgPSBmaWVsZHNbNl0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50Mi0+Y29yX2Vycl9tYXNrX29yICAgICAgID0gZmllbGRzWzddLmludGVnZXIudmFsdWU7CisJCWhweC0+dDItPmFkdl9lcnJfY2FwX2FuZCAgICAgICA9IGZpZWxkc1s4XS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT5hZHZfZXJyX2NhcF9vciAgICAgICAgPSBmaWVsZHNbOV0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50Mi0+cGNpX2V4cF9kZXZjdGxfYW5kICAgID0gZmllbGRzWzEwXS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT5wY2lfZXhwX2RldmN0bF9vciAgICAgPSBmaWVsZHNbMTFdLmludGVnZXIudmFsdWU7CisJCWhweC0+dDItPnBjaV9leHBfbG5rY3RsX2FuZCAgICA9IGZpZWxkc1sxMl0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50Mi0+cGNpX2V4cF9sbmtjdGxfb3IgICAgID0gZmllbGRzWzEzXS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT5zZWNfdW5jX2Vycl9zZXZlcl9hbmQgPSBmaWVsZHNbMTRdLmludGVnZXIudmFsdWU7CisJCWhweC0+dDItPnNlY191bmNfZXJyX3NldmVyX29yICA9IGZpZWxkc1sxNV0uaW50ZWdlci52YWx1ZTsKKwkJaHB4LT50Mi0+c2VjX3VuY19lcnJfbWFza19hbmQgID0gZmllbGRzWzE2XS5pbnRlZ2VyLnZhbHVlOworCQlocHgtPnQyLT5zZWNfdW5jX2Vycl9tYXNrX29yICAgPSBmaWVsZHNbMTddLmludGVnZXIudmFsdWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX1dBUk5JTkcKKwkJICAgICAgICIlczogVHlwZSAyIFJldmlzaW9uICVkIHJlY29yZCBub3Qgc3VwcG9ydGVkXG4iLAorCQkgICAgICAgX19GVU5DVElPTl9fLCByZXZpc2lvbik7CisJCXJldHVybiBBRV9FUlJPUjsKKwl9CisJcmV0dXJuIEFFX09LOworfQorCitzdGF0aWMgYWNwaV9zdGF0dXMKK2FjcGlfcnVuX2hweChhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBob3RwbHVnX3BhcmFtcyAqaHB4KQoreworCWFjcGlfc3RhdHVzIHN0YXR1czsKKwlzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmZmVyID0ge0FDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMfTsKKwl1bmlvbiBhY3BpX29iamVjdCAqcGFja2FnZSwgKnJlY29yZCwgKmZpZWxkczsKKwl1MzIgdHlwZTsKKwlpbnQgaTsKKworCS8qIENsZWFyIHRoZSByZXR1cm4gYnVmZmVyIHdpdGggemVyb3MgKi8KKwltZW1zZXQoaHB4LCAwLCBzaXplb2Yoc3RydWN0IGhvdHBsdWdfcGFyYW1zKSk7CisKKwlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsICJfSFBYIiwgTlVMTCwgJmJ1ZmZlcik7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKQorCQlyZXR1cm4gc3RhdHVzOworCisJcGFja2FnZSA9ICh1bmlvbiBhY3BpX29iamVjdCAqKWJ1ZmZlci5wb2ludGVyOworCWlmIChwYWNrYWdlLT50eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFKSB7CisJCXN0YXR1cyA9IEFFX0VSUk9SOworCQlnb3RvIGV4aXQ7CisJfQorCisJZm9yIChpID0gMDsgaSA8IHBhY2thZ2UtPnBhY2thZ2UuY291bnQ7IGkrKykgeworCQlyZWNvcmQgPSAmcGFja2FnZS0+cGFja2FnZS5lbGVtZW50c1tpXTsKKwkJaWYgKHJlY29yZC0+dHlwZSAhPSBBQ1BJX1RZUEVfUEFDS0FHRSkgeworCQkJc3RhdHVzID0gQUVfRVJST1I7CisJCQlnb3RvIGV4aXQ7CisJCX0KKworCQlmaWVsZHMgPSByZWNvcmQtPnBhY2thZ2UuZWxlbWVudHM7CisJCWlmIChmaWVsZHNbMF0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUiB8fAorCQkgICAgZmllbGRzWzFdLnR5cGUgIT0gQUNQSV9UWVBFX0lOVEVHRVIpIHsKKwkJCXN0YXR1cyA9IEFFX0VSUk9SOworCQkJZ290byBleGl0OworCQl9CisKKwkJdHlwZSA9IGZpZWxkc1swXS5pbnRlZ2VyLnZhbHVlOworCQlzd2l0Y2ggKHR5cGUpIHsKKwkJY2FzZSAwOgorCQkJc3RhdHVzID0gZGVjb2RlX3R5cGUwX2hweF9yZWNvcmQocmVjb3JkLCBocHgpOworCQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKQorCQkJCWdvdG8gZXhpdDsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlzdGF0dXMgPSBkZWNvZGVfdHlwZTFfaHB4X3JlY29yZChyZWNvcmQsIGhweCk7CisJCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCisJCQkJZ290byBleGl0OworCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCXN0YXR1cyA9IGRlY29kZV90eXBlMl9ocHhfcmVjb3JkKHJlY29yZCwgaHB4KTsKKwkJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKKwkJCQlnb3RvIGV4aXQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ayhLRVJOX0VSUiAiJXM6IFR5cGUgJWQgcmVjb3JkIG5vdCBzdXBwb3J0ZWRcbiIsCisJCQkgICAgICAgX19GVU5DVElPTl9fLCB0eXBlKTsKKwkJCXN0YXR1cyA9IEFFX0VSUk9SOworCQkJZ290byBleGl0OworCQl9CisJfQorIGV4aXQ6CisJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOworCXJldHVybiBzdGF0dXM7Cit9CiAKIHN0YXRpYyBhY3BpX3N0YXR1cwogYWNwaV9ydW5faHBwKGFjcGlfaGFuZGxlIGhhbmRsZSwgc3RydWN0IGhvdHBsdWdfcGFyYW1zICpocHApCkBAIC01MCw2ICsyMjUsOSBAQAogCiAJYWNwaV9nZXRfbmFtZShoYW5kbGUsIEFDUElfRlVMTF9QQVRITkFNRSwgJnN0cmluZyk7CiAKKwkvKiBDbGVhciB0aGUgcmV0dXJuIGJ1ZmZlciB3aXRoIHplcm9zICovCisJbWVtc2V0KGhwcCwgMCwgc2l6ZW9mKHN0cnVjdCBob3RwbHVnX3BhcmFtcykpOworCiAJLyogZ2V0IF9ocHAgKi8KIAlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE1FVEhPRF9OQU1FX19IUFAsIE5VTEwsICZyZXRfYnVmKTsKIAlzd2l0Y2ggKHN0YXR1cykgewpAQCAtNTgsNyArMjM2LDcgQEAKIAkJaWYgKCFyZXRfYnVmLnBvaW50ZXIpIHsKIAkJCXByaW50ayhLRVJOX0VSUiAiJXM6JXMgYWxsb2MgZm9yIF9IUFAgZmFpbFxuIiwKIAkJCQlfX0ZVTkNUSU9OX18sIChjaGFyICopc3RyaW5nLnBvaW50ZXIpOwotCQkJYWNwaV9vc19mcmVlKHN0cmluZy5wb2ludGVyKTsKKwkJCWtmcmVlKHN0cmluZy5wb2ludGVyKTsKIAkJCXJldHVybiBBRV9OT19NRU1PUlk7CiAJCX0KIAkJc3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCBNRVRIT0RfTkFNRV9fSFBQLApAQCAtNjksNyArMjQ3LDcgQEAKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlwcl9kZWJ1ZygiJXM6JXMgX0hQUCBmYWlsPTB4JXhcbiIsIF9fRlVOQ1RJT05fXywKIAkJCQkoY2hhciAqKXN0cmluZy5wb2ludGVyLCBzdGF0dXMpOwotCQkJYWNwaV9vc19mcmVlKHN0cmluZy5wb2ludGVyKTsKKwkJCWtmcmVlKHN0cmluZy5wb2ludGVyKTsKIAkJCXJldHVybiBzdGF0dXM7CiAJCX0KIAl9CkBAIC05OCwxOSArMjc2LDIwIEBACiAJCX0KIAl9CiAKLQlocHAtPmNhY2hlX2xpbmVfc2l6ZSA9IG51aVswXTsKLQlocHAtPmxhdGVuY3lfdGltZXIgPSBudWlbMV07Ci0JaHBwLT5lbmFibGVfc2VyciA9IG51aVsyXTsKLQlocHAtPmVuYWJsZV9wZXJyID0gbnVpWzNdOworCWhwcC0+dDAgPSAmaHBwLT50eXBlMF9kYXRhOworCWhwcC0+dDAtPmNhY2hlX2xpbmVfc2l6ZSA9IG51aVswXTsKKwlocHAtPnQwLT5sYXRlbmN5X3RpbWVyID0gbnVpWzFdOworCWhwcC0+dDAtPmVuYWJsZV9zZXJyID0gbnVpWzJdOworCWhwcC0+dDAtPmVuYWJsZV9wZXJyID0gbnVpWzNdOwogCi0JcHJfZGVidWcoIiAgX0hQUDogY2FjaGVfbGluZV9zaXplPTB4JXhcbiIsIGhwcC0+Y2FjaGVfbGluZV9zaXplKTsKLQlwcl9kZWJ1ZygiICBfSFBQOiBsYXRlbmN5IHRpbWVyICA9MHgleFxuIiwgaHBwLT5sYXRlbmN5X3RpbWVyKTsKLQlwcl9kZWJ1ZygiICBfSFBQOiBlbmFibGUgU0VSUiAgICA9MHgleFxuIiwgaHBwLT5lbmFibGVfc2Vycik7Ci0JcHJfZGVidWcoIiAgX0hQUDogZW5hYmxlIFBFUlIgICAgPTB4JXhcbiIsIGhwcC0+ZW5hYmxlX3BlcnIpOworCXByX2RlYnVnKCIgIF9IUFA6IGNhY2hlX2xpbmVfc2l6ZT0weCV4XG4iLCBocHAtPnQwLT5jYWNoZV9saW5lX3NpemUpOworCXByX2RlYnVnKCIgIF9IUFA6IGxhdGVuY3kgdGltZXIgID0weCV4XG4iLCBocHAtPnQwLT5sYXRlbmN5X3RpbWVyKTsKKwlwcl9kZWJ1ZygiICBfSFBQOiBlbmFibGUgU0VSUiAgICA9MHgleFxuIiwgaHBwLT50MC0+ZW5hYmxlX3NlcnIpOworCXByX2RlYnVnKCIgIF9IUFA6IGVuYWJsZSBQRVJSICAgID0weCV4XG4iLCBocHAtPnQwLT5lbmFibGVfcGVycik7CiAKIGZyZWVfYW5kX3JldHVybjoKLQlhY3BpX29zX2ZyZWUoc3RyaW5nLnBvaW50ZXIpOwotCWFjcGlfb3NfZnJlZShyZXRfYnVmLnBvaW50ZXIpOworCWtmcmVlKHN0cmluZy5wb2ludGVyKTsKKwlrZnJlZShyZXRfYnVmLnBvaW50ZXIpOwogCXJldHVybiBzdGF0dXM7CiB9CiAKQEAgLTEzMCwxMyArMzA5LDE3IEBACiAJLyogcnVuIE9TSFAgKi8KIAlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE1FVEhPRF9OQU1FX09TSFAsIE5VTEwsIE5VTEwpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKLQkJcHJpbnRrKEtFUk5fRVJSICIlczolcyBPU0hQIGZhaWxzPTB4JXhcbiIsIF9fRlVOQ1RJT05fXywKLQkJCShjaGFyICopc3RyaW5nLnBvaW50ZXIsIHN0YXR1cyk7CisJCWlmIChzdGF0dXMgIT0gQUVfTk9UX0ZPVU5EKQorCQkJcHJpbnRrKEtFUk5fRVJSICIlczolcyBPU0hQIGZhaWxzPTB4JXhcbiIsCisJCQkgICAgICAgX19GVU5DVElPTl9fLCAoY2hhciAqKXN0cmluZy5wb2ludGVyLCBzdGF0dXMpOworCQllbHNlCisJCQlkYmcoIiVzOiVzIE9TSFAgbm90IGZvdW5kXG4iLAorCQkJICAgIF9fRlVOQ1RJT05fXywgKGNoYXIgKilzdHJpbmcucG9pbnRlcik7CiAJZWxzZQogCQlwcl9kZWJ1ZygiJXM6JXMgT1NIUCBwYXNzZXNcbiIsIF9fRlVOQ1RJT05fXywKIAkJCShjaGFyICopc3RyaW5nLnBvaW50ZXIpOwogCi0JYWNwaV9vc19mcmVlKHN0cmluZy5wb2ludGVyKTsKKwlrZnJlZShzdHJpbmcucG9pbnRlcik7CiAJcmV0dXJuIHN0YXR1czsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGFjcGlfcnVuX29zaHApOwpAQCAtMTQ1LDE0ICszMjgsMjcgQEAKIAogLyogYWNwaV9nZXRfaHBfcGFyYW1zX2Zyb21fZmlybXdhcmUKICAqCi0gKiBAZGV2IC0gdGhlIHBjaV9kZXYgb2YgdGhlIG5ld2x5IGFkZGVkIGRldmljZQorICogQGJ1cyAtIHRoZSBwY2lfYnVzIG9mIHRoZSBidXMgb24gd2hpY2ggdGhlIGRldmljZSBpcyBuZXdseSBhZGRlZAogICogQGhwcCAtIGFsbG9jYXRlZCBieSB0aGUgY2FsbGVyCiAgKi8KLWFjcGlfc3RhdHVzIGFjcGlfZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKHN0cnVjdCBwY2lfZGV2ICpkZXYsCithY3BpX3N0YXR1cyBhY3BpX2dldF9ocF9wYXJhbXNfZnJvbV9maXJtd2FyZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLAogCQlzdHJ1Y3QgaG90cGx1Z19wYXJhbXMgKmhwcCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9OT1RfRk9VTkQ7Ci0Jc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXY7CisJYWNwaV9oYW5kbGUgaGFuZGxlLCBwaGFuZGxlOworCXN0cnVjdCBwY2lfYnVzICpwYnVzID0gYnVzOworCXN0cnVjdCBwY2lfZGV2ICpwZGV2OworCisJZG8geworCQlwZGV2ID0gcGJ1cy0+c2VsZjsKKwkJaWYgKCFwZGV2KSB7CisJCQloYW5kbGUgPSBhY3BpX2dldF9wY2lfcm9vdGJyaWRnZV9oYW5kbGUoCisJCQkJcGNpX2RvbWFpbl9ucihwYnVzKSwgcGJ1cy0+bnVtYmVyKTsKKwkJCWJyZWFrOworCQl9CisJCWhhbmRsZSA9IERFVklDRV9BQ1BJX0hBTkRMRSgmKHBkZXYtPmRldikpOworCQlwYnVzID0gcGJ1cy0+cGFyZW50OworCX0gd2hpbGUgKCFoYW5kbGUpOwogCiAJLyoKIAkgKiBfSFBQIHNldHRpbmdzIGFwcGx5IHRvIGFsbCBjaGlsZCBidXNlcywgdW50aWwgYW5vdGhlciBfSFBQIGlzCkBAIC0xNjAsMTUgKzM1NiwxOSBAQAogCSAqIGxvb2sgZm9yIGl0IGluIHRoZSBwYXJlbnQgZGV2aWNlIHNjb3BlIHNpbmNlIHRoYXQgd291bGQgYXBwbHkgdG8KIAkgKiB0aGlzIHBjaSBkZXYuIElmIHdlIGRvbid0IGZpbmQgYW55IF9IUFAsIHVzZSBoYXJkY29kZWQgZGVmYXVsdHMKIAkgKi8KLQl3aGlsZSAocGRldiAmJiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0JCWFjcGlfaGFuZGxlIGhhbmRsZSA9IERFVklDRV9BQ1BJX0hBTkRMRSgmKHBkZXYtPmRldikpOwotCQlpZiAoIWhhbmRsZSkKKwl3aGlsZSAoaGFuZGxlKSB7CisJCXN0YXR1cyA9IGFjcGlfcnVuX2hweChoYW5kbGUsIGhwcCk7CisJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkKIAkJCWJyZWFrOwogCQlzdGF0dXMgPSBhY3BpX3J1bl9ocHAoaGFuZGxlLCBocHApOwotCQlpZiAoIShwZGV2LT5idXMtPnBhcmVudCkpCisJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkKIAkJCWJyZWFrOwotCQkvKiBDaGVjayBpZiBhIHBhcmVudCBvYmplY3Qgc3VwcG9ydHMgX0hQUCAqLwotCQlwZGV2ID0gcGRldi0+YnVzLT5wYXJlbnQtPnNlbGY7CisJCWlmIChhY3BpX3Jvb3RfYnJpZGdlKGhhbmRsZSkpCisJCQlicmVhazsKKwkJc3RhdHVzID0gYWNwaV9nZXRfcGFyZW50KGhhbmRsZSwgJnBoYW5kbGUpOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCisJCQlicmVhazsKKwkJaGFuZGxlID0gcGhhbmRsZTsKIAl9CiAJcmV0dXJuIHN0YXR1czsKIH0KQEAgLTE5MiwyMCArMzkyLDIzIEBACiAJCWlmICgoaW5mby0+dmFsaWQgJiBBQ1BJX1ZBTElEX0hJRCkgJiYKIAkJCSFzdHJjbXAoUENJX1JPT1RfSElEX1NUUklORywKIAkJCQkJaW5mby0+aGFyZHdhcmVfaWQudmFsdWUpKSB7Ci0JCQlhY3BpX29zX2ZyZWUoYnVmZmVyLnBvaW50ZXIpOworCQkJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwogCQkJcmV0dXJuIDE7CiAJCX0KIAkJaWYgKGluZm8tPnZhbGlkICYgQUNQSV9WQUxJRF9DSUQpIHsKIAkJCWZvciAoaT0wOyBpIDwgaW5mby0+Y29tcGF0aWJpbGl0eV9pZC5jb3VudDsgaSsrKSB7CiAJCQkJaWYgKCFzdHJjbXAoUENJX1JPT1RfSElEX1NUUklORywKIAkJCQkJaW5mby0+Y29tcGF0aWJpbGl0eV9pZC5pZFtpXS52YWx1ZSkpIHsKLQkJCQkJYWNwaV9vc19mcmVlKGJ1ZmZlci5wb2ludGVyKTsKKwkJCQkJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwogCQkJCQlyZXR1cm4gMTsKIAkJCQl9CiAJCQl9CiAJCX0KLQkJYWNwaV9vc19mcmVlKGJ1ZmZlci5wb2ludGVyKTsKKwkJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwogCX0KIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGFjcGlfcm9vdF9icmlkZ2UpOworCittb2R1bGVfcGFyYW0oZGVidWdfYWNwaSwgYm9vbCwgMDY0NCk7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnX2FjcGksICJEZWJ1Z2dpbmcgbW9kZSBmb3IgQUNQSSBlbmFibGVkIG9yIG5vdCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwLmggYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHAuaAppbmRleCA0NjdhYzcwLi4xN2E5M2Y4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHAuaAorKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHAuaApAQCAtNzUsNiArNzUsMTAgQEAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAJYWNwaV9oYW5kbGUgaGFuZGxlOwogCXN0cnVjdCBhY3BpcGhwX3Nsb3QgKnNsb3RzOworCisJLyogRWplY3RhYmxlIFBDSS10by1QQ0kgYnJpZGdlIChQQ0kgYnJpZGdlIGFuZCBQQ0kgZnVuY3Rpb24pICovCisJc3RydWN0IGFjcGlwaHBfZnVuYyAqZnVuYzsKKwogCWludCB0eXBlOwogCWludCBucl9zbG90czsKIApAQCAtMTIyLDYgKzEyNiw3IEBACiAgKi8KIHN0cnVjdCBhY3BpcGhwX2Z1bmMgewogCXN0cnVjdCBhY3BpcGhwX3Nsb3QgKnNsb3Q7CS8qIHBhcmVudCAqLworCXN0cnVjdCBhY3BpcGhwX2JyaWRnZSAqYnJpZGdlOwkvKiBFamVjdGFibGUgUENJLXRvLVBDSSBicmlkZ2UgKi8KIAogCXN0cnVjdCBsaXN0X2hlYWQgc2libGluZzsKIAlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jCmluZGV4IDA1M2VlODQuLmQzNzBmOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYwpAQCAtMjg2LDEzICsyODYsMTkgQEAKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAKLQlzdGF0dXMgPSBhY3BpX2dldF9ocF9wYXJhbXNfZnJvbV9maXJtd2FyZShicmlkZ2UtPnBjaV9kZXYsICZicmlkZ2UtPmhwcCk7Ci0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJc3RhdHVzID0gYWNwaV9nZXRfaHBfcGFyYW1zX2Zyb21fZmlybXdhcmUoYnJpZGdlLT5wY2lfYnVzLCAmYnJpZGdlLT5ocHApOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSB8fAorCSAgICAhYnJpZGdlLT5ocHAudDAgfHwgKGJyaWRnZS0+aHBwLnQwLT5yZXZpc2lvbiA+IDEpKSB7CiAJCS8qIHVzZSBkZWZhdWx0IG51bWJlcnMgKi8KLQkJYnJpZGdlLT5ocHAuY2FjaGVfbGluZV9zaXplID0gMHgxMDsKLQkJYnJpZGdlLT5ocHAubGF0ZW5jeV90aW1lciA9IDB4NDA7Ci0JCWJyaWRnZS0+aHBwLmVuYWJsZV9zZXJyID0gMDsKLQkJYnJpZGdlLT5ocHAuZW5hYmxlX3BlcnIgPSAwOworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICAgICAiJXM6IENvdWxkIG5vdCBnZXQgaG90cGx1ZyBwYXJhbWV0ZXJzLiBVc2UgZGVmYXVsdHNcbiIsCisJCSAgICAgICBfX0ZVTkNUSU9OX18pOworCQlicmlkZ2UtPmhwcC50MCA9ICZicmlkZ2UtPmhwcC50eXBlMF9kYXRhOworCQlicmlkZ2UtPmhwcC50MC0+cmV2aXNpb24gPSAwOworCQlicmlkZ2UtPmhwcC50MC0+Y2FjaGVfbGluZV9zaXplID0gMHgxMDsKKwkJYnJpZGdlLT5ocHAudDAtPmxhdGVuY3lfdGltZXIgPSAweDQwOworCQlicmlkZ2UtPmhwcC50MC0+ZW5hYmxlX3NlcnIgPSAwOworCQlicmlkZ2UtPmhwcC50MC0+ZW5hYmxlX3BlcnIgPSAwOwogCX0KIH0KIApAQCAtMzE5LDYgKzMyNSwxMyBAQAogCiAJLyogaW5zdGFsbCBub3RpZnkgaGFuZGxlciAqLwogCWlmIChicmlkZ2UtPnR5cGUgIT0gQlJJREdFX1RZUEVfSE9TVCkgeworCQlpZiAoKGJyaWRnZS0+ZmxhZ3MgJiBCUklER0VfSEFTX0VKMCkgJiYgYnJpZGdlLT5mdW5jKSB7CisJCQlzdGF0dXMgPSBhY3BpX3JlbW92ZV9ub3RpZnlfaGFuZGxlcihicmlkZ2UtPmZ1bmMtPmhhbmRsZSwKKwkJCQkJCUFDUElfU1lTVEVNX05PVElGWSwKKwkJCQkJCWhhbmRsZV9ob3RwbHVnX2V2ZW50X2Z1bmMpOworCQkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKQorCQkJCWVycigiZmFpbGVkIHRvIHJlbW92ZSBub3RpZnkgaGFuZGxlclxuIik7CisJCX0KIAkJc3RhdHVzID0gYWNwaV9pbnN0YWxsX25vdGlmeV9oYW5kbGVyKGJyaWRnZS0+aGFuZGxlLAogCQkJCQkgICAgIEFDUElfU1lTVEVNX05PVElGWSwKIAkJCQkJICAgICBoYW5kbGVfaG90cGx1Z19ldmVudF9icmlkZ2UsCkBAIC0zMzEsNiArMzQ0LDY2IEBACiB9CiAKIAorLyogZmluZCBhY3BpcGhwX2Z1bmMgZnJvbSBhY3BpcGhwX2JyaWRnZSAqLworc3RhdGljIHN0cnVjdCBhY3BpcGhwX2Z1bmMgKmFjcGlwaHBfYnJpZGdlX2hhbmRsZV90b19mdW5jdGlvbihhY3BpX2hhbmRsZSBoYW5kbGUpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqbm9kZSwgKmw7CisJc3RydWN0IGFjcGlwaHBfYnJpZGdlICpicmlkZ2U7CisJc3RydWN0IGFjcGlwaHBfc2xvdCAqc2xvdDsKKwlzdHJ1Y3QgYWNwaXBocF9mdW5jICpmdW5jOworCisJbGlzdF9mb3JfZWFjaChub2RlLCAmYnJpZGdlX2xpc3QpIHsKKwkJYnJpZGdlID0gbGlzdF9lbnRyeShub2RlLCBzdHJ1Y3QgYWNwaXBocF9icmlkZ2UsIGxpc3QpOworCQlmb3IgKHNsb3QgPSBicmlkZ2UtPnNsb3RzOyBzbG90OyBzbG90ID0gc2xvdC0+bmV4dCkgeworCQkJbGlzdF9mb3JfZWFjaChsLCAmc2xvdC0+ZnVuY3MpIHsKKwkJCQlmdW5jID0gbGlzdF9lbnRyeShsLCBzdHJ1Y3QgYWNwaXBocF9mdW5jLAorCQkJCQkJCXNpYmxpbmcpOworCQkJCWlmIChmdW5jLT5oYW5kbGUgPT0gaGFuZGxlKQorCQkJCQlyZXR1cm4gZnVuYzsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25maWdfcDJwX2JyaWRnZV9mbGFncyhzdHJ1Y3QgYWNwaXBocF9icmlkZ2UgKmJyaWRnZSkKK3sKKwlhY3BpX2hhbmRsZSBkdW1teV9oYW5kbGU7CisKKwlpZiAoQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X2hhbmRsZShicmlkZ2UtPmhhbmRsZSwKKwkJCQkJIl9TVEEiLCAmZHVtbXlfaGFuZGxlKSkpCisJCWJyaWRnZS0+ZmxhZ3MgfD0gQlJJREdFX0hBU19TVEE7CisKKwlpZiAoQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X2hhbmRsZShicmlkZ2UtPmhhbmRsZSwKKwkJCQkJIl9FSjAiLCAmZHVtbXlfaGFuZGxlKSkpCisJCWJyaWRnZS0+ZmxhZ3MgfD0gQlJJREdFX0hBU19FSjA7CisKKwlpZiAoQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X2hhbmRsZShicmlkZ2UtPmhhbmRsZSwKKwkJCQkJIl9QUzAiLCAmZHVtbXlfaGFuZGxlKSkpCisJCWJyaWRnZS0+ZmxhZ3MgfD0gQlJJREdFX0hBU19QUzA7CisKKwlpZiAoQUNQSV9TVUNDRVNTKGFjcGlfZ2V0X2hhbmRsZShicmlkZ2UtPmhhbmRsZSwKKwkJCQkJIl9QUzMiLCAmZHVtbXlfaGFuZGxlKSkpCisJCWJyaWRnZS0+ZmxhZ3MgfD0gQlJJREdFX0hBU19QUzM7CisKKwkvKiBpcyB0aGlzIGVqZWN0YWJsZSBwMnAgYnJpZGdlPyAqLworCWlmIChicmlkZ2UtPmZsYWdzICYgQlJJREdFX0hBU19FSjApIHsKKwkJc3RydWN0IGFjcGlwaHBfZnVuYyAqZnVuYzsKKworCQlkYmcoImZvdW5kIGVqZWN0YWJsZSBwMnAgYnJpZGdlXG4iKTsKKworCQkvKiBtYWtlIGxpbmsgYmV0d2VlbiBQQ0kgYnJpZGdlIGFuZCBQQ0kgZnVuY3Rpb24gKi8KKwkJZnVuYyA9IGFjcGlwaHBfYnJpZGdlX2hhbmRsZV90b19mdW5jdGlvbihicmlkZ2UtPmhhbmRsZSk7CisJCWlmICghZnVuYykKKwkJCXJldHVybjsKKwkJYnJpZGdlLT5mdW5jID0gZnVuYzsKKwkJZnVuYy0+YnJpZGdlID0gYnJpZGdlOworCX0KK30KKworCiAvKiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBob3N0IGJyaWRnZSBkYXRhIHN0cnVjdHVyZSAqLwogc3RhdGljIHZvaWQgYWRkX2hvc3RfYnJpZGdlKGFjcGlfaGFuZGxlICpoYW5kbGUsIHN0cnVjdCBwY2lfYnVzICpwY2lfYnVzKQogewpAQCAtMzY0LDYgKzQzNyw3IEBACiAKIAlicmlkZ2UtPnR5cGUgPSBCUklER0VfVFlQRV9QMlA7CiAJYnJpZGdlLT5oYW5kbGUgPSBoYW5kbGU7CisJY29uZmlnX3AycF9icmlkZ2VfZmxhZ3MoYnJpZGdlKTsKIAogCWJyaWRnZS0+cGNpX2RldiA9IHBjaV9kZXZfZ2V0KHBjaV9kZXYpOwogCWJyaWRnZS0+cGNpX2J1cyA9IHBjaV9kZXYtPnN1Ym9yZGluYXRlOwpAQCAtNDIzLDcgKzQ5Nyw3IEBACiAJc3RhdHVzID0gYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLCBoYW5kbGUsICh1MzIpMSwKIAkJCQkgICAgIGZpbmRfcDJwX2JyaWRnZSwgZGV2LT5zdWJvcmRpbmF0ZSwgTlVMTCk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKQotCQl3YXJuKCJmaW5kX3AycF9icmlkZ2UgZmFpZWQgKGVycm9yIGNvZGUgPSAweCV4KVxuIiwgc3RhdHVzKTsKKwkJd2FybigiZmluZF9wMnBfYnJpZGdlIGZhaWxlZCAoZXJyb3IgY29kZSA9IDB4JXgpXG4iLCBzdGF0dXMpOwogCiAgb3V0OgogCXBjaV9kZXZfcHV0KGRldik7CkBAIC00NzgsNyArNTUyLDYgQEAKIAlpZiAoZGV0ZWN0X2VqZWN0YWJsZV9zbG90cyhoYW5kbGUpID4gMCkgewogCQlkYmcoImZvdW5kIFBDSSBob3N0LWJ1cyBicmlkZ2Ugd2l0aCBob3QtcGx1Z2dhYmxlIHNsb3RzXG4iKTsKIAkJYWRkX2hvc3RfYnJpZGdlKGhhbmRsZSwgcGNpX2J1cyk7Ci0JCXJldHVybiAwOwogCX0KIAogCS8qIHNlYXJjaCBQMlAgYnJpZGdlcyB1bmRlciB0aGlzIGhvc3QgYnJpZGdlICovCkBAIC00ODYsNyArNTU5LDcgQEAKIAkJCQkgICAgIGZpbmRfcDJwX2JyaWRnZSwgcGNpX2J1cywgTlVMTCk7CiAKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCi0JCXdhcm4oImZpbmRfcDJwX2JyaWRnZSBmYWllZCAoZXJyb3IgY29kZSA9IDB4JXgpXG4iLHN0YXR1cyk7CisJCXdhcm4oImZpbmRfcDJwX2JyaWRnZSBmYWlsZWQgKGVycm9yIGNvZGUgPSAweCV4KVxuIiwgc3RhdHVzKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTE2LDYgKzU4OSwxNiBAQAogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKIAkJZXJyKCJmYWlsZWQgdG8gcmVtb3ZlIG5vdGlmeSBoYW5kbGVyXG4iKTsKIAorCWlmICgoYnJpZGdlLT50eXBlICE9IEJSSURHRV9UWVBFX0hPU1QpICYmCisJICAgICgoYnJpZGdlLT5mbGFncyAmIEJSSURHRV9IQVNfRUowKSAmJiBicmlkZ2UtPmZ1bmMpKSB7CisJCXN0YXR1cyA9IGFjcGlfaW5zdGFsbF9ub3RpZnlfaGFuZGxlcihicmlkZ2UtPmZ1bmMtPmhhbmRsZSwKKwkJCQkJCUFDUElfU1lTVEVNX05PVElGWSwKKwkJCQkJCWhhbmRsZV9ob3RwbHVnX2V2ZW50X2Z1bmMsCisJCQkJCQlicmlkZ2UtPmZ1bmMpOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCisJCQllcnIoImZhaWxlZCB0byBpbnN0YWxsIGludGVycnVwdCBub3RpZnkgaGFuZGxlclxuIik7CisJfQorCiAJc2xvdCA9IGJyaWRnZS0+c2xvdHM7CiAJd2hpbGUgKHNsb3QpIHsKIAkJc3RydWN0IGFjcGlwaHBfc2xvdCAqbmV4dCA9IHNsb3QtPm5leHQ7CkBAIC01NDksNiArNjMyLDExIEBACiB7CiAJc3RydWN0IGFjcGlwaHBfYnJpZGdlICpicmlkZ2U7CiAKKwkvKiBjbGVhbnVwIHAycCBicmlkZ2VzIHVuZGVyIHRoaXMgUDJQIGJyaWRnZQorCSAgIGluIGEgZGVwdGgtZmlyc3QgbWFubmVyICovCisJYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLCBoYW5kbGUsICh1MzIpMSwKKwkJCQljbGVhbnVwX3AycF9icmlkZ2UsIE5VTEwsIE5VTEwpOworCiAJaWYgKCEoYnJpZGdlID0gYWNwaXBocF9oYW5kbGVfdG9fYnJpZGdlKGhhbmRsZSkpKQogCQlyZXR1cm4gQUVfT0s7CiAJY2xlYW51cF9icmlkZ2UoYnJpZGdlKTsKQEAgLTU1OSwxNSArNjQ3LDE0IEBACiB7CiAJc3RydWN0IGFjcGlwaHBfYnJpZGdlICpicmlkZ2U7CiAKKwkvKiBjbGVhbnVwIHAycCBicmlkZ2VzIHVuZGVyIHRoaXMgaG9zdCBicmlkZ2UKKwkgICBpbiBhIGRlcHRoLWZpcnN0IG1hbm5lciAqLworCWFjcGlfd2Fsa19uYW1lc3BhY2UoQUNQSV9UWVBFX0RFVklDRSwgaGFuZGxlLAorCQkJCSh1MzIpMSwgY2xlYW51cF9wMnBfYnJpZGdlLCBOVUxMLCBOVUxMKTsKKwogCWJyaWRnZSA9IGFjcGlwaHBfaGFuZGxlX3RvX2JyaWRnZShoYW5kbGUpOwotCWlmIChicmlkZ2UpIHsKKwlpZiAoYnJpZGdlKQogCQljbGVhbnVwX2JyaWRnZShicmlkZ2UpOwotCX0gZWxzZSB7Ci0JCS8qIGNsZWFuLXVwIHAycCBicmlkZ2VzIHVuZGVyIHRoaXMgaG9zdCBicmlkZ2UgKi8KLQkJYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVfREVWSUNFLCBoYW5kbGUsCi0JCQkJICAgIEFDUElfVUlOVDMyX01BWCwgY2xlYW51cF9wMnBfYnJpZGdlLAotCQkJCSAgICBOVUxMLCBOVUxMKTsKLQl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldiAqIGdldF9hcGljX3BjaV9pbmZvKGFjcGlfaGFuZGxlIGhhbmRsZSkKQEAgLTYzNCw3ICs3MjEsNyBAQAogCQlicmVhazsKIAl9CiAgb3V0OgotCWFjcGlfb3NfZnJlZShidWZmZXIucG9pbnRlcik7CisJa2ZyZWUoYnVmZmVyLnBvaW50ZXIpOwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc5NywzNiArODg0LDYgQEAKIH0KIAogCi0KLS8qKgotICogIGdldF9mdW5jIC0gZ2V0IGEgcG9pbnRlciB0byBhY3BpcGhwX2Z1bmMgZ2l2ZW4gYSBzbG90LCBkZXZpY2UKLSAqICBAc2xvdDogc2xvdCB0byBzZWFyY2gKLSAqICBAZGV2OiAgcGNpX2RldiBzdHJ1Y3QgdG8gbWF0Y2guCi0gKgotICogIFRoaXMgZnVuY3Rpb24gd2lsbCBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHBjaV9kZXYsCi0gKiAgc28gY2FsbGVycyBzaG91bGQgY2FsbCBwY2lfZGV2X3B1dCB3aGVuIGNvbXBsZXRlLgotICoKLSAqLwotc3RhdGljIHN0cnVjdCBhY3BpcGhwX2Z1bmMgKgotZ2V0X2Z1bmMoc3RydWN0IGFjcGlwaHBfc2xvdCAqc2xvdCwgc3RydWN0IHBjaV9kZXYgKmRldikKLXsKLQlzdHJ1Y3QgYWNwaXBocF9mdW5jICpmdW5jID0gTlVMTDsKLQlzdHJ1Y3QgcGNpX2J1cyAqYnVzID0gc2xvdC0+YnJpZGdlLT5wY2lfYnVzOwotCXN0cnVjdCBwY2lfZGV2ICpwZGV2OwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShmdW5jLCAmc2xvdC0+ZnVuY3MsIHNpYmxpbmcpIHsKLQkJcGRldiA9IHBjaV9nZXRfc2xvdChidXMsIFBDSV9ERVZGTihzbG90LT5kZXZpY2UsCi0JCQkJCWZ1bmMtPmZ1bmN0aW9uKSk7Ci0JCWlmIChwZGV2KSB7Ci0JCQlpZiAocGRldiA9PSBkZXYpCi0JCQkJYnJlYWs7Ci0JCQlwY2lfZGV2X3B1dChwZGV2KTsKLQkJfQotCX0KLQlyZXR1cm4gZnVuYzsKLX0KLQotCiAvKioKICAqIGFjcGlwaHBfYnVzX2FkZCAtIGFkZCBhIG5ldyBidXMgdG8gYWNwaSBzdWJzeXN0ZW0KICAqIEBmdW5jOiBhY3BpcGhwX2Z1bmMgb2YgdGhlIGJyaWRnZQpAQCAtODcyLDYgKzkyOSwyOCBAQAogfQogCiAKKy8qKgorICogYWNwaXBocF9idXNfdHJpbSAtIHRyaW0gYSBidXMgZnJvbSBhY3BpIHN1YnN5c3RlbQorICogQGhhbmRsZTogaGFuZGxlIHRvIGFjcGkgbmFtZXNwYWNlCisgKgorICovCitpbnQgYWNwaXBocF9idXNfdHJpbShhY3BpX2hhbmRsZSBoYW5kbGUpCit7CisJc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2U7CisJaW50IHJldHZhbDsKKworCXJldHZhbCA9IGFjcGlfYnVzX2dldF9kZXZpY2UoaGFuZGxlLCAmZGV2aWNlKTsKKwlpZiAocmV0dmFsKSB7CisJCWRiZygiYWNwaV9kZXZpY2Ugbm90IGZvdW5kXG4iKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBhY3BpX2J1c190cmltKGRldmljZSwgMSk7CisJaWYgKHJldHZhbCkKKwkJZXJyKCJjYW5ub3QgcmVtb3ZlIGZyb20gYWNwaSBsaXN0XG4iKTsKKworCXJldHVybiByZXR2YWw7Cit9CiAKIC8qKgogICogZW5hYmxlX2RldmljZSAtIGVuYWJsZSwgY29uZmlndXJlIGEgc2xvdApAQCAtODg5LDYgKzk2OCw3IEBACiAJc3RydWN0IGFjcGlwaHBfZnVuYyAqZnVuYzsKIAlpbnQgcmV0dmFsID0gMDsKIAlpbnQgbnVtLCBtYXgsIHBhc3M7CisJYWNwaV9zdGF0dXMgc3RhdHVzOwogCiAJaWYgKHNsb3QtPmZsYWdzICYgU0xPVF9FTkFCTEVEKQogCQlnb3RvIGVycl9leGl0OwpAQCAtOTE4LDE5ICs5OTgsMTcgQEAKIAkJCWlmIChkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9CUklER0UgfHwKIAkJCSAgICBkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9DQVJEQlVTKSB7CiAJCQkJbWF4ID0gcGNpX3NjYW5fYnJpZGdlKGJ1cywgZGV2LCBtYXgsIHBhc3MpOwotCQkJCWlmIChwYXNzICYmIGRldi0+c3Vib3JkaW5hdGUpIHsKKwkJCQlpZiAocGFzcyAmJiBkZXYtPnN1Ym9yZGluYXRlKQogCQkJCQlwY2lfYnVzX3NpemVfYnJpZGdlcyhkZXYtPnN1Ym9yZGluYXRlKTsKLQkJCQkJZnVuYyA9IGdldF9mdW5jKHNsb3QsIGRldik7Ci0JCQkJCWlmIChmdW5jKSB7Ci0JCQkJCQlhY3BpcGhwX2J1c19hZGQoZnVuYyk7Ci0JCQkJCQkvKiBzaWRlIGVmZmVjdCBvZiBnZXRfZnVuYyAqLwotCQkJCQkJcGNpX2Rldl9wdXQoZGV2KTsKLQkJCQkJfQotCQkJCX0KIAkJCX0KIAkJfQogCX0KIAorCWxpc3RfZm9yX2VhY2ggKGwsICZzbG90LT5mdW5jcykgeworCQlmdW5jID0gbGlzdF9lbnRyeShsLCBzdHJ1Y3QgYWNwaXBocF9mdW5jLCBzaWJsaW5nKTsKKwkJYWNwaXBocF9idXNfYWRkKGZ1bmMpOworCX0KKwogCXBjaV9idXNfYXNzaWduX3Jlc291cmNlcyhidXMpOwogCWFjcGlwaHBfc2FuaXRpemVfYnVzKGJ1cyk7CiAJcGNpX2VuYWJsZV9icmlkZ2VzKGJ1cyk7CkBAIC05NDMsNiArMTAyMSwxNyBAQAogCQlmdW5jID0gbGlzdF9lbnRyeShsLCBzdHJ1Y3QgYWNwaXBocF9mdW5jLCBzaWJsaW5nKTsKIAkJZnVuYy0+cGNpX2RldiA9IHBjaV9nZXRfc2xvdChidXMsIFBDSV9ERVZGTihzbG90LT5kZXZpY2UsCiAJCQkJCQkJZnVuYy0+ZnVuY3Rpb24pKTsKKwkJaWYgKCFmdW5jLT5wY2lfZGV2KQorCQkJY29udGludWU7CisKKwkJaWYgKGZ1bmMtPnBjaV9kZXYtPmhkcl90eXBlICE9IFBDSV9IRUFERVJfVFlQRV9CUklER0UgJiYKKwkJICAgIGZ1bmMtPnBjaV9kZXYtPmhkcl90eXBlICE9IFBDSV9IRUFERVJfVFlQRV9DQVJEQlVTKQorCQkJY29udGludWU7CisKKwkJc3RhdHVzID0gZmluZF9wMnBfYnJpZGdlKGZ1bmMtPmhhbmRsZSwgKHUzMikxLCBidXMsIE5VTEwpOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCisJCQl3YXJuKCJmaW5kX3AycF9icmlkZ2UgZmFpbGVkIChlcnJvciBjb2RlID0gMHgleClcbiIsCisJCQkJc3RhdHVzKTsKIAl9CiAKIAlzbG90LT5mbGFncyB8PSBTTE9UX0VOQUJMRUQ7CkBAIC05NjcsNiArMTA1NiwxOCBAQAogCiAJbGlzdF9mb3JfZWFjaCAobCwgJnNsb3QtPmZ1bmNzKSB7CiAJCWZ1bmMgPSBsaXN0X2VudHJ5KGwsIHN0cnVjdCBhY3BpcGhwX2Z1bmMsIHNpYmxpbmcpOworCisJCWlmIChmdW5jLT5icmlkZ2UpIHsKKwkJCS8qIGNsZWFudXAgcDJwIGJyaWRnZXMgdW5kZXIgdGhpcyBQMlAgYnJpZGdlICovCisJCQljbGVhbnVwX3AycF9icmlkZ2UoZnVuYy0+YnJpZGdlLT5oYW5kbGUsCisJCQkJCQkodTMyKTEsIE5VTEwsIE5VTEwpOworCQkJZnVuYy0+YnJpZGdlID0gTlVMTDsKKwkJfQorCisJCWFjcGlwaHBfYnVzX3RyaW0oZnVuYy0+aGFuZGxlKTsKKwkJLyogdHJ5IHRvIHJlbW92ZSBhbnl3YXkuCisJCSAqIGFjcGlwaHBfYnVzX2FkZCBtaWdodCBoYXZlIGJlZW4gZmFpbGVkICovCisKIAkJaWYgKCFmdW5jLT5wY2lfZGV2KQogCQkJY29udGludWU7CiAKQEAgLTExMTEsMTYgKzEyMTIsMTcgQEAKIAkJCShkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9CUklER0UgJiYKIAkJCShkZXYtPmNsYXNzID4+IDgpID09IFBDSV9DTEFTU19CUklER0VfUENJKSkpCiAJCXJldHVybjsKKwogCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9DQUNIRV9MSU5FX1NJWkUsCi0JCQlicmlkZ2UtPmhwcC5jYWNoZV9saW5lX3NpemUpOworCQkJYnJpZGdlLT5ocHAudDAtPmNhY2hlX2xpbmVfc2l6ZSk7CiAJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0xBVEVOQ1lfVElNRVIsCi0JCQlicmlkZ2UtPmhwcC5sYXRlbmN5X3RpbWVyKTsKKwkJCWJyaWRnZS0+aHBwLnQwLT5sYXRlbmN5X3RpbWVyKTsKIAlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCAmcGNpX2NtZCk7Ci0JaWYgKGJyaWRnZS0+aHBwLmVuYWJsZV9zZXJyKQorCWlmIChicmlkZ2UtPmhwcC50MC0+ZW5hYmxlX3NlcnIpCiAJCXBjaV9jbWQgfD0gUENJX0NPTU1BTkRfU0VSUjsKIAllbHNlCiAJCXBjaV9jbWQgJj0gflBDSV9DT01NQU5EX1NFUlI7Ci0JaWYgKGJyaWRnZS0+aHBwLmVuYWJsZV9wZXJyKQorCWlmIChicmlkZ2UtPmhwcC50MC0+ZW5hYmxlX3BlcnIpCiAJCXBjaV9jbWQgfD0gUENJX0NPTU1BTkRfUEFSSVRZOwogCWVsc2UKIAkJcGNpX2NtZCAmPSB+UENJX0NPTU1BTkRfUEFSSVRZOwpAQCAtMTEyOSwxMyArMTIzMSwxMyBAQAogCS8qIFByb2dyYW0gYnJpZGdlIGNvbnRyb2wgdmFsdWUgYW5kIGNoaWxkIGRldmljZXMgKi8KIAlpZiAoKGRldi0+Y2xhc3MgPj4gOCkgPT0gUENJX0NMQVNTX0JSSURHRV9QQ0kpIHsKIAkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX1NFQ19MQVRFTkNZX1RJTUVSLAotCQkJCWJyaWRnZS0+aHBwLmxhdGVuY3lfdGltZXIpOworCQkJCWJyaWRnZS0+aHBwLnQwLT5sYXRlbmN5X3RpbWVyKTsKIAkJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQlJJREdFX0NPTlRST0wsICZwY2lfYmN0bCk7Ci0JCWlmIChicmlkZ2UtPmhwcC5lbmFibGVfc2VycikKKwkJaWYgKGJyaWRnZS0+aHBwLnQwLT5lbmFibGVfc2VycikKIAkJCXBjaV9iY3RsIHw9IFBDSV9CUklER0VfQ1RMX1NFUlI7CiAJCWVsc2UKIAkJCXBjaV9iY3RsICY9IH5QQ0lfQlJJREdFX0NUTF9TRVJSOwotCQlpZiAoYnJpZGdlLT5ocHAuZW5hYmxlX3BlcnIpCisJCWlmIChicmlkZ2UtPmhwcC50MC0+ZW5hYmxlX3BlcnIpCiAJCQlwY2lfYmN0bCB8PSBQQ0lfQlJJREdFX0NUTF9QQVJJVFk7CiAJCWVsc2UKIAkJCXBjaV9iY3RsICY9IH5QQ0lfQlJJREdFX0NUTF9QQVJJVFk7CkBAIC0xMTU1LDYgKzEyNTcsNyBAQAogCiAJbWVtc2V0KCZicmlkZ2UsIDAsIHNpemVvZihicmlkZ2UpKTsKIAlicmlkZ2UuaGFuZGxlID0gaGFuZGxlOworCWJyaWRnZS5wY2lfYnVzID0gYnVzOwogCWJyaWRnZS5wY2lfZGV2ID0gYnVzLT5zZWxmOwogCWRlY29kZV9ocHAoJmJyaWRnZSk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZidXMtPmRldmljZXMsIGJ1c19saXN0KQpAQCAtMTI5Nyw2ICsxNDAwLDEzIEBACiAJY2FzZSBBQ1BJX05PVElGWV9FSkVDVF9SRVFVRVNUOgogCQkvKiByZXF1ZXN0IGRldmljZSBlamVjdCAqLwogCQlkYmcoIiVzOiBEZXZpY2UgZWplY3Qgbm90aWZ5IG9uICVzXG4iLCBfX0ZVTkNUSU9OX18sIG9iam5hbWUpOworCQlpZiAoKGJyaWRnZS0+dHlwZSAhPSBCUklER0VfVFlQRV9IT1NUKSAmJgorCQkgICAgKGJyaWRnZS0+ZmxhZ3MgJiBCUklER0VfSEFTX0VKMCkpIHsKKwkJCXN0cnVjdCBhY3BpcGhwX3Nsb3QgKnNsb3Q7CisJCQlzbG90ID0gYnJpZGdlLT5mdW5jLT5zbG90OworCQkJaWYgKCFhY3BpcGhwX2Rpc2FibGVfc2xvdChzbG90KSkKKwkJCQlhY3BpcGhwX2VqZWN0X3Nsb3Qoc2xvdCk7CisJCX0KIAkJYnJlYWs7CiAKIAljYXNlIEFDUElfTk9USUZZX0ZSRVFVRU5DWV9NSVNNQVRDSDoKQEAgLTE0OTAsOSArMTYwMCwxNSBAQAogCWlmIChyZXR2YWwpCiAJCWdvdG8gZXJyX2V4aXQ7CiAKLQlpZiAoZ2V0X3Nsb3Rfc3RhdHVzKHNsb3QpID09IEFDUElfU1RBX0FMTCkKKwlpZiAoZ2V0X3Nsb3Rfc3RhdHVzKHNsb3QpID09IEFDUElfU1RBX0FMTCkgewogCQkvKiBjb25maWd1cmUgYWxsIGZ1bmN0aW9ucyAqLwogCQlyZXR2YWwgPSBlbmFibGVfZGV2aWNlKHNsb3QpOworCQlpZiAocmV0dmFsKQorCQkJcG93ZXJfb2ZmX3Nsb3Qoc2xvdCk7CisJfSBlbHNlIHsKKwkJZGJnKCIlczogU2xvdCBzdGF0dXMgaXMgbm90IEFDUElfU1RBX0FMTFxuIiwgX19GVU5DVElPTl9fKTsKKwkJcG93ZXJfb2ZmX3Nsb3Qoc2xvdCk7CisJfQogCiAgZXJyX2V4aXQ6CiAJbXV0ZXhfdW5sb2NrKCZzbG90LT5jcml0X3NlY3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9pYm1waHBfY29yZS5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9pYm1waHBfY29yZS5jCmluZGV4IGUxM2Q1YjguLjU5MzkyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvaWJtcGhwX2NvcmUuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2libXBocF9jb3JlLmMKQEAgLTI4NSw3ICsyODUsNyBAQAogCQkJCQkodWxvbmcpIGhvdHBsdWdfc2xvdCwgKHVsb25nKSB2YWx1ZSk7CiAgICAgICAgIAogCWlibXBocF9sb2NrX29wZXJhdGlvbnMoKTsKLQlpZiAoaG90cGx1Z19zbG90ICYmIHZhbHVlKSB7CisJaWYgKGhvdHBsdWdfc2xvdCkgewogCQlwc2xvdCA9IGhvdHBsdWdfc2xvdC0+cHJpdmF0ZTsKIAkJaWYgKHBzbG90KSB7CiAJCQltZW1jcHkoJm15c2xvdCwgcHNsb3QsIHNpemVvZihzdHJ1Y3Qgc2xvdCkpOwpAQCAtMzE1LDcgKzMxNSw3IEBACiAJZGVidWcoImdldF9sYXRjaF9zdGF0dXMgLSBFbnRyeSBob3RwbHVnX3Nsb3RbJWx4XSBwdmFsdWVbJWx4XVxuIiwKIAkJCQkJKHVsb25nKSBob3RwbHVnX3Nsb3QsICh1bG9uZykgdmFsdWUpOwogCWlibXBocF9sb2NrX29wZXJhdGlvbnMoKTsKLQlpZiAoaG90cGx1Z19zbG90ICYmIHZhbHVlKSB7CisJaWYgKGhvdHBsdWdfc2xvdCkgewogCQlwc2xvdCA9IGhvdHBsdWdfc2xvdC0+cHJpdmF0ZTsKIAkJaWYgKHBzbG90KSB7CiAJCQltZW1jcHkoJm15c2xvdCwgcHNsb3QsIHNpemVvZihzdHJ1Y3Qgc2xvdCkpOwpAQCAtMzQyLDcgKzM0Miw3IEBACiAJZGVidWcoImdldF9wb3dlcl9zdGF0dXMgLSBFbnRyeSBob3RwbHVnX3Nsb3RbJWx4XSBwdmFsdWVbJWx4XVxuIiwKIAkJCQkJKHVsb25nKSBob3RwbHVnX3Nsb3QsICh1bG9uZykgdmFsdWUpOwogCWlibXBocF9sb2NrX29wZXJhdGlvbnMoKTsKLQlpZiAoaG90cGx1Z19zbG90ICYmIHZhbHVlKSB7CisJaWYgKGhvdHBsdWdfc2xvdCkgewogCQlwc2xvdCA9IGhvdHBsdWdfc2xvdC0+cHJpdmF0ZTsKIAkJaWYgKHBzbG90KSB7CiAJCQltZW1jcHkoJm15c2xvdCwgcHNsb3QsIHNpemVvZihzdHJ1Y3Qgc2xvdCkpOwpAQCAtMzY5LDcgKzM2OSw3IEBACiAJZGVidWcoImdldF9hZGFwdGVyX3N0YXR1cyAtIEVudHJ5IGhvdHBsdWdfc2xvdFslbHhdIHB2YWx1ZVslbHhdXG4iLAogCQkJCQkodWxvbmcpIGhvdHBsdWdfc2xvdCwgKHVsb25nKSB2YWx1ZSk7CiAJaWJtcGhwX2xvY2tfb3BlcmF0aW9ucygpOwotCWlmIChob3RwbHVnX3Nsb3QgJiYgdmFsdWUpIHsKKwlpZiAoaG90cGx1Z19zbG90KSB7CiAJCXBzbG90ID0gaG90cGx1Z19zbG90LT5wcml2YXRlOwogCQlpZiAocHNsb3QpIHsKIAkJCW1lbWNweSgmbXlzbG90LCBwc2xvdCwgc2l6ZW9mKHN0cnVjdCBzbG90KSk7CkBAIC00MDEsNyArNDAxLDcgQEAKIAogCWlibXBocF9sb2NrX29wZXJhdGlvbnMoKTsKIAotCWlmIChob3RwbHVnX3Nsb3QgJiYgdmFsdWUpIHsKKwlpZiAoaG90cGx1Z19zbG90KSB7CiAJCXBzbG90ID0gaG90cGx1Z19zbG90LT5wcml2YXRlOwogCQlpZiAocHNsb3QpIHsKIAkJCXJjID0gMDsKQEAgLTQ0MSw3ICs0NDEsNyBAQAogCiAJaWJtcGhwX2xvY2tfb3BlcmF0aW9ucygpOwogCi0JaWYgKGhvdHBsdWdfc2xvdCAmJiB2YWx1ZSkgeworCWlmIChob3RwbHVnX3Nsb3QpIHsKIAkJcHNsb3QgPSBob3RwbHVnX3Nsb3QtPnByaXZhdGU7CiAJCWlmIChwc2xvdCkgewogCQkJcmMgPSBnZXRfY3VyX2J1c19pbmZvKCZwc2xvdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaV9ob3RwbHVnLmggYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaV9ob3RwbHVnLmgKaW5kZXggZWIwZDAxZC4uZTkyOWI3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2lfaG90cGx1Zy5oCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpX2hvdHBsdWcuaApAQCAtMTc2LDExICsxNzYsNTEgQEAKIAkJCQkJIHN0cnVjdCBob3RwbHVnX3Nsb3RfaW5mbyAqaW5mbyk7CiBleHRlcm4gc3RydWN0IHN1YnN5c3RlbSBwY2lfaG90cGx1Z19zbG90c19zdWJzeXM7CiAKKy8qIFBDSSBTZXR0aW5nIFJlY29yZCAoVHlwZSAwKSAqLworc3RydWN0IGhwcF90eXBlMCB7CisJdTMyIHJldmlzaW9uOworCXU4ICBjYWNoZV9saW5lX3NpemU7CisJdTggIGxhdGVuY3lfdGltZXI7CisJdTggIGVuYWJsZV9zZXJyOworCXU4ICBlbmFibGVfcGVycjsKK307CisKKy8qIFBDSS1YIFNldHRpbmcgUmVjb3JkIChUeXBlIDEpICovCitzdHJ1Y3QgaHBwX3R5cGUxIHsKKwl1MzIgcmV2aXNpb247CisJdTggIG1heF9tZW1fcmVhZDsKKwl1OCAgYXZnX21heF9zcGxpdDsKKwl1MTYgdG90X21heF9zcGxpdDsKK307CisKKy8qIFBDSSBFeHByZXNzIFNldHRpbmcgUmVjb3JkIChUeXBlIDIpICovCitzdHJ1Y3QgaHBwX3R5cGUyIHsKKwl1MzIgcmV2aXNpb247CisJdTMyIHVuY19lcnJfbWFza19hbmQ7CisJdTMyIHVuY19lcnJfbWFza19vcjsKKwl1MzIgdW5jX2Vycl9zZXZlcl9hbmQ7CisJdTMyIHVuY19lcnJfc2V2ZXJfb3I7CisJdTMyIGNvcl9lcnJfbWFza19hbmQ7CisJdTMyIGNvcl9lcnJfbWFza19vcjsKKwl1MzIgYWR2X2Vycl9jYXBfYW5kOworCXUzMiBhZHZfZXJyX2NhcF9vcjsKKwl1MTYgcGNpX2V4cF9kZXZjdGxfYW5kOworCXUxNiBwY2lfZXhwX2RldmN0bF9vcjsKKwl1MTYgcGNpX2V4cF9sbmtjdGxfYW5kOworCXUxNiBwY2lfZXhwX2xua2N0bF9vcjsKKwl1MzIgc2VjX3VuY19lcnJfc2V2ZXJfYW5kOworCXUzMiBzZWNfdW5jX2Vycl9zZXZlcl9vcjsKKwl1MzIgc2VjX3VuY19lcnJfbWFza19hbmQ7CisJdTMyIHNlY191bmNfZXJyX21hc2tfb3I7Cit9OworCiBzdHJ1Y3QgaG90cGx1Z19wYXJhbXMgewotCXU4IGNhY2hlX2xpbmVfc2l6ZTsKLQl1OCBsYXRlbmN5X3RpbWVyOwotCXU4IGVuYWJsZV9zZXJyOwotCXU4IGVuYWJsZV9wZXJyOworCXN0cnVjdCBocHBfdHlwZTAgKnQwOwkJLyogVHlwZTA6IE5VTEwgaWYgbm90IGF2YWlsYWJsZSAqLworCXN0cnVjdCBocHBfdHlwZTEgKnQxOwkJLyogVHlwZTE6IE5VTEwgaWYgbm90IGF2YWlsYWJsZSAqLworCXN0cnVjdCBocHBfdHlwZTIgKnQyOwkJLyogVHlwZTI6IE5VTEwgaWYgbm90IGF2YWlsYWJsZSAqLworCXN0cnVjdCBocHBfdHlwZTAgdHlwZTBfZGF0YTsKKwlzdHJ1Y3QgaHBwX3R5cGUxIHR5cGUxX2RhdGE7CisJc3RydWN0IGhwcF90eXBlMiB0eXBlMl9kYXRhOwogfTsKIAogI2lmZGVmIENPTkZJR19BQ1BJCkBAIC0xODgsNyArMjI4LDcgQEAKICNpbmNsdWRlIDxhY3BpL2FjcGlfYnVzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3R5cGVzLmg+CiBleHRlcm4gYWNwaV9zdGF0dXMgYWNwaV9ydW5fb3NocChhY3BpX2hhbmRsZSBoYW5kbGUpOwotZXh0ZXJuIGFjcGlfc3RhdHVzIGFjcGlfZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKHN0cnVjdCBwY2lfZGV2ICpkZXYsCitleHRlcm4gYWNwaV9zdGF0dXMgYWNwaV9nZXRfaHBfcGFyYW1zX2Zyb21fZmlybXdhcmUoc3RydWN0IHBjaV9idXMgKmJ1cywKIAkJCQlzdHJ1Y3QgaG90cGx1Z19wYXJhbXMgKmhwcCk7CiBpbnQgYWNwaV9yb290X2JyaWRnZShhY3BpX2hhbmRsZSBoYW5kbGUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaWVocC5oIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHAuaAppbmRleCA5MmMxZjBmLi5jZTg5ZjU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaWVocC5oCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwLmgKQEAgLTI4NCw3ICsyODQsNyBAQAogc3RhdGljIGlubGluZSBpbnQgcGNpZWhwX2dldF9ocF9wYXJhbXNfZnJvbV9maXJtd2FyZShzdHJ1Y3QgcGNpX2RldiAqZGV2LAogCQkJc3RydWN0IGhvdHBsdWdfcGFyYW1zICpocHApCiB7Ci0JaWYgKEFDUElfRkFJTFVSRShhY3BpX2dldF9ocF9wYXJhbXNfZnJvbV9maXJtd2FyZShkZXYsIGhwcCkpKQorCWlmIChBQ1BJX0ZBSUxVUkUoYWNwaV9nZXRfaHBfcGFyYW1zX2Zyb21fZmlybXdhcmUoZGV2LT5idXMsIGhwcCkpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX2NvcmUuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX2NvcmUuYwppbmRleCA2MDFjZjkwLi5jNjdiN2MzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3BjaWVocF9jb3JlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfY29yZS5jCkBAIC02OSw2ICs2OSw3IEBACiBzdGF0aWMgaW50IGdldF9hdHRlbnRpb25fc3RhdHVzCShzdHJ1Y3QgaG90cGx1Z19zbG90ICpzbG90LCB1OCAqdmFsdWUpOwogc3RhdGljIGludCBnZXRfbGF0Y2hfc3RhdHVzCShzdHJ1Y3QgaG90cGx1Z19zbG90ICpzbG90LCB1OCAqdmFsdWUpOwogc3RhdGljIGludCBnZXRfYWRhcHRlcl9zdGF0dXMJKHN0cnVjdCBob3RwbHVnX3Nsb3QgKnNsb3QsIHU4ICp2YWx1ZSk7CitzdGF0aWMgaW50IGdldF9hZGRyZXNzCQkoc3RydWN0IGhvdHBsdWdfc2xvdCAqc2xvdCwgdTMyICp2YWx1ZSk7CiBzdGF0aWMgaW50IGdldF9tYXhfYnVzX3NwZWVkCShzdHJ1Y3QgaG90cGx1Z19zbG90ICpzbG90LCBlbnVtIHBjaV9idXNfc3BlZWQgKnZhbHVlKTsKIHN0YXRpYyBpbnQgZ2V0X2N1cl9idXNfc3BlZWQJKHN0cnVjdCBob3RwbHVnX3Nsb3QgKnNsb3QsIGVudW0gcGNpX2J1c19zcGVlZCAqdmFsdWUpOwogCkBAIC04MSw2ICs4Miw3IEBACiAJLmdldF9hdHRlbnRpb25fc3RhdHVzID0JZ2V0X2F0dGVudGlvbl9zdGF0dXMsCiAJLmdldF9sYXRjaF9zdGF0dXMgPQlnZXRfbGF0Y2hfc3RhdHVzLAogCS5nZXRfYWRhcHRlcl9zdGF0dXMgPQlnZXRfYWRhcHRlcl9zdGF0dXMsCisJLmdldF9hZGRyZXNzID0JCWdldF9hZGRyZXNzLAogICAJLmdldF9tYXhfYnVzX3NwZWVkID0JZ2V0X21heF9idXNfc3BlZWQsCiAgIAkuZ2V0X2N1cl9idXNfc3BlZWQgPQlnZXRfY3VyX2J1c19zcGVlZCwKIH07CkBAIC0zMzEsNiArMzMzLDE4IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X2FkZHJlc3Moc3RydWN0IGhvdHBsdWdfc2xvdCAqaG90cGx1Z19zbG90LCB1MzIgKnZhbHVlKQoreworCXN0cnVjdCBzbG90ICpzbG90ID0gaG90cGx1Z19zbG90LT5wcml2YXRlOworCXN0cnVjdCBwY2lfYnVzICpidXMgPSBzbG90LT5jdHJsLT5wY2lfZGV2LT5zdWJvcmRpbmF0ZTsKKworCWRiZygiJXMgLSBwaHlzaWNhbF9zbG90ID0gJXNcbiIsIF9fRlVOQ1RJT05fXywgaG90cGx1Z19zbG90LT5uYW1lKTsKKworCSp2YWx1ZSA9IChwY2lfZG9tYWluX25yKGJ1cykgPDwgMTYpIHwgKHNsb3QtPmJ1cyA8PCA4KSB8IHNsb3QtPmRldmljZTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdldF9tYXhfYnVzX3NwZWVkKHN0cnVjdCBob3RwbHVnX3Nsb3QgKmhvdHBsdWdfc2xvdCwgZW51bSBwY2lfYnVzX3NwZWVkICp2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc2xvdCAqc2xvdCA9IGhvdHBsdWdfc2xvdC0+cHJpdmF0ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX2hwYy5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfaHBjLmMKaW5kZXggNmMxNGQ5ZS4uZDc3MTM4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfaHBjLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfaHBjLmMKQEAgLTEyODgsNyArMTI4OCw3IEBACiAJCWlmIChBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewogCQkJZGJnKCJHYWluZWQgY29udHJvbCBmb3IgaG90cGx1ZyBIVyBmb3IgcGNpICVzICglcylcbiIsCiAJCQkJcGNpX25hbWUoZGV2KSwgKGNoYXIgKilzdHJpbmcucG9pbnRlcik7Ci0JCQlhY3BpX29zX2ZyZWUoc3RyaW5nLnBvaW50ZXIpOworCQkJa2ZyZWUoc3RyaW5nLnBvaW50ZXIpOwogCQkJcmV0dXJuIDA7CiAJCX0KIAkJaWYgKGFjcGlfcm9vdF9icmlkZ2UoaGFuZGxlKSkKQEAgLTEzMDIsNyArMTMwMiw3IEBACiAJZXJyKCJDYW5ub3QgZ2V0IGNvbnRyb2wgb2YgaG90cGx1ZyBoYXJkd2FyZSBmb3IgcGNpICVzXG4iLAogCQkJcGNpX25hbWUoZGV2KSk7CiAKLQlhY3BpX29zX2ZyZWUoc3RyaW5nLnBvaW50ZXIpOworCWtmcmVlKHN0cmluZy5wb2ludGVyKTsKIAlyZXR1cm4gLTE7CiB9CiAjZW5kaWYKQEAgLTE0MDQsOSArMTQwNCw2IEBACiAJaW5mbygiSFBDIHZlbmRvcl9pZCAleCBkZXZpY2VfaWQgJXggc3NfdmlkICV4IHNzX2RpZCAleFxuIiwgcGRldi0+dmVuZG9yLCBwZGV2LT5kZXZpY2UsIAogCQlwZGV2LT5zdWJzeXN0ZW1fdmVuZG9yLCBwZGV2LT5zdWJzeXN0ZW1fZGV2aWNlKTsKIAotCWlmIChwY2lfZW5hYmxlX2RldmljZShwZGV2KSkKLQkJZ290byBhYm9ydF9mcmVlX2N0bHI7Ci0JCiAJbXV0ZXhfaW5pdCgmY3RybC0+Y3JpdF9zZWN0KTsKIAkvKiBzZXR1cCB3YWl0IHF1ZXVlICovCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmY3RybC0+cXVldWUpOwpAQCAtMTQ3NCw3ICsxNDcxLDcgQEAKIAlyYyA9IGhwX3JlZ2lzdGVyX3JlYWRfd29yZChwZGV2LCBTTE9UX0NUUkwoY3RybC0+Y2FwX2Jhc2UpLCB0ZW1wX3dvcmQpOwogCWlmIChyYykgewogCQllcnIoIiVzIDogaHBfcmVnaXN0ZXJfcmVhZF93b3JkIFNMT1RfQ1RSTCBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCWdvdG8gYWJvcnRfZnJlZV9jdGxyOworCQlnb3RvIGFib3J0X2ZyZWVfaXJxOwogCX0KIAogCWludHJfZW5hYmxlID0gaW50cl9lbmFibGUgfCBQUlNOX0RFVEVDVF9FTkFCTEU7CkBAIC0xNTAwLDE5ICsxNDk3LDE5IEBACiAJcmMgPSBocF9yZWdpc3Rlcl93cml0ZV93b3JkKHBkZXYsIFNMT1RfQ1RSTChjdHJsLT5jYXBfYmFzZSksIHRlbXBfd29yZCk7CiAJaWYgKHJjKSB7CiAJCWVycigiJXMgOiBocF9yZWdpc3Rlcl93cml0ZV93b3JkIFNMT1RfQ1RSTCBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCWdvdG8gYWJvcnRfZnJlZV9jdGxyOworCQlnb3RvIGFib3J0X2ZyZWVfaXJxOwogCX0KIAlyYyA9IGhwX3JlZ2lzdGVyX3JlYWRfd29yZChwaHBfY3Rsci0+cGNpX2RldiwgU0xPVF9TVEFUVVMoY3RybC0+Y2FwX2Jhc2UpLCBzbG90X3N0YXR1cyk7CiAJaWYgKHJjKSB7CiAJCWVycigiJXMgOiBocF9yZWdpc3Rlcl9yZWFkX3dvcmQgU0xPVF9TVEFUVVMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlnb3RvIGFib3J0X2ZyZWVfY3RscjsKKwkJZ290byBhYm9ydF9kaXNhYmxlX2ludHI7CiAJfQogCQogCXRlbXBfd29yZCA9ICAweDFGOyAvKiBDbGVhciBhbGwgZXZlbnRzICovCiAJcmMgPSBocF9yZWdpc3Rlcl93cml0ZV93b3JkKHBocF9jdGxyLT5wY2lfZGV2LCBTTE9UX1NUQVRVUyhjdHJsLT5jYXBfYmFzZSksIHRlbXBfd29yZCk7CiAJaWYgKHJjKSB7CiAJCWVycigiJXMgOiBocF9yZWdpc3Rlcl93cml0ZV93b3JkIFNMT1RfU1RBVFVTIGZhaWxlZFxuIiwgX19GVU5DVElPTl9fKTsKLQkJZ290byBhYm9ydF9mcmVlX2N0bHI7CisJCWdvdG8gYWJvcnRfZGlzYWJsZV9pbnRyOwogCX0KIAkKIAlpZiAocGNpZWhwX2ZvcmNlKSB7CkBAIC0xNTIxLDcgKzE1MTgsNyBAQAogCX0gZWxzZSB7CiAJCXJjID0gcGNpZWhwX2dldF9ocF9od19jb250cm9sX2Zyb21fZmlybXdhcmUoY3RybC0+cGNpX2Rldik7CiAJCWlmIChyYykKLQkJCWdvdG8gYWJvcnRfZnJlZV9jdGxyOworCQkJZ290byBhYm9ydF9kaXNhYmxlX2ludHI7CiAJfQogCiAJLyogIEFkZCB0aGlzIEhQQyBpbnN0YW5jZSBpbnRvIHRoZSBIUEMgbGlzdCAqLwpAQCAtMTU0OCw2ICsxNTQ1LDIxIEBACiAJcmV0dXJuIDA7CiAKIAkvKiBXZSBlbmQgdXAgaGVyZSBmb3IgdGhlIG1hbnkgcG9zc2libGUgd2F5cyB0byBmYWlsIHRoaXMgQVBJLiAgKi8KK2Fib3J0X2Rpc2FibGVfaW50cjoKKwlyYyA9IGhwX3JlZ2lzdGVyX3JlYWRfd29yZChwZGV2LCBTTE9UX0NUUkwoY3RybC0+Y2FwX2Jhc2UpLCB0ZW1wX3dvcmQpOworCWlmICghcmMpIHsKKwkJdGVtcF93b3JkICY9IH4oaW50cl9lbmFibGUgfCBIUF9JTlRSX0VOQUJMRSk7CisJCXJjID0gaHBfcmVnaXN0ZXJfd3JpdGVfd29yZChwZGV2LCBTTE9UX0NUUkwoY3RybC0+Y2FwX2Jhc2UpLCB0ZW1wX3dvcmQpOworCX0KKwlpZiAocmMpCisJCWVycigiJXMgOiBkaXNhYmxpbmcgaW50ZXJydXB0cyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7CisKK2Fib3J0X2ZyZWVfaXJxOgorCWlmIChwY2llaHBfcG9sbF9tb2RlKQorCQlkZWxfdGltZXJfc3luYygmcGhwX2N0bHItPmludF9wb2xsX3RpbWVyKTsKKwllbHNlCisJCWZyZWVfaXJxKHBocF9jdGxyLT5pcnEsIGN0cmwpOworCiBhYm9ydF9mcmVlX2N0bHI6CiAJcGNpZV9jYXBfYmFzZSA9IHNhdmVkX2NhcF9iYXNlOwogCWtmcmVlKHBocF9jdGxyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX3BjaS5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfcGNpLmMKaW5kZXggNDAxN2ZiMC4uODU0YWFlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfcGNpLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfcGNpLmMKQEAgLTM0LDYgKzM0LDE0NCBAQAogI2luY2x1ZGUgIi4uL3BjaS5oIgogI2luY2x1ZGUgInBjaWVocC5oIgogCitzdGF0aWMgdm9pZCBwcm9ncmFtX2hwcF90eXBlMChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3QgaHBwX3R5cGUwICpocHApCit7CisJdTE2IHBjaV9jbWQsIHBjaV9iY3RsOworCisJaWYgKGhwcC0+cmV2aXNpb24gPiAxKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBSZXYuJWQgdHlwZTAgcmVjb3JkIG5vdCBzdXBwb3J0ZWRcbiIsCisJCSAgICAgICBfX0ZVTkNUSU9OX18sIGhwcC0+cmV2aXNpb24pOworCQlyZXR1cm47CisJfQorCisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX0NBQ0hFX0xJTkVfU0laRSwgaHBwLT5jYWNoZV9saW5lX3NpemUpOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9MQVRFTkNZX1RJTUVSLCBocHAtPmxhdGVuY3lfdGltZXIpOworCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZwY2lfY21kKTsKKwlpZiAoaHBwLT5lbmFibGVfc2VycikKKwkJcGNpX2NtZCB8PSBQQ0lfQ09NTUFORF9TRVJSOworCWVsc2UKKwkJcGNpX2NtZCAmPSB+UENJX0NPTU1BTkRfU0VSUjsKKwlpZiAoaHBwLT5lbmFibGVfcGVycikKKwkJcGNpX2NtZCB8PSBQQ0lfQ09NTUFORF9QQVJJVFk7CisJZWxzZQorCQlwY2lfY21kICY9IH5QQ0lfQ09NTUFORF9QQVJJVFk7CisJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsIHBjaV9jbWQpOworCisJLyogUHJvZ3JhbSBicmlkZ2UgY29udHJvbCB2YWx1ZSAqLworCWlmICgoZGV2LT5jbGFzcyA+PiA4KSA9PSBQQ0lfQ0xBU1NfQlJJREdFX1BDSSkgeworCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBQQ0lfU0VDX0xBVEVOQ1lfVElNRVIsCisJCQkJICAgICAgaHBwLT5sYXRlbmN5X3RpbWVyKTsKKwkJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQlJJREdFX0NPTlRST0wsICZwY2lfYmN0bCk7CisJCWlmIChocHAtPmVuYWJsZV9zZXJyKQorCQkJcGNpX2JjdGwgfD0gUENJX0JSSURHRV9DVExfU0VSUjsKKwkJZWxzZQorCQkJcGNpX2JjdGwgJj0gflBDSV9CUklER0VfQ1RMX1NFUlI7CisJCWlmIChocHAtPmVuYWJsZV9wZXJyKQorCQkJcGNpX2JjdGwgfD0gUENJX0JSSURHRV9DVExfUEFSSVRZOworCQllbHNlCisJCQlwY2lfYmN0bCAmPSB+UENJX0JSSURHRV9DVExfUEFSSVRZOworCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQlJJREdFX0NPTlRST0wsIHBjaV9iY3RsKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHByb2dyYW1faHBwX3R5cGUyKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBocHBfdHlwZTIgKmhwcCkKK3sKKwlpbnQgcG9zOworCXUxNiByZWcxNjsKKwl1MzIgcmVnMzI7CisKKwlpZiAoaHBwLT5yZXZpc2lvbiA+IDEpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IFJldi4lZCB0eXBlMiByZWNvcmQgbm90IHN1cHBvcnRlZFxuIiwKKwkJICAgICAgIF9fRlVOQ1RJT05fXywgaHBwLT5yZXZpc2lvbik7CisJCXJldHVybjsKKwl9CisKKwkvKiBGaW5kIFBDSSBFeHByZXNzIGNhcGFiaWxpdHkgKi8KKwlwb3MgPSBwY2lfZmluZF9jYXBhYmlsaXR5KGRldiwgUENJX0NBUF9JRF9FWFApOworCWlmICghcG9zKQorCQlyZXR1cm47CisKKwkvKiBJbml0aWFsaXplIERldmljZSBDb250cm9sIFJlZ2lzdGVyICovCisJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBwb3MgKyBQQ0lfRVhQX0RFVkNUTCwgJnJlZzE2KTsKKwlyZWcxNiA9IChyZWcxNiAmIGhwcC0+cGNpX2V4cF9kZXZjdGxfYW5kKSB8IGhwcC0+cGNpX2V4cF9kZXZjdGxfb3I7CisJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgcG9zICsgUENJX0VYUF9ERVZDVEwsIHJlZzE2KTsKKworCS8qIEluaXRpYWxpemUgTGluayBDb250cm9sIFJlZ2lzdGVyICovCisJaWYgKGRldi0+c3Vib3JkaW5hdGUpIHsKKwkJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBwb3MgKyBQQ0lfRVhQX0xOS0NUTCwgJnJlZzE2KTsKKwkJcmVnMTYgPSAocmVnMTYgJiBocHAtPnBjaV9leHBfbG5rY3RsX2FuZCkKKwkJCXwgaHBwLT5wY2lfZXhwX2xua2N0bF9vcjsKKwkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgcG9zICsgUENJX0VYUF9MTktDVEwsIHJlZzE2KTsKKwl9CisKKwkvKiBGaW5kIEFkdmFuY2VkIEVycm9yIFJlcG9ydGluZyBFbmhhbmNlZCBDYXBhYmlsaXR5ICovCisJcG9zID0gMjU2OworCWRvIHsKKwkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgcG9zLCAmcmVnMzIpOworCQlpZiAoUENJX0VYVF9DQVBfSUQocmVnMzIpID09IFBDSV9FWFRfQ0FQX0lEX0VSUikKKwkJCWJyZWFrOworCX0gd2hpbGUgKChwb3MgPSBQQ0lfRVhUX0NBUF9ORVhUKHJlZzMyKSkpOworCWlmICghcG9zKQorCQlyZXR1cm47CisKKwkvKiBJbml0aWFsaXplIFVuY29ycmVjdGFibGUgRXJyb3IgTWFzayBSZWdpc3RlciAqLworCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIHBvcyArIFBDSV9FUlJfVU5DT1JfTUFTSywgJnJlZzMyKTsKKwlyZWczMiA9IChyZWczMiAmIGhwcC0+dW5jX2Vycl9tYXNrX2FuZCkgfCBocHAtPnVuY19lcnJfbWFza19vcjsKKwlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgcG9zICsgUENJX0VSUl9VTkNPUl9NQVNLLCByZWczMik7CisKKwkvKiBJbml0aWFsaXplIFVuY29ycmVjdGFibGUgRXJyb3IgU2V2ZXJpdHkgUmVnaXN0ZXIgKi8KKwlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBwb3MgKyBQQ0lfRVJSX1VOQ09SX1NFVkVSLCAmcmVnMzIpOworCXJlZzMyID0gKHJlZzMyICYgaHBwLT51bmNfZXJyX3NldmVyX2FuZCkgfCBocHAtPnVuY19lcnJfc2V2ZXJfb3I7CisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHBvcyArIFBDSV9FUlJfVU5DT1JfU0VWRVIsIHJlZzMyKTsKKworCS8qIEluaXRpYWxpemUgQ29ycmVjdGFibGUgRXJyb3IgTWFzayBSZWdpc3RlciAqLworCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIHBvcyArIFBDSV9FUlJfQ09SX01BU0ssICZyZWczMik7CisJcmVnMzIgPSAocmVnMzIgJiBocHAtPmNvcl9lcnJfbWFza19hbmQpIHwgaHBwLT5jb3JfZXJyX21hc2tfb3I7CisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHBvcyArIFBDSV9FUlJfQ09SX01BU0ssIHJlZzMyKTsKKworCS8qIEluaXRpYWxpemUgQWR2YW5jZWQgRXJyb3IgQ2FwYWJpbGl0aWVzIGFuZCBDb250cm9sIFJlZ2lzdGVyICovCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgcG9zICsgUENJX0VSUl9DQVAsICZyZWczMik7CisJcmVnMzIgPSAocmVnMzIgJiBocHAtPmFkdl9lcnJfY2FwX2FuZCkgfCBocHAtPmFkdl9lcnJfY2FwX29yOworCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBwb3MgKyBQQ0lfRVJSX0NBUCwgcmVnMzIpOworCisJLyoKKwkgKiBGSVhNRTogVGhlIGZvbGxvd2luZyB0d28gcmVnaXN0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KKwkgKgorCSAqICAgbyBTZWNvbmRhcnkgVW5jb3JyZWN0YWJsZSBFcnJvciBTZXZlcml0eSBSZWdpc3RlcgorCSAqICAgbyBTZWNvbmRhcnkgVW5jb3JyZWN0YWJsZSBFcnJvciBNYXNrIFJlZ2lzdGVyCisJICovCit9CisKK3N0YXRpYyB2b2lkIHByb2dyYW1fZndfcHJvdmlkZWRfdmFsdWVzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJc3RydWN0IHBjaV9kZXYgKmNkZXY7CisJc3RydWN0IGhvdHBsdWdfcGFyYW1zIGhwcDsKKworCS8qIFByb2dyYW0gaHBwIHZhbHVlcyBmb3IgdGhpcyBkZXZpY2UgKi8KKwlpZiAoIShkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9OT1JNQUwgfHwKKwkJCShkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9CUklER0UgJiYKKwkJCShkZXYtPmNsYXNzID4+IDgpID09IFBDSV9DTEFTU19CUklER0VfUENJKSkpCisJCXJldHVybjsKKworCWlmIChwY2llaHBfZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKGRldiwgJmhwcCkpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IENvdWxkIG5vdCBnZXQgaG90cGx1ZyBwYXJhbWV0ZXJzXG4iLAorCQkgICAgICAgX19GVU5DVElPTl9fKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChocHAudDIpCisJCXByb2dyYW1faHBwX3R5cGUyKGRldiwgaHBwLnQyKTsKKwlpZiAoaHBwLnQwKQorCQlwcm9ncmFtX2hwcF90eXBlMChkZXYsIGhwcC50MCk7CisKKwkvKiBQcm9ncmFtIGNoaWxkIGRldmljZXMgKi8KKwlpZiAoZGV2LT5zdWJvcmRpbmF0ZSkgeworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNkZXYsICZkZXYtPnN1Ym9yZGluYXRlLT5kZXZpY2VzLAorCQkJCSAgICBidXNfbGlzdCkKKwkJCXByb2dyYW1fZndfcHJvdmlkZWRfdmFsdWVzKGNkZXYpOworCX0KK30KKwogc3RhdGljIGludCBwY2llaHBfYWRkX2JyaWRnZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXN0cnVjdCBwY2lfYnVzICpwYXJlbnQgPSBkZXYtPmJ1czsKQEAgLTY2LDEwICsyMDQsMTEgQEAKIAlzdHJ1Y3QgcGNpX2J1cyAqcGFyZW50ID0gcF9zbG90LT5jdHJsLT5wY2lfZGV2LT5zdWJvcmRpbmF0ZTsKIAlpbnQgbnVtLCBmbjsKIAotCWRldiA9IHBjaV9maW5kX3Nsb3QocF9zbG90LT5idXMsIFBDSV9ERVZGTihwX3Nsb3QtPmRldmljZSwgMCkpOworCWRldiA9IHBjaV9nZXRfc2xvdChwYXJlbnQsIFBDSV9ERVZGTihwX3Nsb3QtPmRldmljZSwgMCkpOwogCWlmIChkZXYpIHsKIAkJZXJyKCJEZXZpY2UgJXMgYWxyZWFkeSBleGlzdHMgYXQgJXg6JXgsIGNhbm5vdCBob3QtYWRkXG4iLAogCQkJCXBjaV9uYW1lKGRldiksIHBfc2xvdC0+YnVzLCBwX3Nsb3QtPmRldmljZSk7CisJCXBjaV9kZXZfcHV0KGRldik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtODYsMTQgKzIyNSwxNSBAQAogCQlpZiAoKGRldi0+Y2xhc3MgPj4gMTYpID09IFBDSV9CQVNFX0NMQVNTX0RJU1BMQVkpIHsKIAkJCWVycigiQ2Fubm90IGhvdC1hZGQgZGlzcGxheSBkZXZpY2UgJXNcbiIsCiAJCQkJCXBjaV9uYW1lKGRldikpOworCQkJcGNpX2Rldl9wdXQoZGV2KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICgoZGV2LT5oZHJfdHlwZSA9PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKSB8fAogCQkJCShkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9DQVJEQlVTKSkgewogCQkJcGNpZWhwX2FkZF9icmlkZ2UoZGV2KTsKIAkJfQotCQkvKiBUQkQ6IHByb2dyYW0gZmlybXdhcmUgcHJvdmlkZWQgX0hQUCB2YWx1ZXMgKi8KLQkJLyogcHJvZ3JhbV9md19wcm92aWRlZF92YWx1ZXMoZGV2KTsgKi8KKwkJcHJvZ3JhbV9md19wcm92aWRlZF92YWx1ZXMoZGV2KTsKKwkJcGNpX2Rldl9wdXQoZGV2KTsKIAl9CiAKIAlwY2lfYnVzX2Fzc2lnbl9yZXNvdXJjZXMocGFyZW50KTsKQEAgLTEwNiwxOCArMjQ2LDIwIEBACiAJaW50IHJjID0gMDsKIAlpbnQgajsKIAl1OCBiY3RsID0gMDsKKwlzdHJ1Y3QgcGNpX2J1cyAqcGFyZW50ID0gcF9zbG90LT5jdHJsLT5wY2lfZGV2LT5zdWJvcmRpbmF0ZTsKIAogCWRiZygiJXM6IGJ1cy9kZXYgPSAleC8leFxuIiwgX19GVU5DVElPTl9fLCBwX3Nsb3QtPmJ1cywKIAkJCQlwX3Nsb3QtPmRldmljZSk7CiAKIAlmb3IgKGo9MDsgajw4IDsgaisrKSB7Ci0JCXN0cnVjdCBwY2lfZGV2KiB0ZW1wID0gcGNpX2ZpbmRfc2xvdChwX3Nsb3QtPmJ1cywKKwkJc3RydWN0IHBjaV9kZXYqIHRlbXAgPSBwY2lfZ2V0X3Nsb3QocGFyZW50LAogCQkJCShwX3Nsb3QtPmRldmljZSA8PCAzKSB8IGopOwogCQlpZiAoIXRlbXApCiAJCQljb250aW51ZTsKIAkJaWYgKCh0ZW1wLT5jbGFzcyA+PiAxNikgPT0gUENJX0JBU0VfQ0xBU1NfRElTUExBWSkgewogCQkJZXJyKCJDYW5ub3QgcmVtb3ZlIGRpc3BsYXkgZGV2aWNlICVzXG4iLAogCQkJCQlwY2lfbmFtZSh0ZW1wKSk7CisJCQlwY2lfZGV2X3B1dCh0ZW1wKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICh0ZW1wLT5oZHJfdHlwZSA9PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKSB7CkBAIC0xMjUsMTAgKzI2NywxMiBAQAogCQkJaWYgKGJjdGwgJiBQQ0lfQlJJREdFX0NUTF9WR0EpIHsKIAkJCQllcnIoIkNhbm5vdCByZW1vdmUgZGlzcGxheSBkZXZpY2UgJXNcbiIsCiAJCQkJCQlwY2lfbmFtZSh0ZW1wKSk7CisJCQkJcGNpX2Rldl9wdXQodGVtcCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KIAkJcGNpX3JlbW92ZV9idXNfZGV2aWNlKHRlbXApOworCQlwY2lfZGV2X3B1dCh0ZW1wKTsKIAl9CiAJLyogCiAJICogU29tZSBQQ0kgRXhwcmVzcyByb290IHBvcnRzIHJlcXVpcmUgZml4dXAgYWZ0ZXIgaG90LXBsdWcgb3BlcmF0aW9uLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9zZ2lfaG90cGx1Zy5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9zZ2lfaG90cGx1Zy5jCmluZGV4IDhjYjlhYmQuLmYzMWQ4M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2dpX2hvdHBsdWcuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3NnaV9ob3RwbHVnLmMKQEAgLTE4LDExICsxOCwxMyBAQAogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CiAKICNpbmNsdWRlIDxhc20vc24vYWRkcnMuaD4KKyNpbmNsdWRlIDxhc20vc24vZ2VvLmg+CiAjaW5jbHVkZSA8YXNtL3NuL2wxLmg+CiAjaW5jbHVkZSA8YXNtL3NuL21vZHVsZS5oPgogI2luY2x1ZGUgPGFzbS9zbi9wY2licl9wcm92aWRlci5oPgogI2luY2x1ZGUgPGFzbS9zbi9wY2lidXNfcHJvdmlkZXJfZGVmcy5oPgogI2luY2x1ZGUgPGFzbS9zbi9wY2lkZXYuaD4KKyNpbmNsdWRlIDxhc20vc24vc25fZmVhdHVyZV9zZXRzLmg+CiAjaW5jbHVkZSA8YXNtL3NuL3NuX3NhbC5oPgogI2luY2x1ZGUgPGFzbS9zbi90eXBlcy5oPgogCkBAIC0xMDIsOCArMTA0LDcgQEAKIHN0YXRpYyBpbnQgc25fcGNpX3Nsb3RfdmFsaWQoc3RydWN0IHBjaV9idXMgKnBjaV9idXMsIGludCBkZXZpY2UpCiB7CiAJc3RydWN0IHBjaWJ1c19pbmZvICpwY2lidXNfaW5mbzsKLQlpbnQgYnJpY2t0eXBlOwotCWludCBidXNfbnVtOworCXUxNiBidXNudW0sIHNlZ21lbnQsIGlvYm9hcmRfdHlwZTsKIAogCXBjaWJ1c19pbmZvID0gU05fUENJQlVTX0JVU1NPRlRfSU5GTyhwY2lfYnVzKTsKIApAQCAtMTExLDEyICsxMTIsMTQgQEAKIAlpZiAoIShwY2lidXNfaW5mby0+cGJpX3ZhbGlkX2RldmljZXMgJiAoMSA8PCBkZXZpY2UpKSkKIAkJcmV0dXJuIC1FUEVSTTsKIAotCWJyaWNrdHlwZSA9IE1PRFVMRV9HRVRfQlRZUEUocGNpYnVzX2luZm8tPnBiaV9tb2R1bGVpZCk7Ci0JYnVzX251bSA9IHBjaWJ1c19pbmZvLT5wYmlfYnVzY29tbW9uLmJzX3BlcnNpc3RfYnVzbnVtICYgMHhmOworCWlvYm9hcmRfdHlwZSA9IHNuX2lvYm9hcmRfdG9fcGNpX2J1cyhwY2lfYnVzKTsKKwlidXNudW0gPSBwY2lidXNfaW5mby0+cGJpX2J1c2NvbW1vbi5ic19wZXJzaXN0X2J1c251bTsKKwlzZWdtZW50ID0gcGNpX2RvbWFpbl9ucihwY2lfYnVzKSAmIDB4ZjsKIAogCS8qIERvIG5vdCBhbGxvdyBob3RwbHVnIG9wZXJhdGlvbnMgb24gYmFzZSBJL08gY2FyZHMgKi8KLQlpZiAoKGJyaWNrdHlwZSA9PSBMMV9CUklDS1RZUEVfSVggfHwgIGJyaWNrdHlwZSA9PSBMMV9CUklDS1RZUEVfSUEpICYmCi0JICAgIChidXNfbnVtID09IDEgJiYgZGV2aWNlICE9IDEpKQorCWlmICgoaW9ib2FyZF90eXBlID09IEwxX0JSSUNLVFlQRV9JWCB8fAorCSAgICAgaW9ib2FyZF90eXBlID09IEwxX0JSSUNLVFlQRV9JQSkgJiYKKwkgICAgKHNlZ21lbnQgPT0gMSAmJiBidXNudW0gPT0gMCAmJiBkZXZpY2UgIT0gMSkpCiAJCXJldHVybiAtRVBFUk07CiAKIAlyZXR1cm4gMTsKQEAgLTEyNSwyMyArMTI4LDIzIEBACiBzdGF0aWMgaW50IHNuX3BjaV9idXNfdmFsaWQoc3RydWN0IHBjaV9idXMgKnBjaV9idXMpCiB7CiAJc3RydWN0IHBjaWJ1c19pbmZvICpwY2lidXNfaW5mbzsKLQlpbnQgYXNpY190eXBlOwotCWludCBicmlja3R5cGU7Ci0KLQlwY2lidXNfaW5mbyA9IFNOX1BDSUJVU19CVVNTT0ZUX0lORk8ocGNpX2J1cyk7CisJdTMyIGFzaWNfdHlwZTsKKwl1MTYgaW9ib2FyZF90eXBlOwogCiAJLyogRG9uJ3QgcmVnaXN0ZXIgc2xvdHMgaGFuZ2luZyBvZmYgdGhlIFRJT0NBIGJ1cyAqLworCXBjaWJ1c19pbmZvID0gU05fUENJQlVTX0JVU1NPRlRfSU5GTyhwY2lfYnVzKTsKIAlhc2ljX3R5cGUgPSBwY2lidXNfaW5mby0+cGJpX2J1c2NvbW1vbi5ic19hc2ljX3R5cGU7CiAJaWYgKGFzaWNfdHlwZSA9PSBQQ0lJT19BU0lDX1RZUEVfVElPQ0EpCiAJCXJldHVybiAtRVBFUk07CiAKIAkvKiBPbmx5IHJlZ2lzdGVyIHNsb3RzIGluIEkvTyBCcmlja3MgdGhhdCBzdXBwb3J0IGhvdHBsdWcgKi8KLQlicmlja3R5cGUgPSBNT0RVTEVfR0VUX0JUWVBFKHBjaWJ1c19pbmZvLT5wYmlfbW9kdWxlaWQpOwotCXN3aXRjaCAoYnJpY2t0eXBlKSB7CisJaW9ib2FyZF90eXBlID0gc25faW9ib2FyZF90b19wY2lfYnVzKHBjaV9idXMpOworCXN3aXRjaCAoaW9ib2FyZF90eXBlKSB7CiAJCWNhc2UgTDFfQlJJQ0tUWVBFX0lYOgogCQljYXNlIEwxX0JSSUNLVFlQRV9QWDoKIAkJY2FzZSBMMV9CUklDS1RZUEVfSUE6CiAJCWNhc2UgTDFfQlJJQ0tUWVBFX1BBOgorCQljYXNlIEwxX0JPQVJEVFlQRV9QQ0lYM1NMT1Q6CiAJCQlyZXR1cm4gMTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMTc1LDE0ICsxNzgsMTEgQEAKIAlzbG90LT5wY2lfYnVzID0gcGNpX2J1czsKIAlzcHJpbnRmKGJzc19ob3RwbHVnX3Nsb3QtPm5hbWUsICIlMDR4OiUwMng6JTAyeCIsCiAJCXBjaV9kb21haW5fbnIocGNpX2J1cyksCi0JCSgoaW50KXBjaWJ1c19pbmZvLT5wYmlfYnVzY29tbW9uLmJzX3BlcnNpc3RfYnVzbnVtKSAmIDB4ZiwKKwkJKCh1MTYpcGNpYnVzX2luZm8tPnBiaV9idXNjb21tb24uYnNfcGVyc2lzdF9idXNudW0pLAogCQlkZXZpY2UgKyAxKTsKLQlzcHJpbnRmKHNsb3QtPnBoeXNpY2FsX3BhdGgsICJtb2R1bGVfJWMlYyVjJWMlLjJkIiwKLQkJJzAnK1JBQ0tfR0VUX0NMQVNTKE1PRFVMRV9HRVRfUkFDSyhwY2lidXNfaW5mby0+cGJpX21vZHVsZWlkKSksCi0JCScwJytSQUNLX0dFVF9HUk9VUChNT0RVTEVfR0VUX1JBQ0socGNpYnVzX2luZm8tPnBiaV9tb2R1bGVpZCkpLAotCQknMCcrUkFDS19HRVRfTlVNKE1PRFVMRV9HRVRfUkFDSyhwY2lidXNfaW5mby0+cGJpX21vZHVsZWlkKSksCi0JCU1PRFVMRV9HRVRfQlRDSEFSKHBjaWJ1c19pbmZvLT5wYmlfbW9kdWxlaWQpLAotCQlNT0RVTEVfR0VUX0JQT1MocGNpYnVzX2luZm8tPnBiaV9tb2R1bGVpZCkpOworCisJc25fZ2VuZXJhdGVfcGF0aChwY2lfYnVzLCBzbG90LT5waHlzaWNhbF9wYXRoKTsKKwogCXNsb3QtPmhvdHBsdWdfc2xvdCA9IGJzc19ob3RwbHVnX3Nsb3Q7CiAJbGlzdF9hZGQoJnNsb3QtPmhwX2xpc3QsICZzbl9ocF9saXN0KTsKIApAQCAtNDYxLDEwICs0NjEsMTIgQEAKIHsKIAlzdHJ1Y3Qgc2xvdCAqc2xvdCA9IGJzc19ob3RwbHVnX3Nsb3QtPnByaXZhdGU7CiAJc3RydWN0IHBjaWJ1c19pbmZvICpwY2lidXNfaW5mbzsKKwl1MzIgcG93ZXI7CiAKIAlwY2lidXNfaW5mbyA9IFNOX1BDSUJVU19CVVNTT0ZUX0lORk8oc2xvdC0+cGNpX2J1cyk7CiAJbXV0ZXhfbG9jaygmc25faG90cGx1Z19tdXRleCk7Ci0JKnZhbHVlID0gcGNpYnVzX2luZm8tPnBiaV9lbmFibGVkX2RldmljZXMgJiAoMSA8PCBzbG90LT5kZXZpY2VfbnVtKTsKKwlwb3dlciA9IHBjaWJ1c19pbmZvLT5wYmlfZW5hYmxlZF9kZXZpY2VzICYgKDEgPDwgc2xvdC0+ZGV2aWNlX251bSk7CisJKnZhbHVlID0gcG93ZXIgPyAxIDogMDsKIAltdXRleF91bmxvY2soJnNuX2hvdHBsdWdfbXV0ZXgpOwogCXJldHVybiAwOwogfQpAQCAtNTUzLDggKzU1NSw4IEBACiAJaW50IHJjOwogCWludCByZWdpc3RlcmVkID0gMDsKIAotCWlmIChzbl9zYWxfcmV2KCkgPCBTR0lfSE9UUExVR19QUk9NX1JFVikgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBQUk9NIHZlcnNpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gNC4zMFxuIiwKKwlpZiAoIXNuX3Byb21fZmVhdHVyZV9hdmFpbGFibGUoUFJGX0hPVFBMVUdfU1VQUE9SVCkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogUFJPTSB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgaG90cGx1Zy5cbiIsCiAJCSAgICAgICBfX0ZVTkNUSU9OX18pOwogCQlyZXR1cm4gLUVQRVJNOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwLmggYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocC5oCmluZGV4IDVjNzBmNDMuLjcyMDhiOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwLmgKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9zaHBjaHAuaApAQCAtMTY4LDkgKzE2OCw5IEBACiAgKiBlcnJvciBNZXNzYWdlcwogICovCiAjZGVmaW5lIG1zZ19pbml0aWFsaXphdGlvbl9lcnIJIkluaXRpYWxpemF0aW9uIGZhaWx1cmUsIGVycm9yPSVkXG4iCi0jZGVmaW5lIG1zZ19idXR0b25fb24JCSJQQ0kgc2xvdCAjJWQgLSBwb3dlcmluZyBvbiBkdWUgdG8gYnV0dG9uIHByZXNzLlxuIgotI2RlZmluZSBtc2dfYnV0dG9uX29mZgkJIlBDSSBzbG90ICMlZCAtIHBvd2VyaW5nIG9mZiBkdWUgdG8gYnV0dG9uIHByZXNzLlxuIgotI2RlZmluZSBtc2dfYnV0dG9uX2NhbmNlbAkiUENJIHNsb3QgIyVkIC0gYWN0aW9uIGNhbmNlbGVkIGR1ZSB0byBidXR0b24gcHJlc3MuXG4iCisjZGVmaW5lIG1zZ19idXR0b25fb24JCSJQQ0kgc2xvdCAjJXMgLSBwb3dlcmluZyBvbiBkdWUgdG8gYnV0dG9uIHByZXNzLlxuIgorI2RlZmluZSBtc2dfYnV0dG9uX29mZgkJIlBDSSBzbG90ICMlcyAtIHBvd2VyaW5nIG9mZiBkdWUgdG8gYnV0dG9uIHByZXNzLlxuIgorI2RlZmluZSBtc2dfYnV0dG9uX2NhbmNlbAkiUENJIHNsb3QgIyVzIC0gYWN0aW9uIGNhbmNlbGVkIGR1ZSB0byBidXR0b24gcHJlc3MuXG4iCiAKIC8qIHN5c2ZzIGZ1bmN0aW9ucyBmb3IgdGhlIGhvdHBsdWcgY29udHJvbGxlciBpbmZvICovCiBleHRlcm4gdm9pZCBzaHBjaHBfY3JlYXRlX2N0cmxfZmlsZXMJKHN0cnVjdCBjb250cm9sbGVyICpjdHJsKTsKQEAgLTE5Niw3ICsxOTYsNyBAQAogc3RhdGljIGlubGluZSBpbnQgZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKHN0cnVjdCBwY2lfZGV2ICpkZXYsCiAJCQlzdHJ1Y3QgaG90cGx1Z19wYXJhbXMgKmhwcCkKIHsKLQlpZiAoQUNQSV9GQUlMVVJFKGFjcGlfZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKGRldiwgaHBwKSkpCisJaWYgKEFDUElfRkFJTFVSRShhY3BpX2dldF9ocF9wYXJhbXNfZnJvbV9maXJtd2FyZShkZXYtPmJ1cywgaHBwKSkpCiAJCQlyZXR1cm4gLUVOT0RFVjsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2NvcmUuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2NvcmUuYwppbmRleCAzYmU0ZDQ5Li5hMTRlN2RlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9jb3JlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9zaHBjaHBfY29yZS5jCkBAIC00OTEsMTYgKzQ5MSw5IEBACiAJc2hwY2hwX3BvbGxfbW9kZSA9IDE7CiAjZW5kaWYKIAotCXNocGNocF93cSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJzaHBjaHBkIik7Ci0JaWYgKCFzaHBjaHBfd3EpCi0JCXJldHVybiAtRU5PTUVNOwotCiAJcmV0dmFsID0gcGNpX3JlZ2lzdGVyX2RyaXZlcigmc2hwY19kcml2ZXIpOwogCWRiZygiJXM6IHBjaV9yZWdpc3Rlcl9kcml2ZXIgPSAlZFxuIiwgX19GVU5DVElPTl9fLCByZXR2YWwpOwogCWluZm8oRFJJVkVSX0RFU0MgIiB2ZXJzaW9uOiAiIERSSVZFUl9WRVJTSU9OICJcbiIpOwotCWlmIChyZXR2YWwpIHsKLQkJZGVzdHJveV93b3JrcXVldWUoc2hwY2hwX3dxKTsKLQl9CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtNTA4LDcgKzUwMSw2IEBACiB7CiAJZGJnKCJ1bmxvYWRfc2hwY2hwZCgpXG4iKTsKIAlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJnNocGNfZHJpdmVyKTsKLQlkZXN0cm95X3dvcmtxdWV1ZShzaHBjaHBfd3EpOwogCWluZm8oRFJJVkVSX0RFU0MgIiB2ZXJzaW9uOiAiIERSSVZFUl9WRVJTSU9OICIgdW5sb2FkZWRcbiIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9jdHJsLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9jdHJsLmMKaW5kZXggNGU2MzgxNC4uYzM5OTAxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9zaHBjaHBfY3RybC5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2N0cmwuYwpAQCAtNzIsNyArNzIsNyBAQAogCS8qCiAJICogIEJ1dHRvbiBwcmVzc2VkIC0gU2VlIGlmIG5lZWQgdG8gVEFLRSBBQ1RJT04hISEKIAkgKi8KLQlpbmZvKCJCdXR0b24gcHJlc3NlZCBvbiBTbG90KCVkKVxuIiwgY3RybC0+Zmlyc3Rfc2xvdCArIGhwX3Nsb3QpOworCWluZm8oIkJ1dHRvbiBwcmVzc2VkIG9uIFNsb3QoJXMpXG4iLCBwX3Nsb3QtPm5hbWUpOwogCWV2ZW50X3R5cGUgPSBJTlRfQlVUVE9OX1BSRVNTOwogCiAJcXVldWVfaW50ZXJydXB0X2V2ZW50KHBfc2xvdCwgZXZlbnRfdHlwZSk7CkBAIC0xMDEsNyArMTAxLDcgQEAKIAkJLyoKIAkJICogU3dpdGNoIG9wZW5lZAogCQkgKi8KLQkJaW5mbygiTGF0Y2ggb3BlbiBvbiBTbG90KCVkKVxuIiwgY3RybC0+Zmlyc3Rfc2xvdCArIGhwX3Nsb3QpOworCQlpbmZvKCJMYXRjaCBvcGVuIG9uIFNsb3QoJXMpXG4iLCBwX3Nsb3QtPm5hbWUpOwogCQlldmVudF90eXBlID0gSU5UX1NXSVRDSF9PUEVOOwogCQlpZiAocF9zbG90LT5wd3Jfc2F2ZSAmJiBwX3Nsb3QtPnByZXNlbmNlX3NhdmUpIHsKIAkJCWV2ZW50X3R5cGUgPSBJTlRfUE9XRVJfRkFVTFQ7CkBAIC0xMTEsNyArMTExLDcgQEAKIAkJLyoKIAkJICogIFN3aXRjaCBjbG9zZWQKIAkJICovCi0JCWluZm8oIkxhdGNoIGNsb3NlIG9uIFNsb3QoJWQpXG4iLCBjdHJsLT5maXJzdF9zbG90ICsgaHBfc2xvdCk7CisJCWluZm8oIkxhdGNoIGNsb3NlIG9uIFNsb3QoJXMpXG4iLCBwX3Nsb3QtPm5hbWUpOwogCQlldmVudF90eXBlID0gSU5UX1NXSVRDSF9DTE9TRTsKIAl9CiAKQEAgLTEzOSwxMyArMTM5LDEzIEBACiAJCS8qCiAJCSAqIENhcmQgUHJlc2VudAogCQkgKi8KLQkJaW5mbygiQ2FyZCBwcmVzZW50IG9uIFNsb3QoJWQpXG4iLCBjdHJsLT5maXJzdF9zbG90ICsgaHBfc2xvdCk7CisJCWluZm8oIkNhcmQgcHJlc2VudCBvbiBTbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJZXZlbnRfdHlwZSA9IElOVF9QUkVTRU5DRV9PTjsKIAl9IGVsc2UgewogCQkvKgogCQkgKiBOb3QgUHJlc2VudAogCQkgKi8KLQkJaW5mbygiQ2FyZCBub3QgcHJlc2VudCBvbiBTbG90KCVkKVxuIiwgY3RybC0+Zmlyc3Rfc2xvdCArIGhwX3Nsb3QpOworCQlpbmZvKCJDYXJkIG5vdCBwcmVzZW50IG9uIFNsb3QoJXMpXG4iLCBwX3Nsb3QtPm5hbWUpOwogCQlldmVudF90eXBlID0gSU5UX1BSRVNFTkNFX09GRjsKIAl9CiAKQEAgLTE2OSwxNCArMTY5LDE0IEBACiAJCS8qCiAJCSAqIFBvd2VyIGZhdWx0IENsZWFyZWQKIAkJICovCi0JCWluZm8oIlBvd2VyIGZhdWx0IGNsZWFyZWQgb24gU2xvdCglZClcbiIsIGN0cmwtPmZpcnN0X3Nsb3QgKyBocF9zbG90KTsKKwkJaW5mbygiUG93ZXIgZmF1bHQgY2xlYXJlZCBvbiBTbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJcF9zbG90LT5zdGF0dXMgPSAweDAwOwogCQlldmVudF90eXBlID0gSU5UX1BPV0VSX0ZBVUxUX0NMRUFSOwogCX0gZWxzZSB7CiAJCS8qCiAJCSAqICAgUG93ZXIgZmF1bHQKIAkJICovCi0JCWluZm8oIlBvd2VyIGZhdWx0IG9uIFNsb3QoJWQpXG4iLCBjdHJsLT5maXJzdF9zbG90ICsgaHBfc2xvdCk7CisJCWluZm8oIlBvd2VyIGZhdWx0IG9uIFNsb3QoJXMpXG4iLCBwX3Nsb3QtPm5hbWUpOwogCQlldmVudF90eXBlID0gSU5UX1BPV0VSX0ZBVUxUOwogCQkvKiBzZXQgcG93ZXIgZmF1bHQgc3RhdHVzIGZvciB0aGlzIGJvYXJkICovCiAJCXBfc2xvdC0+c3RhdHVzID0gMHhGRjsKQEAgLTQ5NiwxMCArNDk2LDEwIEBACiAJCXBfc2xvdC0+aHBjX29wcy0+Z2V0X3Bvd2VyX3N0YXR1cyhwX3Nsb3QsICZnZXRzdGF0dXMpOwogCQlpZiAoZ2V0c3RhdHVzKSB7CiAJCQlwX3Nsb3QtPnN0YXRlID0gQkxJTktJTkdPRkZfU1RBVEU7Ci0JCQlpbmZvKG1zZ19idXR0b25fb2ZmLCBwX3Nsb3QtPm51bWJlcik7CisJCQlpbmZvKG1zZ19idXR0b25fb2ZmLCBwX3Nsb3QtPm5hbWUpOwogCQl9IGVsc2UgewogCQkJcF9zbG90LT5zdGF0ZSA9IEJMSU5LSU5HT05fU1RBVEU7Ci0JCQlpbmZvKG1zZ19idXR0b25fb24sIHBfc2xvdC0+bnVtYmVyKTsKKwkJCWluZm8obXNnX2J1dHRvbl9vbiwgcF9zbG90LT5uYW1lKTsKIAkJfQogCQkvKiBibGluayBncmVlbiBMRUQgYW5kIHR1cm4gb2ZmIGFtYmVyICovCiAJCXBfc2xvdC0+aHBjX29wcy0+Z3JlZW5fbGVkX2JsaW5rKHBfc2xvdCk7CkBAIC01MjIsNyArNTIyLDcgQEAKIAkJZWxzZQogCQkJcF9zbG90LT5ocGNfb3BzLT5ncmVlbl9sZWRfb2ZmKHBfc2xvdCk7CiAJCXBfc2xvdC0+aHBjX29wcy0+c2V0X2F0dGVudGlvbl9zdGF0dXMocF9zbG90LCAwKTsKLQkJaW5mbyhtc2dfYnV0dG9uX2NhbmNlbCwgcF9zbG90LT5udW1iZXIpOworCQlpbmZvKG1zZ19idXR0b25fY2FuY2VsLCBwX3Nsb3QtPm5hbWUpOwogCQlwX3Nsb3QtPnN0YXRlID0gU1RBVElDX1NUQVRFOwogCQlicmVhazsKIAljYXNlIFBPV0VST0ZGX1NUQVRFOgpAQCAtNTc1LDE3ICs1NzUsMTcgQEAKIAltdXRleF9sb2NrKCZwX3Nsb3QtPmN0cmwtPmNyaXRfc2VjdCk7CiAJcmMgPSBwX3Nsb3QtPmhwY19vcHMtPmdldF9hZGFwdGVyX3N0YXR1cyhwX3Nsb3QsICZnZXRzdGF0dXMpOwogCWlmIChyYyB8fCAhZ2V0c3RhdHVzKSB7Ci0JCWluZm8oIiVzOiBubyBhZGFwdGVyIG9uIHNsb3QoJXgpXG4iLCBfX0ZVTkNUSU9OX18sIHBfc2xvdC0+bnVtYmVyKTsKKwkJaW5mbygiTm8gYWRhcHRlciBvbiBzbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJZ290byBvdXQ7CiAJfQogCXJjID0gcF9zbG90LT5ocGNfb3BzLT5nZXRfbGF0Y2hfc3RhdHVzKHBfc2xvdCwgJmdldHN0YXR1cyk7CiAJaWYgKHJjIHx8IGdldHN0YXR1cykgewotCQlpbmZvKCIlczogbGF0Y2ggb3BlbiBvbiBzbG90KCV4KVxuIiwgX19GVU5DVElPTl9fLCBwX3Nsb3QtPm51bWJlcik7CisJCWluZm8oIkxhdGNoIG9wZW4gb24gc2xvdCglcylcbiIsIHBfc2xvdC0+bmFtZSk7CiAJCWdvdG8gb3V0OwogCX0KIAlyYyA9IHBfc2xvdC0+aHBjX29wcy0+Z2V0X3Bvd2VyX3N0YXR1cyhwX3Nsb3QsICZnZXRzdGF0dXMpOwogCWlmIChyYyB8fCBnZXRzdGF0dXMpIHsKLQkJaW5mbygiJXM6IGFscmVhZHkgZW5hYmxlZCBvbiBzbG90KCV4KVxuIiwgX19GVU5DVElPTl9fLCBwX3Nsb3QtPm51bWJlcik7CisJCWluZm8oIkFscmVhZHkgZW5hYmxlZCBvbiBzbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC02MzQsMTcgKzYzNCwxNyBAQAogCiAJcmMgPSBwX3Nsb3QtPmhwY19vcHMtPmdldF9hZGFwdGVyX3N0YXR1cyhwX3Nsb3QsICZnZXRzdGF0dXMpOwogCWlmIChyYyB8fCAhZ2V0c3RhdHVzKSB7Ci0JCWluZm8oIiVzOiBubyBhZGFwdGVyIG9uIHNsb3QoJXgpXG4iLCBfX0ZVTkNUSU9OX18sIHBfc2xvdC0+bnVtYmVyKTsKKwkJaW5mbygiTm8gYWRhcHRlciBvbiBzbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJZ290byBvdXQ7CiAJfQogCXJjID0gcF9zbG90LT5ocGNfb3BzLT5nZXRfbGF0Y2hfc3RhdHVzKHBfc2xvdCwgJmdldHN0YXR1cyk7CiAJaWYgKHJjIHx8IGdldHN0YXR1cykgewotCQlpbmZvKCIlczogbGF0Y2ggb3BlbiBvbiBzbG90KCV4KVxuIiwgX19GVU5DVElPTl9fLCBwX3Nsb3QtPm51bWJlcik7CisJCWluZm8oIkxhdGNoIG9wZW4gb24gc2xvdCglcylcbiIsIHBfc2xvdC0+bmFtZSk7CiAJCWdvdG8gb3V0OwogCX0KIAlyYyA9IHBfc2xvdC0+aHBjX29wcy0+Z2V0X3Bvd2VyX3N0YXR1cyhwX3Nsb3QsICZnZXRzdGF0dXMpOwogCWlmIChyYyB8fCAhZ2V0c3RhdHVzKSB7Ci0JCWluZm8oIiVzOiBhbHJlYWR5IGRpc2FibGVkIHNsb3QoJXgpXG4iLCBfX0ZVTkNUSU9OX18sIHBfc2xvdC0+bnVtYmVyKTsKKwkJaW5mbygiQWxyZWFkeSBkaXNhYmxlZCBzbG90KCVzKVxuIiwgcF9zbG90LT5uYW1lKTsKIAkJZ290byBvdXQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9ocGMuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2hwYy5jCmluZGV4IDY2MTIzY2YuLjQ1ZmFjYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2hwYy5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX2hwYy5jCkBAIC05MCw3NyArOTAsOTQgQEAKICNkZWZpbmUJTVJMU0VOU09SCQkweDQwMDAwMDAwCiAjZGVmaW5lIEFUVE5fQlVUVE9OCQkweDgwMDAwMDAwCiAKLS8qIFNsb3QgU3RhdHVzIEZpZWxkIERlZmluaXRpb25zICovCi0vKiBTbG90IFN0YXRlICovCi0jZGVmaW5lIFBXUl9PTkxZCQkweDAwMDEKLSNkZWZpbmUgRU5BQkxFRAkJCTB4MDAwMgotI2RlZmluZSBESVNBQkxFRAkJMHgwMDAzCisvKgorICogSW50ZXJydXB0IExvY2F0b3IgUmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBDTURfSU5UUl9QRU5ESU5HCSgxIDw8IDApCisjZGVmaW5lIFNMT1RfSU5UUl9QRU5ESU5HKGkpCSgxIDw8IChpICsgMSkpCiAKLS8qIFBvd2VyIEluZGljYXRvciBTdGF0ZSAqLwotI2RlZmluZSBQV1JfTEVEX09OCQkweDAwMDQKLSNkZWZpbmUgUFdSX0xFRF9CTElOSwkJMHgwMDA4Ci0jZGVmaW5lIFBXUl9MRURfT0ZGCQkweDAwMGMKKy8qCisgKiBDb250cm9sbGVyIFNFUlItSU5UIFJlZ2lzdGVyCisgKi8KKyNkZWZpbmUgR0xPQkFMX0lOVFJfTUFTSwkoMSA8PCAwKQorI2RlZmluZSBHTE9CQUxfU0VSUl9NQVNLCSgxIDw8IDEpCisjZGVmaW5lIENPTU1BTkRfSU5UUl9NQVNLCSgxIDw8IDIpCisjZGVmaW5lIEFSQklURVJfU0VSUl9NQVNLCSgxIDw8IDMpCisjZGVmaW5lIENPTU1BTkRfREVURUNURUQJKDEgPDwgMTYpCisjZGVmaW5lIEFSQklURVJfREVURUNURUQJKDEgPDwgMTcpCisjZGVmaW5lIFNFUlJfSU5UUl9SU1ZEWl9NQVNLCTB4ZmZmYzAwMDAKIAotLyogQXR0ZW50aW9uIEluZGljYXRvciBTdGF0ZSAqLwotI2RlZmluZSBBVFRFTl9MRURfT04JCTB4MDAxMAotI2RlZmluZQlBVFRFTl9MRURfQkxJTksJCTB4MDAyMAotI2RlZmluZSBBVFRFTl9MRURfT0ZGCQkweDAwMzAKKy8qCisgKiBMb2dpY2FsIFNsb3QgUmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBTTE9UX1JFRyhpKQkJKFNMT1QxICsgKDQgKiBpKSkKIAotLyogUG93ZXIgRmF1bHQgKi8KLSNkZWZpbmUgcHdyX2ZhdWx0CQkweDAwNDAKKyNkZWZpbmUgU0xPVF9TVEFURV9TSElGVAkoMCkKKyNkZWZpbmUgU0xPVF9TVEFURV9NQVNLCQkoMyA8PCAwKQorI2RlZmluZSBTTE9UX1NUQVRFX1BXUk9OTFkJKDEpCisjZGVmaW5lIFNMT1RfU1RBVEVfRU5BQkxFRAkoMikKKyNkZWZpbmUgU0xPVF9TVEFURV9ESVNBQkxFRAkoMykKKyNkZWZpbmUgUFdSX0xFRF9TVEFURV9TSElGVAkoMikKKyNkZWZpbmUgUFdSX0xFRF9TVEFURV9NQVNLCSgzIDw8IDIpCisjZGVmaW5lIEFUTl9MRURfU1RBVEVfU0hJRlQJKDQpCisjZGVmaW5lIEFUTl9MRURfU1RBVEVfTUFTSwkoMyA8PCA0KQorI2RlZmluZSBBVE5fTEVEX1NUQVRFX09OCSgxKQorI2RlZmluZSBBVE5fTEVEX1NUQVRFX0JMSU5LCSgyKQorI2RlZmluZSBBVE5fTEVEX1NUQVRFX09GRgkoMykKKyNkZWZpbmUgUE9XRVJfRkFVTFQJCSgxIDw8IDYpCisjZGVmaW5lIEFUTl9CVVRUT04JCSgxIDw8IDcpCisjZGVmaW5lIE1STF9TRU5TT1IJCSgxIDw8IDgpCisjZGVmaW5lIE1IWjY2X0NBUAkJKDEgPDwgOSkKKyNkZWZpbmUgUFJTTlRfU0hJRlQJCSgxMCkKKyNkZWZpbmUgUFJTTlRfTUFTSwkJKDMgPDwgMTApCisjZGVmaW5lIFBDSVhfQ0FQX1NISUZUCQkoMTIpCisjZGVmaW5lIFBDSVhfQ0FQX01BU0tfUEkxCSgzIDw8IDEyKQorI2RlZmluZSBQQ0lYX0NBUF9NQVNLX1BJMgkoNyA8PCAxMikKKyNkZWZpbmUgUFJTTlRfQ0hBTkdFX0RFVEVDVEVECSgxIDw8IDE2KQorI2RlZmluZSBJU09fUEZBVUxUX0RFVEVDVEVECSgxIDw8IDE3KQorI2RlZmluZSBCVVRUT05fUFJFU1NfREVURUNURUQJKDEgPDwgMTgpCisjZGVmaW5lIE1STF9DSEFOR0VfREVURUNURUQJKDEgPDwgMTkpCisjZGVmaW5lIENPTl9QRkFVTFRfREVURUNURUQJKDEgPDwgMjApCisjZGVmaW5lIFBSU05UX0NIQU5HRV9JTlRSX01BU0sJKDEgPDwgMjQpCisjZGVmaW5lIElTT19QRkFVTFRfSU5UUl9NQVNLCSgxIDw8IDI1KQorI2RlZmluZSBCVVRUT05fUFJFU1NfSU5UUl9NQVNLCSgxIDw8IDI2KQorI2RlZmluZSBNUkxfQ0hBTkdFX0lOVFJfTUFTSwkoMSA8PCAyNykKKyNkZWZpbmUgQ09OX1BGQVVMVF9JTlRSX01BU0sJKDEgPDwgMjgpCisjZGVmaW5lIE1STF9DSEFOR0VfU0VSUl9NQVNLCSgxIDw8IDI5KQorI2RlZmluZSBDT05fUEZBVUxUX1NFUlJfTUFTSwkoMSA8PCAzMCkKKyNkZWZpbmUgU0xPVF9SRUdfUlNWRFpfTUFTSwkoMSA8PCAxNSkgfCAoNyA8PCAyMSkKIAotLyogQXR0ZW50aW9uIEJ1dHRvbiAqLwotI2RlZmluZSBBVFRFTl9CVVRUT04JCTB4MDA4MAotCi0vKiBNUkwgU2Vuc29yICovCi0jZGVmaW5lIE1STF9TRU5TT1IJCTB4MDEwMAotCi0vKiA2NiBNSHogQ2FwYWJsZSAqLwotI2RlZmluZSBJU182Nk1IWl9DQVAJCTB4MDIwMAotCi0vKiBQUlNOVDEjL1BSU05UMiMgKi8KLSNkZWZpbmUgU0xPVF9FTVAJCTB4MGMwMAotCi0vKiBQQ0ktWCBDYXBhYmlsaXR5ICovCi0jZGVmaW5lIE5PTl9QQ0lYCQkweDAwMDAKLSNkZWZpbmUgUENJWF82NgkJCTB4MTAwMAotI2RlZmluZSBQQ0lYXzEzMwkJMHgzMDAwCi0jZGVmaW5lIFBDSVhfMjY2CQkweDQwMDAgIC8qIEZvciBQSSA9IDIgb25seSAqLwotI2RlZmluZSBQQ0lYXzUzMwkJMHg1MDAwCS8qIEZvciBQSSA9IDIgb25seSAqLwotCi0vKiBTSFBDICd3cml0ZScgb3BlcmF0aW9ucy9jb21tYW5kcyAqLwotCi0vKiBTbG90IG9wZXJhdGlvbiAtIDB4MDBoIHRvIDB4M0ZoICovCi0KLSNkZWZpbmUgTk9fQ0hBTkdFCQkweDAwCi0KLS8qIFNsb3Qgc3RhdGUgLSBCaXRzIDAgJiAxIG9mIGNvbnRyb2xsZXIgY29tbWFuZCByZWdpc3RlciAqLwotI2RlZmluZSBTRVRfU0xPVF9QV1IJCTB4MDEJCi0jZGVmaW5lIFNFVF9TTE9UX0VOQUJMRQkJMHgwMgkKLSNkZWZpbmUgU0VUX1NMT1RfRElTQUJMRQkweDAzCQotCi0vKiBQb3dlciBpbmRpY2F0b3Igc3RhdGUgLSBCaXRzIDIgJiAzIG9mIGNvbnRyb2xsZXIgY29tbWFuZCByZWdpc3RlciovCi0jZGVmaW5lIFNFVF9QV1JfT04JCTB4MDQJCi0jZGVmaW5lIFNFVF9QV1JfQkxJTksJCTB4MDgJCi0jZGVmaW5lIFNFVF9QV1JfT0ZGCQkweDBDCQotCi0vKiBBdHRlbnRpb24gaW5kaWNhdG9yIHN0YXRlIC0gQml0cyA0ICYgNSBvZiBjb250cm9sbGVyIGNvbW1hbmQgcmVnaXN0ZXIqLwotI2RlZmluZSBTRVRfQVRUTl9PTgkJMHgwMTAJCi0jZGVmaW5lIFNFVF9BVFROX0JMSU5LCQkweDAyMAotI2RlZmluZSBTRVRfQVRUTl9PRkYJCTB4MDMwCQotCi0vKiBTZXQgYnVzIHNwZWVkL21vZGUgQSAtIDB4NDBoIHRvIDB4NDdoICovCi0jZGVmaW5lIFNFVEFfUENJXzMzTUhaCQkweDQwCisvKgorICogU0hQQyBDb21tYW5kIENvZGUgZGVmaW5pdG5pb25zCisgKgorICogICAgIFNsb3QgT3BlcmF0aW9uCQkJCTAwaCAtIDNGaAorICogICAgIFNldCBCdXMgU2VnbWVudCBTcGVlZC9Nb2RlIEEJCTQwaCAtIDQ3aAorICogICAgIFBvd2VyLU9ubHkgQWxsIFNsb3RzCQkJNDhoCisgKiAgICAgRW5hYmxlIEFsbCBTbG90cwkJCQk0OWgKKyAqICAgICBTZXQgQnVzIFNlZ21lbnQgU3BlZWQvTW9kZSBCIChQST0yKQk1MGggLSA1RmgKKyAqICAgICBSZXNlcnZlZCBDb21tYW5kIENvZGVzCQkJNjBoIC0gQkZoCisgKiAgICAgVmVuZG9yIFNwZWNpZmljIENvbW1hbmRzCQkJQzBoIC0gRkZoCisgKi8KKyNkZWZpbmUgU0VUX1NMT1RfUFdSCQkweDAxCS8qIFNsb3QgT3BlcmF0aW9uICovCisjZGVmaW5lIFNFVF9TTE9UX0VOQUJMRQkJMHgwMgorI2RlZmluZSBTRVRfU0xPVF9ESVNBQkxFCTB4MDMKKyNkZWZpbmUgU0VUX1BXUl9PTgkJMHgwNAorI2RlZmluZSBTRVRfUFdSX0JMSU5LCQkweDA4CisjZGVmaW5lIFNFVF9QV1JfT0ZGCQkweDBjCisjZGVmaW5lIFNFVF9BVFROX09OCQkweDEwCisjZGVmaW5lIFNFVF9BVFROX0JMSU5LCQkweDIwCisjZGVmaW5lIFNFVF9BVFROX09GRgkJMHgzMAorI2RlZmluZSBTRVRBX1BDSV8zM01IWgkJMHg0MAkvKiBTZXQgQnVzIFNlZ21lbnQgU3BlZWQvTW9kZSBBICovCiAjZGVmaW5lIFNFVEFfUENJXzY2TUhaCQkweDQxCiAjZGVmaW5lIFNFVEFfUENJWF82Nk1IWgkJMHg0MgogI2RlZmluZSBTRVRBX1BDSVhfMTAwTUhaCTB4NDMKICNkZWZpbmUgU0VUQV9QQ0lYXzEzM01IWgkweDQ0Ci0jZGVmaW5lIFJFU0VSVl8xCQkweDQ1Ci0jZGVmaW5lIFJFU0VSVl8yCQkweDQ2Ci0jZGVmaW5lIFJFU0VSVl8zCQkweDQ3Ci0KLS8qIFNldCBidXMgc3BlZWQvbW9kZSBCIC0gMHg1MGggdG8gMHg1ZmggKi8KLSNkZWZpbmUJU0VUQl9QQ0lfMzNNSFoJCTB4NTAKKyNkZWZpbmUgU0VUQV9SRVNFUlZFRDEJCTB4NDUKKyNkZWZpbmUgU0VUQV9SRVNFUlZFRDIJCTB4NDYKKyNkZWZpbmUgU0VUQV9SRVNFUlZFRDMJCTB4NDcKKyNkZWZpbmUgU0VUX1BXUl9PTkxZX0FMTAkweDQ4CS8qIFBvd2VyLU9ubHkgQWxsIFNsb3RzICovCisjZGVmaW5lIFNFVF9FTkFCTEVfQUxMCQkweDQ5CS8qIEVuYWJsZSBBbGwgU2xvdHMgKi8KKyNkZWZpbmUJU0VUQl9QQ0lfMzNNSFoJCTB4NTAJLyogU2V0IEJ1cyBTZWdtZW50IFNwZWVkL01vZGUgQiAqLwogI2RlZmluZSBTRVRCX1BDSV82Nk1IWgkJMHg1MQogI2RlZmluZSBTRVRCX1BDSVhfNjZNSFpfUE0JMHg1MgogI2RlZmluZSBTRVRCX1BDSVhfMTAwTUhaX1BNCTB4NTMKQEAgLTE3NCw4MSArMTkxLDExNSBAQAogI2RlZmluZSBTRVRCX1BDSVhfNjZNSFpfNTMzCTB4NWIKICNkZWZpbmUgU0VUQl9QQ0lYXzEwME1IWl81MzMJMHg1YwogI2RlZmluZSBTRVRCX1BDSVhfMTMzTUhaXzUzMwkweDVkCisjZGVmaW5lIFNFVEJfUkVTRVJWRUQxCQkweDVlCisjZGVmaW5lIFNFVEJfUkVTRVJWRUQyCQkweDVmCiAKLQotLyogUG93ZXItb24gYWxsIHNsb3RzIC0gMHg0OGggKi8KLSNkZWZpbmUgU0VUX1BXUl9PTl9BTEwJCTB4NDgKLQotLyogRW5hYmxlIGFsbCBzbG90cwktIDB4NDloICovCi0jZGVmaW5lIFNFVF9FTkFCTEVfQUxMCQkweDQ5Ci0KLS8qICBTSFBDIGNvbnRyb2xsZXIgY29tbWFuZCBlcnJvciBjb2RlICovCisvKgorICogU0hQQyBjb250cm9sbGVyIGNvbW1hbmQgZXJyb3IgY29kZQorICovCiAjZGVmaW5lIFNXSVRDSF9PUEVOCQkweDEKICNkZWZpbmUgSU5WQUxJRF9DTUQJCTB4MgogI2RlZmluZSBJTlZBTElEX1NQRUVEX01PREUJMHg0CiAKLS8qIEZvciBhY2Nlc3NpbmcgU0hQQyBXb3JraW5nIFJlZ2lzdGVyIFNldCAqLworLyoKKyAqIEZvciBhY2Nlc3NpbmcgU0hQQyBXb3JraW5nIFJlZ2lzdGVyIFNldCB2aWEgUENJIENvbmZpZ3VyYXRpb24gU3BhY2UKKyAqLwogI2RlZmluZSBEV09SRF9TRUxFQ1QJCTB4MgogI2RlZmluZSBEV09SRF9EQVRBCQkweDQKLSNkZWZpbmUgQkFTRV9PRkZTRVQJCTB4MAogCiAvKiBGaWVsZCBPZmZzZXQgaW4gTG9naWNhbCBTbG90IFJlZ2lzdGVyIC0gYnl0ZSBib3VuZGFyeSAqLwogI2RlZmluZSBTTE9UX0VWRU5UX0xBVENICTB4MgogI2RlZmluZSBTTE9UX1NFUlJfSU5UX01BU0sJMHgzCiAKLXN0YXRpYyBzcGlubG9ja190IGhwY19ldmVudF9sb2NrOwotCiBERUZJTkVfREJHX0JVRkZFUgkJLyogRGVidWcgc3RyaW5nIGJ1ZmZlciBmb3IgZW50aXJlIEhQQyBkZWZpbmVkIGhlcmUgKi8KIHN0YXRpYyBzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHJfbGlzdF9oZWFkOwkvKiBIUEMgc3RhdGUgbGlua2VkIGxpc3QgKi8KIHN0YXRpYyBpbnQgY3Rscl9zZXFfbnVtID0gMDsJLyogQ29udHJvbGxlciBzZXF1ZW5jICMgKi8KIHN0YXRpYyBzcGlubG9ja190IGxpc3RfbG9jazsKIAotc3RhdGljIGlycXJldHVybl90IHNocGNfaXNyKGludCBJUlEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworc3RhdGljIGF0b21pY190IHNocGNocF9udW1fY29udHJvbGxlcnMgPSBBVE9NSUNfSU5JVCgwKTsKIAotc3RhdGljIHZvaWQgc3RhcnRfaW50X3BvbGxfdGltZXIoc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyLCBpbnQgc2Vjb25kcyk7CitzdGF0aWMgaXJxcmV0dXJuX3Qgc2hwY19pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitzdGF0aWMgdm9pZCBzdGFydF9pbnRfcG9sbF90aW1lcihzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIsIGludCBzZWMpOwogc3RhdGljIGludCBocGNfY2hlY2tfY21kX3N0YXR1cyhzdHJ1Y3QgY29udHJvbGxlciAqY3RybCk7CiAKLS8qIFRoaXMgaXMgdGhlIGludGVycnVwdCBwb2xsaW5nIHRpbWVvdXQgZnVuY3Rpb24uICovCi1zdGF0aWMgdm9pZCBpbnRfcG9sbF90aW1lb3V0KHVuc2lnbmVkIGxvbmcgbHBocF9jdGxyKQorc3RhdGljIGlubGluZSB1OCBzaHBjX3JlYWRiKHN0cnVjdCBjb250cm9sbGVyICpjdHJsLCBpbnQgcmVnKQogewotICAgIHN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IChzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqKWxwaHBfY3RscjsKLQotICAgIERCR19FTlRFUl9ST1VUSU5FCi0KLSAgICBpZiAoICFwaHBfY3RsciApIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgY29udHJvbGxlciBoYW5kbGUhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm47Ci0gICAgfQotCi0gICAgLyogUG9sbCBmb3IgaW50ZXJydXB0IGV2ZW50cy4gIHJlZ3MgPT0gTlVMTCA9PiBwb2xsaW5nICovCi0gICAgc2hwY19pc3IoIDAsICh2b2lkICopcGhwX2N0bHIsIE5VTEwgKTsKLQotICAgIGluaXRfdGltZXIoJnBocF9jdGxyLT5pbnRfcG9sbF90aW1lcik7Ci0JaWYgKCFzaHBjaHBfcG9sbF90aW1lKQotCQlzaHBjaHBfcG9sbF90aW1lID0gMjsgLyogcmVzZXQgdGltZXIgdG8gcG9sbCBpbiAyIHNlY3MgaWYgdXNlciBkb2Vzbid0IHNwZWNpZnkgYXQgbW9kdWxlIGluc3RhbGxhdGlvbiovCi0KLSAgICBzdGFydF9pbnRfcG9sbF90aW1lcihwaHBfY3Rsciwgc2hwY2hwX3BvbGxfdGltZSk7ICAKLQkKLQlyZXR1cm47CisJcmV0dXJuIHJlYWRiKGN0cmwtPmhwY19jdGxyX2hhbmRsZS0+Y3JlZyArIHJlZyk7CiB9CiAKLS8qIFRoaXMgZnVuY3Rpb24gc3RhcnRzIHRoZSBpbnRlcnJ1cHQgcG9sbGluZyB0aW1lci4gKi8KLXN0YXRpYyB2b2lkIHN0YXJ0X2ludF9wb2xsX3RpbWVyKHN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciwgaW50IHNlY29uZHMpCitzdGF0aWMgaW5saW5lIHZvaWQgc2hwY193cml0ZWIoc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwsIGludCByZWcsIHU4IHZhbCkKIHsKLSAgICBpZiAoIXBocF9jdGxyKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuOwotCX0KKwl3cml0ZWIodmFsLCBjdHJsLT5ocGNfY3Rscl9oYW5kbGUtPmNyZWcgKyByZWcpOworfQogCi0gICAgaWYgKCAoIHNlY29uZHMgPD0gMCApIHx8ICggc2Vjb25kcyA+IDYwICkgKQotICAgICAgICBzZWNvbmRzID0gMjsgICAgICAgICAgICAvKiBDbGFtcCB0byBzYW5lIHZhbHVlICovCitzdGF0aWMgaW5saW5lIHUxNiBzaHBjX3JlYWR3KHN0cnVjdCBjb250cm9sbGVyICpjdHJsLCBpbnQgcmVnKQoreworCXJldHVybiByZWFkdyhjdHJsLT5ocGNfY3Rscl9oYW5kbGUtPmNyZWcgKyByZWcpOworfQogCi0gICAgcGhwX2N0bHItPmludF9wb2xsX3RpbWVyLmZ1bmN0aW9uID0gJmludF9wb2xsX3RpbWVvdXQ7Ci0gICAgcGhwX2N0bHItPmludF9wb2xsX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZylwaHBfY3RscjsgICAgLyogSW5zdGFuY2UgZGF0YSAqLwotICAgIHBocF9jdGxyLT5pbnRfcG9sbF90aW1lci5leHBpcmVzID0gamlmZmllcyArIHNlY29uZHMgKiBIWjsKLSAgICBhZGRfdGltZXIoJnBocF9jdGxyLT5pbnRfcG9sbF90aW1lcik7CitzdGF0aWMgaW5saW5lIHZvaWQgc2hwY193cml0ZXcoc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwsIGludCByZWcsIHUxNiB2YWwpCit7CisJd3JpdGV3KHZhbCwgY3RybC0+aHBjX2N0bHJfaGFuZGxlLT5jcmVnICsgcmVnKTsKK30KIAotCXJldHVybjsKK3N0YXRpYyBpbmxpbmUgdTMyIHNocGNfcmVhZGwoc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwsIGludCByZWcpCit7CisJcmV0dXJuIHJlYWRsKGN0cmwtPmhwY19jdGxyX2hhbmRsZS0+Y3JlZyArIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaHBjX3dyaXRlbChzdHJ1Y3QgY29udHJvbGxlciAqY3RybCwgaW50IHJlZywgdTMyIHZhbCkKK3sKKwl3cml0ZWwodmFsLCBjdHJsLT5ocGNfY3Rscl9oYW5kbGUtPmNyZWcgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIGludCBzaHBjX2luZGlyZWN0X3JlYWQoc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwsIGludCBpbmRleCwKKwkJCQkgICAgIHUzMiAqdmFsdWUpCit7CisJaW50IHJjOworCXUzMiBjYXBfb2Zmc2V0ID0gY3RybC0+Y2FwX29mZnNldDsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGN0cmwtPnBjaV9kZXY7CisKKwlyYyA9IHBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBjYXBfb2Zmc2V0ICsgRFdPUkRfU0VMRUNULCBpbmRleCk7CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisJcmV0dXJuIHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBjYXBfb2Zmc2V0ICsgRFdPUkRfREFUQSwgdmFsdWUpOworfQorCisvKgorICogVGhpcyBpcyB0aGUgaW50ZXJydXB0IHBvbGxpbmcgdGltZW91dCBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQgaW50X3BvbGxfdGltZW91dCh1bnNpZ25lZCBsb25nIGxwaHBfY3RscikKK3sKKwlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPQorCQkoc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKilscGhwX2N0bHI7CisKKwlEQkdfRU5URVJfUk9VVElORQorCisJLyogUG9sbCBmb3IgaW50ZXJydXB0IGV2ZW50cy4gIHJlZ3MgPT0gTlVMTCA9PiBwb2xsaW5nICovCisJc2hwY19pc3IoMCwgcGhwX2N0bHItPmNhbGxiYWNrX2luc3RhbmNlX2lkLCBOVUxMKTsKKworCWluaXRfdGltZXIoJnBocF9jdGxyLT5pbnRfcG9sbF90aW1lcik7CisJaWYgKCFzaHBjaHBfcG9sbF90aW1lKQorCQlzaHBjaHBfcG9sbF90aW1lID0gMjsgLyogZGVmYXVsdCBwb2xsaW5nIGludGVydmFsIGlzIDIgc2VjICovCisKKwlzdGFydF9pbnRfcG9sbF90aW1lcihwaHBfY3Rsciwgc2hwY2hwX3BvbGxfdGltZSk7CisKKwlEQkdfTEVBVkVfUk9VVElORQorfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBzdGFydHMgdGhlIGludGVycnVwdCBwb2xsaW5nIHRpbWVyLgorICovCitzdGF0aWMgdm9pZCBzdGFydF9pbnRfcG9sbF90aW1lcihzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIsIGludCBzZWMpCit7CisJLyogQ2xhbXAgdG8gc2FuZSB2YWx1ZSAqLworCWlmICgoc2VjIDw9IDApIHx8IChzZWMgPiA2MCkpCisJCXNlYyA9IDI7CisKKwlwaHBfY3Rsci0+aW50X3BvbGxfdGltZXIuZnVuY3Rpb24gPSAmaW50X3BvbGxfdGltZW91dDsKKwlwaHBfY3Rsci0+aW50X3BvbGxfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKXBocF9jdGxyOworCXBocF9jdGxyLT5pbnRfcG9sbF90aW1lci5leHBpcmVzID0gamlmZmllcyArIHNlYyAqIEhaOworCWFkZF90aW1lcigmcGhwX2N0bHItPmludF9wb2xsX3RpbWVyKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2hwY193YWl0X2NtZChzdHJ1Y3QgY29udHJvbGxlciAqY3RybCkKQEAgLTI3Miw3ICszMjMsNyBAQAogCiBzdGF0aWMgaW50IHNocGNfd3JpdGVfY21kKHN0cnVjdCBzbG90ICpzbG90LCB1OCB0X3Nsb3QsIHU4IGNtZCkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwgPSBzbG90LT5jdHJsOwogCXUxNiBjbWRfc3RhdHVzOwogCWludCByZXR2YWwgPSAwOwogCXUxNiB0ZW1wX3dvcmQ7CkBAIC0yODIsMTQgKzMzMyw4IEBACiAKIAltdXRleF9sb2NrKCZzbG90LT5jdHJsLT5jbWRfbG9jayk7CiAKLQlpZiAoIXBocF9jdGxyKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dmFsID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7Ci0JfQotCiAJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKLQkJY21kX3N0YXR1cyA9IHJlYWR3KHBocF9jdGxyLT5jcmVnICsgQ01EX1NUQVRVUyk7CisJCWNtZF9zdGF0dXMgPSBzaHBjX3JlYWR3KGN0cmwsIENNRF9TVEFUVVMpOwogCQkKIAkJaWYgKCEoY21kX3N0YXR1cyAmIDB4MSkpCiAJCQlicmVhazsKQEAgLTI5Nyw3ICszNDIsNyBAQAogCQltc2xlZXAoMTAwKTsKIAl9CiAKLQljbWRfc3RhdHVzID0gcmVhZHcocGhwX2N0bHItPmNyZWcgKyBDTURfU1RBVFVTKTsKKwljbWRfc3RhdHVzID0gc2hwY19yZWFkdyhjdHJsLCBDTURfU1RBVFVTKTsKIAkKIAlpZiAoY21kX3N0YXR1cyAmIDB4MSkgeyAKIAkJLyogQWZ0ZXIgMSBzZWMgYW5kIGFuZCB0aGUgY29udHJvbGxlciBpcyBzdGlsbCBidXN5ICovCkBAIC0zMTQsNyArMzU5LDcgQEAKIAkgKiBjb21tYW5kLiAKIAkgKi8KIAlzbG90LT5jdHJsLT5jbWRfYnVzeSA9IDE7Ci0Jd3JpdGV3KHRlbXBfd29yZCwgcGhwX2N0bHItPmNyZWcgKyBDTUQpOworCXNocGNfd3JpdGV3KGN0cmwsIENNRCwgdGVtcF93b3JkKTsKIAogCS8qCiAJICogV2FpdCBmb3IgY29tbWFuZCBjb21wbGV0aW9uLgpAQCAtMzM4LDE4ICszODMsMTIgQEAKIAogc3RhdGljIGludCBocGNfY2hlY2tfY21kX3N0YXR1cyhzdHJ1Y3QgY29udHJvbGxlciAqY3RybCkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBjdHJsLT5ocGNfY3Rscl9oYW5kbGU7CiAJdTE2IGNtZF9zdGF0dXM7CiAJaW50IHJldHZhbCA9IDA7CiAKIAlEQkdfRU5URVJfUk9VVElORSAKLQkKLQlpZiAoIWN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9CiAKLQljbWRfc3RhdHVzID0gcmVhZHcocGhwX2N0bHItPmNyZWcgKyBDTURfU1RBVFVTKSAmIDB4MDAwRjsKKwljbWRfc3RhdHVzID0gc2hwY19yZWFkdyhjdHJsLCBDTURfU1RBVFVTKSAmIDB4MDAwRjsKIAkKIAlzd2l0Y2ggKGNtZF9zdGF0dXMgPj4gMSkgewogCWNhc2UgMDoKQEAgLTM3OCwzNyArNDE3LDI3IEBACiAKIHN0YXRpYyBpbnQgaHBjX2dldF9hdHRlbnRpb25fc3RhdHVzKHN0cnVjdCBzbG90ICpzbG90LCB1OCAqc3RhdHVzKQogewotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHNsb3QtPmN0cmw7CiAJdTMyIHNsb3RfcmVnOwotCXUxNiBzbG90X3N0YXR1czsKLQl1OCBhdHRlbl9sZWRfc3RhdGU7CisJdTggc3RhdGU7CiAJCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9CisJc2xvdF9yZWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfUkVHKHNsb3QtPmhwX3Nsb3QpKTsKKwlzdGF0ZSA9IChzbG90X3JlZyAmIEFUTl9MRURfU1RBVEVfTUFTSykgPj4gQVROX0xFRF9TVEFURV9TSElGVDsKIAotCXNsb3RfcmVnID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UMSArIDQqKHNsb3QtPmhwX3Nsb3QpKTsKLQlzbG90X3N0YXR1cyA9ICh1MTYpIHNsb3RfcmVnOwotCWF0dGVuX2xlZF9zdGF0ZSA9IChzbG90X3N0YXR1cyAmIDB4MDAzMCkgPj4gNDsKLQotCXN3aXRjaCAoYXR0ZW5fbGVkX3N0YXRlKSB7Ci0JY2FzZSAwOgotCQkqc3RhdHVzID0gMHhGRjsJLyogUmVzZXJ2ZWQgKi8KLQkJYnJlYWs7Ci0JY2FzZSAxOgorCXN3aXRjaCAoc3RhdGUpIHsKKwljYXNlIEFUTl9MRURfU1RBVEVfT046CiAJCSpzdGF0dXMgPSAxOwkvKiBPbiAqLwogCQlicmVhazsKLQljYXNlIDI6CisJY2FzZSBBVE5fTEVEX1NUQVRFX0JMSU5LOgogCQkqc3RhdHVzID0gMjsJLyogQmxpbmsgKi8KIAkJYnJlYWs7Ci0JY2FzZSAzOgorCWNhc2UgQVROX0xFRF9TVEFURV9PRkY6CiAJCSpzdGF0dXMgPSAwOwkvKiBPZmYgKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJKnN0YXR1cyA9IDB4RkY7CisJCSpzdGF0dXMgPSAweEZGOwkvKiBSZXNlcnZlZCAqLwogCQlicmVhazsKIAl9CiAKQEAgLTQxOCw2NCArNDQ3LDQ0IEBACiAKIHN0YXRpYyBpbnQgaHBjX2dldF9wb3dlcl9zdGF0dXMoc3RydWN0IHNsb3QgKiBzbG90LCB1OCAqc3RhdHVzKQogewotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHNsb3QtPmN0cmw7CiAJdTMyIHNsb3RfcmVnOwotCXUxNiBzbG90X3N0YXR1czsKLQl1OCBzbG90X3N0YXRlOwotCWludAlyZXR2YWwgPSAwOworCXU4IHN0YXRlOwogCQogCURCR19FTlRFUl9ST1VUSU5FIAogCi0JaWYgKCFzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGUpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgY29udHJvbGxlciBoYW5kbGUhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQorCXNsb3RfcmVnID0gc2hwY19yZWFkbChjdHJsLCBTTE9UX1JFRyhzbG90LT5ocF9zbG90KSk7CisJc3RhdGUgPSAoc2xvdF9yZWcgJiBTTE9UX1NUQVRFX01BU0spID4+IFNMT1RfU1RBVEVfU0hJRlQ7CiAKLQlzbG90X3JlZyA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0xPVDEgKyA0KihzbG90LT5ocF9zbG90KSk7Ci0Jc2xvdF9zdGF0dXMgPSAodTE2KSBzbG90X3JlZzsKLQlzbG90X3N0YXRlID0gKHNsb3Rfc3RhdHVzICYgMHgwMDAzKTsKLQotCXN3aXRjaCAoc2xvdF9zdGF0ZSkgewotCWNhc2UgMDoKLQkJKnN0YXR1cyA9IDB4RkY7Ci0JCWJyZWFrOwotCWNhc2UgMToKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBTTE9UX1NUQVRFX1BXUk9OTFk6CiAJCSpzdGF0dXMgPSAyOwkvKiBQb3dlcmVkIG9ubHkgKi8KIAkJYnJlYWs7Ci0JY2FzZSAyOgorCWNhc2UgU0xPVF9TVEFURV9FTkFCTEVEOgogCQkqc3RhdHVzID0gMTsJLyogRW5hYmxlZCAqLwogCQlicmVhazsKLQljYXNlIDM6CisJY2FzZSBTTE9UX1NUQVRFX0RJU0FCTEVEOgogCQkqc3RhdHVzID0gMDsJLyogRGlzYWJsZWQgKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJKnN0YXR1cyA9IDB4RkY7CisJCSpzdGF0dXMgPSAweEZGOwkvKiBSZXNlcnZlZCAqLwogCQlicmVhazsKIAl9CiAKIAlEQkdfTEVBVkVfUk9VVElORSAKLQlyZXR1cm4gcmV0dmFsOworCXJldHVybiAwOwogfQogCiAKIHN0YXRpYyBpbnQgaHBjX2dldF9sYXRjaF9zdGF0dXMoc3RydWN0IHNsb3QgKnNsb3QsIHU4ICpzdGF0dXMpCiB7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOworCXN0cnVjdCBjb250cm9sbGVyICpjdHJsID0gc2xvdC0+Y3RybDsKIAl1MzIgc2xvdF9yZWc7Ci0JdTE2IHNsb3Rfc3RhdHVzOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlzbG90X3JlZyA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0xPVDEgKyA0KihzbG90LT5ocF9zbG90KSk7Ci0Jc2xvdF9zdGF0dXMgPSAodTE2KXNsb3RfcmVnOwotCi0JKnN0YXR1cyA9ICgoc2xvdF9zdGF0dXMgJiAweDAxMDApID09IDApID8gMCA6IDE7ICAgLyogMCAtPiBjbG9zZTsgMSAtPiBvcGVuICovCi0KKwlzbG90X3JlZyA9IHNocGNfcmVhZGwoY3RybCwgU0xPVF9SRUcoc2xvdC0+aHBfc2xvdCkpOworCSpzdGF0dXMgPSAhIShzbG90X3JlZyAmIE1STF9TRU5TT1IpOwkvKiAwIC0+IGNsb3NlOyAxIC0+IG9wZW4gKi8KIAogCURCR19MRUFWRV9ST1VUSU5FIAogCXJldHVybiAwOwpAQCAtNDgzLDIyICs0OTIsMTUgQEAKIAogc3RhdGljIGludCBocGNfZ2V0X2FkYXB0ZXJfc3RhdHVzKHN0cnVjdCBzbG90ICpzbG90LCB1OCAqc3RhdHVzKQogewotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHNsb3QtPmN0cmw7CiAJdTMyIHNsb3RfcmVnOwotCXUxNiBzbG90X3N0YXR1czsKLQl1OCBjYXJkX3N0YXRlOworCXU4IHN0YXRlOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlzbG90X3JlZyA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0xPVDEgKyA0KihzbG90LT5ocF9zbG90KSk7Ci0Jc2xvdF9zdGF0dXMgPSAodTE2KXNsb3RfcmVnOwotCWNhcmRfc3RhdGUgPSAodTgpKChzbG90X3N0YXR1cyAmIDB4MEMwMCkgPj4gMTApOwotCSpzdGF0dXMgPSAoY2FyZF9zdGF0ZSAhPSAweDMpID8gMSA6IDA7CisJc2xvdF9yZWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfUkVHKHNsb3QtPmhwX3Nsb3QpKTsKKwlzdGF0ZSA9IChzbG90X3JlZyAmIFBSU05UX01BU0spID4+IFBSU05UX1NISUZUOworCSpzdGF0dXMgPSAoc3RhdGUgIT0gMHgzKSA/IDEgOiAwOwogCiAJREJHX0xFQVZFX1JPVVRJTkUgCiAJcmV0dXJuIDA7CkBAIC01MDYsMTYgKzUwOCwxMSBAQAogCiBzdGF0aWMgaW50IGhwY19nZXRfcHJvZ19pbnQoc3RydWN0IHNsb3QgKnNsb3QsIHU4ICpwcm9nX2ludCkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwgPSBzbG90LT5jdHJsOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCi0JCi0JaWYgKCFzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGUpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgY29udHJvbGxlciBoYW5kbGUhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQogCi0JKnByb2dfaW50ID0gcmVhZGIocGhwX2N0bHItPmNyZWcgKyBQUk9HX0lOVEVSRkFDRSk7CisJKnByb2dfaW50ID0gc2hwY19yZWFkYihjdHJsLCBQUk9HX0lOVEVSRkFDRSk7CiAKIAlEQkdfTEVBVkVfUk9VVElORSAKIAlyZXR1cm4gMDsKQEAgLTUyNCwxMyArNTIxLDI3IEBACiBzdGF0aWMgaW50IGhwY19nZXRfYWRhcHRlcl9zcGVlZChzdHJ1Y3Qgc2xvdCAqc2xvdCwgZW51bSBwY2lfYnVzX3NwZWVkICp2YWx1ZSkKIHsKIAlpbnQgcmV0dmFsID0gMDsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7Ci0JdTMyIHNsb3RfcmVnID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UMSArIDQgKiBzbG90LT5ocF9zbG90KTsKLQl1OCBwY2l4X2NhcCA9IChzbG90X3JlZyA+PiAxMikgJiA3OwotCXU4IG02Nl9jYXAgID0gKHNsb3RfcmVnID4+IDkpICYgMTsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHNsb3QtPmN0cmw7CisJdTMyIHNsb3RfcmVnID0gc2hwY19yZWFkbChjdHJsLCBTTE9UX1JFRyhzbG90LT5ocF9zbG90KSk7CisJdTggbTY2X2NhcCAgPSAhIShzbG90X3JlZyAmIE1IWjY2X0NBUCk7CisJdTggcGksIHBjaXhfY2FwOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKKwlpZiAoKHJldHZhbCA9IGhwY19nZXRfcHJvZ19pbnQoc2xvdCwgJnBpKSkpCisJCXJldHVybiByZXR2YWw7CisKKwlzd2l0Y2ggKHBpKSB7CisJY2FzZSAxOgorCQlwY2l4X2NhcCA9IChzbG90X3JlZyAmIFBDSVhfQ0FQX01BU0tfUEkxKSA+PiBQQ0lYX0NBUF9TSElGVDsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlwY2l4X2NhcCA9IChzbG90X3JlZyAmIFBDSVhfQ0FQX01BU0tfUEkyKSA+PiBQQ0lYX0NBUF9TSElGVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJZGJnKCIlczogc2xvdF9yZWcgPSAleCwgcGNpeF9jYXAgPSAleCwgbTY2X2NhcCA9ICV4XG4iLAogCSAgICBfX0ZVTkNUSU9OX18sIHNsb3RfcmVnLCBwY2l4X2NhcCwgbTY2X2NhcCk7CiAKQEAgLTU2NCwyMCArNTc1LDE1IEBACiAKIHN0YXRpYyBpbnQgaHBjX2dldF9tb2RlMV9FQ0NfY2FwKHN0cnVjdCBzbG90ICpzbG90LCB1OCAqbW9kZSkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwgPSBzbG90LT5jdHJsOwogCXUxNiBzZWNfYnVzX3N0YXR1czsKIAl1OCBwaTsKIAlpbnQgcmV0dmFsID0gMDsKIAogCURCR19FTlRFUl9ST1VUSU5FIAogCi0JaWYgKCFzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGUpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgY29udHJvbGxlciBoYW5kbGUhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcGkgPSByZWFkYihwaHBfY3Rsci0+Y3JlZyArIFBST0dfSU5URVJGQUNFKTsKLQlzZWNfYnVzX3N0YXR1cyA9IHJlYWR3KHBocF9jdGxyLT5jcmVnICsgU0VDX0JVU19DT05GSUcpOworCXBpID0gc2hwY19yZWFkYihjdHJsLCBQUk9HX0lOVEVSRkFDRSk7CisJc2VjX2J1c19zdGF0dXMgPSBzaHBjX3JlYWR3KGN0cmwsIFNFQ19CVVNfQ09ORklHKTsKIAogCWlmIChwaSA9PSAyKSB7CiAJCSptb2RlID0gKHNlY19idXNfc3RhdHVzICYgMHgwMTAwKSA+PiA4OwpAQCAtNTkzLDEyOCArNTk5LDUzIEBACiAKIHN0YXRpYyBpbnQgaHBjX3F1ZXJ5X3Bvd2VyX2ZhdWx0KHN0cnVjdCBzbG90ICogc2xvdCkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJc3RydWN0IGNvbnRyb2xsZXIgKmN0cmwgPSBzbG90LT5jdHJsOwogCXUzMiBzbG90X3JlZzsKLQl1MTYgc2xvdF9zdGF0dXM7Ci0JdTggcHdyX2ZhdWx0X3N0YXRlLCBzdGF0dXM7CiAKIAlEQkdfRU5URVJfUk9VVElORSAKIAotCWlmICghc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXNsb3RfcmVnID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UMSArIDQqKHNsb3QtPmhwX3Nsb3QpKTsKLQlzbG90X3N0YXR1cyA9ICh1MTYpIHNsb3RfcmVnOwotCXB3cl9mYXVsdF9zdGF0ZSA9IChzbG90X3N0YXR1cyAmIDB4MDA0MCkgPj4gNzsKLQlzdGF0dXMgPSAocHdyX2ZhdWx0X3N0YXRlID09IDEpID8gMCA6IDE7CisJc2xvdF9yZWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfUkVHKHNsb3QtPmhwX3Nsb3QpKTsKIAogCURCR19MRUFWRV9ST1VUSU5FCiAJLyogTm90ZTogTG9naWMgMCA9PiBmYXVsdCAqLwotCXJldHVybiBzdGF0dXM7CisJcmV0dXJuICEoc2xvdF9yZWcgJiBQT1dFUl9GQVVMVCk7CiB9CiAKIHN0YXRpYyBpbnQgaHBjX3NldF9hdHRlbnRpb25fc3RhdHVzKHN0cnVjdCBzbG90ICpzbG90LCB1OCB2YWx1ZSkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7CiAJdTggc2xvdF9jbWQgPSAwOwotCWludCByYyA9IDA7Ci0KLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoc2xvdC0+aHBfc2xvdCA+PSBwaHBfY3Rsci0+bnVtX3Nsb3RzKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIHNsb3QgbnVtYmVyIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOwotCX0KIAogCXN3aXRjaCAodmFsdWUpIHsKIAkJY2FzZSAwIDoJCi0JCQlzbG90X2NtZCA9IDB4MzA7CS8qIE9GRiAqLworCQkJc2xvdF9jbWQgPSBTRVRfQVRUTl9PRkY7CS8qIE9GRiAqLwogCQkJYnJlYWs7CiAJCWNhc2UgMToKLQkJCXNsb3RfY21kID0gMHgxMDsJLyogT04gKi8KKwkJCXNsb3RfY21kID0gU0VUX0FUVE5fT047CQkvKiBPTiAqLwogCQkJYnJlYWs7CiAJCWNhc2UgMjoKLQkJCXNsb3RfY21kID0gMHgyMDsJLyogQkxJTksgKi8KKwkJCXNsb3RfY21kID0gU0VUX0FUVE5fQkxJTks7CS8qIEJMSU5LICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtMTsKIAl9CiAKLQlzaHBjX3dyaXRlX2NtZChzbG90LCBzbG90LT5ocF9zbG90LCBzbG90X2NtZCk7Ci0JCi0JcmV0dXJuIHJjOworCXJldHVybiBzaHBjX3dyaXRlX2NtZChzbG90LCBzbG90LT5ocF9zbG90LCBzbG90X2NtZCk7CiB9CiAKIAogc3RhdGljIHZvaWQgaHBjX3NldF9ncmVlbl9sZWRfb24oc3RydWN0IHNsb3QgKnNsb3QpCiB7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOwotCXU4IHNsb3RfY21kOwotCi0JaWYgKCFzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGUpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgY29udHJvbGxlciBoYW5kbGUhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gOwotCX0KLQotCWlmIChzbG90LT5ocF9zbG90ID49IHBocF9jdGxyLT5udW1fc2xvdHMpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgc2xvdCBudW1iZXIhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gOwotCX0KLQotCXNsb3RfY21kID0gMHgwNDsKLQotCXNocGNfd3JpdGVfY21kKHNsb3QsIHNsb3QtPmhwX3Nsb3QsIHNsb3RfY21kKTsKLQotCXJldHVybjsKKwlzaHBjX3dyaXRlX2NtZChzbG90LCBzbG90LT5ocF9zbG90LCBTRVRfUFdSX09OKTsKIH0KIAogc3RhdGljIHZvaWQgaHBjX3NldF9ncmVlbl9sZWRfb2ZmKHN0cnVjdCBzbG90ICpzbG90KQogewotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKLQl1OCBzbG90X2NtZDsKLQotCWlmICghc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIDsKLQl9Ci0KLQlpZiAoc2xvdC0+aHBfc2xvdCA+PSBwaHBfY3Rsci0+bnVtX3Nsb3RzKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIHNsb3QgbnVtYmVyIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIDsKLQl9Ci0KLQlzbG90X2NtZCA9IDB4MEM7Ci0KLQlzaHBjX3dyaXRlX2NtZChzbG90LCBzbG90LT5ocF9zbG90LCBzbG90X2NtZCk7Ci0KLQlyZXR1cm47CisJc2hwY193cml0ZV9jbWQoc2xvdCwgc2xvdC0+aHBfc2xvdCwgU0VUX1BXUl9PRkYpOwogfQogCiBzdGF0aWMgdm9pZCBocGNfc2V0X2dyZWVuX2xlZF9ibGluayhzdHJ1Y3Qgc2xvdCAqc2xvdCkKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBzbG90LT5jdHJsLT5ocGNfY3Rscl9oYW5kbGU7Ci0JdTggc2xvdF9jbWQ7Ci0KLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiA7Ci0JfQotCi0JaWYgKHNsb3QtPmhwX3Nsb3QgPj0gcGhwX2N0bHItPm51bV9zbG90cykgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBzbG90IG51bWJlciFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiA7Ci0JfQotCi0Jc2xvdF9jbWQgPSAweDA4OwotCi0Jc2hwY193cml0ZV9jbWQoc2xvdCwgc2xvdC0+aHBfc2xvdCwgc2xvdF9jbWQpOwotCi0JcmV0dXJuOworCXNocGNfd3JpdGVfY21kKHNsb3QsIHNsb3QtPmhwX3Nsb3QsIFNFVF9QV1JfQkxJTkspOwogfQogCiBpbnQgc2hwY19nZXRfY3Rscl9zbG90X2NvbmZpZyhzdHJ1Y3QgY29udHJvbGxlciAqY3RybCwKQEAgLTcyNCwyMSArNjU1LDE3IEBACiAJaW50ICp1cGRvd24sCQkvKiBwaHlzaWNhbF9zbG90X251bSBpbmNyZWFtZW50OiAxIG9yIC0xCSovCiAJaW50ICpmbGFncykKIHsKLQlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBjdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJdTMyIHNsb3RfY29uZmlnOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIWN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9CisJc2xvdF9jb25maWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfQ09ORklHKTsKKwkqZmlyc3RfZGV2aWNlX251bSA9IChzbG90X2NvbmZpZyAmIEZJUlNUX0RFVl9OVU0pID4+IDg7CisJKm51bV9jdGxyX3Nsb3RzID0gc2xvdF9jb25maWcgJiBTTE9UX05VTTsKKwkqcGh5c2ljYWxfc2xvdF9udW0gPSAoc2xvdF9jb25maWcgJiBQU04pID4+IDE2OworCSp1cGRvd24gPSAoKHNsb3RfY29uZmlnICYgVVBET1dOKSA+PiAyOSkgPyAxIDogLTE7CiAKLQkqZmlyc3RfZGV2aWNlX251bSA9IHBocF9jdGxyLT5zbG90X2RldmljZV9vZmZzZXQ7CS8qIE9idGFpbmVkIGluIHNocGNfaW5pdCgpICovCi0JKm51bV9jdGxyX3Nsb3RzID0gcGhwX2N0bHItPm51bV9zbG90czsJCQkvKiBPYnRhaW5lZCBpbiBzaHBjX2luaXQoKSAqLwotCi0JKnBoeXNpY2FsX3Nsb3RfbnVtID0gKHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0xPVF9DT05GSUcpICYgUFNOKSA+PiAxNjsKIAlkYmcoIiVzOiBwaHlzaWNhbF9zbG90X251bSA9ICV4XG4iLCBfX0ZVTkNUSU9OX18sICpwaHlzaWNhbF9zbG90X251bSk7Ci0JKnVwZG93biA9ICgocmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UX0NPTkZJRykgJiBVUERPV04gKSA+PiAyOSkgPyAxIDogLTE7CQogCiAJREJHX0xFQVZFX1JPVVRJTkUgCiAJcmV0dXJuIDA7CkBAIC03NDksMjIgKzY3NiwzNCBAQAogCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IGN0cmwtPmhwY19jdGxyX2hhbmRsZTsKIAlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcCwgKnBfcHJldjsKIAlpbnQgaTsKKwl1MzIgc2xvdF9yZWcsIHNlcnJfaW50OwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIWN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiA7CisJLyoKKwkgKiBNYXNrIGV2ZW50IGludGVycnVwdHMgYW5kIFNFUlJzIG9mIGFsbCBzbG90cworCSAqLworCWZvciAoaSA9IDA7IGkgPCBjdHJsLT5udW1fc2xvdHM7IGkrKykgeworCQlzbG90X3JlZyA9IHNocGNfcmVhZGwoY3RybCwgU0xPVF9SRUcoaSkpOworCQlzbG90X3JlZyB8PSAoUFJTTlRfQ0hBTkdFX0lOVFJfTUFTSyB8IElTT19QRkFVTFRfSU5UUl9NQVNLIHwKKwkJCSAgICAgQlVUVE9OX1BSRVNTX0lOVFJfTUFTSyB8IE1STF9DSEFOR0VfSU5UUl9NQVNLIHwKKwkJCSAgICAgQ09OX1BGQVVMVF9JTlRSX01BU0sgICB8IE1STF9DSEFOR0VfU0VSUl9NQVNLIHwKKwkJCSAgICAgQ09OX1BGQVVMVF9TRVJSX01BU0spOworCQlzbG90X3JlZyAmPSB+U0xPVF9SRUdfUlNWRFpfTUFTSzsKKwkJc2hwY193cml0ZWwoY3RybCwgU0xPVF9SRUcoaSksIHNsb3RfcmVnKTsKIAl9CiAKLQkvKgotCSAqIE1hc2sgYWxsIHNsb3QgZXZlbnQgaW50ZXJydXB0cwotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBjdHJsLT5udW1fc2xvdHM7IGkrKykKLQkJd3JpdGVsKDB4ZmZmZjNmZmYsIHBocF9jdGxyLT5jcmVnICsgU0xPVDEgKyAoNCAqIGkpKTsKLQogCWNsZWFudXBfc2xvdHMoY3RybCk7CiAKKwkvKgorCSAqIE1hc2sgU0VSUiBhbmQgU3lzdGVtIEludGVycnV0IGdlbmVyYXRpb24KKwkgKi8KKwlzZXJyX2ludCA9IHNocGNfcmVhZGwoY3RybCwgU0VSUl9JTlRSX0VOQUJMRSk7CisJc2Vycl9pbnQgfD0gKEdMT0JBTF9JTlRSX01BU0sgIHwgR0xPQkFMX1NFUlJfTUFTSyB8CisJCSAgICAgQ09NTUFORF9JTlRSX01BU0sgfCBBUkJJVEVSX1NFUlJfTUFTSyk7CisJc2Vycl9pbnQgJj0gflNFUlJfSU5UUl9SU1ZEWl9NQVNLOworCXNocGNfd3JpdGVsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUsIHNlcnJfaW50KTsKKwogCWlmIChzaHBjaHBfcG9sbF9tb2RlKSB7CiAJICAgIGRlbF90aW1lcigmcGhwX2N0bHItPmludF9wb2xsX3RpbWVyKTsKIAl9IGVsc2UgewkKQEAgLTgwMCwxMTMgKzczOSw3OSBAQAogCiAJa2ZyZWUocGhwX2N0bHIpOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIHRoZSBsYXN0IGNvbnRyb2xsZXIgdG8gYmUgcmVsZWFzZWQsIGRlc3Ryb3kgdGhlCisJICogc2hwY2hwZCB3b3JrIHF1ZXVlCisJICovCisJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJnNocGNocF9udW1fY29udHJvbGxlcnMpKQorCQlkZXN0cm95X3dvcmtxdWV1ZShzaHBjaHBfd3EpOworCiBEQkdfTEVBVkVfUk9VVElORQogCQkJICAKIH0KIAogc3RhdGljIGludCBocGNfcG93ZXJfb25fc2xvdChzdHJ1Y3Qgc2xvdCAqIHNsb3QpCiB7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOwotCXU4IHNsb3RfY21kOwotCWludCByZXR2YWwgPSAwOworCWludCByZXR2YWw7CiAKIAlEQkdfRU5URVJfUk9VVElORSAKIAotCWlmICghc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmIChzbG90LT5ocF9zbG90ID49IHBocF9jdGxyLT5udW1fc2xvdHMpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgc2xvdCBudW1iZXIhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQotCXNsb3RfY21kID0gMHgwMTsKLQotCXJldHZhbCA9IHNocGNfd3JpdGVfY21kKHNsb3QsIHNsb3QtPmhwX3Nsb3QsIHNsb3RfY21kKTsKLQorCXJldHZhbCA9IHNocGNfd3JpdGVfY21kKHNsb3QsIHNsb3QtPmhwX3Nsb3QsIFNFVF9TTE9UX1BXUik7CiAJaWYgKHJldHZhbCkgewogCQllcnIoIiVzOiBXcml0ZSBjb21tYW5kIGZhaWxlZCFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKKwkJcmV0dXJuIHJldHZhbDsKIAl9CiAKIAlEQkdfTEVBVkVfUk9VVElORQogCi0JcmV0dXJuIHJldHZhbDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBocGNfc2xvdF9lbmFibGUoc3RydWN0IHNsb3QgKiBzbG90KQogewotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKLQl1OCBzbG90X2NtZDsKLQlpbnQgcmV0dmFsID0gMDsKKwlpbnQgcmV0dmFsOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlpZiAoIXNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZSkgewotCQllcnIoIiVzOiBJbnZhbGlkIEhQQyBjb250cm9sbGVyIGhhbmRsZSFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoc2xvdC0+aHBfc2xvdCA+PSBwaHBfY3Rsci0+bnVtX3Nsb3RzKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIHNsb3QgbnVtYmVyIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOwotCX0KLQkvKiAzQSA9PiBTbG90IC0gRW5hYmxlLCBQb3dlciBJbmRpY2F0b3IgLSBCbGluaywgQXR0ZW50aW9uIEluZGljYXRvciAtIE9mZiAqLwotCXNsb3RfY21kID0gMHgzQTsgIAotCi0JcmV0dmFsID0gc2hwY193cml0ZV9jbWQoc2xvdCwgc2xvdC0+aHBfc2xvdCwgc2xvdF9jbWQpOwotCisJLyogU2xvdCAtIEVuYWJsZSwgUG93ZXIgSW5kaWNhdG9yIC0gQmxpbmssIEF0dGVudGlvbiBJbmRpY2F0b3IgLSBPZmYgKi8KKwlyZXR2YWwgPSBzaHBjX3dyaXRlX2NtZChzbG90LCBzbG90LT5ocF9zbG90LAorCQkJU0VUX1NMT1RfRU5BQkxFIHwgU0VUX1BXUl9CTElOSyB8IFNFVF9BVFROX09GRik7CiAJaWYgKHJldHZhbCkgewogCQllcnIoIiVzOiBXcml0ZSBjb21tYW5kIGZhaWxlZCFcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiAtMTsKKwkJcmV0dXJuIHJldHZhbDsKIAl9CiAKIAlEQkdfTEVBVkVfUk9VVElORQotCXJldHVybiByZXR2YWw7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaHBjX3Nsb3RfZGlzYWJsZShzdHJ1Y3Qgc2xvdCAqIHNsb3QpCiB7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOwotCXU4IHNsb3RfY21kOwotCWludCByZXR2YWwgPSAwOworCWludCByZXR2YWw7CiAKIAlEQkdfRU5URVJfUk9VVElORSAKIAotCWlmICghc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlKSB7Ci0JCWVycigiJXM6IEludmFsaWQgSFBDIGNvbnRyb2xsZXIgaGFuZGxlIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmIChzbG90LT5ocF9zbG90ID49IHBocF9jdGxyLT5udW1fc2xvdHMpIHsKLQkJZXJyKCIlczogSW52YWxpZCBIUEMgc2xvdCBudW1iZXIhXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JLyogMUYgPT4gU2xvdCAtIERpc2FibGUsIFBvd2VyIEluZGljYXRvciAtIE9mZiwgQXR0ZW50aW9uIEluZGljYXRvciAtIE9uICovCi0Jc2xvdF9jbWQgPSAweDFGOwotCi0JcmV0dmFsID0gc2hwY193cml0ZV9jbWQoc2xvdCwgc2xvdC0+aHBfc2xvdCwgc2xvdF9jbWQpOwotCisJLyogU2xvdCAtIERpc2FibGUsIFBvd2VyIEluZGljYXRvciAtIE9mZiwgQXR0ZW50aW9uIEluZGljYXRvciAtIE9uICovCisJcmV0dmFsID0gc2hwY193cml0ZV9jbWQoc2xvdCwgc2xvdC0+aHBfc2xvdCwKKwkJCVNFVF9TTE9UX0RJU0FCTEUgfCBTRVRfUFdSX09GRiB8IFNFVF9BVFROX09OKTsKIAlpZiAocmV0dmFsKSB7CiAJCWVycigiJXM6IFdyaXRlIGNvbW1hbmQgZmFpbGVkIVxuIiwgX19GVU5DVElPTl9fKTsKLQkJcmV0dXJuIC0xOworCQlyZXR1cm4gcmV0dmFsOwogCX0KIAogCURCR19MRUFWRV9ST1VUSU5FCi0JcmV0dXJuIHJldHZhbDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBocGNfc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBzbG90ICogc2xvdCwgZW51bSBwY2lfYnVzX3NwZWVkIHZhbHVlKQogewogCWludCByZXR2YWw7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOworCXN0cnVjdCBjb250cm9sbGVyICpjdHJsID0gc2xvdC0+Y3RybDsKIAl1OCBwaSwgY21kOwogCiAJREJHX0VOVEVSX1JPVVRJTkUgCiAKLQlwaSA9IHJlYWRiKHBocF9jdGxyLT5jcmVnICsgUFJPR19JTlRFUkZBQ0UpOworCXBpID0gc2hwY19yZWFkYihjdHJsLCBQUk9HX0lOVEVSRkFDRSk7CiAJaWYgKChwaSA9PSAxKSAmJiAodmFsdWUgPiBQQ0lfU1BFRURfMTMzTUh6X1BDSVgpKQogCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtOTY1LDEwMCArODcwLDg2IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAotc3RhdGljIGlycXJldHVybl90IHNocGNfaXNyKGludCBJUlEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCitzdGF0aWMgaXJxcmV0dXJuX3Qgc2hwY19pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IE5VTEw7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyOwotCXU4IHNjaGVkdWxlX2ZsYWcgPSAwOwotCXU4IHRlbXBfYnl0ZTsKLQl1MzIgdGVtcF9kd29yZCwgaW50cl9sb2MsIGludHJfbG9jMjsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IChzdHJ1Y3QgY29udHJvbGxlciAqKWRldl9pZDsKKwlzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqcGhwX2N0bHIgPSBjdHJsLT5ocGNfY3Rscl9oYW5kbGU7CisJdTMyIHNlcnJfaW50LCBzbG90X3JlZywgaW50cl9sb2MsIGludHJfbG9jMjsKIAlpbnQgaHBfc2xvdDsKIAotCWlmICghZGV2X2lkKQotCQlyZXR1cm4gSVJRX05PTkU7Ci0KLQlpZiAoIXNocGNocF9wb2xsX21vZGUpIHsgCi0JCWN0cmwgPSAoc3RydWN0IGNvbnRyb2xsZXIgKilkZXZfaWQ7Ci0JCXBocF9jdGxyID0gY3RybC0+aHBjX2N0bHJfaGFuZGxlOwotCX0gZWxzZSB7IAotCQlwaHBfY3RsciA9IChzdHJ1Y3QgcGhwX2N0bHJfc3RhdGVfcyAqKSBkZXZfaWQ7Ci0JCWN0cmwgPSAoc3RydWN0IGNvbnRyb2xsZXIgKilwaHBfY3Rsci0+Y2FsbGJhY2tfaW5zdGFuY2VfaWQ7Ci0JfQotCi0JaWYgKCFjdHJsKQotCQlyZXR1cm4gSVJRX05PTkU7Ci0JCi0JaWYgKCFwaHBfY3RsciB8fCAhcGhwX2N0bHItPmNyZWcpCi0JCXJldHVybiBJUlFfTk9ORTsKLQogCS8qIENoZWNrIHRvIHNlZSBpZiBpdCB3YXMgb3VyIGludGVycnVwdCAqLwotCWludHJfbG9jID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBJTlRSX0xPQyk7ICAKLQorCWludHJfbG9jID0gc2hwY19yZWFkbChjdHJsLCBJTlRSX0xPQyk7CiAJaWYgKCFpbnRyX2xvYykKIAkJcmV0dXJuIElSUV9OT05FOworCiAJZGJnKCIlczogaW50cl9sb2MgPSAleFxuIixfX0ZVTkNUSU9OX18sIGludHJfbG9jKTsgCiAKIAlpZighc2hwY2hwX3BvbGxfbW9kZSkgewotCQkvKiBNYXNrIEdsb2JhbCBJbnRlcnJ1cHQgTWFzayAtIHNlZSBpbXBsZW1lbnRhdGlvbiBub3RlIG9uIHAuIDEzOSAqLwotCQkvKiBvZiBTSFBDIHNwZWMgcmV2IDEuMCovCi0JCXRlbXBfZHdvcmQgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOwotCQl0ZW1wX2R3b3JkIHw9IDB4MDAwMDAwMDE7Ci0JCXdyaXRlbCh0ZW1wX2R3b3JkLCBwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOworCQkvKgorCQkgKiBNYXNrIEdsb2JhbCBJbnRlcnJ1cHQgTWFzayAtIHNlZSBpbXBsZW1lbnRhdGlvbgorCQkgKiBub3RlIG9uIHAuIDEzOSBvZiBTSFBDIHNwZWMgcmV2IDEuMAorCQkgKi8KKwkJc2Vycl9pbnQgPSBzaHBjX3JlYWRsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUpOworCQlzZXJyX2ludCB8PSBHTE9CQUxfSU5UUl9NQVNLOworCQlzZXJyX2ludCAmPSB+U0VSUl9JTlRSX1JTVkRaX01BU0s7CisJCXNocGNfd3JpdGVsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUsIHNlcnJfaW50KTsKIAotCQlpbnRyX2xvYzIgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIElOVFJfTE9DKTsgIAorCQlpbnRyX2xvYzIgPSBzaHBjX3JlYWRsKGN0cmwsIElOVFJfTE9DKTsKIAkJZGJnKCIlczogaW50cl9sb2MyID0gJXhcbiIsX19GVU5DVElPTl9fLCBpbnRyX2xvYzIpOyAKIAl9CiAKLQlpZiAoaW50cl9sb2MgJiAweDAwMDEpIHsKKwlpZiAoaW50cl9sb2MgJiBDTURfSU5UUl9QRU5ESU5HKSB7CiAJCS8qIAogCQkgKiBDb21tYW5kIENvbXBsZXRlIEludGVycnVwdCBQZW5kaW5nIAogCQkgKiBSTyBvbmx5IC0gY2xlYXIgYnkgd3JpdGluZyAxIHRvIHRoZSBDb21tYW5kIENvbXBsZXRpb24KIAkJICogRGV0ZWN0IGJpdCBpbiBDb250cm9sbGVyIFNFUlItSU5UIHJlZ2lzdGVyCiAJCSAqLwotCQl0ZW1wX2R3b3JkID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTRVJSX0lOVFJfRU5BQkxFKTsKLQkJdGVtcF9kd29yZCAmPSAweGZmZmRmZmZmOwotCQl3cml0ZWwodGVtcF9kd29yZCwgcGhwX2N0bHItPmNyZWcgKyBTRVJSX0lOVFJfRU5BQkxFKTsKKwkJc2Vycl9pbnQgPSBzaHBjX3JlYWRsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUpOworCQlzZXJyX2ludCAmPSB+U0VSUl9JTlRSX1JTVkRaX01BU0s7CisJCXNocGNfd3JpdGVsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUsIHNlcnJfaW50KTsKKwogCQljdHJsLT5jbWRfYnVzeSA9IDA7CiAJCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmY3RybC0+cXVldWUpOwogCX0KIAotCWlmICgoaW50cl9sb2MgPSAoaW50cl9sb2MgPj4gMSkpID09IDApCisJaWYgKCEoaW50cl9sb2MgJiB+Q01EX0lOVFJfUEVORElORykpCiAJCWdvdG8gb3V0OwogCiAJZm9yIChocF9zbG90ID0gMDsgaHBfc2xvdCA8IGN0cmwtPm51bV9zbG90czsgaHBfc2xvdCsrKSB7IAotCS8qIFRvIGZpbmQgb3V0IHdoaWNoIHNsb3QgaGFzIGludGVycnVwdCBwZW5kaW5nICovCi0JCWlmICgoaW50cl9sb2MgPj4gaHBfc2xvdCkgJiAweDAxKSB7Ci0JCQl0ZW1wX2R3b3JkID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UMSArICg0KmhwX3Nsb3QpKTsKLQkJCWRiZygiJXM6IFNsb3QgJXggd2l0aCBpbnRyLCBzbG90IHJlZ2lzdGVyID0gJXhcbiIsCi0JCQkJX19GVU5DVElPTl9fLCBocF9zbG90LCB0ZW1wX2R3b3JkKTsKLQkJCXRlbXBfYnl0ZSA9ICh0ZW1wX2R3b3JkID4+IDE2KSAmIDB4RkY7Ci0JCQlpZiAoKHBocF9jdGxyLT5zd2l0Y2hfY2hhbmdlX2NhbGxiYWNrKSAmJiAodGVtcF9ieXRlICYgMHgwOCkpCi0JCQkJc2NoZWR1bGVfZmxhZyArPSBwaHBfY3Rsci0+c3dpdGNoX2NoYW5nZV9jYWxsYmFjaygKLQkJCQkJaHBfc2xvdCwgcGhwX2N0bHItPmNhbGxiYWNrX2luc3RhbmNlX2lkKTsKLQkJCWlmICgocGhwX2N0bHItPmF0dGVudGlvbl9idXR0b25fY2FsbGJhY2spICYmICh0ZW1wX2J5dGUgJiAweDA0KSkKLQkJCQlzY2hlZHVsZV9mbGFnICs9IHBocF9jdGxyLT5hdHRlbnRpb25fYnV0dG9uX2NhbGxiYWNrKAotCQkJCQlocF9zbG90LCBwaHBfY3Rsci0+Y2FsbGJhY2tfaW5zdGFuY2VfaWQpOwotCQkJaWYgKChwaHBfY3Rsci0+cHJlc2VuY2VfY2hhbmdlX2NhbGxiYWNrKSAmJiAodGVtcF9ieXRlICYgMHgwMSkpCi0JCQkJc2NoZWR1bGVfZmxhZyArPSBwaHBfY3Rsci0+cHJlc2VuY2VfY2hhbmdlX2NhbGxiYWNrKAotCQkJCQlocF9zbG90ICwgcGhwX2N0bHItPmNhbGxiYWNrX2luc3RhbmNlX2lkKTsKLQkJCWlmICgocGhwX2N0bHItPnBvd2VyX2ZhdWx0X2NhbGxiYWNrKSAmJiAodGVtcF9ieXRlICYgMHgxMikpCi0JCQkJc2NoZWR1bGVfZmxhZyArPSBwaHBfY3Rsci0+cG93ZXJfZmF1bHRfY2FsbGJhY2soCi0JCQkJCWhwX3Nsb3QsIHBocF9jdGxyLT5jYWxsYmFja19pbnN0YW5jZV9pZCk7Ci0JCQkKLQkJCS8qIENsZWFyIGFsbCBzbG90IGV2ZW50cyAqLwotCQkJdGVtcF9kd29yZCA9IDB4ZTAxZjNmZmY7Ci0JCQl3cml0ZWwodGVtcF9kd29yZCwgcGhwX2N0bHItPmNyZWcgKyBTTE9UMSArICg0KmhwX3Nsb3QpKTsKKwkJLyogVG8gZmluZCBvdXQgd2hpY2ggc2xvdCBoYXMgaW50ZXJydXB0IHBlbmRpbmcgKi8KKwkJaWYgKCEoaW50cl9sb2MgJiBTTE9UX0lOVFJfUEVORElORyhocF9zbG90KSkpCisJCQljb250aW51ZTsKIAotCQkJaW50cl9sb2MyID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBJTlRSX0xPQyk7ICAKLQkJCWRiZygiJXM6IGludHJfbG9jMiA9ICV4XG4iLF9fRlVOQ1RJT05fXywgaW50cl9sb2MyKTsgCi0JCX0KKwkJc2xvdF9yZWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfUkVHKGhwX3Nsb3QpKTsKKwkJZGJnKCIlczogU2xvdCAleCB3aXRoIGludHIsIHNsb3QgcmVnaXN0ZXIgPSAleFxuIiwKKwkJICAgIF9fRlVOQ1RJT05fXywgaHBfc2xvdCwgc2xvdF9yZWcpOworCisJCWlmIChzbG90X3JlZyAmIE1STF9DSEFOR0VfREVURUNURUQpCisJCQlwaHBfY3Rsci0+c3dpdGNoX2NoYW5nZV9jYWxsYmFjaygKKwkJCQlocF9zbG90LCBwaHBfY3Rsci0+Y2FsbGJhY2tfaW5zdGFuY2VfaWQpOworCisJCWlmIChzbG90X3JlZyAmIEJVVFRPTl9QUkVTU19ERVRFQ1RFRCkKKwkJCXBocF9jdGxyLT5hdHRlbnRpb25fYnV0dG9uX2NhbGxiYWNrKAorCQkJCWhwX3Nsb3QsIHBocF9jdGxyLT5jYWxsYmFja19pbnN0YW5jZV9pZCk7CisKKwkJaWYgKHNsb3RfcmVnICYgUFJTTlRfQ0hBTkdFX0RFVEVDVEVEKQorCQkJcGhwX2N0bHItPnByZXNlbmNlX2NoYW5nZV9jYWxsYmFjaygKKwkJCQlocF9zbG90ICwgcGhwX2N0bHItPmNhbGxiYWNrX2luc3RhbmNlX2lkKTsKKworCQlpZiAoc2xvdF9yZWcgJiAoSVNPX1BGQVVMVF9ERVRFQ1RFRCB8IENPTl9QRkFVTFRfREVURUNURUQpKQorCQkJcGhwX2N0bHItPnBvd2VyX2ZhdWx0X2NhbGxiYWNrKAorCQkJCWhwX3Nsb3QsIHBocF9jdGxyLT5jYWxsYmFja19pbnN0YW5jZV9pZCk7CisKKwkJLyogQ2xlYXIgYWxsIHNsb3QgZXZlbnRzICovCisJCXNsb3RfcmVnICY9IH5TTE9UX1JFR19SU1ZEWl9NQVNLOworCQlzaHBjX3dyaXRlbChjdHJsLCBTTE9UX1JFRyhocF9zbG90KSwgc2xvdF9yZWcpOwogCX0KICBvdXQ6CiAJaWYgKCFzaHBjaHBfcG9sbF9tb2RlKSB7CiAJCS8qIFVubWFzayBHbG9iYWwgSW50ZXJydXB0IE1hc2sgKi8KLQkJdGVtcF9kd29yZCA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0VSUl9JTlRSX0VOQUJMRSk7Ci0JCXRlbXBfZHdvcmQgJj0gMHhmZmZmZmZmZTsKLQkJd3JpdGVsKHRlbXBfZHdvcmQsIHBocF9jdGxyLT5jcmVnICsgU0VSUl9JTlRSX0VOQUJMRSk7CisJCXNlcnJfaW50ID0gc2hwY19yZWFkbChjdHJsLCBTRVJSX0lOVFJfRU5BQkxFKTsKKwkJc2Vycl9pbnQgJj0gfihHTE9CQUxfSU5UUl9NQVNLIHwgU0VSUl9JTlRSX1JTVkRaX01BU0spOworCQlzaHBjX3dyaXRlbChjdHJsLCBTRVJSX0lOVFJfRU5BQkxFLCBzZXJyX2ludCk7CiAJfQogCQogCXJldHVybiBJUlFfSEFORExFRDsKQEAgLTEwNjcsMTEgKzk1OCwxMSBAQAogc3RhdGljIGludCBocGNfZ2V0X21heF9idXNfc3BlZWQgKHN0cnVjdCBzbG90ICpzbG90LCBlbnVtIHBjaV9idXNfc3BlZWQgKnZhbHVlKQogewogCWludCByZXR2YWwgPSAwOwotCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciA9IHNsb3QtPmN0cmwtPmhwY19jdGxyX2hhbmRsZTsKKwlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHNsb3QtPmN0cmw7CiAJZW51bSBwY2lfYnVzX3NwZWVkIGJ1c19zcGVlZCA9IFBDSV9TUEVFRF9VTktOT1dOOwotCXU4IHBpID0gcmVhZGIocGhwX2N0bHItPmNyZWcgKyBQUk9HX0lOVEVSRkFDRSk7Ci0JdTMyIHNsb3RfYXZhaWwxID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UX0FWQUlMMSk7Ci0JdTMyIHNsb3RfYXZhaWwyID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UX0FWQUlMMik7CisJdTggcGkgPSBzaHBjX3JlYWRiKGN0cmwsIFBST0dfSU5URVJGQUNFKTsKKwl1MzIgc2xvdF9hdmFpbDEgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfQVZBSUwxKTsKKwl1MzIgc2xvdF9hdmFpbDIgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfQVZBSUwyKTsKIAogCURCR19FTlRFUl9ST1VUSU5FIAogCkBAIC0xMTE0LDEwICsxMDA1LDEwIEBACiBzdGF0aWMgaW50IGhwY19nZXRfY3VyX2J1c19zcGVlZCAoc3RydWN0IHNsb3QgKnNsb3QsIGVudW0gcGNpX2J1c19zcGVlZCAqdmFsdWUpCiB7CiAJaW50IHJldHZhbCA9IDA7Ci0Jc3RydWN0IHBocF9jdGxyX3N0YXRlX3MgKnBocF9jdGxyID0gc2xvdC0+Y3RybC0+aHBjX2N0bHJfaGFuZGxlOworCXN0cnVjdCBjb250cm9sbGVyICpjdHJsID0gc2xvdC0+Y3RybDsKIAllbnVtIHBjaV9idXNfc3BlZWQgYnVzX3NwZWVkID0gUENJX1NQRUVEX1VOS05PV047Ci0JdTE2IHNlY19idXNfcmVnID0gcmVhZHcocGhwX2N0bHItPmNyZWcgKyBTRUNfQlVTX0NPTkZJRyk7Ci0JdTggcGkgPSByZWFkYihwaHBfY3Rsci0+Y3JlZyArIFBST0dfSU5URVJGQUNFKTsKKwl1MTYgc2VjX2J1c19yZWcgPSBzaHBjX3JlYWR3KGN0cmwsIFNFQ19CVVNfQ09ORklHKTsKKwl1OCBwaSA9IHNocGNfcmVhZGIoY3RybCwgUFJPR19JTlRFUkZBQ0UpOwogCXU4IHNwZWVkX21vZGUgPSAocGkgPT0gMikgPyAoc2VjX2J1c19yZWcgJiAweEYpIDogKHNlY19idXNfcmVnICYgMHg3KTsKIAogCURCR19FTlRFUl9ST1VUSU5FIApAQCAtMTIwNiwyOCArMTA5NywxNCBAQAogCS5yZWxlYXNlX2N0bHIJCQk9IGhwY19yZWxlYXNlX2N0bHIsCiB9OwogCi1pbmxpbmUgc3RhdGljIGludCBzaHBjX2luZGlyZWN0X2NyZWdfcmVhZChzdHJ1Y3QgY29udHJvbGxlciAqY3RybCwgaW50IGluZGV4LAotCQkJCQkgIHUzMiAqdmFsdWUpCi17Ci0JaW50IHJjOwotCXUzMiBjYXBfb2Zmc2V0ID0gY3RybC0+Y2FwX29mZnNldDsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGN0cmwtPnBjaV9kZXY7Ci0KLQlyYyA9IHBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBjYXBfb2Zmc2V0ICsgRFdPUkRfU0VMRUNULCBpbmRleCk7Ci0JaWYgKHJjKQotCQlyZXR1cm4gcmM7Ci0JcmV0dXJuIHBjaV9yZWFkX2NvbmZpZ19kd29yZChwZGV2LCBjYXBfb2Zmc2V0ICsgRFdPUkRfREFUQSwgdmFsdWUpOwotfQotCiBpbnQgc2hwY19pbml0KHN0cnVjdCBjb250cm9sbGVyICogY3RybCwgc3RydWN0IHBjaV9kZXYgKiBwZGV2KQogewogCXN0cnVjdCBwaHBfY3Rscl9zdGF0ZV9zICpwaHBfY3RsciwgKnA7CiAJdm9pZCAqaW5zdGFuY2VfaWQgPSBjdHJsOwogCWludCByYywgbnVtX3Nsb3RzID0gMDsKIAl1OCBocF9zbG90OwotCXN0YXRpYyBpbnQgZmlyc3QgPSAxOwogCXUzMiBzaHBjX2Jhc2Vfb2Zmc2V0OwotCXUzMiB0ZW1wZHdvcmQsIHNsb3RfcmVnOworCXUzMiB0ZW1wZHdvcmQsIHNsb3RfcmVnLCBzbG90X2NvbmZpZzsKIAl1OCBpOwogCiAJREJHX0VOVEVSX1JPVVRJTkUKQEAgLTEyNTcsMTMgKzExMzQsMTMgQEAKIAkJfQogCQlkYmcoIiVzOiBjYXBfb2Zmc2V0ID0gJXhcbiIsIF9fRlVOQ1RJT05fXywgY3RybC0+Y2FwX29mZnNldCk7CiAKLQkJcmMgPSBzaHBjX2luZGlyZWN0X2NyZWdfcmVhZChjdHJsLCAwLCAmc2hwY19iYXNlX29mZnNldCk7CisJCXJjID0gc2hwY19pbmRpcmVjdF9yZWFkKGN0cmwsIDAsICZzaHBjX2Jhc2Vfb2Zmc2V0KTsKIAkJaWYgKHJjKSB7CiAJCQllcnIoIiVzOiBjYW5ub3QgcmVhZCBiYXNlX29mZnNldFxuIiwgX19GVU5DVElPTl9fKTsKIAkJCWdvdG8gYWJvcnRfZnJlZV9jdGxyOwogCQl9CiAKLQkJcmMgPSBzaHBjX2luZGlyZWN0X2NyZWdfcmVhZChjdHJsLCAzLCAmdGVtcGR3b3JkKTsKKwkJcmMgPSBzaHBjX2luZGlyZWN0X3JlYWQoY3RybCwgMywgJnRlbXBkd29yZCk7CiAJCWlmIChyYykgewogCQkJZXJyKCIlczogY2Fubm90IHJlYWQgc2xvdCBjb25maWdcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCQlnb3RvIGFib3J0X2ZyZWVfY3RscjsKQEAgLTEyNzIsNyArMTE0OSw3IEBACiAJCWRiZygiJXM6IG51bV9zbG90cyAoaW5kaXJlY3QpICV4XG4iLCBfX0ZVTkNUSU9OX18sIG51bV9zbG90cyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IDkgKyBudW1fc2xvdHM7IGkrKykgewotCQkJcmMgPSBzaHBjX2luZGlyZWN0X2NyZWdfcmVhZChjdHJsLCBpLCAmdGVtcGR3b3JkKTsKKwkJCXJjID0gc2hwY19pbmRpcmVjdF9yZWFkKGN0cmwsIGksICZ0ZW1wZHdvcmQpOwogCQkJaWYgKHJjKSB7CiAJCQkJZXJyKCIlczogY2Fubm90IHJlYWQgY3JlZyAoaW5kZXggPSAlZClcbiIsCiAJCQkJICAgIF9fRlVOQ1RJT05fXywgaSk7CkBAIC0xMjg3LDExICsxMTY0LDYgQEAKIAkJY3RybC0+bW1pb19zaXplID0gMHgyNCArIDB4NCAqIG51bV9zbG90czsKIAl9CiAKLQlpZiAoZmlyc3QpIHsKLQkJc3Bpbl9sb2NrX2luaXQoJmhwY19ldmVudF9sb2NrKTsKLQkJZmlyc3QgPSAwOwotCX0KLQogCWluZm8oIkhQQyB2ZW5kb3JfaWQgJXggZGV2aWNlX2lkICV4IHNzX3ZpZCAleCBzc19kaWQgJXhcbiIsIHBkZXYtPnZlbmRvciwgcGRldi0+ZGV2aWNlLCBwZGV2LT5zdWJzeXN0ZW1fdmVuZG9yLCAKIAkJcGRldi0+c3Vic3lzdGVtX2RldmljZSk7CiAJCkBAIC0xMzI2LDI5ICsxMTk4LDM5IEBACiAJcGhwX2N0bHItPnBvd2VyX2ZhdWx0X2NhbGxiYWNrID0gc2hwY2hwX2hhbmRsZV9wb3dlcl9mYXVsdDsKIAlwaHBfY3Rsci0+Y2FsbGJhY2tfaW5zdGFuY2VfaWQgPSBpbnN0YW5jZV9pZDsKIAorCWN0cmwtPmhwY19jdGxyX2hhbmRsZSA9IHBocF9jdGxyOworCWN0cmwtPmhwY19vcHMgPSAmc2hwY2hwX2hwY19vcHM7CisKIAkvKiBSZXR1cm4gUENJIENvbnRyb2xsZXIgSW5mbyAqLwotCXBocF9jdGxyLT5zbG90X2RldmljZV9vZmZzZXQgPSAocmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UX0NPTkZJRykgJiBGSVJTVF9ERVZfTlVNICkgPj4gODsKLQlwaHBfY3Rsci0+bnVtX3Nsb3RzID0gcmVhZGwocGhwX2N0bHItPmNyZWcgKyBTTE9UX0NPTkZJRykgJiBTTE9UX05VTTsKKwlzbG90X2NvbmZpZyA9IHNocGNfcmVhZGwoY3RybCwgU0xPVF9DT05GSUcpOworCXBocF9jdGxyLT5zbG90X2RldmljZV9vZmZzZXQgPSAoc2xvdF9jb25maWcgJiBGSVJTVF9ERVZfTlVNKSA+PiA4OworCXBocF9jdGxyLT5udW1fc2xvdHMgPSBzbG90X2NvbmZpZyAmIFNMT1RfTlVNOwogCWRiZygiJXM6IHNsb3RfZGV2aWNlX29mZnNldCAleFxuIiwgX19GVU5DVElPTl9fLCBwaHBfY3Rsci0+c2xvdF9kZXZpY2Vfb2Zmc2V0KTsKIAlkYmcoIiVzOiBudW1fc2xvdHMgJXhcbiIsIF9fRlVOQ1RJT05fXywgcGhwX2N0bHItPm51bV9zbG90cyk7CiAKIAkvKiBNYXNrIEdsb2JhbCBJbnRlcnJ1cHQgTWFzayAmIENvbW1hbmQgQ29tcGxldGUgSW50ZXJydXB0IE1hc2sgKi8KLQl0ZW1wZHdvcmQgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOworCXRlbXBkd29yZCA9IHNocGNfcmVhZGwoY3RybCwgU0VSUl9JTlRSX0VOQUJMRSk7CiAJZGJnKCIlczogU0VSUl9JTlRSX0VOQUJMRSA9ICV4XG4iLCBfX0ZVTkNUSU9OX18sIHRlbXBkd29yZCk7Ci0JdGVtcGR3b3JkID0gMHgwMDAzMDAwZjsgICAKLQl3cml0ZWwodGVtcGR3b3JkLCBwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOwotCXRlbXBkd29yZCA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0VSUl9JTlRSX0VOQUJMRSk7CisJdGVtcGR3b3JkIHw9IChHTE9CQUxfSU5UUl9NQVNLICB8IEdMT0JBTF9TRVJSX01BU0sgfAorCQkgICAgICBDT01NQU5EX0lOVFJfTUFTSyB8IEFSQklURVJfU0VSUl9NQVNLKTsKKwl0ZW1wZHdvcmQgJj0gflNFUlJfSU5UUl9SU1ZEWl9NQVNLOworCXNocGNfd3JpdGVsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUsIHRlbXBkd29yZCk7CisJdGVtcGR3b3JkID0gc2hwY19yZWFkbChjdHJsLCBTRVJSX0lOVFJfRU5BQkxFKTsKIAlkYmcoIiVzOiBTRVJSX0lOVFJfRU5BQkxFID0gJXhcbiIsIF9fRlVOQ1RJT05fXywgdGVtcGR3b3JkKTsKIAogCS8qIE1hc2sgdGhlIE1STCBzZW5zb3IgU0VSUiBNYXNrIG9mIGluZGl2aWR1YWwgc2xvdCBpbgogCSAqIFNsb3QgU0VSUi1JTlQgTWFzayAmIGNsZWFyIGFsbCB0aGUgZXhpc3RpbmcgZXZlbnQgaWYgYW55CiAJICovCiAJZm9yIChocF9zbG90ID0gMDsgaHBfc2xvdCA8IHBocF9jdGxyLT5udW1fc2xvdHM7IGhwX3Nsb3QrKykgewotCQlzbG90X3JlZyA9IHJlYWRsKHBocF9jdGxyLT5jcmVnICsgU0xPVDEgKyA0KmhwX3Nsb3QgKTsKKwkJc2xvdF9yZWcgPSBzaHBjX3JlYWRsKGN0cmwsIFNMT1RfUkVHKGhwX3Nsb3QpKTsKIAkJZGJnKCIlczogRGVmYXVsdCBMb2dpY2FsIFNsb3QgUmVnaXN0ZXIgJWQgdmFsdWUgJXhcbiIsIF9fRlVOQ1RJT05fXywKIAkJCWhwX3Nsb3QsIHNsb3RfcmVnKTsKLQkJdGVtcGR3b3JkID0gMHhmZmZmM2ZmZjsgIAotCQl3cml0ZWwodGVtcGR3b3JkLCBwaHBfY3Rsci0+Y3JlZyArIFNMT1QxICsgKDQqaHBfc2xvdCkpOworCQlzbG90X3JlZyB8PSAoUFJTTlRfQ0hBTkdFX0lOVFJfTUFTSyB8IElTT19QRkFVTFRfSU5UUl9NQVNLIHwKKwkJCSAgICAgQlVUVE9OX1BSRVNTX0lOVFJfTUFTSyB8IE1STF9DSEFOR0VfSU5UUl9NQVNLIHwKKwkJCSAgICAgQ09OX1BGQVVMVF9JTlRSX01BU0sgICB8IE1STF9DSEFOR0VfU0VSUl9NQVNLIHwKKwkJCSAgICAgQ09OX1BGQVVMVF9TRVJSX01BU0spOworCQlzbG90X3JlZyAmPSB+U0xPVF9SRUdfUlNWRFpfTUFTSzsKKwkJc2hwY193cml0ZWwoY3RybCwgU0xPVF9SRUcoaHBfc2xvdCksIHNsb3RfcmVnKTsKIAl9CiAJCiAJaWYgKHNocGNocF9wb2xsX21vZGUpICB7LyogSW5zdGFsbCBpbnRlcnJ1cHQgcG9sbGluZyBjb2RlICovCkBAIC0xMzkyLDI0ICsxMjc0LDM3IEBACiAJfQogCXNwaW5fdW5sb2NrKCZsaXN0X2xvY2spOwogCi0KIAljdGxyX3NlcV9udW0rKzsKLQljdHJsLT5ocGNfY3Rscl9oYW5kbGUgPSBwaHBfY3RscjsKLQljdHJsLT5ocGNfb3BzID0gJnNocGNocF9ocGNfb3BzOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBjb250cm9sbGVyIHRvIGJlIGluaXRpYWxpemVkLAorCSAqIGluaXRpYWxpemUgdGhlIHNocGNocGQgd29yayBxdWV1ZQorCSAqLworCWlmIChhdG9taWNfYWRkX3JldHVybigxLCAmc2hwY2hwX251bV9jb250cm9sbGVycykgPT0gMSkgeworCQlzaHBjaHBfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgic2hwY2hwZCIpOworCQlpZiAoIXNocGNocF93cSkKKwkJCXJldHVybiAtRU5PTUVNOworCX0KKworCS8qCisJICogVW5tYXNrIGFsbCBldmVudCBpbnRlcnJ1cHRzIG9mIGFsbCBzbG90cworCSAqLwogCWZvciAoaHBfc2xvdCA9IDA7IGhwX3Nsb3QgPCBwaHBfY3Rsci0+bnVtX3Nsb3RzOyBocF9zbG90KyspIHsKLQkJc2xvdF9yZWcgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIFNMT1QxICsgNCpocF9zbG90ICk7CisJCXNsb3RfcmVnID0gc2hwY19yZWFkbChjdHJsLCBTTE9UX1JFRyhocF9zbG90KSk7CiAJCWRiZygiJXM6IERlZmF1bHQgTG9naWNhbCBTbG90IFJlZ2lzdGVyICVkIHZhbHVlICV4XG4iLCBfX0ZVTkNUSU9OX18sCiAJCQlocF9zbG90LCBzbG90X3JlZyk7Ci0JCXRlbXBkd29yZCA9IDB4ZTAxZjNmZmY7ICAKLQkJd3JpdGVsKHRlbXBkd29yZCwgcGhwX2N0bHItPmNyZWcgKyBTTE9UMSArICg0KmhwX3Nsb3QpKTsKKwkJc2xvdF9yZWcgJj0gfihQUlNOVF9DSEFOR0VfSU5UUl9NQVNLIHwgSVNPX1BGQVVMVF9JTlRSX01BU0sgfAorCQkJICAgICAgQlVUVE9OX1BSRVNTX0lOVFJfTUFTSyB8IE1STF9DSEFOR0VfSU5UUl9NQVNLIHwKKwkJCSAgICAgIENPTl9QRkFVTFRfSU5UUl9NQVNLIHwgU0xPVF9SRUdfUlNWRFpfTUFTSyk7CisJCXNocGNfd3JpdGVsKGN0cmwsIFNMT1RfUkVHKGhwX3Nsb3QpLCBzbG90X3JlZyk7CiAJfQogCWlmICghc2hwY2hwX3BvbGxfbW9kZSkgewogCQkvKiBVbm1hc2sgYWxsIGdlbmVyYWwgaW5wdXQgaW50ZXJydXB0cyBhbmQgU0VSUiAqLwotCQl0ZW1wZHdvcmQgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOwotCQl0ZW1wZHdvcmQgPSAweDAwMDAwMDBhOwotCQl3cml0ZWwodGVtcGR3b3JkLCBwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOwotCQl0ZW1wZHdvcmQgPSByZWFkbChwaHBfY3Rsci0+Y3JlZyArIFNFUlJfSU5UUl9FTkFCTEUpOworCQl0ZW1wZHdvcmQgPSBzaHBjX3JlYWRsKGN0cmwsIFNFUlJfSU5UUl9FTkFCTEUpOworCQl0ZW1wZHdvcmQgJj0gfihHTE9CQUxfSU5UUl9NQVNLIHwgQ09NTUFORF9JTlRSX01BU0sgfAorCQkJICAgICAgIFNFUlJfSU5UUl9SU1ZEWl9NQVNLKTsKKwkJc2hwY193cml0ZWwoY3RybCwgU0VSUl9JTlRSX0VOQUJMRSwgdGVtcGR3b3JkKTsKKwkJdGVtcGR3b3JkID0gc2hwY19yZWFkbChjdHJsLCBTRVJSX0lOVFJfRU5BQkxFKTsKIAkJZGJnKCIlczogU0VSUl9JTlRSX0VOQUJMRSA9ICV4XG4iLCBfX0ZVTkNUSU9OX18sIHRlbXBkd29yZCk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9wY2kuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX3BjaS5jCmluZGV4IDI1N2FkYzIuLjBhNmIyNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX3BjaS5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX3BjaS5jCkBAIC00NywyMSArNDcsMjggQEAKIAkJcmV0dXJuOwogCiAJLyogdXNlIGRlZmF1bHQgdmFsdWVzIGlmIHdlIGNhbid0IGdldCB0aGVtIGZyb20gZmlybXdhcmUgKi8KLQlpZiAoZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKGRldiwgJmhwcCkpIHsKLQkJaHBwLmNhY2hlX2xpbmVfc2l6ZSA9IDg7Ci0JCWhwcC5sYXRlbmN5X3RpbWVyID0gMHg0MDsKLQkJaHBwLmVuYWJsZV9zZXJyID0gMDsKLQkJaHBwLmVuYWJsZV9wZXJyID0gMDsKKwlpZiAoZ2V0X2hwX3BhcmFtc19mcm9tX2Zpcm13YXJlKGRldiwgJmhwcCkgfHwKKwkgICAgIWhwcC50MCB8fCAoaHBwLnQwLT5yZXZpc2lvbiA+IDEpKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcKKwkJICAgICAgICIlczogQ291bGQgbm90IGdldCBob3RwbHVnIHBhcmFtZXRlcnMuIFVzZSBkZWZhdWx0c1xuIiwKKwkJICAgICAgIF9fRlVOQ1RJT05fXyk7CisJCWhwcC50MCA9ICZocHAudHlwZTBfZGF0YTsKKwkJaHBwLnQwLT5yZXZpc2lvbiA9IDA7CisJCWhwcC50MC0+Y2FjaGVfbGluZV9zaXplID0gODsKKwkJaHBwLnQwLT5sYXRlbmN5X3RpbWVyID0gMHg0MDsKKwkJaHBwLnQwLT5lbmFibGVfc2VyciA9IDA7CisJCWhwcC50MC0+ZW5hYmxlX3BlcnIgPSAwOwogCX0KIAotCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9DQUNIRV9MSU5FX1NJWkUsIGhwcC5jYWNoZV9saW5lX3NpemUpOwotCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9MQVRFTkNZX1RJTUVSLCBocHAubGF0ZW5jeV90aW1lcik7CisJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwKKwkJCSAgICAgIFBDSV9DQUNIRV9MSU5FX1NJWkUsIGhwcC50MC0+Y2FjaGVfbGluZV9zaXplKTsKKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBQQ0lfTEFURU5DWV9USU1FUiwgaHBwLnQwLT5sYXRlbmN5X3RpbWVyKTsKIAlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9DT01NQU5ELCAmcGNpX2NtZCk7Ci0JaWYgKGhwcC5lbmFibGVfc2VycikKKwlpZiAoaHBwLnQwLT5lbmFibGVfc2VycikKIAkJcGNpX2NtZCB8PSBQQ0lfQ09NTUFORF9TRVJSOwogCWVsc2UKIAkJcGNpX2NtZCAmPSB+UENJX0NPTU1BTkRfU0VSUjsKLQlpZiAoaHBwLmVuYWJsZV9wZXJyKQorCWlmIChocHAudDAtPmVuYWJsZV9wZXJyKQogCQlwY2lfY21kIHw9IFBDSV9DT01NQU5EX1BBUklUWTsKIAllbHNlCiAJCXBjaV9jbWQgJj0gflBDSV9DT01NQU5EX1BBUklUWTsKQEAgLTcwLDEzICs3NywxMyBAQAogCS8qIFByb2dyYW0gYnJpZGdlIGNvbnRyb2wgdmFsdWUgYW5kIGNoaWxkIGRldmljZXMgKi8KIAlpZiAoKGRldi0+Y2xhc3MgPj4gOCkgPT0gUENJX0NMQVNTX0JSSURHRV9QQ0kpIHsKIAkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgUENJX1NFQ19MQVRFTkNZX1RJTUVSLAotCQkJCWhwcC5sYXRlbmN5X3RpbWVyKTsKKwkJCQlocHAudDAtPmxhdGVuY3lfdGltZXIpOwogCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIFBDSV9CUklER0VfQ09OVFJPTCwgJnBjaV9iY3RsKTsKLQkJaWYgKGhwcC5lbmFibGVfc2VycikKKwkJaWYgKGhwcC50MC0+ZW5hYmxlX3NlcnIpCiAJCQlwY2lfYmN0bCB8PSBQQ0lfQlJJREdFX0NUTF9TRVJSOwogCQllbHNlCiAJCQlwY2lfYmN0bCAmPSB+UENJX0JSSURHRV9DVExfU0VSUjsKLQkJaWYgKGhwcC5lbmFibGVfcGVycikKKwkJaWYgKGhwcC50MC0+ZW5hYmxlX3BlcnIpCiAJCQlwY2lfYmN0bCB8PSBQQ0lfQlJJREdFX0NUTF9QQVJJVFk7CiAJCWVsc2UKIAkJCXBjaV9iY3RsICY9IH5QQ0lfQlJJREdFX0NUTF9QQVJJVFk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9tc2ktYWx0aXguYyBiL2RyaXZlcnMvcGNpL21zaS1hbHRpeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZDQxODMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3BjaS9tc2ktYWx0aXguYwpAQCAtMCwwICsxLDIxMCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICovCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KKworI2luY2x1ZGUgPGFzbS9zbi9hZGRycy5oPgorI2luY2x1ZGUgPGFzbS9zbi9pbnRyLmg+CisjaW5jbHVkZSA8YXNtL3NuL3BjaWJ1c19wcm92aWRlcl9kZWZzLmg+CisjaW5jbHVkZSA8YXNtL3NuL3BjaWRldi5oPgorI2luY2x1ZGUgPGFzbS9zbi9ub2RlcGRhLmg+CisKKyNpbmNsdWRlICJtc2kuaCIKKworc3RydWN0IHNuX21zaV9pbmZvIHsKKwl1NjQgcGNpX2FkZHI7CisJc3RydWN0IHNuX2lycV9pbmZvICpzbl9pcnFfaW5mbzsKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25fbXNpX2luZm8gKnNuX21zaV9pbmZvOworCitzdGF0aWMgdm9pZAorc25fbXNpX3RlYXJkb3duKHVuc2lnbmVkIGludCB2ZWN0b3IpCit7CisJbmFzaWRfdCBuYXNpZDsKKwlpbnQgd2lkZ2V0OworCXN0cnVjdCBwY2lfZGV2ICpwZGV2OworCXN0cnVjdCBwY2lkZXZfaW5mbyAqc25fcGRldjsKKwlzdHJ1Y3Qgc25faXJxX2luZm8gKnNuX2lycV9pbmZvOworCXN0cnVjdCBwY2lidXNfYnVzc29mdCAqYnVzc29mdDsKKwlzdHJ1Y3Qgc25fcGNpYnVzX3Byb3ZpZGVyICpwcm92aWRlcjsKKworCXNuX2lycV9pbmZvID0gc25fbXNpX2luZm9bdmVjdG9yXS5zbl9pcnFfaW5mbzsKKwlpZiAoc25faXJxX2luZm8gPT0gTlVMTCB8fCBzbl9pcnFfaW5mby0+aXJxX2ludF9iaXQgPj0gMCkKKwkJcmV0dXJuOworCisJc25fcGRldiA9IChzdHJ1Y3QgcGNpZGV2X2luZm8gKilzbl9pcnFfaW5mby0+aXJxX3BjaWlvaW5mbzsKKwlwZGV2ID0gc25fcGRldi0+cGRpX2xpbnV4X3BjaWRldjsKKwlwcm92aWRlciA9IFNOX1BDSURFVl9CVVNQUk9WSURFUihwZGV2KTsKKworCSgqcHJvdmlkZXItPmRtYV91bm1hcCkocGRldiwKKwkJCSAgICAgICBzbl9tc2lfaW5mb1t2ZWN0b3JdLnBjaV9hZGRyLAorCQkJICAgICAgIFBDSV9ETUFfRlJPTURFVklDRSk7CisJc25fbXNpX2luZm9bdmVjdG9yXS5wY2lfYWRkciA9IDA7CisKKwlidXNzb2Z0ID0gU05fUENJREVWX0JVU1NPRlQocGRldik7CisJbmFzaWQgPSBOQVNJRF9HRVQoYnVzc29mdC0+YnNfYmFzZSk7CisJd2lkZ2V0ID0gKG5hc2lkICYgMSkgPworCQkJVElPX1NXSU5fV0lER0VUTlVNKGJ1c3NvZnQtPmJzX2Jhc2UpIDoKKwkJCVNXSU5fV0lER0VUTlVNKGJ1c3NvZnQtPmJzX2Jhc2UpOworCisJc25faW50cl9mcmVlKG5hc2lkLCB3aWRnZXQsIHNuX2lycV9pbmZvKTsKKwlzbl9tc2lfaW5mb1t2ZWN0b3JdLnNuX2lycV9pbmZvID0gTlVMTDsKKworCXJldHVybjsKK30KKworaW50Citzbl9tc2lfc2V0dXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCB2ZWN0b3IsCisJICAgICB1MzIgKmFkZHJfaGksIHUzMiAqYWRkcl9sbywgdTMyICpkYXRhKQoreworCWludCB3aWRnZXQ7CisJaW50IHN0YXR1czsKKwluYXNpZF90IG5hc2lkOworCXU2NCBidXNfYWRkcjsKKwlzdHJ1Y3Qgc25faXJxX2luZm8gKnNuX2lycV9pbmZvOworCXN0cnVjdCBwY2lidXNfYnVzc29mdCAqYnVzc29mdCA9IFNOX1BDSURFVl9CVVNTT0ZUKHBkZXYpOworCXN0cnVjdCBzbl9wY2lidXNfcHJvdmlkZXIgKnByb3ZpZGVyID0gU05fUENJREVWX0JVU1BST1ZJREVSKHBkZXYpOworCisJaWYgKGJ1c3NvZnQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocHJvdmlkZXIgPT0gTlVMTCB8fCBwcm92aWRlci0+ZG1hX21hcF9jb25zaXN0ZW50ID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTZXQgdXAgdGhlIHZlY3RvciBwbHVtYmluZy4gIExldCB0aGUgcHJvbSAodmlhIHNuX2ludHJfYWxsb2MpCisJICogZGVjaWRlIHdoaWNoIGNwdSB0byBkaXJlY3QgdGhpcyBtc2kgYXQgYnkgZGVmYXVsdC4KKwkgKi8KKworCW5hc2lkID0gTkFTSURfR0VUKGJ1c3NvZnQtPmJzX2Jhc2UpOworCXdpZGdldCA9IChuYXNpZCAmIDEpID8KKwkJCVRJT19TV0lOX1dJREdFVE5VTShidXNzb2Z0LT5ic19iYXNlKSA6CisJCQlTV0lOX1dJREdFVE5VTShidXNzb2Z0LT5ic19iYXNlKTsKKworCXNuX2lycV9pbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNuX2lycV9pbmZvKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCEgc25faXJxX2luZm8pCisJCXJldHVybiAtRU5PTUVNOworCisJc3RhdHVzID0gc25faW50cl9hbGxvYyhuYXNpZCwgd2lkZ2V0LCBzbl9pcnFfaW5mbywgdmVjdG9yLCAtMSwgLTEpOworCWlmIChzdGF0dXMpIHsKKwkJa2ZyZWUoc25faXJxX2luZm8pOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlzbl9pcnFfaW5mby0+aXJxX2ludF9iaXQgPSAtMTsJCS8qIG1hcmsgdGhpcyBhcyBhbiBNU0kgaXJxICovCisJc25faXJxX2ZpeHVwKHBkZXYsIHNuX2lycV9pbmZvKTsKKworCS8qIFByb20gcHJvYmFibHkgc2hvdWxkIGZpbGwgdGhlc2UgaW4sIGJ1dCBkb2Vzbid0IC4uLiAqLworCXNuX2lycV9pbmZvLT5pcnFfYnJpZGdlX3R5cGUgPSBidXNzb2Z0LT5ic19hc2ljX3R5cGU7CisJc25faXJxX2luZm8tPmlycV9icmlkZ2UgPSAodm9pZCAqKWJ1c3NvZnQtPmJzX2Jhc2U7CisKKwkvKgorCSAqIE1hcCB0aGUgeGlvIGFkZHJlc3MgaW50byBidXMgc3BhY2UKKwkgKi8KKwlidXNfYWRkciA9ICgqcHJvdmlkZXItPmRtYV9tYXBfY29uc2lzdGVudCkocGRldiwKKwkJCQkJc25faXJxX2luZm8tPmlycV94dGFsa2FkZHIsCisJCQkJCXNpemVvZihzbl9pcnFfaW5mby0+aXJxX3h0YWxrYWRkciksCisJCQkJCVNOX0RNQV9NU0l8U05fRE1BX0FERFJfWElPKTsKKwlpZiAoISBidXNfYWRkcikgeworCQlzbl9pbnRyX2ZyZWUobmFzaWQsIHdpZGdldCwgc25faXJxX2luZm8pOworCQlrZnJlZShzbl9pcnFfaW5mbyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCXNuX21zaV9pbmZvW3ZlY3Rvcl0uc25faXJxX2luZm8gPSBzbl9pcnFfaW5mbzsKKwlzbl9tc2lfaW5mb1t2ZWN0b3JdLnBjaV9hZGRyID0gYnVzX2FkZHI7CisKKwkqYWRkcl9oaSA9ICh1MzIpKGJ1c19hZGRyID4+IDMyKTsKKwkqYWRkcl9sbyA9ICh1MzIpKGJ1c19hZGRyICYgMHgwMDAwMDAwMGZmZmZmZmZmKTsKKworCS8qCisJICogSW4gdGhlIFNOIHBsYXRmb3JtLCBiaXQgMTYgaXMgYSAic2VuZCB2ZWN0b3IiIGJpdCB3aGljaAorCSAqIG11c3QgYmUgcHJlc2VudCBpbiBvcmRlciB0byBtb3ZlIHRoZSB2ZWN0b3IgdGhyb3VnaCB0aGUgc3lzdGVtLgorCSAqLworCSpkYXRhID0gMHgxMDAgKyAodW5zaWduZWQgaW50KXZlY3RvcjsKKworI2lmZGVmIENPTkZJR19TTVAKKwlzZXRfaXJxX2FmZmluaXR5X2luZm8oKHZlY3RvciAmIDB4ZmYpLCBzbl9pcnFfaW5mby0+aXJxX2NwdWlkLCAwKTsKKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzbl9tc2lfdGFyZ2V0KHVuc2lnbmVkIGludCB2ZWN0b3IsIHVuc2lnbmVkIGludCBjcHUsCisJICAgICAgdTMyICphZGRyX2hpLCB1MzIgKmFkZHJfbG8pCit7CisJaW50IHNsaWNlOworCW5hc2lkX3QgbmFzaWQ7CisJdTY0IGJ1c19hZGRyOworCXN0cnVjdCBwY2lfZGV2ICpwZGV2OworCXN0cnVjdCBwY2lkZXZfaW5mbyAqc25fcGRldjsKKwlzdHJ1Y3Qgc25faXJxX2luZm8gKnNuX2lycV9pbmZvOworCXN0cnVjdCBzbl9pcnFfaW5mbyAqbmV3X2lycV9pbmZvOworCXN0cnVjdCBzbl9wY2lidXNfcHJvdmlkZXIgKnByb3ZpZGVyOworCisJc25faXJxX2luZm8gPSBzbl9tc2lfaW5mb1t2ZWN0b3JdLnNuX2lycV9pbmZvOworCWlmIChzbl9pcnFfaW5mbyA9PSBOVUxMIHx8IHNuX2lycV9pbmZvLT5pcnFfaW50X2JpdCA+PSAwKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFJlbGVhc2UgWElPIHJlc291cmNlcyBmb3IgdGhlIG9sZCBNU0kgUENJIGFkZHJlc3MKKwkgKi8KKworICAgICAgICBzbl9wZGV2ID0gKHN0cnVjdCBwY2lkZXZfaW5mbyAqKXNuX2lycV9pbmZvLT5pcnFfcGNpaW9pbmZvOworCXBkZXYgPSBzbl9wZGV2LT5wZGlfbGludXhfcGNpZGV2OworCXByb3ZpZGVyID0gU05fUENJREVWX0JVU1BST1ZJREVSKHBkZXYpOworCisJYnVzX2FkZHIgPSAodTY0KSgqYWRkcl9oaSkgPDwgMzIgfCAodTY0KSgqYWRkcl9sbyk7CisJKCpwcm92aWRlci0+ZG1hX3VubWFwKShwZGV2LCBidXNfYWRkciwgUENJX0RNQV9GUk9NREVWSUNFKTsKKwlzbl9tc2lfaW5mb1t2ZWN0b3JdLnBjaV9hZGRyID0gMDsKKworCW5hc2lkID0gY3B1aWRfdG9fbmFzaWQoY3B1KTsKKwlzbGljZSA9IGNwdWlkX3RvX3NsaWNlKGNwdSk7CisKKwluZXdfaXJxX2luZm8gPSBzbl9yZXRhcmdldF92ZWN0b3Ioc25faXJxX2luZm8sIG5hc2lkLCBzbGljZSk7CisJc25fbXNpX2luZm9bdmVjdG9yXS5zbl9pcnFfaW5mbyA9IG5ld19pcnFfaW5mbzsKKwlpZiAobmV3X2lycV9pbmZvID09IE5VTEwpCisJCXJldHVybjsKKworCS8qCisJICogTWFwIHRoZSB4aW8gYWRkcmVzcyBpbnRvIGJ1cyBzcGFjZQorCSAqLworCisJYnVzX2FkZHIgPSAoKnByb3ZpZGVyLT5kbWFfbWFwX2NvbnNpc3RlbnQpKHBkZXYsCisJCQkJCW5ld19pcnFfaW5mby0+aXJxX3h0YWxrYWRkciwKKwkJCQkJc2l6ZW9mKG5ld19pcnFfaW5mby0+aXJxX3h0YWxrYWRkciksCisJCQkJCVNOX0RNQV9NU0l8U05fRE1BX0FERFJfWElPKTsKKworCXNuX21zaV9pbmZvW3ZlY3Rvcl0ucGNpX2FkZHIgPSBidXNfYWRkcjsKKwkqYWRkcl9oaSA9ICh1MzIpKGJ1c19hZGRyID4+IDMyKTsKKwkqYWRkcl9sbyA9ICh1MzIpKGJ1c19hZGRyICYgMHgwMDAwMDAwMGZmZmZmZmZmKTsKK30KKworc3RydWN0IG1zaV9vcHMgc25fbXNpX29wcyA9IHsKKwkuc2V0dXAgPSBzbl9tc2lfc2V0dXAsCisJLnRlYXJkb3duID0gc25fbXNpX3RlYXJkb3duLAorI2lmZGVmIENPTkZJR19TTVAKKwkudGFyZ2V0ID0gc25fbXNpX3RhcmdldCwKKyNlbmRpZgorfTsKKworaW50Citzbl9tc2lfaW5pdCh2b2lkKQoreworCXNuX21zaV9pbmZvID0KKwkJa3phbGxvYyhzaXplb2Yoc3RydWN0IHNuX21zaV9pbmZvKSAqIE5SX1ZFQ1RPUlMsIEdGUF9LRVJORUwpOworCWlmICghIHNuX21zaV9pbmZvKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1zaV9yZWdpc3Rlcigmc25fbXNpX29wcyk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9tc2ktYXBpYy5jIGIvZHJpdmVycy9wY2kvbXNpLWFwaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWI1ZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9wY2kvbXNpLWFwaWMuYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIE1TSSBob29rcyBmb3Igc3RhbmRhcmQgeDg2IGFwaWMKKyAqLworCisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CisKKyNpbmNsdWRlICJtc2kuaCIKKworLyoKKyAqIFNoaWZ0cyBmb3IgQVBJQy1iYXNlZCBkYXRhCisgKi8KKworI2RlZmluZSBNU0lfREFUQV9WRUNUT1JfU0hJRlQJCTAKKyNkZWZpbmUJICAgIE1TSV9EQVRBX1ZFQ1RPUih2KQkJKCgodTgpdikgPDwgTVNJX0RBVEFfVkVDVE9SX1NISUZUKQorCisjZGVmaW5lIE1TSV9EQVRBX0RFTElWRVJZX1NISUZUCQk4CisjZGVmaW5lICAgICBNU0lfREFUQV9ERUxJVkVSWV9GSVhFRAkoMCA8PCBNU0lfREFUQV9ERUxJVkVSWV9TSElGVCkKKyNkZWZpbmUgICAgIE1TSV9EQVRBX0RFTElWRVJZX0xPV1BSSQkoMSA8PCBNU0lfREFUQV9ERUxJVkVSWV9TSElGVCkKKworI2RlZmluZSBNU0lfREFUQV9MRVZFTF9TSElGVAkJMTQKKyNkZWZpbmUgICAgIE1TSV9EQVRBX0xFVkVMX0RFQVNTRVJUCSgwIDw8IE1TSV9EQVRBX0xFVkVMX1NISUZUKQorI2RlZmluZSAgICAgTVNJX0RBVEFfTEVWRUxfQVNTRVJUCSgxIDw8IE1TSV9EQVRBX0xFVkVMX1NISUZUKQorCisjZGVmaW5lIE1TSV9EQVRBX1RSSUdHRVJfU0hJRlQJCTE1CisjZGVmaW5lICAgICBNU0lfREFUQV9UUklHR0VSX0VER0UJKDAgPDwgTVNJX0RBVEFfVFJJR0dFUl9TSElGVCkKKyNkZWZpbmUgICAgIE1TSV9EQVRBX1RSSUdHRVJfTEVWRUwJKDEgPDwgTVNJX0RBVEFfVFJJR0dFUl9TSElGVCkKKworLyoKKyAqIFNoaWZ0L21hc2sgZmllbGRzIGZvciBBUElDLWJhc2VkIGJ1cyBhZGRyZXNzCisgKi8KKworI2RlZmluZSBNU0lfQUREUl9IRUFERVIJCQkweGZlZTAwMDAwCisKKyNkZWZpbmUgTVNJX0FERFJfREVTVElEX01BU0sJCTB4ZmZmMDAwMGYKKyNkZWZpbmUgICAgIE1TSV9BRERSX0RFU1RJRF9DUFUoY3B1KQkoKGNwdSkgPDwgTVNJX1RBUkdFVF9DUFVfU0hJRlQpCisKKyNkZWZpbmUgTVNJX0FERFJfREVTVE1PREVfU0hJRlQJCTIKKyNkZWZpbmUgICAgIE1TSV9BRERSX0RFU1RNT0RFX1BIWVMJKDAgPDwgTVNJX0FERFJfREVTVE1PREVfU0hJRlQpCisjZGVmaW5lCSAgICBNU0lfQUREUl9ERVNUTU9ERV9MT0dJQwkoMSA8PCBNU0lfQUREUl9ERVNUTU9ERV9TSElGVCkKKworI2RlZmluZSBNU0lfQUREUl9SRURJUkVDVElPTl9TSElGVAkzCisjZGVmaW5lICAgICBNU0lfQUREUl9SRURJUkVDVElPTl9DUFUJKDAgPDwgTVNJX0FERFJfUkVESVJFQ1RJT05fU0hJRlQpCisjZGVmaW5lICAgICBNU0lfQUREUl9SRURJUkVDVElPTl9MT1dQUkkJKDEgPDwgTVNJX0FERFJfUkVESVJFQ1RJT05fU0hJRlQpCisKKworc3RhdGljIHZvaWQKK21zaV90YXJnZXRfYXBpYyh1bnNpZ25lZCBpbnQgdmVjdG9yLAorCQl1bnNpZ25lZCBpbnQgZGVzdF9jcHUsCisJCXUzMiAqYWRkcmVzc19oaSwJLyogaW4vb3V0ICovCisJCXUzMiAqYWRkcmVzc19sbykJLyogaW4vb3V0ICovCit7CisJdTMyIGFkZHIgPSAqYWRkcmVzc19sbzsKKworCWFkZHIgJj0gTVNJX0FERFJfREVTVElEX01BU0s7CisJYWRkciB8PSBNU0lfQUREUl9ERVNUSURfQ1BVKGNwdV9waHlzaWNhbF9pZChkZXN0X2NwdSkpOworCisJKmFkZHJlc3NfbG8gPSBhZGRyOworfQorCitzdGF0aWMgaW50Cittc2lfc2V0dXBfYXBpYyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwJLyogdW51c2VkIGluIGdlbmVyaWMgKi8KKwkJdW5zaWduZWQgaW50IHZlY3RvciwKKwkJdTMyICphZGRyZXNzX2hpLAorCQl1MzIgKmFkZHJlc3NfbG8sCisJCXUzMiAqZGF0YSkKK3sKKwl1bnNpZ25lZCBsb25nCWRlc3RfcGh5c19pZDsKKworCWRlc3RfcGh5c19pZCA9IGNwdV9waHlzaWNhbF9pZChmaXJzdF9jcHUoY3B1X29ubGluZV9tYXApKTsKKworCSphZGRyZXNzX2hpID0gMDsKKwkqYWRkcmVzc19sbyA9CU1TSV9BRERSX0hFQURFUiB8CisJCQlNU0lfQUREUl9ERVNUTU9ERV9QSFlTIHwKKwkJCU1TSV9BRERSX1JFRElSRUNUSU9OX0NQVSB8CisJCQlNU0lfQUREUl9ERVNUSURfQ1BVKGRlc3RfcGh5c19pZCk7CisKKwkqZGF0YSA9IE1TSV9EQVRBX1RSSUdHRVJfRURHRSB8CisJCU1TSV9EQVRBX0xFVkVMX0FTU0VSVCB8CisJCU1TSV9EQVRBX0RFTElWRVJZX0ZJWEVEIHwKKwkJTVNJX0RBVEFfVkVDVE9SKHZlY3Rvcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK21zaV90ZWFyZG93bl9hcGljKHVuc2lnbmVkIGludCB2ZWN0b3IpCit7CisJcmV0dXJuOwkJLyogbm8tb3AgKi8KK30KKworLyoKKyAqIEdlbmVyaWMgb3BzIHVzZWQgb24gbW9zdCBJQSBhcmNocy9wbGF0Zm9ybXMuICBTZXQgd2l0aCBtc2lfcmVnaXN0ZXIoKQorICovCisKK3N0cnVjdCBtc2lfb3BzIG1zaV9hcGljX29wcyA9IHsKKwkuc2V0dXAgPSBtc2lfc2V0dXBfYXBpYywKKwkudGVhcmRvd24gPSBtc2lfdGVhcmRvd25fYXBpYywKKwkudGFyZ2V0ID0gbXNpX3RhcmdldF9hcGljLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL21zaS5jIGIvZHJpdmVycy9wY2kvbXNpLmMKaW5kZXggOTg1NWM0Yy4uN2Y4NDI5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvbXNpLmMKKysrIGIvZHJpdmVycy9wY2kvbXNpLmMKQEAgLTIzLDggKzIzLDYgQEAKICNpbmNsdWRlICJwY2kuaCIKICNpbmNsdWRlICJtc2kuaCIKIAotI2RlZmluZSBNU0lfVEFSR0VUX0NQVQkJZmlyc3RfY3B1KGNwdV9vbmxpbmVfbWFwKQotCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKG1zaV9sb2NrKTsKIHN0YXRpYyBzdHJ1Y3QgbXNpX2Rlc2MqIG1zaV9kZXNjW05SX0lSUVNdID0geyBbMCAuLi4gTlJfSVJRUy0xXSA9IE5VTEwgfTsKIHN0YXRpYyBrbWVtX2NhY2hlX3QqIG1zaV9jYWNoZXA7CkBAIC0zNyw5ICszNSwxNyBAQAogCiAjaWZuZGVmIENPTkZJR19YODZfSU9fQVBJQwogaW50IHZlY3Rvcl9pcnFbTlJfVkVDVE9SU10gPSB7IFswIC4uLiBOUl9WRUNUT1JTIC0gMV0gPSAtMX07Ci11OCBpcnFfdmVjdG9yW05SX0lSUV9WRUNUT1JTXSA9IHsgRklSU1RfREVWSUNFX1ZFQ1RPUiAsIDAgfTsKICNlbmRpZgogCitzdGF0aWMgc3RydWN0IG1zaV9vcHMgKm1zaV9vcHM7CisKK2ludAorbXNpX3JlZ2lzdGVyKHN0cnVjdCBtc2lfb3BzICpvcHMpCit7CisJbXNpX29wcyA9IG9wczsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgbXNpX2NhY2hlX2N0b3Iodm9pZCAqcCwga21lbV9jYWNoZV90ICpjYWNoZSwgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKIAltZW1zZXQocCwgMCwgTlJfSVJRUyAqIHNpemVvZihzdHJ1Y3QgbXNpX2Rlc2MpKTsKQEAgLTkyLDcgKzk4LDcgQEAKIHN0YXRpYyB2b2lkIHNldF9tc2lfYWZmaW5pdHkodW5zaWduZWQgaW50IHZlY3RvciwgY3B1bWFza190IGNwdV9tYXNrKQogewogCXN0cnVjdCBtc2lfZGVzYyAqZW50cnk7Ci0Jc3RydWN0IG1zZ19hZGRyZXNzIGFkZHJlc3M7CisJdTMyIGFkZHJlc3NfaGksIGFkZHJlc3NfbG87CiAJdW5zaWduZWQgaW50IGlycSA9IHZlY3RvcjsKIAl1bnNpZ25lZCBpbnQgZGVzdF9jcHUgPSBmaXJzdF9jcHUoY3B1X21hc2spOwogCkBAIC0xMDgsMjggKzExNCwzNiBAQAogCQlpZiAoIXBvcykKIAkJCXJldHVybjsKIAorCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZW50cnktPmRldiwgbXNpX3VwcGVyX2FkZHJlc3NfcmVnKHBvcyksCisJCQkmYWRkcmVzc19oaSk7CiAJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChlbnRyeS0+ZGV2LCBtc2lfbG93ZXJfYWRkcmVzc19yZWcocG9zKSwKLQkJCSZhZGRyZXNzLmxvX2FkZHJlc3MudmFsdWUpOwotCQlhZGRyZXNzLmxvX2FkZHJlc3MudmFsdWUgJj0gTVNJX0FERFJFU1NfREVTVF9JRF9NQVNLOwotCQlhZGRyZXNzLmxvX2FkZHJlc3MudmFsdWUgfD0gKGNwdV9waHlzaWNhbF9pZChkZXN0X2NwdSkgPDwKLQkJCQkJCQkJCU1TSV9UQVJHRVRfQ1BVX1NISUZUKTsKLQkJZW50cnktPm1zaV9hdHRyaWIuY3VycmVudF9jcHUgPSBjcHVfcGh5c2ljYWxfaWQoZGVzdF9jcHUpOworCQkJJmFkZHJlc3NfbG8pOworCisJCW1zaV9vcHMtPnRhcmdldCh2ZWN0b3IsIGRlc3RfY3B1LCAmYWRkcmVzc19oaSwgJmFkZHJlc3NfbG8pOworCisJCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZW50cnktPmRldiwgbXNpX3VwcGVyX2FkZHJlc3NfcmVnKHBvcyksCisJCQlhZGRyZXNzX2hpKTsKIAkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChlbnRyeS0+ZGV2LCBtc2lfbG93ZXJfYWRkcmVzc19yZWcocG9zKSwKLQkJCWFkZHJlc3MubG9fYWRkcmVzcy52YWx1ZSk7CisJCQlhZGRyZXNzX2xvKTsKIAkJc2V0X25hdGl2ZV9pcnFfaW5mbyhpcnEsIGNwdV9tYXNrKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgUENJX0NBUF9JRF9NU0lYOgogCXsKLQkJaW50IG9mZnNldCA9IGVudHJ5LT5tc2lfYXR0cmliLmVudHJ5X25yICogUENJX01TSVhfRU5UUllfU0laRSArCi0JCQlQQ0lfTVNJWF9FTlRSWV9MT1dFUl9BRERSX09GRlNFVDsKKwkJaW50IG9mZnNldF9oaSA9CisJCQllbnRyeS0+bXNpX2F0dHJpYi5lbnRyeV9uciAqIFBDSV9NU0lYX0VOVFJZX1NJWkUgKworCQkJCVBDSV9NU0lYX0VOVFJZX1VQUEVSX0FERFJfT0ZGU0VUOworCQlpbnQgb2Zmc2V0X2xvID0KKwkJCWVudHJ5LT5tc2lfYXR0cmliLmVudHJ5X25yICogUENJX01TSVhfRU5UUllfU0laRSArCisJCQkJUENJX01TSVhfRU5UUllfTE9XRVJfQUREUl9PRkZTRVQ7CiAKLQkJYWRkcmVzcy5sb19hZGRyZXNzLnZhbHVlID0gcmVhZGwoZW50cnktPm1hc2tfYmFzZSArIG9mZnNldCk7Ci0JCWFkZHJlc3MubG9fYWRkcmVzcy52YWx1ZSAmPSBNU0lfQUREUkVTU19ERVNUX0lEX01BU0s7Ci0JCWFkZHJlc3MubG9fYWRkcmVzcy52YWx1ZSB8PSAoY3B1X3BoeXNpY2FsX2lkKGRlc3RfY3B1KSA8PAotCQkJCQkJCQkJTVNJX1RBUkdFVF9DUFVfU0hJRlQpOwotCQllbnRyeS0+bXNpX2F0dHJpYi5jdXJyZW50X2NwdSA9IGNwdV9waHlzaWNhbF9pZChkZXN0X2NwdSk7Ci0JCXdyaXRlbChhZGRyZXNzLmxvX2FkZHJlc3MudmFsdWUsIGVudHJ5LT5tYXNrX2Jhc2UgKyBvZmZzZXQpOworCQlhZGRyZXNzX2hpID0gcmVhZGwoZW50cnktPm1hc2tfYmFzZSArIG9mZnNldF9oaSk7CisJCWFkZHJlc3NfbG8gPSByZWFkbChlbnRyeS0+bWFza19iYXNlICsgb2Zmc2V0X2xvKTsKKworCQltc2lfb3BzLT50YXJnZXQodmVjdG9yLCBkZXN0X2NwdSwgJmFkZHJlc3NfaGksICZhZGRyZXNzX2xvKTsKKworCQl3cml0ZWwoYWRkcmVzc19oaSwgZW50cnktPm1hc2tfYmFzZSArIG9mZnNldF9oaSk7CisJCXdyaXRlbChhZGRyZXNzX2xvLCBlbnRyeS0+bWFza19iYXNlICsgb2Zmc2V0X2xvKTsKIAkJc2V0X25hdGl2ZV9pcnFfaW5mbyhpcnEsIGNwdV9tYXNrKTsKIAkJYnJlYWs7CiAJfQpAQCAtMjUxLDMwICsyNjUsNiBAQAogCS5zZXRfYWZmaW5pdHkJPSBzZXRfbXNpX2FmZmluaXR5CiB9OwogCi1zdGF0aWMgdm9pZCBtc2lfZGF0YV9pbml0KHN0cnVjdCBtc2dfZGF0YSAqbXNpX2RhdGEsCi0JCQkgIHVuc2lnbmVkIGludCB2ZWN0b3IpCi17Ci0JbWVtc2V0KG1zaV9kYXRhLCAwLCBzaXplb2Yoc3RydWN0IG1zZ19kYXRhKSk7Ci0JbXNpX2RhdGEtPnZlY3RvciA9ICh1OCl2ZWN0b3I7Ci0JbXNpX2RhdGEtPmRlbGl2ZXJ5X21vZGUgPSBNU0lfREVMSVZFUllfTU9ERTsKLQltc2lfZGF0YS0+bGV2ZWwgPSBNU0lfTEVWRUxfTU9ERTsKLQltc2lfZGF0YS0+dHJpZ2dlciA9IE1TSV9UUklHR0VSX01PREU7Ci19Ci0KLXN0YXRpYyB2b2lkIG1zaV9hZGRyZXNzX2luaXQoc3RydWN0IG1zZ19hZGRyZXNzICptc2lfYWRkcmVzcykKLXsKLQl1bnNpZ25lZCBpbnQJZGVzdF9pZDsKLQl1bnNpZ25lZCBsb25nCWRlc3RfcGh5c19pZCA9IGNwdV9waHlzaWNhbF9pZChNU0lfVEFSR0VUX0NQVSk7Ci0KLQltZW1zZXQobXNpX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3QgbXNnX2FkZHJlc3MpKTsKLQltc2lfYWRkcmVzcy0+aGlfYWRkcmVzcyA9ICh1MzIpMDsKLQlkZXN0X2lkID0gKE1TSV9BRERSRVNTX0hFQURFUiA8PCBNU0lfQUREUkVTU19IRUFERVJfU0hJRlQpOwotCW1zaV9hZGRyZXNzLT5sb19hZGRyZXNzLnUuZGVzdF9tb2RlID0gTVNJX1BIWVNJQ0FMX01PREU7Ci0JbXNpX2FkZHJlc3MtPmxvX2FkZHJlc3MudS5yZWRpcmVjdGlvbl9oaW50ID0gTVNJX1JFRElSRUNUSU9OX0hJTlRfTU9ERTsKLQltc2lfYWRkcmVzcy0+bG9fYWRkcmVzcy51LmRlc3RfaWQgPSBkZXN0X2lkOwotCW1zaV9hZGRyZXNzLT5sb19hZGRyZXNzLnZhbHVlIHw9IChkZXN0X3BoeXNfaWQgPDwgTVNJX1RBUkdFVF9DUFVfU0hJRlQpOwotfQotCiBzdGF0aWMgaW50IG1zaV9mcmVlX3ZlY3RvcihzdHJ1Y3QgcGNpX2RldiogZGV2LCBpbnQgdmVjdG9yLCBpbnQgcmVhc3NpZ24pOwogc3RhdGljIGludCBhc3NpZ25fbXNpX3ZlY3Rvcih2b2lkKQogewpAQCAtMzY5LDEzICszNTksMjkgQEAKIAkJcmV0dXJuIHN0YXR1czsKIAl9CiAKKwlzdGF0dXMgPSBtc2lfYXJjaF9pbml0KCk7CisJaWYgKHN0YXR1cyA8IDApIHsKKwkJcGNpX21zaV9lbmFibGUgPSAwOworCQlwcmludGsoS0VSTl9XQVJOSU5HCisJCSAgICAgICAiUENJOiBNU0kgYXJjaCBpbml0IGZhaWxlZC4gIE1TSSBkaXNhYmxlZC5cbiIpOworCQlyZXR1cm4gc3RhdHVzOworCX0KKworCWlmICghIG1zaV9vcHMpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgIlBDSTogTVNJIG9wcyBub3QgcmVnaXN0ZXJlZC4gTVNJIGRpc2FibGVkLlxuIik7CisJCXN0YXR1cyA9IC1FSU5WQUw7CisJCXJldHVybiBzdGF0dXM7CisJfQorCisJbGFzdF9hbGxvY192ZWN0b3IgPSBhc3NpZ25faXJxX3ZlY3RvcihBVVRPX0FTU0lHTik7CiAJc3RhdHVzID0gbXNpX2NhY2hlX2luaXQoKTsKIAlpZiAoc3RhdHVzIDwgMCkgewogCQlwY2lfbXNpX2VuYWJsZSA9IDA7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIlBDSTogTVNJIGNhY2hlIGluaXQgZmFpbGVkXG4iKTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9Ci0JbGFzdF9hbGxvY192ZWN0b3IgPSBhc3NpZ25faXJxX3ZlY3RvcihBVVRPX0FTU0lHTik7CisKIAlpZiAobGFzdF9hbGxvY192ZWN0b3IgPCAwKSB7CiAJCXBjaV9tc2lfZW5hYmxlID0gMDsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiUENJOiBObyBpbnRlcnJ1cHQgdmVjdG9ycyBhdmFpbGFibGUgZm9yIE1TSVxuIik7CkBAIC00NDIsOSArNDQ4LDExIEBACiAJCS8qIFNldCBlbmFibGVkIGJpdHMgdG8gc2luZ2xlIE1TSSAmIGVuYWJsZSBNU0lfZW5hYmxlIGJpdCAqLwogCQltc2lfZW5hYmxlKGNvbnRyb2wsIDEpOwogCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBtc2lfY29udHJvbF9yZWcocG9zKSwgY29udHJvbCk7CisJCWRldi0+bXNpX2VuYWJsZWQgPSAxOwogCX0gZWxzZSB7CiAJCW1zaXhfZW5hYmxlKGNvbnRyb2wpOwogCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBtc2lfY29udHJvbF9yZWcocG9zKSwgY29udHJvbCk7CisJCWRldi0+bXNpeF9lbmFibGVkID0gMTsKIAl9CiAgICAgCWlmIChwY2lfZmluZF9jYXBhYmlsaXR5KGRldiwgUENJX0NBUF9JRF9FWFApKSB7CiAJCS8qIFBDSSBFeHByZXNzIEVuZHBvaW50IGRldmljZSBkZXRlY3RlZCAqLwpAQCAtNDYxLDkgKzQ2OSwxMSBAQAogCQkvKiBTZXQgZW5hYmxlZCBiaXRzIHRvIHNpbmdsZSBNU0kgJiBlbmFibGUgTVNJX2VuYWJsZSBiaXQgKi8KIAkJbXNpX2Rpc2FibGUoY29udHJvbCk7CiAJCXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIG1zaV9jb250cm9sX3JlZyhwb3MpLCBjb250cm9sKTsKKwkJZGV2LT5tc2lfZW5hYmxlZCA9IDA7CiAJfSBlbHNlIHsKIAkJbXNpeF9kaXNhYmxlKGNvbnRyb2wpOwogCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBtc2lfY29udHJvbF9yZWcocG9zKSwgY29udHJvbCk7CisJCWRldi0+bXNpeF9lbmFibGVkID0gMDsKIAl9CiAgICAgCWlmIChwY2lfZmluZF9jYXBhYmlsaXR5KGRldiwgUENJX0NBUF9JRF9FWFApKSB7CiAJCS8qIFBDSSBFeHByZXNzIEVuZHBvaW50IGRldmljZSBkZXRlY3RlZCAqLwpAQCAtNTM4LDcgKzU0OCw2IEBACiAJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIHBvcyArIFBDSV9NU0lfREFUQV8zMiwgJmNhcFtpKytdKTsKIAlpZiAoY29udHJvbCAmIFBDSV9NU0lfRkxBR1NfTUFTS0JJVCkKIAkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgcG9zICsgUENJX01TSV9NQVNLX0JJVCwgJmNhcFtpKytdKTsKLQlkaXNhYmxlX21zaV9tb2RlKGRldiwgcG9zLCBQQ0lfQ0FQX0lEX01TSSk7CiAJc2F2ZV9zdGF0ZS0+Y2FwX25yID0gUENJX0NBUF9JRF9NU0k7CiAJcGNpX2FkZF9zYXZlZF9jYXAoZGV2LCBzYXZlX3N0YXRlKTsKIAlyZXR1cm4gMDsKQEAgLTU3NSw2ICs1ODQsOCBAQAogaW50IHBjaV9zYXZlX21zaXhfc3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKIAlpbnQgcG9zOworCWludCB0ZW1wOworCWludCB2ZWN0b3IsIGhlYWQsIHRhaWwgPSAwOwogCXUxNiBjb250cm9sOwogCXN0cnVjdCBwY2lfY2FwX3NhdmVkX3N0YXRlICpzYXZlX3N0YXRlOwogCkBAIC01ODIsNiArNTkzLDcgQEAKIAlpZiAocG9zIDw9IDAgfHwgZGV2LT5ub19tc2kpCiAJCXJldHVybiAwOwogCisJLyogc2F2ZSB0aGUgY2FwYWJpbGl0eSAqLwogCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgbXNpX2NvbnRyb2xfcmVnKHBvcyksICZjb250cm9sKTsKIAlpZiAoIShjb250cm9sICYgUENJX01TSVhfRkxBR1NfRU5BQkxFKSkKIAkJcmV0dXJuIDA7CkBAIC01OTMsNyArNjA1LDM4IEBACiAJfQogCSooKHUxNiAqKSZzYXZlX3N0YXRlLT5kYXRhWzBdKSA9IGNvbnRyb2w7CiAKLQlkaXNhYmxlX21zaV9tb2RlKGRldiwgcG9zLCBQQ0lfQ0FQX0lEX01TSVgpOworCS8qIHNhdmUgdGhlIHRhYmxlICovCisJdGVtcCA9IGRldi0+aXJxOworCWlmIChtc2lfbG9va3VwX3ZlY3RvcihkZXYsIFBDSV9DQVBfSURfTVNJWCkpIHsKKwkJa2ZyZWUoc2F2ZV9zdGF0ZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXZlY3RvciA9IGhlYWQgPSBkZXYtPmlycTsKKwl3aGlsZSAoaGVhZCAhPSB0YWlsKSB7CisJCWludCBqOworCQl2b2lkIF9faW9tZW0gKmJhc2U7CisJCXN0cnVjdCBtc2lfZGVzYyAqZW50cnk7CisKKwkJZW50cnkgPSBtc2lfZGVzY1t2ZWN0b3JdOworCQliYXNlID0gZW50cnktPm1hc2tfYmFzZTsKKwkJaiA9IGVudHJ5LT5tc2lfYXR0cmliLmVudHJ5X25yOworCisJCWVudHJ5LT5hZGRyZXNzX2xvX3NhdmUgPQorCQkJcmVhZGwoYmFzZSArIGogKiBQQ0lfTVNJWF9FTlRSWV9TSVpFICsKKwkJCSAgICAgIFBDSV9NU0lYX0VOVFJZX0xPV0VSX0FERFJfT0ZGU0VUKTsKKwkJZW50cnktPmFkZHJlc3NfaGlfc2F2ZSA9CisJCQlyZWFkbChiYXNlICsgaiAqIFBDSV9NU0lYX0VOVFJZX1NJWkUgKworCQkJICAgICAgUENJX01TSVhfRU5UUllfVVBQRVJfQUREUl9PRkZTRVQpOworCQllbnRyeS0+ZGF0YV9zYXZlID0KKwkJCXJlYWRsKGJhc2UgKyBqICogUENJX01TSVhfRU5UUllfU0laRSArCisJCQkgICAgICBQQ0lfTVNJWF9FTlRSWV9EQVRBX09GRlNFVCk7CisKKwkJdGFpbCA9IG1zaV9kZXNjW3ZlY3Rvcl0tPmxpbmsudGFpbDsKKwkJdmVjdG9yID0gdGFpbDsKKwl9CisJZGV2LT5pcnEgPSB0ZW1wOworCiAJc2F2ZV9zdGF0ZS0+Y2FwX25yID0gUENJX0NBUF9JRF9NU0lYOwogCXBjaV9hZGRfc2F2ZWRfY2FwKGRldiwgc2F2ZV9zdGF0ZSk7CiAJcmV0dXJuIDA7CkBAIC02MDYsOCArNjQ5LDYgQEAKIAlpbnQgdmVjdG9yLCBoZWFkLCB0YWlsID0gMDsKIAl2b2lkIF9faW9tZW0gKmJhc2U7CiAJaW50IGo7Ci0Jc3RydWN0IG1zZ19hZGRyZXNzIGFkZHJlc3M7Ci0Jc3RydWN0IG1zZ19kYXRhIGRhdGE7CiAJc3RydWN0IG1zaV9kZXNjICplbnRyeTsKIAlpbnQgdGVtcDsKIAlzdHJ1Y3QgcGNpX2NhcF9zYXZlZF9zdGF0ZSAqc2F2ZV9zdGF0ZTsKQEAgLTYzMywyMCArNjc0LDEzIEBACiAJCWJhc2UgPSBlbnRyeS0+bWFza19iYXNlOwogCQlqID0gZW50cnktPm1zaV9hdHRyaWIuZW50cnlfbnI7CiAKLQkJbXNpX2FkZHJlc3NfaW5pdCgmYWRkcmVzcyk7Ci0JCW1zaV9kYXRhX2luaXQoJmRhdGEsIHZlY3Rvcik7Ci0KLQkJYWRkcmVzcy5sb19hZGRyZXNzLnZhbHVlICY9IE1TSV9BRERSRVNTX0RFU1RfSURfTUFTSzsKLQkJYWRkcmVzcy5sb19hZGRyZXNzLnZhbHVlIHw9IGVudHJ5LT5tc2lfYXR0cmliLmN1cnJlbnRfY3B1IDw8Ci0JCQkJCU1TSV9UQVJHRVRfQ1BVX1NISUZUOwotCi0JCXdyaXRlbChhZGRyZXNzLmxvX2FkZHJlc3MudmFsdWUsCisJCXdyaXRlbChlbnRyeS0+YWRkcmVzc19sb19zYXZlLAogCQkJYmFzZSArIGogKiBQQ0lfTVNJWF9FTlRSWV9TSVpFICsKIAkJCVBDSV9NU0lYX0VOVFJZX0xPV0VSX0FERFJfT0ZGU0VUKTsKLQkJd3JpdGVsKGFkZHJlc3MuaGlfYWRkcmVzcywKKwkJd3JpdGVsKGVudHJ5LT5hZGRyZXNzX2hpX3NhdmUsCiAJCQliYXNlICsgaiAqIFBDSV9NU0lYX0VOVFJZX1NJWkUgKwogCQkJUENJX01TSVhfRU5UUllfVVBQRVJfQUREUl9PRkZTRVQpOwotCQl3cml0ZWwoKih1MzIqKSZkYXRhLAorCQl3cml0ZWwoZW50cnktPmRhdGFfc2F2ZSwKIAkJCWJhc2UgKyBqICogUENJX01TSVhfRU5UUllfU0laRSArCiAJCQlQQ0lfTVNJWF9FTlRSWV9EQVRBX09GRlNFVCk7CiAKQEAgLTY2MCwzMCArNjk0LDMyIEBACiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgbXNpX3JlZ2lzdGVyX2luaXQoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IG1zaV9kZXNjICplbnRyeSkKK3N0YXRpYyBpbnQgbXNpX3JlZ2lzdGVyX2luaXQoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IG1zaV9kZXNjICplbnRyeSkKIHsKLQlzdHJ1Y3QgbXNnX2FkZHJlc3MgYWRkcmVzczsKLQlzdHJ1Y3QgbXNnX2RhdGEgZGF0YTsKKwlpbnQgc3RhdHVzOworCXUzMiBhZGRyZXNzX2hpOworCXUzMiBhZGRyZXNzX2xvOworCXUzMiBkYXRhOwogCWludCBwb3MsIHZlY3RvciA9IGRldi0+aXJxOwogCXUxNiBjb250cm9sOwogCiAgICAJcG9zID0gcGNpX2ZpbmRfY2FwYWJpbGl0eShkZXYsIFBDSV9DQVBfSURfTVNJKTsKIAlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIG1zaV9jb250cm9sX3JlZyhwb3MpLCAmY29udHJvbCk7CisKIAkvKiBDb25maWd1cmUgTVNJIGNhcGFiaWxpdHkgc3RydWN0dXJlICovCi0JbXNpX2FkZHJlc3NfaW5pdCgmYWRkcmVzcyk7Ci0JbXNpX2RhdGFfaW5pdCgmZGF0YSwgdmVjdG9yKTsKLQllbnRyeS0+bXNpX2F0dHJpYi5jdXJyZW50X2NwdSA9ICgoYWRkcmVzcy5sb19hZGRyZXNzLnUuZGVzdF9pZCA+PgotCQkJCU1TSV9UQVJHRVRfQ1BVX1NISUZUKSAmIE1TSV9UQVJHRVRfQ1BVX01BU0spOwotCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBtc2lfbG93ZXJfYWRkcmVzc19yZWcocG9zKSwKLQkJCWFkZHJlc3MubG9fYWRkcmVzcy52YWx1ZSk7CisJc3RhdHVzID0gbXNpX29wcy0+c2V0dXAoZGV2LCB2ZWN0b3IsICZhZGRyZXNzX2hpLCAmYWRkcmVzc19sbywgJmRhdGEpOworCWlmIChzdGF0dXMgPCAwKQorCQlyZXR1cm4gc3RhdHVzOworCisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIG1zaV9sb3dlcl9hZGRyZXNzX3JlZyhwb3MpLCBhZGRyZXNzX2xvKTsKIAlpZiAoaXNfNjRiaXRfYWRkcmVzcyhjb250cm9sKSkgewogCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwKLQkJCW1zaV91cHBlcl9hZGRyZXNzX3JlZyhwb3MpLCBhZGRyZXNzLmhpX2FkZHJlc3MpOworCQkJbXNpX3VwcGVyX2FkZHJlc3NfcmVnKHBvcyksIGFkZHJlc3NfaGkpOwogCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LAotCQkJbXNpX2RhdGFfcmVnKHBvcywgMSksICooKHUzMiopJmRhdGEpKTsKKwkJCW1zaV9kYXRhX3JlZyhwb3MsIDEpLCBkYXRhKTsKIAl9IGVsc2UKIAkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwKLQkJCW1zaV9kYXRhX3JlZyhwb3MsIDApLCAqKCh1MzIqKSZkYXRhKSk7CisJCQltc2lfZGF0YV9yZWcocG9zLCAwKSwgZGF0YSk7CiAJaWYgKGVudHJ5LT5tc2lfYXR0cmliLm1hc2tiaXQpIHsKIAkJdW5zaWduZWQgaW50IG1hc2tiaXRzLCB0ZW1wOwogCQkvKiBBbGwgTVNJcyBhcmUgdW5tYXNrZWQgYnkgZGVmYXVsdCwgTWFzayB0aGVtIGFsbCAqLwpAQCAtNjk3LDYgKzczMyw4IEBACiAJCQltc2lfbWFza19iaXRzX3JlZyhwb3MsIGlzXzY0Yml0X2FkZHJlc3MoY29udHJvbCkpLAogCQkJbWFza2JpdHMpOwogCX0KKworCXJldHVybiAwOwogfQogCiAvKioKQEAgLTcxMCw2ICs3NDgsNyBAQAogICoqLwogc3RhdGljIGludCBtc2lfY2FwYWJpbGl0eV9pbml0KHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CisJaW50IHN0YXR1czsKIAlzdHJ1Y3QgbXNpX2Rlc2MgKmVudHJ5OwogCWludCBwb3MsIHZlY3RvcjsKIAl1MTYgY29udHJvbDsKQEAgLTc0Miw3ICs3ODEsMTIgQEAKIAkvKiBSZXBsYWNlIHdpdGggTVNJIGhhbmRsZXIgKi8KIAlpcnFfaGFuZGxlcl9pbml0KFBDSV9DQVBfSURfTVNJLCB2ZWN0b3IsIGVudHJ5LT5tc2lfYXR0cmliLm1hc2tiaXQpOwogCS8qIENvbmZpZ3VyZSBNU0kgY2FwYWJpbGl0eSBzdHJ1Y3R1cmUgKi8KLQltc2lfcmVnaXN0ZXJfaW5pdChkZXYsIGVudHJ5KTsKKwlzdGF0dXMgPSBtc2lfcmVnaXN0ZXJfaW5pdChkZXYsIGVudHJ5KTsKKwlpZiAoc3RhdHVzICE9IDApIHsKKwkJZGV2LT5pcnEgPSBlbnRyeS0+bXNpX2F0dHJpYi5kZWZhdWx0X3ZlY3RvcjsKKwkJa21lbV9jYWNoZV9mcmVlKG1zaV9jYWNoZXAsIGVudHJ5KTsKKwkJcmV0dXJuIHN0YXR1czsKKwl9CiAKIAlhdHRhY2hfbXNpX2VudHJ5KGVudHJ5LCB2ZWN0b3IpOwogCS8qIFNldCBNU0kgZW5hYmxlZCBiaXRzCSAqLwpAQCAtNzY1LDggKzgwOSwxMCBAQAogCQkJCXN0cnVjdCBtc2l4X2VudHJ5ICplbnRyaWVzLCBpbnQgbnZlYykKIHsKIAlzdHJ1Y3QgbXNpX2Rlc2MgKmhlYWQgPSBOVUxMLCAqdGFpbCA9IE5VTEwsICplbnRyeSA9IE5VTEw7Ci0Jc3RydWN0IG1zZ19hZGRyZXNzIGFkZHJlc3M7Ci0Jc3RydWN0IG1zZ19kYXRhIGRhdGE7CisJdTMyIGFkZHJlc3NfaGk7CisJdTMyIGFkZHJlc3NfbG87CisJdTMyIGRhdGE7CisJaW50IHN0YXR1czsKIAlpbnQgdmVjdG9yLCBwb3MsIGksIGosIG5yX2VudHJpZXMsIHRlbXAgPSAwOwogCXVuc2lnbmVkIGxvbmcgcGh5c19hZGRyOwogCXUzMiB0YWJsZV9vZmZzZXQ7CkBAIC04MjIsMTggKzg2OCwyMCBAQAogCQkvKiBSZXBsYWNlIHdpdGggTVNJLVggaGFuZGxlciAqLwogCQlpcnFfaGFuZGxlcl9pbml0KFBDSV9DQVBfSURfTVNJWCwgdmVjdG9yLCAxKTsKIAkJLyogQ29uZmlndXJlIE1TSS1YIGNhcGFiaWxpdHkgc3RydWN0dXJlICovCi0JCW1zaV9hZGRyZXNzX2luaXQoJmFkZHJlc3MpOwotCQltc2lfZGF0YV9pbml0KCZkYXRhLCB2ZWN0b3IpOwotCQllbnRyeS0+bXNpX2F0dHJpYi5jdXJyZW50X2NwdSA9Ci0JCQkoKGFkZHJlc3MubG9fYWRkcmVzcy51LmRlc3RfaWQgPj4KLQkJCU1TSV9UQVJHRVRfQ1BVX1NISUZUKSAmIE1TSV9UQVJHRVRfQ1BVX01BU0spOwotCQl3cml0ZWwoYWRkcmVzcy5sb19hZGRyZXNzLnZhbHVlLAorCQlzdGF0dXMgPSBtc2lfb3BzLT5zZXR1cChkZXYsIHZlY3RvciwKKwkJCQkJJmFkZHJlc3NfaGksCisJCQkJCSZhZGRyZXNzX2xvLAorCQkJCQkmZGF0YSk7CisJCWlmIChzdGF0dXMgPCAwKQorCQkJYnJlYWs7CisKKwkJd3JpdGVsKGFkZHJlc3NfbG8sCiAJCQliYXNlICsgaiAqIFBDSV9NU0lYX0VOVFJZX1NJWkUgKwogCQkJUENJX01TSVhfRU5UUllfTE9XRVJfQUREUl9PRkZTRVQpOwotCQl3cml0ZWwoYWRkcmVzcy5oaV9hZGRyZXNzLAorCQl3cml0ZWwoYWRkcmVzc19oaSwKIAkJCWJhc2UgKyBqICogUENJX01TSVhfRU5UUllfU0laRSArCiAJCQlQQ0lfTVNJWF9FTlRSWV9VUFBFUl9BRERSX09GRlNFVCk7Ci0JCXdyaXRlbCgqKHUzMiopJmRhdGEsCisJCXdyaXRlbChkYXRhLAogCQkJYmFzZSArIGogKiBQQ0lfTVNJWF9FTlRSWV9TSVpFICsKIAkJCVBDSV9NU0lYX0VOVFJZX0RBVEFfT0ZGU0VUKTsKIAkJYXR0YWNoX21zaV9lbnRyeShlbnRyeSwgdmVjdG9yKTsKQEAgLTg2NSw2ICs5MTMsNyBAQAogICoqLwogaW50IHBjaV9lbmFibGVfbXNpKHN0cnVjdCBwY2lfZGV2KiBkZXYpCiB7CisJc3RydWN0IHBjaV9idXMgKmJ1czsKIAlpbnQgcG9zLCB0ZW1wLCBzdGF0dXMgPSAtRUlOVkFMOwogCXUxNiBjb250cm9sOwogCkBAIC04NzQsOCArOTIzLDkgQEAKIAlpZiAoZGV2LT5ub19tc2kpCiAJCXJldHVybiBzdGF0dXM7CiAKLQlpZiAoZGV2LT5idXMtPmJ1c19mbGFncyAmIFBDSV9CVVNfRkxBR1NfTk9fTVNJKQotCQlyZXR1cm4gLUVJTlZBTDsKKwlmb3IgKGJ1cyA9IGRldi0+YnVzOyBidXM7IGJ1cyA9IGJ1cy0+cGFyZW50KQorCQlpZiAoYnVzLT5idXNfZmxhZ3MgJiBQQ0lfQlVTX0ZMQUdTX05PX01TSSkKKwkJCXJldHVybiAtRUlOVkFMOwogCiAJdGVtcCA9IGRldi0+aXJxOwogCkBAIC04ODcsMjMgKzkzNywyMyBAQAogCWlmICghcG9zKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgbXNpX2NvbnRyb2xfcmVnKHBvcyksICZjb250cm9sKTsKLQlpZiAoY29udHJvbCAmIFBDSV9NU0lfRkxBR1NfRU5BQkxFKQotCQlyZXR1cm4gMDsJCQkvKiBBbHJlYWR5IGluIE1TSSBtb2RlICovCi0KIAlpZiAoIW1zaV9sb29rdXBfdmVjdG9yKGRldiwgUENJX0NBUF9JRF9NU0kpKSB7CiAJCS8qIExvb2t1cCBTdWNlc3MgKi8KIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIG1zaV9jb250cm9sX3JlZyhwb3MpLCAmY29udHJvbCk7CisJCWlmIChjb250cm9sICYgUENJX01TSV9GTEFHU19FTkFCTEUpCisJCQlyZXR1cm4gMDsJLyogQWxyZWFkeSBpbiBNU0kgbW9kZSAqLwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmbXNpX2xvY2ssIGZsYWdzKTsKIAkJaWYgKCF2ZWN0b3JfaXJxW2Rldi0+aXJxXSkgewogCQkJbXNpX2Rlc2NbZGV2LT5pcnFdLT5tc2lfYXR0cmliLnN0YXRlID0gMDsKIAkJCXZlY3Rvcl9pcnFbZGV2LT5pcnFdID0gLTE7CiAJCQlucl9yZWxlYXNlZF92ZWN0b3JzLS07CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtc2lfbG9jaywgZmxhZ3MpOwotCQkJbXNpX3JlZ2lzdGVyX2luaXQoZGV2LCBtc2lfZGVzY1tkZXYtPmlycV0pOwotCQkJZW5hYmxlX21zaV9tb2RlKGRldiwgcG9zLCBQQ0lfQ0FQX0lEX01TSSk7Ci0JCQlyZXR1cm4gMDsKKwkJCXN0YXR1cyA9IG1zaV9yZWdpc3Rlcl9pbml0KGRldiwgbXNpX2Rlc2NbZGV2LT5pcnFdKTsKKwkJCWlmIChzdGF0dXMgPT0gMCkKKwkJCQllbmFibGVfbXNpX21vZGUoZGV2LCBwb3MsIFBDSV9DQVBfSURfTVNJKTsKKwkJCXJldHVybiBzdGF0dXM7CiAJCX0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXNpX2xvY2ssIGZsYWdzKTsKIAkJZGV2LT5pcnEgPSB0ZW1wOwpAQCAtOTgwLDYgKzEwMzAsOCBAQAogCXZvaWQgX19pb21lbSAqYmFzZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJbXNpX29wcy0+dGVhcmRvd24odmVjdG9yKTsKKwogCXNwaW5fbG9ja19pcnFzYXZlKCZtc2lfbG9jaywgZmxhZ3MpOwogCWVudHJ5ID0gbXNpX2Rlc2NbdmVjdG9yXTsKIAlpZiAoIWVudHJ5IHx8IGVudHJ5LT5kZXYgIT0gZGV2KSB7CkBAIC0xMDA4LDMzICsxMDYwLDggQEAKIAkJCQllbnRyeV9uciAqIFBDSV9NU0lYX0VOVFJZX1NJWkUgKwogCQkJCVBDSV9NU0lYX0VOVFJZX1ZFQ1RPUl9DVFJMX09GRlNFVCk7CiAKLQkJaWYgKGhlYWQgPT0gdmVjdG9yKSB7Ci0JCQkvKgotCQkJICogRGV0ZWN0IGxhc3QgTVNJLVggdmVjdG9yIHRvIGJlIHJlbGVhc2VkLgotCQkJICogUmVsZWFzZSB0aGUgTVNJLVggbWVtb3J5LW1hcHBlZCB0YWJsZS4KLQkJCSAqLwotI2lmIDAKLQkJCWludCBwb3MsIG5yX2VudHJpZXM7Ci0JCQl1bnNpZ25lZCBsb25nIHBoeXNfYWRkcjsKLQkJCXUzMiB0YWJsZV9vZmZzZXQ7Ci0JCQl1MTYgY29udHJvbDsKLQkJCXU4IGJpcjsKLQotICAgCQkJcG9zID0gcGNpX2ZpbmRfY2FwYWJpbGl0eShkZXYsIFBDSV9DQVBfSURfTVNJWCk7Ci0JCQlwY2lfcmVhZF9jb25maWdfd29yZChkZXYsIG1zaV9jb250cm9sX3JlZyhwb3MpLAotCQkJCSZjb250cm9sKTsKLQkJCW5yX2VudHJpZXMgPSBtdWx0aV9tc2l4X2NhcGFibGUoY29udHJvbCk7Ci0JCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBtc2l4X3RhYmxlX29mZnNldF9yZWcocG9zKSwKLQkJCQkmdGFibGVfb2Zmc2V0KTsKLQkJCWJpciA9ICh1OCkodGFibGVfb2Zmc2V0ICYgUENJX01TSVhfRkxBR1NfQklSTUFTSyk7Ci0JCQl0YWJsZV9vZmZzZXQgJj0gflBDSV9NU0lYX0ZMQUdTX0JJUk1BU0s7Ci0JCQlwaHlzX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBiaXIpICsgdGFibGVfb2Zmc2V0OwotLyoKLSAqIEZJWE1FISAgYW5kIHdoYXQgZGlkIHlvdSB3YW50IHRvIGRvIHdpdGggcGh5c19hZGRyPwotICovCi0jZW5kaWYKKwkJaWYgKGhlYWQgPT0gdmVjdG9yKQogCQkJaW91bm1hcChiYXNlKTsKLQkJfQogCX0KIAogCXJldHVybiAwOwpAQCAtMTEwOCw2ICsxMTM1LDcgQEAKICAqKi8KIGludCBwY2lfZW5hYmxlX21zaXgoc3RydWN0IHBjaV9kZXYqIGRldiwgc3RydWN0IG1zaXhfZW50cnkgKmVudHJpZXMsIGludCBudmVjKQogeworCXN0cnVjdCBwY2lfYnVzICpidXM7CiAJaW50IHN0YXR1cywgcG9zLCBucl9lbnRyaWVzLCBmcmVlX3ZlY3RvcnM7CiAJaW50IGksIGosIHRlbXA7CiAJdTE2IGNvbnRyb2w7CkBAIC0xMTE2LDYgKzExNDQsMTMgQEAKIAlpZiAoIXBjaV9tc2lfZW5hYmxlIHx8ICFkZXYgfHwgIWVudHJpZXMpCiAgCQlyZXR1cm4gLUVJTlZBTDsKIAorCWlmIChkZXYtPm5vX21zaSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmb3IgKGJ1cyA9IGRldi0+YnVzOyBidXM7IGJ1cyA9IGJ1cy0+cGFyZW50KQorCQlpZiAoYnVzLT5idXNfZmxhZ3MgJiBQQ0lfQlVTX0ZMQUdTX05PX01TSSkKKwkJCXJldHVybiAtRUlOVkFMOworCiAJc3RhdHVzID0gbXNpX2luaXQoKTsKIAlpZiAoc3RhdHVzIDwgMCkKIAkJcmV0dXJuIHN0YXR1czsKQEAgLTEzMDAsMjQgKzEzMzUsNiBAQAogCQl9CiAJCW1zaV9mcmVlX3ZlY3RvcihkZXYsIHZlY3RvciwgMCk7CiAJCWlmICh3YXJuaW5nKSB7Ci0JCQkvKiBGb3JjZSB0byByZWxlYXNlIHRoZSBNU0ktWCBtZW1vcnktbWFwcGVkIHRhYmxlICovCi0jaWYgMAotCQkJdW5zaWduZWQgbG9uZyBwaHlzX2FkZHI7Ci0JCQl1MzIgdGFibGVfb2Zmc2V0OwotCQkJdTE2IGNvbnRyb2w7Ci0JCQl1OCBiaXI7Ci0KLQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgbXNpX2NvbnRyb2xfcmVnKHBvcyksCi0JCQkJJmNvbnRyb2wpOwotCQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgbXNpeF90YWJsZV9vZmZzZXRfcmVnKHBvcyksCi0JCQkJJnRhYmxlX29mZnNldCk7Ci0JCQliaXIgPSAodTgpKHRhYmxlX29mZnNldCAmIFBDSV9NU0lYX0ZMQUdTX0JJUk1BU0spOwotCQkJdGFibGVfb2Zmc2V0ICY9IH5QQ0lfTVNJWF9GTEFHU19CSVJNQVNLOwotCQkJcGh5c19hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KGRldiwgYmlyKSArIHRhYmxlX29mZnNldDsKLS8qCi0gKiBGSVhNRSEgYW5kIHdoYXQgZGlkIHlvdSB3YW50IHRvIGRvIHdpdGggcGh5c19hZGRyPwotICovCi0jZW5kaWYKIAkJCWlvdW5tYXAoYmFzZSk7CiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJQQ0k6ICVzOiBtc2lfcmVtb3ZlX3BjaV9pcnFfdmVjdG9ycygpICIKIAkJCSAgICAgICAiY2FsbGVkIHdpdGhvdXQgZnJlZV9pcnEoKSBvbiBhbGwgTVNJLVggdmVjdG9yc1xuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL21zaS5oIGIvZHJpdmVycy9wY2kvbXNpLmgKaW5kZXggNGFjNTJkNC4uNTY5NTFjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvbXNpLmgKKysrIGIvZHJpdmVycy9wY2kvbXNpLmgKQEAgLTYsNiArNiw2OCBAQAogI2lmbmRlZiBNU0lfSAogI2RlZmluZSBNU0lfSAogCisvKgorICogTVNJIG9wZXJhdGlvbiB2ZWN0b3IuICBVc2VkIGJ5IHRoZSBtc2kgY29yZSBjb2RlIChkcml2ZXJzL3BjaS9tc2kuYykKKyAqIHRvIGFic3RyYWN0IHBsYXRmb3JtLXNwZWNpZmljIHRhc2tzIHJlbGF0aW5nIHRvIE1TSSBhZGRyZXNzIGdlbmVyYXRpb24KKyAqIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LgorICovCitzdHJ1Y3QgbXNpX29wcyB7CisJLyoqCisJICogc2V0dXAgLSBnZW5lcmF0ZSBhbiBNU0kgYnVzIGFkZHJlc3MgYW5kIGRhdGEgZm9yIGEgZ2l2ZW4gdmVjdG9yCisJICogQHBkZXY6IFBDSSBkZXZpY2UgY29udGV4dCAoaW4pCisJICogQHZlY3RvcjogdmVjdG9yIGFsbG9jYXRlZCBieSB0aGUgbXNpIGNvcmUgKGluKQorCSAqIEBhZGRyX2hpOiB1cHBlciAzMiBiaXRzIG9mIFBDSSBidXMgTVNJIGFkZHJlc3MgKG91dCkKKwkgKiBAYWRkcl9sbzogbG93ZXIgMzIgYml0cyBvZiBQQ0kgYnVzIE1TSSBhZGRyZXNzIChvdXQpCisJICogQGRhdGE6IE1TSSBkYXRhIHBheWxvYWQgKG91dCkKKwkgKgorCSAqIERlc2NyaXB0aW9uOiBUaGUgc2V0dXAgb3AgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIFBDSSBidXMgYWRkcmVzIGFuZAorCSAqIGRhdGEgd2hpY2ggdGhlIG1zaSBjb3JlIHdpbGwgcHJvZ3JhbSBpbnRvIHRoZSBjYXJkIE1TSSBjYXBhYmlsaXR5CisJICogcmVnaXN0ZXJzLiAgVGhlIHNldHVwIHJvdXRpbmUgaXMgcmVzcG9uc2libGUgZm9yIHBpY2tpbmcgYW4gaW5pdGlhbAorCSAqIGNwdSB0byB0YXJnZXQgdGhlIE1TSSBhdC4gIFRoZSBzZXR1cCByb3V0aW5lIGlzIHJlc3BvbnNpYmxlIGZvcgorCSAqIGV4YW1pbmluZyBwZGV2IHRvIGRldGVybWluZSB0aGUgTVNJIGNhcGFiaWxpdGllcyBvZiB0aGUgY2FyZCBhbmQKKwkgKiBnZW5lcmF0aW5nIGEgc3VpdGFibGUgYWRkcmVzcy9kYXRhLiAgVGhlIHNldHVwIHJvdXRpbmUgaXMKKwkgKiByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgdHJhY2tpbmcgYW55IHN5c3RlbSByZXNvdXJjZXMgaXQKKwkgKiBuZWVkcyB0byByb3V0ZSB0aGUgTVNJIHRvIHRoZSBjcHUgaXQgcGlja3MsIGFuZCBmb3IgYXNzb2NpYXRpbmcKKwkgKiB0aG9zZSByZXNvdXJjZXMgd2l0aCB0aGUgcGFzc2VkIGluIHZlY3Rvci4KKwkgKgorCSAqIFJldHVybnMgMCBpZiB0aGUgTVNJIGFkZHJlc3MvZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHNldHVwLgorCSAqKi8KKworCWludAkoKnNldHVwKSAgICAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCB2ZWN0b3IsCisJCQkgICAgIHUzMiAqYWRkcl9oaSwgdTMyICphZGRyX2xvLCB1MzIgKmRhdGEpOworCisJLyoqCisJICogdGVhcmRvd24gLSByZWxlYXNlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgc2V0dXAKKwkgKiBAdmVjdG9yOiB2ZWN0b3IgY29udGV4dCBmb3IgcmVzb3VyY2VzIChpbikKKwkgKgorCSAqIERlc2NyaXB0aW9uOiAgVGhlIHRlYXJkb3duIG9wIGlzIHVzZWQgdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzCisJICogdGhhdCB3ZXJlIGFsbG9jYXRlZCBpbiB0aGUgc2V0dXAgcm91dGluZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhc3NlZAorCSAqIGluIHZlY3Rvci4KKwkgKiovCisKKwl2b2lkCSgqdGVhcmRvd24pICh1bnNpZ25lZCBpbnQgdmVjdG9yKTsKKworCS8qKgorCSAqIHRhcmdldCAtIHJldGFyZ2V0IGFuIE1TSSBhdCBhIGRpZmZlcmVudCBjcHUKKwkgKiBAdmVjdG9yOiB2ZWN0b3IgY29udGV4dCBmb3IgcmVzb3VyY2VzIChpbikKKwkgKiBAY3B1OiAgbmV3IGNwdSB0byBkaXJlY3QgdmVjdG9yIGF0IChpbikKKwkgKiBAYWRkcl9oaTogbmV3IHZhbHVlIG9mIFBDSSBidXMgdXBwZXIgMzIgYml0cyAoaW4vb3V0KQorCSAqIEBhZGRyX2xvOiBuZXcgdmFsdWUgb2YgUENJIGJ1cyBsb3dlciAzMiBiaXRzIChpbi9vdXQpCisJICoKKwkgKiBEZXNjcmlwdGlvbjogIFRoZSB0YXJnZXQgb3AgaXMgdXNlZCB0byByZWRpcmVjdCBhbiBNU0kgdmVjdG9yCisJICogYXQgYSBkaWZmZXJlbnQgY3B1LiAgYWRkcl9oaS9hZGRyX2xvIGNvbWluZyBpbiBhcmUgdGhlIGV4aXN0aW5nCisJICogdmFsdWVzIHRoYXQgdGhlIE1TSSBjb3JlIGhhcyBwcm9ncmFtbWVkIGludG8gdGhlIGNhcmQuICBUaGUKKwkgKiB0YXJnZXQgY29kZSBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbnkgcmVzb3VyY2VzIChpZiBhbnkpCisJICogYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgYWRkcmVzcywgYW5kIGdlbmVyYXRpbmcgYSBuZXcgUENJIGJ1cworCSAqIGFkZHJfaGkvYWRkcl9sbyB0aGF0IHdpbGwgcmVkaXJlY3QgdGhlIHZlY3RvciBhdCB0aGUgaW5kaWNhdGVkIGNwdS4KKwkgKiovCisKKwl2b2lkCSgqdGFyZ2V0KSAgICh1bnNpZ25lZCBpbnQgdmVjdG9yLCB1bnNpZ25lZCBpbnQgY3B1LAorCQkJICAgICB1MzIgKmFkZHJfaGksIHUzMiAqYWRkcl9sbyk7Cit9OworCitleHRlcm4gaW50IG1zaV9yZWdpc3RlcihzdHJ1Y3QgbXNpX29wcyAqb3BzKTsKKwogI2luY2x1ZGUgPGFzbS9tc2kuaD4KIAogLyoKQEAgLTYzLDY3ICsxMjUsNiBAQAogI2RlZmluZSBtc2l4X21hc2soYWRkcmVzcykJCShhZGRyZXNzIHwgUENJX01TSVhfRkxBR1NfQklUTUFTSykKICNkZWZpbmUgbXNpeF9pc19wZW5kaW5nKGFkZHJlc3MpIAkoYWRkcmVzcyAmIFBDSV9NU0lYX0ZMQUdTX1BFTkRNQVNLKQogCi0vKgotICogTVNJIERlZmluZWQgRGF0YSBTdHJ1Y3R1cmVzCi0gKi8KLSNkZWZpbmUgTVNJX0FERFJFU1NfSEVBREVSCQkweGZlZQotI2RlZmluZSBNU0lfQUREUkVTU19IRUFERVJfU0hJRlQJMTIKLSNkZWZpbmUgTVNJX0FERFJFU1NfSEVBREVSX01BU0sJCTB4ZmZmMDAwCi0jZGVmaW5lIE1TSV9BRERSRVNTX0RFU1RfSURfTUFTSwkweGZmZjAwMDBmCi0jZGVmaW5lIE1TSV9UQVJHRVRfQ1BVX01BU0sJCTB4ZmYKLSNkZWZpbmUgTVNJX0RFTElWRVJZX01PREUJCTAKLSNkZWZpbmUgTVNJX0xFVkVMX01PREUJCQkxCS8qIEVkZ2UgYWx3YXlzIGFzc2VydCAqLwotI2RlZmluZSBNU0lfVFJJR0dFUl9NT0RFCQkwCS8qIE1TSSBpcyBlZGdlIHNlbnNpdGl2ZSAqLwotI2RlZmluZSBNU0lfUEhZU0lDQUxfTU9ERQkJMAotI2RlZmluZSBNU0lfTE9HSUNBTF9NT0RFCQkxCi0jZGVmaW5lIE1TSV9SRURJUkVDVElPTl9ISU5UX01PREUJMAotCi1zdHJ1Y3QgbXNnX2RhdGEgewotI2lmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX0JJVEZJRUxEKQotCV9fdTMyCXZlY3RvcgkJOiAgODsKLQlfX3UzMglkZWxpdmVyeV9tb2RlCTogIDM7CS8qIDAwMGI6IEZJWEVEIHwgMDAxYjogbG93ZXN0IHByaW9yICovCi0JX191MzIJcmVzZXJ2ZWRfMQk6ICAzOwotCV9fdTMyCWxldmVsCQk6ICAxOwkvKiAwOiBkZWFzc2VydCB8IDE6IGFzc2VydCAqLwotCV9fdTMyCXRyaWdnZXIJCTogIDE7CS8qIDA6IGVkZ2UgfCAxOiBsZXZlbCAqLwotCV9fdTMyCXJlc2VydmVkXzIJOiAxNjsKLSNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX0JJVEZJRUxEKQotCV9fdTMyCXJlc2VydmVkXzIJOiAxNjsKLQlfX3UzMgl0cmlnZ2VyCQk6ICAxOwkvKiAwOiBlZGdlIHwgMTogbGV2ZWwgKi8KLQlfX3UzMglsZXZlbAkJOiAgMTsJLyogMDogZGVhc3NlcnQgfCAxOiBhc3NlcnQgKi8KLQlfX3UzMglyZXNlcnZlZF8xCTogIDM7Ci0JX191MzIJZGVsaXZlcnlfbW9kZQk6ICAzOwkvKiAwMDBiOiBGSVhFRCB8IDAwMWI6IGxvd2VzdCBwcmlvciAqLwotCV9fdTMyCXZlY3RvcgkJOiAgODsKLSNlbHNlCi0jZXJyb3IgIkJpdGZpZWxkIGVuZGlhbm5lc3Mgbm90IGRlZmluZWQhIENoZWNrIHlvdXIgYnl0ZW9yZGVyLmgiCi0jZW5kaWYKLX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwotCi1zdHJ1Y3QgbXNnX2FkZHJlc3MgewotCXVuaW9uIHsKLQkJc3RydWN0IHsKLSNpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9CSVRGSUVMRCkKLQkJCV9fdTMyCXJlc2VydmVkXzEJOiAgMjsKLQkJCV9fdTMyCWRlc3RfbW9kZQk6ICAxOwkvKjA6cGh5c2ljIHwgMTpsb2dpYyAqLwotCQkJX191MzIJcmVkaXJlY3Rpb25faGludDogIDE7ICAJLyowOiBkZWRpY2F0ZWQgQ1BVCi0JCQkJCQkJICAxOiBsb3dlc3QgcHJpb3JpdHkgKi8KLQkJCV9fdTMyCXJlc2VydmVkXzIJOiAgNDsKLSAJCQlfX3UzMglkZXN0X2lkCQk6IDI0OwkvKiBEZXN0aW5hdGlvbiBJRCAqLwotI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpCi0gCQkJX191MzIJZGVzdF9pZAkJOiAyNDsJLyogRGVzdGluYXRpb24gSUQgKi8KLQkJCV9fdTMyCXJlc2VydmVkXzIJOiAgNDsKLQkJCV9fdTMyCXJlZGlyZWN0aW9uX2hpbnQ6ICAxOyAgCS8qMDogZGVkaWNhdGVkIENQVQotCQkJCQkJCSAgMTogbG93ZXN0IHByaW9yaXR5ICovCi0JCQlfX3UzMglkZXN0X21vZGUJOiAgMTsJLyowOnBoeXNpYyB8IDE6bG9naWMgKi8KLQkJCV9fdTMyCXJlc2VydmVkXzEJOiAgMjsKLSNlbHNlCi0jZXJyb3IgIkJpdGZpZWxkIGVuZGlhbm5lc3Mgbm90IGRlZmluZWQhIENoZWNrIHlvdXIgYnl0ZW9yZGVyLmgiCi0jZW5kaWYKLSAgICAgIAkJfXU7Ci0gICAgICAgCQlfX3UzMiAgdmFsdWU7Ci0JfWxvX2FkZHJlc3M7Ci0JX191MzIgCWhpX2FkZHJlc3M7Ci19IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKLQogc3RydWN0IG1zaV9kZXNjIHsKIAlzdHJ1Y3QgewogCQlfX3U4CXR5cGUJOiA1OyAJLyogezA6IHVudXNlZCwgNWg6TVNJLCAxMWg6TVNJLVh9ICovCkBAIC0xMzIsNyArMTMzLDcgQEAKIAkJX191OAlyZXNlcnZlZDogMTsgCS8qIHJlc2VydmVkCQkJICAqLwogCQlfX3U4CWVudHJ5X25yOyAgICAJLyogc3BlY2lmaWMgZW5hYmxlZCBlbnRyeSAJICAqLwogCQlfX3U4CWRlZmF1bHRfdmVjdG9yOyAvKiBkZWZhdWx0IHByZS1hc3NpZ25lZCB2ZWN0b3IgICAgKi8KLQkJX191OAljdXJyZW50X2NwdTsgCS8qIGN1cnJlbnQgZGVzdGluYXRpb24gY3B1CSAgKi8KKwkJX191OAl1bnVzZWQ7IAkvKiBmb3JtZXJseSB1bnVzZWQgZGVzdGluYXRpb24gY3B1Ki8KIAl9bXNpX2F0dHJpYjsKIAogCXN0cnVjdCB7CkBAIC0xNDIsNiArMTQzLDE0IEBACiAKIAl2b2lkIF9faW9tZW0gKm1hc2tfYmFzZTsKIAlzdHJ1Y3QgcGNpX2RldiAqZGV2OworCisjaWZkZWYgQ09ORklHX1BNCisJLyogUE0gc2F2ZSBhcmVhIGZvciBNU0lYIGFkZHJlc3MvZGF0YSAqLworCisJdTMyCWFkZHJlc3NfaGlfc2F2ZTsKKwl1MzIJYWRkcmVzc19sb19zYXZlOworCXUzMglkYXRhX3NhdmU7CisjZW5kaWYKIH07CiAKICNlbmRpZiAvKiBNU0lfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLWFjcGkuYyBiL2RyaXZlcnMvcGNpL3BjaS1hY3BpLmMKaW5kZXggYzJlY2FlNS4uYmI3NDU2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNpLWFjcGkuYworKysgYi9kcml2ZXJzL3BjaS9wY2ktYWNwaS5jCkBAIC0yNjcsNyArMjY3LDcgQEAKIAogCiAvKiBBQ1BJIGJ1cyB0eXBlICovCi1zdGF0aWMgaW50IHBjaV9hY3BpX2ZpbmRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgYWNwaV9oYW5kbGUgKmhhbmRsZSkKK3N0YXRpYyBpbnQgYWNwaV9wY2lfZmluZF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCBhY3BpX2hhbmRsZSAqaGFuZGxlKQogewogCXN0cnVjdCBwY2lfZGV2ICogcGNpX2RldjsKIAlhY3BpX2ludGVnZXIJYWRkcjsKQEAgLTI4MSw3ICsyODEsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBjaV9hY3BpX2ZpbmRfcm9vdF9icmlkZ2Uoc3RydWN0IGRldmljZSAqZGV2LCBhY3BpX2hhbmRsZSAqaGFuZGxlKQorc3RhdGljIGludCBhY3BpX3BjaV9maW5kX3Jvb3RfYnJpZGdlKHN0cnVjdCBkZXZpY2UgKmRldiwgYWNwaV9oYW5kbGUgKmhhbmRsZSkKIHsKIAlpbnQgbnVtOwogCXVuc2lnbmVkIGludCBzZWcsIGJ1czsKQEAgLTI5OSwyMSArMjk5LDIxIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgYWNwaV9idXNfdHlwZSBwY2lfYWNwaV9idXMgPSB7CitzdGF0aWMgc3RydWN0IGFjcGlfYnVzX3R5cGUgYWNwaV9wY2lfYnVzID0gewogCS5idXMgPSAmcGNpX2J1c190eXBlLAotCS5maW5kX2RldmljZSA9IHBjaV9hY3BpX2ZpbmRfZGV2aWNlLAotCS5maW5kX2JyaWRnZSA9IHBjaV9hY3BpX2ZpbmRfcm9vdF9icmlkZ2UsCisJLmZpbmRfZGV2aWNlID0gYWNwaV9wY2lfZmluZF9kZXZpY2UsCisJLmZpbmRfYnJpZGdlID0gYWNwaV9wY2lfZmluZF9yb290X2JyaWRnZSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBjaV9hY3BpX2luaXQodm9pZCkKK3N0YXRpYyBpbnQgX19pbml0IGFjcGlfcGNpX2luaXQodm9pZCkKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gcmVnaXN0ZXJfYWNwaV9idXNfdHlwZSgmcGNpX2FjcGlfYnVzKTsKKwlyZXQgPSByZWdpc3Rlcl9hY3BpX2J1c190eXBlKCZhY3BpX3BjaV9idXMpOwogCWlmIChyZXQpCiAJCXJldHVybiAwOwogCXBsYXRmb3JtX3BjaV9jaG9vc2Vfc3RhdGUgPSBhY3BpX3BjaV9jaG9vc2Vfc3RhdGU7CiAJcGxhdGZvcm1fcGNpX3NldF9wb3dlcl9zdGF0ZSA9IGFjcGlfcGNpX3NldF9wb3dlcl9zdGF0ZTsKIAlyZXR1cm4gMDsKIH0KLWFyY2hfaW5pdGNhbGwocGNpX2FjcGlfaW5pdCk7CithcmNoX2luaXRjYWxsKGFjcGlfcGNpX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMgYi9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYwppbmRleCA1NmFjMmJjLi5iYzQwNWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYworKysgYi9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYwpAQCAtNDMsNiArNDMsMjkgQEAKIHBjaV9jb25maWdfYXR0cihzdWJzeXN0ZW1fZGV2aWNlLCAiMHglMDR4XG4iKTsKIHBjaV9jb25maWdfYXR0cihjbGFzcywgIjB4JTA2eFxuIik7CiBwY2lfY29uZmlnX2F0dHIoaXJxLCAiJXVcbiIpOworcGNpX2NvbmZpZ19hdHRyKGlzX2VuYWJsZWQsICIldVxuIik7CisKK3N0YXRpYyBzc2l6ZV90IGJyb2tlbl9wYXJpdHlfc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCSBjaGFyICpidWYpCit7CisJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldik7CisJcmV0dXJuIHNwcmludGYgKGJ1ZiwgIiV1XG4iLCBwZGV2LT5icm9rZW5fcGFyaXR5X3N0YXR1cyk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGJyb2tlbl9wYXJpdHlfc3RhdHVzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkJICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkJICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsKKwlzc2l6ZV90IGNvbnN1bWVkID0gLUVJTlZBTDsKKworCWlmICgoY291bnQgPiAwKSAmJiAoKmJ1ZiA9PSAnMCcgfHwgKmJ1ZiA9PSAnMScpKSB7CisJCXBkZXYtPmJyb2tlbl9wYXJpdHlfc3RhdHVzID0gKmJ1ZiA9PSAnMScgPyAxIDogMDsKKwkJY29uc3VtZWQgPSBjb3VudDsKKwl9CisJcmV0dXJuIGNvbnN1bWVkOworfQogCiBzdGF0aWMgc3NpemVfdCBsb2NhbF9jcHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKQEAgLTkwLDYgKzExMywyNSBAQAogCQkgICAgICAgKHU4KShwY2lfZGV2LT5jbGFzcyA+PiAxNiksICh1OCkocGNpX2Rldi0+Y2xhc3MgPj4gOCksCiAJCSAgICAgICAodTgpKHBjaV9kZXYtPmNsYXNzKSk7CiB9CitzdGF0aWMgc3NpemVfdAoraXNfZW5hYmxlZF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsKKworCS8qIHRoaXMgY2FuIGNyYXNoIHRoZSBtYWNoaW5lIHdoZW4gZG9uZSBvbiB0aGUgIndyb25nIiBkZXZpY2UgKi8KKwlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCisJCXJldHVybiBjb3VudDsKKworCWlmICgqYnVmID09ICcwJykKKwkJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOworCisJaWYgKCpidWYgPT0gJzEnKQorCQlwY2lfZW5hYmxlX2RldmljZShwZGV2KTsKKworCXJldHVybiBjb3VudDsKK30KKwogCiBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBwY2lfZGV2X2F0dHJzW10gPSB7CiAJX19BVFRSX1JPKHJlc291cmNlKSwKQEAgLTEwMSw2ICsxNDMsOSBAQAogCV9fQVRUUl9STyhpcnEpLAogCV9fQVRUUl9STyhsb2NhbF9jcHVzKSwKIAlfX0FUVFJfUk8obW9kYWxpYXMpLAorCV9fQVRUUihlbmFibGUsIDA2MDAsIGlzX2VuYWJsZWRfc2hvdywgaXNfZW5hYmxlZF9zdG9yZSksCisJX19BVFRSKGJyb2tlbl9wYXJpdHlfc3RhdHVzLChTX0lSVUdPfFNfSVdVU1IpLAorCQlicm9rZW5fcGFyaXR5X3N0YXR1c19zaG93LGJyb2tlbl9wYXJpdHlfc3RhdHVzX3N0b3JlKSwKIAlfX0FUVFJfTlVMTCwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3BjaS5jIGIvZHJpdmVycy9wY2kvcGNpLmMKaW5kZXggZmRlNDFjYy4uZDQwOGEzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNpLmMKKysrIGIvZHJpdmVycy9wY2kvcGNpLmMKQEAgLTUxNyw3ICs1MTcsMTIgQEAKIGludAogcGNpX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlpbnQgZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfYmFycyhkZXYsICgxIDw8IFBDSV9OVU1fUkVTT1VSQ0VTKSAtIDEpOworCWludCBlcnI7CisKKwlpZiAoZGV2LT5pc19lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCWVyciA9IHBjaV9lbmFibGVfZGV2aWNlX2JhcnMoZGV2LCAoMSA8PCBQQ0lfTlVNX1JFU09VUkNFUykgLSAxKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCXBjaV9maXh1cF9kZXZpY2UocGNpX2ZpeHVwX2VuYWJsZSwgZGV2KTsKQEAgLTU0Niw3ICs1NTEsMTQgQEAKIHBjaV9kaXNhYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXUxNiBwY2lfY29tbWFuZDsKLQkKKworCWlmIChkZXYtPm1zaV9lbmFibGVkKQorCQlkaXNhYmxlX21zaV9tb2RlKGRldiwgcGNpX2ZpbmRfY2FwYWJpbGl0eShkZXYsIFBDSV9DQVBfSURfTVNJKSwKKwkJCVBDSV9DQVBfSURfTVNJKTsKKwlpZiAoZGV2LT5tc2l4X2VuYWJsZWQpCisJCWRpc2FibGVfbXNpX21vZGUoZGV2LCBwY2lfZmluZF9jYXBhYmlsaXR5KGRldiwgUENJX0NBUF9JRF9NU0kpLAorCQkJUENJX0NBUF9JRF9NU0lYKTsKKwogCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NPTU1BTkQsICZwY2lfY29tbWFuZCk7CiAJaWYgKHBjaV9jb21tYW5kICYgUENJX0NPTU1BTkRfTUFTVEVSKSB7CiAJCXBjaV9jb21tYW5kICY9IH5QQ0lfQ09NTUFORF9NQVNURVI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2kuaCBiL2RyaXZlcnMvcGNpL3BjaS5oCmluZGV4IDMwNjMwY2IuLjI5YmRlY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3BjaS5oCisrKyBiL2RyaXZlcnMvcGNpL3BjaS5oCkBAIC00MCw3ICs0MCw3IEBACiBleHRlcm4gdm9pZCBwY2lfcmVtb3ZlX2xlZ2FjeV9maWxlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKTsKIAogLyogTG9jayBmb3IgcmVhZC93cml0ZSBhY2Nlc3MgdG8gcGNpIGRldmljZSBhbmQgYnVzIGxpc3RzICovCi1leHRlcm4gc3BpbmxvY2tfdCBwY2lfYnVzX2xvY2s7CitleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBwY2lfYnVzX3NlbTsKIAogI2lmZGVmIENPTkZJR19YODZfSU9fQVBJQwogZXh0ZXJuIGludCBwY2lfbXNpX3F1aXJrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHJvYmUuYyBiL2RyaXZlcnMvcGNpL3Byb2JlLmMKaW5kZXggYTEwZWQ5ZC4uZjg5ZGJjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcHJvYmUuYworKysgYi9kcml2ZXJzL3BjaS9wcm9iZS5jCkBAIC0xODAsMjUgKzE4MCwzMSBAQAogCQlyZXMtPmZsYWdzIHw9IHBjaV9jYWxjX3Jlc291cmNlX2ZsYWdzKGwpOwogCQlpZiAoKGwgJiAoUENJX0JBU0VfQUREUkVTU19TUEFDRSB8IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfTUFTSykpCiAJCSAgICA9PSAoUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkgfCBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSkgewotCQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgcmVnKzQsICZsKTsKKwkJCXUzMiBzemhpLCBsaGk7CisJCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCByZWcrNCwgJmxoaSk7CisJCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgcmVnKzQsIH4wKTsKKwkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIHJlZys0LCAmc3poaSk7CisJCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgcmVnKzQsIGxoaSk7CisJCQlzemhpID0gcGNpX3NpemUobGhpLCBzemhpLCAweGZmZmZmZmZmKTsKIAkJCW5leHQrKzsKICNpZiBCSVRTX1BFUl9MT05HID09IDY0Ci0JCQlyZXMtPnN0YXJ0IHw9ICgodW5zaWduZWQgbG9uZykgbCkgPDwgMzI7CisJCQlyZXMtPnN0YXJ0IHw9ICgodW5zaWduZWQgbG9uZykgbGhpKSA8PCAzMjsKIAkJCXJlcy0+ZW5kID0gcmVzLT5zdGFydCArIHN6OwotCQkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHJlZys0LCB+MCk7Ci0JCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCByZWcrNCwgJnN6KTsKLQkJCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCByZWcrNCwgbCk7Ci0JCQlzeiA9IHBjaV9zaXplKGwsIHN6LCAweGZmZmZmZmZmKTsKLQkJCWlmIChzeikgeworCQkJaWYgKHN6aGkpIHsKIAkJCQkvKiBUaGlzIEJBUiBuZWVkcyA+IDRHQj8gIFdvdy4gKi8KLQkJCQlyZXMtPmVuZCB8PSAodW5zaWduZWQgbG9uZylzejw8MzI7CisJCQkJcmVzLT5lbmQgfD0gKHVuc2lnbmVkIGxvbmcpc3poaTw8MzI7CiAJCQl9CiAjZWxzZQotCQkJaWYgKGwpIHsKLQkJCQlwcmludGsoS0VSTl9FUlIgIlBDSTogVW5hYmxlIHRvIGhhbmRsZSA2NC1iaXQgYWRkcmVzcyBmb3IgZGV2aWNlICVzXG4iLCBwY2lfbmFtZShkZXYpKTsKKwkJCWlmIChzemhpKSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJQQ0k6IFVuYWJsZSB0byBoYW5kbGUgNjQtYml0IEJBUiBmb3IgZGV2aWNlICVzXG4iLCBwY2lfbmFtZShkZXYpKTsKIAkJCQlyZXMtPnN0YXJ0ID0gMDsKIAkJCQlyZXMtPmZsYWdzID0gMDsKLQkJCQljb250aW51ZTsKKwkJCX0gZWxzZSBpZiAobGhpKSB7CisJCQkJLyogNjQtYml0IHdpZGUgYWRkcmVzcywgdHJlYXQgYXMgZGlzYWJsZWQgKi8KKwkJCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGRldiwgcmVnLCBsICYgfih1MzIpUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSyk7CisJCQkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHJlZys0LCAwKTsKKwkJCQlyZXMtPnN0YXJ0ID0gMDsKKwkJCQlyZXMtPmVuZCA9IHN6OwogCQkJfQogI2VuZGlmCiAJCX0KQEAgLTM3Nyw5ICszODMsOSBAQAogCiAJY2hpbGQgPSBwY2lfYWxsb2NfY2hpbGRfYnVzKHBhcmVudCwgZGV2LCBidXNucik7CiAJaWYgKGNoaWxkKSB7Ci0JCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwkJZG93bl93cml0ZSgmcGNpX2J1c19zZW0pOwogCQlsaXN0X2FkZF90YWlsKCZjaGlsZC0+bm9kZSwgJnBhcmVudC0+Y2hpbGRyZW4pOwotCQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwkJdXBfd3JpdGUoJnBjaV9idXNfc2VtKTsKIAl9CiAJcmV0dXJuIGNoaWxkOwogfQpAQCAtODM4LDkgKzg0NCw5IEBACiAJICogYW5kIHRoZSBidXMgbGlzdCBmb3IgZml4dXAgZnVuY3Rpb25zLCBldGMuCiAJICovCiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+Z2xvYmFsX2xpc3QpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3dyaXRlKCZwY2lfYnVzX3NlbSk7CiAJbGlzdF9hZGRfdGFpbCgmZGV2LT5idXNfbGlzdCwgJmJ1cy0+ZGV2aWNlcyk7Ci0Jc3Bpbl91bmxvY2soJnBjaV9idXNfbG9jayk7CisJdXBfd3JpdGUoJnBjaV9idXNfc2VtKTsKIH0KIAogc3RydWN0IHBjaV9kZXYgKiBfX2RldmluaXQKQEAgLTk3NSw5ICs5ODEsMTAgQEAKIAkJcHJfZGVidWcoIlBDSTogQnVzICUwNHg6JTAyeCBhbHJlYWR5IGtub3duXG4iLCBwY2lfZG9tYWluX25yKGIpLCBidXMpOwogCQlnb3RvIGVycl9vdXQ7CiAJfQotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKworCWRvd25fd3JpdGUoJnBjaV9idXNfc2VtKTsKIAlsaXN0X2FkZF90YWlsKCZiLT5ub2RlLCAmcGNpX3Jvb3RfYnVzZXMpOwotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3dyaXRlKCZwY2lfYnVzX3NlbSk7CiAKIAltZW1zZXQoZGV2LCAwLCBzaXplb2YoKmRldikpOwogCWRldi0+cGFyZW50ID0gcGFyZW50OwpAQCAtMTAxNyw5ICsxMDI0LDkgQEAKIGNsYXNzX2Rldl9yZWdfZXJyOgogCWRldmljZV91bnJlZ2lzdGVyKGRldik7CiBkZXZfcmVnX2VycjoKLQlzcGluX2xvY2soJnBjaV9idXNfbG9jayk7CisJZG93bl93cml0ZSgmcGNpX2J1c19zZW0pOwogCWxpc3RfZGVsKCZiLT5ub2RlKTsKLQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwl1cF93cml0ZSgmcGNpX2J1c19zZW0pOwogZXJyX291dDoKIAlrZnJlZShkZXYpOwogCWtmcmVlKGIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcXVpcmtzLmMgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwppbmRleCBkMzc4NDc4Li40MzY0ZDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9xdWlya3MuYworKysgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwpAQCAtMjQsNiArMjQsMTcgQEAKICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSAicGNpLmgiCiAKKy8qIFRoZSBNZWxsYW5veCBUYXZvciBkZXZpY2UgZ2l2ZXMgZmFsc2UgcG9zaXRpdmUgcGFyaXR5IGVycm9ycworICogTWFyayB0aGlzIGRldmljZSB3aXRoIGEgYnJva2VuX3Bhcml0eV9zdGF0dXMsIHRvIGFsbG93CisgKiBQQ0kgc2Nhbm5pbmcgY29kZSB0byAic2tpcCIgdGhpcyBub3cgYmxhY2tsaXN0ZWQgZGV2aWNlLgorICovCitzdGF0aWMgdm9pZCBfX2RldmluaXQgcXVpcmtfbWVsbGFub3hfdGF2b3Ioc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwlkZXYtPmJyb2tlbl9wYXJpdHlfc3RhdHVzID0gMTsJLyogVGhpcyBkZXZpY2UgZ2l2ZXMgZmFsc2UgcG9zaXRpdmVzICovCit9CitERUNMQVJFX1BDSV9GSVhVUF9GSU5BTChQQ0lfVkVORE9SX0lEX01FTExBTk9YLFBDSV9ERVZJQ0VfSURfTUVMTEFOT1hfVEFWT1IscXVpcmtfbWVsbGFub3hfdGF2b3IpOworREVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9NRUxMQU5PWCxQQ0lfREVWSUNFX0lEX01FTExBTk9YX1RBVk9SX0JSSURHRSxxdWlya19tZWxsYW5veF90YXZvcik7CisKIC8qIERlYWwgd2l0aCBicm9rZW4gQklPUydlcyB0aGF0IG5lZ2xlY3QgdG8gZW5hYmxlIHBhc3NpdmUgcmVsZWFzZSwKICAgIHdoaWNoIGNhbiBjYXVzZSBwcm9ibGVtcyBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSA4MjQ0MUZYL1BQcm8gTVRSUnMgKi8KIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBxdWlya19wYXNzaXZlX3JlbGVhc2Uoc3RydWN0IHBjaV9kZXYgKmRldikKQEAgLTg3OCwyNyArODg5LDMwIEBACiAgKiB3aGVuIGEgUENJLVNvdW5kY2FyZCBpcyBhZGRlZC4gVGhlIEJJT1Mgb25seSBnaXZlcyBPcHRpb25zCiAgKiAiRGlzYWJsZWQiIGFuZCAiQVVUTyIuIFRoaXMgUXVpcmsgU2V0cyB0aGUgY29ycmVzcG9uZGluZwogICogUmVnaXN0ZXItVmFsdWUgdG8gZW5hYmxlIHRoZSBTb3VuZGNhcmQuCisgKgorICogRklYTUU6IFByZXNlbnRseSB0aGlzIHF1aXJrIHdpbGwgcnVuIG9uIGFueXRoaW5nIHRoYXQgaGFzIGFuIDgyMzcKKyAqIHdoaWNoIGlzbid0IGNvcnJlY3QsIHdlIG5lZWQgdG8gY2hlY2sgRE1JIHRhYmxlcyBvciBzb21ldGhpbmcgaW4KKyAqIG9yZGVyIHRvIG1ha2Ugc3VyZSBpdCBvbmx5IHJ1bnMgb24gdGhlIE1TSS1LOFQtTmVvMkZpci4gIEJlY2F1c2UgaXQKKyAqIHJ1bnMgZXZlcnl3aGVyZSBhdCBwcmVzZW50IHdlIHN1cHByZXNzIHRoZSBwcmludGsgb3V0cHV0IGluIG1vc3QKKyAqIGlycmVsZXZhbnQgY2FzZXMuCiAgKi8KIHN0YXRpYyB2b2lkIF9faW5pdCBrOHRfc291bmRfaG9zdGJyaWRnZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXVuc2lnbmVkIGNoYXIgdmFsOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiUENJOiBRdWlyay1NU0ktSzhUIFNvdW5kY2FyZCBPblxuIik7CiAJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCAweDUwLCAmdmFsKTsKIAlpZiAodmFsID09IDB4ODggfHwgdmFsID09IDB4YzgpIHsKKwkJLyogQXNzdW1lIGl0J3MgcHJvYmFibHkgYSBNU0ktSzhULU5lbzJGaXIgKi8KKwkJcHJpbnRrKEtFUk5fSU5GTyAiUENJOiBNU0ktSzhULU5lbzJGaXIsIGF0dGVtcHRpbmcgdG8gdHVybiBzb3VuZGNhcmQgT05cbiIpOwogCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDUwLCB2YWwgJiAofjB4NDApKTsKIAogCQkvKiBWZXJpZnkgdGhlIENoYW5nZSBmb3IgU3RhdHVzIG91dHB1dCAqLwogCQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIDB4NTAsICZ2YWwpOwogCQlpZiAodmFsICYgMHg0MCkKLQkJCXByaW50ayhLRVJOX0lORk8gIlBDSTogTVNJLUs4VCBzb3VuZGNhcmQgc3RpbGwgb2ZmXG4iKTsKKwkJCXByaW50ayhLRVJOX0lORk8gIlBDSTogTVNJLUs4VC1OZW8yRmlyLCBzb3VuZGNhcmQgc3RpbGwgb2ZmXG4iKTsKIAkJZWxzZQotCQkJcHJpbnRrKEtFUk5fSU5GTyAiUENJOiBNU0ktSzhUIHNvdW5kY2FyZCBvblxuIik7Ci0JfSBlbHNlIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiUENJOiBVbmV4cGVjdGVkIFZhbHVlIGluIFBDSS1SZWdpc3RlcjogIgotCQkJCQkibm8gQ2hhbmdlIVxuIik7CisJCQlwcmludGsoS0VSTl9JTkZPICJQQ0k6IE1TSS1LOFQtTmVvMkZpciwgc291bmRjYXJkIG9uXG4iKTsKIAl9Ci0KIH0KIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX1ZJQSwgUENJX0RFVklDRV9JRF9WSUFfODIzNywgazh0X3NvdW5kX2hvc3RicmlkZ2UpOwogCkBAIC0xNDg1LDYgKzE0OTksMjUgQEAKIH0KIERFQ0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX0lOVEVMLAkweDE0NjAsCQlxdWlya19wNjRoMl8xa19pbyk7CiAKKy8qIFVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgQUVSIGlzIG5vdCBsaW5rZWQgd2l0aCBleHRlbmRlZCBjYXBhYmlsaXRpZXMuCisgKiBGb3JjZSBpdCB0byBiZSBsaW5rZWQgYnkgc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sIGJpdCBpbiB0aGUKKyAqIGNvbmZpZyBzcGFjZS4KKyAqLworc3RhdGljIHZvaWQgX19kZXZpbml0IHF1aXJrX252aWRpYV9jazgwNF9wY2llX2Flcl9leHRfY2FwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJdWludDhfdCBiOworCWlmIChwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIDB4ZjQxLCAmYikgPT0gMCkgeworCQlpZiAoIShiICYgMHgyMCkpIHsKKwkJCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4ZjQxLCBiIHwgMHgyMCk7CisJCQlwcmludGsoS0VSTl9JTkZPCisJCQkgICAgICAgIlBDSTogTGlua2luZyBBRVIgZXh0ZW5kZWQgY2FwYWJpbGl0eSBvbiAlc1xuIiwKKwkJCSAgICAgICBwY2lfbmFtZShkZXYpKTsKKwkJfQorCX0KK30KK0RFQ0xBUkVfUENJX0ZJWFVQX0ZJTkFMKFBDSV9WRU5ET1JfSURfTlZJRElBLCAgUENJX0RFVklDRV9JRF9OVklESUFfQ0s4MDRfUENJRSwKKwkJCXF1aXJrX252aWRpYV9jazgwNF9wY2llX2Flcl9leHRfY2FwKTsKKwogRVhQT1JUX1NZTUJPTChwY2llX21jaF9xdWlyayk7CiAjaWZkZWYgQ09ORklHX0hPVFBMVUcKIEVYUE9SVF9TWU1CT0wocGNpX2ZpeHVwX2RldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9yZW1vdmUuYyBiL2RyaXZlcnMvcGNpL3JlbW92ZS5jCmluZGV4IDFhNmJmOWQuLjk5ZmZiZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3JlbW92ZS5jCisrKyBiL2RyaXZlcnMvcGNpL3JlbW92ZS5jCkBAIC0yMiwxOCArMjIsMTggQEAKIAkJcGNpX3Byb2NfZGV0YWNoX2RldmljZShkZXYpOwogCQlwY2lfcmVtb3ZlX3N5c2ZzX2Rldl9maWxlcyhkZXYpOwogCQlkZXZpY2VfdW5yZWdpc3RlcigmZGV2LT5kZXYpOwotCQlzcGluX2xvY2soJnBjaV9idXNfbG9jayk7CisJCWRvd25fd3JpdGUoJnBjaV9idXNfc2VtKTsKIAkJbGlzdF9kZWwoJmRldi0+Z2xvYmFsX2xpc3QpOwogCQlkZXYtPmdsb2JhbF9saXN0Lm5leHQgPSBkZXYtPmdsb2JhbF9saXN0LnByZXYgPSBOVUxMOwotCQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwkJdXBfd3JpdGUoJnBjaV9idXNfc2VtKTsKIAl9CiAKIAkvKiBSZW1vdmUgdGhlIGRldmljZSBmcm9tIHRoZSBkZXZpY2UgbGlzdHMsIGFuZCBwcmV2ZW50IGFueSBmdXJ0aGVyCiAJICogbGlzdCBhY2Nlc3NlcyBmcm9tIHRoaXMgZGV2aWNlICovCi0Jc3Bpbl9sb2NrKCZwY2lfYnVzX2xvY2spOworCWRvd25fd3JpdGUoJnBjaV9idXNfc2VtKTsKIAlsaXN0X2RlbCgmZGV2LT5idXNfbGlzdCk7CiAJZGV2LT5idXNfbGlzdC5uZXh0ID0gZGV2LT5idXNfbGlzdC5wcmV2ID0gTlVMTDsKLQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwl1cF93cml0ZSgmcGNpX2J1c19zZW0pOwogCiAJcGNpX2ZyZWVfcmVzb3VyY2VzKGRldik7CiAJcGNpX2Rldl9wdXQoZGV2KTsKQEAgLTYyLDkgKzYyLDkgQEAKIHsKIAlwY2lfcHJvY19kZXRhY2hfYnVzKHBjaV9idXMpOwogCi0Jc3Bpbl9sb2NrKCZwY2lfYnVzX2xvY2spOworCWRvd25fd3JpdGUoJnBjaV9idXNfc2VtKTsKIAlsaXN0X2RlbCgmcGNpX2J1cy0+bm9kZSk7Ci0Jc3Bpbl91bmxvY2soJnBjaV9idXNfbG9jayk7CisJdXBfd3JpdGUoJnBjaV9idXNfc2VtKTsKIAlwY2lfcmVtb3ZlX2xlZ2FjeV9maWxlcyhwY2lfYnVzKTsKIAljbGFzc19kZXZpY2VfcmVtb3ZlX2ZpbGUoJnBjaV9idXMtPmNsYXNzX2RldiwKIAkJJmNsYXNzX2RldmljZV9hdHRyX2NwdWFmZmluaXR5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NlYXJjaC5jIGIvZHJpdmVycy9wY2kvc2VhcmNoLmMKaW5kZXggY2U3ZGQ2ZS4uNjIyYjNmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2VhcmNoLmMKKysrIGIvZHJpdmVycy9wY2kvc2VhcmNoLmMKQEAgLTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlICJwY2kuaCIKIAotREVGSU5FX1NQSU5MT0NLKHBjaV9idXNfbG9jayk7CitERUNMQVJFX1JXU0VNKHBjaV9idXNfc2VtKTsKIAogc3RhdGljIHN0cnVjdCBwY2lfYnVzICogX19kZXZpbml0CiBwY2lfZG9fZmluZF9idXMoc3RydWN0IHBjaV9idXMqIGJ1cywgdW5zaWduZWQgY2hhciBidXNucikKQEAgLTcyLDExICs3MiwxMSBAQAogCXN0cnVjdCBwY2lfYnVzICpiID0gTlVMTDsKIAogCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3JlYWQoJnBjaV9idXNfc2VtKTsKIAluID0gZnJvbSA/IGZyb20tPm5vZGUubmV4dCA6IHBjaV9yb290X2J1c2VzLm5leHQ7CiAJaWYgKG4gIT0gJnBjaV9yb290X2J1c2VzKQogCQliID0gcGNpX2J1c19iKG4pOwotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIAlyZXR1cm4gYjsKIH0KIApAQCAtMTI0LDcgKzEyNCw3IEBACiAJc3RydWN0IHBjaV9kZXYgKmRldjsKIAogCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3JlYWQoJnBjaV9idXNfc2VtKTsKIAogCWxpc3RfZm9yX2VhY2godG1wLCAmYnVzLT5kZXZpY2VzKSB7CiAJCWRldiA9IHBjaV9kZXZfYih0bXApOwpAQCAtMTM1LDcgKzEzNSw3IEBACiAJZGV2ID0gTlVMTDsKICBvdXQ6CiAJcGNpX2Rldl9nZXQoZGV2KTsKLQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKKwl1cF9yZWFkKCZwY2lfYnVzX3NlbSk7CiAJcmV0dXJuIGRldjsKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBACiAJc3RydWN0IHBjaV9kZXYgKmRldjsKIAogCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3JlYWQoJnBjaV9idXNfc2VtKTsKIAluID0gZnJvbSA/IGZyb20tPmdsb2JhbF9saXN0Lm5leHQgOiBwY2lfZGV2aWNlcy5uZXh0OwogCiAJd2hpbGUgKG4gJiYgKG4gIT0gJnBjaV9kZXZpY2VzKSkgewpAQCAtMTgxLDcgKzE4MSw3IEBACiAJfQogCWRldiA9IE5VTEw7CiBleGl0OgotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIAlyZXR1cm4gZGV2OwogfQogCkBAIC0yMzIsNyArMjMyLDcgQEAKIAlzdHJ1Y3QgcGNpX2RldiAqZGV2OwogCiAJV0FSTl9PTihpbl9pbnRlcnJ1cHQoKSk7Ci0Jc3Bpbl9sb2NrKCZwY2lfYnVzX2xvY2spOworCWRvd25fcmVhZCgmcGNpX2J1c19zZW0pOwogCW4gPSBmcm9tID8gZnJvbS0+Z2xvYmFsX2xpc3QubmV4dCA6IHBjaV9kZXZpY2VzLm5leHQ7CiAKIAl3aGlsZSAobiAmJiAobiAhPSAmcGNpX2RldmljZXMpKSB7CkBAIC0yNDcsNyArMjQ3LDcgQEAKIAlkZXYgPSBOVUxMOwogZXhpdDoKIAlkZXYgPSBwY2lfZGV2X2dldChkZXYpOwotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIAlwY2lfZGV2X3B1dChmcm9tKTsKIAlyZXR1cm4gZGV2OwogfQpAQCAtMjkyLDcgKzI5Miw3IEBACiAJc3RydWN0IHBjaV9kZXYgKmRldjsKIAogCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3JlYWQoJnBjaV9idXNfc2VtKTsKIAluID0gZnJvbSA/IGZyb20tPmdsb2JhbF9saXN0LnByZXYgOiBwY2lfZGV2aWNlcy5wcmV2OwogCiAJd2hpbGUgKG4gJiYgKG4gIT0gJnBjaV9kZXZpY2VzKSkgewpAQCAtMzA0LDcgKzMwNCw3IEBACiAJfQogCWRldiA9IE5VTEw7CiBleGl0OgotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIAlyZXR1cm4gZGV2OwogfQogCkBAIC0zMjgsNyArMzI4LDcgQEAKIAlzdHJ1Y3QgcGNpX2RldiAqZGV2OwogCiAJV0FSTl9PTihpbl9pbnRlcnJ1cHQoKSk7Ci0Jc3Bpbl9sb2NrKCZwY2lfYnVzX2xvY2spOworCWRvd25fcmVhZCgmcGNpX2J1c19zZW0pOwogCW4gPSBmcm9tID8gZnJvbS0+Z2xvYmFsX2xpc3QubmV4dCA6IHBjaV9kZXZpY2VzLm5leHQ7CiAKIAl3aGlsZSAobiAmJiAobiAhPSAmcGNpX2RldmljZXMpKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAKIAlkZXYgPSBOVUxMOwogZXhpdDoKIAlkZXYgPSBwY2lfZGV2X2dldChkZXYpOwotCXNwaW5fdW5sb2NrKCZwY2lfYnVzX2xvY2spOworCXVwX3JlYWQoJnBjaV9idXNfc2VtKTsKIAlwY2lfZGV2X3B1dChmcm9tKTsKIAlyZXR1cm4gZGV2OwogfQpAQCAtMzYyLDcgKzM2Miw3IEBACiAJaW50IGZvdW5kID0gMDsKIAogCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOwotCXNwaW5fbG9jaygmcGNpX2J1c19sb2NrKTsKKwlkb3duX3JlYWQoJnBjaV9idXNfc2VtKTsKIAl3aGlsZSAoaWRzLT52ZW5kb3IgfHwgaWRzLT5zdWJ2ZW5kb3IgfHwgaWRzLT5jbGFzc19tYXNrKSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmcGNpX2RldmljZXMsIGdsb2JhbF9saXN0KSB7CiAJCQlpZiAocGNpX21hdGNoX29uZV9kZXZpY2UoaWRzLCBkZXYpKSB7CkBAIC0zNzIsOCArMzcyLDggQEAKIAkJfQogCQlpZHMrKzsKIAl9Ci1leGl0OgkJCQkKLQlzcGluX3VubG9jaygmcGNpX2J1c19sb2NrKTsKK2V4aXQ6CisJdXBfcmVhZCgmcGNpX2J1c19zZW0pOwogCXJldHVybiBmb3VuZDsKIH0KIEVYUE9SVF9TWU1CT0wocGNpX2Rldl9wcmVzZW50KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKaW5kZXggMjhjZTNhNy4uMzUwODZlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTU1LDkgKzU1LDEwIEBACiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZidXMtPmRldmljZXMsIGJ1c19saXN0KSB7CiAJCXUxNiBjbGFzcyA9IGRldi0+Y2xhc3MgPj4gODsKIAotCQkvKiBEb24ndCB0b3VjaCBjbGFzc2xlc3MgZGV2aWNlcyBhbmQgaG9zdCBicmlkZ2VzLiAgKi8KKwkJLyogRG9uJ3QgdG91Y2ggY2xhc3NsZXNzIGRldmljZXMgb3IgaG9zdCBicmlkZ2VzIG9yIGlvYXBpY3MuICAqLwogCQlpZiAoY2xhc3MgPT0gUENJX0NMQVNTX05PVF9ERUZJTkVEIHx8Ci0JCSAgICBjbGFzcyA9PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QpCisJCSAgICBjbGFzcyA9PSBQQ0lfQ0xBU1NfQlJJREdFX0hPU1QgfHwKKwkJICAgIGNsYXNzID09IFBDSV9DTEFTU19TWVNURU1fUElDKQogCQkJY29udGludWU7CiAKIAkJcGRldl9zb3J0X3Jlc291cmNlcyhkZXYsICZoZWFkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jIGIvZHJpdmVycy9wY2kvc2V0dXAtcmVzLmMKaW5kZXggZWE5Mjc3Yi4uNTc3ZjRiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtcmVzLmMKKysrIGIvZHJpdmVycy9wY2kvc2V0dXAtcmVzLmMKQEAgLTE1NSw2ICsxNTUsNDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCisjaWZkZWYgQ09ORklHX0VNQkVEREVECitpbnQgcGNpX2Fzc2lnbl9yZXNvdXJjZV9maXhlZChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVzbm8pCit7CisJc3RydWN0IHBjaV9idXMgKmJ1cyA9IGRldi0+YnVzOworCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gZGV2LT5yZXNvdXJjZSArIHJlc25vOworCXVuc2lnbmVkIGludCB0eXBlX21hc2s7CisJaW50IGksIHJldCA9IC1FQlVTWTsKKworCXR5cGVfbWFzayA9IElPUkVTT1VSQ0VfSU8gfCBJT1JFU09VUkNFX01FTSB8IElPUkVTT1VSQ0VfUFJFRkVUQ0g7CisKKwlmb3IgKGkgPSAwOyBpIDwgUENJX0JVU19OVU1fUkVTT1VSQ0VTOyBpKyspIHsKKwkJc3RydWN0IHJlc291cmNlICpyID0gYnVzLT5yZXNvdXJjZVtpXTsKKwkJaWYgKCFyKQorCQkJY29udGludWU7CisKKwkJLyogdHlwZV9tYXNrIG11c3QgbWF0Y2ggKi8KKwkJaWYgKChyZXMtPmZsYWdzIF4gci0+ZmxhZ3MpICYgdHlwZV9tYXNrKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gcmVxdWVzdF9yZXNvdXJjZShyLCByZXMpOworCisJCWlmIChyZXQgPT0gMCkKKwkJCWJyZWFrOworCX0KKworCWlmIChyZXQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJQQ0k6IEZhaWxlZCB0byBhbGxvY2F0ZSAlcyByZXNvdXJjZSAiCisJCQkJIiMlZDolbGx4QCVsbHggZm9yICVzXG4iLAorCQkJcmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfSU8gPyAiSS9PIiA6ICJtZW0iLAorCQkJcmVzbm8sICh1bnNpZ25lZCBsb25nIGxvbmcpKHJlcy0+ZW5kIC0gcmVzLT5zdGFydCArIDEpLAorCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylyZXMtPnN0YXJ0LCBwY2lfbmFtZShkZXYpKTsKKwl9IGVsc2UgaWYgKHJlc25vIDwgUENJX0JSSURHRV9SRVNPVVJDRVMpIHsKKwkJcGNpX3VwZGF0ZV9yZXNvdXJjZShkZXYsIHJlcywgcmVzbm8pOworCX0KKworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChwY2lfYXNzaWduX3Jlc291cmNlX2ZpeGVkKTsKKyNlbmRpZgorCiAvKiBTb3J0IHJlc291cmNlcyBieSBhbGlnbm1lbnQgKi8KIHZvaWQgX19kZXZpbml0CiBwZGV2X3NvcnRfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZV9saXN0ICpoZWFkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY21jaWEvc2ExMTAwX2JhZGdlNC5jIGIvZHJpdmVycy9wY21jaWEvc2ExMTAwX2JhZGdlNC5jCmluZGV4IGM2YjI2MmIuLjE5YjFlMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3NhMTEwMF9iYWRnZTQuYworKysgYi9kcml2ZXJzL3BjbWNpYS9zYTExMDBfYmFkZ2U0LmMKQEAgLTEyOCw4ICsxMjgsOCBAQAogCiBzdGF0aWMgc3RydWN0IHBjbWNpYV9sb3dfbGV2ZWwgYmFkZ2U0X3BjbWNpYV9vcHMgPSB7CiAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwKLQkuaW5pdAkJCT0gc2ExMTExX3BjbWNpYV9od19pbml0LAotCS5zaHV0ZG93bgkJPSBzYTExMTFfcGNtY2lhX2h3X3NodXRkb3duLAorCS5od19pbml0CQk9IHNhMTExMV9wY21jaWFfaHdfaW5pdCwKKwkuaHdfc2h1dGRvd24JCT0gc2ExMTExX3BjbWNpYV9od19zaHV0ZG93biwKIAkuc29ja2V0X3N0YXRlCQk9IHNhMTExMV9wY21jaWFfc29ja2V0X3N0YXRlLAogCS5jb25maWd1cmVfc29ja2V0CT0gYmFkZ2U0X3BjbWNpYV9jb25maWd1cmVfc29ja2V0LAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BucC9wbnBhY3BpL3JzcGFyc2VyLmMgYi9kcml2ZXJzL3BucC9wbnBhY3BpL3JzcGFyc2VyLmMKaW5kZXggNDA3YjRlYS4uM2E0YTY0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvcG5wYWNwaS9yc3BhcnNlci5jCisrKyBiL2RyaXZlcnMvcG5wL3BucGFjcGkvcnNwYXJzZXIuYwpAQCAtMzYsMTMgKzM2LDEzIEBACiB7CiAJaW50IGZsYWc7CiAJaWYgKHRyaWdnZXJpbmcgPT0gQUNQSV9MRVZFTF9TRU5TSVRJVkUpIHsKLQkJaWYocG9sYXJpdHkgPT0gQUNQSV9BQ1RJVkVfTE9XKQorCQlpZiAocG9sYXJpdHkgPT0gQUNQSV9BQ1RJVkVfTE9XKQogCQkJZmxhZyA9IElPUkVTT1VSQ0VfSVJRX0xPV0xFVkVMOwogCQllbHNlCiAJCQlmbGFnID0gSU9SRVNPVVJDRV9JUlFfSElHSExFVkVMOwogCX0KIAllbHNlIHsKLQkJaWYocG9sYXJpdHkgPT0gQUNQSV9BQ1RJVkVfTE9XKQorCQlpZiAocG9sYXJpdHkgPT0gQUNQSV9BQ1RJVkVfTE9XKQogCQkJZmxhZyA9IElPUkVTT1VSQ0VfSVJRX0xPV0VER0U7CiAJCWVsc2UKIAkJCWZsYWcgPSBJT1JFU09VUkNFX0lSUV9ISUdIRURHRTsKQEAgLTU3LDcgKzU3LDcgQEAKIAkJKnRyaWdnZXJpbmcgPSBBQ1BJX0xFVkVMX1NFTlNJVElWRTsKIAkJKnBvbGFyaXR5ID0gQUNQSV9BQ1RJVkVfTE9XOwogCQlicmVhazsKLQljYXNlIElPUkVTT1VSQ0VfSVJRX0hJR0hMRVZFTDoJCisJY2FzZSBJT1JFU09VUkNFX0lSUV9ISUdITEVWRUw6CiAJCSp0cmlnZ2VyaW5nID0gQUNQSV9MRVZFTF9TRU5TSVRJVkU7CiAJCSpwb2xhcml0eSA9IEFDUElfQUNUSVZFX0hJR0g7CiAJCWJyZWFrOwpAQCAtNzMsNyArNzMsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfaXJxcmVzb3VyY2Uoc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqIHJlcywgdTMyIGdzaSwKK3BucGFjcGlfcGFyc2VfYWxsb2NhdGVkX2lycXJlc291cmNlKHN0cnVjdCBwbnBfcmVzb3VyY2VfdGFibGUgKnJlcywgdTMyIGdzaSwKIAlpbnQgdHJpZ2dlcmluZywgaW50IHBvbGFyaXR5KQogewogCWludCBpID0gMDsKQEAgLTEwMSw3ICsxMDEsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfZG1hcmVzb3VyY2Uoc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqIHJlcywgdTMyIGRtYSkKK3BucGFjcGlfcGFyc2VfYWxsb2NhdGVkX2RtYXJlc291cmNlKHN0cnVjdCBwbnBfcmVzb3VyY2VfdGFibGUgKnJlcywgdTMyIGRtYSkKIHsKIAlpbnQgaSA9IDA7CiAJd2hpbGUgKGkgPCBQTlBfTUFYX0RNQSAmJgpAQCAtMTE5LDggKzExOSw4IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1wbnBhY3BpX3BhcnNlX2FsbG9jYXRlZF9pb3Jlc291cmNlKHN0cnVjdCBwbnBfcmVzb3VyY2VfdGFibGUgKiByZXMsCi0JdTMyIGlvLCB1MzIgbGVuKQorcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfaW9yZXNvdXJjZShzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICpyZXMsCisJdTY0IGlvLCB1NjQgbGVuKQogewogCWludCBpID0gMDsKIAl3aGlsZSAoIShyZXMtPnBvcnRfcmVzb3VyY2VbaV0uZmxhZ3MgJiBJT1JFU09VUkNFX1VOU0VUKSAmJgpAQCAtMTM4LDcgKzEzOCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1wbnBhY3BpX3BhcnNlX2FsbG9jYXRlZF9tZW1yZXNvdXJjZShzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICogcmVzLAorcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfbWVtcmVzb3VyY2Uoc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqcmVzLAogCXU2NCBtZW0sIHU2NCBsZW4pCiB7CiAJaW50IGkgPSAwOwpAQCAtMTU2LDExICsxNTYsMzIgQEAKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitwbnBhY3BpX3BhcnNlX2FsbG9jYXRlZF9hZGRyZXNzX3NwYWNlKHN0cnVjdCBwbnBfcmVzb3VyY2VfdGFibGUgKnJlc190YWJsZSwKKwlzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzKQoreworCXN0cnVjdCBhY3BpX3Jlc291cmNlX2FkZHJlc3M2NCBhZGRyLCAqcCA9ICZhZGRyOworCWFjcGlfc3RhdHVzIHN0YXR1czsKKworCXN0YXR1cyA9IGFjcGlfcmVzb3VyY2VfdG9fYWRkcmVzczY0KHJlcywgcCk7CisJaWYgKCFBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgeworCQlwbnBfd2FybigiUG5QQUNQSTogZmFpbGVkIHRvIGNvbnZlcnQgcmVzb3VyY2UgdHlwZSAlZCIsCisJCQlyZXMtPnR5cGUpOworCQlyZXR1cm47CisJfQorCisJaWYgKHAtPnJlc291cmNlX3R5cGUgPT0gQUNQSV9NRU1PUllfUkFOR0UpCisJCXBucGFjcGlfcGFyc2VfYWxsb2NhdGVkX21lbXJlc291cmNlKHJlc190YWJsZSwKKwkJCQlwLT5taW5pbXVtLCBwLT5hZGRyZXNzX2xlbmd0aCk7CisJZWxzZSBpZiAocC0+cmVzb3VyY2VfdHlwZSA9PSBBQ1BJX0lPX1JBTkdFKQorCQlwbnBhY3BpX3BhcnNlX2FsbG9jYXRlZF9pb3Jlc291cmNlKHJlc190YWJsZSwKKwkJCQlwLT5taW5pbXVtLCBwLT5hZGRyZXNzX2xlbmd0aCk7Cit9CiAKIHN0YXRpYyBhY3BpX3N0YXR1cyBwbnBhY3BpX2FsbG9jYXRlZF9yZXNvdXJjZShzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzLAogCXZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqIHJlc190YWJsZSA9IChzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICopZGF0YTsKKwlzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICpyZXNfdGFibGUgPSAoc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqKWRhdGE7CiAJaW50IGk7CiAKIAlzd2l0Y2ggKHJlcy0+dHlwZSkgewpAQCAtMjIxLDE5ICsyNDIsOSBAQAogCQkJCXJlcy0+ZGF0YS5maXhlZF9tZW1vcnkzMi5hZGRyZXNzX2xlbmd0aCk7CiAJCWJyZWFrOwogCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0FERFJFU1MxNjoKLQkJcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfbWVtcmVzb3VyY2UocmVzX3RhYmxlLAotCQkJCXJlcy0+ZGF0YS5hZGRyZXNzMTYubWluaW11bSwKLQkJCQlyZXMtPmRhdGEuYWRkcmVzczE2LmFkZHJlc3NfbGVuZ3RoKTsKLQkJYnJlYWs7CiAJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfQUREUkVTUzMyOgotCQlwbnBhY3BpX3BhcnNlX2FsbG9jYXRlZF9tZW1yZXNvdXJjZShyZXNfdGFibGUsCi0JCQkJcmVzLT5kYXRhLmFkZHJlc3MzMi5taW5pbXVtLAotCQkJCXJlcy0+ZGF0YS5hZGRyZXNzMzIuYWRkcmVzc19sZW5ndGgpOwotCQlicmVhazsKIAljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9BRERSRVNTNjQ6Ci0JCXBucGFjcGlfcGFyc2VfYWxsb2NhdGVkX21lbXJlc291cmNlKHJlc190YWJsZSwKLQkJcmVzLT5kYXRhLmFkZHJlc3M2NC5taW5pbXVtLAotCQlyZXMtPmRhdGEuYWRkcmVzczY0LmFkZHJlc3NfbGVuZ3RoKTsKKwkJcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfYWRkcmVzc19zcGFjZShyZXNfdGFibGUsIHJlcyk7CiAJCWJyZWFrOwogCiAJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRVhURU5ERURfQUREUkVTUzY0OgpAQCAtMjU1LDExICsyNjYsMTEgQEAKIAkJcG5wX3dhcm4oIlBuUEFDUEk6IHVua25vd24gcmVzb3VyY2UgdHlwZSAlZCIsIHJlcy0+dHlwZSk7CiAJCXJldHVybiBBRV9FUlJPUjsKIAl9Ci0JCQkKKwogCXJldHVybiBBRV9PSzsKIH0KIAotYWNwaV9zdGF0dXMgcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfcmVzb3VyY2UoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICogcmVzKQorYWNwaV9zdGF0dXMgcG5wYWNwaV9wYXJzZV9hbGxvY2F0ZWRfcmVzb3VyY2UoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgcG5wX3Jlc291cmNlX3RhYmxlICpyZXMpCiB7CiAJLyogQmxhbmsgdGhlIHJlc291cmNlIHRhYmxlIHZhbHVlcyAqLwogCXBucF9pbml0X3Jlc291cmNlX3RhYmxlKHJlcyk7CkBAIC0zMTcsMTcgKzMyOCwxNyBAQAogCQlwbnBfZXJyKCJJbnZhbGlkIERNQSB0cmFuc2ZlciB0eXBlIik7CiAJfQogCi0JcG5wX3JlZ2lzdGVyX2RtYV9yZXNvdXJjZShvcHRpb24sZG1hKTsKKwlwbnBfcmVnaXN0ZXJfZG1hX3Jlc291cmNlKG9wdGlvbiwgZG1hKTsKIAlyZXR1cm47CiB9CiAKLQkKKwogc3RhdGljIHZvaWQgcG5wYWNwaV9wYXJzZV9pcnFfb3B0aW9uKHN0cnVjdCBwbnBfb3B0aW9uICpvcHRpb24sCiAJc3RydWN0IGFjcGlfcmVzb3VyY2VfaXJxICpwKQogewogCWludCBpOwotCXN0cnVjdCBwbnBfaXJxICogaXJxOwotCQorCXN0cnVjdCBwbnBfaXJxICppcnE7CisKIAlpZiAocC0+aW50ZXJydXB0X2NvdW50ID09IDApCiAJCXJldHVybjsKIAlpcnEgPSBrY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcG5wX2lycSksIEdGUF9LRVJORUwpOwpAQCAtMzQ3LDcgKzM1OCw3IEBACiAJc3RydWN0IGFjcGlfcmVzb3VyY2VfZXh0ZW5kZWRfaXJxICpwKQogewogCWludCBpOwotCXN0cnVjdCBwbnBfaXJxICogaXJxOworCXN0cnVjdCBwbnBfaXJxICppcnE7CiAKIAlpZiAocC0+aW50ZXJydXB0X2NvdW50ID09IDApCiAJCXJldHVybjsKQEAgLTM2OCw3ICszNzksNyBAQAogcG5wYWNwaV9wYXJzZV9wb3J0X29wdGlvbihzdHJ1Y3QgcG5wX29wdGlvbiAqb3B0aW9uLAogCXN0cnVjdCBhY3BpX3Jlc291cmNlX2lvICppbykKIHsKLQlzdHJ1Y3QgcG5wX3BvcnQgKiBwb3J0OworCXN0cnVjdCBwbnBfcG9ydCAqcG9ydDsKIAogCWlmIChpby0+YWRkcmVzc19sZW5ndGggPT0gMCkKIAkJcmV0dXJuOwpAQCAtMzgxLDcgKzM5Miw3IEBACiAJcG9ydC0+c2l6ZSA9IGlvLT5hZGRyZXNzX2xlbmd0aDsKIAlwb3J0LT5mbGFncyA9IEFDUElfREVDT0RFXzE2ID09IGlvLT5pb19kZWNvZGUgPwogCQlQTlBfUE9SVF9GTEFHXzE2QklUQUREUiA6IDA7Ci0JcG5wX3JlZ2lzdGVyX3BvcnRfcmVzb3VyY2Uob3B0aW9uLHBvcnQpOworCXBucF9yZWdpc3Rlcl9wb3J0X3Jlc291cmNlKG9wdGlvbiwgcG9ydCk7CiAJcmV0dXJuOwogfQogCkBAIC0zODksNyArNDAwLDcgQEAKIHBucGFjcGlfcGFyc2VfZml4ZWRfcG9ydF9vcHRpb24oc3RydWN0IHBucF9vcHRpb24gKm9wdGlvbiwKIAlzdHJ1Y3QgYWNwaV9yZXNvdXJjZV9maXhlZF9pbyAqaW8pCiB7Ci0Jc3RydWN0IHBucF9wb3J0ICogcG9ydDsKKwlzdHJ1Y3QgcG5wX3BvcnQgKnBvcnQ7CiAKIAlpZiAoaW8tPmFkZHJlc3NfbGVuZ3RoID09IDApCiAJCXJldHVybjsKQEAgLTQwMCw3ICs0MTEsNyBAQAogCXBvcnQtPnNpemUgPSBpby0+YWRkcmVzc19sZW5ndGg7CiAJcG9ydC0+YWxpZ24gPSAwOwogCXBvcnQtPmZsYWdzID0gUE5QX1BPUlRfRkxBR19GSVhFRDsKLQlwbnBfcmVnaXN0ZXJfcG9ydF9yZXNvdXJjZShvcHRpb24scG9ydCk7CisJcG5wX3JlZ2lzdGVyX3BvcnRfcmVzb3VyY2Uob3B0aW9uLCBwb3J0KTsKIAlyZXR1cm47CiB9CiAKQEAgLTQwOCw3ICs0MTksNyBAQAogcG5wYWNwaV9wYXJzZV9tZW0yNF9vcHRpb24oc3RydWN0IHBucF9vcHRpb24gKm9wdGlvbiwKIAlzdHJ1Y3QgYWNwaV9yZXNvdXJjZV9tZW1vcnkyNCAqcCkKIHsKLQlzdHJ1Y3QgcG5wX21lbSAqIG1lbTsKKwlzdHJ1Y3QgcG5wX21lbSAqbWVtOwogCiAJaWYgKHAtPmFkZHJlc3NfbGVuZ3RoID09IDApCiAJCXJldHVybjsKQEAgLTQyMyw3ICs0MzQsNyBAQAogCW1lbS0+ZmxhZ3MgPSAoQUNQSV9SRUFEX1dSSVRFX01FTU9SWSA9PSBwLT53cml0ZV9wcm90ZWN0KSA/CiAJCQlJT1JFU09VUkNFX01FTV9XUklURUFCTEUgOiAwOwogCi0JcG5wX3JlZ2lzdGVyX21lbV9yZXNvdXJjZShvcHRpb24sbWVtKTsKKwlwbnBfcmVnaXN0ZXJfbWVtX3Jlc291cmNlKG9wdGlvbiwgbWVtKTsKIAlyZXR1cm47CiB9CiAKQEAgLTQzMSw3ICs0NDIsNyBAQAogcG5wYWNwaV9wYXJzZV9tZW0zMl9vcHRpb24oc3RydWN0IHBucF9vcHRpb24gKm9wdGlvbiwKIAlzdHJ1Y3QgYWNwaV9yZXNvdXJjZV9tZW1vcnkzMiAqcCkKIHsKLQlzdHJ1Y3QgcG5wX21lbSAqIG1lbTsKKwlzdHJ1Y3QgcG5wX21lbSAqbWVtOwogCiAJaWYgKHAtPmFkZHJlc3NfbGVuZ3RoID09IDApCiAJCXJldHVybjsKQEAgLTQ0Niw3ICs0NTcsNyBAQAogCW1lbS0+ZmxhZ3MgPSAoQUNQSV9SRUFEX1dSSVRFX01FTU9SWSA9PSBwLT53cml0ZV9wcm90ZWN0KSA/CiAJCQlJT1JFU09VUkNFX01FTV9XUklURUFCTEUgOiAwOwogCi0JcG5wX3JlZ2lzdGVyX21lbV9yZXNvdXJjZShvcHRpb24sbWVtKTsKKwlwbnBfcmVnaXN0ZXJfbWVtX3Jlc291cmNlKG9wdGlvbiwgbWVtKTsKIAlyZXR1cm47CiB9CiAKQEAgLTQ1NCw3ICs0NjUsNyBAQAogcG5wYWNwaV9wYXJzZV9maXhlZF9tZW0zMl9vcHRpb24oc3RydWN0IHBucF9vcHRpb24gKm9wdGlvbiwKIAlzdHJ1Y3QgYWNwaV9yZXNvdXJjZV9maXhlZF9tZW1vcnkzMiAqcCkKIHsKLQlzdHJ1Y3QgcG5wX21lbSAqIG1lbTsKKwlzdHJ1Y3QgcG5wX21lbSAqbWVtOwogCiAJaWYgKHAtPmFkZHJlc3NfbGVuZ3RoID09IDApCiAJCXJldHVybjsKQEAgLTQ2OCw3ICs0NzksNyBAQAogCW1lbS0+ZmxhZ3MgPSAoQUNQSV9SRUFEX1dSSVRFX01FTU9SWSA9PSBwLT53cml0ZV9wcm90ZWN0KSA/CiAJCQlJT1JFU09VUkNFX01FTV9XUklURUFCTEUgOiAwOwogCi0JcG5wX3JlZ2lzdGVyX21lbV9yZXNvdXJjZShvcHRpb24sbWVtKTsKKwlwbnBfcmVnaXN0ZXJfbWVtX3Jlc291cmNlKG9wdGlvbiwgbWVtKTsKIAlyZXR1cm47CiB9CiAKQEAgLTQ3Nyw4ICs0ODgsOCBAQAogewogCXN0cnVjdCBhY3BpX3Jlc291cmNlX2FkZHJlc3M2NCBhZGRyLCAqcCA9ICZhZGRyOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKLQlzdHJ1Y3QgcG5wX21lbSAqIG1lbTsKLQlzdHJ1Y3QgcG5wX3BvcnQgKiBwb3J0OworCXN0cnVjdCBwbnBfbWVtICptZW07CisJc3RydWN0IHBucF9wb3J0ICpwb3J0OwogCiAJc3RhdHVzID0gYWNwaV9yZXNvdXJjZV90b19hZGRyZXNzNjQociwgcCk7CiAJaWYgKCFBQ1BJX1NVQ0NFU1Moc3RhdHVzKSkgewpAQCAtNDk4LDcgKzUwOSw3IEBACiAJCW1lbS0+YWxpZ24gPSAwOwogCQltZW0tPmZsYWdzID0gKHAtPmluZm8ubWVtLndyaXRlX3Byb3RlY3QgPT0KIAkJICAgIEFDUElfUkVBRF9XUklURV9NRU1PUlkpID8gSU9SRVNPVVJDRV9NRU1fV1JJVEVBQkxFIDogMDsKLQkJcG5wX3JlZ2lzdGVyX21lbV9yZXNvdXJjZShvcHRpb24sbWVtKTsKKwkJcG5wX3JlZ2lzdGVyX21lbV9yZXNvdXJjZShvcHRpb24sIG1lbSk7CiAJfSBlbHNlIGlmIChwLT5yZXNvdXJjZV90eXBlID09IEFDUElfSU9fUkFOR0UpIHsKIAkJcG9ydCA9IGtjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwbnBfcG9ydCksIEdGUF9LRVJORUwpOwogCQlpZiAoIXBvcnQpCkBAIC01MDcsNyArNTE4LDcgQEAKIAkJcG9ydC0+c2l6ZSA9IHAtPmFkZHJlc3NfbGVuZ3RoOwogCQlwb3J0LT5hbGlnbiA9IDA7CiAJCXBvcnQtPmZsYWdzID0gUE5QX1BPUlRfRkxBR19GSVhFRDsKLQkJcG5wX3JlZ2lzdGVyX3BvcnRfcmVzb3VyY2Uob3B0aW9uLHBvcnQpOworCQlwbnBfcmVnaXN0ZXJfcG9ydF9yZXNvdXJjZShvcHRpb24sIHBvcnQpOwogCX0KIH0KIApAQCAtNTMxLDcgKzU0Miw3IEBACiAJCQlicmVhazsKIAogCQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9ETUE6Ci0JCQlwbnBhY3BpX3BhcnNlX2RtYV9vcHRpb24ob3B0aW9uLCAmcmVzLT5kYXRhLmRtYSk7CQorCQkJcG5wYWNwaV9wYXJzZV9kbWFfb3B0aW9uKG9wdGlvbiwgJnJlcy0+ZGF0YS5kbWEpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfU1RBUlRfREVQRU5ERU5UOgpAQCAtNTM5LDcgKzU1MCw3IEBACiAJCQkJY2FzZSBBQ1BJX0dPT0RfQ09ORklHVVJBVElPTjoKIAkJCQkJcHJpb3JpdHkgPSBQTlBfUkVTX1BSSU9SSVRZX1BSRUZFUlJFRDsKIAkJCQkJYnJlYWs7Ci0JCQkJCQorCiAJCQkJY2FzZSBBQ1BJX0FDQ0VQVEFCTEVfQ09ORklHVVJBVElPTjoKIAkJCQkJcHJpb3JpdHkgPSBQTlBfUkVTX1BSSU9SSVRZX0FDQ0VQVEFCTEU7CiAJCQkJCWJyZWFrOwpAQCAtNTU1LDcgKzU2Niw3IEBACiAJCQlvcHRpb24gPSBwbnBfcmVnaXN0ZXJfZGVwZW5kZW50X29wdGlvbihkZXYsIHByaW9yaXR5KTsKIAkJCWlmICghb3B0aW9uKQogCQkJCXJldHVybiBBRV9FUlJPUjsKLQkJCXBhcnNlX2RhdGEtPm9wdGlvbiA9IG9wdGlvbjsJCisJCQlwYXJzZV9kYXRhLT5vcHRpb24gPSBvcHRpb247CiAJCQlicmVhazsKIAogCQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9FTkRfREVQRU5ERU5UOgpAQCAtNjE1LDcgKzYyNiw3IEBACiAJCQlwbnBfd2FybigiUG5QQUNQSTogdW5rbm93biByZXNvdXJjZSB0eXBlICVkIiwgcmVzLT50eXBlKTsKIAkJCXJldHVybiBBRV9FUlJPUjsKIAl9Ci0JCQkKKwogCXJldHVybiBBRV9PSzsKIH0KIApAQCAtNjM2LDYgKzY0NywyNSBAQAogCXJldHVybiBzdGF0dXM7CiB9CiAKK3N0YXRpYyBpbnQgcG5wYWNwaV9zdXBwb3J0ZWRfcmVzb3VyY2Uoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlcykKK3sKKwlzd2l0Y2ggKHJlcy0+dHlwZSkgeworCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0lSUToKKwljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9ETUE6CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfSU86CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRklYRURfSU86CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfTUVNT1JZMjQ6CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfTUVNT1JZMzI6CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRklYRURfTUVNT1JZMzI6CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfQUREUkVTUzE2OgorCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0FERFJFU1MzMjoKKwljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9BRERSRVNTNjQ6CisJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRVhURU5ERURfSVJROgorCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIC8qCiAgKiBTZXQgcmVzb3VyY2UKICAqLwpAQCAtNjQzLDU1ICs2NzMsMjAgQEAKIAl2b2lkICpkYXRhKQogewogCWludCAqcmVzX2NudCA9IChpbnQgKilkYXRhOwotCXN3aXRjaCAocmVzLT50eXBlKSB7Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfSVJROgotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0RNQToKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9JTzoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9GSVhFRF9JTzoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9NRU1PUlkyNDoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9NRU1PUlkzMjoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9GSVhFRF9NRU1PUlkzMjoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9BRERSRVNTMTY6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfQUREUkVTUzMyOgotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0FERFJFU1M2NDoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9FWFRFTkRFRF9JUlE6Ci0JCSgqcmVzX2NudCkgKys7Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfU1RBUlRfREVQRU5ERU5UOgotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0VORF9ERVBFTkRFTlQ6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfVkVORE9SOgotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0VORF9UQUc6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfR0VORVJJQ19SRUdJU1RFUjoKLQlkZWZhdWx0OgotCQlyZXR1cm4gQUVfT0s7Ci0JfQorCisJaWYgKHBucGFjcGlfc3VwcG9ydGVkX3Jlc291cmNlKHJlcykpCisJCSgqcmVzX2NudCkrKzsKIAlyZXR1cm4gQUVfT0s7CiB9CiAKLXN0YXRpYyBhY3BpX3N0YXR1cyBwbnBhY3BpX3R5cGVfcmVzb3VyY2VzKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXMsCi0Jdm9pZCAqZGF0YSkKK3N0YXRpYyBhY3BpX3N0YXR1cyBwbnBhY3BpX3R5cGVfcmVzb3VyY2VzKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXMsIHZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGFjcGlfcmVzb3VyY2UgKipyZXNvdXJjZSA9IChzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqKilkYXRhOwkKLQlzd2l0Y2ggKHJlcy0+dHlwZSkgewotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0lSUToKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9ETUE6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfSU86Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRklYRURfSU86Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfTUVNT1JZMjQ6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfTUVNT1JZMzI6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRklYRURfTUVNT1JZMzI6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfQUREUkVTUzE2OgotCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0FERFJFU1MzMjoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9BRERSRVNTNjQ6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRVhURU5ERURfSVJROgorCXN0cnVjdCBhY3BpX3Jlc291cmNlICoqcmVzb3VyY2UgPSAoc3RydWN0IGFjcGlfcmVzb3VyY2UgKiopZGF0YTsKKworCWlmIChwbnBhY3BpX3N1cHBvcnRlZF9yZXNvdXJjZShyZXMpKSB7CiAJCSgqcmVzb3VyY2UpLT50eXBlID0gcmVzLT50eXBlOworCQkoKnJlc291cmNlKS0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3Jlc291cmNlKTsKIAkJKCpyZXNvdXJjZSkrKzsKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9TVEFSVF9ERVBFTkRFTlQ6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRU5EX0RFUEVOREVOVDoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9WRU5ET1I6Ci0JY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRU5EX1RBRzoKLQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9HRU5FUklDX1JFR0lTVEVSOgotCWRlZmF1bHQ6Ci0JCXJldHVybiBBRV9PSzsKIAl9CiAKIAlyZXR1cm4gQUVfT0s7CkBAIC03MzUsMTEgKzczMCw4IEBACiAJc3RydWN0IHJlc291cmNlICpwKQogewogCWludCB0cmlnZ2VyaW5nLCBwb2xhcml0eTsKLQkKLQlkZWNvZGVfaXJxX2ZsYWdzKHAtPmZsYWdzICYgSU9SRVNPVVJDRV9CSVRTLCAmdHJpZ2dlcmluZywKLQkJJnBvbGFyaXR5KTsKLQlyZXNvdXJjZS0+dHlwZSA9IEFDUElfUkVTT1VSQ0VfVFlQRV9JUlE7Ci0JcmVzb3VyY2UtPmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSk7CisKKwlkZWNvZGVfaXJxX2ZsYWdzKHAtPmZsYWdzICYgSU9SRVNPVVJDRV9CSVRTLCAmdHJpZ2dlcmluZywgJnBvbGFyaXR5KTsKIAlyZXNvdXJjZS0+ZGF0YS5pcnEudHJpZ2dlcmluZyA9IHRyaWdnZXJpbmc7CiAJcmVzb3VyY2UtPmRhdGEuaXJxLnBvbGFyaXR5ID0gcG9sYXJpdHk7CiAJaWYgKHRyaWdnZXJpbmcgPT0gQUNQSV9FREdFX1NFTlNJVElWRSkKQEAgLTc1NCwxMSArNzQ2LDggQEAKIAlzdHJ1Y3QgcmVzb3VyY2UgKnApCiB7CiAJaW50IHRyaWdnZXJpbmcsIHBvbGFyaXR5OwotCQotCWRlY29kZV9pcnFfZmxhZ3MocC0+ZmxhZ3MgJiBJT1JFU09VUkNFX0JJVFMsICZ0cmlnZ2VyaW5nLAotCQkmcG9sYXJpdHkpOwotCXJlc291cmNlLT50eXBlID0gQUNQSV9SRVNPVVJDRV9UWVBFX0VYVEVOREVEX0lSUTsKLQlyZXNvdXJjZS0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3Jlc291cmNlKTsKKworCWRlY29kZV9pcnFfZmxhZ3MocC0+ZmxhZ3MgJiBJT1JFU09VUkNFX0JJVFMsICZ0cmlnZ2VyaW5nLCAmcG9sYXJpdHkpOwogCXJlc291cmNlLT5kYXRhLmV4dGVuZGVkX2lycS5wcm9kdWNlcl9jb25zdW1lciA9IEFDUElfQ09OU1VNRVI7CiAJcmVzb3VyY2UtPmRhdGEuZXh0ZW5kZWRfaXJxLnRyaWdnZXJpbmcgPSB0cmlnZ2VyaW5nOwogCXJlc291cmNlLT5kYXRhLmV4dGVuZGVkX2lycS5wb2xhcml0eSA9IHBvbGFyaXR5OwpAQCAtNzczLDggKzc2Miw2IEBACiBzdGF0aWMgdm9pZCBwbnBhY3BpX2VuY29kZV9kbWEoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLAogCXN0cnVjdCByZXNvdXJjZSAqcCkKIHsKLQlyZXNvdXJjZS0+dHlwZSA9IEFDUElfUkVTT1VSQ0VfVFlQRV9ETUE7Ci0JcmVzb3VyY2UtPmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSk7CiAJLyogTm90ZTogcG5wX2Fzc2lnbl9kbWEgd2lsbCBjb3B5IHBucF9kbWEtPmZsYWdzIGludG8gcC0+ZmxhZ3MgKi8KIAlpZiAocC0+ZmxhZ3MgJiBJT1JFU09VUkNFX0RNQV9DT01QQVRJQkxFKQogCQlyZXNvdXJjZS0+ZGF0YS5kbWEudHlwZSA9IEFDUElfQ09NUEFUSUJJTElUWTsKQEAgLTc5OCw4ICs3ODUsNiBAQAogc3RhdGljIHZvaWQgcG5wYWNwaV9lbmNvZGVfaW8oc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLAogCXN0cnVjdCByZXNvdXJjZSAqcCkKIHsKLQlyZXNvdXJjZS0+dHlwZSA9IEFDUElfUkVTT1VSQ0VfVFlQRV9JTzsKLQlyZXNvdXJjZS0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3Jlc291cmNlKTsKIAkvKiBOb3RlOiBwbnBfYXNzaWduX3BvcnQgd2lsbCBjb3B5IHBucF9wb3J0LT5mbGFncyBpbnRvIHAtPmZsYWdzICovCiAJcmVzb3VyY2UtPmRhdGEuaW8uaW9fZGVjb2RlID0gKHAtPmZsYWdzICYgUE5QX1BPUlRfRkxBR18xNkJJVEFERFIpPwogCQlBQ1BJX0RFQ09ERV8xNiA6IEFDUElfREVDT0RFXzEwOwpAQCAtODEyLDggKzc5Nyw2IEBACiBzdGF0aWMgdm9pZCBwbnBhY3BpX2VuY29kZV9maXhlZF9pbyhzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzb3VyY2UsCiAJc3RydWN0IHJlc291cmNlICpwKQogewotCXJlc291cmNlLT50eXBlID0gQUNQSV9SRVNPVVJDRV9UWVBFX0ZJWEVEX0lPOwotCXJlc291cmNlLT5sZW5ndGggPSBzaXplb2Yoc3RydWN0IGFjcGlfcmVzb3VyY2UpOwogCXJlc291cmNlLT5kYXRhLmZpeGVkX2lvLmFkZHJlc3MgPSBwLT5zdGFydDsKIAlyZXNvdXJjZS0+ZGF0YS5maXhlZF9pby5hZGRyZXNzX2xlbmd0aCA9IHAtPmVuZCAtIHAtPnN0YXJ0ICsgMTsKIH0KQEAgLTgyMSw4ICs4MDQsNiBAQAogc3RhdGljIHZvaWQgcG5wYWNwaV9lbmNvZGVfbWVtMjQoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLAogCXN0cnVjdCByZXNvdXJjZSAqcCkKIHsKLQlyZXNvdXJjZS0+dHlwZSA9IEFDUElfUkVTT1VSQ0VfVFlQRV9NRU1PUlkyNDsKLQlyZXNvdXJjZS0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3Jlc291cmNlKTsKIAkvKiBOb3RlOiBwbnBfYXNzaWduX21lbSB3aWxsIGNvcHkgcG5wX21lbS0+ZmxhZ3MgaW50byBwLT5mbGFncyAqLwogCXJlc291cmNlLT5kYXRhLm1lbW9yeTI0LndyaXRlX3Byb3RlY3QgPQogCQkocC0+ZmxhZ3MgJiBJT1JFU09VUkNFX01FTV9XUklURUFCTEUpID8KQEAgLTgzNiw4ICs4MTcsNiBAQAogc3RhdGljIHZvaWQgcG5wYWNwaV9lbmNvZGVfbWVtMzIoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLAogCXN0cnVjdCByZXNvdXJjZSAqcCkKIHsKLQlyZXNvdXJjZS0+dHlwZSA9IEFDUElfUkVTT1VSQ0VfVFlQRV9NRU1PUlkzMjsKLQlyZXNvdXJjZS0+bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3Jlc291cmNlKTsKIAlyZXNvdXJjZS0+ZGF0YS5tZW1vcnkzMi53cml0ZV9wcm90ZWN0ID0KIAkJKHAtPmZsYWdzICYgSU9SRVNPVVJDRV9NRU1fV1JJVEVBQkxFKSA/CiAJCUFDUElfUkVBRF9XUklURV9NRU1PUlkgOiBBQ1BJX1JFQURfT05MWV9NRU1PUlk7CkBAIC04NTAsOCArODI5LDYgQEAKIHN0YXRpYyB2b2lkIHBucGFjcGlfZW5jb2RlX2ZpeGVkX21lbTMyKHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXNvdXJjZSwKIAlzdHJ1Y3QgcmVzb3VyY2UgKnApCiB7Ci0JcmVzb3VyY2UtPnR5cGUgPSBBQ1BJX1JFU09VUkNFX1RZUEVfRklYRURfTUVNT1JZMzI7Ci0JcmVzb3VyY2UtPmxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9yZXNvdXJjZSk7CiAJcmVzb3VyY2UtPmRhdGEuZml4ZWRfbWVtb3J5MzIud3JpdGVfcHJvdGVjdCA9CiAJCShwLT5mbGFncyAmIElPUkVTT1VSQ0VfTUVNX1dSSVRFQUJMRSkgPwogCQlBQ1BJX1JFQURfV1JJVEVfTUVNT1JZIDogQUNQSV9SRUFEX09OTFlfTUVNT1JZOwpAQCAtODgyLDM3ICs4NTksMzcgQEAKIAkJCXBucF9kYmcoIkVuY29kZSBkbWEiKTsKIAkJCXBucGFjcGlfZW5jb2RlX2RtYShyZXNvdXJjZSwKIAkJCQkmcmVzX3RhYmxlLT5kbWFfcmVzb3VyY2VbZG1hXSk7Ci0JCQlkbWEgKys7CisJCQlkbWErKzsKIAkJCWJyZWFrOwogCQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9JTzoKIAkJCXBucF9kYmcoIkVuY29kZSBpbyIpOwogCQkJcG5wYWNwaV9lbmNvZGVfaW8ocmVzb3VyY2UsCiAJCQkJJnJlc190YWJsZS0+cG9ydF9yZXNvdXJjZVtwb3J0XSk7Ci0JCQlwb3J0ICsrOworCQkJcG9ydCsrOwogCQkJYnJlYWs7CiAJCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX0ZJWEVEX0lPOgogCQkJcG5wX2RiZygiRW5jb2RlIGZpeGVkIGlvIik7CiAJCQlwbnBhY3BpX2VuY29kZV9maXhlZF9pbyhyZXNvdXJjZSwKIAkJCQkmcmVzX3RhYmxlLT5wb3J0X3Jlc291cmNlW3BvcnRdKTsKLQkJCXBvcnQgKys7CisJCQlwb3J0Kys7CiAJCQlicmVhazsKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfTUVNT1JZMjQ6CiAJCQlwbnBfZGJnKCJFbmNvZGUgbWVtMjQiKTsKIAkJCXBucGFjcGlfZW5jb2RlX21lbTI0KHJlc291cmNlLAogCQkJCSZyZXNfdGFibGUtPm1lbV9yZXNvdXJjZVttZW1dKTsKLQkJCW1lbSArKzsKKwkJCW1lbSsrOwogCQkJYnJlYWs7CiAJCWNhc2UgQUNQSV9SRVNPVVJDRV9UWVBFX01FTU9SWTMyOgogCQkJcG5wX2RiZygiRW5jb2RlIG1lbTMyIik7CiAJCQlwbnBhY3BpX2VuY29kZV9tZW0zMihyZXNvdXJjZSwKIAkJCQkmcmVzX3RhYmxlLT5tZW1fcmVzb3VyY2VbbWVtXSk7Ci0JCQltZW0gKys7CisJCQltZW0rKzsKIAkJCWJyZWFrOwogCQljYXNlIEFDUElfUkVTT1VSQ0VfVFlQRV9GSVhFRF9NRU1PUlkzMjoKIAkJCXBucF9kYmcoIkVuY29kZSBmaXhlZCBtZW0zMiIpOwogCQkJcG5wYWNwaV9lbmNvZGVfZml4ZWRfbWVtMzIocmVzb3VyY2UsCiAJCQkJJnJlc190YWJsZS0+bWVtX3Jlc291cmNlW21lbV0pOwotCQkJbWVtICsrOworCQkJbWVtKys7CiAJCQlicmVhazsKIAkJY2FzZSBBQ1BJX1JFU09VUkNFX1RZUEVfRVhURU5ERURfSVJROgogCQkJcG5wX2RiZygiRW5jb2RlIGV4dCBpcnEiKTsKQEAgLTkzMyw4ICs5MTAsOCBAQAogCQkJcG5wX3dhcm4oInVua25vd24gcmVzb3VyY2UgdHlwZSAlZCIsIHJlc291cmNlLT50eXBlKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9Ci0JCXJlc291cmNlICsrOwotCQlpICsrOworCQlyZXNvdXJjZSsrOworCQlpKys7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2VkZHAuYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9lZGRwLmMKaW5kZXggMGJhYjYwYS4uMzhhYWQ4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2VkZHAuYworKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfZWRkcC5jCkBAIC00MjAsNyArNDIwLDcgQEAKICAgICAgICB9CiAJdGNwaCA9IGVkZHAtPnNrYi0+aC50aDsKIAl3aGlsZSAoZWRkcC0+c2tiX29mZnNldCA8IGVkZHAtPnNrYi0+bGVuKSB7Ci0JCWRhdGFfbGVuID0gbWluKChpbnQpc2tiX3NoaW5mbyhlZGRwLT5za2IpLT50c29fc2l6ZSwKKwkJZGF0YV9sZW4gPSBtaW4oKGludClza2Jfc2hpbmZvKGVkZHAtPnNrYiktPmdzb19zaXplLAogCQkJICAgICAgIChpbnQpKGVkZHAtPnNrYi0+bGVuIC0gZWRkcC0+c2tiX29mZnNldCkpOwogCQkvKiBwcmVwYXJlIHFkaW8gaGRyICovCiAJCWlmIChlZGRwLT5xaC5oZHIubDIuaWQgPT0gUUVUSF9IRUFERVJfVFlQRV9MQVlFUjIpewpAQCAtNTE1LDIwICs1MTUsMjAgQEAKIAogCVFFVEhfREJGX1RFWFQodHJhY2UsIDUsICJlZGRwY2FucCIpOwogCS8qIGNhbiB3ZSBwdXQgbXVsdGlwbGUgc2ticyBpbiBvbmUgcGFnZT8gKi8KLQlza2JzX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gKHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUgKyBoZHJfbGVuKTsKKwlza2JzX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgKyBoZHJfbGVuKTsKIAlpZiAoc2tic19wZXJfcGFnZSA+IDEpewotCQljdHgtPm51bV9wYWdlcyA9IChza2Jfc2hpbmZvKHNrYiktPnRzb19zZWdzICsgMSkgLworCQljdHgtPm51bV9wYWdlcyA9IChza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzICsgMSkgLwogCQkJCSBza2JzX3Blcl9wYWdlICsgMTsKIAkJY3R4LT5lbGVtZW50c19wZXJfc2tiID0gMTsKIAl9IGVsc2UgewogCQkvKiBubyAtPiBob3cgbWFueSBlbGVtZW50cyBwZXIgc2tiPyAqLwotCQljdHgtPmVsZW1lbnRzX3Blcl9za2IgPSAoc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSArIGhkcl9sZW4gKworCQljdHgtPmVsZW1lbnRzX3Blcl9za2IgPSAoc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSArIGhkcl9sZW4gKwogCQkJCSAgICAgUEFHRV9TSVpFKSA+PiBQQUdFX1NISUZUOwogCQljdHgtPm51bV9wYWdlcyA9IGN0eC0+ZWxlbWVudHNfcGVyX3NrYiAqCi0JCQkJIChza2Jfc2hpbmZvKHNrYiktPnRzb19zZWdzICsgMSk7CisJCQkJIChza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzICsgMSk7CiAJfQogCWN0eC0+bnVtX2VsZW1lbnRzID0gY3R4LT5lbGVtZW50c19wZXJfc2tiICoKLQkJCSAgICAoc2tiX3NoaW5mbyhza2IpLT50c29fc2VncyArIDEpOworCQkJICAgIChza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzICsgMSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHFldGhfZWRkcF9jb250ZXh0ICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfbWFpbi5jCmluZGV4IDllNjcxYTQuLjU2MDA5ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9tYWluLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX21haW4uYwpAQCAtNDQxNyw3ICs0NDE3LDcgQEAKIAlzdHJ1Y3QgcWV0aF9lZGRwX2NvbnRleHQgKmN0eCA9IE5VTEw7CiAJaW50IHR4X2J5dGVzID0gc2tiLT5sZW47CiAJdW5zaWduZWQgc2hvcnQgbnJfZnJhZ3MgPSBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzOwotCXVuc2lnbmVkIHNob3J0IHRzb19zaXplID0gc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZTsKKwl1bnNpZ25lZCBzaG9ydCB0c29fc2l6ZSA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemU7CiAJaW50IHJjOwogCiAJUUVUSF9EQkZfVEVYVCh0cmFjZSwgNiwgInNlbmRwa3QiKTsKQEAgLTQ0NTMsNyArNDQ1Myw3IEBACiAJcXVldWUgPSBjYXJkLT5xZGlvLm91dF9xcwogCQlbcWV0aF9nZXRfcHJpb3JpdHlfcXVldWUoY2FyZCwgc2tiLCBpcHYsIGNhc3RfdHlwZSldOwogCi0JaWYgKHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUpCisJaWYgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCiAJCWxhcmdlX3NlbmQgPSBjYXJkLT5vcHRpb25zLmxhcmdlX3NlbmQ7CiAKIAkvKmFyZSB3ZSBhYmxlIHRvIGRvIFRTTyA/IElmIHNvICxwcmVwYXJlIGFuZCBzZW5kIGl0IGZyb20gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX3Rzby5oIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX3Rzby5oCmluZGV4IDI0ZWY0MGMuLjU5M2YyOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF90c28uaAorKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfdHNvLmgKQEAgLTUxLDcgKzUxLDcgQEAKIAloZHItPmV4dC5oZHJfdmVyc2lvbiA9IDE7CiAJaGRyLT5leHQuaGRyX2xlbiAgICAgPSAyODsKIAkvKmluc2VydCBub24tZml4IHZhbHVlcyAqLwotCWhkci0+ZXh0Lm1zcyA9IHNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemU7CisJaGRyLT5leHQubXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKIAloZHItPmV4dC5kZ19oZHJfbGVuID0gKF9fdTE2KShpcGgtPmlobCo0ICsgdGNwaC0+ZG9mZio0KTsKIAloZHItPmV4dC5wYXlsb2FkX2xlbiA9IChfX3UxNikoc2tiLT5sZW4gLSBoZHItPmV4dC5kZ19oZHJfbGVuIC0KIAkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBxZXRoX2hkcl90c28pKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfYXV4LmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2F1eC5jCmluZGV4IDM5NWNmYzYuLjljZDc4OWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfYXV4LmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9hdXguYwpAQCAtMSwxOCArMSw4IEBACiAvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHpmY3AgZGV2aWNlIGRyaXZlciBmb3IKKyAqIEZDUCBhZGFwdGVycyBmb3IgSUJNIFN5c3RlbSB6OSBhbmQgelNlcmllcy4KICAqCi0gKiBsaW51eC9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2F1eC5jCi0gKgotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzCi0gKgotICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNAotICoKLSAqIEF1dGhvcihzKTogTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+Ci0gKiAgICAgICAgICAgIFJhaW11bmQgU2Nocm9lZGVyIDxyYWltdW5kLnNjaHJvZWRlckBkZS5pYm0uY29tPgotICogICAgICAgICAgICBBcm9uIFplaAotICogICAgICAgICAgICBXb2xmZ2FuZyBUYXBob3JuCi0gKiAgICAgICAgICAgIFN0ZWZhbiBCYWRlciA8c3RlZmFuLmJhZGVyQGRlLmlibS5jb20+Ci0gKiAgICAgICAgICAgIEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgotICogICAgICAgICAgICBBbmRyZWFzIEhlcnJtYW5uIDxhaGVycm1hbkBkZS5pYm0uY29tPgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjksNiArMTksMjAgQEAKICAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgogICovCiAKKy8qCisgKiBEcml2ZXIgYXV0aG9yczoKKyAqICAgICAgICAgICAgTWFydGluIFBlc2Noa2UgKG9yaWdpbmF0b3Igb2YgdGhlIGRyaXZlcikKKyAqICAgICAgICAgICAgUmFpbXVuZCBTY2hyb2VkZXIKKyAqICAgICAgICAgICAgQXJvbiBaZWgKKyAqICAgICAgICAgICAgV29sZmdhbmcgVGFwaG9ybgorICogICAgICAgICAgICBTdGVmYW4gQmFkZXIKKyAqICAgICAgICAgICAgSGVpa28gQ2Fyc3RlbnMgKGtlcm5lbCAyLjYgcG9ydCBvZiB0aGUgZHJpdmVyKQorICogICAgICAgICAgICBBbmRyZWFzIEhlcnJtYW5uCisgKiAgICAgICAgICAgIE1heGltIFNoY2hldHluaW4KKyAqICAgICAgICAgICAgVm9sa2VyIFNhbWVza2UKKyAqICAgICAgICAgICAgUmFscGggV3VlcnRobmVyCisgKi8KKwogI2luY2x1ZGUgInpmY3BfZXh0LmgiCiAKIC8qIGFjY3VtdWxhdGVkIGxvZyBsZXZlbCAobW9kdWxlIHBhcmFtZXRlcikgKi8KQEAgLTc1LDE1ICs3OSw5IEBACiAvKiBkZWNsYXJlIGRyaXZlciBtb2R1bGUgaW5pdC9jbGVhbnVwIGZ1bmN0aW9ucyAqLwogbW9kdWxlX2luaXQoemZjcF9tb2R1bGVfaW5pdCk7CiAKLU1PRFVMRV9BVVRIT1IoIkhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPiwgIgotCSAgICAgICJBbmRyZWFzIEhlcnJtYW4gPGFoZXJybWFuQGRlLmlibS5jb20+LCAiCi0JICAgICAgIk1hcnRpbiBQZXNjaGtlIDxtcGVzY2hrZUBkZS5pYm0uY29tPiwgIgotCSAgICAgICJSYWltdW5kIFNjaHJvZWRlciA8cmFpbXVuZC5zY2hyb2VkZXJAZGUuaWJtLmNvbT4sICIKLQkgICAgICAiV29sZmdhbmcgVGFwaG9ybiA8dGFwaG9ybkBkZS5pYm0uY29tPiwgIgotCSAgICAgICJBcm9uIFplaCA8YXJ6ZWhAZGUuaWJtLmNvbT4sICIKLQkgICAgICAiSUJNIERldXRzY2hsYW5kIEVudHdpY2tsdW5nIEdtYkgiKTsKK01PRFVMRV9BVVRIT1IoIklCTSBEZXV0c2NobGFuZCBFbnR3aWNrbHVuZyBHbWJIIC0gbGludXgzOTBAZGUuaWJtLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OCi0gICAgKCJGQ1AgKFNDU0kgb3ZlciBGaWJyZSBDaGFubmVsKSBIQkEgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzIik7CisgICAgKCJGQ1AgKFNDU0kgb3ZlciBGaWJyZSBDaGFubmVsKSBIQkEgZHJpdmVyIGZvciBJQk0gU3lzdGVtIHo5IGFuZCB6U2VyaWVzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKIG1vZHVsZV9wYXJhbShkZXZpY2UsIGNoYXJwLCAwNDAwKTsKQEAgLTI5MSwxMiArMjg5LDExIEBACiAJCWdvdG8gb3V0OwogCX0KIAotCXNnX2xpc3QgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgemZjcF9zZ19saXN0KSwgR0ZQX0tFUk5FTCk7CisJc2dfbGlzdCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB6ZmNwX3NnX2xpc3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoc2dfbGlzdCA9PSBOVUxMKSB7CiAJCXJldHZhbCA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwogCX0KLQltZW1zZXQoc2dfbGlzdCwgMCwgc2l6ZW9mKCpzZ19saXN0KSk7CiAKIAlpZiAoY29tbWFuZCAhPSBaRkNQX0NGRENfSU9DKSB7CiAJCVpGQ1BfTE9HX0lORk8oIklPQyByZXF1ZXN0IGNvZGUgMHgleCBpbnZhbGlkXG4iLCBjb21tYW5kKTsKQEAgLTQ3OCwxNCArNDc1LDEzIEBACiAJc2dfbGlzdC0+Y291bnQgPSBzaXplID4+IFBBR0VfU0hJRlQ7CiAJaWYgKHNpemUgJiB+UEFHRV9NQVNLKQogCQlzZ19saXN0LT5jb3VudCsrOwotCXNnX2xpc3QtPnNnID0ga21hbGxvYyhzZ19saXN0LT5jb3VudCAqIHNpemVvZihzdHJ1Y3Qgc2NhdHRlcmxpc3QpLAorCXNnX2xpc3QtPnNnID0ga2NhbGxvYyhzZ19saXN0LT5jb3VudCwgc2l6ZW9mKHN0cnVjdCBzY2F0dGVybGlzdCksCiAJCQkgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoc2dfbGlzdC0+c2cgPT0gTlVMTCkgewogCQlzZ19saXN0LT5jb3VudCA9IDA7CiAJCXJldHZhbCA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwogCX0KLQltZW1zZXQoc2dfbGlzdC0+c2csIDAsIHNnX2xpc3QtPmNvdW50ICogc2l6ZW9mKHN0cnVjdCBzY2F0dGVybGlzdCkpOwogCiAJZm9yIChpID0gMCwgc2cgPSBzZ19saXN0LT5zZzsgaSA8IHNnX2xpc3QtPmNvdW50OyBpKyssIHNnKyspIHsKIAkJc2ctPmxlbmd0aCA9IG1pbihzaXplLCBQQUdFX1NJWkUpOwpAQCAtNzQ0LDcgKzc0MCw3IEBACiB6ZmNwX3VuaXRfZW5xdWV1ZShzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0LCBmY3BfbHVuX3QgZmNwX2x1bikKIHsKIAlzdHJ1Y3QgemZjcF91bml0ICp1bml0LCAqdG1wX3VuaXQ7Ci0Jc2NzaV9sdW5fdCBzY3NpX2x1bjsKKwl1bnNpZ25lZCBpbnQgc2NzaV9sdW47CiAJaW50IGZvdW5kOwogCiAJLyoKQEAgLTc1OCwxMCArNzU0LDkgQEAKIAlpZiAodW5pdCkKIAkJcmV0dXJuIE5VTEw7CiAKLQl1bml0ID0ga21hbGxvYyhzaXplb2YgKHN0cnVjdCB6ZmNwX3VuaXQpLCBHRlBfS0VSTkVMKTsKKwl1bml0ID0ga3phbGxvYyhzaXplb2YgKHN0cnVjdCB6ZmNwX3VuaXQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXVuaXQpCiAJCXJldHVybiBOVUxMOwotCW1lbXNldCh1bml0LCAwLCBzaXplb2YgKHN0cnVjdCB6ZmNwX3VuaXQpKTsKIAogCS8qIGluaXRpYWxpc2UgcmVmZXJlbmNlIGNvdW50IHN0dWZmICovCiAJYXRvbWljX3NldCgmdW5pdC0+cmVmY291bnQsIDApOwpAQCAtOTI5LDEzICs5MjQsMTIgQEAKIAkgKi8KIAogCS8qIHRyeSB0byBhbGxvY2F0ZSBuZXcgYWRhcHRlciBkYXRhIHN0cnVjdHVyZSAoemVyb2VkKSAqLwotCWFkYXB0ZXIgPSBrbWFsbG9jKHNpemVvZiAoc3RydWN0IHpmY3BfYWRhcHRlciksIEdGUF9LRVJORUwpOworCWFkYXB0ZXIgPSBremFsbG9jKHNpemVvZiAoc3RydWN0IHpmY3BfYWRhcHRlciksIEdGUF9LRVJORUwpOwogCWlmICghYWRhcHRlcikgewogCQlaRkNQX0xPR19JTkZPKCJlcnJvcjogYWxsb2NhdGlvbiBvZiBiYXNlIGFkYXB0ZXIgIgogCQkJICAgICAgInN0cnVjdHVyZSBmYWlsZWRcbiIpOwogCQlnb3RvIG91dDsKIAl9Ci0JbWVtc2V0KGFkYXB0ZXIsIDAsIHNpemVvZiAoc3RydWN0IHpmY3BfYWRhcHRlcikpOwogCiAJY2N3X2RldmljZS0+aGFuZGxlciA9IE5VTEw7CiAKQEAgLTk5NywxMiArOTkxLDYgQEAKIAkvKiBpbnRpdGlhbGlzZSBTQ1NJIEVSIHRpbWVyICovCiAJaW5pdF90aW1lcigmYWRhcHRlci0+c2NzaV9lcl90aW1lcik7CiAKLQkvKiBzZXQgRkMgc2VydmljZSBjbGFzcyB1c2VkIHBlciBkZWZhdWx0ICovCi0JYWRhcHRlci0+ZmNfc2VydmljZV9jbGFzcyA9IFpGQ1BfRkNfU0VSVklDRV9DTEFTU19ERUZBVUxUOwotCi0Jc3ByaW50ZihhZGFwdGVyLT5uYW1lLCAiJXMiLCB6ZmNwX2dldF9idXNpZF9ieV9hZGFwdGVyKGFkYXB0ZXIpKTsKLQlBU0NFQkMoYWRhcHRlci0+bmFtZSwgc3RybGVuKGFkYXB0ZXItPm5hbWUpKTsKLQogCS8qIG1hcmsgYWRhcHRlciB1bnVzYWJsZSBhcyBsb25nIGFzIHN5c2ZzIHJlZ2lzdHJhdGlvbiBpcyBub3QgY29tcGxldGUgKi8KIAlhdG9taWNfc2V0X21hc2soWkZDUF9TVEFUVVNfQ09NTU9OX1JFTU9WRSwgJmFkYXB0ZXItPnN0YXR1cyk7CiAKQEAgLTExMzksMTAgKzExMjcsOSBAQAogCQkJcmV0dXJuIE5VTEw7CiAJfQogCi0JcG9ydCA9IGttYWxsb2Moc2l6ZW9mIChzdHJ1Y3QgemZjcF9wb3J0KSwgR0ZQX0tFUk5FTCk7CisJcG9ydCA9IGt6YWxsb2Moc2l6ZW9mIChzdHJ1Y3QgemZjcF9wb3J0KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwb3J0KQogCQlyZXR1cm4gTlVMTDsKLQltZW1zZXQocG9ydCwgMCwgc2l6ZW9mIChzdHJ1Y3QgemZjcF9wb3J0KSk7CiAKIAkvKiBpbml0aWFsaXNlIHJlZmVyZW5jZSBjb3VudCBzdHVmZiAqLwogCWF0b21pY19zZXQoJnBvcnQtPnJlZmNvdW50LCAwKTsKQEAgLTEzNTQsMTggKzEzNDEsMTkgQEAKIHpmY3BfZnNmX2luY29taW5nX2Vsc19wbG9naShzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyLAogCQkJICAgIHN0cnVjdCBmc2Zfc3RhdHVzX3JlYWRfYnVmZmVyICpzdGF0dXNfYnVmZmVyKQogewotCWxvZ2kgKmVsc19sb2dpID0gKGxvZ2kgKikgc3RhdHVzX2J1ZmZlci0+cGF5bG9hZDsKKwlzdHJ1Y3QgZnNmX3Bsb2dpICplbHNfcGxvZ2k7CiAJc3RydWN0IHpmY3BfcG9ydCAqcG9ydDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJZWxzX3Bsb2dpID0gKHN0cnVjdCBmc2ZfcGxvZ2kgKikgc3RhdHVzX2J1ZmZlci0+cGF5bG9hZDsKIAlyZWFkX2xvY2tfaXJxc2F2ZSgmemZjcF9kYXRhLmNvbmZpZ19sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3J0LCAmYWRhcHRlci0+cG9ydF9saXN0X2hlYWQsIGxpc3QpIHsKLQkJaWYgKHBvcnQtPnd3cG4gPT0gKCood3duX3QgKikgJiBlbHNfbG9naS0+bnBvcnRfd3duKSkKKwkJaWYgKHBvcnQtPnd3cG4gPT0gKCood3duX3QgKikgJmVsc19wbG9naS0+c2Vydl9wYXJhbS53d3BuKSkKIAkJCWJyZWFrOwogCX0KIAlyZWFkX3VubG9ja19pcnFyZXN0b3JlKCZ6ZmNwX2RhdGEuY29uZmlnX2xvY2ssIGZsYWdzKTsKIAotCWlmICghcG9ydCB8fCAocG9ydC0+d3dwbiAhPSAoKih3d25fdCAqKSAmIGVsc19sb2dpLT5ucG9ydF93d24pKSkgeworCWlmICghcG9ydCB8fCAocG9ydC0+d3dwbiAhPSAoKih3d25fdCAqKSAmZWxzX3Bsb2dpLT5zZXJ2X3BhcmFtLnd3cG4pKSkgewogCQlaRkNQX0xPR19ERUJVRygiaWdub3JlZCBpbmNvbWluZyBQTE9HSSBmb3Igbm9uZXhpc3RpbmcgcG9ydCAiCiAJCQkgICAgICAgIndpdGggZF9pZCAweCUwOHggb24gYWRhcHRlciAlc1xuIiwKIAkJCSAgICAgICBzdGF0dXNfYnVmZmVyLT5kX2lkLApAQCAtMTc2MCw0ICsxNzQ4LDI1IEBACiAJcmV0dXJuIHJldDsKIH0KIAorLyoqCisgKiB6ZmNwX3Bsb2dpX2V2YWx1YXRlIC0gZXZhbHVhdGUgUExPR0kgcGxheWxvYWQgYW5kIGNvcHkgaW1wb3J0YW50IGZpZWxkcworICogaW50byB6ZmNwX3BvcnQgc3RydWN0dXJlCisgKiBAcG9ydDogemZjcF9wb3J0IHN0cnVjdHVyZQorICogQHBsb2dpOiBwbG9naSBwYXlsb2FkCisgKi8KK3ZvaWQKK3pmY3BfcGxvZ2lfZXZhbHVhdGUoc3RydWN0IHpmY3BfcG9ydCAqcG9ydCwgc3RydWN0IGZzZl9wbG9naSAqcGxvZ2kpCit7CisJcG9ydC0+bWF4ZnJhbWVfc2l6ZSA9IHBsb2dpLT5zZXJ2X3BhcmFtLmNvbW1vbl9zZXJ2X3BhcmFtWzddIHwKKwkJKChwbG9naS0+c2Vydl9wYXJhbS5jb21tb25fc2Vydl9wYXJhbVs2XSAmIDB4MEYpIDw8IDgpOworCWlmIChwbG9naS0+c2Vydl9wYXJhbS5jbGFzczFfc2Vydl9wYXJhbVswXSAmIDB4ODApCisJCXBvcnQtPnN1cHBvcnRlZF9jbGFzc2VzIHw9IEZDX0NPU19DTEFTUzE7CisJaWYgKHBsb2dpLT5zZXJ2X3BhcmFtLmNsYXNzMl9zZXJ2X3BhcmFtWzBdICYgMHg4MCkKKwkJcG9ydC0+c3VwcG9ydGVkX2NsYXNzZXMgfD0gRkNfQ09TX0NMQVNTMjsKKwlpZiAocGxvZ2ktPnNlcnZfcGFyYW0uY2xhc3MzX3NlcnZfcGFyYW1bMF0gJiAweDgwKQorCQlwb3J0LT5zdXBwb3J0ZWRfY2xhc3NlcyB8PSBGQ19DT1NfQ0xBU1MzOworCWlmIChwbG9naS0+c2Vydl9wYXJhbS5jbGFzczRfc2Vydl9wYXJhbVswXSAmIDB4ODApCisJCXBvcnQtPnN1cHBvcnRlZF9jbGFzc2VzIHw9IEZDX0NPU19DTEFTUzQ7Cit9CisKICN1bmRlZiBaRkNQX0xPR19BUkVBCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2Njdy5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9jY3cuYwppbmRleCAyNDExMzZkLi41N2Q4ZTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2Njdy5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfY2N3LmMKQEAgLTEsMTYgKzEsOCBAQAogLyoKLSAqIGxpbnV4L2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfY2N3LmMKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB6ZmNwIGRldmljZSBkcml2ZXIgZm9yCisgKiBGQ1AgYWRhcHRlcnMgZm9yIElCTSBTeXN0ZW0gejkgYW5kIHpTZXJpZXMuCiAgKgotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzCi0gKgotICogQ0NXIGRyaXZlciByZWxhdGVkIHJvdXRpbmVzCi0gKgotICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMywgMjAwNAotICoKLSAqIEF1dGhvcnM6Ci0gKiAgICAgIE1hcnRpbiBQZXNjaGtlIDxtcGVzY2hrZUBkZS5pYm0uY29tPgotICoJSGVpa28gQ2Fyc3RlbnMgPGhlaWtvLmNhcnN0ZW5zQGRlLmlibS5jb20+Ci0gKiAgICAgIEFuZHJlYXMgSGVycm1hbm4gPGFoZXJybWFuQGRlLmlibS5jb20+CisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA2CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYuYwppbmRleCBhNWYyYmE5Li5jMDMzMTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmMKQEAgLTEsMTIgKzEsOCBAQAogLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB6ZmNwIGRldmljZSBkcml2ZXIgZm9yCisgKiBGQ1AgYWRhcHRlcnMgZm9yIElCTSBTeXN0ZW0gejkgYW5kIHpTZXJpZXMuCiAgKgotICogbGludXgvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYuYwotICoKLSAqIEZDUCBhZGFwdGVyIGRyaXZlciBmb3IgSUJNIGVTZXJ2ZXIgelNlcmllcwotICoKLSAqIERlYnVnZ2luZyBmYWNpbGl0aWVzCi0gKgotICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwNQorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kZWYuaCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGVmLmgKaW5kZXggNmViYTU2Yy4uMmRmNTEyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kZWYuaAorKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RlZi5oCkBAIC0xLDE5ICsxLDggQEAKIC8qIAotICogCi0gKiBsaW51eC9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RlZi5oCi0gKiAKLSAqIEZDUCBhZGFwdGVyIGRyaXZlciBmb3IgSUJNIGVTZXJ2ZXIgelNlcmllcyAKLSAqIAotICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNAorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHpmY3AgZGV2aWNlIGRyaXZlciBmb3IKKyAqIEZDUCBhZGFwdGVycyBmb3IgSUJNIFN5c3RlbSB6OSBhbmQgelNlcmllcy4KICAqCi0gKiBBdXRob3Iocyk6IE1hcnRpbiBQZXNjaGtlIDxtcGVzY2hrZUBkZS5pYm0uY29tPiAKLSAqICAgICAgICAgICAgUmFpbXVuZCBTY2hyb2VkZXIgPHJhaW11bmQuc2Nocm9lZGVyQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBBcm9uIFplaAotICogICAgICAgICAgICBXb2xmZ2FuZyBUYXBob3JuCi0gKiAgICAgICAgICAgIFN0ZWZhbiBCYWRlciA8c3RlZmFuLmJhZGVyQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBIZWlrbyBDYXJzdGVucyA8aGVpa28uY2Fyc3RlbnNAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEFuZHJlYXMgSGVycm1hbm4gPGFoZXJybWFuQGRlLmlibS5jb20+Ci0gKiAgICAgICAgICAgIFZvbGtlciBTYW1lc2tlIDxzYW1lc2tlQGRlLmlibS5jb20+CisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA2CiAgKiAKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IAogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgCkBAIC01MCw3ICszOSw2IEBACiAjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3QuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfdHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5oPgotI2luY2x1ZGUgIi4uLy4uL2ZjNC9mYy5oIgogI2luY2x1ZGUgInpmY3BfZnNmLmgiCiAjaW5jbHVkZSA8YXNtL2Njd2Rldi5oPgogI2luY2x1ZGUgPGFzbS9xZGlvLmg+CkBAIC02NCw3ICs1Miw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqIEdFTkVSQUwgREVGSU5FUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHpmY3AgdmVyc2lvbiBudW1iZXIsIGl0IGNvbnNpc3RzIG9mIG1ham9yLCBtaW5vciwgYW5kIHBhdGNoLWxldmVsIG51bWJlciAqLwotI2RlZmluZSBaRkNQX1ZFUlNJT04JCSI0LjUuMCIKKyNkZWZpbmUgWkZDUF9WRVJTSU9OCQkiNC43LjAiCiAKIC8qKgogICogemZjcF9zZ190b19hZGRyZXNzIC0gZGV0ZXJtaW5lIGtlcm5lbCBhZGRyZXNzIGZyb20gc3RydWN0IHNjYXR0ZXJsaXN0CkBAIC04OSwxMyArNzcsOSBAQAogCWxpc3QtPm9mZnNldCA9ICgodW5zaWduZWQgbG9uZykgYWRkcmVzcykgJiAoUEFHRV9TSVpFIC0gMSk7CiB9CiAKKyNkZWZpbmUgUkVRVUVTVF9MSVNUX1NJWkUgMTI4CisKIC8qKioqKioqKioqKioqKioqKioqKiogU0NTSSBTUEVDSUZJQyBERUZJTkVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogMzIgYml0IGZvciBTQ1NJIElEIGFuZCBMVU4gYXMgbG9uZyBhcyB0aGUgU0NTSSBzdGFjayB1c2VzIHRoaXMgdHlwZSAqLwotdHlwZWRlZiB1MzIgc2NzaV9pZF90OwotdHlwZWRlZiB1MzIgc2NzaV9sdW5fdDsKLQotI2RlZmluZSBaRkNQX0VSUF9TQ1NJX0xPV19NRU1fVElNRU9VVCAgICAgICAgICAgKDEwMCpIWikKICNkZWZpbmUgWkZDUF9TQ1NJX0VSX1RJTUVPVVQgICAgICAgICAgICAgICAgICAgICgxMDAqSFopCiAKIC8qKioqKioqKioqKioqKioqKioqKiogQ0lPL1FESU8gU1BFQ0lGSUMgREVGSU5FUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTIzMyw4ICsyMTcsOSBAQAogI2RlZmluZSBSU1BfQ09ERV9UQVNLTUFOX0ZBSUxFRAkgNQogCiAvKiBzZWUgZmMtZnMgKi8KLSNkZWZpbmUgTFNfRkFOIDB4NjAwMDAwMDAKLSNkZWZpbmUgTFNfUlNDTiAweDYxMDQwMDAwCisjZGVmaW5lIExTX1JTQ04gIDB4NjEwNDAwMDAKKyNkZWZpbmUgTFNfTE9HTyAgMHgwNTAwMDAwMAorI2RlZmluZSBMU19QTE9HSSAweDAzMDAwMDAwCiAKIHN0cnVjdCBmY3BfcnNjbl9oZWFkIHsKICAgICAgICAgdTggIGNvbW1hbmQ7CkBAIC0yNjMsMTMgKzI0OCw2IEBACiAjZGVmaW5lIFpGQ1BfTk9fUE9SVFNfUEVSX0RPTUFJTiAgMHgxMDAwMAogI2RlZmluZSBaRkNQX05PX1BPUlRTX1BFUl9GQUJSSUMgIDB4MTAwMDAwMAogCi1zdHJ1Y3QgZmNwX2ZhbiB7Ci0gICAgICAgIHUzMiBjb21tYW5kOwotICAgICAgICB1MzIgZnBvcnRfZGlkOwotICAgICAgICB3d25fdCBmcG9ydF93d3BuOwotICAgICAgICB3d25fdCBmcG9ydF93d25hbWU7Ci19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwotCiAvKiBzZWUgZmMtcGggKi8KIHN0cnVjdCBmY3BfbG9nbyB7CiAgICAgICAgIHUzMiBjb21tYW5kOwpAQCAtNTA3LDkgKzQ4NSw2IEBACiAKICNkZWZpbmUgWkZDUF9OQU1FICAgICAgICAgICAgICAgInpmY3AiCiAKLS8qIHJlYWQtb25seSBMVU4gc2hhcmluZyBzd2l0Y2ggaW5pdGlhbCB2YWx1ZSAqLwotI2RlZmluZSBaRkNQX1JPX0xVTl9TSEFSSU5HX0RFRkFVTFRTIDAKLQogLyogaW5kZXBlbmRlbnQgbG9nIGFyZWFzICovCiAjZGVmaW5lIFpGQ1BfTE9HX0FSRUFfT1RIRVIJMAogI2RlZmluZSBaRkNQX0xPR19BUkVBX1NDU0kJMQpAQCAtNjA4LDcgKzU4Myw2IEBACiAgKiBhbmQgdW5pdAogICovCiAjZGVmaW5lIFpGQ1BfQ09NTU9OX0ZMQUdTCQkJMHhmZmYwMDAwMAotI2RlZmluZSBaRkNQX1NQRUNJRklDX0ZMQUdTCQkJMHgwMDBmZmZmZgogCiAvKiBjb21tb24gc3RhdHVzIGJpdHMgKi8KICNkZWZpbmUgWkZDUF9TVEFUVVNfQ09NTU9OX1JFTU9WRQkJMHg4MDAwMDAwMApAQCAtNjMzLDExICs2MDcsNiBAQAogI2RlZmluZSBaRkNQX1NUQVRVU19BREFQVEVSX0xJTktfVU5QTFVHR0VECTB4MDAwMDAyMDAKICNkZWZpbmUgWkZDUF9TVEFUVVNfQURBUFRFUl9YUE9SVF9PSwkJMHgwMDAwMDgwMAogCi0jZGVmaW5lIFpGQ1BfU1RBVFVTX0FEQVBURVJfU0NTSV9VUAkJCVwKLQkJKFpGQ1BfU1RBVFVTX0NPTU1PTl9VTkJMT0NLRUQgfAlcCi0JCSBaRkNQX1NUQVRVU19BREFQVEVSX1JFR0lTVEVSRUQpCi0KLQogLyogRkMtUEgvRkMtR1Mgd2VsbC1rbm93biBhZGRyZXNzIGlkZW50aWZpZXJzIGZvciBnZW5lcmljIHNlcnZpY2VzICovCiAjZGVmaW5lIFpGQ1BfRElEX01BTkFHRU1FTlRfU0VSVklDRQkJMHhGRkZGRkEKICNkZWZpbmUgWkZDUF9ESURfVElNRV9TRVJWSUNFCQkJMHhGRkZGRkIKQEAgLTY1Miw3ICs2MjEsNiBAQAogI2RlZmluZSBaRkNQX1NUQVRVU19QT1JUX05PX1dXUE4JCTB4MDAwMDAwMDgKICNkZWZpbmUgWkZDUF9TVEFUVVNfUE9SVF9OT19TQ1NJX0lECQkweDAwMDAwMDEwCiAjZGVmaW5lIFpGQ1BfU1RBVFVTX1BPUlRfSU5WQUxJRF9XV1BOCQkweDAwMDAwMDIwCi0jZGVmaW5lIFpGQ1BfU1RBVFVTX1BPUlRfQUNDRVNTX0RFTklFRAkJMHgwMDAwMDA0MAogCiAvKiBmb3IgcG9ydHMgd2l0aCB3ZWxsIGtub3duIGFkZHJlc3NlcyAqLwogI2RlZmluZSBaRkNQX1NUQVRVU19QT1JUX1dLQSBcCkBAIC05MDgsMTUgKzg3NiwxMiBAQAogCXd3bl90CQkJcGVlcl93d3BuOwkgICAvKiBQMlAgcGVlciBXV1BOICovCiAJdTMyCQkJcGVlcl9kX2lkOwkgICAvKiBQMlAgcGVlciBEX0lEICovCiAJc3RydWN0IGNjd19kZXZpY2UgICAgICAgKmNjd19kZXZpY2U7CSAgIC8qIFMvMzkwIGNjdyBkZXZpY2UgKi8KLQl1OAkJCWZjX3NlcnZpY2VfY2xhc3M7CiAJdTMyCQkJaHlkcmFfdmVyc2lvbjsJICAgLyogSHlkcmEgdmVyc2lvbiAqLwogCXUzMgkJCWZzZl9saWNfdmVyc2lvbjsKIAl1MzIJCQlhZGFwdGVyX2ZlYXR1cmVzOyAgLyogRkNQIGNoYW5uZWwgZmVhdHVyZXMgKi8KIAl1MzIJCQljb25uZWN0aW9uX2ZlYXR1cmVzOyAvKiBob3N0IGNvbm5lY3Rpb24gZmVhdHVyZXMgKi8KICAgICAgICAgdTMyCQkJaGFyZHdhcmVfdmVyc2lvbjsgIC8qIG9mIEZDUCBjaGFubmVsICovCiAJc3RydWN0IFNjc2lfSG9zdAkqc2NzaV9ob3N0OwkgICAvKiBQb2ludGVyIHRvIG1pZC1sYXllciAqLwotCXVuc2lnbmVkIHNob3J0ICAgICAgICAgIHNjc2lfaG9zdF9ubzsgICAgICAvKiBBc3NpZ25lZCBob3N0IG51bWJlciAqLwotCXVuc2lnbmVkIGNoYXIJCW5hbWVbOV07CiAJc3RydWN0IGxpc3RfaGVhZAlwb3J0X2xpc3RfaGVhZDsJICAgLyogcmVtb3RlIHBvcnQgbGlzdCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHBvcnRfcmVtb3ZlX2xoOyAgICAvKiBoZWFkIG9mIHBvcnRzIHRvIGJlCiAJCQkJCQkgICAgICByZW1vdmVkICovCkBAIC05OTQsNiArOTU5LDggQEAKIAl1MzIJCSAgICAgICBoYW5kbGU7CSAgICAgICAvKiBoYW5kbGUgYXNzaWduZWQgYnkgRlNGICovCiAJc3RydWN0IHpmY3BfZXJwX2FjdGlvbiBlcnBfYWN0aW9uOyAgICAgLyogcGVuZGluZyBlcnJvciByZWNvdmVyeSAqLwogICAgICAgICBhdG9taWNfdCAgICAgICAgICAgICAgIGVycF9jb3VudGVyOworCXUzMiAgICAgICAgICAgICAgICAgICAgbWF4ZnJhbWVfc2l6ZTsKKwl1MzIgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9jbGFzc2VzOwogfTsKIAogLyogdGhlIHN0cnVjdCBkZXZpY2Ugc3lzZnNfZGV2aWNlIG11c3QgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHN0cnVjdHVyZS4KQEAgLTEwMDgsNyArOTc1LDcgQEAKIAkJCQkJCSAgcmVmY291bnQgZHJvcCB0byB6ZXJvICovCiAJc3RydWN0IHpmY3BfcG9ydCAgICAgICAqcG9ydDsJICAgICAgIC8qIHJlbW90ZSBwb3J0IG9mIHVuaXQgKi8KIAlhdG9taWNfdAkgICAgICAgc3RhdHVzOwkgICAgICAgLyogc3RhdHVzIG9mIHRoaXMgbG9naWNhbCB1bml0ICovCi0Jc2NzaV9sdW5fdAkgICAgICAgc2NzaV9sdW47ICAgICAgIC8qIG93biBTQ1NJIExVTiAqLworCXVuc2lnbmVkIGludAkgICAgICAgc2NzaV9sdW47ICAgICAgIC8qIG93biBTQ1NJIExVTiAqLwogCWZjcF9sdW5fdAkgICAgICAgZmNwX2x1bjsJICAgICAgIC8qIG93biBGQ1BfTFVOICovCiAJdTMyCQkgICAgICAgaGFuZGxlOwkgICAgICAgLyogaGFuZGxlIGFzc2lnbmVkIGJ5IEZTRiAqLwogICAgICAgICBzdHJ1Y3Qgc2NzaV9kZXZpY2UgICAgICpkZXZpY2U7ICAgICAgICAvKiBzY3NpIGRldmljZSBzdHJ1Y3QgcG9pbnRlciAqLwpAQCAtMTA1MiwxMSArMTAxOSw2IEBACiAJc3RydWN0IGxpc3RfaGVhZAlhZGFwdGVyX2xpc3RfaGVhZDsgIC8qIGhlYWQgb2YgYWRhcHRlciBsaXN0ICovCiAJc3RydWN0IGxpc3RfaGVhZAlhZGFwdGVyX3JlbW92ZV9saDsgIC8qIGhlYWQgb2YgYWRhcHRlcnMgdG8gYmUKIAkJCQkJCSAgICAgICByZW1vdmVkICovCi0gICAgICAgIHJ3bG9ja190ICAgICAgICAgICAgICAgIHN0YXR1c19yZWFkX2xvY2s7ICAgLyogZm9yIHN0YXR1cyByZWFkIHRocmVhZCAqLwotICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBzdGF0dXNfcmVhZF9yZWNlaXZlX2hlYWQ7Ci0gICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIHN0YXR1c19yZWFkX3NlbmRfaGVhZDsKLSAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAgICAgICAgc3RhdHVzX3JlYWRfc2VtYTsKLQl3YWl0X3F1ZXVlX2hlYWRfdAlzdGF0dXNfcmVhZF90aHJlYWRfd3FoOwogCXUzMgkJCWFkYXB0ZXJzOwkgICAgLyogIyBvZiBhZGFwdGVycyBpbiBsaXN0ICovCiAJcndsb2NrX3QgICAgICAgICAgICAgICAgY29uZmlnX2xvY2s7ICAgICAgICAvKiBzZXJpYWxpc2VzIGNoYW5nZXMKIAkJCQkJCSAgICAgICB0byBhZGFwdGVyL3BvcnQvdW5pdApAQCAtMTA5NSw5ICsxMDU3LDYgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKiogWkZDUCBTUEVDSUZJQyBERUZJTkVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIFpGQ1BfRlNGUkVRX0NMRUFOVVBfVElNRU9VVAlIWi8xMAotCi0jZGVmaW5lIFpGQ1BfS05PV04gICAgICAgICAgICAgIDB4MDAwMDAwMDEKICNkZWZpbmUgWkZDUF9SRVFfQVVUT19DTEVBTlVQCTB4MDAwMDAwMDIKICNkZWZpbmUgWkZDUF9XQUlUX0ZPUl9TQkFMCTB4MDAwMDAwMDQKICNkZWZpbmUgWkZDUF9SRVFfTk9fUVRDQgkweDAwMDAwMDA4CkBAIC0xMTA1LDkgKzEwNjQsNiBAQAogI2RlZmluZSBaRkNQX1NFVCAgICAgICAgICAgICAgICAweDAwMDAwMTAwCiAjZGVmaW5lIFpGQ1BfQ0xFQVIgICAgICAgICAgICAgIDB4MDAwMDAyMDAKIAotI2RlZmluZSBaRkNQX0lOVEVSUlVQVElCTEUJMQotI2RlZmluZSBaRkNQX1VOSU5URVJSVVBUSUJMRQkwCi0KICNpZm5kZWYgYXRvbWljX3Rlc3RfbWFzawogI2RlZmluZSBhdG9taWNfdGVzdF9tYXNrKG1hc2ssIHRhcmdldCkgXAogICAgICAgICAgICAoKGF0b21pY19yZWFkKHRhcmdldCkgJiBtYXNrKSA9PSBtYXNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9lcnAuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJwLmMKaW5kZXggNTdjYjYyOC4uNDY4MmM4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9lcnAuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2VycC5jCkBAIC0xLDE4ICsxLDggQEAKIC8qIAotICogCi0gKiBsaW51eC9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2VycC5jIAotICogCi0gKiBGQ1AgYWRhcHRlciBkcml2ZXIgZm9yIElCTSBlU2VydmVyIHpTZXJpZXMgCi0gKiAKLSAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDQKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB6ZmNwIGRldmljZSBkcml2ZXIgZm9yCisgKiBGQ1AgYWRhcHRlcnMgZm9yIElCTSBTeXN0ZW0gejkgYW5kIHpTZXJpZXMuCiAgKgotICogQXV0aG9yKHMpOiBNYXJ0aW4gUGVzY2hrZSA8bXBlc2Noa2VAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIFJhaW11bmQgU2Nocm9lZGVyIDxyYWltdW5kLnNjaHJvZWRlckBkZS5pYm0uY29tPiAKLSAqICAgICAgICAgICAgQXJvbiBaZWgKLSAqICAgICAgICAgICAgV29sZmdhbmcgVGFwaG9ybgotICogICAgICAgICAgICBTdGVmYW4gQmFkZXIgPHN0ZWZhbi5iYWRlckBkZS5pYm0uY29tPiAKLSAqICAgICAgICAgICAgSGVpa28gQ2Fyc3RlbnMgPGhlaWtvLmNhcnN0ZW5zQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBBbmRyZWFzIEhlcnJtYW5uIDxhaGVycm1hbkBkZS5pYm0uY29tPgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNgogICogCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IApAQCAtMjMxLDEzICsyMjEsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogaW50CiB6ZmNwX2VycF9hZGFwdGVyX3NodXRkb3duKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBjbGVhcl9tYXNrKQogewpAQCAtMjUxLDEzICsyMzQsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogaW50CiB6ZmNwX2VycF9wb3J0X3NodXRkb3duKHN0cnVjdCB6ZmNwX3BvcnQgKnBvcnQsIGludCBjbGVhcl9tYXNrKQogewpAQCAtMjcxLDEzICsyNDcsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogaW50CiB6ZmNwX2VycF91bml0X3NodXRkb3duKHN0cnVjdCB6ZmNwX3VuaXQgKnVuaXQsIGludCBjbGVhcl9tYXNrKQogewpAQCAtMzA2LDIwICsyNzUsMTcgQEAKIAlpbnQgcmV0dmFsID0gMDsKIAlzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXI7CiAKLQlzZW5kX2VscyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB6ZmNwX3NlbmRfZWxzKSwgR0ZQX0FUT01JQyk7CisJc2VuZF9lbHMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgemZjcF9zZW5kX2VscyksIEdGUF9BVE9NSUMpOwogCWlmIChzZW5kX2VscyA9PSBOVUxMKQogCQlnb3RvIG5vbWVtOwotCW1lbXNldChzZW5kX2VscywgMCwgc2l6ZW9mKCpzZW5kX2VscykpOwogCi0Jc2VuZF9lbHMtPnJlcSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzY2F0dGVybGlzdCksIEdGUF9BVE9NSUMpOworCXNlbmRfZWxzLT5yZXEgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2NhdHRlcmxpc3QpLCBHRlBfQVRPTUlDKTsKIAlpZiAoc2VuZF9lbHMtPnJlcSA9PSBOVUxMKQogCQlnb3RvIG5vbWVtOwotCW1lbXNldChzZW5kX2Vscy0+cmVxLCAwLCBzaXplb2YoKnNlbmRfZWxzLT5yZXEpKTsKIAotCXNlbmRfZWxzLT5yZXNwID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHNjYXR0ZXJsaXN0KSwgR0ZQX0FUT01JQyk7CisJc2VuZF9lbHMtPnJlc3AgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2NhdHRlcmxpc3QpLCBHRlBfQVRPTUlDKTsKIAlpZiAoc2VuZF9lbHMtPnJlc3AgPT0gTlVMTCkKIAkJZ290byBub21lbTsKLQltZW1zZXQoc2VuZF9lbHMtPnJlc3AsIDAsIHNpemVvZigqc2VuZF9lbHMtPnJlc3ApKTsKIAogCWFkZHJlc3MgPSAodm9pZCAqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01JQyk7CiAJaWYgKGFkZHJlc3MgPT0gTlVMTCkKQEAgLTgxMiwxMyArNzc4LDYgQEAKIAlhdG9taWNfc2V0X21hc2soWkZDUF9TVEFUVVNfQ09NTU9OX1VOQkxPQ0tFRCwgJnVuaXQtPnN0YXR1cyk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIHZvaWQKIHpmY3BfZXJwX2FjdGlvbl9yZWFkeShzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICplcnBfYWN0aW9uKQogewpAQCAtMTM1NiwxMyArMTMxNSw2IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgkKLSAqCi0gKiByZXR1cm5zOgotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF9zdHJhdGVneV9kb19hY3Rpb24oc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTE1MzgsMTMgKzE0OTAsNiBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfc3RyYXRlZ3lfc3RhdGVjaGFuZ2UoaW50IGFjdGlvbiwKIAkJCSAgICAgIHUzMiBzdGF0dXMsCkBAIC0xNTg2LDEzICsxNTMxLDYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CQotICoKLSAqIHJldHVybnM6Ci0gKi8KIHN0YXRpYyBpbmxpbmUgaW50CiB6ZmNwX2VycF9zdHJhdGVneV9zdGF0ZWNoYW5nZV9kZXRlY3RlZChhdG9taWNfdCAqIHRhcmdldF9zdGF0dXMsIHUzMiBlcnBfc3RhdHVzKQogewpAQCAtMTYwNSwxMyArMTU0Myw2IEBACiAJICAgICAhKFpGQ1BfU1RBVFVTX0VSUF9DTE9TRV9PTkxZICYgZXJwX3N0YXR1cykpOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CQotICoKLSAqIHJldHVybnM6Ci0gKi8KIHN0YXRpYyBpbnQKIHpmY3BfZXJwX3N0cmF0ZWd5X2NoZWNrX3VuaXQoc3RydWN0IHpmY3BfdW5pdCAqdW5pdCwgaW50IHJlc3VsdCkKIHsKQEAgLTE2NDIsMTMgKzE1NzMsNiBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfc3RyYXRlZ3lfY2hlY2tfcG9ydChzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0LCBpbnQgcmVzdWx0KQogewpAQCAtMTY3OCwxMyArMTYwMiw2IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgkKLSAqCi0gKiByZXR1cm5zOgotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF9zdHJhdGVneV9jaGVja19hZGFwdGVyKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCByZXN1bHQpCiB7CkBAIC0xNzY0LDEzICsxNjgxLDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgkKLSAqCi0gKiByZXR1cm5zOgotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF9zdHJhdGVneV9jaGVja19xdWV1ZXMoc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRlcikKIHsKQEAgLTE4MDksMTIgKzE3MTksNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJemZjcF9lcnBfbW9kaWZ5X2FkYXB0ZXJfc3RhdHVzCi0gKgotICogcHVycG9zZToJCi0gKgotICovCiB2b2lkCiB6ZmNwX2VycF9tb2RpZnlfYWRhcHRlcl9zdGF0dXMoc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRlciwKIAkJCSAgICAgICB1MzIgbWFzaywgaW50IHNldF9vcl9jbGVhcikKQEAgLTE5MTksMTMgKzE4MjMsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoJRklYTUUKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfcG9ydF9yZW9wZW5fYWxsX2ludGVybmFsKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBjbGVhcl9tYXNrKQogewpAQCAtMjM3MCwxMyArMjI2Nyw2IEBACiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgkKLSAqCi0gKiByZXR1cm5zOgotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF9hZGFwdGVyX3N0cmF0ZWd5X29wZW5fZnNmX3N0YXR1c3JlYWQoc3RydWN0IHpmY3BfZXJwX2FjdGlvbgogCQkJCQkgICAgICAqZXJwX2FjdGlvbikKQEAgLTI1NDUsMTMgKzI0MzUsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfcG9ydF9zdHJhdGVneV9vcGVuKHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycF9hY3Rpb24pCiB7CkBAIC0yNTY2LDE1ICsyNDQ5LDYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CQotICoKLSAqIHJldHVybnM6Ci0gKgotICogRklYTUUoZGVzaWduKToJY3VycmVudGx5IG9ubHkgcHJlcGFyZWQgZm9yIGZhYnJpYyAobmFtZXNlcnZlciEpCi0gKi8KIHN0YXRpYyBpbnQKIHpmY3BfZXJwX3BvcnRfc3RyYXRlZ3lfb3Blbl9jb21tb24oc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTI2OTAsMTMgKzI1NjQsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfcG9ydF9zdHJhdGVneV9vcGVuX25hbWVzZXJ2ZXIoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTI4MTMsMTMgKzI2ODAsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfcG9ydF9zdHJhdGVneV9jbGVhcnN0YXRpKHN0cnVjdCB6ZmNwX3BvcnQgKnBvcnQpCiB7CkBAIC0zMDIyLDEzICsyODgyLDYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogZnVuY3Rpb246Ci0gKgotICogcHVycG9zZToKLSAqCi0gKiByZXR1cm5zOgotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF91bml0X3N0cmF0ZWd5X2NsZWFyc3RhdGkoc3RydWN0IHpmY3BfdW5pdCAqdW5pdCkKIHsKQEAgLTMxMjksMTMgKzI5ODIsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGlubGluZSB2b2lkCiB6ZmNwX2VycF90aW1lb3V0X2luaXQoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTMzMzEsMTMgKzMxNzcsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfYWN0aW9uX2RlcXVldWUoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTM0MDIsOSArMzI0MSwxMyBAQAogCQlicmVhazsKIAljYXNlIFpGQ1BfRVJQX0FDVElPTl9SRU9QRU5fUE9SVF9GT1JDRUQ6CiAJY2FzZSBaRkNQX0VSUF9BQ1RJT05fUkVPUEVOX1BPUlQ6CisJCWlmIChhdG9taWNfdGVzdF9tYXNrKFpGQ1BfU1RBVFVTX1BPUlRfTk9fV1dQTiwKKwkJCQkgICAgICZwb3J0LT5zdGF0dXMpKSB7CisJCQl6ZmNwX3BvcnRfcHV0KHBvcnQpOworCQkJYnJlYWs7CisJCX0KKwogCQlpZiAoKHJlc3VsdCA9PSBaRkNQX0VSUF9TVUNDRUVERUQpCi0JCSAgICAmJiAhYXRvbWljX3Rlc3RfbWFzayhaRkNQX1NUQVRVU19QT1JUX05PX1dXUE4sCi0JCQkJCSAmcG9ydC0+c3RhdHVzKQogCQkgICAgJiYgIXBvcnQtPnJwb3J0KSB7CiAJCQlzdHJ1Y3QgZmNfcnBvcnRfaWRlbnRpZmllcnMgaWRzOwogCQkJaWRzLm5vZGVfbmFtZSA9IHBvcnQtPnd3bm47CkBAIC0zNDE4LDEyICszMjYxLDMwIEBACiAJCQkJCQkiKGFkYXB0ZXIgJXMsIHd3cG49MHglMDE2THgpXG4iLAogCQkJCQkJemZjcF9nZXRfYnVzaWRfYnlfcG9ydChwb3J0KSwKIAkJCQkJCXBvcnQtPnd3cG4pOwotCQkJZWxzZQorCQkJZWxzZSB7CiAJCQkJc2NzaV9mbHVzaF93b3JrKGFkYXB0ZXItPnNjc2lfaG9zdCk7CisJCQkJcG9ydC0+cnBvcnQtPm1heGZyYW1lX3NpemUgPSBwb3J0LT5tYXhmcmFtZV9zaXplOworCQkJCXBvcnQtPnJwb3J0LT5zdXBwb3J0ZWRfY2xhc3NlcyA9CisJCQkJCXBvcnQtPnN1cHBvcnRlZF9jbGFzc2VzOworCQkJfQorCQl9CisJCWlmICgocmVzdWx0ICE9IFpGQ1BfRVJQX1NVQ0NFRURFRCkgJiYgcG9ydC0+cnBvcnQpIHsKKwkJCWZjX3JlbW90ZV9wb3J0X2RlbGV0ZShwb3J0LT5ycG9ydCk7CisJCQlwb3J0LT5ycG9ydCA9IE5VTEw7CiAJCX0KIAkJemZjcF9wb3J0X3B1dChwb3J0KTsKIAkJYnJlYWs7CiAJY2FzZSBaRkNQX0VSUF9BQ1RJT05fUkVPUEVOX0FEQVBURVI6CisJCWlmIChyZXN1bHQgIT0gWkZDUF9FUlBfU1VDQ0VFREVEKSB7CisJCQlzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0OworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3J0LCAmYWRhcHRlci0+cG9ydF9saXN0X2hlYWQsIGxpc3QpCisJCQkJaWYgKHBvcnQtPnJwb3J0ICYmCisJCQkJICAgICFhdG9taWNfdGVzdF9tYXNrKFpGQ1BfU1RBVFVTX1BPUlRfV0tBLAorCQkJCQkJICAgICAgJnBvcnQtPnN0YXR1cykpIHsKKwkJCQkJZmNfcmVtb3RlX3BvcnRfZGVsZXRlKHBvcnQtPnJwb3J0KTsKKwkJCQkJcG9ydC0+cnBvcnQgPSBOVUxMOworCQkJCX0KKwkJfQogCQl6ZmNwX2FkYXB0ZXJfcHV0KGFkYXB0ZXIpOwogCQlicmVhazsKIAlkZWZhdWx0OgpAQCAtMzQzMiwxMyArMzI5Myw2IEBACiB9CiAKIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgkKLSAqCi0gKiByZXR1cm5zOglGSVhNRQotICovCiBzdGF0aWMgaW50CiB6ZmNwX2VycF9hY3Rpb25fZGlzbWlzc19hZGFwdGVyKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7CkBAIC0zNDU1LDEzICszMzA5LDYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CQotICoKLSAqIHJldHVybnM6CUZJWE1FCi0gKi8KIHN0YXRpYyBpbnQKIHpmY3BfZXJwX2FjdGlvbl9kaXNtaXNzX3BvcnQoc3RydWN0IHpmY3BfcG9ydCAqcG9ydCkKIHsKQEAgLTM0ODAsMTMgKzMzMjcsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoJRklYTUUKLSAqLwogc3RhdGljIGludAogemZjcF9lcnBfYWN0aW9uX2Rpc21pc3NfdW5pdChzdHJ1Y3QgemZjcF91bml0ICp1bml0KQogewpAQCAtMzUwMSwxMyArMzM0MSw2IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgkKLSAqCi0gKiBwdXJwb3NlOgltb3ZlcyBlcnBfYWN0aW9uIHRvICdlcnAgcnVubmluZyBsaXN0JwotICoKLSAqIHJldHVybnM6Ci0gKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAogemZjcF9lcnBfYWN0aW9uX3RvX3J1bm5pbmcoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwX2FjdGlvbikKIHsKQEAgLTM1MTgsMTMgKzMzNTEsNiBAQAogCWxpc3RfbW92ZSgmZXJwX2FjdGlvbi0+bGlzdCwgJmVycF9hY3Rpb24tPmFkYXB0ZXItPmVycF9ydW5uaW5nX2hlYWQpOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CW1vdmVzIGVycF9hY3Rpb24gdG8gJ2VycCByZWFkeSBsaXN0JwotICoKLSAqIHJldHVybnM6Ci0gKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAogemZjcF9lcnBfYWN0aW9uX3RvX3JlYWR5KHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycF9hY3Rpb24pCiB7CkBAIC0zNTM1LDExICszMzYxLDYgQEAKIAlsaXN0X21vdmUoJmVycF9hY3Rpb24tPmxpc3QsICZlcnBfYWN0aW9uLT5hZGFwdGVyLT5lcnBfcmVhZHlfaGVhZCk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJemZjcF9lcnBfcG9ydF9ib3hlZAotICoKLSAqIHB1cnBvc2U6Ci0gKi8KIHZvaWQKIHpmY3BfZXJwX3BvcnRfYm94ZWQoc3RydWN0IHpmY3BfcG9ydCAqcG9ydCkKIHsKQEAgLTM1NTYsMTEgKzMzNzcsNiBAQAogCXpmY3BfZXJwX3BvcnRfcmVvcGVuKHBvcnQsIFpGQ1BfU1RBVFVTX0NPTU1PTl9FUlBfRkFJTEVEKTsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgl6ZmNwX2VycF91bml0X2JveGVkCi0gKgotICogcHVycG9zZToKLSAqLwogdm9pZAogemZjcF9lcnBfdW5pdF9ib3hlZChzdHJ1Y3QgemZjcF91bml0ICp1bml0KQogewpAQCAtMzU3NCwxMSArMzM5MCw2IEBACiAJemZjcF9lcnBfdW5pdF9yZW9wZW4odW5pdCwgWkZDUF9TVEFUVVNfQ09NTU9OX0VSUF9GQUlMRUQpOwogfQogCi0vKgotICogZnVuY3Rpb246CXpmY3BfZXJwX3BvcnRfYWNjZXNzX2RlbmllZAotICoKLSAqIHB1cnBvc2U6Ci0gKi8KIHZvaWQKIHpmY3BfZXJwX3BvcnRfYWNjZXNzX2RlbmllZChzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0KQogewpAQCAtMzU5NSwxMSArMzQwNiw2IEBACiAJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmemZjcF9kYXRhLmNvbmZpZ19sb2NrLCBmbGFncyk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJemZjcF9lcnBfdW5pdF9hY2Nlc3NfZGVuaWVkCi0gKgotICogcHVycG9zZToKLSAqLwogdm9pZAogemZjcF9lcnBfdW5pdF9hY2Nlc3NfZGVuaWVkKHN0cnVjdCB6ZmNwX3VuaXQgKnVuaXQpCiB7CkBAIC0zNjEzLDExICszNDE5LDYgQEAKIAkJCVpGQ1BfU0VUKTsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgl6ZmNwX2VycF9hZGFwdGVyX2FjY2Vzc19jaGFuZ2VkCi0gKgotICogcHVycG9zZToKLSAqLwogdm9pZAogemZjcF9lcnBfYWRhcHRlcl9hY2Nlc3NfY2hhbmdlZChzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyKQogewpAQCAtMzYyOCw3ICszNDI5LDcgQEAKIAkJcmV0dXJuOwogCiAJZGVidWdfdGV4dF9ldmVudChhZGFwdGVyLT5lcnBfZGJmLCAzLCAiYV9hY2Nlc3NfcmVjb3ZlciIpOwotCWRlYnVnX2V2ZW50KGFkYXB0ZXItPmVycF9kYmYsIDMsICZhZGFwdGVyLT5uYW1lLCA4KTsKKwlkZWJ1Z19ldmVudChhZGFwdGVyLT5lcnBfZGJmLCAzLCB6ZmNwX2dldF9idXNpZF9ieV9hZGFwdGVyKGFkYXB0ZXIpLCA4KTsKIAogCXJlYWRfbG9ja19pcnFzYXZlKCZ6ZmNwX2RhdGEuY29uZmlnX2xvY2ssIGZsYWdzKTsKIAlpZiAoYWRhcHRlci0+bmFtZXNlcnZlcl9wb3J0KQpAQCAtMzYzOSwxMSArMzQ0MCw2IEBACiAJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmemZjcF9kYXRhLmNvbmZpZ19sb2NrLCBmbGFncyk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJemZjcF9lcnBfcG9ydF9hY2Nlc3NfY2hhbmdlZAotICoKLSAqIHB1cnBvc2U6Ci0gKi8KIHZvaWQKIHpmY3BfZXJwX3BvcnRfYWNjZXNzX2NoYW5nZWQoc3RydWN0IHpmY3BfcG9ydCAqcG9ydCkKIHsKQEAgLTM2NzIsMTEgKzM0NjgsNiBAQAogCQkJCXpmY3BfZ2V0X2J1c2lkX2J5X2FkYXB0ZXIoYWRhcHRlciksIHBvcnQtPnd3cG4pOwogfQogCi0vKgotICogZnVuY3Rpb246CXpmY3BfZXJwX3VuaXRfYWNjZXNzX2NoYW5nZWQKLSAqCi0gKiBwdXJwb3NlOgotICovCiB2b2lkCiB6ZmNwX2VycF91bml0X2FjY2Vzc19jaGFuZ2VkKHN0cnVjdCB6ZmNwX3VuaXQgKnVuaXQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2V4dC5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQuaAppbmRleCA3MDBmNTQwLi5kMDIzNjYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2V4dC5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0LmgKQEAgLTEsMTggKzEsOCBAQAogLyogCi0gKiAKLSAqIGxpbnV4L2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0LmgKLSAqIAotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzIAotICogCi0gKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA0CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgemZjcCBkZXZpY2UgZHJpdmVyIGZvcgorICogRkNQIGFkYXB0ZXJzIGZvciBJQk0gU3lzdGVtIHo5IGFuZCB6U2VyaWVzLgogICoKLSAqIEF1dGhvcihzKTogTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBSYWltdW5kIFNjaHJvZWRlciA8cmFpbXVuZC5zY2hyb2VkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEFyb24gWmVoCi0gKiAgICAgICAgICAgIFdvbGZnYW5nIFRhcGhvcm4KLSAqICAgICAgICAgICAgU3RlZmFuIEJhZGVyIDxzdGVmYW4uYmFkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPiAKLSAqICAgICAgICAgICAgQW5kcmVhcyBIZXJybWFubiA8YWhlcnJtYW5AZGUuaWJtLmNvbT4KKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDYKICAqIAogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAKQEAgLTEyNSw2ICsxMTUsNyBAQAogZXh0ZXJuIGludCAgemZjcF9uc19naWRfcG5fcmVxdWVzdChzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICopOwogZXh0ZXJuIGludCAgemZjcF9jaGVja19jdF9yZXNwb25zZShzdHJ1Y3QgY3RfaGRyICopOwogZXh0ZXJuIGludCAgemZjcF9oYW5kbGVfZWxzX3JqdCh1MzIsIHN0cnVjdCB6ZmNwX2xzX3JqdF9wYXIgKik7CitleHRlcm4gdm9pZCB6ZmNwX3Bsb2dpX2V2YWx1YXRlKHN0cnVjdCB6ZmNwX3BvcnQgKiwgc3RydWN0IGZzZl9wbG9naSAqKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU0NTSSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogZXh0ZXJuIGludCAgemZjcF9hZGFwdGVyX3Njc2lfcmVnaXN0ZXIoc3RydWN0IHpmY3BfYWRhcHRlciAqKTsKQEAgLTE0MSw4ICsxMzIsNiBAQAogCQkJCSAgIHN0cnVjdCBzY3NpX2NtbmQgKiwgc3RydWN0IHRpbWVyX2xpc3QgKik7CiBleHRlcm4gaW50IHpmY3Bfc2NzaV9jb21tYW5kX3N5bmMoc3RydWN0IHpmY3BfdW5pdCAqLCBzdHJ1Y3Qgc2NzaV9jbW5kICosCiAJCQkJICBzdHJ1Y3QgdGltZXJfbGlzdCAqKTsKLWV4dGVybiB2b2lkIHpmY3Bfc2V0X2ZjX2hvc3RfYXR0cnMoc3RydWN0IHpmY3BfYWRhcHRlciAqKTsKLWV4dGVybiB2b2lkIHpmY3Bfc2V0X2ZjX3Jwb3J0X2F0dHJzKHN0cnVjdCB6ZmNwX3BvcnQgKik7CiBleHRlcm4gc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICp6ZmNwX3RyYW5zcG9ydF90ZW1wbGF0ZTsKIGV4dGVybiBzdHJ1Y3QgZmNfZnVuY3Rpb25fdGVtcGxhdGUgemZjcF90cmFuc3BvcnRfZnVuY3Rpb25zOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYwppbmRleCA2NjJlYzU3Li42MzM1ZjkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKQEAgLTEsMTkgKzEsOCBAQAogLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB6ZmNwIGRldmljZSBkcml2ZXIgZm9yCisgKiBGQ1AgYWRhcHRlcnMgZm9yIElCTSBTeXN0ZW0gejkgYW5kIHpTZXJpZXMuCiAgKgotICogbGludXgvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYwotICoKLSAqIEZDUCBhZGFwdGVyIGRyaXZlciBmb3IgSUJNIGVTZXJ2ZXIgelNlcmllcwotICoKLSAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDQKLSAqCi0gKiBBdXRob3Iocyk6IE1hcnRpbiBQZXNjaGtlIDxtcGVzY2hrZUBkZS5pYm0uY29tPgotICogICAgICAgICAgICBSYWltdW5kIFNjaHJvZWRlciA8cmFpbXVuZC5zY2hyb2VkZXJAZGUuaWJtLmNvbT4KLSAqICAgICAgICAgICAgQXJvbiBaZWgKLSAqICAgICAgICAgICAgV29sZmdhbmcgVGFwaG9ybgotICogICAgICAgICAgICBTdGVmYW4gQmFkZXIgPHN0ZWZhbi5iYWRlckBkZS5pYm0uY29tPgotICogICAgICAgICAgICBIZWlrbyBDYXJzdGVucyA8aGVpa28uY2Fyc3RlbnNAZGUuaWJtLmNvbT4KLSAqICAgICAgICAgICAgQW5kcmVhcyBIZXJybWFubiA8YWhlcnJtYW5AZGUuaWJtLmNvbT4KLSAqICAgICAgICAgICAgVm9sa2VyIFNhbWVza2UgPHNhbWVza2VAZGUuaWJtLmNvbT4KKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDYKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTg3Nyw2ICs4NjYsNyBAQAogCXN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIgPSBmc2ZfcmVxLT5hZGFwdGVyOwogCXN0cnVjdCBmc2Zfc3RhdHVzX3JlYWRfYnVmZmVyICpzdGF0dXNfYnVmZmVyID0KIAkJKHN0cnVjdCBmc2Zfc3RhdHVzX3JlYWRfYnVmZmVyICopIGZzZl9yZXEtPmRhdGE7CisJc3RydWN0IGZzZl9iaXRfZXJyb3JfcGF5bG9hZCAqZnNmX2JpdF9lcnJvcjsKIAogCWlmIChmc2ZfcmVxLT5zdGF0dXMgJiBaRkNQX1NUQVRVU19GU0ZSRVFfRElTTUlTU0VEKSB7CiAJCXpmY3BfaGJhX2RiZl9ldmVudF9mc2ZfdW5zb2woImRpc20iLCBhZGFwdGVyLCBzdGF0dXNfYnVmZmVyKTsKQEAgLTkwMywxMCArODkzLDM3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBGU0ZfU1RBVFVTX1JFQURfQklUX0VSUk9SX1RIUkVTSE9MRDoKLQkJWkZDUF9MT0dfTk9STUFMKCJCaXQgZXJyb3IgdGhyZXNob2xkIGRhdGEgcmVjZWl2ZWQ6XG4iKTsKLQkJWkZDUF9IRVhfRFVNUChaRkNQX0xPR19MRVZFTF9OT1JNQUwsCi0JCQkgICAgICAoY2hhciAqKSBzdGF0dXNfYnVmZmVyLAotCQkJICAgICAgc2l6ZW9mIChzdHJ1Y3QgZnNmX3N0YXR1c19yZWFkX2J1ZmZlcikpOworCQlmc2ZfYml0X2Vycm9yID0gKHN0cnVjdCBmc2ZfYml0X2Vycm9yX3BheWxvYWQgKikKKwkJCXN0YXR1c19idWZmZXItPnBheWxvYWQ7CisJCVpGQ1BfTE9HX05PUk1BTCgiV2FybmluZzogYml0IGVycm9yIHRocmVzaG9sZCBkYXRhICIKKwkJICAgICJyZWNlaXZlZCAoYWRhcHRlciAlcywgIgorCQkgICAgImxpbmsgZmFpbHVyZXMgPSAlaSwgbG9zcyBvZiBzeW5jIGVycm9ycyA9ICVpLCAiCisJCSAgICAibG9zcyBvZiBzaWduYWwgZXJyb3JzID0gJWksICIKKwkJICAgICJwcmltaXRpdmUgc2VxdWVuY2UgZXJyb3JzID0gJWksICIKKwkJICAgICJpbnZhbGlkIHRyYW5zbWlzc2lvbiB3b3JkIGVycm9ycyA9ICVpLCAiCisJCSAgICAiQ1JDIGVycm9ycyA9ICVpKVxuIiwKKwkJICAgIHpmY3BfZ2V0X2J1c2lkX2J5X2FkYXB0ZXIoYWRhcHRlciksCisJCSAgICBmc2ZfYml0X2Vycm9yLT5saW5rX2ZhaWx1cmVfZXJyb3JfY291bnQsCisJCSAgICBmc2ZfYml0X2Vycm9yLT5sb3NzX29mX3N5bmNfZXJyb3JfY291bnQsCisJCSAgICBmc2ZfYml0X2Vycm9yLT5sb3NzX29mX3NpZ25hbF9lcnJvcl9jb3VudCwKKwkJICAgIGZzZl9iaXRfZXJyb3ItPnByaW1pdGl2ZV9zZXF1ZW5jZV9lcnJvcl9jb3VudCwKKwkJICAgIGZzZl9iaXRfZXJyb3ItPmludmFsaWRfdHJhbnNtaXNzaW9uX3dvcmRfZXJyb3JfY291bnQsCisJCSAgICBmc2ZfYml0X2Vycm9yLT5jcmNfZXJyb3JfY291bnQpOworCQlaRkNQX0xPR19JTkZPKCJBZGRpdGlvbmFsIGJpdCBlcnJvciB0aHJlc2hvbGQgZGF0YSAiCisJCSAgICAiKGFkYXB0ZXIgJXMsICIKKwkJICAgICJwcmltaXRpdmUgc2VxdWVuY2UgZXZlbnQgdGltZS1vdXRzID0gJWksICIKKwkJICAgICJlbGFzdGljIGJ1ZmZlciBvdmVycnVuIGVycm9ycyA9ICVpLCAiCisJCSAgICAiYWR2ZXJ0aXNlZCByZWNlaXZlIGJ1ZmZlci10by1idWZmZXIgY3JlZGl0ID0gJWksICIKKwkJICAgICJjdXJyZW50IHJlY2VpY2UgYnVmZmVyLXRvLWJ1ZmZlciBjcmVkaXQgPSAlaSwgIgorCQkgICAgImFkdmVydGlzZWQgdHJhbnNtaXQgYnVmZmVyLXRvLWJ1ZmZlciBjcmVkaXQgPSAlaSwgIgorCQkgICAgImN1cnJlbnQgdHJhbnNtaXQgYnVmZmVyLXRvLWJ1ZmZlciBjcmVkaXQgPSAlaSlcbiIsCisJCSAgICB6ZmNwX2dldF9idXNpZF9ieV9hZGFwdGVyKGFkYXB0ZXIpLAorCQkgICAgZnNmX2JpdF9lcnJvci0+cHJpbWl0aXZlX3NlcXVlbmNlX2V2ZW50X3RpbWVvdXRfY291bnQsCisJCSAgICBmc2ZfYml0X2Vycm9yLT5lbGFzdGljX2J1ZmZlcl9vdmVycnVuX2Vycm9yX2NvdW50LAorCQkgICAgZnNmX2JpdF9lcnJvci0+YWR2ZXJ0aXNlZF9yZWNlaXZlX2IyYl9jcmVkaXQsCisJCSAgICBmc2ZfYml0X2Vycm9yLT5jdXJyZW50X3JlY2VpdmVfYjJiX2NyZWRpdCwKKwkJICAgIGZzZl9iaXRfZXJyb3ItPmFkdmVydGlzZWRfdHJhbnNtaXRfYjJiX2NyZWRpdCwKKwkJICAgIGZzZl9iaXRfZXJyb3ItPmN1cnJlbnRfdHJhbnNtaXRfYjJiX2NyZWRpdCk7CiAJCWJyZWFrOwogCiAJY2FzZSBGU0ZfU1RBVFVTX1JFQURfTElOS19ET1dOOgpAQCAtMTQyNyw3ICsxNDQ0LDggQEAKIAogCS8qIHNldHRpbmdzIGluIFFUQ0IgKi8KIAlmc2ZfcmVxLT5xdGNiLT5oZWFkZXIucG9ydF9oYW5kbGUgPSBwb3J0LT5oYW5kbGU7Ci0JZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuc2VydmljZV9jbGFzcyA9IGFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3M7CisJZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuc2VydmljZV9jbGFzcyA9CisJCVpGQ1BfRkNfU0VSVklDRV9DTEFTU19ERUZBVUxUOwogCWZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5zdXBwb3J0LnRpbWVvdXQgPSBjdC0+dGltZW91dDsKICAgICAgICAgZnNmX3JlcS0+ZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBjdDsKIApAQCAtMTQ5NiwxOCArMTUxNCwxMCBAQAogCQlicmVhazsKIAogICAgICAgICBjYXNlIEZTRl9TRVJWSUNFX0NMQVNTX05PVF9TVVBQT1JURUQ6Ci0JCWlmIChhZGFwdGVyLT5mY19zZXJ2aWNlX2NsYXNzIDw9IDMpIHsKLQkJCVpGQ1BfTE9HX0lORk8oImVycm9yOiBhZGFwdGVyICVzIGRvZXMgbm90IHN1cHBvcnQgZmMgIgotCQkJCSAgICAgICJjbGFzcyAlZC5cbiIsCi0JCQkJICAgICAgemZjcF9nZXRfYnVzaWRfYnlfcG9ydChwb3J0KSwKLQkJCQkgICAgICBhZGFwdGVyLT5mY19zZXJ2aWNlX2NsYXNzKTsKLQkJfSBlbHNlIHsKLQkJCVpGQ1BfTE9HX0lORk8oImJ1ZzogVGhlIGZpYnJlIGNoYW5uZWwgY2xhc3MgYXQgdGhlICIKLQkJCQkgICAgICAiYWRhcHRlciAlcyBpcyBpbnZhbGlkLiAiCi0JCQkJICAgICAgIihkZWJ1ZyBpbmZvICVkKVxuIiwKLQkJCQkgICAgICB6ZmNwX2dldF9idXNpZF9ieV9wb3J0KHBvcnQpLAotCQkJCSAgICAgIGFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3MpOwotCQl9CisJCVpGQ1BfTE9HX0lORk8oImVycm9yOiBhZGFwdGVyICVzIGRvZXMgbm90IHN1cHBvcnQgZmMgIgorCQkJICAgICAgImNsYXNzICVkLlxuIiwKKwkJCSAgICAgIHpmY3BfZ2V0X2J1c2lkX2J5X3BvcnQocG9ydCksCisJCQkgICAgICBaRkNQX0ZDX1NFUlZJQ0VfQ0xBU1NfREVGQVVMVCk7CiAJCS8qIHN0b3Agb3BlcmF0aW9uIGZvciB0aGlzIGFkYXB0ZXIgKi8KIAkJZGVidWdfdGV4dF9leGNlcHRpb24oYWRhcHRlci0+ZXJwX2RiZiwgMCwgImZzZl9zX2NsYXNzX25zdXAiKTsKIAkJemZjcF9lcnBfYWRhcHRlcl9zaHV0ZG93bihhZGFwdGVyLCAwKTsKQEAgLTE3MzAsNyArMTc0MCw4IEBACiAKIAkvKiBzZXR0aW5ncyBpbiBRVENCICovCiAJZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuZF9pZCA9IGRfaWQ7Ci0JZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuc2VydmljZV9jbGFzcyA9IGFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3M7CisJZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuc2VydmljZV9jbGFzcyA9CisJCVpGQ1BfRkNfU0VSVklDRV9DTEFTU19ERUZBVUxUOwogCWZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5zdXBwb3J0LnRpbWVvdXQgPSBaRkNQX0VMU19USU1FT1VUOwogCWZzZl9yZXEtPmRhdGEgPSAodW5zaWduZWQgbG9uZykgZWxzOwogCkBAIC0xODAwLDE4ICsxODExLDEwIEBACiAJCWJyZWFrOwogCiAJY2FzZSBGU0ZfU0VSVklDRV9DTEFTU19OT1RfU1VQUE9SVEVEOgotCQlpZiAoYWRhcHRlci0+ZmNfc2VydmljZV9jbGFzcyA8PSAzKSB7Ci0JCQlaRkNQX0xPR19JTkZPKCJlcnJvcjogYWRhcHRlciAlcyBkb2VzICIKLQkJCQkgICAgICAibm90IHN1cHBvcnQgZmlicmVjaGFubmVsIGNsYXNzICVkLlxuIiwKLQkJCQkgICAgICB6ZmNwX2dldF9idXNpZF9ieV9hZGFwdGVyKGFkYXB0ZXIpLAotCQkJCSAgICAgIGFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3MpOwotCQl9IGVsc2UgewotCQkJWkZDUF9MT0dfSU5GTygiYnVnOiBUaGUgZmlicmVjaGFubmVsIGNsYXNzIGF0ICIKLQkJCQkgICAgICAiYWRhcHRlciAlcyBpcyBpbnZhbGlkLiAiCi0JCQkJICAgICAgIihkZWJ1ZyBpbmZvICVkKVxuIiwKLQkJCQkgICAgICB6ZmNwX2dldF9idXNpZF9ieV9hZGFwdGVyKGFkYXB0ZXIpLAotCQkJCSAgICAgIGFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3MpOwotCQl9CisJCVpGQ1BfTE9HX0lORk8oImVycm9yOiBhZGFwdGVyICVzIGRvZXMgbm90IHN1cHBvcnQgZmMgIgorCQkJICAgICAgImNsYXNzICVkLlxuIiwKKwkJCSAgICAgIHpmY3BfZ2V0X2J1c2lkX2J5X2FkYXB0ZXIoYWRhcHRlciksCisJCQkgICAgICBaRkNQX0ZDX1NFUlZJQ0VfQ0xBU1NfREVGQVVMVCk7CiAJCS8qIHN0b3Agb3BlcmF0aW9uIGZvciB0aGlzIGFkYXB0ZXIgKi8KIAkJZGVidWdfdGV4dF9leGNlcHRpb24oYWRhcHRlci0+ZXJwX2RiZiwgMCwgImZzZl9zX2NsYXNzX25zdXAiKTsKIAkJemZjcF9lcnBfYWRhcHRlcl9zaHV0ZG93bihhZGFwdGVyLCAwKTsKQEAgLTE5NDAsMTQgKzE5NDMsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoKLSAqCi0gKiBwdXJwb3NlOgotICoKLSAqIHJldHVybnM6CWFkZHJlc3Mgb2YgaW5pdGlhdGVkIEZTRiByZXF1ZXN0Ci0gKgkJTlVMTCAtIHJlcXVlc3QgY291bGQgbm90IGJlIGluaXRpYXRlZAotICovCiBpbnQKIHpmY3BfZnNmX2V4Y2hhbmdlX2NvbmZpZ19kYXRhKHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycF9hY3Rpb24pCiB7CkBAIC0yNTY1LDggKzI1NjAsNyBAQAogCQlpZiAoIWF0b21pY190ZXN0X21hc2soWkZDUF9TVEFUVVNfUE9SVF9OT19XV1BOLCAmcG9ydC0+c3RhdHVzKSkKIAkJewogCQkJaWYgKGZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5zdXBwb3J0LmVsczFfbGVuZ3RoIDwKLQkJCSAgICAoKCgodW5zaWduZWQgbG9uZykgJnBsb2dpLT5zZXJ2X3BhcmFtLnd3cG4pIC0KLQkJCSAgICAgICgodW5zaWduZWQgbG9uZykgcGxvZ2kpKSArIHNpemVvZiAodTY0KSkpIHsKKwkJCSAgICBzaXplb2YgKHN0cnVjdCBmc2ZfcGxvZ2kpKSB7CiAJCQkJWkZDUF9MT0dfSU5GTygKIAkJCQkJIndhcm5pbmc6IGluc3VmZmljaWVudCBsZW5ndGggb2YgIgogCQkJCQkiUExPR0kgcGF5bG9hZCAoJWkpXG4iLApAQCAtMjU4NSw4ICsyNTc5LDEwIEBACiAJCQkJCWF0b21pY19jbGVhcl9tYXNrKAogCQkJCQkJWkZDUF9TVEFUVVNfUE9SVF9ESURfRElELAogCQkJCQkJJnBvcnQtPnN0YXR1cyk7Ci0JCQkJfSBlbHNlCisJCQkJfSBlbHNlIHsKIAkJCQkJcG9ydC0+d3dubiA9IHBsb2dpLT5zZXJ2X3BhcmFtLnd3bm47CisJCQkJCXpmY3BfcGxvZ2lfZXZhbHVhdGUocG9ydCwgcGxvZ2kpOworCQkJCX0KIAkJCX0KIAkJfQogCQlicmVhazsKQEAgLTI5OTMsOCArMjk4OSw4IEBACiAJZXJwX2FjdGlvbi0+ZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQuZmNwX2x1biA9CiAJCWVycF9hY3Rpb24tPnVuaXQtPmZjcF9sdW47CiAJaWYgKCEoZXJwX2FjdGlvbi0+YWRhcHRlci0+Y29ubmVjdGlvbl9mZWF0dXJlcyAmIEZTRl9GRUFUVVJFX05QSVZfTU9ERSkpCi0JZXJwX2FjdGlvbi0+ZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQub3B0aW9uID0KLQkJRlNGX09QRU5fTFVOX1NVUFBSRVNTX0JPWElORzsKKwkJZXJwX2FjdGlvbi0+ZnNmX3JlcS0+cXRjYi0+Ym90dG9tLnN1cHBvcnQub3B0aW9uID0KKwkJCUZTRl9PUEVOX0xVTl9TVVBQUkVTU19CT1hJTkc7CiAJYXRvbWljX3NldF9tYXNrKFpGQ1BfU1RBVFVTX0NPTU1PTl9PUEVOSU5HLCAmZXJwX2FjdGlvbi0+dW5pdC0+c3RhdHVzKTsKIAllcnBfYWN0aW9uLT5mc2ZfcmVxLT5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIGVycF9hY3Rpb24tPnVuaXQ7CiAJZXJwX2FjdGlvbi0+ZnNmX3JlcS0+ZXJwX2FjdGlvbiA9IGVycF9hY3Rpb247CkBAIC0zNTY5LDcgKzM1NjUsNyBAQAogCX0KIAogCS8qIHNldCBGQyBzZXJ2aWNlIGNsYXNzIGluIFFUQ0IgKDMgcGVyIGRlZmF1bHQpICovCi0JZnNmX3JlcS0+cXRjYi0+Ym90dG9tLmlvLnNlcnZpY2VfY2xhc3MgPSBhZGFwdGVyLT5mY19zZXJ2aWNlX2NsYXNzOworCWZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5pby5zZXJ2aWNlX2NsYXNzID0gWkZDUF9GQ19TRVJWSUNFX0NMQVNTX0RFRkFVTFQ7CiAKIAkvKiBzZXQgRkNQX0xVTiBpbiBGQ1BfQ01ORCBJVSBpbiBRVENCICovCiAJZmNwX2NtbmRfaXUtPmZjcF9sdW4gPSB1bml0LT5mY3BfbHVuOwpAQCAtMzY2NywxOCArMzY2Myw2IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOiAgICB6ZmNwX2ZzZl9zZW5kX2ZjcF9jb21tYW5kX3Rhc2tfbWFuYWdlbWVudAotICoKLSAqIHB1cnBvc2U6Ci0gKgotICogcmV0dXJuczoKLSAqCi0gKiBGSVhNRShkZXNpZ24pOiBzaG91bGQgYmUgd2F0Y2hlZCBieSBhIHRpbWVvdXQhISEKLSAqIEZJWE1FKGRlc2lnbikgc2hvdWxkbid0IHRoaXMgYmUgbW9kaWZpZWQgdG8gcmV0dXJuIGFuIGludAotICogICAgICAgICAgICAgICBhbHNvLi4uZG9uJ3Qga25vdyBob3cgdGhvdWdoCi0gKgotICovCiBzdHJ1Y3QgemZjcF9mc2ZfcmVxICoKIHpmY3BfZnNmX3NlbmRfZmNwX2NvbW1hbmRfdGFza19tYW5hZ2VtZW50KHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCSAgc3RydWN0IHpmY3BfdW5pdCAqdW5pdCwKQEAgLTM3MjAsNyArMzcwNCw3IEBACiAJZnNmX3JlcS0+cXRjYi0+aGVhZGVyLmx1bl9oYW5kbGUgPSB1bml0LT5oYW5kbGU7CiAJZnNmX3JlcS0+cXRjYi0+aGVhZGVyLnBvcnRfaGFuZGxlID0gdW5pdC0+cG9ydC0+aGFuZGxlOwogCWZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5pby5kYXRhX2RpcmVjdGlvbiA9IEZTRl9EQVRBRElSX0NNTkQ7Ci0JZnNmX3JlcS0+cXRjYi0+Ym90dG9tLmlvLnNlcnZpY2VfY2xhc3MgPSBhZGFwdGVyLT5mY19zZXJ2aWNlX2NsYXNzOworCWZzZl9yZXEtPnF0Y2ItPmJvdHRvbS5pby5zZXJ2aWNlX2NsYXNzID0gWkZDUF9GQ19TRVJWSUNFX0NMQVNTX0RFRkFVTFQ7CiAJZnNmX3JlcS0+cXRjYi0+Ym90dG9tLmlvLmZjcF9jbW5kX2xlbmd0aCA9CiAJCXNpemVvZiAoc3RydWN0IGZjcF9jbW5kX2l1KSArIHNpemVvZiAoZmNwX2RsX3QpOwogCkBAIC0zODQzLDE4ICszODI3LDEwIEBACiAJCWJyZWFrOwogCiAJY2FzZSBGU0ZfU0VSVklDRV9DTEFTU19OT1RfU1VQUE9SVEVEOgotCQlpZiAoZnNmX3JlcS0+YWRhcHRlci0+ZmNfc2VydmljZV9jbGFzcyA8PSAzKSB7Ci0JCQlaRkNQX0xPR19OT1JNQUwoImVycm9yOiBUaGUgYWRhcHRlciAlcyBkb2VzICIKLQkJCQkJIm5vdCBzdXBwb3J0IGZpYnJlY2hhbm5lbCBjbGFzcyAlZC5cbiIsCi0JCQkJCXpmY3BfZ2V0X2J1c2lkX2J5X3VuaXQodW5pdCksCi0JCQkJCWZzZl9yZXEtPmFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3MpOwotCQl9IGVsc2UgewotCQkJWkZDUF9MT0dfTk9STUFMKCJidWc6IFRoZSBmaWJyZWNoYW5uZWwgY2xhc3MgYXQgIgotCQkJCQkiYWRhcHRlciAlcyBpcyBpbnZhbGlkLiAiCi0JCQkJCSIoZGVidWcgaW5mbyAlZClcbiIsCi0JCQkJCXpmY3BfZ2V0X2J1c2lkX2J5X3VuaXQodW5pdCksCi0JCQkJCWZzZl9yZXEtPmFkYXB0ZXItPmZjX3NlcnZpY2VfY2xhc3MpOwotCQl9CisJCVpGQ1BfTE9HX0lORk8oImVycm9yOiBhZGFwdGVyICVzIGRvZXMgbm90IHN1cHBvcnQgZmMgIgorCQkJICAgICAgImNsYXNzICVkLlxuIiwKKwkJCSAgICAgIHpmY3BfZ2V0X2J1c2lkX2J5X3VuaXQodW5pdCksCisJCQkgICAgICBaRkNQX0ZDX1NFUlZJQ0VfQ0xBU1NfREVGQVVMVCk7CiAJCS8qIHN0b3Agb3BlcmF0aW9uIGZvciB0aGlzIGFkYXB0ZXIgKi8KIAkJZGVidWdfdGV4dF9leGNlcHRpb24oZnNmX3JlcS0+YWRhcHRlci0+ZXJwX2RiZiwgMCwKIAkJCQkgICAgICJmc2Zfc19jbGFzc19uc3VwIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaAppbmRleCBlNzM0NDE1Li43MTE4NjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKQEAgLTEsMTkgKzEsOCBAQAogLyogCi0gKiAKLSAqIGxpbnV4L2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKLSAqIAotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzIAotICogCi0gKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA0CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgemZjcCBkZXZpY2UgZHJpdmVyIGZvcgorICogRkNQIGFkYXB0ZXJzIGZvciBJQk0gU3lzdGVtIHo5IGFuZCB6U2VyaWVzLgogICoKLSAqIEF1dGhvcihzKTogTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBSYWltdW5kIFNjaHJvZWRlciA8cmFpbXVuZC5zY2hyb2VkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEFyb24gWmVoCi0gKiAgICAgICAgICAgIFdvbGZnYW5nIFRhcGhvcm4KLSAqICAgICAgICAgICAgU3RlZmFuIEJhZGVyIDxzdGVmYW4uYmFkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgotICogICAgICAgICAgICBBbmRyZWFzIEhlcnJtYW5uIDxhaGVycm1hbkBkZS5pYm0uY29tPgotICogICAgICAgICAgICBWb2xrZXIgU2FtZXNrZSA8c2FtZXNrZUBkZS5pYm0uY29tPgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNgogICogCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IApAQCAtMzMsOCArMjIsNyBAQAogI2lmbmRlZiBGU0ZfSAogI2RlZmluZSBGU0ZfSAogCi0jZGVmaW5lIEZTRl9RVENCX1ZFUlNJT04xCQkJMHgwMDAwMDAwMQotI2RlZmluZSBGU0ZfUVRDQl9DVVJSRU5UX1ZFUlNJT04JCUZTRl9RVENCX1ZFUlNJT04xCisjZGVmaW5lIEZTRl9RVENCX0NVUlJFTlRfVkVSU0lPTgkJMHgwMDAwMDAwMQogCiAvKiBGU0YgY29tbWFuZHMgKi8KICNkZWZpbmUJRlNGX1FUQ0JfRkNQX0NNTkQJCQkweDAwMDAwMDAxCkBAIC02NCw3ICs1Miw3IEBACiAjZGVmaW5lIEZTRl9DRkRDX09QVElPTl9GVUxMX0FDQ0VTUwkJMHgwMDAwMDAwMgogI2RlZmluZSBGU0ZfQ0ZEQ19PUFRJT05fUkVTVFJJQ1RFRF9BQ0NFU1MJMHgwMDAwMDAwNAogCi0vKiBGU0YgcHJvdG9jb2wgc3RhdGkgKi8KKy8qIEZTRiBwcm90b2NvbCBzdGF0ZXMgKi8KICNkZWZpbmUgRlNGX1BST1RfR09PRAkJCQkweDAwMDAwMDAxCiAjZGVmaW5lIEZTRl9QUk9UX1FUQ0JfVkVSU0lPTl9FUlJPUgkJMHgwMDAwMDAxMAogI2RlZmluZSBGU0ZfUFJPVF9TRVFfTlVNQl9FUlJPUgkJCTB4MDAwMDAwMjAKQEAgLTc2LDcgKzY0LDcgQEAKICNkZWZpbmUgRlNGX1BST1RfUkVFU1RfUVVFVUUgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA4MDAKICNkZWZpbmUgRlNGX1BST1RfRVJST1JfU1RBVEUJCQkweDAxMDAwMDAwCiAKLS8qIEZTRiBzdGF0aSAqLworLyogRlNGIHN0YXRlcyAqLwogI2RlZmluZSBGU0ZfR09PRAkJCQkweDAwMDAwMDAwCiAjZGVmaW5lIEZTRl9QT1JUX0FMUkVBRFlfT1BFTgkJCTB4MDAwMDAwMDEKICNkZWZpbmUgRlNGX0xVTl9BTFJFQURZX09QRU4JCQkweDAwMDAwMDAyCkBAIC0yNjksMjAgKzI1Nyw2IEBACiAjZGVmaW5lIEZTRl9VTklUX0FDQ0VTU19FWENMVVNJVkUJCTB4MDIwMDAwMDAKICNkZWZpbmUgRlNGX1VOSVRfQUNDRVNTX09VVEJPVU5EX1RSQU5TRkVSCTB4MTAwMDAwMDAKIAotc3RydWN0IGZzZl9xdWV1ZV9kZXNpZ25hdG9yOwotc3RydWN0IGZzZl9zdGF0dXNfcmVhZF9idWZmZXI7Ci1zdHJ1Y3QgZnNmX3BvcnRfY2xvc2VkX3BheWxvYWQ7Ci1zdHJ1Y3QgZnNmX2JpdF9lcnJvcl9wYXlsb2FkOwotdW5pb24gIGZzZl9wcm90X3N0YXR1c19xdWFsOwotc3RydWN0IGZzZl9xdWFsX3ZlcnNpb25fZXJyb3I7Ci1zdHJ1Y3QgZnNmX3F1YWxfc2VxdWVuY2VfZXJyb3I7Ci1zdHJ1Y3QgZnNmX3F0Y2JfcHJlZml4Owotc3RydWN0IGZzZl9xdGNiX2hlYWRlcjsKLXN0cnVjdCBmc2ZfcXRjYl9ib3R0b21fY29uZmlnOwotc3RydWN0IGZzZl9xdGNiX2JvdHRvbV9zdXBwb3J0Owotc3RydWN0IGZzZl9xdGNiX2JvdHRvbV9pbzsKLXVuaW9uICBmc2ZfcXRjYl9ib3R0b207Ci0KIHN0cnVjdCBmc2ZfcXVldWVfZGVzaWduYXRvciB7CiAJdTggIGNzc2lkOwogCXU4ICBjaHBpZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKaW5kZXggMWMzMjc1MS4uMzQ1YTE5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKQEAgLTEsMTggKzEsOCBAQAogLyoKLSAqIGxpbnV4L2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgemZjcCBkZXZpY2UgZHJpdmVyIGZvcgorICogRkNQIGFkYXB0ZXJzIGZvciBJQk0gU3lzdGVtIHo5IGFuZCB6U2VyaWVzLgogICoKLSAqIEZDUCBhZGFwdGVyIGRyaXZlciBmb3IgSUJNIGVTZXJ2ZXIgelNlcmllcwotICoKLSAqIFFESU8gcmVsYXRlZCByb3V0aW5lcwotICoKLSAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDQKLSAqCi0gKiBBdXRob3JzOgotICogICAgICBNYXJ0aW4gUGVzY2hrZSA8bXBlc2Noa2VAZGUuaWJtLmNvbT4KLSAqICAgICAgUmFpbXVuZCBTY2hyb2VkZXIgPHJhaW11bmQuc2Nocm9lZGVyQGRlLmlibS5jb20+Ci0gKiAgICAgIFdvbGZnYW5nIFRhcGhvcm4KLSAqICAgICAgSGVpa28gQ2Fyc3RlbnMgPGhlaWtvLmNhcnN0ZW5zQGRlLmlibS5jb20+Ci0gKiAgICAgIEFuZHJlYXMgSGVycm1hbm4gPGFoZXJybWFuQGRlLmlibS5jb20+CisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA2CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNzgsNyArMTY4LDggQEAKIAogCWluaXRfZGF0YS0+Y2RldiA9IGFkYXB0ZXItPmNjd19kZXZpY2U7CiAJaW5pdF9kYXRhLT5xX2Zvcm1hdCA9IFFESU9fU0NTSV9RRk1UOwotCW1lbWNweShpbml0X2RhdGEtPmFkYXB0ZXJfbmFtZSwgJmFkYXB0ZXItPm5hbWUsIDgpOworCW1lbWNweShpbml0X2RhdGEtPmFkYXB0ZXJfbmFtZSwgemZjcF9nZXRfYnVzaWRfYnlfYWRhcHRlcihhZGFwdGVyKSwgOCk7CisJQVNDRUJDKGluaXRfZGF0YS0+YWRhcHRlcl9uYW1lLCA4KTsKIAlpbml0X2RhdGEtPnFpYl9wYXJhbV9maWVsZF9mb3JtYXQgPSAwOwogCWluaXRfZGF0YS0+cWliX3BhcmFtX2ZpZWxkID0gTlVMTDsKIAlpbml0X2RhdGEtPmlucHV0X3NsaWJfZWxlbWVudHMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zY3NpLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3Njc2kuYwppbmRleCA5ZTZkMDdkLi40NmUxNGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3Njc2kuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3Njc2kuYwpAQCAtMSwxOCArMSw4IEBACiAvKiAKLSAqIAotICogbGludXgvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zY3NpLmMKLSAqIAotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzIAotICogCi0gKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA0CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgemZjcCBkZXZpY2UgZHJpdmVyIGZvcgorICogRkNQIGFkYXB0ZXJzIGZvciBJQk0gU3lzdGVtIHo5IGFuZCB6U2VyaWVzLgogICoKLSAqIEF1dGhvcihzKTogTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+IAotICogICAgICAgICAgICBSYWltdW5kIFNjaHJvZWRlciA8cmFpbXVuZC5zY2hyb2VkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEFyb24gWmVoCi0gKiAgICAgICAgICAgIFdvbGZnYW5nIFRhcGhvcm4KLSAqICAgICAgICAgICAgU3RlZmFuIEJhZGVyIDxzdGVmYW4uYmFkZXJAZGUuaWJtLmNvbT4gCi0gKiAgICAgICAgICAgIEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPiAKLSAqICAgICAgICAgICAgQW5kcmVhcyBIZXJybWFubiA8YWhlcnJtYW5AZGUuaWJtLmNvbT4KKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDYKICAqIAogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAKQEAgLTQ1LDggKzM1LDggQEAKIHN0YXRpYyBpbnQgemZjcF90YXNrX21hbmFnZW1lbnRfZnVuY3Rpb24oc3RydWN0IHpmY3BfdW5pdCAqLCB1OCwKIAkJCQkJIHN0cnVjdCBzY3NpX2NtbmQgKik7CiAKLXN0YXRpYyBzdHJ1Y3QgemZjcF91bml0ICp6ZmNwX3VuaXRfbG9va3VwKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKiwgaW50LCBzY3NpX2lkX3QsCi0JCQkJCSAgc2NzaV9sdW5fdCk7CitzdGF0aWMgc3RydWN0IHpmY3BfdW5pdCAqemZjcF91bml0X2xvb2t1cChzdHJ1Y3QgemZjcF9hZGFwdGVyICosIGludCwKKwkJCQkJICB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CiAKIHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqemZjcF9zeXNmc19zZGV2X2F0dHJzW107CiAKQEAgLTE2MSwxNCArMTUxLDYgQEAKIAlzZXRfYnl0ZShyZXN1bHQsIHN0YXR1cywgMyk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJemZjcF9zY3NpX3NsYXZlX2FsbG9jCi0gKgotICogcHVycG9zZToKLSAqCi0gKiByZXR1cm5zOgotICovCi0KIHN0YXRpYyBpbnQKIHpmY3Bfc2NzaV9zbGF2ZV9hbGxvYyhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCkKIHsKQEAgLTE5NSwxNCArMTc3LDYgQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogZnVuY3Rpb246CXpmY3Bfc2NzaV9zbGF2ZV9kZXN0cm95Ci0gKgotICogcHVycG9zZToKLSAqCi0gKiByZXR1cm5zOgotICovCi0KIHN0YXRpYyB2b2lkCiB6ZmNwX3Njc2lfc2xhdmVfZGVzdHJveShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcG50KQogewpAQCAtMzc0LDE4ICszNDgsOSBAQAogCXJldHVybiB6ZmNwX3Njc2lfY29tbWFuZF9hc3luYyhhZGFwdGVyLCB1bml0LCBzY3BudCwgTlVMTCk7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjogICAgemZjcF91bml0X2xvb2t1cAotICoKLSAqIHB1cnBvc2U6Ci0gKgotICogcmV0dXJuczoKLSAqCi0gKiBjb250ZXh0OgkKLSAqLwogc3RhdGljIHN0cnVjdCB6ZmNwX3VuaXQgKgotemZjcF91bml0X2xvb2t1cChzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyLCBpbnQgY2hhbm5lbCwgc2NzaV9pZF90IGlkLAotCQkgc2NzaV9sdW5fdCBsdW4pCit6ZmNwX3VuaXRfbG9va3VwKHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBjaGFubmVsLCB1bnNpZ25lZCBpbnQgaWQsCisJCSB1bnNpZ25lZCBpbnQgbHVuKQogewogCXN0cnVjdCB6ZmNwX3BvcnQgKnBvcnQ7CiAJc3RydWN0IHpmY3BfdW5pdCAqdW5pdCwgKnJldHZhbCA9IE5VTEw7CkBAIC00OTEsMTMgKzQ1Niw2IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyoKLSAqIGZ1bmN0aW9uOgl6ZmNwX3Njc2lfZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXIKLSAqCi0gKiBwdXJwb3NlOgotICoKLSAqIHJldHVybnM6Ci0gKi8KIGludAogemZjcF9zY3NpX2VoX2RldmljZV9yZXNldF9oYW5kbGVyKHN0cnVjdCBzY3NpX2NtbmQgKnNjcG50KQogewpAQCAtNjI1LDEzICs1ODMsNiBAQAogCXJldHVybiBTVUNDRVNTOwogfQogCi0vKgotICogZnVuY3Rpb246CQotICoKLSAqIHB1cnBvc2U6CQotICoKLSAqIHJldHVybnM6Ci0gKi8KIGludAogemZjcF9hZGFwdGVyX3Njc2lfcmVnaXN0ZXIoc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRlcikKIHsKQEAgLTY1NywxMCArNjA4LDYgQEAKIAlhZGFwdGVyLT5zY3NpX2hvc3QtPnVuaXF1ZV9pZCA9IHVuaXF1ZV9pZCsrOwkvKiBGSVhNRSAqLwogCWFkYXB0ZXItPnNjc2lfaG9zdC0+bWF4X2NtZF9sZW4gPSBaRkNQX01BWF9TQ1NJX0NNTkRfTEVOR1RIOwogCWFkYXB0ZXItPnNjc2lfaG9zdC0+dHJhbnNwb3J0dCA9IHpmY3BfdHJhbnNwb3J0X3RlbXBsYXRlOwotCS8qCi0JICogUmV2ZXJzZSBtYXBwaW5nIG9mIHRoZSBob3N0IG51bWJlciB0byBhdm9pZCByYWNlIGNvbmRpdGlvbgotCSAqLwotCWFkYXB0ZXItPnNjc2lfaG9zdF9ubyA9IGFkYXB0ZXItPnNjc2lfaG9zdC0+aG9zdF9ubzsKIAogCS8qCiAJICogc2F2ZSBhIHBvaW50ZXIgdG8gb3VyIG93biBhZGFwdGVyIGRhdGEgc3RydWN0dXJlIHdpdGhpbgpAQCAtNjc4LDEzICs2MjUsNiBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLS8qCi0gKiBmdW5jdGlvbjoJCi0gKgotICogcHVycG9zZToJCi0gKgotICogcmV0dXJuczoKLSAqLwogdm9pZAogemZjcF9hZGFwdGVyX3Njc2lfdW5yZWdpc3RlcihzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyKQogewpAQCAtNzAzLDcgKzY0Myw2IEBACiAJc2NzaV9yZW1vdmVfaG9zdChzaG9zdCk7CiAJc2NzaV9ob3N0X3B1dChzaG9zdCk7CiAJYWRhcHRlci0+c2NzaV9ob3N0ID0gTlVMTDsKLQlhZGFwdGVyLT5zY3NpX2hvc3Rfbm8gPSAwOwogCWF0b21pY19jbGVhcl9tYXNrKFpGQ1BfU1RBVFVTX0FEQVBURVJfUkVHSVNURVJFRCwgJmFkYXB0ZXItPnN0YXR1cyk7CiAKIAlyZXR1cm47CkBAIC04MTcsMTAgKzc1Niw5IEBACiAJaWYgKCFmY19zdGF0cykKIAkJcmV0dXJuIE5VTEw7CiAKLQlkYXRhID0ga21hbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKKwlkYXRhID0ga3phbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRhdGEpCiAJCXJldHVybiBOVUxMOwotCW1lbXNldChkYXRhLCAwLCBzaXplb2YoKmRhdGEpKTsKIAogCXJldCA9IHpmY3BfZnNmX2V4Y2hhbmdlX3BvcnRfZGF0YShOVUxMLCBhZGFwdGVyLCBkYXRhKTsKIAlpZiAocmV0KSB7CkBAIC04NDgsMTAgKzc4Niw5IEBACiAJaW50IHJldDsKIAogCWFkYXB0ZXIgPSAoc3RydWN0IHpmY3BfYWRhcHRlciAqKXNob3N0LT5ob3N0ZGF0YVswXTsKLQlkYXRhID0ga21hbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKKwlkYXRhID0ga3phbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRhdGEpCiAJCXJldHVybjsKLQltZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKCpkYXRhKSk7CiAKIAlyZXQgPSB6ZmNwX2ZzZl9leGNoYW5nZV9wb3J0X2RhdGEoTlVMTCwgYWRhcHRlciwgZGF0YSk7CiAJaWYgKHJldCA9PSAwKSB7CkBAIC04NjMsMTEgKzgwMCwxOCBAQAogCX0KIH0KIAorc3RhdGljIHZvaWQgemZjcF9zZXRfcnBvcnRfZGV2X2xvc3NfdG1vKHN0cnVjdCBmY19ycG9ydCAqcnBvcnQsIHUzMiB0aW1lb3V0KQoreworCXJwb3J0LT5kZXZfbG9zc190bW8gPSB0aW1lb3V0OworfQorCiBzdHJ1Y3QgZmNfZnVuY3Rpb25fdGVtcGxhdGUgemZjcF90cmFuc3BvcnRfZnVuY3Rpb25zID0gewogCS5zaG93X3N0YXJnZXRfcG9ydF9pZCA9IDEsCiAJLnNob3dfc3RhcmdldF9wb3J0X25hbWUgPSAxLAogCS5zaG93X3N0YXJnZXRfbm9kZV9uYW1lID0gMSwKIAkuc2hvd19ycG9ydF9zdXBwb3J0ZWRfY2xhc3NlcyA9IDEsCisJLnNob3dfcnBvcnRfbWF4ZnJhbWVfc2l6ZSA9IDEsCisJLnNob3dfcnBvcnRfZGV2X2xvc3NfdG1vID0gMSwKIAkuc2hvd19ob3N0X25vZGVfbmFtZSA9IDEsCiAJLnNob3dfaG9zdF9wb3J0X25hbWUgPSAxLAogCS5zaG93X2hvc3RfcGVybWFuZW50X3BvcnRfbmFtZSA9IDEsCkBAIC04NzcsNiArODIxLDcgQEAKIAkuc2hvd19ob3N0X3NlcmlhbF9udW1iZXIgPSAxLAogCS5nZXRfZmNfaG9zdF9zdGF0cyA9IHpmY3BfZ2V0X2ZjX2hvc3Rfc3RhdHMsCiAJLnJlc2V0X2ZjX2hvc3Rfc3RhdHMgPSB6ZmNwX3Jlc2V0X2ZjX2hvc3Rfc3RhdHMsCisJLnNldF9ycG9ydF9kZXZfbG9zc190bW8gPSB6ZmNwX3NldF9ycG9ydF9kZXZfbG9zc190bW8sCiAJLyogbm8gZnVuY3Rpb25zIHJlZ2lzdGVyZWQgZm9yIGZvbGxvd2luZyBkeW5hbWljIGF0dHJpYnV0ZXMgYnV0CiAJICAgZGlyZWN0bHkgc2V0IGJ5IExMREQgKi8KIAkuc2hvd19ob3N0X3BvcnRfdHlwZSA9IDEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX2FkYXB0ZXIuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfYWRhcHRlci5jCmluZGV4IGIyOWFjMjUuLjcwNWM2ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfYWRhcHRlci5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfYWRhcHRlci5jCkBAIC0xLDE2ICsxLDggQEAKIC8qCi0gKiBsaW51eC9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX2FkYXB0ZXIuYworICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHpmY3AgZGV2aWNlIGRyaXZlciBmb3IKKyAqIEZDUCBhZGFwdGVycyBmb3IgSUJNIFN5c3RlbSB6OSBhbmQgelNlcmllcy4KICAqCi0gKiBGQ1AgYWRhcHRlciBkcml2ZXIgZm9yIElCTSBlU2VydmVyIHpTZXJpZXMKLSAqCi0gKiBzeXNmcyBhZGFwdGVyIHJlbGF0ZWQgcm91dGluZXMKLSAqCi0gKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAzLCAyMDA0Ci0gKgotICogQXV0aG9yczoKLSAqICAgICAgTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+Ci0gKglIZWlrbyBDYXJzdGVucyA8aGVpa28uY2Fyc3RlbnNAZGUuaWJtLmNvbT4KLSAqICAgICAgQW5kcmVhcyBIZXJybWFubiA8YWhlcnJtYW5AZGUuaWJtLmNvbT4KKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDYKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfZHJpdmVyLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX2RyaXZlci5jCmluZGV4IDY2MjJkNTUuLjAwNWU2MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zeXNmc19kcml2ZXIuYwpAQCAtMSwxNiArMSw4IEBACiAvKgotICogbGludXgvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zeXNmc19kcml2ZXIuYworICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHpmY3AgZGV2aWNlIGRyaXZlciBmb3IKKyAqIEZDUCBhZGFwdGVycyBmb3IgSUJNIFN5c3RlbSB6OSBhbmQgelNlcmllcy4KICAqCi0gKiBGQ1AgYWRhcHRlciBkcml2ZXIgZm9yIElCTSBlU2VydmVyIHpTZXJpZXMKLSAqCi0gKiBzeXNmcyBkcml2ZXIgcmVsYXRlZCByb3V0aW5lcwotICoKLSAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMsIDIwMDQKLSAqCi0gKiBBdXRob3JzOgotICogICAgICBNYXJ0aW4gUGVzY2hrZSA8bXBlc2Noa2VAZGUuaWJtLmNvbT4KLSAqCUhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgotICogICAgICBBbmRyZWFzIEhlcnJtYW5uIDxhaGVycm1hbkBkZS5pYm0uY29tPgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwNgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zeXNmc19wb3J0LmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX3BvcnQuYwppbmRleCBmNDAxZDQyLi4xMzIwYzA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX3BvcnQuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX3BvcnQuYwpAQCAtMSwxNyArMSw4IEBACiAvKgotICogbGludXgvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zeXNmc19wb3J0LmMKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB6ZmNwIGRldmljZSBkcml2ZXIgZm9yCisgKiBGQ1AgYWRhcHRlcnMgZm9yIElCTSBTeXN0ZW0gejkgYW5kIHpTZXJpZXMuCiAgKgotICogRkNQIGFkYXB0ZXIgZHJpdmVyIGZvciBJQk0gZVNlcnZlciB6U2VyaWVzCi0gKgotICogc3lzZnMgcG9ydCByZWxhdGVkIHJvdXRpbmVzCi0gKgotICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMywgMjAwNAotICoKLSAqIEF1dGhvcnM6Ci0gKiAgICAgIE1hcnRpbiBQZXNjaGtlIDxtcGVzY2hrZUBkZS5pYm0uY29tPgotICoJSGVpa28gQ2Fyc3RlbnMgPGhlaWtvLmNhcnN0ZW5zQGRlLmlibS5jb20+Ci0gKiAgICAgIEFuZHJlYXMgSGVycm1hbm4gPGFoZXJybWFuQGRlLmlibS5jb20+Ci0gKiAgICAgIFZvbGtlciBTYW1lc2tlIDxzYW1lc2tlQGRlLmlibS5jb20+CisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDA2CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX3VuaXQuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfdW5pdC5jCmluZGV4IGFkNWRmYjguLjgxYTQ4NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfdW5pdC5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc3lzZnNfdW5pdC5jCkBAIC0xLDE3ICsxLDggQEAKIC8qCi0gKiBsaW51eC9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3N5c2ZzX3VuaXQuYworICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHpmY3AgZGV2aWNlIGRyaXZlciBmb3IKKyAqIEZDUCBhZGFwdGVycyBmb3IgSUJNIFN5c3RlbSB6OSBhbmQgelNlcmllcy4KICAqCi0gKiBGQ1AgYWRhcHRlciBkcml2ZXIgZm9yIElCTSBlU2VydmVyIHpTZXJpZXMKLSAqCi0gKiBzeXNmcyB1bml0IHJlbGF0ZWQgcm91dGluZXMKLSAqCi0gKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAzLCAyMDA0Ci0gKgotICogQXV0aG9yczoKLSAqICAgICAgTWFydGluIFBlc2Noa2UgPG1wZXNjaGtlQGRlLmlibS5jb20+Ci0gKglIZWlrbyBDYXJzdGVucyA8aGVpa28uY2Fyc3RlbnNAZGUuaWJtLmNvbT4KLSAqICAgICAgQW5kcmVhcyBIZXJybWFubiA8YWhlcnJtYW5AZGUuaWJtLmNvbT4KLSAqICAgICAgVm9sa2VyIFNhbWVza2UgPHNhbWVza2VAZGUuaWJtLmNvbT4KKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDYKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2J1cy9jaGFyL2Nwd2F0Y2hkb2cuYyBiL2RyaXZlcnMvc2J1cy9jaGFyL2Nwd2F0Y2hkb2cuYwppbmRleCBmZDJjYzc3Li41YmYzZGQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NidXMvY2hhci9jcHdhdGNoZG9nLmMKKysrIGIvZHJpdmVycy9zYnVzL2NoYXIvY3B3YXRjaGRvZy5jCkBAIC0zMDQsOCArMzA0LDggQEAKIAkJCQkJCVNBX1NISVJRLAogCQkJCQkJV0RfT0JQTkFNRSwKIAkJCQkJCSh2b2lkICopd2RfZGV2LnJlZ3MpKSB7Ci0JCQlwcmludGsoIiVzOiBDYW5ub3QgcmVnaXN0ZXIgSVJRICVzXG4iLCAKLQkJCQlXRF9PQlBOQU1FLCBfX2lycV9pdG9hKHdkX2Rldi5pcnEpKTsKKwkJCXByaW50aygiJXM6IENhbm5vdCByZWdpc3RlciBJUlEgJWRcbiIsIAorCQkJCVdEX09CUE5BTUUsIHdkX2Rldi5pcnEpOwogCQkJcmV0dXJuKC1FQlVTWSk7CiAJCX0KIAkJd2RfZGV2LmluaXRpYWxpemVkID0gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2J1cy9jaGFyL3VjdHJsLmMgYi9kcml2ZXJzL3NidXMvY2hhci91Y3RybC5jCmluZGV4IGUyZDlhN2MuLjU3NWIxZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2J1cy9jaGFyL3VjdHJsLmMKKysrIGIvZHJpdmVycy9zYnVzL2NoYXIvdWN0cmwuYwpAQCAtNDAwLDcgKzQwMCw3IEBACiAJfQogCiAJZHJpdmVyLT5yZWdzLT51Y3RybF9pbnRyID0gVUNUUkxfSU5UUl9SWE5FX1JFUXxVQ1RSTF9JTlRSX1JYTkVfTVNLOwotCXByaW50aygidWN0cmw6IDB4JXggKGlycSAlcylcbiIsIGRyaXZlci0+cmVncywgX19pcnFfaXRvYShkcml2ZXItPmlycSkpOworCXByaW50aygidWN0cmw6IDB4JXggKGlycSAlZClcbiIsIGRyaXZlci0+cmVncywgZHJpdmVyLT5pcnEpOwogCXVjdHJsX2dldF9ldmVudF9zdGF0dXMoKTsKIAl1Y3RybF9nZXRfZXh0ZXJuYWxfc3RhdHVzKCk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzN3LTl4eHguYyBiL2RyaXZlcnMvc2NzaS8zdy05eHh4LmMKaW5kZXggY2FlYjZkMi4uYjAwM2JhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LTl4eHguYworKysgYi9kcml2ZXJzL3Njc2kvM3ctOXh4eC5jCkBAIC0xMzg4LDcgKzEzODgsNyBAQAogCWlmIChjbWQtPnVzZV9zZyA9PSAwKQogCQlnb3RvIG91dDsKIAotCXVzZV9zZyA9IHBjaV9tYXBfc2cocGRldiwgY21kLT5idWZmZXIsIGNtZC0+dXNlX3NnLCBETUFfQklESVJFQ1RJT05BTCk7CisJdXNlX3NnID0gcGNpX21hcF9zZyhwZGV2LCBjbWQtPnJlcXVlc3RfYnVmZmVyLCBjbWQtPnVzZV9zZywgRE1BX0JJRElSRUNUSU9OQUwpOwogCiAJaWYgKHVzZV9zZyA9PSAwKSB7CiAJCVRXX1BSSU5USyh0d19kZXYtPmhvc3QsIFRXX0RSSVZFUiwgMHgxYywgIkZhaWxlZCB0byBtYXAgc2NhdHRlciBnYXRoZXIgbGlzdCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzN3LXh4eHguYyBiL2RyaXZlcnMvc2NzaS8zdy14eHh4LmMKaW5kZXggZThlNDFlNi4uMTdkYmQ0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LXh4eHguYworKysgYi9kcml2ZXJzL3Njc2kvM3cteHh4eC5jCkBAIC00MDUsNyArNDA1LDcgQEAKIAkvKiBBdHRlbXB0IHRvIHJldHVybiBpbnRlbGxpZ2VudCBzZW5zZSBpbmZvcm1hdGlvbiAqLwogCWlmIChmaWxsX3NlbnNlKSB7CiAJCWlmICgoY29tbWFuZC0+c3RhdHVzID09IDB4YzcpIHx8IChjb21tYW5kLT5zdGF0dXMgPT0gMHhjYikpIHsKLQkJCWZvciAoaT0wO2k8KHNpemVvZih0d19zZW5zZV90YWJsZSkvc2l6ZW9mKHR3X3NlbnNlX3RhYmxlWzBdKSk7aSsrKSB7CisJCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0d19zZW5zZV90YWJsZSk7IGkrKykgewogCQkJCWlmIChjb21tYW5kLT5mbGFncyA9PSB0d19zZW5zZV90YWJsZVtpXVswXSkgewogCiAJCQkJCS8qIFZhbGlkIGJpdCBhbmQgJ2N1cnJlbnQgZXJyb3JzJyAqLwpAQCAtNjI1LDcgKzYyNSw3IEBACiAJaWYgKGFlbiA9PSAweDBmZikgewogCQlwcmludGsoS0VSTl9XQVJOSU5HICIzdy14eHh4OiBzY3NpJWQ6IEFFTjogSU5GTzogQUVOIHF1ZXVlIG92ZXJmbG93LlxuIiwgdHdfZGV2LT5ob3N0LT5ob3N0X25vKTsKIAl9IGVsc2UgewotCQl0YWJsZV9tYXggPSBzaXplb2YodHdfYWVuX3N0cmluZykvc2l6ZW9mKGNoYXIgKik7CisJCXRhYmxlX21heCA9IEFSUkFZX1NJWkUodHdfYWVuX3N0cmluZyk7CiAJCWlmICgoYWVuICYgMHgwZmYpIDwgdGFibGVfbWF4KSB7CiAJCQlpZiAoKHR3X2Flbl9zdHJpbmdbYWVuICYgMHhmZl1bc3RybGVuKHR3X2Flbl9zdHJpbmdbYWVuICYgMHhmZl0pLTFdKSA9PSAnIycpIHsKIAkJCQlwcmludGsoS0VSTl9XQVJOSU5HICIzdy14eHh4OiBzY3NpJWQ6IEFFTjogJXMlZC5cbiIsIHR3X2Rldi0+aG9zdC0+aG9zdF9ubywgdHdfYWVuX3N0cmluZ1thZW4gJiAweGZmXSwgYWVuID4+IDgpOwpAQCAtNzg2LDcgKzc4Niw3IEBACiAJCQkJCWlmIChhZW4gPT0gMHgwZmYpIHsKIAkJCQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIjN3LXh4eHg6IEFFTjogSU5GTzogQUVOIHF1ZXVlIG92ZXJmbG93LlxuIik7CiAJCQkJCX0gZWxzZSB7Ci0JCQkJCQl0YWJsZV9tYXggPSBzaXplb2YodHdfYWVuX3N0cmluZykvc2l6ZW9mKGNoYXIgKik7CisJCQkJCQl0YWJsZV9tYXggPSBBUlJBWV9TSVpFKHR3X2Flbl9zdHJpbmcpOwogCQkJCQkJaWYgKChhZW4gJiAweDBmZikgPCB0YWJsZV9tYXgpIHsKIAkJCQkJCQlpZiAoKHR3X2Flbl9zdHJpbmdbYWVuICYgMHhmZl1bc3RybGVuKHR3X2Flbl9zdHJpbmdbYWVuICYgMHhmZl0pLTFdKSA9PSAnIycpIHsKIAkJCQkJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiM3cteHh4eDogQUVOOiAlcyVkLlxuIiwgdHdfYWVuX3N0cmluZ1thZW4gJiAweGZmXSwgYWVuID4+IDgpOwpAQCAtMTI4Niw3ICsxMjg2LDcgQEAKIAlpZiAoY21kLT51c2Vfc2cgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQl1c2Vfc2cgPSBwY2lfbWFwX3NnKHBkZXYsIGNtZC0+YnVmZmVyLCBjbWQtPnVzZV9zZywgRE1BX0JJRElSRUNUSU9OQUwpOworCXVzZV9zZyA9IHBjaV9tYXBfc2cocGRldiwgY21kLT5yZXF1ZXN0X2J1ZmZlciwgY21kLT51c2Vfc2csIERNQV9CSURJUkVDVElPTkFMKTsKIAkKIAlpZiAodXNlX3NnID09IDApIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiM3cteHh4eDogdHdfbWFwX3Njc2lfc2dfZGF0YSgpOiBwY2lfbWFwX3NnKCkgZmFpbGVkLlxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvNTNjNzAwLmMgYi9kcml2ZXJzL3Njc2kvNTNjNzAwLmMKaW5kZXggNmEwZjk1MC4uM2M2ODNkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzUzYzcwMC5jCisrKyBiL2RyaXZlcnMvc2NzaS81M2M3MDAuYwpAQCAtMTgzLDYgKzE4MywxMCBAQAogCiBTVEFUSUMgc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICpOQ1JfNzAwX3RyYW5zcG9ydF90ZW1wbGF0ZSA9IE5VTEw7CiAKK3N0cnVjdCBOQ1JfNzAwX3NlbnNlIHsKKwl1bnNpZ25lZCBjaGFyIGNtbmRbTUFYX0NPTU1BTkRfU0laRV07Cit9OworCiBzdGF0aWMgY2hhciAqTkNSXzcwMF9waGFzZVtdID0gewogCSIiLAogCSJhZnRlciBzZWxlY3Rpb24iLApAQCAtMzE2LDcgKzMyMCw3IEBACiAJQlVHX09OKCFkbWFfaXNfY29uc2lzdGVudChwU2NyaXB0KSAmJiBMMV9DQUNIRV9CWVRFUyA8IGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KCkpOwogCWhvc3RkYXRhLT5zbG90cyA9IChzdHJ1Y3QgTkNSXzcwMF9jb21tYW5kX3Nsb3QgKikobWVtb3J5ICsgU0xPVFNfT0ZGU0VUKTsKIAlob3N0ZGF0YS0+ZGV2ID0gZGV2OwotCQkKKwogCXBTbG90cyA9IHBTY3JpcHQgKyBTTE9UU19PRkZTRVQ7CiAKIAkvKiBGaWxsIGluIHRoZSBtaXNzaW5nIHJvdXRpbmVzIGZyb20gdGhlIGhvc3QgdGVtcGxhdGUgKi8KQEAgLTMzMiwxOSArMzM2LDE4IEBACiAJdHBudC0+c2xhdmVfZGVzdHJveSA9IE5DUl83MDBfc2xhdmVfZGVzdHJveTsKIAl0cG50LT5jaGFuZ2VfcXVldWVfZGVwdGggPSBOQ1JfNzAwX2NoYW5nZV9xdWV1ZV9kZXB0aDsKIAl0cG50LT5jaGFuZ2VfcXVldWVfdHlwZSA9IE5DUl83MDBfY2hhbmdlX3F1ZXVlX3R5cGU7Ci0JCisKIAlpZih0cG50LT5uYW1lID09IE5VTEwpCiAJCXRwbnQtPm5hbWUgPSAiNTNjNzAwIjsKIAlpZih0cG50LT5wcm9jX25hbWUgPT0gTlVMTCkKIAkJdHBudC0+cHJvY19uYW1lID0gIjUzYzcwMCI7Ci0JCiAKIAlob3N0ID0gc2NzaV9ob3N0X2FsbG9jKHRwbnQsIDQpOwogCWlmICghaG9zdCkKIAkJcmV0dXJuIE5VTEw7CiAJbWVtc2V0KGhvc3RkYXRhLT5zbG90cywgMCwgc2l6ZW9mKHN0cnVjdCBOQ1JfNzAwX2NvbW1hbmRfc2xvdCkKIAkgICAgICAgKiBOQ1JfNzAwX0NPTU1BTkRfU0xPVFNfUEVSX0hPU1QpOwotCWZvcihqID0gMDsgaiA8IE5DUl83MDBfQ09NTUFORF9TTE9UU19QRVJfSE9TVDsgaisrKSB7CisJZm9yIChqID0gMDsgaiA8IE5DUl83MDBfQ09NTUFORF9TTE9UU19QRVJfSE9TVDsgaisrKSB7CiAJCWRtYV9hZGRyX3Qgb2Zmc2V0ID0gKGRtYV9hZGRyX3QpKCh1bnNpZ25lZCBsb25nKSZob3N0ZGF0YS0+c2xvdHNbal0uU0dbMF0KIAkJCQkJICAtICh1bnNpZ25lZCBsb25nKSZob3N0ZGF0YS0+c2xvdHNbMF0uU0dbMF0pOwogCQlob3N0ZGF0YS0+c2xvdHNbal0ucFNHID0gKHN0cnVjdCBOQ1JfNzAwX1NHX0xpc3QgKikoKHVuc2lnbmVkIGxvbmcpKHBTbG90cyArIG9mZnNldCkpOwpAQCAtMzU1LDE0ICszNTgsMTIgQEAKIAkJaG9zdGRhdGEtPnNsb3RzW2pdLnN0YXRlID0gTkNSXzcwMF9TTE9UX0ZSRUU7CiAJfQogCi0JZm9yKGogPSAwOyBqIDwgc2l6ZW9mKFNDUklQVCkvc2l6ZW9mKFNDUklQVFswXSk7IGorKykgeworCWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKFNDUklQVCk7IGorKykKIAkJc2NyaXB0W2pdID0gYlNfdG9faG9zdChTQ1JJUFRbal0pOwotCX0KIAogCS8qIGFkanVzdCBhbGwgbGFiZWxzIHRvIGJlIGJ1cyBwaHlzaWNhbCAqLwotCWZvcihqID0gMDsgaiA8IFBBVENIRVM7IGorKykgeworCWZvciAoaiA9IDA7IGogPCBQQVRDSEVTOyBqKyspCiAJCXNjcmlwdFtMQUJFTFBBVENIRVNbal1dID0gYlNfdG9faG9zdChwU2NyaXB0ICsgU0NSSVBUW0xBQkVMUEFUQ0hFU1tqXV0pOwotCX0KIAkvKiBub3cgcGF0Y2ggdXAgZml4ZWQgYWRkcmVzc2VzLiAqLwogCXNjcmlwdF9wYXRjaF8zMihzY3JpcHQsIE1lc3NhZ2VMb2NhdGlvbiwKIAkJCXBTY3JpcHQgKyBNU0dPVVRfT0ZGU0VUKTsKQEAgLTM3Niw3ICszNzcsNyBAQAogCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGhvc3RkYXRhLT5kZXYsIHBTY3JpcHQsIHNpemVvZihTQ1JJUFQpLCBETUFfVE9fREVWSUNFKTsKIAlob3N0ZGF0YS0+c3RhdGUgPSBOQ1JfNzAwX0hPU1RfRlJFRTsKIAlob3N0ZGF0YS0+Y21kID0gTlVMTDsKLQlob3N0LT5tYXhfaWQgPSA3OworCWhvc3QtPm1heF9pZCA9IDg7CiAJaG9zdC0+bWF4X2x1biA9IE5DUl83MDBfTUFYX0xVTlM7CiAJQlVHX09OKE5DUl83MDBfdHJhbnNwb3J0X3RlbXBsYXRlID09IE5VTEwpOwogCWhvc3QtPnRyYW5zcG9ydHQgPSBOQ1JfNzAwX3RyYW5zcG9ydF90ZW1wbGF0ZTsKQEAgLTM4NSwxNyArMzg2LDE3IEBACiAJaG9zdC0+aG9zdGRhdGFbMF0gPSAodW5zaWduZWQgbG9uZylob3N0ZGF0YTsKIAkvKiBraWNrIHRoZSBjaGlwICovCiAJTkNSXzcwMF93cml0ZWIoMHhmZiwgaG9zdCwgQ1RFU1Q5X1JFRyk7Ci0JaWYoaG9zdGRhdGEtPmNoaXA3MTApIAorCWlmIChob3N0ZGF0YS0+Y2hpcDcxMCkKIAkJaG9zdGRhdGEtPnJldiA9IChOQ1JfNzAwX3JlYWRiKGhvc3QsIENURVNUOF9SRUcpPj40KSAmIDB4MGY7CiAJZWxzZQogCQlob3N0ZGF0YS0+cmV2ID0gKE5DUl83MDBfcmVhZGIoaG9zdCwgQ1RFU1Q3X1JFRyk+PjQpICYgMHgwZjsKIAlob3N0ZGF0YS0+ZmFzdCA9IChOQ1JfNzAwX3JlYWRiKGhvc3QsIENURVNUOV9SRUcpID09IDApOwotCWlmKGJhbm5lciA9PSAwKSB7CisJaWYgKGJhbm5lciA9PSAwKSB7CiAJCXByaW50ayhLRVJOX05PVElDRSAiNTNjNzAwOiBWZXJzaW9uICIgTkNSXzcwMF9WRVJTSU9OICIgQnkgSmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbVxuIik7CiAJCWJhbm5lciA9IDE7CiAJfQogCXByaW50ayhLRVJOX05PVElDRSAic2NzaSVkOiAlcyByZXYgJWQgJXNcbiIsIGhvc3QtPmhvc3Rfbm8sCi0JICAgICAgIGhvc3RkYXRhLT5jaGlwNzEwID8gIjUzYzcxMCIgOiAKKwkgICAgICAgaG9zdGRhdGEtPmNoaXA3MTAgPyAiNTNjNzEwIiA6CiAJICAgICAgIChob3N0ZGF0YS0+ZmFzdCA/ICI1M2M3MDAtNjYiIDogIjUzYzcwMCIpLAogCSAgICAgICBob3N0ZGF0YS0+cmV2LCBob3N0ZGF0YS0+ZGlmZmVyZW50aWFsID8KIAkgICAgICAgIihEaWZmZXJlbnRpYWwpIiA6ICIiKTsKQEAgLTU0MCw2ICs1NDEsNyBAQAogCSAqIGZpbmlzaCByb3V0aW5lLiAgSWYgd2UgY2Fubm90IHF1ZXVlIHRoZSBjb21tYW5kIHdoZW4gaXQKIAkgKiBpcyBwcm9wZXJseSBidWlsZCwgd2UgdGhlbiBjaGFuZ2UgdG8gTkNSXzcwMF9TTE9UX1FVRVVFRCAqLwogCXNsb3QtPnN0YXRlID0gTkNSXzcwMF9TTE9UX0JVU1k7CisJc2xvdC0+ZmxhZ3MgPSAwOwogCWhvc3RkYXRhLT5jb21tYW5kX3Nsb3RfY291bnQrKzsKIAkKIAlyZXR1cm4gc2xvdDsKQEAgLTU4OSw3ICs1OTEsNyBAQAogCWlmKFNDcC0+c2NfZGF0YV9kaXJlY3Rpb24gIT0gRE1BX05PTkUgJiYKIAkgICBTQ3AtPnNjX2RhdGFfZGlyZWN0aW9uICE9IERNQV9CSURJUkVDVElPTkFMKSB7CiAJCWlmKFNDcC0+dXNlX3NnKSB7Ci0JCQlkbWFfdW5tYXBfc2coaG9zdGRhdGEtPmRldiwgU0NwLT5idWZmZXIsCisJCQlkbWFfdW5tYXBfc2coaG9zdGRhdGEtPmRldiwgU0NwLT5yZXF1ZXN0X2J1ZmZlciwKIAkJCQkgICAgIFNDcC0+dXNlX3NnLCBTQ3AtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAkJfSBlbHNlIHsKIAkJCWRtYV91bm1hcF9zaW5nbGUoaG9zdGRhdGEtPmRldiwgc2xvdC0+ZG1hX2hhbmRsZSwKQEAgLTYxMSwzMCArNjEzLDIzIEBACiAJCQkoc3RydWN0IE5DUl83MDBfY29tbWFuZF9zbG90ICopU0NwLT5ob3N0X3NjcmliYmxlOwogCQkKIAkJTkNSXzcwMF91bm1hcChob3N0ZGF0YSwgU0NwLCBzbG90KTsKLQkJZG1hX3VubWFwX3NpbmdsZShob3N0ZGF0YS0+ZGV2LCBzbG90LT5wQ21kLAotCQkJCSBzaXplb2YoU0NwLT5jbW5kKSwgRE1BX1RPX0RFVklDRSk7Ci0JCWlmKFNDcC0+Y21uZFswXSA9PSBSRVFVRVNUX1NFTlNFICYmIFNDcC0+Y21uZFs2XSA9PSBOQ1JfNzAwX0lOVEVSTkFMX1NFTlNFX01BR0lDKSB7CisJCWlmIChzbG90LT5mbGFncyA9PSBOQ1JfNzAwX0ZMQUdfQVVUT1NFTlNFKSB7CisJCQlzdHJ1Y3QgTkNSXzcwMF9zZW5zZSAqc2Vuc2UgPSBTQ3AtPmRldmljZS0+aG9zdGRhdGE7CiAjaWZkZWYgTkNSXzcwMF9ERUJVRwogCQkJcHJpbnRrKCIgT1JJR0lOQUwgQ01EICVwIFJFVFVSTkVEICVkLCBuZXcgcmV0dXJuIGlzICVkIHNlbnNlIGlzXG4iLAogCQkJICAgICAgIFNDcCwgU0NwLT5jbW5kWzddLCByZXN1bHQpOwogCQkJc2NzaV9wcmludF9zZW5zZSgiNTNjNzAwIiwgU0NwKTsKIAogI2VuZGlmCisJCQlkbWFfdW5tYXBfc2luZ2xlKGhvc3RkYXRhLT5kZXYsIHNsb3QtPmRtYV9oYW5kbGUsIHNpemVvZihTQ3AtPnNlbnNlX2J1ZmZlciksIERNQV9GUk9NX0RFVklDRSk7CiAJCQkvKiByZXN0b3JlIHRoZSBvbGQgcmVzdWx0IGlmIHRoZSByZXF1ZXN0IHNlbnNlIHdhcwogCQkJICogc3VjY2Vzc2Z1bCAqLwogCQkJaWYocmVzdWx0ID09IDApCi0JCQkJcmVzdWx0ID0gU0NwLT5jbW5kWzddOwotCQkJLyogbm93IHJlc3RvcmUgdGhlIG9yaWdpbmFsIGNvbW1hbmQgKi8KLQkJCW1lbWNweSgodm9pZCAqKSBTQ3AtPmNtbmQsICh2b2lkICopIFNDcC0+ZGF0YV9jbW5kLAotCQkJICAgICAgIHNpemVvZihTQ3AtPmRhdGFfY21uZCkpOwotCQkJU0NwLT5yZXF1ZXN0X2J1ZmZlciA9IFNDcC0+YnVmZmVyOwotCQkJU0NwLT5yZXF1ZXN0X2J1ZmZsZW4gPSBTQ3AtPmJ1ZmZsZW47Ci0JCQlTQ3AtPnVzZV9zZyA9IFNDcC0+b2xkX3VzZV9zZzsKLQkJCVNDcC0+Y21kX2xlbiA9IFNDcC0+b2xkX2NtZF9sZW47Ci0JCQlTQ3AtPnNjX2RhdGFfZGlyZWN0aW9uID0gU0NwLT5zY19vbGRfZGF0YV9kaXJlY3Rpb247Ci0JCQlTQ3AtPnVuZGVyZmxvdyA9IFNDcC0+b2xkX3VuZGVyZmxvdzsKLQkJCQotCQl9CisJCQkJcmVzdWx0ID0gc2Vuc2UtPmNtbmRbN107CisJCX0gZWxzZQorCQkJZG1hX3VubWFwX3NpbmdsZShob3N0ZGF0YS0+ZGV2LCBzbG90LT5wQ21kLAorCQkJCQkgc2l6ZW9mKFNDcC0+Y21uZCksIERNQV9UT19ERVZJQ0UpOworCiAJCWZyZWVfc2xvdChzbG90LCBob3N0ZGF0YSk7CiAjaWZkZWYgTkNSXzcwMF9ERUJVRwogCQlpZihOQ1JfNzAwX2dldF9kZXB0aChTQ3AtPmRldmljZSkgPT0gMCB8fApAQCAtOTgyLDYgKzk3Nyw3IEBACiAJCQkJCSJicm9rZW4gZGV2aWNlIGlzIGxvb3BpbmcgaW4gY29udGluZ2VudCBhbGxlZ2lhbmNlOiBpZ25vcmluZ1xuIik7CiAJCQkJTkNSXzcwMF9zY3NpX2RvbmUoaG9zdGRhdGEsIFNDcCwgaG9zdGRhdGEtPnN0YXR1c1swXSk7CiAJCQl9IGVsc2UgeworCQkJCXN0cnVjdCBOQ1JfNzAwX3NlbnNlICpzZW5zZSA9IFNDcC0+ZGV2aWNlLT5ob3N0ZGF0YTsKICNpZmRlZiBOQ1JfREVCVUcKIAkJCQlzY3NpX3ByaW50X2NvbW1hbmQoU0NwKTsKIAkJCQlwcmludGsoIiAgY21kICVwIGhhcyBzdGF0dXMgJWQsIHJlcXVlc3Rpbmcgc2Vuc2VcbiIsCkBAIC05OTUsMjcgKzk5MSwyNSBAQAogCQkJCSAqIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21tYW5kCiAJCQkJICogaGVyZSAqLwogCQkJCU5DUl83MDBfdW5tYXAoaG9zdGRhdGEsIFNDcCwgc2xvdCk7CisJCQkJZG1hX3VubWFwX3NpbmdsZShob3N0ZGF0YS0+ZGV2LCBzbG90LT5wQ21kLAorCQkJCQkJIHNpemVvZihTQ3AtPmNtbmQpLAorCQkJCQkJIERNQV9UT19ERVZJQ0UpOwogCi0JCQkJU0NwLT5jbW5kWzBdID0gUkVRVUVTVF9TRU5TRTsKLQkJCQlTQ3AtPmNtbmRbMV0gPSAoU0NwLT5kZXZpY2UtPmx1biAmIDB4NykgPDwgNTsKLQkJCQlTQ3AtPmNtbmRbMl0gPSAwOwotCQkJCVNDcC0+Y21uZFszXSA9IDA7Ci0JCQkJU0NwLT5jbW5kWzRdID0gc2l6ZW9mKFNDcC0+c2Vuc2VfYnVmZmVyKTsKLQkJCQlTQ3AtPmNtbmRbNV0gPSAwOwotCQkJCVNDcC0+Y21kX2xlbiA9IDY7CisJCQkJc2Vuc2UtPmNtbmRbMF0gPSBSRVFVRVNUX1NFTlNFOworCQkJCXNlbnNlLT5jbW5kWzFdID0gKFNDcC0+ZGV2aWNlLT5sdW4gJiAweDcpIDw8IDU7CisJCQkJc2Vuc2UtPmNtbmRbMl0gPSAwOworCQkJCXNlbnNlLT5jbW5kWzNdID0gMDsKKwkJCQlzZW5zZS0+Y21uZFs0XSA9IHNpemVvZihTQ3AtPnNlbnNlX2J1ZmZlcik7CisJCQkJc2Vuc2UtPmNtbmRbNV0gPSAwOwogCQkJCS8qIEhlcmUncyBhIHF1aWV0IGhhY2s6IHRoZQogCQkJCSAqIFJFUVVFU1RfU0VOU0UgY29tbWFuZCBpcyBzaXggYnl0ZXMsCiAJCQkJICogc28gc3RvcmUgYSBmbGFnIGluZGljYXRpbmcgdGhhdAogCQkJCSAqIHRoaXMgd2FzIGFuIGludGVybmFsIHNlbnNlIHJlcXVlc3QKIAkJCQkgKiBhbmQgdGhlIG9yaWdpbmFsIHN0YXR1cyBhdCB0aGUgZW5kCiAJCQkJICogb2YgdGhlIGNvbW1hbmQgKi8KLQkJCQlTQ3AtPmNtbmRbNl0gPSBOQ1JfNzAwX0lOVEVSTkFMX1NFTlNFX01BR0lDOwotCQkJCVNDcC0+Y21uZFs3XSA9IGhvc3RkYXRhLT5zdGF0dXNbMF07Ci0JCQkJU0NwLT51c2Vfc2cgPSAwOwotCQkJCVNDcC0+c2NfZGF0YV9kaXJlY3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7Ci0JCQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoaG9zdGRhdGEtPmRldiwgc2xvdC0+cENtZCwKLQkJCQkJCQkgICBTQ3AtPmNtZF9sZW4sIERNQV9UT19ERVZJQ0UpOwotCQkJCVNDcC0+cmVxdWVzdF9idWZmbGVuID0gc2l6ZW9mKFNDcC0+c2Vuc2VfYnVmZmVyKTsKKwkJCQlzZW5zZS0+Y21uZFs2XSA9IE5DUl83MDBfSU5URVJOQUxfU0VOU0VfTUFHSUM7CisJCQkJc2Vuc2UtPmNtbmRbN10gPSBob3N0ZGF0YS0+c3RhdHVzWzBdOworCQkJCXNsb3QtPnBDbWQgPSBkbWFfbWFwX3NpbmdsZShob3N0ZGF0YS0+ZGV2LCBzZW5zZS0+Y21uZCwgc2l6ZW9mKHNlbnNlLT5jbW5kKSwgRE1BX1RPX0RFVklDRSk7CiAJCQkJc2xvdC0+ZG1hX2hhbmRsZSA9IGRtYV9tYXBfc2luZ2xlKGhvc3RkYXRhLT5kZXYsIFNDcC0+c2Vuc2VfYnVmZmVyLCBzaXplb2YoU0NwLT5zZW5zZV9idWZmZXIpLCBETUFfRlJPTV9ERVZJQ0UpOwogCQkJCXNsb3QtPlNHWzBdLmlucyA9IGJTX3RvX2hvc3QoU0NSSVBUX01PVkVfREFUQV9JTiB8IHNpemVvZihTQ3AtPnNlbnNlX2J1ZmZlcikpOwogCQkJCXNsb3QtPlNHWzBdLnBBZGRyID0gYlNfdG9faG9zdChzbG90LT5kbWFfaGFuZGxlKTsKQEAgLTEwMjcsNiArMTAyMSw3IEBACiAJCQkJCiAJCQkJLyogcXVldWUgdGhlIGNvbW1hbmQgZm9yIHJlaXNzdWUgKi8KIAkJCQlzbG90LT5zdGF0ZSA9IE5DUl83MDBfU0xPVF9RVUVVRUQ7CisJCQkJc2xvdC0+ZmxhZ3MgPSBOQ1JfNzAwX0ZMQUdfQVVUT1NFTlNFOwogCQkJCWhvc3RkYXRhLT5zdGF0ZSA9IE5DUl83MDBfSE9TVF9GUkVFOwogCQkJCWhvc3RkYXRhLT5jbWQgPSBOVUxMOwogCQkJfQpAQCAtMTI0Nyw3ICsxMjQyLDcgQEAKIAogCQkJaWYoU0NwLT51c2Vfc2cpIHsKIAkJCQlmb3IoaSA9IDA7IGkgPCBTQ3AtPnVzZV9zZyArIDE7IGkrKykgewotCQkJCQlwcmludGsoS0VSTl9JTkZPICIgU0dbJWRdLmxlbmd0aCA9ICVkLCBtb3ZlX2luc249JTA4eCwgYWRkciAlMDh4XG4iLCBpLCAoKHN0cnVjdCBzY2F0dGVybGlzdCAqKVNDcC0+YnVmZmVyKVtpXS5sZW5ndGgsICgoc3RydWN0IE5DUl83MDBfY29tbWFuZF9zbG90ICopU0NwLT5ob3N0X3NjcmliYmxlKS0+U0dbaV0uaW5zLCAoKHN0cnVjdCBOQ1JfNzAwX2NvbW1hbmRfc2xvdCAqKVNDcC0+aG9zdF9zY3JpYmJsZSktPlNHW2ldLnBBZGRyKTsKKwkJCQkJcHJpbnRrKEtFUk5fSU5GTyAiIFNHWyVkXS5sZW5ndGggPSAlZCwgbW92ZV9pbnNuPSUwOHgsIGFkZHIgJTA4eFxuIiwgaSwgKChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilTQ3AtPnJlcXVlc3RfYnVmZmVyKVtpXS5sZW5ndGgsICgoc3RydWN0IE5DUl83MDBfY29tbWFuZF9zbG90ICopU0NwLT5ob3N0X3NjcmliYmxlKS0+U0dbaV0uaW5zLCAoKHN0cnVjdCBOQ1JfNzAwX2NvbW1hbmRfc2xvdCAqKVNDcC0+aG9zdF9zY3JpYmJsZSktPlNHW2ldLnBBZGRyKTsKIAkJCQl9CiAJCQl9CiAJCX0JICAgICAgIApAQCAtMTQwNiwxMiArMTQwMSwxNCBAQAogCS8qIGtlZXAgaW50ZXJydXB0cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHRoZSBjb21tYW5kIGNvcnJlY3RseQogCSAqIHNldCB1cCBzbyB3ZSBjYW5ub3QgdGFrZSBhIHNlbGVjdGlvbiBpbnRlcnJ1cHQgKi8KIAotCWhvc3RkYXRhLT5tc2dvdXRbMF0gPSBOQ1JfNzAwX2lkZW50aWZ5KFNDcC0+Y21uZFswXSAhPSBSRVFVRVNUX1NFTlNFLAorCWhvc3RkYXRhLT5tc2dvdXRbMF0gPSBOQ1JfNzAwX2lkZW50aWZ5KChTQ3AtPmNtbmRbMF0gIT0gUkVRVUVTVF9TRU5TRSAmJgorCQkJCQkJc2xvdC0+ZmxhZ3MgIT0gTkNSXzcwMF9GTEFHX0FVVE9TRU5TRSksCiAJCQkJCSAgICAgICBTQ3AtPmRldmljZS0+bHVuKTsKIAkvKiBmb3IgSU5RVUlSWSBvciBSRVFVRVNUX1NFTlNFIGNvbW1hbmRzLCB3ZSBjYW5ub3QgYmUgc3VyZQogCSAqIGlmIHRoZSBuZWdvdGlhdGVkIHRyYW5zZmVyIHBhcmFtZXRlcnMgc3RpbGwgaG9sZCwgc28KIAkgKiBhbHdheXMgcmVuZWdvdGlhdGUgdGhlbSAqLwotCWlmKFNDcC0+Y21uZFswXSA9PSBJTlFVSVJZIHx8IFNDcC0+Y21uZFswXSA9PSBSRVFVRVNUX1NFTlNFKSB7CisJaWYoU0NwLT5jbW5kWzBdID09IElOUVVJUlkgfHwgU0NwLT5jbW5kWzBdID09IFJFUVVFU1RfU0VOU0UgfHwKKwkgICBzbG90LT5mbGFncyA9PSBOQ1JfNzAwX0ZMQUdfQVVUT1NFTlNFKSB7CiAJCU5DUl83MDBfY2xlYXJfZmxhZyhTQ3AtPmRldmljZSwgTkNSXzcwMF9ERVZfTkVHT1RJQVRFRF9TWU5DKTsKIAl9CiAKQEAgLTE0MjAsNyArMTQxNyw4IEBACiAJICogd2lsbCByZWZ1c2UgYWxsIHRhZ3MsIHNvIHNlbmQgdGhlIHJlcXVlc3Qgc2Vuc2UgYXMgdW50YWdnZWQKIAkgKiAqLwogCWlmKChob3N0ZGF0YS0+dGFnX25lZ290aWF0ZWQgJiAoMTw8c2NtZF9pZChTQ3ApKSkKLQkgICAmJiAoc2xvdC0+dGFnICE9IFNDU0lfTk9fVEFHICYmIFNDcC0+Y21uZFswXSAhPSBSRVFVRVNUX1NFTlNFKSkgeworCSAgICYmIChzbG90LT50YWcgIT0gU0NTSV9OT19UQUcgJiYgU0NwLT5jbW5kWzBdICE9IFJFUVVFU1RfU0VOU0UgJiYKKwkgICAgICAgc2xvdC0+ZmxhZ3MgIT0gTkNSXzcwMF9GTEFHX0FVVE9TRU5TRSkpIHsKIAkJY291bnQgKz0gc2NzaV9wb3B1bGF0ZV90YWdfbXNnKFNDcCwgJmhvc3RkYXRhLT5tc2dvdXRbY291bnRdKTsKIAl9CiAKQEAgLTE4NjYsOCArMTg2NCw5IEBACiAJCV9fdTMyIGNvdW50ID0gMDsKIAogCQlpZihTQ3AtPnVzZV9zZykgewotCQkJc2dfY291bnQgPSBkbWFfbWFwX3NnKGhvc3RkYXRhLT5kZXYsIFNDcC0+YnVmZmVyLAotCQkJCQkgICAgICBTQ3AtPnVzZV9zZywgZGlyZWN0aW9uKTsKKwkJCXNnX2NvdW50ID0gZG1hX21hcF9zZyhob3N0ZGF0YS0+ZGV2LAorCQkJCQkgICAgICBTQ3AtPnJlcXVlc3RfYnVmZmVyLCBTQ3AtPnVzZV9zZywKKwkJCQkJICAgICAgZGlyZWN0aW9uKTsKIAkJfSBlbHNlIHsKIAkJCXZQdHIgPSBkbWFfbWFwX3NpbmdsZShob3N0ZGF0YS0+ZGV2LAogCQkJCQkgICAgICBTQ3AtPnJlcXVlc3RfYnVmZmVyLCAKQEAgLTE4ODIsNyArMTg4MSw3IEBACiAJCWZvcihpID0gMDsgaSA8IHNnX2NvdW50OyBpKyspIHsKIAogCQkJaWYoU0NwLT51c2Vfc2cpIHsKLQkJCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gU0NwLT5idWZmZXI7CisJCQkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IFNDcC0+cmVxdWVzdF9idWZmZXI7CiAKIAkJCQl2UHRyID0gc2dfZG1hX2FkZHJlc3MoJnNnW2ldKTsKIAkJCQljb3VudCA9IHNnX2RtYV9sZW4oJnNnW2ldKTsKQEAgLTIwNDUsNiArMjA0NCwxMSBAQAogCXN0cnVjdCBOQ1JfNzAwX0hvc3RfUGFyYW1ldGVycyAqaG9zdGRhdGEgPSAKIAkJKHN0cnVjdCBOQ1JfNzAwX0hvc3RfUGFyYW1ldGVycyAqKVNEcC0+aG9zdC0+aG9zdGRhdGFbMF07CiAKKwlTRHAtPmhvc3RkYXRhID0ga21hbGxvYyhHRlBfS0VSTkVMLCBzaXplb2Yoc3RydWN0IE5DUl83MDBfc2Vuc2UpKTsKKworCWlmICghU0RwLT5ob3N0ZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKIAkvKiB0byBkbyBoZXJlOiBhbGxvY2F0ZSBtZW1vcnk7IGJ1aWxkIGEgcXVldWVfZnVsbCBsaXN0ICovCiAJaWYoU0RwLT50YWdnZWRfc3VwcG9ydGVkKSB7CiAJCXNjc2lfc2V0X3RhZ190eXBlKFNEcCwgTVNHX09SREVSRURfVEFHKTsKQEAgLTIwNjgsNyArMjA3Miw4IEBACiBTVEFUSUMgdm9pZAogTkNSXzcwMF9zbGF2ZV9kZXN0cm95KHN0cnVjdCBzY3NpX2RldmljZSAqU0RwKQogewotCS8qIHRvIGRvIGhlcmU6IGRlYWxsb2NhdGUgbWVtb3J5ICovCisJa2ZyZWUoU0RwLT5ob3N0ZGF0YSk7CisJU0RwLT5ob3N0ZGF0YSA9IE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS81M2M3MDAuaCBiL2RyaXZlcnMvc2NzaS81M2M3MDAuaAppbmRleCBhOGM4M2JiLi43ZjIyYTA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvNTNjNzAwLmgKKysrIGIvZHJpdmVycy9zY3NpLzUzYzcwMC5oCkBAIC0xNjMsNiArMTYzLDggQEAKIAkjZGVmaW5lIE5DUl83MDBfU0xPVF9CVVNZICgxfE5DUl83MDBfU0xPVF9NQUdJQykgLyogc2xvdCBoYXMgY29tbWFuZCBhY3RpdmUgb24gSEEgKi8KIAkjZGVmaW5lIE5DUl83MDBfU0xPVF9RVUVVRUQgKDJ8TkNSXzcwMF9TTE9UX01BR0lDKSAvKiBzbG90IGhhcyBjb21tYW5kIHRvIGJlIG1hZGUgYWN0aXZlIG9uIEhBICovCiAJX191OAlzdGF0ZTsKKwkjZGVmaW5lIE5DUl83MDBfRkxBR19BVVRPU0VOU0UJMHgwMQorCV9fdTgJZmxhZ3M7CiAJaW50CXRhZzsKIAlfX3UzMglyZXN1bWVfb2Zmc2V0OwogCXN0cnVjdCBzY3NpX2NtbmQgKmNtbmQ7CkBAIC00NzIsOCArNDc0LDcgQEAKIAkJaW9yZWFkMzIoaG9zdGRhdGEtPmJhc2UgKyByZWcpOwogI2lmIDEKIAkvKiBzYW5pdHkgY2hlY2sgdGhlIHJlZ2lzdGVyICovCi0JaWYoKHJlZyAmIDB4MykgIT0gMCkKLQkJQlVHKCk7CisJQlVHX09OKChyZWcgJiAweDMpICE9IDApOwogI2VuZGlmCiAKIAlyZXR1cm4gdmFsdWU7CkBAIC00OTYsOCArNDk3LDcgQEAKIAogI2lmIDEKIAkvKiBzYW5pdHkgY2hlY2sgdGhlIHJlZ2lzdGVyICovCi0JaWYoKHJlZyAmIDB4MykgIT0gMCkKLQkJQlVHKCk7CisJQlVHX09OKChyZWcgJiAweDMpICE9IDApOwogI2VuZGlmCiAKIAliRUJ1cyA/IGlvd3JpdGUzMmJlKHZhbHVlLCBob3N0ZGF0YS0+YmFzZSArIHJlZyk6IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzUzYzd4eC5jIGIvZHJpdmVycy9zY3NpLzUzYzd4eC5jCmluZGV4IDc4OTRiOGUuLjc2NTc2OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS81M2M3eHguYworKysgYi9kcml2ZXJzL3Njc2kvNTNjN3h4LmMKQEAgLTM2MSw3ICszNjEsNyBAQAogc3RhdGljIGNoYXIgKnNldHVwX3N0cmluZ3NbXSA9CiAJeyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIifTsKIAotI2RlZmluZSBNQVhfU0VUVVBfU1RSSU5HUyAoc2l6ZW9mKHNldHVwX3N0cmluZ3MpIC8gc2l6ZW9mKGNoYXIgKikpCisjZGVmaW5lIE1BWF9TRVRVUF9TVFJJTkdTIEFSUkFZX1NJWkUoc2V0dXBfc3RyaW5ncykKICNkZWZpbmUgU0VUVVBfQlVGRkVSX1NJWkUgMjAwCiBzdGF0aWMgY2hhciBzZXR1cF9idWZmZXJbU0VUVVBfQlVGRkVSX1NJWkVdOwogc3RhdGljIGNoYXIgc2V0dXBfdXNlZFtNQVhfU0VUVVBfU1RSSU5HU107CkBAIC03MDksNyArNzA5LDcgQEAKIAlwcmludGsgKEtFUk5fQUxFUlQgInRhcmdldCAlZCBpcyBob3N0IElEXG4iLCB0YXJnZXQpOwogCXJldHVybiAtMTsKICAgICB9IAotICAgIGVsc2UgaWYgKHRhcmdldCA+IGgtPm1heF9pZCkgeworICAgIGVsc2UgaWYgKHRhcmdldCA+PSBoLT5tYXhfaWQpIHsKIAlwcmludGsgKEtFUk5fQUxFUlQgInRhcmdldCAlZCBleGNlZWRzIG1heGltdW0gb2YgJWRcbiIsIHRhcmdldCwKIAkgICAgaC0+bWF4X2lkKTsKIAlyZXR1cm4gLTE7CkBAIC0yMTkwLDE1ICsyMTkwLDE1IEBACiAgKi8KIAogCi1zdGF0aWMgdm9pZCAKK3N0YXRpYyB2b2lkCiBzeW5jaHJvbm91cyAoc3RydWN0IFNjc2lfSG9zdCAqaG9zdCwgaW50IHRhcmdldCwgY2hhciAqbXNnKSB7CiAgICAgc3RydWN0IE5DUjUzYzd4MF9ob3N0ZGF0YSAqaG9zdGRhdGEgPSAoc3RydWN0IE5DUjUzYzd4MF9ob3N0ZGF0YSAqKQogCWhvc3QtPmhvc3RkYXRhWzBdOwogICAgIGludCBkZXNpcmUsIGRpdmlzb3IsIGksIGxpbWl0OwogICAgIHVuc2lnbmVkIGNoYXIgc2NudGwzLCBzeGZlcjsKIC8qIFRoZSBkaWFnbm9zdGljIG1lc3NhZ2UgZml0cyBvbiBvbmUgbGluZSwgZXZlbiB3aXRoIG1heC4gd2lkdGggaW50ZWdlcnMgKi8KLSAgICBjaGFyIGJ1Zls4MF07CQotICAgCisgICAgY2hhciBidWZbODBdOworCiAvKiBEZXNpcmVkIHRyYW5zZmVyIGNsb2NrIGluIEh6ICovCiAgICAgZGVzaXJlID0gMTAwMDAwMDAwMEwgLyAobXNnWzNdICogNCk7CiAvKiBTY2FsZSB0aGUgYXZhaWxhYmxlIFNDU0kgY2xvY2sgYnkgMTAgc28gd2UgZ2V0IHRlbnRocyAqLwpAQCAtMjIwOSwxNCArMjIwOSwxNCBAQAogCW1zZ1s0XSA9IDg7CiAKICAgICBpZiAoaG9zdGRhdGEtPm9wdGlvbnMgJiBPUFRJT05fREVCVUdfU0RUUikKLSAgICAJcHJpbnRrKCJzY3NpJWQgOiBvcHRpbWFsIHN5bmNocm9ub3VzIGRpdmlzb3Igb2YgJWQuJTAxZFxuIiwgCisgICAgCXByaW50aygic2NzaSVkIDogb3B0aW1hbCBzeW5jaHJvbm91cyBkaXZpc29yIG9mICVkLiUwMWRcbiIsCiAJICAgIGhvc3QtPmhvc3Rfbm8sIGRpdmlzb3IgLyAxMCwgZGl2aXNvciAlIDEwKTsKIAotICAgIGxpbWl0ID0gKHNpemVvZihzeW5jcykgLyBzaXplb2Yoc3luY3NbMF0pIC0xKTsKKyAgICBsaW1pdCA9IEFSUkFZX1NJWkUoc3luY3MpIC0gMTsKICAgICBmb3IgKGkgPSAwOyAoaSA8IGxpbWl0KSAmJiAoZGl2aXNvciA+IHN5bmNzW2ldLmRpdik7ICsraSk7CiAKICAgICBpZiAoaG9zdGRhdGEtPm9wdGlvbnMgJiBPUFRJT05fREVCVUdfU0RUUikKLSAgICAJcHJpbnRrKCJzY3NpJWQgOiBzZWxlY3RlZCBzeW5jaHJvbm91cyBkaXZpc29yIG9mICVkLiUwMWRcbiIsIAorICAgIAlwcmludGsoInNjc2klZCA6IHNlbGVjdGVkIHN5bmNocm9ub3VzIGRpdmlzb3Igb2YgJWQuJTAxZFxuIiwKIAkgICAgaG9zdC0+aG9zdF9ubywgc3luY3NbaV0uZGl2IC8gMTAsIHN5bmNzW2ldLmRpdiAlIDEwKTsKIAogICAgIG1zZ1szXSA9ICgoMTAwMDAwMDAwMEwgLyBob3N0ZGF0YS0+c2NzaV9jbG9jaykgKiBzeW5jc1tpXS5kaXYgLyAxMCAvIDQpOwpAQCAtMzYyMiw3ICszNjIyLDcgQEAKICNpZmRlZiBMSU5VWF8xXzIKIAl8fCBjbWQtPmRldmljZS0+aWQgPiA3CiAjZWxzZQotCXx8IGNtZC0+ZGV2aWNlLT5pZCA+IGhvc3QtPm1heF9pZAorCXx8IGNtZC0+ZGV2aWNlLT5pZCA+PSBob3N0LT5tYXhfaWQKICNlbmRpZgogCXx8IGNtZC0+ZGV2aWNlLT5pZCA9PSBob3N0LT50aGlzX2lkCiAJfHwgaG9zdGRhdGEtPnN0YXRlID09IFNUQVRFX0RJU0FCTEVEKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvS2NvbmZpZyBiL2RyaXZlcnMvc2NzaS9LY29uZmlnCmluZGV4IGE0ODBhMzcuLjQ0NzI4YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9LY29uZmlnCisrKyBiL2RyaXZlcnMvc2NzaS9LY29uZmlnCkBAIC01MzIsNiArNTMyLDE2IEBACiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCiAKK2NvbmZpZyBTQ1NJX0hQVElPUAorCXRyaXN0YXRlICJIaWdoUG9pbnQgUm9ja2V0UkFJRCAzeHh4IENvbnRyb2xsZXIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFNDU0kgJiYgUENJCisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBIaWdoUG9pbnQgUm9ja2V0UkFJRCAzeHh4CisJICBjb250cm9sbGVycy4KKworCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTsgdGhlIG1vZHVsZQorCSAgd2lsbCBiZSBjYWxsZWQgaHB0aW9wLiBJZiB1bnN1cmUsIHNheSBOLgorCiBjb25maWcgU0NTSV9TQVRBX1FTVE9SCiAJdHJpc3RhdGUgIlBhY2lmaWMgRGlnaXRhbCBTQVRBIFFTdG9yIHN1cHBvcnQiCiAJZGVwZW5kcyBvbiBTQ1NJX1NBVEEgJiYgUENJCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvTWFrZWZpbGUgYi9kcml2ZXJzL3Njc2kvTWFrZWZpbGUKaW5kZXggODE4MDNhMS4uODRkNTQ2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvc2NzaS9NYWtlZmlsZQpAQCAtMzMsNyArMzMsNyBAQAogb2JqLSQoQ09ORklHX1NDU0lfSVNDU0lfQVRUUlMpCSs9IHNjc2lfdHJhbnNwb3J0X2lzY3NpLm8KIG9iai0kKENPTkZJR19TQ1NJX1NBU19BVFRSUykJKz0gc2NzaV90cmFuc3BvcnRfc2FzLm8KIAotb2JqLSQoQ09ORklHX0lTQ1NJX1RDUCkgCSs9IGlzY3NpX3RjcC5vCitvYmotJChDT05GSUdfSVNDU0lfVENQKSAJKz0gbGliaXNjc2kubwlpc2NzaV90Y3Aubwogb2JqLSQoQ09ORklHX1NDU0lfQU1JR0E3WFgpCSs9IGFtaWdhN3h4Lm8JNTNjN3h4Lm8KIG9iai0kKENPTkZJR19BMzAwMF9TQ1NJKQkrPSBhMzAwMC5vCXdkMzNjOTMubwogb2JqLSQoQ09ORklHX0EyMDkxX1NDU0kpCSs9IGEyMDkxLm8Jd2QzM2M5My5vCkBAIC0xMzYsNiArMTM2LDcgQEAKIG9iai0kKENPTkZJR19TQ1NJX1NBVEFfVUxJKQkrPSBsaWJhdGEubyBzYXRhX3VsaS5vCiBvYmotJChDT05GSUdfU0NTSV9TQVRBX01WKQkrPSBsaWJhdGEubyBzYXRhX212Lm8KIG9iai0kKENPTkZJR19TQ1NJX1BEQ19BRE1BKQkrPSBsaWJhdGEubyBwZGNfYWRtYS5vCitvYmotJChDT05GSUdfU0NTSV9IUFRJT1ApCSs9IGhwdGlvcC5vCiAKIG9iai0kKENPTkZJR19BUk0pCQkrPSBhcm0vCiAKQEAgLTE2NCw3ICsxNjUsNyBAQAogQ0ZMQUdTX25jcjUzYzh4eC5vCTo9ICQobmNyNTNjOHh4LWZsYWdzLXkpICQobmNyNTNjOHh4LWZsYWdzLW0pCiB6YWxvbjd4eC1vYmpzCTo9IHphbG9uLm8gbmNyNTNjOHh4Lm8KIE5DUl9RNzIwX21vZC1vYmpzCTo9IE5DUl9RNzIwLm8gbmNyNTNjOHh4Lm8KLWxpYmF0YS1vYmpzCTo9IGxpYmF0YS1jb3JlLm8gbGliYXRhLXNjc2kubyBsaWJhdGEtYm1kbWEubworbGliYXRhLW9ianMJOj0gbGliYXRhLWNvcmUubyBsaWJhdGEtc2NzaS5vIGxpYmF0YS1ibWRtYS5vIGxpYmF0YS1laC5vCiBva3RhZ29uX2VzcF9tb2Qtb2Jqcwk6PSBva3RhZ29uX2VzcC5vIG9rdGFnb25faW8ubwogCiAjIEZpbGVzIGdlbmVyYXRlZCB0aGF0IHNoYWxsIGJlIHJlbW92ZWQgdXBvbiBtYWtlIGNsZWFuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jIGIvZHJpdmVycy9zY3NpL05DUjUzODAuYwppbmRleCA5ZjBkZGJlLi5mYTU3ZTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKQEAgLTI5Niw3ICsyOTYsNyBAQAogCSAqLwogCiAJaWYgKGNtZC0+dXNlX3NnKSB7Ci0JCWNtZC0+U0NwLmJ1ZmZlciA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKikgY21kLT5idWZmZXI7CisJCWNtZC0+U0NwLmJ1ZmZlciA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKikgY21kLT5yZXF1ZXN0X2J1ZmZlcjsKIAkJY21kLT5TQ3AuYnVmZmVyc19yZXNpZHVhbCA9IGNtZC0+dXNlX3NnIC0gMTsKIAkJY21kLT5TQ3AucHRyID0gcGFnZV9hZGRyZXNzKGNtZC0+U0NwLmJ1ZmZlci0+cGFnZSkrCiAJCQkgICAgICAgY21kLT5TQ3AuYnVmZmVyLT5vZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvTkNSNTNjNDA2YS5jIGIvZHJpdmVycy9zY3NpL05DUjUzYzQwNmEuYwppbmRleCBhZTM3ZDNhLi44NDcyYzUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvTkNSNTNjNDA2YS5jCisrKyBiL2RyaXZlcnMvc2NzaS9OQ1I1M2M0MDZhLmMKQEAgLTIxMywxNiArMjEzLDE2IEBACiAJKHZvaWQgKikgMHhkODAwMCwKIAkodm9pZCAqKSAweGM4MDAwCiB9OwotI2RlZmluZSBBRERSRVNTX0NPVU5UIChzaXplb2YoIGFkZHJlc3NlcyApIC8gc2l6ZW9mKCB1bnNpZ25lZCApKQorI2RlZmluZSBBRERSRVNTX0NPVU5UIEFSUkFZX1NJWkUoYWRkcmVzc2VzKQogI2VuZGlmCQkJCS8qIFVTRV9CSU9TICovCiAKIC8qIHBvc3NpYmxlIGkvbyBwb3J0IGFkZHJlc3NlcyAqLwogc3RhdGljIHVuc2lnbmVkIHNob3J0IHBvcnRzW10gPSB7IDB4MjMwLCAweDMzMCwgMHgyODAsIDB4MjkwLCAweDMzMCwgMHgzNDAsIDB4MzAwLCAweDMxMCwgMHgzNDgsIDB4MzUwIH07Ci0jZGVmaW5lIFBPUlRfQ09VTlQgKHNpemVvZiggcG9ydHMgKSAvIHNpemVvZiggdW5zaWduZWQgc2hvcnQgKSkKKyNkZWZpbmUgUE9SVF9DT1VOVCBBUlJBWV9TSVpFKHBvcnRzKQogCiAvKiBwb3NzaWJsZSBpbnRlcnJ1cHQgY2hhbm5lbHMgKi8KIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbnRyc1tdID0geyAxMCwgMTEsIDEyLCAxNSB9OwotI2RlZmluZSBJTlRSX0NPVU5UIChzaXplb2YoIGludHJzICkgLyBzaXplb2YoIHVuc2lnbmVkIHNob3J0ICkpCisjZGVmaW5lIElOVFJfQ09VTlQgQVJSQVlfU0laRShpbnRycykKIAogLyogc2lnbmF0dXJlcyBmb3IgTkNSIDUzYzQwNmEgYmFzZWQgY29udHJvbGxlcnMgKi8KICNpZiBVU0VfQklPUwpAQCAtMjM2LDcgKzIzNiw3IEBACiAJewogIkNvcHlyaWdodCAoQykgQWNjdWxvZ2ljLCBJbmMuXHJcbjIuOE0gRGlza2V0dGUgRXh0ZW5zaW9uIEJpb3MgdmVyIDQuMDQuMDMgMDMvMDEvMTk5MyIsIDYxLCA4Mn0sfTsKIAotI2RlZmluZSBTSUdOQVRVUkVfQ09VTlQgKHNpemVvZiggc2lnbmF0dXJlcyApIC8gc2l6ZW9mKCBzdHJ1Y3Qgc2lnbmF0dXJlICkpCisjZGVmaW5lIFNJR05BVFVSRV9DT1VOVCBBUlJBWV9TSVpFKHNpZ25hdHVyZXMpCiAjZW5kaWYJCQkJLyogVVNFX0JJT1MgKi8KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY2hiYS5jCmluZGV4IDY0MmEzYjQuLjgzYjVjN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY2hiYS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY2hiYS5jCkBAIC0xNDgsNiArMTQ4LDggQEAKIHN0YXRpYyBpbnQgZGFjbW9kZSA9IC0xOwogCiBzdGF0aWMgaW50IGNvbW1pdCA9IC0xOworaW50IHN0YXJ0dXBfdGltZW91dCA9IDE4MDsKK2ludCBhaWZfdGltZW91dCA9IDEyMDsKIAogbW9kdWxlX3BhcmFtKG5vbmRhc2QsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKIE1PRFVMRV9QQVJNX0RFU0Mobm9uZGFzZCwgIkNvbnRyb2wgc2Nhbm5pbmcgb2YgaGJhIGZvciBub25kYXNkIGRldmljZXMuIDA9b2ZmLCAxPW9uIik7CkBAIC0xNTUsNiArMTU3LDEwIEBACiBNT0RVTEVfUEFSTV9ERVNDKGRhY21vZGUsICJDb250cm9sIHdoZXRoZXIgZG1hIGFkZHJlc3NpbmcgaXMgdXNpbmcgNjQgYml0IERBQy4gMD1vZmYsIDE9b24iKTsKIG1vZHVsZV9wYXJhbShjb21taXQsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKIE1PRFVMRV9QQVJNX0RFU0MoY29tbWl0LCAiQ29udHJvbCB3aGV0aGVyIGEgQ09NTUlUX0NPTkZJRyBpcyBpc3N1ZWQgdG8gdGhlIGFkYXB0ZXIgZm9yIGZvcmVpZ24gYXJyYXlzLlxuVGhpcyBpcyB0eXBpY2FsbHkgbmVlZGVkIGluIHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIEJJT1MuIDA9b2ZmLCAxPW9uIik7Cittb2R1bGVfcGFyYW0oc3RhcnR1cF90aW1lb3V0LCBpbnQsIFNfSVJVR098U19JV1VTUik7CitNT0RVTEVfUEFSTV9ERVNDKHN0YXJ0dXBfdGltZW91dCwgIlRoZSBkdXJhdGlvbiBvZiB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBmb3IgYWRhcHRlciB0byBoYXZlIGl0J3Mga2VybmVsIHVwIGFuZFxucnVubmluZy4gVGhpcyBpcyB0eXBpY2FsbHkgYWRqdXN0ZWQgZm9yIGxhcmdlIHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIEJJT1MuIik7Cittb2R1bGVfcGFyYW0oYWlmX3RpbWVvdXQsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKK01PRFVMRV9QQVJNX0RFU0MoYWlmX3RpbWVvdXQsICJUaGUgZHVyYXRpb24gb2YgdGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgZm9yIGFwcGxpY2F0aW9ucyB0byBwaWNrIHVwIEFJRnMgYmVmb3JlXG5kZXJlZ2lzdGVyaW5nIHRoZW0uIFRoaXMgaXMgdHlwaWNhbGx5IGFkanVzdGVkIGZvciBoZWF2aWx5IGJ1cmRlbmVkIHN5c3RlbXMuIik7CiAKIGludCBudW1hY2IgPSAtMTsKIG1vZHVsZV9wYXJhbShudW1hY2IsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKQEAgLTM5MCw4ICszOTYsNyBAQAogCXNjc2ljbWQtPlNDcC5waGFzZSA9IEFBQ19PV05FUl9NSURMRVZFTDsKIAogCWRwcmludGsoKEtFUk5fREVCVUcgImdldF9jb250YWluZXJfbmFtZV9jYWxsYmFja1tjcHUgJWRdOiB0ID0gJWxkLlxuIiwgc21wX3Byb2Nlc3Nvcl9pZCgpLCBqaWZmaWVzKSk7Ci0JaWYgKGZpYnB0ciA9PSBOVUxMKQotCQlCVUcoKTsKKwlCVUdfT04oZmlicHRyID09IE5VTEwpOwogCiAJZ2V0X25hbWVfcmVwbHkgPSAoc3RydWN0IGFhY19nZXRfbmFtZV9yZXNwICopIGZpYl9kYXRhKGZpYnB0cik7CiAJLyogRmFpbHVyZSBpcyBpcnJlbGV2YW50LCB1c2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQgKi8KQEAgLTYzNSwxMyArNjQwLDEzIEBACiAJCQljcFtzaXplb2Yoc3RyLT5waWQpXSA9IGM7CiAJfSBlbHNlIHsKIAkJc3RydWN0IGFhY19kcml2ZXJfaWRlbnQgKm1wID0gYWFjX2dldF9kcml2ZXJfaWRlbnQoZGV2LT5jYXJkdHlwZSk7Ci0gICAKLQkJaW5xc3RyY3B5IChtcC0+dm5hbWUsIHN0ci0+dmlkKTsgCisKKwkJaW5xc3RyY3B5IChtcC0+dm5hbWUsIHN0ci0+dmlkKTsKIAkJLyogbGFzdCBzaXggY2hhcnMgcmVzZXJ2ZWQgZm9yIHZvbCB0eXBlICovCiAJCWlucXN0cmNweSAobXAtPm1vZGVsLCBzdHItPnBpZCk7CiAJfQogCi0JaWYgKHRpbmRleCA8IChzaXplb2YoY29udGFpbmVyX3R5cGVzKS9zaXplb2YoY2hhciAqKSkpeworCWlmICh0aW5kZXggPCBBUlJBWV9TSVpFKGNvbnRhaW5lcl90eXBlcykpewogCQljaGFyICpmaW5kaXQgPSBzdHItPnBpZDsKIAogCQlmb3IgKCA7ICpmaW5kaXQgIT0gJyAnOyBmaW5kaXQrKyk7IC8qIHdhbGsgdGlsbCB3ZSBmaW5kIGEgc3BhY2UgKi8KQEAgLTk1MCwxMiArOTU1LDExIEBACiAJCSAgc21wX3Byb2Nlc3Nvcl9pZCgpLCAodW5zaWduZWQgbG9uZyBsb25nKWxiYSwgamlmZmllcyk7CiAJfQogCi0JaWYgKGZpYnB0ciA9PSBOVUxMKQotCQlCVUcoKTsKKwlCVUdfT04oZmlicHRyID09IE5VTEwpOwogCQkKIAlpZihzY3NpY21kLT51c2Vfc2cpCiAJCXBjaV91bm1hcF9zZyhkZXYtPnBkZXYsIAotCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNjc2ljbWQtPmJ1ZmZlciwKKwkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzY3NpY21kLT5yZXF1ZXN0X2J1ZmZlciwKIAkJCXNjc2ljbWQtPnVzZV9zZywKIAkJCXNjc2ljbWQtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAllbHNlIGlmKHNjc2ljbWQtPnJlcXVlc3RfYnVmZmxlbikKQEAgLTEwODYsOCArMTA5MCw3IEBACiAJCQogCQlhYWNfYnVpbGRfc2dyYXcoc2NzaWNtZCwgJnJlYWRjbWQtPnNnKTsKIAkJZmlic2l6ZSA9IHNpemVvZihzdHJ1Y3QgYWFjX3Jhd19pbykgKyAoKGxlMzJfdG9fY3B1KHJlYWRjbWQtPnNnLmNvdW50KSAtIDEpICogc2l6ZW9mIChzdHJ1Y3Qgc2dlbnRyeXJhdykpOwotCQlpZiAoZmlic2l6ZSA+IChkZXYtPm1heF9maWJfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgYWFjX2ZpYmhkcikpKQotCQkJQlVHKCk7CisJCUJVR19PTihmaWJzaXplID4gKGRldi0+bWF4X2ZpYl9zaXplIC0gc2l6ZW9mKHN0cnVjdCBhYWNfZmliaGRyKSkpOwogCQkvKgogCQkgKglOb3cgc2VuZCB0aGUgRmliIHRvIHRoZSBhZGFwdGVyCiAJCSAqLwpAQCAtMTI1NSw4ICsxMjU4LDcgQEAKIAkJCiAJCWFhY19idWlsZF9zZ3JhdyhzY3NpY21kLCAmd3JpdGVjbWQtPnNnKTsKIAkJZmlic2l6ZSA9IHNpemVvZihzdHJ1Y3QgYWFjX3Jhd19pbykgKyAoKGxlMzJfdG9fY3B1KHdyaXRlY21kLT5zZy5jb3VudCkgLSAxKSAqIHNpemVvZiAoc3RydWN0IHNnZW50cnlyYXcpKTsKLQkJaWYgKGZpYnNpemUgPiAoZGV2LT5tYXhfZmliX3NpemUgLSBzaXplb2Yoc3RydWN0IGFhY19maWJoZHIpKSkKLQkJCUJVRygpOworCQlCVUdfT04oZmlic2l6ZSA+IChkZXYtPm1heF9maWJfc2l6ZSAtIHNpemVvZihzdHJ1Y3QgYWFjX2ZpYmhkcikpKTsKIAkJLyoKIAkJICoJTm93IHNlbmQgdGhlIEZpYiB0byB0aGUgYWRhcHRlcgogCQkgKi8KQEAgLTE1NzAsNyArMTU3Miw3IEBACiAJCSAqCXNlZTogPHZlbmRvcj4uYyBpLmUuIGFhYy5jCiAJCSAqLwogCQlpZiAoc2NtZF9pZChzY3NpY21kKSA9PSBob3N0LT50aGlzX2lkKSB7Ci0JCQlzZXRpbnFzdHIoZGV2LCAodm9pZCAqKSAoaW5xX2RhdGEuaW5xZF92aWQpLCAoc2l6ZW9mKGNvbnRhaW5lcl90eXBlcykvc2l6ZW9mKGNoYXIgKikpKTsKKwkJCXNldGlucXN0cihkZXYsICh2b2lkICopIChpbnFfZGF0YS5pbnFkX3ZpZCksIEFSUkFZX1NJWkUoY29udGFpbmVyX3R5cGVzKSk7CiAJCQlpbnFfZGF0YS5pbnFkX3BkdCA9IElOUURfUERUX1BST0M7CS8qIFByb2Nlc3NvciBkZXZpY2UgKi8KIAkJCWFhY19pbnRlcm5hbF90cmFuc2ZlcihzY3NpY21kLCAmaW5xX2RhdGEsIDAsIHNpemVvZihpbnFfZGF0YSkpOwogCQkJc2NzaWNtZC0+cmVzdWx0ID0gRElEX09LIDw8IDE2IHwgQ09NTUFORF9DT01QTEVURSA8PCA4IHwgU0FNX1NUQVRfR09PRDsKQEAgLTE4OTgsOCArMTkwMCw3IEBACiAJc2NzaWNtZC0+U0NwLnBoYXNlID0gQUFDX09XTkVSX01JRExFVkVMOwogCWRldiA9IChzdHJ1Y3QgYWFjX2RldiAqKXNjc2ljbWQtPmRldmljZS0+aG9zdC0+aG9zdGRhdGE7CiAKLQlpZiAoZmlicHRyID09IE5VTEwpCi0JCUJVRygpOworCUJVR19PTihmaWJwdHIgPT0gTlVMTCk7CiAKIAlzcmJyZXBseSA9IChzdHJ1Y3QgYWFjX3NyYl9yZXBseSAqKSBmaWJfZGF0YShmaWJwdHIpOwogCkBAIC0xOTEzLDcgKzE5MTQsNyBAQAogCiAJaWYoc2NzaWNtZC0+dXNlX3NnKQogCQlwY2lfdW5tYXBfc2coZGV2LT5wZGV2LCAKLQkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzY3NpY21kLT5idWZmZXIsCisJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc2NzaWNtZC0+cmVxdWVzdF9idWZmZXIsCiAJCQlzY3NpY21kLT51c2Vfc2csCiAJCQlzY3NpY21kLT5zY19kYXRhX2RpcmVjdGlvbik7CiAJZWxzZSBpZihzY3NpY21kLT5yZXF1ZXN0X2J1ZmZsZW4pCkBAIC0yMjE4LDE1ICsyMjE5LDE1IEBACiAJCX0KIAl9CiAJZWxzZSBpZihzY3NpY21kLT5yZXF1ZXN0X2J1ZmZsZW4pIHsKLQkJZG1hX2FkZHJfdCBhZGRyOyAKLQkJYWRkciA9IHBjaV9tYXBfc2luZ2xlKGRldi0+cGRldiwKKwkJdTMyIGFkZHI7CisJCXNjc2ljbWQtPlNDcC5kbWFfaGFuZGxlID0gcGNpX21hcF9zaW5nbGUoZGV2LT5wZGV2LAogCQkJCXNjc2ljbWQtPnJlcXVlc3RfYnVmZmVyLAogCQkJCXNjc2ljbWQtPnJlcXVlc3RfYnVmZmxlbiwKIAkJCQlzY3NpY21kLT5zY19kYXRhX2RpcmVjdGlvbik7CisJCWFkZHIgPSBzY3NpY21kLT5TQ3AuZG1hX2hhbmRsZTsKIAkJcHNnLT5jb3VudCA9IGNwdV90b19sZTMyKDEpOwogCQlwc2ctPnNnWzBdLmFkZHIgPSBjcHVfdG9fbGUzMihhZGRyKTsKIAkJcHNnLT5zZ1swXS5jb3VudCA9IGNwdV90b19sZTMyKHNjc2ljbWQtPnJlcXVlc3RfYnVmZmxlbik7ICAKLQkJc2NzaWNtZC0+U0NwLmRtYV9oYW5kbGUgPSBhZGRyOwogCQlieXRlX2NvdW50ID0gc2NzaWNtZC0+cmVxdWVzdF9idWZmbGVuOwogCX0KIAlyZXR1cm4gYnl0ZV9jb3VudDsKQEAgLTIzNzUsNyArMjM3Niw3IEBACiAJeyBTUkJfU1RBVFVTX1NVQ0NFU1MsCQkiU3VjY2VzcyJ9LAogCXsgU1JCX1NUQVRVU19BQk9SVEVELAkJIkFib3J0ZWQgQ29tbWFuZCJ9LAogCXsgU1JCX1NUQVRVU19BQk9SVF9GQUlMRUQsCSJBYm9ydCBGYWlsZWQifSwKLQl7IFNSQl9TVEFUVVNfRVJST1IsCQkiRXJyb3IgRXZlbnQifSwgCisJeyBTUkJfU1RBVFVTX0VSUk9SLAkJIkVycm9yIEV2ZW50In0sCiAJeyBTUkJfU1RBVFVTX0JVU1ksCQkiRGV2aWNlIEJ1c3kifSwKIAl7IFNSQl9TVEFUVVNfSU5WQUxJRF9SRVFVRVNULAkiSW52YWxpZCBSZXF1ZXN0In0sCiAJeyBTUkJfU1RBVFVTX0lOVkFMSURfUEFUSF9JRCwJIkludmFsaWQgUGF0aCBJRCJ9LApAQCAtMjM5NCw3ICsyMzk1LDcgQEAKIAl7IFNSQl9TVEFUVVNfQkFEX1NSQl9CTE9DS19MRU5HVEgsIkJhZCBTcmIgQmxvY2sgTGVuZ3RoIn0sCiAJeyBTUkJfU1RBVFVTX1JFUVVFU1RfRkxVU0hFRCwJIlJlcXVlc3QgRmx1c2hlZCJ9LAogCXsgU1JCX1NUQVRVU19ERUxBWUVEX1JFVFJZLAkiRGVsYXllZCBSZXRyeSJ9LAotCXsgU1JCX1NUQVRVU19JTlZBTElEX0xVTiwJIkludmFsaWQgTFVOIn0sIAorCXsgU1JCX1NUQVRVU19JTlZBTElEX0xVTiwJIkludmFsaWQgTFVOIn0sCiAJeyBTUkJfU1RBVFVTX0lOVkFMSURfVEFSR0VUX0lELAkiSW52YWxpZCBUQVJHRVQgSUQifSwKIAl7IFNSQl9TVEFUVVNfQkFEX0ZVTkNUSU9OLAkiQmFkIEZ1bmN0aW9uIn0sCiAJeyBTUkJfU1RBVFVTX0VSUk9SX1JFQ09WRVJZLAkiRXJyb3IgUmVjb3ZlcnkifSwKQEAgLTI0MDksMTEgKzI0MTAsOSBAQAogewogCWludCBpOwogCi0JZm9yKGk9MDsgaSA8IChzaXplb2Yoc3JiX3N0YXR1c19pbmZvKS9zaXplb2Yoc3RydWN0IGFhY19zcmJfc3RhdHVzX2luZm8pKTsgaSsrICl7Ci0JCWlmKHNyYl9zdGF0dXNfaW5mb1tpXS5zdGF0dXMgPT0gc3RhdHVzKXsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzcmJfc3RhdHVzX2luZm8pOyBpKyspCisJCWlmIChzcmJfc3RhdHVzX2luZm9baV0uc3RhdHVzID09IHN0YXR1cykKIAkJCXJldHVybiBzcmJfc3RhdHVzX2luZm9baV0uc3RyOwotCQl9Ci0JfQogCiAJcmV0dXJuICJCYWQgU3RhdHVzIENvZGUiOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oCmluZGV4IGY3NzNiMGQuLmQwZWVjZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY3JhaWQuaAorKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKQEAgLTEyLDcgKzEyLDcgQEAKIAogI2lmbmRlZiBBQUNfRFJJVkVSX0JVSUxECiAjIGRlZmluZSBBQUNfRFJJVkVSX0JVSUxEIDI0MDkKLSMgZGVmaW5lIEFBQ19EUklWRVJfQlJBTkNIICItbWgxIgorIyBkZWZpbmUgQUFDX0RSSVZFUl9CUkFOQ0ggIi1taDIiCiAjZW5kaWYKICNkZWZpbmUgTUFYSU1VTV9OVU1fQ09OVEFJTkVSUwkzMgogCkBAIC01NjMsNyArNTYzLDYgQEAKIAlzcGlubG9ja190CQlsb2NrZGF0YTsJLyogQWN0dWFsIGxvY2sgKHVzZWQgb25seSBvbiBvbmUgc2lkZSBvZiB0aGUgbG9jaykgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIAljbWRxOwkgICAJLyogQSBxdWV1ZSBvZiBGSUJzIHdoaWNoIG5lZWQgdG8gYmUgcHJjZXNzZWQgYnkgdGhlIEZTIHRocmVhZC4gVGhpcyBpcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCS8qIG9ubHkgdmFsaWQgZm9yIGNvbW1hbmQgcXVldWVzIHdoaWNoIHJlY2VpdmUgZW50cmllcyBmcm9tIHRoZSBhZGFwdGVyLiAqLwotCXN0cnVjdCBsaXN0X2hlYWQJcGVuZGluZ3E7CS8qIEEgcXVldWUgb2Ygb3V0c3RhbmRpbmcgZmliJ3MgdG8gdGhlIGFkYXB0ZXIuICovCiAJdTMyCQkJbnVtcGVuZGluZzsJLyogTnVtYmVyIG9mIGVudHJpZXMgb24gb3V0c3RhbmRpbmcgcXVldWUuICovCiAJc3RydWN0IGFhY19kZXYgKglkZXY7CQkvKiBCYWNrIHBvaW50ZXIgdG8gYWRhcHRlciBzdHJ1Y3R1cmUgKi8KIH07CkBAIC04MjMsMTEgKzgyMiw2IEBACiAJdm9pZCAJCQkqY2FsbGJhY2tfZGF0YTsKIAl1MzIJCQlmbGFnczsgLy8gdTMyIGRtYiB3YXMgdWxvbmcKIAkvKgotCSAqCVRoZSBmb2xsb3dpbmcgaXMgdXNlZCB0byBwdXQgdGhpcyBmaWIgY29udGV4dCBvbnRvIHRoZSAKLQkgKglPdXRzdGFuZGluZyBJL08gcXVldWUuCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZAlxdWV1ZTsKLQkvKgogCSAqCUFuZCBmb3IgdGhlIGludGVybmFsIGlzc3VlL3JlcGx5IHF1ZXVlcyAod2UgbWF5IGJlIGFibGUKIAkgKgl0byBtZXJnZSB0aGVzZSB0d28pCiAJICovCkBAIC0xODE1LDMgKzE4MDksNSBAQAogZXh0ZXJuIGludCBudW1hY2I7CiBleHRlcm4gaW50IGFjYnNpemU7CiBleHRlcm4gY2hhciBhYWNfZHJpdmVyX3ZlcnNpb25bXTsKK2V4dGVybiBpbnQgc3RhcnR1cF90aW1lb3V0OworZXh0ZXJuIGludCBhaWZfdGltZW91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1jdHJsLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tY3RybC5jCmluZGV4IDlmNzUxNDQuLjI1NTQyMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1jdHJsLmMKKysrIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbWN0cmwuYwpAQCAtNTM1LDcgKzUzNSw3IEBACiAJZGVmYXVsdDoKIAkJZGF0YV9kaXIgPSBETUFfTk9ORTsKIAl9Ci0JaWYgKHVzZXJfc3JiY21kLT5zZy5jb3VudCA+IChzaXplb2Yoc2dfbGlzdCkvc2l6ZW9mKHNnX2xpc3RbMF0pKSkgeworCWlmICh1c2VyX3NyYmNtZC0+c2cuY291bnQgPiBBUlJBWV9TSVpFKHNnX2xpc3QpKSB7CiAJCWRwcmludGsoKEtFUk5fREVCVUciYWFjcmFpZDogdG9vIG1hbnkgc2cgZW50cmllcyAlZFxuIiwKIAkJICBsZTMyX3RvX2NwdShzcmJjbWQtPnNnLmNvdW50KSkpOwogCQlyY29kZSA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21taW5pdC5jIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbWluaXQuYwppbmRleCAxOTM5NzQ1Li4zNWIwYTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21taW5pdC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1pbml0LmMKQEAgLTEwMyw3ICsxMDMsNyBAQAogCSAqIFRoaXMgYXNzdW1lcyB0aGUgbWVtb3J5IGlzIG1hcHBlZCB6ZXJvLT5uLCB3aGljaCBpc250CiAJICogYWx3YXlzIHRydWUgb24gcmVhbCBjb21wdXRlcnMuIEl0IGFsc28gaGFzIHNvbWUgc2xpZ2h0IHByb2JsZW1zCiAJICogd2l0aCB0aGUgR0FSVCBvbiB4ODYtNjQuIEkndmUgYnR3IG5ldmVyIHRyaWVkIERNQSBmcm9tIFBDSSBzcGFjZQotCSAqIG9uIHRoaXMgcGxhdGZvcm0gYnV0IGRvbid0IGJlIHN1cHJpc2VkIGlmIGl0cyBwcm9ibGVtYXRpYy4KKwkgKiBvbiB0aGlzIHBsYXRmb3JtIGJ1dCBkb24ndCBiZSBzdXJwcmlzZWQgaWYgaXRzIHByb2JsZW1hdGljLgogCSAqLwogI2lmbmRlZiBDT05GSUdfR0FSVF9JT01NVQogCWlmICgobnVtX3BoeXNwYWdlcyA8PCAoUEFHRV9TSElGVCAtIDEyKSkgPD0gQUFDX01BWF9IT1NUUEhZU01FTVBBR0VTKSB7CkBAIC0xNTksNyArMTU5LDYgQEAKIHsKIAlxLT5udW1wZW5kaW5nID0gMDsKIAlxLT5kZXYgPSBkZXY7Ci0JSU5JVF9MSVNUX0hFQUQoJnEtPnBlbmRpbmdxKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZxLT5jbWRyZWFkeSk7CiAJSU5JVF9MSVNUX0hFQUQoJnEtPmNtZHEpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnEtPnFmdWxsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYwppbmRleCA5ZjlmNGFhLi4zZjI3NDE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMKKysrIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCkBAIC0yMjksOCArMjI5LDcgQEAKIHN0YXRpYyB2b2lkIGZpYl9kZWFsbG9jKHN0cnVjdCBmaWIgKiBmaWJwdHIpCiB7CiAJc3RydWN0IGh3X2ZpYiAqaHdfZmliID0gZmlicHRyLT5od19maWI7Ci0JaWYoaHdfZmliLT5oZWFkZXIuU3RydWN0VHlwZSAhPSBGSUJfTUFHSUMpIAotCQlCVUcoKTsKKwlCVUdfT04oaHdfZmliLT5oZWFkZXIuU3RydWN0VHlwZSAhPSBGSUJfTUFHSUMpOwogCWh3X2ZpYi0+aGVhZGVyLlhmZXJTdGF0ZSA9IDA7ICAgICAgICAKIH0KIApAQCAtNDcyLDcgKzQ3MSw2IEBACiAJc3Bpbl9sb2NrX2lycXNhdmUocS0+bG9jaywgcWZsYWdzKTsKIAlpZiAoZGV2LT5uZXdfY29tbV9pbnRlcmZhY2UpIHsKIAkJdW5zaWduZWQgbG9uZyBjb3VudCA9IDEwMDAwMDAwTDsgLyogNTAgc2Vjb25kcyAqLwotCQlsaXN0X2FkZF90YWlsKCZmaWJwdHItPnF1ZXVlLCAmcS0+cGVuZGluZ3EpOwogCQlxLT5udW1wZW5kaW5nKys7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+bG9jaywgcWZsYWdzKTsKIAkJd2hpbGUgKGFhY19hZGFwdGVyX3NlbmQoZmlicHRyKSAhPSAwKSB7CkBAIC00ODEsNyArNDc5LDYgQEAKIAkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZmlicHRyLT5ldmVudF9sb2NrLCBmbGFncyk7CiAJCQkJc3Bpbl9sb2NrX2lycXNhdmUocS0+bG9jaywgcWZsYWdzKTsKIAkJCQlxLT5udW1wZW5kaW5nLS07Ci0JCQkJbGlzdF9kZWwoJmZpYnB0ci0+cXVldWUpOwogCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+bG9jaywgcWZsYWdzKTsKIAkJCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAkJCX0KQEAgLTQ5Miw3ICs0ODksNiBAQAogCQl1bnNpZ25lZCBsb25nIG5vaW50ciA9IDA7CiAJCWFhY19xdWV1ZV9nZXQoIGRldiwgJmluZGV4LCBBZGFwTm9ybUNtZFF1ZXVlLCBod19maWIsIDEsIGZpYnB0ciwgJm5vaW50cik7CiAKLQkJbGlzdF9hZGRfdGFpbCgmZmlicHRyLT5xdWV1ZSwgJnEtPnBlbmRpbmdxKTsKIAkJcS0+bnVtcGVuZGluZysrOwogCQkqKHEtPmhlYWRlcnMucHJvZHVjZXIpID0gY3B1X3RvX2xlMzIoaW5kZXggKyAxKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShxLT5sb2NrLCBxZmxhZ3MpOwpAQCAtNTIwLDcgKzUxNiw2IEBACiAJCQkJaWYgKC0tY291bnQgPT0gMCkgewogCQkJCQlzcGluX2xvY2tfaXJxc2F2ZShxLT5sb2NrLCBxZmxhZ3MpOwogCQkJCQlxLT5udW1wZW5kaW5nLS07Ci0JCQkJCWxpc3RfZGVsKCZmaWJwdHItPnF1ZXVlKTsKIAkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShxLT5sb2NrLCBxZmxhZ3MpOwogCQkJCQlpZiAod2FpdCA9PSAtMSkgewogCSAgICAgICAgCQkJCXByaW50ayhLRVJOX0VSUiAiYWFjcmFpZDogYWFjX2ZpYl9zZW5kOiBmaXJzdCBhc3luY2hyb25vdXMgY29tbWFuZCB0aW1lZCBvdXQuXG4iCkBAIC01MzQsOCArNTI5LDcgQEAKIAkJCX0KIAkJfSBlbHNlCiAJCQlkb3duKCZmaWJwdHItPmV2ZW50X3dhaXQpOwotCQlpZihmaWJwdHItPmRvbmUgPT0gMCkKLQkJCUJVRygpOworCQlCVUdfT04oZmlicHRyLT5kb25lID09IDApOwogCQkJCiAJCWlmKChmaWJwdHItPmZsYWdzICYgRklCX0NPTlRFWFRfRkxBR19USU1FRF9PVVQpKXsKIAkJCXJldHVybiAtRVRJTUVET1VUOwpAQCAtMTIxNCw3ICsxMjA4LDcgQEAKIAkJCQkJCSAqIHNpbmNlIHRoZSBsYXN0IHJlYWQgb2ZmCiAJCQkJCQkgKiB0aGUgcXVldWU/CiAJCQkJCQkgKi8KLQkJCQkJCWlmICgodGltZV9ub3cgLSB0aW1lX2xhc3QpID4gMTIwKSB7CisJCQkJCQlpZiAoKHRpbWVfbm93IC0gdGltZV9sYXN0KSA+IGFpZl90aW1lb3V0KSB7CiAJCQkJCQkJZW50cnkgPSBlbnRyeS0+bmV4dDsKIAkJCQkJCQlhYWNfY2xvc2VfZmliX2NvbnRleHQoZGV2LCBmaWJjdHgpOwogCQkJCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvZHBjc3VwLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9kcGNzdXAuYwppbmRleCBmNmJjYjk0Li5iMmE1YzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9kcGNzdXAuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9kcGNzdXAuYwpAQCAtODUsMTAgKzg1LDkgQEAKIAkJICoJY29udGludWUuIFRoZSBjYWxsZXIgaGFzIGFscmVhZHkgYmVlbiBub3RpZmllZCB0aGF0CiAJCSAqCXRoZSBmaWIgdGltZWQgb3V0LgogCQkgKi8KLQkJaWYgKCEoZmliLT5mbGFncyAmIEZJQl9DT05URVhUX0ZMQUdfVElNRURfT1VUKSkgewotCQkJbGlzdF9kZWwoJmZpYi0+cXVldWUpOworCQlpZiAoIShmaWItPmZsYWdzICYgRklCX0NPTlRFWFRfRkxBR19USU1FRF9PVVQpKQogCQkJZGV2LT5xdWV1ZXMtPnF1ZXVlW0FkYXBOb3JtQ21kUXVldWVdLm51bXBlbmRpbmctLTsKLQkJfSBlbHNlIHsKKwkJZWxzZSB7CiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJhYWNyYWlkOiBGSUIgdGltZW91dCAoJXgpLlxuIiwgZmliLT5mbGFncyk7CiAJCQlwcmludGsoS0VSTl9ERUJVRyJhYWNyYWlkOiBod2ZpYj0lcCBmaWIgaW5kZXg9JWkgZmliPSVwXG4iLGh3ZmliLCBod2ZpYi0+aGVhZGVyLlNlbmRlckRhdGEsZmliKTsKIAkJCWNvbnRpbnVlOwpAQCAtMjg0LDcgKzI4Myw2IEBACiAJCQlyZXR1cm4gMDsKIAkJfQogCi0JCWxpc3RfZGVsKCZmaWItPnF1ZXVlKTsKIAkJZGV2LT5xdWV1ZXMtPnF1ZXVlW0FkYXBOb3JtQ21kUXVldWVdLm51bXBlbmRpbmctLTsKIAogCQlpZiAoZmFzdCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvbGluaXQuYyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2xpbml0LmMKaW5kZXggNmVmODljOS4uZTQyYTQ3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvbGluaXQuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9saW5pdC5jCkBAIC0xMTksNyArMTE5LDcgQEAKIAl7IDB4OTAwNSwgMHgwMjg2LCAweDkwMDUsIDB4MDI5ZiwgMCwgMCwgMjYgfSwgLyogSUNQOTAxNFIwIChMYW5jZXIpICovCiAJeyAweDkwMDUsIDB4MDI4NiwgMHg5MDA1LCAweDAyYTAsIDAsIDAsIDI3IH0sIC8qIElDUDkwNDdNQSAoTGFuY2VyKSAqLwogCXsgMHg5MDA1LCAweDAyODYsIDB4OTAwNSwgMHgwMmExLCAwLCAwLCAyOCB9LCAvKiBJQ1A5MDg3TUEgKExhbmNlcikgKi8KLQl7IDB4OTAwNSwgMHgwMjg2LCAweDkwMDUsIDB4MDJhMywgMCwgMCwgMjkgfSwgLyogSUNQNTA4NUFVIChIdXJyaWNhbmUpICovCisJeyAweDkwMDUsIDB4MDI4NiwgMHg5MDA1LCAweDAyYTMsIDAsIDAsIDI5IH0sIC8qIElDUDU0NDVBVSAoSHVycmljYW5lNDQpICovCiAJeyAweDkwMDUsIDB4MDI4NSwgMHg5MDA1LCAweDAyYTQsIDAsIDAsIDMwIH0sIC8qIElDUDkwODVMSSAoTWFyYXVkZXItWCkgKi8KIAl7IDB4OTAwNSwgMHgwMjg1LCAweDkwMDUsIDB4MDJhNSwgMCwgMCwgMzEgfSwgLyogSUNQNTA4NUJSIChNYXJhdWRlci1FKSAqLwogCXsgMHg5MDA1LCAweDAyODYsIDB4OTAwNSwgMHgwMmE2LCAwLCAwLCAzMiB9LCAvKiBJQ1A5MDY3TUEgKEludHJ1ZGVyLTYpICovCkBAIC0xNDMsNyArMTQzLDcgQEAKIAl7IDB4OTAwNSwgMHgwMjg1LCAweDkwMDUsIDB4MDI5OCwgMCwgMCwgNDggfSwgLyogQVNSLTQwMDBTQVMgKEJsYWNrQmlyZCkgKi8KIAl7IDB4OTAwNSwgMHgwMjg1LCAweDkwMDUsIDB4MDI5OSwgMCwgMCwgNDkgfSwgLyogQVNSLTQ4MDBTQVMgKE1hcmF1ZGVyLVgpICovCiAJeyAweDkwMDUsIDB4MDI4NSwgMHg5MDA1LCAweDAyOWEsIDAsIDAsIDUwIH0sIC8qIEFTUi00ODA1U0FTIChNYXJhdWRlci1FKSAqLwotCXsgMHg5MDA1LCAweDAyODYsIDB4OTAwNSwgMHgwMmEyLCAwLCAwLCA1MSB9LCAvKiBBU1ItNDgxMFNBUyAoSHVycmljYW5lICovCisJeyAweDkwMDUsIDB4MDI4NiwgMHg5MDA1LCAweDAyYTIsIDAsIDAsIDUxIH0sIC8qIEFTUi0zODAwU0FTIChIdXJyaWNhbmU0NCkgKi8KIAogCXsgMHg5MDA1LCAweDAyODUsIDB4MTAyOCwgMHgwMjg3LCAwLCAwLCA1MiB9LCAvKiBQZXJjIDMyMC9EQyovCiAJeyAweDEwMTEsIDB4MDA0NiwgMHg5MDA1LCAweDAzNjUsIDAsIDAsIDUzIH0sIC8qIEFkYXB0ZWMgNTQwMFMgKE11c3RhbmcpKi8KQEAgLTE5NSw3ICsxOTUsNyBAQAogCXsgYWFjX3JrdF9pbml0LCAiYWFjcmFpZCIsICAiSUNQICAgICAiLCAiSUNQOTAxNFIwICAgICAgICIsIDEgfSwgLyogSUNQOTAxNFIwIChMYW5jZXIpICovCiAJeyBhYWNfcmt0X2luaXQsICJhYWNyYWlkIiwgICJJQ1AgICAgICIsICJJQ1A5MDQ3TUEgICAgICAgIiwgMSB9LCAvKiBJQ1A5MDQ3TUEgKExhbmNlcikgKi8KIAl7IGFhY19ya3RfaW5pdCwgImFhY3JhaWQiLCAgIklDUCAgICAgIiwgIklDUDkwODdNQSAgICAgICAiLCAxIH0sIC8qIElDUDkwODdNQSAoTGFuY2VyKSAqLwotCXsgYWFjX3JrdF9pbml0LCAiYWFjcmFpZCIsICAiSUNQICAgICAiLCAiSUNQNTA4NUFVICAgICAgICIsIDEgfSwgLyogSUNQNTA4NUFVIChIdXJyaWNhbmUpICovCisJeyBhYWNfcmt0X2luaXQsICJhYWNyYWlkIiwgICJJQ1AgICAgICIsICJJQ1A1NDQ1QVUgICAgICAgIiwgMSB9LCAvKiBJQ1A1NDQ1QVUgKEh1cnJpY2FuZTQ0KSAqLwogCXsgYWFjX3J4X2luaXQsICJhYWNyYWlkIiwgICJJQ1AgICAgICIsICJJQ1A5MDg1TEkgICAgICAgIiwgMSB9LCAvKiBJQ1A5MDg1TEkgKE1hcmF1ZGVyLVgpICovCiAJeyBhYWNfcnhfaW5pdCwgImFhY3JhaWQiLCAgIklDUCAgICAgIiwgIklDUDUwODVCUiAgICAgICAiLCAxIH0sIC8qIElDUDUwODVCUiAoTWFyYXVkZXItRSkgKi8KIAl7IGFhY19ya3RfaW5pdCwgImFhY3JhaWQiLCAgIklDUCAgICAgIiwgIklDUDkwNjdNQSAgICAgICAiLCAxIH0sIC8qIElDUDkwNjdNQSAoSW50cnVkZXItNikgKi8KQEAgLTIxNyw3ICsyMTcsNyBAQAogCXsgYWFjX3J4X2luaXQsICJhYWNyYWlkIiwgICJBREFQVEVDICIsICJBU1ItNDAwMFNBUyAgICAgIiwgMSB9LCAvKiBBU1ItNDAwMFNBUyAoQmxhY2tCaXJkICYgQXZvblBhcmspICovCiAJeyBhYWNfcnhfaW5pdCwgImFhY3JhaWQiLCAgIkFEQVBURUMgIiwgIkFTUi00ODAwU0FTICAgICAiLCAxIH0sIC8qIEFTUi00ODAwU0FTIChNYXJhdWRlci1YKSAqLwogCXsgYWFjX3J4X2luaXQsICJhYWNyYWlkIiwgICJBREFQVEVDICIsICJBU1ItNDgwNVNBUyAgICAgIiwgMSB9LCAvKiBBU1ItNDgwNVNBUyAoTWFyYXVkZXItRSkgKi8KLQl7IGFhY19ya3RfaW5pdCwgImFhY3JhaWQiLCAgIkFEQVBURUMgIiwgIkFTUi00ODEwU0FTICAgICAiLCAxIH0sIC8qIEFTUi00ODEwU0FTIChIdXJyaWNhbmUpICovCisJeyBhYWNfcmt0X2luaXQsICJhYWNyYWlkIiwgICJBREFQVEVDICIsICJBU1ItMzgwMFNBUyAgICAgIiwgMSB9LCAvKiBBU1ItMzgwMFNBUyAoSHVycmljYW5lNDQpICovCiAKIAl7IGFhY19yeF9pbml0LCAicGVyY3JhaWQiLCAiREVMTCAgICAiLCAiUEVSQyAzMjAvREMgICAgICIsIDIsIEFBQ19RVUlSS18zMUJJVCB8IEFBQ19RVUlSS18zNFNHIH0sIC8qIFBlcmMgMzIwL0RDKi8KIAl7IGFhY19zYV9pbml0LCAiYWFjcmFpZCIsICAiQURBUFRFQyAiLCAiQWRhcHRlYyA1NDAwUyAgICIsIDQsIEFBQ19RVUlSS18zNFNHIH0sIC8qIEFkYXB0ZWMgNTQwMFMgKE11c3RhbmcpKi8KQEAgLTQ1MywxNSArNDUzLDEwIEBACiAKIAlwcmludGsoS0VSTl9FUlIgIiVzOiBIb3N0IGFkYXB0ZXIgcmVzZXQgcmVxdWVzdC4gU0NTSSBoYW5nID9cbiIsIAogCQkJCQlBQUNfRFJJVkVSTkFNRSk7Ci0KLQotCXNwaW5fbG9ja19pcnEoaG9zdC0+aG9zdF9sb2NrKTsKLQogCWFhYyA9IChzdHJ1Y3QgYWFjX2RldiAqKWhvc3QtPmhvc3RkYXRhOwogCWlmIChhYWNfYWRhcHRlcl9jaGVja19oZWFsdGgoYWFjKSkgewogCQlwcmludGsoS0VSTl9FUlIgIiVzOiBIb3N0IGFkYXB0ZXIgYXBwZWFycyBkZWFkXG4iLCAKIAkJCQlBQUNfRFJJVkVSTkFNRSk7Ci0JCXNwaW5fdW5sb2NrX2lycShob3N0LT5ob3N0X2xvY2spOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAJLyoKQEAgLTQ4NywxMyArNDgyLDEwIEBACiAJCS8qCiAJCSAqIFdlIGNhbiBleGl0IElmIGFsbCB0aGUgY29tbWFuZHMgYXJlIGNvbXBsZXRlCiAJCSAqLwotCQlzcGluX3VubG9ja19pcnEoaG9zdC0+aG9zdF9sb2NrKTsKIAkJaWYgKGFjdGl2ZSA9PSAwKQogCQkJcmV0dXJuIFNVQ0NFU1M7CiAJCXNzbGVlcCgxKTsKLQkJc3Bpbl9sb2NrX2lycShob3N0LT5ob3N0X2xvY2spOwogCX0KLQlzcGluX3VubG9ja19pcnEoaG9zdC0+aG9zdF9sb2NrKTsKIAlwcmludGsoS0VSTl9FUlIgIiVzOiBTQ1NJIGJ1cyBhcHBlYXJzIGh1bmdcbiIsIEFBQ19EUklWRVJOQU1FKTsKIAlyZXR1cm4gLUVUSU1FRE9VVDsKIH0KQEAgLTU3Miw3ICs1NjQsNyBAQAogCQkKIAkJZiA9IGNvbXBhdF9hbGxvY191c2VyX3NwYWNlKHNpemVvZigqZikpOwogCQlyZXQgPSAwOwotCQlpZiAoY2xlYXJfdXNlcihmLCBzaXplb2YoKmYpKSAhPSBzaXplb2YoKmYpKQorCQlpZiAoY2xlYXJfdXNlcihmLCBzaXplb2YoKmYpKSkKIAkJCXJldCA9IC1FRkFVTFQ7CiAJCWlmIChjb3B5X2luX3VzZXIoZiwgKHZvaWQgX191c2VyICopYXJnLCBzaXplb2Yoc3RydWN0IGZpYl9pb2N0bCkgLSBzaXplb2YodTMyKSkpCiAJCQlyZXQgPSAtRUZBVUxUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvcmt0LmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9ya3QuYwppbmRleCA3YTIzZTAyLi41YjUyOTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9ya3QuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9ya3QuYwpAQCAtNDQ0LDE0ICs0NDQsMTQgQEAKIAkgKi8KIAl3aGlsZSAoIShya3RfcmVhZGwoZGV2LCBNVW5pdC5PTVJ4WzBdKSAmIEtFUk5FTF9VUF9BTkRfUlVOTklORykpCiAJewotCQlpZih0aW1lX2FmdGVyKGppZmZpZXMsIHN0YXJ0KzE4MCpIWikpCisJCWlmKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RhcnQrc3RhcnR1cF90aW1lb3V0KkhaKSkKIAkJewogCQkJc3RhdHVzID0gcmt0X3JlYWRsKGRldiwgTVVuaXQuT01SeFswXSk7CiAJCQlwcmludGsoS0VSTl9FUlIgIiVzJWQ6IGFkYXB0ZXIga2VybmVsIGZhaWxlZCB0byBzdGFydCwgaW5pdCBzdGF0dXMgPSAlbHguXG4iLCAKIAkJCQkJZGV2LT5uYW1lLCBpbnN0YW5jZSwgc3RhdHVzKTsKIAkJCWdvdG8gZXJyb3JfaW91bm1hcDsKIAkJfQotCQlzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZSgxKTsKKwkJbXNsZWVwKDEpOwogCX0KIAlpZiAocmVxdWVzdF9pcnEoZGV2LT5zY3NpX2hvc3RfcHRyLT5pcnEsIGFhY19ya3RfaW50ciwgU0FfU0hJUlF8U0FfSU5URVJSVVBULCAiYWFjcmFpZCIsICh2b2lkICopZGV2KTwwKSAKIAl7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9yeC5jIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvcnguYwppbmRleCA3MjliOWViLi45ZGFkZmIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9yeC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL3J4LmMKQEAgLTQ0NCwxNCArNDQ0LDE0IEBACiAJd2hpbGUgKCghKHJ4X3JlYWRsKGRldiwgSW5kZXhSZWdzLk1haWxib3hbN10pICYgS0VSTkVMX1VQX0FORF9SVU5OSU5HKSkKIAkJfHwgKCEocnhfcmVhZGwoZGV2LCBNVW5pdC5PTVJ4WzBdKSAmIEtFUk5FTF9VUF9BTkRfUlVOTklORykpKQogCXsKLQkJaWYodGltZV9hZnRlcihqaWZmaWVzLCBzdGFydCsxODAqSFopKQorCQlpZih0aW1lX2FmdGVyKGppZmZpZXMsIHN0YXJ0K3N0YXJ0dXBfdGltZW91dCpIWikpCiAJCXsKIAkJCXN0YXR1cyA9IHJ4X3JlYWRsKGRldiwgSW5kZXhSZWdzLk1haWxib3hbN10pOwogCQkJcHJpbnRrKEtFUk5fRVJSICIlcyVkOiBhZGFwdGVyIGtlcm5lbCBmYWlsZWQgdG8gc3RhcnQsIGluaXQgc3RhdHVzID0gJWx4LlxuIiwgCiAJCQkJCWRldi0+bmFtZSwgaW5zdGFuY2UsIHN0YXR1cyk7CiAJCQlnb3RvIGVycm9yX2lvdW5tYXA7CiAJCX0KLQkJc2NoZWR1bGVfdGltZW91dF91bmludGVycnVwdGlibGUoMSk7CisJCW1zbGVlcCgxKTsKIAl9CiAJaWYgKHJlcXVlc3RfaXJxKGRldi0+c2NzaV9ob3N0X3B0ci0+aXJxLCBhYWNfcnhfaW50ciwgU0FfU0hJUlF8U0FfSU5URVJSVVBULCAiYWFjcmFpZCIsICh2b2lkICopZGV2KTwwKSAKIAl7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zYS5jIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvc2EuYwppbmRleCBhNTM0NTQ5Li44OGQ0MDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9zYS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL3NhLmMKQEAgLTY2LDExICs2NiwxMSBAQAogCQkJc2Ffd3JpdGV3KGRldiwgRG9vcmJlbGxDbHJSZWdfcCwgUHJpbnRmUmVhZHkpOyAvKiBjbGVhciBQcmludGZSZWFkeSAqLwogCQkJc2Ffd3JpdGV3KGRldiwgRG9vcmJlbGxSZWdfcywgUHJpbnRmRG9uZSk7CiAJCX0gZWxzZSBpZiAoaW50c3RhdCAmIERPT1JCRUxMXzEpIHsJLy8gZGV2IC0+IEhvc3QgTm9ybWFsIENvbW1hbmQgUmVhZHkKLQkJCWFhY19jb21tYW5kX25vcm1hbCgmZGV2LT5xdWV1ZXMtPnF1ZXVlW0hvc3ROb3JtQ21kUXVldWVdKTsKIAkJCXNhX3dyaXRldyhkZXYsIERvb3JiZWxsQ2xyUmVnX3AsIERPT1JCRUxMXzEpOworCQkJYWFjX2NvbW1hbmRfbm9ybWFsKCZkZXYtPnF1ZXVlcy0+cXVldWVbSG9zdE5vcm1DbWRRdWV1ZV0pOwogCQl9IGVsc2UgaWYgKGludHN0YXQgJiBET09SQkVMTF8yKSB7CS8vIGRldiAtPiBIb3N0IE5vcm1hbCBSZXNwb25zZSBSZWFkeQotCQkJYWFjX3Jlc3BvbnNlX25vcm1hbCgmZGV2LT5xdWV1ZXMtPnF1ZXVlW0hvc3ROb3JtUmVzcFF1ZXVlXSk7CiAJCQlzYV93cml0ZXcoZGV2LCBEb29yYmVsbENsclJlZ19wLCBET09SQkVMTF8yKTsKKwkJCWFhY19yZXNwb25zZV9ub3JtYWwoJmRldi0+cXVldWVzLT5xdWV1ZVtIb3N0Tm9ybVJlc3BRdWV1ZV0pOwogCQl9IGVsc2UgaWYgKGludHN0YXQgJiBET09SQkVMTF8zKSB7CS8vIGRldiAtPiBIb3N0IE5vcm1hbCBDb21tYW5kIE5vdCBGdWxsCiAJCQlzYV93cml0ZXcoZGV2LCBEb29yYmVsbENsclJlZ19wLCBET09SQkVMTF8zKTsKIAkJfSBlbHNlIGlmIChpbnRzdGF0ICYgRE9PUkJFTExfNCkgewkvLyBkZXYgLT4gSG9zdCBOb3JtYWwgUmVzcG9uc2UgTm90IEZ1bGwKQEAgLTMxOCwxMyArMzE4LDEzIEBACiAJICoJV2FpdCBmb3IgdGhlIGFkYXB0ZXIgdG8gYmUgdXAgYW5kIHJ1bm5pbmcuIFdhaXQgdXAgdG8gMyBtaW51dGVzLgogCSAqLwogCXdoaWxlICghKHNhX3JlYWRsKGRldiwgTWFpbGJveDcpICYgS0VSTkVMX1VQX0FORF9SVU5OSU5HKSkgewotCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBzdGFydCsxODAqSFopKSB7CisJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHN0YXJ0K3N0YXJ0dXBfdGltZW91dCpIWikpIHsKIAkJCXN0YXR1cyA9IHNhX3JlYWRsKGRldiwgTWFpbGJveDcpOwogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXMlZDogYWRhcHRlciBrZXJuZWwgZmFpbGVkIHRvIHN0YXJ0LCBpbml0IHN0YXR1cyA9ICVseC5cbiIsIAogCQkJCQluYW1lLCBpbnN0YW5jZSwgc3RhdHVzKTsKIAkJCWdvdG8gZXJyb3JfaW91bm1hcDsKIAkJfQotCQlzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZSgxKTsKKwkJbXNsZWVwKDEpOwogCX0KIAogCWlmIChyZXF1ZXN0X2lycShkZXYtPnNjc2lfaG9zdF9wdHItPmlycSwgYWFjX3NhX2ludHIsIFNBX1NISVJRfFNBX0lOVEVSUlVQVCwgImFhY3JhaWQiLCAodm9pZCAqKWRldiApIDwgMCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FoYTE1NDIuYyBiL2RyaXZlcnMvc2NzaS9haGExNTQyLmMKaW5kZXggNTFiYWQ3YS4uODZjNmJkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FoYTE1NDIuYworKysgYi9kcml2ZXJzL3Njc2kvYWhhMTU0Mi5jCkBAIC0xMDExLDcgKzEwMTEsNyBAQAogCiAJaW50IGNvdW50PXNldHVwX2lkeDsKIAotCWdldF9vcHRpb25zKHN0ciwgc2l6ZW9mKGludHMpL3NpemVvZihpbnQpLCBpbnRzKTsKKwlnZXRfb3B0aW9ucyhzdHIsIEFSUkFZX1NJWkUoaW50cyksIGludHMpOwogCWFoYTE1NDJfc2V0dXAoc3RyLGludHMpOwogCiAJcmV0dXJuIGNvdW50PHNldHVwX2lkeDsKQEAgLTEwNzIsOCArMTA3Miw3IEBACiAJCWludCBzbG90ID0gMDsKIAkJaW50IHBvcyA9IDA7CiAKLQkJZm9yIChpbmR4ID0gMDsgKHNsb3QgIT0gIE1DQV9OT1RGT1VORCkgJiYgCi0JCQkgICAgIChpbmR4IDwgc2l6ZW9mKGJhc2VzKS9zaXplb2YoYmFzZXNbMF0pKTsgaW5keCsrKSB7CisJCWZvciAoaW5keCA9IDA7IChzbG90ICE9IE1DQV9OT1RGT1VORCkgJiYgKGluZHggPCBBUlJBWV9TSVpFKGJhc2VzKSk7IGluZHgrKykgewogCiAJCQlpZiAoYmFzZXNbaW5keF0pCiAJCQkJY29udGludWU7CkBAIC0xMDgzLDEwICsxMDgyLDkgQEAKIAkJCWlmIChzbG90ID09IE1DQV9OT1RGT1VORCkKIAkJCQlicmVhazsKIAotCQkJCiAJCQkvKiBGb3VuZCBvbmUgKi8KIAkJCXBvcyA9IG1jYV9yZWFkX3N0b3JlZF9wb3Moc2xvdCwgMyk7Ci0JCQkKKwogCQkJLyogRGVjb2RlIGFkZHJlc3MgKi8KIAkJCWlmIChwb3MgJiAweDgwKSB7CiAJCQkJaWYgKHBvcyAmIDB4MDIpIHsKQEAgLTExMTgsMjMgKzExMTYsMjIgQEAKIAkJCW1jYV9zZXRfYWRhcHRlcl9uYW1lKHNsb3QsICJBZGFwdGVyIEFIQS0xNjQwIik7CiAJCQltY2Ffc2V0X2FkYXB0ZXJfcHJvY2ZuKHNsb3QsIE5VTEwsIE5VTEwpOwogCQkJbWNhX21hcmtfYXNfdXNlZChzbG90KTsKLQkJCQorCiAJCQkvKiBHbyBvbiAqLwogCQkJc2xvdCsrOwogCQl9Ci0JCQorCiAJfQogI2VuZGlmCiAKIAkvKgogCSAqCUh1bnQgZm9yIElTQSBQbHVnJ24nUHJheSBBZGFwdGVjcyAoQUhBMTUzNSkKIAkgKi8KLQkgCisKIAlpZihpc2FwbnApCiAJewogCQlzdHJ1Y3QgcG5wX2RldiAqcGRldiA9IE5VTEw7Ci0JCWZvcihpbmR4ID0gMDsgaW5keCA8c2l6ZW9mKGJhc2VzKS9zaXplb2YoYmFzZXNbMF0pO2luZHgrKykKLQkJeworCQlmb3IoaW5keCA9IDA7IGluZHggPCBBUlJBWV9TSVpFKGJhc2VzKTsgaW5keCsrKSB7CiAJCQlpZihiYXNlc1tpbmR4XSkKIAkJCQljb250aW51ZTsKIAkJCXBkZXYgPSBwbnBfZmluZF9kZXYoTlVMTCwgSVNBUE5QX1ZFTkRPUignQScsICdEJywgJ1AnKSwgCkBAIC0xMTQ0LDI5ICsxMTQxLDI5IEBACiAJCQkvKgogCQkJICoJQWN0aXZhdGUgdGhlIFBuUCBjYXJkCiAJCQkgKi8KLQkJCSAKKwogCQkJaWYocG5wX2RldmljZV9hdHRhY2gocGRldik8MCkKIAkJCQljb250aW51ZTsKLQkJCQorCiAJCQlpZihwbnBfYWN0aXZhdGVfZGV2KHBkZXYpPDApIHsKIAkJCQlwbnBfZGV2aWNlX2RldGFjaChwZGV2KTsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCQorCiAJCQlpZighcG5wX3BvcnRfdmFsaWQocGRldiwgMCkpIHsKIAkJCQlwbnBfZGV2aWNlX2RldGFjaChwZGV2KTsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCQkKKwogCQkJYmFzZXNbaW5keF0gPSBwbnBfcG9ydF9zdGFydChwZGV2LCAwKTsKLQkJCQorCiAJCQkvKiBUaGUgY2FyZCBjYW4gYmUgcXVlcmllZCBmb3IgaXRzIERNQSwgd2UgaGF2ZSAKIAkJCSAgIHRoZSBETUEgc2V0IHVwIHRoYXQgaXMgZW5vdWdoICovCi0JCQkgICAKKwogCQkJcHJpbnRrKEtFUk5fSU5GTyAiSVNBUG5QIGZvdW5kIGFuIEFIQTE1MzUgYXQgSS9PIDB4JTAzWFxuIiwgYmFzZXNbaW5keF0pOwogCQl9CiAJfQotCWZvciAoaW5keCA9IDA7IGluZHggPCBzaXplb2YoYmFzZXMpIC8gc2l6ZW9mKGJhc2VzWzBdKTsgaW5keCsrKQorCWZvciAoaW5keCA9IDA7IGluZHggPCBBUlJBWV9TSVpFKGJhc2VzKTsgaW5keCsrKQogCQlpZiAoYmFzZXNbaW5keF0gIT0gMCAmJiByZXF1ZXN0X3JlZ2lvbihiYXNlc1tpbmR4XSwgNCwgImFoYTE1NDIiKSkgewogCQkJc2hwbnQgPSBzY3NpX3JlZ2lzdGVyKHRwbnQsCiAJCQkJCXNpemVvZihzdHJ1Y3QgYWhhMTU0Ml9ob3N0ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FoY2kuYyBiL2RyaXZlcnMvc2NzaS9haGNpLmMKaW5kZXggYjRmOGZiMS4uNGJiNzdmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FoY2kuYworKysgYi9kcml2ZXJzL3Njc2kvYWhjaS5jCkBAIC00OCw3ICs0OCw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJImFoY2kiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSIxLjIiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjMiCiAKIAogZW51bSB7CkBAIC01NiwxMiArNTYsMTUgQEAKIAlBSENJX01BWF9TRwkJPSAxNjgsIC8qIGhhcmR3YXJlIG1heCBpcyA2NEsgKi8KIAlBSENJX0RNQV9CT1VOREFSWQk9IDB4ZmZmZmZmZmYsCiAJQUhDSV9VU0VfQ0xVU1RFUklORwk9IDAsCi0JQUhDSV9DTURfU0xPVF9TWgk9IDMyICogMzIsCisJQUhDSV9NQVhfQ01EUwkJPSAzMiwKKwlBSENJX0NNRF9TWgkJPSAzMiwKKwlBSENJX0NNRF9TTE9UX1NaCT0gQUhDSV9NQVhfQ01EUyAqIEFIQ0lfQ01EX1NaLAogCUFIQ0lfUlhfRklTX1NaCQk9IDI1NiwKLQlBSENJX0NNRF9UQkxfSERSCT0gMHg4MCwKIAlBSENJX0NNRF9UQkxfQ0RCCT0gMHg0MCwKLQlBSENJX0NNRF9UQkxfU1oJCT0gQUhDSV9DTURfVEJMX0hEUiArIChBSENJX01BWF9TRyAqIDE2KSwKLQlBSENJX1BPUlRfUFJJVl9ETUFfU1oJPSBBSENJX0NNRF9TTE9UX1NaICsgQUhDSV9DTURfVEJMX1NaICsKKwlBSENJX0NNRF9UQkxfSERSX1NaCT0gMHg4MCwKKwlBSENJX0NNRF9UQkxfU1oJCT0gQUhDSV9DTURfVEJMX0hEUl9TWiArIChBSENJX01BWF9TRyAqIDE2KSwKKwlBSENJX0NNRF9UQkxfQVJfU1oJPSBBSENJX0NNRF9UQkxfU1ogKiBBSENJX01BWF9DTURTLAorCUFIQ0lfUE9SVF9QUklWX0RNQV9TWgk9IEFIQ0lfQ01EX1NMT1RfU1ogKyBBSENJX0NNRF9UQkxfQVJfU1ogKwogCQkJCSAgQUhDSV9SWF9GSVNfU1osCiAJQUhDSV9JUlFfT05fU0cJCT0gKDEgPDwgMzEpLAogCUFIQ0lfQ01EX0FUQVBJCQk9ICgxIDw8IDUpLApAQCAtNzEsOCArNzQsMTAgQEAKIAlBSENJX0NNRF9DTFJfQlVTWQk9ICgxIDw8IDEwKSwKIAogCVJYX0ZJU19EMkhfUkVHCQk9IDB4NDAsCS8qIG9mZnNldCBvZiBEMkggUmVnaXN0ZXIgRklTIGRhdGEgKi8KKwlSWF9GSVNfVU5LCQk9IDB4NjAsIC8qIG9mZnNldCBvZiBVbmtub3duIEZJUyBkYXRhICovCiAKIAlib2FyZF9haGNpCQk9IDAsCisJYm9hcmRfYWhjaV92dDgyNTEJPSAxLAogCiAJLyogZ2xvYmFsIGNvbnRyb2xsZXIgcmVnaXN0ZXJzICovCiAJSE9TVF9DQVAJCT0gMHgwMCwgLyogaG9zdCBjYXBhYmlsaXRpZXMgKi8KQEAgLTg3LDggKzkyLDkgQEAKIAlIT1NUX0FIQ0lfRU4JCT0gKDEgPDwgMzEpLCAvKiBBSENJIGVuYWJsZWQgKi8KIAogCS8qIEhPU1RfQ0FQIGJpdHMgKi8KLQlIT1NUX0NBUF82NAkJPSAoMSA8PCAzMSksIC8qIFBDSSBEQUMgKDY0LWJpdCBETUEpIHN1cHBvcnQgKi8KIAlIT1NUX0NBUF9DTE8JCT0gKDEgPDwgMjQpLCAvKiBDb21tYW5kIExpc3QgT3ZlcnJpZGUgc3VwcG9ydCAqLworCUhPU1RfQ0FQX05DUQkJPSAoMSA8PCAzMCksIC8qIE5hdGl2ZSBDb21tYW5kIFF1ZXVlaW5nICovCisJSE9TVF9DQVBfNjQJCT0gKDEgPDwgMzEpLCAvKiBQQ0kgREFDICg2NC1iaXQgRE1BKSBzdXBwb3J0ICovCiAKIAkvKiByZWdpc3RlcnMgZm9yIGVhY2ggU0FUQSBwb3J0ICovCiAJUE9SVF9MU1RfQUREUgkJPSAweDAwLCAvKiBjb21tYW5kIGxpc3QgRE1BIGFkZHIgKi8KQEAgLTEyNywxNSArMTMzLDE3IEBACiAJUE9SVF9JUlFfUElPU19GSVMJPSAoMSA8PCAxKSwgLyogUElPIFNldHVwIEZJUyByeCdkICovCiAJUE9SVF9JUlFfRDJIX1JFR19GSVMJPSAoMSA8PCAwKSwgLyogRDJIIFJlZ2lzdGVyIEZJUyByeCdkICovCiAKLQlQT1JUX0lSUV9GQVRBTAkJPSBQT1JUX0lSUV9URl9FUlIgfAotCQkJCSAgUE9SVF9JUlFfSEJVU19FUlIgfAotCQkJCSAgUE9SVF9JUlFfSEJVU19EQVRBX0VSUiB8Ci0JCQkJICBQT1JUX0lSUV9JRl9FUlIsCi0JREVGX1BPUlRfSVJRCQk9IFBPUlRfSVJRX0ZBVEFMIHwgUE9SVF9JUlFfUEhZUkRZIHwKLQkJCQkgIFBPUlRfSVJRX0NPTk5FQ1QgfCBQT1JUX0lSUV9TR19ET05FIHwKLQkJCQkgIFBPUlRfSVJRX1VOS19GSVMgfCBQT1JUX0lSUV9TREJfRklTIHwKLQkJCQkgIFBPUlRfSVJRX0RNQVNfRklTIHwgUE9SVF9JUlFfUElPU19GSVMgfAotCQkJCSAgUE9SVF9JUlFfRDJIX1JFR19GSVMsCisJUE9SVF9JUlFfRlJFRVpFCQk9IFBPUlRfSVJRX0hCVVNfRVJSIHwKKwkJCQkgIFBPUlRfSVJRX0lGX0VSUiB8CisJCQkJICBQT1JUX0lSUV9DT05ORUNUIHwKKwkJCQkgIFBPUlRfSVJRX1BIWVJEWSB8CisJCQkJICBQT1JUX0lSUV9VTktfRklTLAorCVBPUlRfSVJRX0VSUk9SCQk9IFBPUlRfSVJRX0ZSRUVaRSB8CisJCQkJICBQT1JUX0lSUV9URl9FUlIgfAorCQkJCSAgUE9SVF9JUlFfSEJVU19EQVRBX0VSUiwKKwlERUZfUE9SVF9JUlEJCT0gUE9SVF9JUlFfRVJST1IgfCBQT1JUX0lSUV9TR19ET05FIHwKKwkJCQkgIFBPUlRfSVJRX1NEQl9GSVMgfCBQT1JUX0lSUV9ETUFTX0ZJUyB8CisJCQkJICBQT1JUX0lSUV9QSU9TX0ZJUyB8IFBPUlRfSVJRX0QySF9SRUdfRklTLAogCiAJLyogUE9SVF9DTUQgYml0cyAqLwogCVBPUlRfQ01EX0FUQVBJCQk9ICgxIDw8IDI0KSwgLyogRGV2aWNlIGlzIEFUQVBJICovCkBAIC0xNTMsNiArMTYxLDEwIEBACiAKIAkvKiBocHJpdi0+ZmxhZ3MgYml0cyAqLwogCUFIQ0lfRkxBR19NU0kJCT0gKDEgPDwgMCksCisKKwkvKiBhcC0+ZmxhZ3MgYml0cyAqLworCUFIQ0lfRkxBR19SRVNFVF9ORUVEU19DTE8JPSAoMSA8PCAyNCksCisJQUhDSV9GTEFHX05PX05DUQkJPSAoMSA8PCAyNSksCiB9OwogCiBzdHJ1Y3QgYWhjaV9jbWRfaGRyIHsKQEAgLTE4MSw3ICsxOTMsNiBAQAogCWRtYV9hZGRyX3QJCWNtZF9zbG90X2RtYTsKIAl2b2lkCQkJKmNtZF90Ymw7CiAJZG1hX2FkZHJfdAkJY21kX3RibF9kbWE7Ci0Jc3RydWN0IGFoY2lfc2cJCSpjbWRfdGJsX3NnOwogCXZvaWQJCQkqcnhfZmlzOwogCWRtYV9hZGRyX3QJCXJ4X2Zpc19kbWE7CiB9OwpAQCAtMTkxLDE1ICsyMDIsMTYgQEAKIHN0YXRpYyBpbnQgYWhjaV9pbml0X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpOwogc3RhdGljIHVuc2lnbmVkIGludCBhaGNpX3FjX2lzc3VlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwogc3RhdGljIGlycXJldHVybl90IGFoY2lfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLXN0YXRpYyBpbnQgYWhjaV9wcm9iZV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpOwogc3RhdGljIHZvaWQgYWhjaV9pcnFfY2xlYXIoc3RydWN0IGF0YV9wb3J0ICphcCk7Ci1zdGF0aWMgdm9pZCBhaGNpX2VuZ190aW1lb3V0KHN0cnVjdCBhdGFfcG9ydCAqYXApOwogc3RhdGljIGludCBhaGNpX3BvcnRfc3RhcnQoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBzdGF0aWMgdm9pZCBhaGNpX3BvcnRfc3RvcChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHN0YXRpYyB2b2lkIGFoY2lfdGZfcmVhZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX3Rhc2tmaWxlICp0Zik7CiBzdGF0aWMgdm9pZCBhaGNpX3FjX3ByZXAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiBzdGF0aWMgdTggYWhjaV9jaGVja19zdGF0dXMoc3RydWN0IGF0YV9wb3J0ICphcCk7Ci1zdGF0aWMgaW5saW5lIGludCBhaGNpX2hvc3RfaW50cihzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKK3N0YXRpYyB2b2lkIGFoY2lfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgYWhjaV90aGF3KHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgYWhjaV9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgYWhjaV9wb3N0X2ludGVybmFsX2NtZChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIHN0YXRpYyB2b2lkIGFoY2lfcmVtb3ZlX29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogCiBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBhaGNpX3NodCA9IHsKQEAgLTIwNyw3ICsyMTksOCBAQAogCS5uYW1lCQkJPSBEUlZfTkFNRSwKIAkuaW9jdGwJCQk9IGF0YV9zY3NpX2lvY3RsLAogCS5xdWV1ZWNvbW1hbmQJCT0gYXRhX3Njc2lfcXVldWVjbWQsCi0JLmNhbl9xdWV1ZQkJPSBBVEFfREVGX1FVRVVFLAorCS5jaGFuZ2VfcXVldWVfZGVwdGgJPSBhdGFfc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgsCisJLmNhbl9xdWV1ZQkJPSBBSENJX01BWF9DTURTIC0gMSwKIAkudGhpc19pZAkJPSBBVEFfU0hUX1RISVNfSUQsCiAJLnNnX3RhYmxlc2l6ZQkJPSBBSENJX01BWF9TRywKIAkuY21kX3Blcl9sdW4JCT0gQVRBX1NIVF9DTURfUEVSX0xVTiwKQEAgLTIxNiw2ICsyMjksNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBSENJX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAorCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAogfTsKIApAQCAtMjI4LDE5ICsyNDIsMjEgQEAKIAogCS50Zl9yZWFkCQk9IGFoY2lfdGZfcmVhZCwKIAotCS5wcm9iZV9yZXNldAkJPSBhaGNpX3Byb2JlX3Jlc2V0LAotCiAJLnFjX3ByZXAJCT0gYWhjaV9xY19wcmVwLAogCS5xY19pc3N1ZQkJPSBhaGNpX3FjX2lzc3VlLAogCi0JLmVuZ190aW1lb3V0CQk9IGFoY2lfZW5nX3RpbWVvdXQsCi0KIAkuaXJxX2hhbmRsZXIJCT0gYWhjaV9pbnRlcnJ1cHQsCiAJLmlycV9jbGVhcgkJPSBhaGNpX2lycV9jbGVhciwKIAogCS5zY3JfcmVhZAkJPSBhaGNpX3Njcl9yZWFkLAogCS5zY3Jfd3JpdGUJCT0gYWhjaV9zY3Jfd3JpdGUsCiAKKwkuZnJlZXplCQkJPSBhaGNpX2ZyZWV6ZSwKKwkudGhhdwkJCT0gYWhjaV90aGF3LAorCisJLmVycm9yX2hhbmRsZXIJCT0gYWhjaV9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGFoY2lfcG9zdF9pbnRlcm5hbF9jbWQsCisKIAkucG9ydF9zdGFydAkJPSBhaGNpX3BvcnRfc3RhcnQsCiAJLnBvcnRfc3RvcAkJPSBhaGNpX3BvcnRfc3RvcCwKIH07CkBAIC0yNTAsNyArMjY2LDE5IEBACiAJewogCQkuc2h0CQk9ICZhaGNpX3NodCwKIAkJLmhvc3RfZmxhZ3MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfTk9fTEVHQUNZIHwKLQkJCQkgIEFUQV9GTEFHX01NSU8gfCBBVEFfRkxBR19QSU9fRE1BLAorCQkJCSAgQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19ETUEgfAorCQkJCSAgQVRBX0ZMQUdfU0tJUF9EMkhfQlNZLAorCQkucGlvX21hc2sJPSAweDFmLCAvKiBwaW8wLTQgKi8KKwkJLnVkbWFfbWFzawk9IDB4N2YsIC8qIHVkbWEwLTYgOyBGSVhNRSAqLworCQkucG9ydF9vcHMJPSAmYWhjaV9vcHMsCisJfSwKKwkvKiBib2FyZF9haGNpX3Z0ODI1MSAqLworCXsKKwkJLnNodAkJPSAmYWhjaV9zaHQsCisJCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSB8CisJCQkJICBBVEFfRkxBR19NTUlPIHwgQVRBX0ZMQUdfUElPX0RNQSB8CisJCQkJICBBVEFfRkxBR19TS0lQX0QySF9CU1kgfAorCQkJCSAgQUhDSV9GTEFHX1JFU0VUX05FRURTX0NMTyB8IEFIQ0lfRkxBR19OT19OQ1EsCiAJCS5waW9fbWFzawk9IDB4MWYsIC8qIHBpbzAtNCAqLwogCQkudWRtYV9tYXNrCT0gMHg3ZiwgLyogdWRtYTAtNiA7IEZJWE1FICovCiAJCS5wb3J0X29wcwk9ICZhaGNpX29wcywKQEAgLTI1OCw2ICsyODYsNyBAQAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGFoY2lfcGNpX3RibFtdID0geworCS8qIEludGVsICovCiAJeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDI2NTIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCiAJICBib2FyZF9haGNpIH0sIC8qIElDSDYgKi8KIAl7IFBDSV9WRU5ET1JfSURfSU5URUwsIDB4MjY1MywgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKQEAgLTI4OCwxNCArMzE3LDM5IEBACiAJICBib2FyZF9haGNpIH0sIC8qIElDSDhNICovCiAJeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDI4MmEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCiAJICBib2FyZF9haGNpIH0sIC8qIElDSDhNICovCisKKwkvKiBKTWljcm9uICovCiAJeyAweDE5N2IsIDB4MjM2MCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKIAkgIGJvYXJkX2FoY2kgfSwgLyogSk1pY3JvbiBKTUIzNjAgKi8KKwl7IDB4MTk3YiwgMHgyMzYxLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCSAgYm9hcmRfYWhjaSB9LCAvKiBKTWljcm9uIEpNQjM2MSAqLwogCXsgMHgxOTdiLCAweDIzNjMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCiAJICBib2FyZF9haGNpIH0sIC8qIEpNaWNyb24gSk1CMzYzICovCisJeyAweDE5N2IsIDB4MjM2NSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkgIGJvYXJkX2FoY2kgfSwgLyogSk1pY3JvbiBKTUIzNjUgKi8KKwl7IDB4MTk3YiwgMHgyMzY2LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCSAgYm9hcmRfYWhjaSB9LCAvKiBKTWljcm9uIEpNQjM2NiAqLworCisJLyogQVRJICovCiAJeyBQQ0lfVkVORE9SX0lEX0FUSSwgMHg0MzgwLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAogCSAgYm9hcmRfYWhjaSB9LCAvKiBBVEkgU0I2MDAgbm9uLXJhaWQgKi8KIAl7IFBDSV9WRU5ET1JfSURfQVRJLCAweDQzODEsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCiAJICBib2FyZF9haGNpIH0sIC8qIEFUSSBTQjYwMCByYWlkICovCisKKwkvKiBWSUEgKi8KKwl7IFBDSV9WRU5ET1JfSURfVklBLCAweDMzNDksIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJICBib2FyZF9haGNpX3Z0ODI1MSB9LCAvKiBWSUEgVlQ4MjUxICovCisKKwkvKiBOVklESUEgKi8KKwl7IFBDSV9WRU5ET1JfSURfTlZJRElBLCAweDA0NGMsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJICBib2FyZF9haGNpIH0sCQkvKiBNQ1A2NSAqLworCXsgUENJX1ZFTkRPUl9JRF9OVklESUEsIDB4MDQ0ZCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwKKwkgIGJvYXJkX2FoY2kgfSwJCS8qIE1DUDY1ICovCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwNDRlLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLAorCSAgYm9hcmRfYWhjaSB9LAkJLyogTUNQNjUgKi8KKwl7IFBDSV9WRU5ET1JfSURfTlZJRElBLCAweDA0NGYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsCisJICBib2FyZF9haGNpIH0sCQkvKiBNQ1A2NSAqLworCiAJeyB9CS8qIHRlcm1pbmF0ZSBsaXN0ICovCiB9OwogCkBAIC0zNzQsOCArNDI4LDYgQEAKIAlwcC0+Y21kX3RibCA9IG1lbTsKIAlwcC0+Y21kX3RibF9kbWEgPSBtZW1fZG1hOwogCi0JcHAtPmNtZF90Ymxfc2cgPSBtZW0gKyBBSENJX0NNRF9UQkxfSERSOwotCiAJYXAtPnByaXZhdGVfZGF0YSA9IHBwOwogCiAJaWYgKGhwcml2LT5jYXAgJiBIT1NUX0NBUF82NCkKQEAgLTUwOCw0NiArNTYwLDcxIEBACiAJcmV0dXJuIGF0YV9kZXZfY2xhc3NpZnkoJnRmKTsKIH0KIAotc3RhdGljIHZvaWQgYWhjaV9maWxsX2NtZF9zbG90KHN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAsIHUzMiBvcHRzKQorc3RhdGljIHZvaWQgYWhjaV9maWxsX2NtZF9zbG90KHN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAsIHVuc2lnbmVkIGludCB0YWcsCisJCQkgICAgICAgdTMyIG9wdHMpCiB7Ci0JcHAtPmNtZF9zbG90WzBdLm9wdHMgPSBjcHVfdG9fbGUzMihvcHRzKTsKLQlwcC0+Y21kX3Nsb3RbMF0uc3RhdHVzID0gMDsKLQlwcC0+Y21kX3Nsb3RbMF0udGJsX2FkZHIgPSBjcHVfdG9fbGUzMihwcC0+Y21kX3RibF9kbWEgJiAweGZmZmZmZmZmKTsKLQlwcC0+Y21kX3Nsb3RbMF0udGJsX2FkZHJfaGkgPSBjcHVfdG9fbGUzMigocHAtPmNtZF90YmxfZG1hID4+IDE2KSA+PiAxNik7CisJZG1hX2FkZHJfdCBjbWRfdGJsX2RtYTsKKworCWNtZF90YmxfZG1hID0gcHAtPmNtZF90YmxfZG1hICsgdGFnICogQUhDSV9DTURfVEJMX1NaOworCisJcHAtPmNtZF9zbG90W3RhZ10ub3B0cyA9IGNwdV90b19sZTMyKG9wdHMpOworCXBwLT5jbWRfc2xvdFt0YWddLnN0YXR1cyA9IDA7CisJcHAtPmNtZF9zbG90W3RhZ10udGJsX2FkZHIgPSBjcHVfdG9fbGUzMihjbWRfdGJsX2RtYSAmIDB4ZmZmZmZmZmYpOworCXBwLT5jbWRfc2xvdFt0YWddLnRibF9hZGRyX2hpID0gY3B1X3RvX2xlMzIoKGNtZF90YmxfZG1hID4+IDE2KSA+PiAxNik7CiB9CiAKLXN0YXRpYyBpbnQgYWhjaV9wb2xsX3JlZ2lzdGVyKHZvaWQgX19pb21lbSAqcmVnLCB1MzIgbWFzaywgdTMyIHZhbCwKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaW50ZXJ2YWxfbXNlYywKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tc2VjKQorc3RhdGljIGludCBhaGNpX2NsbyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewotCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKKwl2b2lkIF9faW9tZW0gKnBvcnRfbW1pbyA9ICh2b2lkIF9faW9tZW0gKikgYXAtPmlvYWRkci5jbWRfYWRkcjsKKwlzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmhwcml2ID0gYXAtPmhvc3Rfc2V0LT5wcml2YXRlX2RhdGE7CiAJdTMyIHRtcDsKIAotCXRpbWVvdXQgPSBqaWZmaWVzICsgKHRpbWVvdXRfbXNlYyAqIEhaKSAvIDEwMDA7Ci0JZG8gewotCQl0bXAgPSByZWFkbChyZWcpOwotCQlpZiAoKHRtcCAmIG1hc2spID09IHZhbCkKLQkJCXJldHVybiAwOwotCQltc2xlZXAoaW50ZXJ2YWxfbXNlYyk7Ci0JfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpOworCWlmICghKGhwcml2LT5jYXAgJiBIT1NUX0NBUF9DTE8pKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gLTE7CisJdG1wID0gcmVhZGwocG9ydF9tbWlvICsgUE9SVF9DTUQpOworCXRtcCB8PSBQT1JUX0NNRF9DTE87CisJd3JpdGVsKHRtcCwgcG9ydF9tbWlvICsgUE9SVF9DTUQpOworCisJdG1wID0gYXRhX3dhaXRfcmVnaXN0ZXIocG9ydF9tbWlvICsgUE9SVF9DTUQsCisJCQkJUE9SVF9DTURfQ0xPLCBQT1JUX0NNRF9DTE8sIDEsIDUwMCk7CisJaWYgKHRtcCAmIFBPUlRfQ01EX0NMTykKKwkJcmV0dXJuIC1FSU87CisKKwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhaGNpX3NvZnRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgdmVyYm9zZSwgdW5zaWduZWQgaW50ICpjbGFzcykKK3N0YXRpYyBpbnQgYWhjaV9wcmVyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewotCXN0cnVjdCBhaGNpX2hvc3RfcHJpdiAqaHByaXYgPSBhcC0+aG9zdF9zZXQtPnByaXZhdGVfZGF0YTsKKwlpZiAoKGFwLT5mbGFncyAmIEFIQ0lfRkxBR19SRVNFVF9ORUVEU19DTE8pICYmCisJICAgIChhdGFfYnVzeV93YWl0KGFwLCBBVEFfQlVTWSwgMTAwMCkgJiBBVEFfQlVTWSkpIHsKKwkJLyogQVRBX0JVU1kgaGFzbid0IGNsZWFyZWQsIHNvIHNlbmQgYSBDTE8gKi8KKwkJYWhjaV9jbG8oYXApOworCX0KKworCXJldHVybiBhdGFfc3RkX3ByZXJlc2V0KGFwKTsKK30KKworc3RhdGljIGludCBhaGNpX3NvZnRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzKQorewogCXN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwogCXZvaWQgX19pb21lbSAqbW1pbyA9IGFwLT5ob3N0X3NldC0+bW1pb19iYXNlOwogCXZvaWQgX19pb21lbSAqcG9ydF9tbWlvID0gYWhjaV9wb3J0X2Jhc2UobW1pbywgYXAtPnBvcnRfbm8pOwogCWNvbnN0IHUzMiBjbWRfZmlzX2xlbiA9IDU7IC8qIGZpdmUgZHdvcmRzICovCiAJY29uc3QgY2hhciAqcmVhc29uID0gTlVMTDsKIAlzdHJ1Y3QgYXRhX3Rhc2tmaWxlIHRmOworCXUzMiB0bXA7CiAJdTggKmZpczsKIAlpbnQgcmM7CiAKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKKwlpZiAoYXRhX3BvcnRfb2ZmbGluZShhcCkpIHsKKwkJRFBSSU5USygiUEhZIHJlcG9ydHMgbm8gZGV2aWNlXG4iKTsKKwkJKmNsYXNzID0gQVRBX0RFVl9OT05FOworCQlyZXR1cm4gMDsKKwl9CisKIAkvKiBwcmVwYXJlIGZvciBTUlNUIChBSENJLTEuMSAxMC40LjEpICovCiAJcmMgPSBhaGNpX3N0b3BfZW5naW5lKGFwKTsKIAlpZiAocmMpIHsKQEAgLTU1OCwyMyArNjM1LDEzIEBACiAJLyogY2hlY2sgQlVTWS9EUlEsIHBlcmZvcm0gQ29tbWFuZCBMaXN0IE92ZXJyaWRlIGlmIG5lY2Vzc2FyeSAqLwogCWFoY2lfdGZfcmVhZChhcCwgJnRmKTsKIAlpZiAodGYuY29tbWFuZCAmIChBVEFfQlVTWSB8IEFUQV9EUlEpKSB7Ci0JCXUzMiB0bXA7CisJCXJjID0gYWhjaV9jbG8oYXApOwogCi0JCWlmICghKGhwcml2LT5jYXAgJiBIT1NUX0NBUF9DTE8pKSB7Ci0JCQlyYyA9IC1FSU87Ci0JCQlyZWFzb24gPSAicG9ydCBidXN5IGJ1dCBubyBDTE8iOworCQlpZiAocmMgPT0gLUVPUE5PVFNVUFApIHsKKwkJCXJlYXNvbiA9ICJwb3J0IGJ1c3kgYnV0IENMTyB1bmF2YWlsYWJsZSI7CiAJCQlnb3RvIGZhaWxfcmVzdGFydDsKLQkJfQotCi0JCXRtcCA9IHJlYWRsKHBvcnRfbW1pbyArIFBPUlRfQ01EKTsKLQkJdG1wIHw9IFBPUlRfQ01EX0NMTzsKLQkJd3JpdGVsKHRtcCwgcG9ydF9tbWlvICsgUE9SVF9DTUQpOwotCQlyZWFkbChwb3J0X21taW8gKyBQT1JUX0NNRCk7IC8qIGZsdXNoICovCi0KLQkJaWYgKGFoY2lfcG9sbF9yZWdpc3Rlcihwb3J0X21taW8gKyBQT1JUX0NNRCwgUE9SVF9DTURfQ0xPLCAweDAsCi0JCQkJICAgICAgIDEsIDUwMCkpIHsKLQkJCXJjID0gLUVJTzsKLQkJCXJlYXNvbiA9ICJDTE8gZmFpbGVkIjsKKwkJfSBlbHNlIGlmIChyYykgeworCQkJcmVhc29uID0gInBvcnQgYnVzeSBidXQgQ0xPIGZhaWxlZCI7CiAJCQlnb3RvIGZhaWxfcmVzdGFydDsKIAkJfQogCX0KQEAgLTU4MiwyMCArNjQ5LDIxIEBACiAJLyogcmVzdGFydCBlbmdpbmUgKi8KIAlhaGNpX3N0YXJ0X2VuZ2luZShhcCk7CiAKLQlhdGFfdGZfaW5pdChhcCwgJnRmLCAwKTsKKwlhdGFfdGZfaW5pdChhcC0+ZGV2aWNlLCAmdGYpOwogCWZpcyA9IHBwLT5jbWRfdGJsOwogCiAJLyogaXNzdWUgdGhlIGZpcnN0IEQySCBSZWdpc3RlciBGSVMgKi8KLQlhaGNpX2ZpbGxfY21kX3Nsb3QocHAsIGNtZF9maXNfbGVuIHwgQUhDSV9DTURfUkVTRVQgfCBBSENJX0NNRF9DTFJfQlVTWSk7CisJYWhjaV9maWxsX2NtZF9zbG90KHBwLCAwLAorCQkJICAgY21kX2Zpc19sZW4gfCBBSENJX0NNRF9SRVNFVCB8IEFIQ0lfQ01EX0NMUl9CVVNZKTsKIAogCXRmLmN0bCB8PSBBVEFfU1JTVDsKIAlhdGFfdGZfdG9fZmlzKCZ0ZiwgZmlzLCAwKTsKIAlmaXNbMV0gJj0gfigxIDw8IDcpOwkvKiB0dXJuIG9mZiBDb21tYW5kIEZJUyBiaXQgKi8KIAogCXdyaXRlbCgxLCBwb3J0X21taW8gKyBQT1JUX0NNRF9JU1NVRSk7Ci0JcmVhZGwocG9ydF9tbWlvICsgUE9SVF9DTURfSVNTVUUpOwkvKiBmbHVzaCAqLwogCi0JaWYgKGFoY2lfcG9sbF9yZWdpc3Rlcihwb3J0X21taW8gKyBQT1JUX0NNRF9JU1NVRSwgMHgxLCAweDAsIDEsIDUwMCkpIHsKKwl0bXAgPSBhdGFfd2FpdF9yZWdpc3Rlcihwb3J0X21taW8gKyBQT1JUX0NNRF9JU1NVRSwgMHgxLCAweDEsIDEsIDUwMCk7CisJaWYgKHRtcCAmIDB4MSkgewogCQlyYyA9IC1FSU87CiAJCXJlYXNvbiA9ICIxc3QgRklTIGZhaWxlZCI7CiAJCWdvdG8gZmFpbDsKQEAgLTYwNSw3ICs2NzMsNyBAQAogCW1zbGVlcCgxKTsKIAogCS8qIGlzc3VlIHRoZSBzZWNvbmQgRDJIIFJlZ2lzdGVyIEZJUyAqLwotCWFoY2lfZmlsbF9jbWRfc2xvdChwcCwgY21kX2Zpc19sZW4pOworCWFoY2lfZmlsbF9jbWRfc2xvdChwcCwgMCwgY21kX2Zpc19sZW4pOwogCiAJdGYuY3RsICY9IH5BVEFfU1JTVDsKIAlhdGFfdGZfdG9fZmlzKCZ0ZiwgZmlzLCAwKTsKQEAgLTYyNSw3ICs2OTMsNyBAQAogCW1zbGVlcCgxNTApOwogCiAJKmNsYXNzID0gQVRBX0RFVl9OT05FOwotCWlmIChzYXRhX2Rldl9wcmVzZW50KGFwKSkgeworCWlmIChhdGFfcG9ydF9vbmxpbmUoYXApKSB7CiAJCWlmIChhdGFfYnVzeV9zbGVlcChhcCwgQVRBX1RNT1VUX0JPT1RfUVVJQ0ssIEFUQV9UTU9VVF9CT09UKSkgewogCQkJcmMgPSAtRUlPOwogCQkJcmVhc29uID0gImRldmljZSBub3QgcmVhZHkiOwpAQCAtNjQwLDI1ICs3MDgsMzEgQEAKICBmYWlsX3Jlc3RhcnQ6CiAJYWhjaV9zdGFydF9lbmdpbmUoYXApOwogIGZhaWw6Ci0JaWYgKHZlcmJvc2UpCi0JCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IHNvZnRyZXNldCBmYWlsZWQgKCVzKVxuIiwKLQkJICAgICAgIGFwLT5pZCwgcmVhc29uKTsKLQllbHNlCi0JCURQUklOVEsoIkVYSVQsIHJjPSVkIHJlYXNvbj1cIiVzXCJcbiIsIHJjLCByZWFzb24pOworCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJzb2Z0cmVzZXQgZmFpbGVkICglcylcbiIsIHJlYXNvbik7CiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IGFoY2lfaGFyZHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCB2ZXJib3NlLCB1bnNpZ25lZCBpbnQgKmNsYXNzKQorc3RhdGljIGludCBhaGNpX2hhcmRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzKQogeworCXN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOworCXU4ICpkMmhfZmlzID0gcHAtPnJ4X2ZpcyArIFJYX0ZJU19EMkhfUkVHOworCXN0cnVjdCBhdGFfdGFza2ZpbGUgdGY7CiAJaW50IHJjOwogCiAJRFBSSU5USygiRU5URVJcbiIpOwogCiAJYWhjaV9zdG9wX2VuZ2luZShhcCk7Ci0JcmMgPSBzYXRhX3N0ZF9oYXJkcmVzZXQoYXAsIHZlcmJvc2UsIGNsYXNzKTsKKworCS8qIGNsZWFyIEQySCByZWNlcHRpb24gYXJlYSB0byBwcm9wZXJseSB3YWl0IGZvciBEMkggRklTICovCisJYXRhX3RmX2luaXQoYXAtPmRldmljZSwgJnRmKTsKKwl0Zi5jb21tYW5kID0gMHhmZjsKKwlhdGFfdGZfdG9fZmlzKCZ0ZiwgZDJoX2ZpcywgMCk7CisKKwlyYyA9IHNhdGFfc3RkX2hhcmRyZXNldChhcCwgY2xhc3MpOworCiAJYWhjaV9zdGFydF9lbmdpbmUoYXApOwogCi0JaWYgKHJjID09IDApCisJaWYgKHJjID09IDAgJiYgYXRhX3BvcnRfb25saW5lKGFwKSkKIAkJKmNsYXNzID0gYWhjaV9kZXZfY2xhc3NpZnkoYXApOwogCWlmICgqY2xhc3MgPT0gQVRBX0RFVl9VTktOT1dOKQogCQkqY2xhc3MgPSBBVEFfREVWX05PTkU7CkBAIC02ODYsMTMgKzc2MCw2IEBACiAJfQogfQogCi1zdGF0aWMgaW50IGFoY2lfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKQotewotCXJldHVybiBhdGFfZHJpdmVfcHJvYmVfcmVzZXQoYXAsIGF0YV9zdGRfcHJvYmVpbml0LAotCQkJCSAgICAgYWhjaV9zb2Z0cmVzZXQsIGFoY2lfaGFyZHJlc2V0LAotCQkJCSAgICAgYWhjaV9wb3N0cmVzZXQsIGNsYXNzZXMpOwotfQotCiBzdGF0aWMgdTggYWhjaV9jaGVja19zdGF0dXMoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKIAl2b2lkIF9faW9tZW0gKm1taW8gPSAodm9pZCBfX2lvbWVtICopIGFwLT5pb2FkZHIuY21kX2FkZHI7CkBAIC03MDgsOSArNzc1LDggQEAKIAlhdGFfdGZfZnJvbV9maXMoZDJoX2ZpcywgdGYpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IGFoY2lfZmlsbF9zZyhzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQorc3RhdGljIHVuc2lnbmVkIGludCBhaGNpX2ZpbGxfc2coc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYywgdm9pZCAqY21kX3RibCkKIHsKLQlzdHJ1Y3QgYWhjaV9wb3J0X3ByaXYgKnBwID0gcWMtPmFwLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAlzdHJ1Y3QgYWhjaV9zZyAqYWhjaV9zZzsKIAl1bnNpZ25lZCBpbnQgbl9zZyA9IDA7CkBAIC03MjAsNyArNzg2LDcgQEAKIAkvKgogCSAqIE5leHQsIHRoZSBTL0cgbGlzdC4KIAkgKi8KLQlhaGNpX3NnID0gcHAtPmNtZF90Ymxfc2c7CisJYWhjaV9zZyA9IGNtZF90YmwgKyBBSENJX0NNRF9UQkxfSERSX1NaOwogCWF0YV9mb3JfZWFjaF9zZyhzZywgcWMpIHsKIAkJZG1hX2FkZHJfdCBhZGRyID0gc2dfZG1hX2FkZHJlc3Moc2cpOwogCQl1MzIgc2dfbGVuID0gc2dfZG1hX2xlbihzZyk7CkBAIC03NDEsNiArODA3LDcgQEAKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwogCXN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwogCWludCBpc19hdGFwaSA9IGlzX2F0YXBpX3Rhc2tmaWxlKCZxYy0+dGYpOworCXZvaWQgKmNtZF90Ymw7CiAJdTMyIG9wdHM7CiAJY29uc3QgdTMyIGNtZF9maXNfbGVuID0gNTsgLyogZml2ZSBkd29yZHMgKi8KIAl1bnNpZ25lZCBpbnQgbl9lbGVtOwpAQCAtNzQ5LDE2ICs4MTYsMTcgQEAKIAkgKiBGaWxsIGluIGNvbW1hbmQgdGFibGUgaW5mb3JtYXRpb24uICBGaXJzdCwgdGhlIGhlYWRlciwKIAkgKiBhIFNBVEEgUmVnaXN0ZXIgLSBIb3N0IHRvIERldmljZSBjb21tYW5kIEZJUy4KIAkgKi8KLQlhdGFfdGZfdG9fZmlzKCZxYy0+dGYsIHBwLT5jbWRfdGJsLCAwKTsKKwljbWRfdGJsID0gcHAtPmNtZF90YmwgKyBxYy0+dGFnICogQUhDSV9DTURfVEJMX1NaOworCisJYXRhX3RmX3RvX2ZpcygmcWMtPnRmLCBjbWRfdGJsLCAwKTsKIAlpZiAoaXNfYXRhcGkpIHsKLQkJbWVtc2V0KHBwLT5jbWRfdGJsICsgQUhDSV9DTURfVEJMX0NEQiwgMCwgMzIpOwotCQltZW1jcHkocHAtPmNtZF90YmwgKyBBSENJX0NNRF9UQkxfQ0RCLCBxYy0+Y2RiLAotCQkgICAgICAgcWMtPmRldi0+Y2RiX2xlbik7CisJCW1lbXNldChjbWRfdGJsICsgQUhDSV9DTURfVEJMX0NEQiwgMCwgMzIpOworCQltZW1jcHkoY21kX3RibCArIEFIQ0lfQ01EX1RCTF9DREIsIHFjLT5jZGIsIHFjLT5kZXYtPmNkYl9sZW4pOwogCX0KIAogCW5fZWxlbSA9IDA7CiAJaWYgKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRE1BTUFQKQotCQluX2VsZW0gPSBhaGNpX2ZpbGxfc2cocWMpOworCQluX2VsZW0gPSBhaGNpX2ZpbGxfc2cocWMsIGNtZF90YmwpOwogCiAJLyoKIAkgKiBGaWxsIGluIGNvbW1hbmQgc2xvdCBpbmZvcm1hdGlvbi4KQEAgLTc2OSwxMTIgKzgzNywxMjIgQEAKIAlpZiAoaXNfYXRhcGkpCiAJCW9wdHMgfD0gQUhDSV9DTURfQVRBUEkgfCBBSENJX0NNRF9QUkVGRVRDSDsKIAotCWFoY2lfZmlsbF9jbWRfc2xvdChwcCwgb3B0cyk7CisJYWhjaV9maWxsX2NtZF9zbG90KHBwLCBxYy0+dGFnLCBvcHRzKTsKIH0KIAotc3RhdGljIHZvaWQgYWhjaV9yZXN0YXJ0X3BvcnQoc3RydWN0IGF0YV9wb3J0ICphcCwgdTMyIGlycV9zdGF0KQorc3RhdGljIHZvaWQgYWhjaV9lcnJvcl9pbnRyKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHUzMiBpcnFfc3RhdCkKIHsKLQl2b2lkIF9faW9tZW0gKm1taW8gPSBhcC0+aG9zdF9zZXQtPm1taW9fYmFzZTsKLQl2b2lkIF9faW9tZW0gKnBvcnRfbW1pbyA9IGFoY2lfcG9ydF9iYXNlKG1taW8sIGFwLT5wb3J0X25vKTsKLQl1MzIgdG1wOworCXN0cnVjdCBhaGNpX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBhdGFfZWhfaW5mbyAqZWhpID0gJmFwLT5laF9pbmZvOworCXVuc2lnbmVkIGludCBlcnJfbWFzayA9IDAsIGFjdGlvbiA9IDA7CisJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKKwl1MzIgc2Vycm9yOwogCi0JaWYgKChhcC0+ZGV2aWNlWzBdLmNsYXNzICE9IEFUQV9ERVZfQVRBUEkpIHx8Ci0JICAgICgoaXJxX3N0YXQgJiBQT1JUX0lSUV9URl9FUlIpID09IDApKQotCQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGEldTogcG9ydCByZXNldCwgIgotCQkgICAgICAgInBfaXMgJXggaXMgJXggcGlzICV4IGNtZCAleCB0ZiAleCBzcyAleCBzZSAleFxuIiwKLQkJCWFwLT5pZCwKLQkJCWlycV9zdGF0LAotCQkJcmVhZGwobW1pbyArIEhPU1RfSVJRX1NUQVQpLAotCQkJcmVhZGwocG9ydF9tbWlvICsgUE9SVF9JUlFfU1RBVCksCi0JCQlyZWFkbChwb3J0X21taW8gKyBQT1JUX0NNRCksCi0JCQlyZWFkbChwb3J0X21taW8gKyBQT1JUX1RGREFUQSksCi0JCQlyZWFkbChwb3J0X21taW8gKyBQT1JUX1NDUl9TVEFUKSwKLQkJCXJlYWRsKHBvcnRfbW1pbyArIFBPUlRfU0NSX0VSUikpOworCWF0YV9laGlfY2xlYXJfZGVzYyhlaGkpOwogCi0JLyogc3RvcCBETUEgKi8KLQlhaGNpX3N0b3BfZW5naW5lKGFwKTsKKwkvKiBBSENJIG5lZWRzIFNFcnJvciBjbGVhcmVkOyBvdGhlcndpc2UsIGl0IG1pZ2h0IGxvY2sgdXAgKi8KKwlzZXJyb3IgPSBhaGNpX3Njcl9yZWFkKGFwLCBTQ1JfRVJST1IpOworCWFoY2lfc2NyX3dyaXRlKGFwLCBTQ1JfRVJST1IsIHNlcnJvcik7CiAKLQkvKiBjbGVhciBTQVRBIHBoeSBlcnJvciwgaWYgYW55ICovCi0JdG1wID0gcmVhZGwocG9ydF9tbWlvICsgUE9SVF9TQ1JfRVJSKTsKLQl3cml0ZWwodG1wLCBwb3J0X21taW8gKyBQT1JUX1NDUl9FUlIpOworCS8qIGFuYWx5emUgQGlycV9zdGF0ICovCisJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiaXJxX3N0YXQgMHglMDh4IiwgaXJxX3N0YXQpOwogCi0JLyogaWYgRFJRL0JTWSBpcyBzZXQsIGRldmljZSBuZWVkcyB0byBiZSByZXNldC4KLQkgKiBpZiBzbywgaXNzdWUgQ09NUkVTRVQKLQkgKi8KLQl0bXAgPSByZWFkbChwb3J0X21taW8gKyBQT1JUX1RGREFUQSk7Ci0JaWYgKHRtcCAmIChBVEFfQlVTWSB8IEFUQV9EUlEpKSB7Ci0JCXdyaXRlbCgweDMwMSwgcG9ydF9tbWlvICsgUE9SVF9TQ1JfQ1RMKTsKLQkJcmVhZGwocG9ydF9tbWlvICsgUE9SVF9TQ1JfQ1RMKTsgLyogZmx1c2ggKi8KLQkJdWRlbGF5KDEwKTsKLQkJd3JpdGVsKDB4MzAwLCBwb3J0X21taW8gKyBQT1JUX1NDUl9DVEwpOwotCQlyZWFkbChwb3J0X21taW8gKyBQT1JUX1NDUl9DVEwpOyAvKiBmbHVzaCAqLworCWlmIChpcnFfc3RhdCAmIFBPUlRfSVJRX1RGX0VSUikKKwkJZXJyX21hc2sgfD0gQUNfRVJSX0RFVjsKKworCWlmIChpcnFfc3RhdCAmIChQT1JUX0lSUV9IQlVTX0VSUiB8IFBPUlRfSVJRX0hCVVNfREFUQV9FUlIpKSB7CisJCWVycl9tYXNrIHw9IEFDX0VSUl9IT1NUX0JVUzsKKwkJYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CiAJfQogCi0JLyogcmUtc3RhcnQgRE1BICovCi0JYWhjaV9zdGFydF9lbmdpbmUoYXApOwotfQorCWlmIChpcnFfc3RhdCAmIFBPUlRfSVJRX0lGX0VSUikgeworCQllcnJfbWFzayB8PSBBQ19FUlJfQVRBX0JVUzsKKwkJYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisJCWF0YV9laGlfcHVzaF9kZXNjKGVoaSwgIiwgaW50ZXJmYWNlIGZhdGFsIGVycm9yIik7CisJfQogCi1zdGF0aWMgdm9pZCBhaGNpX2VuZ190aW1lb3V0KHN0cnVjdCBhdGFfcG9ydCAqYXApCi17Ci0Jc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQgPSBhcC0+aG9zdF9zZXQ7Ci0Jdm9pZCBfX2lvbWVtICptbWlvID0gaG9zdF9zZXQtPm1taW9fYmFzZTsKLQl2b2lkIF9faW9tZW0gKnBvcnRfbW1pbyA9IGFoY2lfcG9ydF9iYXNlKG1taW8sIGFwLT5wb3J0X25vKTsKLQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaWYgKGlycV9zdGF0ICYgKFBPUlRfSVJRX0NPTk5FQ1QgfCBQT1JUX0lSUV9QSFlSRFkpKSB7CisJCWF0YV9laGlfaG90cGx1Z2dlZChlaGkpOworCQlhdGFfZWhpX3B1c2hfZGVzYyhlaGksICIsICVzIiwgaXJxX3N0YXQgJiBQT1JUX0lSUV9DT05ORUNUID8KKwkJCSJjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2VkIiA6ICJQSFkgUkRZIGNoYW5nZWQiKTsKKwl9CiAKLQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGEldTogaGFuZGxpbmcgZXJyb3IvdGltZW91dFxuIiwgYXAtPmlkKTsKKwlpZiAoaXJxX3N0YXQgJiBQT1JUX0lSUV9VTktfRklTKSB7CisJCXUzMiAqdW5rID0gKHUzMiAqKShwcC0+cnhfZmlzICsgUlhfRklTX1VOSyk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmaG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKKwkJZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKKwkJYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisJCWF0YV9laGlfcHVzaF9kZXNjKGVoaSwgIiwgdW5rbm93biBGSVMgJTA4eCAlMDh4ICUwOHggJTA4eCIsCisJCQkJICB1bmtbMF0sIHVua1sxXSwgdW5rWzJdLCB1bmtbM10pOworCX0KIAotCWFoY2lfcmVzdGFydF9wb3J0KGFwLCByZWFkbChwb3J0X21taW8gKyBQT1JUX0lSUV9TVEFUKSk7CisJLyogb2theSwgbGV0J3MgaGFuZCBvdmVyIHRvIEVIICovCisJZWhpLT5zZXJyb3IgfD0gc2Vycm9yOworCWVoaS0+YWN0aW9uIHw9IGFjdGlvbjsKKwogCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9USU1FT1VUOworCWlmIChxYykKKwkJcWMtPmVycl9tYXNrIHw9IGVycl9tYXNrOworCWVsc2UKKwkJZWhpLT5lcnJfbWFzayB8PSBlcnJfbWFzazsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7Ci0KLQlhdGFfZWhfcWNfY29tcGxldGUocWMpOworCWlmIChpcnFfc3RhdCAmIFBPUlRfSVJRX0ZSRUVaRSkKKwkJYXRhX3BvcnRfZnJlZXplKGFwKTsKKwllbHNlCisJCWF0YV9wb3J0X2Fib3J0KGFwKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYWhjaV9ob3N0X2ludHIoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3N0YXRpYyB2b2lkIGFoY2lfaG9zdF9pbnRyKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7CiAJdm9pZCBfX2lvbWVtICptbWlvID0gYXAtPmhvc3Rfc2V0LT5tbWlvX2Jhc2U7CiAJdm9pZCBfX2lvbWVtICpwb3J0X21taW8gPSBhaGNpX3BvcnRfYmFzZShtbWlvLCBhcC0+cG9ydF9ubyk7Ci0JdTMyIHN0YXR1cywgc2VyciwgY2k7Ci0KLQlzZXJyID0gcmVhZGwocG9ydF9tbWlvICsgUE9SVF9TQ1JfRVJSKTsKLQl3cml0ZWwoc2VyciwgcG9ydF9tbWlvICsgUE9SVF9TQ1JfRVJSKTsKKwlzdHJ1Y3QgYXRhX2VoX2luZm8gKmVoaSA9ICZhcC0+ZWhfaW5mbzsKKwl1MzIgc3RhdHVzLCBxY19hY3RpdmU7CisJaW50IHJjOwogCiAJc3RhdHVzID0gcmVhZGwocG9ydF9tbWlvICsgUE9SVF9JUlFfU1RBVCk7CiAJd3JpdGVsKHN0YXR1cywgcG9ydF9tbWlvICsgUE9SVF9JUlFfU1RBVCk7CiAKLQljaSA9IHJlYWRsKHBvcnRfbW1pbyArIFBPUlRfQ01EX0lTU1VFKTsKLQlpZiAobGlrZWx5KChjaSAmIDB4MSkgPT0gMCkpIHsKLQkJaWYgKHFjKSB7Ci0JCQlXQVJOX09OKHFjLT5lcnJfbWFzayk7Ci0JCQlhdGFfcWNfY29tcGxldGUocWMpOwotCQkJcWMgPSBOVUxMOwotCQl9CisJaWYgKHVubGlrZWx5KHN0YXR1cyAmIFBPUlRfSVJRX0VSUk9SKSkgeworCQlhaGNpX2Vycm9yX2ludHIoYXAsIHN0YXR1cyk7CisJCXJldHVybjsKIAl9CiAKLQlpZiAoc3RhdHVzICYgUE9SVF9JUlFfRkFUQUwpIHsKLQkJdW5zaWduZWQgaW50IGVycl9tYXNrOwotCQlpZiAoc3RhdHVzICYgUE9SVF9JUlFfVEZfRVJSKQotCQkJZXJyX21hc2sgPSBBQ19FUlJfREVWOwotCQllbHNlIGlmIChzdGF0dXMgJiBQT1JUX0lSUV9JRl9FUlIpCi0JCQllcnJfbWFzayA9IEFDX0VSUl9BVEFfQlVTOwotCQllbHNlCi0JCQllcnJfbWFzayA9IEFDX0VSUl9IT1NUX0JVUzsKKwlpZiAoYXAtPnNhY3RpdmUpCisJCXFjX2FjdGl2ZSA9IHJlYWRsKHBvcnRfbW1pbyArIFBPUlRfU0NSX0FDVCk7CisJZWxzZQorCQlxY19hY3RpdmUgPSByZWFkbChwb3J0X21taW8gKyBQT1JUX0NNRF9JU1NVRSk7CiAKLQkJLyogY29tbWFuZCBwcm9jZXNzaW5nIGhhcyBzdG9wcGVkIGR1ZSB0byBlcnJvcjsgcmVzdGFydCAqLwotCQlhaGNpX3Jlc3RhcnRfcG9ydChhcCwgc3RhdHVzKTsKLQotCQlpZiAocWMpIHsKLQkJCXFjLT5lcnJfbWFzayB8PSBlcnJfbWFzazsKLQkJCWF0YV9xY19jb21wbGV0ZShxYyk7Ci0JCX0KKwlyYyA9IGF0YV9xY19jb21wbGV0ZV9tdWx0aXBsZShhcCwgcWNfYWN0aXZlLCBOVUxMKTsKKwlpZiAocmMgPiAwKQorCQlyZXR1cm47CisJaWYgKHJjIDwgMCkgeworCQllaGktPmVycl9tYXNrIHw9IEFDX0VSUl9IU007CisJCWVoaS0+YWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisJCWF0YV9wb3J0X2ZyZWV6ZShhcCk7CisJCXJldHVybjsKIAl9CiAKLQlyZXR1cm4gMTsKKwkvKiBobW1tLi4uIGEgc3B1cmlvdXMgaW50ZXJ1cHQgKi8KKworCS8qIHNvbWUgZGV2aWNlcyBzZW5kIEQySCByZWcgd2l0aCBJIGJpdCBzZXQgZHVyaW5nIE5DUSBjb21tYW5kIHBoYXNlICovCisJaWYgKGFwLT5zYWN0aXZlICYmIHN0YXR1cyAmIFBPUlRfSVJRX0QySF9SRUdfRklTKQorCQlyZXR1cm47CisKKwkvKiBpZ25vcmUgaW50ZXJpbSBQSU8gc2V0dXAgZmlzIGludGVycnVwdHMgKi8KKwlpZiAoYXRhX3RhZ192YWxpZChhcC0+YWN0aXZlX3RhZykpIHsKKwkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9CisJCQlhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKKworCQlpZiAocWMgJiYgcWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX1BJTyAmJgorCQkgICAgKHN0YXR1cyAmIFBPUlRfSVJRX1BJT1NfRklTKSkKKwkJCXJldHVybjsKKwl9CisKKwlpZiAoYXRhX3JhdGVsaW1pdCgpKQorCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fSU5GTywgInNwdXJpb3VzIGludGVycnVwdCAiCisJCQkJIihpcnFfc3RhdCAweCV4IGFjdGl2ZV90YWcgJWQgc2FjdGl2ZSAweCV4KVxuIiwKKwkJCQlzdGF0dXMsIGFwLT5hY3RpdmVfdGFnLCBhcC0+c2FjdGl2ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFoY2lfaXJxX2NsZWFyKHN0cnVjdCBhdGFfcG9ydCAqYXApCkBAIC04ODIsNyArOTYwLDcgQEAKIAkvKiBUT0RPICovCiB9CiAKLXN0YXRpYyBpcnFyZXR1cm5fdCBhaGNpX2ludGVycnVwdCAoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3N0YXRpYyBpcnFyZXR1cm5fdCBhaGNpX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2luc3RhbmNlOwogCXN0cnVjdCBhaGNpX2hvc3RfcHJpdiAqaHByaXY7CkBAIC05MTEsMTQgKzk4OSw3IEBACiAKIAkJYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CiAJCWlmIChhcCkgewotCQkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKLQkJCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JCQlpZiAoIWFoY2lfaG9zdF9pbnRyKGFwLCBxYykpCi0JCQkJaWYgKGF0YV9yYXRlbGltaXQoKSkKLQkJCQkJZGV2X3ByaW50ayhLRVJOX1dBUk5JTkcsIGhvc3Rfc2V0LT5kZXYsCi0JCQkJCSAgInVuaGFuZGxlZCBpbnRlcnJ1cHQgb24gcG9ydCAldVxuIiwKLQkJCQkJICBpKTsKLQorCQkJYWhjaV9ob3N0X2ludHIoYXApOwogCQkJVlBSSU5USygicG9ydCAldVxuIiwgaSk7CiAJCX0gZWxzZSB7CiAJCQlWUFJJTlRLKCJwb3J0ICV1IChubyBpcnEpXG4iLCBpKTsKQEAgLTkzNSw3ICsxMDA2LDcgQEAKIAkJaGFuZGxlZCA9IDE7CiAJfQogCi0gICAgICAgIHNwaW5fdW5sb2NrKCZob3N0X3NldC0+bG9jayk7CisJc3Bpbl91bmxvY2soJmhvc3Rfc2V0LT5sb2NrKTsKIAogCVZQUklOVEsoIkVYSVRcbiIpOwogCkBAIC05NDcsMTIgKzEwMTgsNjUgQEAKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwogCXZvaWQgX19pb21lbSAqcG9ydF9tbWlvID0gKHZvaWQgX19pb21lbSAqKSBhcC0+aW9hZGRyLmNtZF9hZGRyOwogCi0Jd3JpdGVsKDEsIHBvcnRfbW1pbyArIFBPUlRfQ01EX0lTU1VFKTsKKwlpZiAocWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX05DUSkKKwkJd3JpdGVsKDEgPDwgcWMtPnRhZywgcG9ydF9tbWlvICsgUE9SVF9TQ1JfQUNUKTsKKwl3cml0ZWwoMSA8PCBxYy0+dGFnLCBwb3J0X21taW8gKyBQT1JUX0NNRF9JU1NVRSk7CiAJcmVhZGwocG9ydF9tbWlvICsgUE9SVF9DTURfSVNTVUUpOwkvKiBmbHVzaCAqLwogCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGFoY2lfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdm9pZCBfX2lvbWVtICptbWlvID0gYXAtPmhvc3Rfc2V0LT5tbWlvX2Jhc2U7CisJdm9pZCBfX2lvbWVtICpwb3J0X21taW8gPSBhaGNpX3BvcnRfYmFzZShtbWlvLCBhcC0+cG9ydF9ubyk7CisKKwkvKiB0dXJuIElSUSBvZmYgKi8KKwl3cml0ZWwoMCwgcG9ydF9tbWlvICsgUE9SVF9JUlFfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIGFoY2lfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXZvaWQgX19pb21lbSAqbW1pbyA9IGFwLT5ob3N0X3NldC0+bW1pb19iYXNlOworCXZvaWQgX19pb21lbSAqcG9ydF9tbWlvID0gYWhjaV9wb3J0X2Jhc2UobW1pbywgYXAtPnBvcnRfbm8pOworCXUzMiB0bXA7CisKKwkvKiBjbGVhciBJUlEgKi8KKwl0bXAgPSByZWFkbChwb3J0X21taW8gKyBQT1JUX0lSUV9TVEFUKTsKKwl3cml0ZWwodG1wLCBwb3J0X21taW8gKyBQT1JUX0lSUV9TVEFUKTsKKwl3cml0ZWwoMSA8PCBhcC0+aWQsIG1taW8gKyBIT1NUX0lSUV9TVEFUKTsKKworCS8qIHR1cm4gSVJRIGJhY2sgb24gKi8KKwl3cml0ZWwoREVGX1BPUlRfSVJRLCBwb3J0X21taW8gKyBQT1JUX0lSUV9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgYWhjaV9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJaWYgKCEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRlJPWkVOKSkgeworCQkvKiByZXN0YXJ0IGVuZ2luZSAqLworCQlhaGNpX3N0b3BfZW5naW5lKGFwKTsKKwkJYWhjaV9zdGFydF9lbmdpbmUoYXApOworCX0KKworCS8qIHBlcmZvcm0gcmVjb3ZlcnkgKi8KKwlhdGFfZG9fZWgoYXAsIGFoY2lfcHJlcmVzZXQsIGFoY2lfc29mdHJlc2V0LCBhaGNpX2hhcmRyZXNldCwKKwkJICBhaGNpX3Bvc3RyZXNldCk7Cit9CisKK3N0YXRpYyB2b2lkIGFoY2lfcG9zdF9pbnRlcm5hbF9jbWQoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOworCisJaWYgKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRkFJTEVEKQorCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX09USEVSOworCisJaWYgKHFjLT5lcnJfbWFzaykgeworCQkvKiBtYWtlIERNQSBlbmdpbmUgZm9yZ2V0IGFib3V0IHRoZSBmYWlsZWQgY29tbWFuZCAqLworCQlhaGNpX3N0b3BfZW5naW5lKGFwKTsKKwkJYWhjaV9zdGFydF9lbmdpbmUoYXApOworCX0KK30KKwogc3RhdGljIHZvaWQgYWhjaV9zZXR1cF9wb3J0KHN0cnVjdCBhdGFfaW9wb3J0cyAqcG9ydCwgdW5zaWduZWQgbG9uZyBiYXNlLAogCQkJICAgIHVuc2lnbmVkIGludCBwb3J0X2lkeCkKIHsKQEAgLTEwOTcsOSArMTIyMSw2IEBACiAJCQl3cml0ZWwodG1wLCBwb3J0X21taW8gKyBQT1JUX0lSUV9TVEFUKTsKIAogCQl3cml0ZWwoMSA8PCBpLCBtbWlvICsgSE9TVF9JUlFfU1RBVCk7Ci0KLQkJLyogc2V0IGlycSBtYXNrIChlbmFibGVzIGludGVycnVwdHMpICovCi0JCXdyaXRlbChERUZfUE9SVF9JUlEsIHBvcnRfbW1pbyArIFBPUlRfSVJRX01BU0spOwogCX0KIAogCXRtcCA9IHJlYWRsKG1taW8gKyBIT1NUX0NUTCk7CkBAIC0xMTk3LDYgKzEzMTgsOCBAQAogCiAJVlBSSU5USygiRU5URVJcbiIpOwogCisJV0FSTl9PTihBVEFfTUFYX1FVRVVFID4gQUhDSV9NQVhfQ01EUyk7CisKIAlpZiAoIXByaW50ZWRfdmVyc2lvbisrKQogCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5kZXYsICJ2ZXJzaW9uICIgRFJWX1ZFUlNJT04gIlxuIik7CiAKQEAgLTEyNjQsNiArMTM4NywxMCBAQAogCWlmIChyYykKIAkJZ290byBlcnJfb3V0X2hwcml2OwogCisJaWYgKCEocHJvYmVfZW50LT5ob3N0X2ZsYWdzICYgQUhDSV9GTEFHX05PX05DUSkgJiYKKwkgICAgKGhwcml2LT5jYXAgJiBIT1NUX0NBUF9OQ1EpKQorCQlwcm9iZV9lbnQtPmhvc3RfZmxhZ3MgfD0gQVRBX0ZMQUdfTkNROworCiAJYWhjaV9wcmludF9pbmZvKHByb2JlX2VudCk7CiAKIAkvKiBGSVhNRTogY2hlY2sgYXRhX2RldmljZV9hZGQgcmV0dXJuIHZhbHVlICovCkBAIC0xMjk1LDIxICsxNDIyLDE3IEBACiAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpX2Rldl90b19kZXYocGRldik7CiAJc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmhwcml2ID0gaG9zdF9zZXQtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwOwogCXVuc2lnbmVkIGludCBpOwogCWludCBoYXZlX21zaTsKIAotCWZvciAoaSA9IDA7IGkgPCBob3N0X3NldC0+bl9wb3J0czsgaSsrKSB7Ci0JCWFwID0gaG9zdF9zZXQtPnBvcnRzW2ldOwotCi0JCXNjc2lfcmVtb3ZlX2hvc3QoYXAtPmhvc3QpOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgaG9zdF9zZXQtPm5fcG9ydHM7IGkrKykKKwkJYXRhX3BvcnRfZGV0YWNoKGhvc3Rfc2V0LT5wb3J0c1tpXSk7CiAKIAloYXZlX21zaSA9IGhwcml2LT5mbGFncyAmIEFIQ0lfRkxBR19NU0k7CiAJZnJlZV9pcnEoaG9zdF9zZXQtPmlycSwgaG9zdF9zZXQpOwogCiAJZm9yIChpID0gMDsgaSA8IGhvc3Rfc2V0LT5uX3BvcnRzOyBpKyspIHsKLQkJYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CisJCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CiAKIAkJYXRhX3Njc2lfcmVsZWFzZShhcC0+aG9zdCk7CiAJCXNjc2lfaG9zdF9wdXQoYXAtPmhvc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzc3MC5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzc3MC5jCmluZGV4IDUyN2VmZDMuLmM0ZDE3MjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc3NzAuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3NzcwLmMKQEAgLTEwNyw3ICsxMDcsNyBAQAogCQlhaGNfYWljNzc3MF9FSVNBX3NldHVwCiAJfQogfTsKLWNvbnN0IGludCBhaGNfbnVtX2FpYzc3NzBfZGV2cyA9IE5VTV9FTEVNRU5UUyhhaWM3NzcwX2lkZW50X3RhYmxlKTsKK2NvbnN0IGludCBhaGNfbnVtX2FpYzc3NzBfZGV2cyA9IEFSUkFZX1NJWkUoYWljNzc3MF9pZGVudF90YWJsZSk7CiAKIHN0cnVjdCBhaWM3NzcwX2lkZW50aXR5ICoKIGFpYzc3NzBfZmluZF9kZXZpY2UodWludDMyX3QgaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmggYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmgKaW5kZXggYmI1MTY2ZC4uZWI3NzQ1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguaApAQCAtNjgsOCArNjgsNiBAQAogI2RlZmluZSBGQUxTRSAwCiAjZW5kaWYKIAotI2RlZmluZSBOVU1fRUxFTUVOVFMoYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKCphcnJheSkpCi0KICNkZWZpbmUgQUxMX0NIQU5ORUxTICdcMCcKICNkZWZpbmUgQUxMX1RBUkdFVFNfTUFTSyAweEZGRkYKICNkZWZpbmUgSU5JVElBVE9SX1dJTERDQVJECSh+MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKaW5kZXggMDg3NzFmNi4uODAxZmM4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKQEAgLTU5LDcgKzU5LDcgQEAKIAkiYWljNzkwMiIsCiAJImFpYzc5MDFBIgogfTsKLXN0YXRpYyBjb25zdCB1X2ludCBudW1fY2hpcF9uYW1lcyA9IE5VTV9FTEVNRU5UUyhhaGRfY2hpcF9uYW1lcyk7CitzdGF0aWMgY29uc3QgdV9pbnQgbnVtX2NoaXBfbmFtZXMgPSBBUlJBWV9TSVpFKGFoZF9jaGlwX25hbWVzKTsKIAogLyoKICAqIEhhcmR3YXJlIGVycm9yIGNvZGVzLgpAQCAtNzcsNyArNzcsNyBAQAogCXsgTVBBUkVSUiwJIlNjcmF0Y2ggb3IgU0NCIE1lbW9yeSBQYXJpdHkgRXJyb3IiIH0sCiAJeyBDSU9QQVJFUlIsCSJDSU9CVVMgUGFyaXR5IEVycm9yIiB9LAogfTsKLXN0YXRpYyBjb25zdCB1X2ludCBudW1fZXJyb3JzID0gTlVNX0VMRU1FTlRTKGFoZF9oYXJkX2Vycm9ycyk7CitzdGF0aWMgY29uc3QgdV9pbnQgbnVtX2Vycm9ycyA9IEFSUkFZX1NJWkUoYWhkX2hhcmRfZXJyb3JzKTsKIAogc3RhdGljIHN0cnVjdCBhaGRfcGhhc2VfdGFibGVfZW50cnkgYWhkX3BoYXNlX3RhYmxlW10gPQogewpAQCAtOTcsNyArOTcsNyBAQAogICogSW4gbW9zdCBjYXNlcyB3ZSBvbmx5IHdpc2ggdG8gaXR0ZXJhdGUgb3ZlciByZWFsIHBoYXNlcywgc28KICAqIGV4Y2x1ZGUgdGhlIGxhc3QgZWxlbWVudCBmcm9tIHRoZSBjb3VudC4KICAqLwotc3RhdGljIGNvbnN0IHVfaW50IG51bV9waGFzZXMgPSBOVU1fRUxFTUVOVFMoYWhkX3BoYXNlX3RhYmxlKSAtIDE7CitzdGF0aWMgY29uc3QgdV9pbnQgbnVtX3BoYXNlcyA9IEFSUkFZX1NJWkUoYWhkX3BoYXNlX3RhYmxlKSAtIDE7CiAKIC8qIE91ciBTZXF1ZW5jZXIgUHJvZ3JhbSAqLwogI2luY2x1ZGUgImFpYzc5eHhfc2VxLmgiCkBAIC03MjU5LDcgKzcyNTksNyBAQAogCQlyZXR1cm4gKHdyYXBfcWluZmlmb25leHQgLSB3cmFwX3FpbnBvcyk7CiAJZWxzZQogCQlyZXR1cm4gKHdyYXBfcWluZmlmb25leHQKLQkJICAgICAgKyBOVU1fRUxFTUVOVFMoYWhkLT5xaW5maWZvKSAtIHdyYXBfcWlucG9zKTsKKwkJICAgICAgKyBBUlJBWV9TSVpFKGFoZC0+cWluZmlmbykgLSB3cmFwX3FpbnBvcyk7CiB9CiAKIHZvaWQKQEAgLTg2MTksNyArODYxOSw3IEBACiAJc3RydWN0CXBhdGNoICpsYXN0X3BhdGNoOwogCXVfaW50CW51bV9wYXRjaGVzOwogCi0JbnVtX3BhdGNoZXMgPSBzaXplb2YocGF0Y2hlcykvc2l6ZW9mKHN0cnVjdCBwYXRjaCk7CisJbnVtX3BhdGNoZXMgPSBBUlJBWV9TSVpFKHBhdGNoZXMpOwogCWxhc3RfcGF0Y2ggPSAmcGF0Y2hlc1tudW1fcGF0Y2hlc107CiAJY3VyX3BhdGNoID0gKnN0YXJ0X3BhdGNoOwogCkBAIC05Mzk2LDggKzkzOTYsOCBAQAogCX0gZWxzZSB7CiAJCXVfaW50IG1heF9pZDsKIAotCQltYXhfaWQgPSAoYWhkLT5mZWF0dXJlcyAmIEFIRF9XSURFKSA/IDE1IDogNzsKLQkJaWYgKGNjYi0+Y2NiX2gudGFyZ2V0X2lkID4gbWF4X2lkKQorCQltYXhfaWQgPSAoYWhkLT5mZWF0dXJlcyAmIEFIRF9XSURFKSA/IDE2IDogODsKKwkJaWYgKGNjYi0+Y2NiX2gudGFyZ2V0X2lkID49IG1heF9pZCkKIAkJCXJldHVybiAoQ0FNX1RJRF9JTlZBTElEKTsKIAogCQlpZiAoY2NiLT5jY2JfaC50YXJnZXRfbHVuID49IEFIRF9OVU1fTFVOUykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jCmluZGV4IDY2ZTRhNDcuLmUwY2NkZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYwpAQCAtOTE2LDcgKzkxNiw3IEBACiB7CiAKIAlpZiAoKGluc3RhbmNlID49IDApCi0JICYmIChpbnN0YW5jZSA8IE5VTV9FTEVNRU5UUyhhaWM3OXh4X2lvY2VsbF9pbmZvKSkpIHsKKwkgJiYgKGluc3RhbmNlIDwgQVJSQVlfU0laRShhaWM3OXh4X2lvY2VsbF9pbmZvKSkpIHsKIAkJdWludDhfdCAqaW9jZWxsX2luZm87CiAKIAkJaW9jZWxsX2luZm8gPSAodWludDhfdCopJmFpYzc5eHhfaW9jZWxsX2luZm9baW5zdGFuY2VdOwpAQCAtOTM0LDcgKzkzNCw3IEBACiAJdGFncyA9IHNpbXBsZV9zdHJ0b3VsKHAgKyAxLCBOVUxMLCAwKSAmIDB4ZmY7CiAJcHJpbnRmKCJTZXR0aW5nIEdsb2JhbCBUYWdzPSAlZFxuIiwgdGFncyk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgTlVNX0VMRU1FTlRTKGFpYzc5eHhfdGFnX2luZm8pOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhaWM3OXh4X3RhZ19pbmZvKTsgaSsrKSB7CiAJCWZvciAoaiA9IDA7IGogPCBBSERfTlVNX1RBUkdFVFM7IGorKykgewogCQkJYWljNzl4eF90YWdfaW5mb1tpXS50YWdfY29tbWFuZHNbal0gPSB0YWdzOwogCQl9CkBAIC05NDYsNyArOTQ2LDcgQEAKIHsKIAogCWlmICgoaW5zdGFuY2UgPj0gMCkgJiYgKHRhcmcgPj0gMCkKLQkgJiYgKGluc3RhbmNlIDwgTlVNX0VMRU1FTlRTKGFpYzc5eHhfdGFnX2luZm8pKQorCSAmJiAoaW5zdGFuY2UgPCBBUlJBWV9TSVpFKGFpYzc5eHhfdGFnX2luZm8pKQogCSAmJiAodGFyZyA8IEFIRF9OVU1fVEFSR0VUUykpIHsKIAkJYWljNzl4eF90YWdfaW5mb1tpbnN0YW5jZV0udGFnX2NvbW1hbmRzW3RhcmddID0gdmFsdWUgJiAweDFGRjsKIAkJaWYgKGJvb3R2ZXJib3NlKQpAQCAtMTA3MiwyMSArMTA3MiwyMSBAQAogCWVuZCA9IHN0cmNocihzLCAnXDAnKTsKIAogCS8qCi0JICogWFhYIGlhNjQgZ2NjIGlzbid0IHNtYXJ0IGVub3VnaCB0byBrbm93IHRoYXQgTlVNX0VMRU1FTlRTCisJICogWFhYIGlhNjQgZ2NjIGlzbid0IHNtYXJ0IGVub3VnaCB0byBrbm93IHRoYXQgQVJSQVlfU0laRQogCSAqIHdpbGwgbmV2ZXIgYmUgMCBpbiB0aGlzIGNhc2UuCi0JICovICAgICAgCi0JbiA9IDA7ICAKKwkgKi8KKwluID0gMDsKIAogCXdoaWxlICgocCA9IHN0cnNlcCgmcywgIiwuIikpICE9IE5VTEwpIHsKIAkJaWYgKCpwID09ICdcMCcpCiAJCQljb250aW51ZTsKLQkJZm9yIChpID0gMDsgaSA8IE5VTV9FTEVNRU5UUyhvcHRpb25zKTsgaSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG9wdGlvbnMpOyBpKyspIHsKIAogCQkJbiA9IHN0cmxlbihvcHRpb25zW2ldLm5hbWUpOwogCQkJaWYgKHN0cm5jbXAob3B0aW9uc1tpXS5uYW1lLCBwLCBuKSA9PSAwKQogCQkJCWJyZWFrOwogCQl9Ci0JCWlmIChpID09IE5VTV9FTEVNRU5UUyhvcHRpb25zKSkKKwkJaWYgKGkgPT0gQVJSQVlfU0laRShvcHRpb25zKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChzdHJuY21wKHAsICJnbG9iYWxfdGFnX2RlcHRoIiwgbikgPT0gMCkgewpAQCAtMTI5NCw3ICsxMjk0LDcgQEAKIAkvKgogCSAqIExvb2t1cCBhbmQgY29tbWl0IGFueSBtb2RpZmllZCBJTyBDZWxsIG9wdGlvbnMuCiAJICovCi0JaWYgKGFoZC0+dW5pdCA8IE5VTV9FTEVNRU5UUyhhaWM3OXh4X2lvY2VsbF9pbmZvKSkgeworCWlmIChhaGQtPnVuaXQgPCBBUlJBWV9TSVpFKGFpYzc5eHhfaW9jZWxsX2luZm8pKSB7CiAJCXN0cnVjdCBhaGRfbGludXhfaW9jZWxsX29wdHMgKmlvY2VsbF9vcHRzOwogCiAJCWlvY2VsbF9vcHRzID0gJmFpYzc5eHhfaW9jZWxsX2luZm9bYWhkLT51bml0XTsKQEAgLTE0MjYsNyArMTQyNiw3IEBACiAKIAl0YWdzID0gMDsKIAlpZiAoKGFoZC0+dXNlcl9kaXNjZW5hYmxlICYgZGV2aW5mby0+dGFyZ2V0X21hc2spICE9IDApIHsKLQkJaWYgKGFoZC0+dW5pdCA+PSBOVU1fRUxFTUVOVFMoYWljNzl4eF90YWdfaW5mbykpIHsKKwkJaWYgKGFoZC0+dW5pdCA+PSBBUlJBWV9TSVpFKGFpYzc5eHhfdGFnX2luZm8pKSB7CiAKIAkJCWlmICh3YXJuZWRfdXNlciA9PSAwKSB7CiAJCQkJcHJpbnRmKEtFUk5fV0FSTklORwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wY2kuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfcGNpLmMKaW5kZXggNzU3MjQyZS4uMTQ4NTBmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wY2kuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X3BjaS5jCkBAIC0yMDEsNyArMjAxLDcgQEAKIAl9CiB9OwogCi1jb25zdCB1X2ludCBhaGRfbnVtX3BjaV9kZXZzID0gTlVNX0VMRU1FTlRTKGFoZF9wY2lfaWRlbnRfdGFibGUpOworY29uc3QgdV9pbnQgYWhkX251bV9wY2lfZGV2cyA9IEFSUkFZX1NJWkUoYWhkX3BjaV9pZGVudF90YWJsZSk7CiAJCQogI2RlZmluZQlERVZDT05GSUcJCTB4NDAKICNkZWZpbmUJCVBDSVhJTklUUEFUCTB4MDAwMEUwMDB1bApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9wcm9jLmMgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X3Byb2MuYwppbmRleCAzOWEyNzg0Li4yNGZkNTlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X3Byb2MuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X3Byb2MuYwpAQCAtNzYsMTEgKzc2LDkgQEAKIGFoZF9jYWxjX3N5bmNzcmF0ZSh1X2ludCBwZXJpb2RfZmFjdG9yKQogewogCWludCBpOwotCWludCBudW1fc3luY3JhdGVzOwogCi0JbnVtX3N5bmNyYXRlcyA9IHNpemVvZihzY3NpX3N5bmNyYXRlcykgLyBzaXplb2Yoc2NzaV9zeW5jcmF0ZXNbMF0pOwogCS8qIFNlZSBpZiB0aGUgcGVyaW9kIGlzIGluIHRoZSAiZXhjZXB0aW9uIiB0YWJsZSAqLwotCWZvciAoaSA9IDA7IGkgPCBudW1fc3luY3JhdGVzOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzY3NpX3N5bmNyYXRlcyk7IGkrKykgewogCiAJCWlmIChwZXJpb2RfZmFjdG9yID09IHNjc2lfc3luY3JhdGVzW2ldLnBlcmlvZF9mYWN0b3IpIHsKIAkJCS8qIFBlcmlvZCBpbiBrSHogKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaCBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaAppbmRleCA5MWQyOTRjLi42MmZmOGMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmgKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5oCkBAIC02OSw4ICs2OSw2IEBACiAjZGVmaW5lIEZBTFNFIDAKICNlbmRpZgogCi0jZGVmaW5lIE5VTV9FTEVNRU5UUyhhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKmFycmF5KSkKLQogI2RlZmluZSBBTExfQ0hBTk5FTFMgJ1wwJwogI2RlZmluZSBBTExfVEFSR0VUU19NQVNLIDB4RkZGRgogI2RlZmluZSBJTklUSUFUT1JfV0lMRENBUkQJKH4wKQpAQCAtMjMzLDYgKzIzMSw3IEBACiAJQUhDX1RBUkdFVE1PREUJPSAweDIwMDAwLAkvKiBIYXMgdGVzdGVkIHRhcmdldCBtb2RlIHN1cHBvcnQgKi8KIAlBSENfTVVMVElST0xFCT0gMHg0MDAwMCwJLyogU3BhY2UgZm9yIHR3byByb2xlcyBhdCBhIHRpbWUgKi8KIAlBSENfUkVNT1ZBQkxFCT0gMHg4MDAwMCwJLyogSG90LVN3YXAgc3VwcG9ydGVkICovCisJQUhDX0hWRAkJPSAweDEwMDAwMCwJLyogSFZEIHJhdGhlciB0aGFuIFNFICovCiAJQUhDX0FJQzc3NzBfRkUJPSBBSENfRkVOT05FLAogCS8qCiAJICogVGhlIHJlYWwgNzg1MCBkb2VzIG5vdCBzdXBwb3J0IFVsdHJhIG1vZGVzLCBidXQgdGhlcmUgYXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jCmluZGV4IGQzNzU2NjkuLjkzZTRlNDA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYwpAQCAtNjgsNyArNjgsNyBAQAogCSJhaWM3ODkyIiwKIAkiYWljNzg5OSIKIH07Ci1zdGF0aWMgY29uc3QgdV9pbnQgbnVtX2NoaXBfbmFtZXMgPSBOVU1fRUxFTUVOVFMoYWhjX2NoaXBfbmFtZXMpOworc3RhdGljIGNvbnN0IHVfaW50IG51bV9jaGlwX25hbWVzID0gQVJSQVlfU0laRShhaGNfY2hpcF9uYW1lcyk7CiAKIC8qCiAgKiBIYXJkd2FyZSBlcnJvciBjb2Rlcy4KQEAgLTg4LDcgKzg4LDcgQEAKIAl7IFBDSUVSUlNUQVQsCSJQQ0kgRXJyb3IgZGV0ZWN0ZWQiIH0sCiAJeyBDSU9QQVJFUlIsCSJDSU9CVVMgUGFyaXR5IEVycm9yIiB9LAogfTsKLXN0YXRpYyBjb25zdCB1X2ludCBudW1fZXJyb3JzID0gTlVNX0VMRU1FTlRTKGFoY19oYXJkX2Vycm9ycyk7CitzdGF0aWMgY29uc3QgdV9pbnQgbnVtX2Vycm9ycyA9IEFSUkFZX1NJWkUoYWhjX2hhcmRfZXJyb3JzKTsKIAogc3RhdGljIHN0cnVjdCBhaGNfcGhhc2VfdGFibGVfZW50cnkgYWhjX3BoYXNlX3RhYmxlW10gPQogewpAQCAtMTA4LDcgKzEwOCw3IEBACiAgKiBJbiBtb3N0IGNhc2VzIHdlIG9ubHkgd2lzaCB0byBpdHRlcmF0ZSBvdmVyIHJlYWwgcGhhc2VzLCBzbwogICogZXhjbHVkZSB0aGUgbGFzdCBlbGVtZW50IGZyb20gdGhlIGNvdW50LgogICovCi1zdGF0aWMgY29uc3QgdV9pbnQgbnVtX3BoYXNlcyA9IE5VTV9FTEVNRU5UUyhhaGNfcGhhc2VfdGFibGUpIC0gMTsKK3N0YXRpYyBjb25zdCB1X2ludCBudW1fcGhhc2VzID0gQVJSQVlfU0laRShhaGNfcGhhc2VfdGFibGUpIC0gMTsKIAogLyoKICAqIFZhbGlkIFNDU0lSQVRFIHZhbHVlcy4gIChwLiAzLTE3KQpAQCAtNjM2Nyw3ICs2MzY3LDcgQEAKIAlzdHJ1Y3QJcGF0Y2ggKmxhc3RfcGF0Y2g7CiAJdV9pbnQJbnVtX3BhdGNoZXM7CiAKLQludW1fcGF0Y2hlcyA9IHNpemVvZihwYXRjaGVzKS9zaXplb2Yoc3RydWN0IHBhdGNoKTsKKwludW1fcGF0Y2hlcyA9IEFSUkFZX1NJWkUocGF0Y2hlcyk7CiAJbGFzdF9wYXRjaCA9ICZwYXRjaGVzW251bV9wYXRjaGVzXTsKIAljdXJfcGF0Y2ggPSAqc3RhcnRfcGF0Y2g7CiAKQEAgLTY3NzQsOCArNjc3NCw4IEBACiAJfSBlbHNlIHsKIAkJdV9pbnQgbWF4X2lkOwogCi0JCW1heF9pZCA9IChhaGMtPmZlYXR1cmVzICYgQUhDX1dJREUpID8gMTUgOiA3OwotCQlpZiAoY2NiLT5jY2JfaC50YXJnZXRfaWQgPiBtYXhfaWQpCisJCW1heF9pZCA9IChhaGMtPmZlYXR1cmVzICYgQUhDX1dJREUpID8gMTYgOiA4OworCQlpZiAoY2NiLT5jY2JfaC50YXJnZXRfaWQgPj0gbWF4X2lkKQogCQkJcmV0dXJuIChDQU1fVElEX0lOVkFMSUQpOwogCiAJCWlmIChjY2ItPmNjYl9oLnRhcmdldF9sdW4gPj0gQUhDX05VTV9MVU5TKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfb3NtLmMKaW5kZXggMmM4MDE2Ny4uZGViZjNlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5jCkBAIC04ODYsNyArODg2LDcgQEAKIAl0YWdzID0gc2ltcGxlX3N0cnRvdWwocCArIDEsIE5VTEwsIDApICYgMHhmZjsKIAlwcmludGYoIlNldHRpbmcgR2xvYmFsIFRhZ3M9ICVkXG4iLCB0YWdzKTsKIAotCWZvciAoaSA9IDA7IGkgPCBOVU1fRUxFTUVOVFMoYWljN3h4eF90YWdfaW5mbyk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFpYzd4eHhfdGFnX2luZm8pOyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IEFIQ19OVU1fVEFSR0VUUzsgaisrKSB7CiAJCQlhaWM3eHh4X3RhZ19pbmZvW2ldLnRhZ19jb21tYW5kc1tqXSA9IHRhZ3M7CiAJCX0KQEAgLTg5OCw3ICs4OTgsNyBAQAogewogCiAJaWYgKChpbnN0YW5jZSA+PSAwKSAmJiAodGFyZyA+PSAwKQotCSAmJiAoaW5zdGFuY2UgPCBOVU1fRUxFTUVOVFMoYWljN3h4eF90YWdfaW5mbykpCisJICYmIChpbnN0YW5jZSA8IEFSUkFZX1NJWkUoYWljN3h4eF90YWdfaW5mbykpCiAJICYmICh0YXJnIDwgQUhDX05VTV9UQVJHRVRTKSkgewogCQlhaWM3eHh4X3RhZ19pbmZvW2luc3RhbmNlXS50YWdfY29tbWFuZHNbdGFyZ10gPSB2YWx1ZSAmIDB4ZmY7CiAJCWlmIChib290dmVyYm9zZSkKQEAgLTEwMjAsNyArMTAyMCw3IEBACiAJZW5kID0gc3RyY2hyKHMsICdcMCcpOwogCiAJLyoKLQkgKiBYWFggaWE2NCBnY2MgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGtub3cgdGhhdCBOVU1fRUxFTUVOVFMKKwkgKiBYWFggaWE2NCBnY2MgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGtub3cgdGhhdCBBUlJBWV9TSVpFCiAJICogd2lsbCBuZXZlciBiZSAwIGluIHRoaXMgY2FzZS4KIAkgKi8KIAluID0gMDsKQEAgLTEwMjgsMTMgKzEwMjgsMTMgQEAKIAl3aGlsZSAoKHAgPSBzdHJzZXAoJnMsICIsLiIpKSAhPSBOVUxMKSB7CiAJCWlmICgqcCA9PSAnXDAnKQogCQkJY29udGludWU7Ci0JCWZvciAoaSA9IDA7IGkgPCBOVU1fRUxFTUVOVFMob3B0aW9ucyk7IGkrKykgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShvcHRpb25zKTsgaSsrKSB7CiAKIAkJCW4gPSBzdHJsZW4ob3B0aW9uc1tpXS5uYW1lKTsKIAkJCWlmIChzdHJuY21wKG9wdGlvbnNbaV0ubmFtZSwgcCwgbikgPT0gMCkKIAkJCQlicmVhazsKIAkJfQotCQlpZiAoaSA9PSBOVU1fRUxFTUVOVFMob3B0aW9ucykpCisJCWlmIChpID09IEFSUkFZX1NJWkUob3B0aW9ucykpCiAJCQljb250aW51ZTsKIAogCQlpZiAoc3RybmNtcChwLCAiZ2xvYmFsX3RhZ19kZXB0aCIsIG4pID09IDApIHsKQEAgLTEzNjAsNyArMTM2MCw3IEBACiAKIAl0YWdzID0gMDsKIAlpZiAoKGFoYy0+dXNlcl9kaXNjZW5hYmxlICYgZGV2aW5mby0+dGFyZ2V0X21hc2spICE9IDApIHsKLQkJaWYgKGFoYy0+dW5pdCA+PSBOVU1fRUxFTUVOVFMoYWljN3h4eF90YWdfaW5mbykpIHsKKwkJaWYgKGFoYy0+dW5pdCA+PSBBUlJBWV9TSVpFKGFpYzd4eHhfdGFnX2luZm8pKSB7CiAJCQlpZiAod2FybmVkX3VzZXIgPT0gMCkgewogCiAJCQkJcHJpbnRmKEtFUk5fV0FSTklORwpAQCAtMjUzNyw2ICsyNTM3LDIyIEBACiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgYWhjX2xpbnV4X2dldF9zaWduYWxsaW5nKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KQoreworCXN0cnVjdCBhaGNfc29mdGMgKmFoYyA9ICooc3RydWN0IGFoY19zb2Z0YyAqKilzaG9zdC0+aG9zdGRhdGE7CisJdTggbW9kZSA9IGFoY19pbmIoYWhjLCBTQkxLQ1RMKTsKKworCWlmIChtb2RlICYgRU5BQjQwKQorCQlzcGlfc2lnbmFsbGluZyhzaG9zdCkgPSBTUElfU0lHTkFMX0xWRDsKKwllbHNlIGlmIChtb2RlICYgRU5BQjIwKQorCQlzcGlfc2lnbmFsbGluZyhzaG9zdCkgPSAKKwkJCWFoYy0+ZmVhdHVyZXMgJiBBSENfSFZEID8KKwkJCVNQSV9TSUdOQUxfSFZEIDoKKwkJCVNQSV9TSUdOQUxfU0U7CisJZWxzZQorCQlzcGlfc2lnbmFsbGluZyhzaG9zdCkgPSBTUElfU0lHTkFMX1VOS05PV047Cit9CisKIHN0YXRpYyBzdHJ1Y3Qgc3BpX2Z1bmN0aW9uX3RlbXBsYXRlIGFoY19saW51eF90cmFuc3BvcnRfZnVuY3Rpb25zID0gewogCS5zZXRfb2Zmc2V0CT0gYWhjX2xpbnV4X3NldF9vZmZzZXQsCiAJLnNob3dfb2Zmc2V0CT0gMSwKQEAgLTI1NTIsNiArMjU2OCw3IEBACiAJLnNldF9xYXMJPSBhaGNfbGludXhfc2V0X3FhcywKIAkuc2hvd19xYXMJPSAxLAogI2VuZGlmCisJLmdldF9zaWduYWxsaW5nCT0gYWhjX2xpbnV4X2dldF9zaWduYWxsaW5nLAogfTsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wY2kuYwppbmRleCAzYWRlY2VmLi42M2NhYjJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcGNpLmMKQEAgLTE0NCwxNiArMTQ0LDIyIEBACiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haWM3ODYwX3NldHVwOwogc3RhdGljIGFoY19kZXZpY2Vfc2V0dXBfdCBhaGNfYXBhMTQ4MF9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FpYzc4NzBfc2V0dXA7CitzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haWM3ODcwaF9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FoYTM5NFhfc2V0dXA7CitzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGEzOTRYaF9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FoYTQ5NFhfc2V0dXA7CitzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGE0OTRYaF9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FoYTM5OFhfc2V0dXA7CiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haWM3ODgwX3NldHVwOworc3RhdGljIGFoY19kZXZpY2Vfc2V0dXBfdCBhaGNfYWljNzg4MGhfc2V0dXA7CiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGEyOTQwUHJvX3NldHVwOwogc3RhdGljIGFoY19kZXZpY2Vfc2V0dXBfdCBhaGNfYWhhMzk0WFVfc2V0dXA7CitzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGEzOTRYVWhfc2V0dXA7CiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGEzOThYVV9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FpYzc4OTBfc2V0dXA7CiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haWM3ODkyX3NldHVwOwogc3RhdGljIGFoY19kZXZpY2Vfc2V0dXBfdCBhaGNfYWljNzg5NV9zZXR1cDsKK3N0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FpYzc4OTVoX3NldHVwOwogc3RhdGljIGFoY19kZXZpY2Vfc2V0dXBfdCBhaGNfYWljNzg5Nl9zZXR1cDsKIHN0YXRpYyBhaGNfZGV2aWNlX3NldHVwX3QgYWhjX2FpYzc4OTlfc2V0dXA7CiBzdGF0aWMgYWhjX2RldmljZV9zZXR1cF90IGFoY19haGEyOTE2MENfc2V0dXA7CkBAIC0yMjUsMTkgKzIzMSwxOSBAQAogCQlJRF9BSEFfMjk0NCwKIAkJSURfQUxMX01BU0ssCiAJCSJBZGFwdGVjIDI5NDQgU0NTSSBhZGFwdGVyIiwKLQkJYWhjX2FpYzc4NzBfc2V0dXAKKwkJYWhjX2FpYzc4NzBoX3NldHVwCiAJfSwKIAl7CiAJCUlEX0FIQV8zOTQ0LAogCQlJRF9BTExfTUFTSywKIAkJIkFkYXB0ZWMgMzk0NCBTQ1NJIGFkYXB0ZXIiLAotCQlhaGNfYWhhMzk0WF9zZXR1cAorCQlhaGNfYWhhMzk0WGhfc2V0dXAKIAl9LAogCXsKIAkJSURfQUhBXzQ5NDQsCiAJCUlEX0FMTF9NQVNLLAogCQkiQWRhcHRlYyA0OTQ0IFNDU0kgYWRhcHRlciIsCi0JCWFoY19haGE0OTRYX3NldHVwCisJCWFoY19haGE0OTRYaF9zZXR1cAogCX0sCiAJLyogYWljNzg4MCBiYXNlZCBjb250cm9sbGVycyAqLwogCXsKQEAgLTI1NiwxMyArMjYyLDEzIEBACiAJCUlEX0FIQV8yOTQ0VSAmIElEX0RFVl9WRU5ET1JfTUFTSywKIAkJSURfREVWX1ZFTkRPUl9NQVNLLAogCQkiQWRhcHRlYyAyOTQ0IFVsdHJhIFNDU0kgYWRhcHRlciIsCi0JCWFoY19haWM3ODgwX3NldHVwCisJCWFoY19haWM3ODgwaF9zZXR1cAogCX0sCiAJewogCQlJRF9BSEFfMzk0NFUgJiBJRF9ERVZfVkVORE9SX01BU0ssCiAJCUlEX0RFVl9WRU5ET1JfTUFTSywKIAkJIkFkYXB0ZWMgMzk0NCBVbHRyYSBTQ1NJIGFkYXB0ZXIiLAotCQlhaGNfYWhhMzk0WFVfc2V0dXAKKwkJYWhjX2FoYTM5NFhVaF9zZXR1cAogCX0sCiAJewogCQlJRF9BSEFfMzk4WFUgJiBJRF9ERVZfVkVORE9SX01BU0ssCkBAIC0yNzgsNyArMjg0LDcgQEAKIAkJSURfQUhBXzQ5NDRVICYgSURfREVWX1ZFTkRPUl9NQVNLLAogCQlJRF9ERVZfVkVORE9SX01BU0ssCiAJCSJBZGFwdGVjIDQ5NDQgVWx0cmEgU0NTSSBhZGFwdGVyIiwKLQkJYWhjX2FpYzc4ODBfc2V0dXAKKwkJYWhjX2FpYzc4ODBoX3NldHVwCiAJfSwKIAl7CiAJCUlEX0FIQV8yOTMwVSAmIElEX0RFVl9WRU5ET1JfTUFTSywKQEAgLTQxNCw3ICs0MjAsNyBAQAogCQlJRF9BSEFfMzk0NEFVLAogCQlJRF9BTExfTUFTSywKIAkJIkFkYXB0ZWMgMzk0NEEgVWx0cmEgU0NTSSBhZGFwdGVyIiwKLQkJYWhjX2FpYzc4OTVfc2V0dXAKKwkJYWhjX2FpYzc4OTVoX3NldHVwCiAJfSwKIAl7CiAJCUlEX0FJQzc4OTVfQVJPLApAQCAtNTUzLDcgKzU1OSw3IEBACiAJfQogfTsKIAotY29uc3QgdV9pbnQgYWhjX251bV9wY2lfZGV2cyA9IE5VTV9FTEVNRU5UUyhhaGNfcGNpX2lkZW50X3RhYmxlKTsKK2NvbnN0IHVfaW50IGFoY19udW1fcGNpX2RldnMgPSBBUlJBWV9TSVpFKGFoY19wY2lfaWRlbnRfdGFibGUpOwogCQkKICNkZWZpbmUgQUhDXzM5NFhfU0xPVF9DSEFOTkVMX0EJNAogI2RlZmluZSBBSENfMzk0WF9TTE9UX0NIQU5ORUxfQgk1CkBAIC0yMTIxLDYgKzIxMjcsMTYgQEAKIH0KIAogc3RhdGljIGludAorYWhjX2FpYzc4NzBoX3NldHVwKHN0cnVjdCBhaGNfc29mdGMgKmFoYykKK3sKKwlpbnQgZXJyb3IgPSBhaGNfYWljNzg3MF9zZXR1cChhaGMpOworCisJYWhjLT5mZWF0dXJlcyB8PSBBSENfSFZEOworCisJcmV0dXJuIGVycm9yOworfQorCitzdGF0aWMgaW50CiBhaGNfYWhhMzk0WF9zZXR1cChzdHJ1Y3QgYWhjX3NvZnRjICphaGMpCiB7CiAJaW50IGVycm9yOwpAQCAtMjEzMiw2ICsyMTQ4LDE2IEBACiB9CiAKIHN0YXRpYyBpbnQKK2FoY19haGEzOTRYaF9zZXR1cChzdHJ1Y3QgYWhjX3NvZnRjICphaGMpCit7CisJaW50IGVycm9yID0gYWhjX2FoYTM5NFhfc2V0dXAoYWhjKTsKKworCWFoYy0+ZmVhdHVyZXMgfD0gQUhDX0hWRDsKKworCXJldHVybiBlcnJvcjsKK30KKworc3RhdGljIGludAogYWhjX2FoYTM5OFhfc2V0dXAoc3RydWN0IGFoY19zb2Z0YyAqYWhjKQogewogCWludCBlcnJvcjsKQEAgLTIxNTQsNiArMjE4MCwxNiBAQAogfQogCiBzdGF0aWMgaW50CithaGNfYWhhNDk0WGhfc2V0dXAoc3RydWN0IGFoY19zb2Z0YyAqYWhjKQoreworCWludCBlcnJvciA9IGFoY19haGE0OTRYX3NldHVwKGFoYyk7CisKKwlhaGMtPmZlYXR1cmVzIHw9IEFIQ19IVkQ7CisKKwlyZXR1cm4gZXJyb3I7Cit9CisKK3N0YXRpYyBpbnQKIGFoY19haWM3ODgwX3NldHVwKHN0cnVjdCBhaGNfc29mdGMgKmFoYykKIHsKIAlhaGNfZGV2X3NvZnRjX3QgcGNpOwpAQCAtMjE3NSw2ICsyMjExLDE3IEBACiB9CiAKIHN0YXRpYyBpbnQKK2FoY19haWM3ODgwaF9zZXR1cChzdHJ1Y3QgYWhjX3NvZnRjICphaGMpCit7CisJaW50IGVycm9yID0gYWhjX2FpYzc4ODBfc2V0dXAoYWhjKTsKKworCWFoYy0+ZmVhdHVyZXMgfD0gQUhDX0hWRDsKKworCXJldHVybiBlcnJvcjsKK30KKworCitzdGF0aWMgaW50CiBhaGNfYWhhMjk0MFByb19zZXR1cChzdHJ1Y3QgYWhjX3NvZnRjICphaGMpCiB7CiAKQEAgLTIxOTQsNiArMjI0MSwxNiBAQAogfQogCiBzdGF0aWMgaW50CithaGNfYWhhMzk0WFVoX3NldHVwKHN0cnVjdCBhaGNfc29mdGMgKmFoYykKK3sKKwlpbnQgZXJyb3IgPSBhaGNfYWhhMzk0WFVfc2V0dXAoYWhjKTsKKworCWFoYy0+ZmVhdHVyZXMgfD0gQUhDX0hWRDsKKworCXJldHVybiBlcnJvcjsKK30KKworc3RhdGljIGludAogYWhjX2FoYTM5OFhVX3NldHVwKHN0cnVjdCBhaGNfc29mdGMgKmFoYykKIHsKIAlpbnQgZXJyb3I7CkBAIC0yMjkyLDYgKzIzNDksMTYgQEAKIH0KIAogc3RhdGljIGludAorYWhjX2FpYzc4OTVoX3NldHVwKHN0cnVjdCBhaGNfc29mdGMgKmFoYykKK3sKKwlpbnQgZXJyb3IgPSBhaGNfYWljNzg5NV9zZXR1cChhaGMpOworCisJYWhjLT5mZWF0dXJlcyB8PSBBSENfSFZEOworCisJcmV0dXJuIGVycm9yOworfQorCitzdGF0aWMgaW50CiBhaGNfYWljNzg5Nl9zZXR1cChzdHJ1Y3QgYWhjX3NvZnRjICphaGMpCiB7CiAJYWhjX2Rldl9zb2Z0Y190IHBjaTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcHJvYy5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wcm9jLmMKaW5kZXggMDRhMzUwNi4uNTkxNGI0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wcm9jLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wcm9jLmMKQEAgLTc3LDExICs3Nyw5IEBACiBhaGNfY2FsY19zeW5jc3JhdGUodV9pbnQgcGVyaW9kX2ZhY3RvcikKIHsKIAlpbnQgaTsKLQlpbnQgbnVtX3N5bmNyYXRlczsKIAotCW51bV9zeW5jcmF0ZXMgPSBzaXplb2Yoc2NzaV9zeW5jcmF0ZXMpIC8gc2l6ZW9mKHNjc2lfc3luY3JhdGVzWzBdKTsKIAkvKiBTZWUgaWYgdGhlIHBlcmlvZCBpcyBpbiB0aGUgImV4Y2VwdGlvbiIgdGFibGUgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX3N5bmNyYXRlczsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2NzaV9zeW5jcmF0ZXMpOyBpKyspIHsKIAogCQlpZiAocGVyaW9kX2ZhY3RvciA9PSBzY3NpX3N5bmNyYXRlc1tpXS5wZXJpb2RfZmFjdG9yKSB7CiAJCQkvKiBQZXJpb2QgaW4ga0h6ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCmluZGV4IDc3MGYxNjQuLjVkYmExYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCkBAIC0xNTY1LDcgKzE1NjUsNyBAQAogICBzdHJ1Y3Qgc2VxdWVuY2VyX3BhdGNoICpsYXN0X3BhdGNoOwogICBpbnQgbnVtX3BhdGNoZXM7CiAKLSAgbnVtX3BhdGNoZXMgPSBzaXplb2Yoc2VxdWVuY2VyX3BhdGNoZXMpL3NpemVvZihzdHJ1Y3Qgc2VxdWVuY2VyX3BhdGNoKTsKKyAgbnVtX3BhdGNoZXMgPSBBUlJBWV9TSVpFKHNlcXVlbmNlcl9wYXRjaGVzKTsKICAgbGFzdF9wYXRjaCA9ICZzZXF1ZW5jZXJfcGF0Y2hlc1tudW1fcGF0Y2hlc107CiAgIGN1cl9wYXRjaCA9ICpzdGFydF9wYXRjaDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FybS9xdWV1ZS5jIGIvZHJpdmVycy9zY3NpL2FybS9xdWV1ZS5jCmluZGV4IGIxMDc1MGIuLjhjYWE1OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hcm0vcXVldWUuYworKysgYi9kcml2ZXJzL3Njc2kvYXJtL3F1ZXVlLmMKQEAgLTExOCw4ICsxMTgsNyBAQAogCWxpc3RfZGVsKGwpOwogCiAJcSA9IGxpc3RfZW50cnkobCwgUUVfdCwgbGlzdCk7Ci0JaWYgKEJBRF9NQUdJQyhxLCBRVUVVRV9NQUdJQ19GUkVFKSkKLQkJQlVHKCk7CisJQlVHX09OKEJBRF9NQUdJQyhxLCBRVUVVRV9NQUdJQ19GUkVFKSk7CiAKIAlTRVRfTUFHSUMocSwgUVVFVUVfTUFHSUNfVVNFRCk7CiAJcS0+U0NwbnQgPSBTQ3BudDsKQEAgLTE0NCw4ICsxNDMsNyBAQAogCSAqLwogCWxpc3RfZGVsKGVudCk7CiAJcSA9IGxpc3RfZW50cnkoZW50LCBRRV90LCBsaXN0KTsKLQlpZiAoQkFEX01BR0lDKHEsIFFVRVVFX01BR0lDX1VTRUQpKQotCQlCVUcoKTsKKwlCVUdfT04oQkFEX01BR0lDKHEsIFFVRVVFX01BR0lDX1VTRUQpKTsKIAogCVNFVF9NQUdJQyhxLCBRVUVVRV9NQUdJQ19GUkVFKTsKIAlsaXN0X2FkZChlbnQsICZxdWV1ZS0+ZnJlZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXRhX3BpaXguYyBiL2RyaXZlcnMvc2NzaS9hdGFfcGlpeC5jCmluZGV4IDZkYzg4MTQuLjUyMWI3MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hdGFfcGlpeC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hdGFfcGlpeC5jCkBAIC05Myw3ICs5Myw3IEBACiAjaW5jbHVkZSA8bGludXgvbGliYXRhLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJImF0YV9waWl4IgotI2RlZmluZSBEUlZfVkVSU0lPTgkiMS4wNSIKKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjEuMTAiCiAKIGVudW0gewogCVBJSVhfSU9DRkcJCT0gMHg1NCwgLyogSURFIEkvTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCkBAIC0xNDYsMTEgKzE0NiwxMCBAQAogCiBzdGF0aWMgaW50IHBpaXhfaW5pdF9vbmUgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTsKLQotc3RhdGljIGludCBwaWl4X3BhdGFfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKTsKLXN0YXRpYyBpbnQgcGlpeF9zYXRhX3Byb2JlX3Jlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCAqY2xhc3Nlcyk7CiBzdGF0aWMgdm9pZCBwaWl4X3NldF9waW9tb2RlIChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqYWRldik7CiBzdGF0aWMgdm9pZCBwaWl4X3NldF9kbWFtb2RlIChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqYWRldik7CitzdGF0aWMgdm9pZCBwaWl4X3BhdGFfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIHBpaXhfc2F0YV9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGluX21vZHVsZV9pbml0ID0gMTsKIApAQCAtMTU5LDYgKzE1OCw3IEBACiAJeyAweDgwODYsIDB4NzExMSwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgcGlpeDRfcGF0YSB9LAogCXsgMHg4MDg2LCAweDI0ZGIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIGljaDVfcGF0YSB9LAogCXsgMHg4MDg2LCAweDI1YTIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIGljaDVfcGF0YSB9LAorCXsgMHg4MDg2LCAweDI3ZGYsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIGljaDVfcGF0YSB9LAogI2VuZGlmCiAKIAkvKiBOT1RFOiBUaGUgZm9sbG93aW5nIFBDSSBpZHMgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUKQEAgLTIxOCw2ICsyMTgsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiAJLnJlc3VtZQkJCT0gYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZSwKIAkuc3VzcGVuZAkJPSBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZCwKQEAgLTIyNyw2ICsyMjgsNyBAQAogCS5wb3J0X2Rpc2FibGUJCT0gYXRhX3BvcnRfZGlzYWJsZSwKIAkuc2V0X3Bpb21vZGUJCT0gcGlpeF9zZXRfcGlvbW9kZSwKIAkuc2V0X2RtYW1vZGUJCT0gcGlpeF9zZXRfZG1hbW9kZSwKKwkubW9kZV9maWx0ZXIJCT0gYXRhX3BjaV9kZWZhdWx0X2ZpbHRlciwKIAogCS50Zl9sb2FkCQk9IGF0YV90Zl9sb2FkLAogCS50Zl9yZWFkCQk9IGF0YV90Zl9yZWFkLApAQCAtMjM0LDE2ICsyMzYsMTggQEAKIAkuZXhlY19jb21tYW5kCQk9IGF0YV9leGVjX2NvbW1hbmQsCiAJLmRldl9zZWxlY3QJCT0gYXRhX3N0ZF9kZXZfc2VsZWN0LAogCi0JLnByb2JlX3Jlc2V0CQk9IHBpaXhfcGF0YV9wcm9iZV9yZXNldCwKLQogCS5ibWRtYV9zZXR1cAkJPSBhdGFfYm1kbWFfc2V0dXAsCiAJLmJtZG1hX3N0YXJ0CQk9IGF0YV9ibWRtYV9zdGFydCwKIAkuYm1kbWFfc3RvcAkJPSBhdGFfYm1kbWFfc3RvcCwKIAkuYm1kbWFfc3RhdHVzCQk9IGF0YV9ibWRtYV9zdGF0dXMsCiAJLnFjX3ByZXAJCT0gYXRhX3FjX3ByZXAsCiAJLnFjX2lzc3VlCQk9IGF0YV9xY19pc3N1ZV9wcm90LAorCS5kYXRhX3hmZXIJCT0gYXRhX3Bpb19kYXRhX3hmZXIsCiAKLQkuZW5nX3RpbWVvdXQJCT0gYXRhX2VuZ190aW1lb3V0LAorCS5mcmVlemUJCQk9IGF0YV9ibWRtYV9mcmVlemUsCisJLnRoYXcJCQk9IGF0YV9ibWRtYV90aGF3LAorCS5lcnJvcl9oYW5kbGVyCQk9IHBpaXhfcGF0YV9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCwKIAogCS5pcnFfaGFuZGxlcgkJPSBhdGFfaW50ZXJydXB0LAogCS5pcnFfY2xlYXIJCT0gYXRhX2JtZG1hX2lycV9jbGVhciwKQEAgLTI2MiwxNiArMjY2LDE4IEBACiAJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAogCS5kZXZfc2VsZWN0CQk9IGF0YV9zdGRfZGV2X3NlbGVjdCwKIAotCS5wcm9iZV9yZXNldAkJPSBwaWl4X3NhdGFfcHJvYmVfcmVzZXQsCi0KIAkuYm1kbWFfc2V0dXAJCT0gYXRhX2JtZG1hX3NldHVwLAogCS5ibWRtYV9zdGFydAkJPSBhdGFfYm1kbWFfc3RhcnQsCiAJLmJtZG1hX3N0b3AJCT0gYXRhX2JtZG1hX3N0b3AsCiAJLmJtZG1hX3N0YXR1cwkJPSBhdGFfYm1kbWFfc3RhdHVzLAogCS5xY19wcmVwCQk9IGF0YV9xY19wcmVwLAogCS5xY19pc3N1ZQkJPSBhdGFfcWNfaXNzdWVfcHJvdCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9waW9fZGF0YV94ZmVyLAogCi0JLmVuZ190aW1lb3V0CQk9IGF0YV9lbmdfdGltZW91dCwKKwkuZnJlZXplCQkJPSBhdGFfYm1kbWFfZnJlZXplLAorCS50aGF3CQkJPSBhdGFfYm1kbWFfdGhhdywKKwkuZXJyb3JfaGFuZGxlcgkJPSBwaWl4X3NhdGFfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQsCiAKIAkuaXJxX2hhbmRsZXIJCT0gYXRhX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCkBAIC00NTUsNTkgKzQ2MSw1MSBAQAogfQogCiAvKioKLSAqCXBpaXhfcGF0YV9wcm9iZWluaXQgLSBwcm9iZWluaXQgZm9yIFBBVEEgaG9zdCBjb250cm9sbGVyCisgKglwaWl4X3BhdGFfcHJlcmVzZXQgLSBwcmVyZXNldCBmb3IgUEFUQSBob3N0IGNvbnRyb2xsZXIKICAqCUBhcDogVGFyZ2V0IHBvcnQKICAqCi0gKglQcm9iZWluaXQgaW5jbHVkaW5nIGNhYmxlIGRldGVjdGlvbi4KKyAqCVByZXJlc2V0IGluY2x1ZGluZyBjYWJsZSBkZXRlY3Rpb24uCiAgKgogICoJTE9DS0lORzoKICAqCU5vbmUgKGluaGVyaXRlZCBmcm9tIGNhbGxlcikuCiAgKi8KLXN0YXRpYyB2b2lkIHBpaXhfcGF0YV9wcm9iZWluaXQoc3RydWN0IGF0YV9wb3J0ICphcCkKLXsKLQlwaWl4X3BhdGFfY2JsX2RldGVjdChhcCk7Ci0JYXRhX3N0ZF9wcm9iZWluaXQoYXApOwotfQotCi0vKioKLSAqCXBpaXhfcGF0YV9wcm9iZV9yZXNldCAtIFBlcmZvcm0gcmVzZXQgb24gUEFUQSBwb3J0IGFuZCBjbGFzc2lmeQotICoJQGFwOiBQb3J0IHRvIHJlc2V0Ci0gKglAY2xhc3NlczogUmVzdWx0aW5nIGNsYXNzZXMgb2YgYXR0YWNoZWQgZGV2aWNlcwotICoKLSAqCVJlc2V0IFBBVEEgcGh5IGFuZCBjbGFzc2lmeSBhdHRhY2hlZCBkZXZpY2VzLgotICoKLSAqCUxPQ0tJTkc6Ci0gKglOb25lIChpbmhlcml0ZWQgZnJvbSBjYWxsZXIpLgotICovCi1zdGF0aWMgaW50IHBpaXhfcGF0YV9wcm9iZV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpCitzdGF0aWMgaW50IHBpaXhfcGF0YV9wcmVyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihhcC0+aG9zdF9zZXQtPmRldik7CiAKIAlpZiAoIXBjaV90ZXN0X2NvbmZpZ19iaXRzKHBkZXYsICZwaWl4X2VuYWJsZV9iaXRzW2FwLT5oYXJkX3BvcnRfbm9dKSkgewotCQlwcmludGsoS0VSTl9JTkZPICJhdGEldTogcG9ydCBkaXNhYmxlZC4gaWdub3JpbmcuXG4iLCBhcC0+aWQpOworCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fSU5GTywgInBvcnQgZGlzYWJsZWQuIGlnbm9yaW5nLlxuIik7CisJCWFwLT5laF9jb250ZXh0LmkuYWN0aW9uICY9IH5BVEFfRUhfUkVTRVRfTUFTSzsKIAkJcmV0dXJuIDA7CiAJfQogCi0JcmV0dXJuIGF0YV9kcml2ZV9wcm9iZV9yZXNldChhcCwgcGlpeF9wYXRhX3Byb2JlaW5pdCwKLQkJCQkgICAgIGF0YV9zdGRfc29mdHJlc2V0LCBOVUxMLAotCQkJCSAgICAgYXRhX3N0ZF9wb3N0cmVzZXQsIGNsYXNzZXMpOworCXBpaXhfcGF0YV9jYmxfZGV0ZWN0KGFwKTsKKworCXJldHVybiBhdGFfc3RkX3ByZXJlc2V0KGFwKTsKK30KKworc3RhdGljIHZvaWQgcGlpeF9wYXRhX2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlhdGFfYm1kbWFfZHJpdmVfZWgoYXAsIHBpaXhfcGF0YV9wcmVyZXNldCwgYXRhX3N0ZF9zb2Z0cmVzZXQsIE5VTEwsCisJCQkgICBhdGFfc3RkX3Bvc3RyZXNldCk7CiB9CiAKIC8qKgotICoJcGlpeF9zYXRhX3Byb2JlIC0gUHJvYmUgUENJIGRldmljZSBmb3IgcHJlc2VudCBTQVRBIGRldmljZXMKLSAqCUBhcDogUG9ydCBhc3NvY2lhdGVkIHdpdGggdGhlIFBDSSBkZXZpY2Ugd2Ugd2lzaCB0byBwcm9iZQorICoJcGlpeF9zYXRhX3ByZXJlc2V0IC0gcHJlcmVzZXQgZm9yIFNBVEEgaG9zdCBjb250cm9sbGVyCisgKglAYXA6IFRhcmdldCBwb3J0CiAgKgogICoJUmVhZHMgYW5kIGNvbmZpZ3VyZXMgU0FUQSBQQ0kgZGV2aWNlJ3MgUENJIGNvbmZpZyByZWdpc3RlcgogICoJUG9ydCBDb25maWd1cmF0aW9uIGFuZCBTdGF0dXMgKFBDUykgdG8gZGV0ZXJtaW5lIHBvcnQgYW5kCi0gKglkZXZpY2UgYXZhaWxhYmlsaXR5LgorICoJZGV2aWNlIGF2YWlsYWJpbGl0eS4gIFJldHVybiAtRU5PREVWIHRvIHNraXAgcmVzZXQgaWYgbm8KKyAqCWRldmljZSBpcyBwcmVzZW50LgogICoKICAqCUxPQ0tJTkc6CiAgKglOb25lIChpbmhlcml0ZWQgZnJvbSBjYWxsZXIpLgogICoKICAqCVJFVFVSTlM6Ci0gKglNYXNrIG9mIGF2YWxpYWJsZSBkZXZpY2VzIG9uIHRoZSBwb3J0LgorICoJMCBpZiBkZXZpY2UgaXMgcHJlc2VudCwgLUVOT0RFViBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgcGlpeF9zYXRhX3Byb2JlIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQorc3RhdGljIGludCBwaWl4X3NhdGFfcHJlcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoYXAtPmhvc3Rfc2V0LT5kZXYpOwogCWNvbnN0IHVuc2lnbmVkIGludCAqbWFwID0gYXAtPmhvc3Rfc2V0LT5wcml2YXRlX2RhdGE7CkBAIC01NDksMjkgKzU0NywxOSBAQAogCURQUklOVEsoImF0YSV1OiBMRUFWRSwgcGNzPTB4JXggcHJlc2VudF9tYXNrPTB4JXhcbiIsCiAJCWFwLT5pZCwgcGNzLCBwcmVzZW50X21hc2spOwogCi0JcmV0dXJuIHByZXNlbnRfbWFzazsKLX0KLQotLyoqCi0gKglwaWl4X3NhdGFfcHJvYmVfcmVzZXQgLSBQZXJmb3JtIHJlc2V0IG9uIFNBVEEgcG9ydCBhbmQgY2xhc3NpZnkKLSAqCUBhcDogUG9ydCB0byByZXNldAotICoJQGNsYXNzZXM6IFJlc3VsdGluZyBjbGFzc2VzIG9mIGF0dGFjaGVkIGRldmljZXMKLSAqCi0gKglSZXNldCBTQVRBIHBoeSBhbmQgY2xhc3NpZnkgYXR0YWNoZWQgZGV2aWNlcy4KLSAqCi0gKglMT0NLSU5HOgotICoJTm9uZSAoaW5oZXJpdGVkIGZyb20gY2FsbGVyKS4KLSAqLwotc3RhdGljIGludCBwaWl4X3NhdGFfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKQotewotCWlmICghcGlpeF9zYXRhX3Byb2JlKGFwKSkgewotCQlwcmludGsoS0VSTl9JTkZPICJhdGEldTogU0FUQSBwb3J0IGhhcyBubyBkZXZpY2UuXG4iLCBhcC0+aWQpOworCWlmICghcHJlc2VudF9tYXNrKSB7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9JTkZPLCAiU0FUQSBwb3J0IGhhcyBubyBkZXZpY2UuXG4iKTsKKwkJYXAtPmVoX2NvbnRleHQuaS5hY3Rpb24gJj0gfkFUQV9FSF9SRVNFVF9NQVNLOwogCQlyZXR1cm4gMDsKIAl9CiAKLQlyZXR1cm4gYXRhX2RyaXZlX3Byb2JlX3Jlc2V0KGFwLCBhdGFfc3RkX3Byb2JlaW5pdCwKLQkJCQkgICAgIGF0YV9zdGRfc29mdHJlc2V0LCBOVUxMLAotCQkJCSAgICAgYXRhX3N0ZF9wb3N0cmVzZXQsIGNsYXNzZXMpOworCXJldHVybiBhdGFfc3RkX3ByZXJlc2V0KGFwKTsKK30KKworc3RhdGljIHZvaWQgcGlpeF9zYXRhX2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlhdGFfYm1kbWFfZHJpdmVfZWgoYXAsIHBpaXhfc2F0YV9wcmVyZXNldCwgYXRhX3N0ZF9zb2Z0cmVzZXQsIE5VTEwsCisJCQkgICBhdGFfc3RkX3Bvc3RyZXNldCk7CiB9CiAKIC8qKgpAQCAtNzYwLDE1ICs3NDgsMTUgQEAKIAkJcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgUENJX1JFVklTSU9OX0lELCAmcmV2KTsKIAkJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgMHg0MSwgJmNmZyk7CiAJCS8qIE9ubHkgb24gdGhlIG9yaWdpbmFsIHJldmlzaW9uOiBJREUgRE1BIGNhbiBoYW5nICovCi0JCWlmKHJldiA9PSAweDAwKQorCQlpZiAocmV2ID09IDB4MDApCiAJCQlub19waWl4X2RtYSA9IDE7CiAJCS8qIE9uIGFsbCByZXZpc2lvbnMgYmVsb3cgNSBQWEIgYnVzIGxvY2sgbXVzdCBiZSBkaXNhYmxlZCBmb3IgSURFICovCi0JCWVsc2UgaWYoY2ZnICYgKDE8PDE0KSAmJiByZXYgPCA1KQorCQllbHNlIGlmIChjZmcgJiAoMTw8MTQpICYmIHJldiA8IDUpCiAJCQlub19waWl4X2RtYSA9IDI7CiAJfQotCWlmKG5vX3BpaXhfZG1hKQorCWlmIChub19waWl4X2RtYSkKIAkJZGV2X3ByaW50ayhLRVJOX1dBUk5JTkcsICZhdGFfZGV2LT5kZXYsICI0NTBOWCBlcnJhdGEgcHJlc2VudCwgZGlzYWJsaW5nIElERSBETUEuXG4iKTsKLQlpZihub19waWl4X2RtYSA9PSAyKQorCWlmIChub19waWl4X2RtYSA9PSAyKQogCQlkZXZfcHJpbnRrKEtFUk5fV0FSTklORywgJmF0YV9kZXYtPmRldiwgIkEgQklPUyB1cGRhdGUgbWF5IHJlc29sdmUgdGhpcy5cbiIpOwogCXJldHVybiBub19waWl4X2RtYTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMgYi9kcml2ZXJzL3Njc2kvYXRwODcwdS5jCmluZGV4IGExOThkODYuLjNlZTRkNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMKKysrIGIvZHJpdmVycy9zY3NpL2F0cDg3MHUuYwpAQCAtNDczLDcgKzQ3Myw3IEBACiAJCQkgKi8KIAkJCWlmICh3b3JrcmVxLT51c2Vfc2cpIHsKIAkJCQlwY2lfdW5tYXBfc2coZGV2LT5wZGV2LAotCQkJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopd29ya3JlcS0+YnVmZmVyLAorCQkJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopd29ya3JlcS0+cmVxdWVzdF9idWZmZXIsCiAJCQkJCXdvcmtyZXEtPnVzZV9zZywKIAkJCQkJd29ya3JlcS0+c2NfZGF0YV9kaXJlY3Rpb24pOwogCQkJfSBlbHNlIGlmICh3b3JrcmVxLT5yZXF1ZXN0X2J1ZmZsZW4gJiYKQEAgLTMwNDcsNyArMzA0Nyw3IEBACiAJCWlmIChhdHBfZGV2LmNoaXBfdmVyID09IDQpCiAJCQlzaHBudC0+bWF4X2lkID0gMTY7CiAJCWVsc2UJCQotCQkJc2hwbnQtPm1heF9pZCA9IDc7CisJCQlzaHBudC0+bWF4X2lkID0gODsKIAkJc2hwbnQtPnRoaXNfaWQgPSBob3N0X2lkOwogCQlzaHBudC0+dW5pcXVlX2lkID0gYmFzZV9pbzsKIAkJc2hwbnQtPmlvX3BvcnQgPSBiYXNlX2lvOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2NvbnN0YW50cy5jIGIvZHJpdmVycy9zY3NpL2NvbnN0YW50cy5jCmluZGV4IDMwYTMzNTMuLmQ5MmQ1MDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9jb25zdGFudHMuYworKysgYi9kcml2ZXJzL3Njc2kvY29uc3RhbnRzLmMKQEAgLTEzLDkgKzEzLDkgQEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KIAogI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZWguaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZGJnLmg+CiAKQEAgLTExNCw4ICsxMTQsNyBAQAogCXsweGQsICJSZXBvcnQgc3VwcG9ydGVkIHRhc2sgbWFuYWdlbWVudCBmdW5jdGlvbnMifSwKIAl7MHhlLCAiUmVwb3J0IHByaW9yaXR5In0sCiB9OwotI2RlZmluZSBNQUlOVF9JTl9TWiBcCi0gICAgICAgIChpbnQpKHNpemVvZihtYWludF9pbl9hcnIpIC8gc2l6ZW9mKG1haW50X2luX2FyclswXSkpCisjZGVmaW5lIE1BSU5UX0lOX1NaIEFSUkFZX1NJWkUobWFpbnRfaW5fYXJyKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZhbHVlX25hbWVfcGFpciBtYWludF9vdXRfYXJyW10gPSB7CiAJezB4NiwgIlNldCBkZXZpY2UgaWRlbnRpZmllciJ9LApAQCAtMTIzLDM0ICsxMjIsMjkgQEAKIAl7MHhiLCAiQ2hhbmdlIGFsaWFzZXMifSwKIAl7MHhlLCAiU2V0IHByaW9yaXR5In0sCiB9OwotI2RlZmluZSBNQUlOVF9PVVRfU1ogXAotICAgICAgICAoaW50KShzaXplb2YobWFpbnRfb3V0X2FycikgLyBzaXplb2YobWFpbnRfb3V0X2FyclswXSkpCisjZGVmaW5lIE1BSU5UX09VVF9TWiBBUlJBWV9TSVpFKG1haW50X291dF9hcnIpCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmFsdWVfbmFtZV9wYWlyIHNlcnZfaW4xMl9hcnJbXSA9IHsKIAl7MHgxLCAiUmVhZCBtZWRpYSBzZXJpYWwgbnVtYmVyIn0sCiB9OwotI2RlZmluZSBTRVJWX0lOMTJfU1ogIFwKLSAgICAgICAgKGludCkoc2l6ZW9mKHNlcnZfaW4xMl9hcnIpIC8gc2l6ZW9mKHNlcnZfaW4xMl9hcnJbMF0pKQorI2RlZmluZSBTRVJWX0lOMTJfU1ogQVJSQVlfU0laRShzZXJ2X2luMTJfYXJyKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZhbHVlX25hbWVfcGFpciBzZXJ2X291dDEyX2FycltdID0gewogCXstMSwgImR1bW15IGVudHJ5In0sCiB9OwotI2RlZmluZSBTRVJWX09VVDEyX1NaIFwKLSAgICAgICAgKGludCkoc2l6ZW9mKHNlcnZfb3V0MTJfYXJyKSAvIHNpemVvZihzZXJ2X2luMTJfYXJyWzBdKSkKKyNkZWZpbmUgU0VSVl9PVVQxMl9TWiBBUlJBWV9TSVpFKHNlcnZfb3V0MTJfYXJyKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZhbHVlX25hbWVfcGFpciBzZXJ2X2luMTZfYXJyW10gPSB7CiAJezB4MTAsICJSZWFkIGNhcGFjaXR5KDE2KSJ9LAogCXsweDExLCAiUmVhZCBsb25nKDE2KSJ9LAogfTsKLSNkZWZpbmUgU0VSVl9JTjE2X1NaICBcCi0gICAgICAgIChpbnQpKHNpemVvZihzZXJ2X2luMTZfYXJyKSAvIHNpemVvZihzZXJ2X2luMTZfYXJyWzBdKSkKKyNkZWZpbmUgU0VSVl9JTjE2X1NaIEFSUkFZX1NJWkUoc2Vydl9pbjE2X2FycikKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB2YWx1ZV9uYW1lX3BhaXIgc2Vydl9vdXQxNl9hcnJbXSA9IHsKIAl7MHgxMSwgIldyaXRlIGxvbmcoMTYpIn0sCiAJezB4MWYsICJOb3RpZnkgZGF0YSB0cmFuc2ZlciBkZXZpY2UoMTYpIn0sCiB9OwotI2RlZmluZSBTRVJWX09VVDE2X1NaIFwKLSAgICAgICAgKGludCkoc2l6ZW9mKHNlcnZfb3V0MTZfYXJyKSAvIHNpemVvZihzZXJ2X2luMTZfYXJyWzBdKSkKKyNkZWZpbmUgU0VSVl9PVVQxNl9TWiBBUlJBWV9TSVpFKHNlcnZfb3V0MTZfYXJyKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZhbHVlX25hbWVfcGFpciB2YXJpYWJsZV9sZW5ndGhfYXJyW10gPSB7CiAJezB4MSwgIlJlYnVpbGQoMzIpIn0sCkBAIC0xOTAsOCArMTg0LDcgQEAKIAl7MHg4ZjdlLCAiUGVyZm9ybSBTQ1NJIGNvbW1hbmQgKG9zZCkifSwKIAl7MHg4ZjdmLCAiUGVyZm9ybSB0YXNrIG1hbmFnZW1lbnQgZnVuY3Rpb24gKG9zZCkifSwKIH07Ci0jZGVmaW5lIFZBUklBQkxFX0xFTkdUSF9TWiBcCi0gICAgICAgIChpbnQpKHNpemVvZih2YXJpYWJsZV9sZW5ndGhfYXJyKSAvIHNpemVvZih2YXJpYWJsZV9sZW5ndGhfYXJyWzBdKSkKKyNkZWZpbmUgVkFSSUFCTEVfTEVOR1RIX1NaIEFSUkFZX1NJWkUodmFyaWFibGVfbGVuZ3RoX2FycikKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBnZXRfc2FfbmFtZShjb25zdCBzdHJ1Y3QgdmFsdWVfbmFtZV9wYWlyICogYXJyLAogCQkJICAgICAgICBpbnQgYXJyX3N6LCBpbnQgc2VydmljZV9hY3Rpb24pCkBAIC0xMjY4LDE2ICsxMjYxLDYgQEAKIH0KIEVYUE9SVF9TWU1CT0woc2NzaV9wcmludF9zZW5zZSk7CiAKLXZvaWQgc2NzaV9wcmludF9yZXFfc2Vuc2UoY29uc3QgY2hhciAqZGV2Y2xhc3MsIHN0cnVjdCBzY3NpX3JlcXVlc3QgKnNyZXEpCi17Ci0JY29uc3QgY2hhciAqbmFtZSA9IGRldmNsYXNzOwotCi0JaWYgKHNyZXEtPnNyX3JlcXVlc3QtPnJxX2Rpc2spCi0JCW5hbWUgPSBzcmVxLT5zcl9yZXF1ZXN0LT5ycV9kaXNrLT5kaXNrX25hbWU7Ci0JX19zY3NpX3ByaW50X3NlbnNlKG5hbWUsIHNyZXEtPnNyX3NlbnNlX2J1ZmZlciwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKTsKLX0KLUVYUE9SVF9TWU1CT0woc2NzaV9wcmludF9yZXFfc2Vuc2UpOwotCiB2b2lkIHNjc2lfcHJpbnRfY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpCiB7CiAJLyogQXNzdW1lIGFwcGVuZGVkIG91dHB1dCAoaS5lLiBub3QgYXQgc3RhcnQgb2YgbGluZSkgKi8KQEAgLTEyOTAsMTAgKzEyNzMsMTAgQEAKICNpZmRlZiBDT05GSUdfU0NTSV9DT05TVEFOVFMKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0Ynl0ZV90YWJsZVtdPXsKLSJESURfT0siLCAiRElEX05PX0NPTk5FQ1QiLCAiRElEX0JVU19CVVNZIiwgIkRJRF9USU1FX09VVCIsICJESURfQkFEX1RBUkdFVCIsIAorIkRJRF9PSyIsICJESURfTk9fQ09OTkVDVCIsICJESURfQlVTX0JVU1kiLCAiRElEX1RJTUVfT1VUIiwgIkRJRF9CQURfVEFSR0VUIiwKICJESURfQUJPUlQiLCAiRElEX1BBUklUWSIsICJESURfRVJST1IiLCAiRElEX1JFU0VUIiwgIkRJRF9CQURfSU5UUiIsCiAiRElEX1BBU1NUSFJPVUdIIiwgIkRJRF9TT0ZUX0VSUk9SIiwgIkRJRF9JTU1fUkVUUlkifTsKLSNkZWZpbmUgTlVNX0hPU1RCWVRFX1NUUlMgKHNpemVvZihob3N0Ynl0ZV90YWJsZSkgLyBzaXplb2YoY29uc3QgY2hhciAqKSkKKyNkZWZpbmUgTlVNX0hPU1RCWVRFX1NUUlMgQVJSQVlfU0laRShob3N0Ynl0ZV90YWJsZSkKIAogdm9pZCBzY3NpX3ByaW50X2hvc3RieXRlKGludCBzY3NpcmVzdWx0KQogewpAQCAtMTMwMyw3ICsxMjg2LDcgQEAKIAlpZiAoaGIgPCBOVU1fSE9TVEJZVEVfU1RSUykKIAkJcHJpbnRrKCIoJXMpICIsIGhvc3RieXRlX3RhYmxlW2hiXSk7CiAJZWxzZQotCQlwcmludGsoImlzIGludmFsaWQgIik7IAorCQlwcmludGsoImlzIGludmFsaWQgIik7CiB9CiAjZWxzZQogdm9pZCBzY3NpX3ByaW50X2hvc3RieXRlKGludCBzY3NpcmVzdWx0KQpAQCAtMTMxNSwxNCArMTI5OCwxNCBAQAogI2lmZGVmIENPTkZJR19TQ1NJX0NPTlNUQU5UUwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRyaXZlcmJ5dGVfdGFibGVbXT17Ci0iRFJJVkVSX09LIiwgIkRSSVZFUl9CVVNZIiwgIkRSSVZFUl9TT0ZUIiwgICJEUklWRVJfTUVESUEiLCAiRFJJVkVSX0VSUk9SIiwgCisiRFJJVkVSX09LIiwgIkRSSVZFUl9CVVNZIiwgIkRSSVZFUl9TT0ZUIiwgICJEUklWRVJfTUVESUEiLCAiRFJJVkVSX0VSUk9SIiwKICJEUklWRVJfSU5WQUxJRCIsICJEUklWRVJfVElNRU9VVCIsICJEUklWRVJfSEFSRCIsICJEUklWRVJfU0VOU0UifTsKLSNkZWZpbmUgTlVNX0RSSVZFUkJZVEVfU1RSUyAoc2l6ZW9mKGRyaXZlcmJ5dGVfdGFibGUpIC8gc2l6ZW9mKGNvbnN0IGNoYXIgKikpCisjZGVmaW5lIE5VTV9EUklWRVJCWVRFX1NUUlMgQVJSQVlfU0laRShkcml2ZXJieXRlX3RhYmxlKQogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRyaXZlcnN1Z2dlc3RfdGFibGVbXT17IlNVR0dFU1RfT0siLAogIlNVR0dFU1RfUkVUUlkiLCAiU1VHR0VTVF9BQk9SVCIsICJTVUdHRVNUX1JFTUFQIiwgIlNVR0dFU1RfRElFIiwKICJTVUdHRVNUXzUiLCAiU1VHR0VTVF82IiwgIlNVR0dFU1RfNyIsICJTVUdHRVNUX1NFTlNFIn07Ci0jZGVmaW5lIE5VTV9TVUdHRVNUX1NUUlMgKHNpemVvZihkcml2ZXJzdWdnZXN0X3RhYmxlKSAvIHNpemVvZihjb25zdCBjaGFyICopKQorI2RlZmluZSBOVU1fU1VHR0VTVF9TVFJTIEFSUkFZX1NJWkUoZHJpdmVyc3VnZ2VzdF90YWJsZSkKIAogdm9pZCBzY3NpX3ByaW50X2RyaXZlcmJ5dGUoaW50IHNjc2lyZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGMzOTV4LmMgYi9kcml2ZXJzL3Njc2kvZGMzOTV4LmMKaW5kZXggY2JmODI1Mi4uMTgzMjQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RjMzk1eC5jCisrKyBiL2RyaXZlcnMvc2NzaS9kYzM5NXguYwpAQCAtMjMwLDEzICsyMzAsMTIgQEAKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQ7CiAKIAlzdHJ1Y3QgU0dlbnRyeSAqc2VnbWVudF94OwkvKiBMaW5lYXIgYXJyYXkgb2YgaHcgc2cgZW50cmllcyAodXAgdG8gNjQgZW50cmllcykgKi8KLQl1MzIgc2dfYnVzX2FkZHI7CSAgICAgICAgLyogQnVzIGFkZHJlc3Mgb2Ygc2cgbGlzdCAoaWUsIG9mIHNlZ21lbnRfeCkgKi8KKwlkbWFfYWRkcl90IHNnX2J1c19hZGRyOwkgICAgICAgIC8qIEJ1cyBhZGRyZXNzIG9mIHNnIGxpc3QgKGllLCBvZiBzZWdtZW50X3gpICovCiAKIAl1OCBzZ19jb3VudDsJCQkvKiBObyBvZiBIVyBzZyBlbnRyaWVzIGZvciB0aGlzIHJlcXVlc3QgKi8KIAl1OCBzZ19pbmRleDsJCQkvKiBJbmRleCBvZiBIVyBzZyBlbnRyeSBmb3IgdGhpcyByZXF1ZXN0ICovCi0JdTMyIHRvdGFsX3hmZXJfbGVuZ3RoOwkJLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyB0byBiZSB0cmFuc2ZlcmVkICovCi0JdW5zaWduZWQgY2hhciAqdmlydF9hZGRyOwkvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgY3VycmVudCB0cmFuc2ZlciBwb3NpdGlvbiAqLwotCisJc2l6ZV90IHRvdGFsX3hmZXJfbGVuZ3RoOwkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVtYWluaW5nIHRvIGJlIHRyYW5zZmVyZWQgKi8KKwlzaXplX3QgcmVxdWVzdF9sZW5ndGg7CQkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhpcyByZXF1ZXN0ICovCiAJLyoKIAkgKiBUaGUgc2Vuc2UgYnVmZmVyIGhhbmRsaW5nIGZ1bmN0aW9uLCByZXF1ZXN0X3NlbnNlLCB1c2VzCiAJICogdGhlIGZpcnN0IGh3IHNnIGVudHJ5IChzZWdtZW50X3hbMF0pIGFuZCB0aGUgdHJhbnNmZXIKQEAgLTI0Niw4ICsyNDUsNyBAQAogCSAqIHRvdGFsX3hmZXJfbGVuZ3RoIGluIHhmZXJyZWQuIFRoZXNlIHZhbHVlcyBhcmUgcmVzdG9yZWQgaW4KIAkgKiBwY2lfdW5tYXBfc3JiX3NlbnNlLiBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHhmZXJyZWQgaXMgdXNlZC4KIAkgKi8KLQl1bnNpZ25lZCBjaGFyICp2aXJ0X2FkZHJfcmVxOwkvKiBTYXZlZCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHJlcXVlc3QgYnVmZmVyICovCi0JdTMyIHhmZXJyZWQ7CQkgICAgICAgIC8qIFNhdmVkIGNvcHkgb2YgdG90YWxfeGZlcl9sZW5ndGggKi8KKwlzaXplX3QgeGZlcnJlZDsJCSAgICAgICAgLyogU2F2ZWQgY29weSBvZiB0b3RhbF94ZmVyX2xlbmd0aCAqLwogCiAJdTE2IHN0YXRlOwogCkBAIC05NzcsMTcgKzk3NSw2IEBACiAJfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcGlvX3RyaWdnZXIodm9pZCkKLXsKLQlzdGF0aWMgaW50IGZlZWRiYWNrX3JlcXVlc3RlZDsKLQotCWlmICghZmVlZGJhY2tfcmVxdWVzdGVkKSB7Ci0JCWZlZWRiYWNrX3JlcXVlc3RlZCA9IDE7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBQbGVhc2UsIGNvbnRhY3QgPGxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnPiAiCi0JCSAgICAgICAidG8gaGVscCBpbXByb3ZlIHN1cHBvcnQgZm9yIHlvdXIgc3lzdGVtLlxuIiwgX19GSUxFX18pOwotCX0KLX0KLQogLyogUHJlcGFyZSBTUkIgZm9yIGJlaW5nIHNlbnQgdG8gRGV2aWNlIERDQiB3LyBjb21tYW5kICpjbWQgKi8KIHN0YXRpYyB2b2lkIGJ1aWxkX3NyYihzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQsIHN0cnVjdCBEZXZpY2VDdGxCbGsgKmRjYiwKIAkJc3RydWN0IFNjc2lSZXFCbGsgKnNyYikKQEAgLTEwMDEsNyArOTg4LDYgQEAKIAlzcmItPnNnX2NvdW50ID0gMDsKIAlzcmItPnRvdGFsX3hmZXJfbGVuZ3RoID0gMDsKIAlzcmItPnNnX2J1c19hZGRyID0gMDsKLQlzcmItPnZpcnRfYWRkciA9IE5VTEw7CiAJc3JiLT5zZ19pbmRleCA9IDA7CiAJc3JiLT5hZGFwdGVyX3N0YXR1cyA9IDA7CiAJc3JiLT50YXJnZXRfc3RhdHVzID0gMDsKQEAgLTEwMzIsNyArMTAxOCw2IEBACiAJCQlyZXFsZW4sIGNtZC0+cmVxdWVzdF9idWZmZXIsIGNtZC0+dXNlX3NnLAogCQkJc3JiLT5zZ19jb3VudCk7CiAKLQkJc3JiLT52aXJ0X2FkZHIgPSBwYWdlX2FkZHJlc3Moc2wtPnBhZ2UpOwogCQlmb3IgKGkgPSAwOyBpIDwgc3JiLT5zZ19jb3VudDsgaSsrKSB7CiAJCQl1MzIgYnVzYWRkciA9ICh1MzIpc2dfZG1hX2FkZHJlc3MoJnNsW2ldKTsKIAkJCXUzMiBzZWdsZW4gPSAodTMyKXNsW2ldLmxlbmd0aDsKQEAgLTEwNzcsMTIgKzEwNjIsMTQgQEAKIAkJCXNyYi0+dG90YWxfeGZlcl9sZW5ndGgrKzsKIAogCQlzcmItPnNlZ21lbnRfeFswXS5sZW5ndGggPSBzcmItPnRvdGFsX3hmZXJfbGVuZ3RoOwotCQlzcmItPnZpcnRfYWRkciA9IGNtZC0+cmVxdWVzdF9idWZmZXI7CisKIAkJZHByaW50a2RiZyhEQkdfMCwKIAkJCSJidWlsZF9zcmI6IFsxXSBsZW49JWQgYnVmPSVwIHVzZV9zZz0lZCBtYXA9JTA4eFxuIiwKIAkJCXNyYi0+dG90YWxfeGZlcl9sZW5ndGgsIGNtZC0+cmVxdWVzdF9idWZmZXIsCiAJCQljbWQtPnVzZV9zZywgc3JiLT5zZWdtZW50X3hbMF0uYWRkcmVzcyk7CiAJfQorCisJc3JiLT5yZXF1ZXN0X2xlbmd0aCA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGg7CiB9CiAKIApAQCAtMTQxNCwxMCArMTQwMSwxMCBAQAogCX0KIAlzcmIgPSBmaW5kX2NtZChjbWQsICZkY2ItPnNyYl9nb2luZ19saXN0KTsKIAlpZiAoc3JiKSB7Ci0JCWRwcmludGtsKEtFUk5fREVCVUcsICJlaF9hYm9ydDogQ29tbWFuZCBpbiBwcm9ncmVzcyIpOworCQlkcHJpbnRrbChLRVJOX0RFQlVHLCAiZWhfYWJvcnQ6IENvbW1hbmQgaW4gcHJvZ3Jlc3NcbiIpOwogCQkvKiBYWFg6IFNob3VsZCBhYm9ydCB0aGUgY29tbWFuZCBoZXJlICovCiAJfSBlbHNlIHsKLQkJZHByaW50a2woS0VSTl9ERUJVRywgImVoX2Fib3J0OiBDb21tYW5kIG5vdCBmb3VuZCIpOworCQlkcHJpbnRrbChLRVJOX0RFQlVHLCAiZWhfYWJvcnQ6IENvbW1hbmQgbm90IGZvdW5kXG4iKTsKIAl9CiAJcmV0dXJuIEZBSUxFRDsKIH0KQEAgLTE5NzYsMTQgKzE5NjMsMTEgQEAKIAogLyoKICAqIENvbXB1dGUgdGhlIG5leHQgU2NhdHRlciBHYXRoZXIgbGlzdCBpbmRleCBhbmQgYWRqdXN0IGl0cyBsZW5ndGgKLSAqIGFuZCBhZGRyZXNzIGlmIG5lY2Vzc2FyeTsgYWxzbyBjb21wdXRlIHZpcnRfYWRkcgorICogYW5kIGFkZHJlc3MgaWYgbmVjZXNzYXJ5CiAgKi8KIHN0YXRpYyB2b2lkIHNnX3VwZGF0ZV9saXN0KHN0cnVjdCBTY3NpUmVxQmxrICpzcmIsIHUzMiBsZWZ0KQogewogCXU4IGlkeDsKLQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwotCXN0cnVjdCBzY3NpX2NtbmQgKmNtZCA9IHNyYi0+Y21kOwotCWludCBzZWdtZW50ID0gY21kLT51c2Vfc2c7CiAJdTMyIHhmZXJyZWQgPSBzcmItPnRvdGFsX3hmZXJfbGVuZ3RoIC0gbGVmdDsgLyogYnl0ZXMgdHJhbnNmZXJlZCAqLwogCXN0cnVjdCBTR2VudHJ5ICpwc2dlID0gc3JiLT5zZWdtZW50X3ggKyBzcmItPnNnX2luZGV4OwogCkBAIC0yMDE2LDI5ICsyMDAwLDYgQEAKIAkJcHNnZSsrOwogCX0KIAlzZ192ZXJpZnlfbGVuZ3RoKHNyYik7Ci0KLQkvKiB3ZSBuZWVkIHRoZSBjb3JyZXNwb25kaW5nIHZpcnR1YWwgYWRkcmVzcyAqLwotCWlmICghc2VnbWVudCB8fCAoc3JiLT5mbGFnICYgQVVUT19SRVFTRU5TRSkpIHsKLQkJc3JiLT52aXJ0X2FkZHIgKz0geGZlcnJlZDsKLQkJcmV0dXJuOwotCX0KLQotCS8qIFdlIGhhdmUgdG8gd2FsayB0aGUgc2NhdHRlcmxpc3QgdG8gZmluZCBpdCAqLwotCXNnID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKWNtZC0+cmVxdWVzdF9idWZmZXI7Ci0Jd2hpbGUgKHNlZ21lbnQtLSkgewotCQl1bnNpZ25lZCBsb25nIG1hc2sgPQotCQkgICAgfigodW5zaWduZWQgbG9uZylzZy0+bGVuZ3RoIC0gMSkgJiBQQUdFX01BU0s7Ci0JCWlmICgoc2dfZG1hX2FkZHJlc3Moc2cpICYgbWFzaykgPT0gKHBzZ2UtPmFkZHJlc3MgJiBtYXNrKSkgewotCQkJc3JiLT52aXJ0X2FkZHIgPSAocGFnZV9hZGRyZXNzKHNnLT5wYWdlKQotCQkJCQkgICArIHBzZ2UtPmFkZHJlc3MgLQotCQkJCQkgICAocHNnZS0+YWRkcmVzcyAmIFBBR0VfTUFTSykpOwotCQkJcmV0dXJuOwotCQl9Ci0JCSsrc2c7Ci0JfQotCi0JZHByaW50a2woS0VSTl9FUlIsICJzZ191cGRhdGVfbGlzdDogc2dfdG9fdmlydCBmYWlsZWRcbiIpOwotCXNyYi0+dmlydF9hZGRyID0gTlVMTDsKIH0KIAogCkBAIC0yMDUwLDE1ICsyMDExLDcgQEAKICAqLwogc3RhdGljIHZvaWQgc2dfc3VidHJhY3Rfb25lKHN0cnVjdCBTY3NpUmVxQmxrICpzcmIpCiB7Ci0Jc3JiLT50b3RhbF94ZmVyX2xlbmd0aC0tOwotCXNyYi0+c2VnbWVudF94W3NyYi0+c2dfaW5kZXhdLmxlbmd0aC0tOwotCWlmIChzcmItPnRvdGFsX3hmZXJfbGVuZ3RoICYmCi0JICAgICFzcmItPnNlZ21lbnRfeFtzcmItPnNnX2luZGV4XS5sZW5ndGgpIHsKLQkJaWYgKGRlYnVnX2VuYWJsZWQoREJHX1BJTykpCi0JCQlwcmludGsoIiAobmV4dCBzZWdtZW50KSIpOwotCQlzcmItPnNnX2luZGV4Kys7Ci0JCXNnX3VwZGF0ZV9saXN0KHNyYiwgc3JiLT50b3RhbF94ZmVyX2xlbmd0aCk7Ci0JfQorCXNnX3VwZGF0ZV9saXN0KHNyYiwgc3JiLT50b3RhbF94ZmVyX2xlbmd0aCAtIDEpOwogfQogCiAKQEAgLTIxMTgsNyArMjA3MSw3IEBACiAJICogSWYgd2UgbmVlZCBtb3JlIGRhdGEsIHRoZSBETUEgU0cgbGlzdCB3aWxsIGJlIGZyZXNobHkgc2V0IHVwLCBhbnl3YXkKIAkgKi8KIAlkcHJpbnRrZGJnKERCR19QSU8sICJkYXRhX291dF9waGFzZTA6ICIKLQkJIkRNQXtmaWZjbnQ9MHglMDJ4IGZpZm9zdGF0PTB4JTAyeH0gIgorCQkiRE1Be2ZpZm9jbnQ9MHglMDJ4IGZpZm9zdGF0PTB4JTAyeH0gIgogCQkiU0NTSXtmaWZvY250PTB4JTAyeCBjbnQ9MHglMDZ4IHN0YXR1cz0weCUwNHh9IHRvdGFsPTB4JTA2eFxuIiwKIAkJREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX0RNQV9GSUZPQ05UKSwKIAkJREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX0RNQV9GSUZPU1RBVCksCkBAIC0yMjM5LDEyICsyMTkyLDExIEBACiAJZGF0YV9pb190cmFuc2ZlcihhY2IsIHNyYiwgWEZFUkRBVEFPVVQpOwogfQogCi0KIHN0YXRpYyB2b2lkIGRhdGFfaW5fcGhhc2UwKHN0cnVjdCBBZGFwdGVyQ3RsQmxrICphY2IsIHN0cnVjdCBTY3NpUmVxQmxrICpzcmIsCiAJCXUxNiAqcHNjc2lfc3RhdHVzKQogewogCXUxNiBzY3NpX3N0YXR1cyA9ICpwc2NzaV9zdGF0dXM7Ci0JdTMyIGRfbGVmdF9jb3VudGVyID0gMDsKKwogCWRwcmludGtkYmcoREJHXzAsICJkYXRhX2luX3BoYXNlMDogKHBpZCMlbGkpIDwlMDJpLSVpPlxuIiwKIAkJc3JiLT5jbWQtPnBpZCwgc3JiLT5jbWQtPmRldmljZS0+aWQsIHNyYi0+Y21kLT5kZXZpY2UtPmx1bik7CiAKQEAgLTIyNjIsNiArMjIxNCw5IEBACiAJICogc2VlbSB0byBiZSBhIGJhZCBpZGVhLCBhY3R1YWxseS4KIAkgKi8KIAlpZiAoIShzcmItPnN0YXRlICYgU1JCX1hGRVJQQUQpKSB7CisJCXUzMiBkX2xlZnRfY291bnRlcjsKKwkJdW5zaWduZWQgaW50IHNjLCBmYzsKKwogCQlpZiAoc2NzaV9zdGF0dXMgJiBQQVJJVFlFUlJPUikgewogCQkJZHByaW50a2woS0VSTl9JTkZPLCAiZGF0YV9pbl9waGFzZTA6IChwaWQjJWxpKSAiCiAJCQkJIlBhcml0eSBFcnJvclxuIiwgc3JiLT5jbWQtPnBpZCk7CkBAIC0yMjk4LDE4ICsyMjUzLDE5IEBACiAJCQkJREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX0RNQV9GSUZPU1RBVCkpOwogCQl9CiAJCS8qIE5vdzogQ2hlY2sgcmVtYWluaWcgZGF0YTogVGhlIFNDU0kgY291bnRlcnMgc2hvdWxkIHRlbGwgdXMgLi4uICovCi0JCWRfbGVmdF9jb3VudGVyID0gREMzOTV4X3JlYWQzMihhY2IsIFRSTV9TMTA0MF9TQ1NJX0NPVU5URVIpCi0JCSAgICArICgoREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX1NDU0lfRklGT0NOVCkgJiAweDFmKQorCQlzYyA9IERDMzk1eF9yZWFkMzIoYWNiLCBUUk1fUzEwNDBfU0NTSV9DT1VOVEVSKTsKKwkJZmMgPSBEQzM5NXhfcmVhZDgoYWNiLCBUUk1fUzEwNDBfU0NTSV9GSUZPQ05UKTsKKwkJZF9sZWZ0X2NvdW50ZXIgPSBzYyArICgoZmMgJiAweDFmKQogCQkgICAgICAgPDwgKChzcmItPmRjYi0+c3luY19wZXJpb2QgJiBXSURFX1NZTkMpID8gMSA6CiAJCQkgICAwKSk7CiAJCWRwcmludGtkYmcoREJHX0tHLCAiZGF0YV9pbl9waGFzZTA6ICIKIAkJCSJTQ1NJe2ZpZm9jbnQ9MHglMDJ4JXMgY3RyPTB4JTA4eH0gIgogCQkJIkRNQXtmaWZvY250PTB4JTAyeCBmaWZvc3RhdD0weCUwMnggY3RyPTB4JTA4eH0gIgogCQkJIlJlbWFpbnt0b3R4ZmVyPSVpIHNjc2lfZmlmbytjdHI9JWl9XG4iLAotCQkJREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX1NDU0lfRklGT0NOVCksCisJCQlmYywKIAkJCShzcmItPmRjYi0+c3luY19wZXJpb2QgJiBXSURFX1NZTkMpID8gIndvcmRzIiA6ICJieXRlcyIsCi0JCQlEQzM5NXhfcmVhZDMyKGFjYiwgVFJNX1MxMDQwX1NDU0lfQ09VTlRFUiksCi0JCQlEQzM5NXhfcmVhZDgoYWNiLCBUUk1fUzEwNDBfRE1BX0ZJRk9DTlQpLAorCQkJc2MsCisJCQlmYywKIAkJCURDMzk1eF9yZWFkOChhY2IsIFRSTV9TMTA0MF9ETUFfRklGT1NUQVQpLAogCQkJREMzOTV4X3JlYWQzMihhY2IsIFRSTV9TMTA0MF9ETUFfQ1hDTlQpLAogCQkJc3JiLT50b3RhbF94ZmVyX2xlbmd0aCwgZF9sZWZ0X2NvdW50ZXIpOwpAQCAtMjMxNyw0MCArMjI3Myw3OSBAQAogCQkvKiBLRzogTGVzcyB0aGFuIG9yIGVxdWFsIHRvIDQgYnl0ZXMgY2FuIG5vdCBiZSB0cmFuc2ZlcmVkIHZpYSBETUEsIGl0IHNlZW1zLiAqLwogCQlpZiAoZF9sZWZ0X2NvdW50ZXIKIAkJICAgICYmIHNyYi0+dG90YWxfeGZlcl9sZW5ndGggPD0gREMzOTV4X0xBU1RQSU8pIHsKKwkJCXNpemVfdCBsZWZ0X2lvID0gc3JiLT50b3RhbF94ZmVyX2xlbmd0aDsKKwogCQkJLyp1MzIgYWRkciA9IChzcmItPnNlZ21lbnRfeFtzcmItPnNnX2luZGV4XS5hZGRyZXNzKTsgKi8KIAkJCS8qc2dfdXBkYXRlX2xpc3QgKHNyYiwgZF9sZWZ0X2NvdW50ZXIpOyAqLwotCQkJZHByaW50a2RiZyhEQkdfUElPLCAiZGF0YV9pbl9waGFzZTA6IFBJTyAoJWkgJXMpIHRvICIKLQkJCQkiJXAgZm9yIHJlbWFpbmluZyAlaSBieXRlczoiLAotCQkJCURDMzk1eF9yZWFkOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0ZJRk9DTlQpICYgMHgxZiwKKwkJCWRwcmludGtkYmcoREJHX1BJTywgImRhdGFfaW5fcGhhc2UwOiBQSU8gKCVpICVzKSAiCisJCQkJICAgImZvciByZW1haW5pbmcgJWkgYnl0ZXM6IiwKKwkJCQlmYyAmIDB4MWYsCiAJCQkJKHNyYi0+ZGNiLT5zeW5jX3BlcmlvZCAmIFdJREVfU1lOQykgPwogCQkJCSAgICAid29yZHMiIDogImJ5dGVzIiwKLQkJCQlzcmItPnZpcnRfYWRkciwKIAkJCQlzcmItPnRvdGFsX3hmZXJfbGVuZ3RoKTsKIAkJCWlmIChzcmItPmRjYi0+c3luY19wZXJpb2QgJiBXSURFX1NZTkMpCiAJCQkJREMzOTV4X3dyaXRlOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0NPTkZJRzIsCiAJCQkJCSAgICAgIENGRzJfV0lERUZJRk8pOwotCQkJd2hpbGUgKERDMzk1eF9yZWFkOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0ZJRk9DTlQpICE9IDB4NDApIHsKLQkJCQl1OCBieXRlID0gREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX1NDU0lfRklGTyk7Ci0JCQkJcGlvX3RyaWdnZXIoKTsKLQkJCQkqKHNyYi0+dmlydF9hZGRyKSsrID0gYnl0ZTsKLQkJCQlpZiAoZGVidWdfZW5hYmxlZChEQkdfUElPKSkKLQkJCQkJcHJpbnRrKCIgJTAyeCIsIGJ5dGUpOwotCQkJCWRfbGVmdF9jb3VudGVyLS07Ci0JCQkJc2dfc3VidHJhY3Rfb25lKHNyYik7Ci0JCQl9Ci0JCQlpZiAoc3JiLT5kY2ItPnN5bmNfcGVyaW9kICYgV0lERV9TWU5DKSB7Ci0jaWYgMQotICAgICAgICAgICAgICAgIC8qIFJlYWQgdGhlIGxhc3QgYnl0ZSAuLi4gKi8KLQkJCQlpZiAoc3JiLT50b3RhbF94ZmVyX2xlbmd0aCA+IDApIHsKLQkJCQkJdTggYnl0ZSA9IERDMzk1eF9yZWFkOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0ZJRk8pOwotCQkJCQlwaW9fdHJpZ2dlcigpOwotCQkJCQkqKHNyYi0+dmlydF9hZGRyKSsrID0gYnl0ZTsKLQkJCQkJc3JiLT50b3RhbF94ZmVyX2xlbmd0aC0tOworCQkJd2hpbGUgKGxlZnRfaW8pIHsKKwkJCQl1bnNpZ25lZCBjaGFyICp2aXJ0LCAqYmFzZSA9IE5VTEw7CisJCQkJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisJCQkJc2l6ZV90IGxlbiA9IGxlZnRfaW87CisKKwkJCQlpZiAoc3JiLT5jbWQtPnVzZV9zZykgeworCQkJCQlzaXplX3Qgb2Zmc2V0ID0gc3JiLT5yZXF1ZXN0X2xlbmd0aCAtIGxlZnRfaW87CisJCQkJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkJCQkJLyogQXNzdW1wdGlvbjogaXQncyBpbnNpZGUgb25lIHBhZ2UgYXMgaXQncyBhdCBtb3N0IDQgYnl0ZXMgYW5kCisJCQkJCSAgIEkganVzdCBhc3N1bWUgaXQncyBvbiBhIDQtYnl0ZSBib3VuZGFyeSAqLworCQkJCQliYXNlID0gc2NzaV9rbWFwX2F0b21pY19zZygoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JiLT5jbWQtPnJlcXVlc3RfYnVmZmVyLAorCQkJCQkJCQkgICAgIHNyYi0+c2dfY291bnQsICZvZmZzZXQsICZsZW4pOworCQkJCQl2aXJ0ID0gYmFzZSArIG9mZnNldDsKKwkJCQl9IGVsc2UgeworCQkJCQl2aXJ0ID0gc3JiLT5jbWQtPnJlcXVlc3RfYnVmZmVyICsgc3JiLT5jbWQtPnJlcXVlc3RfYnVmZmxlbiAtIGxlZnRfaW87CisJCQkJCWxlbiA9IGxlZnRfaW87CisJCQkJfQorCQkJCWxlZnRfaW8gLT0gbGVuOworCisJCQkJd2hpbGUgKGxlbikgeworCQkJCQl1OCBieXRlOworCQkJCQlieXRlID0gREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX1NDU0lfRklGTyk7CisJCQkJCSp2aXJ0KysgPSBieXRlOworCiAJCQkJCWlmIChkZWJ1Z19lbmFibGVkKERCR19QSU8pKQogCQkJCQkJcHJpbnRrKCIgJTAyeCIsIGJ5dGUpOworCisJCQkJCWRfbGVmdF9jb3VudGVyLS07CisJCQkJCXNnX3N1YnRyYWN0X29uZShzcmIpOworCisJCQkJCWxlbi0tOworCisJCQkJCWZjID0gREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX1NDU0lfRklGT0NOVCk7CisKKwkJCQkJaWYgKGZjID09IDB4NDApIHsKKwkJCQkJCWxlZnRfaW8gPSAwOworCQkJCQkJYnJlYWs7CisJCQkJCX0KIAkJCQl9Ci0jZW5kaWYKLQkJCQlEQzM5NXhfd3JpdGU4KGFjYiwgVFJNX1MxMDQwX1NDU0lfQ09ORklHMiwgMCk7CisKKwkJCQlXQVJOX09OKChmYyAhPSAweDQwKSA9PSAhZF9sZWZ0X2NvdW50ZXIpOworCisJCQkJaWYgKGZjID09IDB4NDAgJiYgKHNyYi0+ZGNiLT5zeW5jX3BlcmlvZCAmIFdJREVfU1lOQykpIHsKKwkJCQkJLyogUmVhZCB0aGUgbGFzdCBieXRlIC4uLiAqLworCQkJCQlpZiAoc3JiLT50b3RhbF94ZmVyX2xlbmd0aCA+IDApIHsKKwkJCQkJCXU4IGJ5dGUgPSBEQzM5NXhfcmVhZDgoYWNiLCBUUk1fUzEwNDBfU0NTSV9GSUZPKTsKKworCQkJCQkJKnZpcnQrKyA9IGJ5dGU7CisJCQkJCQlzcmItPnRvdGFsX3hmZXJfbGVuZ3RoLS07CisJCQkJCQlpZiAoZGVidWdfZW5hYmxlZChEQkdfUElPKSkKKwkJCQkJCQlwcmludGsoIiAlMDJ4IiwgYnl0ZSk7CisJCQkJCX0KKworCQkJCQlEQzM5NXhfd3JpdGU4KGFjYiwgVFJNX1MxMDQwX1NDU0lfQ09ORklHMiwgMCk7CisJCQkJfQorCisJCQkJaWYgKHNyYi0+Y21kLT51c2Vfc2cpIHsKKwkJCQkJc2NzaV9rdW5tYXBfYXRvbWljX3NnKGJhc2UpOworCQkJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJCQkJfQogCQkJfQogCQkJLypwcmludGsoIiAlMDh4IiwgKih1MzIqKShidXNfdG9fdmlydCAoYWRkcikpKTsgKi8KIAkJCS8qc3JiLT50b3RhbF94ZmVyX2xlbmd0aCA9IDA7ICovCkBAIC0yNTA5LDIyICsyNTA0LDQzIEBACiAJCQkJICAgICAgU0NNRF9GSUZPX0lOKTsKIAkJfSBlbHNlIHsJLyogd3JpdGUgKi8KIAkJCWludCBsbiA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGg7CisJCQlzaXplX3QgbGVmdF9pbyA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGg7CisKIAkJCWlmIChzcmItPmRjYi0+c3luY19wZXJpb2QgJiBXSURFX1NZTkMpCiAJCQkJREMzOTV4X3dyaXRlOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0NPTkZJRzIsCiAJCQkJICAgICBDRkcyX1dJREVGSUZPKTsKLQkJCWRwcmludGtkYmcoREJHX1BJTywKLQkJCQkiZGF0YV9pb190cmFuc2ZlcjogUElPICVpIGJ5dGVzIGZyb20gJXA6IiwKLQkJCQlzcmItPnRvdGFsX3hmZXJfbGVuZ3RoLCBzcmItPnZpcnRfYWRkcik7CiAKLQkJCXdoaWxlIChzcmItPnRvdGFsX3hmZXJfbGVuZ3RoKSB7Ci0JCQkJaWYgKGRlYnVnX2VuYWJsZWQoREJHX1BJTykpCi0JCQkJCXByaW50aygiICUwMngiLCAodW5zaWduZWQgY2hhcikgKihzcmItPnZpcnRfYWRkcikpOworCQkJd2hpbGUgKGxlZnRfaW8pIHsKKwkJCQl1bnNpZ25lZCBjaGFyICp2aXJ0LCAqYmFzZSA9IE5VTEw7CisJCQkJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisJCQkJc2l6ZV90IGxlbiA9IGxlZnRfaW87CiAKLQkJCQlwaW9fdHJpZ2dlcigpOwotCQkJCURDMzk1eF93cml0ZTgoYWNiLCBUUk1fUzEwNDBfU0NTSV9GSUZPLCAKLQkJCQkgICAgICooc3JiLT52aXJ0X2FkZHIpKyspOworCQkJCWlmIChzcmItPmNtZC0+dXNlX3NnKSB7CisJCQkJCXNpemVfdCBvZmZzZXQgPSBzcmItPnJlcXVlc3RfbGVuZ3RoIC0gbGVmdF9pbzsKKwkJCQkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCQkJCQkvKiBBZ2FpbiwgbWF4IDQgYnl0ZXMgKi8KKwkJCQkJYmFzZSA9IHNjc2lfa21hcF9hdG9taWNfc2coKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYi0+Y21kLT5yZXF1ZXN0X2J1ZmZlciwKKwkJCQkJCQkJICAgICBzcmItPnNnX2NvdW50LCAmb2Zmc2V0LCAmbGVuKTsKKwkJCQkJdmlydCA9IGJhc2UgKyBvZmZzZXQ7CisJCQkJfSBlbHNlIHsKKwkJCQkJdmlydCA9IHNyYi0+Y21kLT5yZXF1ZXN0X2J1ZmZlciArIHNyYi0+Y21kLT5yZXF1ZXN0X2J1ZmZsZW4gLSBsZWZ0X2lvOworCQkJCQlsZW4gPSBsZWZ0X2lvOworCQkJCX0KKwkJCQlsZWZ0X2lvIC09IGxlbjsKIAotCQkJCXNnX3N1YnRyYWN0X29uZShzcmIpOworCQkJCXdoaWxlIChsZW4tLSkgeworCQkJCQlpZiAoZGVidWdfZW5hYmxlZChEQkdfUElPKSkKKwkJCQkJCXByaW50aygiICUwMngiLCAqdmlydCk7CisKKwkJCQkJREMzOTV4X3dyaXRlOChhY2IsIFRSTV9TMTA0MF9TQ1NJX0ZJRk8sICp2aXJ0KyspOworCisJCQkJCXNnX3N1YnRyYWN0X29uZShzcmIpOworCQkJCX0KKworCQkJCWlmIChzcmItPmNtZC0+dXNlX3NnKSB7CisJCQkJCXNjc2lfa3VubWFwX2F0b21pY19zZyhiYXNlKTsKKwkJCQkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCQkJCX0KIAkJCX0KIAkJCWlmIChzcmItPmRjYi0+c3luY19wZXJpb2QgJiBXSURFX1NZTkMpIHsKIAkJCQlpZiAobG4gJSAyKSB7CkBAIC0zMzE5LDcgKzMzMzUsNiBAQAogCSAgICBzcmItPnNlZ21lbnRfeFtEQzM5NXhfTUFYX1NHX0xJU1RFTlRSWSAtIDFdLmFkZHJlc3M7CiAJc3JiLT5zZWdtZW50X3hbMF0ubGVuZ3RoID0KIAkgICAgc3JiLT5zZWdtZW50X3hbREMzOTV4X01BWF9TR19MSVNURU5UUlkgLSAxXS5sZW5ndGg7Ci0Jc3JiLT52aXJ0X2FkZHIgPSBzcmItPnZpcnRfYWRkcl9yZXE7CiB9CiAKIApAQCAtMzMzMiwyMSArMzM0NywxNCBAQAogewogCXU4IHRlbXBjbnQsIHN0YXR1czsKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQgPSBzcmItPmNtZDsKLQlzdHJ1Y3QgU2NzaUlucURhdGEgKnB0cjsKIAllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBjbWQtPnNjX2RhdGFfZGlyZWN0aW9uOwotCi0JaWYgKGNtZC0+dXNlX3NnKSB7Ci0JCXN0cnVjdCBzY2F0dGVybGlzdCogc2cgPSAoc3RydWN0IHNjYXR0ZXJsaXN0ICopY21kLT5yZXF1ZXN0X2J1ZmZlcjsKLQkJcHRyID0gKHN0cnVjdCBTY3NpSW5xRGF0YSAqKShwYWdlX2FkZHJlc3Moc2ctPnBhZ2UpICsgc2ctPm9mZnNldCk7Ci0JfSBlbHNlIHsKLQkJcHRyID0gKHN0cnVjdCBTY3NpSW5xRGF0YSAqKShjbWQtPnJlcXVlc3RfYnVmZmVyKTsKLQl9CisJaW50IGNrY19vbmx5ID0gMTsKIAogCWRwcmludGtkYmcoREJHXzEsICJzcmJfZG9uZTogKHBpZCMlbGkpIDwlMDJpLSVpPlxuIiwgc3JiLT5jbWQtPnBpZCwKIAkJc3JiLT5jbWQtPmRldmljZS0+aWQsIHNyYi0+Y21kLT5kZXZpY2UtPmx1bik7Ci0JZHByaW50a2RiZyhEQkdfU0csICJzcmJfZG9uZTogc3JiPSVwIHNnPSVpKCVpLyVpKSBidWY9JXAgYWRkcj0lcFxuIiwKKwlkcHJpbnRrZGJnKERCR19TRywgInNyYl9kb25lOiBzcmI9JXAgc2c9JWkoJWkvJWkpIGJ1Zj0lcFxuIiwKIAkJc3JiLCBjbWQtPnVzZV9zZywgc3JiLT5zZ19pbmRleCwgc3JiLT5zZ19jb3VudCwKLQkJY21kLT5yZXF1ZXN0X2J1ZmZlciwgcHRyKTsKKwkJY21kLT5yZXF1ZXN0X2J1ZmZlcik7CiAJc3RhdHVzID0gc3JiLT50YXJnZXRfc3RhdHVzOwogCWlmIChzcmItPmZsYWcgJiBBVVRPX1JFUVNFTlNFKSB7CiAJCWRwcmludGtkYmcoREJHXzAsICJzcmJfZG9uZTogQVVUT19SRVFTRU5TRTFcbiIpOwpAQCAtMzQ4NSwyOSArMzQ5Myw0NyBAQAogCQkJCQkgICAgc3JiLT5zZWdtZW50X3hbMF0uYWRkcmVzcywKIAkJCQkJICAgIGNtZC0+cmVxdWVzdF9idWZmbGVuLCBkaXIpOwogCX0KLQotCWlmICgoY21kLT5yZXN1bHQgJiBSRVNfRElEKSA9PSAwICYmIGNtZC0+Y21uZFswXSA9PSBJTlFVSVJZCi0JICAgICYmIGNtZC0+Y21uZFsyXSA9PSAwICYmIGNtZC0+cmVxdWVzdF9idWZmbGVuID49IDgKLQkgICAgJiYgZGlyICE9IFBDSV9ETUFfTk9ORSAmJiBwdHIgJiYgKHB0ci0+VmVycyAmIDB4MDcpID49IDIpCi0JCWRjYi0+aW5xdWlyeTcgPSBwdHItPkZsYWdzOworCWNrY19vbmx5ID0gMDsKIC8qIENoZWNrIEVycm9yIENvbmRpdGlvbnMgKi8KICAgICAgIGNrY19lOgogCisJaWYgKGNtZC0+Y21uZFswXSA9PSBJTlFVSVJZKSB7CisJCXVuc2lnbmVkIGNoYXIgKmJhc2UgPSBOVUxMOworCQlzdHJ1Y3QgU2NzaUlucURhdGEgKnB0cjsKKwkJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisKKwkJaWYgKGNtZC0+dXNlX3NnKSB7CisJCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QqIHNnID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKWNtZC0+cmVxdWVzdF9idWZmZXI7CisJCQlzaXplX3Qgb2Zmc2V0ID0gMCwgbGVuID0gc2l6ZW9mKHN0cnVjdCBTY3NpSW5xRGF0YSk7CisKKwkJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkJCWJhc2UgPSBzY3NpX2ttYXBfYXRvbWljX3NnKHNnLCBjbWQtPnVzZV9zZywgJm9mZnNldCwgJmxlbik7CisJCQlwdHIgPSAoc3RydWN0IFNjc2lJbnFEYXRhICopKGJhc2UgKyBvZmZzZXQpOworCQl9IGVsc2UKKwkJCXB0ciA9IChzdHJ1Y3QgU2NzaUlucURhdGEgKikoY21kLT5yZXF1ZXN0X2J1ZmZlcik7CisKKwkJaWYgKCFja2Nfb25seSAmJiAoY21kLT5yZXN1bHQgJiBSRVNfRElEKSA9PSAwCisJCSAgICAmJiBjbWQtPmNtbmRbMl0gPT0gMCAmJiBjbWQtPnJlcXVlc3RfYnVmZmxlbiA+PSA4CisJCSAgICAmJiBkaXIgIT0gUENJX0RNQV9OT05FICYmIHB0ciAmJiAocHRyLT5WZXJzICYgMHgwNykgPj0gMikKKwkJCWRjYi0+aW5xdWlyeTcgPSBwdHItPkZsYWdzOworCiAJLyppZiggc3JiLT5jbWQtPmNtbmRbMF0gPT0gSU5RVUlSWSAmJiAqLwogCS8qICAoaG9zdF9ieXRlKGNtZC0+cmVzdWx0KSA9PSBESURfT0sgfHwgc3RhdHVzX2J5dGUoY21kLT5yZXN1bHQpICYgQ0hFQ0tfQ09ORElUSU9OKSApICovCi0JaWYgKGNtZC0+Y21uZFswXSA9PSBJTlFVSVJZICYmIChjbWQtPnJlc3VsdCA9PSAoRElEX09LIDw8IDE2KQotCQkJCQkgfHwgc3RhdHVzX2J5dGUoY21kLT4KLQkJCQkJCQlyZXN1bHQpICYKLQkJCQkJIENIRUNLX0NPTkRJVElPTikpIHsKLQotCQlpZiAoIWRjYi0+aW5pdF90Y3FfZmxhZykgewotCQkJYWRkX2RldihhY2IsIGRjYiwgcHRyKTsKLQkJCWRjYi0+aW5pdF90Y3FfZmxhZyA9IDE7CisJCWlmICgoY21kLT5yZXN1bHQgPT0gKERJRF9PSyA8PCAxNikKKwkJICAgICB8fCBzdGF0dXNfYnl0ZShjbWQtPnJlc3VsdCkgJgorCQkgICAgIENIRUNLX0NPTkRJVElPTikpIHsKKwkJCWlmICghZGNiLT5pbml0X3RjcV9mbGFnKSB7CisJCQkJYWRkX2RldihhY2IsIGRjYiwgcHRyKTsKKwkJCQlkY2ItPmluaXRfdGNxX2ZsYWcgPSAxOworCQkJfQogCQl9CiAKKwkJaWYgKGNtZC0+dXNlX3NnKSB7CisJCQlzY3NpX2t1bm1hcF9hdG9taWNfc2coYmFzZSk7CisJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJCX0KIAl9CiAKLQogCS8qIEhlcmUgaXMgdGhlIGluZm8gZm9yIERvdWcgR2lsYmVydCdzIHNnMyAuLi4gKi8KIAljbWQtPnJlc2lkID0gc3JiLT50b3RhbF94ZmVyX2xlbmd0aDsKIAkvKiBUaGlzIG1heSBiZSBpbnRlcnByZXRlZCBieSBzYi4gb3Igbm90IC4uLiAqLwpAQCAtMzcxMyw4ICszNzM5LDYgQEAKIAlzcmItPnhmZXJyZWQgPSBzcmItPnRvdGFsX3hmZXJfbGVuZ3RoOwogCS8qIHNyYi0+c2VnbWVudF94IDogYSBvbmUgZW50cnkgb2YgUy9HIGxpc3QgdGFibGUgKi8KIAlzcmItPnRvdGFsX3hmZXJfbGVuZ3RoID0gc2l6ZW9mKGNtZC0+c2Vuc2VfYnVmZmVyKTsKLQlzcmItPnZpcnRfYWRkcl9yZXEgPSBzcmItPnZpcnRfYWRkcjsKLQlzcmItPnZpcnRfYWRkciA9IGNtZC0+c2Vuc2VfYnVmZmVyOwogCXNyYi0+c2VnbWVudF94WzBdLmxlbmd0aCA9IHNpemVvZihjbWQtPnNlbnNlX2J1ZmZlcik7CiAJLyogTWFwIHNlbnNlIGJ1ZmZlciAqLwogCXNyYi0+c2VnbWVudF94WzBdLmFkZHJlc3MgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2R0Yy5jIGIvZHJpdmVycy9zY3NpL2R0Yy5jCmluZGV4IDMxMGQyZjQuLmM1MTA4YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kdGMuYworKysgYi9kcml2ZXJzL3Njc2kvZHRjLmMKQEAgLTE0NSwzNSArMTQ1LDM1IEBACiAwLCBJUlFfQVVUT319OwogI2VuZGlmCiAKLSNkZWZpbmUgTk9fT1ZFUlJJREVTIChzaXplb2Yob3ZlcnJpZGVzKSAvIHNpemVvZihzdHJ1Y3Qgb3ZlcnJpZGUpKQorI2RlZmluZSBOT19PVkVSUklERVMgQVJSQVlfU0laRShvdmVycmlkZXMpCiAKIHN0YXRpYyBzdHJ1Y3QgYmFzZSB7CiAJdW5zaWduZWQgbG9uZyBhZGRyZXNzOwogCWludCBub2F1dG87Ci19IGJhc2VzW10gX19pbml0ZGF0YSA9IHsgCi0JeyAweGNjMDAwLCAwIH0sIAotCXsgMHhjODAwMCwgMCB9LCAKLQl7IDB4ZGMwMDAsIDAgfSwgCit9IGJhc2VzW10gX19pbml0ZGF0YSA9IHsKKwl7IDB4Y2MwMDAsIDAgfSwKKwl7IDB4YzgwMDAsIDAgfSwKKwl7IDB4ZGMwMDAsIDAgfSwKIAl7IDB4ZDgwMDAsIDAgfQogfTsKIAotI2RlZmluZSBOT19CQVNFUyAoc2l6ZW9mIChiYXNlcykgLyBzaXplb2YgKHN0cnVjdCBiYXNlKSkKKyNkZWZpbmUgTk9fQkFTRVMgQVJSQVlfU0laRShiYXNlcykKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzaWduYXR1cmUgewogCWNvbnN0IGNoYXIgKnN0cmluZzsKIAlpbnQgb2Zmc2V0OwotfSBzaWduYXR1cmVzW10gPSB7IAorfSBzaWduYXR1cmVzW10gPSB7CiAJeyJEQVRBIFRFQ0hOT0xPR1kgQ09SUE9SQVRJT04gQklPUyIsIDB4MjV9LAogfTsKIAotI2RlZmluZSBOT19TSUdOQVRVUkVTIChzaXplb2YgKHNpZ25hdHVyZXMpIC8gIHNpemVvZiAoc3RydWN0IHNpZ25hdHVyZSkpCisjZGVmaW5lIE5PX1NJR05BVFVSRVMgQVJSQVlfU0laRShzaWduYXR1cmVzKQogCiAjaWZuZGVmIE1PRFVMRQogLyoKICAqIEZ1bmN0aW9uIDogZHRjX3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKQogICoKICAqIFB1cnBvc2UgOiBMSUxPIGNvbW1hbmQgbGluZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgb3ZlcnJpZGVzIGFycmF5LAotICogCisgKgogICogSW5wdXRzIDogc3RyIC0gdW51c2VkLCBpbnRzIC0gYXJyYXkgb2YgaW50ZWdlciBwYXJhbWV0ZXJzIHdpdGggaW50c1swXQogICoJZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpbnRzLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9lc3AuYyBiL2RyaXZlcnMvc2NzaS9lc3AuYwppbmRleCA4N2E4YzNkLi4wYTNlNDVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZXNwLmMKKysrIGIvZHJpdmVycy9zY3NpL2VzcC5jCkBAIC04MjEsOCArODIxLDggQEAKIAkJcmV0dXJuIC0xOwogCX0KIAotCXByaW50aygiZXNwJWQ6IElSUSAlcyAiLCBlc3AtPmVzcF9pZCwKLQkgICAgICAgX19pcnFfaXRvYShlc3AtPmVob3N0LT5pcnEpKTsKKwlwcmludGsoImVzcCVkOiBJUlEgJWQgIiwgZXNwLT5lc3BfaWQsCisJICAgICAgIGVzcC0+ZWhvc3QtPmlycSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mZF9tY3MuYyBiL2RyaXZlcnMvc2NzaS9mZF9tY3MuYwppbmRleCBjY2E0ODVhLi43MGExNjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZmRfbWNzLmMKKysrIGIvZHJpdmVycy9zY3NpL2ZkX21jcy5jCkBAIC0yNzksNyArMjc5LDcgQEAKIAkgMn0sCiB9OwogCi0jZGVmaW5lIEZEX0JSRFMgc2l6ZW9mKGZkX21jc19hZGFwdGVycykvc2l6ZW9mKHN0cnVjdCBmZF9tY3NfYWRhcHRlcnNfc3RydWN0KQorI2RlZmluZSBGRF9CUkRTIEFSUkFZX1NJWkUoZmRfbWNzX2FkYXB0ZXJzKQogCiBzdGF0aWMgaXJxcmV0dXJuX3QgZmRfbWNzX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mZG9tYWluLmMgYi9kcml2ZXJzL3Njc2kvZmRvbWFpbi5jCmluZGV4IDczMzQyNDQuLmUxNjAxM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9mZG9tYWluLmMKKysrIGIvZHJpdmVycy9zY3NpL2Zkb21haW4uYwpAQCAtNDIwLDEwICs0MjAsMTAgQEAKICAgIDB4ZDAwMDAsCiAgICAweGUwMDAwLAogfTsKLSNkZWZpbmUgQUREUkVTU19DT1VOVCAoc2l6ZW9mKCBhZGRyZXNzZXMgKSAvIHNpemVvZiggdW5zaWduZWQgKSkKLQkJICAgICAgIAorI2RlZmluZSBBRERSRVNTX0NPVU5UIEFSUkFZX1NJWkUoYWRkcmVzc2VzKQorCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgcG9ydHNbXSA9IHsgMHgxNDAsIDB4MTUwLCAweDE2MCwgMHgxNzAgfTsKLSNkZWZpbmUgUE9SVF9DT1VOVCAoc2l6ZW9mKCBwb3J0cyApIC8gc2l6ZW9mKCB1bnNpZ25lZCBzaG9ydCApKQorI2RlZmluZSBQT1JUX0NPVU5UIEFSUkFZX1NJWkUocG9ydHMpCiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbnRzW10gPSB7IDMsIDUsIDEwLCAxMSwgMTIsIDE0LCAxNSwgMCB9OwogCkBAIC01MDIsNyArNTAyLDcgQEAKICAgICBnZW9tZXRyeSBsb2NhdGlvbiBhcmUgdmVyaWZpZWQpLiAqLwogfTsKIAotI2RlZmluZSBTSUdOQVRVUkVfQ09VTlQgKHNpemVvZiggc2lnbmF0dXJlcyApIC8gc2l6ZW9mKCBzdHJ1Y3Qgc2lnbmF0dXJlICkpCisjZGVmaW5lIFNJR05BVFVSRV9DT1VOVCBBUlJBWV9TSVpFKHNpZ25hdHVyZXMpCiAKIHN0YXRpYyB2b2lkIHByaW50X2Jhbm5lciggc3RydWN0IFNjc2lfSG9zdCAqc2hwbnQgKQogewpAQCAtNTE5LDcgKzUxOSw3IEBACiAKICAgICAgIGlmIChiaW9zX21pbm9yID49IDApIHByaW50aygiJWQiLCBiaW9zX21pbm9yKTsKICAgICAgIGVsc2UgICAgICAgICAgICAgICAgIHByaW50aygiPy4iKTsKLSAgIAorCiAgICAgICBwcmludGsoICIgYXQgMHglbHggdXNpbmcgc2NzaSBpZCAlZFxuIiwKIAkgICAgICBiaW9zX2Jhc2UsIHNocG50LT50aGlzX2lkICk7CiAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmMgYi9kcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmMKaW5kZXggZTZiY2ZlOS4uNWYzMTNjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2dfTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9nX05DUjUzODAuYwpAQCAtMTM4LDEwICsxMzgsOSBAQAogWzFdIF9faW5pdGRhdGEgPSB7IHsgMCx9LH07CiAjZW5kaWYKIAorI2RlZmluZSBOT19PVkVSUklERVMgQVJSQVlfU0laRShvdmVycmlkZXMpCiAKLSNkZWZpbmUgTk9fT1ZFUlJJREVTIChzaXplb2Yob3ZlcnJpZGVzKSAvIHNpemVvZihzdHJ1Y3Qgb3ZlcnJpZGUpKQotCi0jaWZuZGVmIE1PRFVMRSAKKyNpZm5kZWYgTU9EVUxFCiAKIC8qKgogICoJaW50ZXJuYWxfc2V0dXAJCS0JaGFuZGxlIGxpbG8gY29tbWFuZCBzdHJpbmcgb3ZlcnJpZGUKQEAgLTIxMCw3ICsyMDksNyBAQAogewogCWludCBpbnRzWzEwXTsKIAotCWdldF9vcHRpb25zKHN0ciwgc2l6ZW9mKGludHMpIC8gc2l6ZW9mKGludCksIGludHMpOworCWdldF9vcHRpb25zKHN0ciwgQVJSQVlfU0laRShpbnRzKSwgaW50cyk7CiAJaW50ZXJuYWxfc2V0dXAoQk9BUkRfTkNSNTM4MCwgc3RyLCBpbnRzKTsKIAlyZXR1cm4gMTsKIH0KQEAgLTIxOCw3ICsyMTcsNyBAQAogLyoqCiAgKiAJZG9fTkNSNTNDNDAwX3NldHVwCQktCXNldCB1cCBlbnRyeSBwb2ludAogICoJQHN0cjogdW51c2VkCi0gKglAaW50czogaW50ZWdlciBwYXJhbWV0ZXJzIGZyb20ga2VybmVsIHNldHVwIGNvZGUgCisgKglAaW50czogaW50ZWdlciBwYXJhbWV0ZXJzIGZyb20ga2VybmVsIHNldHVwIGNvZGUKICAqCiAgKglTZXR1cCBmdW5jdGlvbiBpbnZva2VkIGF0IGJvb3QgdG8gcGFyc2UgdGhlIG5jcjUzYzQwMD0gY29tbWFuZAogICoJbGluZS4KQEAgLTIyOCw3ICsyMjcsNyBAQAogewogCWludCBpbnRzWzEwXTsKIAotCWdldF9vcHRpb25zKHN0ciwgc2l6ZW9mKGludHMpIC8gc2l6ZW9mKGludCksIGludHMpOworCWdldF9vcHRpb25zKHN0ciwgQVJSQVlfU0laRShpbnRzKSwgaW50cyk7CiAJaW50ZXJuYWxfc2V0dXAoQk9BUkRfTkNSNTNDNDAwLCBzdHIsIGludHMpOwogCXJldHVybiAxOwogfQpAQCAtMjM2LDcgKzIzNSw3IEBACiAvKioKICAqIAlkb19OQ1I1M0M0MDBBX3NldHVwCS0Jc2V0IHVwIGVudHJ5IHBvaW50CiAgKglAc3RyOiB1bnVzZWQKLSAqCUBpbnRzOiBpbnRlZ2VyIHBhcmFtZXRlcnMgZnJvbSBrZXJuZWwgc2V0dXAgY29kZSAKKyAqCUBpbnRzOiBpbnRlZ2VyIHBhcmFtZXRlcnMgZnJvbSBrZXJuZWwgc2V0dXAgY29kZQogICoKICAqCVNldHVwIGZ1bmN0aW9uIGludm9rZWQgYXQgYm9vdCB0byBwYXJzZSB0aGUgbmNyNTNjNDAwYT0gY29tbWFuZAogICoJbGluZS4KQEAgLTI0Niw3ICsyNDUsNyBAQAogewogCWludCBpbnRzWzEwXTsKIAotCWdldF9vcHRpb25zKHN0ciwgc2l6ZW9mKGludHMpIC8gc2l6ZW9mKGludCksIGludHMpOworCWdldF9vcHRpb25zKHN0ciwgQVJSQVlfU0laRShpbnRzKSwgaW50cyk7CiAJaW50ZXJuYWxfc2V0dXAoQk9BUkRfTkNSNTNDNDAwQSwgc3RyLCBpbnRzKTsKIAlyZXR1cm4gMTsKIH0KQEAgLTI1NCw3ICsyNTMsNyBAQAogLyoqCiAgKiAJZG9fRFRDMzE4MUVfc2V0dXAJLQlzZXQgdXAgZW50cnkgcG9pbnQKICAqCUBzdHI6IHVudXNlZAotICoJQGludHM6IGludGVnZXIgcGFyYW1ldGVycyBmcm9tIGtlcm5lbCBzZXR1cCBjb2RlIAorICoJQGludHM6IGludGVnZXIgcGFyYW1ldGVycyBmcm9tIGtlcm5lbCBzZXR1cCBjb2RlCiAgKgogICoJU2V0dXAgZnVuY3Rpb24gaW52b2tlZCBhdCBib290IHRvIHBhcnNlIHRoZSBkdGMzMTgxZT0gY29tbWFuZAogICoJbGluZS4KQEAgLTI2NCw3ICsyNjMsNyBAQAogewogCWludCBpbnRzWzEwXTsKIAotCWdldF9vcHRpb25zKHN0ciwgc2l6ZW9mKGludHMpIC8gc2l6ZW9mKGludCksIGludHMpOworCWdldF9vcHRpb25zKHN0ciwgQVJSQVlfU0laRShpbnRzKSwgaW50cyk7CiAJaW50ZXJuYWxfc2V0dXAoQk9BUkRfRFRDMzE4MUUsIHN0ciwgaW50cyk7CiAJcmV0dXJuIDE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ2R0aC5jIGIvZHJpdmVycy9zY3NpL2dkdGguYwppbmRleCBkNTc0MGJiLi43NjA3MWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZ2R0aC5jCisrKyBiL2RyaXZlcnMvc2NzaS9nZHRoLmMKQEAgLTQsOSArNCw5IEBACiAgKiBJbnRlbCBDb3Jwb3JhdGlvbjogIFN0b3JhZ2UgUkFJRCBDb250cm9sbGVycyAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBnZHRoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMDQgSUNQIHZvcnRleCBHbWJILCBBY2hpbSBMZXVibmVyICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMDYgSUNQIHZvcnRleCBHbWJILCBBY2hpbSBMZXVibmVyICAgICAgICAgICAgICAgICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDItMDQgSW50ZWwgQ29ycG9yYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMDQgQWRhcHRlYyBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMDYgQWRhcHRlYyBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiA8YWNoaW1fbGV1Ym5lckBhZGFwdGVjLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAgKiBBZGRpdGlvbnMvRml4ZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCkBAIC0yNyw5ICsyNywxNCBAQAogICogYWxvbmcgd2l0aCB0aGlzIGtlcm5lbDsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICAgICAgICAgKgogICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICogTGludXgga2VybmVsIDIuMi54LCAyLjQueCwgMi42Lnggc3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogTGludXgga2VybmVsIDIuNC54LCAyLjYueCBzdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICogJExvZzogZ2R0aC5jLHYgJAorICogUmV2aXNpb24gMS43NCAgMjAwNi8wNC8xMCAxMzo0NDo0NyAgYWNoaW0KKyAqIENvbW11bml0eSBjaGFuZ2VzIGZvciAyLjYueAorICogS2VybmVsIDIuMi54IG5vIGxvbmdlciBzdXBwb3J0ZWQKKyAqIHNjc2lfcmVxdWVzdCBpbnRlcmZhY2UgcmVtb3ZlZCwgdGhhbmtzIHRvIENocmlzdG9waCBIZWxsd2lnCisgKgogICogUmV2aXNpb24gMS43MyAgMjAwNC8wMy8zMSAxMzozMzowMyAgYWNoaW0KICAqIFNwZWNpYWwgY29tbWFuZCAweGZkIGltcGxlbWVudGVkIHRvIGRldGVjdCA2NC1iaXQgRE1BIHN1cHBvcnQKICAqCkBAIC05NCw3ICs5OSw3IEBACiAgKiBCdWdmaXggZnJlZV9pcnEoKQogICoKICAqIFJldmlzaW9uIDEuNTYgIDIwMDEvMDgvMDkgMTE6MTk6MzkgIGFjaGltCi0gKiBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGNoYW5nZXMKKyAqIFNjc2lfSG9zdF9UZW1wbGF0ZSBjaGFuZ2VzCiAgKgogICogUmV2aXNpb24gMS41NSAgMjAwMS8wOC8wOSAxMDoxMToyOCAgYWNoaW0KICAqIENvbW1hbmQgSE9TVF9VTkZSRUVaRV9JTyBiZWZvcmUgY2FjaGUgc2VydmljZSBpbml0LgpAQCAtMzg4LDcgKzM5MywxMyBAQAogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KICNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDYpCiAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNlbHNlCisjZGVmaW5lIERNQV8zMkJJVF9NQVNLCTB4MDAwMDAwMDBmZmZmZmZmZlVMTAorI2RlZmluZSBETUFfNjRCSVRfTUFTSwkweGZmZmZmZmZmZmZmZmZmZmZVTEwKKyNlbmRpZgorCiAjaWZkZWYgR0RUSF9SVEMKICNpbmNsdWRlIDxsaW51eC9tYzE0NjgxOHJ0Yy5oPgogI2VuZGlmCkBAIC00MDgsOCArNDE5LDggQEAKIAogI2luY2x1ZGUgInNjc2kuaCIKICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgotI2luY2x1ZGUgImdkdGguaCIKICNpbmNsdWRlICJnZHRoX2tjb21wYXQuaCIKKyNpbmNsdWRlICJnZHRoLmgiCiAKIHN0YXRpYyB2b2lkIGdkdGhfZGVsYXkoaW50IG1pbGxpc2Vjb25kcyk7CiBzdGF0aWMgdm9pZCBnZHRoX2V2YWxfbWFwcGluZyh1bG9uZzMyIHNpemUsIHVsb25nMzIgKmN5bHMsIGludCAqaGVhZHMsIGludCAqc2Vjcyk7CkBAIC00NjQsNiArNDc1LDggQEAKIAogc3RhdGljIHZvaWQgZ2R0aF9mbHVzaChpbnQgaGFudW0pOwogc3RhdGljIGludCBnZHRoX2hhbHQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdWxvbmcgZXZlbnQsIHZvaWQgKmJ1Zik7CitzdGF0aWMgaW50IGdkdGhfcXVldWVjb21tYW5kKFNjc2lfQ21uZCAqc2NwLHZvaWQgKCpkb25lKShTY3NpX0NtbmQgKikpOworc3RhdGljIHZvaWQgZ2R0aF9zY3NpX2RvbmUoc3RydWN0IHNjc2lfY21uZCAqc2NwKTsKIAogI2lmZGVmIERFQlVHX0dEVEgKIHN0YXRpYyB1bmNoYXIgICBEZWJ1Z1N0YXRlID0gREVCVUdfR0RUSDsKQEAgLTU1Niw4ICs1NjksOCBAQAogI2VuZGlmCiAKICNkZWZpbmUgUFRSMlVTSE9SVChhKSAgICh1c2hvcnQpKHVsb25nKShhKQotI2RlZmluZSBHRFRPRkZTT0YoYSxiKSAgKHNpemVfdCkmKCgoYSopMCktPmIpICAgCi0jZGVmaW5lIElOREVYX09LKGksdCkgICAoKGkpPHNpemVvZih0KS9zaXplb2YoKHQpWzBdKSkKKyNkZWZpbmUgR0RUT0ZGU09GKGEsYikgIChzaXplX3QpJigoKGEqKTApLT5iKQorI2RlZmluZSBJTkRFWF9PSyhpLHQpICAgKChpKTxBUlJBWV9TSVpFKHQpKQogCiAjZGVmaW5lIE5VTURBVEEoYSkgICAgICAoIChnZHRoX251bV9zdHIgICopKChhKS0+aG9zdGRhdGEpKQogI2RlZmluZSBIQURBVEEoYSkgICAgICAgKCYoKGdkdGhfZXh0X3N0ciAqKSgoYSktPmhvc3RkYXRhKSktPmhhZXh0KQpAQCAtNjQzLDYgKzY1Niw3IEBACiBzdGF0aWMgaW50IGZvcmNlX2RtYTMyID0gMDsKIAogLyogcGFyYW1ldGVycyBmb3IgbW9kcHJvYmUvaW5zbW9kICovCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxMSkKIG1vZHVsZV9wYXJhbV9hcnJheShpcnEsIGludCwgTlVMTCwgMCk7CiBtb2R1bGVfcGFyYW0oZGlzYWJsZSwgaW50LCAwKTsKIG1vZHVsZV9wYXJhbShyZXNlcnZlX21vZGUsIGludCwgMCk7CkBAIC02NTUsNiArNjY5LDIwIEBACiBtb2R1bGVfcGFyYW0oc2hhcmVkX2FjY2VzcywgaW50LCAwKTsKIG1vZHVsZV9wYXJhbShwcm9iZV9laXNhX2lzYSwgaW50LCAwKTsKIG1vZHVsZV9wYXJhbShmb3JjZV9kbWEzMiwgaW50LCAwKTsKKyNlbHNlCitNT0RVTEVfUEFSTShpcnEsICJpIik7CitNT0RVTEVfUEFSTShkaXNhYmxlLCAiaSIpOworTU9EVUxFX1BBUk0ocmVzZXJ2ZV9tb2RlLCAiaSIpOworTU9EVUxFX1BBUk0ocmVzZXJ2ZV9saXN0LCAiNC0iIF9fTU9EVUxFX1NUUklORyhNQVhfUkVTX0FSR1MpICJpIik7CitNT0RVTEVfUEFSTShyZXZlcnNlX3NjYW4sICJpIik7CitNT0RVTEVfUEFSTShoZHJfY2hhbm5lbCwgImkiKTsKK01PRFVMRV9QQVJNKG1heF9pZHMsICJpIik7CitNT0RVTEVfUEFSTShyZXNjYW4sICJpIik7CitNT0RVTEVfUEFSTSh2aXJ0X2N0ciwgImkiKTsKK01PRFVMRV9QQVJNKHNoYXJlZF9hY2Nlc3MsICJpIik7CitNT0RVTEVfUEFSTShwcm9iZV9laXNhX2lzYSwgImkiKTsKK01PRFVMRV9QQVJNKGZvcmNlX2RtYTMyLCAiaSIpOworI2VuZGlmCiBNT0RVTEVfQVVUSE9SKCJBY2hpbSBMZXVibmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiAKQEAgLTY4Myw2ICs3MTEsOTEgQEAKICAgICB9CiB9CiAKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCitzdGF0aWMgdm9pZCBnZHRoX3Njc2lfZG9uZShzdHJ1Y3Qgc2NzaV9jbW5kICpzY3ApCit7CisgICAgVFJBQ0UyKCgiZ2R0aF9zY3NpX2RvbmUoKVxuIikpOworCisgICAgaWYgKHNjcC0+cmVxdWVzdCkKKyAgICAgICAgY29tcGxldGUoKHN0cnVjdCBjb21wbGV0aW9uICopc2NwLT5yZXF1ZXN0KTsKK30KKworaW50IF9fZ2R0aF9leGVjdXRlKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIGNoYXIgKmNtbmQsCisgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIHUzMiAqaW5mbykKK3sKKyAgICBTY3NpX0NtbmQgKnNjcDsKKyAgICBERUNMQVJFX0NPTVBMRVRJT04od2FpdCk7CisgICAgaW50IHJ2YWw7CisKKyAgICBzY3AgPSBrbWFsbG9jKHNpemVvZigqc2NwKSwgR0ZQX0tFUk5FTCk7CisgICAgaWYgKCFzY3ApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIG1lbXNldChzY3AsIDAsIHNpemVvZigqc2NwKSk7CisgICAgc2NwLT5kZXZpY2UgPSBzZGV2OworICAgIC8qIHVzZSByZXF1ZXN0IGZpZWxkIHRvIHNhdmUgdGhlIHB0ci4gdG8gY29tcGxldGlvbiBzdHJ1Y3QuICovCisgICAgc2NwLT5yZXF1ZXN0ID0gKHN0cnVjdCByZXF1ZXN0ICopJndhaXQ7CisgICAgc2NwLT50aW1lb3V0X3Blcl9jb21tYW5kID0gdGltZW91dCpIWjsKKyAgICBzY3AtPnJlcXVlc3RfYnVmZmVyID0gZ2R0Y21kOworICAgIHNjcC0+Y21kX2xlbiA9IDEyOworICAgIG1lbWNweShzY3AtPmNtbmQsIGNtbmQsIDEyKTsKKyAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gSU9DVExfUFJJOyAgIC8qIHByaW9yaXR5ICovCisgICAgc2NwLT5kb25lID0gZ2R0aF9zY3NpX2RvbmU7IC8qIHNvbWUgZm4uIHRlc3QgdGhpcyAqLworICAgIGdkdGhfcXVldWVjb21tYW5kKHNjcCwgZ2R0aF9zY3NpX2RvbmUpOworICAgIHdhaXRfZm9yX2NvbXBsZXRpb24oJndhaXQpOworCisgICAgcnZhbCA9IHNjcC0+U0NwLlN0YXR1czsKKyAgICBpZiAoaW5mbykKKyAgICAgICAgKmluZm8gPSBzY3AtPlNDcC5NZXNzYWdlOworICAgIGtmcmVlKHNjcCk7CisgICAgcmV0dXJuIHJ2YWw7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgZ2R0aF9zY3NpX2RvbmUoU2NzaV9DbW5kICpzY3ApCit7CisgICAgVFJBQ0UyKCgiZ2R0aF9zY3NpX2RvbmUoKVxuIikpOworCisgICAgc2NwLT5yZXF1ZXN0LnJxX3N0YXR1cyA9IFJRX1NDU0lfRE9ORTsKKyAgICBpZiAoc2NwLT5yZXF1ZXN0LndhaXRpbmcpCisgICAgICAgIGNvbXBsZXRlKHNjcC0+cmVxdWVzdC53YWl0aW5nKTsKK30KKworaW50IF9fZ2R0aF9leGVjdXRlKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIGNoYXIgKmNtbmQsCisgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIHUzMiAqaW5mbykKK3sKKyAgICBTY3NpX0NtbmQgKnNjcCA9IHNjc2lfYWxsb2NhdGVfZGV2aWNlKHNkZXYsIDEsIEZBTFNFKTsKKyAgICB1bnNpZ25lZCBidWZmbGVuID0gZ2R0Y21kID8gc2l6ZW9mKGdkdGhfY21kX3N0cikgOiAwOworICAgIERFQ0xBUkVfQ09NUExFVElPTih3YWl0KTsKKyAgICBpbnQgcnZhbDsKKworICAgIGlmICghc2NwKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICBzY3AtPmNtZF9sZW4gPSAxMjsKKyAgICBzY3AtPnVzZV9zZyA9IDA7CisgICAgc2NwLT5TQ3AudGhpc19yZXNpZHVhbCA9IElPQ1RMX1BSSTsgICAvKiBwcmlvcml0eSAqLworICAgIHNjcC0+cmVxdWVzdC5ycV9zdGF0dXMgPSBSUV9TQ1NJX0JVU1k7CisgICAgc2NwLT5yZXF1ZXN0LndhaXRpbmcgPSAmd2FpdDsKKyAgICBzY3NpX2RvX2NtZChzY3AsIGNtbmQsIGdkdGNtZCwgYnVmZmxlbiwgZ2R0aF9zY3NpX2RvbmUsIHRpbWVvdXQqSFosIDEpOworICAgIHdhaXRfZm9yX2NvbXBsZXRpb24oJndhaXQpOworCisgICAgcnZhbCA9IHNjcC0+U0NwLlN0YXR1czsKKyAgICBpZiAoaW5mbykKKyAgICAgICAgKmluZm8gPSBzY3AtPlNDcC5NZXNzYWdlOworCisgICAgc2NzaV9yZWxlYXNlX2NvbW1hbmQoc2NwKTsKKyAgICByZXR1cm4gcnZhbDsKK30KKyNlbmRpZgorCitpbnQgZ2R0aF9leGVjdXRlKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCBnZHRoX2NtZF9zdHIgKmdkdGNtZCwgY2hhciAqY21uZCwKKyAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIHUzMiAqaW5mbykKK3sKKyAgICBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYgPSBzY3NpX2dldF9ob3N0X2RldihzaG9zdCk7CisgICAgaW50IHJ2YWwgPSBfX2dkdGhfZXhlY3V0ZShzZGV2LCBnZHRjbWQsIGNtbmQsIHRpbWVvdXQsIGluZm8pOworCisgICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOworICAgIHJldHVybiBydmFsOworfQorCiBzdGF0aWMgdm9pZCBnZHRoX2V2YWxfbWFwcGluZyh1bG9uZzMyIHNpemUsIHVsb25nMzIgKmN5bHMsIGludCAqaGVhZHMsIGludCAqc2VjcykKIHsKICAgICAqY3lscyA9IHNpemUgL0hFQURTL1NFQ1M7CkBAIC03NzMsNyArODg2LDcgQEAKIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLGdkdGh0YWJsZSk7CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBnZHRoX3NlYXJjaF9kZXYoZ2R0aF9wY2lfc3RyICpwY2lzdHIsIHVzaG9ydCAqY250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaG9ydCB2ZW5kb3IsIHVzaG9ydCBkZXZpY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaG9ydCB2ZW5kb3IsIHVzaG9ydCBkZXZpY2UpCiB7CiAgICAgdWxvbmcgYmFzZTAsIGJhc2UxLCBiYXNlMjsKICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldjsKQEAgLTIyNDgsMTQgKzIzNjEsMTYgQEAKICAgICBoYSA9IEhBREFUQShnZHRoX2N0cl90YWJbaGFudW1dKTsKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CiAKLSAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gKGludClwcmlvcml0eTsKLSAgICBiID0gdmlydF9jdHIgPyBOVU1EQVRBKHNjcC0+ZGV2aWNlLT5ob3N0KS0+YnVzbnVtIDogc2NwLT5kZXZpY2UtPmNoYW5uZWw7Ci0gICAgdCA9IHNjcC0+ZGV2aWNlLT5pZDsKLSAgICBpZiAocHJpb3JpdHkgPj0gREVGQVVMVF9QUkkpIHsKLSAgICAgICAgaWYgKChiICE9IGhhLT52aXJ0X2J1cyAmJiBoYS0+cmF3W0JVU19MMlAoaGEsYildLmxvY2spIHx8Ci0gICAgICAgICAgICAoYiA9PSBoYS0+dmlydF9idXMgJiYgdCA8IE1BWF9IRFJJVkVTICYmIGhhLT5oZHJbdF0ubG9jaykpIHsKLSAgICAgICAgICAgIFRSQUNFMigoImdkdGhfcHV0cSgpOiBsb2NrZWQgSU8gLT4gdXBkYXRlX3RpbWVvdXQoKVxuIikpOwotICAgICAgICAgICAgc2NwLT5TQ3AuYnVmZmVyc19yZXNpZHVhbCA9IGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgMCk7CisgICAgaWYgKHNjcC0+ZG9uZSAhPSBnZHRoX3Njc2lfZG9uZSkgeworICAgICAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gKGludClwcmlvcml0eTsKKyAgICAgICAgYiA9IHZpcnRfY3RyID8gTlVNREFUQShzY3AtPmRldmljZS0+aG9zdCktPmJ1c251bTpzY3AtPmRldmljZS0+Y2hhbm5lbDsKKyAgICAgICAgdCA9IHNjcC0+ZGV2aWNlLT5pZDsKKyAgICAgICAgaWYgKHByaW9yaXR5ID49IERFRkFVTFRfUFJJKSB7CisgICAgICAgICAgICBpZiAoKGIgIT0gaGEtPnZpcnRfYnVzICYmIGhhLT5yYXdbQlVTX0wyUChoYSxiKV0ubG9jaykgfHwKKyAgICAgICAgICAgICAgICAoYj09aGEtPnZpcnRfYnVzICYmIHQ8TUFYX0hEUklWRVMgJiYgaGEtPmhkclt0XS5sb2NrKSkgeworICAgICAgICAgICAgICAgIFRSQUNFMigoImdkdGhfcHV0cSgpOiBsb2NrZWQgSU8gLT51cGRhdGVfdGltZW91dCgpXG4iKSk7CisgICAgICAgICAgICAgICAgc2NwLT5TQ3AuYnVmZmVyc19yZXNpZHVhbCA9IGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzMDksMTQgKzI0MjQsMTggQEAKICAgICBmb3IgKG5zY3AgPSBwc2NwID0gaGEtPnJlcV9maXJzdDsgbnNjcDsgbnNjcCA9IChTY3NpX0NtbmQgKiluc2NwLT5TQ3AucHRyKSB7CiAgICAgICAgIGlmIChuc2NwICE9IHBzY3AgJiYgbnNjcCAhPSAoU2NzaV9DbW5kICopcHNjcC0+U0NwLnB0cikKICAgICAgICAgICAgIHBzY3AgPSAoU2NzaV9DbW5kICopcHNjcC0+U0NwLnB0cjsKLSAgICAgICAgYiA9IHZpcnRfY3RyID8gTlVNREFUQShuc2NwLT5kZXZpY2UtPmhvc3QpLT5idXNudW0gOiBuc2NwLT5kZXZpY2UtPmNoYW5uZWw7Ci0gICAgICAgIHQgPSBuc2NwLT5kZXZpY2UtPmlkOwotICAgICAgICBsID0gbnNjcC0+ZGV2aWNlLT5sdW47Ci0gICAgICAgIGlmIChuc2NwLT5TQ3AudGhpc19yZXNpZHVhbCA+PSBERUZBVUxUX1BSSSkgewotICAgICAgICAgICAgaWYgKChiICE9IGhhLT52aXJ0X2J1cyAmJiBoYS0+cmF3W0JVU19MMlAoaGEsYildLmxvY2spIHx8Ci0gICAgICAgICAgICAgICAgKGIgPT0gaGEtPnZpcnRfYnVzICYmIHQgPCBNQVhfSERSSVZFUyAmJiBoYS0+aGRyW3RdLmxvY2spKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAobnNjcC0+ZG9uZSAhPSBnZHRoX3Njc2lfZG9uZSkgeworICAgICAgICAgICAgYiA9IHZpcnRfY3RyID8KKyAgICAgICAgICAgICAgICBOVU1EQVRBKG5zY3AtPmRldmljZS0+aG9zdCktPmJ1c251bSA6IG5zY3AtPmRldmljZS0+Y2hhbm5lbDsKKyAgICAgICAgICAgIHQgPSBuc2NwLT5kZXZpY2UtPmlkOworICAgICAgICAgICAgbCA9IG5zY3AtPmRldmljZS0+bHVuOworICAgICAgICAgICAgaWYgKG5zY3AtPlNDcC50aGlzX3Jlc2lkdWFsID49IERFRkFVTFRfUFJJKSB7CisgICAgICAgICAgICAgICAgaWYgKChiICE9IGhhLT52aXJ0X2J1cyAmJiBoYS0+cmF3W0JVU19MMlAoaGEsYildLmxvY2spIHx8CisgICAgICAgICAgICAgICAgICAgIChiID09IGhhLT52aXJ0X2J1cyAmJiB0IDwgTUFYX0hEUklWRVMgJiYgaGEtPmhkclt0XS5sb2NrKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYiA9IHQgPSBsID0gMDsKIAogICAgICAgICBpZiAoZmlyc3R0aW1lKSB7CiAgICAgICAgICAgICBpZiAoZ2R0aF90ZXN0X2J1c3koaGFudW0pKSB7ICAgICAgICAvKiBjb250cm9sbGVyIGJ1c3kgPyAqLwpAQCAtMjMzMSw3ICsyNDUwLDcgQEAKICAgICAgICAgICAgIGZpcnN0dGltZSA9IEZBTFNFOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5zY3AtPmRvbmUgIT0gZ2R0aF9zY3NpX2RvbmUgfHwgbnNjcC0+Y21uZFswXSAhPSAweGZmKSB7ICAgICAgICAKKyAgICAgICAgaWYgKG5zY3AtPmRvbmUgIT0gZ2R0aF9zY3NpX2RvbmUpIHsKICAgICAgICAgaWYgKG5zY3AtPlNDcC5waGFzZSA9PSAtMSkgewogICAgICAgICAgICAgbnNjcC0+U0NwLnBoYXNlID0gQ0FDSEVTRVJWSUNFOyAgICAgICAgICAgLyogZGVmYXVsdDogY2FjaGUgc3ZjLiAqLyAKICAgICAgICAgICAgIGlmIChuc2NwLT5jbW5kWzBdID09IFRFU1RfVU5JVF9SRUFEWSkgewpAQCAtMjM5NCw3ICsyNTEzLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5zY3AtPnNjc2lfZG9uZShuc2NwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChuc2NwLT5kb25lID09IGdkdGhfc2NzaV9kb25lICYmIG5zY3AtPmNtbmRbMF0gPT0gMHhmZikgeworICAgICAgICB9IGVsc2UgaWYgKG5zY3AtPmRvbmUgPT0gZ2R0aF9zY3NpX2RvbmUpIHsKICAgICAgICAgICAgIGlmICghKGNtZF9pbmRleD1nZHRoX3NwZWNpYWxfY21kKGhhbnVtLG5zY3ApKSkKICAgICAgICAgICAgICAgICB0aGlzX2NtZCA9IEZBTFNFOwogICAgICAgICAgICAgbmV4dF9jbWQgPSBGQUxTRTsKQEAgLTI1NDIsMTMgKzI2NjEsMTMgQEAKICAgICBnZHRoX2hhX3N0ciAqaGE7CiAgICAgY2hhciAqYWRkcmVzczsKIAotICAgIGNwY291bnQgPSBjb3VudDw9KHVzaG9ydClzY3AtPmJ1ZmZsZW4gPyBjb3VudDoodXNob3J0KXNjcC0+YnVmZmxlbjsKKyAgICBjcGNvdW50ID0gY291bnQ8PSh1c2hvcnQpc2NwLT5yZXF1ZXN0X2J1ZmZsZW4gPyBjb3VudDoodXNob3J0KXNjcC0+cmVxdWVzdF9idWZmbGVuOwogICAgIGhhID0gSEFEQVRBKGdkdGhfY3RyX3RhYltoYW51bV0pOwogCiAgICAgaWYgKHNjcC0+dXNlX3NnKSB7CiAgICAgICAgIHNsID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNjcC0+cmVxdWVzdF9idWZmZXI7CiAgICAgICAgIGZvciAoaT0wLGNwc3VtPTA7IGk8c2NwLT51c2Vfc2c7ICsraSwrK3NsKSB7Ci0JICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgY3Bub3cgPSAodXNob3J0KXNsLT5sZW5ndGg7CiAgICAgICAgICAgICBUUkFDRSgoImNvcHlfaW50ZXJuYWwoKSBub3cgJWQgc3VtICVkIGNvdW50ICVkICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjcG5vdyxjcHN1bSxjcGNvdW50LCh1c2hvcnQpc2NwLT5idWZmbGVuKSk7CkBAIC0yNTYwLDEyICsyNjc5LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGhhbnVtKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0JICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKLQkgICAgYWRkcmVzcyA9IGttYXBfYXRvbWljKHNsLT5wYWdlLCBLTV9CSU9fU1JDX0lSUSkgKyBzbC0+b2Zmc2V0OworICAgICAgICAgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKKyAgICAgICAgICAgIGFkZHJlc3MgPSBrbWFwX2F0b21pYyhzbC0+cGFnZSwgS01fQklPX1NSQ19JUlEpICsgc2wtPm9mZnNldDsKICAgICAgICAgICAgIG1lbWNweShhZGRyZXNzLGJ1ZmZlcixjcG5vdyk7Ci0JICAgIGZsdXNoX2RjYWNoZV9wYWdlKHNsLT5wYWdlKTsKLQkgICAga3VubWFwX2F0b21pYyhhZGRyZXNzLCBLTV9CSU9fU1JDX0lSUSk7Ci0JICAgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKyAgICAgICAgICAgIGZsdXNoX2RjYWNoZV9wYWdlKHNsLT5wYWdlKTsKKyAgICAgICAgICAgIGt1bm1hcF9hdG9taWMoYWRkcmVzcywgS01fQklPX1NSQ19JUlEpOworI2Vsc2UKKyAgICAgICAgICAgIGFkZHJlc3MgPSBrbWFwX2F0b21pYyhzbC0+cGFnZSwgS01fQkhfSVJRKSArIHNsLT5vZmZzZXQ7CisgICAgICAgICAgICBtZW1jcHkoYWRkcmVzcyxidWZmZXIsY3Bub3cpOworICAgICAgICAgICAgZmx1c2hfZGNhY2hlX3BhZ2Uoc2wtPnBhZ2UpOworICAgICAgICAgICAga3VubWFwX2F0b21pYyhhZGRyZXNzLCBLTV9CSF9JUlEpOworI2VuZGlmCisgICAgICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAgICAgICAgICAgICBpZiAoY3BzdW0gPT0gY3Bjb3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGJ1ZmZlciArPSBjcG5vdzsKQEAgLTI5NDYsOSArMzA3Miw5IEBACiAgICAgICAgIG9mZnNldCA9ICh1bG9uZylzY3AtPnNlbnNlX2J1ZmZlciAmIH5QQUdFX01BU0s7CiAgICAgICAgIHNlbnNlX3BhZGRyID0gcGNpX21hcF9wYWdlKGhhLT5wZGV2LHBhZ2Usb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNixQQ0lfRE1BX0ZST01ERVZJQ0UpOwotICAgICAgICBzY3AtPlNDcC5idWZmZXIgPSAoc3RydWN0IHNjYXR0ZXJsaXN0ICopKCh1bG9uZzMyKXNlbnNlX3BhZGRyKTsKKyAgICAgICAgKih1bG9uZzMyICopJnNjcC0+U0NwLmJ1ZmZlciA9ICh1bG9uZzMyKXNlbnNlX3BhZGRyOwogICAgICAgICAvKiBoaWdoIHBhcnQsIGlmIDY0Yml0ICovCi0gICAgICAgIHNjcC0+aG9zdF9zY3JpYmJsZSA9IChjaGFyICopKHVsb25nMzIpKCh1bG9uZzY0KXNlbnNlX3BhZGRyID4+IDMyKTsKKyAgICAgICAgKih1bG9uZzMyICopJnNjcC0+aG9zdF9zY3JpYmJsZSA9ICh1bG9uZzMyKSgodWxvbmc2NClzZW5zZV9wYWRkciA+PiAzMik7CiAgICAgICAgIGNtZHAtPk9wQ29kZSAgICAgICAgICAgPSBHRFRfV1JJVEU7ICAgICAgICAgICAgIC8qIGFsd2F5cyAqLwogICAgICAgICBjbWRwLT5Cb2FyZE5vZGUgICAgICAgID0gTE9DQUxCT0FSRDsKICAgICAgICAgaWYgKG1vZGU2NCkgeyAKQEAgLTMwMjIsNyArMzE0OCw3IEBACiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKHNjcC0+cmVxdWVzdF9idWZmbGVuKSB7CiAgICAgICAgICAgICBzY3AtPlNDcC5TdGF0dXMgPSBHRFRIX01BUF9TSU5HTEU7CiAgICAgICAgICAgICBzY3AtPlNDcC5NZXNzYWdlID0gUENJX0RNQV9CSURJUkVDVElPTkFMOyAKICAgICAgICAgICAgIHBhZ2UgPSB2aXJ0X3RvX3BhZ2Uoc2NwLT5yZXF1ZXN0X2J1ZmZlcik7CkBAIC0zMzA5LDcgKzM0MzUsNyBAQAogICAgIH0KIAogICAgIGlmICghZ2R0aF9wb2xsaW5nKQotCXNwaW5fbG9ja19pcnFzYXZlKCZoYTItPnNtcF9sb2NrLCBmbGFncyk7CisgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZoYTItPnNtcF9sb2NrLCBmbGFncyk7CiAgICAgd2FpdF9pbmRleCA9IDA7CiAKICAgICAvKiBzZWFyY2ggY29udHJvbGxlciAqLwpAQCAtMzY0Miw5ICszNzY4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3AtPnJlcXVlc3RfYnVmZmxlbixzY3AtPlNDcC5NZXNzYWdlKTsKICAgICAgICAgaWYgKHNjcC0+U0NwLmJ1ZmZlcikgewogICAgICAgICAgICAgZG1hX2FkZHJfdCBhZGRyOwotICAgICAgICAgICAgYWRkciA9IChkbWFfYWRkcl90KSh1bG9uZzMyKXNjcC0+U0NwLmJ1ZmZlcjsKKyAgICAgICAgICAgIGFkZHIgPSAoZG1hX2FkZHJfdCkqKHVsb25nMzIgKikmc2NwLT5TQ3AuYnVmZmVyOwogICAgICAgICAgICAgaWYgKHNjcC0+aG9zdF9zY3JpYmJsZSkKLSAgICAgICAgICAgICAgICBhZGRyICs9IChkbWFfYWRkcl90KSgodWxvbmc2NCkodWxvbmczMilzY3AtPmhvc3Rfc2NyaWJibGUgPDwgMzIpOyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZHIgKz0gKGRtYV9hZGRyX3QpCisgICAgICAgICAgICAgICAgICAgICgodWxvbmc2NCkoKih1bG9uZzMyICopJnNjcC0+aG9zdF9zY3JpYmJsZSkgPDwgMzIpOwogICAgICAgICAgICAgcGNpX3VubWFwX3BhZ2UoaGEtPnBkZXYsYWRkciwxNixQQ0lfRE1BX0ZST01ERVZJQ0UpOwogICAgICAgICB9CiAKQEAgLTQxNTQsNyArNDI4MSwxMSBAQAogICAgIHJldHVybiAxOwogfQogCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQogc3RhdGljIGludCBfX2luaXQgZ2R0aF9kZXRlY3Qoc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSAqc2h0cCkKKyNlbHNlCitzdGF0aWMgaW50IF9faW5pdCBnZHRoX2RldGVjdChTY3NpX0hvc3RfVGVtcGxhdGUgKnNodHApCisjZW5kaWYKIHsKICAgICBzdHJ1Y3QgU2NzaV9Ib3N0ICpzaHA7CiAgICAgZ2R0aF9wY2lfc3RyIHBjaXN0cltNQVhIQV07CkBAIC00MTg4LDcgKzQzMTksNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBwcmludGsoIkdEVC1IQTogU3RvcmFnZSBSQUlEIENvbnRyb2xsZXIgRHJpdmVyLiBWZXJzaW9uOiAlcyBcbiIsR0RUSF9WRVJTSU9OX1NUUik7CisgICAgcHJpbnRrKCJHRFQtSEE6IFN0b3JhZ2UgUkFJRCBDb250cm9sbGVyIERyaXZlci4gVmVyc2lvbjogJXNcbiIsR0RUSF9WRVJTSU9OX1NUUik7CiAgICAgLyogaW5pdGlhbGl6YXRpb25zICovCiAgICAgZ2R0aF9wb2xsaW5nID0gVFJVRTsgYiA9IDA7CiAgICAgZ2R0aF9jbGVhcl9ldmVudHMoKTsKQEAgLTQ3NTEsNyArNDg4Miw3IEBACiAgICAgICAgIGdkdGhfaW50ZXJuYWxfY21kKGhhbnVtLCBTQ1NJUkFXU0VSVklDRSwgR0RUX1JFU0VUX0JVUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVTX0wyUChoYSxiKSwgMCwgMCk7CiAgICAgICAgIGdkdGhfcG9sbGluZyA9IEZBTFNFOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOworICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKICAgICB9CiAgICAgcmV0dXJuIFNVQ0NFU1M7CiB9CkBAIC00ODE5LDcgKzQ5NTAsOSBAQAogICAgIHByaW9yaXR5ID0gREVGQVVMVF9QUkk7CiAgICAgaWYgKHNjcC0+ZG9uZSA9PSBnZHRoX3Njc2lfZG9uZSkKICAgICAgICAgcHJpb3JpdHkgPSBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsOwotICAgIGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgc2NwLT50aW1lb3V0X3Blcl9jb21tYW5kICogNik7CisgICAgZWxzZQorICAgICAgICBnZHRoX3VwZGF0ZV90aW1lb3V0KGhhbnVtLCBzY3AsIHNjcC0+dGltZW91dF9wZXJfY29tbWFuZCAqIDYpOworCiAgICAgZ2R0aF9wdXRxKCBoYW51bSwgc2NwLCBwcmlvcml0eSApOwogICAgIGdkdGhfbmV4dCggaGFudW0gKTsKICAgICByZXR1cm4gMDsKQEAgLTQ5MjIsMTEgKzUwNTUsNyBAQAogICAgIGdkdGhfY21kX3N0ciBjbWQ7CiAgICAgaW50IGhhbnVtOwogICAgIGdkdGhfaGFfc3RyICpoYTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgU2NzaV9SZXF1ZXN0ICpzcnA7Ci0jZWxzZQotICAgIFNjc2lfQ21uZCAqc2NwOwotI2VuZGlmCisgICAgaW50IHJ2YWw7CiAKICAgICBpZiAoY29weV9mcm9tX3VzZXIoJnJlcywgYXJnLCBzaXplb2YoZ2R0aF9pb2N0bF9yZXNldCkpIHx8CiAgICAgICAgIHJlcy5pb25vZGUgPj0gZ2R0aF9jdHJfY291bnQgfHwgcmVzLm51bWJlciA+PSBNQVhfSERSSVZFUykKQEAgLTQ5NDMsMjUgKzUwNzIsMTEgQEAKICAgICAgICAgY21kLnUuY2FjaGU2NC5EZXZpY2VObyA9IHJlcy5udW1iZXI7CiAgICAgZWxzZQogICAgICAgICBjbWQudS5jYWNoZS5EZXZpY2VObyA9IHJlcy5udW1iZXI7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNycCAgPSBzY3NpX2FsbG9jYXRlX3JlcXVlc3QoaGEtPnNkZXYsIEdGUF9LRVJORUwpOwotICAgIGlmICghc3JwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBzcnAtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzcnAtPnNyX3VzZV9zZyA9IDA7Ci0gICAgZ2R0aF9kb19yZXEoc3JwLCAmY21kLCBjbW5kLCAzMCk7Ci0gICAgcmVzLnN0YXR1cyA9ICh1c2hvcnQpc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHNycCk7Ci0jZWxzZQotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShoYS0+c2RldiwgMSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBzY3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0gICAgZ2R0aF9kb19jbWQoc2NwLCAmY21kLCBjbW5kLCAzMCk7Ci0gICAgcmVzLnN0YXR1cyA9ICh1c2hvcnQpc2NwLT5TQ3AuU3RhdHVzOwotICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNjcCk7Ci0jZW5kaWYKKworICAgIHJ2YWwgPSBfX2dkdGhfZXhlY3V0ZShoYS0+c2RldiwgJmNtZCwgY21uZCwgMzAsIE5VTEwpOworICAgIGlmIChydmFsIDwgMCkKKyAgICAgICAgcmV0dXJuIHJ2YWw7CisgICAgcmVzLnN0YXR1cyA9IHJ2YWw7CiAKICAgICBpZiAoY29weV90b191c2VyKGFyZywgJnJlcywgc2l6ZW9mKGdkdGhfaW9jdGxfcmVzZXQpKSkKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CkBAIC00OTc0LDEyICs1MDg5LDggQEAKICAgICBjaGFyICpidWYgPSBOVUxMOwogICAgIHVsb25nNjQgcGFkZHI7IAogICAgIGludCBoYW51bTsKLSAgICAgICAgZ2R0aF9oYV9zdHIgKmhhOyAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgIFNjc2lfUmVxdWVzdCAqc3JwOwotI2Vsc2UKLSAgICAgICAgU2NzaV9DbW5kICpzY3A7Ci0jZW5kaWYKKyAgICBnZHRoX2hhX3N0ciAqaGE7CisgICAgaW50IHJ2YWw7CiAgICAgICAgIAogICAgIGlmIChjb3B5X2Zyb21fdXNlcigmZ2VuLCBhcmcsIHNpemVvZihnZHRoX2lvY3RsX2dlbmVyYWwpKSB8fAogICAgICAgICBnZW4uaW9ub2RlID49IGdkdGhfY3RyX2NvdW50KQpAQCAtNTA3MSwyNyArNTE4MiwxMCBAQAogICAgICAgICB9CiAgICAgfQogCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNycCAgPSBzY3NpX2FsbG9jYXRlX3JlcXVlc3QoaGEtPnNkZXYsIEdGUF9LRVJORUwpOwotICAgIGlmICghc3JwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBzcnAtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzcnAtPnNyX3VzZV9zZyA9IDA7Ci0gICAgZ2R0aF9kb19yZXEoc3JwLCAmZ2VuLmNvbW1hbmQsIGNtbmQsIGdlbi50aW1lb3V0KTsKLSAgICBnZW4uc3RhdHVzID0gc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgIGdlbi5pbmZvID0gc3JwLT5zcl9jb21tYW5kLT5TQ3AuTWVzc2FnZTsKLSAgICBzY3NpX3JlbGVhc2VfcmVxdWVzdChzcnApOwotI2Vsc2UKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2UoaGEtPnNkZXYsIDEsIEZBTFNFKTsKLSAgICBpZiAoIXNjcCkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0gICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT51c2Vfc2cgPSAwOwotICAgIGdkdGhfZG9fY21kKHNjcCwgJmdlbi5jb21tYW5kLCBjbW5kLCBnZW4udGltZW91dCk7Ci0gICAgZ2VuLnN0YXR1cyA9IHNjcC0+U0NwLlN0YXR1czsKLSAgICBnZW4uaW5mbyA9IHNjcC0+U0NwLk1lc3NhZ2U7Ci0gICAgc2NzaV9yZWxlYXNlX2NvbW1hbmQoc2NwKTsKLSNlbmRpZgorICAgIHJ2YWwgPSBfX2dkdGhfZXhlY3V0ZShoYS0+c2RldiwgJmdlbi5jb21tYW5kLCBjbW5kLCBnZW4udGltZW91dCwgJmdlbi5pbmZvKTsKKyAgICBpZiAocnZhbCA8IDApCisgICAgICAgIHJldHVybiBydmFsOworICAgIGdlbi5zdGF0dXMgPSBydmFsOwogCiAgICAgaWYgKGNvcHlfdG9fdXNlcihhcmcgKyBzaXplb2YoZ2R0aF9pb2N0bF9nZW5lcmFsKSwgYnVmLCAKICAgICAgICAgICAgICAgICAgICAgIGdlbi5kYXRhX2xlbiArIGdlbi5zZW5zZV9sZW4pKSB7CkBAIC01MTE0LDQwICs1MjA4LDIyIEBACiAgICAgZ2R0aF9oYV9zdHIgKmhhOwogICAgIHVuY2hhciBpOwogICAgIGludCBoYW51bSwgcmMgPSAtRU5PTUVNOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBTY3NpX1JlcXVlc3QgKnNycDsKLSNlbHNlCi0gICAgU2NzaV9DbW5kICpzY3A7Ci0jZW5kaWYKLSAgICAgICAgCisgICAgdTMyIGNsdXN0ZXJfdHlwZSA9IDA7CisKICAgICByc2MgPSBrbWFsbG9jKHNpemVvZigqcnNjKSwgR0ZQX0tFUk5FTCk7CiAgICAgY21kID0ga21hbGxvYyhzaXplb2YoKmNtZCksIEdGUF9LRVJORUwpOwogICAgIGlmICghcnNjIHx8ICFjbWQpCi0JZ290byBmcmVlX2ZhaWw7CisgICAgICAgIGdvdG8gZnJlZV9mYWlsOwogCiAgICAgaWYgKGNvcHlfZnJvbV91c2VyKHJzYywgYXJnLCBzaXplb2YoZ2R0aF9pb2N0bF9yZXNjYW4pKSB8fAogICAgICAgICByc2MtPmlvbm9kZSA+PSBnZHRoX2N0cl9jb3VudCkgewogICAgICAgICByYyA9IC1FRkFVTFQ7Ci0JZ290byBmcmVlX2ZhaWw7CisgICAgICAgIGdvdG8gZnJlZV9mYWlsOwogICAgIH0KICAgICBoYW51bSA9IHJzYy0+aW9ub2RlOwogICAgIGhhID0gSEFEQVRBKGdkdGhfY3RyX3RhYltoYW51bV0pOwogICAgIG1lbXNldChjbWQsIDAsIHNpemVvZihnZHRoX2NtZF9zdHIpKTsKICAgIAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzcnAgID0gc2NzaV9hbGxvY2F0ZV9yZXF1ZXN0KGhhLT5zZGV2LCBHRlBfS0VSTkVMKTsKLSAgICBpZiAoIXNycCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc3JwLT5zcl9jbWRfbGVuID0gMTI7Ci0gICAgc3JwLT5zcl91c2Vfc2cgPSAwOwotI2Vsc2UKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2UoaGEtPnNkZXYsIDEsIEZBTFNFKTsKLSAgICBpZiAoIXNjcCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT51c2Vfc2cgPSAwOwotI2VuZGlmCi0KICAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0hEUklWRVM7ICsraSkgeyAKICAgICAgICAgaWYgKCFoYS0+aGRyW2ldLnByZXNlbnQpIHsKICAgICAgICAgICAgIHJzYy0+aGRyX2xpc3RbaV0uYnVzID0gMHhmZjsgCkBAIC01MTY0LDI3ICs1MjQwLDE1IEBACiAgICAgICAgICAgICAgICAgY21kLT51LmNhY2hlNjQuRGV2aWNlTm8gPSBpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNtZC0+dS5jYWNoZS5EZXZpY2VObyA9IGk7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzcnAtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXMgPT0gU19PSykKLSAgICAgICAgICAgICAgICByc2MtPmhkcl9saXN0W2ldLmNsdXN0ZXJfdHlwZSA9IHNycC0+c3JfY29tbWFuZC0+U0NwLk1lc3NhZ2U7Ci0jZWxzZQotICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzY3AtPlNDcC5TdGF0dXMgPT0gU19PSykKLSAgICAgICAgICAgICAgICByc2MtPmhkcl9saXN0W2ldLmNsdXN0ZXJfdHlwZSA9IHNjcC0+U0NwLk1lc3NhZ2U7Ci0jZW5kaWYKKyAgICAgICAgICAgIGlmIChfX2dkdGhfZXhlY3V0ZShoYS0+c2RldiwgY21kLCBjbW5kLCAzMCwgJmNsdXN0ZXJfdHlwZSkgPT0gU19PSykKKyAgICAgICAgICAgICAgICByc2MtPmhkcl9saXN0W2ldLmNsdXN0ZXJfdHlwZSA9IGNsdXN0ZXJfdHlwZTsKICAgICAgICAgfQogICAgIH0gCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHNycCk7Ci0jZWxzZQotICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNjcCk7Ci0jZW5kaWYgICAgICAgCi0gCisKICAgICBpZiAoY29weV90b191c2VyKGFyZywgcnNjLCBzaXplb2YoZ2R0aF9pb2N0bF9yZXNjYW4pKSkKICAgICAgICAgcmMgPSAtRUZBVUxUOwogICAgIGVsc2UKLQlyYyA9IDA7CisgICAgICAgIHJjID0gMDsKIAogZnJlZV9mYWlsOgogICAgIGtmcmVlKHJzYyk7CkBAIC01MjAyLDQwICs1MjY2LDIxIEBACiAgICAgaW50IHJjID0gLUVOT01FTTsKICAgICB1bG9uZyBmbGFnczsKICAgICBnZHRoX2hhX3N0ciAqaGE7IAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBTY3NpX1JlcXVlc3QgKnNycDsKLSNlbHNlCi0gICAgU2NzaV9DbW5kICpzY3A7Ci0jZW5kaWYKIAogICAgIHJzYyA9IGttYWxsb2Moc2l6ZW9mKCpyc2MpLCBHRlBfS0VSTkVMKTsKICAgICBjbWQgPSBrbWFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0tFUk5FTCk7CiAgICAgaWYgKCFjbWQgfHwgIXJzYykKLQlnb3RvIGZyZWVfZmFpbDsKKyAgICAgICAgZ290byBmcmVlX2ZhaWw7CiAKICAgICBpZiAoY29weV9mcm9tX3VzZXIocnNjLCBhcmcsIHNpemVvZihnZHRoX2lvY3RsX3Jlc2NhbikpIHx8CiAgICAgICAgIHJzYy0+aW9ub2RlID49IGdkdGhfY3RyX2NvdW50KSB7Ci0JcmMgPSAtRUZBVUxUOwotCWdvdG8gZnJlZV9mYWlsOworICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgIGdvdG8gZnJlZV9mYWlsOwogICAgIH0KICAgICBoYW51bSA9IHJzYy0+aW9ub2RlOwogICAgIGhhID0gSEFEQVRBKGdkdGhfY3RyX3RhYltoYW51bV0pOwogICAgIG1lbXNldChjbWQsIDAsIHNpemVvZihnZHRoX2NtZF9zdHIpKTsKIAotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzcnAgID0gc2NzaV9hbGxvY2F0ZV9yZXF1ZXN0KGhhLT5zZGV2LCBHRlBfS0VSTkVMKTsKLSAgICBpZiAoIXNycCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc3JwLT5zcl9jbWRfbGVuID0gMTI7Ci0gICAgc3JwLT5zcl91c2Vfc2cgPSAwOwotI2Vsc2UKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2UoaGEtPnNkZXYsIDEsIEZBTFNFKTsKLSAgICBpZiAoIXNjcCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT51c2Vfc2cgPSAwOwotI2VuZGlmCi0gICAgIAogICAgIGlmIChyc2MtPmZsYWcgPT0gMCkgewogICAgICAgICAvKiBvbGQgbWV0aG9kOiByZS1pbml0LiBjYWNoZSBzZXJ2aWNlICovCiAgICAgICAgIGNtZC0+U2VydmljZSA9IENBQ0hFU0VSVklDRTsKQEAgLTUyNDYsMTkgKzUyOTEsOCBAQAogICAgICAgICAgICAgY21kLT5PcENvZGUgPSBHRFRfSU5JVDsKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZS5EZXZpY2VObyA9IExJTlVYX09TOwogICAgICAgICB9Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICBnZHRoX2RvX3JlcShzcnAsIGNtZCwgY21uZCwgMzApOwotICAgICAgICBzdGF0dXMgPSAodXNob3J0KXNycC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1czsKLSAgICAgICAgaW5mbyA9ICh1bG9uZzMyKXNycC0+c3JfY29tbWFuZC0+U0NwLk1lc3NhZ2U7Ci0jZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw0LDApCi0gICAgICAgIGdkdGhfZG9fY21kKHNjcCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc2NwLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc2NwLT5TQ3AuTWVzc2FnZTsKLSNlbHNlCi0gICAgICAgIGdkdGhfZG9fY21kKCZzY3AsIGNtZCwgY21uZCwgMzApOwotICAgICAgICBzdGF0dXMgPSAodXNob3J0KXNjcC5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc2NwLlNDcC5NZXNzYWdlOwotI2VuZGlmCisKKyAgICAgICAgc3RhdHVzID0gX19nZHRoX2V4ZWN1dGUoaGEtPnNkZXYsIGNtZCwgY21uZCwgMzAsICZpbmZvKTsKICAgICAgICAgaSA9IDA7CiAgICAgICAgIGhkcl9jbnQgPSAoc3RhdHVzID09IFNfT0sgPyAodXNob3J0KWluZm8gOiAwKTsKICAgICB9IGVsc2UgewpAQCAtNTI3MywxNSArNTMwNyw5IEBACiAgICAgICAgICAgICBjbWQtPnUuY2FjaGU2NC5EZXZpY2VObyA9IGk7CiAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICBjbWQtPnUuY2FjaGUuRGV2aWNlTm8gPSBpOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9ydClzcnAtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzcnAtPnNyX2NvbW1hbmQtPlNDcC5NZXNzYWdlOwotI2Vsc2UKLSAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgc3RhdHVzID0gKHVzaG9ydClzY3AtPlNDcC5TdGF0dXM7Ci0gICAgICAgIGluZm8gPSAodWxvbmczMilzY3AtPlNDcC5NZXNzYWdlOwotI2VuZGlmCisKKyAgICAgICAgc3RhdHVzID0gX19nZHRoX2V4ZWN1dGUoaGEtPnNkZXYsIGNtZCwgY21uZCwgMzAsICZpbmZvKTsKKwogICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CiAgICAgICAgIHJzYy0+aGRyX2xpc3RbaV0uYnVzID0gaGEtPnZpcnRfYnVzOwogICAgICAgICByc2MtPmhkcl9saXN0W2ldLnRhcmdldCA9IGk7CkBAIC01MzEzLDE1ICs1MzQxLDkgQEAKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZTY0LkRldmljZU5vID0gaTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY21kLT51LmNhY2hlLkRldmljZU5vID0gaTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgIGdkdGhfZG9fcmVxKHNycCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc3JwLT5zcl9jb21tYW5kLT5TQ3AuTWVzc2FnZTsKLSNlbHNlCi0gICAgICAgIGdkdGhfZG9fY21kKHNjcCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc2NwLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc2NwLT5TQ3AuTWVzc2FnZTsKLSNlbmRpZgorCisgICAgICAgIHN0YXR1cyA9IF9fZ2R0aF9leGVjdXRlKGhhLT5zZGV2LCBjbWQsIGNtbmQsIDMwLCAmaW5mbyk7CisKICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwogICAgICAgICBoYS0+aGRyW2ldLmRldnR5cGUgPSAoc3RhdHVzID09IFNfT0sgPyAodXNob3J0KWluZm8gOiAwKTsKICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CkBAIC01MzMyLDE1ICs1MzU0LDkgQEAKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZTY0LkRldmljZU5vID0gaTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY21kLT51LmNhY2hlLkRldmljZU5vID0gaTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgIGdkdGhfZG9fcmVxKHNycCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc3JwLT5zcl9jb21tYW5kLT5TQ3AuTWVzc2FnZTsKLSNlbHNlCi0gICAgICAgIGdkdGhfZG9fY21kKHNjcCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc2NwLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc2NwLT5TQ3AuTWVzc2FnZTsKLSNlbmRpZgorCisgICAgICAgIHN0YXR1cyA9IF9fZ2R0aF9leGVjdXRlKGhhLT5zZGV2LCBjbWQsIGNtbmQsIDMwLCAmaW5mbyk7CisKICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwogICAgICAgICBoYS0+aGRyW2ldLmNsdXN0ZXJfdHlwZSA9IAogICAgICAgICAgICAgKChzdGF0dXMgPT0gU19PSyAmJiAhc2hhcmVkX2FjY2VzcykgPyAodXNob3J0KWluZm8gOiAwKTsKQEAgLTUzNTMsMjkgKzUzNjksMTggQEAKICAgICAgICAgICAgIGNtZC0+dS5jYWNoZTY0LkRldmljZU5vID0gaTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY21kLT51LmNhY2hlLkRldmljZU5vID0gaTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgIGdkdGhfZG9fcmVxKHNycCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc3JwLT5zcl9jb21tYW5kLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc3JwLT5zcl9jb21tYW5kLT5TQ3AuTWVzc2FnZTsKLSNlbHNlCi0gICAgICAgIGdkdGhfZG9fY21kKHNjcCwgY21kLCBjbW5kLCAzMCk7Ci0gICAgICAgIHN0YXR1cyA9ICh1c2hvcnQpc2NwLT5TQ3AuU3RhdHVzOwotICAgICAgICBpbmZvID0gKHVsb25nMzIpc2NwLT5TQ3AuTWVzc2FnZTsKLSNlbmRpZgorCisgICAgICAgIHN0YXR1cyA9IF9fZ2R0aF9leGVjdXRlKGhhLT5zZGV2LCBjbWQsIGNtbmQsIDMwLCAmaW5mbyk7CisKICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwogICAgICAgICBoYS0+aGRyW2ldLnJ3X2F0dHJpYnMgPSAoc3RhdHVzID09IFNfT0sgPyAodXNob3J0KWluZm8gOiAwKTsKICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CiAgICAgfQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzY3NpX3JlbGVhc2VfcmVxdWVzdChzcnApOwotI2Vsc2UKLSAgICBzY3NpX3JlbGVhc2VfY29tbWFuZChzY3ApOwotI2VuZGlmICAgICAgIAogIAogICAgIGlmIChjb3B5X3RvX3VzZXIoYXJnLCByc2MsIHNpemVvZihnZHRoX2lvY3RsX3Jlc2NhbikpKQogICAgICAgICByYyA9IC1FRkFVTFQ7CiAgICAgZWxzZQotCXJjID0gMDsKKyAgICAgICAgcmMgPSAwOwogCiBmcmVlX2ZhaWw6CiAgICAga2ZyZWUocnNjKTsKQEAgLTU1MTUsMTcgKzU1MjAsMTggQEAKICAgICAgICAgaGFudW0gPSByZXMuaW9ub2RlOyAKICAgICAgICAgaGEgPSBIQURBVEEoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7CiAKLSAgICAgICAgLyogQmVjYXVzZSB3ZSBuZWVkIGEgU2NzaV9DbW5kIHN0cnVjdC4sIHdlIG1ha2UgYSBzY3NpX2FsbG9jYXRlIGRldmljZSBhbHNvIGZvciBrZXJuZWxzID49Mi42LnggKi8gICAgICAgIAogI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgc2NwICA9IHNjc2lfZ2V0X2NvbW1hbmQoaGEtPnNkZXYsIEdGUF9LRVJORUwpOworICAgICAgICBzY3AgID0ga21hbGxvYyhzaXplb2YoKnNjcCksIEdGUF9LRVJORUwpOwogICAgICAgICBpZiAoIXNjcCkKICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICBtZW1zZXQoc2NwLCAwLCBzaXplb2YoKnNjcCkpOworICAgICAgICBzY3AtPmRldmljZSA9IGhhLT5zZGV2OwogICAgICAgICBzY3AtPmNtZF9sZW4gPSAxMjsKICAgICAgICAgc2NwLT51c2Vfc2cgPSAwOwogICAgICAgICBzY3AtPmRldmljZS0+Y2hhbm5lbCA9IHZpcnRfY3RyID8gMCA6IHJlcy5udW1iZXI7CiAgICAgICAgIHJ2YWwgPSBnZHRoX2VoX2J1c19yZXNldChzY3ApOwogICAgICAgICByZXMuc3RhdHVzID0gKHJ2YWwgPT0gU1VDQ0VTUyA/IFNfT0sgOiBTX0dFTkVSUik7Ci0gICAgICAgIHNjc2lfcHV0X2NvbW1hbmQoc2NwKTsKKyAgICAgICAga2ZyZWUoc2NwKTsKICNlbHNlCiAgICAgICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX2RldmljZShoYS0+c2RldiwgMSwgRkFMU0UpOwogICAgICAgICBpZiAoIXNjcCkKQEAgLTU1NTgsMzQgKzU1NjQsMTIgQEAKICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICBnZHRoX2hhX3N0ciAgICAgKmhhOwogICAgIGdkdGhfY21kX3N0ciAgICBnZHRjbWQ7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIFNjc2lfUmVxdWVzdCAgICAqc3JwOwotI2Vsc2UKLSAgICBTY3NpX0NtbmQgICAgICAgKnNjcDsKLSNlbmRpZgotICAgIHN0cnVjdCBzY3NpX2RldmljZSAgICAgKnNkZXY7CiAgICAgY2hhciAgICAgICAgICAgIGNtbmRbTUFYX0NPTU1BTkRfU0laRV07ICAgCiAgICAgbWVtc2V0KGNtbmQsIDB4ZmYsIE1BWF9DT01NQU5EX1NJWkUpOwogCiAgICAgVFJBQ0UyKCgiZ2R0aF9mbHVzaCgpIGhhbnVtICVkXG4iLGhhbnVtKSk7CiAgICAgaGEgPSBIQURBVEEoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7CiAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc2RldiA9IHNjc2lfZ2V0X2hvc3RfZGV2KGdkdGhfY3RyX3RhYltoYW51bV0pOwotICAgIHNycCAgPSBzY3NpX2FsbG9jYXRlX3JlcXVlc3Qoc2RldiwgR0ZQX0tFUk5FTCk7Ci0gICAgaWYgKCFzcnApCi0gICAgICAgIHJldHVybjsKLSAgICBzcnAtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzcnAtPnNyX3VzZV9zZyA9IDA7Ci0jZWxzZQotICAgIHNkZXYgPSBzY3NpX2dldF9ob3N0X2RldihnZHRoX2N0cl90YWJbaGFudW1dKTsKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2Uoc2RldiwgMSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICByZXR1cm47Ci0gICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT51c2Vfc2cgPSAwOwotI2VuZGlmCi0KICAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0hEUklWRVM7ICsraSkgewogICAgICAgICBpZiAoaGEtPmhkcltpXS5wcmVzZW50KSB7CiAgICAgICAgICAgICBnZHRjbWQuQm9hcmROb2RlID0gTE9DQUxCT0FSRDsKQEAgLTU2MDEsMjAgKzU1ODUsMTAgQEAKICAgICAgICAgICAgICAgICBnZHRjbWQudS5jYWNoZS5zZ19jYW56ID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFRSQUNFMigoImdkdGhfZmx1c2goKTogZmx1c2ggaGEgJWQgZHJpdmUgJWRcbiIsIGhhbnVtLCBpKSk7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCAmZ2R0Y21kLCBjbW5kLCAzMCk7Ci0jZWxzZQotICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCAmZ2R0Y21kLCBjbW5kLCAzMCk7Ci0jZW5kaWYKKworICAgICAgICAgICAgZ2R0aF9leGVjdXRlKGdkdGhfY3RyX3RhYltoYW51bV0sICZnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKTsKICAgICAgICAgfQogICAgIH0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc2NzaV9yZWxlYXNlX3JlcXVlc3Qoc3JwKTsKLSAgICBzY3NpX2ZyZWVfaG9zdF9kZXYoc2Rldik7Ci0jZWxzZQotICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNjcCk7Ci0gICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2VuZGlmCiB9CiAKIC8qIHNodXRkb3duIHJvdXRpbmUgKi8KQEAgLTU2MjMsMTggKzU1OTcsMTEgQEAKICAgICBpbnQgICAgICAgICAgICAgaGFudW07CiAjaWZuZGVmIF9fYWxwaGFfXwogICAgIGdkdGhfY21kX3N0ciAgICBnZHRjbWQ7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIFNjc2lfUmVxdWVzdCAgICAqc3JwOwotICAgIHN0cnVjdCBzY3NpX2RldmljZSAgICAgKnNkZXY7Ci0jZWxzZQotICAgIFNjc2lfQ21uZCAgICAgICAqc2NwOwotICAgIHN0cnVjdCBzY3NpX2RldmljZSAgICAgKnNkZXY7Ci0jZW5kaWYKICAgICBjaGFyICAgICAgICAgICAgY21uZFtNQVhfQ09NTUFORF9TSVpFXTsgICAKICNlbmRpZgogCiAgICAgaWYgKG5vdGlmaWVyX2Rpc2FibGVkKQotICAgIAlyZXR1cm4gTk9USUZZX09LOworICAgICAgICByZXR1cm4gTk9USUZZX09LOwogCiAgICAgVFJBQ0UyKCgiZ2R0aF9oYWx0KCkgZXZlbnQgJWRcbiIsKGludClldmVudCkpOwogICAgIGlmIChldmVudCAhPSBTWVNfUkVTVEFSVCAmJiBldmVudCAhPSBTWVNfSEFMVCAmJiBldmVudCAhPSBTWVNfUE9XRVJfT0ZGKQpAQCAtNTY1MiwzMSArNTYxOSw3IEBACiAgICAgICAgIGdkdGNtZC5TZXJ2aWNlID0gQ0FDSEVTRVJWSUNFOwogICAgICAgICBnZHRjbWQuT3BDb2RlID0gR0RUX1JFU0VUOwogICAgICAgICBUUkFDRTIoKCJnZHRoX2hhbHQoKTogcmVzZXQgY29udHJvbGxlciAlZFxuIiwgaGFudW0pKTsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgIHNkZXYgPSBzY3NpX2dldF9ob3N0X2RldihnZHRoX2N0cl90YWJbaGFudW1dKTsKLSAgICAgICAgc3JwICA9IHNjc2lfYWxsb2NhdGVfcmVxdWVzdChzZGV2LCBHRlBfS0VSTkVMKTsKLSAgICAgICAgaWYgKCFzcnApIHsKLSAgICAgICAgICAgIHVucmVnaXN0ZXJfcmVib290X25vdGlmaWVyKCZnZHRoX25vdGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiBOT1RJRllfT0s7Ci0gICAgICAgIH0KLSAgICAgICAgc3JwLT5zcl9jbWRfbGVuID0gMTI7Ci0gICAgICAgIHNycC0+c3JfdXNlX3NnID0gMDsKLSAgICAgICAgZ2R0aF9kb19yZXEoc3JwLCAmZ2R0Y21kLCBjbW5kLCAxMCk7Ci0gICAgICAgIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHNycCk7Ci0gICAgICAgIHNjc2lfZnJlZV9ob3N0X2RldihzZGV2KTsKLSNlbHNlCi0gICAgICAgIHNkZXYgPSBzY3NpX2dldF9ob3N0X2RldihnZHRoX2N0cl90YWJbaGFudW1dKTsKLSAgICAgICAgc2NwICA9IHNjc2lfYWxsb2NhdGVfZGV2aWNlKHNkZXYsIDEsIEZBTFNFKTsKLSAgICAgICAgaWYgKCFzY3ApIHsKLSAgICAgICAgICAgIHVucmVnaXN0ZXJfcmVib290X25vdGlmaWVyKCZnZHRoX25vdGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybiBOT1RJRllfT0s7Ci0gICAgICAgIH0KLSAgICAgICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgICAgIHNjcC0+dXNlX3NnID0gMDsKLSAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCAmZ2R0Y21kLCBjbW5kLCAxMCk7Ci0gICAgICAgIHNjc2lfcmVsZWFzZV9jb21tYW5kKHNjcCk7Ci0gICAgICAgIHNjc2lfZnJlZV9ob3N0X2RldihzZGV2KTsKLSNlbmRpZgorICAgICAgICBnZHRoX2V4ZWN1dGUoZ2R0aF9jdHJfdGFiW2hhbnVtXSwgJmdkdGNtZCwgY21uZCwgMTAsIE5VTEwpOwogI2VuZGlmCiAgICAgfQogICAgIHByaW50aygiRG9uZS5cbiIpOwpAQCAtNTY4Nyw3ICs1NjMwLDIyIEBACiAgICAgcmV0dXJuIE5PVElGWV9PSzsKIH0KIAorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKKy8qIGNvbmZpZ3VyZSBsdW4gKi8KK3N0YXRpYyBpbnQgZ2R0aF9zbGF2ZV9jb25maWd1cmUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KQoreworICAgIHNjc2lfYWRqdXN0X3F1ZXVlX2RlcHRoKHNkZXYsIDAsIHNkZXYtPmhvc3QtPmNtZF9wZXJfbHVuKTsKKyAgICBzZGV2LT5za2lwX21zX3BhZ2VfM2YgPSAxOworICAgIHNkZXYtPnNraXBfbXNfcGFnZV84ID0gMTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQogc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgZHJpdmVyX3RlbXBsYXRlID0geworI2Vsc2UKK3N0YXRpYyBTY3NpX0hvc3RfVGVtcGxhdGUgZHJpdmVyX3RlbXBsYXRlID0geworI2VuZGlmCiAgICAgICAgIC5wcm9jX25hbWUgICAgICAgICAgICAgID0gImdkdGgiLCAKICAgICAgICAgLnByb2NfaW5mbyAgICAgICAgICAgICAgPSBnZHRoX3Byb2NfaW5mbywKICAgICAgICAgLm5hbWUgICAgICAgICAgICAgICAgICAgPSAiR0RUIFNDU0kgRGlzayBBcnJheSBDb250cm9sbGVyIiwKQEAgLTU2OTgsNiArNTY1Niw5IEBACiAgICAgICAgIC5laF9idXNfcmVzZXRfaGFuZGxlciAgID0gZ2R0aF9laF9idXNfcmVzZXQsCiAgICAgICAgIC5iaW9zX3BhcmFtICAgICAgICAgICAgID0gZ2R0aF9iaW9zX3BhcmFtLAogICAgICAgICAuY2FuX3F1ZXVlICAgICAgICAgICAgICA9IEdEVEhfTUFYQ01EUywKKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCisgICAgICAgIC5zbGF2ZV9jb25maWd1cmUgICAgICAgID0gZ2R0aF9zbGF2ZV9jb25maWd1cmUsCisjZW5kaWYKICAgICAgICAgLnRoaXNfaWQgICAgICAgICAgICAgICAgPSAtMSwKICAgICAgICAgLnNnX3RhYmxlc2l6ZSAgICAgICAgICAgPSBHRFRIX01BWFNHLAogICAgICAgICAuY21kX3Blcl9sdW4gICAgICAgICAgICA9IEdEVEhfTUFYQ19QX0wsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ2R0aC5oIGIvZHJpdmVycy9zY3NpL2dkdGguaAppbmRleCBjYzQ4ODJmLi40N2VhZTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZ2R0aC5oCisrKyBiL2RyaXZlcnMvc2NzaS9nZHRoLmgKQEAgLTQsMTMgKzQsMTMgQEAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhlIEdEVCBEaXNrIEFycmF5L1N0b3JhZ2UgUkFJRCBjb250cm9sbGVycyBkcml2ZXIgZm9yIExpbnV4CiAgKiAKLSAqIGdkdGguaCBDb3B5cmlnaHQgKEMpIDE5OTUtMDMgSUNQIHZvcnRleCwgQWNoaW0gTGV1Ym5lcgorICogZ2R0aC5oIENvcHlyaWdodCAoQykgMTk5NS0wNiBJQ1Agdm9ydGV4LCBBY2hpbSBMZXVibmVyCiAgKiBTZWUgZ2R0aC5jIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9ucyBhbmQgCiAgKiBiZWxvdyBmb3Igc3VwcG9ydGVkIGNvbnRyb2xsZXIgdHlwZXMKICAqCiAgKiA8YWNoaW1fbGV1Ym5lckBhZGFwdGVjLmNvbT4KICAqCi0gKiAkSWQ6IGdkdGguaCx2IDEuNTcgMjAwNC8wMy8zMSAxMTo1MjowOSBhY2hpbSBFeHAgJAorICogJElkOiBnZHRoLmgsdiAxLjU4IDIwMDYvMDEvMTEgMTY6MTQ6MDkgYWNoaW0gRXhwICQKICAqLwogCiAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgpAQCAtMjYsOSArMjYsOSBAQAogLyogZGVmaW5lcywgbWFjcm9zICovCiAKIC8qIGRyaXZlciB2ZXJzaW9uICovCi0jZGVmaW5lIEdEVEhfVkVSU0lPTl9TVFIgICAgICAgICIzLjA0IgorI2RlZmluZSBHRFRIX1ZFUlNJT05fU1RSICAgICAgICAiMy4wNSIKICNkZWZpbmUgR0RUSF9WRVJTSU9OICAgICAgICAgICAgMwotI2RlZmluZSBHRFRIX1NVQlZFUlNJT04gICAgICAgICA0CisjZGVmaW5lIEdEVEhfU1VCVkVSU0lPTiAgICAgICAgIDUKIAogLyogcHJvdG9jb2wgdmVyc2lvbiAqLwogI2RlZmluZSBQUk9UT0NPTF9WRVJTSU9OICAgICAgICAxCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ2R0aF9rY29tcGF0LmggYi9kcml2ZXJzL3Njc2kvZ2R0aF9rY29tcGF0LmgKaW5kZXggZTZjZjBlZC4uMmEzMDJlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2dkdGhfa2NvbXBhdC5oCisrKyBiL2RyaXZlcnMvc2NzaS9nZHRoX2tjb21wYXQuaApAQCAtMSw1ICsxLDMgQEAKLQotCiAjaWZuZGVmIElSUV9IQU5ETEVECiB0eXBlZGVmIHZvaWQgaXJxcmV0dXJuX3Q7CiAjZGVmaW5lIElSUV9OT05FCkBAIC0xMCw2ICs4LDE4IEBACiAjZGVmaW5lIE1PRFVMRV9MSUNFTlNFKHgpCiAjZW5kaWYKIAorI2lmbmRlZiBfX2lvbWVtCisjZGVmaW5lIF9faW9tZW0KKyNlbmRpZgorCisjaWZuZGVmIF9fYXR0cmlidXRlX3VzZWRfXworI2RlZmluZSBfX2F0dHJpYnV0ZV91c2VkX18JX19kZXZpbml0ZGF0YQorI2VuZGlmCisKKyNpZm5kZWYgX191c2VyCisjZGVmaW5lIF9fdXNlcgorI2VuZGlmCisKICNpZm5kZWYgU0VSVklDRV9BQ1RJT05fSU4KICNkZWZpbmUgU0VSVklDRV9BQ1RJT05fSU4JMHg5ZQogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ2R0aF9wcm9jLmMgYi9kcml2ZXJzL3Njc2kvZ2R0aF9wcm9jLmMKaW5kZXggNWU4NjU3Zi4uMzI5ODJlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2dkdGhfcHJvYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9nZHRoX3Byb2MuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGdkdGhfcHJvYy5jIAotICogJElkOiBnZHRoX3Byb2MuYyx2IDEuNDIgMjAwNC8wMy8wNSAxNTo1MDoyMCBhY2hpbSBFeHAgJAorICogJElkOiBnZHRoX3Byb2MuYyx2IDEuNDMgMjAwNi8wMS8xMSAxNjoxNTowMCBhY2hpbSBFeHAgJAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+CkBAIC01MSw1NyArNTEsMjYgQEAKIHN0YXRpYyBpbnQgZ2R0aF9zZXRfaW5mbyhjaGFyICpidWZmZXIsaW50IGxlbmd0aCxzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoYW51bSxpbnQgYnVzbnVtKQogewotICAgIGludCAgICAgICAgICAgICByZXRfdmFsID0gLUVJTlZBTDsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgU2NzaV9SZXF1ZXN0ICAgICpzY3A7Ci0gICAgc3RydWN0IHNjc2lfZGV2aWNlICAgICAqc2RldjsKLSNlbHNlCi0gICAgU2NzaV9DbW5kICAgICAgICpzY3A7Ci0gICAgc3RydWN0IHNjc2lfZGV2aWNlICAgICAqc2RldjsKLSNlbmRpZgotICAgIFRSQUNFMigoImdkdGhfc2V0X2luZm8oKSBoYSAlZCBidXMgJWRcbiIsaGFudW0sYnVzbnVtKSk7CisgICAgaW50IHJldF92YWwgPSAtRUlOVkFMOwogCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNkZXYgPSBzY3NpX2dldF9ob3N0X2Rldihob3N0KTsKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9yZXF1ZXN0KHNkZXYsIEdGUF9LRVJORUwpOwotICAgIGlmICghc2NwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBzY3AtPnNyX2NtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnNyX3VzZV9zZyA9IDA7Ci0jZWxzZQotICAgIHNkZXYgPSBzY3NpX2dldF9ob3N0X2Rldihob3N0KTsKLSAgICBzY3AgID0gc2NzaV9hbGxvY2F0ZV9kZXZpY2Uoc2RldiwgMSwgRkFMU0UpOwotICAgIGlmICghc2NwKQotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBzY3AtPmNtZF9sZW4gPSAxMjsKLSAgICBzY3AtPnVzZV9zZyA9IDA7Ci0jZW5kaWYKKyAgICBUUkFDRTIoKCJnZHRoX3NldF9pbmZvKCkgaGEgJWQgYnVzICVkXG4iLGhhbnVtLGJ1c251bSkpOwogCiAgICAgaWYgKGxlbmd0aCA+PSA0KSB7CiAgICAgICAgIGlmIChzdHJuY21wKGJ1ZmZlciwiZ2R0aCIsNCkgPT0gMCkgewogICAgICAgICAgICAgYnVmZmVyICs9IDU7CiAgICAgICAgICAgICBsZW5ndGggLT0gNTsKLSAgICAgICAgICAgIHJldF92YWwgPSBnZHRoX3NldF9hc2NfaW5mbyggYnVmZmVyLCBsZW5ndGgsIGhhbnVtLCBzY3AgKTsKKyAgICAgICAgICAgIHJldF92YWwgPSBnZHRoX3NldF9hc2NfaW5mbyhob3N0LCBidWZmZXIsIGxlbmd0aCwgaGFudW0pOwogICAgICAgICB9CiAgICAgfQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzY3NpX3JlbGVhc2VfcmVxdWVzdChzY3ApOwotICAgIHNjc2lfZnJlZV9ob3N0X2RldihzZGV2KTsKLSNlbHNlCi0gICAgc2NzaV9yZWxlYXNlX2NvbW1hbmQoc2NwKTsKLSAgICBzY3NpX2ZyZWVfaG9zdF9kZXYoc2Rldik7Ci0jZW5kaWYKKwogICAgIHJldHVybiByZXRfdmFsOwogfQogICAgICAgICAgCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotc3RhdGljIGludCBnZHRoX3NldF9hc2NfaW5mbyhjaGFyICpidWZmZXIsaW50IGxlbmd0aCxpbnQgaGFudW0sU2NzaV9SZXF1ZXN0ICpzY3ApCi0jZWxzZQotc3RhdGljIGludCBnZHRoX3NldF9hc2NfaW5mbyhjaGFyICpidWZmZXIsaW50IGxlbmd0aCxpbnQgaGFudW0sU2NzaV9DbW5kICpzY3ApCi0jZW5kaWYKK3N0YXRpYyBpbnQgZ2R0aF9zZXRfYXNjX2luZm8oc3RydWN0IFNjc2lfSG9zdCAqaG9zdCwgY2hhciAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCxpbnQgaGFudW0pCiB7Ci0gICAgaW50ICAgICAgICAgICAgIG9yaWdfbGVuZ3RoLCBkcml2ZSwgd2JfbW9kZTsKLSAgICBpbnQgICAgICAgICAgICAgaSwgZm91bmQ7CisgICAgaW50IG9yaWdfbGVuZ3RoLCBkcml2ZSwgd2JfbW9kZTsKKyAgICBpbnQgaSwgZm91bmQ7CiAgICAgZ2R0aF9oYV9zdHIgICAgICpoYTsKICAgICBnZHRoX2NtZF9zdHIgICAgZ2R0Y21kOwogICAgIGdkdGhfY3Bhcl9zdHIgICAqcGNwYXI7CkBAIC0xNDYsMTEgKzExNSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGdkdGNtZC51LmNhY2hlLkRldmljZU5vID0gaTsKICAgICAgICAgICAgICAgICAgICAgZ2R0Y21kLnUuY2FjaGUuQmxvY2tObyA9IDE7CiAgICAgICAgICAgICAgICAgfQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgICAgICAgICBnZHRoX2RvX3JlcShzY3AsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCAmZ2R0Y21kLCBjbW5kLCAzMCk7Ci0jZW5kaWYKKworICAgICAgICAgICAgICAgIGdkdGhfZXhlY3V0ZShob3N0LCAmZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmb3VuZCkKQEAgLTIwMiwxMSArMTY4LDkgQEAKICAgICAgICAgZ2R0Y21kLnUuaW9jdGwuc3ViZnVuYyA9IENBQ0hFX0NPTkZJRzsKICAgICAgICAgZ2R0Y21kLnUuaW9jdGwuY2hhbm5lbCA9IElOVkFMSURfQ0hBTk5FTDsKICAgICAgICAgcGNwYXItPndyaXRlX2JhY2sgPSB3Yl9tb2RlPT0xID8gMDoxOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgZ2R0aF9kb19yZXEoc2NwLCAmZ2R0Y21kLCBjbW5kLCAzMCk7Ci0jZWxzZQotICAgICAgICBnZHRoX2RvX2NtZChzY3AsICZnZHRjbWQsIGNtbmQsIDMwKTsKLSNlbmRpZgorCisgICAgICAgIGdkdGhfZXhlY3V0ZShob3N0LCAmZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCk7CisKICAgICAgICAgZ2R0aF9pb2N0bF9mcmVlKGhhbnVtLCBHRFRIX1NDUkFUQ0gsIGhhLT5wc2NyYXRjaCwgcGFkZHIpOwogICAgICAgICBwcmludGsoIkRvbmUuXG4iKTsKICAgICAgICAgcmV0dXJuKG9yaWdfbGVuZ3RoKTsKQEAgLTIzMCwxMyArMTk0LDYgQEAKIAogICAgIGdkdGhfY21kX3N0ciAqZ2R0Y21kOwogICAgIGdkdGhfZXZ0X3N0ciAqZXN0cjsKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgU2NzaV9SZXF1ZXN0ICpzY3A7Ci0gICAgc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2OwotI2Vsc2UKLSAgICBTY3NpX0NtbmQgKnNjcDsKLSAgICBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7Ci0jZW5kaWYKICAgICBjaGFyIGhyZWNbMTYxXTsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKIApAQCAtMjUyLDcgKzIwOSw3IEBACiAgICAgZ2R0Y21kID0ga21hbGxvYyhzaXplb2YoKmdkdGNtZCksIEdGUF9LRVJORUwpOwogICAgIGVzdHIgPSBrbWFsbG9jKHNpemVvZigqZXN0ciksIEdGUF9LRVJORUwpOwogICAgIGlmICghZ2R0Y21kIHx8ICFlc3RyKQotCWdvdG8gZnJlZV9mYWlsOworICAgICAgICBnb3RvIGZyZWVfZmFpbDsKIAogICAgIG1lbXNldChjbW5kLCAweGZmLCAxMik7CiAgICAgbWVtc2V0KGdkdGNtZCwgMCwgc2l6ZW9mKGdkdGhfY21kX3N0cikpOwpAQCAtMjYwLDI4ICsyMTcsNiBAQAogICAgIFRSQUNFMigoImdkdGhfZ2V0X2luZm8oKSBoYSAlZCBidXMgJWRcbiIsaGFudW0sYnVzbnVtKSk7CiAgICAgaGEgPSBIQURBVEEoZ2R0aF9jdHJfdGFiW2hhbnVtXSk7CiAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgc2RldiA9IHNjc2lfZ2V0X2hvc3RfZGV2KGhvc3QpOwotICAgIHNjcCAgPSBzY3NpX2FsbG9jYXRlX3JlcXVlc3Qoc2RldiwgR0ZQX0tFUk5FTCk7Ci0gICAgaWYgKCFzY3ApCi0gICAgICAgIGdvdG8gZnJlZV9mYWlsOwotICAgIHNjcC0+c3JfY21kX2xlbiA9IDEyOwotICAgIHNjcC0+c3JfdXNlX3NnID0gMDsKLSNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDQsMCkKLSAgICBzZGV2ID0gc2NzaV9nZXRfaG9zdF9kZXYoaG9zdCk7Ci0gICAgc2NwICA9IHNjc2lfYWxsb2NhdGVfZGV2aWNlKHNkZXYsIDEsIEZBTFNFKTsKLSAgICBpZiAoIXNjcCkKLSAgICAgICAgZ290byBmcmVlX2ZhaWw7Ci0gICAgc2NwLT5jbWRfbGVuID0gMTI7Ci0gICAgc2NwLT51c2Vfc2cgPSAwOwotI2Vsc2UKLSAgICBtZW1zZXQoJnNkZXYsMCxzaXplb2Yoc3RydWN0IHNjc2lfZGV2aWNlKSk7Ci0gICAgbWVtc2V0KCZzY3AsIDAsc2l6ZW9mKFNjc2lfQ21uZCkpOwotICAgIHNkZXYuaG9zdCA9IHNjcC5ob3N0ID0gaG9zdDsKLSAgICBzZGV2LmlkID0gc2NwLnRhcmdldCA9IHNkZXYuaG9zdC0+dGhpc19pZDsKLSAgICBzY3AuZGV2aWNlID0gJnNkZXY7Ci0jZW5kaWYKLSAgICAKICAgICAKICAgICAvKiByZXF1ZXN0IGlzIGkuZS4gImNhdCAvcHJvYy9zY3NpL2dkdGgvMCIgKi8gCiAgICAgLyogZm9ybWF0OiAlLTE1c1x0JS0xMHNcdCUtMTVzXHQlcyAqLwpAQCAtMzg2LDE2ICszMjEsOSBAQAogICAgICAgICAgICAgICAgIHNpemVvZihwZHMtPmxpc3RbMF0pOwogICAgICAgICAgICAgaWYgKHBkcy0+ZW50cmllcyA+IGNudCkKICAgICAgICAgICAgICAgICBwZHMtPmVudHJpZXMgPSBjbnQ7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgZ2R0aF9kb19yZXEoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzY3AtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXMgIT0gU19PSykgCi0jZWxzZQotICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzY3AtPlNDcC5TdGF0dXMgIT0gU19PSykgCi0jZW5kaWYKLSAgICAgICAgICAgIHsgCisKKyAgICAgICAgICAgIGlmIChnZHRoX2V4ZWN1dGUoaG9zdCwgZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCkgIT0gU19PSykKICAgICAgICAgICAgICAgICBwZHMtPmNvdW50ID0gMDsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogb3RoZXIgSU9DVExzIG11c3QgZml0IGludG8gYXJlYSBHRFRIX1NDUkFUQ0gvNCAqLwogICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGhhLT5yYXdbaV0ucGRldl9jbnQ7ICsraikgewpAQCAtNDEwLDE0ICszMzgsOCBAQAogICAgICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5zdWJmdW5jID0gU0NTSV9EUl9JTkZPIHwgTF9DVFJMX1BBVFRFUk47CiAgICAgICAgICAgICAgICAgZ2R0Y21kLT51LmlvY3RsLmNoYW5uZWwgPSAKICAgICAgICAgICAgICAgICAgICAgaGEtPnJhd1tpXS5hZGRyZXNzIHwgaGEtPnJhd1tpXS5pZF9saXN0W2pdOwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgICAgICAgICBnZHRoX2RvX3JlcShzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgICAgIGlmIChzY3AtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXMgPT0gU19PSykgCi0jZWxzZQotICAgICAgICAgICAgICAgIGdkdGhfZG9fY21kKHNjcCwgZ2R0Y21kLCBjbW5kLCAzMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjcC0+U0NwLlN0YXR1cyA9PSBTX09LKSAKLSNlbmRpZgotICAgICAgICAgICAgICAgIHsKKworICAgICAgICAgICAgICAgIGlmIChnZHRoX2V4ZWN1dGUoaG9zdCwgZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCkgPT0gU19PSykgewogICAgICAgICAgICAgICAgICAgICBzdHJuY3B5KGhyZWMscGRpLT52ZW5kb3IsOCk7CiAgICAgICAgICAgICAgICAgICAgIHN0cm5jcHkoaHJlYys4LHBkaS0+cHJvZHVjdCwxNik7CiAgICAgICAgICAgICAgICAgICAgIHN0cm5jcHkoaHJlYysyNCxwZGktPnJldmlzaW9uLDQpOwpAQCAtNDY2LDE0ICszODgsOCBAQAogICAgICAgICAgICAgICAgICAgICBnZHRjbWQtPnUuaW9jdGwuY2hhbm5lbCA9IAogICAgICAgICAgICAgICAgICAgICAgICAgaGEtPnJhd1tpXS5hZGRyZXNzIHwgaGEtPnJhd1tpXS5pZF9saXN0W2pdOwogICAgICAgICAgICAgICAgICAgICBwZGVmLT5zZGRjX3R5cGUgPSAweDA4OwotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICAgICAgICAgICAgICAgICAgZ2R0aF9kb19yZXEoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjcC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyA9PSBTX09LKSAKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdkdGhfZG9fY21kKHNjcCwgZ2R0Y21kLCBjbW5kLCAzMCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzY3AtPlNDcC5TdGF0dXMgPT0gU19PSykgCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgeworCisgICAgICAgICAgICAgICAgICAgIGlmIChnZHRoX2V4ZWN1dGUoaG9zdCwgZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCkgPT0gU19PSykgewogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNwcmludGYoYnVmZmVyK2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgR3Jvd24gRGVmZWN0czpcdCVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGRlZi0+c2RkY19jbnQpOwpAQCAtNTE5LDE2ICs0MzUsOCBAQAogICAgICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5wYXJhbV9zaXplID0gc2l6ZW9mKGdkdGhfY2RyaW5mb19zdHIpOwogICAgICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5zdWJmdW5jID0gQ0FDSEVfRFJWX0lORk87CiAgICAgICAgICAgICAgICAgZ2R0Y21kLT51LmlvY3RsLmNoYW5uZWwgPSBkcnZfbm87Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgICAgIGdkdGhfZG9fcmVxKHNjcCwgZ2R0Y21kLCBjbW5kLCAzMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjcC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyAhPSBTX09LKSAKLSNlbHNlCi0gICAgICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgICAgICBpZiAoc2NwLT5TQ3AuU3RhdHVzICE9IFNfT0spCi0jZW5kaWYKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGdkdGhfZXhlY3V0ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSAhPSBTX09LKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGNkaS0+bGRfZHR5cGUgPj49IDE2OwogICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgICAgICBpZiAocGNkaS0+bGRfZHR5cGUgPiAyKSB7CkBAIC02MjksMTQgKzUzNyw3IEBACiAgICAgICAgICAgICBnZHRjbWQtPnUuaW9jdGwucGFyYW1fc2l6ZSA9IHNpemVvZihnZHRoX2FycmF5aW5mX3N0cik7CiAgICAgICAgICAgICBnZHRjbWQtPnUuaW9jdGwuc3ViZnVuYyA9IEFSUkFZX0lORk8gfCBMQV9DVFJMX1BBVFRFUk47CiAgICAgICAgICAgICBnZHRjbWQtPnUuaW9jdGwuY2hhbm5lbCA9IGk7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgICAgICAgICAgZ2R0aF9kb19yZXEoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzY3AtPnNyX2NvbW1hbmQtPlNDcC5TdGF0dXMgPT0gU19PSykgCi0jZWxzZQotICAgICAgICAgICAgZ2R0aF9kb19jbWQoc2NwLCBnZHRjbWQsIGNtbmQsIDMwKTsKLSAgICAgICAgICAgIGlmIChzY3AtPlNDcC5TdGF0dXMgPT0gU19PSykgCi0jZW5kaWYKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZHRoX2V4ZWN1dGUoaG9zdCwgZ2R0Y21kLCBjbW5kLCAzMCwgTlVMTCkgPT0gU19PSykgewogICAgICAgICAgICAgICAgIGlmIChwYWktPmFpX3N0YXRlID09IDApCiAgICAgICAgICAgICAgICAgICAgIHN0cmNweShocmVjLCAiaWRsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhaS0+YWlfc3RhdGUgPT0gMikKQEAgLTcxMCwxNCArNjExLDcgQEAKICAgICAgICAgICAgIGdkdGNtZC0+dS5pb2N0bC5jaGFubmVsID0gaTsKICAgICAgICAgICAgIHBoZy0+ZW50cmllcyA9IE1BWF9IRFJJVkVTOwogICAgICAgICAgICAgcGhnLT5vZmZzZXQgPSBHRFRPRkZTT0YoZ2R0aF9oZ2V0X3N0ciwgZW50cnlbMF0pOyAKLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi0gICAgICAgICAgICBnZHRoX2RvX3JlcShzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgaWYgKHNjcC0+c3JfY29tbWFuZC0+U0NwLlN0YXR1cyAhPSBTX09LKSAKLSNlbHNlCi0gICAgICAgICAgICBnZHRoX2RvX2NtZChzY3AsIGdkdGNtZCwgY21uZCwgMzApOwotICAgICAgICAgICAgaWYgKHNjcC0+U0NwLlN0YXR1cyAhPSBTX09LKSAKLSNlbmRpZgotICAgICAgICAgICAgeworICAgICAgICAgICAgaWYgKGdkdGhfZXhlY3V0ZShob3N0LCBnZHRjbWQsIGNtbmQsIDMwLCBOVUxMKSA9PSBTX09LKSB7CiAgICAgICAgICAgICAgICAgaGEtPmhkcltpXS5sZHJfbm8gPSBpOwogICAgICAgICAgICAgICAgIGhhLT5oZHJbaV0ucndfYXR0cmlicyA9IDA7CiAgICAgICAgICAgICAgICAgaGEtPmhkcltpXS5zdGFydF9zZWMgPSAwOwpAQCAtNzkxLDEzICs2ODUsNiBAQAogICAgIH0KIAogc3RvcF9vdXRwdXQ6Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotICAgIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHNjcCk7Ci0gICAgc2NzaV9mcmVlX2hvc3RfZGV2KHNkZXYpOwotI2Vsc2UKLSAgICBzY3NpX3JlbGVhc2VfY29tbWFuZChzY3ApOwotICAgIHNjc2lfZnJlZV9ob3N0X2RldihzZGV2KTsKLSNlbmRpZgogICAgICpzdGFydCA9IGJ1ZmZlciArKG9mZnNldC1iZWdpbik7CiAgICAgbGVuIC09IChvZmZzZXQtYmVnaW4pOwogICAgIGlmIChsZW4gPiBsZW5ndGgpCkBAIC04MTIsNjQgKzY5OSw2IEBACiAgICAgcmV0dXJuIHJjOwogfQogCi0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDApCi1zdGF0aWMgdm9pZCBnZHRoX2RvX3JlcShTY3NpX1JlcXVlc3QgKnNjcCwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY21uZCwgaW50IHRpbWVvdXQpCi17Ci0gICAgdW5zaWduZWQgYnVmZmxlbjsKLSAgICBERUNMQVJFX0NPTVBMRVRJT04od2FpdCk7Ci0KLSAgICBUUkFDRTIoKCJnZHRoX2RvX3JlcSgpXG4iKSk7Ci0gICAgaWYgKGdkdGNtZCAhPSBOVUxMKSB7IAotICAgICAgICBidWZmbGVuID0gc2l6ZW9mKGdkdGhfY21kX3N0cik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnVmZmxlbiA9IDA7Ci0gICAgfQotICAgIHNjcC0+c3JfcmVxdWVzdC0+cnFfc3RhdHVzID0gUlFfU0NTSV9CVVNZOwotICAgIHNjcC0+c3JfcmVxdWVzdC0+d2FpdGluZyA9ICZ3YWl0OwotICAgIHNjc2lfZG9fcmVxKHNjcCwgY21uZCwgZ2R0Y21kLCBidWZmbGVuLCBnZHRoX3Njc2lfZG9uZSwgdGltZW91dCpIWiwgMSk7Ci0gICAgd2FpdF9mb3JfY29tcGxldGlvbigmd2FpdCk7Ci19Ci0KLSNlbHNlCi1zdGF0aWMgdm9pZCBnZHRoX2RvX2NtZChTY3NpX0NtbmQgKnNjcCwgZ2R0aF9jbWRfc3RyICpnZHRjbWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY21uZCwgaW50IHRpbWVvdXQpCi17Ci0gICAgdW5zaWduZWQgYnVmZmxlbjsKLSAgICBERUNMQVJFX0NPTVBMRVRJT04od2FpdCk7Ci0KLSAgICBUUkFDRTIoKCJnZHRoX2RvX2NtZCgpXG4iKSk7Ci0gICAgaWYgKGdkdGNtZCAhPSBOVUxMKSB7IAotICAgICAgICBzY3AtPlNDcC50aGlzX3Jlc2lkdWFsID0gSU9DVExfUFJJOwotICAgICAgICBidWZmbGVuID0gc2l6ZW9mKGdkdGhfY21kX3N0cik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2NwLT5TQ3AudGhpc19yZXNpZHVhbCA9IERFRkFVTFRfUFJJOwotICAgICAgICBidWZmbGVuID0gMDsKLSAgICB9Ci0KLSAgICBzY3AtPnJlcXVlc3QucnFfc3RhdHVzID0gUlFfU0NTSV9CVVNZOwotICAgIHNjcC0+cmVxdWVzdC53YWl0aW5nID0gJndhaXQ7Ci0gICAgc2NzaV9kb19jbWQoc2NwLCBjbW5kLCBnZHRjbWQsIGJ1ZmZsZW4sIGdkdGhfc2NzaV9kb25lLCB0aW1lb3V0KkhaLCAxKTsKLSAgICB3YWl0X2Zvcl9jb21wbGV0aW9uKCZ3YWl0KTsKLX0KLSNlbmRpZgotCi12b2lkIGdkdGhfc2NzaV9kb25lKFNjc2lfQ21uZCAqc2NwKQotewotICAgIFRSQUNFMigoImdkdGhfc2NzaV9kb25lKClcbiIpKTsKLQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMCkKLSAgICBzY3AtPnJlcXVlc3QtPnJxX3N0YXR1cyA9IFJRX1NDU0lfRE9ORTsKLSAgICBpZiAoc2NwLT5yZXF1ZXN0LT53YWl0aW5nICE9IE5VTEwpCi0gICAgICAgIGNvbXBsZXRlKHNjcC0+cmVxdWVzdC0+d2FpdGluZyk7Ci0jZWxzZQotICAgIHNjcC0+cmVxdWVzdC5ycV9zdGF0dXMgPSBSUV9TQ1NJX0RPTkU7Ci0gICAgaWYgKHNjcC0+cmVxdWVzdC53YWl0aW5nICE9IE5VTEwpCi0gICAgICAgIGNvbXBsZXRlKHNjcC0+cmVxdWVzdC53YWl0aW5nKTsKLSNlbmRpZgotfQotCiBzdGF0aWMgY2hhciAqZ2R0aF9pb2N0bF9hbGxvYyhpbnQgaGFudW0sIGludCBzaXplLCBpbnQgc2NyYXRjaCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZzY0ICpwYWRkcikKIHsKQEAgLTk3NiwxMSArODA1LDE0IEBACiAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwogCiAgICAgZm9yIChzY3AgPSBoYS0+cmVxX2ZpcnN0OyBzY3A7IHNjcCA9IChTY3NpX0NtbmQgKilzY3AtPlNDcC5wdHIpIHsKLSAgICAgICAgYiA9IHZpcnRfY3RyID8gTlVNREFUQShzY3AtPmRldmljZS0+aG9zdCktPmJ1c251bSA6IHNjcC0+ZGV2aWNlLT5jaGFubmVsOwotICAgICAgICB0ID0gc2NwLT5kZXZpY2UtPmlkOwotICAgICAgICBpZiAodCA9PSAodW5jaGFyKWlkICYmIGIgPT0gKHVuY2hhcilidXNudW0pIHsKLSAgICAgICAgICAgIFRSQUNFMigoImdkdGhfc3RvcF90aW1lb3V0KCk6IHVwZGF0ZV90aW1lb3V0KClcbiIpKTsKLSAgICAgICAgICAgIHNjcC0+U0NwLmJ1ZmZlcnNfcmVzaWR1YWwgPSBnZHRoX3VwZGF0ZV90aW1lb3V0KGhhbnVtLCBzY3AsIDApOworICAgICAgICBpZiAoc2NwLT5kb25lICE9IGdkdGhfc2NzaV9kb25lKSB7CisgICAgICAgICAgICBiID0gdmlydF9jdHIgPworICAgICAgICAgICAgICAgIE5VTURBVEEoc2NwLT5kZXZpY2UtPmhvc3QpLT5idXNudW0gOiBzY3AtPmRldmljZS0+Y2hhbm5lbDsKKyAgICAgICAgICAgIHQgPSBzY3AtPmRldmljZS0+aWQ7CisgICAgICAgICAgICBpZiAodCA9PSAodW5jaGFyKWlkICYmIGIgPT0gKHVuY2hhcilidXNudW0pIHsKKyAgICAgICAgICAgICAgICBUUkFDRTIoKCJnZHRoX3N0b3BfdGltZW91dCgpOiB1cGRhdGVfdGltZW91dCgpXG4iKSk7CisgICAgICAgICAgICAgICAgc2NwLT5TQ3AuYnVmZmVyc19yZXNpZHVhbCA9IGdkdGhfdXBkYXRlX3RpbWVvdXQoaGFudW0sIHNjcCwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPnNtcF9sb2NrLCBmbGFncyk7CkBAIC05OTcsMTEgKzgyOSwxNCBAQAogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZoYS0+c21wX2xvY2ssIGZsYWdzKTsKIAogICAgIGZvciAoc2NwID0gaGEtPnJlcV9maXJzdDsgc2NwOyBzY3AgPSAoU2NzaV9DbW5kICopc2NwLT5TQ3AucHRyKSB7Ci0gICAgICAgIGIgPSB2aXJ0X2N0ciA/IE5VTURBVEEoc2NwLT5kZXZpY2UtPmhvc3QpLT5idXNudW0gOiBzY3AtPmRldmljZS0+Y2hhbm5lbDsKLSAgICAgICAgdCA9IHNjcC0+ZGV2aWNlLT5pZDsKLSAgICAgICAgaWYgKHQgPT0gKHVuY2hhcilpZCAmJiBiID09ICh1bmNoYXIpYnVzbnVtKSB7Ci0gICAgICAgICAgICBUUkFDRTIoKCJnZHRoX3N0YXJ0X3RpbWVvdXQoKTogdXBkYXRlX3RpbWVvdXQoKVxuIikpOwotICAgICAgICAgICAgZ2R0aF91cGRhdGVfdGltZW91dChoYW51bSwgc2NwLCBzY3AtPlNDcC5idWZmZXJzX3Jlc2lkdWFsKTsKKyAgICAgICAgaWYgKHNjcC0+ZG9uZSAhPSBnZHRoX3Njc2lfZG9uZSkgeworICAgICAgICAgICAgYiA9IHZpcnRfY3RyID8KKyAgICAgICAgICAgICAgICBOVU1EQVRBKHNjcC0+ZGV2aWNlLT5ob3N0KS0+YnVzbnVtIDogc2NwLT5kZXZpY2UtPmNoYW5uZWw7CisgICAgICAgICAgICB0ID0gc2NwLT5kZXZpY2UtPmlkOworICAgICAgICAgICAgaWYgKHQgPT0gKHVuY2hhcilpZCAmJiBiID09ICh1bmNoYXIpYnVzbnVtKSB7CisgICAgICAgICAgICAgICAgVFJBQ0UyKCgiZ2R0aF9zdGFydF90aW1lb3V0KCk6IHVwZGF0ZV90aW1lb3V0KClcbiIpKTsKKyAgICAgICAgICAgICAgICBnZHRoX3VwZGF0ZV90aW1lb3V0KGhhbnVtLCBzY3AsIHNjcC0+U0NwLmJ1ZmZlcnNfcmVzaWR1YWwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5zbXBfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2dkdGhfcHJvYy5oIGIvZHJpdmVycy9zY3NpL2dkdGhfcHJvYy5oCmluZGV4IDI5NWU4MjUuLmE2NzllZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9nZHRoX3Byb2MuaAorKysgYi9kcml2ZXJzL3Njc2kvZ2R0aF9wcm9jLmgKQEAgLTUsMjAgKzUsMTYgQEAKICAqICRJZDogZ2R0aF9wcm9jLmgsdiAxLjE2IDIwMDQvMDEvMTQgMTM6MDk6MDEgYWNoaW0gRXhwICQKICAqLwogCitpbnQgZ2R0aF9leGVjdXRlKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCBnZHRoX2NtZF9zdHIgKmdkdGNtZCwgY2hhciAqY21uZCwKKyAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIHUzMiAqaW5mbyk7CisKIHN0YXRpYyBpbnQgZ2R0aF9zZXRfaW5mbyhjaGFyICpidWZmZXIsaW50IGxlbmd0aCxzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoYW51bSxpbnQgYnVzbnVtKTsKIHN0YXRpYyBpbnQgZ2R0aF9nZXRfaW5mbyhjaGFyICpidWZmZXIsY2hhciAqKnN0YXJ0LG9mZl90IG9mZnNldCxpbnQgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsaW50IGhhbnVtLGludCBidXNudW0pOwogCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwwKQotc3RhdGljIHZvaWQgZ2R0aF9kb19yZXEoU2NzaV9SZXF1ZXN0ICpzcnAsIGdkdGhfY21kX3N0ciAqY21kLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNtbmQsIGludCB0aW1lb3V0KTsKLXN0YXRpYyBpbnQgZ2R0aF9zZXRfYXNjX2luZm8oY2hhciAqYnVmZmVyLGludCBsZW5ndGgsaW50IGhhbnVtLFNjc2lfUmVxdWVzdCAqc2NwKTsKLSNlbHNlCi1zdGF0aWMgdm9pZCBnZHRoX2RvX2NtZChTY3NpX0NtbmQgKnNjcCwgZ2R0aF9jbWRfc3RyICpjbWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY21uZCwgaW50IHRpbWVvdXQpOwotc3RhdGljIGludCBnZHRoX3NldF9hc2NfaW5mbyhjaGFyICpidWZmZXIsaW50IGxlbmd0aCxpbnQgaGFudW0sU2NzaV9DbW5kICpzY3ApOwotI2VuZGlmCitzdGF0aWMgaW50IGdkdGhfc2V0X2FzY19pbmZvKHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsIGNoYXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCwgaW50IGhhbnVtKTsKIAogc3RhdGljIGNoYXIgKmdkdGhfaW9jdGxfYWxsb2MoaW50IGhhbnVtLCBpbnQgc2l6ZSwgaW50IHNjcmF0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZzY0ICpwYWRkcik7ICAKQEAgLTI4LDcgKzI0LDUgQEAKIHN0YXRpYyB2b2lkIGdkdGhfc3RhcnRfdGltZW91dChpbnQgaGFudW0sIGludCBidXNudW0sIGludCBpZCk7CiBzdGF0aWMgaW50IGdkdGhfdXBkYXRlX3RpbWVvdXQoaW50IGhhbnVtLCBTY3NpX0NtbmQgKnNjcCwgaW50IHRpbWVvdXQpOwogCi12b2lkIGdkdGhfc2NzaV9kb25lKFNjc2lfQ21uZCAqc2NwKTsKLQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ocHRpb3AuYyBiL2RyaXZlcnMvc2NzaS9ocHRpb3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzc4MDgzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zY3NpL2hwdGlvcC5jCkBAIC0wLDAgKzEsMTQ5MyBAQAorLyoKKyAqIEhpZ2hQb2ludCBSUjN4eHggY29udHJvbGxlciBkcml2ZXIgZm9yIExpbnV4CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgSGlnaFBvaW50IFRlY2hub2xvZ2llcywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogUGxlYXNlIHJlcG9ydCBidWdzL2NvbW1lbnRzL3N1Z2dlc3Rpb25zIHRvIGxpbnV4QGhpZ2hwb2ludC10ZWNoLmNvbQorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdCBodHRwOi8vd3d3LmhpZ2hwb2ludC10ZWNoLmNvbQorICovCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L2hkcmVnLmg+CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vZGl2NjQuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfdGNxLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3QuaD4KKworI2luY2x1ZGUgImhwdGlvcC5oIgorCitNT0RVTEVfQVVUSE9SKCJIaWdoUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkhpZ2hQb2ludCBSb2NrZXRSQUlEIDN4eHggU0FUQSBDb250cm9sbGVyIERyaXZlciIpOworCitzdGF0aWMgY2hhciBkcml2ZXJfbmFtZVtdID0gImhwdGlvcCI7CitzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZV9sb25nW10gPSAiUm9ja2V0UkFJRCAzeHh4IFNBVEEgQ29udHJvbGxlciBkcml2ZXIiOworc3RhdGljIGNvbnN0IGNoYXIgZHJpdmVyX3ZlcltdID0gInYxLjAgKDA2MDQyNikiOworCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGhwdGlvcF9oYmFfbGlzdF9sb2NrKTsKK3N0YXRpYyBMSVNUX0hFQUQoaHB0aW9wX2hiYV9saXN0KTsKK3N0YXRpYyBpbnQgaHB0aW9wX2NkZXZfbWFqb3IgPSAtMTsKKworc3RhdGljIHZvaWQgaHB0aW9wX2hvc3RfcmVxdWVzdF9jYWxsYmFjayhzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhLCB1MzIgdGFnKTsKK3N0YXRpYyB2b2lkIGhwdGlvcF9pb3BfcmVxdWVzdF9jYWxsYmFjayhzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhLCB1MzIgdGFnKTsKK3N0YXRpYyB2b2lkIGhwdGlvcF9tZXNzYWdlX2NhbGxiYWNrKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIHUzMiBtc2cpOworCitzdGF0aWMgaW5saW5lIHZvaWQgaHB0aW9wX3BjaV9wb3N0aW5nX2ZsdXNoKHN0cnVjdCBocHRfaW9wbXUgX19pb21lbSAqaW9wKQoreworCXJlYWRsKCZpb3AtPm91dGJvdW5kX2ludHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQgaW9wX3dhaXRfcmVhZHkoc3RydWN0IGhwdF9pb3BtdSBfX2lvbWVtICppb3AsIHUzMiBtaWxsaXNlYykKK3sKKwl1MzIgcmVxID0gMDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBtaWxsaXNlYzsgaSsrKSB7CisJCXJlcSA9IHJlYWRsKCZpb3AtPmluYm91bmRfcXVldWUpOworCQlpZiAocmVxICE9IElPUE1VX1FVRVVFX0VNUFRZKQorCQkJYnJlYWs7CisJCW1zbGVlcCgxKTsKKwl9CisKKwlpZiAocmVxICE9IElPUE1VX1FVRVVFX0VNUFRZKSB7CisJCXdyaXRlbChyZXEsICZpb3AtPm91dGJvdW5kX3F1ZXVlKTsKKwkJaHB0aW9wX3BjaV9wb3N0aW5nX2ZsdXNoKGlvcCk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQgaHB0aW9wX3JlcXVlc3RfY2FsbGJhY2soc3RydWN0IGhwdGlvcF9oYmEgKmhiYSwgdTMyIHRhZykKK3sKKwlpZiAoKHRhZyAmIElPUE1VX1FVRVVFX01BU0tfSE9TVF9CSVRTKSA9PSBJT1BNVV9RVUVVRV9BRERSX0hPU1RfQklUKQorCQlyZXR1cm4gaHB0aW9wX2hvc3RfcmVxdWVzdF9jYWxsYmFjayhoYmEsCisJCQkJdGFnICYgfklPUE1VX1FVRVVFX0FERFJfSE9TVF9CSVQpOworCWVsc2UKKwkJcmV0dXJuIGhwdGlvcF9pb3BfcmVxdWVzdF9jYWxsYmFjayhoYmEsIHRhZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBocHRpb3BfZHJhaW5fb3V0Ym91bmRfcXVldWUoc3RydWN0IGhwdGlvcF9oYmEgKmhiYSkKK3sKKwl1MzIgcmVxOworCisJd2hpbGUgKChyZXEgPSByZWFkbCgmaGJhLT5pb3AtPm91dGJvdW5kX3F1ZXVlKSkgIT0gSU9QTVVfUVVFVUVfRU1QVFkpIHsKKworCQlpZiAocmVxICYgSU9QTVVfUVVFVUVfTUFTS19IT1NUX0JJVFMpCisJCQlocHRpb3BfcmVxdWVzdF9jYWxsYmFjayhoYmEsIHJlcSk7CisJCWVsc2UgeworCQkJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9oZWFkZXIgX19pb21lbSAqIHA7CisKKwkJCXAgPSAoc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9oZWFkZXIgX19pb21lbSAqKQorCQkJCSgoY2hhciBfX2lvbWVtICopaGJhLT5pb3AgKyByZXEpOworCisJCQlpZiAocmVhZGwoJnAtPmZsYWdzKSAmIElPUF9SRVFVRVNUX0ZMQUdfU1lOQ19SRVFVRVNUKSB7CisJCQkJaWYgKHJlYWRsKCZwLT5jb250ZXh0KSkKKwkJCQkJaHB0aW9wX3JlcXVlc3RfY2FsbGJhY2soaGJhLCByZXEpOworCQkJCWVsc2UKKwkJCQkJd3JpdGVsKDEsICZwLT5jb250ZXh0KTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlocHRpb3BfcmVxdWVzdF9jYWxsYmFjayhoYmEsIHJlcSk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgX19pb3BfaW50cihzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhKQoreworCXN0cnVjdCBocHRfaW9wbXUgX19pb21lbSAqaW9wID0gaGJhLT5pb3A7CisJdTMyIHN0YXR1czsKKwlpbnQgcmV0ID0gMDsKKworCXN0YXR1cyA9IHJlYWRsKCZpb3AtPm91dGJvdW5kX2ludHN0YXR1cyk7CisKKwlpZiAoc3RhdHVzICYgSU9QTVVfT1VUQk9VTkRfSU5UX01TRzApIHsKKwkJdTMyIG1zZyA9IHJlYWRsKCZpb3AtPm91dGJvdW5kX21zZ2FkZHIwKTsKKwkJZHByaW50aygicmVjZWl2ZWQgb3V0Ym91bmQgbXNnICV4XG4iLCBtc2cpOworCQl3cml0ZWwoSU9QTVVfT1VUQk9VTkRfSU5UX01TRzAsICZpb3AtPm91dGJvdW5kX2ludHN0YXR1cyk7CisJCWhwdGlvcF9tZXNzYWdlX2NhbGxiYWNrKGhiYSwgbXNnKTsKKwkJcmV0ID0gMTsKKwl9CisKKwlpZiAoc3RhdHVzICYgSU9QTVVfT1VUQk9VTkRfSU5UX1BPU1RRVUVVRSkgeworCQlocHRpb3BfZHJhaW5fb3V0Ym91bmRfcXVldWUoaGJhKTsKKwkJcmV0ID0gMTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGlvcF9zZW5kX3N5bmNfcmVxdWVzdChzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhLAorCQkJCQl2b2lkIF9faW9tZW0gKl9yZXEsIHUzMiBtaWxsaXNlYykKK3sKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2hlYWRlciBfX2lvbWVtICpyZXEgPSBfcmVxOworCXUzMiBpOworCisJd3JpdGVsKHJlYWRsKCZyZXEtPmZsYWdzKSB8IElPUF9SRVFVRVNUX0ZMQUdfU1lOQ19SRVFVRVNULAorCQkJJnJlcS0+ZmxhZ3MpOworCisJd3JpdGVsKDAsICZyZXEtPmNvbnRleHQpOworCisJd3JpdGVsKCh1bnNpZ25lZCBsb25nKXJlcSAtICh1bnNpZ25lZCBsb25nKWhiYS0+aW9wLAorCQkJJmhiYS0+aW9wLT5pbmJvdW5kX3F1ZXVlKTsKKworCWhwdGlvcF9wY2lfcG9zdGluZ19mbHVzaChoYmEtPmlvcCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWlsbGlzZWM7IGkrKykgeworCQlfX2lvcF9pbnRyKGhiYSk7CisJCWlmIChyZWFkbCgmcmVxLT5jb250ZXh0KSkKKwkJCXJldHVybiAwOworCQltc2xlZXAoMSk7CisJfQorCisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IGlvcF9zZW5kX3N5bmNfbXNnKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIHUzMiBtc2csIHUzMiBtaWxsaXNlYykKK3sKKwl1MzIgaTsKKworCWhiYS0+bXNnX2RvbmUgPSAwOworCisJd3JpdGVsKG1zZywgJmhiYS0+aW9wLT5pbmJvdW5kX21zZ2FkZHIwKTsKKworCWhwdGlvcF9wY2lfcG9zdGluZ19mbHVzaChoYmEtPmlvcCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWlsbGlzZWM7IGkrKykgeworCQlzcGluX2xvY2tfaXJxKGhiYS0+aG9zdC0+aG9zdF9sb2NrKTsKKwkJX19pb3BfaW50cihoYmEpOworCQlzcGluX3VubG9ja19pcnEoaGJhLT5ob3N0LT5ob3N0X2xvY2spOworCQlpZiAoaGJhLT5tc2dfZG9uZSkKKwkJCWJyZWFrOworCQltc2xlZXAoMSk7CisJfQorCisJcmV0dXJuIGhiYS0+bXNnX2RvbmU/IDAgOiAtMTsKK30KKworc3RhdGljIGludCBpb3BfZ2V0X2NvbmZpZyhzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhLAorCQkJCXN0cnVjdCBocHRfaW9wX3JlcXVlc3RfZ2V0X2NvbmZpZyAqY29uZmlnKQoreworCXUzMiByZXEzMjsKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2dldF9jb25maWcgX19pb21lbSAqcmVxOworCisJcmVxMzIgPSByZWFkbCgmaGJhLT5pb3AtPmluYm91bmRfcXVldWUpOworCWlmIChyZXEzMiA9PSBJT1BNVV9RVUVVRV9FTVBUWSkKKwkJcmV0dXJuIC0xOworCisJcmVxID0gKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfZ2V0X2NvbmZpZyBfX2lvbWVtICopCisJCQkoKHVuc2lnbmVkIGxvbmcpaGJhLT5pb3AgKyByZXEzMik7CisKKwl3cml0ZWwoMCwgJnJlcS0+aGVhZGVyLmZsYWdzKTsKKwl3cml0ZWwoSU9QX1JFUVVFU1RfVFlQRV9HRVRfQ09ORklHLCAmcmVxLT5oZWFkZXIudHlwZSk7CisJd3JpdGVsKHNpemVvZihzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2dldF9jb25maWcpLCAmcmVxLT5oZWFkZXIuc2l6ZSk7CisJd3JpdGVsKElPUF9SRVNVTFRfUEVORElORywgJnJlcS0+aGVhZGVyLnJlc3VsdCk7CisKKwlpZiAoaW9wX3NlbmRfc3luY19yZXF1ZXN0KGhiYSwgcmVxLCAyMDAwMCkpIHsKKwkJZHByaW50aygiR2V0IGNvbmZpZyBzZW5kIGNtZCBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJbWVtY3B5X2Zyb21pbyhjb25maWcsIHJlcSwgc2l6ZW9mKCpjb25maWcpKTsKKwl3cml0ZWwocmVxMzIsICZoYmEtPmlvcC0+b3V0Ym91bmRfcXVldWUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlvcF9zZXRfY29uZmlnKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsCisJCQkJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zZXRfY29uZmlnICpjb25maWcpCit7CisJdTMyIHJlcTMyOworCXN0cnVjdCBocHRfaW9wX3JlcXVlc3Rfc2V0X2NvbmZpZyBfX2lvbWVtICpyZXE7CisKKwlyZXEzMiA9IHJlYWRsKCZoYmEtPmlvcC0+aW5ib3VuZF9xdWV1ZSk7CisJaWYgKHJlcTMyID09IElPUE1VX1FVRVVFX0VNUFRZKQorCQlyZXR1cm4gLTE7CisKKwlyZXEgPSAoc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zZXRfY29uZmlnIF9faW9tZW0gKikKKwkJCSgodW5zaWduZWQgbG9uZyloYmEtPmlvcCArIHJlcTMyKTsKKworCW1lbWNweV90b2lvKCh1OCBfX2lvbWVtICopcmVxICsgc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyKSwKKwkJKHU4ICopY29uZmlnICsgc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyKSwKKwkJc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3Rfc2V0X2NvbmZpZykgLQorCQkJc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyKSk7CisKKwl3cml0ZWwoMCwgJnJlcS0+aGVhZGVyLmZsYWdzKTsKKwl3cml0ZWwoSU9QX1JFUVVFU1RfVFlQRV9TRVRfQ09ORklHLCAmcmVxLT5oZWFkZXIudHlwZSk7CisJd3JpdGVsKHNpemVvZihzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3NldF9jb25maWcpLCAmcmVxLT5oZWFkZXIuc2l6ZSk7CisJd3JpdGVsKElPUF9SRVNVTFRfUEVORElORywgJnJlcS0+aGVhZGVyLnJlc3VsdCk7CisKKwlpZiAoaW9wX3NlbmRfc3luY19yZXF1ZXN0KGhiYSwgcmVxLCAyMDAwMCkpIHsKKwkJZHByaW50aygiU2V0IGNvbmZpZyBzZW5kIGNtZCBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJd3JpdGVsKHJlcTMyLCAmaGJhLT5pb3AtPm91dGJvdW5kX3F1ZXVlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBocHRpb3BfaW5pdGlhbGl6ZV9pb3Aoc3RydWN0IGhwdGlvcF9oYmEgKmhiYSkKK3sKKwlzdHJ1Y3QgaHB0X2lvcG11IF9faW9tZW0gKmlvcCA9IGhiYS0+aW9wOworCisJLyogZW5hYmxlIGludGVycnVwdHMgKi8KKwl3cml0ZWwofihJT1BNVV9PVVRCT1VORF9JTlRfUE9TVFFVRVVFIHwgSU9QTVVfT1VUQk9VTkRfSU5UX01TRzApLAorCQkJJmlvcC0+b3V0Ym91bmRfaW50bWFzayk7CisKKwloYmEtPmluaXRpYWxpemVkID0gMTsKKworCS8qIHN0YXJ0IGJhY2tncm91bmQgdGFza3MgKi8KKwlpZiAoaW9wX3NlbmRfc3luY19tc2coaGJhLAorCQkJSU9QTVVfSU5CT1VORF9NU0cwX1NUQVJUX0JBQ0tHUk9VTkRfVEFTSywgNTAwMCkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IGZhaWwgdG8gc3RhcnQgYmFja2dyb3VuZCB0YXNrXG4iLAorCQkJaGJhLT5ob3N0LT5ob3N0X25vKTsKKwkJcmV0dXJuIC0xOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBocHRpb3BfbWFwX3BjaV9iYXIoc3RydWN0IGhwdGlvcF9oYmEgKmhiYSkKK3sKKwl1MzIgbWVtX2Jhc2VfcGh5LCBsZW5ndGg7CisJdm9pZCBfX2lvbWVtICptZW1fYmFzZV92aXJ0OworCXN0cnVjdCBwY2lfZGV2ICpwY2lkZXYgPSBoYmEtPnBjaWRldjsKKworCWlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwY2lkZXYsIDApICYgSU9SRVNPVVJDRV9NRU0pKSB7CisJCXByaW50ayhLRVJOX0VSUiAic2NzaSVkOiBwY2kgcmVzb3VyY2UgaW52YWxpZFxuIiwKKwkJCQloYmEtPmhvc3QtPmhvc3Rfbm8pOworCQlyZXR1cm4gLTE7CisJfQorCisJbWVtX2Jhc2VfcGh5ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaWRldiwgMCk7CisJbGVuZ3RoID0gcGNpX3Jlc291cmNlX2xlbihwY2lkZXYsIDApOworCW1lbV9iYXNlX3ZpcnQgPSBpb3JlbWFwKG1lbV9iYXNlX3BoeSwgbGVuZ3RoKTsKKworCWlmICghbWVtX2Jhc2VfdmlydCkgeworCQlwcmludGsoS0VSTl9FUlIgInNjc2klZDogRmFpbCB0byBpb3JlbWFwIG1lbW9yeSBzcGFjZVxuIiwKKwkJCQloYmEtPmhvc3QtPmhvc3Rfbm8pOworCQlyZXR1cm4gLTE7CisJfQorCisJaGJhLT5pb3AgPSBtZW1fYmFzZV92aXJ0OworCWRwcmludGsoImhwdGlvcF9tYXBfcGNpX2JhcjogaW9wPSVwXG4iLCBoYmEtPmlvcCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGhwdGlvcF9tZXNzYWdlX2NhbGxiYWNrKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIHUzMiBtc2cpCit7CisJZHByaW50aygiaW9wIG1lc3NhZ2UgMHgleFxuIiwgbXNnKTsKKworCWlmICghaGJhLT5pbml0aWFsaXplZCkKKwkJcmV0dXJuOworCisJaWYgKG1zZyA9PSBJT1BNVV9JTkJPVU5EX01TRzBfUkVTRVQpIHsKKwkJYXRvbWljX3NldCgmaGJhLT5yZXNldHRpbmcsIDApOworCQl3YWtlX3VwKCZoYmEtPnJlc2V0X3dxKTsKKwl9CisJZWxzZSBpZiAobXNnIDw9IElPUE1VX0lOQk9VTkRfTVNHMF9NQVgpCisJCWhiYS0+bXNnX2RvbmUgPSAxOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBocHRpb3BfcmVxdWVzdCAqZ2V0X3JlcShzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhKQoreworCXN0cnVjdCBocHRpb3BfcmVxdWVzdCAqcmV0OworCisJZHByaW50aygiZ2V0X3JlcSA6IHJlcT0lcFxuIiwgaGJhLT5yZXFfbGlzdCk7CisKKwlyZXQgPSBoYmEtPnJlcV9saXN0OworCWlmIChyZXQpCisJCWhiYS0+cmVxX2xpc3QgPSByZXQtPm5leHQ7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9yZXEoc3RydWN0IGhwdGlvcF9oYmEgKmhiYSwgc3RydWN0IGhwdGlvcF9yZXF1ZXN0ICpyZXEpCit7CisJZHByaW50aygiZnJlZV9yZXEoJWQsICVwKVxuIiwgcmVxLT5pbmRleCwgcmVxKTsKKwlyZXEtPm5leHQgPSBoYmEtPnJlcV9saXN0OworCWhiYS0+cmVxX2xpc3QgPSByZXE7Cit9CisKK3N0YXRpYyB2b2lkIGhwdGlvcF9ob3N0X3JlcXVlc3RfY2FsbGJhY2soc3RydWN0IGhwdGlvcF9oYmEgKmhiYSwgdTMyIHRhZykKK3sKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCAqcmVxOworCXN0cnVjdCBzY3NpX2NtbmQgKnNjcDsKKworCXJlcSA9IChzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCAqKWhiYS0+cmVxc1t0YWddLnJlcV92aXJ0OworCWRwcmludGsoImhwdGlvcF9ob3N0X3JlcXVlc3RfY2FsbGJhY2s6IHJlcT0lcCwgdHlwZT0lZCwgIgorCQkJInJlc3VsdD0lZCwgY29udGV4dD0weCV4IHRhZz0lZFxuIiwKKwkJCXJlcSwgcmVxLT5oZWFkZXIudHlwZSwgcmVxLT5oZWFkZXIucmVzdWx0LAorCQkJcmVxLT5oZWFkZXIuY29udGV4dCwgdGFnKTsKKworCUJVR19PTighcmVxLT5oZWFkZXIucmVzdWx0KTsKKwlCVUdfT04ocmVxLT5oZWFkZXIudHlwZSAhPSBjcHVfdG9fbGUzMihJT1BfUkVRVUVTVF9UWVBFX1NDU0lfQ09NTUFORCkpOworCisJc2NwID0gaGJhLT5yZXFzW3RhZ10uc2NwOworCisJaWYgKEhQVF9TQ1Aoc2NwKS0+bWFwcGVkKSB7CisJCWlmIChzY3AtPnVzZV9zZykKKwkJCXBjaV91bm1hcF9zZyhoYmEtPnBjaWRldiwKKwkJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc2NwLT5yZXF1ZXN0X2J1ZmZlciwKKwkJCQlzY3AtPnVzZV9zZywKKwkJCQlzY3AtPnNjX2RhdGFfZGlyZWN0aW9uCisJCQkpOworCQllbHNlCisJCQlwY2lfdW5tYXBfc2luZ2xlKGhiYS0+cGNpZGV2LAorCQkJCUhQVF9TQ1Aoc2NwKS0+ZG1hX2hhbmRsZSwKKwkJCQlzY3AtPnJlcXVlc3RfYnVmZmxlbiwKKwkJCQlzY3AtPnNjX2RhdGFfZGlyZWN0aW9uCisJCQkpOworCX0KKworCXN3aXRjaCAobGUzMl90b19jcHUocmVxLT5oZWFkZXIucmVzdWx0KSkgeworCWNhc2UgSU9QX1JFU1VMVF9TVUNDRVNTOgorCQlzY3AtPnJlc3VsdCA9IChESURfT0s8PDE2KTsKKwkJYnJlYWs7CisJY2FzZSBJT1BfUkVTVUxUX0JBRF9UQVJHRVQ6CisJCXNjcC0+cmVzdWx0ID0gKERJRF9CQURfVEFSR0VUPDwxNik7CisJCWJyZWFrOworCWNhc2UgSU9QX1JFU1VMVF9CVVNZOgorCQlzY3AtPnJlc3VsdCA9IChESURfQlVTX0JVU1k8PDE2KTsKKwkJYnJlYWs7CisJY2FzZSBJT1BfUkVTVUxUX1JFU0VUOgorCQlzY3AtPnJlc3VsdCA9IChESURfUkVTRVQ8PDE2KTsKKwkJYnJlYWs7CisJY2FzZSBJT1BfUkVTVUxUX0ZBSUw6CisJCXNjcC0+cmVzdWx0ID0gKERJRF9FUlJPUjw8MTYpOworCQlicmVhazsKKwljYXNlIElPUF9SRVNVTFRfSU5WQUxJRF9SRVFVRVNUOgorCQlzY3AtPnJlc3VsdCA9IChESURfQUJPUlQ8PDE2KTsKKwkJYnJlYWs7CisJY2FzZSBJT1BfUkVTVUxUX01PREVfU0VOU0VfQ0hFQ0tfQ09ORElUSU9OOgorCQlzY3AtPnJlc3VsdCA9IFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTjsKKwkJbWVtc2V0KCZzY3AtPnNlbnNlX2J1ZmZlciwKKwkJCQkwLCBzaXplb2Yoc2NwLT5zZW5zZV9idWZmZXIpKTsKKwkJbWVtY3B5KCZzY3AtPnNlbnNlX2J1ZmZlciwKKwkJCSZyZXEtPnNnX2xpc3QsIGxlMzJfdG9fY3B1KHJlcS0+ZGF0YXhmZXJfbGVuZ3RoKSk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJc2NwLT5yZXN1bHQgPSAoKERSSVZFUl9JTlZBTElEfFNVR0dFU1RfQUJPUlQpPDwyNCkgfAorCQkJCQkoRElEX0FCT1JUPDwxNik7CisJCWJyZWFrOworCX0KKworCWRwcmludGsoInNjc2lfZG9uZSglcClcbiIsIHNjcCk7CisJc2NwLT5zY3NpX2RvbmUoc2NwKTsKKwlmcmVlX3JlcShoYmEsICZoYmEtPnJlcXNbdGFnXSk7Cit9CisKK3ZvaWQgaHB0aW9wX2lvcF9yZXF1ZXN0X2NhbGxiYWNrKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIHUzMiB0YWcpCit7CisJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9oZWFkZXIgX19pb21lbSAqcmVxOworCXN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaW9jdGxfY29tbWFuZCBfX2lvbWVtICpwOworCXN0cnVjdCBocHRfaW9jdGxfayAqYXJnOworCisJcmVxID0gKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyIF9faW9tZW0gKikKKwkJCSgodW5zaWduZWQgbG9uZyloYmEtPmlvcCArIHRhZyk7CisJZHByaW50aygiaHB0aW9wX2lvcF9yZXF1ZXN0X2NhbGxiYWNrOiByZXE9JXAsIHR5cGU9JWQsICIKKwkJCSJyZXN1bHQ9JWQsIGNvbnRleHQ9MHgleCB0YWc9JWRcbiIsCisJCQlyZXEsIHJlYWRsKCZyZXEtPnR5cGUpLCByZWFkbCgmcmVxLT5yZXN1bHQpLAorCQkJcmVhZGwoJnJlcS0+Y29udGV4dCksIHRhZyk7CisKKwlCVUdfT04oIXJlYWRsKCZyZXEtPnJlc3VsdCkpOworCUJVR19PTihyZWFkbCgmcmVxLT50eXBlKSAhPSBJT1BfUkVRVUVTVF9UWVBFX0lPQ1RMX0NPTU1BTkQpOworCisJcCA9IChzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2lvY3RsX2NvbW1hbmQgX19pb21lbSAqKXJlcTsKKwlhcmcgPSAoc3RydWN0IGhwdF9pb2N0bF9rICopKHVuc2lnbmVkIGxvbmcpCisJCShyZWFkbCgmcmVxLT5jb250ZXh0KSB8CisJCQkoKHU2NClyZWFkbCgmcmVxLT5jb250ZXh0X2hpMzIpPDwzMikpOworCisJaWYgKHJlYWRsKCZyZXEtPnJlc3VsdCkgPT0gSU9QX1JFU1VMVF9TVUNDRVNTKSB7CisJCWFyZy0+cmVzdWx0ID0gSFBUX0lPQ1RMX1JFU1VMVF9PSzsKKworCQlpZiAoYXJnLT5vdXRidWZfc2l6ZSkKKwkJCW1lbWNweV9mcm9taW8oYXJnLT5vdXRidWYsCisJCQkJJnAtPmJ1ZlsocmVhZGwoJnAtPmluYnVmX3NpemUpICsgMykmIH4zXSwKKwkJCQlhcmctPm91dGJ1Zl9zaXplKTsKKworCQlpZiAoYXJnLT5ieXRlc19yZXR1cm5lZCkKKwkJCSphcmctPmJ5dGVzX3JldHVybmVkID0gYXJnLT5vdXRidWZfc2l6ZTsKKwl9CisJZWxzZQorCQlhcmctPnJlc3VsdCA9IEhQVF9JT0NUTF9SRVNVTFRfRkFJTEVEOworCisJYXJnLT5kb25lKGFyZyk7CisJd3JpdGVsKHRhZywgJmhiYS0+aW9wLT5vdXRib3VuZF9xdWV1ZSk7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBocHRpb3BfaW50cihpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBocHRpb3BfaGJhICAqaGJhID0gZGV2X2lkOworCWludCAgaGFuZGxlZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoaGJhLT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKKwloYW5kbGVkID0gX19pb3BfaW50cihoYmEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoaGJhLT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiBoYW5kbGVkOworfQorCitzdGF0aWMgaW50IGhwdGlvcF9idWlsZHNnbChzdHJ1Y3Qgc2NzaV9jbW5kICpzY3AsIHN0cnVjdCBocHRfaW9wc2cgKnBzZykKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gc2NwLT5kZXZpY2UtPmhvc3Q7CisJc3RydWN0IGhwdGlvcF9oYmEgKmhiYSA9IChzdHJ1Y3QgaHB0aW9wX2hiYSAqKWhvc3QtPmhvc3RkYXRhOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsaXN0ID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNjcC0+cmVxdWVzdF9idWZmZXI7CisKKwkvKgorCSAqIHRob3VnaCB3ZSdsbCBub3QgZ2V0IG5vbi11c2Vfc2cgZmllbGRzIGFueW1vcmUsCisJICoga2VlcCB1c2Vfc2cgY2hlY2tpbmcgYW55d2F5CisJICovCisJaWYgKHNjcC0+dXNlX3NnKSB7CisJCWludCBpZHg7CisKKwkJSFBUX1NDUChzY3ApLT5zZ2NudCA9IHBjaV9tYXBfc2coaGJhLT5wY2lkZXYsCisJCQkJc2dsaXN0LCBzY3AtPnVzZV9zZywKKwkJCQlzY3AtPnNjX2RhdGFfZGlyZWN0aW9uKTsKKwkJSFBUX1NDUChzY3ApLT5tYXBwZWQgPSAxOworCQlCVUdfT04oSFBUX1NDUChzY3ApLT5zZ2NudCA+IGhiYS0+bWF4X3NnX2Rlc2NyaXB0b3JzKTsKKworCQlmb3IgKGlkeCA9IDA7IGlkeCA8IEhQVF9TQ1Aoc2NwKS0+c2djbnQ7IGlkeCsrKSB7CisJCQlwc2dbaWR4XS5wY2lfYWRkcmVzcyA9CisJCQkJY3B1X3RvX2xlNjQoc2dfZG1hX2FkZHJlc3MoJnNnbGlzdFtpZHhdKSk7CisJCQlwc2dbaWR4XS5zaXplID0gY3B1X3RvX2xlMzIoc2dfZG1hX2xlbigmc2dsaXN0W2lkeF0pKTsKKwkJCXBzZ1tpZHhdLmVvdCA9IChpZHggPT0gSFBUX1NDUChzY3ApLT5zZ2NudCAtIDEpID8KKwkJCQljcHVfdG9fbGUzMigxKSA6IDA7CisJCX0KKworCQlyZXR1cm4gSFBUX1NDUChzY3ApLT5zZ2NudDsKKwl9IGVsc2UgeworCQlIUFRfU0NQKHNjcCktPmRtYV9oYW5kbGUgPSBwY2lfbWFwX3NpbmdsZSgKKwkJCQloYmEtPnBjaWRldiwKKwkJCQlzY3AtPnJlcXVlc3RfYnVmZmVyLAorCQkJCXNjcC0+cmVxdWVzdF9idWZmbGVuLAorCQkJCXNjcC0+c2NfZGF0YV9kaXJlY3Rpb24KKwkJCSk7CisJCUhQVF9TQ1Aoc2NwKS0+bWFwcGVkID0gMTsKKwkJcHNnLT5wY2lfYWRkcmVzcyA9IGNwdV90b19sZTY0KEhQVF9TQ1Aoc2NwKS0+ZG1hX2hhbmRsZSk7CisJCXBzZy0+c2l6ZSA9IGNwdV90b19sZTMyKHNjcC0+cmVxdWVzdF9idWZmbGVuKTsKKwkJcHNnLT5lb3QgPSBjcHVfdG9fbGUzMigxKTsKKwkJcmV0dXJuIDE7CisJfQorfQorCitzdGF0aWMgaW50IGhwdGlvcF9xdWV1ZWNvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqc2NwLAorCQkJCXZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKmhvc3QgPSBzY3AtPmRldmljZS0+aG9zdDsKKwlzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhID0gKHN0cnVjdCBocHRpb3BfaGJhICopaG9zdC0+aG9zdGRhdGE7CisJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zY3NpX2NvbW1hbmQgKnJlcTsKKwlpbnQgc2dfY291bnQgPSAwOworCXN0cnVjdCBocHRpb3BfcmVxdWVzdCAqX3JlcTsKKworCUJVR19PTighZG9uZSk7CisJc2NwLT5zY3NpX2RvbmUgPSBkb25lOworCisJX3JlcSA9IGdldF9yZXEoaGJhKTsKKwlpZiAoX3JlcSA9PSBOVUxMKSB7CisJCWRwcmludGsoImhwdGlvcF9xdWV1ZWNtZCA6IG5vIGZyZWUgcmVxXG4iKTsKKwkJcmV0dXJuIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1k7CisJfQorCisJX3JlcS0+c2NwID0gc2NwOworCisJZHByaW50aygiaHB0aW9wX3F1ZXVlY21kKHNjcD0lcCkgJWQvJWQvJWQvJWQgY2RiPSgleC0leC0leCkgIgorCQkJInJlcV9pbmRleD0lZCwgcmVxPSVwXG4iLAorCQkJc2NwLAorCQkJaG9zdC0+aG9zdF9ubywgc2NwLT5kZXZpY2UtPmNoYW5uZWwsCisJCQlzY3AtPmRldmljZS0+aWQsIHNjcC0+ZGV2aWNlLT5sdW4sCisJCQkqKCh1MzIgKikmc2NwLT5jbW5kKSwKKwkJCSooKHUzMiAqKSZzY3AtPmNtbmQgKyAxKSwKKwkJCSooKHUzMiAqKSZzY3AtPmNtbmQgKyAyKSwKKwkJCV9yZXEtPmluZGV4LCBfcmVxLT5yZXFfdmlydCk7CisKKwlzY3AtPnJlc3VsdCA9IDA7CisKKwlpZiAoc2NwLT5kZXZpY2UtPmNoYW5uZWwgfHwgc2NwLT5kZXZpY2UtPmx1biB8fAorCQkJc2NwLT5kZXZpY2UtPmlkID4gaGJhLT5tYXhfZGV2aWNlcykgeworCQlzY3AtPnJlc3VsdCA9IERJRF9CQURfVEFSR0VUIDw8IDE2OworCQlmcmVlX3JlcShoYmEsIF9yZXEpOworCQlnb3RvIGNtZF9kb25lOworCX0KKworCXJlcSA9IChzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCAqKV9yZXEtPnJlcV92aXJ0OworCisJLyogYnVpbGQgUy9HIHRhYmxlICovCisJaWYgKHNjcC0+cmVxdWVzdF9idWZmbGVuKQorCQlzZ19jb3VudCA9IGhwdGlvcF9idWlsZHNnbChzY3AsIHJlcS0+c2dfbGlzdCk7CisJZWxzZQorCQlIUFRfU0NQKHNjcCktPm1hcHBlZCA9IDA7CisKKwlyZXEtPmhlYWRlci5mbGFncyA9IGNwdV90b19sZTMyKElPUF9SRVFVRVNUX0ZMQUdfT1VUUFVUX0NPTlRFWFQpOworCXJlcS0+aGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUzMihJT1BfUkVRVUVTVF9UWVBFX1NDU0lfQ09NTUFORCk7CisJcmVxLT5oZWFkZXIucmVzdWx0ID0gY3B1X3RvX2xlMzIoSU9QX1JFU1VMVF9QRU5ESU5HKTsKKwlyZXEtPmhlYWRlci5jb250ZXh0ID0gY3B1X3RvX2xlMzIoSU9QTVVfUVVFVUVfQUREUl9IT1NUX0JJVCB8CisJCQkJCQkJKHUzMilfcmVxLT5pbmRleCk7CisJcmVxLT5oZWFkZXIuY29udGV4dF9oaTMyID0gMDsKKwlyZXEtPmRhdGF4ZmVyX2xlbmd0aCA9IGNwdV90b19sZTMyKHNjcC0+cmVxdWVzdF9idWZmbGVuKTsKKwlyZXEtPmNoYW5uZWwgPSBzY3AtPmRldmljZS0+Y2hhbm5lbDsKKwlyZXEtPnRhcmdldCA9IHNjcC0+ZGV2aWNlLT5pZDsKKwlyZXEtPmx1biA9IHNjcC0+ZGV2aWNlLT5sdW47CisJcmVxLT5oZWFkZXIuc2l6ZSA9IGNwdV90b19sZTMyKAorCQkJCXNpemVvZihzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCkKKwkJCQkgLSBzaXplb2Yoc3RydWN0IGhwdF9pb3BzZykKKwkJCQkgKyBzZ19jb3VudCAqIHNpemVvZihzdHJ1Y3QgaHB0X2lvcHNnKSk7CisKKwltZW1jcHkocmVxLT5jZGIsIHNjcC0+Y21uZCwgc2l6ZW9mKHJlcS0+Y2RiKSk7CisKKwl3cml0ZWwoSU9QTVVfUVVFVUVfQUREUl9IT1NUX0JJVCB8IF9yZXEtPnJlcV9zaGlmdGVkX3BoeSwKKwkJCSZoYmEtPmlvcC0+aW5ib3VuZF9xdWV1ZSk7CisKKwlyZXR1cm4gMDsKKworY21kX2RvbmU6CisJZHByaW50aygic2NzaV9kb25lKHNjcD0lcClcbiIsIHNjcCk7CisJc2NwLT5zY3NpX2RvbmUoc2NwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmhwdGlvcF9pbmZvKHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QpCit7CisJcmV0dXJuIGRyaXZlcl9uYW1lX2xvbmc7Cit9CisKK3N0YXRpYyBpbnQgaHB0aW9wX3Jlc2V0X2hiYShzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhKQoreworCWlmIChhdG9taWNfeGNoZygmaGJhLT5yZXNldHRpbmcsIDEpID09IDApIHsKKwkJYXRvbWljX2luYygmaGJhLT5yZXNldF9jb3VudCk7CisJCXdyaXRlbChJT1BNVV9JTkJPVU5EX01TRzBfUkVTRVQsCisJCQkJJmhiYS0+aW9wLT5vdXRib3VuZF9tc2dhZGRyMCk7CisJCWhwdGlvcF9wY2lfcG9zdGluZ19mbHVzaChoYmEtPmlvcCk7CisJfQorCisJd2FpdF9ldmVudF90aW1lb3V0KGhiYS0+cmVzZXRfd3EsCisJCQlhdG9taWNfcmVhZCgmaGJhLT5yZXNldHRpbmcpID09IDAsIDYwICogSFopOworCisJaWYgKGF0b21pY19yZWFkKCZoYmEtPnJlc2V0dGluZykpIHsKKwkJLyogSU9QIGlzIGluIHVua293biBzdGF0ZSwgYWJvcnQgcmVzZXQgKi8KKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IHJlc2V0IGZhaWxlZFxuIiwgaGJhLT5ob3N0LT5ob3N0X25vKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChpb3Bfc2VuZF9zeW5jX21zZyhoYmEsCisJCUlPUE1VX0lOQk9VTkRfTVNHMF9TVEFSVF9CQUNLR1JPVU5EX1RBU0ssIDUwMDApKSB7CisJCWRwcmludGsoInNjc2klZDogZmFpbCB0byBzdGFydCBiYWNrZ3JvdW5kIHRhc2tcbiIsCisJCQkJaGJhLT5ob3N0LT5ob3N0X25vKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBocHRpb3BfcmVzZXQoc3RydWN0IHNjc2lfY21uZCAqc2NwKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKiBob3N0ID0gc2NwLT5kZXZpY2UtPmhvc3Q7CisJc3RydWN0IGhwdGlvcF9oYmEgKiBoYmEgPSAoc3RydWN0IGhwdGlvcF9oYmEgKilob3N0LT5ob3N0ZGF0YTsKKworCXByaW50ayhLRVJOX1dBUk5JTkcgImhwdGlvcF9yZXNldCglZC8lZC8lZCkgc2NwPSVwXG4iLAorCQkJc2NwLT5kZXZpY2UtPmhvc3QtPmhvc3Rfbm8sIHNjcC0+ZGV2aWNlLT5jaGFubmVsLAorCQkJc2NwLT5kZXZpY2UtPmlkLCBzY3ApOworCisJcmV0dXJuIGhwdGlvcF9yZXNldF9oYmEoaGJhKT8gRkFJTEVEIDogU1VDQ0VTUzsKK30KKworc3RhdGljIGludCBocHRpb3BfYWRqdXN0X2Rpc2tfcXVldWVfZGVwdGgoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LAorCQkJCQkJaW50IHF1ZXVlX2RlcHRoKQoreworCWlmKHF1ZXVlX2RlcHRoID4gMjU2KQorCQlxdWV1ZV9kZXB0aCA9IDI1NjsKKwlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChzZGV2LCBNU0dfT1JERVJFRF9UQUcsIHF1ZXVlX2RlcHRoKTsKKwlyZXR1cm4gcXVldWVfZGVwdGg7Cit9CisKK3N0cnVjdCBocHRpb3BfZ2V0aW5mbyB7CisJY2hhciBfX3VzZXIgKmJ1ZmZlcjsKKwlsb2ZmX3QgYnVmbGVuZ3RoOworCWxvZmZfdCBidWZvZmZzZXQ7CisJbG9mZl90IGJ1ZmZpbGxlbjsKKwlsb2ZmX3QgZmlscG9zOworfTsKKworc3RhdGljIHZvaWQgaHB0aW9wX2NvcHlfbWVtX2luZm8oc3RydWN0IGhwdGlvcF9nZXRpbmZvICpwaW5mbywKKwkJCQkJY2hhciAqZGF0YSwgaW50IGRhdGFsZW4pCit7CisJaWYgKHBpbmZvLT5maWxwb3MgPCBwaW5mby0+YnVmb2Zmc2V0KSB7CisJCWlmIChwaW5mby0+ZmlscG9zICsgZGF0YWxlbiA8PSBwaW5mby0+YnVmb2Zmc2V0KSB7CisJCQlwaW5mby0+ZmlscG9zICs9IGRhdGFsZW47CisJCQlyZXR1cm47CisJCX0gZWxzZSB7CisJCQlkYXRhICs9IChwaW5mby0+YnVmb2Zmc2V0IC0gcGluZm8tPmZpbHBvcyk7CisJCQlkYXRhbGVuICAtPSAocGluZm8tPmJ1Zm9mZnNldCAtIHBpbmZvLT5maWxwb3MpOworCQkJcGluZm8tPmZpbHBvcyA9IHBpbmZvLT5idWZvZmZzZXQ7CisJCX0KKwl9CisKKwlwaW5mby0+ZmlscG9zICs9IGRhdGFsZW47CisJaWYgKHBpbmZvLT5idWZmaWxsZW4gPT0gcGluZm8tPmJ1Zmxlbmd0aCkKKwkJcmV0dXJuOworCisJaWYgKHBpbmZvLT5idWZsZW5ndGggLSBwaW5mby0+YnVmZmlsbGVuIDwgZGF0YWxlbikKKwkJZGF0YWxlbiA9IHBpbmZvLT5idWZsZW5ndGggLSBwaW5mby0+YnVmZmlsbGVuOworCisJaWYgKGNvcHlfdG9fdXNlcihwaW5mby0+YnVmZmVyICsgcGluZm8tPmJ1ZmZpbGxlbiwgZGF0YSwgZGF0YWxlbikpCisJCXJldHVybjsKKworCXBpbmZvLT5idWZmaWxsZW4gKz0gZGF0YWxlbjsKK30KKworc3RhdGljIGludCBocHRpb3BfY29weV9pbmZvKHN0cnVjdCBocHRpb3BfZ2V0aW5mbyAqcGluZm8sIGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwljaGFyIGJ1ZlsxMjhdOworCWludCBsZW47CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWxlbiA9IHZzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwlocHRpb3BfY29weV9tZW1faW5mbyhwaW5mbywgYnVmLCBsZW4pOworCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkIGhwdGlvcF9pb2N0bF9kb25lKHN0cnVjdCBocHRfaW9jdGxfayAqYXJnKQoreworCWFyZy0+ZG9uZSA9IE5VTEw7CisJd2FrZV91cCgmYXJnLT5oYmEtPmlvY3RsX3dxKTsKK30KKworc3RhdGljIHZvaWQgaHB0aW9wX2RvX2lvY3RsKHN0cnVjdCBocHRfaW9jdGxfayAqYXJnKQoreworCXN0cnVjdCBocHRpb3BfaGJhICpoYmEgPSBhcmctPmhiYTsKKwl1MzIgdmFsOworCXN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaW9jdGxfY29tbWFuZCBfX2lvbWVtICpyZXE7CisJaW50IGlvY3RsX3JldHJ5ID0gMDsKKworCWRwcmludGsoInNjc2klZDogaHB0aW9wX2RvX2lvY3RsXG4iLCBoYmEtPmhvc3QtPmhvc3Rfbm8pOworCisJLyoKKwkgKiBjaGVjayAoaW4gKyBvdXQpIGJ1ZmYgc2l6ZSBmcm9tIGFwcGxpY2F0aW9uLgorCSAqIG91dGJ1ZiBtdXN0IGJlIGR3b3JkIGFsaWduZWQuCisJICovCisJaWYgKCgoYXJnLT5pbmJ1Zl9zaXplICsgMykgJiB+MykgKyBhcmctPm91dGJ1Zl9zaXplID4KKwkJCWhiYS0+bWF4X3JlcXVlc3Rfc2l6ZQorCQkJCS0gc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyKQorCQkJCS0gNCAqIHNpemVvZih1MzIpKSB7CisJCWRwcmludGsoInNjc2klZDogaW9jdGwgYnVmIHNpemUgKCVkLyVkKSBpcyB0b28gbGFyZ2VcbiIsCisJCQkJaGJhLT5ob3N0LT5ob3N0X25vLAorCQkJCWFyZy0+aW5idWZfc2l6ZSwgYXJnLT5vdXRidWZfc2l6ZSk7CisJCWFyZy0+cmVzdWx0ID0gSFBUX0lPQ1RMX1JFU1VMVF9GQUlMRUQ7CisJCXJldHVybjsKKwl9CisKK3JldHJ5OgorCXNwaW5fbG9ja19pcnEoaGJhLT5ob3N0LT5ob3N0X2xvY2spOworCisJdmFsID0gcmVhZGwoJmhiYS0+aW9wLT5pbmJvdW5kX3F1ZXVlKTsKKwlpZiAodmFsID09IElPUE1VX1FVRVVFX0VNUFRZKSB7CisJCXNwaW5fdW5sb2NrX2lycShoYmEtPmhvc3QtPmhvc3RfbG9jayk7CisJCWRwcmludGsoInNjc2klZDogbm8gZnJlZSByZXEgZm9yIGlvY3RsXG4iLCBoYmEtPmhvc3QtPmhvc3Rfbm8pOworCQlhcmctPnJlc3VsdCA9IC0xOworCQlyZXR1cm47CisJfQorCisJcmVxID0gKHN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaW9jdGxfY29tbWFuZCBfX2lvbWVtICopCisJCQkoKHVuc2lnbmVkIGxvbmcpaGJhLT5pb3AgKyB2YWwpOworCisJd3JpdGVsKEhQVF9DVExfQ09ERV9MSU5VWF9UT19JT1AoYXJnLT5pb2N0bF9jb2RlKSwKKwkJCSZyZXEtPmlvY3RsX2NvZGUpOworCXdyaXRlbChhcmctPmluYnVmX3NpemUsICZyZXEtPmluYnVmX3NpemUpOworCXdyaXRlbChhcmctPm91dGJ1Zl9zaXplLCAmcmVxLT5vdXRidWZfc2l6ZSk7CisKKwkvKgorCSAqIHVzZSB0aGUgYnVmZmVyIG9uIHRoZSBJT1AgbG9jYWwgbWVtb3J5IGZpcnN0LCB0aGVuIGNvcHkgaXQKKwkgKiBiYWNrIHRvIGhvc3QuCisJICogdGhlIGNhbGxlcidzIHJlcXVlc3QgYnVmZmVyIHNob3VkbCBiZSBsaXR0bGUtZW5kaWFuLgorCSAqLworCWlmIChhcmctPmluYnVmX3NpemUpCisJCW1lbWNweV90b2lvKHJlcS0+YnVmLCBhcmctPmluYnVmLCBhcmctPmluYnVmX3NpemUpOworCisJLyogY29ycmVjdCB0aGUgY29udHJvbGxlciBJRCBmb3IgSU9QICovCisJaWYgKChhcmctPmlvY3RsX2NvZGUgPT0gSFBUX0lPQ1RMX0dFVF9DSEFOTkVMX0lORk8gfHwKKwkJYXJnLT5pb2N0bF9jb2RlID09IEhQVF9JT0NUTF9HRVRfQ09OVFJPTExFUl9JTkZPX1YyIHx8CisJCWFyZy0+aW9jdGxfY29kZSA9PSBIUFRfSU9DVExfR0VUX0NPTlRST0xMRVJfSU5GTykKKwkJJiYgYXJnLT5pbmJ1Zl9zaXplID49IHNpemVvZih1MzIpKQorCQl3cml0ZWwoMCwgcmVxLT5idWYpOworCisJd3JpdGVsKElPUF9SRVFVRVNUX1RZUEVfSU9DVExfQ09NTUFORCwgJnJlcS0+aGVhZGVyLnR5cGUpOworCXdyaXRlbCgwLCAmcmVxLT5oZWFkZXIuZmxhZ3MpOworCXdyaXRlbChvZmZzZXRvZihzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2lvY3RsX2NvbW1hbmQsIGJ1ZikKKwkJCSsgYXJnLT5pbmJ1Zl9zaXplLCAmcmVxLT5oZWFkZXIuc2l6ZSk7CisJd3JpdGVsKCh1MzIpKHVuc2lnbmVkIGxvbmcpYXJnLCAmcmVxLT5oZWFkZXIuY29udGV4dCk7CisJd3JpdGVsKEJJVFNfUEVSX0xPTkcgPiAzMiA/ICh1MzIpKCh1bnNpZ25lZCBsb25nKWFyZz4+MzIpIDogMCwKKwkJCSZyZXEtPmhlYWRlci5jb250ZXh0X2hpMzIpOworCXdyaXRlbChJT1BfUkVTVUxUX1BFTkRJTkcsICZyZXEtPmhlYWRlci5yZXN1bHQpOworCisJYXJnLT5yZXN1bHQgPSBIUFRfSU9DVExfUkVTVUxUX0ZBSUxFRDsKKwlhcmctPmRvbmUgPSBocHRpb3BfaW9jdGxfZG9uZTsKKworCXdyaXRlbCh2YWwsICZoYmEtPmlvcC0+aW5ib3VuZF9xdWV1ZSk7CisJaHB0aW9wX3BjaV9wb3N0aW5nX2ZsdXNoKGhiYS0+aW9wKTsKKworCXNwaW5fdW5sb2NrX2lycShoYmEtPmhvc3QtPmhvc3RfbG9jayk7CisKKwl3YWl0X2V2ZW50X3RpbWVvdXQoaGJhLT5pb2N0bF93cSwgYXJnLT5kb25lID09IE5VTEwsIDYwICogSFopOworCisJaWYgKGFyZy0+ZG9uZSAhPSBOVUxMKSB7CisJCWhwdGlvcF9yZXNldF9oYmEoaGJhKTsKKwkJaWYgKGlvY3RsX3JldHJ5KysgPCAzKQorCQkJZ290byByZXRyeTsKKwl9CisKKwlkcHJpbnRrKCJocHRfaW9wX2lvY3RsICV4IHJlc3VsdCAlZFxuIiwKKwkJCWFyZy0+aW9jdGxfY29kZSwgYXJnLT5yZXN1bHQpOworfQorCitzdGF0aWMgaW50IF9faHB0X2RvX2lvY3RsKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIHUzMiBjb2RlLCB2b2lkICppbmJ1ZiwKKwkJCXUzMiBpbnNpemUsIHZvaWQgKm91dGJ1ZiwgdTMyIG91dHNpemUpCit7CisJc3RydWN0IGhwdF9pb2N0bF9rIGFyZzsKKwlhcmcuaGJhID0gaGJhOworCWFyZy5pb2N0bF9jb2RlID0gY29kZTsKKwlhcmcuaW5idWYgPSBpbmJ1ZjsKKwlhcmcub3V0YnVmID0gb3V0YnVmOworCWFyZy5pbmJ1Zl9zaXplID0gaW5zaXplOworCWFyZy5vdXRidWZfc2l6ZSA9IG91dHNpemU7CisJYXJnLmJ5dGVzX3JldHVybmVkID0gTlVMTDsKKwlocHRpb3BfZG9faW9jdGwoJmFyZyk7CisJcmV0dXJuIGFyZy5yZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGhwdF9pZF92YWxpZChfX2xlMzIgaWQpCit7CisJcmV0dXJuIGlkICE9IDAgJiYgaWQgIT0gY3B1X3RvX2xlMzIoMHhmZmZmZmZmZik7Cit9CisKK3N0YXRpYyBpbnQgaHB0aW9wX2dldF9jb250cm9sbGVyX2luZm8oc3RydWN0IGhwdGlvcF9oYmEgKmhiYSwKKwkJCQkJc3RydWN0IGhwdF9jb250cm9sbGVyX2luZm8gKnBpbmZvKQoreworCWludCBpZCA9IDA7CisKKwlyZXR1cm4gX19ocHRfZG9faW9jdGwoaGJhLCBIUFRfSU9DVExfR0VUX0NPTlRST0xMRVJfSU5GTywKKwkJJmlkLCBzaXplb2YoaW50KSwgcGluZm8sIHNpemVvZigqcGluZm8pKTsKK30KKworCitzdGF0aWMgaW50IGhwdGlvcF9nZXRfY2hhbm5lbF9pbmZvKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsIGludCBidXMsCisJCQkJCXN0cnVjdCBocHRfY2hhbm5lbF9pbmZvICpwaW5mbykKK3sKKwl1MzIgaWRzWzJdOworCisJaWRzWzBdID0gMDsKKwlpZHNbMV0gPSBidXM7CisJcmV0dXJuIF9faHB0X2RvX2lvY3RsKGhiYSwgSFBUX0lPQ1RMX0dFVF9DSEFOTkVMX0lORk8sCisJCQkJaWRzLCBzaXplb2YoaWRzKSwgcGluZm8sIHNpemVvZigqcGluZm8pKTsKKworfQorCitzdGF0aWMgaW50IGhwdGlvcF9nZXRfbG9naWNhbF9kZXZpY2VzKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsCisJCQkJCV9fbGUzMiAqcGlkcywgaW50IG1heGNvdW50KQoreworCWludCBpOworCXUzMiBjb3VudCA9IG1heGNvdW50IC0gMTsKKworCWlmIChfX2hwdF9kb19pb2N0bChoYmEsIEhQVF9JT0NUTF9HRVRfTE9HSUNBTF9ERVZJQ0VTLAorCQkJJmNvdW50LCBzaXplb2YodTMyKSwKKwkJCXBpZHMsIHNpemVvZih1MzIpICogbWF4Y291bnQpKQorCQlyZXR1cm4gLTE7CisKKwltYXhjb3VudCA9IGxlMzJfdG9fY3B1KHBpZHNbMF0pOworCWZvciAoaSA9IDA7IGkgPCBtYXhjb3VudDsgaSsrKQorCQlwaWRzW2ldID0gcGlkc1tpKzFdOworCisJcmV0dXJuIG1heGNvdW50OworfQorCitzdGF0aWMgaW50IGhwdGlvcF9nZXRfZGV2aWNlX2luZm9fdjMoc3RydWN0IGhwdGlvcF9oYmEgKmhiYSwgX19sZTMyIGlkLAorCQkJCXN0cnVjdCBocHRfbG9naWNhbF9kZXZpY2VfaW5mb192MyAqcGluZm8pCit7CisJcmV0dXJuIF9faHB0X2RvX2lvY3RsKGhiYSwgSFBUX0lPQ1RMX0dFVF9ERVZJQ0VfSU5GT19WMywKKwkJCQkmaWQsIHNpemVvZih1MzIpLAorCQkJCXBpbmZvLCBzaXplb2YoKnBpbmZvKSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpnZXRfYXJyYXlfc3RhdHVzKHN0cnVjdCBocHRfbG9naWNhbF9kZXZpY2VfaW5mb192MyAqZGV2aW5mbykKK3sKKwlzdGF0aWMgY2hhciBzWzY0XTsKKwl1MzIgZmxhZ3MgPSBsZTMyX3RvX2NwdShkZXZpbmZvLT51LmFycmF5LmZsYWdzKTsKKwl1MzIgdHJhbnNfcHJvZyA9IGxlMzJfdG9fY3B1KGRldmluZm8tPnUuYXJyYXkudHJhbnNmb3JtaW5nX3Byb2dyZXNzKTsKKwl1MzIgcmViX3Byb2cgPSBsZTMyX3RvX2NwdShkZXZpbmZvLT51LmFycmF5LnJlYnVpbGRpbmdfcHJvZ3Jlc3MpOworCisJaWYgKGZsYWdzICYgQVJSQVlfRkxBR19ESVNBQkxFRCkKKwkJcmV0dXJuICJEaXNhYmxlZCI7CisJZWxzZSBpZiAoZmxhZ3MgJiBBUlJBWV9GTEFHX1RSQU5TRk9STUlORykKKwkJc3ByaW50ZihzLCAiRXhwYW5kaW5nL01pZ3JhdGluZyAlZC4lZCUlJXMlcyIsCisJCQl0cmFuc19wcm9nIC8gMTAwLAorCQkJdHJhbnNfcHJvZyAlIDEwMCwKKwkJCShmbGFncyAmIChBUlJBWV9GTEFHX05FRURCVUlMRElOR3xBUlJBWV9GTEFHX0JST0tFTikpPworCQkJCQkiLCBDcml0aWNhbCIgOiAiIiwKKwkJCSgoZmxhZ3MgJiBBUlJBWV9GTEFHX05FRURJTklUSUFMSVpJTkcpICYmCisJCQkgIShmbGFncyAmIEFSUkFZX0ZMQUdfUkVCVUlMRElORykgJiYKKwkJCSAhKGZsYWdzICYgQVJSQVlfRkxBR19JTklUSUFMSVpJTkcpKT8KKwkJCQkJIiwgVW5pbnRpYWxpemVkIiA6ICIiKTsKKwllbHNlIGlmICgoZmxhZ3MgJiBBUlJBWV9GTEFHX0JST0tFTikgJiYKKwkJCQlkZXZpbmZvLT51LmFycmF5LmFycmF5X3R5cGUgIT0gQVRfUkFJRDYpCisJCXJldHVybiAiQ3JpdGljYWwiOworCWVsc2UgaWYgKGZsYWdzICYgQVJSQVlfRkxBR19SRUJVSUxESU5HKQorCQlzcHJpbnRmKHMsCisJCQkoZmxhZ3MgJiBBUlJBWV9GTEFHX05FRURJTklUSUFMSVpJTkcpPworCQkJCSIlc0JhY2tncm91bmQgaW5pdGlhbGl6aW5nICVkLiVkJSUiIDoKKwkJCQkJIiVzUmVidWlsZGluZyAlZC4lZCUlIiwKKwkJCShmbGFncyAmIEFSUkFZX0ZMQUdfQlJPS0VOKT8gIkNyaXRpY2FsLCAiIDogIiIsCisJCQlyZWJfcHJvZyAvIDEwMCwKKwkJCXJlYl9wcm9nICUgMTAwKTsKKwllbHNlIGlmIChmbGFncyAmIEFSUkFZX0ZMQUdfVkVSSUZZSU5HKQorCQlzcHJpbnRmKHMsICIlc1ZlcmlmeWluZyAlZC4lZCUlIiwKKwkJCShmbGFncyAmIEFSUkFZX0ZMQUdfQlJPS0VOKT8gIkNyaXRpY2FsLCAiIDogIiIsCisJCQlyZWJfcHJvZyAvIDEwMCwKKwkJCXJlYl9wcm9nICUgMTAwKTsKKwllbHNlIGlmIChmbGFncyAmIEFSUkFZX0ZMQUdfSU5JVElBTElaSU5HKQorCQlzcHJpbnRmKHMsICIlc0Zvcmdyb3VuZCBpbml0aWFsaXppbmcgJWQuJWQlJSIsCisJCQkoZmxhZ3MgJiBBUlJBWV9GTEFHX0JST0tFTik/ICJDcml0aWNhbCwgIiA6ICIiLAorCQkJcmViX3Byb2cgLyAxMDAsCisJCQlyZWJfcHJvZyAlIDEwMCk7CisJZWxzZSBpZiAoZmxhZ3MgJiBBUlJBWV9GTEFHX05FRURUUkFOU0ZPUk0pCisJCXNwcmludGYocywiJXMlcyVzIiwgIk5lZWQgRXhwYW5kaW5nL01pZ3JhdGluZyIsCisJCQkoZmxhZ3MgJiBBUlJBWV9GTEFHX0JST0tFTik/ICJDcml0aWNhbCwgIiA6ICIiLAorCQkJKChmbGFncyAmIEFSUkFZX0ZMQUdfTkVFRElOSVRJQUxJWklORykgJiYKKwkJCSAhKGZsYWdzICYgQVJSQVlfRkxBR19SRUJVSUxESU5HKSAmJgorCQkJICEoZmxhZ3MgJiBBUlJBWV9GTEFHX0lOSVRJQUxJWklORykpPworCQkJCSIsIFVuaW50aWFsaXplZCIgOiAiIik7CisJZWxzZSBpZiAoZmxhZ3MgJiBBUlJBWV9GTEFHX05FRURJTklUSUFMSVpJTkcgJiYKKwkJIShmbGFncyAmIEFSUkFZX0ZMQUdfUkVCVUlMRElORykgJiYKKwkJIShmbGFncyAmIEFSUkFZX0ZMQUdfSU5JVElBTElaSU5HKSkKKwkJc3ByaW50ZihzLCIlc1VuaW5pdGlhbGl6ZWQiLAorCQkJKGZsYWdzICYgQVJSQVlfRkxBR19CUk9LRU4pPyAiQ3JpdGljYWwsICIgOiAiIik7CisJZWxzZSBpZiAoKGZsYWdzICYgQVJSQVlfRkxBR19ORUVEQlVJTERJTkcpIHx8CisJCQkoZmxhZ3MgJiBBUlJBWV9GTEFHX0JST0tFTikpCisJCXJldHVybiAiQ3JpdGljYWwiOworCWVsc2UKKwkJcmV0dXJuICJOb3JtYWwiOworCXJldHVybiBzOworfQorCitzdGF0aWMgdm9pZCBocHRpb3BfZHVtcF9kZXZpbmZvKHN0cnVjdCBocHRpb3BfaGJhICpoYmEsCisJCQlzdHJ1Y3QgaHB0aW9wX2dldGluZm8gKnBpbmZvLCBfX2xlMzIgaWQsIGludCBpbmRlbnQpCit7CisJc3RydWN0IGhwdF9sb2dpY2FsX2RldmljZV9pbmZvX3YzIGRldmluZm87CisJaW50IGk7CisJdTY0IGNhcGFjaXR5OworCisJZm9yIChpID0gMDsgaSA8IGluZGVudDsgaSsrKQorCQlocHRpb3BfY29weV9pbmZvKHBpbmZvLCAiXHQiKTsKKworCWlmIChocHRpb3BfZ2V0X2RldmljZV9pbmZvX3YzKGhiYSwgaWQsICZkZXZpbmZvKSkgeworCQlocHRpb3BfY29weV9pbmZvKHBpbmZvLCAidW5rbm93blxuIik7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKGRldmluZm8udHlwZSkgeworCisJY2FzZSBMRFRfREVWSUNFOiB7CisJCXN0cnVjdCBoZF9kcml2ZWlkICpkcml2ZWlkOworCQl1MzIgZmxhZ3MgPSBsZTMyX3RvX2NwdShkZXZpbmZvLnUuZGV2aWNlLmZsYWdzKTsKKworCQlkcml2ZWlkID0gKHN0cnVjdCBoZF9kcml2ZWlkICopZGV2aW5mby51LmRldmljZS5pZGVudDsKKwkJLyogbW9kZWxbXSBpcyA0MCBjaGFycyBsb25nLCBidXQgd2UganVzdCB3YW50IDIwIGNoYXJzIGhlcmUgKi8KKwkJZHJpdmVpZC0+bW9kZWxbMjBdID0gMDsKKworCQlpZiAoaW5kZW50KQorCQkJaWYgKGZsYWdzICYgREVWSUNFX0ZMQUdfRElTQUJMRUQpCisJCQkJaHB0aW9wX2NvcHlfaW5mbyhwaW5mbywiTWlzc2luZ1xuIik7CisJCQllbHNlCisJCQkJaHB0aW9wX2NvcHlfaW5mbyhwaW5mbywgIkNIJWQgJXNcbiIsCisJCQkJCWRldmluZm8udS5kZXZpY2UucGF0aF9pZCArIDEsCisJCQkJCWRyaXZlaWQtPm1vZGVsKTsKKwkJZWxzZSB7CisJCQljYXBhY2l0eSA9IGxlNjRfdG9fY3B1KGRldmluZm8uY2FwYWNpdHkpICogNTEyOworCQkJZG9fZGl2KGNhcGFjaXR5LCAxMDAwMDAwKTsKKwkJCWhwdGlvcF9jb3B5X2luZm8ocGluZm8sCisJCQkJIkNIJWQgJXMsICVsbHVNQiwgJXMgJXMlcyVzJXNcbiIsCisJCQkJZGV2aW5mby51LmRldmljZS5wYXRoX2lkICsgMSwKKwkJCQlkcml2ZWlkLT5tb2RlbCwKKwkJCQljYXBhY2l0eSwKKwkJCQkoZmxhZ3MgJiBERVZJQ0VfRkxBR19ESVNBQkxFRCk/CisJCQkJCSJEaXNhYmxlZCIgOiAiTm9ybWFsIiwKKwkJCQlkZXZpbmZvLnUuZGV2aWNlLnJlYWRfYWhlYWRfZW5hYmxlZD8KKwkJCQkJCSJbUkFdIiA6ICIiLAorCQkJCWRldmluZm8udS5kZXZpY2Uud3JpdGVfY2FjaGVfZW5hYmxlZD8KKwkJCQkJCSJbV0NdIiA6ICIiLAorCQkJCWRldmluZm8udS5kZXZpY2UuVENRX2VuYWJsZWQ/CisJCQkJCQkiW1RDUV0iIDogIiIsCisJCQkJZGV2aW5mby51LmRldmljZS5OQ1FfZW5hYmxlZD8KKwkJCQkJCSJbTkNRXSIgOiAiIgorCQkJKTsKKwkJfQorCQlicmVhazsKKwl9CisKKwljYXNlIExEVF9BUlJBWToKKwkJaWYgKGRldmluZm8udGFyZ2V0X2lkICE9IElOVkFMSURfVEFSR0VUX0lEKQorCQkJaHB0aW9wX2NvcHlfaW5mbyhwaW5mbywgIltESVNLICVkXyVkXSAiLAorCQkJCQlkZXZpbmZvLnZidXNfaWQsIGRldmluZm8udGFyZ2V0X2lkKTsKKworCQljYXBhY2l0eSA9IGxlNjRfdG9fY3B1KGRldmluZm8uY2FwYWNpdHkpICogNTEyOworCQlkb19kaXYoY2FwYWNpdHksIDEwMDAwMDApOworCQlocHRpb3BfY29weV9pbmZvKHBpbmZvLCAiJXMgKCVzKSwgJWxsdU1CLCAlc1xuIiwKKwkJCWRldmluZm8udS5hcnJheS5uYW1lLAorCQkJZGV2aW5mby51LmFycmF5LmFycmF5X3R5cGU9PUFUX1JBSUQwPyAiUkFJRDAiIDoKKwkJCQlkZXZpbmZvLnUuYXJyYXkuYXJyYXlfdHlwZT09QVRfUkFJRDE/ICJSQUlEMSIgOgorCQkJCWRldmluZm8udS5hcnJheS5hcnJheV90eXBlPT1BVF9SQUlENT8gIlJBSUQ1IiA6CisJCQkJZGV2aW5mby51LmFycmF5LmFycmF5X3R5cGU9PUFUX1JBSUQ2PyAiUkFJRDYiIDoKKwkJCQlkZXZpbmZvLnUuYXJyYXkuYXJyYXlfdHlwZT09QVRfSkJPRD8gIkpCT0QiIDoKKwkJCQkJInVua25vd24iLAorCQkJY2FwYWNpdHksCisJCQlnZXRfYXJyYXlfc3RhdHVzKCZkZXZpbmZvKSk7CisJCWZvciAoaSA9IDA7IGkgPCBkZXZpbmZvLnUuYXJyYXkubmRpc2s7IGkrKykgeworCQkJaWYgKGhwdF9pZF92YWxpZChkZXZpbmZvLnUuYXJyYXkubWVtYmVyc1tpXSkpIHsKKwkJCQlpZiAoY3B1X3RvX2xlMTYoMTw8aSkgJgorCQkJCQlkZXZpbmZvLnUuYXJyYXkuY3JpdGljYWxfbWVtYmVycykKKwkJCQkJaHB0aW9wX2NvcHlfaW5mbyhwaW5mbywgIlx0KiIpOworCQkJCWhwdGlvcF9kdW1wX2RldmluZm8oaGJhLCBwaW5mbywKKwkJCQkJZGV2aW5mby51LmFycmF5Lm1lbWJlcnNbaV0sIGluZGVudCsxKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlocHRpb3BfY29weV9pbmZvKHBpbmZvLCAiXHRNaXNzaW5nXG4iKTsKKwkJfQorCQlpZiAoaWQgPT0gZGV2aW5mby51LmFycmF5LnRyYW5zZm9ybV9zb3VyY2UpIHsKKwkJCWhwdGlvcF9jb3B5X2luZm8ocGluZm8sICJcdEV4cGFuZGluZy9NaWdyYXRpbmcgdG86XG4iKTsKKwkJCWhwdGlvcF9kdW1wX2RldmluZm8oaGJhLCBwaW5mbywKKwkJCQlkZXZpbmZvLnUuYXJyYXkudHJhbnNmb3JtX3RhcmdldCwgaW5kZW50KzEpOworCQl9CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIHNzaXplX3QgaHB0aW9wX3Nob3dfdmVyc2lvbihzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXYsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlc1xuIiwgZHJpdmVyX3Zlcik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGhwdGlvcF9jZGV2X3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWYsCisJCQkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCit7CisJc3RydWN0IGhwdGlvcF9oYmEgKmhiYSA9IGZpbHAtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgaHB0aW9wX2dldGluZm8gaW5mbzsKKwlpbnQgaSwgaiwgbmRldjsKKwlzdHJ1Y3QgaHB0X2NvbnRyb2xsZXJfaW5mbyBjb25faW5mbzsKKwlzdHJ1Y3QgaHB0X2NoYW5uZWxfaW5mbyBjaGFuX2luZm87CisJX19sZTMyIGlkc1szMl07CisKKwlpbmZvLmJ1ZmZlciAgICAgPSBidWY7CisJaW5mby5idWZsZW5ndGggID0gY291bnQ7CisJaW5mby5idWZvZmZzZXQgID0gcHBvcyA/ICpwcG9zIDogMDsKKwlpbmZvLmZpbHBvcyAgICAgPSAwOworCWluZm8uYnVmZmlsbGVuICA9IDA7CisKKwlpZiAoaHB0aW9wX2dldF9jb250cm9sbGVyX2luZm8oaGJhLCAmY29uX2luZm8pKQorCQlyZXR1cm4gLUVJTzsKKworCWZvciAoaSA9IDA7IGkgPCBjb25faW5mby5udW1fYnVzZXM7IGkrKykgeworCQlpZiAoaHB0aW9wX2dldF9jaGFubmVsX2luZm8oaGJhLCBpLCAmY2hhbl9pbmZvKSA9PSAwKSB7CisJCQlpZiAoaHB0X2lkX3ZhbGlkKGNoYW5faW5mby5kZXZpY2VzWzBdKSkKKwkJCQlocHRpb3BfZHVtcF9kZXZpbmZvKGhiYSwgJmluZm8sCisJCQkJCQljaGFuX2luZm8uZGV2aWNlc1swXSwgMCk7CisJCQlpZiAoaHB0X2lkX3ZhbGlkKGNoYW5faW5mby5kZXZpY2VzWzFdKSkKKwkJCQlocHRpb3BfZHVtcF9kZXZpbmZvKGhiYSwgJmluZm8sCisJCQkJCQljaGFuX2luZm8uZGV2aWNlc1sxXSwgMCk7CisJCX0KKwl9CisKKwluZGV2ID0gaHB0aW9wX2dldF9sb2dpY2FsX2RldmljZXMoaGJhLCBpZHMsCisJCQkJCXNpemVvZihpZHMpIC8gc2l6ZW9mKGlkc1swXSkpOworCisJLyoKKwkgKiBpZiBocHRpb3BfZ2V0X2xvZ2ljYWxfZGV2aWNlcyBmYWlscywgbmRldj09LTEgYW5kIGl0IGp1c3QKKwkgKiBvdXRwdXQgbm90aGluZyBoZXJlCisJICovCisJZm9yIChqID0gMDsgaiA8IG5kZXY7IGorKykKKwkJaHB0aW9wX2R1bXBfZGV2aW5mbyhoYmEsICZpbmZvLCBpZHNbal0sIDApOworCisJaWYgKHBwb3MpCisJCSpwcG9zICs9IGluZm8uYnVmZmlsbGVuOworCisJcmV0dXJuIGluZm8uYnVmZmlsbGVuOworfQorCitzdGF0aWMgaW50IGhwdGlvcF9jZGV2X2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsICBzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCQkJdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IGhwdGlvcF9oYmEgKmhiYSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgaHB0X2lvY3RsX3UgaW9jdGxfdTsKKwlzdHJ1Y3QgaHB0X2lvY3RsX2sgaW9jdGxfazsKKwl1MzIgYnl0ZXNfcmV0dXJuZWQ7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJmlvY3RsX3UsCisJCSh2b2lkIF9fdXNlciAqKWFyZywgc2l6ZW9mKHN0cnVjdCBocHRfaW9jdGxfdSkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChpb2N0bF91Lm1hZ2ljICE9IEhQVF9JT0NUTF9NQUdJQykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpb2N0bF9rLmlvY3RsX2NvZGUgPSBpb2N0bF91LmlvY3RsX2NvZGU7CisJaW9jdGxfay5pbmJ1ZiA9IE5VTEw7CisJaW9jdGxfay5pbmJ1Zl9zaXplID0gaW9jdGxfdS5pbmJ1Zl9zaXplOworCWlvY3RsX2sub3V0YnVmID0gTlVMTDsKKwlpb2N0bF9rLm91dGJ1Zl9zaXplID0gaW9jdGxfdS5vdXRidWZfc2l6ZTsKKwlpb2N0bF9rLmhiYSA9IGhiYTsKKwlpb2N0bF9rLmJ5dGVzX3JldHVybmVkID0gJmJ5dGVzX3JldHVybmVkOworCisJLyogdmVyaWZ5IHVzZXIgYnVmZmVyICovCisJaWYgKChpb2N0bF9rLmluYnVmX3NpemUgJiYgIWFjY2Vzc19vayhWRVJJRllfUkVBRCwKKwkJCWlvY3RsX3UuaW5idWYsIGlvY3RsX2suaW5idWZfc2l6ZSkpIHx8CisJCShpb2N0bF9rLm91dGJ1Zl9zaXplICYmICFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLAorCQkJaW9jdGxfdS5vdXRidWYsIGlvY3RsX2sub3V0YnVmX3NpemUpKSB8fAorCQkoaW9jdGxfdS5ieXRlc19yZXR1cm5lZCAmJiAhYWNjZXNzX29rKFZFUklGWV9XUklURSwKKwkJCWlvY3RsX3UuYnl0ZXNfcmV0dXJuZWQsIHNpemVvZih1MzIpKSkgfHwKKwkJaW9jdGxfay5pbmJ1Zl9zaXplICsgaW9jdGxfay5vdXRidWZfc2l6ZSA+IDB4MTAwMDApIHsKKworCQlkcHJpbnRrKCJzY3NpJWQ6IGdvdCBiYWQgdXNlciBhZGRyZXNzXG4iLCBoYmEtPmhvc3QtPmhvc3Rfbm8pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBtYXAgYnVmZmVyIHRvIGtlcm5lbC4gKi8KKwlpZiAoaW9jdGxfay5pbmJ1Zl9zaXplKSB7CisJCWlvY3RsX2suaW5idWYgPSBrbWFsbG9jKGlvY3RsX2suaW5idWZfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghaW9jdGxfay5pbmJ1ZikgeworCQkJZHByaW50aygic2NzaSVkOiBmYWlsIHRvIGFsbG9jIGluYnVmXG4iLAorCQkJCQloYmEtPmhvc3QtPmhvc3Rfbm8pOworCQkJZXJyID0gLUVOT01FTTsKKwkJCWdvdG8gZXJyX2V4aXQ7CisJCX0KKworCQlpZiAoY29weV9mcm9tX3VzZXIoaW9jdGxfay5pbmJ1ZiwKKwkJCQlpb2N0bF91LmluYnVmLCBpb2N0bF9rLmluYnVmX3NpemUpKSB7CisJCQlnb3RvIGVycl9leGl0OworCQl9CisJfQorCisJaWYgKGlvY3RsX2sub3V0YnVmX3NpemUpIHsKKwkJaW9jdGxfay5vdXRidWYgPSBrbWFsbG9jKGlvY3RsX2sub3V0YnVmX3NpemUsIEdGUF9LRVJORUwpOworCQlpZiAoIWlvY3RsX2sub3V0YnVmKSB7CisJCQlkcHJpbnRrKCJzY3NpJWQ6IGZhaWwgdG8gYWxsb2Mgb3V0YnVmXG4iLAorCQkJCQloYmEtPmhvc3QtPmhvc3Rfbm8pOworCQkJZXJyID0gLUVOT01FTTsKKwkJCWdvdG8gZXJyX2V4aXQ7CisJCX0KKwl9CisKKwlocHRpb3BfZG9faW9jdGwoJmlvY3RsX2spOworCisJaWYgKGlvY3RsX2sucmVzdWx0ID09IEhQVF9JT0NUTF9SRVNVTFRfT0spIHsKKwkJaWYgKGlvY3RsX2sub3V0YnVmX3NpemUgJiYKKwkJCWNvcHlfdG9fdXNlcihpb2N0bF91Lm91dGJ1ZiwKKwkJCQlpb2N0bF9rLm91dGJ1ZiwgaW9jdGxfay5vdXRidWZfc2l6ZSkpCisJCQlnb3RvIGVycl9leGl0OworCisJCWlmIChpb2N0bF91LmJ5dGVzX3JldHVybmVkICYmCisJCQljb3B5X3RvX3VzZXIoaW9jdGxfdS5ieXRlc19yZXR1cm5lZCwKKwkJCQkmYnl0ZXNfcmV0dXJuZWQsIHNpemVvZih1MzIpKSkKKwkJCWdvdG8gZXJyX2V4aXQ7CisKKwkJZXJyID0gMDsKKwl9CisKK2Vycl9leGl0OgorCWtmcmVlKGlvY3RsX2suaW5idWYpOworCWtmcmVlKGlvY3RsX2sub3V0YnVmKTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaHB0aW9wX2NkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhOworCXVuc2lnbmVkIGkgPSAwLCBtaW5vciA9IGltaW5vcihpbm9kZSk7CisJaW50IHJldCA9IC1FTk9ERVY7CisKKwlzcGluX2xvY2soJmhwdGlvcF9oYmFfbGlzdF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGhiYSwgJmhwdGlvcF9oYmFfbGlzdCwgbGluaykgeworCQlpZiAoaSA9PSBtaW5vcikgeworCQkJZmlsZS0+cHJpdmF0ZV9kYXRhID0gaGJhOworCQkJcmV0ID0gMDsKKwkJCWdvdG8gb3V0OworCQl9CisJCWkrKzsKKwl9CisKK291dDoKKwlzcGluX3VubG9jaygmaHB0aW9wX2hiYV9saXN0X2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhwdGlvcF9jZGV2X2ZvcHMgPSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLnJlYWQgID0gaHB0aW9wX2NkZXZfcmVhZCwKKwkuaW9jdGwgPSBocHRpb3BfY2Rldl9pb2N0bCwKKwkub3BlbiAgPSBocHRpb3BfY2Rldl9vcGVuLAorfTsKKworc3RhdGljIHNzaXplX3QgaHB0aW9wX3Nob3dfZndfdmVyc2lvbihzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXYsIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gY2xhc3NfdG9fc2hvc3QoY2xhc3NfZGV2KTsKKwlzdHJ1Y3QgaHB0aW9wX2hiYSAqaGJhID0gKHN0cnVjdCBocHRpb3BfaGJhICopaG9zdC0+aG9zdGRhdGE7CisKKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZC4lZC4lZC4lZFxuIiwKKwkJCQloYmEtPmZpcm13YXJlX3ZlcnNpb24gPj4gMjQsCisJCQkJKGhiYS0+ZmlybXdhcmVfdmVyc2lvbiA+PiAxNikgJiAweGZmLAorCQkJCShoYmEtPmZpcm13YXJlX3ZlcnNpb24gPj4gOCkgJiAweGZmLAorCQkJCWhiYS0+ZmlybXdhcmVfdmVyc2lvbiAmIDB4ZmYpOworfQorCitzdGF0aWMgc3RydWN0IGNsYXNzX2RldmljZV9hdHRyaWJ1dGUgaHB0aW9wX2F0dHJfdmVyc2lvbiA9IHsKKwkuYXR0ciA9IHsKKwkJLm5hbWUgPSAiZHJpdmVyLXZlcnNpb24iLAorCQkubW9kZSA9IFNfSVJVR08sCisJfSwKKwkuc2hvdyA9IGhwdGlvcF9zaG93X3ZlcnNpb24sCit9OworCitzdGF0aWMgc3RydWN0IGNsYXNzX2RldmljZV9hdHRyaWJ1dGUgaHB0aW9wX2F0dHJfZndfdmVyc2lvbiA9IHsKKwkuYXR0ciA9IHsKKwkJLm5hbWUgPSAiZmlybXdhcmUtdmVyc2lvbiIsCisJCS5tb2RlID0gU19JUlVHTywKKwl9LAorCS5zaG93ID0gaHB0aW9wX3Nob3dfZndfdmVyc2lvbiwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2xhc3NfZGV2aWNlX2F0dHJpYnV0ZSAqaHB0aW9wX2F0dHJzW10gPSB7CisJJmhwdGlvcF9hdHRyX3ZlcnNpb24sCisJJmhwdGlvcF9hdHRyX2Z3X3ZlcnNpb24sCisJTlVMTAorfTsKKworc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgZHJpdmVyX3RlbXBsYXRlID0geworCS5tb2R1bGUgICAgICAgICAgICAgICAgICAgICA9IFRISVNfTU9EVUxFLAorCS5uYW1lICAgICAgICAgICAgICAgICAgICAgICA9IGRyaXZlcl9uYW1lLAorCS5xdWV1ZWNvbW1hbmQgICAgICAgICAgICAgICA9IGhwdGlvcF9xdWV1ZWNvbW1hbmQsCisJLmVoX2RldmljZV9yZXNldF9oYW5kbGVyICAgID0gaHB0aW9wX3Jlc2V0LAorCS5laF9idXNfcmVzZXRfaGFuZGxlciAgICAgICA9IGhwdGlvcF9yZXNldCwKKwkuaW5mbyAgICAgICAgICAgICAgICAgICAgICAgPSBocHRpb3BfaW5mbywKKwkudW5jaGVja2VkX2lzYV9kbWEgICAgICAgICAgPSAwLAorCS5lbXVsYXRlZCAgICAgICAgICAgICAgICAgICA9IDAsCisJLnVzZV9jbHVzdGVyaW5nICAgICAgICAgICAgID0gRU5BQkxFX0NMVVNURVJJTkcsCisJLnByb2NfbmFtZSAgICAgICAgICAgICAgICAgID0gZHJpdmVyX25hbWUsCisJLnNob3N0X2F0dHJzICAgICAgICAgICAgICAgID0gaHB0aW9wX2F0dHJzLAorCS50aGlzX2lkICAgICAgICAgICAgICAgICAgICA9IC0xLAorCS5jaGFuZ2VfcXVldWVfZGVwdGggICAgICAgICA9IGhwdGlvcF9hZGp1c3RfZGlza19xdWV1ZV9kZXB0aCwKK307CisKK3N0YXRpYyBpbnQgX19kZXZpbml0IGhwdGlvcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LAorCQkJCQljb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdCA9IE5VTEw7CisJc3RydWN0IGhwdGlvcF9oYmEgKmhiYTsKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2dldF9jb25maWcgaW9wX2NvbmZpZzsKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3NldF9jb25maWcgc2V0X2NvbmZpZzsKKwlkbWFfYWRkcl90IHN0YXJ0X3BoeTsKKwl2b2lkICpzdGFydF92aXJ0OworCXUzMiBvZmZzZXQsIGksIHJlcV9zaXplOworCisJZHByaW50aygiaHB0aW9wX3Byb2JlKCVwKVxuIiwgcGNpZGV2KTsKKworCWlmIChwY2lfZW5hYmxlX2RldmljZShwY2lkZXYpKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaHB0aW9wOiBmYWlsIHRvIGVuYWJsZSBwY2kgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcHJpbnRrKEtFUk5fSU5GTyAiYWRhcHRlciBhdCBQQ0kgJWQ6JWQ6JWQsIElSUSAlZFxuIiwKKwkJcGNpZGV2LT5idXMtPm51bWJlciwgcGNpZGV2LT5kZXZmbiA+PiAzLCBwY2lkZXYtPmRldmZuICYgNywKKwkJcGNpZGV2LT5pcnEpOworCisJcGNpX3NldF9tYXN0ZXIocGNpZGV2KTsKKworCS8qIEVuYWJsZSA2NGJpdCBETUEgaWYgcG9zc2libGUgKi8KKwlpZiAocGNpX3NldF9kbWFfbWFzayhwY2lkZXYsIERNQV82NEJJVF9NQVNLKSkgeworCQlpZiAocGNpX3NldF9kbWFfbWFzayhwY2lkZXYsIERNQV8zMkJJVF9NQVNLKSkgeworCQkJcHJpbnRrKEtFUk5fRVJSICJocHRpb3A6IGZhaWwgdG8gc2V0IGRtYV9tYXNrXG4iKTsKKwkJCWdvdG8gZGlzYWJsZV9wY2lfZGV2aWNlOworCQl9CisJfQorCisJaWYgKHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpZGV2LCBkcml2ZXJfbmFtZSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJocHRpb3A6IHBjaV9yZXF1ZXN0X3JlZ2lvbnMgZmFpbGVkXG4iKTsKKwkJZ290byBkaXNhYmxlX3BjaV9kZXZpY2U7CisJfQorCisJaG9zdCA9IHNjc2lfaG9zdF9hbGxvYygmZHJpdmVyX3RlbXBsYXRlLCBzaXplb2Yoc3RydWN0IGhwdGlvcF9oYmEpKTsKKwlpZiAoIWhvc3QpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJocHRpb3A6IGZhaWwgdG8gYWxsb2Mgc2NzaSBob3N0XG4iKTsKKwkJZ290byBmcmVlX3BjaV9yZWdpb25zOworCX0KKworCWhiYSA9IChzdHJ1Y3QgaHB0aW9wX2hiYSAqKWhvc3QtPmhvc3RkYXRhOworCisJaGJhLT5wY2lkZXYgPSBwY2lkZXY7CisJaGJhLT5ob3N0ID0gaG9zdDsKKwloYmEtPmluaXRpYWxpemVkID0gMDsKKworCWF0b21pY19zZXQoJmhiYS0+cmVzZXR0aW5nLCAwKTsKKwlhdG9taWNfc2V0KCZoYmEtPnJlc2V0X2NvdW50LCAwKTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhiYS0+cmVzZXRfd3EpOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhiYS0+aW9jdGxfd3EpOworCisJaG9zdC0+bWF4X2x1biA9IDE7CisJaG9zdC0+bWF4X2NoYW5uZWwgPSAwOworCWhvc3QtPmlvX3BvcnQgPSAwOworCWhvc3QtPm5faW9fcG9ydCA9IDA7CisJaG9zdC0+aXJxID0gcGNpZGV2LT5pcnE7CisKKwlpZiAoaHB0aW9wX21hcF9wY2lfYmFyKGhiYSkpCisJCWdvdG8gZnJlZV9zY3NpX2hvc3Q7CisKKwlpZiAoaW9wX3dhaXRfcmVhZHkoaGJhLT5pb3AsIDIwMDAwKSkgeworCQlwcmludGsoS0VSTl9FUlIgInNjc2klZDogZmlybXdhcmUgbm90IHJlYWR5XG4iLAorCQkJCWhiYS0+aG9zdC0+aG9zdF9ubyk7CisJCWdvdG8gdW5tYXBfcGNpX2JhcjsKKwl9CisKKwlpZiAoaW9wX2dldF9jb25maWcoaGJhLCAmaW9wX2NvbmZpZykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IGdldCBjb25maWcgZmFpbGVkXG4iLAorCQkJCWhiYS0+aG9zdC0+aG9zdF9ubyk7CisJCWdvdG8gdW5tYXBfcGNpX2JhcjsKKwl9CisKKwloYmEtPm1heF9yZXF1ZXN0cyA9IG1pbihsZTMyX3RvX2NwdShpb3BfY29uZmlnLm1heF9yZXF1ZXN0cyksCisJCQkJSFBUSU9QX01BWF9SRVFVRVNUUyk7CisJaGJhLT5tYXhfZGV2aWNlcyA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcubWF4X2RldmljZXMpOworCWhiYS0+bWF4X3JlcXVlc3Rfc2l6ZSA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcucmVxdWVzdF9zaXplKTsKKwloYmEtPm1heF9zZ19kZXNjcmlwdG9ycyA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcubWF4X3NnX2NvdW50KTsKKwloYmEtPmZpcm13YXJlX3ZlcnNpb24gPSBsZTMyX3RvX2NwdShpb3BfY29uZmlnLmZpcm13YXJlX3ZlcnNpb24pOworCWhiYS0+c2RyYW1fc2l6ZSA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcuc2RyYW1fc2l6ZSk7CisKKwlob3N0LT5tYXhfc2VjdG9ycyA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcuZGF0YV90cmFuc2Zlcl9sZW5ndGgpID4+IDk7CisJaG9zdC0+bWF4X2lkID0gbGUzMl90b19jcHUoaW9wX2NvbmZpZy5tYXhfZGV2aWNlcyk7CisJaG9zdC0+c2dfdGFibGVzaXplID0gbGUzMl90b19jcHUoaW9wX2NvbmZpZy5tYXhfc2dfY291bnQpOworCWhvc3QtPmNhbl9xdWV1ZSA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcubWF4X3JlcXVlc3RzKTsKKwlob3N0LT5jbWRfcGVyX2x1biA9IGxlMzJfdG9fY3B1KGlvcF9jb25maWcubWF4X3JlcXVlc3RzKTsKKwlob3N0LT5tYXhfY21kX2xlbiA9IDE2OworCisJc2V0X2NvbmZpZy52YnVzX2lkID0gY3B1X3RvX2xlMzIoaG9zdC0+aG9zdF9ubyk7CisJc2V0X2NvbmZpZy5pb3BfaWQgPSBjcHVfdG9fbGUzMihob3N0LT5ob3N0X25vKTsKKworCWlmIChpb3Bfc2V0X2NvbmZpZyhoYmEsICZzZXRfY29uZmlnKSkgeworCQlwcmludGsoS0VSTl9FUlIgInNjc2klZDogc2V0IGNvbmZpZyBmYWlsZWRcbiIsCisJCQkJaGJhLT5ob3N0LT5ob3N0X25vKTsKKwkJZ290byB1bm1hcF9wY2lfYmFyOworCX0KKworCWlmIChzY3NpX2FkZF9ob3N0KGhvc3QsICZwY2lkZXYtPmRldikpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IHNjc2lfYWRkX2hvc3QgZmFpbGVkXG4iLAorCQkJCQloYmEtPmhvc3QtPmhvc3Rfbm8pOworCQlnb3RvIHVubWFwX3BjaV9iYXI7CisJfQorCisJcGNpX3NldF9kcnZkYXRhKHBjaWRldiwgaG9zdCk7CisKKwlpZiAocmVxdWVzdF9pcnEocGNpZGV2LT5pcnEsIGhwdGlvcF9pbnRyLCBTQV9TSElSUSwKKwkJCQkJZHJpdmVyX25hbWUsIGhiYSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IHJlcXVlc3QgaXJxICVkIGZhaWxlZFxuIiwKKwkJCQkJaGJhLT5ob3N0LT5ob3N0X25vLCBwY2lkZXYtPmlycSk7CisJCWdvdG8gcmVtb3ZlX3Njc2lfaG9zdDsKKwl9CisKKwkvKiBBbGxvY2F0ZSByZXF1ZXN0IG1lbSAqLworCXJlcV9zaXplID0gc2l6ZW9mKHN0cnVjdCBocHRfaW9wX3JlcXVlc3Rfc2NzaV9jb21tYW5kKQorCQkrIHNpemVvZihzdHJ1Y3QgaHB0X2lvcHNnKSAqIChoYmEtPm1heF9zZ19kZXNjcmlwdG9ycyAtIDEpOworCWlmICgocmVxX3NpemUmIDB4MWYpICE9IDApCisJCXJlcV9zaXplID0gKHJlcV9zaXplICsgMHgxZikgJiB+MHgxZjsKKworCWRwcmludGsoInJlcV9zaXplPSVkLCBtYXhfcmVxdWVzdHM9JWRcbiIsIHJlcV9zaXplLCBoYmEtPm1heF9yZXF1ZXN0cyk7CisKKwloYmEtPnJlcV9zaXplID0gcmVxX3NpemU7CisJc3RhcnRfdmlydCA9IGRtYV9hbGxvY19jb2hlcmVudCgmcGNpZGV2LT5kZXYsCisJCQkJaGJhLT5yZXFfc2l6ZSpoYmEtPm1heF9yZXF1ZXN0cyArIDB4MjAsCisJCQkJJnN0YXJ0X3BoeSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXN0YXJ0X3ZpcnQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IGZhaWwgdG8gYWxsb2MgcmVxdWVzdCBtZW1cbiIsCisJCQkJCWhiYS0+aG9zdC0+aG9zdF9ubyk7CisJCWdvdG8gZnJlZV9yZXF1ZXN0X2lycTsKKwl9CisKKwloYmEtPmRtYV9jb2hlcmVudCA9IHN0YXJ0X3ZpcnQ7CisJaGJhLT5kbWFfY29oZXJlbnRfaGFuZGxlID0gc3RhcnRfcGh5OworCisJaWYgKChzdGFydF9waHkgJiAweDFmKSAhPSAwKQorCXsKKwkJb2Zmc2V0ID0gKChzdGFydF9waHkgKyAweDFmKSAmIH4weDFmKSAtIHN0YXJ0X3BoeTsKKwkJc3RhcnRfcGh5ICs9IG9mZnNldDsKKwkJc3RhcnRfdmlydCArPSBvZmZzZXQ7CisJfQorCisJaGJhLT5yZXFfbGlzdCA9IHN0YXJ0X3ZpcnQ7CisJZm9yIChpID0gMDsgaSA8IGhiYS0+bWF4X3JlcXVlc3RzOyBpKyspIHsKKwkJaGJhLT5yZXFzW2ldLm5leHQgPSBOVUxMOworCQloYmEtPnJlcXNbaV0ucmVxX3ZpcnQgPSBzdGFydF92aXJ0OworCQloYmEtPnJlcXNbaV0ucmVxX3NoaWZ0ZWRfcGh5ID0gc3RhcnRfcGh5ID4+IDU7CisJCWhiYS0+cmVxc1tpXS5pbmRleCA9IGk7CisJCWZyZWVfcmVxKGhiYSwgJmhiYS0+cmVxc1tpXSk7CisJCXN0YXJ0X3ZpcnQgPSAoY2hhciAqKXN0YXJ0X3ZpcnQgKyBoYmEtPnJlcV9zaXplOworCQlzdGFydF9waHkgPSBzdGFydF9waHkgKyBoYmEtPnJlcV9zaXplOworCX0KKworCS8qIEVuYWJsZSBJbnRlcnJ1cHQgYW5kIHN0YXJ0IGJhY2tncm91bmQgdGFzayAqLworCWlmIChocHRpb3BfaW5pdGlhbGl6ZV9pb3AoaGJhKSkKKwkJZ290byBmcmVlX3JlcXVlc3RfbWVtOworCisJc3Bpbl9sb2NrKCZocHRpb3BfaGJhX2xpc3RfbG9jayk7CisJbGlzdF9hZGRfdGFpbCgmaGJhLT5saW5rLCAmaHB0aW9wX2hiYV9saXN0KTsKKwlzcGluX3VubG9jaygmaHB0aW9wX2hiYV9saXN0X2xvY2spOworCisJc2NzaV9zY2FuX2hvc3QoaG9zdCk7CisKKwlkcHJpbnRrKCJzY3NpJWQ6IGhwdGlvcF9wcm9iZSBzdWNjZXNzZnVsbHlcbiIsIGhiYS0+aG9zdC0+aG9zdF9ubyk7CisJcmV0dXJuIDA7CisKK2ZyZWVfcmVxdWVzdF9tZW06CisJZG1hX2ZyZWVfY29oZXJlbnQoJmhiYS0+cGNpZGV2LT5kZXYsCisJCQloYmEtPnJlcV9zaXplKmhiYS0+bWF4X3JlcXVlc3RzICsgMHgyMCwKKwkJCWhiYS0+ZG1hX2NvaGVyZW50LCBoYmEtPmRtYV9jb2hlcmVudF9oYW5kbGUpOworCitmcmVlX3JlcXVlc3RfaXJxOgorCWZyZWVfaXJxKGhiYS0+cGNpZGV2LT5pcnEsIGhiYSk7CisKK3JlbW92ZV9zY3NpX2hvc3Q6CisJc2NzaV9yZW1vdmVfaG9zdChob3N0KTsKKwordW5tYXBfcGNpX2JhcjoKKwlpb3VubWFwKGhiYS0+aW9wKTsKKworZnJlZV9wY2lfcmVnaW9uczoKKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBjaWRldikgOworCitmcmVlX3Njc2lfaG9zdDoKKwlzY3NpX2hvc3RfcHV0KGhvc3QpOworCitkaXNhYmxlX3BjaV9kZXZpY2U6CisJcGNpX2Rpc2FibGVfZGV2aWNlKHBjaWRldik7CisKKwlkcHJpbnRrKCJzY3NpJWQ6IGhwdGlvcF9wcm9iZSBmYWlsXG4iLCBob3N0LT5ob3N0X25vKTsKKwlyZXR1cm4gLUVOT0RFVjsKK30KKworc3RhdGljIHZvaWQgaHB0aW9wX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwY2lkZXYpCit7CisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdCA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lkZXYpOworCXN0cnVjdCBocHRpb3BfaGJhICpoYmEgPSAoc3RydWN0IGhwdGlvcF9oYmEgKilob3N0LT5ob3N0ZGF0YTsKKwlzdHJ1Y3QgaHB0X2lvcG11IF9faW9tZW0gKmlvcCA9IGhiYS0+aW9wOworCXUzMiAgICBpbnRfbWFzazsKKworCWRwcmludGsoImhwdGlvcF9zaHV0ZG93biglcClcbiIsIGhiYSk7CisKKwkvKiBzdG9wIHRoZSBpb3AgKi8KKwlpZiAoaW9wX3NlbmRfc3luY19tc2coaGJhLCBJT1BNVV9JTkJPVU5EX01TRzBfU0hVVERPV04sIDYwMDAwKSkKKwkJcHJpbnRrKEtFUk5fRVJSICJzY3NpJWQ6IHNodXRkb3duIHRoZSBpb3AgdGltZW91dFxuIiwKKwkJCQkJaGJhLT5ob3N0LT5ob3N0X25vKTsKKworCS8qIGRpc2FibGUgYWxsIG91dGJvdW5kIGludGVycnVwdHMgKi8KKwlpbnRfbWFzayA9IHJlYWRsKCZpb3AtPm91dGJvdW5kX2ludG1hc2spOworCXdyaXRlbChpbnRfbWFzayB8CisJCUlPUE1VX09VVEJPVU5EX0lOVF9NU0cwIHwgSU9QTVVfT1VUQk9VTkRfSU5UX1BPU1RRVUVVRSwKKwkJJmlvcC0+b3V0Ym91bmRfaW50bWFzayk7CisJaHB0aW9wX3BjaV9wb3N0aW5nX2ZsdXNoKGlvcCk7Cit9CisKK3N0YXRpYyB2b2lkIGhwdGlvcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaWRldikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gcGNpX2dldF9kcnZkYXRhKHBjaWRldik7CisJc3RydWN0IGhwdGlvcF9oYmEgKmhiYSA9IChzdHJ1Y3QgaHB0aW9wX2hiYSAqKWhvc3QtPmhvc3RkYXRhOworCisJZHByaW50aygic2NzaSVkOiBocHRpb3BfcmVtb3ZlXG4iLCBoYmEtPmhvc3QtPmhvc3Rfbm8pOworCisJc2NzaV9yZW1vdmVfaG9zdChob3N0KTsKKworCXNwaW5fbG9jaygmaHB0aW9wX2hiYV9saXN0X2xvY2spOworCWxpc3RfZGVsX2luaXQoJmhiYS0+bGluayk7CisJc3Bpbl91bmxvY2soJmhwdGlvcF9oYmFfbGlzdF9sb2NrKTsKKworCWhwdGlvcF9zaHV0ZG93bihwY2lkZXYpOworCisJZnJlZV9pcnEoaGJhLT5wY2lkZXYtPmlycSwgaGJhKTsKKworCWRtYV9mcmVlX2NvaGVyZW50KCZoYmEtPnBjaWRldi0+ZGV2LAorCQkJaGJhLT5yZXFfc2l6ZSAqIGhiYS0+bWF4X3JlcXVlc3RzICsgMHgyMCwKKwkJCWhiYS0+ZG1hX2NvaGVyZW50LAorCQkJaGJhLT5kbWFfY29oZXJlbnRfaGFuZGxlKTsKKworCWlvdW5tYXAoaGJhLT5pb3ApOworCisJcGNpX3JlbGVhc2VfcmVnaW9ucyhoYmEtPnBjaWRldik7CisJcGNpX3NldF9kcnZkYXRhKGhiYS0+cGNpZGV2LCBOVUxMKTsKKwlwY2lfZGlzYWJsZV9kZXZpY2UoaGJhLT5wY2lkZXYpOworCisJc2NzaV9ob3N0X3B1dChob3N0KTsKK30KKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhwdGlvcF9pZF90YWJsZVtdID0geworCXsgUENJX0RFVklDRSgweDExMDMsIDB4MzIyMCkgfSwKKwl7IFBDSV9ERVZJQ0UoMHgxMTAzLCAweDMzMjApIH0sCisJe30sCit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaHB0aW9wX2lkX3RhYmxlKTsKKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGhwdGlvcF9wY2lfZHJpdmVyID0geworCS5uYW1lICAgICAgID0gZHJpdmVyX25hbWUsCisJLmlkX3RhYmxlICAgPSBocHRpb3BfaWRfdGFibGUsCisJLnByb2JlICAgICAgPSBocHRpb3BfcHJvYmUsCisJLnJlbW92ZSAgICAgPSBocHRpb3BfcmVtb3ZlLAorCS5zaHV0ZG93biAgID0gaHB0aW9wX3NodXRkb3duLAorfTsKKworc3RhdGljIGludCBfX2luaXQgaHB0aW9wX21vZHVsZV9pbml0KHZvaWQpCit7CisJaW50IGVycm9yOworCisJcHJpbnRrKEtFUk5fSU5GTyAiJXMgJXNcbiIsIGRyaXZlcl9uYW1lX2xvbmcsIGRyaXZlcl92ZXIpOworCisJZXJyb3IgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZocHRpb3BfcGNpX2RyaXZlcik7CisJaWYgKGVycm9yIDwgMCkKKwkJcmV0dXJuIGVycm9yOworCisJaHB0aW9wX2NkZXZfbWFqb3IgPSByZWdpc3Rlcl9jaHJkZXYoMCwgImhwdGlvcCIsICZocHRpb3BfY2Rldl9mb3BzKTsKKwlpZiAoaHB0aW9wX2NkZXZfbWFqb3IgPCAwKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgInVuYWJsZSB0byByZWdpc3RlciBocHRpb3AgZGV2aWNlLlxuIik7CisJCXJldHVybiBocHRpb3BfY2Rldl9tYWpvcjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGhwdGlvcF9tb2R1bGVfZXhpdCh2b2lkKQoreworCWRwcmludGsoImhwdGlvcF9tb2R1bGVfZXhpdFxuIik7CisJdW5yZWdpc3Rlcl9jaHJkZXYoaHB0aW9wX2NkZXZfbWFqb3IsICJocHRpb3AiKTsKKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmhwdGlvcF9wY2lfZHJpdmVyKTsKK30KKworCittb2R1bGVfaW5pdChocHRpb3BfbW9kdWxlX2luaXQpOworbW9kdWxlX2V4aXQoaHB0aW9wX21vZHVsZV9leGl0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2hwdGlvcC5oIGIvZHJpdmVycy9zY3NpL2hwdGlvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGY3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3Njc2kvaHB0aW9wLmgKQEAgLTAsMCArMSw0NjUgQEAKKy8qCisgKiBIaWdoUG9pbnQgUlIzeHh4IGNvbnRyb2xsZXIgZHJpdmVyIGZvciBMaW51eAorICogQ29weXJpZ2h0IChDKSAyMDA2IEhpZ2hQb2ludCBUZWNobm9sb2dpZXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFBsZWFzZSByZXBvcnQgYnVncy9jb21tZW50cy9zdWdnZXN0aW9ucyB0byBsaW51eEBoaWdocG9pbnQtdGVjaC5jb20KKyAqCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgaHR0cDovL3d3dy5oaWdocG9pbnQtdGVjaC5jb20KKyAqLworI2lmbmRlZiBfSFBUSU9QX0hfCisjZGVmaW5lIF9IUFRJT1BfSF8KKworLyoKKyAqIGxvZ2ljYWwgZGV2aWNlIHR5cGUuCisgKiBJZGVudGlmeSBhcnJheSAobG9naWNhbCBkZXZpY2UpIGFuZCBwaHlzaWNhbCBkZXZpY2UuCisgKi8KKyNkZWZpbmUgTERUX0FSUkFZICAgMQorI2RlZmluZSBMRFRfREVWSUNFICAyCisKKy8qCisgKiBBcnJheSB0eXBlcworICovCisjZGVmaW5lIEFUX1VOS05PV04gIDAKKyNkZWZpbmUgQVRfUkFJRDAgICAgMQorI2RlZmluZSBBVF9SQUlEMSAgICAyCisjZGVmaW5lIEFUX1JBSUQ1ICAgIDMKKyNkZWZpbmUgQVRfUkFJRDYgICAgNAorI2RlZmluZSBBVF9KQk9EICAgICA3CisKKyNkZWZpbmUgTUFYX05BTUVfTEVOR1RIICAgICAzNgorI2RlZmluZSBNQVhfQVJSQVlOQU1FX0xFTiAgIDE2CisKKyNkZWZpbmUgTUFYX0FSUkFZX01FTUJFUlNfVjEgOAorI2RlZmluZSBNQVhfQVJSQVlfTUVNQkVSU19WMiAxNgorCisvKiBrZWVwIGRlZmluaXRpb24gZm9yIHNvdXJjZSBjb2RlIGNvbXBhdGlibGl0eSAqLworI2RlZmluZSBNQVhfQVJSQVlfTUVNQkVSUyBNQVhfQVJSQVlfTUVNQkVSU19WMQorCisvKgorICogYXJyYXkgZmxhZ3MKKyAqLworI2RlZmluZSBBUlJBWV9GTEFHX0RJU0FCTEVEICAgICAgICAgMHgwMDAwMDAwMSAvKiBUaGUgYXJyYXkgaXMgZGlzYWJsZWQgKi8KKyNkZWZpbmUgQVJSQVlfRkxBR19ORUVEQlVJTERJTkcgICAgIDB4MDAwMDAwMDIgLyogbmVlZCB0byBiZSByZWJ1aWx0ICovCisjZGVmaW5lIEFSUkFZX0ZMQUdfUkVCVUlMRElORyAgICAgICAweDAwMDAwMDA0IC8qIGluIHJlYnVpbGRpbmcgcHJvY2VzcyAqLworI2RlZmluZSBBUlJBWV9GTEFHX0JST0tFTiAgICAgICAgICAgMHgwMDAwMDAwOCAvKiBicm9rZW4gYnV0IHN0aWxsIHdvcmtpbmcgKi8KKyNkZWZpbmUgQVJSQVlfRkxBR19CT09URElTSyAgICAgICAgIDB4MDAwMDAwMTAgLyogaGFzIGEgYWN0aXZlIHBhcnRpdGlvbiAqLworI2RlZmluZSBBUlJBWV9GTEFHX0JPT1RNQVJLICAgICAgICAgMHgwMDAwMDA0MCAvKiBhcnJheSBoYXMgYm9vdCBtYXJrIHNldCAqLworI2RlZmluZSBBUlJBWV9GTEFHX05FRURfQVVUT1JFQlVJTEQgMHgwMDAwMDA4MCAvKiBhdXRvLXJlYnVpbGQgc2hvdWxkIHN0YXJ0ICovCisjZGVmaW5lIEFSUkFZX0ZMQUdfVkVSSUZZSU5HICAgICAgICAweDAwMDAwMTAwIC8qIGlzIGJlaW5nIHZlcmlmaWVkICovCisjZGVmaW5lIEFSUkFZX0ZMQUdfSU5JVElBTElaSU5HICAgICAweDAwMDAwMjAwIC8qIGlzIGJlaW5nIGluaXRpYWxpemVkICovCisjZGVmaW5lIEFSUkFZX0ZMQUdfVFJBTlNGT1JNSU5HICAgICAweDAwMDAwNDAwIC8qIHRyYW5mb3JtIGluIHByb2dyZXNzICovCisjZGVmaW5lIEFSUkFZX0ZMQUdfTkVFRFRSQU5TRk9STSAgICAweDAwMDAwODAwIC8qIGFycmF5IG5lZWQgdHJhbmZvcm0gKi8KKyNkZWZpbmUgQVJSQVlfRkxBR19ORUVESU5JVElBTElaSU5HIDB4MDAwMDEwMDAgLyogaW5pdGlhbGl6YXRpb24gbm90IGRvbmUgKi8KKyNkZWZpbmUgQVJSQVlfRkxBR19CUk9LRU5fUkVEVU5EQU5UIDB4MDAwMDIwMDAgLyogYnJva2VuIGJ1dCByZWR1bmRhbnQgKi8KKworLyoKKyAqIGRldmljZSBmbGFncworICovCisjZGVmaW5lIERFVklDRV9GTEFHX0RJU0FCTEVEICAgICAgICAweDAwMDAwMDAxIC8qIGRldmljZSBpcyBkaXNhYmxlZCAqLworI2RlZmluZSBERVZJQ0VfRkxBR19VTklOSVRJQUxJWkVEICAgMHgwMDAxMDAwMCAvKiBkZXZpY2UgaXMgbm90IGluaXRpYWxpemVkICovCisjZGVmaW5lIERFVklDRV9GTEFHX0xFR0FDWSAgICAgICAgICAweDAwMDIwMDAwIC8qIGxhZ2FjeSBkcml2ZSAqLworI2RlZmluZSBERVZJQ0VfRkxBR19JU19TUEFSRSAgICAgICAgMHg4MDAwMDAwMCAvKiBpcyBhIHNwYXJlIGRpc2sgKi8KKworLyoKKyAqIGlvY3RsIGNvZGVzCisgKi8KKyNkZWZpbmUgSFBUX0NUTF9DT0RFKHgpICh4KzB4RkYwMCkKKyNkZWZpbmUgSFBUX0NUTF9DT0RFX0xJTlVYX1RPX0lPUCh4KSAoKHgpLTB4ZmYwMCkKKworI2RlZmluZSBIUFRfSU9DVExfR0VUX0NPTlRST0xMRVJfSU5GTyAgICAgICBIUFRfQ1RMX0NPREUoMikKKyNkZWZpbmUgSFBUX0lPQ1RMX0dFVF9DSEFOTkVMX0lORk8gICAgICAgICAgSFBUX0NUTF9DT0RFKDMpCisjZGVmaW5lIEhQVF9JT0NUTF9HRVRfTE9HSUNBTF9ERVZJQ0VTICAgICAgIEhQVF9DVExfQ09ERSg0KQorI2RlZmluZSBIUFRfSU9DVExfR0VUX0RSSVZFUl9DQVBBQklMSVRJRVMgICBIUFRfQ1RMX0NPREUoMTkpCisjZGVmaW5lIEhQVF9JT0NUTF9HRVRfREVWSUNFX0lORk9fVjMgICAgICAgIEhQVF9DVExfQ09ERSg0NikKKyNkZWZpbmUgSFBUX0lPQ1RMX0dFVF9DT05UUk9MTEVSX0lORk9fVjIgICAgSFBUX0NUTF9DT0RFKDQ3KQorCisvKgorICogQ29udHJvbGxlciBpbmZvcm1hdGlvbi4KKyAqLworc3RydWN0IGhwdF9jb250cm9sbGVyX2luZm8geworCXU4ICAgICAgY2hpcF90eXBlOyAgICAgICAgICAgICAgICAgICAgLyogY2hpcCB0eXBlICovCisJdTggICAgICBpbnRlcnJ1cHRfbGV2ZWw7ICAgICAgICAgICAgICAvKiBJUlEgbGV2ZWwgKi8KKwl1OCAgICAgIG51bV9idXNlczsgICAgICAgICAgICAgICAgICAgIC8qIGJ1cyBjb3VudCAqLworCXU4ICAgICAgY2hpcF9mbGFnczsKKworCXU4ICAgICAgcHJvZHVjdF9pZFtNQVhfTkFNRV9MRU5HVEhdOy8qIHByb2R1Y3QgbmFtZSAqLworCXU4ICAgICAgdmVuZG9yX2lkW01BWF9OQU1FX0xFTkdUSF07IC8qIHZlbmRvciBuYW1lICovCit9CitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworLyoKKyAqIENoYW5uZWwgaW5mb3JtYXRpb24uCisgKi8KK3N0cnVjdCBocHRfY2hhbm5lbF9pbmZvIHsKKwlfX2xlMzIgIGlvX3BvcnQ7ICAgICAgICAgLyogSURFIEJhc2UgUG9ydCBBZGRyZXNzICovCisJX19sZTMyICBjb250cm9sX3BvcnQ7ICAgIC8qIElERSBDb250cm9sIFBvcnQgQWRkcmVzcyAqLworCV9fbGUzMiAgZGV2aWNlc1syXTsgICAgICAvKiBkZXZpY2UgY29ubmVjdGVkIHRvIHRoaXMgY2hhbm5lbCAqLworfQorX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qCisgKiBBcnJheSBpbmZvcm1hdGlvbi4KKyAqLworc3RydWN0IGhwdF9hcnJheV9pbmZvX3YzIHsKKwl1OCAgICAgIG5hbWVbTUFYX0FSUkFZTkFNRV9MRU5dOyAvKiBhcnJheSBuYW1lICovCisJdTggICAgICBkZXNjcmlwdGlvbls2NF07ICAgICAgICAgLyogYXJyYXkgZGVzY3JpcHRpb24gKi8KKwl1OCAgICAgIGNyZWF0ZV9tYW5hZ2VyWzE2XTsgICAgICAvKiB3aG8gY3JlYXRlZCBpdCAqLworCV9fbGUzMiAgY3JlYXRlX3RpbWU7ICAgICAgICAgICAgIC8qIHdoZW4gY3JlYXRlZCBpdCAqLworCisJdTggICAgICBhcnJheV90eXBlOyAgICAgICAgICAgICAgLyogYXJyYXkgdHlwZSAqLworCXU4ICAgICAgYmxvY2tfc2l6ZV9zaGlmdDsgICAgICAgIC8qIHN0cmlwZSBzaXplICovCisJdTggICAgICBuZGlzazsgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIElEIGluIE1lbWJlcnNbXSAqLworCXU4ICAgICAgcmVzZXJ2ZWQ7CisKKwlfX2xlMzIgIGZsYWdzOyAgICAgICAgICAgICAgICAgICAvKiB3b3JraW5nIGZsYWdzLCBzZWUgQVJSQVlfRkxBR19YWFggKi8KKwlfX2xlMzIgIG1lbWJlcnNbTUFYX0FSUkFZX01FTUJFUlNfVjJdOyAgLyogbWVtYmVyIGFycmF5L2Rpc2tzICovCisKKwlfX2xlMzIgIHJlYnVpbGRpbmdfcHJvZ3Jlc3M7CisJX19sZTY0ICByZWJ1aWx0X3NlY3RvcnM7IC8qIHJlYnVpbGRpbmcgcG9pbnQgKExCQSkgZm9yIHNpbmdsZSBtZW1iZXIgKi8KKworCV9fbGUzMiAgdHJhbnNmb3JtX3NvdXJjZTsKKwlfX2xlMzIgIHRyYW5zZm9ybV90YXJnZXQ7ICAgIC8qIGRlc3RpbmF0aW9uIGRldmljZSBJRCAqLworCV9fbGUzMiAgdHJhbnNmb3JtaW5nX3Byb2dyZXNzOworCV9fbGUzMiAgc2lnbmF0dXJlOyAgICAgICAgICAgICAgLyogcGVyc2lzdGVudCBpZGVudGlmaWNhdGlvbiovCisJX19sZTE2ICBjcml0aWNhbF9tZW1iZXJzOyAgICAgICAvKiBiaXQgbWFzayBvZiBjcml0aWNhbCBtZW1iZXJzICovCisJX19sZTE2ICByZXNlcnZlMjsKKwlfX2xlMzIgIHJlc2VydmU7Cit9CitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworLyoKKyAqIHBoeXNpY2FsIGRldmljZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBNQVhfUEFSRU5UU19QRVJfRElTSyAgICA4CisKK3N0cnVjdCBocHRfZGV2aWNlX2luZm9fdjIgeworCXU4ICAgY3Rscl9pZDsgICAgICAgICAgICAgLyogY29udHJvbGxlciBpZCAqLworCXU4ICAgcGF0aF9pZDsgICAgICAgICAgICAgLyogYnVzICovCisJdTggICB0YXJnZXRfaWQ7ICAgICAgICAgICAvKiBpZCAqLworCXU4ICAgZGV2aWNlX21vZGVfc2V0dGluZzsgLyogQ3VycmVudCBEYXRhIFRyYW5zZmVyIG1vZGU6IDAtNCBQSU8wLTQgKi8KKwkJCQkgIC8qIDUtNyBNVyBETUEwLTIsIDgtMTMgVURNQTAtNSAqLworCXU4ICAgZGV2aWNlX3R5cGU7ICAgICAgICAgLyogZGV2aWNlIHR5cGUgKi8KKwl1OCAgIHVzYWJsZV9tb2RlOyAgICAgICAgIC8qIGhpZ2hlc3QgdXNhYmxlIG1vZGUgKi8KKworI2lmZGVmIF9fQklHX0VORElBTl9CSVRGSUVMRAorCXU4ICAgTkNRX2VuYWJsZWQ6IDE7CisJdTggICBOQ1Ffc3VwcG9ydGVkOiAxOworCXU4ICAgVENRX2VuYWJsZWQ6IDE7CisJdTggICBUQ1Ffc3VwcG9ydGVkOiAxOworCXU4ICAgd3JpdGVfY2FjaGVfZW5hYmxlZDogMTsKKwl1OCAgIHdyaXRlX2NhY2hlX3N1cHBvcnRlZDogMTsKKwl1OCAgIHJlYWRfYWhlYWRfZW5hYmxlZDogMTsKKwl1OCAgIHJlYWRfYWhlYWRfc3VwcG9ydGVkOiAxOworCXU4ICAgcmVzZXJ2ZWQ2OiA2OworCXU4ICAgc3Bpbl91cF9tb2RlOiAyOworI2Vsc2UKKwl1OCAgIHJlYWRfYWhlYWRfc3VwcG9ydGVkOiAxOworCXU4ICAgcmVhZF9haGVhZF9lbmFibGVkOiAxOworCXU4ICAgd3JpdGVfY2FjaGVfc3VwcG9ydGVkOiAxOworCXU4ICAgd3JpdGVfY2FjaGVfZW5hYmxlZDogMTsKKwl1OCAgIFRDUV9zdXBwb3J0ZWQ6IDE7CisJdTggICBUQ1FfZW5hYmxlZDogMTsKKwl1OCAgIE5DUV9zdXBwb3J0ZWQ6IDE7CisJdTggICBOQ1FfZW5hYmxlZDogMTsKKwl1OCAgIHNwaW5fdXBfbW9kZTogMjsKKwl1OCAgIHJlc2VydmVkNjogNjsKKyNlbmRpZgorCisJX19sZTMyICBmbGFnczsgICAgICAgICAvKiB3b3JraW5nIGZsYWdzLCBzZWUgREVWSUNFX0ZMQUdfWFhYICovCisJdTggICAgICBpZGVudFsxNTBdOyAgICAvKiAocGFydGl0aWFsKSBJZGVudGlmeSBEYXRhIG9mIHRoaXMgZGV2aWNlICovCisKKwlfX2xlNjQgIHRvdGFsX2ZyZWU7CisJX19sZTY0ICBtYXhfZnJlZTsKKwlfX2xlNjQgIGJhZF9zZWN0b3JzOworCV9fbGUzMiAgcGFyZW50X2FycmF5c1tNQVhfUEFSRU5UU19QRVJfRElTS107Cit9CitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworLyoKKyAqIExvZ2ljYWwgZGV2aWNlIGluZm9ybWF0aW9uLgorICovCisjZGVmaW5lIElOVkFMSURfVEFSR0VUX0lEICAgMHhGRgorI2RlZmluZSBJTlZBTElEX0JVU19JRCAgICAgIDB4RkYKKworc3RydWN0IGhwdF9sb2dpY2FsX2RldmljZV9pbmZvX3YzIHsKKwl1OCAgICAgICB0eXBlOyAgICAgICAgICAgICAgICAgICAvKiBMRFRfQVJSQVkgb3IgTERUX0RFVklDRSAqLworCXU4ICAgICAgIGNhY2hlX3BvbGljeTsgICAgICAgICAgIC8qIHJlZmVyIHRvIENBQ0hFX1BPTElDWV94eHggKi8KKwl1OCAgICAgICB2YnVzX2lkOyAgICAgICAgICAgICAgICAvKiB2YnVzIHNlcXVlbmNlIGluIHZidXNfbGlzdCAqLworCXU4ICAgICAgIHRhcmdldF9pZDsgICAgICAgICAgICAgIC8qIE9TIHRhcmdldCBpZC4gMHhGRiBpcyBpbnZhbGlkICovCisJCQkJCSAvKiBPUyBuYW1lOiBESVNLICRWQnVzSWRfJFRhcmdldElkICovCisJX19sZTY0ICAgY2FwYWNpdHk7ICAgICAgICAgICAgICAgLyogYXJyYXkgY2FwYWNpdHkgKi8KKwlfX2xlMzIgICBwYXJlbnRfYXJyYXk7ICAgICAgICAgICAvKiBkb24ndCB1c2UgdGhpcyBmaWVsZCBmb3IgcGh5c2ljYWwKKwkJCQkJICAgIGRldmljZS4gdXNlIFBhcmVudEFycmF5cyBmaWVsZCBpbgorCQkJCQkgICAgaHB0X2RldmljZV9pbmZvX3YyICovCisJLyogcmVzZXJ2ZWQgc3RhdGlzdGljIGZpZWxkcyAqLworCV9fbGUzMiAgIHN0YXQxOworCV9fbGUzMiAgIHN0YXQyOworCV9fbGUzMiAgIHN0YXQzOworCV9fbGUzMiAgIHN0YXQ0OworCisJdW5pb24geworCQlzdHJ1Y3QgaHB0X2FycmF5X2luZm9fdjMgYXJyYXk7CisJCXN0cnVjdCBocHRfZGV2aWNlX2luZm9fdjIgZGV2aWNlOworCX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgdTsKKworfQorX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKy8qCisgKiBpb2N0bCBzdHJ1Y3R1cmUKKyAqLworI2RlZmluZSBIUFRfSU9DVExfTUFHSUMgICAweEExQjJDM0Q0CisKK3N0cnVjdCBocHRfaW9jdGxfdSB7CisJdTMyICAgbWFnaWM7ICAgICAgICAgICAgLyogdXNlZCB0byBjaGVjayBpZiBpdCdzIGEgdmFsaWQgaW9jdGwgcGFja2V0ICovCisJdTMyICAgaW9jdGxfY29kZTsgICAgICAgLyogb3BlcmF0aW9uIGNvbnRyb2wgY29kZSAqLworCXZvaWQgX191c2VyICppbmJ1ZjsgICAgIC8qIGlucHV0IGRhdGEgYnVmZmVyICovCisJdTMyICAgaW5idWZfc2l6ZTsgICAgICAgLyogc2l6ZSBvZiBpbnB1dCBkYXRhIGJ1ZmZlciAqLworCXZvaWQgX191c2VyICpvdXRidWY7ICAgIC8qIG91dHB1dCBkYXRhIGJ1ZmZlciAqLworCXUzMiAgIG91dGJ1Zl9zaXplOyAgICAgIC8qIHNpemUgb2Ygb3V0cHV0IGRhdGEgYnVmZmVyICovCisJdm9pZCBfX3VzZXIgKmJ5dGVzX3JldHVybmVkOyAgIC8qIGNvdW50IG9mIGJ5dGVzIHJldHVybmVkICovCit9CitfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworCitzdHJ1Y3QgaHB0X2lvcG11Cit7CisJX19sZTMyIHJlc3J2ZWQwWzRdOworCV9fbGUzMiBpbmJvdW5kX21zZ2FkZHIwOworCV9fbGUzMiBpbmJvdW5kX21zZ2FkZHIxOworCV9fbGUzMiBvdXRib3VuZF9tc2dhZGRyMDsKKwlfX2xlMzIgb3V0Ym91bmRfbXNnYWRkcjE7CisJX19sZTMyIGluYm91bmRfZG9vcmJlbGw7CisJX19sZTMyIGluYm91bmRfaW50c3RhdHVzOworCV9fbGUzMiBpbmJvdW5kX2ludG1hc2s7CisJX19sZTMyIG91dGJvdW5kX2Rvb3JiZWxsOworCV9fbGUzMiBvdXRib3VuZF9pbnRzdGF0dXM7CisJX19sZTMyIG91dGJvdW5kX2ludG1hc2s7CisJX19sZTMyIHJlc2VydmVkMVsyXTsKKwlfX2xlMzIgaW5ib3VuZF9xdWV1ZTsKKwlfX2xlMzIgb3V0Ym91bmRfcXVldWU7Cit9OworCisjZGVmaW5lIElPUE1VX1FVRVVFX0VNUFRZICAgICAgICAgICAgMHhmZmZmZmZmZgorI2RlZmluZSBJT1BNVV9RVUVVRV9NQVNLX0hPU1RfQklUUyAgIDB4ZjAwMDAwMDAKKyNkZWZpbmUgSU9QTVVfUVVFVUVfQUREUl9IT1NUX0JJVCAgICAweDgwMDAwMDAwCisKKyNkZWZpbmUgSU9QTVVfT1VUQk9VTkRfSU5UX01TRzAgICAgICAxCisjZGVmaW5lIElPUE1VX09VVEJPVU5EX0lOVF9NU0cxICAgICAgMgorI2RlZmluZSBJT1BNVV9PVVRCT1VORF9JTlRfRE9PUkJFTEwgIDQKKyNkZWZpbmUgSU9QTVVfT1VUQk9VTkRfSU5UX1BPU1RRVUVVRSA4CisjZGVmaW5lIElPUE1VX09VVEJPVU5EX0lOVF9QQ0kgICAgICAgMHgxMAorCisjZGVmaW5lIElPUE1VX0lOQk9VTkRfSU5UX01TRzAgICAgICAgMQorI2RlZmluZSBJT1BNVV9JTkJPVU5EX0lOVF9NU0cxICAgICAgIDIKKyNkZWZpbmUgSU9QTVVfSU5CT1VORF9JTlRfRE9PUkJFTEwgICA0CisjZGVmaW5lIElPUE1VX0lOQk9VTkRfSU5UX0VSUk9SICAgICAgOAorI2RlZmluZSBJT1BNVV9JTkJPVU5EX0lOVF9QT1NUUVVFVUUgIDB4MTAKKworZW51bSBocHRfaW9wbXVfbWVzc2FnZSB7CisJLyogaG9zdC10by1pb3AgbWVzc2FnZXMgKi8KKwlJT1BNVV9JTkJPVU5EX01TRzBfTk9QID0gMCwKKwlJT1BNVV9JTkJPVU5EX01TRzBfUkVTRVQsCisJSU9QTVVfSU5CT1VORF9NU0cwX0ZMVVNILAorCUlPUE1VX0lOQk9VTkRfTVNHMF9TSFVURE9XTiwKKwlJT1BNVV9JTkJPVU5EX01TRzBfU1RPUF9CQUNLR1JPVU5EX1RBU0ssCisJSU9QTVVfSU5CT1VORF9NU0cwX1NUQVJUX0JBQ0tHUk9VTkRfVEFTSywKKwlJT1BNVV9JTkJPVU5EX01TRzBfTUFYID0gMHhmZiwKKwkvKiBpb3AtdG8taG9zdCBtZXNzYWdlcyAqLworCUlPUE1VX09VVEJPVU5EX01TRzBfUkVHSVNURVJfREVWSUNFXzAgPSAweDEwMCwKKwlJT1BNVV9PVVRCT1VORF9NU0cwX1JFR0lTVEVSX0RFVklDRV9NQVggPSAweDFmZiwKKwlJT1BNVV9PVVRCT1VORF9NU0cwX1VOUkVHSVNURVJfREVWSUNFXzAgPSAweDIwMCwKKwlJT1BNVV9PVVRCT1VORF9NU0cwX1VOUkVHSVNURVJfREVWSUNFX01BWCA9IDB4MmZmLAorCUlPUE1VX09VVEJPVU5EX01TRzBfUkVWQUxJREFURV9ERVZJQ0VfMCA9IDB4MzAwLAorCUlPUE1VX09VVEJPVU5EX01TRzBfUkVWQUxJREFURV9ERVZJQ0VfTUFYID0gMHgzZmYsCit9OworCitzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2hlYWRlcgoreworCV9fbGUzMiBzaXplOworCV9fbGUzMiB0eXBlOworCV9fbGUzMiBmbGFnczsKKwlfX2xlMzIgcmVzdWx0OworCV9fbGUzMiBjb250ZXh0OyAvKiBob3N0IGNvbnRleHQgKi8KKwlfX2xlMzIgY29udGV4dF9oaTMyOworfTsKKworI2RlZmluZSBJT1BfUkVRVUVTVF9GTEFHX1NZTkNfUkVRVUVTVCAxCisjZGVmaW5lIElPUF9SRVFVRVNUX0ZMQUdfQklTVF9SRVFVRVNUIDIKKyNkZWZpbmUgSU9QX1JFUVVFU1RfRkxBR19SRU1BUFBFRCAgICAgNAorI2RlZmluZSBJT1BfUkVRVUVTVF9GTEFHX09VVFBVVF9DT05URVhUIDgKKworZW51bSBocHRfaW9wX3JlcXVlc3RfdHlwZSB7CisJSU9QX1JFUVVFU1RfVFlQRV9HRVRfQ09ORklHID0gMCwKKwlJT1BfUkVRVUVTVF9UWVBFX1NFVF9DT05GSUcsCisJSU9QX1JFUVVFU1RfVFlQRV9CTE9DS19DT01NQU5ELAorCUlPUF9SRVFVRVNUX1RZUEVfU0NTSV9DT01NQU5ELAorCUlPUF9SRVFVRVNUX1RZUEVfSU9DVExfQ09NTUFORCwKKwlJT1BfUkVRVUVTVF9UWVBFX01BWAorfTsKKworZW51bSBocHRfaW9wX3Jlc3VsdF90eXBlIHsKKwlJT1BfUkVTVUxUX1BFTkRJTkcgPSAwLAorCUlPUF9SRVNVTFRfU1VDQ0VTUywKKwlJT1BfUkVTVUxUX0ZBSUwsCisJSU9QX1JFU1VMVF9CVVNZLAorCUlPUF9SRVNVTFRfUkVTRVQsCisJSU9QX1JFU1VMVF9JTlZBTElEX1JFUVVFU1QsCisJSU9QX1JFU1VMVF9CQURfVEFSR0VULAorCUlPUF9SRVNVTFRfTU9ERV9TRU5TRV9DSEVDS19DT05ESVRJT04sCit9OworCitzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2dldF9jb25maWcKK3sKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2hlYWRlciBoZWFkZXI7CisJX19sZTMyIGludGVyZmFjZV92ZXJzaW9uOworCV9fbGUzMiBmaXJtd2FyZV92ZXJzaW9uOworCV9fbGUzMiBtYXhfcmVxdWVzdHM7CisJX19sZTMyIHJlcXVlc3Rfc2l6ZTsKKwlfX2xlMzIgbWF4X3NnX2NvdW50OworCV9fbGUzMiBkYXRhX3RyYW5zZmVyX2xlbmd0aDsKKwlfX2xlMzIgYWxpZ25tZW50X21hc2s7CisJX19sZTMyIG1heF9kZXZpY2VzOworCV9fbGUzMiBzZHJhbV9zaXplOworfTsKKworc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zZXRfY29uZmlnCit7CisJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9oZWFkZXIgaGVhZGVyOworCV9fbGUzMiBpb3BfaWQ7CisJX19sZTMyIHZidXNfaWQ7CisJX19sZTMyIHJlc2VydmVbNl07Cit9OworCitzdHJ1Y3QgaHB0X2lvcHNnCit7CisJX19sZTMyIHNpemU7CisJX19sZTMyIGVvdDsgLyogbm9uLXplcm86IGVuZCBvZiB0YWJsZSAqLworCV9fbGU2NCBwY2lfYWRkcmVzczsKK307CisKK3N0cnVjdCBocHRfaW9wX3JlcXVlc3RfYmxvY2tfY29tbWFuZAoreworCXN0cnVjdCBocHRfaW9wX3JlcXVlc3RfaGVhZGVyIGhlYWRlcjsKKwl1OCAgICAgY2hhbm5lbDsKKwl1OCAgICAgdGFyZ2V0OworCXU4ICAgICBsdW47CisJdTggICAgIHBhZDE7CisJX19sZTE2IGNvbW1hbmQ7IC8qIElPUF9CTE9DS19DT01NQU5EX3tSRUFELFdSSVRFfSAqLworCV9fbGUxNiBzZWN0b3JzOworCV9fbGU2NCBsYmE7CisJc3RydWN0IGhwdF9pb3BzZyBzZ19saXN0WzFdOworfTsKKworI2RlZmluZSBJT1BfQkxPQ0tfQ09NTUFORF9SRUFEICAgICAxCisjZGVmaW5lIElPUF9CTE9DS19DT01NQU5EX1dSSVRFICAgIDIKKyNkZWZpbmUgSU9QX0JMT0NLX0NPTU1BTkRfVkVSSUZZICAgMworI2RlZmluZSBJT1BfQkxPQ0tfQ09NTUFORF9GTFVTSCAgICA0CisjZGVmaW5lIElPUF9CTE9DS19DT01NQU5EX1NIVVRET1dOIDUKKworc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zY3NpX2NvbW1hbmQKK3sKKwlzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X2hlYWRlciBoZWFkZXI7CisJdTggICAgIGNoYW5uZWw7CisJdTggICAgIHRhcmdldDsKKwl1OCAgICAgbHVuOworCXU4ICAgICBwYWQxOworCXU4ICAgICBjZGJbMTZdOworCV9fbGUzMiBkYXRheGZlcl9sZW5ndGg7CisJc3RydWN0IGhwdF9pb3BzZyBzZ19saXN0WzFdOworfTsKKworc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9pb2N0bF9jb21tYW5kCit7CisJc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9oZWFkZXIgaGVhZGVyOworCV9fbGUzMiBpb2N0bF9jb2RlOworCV9fbGUzMiBpbmJ1Zl9zaXplOworCV9fbGUzMiBvdXRidWZfc2l6ZTsKKwlfX2xlMzIgYnl0ZXNfcmV0dXJuZWQ7CisJdTggICAgIGJ1ZlsxXTsKKwkvKiBvdXQgZGF0YSBzaG91bGQgYmUgcHV0IGF0IGJ1ZlsoaW5idWZfc2l6ZSszKSZ+M10gKi8KK307CisKKyNkZWZpbmUgSFBUSU9QX01BWF9SRVFVRVNUUyAgMjU2dQorCitzdHJ1Y3QgaHB0aW9wX3JlcXVlc3QgeworCXN0cnVjdCBocHRpb3BfcmVxdWVzdCAqIG5leHQ7CisJdm9pZCAqICAgICAgICAgICAgICAgICAgcmVxX3ZpcnQ7CisJdTMyICAgICAgICAgICAgICAgICAgICAgcmVxX3NoaWZ0ZWRfcGh5OworCXN0cnVjdCBzY3NpX2NtbmQgKiAgICAgIHNjcDsKKwlpbnQgICAgICAgICAgICAgICAgICAgICBpbmRleDsKK307CisKK3N0cnVjdCBocHRfc2NzaV9wb2ludGVyIHsKKwlpbnQgbWFwcGVkOworCWludCBzZ2NudDsKKwlkbWFfYWRkcl90IGRtYV9oYW5kbGU7Cit9OworCisjZGVmaW5lIEhQVF9TQ1Aoc2NwKSAoKHN0cnVjdCBocHRfc2NzaV9wb2ludGVyICopJihzY3ApLT5TQ3ApCisKK3N0cnVjdCBocHRpb3BfaGJhIHsKKwlzdHJ1Y3QgaHB0X2lvcG11IF9faW9tZW0gKiBpb3A7CisJc3RydWN0IFNjc2lfSG9zdCAqIGhvc3Q7CisJc3RydWN0IHBjaV9kZXYgKiBwY2lkZXY7CisKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CisKKwkvKiBJT1AgY29uZmlnIGluZm8gKi8KKwl1MzIgICAgIGZpcm13YXJlX3ZlcnNpb247CisJdTMyICAgICBzZHJhbV9zaXplOworCXUzMiAgICAgbWF4X2RldmljZXM7CisJdTMyICAgICBtYXhfcmVxdWVzdHM7CisJdTMyICAgICBtYXhfcmVxdWVzdF9zaXplOworCXUzMiAgICAgbWF4X3NnX2Rlc2NyaXB0b3JzOworCisJdTMyICAgICByZXFfc2l6ZTsgLyogaG9zdC1hbGxvY2F0ZWQgcmVxdWVzdCBidWZmZXIgc2l6ZSAqLworCWludCAgICAgaW5pdGlhbGl6ZWQ7CisJaW50ICAgICBtc2dfZG9uZTsKKworCXN0cnVjdCBocHRpb3BfcmVxdWVzdCAqIHJlcV9saXN0OworCXN0cnVjdCBocHRpb3BfcmVxdWVzdCByZXFzW0hQVElPUF9NQVhfUkVRVUVTVFNdOworCisJLyogdXNlZCB0byBmcmVlIGFsbG9jYXRlZCBkbWEgYXJlYSAqLworCXZvaWQgKiAgICAgIGRtYV9jb2hlcmVudDsKKwlkbWFfYWRkcl90ICBkbWFfY29oZXJlbnRfaGFuZGxlOworCisJYXRvbWljX3QgICAgcmVzZXRfY291bnQ7CisJYXRvbWljX3QgICAgcmVzZXR0aW5nOworCisJd2FpdF9xdWV1ZV9oZWFkX3QgcmVzZXRfd3E7CisJd2FpdF9xdWV1ZV9oZWFkX3QgaW9jdGxfd3E7Cit9OworCitzdHJ1Y3QgaHB0X2lvY3RsX2sKK3sKKwlzdHJ1Y3QgaHB0aW9wX2hiYSAqIGhiYTsKKwl1MzIgICAgaW9jdGxfY29kZTsKKwl1MzIgICAgaW5idWZfc2l6ZTsKKwl1MzIgICAgb3V0YnVmX3NpemU7CisJdm9pZCAqIGluYnVmOworCXZvaWQgKiBvdXRidWY7CisJdTMyICAqIGJ5dGVzX3JldHVybmVkOworCXZvaWQgKCpkb25lKShzdHJ1Y3QgaHB0X2lvY3RsX2sgKik7CisJaW50ICAgIHJlc3VsdDsgLyogSFBUX0lPQ1RMX1JFU1VMVF8gKi8KK307CisKKyNkZWZpbmUgSFBUX0lPQ1RMX1JFU1VMVF9PSyAgICAgICAgIDAKKyNkZWZpbmUgSFBUX0lPQ1RMX1JFU1VMVF9GQUlMRUQgICAgICgtMSkKKworI2lmIDAKKyNkZWZpbmUgZHByaW50ayhmbXQsIGFyZ3MuLi4pIGRvIHsgcHJpbnRrKGZtdCwgIyNhcmdzKTsgfSB3aGlsZSgwKQorI2Vsc2UKKyNkZWZpbmUgZHByaW50ayhmbXQsIGFyZ3MuLi4pCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaWJtbWNhLmMgYi9kcml2ZXJzL3Njc2kvaWJtbWNhLmMKaW5kZXggMjRlYjU5ZS4uMTE1ZjU1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2libW1jYS5jCisrKyBiL2RyaXZlcnMvc2NzaS9pYm1tY2EuYwpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZShkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwotCQorCiAJc2hwbnQgPSBkZXY7CQkvKiBhc3NpZ24gaG9zdC1zdHJ1Y3R1cmUgdG8gbG9jYWwgcG9pbnRlciAqLwogCWxlbiA9IDA7CQkvKiBzZXQgZmlsbGVkIHRleHQtYnVmZmVyIGluZGV4IHRvIDAgKi8KIAkvKiBnZXQgdGhlIF9zcGVjaWFsIGNvbnRlbnRzIG9mIHRoZSBob3N0ZGF0YSBzdHJ1Y3R1cmUgKi8KQEAgLTE0NTYsNyArMTQ1Niw3IEBACiAJCS8qIGlmIHRoZSBpbnRlZ3JhdGVkIHN1YnN5c3RlbSBoYXMgYmVlbiBmb3VuZCBhdXRvbWF0aWNhbGx5OiAqLwogCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sCiAJCQkgICAgICAgIkFkYXB0ZXIgY2F0ZWdvcnk6IGludGVncmF0ZWRcbiIgIkNoaXAgcmV2aXNpb24gbGV2ZWw6ICVkXG4iICJDaGlwIHN0YXR1czogJXNcbiIgIjgga0J5dGUgTlZSQU0gc3RhdHVzOiAlc1xuIiwgKChwb3NbMl0gJiAweGYwKSA+PiA0KSwgKHBvc1syXSAmIDEpID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwgKHBvc1syXSAmIDIpID8gImxvY2tlZCIgOiAiYWNjZXNzaWJsZSIpOwotCX0gZWxzZSBpZiAoKHNwZWNpYWxlID49IDApICYmIChzcGVjaWFsZSA8IChzaXplb2Yoc3Vic3lzX2xpc3QpIC8gc2l6ZW9mKHN0cnVjdCBzdWJzeXNfbGlzdF9zdHJ1Y3QpKSkpIHsKKwl9IGVsc2UgaWYgKChzcGVjaWFsZSA+PSAwKSAmJiAoc3BlY2lhbGUgPCBBUlJBWV9TSVpFKHN1YnN5c19saXN0KSkpIHsKIAkJLyogaWYgdGhlIHN1YnN5c3RlbSBpcyBhIHNsb3QgYWRhcHRlciAqLwogCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICJBZGFwdGVyIGNhdGVnb3J5OiBzbG90LWNhcmRcbiIgIlJPTSBTZWdtZW50IEFkZHJlc3M6ICIpOwogCQlpZiAoKHBvc1syXSAmIDB4ZjApID09IDB4ZjApCkBAIC0xNDc3LDE2ICsxNDc3LDE2IEBACiAJd2hpbGUgKGxlbiAlIHNpemVvZihpbnQpICE9IChzaXplb2YoaW50KSAtIDEpKQogCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICIgIik7CiAJbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAiXG4iKTsKLQkKKwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2hwbnQtPmhvc3RfbG9jaywgZmxhZ3MpOwotCQorCiAJcmV0dXJuIGxlbjsKIH0KIAogaW50IGlibW1jYV9kZXRlY3Qoc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSAqIHNjc2lfdGVtcGxhdGUpCiB7CiAJc3RydWN0IFNjc2lfSG9zdCAqc2hwbnQ7Ci0JaW50IHBvcnQsIGlkLCBpLCBqLCBrLCBsaXN0X3NpemUsIHNsb3Q7CisJaW50IHBvcnQsIGlkLCBpLCBqLCBrLCBzbG90OwogCWludCBkZXZpY2VzX29uX2lycV8xMSA9IDA7CiAJaW50IGRldmljZXNfb25faXJxXzE0ID0gMDsKIAlpbnQgSVJRMTRfcmVnaXN0ZXJlZCA9IDA7CkBAIC0xNjAzLDggKzE2MDMsNyBAQAogCS8qIG5vdyBsb29rIGZvciBvdGhlciBhZGFwdGVycyBpbiBNQ0Egc2xvdHMsICovCiAJLyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Yga25vd24gSUJNLVNDU0ktc3Vic3lzdGVtIHR5cGVzICovCiAJLyogc2VlIHRoZSBwb3NbMl0gZGVwZW5kZW5jZSB0byBnZXQgdGhlIGFkYXB0ZXIgcG9ydC1vZmZzZXQuICovCi0JbGlzdF9zaXplID0gc2l6ZW9mKHN1YnN5c19saXN0KSAvIHNpemVvZihzdHJ1Y3Qgc3Vic3lzX2xpc3Rfc3RydWN0KTsKLQlmb3IgKGkgPSAwOyBpIDwgbGlzdF9zaXplOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdWJzeXNfbGlzdCk7IGkrKykgewogCQkvKiBzY2FuIGVhY2ggc2xvdCBmb3IgYSBmaXR0aW5nIGFkYXB0ZXIgaWQgKi8KIAkJc2xvdCA9IDA7CS8qIHN0YXJ0IGF0IHNsb3QgMCAqLwogCQl3aGlsZSAoKHNsb3QgPSBtY2FfZmluZF9hZGFwdGVyKHN1YnN5c19saXN0W2ldLm1jYV9pZCwgc2xvdCkpCkBAIC0xNjY5LDggKzE2NjgsNyBAQAogCS8qIG5vdyBjaGVjayBmb3IgU0NTSS1hZGFwdGVycywgbWFwcGVkIHRvIHRoZSBpbnRlZ3JhdGVkIFNDU0kKIAkgKiBhcmVhLiBFLmcuIGEgVy9DYWNoZSBpbiBNQ0Etc2xvdCA5KCEpLiBEbyB0aGUgY2hlY2sgY29ycmVjdCBoZXJlLAogCSAqIGFzIHRoaXMgaXMgYSBrbm93biBlZmZlY3Qgb24gc29tZSBtb2RlbHMgOTV4eC4gKi8KLQlsaXN0X3NpemUgPSBzaXplb2Yoc3Vic3lzX2xpc3QpIC8gc2l6ZW9mKHN0cnVjdCBzdWJzeXNfbGlzdF9zdHJ1Y3QpOwotCWZvciAoaSA9IDA7IGkgPCBsaXN0X3NpemU7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN1YnN5c19saXN0KTsgaSsrKSB7CiAJCS8qIHNjYW4gZWFjaCBzbG90IGZvciBhIGZpdHRpbmcgYWRhcHRlciBpZCAqLwogCQlzbG90ID0gbWNhX2ZpbmRfYWRhcHRlcihzdWJzeXNfbGlzdFtpXS5tY2FfaWQsIE1DQV9JTlRFR1NDU0kpOwogCQlpZiAoc2xvdCAhPSBNQ0FfTk9URk9VTkQpIHsJLyogc2NhbiB0aHJvdWdoIGFsbCBzbG90cyAqLwpAQCAtMjI0Myw4ICsyMjQxLDcgQEAKIAlpbnQgaG9zdF9pbmRleDsKIAl1bnNpZ25lZCBsb25nIGltbV9jb21tYW5kOwogCi0JaWYgKGNtZCA9PSBOVUxMKQotCQlCVUcoKTsKKwlCVUdfT04oY21kID09IE5VTEwpOwogCiAJdGlja3MgPSBJTV9SRVNFVF9ERUxBWSAqIEhaOwogCXNocG50ID0gY21kLT5kZXZpY2UtPmhvc3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaWJtdnNjc2kvaWJtdnNjc2kuYyBiL2RyaXZlcnMvc2NzaS9pYm12c2NzaS9pYm12c2NzaS5jCmluZGV4IDJlOWJlODMuLjk0NGZjMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaS9pYm12c2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9pYm12c2NzaS9pYm12c2NzaS5jCkBAIC0xMjEsMTAgKzEyMSw5IEBACiAKIAlwb29sLT5zaXplID0gc2l6ZTsKIAlwb29sLT5uZXh0ID0gMDsKLQlwb29sLT5ldmVudHMgPSBrbWFsbG9jKHBvb2wtPnNpemUgKiBzaXplb2YoKnBvb2wtPmV2ZW50cyksIEdGUF9LRVJORUwpOworCXBvb2wtPmV2ZW50cyA9IGtjYWxsb2MocG9vbC0+c2l6ZSwgc2l6ZW9mKCpwb29sLT5ldmVudHMpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBvb2wtPmV2ZW50cykKIAkJcmV0dXJuIC1FTk9NRU07Ci0JbWVtc2V0KHBvb2wtPmV2ZW50cywgMHgwMCwgcG9vbC0+c2l6ZSAqIHNpemVvZigqcG9vbC0+ZXZlbnRzKSk7CiAKIAlwb29sLT5pdV9zdG9yYWdlID0KIAkgICAgZG1hX2FsbG9jX2NvaGVyZW50KGhvc3RkYXRhLT5kZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaWRlLXNjc2kuYyBiL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jCmluZGV4IDM5Yjc2MGEuLjk4OGU2ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jCkBAIC02MDAsOCArNjAwLDcgQEAKIAkJCQkiaXNzdWluZyBhIHBhY2tldCBjb21tYW5kXG4iKTsKIAkJcmV0dXJuIGlkZV9kb19yZXNldCAoZHJpdmUpOwogCX0KLQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkKLQkJQlVHKCk7CisJQlVHX09OKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpOwogCS8qIFNldCB0aGUgaW50ZXJydXB0IHJvdXRpbmUgKi8KIAlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZpZGVzY3NpX3BjX2ludHIsIGdldF90aW1lb3V0KHBjKSwgaWRlc2NzaV9leHBpcnkpOwogCS8qIFNlbmQgdGhlIGFjdHVhbCBwYWNrZXQgKi8KQEAgLTY5MSw4ICs2OTAsNyBAQAogCQlzZXRfYml0KFBDX0RNQV9PSywgJnBjLT5mbGFncyk7CiAKIAlpZiAodGVzdF9iaXQoSURFU0NTSV9EUlFfSU5URVJSVVBULCAmc2NzaS0+ZmxhZ3MpKSB7Ci0JCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQotCQkJQlVHKCk7CisJCUJVR19PTihIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKTsKIAkJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmaWRlc2NzaV90cmFuc2Zlcl9wYywKIAkJCQlnZXRfdGltZW91dChwYyksIGlkZXNjc2lfZXhwaXJ5KTsKIAkJLyogSXNzdWUgdGhlIHBhY2tldCBjb21tYW5kICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaW1tLmMgYi9kcml2ZXJzL3Njc2kvaW1tLmMKaW5kZXggZmMwZjMwYS4uY2QyZGZmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2ltbS5jCisrKyBiL2RyaXZlcnMvc2NzaS9pbW0uYwpAQCAtMTExOSw2ICsxMTE5LDEwIEBACiAJcmV0dXJuIC1FTk9ERVY7CiB9CiAKKy8qCisgKiBpbW0gY2Fubm90IGRlYWwgd2l0aCBoaWdobWVtLCBzbyB0aGlzIGNhdXNlcyBhbGwgSU8gcGFnZXMgZm9yIHRoaXMgaG9zdAorICogdG8gcmVzaWRlIGluIGxvdyBtZW1vcnkgKGhlbmNlIG1hcHBlZCkKKyAqLwogc3RhdGljIGludCBpbW1fYWRqdXN0X3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqZGV2aWNlKQogewogCWJsa19xdWV1ZV9ib3VuY2VfbGltaXQoZGV2aWNlLT5yZXF1ZXN0X3F1ZXVlLCBCTEtfQk9VTkNFX0hJR0gpOwpAQCAtMTE0MSwxMCArMTE0NSw2IEBACiAJLnVzZV9jbHVzdGVyaW5nCQk9IEVOQUJMRV9DTFVTVEVSSU5HLAogCS5jYW5fcXVldWUJCT0gMSwKIAkuc2xhdmVfYWxsb2MJCT0gaW1tX2FkanVzdF9xdWV1ZSwKLQkudW5jaGVja2VkX2lzYV9kbWEJPSAxLCAvKiBpbW0gY2Fubm90IGRlYWwgd2l0aCBoaWdobWVtLCBzbwotCQkJCSAgICAgICogdGhpcyBpcyBhbiBlYXN5IHRyaWNrIHRvIGVuc3VyZQotCQkJCSAgICAgICogYWxsIGlvIHBhZ2VzIGZvciB0aGlzIGhvc3QgcmVzaWRlCi0JCQkJICAgICAgKiBpbiBsb3cgbWVtb3J5ICovCiB9OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaW4yMDAwLmMgYi9kcml2ZXJzL3Njc2kvaW4yMDAwLmMKaW5kZXggOWM1MTk4Ny4uODgzYmM5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2luMjAwMC5jCisrKyBiL2RyaXZlcnMvc2NzaS9pbjIwMDAuYwpAQCAtMzcwLDcgKzM3MCw3IEBACiAgKi8KIAogCWlmIChjbWQtPnVzZV9zZykgewotCQljbWQtPlNDcC5idWZmZXIgPSAoc3RydWN0IHNjYXR0ZXJsaXN0ICopIGNtZC0+YnVmZmVyOworCQljbWQtPlNDcC5idWZmZXIgPSAoc3RydWN0IHNjYXR0ZXJsaXN0ICopIGNtZC0+cmVxdWVzdF9idWZmZXI7CiAJCWNtZC0+U0NwLmJ1ZmZlcnNfcmVzaWR1YWwgPSBjbWQtPnVzZV9zZyAtIDE7CiAJCWNtZC0+U0NwLnB0ciA9IChjaGFyICopIHBhZ2VfYWRkcmVzcyhjbWQtPlNDcC5idWZmZXItPnBhZ2UpICsgY21kLT5TQ3AuYnVmZmVyLT5vZmZzZXQ7CiAJCWNtZC0+U0NwLnRoaXNfcmVzaWR1YWwgPSBjbWQtPlNDcC5idWZmZXItPmxlbmd0aDsKQEAgLTE4MDksNyArMTgwOSw3IEBACiAKIAogI2RlZmluZSBNQVhfSU4yMDAwX0hPU1RTIDMKLSNkZWZpbmUgTUFYX1NFVFVQX0FSR1MgKHNpemVvZihzZXR1cF9hcmdzKSAvIHNpemVvZihjaGFyICopKQorI2RlZmluZSBNQVhfU0VUVVBfQVJHUyBBUlJBWV9TSVpFKHNldHVwX2FyZ3MpCiAjZGVmaW5lIFNFVFVQX0JVRkZFUl9TSVpFIDIwMAogc3RhdGljIGNoYXIgc2V0dXBfYnVmZmVyW1NFVFVQX0JVRkZFUl9TSVpFXTsKIHN0YXRpYyBjaGFyIHNldHVwX3VzZWRbTUFYX1NFVFVQX0FSR1NdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2luaXRpby5jIGIvZHJpdmVycy9zY3NpL2luaXRpby5jCmluZGV4IDBjYzdmNjUuLjkxM2JhOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pbml0aW8uYworKysgYi9kcml2ZXJzL3Njc2kvaW5pdGlvLmMKQEAgLTE1NCw3ICsxNTQsNiBAQAogc3RhdGljIHVuc2lnbmVkIGludCBpOTF1X2RlYnVnID0gREVCVUdfREVGQVVMVDsKICNlbmRpZgogCi0jZGVmaW5lIFRVTFNaKHN6KSAgICAgKHNpemVvZihzeikgLyBzaXplb2Yoc3pbMF0pKQogI2RlZmluZSBUVUxfUkRXT1JEKHgseSkgICAgICAgICAoc2hvcnQpKGlubCgoaW50KSgoVUxPTkcpKChVTE9ORyl4KyhVQ0hBUil5KSkgKSkKIAogdHlwZWRlZiBzdHJ1Y3QgUENJX0lEX1N0cnVjIHsKQEAgLTI3NzEsNyArMjc3MCw3IEBACiAKIAlpbml0X2k5MXVBZGFwdGVyX3RhYmxlKCk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgVFVMU1ooaTkxdV9wY2lfZGV2aWNlcyk7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpOTF1X3BjaV9kZXZpY2VzKTsgaSsrKQogCXsKIAkJd2hpbGUgKChwRGV2ID0gcGNpX2ZpbmRfZGV2aWNlKGk5MXVfcGNpX2RldmljZXNbaV0udmVuZG9yX2lkLCBpOTF1X3BjaV9kZXZpY2VzW2ldLmRldmljZV9pZCwgcERldikpICE9IE5VTEwpIHsKIAkJCWlmIChwY2lfZW5hYmxlX2RldmljZShwRGV2KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pcHIuYyBiL2RyaXZlcnMvc2NzaS9pcHIuYwppbmRleCA4YjgwZTU5Li45NmI2NWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaXByLmMKKysrIGIvZHJpdmVycy9zY3NpL2lwci5jCkBAIC03OSw3ICs3OSw2IEBACiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RjcS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KICNpbmNsdWRlICJpcHIuaCIKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pcHMuYyBiL2RyaXZlcnMvc2NzaS9pcHMuYwppbmRleCBhNGMwYjA0Li41MzUzYjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaXBzLmMKKysrIGIvZHJpdmVycy9zY3NpL2lwcy5jCkBAIC01NTYsNyArNTU2LDcgQEAKIAkJICogV2Ugbm93IGhhdmUga2V5L3ZhbHVlIHBhaXJzLgogCQkgKiBVcGRhdGUgdGhlIHZhcmlhYmxlcwogCQkgKi8KLQkJZm9yIChpID0gMDsgaSA8IChzaXplb2YgKG9wdGlvbnMpIC8gc2l6ZW9mIChvcHRpb25zWzBdKSk7IGkrKykgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShvcHRpb25zKTsgaSsrKSB7CiAJCQlpZiAoc3RybmljbXAKIAkJCSAgICAoa2V5LCBvcHRpb25zW2ldLm9wdGlvbl9uYW1lLAogCQkJICAgICBzdHJsZW4ob3B0aW9uc1tpXS5vcHRpb25fbmFtZSkpID09IDApIHsKQEAgLTQzNjQsNyArNDM2NCw3IEBACiAKIAlNRVRIT0RfVFJBQ0UoImlwc19yZGNhcCIsIDEpOwogCi0JaWYgKHNjYi0+c2NzaV9jbWQtPmJ1ZmZsZW4gPCA4KQorCWlmIChzY2ItPnNjc2lfY21kLT5yZXF1ZXN0X2J1ZmZsZW4gPCA4KQogCQlyZXR1cm4gKDApOwogCiAJY2FwLmxiYSA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMgYi9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMKaW5kZXggMjA2OGI2Ni4uYjQ3NDNhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5jCisrKyBiL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuYwpAQCAtMyw3ICszLDggQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgRG1pdHJ5IFl1c3Vwb3YKICAqIENvcHlyaWdodCAoQykgMjAwNCBBbGV4IEFpem1hbgotICogQ29weXJpZ2h0IChDKSAyMDA1IE1pa2UgQ2hyaXN0aWUKKyAqIENvcHlyaWdodCAoQykgMjAwNSAtIDIwMDYgTWlrZSBDaHJpc3RpZQorICogQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBtYWludGFpbmVkIGJ5IG9wZW4taXNjc2lAZ29vZ2xlZ3JvdXBzLmNvbQogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0zNiwzNyArMzcsMjggQEAKICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPG5ldC90Y3AuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxzY3NpL3Njc2lfZWguaD4KLSNpbmNsdWRlIDxzY3NpL3Njc2lfcmVxdWVzdC5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV90Y3EuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuaD4KIAogI2luY2x1ZGUgImlzY3NpX3RjcC5oIgogCisjZGVmaW5lIElTQ1NJX1RDUF9WRVJTSU9OICIxLjAtNTk1IgorCiBNT0RVTEVfQVVUSE9SKCJEbWl0cnkgWXVzdXBvdiA8ZG1pdHJ5X3l1c0B5YWhvby5jb20+LCAiCiAJICAgICAgIkFsZXggQWl6bWFuIDxpdG43ODBAeWFob28uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJpU0NTSS9UQ1AgZGF0YS1wYXRoIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1NT0RVTEVfVkVSU0lPTigiMDo0LjQ0NSIpOworTU9EVUxFX1ZFUlNJT04oSVNDU0lfVENQX1ZFUlNJT04pOwogLyogI2RlZmluZSBERUJVR19UQ1AgKi8KLS8qICNkZWZpbmUgREVCVUdfU0NTSSAqLwogI2RlZmluZSBERUJVR19BU1NFUlQKIAogI2lmZGVmIERFQlVHX1RDUAotI2RlZmluZSBkZWJ1Z190Y3AoZm10Li4uKSBwcmludGsoS0VSTl9ERUJVRyAidGNwOiAiIGZtdCkKKyNkZWZpbmUgZGVidWdfdGNwKGZtdC4uLikgcHJpbnRrKEtFUk5fSU5GTyAidGNwOiAiIGZtdCkKICNlbHNlCiAjZGVmaW5lIGRlYnVnX3RjcChmbXQuLi4pCiAjZW5kaWYKIAotI2lmZGVmIERFQlVHX1NDU0kKLSNkZWZpbmUgZGVidWdfc2NzaShmbXQuLi4pIHByaW50ayhLRVJOX0RFQlVHICJzY3NpOiAiIGZtdCkKLSNlbHNlCi0jZGVmaW5lIGRlYnVnX3Njc2koZm10Li4uKQotI2VuZGlmCi0KICNpZm5kZWYgREVCVUdfQVNTRVJUCiAjaWZkZWYgQlVHX09OCiAjdW5kZWYgQlVHX09OCkBAIC03NCwyMiArNjYsOSBAQAogI2RlZmluZSBCVUdfT04oZXhwcikKICNlbmRpZgogCi0jZGVmaW5lIElOVkFMSURfU05fREVMVEEJMHhmZmZmCi0KIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNjc2lfbWF4X2x1biA9IDUxMjsKIG1vZHVsZV9wYXJhbV9uYW1lZChtYXhfbHVuLCBpc2NzaV9tYXhfbHVuLCB1aW50LCBTX0lSVUdPKTsKIAotLyogZ2xvYmFsIGRhdGEgKi8KLXN0YXRpYyBrbWVtX2NhY2hlX3QgKnRhc2tjYWNoZTsKLQotc3RhdGljIGlubGluZSB2b2lkCi1pc2NzaV9idWZfaW5pdF92aXJ0KHN0cnVjdCBpc2NzaV9idWYgKmlidWYsIGNoYXIgKnZidWYsIGludCBzaXplKQotewotCXNnX2luaXRfb25lKCZpYnVmLT5zZywgKHU4ICopdmJ1Ziwgc2l6ZSk7Ci0JaWJ1Zi0+c2VudCA9IDA7Ci0JaWJ1Zi0+dXNlX3NlbmRtc2cgPSAwOwotfQotCiBzdGF0aWMgaW5saW5lIHZvaWQKIGlzY3NpX2J1Zl9pbml0X2lvdihzdHJ1Y3QgaXNjc2lfYnVmICppYnVmLCBjaGFyICp2YnVmLCBpbnQgc2l6ZSkKIHsKQEAgLTEzMCw2OCArMTA5LDM5IEBACiBpc2NzaV9oZHJfZGlnZXN0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfYnVmICpidWYsCiAJCSB1OCogY3JjKQogewotCWNyeXB0b19kaWdlc3RfZGlnZXN0KGNvbm4tPnR4X3RmbSwgJmJ1Zi0+c2csIDEsIGNyYyk7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CisKKwljcnlwdG9fZGlnZXN0X2RpZ2VzdCh0Y3BfY29ubi0+dHhfdGZtLCAmYnVmLT5zZywgMSwgY3JjKTsKIAlidWYtPnNnLmxlbmd0aCArPSBzaXplb2YodWludDMyX3QpOwogfQogCi1zdGF0aWMgdm9pZAotaXNjc2lfY29ubl9mYWlsdXJlKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBlbnVtIGlzY3NpX2VyciBlcnIpCi17Ci0Jc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmc2Vzc2lvbi0+bG9jaywgZmxhZ3MpOwotCWlmIChzZXNzaW9uLT5jb25uX2NudCA9PSAxIHx8IHNlc3Npb24tPmxlYWRjb25uID09IGNvbm4pCi0JCXNlc3Npb24tPnN0YXRlID0gSVNDU0lfU1RBVEVfRkFJTEVEOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNlc3Npb24tPmxvY2ssIGZsYWdzKTsKLQlzZXRfYml0KFNVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF90eCk7Ci0Jc2V0X2JpdChTVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfcngpOwotCWlzY3NpX2Nvbm5fZXJyb3IoY29ubi0+Y2xzX2Nvbm4sIGVycik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgaW50Ci1pc2NzaV9jaGVja19hc3NpZ25fY21kc24oc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBpc2NzaV9ub3BpbiAqaGRyKQoraXNjc2lfaGRyX2V4dHJhY3Qoc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubikKIHsKLQl1aW50MzJfdCBtYXhfY21kc24gPSBiZTMyX3RvX2NwdShoZHItPm1heF9jbWRzbik7Ci0JdWludDMyX3QgZXhwX2NtZHNuID0gYmUzMl90b19jcHUoaGRyLT5leHBfY21kc24pOworCXN0cnVjdCBza19idWZmICpza2IgPSB0Y3BfY29ubi0+aW4uc2tiOwogCi0JaWYgKG1heF9jbWRzbiA8IGV4cF9jbWRzbiAtMSAmJgotCSAgICBtYXhfY21kc24gPiBleHBfY21kc24gLSBJTlZBTElEX1NOX0RFTFRBKQotCQlyZXR1cm4gSVNDU0lfRVJSX01BWF9DTURTTjsKLQlpZiAobWF4X2NtZHNuID4gc2Vzc2lvbi0+bWF4X2NtZHNuIHx8Ci0JICAgIG1heF9jbWRzbiA8IHNlc3Npb24tPm1heF9jbWRzbiAtIElOVkFMSURfU05fREVMVEEpCi0JCXNlc3Npb24tPm1heF9jbWRzbiA9IG1heF9jbWRzbjsKLQlpZiAoZXhwX2NtZHNuID4gc2Vzc2lvbi0+ZXhwX2NtZHNuIHx8Ci0JICAgIGV4cF9jbWRzbiA8IHNlc3Npb24tPmV4cF9jbWRzbiAtIElOVkFMSURfU05fREVMVEEpCi0JCXNlc3Npb24tPmV4cF9jbWRzbiA9IGV4cF9jbWRzbjsKKwl0Y3BfY29ubi0+aW4uemVyb19jb3B5X2hkciA9IDA7CiAKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQKLWlzY3NpX2hkcl9leHRyYWN0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQotewotCXN0cnVjdCBza19idWZmICpza2IgPSBjb25uLT5pbi5za2I7Ci0KLQlpZiAoY29ubi0+aW4uY29weSA+PSBjb25uLT5oZHJfc2l6ZSAmJgotCSAgICBjb25uLT5pbl9wcm9ncmVzcyA9PSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUikgeworCWlmICh0Y3BfY29ubi0+aW4uY29weSA+PSB0Y3BfY29ubi0+aGRyX3NpemUgJiYKKwkgICAgdGNwX2Nvbm4tPmluX3Byb2dyZXNzID09IElOX1BST0dSRVNTX1dBSVRfSEVBREVSKSB7CiAJCS8qCiAJCSAqIFplcm8tY29weSBQRFUgSGVhZGVyOiB1c2luZyBjb25uZWN0aW9uIGNvbnRleHQKIAkJICogdG8gc3RvcmUgaGVhZGVyIHBvaW50ZXIuCiAJCSAqLwogCQlpZiAoc2tiX3NoaW5mbyhza2IpLT5mcmFnX2xpc3QgPT0gTlVMTCAmJgotCQkgICAgIXNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3MpCi0JCQljb25uLT5pbi5oZHIgPSAoc3RydWN0IGlzY3NpX2hkciAqKQotCQkJCSgoY2hhciopc2tiLT5kYXRhICsgY29ubi0+aW4ub2Zmc2V0KTsKLQkJZWxzZSB7CisJCSAgICAhc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFncykgeworCQkJdGNwX2Nvbm4tPmluLmhkciA9IChzdHJ1Y3QgaXNjc2lfaGRyICopCisJCQkJKChjaGFyKilza2ItPmRhdGEgKyB0Y3BfY29ubi0+aW4ub2Zmc2V0KTsKKwkJCXRjcF9jb25uLT5pbi56ZXJvX2NvcHlfaGRyID0gMTsKKwkJfSBlbHNlIHsKIAkJCS8qIGlnbm9yaW5nIHJldHVybiBjb2RlIHNpbmNlIHdlIGNoZWNrZWQKIAkJCSAqIGluLmNvcHkgYmVmb3JlICovCi0JCQlza2JfY29weV9iaXRzKHNrYiwgY29ubi0+aW4ub2Zmc2V0LAotCQkJCSZjb25uLT5oZHIsIGNvbm4tPmhkcl9zaXplKTsKLQkJCWNvbm4tPmluLmhkciA9ICZjb25uLT5oZHI7CisJCQlza2JfY29weV9iaXRzKHNrYiwgdGNwX2Nvbm4tPmluLm9mZnNldCwKKwkJCQkmdGNwX2Nvbm4tPmhkciwgdGNwX2Nvbm4tPmhkcl9zaXplKTsKKwkJCXRjcF9jb25uLT5pbi5oZHIgPSAmdGNwX2Nvbm4tPmhkcjsKIAkJfQotCQljb25uLT5pbi5vZmZzZXQgKz0gY29ubi0+aGRyX3NpemU7Ci0JCWNvbm4tPmluLmNvcHkgLT0gY29ubi0+aGRyX3NpemU7CisJCXRjcF9jb25uLT5pbi5vZmZzZXQgKz0gdGNwX2Nvbm4tPmhkcl9zaXplOworCQl0Y3BfY29ubi0+aW4uY29weSAtPSB0Y3BfY29ubi0+aGRyX3NpemU7CiAJfSBlbHNlIHsKIAkJaW50IGhkcl9yZW1haW5zOwogCQlpbnQgY29weWxlbjsKQEAgLTIwMSwxMTggKzE1MSw1MSBAQAogCQkgKiBjb3B5aW5nIGl0Li4uIFRoaXMnbGwgaGFwcGVuIHF1aXRlIHJhcmVseS4KIAkJICovCiAKLQkJaWYgKGNvbm4tPmluX3Byb2dyZXNzID09IElOX1BST0dSRVNTX1dBSVRfSEVBREVSKQotCQkJY29ubi0+aW4uaGRyX29mZnNldCA9IDA7CisJCWlmICh0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPT0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVIpCisJCQl0Y3BfY29ubi0+aW4uaGRyX29mZnNldCA9IDA7CiAKLQkJaGRyX3JlbWFpbnMgPSBjb25uLT5oZHJfc2l6ZSAtIGNvbm4tPmluLmhkcl9vZmZzZXQ7CisJCWhkcl9yZW1haW5zID0gdGNwX2Nvbm4tPmhkcl9zaXplIC0gdGNwX2Nvbm4tPmluLmhkcl9vZmZzZXQ7CiAJCUJVR19PTihoZHJfcmVtYWlucyA8PSAwKTsKIAotCQljb3B5bGVuID0gbWluKGNvbm4tPmluLmNvcHksIGhkcl9yZW1haW5zKTsKLQkJc2tiX2NvcHlfYml0cyhza2IsIGNvbm4tPmluLm9mZnNldCwKLQkJCShjaGFyKikmY29ubi0+aGRyICsgY29ubi0+aW4uaGRyX29mZnNldCwgY29weWxlbik7CisJCWNvcHlsZW4gPSBtaW4odGNwX2Nvbm4tPmluLmNvcHksIGhkcl9yZW1haW5zKTsKKwkJc2tiX2NvcHlfYml0cyhza2IsIHRjcF9jb25uLT5pbi5vZmZzZXQsCisJCQkoY2hhciopJnRjcF9jb25uLT5oZHIgKyB0Y3BfY29ubi0+aW4uaGRyX29mZnNldCwKKwkJCWNvcHlsZW4pOwogCiAJCWRlYnVnX3RjcCgiUERVIGdhdGhlciBvZmZzZXQgJWQgYnl0ZXMgJWQgaW4ub2Zmc2V0ICVkICIKLQkJICAgICAgICJpbi5jb3B5ICVkXG4iLCBjb25uLT5pbi5oZHJfb2Zmc2V0LCBjb3B5bGVuLAotCQkgICAgICAgY29ubi0+aW4ub2Zmc2V0LCBjb25uLT5pbi5jb3B5KTsKKwkJICAgICAgICJpbi5jb3B5ICVkXG4iLCB0Y3BfY29ubi0+aW4uaGRyX29mZnNldCwgY29weWxlbiwKKwkJICAgICAgIHRjcF9jb25uLT5pbi5vZmZzZXQsIHRjcF9jb25uLT5pbi5jb3B5KTsKIAotCQljb25uLT5pbi5vZmZzZXQgKz0gY29weWxlbjsKLQkJY29ubi0+aW4uY29weSAtPSBjb3B5bGVuOworCQl0Y3BfY29ubi0+aW4ub2Zmc2V0ICs9IGNvcHlsZW47CisJCXRjcF9jb25uLT5pbi5jb3B5IC09IGNvcHlsZW47CiAJCWlmIChjb3B5bGVuIDwgaGRyX3JlbWFpbnMpICB7Ci0JCQljb25uLT5pbl9wcm9ncmVzcyA9IElOX1BST0dSRVNTX0hFQURFUl9HQVRIRVI7Ci0JCQljb25uLT5pbi5oZHJfb2Zmc2V0ICs9IGNvcHlsZW47CisJCQl0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19IRUFERVJfR0FUSEVSOworCQkJdGNwX2Nvbm4tPmluLmhkcl9vZmZzZXQgKz0gY29weWxlbjsKIAkJICAgICAgICByZXR1cm4gLUVBR0FJTjsKIAkJfQotCQljb25uLT5pbi5oZHIgPSAmY29ubi0+aGRyOwotCQljb25uLT5kaXNjb250aWd1b3VzX2hkcl9jbnQrKzsKLQkgICAgICAgIGNvbm4tPmluX3Byb2dyZXNzID0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVI7CisJCXRjcF9jb25uLT5pbi5oZHIgPSAmdGNwX2Nvbm4tPmhkcjsKKwkJdGNwX2Nvbm4tPmRpc2NvbnRpZ3VvdXNfaGRyX2NudCsrOworCSAgICAgICAgdGNwX2Nvbm4tPmluX3Byb2dyZXNzID0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVI7CiAJfQogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZAotaXNjc2lfY3Rhc2tfY2xlYW51cChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKKy8qCisgKiBtdXN0IGJlIGNhbGxlZCB3aXRoIHNlc3Npb24gbG9jaworICovCitzdGF0aWMgdm9pZAorX19pc2NzaV9jdGFza19jbGVhbnVwKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKQogewotCXN0cnVjdCBzY3NpX2NtbmQgKnNjID0gY3Rhc2stPnNjOwotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzYzsKIAotCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0JaWYgKHVubGlrZWx5KCFzYykpIHsKLQkJc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOworCXNjID0gY3Rhc2stPnNjOworCWlmICh1bmxpa2VseSghc2MpKQogCQlyZXR1cm47Ci0JfQotCWlmIChzYy0+c2NfZGF0YV9kaXJlY3Rpb24gPT0gRE1BX1RPX0RFVklDRSkgewotCQlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzaywgKm47Ci0JCS8qIFdSSVRFOiBjbGVhbnVwIERhdGEtT3V0J3MgaWYgYW55ICovCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkdGFzaywgbiwgJmN0YXNrLT5kYXRhcXVldWUsIGl0ZW0pIHsKLQkJCWxpc3RfZGVsKCZkdGFzay0+aXRlbSk7Ci0JCQltZW1wb29sX2ZyZWUoZHRhc2ssIGN0YXNrLT5kYXRhcG9vbCk7Ci0JCX0KLQl9Ci0JY3Rhc2stPnhtc3RhdGUgPSBYTVNUQVRFX0lETEU7Ci0JY3Rhc2stPnIydCA9IE5VTEw7Ci0JY3Rhc2stPnNjID0gTlVMTDsKLQlfX2tmaWZvX3B1dChzZXNzaW9uLT5jbWRwb29sLnF1ZXVlLCAodm9pZCopJmN0YXNrLCBzaXplb2Yodm9pZCopKTsKLQlzcGluX3VubG9jaygmc2Vzc2lvbi0+bG9jayk7Ci19CiAKLS8qKgotICogaXNjc2lfY21kX3JzcCAtIFNDU0kgQ29tbWFuZCBSZXNwb25zZSBwcm9jZXNzaW5nCi0gKiBAY29ubjogaXNjc2kgY29ubmVjdGlvbgotICogQGN0YXNrOiBzY3NpIGNvbW1hbmQgdGFzawotICoqLwotc3RhdGljIGludAotaXNjc2lfY21kX3JzcChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKLXsKLQlpbnQgcmM7Ci0Jc3RydWN0IGlzY3NpX2NtZF9yc3AgKnJoZHIgPSAoc3RydWN0IGlzY3NpX2NtZF9yc3AgKiljb25uLT5pbi5oZHI7Ci0Jc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCXN0cnVjdCBzY3NpX2NtbmQgKnNjID0gY3Rhc2stPnNjOwotCi0JcmMgPSBpc2NzaV9jaGVja19hc3NpZ25fY21kc24oc2Vzc2lvbiwgKHN0cnVjdCBpc2NzaV9ub3Bpbiopcmhkcik7Ci0JaWYgKHJjKSB7Ci0JCXNjLT5yZXN1bHQgPSAoRElEX0VSUk9SIDw8IDE2KTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JY29ubi0+ZXhwX3N0YXRzbiA9IGJlMzJfdG9fY3B1KHJoZHItPnN0YXRzbikgKyAxOwotCi0Jc2MtPnJlc3VsdCA9IChESURfT0sgPDwgMTYpIHwgcmhkci0+Y21kX3N0YXR1czsKLQotCWlmIChyaGRyLT5yZXNwb25zZSAhPSBJU0NTSV9TVEFUVVNfQ01EX0NPTVBMRVRFRCkgewotCQlzYy0+cmVzdWx0ID0gKERJRF9FUlJPUiA8PCAxNik7Ci0JCWdvdG8gb3V0OwotCX0KLQotCWlmIChyaGRyLT5jbWRfc3RhdHVzID09IFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTiAmJiBjb25uLT5zZW5zZWxlbikgewotCQlpbnQgc2Vuc2Vjb3B5ID0gbWluKGNvbm4tPnNlbnNlbGVuLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpOwotCi0JCW1lbWNweShzYy0+c2Vuc2VfYnVmZmVyLCBjb25uLT5kYXRhICsgMiwgc2Vuc2Vjb3B5KTsKLQkJZGVidWdfc2NzaSgiY29waWVkICVkIGJ5dGVzIG9mIHNlbnNlXG4iLCBzZW5zZWNvcHkpOwotCX0KLQotCWlmIChzYy0+c2NfZGF0YV9kaXJlY3Rpb24gPT0gRE1BX1RPX0RFVklDRSkKLQkJZ290byBvdXQ7Ci0KLQlpZiAocmhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0NNRF9VTkRFUkZMT1cpIHsKLQkJaW50IHJlc19jb3VudCA9IGJlMzJfdG9fY3B1KHJoZHItPnJlc2lkdWFsX2NvdW50KTsKLQotCQlpZiAocmVzX2NvdW50ID4gMCAmJiByZXNfY291bnQgPD0gc2MtPnJlcXVlc3RfYnVmZmxlbikKLQkJCXNjLT5yZXNpZCA9IHJlc19jb3VudDsKLQkJZWxzZQotCQkJc2MtPnJlc3VsdCA9IChESURfQkFEX1RBUkdFVCA8PCAxNikgfCByaGRyLT5jbWRfc3RhdHVzOwotCX0gZWxzZSBpZiAocmhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0NNRF9CSURJX1VOREVSRkxPVykKLQkJc2MtPnJlc3VsdCA9IChESURfQkFEX1RBUkdFVCA8PCAxNikgfCByaGRyLT5jbWRfc3RhdHVzOwotCWVsc2UgaWYgKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19DTURfT1ZFUkZMT1cpCi0JCXNjLT5yZXNpZCA9IGJlMzJfdG9fY3B1KHJoZHItPnJlc2lkdWFsX2NvdW50KTsKLQotb3V0OgotCWRlYnVnX3Njc2koImRvbmUgW3NjICVseCByZXMgJWQgaXR0IDB4JXhdXG4iLAotCQkgICAobG9uZylzYywgc2MtPnJlc3VsdCwgY3Rhc2stPml0dCk7Ci0JY29ubi0+c2NzaXJzcF9wZHVzX2NudCsrOwotCWlzY3NpX2N0YXNrX2NsZWFudXAoY29ubiwgY3Rhc2spOwotCXNjLT5zY3NpX2RvbmUoc2MpOwotCXJldHVybiByYzsKKwl0Y3BfY3Rhc2stPnhtc3RhdGUgPSBYTVNUQVRFX0lETEU7CisJdGNwX2N0YXNrLT5yMnQgPSBOVUxMOwogfQogCiAvKioKQEAgLTMyNCw3ICsyMDcsOSBAQAogaXNjc2lfZGF0YV9yc3Aoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7CiAJaW50IHJjOwotCXN0cnVjdCBpc2NzaV9kYXRhX3JzcCAqcmhkciA9IChzdHJ1Y3QgaXNjc2lfZGF0YV9yc3AgKiljb25uLT5pbi5oZHI7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX3RjcF9jbWRfdGFzayAqdGNwX2N0YXNrID0gY3Rhc2stPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX2RhdGFfcnNwICpyaGRyID0gKHN0cnVjdCBpc2NzaV9kYXRhX3JzcCAqKXRjcF9jb25uLT5pbi5oZHI7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwogCWludCBkYXRhc24gPSBiZTMyX3RvX2NwdShyaGRyLT5kYXRhc24pOwogCkBAIC0zMzQsOSArMjE5LDkgQEAKIAkvKgogCSAqIHNldHVwIERhdGEtSW4gYnl0ZSBjb3VudGVyIChnZXRzIGRlY3JlbWVudGVkLi4pCiAJICovCi0JY3Rhc2stPmRhdGFfY291bnQgPSBjb25uLT5pbi5kYXRhbGVuOworCWN0YXNrLT5kYXRhX2NvdW50ID0gdGNwX2Nvbm4tPmluLmRhdGFsZW47CiAKLQlpZiAoY29ubi0+aW4uZGF0YWxlbiA9PSAwKQorCWlmICh0Y3BfY29ubi0+aW4uZGF0YWxlbiA9PSAwKQogCQlyZXR1cm4gMDsKIAogCWlmIChjdGFzay0+ZGF0YXNuICE9IGRhdGFzbikKQEAgLTM0NCw4ICsyMjksOCBAQAogCiAJY3Rhc2stPmRhdGFzbisrOwogCi0JY3Rhc2stPmRhdGFfb2Zmc2V0ID0gYmUzMl90b19jcHUocmhkci0+b2Zmc2V0KTsKLQlpZiAoY3Rhc2stPmRhdGFfb2Zmc2V0ICsgY29ubi0+aW4uZGF0YWxlbiA+IGN0YXNrLT50b3RhbF9sZW5ndGgpCisJdGNwX2N0YXNrLT5kYXRhX29mZnNldCA9IGJlMzJfdG9fY3B1KHJoZHItPm9mZnNldCk7CisJaWYgKHRjcF9jdGFzay0+ZGF0YV9vZmZzZXQgKyB0Y3BfY29ubi0+aW4uZGF0YWxlbiA+IGN0YXNrLT50b3RhbF9sZW5ndGgpCiAJCXJldHVybiBJU0NTSV9FUlJfREFUQV9PRkZTRVQ7CiAKIAlpZiAocmhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0RBVEFfU1RBVFVTKSB7CkBAIC0zOTAsMTkgKzI3NSwxNyBAQAogCQkJc3RydWN0IGlzY3NpX3IydF9pbmZvICpyMnQpCiB7CiAJc3RydWN0IGlzY3NpX2RhdGEgKmhkcjsKLQlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzazsKIAlzdHJ1Y3Qgc2NzaV9jbW5kICpzYyA9IGN0YXNrLT5zYzsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKIAotCWR0YXNrID0gbWVtcG9vbF9hbGxvYyhjdGFzay0+ZGF0YXBvb2wsIEdGUF9BVE9NSUMpOwotCUJVR19PTighZHRhc2spOwotCWhkciA9ICZkdGFzay0+aGRyOworCWhkciA9ICZyMnQtPmR0YXNrLmhkcjsKIAltZW1zZXQoaGRyLCAwLCBzaXplb2Yoc3RydWN0IGlzY3NpX2RhdGEpKTsKIAloZHItPnR0dCA9IHIydC0+dHR0OwogCWhkci0+ZGF0YXNuID0gY3B1X3RvX2JlMzIocjJ0LT5zb2xpY2l0X2RhdGFzbik7CiAJcjJ0LT5zb2xpY2l0X2RhdGFzbisrOwogCWhkci0+b3Bjb2RlID0gSVNDU0lfT1BfU0NTSV9EQVRBX09VVDsKLQltZW1jcHkoaGRyLT5sdW4sIGN0YXNrLT5oZHIubHVuLCBzaXplb2YoaGRyLT5sdW4pKTsKLQloZHItPml0dCA9IGN0YXNrLT5oZHIuaXR0OworCW1lbWNweShoZHItPmx1biwgY3Rhc2stPmhkci0+bHVuLCBzaXplb2YoaGRyLT5sdW4pKTsKKwloZHItPml0dCA9IGN0YXNrLT5oZHItPml0dDsKIAloZHItPmV4cF9zdGF0c24gPSByMnQtPmV4cF9zdGF0c247CiAJaGRyLT5vZmZzZXQgPSBjcHVfdG9fYmUzMihyMnQtPmRhdGFfb2Zmc2V0KTsKIAlpZiAocjJ0LT5kYXRhX2xlbmd0aCA+IGNvbm4tPm1heF94bWl0X2RsZW5ndGgpIHsKQEAgLTQxOCwxMSArMzAxLDkgQEAKIAogCXIydC0+c2VudCA9IDA7CiAKLQlpc2NzaV9idWZfaW5pdF92aXJ0KCZyMnQtPmhlYWRidWYsIChjaGFyKiloZHIsCisJaXNjc2lfYnVmX2luaXRfaW92KCZyMnQtPmhlYWRidWYsIChjaGFyKiloZHIsCiAJCQkgICBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcikpOwogCi0JcjJ0LT5kdGFzayA9IGR0YXNrOwotCiAJaWYgKHNjLT51c2Vfc2cpIHsKIAkJaW50IGksIHNnX2NvdW50ID0gMDsKIAkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IHNjLT5yZXF1ZXN0X2J1ZmZlcjsKQEAgLTQ1MSwxMSArMzMyLDkgQEAKIAkJfQogCQlCVUdfT04ocjJ0LT5zZyA9PSBOVUxMKTsKIAl9IGVsc2UKLQkJaXNjc2lfYnVmX2luaXRfaW92KCZjdGFzay0+c2VuZGJ1ZiwKKwkJaXNjc2lfYnVmX2luaXRfaW92KCZ0Y3BfY3Rhc2stPnNlbmRidWYsCiAJCQkgICAgKGNoYXIqKXNjLT5yZXF1ZXN0X2J1ZmZlciArIHIydC0+ZGF0YV9vZmZzZXQsCiAJCQkgICAgcjJ0LT5kYXRhX2NvdW50KTsKLQotCWxpc3RfYWRkKCZkdGFzay0+aXRlbSwgJmN0YXNrLT5kYXRhcXVldWUpOwogfQogCiAvKioKQEAgLTQ2OCwxNyArMzQ3LDE2IEBACiB7CiAJc3RydWN0IGlzY3NpX3IydF9pbmZvICpyMnQ7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCXN0cnVjdCBpc2NzaV9yMnRfcnNwICpyaGRyID0gKHN0cnVjdCBpc2NzaV9yMnRfcnNwICopY29ubi0+aW4uaGRyOworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV9yMnRfcnNwICpyaGRyID0gKHN0cnVjdCBpc2NzaV9yMnRfcnNwICopdGNwX2Nvbm4tPmluLmhkcjsKIAlpbnQgcjJ0c24gPSBiZTMyX3RvX2NwdShyaGRyLT5yMnRzbik7CiAJaW50IHJjOwogCi0JaWYgKGNvbm4tPmluLmFoc2xlbikKLQkJcmV0dXJuIElTQ1NJX0VSUl9BSFNMRU47Ci0KLQlpZiAoY29ubi0+aW4uZGF0YWxlbikKKwlpZiAodGNwX2Nvbm4tPmluLmRhdGFsZW4pCiAJCXJldHVybiBJU0NTSV9FUlJfREFUQUxFTjsKIAotCWlmIChjdGFzay0+ZXhwX3IydHNuICYmIGN0YXNrLT5leHBfcjJ0c24gIT0gcjJ0c24pCisJaWYgKHRjcF9jdGFzay0+ZXhwX3IydHNuICYmIHRjcF9jdGFzay0+ZXhwX3IydHNuICE9IHIydHNuKQogCQlyZXR1cm4gSVNDU0lfRVJSX1IyVFNOOwogCiAJcmMgPSBpc2NzaV9jaGVja19hc3NpZ25fY21kc24oc2Vzc2lvbiwgKHN0cnVjdCBpc2NzaV9ub3Bpbiopcmhkcik7CkBAIC00OTYsNyArMzc0LDcgQEAKIAkJc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOwogCQlyZXR1cm4gMDsKIAl9Ci0JcmMgPSBfX2tmaWZvX2dldChjdGFzay0+cjJ0cG9vbC5xdWV1ZSwgKHZvaWQqKSZyMnQsIHNpemVvZih2b2lkKikpOworCXJjID0gX19rZmlmb19nZXQodGNwX2N0YXNrLT5yMnRwb29sLnF1ZXVlLCAodm9pZCopJnIydCwgc2l6ZW9mKHZvaWQqKSk7CiAJQlVHX09OKCFyYyk7CiAKIAlyMnQtPmV4cF9zdGF0c24gPSByaGRyLT5zdGF0c247CkBAIC01MTgsMTAgKzM5NiwxMCBAQAogCiAJaXNjc2lfc29saWNpdF9kYXRhX2luaXQoY29ubiwgY3Rhc2ssIHIydCk7CiAKLQljdGFzay0+ZXhwX3IydHNuID0gcjJ0c24gKyAxOwotCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfU09MX0hEUjsKLQlfX2tmaWZvX3B1dChjdGFzay0+cjJ0cXVldWUsICh2b2lkKikmcjJ0LCBzaXplb2Yodm9pZCopKTsKLQlfX2tmaWZvX3B1dChjb25uLT53cml0ZXF1ZXVlLCAodm9pZCopJmN0YXNrLCBzaXplb2Yodm9pZCopKTsKKwl0Y3BfY3Rhc2stPmV4cF9yMnRzbiA9IHIydHNuICsgMTsKKwl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfSERSOworCV9fa2ZpZm9fcHV0KHRjcF9jdGFzay0+cjJ0cXVldWUsICh2b2lkKikmcjJ0LCBzaXplb2Yodm9pZCopKTsKKwlfX2tmaWZvX3B1dChjb25uLT54bWl0cXVldWUsICh2b2lkKikmY3Rhc2ssIHNpemVvZih2b2lkKikpOwogCiAJc2NzaV9xdWV1ZV93b3JrKHNlc3Npb24tPmhvc3QsICZjb25uLT54bWl0d29yayk7CiAJY29ubi0+cjJ0X3BkdXNfY250Kys7CkBAIC01MzEsMjU4ICs0MDksMTM2IEBACiB9CiAKIHN0YXRpYyBpbnQKLWlzY3NpX2hkcl9yZWN2KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQoraXNjc2lfdGNwX2hkcl9yZWN2KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogewotCWludCByYyA9IDA7CisJaW50IHJjID0gMCwgb3Bjb2RlLCBhaHNsZW47CiAJc3RydWN0IGlzY3NpX2hkciAqaGRyOwotCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2s7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCXVpbnQzMl90IGNkZ3N0LCByZGdzdCA9IDA7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CisJdWludDMyX3QgY2Rnc3QsIHJkZ3N0ID0gMCwgaXR0OwogCi0JaGRyID0gY29ubi0+aW4uaGRyOworCWhkciA9IHRjcF9jb25uLT5pbi5oZHI7CiAKIAkvKiB2ZXJpZnkgUERVIGxlbmd0aCAqLwotCWNvbm4tPmluLmRhdGFsZW4gPSBudG9oMjQoaGRyLT5kbGVuZ3RoKTsKLQlpZiAoY29ubi0+aW4uZGF0YWxlbiA+IGNvbm4tPm1heF9yZWN2X2RsZW5ndGgpIHsKKwl0Y3BfY29ubi0+aW4uZGF0YWxlbiA9IG50b2gyNChoZHItPmRsZW5ndGgpOworCWlmICh0Y3BfY29ubi0+aW4uZGF0YWxlbiA+IGNvbm4tPm1heF9yZWN2X2RsZW5ndGgpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaV90Y3A6IGRhdGFsZW4gJWQgPiAlZFxuIiwKLQkJICAgICAgIGNvbm4tPmluLmRhdGFsZW4sIGNvbm4tPm1heF9yZWN2X2RsZW5ndGgpOworCQkgICAgICAgdGNwX2Nvbm4tPmluLmRhdGFsZW4sIGNvbm4tPm1heF9yZWN2X2RsZW5ndGgpOwogCQlyZXR1cm4gSVNDU0lfRVJSX0RBVEFMRU47CiAJfQotCWNvbm4tPmRhdGFfY29waWVkID0gMDsKKwl0Y3BfY29ubi0+ZGF0YV9jb3BpZWQgPSAwOwogCiAJLyogcmVhZCBBSFMgKi8KLQljb25uLT5pbi5haHNsZW4gPSBoZHItPmhsZW5ndGggKiA0OwotCWNvbm4tPmluLm9mZnNldCArPSBjb25uLT5pbi5haHNsZW47Ci0JY29ubi0+aW4uY29weSAtPSBjb25uLT5pbi5haHNsZW47Ci0JaWYgKGNvbm4tPmluLmNvcHkgPCAwKSB7CisJYWhzbGVuID0gaGRyLT5obGVuZ3RoIDw8IDI7CisJdGNwX2Nvbm4tPmluLm9mZnNldCArPSBhaHNsZW47CisJdGNwX2Nvbm4tPmluLmNvcHkgLT0gYWhzbGVuOworCWlmICh0Y3BfY29ubi0+aW4uY29weSA8IDApIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaV90Y3A6IGNhbid0IGhhbmRsZSBBSFMgd2l0aCBsZW5ndGggIgotCQkgICAgICAgIiVkIGJ5dGVzXG4iLCBjb25uLT5pbi5haHNsZW4pOworCQkgICAgICAgIiVkIGJ5dGVzXG4iLCBhaHNsZW4pOwogCQlyZXR1cm4gSVNDU0lfRVJSX0FIU0xFTjsKIAl9CiAKIAkvKiBjYWxjdWxhdGUgcmVhZCBwYWRkaW5nICovCi0JY29ubi0+aW4ucGFkZGluZyA9IGNvbm4tPmluLmRhdGFsZW4gJiAoSVNDU0lfUEFEX0xFTi0xKTsKLQlpZiAoY29ubi0+aW4ucGFkZGluZykgewotCQljb25uLT5pbi5wYWRkaW5nID0gSVNDU0lfUEFEX0xFTiAtIGNvbm4tPmluLnBhZGRpbmc7Ci0JCWRlYnVnX3Njc2koInJlYWQgcGFkZGluZyAlZCBieXRlc1xuIiwgY29ubi0+aW4ucGFkZGluZyk7CisJdGNwX2Nvbm4tPmluLnBhZGRpbmcgPSB0Y3BfY29ubi0+aW4uZGF0YWxlbiAmIChJU0NTSV9QQURfTEVOLTEpOworCWlmICh0Y3BfY29ubi0+aW4ucGFkZGluZykgeworCQl0Y3BfY29ubi0+aW4ucGFkZGluZyA9IElTQ1NJX1BBRF9MRU4gLSB0Y3BfY29ubi0+aW4ucGFkZGluZzsKKwkJZGVidWdfc2NzaSgicmVhZCBwYWRkaW5nICVkIGJ5dGVzXG4iLCB0Y3BfY29ubi0+aW4ucGFkZGluZyk7CiAJfQogCiAJaWYgKGNvbm4tPmhkcmRnc3RfZW4pIHsKIAkJc3RydWN0IHNjYXR0ZXJsaXN0IHNnOwogCiAJCXNnX2luaXRfb25lKCZzZywgKHU4ICopaGRyLAotCQkJICAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSArIGNvbm4tPmluLmFoc2xlbik7Ci0JCWNyeXB0b19kaWdlc3RfZGlnZXN0KGNvbm4tPnJ4X3RmbSwgJnNnLCAxLCAodTggKikmY2Rnc3QpOworCQkJICAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSArIGFoc2xlbik7CisJCWNyeXB0b19kaWdlc3RfZGlnZXN0KHRjcF9jb25uLT5yeF90Zm0sICZzZywgMSwgKHU4ICopJmNkZ3N0KTsKIAkJcmRnc3QgPSAqKHVpbnQzMl90KikoKGNoYXIqKWhkciArIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSArCi0JCQkJICAgICBjb25uLT5pbi5haHNsZW4pOworCQkJCSAgICAgYWhzbGVuKTsKIAkJaWYgKGNkZ3N0ICE9IHJkZ3N0KSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogaXR0ICV4OiBoZHJkZ3N0IGVycm9yICIKLQkJCSAgICAgICAicmVjdiAweCV4IGNhbGMgMHgleFxuIiwgY29ubi0+aW4uaXR0LCByZGdzdCwKLQkJCSAgICAgICBjZGdzdCk7CisJCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogaGRyZGdzdCBlcnJvciAiCisJCQkgICAgICAgInJlY3YgMHgleCBjYWxjIDB4JXhcbiIsIHJkZ3N0LCBjZGdzdCk7CiAJCQlyZXR1cm4gSVNDU0lfRVJSX0hEUl9ER1NUOwogCQl9CiAJfQogCi0JLyogc2F2ZSBvcGNvZGUgZm9yIGxhdGVyICovCi0JY29ubi0+aW4ub3Bjb2RlID0gaGRyLT5vcGNvZGUgJiBJU0NTSV9PUENPREVfTUFTSzsKLQorCW9wY29kZSA9IGhkci0+b3Bjb2RlICYgSVNDU0lfT1BDT0RFX01BU0s7CiAJLyogdmVyaWZ5IGl0dCAoaXR0IGVuY29kaW5nOiBhZ2UrY2lkK2l0dCkgKi8KLQlpZiAoaGRyLT5pdHQgIT0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKSkgewotCQlpZiAoKGhkci0+aXR0ICYgQUdFX01BU0spICE9Ci0JCQkJKHNlc3Npb24tPmFnZSA8PCBBR0VfU0hJRlQpKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogcmVjZWl2ZWQgaXR0ICV4IGV4cGVjdGVkICIKLQkJCQkic2Vzc2lvbiBhZ2UgKCV4KVxuIiwgaGRyLT5pdHQsCi0JCQkJc2Vzc2lvbi0+YWdlICYgQUdFX01BU0spOwotCQkJcmV0dXJuIElTQ1NJX0VSUl9CQURfSVRUOwotCQl9Ci0KLQkJaWYgKChoZHItPml0dCAmIENJRF9NQVNLKSAhPSAoY29ubi0+aWQgPDwgQ0lEX1NISUZUKSkgewotCQkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaV90Y3A6IHJlY2VpdmVkIGl0dCAleCwgZXhwZWN0ZWQgIgotCQkJCSJDSUQgKCV4KVxuIiwgaGRyLT5pdHQsIGNvbm4tPmlkKTsKLQkJCXJldHVybiBJU0NTSV9FUlJfQkFEX0lUVDsKLQkJfQotCQljb25uLT5pbi5pdHQgPSBoZHItPml0dCAmIElUVF9NQVNLOwotCX0gZWxzZQotCQljb25uLT5pbi5pdHQgPSBoZHItPml0dDsKKwlyYyA9IGlzY3NpX3ZlcmlmeV9pdHQoY29ubiwgaGRyLCAmaXR0KTsKKwlpZiAocmMgPT0gSVNDU0lfRVJSX05PX1NDU0lfQ01EKSB7CisJCXRjcF9jb25uLT5pbi5kYXRhbGVuID0gMDsgLyogZm9yY2UgZHJvcCAqLworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKHJjKQorCQlyZXR1cm4gcmM7CiAKIAlkZWJ1Z190Y3AoIm9wY29kZSAweCV4IG9mZnNldCAlZCBjb3B5ICVkIGFoc2xlbiAlZCBkYXRhbGVuICVkXG4iLAotCQkgIGhkci0+b3Bjb2RlLCBjb25uLT5pbi5vZmZzZXQsIGNvbm4tPmluLmNvcHksCi0JCSAgY29ubi0+aW4uYWhzbGVuLCBjb25uLT5pbi5kYXRhbGVuKTsKKwkJICBvcGNvZGUsIHRjcF9jb25uLT5pbi5vZmZzZXQsIHRjcF9jb25uLT5pbi5jb3B5LAorCQkgIGFoc2xlbiwgdGNwX2Nvbm4tPmluLmRhdGFsZW4pOwogCi0JaWYgKGNvbm4tPmluLml0dCA8IHNlc3Npb24tPmNtZHNfbWF4KSB7Ci0JCWN0YXNrID0gKHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqKXNlc3Npb24tPmNtZHNbY29ubi0+aW4uaXR0XTsKKwlzd2l0Y2gob3Bjb2RlKSB7CisJY2FzZSBJU0NTSV9PUF9TQ1NJX0RBVEFfSU46CisJCXRjcF9jb25uLT5pbi5jdGFzayA9IHNlc3Npb24tPmNtZHNbaXR0XTsKKwkJcmMgPSBpc2NzaV9kYXRhX3JzcChjb25uLCB0Y3BfY29ubi0+aW4uY3Rhc2spOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIElTQ1NJX09QX1NDU0lfQ01EX1JTUDoKKwkJdGNwX2Nvbm4tPmluLmN0YXNrID0gc2Vzc2lvbi0+Y21kc1tpdHRdOworCQlpZiAodGNwX2Nvbm4tPmluLmRhdGFsZW4pCisJCQlnb3RvIGNvcHlfaGRyOwogCi0JCWlmICghY3Rhc2stPnNjKSB7Ci0JCQlwcmludGsoS0VSTl9JTkZPICJpc2NzaV90Y3A6IGRyb3BwaW5nIGN0YXNrIHdpdGggIgotCQkJICAgICAgICJpdHQgMHgleFxuIiwgY3Rhc2stPml0dCk7Ci0JCQljb25uLT5pbi5kYXRhbGVuID0gMDsgLyogZm9yY2UgZHJvcCAqLwotCQkJcmV0dXJuIDA7Ci0JCX0KLQotCQlpZiAoY3Rhc2stPnNjLT5TQ3AucGhhc2UgIT0gc2Vzc2lvbi0+YWdlKSB7Ci0JCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogY3Rhc2sncyBzZXNzaW9uIGFnZSAlZCwgIgotCQkJCSJleHBlY3RlZCAlZFxuIiwgY3Rhc2stPnNjLT5TQ3AucGhhc2UsCi0JCQkJc2Vzc2lvbi0+YWdlKTsKLQkJCXJldHVybiBJU0NTSV9FUlJfU0VTU0lPTl9GQUlMRUQ7Ci0JCX0KLQotCQljb25uLT5pbi5jdGFzayA9IGN0YXNrOwotCi0JCWRlYnVnX3Njc2koInJzcCBbb3AgMHgleCBjaWQgJWQgc2MgJWx4IGl0dCAweCV4IGxlbiAlZF1cbiIsCi0JCQkgICBoZHItPm9wY29kZSwgY29ubi0+aWQsIChsb25nKWN0YXNrLT5zYywKLQkJCSAgIGN0YXNrLT5pdHQsIGNvbm4tPmluLmRhdGFsZW4pOwotCi0JCXN3aXRjaChjb25uLT5pbi5vcGNvZGUpIHsKLQkJY2FzZSBJU0NTSV9PUF9TQ1NJX0NNRF9SU1A6Ci0JCQlCVUdfT04oKHZvaWQqKWN0YXNrICE9IGN0YXNrLT5zYy0+U0NwLnB0cik7Ci0JCQlpZiAoIWNvbm4tPmluLmRhdGFsZW4pCi0JCQkJcmMgPSBpc2NzaV9jbWRfcnNwKGNvbm4sIGN0YXNrKTsKLQkJCWVsc2UKLQkJCQkvKgotCQkJCSAqIGdvdCBzZW5zZSBvciByZXNwb25zZSBkYXRhOyBjb3B5aW5nIFBEVQotCQkJCSAqIEhlYWRlciB0byB0aGUgY29ubmVjdGlvbidzIGhlYWRlcgotCQkJCSAqIHBsYWNlaG9sZGVyCi0JCQkJICovCi0JCQkJbWVtY3B5KCZjb25uLT5oZHIsIGhkciwKLQkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpKTsKLQkJCWJyZWFrOwotCQljYXNlIElTQ1NJX09QX1NDU0lfREFUQV9JTjoKLQkJCUJVR19PTigodm9pZCopY3Rhc2sgIT0gY3Rhc2stPnNjLT5TQ3AucHRyKTsKLQkJCS8qIHNhdmUgZmxhZ3MgZm9yIG5vbi1leGNlcHRpb25hbCBzdGF0dXMgKi8KLQkJCWNvbm4tPmluLmZsYWdzID0gaGRyLT5mbGFnczsKLQkJCS8qIHNhdmUgY21kX3N0YXR1cyBmb3Igc2Vuc2UgZGF0YSAqLwotCQkJY29ubi0+aW4uY21kX3N0YXR1cyA9Ci0JCQkJKChzdHJ1Y3QgaXNjc2lfZGF0YV9yc3AqKWhkciktPmNtZF9zdGF0dXM7Ci0JCQlyYyA9IGlzY3NpX2RhdGFfcnNwKGNvbm4sIGN0YXNrKTsKLQkJCWJyZWFrOwotCQljYXNlIElTQ1NJX09QX1IyVDoKLQkJCUJVR19PTigodm9pZCopY3Rhc2sgIT0gY3Rhc2stPnNjLT5TQ3AucHRyKTsKLQkJCWlmIChjdGFzay0+c2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UpCi0JCQkJcmMgPSBpc2NzaV9yMnRfcnNwKGNvbm4sIGN0YXNrKTsKLQkJCWVsc2UKLQkJCQlyYyA9IElTQ1NJX0VSUl9QUk9UTzsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcmMgPSBJU0NTSV9FUlJfQkFEX09QQ09ERTsKLQkJCWJyZWFrOwotCQl9Ci0JfSBlbHNlIGlmIChjb25uLT5pbi5pdHQgPj0gSVNDU0lfTUdNVF9JVFRfT0ZGU0VUICYmCi0JCSAgIGNvbm4tPmluLml0dCA8IElTQ1NJX01HTVRfSVRUX09GRlNFVCArCi0JCQkJCXNlc3Npb24tPm1nbXRwb29sX21heCkgewotCQlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzayA9IChzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICopCi0JCQkJCXNlc3Npb24tPm1nbXRfY21kc1tjb25uLT5pbi5pdHQgLQotCQkJCQkJSVNDU0lfTUdNVF9JVFRfT0ZGU0VUXTsKLQotCQlkZWJ1Z19zY3NpKCJpbW1yc3AgW29wIDB4JXggY2lkICVkIGl0dCAweCV4IGxlbiAlZF1cbiIsCi0JCQkgICBjb25uLT5pbi5vcGNvZGUsIGNvbm4tPmlkLCBtdGFzay0+aXR0LAotCQkJICAgY29ubi0+aW4uZGF0YWxlbik7Ci0KLQkJc3dpdGNoKGNvbm4tPmluLm9wY29kZSkgewotCQljYXNlIElTQ1NJX09QX0xPR0lOX1JTUDoKLQkJY2FzZSBJU0NTSV9PUF9URVhUX1JTUDoKLQkJY2FzZSBJU0NTSV9PUF9MT0dPVVRfUlNQOgotCQkJcmMgPSBpc2NzaV9jaGVja19hc3NpZ25fY21kc24oc2Vzc2lvbiwKLQkJCQkJCSAoc3RydWN0IGlzY3NpX25vcGluKiloZHIpOwotCQkJaWYgKHJjKQotCQkJCWJyZWFrOwotCi0JCQlpZiAoIWNvbm4tPmluLmRhdGFsZW4pIHsKLQkJCQlyYyA9IGlzY3NpX3JlY3ZfcGR1KGNvbm4tPmNsc19jb25uLCBoZHIsCi0JCQkJCQkgICAgTlVMTCwgMCk7Ci0JCQkJaWYgKGNvbm4tPmxvZ2luX210YXNrICE9IG10YXNrKSB7Ci0JCQkJCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0JCQkJCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAotCQkJCQkgICAgKHZvaWQqKSZtdGFzaywgc2l6ZW9mKHZvaWQqKSk7Ci0JCQkJCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKLQkJCQl9Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSBJU0NTSV9PUF9TQ1NJX1RNRlVOQ19SU1A6Ci0JCQlyYyA9IGlzY3NpX2NoZWNrX2Fzc2lnbl9jbWRzbihzZXNzaW9uLAotCQkJCQkJIChzdHJ1Y3QgaXNjc2lfbm9waW4qKWhkcik7Ci0JCQlpZiAocmMpCi0JCQkJYnJlYWs7Ci0KLQkJCWlmIChjb25uLT5pbi5kYXRhbGVuIHx8IGNvbm4tPmluLmFoc2xlbikgewotCQkJCXJjID0gSVNDU0lfRVJSX1BST1RPOwotCQkJCWJyZWFrOwotCQkJfQotCQkJY29ubi0+dG1mcnNwX3BkdXNfY250Kys7Ci0JCQlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOwotCQkJaWYgKGNvbm4tPnRtYWJvcnRfc3RhdGUgPT0gVE1BQk9SVF9JTklUSUFMKSB7Ci0JCQkJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsCi0JCQkJCQkodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKTsKLQkJCQljb25uLT50bWFib3J0X3N0YXRlID0KLQkJCQkJKChzdHJ1Y3QgaXNjc2lfdG1fcnNwICopaGRyKS0+Ci0JCQkJCXJlc3BvbnNlID09IElTQ1NJX1RNRl9SU1BfQ09NUExFVEUgPwotCQkJCQkJVE1BQk9SVF9TVUNDRVNTOlRNQUJPUlRfRkFJTEVEOwotCQkJCS8qIHVuYmxvY2sgZWhfYWJvcnQoKSAqLwotCQkJCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7Ci0JCQl9Ci0JCQlzcGluX3VubG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0JCQlicmVhazsKLQkJY2FzZSBJU0NTSV9PUF9OT09QX0lOOgotCQkJaWYgKGhkci0+dHR0ICE9IElTQ1NJX1JFU0VSVkVEX1RBRykgewotCQkJCXJjID0gSVNDU0lfRVJSX1BST1RPOwotCQkJCWJyZWFrOwotCQkJfQotCQkJcmMgPSBpc2NzaV9jaGVja19hc3NpZ25fY21kc24oc2Vzc2lvbiwKLQkJCQkJCShzdHJ1Y3QgaXNjc2lfbm9waW4qKWhkcik7Ci0JCQlpZiAocmMpCi0JCQkJYnJlYWs7Ci0JCQljb25uLT5leHBfc3RhdHNuID0gYmUzMl90b19jcHUoaGRyLT5zdGF0c24pICsgMTsKLQotCQkJaWYgKCFjb25uLT5pbi5kYXRhbGVuKSB7Ci0JCQkJc3RydWN0IGlzY3NpX21nbXRfdGFzayAqbXRhc2s7Ci0KLQkJCQlyYyA9IGlzY3NpX3JlY3ZfcGR1KGNvbm4tPmNsc19jb25uLCBoZHIsCi0JCQkJCQkgICAgTlVMTCwgMCk7Ci0JCQkJbXRhc2sgPSAoc3RydWN0IGlzY3NpX21nbXRfdGFzayAqKQotCQkJCQlzZXNzaW9uLT5tZ210X2NtZHNbY29ubi0+aW4uaXR0IC0KLQkJCQkJCQlJU0NTSV9NR01UX0lUVF9PRkZTRVRdOwotCQkJCWlmIChjb25uLT5sb2dpbl9tdGFzayAhPSBtdGFzaykgewotCQkJCQlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOwotCQkJCQlfX2tmaWZvX3B1dChzZXNzaW9uLT5tZ210cG9vbC5xdWV1ZSwKLQkJCQkJCSAgKHZvaWQqKSZtdGFzaywgc2l6ZW9mKHZvaWQqKSk7Ci0JCQkJCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKLQkJCQl9Ci0JCQl9Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCXJjID0gSVNDU0lfRVJSX0JBRF9PUENPREU7Ci0JCQlicmVhazsKLQkJfQotCX0gZWxzZSBpZiAoY29ubi0+aW4uaXR0ID09IElTQ1NJX1JFU0VSVkVEX1RBRykgewotCQlzd2l0Y2goY29ubi0+aW4ub3Bjb2RlKSB7Ci0JCWNhc2UgSVNDU0lfT1BfTk9PUF9JTjoKLQkJCWlmICghY29ubi0+aW4uZGF0YWxlbikgewotCQkJCXJjID0gaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHNlc3Npb24sCi0JCQkJCQkgKHN0cnVjdCBpc2NzaV9ub3BpbiopaGRyKTsKLQkJCQlpZiAoIXJjICYmIGhkci0+dHR0ICE9IElTQ1NJX1JFU0VSVkVEX1RBRykKLQkJCQkJcmMgPSBpc2NzaV9yZWN2X3BkdShjb25uLT5jbHNfY29ubiwKLQkJCQkJCQkgICAgaGRyLCBOVUxMLCAwKTsKLQkJCX0gZWxzZQotCQkJCXJjID0gSVNDU0lfRVJSX1BST1RPOwotCQkJYnJlYWs7Ci0JCWNhc2UgSVNDU0lfT1BfUkVKRUNUOgotCQkJLyogd2UgbmVlZCBzdGggbGlrZSBpc2NzaV9yZWplY3RfcnNwKCkqLwotCQljYXNlIElTQ1NJX09QX0FTWU5DX0VWRU5UOgotCQkJLyogd2UgbmVlZCBzdGggbGlrZSBpc2NzaV9hc3luY19ldmVudF9yc3AoKSAqLwotCQkJcmMgPSBJU0NTSV9FUlJfQkFEX09QQ09ERTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJcmMgPSBJU0NTSV9FUlJfQkFEX09QQ09ERTsKLQkJCWJyZWFrOwotCQl9Ci0JfSBlbHNlCi0JCXJjID0gSVNDU0lfRVJSX0JBRF9JVFQ7CisJCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7CisJCV9faXNjc2lfY3Rhc2tfY2xlYW51cChjb25uLCB0Y3BfY29ubi0+aW4uY3Rhc2spOworCQlyYyA9IF9faXNjc2lfY29tcGxldGVfcGR1KGNvbm4sIGhkciwgTlVMTCwgMCk7CisJCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKKwkJYnJlYWs7CisJY2FzZSBJU0NTSV9PUF9SMlQ6CisJCXRjcF9jb25uLT5pbi5jdGFzayA9IHNlc3Npb24tPmNtZHNbaXR0XTsKKwkJaWYgKGFoc2xlbikKKwkJCXJjID0gSVNDU0lfRVJSX0FIU0xFTjsKKwkJZWxzZSBpZiAodGNwX2Nvbm4tPmluLmN0YXNrLT5zYy0+c2NfZGF0YV9kaXJlY3Rpb24gPT0KKwkJCQkJCQkJRE1BX1RPX0RFVklDRSkKKwkJCXJjID0gaXNjc2lfcjJ0X3JzcChjb25uLCB0Y3BfY29ubi0+aW4uY3Rhc2spOworCQllbHNlCisJCQlyYyA9IElTQ1NJX0VSUl9QUk9UTzsKKwkJYnJlYWs7CisJY2FzZSBJU0NTSV9PUF9MT0dJTl9SU1A6CisJY2FzZSBJU0NTSV9PUF9URVhUX1JTUDoKKwljYXNlIElTQ1NJX09QX0xPR09VVF9SU1A6CisJY2FzZSBJU0NTSV9PUF9OT09QX0lOOgorCWNhc2UgSVNDU0lfT1BfUkVKRUNUOgorCWNhc2UgSVNDU0lfT1BfQVNZTkNfRVZFTlQ6CisJCWlmICh0Y3BfY29ubi0+aW4uZGF0YWxlbikKKwkJCWdvdG8gY29weV9oZHI7CisJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBJU0NTSV9PUF9TQ1NJX1RNRlVOQ19SU1A6CisJCXJjID0gaXNjc2lfY29tcGxldGVfcGR1KGNvbm4sIGhkciwgTlVMTCwgMCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJjID0gSVNDU0lfRVJSX0JBRF9PUENPREU7CisJCWJyZWFrOworCX0KIAogCXJldHVybiByYzsKKworY29weV9oZHI6CisJLyoKKwkgKiBpZiB3ZSBkaWQgemVybyBjb3B5IGZvciB0aGUgaGVhZGVyIGJ1dCB3ZSB3aWxsIG5lZWQgbXVsdGlwbGUKKwkgKiBza2JzIHRvIGNvbXBsZXRlIHRoZSBjb21tYW5kIHRoZW4gd2UgaGF2ZSB0byBjb3B5IHRoZSBoZWFkZXIKKwkgKiBmb3IgbGF0ZXIgdXNlCisJICovCisJaWYgKHRjcF9jb25uLT5pbi56ZXJvX2NvcHlfaGRyICYmIHRjcF9jb25uLT5pbi5jb3B5IDwKKwkgICAodGNwX2Nvbm4tPmluLmRhdGFsZW4gKyB0Y3BfY29ubi0+aW4ucGFkZGluZyArCisJICAgIChjb25uLT5kYXRhZGdzdF9lbiA/IDQgOiAwKSkpIHsKKwkJZGVidWdfdGNwKCJDb3B5aW5nIGhlYWRlciBmb3IgbGF0ZXIgdXNlLiBpbi5jb3B5ICVkIGluLmRhdGFsZW4iCisJCQkgICIgJWRcbiIsIHRjcF9jb25uLT5pbi5jb3B5LCB0Y3BfY29ubi0+aW4uZGF0YWxlbik7CisJCW1lbWNweSgmdGNwX2Nvbm4tPmhkciwgdGNwX2Nvbm4tPmluLmhkciwKKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSk7CisJCXRjcF9jb25uLT5pbi5oZHIgPSAmdGNwX2Nvbm4tPmhkcjsKKwkJdGNwX2Nvbm4tPmluLnplcm9fY29weV9oZHIgPSAwOworCX0KKwlyZXR1cm4gMDsKIH0KIAogLyoqCiAgKiBpc2NzaV9jdGFza19jb3B5IC0gY29weSBza2IgYml0cyB0byB0aGUgZGVzdGFuYXRpb24gY21kIHRhc2sKLSAqIEBjb25uOiBpc2NzaSBjb25uZWN0aW9uCisgKiBAY29ubjogaXNjc2kgdGNwIGNvbm5lY3Rpb24KICAqIEBjdGFzazogc2NzaSBjb21tYW5kIHRhc2sKICAqIEBidWY6IGJ1ZmZlciB0byBjb3B5IHRvCiAgKiBAYnVmX3NpemU6IHNpemUgb2YgYnVmZmVyCkBAIC04MDQsMTEwICs1NjAsMTEzIEBACiAgKglidWZfbGVmdAkJbGVmdCB0byBjb3B5IGZyb20gaW4gcHJvZ3Jlc3MgYnVmZmVyCiAgKiovCiBzdGF0aWMgaW5saW5lIGludAotaXNjc2lfY3Rhc2tfY29weShzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaywKK2lzY3NpX2N0YXNrX2NvcHkoc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaywKIAkJdm9pZCAqYnVmLCBpbnQgYnVmX3NpemUsIGludCBvZmZzZXQpCiB7Ci0JaW50IGJ1Zl9sZWZ0ID0gYnVmX3NpemUgLSAoY29ubi0+ZGF0YV9jb3BpZWQgKyBvZmZzZXQpOwotCWludCBzaXplID0gbWluKGNvbm4tPmluLmNvcHksIGJ1Zl9sZWZ0KTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKwlpbnQgYnVmX2xlZnQgPSBidWZfc2l6ZSAtICh0Y3BfY29ubi0+ZGF0YV9jb3BpZWQgKyBvZmZzZXQpOworCWludCBzaXplID0gbWluKHRjcF9jb25uLT5pbi5jb3B5LCBidWZfbGVmdCk7CiAJaW50IHJjOwogCiAJc2l6ZSA9IG1pbihzaXplLCBjdGFzay0+ZGF0YV9jb3VudCk7CiAKIAlkZWJ1Z190Y3AoImN0YXNrX2NvcHkgJWQgYnl0ZXMgYXQgb2Zmc2V0ICVkIGNvcGllZCAlZFxuIiwKLQkgICAgICAgc2l6ZSwgY29ubi0+aW4ub2Zmc2V0LCBjb25uLT5pbi5jb3BpZWQpOworCSAgICAgICBzaXplLCB0Y3BfY29ubi0+aW4ub2Zmc2V0LCB0Y3BfY29ubi0+aW4uY29waWVkKTsKIAogCUJVR19PTihzaXplIDw9IDApOwotCUJVR19PTihjdGFzay0+c2VudCArIHNpemUgPiBjdGFzay0+dG90YWxfbGVuZ3RoKTsKKwlCVUdfT04odGNwX2N0YXNrLT5zZW50ICsgc2l6ZSA+IGN0YXNrLT50b3RhbF9sZW5ndGgpOwogCi0JcmMgPSBza2JfY29weV9iaXRzKGNvbm4tPmluLnNrYiwgY29ubi0+aW4ub2Zmc2V0LAotCQkJICAgKGNoYXIqKWJ1ZiArIChvZmZzZXQgKyBjb25uLT5kYXRhX2NvcGllZCksIHNpemUpOworCXJjID0gc2tiX2NvcHlfYml0cyh0Y3BfY29ubi0+aW4uc2tiLCB0Y3BfY29ubi0+aW4ub2Zmc2V0LAorCQkJICAgKGNoYXIqKWJ1ZiArIChvZmZzZXQgKyB0Y3BfY29ubi0+ZGF0YV9jb3BpZWQpLCBzaXplKTsKIAkvKiBtdXN0IGZpdCBpbnRvIHNrYi0+bGVuICovCiAJQlVHX09OKHJjKTsKIAotCWNvbm4tPmluLm9mZnNldCArPSBzaXplOwotCWNvbm4tPmluLmNvcHkgLT0gc2l6ZTsKLQljb25uLT5pbi5jb3BpZWQgKz0gc2l6ZTsKLQljb25uLT5kYXRhX2NvcGllZCArPSBzaXplOwotCWN0YXNrLT5zZW50ICs9IHNpemU7CisJdGNwX2Nvbm4tPmluLm9mZnNldCArPSBzaXplOworCXRjcF9jb25uLT5pbi5jb3B5IC09IHNpemU7CisJdGNwX2Nvbm4tPmluLmNvcGllZCArPSBzaXplOworCXRjcF9jb25uLT5kYXRhX2NvcGllZCArPSBzaXplOworCXRjcF9jdGFzay0+c2VudCArPSBzaXplOwogCWN0YXNrLT5kYXRhX2NvdW50IC09IHNpemU7CiAKLQlCVUdfT04oY29ubi0+aW4uY29weSA8IDApOworCUJVR19PTih0Y3BfY29ubi0+aW4uY29weSA8IDApOwogCUJVR19PTihjdGFzay0+ZGF0YV9jb3VudCA8IDApOwogCi0JaWYgKGJ1Zl9zaXplICE9IChjb25uLT5kYXRhX2NvcGllZCArIG9mZnNldCkpIHsKKwlpZiAoYnVmX3NpemUgIT0gKHRjcF9jb25uLT5kYXRhX2NvcGllZCArIG9mZnNldCkpIHsKIAkJaWYgKCFjdGFzay0+ZGF0YV9jb3VudCkgewotCQkJQlVHX09OKGJ1Zl9zaXplIC0gY29ubi0+ZGF0YV9jb3BpZWQgPCAwKTsKKwkJCUJVR19PTihidWZfc2l6ZSAtIHRjcF9jb25uLT5kYXRhX2NvcGllZCA8IDApOwogCQkJLyogZG9uZSB3aXRoIHRoaXMgUERVICovCi0JCQlyZXR1cm4gYnVmX3NpemUgLSBjb25uLT5kYXRhX2NvcGllZDsKKwkJCXJldHVybiBidWZfc2l6ZSAtIHRjcF9jb25uLT5kYXRhX2NvcGllZDsKIAkJfQogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKIAkvKiBkb25lIHdpdGggdGhpcyBidWZmZXIgb3Igd2l0aCBib3RoIC0gUERVIGFuZCBidWZmZXIgKi8KLQljb25uLT5kYXRhX2NvcGllZCA9IDA7CisJdGNwX2Nvbm4tPmRhdGFfY29waWVkID0gMDsKIAlyZXR1cm4gMDsKIH0KIAogLyoqCiAgKiBpc2NzaV90Y3BfY29weSAtIGNvcHkgc2tiIGJpdHMgdG8gdGhlIGRlc3RhbmF0aW9uIGJ1ZmZlcgotICogQGNvbm46IGlzY3NpIGNvbm5lY3Rpb24KLSAqIEBidWY6IGJ1ZmZlciB0byBjb3B5IHRvCi0gKiBAYnVmX3NpemU6IG51bWJlciBvZiBieXRlcyB0byBjb3B5CisgKiBAY29ubjogaXNjc2kgdGNwIGNvbm5lY3Rpb24KICAqCiAgKiBOb3RlczoKICAqCVRoZSBmdW5jdGlvbiBjYWxscyBza2JfY29weV9iaXRzKCkgYW5kIHVwZGF0ZXMgcGVyLWNvbm5lY3Rpb24KICAqCWJ5dGUgY291bnRlcnMuCiAgKiovCiBzdGF0aWMgaW5saW5lIGludAotaXNjc2lfdGNwX2NvcHkoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHZvaWQgKmJ1ZiwgaW50IGJ1Zl9zaXplKQoraXNjc2lfdGNwX2NvcHkoc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubikKIHsKLQlpbnQgYnVmX2xlZnQgPSBidWZfc2l6ZSAtIGNvbm4tPmRhdGFfY29waWVkOwotCWludCBzaXplID0gbWluKGNvbm4tPmluLmNvcHksIGJ1Zl9sZWZ0KTsKKwl2b2lkICpidWYgPSB0Y3BfY29ubi0+ZGF0YTsKKwlpbnQgYnVmX3NpemUgPSB0Y3BfY29ubi0+aW4uZGF0YWxlbjsKKwlpbnQgYnVmX2xlZnQgPSBidWZfc2l6ZSAtIHRjcF9jb25uLT5kYXRhX2NvcGllZDsKKwlpbnQgc2l6ZSA9IG1pbih0Y3BfY29ubi0+aW4uY29weSwgYnVmX2xlZnQpOwogCWludCByYzsKIAogCWRlYnVnX3RjcCgidGNwX2NvcHkgJWQgYnl0ZXMgYXQgb2Zmc2V0ICVkIGNvcGllZCAlZFxuIiwKLQkgICAgICAgc2l6ZSwgY29ubi0+aW4ub2Zmc2V0LCBjb25uLT5kYXRhX2NvcGllZCk7CisJICAgICAgIHNpemUsIHRjcF9jb25uLT5pbi5vZmZzZXQsIHRjcF9jb25uLT5kYXRhX2NvcGllZCk7CiAJQlVHX09OKHNpemUgPD0gMCk7CiAKLQlyYyA9IHNrYl9jb3B5X2JpdHMoY29ubi0+aW4uc2tiLCBjb25uLT5pbi5vZmZzZXQsCi0JCQkgICAoY2hhciopYnVmICsgY29ubi0+ZGF0YV9jb3BpZWQsIHNpemUpOworCXJjID0gc2tiX2NvcHlfYml0cyh0Y3BfY29ubi0+aW4uc2tiLCB0Y3BfY29ubi0+aW4ub2Zmc2V0LAorCQkJICAgKGNoYXIqKWJ1ZiArIHRjcF9jb25uLT5kYXRhX2NvcGllZCwgc2l6ZSk7CiAJQlVHX09OKHJjKTsKIAotCWNvbm4tPmluLm9mZnNldCArPSBzaXplOwotCWNvbm4tPmluLmNvcHkgLT0gc2l6ZTsKLQljb25uLT5pbi5jb3BpZWQgKz0gc2l6ZTsKLQljb25uLT5kYXRhX2NvcGllZCArPSBzaXplOworCXRjcF9jb25uLT5pbi5vZmZzZXQgKz0gc2l6ZTsKKwl0Y3BfY29ubi0+aW4uY29weSAtPSBzaXplOworCXRjcF9jb25uLT5pbi5jb3BpZWQgKz0gc2l6ZTsKKwl0Y3BfY29ubi0+ZGF0YV9jb3BpZWQgKz0gc2l6ZTsKIAotCWlmIChidWZfc2l6ZSAhPSBjb25uLT5kYXRhX2NvcGllZCkKKwlpZiAoYnVmX3NpemUgIT0gdGNwX2Nvbm4tPmRhdGFfY29waWVkKQogCQlyZXR1cm4gLUVBR0FJTjsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKLXBhcnRpYWxfc2dfZGlnZXN0X3VwZGF0ZShzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKLQkJCSBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQorcGFydGlhbF9zZ19kaWdlc3RfdXBkYXRlKHN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4sCisJCQkgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKIHsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgdGVtcDsKIAogCW1lbWNweSgmdGVtcCwgc2csIHNpemVvZihzdHJ1Y3Qgc2NhdHRlcmxpc3QpKTsKIAl0ZW1wLm9mZnNldCA9IG9mZnNldDsKIAl0ZW1wLmxlbmd0aCA9IGxlbmd0aDsKLQljcnlwdG9fZGlnZXN0X3VwZGF0ZShjb25uLT5kYXRhX3J4X3RmbSwgJnRlbXAsIDEpOworCWNyeXB0b19kaWdlc3RfdXBkYXRlKHRjcF9jb25uLT5kYXRhX3J4X3RmbSwgJnRlbXAsIDEpOwogfQogCiBzdGF0aWMgdm9pZAotaXNjc2lfcmVjdl9kaWdlc3RfdXBkYXRlKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBjaGFyKiBidWYsIGludCBsZW4pCitpc2NzaV9yZWN2X2RpZ2VzdF91cGRhdGUoc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiwgY2hhciogYnVmLCBpbnQgbGVuKQogewogCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CiAKIAlzZ19pbml0X29uZSgmdG1wLCBidWYsIGxlbik7Ci0JY3J5cHRvX2RpZ2VzdF91cGRhdGUoY29ubi0+ZGF0YV9yeF90Zm0sICZ0bXAsIDEpOworCWNyeXB0b19kaWdlc3RfdXBkYXRlKHRjcF9jb25uLT5kYXRhX3J4X3RmbSwgJnRtcCwgMSk7CiB9CiAKIHN0YXRpYyBpbnQgaXNjc2lfc2NzaV9kYXRhX2luKHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogewotCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSBjb25uLT5pbi5jdGFzazsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gdGNwX2Nvbm4tPmluLmN0YXNrOworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOwogCXN0cnVjdCBzY3NpX2NtbmQgKnNjID0gY3Rhc2stPnNjOwogCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CiAJaW50IGksIG9mZnNldCwgcmMgPSAwOwpAQCAtOTE5LDMxICs2NzgsMzMgQEAKIAkgKi8KIAlpZiAoIXNjLT51c2Vfc2cpIHsKIAkJaSA9IGN0YXNrLT5kYXRhX2NvdW50OwotCQlyYyA9IGlzY3NpX2N0YXNrX2NvcHkoY29ubiwgY3Rhc2ssIHNjLT5yZXF1ZXN0X2J1ZmZlciwKLQkJCQkgICAgICBzYy0+cmVxdWVzdF9idWZmbGVuLCBjdGFzay0+ZGF0YV9vZmZzZXQpOworCQlyYyA9IGlzY3NpX2N0YXNrX2NvcHkodGNwX2Nvbm4sIGN0YXNrLCBzYy0+cmVxdWVzdF9idWZmZXIsCisJCQkJICAgICAgc2MtPnJlcXVlc3RfYnVmZmxlbiwKKwkJCQkgICAgICB0Y3BfY3Rhc2stPmRhdGFfb2Zmc2V0KTsKIAkJaWYgKHJjID09IC1FQUdBSU4pCiAJCQlyZXR1cm4gcmM7CiAJCWlmIChjb25uLT5kYXRhZGdzdF9lbikKLQkJCWlzY3NpX3JlY3ZfZGlnZXN0X3VwZGF0ZShjb25uLCBzYy0+cmVxdWVzdF9idWZmZXIsIGkpOworCQkJaXNjc2lfcmVjdl9kaWdlc3RfdXBkYXRlKHRjcF9jb25uLCBzYy0+cmVxdWVzdF9idWZmZXIsCisJCQkJCQkgaSk7CiAJCXJjID0gMDsKIAkJZ290byBkb25lOwogCX0KIAotCW9mZnNldCA9IGN0YXNrLT5kYXRhX29mZnNldDsKKwlvZmZzZXQgPSB0Y3BfY3Rhc2stPmRhdGFfb2Zmc2V0OwogCXNnID0gc2MtPnJlcXVlc3RfYnVmZmVyOwogCi0JaWYgKGN0YXNrLT5kYXRhX29mZnNldCkKLQkJZm9yIChpID0gMDsgaSA8IGN0YXNrLT5zZ19jb3VudDsgaSsrKQorCWlmICh0Y3BfY3Rhc2stPmRhdGFfb2Zmc2V0KQorCQlmb3IgKGkgPSAwOyBpIDwgdGNwX2N0YXNrLT5zZ19jb3VudDsgaSsrKQogCQkJb2Zmc2V0IC09IHNnW2ldLmxlbmd0aDsKIAkvKiB3ZSd2ZSBwYXNzZWQgdGhyb3VnaCBwYXJ0aWFsIHNnKi8KIAlpZiAob2Zmc2V0IDwgMCkKIAkJb2Zmc2V0ID0gMDsKIAotCWZvciAoaSA9IGN0YXNrLT5zZ19jb3VudDsgaSA8IHNjLT51c2Vfc2c7IGkrKykgeworCWZvciAoaSA9IHRjcF9jdGFzay0+c2dfY291bnQ7IGkgPCBzYy0+dXNlX3NnOyBpKyspIHsKIAkJY2hhciAqZGVzdDsKIAogCQlkZXN0ID0ga21hcF9hdG9taWMoc2dbaV0ucGFnZSwgS01fU09GVElSUTApOwotCQlyYyA9IGlzY3NpX2N0YXNrX2NvcHkoY29ubiwgY3Rhc2ssIGRlc3QgKyBzZ1tpXS5vZmZzZXQsCisJCXJjID0gaXNjc2lfY3Rhc2tfY29weSh0Y3BfY29ubiwgY3Rhc2ssIGRlc3QgKyBzZ1tpXS5vZmZzZXQsCiAJCQkJICAgICAgc2dbaV0ubGVuZ3RoLCBvZmZzZXQpOwogCQlrdW5tYXBfYXRvbWljKGRlc3QsIEtNX1NPRlRJUlEwKTsKIAkJaWYgKHJjID09IC1FQUdBSU4pCkBAIC05NTIsMTUgKzcxMywxNyBAQAogCQlpZiAoIXJjKSB7CiAJCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKIAkJCQlpZiAoIW9mZnNldCkKLQkJCQkJY3J5cHRvX2RpZ2VzdF91cGRhdGUoY29ubi0+ZGF0YV9yeF90Zm0sCi0JCQkJCQkJICAgICAmc2dbaV0sIDEpOworCQkJCQljcnlwdG9fZGlnZXN0X3VwZGF0ZSgKKwkJCQkJCQl0Y3BfY29ubi0+ZGF0YV9yeF90Zm0sCisJCQkJCQkJJnNnW2ldLCAxKTsKIAkJCQllbHNlCi0JCQkJCXBhcnRpYWxfc2dfZGlnZXN0X3VwZGF0ZShjb25uLCAmc2dbaV0sCisJCQkJCXBhcnRpYWxfc2dfZGlnZXN0X3VwZGF0ZSh0Y3BfY29ubiwKKwkJCQkJCQkmc2dbaV0sCiAJCQkJCQkJc2dbaV0ub2Zmc2V0ICsgb2Zmc2V0LAogCQkJCQkJCXNnW2ldLmxlbmd0aCAtIG9mZnNldCk7CiAJCQl9CiAJCQlvZmZzZXQgPSAwOwotCQkJY3Rhc2stPnNnX2NvdW50Kys7CisJCQl0Y3BfY3Rhc2stPnNnX2NvdW50Kys7CiAJCX0KIAogCQlpZiAoIWN0YXNrLT5kYXRhX2NvdW50KSB7CkBAIC05NjgsMjUgKzczMSwyNiBAQAogCQkJCS8qCiAJCQkJICogZGF0YS1pbiBpcyBjb21wbGV0ZSwgYnV0IGJ1ZmZlciBub3QuLi4KIAkJCQkgKi8KLQkJCQlwYXJ0aWFsX3NnX2RpZ2VzdF91cGRhdGUoY29ubiwgJnNnW2ldLAorCQkJCXBhcnRpYWxfc2dfZGlnZXN0X3VwZGF0ZSh0Y3BfY29ubiwgJnNnW2ldLAogCQkJCQkJc2dbaV0ub2Zmc2V0LCBzZ1tpXS5sZW5ndGgtcmMpOwogCQkJcmMgPSAwOwogCQkJYnJlYWs7CiAJCX0KIAotCQlpZiAoIWNvbm4tPmluLmNvcHkpCisJCWlmICghdGNwX2Nvbm4tPmluLmNvcHkpCiAJCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAJQlVHX09OKGN0YXNrLT5kYXRhX2NvdW50KTsKIAogZG9uZToKIAkvKiBjaGVjayBmb3Igbm9uLWV4Y2VwdGlvbmFsIHN0YXR1cyAqLwotCWlmIChjb25uLT5pbi5mbGFncyAmIElTQ1NJX0ZMQUdfREFUQV9TVEFUVVMpIHsKKwlpZiAodGNwX2Nvbm4tPmluLmhkci0+ZmxhZ3MgJiBJU0NTSV9GTEFHX0RBVEFfU1RBVFVTKSB7CiAJCWRlYnVnX3Njc2koImRvbmUgW3NjICVseCByZXMgJWQgaXR0IDB4JXhdXG4iLAogCQkJICAgKGxvbmcpc2MsIHNjLT5yZXN1bHQsIGN0YXNrLT5pdHQpOwotCQljb25uLT5zY3NpcnNwX3BkdXNfY250Kys7Ci0JCWlzY3NpX2N0YXNrX2NsZWFudXAoY29ubiwgY3Rhc2spOwotCQlzYy0+c2NzaV9kb25lKHNjKTsKKwkJc3Bpbl9sb2NrKCZjb25uLT5zZXNzaW9uLT5sb2NrKTsKKwkJX19pc2NzaV9jdGFza19jbGVhbnVwKGNvbm4sIGN0YXNrKTsKKwkJX19pc2NzaV9jb21wbGV0ZV9wZHUoY29ubiwgdGNwX2Nvbm4tPmluLmhkciwgTlVMTCwgMCk7CisJCXNwaW5fdW5sb2NrKCZjb25uLT5zZXNzaW9uLT5sb2NrKTsKIAl9CiAKIAlyZXR1cm4gcmM7CkBAIC05OTUsNzEgKzc1OSwzOCBAQAogc3RhdGljIGludAogaXNjc2lfZGF0YV9yZWN2KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogewotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKLQlpbnQgcmMgPSAwOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCWludCByYyA9IDAsIG9wY29kZTsKIAotCXN3aXRjaChjb25uLT5pbi5vcGNvZGUpIHsKKwlvcGNvZGUgPSB0Y3BfY29ubi0+aW4uaGRyLT5vcGNvZGUgJiBJU0NTSV9PUENPREVfTUFTSzsKKwlzd2l0Y2ggKG9wY29kZSkgewogCWNhc2UgSVNDU0lfT1BfU0NTSV9EQVRBX0lOOgogCQlyYyA9IGlzY3NpX3Njc2lfZGF0YV9pbihjb25uKTsKIAkJYnJlYWs7Ci0JY2FzZSBJU0NTSV9PUF9TQ1NJX0NNRF9SU1A6IHsKLQkJLyoKLQkJICogU0NTSSBTZW5zZSBEYXRhOgotCQkgKiBjb3B5aW5nIHRoZSBlbnRpcmUgRGF0YSBTZWdtZW50LgotCQkgKi8KLQkJaWYgKGlzY3NpX3RjcF9jb3B5KGNvbm4sIGNvbm4tPmRhdGEsIGNvbm4tPmluLmRhdGFsZW4pKSB7Ci0JCQlyYyA9IC1FQUdBSU47Ci0JCQlnb3RvIGV4aXQ7Ci0JCX0KLQotCQkvKgotCQkgKiBjaGVjayBmb3Igc2Vuc2UKLQkJICovCi0JCWNvbm4tPmluLmhkciA9ICZjb25uLT5oZHI7Ci0JCWNvbm4tPnNlbnNlbGVuID0gKGNvbm4tPmRhdGFbMF0gPDwgOCkgfCBjb25uLT5kYXRhWzFdOwotCQlyYyA9IGlzY3NpX2NtZF9yc3AoY29ubiwgY29ubi0+aW4uY3Rhc2spOwotCQlpZiAoIXJjICYmIGNvbm4tPmRhdGFkZ3N0X2VuKQotCQkJaXNjc2lfcmVjdl9kaWdlc3RfdXBkYXRlKGNvbm4sIGNvbm4tPmRhdGEsCi0JCQkJCQkgY29ubi0+aW4uZGF0YWxlbik7Ci0JfQotCWJyZWFrOworCWNhc2UgSVNDU0lfT1BfU0NTSV9DTURfUlNQOgorCQlzcGluX2xvY2soJmNvbm4tPnNlc3Npb24tPmxvY2spOworCQlfX2lzY3NpX2N0YXNrX2NsZWFudXAoY29ubiwgdGNwX2Nvbm4tPmluLmN0YXNrKTsKKwkJc3Bpbl91bmxvY2soJmNvbm4tPnNlc3Npb24tPmxvY2spOwogCWNhc2UgSVNDU0lfT1BfVEVYVF9SU1A6CiAJY2FzZSBJU0NTSV9PUF9MT0dJTl9SU1A6Ci0JY2FzZSBJU0NTSV9PUF9OT09QX0lOOiB7Ci0JCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrID0gTlVMTDsKLQotCQlpZiAoY29ubi0+aW4uaXR0ICE9IElTQ1NJX1JFU0VSVkVEX1RBRykKLQkJCW10YXNrID0gKHN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKikKLQkJCQlzZXNzaW9uLT5tZ210X2NtZHNbY29ubi0+aW4uaXR0IC0KLQkJCQkJSVNDU0lfTUdNVF9JVFRfT0ZGU0VUXTsKLQorCWNhc2UgSVNDU0lfT1BfTk9PUF9JTjoKKwljYXNlIElTQ1NJX09QX0FTWU5DX0VWRU5UOgorCWNhc2UgSVNDU0lfT1BfUkVKRUNUOgogCQkvKgogCQkgKiBDb2xsZWN0IGRhdGEgc2VnbWVudCB0byB0aGUgY29ubmVjdGlvbidzIGRhdGEKIAkJICogcGxhY2Vob2xkZXIKIAkJICovCi0JCWlmIChpc2NzaV90Y3BfY29weShjb25uLCBjb25uLT5kYXRhLCBjb25uLT5pbi5kYXRhbGVuKSkgeworCQlpZiAoaXNjc2lfdGNwX2NvcHkodGNwX2Nvbm4pKSB7CiAJCQlyYyA9IC1FQUdBSU47CiAJCQlnb3RvIGV4aXQ7CiAJCX0KIAotCQlyYyA9IGlzY3NpX3JlY3ZfcGR1KGNvbm4tPmNsc19jb25uLCBjb25uLT5pbi5oZHIsCi0JCQkJICAgIGNvbm4tPmRhdGEsIGNvbm4tPmluLmRhdGFsZW4pOwotCi0JCWlmICghcmMgJiYgY29ubi0+ZGF0YWRnc3RfZW4gJiYKLQkJCWNvbm4tPmluLm9wY29kZSAhPSBJU0NTSV9PUF9MT0dJTl9SU1ApCi0JCQlpc2NzaV9yZWN2X2RpZ2VzdF91cGRhdGUoY29ubiwgY29ubi0+ZGF0YSwKLQkJCSAgCQkJY29ubi0+aW4uZGF0YWxlbik7Ci0KLQkJaWYgKG10YXNrICYmIGNvbm4tPmxvZ2luX210YXNrICE9IG10YXNrKSB7Ci0JCQlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOwotCQkJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsICh2b2lkKikmbXRhc2ssCi0JCQkJICAgIHNpemVvZih2b2lkKikpOwotCQkJc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOwotCQl9Ci0JfQotCWJyZWFrOwotCWNhc2UgSVNDU0lfT1BfQVNZTkNfRVZFTlQ6Ci0JY2FzZSBJU0NTSV9PUF9SRUpFQ1Q6CisJCXJjID0gaXNjc2lfY29tcGxldGVfcGR1KGNvbm4sIHRjcF9jb25uLT5pbi5oZHIsIHRjcF9jb25uLT5kYXRhLAorCQkJCQl0Y3BfY29ubi0+aW4uZGF0YWxlbik7CisJCWlmICghcmMgJiYgY29ubi0+ZGF0YWRnc3RfZW4gJiYgb3Bjb2RlICE9IElTQ1NJX09QX0xPR0lOX1JTUCkKKwkJCWlzY3NpX3JlY3ZfZGlnZXN0X3VwZGF0ZSh0Y3BfY29ubiwgdGNwX2Nvbm4tPmRhdGEsCisJCQkgIAkJCXRjcF9jb25uLT5pbi5kYXRhbGVuKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJQlVHX09OKDEpOwogCX0KQEAgLTEwODAsNiArODExLDcgQEAKIHsKIAlpbnQgcmM7CiAJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSByZF9kZXNjLT5hcmcuZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKIAlpbnQgcHJvY2Vzc2VkOwogCWNoYXIgcGFkW0lTQ1NJX1BBRF9MRU5dOwogCXN0cnVjdCBzY2F0dGVybGlzdCBzZzsKQEAgLTEwODgsMTUgKzgyMCwxNSBAQAogCSAqIFNhdmUgY3VycmVudCBTS0IgYW5kIGl0cyBvZmZzZXQgaW4gdGhlIGNvcnJlc3BvbmRpbmcKIAkgKiBjb25uZWN0aW9uIGNvbnRleHQuCiAJICovCi0JY29ubi0+aW4uY29weSA9IHNrYi0+bGVuIC0gb2Zmc2V0OwotCWNvbm4tPmluLm9mZnNldCA9IG9mZnNldDsKLQljb25uLT5pbi5za2IgPSBza2I7Ci0JY29ubi0+aW4ubGVuID0gY29ubi0+aW4uY29weTsKLQlCVUdfT04oY29ubi0+aW4uY29weSA8PSAwKTsKLQlkZWJ1Z190Y3AoImluICVkIGJ5dGVzXG4iLCBjb25uLT5pbi5jb3B5KTsKKwl0Y3BfY29ubi0+aW4uY29weSA9IHNrYi0+bGVuIC0gb2Zmc2V0OworCXRjcF9jb25uLT5pbi5vZmZzZXQgPSBvZmZzZXQ7CisJdGNwX2Nvbm4tPmluLnNrYiA9IHNrYjsKKwl0Y3BfY29ubi0+aW4ubGVuID0gdGNwX2Nvbm4tPmluLmNvcHk7CisJQlVHX09OKHRjcF9jb25uLT5pbi5jb3B5IDw9IDApOworCWRlYnVnX3RjcCgiaW4gJWQgYnl0ZXNcbiIsIHRjcF9jb25uLT5pbi5jb3B5KTsKIAogbW9yZToKLQljb25uLT5pbi5jb3BpZWQgPSAwOworCXRjcF9jb25uLT5pbi5jb3BpZWQgPSAwOwogCXJjID0gMDsKIAogCWlmICh1bmxpa2VseShjb25uLT5zdXNwZW5kX3J4KSkgewpAQCAtMTEwNCw5ICs4MzYsOSBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoY29ubi0+aW5fcHJvZ3Jlc3MgPT0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVIgfHwKLQkgICAgY29ubi0+aW5fcHJvZ3Jlc3MgPT0gSU5fUFJPR1JFU1NfSEVBREVSX0dBVEhFUikgewotCQlyYyA9IGlzY3NpX2hkcl9leHRyYWN0KGNvbm4pOworCWlmICh0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPT0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVIgfHwKKwkgICAgdGNwX2Nvbm4tPmluX3Byb2dyZXNzID09IElOX1BST0dSRVNTX0hFQURFUl9HQVRIRVIpIHsKKwkJcmMgPSBpc2NzaV9oZHJfZXh0cmFjdCh0Y3BfY29ubik7CiAJCWlmIChyYykgewogCQkgICAgICAgaWYgKHJjID09IC1FQUdBSU4pCiAJCQkJZ290byBub21vcmU7CkBAIC0xMTE5LDkwICs4NTEsOTEgQEAKIAkJLyoKIAkJICogVmVyaWZ5IGFuZCBwcm9jZXNzIGluY29taW5nIFBEVSBoZWFkZXIuCiAJCSAqLwotCQlyYyA9IGlzY3NpX2hkcl9yZWN2KGNvbm4pOwotCQlpZiAoIXJjICYmIGNvbm4tPmluLmRhdGFsZW4pIHsKKwkJcmMgPSBpc2NzaV90Y3BfaGRyX3JlY3YoY29ubik7CisJCWlmICghcmMgJiYgdGNwX2Nvbm4tPmluLmRhdGFsZW4pIHsKIAkJCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQkJCUJVR19PTighY29ubi0+ZGF0YV9yeF90Zm0pOwotCQkJCWNyeXB0b19kaWdlc3RfaW5pdChjb25uLT5kYXRhX3J4X3RmbSk7CisJCQkJQlVHX09OKCF0Y3BfY29ubi0+ZGF0YV9yeF90Zm0pOworCQkJCWNyeXB0b19kaWdlc3RfaW5pdCh0Y3BfY29ubi0+ZGF0YV9yeF90Zm0pOwogCQkJfQotCQkJY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19EQVRBX1JFQ1Y7CisJCQl0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19EQVRBX1JFQ1Y7CiAJCX0gZWxzZSBpZiAocmMpIHsKIAkJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCByYyk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCX0KIAotCWlmIChjb25uLT5pbl9wcm9ncmVzcyA9PSBJTl9QUk9HUkVTU19ERElHRVNUX1JFQ1YpIHsKKwlpZiAodGNwX2Nvbm4tPmluX3Byb2dyZXNzID09IElOX1BST0dSRVNTX0RESUdFU1RfUkVDVikgewogCQl1aW50MzJfdCByZWN2X2RpZ2VzdDsKKwogCQlkZWJ1Z190Y3AoImV4dHJhIGRhdGFfcmVjdiBvZmZzZXQgJWQgY29weSAlZFxuIiwKLQkJCSAgY29ubi0+aW4ub2Zmc2V0LCBjb25uLT5pbi5jb3B5KTsKLQkJc2tiX2NvcHlfYml0cyhjb25uLT5pbi5za2IsIGNvbm4tPmluLm9mZnNldCwKKwkJCSAgdGNwX2Nvbm4tPmluLm9mZnNldCwgdGNwX2Nvbm4tPmluLmNvcHkpOworCQlza2JfY29weV9iaXRzKHRjcF9jb25uLT5pbi5za2IsIHRjcF9jb25uLT5pbi5vZmZzZXQsCiAJCQkJJnJlY3ZfZGlnZXN0LCA0KTsKLQkJY29ubi0+aW4ub2Zmc2V0ICs9IDQ7Ci0JCWNvbm4tPmluLmNvcHkgLT0gNDsKLQkJaWYgKHJlY3ZfZGlnZXN0ICE9IGNvbm4tPmluLmRhdGFkZ3N0KSB7CisJCXRjcF9jb25uLT5pbi5vZmZzZXQgKz0gNDsKKwkJdGNwX2Nvbm4tPmluLmNvcHkgLT0gNDsKKwkJaWYgKHJlY3ZfZGlnZXN0ICE9IHRjcF9jb25uLT5pbi5kYXRhZGdzdCkgewogCQkJZGVidWdfdGNwKCJpc2NzaV90Y3A6IGRhdGEgZGlnZXN0IGVycm9yISIKIAkJCQkgICIweCV4ICE9IDB4JXhcbiIsIHJlY3ZfZGlnZXN0LAotCQkJCSAgY29ubi0+aW4uZGF0YWRnc3QpOworCQkJCSAgdGNwX2Nvbm4tPmluLmRhdGFkZ3N0KTsKIAkJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfREFUQV9ER1NUKTsKIAkJCXJldHVybiAwOwogCQl9IGVsc2UgewogCQkJZGVidWdfdGNwKCJpc2NzaV90Y3A6IGRhdGEgZGlnZXN0IG1hdGNoISIKIAkJCQkgICIweCV4ID09IDB4JXhcbiIsIHJlY3ZfZGlnZXN0LAotCQkJCSAgY29ubi0+aW4uZGF0YWRnc3QpOwotCQkJY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUjsKKwkJCQkgIHRjcF9jb25uLT5pbi5kYXRhZGdzdCk7CisJCQl0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUjsKIAkJfQogCX0KIAotCWlmIChjb25uLT5pbl9wcm9ncmVzcyA9PSBJTl9QUk9HUkVTU19EQVRBX1JFQ1YgJiYgY29ubi0+aW4uY29weSkgeworCWlmICh0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPT0gSU5fUFJPR1JFU1NfREFUQV9SRUNWICYmCisJICAgdGNwX2Nvbm4tPmluLmNvcHkpIHsKIAogCQlkZWJ1Z190Y3AoImRhdGFfcmVjdiBvZmZzZXQgJWQgY29weSAlZFxuIiwKLQkJICAgICAgIGNvbm4tPmluLm9mZnNldCwgY29ubi0+aW4uY29weSk7CisJCSAgICAgICB0Y3BfY29ubi0+aW4ub2Zmc2V0LCB0Y3BfY29ubi0+aW4uY29weSk7CiAKIAkJcmMgPSBpc2NzaV9kYXRhX3JlY3YoY29ubik7CiAJCWlmIChyYykgewotCQkJaWYgKHJjID09IC1FQUdBSU4pIHsKLQkJCQlyZF9kZXNjLT5jb3VudCA9IGNvbm4tPmluLmRhdGFsZW4gLQotCQkJCQkJY29ubi0+aW4uY3Rhc2stPmRhdGFfY291bnQ7CisJCQlpZiAocmMgPT0gLUVBR0FJTikKIAkJCQlnb3RvIGFnYWluOwotCQkJfQogCQkJaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIHJjKTsKIAkJCXJldHVybiAwOwogCQl9Ci0JCWNvbm4tPmluLmNvcHkgLT0gY29ubi0+aW4ucGFkZGluZzsKLQkJY29ubi0+aW4ub2Zmc2V0ICs9IGNvbm4tPmluLnBhZGRpbmc7CisJCXRjcF9jb25uLT5pbi5jb3B5IC09IHRjcF9jb25uLT5pbi5wYWRkaW5nOworCQl0Y3BfY29ubi0+aW4ub2Zmc2V0ICs9IHRjcF9jb25uLT5pbi5wYWRkaW5nOwogCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJCWlmIChjb25uLT5pbi5wYWRkaW5nKSB7Ci0JCQkJZGVidWdfdGNwKCJwYWRkaW5nIC0+ICVkXG4iLCBjb25uLT5pbi5wYWRkaW5nKTsKLQkJCQltZW1zZXQocGFkLCAwLCBjb25uLT5pbi5wYWRkaW5nKTsKLQkJCQlzZ19pbml0X29uZSgmc2csIHBhZCwgY29ubi0+aW4ucGFkZGluZyk7Ci0JCQkJY3J5cHRvX2RpZ2VzdF91cGRhdGUoY29ubi0+ZGF0YV9yeF90Zm0sICZzZywgMSk7CisJCQlpZiAodGNwX2Nvbm4tPmluLnBhZGRpbmcpIHsKKwkJCQlkZWJ1Z190Y3AoInBhZGRpbmcgLT4gJWRcbiIsCisJCQkJCSAgdGNwX2Nvbm4tPmluLnBhZGRpbmcpOworCQkJCW1lbXNldChwYWQsIDAsIHRjcF9jb25uLT5pbi5wYWRkaW5nKTsKKwkJCQlzZ19pbml0X29uZSgmc2csIHBhZCwgdGNwX2Nvbm4tPmluLnBhZGRpbmcpOworCQkJCWNyeXB0b19kaWdlc3RfdXBkYXRlKHRjcF9jb25uLT5kYXRhX3J4X3RmbSwKKwkJCQkJCSAgICAgJnNnLCAxKTsKIAkJCX0KLQkJCWNyeXB0b19kaWdlc3RfZmluYWwoY29ubi0+ZGF0YV9yeF90Zm0sCi0JCQkJCSAgICAodTggKikgJiBjb25uLT5pbi5kYXRhZGdzdCk7Ci0JCQlkZWJ1Z190Y3AoInJ4IGRpZ2VzdCAweCV4XG4iLCBjb25uLT5pbi5kYXRhZGdzdCk7Ci0JCQljb25uLT5pbl9wcm9ncmVzcyA9IElOX1BST0dSRVNTX0RESUdFU1RfUkVDVjsKKwkJCWNyeXB0b19kaWdlc3RfZmluYWwodGNwX2Nvbm4tPmRhdGFfcnhfdGZtLAorCQkJCQkgICAgKHU4ICopICYgdGNwX2Nvbm4tPmluLmRhdGFkZ3N0KTsKKwkJCWRlYnVnX3RjcCgicnggZGlnZXN0IDB4JXhcbiIsIHRjcF9jb25uLT5pbi5kYXRhZGdzdCk7CisJCQl0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19ERElHRVNUX1JFQ1Y7CiAJCX0gZWxzZQotCQkJY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUjsKKwkJCXRjcF9jb25uLT5pbl9wcm9ncmVzcyA9IElOX1BST0dSRVNTX1dBSVRfSEVBREVSOwogCX0KIAogCWRlYnVnX3RjcCgiZiwgcHJvY2Vzc2VkICVkIGZyb20gb3V0IG9mICVkIHBhZGRpbmcgJWRcbiIsCi0JICAgICAgIGNvbm4tPmluLm9mZnNldCAtIG9mZnNldCwgKGludClsZW4sIGNvbm4tPmluLnBhZGRpbmcpOwotCUJVR19PTihjb25uLT5pbi5vZmZzZXQgLSBvZmZzZXQgPiBsZW4pOworCSAgICAgICB0Y3BfY29ubi0+aW4ub2Zmc2V0IC0gb2Zmc2V0LCAoaW50KWxlbiwgdGNwX2Nvbm4tPmluLnBhZGRpbmcpOworCUJVR19PTih0Y3BfY29ubi0+aW4ub2Zmc2V0IC0gb2Zmc2V0ID4gbGVuKTsKIAotCWlmIChjb25uLT5pbi5vZmZzZXQgLSBvZmZzZXQgIT0gbGVuKSB7CisJaWYgKHRjcF9jb25uLT5pbi5vZmZzZXQgLSBvZmZzZXQgIT0gbGVuKSB7CiAJCWRlYnVnX3RjcCgiY29udGludWUgdG8gcHJvY2VzcyAlZCBieXRlc1xuIiwKLQkJICAgICAgIChpbnQpbGVuIC0gKGNvbm4tPmluLm9mZnNldCAtIG9mZnNldCkpOworCQkgICAgICAgKGludClsZW4gLSAodGNwX2Nvbm4tPmluLm9mZnNldCAtIG9mZnNldCkpOwogCQlnb3RvIG1vcmU7CiAJfQogCiBub21vcmU6Ci0JcHJvY2Vzc2VkID0gY29ubi0+aW4ub2Zmc2V0IC0gb2Zmc2V0OworCXByb2Nlc3NlZCA9IHRjcF9jb25uLT5pbi5vZmZzZXQgLSBvZmZzZXQ7CiAJQlVHX09OKHByb2Nlc3NlZCA9PSAwKTsKIAlyZXR1cm4gcHJvY2Vzc2VkOwogCiBhZ2FpbjoKLQlwcm9jZXNzZWQgPSBjb25uLT5pbi5vZmZzZXQgLSBvZmZzZXQ7CisJcHJvY2Vzc2VkID0gdGNwX2Nvbm4tPmluLm9mZnNldCAtIG9mZnNldDsKIAlkZWJ1Z190Y3AoImMsIHByb2Nlc3NlZCAlZCBmcm9tIG91dCBvZiAlZCByZF9kZXNjX2NudCAlZFxuIiwKIAkgICAgICAgICAgcHJvY2Vzc2VkLCAoaW50KWxlbiwgKGludClyZF9kZXNjLT5jb3VudCk7CiAJQlVHX09OKHByb2Nlc3NlZCA9PSAwKTsKQEAgLTEyMjAsOSArOTUzLDE0IEBACiAKIAlyZWFkX2xvY2soJnNrLT5za19jYWxsYmFja19sb2NrKTsKIAotCS8qIHVzZSByZF9kZXNjIHRvIHBhc3MgJ2Nvbm4nIHRvIGlzY3NpX3RjcF9kYXRhX3JlY3YgKi8KKwkvKgorCSAqIFVzZSByZF9kZXNjIHRvIHBhc3MgJ2Nvbm4nIHRvIGlzY3NpX3RjcF9kYXRhX3JlY3YuCisJICogV2Ugc2V0IGNvdW50IHRvIDEgYmVjYXVzZSB3ZSB3YW50IHRoZSBuZXR3b3JrIGxheWVyIHRvCisJICogaGFuZCB1cyBhbGwgdGhlIHNrYnMgdGhhdCBhcmUgYXZhaWxhYmxlLiBpc2NzaV90Y3BfZGF0YV9yZWN2CisJICogaGFuZGxlZCBwZHVzIHRoYXQgY3Jvc3MgYnVmZmVycyBvciBwZHVzIHRoYXQgc3RpbGwgbmVlZCBkYXRhLgorCSAqLwogCXJkX2Rlc2MuYXJnLmRhdGEgPSBjb25uOwotCXJkX2Rlc2MuY291bnQgPSAwOworCXJkX2Rlc2MuY291bnQgPSAxOwogCXRjcF9yZWFkX3NvY2soc2ssICZyZF9kZXNjLCBpc2NzaV90Y3BfZGF0YV9yZWN2KTsKIAogCXJlYWRfdW5sb2NrKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7CkBAIC0xMjMxLDYgKzk2OSw3IEBACiBzdGF0aWMgdm9pZAogaXNjc2lfdGNwX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc29jayAqc2spCiB7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubjsKIAlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubjsKIAlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbjsKIAl2b2lkICgqb2xkX3N0YXRlX2NoYW5nZSkoc3RydWN0IHNvY2sgKik7CkBAIC0xMjQ3LDcgKzk4Niw4IEBACiAJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOwogCX0KIAotCW9sZF9zdGF0ZV9jaGFuZ2UgPSBjb25uLT5vbGRfc3RhdGVfY2hhbmdlOworCXRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlvbGRfc3RhdGVfY2hhbmdlID0gdGNwX2Nvbm4tPm9sZF9zdGF0ZV9jaGFuZ2U7CiAKIAlyZWFkX3VubG9jaygmc2stPnNrX2NhbGxiYWNrX2xvY2spOwogCkBAIC0xMjYyLDIzICsxMDAyLDI1IEBACiBpc2NzaV93cml0ZV9zcGFjZShzdHJ1Y3Qgc29jayAqc2spCiB7CiAJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSAoc3RydWN0IGlzY3NpX2Nvbm4qKXNrLT5za191c2VyX2RhdGE7Ci0JY29ubi0+b2xkX3dyaXRlX3NwYWNlKHNrKTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKworCXRjcF9jb25uLT5vbGRfd3JpdGVfc3BhY2Uoc2spOwogCWRlYnVnX3RjcCgiaXNjc2lfd3JpdGVfc3BhY2U6IGNpZCAlZFxuIiwgY29ubi0+aWQpOwotCWNsZWFyX2JpdChTVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfdHgpOwogCXNjc2lfcXVldWVfd29yayhjb25uLT5zZXNzaW9uLT5ob3N0LCAmY29ubi0+eG1pdHdvcmspOwogfQogCiBzdGF0aWMgdm9pZAogaXNjc2lfY29ubl9zZXRfY2FsbGJhY2tzKHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQogewotCXN0cnVjdCBzb2NrICpzayA9IGNvbm4tPnNvY2stPnNrOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCXN0cnVjdCBzb2NrICpzayA9IHRjcF9jb25uLT5zb2NrLT5zazsKIAogCS8qIGFzc2lnbiBuZXcgY2FsbGJhY2tzICovCiAJd3JpdGVfbG9ja19iaCgmc2stPnNrX2NhbGxiYWNrX2xvY2spOwogCXNrLT5za191c2VyX2RhdGEgPSBjb25uOwotCWNvbm4tPm9sZF9kYXRhX3JlYWR5ID0gc2stPnNrX2RhdGFfcmVhZHk7Ci0JY29ubi0+b2xkX3N0YXRlX2NoYW5nZSA9IHNrLT5za19zdGF0ZV9jaGFuZ2U7Ci0JY29ubi0+b2xkX3dyaXRlX3NwYWNlID0gc2stPnNrX3dyaXRlX3NwYWNlOworCXRjcF9jb25uLT5vbGRfZGF0YV9yZWFkeSA9IHNrLT5za19kYXRhX3JlYWR5OworCXRjcF9jb25uLT5vbGRfc3RhdGVfY2hhbmdlID0gc2stPnNrX3N0YXRlX2NoYW5nZTsKKwl0Y3BfY29ubi0+b2xkX3dyaXRlX3NwYWNlID0gc2stPnNrX3dyaXRlX3NwYWNlOwogCXNrLT5za19kYXRhX3JlYWR5ID0gaXNjc2lfdGNwX2RhdGFfcmVhZHk7CiAJc2stPnNrX3N0YXRlX2NoYW5nZSA9IGlzY3NpX3RjcF9zdGF0ZV9jaGFuZ2U7CiAJc2stPnNrX3dyaXRlX3NwYWNlID0gaXNjc2lfd3JpdGVfc3BhY2U7CkBAIC0xMjg4LDE0ICsxMDMwLDE1IEBACiBzdGF0aWMgdm9pZAogaXNjc2lfY29ubl9yZXN0b3JlX2NhbGxiYWNrcyhzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKIHsKLQlzdHJ1Y3Qgc29jayAqc2sgPSBjb25uLT5zb2NrLT5zazsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3Qgc29jayAqc2sgPSB0Y3BfY29ubi0+c29jay0+c2s7CiAKIAkvKiByZXN0b3JlIHNvY2tldCBjYWxsYmFja3MsIHNlZSBhbHNvOiBpc2NzaV9jb25uX3NldF9jYWxsYmFja3MoKSAqLwogCXdyaXRlX2xvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKIAlzay0+c2tfdXNlcl9kYXRhICAgID0gTlVMTDsKLQlzay0+c2tfZGF0YV9yZWFkeSAgID0gY29ubi0+b2xkX2RhdGFfcmVhZHk7Ci0Jc2stPnNrX3N0YXRlX2NoYW5nZSA9IGNvbm4tPm9sZF9zdGF0ZV9jaGFuZ2U7Ci0Jc2stPnNrX3dyaXRlX3NwYWNlICA9IGNvbm4tPm9sZF93cml0ZV9zcGFjZTsKKwlzay0+c2tfZGF0YV9yZWFkeSAgID0gdGNwX2Nvbm4tPm9sZF9kYXRhX3JlYWR5OworCXNrLT5za19zdGF0ZV9jaGFuZ2UgPSB0Y3BfY29ubi0+b2xkX3N0YXRlX2NoYW5nZTsKKwlzay0+c2tfd3JpdGVfc3BhY2UgID0gdGNwX2Nvbm4tPm9sZF93cml0ZV9zcGFjZTsKIAlzay0+c2tfbm9fY2hlY2sJID0gMDsKIAl3cml0ZV91bmxvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKIH0KQEAgLTEzMTAsOCArMTA1Myw5IEBACiBzdGF0aWMgaW5saW5lIGludAogaXNjc2lfc2VuZChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2J1ZiAqYnVmLCBpbnQgc2l6ZSwgaW50IGZsYWdzKQogewotCXN0cnVjdCBzb2NrZXQgKnNrID0gY29ubi0+c29jazsKLQlpbnQgb2Zmc2V0ID0gYnVmLT5zZy5vZmZzZXQgKyBidWYtPnNlbnQ7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CisJc3RydWN0IHNvY2tldCAqc2sgPSB0Y3BfY29ubi0+c29jazsKKwlpbnQgb2Zmc2V0ID0gYnVmLT5zZy5vZmZzZXQgKyBidWYtPnNlbnQsIHJlczsKIAogCS8qCiAJICogaWYgd2UgZ290IHVzZV9zZz0wIG9yIGFyZSBzZW5kaW5nIHNvbWV0aGluZyB3ZSBrbWFsbG9jZApAQCAtMTMyMiw5ICsxMDY2LDIyIEBACiAJICogc2xhYiBjYXNlLgogCSAqLwogCWlmIChidWYtPnVzZV9zZW5kbXNnKQotCQlyZXR1cm4gc29ja19ub19zZW5kcGFnZShzaywgYnVmLT5zZy5wYWdlLCBvZmZzZXQsIHNpemUsIGZsYWdzKTsKKwkJcmVzID0gc29ja19ub19zZW5kcGFnZShzaywgYnVmLT5zZy5wYWdlLCBvZmZzZXQsIHNpemUsIGZsYWdzKTsKIAllbHNlCi0JCXJldHVybiBjb25uLT5zZW5kcGFnZShzaywgYnVmLT5zZy5wYWdlLCBvZmZzZXQsIHNpemUsIGZsYWdzKTsKKwkJcmVzID0gdGNwX2Nvbm4tPnNlbmRwYWdlKHNrLCBidWYtPnNnLnBhZ2UsIG9mZnNldCwgc2l6ZSwgZmxhZ3MpOworCisJaWYgKHJlcyA+PSAwKSB7CisJCWNvbm4tPnR4ZGF0YV9vY3RldHMgKz0gcmVzOworCQlidWYtPnNlbnQgKz0gcmVzOworCQlyZXR1cm4gcmVzOworCX0KKworCXRjcF9jb25uLT5zZW5kcGFnZV9mYWlsdXJlc19jbnQrKzsKKwlpZiAocmVzID09IC1FQUdBSU4pCisJCXJlcyA9IC1FTk9CVUZTOworCWVsc2UKKwkJaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CisJcmV0dXJuIHJlczsKIH0KIAogLyoqCkBAIC0xMzUwLDE2ICsxMTA3LDEwIEBACiAJcmVzID0gaXNjc2lfc2VuZChjb25uLCBidWYsIHNpemUsIGZsYWdzKTsKIAlkZWJ1Z190Y3AoInNlbmRoZHIgJWQgYnl0ZXMsIHNlbnQgJWQgcmVzICVkXG4iLCBzaXplLCBidWYtPnNlbnQsIHJlcyk7CiAJaWYgKHJlcyA+PSAwKSB7Ci0JCWNvbm4tPnR4ZGF0YV9vY3RldHMgKz0gcmVzOwotCQlidWYtPnNlbnQgKz0gcmVzOwogCQlpZiAoc2l6ZSAhPSByZXMpCiAJCQlyZXR1cm4gLUVBR0FJTjsKIAkJcmV0dXJuIDA7Ci0JfSBlbHNlIGlmIChyZXMgPT0gLUVBR0FJTikgewotCQljb25uLT5zZW5kcGFnZV9mYWlsdXJlc19jbnQrKzsKLQkJc2V0X2JpdChTVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfdHgpOwotCX0gZWxzZSBpZiAocmVzID09IC1FUElQRSkKLQkJaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CisJfQogCiAJcmV0dXJuIHJlczsKIH0KQEAgLTEzOTIsNDcgKzExNDMsNDYgQEAKIAlkZWJ1Z190Y3AoInNlbmRwYWdlOiAlZCBieXRlcywgc2VudCAlZCBsZWZ0ICVkIHNlbnQgJWQgcmVzICVkXG4iLAogCQkgIHNpemUsIGJ1Zi0+c2VudCwgKmNvdW50LCAqc2VudCwgcmVzKTsKIAlpZiAocmVzID49IDApIHsKLQkJY29ubi0+dHhkYXRhX29jdGV0cyArPSByZXM7Ci0JCWJ1Zi0+c2VudCArPSByZXM7CiAJCSpjb3VudCAtPSByZXM7CiAJCSpzZW50ICs9IHJlczsKIAkJaWYgKHNpemUgIT0gcmVzKQogCQkJcmV0dXJuIC1FQUdBSU47CiAJCXJldHVybiAwOwotCX0gZWxzZSBpZiAocmVzID09IC1FQUdBSU4pIHsKLQkJY29ubi0+c2VuZHBhZ2VfZmFpbHVyZXNfY250Kys7Ci0JCXNldF9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3R4KTsKLQl9IGVsc2UgaWYgKHJlcyA9PSAtRVBJUEUpCi0JCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOworCX0KIAogCXJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotaXNjc2lfZGF0YV9kaWdlc3RfaW5pdChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKK2lzY3NpX2RhdGFfZGlnZXN0X2luaXQoc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiwKKwkJICAgICAgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKIHsKLQlCVUdfT04oIWNvbm4tPmRhdGFfdHhfdGZtKTsKLQljcnlwdG9fZGlnZXN0X2luaXQoY29ubi0+ZGF0YV90eF90Zm0pOwotCWN0YXNrLT5kaWdlc3RfY291bnQgPSA0OworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOworCisJQlVHX09OKCF0Y3BfY29ubi0+ZGF0YV90eF90Zm0pOworCWNyeXB0b19kaWdlc3RfaW5pdCh0Y3BfY29ubi0+ZGF0YV90eF90Zm0pOworCXRjcF9jdGFzay0+ZGlnZXN0X2NvdW50ID0gNDsKIH0KIAogc3RhdGljIGludAogaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2ssCiAJCQlzdHJ1Y3QgaXNjc2lfYnVmICpidWYsIHVpbnQzMl90ICpkaWdlc3QsIGludCBmaW5hbCkKIHsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKIAlpbnQgcmMgPSAwOwogCWludCBzZW50ID0gMDsKIAogCWlmIChmaW5hbCkKLQkJY3J5cHRvX2RpZ2VzdF9maW5hbChjb25uLT5kYXRhX3R4X3RmbSwgKHU4KilkaWdlc3QpOworCQljcnlwdG9fZGlnZXN0X2ZpbmFsKHRjcF9jb25uLT5kYXRhX3R4X3RmbSwgKHU4KilkaWdlc3QpOwogCi0JaXNjc2lfYnVmX2luaXRfdmlydChidWYsIChjaGFyKilkaWdlc3QsIDQpOwotCXJjID0gaXNjc2lfc2VuZHBhZ2UoY29ubiwgYnVmLCAmY3Rhc2stPmRpZ2VzdF9jb3VudCwgJnNlbnQpOworCWlzY3NpX2J1Zl9pbml0X2lvdihidWYsIChjaGFyKilkaWdlc3QsIDQpOworCXJjID0gaXNjc2lfc2VuZHBhZ2UoY29ubiwgYnVmLCAmdGNwX2N0YXNrLT5kaWdlc3RfY291bnQsICZzZW50KTsKIAlpZiAocmMpIHsKLQkJY3Rhc2stPmRhdGFkaWdlc3QgPSAqZGlnZXN0OwotCQljdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX0RBVEFfRElHRVNUOworCQl0Y3BfY3Rhc2stPmRhdGFkaWdlc3QgPSAqZGlnZXN0OworCQl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9EQVRBX0RJR0VTVDsKIAl9IGVsc2UKLQkJY3Rhc2stPmRpZ2VzdF9jb3VudCA9IDQ7CisJCXRjcF9jdGFzay0+ZGlnZXN0X2NvdW50ID0gNDsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTE0NTMsMjEgKzEyMDMsMTkgQEAKIGlzY3NpX3NvbGljaXRfZGF0YV9jb250KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrLAogCQkJc3RydWN0IGlzY3NpX3IydF9pbmZvICpyMnQsIGludCBsZWZ0KQogeworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOwogCXN0cnVjdCBpc2NzaV9kYXRhICpoZHI7Ci0Jc3RydWN0IGlzY3NpX2RhdGFfdGFzayAqZHRhc2s7CiAJc3RydWN0IHNjc2lfY21uZCAqc2MgPSBjdGFzay0+c2M7CiAJaW50IG5ld19vZmZzZXQ7CiAKLQlkdGFzayA9IG1lbXBvb2xfYWxsb2MoY3Rhc2stPmRhdGFwb29sLCBHRlBfQVRPTUlDKTsKLQlCVUdfT04oIWR0YXNrKTsKLQloZHIgPSAmZHRhc2stPmhkcjsKKwloZHIgPSAmcjJ0LT5kdGFzay5oZHI7CiAJbWVtc2V0KGhkciwgMCwgc2l6ZW9mKHN0cnVjdCBpc2NzaV9kYXRhKSk7CiAJaGRyLT50dHQgPSByMnQtPnR0dDsKIAloZHItPmRhdGFzbiA9IGNwdV90b19iZTMyKHIydC0+c29saWNpdF9kYXRhc24pOwogCXIydC0+c29saWNpdF9kYXRhc24rKzsKIAloZHItPm9wY29kZSA9IElTQ1NJX09QX1NDU0lfREFUQV9PVVQ7Ci0JbWVtY3B5KGhkci0+bHVuLCBjdGFzay0+aGRyLmx1biwgc2l6ZW9mKGhkci0+bHVuKSk7Ci0JaGRyLT5pdHQgPSBjdGFzay0+aGRyLml0dDsKKwltZW1jcHkoaGRyLT5sdW4sIGN0YXNrLT5oZHItPmx1biwgc2l6ZW9mKGhkci0+bHVuKSk7CisJaGRyLT5pdHQgPSBjdGFzay0+aGRyLT5pdHQ7CiAJaGRyLT5leHBfc3RhdHNuID0gcjJ0LT5leHBfc3RhdHNuOwogCW5ld19vZmZzZXQgPSByMnQtPmRhdGFfb2Zmc2V0ICsgcjJ0LT5zZW50OwogCWhkci0+b2Zmc2V0ID0gY3B1X3RvX2JlMzIobmV3X29mZnNldCk7CkBAIC0xNDgxLDE4MSArMTIyOSw5OCBAQAogCX0KIAljb25uLT5kYXRhb3V0X3BkdXNfY250Kys7CiAKLQlpc2NzaV9idWZfaW5pdF92aXJ0KCZyMnQtPmhlYWRidWYsIChjaGFyKiloZHIsCisJaXNjc2lfYnVmX2luaXRfaW92KCZyMnQtPmhlYWRidWYsIChjaGFyKiloZHIsCiAJCQkgICBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcikpOwogCi0JcjJ0LT5kdGFzayA9IGR0YXNrOwotCiAJaWYgKHNjLT51c2Vfc2cgJiYgIWlzY3NpX2J1Zl9sZWZ0KCZyMnQtPnNlbmRidWYpKSB7Ci0JCUJVR19PTihjdGFzay0+YmFkX3NnID09IHIydC0+c2cpOworCQlCVUdfT04odGNwX2N0YXNrLT5iYWRfc2cgPT0gcjJ0LT5zZyk7CiAJCWlzY3NpX2J1Zl9pbml0X3NnKCZyMnQtPnNlbmRidWYsIHIydC0+c2cpOwogCQlyMnQtPnNnICs9IDE7CiAJfSBlbHNlCi0JCWlzY3NpX2J1Zl9pbml0X2lvdigmY3Rhc2stPnNlbmRidWYsCisJCWlzY3NpX2J1Zl9pbml0X2lvdigmdGNwX2N0YXNrLT5zZW5kYnVmLAogCQkJICAgIChjaGFyKilzYy0+cmVxdWVzdF9idWZmZXIgKyBuZXdfb2Zmc2V0LAogCQkJICAgIHIydC0+ZGF0YV9jb3VudCk7Ci0KLQlsaXN0X2FkZCgmZHRhc2stPml0ZW0sICZjdGFzay0+ZGF0YXF1ZXVlKTsKIH0KIAogc3RhdGljIHZvaWQKIGlzY3NpX3Vuc29saWNpdF9kYXRhX2luaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7Ci0Jc3RydWN0IGlzY3NpX2RhdGEgKmhkcjsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKIAlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzazsKIAotCWR0YXNrID0gbWVtcG9vbF9hbGxvYyhjdGFzay0+ZGF0YXBvb2wsIEdGUF9BVE9NSUMpOwotCUJVR19PTighZHRhc2spOwotCWhkciA9ICZkdGFzay0+aGRyOwotCW1lbXNldChoZHIsIDAsIHNpemVvZihzdHJ1Y3QgaXNjc2lfZGF0YSkpOwotCWhkci0+dHR0ID0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKTsKLQloZHItPmRhdGFzbiA9IGNwdV90b19iZTMyKGN0YXNrLT51bnNvbF9kYXRhc24pOwotCWN0YXNrLT51bnNvbF9kYXRhc24rKzsKLQloZHItPm9wY29kZSA9IElTQ1NJX09QX1NDU0lfREFUQV9PVVQ7Ci0JbWVtY3B5KGhkci0+bHVuLCBjdGFzay0+aGRyLmx1biwgc2l6ZW9mKGhkci0+bHVuKSk7Ci0JaGRyLT5pdHQgPSBjdGFzay0+aGRyLml0dDsKLQloZHItPmV4cF9zdGF0c24gPSBjcHVfdG9fYmUzMihjb25uLT5leHBfc3RhdHNuKTsKLQloZHItPm9mZnNldCA9IGNwdV90b19iZTMyKGN0YXNrLT50b3RhbF9sZW5ndGggLQotCQkJCSAgY3Rhc2stPnIydF9kYXRhX2NvdW50IC0KLQkJCQkgIGN0YXNrLT51bnNvbF9jb3VudCk7Ci0JaWYgKGN0YXNrLT51bnNvbF9jb3VudCA+IGNvbm4tPm1heF94bWl0X2RsZW5ndGgpIHsKLQkJaHRvbjI0KGhkci0+ZGxlbmd0aCwgY29ubi0+bWF4X3htaXRfZGxlbmd0aCk7Ci0JCWN0YXNrLT5kYXRhX2NvdW50ID0gY29ubi0+bWF4X3htaXRfZGxlbmd0aDsKLQkJaGRyLT5mbGFncyA9IDA7Ci0JfSBlbHNlIHsKLQkJaHRvbjI0KGhkci0+ZGxlbmd0aCwgY3Rhc2stPnVuc29sX2NvdW50KTsKLQkJY3Rhc2stPmRhdGFfY291bnQgPSBjdGFzay0+dW5zb2xfY291bnQ7Ci0JCWhkci0+ZmxhZ3MgPSBJU0NTSV9GTEFHX0NNRF9GSU5BTDsKLQl9Ci0KLQlpc2NzaV9idWZfaW5pdF92aXJ0KCZjdGFzay0+aGVhZGJ1ZiwgKGNoYXIqKWhkciwKKwlkdGFzayA9IHRjcF9jdGFzay0+ZHRhc2sgPSAmdGNwX2N0YXNrLT51bnNvbF9kdGFzazsKKwlpc2NzaV9wcmVwX3Vuc29saWNpdF9kYXRhX3BkdShjdGFzaywgJmR0YXNrLT5oZHIsCisJCQkJICAgICAgdGNwX2N0YXNrLT5yMnRfZGF0YV9jb3VudCk7CisJaXNjc2lfYnVmX2luaXRfaW92KCZ0Y3BfY3Rhc2stPmhlYWRidWYsIChjaGFyKikmZHRhc2stPmhkciwKIAkJCSAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSk7Ci0KLQlsaXN0X2FkZCgmZHRhc2stPml0ZW0sICZjdGFzay0+ZGF0YXF1ZXVlKTsKLQotCWN0YXNrLT5kdGFzayA9IGR0YXNrOwogfQogCiAvKioKLSAqIGlzY3NpX2NtZF9pbml0IC0gSW5pdGlhbGl6ZSBpU0NTSSBTQ1NJX1JFQUQgb3IgU0NTSV9XUklURSBjb21tYW5kcworICogaXNjc2lfdGNwX2NtZF9pbml0IC0gSW5pdGlhbGl6ZSBpU0NTSSBTQ1NJX1JFQUQgb3IgU0NTSV9XUklURSBjb21tYW5kcwogICogQGNvbm46IGlzY3NpIGNvbm5lY3Rpb24KICAqIEBjdGFzazogc2NzaSBjb21tYW5kIHRhc2sKICAqIEBzYzogc2NzaSBjb21tYW5kCiAgKiovCiBzdGF0aWMgdm9pZAotaXNjc2lfY21kX2luaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2ssCi0JCXN0cnVjdCBzY3NpX2NtbmQgKnNjKQoraXNjc2lfdGNwX2NtZF9pbml0KHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7Ci0Jc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCXN0cnVjdCBzY3NpX2NtbmQgKnNjID0gY3Rhc2stPnNjOworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOwogCi0JQlVHX09OKF9fa2ZpZm9fbGVuKGN0YXNrLT5yMnRxdWV1ZSkpOworCUJVR19PTihfX2tmaWZvX2xlbih0Y3BfY3Rhc2stPnIydHF1ZXVlKSk7CiAKLQljdGFzay0+c2MgPSBzYzsKLQljdGFzay0+Y29ubiA9IGNvbm47Ci0JY3Rhc2stPmhkci5vcGNvZGUgPSBJU0NTSV9PUF9TQ1NJX0NNRDsKLQljdGFzay0+aGRyLmZsYWdzID0gSVNDU0lfQVRUUl9TSU1QTEU7Ci0JaW50X3RvX3Njc2lsdW4oc2MtPmRldmljZS0+bHVuLCAoc3RydWN0IHNjc2lfbHVuICopY3Rhc2stPmhkci5sdW4pOwotCWN0YXNrLT5oZHIuaXR0ID0gY3Rhc2stPml0dCB8IChjb25uLT5pZCA8PCBDSURfU0hJRlQpIHwKLQkJCSAoc2Vzc2lvbi0+YWdlIDw8IEFHRV9TSElGVCk7Ci0JY3Rhc2stPmhkci5kYXRhX2xlbmd0aCA9IGNwdV90b19iZTMyKHNjLT5yZXF1ZXN0X2J1ZmZsZW4pOwotCWN0YXNrLT5oZHIuY21kc24gPSBjcHVfdG9fYmUzMihzZXNzaW9uLT5jbWRzbik7IHNlc3Npb24tPmNtZHNuKys7Ci0JY3Rhc2stPmhkci5leHBfc3RhdHNuID0gY3B1X3RvX2JlMzIoY29ubi0+ZXhwX3N0YXRzbik7Ci0JbWVtY3B5KGN0YXNrLT5oZHIuY2RiLCBzYy0+Y21uZCwgc2MtPmNtZF9sZW4pOwotCW1lbXNldCgmY3Rhc2stPmhkci5jZGJbc2MtPmNtZF9sZW5dLCAwLCBNQVhfQ09NTUFORF9TSVpFIC0gc2MtPmNtZF9sZW4pOwotCi0JY3Rhc2stPm10YXNrID0gTlVMTDsKLQljdGFzay0+c2VudCA9IDA7Ci0JY3Rhc2stPnNnX2NvdW50ID0gMDsKLQotCWN0YXNrLT50b3RhbF9sZW5ndGggPSBzYy0+cmVxdWVzdF9idWZmbGVuOworCXRjcF9jdGFzay0+c2VudCA9IDA7CisJdGNwX2N0YXNrLT5zZ19jb3VudCA9IDA7CiAKIAlpZiAoc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UpIHsKLQkJY3Rhc2stPmV4cF9yMnRzbiA9IDA7Ci0JCWN0YXNrLT5oZHIuZmxhZ3MgfD0gSVNDU0lfRkxBR19DTURfV1JJVEU7CisJCXRjcF9jdGFzay0+eG1zdGF0ZSA9IFhNU1RBVEVfV19IRFI7CisJCXRjcF9jdGFzay0+ZXhwX3IydHNuID0gMDsKIAkJQlVHX09OKGN0YXNrLT50b3RhbF9sZW5ndGggPT0gMCk7CisKIAkJaWYgKHNjLT51c2Vfc2cpIHsKIAkJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2cgPSBzYy0+cmVxdWVzdF9idWZmZXI7CiAKLQkJCWlzY3NpX2J1Zl9pbml0X3NnKCZjdGFzay0+c2VuZGJ1ZiwKLQkJCQkJICAmc2dbY3Rhc2stPnNnX2NvdW50KytdKTsKLQkJCWN0YXNrLT5zZyA9IHNnOwotCQkJY3Rhc2stPmJhZF9zZyA9IHNnICsgc2MtPnVzZV9zZzsKLQkJfSBlbHNlIHsKLQkJCWlzY3NpX2J1Zl9pbml0X2lvdigmY3Rhc2stPnNlbmRidWYsIHNjLT5yZXF1ZXN0X2J1ZmZlciwKLQkJCQkJc2MtPnJlcXVlc3RfYnVmZmxlbik7Ci0JCX0KLQotCQkvKgotCQkgKiBXcml0ZSBjb3VudGVyczoKLQkJICoKLQkJICoJaW1tX2NvdW50CWJ5dGVzIHRvIGJlIHNlbnQgcmlnaHQgYWZ0ZXIKLQkJICoJCQlTQ1NJIFBEVSBIZWFkZXIKLQkJICoKLQkJICoJdW5zb2xfY291bnQJYnl0ZXMoYXMgRGF0YS1PdXQpIHRvIGJlIHNlbnQKLQkJICoJCQl3aXRob3V0CVIyVCBhY2sgcmlnaHQgYWZ0ZXIKLQkJICoJCQlpbW1lZGlhdGUgZGF0YQotCQkgKgotCQkgKglyMnRfZGF0YV9jb3VudAlieXRlcyB0byBiZSBzZW50IHZpYSBSMlQgYWNrJ3MKLQkJICoKLQkJICogICAgICBwYWRfY291bnQgICAgICAgYnl0ZXMgdG8gYmUgc2VudCBhcyB6ZXJvLXBhZGRpbmcKLQkJICovCi0JCWN0YXNrLT5pbW1fY291bnQgPSAwOwotCQljdGFzay0+dW5zb2xfY291bnQgPSAwOwotCQljdGFzay0+dW5zb2xfZGF0YXNuID0gMDsKLQkJY3Rhc2stPnhtc3RhdGUgPSBYTVNUQVRFX1dfSERSOwotCQkvKiBjYWxjdWxhdGUgd3JpdGUgcGFkZGluZyAqLwotCQljdGFzay0+cGFkX2NvdW50ID0gY3Rhc2stPnRvdGFsX2xlbmd0aCAmIChJU0NTSV9QQURfTEVOLTEpOwotCQlpZiAoY3Rhc2stPnBhZF9jb3VudCkgewotCQkJY3Rhc2stPnBhZF9jb3VudCA9IElTQ1NJX1BBRF9MRU4gLSBjdGFzay0+cGFkX2NvdW50OwotCQkJZGVidWdfc2NzaSgid3JpdGUgcGFkZGluZyAlZCBieXRlc1xuIiwKLQkJCQljdGFzay0+cGFkX2NvdW50KTsKLQkJCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfV19QQUQ7Ci0JCX0KLQkJaWYgKHNlc3Npb24tPmltbV9kYXRhX2VuKSB7Ci0JCQlpZiAoY3Rhc2stPnRvdGFsX2xlbmd0aCA+PSBzZXNzaW9uLT5maXJzdF9idXJzdCkKLQkJCQljdGFzay0+aW1tX2NvdW50ID0gbWluKHNlc3Npb24tPmZpcnN0X2J1cnN0LAotCQkJCQkJCWNvbm4tPm1heF94bWl0X2RsZW5ndGgpOwotCQkJZWxzZQotCQkJCWN0YXNrLT5pbW1fY291bnQgPSBtaW4oY3Rhc2stPnRvdGFsX2xlbmd0aCwKLQkJCQkJCQljb25uLT5tYXhfeG1pdF9kbGVuZ3RoKTsKLQkJCWh0b24yNChjdGFzay0+aGRyLmRsZW5ndGgsIGN0YXNrLT5pbW1fY291bnQpOwotCQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9JTU1fREFUQTsKKwkJCWlzY3NpX2J1Zl9pbml0X3NnKCZ0Y3BfY3Rhc2stPnNlbmRidWYsCisJCQkJCSAgJnNnW3RjcF9jdGFzay0+c2dfY291bnQrK10pOworCQkJdGNwX2N0YXNrLT5zZyA9IHNnOworCQkJdGNwX2N0YXNrLT5iYWRfc2cgPSBzZyArIHNjLT51c2Vfc2c7CiAJCX0gZWxzZQotCQkJemVyb19kYXRhKGN0YXNrLT5oZHIuZGxlbmd0aCk7CisJCQlpc2NzaV9idWZfaW5pdF9pb3YoJnRjcF9jdGFzay0+c2VuZGJ1ZiwKKwkJCQkJICAgc2MtPnJlcXVlc3RfYnVmZmVyLAorCQkJCQkgICBzYy0+cmVxdWVzdF9idWZmbGVuKTsKIAotCQlpZiAoIXNlc3Npb24tPmluaXRpYWxfcjJ0X2VuKQotCQkJY3Rhc2stPnVuc29sX2NvdW50ID0gbWluKHNlc3Npb24tPmZpcnN0X2J1cnN0LAotCQkJCWN0YXNrLT50b3RhbF9sZW5ndGgpIC0gY3Rhc2stPmltbV9jb3VudDsKLQkJaWYgKCFjdGFzay0+dW5zb2xfY291bnQpCi0JCQkvKiBObyB1bnNvbGljaXQgRGF0YS1PdXQncyAqLwotCQkJY3Rhc2stPmhkci5mbGFncyB8PSBJU0NTSV9GTEFHX0NNRF9GSU5BTDsKLQkJZWxzZQotCQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9VTlNfSERSIHwgWE1TVEFURV9VTlNfSU5JVDsKKwkJaWYgKGN0YXNrLT5pbW1fY291bnQpCisJCQl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9JTU1fREFUQTsKIAotCQljdGFzay0+cjJ0X2RhdGFfY291bnQgPSBjdGFzay0+dG90YWxfbGVuZ3RoIC0KKwkJdGNwX2N0YXNrLT5wYWRfY291bnQgPSBjdGFzay0+dG90YWxfbGVuZ3RoICYgKElTQ1NJX1BBRF9MRU4tMSk7CisJCWlmICh0Y3BfY3Rhc2stPnBhZF9jb3VudCkgeworCQkJdGNwX2N0YXNrLT5wYWRfY291bnQgPSBJU0NTSV9QQURfTEVOIC0KKwkJCQkJCQl0Y3BfY3Rhc2stPnBhZF9jb3VudDsKKwkJCWRlYnVnX3Njc2koIndyaXRlIHBhZGRpbmcgJWQgYnl0ZXNcbiIsCisJCQkJICAgdGNwX2N0YXNrLT5wYWRfY291bnQpOworCQkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfV19QQUQ7CisJCX0KKworCQlpZiAoY3Rhc2stPnVuc29sX2NvdW50KQorCQkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfVU5TX0hEUiB8CisJCQkJCQlYTVNUQVRFX1VOU19JTklUOworCQl0Y3BfY3Rhc2stPnIydF9kYXRhX2NvdW50ID0gY3Rhc2stPnRvdGFsX2xlbmd0aCAtCiAJCQkJICAgIGN0YXNrLT5pbW1fY291bnQgLQogCQkJCSAgICBjdGFzay0+dW5zb2xfY291bnQ7CiAKIAkJZGVidWdfc2NzaSgiY21kIFtpdHQgJXggdG90YWwgJWQgaW1tICVkIGltbV9kYXRhICVkICIKIAkJCSAgICJyMnRfZGF0YSAlZF1cbiIsCiAJCQkgICBjdGFzay0+aXR0LCBjdGFzay0+dG90YWxfbGVuZ3RoLCBjdGFzay0+aW1tX2NvdW50LAotCQkJICAgY3Rhc2stPnVuc29sX2NvdW50LCBjdGFzay0+cjJ0X2RhdGFfY291bnQpOwotCX0gZWxzZSB7Ci0JCWN0YXNrLT5oZHIuZmxhZ3MgfD0gSVNDU0lfRkxBR19DTURfRklOQUw7Ci0JCWlmIChzYy0+c2NfZGF0YV9kaXJlY3Rpb24gPT0gRE1BX0ZST01fREVWSUNFKQotCQkJY3Rhc2stPmhkci5mbGFncyB8PSBJU0NTSV9GTEFHX0NNRF9SRUFEOwotCQljdGFzay0+ZGF0YXNuID0gMDsKLQkJY3Rhc2stPnhtc3RhdGUgPSBYTVNUQVRFX1JfSERSOwotCQl6ZXJvX2RhdGEoY3Rhc2stPmhkci5kbGVuZ3RoKTsKLQl9CisJCQkgICBjdGFzay0+dW5zb2xfY291bnQsIHRjcF9jdGFzay0+cjJ0X2RhdGFfY291bnQpOworCX0gZWxzZQorCQl0Y3BfY3Rhc2stPnhtc3RhdGUgPSBYTVNUQVRFX1JfSERSOwogCi0JaXNjc2lfYnVmX2luaXRfdmlydCgmY3Rhc2stPmhlYWRidWYsIChjaGFyKikmY3Rhc2stPmhkciwKKwlpc2NzaV9idWZfaW5pdF9pb3YoJnRjcF9jdGFzay0+aGVhZGJ1ZiwgKGNoYXIqKWN0YXNrLT5oZHIsCiAJCQkgICAgc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpKTsKLQljb25uLT5zY3NpY21kX3BkdXNfY250Kys7CiB9CiAKIC8qKgotICogaXNjc2lfbXRhc2tfeG1pdCAtIHhtaXQgbWFuYWdlbWVudChpbW1lZGlhdGUpIHRhc2sKKyAqIGlzY3NpX3RjcF9tdGFza194bWl0IC0geG1pdCBtYW5hZ2VtZW50KGltbWVkaWF0ZSkgdGFzawogICogQGNvbm46IGlzY3NpIGNvbm5lY3Rpb24KICAqIEBtdGFzazogdGFzayBtYW5hZ2VtZW50IHRhc2sKICAqCkBAIC0xNjY5LDEzMiArMTMzNCwxNjcgQEAKICAqCQlJTl9QUk9HUkVTU19JTU1fREFUQSAtIFBEVSBEYXRhIHhtaXQgaW4gcHJvZ3Jlc3MKICAqKi8KIHN0YXRpYyBpbnQKLWlzY3NpX210YXNrX3htaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrKQoraXNjc2lfdGNwX210YXNrX3htaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrKQogeworCXN0cnVjdCBpc2NzaV90Y3BfbWdtdF90YXNrICp0Y3BfbXRhc2sgPSBtdGFzay0+ZGRfZGF0YTsKKwlpbnQgcmM7CiAKIAlkZWJ1Z19zY3NpKCJtdGFzayBkZXEgW2NpZCAlZCBzdGF0ZSAleCBpdHQgMHgleF1cbiIsCi0JCWNvbm4tPmlkLCBtdGFzay0+eG1zdGF0ZSwgbXRhc2stPml0dCk7CisJCWNvbm4tPmlkLCB0Y3BfbXRhc2stPnhtc3RhdGUsIG10YXNrLT5pdHQpOwogCi0JaWYgKG10YXNrLT54bXN0YXRlICYgWE1TVEFURV9JTU1fSERSKSB7Ci0JCW10YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX0lNTV9IRFI7CisJaWYgKHRjcF9tdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfSU1NX0hEUikgeworCQl0Y3BfbXRhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfSU1NX0hEUjsKIAkJaWYgKG10YXNrLT5kYXRhX2NvdW50KQotCQkJbXRhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9JTU1fREFUQTsKKwkJCXRjcF9tdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX0lNTV9EQVRBOwogCQlpZiAoY29ubi0+Y19zdGFnZSAhPSBJU0NTSV9DT05OX0lOSVRJQUxfU1RBR0UgJiYKLQkgICAgCSAgICBjb25uLT5zdG9wX3N0YWdlICE9IFNUT1BfQ09OTl9SRUNPVkVSICYmCisJCSAgICBjb25uLT5zdG9wX3N0YWdlICE9IFNUT1BfQ09OTl9SRUNPVkVSICYmCiAJCSAgICBjb25uLT5oZHJkZ3N0X2VuKQotCQkJaXNjc2lfaGRyX2RpZ2VzdChjb25uLCAmbXRhc2stPmhlYWRidWYsCi0JCQkJCSh1OCopbXRhc2stPmhkcmV4dCk7Ci0JCWlmIChpc2NzaV9zZW5kaGRyKGNvbm4sICZtdGFzay0+aGVhZGJ1ZiwgbXRhc2stPmRhdGFfY291bnQpKSB7Ci0JCQltdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX0lNTV9IRFI7CisJCQlpc2NzaV9oZHJfZGlnZXN0KGNvbm4sICZ0Y3BfbXRhc2stPmhlYWRidWYsCisJCQkJCSh1OCopdGNwX210YXNrLT5oZHJleHQpOworCQlyYyA9IGlzY3NpX3NlbmRoZHIoY29ubiwgJnRjcF9tdGFzay0+aGVhZGJ1ZiwKKwkJCQkgICBtdGFzay0+ZGF0YV9jb3VudCk7CisJCWlmIChyYykgeworCQkJdGNwX210YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfSU1NX0hEUjsKIAkJCWlmIChtdGFzay0+ZGF0YV9jb3VudCkKLQkJCQltdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9JTU1fREFUQTsKLQkJCXJldHVybiAtRUFHQUlOOworCQkJCXRjcF9tdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9JTU1fREFUQTsKKwkJCXJldHVybiByYzsKIAkJfQogCX0KIAotCWlmIChtdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfSU1NX0RBVEEpIHsKKwlpZiAodGNwX210YXNrLT54bXN0YXRlICYgWE1TVEFURV9JTU1fREFUQSkgewogCQlCVUdfT04oIW10YXNrLT5kYXRhX2NvdW50KTsKLQkJbXRhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfSU1NX0RBVEE7CisJCXRjcF9tdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9JTU1fREFUQTsKIAkJLyogRklYTUU6IGltcGxlbWVudC4KIAkJICogVmlydHVhbCBidWZmZXIgY291bGQgYmUgc3ByZWFkZWQgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLi4uCiAJCSAqLwogCQlkbyB7Ci0JCQlpZiAoaXNjc2lfc2VuZHBhZ2UoY29ubiwgJm10YXNrLT5zZW5kYnVmLAotCQkJCSAgICZtdGFzay0+ZGF0YV9jb3VudCwgJm10YXNrLT5zZW50KSkgewotCQkJCW10YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfSU1NX0RBVEE7Ci0JCQkJcmV0dXJuIC1FQUdBSU47CisJCQlpbnQgcmM7CisKKwkJCXJjID0gaXNjc2lfc2VuZHBhZ2UoY29ubiwgJnRjcF9tdGFzay0+c2VuZGJ1ZiwKKwkJCQkJJm10YXNrLT5kYXRhX2NvdW50LCAmdGNwX210YXNrLT5zZW50KTsKKwkJCWlmIChyYykgeworCQkJCXRjcF9tdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX0lNTV9EQVRBOworCQkJCXJldHVybiByYzsKIAkJCX0KIAkJfSB3aGlsZSAobXRhc2stPmRhdGFfY291bnQpOwogCX0KIAotCUJVR19PTihtdGFzay0+eG1zdGF0ZSAhPSBYTVNUQVRFX0lETEUpOworCUJVR19PTih0Y3BfbXRhc2stPnhtc3RhdGUgIT0gWE1TVEFURV9JRExFKTsKKwlpZiAobXRhc2stPmhkci0+aXR0ID09IGNwdV90b19iZTMyKElTQ1NJX1JFU0VSVkVEX1RBRykpIHsKKwkJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCisJCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJCWxpc3RfZGVsKCZjb25uLT5tdGFzay0+cnVubmluZyk7CisJCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLCAodm9pZCopJmNvbm4tPm10YXNrLAorCQkJICAgIHNpemVvZih2b2lkKikpOworCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJfQogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIGludAotaGFuZGxlX3htc3RhdGVfcl9oZHIoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCitoYW5kbGVfeG1zdGF0ZV9yX2hkcihzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwKKwkJICAgICBzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2spCiB7Ci0JY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfUl9IRFI7CisJaW50IHJjOworCisJdGNwX2N0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1JfSERSOwogCWlmIChjb25uLT5oZHJkZ3N0X2VuKQotCQlpc2NzaV9oZHJfZGlnZXN0KGNvbm4sICZjdGFzay0+aGVhZGJ1ZiwgKHU4KiljdGFzay0+aGRyZXh0KTsKLQlpZiAoIWlzY3NpX3NlbmRoZHIoY29ubiwgJmN0YXNrLT5oZWFkYnVmLCAwKSkgewotCQlCVUdfT04oY3Rhc2stPnhtc3RhdGUgIT0gWE1TVEFURV9JRExFKTsKKwkJaXNjc2lfaGRyX2RpZ2VzdChjb25uLCAmdGNwX2N0YXNrLT5oZWFkYnVmLAorCQkJCSAodTgqKXRjcF9jdGFzay0+aGRyZXh0KTsKKwlyYyA9IGlzY3NpX3NlbmRoZHIoY29ubiwgJnRjcF9jdGFzay0+aGVhZGJ1ZiwgMCk7CisJaWYgKCFyYykgeworCQlCVUdfT04odGNwX2N0YXNrLT54bXN0YXRlICE9IFhNU1RBVEVfSURMRSk7CiAJCXJldHVybiAwOyAvKiB3YWl0IGZvciBEYXRhLUluICovCiAJfQotCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfUl9IRFI7Ci0JcmV0dXJuIC1FQUdBSU47CisJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfUl9IRFI7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW5saW5lIGludAotaGFuZGxlX3htc3RhdGVfd19oZHIoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCitoYW5kbGVfeG1zdGF0ZV93X2hkcihzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwKKwkJICAgICBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKQogewotCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1dfSERSOworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOworCWludCByYzsKKworCXRjcF9jdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9XX0hEUjsKIAlpZiAoY29ubi0+aGRyZGdzdF9lbikKLQkJaXNjc2lfaGRyX2RpZ2VzdChjb25uLCAmY3Rhc2stPmhlYWRidWYsICh1OCopY3Rhc2stPmhkcmV4dCk7Ci0JaWYgKGlzY3NpX3NlbmRoZHIoY29ubiwgJmN0YXNrLT5oZWFkYnVmLCBjdGFzay0+aW1tX2NvdW50KSkgewotCQljdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX1dfSERSOwotCQlyZXR1cm4gLUVBR0FJTjsKLQl9Ci0JcmV0dXJuIDA7CisJCWlzY3NpX2hkcl9kaWdlc3QoY29ubiwgJnRjcF9jdGFzay0+aGVhZGJ1ZiwKKwkJCQkgKHU4Kil0Y3BfY3Rhc2stPmhkcmV4dCk7CisJcmMgPSBpc2NzaV9zZW5kaGRyKGNvbm4sICZ0Y3BfY3Rhc2stPmhlYWRidWYsIGN0YXNrLT5pbW1fY291bnQpOworCWlmIChyYykKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfV19IRFI7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW5saW5lIGludAogaGFuZGxlX3htc3RhdGVfZGF0YV9kaWdlc3Qoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sCiAJCQkgICBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKQogewotCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX0RBVEFfRElHRVNUOwotCWRlYnVnX3RjcCgicmVzZW50IGRhdGEgZGlnZXN0IDB4JXhcbiIsIGN0YXNrLT5kYXRhZGlnZXN0KTsKLQlpZiAoaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssICZjdGFzay0+aW1tYnVmLAotCQkJCSAgICAmY3Rhc2stPmRhdGFkaWdlc3QsIDApKSB7Ci0JCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfREFUQV9ESUdFU1Q7CisJc3RydWN0IGlzY3NpX3RjcF9jbWRfdGFzayAqdGNwX2N0YXNrID0gY3Rhc2stPmRkX2RhdGE7CisJaW50IHJjOworCisJdGNwX2N0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX0RBVEFfRElHRVNUOworCWRlYnVnX3RjcCgicmVzZW50IGRhdGEgZGlnZXN0IDB4JXhcbiIsIHRjcF9jdGFzay0+ZGF0YWRpZ2VzdCk7CisJcmMgPSBpc2NzaV9kaWdlc3RfZmluYWxfc2VuZChjb25uLCBjdGFzaywgJnRjcF9jdGFzay0+aW1tYnVmLAorCQkJCSAgICAmdGNwX2N0YXNrLT5kYXRhZGlnZXN0LCAwKTsKKwlpZiAocmMpIHsKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfREFUQV9ESUdFU1Q7CiAJCWRlYnVnX3RjcCgicmVzZW50IGRhdGEgZGlnZXN0IDB4JXggZmFpbCFcbiIsCi0JCQkgIGN0YXNrLT5kYXRhZGlnZXN0KTsKLQkJcmV0dXJuIC1FQUdBSU47CisJCQkgIHRjcF9jdGFzay0+ZGF0YWRpZ2VzdCk7CiAJfQotCXJldHVybiAwOworCisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW5saW5lIGludAogaGFuZGxlX3htc3RhdGVfaW1tX2RhdGEoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7CisJc3RydWN0IGlzY3NpX3RjcF9jbWRfdGFzayAqdGNwX2N0YXNrID0gY3Rhc2stPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CisJaW50IHJjOworCiAJQlVHX09OKCFjdGFzay0+aW1tX2NvdW50KTsKLQljdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9JTU1fREFUQTsKKwl0Y3BfY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfSU1NX0RBVEE7CiAKIAlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJaXNjc2lfZGF0YV9kaWdlc3RfaW5pdChjb25uLCBjdGFzayk7Ci0JCWN0YXNrLT5pbW1kaWdlc3QgPSAwOworCQlpc2NzaV9kYXRhX2RpZ2VzdF9pbml0KHRjcF9jb25uLCBjdGFzayk7CisJCXRjcF9jdGFzay0+aW1tZGlnZXN0ID0gMDsKIAl9CiAKIAlmb3IgKDs7KSB7Ci0JCWlmIChpc2NzaV9zZW5kcGFnZShjb25uLCAmY3Rhc2stPnNlbmRidWYsICZjdGFzay0+aW1tX2NvdW50LAotCQkJCSAgICZjdGFzay0+c2VudCkpIHsKLQkJCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfSU1NX0RBVEE7CisJCXJjID0gaXNjc2lfc2VuZHBhZ2UoY29ubiwgJnRjcF9jdGFzay0+c2VuZGJ1ZiwKKwkJCQkgICAmY3Rhc2stPmltbV9jb3VudCwgJnRjcF9jdGFzay0+c2VudCk7CisJCWlmIChyYykgeworCQkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfSU1NX0RBVEE7CiAJCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJCQljcnlwdG9fZGlnZXN0X2ZpbmFsKGNvbm4tPmRhdGFfdHhfdGZtLAotCQkJCQkJKHU4KikmY3Rhc2stPmltbWRpZ2VzdCk7CisJCQkJY3J5cHRvX2RpZ2VzdF9maW5hbCh0Y3BfY29ubi0+ZGF0YV90eF90Zm0sCisJCQkJCQkodTgqKSZ0Y3BfY3Rhc2stPmltbWRpZ2VzdCk7CiAJCQkJZGVidWdfdGNwKCJ0eCBpbW0gc2VuZHBhZ2UgZmFpbCAweCV4XG4iLAotCQkJCQkgIGN0YXNrLT5kYXRhZGlnZXN0KTsKKwkJCQkJICB0Y3BfY3Rhc2stPmRhdGFkaWdlc3QpOwogCQkJfQotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXR1cm4gcmM7CiAJCX0KIAkJaWYgKGNvbm4tPmRhdGFkZ3N0X2VuKQotCQkJY3J5cHRvX2RpZ2VzdF91cGRhdGUoY29ubi0+ZGF0YV90eF90Zm0sCi0JCQkJCSAgICAgJmN0YXNrLT5zZW5kYnVmLnNnLCAxKTsKKwkJCWNyeXB0b19kaWdlc3RfdXBkYXRlKHRjcF9jb25uLT5kYXRhX3R4X3RmbSwKKwkJCQkJICAgICAmdGNwX2N0YXNrLT5zZW5kYnVmLnNnLCAxKTsKIAogCQlpZiAoIWN0YXNrLT5pbW1fY291bnQpCiAJCQlicmVhazsKLQkJaXNjc2lfYnVmX2luaXRfc2coJmN0YXNrLT5zZW5kYnVmLAotCQkJCSAgJmN0YXNrLT5zZ1tjdGFzay0+c2dfY291bnQrK10pOworCQlpc2NzaV9idWZfaW5pdF9zZygmdGNwX2N0YXNrLT5zZW5kYnVmLAorCQkJCSAgJnRjcF9jdGFzay0+c2dbdGNwX2N0YXNrLT5zZ19jb3VudCsrXSk7CiAJfQogCi0JaWYgKGNvbm4tPmRhdGFkZ3N0X2VuICYmICEoY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1dfUEFEKSkgewotCQlpZiAoaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssICZjdGFzay0+aW1tYnVmLAotCQkJCSAgICAgICAgICAgICZjdGFzay0+aW1tZGlnZXN0LCAxKSkgeworCWlmIChjb25uLT5kYXRhZGdzdF9lbiAmJiAhKHRjcF9jdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfV19QQUQpKSB7CisJCXJjID0gaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssICZ0Y3BfY3Rhc2stPmltbWJ1ZiwKKwkJCQkgICAgICAgICAgICAmdGNwX2N0YXNrLT5pbW1kaWdlc3QsIDEpOworCQlpZiAocmMpIHsKIAkJCWRlYnVnX3RjcCgic2VuZGluZyBpbW0gZGlnZXN0IDB4JXggZmFpbCFcbiIsCi0JCQkJICBjdGFzay0+aW1tZGlnZXN0KTsKLQkJCXJldHVybiAtRUFHQUlOOworCQkJCSAgdGNwX2N0YXNrLT5pbW1kaWdlc3QpOworCQkJcmV0dXJuIHJjOwogCQl9Ci0JCWRlYnVnX3RjcCgic2VuZGluZyBpbW0gZGlnZXN0IDB4JXhcbiIsIGN0YXNrLT5pbW1kaWdlc3QpOworCQlkZWJ1Z190Y3AoInNlbmRpbmcgaW1tIGRpZ2VzdCAweCV4XG4iLCB0Y3BfY3Rhc2stPmltbWRpZ2VzdCk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xODAzLDc0ICsxNTAzLDgxIEBACiBzdGF0aWMgaW5saW5lIGludAogaGFuZGxlX3htc3RhdGVfdW5zX2hkcihzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKIHsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKIAlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzazsKKwlpbnQgcmM7CiAKLQljdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX1VOU19EQVRBOwotCWlmIChjdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfVU5TX0lOSVQpIHsKKwl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9VTlNfREFUQTsKKwlpZiAodGNwX2N0YXNrLT54bXN0YXRlICYgWE1TVEFURV9VTlNfSU5JVCkgewogCQlpc2NzaV91bnNvbGljaXRfZGF0YV9pbml0KGNvbm4sIGN0YXNrKTsKLQkJQlVHX09OKCFjdGFzay0+ZHRhc2spOwotCQlkdGFzayA9IGN0YXNrLT5kdGFzazsKKwkJZHRhc2sgPSB0Y3BfY3Rhc2stPmR0YXNrOwogCQlpZiAoY29ubi0+aGRyZGdzdF9lbikKLQkJCWlzY3NpX2hkcl9kaWdlc3QoY29ubiwgJmN0YXNrLT5oZWFkYnVmLAorCQkJaXNjc2lfaGRyX2RpZ2VzdChjb25uLCAmdGNwX2N0YXNrLT5oZWFkYnVmLAogCQkJCQkodTgqKWR0YXNrLT5oZHJleHQpOwotCQljdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9VTlNfSU5JVDsKKwkJdGNwX2N0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1VOU19JTklUOwogCX0KLQlpZiAoaXNjc2lfc2VuZGhkcihjb25uLCAmY3Rhc2stPmhlYWRidWYsIGN0YXNrLT5kYXRhX2NvdW50KSkgewotCQljdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9VTlNfREFUQTsKLQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9VTlNfSERSOwotCQlyZXR1cm4gLUVBR0FJTjsKKworCXJjID0gaXNjc2lfc2VuZGhkcihjb25uLCAmdGNwX2N0YXNrLT5oZWFkYnVmLCBjdGFzay0+ZGF0YV9jb3VudCk7CisJaWYgKHJjKSB7CisJCXRjcF9jdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9VTlNfREFUQTsKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfVU5TX0hEUjsKKwkJcmV0dXJuIHJjOwogCX0KIAogCWRlYnVnX3Njc2koInVucyBkb3V0IFtpdHQgMHgleCBkbGVuICVkIHNlbnQgJWRdXG4iLAotCQkgICBjdGFzay0+aXR0LCBjdGFzay0+dW5zb2xfY291bnQsIGN0YXNrLT5zZW50KTsKKwkJICAgY3Rhc2stPml0dCwgY3Rhc2stPnVuc29sX2NvdW50LCB0Y3BfY3Rhc2stPnNlbnQpOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIGludAogaGFuZGxlX3htc3RhdGVfdW5zX2RhdGEoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7Ci0Jc3RydWN0IGlzY3NpX2RhdGFfdGFzayAqZHRhc2sgPSBjdGFzay0+ZHRhc2s7CisJc3RydWN0IGlzY3NpX3RjcF9jbWRfdGFzayAqdGNwX2N0YXNrID0gY3Rhc2stPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX2RhdGFfdGFzayAqZHRhc2sgPSB0Y3BfY3Rhc2stPmR0YXNrOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCWludCByYzsKIAogCUJVR19PTighY3Rhc2stPmRhdGFfY291bnQpOwotCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1VOU19EQVRBOworCXRjcF9jdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9VTlNfREFUQTsKIAogCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQlpc2NzaV9kYXRhX2RpZ2VzdF9pbml0KGNvbm4sIGN0YXNrKTsKKwkJaXNjc2lfZGF0YV9kaWdlc3RfaW5pdCh0Y3BfY29ubiwgY3Rhc2spOwogCQlkdGFzay0+ZGlnZXN0ID0gMDsKIAl9CiAKIAlmb3IgKDs7KSB7Ci0JCWludCBzdGFydCA9IGN0YXNrLT5zZW50OworCQlpbnQgc3RhcnQgPSB0Y3BfY3Rhc2stPnNlbnQ7CiAKLQkJaWYgKGlzY3NpX3NlbmRwYWdlKGNvbm4sICZjdGFzay0+c2VuZGJ1ZiwgJmN0YXNrLT5kYXRhX2NvdW50LAotCQkJCSAgICZjdGFzay0+c2VudCkpIHsKLQkJCWN0YXNrLT51bnNvbF9jb3VudCAtPSBjdGFzay0+c2VudCAtIHN0YXJ0OwotCQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9VTlNfREFUQTsKKwkJcmMgPSBpc2NzaV9zZW5kcGFnZShjb25uLCAmdGNwX2N0YXNrLT5zZW5kYnVmLAorCQkJCSAgICZjdGFzay0+ZGF0YV9jb3VudCwgJnRjcF9jdGFzay0+c2VudCk7CisJCWlmIChyYykgeworCQkJY3Rhc2stPnVuc29sX2NvdW50IC09IHRjcF9jdGFzay0+c2VudCAtIHN0YXJ0OworCQkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfVU5TX0RBVEE7CiAJCQkvKiB3aWxsIGNvbnRpbnVlIHdpdGggdGhpcyBjdGFzayBsYXRlci4uICovCiAJCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJCQljcnlwdG9fZGlnZXN0X2ZpbmFsKGNvbm4tPmRhdGFfdHhfdGZtLAorCQkJCWNyeXB0b19kaWdlc3RfZmluYWwodGNwX2Nvbm4tPmRhdGFfdHhfdGZtLAogCQkJCQkJKHU4ICopJmR0YXNrLT5kaWdlc3QpOwogCQkJCWRlYnVnX3RjcCgidHggdW5zIGRhdGEgZmFpbCAweCV4XG4iLAogCQkJCQkgIGR0YXNrLT5kaWdlc3QpOwogCQkJfQotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXR1cm4gcmM7CiAJCX0KIAotCQlCVUdfT04oY3Rhc2stPnNlbnQgPiBjdGFzay0+dG90YWxfbGVuZ3RoKTsKLQkJY3Rhc2stPnVuc29sX2NvdW50IC09IGN0YXNrLT5zZW50IC0gc3RhcnQ7CisJCUJVR19PTih0Y3BfY3Rhc2stPnNlbnQgPiBjdGFzay0+dG90YWxfbGVuZ3RoKTsKKwkJY3Rhc2stPnVuc29sX2NvdW50IC09IHRjcF9jdGFzay0+c2VudCAtIHN0YXJ0OwogCiAJCS8qCiAJCSAqIFhYWDp3ZSBtYXkgcnVuIGhlcmUgd2l0aCB1bi1pbml0aWFsIHNlbmRidWYuCiAJCSAqIHNvIHBhc3MgaXQKIAkJICovCi0JCWlmIChjb25uLT5kYXRhZGdzdF9lbiAmJiBjdGFzay0+c2VudCAtIHN0YXJ0ID4gMCkKLQkJCWNyeXB0b19kaWdlc3RfdXBkYXRlKGNvbm4tPmRhdGFfdHhfdGZtLAotCQkJCQkgICAgICZjdGFzay0+c2VuZGJ1Zi5zZywgMSk7CisJCWlmIChjb25uLT5kYXRhZGdzdF9lbiAmJiB0Y3BfY3Rhc2stPnNlbnQgLSBzdGFydCA+IDApCisJCQljcnlwdG9fZGlnZXN0X3VwZGF0ZSh0Y3BfY29ubi0+ZGF0YV90eF90Zm0sCisJCQkJCSAgICAgJnRjcF9jdGFzay0+c2VuZGJ1Zi5zZywgMSk7CiAKIAkJaWYgKCFjdGFzay0+ZGF0YV9jb3VudCkKIAkJCWJyZWFrOwotCQlpc2NzaV9idWZfaW5pdF9zZygmY3Rhc2stPnNlbmRidWYsCi0JCQkJICAmY3Rhc2stPnNnW2N0YXNrLT5zZ19jb3VudCsrXSk7CisJCWlzY3NpX2J1Zl9pbml0X3NnKCZ0Y3BfY3Rhc2stPnNlbmRidWYsCisJCQkJICAmdGNwX2N0YXNrLT5zZ1t0Y3BfY3Rhc2stPnNnX2NvdW50KytdKTsKIAl9CiAJQlVHX09OKGN0YXNrLT51bnNvbF9jb3VudCA8IDApOwogCkBAIC0xODgwLDI3ICsxNTg3LDI5IEBACiAJICovCiAJaWYgKGN0YXNrLT51bnNvbF9jb3VudCkgewogCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJCWlmIChpc2NzaV9kaWdlc3RfZmluYWxfc2VuZChjb25uLCBjdGFzaywKKwkJCXJjID0gaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssCiAJCQkJCQkgICAgJmR0YXNrLT5kaWdlc3RidWYsCi0JCQkJCQkgICAgJmR0YXNrLT5kaWdlc3QsIDEpKSB7CisJCQkJCQkgICAgJmR0YXNrLT5kaWdlc3QsIDEpOworCQkJaWYgKHJjKSB7CiAJCQkJZGVidWdfdGNwKCJzZW5kIHVucyBkaWdlc3QgMHgleCBmYWlsXG4iLAogCQkJCQkgIGR0YXNrLT5kaWdlc3QpOwotCQkJCXJldHVybiAtRUFHQUlOOworCQkJCXJldHVybiByYzsKIAkJCX0KIAkJCWRlYnVnX3RjcCgic2VuZGluZyB1bnMgZGlnZXN0IDB4JXgsIG1vcmUgdW5zXG4iLAogCQkJCSAgZHRhc2stPmRpZ2VzdCk7CiAJCX0KLQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9VTlNfSU5JVDsKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfVU5TX0lOSVQ7CiAJCXJldHVybiAxOwogCX0KIAotCWlmIChjb25uLT5kYXRhZGdzdF9lbiAmJiAhKGN0YXNrLT54bXN0YXRlICYgWE1TVEFURV9XX1BBRCkpIHsKLQkJaWYgKGlzY3NpX2RpZ2VzdF9maW5hbF9zZW5kKGNvbm4sIGN0YXNrLAorCWlmIChjb25uLT5kYXRhZGdzdF9lbiAmJiAhKHRjcF9jdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfV19QQUQpKSB7CisJCXJjID0gaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssCiAJCQkJCSAgICAmZHRhc2stPmRpZ2VzdGJ1ZiwKLQkJCQkJICAgICZkdGFzay0+ZGlnZXN0LCAxKSkgeworCQkJCQkgICAgJmR0YXNrLT5kaWdlc3QsIDEpOworCQlpZiAocmMpIHsKIAkJCWRlYnVnX3RjcCgic2VuZCBsYXN0IHVucyBkaWdlc3QgMHgleCBmYWlsXG4iLAogCQkJCSAgIGR0YXNrLT5kaWdlc3QpOwotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXR1cm4gcmM7CiAJCX0KIAkJZGVidWdfdGNwKCJzZW5kaW5nIHVucyBkaWdlc3QgMHgleFxuIixkdGFzay0+ZGlnZXN0KTsKIAl9CkBAIC0xOTEyLDE1ICsxNjIxLDE3IEBACiBoYW5kbGVfeG1zdGF0ZV9zb2xfZGF0YShzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKIHsKIAlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0Jc3RydWN0IGlzY3NpX3IydF9pbmZvICpyMnQgPSBjdGFzay0+cjJ0OwotCXN0cnVjdCBpc2NzaV9kYXRhX3Rhc2sgKmR0YXNrID0gcjJ0LT5kdGFzazsKLQlpbnQgbGVmdDsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfcjJ0X2luZm8gKnIydCA9IHRjcF9jdGFzay0+cjJ0OworCXN0cnVjdCBpc2NzaV9kYXRhX3Rhc2sgKmR0YXNrID0gJnIydC0+ZHRhc2s7CisJaW50IGxlZnQsIHJjOwogCi0JY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfU09MX0RBVEE7Ci0JY3Rhc2stPmR0YXNrID0gZHRhc2s7CisJdGNwX2N0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1NPTF9EQVRBOworCXRjcF9jdGFzay0+ZHRhc2sgPSBkdGFzazsKIAogCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQlpc2NzaV9kYXRhX2RpZ2VzdF9pbml0KGNvbm4sIGN0YXNrKTsKKwkJaXNjc2lfZGF0YV9kaWdlc3RfaW5pdCh0Y3BfY29ubiwgY3Rhc2spOwogCQlkdGFzay0+ZGlnZXN0ID0gMDsKIAl9CiBzb2xpY2l0X2FnYWluOgpAQCAtMTkzMCwyNSArMTY0MSwyNyBAQAogCWlmICghcjJ0LT5kYXRhX2NvdW50KQogCQlnb3RvIGRhdGFfb3V0X2RvbmU7CiAKLQlpZiAoaXNjc2lfc2VuZHBhZ2UoY29ubiwgJnIydC0+c2VuZGJ1ZiwgJnIydC0+ZGF0YV9jb3VudCwgJnIydC0+c2VudCkpIHsKLQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfREFUQTsKKwlyYyA9IGlzY3NpX3NlbmRwYWdlKGNvbm4sICZyMnQtPnNlbmRidWYsICZyMnQtPmRhdGFfY291bnQsICZyMnQtPnNlbnQpOworCWlmIChyYykgeworCQl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfREFUQTsKIAkJLyogd2lsbCBjb250aW51ZSB3aXRoIHRoaXMgY3Rhc2sgbGF0ZXIuLiAqLwogCQlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJCWNyeXB0b19kaWdlc3RfZmluYWwoY29ubi0+ZGF0YV90eF90Zm0sCisJCQljcnlwdG9fZGlnZXN0X2ZpbmFsKHRjcF9jb25uLT5kYXRhX3R4X3RmbSwKIAkJCQkJICAodTggKikmZHRhc2stPmRpZ2VzdCk7CiAJCQlkZWJ1Z190Y3AoInIydCBkYXRhIHNlbmQgZmFpbCAweCV4XG4iLCBkdGFzay0+ZGlnZXN0KTsKIAkJfQotCQlyZXR1cm4gLUVBR0FJTjsKKwkJcmV0dXJuIHJjOwogCX0KIAogCUJVR19PTihyMnQtPmRhdGFfY291bnQgPCAwKTsKIAlpZiAoY29ubi0+ZGF0YWRnc3RfZW4pCi0JCWNyeXB0b19kaWdlc3RfdXBkYXRlKGNvbm4tPmRhdGFfdHhfdGZtLCAmcjJ0LT5zZW5kYnVmLnNnLCAxKTsKKwkJY3J5cHRvX2RpZ2VzdF91cGRhdGUodGNwX2Nvbm4tPmRhdGFfdHhfdGZtLCAmcjJ0LT5zZW5kYnVmLnNnLAorCQkJCSAgICAgMSk7CiAKIAlpZiAocjJ0LT5kYXRhX2NvdW50KSB7CiAJCUJVR19PTihjdGFzay0+c2MtPnVzZV9zZyA9PSAwKTsKIAkJaWYgKCFpc2NzaV9idWZfbGVmdCgmcjJ0LT5zZW5kYnVmKSkgewotCQkJQlVHX09OKGN0YXNrLT5iYWRfc2cgPT0gcjJ0LT5zZyk7CisJCQlCVUdfT04odGNwX2N0YXNrLT5iYWRfc2cgPT0gcjJ0LT5zZyk7CiAJCQlpc2NzaV9idWZfaW5pdF9zZygmcjJ0LT5zZW5kYnVmLCByMnQtPnNnKTsKIAkJCXIydC0+c2cgKz0gMTsKIAkJfQpAQCAtMTk2NCwxOSArMTY3NywyMCBAQAogCWxlZnQgPSByMnQtPmRhdGFfbGVuZ3RoIC0gcjJ0LT5zZW50OwogCWlmIChsZWZ0KSB7CiAJCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQkJaWYgKGlzY3NpX2RpZ2VzdF9maW5hbF9zZW5kKGNvbm4sIGN0YXNrLAorCQkJcmMgPSBpc2NzaV9kaWdlc3RfZmluYWxfc2VuZChjb25uLCBjdGFzaywKIAkJCQkJCSAgICAmZHRhc2stPmRpZ2VzdGJ1ZiwKLQkJCQkJCSAgICAmZHRhc2stPmRpZ2VzdCwgMSkpIHsKKwkJCQkJCSAgICAmZHRhc2stPmRpZ2VzdCwgMSk7CisJCQlpZiAocmMpIHsKIAkJCQlkZWJ1Z190Y3AoInNlbmQgcjJ0IGRhdGEgZGlnZXN0IDB4JXgiCiAJCQkJCSAgImZhaWxcbiIsIGR0YXNrLT5kaWdlc3QpOwotCQkJCXJldHVybiAtRUFHQUlOOworCQkJCXJldHVybiByYzsKIAkJCX0KIAkJCWRlYnVnX3RjcCgicjJ0IGRhdGEgc2VuZCBkaWdlc3QgMHgleFxuIiwKIAkJCQkgIGR0YXNrLT5kaWdlc3QpOwogCQl9CiAJCWlzY3NpX3NvbGljaXRfZGF0YV9jb250KGNvbm4sIGN0YXNrLCByMnQsIGxlZnQpOwotCQljdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX1NPTF9EQVRBOwotCQljdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9TT0xfSERSOworCQl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfREFUQTsKKwkJdGNwX2N0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1NPTF9IRFI7CiAJCXJldHVybiAxOwogCX0KIApAQCAtMTk4NCwyNiArMTY5OCwyNyBAQAogCSAqIERvbmUgd2l0aCB0aGlzIFIyVC4gQ2hlY2sgaWYgdGhlcmUgYXJlIG1vcmUKIAkgKiBvdXRzdGFuZGluZyBSMlRzIHJlYWR5IHRvIGJlIHByb2Nlc3NlZC4KIAkgKi8KLQlCVUdfT04oY3Rhc2stPnIydF9kYXRhX2NvdW50IC0gcjJ0LT5kYXRhX2xlbmd0aCA8IDApOworCUJVR19PTih0Y3BfY3Rhc2stPnIydF9kYXRhX2NvdW50IC0gcjJ0LT5kYXRhX2xlbmd0aCA8IDApOwogCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQlpZiAoaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssICZkdGFzay0+ZGlnZXN0YnVmLAotCQkJCQkgICAgJmR0YXNrLT5kaWdlc3QsIDEpKSB7CisJCXJjID0gaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssICZkdGFzay0+ZGlnZXN0YnVmLAorCQkJCQkgICAgJmR0YXNrLT5kaWdlc3QsIDEpOworCQlpZiAocmMpIHsKIAkJCWRlYnVnX3RjcCgic2VuZCBsYXN0IHIydCBkYXRhIGRpZ2VzdCAweCV4IgogCQkJCSAgImZhaWxcbiIsIGR0YXNrLT5kaWdlc3QpOwotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXR1cm4gcmM7CiAJCX0KIAkJZGVidWdfdGNwKCJyMnQgZG9uZSBkb3V0IGRpZ2VzdCAweCV4XG4iLCBkdGFzay0+ZGlnZXN0KTsKIAl9CiAKLQljdGFzay0+cjJ0X2RhdGFfY291bnQgLT0gcjJ0LT5kYXRhX2xlbmd0aDsKLQljdGFzay0+cjJ0ID0gTlVMTDsKKwl0Y3BfY3Rhc2stPnIydF9kYXRhX2NvdW50IC09IHIydC0+ZGF0YV9sZW5ndGg7CisJdGNwX2N0YXNrLT5yMnQgPSBOVUxMOwogCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JX19rZmlmb19wdXQoY3Rhc2stPnIydHBvb2wucXVldWUsICh2b2lkKikmcjJ0LCBzaXplb2Yodm9pZCopKTsKKwlfX2tmaWZvX3B1dCh0Y3BfY3Rhc2stPnIydHBvb2wucXVldWUsICh2b2lkKikmcjJ0LCBzaXplb2Yodm9pZCopKTsKIAlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JaWYgKF9fa2ZpZm9fZ2V0KGN0YXNrLT5yMnRxdWV1ZSwgKHZvaWQqKSZyMnQsIHNpemVvZih2b2lkKikpKSB7Ci0JCWN0YXNrLT5yMnQgPSByMnQ7Ci0JCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfU09MX0RBVEE7Ci0JCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1NPTF9IRFI7CisJaWYgKF9fa2ZpZm9fZ2V0KHRjcF9jdGFzay0+cjJ0cXVldWUsICh2b2lkKikmcjJ0LCBzaXplb2Yodm9pZCopKSkgeworCQl0Y3BfY3Rhc2stPnIydCA9IHIydDsKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfU09MX0RBVEE7CisJCXRjcF9jdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9TT0xfSERSOwogCQlyZXR1cm4gMTsKIAl9CiAKQEAgLTIwMTMsMzYgKzE3MjgsNDQgQEAKIHN0YXRpYyBpbmxpbmUgaW50CiBoYW5kbGVfeG1zdGF0ZV93X3BhZChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKIHsKLQlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzayA9IGN0YXNrLT5kdGFzazsKLQlpbnQgc2VudDsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICpkdGFzayA9IHRjcF9jdGFzay0+ZHRhc2s7CisJaW50IHNlbnQsIHJjOwogCi0JY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfV19QQUQ7Ci0JaXNjc2lfYnVmX2luaXRfdmlydCgmY3Rhc2stPnNlbmRidWYsIChjaGFyKikmY3Rhc2stPnBhZCwKLQkJCSAgICBjdGFzay0+cGFkX2NvdW50KTsKLQlpZiAoaXNjc2lfc2VuZHBhZ2UoY29ubiwgJmN0YXNrLT5zZW5kYnVmLCAmY3Rhc2stPnBhZF9jb3VudCwgJnNlbnQpKSB7Ci0JCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfV19QQUQ7Ci0JCXJldHVybiAtRUFHQUlOOworCXRjcF9jdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9XX1BBRDsKKwlpc2NzaV9idWZfaW5pdF9pb3YoJnRjcF9jdGFzay0+c2VuZGJ1ZiwgKGNoYXIqKSZ0Y3BfY3Rhc2stPnBhZCwKKwkJCSAgICB0Y3BfY3Rhc2stPnBhZF9jb3VudCk7CisJcmMgPSBpc2NzaV9zZW5kcGFnZShjb25uLCAmdGNwX2N0YXNrLT5zZW5kYnVmLCAmdGNwX2N0YXNrLT5wYWRfY291bnQsCisJCQkgICAmc2VudCk7CisJaWYgKHJjKSB7CisJCXRjcF9jdGFzay0+eG1zdGF0ZSB8PSBYTVNUQVRFX1dfUEFEOworCQlyZXR1cm4gcmM7CiAJfQogCiAJaWYgKGNvbm4tPmRhdGFkZ3N0X2VuKSB7Ci0JCWNyeXB0b19kaWdlc3RfdXBkYXRlKGNvbm4tPmRhdGFfdHhfdGZtLCAmY3Rhc2stPnNlbmRidWYuc2csIDEpOworCQljcnlwdG9fZGlnZXN0X3VwZGF0ZSh0Y3BfY29ubi0+ZGF0YV90eF90Zm0sCisJCQkJICAgICAmdGNwX2N0YXNrLT5zZW5kYnVmLnNnLCAxKTsKIAkJLyogaW1tIGRhdGE/ICovCiAJCWlmICghZHRhc2spIHsKLQkJCWlmIChpc2NzaV9kaWdlc3RfZmluYWxfc2VuZChjb25uLCBjdGFzaywgJmN0YXNrLT5pbW1idWYsCi0JCQkJCQkgICAgJmN0YXNrLT5pbW1kaWdlc3QsIDEpKSB7CisJCQlyYyA9IGlzY3NpX2RpZ2VzdF9maW5hbF9zZW5kKGNvbm4sIGN0YXNrLAorCQkJCQkJICAgICZ0Y3BfY3Rhc2stPmltbWJ1ZiwKKwkJCQkJCSAgICAmdGNwX2N0YXNrLT5pbW1kaWdlc3QsIDEpOworCQkJaWYgKHJjKSB7CiAJCQkJZGVidWdfdGNwKCJzZW5kIHBhZGRpbmcgZGlnZXN0IDB4JXgiCi0JCQkJCSAgImZhaWwhXG4iLCBjdGFzay0+aW1tZGlnZXN0KTsKLQkJCQlyZXR1cm4gLUVBR0FJTjsKKwkJCQkJICAiZmFpbCFcbiIsIHRjcF9jdGFzay0+aW1tZGlnZXN0KTsKKwkJCQlyZXR1cm4gcmM7CiAJCQl9CiAJCQlkZWJ1Z190Y3AoImRvbmUgd2l0aCBwYWRkaW5nLCBkaWdlc3QgMHgleFxuIiwKLQkJCQkgIGN0YXNrLT5kYXRhZGlnZXN0KTsKKwkJCQkgIHRjcF9jdGFzay0+ZGF0YWRpZ2VzdCk7CiAJCX0gZWxzZSB7Ci0JCQlpZiAoaXNjc2lfZGlnZXN0X2ZpbmFsX3NlbmQoY29ubiwgY3Rhc2ssCisJCQlyYyA9IGlzY3NpX2RpZ2VzdF9maW5hbF9zZW5kKGNvbm4sIGN0YXNrLAogCQkJCQkJICAgICZkdGFzay0+ZGlnZXN0YnVmLAotCQkJCQkJICAgICZkdGFzay0+ZGlnZXN0LCAxKSkgeworCQkJCQkJICAgICZkdGFzay0+ZGlnZXN0LCAxKTsKKwkJCWlmIChyYykgewogCQkJCWRlYnVnX3RjcCgic2VuZCBwYWRkaW5nIGRpZ2VzdCAweCV4IgogCQkJCSAgICAgICAgICAiZmFpbFxuIiwgZHRhc2stPmRpZ2VzdCk7Ci0JCQkJcmV0dXJuIC1FQUdBSU47CisJCQkJcmV0dXJuIHJjOwogCQkJfQogCQkJZGVidWdfdGNwKCJkb25lIHdpdGggcGFkZGluZywgZGlnZXN0IDB4JXhcbiIsCiAJCQkJICBkdGFzay0+ZGlnZXN0KTsKQEAgLTIwNTMsMTIgKzE3NzYsMTMgQEAKIH0KIAogc3RhdGljIGludAotaXNjc2lfY3Rhc2tfeG1pdChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaykKK2lzY3NpX3RjcF9jdGFza194bWl0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKQogeworCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOwogCWludCByYyA9IDA7CiAKIAlkZWJ1Z19zY3NpKCJjdGFzayBkZXEgW2NpZCAlZCB4bXN0YXRlICV4IGl0dCAweCV4XVxuIiwKLQkJY29ubi0+aWQsIGN0YXNrLT54bXN0YXRlLCBjdGFzay0+aXR0KTsKKwkJY29ubi0+aWQsIHRjcF9jdGFzay0+eG1zdGF0ZSwgY3Rhc2stPml0dCk7CiAKIAkvKgogCSAqIHNlcmlhbGl6ZSB3aXRoIFRNRiBBYm9ydFRhc2sKQEAgLTIwNjYsNDAgKzE3OTAsMzggQEAKIAlpZiAoY3Rhc2stPm10YXNrKQogCQlyZXR1cm4gcmM7CiAKLQlpZiAoY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1JfSERSKSB7Ci0JCXJjID0gaGFuZGxlX3htc3RhdGVfcl9oZHIoY29ubiwgY3Rhc2spOwotCQlyZXR1cm4gcmM7Ci0JfQorCWlmICh0Y3BfY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1JfSERSKQorCQlyZXR1cm4gaGFuZGxlX3htc3RhdGVfcl9oZHIoY29ubiwgdGNwX2N0YXNrKTsKIAotCWlmIChjdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfV19IRFIpIHsKKwlpZiAodGNwX2N0YXNrLT54bXN0YXRlICYgWE1TVEFURV9XX0hEUikgewogCQlyYyA9IGhhbmRsZV94bXN0YXRlX3dfaGRyKGNvbm4sIGN0YXNrKTsKIAkJaWYgKHJjKQogCQkJcmV0dXJuIHJjOwogCX0KIAogCS8qIFhYWDogZm9yIGRhdGEgZGlnZXN0IHhtaXQgcmVjb3ZlciAqLwotCWlmIChjdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfREFUQV9ESUdFU1QpIHsKKwlpZiAodGNwX2N0YXNrLT54bXN0YXRlICYgWE1TVEFURV9EQVRBX0RJR0VTVCkgewogCQlyYyA9IGhhbmRsZV94bXN0YXRlX2RhdGFfZGlnZXN0KGNvbm4sIGN0YXNrKTsKIAkJaWYgKHJjKQogCQkJcmV0dXJuIHJjOwogCX0KIAotCWlmIChjdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfSU1NX0RBVEEpIHsKKwlpZiAodGNwX2N0YXNrLT54bXN0YXRlICYgWE1TVEFURV9JTU1fREFUQSkgewogCQlyYyA9IGhhbmRsZV94bXN0YXRlX2ltbV9kYXRhKGNvbm4sIGN0YXNrKTsKIAkJaWYgKHJjKQogCQkJcmV0dXJuIHJjOwogCX0KIAotCWlmIChjdGFzay0+eG1zdGF0ZSAmIFhNU1RBVEVfVU5TX0hEUikgeworCWlmICh0Y3BfY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1VOU19IRFIpIHsKIAkJQlVHX09OKCFjdGFzay0+dW5zb2xfY291bnQpOwotCQljdGFzay0+eG1zdGF0ZSAmPSB+WE1TVEFURV9VTlNfSERSOworCQl0Y3BfY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfVU5TX0hEUjsKIHVuc29saWNpdF9oZWFkX2FnYWluOgogCQlyYyA9IGhhbmRsZV94bXN0YXRlX3Vuc19oZHIoY29ubiwgY3Rhc2spOwogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAJfQogCi0JaWYgKGN0YXNrLT54bXN0YXRlICYgWE1TVEFURV9VTlNfREFUQSkgeworCWlmICh0Y3BfY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1VOU19EQVRBKSB7CiAJCXJjID0gaGFuZGxlX3htc3RhdGVfdW5zX2RhdGEoY29ubiwgY3Rhc2spOwogCQlpZiAocmMgPT0gMSkKIAkJCWdvdG8gdW5zb2xpY2l0X2hlYWRfYWdhaW47CkBAIC0yMTA4LDIzICsxODMwLDI0IEBACiAJCWdvdG8gZG9uZTsKIAl9CiAKLQlpZiAoY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1NPTF9IRFIpIHsKKwlpZiAodGNwX2N0YXNrLT54bXN0YXRlICYgWE1TVEFURV9TT0xfSERSKSB7CiAJCXN0cnVjdCBpc2NzaV9yMnRfaW5mbyAqcjJ0OwogCi0JCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1NPTF9IRFI7Ci0JCWN0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfU09MX0RBVEE7Ci0JCWlmICghY3Rhc2stPnIydCkKLQkJCV9fa2ZpZm9fZ2V0KGN0YXNrLT5yMnRxdWV1ZSwgKHZvaWQqKSZjdGFzay0+cjJ0LAorCQl0Y3BfY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfU09MX0hEUjsKKwkJdGNwX2N0YXNrLT54bXN0YXRlIHw9IFhNU1RBVEVfU09MX0RBVEE7CisJCWlmICghdGNwX2N0YXNrLT5yMnQpCisJCQlfX2tmaWZvX2dldCh0Y3BfY3Rhc2stPnIydHF1ZXVlLCAodm9pZCopJnRjcF9jdGFzay0+cjJ0LAogCQkJCSAgICBzaXplb2Yodm9pZCopKTsKIHNvbGljaXRfaGVhZF9hZ2FpbjoKLQkJcjJ0ID0gY3Rhc2stPnIydDsKKwkJcjJ0ID0gdGNwX2N0YXNrLT5yMnQ7CiAJCWlmIChjb25uLT5oZHJkZ3N0X2VuKQogCQkJaXNjc2lfaGRyX2RpZ2VzdChjb25uLCAmcjJ0LT5oZWFkYnVmLAotCQkJCQkodTgqKXIydC0+ZHRhc2stPmhkcmV4dCk7Ci0JCWlmIChpc2NzaV9zZW5kaGRyKGNvbm4sICZyMnQtPmhlYWRidWYsIHIydC0+ZGF0YV9jb3VudCkpIHsKLQkJCWN0YXNrLT54bXN0YXRlICY9IH5YTVNUQVRFX1NPTF9EQVRBOwotCQkJY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfSERSOwotCQkJcmV0dXJuIC1FQUdBSU47CisJCQkJCSh1OCopcjJ0LT5kdGFzay5oZHJleHQpOworCQlyYyA9IGlzY3NpX3NlbmRoZHIoY29ubiwgJnIydC0+aGVhZGJ1ZiwgcjJ0LT5kYXRhX2NvdW50KTsKKwkJaWYgKHJjKSB7CisJCQl0Y3BfY3Rhc2stPnhtc3RhdGUgJj0gflhNU1RBVEVfU09MX0RBVEE7CisJCQl0Y3BfY3Rhc2stPnhtc3RhdGUgfD0gWE1TVEFURV9TT0xfSERSOworCQkJcmV0dXJuIHJjOwogCQl9CiAKIAkJZGVidWdfc2NzaSgic29sIGRvdXQgW2RzbiAlZCBpdHQgMHgleCBkbGVuICVkIHNlbnQgJWRdXG4iLApAQCAtMjEzMiw3ICsxODU1LDcgQEAKIAkJCXIydC0+c2VudCk7CiAJfQogCi0JaWYgKGN0YXNrLT54bXN0YXRlICYgWE1TVEFURV9TT0xfREFUQSkgeworCWlmICh0Y3BfY3Rhc2stPnhtc3RhdGUgJiBYTVNUQVRFX1NPTF9EQVRBKSB7CiAJCXJjID0gaGFuZGxlX3htc3RhdGVfc29sX2RhdGEoY29ubiwgY3Rhc2spOwogCQlpZiAocmMgPT0gMSkKIAkJCWdvdG8gc29saWNpdF9oZWFkX2FnYWluOwpAQCAtMjE0NSwxMDIyICsxODY4LDE5OSBAQAogCSAqIExhc3QgdGhpbmcgdG8gY2hlY2sgaXMgd2hldGhlciB3ZSBuZWVkIHRvIHNlbmQgd3JpdGUKIAkgKiBwYWRkaW5nLiBOb3RlIHRoYXQgd2UgY2hlY2sgZm9yIHhtc3RhdGUgZXF1YWxpdHksIG5vdCBqdXN0IHRoZSBiaXQuCiAJICovCi0JaWYgKGN0YXNrLT54bXN0YXRlID09IFhNU1RBVEVfV19QQUQpCisJaWYgKHRjcF9jdGFzay0+eG1zdGF0ZSA9PSBYTVNUQVRFX1dfUEFEKQogCQlyYyA9IGhhbmRsZV94bXN0YXRlX3dfcGFkKGNvbm4sIGN0YXNrKTsKIAogCXJldHVybiByYzsKIH0KIAotLyoqCi0gKiBpc2NzaV9kYXRhX3htaXQgLSB4bWl0IGFueSBjb21tYW5kIGludG8gdGhlIHNjaGVkdWxlZCBjb25uZWN0aW9uCi0gKiBAY29ubjogaXNjc2kgY29ubmVjdGlvbgotICoKLSAqIE5vdGVzOgotICoJVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gLUVBR0FJTiBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgbXVzdAotICoJcmUtc2NoZWR1bGUgaXQgYWdhaW4gbGF0ZXIgb3IgcmVjb3Zlci4gJzAnIHJldHVybiBjb2RlIG1lYW5zCi0gKglzdWNjZXNzZnVsIHhtaXQuCi0gKiovCi1zdGF0aWMgaW50Ci1pc2NzaV9kYXRhX3htaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCi17Ci0JaWYgKHVubGlrZWx5KGNvbm4tPnN1c3BlbmRfdHgpKSB7Ci0JCWRlYnVnX3RjcCgiY29ubiAlZCBUeCBzdXNwZW5kZWQhXG4iLCBjb25uLT5pZCk7Ci0JCXJldHVybiAwOwotCX0KLQotCS8qCi0JICogVHJhbnNtaXQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKLQkgKgotCSAqIDEpIHVuLWZpbmlzaGVkIHhtaXQgKGN0YXNrIG9yIG10YXNrKQotCSAqIDIpIGltbWVkaWF0ZSBjb250cm9sIFBEVXMKLQkgKiAzKSB3cml0ZSBkYXRhCi0JICogNCkgU0NTSSBjb21tYW5kcwotCSAqIDUpIG5vbi1pbW1lZGlhdGUgY29udHJvbCBQRFVzCi0JICoKLQkgKiBObyBuZWVkIHRvIGxvY2sgYXJvdW5kIF9fa2ZpZm9fZ2V0IGFzIGxvbmcgYXMKLQkgKiB0aGVyZSdzIG9uZSBwcm9kdWNlciBhbmQgb25lIGNvbnN1bWVyLgotCSAqLwotCi0JQlVHX09OKGNvbm4tPmN0YXNrICYmIGNvbm4tPm10YXNrKTsKLQotCWlmIChjb25uLT5jdGFzaykgewotCQlpZiAoaXNjc2lfY3Rhc2tfeG1pdChjb25uLCBjb25uLT5jdGFzaykpCi0JCQlnb3RvIGFnYWluOwotCQkvKiBkb25lIHdpdGggdGhpcyBpbi1wcm9ncmVzcyBjdGFzayAqLwotCQljb25uLT5jdGFzayA9IE5VTEw7Ci0JfQotCWlmIChjb25uLT5tdGFzaykgewotCSAgICAgICAgaWYgKGlzY3NpX210YXNrX3htaXQoY29ubiwgY29ubi0+bXRhc2spKQotCQkgICAgICAgIGdvdG8gYWdhaW47Ci0JCS8qIGRvbmUgd2l0aCB0aGlzIGluLXByb2dyZXNzIG10YXNrICovCi0JCWNvbm4tPm10YXNrID0gTlVMTDsKLQl9Ci0KLQkvKiBwcm9jZXNzIGltbWVkaWF0ZSBmaXJzdCAqLwotICAgICAgICBpZiAodW5saWtlbHkoX19rZmlmb19sZW4oY29ubi0+aW1tcXVldWUpKSkgewotCQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0JICAgICAgICB3aGlsZSAoX19rZmlmb19nZXQoY29ubi0+aW1tcXVldWUsICh2b2lkKikmY29ubi0+bXRhc2ssCi0JCQkgICAgICAgICAgIHNpemVvZih2b2lkKikpKSB7Ci0JCSAgICAgICAgaWYgKGlzY3NpX210YXNrX3htaXQoY29ubiwgY29ubi0+bXRhc2spKQotCQkJICAgICAgICBnb3RvIGFnYWluOwotCi0JCSAgICAgICAgaWYgKGNvbm4tPm10YXNrLT5oZHIuaXR0ID09Ci0JCQkJCWNwdV90b19iZTMyKElTQ1NJX1JFU0VSVkVEX1RBRykpIHsKLQkJCSAgICAgICAgc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJCSAgICAgICAgX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsCi0JCQkJCSAgICAodm9pZCopJmNvbm4tPm10YXNrLCBzaXplb2Yodm9pZCopKTsKLQkJCSAgICAgICAgc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQkgICAgICAgIH0KLQkgICAgICAgIH0KLQkJLyogZG9uZSB3aXRoIHRoaXMgbXRhc2sgKi8KLQkJY29ubi0+bXRhc2sgPSBOVUxMOwotCX0KLQotCS8qIHByb2Nlc3Mgd3JpdGUgcXVldWUgKi8KLQl3aGlsZSAoX19rZmlmb19nZXQoY29ubi0+d3JpdGVxdWV1ZSwgKHZvaWQqKSZjb25uLT5jdGFzaywKLQkJCSAgIHNpemVvZih2b2lkKikpKSB7Ci0JCWlmIChpc2NzaV9jdGFza194bWl0KGNvbm4sIGNvbm4tPmN0YXNrKSkKLQkJCWdvdG8gYWdhaW47Ci0JfQotCi0JLyogcHJvY2VzcyBjb21tYW5kIHF1ZXVlICovCi0Jd2hpbGUgKF9fa2ZpZm9fZ2V0KGNvbm4tPnhtaXRxdWV1ZSwgKHZvaWQqKSZjb25uLT5jdGFzaywKLQkJCSAgIHNpemVvZih2b2lkKikpKSB7Ci0JCWlmIChpc2NzaV9jdGFza194bWl0KGNvbm4sIGNvbm4tPmN0YXNrKSkKLQkJCWdvdG8gYWdhaW47Ci0JfQotCS8qIGRvbmUgd2l0aCB0aGlzIGN0YXNrICovCi0JY29ubi0+Y3Rhc2sgPSBOVUxMOwotCi0JLyogcHJvY2VzcyB0aGUgcmVzdCBjb250cm9sIHBsYW5lIFBEVXMsIGlmIGFueSAqLwotICAgICAgICBpZiAodW5saWtlbHkoX19rZmlmb19sZW4oY29ubi0+bWdtdHF1ZXVlKSkpIHsKLQkJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCi0JICAgICAgICB3aGlsZSAoX19rZmlmb19nZXQoY29ubi0+bWdtdHF1ZXVlLCAodm9pZCopJmNvbm4tPm10YXNrLAotCQkJICAgICAgICAgICBzaXplb2Yodm9pZCopKSkgewotCQkgICAgICAgIGlmIChpc2NzaV9tdGFza194bWl0KGNvbm4sIGNvbm4tPm10YXNrKSkKLQkJCSAgICAgICAgZ290byBhZ2FpbjsKLQotCQkgICAgICAgIGlmIChjb25uLT5tdGFzay0+aGRyLml0dCA9PQotCQkJCQljcHVfdG9fYmUzMihJU0NTSV9SRVNFUlZFRF9UQUcpKSB7Ci0JCQkgICAgICAgIHNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCQkgICAgICAgIF9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAotCQkJCQkgICAgKHZvaWQqKSZjb25uLT5tdGFzaywKLQkJCQkgICAgICAgICAgICBzaXplb2Yodm9pZCopKTsKLQkJCSAgICAgICAgc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQkgICAgICAgIH0KLQkgICAgICAgIH0KLQkJLyogZG9uZSB3aXRoIHRoaXMgbXRhc2sgKi8KLQkJY29ubi0+bXRhc2sgPSBOVUxMOwotCX0KLQotCXJldHVybiAwOwotCi1hZ2FpbjoKLQlpZiAodW5saWtlbHkoY29ubi0+c3VzcGVuZF90eCkpCi0JCXJldHVybiAwOwotCi0JcmV0dXJuIC1FQUdBSU47Ci19Ci0KLXN0YXRpYyB2b2lkCi1pc2NzaV94bWl0d29ya2VyKHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBkYXRhOwotCi0JLyoKLQkgKiBzZXJpYWxpemUgWG1pdCB3b3JrZXIgb24gYSBwZXItY29ubmVjdGlvbiBiYXNpcy4KLQkgKi8KLQltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOwotCWlmIChpc2NzaV9kYXRhX3htaXQoY29ubikpCi0JCXNjc2lfcXVldWVfd29yayhjb25uLT5zZXNzaW9uLT5ob3N0LCAmY29ubi0+eG1pdHdvcmspOwotCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKLX0KLQotI2RlZmluZSBGQUlMVVJFX0JBRF9IT1NUCQkxCi0jZGVmaW5lIEZBSUxVUkVfU0VTU0lPTl9GQUlMRUQJCTIKLSNkZWZpbmUgRkFJTFVSRV9TRVNTSU9OX0ZSRUVECQkzCi0jZGVmaW5lIEZBSUxVUkVfV0lORE9XX0NMT1NFRAkJNAotI2RlZmluZSBGQUlMVVJFX1NFU1NJT05fVEVSTUlOQVRFCTUKLQotc3RhdGljIGludAotaXNjc2lfcXVldWVjb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKnNjLCB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSkKLXsKLQlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0OwotCWludCByZWFzb24gPSAwOwotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uOwotCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gTlVMTDsKLQlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gTlVMTDsKLQotCXNjLT5zY3NpX2RvbmUgPSBkb25lOwotCXNjLT5yZXN1bHQgPSAwOwotCi0JaG9zdCA9IHNjLT5kZXZpY2UtPmhvc3Q7Ci0Jc2Vzc2lvbiA9IGlzY3NpX2hvc3RkYXRhKGhvc3QtPmhvc3RkYXRhKTsKLQlCVUdfT04oaG9zdCAhPSBzZXNzaW9uLT5ob3N0KTsKLQotCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0KLQlpZiAoc2Vzc2lvbi0+c3RhdGUgIT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOKSB7Ci0JCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9GQUlMRUQpIHsKLQkJCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9GQUlMRUQ7Ci0JCQlnb3RvIHJlamVjdDsKLQkJfSBlbHNlIGlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9URVJNSU5BVEUpIHsKLQkJCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9URVJNSU5BVEU7Ci0JCQlnb3RvIGZhdWx0OwotCQl9Ci0JCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9GUkVFRDsKLQkJZ290byBmYXVsdDsKLQl9Ci0KLQkvKgotCSAqIENoZWNrIGZvciBpU0NTSSB3aW5kb3cgYW5kIHRha2UgY2FyZSBvZiBDbWRTTiB3cmFwLWFyb3VuZAotCSAqLwotCWlmICgoaW50KShzZXNzaW9uLT5tYXhfY21kc24gLSBzZXNzaW9uLT5jbWRzbikgPCAwKSB7Ci0JCXJlYXNvbiA9IEZBSUxVUkVfV0lORE9XX0NMT1NFRDsKLQkJZ290byByZWplY3Q7Ci0JfQotCi0JY29ubiA9IHNlc3Npb24tPmxlYWRjb25uOwotCi0JX19rZmlmb19nZXQoc2Vzc2lvbi0+Y21kcG9vbC5xdWV1ZSwgKHZvaWQqKSZjdGFzaywgc2l6ZW9mKHZvaWQqKSk7Ci0JQlVHX09OKGN0YXNrLT5zYyk7Ci0KLQlzYy0+U0NwLnBoYXNlID0gc2Vzc2lvbi0+YWdlOwotCXNjLT5TQ3AucHRyID0gKGNoYXIqKWN0YXNrOwotCWlzY3NpX2NtZF9pbml0KGNvbm4sIGN0YXNrLCBzYyk7Ci0KLQlfX2tmaWZvX3B1dChjb25uLT54bWl0cXVldWUsICh2b2lkKikmY3Rhc2ssIHNpemVvZih2b2lkKikpOwotCWRlYnVnX3Njc2koCi0JICAgICAgICJjdGFzayBlbnEgWyVzIGNpZCAlZCBzYyAlbHggaXR0IDB4JXggbGVuICVkIGNtZHNuICVkIHdpbiAlZF1cbiIsCi0JCXNjLT5zY19kYXRhX2RpcmVjdGlvbiA9PSBETUFfVE9fREVWSUNFID8gIndyaXRlIiA6ICJyZWFkIiwKLQkJY29ubi0+aWQsIChsb25nKXNjLCBjdGFzay0+aXR0LCBzYy0+cmVxdWVzdF9idWZmbGVuLAotCQlzZXNzaW9uLT5jbWRzbiwgc2Vzc2lvbi0+bWF4X2NtZHNuIC0gc2Vzc2lvbi0+ZXhwX2NtZHNuICsgMSk7Ci0Jc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOwotCi0Jc2NzaV9xdWV1ZV93b3JrKGhvc3QsICZjb25uLT54bWl0d29yayk7Ci0JcmV0dXJuIDA7Ci0KLXJlamVjdDoKLQlzcGluX3VubG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0JZGVidWdfc2NzaSgiY21kIDB4JXggcmVqZWN0ZWQgKCVkKVxuIiwgc2MtPmNtbmRbMF0sIHJlYXNvbik7Ci0JcmV0dXJuIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1k7Ci0KLWZhdWx0OgotCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKLQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogY21kIDB4JXggaXMgbm90IHF1ZXVlZCAoJWQpXG4iLAotCSAgICAgICBzYy0+Y21uZFswXSwgcmVhc29uKTsKLQlzYy0+c2Vuc2VfYnVmZmVyWzBdID0gMHg3MDsKLQlzYy0+c2Vuc2VfYnVmZmVyWzJdID0gTk9UX1JFQURZOwotCXNjLT5zZW5zZV9idWZmZXJbN10gPSAweDY7Ci0Jc2MtPnNlbnNlX2J1ZmZlclsxMl0gPSAweDA4OwotCXNjLT5zZW5zZV9idWZmZXJbMTNdID0gMHgwMDsKLQlzYy0+cmVzdWx0ID0gKERJRF9OT19DT05ORUNUIDw8IDE2KTsKLQlzYy0+cmVzaWQgPSBzYy0+cmVxdWVzdF9idWZmbGVuOwotCXNjLT5zY3NpX2RvbmUoc2MpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1pc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgZGVwdGgpCi17Ci0JaWYgKGRlcHRoID4gSVNDU0lfTUFYX0NNRF9QRVJfTFVOKQotCQlkZXB0aCA9IElTQ1NJX01BWF9DTURfUEVSX0xVTjsKLQlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChzZGV2LCBzY3NpX2dldF90YWdfdHlwZShzZGV2KSwgZGVwdGgpOwotCXJldHVybiBzZGV2LT5xdWV1ZV9kZXB0aDsKLX0KLQotc3RhdGljIGludAotaXNjc2lfcG9vbF9pbml0KHN0cnVjdCBpc2NzaV9xdWV1ZSAqcSwgaW50IG1heCwgdm9pZCAqKippdGVtcywgaW50IGl0ZW1fc2l6ZSkKLXsKLQlpbnQgaTsKLQotCSppdGVtcyA9IGttYWxsb2MobWF4ICogc2l6ZW9mKHZvaWQqKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCppdGVtcyA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCXEtPm1heCA9IG1heDsKLQlxLT5wb29sID0ga21hbGxvYyhtYXggKiBzaXplb2Yodm9pZCopLCBHRlBfS0VSTkVMKTsKLQlpZiAocS0+cG9vbCA9PSBOVUxMKSB7Ci0JCWtmcmVlKCppdGVtcyk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCXEtPnF1ZXVlID0ga2ZpZm9faW5pdCgodm9pZCopcS0+cG9vbCwgbWF4ICogc2l6ZW9mKHZvaWQqKSwKLQkJCSAgICAgIEdGUF9LRVJORUwsIE5VTEwpOwotCWlmIChxLT5xdWV1ZSA9PSBFUlJfUFRSKC1FTk9NRU0pKSB7Ci0JCWtmcmVlKHEtPnBvb2wpOwotCQlrZnJlZSgqaXRlbXMpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHsKLQkJcS0+cG9vbFtpXSA9IGttYWxsb2MoaXRlbV9zaXplLCBHRlBfS0VSTkVMKTsKLQkJaWYgKHEtPnBvb2xbaV0gPT0gTlVMTCkgewotCQkJaW50IGo7Ci0KLQkJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspCi0JCQkJa2ZyZWUocS0+cG9vbFtqXSk7Ci0KLQkJCWtmaWZvX2ZyZWUocS0+cXVldWUpOwotCQkJa2ZyZWUocS0+cG9vbCk7Ci0JCQlrZnJlZSgqaXRlbXMpOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0KLQkJbWVtc2V0KHEtPnBvb2xbaV0sIDAsIGl0ZW1fc2l6ZSk7Ci0JCSgqaXRlbXMpW2ldID0gcS0+cG9vbFtpXTsKLQkJX19rZmlmb19wdXQocS0+cXVldWUsICh2b2lkKikmcS0+cG9vbFtpXSwgc2l6ZW9mKHZvaWQqKSk7Ci0JfQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZAotaXNjc2lfcG9vbF9mcmVlKHN0cnVjdCBpc2NzaV9xdWV1ZSAqcSwgdm9pZCAqKml0ZW1zKQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IHEtPm1heDsgaSsrKQotCQlrZnJlZShpdGVtc1tpXSk7Ci0Ja2ZyZWUocS0+cG9vbCk7Ci0Ja2ZyZWUoaXRlbXMpOwotfQotCiBzdGF0aWMgc3RydWN0IGlzY3NpX2Nsc19jb25uICoKLWlzY3NpX2Nvbm5fY3JlYXRlKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqY2xzX3Nlc3Npb24sIHVpbnQzMl90IGNvbm5faWR4KQoraXNjc2lfdGNwX2Nvbm5fY3JlYXRlKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqY2xzX3Nlc3Npb24sIHVpbnQzMl90IGNvbm5faWR4KQogewotCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gaXNjc2lfc2Vzc2lvbl90b19zaG9zdChjbHNfc2Vzc2lvbik7Ci0Jc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBpc2NzaV9ob3N0ZGF0YShzaG9zdC0+aG9zdGRhdGEpOwogCXN0cnVjdCBpc2NzaV9jb25uICpjb25uOwogCXN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm47CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubjsKIAotCWNsc19jb25uID0gaXNjc2lfY3JlYXRlX2Nvbm4oY2xzX3Nlc3Npb24sIGNvbm5faWR4KTsKKwljbHNfY29ubiA9IGlzY3NpX2Nvbm5fc2V0dXAoY2xzX3Nlc3Npb24sIGNvbm5faWR4KTsKIAlpZiAoIWNsc19jb25uKQogCQlyZXR1cm4gTlVMTDsKIAljb25uID0gY2xzX2Nvbm4tPmRkX2RhdGE7Ci0JbWVtc2V0KGNvbm4sIDAsIHNpemVvZigqY29ubikpOwotCi0JY29ubi0+Y2xzX2Nvbm4gPSBjbHNfY29ubjsKLQljb25uLT5jX3N0YWdlID0gSVNDU0lfQ09OTl9JTklUSUFMX1NUQUdFOwotCWNvbm4tPmluX3Byb2dyZXNzID0gSU5fUFJPR1JFU1NfV0FJVF9IRUFERVI7Ci0JY29ubi0+aWQgPSBjb25uX2lkeDsKLQljb25uLT5leHBfc3RhdHNuID0gMDsKLQljb25uLT50bWFib3J0X3N0YXRlID0gVE1BQk9SVF9JTklUSUFMOwotCi0JLyogaW5pdGlhbCBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzICovCi0JY29ubi0+aGRyX3NpemUgPSBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcik7Ci0JY29ubi0+ZGF0YV9zaXplID0gREVGQVVMVF9NQVhfUkVDVl9EQVRBX1NFR01FTlRfTEVOR1RIOworCS8qCisJICogZHVlIHRvIHN0cmFuZ2UgaXNzdWVzIHdpdGggaXNlciB0aGVzZSBhcmUgbm90IHNldAorCSAqIGluIGlzY3NpX2Nvbm5fc2V0dXAKKwkgKi8KIAljb25uLT5tYXhfcmVjdl9kbGVuZ3RoID0gREVGQVVMVF9NQVhfUkVDVl9EQVRBX1NFR01FTlRfTEVOR1RIOwogCi0JLyogaW5pdGlhbGl6ZSBnZW5lcmFsIHhtaXQgUERVIGNvbW1hbmRzIHF1ZXVlICovCi0JY29ubi0+eG1pdHF1ZXVlID0ga2ZpZm9fYWxsb2Moc2Vzc2lvbi0+Y21kc19tYXggKiBzaXplb2Yodm9pZCopLAotCQkJCQlHRlBfS0VSTkVMLCBOVUxMKTsKLQlpZiAoY29ubi0+eG1pdHF1ZXVlID09IEVSUl9QVFIoLUVOT01FTSkpCi0JCWdvdG8geG1pdHF1ZXVlX2FsbG9jX2ZhaWw7CisJdGNwX2Nvbm4gPSBremFsbG9jKHNpemVvZigqdGNwX2Nvbm4pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXRjcF9jb25uKQorCQlnb3RvIHRjcF9jb25uX2FsbG9jX2ZhaWw7CiAKLQkvKiBpbml0aWFsaXplIHdyaXRlIHJlc3BvbnNlIFBEVSBjb21tYW5kcyBxdWV1ZSAqLwotCWNvbm4tPndyaXRlcXVldWUgPSBrZmlmb19hbGxvYyhzZXNzaW9uLT5jbWRzX21heCAqIHNpemVvZih2b2lkKiksCi0JCQkJCUdGUF9LRVJORUwsIE5VTEwpOwotCWlmIChjb25uLT53cml0ZXF1ZXVlID09IEVSUl9QVFIoLUVOT01FTSkpCi0JCWdvdG8gd3JpdGVxdWV1ZV9hbGxvY19mYWlsOwotCi0JLyogaW5pdGlhbGl6ZSBnZW5lcmFsIGltbWVkaWF0ZSAmIG5vbi1pbW1lZGlhdGUgUERVIGNvbW1hbmRzIHF1ZXVlICovCi0JY29ubi0+aW1tcXVldWUgPSBrZmlmb19hbGxvYyhzZXNzaW9uLT5tZ210cG9vbF9tYXggKiBzaXplb2Yodm9pZCopLAotCQkJICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsIE5VTEwpOwotCWlmIChjb25uLT5pbW1xdWV1ZSA9PSBFUlJfUFRSKC1FTk9NRU0pKQotCQlnb3RvIGltbXF1ZXVlX2FsbG9jX2ZhaWw7Ci0KLQljb25uLT5tZ210cXVldWUgPSBrZmlmb19hbGxvYyhzZXNzaW9uLT5tZ210cG9vbF9tYXggKiBzaXplb2Yodm9pZCopLAotCQkJICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsIE5VTEwpOwotCWlmIChjb25uLT5tZ210cXVldWUgPT0gRVJSX1BUUigtRU5PTUVNKSkKLQkJZ290byBtZ210cXVldWVfYWxsb2NfZmFpbDsKLQotCUlOSVRfV09SSygmY29ubi0+eG1pdHdvcmssIGlzY3NpX3htaXR3b3JrZXIsIGNvbm4pOwotCi0JLyogYWxsb2NhdGUgbG9naW5fbXRhc2sgdXNlZCBmb3IgdGhlIGxvZ2luL3RleHQgc2VxdWVuY2VzICovCi0Jc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQlpZiAoIV9fa2ZpZm9fZ2V0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikmY29ubi0+bG9naW5fbXRhc2ssCi0JCQkgc2l6ZW9mKHZvaWQqKSkpIHsKLQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQlnb3RvIGxvZ2luX210YXNrX2FsbG9jX2ZhaWw7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwljb25uLT5kZF9kYXRhID0gdGNwX2Nvbm47CisJdGNwX2Nvbm4tPmlzY3NpX2Nvbm4gPSBjb25uOworCXRjcF9jb25uLT5pbl9wcm9ncmVzcyA9IElOX1BST0dSRVNTX1dBSVRfSEVBREVSOworCS8qIGluaXRpYWwgb3BlcmF0aW9uYWwgcGFyYW1ldGVycyAqLworCXRjcF9jb25uLT5oZHJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKTsKKwl0Y3BfY29ubi0+ZGF0YV9zaXplID0gREVGQVVMVF9NQVhfUkVDVl9EQVRBX1NFR01FTlRfTEVOR1RIOwogCiAJLyogYWxsb2NhdGUgaW5pdGlhbCBQRFUgcmVjZWl2ZSBwbGFjZSBob2xkZXIgKi8KLQlpZiAoY29ubi0+ZGF0YV9zaXplIDw9IFBBR0VfU0laRSkKLQkJY29ubi0+ZGF0YSA9IGttYWxsb2MoY29ubi0+ZGF0YV9zaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAodGNwX2Nvbm4tPmRhdGFfc2l6ZSA8PSBQQUdFX1NJWkUpCisJCXRjcF9jb25uLT5kYXRhID0ga21hbGxvYyh0Y3BfY29ubi0+ZGF0YV9zaXplLCBHRlBfS0VSTkVMKTsKIAllbHNlCi0JCWNvbm4tPmRhdGEgPSAodm9pZCopX19nZXRfZnJlZV9wYWdlcyhHRlBfS0VSTkVMLAotCQkJCQlnZXRfb3JkZXIoY29ubi0+ZGF0YV9zaXplKSk7Ci0JaWYgKCFjb25uLT5kYXRhKQorCQl0Y3BfY29ubi0+ZGF0YSA9ICh2b2lkKilfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsCisJCQkJCWdldF9vcmRlcih0Y3BfY29ubi0+ZGF0YV9zaXplKSk7CisJaWYgKCF0Y3BfY29ubi0+ZGF0YSkKIAkJZ290byBtYXhfcmVjdl9kbGVuZ2h0X2FsbG9jX2ZhaWw7CiAKLQlpbml0X3RpbWVyKCZjb25uLT50bWFib3J0X3RpbWVyKTsKLQltdXRleF9pbml0KCZjb25uLT54bWl0bXV0ZXgpOwotCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNvbm4tPmVod2FpdCk7Ci0KIAlyZXR1cm4gY2xzX2Nvbm47CiAKIG1heF9yZWN2X2RsZW5naHRfYWxsb2NfZmFpbDoKLQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLCAodm9pZCopJmNvbm4tPmxvZ2luX210YXNrLAotCQkgICAgc2l6ZW9mKHZvaWQqKSk7Ci0Jc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotbG9naW5fbXRhc2tfYWxsb2NfZmFpbDoKLQlrZmlmb19mcmVlKGNvbm4tPm1nbXRxdWV1ZSk7Ci1tZ210cXVldWVfYWxsb2NfZmFpbDoKLQlrZmlmb19mcmVlKGNvbm4tPmltbXF1ZXVlKTsKLWltbXF1ZXVlX2FsbG9jX2ZhaWw6Ci0Ja2ZpZm9fZnJlZShjb25uLT53cml0ZXF1ZXVlKTsKLXdyaXRlcXVldWVfYWxsb2NfZmFpbDoKLQlrZmlmb19mcmVlKGNvbm4tPnhtaXRxdWV1ZSk7Ci14bWl0cXVldWVfYWxsb2NfZmFpbDoKLQlpc2NzaV9kZXN0cm95X2Nvbm4oY2xzX2Nvbm4pOworCWtmcmVlKHRjcF9jb25uKTsKK3RjcF9jb25uX2FsbG9jX2ZhaWw6CisJaXNjc2lfY29ubl90ZWFyZG93bihjbHNfY29ubik7CiAJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkCi1pc2NzaV9jb25uX2Rlc3Ryb3koc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubikKK2lzY3NpX3RjcF9jb25uX2Rlc3Ryb3koc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubikKIHsKIAlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOwotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCWludCBkaWdlc3QgPSAwOwogCi0JbXV0ZXhfbG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQlzZXRfYml0KFNVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF90eCk7Ci0JaWYgKGNvbm4tPmNfc3RhZ2UgPT0gSVNDU0lfQ09OTl9JTklUSUFMX1NUQUdFICYmIGNvbm4tPnNvY2spIHsKLQkJc3RydWN0IHNvY2sgKnNrID0gY29ubi0+c29jay0+c2s7CisJaWYgKGNvbm4tPmhkcmRnc3RfZW4gfHwgY29ubi0+ZGF0YWRnc3RfZW4pCisJCWRpZ2VzdCA9IDE7CiAKLQkJLyoKLQkJICogY29ubl9zdGFydCgpIGhhcyBuZXZlciBiZWVuIGNhbGxlZCEKLQkJICogbmVlZCB0byBjbGVhbnVwIHRoZSBzb2NrZXQuCi0JCSAqLwotCQl3cml0ZV9sb2NrX2JoKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7Ci0JCXNldF9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3J4KTsKLQkJd3JpdGVfdW5sb2NrX2JoKCZzay0+c2tfY2FsbGJhY2tfbG9jayk7CisJaXNjc2lfY29ubl90ZWFyZG93bihjbHNfY29ubik7CiAKLQkJc29ja19ob2xkKGNvbm4tPnNvY2stPnNrKTsKLQkJaXNjc2lfY29ubl9yZXN0b3JlX2NhbGxiYWNrcyhjb25uKTsKLQkJc29ja19wdXQoY29ubi0+c29jay0+c2spOwotCQlzb2NrX3JlbGVhc2UoY29ubi0+c29jayk7Ci0JCWNvbm4tPnNvY2sgPSBOVUxMOwotCX0KLQotCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JY29ubi0+Y19zdGFnZSA9IElTQ1NJX0NPTk5fQ0xFQU5VUF9XQUlUOwotCWlmIChzZXNzaW9uLT5sZWFkY29ubiA9PSBjb25uKSB7Ci0JCS8qCi0JCSAqIGxlYWRpbmcgY29ubmVjdGlvbj8gdGhlbiBnaXZlIHVwIG9uIHJlY292ZXJ5LgotCQkgKi8KLQkJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9URVJNSU5BVEU7Ci0JCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQotCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQotCS8qCi0JICogQmxvY2sgdW50aWwgYWxsIGluLXByb2dyZXNzIGNvbW1hbmRzIGZvciB0aGlzIGNvbm5lY3Rpb24KLQkgKiB0aW1lIG91dCBvciBmYWlsLgotCSAqLwotCWZvciAoOzspIHsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoc2Vzc2lvbi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7Ci0JCWlmICghc2Vzc2lvbi0+aG9zdC0+aG9zdF9idXN5KSB7IC8qIE9LIGZvciBFUkwgPT0gMCAqLwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzZXNzaW9uLT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKLQkJCWJyZWFrOwotCQl9Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2Vzc2lvbi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7Ci0JCW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDUwMCk7Ci0JCXByaW50aygiY29ubl9kZXN0cm95KCk6IGhvc3RfYnVzeSAlZCBob3N0X2ZhaWxlZCAlZFxuIiwKLQkJCXNlc3Npb24tPmhvc3QtPmhvc3RfYnVzeSwgc2Vzc2lvbi0+aG9zdC0+aG9zdF9mYWlsZWQpOwotCQkvKgotCQkgKiBmb3JjZSBlaF9hYm9ydCgpIHRvIHVuYmxvY2sKLQkJICovCi0JCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7Ci0JfQotCi0JLyogbm93IGZyZWUgY3J5cHRvICovCi0JaWYgKGNvbm4tPmhkcmRnc3RfZW4gfHwgY29ubi0+ZGF0YWRnc3RfZW4pIHsKLQkJaWYgKGNvbm4tPnR4X3RmbSkKLQkJCWNyeXB0b19mcmVlX3RmbShjb25uLT50eF90Zm0pOwotCQlpZiAoY29ubi0+cnhfdGZtKQotCQkJY3J5cHRvX2ZyZWVfdGZtKGNvbm4tPnJ4X3RmbSk7Ci0JCWlmIChjb25uLT5kYXRhX3R4X3RmbSkKLQkJCWNyeXB0b19mcmVlX3RmbShjb25uLT5kYXRhX3R4X3RmbSk7Ci0JCWlmIChjb25uLT5kYXRhX3J4X3RmbSkKLQkJCWNyeXB0b19mcmVlX3RmbShjb25uLT5kYXRhX3J4X3RmbSk7CisJLyogbm93IGZyZWUgdGNwX2Nvbm4gKi8KKwlpZiAoZGlnZXN0KSB7CisJCWlmICh0Y3BfY29ubi0+dHhfdGZtKQorCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT50eF90Zm0pOworCQlpZiAodGNwX2Nvbm4tPnJ4X3RmbSkKKwkJCWNyeXB0b19mcmVlX3RmbSh0Y3BfY29ubi0+cnhfdGZtKTsKKwkJaWYgKHRjcF9jb25uLT5kYXRhX3R4X3RmbSkKKwkJCWNyeXB0b19mcmVlX3RmbSh0Y3BfY29ubi0+ZGF0YV90eF90Zm0pOworCQlpZiAodGNwX2Nvbm4tPmRhdGFfcnhfdGZtKQorCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT5kYXRhX3J4X3RmbSk7CiAJfQogCiAJLyogZnJlZSBjb25uLT5kYXRhLCBzaXplID0gTWF4UmVjdkRhdGFTZWdtZW50TGVuZ3RoICovCi0JaWYgKGNvbm4tPmRhdGFfc2l6ZSA8PSBQQUdFX1NJWkUpCi0JCWtmcmVlKGNvbm4tPmRhdGEpOworCWlmICh0Y3BfY29ubi0+ZGF0YV9zaXplIDw9IFBBR0VfU0laRSkKKwkJa2ZyZWUodGNwX2Nvbm4tPmRhdGEpOwogCWVsc2UKLQkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyljb25uLT5kYXRhLAotCQkJCQlnZXRfb3JkZXIoY29ubi0+ZGF0YV9zaXplKSk7Ci0KLQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLCAodm9pZCopJmNvbm4tPmxvZ2luX210YXNrLAotCQkgICAgc2l6ZW9mKHZvaWQqKSk7Ci0JbGlzdF9kZWwoJmNvbm4tPml0ZW0pOwotCWlmIChsaXN0X2VtcHR5KCZzZXNzaW9uLT5jb25uZWN0aW9ucykpCi0JCXNlc3Npb24tPmxlYWRjb25uID0gTlVMTDsKLQlpZiAoc2Vzc2lvbi0+bGVhZGNvbm4gJiYgc2Vzc2lvbi0+bGVhZGNvbm4gPT0gY29ubikKLQkJc2Vzc2lvbi0+bGVhZGNvbm4gPSBjb250YWluZXJfb2Yoc2Vzc2lvbi0+Y29ubmVjdGlvbnMubmV4dCwKLQkJCXN0cnVjdCBpc2NzaV9jb25uLCBpdGVtKTsKLQotCWlmIChzZXNzaW9uLT5sZWFkY29ubiA9PSBOVUxMKQotCQkvKiBub25lIGNvbm5lY3Rpb25zIGV4aXRzLi4gcmVzZXQgc2VxdWVuY2luZyAqLwotCQlzZXNzaW9uLT5jbWRzbiA9IHNlc3Npb24tPm1heF9jbWRzbiA9IHNlc3Npb24tPmV4cF9jbWRzbiA9IDE7Ci0Jc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCi0Ja2ZpZm9fZnJlZShjb25uLT54bWl0cXVldWUpOwotCWtmaWZvX2ZyZWUoY29ubi0+d3JpdGVxdWV1ZSk7Ci0Ja2ZpZm9fZnJlZShjb25uLT5pbW1xdWV1ZSk7Ci0Ja2ZpZm9fZnJlZShjb25uLT5tZ210cXVldWUpOwotCi0JaXNjc2lfZGVzdHJveV9jb25uKGNsc19jb25uKTsKKwkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl0Y3BfY29ubi0+ZGF0YSwKKwkJCSAgIGdldF9vcmRlcih0Y3BfY29ubi0+ZGF0YV9zaXplKSk7CisJa2ZyZWUodGNwX2Nvbm4pOwogfQogCiBzdGF0aWMgaW50Ci1pc2NzaV9jb25uX2JpbmQoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbiwKLQkJc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubiwgdWludDMyX3QgdHJhbnNwb3J0X2ZkLAotCQlpbnQgaXNfbGVhZGluZykKK2lzY3NpX3RjcF9jb25uX2JpbmQoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbiwKKwkJICAgIHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sIHVpbnQ2NF90IHRyYW5zcG9ydF9lcGgsCisJCSAgICBpbnQgaXNfbGVhZGluZykKIHsKLQlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGlzY3NpX3Nlc3Npb25fdG9fc2hvc3QoY2xzX3Nlc3Npb24pOwotCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gaXNjc2lfaG9zdGRhdGEoc2hvc3QtPmhvc3RkYXRhKTsKLQlzdHJ1Y3QgaXNjc2lfY29ubiAqdG1wID0gRVJSX1BUUigtRUVYSVNUKSwgKmNvbm4gPSBjbHNfY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOwogCXN0cnVjdCBzb2NrICpzazsKIAlzdHJ1Y3Qgc29ja2V0ICpzb2NrOwogCWludCBlcnI7CiAKIAkvKiBsb29rdXAgZm9yIGV4aXN0aW5nIHNvY2tldCAqLwotCXNvY2sgPSBzb2NrZmRfbG9va3VwKHRyYW5zcG9ydF9mZCwgJmVycik7CisJc29jayA9IHNvY2tmZF9sb29rdXAoKGludCl0cmFuc3BvcnRfZXBoLCAmZXJyKTsKIAlpZiAoIXNvY2spIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaV90Y3A6IHNvY2tmZF9sb29rdXAgZmFpbGVkICVkXG4iLCBlcnIpOwogCQlyZXR1cm4gLUVFWElTVDsKIAl9CiAKLQkvKiBsb29rdXAgZm9yIGV4aXN0aW5nIGNvbm5lY3Rpb24gKi8KLQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmc2Vzc2lvbi0+Y29ubmVjdGlvbnMsIGl0ZW0pIHsKLQkJaWYgKHRtcCA9PSBjb25uKSB7Ci0JCQlpZiAoY29ubi0+Y19zdGFnZSAhPSBJU0NTSV9DT05OX1NUT1BQRUQgfHwKLQkJCSAgICBjb25uLT5zdG9wX3N0YWdlID09IFNUT1BfQ09OTl9URVJNKSB7Ci0JCQkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaV90Y3A6IGNhbid0IGJpbmQgIgotCQkJCSAgICAgICAibm9uLXN0b3BwZWQgY29ubmVjdGlvbiAoJWQ6JWQpXG4iLAotCQkJCSAgICAgICBjb25uLT5jX3N0YWdlLCBjb25uLT5zdG9wX3N0YWdlKTsKLQkJCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCQkJcmV0dXJuIC1FSU87Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQotCX0KLQlpZiAodG1wICE9IGNvbm4pIHsKLQkJLyogYmluZCBuZXcgaVNDU0kgY29ubmVjdGlvbiB0byBzZXNzaW9uICovCi0JCWNvbm4tPnNlc3Npb24gPSBzZXNzaW9uOworCWVyciA9IGlzY3NpX2Nvbm5fYmluZChjbHNfc2Vzc2lvbiwgY2xzX2Nvbm4sIGlzX2xlYWRpbmcpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CiAKLQkJbGlzdF9hZGQoJmNvbm4tPml0ZW0sICZzZXNzaW9uLT5jb25uZWN0aW9ucyk7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwkvKiBiaW5kIGlTQ1NJIGNvbm5lY3Rpb24gYW5kIHNvY2tldCAqLworCXRjcF9jb25uLT5zb2NrID0gc29jazsKIAotCWlmIChjb25uLT5zdG9wX3N0YWdlICE9IFNUT1BfQ09OTl9TVVNQRU5EKSB7Ci0JCS8qIGJpbmQgaVNDU0kgY29ubmVjdGlvbiBhbmQgc29ja2V0ICovCi0JCWNvbm4tPnNvY2sgPSBzb2NrOworCS8qIHNldHVwIFNvY2tldCBwYXJhbWV0ZXJzICovCisJc2sgPSBzb2NrLT5zazsKKwlzay0+c2tfcmV1c2UgPSAxOworCXNrLT5za19zbmR0aW1lbyA9IDE1ICogSFo7IC8qIEZJWE1FOiBtYWtlIGl0IGNvbmZpZ3VyYWJsZSAqLworCXNrLT5za19hbGxvY2F0aW9uID0gR0ZQX0FUT01JQzsKIAotCQkvKiBzZXR1cCBTb2NrZXQgcGFyYW1ldGVycyAqLwotCQlzayA9IHNvY2stPnNrOwotCQlzay0+c2tfcmV1c2UgPSAxOwotCQlzay0+c2tfc25kdGltZW8gPSAxNSAqIEhaOyAvKiBGSVhNRTogbWFrZSBpdCBjb25maWd1cmFibGUgKi8KLQkJc2stPnNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDOwotCi0JCS8qIEZJWE1FOiBkaXNhYmxlIE5hZ2xlJ3MgYWxnb3JpdGhtICovCi0KLQkJLyoKLQkJICogSW50ZXJjZXB0IFRDUCBjYWxsYmFja3MgZm9yIHNlbmRmaWxlIGxpa2UgcmVjZWl2ZQotCQkgKiBwcm9jZXNzaW5nLgotCQkgKi8KLQkJaXNjc2lfY29ubl9zZXRfY2FsbGJhY2tzKGNvbm4pOwotCi0JCWNvbm4tPnNlbmRwYWdlID0gY29ubi0+c29jay0+b3BzLT5zZW5kcGFnZTsKLQotCQkvKgotCQkgKiBzZXQgcmVjZWl2ZSBzdGF0ZSBtYWNoaW5lIGludG8gaW5pdGlhbCBzdGF0ZQotCQkgKi8KLQkJY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUjsKLQl9Ci0KLQlpZiAoaXNfbGVhZGluZykKLQkJc2Vzc2lvbi0+bGVhZGNvbm4gPSBjb25uOworCS8qIEZJWE1FOiBkaXNhYmxlIE5hZ2xlJ3MgYWxnb3JpdGhtICovCiAKIAkvKgotCSAqIFVuYmxvY2sgeG1pdHdvcmtlcigpLCBMb2dpbiBQaGFzZSB3aWxsIHBhc3MgdGhyb3VnaC4KKwkgKiBJbnRlcmNlcHQgVENQIGNhbGxiYWNrcyBmb3Igc2VuZGZpbGUgbGlrZSByZWNlaXZlCisJICogcHJvY2Vzc2luZy4KIAkgKi8KLQljbGVhcl9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3J4KTsKLQljbGVhcl9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3R4KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1pc2NzaV9jb25uX3N0YXJ0KHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4pCi17Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjbHNfY29ubi0+ZGRfZGF0YTsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0Jc3RydWN0IHNvY2sgKnNrOwotCi0JLyogRkYgcGhhc2Ugd2FybWluZyB1cC4uLiAqLwotCi0JaWYgKHNlc3Npb24gPT0gTlVMTCkgewotCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogY2FuJ3Qgc3RhcnQgdW5ib3VuZCBjb25uZWN0aW9uXG4iKTsKLQkJcmV0dXJuIC1FUEVSTTsKLQl9Ci0KLQlzayA9IGNvbm4tPnNvY2stPnNrOwotCi0Jd3JpdGVfbG9ja19iaCgmc2stPnNrX2NhbGxiYWNrX2xvY2spOwotCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JY29ubi0+Y19zdGFnZSA9IElTQ1NJX0NPTk5fU1RBUlRFRDsKLQlzZXNzaW9uLT5zdGF0ZSA9IElTQ1NJX1NUQVRFX0xPR0dFRF9JTjsKLQotCXN3aXRjaChjb25uLT5zdG9wX3N0YWdlKSB7Ci0JY2FzZSBTVE9QX0NPTk5fUkVDT1ZFUjoKLQkJLyoKLQkJICogdW5ibG9jayBlaF9hYm9ydCgpIGlmIGl0IGlzIGJsb2NrZWQuIHJlLXRyeSBhbGwKLQkJICogY29tbWFuZHMgYWZ0ZXIgc3VjY2Vzc2Z1bCByZWNvdmVyeQotCQkgKi8KLQkJc2Vzc2lvbi0+Y29ubl9jbnQrKzsKLQkJY29ubi0+c3RvcF9zdGFnZSA9IDA7Ci0JCWNvbm4tPnRtYWJvcnRfc3RhdGUgPSBUTUFCT1JUX0lOSVRJQUw7Ci0JCXNlc3Npb24tPmFnZSsrOwotCQl3YWtlX3VwKCZjb25uLT5laHdhaXQpOwotCQlicmVhazsKLQljYXNlIFNUT1BfQ09OTl9URVJNOgotCQlzZXNzaW9uLT5jb25uX2NudCsrOwotCQljb25uLT5zdG9wX3N0YWdlID0gMDsKLQkJYnJlYWs7Ci0JY2FzZSBTVE9QX0NPTk5fU1VTUEVORDoKLQkJY29ubi0+c3RvcF9zdGFnZSA9IDA7Ci0JCWNsZWFyX2JpdChTVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfcngpOwotCQljbGVhcl9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3R4KTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQl3cml0ZV91bmxvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKKwljb25uLT5yZWN2X2xvY2sgPSAmc2stPnNrX2NhbGxiYWNrX2xvY2s7CisJaXNjc2lfY29ubl9zZXRfY2FsbGJhY2tzKGNvbm4pOworCXRjcF9jb25uLT5zZW5kcGFnZSA9IHRjcF9jb25uLT5zb2NrLT5vcHMtPnNlbmRwYWdlOworCS8qCisJICogc2V0IHJlY2VpdmUgc3RhdGUgbWFjaGluZSBpbnRvIGluaXRpYWwgc3RhdGUKKwkgKi8KKwl0Y3BfY29ubi0+aW5fcHJvZ3Jlc3MgPSBJTl9QUk9HUkVTU19XQUlUX0hFQURFUjsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZAotaXNjc2lfY29ubl9zdG9wKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sIGludCBmbGFnKQoraXNjc2lfdGNwX2NsZWFudXBfY3Rhc2soc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCiB7Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjbHNfY29ubi0+ZGRfZGF0YTsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0Jc3RydWN0IHNvY2sgKnNrOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGlzY3NpX3RjcF9jbWRfdGFzayAqdGNwX2N0YXNrID0gY3Rhc2stPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX3IydF9pbmZvICpyMnQ7CiAKLQlCVUdfT04oIWNvbm4tPnNvY2spOwotCXNrID0gY29ubi0+c29jay0+c2s7Ci0Jd3JpdGVfbG9ja19iaCgmc2stPnNrX2NhbGxiYWNrX2xvY2spOwotCXNldF9iaXQoU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3J4KTsKLQl3cml0ZV91bmxvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKKwkvKiBmbHVzaCBjdGFzaydzIHIydCBxdWV1ZXMgKi8KKwl3aGlsZSAoX19rZmlmb19nZXQodGNwX2N0YXNrLT5yMnRxdWV1ZSwgKHZvaWQqKSZyMnQsIHNpemVvZih2b2lkKikpKQorCQlfX2tmaWZvX3B1dCh0Y3BfY3Rhc2stPnIydHBvb2wucXVldWUsICh2b2lkKikmcjJ0LAorCQkJICAgIHNpemVvZih2b2lkKikpOwogCi0JbXV0ZXhfbG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKHNlc3Npb24tPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwotCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7Ci0JY29ubi0+c3RvcF9zdGFnZSA9IGZsYWc7Ci0JY29ubi0+Y19zdGFnZSA9IElTQ1NJX0NPTk5fU1RPUFBFRDsKLQlzZXRfYml0KFNVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF90eCk7Ci0KLQlpZiAoZmxhZyAhPSBTVE9QX0NPTk5fU1VTUEVORCkKLQkJc2Vzc2lvbi0+Y29ubl9jbnQtLTsKLQotCWlmIChzZXNzaW9uLT5jb25uX2NudCA9PSAwIHx8IHNlc3Npb24tPmxlYWRjb25uID09IGNvbm4pCi0JCXNlc3Npb24tPnN0YXRlID0gSVNDU0lfU1RBVEVfRkFJTEVEOwotCi0Jc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2Vzc2lvbi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7Ci0KLQlpZiAoZmxhZyA9PSBTVE9QX0NPTk5fVEVSTSB8fCBmbGFnID09IFNUT1BfQ09OTl9SRUNPVkVSKSB7Ci0JCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2s7Ci0JCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrOwotCi0JCS8qCi0JCSAqIFNvY2tldCBtdXN0IGdvIG5vdy4KLQkJICovCi0JCXNvY2tfaG9sZChjb25uLT5zb2NrLT5zayk7Ci0JCWlzY3NpX2Nvbm5fcmVzdG9yZV9jYWxsYmFja3MoY29ubik7Ci0JCXNvY2tfcHV0KGNvbm4tPnNvY2stPnNrKTsKLQotCQkvKgotCQkgKiBmbHVzaCB4bWl0IHF1ZXVlcy4KLQkJICovCi0JCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCXdoaWxlIChfX2tmaWZvX2dldChjb25uLT53cml0ZXF1ZXVlLCAodm9pZCopJmN0YXNrLAotCQkJICAgIHNpemVvZih2b2lkKikpIHx8Ci0JCQlfX2tmaWZvX2dldChjb25uLT54bWl0cXVldWUsICh2b2lkKikmY3Rhc2ssCi0JCQkgICAgc2l6ZW9mKHZvaWQqKSkpIHsKLQkJCXN0cnVjdCBpc2NzaV9yMnRfaW5mbyAqcjJ0OwotCi0JCQkvKgotCQkJICogZmx1c2ggY3Rhc2sncyByMnQgcXVldWVzCi0JCQkgKi8KLQkJCXdoaWxlIChfX2tmaWZvX2dldChjdGFzay0+cjJ0cXVldWUsICh2b2lkKikmcjJ0LAotCQkJCXNpemVvZih2b2lkKikpKQotCQkJCV9fa2ZpZm9fcHV0KGN0YXNrLT5yMnRwb29sLnF1ZXVlLCAodm9pZCopJnIydCwKLQkJCQkJICAgIHNpemVvZih2b2lkKikpOwotCi0JCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCQlsb2NhbF9iaF9kaXNhYmxlKCk7Ci0JCQlpc2NzaV9jdGFza19jbGVhbnVwKGNvbm4sIGN0YXNrKTsKLQkJCWxvY2FsX2JoX2VuYWJsZSgpOwotCQkJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJfQotCQljb25uLT5jdGFzayA9IE5VTEw7Ci0JCXdoaWxlIChfX2tmaWZvX2dldChjb25uLT5pbW1xdWV1ZSwgKHZvaWQqKSZtdGFzaywKLQkJCSAgIHNpemVvZih2b2lkKikpIHx8Ci0JCQlfX2tmaWZvX2dldChjb25uLT5tZ210cXVldWUsICh2b2lkKikmbXRhc2ssCi0JCQkgICBzaXplb2Yodm9pZCopKSkgewotCQkJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsCi0JCQkJICAgICh2b2lkKikmbXRhc2ssIHNpemVvZih2b2lkKikpOwotCQl9Ci0JCWNvbm4tPm10YXNrID0gTlVMTDsKLQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCi0JCS8qCi0JCSAqIHJlbGVhc2Ugc29ja2V0IG9ubHkgYWZ0ZXIgd2Ugc3RvcHBlZCBkYXRhX3htaXQoKQotCQkgKiBhY3Rpdml0eSBhbmQgZmx1c2hlZCBhbGwgb3V0c3RhbmRpbmdzCi0JCSAqLwotCQlzb2NrX3JlbGVhc2UoY29ubi0+c29jayk7Ci0JCWNvbm4tPnNvY2sgPSBOVUxMOwotCi0JCS8qCi0JCSAqIGZvciBjb25uZWN0aW9uIGxldmVsIHJlY292ZXJ5IHdlIHNob3VsZCBub3QgY2FsY3VsYXRlCi0JCSAqIGhlYWRlciBkaWdlc3QuIGNvbm4tPmhkcl9zaXplIHVzZWQgZm9yIG9wdGltaXphdGlvbgotCQkgKiBpbiBoZHJfZXh0cmFjdCgpIGFuZCB3aWxsIGJlIHJlLW5lZ290aWF0ZWQgYXQKLQkJICogc2V0X3BhcmFtKCkgdGltZS4KLQkJICovCi0JCWlmIChmbGFnID09IFNUT1BfQ09OTl9SRUNPVkVSKSB7Ci0JCQljb25uLT5oZHJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKTsKLQkJCWNvbm4tPmhkcmRnc3RfZW4gPSAwOwotCQkJY29ubi0+ZGF0YWRnc3RfZW4gPSAwOwotCQl9Ci0JfQotCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKKwlfX2lzY3NpX2N0YXNrX2NsZWFudXAoY29ubiwgY3Rhc2spOwogfQogCi1zdGF0aWMgaW50Ci1pc2NzaV9jb25uX3NlbmRfZ2VuZXJpYyhzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAotCQkJY2hhciAqZGF0YSwgdWludDMyX3QgZGF0YV9zaXplKQorc3RhdGljIHZvaWQKK2lzY3NpX3RjcF9zdXNwZW5kX2Nvbm5fcngoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCiB7Ci0Jc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCXN0cnVjdCBpc2NzaV9ub3BvdXQgKm5vcCA9IChzdHJ1Y3QgaXNjc2lfbm9wb3V0ICopaGRyOwotCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCXN0cnVjdCBzb2NrICpzazsKIAotCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JaWYgKHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX1RFUk1JTkFURSkgewotCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCXJldHVybiAtRVBFUk07Ci0JfQotCWlmIChoZHItPm9wY29kZSA9PSAoSVNDU0lfT1BfTE9HSU4gfCBJU0NTSV9PUF9JTU1FRElBVEUpIHx8Ci0JICAgIGhkci0+b3Bjb2RlID09IChJU0NTSV9PUF9URVhUIHwgSVNDU0lfT1BfSU1NRURJQVRFKSkKLQkJLyoKLQkJICogTG9naW4gYW5kIFRleHQgYXJlIHNlbnQgc2VyaWFsbHksIGluCi0JCSAqIHJlcXVlc3QtZm9sbG93ZWQtYnktcmVzcG9uc2Ugc2VxdWVuY2UuCi0JCSAqIFNhbWUgbXRhc2sgY2FuIGJlIHVzZWQuIFNhbWUgSVRUIG11c3QgYmUgdXNlZC4KLQkJICogTm90ZSB0aGF0IGxvZ2luX210YXNrIGlzIHByZWFsbG9jYXRlZCBhdCBjb25uX2NyZWF0ZSgpLgotCQkgKi8KLQkJbXRhc2sgPSBjb25uLT5sb2dpbl9tdGFzazsKLQllbHNlIHsKLQkgICAgICAgIEJVR19PTihjb25uLT5jX3N0YWdlID09IElTQ1NJX0NPTk5fSU5JVElBTF9TVEFHRSk7Ci0JICAgICAgICBCVUdfT04oY29ubi0+Y19zdGFnZSA9PSBJU0NTSV9DT05OX1NUT1BQRUQpOworCWlmICghdGNwX2Nvbm4tPnNvY2spCisJCXJldHVybjsKIAotCQlpZiAoIV9fa2ZpZm9fZ2V0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAotCQkJCSAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKSkgewotCQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQkJcmV0dXJuIC1FTk9TUEM7Ci0JCX0KLQl9CisJc2sgPSB0Y3BfY29ubi0+c29jay0+c2s7CisJd3JpdGVfbG9ja19iaCgmc2stPnNrX2NhbGxiYWNrX2xvY2spOworCXNldF9iaXQoSVNDU0lfU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3J4KTsKKwl3cml0ZV91bmxvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKK30KIAotCS8qCi0JICogcHJlLWZvcm1hdCBDbWRTTiBhbmQgRXhwU3RhdFNOIGZvciBvdXRnb2luZyBQRFUuCi0JICovCi0JaWYgKGhkci0+aXR0ICE9IGNwdV90b19iZTMyKElTQ1NJX1JFU0VSVkVEX1RBRykpIHsKLQkJaGRyLT5pdHQgPSBtdGFzay0+aXR0IHwgKGNvbm4tPmlkIDw8IENJRF9TSElGVCkgfAotCQkJICAgKHNlc3Npb24tPmFnZSA8PCBBR0VfU0hJRlQpOwotCQlub3AtPmNtZHNuID0gY3B1X3RvX2JlMzIoc2Vzc2lvbi0+Y21kc24pOwotCQlpZiAoY29ubi0+Y19zdGFnZSA9PSBJU0NTSV9DT05OX1NUQVJURUQgJiYKLQkJICAgICEoaGRyLT5vcGNvZGUgJiBJU0NTSV9PUF9JTU1FRElBVEUpKQotCQkJc2Vzc2lvbi0+Y21kc24rKzsKLQl9IGVsc2UKLQkJLyogZG8gbm90IGFkdmFuY2UgQ21kU04gKi8KLQkJbm9wLT5jbWRzbiA9IGNwdV90b19iZTMyKHNlc3Npb24tPmNtZHNuKTsKK3N0YXRpYyB2b2lkCitpc2NzaV90Y3BfdGVybWluYXRlX2Nvbm4oc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCit7CisJc3RydWN0IGlzY3NpX3RjcF9jb25uICp0Y3BfY29ubiA9IGNvbm4tPmRkX2RhdGE7CiAKLQlub3AtPmV4cF9zdGF0c24gPSBjcHVfdG9fYmUzMihjb25uLT5leHBfc3RhdHNuKTsKKwlpZiAoIXRjcF9jb25uLT5zb2NrKQorCQlyZXR1cm47CiAKLQltZW1jcHkoJm10YXNrLT5oZHIsIGhkciwgc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpKTsKKwlzb2NrX2hvbGQodGNwX2Nvbm4tPnNvY2stPnNrKTsKKwlpc2NzaV9jb25uX3Jlc3RvcmVfY2FsbGJhY2tzKGNvbm4pOworCXNvY2tfcHV0KHRjcF9jb25uLT5zb2NrLT5zayk7CiAKLQlpc2NzaV9idWZfaW5pdF92aXJ0KCZtdGFzay0+aGVhZGJ1ZiwgKGNoYXIqKSZtdGFzay0+aGRyLAotCQkJCSAgICBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcikpOworCXNvY2tfcmVsZWFzZSh0Y3BfY29ubi0+c29jayk7CisJdGNwX2Nvbm4tPnNvY2sgPSBOVUxMOworCWNvbm4tPnJlY3ZfbG9jayA9IE5VTEw7Cit9CiAKLQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisvKiBjYWxsZWQgd2l0aCBob3N0IGxvY2sgKi8KK3N0YXRpYyB2b2lkCitpc2NzaV90Y3BfbWdtdF9pbml0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzaywKKwkJICAgIGNoYXIgKmRhdGEsIHVpbnQzMl90IGRhdGFfc2l6ZSkKK3sKKwlzdHJ1Y3QgaXNjc2lfdGNwX21nbXRfdGFzayAqdGNwX210YXNrID0gbXRhc2stPmRkX2RhdGE7CiAKLQlpZiAoZGF0YV9zaXplKSB7Ci0JCW1lbWNweShtdGFzay0+ZGF0YSwgZGF0YSwgZGF0YV9zaXplKTsKLQkJbXRhc2stPmRhdGFfY291bnQgPSBkYXRhX3NpemU7Ci0JfSBlbHNlCi0JCW10YXNrLT5kYXRhX2NvdW50ID0gMDsKKwlpc2NzaV9idWZfaW5pdF9pb3YoJnRjcF9tdGFzay0+aGVhZGJ1ZiwgKGNoYXIqKW10YXNrLT5oZHIsCisJCQkgICBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcikpOworCXRjcF9tdGFzay0+eG1zdGF0ZSA9IFhNU1RBVEVfSU1NX0hEUjsKIAotCW10YXNrLT54bXN0YXRlID0gWE1TVEFURV9JTU1fSERSOwotCi0JaWYgKG10YXNrLT5kYXRhX2NvdW50KSB7Ci0JCWlzY3NpX2J1Zl9pbml0X2lvdigmbXRhc2stPnNlbmRidWYsIChjaGFyKiltdGFzay0+ZGF0YSwKKwlpZiAobXRhc2stPmRhdGFfY291bnQpCisJCWlzY3NpX2J1Zl9pbml0X2lvdigmdGNwX210YXNrLT5zZW5kYnVmLCAoY2hhciopbXRhc2stPmRhdGEsCiAJCQkJICAgIG10YXNrLT5kYXRhX2NvdW50KTsKLQl9Ci0KLQlkZWJ1Z19zY3NpKCJtZ210cGR1IFtvcCAweCV4IGhkci0+aXR0IDB4JXggZGF0YWxlbiAlZF1cbiIsCi0JCSAgIGhkci0+b3Bjb2RlLCBoZHItPml0dCwgZGF0YV9zaXplKTsKLQotCS8qCi0JICogc2luY2Ugc2VuZF9wZHUoKSBjb3VsZCBiZSBjYWxsZWQgYXQgbGVhc3QgZnJvbSB0d28gY29udGV4dHMsCi0JICogd2UgbmVlZCB0byBzZXJpYWxpemUgX19rZmlmb19wdXQsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGFrZQotCSAqIGFkZGl0aW9uYWwgbG9jayBvbiBmYXN0IGRhdGEtcGF0aAotCSAqLwotICAgICAgICBpZiAoaGRyLT5vcGNvZGUgJiBJU0NTSV9PUF9JTU1FRElBVEUpCi0JICAgICAgICBfX2tmaWZvX3B1dChjb25uLT5pbW1xdWV1ZSwgKHZvaWQqKSZtdGFzaywgc2l6ZW9mKHZvaWQqKSk7Ci0JZWxzZQotCSAgICAgICAgX19rZmlmb19wdXQoY29ubi0+bWdtdHF1ZXVlLCAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKTsKLQotCXNjc2lfcXVldWVfd29yayhzZXNzaW9uLT5ob3N0LCAmY29ubi0+eG1pdHdvcmspOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1pc2NzaV9laF9ob3N0X3Jlc2V0KHN0cnVjdCBzY3NpX2NtbmQgKnNjKQotewotCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSAoc3RydWN0IGlzY3NpX2NtZF90YXNrICopc2MtPlNDcC5wdHI7Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0KLQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9URVJNSU5BVEUpIHsKLQkJZGVidWdfc2NzaSgiZmFpbGluZyBob3N0IHJlc2V0OiBzZXNzaW9uIHRlcm1pbmF0ZWQgIgotCQkJICAgIltDSUQgJWQgYWdlICVkXSIsIGNvbm4tPmlkLCBzZXNzaW9uLT5hZ2UpOwotCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCXJldHVybiBGQUlMRUQ7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQotCWRlYnVnX3Njc2koImZhaWxpbmcgY29ubmVjdGlvbiBDSUQgJWQgZHVlIHRvIFNDU0kgaG9zdCByZXNldCAiCi0JCSAgICJbaXR0IDB4JXggYWdlICVkXSIsIGNvbm4tPmlkLCBjdGFzay0+aXR0LAotCQkgICBzZXNzaW9uLT5hZ2UpOwotCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOwotCi0JcmV0dXJuIFNVQ0NFU1M7Ci19Ci0KLXN0YXRpYyB2b2lkCi1pc2NzaV90bWFib3J0X3RpbWVkb3V0KHVuc2lnbmVkIGxvbmcgZGF0YSkKLXsKLQlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gKHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqKWRhdGE7Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0KLQlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOwotCWlmIChjb25uLT50bWFib3J0X3N0YXRlID09IFRNQUJPUlRfSU5JVElBTCkgewotCQlfX2tmaWZvX3B1dChzZXNzaW9uLT5tZ210cG9vbC5xdWV1ZSwKLQkJCQkodm9pZCopJmN0YXNrLT5tdGFzaywgc2l6ZW9mKHZvaWQqKSk7Ci0JCWNvbm4tPnRtYWJvcnRfc3RhdGUgPSBUTUFCT1JUX1RJTUVET1VUOwotCQlkZWJ1Z19zY3NpKCJ0bWFib3J0IHRpbWVkb3V0IFtzYyAlbHggaXR0IDB4JXhdXG4iLAotCQkJKGxvbmcpY3Rhc2stPnNjLCBjdGFzay0+aXR0KTsKLQkJLyogdW5ibG9jayBlaF9hYm9ydCgpICovCi0JCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7Ci0JfQotCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKLX0KLQotc3RhdGljIGludAotaXNjc2lfZWhfYWJvcnQoc3RydWN0IHNjc2lfY21uZCAqc2MpCi17Ci0JaW50IHJjOwotCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSAoc3RydWN0IGlzY3NpX2NtZF90YXNrICopc2MtPlNDcC5wdHI7Ci0Jc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247Ci0KLQljb25uLT5laF9hYm9ydF9jbnQrKzsKLQlkZWJ1Z19zY3NpKCJhYm9ydGluZyBbc2MgJWx4IGl0dCAweCV4XVxuIiwgKGxvbmcpc2MsIGN0YXNrLT5pdHQpOwotCi0JLyoKLQkgKiB0d28gY2FzZXMgZm9yIEVSTD0wIGhlcmU6Ci0JICoKLQkgKiAxKSBjb25uZWN0aW9uLWxldmVsIGZhaWx1cmU7Ci0JICogMikgcmVjb3ZlcnkgZHVlIHByb3RvY29sIGVycm9yOwotCSAqLwotCW11dGV4X2xvY2soJmNvbm4tPnhtaXRtdXRleCk7Ci0Jc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQlpZiAoc2Vzc2lvbi0+c3RhdGUgIT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOKSB7Ci0JCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9URVJNSU5BVEUpIHsKLQkJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQkJCWdvdG8gZmFpbGVkOwotCQl9Ci0JCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQl9IGVsc2UgewotCQlzdHJ1Y3QgaXNjc2lfdG0gKmhkciA9ICZjb25uLT50bWhkcjsKLQotCQkvKgotCQkgKiBTdGlsbCBMT0dHRURfSU4uLi4KLQkJICovCi0KLQkJaWYgKCFjdGFzay0+c2MgfHwgc2MtPlNDcC5waGFzZSAhPSBzZXNzaW9uLT5hZ2UpIHsKLQkJCS8qCi0JCQkgKiAxKSBjdGFzayBjb21wbGV0ZWQgYmVmb3JlIHRpbWUgb3V0LiBCdXQgc2Vzc2lvbgotCQkJICogICAgaXMgc3RpbGwgb2sgPT4gSGFwcHkgUmV0cnkuCi0JCQkgKiAyKSBzZXNzaW9uIHdhcyByZS1vcGVuIGR1cmluZyB0aW1lIG91dCBvZiBjdGFzay4KLQkJCSAqLwotCQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQkJbXV0ZXhfdW5sb2NrKCZjb25uLT54bWl0bXV0ZXgpOwotCQkJZ290byBzdWNjZXNzOwotCQl9Ci0JCWNvbm4tPnRtYWJvcnRfc3RhdGUgPSBUTUFCT1JUX0lOSVRJQUw7Ci0JCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQotCQkvKgotCQkgKiBjdGFzayB0aW1lZCBvdXQgYnV0IHNlc3Npb24gaXMgT0sKLQkJICogRVJMPTAgcmVxdWlyZXMgdGFzayBtZ210IGFib3J0IHRvIGJlIGlzc3VlZCBvbiBlYWNoCi0JCSAqIGZhaWxlZCBjb21tYW5kLiByZXF1ZXN0cyBtdXN0IGJlIHNlcmlhbGl6ZWQuCi0JCSAqLwotCQltZW1zZXQoaGRyLCAwLCBzaXplb2Yoc3RydWN0IGlzY3NpX3RtKSk7Ci0JCWhkci0+b3Bjb2RlID0gSVNDU0lfT1BfU0NTSV9UTUZVTkMgfCBJU0NTSV9PUF9JTU1FRElBVEU7Ci0JCWhkci0+ZmxhZ3MgPSBJU0NTSV9UTV9GVU5DX0FCT1JUX1RBU0s7Ci0JCWhkci0+ZmxhZ3MgfD0gSVNDU0lfRkxBR19DTURfRklOQUw7Ci0JCW1lbWNweShoZHItPmx1biwgY3Rhc2stPmhkci5sdW4sIHNpemVvZihoZHItPmx1bikpOwotCQloZHItPnJ0dCA9IGN0YXNrLT5oZHIuaXR0OwotCQloZHItPnJlZmNtZHNuID0gY3Rhc2stPmhkci5jbWRzbjsKLQotCQlyYyA9IGlzY3NpX2Nvbm5fc2VuZF9nZW5lcmljKGNvbm4sIChzdHJ1Y3QgaXNjc2lfaGRyICopaGRyLAotCQkJCQkgICAgIE5VTEwsIDApOwotCQlpZiAocmMpIHsKLQkJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOwotCQkJZGVidWdfc2NzaSgiYWJvcnQgc2VudCBmYWlsdXJlIFtpdHQgMHgleF0iLCBjdGFzay0+aXR0KTsKLQkJfSBlbHNlIHsKLQkJCXN0cnVjdCBpc2NzaV9yMnRfaW5mbyAqcjJ0OwotCi0JCQkvKgotCQkJICogVE1GIGFib3J0IHZzLiBUTUYgcmVzcG9uc2UgcmFjZSBsb2dpYwotCQkJICovCi0JCQlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQkJY3Rhc2stPm10YXNrID0gKHN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKikKLQkJCQlzZXNzaW9uLT5tZ210X2NtZHNbKGhkci0+aXR0ICYgSVRUX01BU0spIC0KLQkJCQkJCQlJU0NTSV9NR01UX0lUVF9PRkZTRVRdOwotCQkJLyoKLQkJCSAqIGhhdmUgdG8gZmx1c2ggcjJ0cXVldWUgdG8gYXZvaWQgcjJ0IGxlYWtzCi0JCQkgKi8KLQkJCXdoaWxlIChfX2tmaWZvX2dldChjdGFzay0+cjJ0cXVldWUsICh2b2lkKikmcjJ0LAotCQkJCXNpemVvZih2b2lkKikpKSB7Ci0JCQkJX19rZmlmb19wdXQoY3Rhc2stPnIydHBvb2wucXVldWUsICh2b2lkKikmcjJ0LAotCQkJCQlzaXplb2Yodm9pZCopKTsKLQkJCX0KLQkJCWlmIChjb25uLT50bWFib3J0X3N0YXRlID09IFRNQUJPUlRfSU5JVElBTCkgewotCQkJCWNvbm4tPnRtZmNtZF9wZHVzX2NudCsrOwotCQkJCWNvbm4tPnRtYWJvcnRfdGltZXIuZXhwaXJlcyA9IDMqSFogKyBqaWZmaWVzOwotCQkJCWNvbm4tPnRtYWJvcnRfdGltZXIuZnVuY3Rpb24gPQotCQkJCQkJaXNjc2lfdG1hYm9ydF90aW1lZG91dDsKLQkJCQljb25uLT50bWFib3J0X3RpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZyljdGFzazsKLQkJCQlhZGRfdGltZXIoJmNvbm4tPnRtYWJvcnRfdGltZXIpOwotCQkJCWRlYnVnX3Njc2koImFib3J0IHNlbnQgW2l0dCAweCV4XSIsIGN0YXNrLT5pdHQpOwotCQkJfSBlbHNlIHsKLQkJCQlpZiAoIWN0YXNrLT5zYyB8fAotCQkJCSAgICBjb25uLT50bWFib3J0X3N0YXRlID09IFRNQUJPUlRfU1VDQ0VTUykgewotCQkJCQljb25uLT50bWFib3J0X3N0YXRlID0gVE1BQk9SVF9JTklUSUFMOwotCQkJCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCQkJCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQkJCQkJZ290byBzdWNjZXNzOwotCQkJCX0KLQkJCQljb25uLT50bWFib3J0X3N0YXRlID0gVE1BQk9SVF9JTklUSUFMOwotCQkJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOwotCQkJfQotCQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQl9Ci0JfQotCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKLQotCi0JLyoKLQkgKiBibG9jayBlaCB0aHJlYWQgdW50aWw6Ci0JICoKLQkgKiAxKSBhYm9ydCByZXNwb25zZTsKLQkgKiAyKSBhYm9ydCB0aW1lb3V0OwotCSAqIDMpIHNlc3Npb24gcmUtb3BlbmVkOwotCSAqIDQpIHNlc3Npb24gdGVybWluYXRlZDsKLQkgKi8KLQlmb3IgKDs7KSB7Ci0JCWludCBwX3N0YXRlID0gc2Vzc2lvbi0+c3RhdGU7Ci0KLQkJcmMgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoY29ubi0+ZWh3YWl0LAotCQkJKHBfc3RhdGUgPT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOID8KLQkJCSAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfVEVSTUlOQVRFIHx8Ci0JCQkgIGNvbm4tPnRtYWJvcnRfc3RhdGUgIT0gVE1BQk9SVF9JTklUSUFMKSA6Ci0JCQkgKHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX1RFUk1JTkFURSB8fAotCQkJICBzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9MT0dHRURfSU4pKSk7Ci0JCWlmIChyYykgewotCQkJLyogc2h1dGRvd24uLiAqLwotCQkJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9URVJNSU5BVEU7Ci0JCQlnb3RvIGZhaWxlZDsKLQkJfQotCi0JCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCWZsdXNoX3NpZ25hbHMoY3VycmVudCk7Ci0KLQkJaWYgKHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX1RFUk1JTkFURSkKLQkJCWdvdG8gZmFpbGVkOwotCi0JCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7Ci0JCWlmIChzYy0+U0NwLnBoYXNlID09IHNlc3Npb24tPmFnZSAmJgotCQkgICAoY29ubi0+dG1hYm9ydF9zdGF0ZSA9PSBUTUFCT1JUX1RJTUVET1VUIHx8Ci0JCSAgICBjb25uLT50bWFib3J0X3N0YXRlID09IFRNQUJPUlRfRkFJTEVEKSkgewotCQkJY29ubi0+dG1hYm9ydF9zdGF0ZSA9IFRNQUJPUlRfSU5JVElBTDsKLQkJCWlmICghY3Rhc2stPnNjKSB7Ci0JCQkJLyoKLQkJCQkgKiBjdGFzayBjb21wbGV0ZWQgYmVmb3JlIHRtZiBhYm9ydCByZXNwb25zZSBvcgotCQkJCSAqIHRpbWUgb3V0LgotCQkJCSAqIEJ1dCBzZXNzaW9uIGlzIHN0aWxsIG9rID0+IEhhcHB5IFJldHJ5LgotCQkJCSAqLwotCQkJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJCWlzY3NpX2Nvbm5fZmFpbHVyZShjb25uLCBJU0NTSV9FUlJfQ09OTl9GQUlMRUQpOwotCQkJY29udGludWU7Ci0JCX0KLQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwotCQlicmVhazsKLQl9Ci0KLXN1Y2Nlc3M6Ci0JZGVidWdfc2NzaSgiYWJvcnQgc3VjY2VzcyBbc2MgJWx4IGl0dCAweCV4XVxuIiwgKGxvbmcpc2MsIGN0YXNrLT5pdHQpOwotCXJjID0gU1VDQ0VTUzsKLQlnb3RvIGV4aXQ7Ci0KLWZhaWxlZDoKLQlkZWJ1Z19zY3NpKCJhYm9ydCBmYWlsZWQgW3NjICVseCBpdHQgMHgleF1cbiIsIChsb25nKXNjLCBjdGFzay0+aXR0KTsKLQlyYyA9IEZBSUxFRDsKLQotZXhpdDoKLQlkZWxfdGltZXJfc3luYygmY29ubi0+dG1hYm9ydF90aW1lcik7Ci0KLQltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOwotCWlmIChjb25uLT5zb2NrKSB7Ci0JCXN0cnVjdCBzb2NrICpzayA9IGNvbm4tPnNvY2stPnNrOwotCi0JCXdyaXRlX2xvY2tfYmgoJnNrLT5za19jYWxsYmFja19sb2NrKTsKLQkJaXNjc2lfY3Rhc2tfY2xlYW51cChjb25uLCBjdGFzayk7Ci0JCXdyaXRlX3VubG9ja19iaCgmc2stPnNrX2NhbGxiYWNrX2xvY2spOwotCX0KLQltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7Ci0JcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50CkBAIC0zMTc0LDYgKzIwNzQsNyBAQAogCSAqLwogCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPmNtZHNfbWF4OyBjbWRfaSsrKSB7CiAJICAgICAgICBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gc2Vzc2lvbi0+Y21kc1tjbWRfaV07CisJCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOwogCiAJCS8qCiAJCSAqIHByZS1hbGxvY2F0ZWQgeDQgYXMgbXVjaCByMnRzIHRvIGhhbmRsZSByYWNlIHdoZW4KQEAgLTMxODIsNDIgKzIwODMsMzIgQEAKIAkJICovCiAKIAkJLyogUjJUIHBvb2wgKi8KLQkJaWYgKGlzY3NpX3Bvb2xfaW5pdCgmY3Rhc2stPnIydHBvb2wsIHNlc3Npb24tPm1heF9yMnQgKiA0LAotCQkJKHZvaWQqKiopJmN0YXNrLT5yMnRzLCBzaXplb2Yoc3RydWN0IGlzY3NpX3IydF9pbmZvKSkpIHsKKwkJaWYgKGlzY3NpX3Bvb2xfaW5pdCgmdGNwX2N0YXNrLT5yMnRwb29sLCBzZXNzaW9uLT5tYXhfcjJ0ICogNCwKKwkJCQkgICAgKHZvaWQqKiopJnRjcF9jdGFzay0+cjJ0cywKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBpc2NzaV9yMnRfaW5mbykpKSB7CiAJCQlnb3RvIHIydF9hbGxvY19mYWlsOwogCQl9CiAKIAkJLyogUjJUIHhtaXQgcXVldWUgKi8KLQkJY3Rhc2stPnIydHF1ZXVlID0ga2ZpZm9fYWxsb2MoCisJCXRjcF9jdGFzay0+cjJ0cXVldWUgPSBrZmlmb19hbGxvYygKIAkJICAgICAgc2Vzc2lvbi0+bWF4X3IydCAqIDQgKiBzaXplb2Yodm9pZCopLCBHRlBfS0VSTkVMLCBOVUxMKTsKLQkJaWYgKGN0YXNrLT5yMnRxdWV1ZSA9PSBFUlJfUFRSKC1FTk9NRU0pKSB7Ci0JCQlpc2NzaV9wb29sX2ZyZWUoJmN0YXNrLT5yMnRwb29sLCAodm9pZCoqKWN0YXNrLT5yMnRzKTsKKwkJaWYgKHRjcF9jdGFzay0+cjJ0cXVldWUgPT0gRVJSX1BUUigtRU5PTUVNKSkgeworCQkJaXNjc2lfcG9vbF9mcmVlKCZ0Y3BfY3Rhc2stPnIydHBvb2wsCisJCQkJCSh2b2lkKiopdGNwX2N0YXNrLT5yMnRzKTsKIAkJCWdvdG8gcjJ0X2FsbG9jX2ZhaWw7CiAJCX0KLQotCQkvKgotCQkgKiBudW1iZXIgb2YKLQkJICogRGF0YS1PdXQgUERVJ3Mgd2l0aGluIFIyVC1zZXF1ZW5jZSBjYW4gYmUgcXVpdGUgYmlnOwotCQkgKiB1c2luZyBtZW1wb29sCi0JCSAqLwotCQljdGFzay0+ZGF0YXBvb2wgPSBtZW1wb29sX2NyZWF0ZV9zbGFiX3Bvb2woSVNDU0lfRFRBU0tfREVGQVVMVF9NQVgsCi0JCQkJCQkJICAgdGFza2NhY2hlKTsKLQkJaWYgKGN0YXNrLT5kYXRhcG9vbCA9PSBOVUxMKSB7Ci0JCQlrZmlmb19mcmVlKGN0YXNrLT5yMnRxdWV1ZSk7Ci0JCQlpc2NzaV9wb29sX2ZyZWUoJmN0YXNrLT5yMnRwb29sLCAodm9pZCoqKWN0YXNrLT5yMnRzKTsKLQkJCWdvdG8gcjJ0X2FsbG9jX2ZhaWw7Ci0JCX0KLQkJSU5JVF9MSVNUX0hFQUQoJmN0YXNrLT5kYXRhcXVldWUpOwogCX0KIAogCXJldHVybiAwOwogCiByMnRfYWxsb2NfZmFpbDoKIAlmb3IgKGkgPSAwOyBpIDwgY21kX2k7IGkrKykgewotCQltZW1wb29sX2Rlc3Ryb3koc2Vzc2lvbi0+Y21kc1tpXS0+ZGF0YXBvb2wpOwotCQlrZmlmb19mcmVlKHNlc3Npb24tPmNtZHNbaV0tPnIydHF1ZXVlKTsKLQkJaXNjc2lfcG9vbF9mcmVlKCZzZXNzaW9uLT5jbWRzW2ldLT5yMnRwb29sLAotCQkJCSh2b2lkKiopc2Vzc2lvbi0+Y21kc1tpXS0+cjJ0cyk7CisJCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSBzZXNzaW9uLT5jbWRzW2ldOworCQlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKworCQlrZmlmb19mcmVlKHRjcF9jdGFzay0+cjJ0cXVldWUpOworCQlpc2NzaV9wb29sX2ZyZWUoJnRjcF9jdGFzay0+cjJ0cG9vbCwKKwkJCQkodm9pZCoqKXRjcF9jdGFzay0+cjJ0cyk7CiAJfQogCXJldHVybiAtRU5PTUVNOwogfQpAQCAtMzIyOCwxNTIgKzIxMTksMjkgQEAKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBzZXNzaW9uLT5jbWRzX21heDsgaSsrKSB7Ci0JCW1lbXBvb2xfZGVzdHJveShzZXNzaW9uLT5jbWRzW2ldLT5kYXRhcG9vbCk7Ci0JCWtmaWZvX2ZyZWUoc2Vzc2lvbi0+Y21kc1tpXS0+cjJ0cXVldWUpOwotCQlpc2NzaV9wb29sX2ZyZWUoJnNlc3Npb24tPmNtZHNbaV0tPnIydHBvb2wsCi0JCQkJKHZvaWQqKilzZXNzaW9uLT5jbWRzW2ldLT5yMnRzKTsKKwkJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzayA9IHNlc3Npb24tPmNtZHNbaV07CisJCXN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgKnRjcF9jdGFzayA9IGN0YXNrLT5kZF9kYXRhOworCisJCWtmaWZvX2ZyZWUodGNwX2N0YXNrLT5yMnRxdWV1ZSk7CisJCWlzY3NpX3Bvb2xfZnJlZSgmdGNwX2N0YXNrLT5yMnRwb29sLAorCQkJCSh2b2lkKiopdGNwX2N0YXNrLT5yMnRzKTsKIAl9CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGlzY3NpX3NodCA9IHsKLQkubmFtZQkJCT0gImlTQ1NJIEluaXRpYXRvciBvdmVyIFRDUC9JUCwgdi4iCi0JCQkJICBJU0NTSV9WRVJTSU9OX1NUUiwKLQkucXVldWVjb21tYW5kICAgICAgICAgICA9IGlzY3NpX3F1ZXVlY29tbWFuZCwKLQkuY2hhbmdlX3F1ZXVlX2RlcHRoCT0gaXNjc2lfY2hhbmdlX3F1ZXVlX2RlcHRoLAotCS5jYW5fcXVldWUJCT0gSVNDU0lfWE1JVF9DTURTX01BWCAtIDEsCi0JLnNnX3RhYmxlc2l6ZQkJPSBJU0NTSV9TR19UQUJMRVNJWkUsCi0JLmNtZF9wZXJfbHVuCQk9IElTQ1NJX0RFRl9DTURfUEVSX0xVTiwKLQkuZWhfYWJvcnRfaGFuZGxlciAgICAgICA9IGlzY3NpX2VoX2Fib3J0LAotCS5laF9ob3N0X3Jlc2V0X2hhbmRsZXIJPSBpc2NzaV9laF9ob3N0X3Jlc2V0LAotCS51c2VfY2x1c3RlcmluZyAgICAgICAgID0gRElTQUJMRV9DTFVTVEVSSU5HLAotCS5wcm9jX25hbWUJCT0gImlzY3NpX3RjcCIsCi0JLnRoaXNfaWQJCT0gLTEsCi19OwotCi1zdGF0aWMgc3RydWN0IGlzY3NpX3RyYW5zcG9ydCBpc2NzaV90Y3BfdHJhbnNwb3J0OwotCi1zdGF0aWMgc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICoKLWlzY3NpX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSAqc2NzaXQsCi0JCSAgICAgdWludDMyX3QgaW5pdGlhbF9jbWRzbiwgdWludDMyX3QgKnNpZCkKLXsKLQlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdDsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbjsKLQlpbnQgY21kX2k7Ci0KLQlzaG9zdCA9IGlzY3NpX3RyYW5zcG9ydF9jcmVhdGVfc2Vzc2lvbihzY3NpdCwgJmlzY3NpX3RjcF90cmFuc3BvcnQpOwotCWlmICghc2hvc3QpCi0JCXJldHVybiBOVUxMOyAKLQotCXNlc3Npb24gPSBpc2NzaV9ob3N0ZGF0YShzaG9zdC0+aG9zdGRhdGEpOwotCW1lbXNldChzZXNzaW9uLCAwLCBzaXplb2Yoc3RydWN0IGlzY3NpX3Nlc3Npb24pKTsKLQlzZXNzaW9uLT5ob3N0ID0gc2hvc3Q7Ci0Jc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9GUkVFOwotCXNlc3Npb24tPm1nbXRwb29sX21heCA9IElTQ1NJX01HTVRfQ01EU19NQVg7Ci0Jc2Vzc2lvbi0+Y21kc19tYXggPSBJU0NTSV9YTUlUX0NNRFNfTUFYOwotCXNlc3Npb24tPmNtZHNuID0gaW5pdGlhbF9jbWRzbjsKLQlzZXNzaW9uLT5leHBfY21kc24gPSBpbml0aWFsX2NtZHNuICsgMTsKLQlzZXNzaW9uLT5tYXhfY21kc24gPSBpbml0aWFsX2NtZHNuICsgMTsKLQlzZXNzaW9uLT5tYXhfcjJ0ID0gMTsKLQkqc2lkID0gc2hvc3QtPmhvc3Rfbm87Ci0KLQkvKiBpbml0aWFsaXplIFNDU0kgUERVIGNvbW1hbmRzIHBvb2wgKi8KLQlpZiAoaXNjc2lfcG9vbF9pbml0KCZzZXNzaW9uLT5jbWRwb29sLCBzZXNzaW9uLT5jbWRzX21heCwKLQkJKHZvaWQqKiopJnNlc3Npb24tPmNtZHMsIHNpemVvZihzdHJ1Y3QgaXNjc2lfY21kX3Rhc2spKSkKLQkJZ290byBjbWRwb29sX2FsbG9jX2ZhaWw7Ci0KLQkvKiBwcmUtZm9ybWF0IGNtZHMgcG9vbCB3aXRoIElUVCAqLwotCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPmNtZHNfbWF4OyBjbWRfaSsrKQotCQlzZXNzaW9uLT5jbWRzW2NtZF9pXS0+aXR0ID0gY21kX2k7Ci0KLQlzcGluX2xvY2tfaW5pdCgmc2Vzc2lvbi0+bG9jayk7Ci0JSU5JVF9MSVNUX0hFQUQoJnNlc3Npb24tPmNvbm5lY3Rpb25zKTsKLQotCS8qIGluaXRpYWxpemUgaW1tZWRpYXRlIGNvbW1hbmQgcG9vbCAqLwotCWlmIChpc2NzaV9wb29sX2luaXQoJnNlc3Npb24tPm1nbXRwb29sLCBzZXNzaW9uLT5tZ210cG9vbF9tYXgsCi0JCSh2b2lkKioqKSZzZXNzaW9uLT5tZ210X2NtZHMsIHNpemVvZihzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrKSkpCi0JCWdvdG8gbWdtdHBvb2xfYWxsb2NfZmFpbDsKLQotCi0JLyogcHJlLWZvcm1hdCBpbW1lZGlhdGUgY21kcyBwb29sIHdpdGggSVRUICovCi0JZm9yIChjbWRfaSA9IDA7IGNtZF9pIDwgc2Vzc2lvbi0+bWdtdHBvb2xfbWF4OyBjbWRfaSsrKSB7Ci0JCXNlc3Npb24tPm1nbXRfY21kc1tjbWRfaV0tPml0dCA9IElTQ1NJX01HTVRfSVRUX09GRlNFVCArIGNtZF9pOwotCQlzZXNzaW9uLT5tZ210X2NtZHNbY21kX2ldLT5kYXRhID0ga21hbGxvYygKLQkJCURFRkFVTFRfTUFYX1JFQ1ZfREFUQV9TRUdNRU5UX0xFTkdUSCwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghc2Vzc2lvbi0+bWdtdF9jbWRzW2NtZF9pXS0+ZGF0YSkgewotCQkJaW50IGo7Ci0KLQkJCWZvciAoaiA9IDA7IGogPCBjbWRfaTsgaisrKQotCQkJCWtmcmVlKHNlc3Npb24tPm1nbXRfY21kc1tqXS0+ZGF0YSk7Ci0JCQlnb3RvIGltbWRhdGFfYWxsb2NfZmFpbDsKLQkJfQotCX0KLQotCWlmIChpc2NzaV9yMnRwb29sX2FsbG9jKHNlc3Npb24pKQotCQlnb3RvIHIydHBvb2xfYWxsb2NfZmFpbDsKLQotCXJldHVybiBob3N0ZGF0YV9zZXNzaW9uKHNob3N0LT5ob3N0ZGF0YSk7Ci0KLXIydHBvb2xfYWxsb2NfZmFpbDoKLQlmb3IgKGNtZF9pID0gMDsgY21kX2kgPCBzZXNzaW9uLT5tZ210cG9vbF9tYXg7IGNtZF9pKyspCi0JCWtmcmVlKHNlc3Npb24tPm1nbXRfY21kc1tjbWRfaV0tPmRhdGEpOwotaW1tZGF0YV9hbGxvY19mYWlsOgotCWlzY3NpX3Bvb2xfZnJlZSgmc2Vzc2lvbi0+bWdtdHBvb2wsICh2b2lkKiopc2Vzc2lvbi0+bWdtdF9jbWRzKTsKLW1nbXRwb29sX2FsbG9jX2ZhaWw6Ci0JaXNjc2lfcG9vbF9mcmVlKCZzZXNzaW9uLT5jbWRwb29sLCAodm9pZCoqKXNlc3Npb24tPmNtZHMpOwotY21kcG9vbF9hbGxvY19mYWlsOgotCWlzY3NpX3RyYW5zcG9ydF9kZXN0cm95X3Nlc3Npb24oc2hvc3QpOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgdm9pZAotaXNjc2lfc2Vzc2lvbl9kZXN0cm95KHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqY2xzX3Nlc3Npb24pCi17Ci0Jc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBpc2NzaV9zZXNzaW9uX3RvX3Nob3N0KGNsc19zZXNzaW9uKTsKLQlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGlzY3NpX2hvc3RkYXRhKHNob3N0LT5ob3N0ZGF0YSk7Ci0JaW50IGNtZF9pOwotCXN0cnVjdCBpc2NzaV9kYXRhX3Rhc2sgKmR0YXNrLCAqbjsKLQotCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPmNtZHNfbWF4OyBjbWRfaSsrKSB7Ci0JCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSBzZXNzaW9uLT5jbWRzW2NtZF9pXTsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGR0YXNrLCBuLCAmY3Rhc2stPmRhdGFxdWV1ZSwgaXRlbSkgewotCQkJbGlzdF9kZWwoJmR0YXNrLT5pdGVtKTsKLQkJCW1lbXBvb2xfZnJlZShkdGFzaywgY3Rhc2stPmRhdGFwb29sKTsKLQkJfQotCX0KLQotCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPm1nbXRwb29sX21heDsgY21kX2krKykKLQkJa2ZyZWUoc2Vzc2lvbi0+bWdtdF9jbWRzW2NtZF9pXS0+ZGF0YSk7Ci0KLQlpc2NzaV9yMnRwb29sX2ZyZWUoc2Vzc2lvbik7Ci0JaXNjc2lfcG9vbF9mcmVlKCZzZXNzaW9uLT5tZ210cG9vbCwgKHZvaWQqKilzZXNzaW9uLT5tZ210X2NtZHMpOwotCWlzY3NpX3Bvb2xfZnJlZSgmc2Vzc2lvbi0+Y21kcG9vbCwgKHZvaWQqKilzZXNzaW9uLT5jbWRzKTsKLQotCWlzY3NpX3RyYW5zcG9ydF9kZXN0cm95X3Nlc3Npb24oc2hvc3QpOwotfQotCiBzdGF0aWMgaW50CiBpc2NzaV9jb25uX3NldF9wYXJhbShzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNsc19jb25uLCBlbnVtIGlzY3NpX3BhcmFtIHBhcmFtLAogCQkgICAgIHVpbnQzMl90IHZhbHVlKQogewogCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gY2xzX2Nvbm4tPmRkX2RhdGE7CiAJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOwotCi0Jc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQlpZiAoY29ubi0+Y19zdGFnZSAhPSBJU0NTSV9DT05OX0lOSVRJQUxfU1RBR0UgJiYKLQkgICAgY29ubi0+c3RvcF9zdGFnZSAhPSBTVE9QX0NPTk5fUkVDT1ZFUikgewotCQlwcmludGsoS0VSTl9FUlIgImlzY3NpX3RjcDogY2FuIG5vdCBjaGFuZ2UgcGFyYW1ldGVyIFslZF1cbiIsCi0JCSAgICAgICBwYXJhbSk7Ci0JCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKIAogCXN3aXRjaChwYXJhbSkgewogCWNhc2UgSVNDU0lfUEFSQU1fTUFYX1JFQ1ZfRExFTkdUSDogewotCQljaGFyICpzYXZlcHRyID0gY29ubi0+ZGF0YTsKKwkJY2hhciAqc2F2ZXB0ciA9IHRjcF9jb25uLT5kYXRhOwogCQlnZnBfdCBmbGFncyA9IEdGUF9LRVJORUw7CiAKLQkJaWYgKGNvbm4tPmRhdGFfc2l6ZSA+PSB2YWx1ZSkgeworCQlpZiAodGNwX2Nvbm4tPmRhdGFfc2l6ZSA+PSB2YWx1ZSkgewogCQkJY29ubi0+bWF4X3JlY3ZfZGxlbmd0aCA9IHZhbHVlOwogCQkJYnJlYWs7CiAJCX0KQEAgLTMzODQsMjEgKzIxNTIsMjEgQEAKIAkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOwogCiAJCWlmICh2YWx1ZSA8PSBQQUdFX1NJWkUpCi0JCQljb25uLT5kYXRhID0ga21hbGxvYyh2YWx1ZSwgZmxhZ3MpOworCQkJdGNwX2Nvbm4tPmRhdGEgPSBrbWFsbG9jKHZhbHVlLCBmbGFncyk7CiAJCWVsc2UKLQkJCWNvbm4tPmRhdGEgPSAodm9pZCopX19nZXRfZnJlZV9wYWdlcyhmbGFncywKKwkJCXRjcF9jb25uLT5kYXRhID0gKHZvaWQqKV9fZ2V0X2ZyZWVfcGFnZXMoZmxhZ3MsCiAJCQkJCQkJICAgICBnZXRfb3JkZXIodmFsdWUpKTsKLQkJaWYgKGNvbm4tPmRhdGEgPT0gTlVMTCkgewotCQkJY29ubi0+ZGF0YSA9IHNhdmVwdHI7CisJCWlmICh0Y3BfY29ubi0+ZGF0YSA9PSBOVUxMKSB7CisJCQl0Y3BfY29ubi0+ZGF0YSA9IHNhdmVwdHI7CiAJCQlyZXR1cm4gLUVOT01FTTsKIAkJfQotCQlpZiAoY29ubi0+ZGF0YV9zaXplIDw9IFBBR0VfU0laRSkKKwkJaWYgKHRjcF9jb25uLT5kYXRhX3NpemUgPD0gUEFHRV9TSVpFKQogCQkJa2ZyZWUoc2F2ZXB0cik7CiAJCWVsc2UKIAkJCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpc2F2ZXB0ciwKLQkJCQkgICBnZXRfb3JkZXIoY29ubi0+ZGF0YV9zaXplKSk7CisJCQkJICAgZ2V0X29yZGVyKHRjcF9jb25uLT5kYXRhX3NpemUpKTsKIAkJY29ubi0+bWF4X3JlY3ZfZGxlbmd0aCA9IHZhbHVlOwotCQljb25uLT5kYXRhX3NpemUgPSB2YWx1ZTsKKwkJdGNwX2Nvbm4tPmRhdGFfc2l6ZSA9IHZhbHVlOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfUEFSQU1fTUFYX1hNSVRfRExFTkdUSDoKQEAgLTM0MDYsNDkgKzIxNzQsNTEgQEAKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9QQVJBTV9IRFJER1NUX0VOOgogCQljb25uLT5oZHJkZ3N0X2VuID0gdmFsdWU7Ci0JCWNvbm4tPmhkcl9zaXplID0gc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpOworCQl0Y3BfY29ubi0+aGRyX3NpemUgPSBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcik7CiAJCWlmIChjb25uLT5oZHJkZ3N0X2VuKSB7Ci0JCQljb25uLT5oZHJfc2l6ZSArPSBzaXplb2YoX191MzIpOwotCQkJaWYgKCFjb25uLT50eF90Zm0pCi0JCQkJY29ubi0+dHhfdGZtID0gY3J5cHRvX2FsbG9jX3RmbSgiY3JjMzJjIiwgMCk7Ci0JCQlpZiAoIWNvbm4tPnR4X3RmbSkKKwkJCXRjcF9jb25uLT5oZHJfc2l6ZSArPSBzaXplb2YoX191MzIpOworCQkJaWYgKCF0Y3BfY29ubi0+dHhfdGZtKQorCQkJCXRjcF9jb25uLT50eF90Zm0gPSBjcnlwdG9fYWxsb2NfdGZtKCJjcmMzMmMiLAorCQkJCQkJCQkgICAgMCk7CisJCQlpZiAoIXRjcF9jb25uLT50eF90Zm0pCiAJCQkJcmV0dXJuIC1FTk9NRU07Ci0JCQlpZiAoIWNvbm4tPnJ4X3RmbSkKLQkJCQljb25uLT5yeF90Zm0gPSBjcnlwdG9fYWxsb2NfdGZtKCJjcmMzMmMiLCAwKTsKLQkJCWlmICghY29ubi0+cnhfdGZtKSB7Ci0JCQkJY3J5cHRvX2ZyZWVfdGZtKGNvbm4tPnR4X3RmbSk7CisJCQlpZiAoIXRjcF9jb25uLT5yeF90Zm0pCisJCQkJdGNwX2Nvbm4tPnJ4X3RmbSA9IGNyeXB0b19hbGxvY190Zm0oImNyYzMyYyIsCisJCQkJCQkJCSAgICAwKTsKKwkJCWlmICghdGNwX2Nvbm4tPnJ4X3RmbSkgeworCQkJCWNyeXB0b19mcmVlX3RmbSh0Y3BfY29ubi0+dHhfdGZtKTsKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCX0KIAkJfSBlbHNlIHsKLQkJCWlmIChjb25uLT50eF90Zm0pCi0JCQkJY3J5cHRvX2ZyZWVfdGZtKGNvbm4tPnR4X3RmbSk7Ci0JCQlpZiAoY29ubi0+cnhfdGZtKQotCQkJCWNyeXB0b19mcmVlX3RmbShjb25uLT5yeF90Zm0pOworCQkJaWYgKHRjcF9jb25uLT50eF90Zm0pCisJCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT50eF90Zm0pOworCQkJaWYgKHRjcF9jb25uLT5yeF90Zm0pCisJCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT5yeF90Zm0pOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfUEFSQU1fREFUQURHU1RfRU46CiAJCWNvbm4tPmRhdGFkZ3N0X2VuID0gdmFsdWU7CiAJCWlmIChjb25uLT5kYXRhZGdzdF9lbikgewotCQkJaWYgKCFjb25uLT5kYXRhX3R4X3RmbSkKLQkJCQljb25uLT5kYXRhX3R4X3RmbSA9CisJCQlpZiAoIXRjcF9jb25uLT5kYXRhX3R4X3RmbSkKKwkJCQl0Y3BfY29ubi0+ZGF0YV90eF90Zm0gPQogCQkJCSAgICBjcnlwdG9fYWxsb2NfdGZtKCJjcmMzMmMiLCAwKTsKLQkJCWlmICghY29ubi0+ZGF0YV90eF90Zm0pCisJCQlpZiAoIXRjcF9jb25uLT5kYXRhX3R4X3RmbSkKIAkJCQlyZXR1cm4gLUVOT01FTTsKLQkJCWlmICghY29ubi0+ZGF0YV9yeF90Zm0pCi0JCQkJY29ubi0+ZGF0YV9yeF90Zm0gPQorCQkJaWYgKCF0Y3BfY29ubi0+ZGF0YV9yeF90Zm0pCisJCQkJdGNwX2Nvbm4tPmRhdGFfcnhfdGZtID0KIAkJCQkgICAgY3J5cHRvX2FsbG9jX3RmbSgiY3JjMzJjIiwgMCk7Ci0JCQlpZiAoIWNvbm4tPmRhdGFfcnhfdGZtKSB7Ci0JCQkJY3J5cHRvX2ZyZWVfdGZtKGNvbm4tPmRhdGFfdHhfdGZtKTsKKwkJCWlmICghdGNwX2Nvbm4tPmRhdGFfcnhfdGZtKSB7CisJCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT5kYXRhX3R4X3RmbSk7CiAJCQkJcmV0dXJuIC1FTk9NRU07CiAJCQl9CiAJCX0gZWxzZSB7Ci0JCQlpZiAoY29ubi0+ZGF0YV90eF90Zm0pCi0JCQkJY3J5cHRvX2ZyZWVfdGZtKGNvbm4tPmRhdGFfdHhfdGZtKTsKLQkJCWlmIChjb25uLT5kYXRhX3J4X3RmbSkKLQkJCQljcnlwdG9fZnJlZV90Zm0oY29ubi0+ZGF0YV9yeF90Zm0pOworCQkJaWYgKHRjcF9jb25uLT5kYXRhX3R4X3RmbSkKKwkJCQljcnlwdG9fZnJlZV90Zm0odGNwX2Nvbm4tPmRhdGFfdHhfdGZtKTsKKwkJCWlmICh0Y3BfY29ubi0+ZGF0YV9yeF90Zm0pCisJCQkJY3J5cHRvX2ZyZWVfdGZtKHRjcF9jb25uLT5kYXRhX3J4X3RmbSk7CiAJCX0KLQkJY29ubi0+c2VuZHBhZ2UgPSBjb25uLT5kYXRhZGdzdF9lbiA/Ci0JCQlzb2NrX25vX3NlbmRwYWdlIDogY29ubi0+c29jay0+b3BzLT5zZW5kcGFnZTsKKwkJdGNwX2Nvbm4tPnNlbmRwYWdlID0gY29ubi0+ZGF0YWRnc3RfZW4gPworCQkJc29ja19ub19zZW5kcGFnZSA6IHRjcF9jb25uLT5zb2NrLT5vcHMtPnNlbmRwYWdlOwogCQlicmVhazsKIAljYXNlIElTQ1NJX1BBUkFNX0lOSVRJQUxfUjJUX0VOOgogCQlzZXNzaW9uLT5pbml0aWFsX3IydF9lbiA9IHZhbHVlOwpAQCAtMzQ4OSw2ICsyMjU5LDkgQEAKIAkJQlVHX09OKHZhbHVlKTsKIAkJc2Vzc2lvbi0+b2ZtYXJrZXJfZW4gPSB2YWx1ZTsKIAkJYnJlYWs7CisJY2FzZSBJU0NTSV9QQVJBTV9FWFBfU1RBVFNOOgorCQljb25uLT5leHBfc3RhdHNuID0gdmFsdWU7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwogCX0KQEAgLTM1MzUsNyArMjMwOCw3IEBACiAJCSp2YWx1ZSA9IHNlc3Npb24tPm9mbWFya2VyX2VuOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlyZXR1cm4gSVNDU0lfRVJSX1BBUkFNX05PVF9GT1VORDsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0zNTQ2LDYgKzIzMTksOCBAQAogCQkgICAgIGVudW0gaXNjc2lfcGFyYW0gcGFyYW0sIHVpbnQzMl90ICp2YWx1ZSkKIHsKIAlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOworCXN0cnVjdCBpbmV0X3NvY2sgKmluZXQ7CiAKIAlzd2l0Y2gocGFyYW0pIHsKIAljYXNlIElTQ1NJX1BBUkFNX01BWF9SRUNWX0RMRU5HVEg6CkBAIC0zNTYwLDE3ICsyMzM1LDcwIEBACiAJY2FzZSBJU0NTSV9QQVJBTV9EQVRBREdTVF9FTjoKIAkJKnZhbHVlID0gY29ubi0+ZGF0YWRnc3RfZW47CiAJCWJyZWFrOworCWNhc2UgSVNDU0lfUEFSQU1fQ09OTl9QT1JUOgorCQltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCQlpZiAoIXRjcF9jb25uLT5zb2NrKSB7CisJCQltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWluZXQgPSBpbmV0X3NrKHRjcF9jb25uLT5zb2NrLT5zayk7CisJCSp2YWx1ZSA9IGJlMTZfdG9fY3B1KGluZXQtPmRwb3J0KTsKKwkJbXV0ZXhfdW5sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCWNhc2UgSVNDU0lfUEFSQU1fRVhQX1NUQVRTTjoKKwkJKnZhbHVlID0gY29ubi0+ZXhwX3N0YXRzbjsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJcmV0dXJuIElTQ1NJX0VSUl9QQVJBTV9OT1RfRk9VTkQ7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50Citpc2NzaV9jb25uX2dldF9zdHJfcGFyYW0oc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubiwKKwkJCSBlbnVtIGlzY3NpX3BhcmFtIHBhcmFtLCBjaGFyICpidWYpCit7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjbHNfY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4gKnRjcF9jb25uID0gY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3Qgc29jayAqc2s7CisJc3RydWN0IGluZXRfc29jayAqaW5ldDsKKwlzdHJ1Y3QgaXB2Nl9waW5mbyAqbnA7CisJaW50IGxlbiA9IDA7CisKKwlzd2l0Y2ggKHBhcmFtKSB7CisJY2FzZSBJU0NTSV9QQVJBTV9DT05OX0FERFJFU1M6CisJCW11dGV4X2xvY2soJmNvbm4tPnhtaXRtdXRleCk7CisJCWlmICghdGNwX2Nvbm4tPnNvY2spIHsKKwkJCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJc2sgPSB0Y3BfY29ubi0+c29jay0+c2s7CisJCWlmIChzay0+c2tfZmFtaWx5ID09IFBGX0lORVQpIHsKKwkJCWluZXQgPSBpbmV0X3NrKHNrKTsKKwkJCWxlbiA9IHNwcmludGYoYnVmLCAiJXUuJXUuJXUuJXVcbiIsCisJCQkJICAgICAgTklQUVVBRChpbmV0LT5kYWRkcikpOworCQl9IGVsc2UgeworCQkJbnAgPSBpbmV0Nl9zayhzayk7CisJCQlsZW4gPSBzcHJpbnRmKGJ1ZiwKKwkJCQkiJTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4XG4iLAorCQkJCU5JUDYobnAtPmRhZGRyKSk7CisJCX0KKwkJbXV0ZXhfdW5sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCiBzdGF0aWMgdm9pZAogaXNjc2lfY29ubl9nZXRfc3RhdHMoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubiwgc3RydWN0IGlzY3NpX3N0YXRzICpzdGF0cykKIHsKIAlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV90Y3BfY29ubiAqdGNwX2Nvbm4gPSBjb25uLT5kZF9kYXRhOwogCiAJc3RhdHMtPnR4ZGF0YV9vY3RldHMgPSBjb25uLT50eGRhdGFfb2N0ZXRzOwogCXN0YXRzLT5yeGRhdGFfb2N0ZXRzID0gY29ubi0+cnhkYXRhX29jdGV0czsKQEAgLTM1ODMsNjggKzI0MTEsMTQxIEBACiAJc3RhdHMtPnRtZnJzcF9wZHVzID0gY29ubi0+dG1mcnNwX3BkdXNfY250OwogCXN0YXRzLT5jdXN0b21fbGVuZ3RoID0gMzsKIAlzdHJjcHkoc3RhdHMtPmN1c3RvbVswXS5kZXNjLCAidHhfc2VuZHBhZ2VfZmFpbHVyZXMiKTsKLQlzdGF0cy0+Y3VzdG9tWzBdLnZhbHVlID0gY29ubi0+c2VuZHBhZ2VfZmFpbHVyZXNfY250OworCXN0YXRzLT5jdXN0b21bMF0udmFsdWUgPSB0Y3BfY29ubi0+c2VuZHBhZ2VfZmFpbHVyZXNfY250OwogCXN0cmNweShzdGF0cy0+Y3VzdG9tWzFdLmRlc2MsICJyeF9kaXNjb250aWd1b3VzX2hkciIpOwotCXN0YXRzLT5jdXN0b21bMV0udmFsdWUgPSBjb25uLT5kaXNjb250aWd1b3VzX2hkcl9jbnQ7CisJc3RhdHMtPmN1c3RvbVsxXS52YWx1ZSA9IHRjcF9jb25uLT5kaXNjb250aWd1b3VzX2hkcl9jbnQ7CiAJc3RyY3B5KHN0YXRzLT5jdXN0b21bMl0uZGVzYywgImVoX2Fib3J0X2NudCIpOwogCXN0YXRzLT5jdXN0b21bMl0udmFsdWUgPSBjb25uLT5laF9hYm9ydF9jbnQ7CiB9CiAKLXN0YXRpYyBpbnQKLWlzY3NpX2Nvbm5fc2VuZF9wZHUoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAotCQkgICAgY2hhciAqZGF0YSwgdWludDMyX3QgZGF0YV9zaXplKQorc3RhdGljIHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqCitpc2NzaV90Y3Bfc2Vzc2lvbl9jcmVhdGUoc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqaXNjc2l0LAorCQkJIHN0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSAqc2NzaXQsCisJCQkgdWludDMyX3QgaW5pdGlhbF9jbWRzbiwgdWludDMyX3QgKmhvc3RubykKIHsKLQlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOwotCWludCByYzsKKwlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uOworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uOworCXVpbnQzMl90IGhuOworCWludCBjbWRfaTsKIAotCW11dGV4X2xvY2soJmNvbm4tPnhtaXRtdXRleCk7Ci0JcmMgPSBpc2NzaV9jb25uX3NlbmRfZ2VuZXJpYyhjb25uLCBoZHIsIGRhdGEsIGRhdGFfc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCWNsc19zZXNzaW9uID0gaXNjc2lfc2Vzc2lvbl9zZXR1cChpc2NzaXQsIHNjc2l0LAorCQkJCQkgc2l6ZW9mKHN0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2spLAorCQkJCQkgc2l6ZW9mKHN0cnVjdCBpc2NzaV90Y3BfbWdtdF90YXNrKSwKKwkJCQkJIGluaXRpYWxfY21kc24sICZobik7CisJaWYgKCFjbHNfc2Vzc2lvbikKKwkJcmV0dXJuIE5VTEw7CisJKmhvc3RubyA9IGhuOwogCi0JcmV0dXJuIHJjOworCXNlc3Npb24gPSBjbGFzc190b190cmFuc3BvcnRfc2Vzc2lvbihjbHNfc2Vzc2lvbik7CisJZm9yIChjbWRfaSA9IDA7IGNtZF9pIDwgc2Vzc2lvbi0+Y21kc19tYXg7IGNtZF9pKyspIHsKKwkJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzayA9IHNlc3Npb24tPmNtZHNbY21kX2ldOworCQlzdHJ1Y3QgaXNjc2lfdGNwX2NtZF90YXNrICp0Y3BfY3Rhc2sgPSBjdGFzay0+ZGRfZGF0YTsKKworCQljdGFzay0+aGRyID0gJnRjcF9jdGFzay0+aGRyOworCX0KKworCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPm1nbXRwb29sX21heDsgY21kX2krKykgeworCQlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzayA9IHNlc3Npb24tPm1nbXRfY21kc1tjbWRfaV07CisJCXN0cnVjdCBpc2NzaV90Y3BfbWdtdF90YXNrICp0Y3BfbXRhc2sgPSBtdGFzay0+ZGRfZGF0YTsKKworCQltdGFzay0+aGRyID0gJnRjcF9tdGFzay0+aGRyOworCX0KKworCWlmIChpc2NzaV9yMnRwb29sX2FsbG9jKGNsYXNzX3RvX3RyYW5zcG9ydF9zZXNzaW9uKGNsc19zZXNzaW9uKSkpCisJCWdvdG8gcjJ0cG9vbF9hbGxvY19mYWlsOworCisJcmV0dXJuIGNsc19zZXNzaW9uOworCityMnRwb29sX2FsbG9jX2ZhaWw6CisJaXNjc2lfc2Vzc2lvbl90ZWFyZG93bihjbHNfc2Vzc2lvbik7CisJcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyB2b2lkIGlzY3NpX3RjcF9zZXNzaW9uX2Rlc3Ryb3koc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbikKK3sKKwlpc2NzaV9yMnRwb29sX2ZyZWUoY2xhc3NfdG9fdHJhbnNwb3J0X3Nlc3Npb24oY2xzX3Nlc3Npb24pKTsKKwlpc2NzaV9zZXNzaW9uX3RlYXJkb3duKGNsc19zZXNzaW9uKTsKK30KKworc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgaXNjc2lfc2h0ID0geworCS5uYW1lCQkJPSAiaVNDU0kgSW5pdGlhdG9yIG92ZXIgVENQL0lQLCB2IgorCQkJCSAgSVNDU0lfVENQX1ZFUlNJT04sCisJLnF1ZXVlY29tbWFuZCAgICAgICAgICAgPSBpc2NzaV9xdWV1ZWNvbW1hbmQsCisJLmNoYW5nZV9xdWV1ZV9kZXB0aAk9IGlzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCwKKwkuY2FuX3F1ZXVlCQk9IElTQ1NJX1hNSVRfQ01EU19NQVggLSAxLAorCS5zZ190YWJsZXNpemUJCT0gSVNDU0lfU0dfVEFCTEVTSVpFLAorCS5jbWRfcGVyX2x1bgkJPSBJU0NTSV9ERUZfQ01EX1BFUl9MVU4sCisJLmVoX2Fib3J0X2hhbmRsZXIgICAgICAgPSBpc2NzaV9laF9hYm9ydCwKKwkuZWhfaG9zdF9yZXNldF9oYW5kbGVyCT0gaXNjc2lfZWhfaG9zdF9yZXNldCwKKwkudXNlX2NsdXN0ZXJpbmcgICAgICAgICA9IERJU0FCTEVfQ0xVU1RFUklORywKKwkucHJvY19uYW1lCQk9ICJpc2NzaV90Y3AiLAorCS50aGlzX2lkCQk9IC0xLAorfTsKKwogc3RhdGljIHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgaXNjc2lfdGNwX3RyYW5zcG9ydCA9IHsKIAkub3duZXIJCQk9IFRISVNfTU9EVUxFLAogCS5uYW1lCQkJPSAidGNwIiwKIAkuY2FwcwkJCT0gQ0FQX1JFQ09WRVJZX0wwIHwgQ0FQX01VTFRJX1IyVCB8IENBUF9IRFJER1NUCiAJCQkJICB8IENBUF9EQVRBREdTVCwKKwkucGFyYW1fbWFzawkJPSBJU0NTSV9NQVhfUkVDVl9ETEVOR1RIIHwKKwkJCQkgIElTQ1NJX01BWF9YTUlUX0RMRU5HVEggfAorCQkJCSAgSVNDU0lfSERSREdTVF9FTiB8CisJCQkJICBJU0NTSV9EQVRBREdTVF9FTiB8CisJCQkJICBJU0NTSV9JTklUSUFMX1IyVF9FTiB8CisJCQkJICBJU0NTSV9NQVhfUjJUIHwKKwkJCQkgIElTQ1NJX0lNTV9EQVRBX0VOIHwKKwkJCQkgIElTQ1NJX0ZJUlNUX0JVUlNUIHwKKwkJCQkgIElTQ1NJX01BWF9CVVJTVCB8CisJCQkJICBJU0NTSV9QRFVfSU5PUkRFUl9FTiB8CisJCQkJICBJU0NTSV9EQVRBU0VRX0lOT1JERVJfRU4gfAorCQkJCSAgSVNDU0lfRVJMIHwKKwkJCQkgIElTQ1NJX0NPTk5fUE9SVCB8CisJCQkJICBJU0NTSV9DT05OX0FERFJFU1MgfAorCQkJCSAgSVNDU0lfRVhQX1NUQVRTTiwKIAkuaG9zdF90ZW1wbGF0ZQkJPSAmaXNjc2lfc2h0LAotCS5ob3N0ZGF0YV9zaXplCQk9IHNpemVvZihzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiksCiAJLmNvbm5kYXRhX3NpemUJCT0gc2l6ZW9mKHN0cnVjdCBpc2NzaV9jb25uKSwKIAkubWF4X2Nvbm4JCT0gMSwKIAkubWF4X2NtZF9sZW4JCT0gSVNDU0lfVENQX01BWF9DTURfTEVOLAotCS5jcmVhdGVfc2Vzc2lvbgkJPSBpc2NzaV9zZXNzaW9uX2NyZWF0ZSwKLQkuZGVzdHJveV9zZXNzaW9uCT0gaXNjc2lfc2Vzc2lvbl9kZXN0cm95LAotCS5jcmVhdGVfY29ubgkJPSBpc2NzaV9jb25uX2NyZWF0ZSwKLQkuYmluZF9jb25uCQk9IGlzY3NpX2Nvbm5fYmluZCwKLQkuZGVzdHJveV9jb25uCQk9IGlzY3NpX2Nvbm5fZGVzdHJveSwKKwkvKiBzZXNzaW9uIG1hbmFnZW1lbnQgKi8KKwkuY3JlYXRlX3Nlc3Npb24JCT0gaXNjc2lfdGNwX3Nlc3Npb25fY3JlYXRlLAorCS5kZXN0cm95X3Nlc3Npb24JPSBpc2NzaV90Y3Bfc2Vzc2lvbl9kZXN0cm95LAorCS8qIGNvbm5lY3Rpb24gbWFuYWdlbWVudCAqLworCS5jcmVhdGVfY29ubgkJPSBpc2NzaV90Y3BfY29ubl9jcmVhdGUsCisJLmJpbmRfY29ubgkJPSBpc2NzaV90Y3BfY29ubl9iaW5kLAorCS5kZXN0cm95X2Nvbm4JCT0gaXNjc2lfdGNwX2Nvbm5fZGVzdHJveSwKIAkuc2V0X3BhcmFtCQk9IGlzY3NpX2Nvbm5fc2V0X3BhcmFtLAogCS5nZXRfY29ubl9wYXJhbQkJPSBpc2NzaV9jb25uX2dldF9wYXJhbSwKKwkuZ2V0X2Nvbm5fc3RyX3BhcmFtCT0gaXNjc2lfY29ubl9nZXRfc3RyX3BhcmFtLAogCS5nZXRfc2Vzc2lvbl9wYXJhbQk9IGlzY3NpX3Nlc3Npb25fZ2V0X3BhcmFtLAogCS5zdGFydF9jb25uCQk9IGlzY3NpX2Nvbm5fc3RhcnQsCiAJLnN0b3BfY29ubgkJPSBpc2NzaV9jb25uX3N0b3AsCisJLyogdGhlc2UgYXJlIGNhbGxlZCBhcyBwYXJ0IG9mIGNvbm4gcmVjb3ZlcnkgKi8KKwkuc3VzcGVuZF9jb25uX3JlY3YJPSBpc2NzaV90Y3Bfc3VzcGVuZF9jb25uX3J4LAorCS50ZXJtaW5hdGVfY29ubgkJPSBpc2NzaV90Y3BfdGVybWluYXRlX2Nvbm4sCisJLyogSU8gKi8KIAkuc2VuZF9wZHUJCT0gaXNjc2lfY29ubl9zZW5kX3BkdSwKIAkuZ2V0X3N0YXRzCQk9IGlzY3NpX2Nvbm5fZ2V0X3N0YXRzLAorCS5pbml0X2NtZF90YXNrCQk9IGlzY3NpX3RjcF9jbWRfaW5pdCwKKwkuaW5pdF9tZ210X3Rhc2sJCT0gaXNjc2lfdGNwX21nbXRfaW5pdCwKKwkueG1pdF9jbWRfdGFzawkJPSBpc2NzaV90Y3BfY3Rhc2tfeG1pdCwKKwkueG1pdF9tZ210X3Rhc2sJCT0gaXNjc2lfdGNwX210YXNrX3htaXQsCisJLmNsZWFudXBfY21kX3Rhc2sJPSBpc2NzaV90Y3BfY2xlYW51cF9jdGFzaywKKwkvKiByZWNvdmVyeSAqLworCS5zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0ID0gaXNjc2lfc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dCwKIH07CiAKIHN0YXRpYyBpbnQgX19pbml0CiBpc2NzaV90Y3BfaW5pdCh2b2lkKQogewogCWlmIChpc2NzaV9tYXhfbHVuIDwgMSkgewotCQlwcmludGsoS0VSTl9FUlIgIkludmFsaWQgbWF4X2x1biB2YWx1ZSBvZiAldVxuIiwgaXNjc2lfbWF4X2x1bik7CisJCXByaW50ayhLRVJOX0VSUiAiaXNjc2lfdGNwOiBJbnZhbGlkIG1heF9sdW4gdmFsdWUgb2YgJXVcbiIsCisJCSAgICAgICBpc2NzaV9tYXhfbHVuKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWlzY3NpX3RjcF90cmFuc3BvcnQubWF4X2x1biA9IGlzY3NpX21heF9sdW47CiAKLQl0YXNrY2FjaGUgPSBrbWVtX2NhY2hlX2NyZWF0ZSgiaXNjc2lfdGFza2NhY2hlIiwKLQkJCXNpemVvZihzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrKSwgMCwKLQkJCVNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCwgTlVMTCk7Ci0JaWYgKCF0YXNrY2FjaGUpCi0JCXJldHVybiAtRU5PTUVNOwotCiAJaWYgKCFpc2NzaV9yZWdpc3Rlcl90cmFuc3BvcnQoJmlzY3NpX3RjcF90cmFuc3BvcnQpKQotCQlrbWVtX2NhY2hlX2Rlc3Ryb3kodGFza2NhY2hlKTsKKwkJcmV0dXJuIC1FTk9ERVY7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM2NTMsNyArMjU1NCw2IEBACiBpc2NzaV90Y3BfZXhpdCh2b2lkKQogewogCWlzY3NpX3VucmVnaXN0ZXJfdHJhbnNwb3J0KCZpc2NzaV90Y3BfdHJhbnNwb3J0KTsKLQlrbWVtX2NhY2hlX2Rlc3Ryb3kodGFza2NhY2hlKTsKIH0KIAogbW9kdWxlX2luaXQoaXNjc2lfdGNwX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5oIGIvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5oCmluZGV4IGJhMjY3NDEuLjgwODMwMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuaAorKysgYi9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmgKQEAgLTIsNyArMiw4IEBACiAgKiBpU0NTSSBJbml0aWF0b3IgVENQIFRyYW5zcG9ydAogICogQ29weXJpZ2h0IChDKSAyMDA0IERtaXRyeSBZdXN1cG92CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQWxleCBBaXptYW4KLSAqIENvcHlyaWdodCAoQykgMjAwNSBNaWtlIENocmlzdGllCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDA2IE1pa2UgQ2hyaXN0aWUKKyAqIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogbWFpbnRhaW5lZCBieSBvcGVuLWlzY3NpQGdvb2dsZWdyb3Vwcy5jb20KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjEsMjAgKzIyLDcgQEAKICNpZm5kZWYgSVNDU0lfVENQX0gKICNkZWZpbmUgSVNDU0lfVENQX0gKIAotLyogU2Vzc2lvbidzIHN0YXRlcyAqLwotI2RlZmluZSBJU0NTSV9TVEFURV9GUkVFCQkxCi0jZGVmaW5lIElTQ1NJX1NUQVRFX0xPR0dFRF9JTgkJMgotI2RlZmluZSBJU0NTSV9TVEFURV9GQUlMRUQJCTMKLSNkZWZpbmUgSVNDU0lfU1RBVEVfVEVSTUlOQVRFCQk0Ci0KLS8qIENvbm5lY3Rpb24ncyBzdGF0ZXMgKi8KLSNkZWZpbmUgSVNDU0lfQ09OTl9JTklUSUFMX1NUQUdFCTAKLSNkZWZpbmUgSVNDU0lfQ09OTl9TVEFSVEVECQkxCi0jZGVmaW5lIElTQ1NJX0NPTk5fU1RPUFBFRAkJMgotI2RlZmluZSBJU0NTSV9DT05OX0NMRUFOVVBfV0FJVAkJMwotCi0vKiBDb25uZWN0aW9uIHN1c3BlbmQgImJpdCIgKi8KLSNkZWZpbmUgU1VTUEVORF9CSVQJCQkxCisjaW5jbHVkZSA8c2NzaS9saWJpc2NzaS5oPgogCiAvKiBTb2NrZXQncyBSZWNlaXZlIHN0YXRlIG1hY2hpbmUgKi8KICNkZWZpbmUgSU5fUFJPR1JFU1NfV0FJVF9IRUFERVIJCTB4MApAQCAtNDIsMTIgKzMwLDYgQEAKICNkZWZpbmUgSU5fUFJPR1JFU1NfREFUQV9SRUNWCQkweDIKICNkZWZpbmUgSU5fUFJPR1JFU1NfRERJR0VTVF9SRUNWCTB4MwogCi0vKiBUYXNrIE1nbXQgc3RhdGVzICovCi0jZGVmaW5lCVRNQUJPUlRfSU5JVElBTAkJCTB4MAotI2RlZmluZQlUTUFCT1JUX1NVQ0NFU1MJCQkweDEKLSNkZWZpbmUJVE1BQk9SVF9GQUlMRUQJCQkweDIKLSNkZWZpbmUJVE1BQk9SVF9USU1FRE9VVAkJMHgzCi0KIC8qIHhtaXQgc3RhdGUgbWFjaGluZSAqLwogI2RlZmluZQlYTVNUQVRFX0lETEUJCQkweDAKICNkZWZpbmUJWE1TVEFURV9SX0hEUgkJCTB4MQpAQCAtNjIsMzQgKzQ0LDE0IEBACiAjZGVmaW5lCVhNU1RBVEVfV19QQUQJCQkweDIwMAogI2RlZmluZSBYTVNUQVRFX0RBVEFfRElHRVNUCQkweDQwMAogCi0jZGVmaW5lIElTQ1NJX0NPTk5fTUFYCQkJMQogI2RlZmluZSBJU0NTSV9DT05OX1JDVkJVRl9NSU4JCTI2MjE0NAogI2RlZmluZSBJU0NTSV9DT05OX1NOREJVRl9NSU4JCTI2MjE0NAogI2RlZmluZSBJU0NTSV9QQURfTEVOCQkJNAogI2RlZmluZSBJU0NTSV9SMlRfTUFYCQkJMTYKLSNkZWZpbmUgSVNDU0lfWE1JVF9DTURTX01BWAkJMTI4CS8qIG11c3QgYmUgcG93ZXIgb2YgMiAqLwotI2RlZmluZSBJU0NTSV9NR01UX0NNRFNfTUFYCQkzMgkvKiBtdXN0IGJlIHBvd2VyIG9mIDIgKi8KLSNkZWZpbmUgSVNDU0lfTUdNVF9JVFRfT0ZGU0VUCQkweGEwMAogI2RlZmluZSBJU0NTSV9TR19UQUJMRVNJWkUJCVNHX0FMTAotI2RlZmluZSBJU0NTSV9ERUZfQ01EX1BFUl9MVU4JCTMyCi0jZGVmaW5lIElTQ1NJX01BWF9DTURfUEVSX0xVTgkJMTI4CiAjZGVmaW5lIElTQ1NJX1RDUF9NQVhfQ01EX0xFTgkJMTYKIAotI2RlZmluZSBJVFRfTUFTSwkJCSgweGZmZikKLSNkZWZpbmUgQ0lEX1NISUZUCQkJMTIKLSNkZWZpbmUgQ0lEX01BU0sJCQkoMHhmZmZmPDxDSURfU0hJRlQpCi0jZGVmaW5lIEFHRV9TSElGVAkJCTI4Ci0jZGVmaW5lIEFHRV9NQVNLCQkJKDB4Zjw8QUdFX1NISUZUKQotCi1zdHJ1Y3QgaXNjc2lfcXVldWUgewotCXN0cnVjdCBrZmlmbwkJKnF1ZXVlOwkJLyogRklGTyBRdWV1ZSAqLwotCXZvaWQJCQkqKnBvb2w7CQkvKiBQb29sIG9mIGVsZW1lbnRzICovCi0JaW50CQkJbWF4OwkJLyogTWF4IG51bWJlciBvZiBlbGVtZW50cyAqLwotfTsKLQotc3RydWN0IGlzY3NpX3Nlc3Npb247Ci1zdHJ1Y3QgaXNjc2lfY21kX3Rhc2s7Ci1zdHJ1Y3QgaXNjc2lfbWdtdF90YXNrOworc3RydWN0IHNvY2tldDsKIAogLyogU29ja2V0IGNvbm5lY3Rpb24gcmVjaWV2ZSBoZWxwZXIgKi8KIHN0cnVjdCBpc2NzaV90Y3BfcmVjdiB7CkBAIC0xMDQsNDggKzY2LDMyIEBACiAJc3RydWN0IGlzY3NpX2NtZF90YXNrCSpjdGFzazsJCS8qIGN1cnJlbnQgY21kIGluIHByb2dyZXNzICovCiAKIAkvKiBjb3BpZWQgYW5kIGZsaXBwZWQgdmFsdWVzICovCi0JaW50CQkJb3Bjb2RlOwotCWludAkJCWZsYWdzOwotCWludAkJCWNtZF9zdGF0dXM7Ci0JaW50CQkJYWhzbGVuOwogCWludAkJCWRhdGFsZW47Ci0JdWludDMyX3QJCWl0dDsKIAlpbnQJCQlkYXRhZGdzdDsKKwljaGFyCQkJemVyb19jb3B5X2hkcjsKIH07CiAKLXN0cnVjdCBpc2NzaV9jbHNfY29ubjsKLQotc3RydWN0IGlzY3NpX2Nvbm4gewotCXN0cnVjdCBpc2NzaV9jbHNfY29ubgkqY2xzX2Nvbm47CS8qIHB0ciB0byBjbGFzcyBjb25uZWN0aW9uICovCitzdHJ1Y3QgaXNjc2lfdGNwX2Nvbm4geworCXN0cnVjdCBpc2NzaV9jb25uCSppc2NzaV9jb25uOworCXN0cnVjdCBzb2NrZXQJCSpzb2NrOwogCXN0cnVjdCBpc2NzaV9oZHIJaGRyOwkJLyogaGVhZGVyIHBsYWNlaG9sZGVyICovCiAJY2hhcgkJCWhkcmV4dFs0KnNpemVvZihfX3UxNikgKwogCQkJCSAgICBzaXplb2YoX191MzIpXTsKIAlpbnQJCQlkYXRhX2NvcGllZDsKIAljaGFyCQkJKmRhdGE7CQkvKiBkYXRhIHBsYWNlaG9sZGVyICovCi0Jc3RydWN0IHNvY2tldCAgICAgICAgICAgKnNvY2s7ICAgICAgICAgIC8qIFRDUCBzb2NrZXQgKi8KIAlpbnQJCQlkYXRhX3NpemU7CS8qIGFjdHVhbCByZWN2X2RsZW5ndGggKi8KIAlpbnQJCQlzdG9wX3N0YWdlOwkvKiBjb25uX3N0b3AoKSBmbGFnOiAqCiAJCQkJCQkgKiBzdG9wIHRvIHJlY292ZXIsICAqCiAJCQkJCQkgKiBzdG9wIHRvIHRlcm1pbmF0ZSAqLwogCS8qIGlTQ1NJIGNvbm5lY3Rpb24td2lkZSBzZXF1ZW5jaW5nICovCi0JdWludDMyX3QJCWV4cF9zdGF0c247CiAJaW50CQkJaGRyX3NpemU7CS8qIFBEVSBoZWFkZXIgc2l6ZSAqLwotCXVuc2lnbmVkIGxvbmcJCXN1c3BlbmRfcng7CS8qIHN1c3BlbmQgUnggKi8KIAogCXN0cnVjdCBjcnlwdG9fdGZtCSpyeF90Zm07CS8qIENSQzMyQyAoUngpICovCiAJc3RydWN0IGNyeXB0b190Zm0JKmRhdGFfcnhfdGZtOwkvKiBDUkMzMkMgKFJ4KSBmb3IgZGF0YSAqLwogCiAJLyogY29udHJvbCBkYXRhICovCi0JaW50CQkJc2Vuc2VsZW47CS8qIHNjc2kgc2Vuc2UgbGVuZ3RoICovCi0JaW50CQkJaWQ7CQkvKiBDSUQgKi8KIAlzdHJ1Y3QgaXNjc2lfdGNwX3JlY3YJaW47CQkvKiBUQ1AgcmVjZWl2ZSBjb250ZXh0ICovCi0Jc3RydWN0IGlzY3NpX3Nlc3Npb24JKnNlc3Npb247CS8qIHBhcmVudCBzZXNzaW9uICovCi0Jc3RydWN0IGxpc3RfaGVhZAlpdGVtOwkJLyogbWFpbnRhaW5zIGxpc3Qgb2YgY29ubnMgKi8KIAlpbnQJCQlpbl9wcm9ncmVzczsJLyogY29ubmVjdGlvbiBzdGF0ZSBtYWNoaW5lICovCi0JaW50CQkJY19zdGFnZTsJLyogY29ubmVjdGlvbiBzdGF0ZSAqLwotCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sJKmxvZ2luX210YXNrOwkvKiBtdGFzayB1c2VkIGZvciBsb2dpbi90ZXh0ICovCi0Jc3RydWN0IGlzY3NpX21nbXRfdGFzawkqbXRhc2s7CQkvKiB4bWl0IG10YXNrIGluIHByb2dyZXNzICovCi0Jc3RydWN0IGlzY3NpX2NtZF90YXNrCSpjdGFzazsJCS8qIHhtaXQgY3Rhc2sgaW4gcHJvZ3Jlc3MgKi8KIAogCS8qIG9sZCB2YWx1ZXMgZm9yIHNvY2tldCBjYWxsYmFja3MgKi8KIAl2b2lkCQkJKCpvbGRfZGF0YV9yZWFkeSkoc3RydWN0IHNvY2sgKiwgaW50KTsKQEAgLTE1NSw5MyArMTAxLDE0IEBACiAJLyogeG1pdCAqLwogCXN0cnVjdCBjcnlwdG9fdGZtCSp0eF90Zm07CS8qIENSQzMyQyAoVHgpICovCiAJc3RydWN0IGNyeXB0b190Zm0JKmRhdGFfdHhfdGZtOwkvKiBDUkMzMkMgKFR4KSBmb3IgZGF0YSAqLwotCXN0cnVjdCBrZmlmbwkJKndyaXRlcXVldWU7CS8qIHdyaXRlIGNtZHMgZm9yIERhdGEtT3V0cyAqLwotCXN0cnVjdCBrZmlmbwkJKmltbXF1ZXVlOwkvKiBpbW1lZGlhdGUgeG1pdCBxdWV1ZSAqLwotCXN0cnVjdCBrZmlmbwkJKm1nbXRxdWV1ZTsJLyogbWdtdCAoY29udHJvbCkgeG1pdCBxdWV1ZSAqLwotCXN0cnVjdCBrZmlmbwkJKnhtaXRxdWV1ZTsJLyogZGF0YS1wYXRoIGNtZCBxdWV1ZSAqLwotCXN0cnVjdCB3b3JrX3N0cnVjdAl4bWl0d29yazsJLyogcGVyLWNvbm4uIHhtaXQgd29ya3F1ZXVlICovCi0Jc3RydWN0IG11dGV4CQl4bWl0bXV0ZXg7CS8qIHNlcmlhbGl6ZXMgY29ubmVjdGlvbiB4bWl0LAotCQkJCQkJICogYWNjZXNzIHRvIGtmaWZvczoJICAqCi0JCQkJCQkgKiB4bWl0cXVldWUsIHdyaXRlcXVldWUsICoKLQkJCQkJCSAqIGltbXF1ZXVlLCBtZ210cXVldWUgICAgKi8KLQl1bnNpZ25lZCBsb25nCQlzdXNwZW5kX3R4OwkvKiBzdXNwZW5kIFR4ICovCiAKLQkvKiBhYm9ydCAqLwotCXdhaXRfcXVldWVfaGVhZF90CWVod2FpdDsJCS8qIHVzZWQgaW4gZWhfYWJvcnQoKSAgICAgKi8KLQlzdHJ1Y3QgaXNjc2lfdG0JCXRtaGRyOwotCXN0cnVjdCB0aW1lcl9saXN0CXRtYWJvcnRfdGltZXI7ICAvKiBhYm9ydCB0aW1lciAqLwotCWludAkJCXRtYWJvcnRfc3RhdGU7ICAvKiBzZWUgVE1BQk9SVF9JTklUSUFMLCBldGMuKi8KLQotCS8qIG5lZ290aWF0ZWQgcGFyYW1zICovCi0JaW50CQkJbWF4X3JlY3ZfZGxlbmd0aDsKLQlpbnQJCQltYXhfeG1pdF9kbGVuZ3RoOwotCWludAkJCWhkcmRnc3RfZW47Ci0JaW50CQkJZGF0YWRnc3RfZW47Ci0KLQkvKiBNSUItc3RhdGlzdGljcyAqLwotCXVpbnQ2NF90CQl0eGRhdGFfb2N0ZXRzOwotCXVpbnQ2NF90CQlyeGRhdGFfb2N0ZXRzOwotCXVpbnQzMl90CQlzY3NpY21kX3BkdXNfY250OwotCXVpbnQzMl90CQlkYXRhb3V0X3BkdXNfY250OwotCXVpbnQzMl90CQlzY3NpcnNwX3BkdXNfY250OwotCXVpbnQzMl90CQlkYXRhaW5fcGR1c19jbnQ7Ci0JdWludDMyX3QJCXIydF9wZHVzX2NudDsKLQl1aW50MzJfdAkJdG1mY21kX3BkdXNfY250OwotCWludDMyX3QJCQl0bWZyc3BfcGR1c19jbnQ7Ci0KLQkvKiBjdXN0b20gc3RhdGlzdGljcyAqLworCS8qIE1JQiBjdXN0b20gc3RhdGlzdGljcyAqLwogCXVpbnQzMl90CQlzZW5kcGFnZV9mYWlsdXJlc19jbnQ7CiAJdWludDMyX3QJCWRpc2NvbnRpZ3VvdXNfaGRyX2NudDsKLQl1aW50MzJfdAkJZWhfYWJvcnRfY250OwogCiAJc3NpemVfdCAoKnNlbmRwYWdlKShzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBpbnQpOwogfTsKIAotc3RydWN0IGlzY3NpX3Nlc3Npb24gewotCS8qIGlTQ1NJIHNlc3Npb24td2lkZSBzZXF1ZW5jaW5nICovCi0JdWludDMyX3QJCWNtZHNuOwotCXVpbnQzMl90CQlleHBfY21kc247Ci0JdWludDMyX3QJCW1heF9jbWRzbjsKLQotCS8qIGNvbmZpZ3VyYXRpb24gKi8KLQlpbnQJCQlpbml0aWFsX3IydF9lbjsKLQlpbnQJCQltYXhfcjJ0OwotCWludAkJCWltbV9kYXRhX2VuOwotCWludAkJCWZpcnN0X2J1cnN0OwotCWludAkJCW1heF9idXJzdDsKLQlpbnQJCQl0aW1lMndhaXQ7Ci0JaW50CQkJdGltZTJyZXRhaW47Ci0JaW50CQkJcGR1X2lub3JkZXJfZW47Ci0JaW50CQkJZGF0YXNlcV9pbm9yZGVyX2VuOwotCWludAkJCWVybDsKLQlpbnQJCQlpZm1hcmtlcl9lbjsKLQlpbnQJCQlvZm1hcmtlcl9lbjsKLQotCS8qIGNvbnRyb2wgZGF0YSAqLwotCXN0cnVjdCBTY3NpX0hvc3QJKmhvc3Q7Ci0JaW50CQkJaWQ7Ci0Jc3RydWN0IGlzY3NpX2Nvbm4JKmxlYWRjb25uOwkvKiBsZWFkaW5nIGNvbm5lY3Rpb24gKi8KLQlzcGlubG9ja190CQlsb2NrOwkJLyogcHJvdGVjdHMgc2Vzc2lvbiBzdGF0ZSwgKgotCQkJCQkJICogc2VxdWVuY2UgbnVtYmVycywgICAgICAgKgotCQkJCQkJICogc2Vzc2lvbiByZXNvdXJjZXM6ICAgICAgKgotCQkJCQkJICogLSBjbWRwb29sLAkJICAgKgotCQkJCQkJICogLSBtZ210cG9vbCwJCSAgICoKLQkJCQkJCSAqIC0gcjJ0cG9vbAkJICAgKi8KLQlpbnQJCQlzdGF0ZTsJCS8qIHNlc3Npb24gc3RhdGUgICAgICAgICAgICovCi0Jc3RydWN0IGxpc3RfaGVhZAlpdGVtOwotCXZvaWQJCQkqYXV0aF9jbGllbnQ7Ci0JaW50CQkJY29ubl9jbnQ7Ci0JaW50CQkJYWdlOwkJLyogY291bnRzIHNlc3Npb24gcmUtb3BlbnMgKi8KLQotCXN0cnVjdCBsaXN0X2hlYWQJY29ubmVjdGlvbnM7CS8qIGxpc3Qgb2YgY29ubmVjdGlvbnMgKi8KLQlpbnQJCQljbWRzX21heDsJLyogc2l6ZSBvZiBjbWRzIGFycmF5ICovCi0Jc3RydWN0IGlzY3NpX2NtZF90YXNrCSoqY21kczsJCS8qIE9yaWdpbmFsIENtZHMgYXJyICovCi0Jc3RydWN0IGlzY3NpX3F1ZXVlCWNtZHBvb2w7CS8qIFBEVSdzIHBvb2wgKi8KLQlpbnQJCQltZ210cG9vbF9tYXg7CS8qIHNpemUgb2YgbWdtdCBhcnJheSAqLwotCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sJKiptZ210X2NtZHM7CS8qIE9yaWdpbmFsIG1nbXQgYXJyICovCi0Jc3RydWN0IGlzY3NpX3F1ZXVlCW1nbXRwb29sOwkvKiBNZ210IFBEVSdzIHBvb2wgKi8KLX07Ci0KIHN0cnVjdCBpc2NzaV9idWYgewogCXN0cnVjdCBzY2F0dGVybGlzdAlzZzsKIAl1bnNpZ25lZCBpbnQJCXNlbnQ7CkBAIC0yNTEsMjIgKzExOCwxNyBAQAogc3RydWN0IGlzY3NpX2RhdGFfdGFzayB7CiAJc3RydWN0IGlzY3NpX2RhdGEJaGRyOwkJCS8qIFBEVSAqLwogCWNoYXIJCQloZHJleHRbc2l6ZW9mKF9fdTMyKV07CS8qIEhlYWRlci1EaWdlc3QgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkCWl0ZW07CQkJLyogZGF0YSBxdWV1ZSBpdGVtICovCiAJc3RydWN0IGlzY3NpX2J1ZglkaWdlc3RidWY7CQkvKiBkaWdlc3QgYnVmZmVyICovCiAJdWludDMyX3QJCWRpZ2VzdDsJCQkvKiBkYXRhIGRpZ2VzdCAqLwogfTsKLSNkZWZpbmUgSVNDU0lfRFRBU0tfREVGQVVMVF9NQVgJSVNDU0lfU0dfVEFCTEVTSVpFICogUEFHRV9TSVpFIC8gNTEyCiAKLXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgewotCXN0cnVjdCBpc2NzaV9oZHIJaGRyOwkJLyogbWdtdC4gUERVICovCi0JY2hhcgkJCWhkcmV4dFtzaXplb2YoX191MzIpXTsJLyogSGVhZGVyLURpZ2VzdCAqLwotCWNoYXIJCQkqZGF0YTsJCS8qIG1nbXQgcGF5bG9hZCAqLworc3RydWN0IGlzY3NpX3RjcF9tZ210X3Rhc2sgeworCXN0cnVjdCBpc2NzaV9oZHIJaGRyOworCWNoYXIJCQloZHJleHRbc2l6ZW9mKF9fdTMyKV07IC8qIEhlYWRlci1EaWdlc3QgKi8KIAlpbnQJCQl4bXN0YXRlOwkvKiBtZ210IHhtaXQgcHJvZ3Jlc3MgKi8KLQlpbnQJCQlkYXRhX2NvdW50OwkvKiBjb3VudHMgZGF0YSB0byBiZSBzZW50ICovCiAJc3RydWN0IGlzY3NpX2J1ZgloZWFkYnVmOwkvKiBoZWFkZXIgYnVmZmVyICovCiAJc3RydWN0IGlzY3NpX2J1ZglzZW5kYnVmOwkvKiBpbiBwcm9ncmVzcyBidWZmZXIgKi8KIAlpbnQJCQlzZW50OwotCXVpbnQzMl90CQlpdHQ7CQkvKiB0aGlzIElUVCAqLwogfTsKIAogc3RydWN0IGlzY3NpX3IydF9pbmZvIHsKQEAgLTI4MCw0OCArMTQyLDM2IEBACiAJaW50CQkJZGF0YV9jb3VudDsJLyogREFUQS1PdXQgcGF5bG9hZCBwcm9ncmVzcyAqLwogCXN0cnVjdCBzY2F0dGVybGlzdAkqc2c7CQkvKiBwZXItUjJUIFNHIGxpc3QgKi8KIAlpbnQJCQlzb2xpY2l0X2RhdGFzbjsKLQlzdHJ1Y3QgaXNjc2lfZGF0YV90YXNrICAgKmR0YXNrOyAgICAgICAgLyogd2hpY2ggZGF0YSB0YXNrICovCisJc3RydWN0IGlzY3NpX2RhdGFfdGFzayAgIGR0YXNrOyAgICAgICAgLyogd2hpY2ggZGF0YSB0YXNrICovCiB9OwogCi1zdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgewotCXN0cnVjdCBpc2NzaV9jbWQJaGRyOwkJCS8qIGlTQ1NJIFBEVSBoZWFkZXIgKi8KK3N0cnVjdCBpc2NzaV90Y3BfY21kX3Rhc2sgeworCXN0cnVjdCBpc2NzaV9jbWQJaGRyOwogCWNoYXIJCQloZHJleHRbNCpzaXplb2YoX191MTYpKwkvKiBBSFMgKi8KIAkJCQkgICAgc2l6ZW9mKF9fdTMyKV07CS8qIEhlYWRlckRpZ2VzdCAqLwogCWNoYXIJCQlwYWRbSVNDU0lfUEFEX0xFTl07Ci0JaW50CQkJaXR0OwkJCS8qIHRoaXMgSVRUICovCi0JaW50CQkJZGF0YXNuOwkJCS8qIERhdGFTTiAqLworCWludAkJCXBhZF9jb3VudDsJCS8qIHBhZGRlZCBieXRlcyAqLwogCXN0cnVjdCBpc2NzaV9idWYJaGVhZGJ1ZjsJCS8qIGhlYWRlciBidWYgKHhtaXQpICovCiAJc3RydWN0IGlzY3NpX2J1ZglzZW5kYnVmOwkJLyogaW4gcHJvZ3Jlc3MgYnVmZmVyKi8KKwlpbnQJCQl4bXN0YXRlOwkJLyogeG1pdCB4dGF0ZSBtYWNoaW5lICovCiAJaW50CQkJc2VudDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QJKnNnOwkJCS8qIHBlci1jbWQgU0cgbGlzdCAgKi8KIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QJKmJhZF9zZzsJCS8qIGFzc2VydCBzdGF0ZW1lbnQgKi8KIAlpbnQJCQlzZ19jb3VudDsJCS8qIFNHJ3MgdG8gcHJvY2VzcyAgKi8KLQl1aW50MzJfdAkJdW5zb2xfZGF0YXNuOwogCXVpbnQzMl90CQlleHBfcjJ0c247Ci0JaW50CQkJeG1zdGF0ZTsJCS8qIHhtaXQgeHRhdGUgbWFjaGluZSAqLwotCWludAkJCWltbV9jb3VudDsJCS8qIGltbS1kYXRhIChieXRlcykgICAqLwotCWludAkJCXVuc29sX2NvdW50OwkJLyogdW5zb2xpY2l0ZWQgKGJ5dGVzKSovCiAJaW50CQkJcjJ0X2RhdGFfY291bnQ7CQkvKiBSMlQgRGF0YS1PdXQgYnl0ZXMgKi8KLQlpbnQJCQlkYXRhX2NvdW50OwkJLyogcmVtYWluaW5nIERhdGEtT3V0ICovCi0JaW50CQkJcGFkX2NvdW50OwkJLyogcGFkZGVkIGJ5dGVzICovCi0Jc3RydWN0IHNjc2lfY21uZAkqc2M7CQkJLyogYXNzb2NpYXRlZCBTQ1NJIGNtZCovCi0JaW50CQkJdG90YWxfbGVuZ3RoOwogCWludAkJCWRhdGFfb2Zmc2V0OwotCXN0cnVjdCBpc2NzaV9jb25uCSpjb25uOwkJCS8qIHVzZWQgY29ubmVjdGlvbiAgICAqLwotCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sJKm10YXNrOwkJCS8qIHRtZiBtdGFzayBpbiBwcm9nciAqLwotCiAJc3RydWN0IGlzY3NpX3IydF9pbmZvCSpyMnQ7CQkJLyogaW4gcHJvZ3Jlc3MgUjJUICAgICovCiAJc3RydWN0IGlzY3NpX3F1ZXVlCXIydHBvb2w7CiAJc3RydWN0IGtmaWZvCQkqcjJ0cXVldWU7CiAJc3RydWN0IGlzY3NpX3IydF9pbmZvCSoqcjJ0czsKLQlzdHJ1Y3QgbGlzdF9oZWFkCWRhdGFxdWV1ZTsJCS8qIERhdGEtT3V0IGRhdGFxdWV1ZSAqLwotCW1lbXBvb2xfdAkJKmRhdGFwb29sOwogCXVpbnQzMl90CQlkYXRhZGlnZXN0OwkJLyogZm9yIHJlY292ZXIgZGlnZXN0ICovCiAJaW50CQkJZGlnZXN0X2NvdW50OwogCXVpbnQzMl90CQlpbW1kaWdlc3Q7CQkvKiBmb3IgaW1tIGRhdGEgKi8KIAlzdHJ1Y3QgaXNjc2lfYnVmCWltbWJ1ZjsJCQkvKiBmb3IgaW1tIGRhdGEgZGlnZXN0ICovCi0Jc3RydWN0IGlzY3NpX2RhdGFfdGFzayAgICpkdGFzazsJCS8qIGRhdGEgdGFzayBpbiBwcm9ncmVzcyovCi0JaW50CQkJZGlnZXN0X29mZnNldDsJCS8qIGZvciBwYXJ0aWFsIGJ1ZmYgZGlnZXN0ICovCisJc3RydWN0IGlzY3NpX2RhdGFfdGFzawkqZHRhc2s7CQkvKiBkYXRhIHRhc2sgaW4gcHJvZ3Jlc3MqLworCXN0cnVjdCBpc2NzaV9kYXRhX3Rhc2sJdW5zb2xfZHRhc2s7CS8qIHVuc29sIGRhdGEgdGFzayAqLworCWludAkJCWRpZ2VzdF9vZmZzZXQ7CS8qIGZvciBwYXJ0aWFsIGJ1ZmYgZGlnZXN0ICovCiB9OwogCiAjZW5kaWYgLyogSVNDU0lfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYmF0YS1ibWRtYS5jIGIvZHJpdmVycy9zY3NpL2xpYmF0YS1ibWRtYS5jCmluZGV4IDgzNWRmZjAuLjAwNGUxYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJhdGEtYm1kbWEuYworKysgYi9kcml2ZXJzL3Njc2kvbGliYXRhLWJtZG1hLmMKQEAgLTY1Miw2ICs2NTIsMTUxIEBACiAJYXRhX2FsdHN0YXR1cyhhcCk7ICAgICAgICAvKiBkdW1teSByZWFkICovCiB9CiAKKy8qKgorICoJYXRhX2JtZG1hX2ZyZWV6ZSAtIEZyZWV6ZSBCTURNQSBjb250cm9sbGVyIHBvcnQKKyAqCUBhcDogcG9ydCB0byBmcmVlemUKKyAqCisgKglGcmVlemUgQk1ETUEgY29udHJvbGxlciBwb3J0LgorICoKKyAqCUxPQ0tJTkc6CisgKglJbmhlcml0ZWQgZnJvbSBjYWxsZXIuCisgKi8KK3ZvaWQgYXRhX2JtZG1hX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBhdGFfaW9wb3J0cyAqaW9hZGRyID0gJmFwLT5pb2FkZHI7CisKKwlhcC0+Y3RsIHw9IEFUQV9OSUVOOworCWFwLT5sYXN0X2N0bCA9IGFwLT5jdGw7CisKKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfTU1JTykKKwkJd3JpdGViKGFwLT5jdGwsICh2b2lkIF9faW9tZW0gKilpb2FkZHItPmN0bF9hZGRyKTsKKwllbHNlCisJCW91dGIoYXAtPmN0bCwgaW9hZGRyLT5jdGxfYWRkcik7Cit9CisKKy8qKgorICoJYXRhX2JtZG1hX3RoYXcgLSBUaGF3IEJNRE1BIGNvbnRyb2xsZXIgcG9ydAorICoJQGFwOiBwb3J0IHRvIHRoYXcKKyAqCisgKglUaGF3IEJNRE1BIGNvbnRyb2xsZXIgcG9ydC4KKyAqCisgKglMT0NLSU5HOgorICoJSW5oZXJpdGVkIGZyb20gY2FsbGVyLgorICovCit2b2lkIGF0YV9ibWRtYV90aGF3KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJLyogY2xlYXIgJiByZS1lbmFibGUgaW50ZXJydXB0cyAqLworCWF0YV9jaGtfc3RhdHVzKGFwKTsKKwlhcC0+b3BzLT5pcnFfY2xlYXIoYXApOworCWlmIChhcC0+aW9hZGRyLmN0bF9hZGRyKQkvKiBGSVhNRTogaGFjay4gY3JlYXRlIGEgaG9vayBpbnN0ZWFkICovCisJCWF0YV9pcnFfb24oYXApOworfQorCisvKioKKyAqCWF0YV9ibWRtYV9kcml2ZV9laCAtIFBlcmZvcm0gRUggd2l0aCBnaXZlbiBtZXRob2RzIGZvciBCTURNQSBjb250cm9sbGVyCisgKglAYXA6IHBvcnQgdG8gaGFuZGxlIGVycm9yIGZvcgorICoJQHByZXJlc2V0OiBwcmVyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQorICoJQHNvZnRyZXNldDogc29mdHJlc2V0IG1ldGhvZCAoY2FuIGJlIE5VTEwpCisgKglAaGFyZHJlc2V0OiBoYXJkcmVzZXQgbWV0aG9kIChjYW4gYmUgTlVMTCkKKyAqCUBwb3N0cmVzZXQ6IHBvc3RyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQorICoKKyAqCUhhbmRsZSBlcnJvciBmb3IgQVRBIEJNRE1BIGNvbnRyb2xsZXIuICBJdCBjYW4gaGFuZGxlIGJvdGgKKyAqCVBBVEEgYW5kIFNBVEEgY29udHJvbGxlcnMuICBNYW55IGNvbnRyb2xsZXJzIHNob3VsZCBiZSBhYmxlIHRvCisgKgl1c2UgdGhpcyBFSCBhcy1pcyBvciB3aXRoIHNvbWUgYWRkZWQgaGFuZGxpbmcgYmVmb3JlIGFuZAorICoJYWZ0ZXIuCisgKgorICoJVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBjb25zdHJ1Y3RpbmcKKyAqCS0+ZXJyb3JfaGFuZGxlciBjYWxsYmFjayBieSBsb3cgbGV2ZWwgZHJpdmVycy4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCisgKi8KK3ZvaWQgYXRhX2JtZG1hX2RyaXZlX2VoKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGF0YV9wcmVyZXNldF9mbl90IHByZXJlc2V0LAorCQkJYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LCBhdGFfcmVzZXRfZm5fdCBoYXJkcmVzZXQsCisJCQlhdGFfcG9zdHJlc2V0X2ZuX3QgcG9zdHJlc2V0KQoreworCXN0cnVjdCBhdGFfZWhfY29udGV4dCAqZWhjID0gJmFwLT5laF9jb250ZXh0OworCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgdGhhdyA9IDA7CisKKwlxYyA9IF9fYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7CisJaWYgKHFjICYmICEocWMtPmZsYWdzICYgQVRBX1FDRkxBR19GQUlMRUQpKQorCQlxYyA9IE5VTEw7CisKKwkvKiByZXNldCBQSU8gSFNNIGFuZCBzdG9wIERNQSBlbmdpbmUgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCisJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0lETEU7CisKKwlpZiAocWMgJiYgKHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9ETUEgfHwKKwkJICAgcWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0FUQVBJX0RNQSkpIHsKKwkJdTggaG9zdF9zdGF0OworCisJCWhvc3Rfc3RhdCA9IGF0YV9ibWRtYV9zdGF0dXMoYXApOworCisJCWF0YV9laGlfcHVzaF9kZXNjKCZlaGMtPmksICJCTURNQSBzdGF0IDB4JXgiLCBob3N0X3N0YXQpOworCisJCS8qIEJNRE1BIGNvbnRyb2xsZXJzIGluZGljYXRlIGhvc3QgYnVzIGVycm9yIGJ5CisJCSAqIHNldHRpbmcgRE1BX0VSUiBiaXQgYW5kIHRpbWluZyBvdXQuICBBcyBpdCB3YXNuJ3QKKwkJICogcmVhbGx5IGEgdGltZW91dCBldmVudCwgYWRqdXN0IGVycm9yIG1hc2sgYW5kCisJCSAqIGNhbmNlbCBmcm96ZW4gc3RhdGUuCisJCSAqLworCQlpZiAocWMtPmVycl9tYXNrID09IEFDX0VSUl9USU1FT1VUICYmIGhvc3Rfc3RhdCAmIEFUQV9ETUFfRVJSKSB7CisJCQlxYy0+ZXJyX21hc2sgPSBBQ19FUlJfSE9TVF9CVVM7CisJCQl0aGF3ID0gMTsKKwkJfQorCisJCWFwLT5vcHMtPmJtZG1hX3N0b3AocWMpOworCX0KKworCWF0YV9hbHRzdGF0dXMoYXApOworCWF0YV9jaGtfc3RhdHVzKGFwKTsKKwlhcC0+b3BzLT5pcnFfY2xlYXIoYXApOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCisJaWYgKHRoYXcpCisJCWF0YV9laF90aGF3X3BvcnQoYXApOworCisJLyogUElPIGFuZCBETUEgZW5naW5lcyBoYXZlIGJlZW4gc3RvcHBlZCwgcGVyZm9ybSByZWNvdmVyeSAqLworCWF0YV9kb19laChhcCwgcHJlcmVzZXQsIHNvZnRyZXNldCwgaGFyZHJlc2V0LCBwb3N0cmVzZXQpOworfQorCisvKioKKyAqCWF0YV9ibWRtYV9lcnJvcl9oYW5kbGVyIC0gU3RvY2sgZXJyb3IgaGFuZGxlciBmb3IgQk1ETUEgY29udHJvbGxlcgorICoJQGFwOiBwb3J0IHRvIGhhbmRsZSBlcnJvciBmb3IKKyAqCisgKglTdG9jayBlcnJvciBoYW5kbGVyIGZvciBCTURNQSBjb250cm9sbGVyLgorICoKKyAqCUxPQ0tJTkc6CisgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkKKyAqLwordm9pZCBhdGFfYm1kbWFfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCWF0YV9yZXNldF9mbl90IGhhcmRyZXNldDsKKworCWhhcmRyZXNldCA9IE5VTEw7CisJaWYgKHNhdGFfc2NyX3ZhbGlkKGFwKSkKKwkJaGFyZHJlc2V0ID0gc2F0YV9zdGRfaGFyZHJlc2V0OworCisJYXRhX2JtZG1hX2RyaXZlX2VoKGFwLCBhdGFfc3RkX3ByZXJlc2V0LCBhdGFfc3RkX3NvZnRyZXNldCwgaGFyZHJlc2V0LAorCQkJICAgYXRhX3N0ZF9wb3N0cmVzZXQpOworfQorCisvKioKKyAqCWF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCAtIFN0b2NrIHBvc3RfaW50ZXJuYWxfY21kIGZvcgorICoJCQkJICAgICAgQk1ETUEgY29udHJvbGxlcgorICoJQHFjOiBpbnRlcm5hbCBjb21tYW5kIHRvIGNsZWFuIHVwCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKQorICovCit2b2lkIGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCWF0YV9ibWRtYV9zdG9wKHFjKTsKK30KKwogI2lmZGVmIENPTkZJR19QQ0kKIHN0YXRpYyBzdHJ1Y3QgYXRhX3Byb2JlX2VudCAqCiBhdGFfcHJvYmVfZW50X2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGF0YV9wb3J0X2luZm8gKnBvcnQpCkBAIC05MzAsMTAgKzEwNzUsMjEgQEAKIAogCS8qIEZJWE1FOiBjaGVjayBhdGFfZGV2aWNlX2FkZCByZXR1cm4gKi8KIAlpZiAobGVnYWN5X21vZGUpIHsKLQkJaWYgKGxlZ2FjeV9tb2RlICYgKDEgPDwgMCkpCisJCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gTlVMTDsKKworCQlpZiAobGVnYWN5X21vZGUgJiAoMSA8PCAwKSkgewogCQkJYXRhX2RldmljZV9hZGQocHJvYmVfZW50KTsKLQkJaWYgKGxlZ2FjeV9tb2RlICYgKDEgPDwgMSkpCisJCQlob3N0X3NldCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCQl9CisKKwkJaWYgKGxlZ2FjeV9tb2RlICYgKDEgPDwgMSkpIHsKIAkJCWF0YV9kZXZpY2VfYWRkKHByb2JlX2VudDIpOworCQkJaWYgKGhvc3Rfc2V0KSB7CisJCQkJaG9zdF9zZXQtPm5leHQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwkJCQlkZXZfc2V0X2RydmRhdGEoZGV2LCBob3N0X3NldCk7CisJCQl9CisJCX0KIAl9IGVsc2UKIAkJYXRhX2RldmljZV9hZGQocHJvYmVfZW50KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYmF0YS1jb3JlLmMgYi9kcml2ZXJzL3Njc2kvbGliYXRhLWNvcmUuYwppbmRleCBkZTliYTc4Li42YzY2ODc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbGliYXRhLWNvcmUuYworKysgYi9kcml2ZXJzL3Njc2kvbGliYXRhLWNvcmUuYwpAQCAtNjEsMjIgKzYxLDI5IEBACiAKICNpbmNsdWRlICJsaWJhdGEuaCIKIAotc3RhdGljIHVuc2lnbmVkIGludCBhdGFfZGV2X2luaXRfcGFyYW1zKHN0cnVjdCBhdGFfcG9ydCAqYXAsCi0JCQkJCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCi0JCQkJCXUxNiBoZWFkcywKLQkJCQkJdTE2IHNlY3RvcnMpOwotc3RhdGljIHZvaWQgYXRhX3NldF9tb2RlKHN0cnVjdCBhdGFfcG9ydCAqYXApOwotc3RhdGljIHVuc2lnbmVkIGludCBhdGFfZGV2X3NldF94ZmVybW9kZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCQkgc3RydWN0IGF0YV9kZXZpY2UgKmRldik7Ci1zdGF0aWMgdm9pZCBhdGFfZGV2X3hmZXJtYXNrKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpOworLyogZGVib3VuY2UgdGltaW5nIHBhcmFtZXRlcnMgaW4gbXNlY3MgeyBpbnRlcnZhbCwgZHVyYXRpb24sIHRpbWVvdXQgfSAqLworY29uc3QgdW5zaWduZWQgbG9uZyBzYXRhX2RlYl90aW1pbmdfYm9vdFtdCQk9IHsgICA1LCAgMTAwLCAyMDAwIH07Citjb25zdCB1bnNpZ25lZCBsb25nIHNhdGFfZGViX3RpbWluZ19laFtdCQk9IHsgIDI1LCAgNTAwLCAyMDAwIH07Citjb25zdCB1bnNpZ25lZCBsb25nIHNhdGFfZGViX3RpbWluZ19iZWZvcmVfZnNyc3RbXQk9IHsgMTAwLCAyMDAwLCA1MDAwIH07CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXRhX2Rldl9pbml0X3BhcmFtcyhzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAorCQkJCQl1MTYgaGVhZHMsIHUxNiBzZWN0b3JzKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXRhX2Rldl9zZXRfeGZlcm1vZGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldik7CitzdGF0aWMgdm9pZCBhdGFfZGV2X3hmZXJtYXNrKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpOwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGF0YV91bmlxdWVfaWQgPSAxOwogc3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICphdGFfd3E7CiAKK3N0cnVjdCB3b3JrcXVldWVfc3RydWN0ICphdGFfYXV4X3dxOworCiBpbnQgYXRhcGlfZW5hYmxlZCA9IDE7CiBtb2R1bGVfcGFyYW0oYXRhcGlfZW5hYmxlZCwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoYXRhcGlfZW5hYmxlZCwgIkVuYWJsZSBkaXNjb3Zlcnkgb2YgQVRBUEkgZGV2aWNlcyAoMD1vZmYsIDE9b24pIik7CiAKK2ludCBhdGFwaV9kbWFkaXIgPSAwOworbW9kdWxlX3BhcmFtKGF0YXBpX2RtYWRpciwgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoYXRhcGlfZG1hZGlyLCAiRW5hYmxlIEFUQVBJIERNQURJUiBicmlkZ2Ugc3VwcG9ydCAoMD1vZmYsIDE9b24pIik7CisKIGludCBsaWJhdGFfZnVhID0gMDsKIG1vZHVsZV9wYXJhbV9uYW1lZChmdWEsIGxpYmF0YV9mdWEsIGludCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGZ1YSwgIkZVQSBzdXBwb3J0ICgwPW9mZiwgMT1vbikiKTsKQEAgLTM5NywxMSArNDA0LDIyIEBACiAJcmV0dXJuICI8bi9hPiI7CiB9CiAKLXN0YXRpYyB2b2lkIGF0YV9kZXZfZGlzYWJsZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQorc3RhdGljIGNvbnN0IGNoYXIgKnNhdGFfc3BkX3N0cmluZyh1bnNpZ25lZCBpbnQgc3BkKQogewotCWlmIChhdGFfZGV2X3ByZXNlbnQoZGV2KSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGEldTogZGV2ICV1IGRpc2FibGVkXG4iLAotCQkgICAgICAgYXAtPmlkLCBkZXYtPmRldm5vKTsKKwlzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNwZF9zdHJbXSA9IHsKKwkJIjEuNSBHYnBzIiwKKwkJIjMuMCBHYnBzIiwKKwl9OworCisJaWYgKHNwZCA9PSAwIHx8IChzcGQgLSAxKSA+PSBBUlJBWV9TSVpFKHNwZF9zdHIpKQorCQlyZXR1cm4gIjx1bmtub3duPiI7CisJcmV0dXJuIHNwZF9zdHJbc3BkIC0gMV07Cit9CisKK3ZvaWQgYXRhX2Rldl9kaXNhYmxlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCit7CisJaWYgKGF0YV9kZXZfZW5hYmxlZChkZXYpICYmIGF0YV9tc2dfZHJ2KGRldi0+YXApKSB7CisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9XQVJOSU5HLCAiZGlzYWJsZWRcbiIpOwogCQlkZXYtPmNsYXNzKys7CiAJfQogfQpAQCAtNzU5LDggKzc3NywxMSBAQAogdm9pZCBhdGFfZGV2X3NlbGVjdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgZGV2aWNlLAogCQkJICAgdW5zaWduZWQgaW50IHdhaXQsIHVuc2lnbmVkIGludCBjYW5fc2xlZXApCiB7Ci0JVlBSSU5USygiRU5URVIsIGF0YSV1OiBkZXZpY2UgJXUsIHdhaXQgJXVcbiIsCi0JCWFwLT5pZCwgZGV2aWNlLCB3YWl0KTsKKwlpZiAoYXRhX21zZ19wcm9iZShhcCkpIHsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sICJhdGFfZGV2X3NlbGVjdDogRU5URVIsIGF0YSV1OiAiCisJCQkJImRldmljZSAldSwgd2FpdCAldVxuIiwKKwkJCQlhcC0+aWQsIGRldmljZSwgd2FpdCk7CisJfQogCiAJaWYgKHdhaXQpCiAJCWF0YV93YWl0X2lkbGUoYXApOwpAQCAtOTE1LDkgKzkzNiw5IEBACiAKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKIAlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfRkxVU0hfUE9SVF9UQVNLOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKIAogCURQUklOVEsoImZsdXNoICMxXG4iKTsKIAlmbHVzaF93b3JrcXVldWUoYXRhX3dxKTsKQEAgLTkyOCwzMCArOTQ5LDMxIEBACiAJICogQ2FuY2VsIGFuZCBmbHVzaC4KIAkgKi8KIAlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmFwLT5wb3J0X3Rhc2spKSB7Ci0JCURQUklOVEsoImZsdXNoICMyXG4iKTsKKwkJaWYgKGF0YV9tc2dfY3RsKGFwKSkKKwkJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9ERUJVRywgIiVzOiBmbHVzaCAjMlxuIiwgX19GVU5DVElPTl9fKTsKIAkJZmx1c2hfd29ya3F1ZXVlKGF0YV93cSk7CiAJfQogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CiAJYXAtPmZsYWdzICY9IH5BVEFfRkxBR19GTFVTSF9QT1JUX1RBU0s7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOwogCi0JRFBSSU5USygiRVhJVFxuIik7CisJaWYgKGF0YV9tc2dfY3RsKGFwKSkKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0RFQlVHLCAiJXM6IEVYSVRcbiIsIF9fRlVOQ1RJT05fXyk7CiB9CiAKIHZvaWQgYXRhX3FjX2NvbXBsZXRlX2ludGVybmFsKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCiB7CiAJc3RydWN0IGNvbXBsZXRpb24gKndhaXRpbmcgPSBxYy0+cHJpdmF0ZV9kYXRhOwogCi0JcWMtPmFwLT5vcHMtPnRmX3JlYWQocWMtPmFwLCAmcWMtPnRmKTsKIAljb21wbGV0ZSh3YWl0aW5nKTsKIH0KIAogLyoqCiAgKglhdGFfZXhlY19pbnRlcm5hbCAtIGV4ZWN1dGUgbGliYXRhIGludGVybmFsIGNvbW1hbmQKLSAqCUBhcDogUG9ydCB0byB3aGljaCB0aGUgY29tbWFuZCBpcyBzZW50CiAgKglAZGV2OiBEZXZpY2UgdG8gd2hpY2ggdGhlIGNvbW1hbmQgaXMgc2VudAogICoJQHRmOiBUYXNrZmlsZSByZWdpc3RlcnMgZm9yIHRoZSBjb21tYW5kIGFuZCB0aGUgcmVzdWx0CisgKglAY2RiOiBDREIgZm9yIHBhY2tldCBjb21tYW5kCiAgKglAZG1hX2RpcjogRGF0YSB0cmFuZmVyIGRpcmVjdGlvbiBvZiB0aGUgY29tbWFuZAogICoJQGJ1ZjogRGF0YSBidWZmZXIgb2YgdGhlIGNvbW1hbmQKICAqCUBidWZsZW46IExlbmd0aCBvZiBkYXRhIGJ1ZmZlcgpAQCAtOTY0LDI1ICs5ODYsNjYgQEAKICAqCiAgKglMT0NLSU5HOgogICoJTm9uZS4gIFNob3VsZCBiZSBjYWxsZWQgd2l0aCBrZXJuZWwgY29udGV4dCwgbWlnaHQgc2xlZXAuCisgKgorICoJUkVUVVJOUzoKKyAqCVplcm8gb24gc3VjY2VzcywgQUNfRVJSXyogbWFzayBvbiBmYWlsdXJlCiAgKi8KLQotc3RhdGljIHVuc2lnbmVkCi1hdGFfZXhlY19pbnRlcm5hbChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAotCQkgIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmLAotCQkgIGludCBkbWFfZGlyLCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBidWZsZW4pCit1bnNpZ25lZCBhdGFfZXhlY19pbnRlcm5hbChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAorCQkJICAgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYsIGNvbnN0IHU4ICpjZGIsCisJCQkgICBpbnQgZG1hX2Rpciwgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgYnVmbGVuKQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOwogCXU4IGNvbW1hbmQgPSB0Zi0+Y29tbWFuZDsKIAlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOworCXVuc2lnbmVkIGludCB0YWcsIHByZWVtcHRlZF90YWc7CisJdTMyIHByZWVtcHRlZF9zYWN0aXZlLCBwcmVlbXB0ZWRfcWNfYWN0aXZlOwogCURFQ0xBUkVfQ09NUExFVElPTih3YWl0KTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGludCBlcnJfbWFzazsKKwlpbnQgcmM7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKIAotCXFjID0gYXRhX3FjX25ld19pbml0KGFwLCBkZXYpOwotCUJVR19PTihxYyA9PSBOVUxMKTsKKwkvKiBubyBpbnRlcm5hbCBjb21tYW5kIHdoaWxlIGZyb3plbiAqLworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19GUk9aRU4pIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCQlyZXR1cm4gQUNfRVJSX1NZU1RFTTsKKwl9CiAKKwkvKiBpbml0aWFsaXplIGludGVybmFsIHFjICovCisKKwkvKiBYWFg6IFRhZyAwIGlzIHVzZWQgZm9yIGRyaXZlcnMgd2l0aCBsZWdhY3kgRUggYXMgc29tZQorCSAqIGRyaXZlcnMgY2hva2UgaWYgYW55IG90aGVyIHRhZyBpcyBnaXZlbi4gIFRoaXMgYnJlYWtzCisJICogYXRhX3RhZ19pbnRlcm5hbCgpIHRlc3QgZm9yIHRob3NlIGRyaXZlcnMuICBEb24ndCB1c2UgbmV3CisJICogRUggc3R1ZmYgd2l0aG91dCBjb252ZXJ0aW5nIHRvIGl0LgorCSAqLworCWlmIChhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKQorCQl0YWcgPSBBVEFfVEFHX0lOVEVSTkFMOworCWVsc2UKKwkJdGFnID0gMDsKKworCWlmICh0ZXN0X2FuZF9zZXRfYml0KHRhZywgJmFwLT5xY19hbGxvY2F0ZWQpKQorCQlCVUcoKTsKKwlxYyA9IF9fYXRhX3FjX2Zyb21fdGFnKGFwLCB0YWcpOworCisJcWMtPnRhZyA9IHRhZzsKKwlxYy0+c2NzaWNtZCA9IE5VTEw7CisJcWMtPmFwID0gYXA7CisJcWMtPmRldiA9IGRldjsKKwlhdGFfcWNfcmVpbml0KHFjKTsKKworCXByZWVtcHRlZF90YWcgPSBhcC0+YWN0aXZlX3RhZzsKKwlwcmVlbXB0ZWRfc2FjdGl2ZSA9IGFwLT5zYWN0aXZlOworCXByZWVtcHRlZF9xY19hY3RpdmUgPSBhcC0+cWNfYWN0aXZlOworCWFwLT5hY3RpdmVfdGFnID0gQVRBX1RBR19QT0lTT047CisJYXAtPnNhY3RpdmUgPSAwOworCWFwLT5xY19hY3RpdmUgPSAwOworCisJLyogcHJlcGFyZSAmIGlzc3VlIHFjICovCiAJcWMtPnRmID0gKnRmOworCWlmIChjZGIpCisJCW1lbWNweShxYy0+Y2RiLCBjZGIsIEFUQVBJX0NEQl9MRU4pOworCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX1JFU1VMVF9URjsKIAlxYy0+ZG1hX2RpciA9IGRtYV9kaXI7CiAJaWYgKGRtYV9kaXIgIT0gRE1BX05PTkUpIHsKIAkJYXRhX3NnX2luaXRfb25lKHFjLCBidWYsIGJ1Zmxlbik7CkBAIC05OTQsMzMgKzEwNTcsNTggQEAKIAogCWF0YV9xY19pc3N1ZShxYyk7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CiAKLQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmd2FpdCwgQVRBX1RNT1VUX0lOVEVSTkFMKSkgewotCQlhdGFfcG9ydF9mbHVzaF90YXNrKGFwKTsKKwlyYyA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmd2FpdCwgQVRBX1RNT1VUX0lOVEVSTkFMKTsKIAotCQlzcGluX2xvY2tfaXJxc2F2ZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7CisJYXRhX3BvcnRfZmx1c2hfdGFzayhhcCk7CisKKwlpZiAoIXJjKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CiAKIAkJLyogV2UncmUgcmFjaW5nIHdpdGggaXJxIGhlcmUuICBJZiB3ZSBsb3NlLCB0aGUKIAkJICogZm9sbG93aW5nIHRlc3QgcHJldmVudHMgdXMgZnJvbSBjb21wbGV0aW5nIHRoZSBxYwotCQkgKiBhZ2Fpbi4gIElmIGNvbXBsZXRpb24gaXJxIG9jY3VycyBhZnRlciBoZXJlIGJ1dAotCQkgKiBiZWZvcmUgdGhlIGNhbGxlciBjbGVhbnMgdXAsIGl0IHdpbGwgcmVzdWx0IGluIGEKLQkJICogc3B1cmlvdXMgaW50ZXJydXB0LiAgV2UgY2FuIGxpdmUgd2l0aCB0aGF0LgorCQkgKiB0d2ljZS4gIElmIHdlIHdpbiwgdGhlIHBvcnQgaXMgZnJvemVuIGFuZCB3aWxsIGJlCisJCSAqIGNsZWFuZWQgdXAgYnkgLT5wb3N0X2ludGVybmFsX2NtZCgpLgogCQkgKi8KIAkJaWYgKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfQUNUSVZFKSB7Ci0JCQlxYy0+ZXJyX21hc2sgPSBBQ19FUlJfVElNRU9VVDsKLQkJCWF0YV9xY19jb21wbGV0ZShxYyk7Ci0JCQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGEldTogcWMgdGltZW91dCAoY21kIDB4JXgpXG4iLAotCQkJICAgICAgIGFwLT5pZCwgY29tbWFuZCk7CisJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX1RJTUVPVVQ7CisKKwkJCWlmIChhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKQorCQkJCWF0YV9wb3J0X2ZyZWV6ZShhcCk7CisJCQllbHNlCisJCQkJYXRhX3FjX2NvbXBsZXRlKHFjKTsKKworCQkJaWYgKGF0YV9tc2dfd2FybihhcCkpCisJCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsCisJCQkJICAgICAgICJxYyB0aW1lb3V0IChjbWQgMHgleClcbiIsIGNvbW1hbmQpOwogCQl9CiAKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKIAl9CiAKLQkqdGYgPSBxYy0+dGY7CisJLyogZG8gcG9zdF9pbnRlcm5hbF9jbWQgKi8KKwlpZiAoYXAtPm9wcy0+cG9zdF9pbnRlcm5hbF9jbWQpCisJCWFwLT5vcHMtPnBvc3RfaW50ZXJuYWxfY21kKHFjKTsKKworCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX0ZBSUxFRCAmJiAhcWMtPmVycl9tYXNrKSB7CisJCWlmIChhdGFfbXNnX3dhcm4oYXApKQorCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsIAorCQkJCSJ6ZXJvIGVycl9tYXNrIGZvciBmYWlsZWQgIgorCQkJICAgICAgICJpbnRlcm5hbCBjb21tYW5kLCBhc3N1bWluZyBBQ19FUlJfT1RIRVJcbiIpOworCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX09USEVSOworCX0KKworCS8qIGZpbmlzaCB1cCAqLworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisKKwkqdGYgPSBxYy0+cmVzdWx0X3RmOwogCWVycl9tYXNrID0gcWMtPmVycl9tYXNrOwogCiAJYXRhX3FjX2ZyZWUocWMpOworCWFwLT5hY3RpdmVfdGFnID0gcHJlZW1wdGVkX3RhZzsKKwlhcC0+c2FjdGl2ZSA9IHByZWVtcHRlZF9zYWN0aXZlOworCWFwLT5xY19hY3RpdmUgPSBwcmVlbXB0ZWRfcWNfYWN0aXZlOwogCiAJLyogWFhYIC0gU29tZSBMTEREcyAoc2F0YV9tdikgZGlzYWJsZSBwb3J0IG9uIGNvbW1hbmQgZmFpbHVyZS4KIAkgKiBVbnRpbCB0aG9zZSBkcml2ZXJzIGFyZSBmaXhlZCwgd2UgZGV0ZWN0IHRoZSBjb25kaXRpb24KQEAgLTEwMzMsMTEgKzExMjEsMTMgQEAKIAkgKgogCSAqIEtpbGwgdGhlIGZvbGxvd2luZyBjb2RlIGFzIHNvb24gYXMgdGhvc2UgZHJpdmVycyBhcmUgZml4ZWQuCiAJICovCi0JaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX1BPUlRfRElTQUJMRUQpIHsKKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpIHsKIAkJZXJyX21hc2sgfD0gQUNfRVJSX1NZU1RFTTsKIAkJYXRhX3BvcnRfcHJvYmUoYXApOwogCX0KIAorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKwogCXJldHVybiBlcnJfbWFzazsKIH0KIApAQCAtMTA3NiwxMSArMTE2NiwxMCBAQAogCiAvKioKICAqCWF0YV9kZXZfcmVhZF9pZCAtIFJlYWQgSUQgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgZGV2aWNlCi0gKglAYXA6IHBvcnQgb24gd2hpY2ggdGFyZ2V0IGRldmljZSByZXNpZGVzCiAgKglAZGV2OiB0YXJnZXQgZGV2aWNlCiAgKglAcF9jbGFzczogcG9pbnRlciB0byBjbGFzcyBvZiB0aGUgdGFyZ2V0IGRldmljZSAobWF5IGJlIGNoYW5nZWQpCiAgKglAcG9zdF9yZXNldDogaXMgdGhpcyByZWFkIElEIHBvc3QtcmVzZXQ/Ci0gKglAcF9pZDogcmVhZCBJREVOVElGWSBwYWdlIChuZXdseSBhbGxvY2F0ZWQpCisgKglAaWQ6IGJ1ZmZlciB0byByZWFkIElERU5USUZZIGRhdGEgaW50bwogICoKICAqCVJlYWQgSUQgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgZGV2aWNlLiAgQVRBX0NNRF9JRF9BVEEgaXMKICAqCXBlcmZvcm1lZCBvbiBBVEEgZGV2aWNlcyBhbmQgQVRBX0NNRF9JRF9BVEFQSSBvbiBBVEFQSQpAQCAtMTA5MywyOSArMTE4MiwyNCBAQAogICoJUkVUVVJOUzoKICAqCTAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZS4KICAqLwotc3RhdGljIGludCBhdGFfZGV2X3JlYWRfaWQoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldiwKLQkJCSAgIHVuc2lnbmVkIGludCAqcF9jbGFzcywgaW50IHBvc3RfcmVzZXQsIHUxNiAqKnBfaWQpCitpbnQgYXRhX2Rldl9yZWFkX2lkKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCAqcF9jbGFzcywKKwkJICAgIGludCBwb3N0X3Jlc2V0LCB1MTYgKmlkKQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOwogCXVuc2lnbmVkIGludCBjbGFzcyA9ICpwX2NsYXNzOwogCXN0cnVjdCBhdGFfdGFza2ZpbGUgdGY7CiAJdW5zaWduZWQgaW50IGVycl9tYXNrID0gMDsKLQl1MTYgKmlkOwogCWNvbnN0IGNoYXIgKnJlYXNvbjsKIAlpbnQgcmM7CiAKLQlEUFJJTlRLKCJFTlRFUiwgaG9zdCAldSwgZGV2ICV1XG4iLCBhcC0+aWQsIGRldi0+ZGV2bm8pOworCWlmIChhdGFfbXNnX2N0bChhcCkpCisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9ERUJVRywgIiVzOiBFTlRFUiwgaG9zdCAldSwgZGV2ICV1XG4iLCAKKwkJCQlfX0ZVTkNUSU9OX18sIGFwLT5pZCwgZGV2LT5kZXZubyk7CiAKIAlhdGFfZGV2X3NlbGVjdChhcCwgZGV2LT5kZXZubywgMSwgMSk7IC8qIHNlbGVjdCBkZXZpY2UgMC8xICovCiAKLQlpZCA9IGttYWxsb2Moc2l6ZW9mKGlkWzBdKSAqIEFUQV9JRF9XT1JEUywgR0ZQX0tFUk5FTCk7Ci0JaWYgKGlkID09IE5VTEwpIHsKLQkJcmMgPSAtRU5PTUVNOwotCQlyZWFzb24gPSAib3V0IG9mIG1lbW9yeSI7Ci0JCWdvdG8gZXJyX291dDsKLQl9Ci0KICByZXRyeToKLQlhdGFfdGZfaW5pdChhcCwgJnRmLCBkZXYtPmRldm5vKTsKKwlhdGFfdGZfaW5pdChkZXYsICZ0Zik7CiAKIAlzd2l0Y2ggKGNsYXNzKSB7CiAJY2FzZSBBVEFfREVWX0FUQToKQEAgLTExMzIsNyArMTIxNiw3IEBACiAKIAl0Zi5wcm90b2NvbCA9IEFUQV9QUk9UX1BJTzsKIAotCWVycl9tYXNrID0gYXRhX2V4ZWNfaW50ZXJuYWwoYXAsIGRldiwgJnRmLCBETUFfRlJPTV9ERVZJQ0UsCisJZXJyX21hc2sgPSBhdGFfZXhlY19pbnRlcm5hbChkZXYsICZ0ZiwgTlVMTCwgRE1BX0ZST01fREVWSUNFLAogCQkJCSAgICAgaWQsIHNpemVvZihpZFswXSkgKiBBVEFfSURfV09SRFMpOwogCWlmIChlcnJfbWFzaykgewogCQlyYyA9IC1FSU87CkBAIC0xMTU5LDcgKzEyNDMsNyBAQAogCQkgKiBTb21lIGRyaXZlcyB3ZXJlIHZlcnkgc3BlY2lmaWMgYWJvdXQgdGhhdCBleGFjdCBzZXF1ZW5jZS4KIAkJICovCiAJCWlmIChhdGFfaWRfbWFqb3JfdmVyc2lvbihpZCkgPCA0IHx8ICFhdGFfaWRfaGFzX2xiYShpZCkpIHsKLQkJCWVycl9tYXNrID0gYXRhX2Rldl9pbml0X3BhcmFtcyhhcCwgZGV2LCBpZFszXSwgaWRbNl0pOworCQkJZXJyX21hc2sgPSBhdGFfZGV2X2luaXRfcGFyYW1zKGRldiwgaWRbM10sIGlkWzZdKTsKIAkJCWlmIChlcnJfbWFzaykgewogCQkJCXJjID0gLUVJTzsKIAkJCQlyZWFzb24gPSAiSU5JVF9ERVZfUEFSQU1TIGZhaWxlZCI7CkBAIC0xMTc1LDI1ICsxMjU5LDQ1IEBACiAJfQogCiAJKnBfY2xhc3MgPSBjbGFzczsKLQkqcF9pZCA9IGlkOworCiAJcmV0dXJuIDA7CiAKICBlcnJfb3V0OgotCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1OiBkZXYgJXUgZmFpbGVkIHRvIElERU5USUZZICglcylcbiIsCi0JICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubywgcmVhc29uKTsKLQlrZnJlZShpZCk7CisJaWYgKGF0YV9tc2dfd2FybihhcCkpIAorCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fV0FSTklORywgImZhaWxlZCB0byBJREVOVElGWSAiCisJCSAgICAgICAiKCVzLCBlcnJfbWFzaz0weCV4KVxuIiwgcmVhc29uLCBlcnJfbWFzayk7CiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW5saW5lIHU4IGF0YV9kZXZfa25vYmJsZShjb25zdCBzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCSBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQorc3RhdGljIGlubGluZSB1OCBhdGFfZGV2X2tub2JibGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKLQlyZXR1cm4gKChhcC0+Y2JsID09IEFUQV9DQkxfU0FUQSkgJiYgKCFhdGFfaWRfaXNfc2F0YShkZXYtPmlkKSkpOworCXJldHVybiAoKGRldi0+YXAtPmNibCA9PSBBVEFfQ0JMX1NBVEEpICYmICghYXRhX2lkX2lzX3NhdGEoZGV2LT5pZCkpKTsKK30KKworc3RhdGljIHZvaWQgYXRhX2Rldl9jb25maWdfbmNxKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkgICAgICAgY2hhciAqZGVzYywgc2l6ZV90IGRlc2Nfc3opCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGRldi0+YXA7CisJaW50IGhkZXB0aCA9IDAsIGRkZXB0aCA9IGF0YV9pZF9xdWV1ZV9kZXB0aChkZXYtPmlkKTsKKworCWlmICghYXRhX2lkX2hhc19uY3EoZGV2LT5pZCkpIHsKKwkJZGVzY1swXSA9ICdcMCc7CisJCXJldHVybjsKKwl9CisKKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfTkNRKSB7CisJCWhkZXB0aCA9IG1pbihhcC0+aG9zdC0+Y2FuX3F1ZXVlLCBBVEFfTUFYX1FVRVVFIC0gMSk7CisJCWRldi0+ZmxhZ3MgfD0gQVRBX0RGTEFHX05DUTsKKwl9CisKKwlpZiAoaGRlcHRoID49IGRkZXB0aCkKKwkJc25wcmludGYoZGVzYywgZGVzY19zeiwgIk5DUSAoZGVwdGggJWQpIiwgZGRlcHRoKTsKKwllbHNlCisJCXNucHJpbnRmKGRlc2MsIGRlc2Nfc3osICJOQ1EgKGRlcHRoICVkLyVkKSIsIGhkZXB0aCwgZGRlcHRoKTsKIH0KIAogLyoqCiAgKglhdGFfZGV2X2NvbmZpZ3VyZSAtIENvbmZpZ3VyZSB0aGUgc3BlY2lmaWVkIEFUQS9BVEFQSSBkZXZpY2UKLSAqCUBhcDogUG9ydCBvbiB3aGljaCB0YXJnZXQgZGV2aWNlIHJlc2lkZXMKICAqCUBkZXY6IFRhcmdldCBkZXZpY2UgdG8gY29uZmlndXJlCiAgKglAcHJpbnRfaW5mbzogRW5hYmxlIGRldmljZSBpbmZvIHByaW50b3V0CiAgKgpAQCAtMTIwNiwzMCArMTMxMCwzMyBAQAogICoJUkVUVVJOUzoKICAqCTAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZQogICovCi1zdGF0aWMgaW50IGF0YV9kZXZfY29uZmlndXJlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCi0JCQkgICAgIGludCBwcmludF9pbmZvKQoraW50IGF0YV9kZXZfY29uZmlndXJlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIGludCBwcmludF9pbmZvKQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOwogCWNvbnN0IHUxNiAqaWQgPSBkZXYtPmlkOwogCXVuc2lnbmVkIGludCB4ZmVyX21hc2s7CiAJaW50IGksIHJjOwogCi0JaWYgKCFhdGFfZGV2X3ByZXNlbnQoZGV2KSkgewotCQlEUFJJTlRLKCJFTlRFUi9FWElUIChob3N0ICV1LCBkZXYgJXUpIC0tIG5vZGV2XG4iLAotCQkJYXAtPmlkLCBkZXYtPmRldm5vKTsKKwlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYpICYmIGF0YV9tc2dfaW5mbyhhcCkpIHsKKwkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0lORk8sICIlczogRU5URVIvRVhJVCAoaG9zdCAldSwgZGV2ICV1KSAtLSBub2RldlxuIiwKKwkJCV9fRlVOQ1RJT05fXywgYXAtPmlkLCBkZXYtPmRldm5vKTsKIAkJcmV0dXJuIDA7CiAJfQogCi0JRFBSSU5USygiRU5URVIsIGhvc3QgJXUsIGRldiAldVxuIiwgYXAtPmlkLCBkZXYtPmRldm5vKTsKKwlpZiAoYXRhX21zZ19wcm9iZShhcCkpCisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9ERUJVRywgIiVzOiBFTlRFUiwgaG9zdCAldSwgZGV2ICV1XG4iLCAKKwkJCV9fRlVOQ1RJT05fXywgYXAtPmlkLCBkZXYtPmRldm5vKTsKIAogCS8qIHByaW50IGRldmljZSBjYXBhYmlsaXRpZXMgKi8KLQlpZiAocHJpbnRfaW5mbykKLQkJcHJpbnRrKEtFUk5fREVCVUcgImF0YSV1OiBkZXYgJXUgY2ZnIDQ5OiUwNHggODI6JTA0eCA4MzolMDR4ICIKLQkJICAgICAgICI4NDolMDR4IDg1OiUwNHggODY6JTA0eCA4NzolMDR4IDg4OiUwNHhcbiIsCi0JCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sIGlkWzQ5XSwgaWRbODJdLCBpZFs4M10sCi0JCSAgICAgICBpZFs4NF0sIGlkWzg1XSwgaWRbODZdLCBpZFs4N10sIGlkWzg4XSk7CisJaWYgKGF0YV9tc2dfcHJvYmUoYXApKQorCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fREVCVUcsICIlczogY2ZnIDQ5OiUwNHggODI6JTA0eCA4MzolMDR4ICIKKwkJCSAgICAgICAiODQ6JTA0eCA4NTolMDR4IDg2OiUwNHggODc6JTA0eCA4ODolMDR4XG4iLAorCQkJICAgICAgIF9fRlVOQ1RJT05fXywKKwkJCSAgICAgICBpZFs0OV0sIGlkWzgyXSwgaWRbODNdLCBpZFs4NF0sCisJCQkgICAgICAgaWRbODVdLCBpZFs4Nl0sIGlkWzg3XSwgaWRbODhdKTsKIAogCS8qIGluaXRpYWxpemUgdG8tYmUtY29uZmlndXJlZCBwYXJhbWV0ZXJzICovCi0JZGV2LT5mbGFncyA9IDA7CisJZGV2LT5mbGFncyAmPSB+QVRBX0RGTEFHX0NGR19NQVNLOwogCWRldi0+bWF4X3NlY3RvcnMgPSAwOwogCWRldi0+Y2RiX2xlbiA9IDA7CiAJZGV2LT5uX3NlY3RvcnMgPSAwOwpAQCAtMTI0NCw3ICsxMzUxLDggQEAKIAkvKiBmaW5kIG1heCB0cmFuc2ZlciBtb2RlOyBmb3IgcHJpbnRrIG9ubHkgKi8KIAl4ZmVyX21hc2sgPSBhdGFfaWRfeGZlcm1hc2soaWQpOwogCi0JYXRhX2R1bXBfaWQoaWQpOworCWlmIChhdGFfbXNnX3Byb2JlKGFwKSkKKwkJYXRhX2R1bXBfaWQoaWQpOwogCiAJLyogQVRBLXNwZWNpZmljIGZlYXR1cmUgdGVzdHMgKi8KIAlpZiAoZGV2LT5jbGFzcyA9PSBBVEFfREVWX0FUQSkgewpAQCAtMTI1Miw2ICsxMzYwLDcgQEAKIAogCQlpZiAoYXRhX2lkX2hhc19sYmEoaWQpKSB7CiAJCQljb25zdCBjaGFyICpsYmFfZGVzYzsKKwkJCWNoYXIgbmNxX2Rlc2NbMjBdOwogCiAJCQlsYmFfZGVzYyA9ICJMQkEiOwogCQkJZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfTEJBOwpAQCAtMTI2MCwxNSArMTM2OSwxNyBAQAogCQkJCWxiYV9kZXNjID0gIkxCQTQ4IjsKIAkJCX0KIAorCQkJLyogY29uZmlnIE5DUSAqLworCQkJYXRhX2Rldl9jb25maWdfbmNxKGRldiwgbmNxX2Rlc2MsIHNpemVvZihuY3FfZGVzYykpOworCiAJCQkvKiBwcmludCBkZXZpY2UgaW5mbyB0byBkbWVzZyAqLwotCQkJaWYgKHByaW50X2luZm8pCi0JCQkJcHJpbnRrKEtFUk5fSU5GTyAiYXRhJXU6IGRldiAldSBBVEEtJWQsICIKLQkJCQkgICAgICAgIm1heCAlcywgJUx1IHNlY3RvcnM6ICVzXG4iLAotCQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sCi0JCQkJICAgICAgIGF0YV9pZF9tYWpvcl92ZXJzaW9uKGlkKSwKLQkJCQkgICAgICAgYXRhX21vZGVfc3RyaW5nKHhmZXJfbWFzayksCi0JCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5uX3NlY3RvcnMsCi0JCQkJICAgICAgIGxiYV9kZXNjKTsKKwkJCWlmIChhdGFfbXNnX2luZm8oYXApKQorCQkJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLCAiQVRBLSVkLCAiCisJCQkJCSJtYXggJXMsICVMdSBzZWN0b3JzOiAlcyAlc1xuIiwKKwkJCQkJYXRhX2lkX21ham9yX3ZlcnNpb24oaWQpLAorCQkJCQlhdGFfbW9kZV9zdHJpbmcoeGZlcl9tYXNrKSwKKwkJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylkZXYtPm5fc2VjdG9ycywKKwkJCQkJbGJhX2Rlc2MsIG5jcV9kZXNjKTsKIAkJfSBlbHNlIHsKIAkJCS8qIENIUyAqLwogCkBAIC0xMjg1LDE0ICsxMzk2LDIwIEBACiAJCQl9CiAKIAkJCS8qIHByaW50IGRldmljZSBpbmZvIHRvIGRtZXNnICovCi0JCQlpZiAocHJpbnRfaW5mbykKLQkJCQlwcmludGsoS0VSTl9JTkZPICJhdGEldTogZGV2ICV1IEFUQS0lZCwgIgotCQkJCSAgICAgICAibWF4ICVzLCAlTHUgc2VjdG9yczogQ0hTICV1LyV1LyV1XG4iLAotCQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sCi0JCQkJICAgICAgIGF0YV9pZF9tYWpvcl92ZXJzaW9uKGlkKSwKLQkJCQkgICAgICAgYXRhX21vZGVfc3RyaW5nKHhmZXJfbWFzayksCi0JCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5uX3NlY3RvcnMsCi0JCQkJICAgICAgIGRldi0+Y3lsaW5kZXJzLCBkZXYtPmhlYWRzLCBkZXYtPnNlY3RvcnMpOworCQkJaWYgKGF0YV9tc2dfaW5mbyhhcCkpCisJCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0lORk8sICJBVEEtJWQsICIKKwkJCQkJIm1heCAlcywgJUx1IHNlY3RvcnM6IENIUyAldS8ldS8ldVxuIiwKKwkJCQkJYXRhX2lkX21ham9yX3ZlcnNpb24oaWQpLAorCQkJCQlhdGFfbW9kZV9zdHJpbmcoeGZlcl9tYXNrKSwKKwkJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylkZXYtPm5fc2VjdG9ycywKKwkJCQkJZGV2LT5jeWxpbmRlcnMsIGRldi0+aGVhZHMsIGRldi0+c2VjdG9ycyk7CisJCX0KKworCQlpZiAoZGV2LT5pZFs1OV0gJiAweDEwMCkgeworCQkJZGV2LT5tdWx0aV9jb3VudCA9IGRldi0+aWRbNTldICYgMHhmZjsKKwkJCWlmIChhdGFfbXNnX2luZm8oYXApKQorCQkJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLCAiYXRhJXU6IGRldiAldSBtdWx0aSBjb3VudCAldVxuIiwKKwkJCQlhcC0+aWQsIGRldi0+ZGV2bm8sIGRldi0+bXVsdGlfY291bnQpOwogCQl9CiAKIAkJZGV2LT5jZGJfbGVuID0gMTY7CkBAIC0xMzAwLDE4ICsxNDE3LDI4IEBACiAKIAkvKiBBVEFQSS1zcGVjaWZpYyBmZWF0dXJlIHRlc3RzICovCiAJZWxzZSBpZiAoZGV2LT5jbGFzcyA9PSBBVEFfREVWX0FUQVBJKSB7CisJCWNoYXIgKmNkYl9pbnRyX3N0cmluZyA9ICIiOworCiAJCXJjID0gYXRhcGlfY2RiX2xlbihpZCk7CiAJCWlmICgocmMgPCAxMikgfHwgKHJjID4gQVRBUElfQ0RCX0xFTikpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1OiB1bnN1cHBvcnRlZCBDREIgbGVuXG4iLCBhcC0+aWQpOworCQkJaWYgKGF0YV9tc2dfd2FybihhcCkpCisJCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsIAorCQkJCQkidW5zdXBwb3J0ZWQgQ0RCIGxlblxuIik7CiAJCQlyYyA9IC1FSU5WQUw7CiAJCQlnb3RvIGVycl9vdXRfbm9zdXA7CiAJCX0KIAkJZGV2LT5jZGJfbGVuID0gKHVuc2lnbmVkIGludCkgcmM7CiAKKwkJaWYgKGF0YV9pZF9jZGJfaW50cihkZXYtPmlkKSkgeworCQkJZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfQ0RCX0lOVFI7CisJCQljZGJfaW50cl9zdHJpbmcgPSAiLCBDREIgaW50ciI7CisJCX0KKwogCQkvKiBwcmludCBkZXZpY2UgaW5mbyB0byBkbWVzZyAqLwotCQlpZiAocHJpbnRfaW5mbykKLQkJCXByaW50ayhLRVJOX0lORk8gImF0YSV1OiBkZXYgJXUgQVRBUEksIG1heCAlc1xuIiwKLQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sIGF0YV9tb2RlX3N0cmluZyh4ZmVyX21hc2spKTsKKwkJaWYgKGF0YV9tc2dfaW5mbyhhcCkpCisJCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fSU5GTywgIkFUQVBJLCBtYXggJXMlc1xuIiwKKwkJCQkgICAgICAgYXRhX21vZGVfc3RyaW5nKHhmZXJfbWFzayksCisJCQkJICAgICAgIGNkYl9pbnRyX3N0cmluZyk7CiAJfQogCiAJYXAtPmhvc3QtPm1heF9jbWRfbGVuID0gMDsKQEAgLTEzMjEsMTAgKzE0NDgsMTAgQEAKIAkJCQkJICAgICAgYXAtPmRldmljZVtpXS5jZGJfbGVuKTsKIAogCS8qIGxpbWl0IGJyaWRnZSB0cmFuc2ZlcnMgdG8gdWRtYTUsIDIwMCBzZWN0b3JzICovCi0JaWYgKGF0YV9kZXZfa25vYmJsZShhcCwgZGV2KSkgewotCQlpZiAocHJpbnRfaW5mbykKLQkJCXByaW50ayhLRVJOX0lORk8gImF0YSV1KCV1KTogYXBwbHlpbmcgYnJpZGdlIGxpbWl0c1xuIiwKLQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8pOworCWlmIChhdGFfZGV2X2tub2JibGUoZGV2KSkgeworCQlpZiAoYXRhX21zZ19pbmZvKGFwKSkKKwkJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLAorCQkJCSAgICAgICAiYXBwbHlpbmcgYnJpZGdlIGxpbWl0c1xuIik7CiAJCWRldi0+dWRtYV9tYXNrICY9IEFUQV9VRE1BNTsKIAkJZGV2LT5tYXhfc2VjdG9ycyA9IEFUQV9NQVhfU0VDVE9SUzsKIAl9CkBAIC0xMzMyLDExICsxNDU5LDE1IEBACiAJaWYgKGFwLT5vcHMtPmRldl9jb25maWcpCiAJCWFwLT5vcHMtPmRldl9jb25maWcoYXAsIGRldik7CiAKLQlEUFJJTlRLKCJFWElULCBkcnZfc3RhdCA9IDB4JXhcbiIsIGF0YV9jaGtfc3RhdHVzKGFwKSk7CisJaWYgKGF0YV9tc2dfcHJvYmUoYXApKQorCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fREVCVUcsICIlczogRVhJVCwgZHJ2X3N0YXQgPSAweCV4XG4iLAorCQkJX19GVU5DVElPTl9fLCBhdGFfY2hrX3N0YXR1cyhhcCkpOwogCXJldHVybiAwOwogCiBlcnJfb3V0X25vc3VwOgotCURQUklOVEsoIkVYSVQsIGVyclxuIik7CisJaWYgKGF0YV9tc2dfcHJvYmUoYXApKQorCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fREVCVUcsIAorCQkJCSIlczogRVhJVCwgZXJyXG4iLCBfX0ZVTkNUSU9OX18pOwogCXJldHVybiByYzsKIH0KIApAQCAtMTM1Miw3OSArMTQ4MywxMDQgQEAKICAqCVBDSS9ldGMuIGJ1cyBwcm9iZSBzZW0uCiAgKgogICoJUkVUVVJOUzoKLSAqCVplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZXJyb3IuCisgKglaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG90aGVyd2lzZS4KICAqLwogCiBzdGF0aWMgaW50IGF0YV9idXNfcHJvYmUoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKIAl1bnNpZ25lZCBpbnQgY2xhc3Nlc1tBVEFfTUFYX0RFVklDRVNdOwotCXVuc2lnbmVkIGludCBpLCByYywgZm91bmQgPSAwOworCWludCB0cmllc1tBVEFfTUFYX0RFVklDRVNdOworCWludCBpLCByYywgZG93bl94ZmVybWFzazsKKwlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2OwogCiAJYXRhX3BvcnRfcHJvYmUoYXApOwogCi0JLyogcmVzZXQgYW5kIGRldGVybWluZSBkZXZpY2UgY2xhc3NlcyAqLwogCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykKLQkJY2xhc3Nlc1tpXSA9IEFUQV9ERVZfVU5LTk9XTjsKKwkJdHJpZXNbaV0gPSBBVEFfUFJPQkVfTUFYX1RSSUVTOwogCi0JaWYgKGFwLT5vcHMtPnByb2JlX3Jlc2V0KSB7Ci0JCXJjID0gYXAtPm9wcy0+cHJvYmVfcmVzZXQoYXAsIGNsYXNzZXMpOwotCQlpZiAocmMpIHsKLQkJCXByaW50aygiYXRhJXU6IHJlc2V0IGZhaWxlZCAoZXJybm89JWQpXG4iLCBhcC0+aWQsIHJjKTsKLQkJCXJldHVybiByYzsKLQkJfQotCX0gZWxzZSB7Ci0JCWFwLT5vcHMtPnBoeV9yZXNldChhcCk7CisgcmV0cnk6CisJZG93bl94ZmVybWFzayA9IDA7CiAKLQkJaWYgKCEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCkpCi0JCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCi0JCQkJY2xhc3Nlc1tpXSA9IGFwLT5kZXZpY2VbaV0uY2xhc3M7CisJLyogcmVzZXQgYW5kIGRldGVybWluZSBkZXZpY2UgY2xhc3NlcyAqLworCWFwLT5vcHMtPnBoeV9yZXNldChhcCk7CiAKLQkJYXRhX3BvcnRfcHJvYmUoYXApOworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgeworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKKworCQlpZiAoIShhcC0+ZmxhZ3MgJiBBVEFfRkxBR19ESVNBQkxFRCkgJiYKKwkJICAgIGRldi0+Y2xhc3MgIT0gQVRBX0RFVl9VTktOT1dOKQorCQkJY2xhc3Nlc1tkZXYtPmRldm5vXSA9IGRldi0+Y2xhc3M7CisJCWVsc2UKKwkJCWNsYXNzZXNbZGV2LT5kZXZub10gPSBBVEFfREVWX05PTkU7CisKKwkJZGV2LT5jbGFzcyA9IEFUQV9ERVZfVU5LTk9XTjsKIAl9CiAKKwlhdGFfcG9ydF9wcm9iZShhcCk7CisKKwkvKiBhZnRlciB0aGUgcmVzZXQgdGhlIGRldmljZSBzdGF0ZSBpcyBQSU8gMCBhbmQgdGhlIGNvbnRyb2xsZXIKKwkgICBzdGF0ZSBpcyB1bmRlZmluZWQuIFJlY29yZCB0aGUgbW9kZSAqLworCiAJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQotCQlpZiAoY2xhc3Nlc1tpXSA9PSBBVEFfREVWX1VOS05PV04pCi0JCQljbGFzc2VzW2ldID0gQVRBX0RFVl9OT05FOworCQlhcC0+ZGV2aWNlW2ldLnBpb19tb2RlID0gWEZFUl9QSU9fMDsKIAogCS8qIHJlYWQgSURFTlRJRlkgcGFnZSBhbmQgY29uZmlndXJlIGRldmljZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKLQkJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9ICZhcC0+ZGV2aWNlW2ldOworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKIAotCQlkZXYtPmNsYXNzID0gY2xhc3Nlc1tpXTsKKwkJaWYgKHRyaWVzW2ldKQorCQkJZGV2LT5jbGFzcyA9IGNsYXNzZXNbaV07CiAKLQkJaWYgKCFhdGFfZGV2X3ByZXNlbnQoZGV2KSkKKwkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSkKIAkJCWNvbnRpbnVlOwogCi0JCVdBUk5fT04oZGV2LT5pZCAhPSBOVUxMKTsKLQkJaWYgKGF0YV9kZXZfcmVhZF9pZChhcCwgZGV2LCAmZGV2LT5jbGFzcywgMSwgJmRldi0+aWQpKSB7Ci0JCQlkZXYtPmNsYXNzID0gQVRBX0RFVl9OT05FOwotCQkJY29udGludWU7Ci0JCX0KKwkJcmMgPSBhdGFfZGV2X3JlYWRfaWQoZGV2LCAmZGV2LT5jbGFzcywgMSwgZGV2LT5pZCk7CisJCWlmIChyYykKKwkJCWdvdG8gZmFpbDsKIAotCQlpZiAoYXRhX2Rldl9jb25maWd1cmUoYXAsIGRldiwgMSkpIHsKLQkJCWF0YV9kZXZfZGlzYWJsZShhcCwgZGV2KTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJZm91bmQgPSAxOworCQlyYyA9IGF0YV9kZXZfY29uZmlndXJlKGRldiwgMSk7CisJCWlmIChyYykKKwkJCWdvdG8gZmFpbDsKIAl9CiAKLQlpZiAoIWZvdW5kKQotCQlnb3RvIGVycl9vdXRfZGlzYWJsZTsKKwkvKiBjb25maWd1cmUgdHJhbnNmZXIgbW9kZSAqLworCXJjID0gYXRhX3NldF9tb2RlKGFwLCAmZGV2KTsKKwlpZiAocmMpIHsKKwkJZG93bl94ZmVybWFzayA9IDE7CisJCWdvdG8gZmFpbDsKKwl9CiAKLQlpZiAoYXAtPm9wcy0+c2V0X21vZGUpCi0JCWFwLT5vcHMtPnNldF9tb2RlKGFwKTsKLQllbHNlCi0JCWF0YV9zZXRfbW9kZShhcCk7CisJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQorCQlpZiAoYXRhX2Rldl9lbmFibGVkKCZhcC0+ZGV2aWNlW2ldKSkKKwkJCXJldHVybiAwOwogCi0JaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX1BPUlRfRElTQUJMRUQpCi0JCWdvdG8gZXJyX291dF9kaXNhYmxlOwotCi0JcmV0dXJuIDA7Ci0KLWVycl9vdXRfZGlzYWJsZToKKwkvKiBubyBkZXZpY2UgcHJlc2VudCwgZGlzYWJsZSBwb3J0ICovCisJYXRhX3BvcnRfZGlzYWJsZShhcCk7CiAJYXAtPm9wcy0+cG9ydF9kaXNhYmxlKGFwKTsKLQlyZXR1cm4gLTE7CisJcmV0dXJuIC1FTk9ERVY7CisKKyBmYWlsOgorCXN3aXRjaCAocmMpIHsKKwljYXNlIC1FSU5WQUw6CisJY2FzZSAtRU5PREVWOgorCQl0cmllc1tkZXYtPmRldm5vXSA9IDA7CisJCWJyZWFrOworCWNhc2UgLUVJTzoKKwkJc2F0YV9kb3duX3NwZF9saW1pdChhcCk7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWRlZmF1bHQ6CisJCXRyaWVzW2Rldi0+ZGV2bm9dLS07CisJCWlmIChkb3duX3hmZXJtYXNrICYmCisJCSAgICBhdGFfZG93bl94ZmVybWFza19saW1pdChkZXYsIHRyaWVzW2Rldi0+ZGV2bm9dID09IDEpKQorCQkJdHJpZXNbZGV2LT5kZXZub10gPSAwOworCX0KKworCWlmICghdHJpZXNbZGV2LT5kZXZub10pIHsKKwkJYXRhX2Rvd25feGZlcm1hc2tfbGltaXQoZGV2LCAxKTsKKwkJYXRhX2Rldl9kaXNhYmxlKGRldik7CisJfQorCisJZ290byByZXRyeTsKIH0KIAogLyoqCkBAIC0xNDQwLDcgKzE1OTYsNyBAQAogCiB2b2lkIGF0YV9wb3J0X3Byb2JlKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7Ci0JYXAtPmZsYWdzICY9IH5BVEFfRkxBR19QT1JUX0RJU0FCTEVEOworCWFwLT5mbGFncyAmPSB+QVRBX0ZMQUdfRElTQUJMRUQ7CiB9CiAKIC8qKgpAQCAtMTQ1NCwyNyArMTYxMCwyMSBAQAogICovCiBzdGF0aWMgdm9pZCBzYXRhX3ByaW50X2xpbmtfc3RhdHVzKHN0cnVjdCBhdGFfcG9ydCAqYXApCiB7Ci0JdTMyIHNzdGF0dXMsIHRtcDsKLQljb25zdCBjaGFyICpzcGVlZDsKKwl1MzIgc3N0YXR1cywgc2NvbnRyb2wsIHRtcDsKIAotCWlmICghYXAtPm9wcy0+c2NyX3JlYWQpCisJaWYgKHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMsICZzc3RhdHVzKSkKIAkJcmV0dXJuOworCXNhdGFfc2NyX3JlYWQoYXAsIFNDUl9DT05UUk9MLCAmc2NvbnRyb2wpOwogCi0Jc3N0YXR1cyA9IHNjcl9yZWFkKGFwLCBTQ1JfU1RBVFVTKTsKLQotCWlmIChzYXRhX2Rldl9wcmVzZW50KGFwKSkgeworCWlmIChhdGFfcG9ydF9vbmxpbmUoYXApKSB7CiAJCXRtcCA9IChzc3RhdHVzID4+IDQpICYgMHhmOwotCQlpZiAodG1wICYgKDEgPDwgMCkpCi0JCQlzcGVlZCA9ICIxLjUiOwotCQllbHNlIGlmICh0bXAgJiAoMSA8PCAxKSkKLQkJCXNwZWVkID0gIjMuMCI7Ci0JCWVsc2UKLQkJCXNwZWVkID0gIjx1bmtub3duPiI7Ci0JCXByaW50ayhLRVJOX0lORk8gImF0YSV1OiBTQVRBIGxpbmsgdXAgJXMgR2JwcyAoU1N0YXR1cyAlWClcbiIsCi0JCSAgICAgICBhcC0+aWQsIHNwZWVkLCBzc3RhdHVzKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sCisJCQkJIlNBVEEgbGluayB1cCAlcyAoU1N0YXR1cyAlWCBTQ29udHJvbCAlWClcbiIsCisJCQkJc2F0YV9zcGRfc3RyaW5nKHRtcCksIHNzdGF0dXMsIHNjb250cm9sKTsKIAl9IGVsc2UgewotCQlwcmludGsoS0VSTl9JTkZPICJhdGEldTogU0FUQSBsaW5rIGRvd24gKFNTdGF0dXMgJVgpXG4iLAotCQkgICAgICAgYXAtPmlkLCBzc3RhdHVzKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sCisJCQkJIlNBVEEgbGluayBkb3duIChTU3RhdHVzICVYIFNDb250cm9sICVYKVxuIiwKKwkJCQlzc3RhdHVzLCBzY29udHJvbCk7CiAJfQogfQogCkBAIC0xNDk3LDE3ICsxNjQ3LDE4IEBACiAKIAlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfU0FUQV9SRVNFVCkgewogCQkvKiBpc3N1ZSBwaHkgd2FrZS9yZXNldCAqLwotCQlzY3Jfd3JpdGVfZmx1c2goYXAsIFNDUl9DT05UUk9MLCAweDMwMSk7CisJCXNhdGFfc2NyX3dyaXRlX2ZsdXNoKGFwLCBTQ1JfQ09OVFJPTCwgMHgzMDEpOwogCQkvKiBDb3VsZG4ndCBmaW5kIGFueXRoaW5nIGluIFNBVEEgSS9JSSBzcGVjcywgYnV0CiAJCSAqIEFIQ0ktMS4xIDEwLjQuMiBzYXlzIGF0IGxlYXN0IDEgbXMuICovCiAJCW1kZWxheSgxKTsKIAl9Ci0Jc2NyX3dyaXRlX2ZsdXNoKGFwLCBTQ1JfQ09OVFJPTCwgMHgzMDApOyAvKiBwaHkgd2FrZS9jbGVhciByZXNldCAqLworCS8qIHBoeSB3YWtlL2NsZWFyIHJlc2V0ICovCisJc2F0YV9zY3Jfd3JpdGVfZmx1c2goYXAsIFNDUl9DT05UUk9MLCAweDMwMCk7CiAKIAkvKiB3YWl0IGZvciBwaHkgdG8gYmVjb21lIHJlYWR5LCBpZiBuZWNlc3NhcnkgKi8KIAlkbyB7CiAJCW1zbGVlcCgyMDApOwotCQlzc3RhdHVzID0gc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMpOworCQlzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfU1RBVFVTLCAmc3N0YXR1cyk7CiAJCWlmICgoc3N0YXR1cyAmIDB4ZikgIT0gMSkKIAkJCWJyZWFrOwogCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsKQEAgLTE1MTYsMTIgKzE2NjcsMTIgQEAKIAlzYXRhX3ByaW50X2xpbmtfc3RhdHVzKGFwKTsKIAogCS8qIFRPRE86IHBoeSBsYXllciB3aXRoIHBvbGxpbmcsIHRpbWVvdXRzLCBldGMuICovCi0JaWYgKHNhdGFfZGV2X3ByZXNlbnQoYXApKQorCWlmICghYXRhX3BvcnRfb2ZmbGluZShhcCkpCiAJCWF0YV9wb3J0X3Byb2JlKGFwKTsKIAllbHNlCiAJCWF0YV9wb3J0X2Rpc2FibGUoYXApOwogCi0JaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX1BPUlRfRElTQUJMRUQpCisJaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKQogCQlyZXR1cm47CiAKIAlpZiAoYXRhX2J1c3lfc2xlZXAoYXAsIEFUQV9UTU9VVF9CT09UX1FVSUNLLCBBVEFfVE1PVVRfQk9PVCkpIHsKQEAgLTE1NDYsMjQgKzE2OTcsMjQgQEAKIHZvaWQgc2F0YV9waHlfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKIAlfX3NhdGFfcGh5X3Jlc2V0KGFwKTsKLQlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCkKKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpCiAJCXJldHVybjsKIAlhdGFfYnVzX3Jlc2V0KGFwKTsKIH0KIAogLyoqCiAgKglhdGFfZGV2X3BhaXIJCS0JcmV0dXJuIG90aGVyIGRldmljZSBvbiBjYWJsZQotICoJQGFwOiBwb3J0CiAgKglAYWRldjogZGV2aWNlCiAgKgogICoJT2J0YWluIHRoZSBvdGhlciBkZXZpY2Ugb24gdGhlIHNhbWUgY2FibGUsIG9yIGlmIG5vbmUgaXMKICAqCXByZXNlbnQgTlVMTCBpcyByZXR1cm5lZAogICovCiAKLXN0cnVjdCBhdGFfZGV2aWNlICphdGFfZGV2X3BhaXIoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmFkZXYpCitzdHJ1Y3QgYXRhX2RldmljZSAqYXRhX2Rldl9wYWlyKHN0cnVjdCBhdGFfZGV2aWNlICphZGV2KQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBhZGV2LT5hcDsKIAlzdHJ1Y3QgYXRhX2RldmljZSAqcGFpciA9ICZhcC0+ZGV2aWNlWzEgLSBhZGV2LT5kZXZub107Ci0JaWYgKCFhdGFfZGV2X3ByZXNlbnQocGFpcikpCisJaWYgKCFhdGFfZGV2X2VuYWJsZWQocGFpcikpCiAJCXJldHVybiBOVUxMOwogCXJldHVybiBwYWlyOwogfQpAQCAtMTU4NSw3ICsxNzM2LDEyMiBAQAogewogCWFwLT5kZXZpY2VbMF0uY2xhc3MgPSBBVEFfREVWX05PTkU7CiAJYXAtPmRldmljZVsxXS5jbGFzcyA9IEFUQV9ERVZfTk9ORTsKLQlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRDsKKwlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfRElTQUJMRUQ7Cit9CisKKy8qKgorICoJc2F0YV9kb3duX3NwZF9saW1pdCAtIGFkanVzdCBTQVRBIHNwZCBsaW1pdCBkb3dud2FyZAorICoJQGFwOiBQb3J0IHRvIGFkanVzdCBTQVRBIHNwZCBsaW1pdCBmb3IKKyAqCisgKglBZGp1c3QgU0FUQSBzcGQgbGltaXQgb2YgQGFwIGRvd253YXJkLiAgTm90ZSB0aGF0IHRoaXMKKyAqCWZ1bmN0aW9uIG9ubHkgYWRqdXN0cyB0aGUgbGltaXQuICBUaGUgY2hhbmdlIG11c3QgYmUgYXBwbGllZAorICoJdXNpbmcgc2F0YV9zZXRfc3BkKCkuCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlCisgKi8KK2ludCBzYXRhX2Rvd25fc3BkX2xpbWl0KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdTMyIHNzdGF0dXMsIHNwZCwgbWFzazsKKwlpbnQgcmMsIGhpZ2hiaXQ7CisKKwlyYyA9IHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMsICZzc3RhdHVzKTsKKwlpZiAocmMpCisJCXJldHVybiByYzsKKworCW1hc2sgPSBhcC0+c2F0YV9zcGRfbGltaXQ7CisJaWYgKG1hc2sgPD0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJaGlnaGJpdCA9IGZscyhtYXNrKSAtIDE7CisJbWFzayAmPSB+KDEgPDwgaGlnaGJpdCk7CisKKwlzcGQgPSAoc3N0YXR1cyA+PiA0KSAmIDB4ZjsKKwlpZiAoc3BkIDw9IDEpCisJCXJldHVybiAtRUlOVkFMOworCXNwZC0tOworCW1hc2sgJj0gKDEgPDwgc3BkKSAtIDE7CisJaWYgKCFtYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWFwLT5zYXRhX3NwZF9saW1pdCA9IG1hc2s7CisKKwlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fV0FSTklORywgImxpbWl0aW5nIFNBVEEgbGluayBzcGVlZCB0byAlc1xuIiwKKwkJCXNhdGFfc3BkX3N0cmluZyhmbHMobWFzaykpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9fc2F0YV9zZXRfc3BkX25lZWRlZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1MzIgKnNjb250cm9sKQoreworCXUzMiBzcGQsIGxpbWl0OworCisJaWYgKGFwLT5zYXRhX3NwZF9saW1pdCA9PSBVSU5UX01BWCkKKwkJbGltaXQgPSAwOworCWVsc2UKKwkJbGltaXQgPSBmbHMoYXAtPnNhdGFfc3BkX2xpbWl0KTsKKworCXNwZCA9ICgqc2NvbnRyb2wgPj4gNCkgJiAweGY7CisJKnNjb250cm9sID0gKCpzY29udHJvbCAmIH4weGYwKSB8ICgobGltaXQgJiAweGYpIDw8IDQpOworCisJcmV0dXJuIHNwZCAhPSBsaW1pdDsKK30KKworLyoqCisgKglzYXRhX3NldF9zcGRfbmVlZGVkIC0gaXMgU0FUQSBzcGQgY29uZmlndXJhdGlvbiBuZWVkZWQKKyAqCUBhcDogUG9ydCBpbiBxdWVzdGlvbgorICoKKyAqCVRlc3Qgd2hldGhlciB0aGUgc3BkIGxpbWl0IGluIFNDb250cm9sIG1hdGNoZXMKKyAqCUBhcC0+c2F0YV9zcGRfbGltaXQuICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lCisgKgl3aGV0aGVyIGhhcmRyZXNldCBpcyBuZWNlc3NhcnkgdG8gYXBwbHkgU0FUQSBzcGQKKyAqCWNvbmZpZ3VyYXRpb24uCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KKyAqCisgKglSRVRVUk5TOgorICoJMSBpZiBTQVRBIHNwZCBjb25maWd1cmF0aW9uIGlzIG5lZWRlZCwgMCBvdGhlcndpc2UuCisgKi8KK2ludCBzYXRhX3NldF9zcGRfbmVlZGVkKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdTMyIHNjb250cm9sOworCisJaWYgKHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9DT05UUk9MLCAmc2NvbnRyb2wpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBfX3NhdGFfc2V0X3NwZF9uZWVkZWQoYXAsICZzY29udHJvbCk7Cit9CisKKy8qKgorICoJc2F0YV9zZXRfc3BkIC0gc2V0IFNBVEEgc3BkIGFjY29yZGluZyB0byBzcGQgbGltaXQKKyAqCUBhcDogUG9ydCB0byBzZXQgU0FUQSBzcGQgZm9yCisgKgorICoJU2V0IFNBVEEgc3BkIG9mIEBhcCBhY2NvcmRpbmcgdG8gc2F0YV9zcGRfbGltaXQuCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KKyAqCisgKglSRVRVUk5TOgorICoJMCBpZiBzcGQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQsIDEgaWYgc3BkIGhhcyBiZWVuCisgKgljaGFuZ2VkLiAgTmVnYXRpdmUgZXJybm8gaWYgU0NSIHJlZ2lzdGVycyBhcmUgaW5hY2Nlc3NpYmxlLgorICovCitpbnQgc2F0YV9zZXRfc3BkKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdTMyIHNjb250cm9sOworCWludCByYzsKKworCWlmICgocmMgPSBzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfQ09OVFJPTCwgJnNjb250cm9sKSkpCisJCXJldHVybiByYzsKKworCWlmICghX19zYXRhX3NldF9zcGRfbmVlZGVkKGFwLCAmc2NvbnRyb2wpKQorCQlyZXR1cm4gMDsKKworCWlmICgocmMgPSBzYXRhX3Njcl93cml0ZShhcCwgU0NSX0NPTlRST0wsIHNjb250cm9sKSkpCisJCXJldHVybiByYzsKKworCXJldHVybiAxOwogfQogCiAvKgpAQCAtMTczNiw1MiArMjAwMiwxNDkgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhdGFfZGV2X3NldF9tb2RlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCisvKioKKyAqCWF0YV9kb3duX3hmZXJtYXNrX2xpbWl0IC0gYWRqdXN0IGRldiB4ZmVyIG1hc2tzIGRvd253YXJkCisgKglAZGV2OiBEZXZpY2UgdG8gYWRqdXN0IHhmZXIgbWFza3MKKyAqCUBmb3JjZV9waW8wOiBGb3JjZSBQSU8wCisgKgorICoJQWRqdXN0IHhmZXIgbWFza3Mgb2YgQGRldiBkb3dud2FyZC4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uCisgKglkb2VzIG5vdCBhcHBseSB0aGUgY2hhbmdlLiAgSW52b2tpbmcgYXRhX3NldF9tb2RlKCkgYWZ0ZXJ3YXJkcworICoJd2lsbCBhcHBseSB0aGUgbGltaXQuCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlCisgKi8KK2ludCBhdGFfZG93bl94ZmVybWFza19saW1pdChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LCBpbnQgZm9yY2VfcGlvMCkKK3sKKwl1bnNpZ25lZCBsb25nIHhmZXJfbWFzazsKKwlpbnQgaGlnaGJpdDsKKworCXhmZXJfbWFzayA9IGF0YV9wYWNrX3hmZXJtYXNrKGRldi0+cGlvX21hc2ssIGRldi0+bXdkbWFfbWFzaywKKwkJCQkgICAgICBkZXYtPnVkbWFfbWFzayk7CisKKwlpZiAoIXhmZXJfbWFzaykKKwkJZ290byBmYWlsOworCS8qIGRvbid0IGdlYXIgZG93biB0byBNV0RNQSBmcm9tIFVETUEsIGdvIGRpcmVjdGx5IHRvIFBJTyAqLworCWlmICh4ZmVyX21hc2sgJiBBVEFfTUFTS19VRE1BKQorCQl4ZmVyX21hc2sgJj0gfkFUQV9NQVNLX01XRE1BOworCisJaGlnaGJpdCA9IGZscyh4ZmVyX21hc2spIC0gMTsKKwl4ZmVyX21hc2sgJj0gfigxIDw8IGhpZ2hiaXQpOworCWlmIChmb3JjZV9waW8wKQorCQl4ZmVyX21hc2sgJj0gMSA8PCBBVEFfU0hJRlRfUElPOworCWlmICgheGZlcl9tYXNrKQorCQlnb3RvIGZhaWw7CisKKwlhdGFfdW5wYWNrX3hmZXJtYXNrKHhmZXJfbWFzaywgJmRldi0+cGlvX21hc2ssICZkZXYtPm13ZG1hX21hc2ssCisJCQkgICAgJmRldi0+dWRtYV9tYXNrKTsKKworCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9XQVJOSU5HLCAibGltaXRpbmcgc3BlZWQgdG8gJXNcbiIsCisJCSAgICAgICBhdGFfbW9kZV9zdHJpbmcoeGZlcl9tYXNrKSk7CisKKwlyZXR1cm4gMDsKKworIGZhaWw6CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgYXRhX2Rldl9zZXRfbW9kZShzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQogewogCXVuc2lnbmVkIGludCBlcnJfbWFzazsKIAlpbnQgcmM7CiAKKwlkZXYtPmZsYWdzICY9IH5BVEFfREZMQUdfUElPOwogCWlmIChkZXYtPnhmZXJfc2hpZnQgPT0gQVRBX1NISUZUX1BJTykKIAkJZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfUElPOwogCi0JZXJyX21hc2sgPSBhdGFfZGV2X3NldF94ZmVybW9kZShhcCwgZGV2KTsKKwllcnJfbWFzayA9IGF0YV9kZXZfc2V0X3hmZXJtb2RlKGRldik7CiAJaWYgKGVycl9tYXNrKSB7Ci0JCXByaW50ayhLRVJOX0VSUgotCQkgICAgICAgImF0YSV1OiBmYWlsZWQgdG8gc2V0IHhmZXJtb2RlIChlcnJfbWFzaz0weCV4KVxuIiwKLQkJICAgICAgIGFwLT5pZCwgZXJyX21hc2spOworCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fRVJSLCAiZmFpbGVkIHRvIHNldCB4ZmVybW9kZSAiCisJCQkgICAgICAgIihlcnJfbWFzaz0weCV4KVxuIiwgZXJyX21hc2spOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlyYyA9IGF0YV9kZXZfcmV2YWxpZGF0ZShhcCwgZGV2LCAwKTsKLQlpZiAocmMpIHsKLQkJcHJpbnRrKEtFUk5fRVJSCi0JCSAgICAgICAiYXRhJXU6IGZhaWxlZCB0byByZXZhbGlkYXRlIGFmdGVyIHNldCB4ZmVybW9kZVxuIiwKLQkJICAgICAgIGFwLT5pZCk7CisJcmMgPSBhdGFfZGV2X3JldmFsaWRhdGUoZGV2LCAwKTsKKwlpZiAocmMpCiAJCXJldHVybiByYzsKLQl9CiAKIAlEUFJJTlRLKCJ4ZmVyX3NoaWZ0PSV1LCB4ZmVyX21vZGU9MHgleFxuIiwKIAkJZGV2LT54ZmVyX3NoaWZ0LCAoaW50KWRldi0+eGZlcl9tb2RlKTsKIAotCXByaW50ayhLRVJOX0lORk8gImF0YSV1OiBkZXYgJXUgY29uZmlndXJlZCBmb3IgJXNcbiIsCi0JICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubywKLQkgICAgICAgYXRhX21vZGVfc3RyaW5nKGF0YV94ZmVyX21vZGUybWFzayhkZXYtPnhmZXJfbW9kZSkpKTsKKwlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fSU5GTywgImNvbmZpZ3VyZWQgZm9yICVzXG4iLAorCQkgICAgICAgYXRhX21vZGVfc3RyaW5nKGF0YV94ZmVyX21vZGUybWFzayhkZXYtPnhmZXJfbW9kZSkpKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhdGFfaG9zdF9zZXRfcGlvKHN0cnVjdCBhdGFfcG9ydCAqYXApCisvKioKKyAqCWF0YV9zZXRfbW9kZSAtIFByb2dyYW0gdGltaW5ncyBhbmQgaXNzdWUgU0VUIEZFQVRVUkVTIC0gWEZFUgorICoJQGFwOiBwb3J0IG9uIHdoaWNoIHRpbWluZ3Mgd2lsbCBiZSBwcm9ncmFtbWVkCisgKglAcl9mYWlsZWRfZGV2OiBvdXQgcGFyYW10ZXIgZm9yIGZhaWxlZCBkZXZpY2UKKyAqCisgKglTZXQgQVRBIGRldmljZSBkaXNrIHRyYW5zZmVyIG1vZGUgKFBJTzMsIFVETUE2LCBldGMuKS4gIElmCisgKglhdGFfc2V0X21vZGUoKSBmYWlscywgcG9pbnRlciB0byB0aGUgZmFpbGluZyBkZXZpY2UgaXMKKyAqCXJldHVybmVkIGluIEByX2ZhaWxlZF9kZXYuCisgKgorICoJTE9DS0lORzoKKyAqCVBDSS9ldGMuIGJ1cyBwcm9iZSBzZW0uCisgKgorICoJUkVUVVJOUzoKKyAqCTAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb3RoZXJ3aXNlCisgKi8KK2ludCBhdGFfc2V0X21vZGUoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKipyX2ZhaWxlZF9kZXYpCiB7Ci0JaW50IGk7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKKwlpbnQgaSwgcmMgPSAwLCB1c2VkX2RtYSA9IDAsIGZvdW5kID0gMDsKIAorCS8qIGhhcyBwcml2YXRlIHNldF9tb2RlPyAqLworCWlmIChhcC0+b3BzLT5zZXRfbW9kZSkgeworCQkvKiBGSVhNRTogbWFrZSAtPnNldF9tb2RlIGhhbmRsZSBubyBkZXZpY2UgY2FzZSBhbmQKKwkJICogcmV0dXJuIGVycm9yIGNvZGUgYW5kIGZhaWxpbmcgZGV2aWNlIG9uIGZhaWx1cmUuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKKwkJCWlmIChhdGFfZGV2X2VuYWJsZWQoJmFwLT5kZXZpY2VbaV0pKSB7CisJCQkJYXAtPm9wcy0+c2V0X21vZGUoYXApOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCXJldHVybiAwOworCX0KKworCS8qIHN0ZXAgMTogY2FsY3VsYXRlIHhmZXJfbWFzayAqLwogCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgewotCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07CisJCXVuc2lnbmVkIGludCBwaW9fbWFzaywgZG1hX21hc2s7CiAKLQkJaWYgKCFhdGFfZGV2X3ByZXNlbnQoZGV2KSkKKwkJZGV2ID0gJmFwLT5kZXZpY2VbaV07CisKKwkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSkKKwkJCWNvbnRpbnVlOworCisJCWF0YV9kZXZfeGZlcm1hc2soZGV2KTsKKworCQlwaW9fbWFzayA9IGF0YV9wYWNrX3hmZXJtYXNrKGRldi0+cGlvX21hc2ssIDAsIDApOworCQlkbWFfbWFzayA9IGF0YV9wYWNrX3hmZXJtYXNrKDAsIGRldi0+bXdkbWFfbWFzaywgZGV2LT51ZG1hX21hc2spOworCQlkZXYtPnBpb19tb2RlID0gYXRhX3hmZXJfbWFzazJtb2RlKHBpb19tYXNrKTsKKwkJZGV2LT5kbWFfbW9kZSA9IGF0YV94ZmVyX21hc2sybW9kZShkbWFfbWFzayk7CisKKwkJZm91bmQgPSAxOworCQlpZiAoZGV2LT5kbWFfbW9kZSkKKwkJCXVzZWRfZG1hID0gMTsKKwl9CisJaWYgKCFmb3VuZCkKKwkJZ290byBvdXQ7CisKKwkvKiBzdGVwIDI6IGFsd2F5cyBzZXQgaG9zdCBQSU8gdGltaW5ncyAqLworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgeworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKKwkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmICghZGV2LT5waW9fbW9kZSkgewotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6IG5vIFBJTyBzdXBwb3J0IGZvciBkZXZpY2UgJWQuXG4iLCBhcC0+aWQsIGkpOwotCQkJcmV0dXJuIC0xOworCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsICJubyBQSU8gc3VwcG9ydFxuIik7CisJCQlyYyA9IC1FSU5WQUw7CisJCQlnb3RvIG91dDsKIAkJfQogCiAJCWRldi0+eGZlcl9tb2RlID0gZGV2LT5waW9fbW9kZTsKQEAgLTE3OTAsMTcgKzIxNTMsMTEgQEAKIAkJCWFwLT5vcHMtPnNldF9waW9tb2RlKGFwLCBkZXYpOwogCX0KIAotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBhdGFfaG9zdF9zZXRfZG1hKHN0cnVjdCBhdGFfcG9ydCAqYXApCi17Ci0JaW50IGk7Ci0KKwkvKiBzdGVwIDM6IHNldCBob3N0IERNQSB0aW1pbmdzICovCiAJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKSB7Ci0JCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtpXTsKKwkJZGV2ID0gJmFwLT5kZXZpY2VbaV07CiAKLQkJaWYgKCFhdGFfZGV2X3ByZXNlbnQoZGV2KSB8fCAhZGV2LT5kbWFfbW9kZSkKKwkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSB8fCAhZGV2LT5kbWFfbW9kZSkKIAkJCWNvbnRpbnVlOwogCiAJCWRldi0+eGZlcl9tb2RlID0gZGV2LT5kbWFfbW9kZTsKQEAgLTE4MDgsNzkgKzIxNjUsMzMgQEAKIAkJaWYgKGFwLT5vcHMtPnNldF9kbWFtb2RlKQogCQkJYXAtPm9wcy0+c2V0X2RtYW1vZGUoYXAsIGRldik7CiAJfQotfQotCi0vKioKLSAqCWF0YV9zZXRfbW9kZSAtIFByb2dyYW0gdGltaW5ncyBhbmQgaXNzdWUgU0VUIEZFQVRVUkVTIC0gWEZFUgotICoJQGFwOiBwb3J0IG9uIHdoaWNoIHRpbWluZ3Mgd2lsbCBiZSBwcm9ncmFtbWVkCi0gKgotICoJU2V0IEFUQSBkZXZpY2UgZGlzayB0cmFuc2ZlciBtb2RlIChQSU8zLCBVRE1BNiwgZXRjLikuCi0gKgotICoJTE9DS0lORzoKLSAqCVBDSS9ldGMuIGJ1cyBwcm9iZSBzZW0uCi0gKi8KLXN0YXRpYyB2b2lkIGF0YV9zZXRfbW9kZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQotewotCWludCBpLCByYywgdXNlZF9kbWEgPSAwOwotCi0JLyogc3RlcCAxOiBjYWxjdWxhdGUgeGZlcl9tYXNrICovCi0JZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKSB7Ci0JCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtpXTsKLQkJdW5zaWduZWQgaW50IHBpb19tYXNrLCBkbWFfbWFzazsKLQotCQlpZiAoIWF0YV9kZXZfcHJlc2VudChkZXYpKQotCQkJY29udGludWU7Ci0KLQkJYXRhX2Rldl94ZmVybWFzayhhcCwgZGV2KTsKLQotCQkvKiBUT0RPOiBsZXQgTExERCBmaWx0ZXIgZGV2LT4qX21hc2sgaGVyZSAqLwotCi0JCXBpb19tYXNrID0gYXRhX3BhY2tfeGZlcm1hc2soZGV2LT5waW9fbWFzaywgMCwgMCk7Ci0JCWRtYV9tYXNrID0gYXRhX3BhY2tfeGZlcm1hc2soMCwgZGV2LT5td2RtYV9tYXNrLCBkZXYtPnVkbWFfbWFzayk7Ci0JCWRldi0+cGlvX21vZGUgPSBhdGFfeGZlcl9tYXNrMm1vZGUocGlvX21hc2spOwotCQlkZXYtPmRtYV9tb2RlID0gYXRhX3hmZXJfbWFzazJtb2RlKGRtYV9tYXNrKTsKLQotCQlpZiAoZGV2LT5kbWFfbW9kZSkKLQkJCXVzZWRfZG1hID0gMTsKLQl9Ci0KLQkvKiBzdGVwIDI6IGFsd2F5cyBzZXQgaG9zdCBQSU8gdGltaW5ncyAqLwotCXJjID0gYXRhX2hvc3Rfc2V0X3BpbyhhcCk7Ci0JaWYgKHJjKQotCQlnb3RvIGVycl9vdXQ7Ci0KLQkvKiBzdGVwIDM6IHNldCBob3N0IERNQSB0aW1pbmdzICovCi0JYXRhX2hvc3Rfc2V0X2RtYShhcCk7CiAKIAkvKiBzdGVwIDQ6IHVwZGF0ZSBkZXZpY2VzJyB4ZmVyIG1vZGUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKLQkJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9ICZhcC0+ZGV2aWNlW2ldOworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKIAotCQlpZiAoIWF0YV9kZXZfcHJlc2VudChkZXYpKQorCQlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYpKQogCQkJY29udGludWU7CiAKLQkJaWYgKGF0YV9kZXZfc2V0X21vZGUoYXAsIGRldikpCi0JCQlnb3RvIGVycl9vdXQ7CisJCXJjID0gYXRhX2Rldl9zZXRfbW9kZShkZXYpOworCQlpZiAocmMpCisJCQlnb3RvIG91dDsKIAl9CiAKLQkvKgotCSAqCVJlY29yZCBzaW1wbGV4IHN0YXR1cy4gSWYgd2Ugc2VsZWN0ZWQgRE1BIHRoZW4gdGhlIG90aGVyCi0JICoJaG9zdCBjaGFubmVscyBhcmUgbm90IHBlcm1pdHRlZCB0byBkbyBzby4KKwkvKiBSZWNvcmQgc2ltcGxleCBzdGF0dXMuIElmIHdlIHNlbGVjdGVkIERNQSB0aGVuIHRoZSBvdGhlcgorCSAqIGhvc3QgY2hhbm5lbHMgYXJlIG5vdCBwZXJtaXR0ZWQgdG8gZG8gc28uCiAJICovCi0KIAlpZiAodXNlZF9kbWEgJiYgKGFwLT5ob3N0X3NldC0+ZmxhZ3MgJiBBVEFfSE9TVF9TSU1QTEVYKSkKIAkJYXAtPmhvc3Rfc2V0LT5zaW1wbGV4X2NsYWltZWQgPSAxOwogCi0JLyoKLQkgKglDaGlwIHNwZWNpZmljIGZpbmFsaXNhdGlvbgotCSAqLworCS8qIHN0ZXA1OiBjaGlwIHNwZWNpZmljIGZpbmFsaXNhdGlvbiAqLwogCWlmIChhcC0+b3BzLT5wb3N0X3NldF9tb2RlKQogCQlhcC0+b3BzLT5wb3N0X3NldF9tb2RlKGFwKTsKIAotCXJldHVybjsKLQotZXJyX291dDoKLQlhdGFfcG9ydF9kaXNhYmxlKGFwKTsKKyBvdXQ6CisJaWYgKHJjKQorCQkqcl9mYWlsZWRfZGV2ID0gZGV2OworCXJldHVybiByYzsKIH0KIAogLyoqCkBAIC0xOTMwLDggKzIyNDEsOCBAQAogCX0KIAogCWlmIChzdGF0dXMgJiBBVEFfQlVTWSkKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXUgaXMgc2xvdyB0byByZXNwb25kLCAiCi0JCSAgICAgICAicGxlYXNlIGJlIHBhdGllbnRcbiIsIGFwLT5pZCk7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9XQVJOSU5HLAorCQkJCSJwb3J0IGlzIHNsb3cgdG8gcmVzcG9uZCwgcGxlYXNlIGJlIHBhdGllbnRcbiIpOwogCiAJdGltZW91dCA9IHRpbWVyX3N0YXJ0ICsgdG1vdXQ7CiAJd2hpbGUgKChzdGF0dXMgJiBBVEFfQlVTWSkgJiYgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKSkgewpAQCAtMTk0MCw4ICsyMjUxLDggQEAKIAl9CiAKIAlpZiAoc3RhdHVzICYgQVRBX0JVU1kpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJhdGEldSBmYWlsZWQgdG8gcmVzcG9uZCAoJWx1IHNlY3MpXG4iLAotCQkgICAgICAgYXAtPmlkLCB0bW91dCAvIEhaKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgInBvcnQgZmFpbGVkIHRvIHJlc3BvbmQgIgorCQkJCSIoJWx1IHNlY3MpXG4iLCB0bW91dCAvIEhaKTsKIAkJcmV0dXJuIDE7CiAJfQogCkBAIC0yMDMzLDggKzIzNDQsMTAgQEAKIAkgKiB0aGUgYnVzIHNob3dzIDB4RkYgYmVjYXVzZSB0aGUgb2RkIGNsb3duIGZvcmdldHMgdGhlIEQ3CiAJICogcHVsbGRvd24gcmVzaXN0b3IuCiAJICovCi0JaWYgKGF0YV9jaGVja19zdGF0dXMoYXApID09IDB4RkYpCisJaWYgKGF0YV9jaGVja19zdGF0dXMoYXApID09IDB4RkYpIHsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgIlNSU1QgZmFpbGVkIChzdGF0dXMgMHhGRilcbiIpOwogCQlyZXR1cm4gQUNfRVJSX09USEVSOworCX0KIAogCWF0YV9idXNfcG9zdF9yZXNldChhcCwgZGV2bWFzayk7CiAKQEAgLTIwNTgsNyArMjM3MSw3IEBACiAgKglPYnRhaW5zIGhvc3Rfc2V0IGxvY2suCiAgKgogICoJU0lERSBFRkZFQ1RTOgotICoJU2V0cyBBVEFfRkxBR19QT1JUX0RJU0FCTEVEIGlmIGJ1cyByZXNldCBmYWlscy4KKyAqCVNldHMgQVRBX0ZMQUdfRElTQUJMRUQgaWYgYnVzIHJlc2V0IGZhaWxzLgogICovCiAKIHZvaWQgYXRhX2J1c19yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQpAQCAtMjEyNiw2MCArMjQzOSwxMzkgQEAKIAlyZXR1cm47CiAKIGVycl9vdXQ6Ci0JcHJpbnRrKEtFUk5fRVJSICJhdGEldTogZGlzYWJsaW5nIHBvcnRcbiIsIGFwLT5pZCk7CisJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgImRpc2FibGluZyBwb3J0XG4iKTsKIAlhcC0+b3BzLT5wb3J0X2Rpc2FibGUoYXApOwogCiAJRFBSSU5USygiRVhJVFxuIik7CiB9CiAKLXN0YXRpYyBpbnQgc2F0YV9waHlfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXApCi17Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIChIWiAqIDUpOwotCXUzMiBzc3RhdHVzOwotCi0Jc2NyX3dyaXRlX2ZsdXNoKGFwLCBTQ1JfQ09OVFJPTCwgMHgzMDApOwotCi0JLyogV2FpdCBmb3IgcGh5IHRvIGJlY29tZSByZWFkeSwgaWYgbmVjZXNzYXJ5LiAqLwotCWRvIHsKLQkJbXNsZWVwKDIwMCk7Ci0JCXNzdGF0dXMgPSBzY3JfcmVhZChhcCwgU0NSX1NUQVRVUyk7Ci0JCWlmICgoc3N0YXR1cyAmIDB4ZikgIT0gMSkKLQkJCXJldHVybiAwOwotCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsKLQotCXJldHVybiAtMTsKLX0KLQogLyoqCi0gKglhdGFfc3RkX3Byb2JlaW5pdCAtIGluaXRpYWxpemUgcHJvYmluZwotICoJQGFwOiBwb3J0IHRvIGJlIHByb2JlZAorICoJc2F0YV9waHlfZGVib3VuY2UgLSBkZWJvdW5jZSBTQVRBIHBoeSBzdGF0dXMKKyAqCUBhcDogQVRBIHBvcnQgdG8gZGVib3VuY2UgU0FUQSBwaHkgc3RhdHVzIGZvcgorICoJQHBhcmFtczogdGltaW5nIHBhcmFtZXRlcnMgeyBpbnRlcnZhbCwgZHVyYXRpbm9uLCB0aW1lb3V0IH0gaW4gbXNlYwogICoKLSAqCUBhcCBpcyBhYm91dCB0byBiZSBwcm9iZWQuICBJbml0aWFsaXplIGl0LiAgVGhpcyBmdW5jdGlvbiBpcwotICoJdG8gYmUgdXNlZCBhcyBzdGFuZGFyZCBjYWxsYmFjayBmb3IgYXRhX2RyaXZlX3Byb2JlX3Jlc2V0KCkuCisgKglNYWtlIHN1cmUgU1N0YXR1cyBvZiBAYXAgcmVhY2hlcyBzdGFibGUgc3RhdGUsIGRldGVybWluZWQgYnkKKyAqCWhvbGRpbmcgdGhlIHNhbWUgdmFsdWUgd2hlcmUgREVUIGlzIG5vdCAxIGZvciBAZHVyYXRpb24gcG9sbGVkCisgKglldmVyeSBAaW50ZXJ2YWwsIGJlZm9yZSBAdGltZW91dC4gIFRpbWVvdXQgY29uc3RyYWludHMgdGhlCisgKgliZWdpbm5pbmcgb2YgdGhlIHN0YWJsZSBzdGF0ZS4gIEJlY2F1c2UsIGFmdGVyIGhvdCB1bnBsdWdnaW5nLAorICoJREVUIGdldHMgc3R1Y2sgYXQgMSBvbiBzb21lIGNvbnRyb2xsZXJzLCB0aGlzIGZ1bmN0aW9ucyB3YWl0cworICoJdW50aWwgdGltZW91dCB0aGVuIHJldHVybnMgMCBpZiBERVQgaXMgc3RhYmxlIGF0IDEuCiAgKgotICoJTk9URSEhISBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gYXMgcHJvYmVpbml0IGlmIGEgbG93IGxldmVsCi0gKglkcml2ZXIgaW1wbGVtZW50cyBvbmx5IGhhcmRyZXNldC4gIEp1c3QgcGFzcyBOVUxMIGFzIHByb2JlaW5pdAotICoJaW4gdGhhdCBjYXNlLiAgVXNpbmcgdGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSBva2F5IGJ1dCBkb2luZwotICoJc28gbWFrZXMgcmVzZXQgc2VxdWVuY2UgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsCi0gKgktPnBoeV9yZXNldCBpbXBsZW1lbnRhdGlvbiBhbmQgSmVmZiBuZXJ2b3VzLiAgOi1QCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCisgKgorICoJUkVUVVJOUzoKKyAqCTAgb24gc3VjY2VzcywgLWVycm5vIG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQgYXRhX3N0ZF9wcm9iZWluaXQoc3RydWN0IGF0YV9wb3J0ICphcCkKK2ludCBzYXRhX3BoeV9kZWJvdW5jZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBjb25zdCB1bnNpZ25lZCBsb25nICpwYXJhbXMpCiB7Ci0JaWYgKChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TQVRBKSAmJiBhcC0+b3BzLT5zY3JfcmVhZCkgewotCQlzYXRhX3BoeV9yZXN1bWUoYXApOwotCQlpZiAoc2F0YV9kZXZfcHJlc2VudChhcCkpCi0JCQlhdGFfYnVzeV9zbGVlcChhcCwgQVRBX1RNT1VUX0JPT1RfUVVJQ0ssIEFUQV9UTU9VVF9CT09UKTsKKwl1bnNpZ25lZCBsb25nIGludGVydmFsX21zZWMgPSBwYXJhbXNbMF07CisJdW5zaWduZWQgbG9uZyBkdXJhdGlvbiA9IHBhcmFtc1sxXSAqIEhaIC8gMTAwMDsKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBqaWZmaWVzICsgcGFyYW1zWzJdICogSFogLyAxMDAwOworCXVuc2lnbmVkIGxvbmcgbGFzdF9qaWZmaWVzOworCXUzMiBsYXN0LCBjdXI7CisJaW50IHJjOworCisJaWYgKChyYyA9IHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMsICZjdXIpKSkKKwkJcmV0dXJuIHJjOworCWN1ciAmPSAweGY7CisKKwlsYXN0ID0gY3VyOworCWxhc3RfamlmZmllcyA9IGppZmZpZXM7CisKKwl3aGlsZSAoMSkgeworCQltc2xlZXAoaW50ZXJ2YWxfbXNlYyk7CisJCWlmICgocmMgPSBzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfU1RBVFVTLCAmY3VyKSkpCisJCQlyZXR1cm4gcmM7CisJCWN1ciAmPSAweGY7CisKKwkJLyogREVUIHN0YWJsZT8gKi8KKwkJaWYgKGN1ciA9PSBsYXN0KSB7CisJCQlpZiAoY3VyID09IDEgJiYgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpCisJCQkJY29udGludWU7CisJCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBsYXN0X2ppZmZpZXMgKyBkdXJhdGlvbikpCisJCQkJcmV0dXJuIDA7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIHVuc3RhYmxlLCBzdGFydCBvdmVyICovCisJCWxhc3QgPSBjdXI7CisJCWxhc3RfamlmZmllcyA9IGppZmZpZXM7CisKKwkJLyogY2hlY2sgdGltZW91dCAqLworCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkKKwkJCXJldHVybiAtRUJVU1k7CiAJfQogfQogCiAvKioKLSAqCWF0YV9zdGRfc29mdHJlc2V0IC0gcmVzZXQgaG9zdCBwb3J0IHZpYSBBVEEgU1JTVAotICoJQGFwOiBwb3J0IHRvIHJlc2V0Ci0gKglAdmVyYm9zZTogZmFpbCB2ZXJib3NlbHkKLSAqCUBjbGFzc2VzOiByZXN1bHRpbmcgY2xhc3NlcyBvZiBhdHRhY2hlZCBkZXZpY2VzCisgKglzYXRhX3BoeV9yZXN1bWUgLSByZXN1bWUgU0FUQSBwaHkKKyAqCUBhcDogQVRBIHBvcnQgdG8gcmVzdW1lIFNBVEEgcGh5IGZvcgorICoJQHBhcmFtczogdGltaW5nIHBhcmFtZXRlcnMgeyBpbnRlcnZhbCwgZHVyYXRpbm9uLCB0aW1lb3V0IH0gaW4gbXNlYwogICoKLSAqCVJlc2V0IGhvc3QgcG9ydCB1c2luZyBBVEEgU1JTVC4gIFRoaXMgZnVuY3Rpb24gaXMgdG8gYmUgdXNlZAotICoJYXMgc3RhbmRhcmQgY2FsbGJhY2sgZm9yIGF0YV9kcml2ZV8qX3Jlc2V0KCkgZnVuY3Rpb25zLgorICoJUmVzdW1lIFNBVEEgcGh5IG9mIEBhcCBhbmQgZGVib3VuY2UgaXQuCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKQorICoKKyAqCVJFVFVSTlM6CisgKgkwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvbiBmYWlsdXJlLgorICovCitpbnQgc2F0YV9waHlfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnBhcmFtcykKK3sKKwl1MzIgc2NvbnRyb2w7CisJaW50IHJjOworCisJaWYgKChyYyA9IHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9DT05UUk9MLCAmc2NvbnRyb2wpKSkKKwkJcmV0dXJuIHJjOworCisJc2NvbnRyb2wgPSAoc2NvbnRyb2wgJiAweDBmMCkgfCAweDMwMDsKKworCWlmICgocmMgPSBzYXRhX3Njcl93cml0ZShhcCwgU0NSX0NPTlRST0wsIHNjb250cm9sKSkpCisJCXJldHVybiByYzsKKworCS8qIFNvbWUgUEhZcyByZWFjdCBiYWRseSBpZiBTU3RhdHVzIGlzIHBvdW5kZWQgaW1tZWRpYXRlbHkKKwkgKiBhZnRlciByZXN1bWluZy4gIERlbGF5IDIwMG1zIGJlZm9yZSBkZWJvdW5jaW5nLgorCSAqLworCW1zbGVlcCgyMDApOworCisJcmV0dXJuIHNhdGFfcGh5X2RlYm91bmNlKGFwLCBwYXJhbXMpOworfQorCitzdGF0aWMgdm9pZCBhdGFfd2FpdF9zcGludXAoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgKmVoYyA9ICZhcC0+ZWhfY29udGV4dDsKKwl1bnNpZ25lZCBsb25nIGVuZCwgc2VjczsKKwlpbnQgcmM7CisKKwkvKiBmaXJzdCwgZGVib3VuY2UgcGh5IGlmIFNBVEEgKi8KKwlpZiAoYXAtPmNibCA9PSBBVEFfQ0JMX1NBVEEpIHsKKwkJcmMgPSBzYXRhX3BoeV9kZWJvdW5jZShhcCwgc2F0YV9kZWJfdGltaW5nX2VoKTsKKworCQkvKiBpZiBkZWJvdW5jZWQgc3VjY2Vzc2Z1bGx5IGFuZCBvZmZsaW5lLCBubyBuZWVkIHRvIHdhaXQgKi8KKwkJaWYgKChyYyA9PSAwIHx8IHJjID09IC1FT1BOT1RTVVBQKSAmJiBhdGFfcG9ydF9vZmZsaW5lKGFwKSkKKwkJCXJldHVybjsKKwl9CisKKwkvKiBva2F5LCBsZXQncyBnaXZlIHRoZSBkcml2ZSB0aW1lIHRvIHNwaW4gdXAgKi8KKwllbmQgPSBlaGMtPmkuaG90cGx1Z190aW1lc3RhbXAgKyBBVEFfU1BJTlVQX1dBSVQgKiBIWiAvIDEwMDA7CisJc2VjcyA9ICgoZW5kIC0gamlmZmllcykgKyBIWiAtIDEpIC8gSFo7CisKKwlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBlbmQpKQorCQlyZXR1cm47CisKKwlpZiAoc2VjcyA+IDUpCisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9JTkZPLCAid2FpdGluZyBmb3IgZGV2aWNlIHRvIHNwaW4gdXAgIgorCQkJCSIoJWx1IHNlY3MpXG4iLCBzZWNzKTsKKworCXNjaGVkdWxlX3RpbWVvdXRfdW5pbnRlcnJ1cHRpYmxlKGVuZCAtIGppZmZpZXMpOworfQorCisvKioKKyAqCWF0YV9zdGRfcHJlcmVzZXQgLSBwcmVwYXJlIGZvciByZXNldAorICoJQGFwOiBBVEEgcG9ydCB0byBiZSByZXNldAorICoKKyAqCUBhcCBpcyBhYm91dCB0byBiZSByZXNldC4gIEluaXRpYWxpemUgaXQuCiAgKgogICoJTE9DS0lORzoKICAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKQpAQCAtMjE4Nyw3ICsyNTc5LDYzIEBACiAgKglSRVRVUk5TOgogICoJMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLgogICovCi1pbnQgYXRhX3N0ZF9zb2Z0cmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHZlcmJvc2UsIHVuc2lnbmVkIGludCAqY2xhc3NlcykKK2ludCBhdGFfc3RkX3ByZXJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJc3RydWN0IGF0YV9laF9jb250ZXh0ICplaGMgPSAmYXAtPmVoX2NvbnRleHQ7CisJY29uc3QgdW5zaWduZWQgbG9uZyAqdGltaW5nOworCWludCByYzsKKworCS8qIGhvdHBsdWc/ICovCisJaWYgKGVoYy0+aS5mbGFncyAmIEFUQV9FSElfSE9UUExVR0dFRCkgeworCQlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfSFJTVF9UT19SRVNVTUUpCisJCQllaGMtPmkuYWN0aW9uIHw9IEFUQV9FSF9IQVJEUkVTRVQ7CisJCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TS0lQX0QySF9CU1kpCisJCQlhdGFfd2FpdF9zcGludXAoYXApOworCX0KKworCS8qIGlmIHdlJ3JlIGFib3V0IHRvIGRvIGhhcmRyZXNldCwgbm90aGluZyBtb3JlIHRvIGRvICovCisJaWYgKGVoYy0+aS5hY3Rpb24gJiBBVEFfRUhfSEFSRFJFU0VUKQorCQlyZXR1cm4gMDsKKworCS8qIGlmIFNBVEEsIHJlc3VtZSBwaHkgKi8KKwlpZiAoYXAtPmNibCA9PSBBVEFfQ0JMX1NBVEEpIHsKKwkJaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX0xPQURJTkcpCisJCQl0aW1pbmcgPSBzYXRhX2RlYl90aW1pbmdfYm9vdDsKKwkJZWxzZQorCQkJdGltaW5nID0gc2F0YV9kZWJfdGltaW5nX2VoOworCisJCXJjID0gc2F0YV9waHlfcmVzdW1lKGFwLCB0aW1pbmcpOworCQlpZiAocmMgJiYgcmMgIT0gLUVPUE5PVFNVUFApIHsKKwkJCS8qIHBoeSByZXN1bWUgZmFpbGVkICovCisJCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fV0FSTklORywgImZhaWxlZCB0byByZXN1bWUgIgorCQkJCQkibGluayBmb3IgcmVzZXQgKGVycm5vPSVkKVxuIiwgcmMpOworCQkJcmV0dXJuIHJjOworCQl9CisJfQorCisJLyogV2FpdCBmb3IgIUJTWSBpZiB0aGUgY29udHJvbGxlciBjYW4gd2FpdCBmb3IgdGhlIGZpcnN0IEQySAorCSAqIFJlZyBGSVMgYW5kIHdlIGRvbid0IGtub3cgdGhhdCBubyBkZXZpY2UgaXMgYXR0YWNoZWQuCisJICovCisJaWYgKCEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfU0tJUF9EMkhfQlNZKSAmJiAhYXRhX3BvcnRfb2ZmbGluZShhcCkpCisJCWF0YV9idXN5X3NsZWVwKGFwLCBBVEFfVE1PVVRfQk9PVF9RVUlDSywgQVRBX1RNT1VUX0JPT1QpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICoJYXRhX3N0ZF9zb2Z0cmVzZXQgLSByZXNldCBob3N0IHBvcnQgdmlhIEFUQSBTUlNUCisgKglAYXA6IHBvcnQgdG8gcmVzZXQKKyAqCUBjbGFzc2VzOiByZXN1bHRpbmcgY2xhc3NlcyBvZiBhdHRhY2hlZCBkZXZpY2VzCisgKgorICoJUmVzZXQgaG9zdCBwb3J0IHVzaW5nIEFUQSBTUlNULgorICoKKyAqCUxPQ0tJTkc6CisgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkKKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLgorICovCitpbnQgYXRhX3N0ZF9zb2Z0cmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKQogewogCXVuc2lnbmVkIGludCBzbGF2ZV9wb3NzaWJsZSA9IGFwLT5mbGFncyAmIEFUQV9GTEFHX1NMQVZFX1BPU1M7CiAJdW5zaWduZWQgaW50IGRldm1hc2sgPSAwLCBlcnJfbWFzazsKQEAgLTIxOTUsNyArMjY0Myw3IEBACiAKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKLQlpZiAoYXAtPm9wcy0+c2NyX3JlYWQgJiYgIXNhdGFfZGV2X3ByZXNlbnQoYXApKSB7CisJaWYgKGF0YV9wb3J0X29mZmxpbmUoYXApKSB7CiAJCWNsYXNzZXNbMF0gPSBBVEFfREVWX05PTkU7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTIyMTMsMTEgKzI2NjEsNyBAQAogCURQUklOVEsoImFib3V0IHRvIHNvZnRyZXNldCwgZGV2bWFzaz0leFxuIiwgZGV2bWFzayk7CiAJZXJyX21hc2sgPSBhdGFfYnVzX3NvZnRyZXNldChhcCwgZGV2bWFzayk7CiAJaWYgKGVycl9tYXNrKSB7Ci0JCWlmICh2ZXJib3NlKQotCQkJcHJpbnRrKEtFUk5fRVJSICJhdGEldTogU1JTVCBmYWlsZWQgKGVycl9tYXNrPTB4JXgpXG4iLAotCQkJICAgICAgIGFwLT5pZCwgZXJyX21hc2spOwotCQllbHNlCi0JCQlEUFJJTlRLKCJFWElULCBzb2Z0cmVzZXQgZmFpbGVkIChlcnJfbWFzaz0weCV4KVxuIiwKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgIlNSU1QgZmFpbGVkIChlcnJfbWFzaz0weCV4KVxuIiwKIAkJCQllcnJfbWFzayk7CiAJCXJldHVybiAtRUlPOwogCX0KQEAgLTIyMzUsMTIgKzI2NzksOSBAQAogLyoqCiAgKglzYXRhX3N0ZF9oYXJkcmVzZXQgLSByZXNldCBob3N0IHBvcnQgdmlhIFNBVEEgcGh5IHJlc2V0CiAgKglAYXA6IHBvcnQgdG8gcmVzZXQKLSAqCUB2ZXJib3NlOiBmYWlsIHZlcmJvc2VseQogICoJQGNsYXNzOiByZXN1bHRpbmcgY2xhc3Mgb2YgYXR0YWNoZWQgZGV2aWNlCiAgKgogICoJU0FUQSBwaHktcmVzZXQgaG9zdCBwb3J0IHVzaW5nIERFVCBiaXRzIG9mIFNDb250cm9sIHJlZ2lzdGVyLgotICoJVGhpcyBmdW5jdGlvbiBpcyB0byBiZSB1c2VkIGFzIHN0YW5kYXJkIGNhbGxiYWNrIGZvcgotICoJYXRhX2RyaXZlXypfcmVzZXQoKS4KICAqCiAgKglMT0NLSU5HOgogICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCkBAIC0yMjQ4LDM1ICsyNjg5LDU3IEBACiAgKglSRVRVUk5TOgogICoJMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLgogICovCi1pbnQgc2F0YV9zdGRfaGFyZHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCB2ZXJib3NlLCB1bnNpZ25lZCBpbnQgKmNsYXNzKQoraW50IHNhdGFfc3RkX2hhcmRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzKQogeworCXUzMiBzY29udHJvbDsKKwlpbnQgcmM7CisKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKLQkvKiBJc3N1ZSBwaHkgd2FrZS9yZXNldCAqLwotCXNjcl93cml0ZV9mbHVzaChhcCwgU0NSX0NPTlRST0wsIDB4MzAxKTsKKwlpZiAoc2F0YV9zZXRfc3BkX25lZWRlZChhcCkpIHsKKwkJLyogU0FUQSBzcGVjIHNheXMgbm90aGluZyBhYm91dCBob3cgdG8gcmVjb25maWd1cmUKKwkJICogc3BkLiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgdHVybiBvZmYgcGh5IGR1cmluZworCQkgKiByZWNvbmZpZ3VyYXRpb24uICBUaGlzIHdvcmtzIGZvciBhdCBsZWFzdCBJQ0g3IEFIQ0kKKwkJICogYW5kIFNpbDMxMjQuCisJCSAqLworCQlpZiAoKHJjID0gc2F0YV9zY3JfcmVhZChhcCwgU0NSX0NPTlRST0wsICZzY29udHJvbCkpKQorCQkJcmV0dXJuIHJjOwogCi0JLyoKLQkgKiBDb3VsZG4ndCBmaW5kIGFueXRoaW5nIGluIFNBVEEgSS9JSSBzcGVjcywgYnV0IEFIQ0ktMS4xCisJCXNjb250cm9sID0gKHNjb250cm9sICYgMHgwZjApIHwgMHgzMDI7CisKKwkJaWYgKChyYyA9IHNhdGFfc2NyX3dyaXRlKGFwLCBTQ1JfQ09OVFJPTCwgc2NvbnRyb2wpKSkKKwkJCXJldHVybiByYzsKKworCQlzYXRhX3NldF9zcGQoYXApOworCX0KKworCS8qIGlzc3VlIHBoeSB3YWtlL3Jlc2V0ICovCisJaWYgKChyYyA9IHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9DT05UUk9MLCAmc2NvbnRyb2wpKSkKKwkJcmV0dXJuIHJjOworCisJc2NvbnRyb2wgPSAoc2NvbnRyb2wgJiAweDBmMCkgfCAweDMwMTsKKworCWlmICgocmMgPSBzYXRhX3Njcl93cml0ZV9mbHVzaChhcCwgU0NSX0NPTlRST0wsIHNjb250cm9sKSkpCisJCXJldHVybiByYzsKKworCS8qIENvdWxkbid0IGZpbmQgYW55dGhpbmcgaW4gU0FUQSBJL0lJIHNwZWNzLCBidXQgQUhDSS0xLjEKIAkgKiAxMC40LjIgc2F5cyBhdCBsZWFzdCAxIG1zLgogCSAqLwogCW1zbGVlcCgxKTsKIAotCS8qIEJyaW5nIHBoeSBiYWNrICovCi0Jc2F0YV9waHlfcmVzdW1lKGFwKTsKKwkvKiBicmluZyBwaHkgYmFjayAqLworCXNhdGFfcGh5X3Jlc3VtZShhcCwgc2F0YV9kZWJfdGltaW5nX2VoKTsKIAogCS8qIFRPRE86IHBoeSBsYXllciB3aXRoIHBvbGxpbmcsIHRpbWVvdXRzLCBldGMuICovCi0JaWYgKCFzYXRhX2Rldl9wcmVzZW50KGFwKSkgeworCWlmIChhdGFfcG9ydF9vZmZsaW5lKGFwKSkgewogCQkqY2xhc3MgPSBBVEFfREVWX05PTkU7CiAJCURQUklOVEsoIkVYSVQsIGxpbmsgb2ZmbGluZVxuIik7CiAJCXJldHVybiAwOwogCX0KIAogCWlmIChhdGFfYnVzeV9zbGVlcChhcCwgQVRBX1RNT1VUX0JPT1RfUVVJQ0ssIEFUQV9UTU9VVF9CT09UKSkgewotCQlpZiAodmVyYm9zZSkKLQkJCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IENPTVJFU0VUIGZhaWxlZCAiCi0JCQkgICAgICAgIihkZXZpY2Ugbm90IHJlYWR5KVxuIiwgYXAtPmlkKTsKLQkJZWxzZQotCQkJRFBSSU5USygiRVhJVCwgZGV2aWNlIG5vdCByZWFkeVxuIik7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsCisJCQkJIkNPTVJFU0VUIGZhaWxlZCAoZGV2aWNlIG5vdCByZWFkeSlcbiIpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKQEAgLTIyOTcsMjcgKzI3NjAsMjggQEAKICAqCXRoZSBkZXZpY2UgbWlnaHQgaGF2ZSBiZWVuIHJlc2V0IG1vcmUgdGhhbiBvbmNlIHVzaW5nCiAgKglkaWZmZXJlbnQgcmVzZXQgbWV0aG9kcyBiZWZvcmUgcG9zdHJlc2V0IGlzIGludm9rZWQuCiAgKgotICoJVGhpcyBmdW5jdGlvbiBpcyB0byBiZSB1c2VkIGFzIHN0YW5kYXJkIGNhbGxiYWNrIGZvcgotICoJYXRhX2RyaXZlXypfcmVzZXQoKS4KLSAqCiAgKglMT0NLSU5HOgogICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCiAgKi8KIHZvaWQgYXRhX3N0ZF9wb3N0cmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKQogeworCXUzMiBzZXJyb3I7CisKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKLQkvKiBzZXQgY2FibGUgdHlwZSBpZiBpdCBpc24ndCBhbHJlYWR5IHNldCAqLwotCWlmIChhcC0+Y2JsID09IEFUQV9DQkxfTk9ORSAmJiBhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TQVRBKQotCQlhcC0+Y2JsID0gQVRBX0NCTF9TQVRBOwotCiAJLyogcHJpbnQgbGluayBzdGF0dXMgKi8KLQlpZiAoYXAtPmNibCA9PSBBVEFfQ0JMX1NBVEEpCi0JCXNhdGFfcHJpbnRfbGlua19zdGF0dXMoYXApOworCXNhdGFfcHJpbnRfbGlua19zdGF0dXMoYXApOworCisJLyogY2xlYXIgU0Vycm9yICovCisJaWYgKHNhdGFfc2NyX3JlYWQoYXAsIFNDUl9FUlJPUiwgJnNlcnJvcikgPT0gMCkKKwkJc2F0YV9zY3Jfd3JpdGUoYXAsIFNDUl9FUlJPUiwgc2Vycm9yKTsKIAogCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzICovCi0JaWYgKGFwLT5pb2FkZHIuY3RsX2FkZHIpCS8qIEZJWE1FOiBoYWNrLiBjcmVhdGUgYSBob29rIGluc3RlYWQgKi8KLQkJYXRhX2lycV9vbihhcCk7CisJaWYgKCFhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKSB7CisJCS8qIEZJWE1FOiBoYWNrLiBjcmVhdGUgYSBob29rIGluc3RlYWQgKi8KKwkJaWYgKGFwLT5pb2FkZHIuY3RsX2FkZHIpCisJCQlhdGFfaXJxX29uKGFwKTsKKwl9CiAKIAkvKiBpcyBkb3VibGUtc2VsZWN0IHJlYWxseSBuZWNlc3Nhcnk/ICovCiAJaWYgKGNsYXNzZXNbMF0gIT0gQVRBX0RFVl9OT05FKQpAQCAtMjM0MywxMjYgKzI4MDcsNyBAQAogfQogCiAvKioKLSAqCWF0YV9zdGRfcHJvYmVfcmVzZXQgLSBzdGFuZGFyZCBwcm9iZSByZXNldCBtZXRob2QKLSAqCUBhcDogcHJvdCB0byBwZXJmb3JtIHByb2JlLXJlc2V0Ci0gKglAY2xhc3NlczogcmVzdWx0aW5nIGNsYXNzZXMgb2YgYXR0YWNoZWQgZGV2aWNlcwotICoKLSAqCVRoZSBzdG9jayBvZmYtdGhlLXNoZWxmIC0+cHJvYmVfcmVzZXQgbWV0aG9kLgotICoKLSAqCUxPQ0tJTkc6Ci0gKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkKLSAqCi0gKglSRVRVUk5TOgotICoJMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLgotICovCi1pbnQgYXRhX3N0ZF9wcm9iZV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpCi17Ci0JYXRhX3Jlc2V0X2ZuX3QgaGFyZHJlc2V0OwotCi0JaGFyZHJlc2V0ID0gTlVMTDsKLQlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfU0FUQSAmJiBhcC0+b3BzLT5zY3JfcmVhZCkKLQkJaGFyZHJlc2V0ID0gc2F0YV9zdGRfaGFyZHJlc2V0OwotCi0JcmV0dXJuIGF0YV9kcml2ZV9wcm9iZV9yZXNldChhcCwgYXRhX3N0ZF9wcm9iZWluaXQsCi0JCQkJICAgICBhdGFfc3RkX3NvZnRyZXNldCwgaGFyZHJlc2V0LAotCQkJCSAgICAgYXRhX3N0ZF9wb3N0cmVzZXQsIGNsYXNzZXMpOwotfQotCi1zdGF0aWMgaW50IGRvX3Byb2JlX3Jlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGF0YV9yZXNldF9mbl90IHJlc2V0LAotCQkJICBhdGFfcG9zdHJlc2V0X2ZuX3QgcG9zdHJlc2V0LAotCQkJICB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpCi17Ci0JaW50IGksIHJjOwotCi0JZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQotCQljbGFzc2VzW2ldID0gQVRBX0RFVl9VTktOT1dOOwotCi0JcmMgPSByZXNldChhcCwgMCwgY2xhc3Nlcyk7Ci0JaWYgKHJjKQotCQlyZXR1cm4gcmM7Ci0KLQkvKiBJZiBhbnkgY2xhc3MgaXNuJ3QgQVRBX0RFVl9VTktOT1dOLCBjb25zaWRlciBjbGFzc2lmaWNhdGlvbgotCSAqIGlzIGNvbXBsZXRlIGFuZCBjb252ZXJ0IGFsbCBBVEFfREVWX1VOS05PV04gdG8KLQkgKiBBVEFfREVWX05PTkUuCi0JICovCi0JZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQotCQlpZiAoY2xhc3Nlc1tpXSAhPSBBVEFfREVWX1VOS05PV04pCi0JCQlicmVhazsKLQotCWlmIChpIDwgQVRBX01BWF9ERVZJQ0VTKQotCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCi0JCQlpZiAoY2xhc3Nlc1tpXSA9PSBBVEFfREVWX1VOS05PV04pCi0JCQkJY2xhc3Nlc1tpXSA9IEFUQV9ERVZfTk9ORTsKLQotCWlmIChwb3N0cmVzZXQpCi0JCXBvc3RyZXNldChhcCwgY2xhc3Nlcyk7Ci0KLQlyZXR1cm4gY2xhc3Nlc1swXSAhPSBBVEFfREVWX1VOS05PV04gPyAwIDogLUVOT0RFVjsKLX0KLQotLyoqCi0gKglhdGFfZHJpdmVfcHJvYmVfcmVzZXQgLSBQZXJmb3JtIHByb2JlIHJlc2V0IHdpdGggZ2l2ZW4gbWV0aG9kcwotICoJQGFwOiBwb3J0IHRvIHJlc2V0Ci0gKglAcHJvYmVpbml0OiBwcm9iZWluaXQgbWV0aG9kIChjYW4gYmUgTlVMTCkKLSAqCUBzb2Z0cmVzZXQ6IHNvZnRyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQotICoJQGhhcmRyZXNldDogaGFyZHJlc2V0IG1ldGhvZCAoY2FuIGJlIE5VTEwpCi0gKglAcG9zdHJlc2V0OiBwb3N0cmVzZXQgbWV0aG9kIChjYW4gYmUgTlVMTCkKLSAqCUBjbGFzc2VzOiByZXN1bHRpbmcgY2xhc3NlcyBvZiBhdHRhY2hlZCBkZXZpY2VzCi0gKgotICoJUmVzZXQgdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBjbGFzc2lmeSBhdHRhY2hlZCBkZXZpY2VzIHVzaW5nCi0gKglnaXZlbiBtZXRob2RzLiAgVGhpcyBmdW5jdGlvbiBwcmVmZXJzIHNvZnRyZXNldCBidXQgdHJpZXMgYWxsCi0gKglwb3NzaWJsZSByZXNldCBzZXF1ZW5jZXMgdG8gcmVzZXQgYW5kIGNsYXNzaWZ5IGRldmljZXMuICBUaGlzCi0gKglmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgLT5wcm9iZV9yZXNldAotICoJY2FsbGJhY2sgYnkgbG93IGxldmVsIGRyaXZlcnMuCi0gKgotICoJUmVzZXQgbWV0aG9kcyBzaG91bGQgZm9sbG93IHRoZSBmb2xsb3dpbmcgcnVsZXMuCi0gKgotICoJLSBSZXR1cm4gMCBvbiBzdWNlc3MsIC1lcnJubyBvbiBmYWlsdXJlLgotICoJLSBJZiBjbGFzc2lmaWNhdGlvbiBpcyBzdXBwb3J0ZWQsIGZpbGwgY2xhc3Nlc1tdIHdpdGgKLSAqCSAgcmVjb2duaXplZCBjbGFzcyBjb2Rlcy4KLSAqCS0gSWYgY2xhc3NpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZCwgbGVhdmUgY2xhc3Nlc1tdIGFsb25lLgotICoJLSBJZiB2ZXJib3NlIGlzIG5vbi16ZXJvLCBwcmludCBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmU7Ci0gKgkgIG90aGVyd2lzZSwgc2h1dCB1cC4KLSAqCi0gKglMT0NLSU5HOgotICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCi0gKgotICoJUkVUVVJOUzoKLSAqCTAgb24gc3VjY2VzcywgLUVJTlZBTCBpZiBubyByZXNldCBtZXRob2QgaXMgYXZhbGlhYmxlLCAtRU5PREVWCi0gKglpZiBjbGFzc2lmaWNhdGlvbiBmYWlscywgYW5kIGFueSBlcnJvciBjb2RlIGZyb20gcmVzZXQKLSAqCW1ldGhvZHMuCi0gKi8KLWludCBhdGFfZHJpdmVfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgYXRhX3Byb2JlaW5pdF9mbl90IHByb2JlaW5pdCwKLQkJCSAgYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LCBhdGFfcmVzZXRfZm5fdCBoYXJkcmVzZXQsCi0JCQkgIGF0YV9wb3N0cmVzZXRfZm5fdCBwb3N0cmVzZXQsIHVuc2lnbmVkIGludCAqY2xhc3NlcykKLXsKLQlpbnQgcmMgPSAtRUlOVkFMOwotCi0JaWYgKHByb2JlaW5pdCkKLQkJcHJvYmVpbml0KGFwKTsKLQotCWlmIChzb2Z0cmVzZXQpIHsKLQkJcmMgPSBkb19wcm9iZV9yZXNldChhcCwgc29mdHJlc2V0LCBwb3N0cmVzZXQsIGNsYXNzZXMpOwotCQlpZiAocmMgPT0gMCkKLQkJCXJldHVybiAwOwotCX0KLQotCWlmICghaGFyZHJlc2V0KQotCQlyZXR1cm4gcmM7Ci0KLQlyYyA9IGRvX3Byb2JlX3Jlc2V0KGFwLCBoYXJkcmVzZXQsIHBvc3RyZXNldCwgY2xhc3Nlcyk7Ci0JaWYgKHJjID09IDAgfHwgcmMgIT0gLUVOT0RFVikKLQkJcmV0dXJuIHJjOwotCi0JaWYgKHNvZnRyZXNldCkKLQkJcmMgPSBkb19wcm9iZV9yZXNldChhcCwgc29mdHJlc2V0LCBwb3N0cmVzZXQsIGNsYXNzZXMpOwotCi0JcmV0dXJuIHJjOwotfQotCi0vKioKICAqCWF0YV9kZXZfc2FtZV9kZXZpY2UgLSBEZXRlcm1pbmUgd2hldGhlciBuZXcgSUQgbWF0Y2hlcyBjb25maWd1cmVkIGRldmljZQotICoJQGFwOiBwb3J0IG9uIHdoaWNoIHRoZSBkZXZpY2UgdG8gY29tcGFyZSBhZ2FpbnN0IHJlc2lkZXMKICAqCUBkZXY6IGRldmljZSB0byBjb21wYXJlIGFnYWluc3QKICAqCUBuZXdfY2xhc3M6IGNsYXNzIG9mIHRoZSBuZXcgZGV2aWNlCiAgKglAbmV3X2lkOiBJREVOVElGWSBwYWdlIG9mIHRoZSBuZXcgZGV2aWNlCkBAIC0yNDc3LDE3ICsyODIyLDE2IEBACiAgKglSRVRVUk5TOgogICoJMSBpZiBAZGV2IG1hdGNoZXMgQG5ld19jbGFzcyBhbmQgQG5ld19pZCwgMCBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyBpbnQgYXRhX2Rldl9zYW1lX2RldmljZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAotCQkJICAgICAgIHVuc2lnbmVkIGludCBuZXdfY2xhc3MsIGNvbnN0IHUxNiAqbmV3X2lkKQorc3RhdGljIGludCBhdGFfZGV2X3NhbWVfZGV2aWNlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXdfY2xhc3MsCisJCQkgICAgICAgY29uc3QgdTE2ICpuZXdfaWQpCiB7CiAJY29uc3QgdTE2ICpvbGRfaWQgPSBkZXYtPmlkOwogCXVuc2lnbmVkIGNoYXIgbW9kZWxbMl1bNDFdLCBzZXJpYWxbMl1bMjFdOwogCXU2NCBuZXdfbl9zZWN0b3JzOwogCiAJaWYgKGRldi0+Y2xhc3MgIT0gbmV3X2NsYXNzKSB7Ci0JCXByaW50ayhLRVJOX0lORk8KLQkJICAgICAgICJhdGEldTogZGV2ICV1IGNsYXNzIG1pc21hdGNoICVkICE9ICVkXG4iLAotCQkgICAgICAgYXAtPmlkLCBkZXYtPmRldm5vLCBkZXYtPmNsYXNzLCBuZXdfY2xhc3MpOworCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fSU5GTywgImNsYXNzIG1pc21hdGNoICVkICE9ICVkXG4iLAorCQkJICAgICAgIGRldi0+Y2xhc3MsIG5ld19jbGFzcyk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMjQ5OCwyNCArMjg0MiwyMiBAQAogCW5ld19uX3NlY3RvcnMgPSBhdGFfaWRfbl9zZWN0b3JzKG5ld19pZCk7CiAKIAlpZiAoc3RyY21wKG1vZGVsWzBdLCBtb2RlbFsxXSkpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTwotCQkgICAgICAgImF0YSV1OiBkZXYgJXUgbW9kZWwgbnVtYmVyIG1pc21hdGNoICclcycgIT0gJyVzJ1xuIiwKLQkJICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubywgbW9kZWxbMF0sIG1vZGVsWzFdKTsKKwkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0lORk8sICJtb2RlbCBudW1iZXIgbWlzbWF0Y2ggIgorCQkJICAgICAgICInJXMnICE9ICclcydcbiIsIG1vZGVsWzBdLCBtb2RlbFsxXSk7CiAJCXJldHVybiAwOwogCX0KIAogCWlmIChzdHJjbXAoc2VyaWFsWzBdLCBzZXJpYWxbMV0pKSB7Ci0JCXByaW50ayhLRVJOX0lORk8KLQkJICAgICAgICJhdGEldTogZGV2ICV1IHNlcmlhbCBudW1iZXIgbWlzbWF0Y2ggJyVzJyAhPSAnJXMnXG4iLAotCQkgICAgICAgYXAtPmlkLCBkZXYtPmRldm5vLCBzZXJpYWxbMF0sIHNlcmlhbFsxXSk7CisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLCAic2VyaWFsIG51bWJlciBtaXNtYXRjaCAiCisJCQkgICAgICAgIiclcycgIT0gJyVzJ1xuIiwgc2VyaWFsWzBdLCBzZXJpYWxbMV0pOwogCQlyZXR1cm4gMDsKIAl9CiAKIAlpZiAoZGV2LT5jbGFzcyA9PSBBVEFfREVWX0FUQSAmJiBkZXYtPm5fc2VjdG9ycyAhPSBuZXdfbl9zZWN0b3JzKSB7Ci0JCXByaW50ayhLRVJOX0lORk8KLQkJICAgICAgICJhdGEldTogZGV2ICV1IG5fc2VjdG9ycyBtaXNtYXRjaCAlbGx1ICE9ICVsbHVcbiIsCi0JCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5uX3NlY3RvcnMsCi0JCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKW5ld19uX3NlY3RvcnMpOworCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fSU5GTywgIm5fc2VjdG9ycyBtaXNtYXRjaCAiCisJCQkgICAgICAgIiVsbHUgIT0gJWxsdVxuIiwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWRldi0+bl9zZWN0b3JzLAorCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpbmV3X25fc2VjdG9ycyk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMjUyNCw3ICsyODY2LDYgQEAKIAogLyoqCiAgKglhdGFfZGV2X3JldmFsaWRhdGUgLSBSZXZhbGlkYXRlIEFUQSBkZXZpY2UKLSAqCUBhcDogcG9ydCBvbiB3aGljaCB0aGUgZGV2aWNlIHRvIHJldmFsaWRhdGUgcmVzaWRlcwogICoJQGRldjogZGV2aWNlIHRvIHJldmFsaWRhdGUKICAqCUBwb3N0X3Jlc2V0OiBpcyB0aGlzIHJldmFsaWRhdGlvbiBhZnRlciByZXNldD8KICAqCkBAIC0yNTM3LDQwICsyODc4LDM3IEBACiAgKglSRVRVUk5TOgogICoJMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvdGhlcndpc2UKICAqLwotaW50IGF0YV9kZXZfcmV2YWxpZGF0ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAotCQkgICAgICAgaW50IHBvc3RfcmVzZXQpCitpbnQgYXRhX2Rldl9yZXZhbGlkYXRlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIGludCBwb3N0X3Jlc2V0KQogewotCXVuc2lnbmVkIGludCBjbGFzczsKLQl1MTYgKmlkOworCXVuc2lnbmVkIGludCBjbGFzcyA9IGRldi0+Y2xhc3M7CisJdTE2ICppZCA9ICh2b2lkICopZGV2LT5hcC0+c2VjdG9yX2J1ZjsKIAlpbnQgcmM7CiAKLQlpZiAoIWF0YV9kZXZfcHJlc2VudChkZXYpKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWNsYXNzID0gZGV2LT5jbGFzczsKLQlpZCA9IE5VTEw7Ci0KLQkvKiBhbGxvY2F0ZSAmIHJlYWQgSUQgZGF0YSAqLwotCXJjID0gYXRhX2Rldl9yZWFkX2lkKGFwLCBkZXYsICZjbGFzcywgcG9zdF9yZXNldCwgJmlkKTsKLQlpZiAocmMpCi0JCWdvdG8gZmFpbDsKLQotCS8qIGlzIHRoZSBkZXZpY2Ugc3RpbGwgdGhlcmU/ICovCi0JaWYgKCFhdGFfZGV2X3NhbWVfZGV2aWNlKGFwLCBkZXYsIGNsYXNzLCBpZCkpIHsKKwlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYpKSB7CiAJCXJjID0gLUVOT0RFVjsKIAkJZ290byBmYWlsOwogCX0KIAotCWtmcmVlKGRldi0+aWQpOwotCWRldi0+aWQgPSBpZDsKKwkvKiByZWFkIElEIGRhdGEgKi8KKwlyYyA9IGF0YV9kZXZfcmVhZF9pZChkZXYsICZjbGFzcywgcG9zdF9yZXNldCwgaWQpOworCWlmIChyYykKKwkJZ290byBmYWlsOworCisJLyogaXMgdGhlIGRldmljZSBzdGlsbCB0aGVyZT8gKi8KKwlpZiAoIWF0YV9kZXZfc2FtZV9kZXZpY2UoZGV2LCBjbGFzcywgaWQpKSB7CisJCXJjID0gLUVOT0RFVjsKKwkJZ290byBmYWlsOworCX0KKworCW1lbWNweShkZXYtPmlkLCBpZCwgc2l6ZW9mKGlkWzBdKSAqIEFUQV9JRF9XT1JEUyk7CiAKIAkvKiBjb25maWd1cmUgZGV2aWNlIGFjY29yZGluZyB0byB0aGUgbmV3IElEICovCi0JcmV0dXJuIGF0YV9kZXZfY29uZmlndXJlKGFwLCBkZXYsIDApOworCXJjID0gYXRhX2Rldl9jb25maWd1cmUoZGV2LCAwKTsKKwlpZiAocmMgPT0gMCkKKwkJcmV0dXJuIDA7CiAKICBmYWlsOgotCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IGRldiAldSByZXZhbGlkYXRpb24gZmFpbGVkIChlcnJubz0lZClcbiIsCi0JICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubywgcmMpOwotCWtmcmVlKGlkKTsKKwlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fRVJSLCAicmV2YWxpZGF0aW9uIGZhaWxlZCAoZXJybm89JWQpXG4iLCByYyk7CiAJcmV0dXJuIHJjOwogfQogCkBAIC0yNjI2LDYgKzI5NjQsMTQgQEAKIAl1bnNpZ25lZCBpbnQgbmxlbiwgcmxlbjsKIAlpbnQgaTsKIAorCS8qIFdlIGRvbid0IHN1cHBvcnQgcG9sbGluZyBETUEuCisJICogRE1BIGJsYWNrbGlzdCB0aG9zZSBBVEFQSSBkZXZpY2VzIHdpdGggQ0RCLWludHIgKGFuZCB1c2UgUElPKQorCSAqIGlmIHRoZSBMTEREIGhhbmRsZXMgb25seSBpbnRlcnJ1cHRzIGluIHRoZSBIU01fU1RfTEFTVCBzdGF0ZS4KKwkgKi8KKwlpZiAoKGRldi0+YXAtPmZsYWdzICYgQVRBX0ZMQUdfUElPX1BPTExJTkcpICYmCisJICAgIChkZXYtPmZsYWdzICYgQVRBX0RGTEFHX0NEQl9JTlRSKSkKKwkJcmV0dXJuIDE7CisKIAlhdGFfaWRfc3RyaW5nKGRldi0+aWQsIG1vZGVsX251bSwgQVRBX0lEX1BST0RfT0ZTLAogCQkJICBzaXplb2YobW9kZWxfbnVtKSk7CiAJYXRhX2lkX3N0cmluZyhkZXYtPmlkLCBtb2RlbF9yZXYsIEFUQV9JRF9GV19SRVZfT0ZTLApAQCAtMjY0Niw3ICsyOTkyLDYgQEAKIAogLyoqCiAgKglhdGFfZGV2X3hmZXJtYXNrIC0gQ29tcHV0ZSBzdXBwb3J0ZWQgeGZlcm1hc2sgb2YgdGhlIGdpdmVuIGRldmljZQotICoJQGFwOiBQb3J0IG9uIHdoaWNoIHRoZSBkZXZpY2UgdG8gY29tcHV0ZSB4ZmVybWFzayBmb3IgcmVzaWRlcwogICoJQGRldjogRGV2aWNlIHRvIGNvbXB1dGUgeGZlcm1hc2sgZm9yCiAgKgogICoJQ29tcHV0ZSBzdXBwb3J0ZWQgeGZlcm1hc2sgb2YgQGRldiBhbmQgc3RvcmUgaXQgaW4KQEAgLTI2NjEsNDkgKzMwMDYsNjEgQEAKICAqCUxPQ0tJTkc6CiAgKglOb25lLgogICovCi1zdGF0aWMgdm9pZCBhdGFfZGV2X3hmZXJtYXNrKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBhdGFfZGV2X3hmZXJtYXNrKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGRldi0+YXA7CiAJc3RydWN0IGF0YV9ob3N0X3NldCAqaHMgPSBhcC0+aG9zdF9zZXQ7CiAJdW5zaWduZWQgbG9uZyB4ZmVyX21hc2s7CiAJaW50IGk7CiAKLQl4ZmVyX21hc2sgPSBhdGFfcGFja194ZmVybWFzayhhcC0+cGlvX21hc2ssIGFwLT5td2RtYV9tYXNrLAotCQkJCSAgICAgIGFwLT51ZG1hX21hc2spOworCXhmZXJfbWFzayA9IGF0YV9wYWNrX3hmZXJtYXNrKGFwLT5waW9fbWFzaywKKwkJCQkgICAgICBhcC0+bXdkbWFfbWFzaywgYXAtPnVkbWFfbWFzayk7CisKKwkvKiBBcHBseSBjYWJsZSBydWxlIGhlcmUuICBEb24ndCBhcHBseSBpdCBlYXJseSBiZWNhdXNlIHdoZW4KKwkgKiB3ZSBoYW5kbGUgaG90IHBsdWcgdGhlIGNhYmxlIHR5cGUgY2FuIGl0c2VsZiBjaGFuZ2UuCisJICovCisJaWYgKGFwLT5jYmwgPT0gQVRBX0NCTF9QQVRBNDApCisJCXhmZXJfbWFzayAmPSB+KDB4RjggPDwgQVRBX1NISUZUX1VETUEpOwogCiAJLyogRklYTUU6IFVzZSBwb3J0LXdpZGUgeGZlcm1hc2sgZm9yIG5vdyAqLwogCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgewogCQlzdHJ1Y3QgYXRhX2RldmljZSAqZCA9ICZhcC0+ZGV2aWNlW2ldOwotCQlpZiAoIWF0YV9kZXZfcHJlc2VudChkKSkKKworCQlpZiAoYXRhX2Rldl9hYnNlbnQoZCkpCiAJCQljb250aW51ZTsKLQkJeGZlcl9tYXNrICY9IGF0YV9wYWNrX3hmZXJtYXNrKGQtPnBpb19tYXNrLCBkLT5td2RtYV9tYXNrLAotCQkJCQkgICAgICAgZC0+dWRtYV9tYXNrKTsKKworCQlpZiAoYXRhX2Rldl9kaXNhYmxlZChkKSkgeworCQkJLyogdG8gYXZvaWQgdmlvbGF0aW5nIGRldmljZSBzZWxlY3Rpb24gdGltaW5nICovCisJCQl4ZmVyX21hc2sgJj0gYXRhX3BhY2tfeGZlcm1hc2soZC0+cGlvX21hc2ssCisJCQkJCQkgICAgICAgVUlOVF9NQVgsIFVJTlRfTUFYKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJeGZlcl9tYXNrICY9IGF0YV9wYWNrX3hmZXJtYXNrKGQtPnBpb19tYXNrLAorCQkJCQkgICAgICAgZC0+bXdkbWFfbWFzaywgZC0+dWRtYV9tYXNrKTsKIAkJeGZlcl9tYXNrICY9IGF0YV9pZF94ZmVybWFzayhkLT5pZCk7CiAJCWlmIChhdGFfZG1hX2JsYWNrbGlzdGVkKGQpKQogCQkJeGZlcl9tYXNrICY9IH4oQVRBX01BU0tfTVdETUEgfCBBVEFfTUFTS19VRE1BKTsKLQkJLyogQXBwbHkgY2FibGUgcnVsZSBoZXJlLiBEb24ndCBhcHBseSBpdCBlYXJseSBiZWNhdXNlIHdoZW4KLQkJICAgd2UgaGFuZGxlIGhvdCBwbHVnIHRoZSBjYWJsZSB0eXBlIGNhbiBpdHNlbGYgY2hhbmdlICovCi0JCWlmIChhcC0+Y2JsID09IEFUQV9DQkxfUEFUQTQwKQotCQkJeGZlcl9tYXNrICY9IH4oMHhGOCA8PCBBVEFfU0hJRlRfVURNQSk7CiAJfQogCiAJaWYgKGF0YV9kbWFfYmxhY2tsaXN0ZWQoZGV2KSkKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6IGRldiAldSBpcyBvbiBETUEgYmxhY2tsaXN0LCAiCi0JCSAgICAgICAiZGlzYWJsaW5nIERNQVxuIiwgYXAtPmlkLCBkZXYtPmRldm5vKTsKKwkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsCisJCQkgICAgICAgImRldmljZSBpcyBvbiBETUEgYmxhY2tsaXN0LCBkaXNhYmxpbmcgRE1BXG4iKTsKIAogCWlmIChocy0+ZmxhZ3MgJiBBVEFfSE9TVF9TSU1QTEVYKSB7CiAJCWlmIChocy0+c2ltcGxleF9jbGFpbWVkKQogCQkJeGZlcl9tYXNrICY9IH4oQVRBX01BU0tfTVdETUEgfCBBVEFfTUFTS19VRE1BKTsKIAl9CisKIAlpZiAoYXAtPm9wcy0+bW9kZV9maWx0ZXIpCiAJCXhmZXJfbWFzayA9IGFwLT5vcHMtPm1vZGVfZmlsdGVyKGFwLCBkZXYsIHhmZXJfbWFzayk7CiAKLQlhdGFfdW5wYWNrX3hmZXJtYXNrKHhmZXJfbWFzaywgJmRldi0+cGlvX21hc2ssICZkZXYtPm13ZG1hX21hc2ssCi0JCQkgICAgJmRldi0+dWRtYV9tYXNrKTsKKwlhdGFfdW5wYWNrX3hmZXJtYXNrKHhmZXJfbWFzaywgJmRldi0+cGlvX21hc2ssCisJCQkgICAgJmRldi0+bXdkbWFfbWFzaywgJmRldi0+dWRtYV9tYXNrKTsKIH0KIAogLyoqCiAgKglhdGFfZGV2X3NldF94ZmVybW9kZSAtIElzc3VlIFNFVCBGRUFUVVJFUyAtIFhGRVIgTU9ERSBjb21tYW5kCi0gKglAYXA6IFBvcnQgYXNzb2NpYXRlZCB3aXRoIGRldmljZSBAZGV2CiAgKglAZGV2OiBEZXZpY2UgdG8gd2hpY2ggY29tbWFuZCB3aWxsIGJlIHNlbnQKICAqCiAgKglJc3N1ZSBTRVQgRkVBVFVSRVMgLSBYRkVSIE1PREUgY29tbWFuZCB0byBkZXZpY2UgQGRldgpAQCAtMjcxNiw4ICszMDczLDcgQEAKICAqCTAgb24gc3VjY2VzcywgQUNfRVJSXyogbWFzayBvdGhlcndpc2UuCiAgKi8KIAotc3RhdGljIHVuc2lnbmVkIGludCBhdGFfZGV2X3NldF94ZmVybW9kZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCQkgc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXRhX2Rldl9zZXRfeGZlcm1vZGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYXRhX3Rhc2tmaWxlIHRmOwogCXVuc2lnbmVkIGludCBlcnJfbWFzazsKQEAgLTI3MjUsMTQgKzMwODEsMTQgQEAKIAkvKiBzZXQgdXAgc2V0LWZlYXR1cmVzIHRhc2tmaWxlICovCiAJRFBSSU5USygic2V0IGZlYXR1cmVzIC0geGZlciBtb2RlXG4iKTsKIAotCWF0YV90Zl9pbml0KGFwLCAmdGYsIGRldi0+ZGV2bm8pOworCWF0YV90Zl9pbml0KGRldiwgJnRmKTsKIAl0Zi5jb21tYW5kID0gQVRBX0NNRF9TRVRfRkVBVFVSRVM7CiAJdGYuZmVhdHVyZSA9IFNFVEZFQVRVUkVTX1hGRVI7CiAJdGYuZmxhZ3MgfD0gQVRBX1RGTEFHX0lTQUREUiB8IEFUQV9URkxBR19ERVZJQ0U7CiAJdGYucHJvdG9jb2wgPSBBVEFfUFJPVF9OT0RBVEE7CiAJdGYubnNlY3QgPSBkZXYtPnhmZXJfbW9kZTsKIAotCWVycl9tYXNrID0gYXRhX2V4ZWNfaW50ZXJuYWwoYXAsIGRldiwgJnRmLCBETUFfTk9ORSwgTlVMTCwgMCk7CisJZXJyX21hc2sgPSBhdGFfZXhlY19pbnRlcm5hbChkZXYsICZ0ZiwgTlVMTCwgRE1BX05PTkUsIE5VTEwsIDApOwogCiAJRFBSSU5USygiRVhJVCwgZXJyX21hc2s9JXhcbiIsIGVycl9tYXNrKTsKIAlyZXR1cm4gZXJyX21hc2s7CkBAIC0yNzQwLDcgKzMwOTYsNiBAQAogCiAvKioKICAqCWF0YV9kZXZfaW5pdF9wYXJhbXMgLSBJc3N1ZSBJTklUIERFViBQQVJBTVMgY29tbWFuZAotICoJQGFwOiBQb3J0IGFzc29jaWF0ZWQgd2l0aCBkZXZpY2UgQGRldgogICoJQGRldjogRGV2aWNlIHRvIHdoaWNoIGNvbW1hbmQgd2lsbCBiZSBzZW50CiAgKglAaGVhZHM6IE51bWJlciBvZiBoZWFkcyAodGFza2ZpbGUgcGFyYW1ldGVyKQogICoJQHNlY3RvcnM6IE51bWJlciBvZiBzZWN0b3JzICh0YXNrZmlsZSBwYXJhbWV0ZXIpCkBAIC0yNzUxLDExICszMTA2LDggQEAKICAqCVJFVFVSTlM6CiAgKgkwIG9uIHN1Y2Nlc3MsIEFDX0VSUl8qIG1hc2sgb3RoZXJ3aXNlLgogICovCi0KLXN0YXRpYyB1bnNpZ25lZCBpbnQgYXRhX2Rldl9pbml0X3BhcmFtcyhzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAotCQkJCQl1MTYgaGVhZHMsCi0JCQkJCXUxNiBzZWN0b3JzKQorc3RhdGljIHVuc2lnbmVkIGludCBhdGFfZGV2X2luaXRfcGFyYW1zKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkJCXUxNiBoZWFkcywgdTE2IHNlY3RvcnMpCiB7CiAJc3RydWN0IGF0YV90YXNrZmlsZSB0ZjsKIAl1bnNpZ25lZCBpbnQgZXJyX21hc2s7CkBAIC0yNzY3LDE0ICszMTE5LDE0IEBACiAJLyogc2V0IHVwIGluaXQgZGV2IHBhcmFtcyB0YXNrZmlsZSAqLwogCURQUklOVEsoImluaXQgZGV2IHBhcmFtcyBcbiIpOwogCi0JYXRhX3RmX2luaXQoYXAsICZ0ZiwgZGV2LT5kZXZubyk7CisJYXRhX3RmX2luaXQoZGV2LCAmdGYpOwogCXRmLmNvbW1hbmQgPSBBVEFfQ01EX0lOSVRfREVWX1BBUkFNUzsKIAl0Zi5mbGFncyB8PSBBVEFfVEZMQUdfSVNBRERSIHwgQVRBX1RGTEFHX0RFVklDRTsKIAl0Zi5wcm90b2NvbCA9IEFUQV9QUk9UX05PREFUQTsKIAl0Zi5uc2VjdCA9IHNlY3RvcnM7CiAJdGYuZGV2aWNlIHw9IChoZWFkcyAtIDEpICYgMHgwZjsgLyogbWF4IGhlYWQgPSBudW0uIG9mIGhlYWRzIC0gMSAqLwogCi0JZXJyX21hc2sgPSBhdGFfZXhlY19pbnRlcm5hbChhcCwgZGV2LCAmdGYsIERNQV9OT05FLCBOVUxMLCAwKTsKKwllcnJfbWFzayA9IGF0YV9leGVjX2ludGVybmFsKGRldiwgJnRmLCBOVUxMLCBETUFfTk9ORSwgTlVMTCwgMCk7CiAKIAlEUFJJTlRLKCJFWElULCBlcnJfbWFzaz0leFxuIiwgZXJyX21hc2spOwogCXJldHVybiBlcnJfbWFzazsKQEAgLTI5NTcsNiArMzMwOSw3IEBACiAJcWMtPm5fZWxlbSA9IDE7CiAJcWMtPm9yaWdfbl9lbGVtID0gMTsKIAlxYy0+YnVmX3ZpcnQgPSBidWY7CisJcWMtPm5ieXRlcyA9IGJ1ZmxlbjsKIAogCXNnID0gcWMtPl9fc2c7CiAJc2dfaW5pdF9vbmUoc2csIGJ1ZiwgYnVmbGVuKTsKQEAgLTMxNDAsMTM0ICszNDkzLDYgQEAKIH0KIAogLyoqCi0gKglhdGFfcG9sbF9xY19jb21wbGV0ZSAtIHR1cm4gaXJxIGJhY2sgb24gYW5kIGZpbmlzaCBxYwotICoJQHFjOiBDb21tYW5kIHRvIGNvbXBsZXRlCi0gKglAZXJyX21hc2s6IEFUQSBzdGF0dXMgcmVnaXN0ZXIgY29udGVudAotICoKLSAqCUxPQ0tJTkc6Ci0gKglOb25lLiAgKGdyYWJzIGhvc3QgbG9jaykKLSAqLwotCi12b2lkIGF0YV9wb2xsX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCi17Ci0Jc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOwotCWFwLT5mbGFncyAmPSB+QVRBX0ZMQUdfTk9JTlRSOwotCWF0YV9pcnFfb24oYXApOwotCWF0YV9xY19jb21wbGV0ZShxYyk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7Ci19Ci0KLS8qKgotICoJYXRhX3Bpb19wb2xsIC0gcG9sbCB1c2luZyBQSU8sIGRlcGVuZGluZyBvbiBjdXJyZW50IHN0YXRlCi0gKglAYXA6IHRoZSB0YXJnZXQgYXRhX3BvcnQKLSAqCi0gKglMT0NLSU5HOgotICoJTm9uZS4gIChleGVjdXRpbmcgaW4ga2VybmVsIHRocmVhZCBjb250ZXh0KQotICoKLSAqCVJFVFVSTlM6Ci0gKgl0aW1lb3V0IHZhbHVlIHRvIHVzZQotICovCi0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIGF0YV9waW9fcG9sbChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQotewotCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7Ci0JdTggc3RhdHVzOwotCXVuc2lnbmVkIGludCBwb2xsX3N0YXRlID0gSFNNX1NUX1VOS05PV047Ci0JdW5zaWduZWQgaW50IHJlZ19zdGF0ZSA9IEhTTV9TVF9VTktOT1dOOwotCi0JcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKLQlXQVJOX09OKHFjID09IE5VTEwpOwotCi0Jc3dpdGNoIChhcC0+aHNtX3Rhc2tfc3RhdGUpIHsKLQljYXNlIEhTTV9TVDoKLQljYXNlIEhTTV9TVF9QT0xMOgotCQlwb2xsX3N0YXRlID0gSFNNX1NUX1BPTEw7Ci0JCXJlZ19zdGF0ZSA9IEhTTV9TVDsKLQkJYnJlYWs7Ci0JY2FzZSBIU01fU1RfTEFTVDoKLQljYXNlIEhTTV9TVF9MQVNUX1BPTEw6Ci0JCXBvbGxfc3RhdGUgPSBIU01fU1RfTEFTVF9QT0xMOwotCQlyZWdfc3RhdGUgPSBIU01fU1RfTEFTVDsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJQlVHKCk7Ci0JCWJyZWFrOwotCX0KLQotCXN0YXR1cyA9IGF0YV9jaGtfc3RhdHVzKGFwKTsKLQlpZiAoc3RhdHVzICYgQVRBX0JVU1kpIHsKLQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgYXAtPnBpb190YXNrX3RpbWVvdXQpKSB7Ci0JCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX1RJTUVPVVQ7Ci0JCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfVE1PVVQ7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBwb2xsX3N0YXRlOwotCQlyZXR1cm4gQVRBX1NIT1JUX1BBVVNFOwotCX0KLQotCWFwLT5oc21fdGFza19zdGF0ZSA9IHJlZ19zdGF0ZTsKLQlyZXR1cm4gMDsKLX0KLQotLyoqCi0gKglhdGFfcGlvX2NvbXBsZXRlIC0gY2hlY2sgaWYgZHJpdmUgaXMgYnVzeSBvciBpZGxlCi0gKglAYXA6IHRoZSB0YXJnZXQgYXRhX3BvcnQKLSAqCi0gKglMT0NLSU5HOgotICoJTm9uZS4gIChleGVjdXRpbmcgaW4ga2VybmVsIHRocmVhZCBjb250ZXh0KQotICoKLSAqCVJFVFVSTlM6Ci0gKglOb24temVybyBpZiBxYyBjb21wbGV0ZWQsIHplcm8gb3RoZXJ3aXNlLgotICovCi0KLXN0YXRpYyBpbnQgYXRhX3Bpb19jb21wbGV0ZSAoc3RydWN0IGF0YV9wb3J0ICphcCkKLXsKLQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwotCXU4IGRydl9zdGF0OwotCi0JLyoKLQkgKiBUaGlzIGlzIHB1cmVseSBoZXVyaXN0aWMuICBUaGlzIGlzIGEgZmFzdCBwYXRoLiAgU29tZXRpbWVzIHdoZW4KLQkgKiB3ZSBlbnRlciwgQlNZIHdpbGwgYmUgY2xlYXJlZCBpbiBhIGNoay1zdGF0dXMgb3IgdHdvLiAgSWYgbm90LAotCSAqIHRoZSBkcml2ZSBpcyBwcm9iYWJseSBzZWVraW5nIG9yIHNvbWV0aGluZy4gIFNub296ZSBmb3IgYSBjb3VwbGUKLQkgKiBtc2VjcywgdGhlbiBjaGstc3RhdHVzIGFnYWluLiAgSWYgc3RpbGwgYnVzeSwgZmFsbCBiYWNrIHRvCi0JICogSFNNX1NUX1BPTEwgc3RhdGUuCi0JICovCi0JZHJ2X3N0YXQgPSBhdGFfYnVzeV93YWl0KGFwLCBBVEFfQlVTWSwgMTApOwotCWlmIChkcnZfc3RhdCAmIEFUQV9CVVNZKSB7Ci0JCW1zbGVlcCgyKTsKLQkJZHJ2X3N0YXQgPSBhdGFfYnVzeV93YWl0KGFwLCBBVEFfQlVTWSwgMTApOwotCQlpZiAoZHJ2X3N0YXQgJiBBVEFfQlVTWSkgewotCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0xBU1RfUE9MTDsKLQkJCWFwLT5waW9fdGFza190aW1lb3V0ID0gamlmZmllcyArIEFUQV9UTU9VVF9QSU87Ci0JCQlyZXR1cm4gMDsKLQkJfQotCX0KLQotCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JV0FSTl9PTihxYyA9PSBOVUxMKTsKLQotCWRydl9zdGF0ID0gYXRhX3dhaXRfaWRsZShhcCk7Ci0JaWYgKCFhdGFfb2soZHJ2X3N0YXQpKSB7Ci0JCXFjLT5lcnJfbWFzayB8PSBfX2FjX2Vycl9tYXNrKGRydl9zdGF0KTsKLQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0lETEU7Ci0KLQlXQVJOX09OKHFjLT5lcnJfbWFzayk7Ci0JYXRhX3BvbGxfcWNfY29tcGxldGUocWMpOwotCi0JLyogYW5vdGhlciBjb21tYW5kIG1heSBzdGFydCBhdCB0aGlzIHBvaW50ICovCi0KLQlyZXR1cm4gMTsKLX0KLQotCi0vKioKICAqCXN3YXBfYnVmX2xlMTYgLSBzd2FwIGhhbHZlcyBvZiAxNi1iaXQgd29yZHMgaW4gcGxhY2UKICAqCUBidWY6ICBCdWZmZXIgdG8gc3dhcAogICoJQGJ1Zl93b3JkczogIE51bWJlciBvZiAxNi1iaXQgd29yZHMgaW4gYnVmZmVyLgpAQCAtMzI5MSw3ICszNTE2LDcgQEAKIAogLyoqCiAgKglhdGFfbW1pb19kYXRhX3hmZXIgLSBUcmFuc2ZlciBkYXRhIGJ5IE1NSU8KLSAqCUBhcDogcG9ydCB0byByZWFkL3dyaXRlCisgKglAYWRldjogZGV2aWNlIGZvciB0aGlzIEkvTwogICoJQGJ1ZjogZGF0YSBidWZmZXIKICAqCUBidWZsZW46IGJ1ZmZlciBsZW5ndGgKICAqCUB3cml0ZV9kYXRhOiByZWFkL3dyaXRlCkBAIC0zMzAyLDkgKzM1MjcsMTAgQEAKICAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KICAqLwogCi1zdGF0aWMgdm9pZCBhdGFfbW1pb19kYXRhX3hmZXIoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgY2hhciAqYnVmLAotCQkJICAgICAgIHVuc2lnbmVkIGludCBidWZsZW4sIGludCB3cml0ZV9kYXRhKQordm9pZCBhdGFfbW1pb19kYXRhX3hmZXIoc3RydWN0IGF0YV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgCisJCQl1bnNpZ25lZCBpbnQgYnVmbGVuLCBpbnQgd3JpdGVfZGF0YSkKIHsKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gYWRldi0+YXA7CiAJdW5zaWduZWQgaW50IGk7CiAJdW5zaWduZWQgaW50IHdvcmRzID0gYnVmbGVuID4+IDE7CiAJdTE2ICpidWYxNiA9ICh1MTYgKikgYnVmOwpAQCAtMzMzNiw3ICszNTYyLDcgQEAKIAogLyoqCiAgKglhdGFfcGlvX2RhdGFfeGZlciAtIFRyYW5zZmVyIGRhdGEgYnkgUElPCi0gKglAYXA6IHBvcnQgdG8gcmVhZC93cml0ZQorICoJQGFkZXY6IGRldmljZSB0byB0YXJnZXQKICAqCUBidWY6IGRhdGEgYnVmZmVyCiAgKglAYnVmbGVuOiBidWZmZXIgbGVuZ3RoCiAgKglAd3JpdGVfZGF0YTogcmVhZC93cml0ZQpAQCAtMzM0Nyw5ICszNTczLDEwIEBACiAgKglJbmhlcml0ZWQgZnJvbSBjYWxsZXIuCiAgKi8KIAotc3RhdGljIHZvaWQgYXRhX3Bpb19kYXRhX3hmZXIoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgY2hhciAqYnVmLAotCQkJICAgICAgdW5zaWduZWQgaW50IGJ1ZmxlbiwgaW50IHdyaXRlX2RhdGEpCit2b2lkIGF0YV9waW9fZGF0YV94ZmVyKHN0cnVjdCBhdGFfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBjaGFyICpidWYsIAorCQkgICAgICAgdW5zaWduZWQgaW50IGJ1ZmxlbiwgaW50IHdyaXRlX2RhdGEpCiB7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGFkZXYtPmFwOwogCXVuc2lnbmVkIGludCB3b3JkcyA9IGJ1ZmxlbiA+PiAxOwogCiAJLyogVHJhbnNmZXIgbXVsdGlwbGUgb2YgMiBieXRlcyAqLwpAQCAtMzM3NCwzOCArMzYwMSwyOSBAQAogfQogCiAvKioKLSAqCWF0YV9kYXRhX3hmZXIgLSBUcmFuc2ZlciBkYXRhIGZyb20vdG8gdGhlIGRhdGEgcmVnaXN0ZXIuCi0gKglAYXA6IHBvcnQgdG8gcmVhZC93cml0ZQorICoJYXRhX3Bpb19kYXRhX3hmZXJfbm9pcnEgLSBUcmFuc2ZlciBkYXRhIGJ5IFBJTworICoJQGFkZXY6IGRldmljZSB0byB0YXJnZXQKICAqCUBidWY6IGRhdGEgYnVmZmVyCiAgKglAYnVmbGVuOiBidWZmZXIgbGVuZ3RoCi0gKglAZG9fd3JpdGU6IHJlYWQvd3JpdGUKKyAqCUB3cml0ZV9kYXRhOiByZWFkL3dyaXRlCiAgKgotICoJVHJhbnNmZXIgZGF0YSBmcm9tL3RvIHRoZSBkZXZpY2UgZGF0YSByZWdpc3Rlci4KKyAqCVRyYW5zZmVyIGRhdGEgZnJvbS90byB0aGUgZGV2aWNlIGRhdGEgcmVnaXN0ZXIgYnkgUElPLiBEbyB0aGUgCisgKgl0cmFuc2ZlciB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuCiAgKgogICoJTE9DS0lORzoKICAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KICAqLwogCi1zdGF0aWMgdm9pZCBhdGFfZGF0YV94ZmVyKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKLQkJCSAgdW5zaWduZWQgaW50IGJ1ZmxlbiwgaW50IGRvX3dyaXRlKQordm9pZCBhdGFfcGlvX2RhdGFfeGZlcl9ub2lycShzdHJ1Y3QgYXRhX2RldmljZSAqYWRldiwgdW5zaWduZWQgY2hhciAqYnVmLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgYnVmbGVuLCBpbnQgd3JpdGVfZGF0YSkKIHsKLQkvKiBNYWtlIHRoZSBjcmFwIGhhcmR3YXJlIHBheSB0aGUgY29zdHMgbm90IHRoZSBnb29kIHN0dWZmICovCi0JaWYgKHVubGlrZWx5KGFwLT5mbGFncyAmIEFUQV9GTEFHX0lSUV9NQVNLKSkgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0JCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19NTUlPKQotCQkJYXRhX21taW9fZGF0YV94ZmVyKGFwLCBidWYsIGJ1ZmxlbiwgZG9fd3JpdGUpOwotCQllbHNlCi0JCQlhdGFfcGlvX2RhdGFfeGZlcihhcCwgYnVmLCBidWZsZW4sIGRvX3dyaXRlKTsKLQkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwotCX0gZWxzZSB7Ci0JCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19NTUlPKQotCQkJYXRhX21taW9fZGF0YV94ZmVyKGFwLCBidWYsIGJ1ZmxlbiwgZG9fd3JpdGUpOwotCQllbHNlCi0JCQlhdGFfcGlvX2RhdGFfeGZlcihhcCwgYnVmLCBidWZsZW4sIGRvX3dyaXRlKTsKLQl9CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJYXRhX3Bpb19kYXRhX3hmZXIoYWRldiwgYnVmLCBidWZsZW4sIHdyaXRlX2RhdGEpOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAorCiAvKioKICAqCWF0YV9waW9fc2VjdG9yIC0gVHJhbnNmZXIgQVRBX1NFQ1RfU0laRSAoNTEyIGJ5dGVzKSBvZiBkYXRhLgogICoJQHFjOiBDb21tYW5kIG9uIGdvaW5nCkBAIC0zNDM1LDcgKzM2NTMsMjQgQEAKIAlwYWdlID0gbnRoX3BhZ2UocGFnZSwgKG9mZnNldCA+PiBQQUdFX1NISUZUKSk7CiAJb2Zmc2V0ICU9IFBBR0VfU0laRTsKIAotCWJ1ZiA9IGttYXAocGFnZSkgKyBvZmZzZXQ7CisJRFBSSU5USygiZGF0YSAlc1xuIiwgcWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1dSSVRFID8gIndyaXRlIiA6ICJyZWFkIik7CisKKwlpZiAoUGFnZUhpZ2hNZW0ocGFnZSkpIHsKKwkJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCQkvKiBGSVhNRTogdXNlIGEgYm91bmNlIGJ1ZmZlciAqLworCQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJCWJ1ZiA9IGttYXBfYXRvbWljKHBhZ2UsIEtNX0lSUTApOworCisJCS8qIGRvIHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciAqLworCQlhcC0+b3BzLT5kYXRhX3hmZXIocWMtPmRldiwgYnVmICsgb2Zmc2V0LCBBVEFfU0VDVF9TSVpFLCBkb193cml0ZSk7CisKKwkJa3VubWFwX2F0b21pYyhidWYsIEtNX0lSUTApOworCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJfSBlbHNlIHsKKwkJYnVmID0gcGFnZV9hZGRyZXNzKHBhZ2UpOworCQlhcC0+b3BzLT5kYXRhX3hmZXIocWMtPmRldiwgYnVmICsgb2Zmc2V0LCBBVEFfU0VDVF9TSVpFLCBkb193cml0ZSk7CisJfQogCiAJcWMtPmN1cnNlY3QrKzsKIAlxYy0+Y3Vyc2dfb2ZzKys7CkBAIC0zNDQ0LDE0ICszNjc5LDY4IEBACiAJCXFjLT5jdXJzZysrOwogCQlxYy0+Y3Vyc2dfb2ZzID0gMDsKIAl9Cit9CiAKLQlEUFJJTlRLKCJkYXRhICVzXG4iLCBxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfV1JJVEUgPyAid3JpdGUiIDogInJlYWQiKTsKKy8qKgorICoJYXRhX3Bpb19zZWN0b3JzIC0gVHJhbnNmZXIgb25lIG9yIG1hbnkgNTEyLWJ5dGUgc2VjdG9ycy4KKyAqCUBxYzogQ29tbWFuZCBvbiBnb2luZworICoKKyAqCVRyYW5zZmVyIG9uZSBvciBtYW55IEFUQV9TRUNUX1NJWkUgb2YgZGF0YSBmcm9tL3RvIHRoZQorICoJQVRBIGRldmljZSBmb3IgdGhlIERSUSByZXF1ZXN0LgorICoKKyAqCUxPQ0tJTkc6CisgKglJbmhlcml0ZWQgZnJvbSBjYWxsZXIuCisgKi8KIAotCS8qIGRvIHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciAqLwotCWRvX3dyaXRlID0gKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSk7Ci0JYXRhX2RhdGFfeGZlcihhcCwgYnVmLCBBVEFfU0VDVF9TSVpFLCBkb193cml0ZSk7CitzdGF0aWMgdm9pZCBhdGFfcGlvX3NlY3RvcnMoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3sKKwlpZiAoaXNfbXVsdGlfdGFza2ZpbGUoJnFjLT50ZikpIHsKKwkJLyogUkVBRC9XUklURSBNVUxUSVBMRSAqLworCQl1bnNpZ25lZCBpbnQgbnNlY3Q7CiAKLQlrdW5tYXAocGFnZSk7CisJCVdBUk5fT04ocWMtPmRldi0+bXVsdGlfY291bnQgPT0gMCk7CisKKwkJbnNlY3QgPSBtaW4ocWMtPm5zZWN0IC0gcWMtPmN1cnNlY3QsIHFjLT5kZXYtPm11bHRpX2NvdW50KTsKKwkJd2hpbGUgKG5zZWN0LS0pCisJCQlhdGFfcGlvX3NlY3RvcihxYyk7CisJfSBlbHNlCisJCWF0YV9waW9fc2VjdG9yKHFjKTsKK30KKworLyoqCisgKglhdGFwaV9zZW5kX2NkYiAtIFdyaXRlIENEQiBieXRlcyB0byBoYXJkd2FyZQorICoJQGFwOiBQb3J0IHRvIHdoaWNoIEFUQVBJIGRldmljZSBpcyBhdHRhY2hlZC4KKyAqCUBxYzogVGFza2ZpbGUgY3VycmVudGx5IGFjdGl2ZQorICoKKyAqCVdoZW4gZGV2aWNlIGhhcyBpbmRpY2F0ZWQgaXRzIHJlYWRpbmVzcyB0byBhY2NlcHQKKyAqCWEgQ0RCLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gIFNlbmQgdGhlIENEQi4KKyAqCisgKglMT0NLSU5HOgorICoJY2FsbGVyLgorICovCisKK3N0YXRpYyB2b2lkIGF0YXBpX3NlbmRfY2RiKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJLyogc2VuZCBTQ1NJIGNkYiAqLworCURQUklOVEsoInNlbmQgY2RiXG4iKTsKKwlXQVJOX09OKHFjLT5kZXYtPmNkYl9sZW4gPCAxMik7CisKKwlhcC0+b3BzLT5kYXRhX3hmZXIocWMtPmRldiwgcWMtPmNkYiwgcWMtPmRldi0+Y2RiX2xlbiwgMSk7CisJYXRhX2FsdHN0YXR1cyhhcCk7IC8qIGZsdXNoICovCisKKwlzd2l0Y2ggKHFjLT50Zi5wcm90b2NvbCkgeworCWNhc2UgQVRBX1BST1RfQVRBUEk6CisJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVDsKKwkJYnJlYWs7CisJY2FzZSBBVEFfUFJPVF9BVEFQSV9OT0RBVEE6CisJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9MQVNUOworCQlicmVhazsKKwljYXNlIEFUQV9QUk9UX0FUQVBJX0RNQToKKwkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0xBU1Q7CisJCS8qIGluaXRpYXRlIGJtZG1hICovCisJCWFwLT5vcHMtPmJtZG1hX3N0YXJ0KHFjKTsKKwkJYnJlYWs7CisJfQogfQogCiAvKioKQEAgLTM0OTIsMTEgKzM3ODEsMTEgQEAKIAkJdW5zaWduZWQgaW50IGk7CiAKIAkJaWYgKHdvcmRzKSAvKiB3YXJuaW5nIGlmIGJ5dGVzID4gMSAqLwotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6ICV1IGJ5dGVzIHRyYWlsaW5nIGRhdGFcbiIsCi0JCQkgICAgICAgYXAtPmlkLCBieXRlcyk7CisJCQlhdGFfZGV2X3ByaW50ayhxYy0+ZGV2LCBLRVJOX1dBUk5JTkcsCisJCQkJICAgICAgICIldSBieXRlcyB0cmFpbGluZyBkYXRhXG4iLCBieXRlcyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IHdvcmRzOyBpKyspCi0JCQlhdGFfZGF0YV94ZmVyKGFwLCAodW5zaWduZWQgY2hhciopcGFkX2J1ZiwgMiwgZG9fd3JpdGUpOworCQkJYXAtPm9wcy0+ZGF0YV94ZmVyKHFjLT5kZXYsICh1bnNpZ25lZCBjaGFyKilwYWRfYnVmLCAyLCBkb193cml0ZSk7CiAKIAkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0xBU1Q7CiAJCXJldHVybjsKQEAgLTM1MTcsNyArMzgwNiwyNCBAQAogCS8qIGRvbid0IGNyb3NzIHBhZ2UgYm91bmRhcmllcyAqLwogCWNvdW50ID0gbWluKGNvdW50LCAodW5zaWduZWQgaW50KVBBR0VfU0laRSAtIG9mZnNldCk7CiAKLQlidWYgPSBrbWFwKHBhZ2UpICsgb2Zmc2V0OworCURQUklOVEsoImRhdGEgJXNcbiIsIHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSA/ICJ3cml0ZSIgOiAicmVhZCIpOworCisJaWYgKFBhZ2VIaWdoTWVtKHBhZ2UpKSB7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJLyogRklYTUU6IHVzZSBib3VuY2UgYnVmZmVyICovCisJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwkJYnVmID0ga21hcF9hdG9taWMocGFnZSwgS01fSVJRMCk7CisKKwkJLyogZG8gdGhlIGFjdHVhbCBkYXRhIHRyYW5zZmVyICovCisJCWFwLT5vcHMtPmRhdGFfeGZlcihxYy0+ZGV2LCAgYnVmICsgb2Zmc2V0LCBjb3VudCwgZG9fd3JpdGUpOworCisJCWt1bm1hcF9hdG9taWMoYnVmLCBLTV9JUlEwKTsKKwkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCX0gZWxzZSB7CisJCWJ1ZiA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsKKwkJYXAtPm9wcy0+ZGF0YV94ZmVyKHFjLT5kZXYsICBidWYgKyBvZmZzZXQsIGNvdW50LCBkb193cml0ZSk7CisJfQogCiAJYnl0ZXMgLT0gY291bnQ7CiAJcWMtPmN1cmJ5dGVzICs9IGNvdW50OwpAQCAtMzUyOCwxMyArMzgzNCw2IEBACiAJCXFjLT5jdXJzZ19vZnMgPSAwOwogCX0KIAotCURQUklOVEsoImRhdGEgJXNcbiIsIHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSA/ICJ3cml0ZSIgOiAicmVhZCIpOwotCi0JLyogZG8gdGhlIGFjdHVhbCBkYXRhIHRyYW5zZmVyICovCi0JYXRhX2RhdGFfeGZlcihhcCwgYnVmLCBjb3VudCwgZG9fd3JpdGUpOwotCi0Ja3VubWFwKHBhZ2UpOwotCiAJaWYgKGJ5dGVzKQogCQlnb3RvIG5leHRfc2c7CiB9CkBAIC0zNTU2LDEwICszODU1LDE2IEBACiAJdW5zaWduZWQgaW50IGlyZWFzb24sIGJjX2xvLCBiY19oaSwgYnl0ZXM7CiAJaW50IGlfd3JpdGUsIGRvX3dyaXRlID0gKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSkgPyAxIDogMDsKIAotCWFwLT5vcHMtPnRmX3JlYWQoYXAsICZxYy0+dGYpOwotCWlyZWFzb24gPSBxYy0+dGYubnNlY3Q7Ci0JYmNfbG8gPSBxYy0+dGYubGJhbTsKLQliY19oaSA9IHFjLT50Zi5sYmFoOworCS8qIEFidXNlIHFjLT5yZXN1bHRfdGYgZm9yIHRlbXAgc3RvcmFnZSBvZiBpbnRlcm1lZGlhdGUgVEYKKwkgKiBoZXJlIHRvIHNhdmUgc29tZSBrZXJuZWwgc3RhY2sgdXNhZ2UuCisJICogRm9yIG5vcm1hbCBjb21wbGV0aW9uLCBxYy0+cmVzdWx0X3RmIGlzIG5vdCByZWxldmFudC4gRm9yCisJICogZXJyb3IsIHFjLT5yZXN1bHRfdGYgaXMgbGF0ZXIgb3ZlcndyaXR0ZW4gYnkgYXRhX3FjX2NvbXBsZXRlKCkuCisJICogU28sIHRoZSBjb3JyZWN0bmVzcyBvZiBxYy0+cmVzdWx0X3RmIGlzIG5vdCBhZmZlY3RlZC4KKwkgKi8KKwlhcC0+b3BzLT50Zl9yZWFkKGFwLCAmcWMtPnJlc3VsdF90Zik7CisJaXJlYXNvbiA9IHFjLT5yZXN1bHRfdGYubnNlY3Q7CisJYmNfbG8gPSBxYy0+cmVzdWx0X3RmLmxiYW07CisJYmNfaGkgPSBxYy0+cmVzdWx0X3RmLmxiYWg7CiAJYnl0ZXMgPSAoYmNfaGkgPDwgOCkgfCBiY19sbzsKIAogCS8qIHNoYWxsIGJlIGNsZWFyZWQgdG8gemVybywgaW5kaWNhdGluZyB4ZmVyIG9mIGRhdGEgKi8KQEAgLTM1NzEsMzEwICszODc2LDM2OCBAQAogCWlmIChkb193cml0ZSAhPSBpX3dyaXRlKQogCQlnb3RvIGVycl9vdXQ7CiAKKwlWUFJJTlRLKCJhdGEldTogeGZlcmluZyAlZCBieXRlc1xuIiwgYXAtPmlkLCBieXRlcyk7CisKIAlfX2F0YXBpX3Bpb19ieXRlcyhxYywgYnl0ZXMpOwogCiAJcmV0dXJuOwogCiBlcnJfb3V0OgotCXByaW50ayhLRVJOX0lORk8gImF0YSV1OiBkZXYgJXU6IEFUQVBJIGNoZWNrIGZhaWxlZFxuIiwKLQkgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8pOworCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLCAiQVRBUEkgY2hlY2sgZmFpbGVkXG4iKTsKIAlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKIAlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOwogfQogCiAvKioKLSAqCWF0YV9waW9fYmxvY2sgLSBzdGFydCBQSU8gb24gYSBibG9jaworICoJYXRhX2hzbV9va19pbl93cSAtIENoZWNrIGlmIHRoZSBxYyBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgd29ya3F1ZXVlLgogICoJQGFwOiB0aGUgdGFyZ2V0IGF0YV9wb3J0CisgKglAcWM6IHFjIG9uIGdvaW5nCiAgKgotICoJTE9DS0lORzoKLSAqCU5vbmUuICAoZXhlY3V0aW5nIGluIGtlcm5lbCB0aHJlYWQgY29udGV4dCkKKyAqCVJFVFVSTlM6CisgKgkxIGlmIG9rIGluIHdvcmtxdWV1ZSwgMCBvdGhlcndpc2UuCiAgKi8KIAotc3RhdGljIHZvaWQgYXRhX3Bpb19ibG9jayhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQorc3RhdGljIGlubGluZSBpbnQgYXRhX2hzbV9va19pbl93cShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQogewotCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7CisJaWYgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKQorCQlyZXR1cm4gMTsKKworCWlmIChhcC0+aHNtX3Rhc2tfc3RhdGUgPT0gSFNNX1NUX0ZJUlNUKSB7CisJCWlmIChxYy0+dGYucHJvdG9jb2wgPT0gQVRBX1BST1RfUElPICYmCisJCSAgICAocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1dSSVRFKSkKKwkJICAgIHJldHVybiAxOworCisJCWlmIChpc19hdGFwaV90YXNrZmlsZSgmcWMtPnRmKSAmJgorCQkgICAgIShxYy0+ZGV2LT5mbGFncyAmIEFUQV9ERkxBR19DREJfSU5UUikpCisJCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKglhdGFfaHNtX3FjX2NvbXBsZXRlIC0gZmluaXNoIGEgcWMgcnVubmluZyBvbiBzdGFuZGFyZCBIU00KKyAqCUBxYzogQ29tbWFuZCB0byBjb21wbGV0ZQorICoJQGluX3dxOiAxIGlmIGNhbGxlZCBmcm9tIHdvcmtxdWV1ZSwgMCBvdGhlcndpc2UKKyAqCisgKglGaW5pc2ggQHFjIHdoaWNoIGlzIHJ1bm5pbmcgb24gc3RhbmRhcmQgSFNNLgorICoKKyAqCUxPQ0tJTkc6CisgKglJZiBAaW5fd3EgaXMgemVybywgc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykuCisgKglPdGhlcndpc2UsIG5vbmUgb24gZW50cnkgYW5kIGdyYWJzIGhvc3QgbG9jay4KKyAqLworc3RhdGljIHZvaWQgYXRhX2hzbV9xY19jb21wbGV0ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLCBpbnQgaW5fd3EpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKGFwLT5vcHMtPmVycm9yX2hhbmRsZXIpIHsKKwkJaWYgKGluX3dxKSB7CisJCQlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCisJCQkvKiBFSCBtaWdodCBoYXZlIGtpY2tlZCBpbiB3aGlsZSBob3N0X3NldCBsb2NrCisJCQkgKiBpcyByZWxlYXNlZC4KKwkJCSAqLworCQkJcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIHFjLT50YWcpOworCQkJaWYgKHFjKSB7CisJCQkJaWYgKGxpa2VseSghKHFjLT5lcnJfbWFzayAmIEFDX0VSUl9IU00pKSkgeworCQkJCQlhdGFfaXJxX29uKGFwKTsKKwkJCQkJYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwkJCQl9IGVsc2UKKwkJCQkJYXRhX3BvcnRfZnJlZXplKGFwKTsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCQl9IGVsc2UgeworCQkJaWYgKGxpa2VseSghKHFjLT5lcnJfbWFzayAmIEFDX0VSUl9IU00pKSkKKwkJCQlhdGFfcWNfY29tcGxldGUocWMpOworCQkJZWxzZQorCQkJCWF0YV9wb3J0X2ZyZWV6ZShhcCk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoaW5fd3EpIHsKKwkJCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisJCQlhdGFfaXJxX29uKGFwKTsKKwkJCWF0YV9xY19jb21wbGV0ZShxYyk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CisJCX0gZWxzZQorCQkJYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwl9CisKKwlhdGFfYWx0c3RhdHVzKGFwKTsgLyogZmx1c2ggKi8KK30KKworLyoqCisgKglhdGFfaHNtX21vdmUgLSBtb3ZlIHRoZSBIU00gdG8gdGhlIG5leHQgc3RhdGUuCisgKglAYXA6IHRoZSB0YXJnZXQgYXRhX3BvcnQKKyAqCUBxYzogcWMgb24gZ29pbmcKKyAqCUBzdGF0dXM6IGN1cnJlbnQgZGV2aWNlIHN0YXR1cworICoJQGluX3dxOiAxIGlmIGNhbGxlZCBmcm9tIHdvcmtxdWV1ZSwgMCBvdGhlcndpc2UKKyAqCisgKglSRVRVUk5TOgorICoJMSB3aGVuIHBvbGwgbmV4dCBzdGF0dXMgbmVlZGVkLCAwIG90aGVyd2lzZS4KKyAqLworaW50IGF0YV9oc21fbW92ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLAorCQkgdTggc3RhdHVzLCBpbnQgaW5fd3EpCit7CisJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisJaW50IHBvbGxfbmV4dDsKKworCVdBUk5fT04oKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfQUNUSVZFKSA9PSAwKTsKKworCS8qIE1ha2Ugc3VyZSBhdGFfcWNfaXNzdWVfcHJvdCgpIGRvZXMgbm90IHRocm93IHRoaW5ncworCSAqIGxpa2UgRE1BIHBvbGxpbmcgaW50byB0aGUgd29ya3F1ZXVlLiBOb3RpY2UgdGhhdAorCSAqIGluX3dxIGlzIG5vdCBlcXVpdmFsZW50IHRvIChxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykuCisJICovCisJV0FSTl9PTihpbl93cSAhPSBhdGFfaHNtX29rX2luX3dxKGFwLCBxYykpOworCitmc21fc3RhcnQ6CisJRFBSSU5USygiYXRhJXU6IHByb3RvY29sICVkIHRhc2tfc3RhdGUgJWQgKGRldl9zdGF0IDB4JVgpXG4iLAorCQlhcC0+aWQsIHFjLT50Zi5wcm90b2NvbCwgYXAtPmhzbV90YXNrX3N0YXRlLCBzdGF0dXMpOworCisJc3dpdGNoIChhcC0+aHNtX3Rhc2tfc3RhdGUpIHsKKwljYXNlIEhTTV9TVF9GSVJTVDoKKwkJLyogU2VuZCBmaXJzdCBkYXRhIGJsb2NrIG9yIFBBQ0tFVCBDREIgKi8KKworCQkvKiBJZiBwb2xsaW5nLCB3ZSB3aWxsIHN0YXkgaW4gdGhlIHdvcmsgcXVldWUgYWZ0ZXIKKwkJICogc2VuZGluZyB0aGUgZGF0YS4gT3RoZXJ3aXNlLCBpbnRlcnJ1cHQgaGFuZGxlcgorCQkgKiB0YWtlcyBvdmVyIGFmdGVyIHNlbmRpbmcgdGhlIGRhdGEuCisJCSAqLworCQlwb2xsX25leHQgPSAocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpOworCisJCS8qIGNoZWNrIGRldmljZSBzdGF0dXMgKi8KKwkJaWYgKHVubGlrZWx5KChzdGF0dXMgJiBBVEFfRFJRKSA9PSAwKSkgeworCQkJLyogaGFuZGxlIEJTWT0wLCBEUlE9MCBhcyBlcnJvciAqLworCQkJaWYgKGxpa2VseShzdGF0dXMgJiAoQVRBX0VSUiB8IEFUQV9ERikpKQorCQkJCS8qIGRldmljZSBzdG9wcyBIU00gZm9yIGFib3J0L2Vycm9yICovCisJCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9ERVY7CisJCQllbHNlCisJCQkJLyogSFNNIHZpb2xhdGlvbi4gTGV0IEVIIGhhbmRsZSB0aGlzICovCisJCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IU007CisKKwkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9FUlI7CisJCQlnb3RvIGZzbV9zdGFydDsKKwkJfQorCisJCS8qIERldmljZSBzaG91bGQgbm90IGFzayBmb3IgZGF0YSB0cmFuc2ZlciAoRFJRPTEpCisJCSAqIHdoZW4gaXQgZmluZHMgc29tZXRoaW5nIHdyb25nLgorCQkgKiBXZSBpZ25vcmUgRFJRIGhlcmUgYW5kIHN0b3AgdGhlIEhTTSBieQorCQkgKiBjaGFuZ2luZyBoc21fdGFza19zdGF0ZSB0byBIU01fU1RfRVJSIGFuZAorCQkgKiBsZXQgdGhlIEVIIGFib3J0IHRoZSBjb21tYW5kIG9yIHJlc2V0IHRoZSBkZXZpY2UuCisJCSAqLworCQlpZiAodW5saWtlbHkoc3RhdHVzICYgKEFUQV9FUlIgfCBBVEFfREYpKSkgeworCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJWQ6IERSUT0xIHdpdGggZGV2aWNlIGVycm9yLCBkZXZfc3RhdCAweCVYXG4iLAorCQkJICAgICAgIGFwLT5pZCwgc3RhdHVzKTsKKwkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSFNNOworCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKKwkJCWdvdG8gZnNtX3N0YXJ0OworCQl9CisKKwkJLyogU2VuZCB0aGUgQ0RCIChhdGFwaSkgb3IgdGhlIGZpcnN0IGRhdGEgYmxvY2sgKGF0YSBwaW8gb3V0KS4KKwkJICogRHVyaW5nIHRoZSBzdGF0ZSB0cmFuc2l0aW9uLCBpbnRlcnJ1cHQgaGFuZGxlciBzaG91bGRuJ3QKKwkJICogYmUgaW52b2tlZCBiZWZvcmUgdGhlIGRhdGEgdHJhbnNmZXIgaXMgY29tcGxldGUgYW5kCisJCSAqIGhzbV90YXNrX3N0YXRlIGlzIGNoYW5nZWQuIEhlbmNlLCB0aGUgZm9sbG93aW5nIGxvY2tpbmcuCisJCSAqLworCQlpZiAoaW5fd3EpCisJCQlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCisJCWlmIChxYy0+dGYucHJvdG9jb2wgPT0gQVRBX1BST1RfUElPKSB7CisJCQkvKiBQSU8gZGF0YSBvdXQgcHJvdG9jb2wuCisJCQkgKiBzZW5kIGZpcnN0IGRhdGEgYmxvY2suCisJCQkgKi8KKworCQkJLyogYXRhX3Bpb19zZWN0b3JzKCkgbWlnaHQgY2hhbmdlIHRoZSBzdGF0ZQorCQkJICogdG8gSFNNX1NUX0xBU1QuIHNvLCB0aGUgc3RhdGUgaXMgY2hhbmdlZCBoZXJlCisJCQkgKiBiZWZvcmUgYXRhX3Bpb19zZWN0b3JzKCkuCisJCQkgKi8KKwkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVDsKKwkJCWF0YV9waW9fc2VjdG9ycyhxYyk7CisJCQlhdGFfYWx0c3RhdHVzKGFwKTsgLyogZmx1c2ggKi8KKwkJfSBlbHNlCisJCQkvKiBzZW5kIENEQiAqLworCQkJYXRhcGlfc2VuZF9jZGIoYXAsIHFjKTsKKworCQlpZiAoaW5fd3EpCisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CisKKwkJLyogaWYgcG9sbGluZywgYXRhX3Bpb190YXNrKCkgaGFuZGxlcyB0aGUgcmVzdC4KKwkJICogb3RoZXJ3aXNlLCBpbnRlcnJ1cHQgaGFuZGxlciB0YWtlcyBvdmVyIGZyb20gaGVyZS4KKwkJICovCisJCWJyZWFrOworCisJY2FzZSBIU01fU1Q6CisJCS8qIGNvbXBsZXRlIGNvbW1hbmQgb3IgcmVhZC93cml0ZSB0aGUgZGF0YSByZWdpc3RlciAqLworCQlpZiAocWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0FUQVBJKSB7CisJCQkvKiBBVEFQSSBQSU8gcHJvdG9jb2wgKi8KKwkJCWlmICgoc3RhdHVzICYgQVRBX0RSUSkgPT0gMCkgeworCQkJCS8qIE5vIG1vcmUgZGF0YSB0byB0cmFuc2ZlciBvciBkZXZpY2UgZXJyb3IuCisJCQkJICogRGV2aWNlIGVycm9yIHdpbGwgYmUgdGFnZ2VkIGluIEhTTV9TVF9MQVNULgorCQkJCSAqLworCQkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9MQVNUOworCQkJCWdvdG8gZnNtX3N0YXJ0OworCQkJfQorCisJCQkvKiBEZXZpY2Ugc2hvdWxkIG5vdCBhc2sgZm9yIGRhdGEgdHJhbnNmZXIgKERSUT0xKQorCQkJICogd2hlbiBpdCBmaW5kcyBzb21ldGhpbmcgd3JvbmcuCisJCQkgKiBXZSBpZ25vcmUgRFJRIGhlcmUgYW5kIHN0b3AgdGhlIEhTTSBieQorCQkJICogY2hhbmdpbmcgaHNtX3Rhc2tfc3RhdGUgdG8gSFNNX1NUX0VSUiBhbmQKKwkJCSAqIGxldCB0aGUgRUggYWJvcnQgdGhlIGNvbW1hbmQgb3IgcmVzZXQgdGhlIGRldmljZS4KKwkJCSAqLworCQkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIChBVEFfRVJSIHwgQVRBX0RGKSkpIHsKKwkJCQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGElZDogRFJRPTEgd2l0aCBkZXZpY2UgZXJyb3IsIGRldl9zdGF0IDB4JVhcbiIsCisJCQkJICAgICAgIGFwLT5pZCwgc3RhdHVzKTsKKwkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKKwkJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOworCQkJCWdvdG8gZnNtX3N0YXJ0OworCQkJfQorCisJCQlhdGFwaV9waW9fYnl0ZXMocWMpOworCisJCQlpZiAodW5saWtlbHkoYXAtPmhzbV90YXNrX3N0YXRlID09IEhTTV9TVF9FUlIpKQorCQkJCS8qIGJhZCBpcmVhc29uIHJlcG9ydGVkIGJ5IGRldmljZSAqLworCQkJCWdvdG8gZnNtX3N0YXJ0OworCisJCX0gZWxzZSB7CisJCQkvKiBBVEEgUElPIHByb3RvY29sICovCisJCQlpZiAodW5saWtlbHkoKHN0YXR1cyAmIEFUQV9EUlEpID09IDApKSB7CisJCQkJLyogaGFuZGxlIEJTWT0wLCBEUlE9MCBhcyBlcnJvciAqLworCQkJCWlmIChsaWtlbHkoc3RhdHVzICYgKEFUQV9FUlIgfCBBVEFfREYpKSkKKwkJCQkJLyogZGV2aWNlIHN0b3BzIEhTTSBmb3IgYWJvcnQvZXJyb3IgKi8KKwkJCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9ERVY7CisJCQkJZWxzZQorCQkJCQkvKiBIU00gdmlvbGF0aW9uLiBMZXQgRUggaGFuZGxlIHRoaXMgKi8KKwkJCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IU007CisKKwkJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOworCQkJCWdvdG8gZnNtX3N0YXJ0OworCQkJfQorCisJCQkvKiBGb3IgUElPIHJlYWRzLCBzb21lIGRldmljZXMgbWF5IGFzayBmb3IKKwkJCSAqIGRhdGEgdHJhbnNmZXIgKERSUT0xKSBhbG9uZSB3aXRoIEVSUj0xLgorCQkJICogV2UgcmVzcGVjdCBEUlEgaGVyZSBhbmQgdHJhbnNmZXIgb25lCisJCQkgKiBibG9jayBvZiBqdW5rIGRhdGEgYmVmb3JlIGNoYW5naW5nIHRoZQorCQkJICogaHNtX3Rhc2tfc3RhdGUgdG8gSFNNX1NUX0VSUi4KKwkJCSAqCisJCQkgKiBGb3IgUElPIHdyaXRlcywgRVJSPTEgRFJRPTEgZG9lc24ndCBtYWtlCisJCQkgKiBzZW5zZSBzaW5jZSB0aGUgZGF0YSBibG9jayBoYXMgYmVlbgorCQkJICogdHJhbnNmZXJyZWQgdG8gdGhlIGRldmljZS4KKwkJCSAqLworCQkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIChBVEFfRVJSIHwgQVRBX0RGKSkpIHsKKwkJCQkvKiBkYXRhIG1pZ2h0IGJlIGNvcnJwdXRlZCAqLworCQkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfREVWOworCisJCQkJaWYgKCEocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1dSSVRFKSkgeworCQkJCQlhdGFfcGlvX3NlY3RvcnMocWMpOworCQkJCQlhdGFfYWx0c3RhdHVzKGFwKTsKKwkJCQkJc3RhdHVzID0gYXRhX3dhaXRfaWRsZShhcCk7CisJCQkJfQorCisJCQkJaWYgKHN0YXR1cyAmIChBVEFfQlVTWSB8IEFUQV9EUlEpKQorCQkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKKworCQkJCS8qIGF0YV9waW9fc2VjdG9ycygpIG1pZ2h0IGNoYW5nZSB0aGUKKwkJCQkgKiBzdGF0ZSB0byBIU01fU1RfTEFTVC4gc28sIHRoZSBzdGF0ZQorCQkJCSAqIGlzIGNoYW5nZWQgYWZ0ZXIgYXRhX3Bpb19zZWN0b3JzKCkuCisJCQkJICovCisJCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKKwkJCQlnb3RvIGZzbV9zdGFydDsKKwkJCX0KKworCQkJYXRhX3Bpb19zZWN0b3JzKHFjKTsKKworCQkJaWYgKGFwLT5oc21fdGFza19zdGF0ZSA9PSBIU01fU1RfTEFTVCAmJgorCQkJICAgICghKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSkpKSB7CisJCQkJLyogYWxsIGRhdGEgcmVhZCAqLworCQkJCWF0YV9hbHRzdGF0dXMoYXApOworCQkJCXN0YXR1cyA9IGF0YV93YWl0X2lkbGUoYXApOworCQkJCWdvdG8gZnNtX3N0YXJ0OworCQkJfQorCQl9CisKKwkJYXRhX2FsdHN0YXR1cyhhcCk7IC8qIGZsdXNoICovCisJCXBvbGxfbmV4dCA9IDE7CisJCWJyZWFrOworCisJY2FzZSBIU01fU1RfTEFTVDoKKwkJaWYgKHVubGlrZWx5KCFhdGFfb2soc3RhdHVzKSkpIHsKKwkJCXFjLT5lcnJfbWFzayB8PSBfX2FjX2Vycl9tYXNrKHN0YXR1cyk7CisJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOworCQkJZ290byBmc21fc3RhcnQ7CisJCX0KKworCQkvKiBubyBtb3JlIGRhdGEgdG8gdHJhbnNmZXIgKi8KKwkJRFBSSU5USygiYXRhJXU6IGRldiAldSBjb21tYW5kIGNvbXBsZXRlLCBkcnZfc3RhdCAweCV4XG4iLAorCQkJYXAtPmlkLCBxYy0+ZGV2LT5kZXZubywgc3RhdHVzKTsKKworCQlXQVJOX09OKHFjLT5lcnJfbWFzayk7CisKKwkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0lETEU7CisKKwkJLyogY29tcGxldGUgdGFza2ZpbGUgdHJhbnNhY3Rpb24gKi8KKwkJYXRhX2hzbV9xY19jb21wbGV0ZShxYywgaW5fd3EpOworCisJCXBvbGxfbmV4dCA9IDA7CisJCWJyZWFrOworCisJY2FzZSBIU01fU1RfRVJSOgorCQkvKiBtYWtlIHN1cmUgcWMtPmVycl9tYXNrIGlzIGF2YWlsYWJsZSB0bworCQkgKiBrbm93IHdoYXQncyB3cm9uZyBhbmQgcmVjb3ZlcgorCQkgKi8KKwkJV0FSTl9PTihxYy0+ZXJyX21hc2sgPT0gMCk7CisKKwkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0lETEU7CisKKwkJLyogY29tcGxldGUgdGFza2ZpbGUgdHJhbnNhY3Rpb24gKi8KKwkJYXRhX2hzbV9xY19jb21wbGV0ZShxYywgaW5fd3EpOworCisJCXBvbGxfbmV4dCA9IDA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXBvbGxfbmV4dCA9IDA7CisJCUJVRygpOworCX0KKworCXJldHVybiBwb2xsX25leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGF0YV9waW9fdGFzayh2b2lkICpfZGF0YSkKK3sKKwlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjID0gX2RhdGE7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKIAl1OCBzdGF0dXM7CisJaW50IHBvbGxfbmV4dDsKKworZnNtX3N0YXJ0OgorCVdBUk5fT04oYXAtPmhzbV90YXNrX3N0YXRlID09IEhTTV9TVF9JRExFKTsKIAogCS8qCiAJICogVGhpcyBpcyBwdXJlbHkgaGV1cmlzdGljLiAgVGhpcyBpcyBhIGZhc3QgcGF0aC4KIAkgKiBTb21ldGltZXMgd2hlbiB3ZSBlbnRlciwgQlNZIHdpbGwgYmUgY2xlYXJlZCBpbgogCSAqIGEgY2hrLXN0YXR1cyBvciB0d28uICBJZiBub3QsIHRoZSBkcml2ZSBpcyBwcm9iYWJseSBzZWVraW5nCiAJICogb3Igc29tZXRoaW5nLiAgU25vb3plIGZvciBhIGNvdXBsZSBtc2VjcywgdGhlbgotCSAqIGNoay1zdGF0dXMgYWdhaW4uICBJZiBzdGlsbCBidXN5LCBmYWxsIGJhY2sgdG8KLQkgKiBIU01fU1RfUE9MTCBzdGF0ZS4KKwkgKiBjaGstc3RhdHVzIGFnYWluLiAgSWYgc3RpbGwgYnVzeSwgcXVldWUgZGVsYXllZCB3b3JrLgogCSAqLwogCXN0YXR1cyA9IGF0YV9idXN5X3dhaXQoYXAsIEFUQV9CVVNZLCA1KTsKIAlpZiAoc3RhdHVzICYgQVRBX0JVU1kpIHsKIAkJbXNsZWVwKDIpOwogCQlzdGF0dXMgPSBhdGFfYnVzeV93YWl0KGFwLCBBVEFfQlVTWSwgMTApOwogCQlpZiAoc3RhdHVzICYgQVRBX0JVU1kpIHsKLQkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9QT0xMOwotCQkJYXAtPnBpb190YXNrX3RpbWVvdXQgPSBqaWZmaWVzICsgQVRBX1RNT1VUX1BJTzsKKwkJCWF0YV9wb3J0X3F1ZXVlX3Rhc2soYXAsIGF0YV9waW9fdGFzaywgcWMsIEFUQV9TSE9SVF9QQVVTRSk7CiAJCQlyZXR1cm47CiAJCX0KIAl9CiAKLQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCVdBUk5fT04ocWMgPT0gTlVMTCk7CisJLyogbW92ZSB0aGUgSFNNICovCisJcG9sbF9uZXh0ID0gYXRhX2hzbV9tb3ZlKGFwLCBxYywgc3RhdHVzLCAxKTsKIAotCS8qIGNoZWNrIGVycm9yICovCi0JaWYgKHN0YXR1cyAmIChBVEFfRVJSIHwgQVRBX0RGKSkgewotCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0RFVjsKLQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKLQkJcmV0dXJuOwotCX0KLQotCS8qIHRyYW5zZmVyIGRhdGEgaWYgYW55ICovCi0JaWYgKGlzX2F0YXBpX3Rhc2tmaWxlKCZxYy0+dGYpKSB7Ci0JCS8qIERSUT0wIG1lYW5zIG5vIG1vcmUgZGF0YSB0byB0cmFuc2ZlciAqLwotCQlpZiAoKHN0YXR1cyAmIEFUQV9EUlEpID09IDApIHsKLQkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9MQVNUOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJYXRhcGlfcGlvX2J5dGVzKHFjKTsKLQl9IGVsc2UgewotCQkvKiBoYW5kbGUgQlNZPTAsIERSUT0wIGFzIGVycm9yICovCi0JCWlmICgoc3RhdHVzICYgQVRBX0RSUSkgPT0gMCkgewotCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IU007Ci0JCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJYXRhX3Bpb19zZWN0b3IocWMpOwotCX0KLQotCWF0YV9hbHRzdGF0dXMoYXApOyAvKiBmbHVzaCAqLwotfQotCi1zdGF0aWMgdm9pZCBhdGFfcGlvX2Vycm9yKHN0cnVjdCBhdGFfcG9ydCAqYXApCi17Ci0Jc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKLQotCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JV0FSTl9PTihxYyA9PSBOVUxMKTsKLQotCWlmIChxYy0+dGYuY29tbWFuZCAhPSBBVEFfQ01EX1BBQ0tFVCkKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6IFBJTyBlcnJvclxuIiwgYXAtPmlkKTsKLQotCS8qIG1ha2Ugc3VyZSBxYy0+ZXJyX21hc2sgaXMgYXZhaWxhYmxlIHRvCi0JICoga25vdyB3aGF0J3Mgd3JvbmcgYW5kIHJlY292ZXIKKwkvKiBhbm90aGVyIGNvbW1hbmQgb3IgaW50ZXJydXB0IGhhbmRsZXIKKwkgKiBtYXkgYmUgcnVubmluZyBhdCB0aGlzIHBvaW50LgogCSAqLwotCVdBUk5fT04ocWMtPmVycl9tYXNrID09IDApOwotCi0JYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0lETEU7Ci0KLQlhdGFfcG9sbF9xY19jb21wbGV0ZShxYyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGF0YV9waW9fdGFzayh2b2lkICpfZGF0YSkKLXsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gX2RhdGE7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0OwotCWludCBxY19jb21wbGV0ZWQ7Ci0KLWZzbV9zdGFydDoKLQl0aW1lb3V0ID0gMDsKLQlxY19jb21wbGV0ZWQgPSAwOwotCi0Jc3dpdGNoIChhcC0+aHNtX3Rhc2tfc3RhdGUpIHsKLQljYXNlIEhTTV9TVF9JRExFOgotCQlyZXR1cm47Ci0KLQljYXNlIEhTTV9TVDoKLQkJYXRhX3Bpb19ibG9jayhhcCk7Ci0JCWJyZWFrOwotCi0JY2FzZSBIU01fU1RfTEFTVDoKLQkJcWNfY29tcGxldGVkID0gYXRhX3Bpb19jb21wbGV0ZShhcCk7Ci0JCWJyZWFrOwotCi0JY2FzZSBIU01fU1RfUE9MTDoKLQljYXNlIEhTTV9TVF9MQVNUX1BPTEw6Ci0JCXRpbWVvdXQgPSBhdGFfcGlvX3BvbGwoYXApOwotCQlicmVhazsKLQotCWNhc2UgSFNNX1NUX1RNT1VUOgotCWNhc2UgSFNNX1NUX0VSUjoKLQkJYXRhX3Bpb19lcnJvcihhcCk7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZiAodGltZW91dCkKLQkJYXRhX3BvcnRfcXVldWVfdGFzayhhcCwgYXRhX3Bpb190YXNrLCBhcCwgdGltZW91dCk7Ci0JZWxzZSBpZiAoIXFjX2NvbXBsZXRlZCkKKwlpZiAocG9sbF9uZXh0KQogCQlnb3RvIGZzbV9zdGFydDsKIH0KIAogLyoqCi0gKglhdGFwaV9wYWNrZXRfdGFzayAtIFdyaXRlIENEQiBieXRlcyB0byBoYXJkd2FyZQotICoJQF9kYXRhOiBQb3J0IHRvIHdoaWNoIEFUQVBJIGRldmljZSBpcyBhdHRhY2hlZC4KLSAqCi0gKglXaGVuIGRldmljZSBoYXMgaW5kaWNhdGVkIGl0cyByZWFkaW5lc3MgdG8gYWNjZXB0Ci0gKglhIENEQiwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuICBTZW5kIHRoZSBDREIuCi0gKglJZiBETUEgaXMgdG8gYmUgcGVyZm9ybWVkLCBleGl0IGltbWVkaWF0ZWx5LgotICoJT3RoZXJ3aXNlLCB3ZSBhcmUgaW4gcG9sbGluZyBtb2RlLCBzbyBwb2xsCi0gKglzdGF0dXMgdW5kZXIgb3BlcmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgotICoKLSAqCUxPQ0tJTkc6Ci0gKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkKLSAqLwotCi1zdGF0aWMgdm9pZCBhdGFwaV9wYWNrZXRfdGFzayh2b2lkICpfZGF0YSkKLXsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gX2RhdGE7Ci0Jc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKLQl1OCBzdGF0dXM7Ci0KLQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCVdBUk5fT04ocWMgPT0gTlVMTCk7Ci0JV0FSTl9PTighKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfQUNUSVZFKSk7Ci0KLQkvKiBzbGVlcC13YWl0IGZvciBCU1kgdG8gY2xlYXIgKi8KLQlEUFJJTlRLKCJidXN5IHdhaXRcbiIpOwotCWlmIChhdGFfYnVzeV9zbGVlcChhcCwgQVRBX1RNT1VUX0NEQl9RVUlDSywgQVRBX1RNT1VUX0NEQikpIHsKLQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9USU1FT1VUOwotCQlnb3RvIGVycl9vdXQ7Ci0JfQotCi0JLyogbWFrZSBzdXJlIERSUSBpcyBzZXQgKi8KLQlzdGF0dXMgPSBhdGFfY2hrX3N0YXR1cyhhcCk7Ci0JaWYgKChzdGF0dXMgJiAoQVRBX0JVU1kgfCBBVEFfRFJRKSkgIT0gQVRBX0RSUSkgewotCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKLQkJZ290byBlcnJfb3V0OwotCX0KLQotCS8qIHNlbmQgU0NTSSBjZGIgKi8KLQlEUFJJTlRLKCJzZW5kIGNkYlxuIik7Ci0JV0FSTl9PTihxYy0+ZGV2LT5jZGJfbGVuIDwgMTIpOwotCi0JaWYgKHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9BVEFQSV9ETUEgfHwKLQkgICAgcWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0FUQVBJX05PREFUQSkgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0JCS8qIE9uY2Ugd2UncmUgZG9uZSBpc3N1aW5nIGNvbW1hbmQgYW5kIGtpY2tpbmcgYm1kbWEsCi0JCSAqIGlycSBoYW5kbGVyIHRha2VzIG92ZXIuICBUbyBub3QgbG9zZSBpcnEsIHdlIG5lZWQKLQkJICogdG8gY2xlYXIgTk9JTlRSIGZsYWcgYmVmb3JlIHNlbmRpbmcgY2RiLCBidXQKLQkJICogaW50ZXJydXB0IGhhbmRsZXIgc2hvdWxkbid0IGJlIGludm9rZWQgYmVmb3JlIHdlJ3JlCi0JCSAqIGZpbmlzaGVkLiAgSGVuY2UsIHRoZSBmb2xsb3dpbmcgbG9ja2luZy4KLQkJICovCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKLQkJYXAtPmZsYWdzICY9IH5BVEFfRkxBR19OT0lOVFI7Ci0JCWF0YV9kYXRhX3hmZXIoYXAsIHFjLT5jZGIsIHFjLT5kZXYtPmNkYl9sZW4sIDEpOwotCQlhdGFfYWx0c3RhdHVzKGFwKTsgLyogZmx1c2ggKi8KLQotCQlpZiAocWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0FUQVBJX0RNQSkKLQkJCWFwLT5vcHMtPmJtZG1hX3N0YXJ0KHFjKTsJLyogaW5pdGlhdGUgYm1kbWEgKi8KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7Ci0JfSBlbHNlIHsKLQkJYXRhX2RhdGFfeGZlcihhcCwgcWMtPmNkYiwgcWMtPmRldi0+Y2RiX2xlbiwgMSk7Ci0JCWF0YV9hbHRzdGF0dXMoYXApOyAvKiBmbHVzaCAqLwotCi0JCS8qIFBJTyBjb21tYW5kcyBhcmUgaGFuZGxlZCBieSBwb2xsaW5nICovCi0JCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVDsKLQkJYXRhX3BvcnRfcXVldWVfdGFzayhhcCwgYXRhX3Bpb190YXNrLCBhcCwgMCk7Ci0JfQotCi0JcmV0dXJuOwotCi1lcnJfb3V0OgotCWF0YV9wb2xsX3FjX2NvbXBsZXRlKHFjKTsKLX0KLQotLyoqCi0gKglhdGFfcWNfdGltZW91dCAtIEhhbmRsZSB0aW1lb3V0IG9mIHF1ZXVlZCBjb21tYW5kCi0gKglAcWM6IENvbW1hbmQgdGhhdCB0aW1lZCBvdXQKLSAqCi0gKglTb21lIHBhcnQgb2YgdGhlIGtlcm5lbCAoY3VycmVudGx5LCBvbmx5IHRoZSBTQ1NJIGxheWVyKQotICoJaGFzIG5vdGljZWQgdGhhdCB0aGUgYWN0aXZlIGNvbW1hbmQgb24gcG9ydCBAYXAgaGFzIG5vdAotICoJY29tcGxldGVkIGFmdGVyIGEgc3BlY2lmaWVkIGxlbmd0aCBvZiB0aW1lLiAgSGFuZGxlIHRoaXMKLSAqCWNvbmRpdGlvbiBieSBkaXNhYmxpbmcgRE1BIChpZiBuZWNlc3NhcnkpIGFuZCBjb21wbGV0aW5nCi0gKgl0cmFuc2FjdGlvbnMsIHdpdGggZXJyb3IgaWYgbmVjZXNzYXJ5LgotICoKLSAqCVRoaXMgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIG9mIHRoZSAibG9zdCBpbnRlcnJ1cHQiLCB3aGVyZQotICoJZm9yIHNvbWUgcmVhc29uIChwb3NzaWJseSBoYXJkd2FyZSBidWcsIHBvc3NpYmx5IGRyaXZlciBidWcpCi0gKglhbiBpbnRlcnJ1cHQgd2FzIG5vdCBkZWxpdmVyZWQgdG8gdGhlIGRyaXZlciwgZXZlbiB0aG91Z2ggdGhlCi0gKgl0cmFuc2FjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICoKLSAqCUxPQ0tJTkc6Ci0gKglJbmhlcml0ZWQgZnJvbSBTQ1NJIGxheWVyIChub25lLCBjYW4gc2xlZXApCi0gKi8KLQotc3RhdGljIHZvaWQgYXRhX3FjX3RpbWVvdXQoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKLXsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwotCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gYXAtPmhvc3Rfc2V0OwotCXU4IGhvc3Rfc3RhdCA9IDAsIGRydl9zdGF0OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlEUFJJTlRLKCJFTlRFUlxuIik7Ci0KLQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfSURMRTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZob3N0X3NldC0+bG9jaywgZmxhZ3MpOwotCi0Jc3dpdGNoIChxYy0+dGYucHJvdG9jb2wpIHsKLQotCWNhc2UgQVRBX1BST1RfRE1BOgotCWNhc2UgQVRBX1BST1RfQVRBUElfRE1BOgotCQlob3N0X3N0YXQgPSBhcC0+b3BzLT5ibWRtYV9zdGF0dXMoYXApOwotCi0JCS8qIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLCBjbGVhciBETUEtU3RhcnQgYml0ICovCi0JCWFwLT5vcHMtPmJtZG1hX3N0b3AocWMpOwotCi0JCS8qIGZhbGwgdGhyb3VnaCAqLwotCi0JZGVmYXVsdDoKLQkJYXRhX2FsdHN0YXR1cyhhcCk7Ci0JCWRydl9zdGF0ID0gYXRhX2Noa19zdGF0dXMoYXApOwotCi0JCS8qIGFjayBibWRtYSBpcnEgZXZlbnRzICovCi0JCWFwLT5vcHMtPmlycV9jbGVhcihhcCk7Ci0KLQkJcHJpbnRrKEtFUk5fRVJSICJhdGEldTogY29tbWFuZCAweCV4IHRpbWVvdXQsIHN0YXQgMHgleCBob3N0X3N0YXQgMHgleFxuIiwKLQkJICAgICAgIGFwLT5pZCwgcWMtPnRmLmNvbW1hbmQsIGRydl9zdGF0LCBob3N0X3N0YXQpOwotCi0JCS8qIGNvbXBsZXRlIHRhc2tmaWxlIHRyYW5zYWN0aW9uICovCi0JCXFjLT5lcnJfbWFzayB8PSBhY19lcnJfbWFzayhkcnZfc3RhdCk7Ci0JCWJyZWFrOwotCX0KLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7Ci0KLQlhdGFfZWhfcWNfY29tcGxldGUocWMpOwotCi0JRFBSSU5USygiRVhJVFxuIik7Ci19Ci0KLS8qKgotICoJYXRhX2VuZ190aW1lb3V0IC0gSGFuZGxlIHRpbWVvdXQgb2YgcXVldWVkIGNvbW1hbmQKLSAqCUBhcDogUG9ydCBvbiB3aGljaCB0aW1lZC1vdXQgY29tbWFuZCBpcyBhY3RpdmUKLSAqCi0gKglTb21lIHBhcnQgb2YgdGhlIGtlcm5lbCAoY3VycmVudGx5LCBvbmx5IHRoZSBTQ1NJIGxheWVyKQotICoJaGFzIG5vdGljZWQgdGhhdCB0aGUgYWN0aXZlIGNvbW1hbmQgb24gcG9ydCBAYXAgaGFzIG5vdAotICoJY29tcGxldGVkIGFmdGVyIGEgc3BlY2lmaWVkIGxlbmd0aCBvZiB0aW1lLiAgSGFuZGxlIHRoaXMKLSAqCWNvbmRpdGlvbiBieSBkaXNhYmxpbmcgRE1BIChpZiBuZWNlc3NhcnkpIGFuZCBjb21wbGV0aW5nCi0gKgl0cmFuc2FjdGlvbnMsIHdpdGggZXJyb3IgaWYgbmVjZXNzYXJ5LgotICoKLSAqCVRoaXMgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIG9mIHRoZSAibG9zdCBpbnRlcnJ1cHQiLCB3aGVyZQotICoJZm9yIHNvbWUgcmVhc29uIChwb3NzaWJseSBoYXJkd2FyZSBidWcsIHBvc3NpYmx5IGRyaXZlciBidWcpCi0gKglhbiBpbnRlcnJ1cHQgd2FzIG5vdCBkZWxpdmVyZWQgdG8gdGhlIGRyaXZlciwgZXZlbiB0aG91Z2ggdGhlCi0gKgl0cmFuc2FjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICoKLSAqCUxPQ0tJTkc6Ci0gKglJbmhlcml0ZWQgZnJvbSBTQ1NJIGxheWVyIChub25lLCBjYW4gc2xlZXApCi0gKi8KLQotdm9pZCBhdGFfZW5nX3RpbWVvdXQoc3RydWN0IGF0YV9wb3J0ICphcCkKLXsKLQlEUFJJTlRLKCJFTlRFUlxuIik7Ci0KLQlhdGFfcWNfdGltZW91dChhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKSk7Ci0KLQlEUFJJTlRLKCJFWElUXG4iKTsKLX0KLQotLyoqCiAgKglhdGFfcWNfbmV3IC0gUmVxdWVzdCBhbiBhdmFpbGFibGUgQVRBIGNvbW1hbmQsIGZvciBxdWV1ZWluZwogICoJQGFwOiBQb3J0IGFzc29jaWF0ZWQgd2l0aCBkZXZpY2UgQGRldgogICoJQGRldjogRGV2aWNlIGZyb20gd2hvbSB3ZSByZXF1ZXN0IGFuIGF2YWlsYWJsZSBjb21tYW5kIHN0cnVjdHVyZQpAQCAtMzg4OCw5ICs0MjUxLDE0IEBACiAJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9RVUVVRTsgaSsrKQotCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQoaSwgJmFwLT5xYWN0aXZlKSkgewotCQkJcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGkpOworCS8qIG5vIGNvbW1hbmQgd2hpbGUgZnJvemVuICovCisJaWYgKHVubGlrZWx5KGFwLT5mbGFncyAmIEFUQV9GTEFHX0ZST1pFTikpCisJCXJldHVybiBOVUxMOworCisJLyogdGhlIGxhc3QgdGFnIGlzIHJlc2VydmVkIGZvciBpbnRlcm5hbCBjb21tYW5kLiAqLworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX1FVRVVFIC0gMTsgaSsrKQorCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQoaSwgJmFwLT5xY19hbGxvY2F0ZWQpKSB7CisJCQlxYyA9IF9fYXRhX3FjX2Zyb21fdGFnKGFwLCBpKTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTM5MDIsMTYgKzQyNzAsMTUgQEAKIAogLyoqCiAgKglhdGFfcWNfbmV3X2luaXQgLSBSZXF1ZXN0IGFuIGF2YWlsYWJsZSBBVEEgY29tbWFuZCwgYW5kIGluaXRpYWxpemUgaXQKLSAqCUBhcDogUG9ydCBhc3NvY2lhdGVkIHdpdGggZGV2aWNlIEBkZXYKICAqCUBkZXY6IERldmljZSBmcm9tIHdob20gd2UgcmVxdWVzdCBhbiBhdmFpbGFibGUgY29tbWFuZCBzdHJ1Y3R1cmUKICAqCiAgKglMT0NLSU5HOgogICoJTm9uZS4KICAqLwogCi1zdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKmF0YV9xY19uZXdfaW5pdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCSAgICAgIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCitzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKmF0YV9xY19uZXdfaW5pdChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOwogCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7CiAKIAlxYyA9IGF0YV9xY19uZXcoYXApOwpAQCAtMzk0NiwzNiArNDMxMywxNTMgQEAKIAlxYy0+ZmxhZ3MgPSAwOwogCXRhZyA9IHFjLT50YWc7CiAJaWYgKGxpa2VseShhdGFfdGFnX3ZhbGlkKHRhZykpKSB7Ci0JCWlmICh0YWcgPT0gYXAtPmFjdGl2ZV90YWcpCi0JCQlhcC0+YWN0aXZlX3RhZyA9IEFUQV9UQUdfUE9JU09OOwogCQlxYy0+dGFnID0gQVRBX1RBR19QT0lTT047Ci0JCWNsZWFyX2JpdCh0YWcsICZhcC0+cWFjdGl2ZSk7CisJCWNsZWFyX2JpdCh0YWcsICZhcC0+cWNfYWxsb2NhdGVkKTsKIAl9CiB9CiAKIHZvaWQgX19hdGFfcWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKIHsKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOworCiAJV0FSTl9PTihxYyA9PSBOVUxMKTsJLyogYXRhX3FjX2Zyb21fdGFnIF9taWdodF8gcmV0dXJuIE5VTEwgKi8KIAlXQVJOX09OKCEocWMtPmZsYWdzICYgQVRBX1FDRkxBR19BQ1RJVkUpKTsKIAogCWlmIChsaWtlbHkocWMtPmZsYWdzICYgQVRBX1FDRkxBR19ETUFNQVApKQogCQlhdGFfc2dfY2xlYW4ocWMpOwogCisJLyogY29tbWFuZCBzaG91bGQgYmUgbWFya2VkIGluYWN0aXZlIGF0b21pY2FsbHkgd2l0aCBxYyBjb21wbGV0aW9uICovCisJaWYgKHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9OQ1EpCisJCWFwLT5zYWN0aXZlICY9IH4oMSA8PCBxYy0+dGFnKTsKKwllbHNlCisJCWFwLT5hY3RpdmVfdGFnID0gQVRBX1RBR19QT0lTT047CisKIAkvKiBhdGFwaTogbWFyayBxYyBhcyBpbmFjdGl2ZSB0byBwcmV2ZW50IHRoZSBpbnRlcnJ1cHQgaGFuZGxlcgogCSAqIGZyb20gY29tcGxldGluZyB0aGUgY29tbWFuZCB0d2ljZSBsYXRlciwgYmVmb3JlIHRoZSBlcnJvciBoYW5kbGVyCiAJICogaXMgY2FsbGVkLiAod2hlbiByYyAhPSAwIGFuZCBhdGFwaSByZXF1ZXN0IHNlbnNlIGlzIG5lZWRlZCkKIAkgKi8KIAlxYy0+ZmxhZ3MgJj0gfkFUQV9RQ0ZMQUdfQUNUSVZFOworCWFwLT5xY19hY3RpdmUgJj0gfigxIDw8IHFjLT50YWcpOwogCiAJLyogY2FsbCBjb21wbGV0aW9uIGNhbGxiYWNrICovCiAJcWMtPmNvbXBsZXRlX2ZuKHFjKTsKIH0KIAorLyoqCisgKglhdGFfcWNfY29tcGxldGUgLSBDb21wbGV0ZSBhbiBhY3RpdmUgQVRBIGNvbW1hbmQKKyAqCUBxYzogQ29tbWFuZCB0byBjb21wbGV0ZQorICoJQGVycl9tYXNrOiBBVEEgU3RhdHVzIHJlZ2lzdGVyIGNvbnRlbnRzCisgKgorICoJSW5kaWNhdGUgdG8gdGhlIG1pZCBhbmQgdXBwZXIgbGF5ZXJzIHRoYXQgYW4gQVRBCisgKgljb21tYW5kIGhhcyBjb21wbGV0ZWQsIHdpdGggZWl0aGVyIGFuIG9rIG9yIG5vdC1vayBzdGF0dXMuCisgKgorICoJTE9DS0lORzoKKyAqCXNwaW5fbG9ja19pcnFzYXZlKGhvc3Rfc2V0IGxvY2spCisgKi8KK3ZvaWQgYXRhX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKKworCS8qIFhYWDogTmV3IEVIIGFuZCBvbGQgRUggdXNlIGRpZmZlcmVudCBtZWNoYW5pc21zIHRvCisJICogc3luY2hyb25pemUgRUggd2l0aCByZWd1bGFyIGV4ZWN1dGlvbiBwYXRoLgorCSAqCisJICogSW4gbmV3IEVILCBhIGZhaWxlZCBxYyBpcyBtYXJrZWQgd2l0aCBBVEFfUUNGTEFHX0ZBSUxFRC4KKwkgKiBOb3JtYWwgZXhlY3V0aW9uIHBhdGggaXMgcmVzcG9uc2libGUgZm9yIG5vdCBhY2Nlc3NpbmcgYQorCSAqIGZhaWxlZCBxYy4gIGxpYmF0YSBjb3JlIGVuZm9yY2VzIHRoZSBydWxlIGJ5IHJldHVybmluZyBOVUxMCisJICogZnJvbSBhdGFfcWNfZnJvbV90YWcoKSBmb3IgZmFpbGVkIHFjcy4KKwkgKgorCSAqIE9sZCBFSCBkZXBlbmRzIG9uIGF0YV9xY19jb21wbGV0ZSgpIG51bGxpZnlpbmcgY29tcGxldGlvbgorCSAqIHJlcXVlc3RzIGlmIEFUQV9RQ0ZMQUdfRUhfU0NIRURVTEVEIGlzIHNldC4gIE9sZCBFSCBkb2VzCisJICogbm90IHN5bmNocm9uaXplIHdpdGggaW50ZXJydXB0IGhhbmRsZXIuICBPbmx5IFBJTyB0YXNrIGlzCisJICogdGFrZW4gY2FyZSBvZi4KKwkgKi8KKwlpZiAoYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikgeworCQlXQVJOX09OKGFwLT5mbGFncyAmIEFUQV9GTEFHX0ZST1pFTik7CisKKwkJaWYgKHVubGlrZWx5KHFjLT5lcnJfbWFzaykpCisJCQlxYy0+ZmxhZ3MgfD0gQVRBX1FDRkxBR19GQUlMRUQ7CisKKwkJaWYgKHVubGlrZWx5KHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRkFJTEVEKSkgeworCQkJaWYgKCFhdGFfdGFnX2ludGVybmFsKHFjLT50YWcpKSB7CisJCQkJLyogYWx3YXlzIGZpbGwgcmVzdWx0IFRGIGZvciBmYWlsZWQgcWMgKi8KKwkJCQlhcC0+b3BzLT50Zl9yZWFkKGFwLCAmcWMtPnJlc3VsdF90Zik7CisJCQkJYXRhX3FjX3NjaGVkdWxlX2VoKHFjKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQkvKiByZWFkIHJlc3VsdCBURiBpZiByZXF1ZXN0ZWQgKi8KKwkJaWYgKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfUkVTVUxUX1RGKQorCQkJYXAtPm9wcy0+dGZfcmVhZChhcCwgJnFjLT5yZXN1bHRfdGYpOworCisJCV9fYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwl9IGVsc2UgeworCQlpZiAocWMtPmZsYWdzICYgQVRBX1FDRkxBR19FSF9TQ0hFRFVMRUQpCisJCQlyZXR1cm47CisKKwkJLyogcmVhZCByZXN1bHQgVEYgaWYgZmFpbGVkIG9yIHJlcXVlc3RlZCAqLworCQlpZiAocWMtPmVycl9tYXNrIHx8IHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfUkVTVUxUX1RGKQorCQkJYXAtPm9wcy0+dGZfcmVhZChhcCwgJnFjLT5yZXN1bHRfdGYpOworCisJCV9fYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwl9Cit9CisKKy8qKgorICoJYXRhX3FjX2NvbXBsZXRlX211bHRpcGxlIC0gQ29tcGxldGUgbXVsdGlwbGUgcWNzIHN1Y2Nlc3NmdWxseQorICoJQGFwOiBwb3J0IGluIHF1ZXN0aW9uCisgKglAcWNfYWN0aXZlOiBuZXcgcWNfYWN0aXZlIG1hc2sKKyAqCUBmaW5pc2hfcWM6IExMREQgY2FsbGJhY2sgaW52b2tlZCBiZWZvcmUgY29tcGxldGluZyBhIHFjCisgKgorICoJQ29tcGxldGUgaW4tZmxpZ2h0IGNvbW1hbmRzLiAgVGhpcyBmdW5jdGlvbnMgaXMgbWVhbnQgdG8gYmUKKyAqCWNhbGxlZCBmcm9tIGxvdy1sZXZlbCBkcml2ZXIncyBpbnRlcnJ1cHQgcm91dGluZSB0byBjb21wbGV0ZQorICoJcmVxdWVzdHMgbm9ybWFsbHkuICBhcC0+cWNfYWN0aXZlIGFuZCBAcWNfYWN0aXZlIGlzIGNvbXBhcmVkCisgKglhbmQgY29tbWFuZHMgYXJlIGNvbXBsZXRlZCBhY2NvcmRpbmdseS4KKyAqCisgKglMT0NLSU5HOgorICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqCisgKglSRVRVUk5TOgorICoJTnVtYmVyIG9mIGNvbXBsZXRlZCBjb21tYW5kcyBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlLgorICovCitpbnQgYXRhX3FjX2NvbXBsZXRlX211bHRpcGxlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHUzMiBxY19hY3RpdmUsCisJCQkgICAgIHZvaWQgKCpmaW5pc2hfcWMpKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqKSkKK3sKKwlpbnQgbnJfZG9uZSA9IDA7CisJdTMyIGRvbmVfbWFzazsKKwlpbnQgaTsKKworCWRvbmVfbWFzayA9IGFwLT5xY19hY3RpdmUgXiBxY19hY3RpdmU7CisKKwlpZiAodW5saWtlbHkoZG9uZV9tYXNrICYgcWNfYWN0aXZlKSkgeworCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLCAiaWxsZWdhbCBxY19hY3RpdmUgdHJhbnNpdGlvbiAiCisJCQkJIiglMDh4LT4lMDh4KVxuIiwgYXAtPnFjX2FjdGl2ZSwgcWNfYWN0aXZlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfUVVFVUU7IGkrKykgeworCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOworCisJCWlmICghKGRvbmVfbWFzayAmICgxIDw8IGkpKSkKKwkJCWNvbnRpbnVlOworCisJCWlmICgocWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGkpKSkgeworCQkJaWYgKGZpbmlzaF9xYykKKwkJCQlmaW5pc2hfcWMocWMpOworCQkJYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwkJCW5yX2RvbmUrKzsKKwkJfQorCX0KKworCXJldHVybiBucl9kb25lOworfQorCiBzdGF0aWMgaW5saW5lIGludCBhdGFfc2hvdWxkX2RtYV9tYXAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKIHsKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwogCiAJc3dpdGNoIChxYy0+dGYucHJvdG9jb2wpIHsKKwljYXNlIEFUQV9QUk9UX05DUToKIAljYXNlIEFUQV9QUk9UX0RNQToKIAljYXNlIEFUQV9QUk9UX0FUQVBJX0RNQToKIAkJcmV0dXJuIDE7CkBAIC00MDEwLDggKzQ0OTQsMjIgQEAKIHsKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwogCi0JcWMtPmFwLT5hY3RpdmVfdGFnID0gcWMtPnRhZzsKKwkvKiBNYWtlIHN1cmUgb25seSBvbmUgbm9uLU5DUSBjb21tYW5kIGlzIG91dHN0YW5kaW5nLiAgVGhlCisJICogY2hlY2sgaXMgc2tpcHBlZCBmb3Igb2xkIEVIIGJlY2F1c2UgaXQgcmV1c2VzIGFjdGl2ZSBxYyB0bworCSAqIHJlcXVlc3QgQVRBUEkgc2Vuc2UuCisJICovCisJV0FSTl9PTihhcC0+b3BzLT5lcnJvcl9oYW5kbGVyICYmIGF0YV90YWdfdmFsaWQoYXAtPmFjdGl2ZV90YWcpKTsKKworCWlmIChxYy0+dGYucHJvdG9jb2wgPT0gQVRBX1BST1RfTkNRKSB7CisJCVdBUk5fT04oYXAtPnNhY3RpdmUgJiAoMSA8PCBxYy0+dGFnKSk7CisJCWFwLT5zYWN0aXZlIHw9IDEgPDwgcWMtPnRhZzsKKwl9IGVsc2UgeworCQlXQVJOX09OKGFwLT5zYWN0aXZlKTsKKwkJYXAtPmFjdGl2ZV90YWcgPSBxYy0+dGFnOworCX0KKwogCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX0FDVElWRTsKKwlhcC0+cWNfYWN0aXZlIHw9IDEgPDwgcWMtPnRhZzsKIAogCWlmIChhdGFfc2hvdWxkX2RtYV9tYXAocWMpKSB7CiAJCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1NHKSB7CkBAIC00MDYxLDQzICs0NTU5LDEwNSBAQAogewogCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CiAKKwkvKiBVc2UgcG9sbGluZyBwaW8gaWYgdGhlIExMRCBkb2Vzbid0IGhhbmRsZQorCSAqIGludGVycnVwdCBkcml2ZW4gcGlvIGFuZCBhdGFwaSBDREIgaW50ZXJydXB0LgorCSAqLworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19QSU9fUE9MTElORykgeworCQlzd2l0Y2ggKHFjLT50Zi5wcm90b2NvbCkgeworCQljYXNlIEFUQV9QUk9UX1BJTzoKKwkJY2FzZSBBVEFfUFJPVF9BVEFQSToKKwkJY2FzZSBBVEFfUFJPVF9BVEFQSV9OT0RBVEE6CisJCQlxYy0+dGYuZmxhZ3MgfD0gQVRBX1RGTEFHX1BPTExJTkc7CisJCQlicmVhazsKKwkJY2FzZSBBVEFfUFJPVF9BVEFQSV9ETUE6CisJCQlpZiAocWMtPmRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfQ0RCX0lOVFIpCisJCQkJLyogc2VlIGF0YV9kbWFfYmxhY2tsaXN0ZWQoKSAqLworCQkJCUJVRygpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCX0KKworCS8qIHNlbGVjdCB0aGUgZGV2aWNlICovCiAJYXRhX2Rldl9zZWxlY3QoYXAsIHFjLT5kZXYtPmRldm5vLCAxLCAwKTsKIAorCS8qIHN0YXJ0IHRoZSBjb21tYW5kICovCiAJc3dpdGNoIChxYy0+dGYucHJvdG9jb2wpIHsKIAljYXNlIEFUQV9QUk9UX05PREFUQToKKwkJaWYgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKQorCQkJYXRhX3FjX3NldF9wb2xsaW5nKHFjKTsKKwogCQlhdGFfdGZfdG9faG9zdChhcCwgJnFjLT50Zik7CisJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9MQVNUOworCisJCWlmIChxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykKKwkJCWF0YV9wb3J0X3F1ZXVlX3Rhc2soYXAsIGF0YV9waW9fdGFzaywgcWMsIDApOworCiAJCWJyZWFrOwogCiAJY2FzZSBBVEFfUFJPVF9ETUE6CisJCVdBUk5fT04ocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpOworCiAJCWFwLT5vcHMtPnRmX2xvYWQoYXAsICZxYy0+dGYpOwkgLyogbG9hZCB0ZiByZWdpc3RlcnMgKi8KIAkJYXAtPm9wcy0+Ym1kbWFfc2V0dXAocWMpOwkgICAgLyogc2V0IHVwIGJtZG1hICovCiAJCWFwLT5vcHMtPmJtZG1hX3N0YXJ0KHFjKTsJICAgIC8qIGluaXRpYXRlIGJtZG1hICovCisJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9MQVNUOwogCQlicmVhazsKIAotCWNhc2UgQVRBX1BST1RfUElPOiAvKiBsb2FkIHRmIHJlZ2lzdGVycywgaW5pdGlhdGUgcG9sbGluZyBwaW8gKi8KLQkJYXRhX3FjX3NldF9wb2xsaW5nKHFjKTsKKwljYXNlIEFUQV9QUk9UX1BJTzoKKwkJaWYgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKQorCQkJYXRhX3FjX3NldF9wb2xsaW5nKHFjKTsKKwogCQlhdGFfdGZfdG9faG9zdChhcCwgJnFjLT50Zik7Ci0JCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVDsKLQkJYXRhX3BvcnRfcXVldWVfdGFzayhhcCwgYXRhX3Bpb190YXNrLCBhcCwgMCk7CisKKwkJaWYgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19XUklURSkgeworCQkJLyogUElPIGRhdGEgb3V0IHByb3RvY29sICovCisJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRklSU1Q7CisJCQlhdGFfcG9ydF9xdWV1ZV90YXNrKGFwLCBhdGFfcGlvX3Rhc2ssIHFjLCAwKTsKKworCQkJLyogYWx3YXlzIHNlbmQgZmlyc3QgZGF0YSBibG9jayB1c2luZworCQkJICogdGhlIGF0YV9waW9fdGFzaygpIGNvZGVwYXRoLgorCQkJICovCisJCX0gZWxzZSB7CisJCQkvKiBQSU8gZGF0YSBpbiBwcm90b2NvbCAqLworCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUOworCisJCQlpZiAocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpCisJCQkJYXRhX3BvcnRfcXVldWVfdGFzayhhcCwgYXRhX3Bpb190YXNrLCBxYywgMCk7CisKKwkJCS8qIGlmIHBvbGxpbmcsIGF0YV9waW9fdGFzaygpIGhhbmRsZXMgdGhlIHJlc3QuCisJCQkgKiBvdGhlcndpc2UsIGludGVycnVwdCBoYW5kbGVyIHRha2VzIG92ZXIgZnJvbSBoZXJlLgorCQkJICovCisJCX0KKwogCQlicmVhazsKIAogCWNhc2UgQVRBX1BST1RfQVRBUEk6Ci0JCWF0YV9xY19zZXRfcG9sbGluZyhxYyk7Ci0JCWF0YV90Zl90b19ob3N0KGFwLCAmcWMtPnRmKTsKLQkJYXRhX3BvcnRfcXVldWVfdGFzayhhcCwgYXRhcGlfcGFja2V0X3Rhc2ssIGFwLCAwKTsKLQkJYnJlYWs7Ci0KIAljYXNlIEFUQV9QUk9UX0FUQVBJX05PREFUQToKLQkJYXAtPmZsYWdzIHw9IEFUQV9GTEFHX05PSU5UUjsKKwkJaWYgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKQorCQkJYXRhX3FjX3NldF9wb2xsaW5nKHFjKTsKKwogCQlhdGFfdGZfdG9faG9zdChhcCwgJnFjLT50Zik7Ci0JCWF0YV9wb3J0X3F1ZXVlX3Rhc2soYXAsIGF0YXBpX3BhY2tldF90YXNrLCBhcCwgMCk7CisKKwkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0ZJUlNUOworCisJCS8qIHNlbmQgY2RiIGJ5IHBvbGxpbmcgaWYgbm8gY2RiIGludGVycnVwdCAqLworCQlpZiAoKCEocWMtPmRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfQ0RCX0lOVFIpKSB8fAorCQkgICAgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKSkKKwkJCWF0YV9wb3J0X3F1ZXVlX3Rhc2soYXAsIGF0YV9waW9fdGFzaywgcWMsIDApOwogCQlicmVhazsKIAogCWNhc2UgQVRBX1BST1RfQVRBUElfRE1BOgotCQlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfTk9JTlRSOworCQlXQVJOX09OKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKTsKKwogCQlhcC0+b3BzLT50Zl9sb2FkKGFwLCAmcWMtPnRmKTsJIC8qIGxvYWQgdGYgcmVnaXN0ZXJzICovCiAJCWFwLT5vcHMtPmJtZG1hX3NldHVwKHFjKTsJICAgIC8qIHNldCB1cCBibWRtYSAqLwotCQlhdGFfcG9ydF9xdWV1ZV90YXNrKGFwLCBhdGFwaV9wYWNrZXRfdGFzaywgYXAsIDApOworCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRklSU1Q7CisKKwkJLyogc2VuZCBjZGIgYnkgcG9sbGluZyBpZiBubyBjZGIgaW50ZXJydXB0ICovCisJCWlmICghKHFjLT5kZXYtPmZsYWdzICYgQVRBX0RGTEFHX0NEQl9JTlRSKSkKKwkJCWF0YV9wb3J0X3F1ZXVlX3Rhc2soYXAsIGF0YV9waW9fdGFzaywgcWMsIDApOwogCQlicmVhazsKIAogCWRlZmF1bHQ6CkBAIC00MTI3LDUyICs0Njg3LDY2IEBACiBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9ob3N0X2ludHIgKHN0cnVjdCBhdGFfcG9ydCAqYXAsCiAJCQkJICAgc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKIHsKLQl1OCBzdGF0dXMsIGhvc3Rfc3RhdDsKKwl1OCBzdGF0dXMsIGhvc3Rfc3RhdCA9IDA7CiAKLQlzd2l0Y2ggKHFjLT50Zi5wcm90b2NvbCkgeworCVZQUklOVEsoImF0YSV1OiBwcm90b2NvbCAlZCB0YXNrX3N0YXRlICVkXG4iLAorCQlhcC0+aWQsIHFjLT50Zi5wcm90b2NvbCwgYXAtPmhzbV90YXNrX3N0YXRlKTsKIAotCWNhc2UgQVRBX1BST1RfRE1BOgotCWNhc2UgQVRBX1BST1RfQVRBUElfRE1BOgotCWNhc2UgQVRBX1BST1RfQVRBUEk6Ci0JCS8qIGNoZWNrIHN0YXR1cyBvZiBETUEgZW5naW5lICovCi0JCWhvc3Rfc3RhdCA9IGFwLT5vcHMtPmJtZG1hX3N0YXR1cyhhcCk7Ci0JCVZQUklOVEsoImF0YSV1OiBob3N0X3N0YXQgMHglWFxuIiwgYXAtPmlkLCBob3N0X3N0YXQpOworCS8qIENoZWNrIHdoZXRoZXIgd2UgYXJlIGV4cGVjdGluZyBpbnRlcnJ1cHQgaW4gdGhpcyBzdGF0ZSAqLworCXN3aXRjaCAoYXAtPmhzbV90YXNrX3N0YXRlKSB7CisJY2FzZSBIU01fU1RfRklSU1Q6CisJCS8qIFNvbWUgcHJlLUFUQVBJLTQgZGV2aWNlcyBhc3NlcnQgSU5UUlEKKwkJICogYXQgdGhpcyBzdGF0ZSB3aGVuIHJlYWR5IHRvIHJlY2VpdmUgQ0RCLgorCQkgKi8KIAotCQkvKiBpZiBpdCdzIG5vdCBvdXIgaXJxLi4uICovCi0JCWlmICghKGhvc3Rfc3RhdCAmIEFUQV9ETUFfSU5UUikpCisJCS8qIENoZWNrIHRoZSBBVEFfREZMQUdfQ0RCX0lOVFIgZmxhZyBpcyBlbm91Z2ggaGVyZS4KKwkJICogVGhlIGZsYWcgd2FzIHR1cm5lZCBvbiBvbmx5IGZvciBhdGFwaSBkZXZpY2VzLgorCQkgKiBObyBuZWVkIHRvIGNoZWNrIGlzX2F0YXBpX3Rhc2tmaWxlKCZxYy0+dGYpIGFnYWluLgorCQkgKi8KKwkJaWYgKCEocWMtPmRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfQ0RCX0lOVFIpKQogCQkJZ290byBpZGxlX2lycTsKLQotCQkvKiBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZSwgY2xlYXIgRE1BLVN0YXJ0IGJpdCAqLwotCQlhcC0+b3BzLT5ibWRtYV9zdG9wKHFjKTsKLQotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQotCWNhc2UgQVRBX1BST1RfQVRBUElfTk9EQVRBOgotCWNhc2UgQVRBX1BST1RfTk9EQVRBOgotCQkvKiBjaGVjayBhbHRzdGF0dXMgKi8KLQkJc3RhdHVzID0gYXRhX2FsdHN0YXR1cyhhcCk7Ci0JCWlmIChzdGF0dXMgJiBBVEFfQlVTWSkKLQkJCWdvdG8gaWRsZV9pcnE7Ci0KLQkJLyogY2hlY2sgbWFpbiBzdGF0dXMsIGNsZWFyaW5nIElOVFJRICovCi0JCXN0YXR1cyA9IGF0YV9jaGtfc3RhdHVzKGFwKTsKLQkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIEFUQV9CVVNZKSkKLQkJCWdvdG8gaWRsZV9pcnE7Ci0JCURQUklOVEsoImF0YSV1OiBwcm90b2NvbCAlZCAoZGV2X3N0YXQgMHglWClcbiIsCi0JCQlhcC0+aWQsIHFjLT50Zi5wcm90b2NvbCwgc3RhdHVzKTsKLQotCQkvKiBhY2sgYm1kbWEgaXJxIGV2ZW50cyAqLwotCQlhcC0+b3BzLT5pcnFfY2xlYXIoYXApOwotCi0JCS8qIGNvbXBsZXRlIHRhc2tmaWxlIHRyYW5zYWN0aW9uICovCi0JCXFjLT5lcnJfbWFzayB8PSBhY19lcnJfbWFzayhzdGF0dXMpOwotCQlhdGFfcWNfY29tcGxldGUocWMpOwogCQlicmVhazsKKwljYXNlIEhTTV9TVF9MQVNUOgorCQlpZiAocWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0RNQSB8fAorCQkgICAgcWMtPnRmLnByb3RvY29sID09IEFUQV9QUk9UX0FUQVBJX0RNQSkgeworCQkJLyogY2hlY2sgc3RhdHVzIG9mIERNQSBlbmdpbmUgKi8KKwkJCWhvc3Rfc3RhdCA9IGFwLT5vcHMtPmJtZG1hX3N0YXR1cyhhcCk7CisJCQlWUFJJTlRLKCJhdGEldTogaG9zdF9zdGF0IDB4JVhcbiIsIGFwLT5pZCwgaG9zdF9zdGF0KTsKIAorCQkJLyogaWYgaXQncyBub3Qgb3VyIGlycS4uLiAqLworCQkJaWYgKCEoaG9zdF9zdGF0ICYgQVRBX0RNQV9JTlRSKSkKKwkJCQlnb3RvIGlkbGVfaXJxOworCisJCQkvKiBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZSwgY2xlYXIgRE1BLVN0YXJ0IGJpdCAqLworCQkJYXAtPm9wcy0+Ym1kbWFfc3RvcChxYyk7CisKKwkJCWlmICh1bmxpa2VseShob3N0X3N0YXQgJiBBVEFfRE1BX0VSUikpIHsKKwkJCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KKwkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hPU1RfQlVTOworCQkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9FUlI7CisJCQl9CisJCX0KKwkJYnJlYWs7CisJY2FzZSBIU01fU1Q6CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWdvdG8gaWRsZV9pcnE7CiAJfQogCisJLyogY2hlY2sgYWx0c3RhdHVzICovCisJc3RhdHVzID0gYXRhX2FsdHN0YXR1cyhhcCk7CisJaWYgKHN0YXR1cyAmIEFUQV9CVVNZKQorCQlnb3RvIGlkbGVfaXJxOworCisJLyogY2hlY2sgbWFpbiBzdGF0dXMsIGNsZWFyaW5nIElOVFJRICovCisJc3RhdHVzID0gYXRhX2Noa19zdGF0dXMoYXApOworCWlmICh1bmxpa2VseShzdGF0dXMgJiBBVEFfQlVTWSkpCisJCWdvdG8gaWRsZV9pcnE7CisKKwkvKiBhY2sgYm1kbWEgaXJxIGV2ZW50cyAqLworCWFwLT5vcHMtPmlycV9jbGVhcihhcCk7CisKKwlhdGFfaHNtX21vdmUoYXAsIHFjLCBzdGF0dXMsIDApOwogCXJldHVybiAxOwkvKiBpcnEgaGFuZGxlZCAqLwogCiBpZGxlX2lycToKQEAgLTQxODEsNyArNDc1NSw3IEBACiAjaWZkZWYgQVRBX0lSUV9UUkFQCiAJaWYgKChhcC0+c3RhdHMuaWRsZV9pcnEgJSAxMDAwKSA9PSAwKSB7CiAJCWF0YV9pcnFfYWNrKGFwLCAwKTsgLyogZGVidWcgdHJhcCAqLwotCQlwcmludGsoS0VSTl9XQVJOSU5HICJhdGElZDogaXJxIHRyYXBcbiIsIGFwLT5pZCk7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9XQVJOSU5HLCAiaXJxIHRyYXBcbiIpOwogCQlyZXR1cm4gMTsKIAl9CiAjZW5kaWYKQEAgLTQyMTksMTEgKzQ3OTMsMTEgQEAKIAogCQlhcCA9IGhvc3Rfc2V0LT5wb3J0c1tpXTsKIAkJaWYgKGFwICYmCi0JCSAgICAhKGFwLT5mbGFncyAmIChBVEFfRkxBR19QT1JUX0RJU0FCTEVEIHwgQVRBX0ZMQUdfTk9JTlRSKSkpIHsKKwkJICAgICEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpKSB7CiAJCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCiAJCQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCQkJaWYgKHFjICYmICghKHFjLT50Zi5jdGwgJiBBVEFfTklFTikpICYmCisJCQlpZiAocWMgJiYgKCEocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpKSAmJgogCQkJICAgIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX0FDVElWRSkpCiAJCQkJaGFuZGxlZCB8PSBhdGFfaG9zdF9pbnRyKGFwLCBxYyk7CiAJCX0KQEAgLTQyMzQsMzIgKzQ4MDgsMTY4IEBACiAJcmV0dXJuIElSUV9SRVRWQUwoaGFuZGxlZCk7CiB9CiAKKy8qKgorICoJc2F0YV9zY3JfdmFsaWQgLSB0ZXN0IHdoZXRoZXIgU0NScyBhcmUgYWNjZXNzaWJsZQorICoJQGFwOiBBVEEgcG9ydCB0byB0ZXN0IFNDUiBhY2Nlc3NpYmlsaXR5IGZvcgorICoKKyAqCVRlc3Qgd2hldGhlciBTQ1JzIGFyZSBhY2Nlc3NpYmxlIGZvciBAYXAuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKgorICoJUkVUVVJOUzoKKyAqCTEgaWYgU0NScyBhcmUgYWNjZXNzaWJsZSwgMCBvdGhlcndpc2UuCisgKi8KK2ludCBzYXRhX3Njcl92YWxpZChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXJldHVybiBhcC0+Y2JsID09IEFUQV9DQkxfU0FUQSAmJiBhcC0+b3BzLT5zY3JfcmVhZDsKK30KKworLyoqCisgKglzYXRhX3Njcl9yZWFkIC0gcmVhZCBTQ1IgcmVnaXN0ZXIgb2YgdGhlIHNwZWNpZmllZCBwb3J0CisgKglAYXA6IEFUQSBwb3J0IHRvIHJlYWQgU0NSIGZvcgorICoJQHJlZzogU0NSIHRvIHJlYWQKKyAqCUB2YWw6IFBsYWNlIHRvIHN0b3JlIHJlYWQgdmFsdWUKKyAqCisgKglSZWFkIFNDUiByZWdpc3RlciBAcmVnIG9mIEBhcCBpbnRvICpAdmFsLiAgVGhpcyBmdW5jdGlvbiBpcworICoJZ3VhcmFudGVlZCB0byBzdWNjZWVkIGlmIHRoZSBjYWJsZSB0eXBlIG9mIHRoZSBwb3J0IGlzIFNBVEEKKyAqCWFuZCB0aGUgcG9ydCBpbXBsZW1lbnRzIC0+c2NyX3JlYWQuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKgorICoJUkVUVVJOUzoKKyAqCTAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KKyAqLworaW50IHNhdGFfc2NyX3JlYWQoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHJlZywgdTMyICp2YWwpCit7CisJaWYgKHNhdGFfc2NyX3ZhbGlkKGFwKSkgeworCQkqdmFsID0gYXAtPm9wcy0+c2NyX3JlYWQoYXAsIHJlZyk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVPUE5PVFNVUFA7Cit9CisKKy8qKgorICoJc2F0YV9zY3Jfd3JpdGUgLSB3cml0ZSBTQ1IgcmVnaXN0ZXIgb2YgdGhlIHNwZWNpZmllZCBwb3J0CisgKglAYXA6IEFUQSBwb3J0IHRvIHdyaXRlIFNDUiBmb3IKKyAqCUByZWc6IFNDUiB0byB3cml0ZQorICoJQHZhbDogdmFsdWUgdG8gd3JpdGUKKyAqCisgKglXcml0ZSBAdmFsIHRvIFNDUiByZWdpc3RlciBAcmVnIG9mIEBhcC4gIFRoaXMgZnVuY3Rpb24gaXMKKyAqCWd1YXJhbnRlZWQgdG8gc3VjY2VlZCBpZiB0aGUgY2FibGUgdHlwZSBvZiB0aGUgcG9ydCBpcyBTQVRBCisgKglhbmQgdGhlIHBvcnQgaW1wbGVtZW50cyAtPnNjcl9yZWFkLgorICoKKyAqCUxPQ0tJTkc6CisgKglOb25lLgorICoKKyAqCVJFVFVSTlM6CisgKgkwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisgKi8KK2ludCBzYXRhX3Njcl93cml0ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgcmVnLCB1MzIgdmFsKQoreworCWlmIChzYXRhX3Njcl92YWxpZChhcCkpIHsKKwkJYXAtPm9wcy0+c2NyX3dyaXRlKGFwLCByZWcsIHZhbCk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gLUVPUE5PVFNVUFA7Cit9CisKKy8qKgorICoJc2F0YV9zY3Jfd3JpdGVfZmx1c2ggLSB3cml0ZSBTQ1IgcmVnaXN0ZXIgb2YgdGhlIHNwZWNpZmllZCBwb3J0IGFuZCBmbHVzaAorICoJQGFwOiBBVEEgcG9ydCB0byB3cml0ZSBTQ1IgZm9yCisgKglAcmVnOiBTQ1IgdG8gd3JpdGUKKyAqCUB2YWw6IHZhbHVlIHRvIHdyaXRlCisgKgorICoJVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gc2F0YV9zY3Jfd3JpdGUoKSBleGNlcHQgdGhhdCB0aGlzCisgKglmdW5jdGlvbiBwZXJmb3JtcyBmbHVzaCBhZnRlciB3cml0aW5nIHRvIHRoZSByZWdpc3Rlci4KKyAqCisgKglMT0NLSU5HOgorICoJTm9uZS4KKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgorICovCitpbnQgc2F0YV9zY3Jfd3JpdGVfZmx1c2goc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHJlZywgdTMyIHZhbCkKK3sKKwlpZiAoc2F0YV9zY3JfdmFsaWQoYXApKSB7CisJCWFwLT5vcHMtPnNjcl93cml0ZShhcCwgcmVnLCB2YWwpOworCQlhcC0+b3BzLT5zY3JfcmVhZChhcCwgcmVnKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAtRU9QTk9UU1VQUDsKK30KKworLyoqCisgKglhdGFfcG9ydF9vbmxpbmUgLSB0ZXN0IHdoZXRoZXIgdGhlIGdpdmVuIHBvcnQgaXMgb25saW5lCisgKglAYXA6IEFUQSBwb3J0IHRvIHRlc3QKKyAqCisgKglUZXN0IHdoZXRoZXIgQGFwIGlzIG9ubGluZS4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMAorICoJaWYgb25saW5lIHN0YXR1cyBvZiBAYXAgY2Fubm90IGJlIG9idGFpbmVkLCBzbworICoJYXRhX3BvcnRfb25saW5lKGFwKSAhPSAhYXRhX3BvcnRfb2ZmbGluZShhcCkuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKgorICoJUkVUVVJOUzoKKyAqCTEgaWYgdGhlIHBvcnQgb25saW5lIHN0YXR1cyBpcyBhdmFpbGFibGUgYW5kIG9ubGluZS4KKyAqLworaW50IGF0YV9wb3J0X29ubGluZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXUzMiBzc3RhdHVzOworCisJaWYgKCFzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfU1RBVFVTLCAmc3N0YXR1cykgJiYgKHNzdGF0dXMgJiAweGYpID09IDB4MykKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICoJYXRhX3BvcnRfb2ZmbGluZSAtIHRlc3Qgd2hldGhlciB0aGUgZ2l2ZW4gcG9ydCBpcyBvZmZsaW5lCisgKglAYXA6IEFUQSBwb3J0IHRvIHRlc3QKKyAqCisgKglUZXN0IHdoZXRoZXIgQGFwIGlzIG9mZmxpbmUuICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXR1cm5zCisgKgkwIGlmIG9mZmxpbmUgc3RhdHVzIG9mIEBhcCBjYW5ub3QgYmUgb2J0YWluZWQsIHNvCisgKglhdGFfcG9ydF9vbmxpbmUoYXApICE9ICFhdGFfcG9ydF9vZmZsaW5lKGFwKS4KKyAqCisgKglMT0NLSU5HOgorICoJTm9uZS4KKyAqCisgKglSRVRVUk5TOgorICoJMSBpZiB0aGUgcG9ydCBvZmZsaW5lIHN0YXR1cyBpcyBhdmFpbGFibGUgYW5kIG9mZmxpbmUuCisgKi8KK2ludCBhdGFfcG9ydF9vZmZsaW5lKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdTMyIHNzdGF0dXM7CisKKwlpZiAoIXNhdGFfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMsICZzc3RhdHVzKSAmJiAoc3N0YXR1cyAmIDB4ZikgIT0gMHgzKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KIAogLyoKICAqIEV4ZWN1dGUgYSAnc2ltcGxlJyBjb21tYW5kLCB0aGF0IG9ubHkgY29uc2lzdHMgb2YgdGhlIG9wY29kZSAnY21kJyBpdHNlbGYsCiAgKiB3aXRob3V0IGZpbGxpbmcgYW55IG90aGVyIHJlZ2lzdGVycwogICovCi1zdGF0aWMgaW50IGF0YV9kb19zaW1wbGVfY21kKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCi0JCQkgICAgIHU4IGNtZCkKK3N0YXRpYyBpbnQgYXRhX2RvX3NpbXBsZV9jbWQoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgdTggY21kKQogewogCXN0cnVjdCBhdGFfdGFza2ZpbGUgdGY7CiAJaW50IGVycjsKIAotCWF0YV90Zl9pbml0KGFwLCAmdGYsIGRldi0+ZGV2bm8pOworCWF0YV90Zl9pbml0KGRldiwgJnRmKTsKIAogCXRmLmNvbW1hbmQgPSBjbWQ7CiAJdGYuZmxhZ3MgfD0gQVRBX1RGTEFHX0RFVklDRTsKIAl0Zi5wcm90b2NvbCA9IEFUQV9QUk9UX05PREFUQTsKIAotCWVyciA9IGF0YV9leGVjX2ludGVybmFsKGFwLCBkZXYsICZ0ZiwgRE1BX05PTkUsIE5VTEwsIDApOworCWVyciA9IGF0YV9leGVjX2ludGVybmFsKGRldiwgJnRmLCBOVUxMLCBETUFfTk9ORSwgTlVMTCwgMCk7CiAJaWYgKGVycikKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogYXRhIGNvbW1hbmQgZmFpbGVkOiAlZFxuIiwKLQkJCQlfX0ZVTkNUSU9OX18sIGVycik7CisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9FUlIsICIlczogYXRhIGNvbW1hbmQgZmFpbGVkOiAlZFxuIiwKKwkJCSAgICAgICBfX0ZVTkNUSU9OX18sIGVycik7CiAKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGF0YV9mbHVzaF9jYWNoZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQorc3RhdGljIGludCBhdGFfZmx1c2hfY2FjaGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKIAl1OCBjbWQ7CiAKQEAgLTQyNzEsMjIgKzQ5ODEsMjEgQEAKIAllbHNlCiAJCWNtZCA9IEFUQV9DTURfRkxVU0g7CiAKLQlyZXR1cm4gYXRhX2RvX3NpbXBsZV9jbWQoYXAsIGRldiwgY21kKTsKKwlyZXR1cm4gYXRhX2RvX3NpbXBsZV9jbWQoZGV2LCBjbWQpOwogfQogCi1zdGF0aWMgaW50IGF0YV9zdGFuZGJ5X2RyaXZlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCitzdGF0aWMgaW50IGF0YV9zdGFuZGJ5X2RyaXZlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCiB7Ci0JcmV0dXJuIGF0YV9kb19zaW1wbGVfY21kKGFwLCBkZXYsIEFUQV9DTURfU1RBTkRCWU5PVzEpOworCXJldHVybiBhdGFfZG9fc2ltcGxlX2NtZChkZXYsIEFUQV9DTURfU1RBTkRCWU5PVzEpOwogfQogCi1zdGF0aWMgaW50IGF0YV9zdGFydF9kcml2ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQorc3RhdGljIGludCBhdGFfc3RhcnRfZHJpdmUoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKLQlyZXR1cm4gYXRhX2RvX3NpbXBsZV9jbWQoYXAsIGRldiwgQVRBX0NNRF9JRExFSU1NRURJQVRFKTsKKwlyZXR1cm4gYXRhX2RvX3NpbXBsZV9jbWQoZGV2LCBBVEFfQ01EX0lETEVJTU1FRElBVEUpOwogfQogCiAvKioKICAqCWF0YV9kZXZpY2VfcmVzdW1lIC0gd2FrZXVwIGEgcHJldmlvdXNseSBzdXNwZW5kZWQgZGV2aWNlcwotICoJQGFwOiBwb3J0IHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvCiAgKglAZGV2OiB0aGUgZGV2aWNlIHRvIHJlc3VtZQogICoKICAqCUtpY2sgdGhlIGRyaXZlIGJhY2sgaW50byBhY3Rpb24sIGJ5IHNlbmRpbmcgaXQgYW4gaWRsZSBpbW1lZGlhdGUKQEAgLTQyOTQsNDAgKzUwMDMsNDcgQEAKICAqCWFuZCBob3N0LgogICoKICAqLwotaW50IGF0YV9kZXZpY2VfcmVzdW1lKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCitpbnQgYXRhX2RldmljZV9yZXN1bWUoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gZGV2LT5hcDsKKwogCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TVVNQRU5ERUQpIHsKKwkJc3RydWN0IGF0YV9kZXZpY2UgKmZhaWxlZF9kZXY7CisKIAkJYXRhX2J1c3lfc2xlZXAoYXAsIEFUQV9UTU9VVF9CT09UX1FVSUNLLCBBVEFfVE1PVVRfQk9PVCk7CiAJCWF0YV9idXN5X3dhaXQoYXAsIEFUQV9CVVNZIHwgQVRBX0RSUSwgMjAwMDAwKTsKKwogCQlhcC0+ZmxhZ3MgJj0gfkFUQV9GTEFHX1NVU1BFTkRFRDsKLQkJYXRhX3NldF9tb2RlKGFwKTsKKwkJd2hpbGUgKGF0YV9zZXRfbW9kZShhcCwgJmZhaWxlZF9kZXYpKQorCQkJYXRhX2Rldl9kaXNhYmxlKGZhaWxlZF9kZXYpOwogCX0KLQlpZiAoIWF0YV9kZXZfcHJlc2VudChkZXYpKQorCWlmICghYXRhX2Rldl9lbmFibGVkKGRldikpCiAJCXJldHVybiAwOwogCWlmIChkZXYtPmNsYXNzID09IEFUQV9ERVZfQVRBKQotCQlhdGFfc3RhcnRfZHJpdmUoYXAsIGRldik7CisJCWF0YV9zdGFydF9kcml2ZShkZXYpOwogCiAJcmV0dXJuIDA7CiB9CiAKIC8qKgogICoJYXRhX2RldmljZV9zdXNwZW5kIC0gcHJlcGFyZSBhIGRldmljZSBmb3Igc3VzcGVuZAotICoJQGFwOiBwb3J0IHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvCiAgKglAZGV2OiB0aGUgZGV2aWNlIHRvIHN1c3BlbmQKICAqCUBzdGF0ZTogdGFyZ2V0IHBvd2VyIG1hbmFnZW1lbnQgc3RhdGUKICAqCiAgKglGbHVzaCB0aGUgY2FjaGUgb24gdGhlIGRyaXZlLCBpZiBhcHByb3ByaWF0ZSwgdGhlbiBpc3N1ZSBhCiAgKglzdGFuZGJ5bm93IGNvbW1hbmQuCiAgKi8KLWludCBhdGFfZGV2aWNlX3N1c3BlbmQoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQoraW50IGF0YV9kZXZpY2Vfc3VzcGVuZChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7Ci0JaWYgKCFhdGFfZGV2X3ByZXNlbnQoZGV2KSkKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gZGV2LT5hcDsKKworCWlmICghYXRhX2Rldl9lbmFibGVkKGRldikpCiAJCXJldHVybiAwOwogCWlmIChkZXYtPmNsYXNzID09IEFUQV9ERVZfQVRBKQotCQlhdGFfZmx1c2hfY2FjaGUoYXAsIGRldik7CisJCWF0YV9mbHVzaF9jYWNoZShkZXYpOwogCiAJaWYgKHN0YXRlLmV2ZW50ICE9IFBNX0VWRU5UX0ZSRUVaRSkKLQkJYXRhX3N0YW5kYnlfZHJpdmUoYXAsIGRldik7CisJCWF0YV9zdGFuZGJ5X2RyaXZlKGRldik7CiAJYXAtPmZsYWdzIHw9IEFUQV9GTEFHX1NVU1BFTkRFRDsKIAlyZXR1cm4gMDsKIH0KQEAgLTQ0MTUsNiArNTEzMSwzOCBAQAogfQogCiAvKioKKyAqCWF0YV9kZXZfaW5pdCAtIEluaXRpYWxpemUgYW4gYXRhX2RldmljZSBzdHJ1Y3R1cmUKKyAqCUBkZXY6IERldmljZSBzdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6ZQorICoKKyAqCUluaXRpYWxpemUgQGRldiBpbiBwcmVwYXJhdGlvbiBmb3IgcHJvYmluZy4KKyAqCisgKglMT0NLSU5HOgorICoJSW5oZXJpdGVkIGZyb20gY2FsbGVyLgorICovCit2b2lkIGF0YV9kZXZfaW5pdChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBTQVRBIHNwZCBsaW1pdCBpcyBib3VuZCB0byB0aGUgZmlyc3QgZGV2aWNlICovCisJYXAtPnNhdGFfc3BkX2xpbWl0ID0gYXAtPmh3X3NhdGFfc3BkX2xpbWl0OworCisJLyogSGlnaCBiaXRzIG9mIGRldi0+ZmxhZ3MgYXJlIHVzZWQgdG8gcmVjb3JkIHdhcm0gcGx1ZworCSAqIHJlcXVlc3RzIHdoaWNoIG9jY3VyIGFzeW5jaHJvbm91c2x5LiAgU3luY2hyb25pemUgdXNpbmcKKwkgKiBob3N0X3NldCBsb2NrLgorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisJZGV2LT5mbGFncyAmPSB+QVRBX0RGTEFHX0lOSVRfTUFTSzsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CisKKwltZW1zZXQoKHZvaWQgKilkZXYgKyBBVEFfREVWSUNFX0NMRUFSX09GRlNFVCwgMCwKKwkgICAgICAgc2l6ZW9mKCpkZXYpIC0gQVRBX0RFVklDRV9DTEVBUl9PRkZTRVQpOworCWRldi0+cGlvX21hc2sgPSBVSU5UX01BWDsKKwlkZXYtPm13ZG1hX21hc2sgPSBVSU5UX01BWDsKKwlkZXYtPnVkbWFfbWFzayA9IFVJTlRfTUFYOworfQorCisvKioKICAqCWF0YV9ob3N0X2luaXQgLSBJbml0aWFsaXplIGFuIGF0YV9wb3J0IHN0cnVjdHVyZQogICoJQGFwOiBTdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6ZQogICoJQGhvc3Q6IGFzc29jaWF0ZWQgU0NTSSBtaWQtbGF5ZXIgc3RydWN0dXJlCkBAIC00NDI4LDcgKzUxNzYsNiBAQAogICoJTE9DS0lORzoKICAqCUluaGVyaXRlZCBmcm9tIGNhbGxlci4KICAqLwotCiBzdGF0aWMgdm9pZCBhdGFfaG9zdF9pbml0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsCiAJCQkgIHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0LAogCQkJICBjb25zdCBzdHJ1Y3QgYXRhX3Byb2JlX2VudCAqZW50LCB1bnNpZ25lZCBpbnQgcG9ydF9ubykKQEAgLTQ0NDEsNyArNTE4OCw4IEBACiAJaG9zdC0+dW5pcXVlX2lkID0gYXRhX3VuaXF1ZV9pZCsrOwogCWhvc3QtPm1heF9jbWRfbGVuID0gMTI7CiAKLQlhcC0+ZmxhZ3MgPSBBVEFfRkxBR19QT1JUX0RJU0FCTEVEOworCWFwLT5sb2NrID0gJmhvc3Rfc2V0LT5sb2NrOworCWFwLT5mbGFncyA9IEFUQV9GTEFHX0RJU0FCTEVEOwogCWFwLT5pZCA9IGhvc3QtPnVuaXF1ZV9pZDsKIAlhcC0+aG9zdCA9IGhvc3Q7CiAJYXAtPmN0bCA9IEFUQV9ERVZDVExfT0JTOwpAQCAtNDQ1NSwxOSArNTIwMywzNSBAQAogCWFwLT51ZG1hX21hc2sgPSBlbnQtPnVkbWFfbWFzazsKIAlhcC0+ZmxhZ3MgfD0gZW50LT5ob3N0X2ZsYWdzOwogCWFwLT5vcHMgPSBlbnQtPnBvcnRfb3BzOwotCWFwLT5jYmwgPSBBVEFfQ0JMX05PTkU7CisJYXAtPmh3X3NhdGFfc3BkX2xpbWl0ID0gVUlOVF9NQVg7CiAJYXAtPmFjdGl2ZV90YWcgPSBBVEFfVEFHX1BPSVNPTjsKIAlhcC0+bGFzdF9jdGwgPSAweEZGOwogCisjaWYgZGVmaW5lZChBVEFfVkVSQk9TRV9ERUJVRykKKwkvKiB0dXJuIG9uIGFsbCBkZWJ1Z2dpbmcgbGV2ZWxzICovCisJYXAtPm1zZ19lbmFibGUgPSAweDAwRkY7CisjZWxpZiBkZWZpbmVkKEFUQV9ERUJVRykKKwlhcC0+bXNnX2VuYWJsZSA9IEFUQV9NU0dfRFJWIHwgQVRBX01TR19JTkZPIHwgQVRBX01TR19DVEwgfCBBVEFfTVNHX1dBUk4gfCBBVEFfTVNHX0VSUjsKKyNlbHNlIAorCWFwLT5tc2dfZW5hYmxlID0gQVRBX01TR19EUlYgfCBBVEFfTVNHX0VSUiB8IEFUQV9NU0dfV0FSTjsKKyNlbmRpZgorCiAJSU5JVF9XT1JLKCZhcC0+cG9ydF90YXNrLCBOVUxMLCBOVUxMKTsKKwlJTklUX1dPUksoJmFwLT5ob3RwbHVnX3Rhc2ssIGF0YV9zY3NpX2hvdHBsdWcsIGFwKTsKKwlJTklUX1dPUksoJmFwLT5zY3NpX3Jlc2Nhbl90YXNrLCBhdGFfc2NzaV9kZXZfcmVzY2FuLCBhcCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFwLT5laF9kb25lX3EpOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmFwLT5laF93YWl0X3EpOworCisJLyogc2V0IGNhYmxlIHR5cGUgKi8KKwlhcC0+Y2JsID0gQVRBX0NCTF9OT05FOworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TQVRBKQorCQlhcC0+Y2JsID0gQVRBX0NCTF9TQVRBOwogCiAJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKSB7CiAJCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtpXTsKKwkJZGV2LT5hcCA9IGFwOwogCQlkZXYtPmRldm5vID0gaTsKLQkJZGV2LT5waW9fbWFzayA9IFVJTlRfTUFYOwotCQlkZXYtPm13ZG1hX21hc2sgPSBVSU5UX01BWDsKLQkJZGV2LT51ZG1hX21hc2sgPSBVSU5UX01BWDsKKwkJYXRhX2Rldl9pbml0KGRldik7CiAJfQogCiAjaWZkZWYgQVRBX0lSUV9UUkFQCkBAIC00NTAzLDcgKzUyNjcsNyBAQAogCiAJRFBSSU5USygiRU5URVJcbiIpOwogCi0JaWYgKCFlbnQtPnBvcnRfb3BzLT5wcm9iZV9yZXNldCAmJgorCWlmICghZW50LT5wb3J0X29wcy0+ZXJyb3JfaGFuZGxlciAmJgogCSAgICAhKGVudC0+aG9zdF9mbGFncyAmIChBVEFfRkxBR19TQVRBX1JFU0VUIHwgQVRBX0ZMQUdfU1JTVCkpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IG5vIHJlc2V0IG1lY2hhbmlzbSBhdmFpbGFibGVcbiIsCiAJCSAgICAgICBwb3J0X25vKTsKQEAgLTQ1MTYsNyArNTI4MCw3IEBACiAKIAlob3N0LT50cmFuc3BvcnR0ID0gJmF0YV9zY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZTsKIAotCWFwID0gKHN0cnVjdCBhdGFfcG9ydCAqKSAmaG9zdC0+aG9zdGRhdGFbMF07CisJYXAgPSBhdGFfc2hvc3RfdG9fcG9ydChob3N0KTsKIAogCWF0YV9ob3N0X2luaXQoYXAsIGhvc3QsIGhvc3Rfc2V0LCBlbnQsIHBvcnRfbm8pOwogCkBAIC00NTQ5LDEyICs1MzEzLDEyIEBACiAgKglSRVRVUk5TOgogICoJTnVtYmVyIG9mIHBvcnRzIHJlZ2lzdGVyZWQuICBaZXJvIG9uIGVycm9yIChubyBwb3J0cyByZWdpc3RlcmVkKS4KICAqLwotCiBpbnQgYXRhX2RldmljZV9hZGQoY29uc3Qgc3RydWN0IGF0YV9wcm9iZV9lbnQgKmVudCkKIHsKIAl1bnNpZ25lZCBpbnQgY291bnQgPSAwLCBpOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGVudC0+ZGV2OwogCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0OworCWludCByYzsKIAogCURQUklOVEsoIkVOVEVSXG4iKTsKIAkvKiBhbGxvYyBhIGNvbnRhaW5lciBmb3Igb3VyIGxpc3Qgb2YgQVRBIHBvcnRzIChidXNlcykgKi8KQEAgLTQ1ODcsMTggKzUzNTEsMTggQEAKIAkJCQkoYXAtPnBpb19tYXNrIDw8IEFUQV9TSElGVF9QSU8pOwogCiAJCS8qIHByaW50IHBlci1wb3J0IGluZm8gdG8gZG1lc2cgKi8KLQkJcHJpbnRrKEtFUk5fSU5GTyAiYXRhJXU6ICVjQVRBIG1heCAlcyBjbWQgMHglbFggY3RsIDB4JWxYICIKLQkJCQkgImJtZG1hIDB4JWxYIGlycSAlbHVcbiIsCi0JCQlhcC0+aWQsCi0JCQlhcC0+ZmxhZ3MgJiBBVEFfRkxBR19TQVRBID8gJ1MnIDogJ1AnLAotCQkJYXRhX21vZGVfc3RyaW5nKHhmZXJfbW9kZV9tYXNrKSwKLQkgICAgICAgCQlhcC0+aW9hZGRyLmNtZF9hZGRyLAotCSAgICAgICAJCWFwLT5pb2FkZHIuY3RsX2FkZHIsCi0JICAgICAgIAkJYXAtPmlvYWRkci5ibWRtYV9hZGRyLAotCSAgICAgICAJCWVudC0+aXJxKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sICIlY0FUQSBtYXggJXMgY21kIDB4JWxYICIKKwkJCQkiY3RsIDB4JWxYIGJtZG1hIDB4JWxYIGlycSAlbHVcbiIsCisJCQkJYXAtPmZsYWdzICYgQVRBX0ZMQUdfU0FUQSA/ICdTJyA6ICdQJywKKwkJCQlhdGFfbW9kZV9zdHJpbmcoeGZlcl9tb2RlX21hc2spLAorCQkJCWFwLT5pb2FkZHIuY21kX2FkZHIsCisJCQkJYXAtPmlvYWRkci5jdGxfYWRkciwKKwkJCQlhcC0+aW9hZGRyLmJtZG1hX2FkZHIsCisJCQkJZW50LT5pcnEpOwogCiAJCWF0YV9jaGtfc3RhdHVzKGFwKTsKIAkJaG9zdF9zZXQtPm9wcy0+aXJxX2NsZWFyKGFwKTsKKwkJYXRhX2VoX2ZyZWV6ZV9wb3J0KGFwKTsJLyogZnJlZXplIHBvcnQgYmVmb3JlIHJlcXVlc3RpbmcgSVJRICovCiAJCWNvdW50Kys7CiAJfQogCkBAIC00NjA2LDQxICs1MzcwLDcyIEBACiAJCWdvdG8gZXJyX2ZyZWVfcmV0OwogCiAJLyogb2J0YWluIGlycSwgdGhhdCBpcyBzaGFyZWQgYmV0d2VlbiBjaGFubmVscyAqLwotCWlmIChyZXF1ZXN0X2lycShlbnQtPmlycSwgZW50LT5wb3J0X29wcy0+aXJxX2hhbmRsZXIsIGVudC0+aXJxX2ZsYWdzLAotCQkJRFJWX05BTUUsIGhvc3Rfc2V0KSkKKwlyYyA9IHJlcXVlc3RfaXJxKGVudC0+aXJxLCBlbnQtPnBvcnRfb3BzLT5pcnFfaGFuZGxlciwgZW50LT5pcnFfZmxhZ3MsCisJCQkgRFJWX05BTUUsIGhvc3Rfc2V0KTsKKwlpZiAocmMpIHsKKwkJZGV2X3ByaW50ayhLRVJOX0VSUiwgZGV2LCAiaXJxICVsdSByZXF1ZXN0IGZhaWxlZDogJWRcbiIsCisJCQkgICBlbnQtPmlycSwgcmMpOwogCQlnb3RvIGVycl9vdXQ7CisJfQogCiAJLyogcGVyZm9ybSBlYWNoIHByb2JlIHN5bmNocm9ub3VzbHkgKi8KIAlEUFJJTlRLKCJwcm9iZSBiZWdpblxuIik7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKIAkJc3RydWN0IGF0YV9wb3J0ICphcDsKKwkJdTMyIHNjb250cm9sOwogCQlpbnQgcmM7CiAKIAkJYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CiAKLQkJRFBSSU5USygiYXRhJXU6IGJ1cyBwcm9iZSBiZWdpblxuIiwgYXAtPmlkKTsKLQkJcmMgPSBhdGFfYnVzX3Byb2JlKGFwKTsKLQkJRFBSSU5USygiYXRhJXU6IGJ1cyBwcm9iZSBlbmRcbiIsIGFwLT5pZCk7Ci0KLQkJaWYgKHJjKSB7Ci0JCQkvKiBGSVhNRTogZG8gc29tZXRoaW5nIHVzZWZ1bCBoZXJlPwotCQkJICogQ3VycmVudCBsaWJhdGEgYmVoYXZpb3Igd2lsbAotCQkJICogdGVhciBkb3duIGV2ZXJ5dGhpbmcgd2hlbgotCQkJICogdGhlIG1vZHVsZSBpcyByZW1vdmVkCi0JCQkgKiBvciB0aGUgaC93IGlzIHVucGx1Z2dlZC4KLQkJCSAqLworCQkvKiBpbml0IHNhdGFfc3BkX2xpbWl0IHRvIHRoZSBjdXJyZW50IHZhbHVlICovCisJCWlmIChzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfQ09OVFJPTCwgJnNjb250cm9sKSA9PSAwKSB7CisJCQlpbnQgc3BkID0gKHNjb250cm9sID4+IDQpICYgMHhmOworCQkJYXAtPmh3X3NhdGFfc3BkX2xpbWl0ICY9ICgxIDw8IHNwZCkgLSAxOwogCQl9CisJCWFwLT5zYXRhX3NwZF9saW1pdCA9IGFwLT5od19zYXRhX3NwZF9saW1pdDsKIAogCQlyYyA9IHNjc2lfYWRkX2hvc3QoYXAtPmhvc3QsIGRldik7CiAJCWlmIChyYykgewotCQkJcHJpbnRrKEtFUk5fRVJSICJhdGEldTogc2NzaV9hZGRfaG9zdCBmYWlsZWRcbiIsCi0JCQkgICAgICAgYXAtPmlkKTsKKwkJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJzY3NpX2FkZF9ob3N0IGZhaWxlZFxuIik7CiAJCQkvKiBGSVhNRTogZG8gc29tZXRoaW5nIHVzZWZ1bCBoZXJlICovCiAJCQkvKiBGSVhNRTogaGFuZGxlIHVuY29uZGl0aW9uYWwgY2FsbHMgdG8KIAkJCSAqIHNjc2lfc2Nhbl9ob3N0IGFuZCBhdGFfaG9zdF9yZW1vdmUsIGJlbG93LAogCQkJICogYXQgdGhlIHZlcnkgbGVhc3QKIAkJCSAqLwogCQl9CisKKwkJaWYgKGFwLT5vcHMtPmVycm9yX2hhbmRsZXIpIHsKKwkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJCWF0YV9wb3J0X3Byb2JlKGFwKTsKKworCQkJLyoga2ljayBFSCBmb3IgYm9vdCBwcm9iaW5nICovCisJCQlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCisJCQlhcC0+ZWhfaW5mby5wcm9iZV9tYXNrID0gKDEgPDwgQVRBX01BWF9ERVZJQ0VTKSAtIDE7CisJCQlhcC0+ZWhfaW5mby5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKworCQkJYXAtPmZsYWdzIHw9IEFUQV9GTEFHX0xPQURJTkc7CisJCQlhdGFfcG9ydF9zY2hlZHVsZV9laChhcCk7CisKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCQkJLyogd2FpdCBmb3IgRUggdG8gZmluaXNoICovCisJCQlhdGFfcG9ydF93YWl0X2VoKGFwKTsKKwkJfSBlbHNlIHsKKwkJCURQUklOVEsoImF0YSV1OiBidXMgcHJvYmUgYmVnaW5cbiIsIGFwLT5pZCk7CisJCQlyYyA9IGF0YV9idXNfcHJvYmUoYXApOworCQkJRFBSSU5USygiYXRhJXU6IGJ1cyBwcm9iZSBlbmRcbiIsIGFwLT5pZCk7CisKKwkJCWlmIChyYykgeworCQkJCS8qIEZJWE1FOiBkbyBzb21ldGhpbmcgdXNlZnVsIGhlcmU/CisJCQkJICogQ3VycmVudCBsaWJhdGEgYmVoYXZpb3Igd2lsbAorCQkJCSAqIHRlYXIgZG93biBldmVyeXRoaW5nIHdoZW4KKwkJCQkgKiB0aGUgbW9kdWxlIGlzIHJlbW92ZWQKKwkJCQkgKiBvciB0aGUgaC93IGlzIHVucGx1Z2dlZC4KKwkJCQkgKi8KKwkJCX0KKwkJfQogCX0KIAogCS8qIHByb2JlcyBhcmUgZG9uZSwgbm93IHNjYW4gZWFjaCBwb3J0J3MgZGlzayhzKSAqLwpAQCAtNDY2OCw2ICs1NDYzLDYzIEBACiB9CiAKIC8qKgorICoJYXRhX3BvcnRfZGV0YWNoIC0gRGV0YWNoIEFUQSBwb3J0IGluIHByZXByYXRpb24gb2YgZGV2aWNlIHJlbW92YWwKKyAqCUBhcDogQVRBIHBvcnQgdG8gYmUgZGV0YWNoZWQKKyAqCisgKglEZXRhY2ggYWxsIEFUQSBkZXZpY2VzIGFuZCB0aGUgYXNzb2NpYXRlZCBTQ1NJIGRldmljZXMgb2YgQGFwOworICoJdGhlbiwgcmVtb3ZlIHRoZSBhc3NvY2lhdGVkIFNDU0kgaG9zdC4gIEBhcCBpcyBndWFyYW50ZWVkIHRvCisgKgliZSBxdWllc2NlbnQgb24gcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbi4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCit2b2lkIGF0YV9wb3J0X2RldGFjaChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IGk7CisKKwlpZiAoIWFwLT5vcHMtPmVycm9yX2hhbmRsZXIpCisJCXJldHVybjsKKworCS8qIHRlbGwgRUggd2UncmUgbGVhdmluZyAmIGZsdXNoIEVIICovCisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfVU5MT0FESU5HOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCWF0YV9wb3J0X3dhaXRfZWgoYXApOworCisJLyogRUggaXMgbm93IGd1YXJhbnRlZWQgdG8gc2VlIFVOTE9BRElORywgc28gbm8gbmV3IGRldmljZQorCSAqIHdpbGwgYmUgYXR0YWNoZWQuICBEaXNhYmxlIGFsbCBleGlzdGluZyBkZXZpY2VzLgorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCWF0YV9kZXZfZGlzYWJsZSgmYXAtPmRldmljZVtpXSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CisKKwkvKiBGaW5hbCBmcmVlemUgJiBFSC4gIEFsbCBpbi1mbGlnaHQgY29tbWFuZHMgYXJlIGFib3J0ZWQuICBFSAorCSAqIHdpbGwgYmUgc2tpcHBlZCBhbmQgcmV0cmlhbHMgd2lsbCBiZSB0ZXJtaW5hdGVkIHdpdGggYmFkCisJICogdGFyZ2V0LgorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisJYXRhX3BvcnRfZnJlZXplKGFwKTsJLyogd29uJ3QgYmUgdGhhd2VkICovCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCisJYXRhX3BvcnRfd2FpdF9laChhcCk7CisKKwkvKiBGbHVzaCBob3RwbHVnIHRhc2suICBUaGUgc2VxdWVuY2UgaXMgc2ltaWxhciB0bworCSAqIGF0YV9wb3J0X2ZsdXNoX3Rhc2soKS4KKwkgKi8KKwlmbHVzaF93b3JrcXVldWUoYXRhX2F1eF93cSk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmYXAtPmhvdHBsdWdfdGFzayk7CisJZmx1c2hfd29ya3F1ZXVlKGF0YV9hdXhfd3EpOworCisJLyogcmVtb3ZlIHRoZSBhc3NvY2lhdGVkIFNDU0kgaG9zdCAqLworCXNjc2lfcmVtb3ZlX2hvc3QoYXAtPmhvc3QpOworfQorCisvKioKICAqCWF0YV9ob3N0X3NldF9yZW1vdmUgLSBQQ0kgbGF5ZXIgY2FsbGJhY2sgZm9yIGRldmljZSByZW1vdmFsCiAgKglAaG9zdF9zZXQ6IEFUQSBob3N0IHNldCB0aGF0IHdhcyByZW1vdmVkCiAgKgpAQCAtNDY4MCwxOCArNTUzMiwxNSBAQAogCiB2b2lkIGF0YV9ob3N0X3NldF9yZW1vdmUoc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQpCiB7Ci0Jc3RydWN0IGF0YV9wb3J0ICphcDsKIAl1bnNpZ25lZCBpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBob3N0X3NldC0+bl9wb3J0czsgaSsrKSB7Ci0JCWFwID0gaG9zdF9zZXQtPnBvcnRzW2ldOwotCQlzY3NpX3JlbW92ZV9ob3N0KGFwLT5ob3N0KTsKLQl9CisJZm9yIChpID0gMDsgaSA8IGhvc3Rfc2V0LT5uX3BvcnRzOyBpKyspCisJCWF0YV9wb3J0X2RldGFjaChob3N0X3NldC0+cG9ydHNbaV0pOwogCiAJZnJlZV9pcnEoaG9zdF9zZXQtPmlycSwgaG9zdF9zZXQpOwogCiAJZm9yIChpID0gMDsgaSA8IGhvc3Rfc2V0LT5uX3BvcnRzOyBpKyspIHsKLQkJYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CisJCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CiAKIAkJYXRhX3Njc2lfcmVsZWFzZShhcC0+aG9zdCk7CiAKQEAgLTQ3MjksMTUgKzU1NzgsMTIgQEAKIAogaW50IGF0YV9zY3NpX3JlbGVhc2Uoc3RydWN0IFNjc2lfSG9zdCAqaG9zdCkKIHsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gKHN0cnVjdCBhdGFfcG9ydCAqKSAmaG9zdC0+aG9zdGRhdGFbMF07Ci0JaW50IGk7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGF0YV9zaG9zdF90b19wb3J0KGhvc3QpOwogCiAJRFBSSU5USygiRU5URVJcbiIpOwogCiAJYXAtPm9wcy0+cG9ydF9kaXNhYmxlKGFwKTsKIAlhdGFfaG9zdF9yZW1vdmUoYXAsIDApOwotCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykKLQkJa2ZyZWUoYXAtPmRldmljZVtpXS5pZCk7CiAKIAlEUFJJTlRLKCJFWElUXG4iKTsKIAlyZXR1cm4gMTsKQEAgLTQ3OTcsOCArNTY0MywxMiBAQAogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaV9kZXZfdG9fZGV2KHBkZXYpOwogCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQyID0gaG9zdF9zZXQtPm5leHQ7CiAKIAlhdGFfaG9zdF9zZXRfcmVtb3ZlKGhvc3Rfc2V0KTsKKwlpZiAoaG9zdF9zZXQyKQorCQlhdGFfaG9zdF9zZXRfcmVtb3ZlKGhvc3Rfc2V0Mik7CisKIAlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOwogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKIAlkZXZfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKQEAgLTQ4NjMsNiArNTcxMywxMiBAQAogCWlmICghYXRhX3dxKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWF0YV9hdXhfd3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgiYXRhX2F1eCIpOworCWlmICghYXRhX2F1eF93cSkgeworCQlkZXN0cm95X3dvcmtxdWV1ZShhdGFfd3EpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKIAlwcmludGsoS0VSTl9ERUJVRyAibGliYXRhIHZlcnNpb24gIiBEUlZfVkVSU0lPTiAiIGxvYWRlZC5cbiIpOwogCXJldHVybiAwOwogfQpAQCAtNDg3MCw2ICs1NzI2LDcgQEAKIHN0YXRpYyB2b2lkIF9fZXhpdCBhdGFfZXhpdCh2b2lkKQogewogCWRlc3Ryb3lfd29ya3F1ZXVlKGF0YV93cSk7CisJZGVzdHJveV93b3JrcXVldWUoYXRhX2F1eF93cSk7CiB9CiAKIG1vZHVsZV9pbml0KGF0YV9pbml0KTsKQEAgLTQ4OTYsNiArNTc1Myw1MiBAQAogCXJldHVybiByYzsKIH0KIAorLyoqCisgKglhdGFfd2FpdF9yZWdpc3RlciAtIHdhaXQgdW50aWwgcmVnaXN0ZXIgdmFsdWUgY2hhbmdlcworICoJQHJlZzogSU8tbWFwcGVkIHJlZ2lzdGVyCisgKglAbWFzazogTWFzayB0byBhcHBseSB0byByZWFkIHJlZ2lzdGVyIHZhbHVlCisgKglAdmFsOiBXYWl0IGNvbmRpdGlvbgorICoJQGludGVydmFsX21zZWM6IHBvbGxpbmcgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzCisgKglAdGltZW91dF9tc2VjOiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcworICoKKyAqCVdhaXRpbmcgZm9yIHNvbWUgYml0cyBvZiByZWdpc3RlciB0byBjaGFuZ2UgaXMgYSBjb21tb24KKyAqCW9wZXJhdGlvbiBmb3IgQVRBIGNvbnRyb2xsZXJzLiAgVGhpcyBmdW5jdGlvbiByZWFkcyAzMmJpdCBMRQorICoJSU8tbWFwcGVkIHJlZ2lzdGVyIEByZWcgYW5kIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbi4KKyAqCisgKgkoKkByZWcgJiBtYXNrKSAhPSB2YWwKKyAqCisgKglJZiB0aGUgY29uZGl0aW9uIGlzIG1ldCwgaXQgcmV0dXJuczsgb3RoZXJ3aXNlLCB0aGUgcHJvY2VzcyBpcworICoJcmVwZWF0ZWQgYWZ0ZXIgQGludGVydmFsX21zZWMgdW50aWwgdGltZW91dC4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApCisgKgorICoJUkVUVVJOUzoKKyAqCVRoZSBmaW5hbCByZWdpc3RlciB2YWx1ZS4KKyAqLwordTMyIGF0YV93YWl0X3JlZ2lzdGVyKHZvaWQgX19pb21lbSAqcmVnLCB1MzIgbWFzaywgdTMyIHZhbCwKKwkJICAgICAgdW5zaWduZWQgbG9uZyBpbnRlcnZhbF9tc2VjLAorCQkgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXRfbXNlYykKK3sKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CisJdTMyIHRtcDsKKworCXRtcCA9IGlvcmVhZDMyKHJlZyk7CisKKwkvKiBDYWxjdWxhdGUgdGltZW91dCBfYWZ0ZXJfIHRoZSBmaXJzdCByZWFkIHRvIG1ha2Ugc3VyZQorCSAqIHByZWNlZGluZyB3cml0ZXMgcmVhY2ggdGhlIGNvbnRyb2xsZXIgYmVmb3JlIHN0YXJ0aW5nIHRvCisJICogZWF0IGF3YXkgdGhlIHRpbWVvdXQuCisJICovCisJdGltZW91dCA9IGppZmZpZXMgKyAodGltZW91dF9tc2VjICogSFopIC8gMTAwMDsKKworCXdoaWxlICgodG1wICYgbWFzaykgPT0gdmFsICYmIHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKSB7CisJCW1zbGVlcChpbnRlcnZhbF9tc2VjKTsKKwkJdG1wID0gaW9yZWFkMzIocmVnKTsKKwl9CisKKwlyZXR1cm4gdG1wOworfQorCiAvKgogICogbGliYXRhIGlzIGVzc2VudGlhbGx5IGEgbGlicmFyeSBvZiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvcgogICogbG93LWxldmVsIEFUQSBob3N0IGNvbnRyb2xsZXIgZHJpdmVycy4gIEFzIHN1Y2gsIHRoZSBBUEkvQUJJIGlzCkBAIC00OTAzLDE1ICs1ODA2LDIwIEBACiAgKiBEbyBub3QgZGVwZW5kIG9uIEFCSS9BUEkgc3RhYmlsaXR5LgogICovCiAKK0VYUE9SVF9TWU1CT0xfR1BMKHNhdGFfZGViX3RpbWluZ19ib290KTsKK0VYUE9SVF9TWU1CT0xfR1BMKHNhdGFfZGViX3RpbWluZ19laCk7CitFWFBPUlRfU1lNQk9MX0dQTChzYXRhX2RlYl90aW1pbmdfYmVmb3JlX2ZzcnN0KTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zdGRfYmlvc19wYXJhbSk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfc3RkX3BvcnRzKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9kZXZpY2VfYWRkKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9wb3J0X2RldGFjaCk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfaG9zdF9zZXRfcmVtb3ZlKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zZ19pbml0KTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zZ19pbml0X29uZSk7Ci1FWFBPUlRfU1lNQk9MX0dQTChfX2F0YV9xY19jb21wbGV0ZSk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfaHNtX21vdmUpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3FjX2NvbXBsZXRlKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9xY19jb21wbGV0ZV9tdWx0aXBsZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfcWNfaXNzdWVfcHJvdCk7Ci1FWFBPUlRfU1lNQk9MX0dQTChhdGFfZW5nX3RpbWVvdXQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3RmX2xvYWQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3RmX3JlYWQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX25vb3BfZGV2X3NlbGVjdCk7CkBAIC00OTI1LDYgKzU4MzMsOSBAQAogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfc3RvcCk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfaG9zdF9zdG9wKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9pbnRlcnJ1cHQpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX21taW9fZGF0YV94ZmVyKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9waW9fZGF0YV94ZmVyKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9waW9fZGF0YV94ZmVyX25vaXJxKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9xY19wcmVwKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9ub29wX3FjX3ByZXApOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2JtZG1hX3NldHVwKTsKQEAgLTQ5MzIsMzMgKzU4NDMsNDYgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9ibWRtYV9pcnFfY2xlYXIpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2JtZG1hX3N0YXR1cyk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfYm1kbWFfc3RvcCk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfYm1kbWFfZnJlZXplKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9ibWRtYV90aGF3KTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9ibWRtYV9kcml2ZV9laCk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfYm1kbWFfZXJyb3JfaGFuZGxlcik7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfcHJvYmUpOworRVhQT1JUX1NZTUJPTF9HUEwoc2F0YV9zZXRfc3BkKTsKK0VYUE9SVF9TWU1CT0xfR1BMKHNhdGFfcGh5X2RlYm91bmNlKTsKK0VYUE9SVF9TWU1CT0xfR1BMKHNhdGFfcGh5X3Jlc3VtZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChzYXRhX3BoeV9yZXNldCk7CiBFWFBPUlRfU1lNQk9MX0dQTChfX3NhdGFfcGh5X3Jlc2V0KTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9idXNfcmVzZXQpOwotRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3N0ZF9wcm9iZWluaXQpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3N0ZF9wcmVyZXNldCk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfc3RkX3NvZnRyZXNldCk7CiBFWFBPUlRfU1lNQk9MX0dQTChzYXRhX3N0ZF9oYXJkcmVzZXQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3N0ZF9wb3N0cmVzZXQpOwotRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3N0ZF9wcm9iZV9yZXNldCk7Ci1FWFBPUlRfU1lNQk9MX0dQTChhdGFfZHJpdmVfcHJvYmVfcmVzZXQpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2Rldl9yZXZhbGlkYXRlKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9kZXZfY2xhc3NpZnkpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2Rldl9wYWlyKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9wb3J0X2Rpc2FibGUpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3JhdGVsaW1pdCk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfd2FpdF9yZWdpc3Rlcik7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfYnVzeV9zbGVlcCk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfcG9ydF9xdWV1ZV90YXNrKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX2lvY3RsKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX3F1ZXVlY21kKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX3NsYXZlX2NvbmZpZyk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfc2NzaV9zbGF2ZV9kZXN0cm95KTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfc2NzaV9yZWxlYXNlKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9ob3N0X2ludHIpOworRVhQT1JUX1NZTUJPTF9HUEwoc2F0YV9zY3JfdmFsaWQpOworRVhQT1JUX1NZTUJPTF9HUEwoc2F0YV9zY3JfcmVhZCk7CitFWFBPUlRfU1lNQk9MX0dQTChzYXRhX3Njcl93cml0ZSk7CitFWFBPUlRfU1lNQk9MX0dQTChzYXRhX3Njcl93cml0ZV9mbHVzaCk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfcG9ydF9vbmxpbmUpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfb2ZmbGluZSk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfaWRfc3RyaW5nKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9pZF9jX3N0cmluZyk7CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfc2NzaV9zaW11bGF0ZSk7Ci1FWFBPUlRfU1lNQk9MX0dQTChhdGFfZWhfcWNfY29tcGxldGUpOwotRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2VoX3FjX3JldHJ5KTsKIAogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3Bpb19uZWVkX2lvcmR5KTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV90aW1pbmdfY29tcHV0ZSk7CkBAIC00OTgwLDMgKzU5MDQsMTMgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9kZXZpY2VfcmVzdW1lKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX2RldmljZV9zdXNwZW5kKTsKIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9zY3NpX2RldmljZV9yZXN1bWUpOworCitFWFBPUlRfU1lNQk9MX0dQTChhdGFfZW5nX3RpbWVvdXQpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfc2NoZWR1bGVfZWgpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfYWJvcnQpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX3BvcnRfZnJlZXplKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9laF9mcmVlemVfcG9ydCk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfZWhfdGhhd19wb3J0KTsKK0VYUE9SVF9TWU1CT0xfR1BMKGF0YV9laF9xY19jb21wbGV0ZSk7CitFWFBPUlRfU1lNQk9MX0dQTChhdGFfZWhfcWNfcmV0cnkpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2RvX2VoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJhdGEtZWguYyBiL2RyaXZlcnMvc2NzaS9saWJhdGEtZWguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjMzODU5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zY3NpL2xpYmF0YS1laC5jCkBAIC0wLDAgKzEsMTkwNyBAQAorLyoKKyAqICBsaWJhdGEtZWguYyAtIGxpYmF0YSBlcnJvciBoYW5kbGluZworICoKKyAqICBNYWludGFpbmVkIGJ5OiAgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgorICogICAgCQkgICAgUGxlYXNlIEFMV0FZUyBjb3B5IGxpbnV4LWlkZUB2Z2VyLmtlcm5lbC5vcmcKKyAqCQkgICAgb24gZW1haWxzLgorICoKKyAqICBDb3B5cmlnaHQgMjAwNiBUZWp1biBIZW8gPGh0ZWp1bkBnbWFpbC5jb20+CisgKgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksCisgKiAgVVNBLgorICoKKyAqCisgKiAgbGliYXRhIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIHZpYSAnbWFrZSB7cHN8cGRmfWRvY3MnLAorICogIGFzIERvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEuKgorICoKKyAqICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly93d3cudDEzLm9yZy8gYW5kCisgKiAgaHR0cDovL3d3dy5zYXRhLWlvLm9yZy8KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CisjaW5jbHVkZSAic2NzaV90cmFuc3BvcnRfYXBpLmgiCisKKyNpbmNsdWRlIDxsaW51eC9saWJhdGEuaD4KKworI2luY2x1ZGUgImxpYmF0YS5oIgorCitzdGF0aWMgdm9pZCBfX2F0YV9wb3J0X2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIGF0YV9laF9maW5pc2goc3RydWN0IGF0YV9wb3J0ICphcCk7CisKK3N0YXRpYyB2b2lkIGF0YV9lcmluZ19yZWNvcmQoc3RydWN0IGF0YV9lcmluZyAqZXJpbmcsIGludCBpc19pbywKKwkJCSAgICAgdW5zaWduZWQgaW50IGVycl9tYXNrKQoreworCXN0cnVjdCBhdGFfZXJpbmdfZW50cnkgKmVudDsKKworCVdBUk5fT04oIWVycl9tYXNrKTsKKworCWVyaW5nLT5jdXJzb3IrKzsKKwllcmluZy0+Y3Vyc29yICU9IEFUQV9FUklOR19TSVpFOworCisJZW50ID0gJmVyaW5nLT5yaW5nW2VyaW5nLT5jdXJzb3JdOworCWVudC0+aXNfaW8gPSBpc19pbzsKKwllbnQtPmVycl9tYXNrID0gZXJyX21hc2s7CisJZW50LT50aW1lc3RhbXAgPSBnZXRfamlmZmllc182NCgpOworfQorCitzdGF0aWMgc3RydWN0IGF0YV9lcmluZ19lbnRyeSAqIGF0YV9lcmluZ190b3Aoc3RydWN0IGF0YV9lcmluZyAqZXJpbmcpCit7CisJc3RydWN0IGF0YV9lcmluZ19lbnRyeSAqZW50ID0gJmVyaW5nLT5yaW5nW2VyaW5nLT5jdXJzb3JdOworCWlmICghZW50LT5lcnJfbWFzaykKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIGVudDsKK30KKworc3RhdGljIGludCBhdGFfZXJpbmdfbWFwKHN0cnVjdCBhdGFfZXJpbmcgKmVyaW5nLAorCQkJIGludCAoKm1hcF9mbikoc3RydWN0IGF0YV9lcmluZ19lbnRyeSAqLCB2b2lkICopLAorCQkJIHZvaWQgKmFyZykKK3sKKwlpbnQgaWR4LCByYyA9IDA7CisJc3RydWN0IGF0YV9lcmluZ19lbnRyeSAqZW50OworCisJaWR4ID0gZXJpbmctPmN1cnNvcjsKKwlkbyB7CisJCWVudCA9ICZlcmluZy0+cmluZ1tpZHhdOworCQlpZiAoIWVudC0+ZXJyX21hc2spCisJCQlicmVhazsKKwkJcmMgPSBtYXBfZm4oZW50LCBhcmcpOworCQlpZiAocmMpCisJCQlicmVhazsKKwkJaWR4ID0gKGlkeCAtIDEgKyBBVEFfRVJJTkdfU0laRSkgJSBBVEFfRVJJTkdfU0laRTsKKwl9IHdoaWxlIChpZHggIT0gZXJpbmctPmN1cnNvcik7CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qKgorICoJYXRhX3Njc2lfdGltZWRfb3V0IC0gU0NTSSBsYXllciB0aW1lIG91dCBjYWxsYmFjaworICoJQGNtZDogdGltZWQgb3V0IFNDU0kgY29tbWFuZAorICoKKyAqCUhhbmRsZXMgU0NTSSBsYXllciB0aW1lb3V0LiAgV2UgcmFjZSB3aXRoIG5vcm1hbCBjb21wbGV0aW9uIG9mCisgKgl0aGUgcWMgZm9yIEBjbWQuICBJZiB0aGUgcWMgaXMgYWxyZWFkeSBnb25lLCB3ZSBsb3NlIGFuZCBsZXQKKyAqCXRoZSBzY3NpIGNvbW1hbmQgZmluaXNoIChFSF9IQU5ETEVEKS4gIE90aGVyd2lzZSwgdGhlIHFjIGhhcworICoJdGltZWQgb3V0IGFuZCBFSCBzaG91bGQgYmUgaW52b2tlZC4gIFByZXZlbnQgYXRhX3FjX2NvbXBsZXRlKCkKKyAqCWZyb20gZmluaXNoaW5nIGl0IGJ5IHNldHRpbmcgRUhfU0NIRURVTEVEIGFuZCByZXR1cm4KKyAqCUVIX05PVF9IQU5ETEVELgorICoKKyAqCVRPRE86IGtpbGwgdGhpcyBmdW5jdGlvbiBvbmNlIG9sZCBFSCBpcyBnb25lLgorICoKKyAqCUxPQ0tJTkc6CisgKglDYWxsZWQgZnJvbSB0aW1lciBjb250ZXh0CisgKgorICoJUkVUVVJOUzoKKyAqCUVIX0hBTkRMRUQgb3IgRUhfTk9UX0hBTkRMRUQKKyAqLworZW51bSBzY3NpX2VoX3RpbWVyX3JldHVybiBhdGFfc2NzaV90aW1lZF9vdXQoc3RydWN0IHNjc2lfY21uZCAqY21kKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKmhvc3QgPSBjbWQtPmRldmljZS0+aG9zdDsKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gYXRhX3Nob3N0X3RvX3BvcnQoaG9zdCk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOworCWVudW0gc2NzaV9laF90aW1lcl9yZXR1cm4gcmV0OworCisJRFBSSU5USygiRU5URVJcbiIpOworCisJaWYgKGFwLT5vcHMtPmVycm9yX2hhbmRsZXIpIHsKKwkJcmV0ID0gRUhfTk9UX0hBTkRMRUQ7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IEVIX0hBTkRMRUQ7CisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOworCWlmIChxYykgeworCQlXQVJOX09OKHFjLT5zY3NpY21kICE9IGNtZCk7CisJCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX0VIX1NDSEVEVUxFRDsKKwkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9USU1FT1VUOworCQlyZXQgPSBFSF9OT1RfSEFORExFRDsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCisgb3V0OgorCURQUklOVEsoIkVYSVQsIHJldD0lZFxuIiwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqCWF0YV9zY3NpX2Vycm9yIC0gU0NTSSBsYXllciBlcnJvciBoYW5kbGVyIGNhbGxiYWNrCisgKglAaG9zdDogU0NTSSBob3N0IG9uIHdoaWNoIGVycm9yIG9jY3VycmVkCisgKgorICoJSGFuZGxlcyBTQ1NJLWxheWVyLXRocm93biBlcnJvciBldmVudHMuCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIFNDU0kgbGF5ZXIgKG5vbmUsIGNhbiBzbGVlcCkKKyAqCisgKglSRVRVUk5TOgorICoJWmVyby4KKyAqLwordm9pZCBhdGFfc2NzaV9lcnJvcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0KQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBhdGFfc2hvc3RfdG9fcG9ydChob3N0KTsKKwlzcGlubG9ja190ICphcF9sb2NrID0gYXAtPmxvY2s7CisJaW50IGksIHJlcGVhdF9jbnQgPSBBVEFfRUhfTUFYX1JFUEVBVDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJRFBSSU5USygiRU5URVJcbiIpOworCisJLyogc3luY2hyb25pemUgd2l0aCBwb3J0IHRhc2sgKi8KKwlhdGFfcG9ydF9mbHVzaF90YXNrKGFwKTsKKworCS8qIHN5bmNocm9uaXplIHdpdGggaG9zdF9zZXQgbG9jayBhbmQgc29ydCBvdXQgdGltZW91dHMgKi8KKworCS8qIEZvciBuZXcgRUgsIGFsbCBxY3MgYXJlIGZpbmlzaGVkIGluIG9uZSBvZiB0aHJlZSB3YXlzIC0KKwkgKiBub3JtYWwgY29tcGxldGlvbiwgZXJyb3IgY29tcGxldGlvbiwgYW5kIFNDU0kgdGltZW91dC4KKwkgKiBCb3RoIGNtcGxldGlvbnMgY2FuIHJhY2UgYWdhaW5zdCBTQ1NJIHRpbWVvdXQuICBXaGVuIG5vcm1hbAorCSAqIGNvbXBsZXRpb24gd2lucywgdGhlIHFjIG5ldmVyIHJlYWNoZXMgRUguICBXaGVuIGVycm9yCisJICogY29tcGxldGlvbiB3aW5zLCB0aGUgcWMgaGFzIEFUQV9RQ0ZMQUdfRkFJTEVEIHNldC4KKwkgKgorCSAqIFdoZW4gU0NTSSB0aW1lb3V0IHdpbnMsIHRoaW5ncyBhcmUgYSBiaXQgbW9yZSBjb21wbGV4LgorCSAqIE5vcm1hbCBvciBlcnJvciBjb21wbGV0aW9uIGNhbiBvY2N1ciBhZnRlciB0aGUgdGltZW91dCBidXQKKwkgKiBiZWZvcmUgdGhpcyBwb2ludC4gIEluIHN1Y2ggY2FzZXMsIGJvdGggdHlwZXMgb2YKKwkgKiBjb21wbGV0aW9ucyBhcmUgaG9ub3JlZC4gIEEgc2NtZCBpcyBkZXRlcm1pbmVkIHRvIGhhdmUKKwkgKiB0aW1lZCBvdXQgaWZmIGl0cyBhc3NvY2lhdGVkIHFjIGlzIGFjdGl2ZSBhbmQgbm90IGZhaWxlZC4KKwkgKi8KKwlpZiAoYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikgeworCQlzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLCAqdG1wOworCQlpbnQgbnJfdGltZWRvdXQgPSAwOworCisJCXNwaW5fbG9ja19pcnFzYXZlKGFwX2xvY2ssIGZsYWdzKTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2NtZCwgdG1wLCAmaG9zdC0+ZWhfY21kX3EsIGVoX2VudHJ5KSB7CisJCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOworCisJCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9RVUVVRTsgaSsrKSB7CisJCQkJcWMgPSBfX2F0YV9xY19mcm9tX3RhZyhhcCwgaSk7CisJCQkJaWYgKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfQUNUSVZFICYmCisJCQkJICAgIHFjLT5zY3NpY21kID09IHNjbWQpCisJCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAoaSA8IEFUQV9NQVhfUVVFVUUpIHsKKwkJCQkvKiB0aGUgc2NtZCBoYXMgYW4gYXNzb2NpYXRlZCBxYyAqLworCQkJCWlmICghKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRkFJTEVEKSkgeworCQkJCQkvKiB3aGljaCBoYXNuJ3QgZmFpbGVkIHlldCwgdGltZW91dCAqLworCQkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX1RJTUVPVVQ7CisJCQkJCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX0ZBSUxFRDsKKwkJCQkJbnJfdGltZWRvdXQrKzsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCS8qIE5vcm1hbCBjb21wbGV0aW9uIG9jY3VycmVkIGFmdGVyCisJCQkJICogU0NTSSB0aW1lb3V0IGJ1dCBiZWZvcmUgdGhpcyBwb2ludC4KKwkJCQkgKiBTdWNjZXNzZnVsbHkgY29tcGxldGUgaXQuCisJCQkJICovCisJCQkJc2NtZC0+cmV0cmllcyA9IHNjbWQtPmFsbG93ZWQ7CisJCQkJc2NzaV9laF9maW5pc2hfY21kKHNjbWQsICZhcC0+ZWhfZG9uZV9xKTsKKwkJCX0KKwkJfQorCisJCS8qIElmIHdlIGhhdmUgdGltZWQgb3V0IHFjcy4gIFRoZXkgYmVsb25nIHRvIEVIIGZyb20KKwkJICogdGhpcyBwb2ludCBidXQgdGhlIHN0YXRlIG9mIHRoZSBjb250cm9sbGVyIGlzCisJCSAqIHVua25vd24uICBGcmVlemUgdGhlIHBvcnQgdG8gbWFrZSBzdXJlIHRoZSBJUlEKKwkJICogaGFuZGxlciBkb2Vzbid0IGRpZGRsZSB3aXRoIHRob3NlIHFjcy4gIFRoaXMgbXVzdAorCQkgKiBiZSBkb25lIGF0b21pY2FsbHkgdy5yLnQuIHNldHRpbmcgUUNGTEFHX0ZBSUxFRC4KKwkJICovCisJCWlmIChucl90aW1lZG91dCkKKwkJCV9fYXRhX3BvcnRfZnJlZXplKGFwKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwX2xvY2ssIGZsYWdzKTsKKwl9IGVsc2UKKwkJc3Bpbl91bmxvY2tfd2FpdChhcF9sb2NrKTsKKworIHJlcGVhdDoKKwkvKiBpbnZva2UgZXJyb3IgaGFuZGxlciAqLworCWlmIChhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKSB7CisJCS8qIGZldGNoICYgY2xlYXIgRUggaW5mbyAqLworCQlzcGluX2xvY2tfaXJxc2F2ZShhcF9sb2NrLCBmbGFncyk7CisKKwkJbWVtc2V0KCZhcC0+ZWhfY29udGV4dCwgMCwgc2l6ZW9mKGFwLT5laF9jb250ZXh0KSk7CisJCWFwLT5laF9jb250ZXh0LmkgPSBhcC0+ZWhfaW5mbzsKKwkJbWVtc2V0KCZhcC0+ZWhfaW5mbywgMCwgc2l6ZW9mKGFwLT5laF9pbmZvKSk7CisKKwkJYXAtPmZsYWdzIHw9IEFUQV9GTEFHX0VIX0lOX1BST0dSRVNTOworCQlhcC0+ZmxhZ3MgJj0gfkFUQV9GTEFHX0VIX1BFTkRJTkc7CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcF9sb2NrLCBmbGFncyk7CisKKwkJLyogaW52b2tlIEVILiAgaWYgdW5sb2FkaW5nLCBqdXN0IGZpbmlzaCBmYWlsZWQgcWNzICovCisJCWlmICghKGFwLT5mbGFncyAmIEFUQV9GTEFHX1VOTE9BRElORykpCisJCQlhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKGFwKTsKKwkJZWxzZQorCQkJYXRhX2VoX2ZpbmlzaChhcCk7CisKKwkJLyogRXhjZXB0aW9uIG1pZ2h0IGhhdmUgaGFwcGVuZCBhZnRlciAtPmVycm9yX2hhbmRsZXIKKwkJICogcmVjb3ZlcmVkIHRoZSBwb3J0IGJ1dCBiZWZvcmUgdGhpcyBwb2ludC4gIFJlcGVhdAorCQkgKiBFSCBpbiBzdWNoIGNhc2UuCisJCSAqLworCQlzcGluX2xvY2tfaXJxc2F2ZShhcF9sb2NrLCBmbGFncyk7CisKKwkJaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX0VIX1BFTkRJTkcpIHsKKwkJCWlmICgtLXJlcGVhdF9jbnQpIHsKKwkJCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fSU5GTywKKwkJCQkJIkVIIHBlbmRpbmcgYWZ0ZXIgY29tcGxldGlvbiwgIgorCQkJCQkicmVwZWF0aW5nIEVIIChjbnQ9JWQpXG4iLCByZXBlYXRfY250KTsKKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwX2xvY2ssIGZsYWdzKTsKKwkJCQlnb3RvIHJlcGVhdDsKKwkJCX0KKwkJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJFSCBwZW5kaW5nIGFmdGVyICVkICIKKwkJCQkJInRyaWVzLCBnaXZpbmcgdXBcbiIsIEFUQV9FSF9NQVhfUkVQRUFUKTsKKwkJfQorCisJCS8qIHRoaXMgcnVuIGlzIGNvbXBsZXRlLCBtYWtlIHN1cmUgRUggaW5mbyBpcyBjbGVhciAqLworCQltZW1zZXQoJmFwLT5laF9pbmZvLCAwLCBzaXplb2YoYXAtPmVoX2luZm8pKTsKKworCQkvKiBDbGVhciBob3N0X2VoX3NjaGVkdWxlZCB3aGlsZSBob2xkaW5nIGFwX2xvY2sgc3VjaAorCQkgKiB0aGF0IGlmIGV4Y2VwdGlvbiBvY2N1cnMgYWZ0ZXIgdGhpcyBwb2ludCBidXQKKwkJICogYmVmb3JlIEVIIGNvbXBsZXRpb24sIFNDU0kgbWlkbGF5ZXIgd2lsbAorCQkgKiByZS1pbml0aWF0ZSBFSC4KKwkJICovCisJCWhvc3QtPmhvc3RfZWhfc2NoZWR1bGVkID0gMDsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwX2xvY2ssIGZsYWdzKTsKKwl9IGVsc2UgeworCQlXQVJOX09OKGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpID09IE5VTEwpOworCQlhcC0+b3BzLT5lbmdfdGltZW91dChhcCk7CisJfQorCisJLyogZmluaXNoIG9yIHJldHJ5IGhhbmRsZWQgc2NtZCdzIGFuZCBjbGVhbiB1cCAqLworCVdBUk5fT04oaG9zdC0+aG9zdF9mYWlsZWQgfHwgIWxpc3RfZW1wdHkoJmhvc3QtPmVoX2NtZF9xKSk7CisKKwlzY3NpX2VoX2ZsdXNoX2RvbmVfcSgmYXAtPmVoX2RvbmVfcSk7CisKKwkvKiBjbGVhbiB1cCAqLworCXNwaW5fbG9ja19pcnFzYXZlKGFwX2xvY2ssIGZsYWdzKTsKKworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19MT0FESU5HKSB7CisJCWFwLT5mbGFncyAmPSB+QVRBX0ZMQUdfTE9BRElORzsKKwl9IGVsc2UgeworCQlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfU0NTSV9IT1RQTFVHKQorCQkJcXVldWVfd29yayhhdGFfYXV4X3dxLCAmYXAtPmhvdHBsdWdfdGFzayk7CisJCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19SRUNPVkVSRUQpCisJCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fSU5GTywgIkVIIGNvbXBsZXRlXG4iKTsKKwl9CisKKwlhcC0+ZmxhZ3MgJj0gfihBVEFfRkxBR19TQ1NJX0hPVFBMVUcgfCBBVEFfRkxBR19SRUNPVkVSRUQpOworCisJLyogdGVsbCB3YWl0X2VoIHRoYXQgd2UncmUgZG9uZSAqLworCWFwLT5mbGFncyAmPSB+QVRBX0ZMQUdfRUhfSU5fUFJPR1JFU1M7CisJd2FrZV91cF9hbGwoJmFwLT5laF93YWl0X3EpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcF9sb2NrLCBmbGFncyk7CisKKwlEUFJJTlRLKCJFWElUXG4iKTsKK30KKworLyoqCisgKglhdGFfcG9ydF93YWl0X2VoIC0gV2FpdCBmb3IgdGhlIGN1cnJlbnRseSBwZW5kaW5nIEVIIHRvIGNvbXBsZXRlCisgKglAYXA6IFBvcnQgdG8gd2FpdCBFSCBmb3IKKyAqCisgKglXYWl0IHVudGlsIHRoZSBjdXJyZW50bHkgcGVuZGluZyBFSCBpcyBjb21wbGV0ZS4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCit2b2lkIGF0YV9wb3J0X3dhaXRfZWgoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCURFRklORV9XQUlUKHdhaXQpOworCisgcmV0cnk6CisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCXdoaWxlIChhcC0+ZmxhZ3MgJiAoQVRBX0ZMQUdfRUhfUEVORElORyB8IEFUQV9GTEFHX0VIX0lOX1BST0dSRVNTKSkgeworCQlwcmVwYXJlX3RvX3dhaXQoJmFwLT5laF93YWl0X3EsICZ3YWl0LCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKwkJc2NoZWR1bGUoKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwl9CisJZmluaXNoX3dhaXQoJmFwLT5laF93YWl0X3EsICZ3YWl0KTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCS8qIG1ha2Ugc3VyZSBTQ1NJIEVIIGlzIGNvbXBsZXRlICovCisJaWYgKHNjc2lfaG9zdF9pbl9yZWNvdmVyeShhcC0+aG9zdCkpIHsKKwkJbXNsZWVwKDEwKTsKKwkJZ290byByZXRyeTsKKwl9Cit9CisKKy8qKgorICoJYXRhX3FjX3RpbWVvdXQgLSBIYW5kbGUgdGltZW91dCBvZiBxdWV1ZWQgY29tbWFuZAorICoJQHFjOiBDb21tYW5kIHRoYXQgdGltZWQgb3V0CisgKgorICoJU29tZSBwYXJ0IG9mIHRoZSBrZXJuZWwgKGN1cnJlbnRseSwgb25seSB0aGUgU0NTSSBsYXllcikKKyAqCWhhcyBub3RpY2VkIHRoYXQgdGhlIGFjdGl2ZSBjb21tYW5kIG9uIHBvcnQgQGFwIGhhcyBub3QKKyAqCWNvbXBsZXRlZCBhZnRlciBhIHNwZWNpZmllZCBsZW5ndGggb2YgdGltZS4gIEhhbmRsZSB0aGlzCisgKgljb25kaXRpb24gYnkgZGlzYWJsaW5nIERNQSAoaWYgbmVjZXNzYXJ5KSBhbmQgY29tcGxldGluZworICoJdHJhbnNhY3Rpb25zLCB3aXRoIGVycm9yIGlmIG5lY2Vzc2FyeS4KKyAqCisgKglUaGlzIGFsc28gaGFuZGxlcyB0aGUgY2FzZSBvZiB0aGUgImxvc3QgaW50ZXJydXB0Iiwgd2hlcmUKKyAqCWZvciBzb21lIHJlYXNvbiAocG9zc2libHkgaGFyZHdhcmUgYnVnLCBwb3NzaWJseSBkcml2ZXIgYnVnKQorICoJYW4gaW50ZXJydXB0IHdhcyBub3QgZGVsaXZlcmVkIHRvIHRoZSBkcml2ZXIsIGV2ZW4gdGhvdWdoIHRoZQorICoJdHJhbnNhY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KKyAqCisgKglUT0RPOiBraWxsIHRoaXMgZnVuY3Rpb24gb25jZSBvbGQgRUggaXMgZ29uZS4KKyAqCisgKglMT0NLSU5HOgorICoJSW5oZXJpdGVkIGZyb20gU0NTSSBsYXllciAobm9uZSwgY2FuIHNsZWVwKQorICovCitzdGF0aWMgdm9pZCBhdGFfcWNfdGltZW91dChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisJdTggaG9zdF9zdGF0ID0gMCwgZHJ2X3N0YXQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCURQUklOVEsoIkVOVEVSXG4iKTsKKworCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9JRExFOworCisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCXN3aXRjaCAocWMtPnRmLnByb3RvY29sKSB7CisKKwljYXNlIEFUQV9QUk9UX0RNQToKKwljYXNlIEFUQV9QUk9UX0FUQVBJX0RNQToKKwkJaG9zdF9zdGF0ID0gYXAtPm9wcy0+Ym1kbWFfc3RhdHVzKGFwKTsKKworCQkvKiBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZSwgY2xlYXIgRE1BLVN0YXJ0IGJpdCAqLworCQlhcC0+b3BzLT5ibWRtYV9zdG9wKHFjKTsKKworCQkvKiBmYWxsIHRocm91Z2ggKi8KKworCWRlZmF1bHQ6CisJCWF0YV9hbHRzdGF0dXMoYXApOworCQlkcnZfc3RhdCA9IGF0YV9jaGtfc3RhdHVzKGFwKTsKKworCQkvKiBhY2sgYm1kbWEgaXJxIGV2ZW50cyAqLworCQlhcC0+b3BzLT5pcnFfY2xlYXIoYXApOworCisJCWF0YV9kZXZfcHJpbnRrKHFjLT5kZXYsIEtFUk5fRVJSLCAiY29tbWFuZCAweCV4IHRpbWVvdXQsICIKKwkJCSAgICAgICAic3RhdCAweCV4IGhvc3Rfc3RhdCAweCV4XG4iLAorCQkJICAgICAgIHFjLT50Zi5jb21tYW5kLCBkcnZfc3RhdCwgaG9zdF9zdGF0KTsKKworCQkvKiBjb21wbGV0ZSB0YXNrZmlsZSB0cmFuc2FjdGlvbiAqLworCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX1RJTUVPVVQ7CisJCWJyZWFrOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCWF0YV9laF9xY19jb21wbGV0ZShxYyk7CisKKwlEUFJJTlRLKCJFWElUXG4iKTsKK30KKworLyoqCisgKglhdGFfZW5nX3RpbWVvdXQgLSBIYW5kbGUgdGltZW91dCBvZiBxdWV1ZWQgY29tbWFuZAorICoJQGFwOiBQb3J0IG9uIHdoaWNoIHRpbWVkLW91dCBjb21tYW5kIGlzIGFjdGl2ZQorICoKKyAqCVNvbWUgcGFydCBvZiB0aGUga2VybmVsIChjdXJyZW50bHksIG9ubHkgdGhlIFNDU0kgbGF5ZXIpCisgKgloYXMgbm90aWNlZCB0aGF0IHRoZSBhY3RpdmUgY29tbWFuZCBvbiBwb3J0IEBhcCBoYXMgbm90CisgKgljb21wbGV0ZWQgYWZ0ZXIgYSBzcGVjaWZpZWQgbGVuZ3RoIG9mIHRpbWUuICBIYW5kbGUgdGhpcworICoJY29uZGl0aW9uIGJ5IGRpc2FibGluZyBETUEgKGlmIG5lY2Vzc2FyeSkgYW5kIGNvbXBsZXRpbmcKKyAqCXRyYW5zYWN0aW9ucywgd2l0aCBlcnJvciBpZiBuZWNlc3NhcnkuCisgKgorICoJVGhpcyBhbHNvIGhhbmRsZXMgdGhlIGNhc2Ugb2YgdGhlICJsb3N0IGludGVycnVwdCIsIHdoZXJlCisgKglmb3Igc29tZSByZWFzb24gKHBvc3NpYmx5IGhhcmR3YXJlIGJ1ZywgcG9zc2libHkgZHJpdmVyIGJ1ZykKKyAqCWFuIGludGVycnVwdCB3YXMgbm90IGRlbGl2ZXJlZCB0byB0aGUgZHJpdmVyLCBldmVuIHRob3VnaCB0aGUKKyAqCXRyYW5zYWN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCisgKgorICoJVE9ETzoga2lsbCB0aGlzIGZ1bmN0aW9uIG9uY2Ugb2xkIEVIIGlzIGdvbmUuCisgKgorICoJTE9DS0lORzoKKyAqCUluaGVyaXRlZCBmcm9tIFNDU0kgbGF5ZXIgKG5vbmUsIGNhbiBzbGVlcCkKKyAqLwordm9pZCBhdGFfZW5nX3RpbWVvdXQoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlEUFJJTlRLKCJFTlRFUlxuIik7CisKKwlhdGFfcWNfdGltZW91dChhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKSk7CisKKwlEUFJJTlRLKCJFWElUXG4iKTsKK30KKworLyoqCisgKglhdGFfcWNfc2NoZWR1bGVfZWggLSBzY2hlZHVsZSBxYyBmb3IgZXJyb3IgaGFuZGxpbmcKKyAqCUBxYzogY29tbWFuZCB0byBzY2hlZHVsZSBlcnJvciBoYW5kbGluZyBmb3IKKyAqCisgKglTY2hlZHVsZSBlcnJvciBoYW5kbGluZyBmb3IgQHFjLiAgRUggd2lsbCBraWNrIGluIGFzIHNvb24gYXMKKyAqCW90aGVyIGNvbW1hbmRzIGFyZSBkcmFpbmVkLgorICoKKyAqCUxPQ0tJTkc6CisgKglzcGluX2xvY2tfaXJxc2F2ZShob3N0X3NldCBsb2NrKQorICovCit2b2lkIGF0YV9xY19zY2hlZHVsZV9laChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisKKwlXQVJOX09OKCFhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKTsKKworCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX0ZBSUxFRDsKKwlxYy0+YXAtPmZsYWdzIHw9IEFUQV9GTEFHX0VIX1BFTkRJTkc7CisKKwkvKiBUaGUgZm9sbG93aW5nIHdpbGwgZmFpbCBpZiB0aW1lb3V0IGhhcyBhbHJlYWR5IGV4cGlyZWQuCisJICogYXRhX3Njc2lfZXJyb3IoKSB0YWtlcyBjYXJlIG9mIHN1Y2ggc2NtZHMgb24gRUggZW50cnkuCisJICogTm90ZSB0aGF0IEFUQV9RQ0ZMQUdfRkFJTEVEIGlzIHVuY29uZGl0aW9uYWxseSBzZXQgYWZ0ZXIKKwkgKiB0aGlzIGZ1bmN0aW9uIGNvbXBsZXRlcy4KKwkgKi8KKwlzY3NpX3JlcV9hYm9ydF9jbWQocWMtPnNjc2ljbWQpOworfQorCisvKioKKyAqCWF0YV9wb3J0X3NjaGVkdWxlX2VoIC0gc2NoZWR1bGUgZXJyb3IgaGFuZGxpbmcgd2l0aG91dCBhIHFjCisgKglAYXA6IEFUQSBwb3J0IHRvIHNjaGVkdWxlIEVIIGZvcgorICoKKyAqCVNjaGVkdWxlIGVycm9yIGhhbmRsaW5nIGZvciBAYXAuICBFSCB3aWxsIGtpY2sgaW4gYXMgc29vbiBhcworICoJYWxsIGNvbW1hbmRzIGFyZSBkcmFpbmVkLgorICoKKyAqCUxPQ0tJTkc6CisgKglzcGluX2xvY2tfaXJxc2F2ZShob3N0X3NldCBsb2NrKQorICovCit2b2lkIGF0YV9wb3J0X3NjaGVkdWxlX2VoKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJV0FSTl9PTighYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcik7CisKKwlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfRUhfUEVORElORzsKKwlzY3NpX3NjaGVkdWxlX2VoKGFwLT5ob3N0KTsKKworCURQUklOVEsoInBvcnQgRUggc2NoZWR1bGVkXG4iKTsKK30KKworLyoqCisgKglhdGFfcG9ydF9hYm9ydCAtIGFib3J0IGFsbCBxYydzIG9uIHRoZSBwb3J0CisgKglAYXA6IEFUQSBwb3J0IHRvIGFib3J0IHFjJ3MgZm9yCisgKgorICoJQWJvcnQgYWxsIGFjdGl2ZSBxYydzIG9mIEBhcCBhbmQgc2NoZWR1bGUgRUguCisgKgorICoJTE9DS0lORzoKKyAqCXNwaW5fbG9ja19pcnFzYXZlKGhvc3Rfc2V0IGxvY2spCisgKgorICoJUkVUVVJOUzoKKyAqCU51bWJlciBvZiBhYm9ydGVkIHFjJ3MuCisgKi8KK2ludCBhdGFfcG9ydF9hYm9ydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCWludCB0YWcsIG5yX2Fib3J0ZWQgPSAwOworCisJV0FSTl9PTighYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcik7CisKKwlmb3IgKHRhZyA9IDA7IHRhZyA8IEFUQV9NQVhfUVVFVUU7IHRhZysrKSB7CisJCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIHRhZyk7CisKKwkJaWYgKHFjKSB7CisJCQlxYy0+ZmxhZ3MgfD0gQVRBX1FDRkxBR19GQUlMRUQ7CisJCQlhdGFfcWNfY29tcGxldGUocWMpOworCQkJbnJfYWJvcnRlZCsrOworCQl9CisJfQorCisJaWYgKCFucl9hYm9ydGVkKQorCQlhdGFfcG9ydF9zY2hlZHVsZV9laChhcCk7CisKKwlyZXR1cm4gbnJfYWJvcnRlZDsKK30KKworLyoqCisgKglfX2F0YV9wb3J0X2ZyZWV6ZSAtIGZyZWV6ZSBwb3J0CisgKglAYXA6IEFUQSBwb3J0IHRvIGZyZWV6ZQorICoKKyAqCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gSFNNIHZpb2xhdGlvbiBvciBzb21lIG90aGVyCisgKgljb25kaXRpb24gZGlzcnVwdHMgbm9ybWFsIG9wZXJhdGlvbiBvZiB0aGUgcG9ydC4gIEZyb3plbiBwb3J0CisgKglpcyBub3QgYWxsb3dlZCB0byBwZXJmb3JtIGFueSBvcGVyYXRpb24gdW50aWwgdGhlIHBvcnQgaXMKKyAqCXRoYXdlZCwgd2hpY2ggdXN1YWxseSBmb2xsb3dzIGEgc3VjY2Vzc2Z1bCByZXNldC4KKyAqCisgKglhcC0+b3BzLT5mcmVlemUoKSBjYWxsYmFjayBjYW4gYmUgdXNlZCBmb3IgZnJlZXppbmcgdGhlIHBvcnQKKyAqCWhhcmR3YXJlLXdpc2UgKGUuZy4gbWFzayBpbnRlcnJ1cHQgYW5kIHN0b3AgRE1BIGVuZ2luZSkuICBJZiBhCisgKglwb3J0IGNhbm5vdCBiZSBmcm96ZW4gaGFyZHdhcmUtd2lzZSwgdGhlIGludGVycnVwdCBoYW5kbGVyCisgKgltdXN0IGFjayBhbmQgY2xlYXIgaW50ZXJydXB0cyB1bmNvbmRpdGlvbmFsbHkgd2hpbGUgdGhlIHBvcnQKKyAqCWlzIGZyb3plbi4KKyAqCisgKglMT0NLSU5HOgorICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqLworc3RhdGljIHZvaWQgX19hdGFfcG9ydF9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlXQVJOX09OKCFhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKTsKKworCWlmIChhcC0+b3BzLT5mcmVlemUpCisJCWFwLT5vcHMtPmZyZWV6ZShhcCk7CisKKwlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfRlJPWkVOOworCisJRFBSSU5USygiYXRhJXUgcG9ydCBmcm96ZW5cbiIsIGFwLT5pZCk7Cit9CisKKy8qKgorICoJYXRhX3BvcnRfZnJlZXplIC0gYWJvcnQgJiBmcmVlemUgcG9ydAorICoJQGFwOiBBVEEgcG9ydCB0byBmcmVlemUKKyAqCisgKglBYm9ydCBhbmQgZnJlZXplIEBhcC4KKyAqCisgKglMT0NLSU5HOgorICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqCisgKglSRVRVUk5TOgorICoJTnVtYmVyIG9mIGFib3J0ZWQgY29tbWFuZHMuCisgKi8KK2ludCBhdGFfcG9ydF9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlpbnQgbnJfYWJvcnRlZDsKKworCVdBUk5fT04oIWFwLT5vcHMtPmVycm9yX2hhbmRsZXIpOworCisJbnJfYWJvcnRlZCA9IGF0YV9wb3J0X2Fib3J0KGFwKTsKKwlfX2F0YV9wb3J0X2ZyZWV6ZShhcCk7CisKKwlyZXR1cm4gbnJfYWJvcnRlZDsKK30KKworLyoqCisgKglhdGFfZWhfZnJlZXplX3BvcnQgLSBFSCBoZWxwZXIgdG8gZnJlZXplIHBvcnQKKyAqCUBhcDogQVRBIHBvcnQgdG8gZnJlZXplCisgKgorICoJRnJlZXplIEBhcC4KKyAqCisgKglMT0NLSU5HOgorICoJTm9uZS4KKyAqLwordm9pZCBhdGFfZWhfZnJlZXplX3BvcnQoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKCFhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCV9fYXRhX3BvcnRfZnJlZXplKGFwKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7Cit9CisKKy8qKgorICoJYXRhX3BvcnRfdGhhd19wb3J0IC0gRUggaGVscGVyIHRvIHRoYXcgcG9ydAorICoJQGFwOiBBVEEgcG9ydCB0byB0aGF3CisgKgorICoJVGhhdyBmcm96ZW4gcG9ydCBAYXAuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKi8KK3ZvaWQgYXRhX2VoX3RoYXdfcG9ydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWFwLT5vcHMtPmVycm9yX2hhbmRsZXIpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisKKwlhcC0+ZmxhZ3MgJj0gfkFUQV9GTEFHX0ZST1pFTjsKKworCWlmIChhcC0+b3BzLT50aGF3KQorCQlhcC0+b3BzLT50aGF3KGFwKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCURQUklOVEsoImF0YSV1IHBvcnQgdGhhd2VkXG4iLCBhcC0+aWQpOworfQorCitzdGF0aWMgdm9pZCBhdGFfZWhfc2NzaWRvbmUoc3RydWN0IHNjc2lfY21uZCAqc2NtZCkKK3sKKwkvKiBuYWRhICovCit9CisKK3N0YXRpYyB2b2lkIF9fYXRhX2VoX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kID0gcWMtPnNjc2ljbWQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisJcWMtPnNjc2lkb25lID0gYXRhX2VoX3Njc2lkb25lOworCV9fYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwlXQVJOX09OKGF0YV90YWdfdmFsaWQocWMtPnRhZykpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCXNjc2lfZWhfZmluaXNoX2NtZChzY21kLCAmYXAtPmVoX2RvbmVfcSk7Cit9CisKKy8qKgorICoJYXRhX2VoX3FjX2NvbXBsZXRlIC0gQ29tcGxldGUgYW4gYWN0aXZlIEFUQSBjb21tYW5kIGZyb20gRUgKKyAqCUBxYzogQ29tbWFuZCB0byBjb21wbGV0ZQorICoKKyAqCUluZGljYXRlIHRvIHRoZSBtaWQgYW5kIHVwcGVyIGxheWVycyB0aGF0IGFuIEFUQSBjb21tYW5kIGhhcworICoJY29tcGxldGVkLiAgVG8gYmUgdXNlZCBmcm9tIEVILgorICovCit2b2lkIGF0YV9laF9xY19jb21wbGV0ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBzY3NpX2NtbmQgKnNjbWQgPSBxYy0+c2NzaWNtZDsKKwlzY21kLT5yZXRyaWVzID0gc2NtZC0+YWxsb3dlZDsKKwlfX2F0YV9laF9xY19jb21wbGV0ZShxYyk7Cit9CisKKy8qKgorICoJYXRhX2VoX3FjX3JldHJ5IC0gVGVsbCBtaWRsYXllciB0byByZXRyeSBhbiBBVEEgY29tbWFuZCBhZnRlciBFSAorICoJQHFjOiBDb21tYW5kIHRvIHJldHJ5CisgKgorICoJSW5kaWNhdGUgdG8gdGhlIG1pZCBhbmQgdXBwZXIgbGF5ZXJzIHRoYXQgYW4gQVRBIGNvbW1hbmQKKyAqCXNob3VsZCBiZSByZXRyaWVkLiAgVG8gYmUgdXNlZCBmcm9tIEVILgorICoKKyAqCVNDU0kgbWlkbGF5ZXIgbGltaXRzIHRoZSBudW1iZXIgb2YgcmV0cmllcyB0byBzY21kLT5hbGxvd2VkLgorICoJc2NtZC0+cmV0cmllcyBpcyBkZWNyZW1lbnRlZCBmb3IgY29tbWFuZHMgd2hpY2ggZ2V0IHJldHJpZWQKKyAqCWR1ZSB0byB1bnJlbGF0ZWQgZmFpbHVyZXMgKHFjLT5lcnJfbWFzayBpcyB6ZXJvKS4KKyAqLwordm9pZCBhdGFfZWhfcWNfcmV0cnkoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKK3sKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kID0gcWMtPnNjc2ljbWQ7CisJaWYgKCFxYy0+ZXJyX21hc2sgJiYgc2NtZC0+cmV0cmllcykKKwkJc2NtZC0+cmV0cmllcy0tOworCV9fYXRhX2VoX3FjX2NvbXBsZXRlKHFjKTsKK30KKworLyoqCisgKglhdGFfZWhfZGV0YWNoX2RldiAtIGRldGFjaCBBVEEgZGV2aWNlCisgKglAZGV2OiBBVEEgZGV2aWNlIHRvIGRldGFjaAorICoKKyAqCURldGFjaCBAZGV2LgorICoKKyAqCUxPQ0tJTkc6CisgKglOb25lLgorICovCitzdGF0aWMgdm9pZCBhdGFfZWhfZGV0YWNoX2RldihzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBkZXYtPmFwOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlhdGFfZGV2X2Rpc2FibGUoZGV2KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKGFwLT5sb2NrLCBmbGFncyk7CisKKwlkZXYtPmZsYWdzICY9IH5BVEFfREZMQUdfREVUQUNIOworCisJaWYgKGF0YV9zY3NpX29mZmxpbmVfZGV2KGRldikpIHsKKwkJZGV2LT5mbGFncyB8PSBBVEFfREZMQUdfREVUQUNIRUQ7CisJCWFwLT5mbGFncyB8PSBBVEFfRkxBR19TQ1NJX0hPVFBMVUc7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBhdGFfZWhfY2xlYXJfYWN0aW9uKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkJc3RydWN0IGF0YV9laF9pbmZvICplaGksIHVuc2lnbmVkIGludCBhY3Rpb24pCit7CisJaW50IGk7CisKKwlpZiAoIWRldikgeworCQllaGktPmFjdGlvbiAmPSB+YWN0aW9uOworCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCQllaGktPmRldl9hY3Rpb25baV0gJj0gfmFjdGlvbjsKKwl9IGVsc2UgeworCQkvKiBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHBvcnQtd2lkZSBFSCBhY3Rpb25zICovCisJCVdBUk5fT04oIShhY3Rpb24gJiBBVEFfRUhfUEVSREVWX01BU0spKTsKKworCQkvKiBicmVhayBlaGktPmFjdGlvbiBpbnRvIGVoaS0+ZGV2X2FjdGlvbiAqLworCQlpZiAoZWhpLT5hY3Rpb24gJiBhY3Rpb24pIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykKKwkJCQllaGktPmRldl9hY3Rpb25baV0gfD0gZWhpLT5hY3Rpb24gJiBhY3Rpb247CisJCQllaGktPmFjdGlvbiAmPSB+YWN0aW9uOworCQl9CisKKwkJLyogdHVybiBvZmYgdGhlIHNwZWNpZmllZCBwZXItZGV2IGFjdGlvbiAqLworCQllaGktPmRldl9hY3Rpb25bZGV2LT5kZXZub10gJj0gfmFjdGlvbjsKKwl9Cit9CisKKy8qKgorICoJYXRhX2VoX2Fib3V0X3RvX2RvIC0gYWJvdXQgdG8gcGVyZm9ybSBlaF9hY3Rpb24KKyAqCUBhcDogdGFyZ2V0IEFUQSBwb3J0CisgKglAZGV2OiB0YXJnZXQgQVRBIGRldiBmb3IgcGVyLWRldiBhY3Rpb24gKGNhbiBiZSBOVUxMKQorICoJQGFjdGlvbjogYWN0aW9uIGFib3V0IHRvIGJlIHBlcmZvcm1lZAorICoKKyAqCUNhbGxlZCBqdXN0IGJlZm9yZSBwZXJmb3JtaW5nIEVIIGFjdGlvbnMgdG8gY2xlYXIgcmVsYXRlZCBiaXRzCisgKglpbiBAYXAtPmVoX2luZm8gc3VjaCB0aGF0IGVoIGFjdGlvbnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5CisgKglyZXBlYXRlZC4KKyAqCisgKglMT0NLSU5HOgorICoJTm9uZS4KKyAqLworc3RhdGljIHZvaWQgYXRhX2VoX2Fib3V0X3RvX2RvKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkgICAgICAgdW5zaWduZWQgaW50IGFjdGlvbikKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwlhdGFfZWhfY2xlYXJfYWN0aW9uKGRldiwgJmFwLT5laF9pbmZvLCBhY3Rpb24pOworCWFwLT5mbGFncyB8PSBBVEFfRkxBR19SRUNPVkVSRUQ7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworfQorCisvKioKKyAqCWF0YV9laF9kb25lIC0gRUggYWN0aW9uIGNvbXBsZXRlCisgKglAYXA6IHRhcmdldCBBVEEgcG9ydAorICoJQGRldjogdGFyZ2V0IEFUQSBkZXYgZm9yIHBlci1kZXYgYWN0aW9uIChjYW4gYmUgTlVMTCkKKyAqCUBhY3Rpb246IGFjdGlvbiBqdXN0IGNvbXBsZXRlZAorICoKKyAqCUNhbGxlZCByaWdodCBhZnRlciBwZXJmb3JtaW5nIEVIIGFjdGlvbnMgdG8gY2xlYXIgcmVsYXRlZCBiaXRzCisgKglpbiBAYXAtPmVoX2NvbnRleHQuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKi8KK3N0YXRpYyB2b2lkIGF0YV9laF9kb25lKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQl1bnNpZ25lZCBpbnQgYWN0aW9uKQoreworCWF0YV9laF9jbGVhcl9hY3Rpb24oZGV2LCAmYXAtPmVoX2NvbnRleHQuaSwgYWN0aW9uKTsKK30KKworLyoqCisgKglhdGFfZXJyX3N0cmluZyAtIGNvbnZlcnQgZXJyX21hc2sgdG8gZGVzY3JpcHRpdmUgc3RyaW5nCisgKglAZXJyX21hc2s6IGVycm9yIG1hc2sgdG8gY29udmVydCB0byBzdHJpbmcKKyAqCisgKglDb252ZXJ0IEBlcnJfbWFzayB0byBkZXNjcmlwdGl2ZSBzdHJpbmcuICBFcnJvcnMgYXJlCisgKglwcmlvcml0aXplZCBhY2NvcmRpbmcgdG8gc2V2ZXJpdHkgYW5kIG9ubHkgdGhlIG1vc3Qgc2V2ZXJlCisgKgllcnJvciBpcyByZXBvcnRlZC4KKyAqCisgKglMT0NLSU5HOgorICoJTm9uZS4KKyAqCisgKglSRVRVUk5TOgorICoJRGVzY3JpcHRpdmUgc3RyaW5nIGZvciBAZXJyX21hc2sKKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKiBhdGFfZXJyX3N0cmluZyh1bnNpZ25lZCBpbnQgZXJyX21hc2spCit7CisJaWYgKGVycl9tYXNrICYgQUNfRVJSX0hPU1RfQlVTKQorCQlyZXR1cm4gImhvc3QgYnVzIGVycm9yIjsKKwlpZiAoZXJyX21hc2sgJiBBQ19FUlJfQVRBX0JVUykKKwkJcmV0dXJuICJBVEEgYnVzIGVycm9yIjsKKwlpZiAoZXJyX21hc2sgJiBBQ19FUlJfVElNRU9VVCkKKwkJcmV0dXJuICJ0aW1lb3V0IjsKKwlpZiAoZXJyX21hc2sgJiBBQ19FUlJfSFNNKQorCQlyZXR1cm4gIkhTTSB2aW9sYXRpb24iOworCWlmIChlcnJfbWFzayAmIEFDX0VSUl9TWVNURU0pCisJCXJldHVybiAiaW50ZXJuYWwgZXJyb3IiOworCWlmIChlcnJfbWFzayAmIEFDX0VSUl9NRURJQSkKKwkJcmV0dXJuICJtZWRpYSBlcnJvciI7CisJaWYgKGVycl9tYXNrICYgQUNfRVJSX0lOVkFMSUQpCisJCXJldHVybiAiaW52YWxpZCBhcmd1bWVudCI7CisJaWYgKGVycl9tYXNrICYgQUNfRVJSX0RFVikKKwkJcmV0dXJuICJkZXZpY2UgZXJyb3IiOworCXJldHVybiAidW5rbm93biBlcnJvciI7Cit9CisKKy8qKgorICoJYXRhX3JlYWRfbG9nX3BhZ2UgLSByZWFkIGEgc3BlY2lmaWMgbG9nIHBhZ2UKKyAqCUBkZXY6IHRhcmdldCBkZXZpY2UKKyAqCUBwYWdlOiBwYWdlIHRvIHJlYWQKKyAqCUBidWY6IGJ1ZmZlciB0byBzdG9yZSByZWFkIHBhZ2UKKyAqCUBzZWN0b3JzOiBudW1iZXIgb2Ygc2VjdG9ycyB0byByZWFkCisgKgorICoJUmVhZCBsb2cgcGFnZSB1c2luZyBSRUFEX0xPR19FWFQgY29tbWFuZC4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICoKKyAqCVJFVFVSTlM6CisgKgkwIG9uIHN1Y2Nlc3MsIEFDX0VSUl8qIG1hc2sgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgdW5zaWduZWQgaW50IGF0YV9yZWFkX2xvZ19wYWdlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkJICAgICAgdTggcGFnZSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2VjdG9ycykKK3sKKwlzdHJ1Y3QgYXRhX3Rhc2tmaWxlIHRmOworCXVuc2lnbmVkIGludCBlcnJfbWFzazsKKworCURQUklOVEsoInJlYWQgbG9nIHBhZ2UgLSBwYWdlICVkXG4iLCBwYWdlKTsKKworCWF0YV90Zl9pbml0KGRldiwgJnRmKTsKKwl0Zi5jb21tYW5kID0gQVRBX0NNRF9SRUFEX0xPR19FWFQ7CisJdGYubGJhbCA9IHBhZ2U7CisJdGYubnNlY3QgPSBzZWN0b3JzOworCXRmLmhvYl9uc2VjdCA9IHNlY3RvcnMgPj4gODsKKwl0Zi5mbGFncyB8PSBBVEFfVEZMQUdfSVNBRERSIHwgQVRBX1RGTEFHX0xCQTQ4IHwgQVRBX1RGTEFHX0RFVklDRTsKKwl0Zi5wcm90b2NvbCA9IEFUQV9QUk9UX1BJTzsKKworCWVycl9tYXNrID0gYXRhX2V4ZWNfaW50ZXJuYWwoZGV2LCAmdGYsIE5VTEwsIERNQV9GUk9NX0RFVklDRSwKKwkJCQkgICAgIGJ1Ziwgc2VjdG9ycyAqIEFUQV9TRUNUX1NJWkUpOworCisJRFBSSU5USygiRVhJVCwgZXJyX21hc2s9JXhcbiIsIGVycl9tYXNrKTsKKwlyZXR1cm4gZXJyX21hc2s7Cit9CisKKy8qKgorICoJYXRhX2VoX3JlYWRfbG9nXzEwaCAtIFJlYWQgbG9nIHBhZ2UgMTBoIGZvciBOQ1EgZXJyb3IgZGV0YWlscworICoJQGRldjogRGV2aWNlIHRvIHJlYWQgbG9nIHBhZ2UgMTBoIGZyb20KKyAqCUB0YWc6IFJlc3VsdGluZyB0YWcgb2YgdGhlIGZhaWxlZCBjb21tYW5kCisgKglAdGY6IFJlc3VsdGluZyB0YXNrZmlsZSByZWdpc3RlcnMgb2YgdGhlIGZhaWxlZCBjb21tYW5kCisgKgorICoJUmVhZCBsb2cgcGFnZSAxMGggdG8gb2J0YWluIE5DUSBlcnJvciBkZXRhaWxzIGFuZCBjbGVhciBlcnJvcgorICoJY29uZGl0aW9uLgorICoKKyAqCUxPQ0tJTkc6CisgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkuCisgKgorICoJUkVUVVJOUzoKKyAqCTAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGludCBhdGFfZWhfcmVhZF9sb2dfMTBoKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCisJCQkgICAgICAgaW50ICp0YWcsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKQoreworCXU4ICpidWYgPSBkZXYtPmFwLT5zZWN0b3JfYnVmOworCXVuc2lnbmVkIGludCBlcnJfbWFzazsKKwl1OCBjc3VtOworCWludCBpOworCisJZXJyX21hc2sgPSBhdGFfcmVhZF9sb2dfcGFnZShkZXYsIEFUQV9MT0dfU0FUQV9OQ1EsIGJ1ZiwgMSk7CisJaWYgKGVycl9tYXNrKQorCQlyZXR1cm4gLUVJTzsKKworCWNzdW0gPSAwOworCWZvciAoaSA9IDA7IGkgPCBBVEFfU0VDVF9TSVpFOyBpKyspCisJCWNzdW0gKz0gYnVmW2ldOworCWlmIChjc3VtKQorCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fV0FSTklORywKKwkJCSAgICAgICAiaW52YWxpZCBjaGVja3N1bSAweCV4IG9uIGxvZyBwYWdlIDEwaFxuIiwgY3N1bSk7CisKKwlpZiAoYnVmWzBdICYgMHg4MCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwkqdGFnID0gYnVmWzBdICYgMHgxZjsKKworCXRmLT5jb21tYW5kID0gYnVmWzJdOworCXRmLT5mZWF0dXJlID0gYnVmWzNdOworCXRmLT5sYmFsID0gYnVmWzRdOworCXRmLT5sYmFtID0gYnVmWzVdOworCXRmLT5sYmFoID0gYnVmWzZdOworCXRmLT5kZXZpY2UgPSBidWZbN107CisJdGYtPmhvYl9sYmFsID0gYnVmWzhdOworCXRmLT5ob2JfbGJhbSA9IGJ1Zls5XTsKKwl0Zi0+aG9iX2xiYWggPSBidWZbMTBdOworCXRmLT5uc2VjdCA9IGJ1ZlsxMl07CisJdGYtPmhvYl9uc2VjdCA9IGJ1ZlsxM107CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKglhdGFwaV9laF9yZXF1ZXN0X3NlbnNlIC0gcGVyZm9ybSBBVEFQSSBSRVFVRVNUX1NFTlNFCisgKglAZGV2OiBkZXZpY2UgdG8gcGVyZm9ybSBSRVFVRVNUX1NFTlNFIHRvCisgKglAc2Vuc2VfYnVmOiByZXN1bHQgc2Vuc2UgZGF0YSBidWZmZXIgKFNDU0lfU0VOU0VfQlVGRkVSU0laRSBieXRlcyBsb25nKQorICoKKyAqCVBlcmZvcm0gQVRBUEkgUkVRVUVTVF9TRU5TRSBhZnRlciB0aGUgZGV2aWNlIHJlcG9ydGVkIENIRUNLCisgKglTRU5TRS4gIFRoaXMgZnVuY3Rpb24gaXMgRUggaGVscGVyLgorICoKKyAqCUxPQ0tJTkc6CisgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkuCisgKgorICoJUkVUVVJOUzoKKyAqCTAgb24gc3VjY2VzcywgQUNfRVJSXyogbWFzayBvbiBmYWlsdXJlCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXRhcGlfZWhfcmVxdWVzdF9zZW5zZShzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAorCQkJCQkgICB1bnNpZ25lZCBjaGFyICpzZW5zZV9idWYpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGRldi0+YXA7CisJc3RydWN0IGF0YV90YXNrZmlsZSB0ZjsKKwl1OCBjZGJbQVRBUElfQ0RCX0xFTl07CisKKwlEUFJJTlRLKCJBVEFQSSByZXF1ZXN0IHNlbnNlXG4iKTsKKworCWF0YV90Zl9pbml0KGRldiwgJnRmKTsKKworCS8qIEZJWE1FOiBpcyB0aGlzIG5lZWRlZD8gKi8KKwltZW1zZXQoc2Vuc2VfYnVmLCAwLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpOworCisJLyogWFhYOiB3aHkgdGZfcmVhZCBoZXJlPyAqLworCWFwLT5vcHMtPnRmX3JlYWQoYXAsICZ0Zik7CisKKwkvKiBmaWxsIHRoZXNlIGluLCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhleSBhcmUgLW5vdC0gb3ZlcndyaXR0ZW4gKi8KKwlzZW5zZV9idWZbMF0gPSAweDcwOworCXNlbnNlX2J1ZlsyXSA9IHRmLmZlYXR1cmUgPj4gNDsKKworCW1lbXNldChjZGIsIDAsIEFUQVBJX0NEQl9MRU4pOworCWNkYlswXSA9IFJFUVVFU1RfU0VOU0U7CisJY2RiWzRdID0gU0NTSV9TRU5TRV9CVUZGRVJTSVpFOworCisJdGYuZmxhZ3MgfD0gQVRBX1RGTEFHX0lTQUREUiB8IEFUQV9URkxBR19ERVZJQ0U7CisJdGYuY29tbWFuZCA9IEFUQV9DTURfUEFDS0VUOworCisJLyogaXMgaXQgcG9pbnRsZXNzIHRvIHByZWZlciBQSU8gZm9yICJzYWZldHkgcmVhc29ucyI/ICovCisJaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX1BJT19ETUEpIHsKKwkJdGYucHJvdG9jb2wgPSBBVEFfUFJPVF9BVEFQSV9ETUE7CisJCXRmLmZlYXR1cmUgfD0gQVRBUElfUEtUX0RNQTsKKwl9IGVsc2UgeworCQl0Zi5wcm90b2NvbCA9IEFUQV9QUk9UX0FUQVBJOworCQl0Zi5sYmFtID0gKDggKiAxMDI0KSAmIDB4ZmY7CisJCXRmLmxiYWggPSAoOCAqIDEwMjQpID4+IDg7CisJfQorCisJcmV0dXJuIGF0YV9leGVjX2ludGVybmFsKGRldiwgJnRmLCBjZGIsIERNQV9GUk9NX0RFVklDRSwKKwkJCQkgc2Vuc2VfYnVmLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpOworfQorCisvKioKKyAqCWF0YV9laF9hbmFseXplX3NlcnJvciAtIGFuYWx5emUgU0Vycm9yIGZvciBhIGZhaWxlZCBwb3J0CisgKglAYXA6IEFUQSBwb3J0IHRvIGFuYWx5emUgU0Vycm9yIGZvcgorICoKKyAqCUFuYWx5emUgU0Vycm9yIGlmIGF2YWlsYWJsZSBhbmQgZnVydGhlciBkZXRlcm1pbmUgY2F1c2Ugb2YKKyAqCWZhaWx1cmUuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKi8KK3N0YXRpYyB2b2lkIGF0YV9laF9hbmFseXplX3NlcnJvcihzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBhdGFfZWhfY29udGV4dCAqZWhjID0gJmFwLT5laF9jb250ZXh0OworCXUzMiBzZXJyb3IgPSBlaGMtPmkuc2Vycm9yOworCXVuc2lnbmVkIGludCBlcnJfbWFzayA9IDAsIGFjdGlvbiA9IDA7CisKKwlpZiAoc2Vycm9yICYgU0VSUl9QRVJTSVNURU5UKSB7CisJCWVycl9tYXNrIHw9IEFDX0VSUl9BVEFfQlVTOworCQlhY3Rpb24gfD0gQVRBX0VIX0hBUkRSRVNFVDsKKwl9CisJaWYgKHNlcnJvciAmCisJICAgIChTRVJSX0RBVEFfUkVDT1ZFUkVEIHwgU0VSUl9DT01NX1JFQ09WRVJFRCB8IFNFUlJfREFUQSkpIHsKKwkJZXJyX21hc2sgfD0gQUNfRVJSX0FUQV9CVVM7CisJCWFjdGlvbiB8PSBBVEFfRUhfU09GVFJFU0VUOworCX0KKwlpZiAoc2Vycm9yICYgU0VSUl9QUk9UT0NPTCkgeworCQllcnJfbWFzayB8PSBBQ19FUlJfSFNNOworCQlhY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwl9CisJaWYgKHNlcnJvciAmIFNFUlJfSU5URVJOQUwpIHsKKwkJZXJyX21hc2sgfD0gQUNfRVJSX1NZU1RFTTsKKwkJYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisJfQorCWlmIChzZXJyb3IgJiAoU0VSUl9QSFlSRFlfQ0hHIHwgU0VSUl9ERVZfWENIRykpCisJCWF0YV9laGlfaG90cGx1Z2dlZCgmZWhjLT5pKTsKKworCWVoYy0+aS5lcnJfbWFzayB8PSBlcnJfbWFzazsKKwllaGMtPmkuYWN0aW9uIHw9IGFjdGlvbjsKK30KKworLyoqCisgKglhdGFfZWhfYW5hbHl6ZV9uY3FfZXJyb3IgLSBhbmFseXplIE5DUSBlcnJvcgorICoJQGFwOiBBVEEgcG9ydCB0byBhbmFseXplIE5DUSBlcnJvciBmb3IKKyAqCisgKglSZWFkIGxvZyBwYWdlIDEwaCwgZGV0ZXJtaW5lIHRoZSBvZmZlbmRpbmcgcWMgYW5kIGFjcXVpcmUKKyAqCWVycm9yIHN0YXR1cyBURi4gIEZvciBOQ1EgZGV2aWNlIGVycm9ycywgYWxsIExMRERzIGhhdmUgdG8gZG8KKyAqCWlzIHNldHRpbmcgQUNfRVJSX0RFViBpbiBlaGktPmVycl9tYXNrLiAgVGhpcyBmdW5jdGlvbiB0YWtlcworICoJY2FyZSBvZiB0aGUgcmVzdC4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCitzdGF0aWMgdm9pZCBhdGFfZWhfYW5hbHl6ZV9uY3FfZXJyb3Ioc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgKmVoYyA9ICZhcC0+ZWhfY29udGV4dDsKKwlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gYXAtPmRldmljZTsKKwlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOworCXN0cnVjdCBhdGFfdGFza2ZpbGUgdGY7CisJaW50IHRhZywgcmM7CisKKwkvKiBpZiBmcm96ZW4sIHdlIGNhbid0IGRvIG11Y2ggKi8KKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRlJPWkVOKQorCQlyZXR1cm47CisKKwkvKiBpcyBpdCBOQ1EgZGV2aWNlIGVycm9yPyAqLworCWlmICghYXAtPnNhY3RpdmUgfHwgIShlaGMtPmkuZXJyX21hc2sgJiBBQ19FUlJfREVWKSkKKwkJcmV0dXJuOworCisJLyogaGFzIExMREQgYW5hbHl6ZWQgYWxyZWFkeT8gKi8KKwlmb3IgKHRhZyA9IDA7IHRhZyA8IEFUQV9NQVhfUVVFVUU7IHRhZysrKSB7CisJCXFjID0gX19hdGFfcWNfZnJvbV90YWcoYXAsIHRhZyk7CisKKwkJaWYgKCEocWMtPmZsYWdzICYgQVRBX1FDRkxBR19GQUlMRUQpKQorCQkJY29udGludWU7CisKKwkJaWYgKHFjLT5lcnJfbWFzaykKKwkJCXJldHVybjsKKwl9CisKKwkvKiBva2F5LCB0aGlzIGVycm9yIGlzIG91cnMgKi8KKwlyYyA9IGF0YV9laF9yZWFkX2xvZ18xMGgoZGV2LCAmdGFnLCAmdGYpOworCWlmIChyYykgeworCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLCAiZmFpbGVkIHRvIHJlYWQgbG9nIHBhZ2UgMTBoICIKKwkJCQkiKGVycm5vPSVkKVxuIiwgcmMpOworCQlyZXR1cm47CisJfQorCisJaWYgKCEoYXAtPnNhY3RpdmUgJiAoMSA8PCB0YWcpKSkgeworCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLCAibG9nIHBhZ2UgMTBoIHJlcG9ydGVkICIKKwkJCQkiaW5hY3RpdmUgdGFnICVkXG4iLCB0YWcpOworCQlyZXR1cm47CisJfQorCisJLyogd2UndmUgZ290IHRoZSBwZXJwZXRyYXRvciwgY29uZGVtbiBpdCAqLworCXFjID0gX19hdGFfcWNfZnJvbV90YWcoYXAsIHRhZyk7CisJbWVtY3B5KCZxYy0+cmVzdWx0X3RmLCAmdGYsIHNpemVvZih0ZikpOworCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfREVWOworCWVoYy0+aS5lcnJfbWFzayAmPSB+QUNfRVJSX0RFVjsKK30KKworLyoqCisgKglhdGFfZWhfYW5hbHl6ZV90ZiAtIGFuYWx5emUgdGFza2ZpbGUgb2YgYSBmYWlsZWQgcWMKKyAqCUBxYzogcWMgdG8gYW5hbHl6ZQorICoJQHRmOiBUYXNrZmlsZSByZWdpc3RlcnMgdG8gYW5hbHl6ZQorICoKKyAqCUFuYWx5emUgdGFza2ZpbGUgb2YgQHFjIGFuZCBmdXJ0aGVyIGRldGVybWluZSBjYXVzZSBvZgorICoJZmFpbHVyZS4gIFRoaXMgZnVuY3Rpb24gYWxzbyByZXF1ZXN0cyBBVEFQSSBzZW5zZSBkYXRhIGlmCisgKglhdmFsaWFibGUuCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KKyAqCisgKglSRVRVUk5TOgorICoJRGV0ZXJtaW5lZCByZWNvdmVyeSBhY3Rpb24KKyAqLworc3RhdGljIHVuc2lnbmVkIGludCBhdGFfZWhfYW5hbHl6ZV90ZihzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKQoreworCXVuc2lnbmVkIGludCB0bXAsIGFjdGlvbiA9IDA7CisJdTggc3RhdCA9IHRmLT5jb21tYW5kLCBlcnIgPSB0Zi0+ZmVhdHVyZTsKKworCWlmICgoc3RhdCAmIChBVEFfQlVTWSB8IEFUQV9EUlEgfCBBVEFfRFJEWSkpICE9IEFUQV9EUkRZKSB7CisJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSFNNOworCQlyZXR1cm4gQVRBX0VIX1NPRlRSRVNFVDsKKwl9CisKKwlpZiAoIShxYy0+ZXJyX21hc2sgJiBBQ19FUlJfREVWKSkKKwkJcmV0dXJuIDA7CisKKwlzd2l0Y2ggKHFjLT5kZXYtPmNsYXNzKSB7CisJY2FzZSBBVEFfREVWX0FUQToKKwkJaWYgKGVyciAmIEFUQV9JQ1JDKQorCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9BVEFfQlVTOworCQlpZiAoZXJyICYgQVRBX1VOQykKKwkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfTUVESUE7CisJCWlmIChlcnIgJiBBVEFfSURORikKKwkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSU5WQUxJRDsKKwkJYnJlYWs7CisKKwljYXNlIEFUQV9ERVZfQVRBUEk6CisJCXRtcCA9IGF0YXBpX2VoX3JlcXVlc3Rfc2Vuc2UocWMtPmRldiwKKwkJCQkJICAgICBxYy0+c2NzaWNtZC0+c2Vuc2VfYnVmZmVyKTsKKwkJaWYgKCF0bXApIHsKKwkJCS8qIEFUQV9RQ0ZMQUdfU0VOU0VfVkFMSUQgaXMgdXNlZCB0byB0ZWxsCisJCQkgKiBhdGFwaV9xY19jb21wbGV0ZSgpIHRoYXQgc2Vuc2UgZGF0YSBpcworCQkJICogYWxyZWFkeSB2YWxpZC4KKwkJCSAqCisJCQkgKiBUT0RPOiBpbnRlcnByZXQgc2Vuc2UgZGF0YSBhbmQgc2V0CisJCQkgKiBhcHByb3ByaWF0ZSBlcnJfbWFzay4KKwkJCSAqLworCQkJcWMtPmZsYWdzIHw9IEFUQV9RQ0ZMQUdfU0VOU0VfVkFMSUQ7CisJCX0gZWxzZQorCQkJcWMtPmVycl9tYXNrIHw9IHRtcDsKKwl9CisKKwlpZiAocWMtPmVycl9tYXNrICYgKEFDX0VSUl9IU00gfCBBQ19FUlJfVElNRU9VVCB8IEFDX0VSUl9BVEFfQlVTKSkKKwkJYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisKKwlyZXR1cm4gYWN0aW9uOworfQorCitzdGF0aWMgaW50IGF0YV9laF9jYXRlZ29yaXplX2VyaW5nX2VudHJ5KHN0cnVjdCBhdGFfZXJpbmdfZW50cnkgKmVudCkKK3sKKwlpZiAoZW50LT5lcnJfbWFzayAmIChBQ19FUlJfQVRBX0JVUyB8IEFDX0VSUl9USU1FT1VUKSkKKwkJcmV0dXJuIDE7CisKKwlpZiAoZW50LT5pc19pbykgeworCQlpZiAoZW50LT5lcnJfbWFzayAmIEFDX0VSUl9IU00pCisJCQlyZXR1cm4gMTsKKwkJaWYgKChlbnQtPmVycl9tYXNrICYKKwkJICAgICAoQUNfRVJSX0RFVnxBQ19FUlJfTUVESUF8QUNfRVJSX0lOVkFMSUQpKSA9PSBBQ19FUlJfREVWKQorCQkJcmV0dXJuIDI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBzcGVlZF9kb3duX25lZWRlZF9hcmcgeworCXU2NCBzaW5jZTsKKwlpbnQgbnJfZXJyb3JzWzNdOworfTsKKworc3RhdGljIGludCBzcGVlZF9kb3duX25lZWRlZF9jYihzdHJ1Y3QgYXRhX2VyaW5nX2VudHJ5ICplbnQsIHZvaWQgKnZvaWRfYXJnKQoreworCXN0cnVjdCBzcGVlZF9kb3duX25lZWRlZF9hcmcgKmFyZyA9IHZvaWRfYXJnOworCisJaWYgKGVudC0+dGltZXN0YW1wIDwgYXJnLT5zaW5jZSkKKwkJcmV0dXJuIC0xOworCisJYXJnLT5ucl9lcnJvcnNbYXRhX2VoX2NhdGVnb3JpemVfZXJpbmdfZW50cnkoZW50KV0rKzsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKglhdGFfZWhfc3BlZWRfZG93bl9uZWVkZWQgLSBEZXRlcm1pbmUgd2hldGVyIHNwZWVkIGRvd24gaXMgbmVjZXNzYXJ5CisgKglAZGV2OiBEZXZpY2Ugb2YgaW50ZXJlc3QKKyAqCisgKglUaGlzIGZ1bmN0aW9uIGV4YW1pbmVzIGVycm9yIHJpbmcgb2YgQGRldiBhbmQgZGV0ZXJtaW5lcworICoJd2hldGhlciBzcGVlZCBkb3duIGlzIG5lY2Vzc2FyeS4gIFNwZWVkIGRvd24gaXMgbmVjZXNzYXJ5IGlmCisgKgl0aGVyZSBoYXZlIGJlZW4gbW9yZSB0aGFuIDMgb2YgQ2F0LTEgZXJyb3JzIG9yIDEwIG9mIENhdC0yCisgKgllcnJvcnMgZHVyaW5nIGxhc3QgMTUgbWludXRlcy4KKyAqCisgKglDYXQtMSBlcnJvcnMgYXJlIEFUQV9CVVMsIFRJTUVPVVQgZm9yIGFueSBjb21tYW5kIGFuZCBIU00KKyAqCXZpb2xhdGlvbiBmb3Iga25vd24gc3VwcG9ydGVkIGNvbW1hbmRzLgorICoKKyAqCUNhdC0yIGVycm9ycyBhcmUgdW5jbGFzc2lmaWVkIERFViBlcnJvciBmb3Iga25vd24gc3VwcG9ydGVkCisgKgljb21tYW5kLgorICoKKyAqCUxPQ0tJTkc6CisgKglJbmhlcml0ZWQgZnJvbSBjYWxsZXIuCisgKgorICoJUkVUVVJOUzoKKyAqCTEgaWYgc3BlZWQgZG93biBpcyBuZWNlc3NhcnksIDAgb3RoZXJ3aXNlCisgKi8KK3N0YXRpYyBpbnQgYXRhX2VoX3NwZWVkX2Rvd25fbmVlZGVkKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCit7CisJY29uc3QgdTY0IGludGVydmFsID0gMTVMTFUgKiA2MCAqIEhaOworCXN0YXRpYyBjb25zdCBpbnQgZXJyX2xpbWl0c1szXSA9IHsgLTEsIDMsIDEwIH07CisJc3RydWN0IHNwZWVkX2Rvd25fbmVlZGVkX2FyZyBhcmc7CisJc3RydWN0IGF0YV9lcmluZ19lbnRyeSAqZW50OworCWludCBlcnJfY2F0OworCXU2NCBqNjQ7CisKKwllbnQgPSBhdGFfZXJpbmdfdG9wKCZkZXYtPmVyaW5nKTsKKwlpZiAoIWVudCkKKwkJcmV0dXJuIDA7CisKKwllcnJfY2F0ID0gYXRhX2VoX2NhdGVnb3JpemVfZXJpbmdfZW50cnkoZW50KTsKKwlpZiAoZXJyX2NhdCA9PSAwKQorCQlyZXR1cm4gMDsKKworCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7CisKKwlqNjQgPSBnZXRfamlmZmllc182NCgpOworCWlmIChqNjQgPj0gaW50ZXJ2YWwpCisJCWFyZy5zaW5jZSA9IGo2NCAtIGludGVydmFsOworCWVsc2UKKwkJYXJnLnNpbmNlID0gMDsKKworCWF0YV9lcmluZ19tYXAoJmRldi0+ZXJpbmcsIHNwZWVkX2Rvd25fbmVlZGVkX2NiLCAmYXJnKTsKKworCXJldHVybiBhcmcubnJfZXJyb3JzW2Vycl9jYXRdID4gZXJyX2xpbWl0c1tlcnJfY2F0XTsKK30KKworLyoqCisgKglhdGFfZWhfc3BlZWRfZG93biAtIHJlY29yZCBlcnJvciBhbmQgc3BlZWQgZG93biBpZiBuZWNlc3NhcnkKKyAqCUBkZXY6IEZhaWxlZCBkZXZpY2UKKyAqCUBpc19pbzogRGlkIHRoZSBkZXZpY2UgZmFpbCBkdXJpbmcgbm9ybWFsIElPPworICoJQGVycl9tYXNrOiBlcnJfbWFzayBvZiB0aGUgZXJyb3IKKyAqCisgKglSZWNvcmQgZXJyb3IgYW5kIGV4YW1pbmUgZXJyb3IgaGlzdG9yeSB0byBkZXRlcm1pbmUgd2hldGhlcgorICoJYWRqdXN0aW5nIHRyYW5zbWlzc2lvbiBzcGVlZCBpcyBuZWNlc3NhcnkuICBJdCBhbHNvIHNldHMKKyAqCXRyYW5zbWlzc2lvbiBsaW1pdHMgYXBwcm9wcmlhdGVseSBpZiBzdWNoIGFkanVzdG1lbnQgaXMKKyAqCW5lY2Vzc2FyeS4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICoKKyAqCVJFVFVSTlM6CisgKgkwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLworc3RhdGljIGludCBhdGFfZWhfc3BlZWRfZG93bihzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LCBpbnQgaXNfaW8sCisJCQkgICAgIHVuc2lnbmVkIGludCBlcnJfbWFzaykKK3sKKwlpZiAoIWVycl9tYXNrKQorCQlyZXR1cm4gMDsKKworCS8qIHJlY29yZCBlcnJvciBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgc3BlZWQgZG93biBpcyBuZWNlc3NhcnkgKi8KKwlhdGFfZXJpbmdfcmVjb3JkKCZkZXYtPmVyaW5nLCBpc19pbywgZXJyX21hc2spOworCisJaWYgKCFhdGFfZWhfc3BlZWRfZG93bl9uZWVkZWQoZGV2KSkKKwkJcmV0dXJuIDA7CisKKwkvKiBzcGVlZCBkb3duIFNBVEEgbGluayBzcGVlZCBpZiBwb3NzaWJsZSAqLworCWlmIChzYXRhX2Rvd25fc3BkX2xpbWl0KGRldi0+YXApID09IDApCisJCXJldHVybiBBVEFfRUhfSEFSRFJFU0VUOworCisJLyogbG93ZXIgdHJhbnNmZXIgbW9kZSAqLworCWlmIChhdGFfZG93bl94ZmVybWFza19saW1pdChkZXYsIDApID09IDApCisJCXJldHVybiBBVEFfRUhfU09GVFJFU0VUOworCisJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0VSUiwKKwkJICAgICAgICJzcGVlZCBkb3duIHJlcXVlc3RlZCBidXQgbm8gdHJhbnNmZXIgbW9kZSBsZWZ0XG4iKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKglhdGFfZWhfYXV0b3BzeSAtIGFuYWx5emUgZXJyb3IgYW5kIGRldGVybWluZSByZWNvdmVyeSBhY3Rpb24KKyAqCUBhcDogQVRBIHBvcnQgdG8gcGVyZm9ybSBhdXRvcHN5IG9uCisgKgorICoJQW5hbHl6ZSB3aHkgQGFwIGZhaWxlZCBhbmQgZGV0ZXJtaW5lIHdoaWNoIHJlY292ZXJ5IGFjdGlvbiBpcworICoJbmVlZGVkLiAgVGhpcyBmdW5jdGlvbiBhbHNvIHNldHMgbW9yZSBkZXRhaWxlZCBBQ19FUlJfKiB2YWx1ZXMKKyAqCWFuZCBmaWxscyBzZW5zZSBkYXRhIGZvciBBVEFQSSBDSEVDSyBTRU5TRS4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCitzdGF0aWMgdm9pZCBhdGFfZWhfYXV0b3BzeShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXN0cnVjdCBhdGFfZWhfY29udGV4dCAqZWhjID0gJmFwLT5laF9jb250ZXh0OworCXVuc2lnbmVkIGludCBhY3Rpb24gPSBlaGMtPmkuYWN0aW9uOworCXN0cnVjdCBhdGFfZGV2aWNlICpmYWlsZWRfZGV2ID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQgYWxsX2Vycl9tYXNrID0gMDsKKwlpbnQgdGFnLCBpc19pbyA9IDA7CisJdTMyIHNlcnJvcjsKKwlpbnQgcmM7CisKKwlEUFJJTlRLKCJFTlRFUlxuIik7CisKKwkvKiBvYnRhaW4gYW5kIGFuYWx5emUgU0Vycm9yICovCisJcmMgPSBzYXRhX3Njcl9yZWFkKGFwLCBTQ1JfRVJST1IsICZzZXJyb3IpOworCWlmIChyYyA9PSAwKSB7CisJCWVoYy0+aS5zZXJyb3IgfD0gc2Vycm9yOworCQlhdGFfZWhfYW5hbHl6ZV9zZXJyb3IoYXApOworCX0gZWxzZSBpZiAocmMgIT0gLUVPUE5PVFNVUFApCisJCWFjdGlvbiB8PSBBVEFfRUhfSEFSRFJFU0VUOworCisJLyogYW5hbHl6ZSBOQ1EgZmFpbHVyZSAqLworCWF0YV9laF9hbmFseXplX25jcV9lcnJvcihhcCk7CisKKwkvKiBhbnkgcmVhbCBlcnJvciB0cnVtcHMgQUNfRVJSX09USEVSICovCisJaWYgKGVoYy0+aS5lcnJfbWFzayAmIH5BQ19FUlJfT1RIRVIpCisJCWVoYy0+aS5lcnJfbWFzayAmPSB+QUNfRVJSX09USEVSOworCisJYWxsX2Vycl9tYXNrIHw9IGVoYy0+aS5lcnJfbWFzazsKKworCWZvciAodGFnID0gMDsgdGFnIDwgQVRBX01BWF9RVUVVRTsgdGFnKyspIHsKKwkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IF9fYXRhX3FjX2Zyb21fdGFnKGFwLCB0YWcpOworCisJCWlmICghKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRkFJTEVEKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIGluaGVyaXQgdXBwZXIgbGV2ZWwgZXJyX21hc2sgKi8KKwkJcWMtPmVycl9tYXNrIHw9IGVoYy0+aS5lcnJfbWFzazsKKworCQkvKiBhbmFseXplIFRGICovCisJCWFjdGlvbiB8PSBhdGFfZWhfYW5hbHl6ZV90ZihxYywgJnFjLT5yZXN1bHRfdGYpOworCisJCS8qIERFViBlcnJvcnMgYXJlIHByb2JhYmx5IHNwdXJpb3VzIGluIGNhc2Ugb2YgQVRBX0JVUyBlcnJvciAqLworCQlpZiAocWMtPmVycl9tYXNrICYgQUNfRVJSX0FUQV9CVVMpCisJCQlxYy0+ZXJyX21hc2sgJj0gfihBQ19FUlJfREVWIHwgQUNfRVJSX01FRElBIHwKKwkJCQkJICBBQ19FUlJfSU5WQUxJRCk7CisKKwkJLyogYW55IHJlYWwgZXJyb3IgdHJ1bXBzIHVua25vd24gZXJyb3IgKi8KKwkJaWYgKHFjLT5lcnJfbWFzayAmIH5BQ19FUlJfT1RIRVIpCisJCQlxYy0+ZXJyX21hc2sgJj0gfkFDX0VSUl9PVEhFUjsKKworCQkvKiBTRU5TRV9WQUxJRCB0cnVtcHMgZGV2L3Vua25vd24gZXJyb3IgYW5kIHJldmFsaWRhdGlvbiAqLworCQlpZiAocWMtPmZsYWdzICYgQVRBX1FDRkxBR19TRU5TRV9WQUxJRCkgeworCQkJcWMtPmVycl9tYXNrICY9IH4oQUNfRVJSX0RFViB8IEFDX0VSUl9PVEhFUik7CisJCQlhY3Rpb24gJj0gfkFUQV9FSF9SRVZBTElEQVRFOworCQl9CisKKwkJLyogYWNjdW11bGF0ZSBlcnJvciBpbmZvICovCisJCWZhaWxlZF9kZXYgPSBxYy0+ZGV2OworCQlhbGxfZXJyX21hc2sgfD0gcWMtPmVycl9tYXNrOworCQlpZiAocWMtPmZsYWdzICYgQVRBX1FDRkxBR19JTykKKwkJCWlzX2lvID0gMTsKKwl9CisKKwkvKiBlbmZvcmNlIGRlZmF1bHQgRUggYWN0aW9ucyAqLworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19GUk9aRU4gfHwKKwkgICAgYWxsX2Vycl9tYXNrICYgKEFDX0VSUl9IU00gfCBBQ19FUlJfVElNRU9VVCkpCisJCWFjdGlvbiB8PSBBVEFfRUhfU09GVFJFU0VUOworCWVsc2UgaWYgKGFsbF9lcnJfbWFzaykKKwkJYWN0aW9uIHw9IEFUQV9FSF9SRVZBTElEQVRFOworCisJLyogaWYgd2UgaGF2ZSBvZmZlbmRpbmcgcWNzIGFuZCB0aGUgYXNzb2NpYXRlZCBmYWlsZWQgZGV2aWNlICovCisJaWYgKGZhaWxlZF9kZXYpIHsKKwkJLyogc3BlZWQgZG93biAqLworCQlhY3Rpb24gfD0gYXRhX2VoX3NwZWVkX2Rvd24oZmFpbGVkX2RldiwgaXNfaW8sIGFsbF9lcnJfbWFzayk7CisKKwkJLyogcGVyZm9ybSBwZXItZGV2IEVIIGFjdGlvbiBvbmx5IG9uIHRoZSBvZmZlbmRpbmcgZGV2aWNlICovCisJCWVoYy0+aS5kZXZfYWN0aW9uW2ZhaWxlZF9kZXYtPmRldm5vXSB8PQorCQkJYWN0aW9uICYgQVRBX0VIX1BFUkRFVl9NQVNLOworCQlhY3Rpb24gJj0gfkFUQV9FSF9QRVJERVZfTUFTSzsKKwl9CisKKwkvKiByZWNvcmQgYXV0b3BzeSByZXN1bHQgKi8KKwllaGMtPmkuZGV2ID0gZmFpbGVkX2RldjsKKwllaGMtPmkuYWN0aW9uID0gYWN0aW9uOworCisJRFBSSU5USygiRVhJVFxuIik7Cit9CisKKy8qKgorICoJYXRhX2VoX3JlcG9ydCAtIHJlcG9ydCBlcnJvciBoYW5kbGluZyB0byB1c2VyCisgKglAYXA6IEFUQSBwb3J0IEVIIGlzIGdvaW5nIG9uCisgKgorICoJUmVwb3J0IEVIIHRvIHVzZXIuCisgKgorICoJTE9DS0lORzoKKyAqCU5vbmUuCisgKi8KK3N0YXRpYyB2b2lkIGF0YV9laF9yZXBvcnQoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgKmVoYyA9ICZhcC0+ZWhfY29udGV4dDsKKwljb25zdCBjaGFyICpmcm96ZW4sICpkZXNjOworCWludCB0YWcsIG5yX2ZhaWxlZCA9IDA7CisKKwlkZXNjID0gTlVMTDsKKwlpZiAoZWhjLT5pLmRlc2NbMF0gIT0gJ1wwJykKKwkJZGVzYyA9IGVoYy0+aS5kZXNjOworCisJZm9yICh0YWcgPSAwOyB0YWcgPCBBVEFfTUFYX1FVRVVFOyB0YWcrKykgeworCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjID0gX19hdGFfcWNfZnJvbV90YWcoYXAsIHRhZyk7CisKKwkJaWYgKCEocWMtPmZsYWdzICYgQVRBX1FDRkxBR19GQUlMRUQpKQorCQkJY29udGludWU7CisJCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1NFTlNFX1ZBTElEICYmICFxYy0+ZXJyX21hc2spCisJCQljb250aW51ZTsKKworCQlucl9mYWlsZWQrKzsKKwl9CisKKwlpZiAoIW5yX2ZhaWxlZCAmJiAhZWhjLT5pLmVycl9tYXNrKQorCQlyZXR1cm47CisKKwlmcm96ZW4gPSAiIjsKKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRlJPWkVOKQorCQlmcm96ZW4gPSAiIGZyb3plbiI7CisKKwlpZiAoZWhjLT5pLmRldikgeworCQlhdGFfZGV2X3ByaW50ayhlaGMtPmkuZGV2LCBLRVJOX0VSUiwgImV4Y2VwdGlvbiBFbWFzayAweCV4ICIKKwkJCSAgICAgICAiU0FjdCAweCV4IFNFcnIgMHgleCBhY3Rpb24gMHgleCVzXG4iLAorCQkJICAgICAgIGVoYy0+aS5lcnJfbWFzaywgYXAtPnNhY3RpdmUsIGVoYy0+aS5zZXJyb3IsCisJCQkgICAgICAgZWhjLT5pLmFjdGlvbiwgZnJvemVuKTsKKwkJaWYgKGRlc2MpCisJCQlhdGFfZGV2X3ByaW50ayhlaGMtPmkuZGV2LCBLRVJOX0VSUiwgIiglcylcbiIsIGRlc2MpOworCX0gZWxzZSB7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJleGNlcHRpb24gRW1hc2sgMHgleCAiCisJCQkJIlNBY3QgMHgleCBTRXJyIDB4JXggYWN0aW9uIDB4JXglc1xuIiwKKwkJCQllaGMtPmkuZXJyX21hc2ssIGFwLT5zYWN0aXZlLCBlaGMtPmkuc2Vycm9yLAorCQkJCWVoYy0+aS5hY3Rpb24sIGZyb3plbik7CisJCWlmIChkZXNjKQorCQkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgIiglcylcbiIsIGRlc2MpOworCX0KKworCWZvciAodGFnID0gMDsgdGFnIDwgQVRBX01BWF9RVUVVRTsgdGFnKyspIHsKKwkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IF9fYXRhX3FjX2Zyb21fdGFnKGFwLCB0YWcpOworCisJCWlmICghKHFjLT5mbGFncyAmIEFUQV9RQ0ZMQUdfRkFJTEVEKSB8fCAhcWMtPmVycl9tYXNrKQorCQkJY29udGludWU7CisKKwkJYXRhX2Rldl9wcmludGsocWMtPmRldiwgS0VSTl9FUlIsICJ0YWcgJWQgY21kIDB4JXggIgorCQkJICAgICAgICJFbWFzayAweCV4IHN0YXQgMHgleCBlcnIgMHgleCAoJXMpXG4iLAorCQkJICAgICAgIHFjLT50YWcsIHFjLT50Zi5jb21tYW5kLCBxYy0+ZXJyX21hc2ssCisJCQkgICAgICAgcWMtPnJlc3VsdF90Zi5jb21tYW5kLCBxYy0+cmVzdWx0X3RmLmZlYXR1cmUsCisJCQkgICAgICAgYXRhX2Vycl9zdHJpbmcocWMtPmVycl9tYXNrKSk7CisJfQorfQorCitzdGF0aWMgaW50IGF0YV9kb19yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBhdGFfcmVzZXRfZm5fdCByZXNldCwKKwkJCXVuc2lnbmVkIGludCAqY2xhc3NlcykKK3sKKwlpbnQgaSwgcmM7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCWNsYXNzZXNbaV0gPSBBVEFfREVWX1VOS05PV047CisKKwlyYyA9IHJlc2V0KGFwLCBjbGFzc2VzKTsKKwlpZiAocmMpCisJCXJldHVybiByYzsKKworCS8qIElmIGFueSBjbGFzcyBpc24ndCBBVEFfREVWX1VOS05PV04sIGNvbnNpZGVyIGNsYXNzaWZpY2F0aW9uCisJICogaXMgY29tcGxldGUgYW5kIGNvbnZlcnQgYWxsIEFUQV9ERVZfVU5LTk9XTiB0bworCSAqIEFUQV9ERVZfTk9ORS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCWlmIChjbGFzc2VzW2ldICE9IEFUQV9ERVZfVU5LTk9XTikKKwkJCWJyZWFrOworCisJaWYgKGkgPCBBVEFfTUFYX0RFVklDRVMpCisJCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykKKwkJCWlmIChjbGFzc2VzW2ldID09IEFUQV9ERVZfVU5LTk9XTikKKwkJCQljbGFzc2VzW2ldID0gQVRBX0RFVl9OT05FOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXRhX2VoX2ZvbGxvd3VwX3Nyc3RfbmVlZGVkKGludCByYywgaW50IGNsYXNzaWZ5LAorCQkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpCit7CisJaWYgKHJjID09IC1FQUdBSU4pCisJCXJldHVybiAxOworCWlmIChyYyAhPSAwKQorCQlyZXR1cm4gMDsKKwlpZiAoY2xhc3NpZnkgJiYgY2xhc3Nlc1swXSA9PSBBVEFfREVWX1VOS05PV04pCisJCXJldHVybiAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF0YV9laF9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgY2xhc3NpZnksCisJCQlhdGFfcHJlcmVzZXRfZm5fdCBwcmVyZXNldCwgYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LAorCQkJYXRhX3Jlc2V0X2ZuX3QgaGFyZHJlc2V0LCBhdGFfcG9zdHJlc2V0X2ZuX3QgcG9zdHJlc2V0KQoreworCXN0cnVjdCBhdGFfZWhfY29udGV4dCAqZWhjID0gJmFwLT5laF9jb250ZXh0OworCXVuc2lnbmVkIGludCAqY2xhc3NlcyA9IGVoYy0+Y2xhc3NlczsKKwlpbnQgdHJpZXMgPSBBVEFfRUhfUkVTRVRfVFJJRVM7CisJaW50IHZlcmJvc2UgPSAhKGFwLT5mbGFncyAmIEFUQV9GTEFHX0xPQURJTkcpOworCXVuc2lnbmVkIGludCBhY3Rpb247CisJYXRhX3Jlc2V0X2ZuX3QgcmVzZXQ7CisJaW50IGksIGRpZF9mb2xsb3d1cF9zcnN0LCByYzsKKworCS8qIERldGVybWluZSB3aGljaCByZXNldCB0byB1c2UgYW5kIHJlY29yZCBpbiBlaGMtPmkuYWN0aW9uLgorCSAqIHByZXJlc2V0KCkgbWF5IGV4YW1pbmUgYW5kIG1vZGlmeSBpdC4KKwkgKi8KKwlhY3Rpb24gPSBlaGMtPmkuYWN0aW9uOworCWVoYy0+aS5hY3Rpb24gJj0gfkFUQV9FSF9SRVNFVF9NQVNLOworCWlmIChzb2Z0cmVzZXQgJiYgKCFoYXJkcmVzZXQgfHwgKCFzYXRhX3NldF9zcGRfbmVlZGVkKGFwKSAmJgorCQkJCQkgIShhY3Rpb24gJiBBVEFfRUhfSEFSRFJFU0VUKSkpKQorCQllaGMtPmkuYWN0aW9uIHw9IEFUQV9FSF9TT0ZUUkVTRVQ7CisJZWxzZQorCQllaGMtPmkuYWN0aW9uIHw9IEFUQV9FSF9IQVJEUkVTRVQ7CisKKwlpZiAocHJlcmVzZXQpIHsKKwkJcmMgPSBwcmVyZXNldChhcCk7CisJCWlmIChyYykgeworCQkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwKKwkJCQkJInByZXJlc2V0IGZhaWxlZCAoZXJybm89JWQpXG4iLCByYyk7CisJCQlyZXR1cm4gcmM7CisJCX0KKwl9CisKKwkvKiBwcmVyZXNldCgpIG1pZ2h0IGhhdmUgbW9kaWZpZWQgZWhjLT5pLmFjdGlvbiAqLworCWlmIChlaGMtPmkuYWN0aW9uICYgQVRBX0VIX0hBUkRSRVNFVCkKKwkJcmVzZXQgPSBoYXJkcmVzZXQ7CisJZWxzZSBpZiAoZWhjLT5pLmFjdGlvbiAmIEFUQV9FSF9TT0ZUUkVTRVQpCisJCXJlc2V0ID0gc29mdHJlc2V0OworCWVsc2UgeworCQkvKiBwcmVyZXNldCB0b2xkIHVzIG5vdCB0byByZXNldCwgYmFuZyBjbGFzc2VzIGFuZCByZXR1cm4gKi8KKwkJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQorCQkJY2xhc3Nlc1tpXSA9IEFUQV9ERVZfTk9ORTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogZGlkIHByZXJlc2V0KCkgc2NyZXcgdXA/ICBpZiBzbywgZml4IHVwIHRvIGF2b2lkIG9vcHNpbmcgKi8KKwlpZiAoIXJlc2V0KSB7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJCVUc6IHByZXJlc2V0KCkgcmVxdWVzdGVkICIKKwkJCQkiaW52YWxpZCByZXNldCB0eXBlXG4iKTsKKwkJaWYgKHNvZnRyZXNldCkKKwkJCXJlc2V0ID0gc29mdHJlc2V0OworCQllbHNlCisJCQlyZXNldCA9IGhhcmRyZXNldDsKKwl9CisKKyByZXRyeToKKwkvKiBzaHV0IHVwIGR1cmluZyBib290IHByb2JpbmcgKi8KKwlpZiAodmVyYm9zZSkKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sICIlcyByZXNldHRpbmcgcG9ydFxuIiwKKwkJCQlyZXNldCA9PSBzb2Z0cmVzZXQgPyAic29mdCIgOiAiaGFyZCIpOworCisJLyogcmVzZXQgKi8KKwlhdGFfZWhfYWJvdXRfdG9fZG8oYXAsIE5VTEwsIEFUQV9FSF9SRVNFVF9NQVNLKTsKKwllaGMtPmkuZmxhZ3MgfD0gQVRBX0VISV9ESURfUkVTRVQ7CisKKwlyYyA9IGF0YV9kb19yZXNldChhcCwgcmVzZXQsIGNsYXNzZXMpOworCisJZGlkX2ZvbGxvd3VwX3Nyc3QgPSAwOworCWlmIChyZXNldCA9PSBoYXJkcmVzZXQgJiYKKwkgICAgYXRhX2VoX2ZvbGxvd3VwX3Nyc3RfbmVlZGVkKHJjLCBjbGFzc2lmeSwgY2xhc3NlcykpIHsKKwkJLyogb2theSwgbGV0J3MgZG8gZm9sbG93LXVwIHNvZnRyZXNldCAqLworCQlkaWRfZm9sbG93dXBfc3JzdCA9IDE7CisJCXJlc2V0ID0gc29mdHJlc2V0OworCisJCWlmICghcmVzZXQpIHsKKwkJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsCisJCQkJCSJmb2xsb3ctdXAgc29mdHJlc2V0IHJlcXVpcmVkICIKKwkJCQkJImJ1dCBubyBzb2Z0cmVzZXQgYXZhbGlhYmxlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJYXRhX2VoX2Fib3V0X3RvX2RvKGFwLCBOVUxMLCBBVEFfRUhfUkVTRVRfTUFTSyk7CisJCXJjID0gYXRhX2RvX3Jlc2V0KGFwLCByZXNldCwgY2xhc3Nlcyk7CisKKwkJaWYgKHJjID09IDAgJiYgY2xhc3NpZnkgJiYKKwkJICAgIGNsYXNzZXNbMF0gPT0gQVRBX0RFVl9VTktOT1dOKSB7CisJCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLAorCQkJCQkiY2xhc3NpZmljYXRpb24gZmFpbGVkXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCisJaWYgKHJjICYmIC0tdHJpZXMpIHsKKwkJY29uc3QgY2hhciAqdHlwZTsKKworCQlpZiAocmVzZXQgPT0gc29mdHJlc2V0KSB7CisJCQlpZiAoZGlkX2ZvbGxvd3VwX3Nyc3QpCisJCQkJdHlwZSA9ICJmb2xsb3ctdXAgc29mdCI7CisJCQllbHNlCisJCQkJdHlwZSA9ICJzb2Z0IjsKKwkJfSBlbHNlCisJCQl0eXBlID0gImhhcmQiOworCisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9XQVJOSU5HLAorCQkJCSIlc3Jlc2V0IGZhaWxlZCwgcmV0cnlpbmcgaW4gNSBzZWNzXG4iLCB0eXBlKTsKKwkJc3NsZWVwKDUpOworCisJCWlmIChyZXNldCA9PSBoYXJkcmVzZXQpCisJCQlzYXRhX2Rvd25fc3BkX2xpbWl0KGFwKTsKKwkJaWYgKGhhcmRyZXNldCkKKwkJCXJlc2V0ID0gaGFyZHJlc2V0OworCQlnb3RvIHJldHJ5OworCX0KKworCWlmIChyYyA9PSAwKSB7CisJCS8qIEFmdGVyIHRoZSByZXNldCwgdGhlIGRldmljZSBzdGF0ZSBpcyBQSU8gMCBhbmQgdGhlCisJCSAqIGNvbnRyb2xsZXIgc3RhdGUgaXMgdW5kZWZpbmVkLiAgUmVjb3JkIHRoZSBtb2RlLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQorCQkJYXAtPmRldmljZVtpXS5waW9fbW9kZSA9IFhGRVJfUElPXzA7CisKKwkJaWYgKHBvc3RyZXNldCkKKwkJCXBvc3RyZXNldChhcCwgY2xhc3Nlcyk7CisKKwkJLyogcmVzZXQgc3VjY2Vzc2Z1bCwgc2NoZWR1bGUgcmV2YWxpZGF0aW9uICovCisJCWF0YV9laF9kb25lKGFwLCBOVUxMLCBBVEFfRUhfUkVTRVRfTUFTSyk7CisJCWVoYy0+aS5hY3Rpb24gfD0gQVRBX0VIX1JFVkFMSURBVEU7CisJfQorCisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGF0YV9laF9yZXZhbGlkYXRlX2FuZF9hdHRhY2goc3RydWN0IGF0YV9wb3J0ICphcCwKKwkJCQkJc3RydWN0IGF0YV9kZXZpY2UgKipyX2ZhaWxlZF9kZXYpCit7CisJc3RydWN0IGF0YV9laF9jb250ZXh0ICplaGMgPSAmYXAtPmVoX2NvbnRleHQ7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBpLCByYyA9IDA7CisKKwlEUFJJTlRLKCJFTlRFUlxuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKKwkJdW5zaWduZWQgaW50IGFjdGlvbjsKKworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKKwkJYWN0aW9uID0gZWhjLT5pLmFjdGlvbiB8IGVoYy0+aS5kZXZfYWN0aW9uW2Rldi0+ZGV2bm9dOworCisJCWlmIChhY3Rpb24gJiBBVEFfRUhfUkVWQUxJREFURSAmJiBhdGFfZGV2X2VuYWJsZWQoZGV2KSkgeworCQkJaWYgKGF0YV9wb3J0X29mZmxpbmUoYXApKSB7CisJCQkJcmMgPSAtRUlPOworCQkJCWJyZWFrOworCQkJfQorCisJCQlhdGFfZWhfYWJvdXRfdG9fZG8oYXAsIGRldiwgQVRBX0VIX1JFVkFMSURBVEUpOworCQkJcmMgPSBhdGFfZGV2X3JldmFsaWRhdGUoZGV2LAorCQkJCQllaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX0RJRF9SRVNFVCk7CisJCQlpZiAocmMpCisJCQkJYnJlYWs7CisKKwkJCWF0YV9laF9kb25lKGFwLCBkZXYsIEFUQV9FSF9SRVZBTElEQVRFKTsKKworCQkJLyogc2NoZWR1bGUgdGhlIHNjc2lfcmVzY2FuX2RldmljZSgpIGhlcmUgKi8KKwkJCXF1ZXVlX3dvcmsoYXRhX2F1eF93cSwgJihhcC0+c2NzaV9yZXNjYW5fdGFzaykpOworCQl9IGVsc2UgaWYgKGRldi0+Y2xhc3MgPT0gQVRBX0RFVl9VTktOT1dOICYmCisJCQkgICBlaGMtPnRyaWVzW2Rldi0+ZGV2bm9dICYmCisJCQkgICBhdGFfY2xhc3NfZW5hYmxlZChlaGMtPmNsYXNzZXNbZGV2LT5kZXZub10pKSB7CisJCQlkZXYtPmNsYXNzID0gZWhjLT5jbGFzc2VzW2Rldi0+ZGV2bm9dOworCisJCQlyYyA9IGF0YV9kZXZfcmVhZF9pZChkZXYsICZkZXYtPmNsYXNzLCAxLCBkZXYtPmlkKTsKKwkJCWlmIChyYyA9PSAwKQorCQkJCXJjID0gYXRhX2Rldl9jb25maWd1cmUoZGV2LCAxKTsKKworCQkJaWYgKHJjKSB7CisJCQkJZGV2LT5jbGFzcyA9IEFUQV9ERVZfVU5LTk9XTjsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwkJCWFwLT5mbGFncyB8PSBBVEFfRkxBR19TQ1NJX0hPVFBMVUc7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7CisJCX0KKwl9CisKKwlpZiAocmMpCisJCSpyX2ZhaWxlZF9kZXYgPSBkZXY7CisKKwlEUFJJTlRLKCJFWElUXG4iKTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgYXRhX3BvcnRfbnJfZW5hYmxlZChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCWludCBpLCBjbnQgPSAwOworCisJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKQorCQlpZiAoYXRhX2Rldl9lbmFibGVkKCZhcC0+ZGV2aWNlW2ldKSkKKwkJCWNudCsrOworCXJldHVybiBjbnQ7Cit9CisKK3N0YXRpYyBpbnQgYXRhX3BvcnRfbnJfdmFjYW50KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJaW50IGksIGNudCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCWlmIChhcC0+ZGV2aWNlW2ldLmNsYXNzID09IEFUQV9ERVZfVU5LTk9XTikKKwkJCWNudCsrOworCXJldHVybiBjbnQ7Cit9CisKK3N0YXRpYyBpbnQgYXRhX2VoX3NraXBfcmVjb3Zlcnkoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgKmVoYyA9ICZhcC0+ZWhfY29udGV4dDsKKwlpbnQgaTsKKworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19GUk9aRU4gfHwgYXRhX3BvcnRfbnJfZW5hYmxlZChhcCkpCisJCXJldHVybiAwOworCisJLyogc2tpcCBpZiBjbGFzcyBjb2RlcyBmb3IgYWxsIHZhY2FudCBzbG90cyBhcmUgQVRBX0RFVl9OT05FICovCisJZm9yIChpID0gMDsgaSA8IEFUQV9NQVhfREVWSUNFUzsgaSsrKSB7CisJCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtpXTsKKworCQlpZiAoZGV2LT5jbGFzcyA9PSBBVEFfREVWX1VOS05PV04gJiYKKwkJICAgIGVoYy0+Y2xhc3Nlc1tkZXYtPmRldm5vXSAhPSBBVEFfREVWX05PTkUpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMTsKK30KKworLyoqCisgKglhdGFfZWhfcmVjb3ZlciAtIHJlY292ZXIgaG9zdCBwb3J0IGFmdGVyIGVycm9yCisgKglAYXA6IGhvc3QgcG9ydCB0byByZWNvdmVyCisgKglAcHJlcmVzZXQ6IHByZXJlc2V0IG1ldGhvZCAoY2FuIGJlIE5VTEwpCisgKglAc29mdHJlc2V0OiBzb2Z0cmVzZXQgbWV0aG9kIChjYW4gYmUgTlVMTCkKKyAqCUBoYXJkcmVzZXQ6IGhhcmRyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQorICoJQHBvc3RyZXNldDogcG9zdHJlc2V0IG1ldGhvZCAoY2FuIGJlIE5VTEwpCisgKgorICoJVGhpcyBpcyB0aGUgYWxwaGEgYW5kIG9tZWdhLCBldW0gYW5kIHlhbmcsIGhlYXJ0IGFuZCBzb3VsIG9mCisgKglsaWJhdGEgZXhjZXB0aW9uIGhhbmRsaW5nLiAgT24gZW50cnksIGFjdGlvbnMgcmVxdWlyZWQgdG8KKyAqCXJlY292ZXIgdGhlIHBvcnQgYW5kIGhvdHBsdWcgcmVxdWVzdHMgYXJlIHJlY29yZGVkIGluCisgKgllaF9jb250ZXh0LiAgVGhpcyBmdW5jdGlvbiBleGVjdXRlcyBhbGwgdGhlIG9wZXJhdGlvbnMgd2l0aAorICoJYXBwcm9wcmlhdGUgcmV0cmlhbHMgYW5kIGZhbGxiYWNrcyB0byByZXN1cnJlY3QgZmFpbGVkCisgKglkZXZpY2VzLCBkZXRhY2ggZ29uZXJzIGFuZCBncmVldCBuZXdjb21lcnMuCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCAtZXJybm8gb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGludCBhdGFfZWhfcmVjb3ZlcihzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBhdGFfcHJlcmVzZXRfZm5fdCBwcmVyZXNldCwKKwkJCSAgYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LCBhdGFfcmVzZXRfZm5fdCBoYXJkcmVzZXQsCisJCQkgIGF0YV9wb3N0cmVzZXRfZm5fdCBwb3N0cmVzZXQpCit7CisJc3RydWN0IGF0YV9laF9jb250ZXh0ICplaGMgPSAmYXAtPmVoX2NvbnRleHQ7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKKwlpbnQgZG93bl94ZmVybWFzaywgaSwgcmM7CisKKwlEUFJJTlRLKCJFTlRFUlxuIik7CisKKwkvKiBwcmVwIGZvciByZWNvdmVyeSAqLworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgeworCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKKworCQllaGMtPnRyaWVzW2Rldi0+ZGV2bm9dID0gQVRBX0VIX0RFVl9UUklFUzsKKworCQkvKiBwcm9jZXNzIGhvdHBsdWcgcmVxdWVzdCAqLworCQlpZiAoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19ERVRBQ0gpCisJCQlhdGFfZWhfZGV0YWNoX2RldihkZXYpOworCisJCWlmICghYXRhX2Rldl9lbmFibGVkKGRldikgJiYKKwkJICAgICgoZWhjLT5pLnByb2JlX21hc2sgJiAoMSA8PCBkZXYtPmRldm5vKSkgJiYKKwkJICAgICAhKGVoYy0+ZGlkX3Byb2JlX21hc2sgJiAoMSA8PCBkZXYtPmRldm5vKSkpKSB7CisJCQlhdGFfZWhfZGV0YWNoX2RldihkZXYpOworCQkJYXRhX2Rldl9pbml0KGRldik7CisJCQllaGMtPmRpZF9wcm9iZV9tYXNrIHw9ICgxIDw8IGRldi0+ZGV2bm8pOworCQkJZWhjLT5pLmFjdGlvbiB8PSBBVEFfRUhfU09GVFJFU0VUOworCQl9CisJfQorCisgcmV0cnk6CisJZG93bl94ZmVybWFzayA9IDA7CisJcmMgPSAwOworCisJLyogaWYgVU5MT0FESU5HLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwlpZiAoYXAtPmZsYWdzICYgQVRBX0ZMQUdfVU5MT0FESU5HKQorCQlnb3RvIG91dDsKKworCS8qIHNraXAgRUggaWYgcG9zc2libGUuICovCisJaWYgKGF0YV9laF9za2lwX3JlY292ZXJ5KGFwKSkKKwkJZWhjLT5pLmFjdGlvbiA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCWVoYy0+Y2xhc3Nlc1tpXSA9IEFUQV9ERVZfVU5LTk9XTjsKKworCS8qIHJlc2V0ICovCisJaWYgKGVoYy0+aS5hY3Rpb24gJiBBVEFfRUhfUkVTRVRfTUFTSykgeworCQlhdGFfZWhfZnJlZXplX3BvcnQoYXApOworCisJCXJjID0gYXRhX2VoX3Jlc2V0KGFwLCBhdGFfcG9ydF9ucl92YWNhbnQoYXApLCBwcmVyZXNldCwKKwkJCQkgIHNvZnRyZXNldCwgaGFyZHJlc2V0LCBwb3N0cmVzZXQpOworCQlpZiAocmMpIHsKKwkJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsCisJCQkJCSJyZXNldCBmYWlsZWQsIGdpdmluZyB1cFxuIik7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWF0YV9laF90aGF3X3BvcnQoYXApOworCX0KKworCS8qIHJldmFsaWRhdGUgZXhpc3RpbmcgZGV2aWNlcyBhbmQgYXR0YWNoIG5ldyBvbmVzICovCisJcmMgPSBhdGFfZWhfcmV2YWxpZGF0ZV9hbmRfYXR0YWNoKGFwLCAmZGV2KTsKKwlpZiAocmMpCisJCWdvdG8gZGV2X2ZhaWw7CisKKwkvKiBjb25maWd1cmUgdHJhbnNmZXIgbW9kZSBpZiB0aGUgcG9ydCBoYXMgYmVlbiByZXNldCAqLworCWlmIChlaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX0RJRF9SRVNFVCkgeworCQlyYyA9IGF0YV9zZXRfbW9kZShhcCwgJmRldik7CisJCWlmIChyYykgeworCQkJZG93bl94ZmVybWFzayA9IDE7CisJCQlnb3RvIGRldl9mYWlsOworCQl9CisJfQorCisJZ290byBvdXQ7CisKKyBkZXZfZmFpbDoKKwlzd2l0Y2ggKHJjKSB7CisJY2FzZSAtRU5PREVWOgorCQkvKiBkZXZpY2UgbWlzc2luZywgc2NoZWR1bGUgcHJvYmluZyAqLworCQllaGMtPmkucHJvYmVfbWFzayB8PSAoMSA8PCBkZXYtPmRldm5vKTsKKwljYXNlIC1FSU5WQUw6CisJCWVoYy0+dHJpZXNbZGV2LT5kZXZub10gPSAwOworCQlicmVhazsKKwljYXNlIC1FSU86CisJCXNhdGFfZG93bl9zcGRfbGltaXQoYXApOworCWRlZmF1bHQ6CisJCWVoYy0+dHJpZXNbZGV2LT5kZXZub10tLTsKKwkJaWYgKGRvd25feGZlcm1hc2sgJiYKKwkJICAgIGF0YV9kb3duX3hmZXJtYXNrX2xpbWl0KGRldiwgZWhjLT50cmllc1tkZXYtPmRldm5vXSA9PSAxKSkKKwkJCWVoYy0+dHJpZXNbZGV2LT5kZXZub10gPSAwOworCX0KKworCWlmIChhdGFfZGV2X2VuYWJsZWQoZGV2KSAmJiAhZWhjLT50cmllc1tkZXYtPmRldm5vXSkgeworCQkvKiBkaXNhYmxlIGRldmljZSBpZiBpdCBoYXMgdXNlZCB1cCBhbGwgaXRzIGNoYW5jZXMgKi8KKwkJYXRhX2Rldl9kaXNhYmxlKGRldik7CisKKwkJLyogZGV0YWNoIGlmIG9mZmxpbmUgKi8KKwkJaWYgKGF0YV9wb3J0X29mZmxpbmUoYXApKQorCQkJYXRhX2VoX2RldGFjaF9kZXYoZGV2KTsKKworCQkvKiBwcm9iZSBpZiByZXF1ZXN0ZWQgKi8KKwkJaWYgKChlaGMtPmkucHJvYmVfbWFzayAmICgxIDw8IGRldi0+ZGV2bm8pKSAmJgorCQkgICAgIShlaGMtPmRpZF9wcm9iZV9tYXNrICYgKDEgPDwgZGV2LT5kZXZubykpKSB7CisJCQlhdGFfZWhfZGV0YWNoX2RldihkZXYpOworCQkJYXRhX2Rldl9pbml0KGRldik7CisKKwkJCWVoYy0+dHJpZXNbZGV2LT5kZXZub10gPSBBVEFfRUhfREVWX1RSSUVTOworCQkJZWhjLT5kaWRfcHJvYmVfbWFzayB8PSAoMSA8PCBkZXYtPmRldm5vKTsKKwkJCWVoYy0+aS5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwkJfQorCX0gZWxzZSB7CisJCS8qIHNvZnQgZGlkbid0IHdvcms/ICBiZSBoYWFhYWFyZCAqLworCQlpZiAoZWhjLT5pLmZsYWdzICYgQVRBX0VISV9ESURfUkVTRVQpCisJCQllaGMtPmkuYWN0aW9uIHw9IEFUQV9FSF9IQVJEUkVTRVQ7CisJCWVsc2UKKwkJCWVoYy0+aS5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwl9CisKKwlpZiAoYXRhX3BvcnRfbnJfZW5hYmxlZChhcCkpIHsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX1dBUk5JTkcsICJmYWlsZWQgdG8gcmVjb3ZlciBzb21lICIKKwkJCQkiZGV2aWNlcywgcmV0cnlpbmcgaW4gNSBzZWNzXG4iKTsKKwkJc3NsZWVwKDUpOworCX0gZWxzZSB7CisJCS8qIG5vIGRldmljZSBsZWZ0LCByZXBlYXQgZmFzdCAqLworCQltc2xlZXAoNTAwKTsKKwl9CisKKwlnb3RvIHJldHJ5OworCisgb3V0OgorCWlmIChyYykgeworCQlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspCisJCQlhdGFfZGV2X2Rpc2FibGUoJmFwLT5kZXZpY2VbaV0pOworCX0KKworCURQUklOVEsoIkVYSVQsIHJjPSVkXG4iLCByYyk7CisJcmV0dXJuIHJjOworfQorCisvKioKKyAqCWF0YV9laF9maW5pc2ggLSBmaW5pc2ggdXAgRUgKKyAqCUBhcDogaG9zdCBwb3J0IHRvIGZpbmlzaCBFSCBmb3IKKyAqCisgKglSZWNvdmVyeSBpcyBjb21wbGV0ZS4gIENsZWFuIHVwIEVIIHN0YXRlcyBhbmQgcmV0cnkgb3IgZmluaXNoCisgKglmYWlsZWQgcWNzLgorICoKKyAqCUxPQ0tJTkc6CisgKglOb25lLgorICovCitzdGF0aWMgdm9pZCBhdGFfZWhfZmluaXNoKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJaW50IHRhZzsKKworCS8qIHJldHJ5IG9yIGZpbmlzaCBxY3MgKi8KKwlmb3IgKHRhZyA9IDA7IHRhZyA8IEFUQV9NQVhfUVVFVUU7IHRhZysrKSB7CisJCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMgPSBfX2F0YV9xY19mcm9tX3RhZyhhcCwgdGFnKTsKKworCQlpZiAoIShxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX0ZBSUxFRCkpCisJCQljb250aW51ZTsKKworCQlpZiAocWMtPmVycl9tYXNrKSB7CisJCQkvKiBGSVhNRTogT25jZSBFSCBtaWdyYXRpb24gaXMgY29tcGxldGUsCisJCQkgKiBnZW5lcmF0ZSBzZW5zZSBkYXRhIGluIHRoaXMgZnVuY3Rpb24sCisJCQkgKiBjb25zaWRlcmluZyBib3RoIGVycl9tYXNrIGFuZCB0Zi4KKwkJCSAqLworCQkJaWYgKHFjLT5lcnJfbWFzayAmIEFDX0VSUl9JTlZBTElEKQorCQkJCWF0YV9laF9xY19jb21wbGV0ZShxYyk7CisJCQllbHNlCisJCQkJYXRhX2VoX3FjX3JldHJ5KHFjKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1NFTlNFX1ZBTElEKSB7CisJCQkJYXRhX2VoX3FjX2NvbXBsZXRlKHFjKTsKKwkJCX0gZWxzZSB7CisJCQkJLyogZmVlZCB6ZXJvIFRGIHRvIHNlbnNlIGdlbmVyYXRpb24gKi8KKwkJCQltZW1zZXQoJnFjLT5yZXN1bHRfdGYsIDAsIHNpemVvZihxYy0+cmVzdWx0X3RmKSk7CisJCQkJYXRhX2VoX3FjX3JldHJ5KHFjKTsKKwkJCX0KKwkJfQorCX0KK30KKworLyoqCisgKglhdGFfZG9fZWggLSBkbyBzdGFuZGFyZCBlcnJvciBoYW5kbGluZworICoJQGFwOiBob3N0IHBvcnQgdG8gaGFuZGxlIGVycm9yIGZvcgorICoJQHByZXJlc2V0OiBwcmVyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQorICoJQHNvZnRyZXNldDogc29mdHJlc2V0IG1ldGhvZCAoY2FuIGJlIE5VTEwpCisgKglAaGFyZHJlc2V0OiBoYXJkcmVzZXQgbWV0aG9kIChjYW4gYmUgTlVMTCkKKyAqCUBwb3N0cmVzZXQ6IHBvc3RyZXNldCBtZXRob2QgKGNhbiBiZSBOVUxMKQorICoKKyAqCVBlcmZvcm0gc3RhbmRhcmQgZXJyb3IgaGFuZGxpbmcgc2VxdWVuY2UuCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KKyAqLwordm9pZCBhdGFfZG9fZWgoc3RydWN0IGF0YV9wb3J0ICphcCwgYXRhX3ByZXJlc2V0X2ZuX3QgcHJlcmVzZXQsCisJICAgICAgIGF0YV9yZXNldF9mbl90IHNvZnRyZXNldCwgYXRhX3Jlc2V0X2ZuX3QgaGFyZHJlc2V0LAorCSAgICAgICBhdGFfcG9zdHJlc2V0X2ZuX3QgcG9zdHJlc2V0KQoreworCWlmICghKGFwLT5mbGFncyAmIEFUQV9GTEFHX0xPQURJTkcpKSB7CisJCWF0YV9laF9hdXRvcHN5KGFwKTsKKwkJYXRhX2VoX3JlcG9ydChhcCk7CisJfQorCisJYXRhX2VoX3JlY292ZXIoYXAsIHByZXJlc2V0LCBzb2Z0cmVzZXQsIGhhcmRyZXNldCwgcG9zdHJlc2V0KTsKKwlhdGFfZWhfZmluaXNoKGFwKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJhdGEtc2NzaS5jIGIvZHJpdmVycy9zY3NpL2xpYmF0YS1zY3NpLmMKaW5kZXggYTAyODllYy4uOTNkMThhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xpYmF0YS1zY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL2xpYmF0YS1zY3NpLmMKQEAgLTM4LDkgKzM4LDEwIEBACiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9yZXF1ZXN0Lmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX3RjcS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV90cmFuc3BvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9saWJhdGEuaD4KICNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgpAQCAtNTEsMTAgKzUyLDE0IEBACiAjZGVmaW5lIFNFQ1RPUl9TSVpFCTUxMgogCiB0eXBlZGVmIHVuc2lnbmVkIGludCAoKmF0YV94bGF0X2Z1bmNfdCkoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYywgY29uc3QgdTggKnNjc2ljbWQpOwotc3RhdGljIHN0cnVjdCBhdGFfZGV2aWNlICoKLWF0YV9zY3NpX2ZpbmRfZGV2KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGNvbnN0IHN0cnVjdCBzY3NpX2RldmljZSAqc2NzaWRldik7Ci1zdGF0aWMgdm9pZCBhdGFfc2NzaV9lcnJvcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0KTsKLWVudW0gc2NzaV9laF90aW1lcl9yZXR1cm4gYXRhX3Njc2lfdGltZWRfb3V0KHN0cnVjdCBzY3NpX2NtbmQgKmNtZCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXRhX2RldmljZSAqIF9fYXRhX3Njc2lfZmluZF9kZXYoc3RydWN0IGF0YV9wb3J0ICphcCwKKwkJCQkJY29uc3Qgc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpZGV2KTsKK3N0YXRpYyBzdHJ1Y3QgYXRhX2RldmljZSAqIGF0YV9zY3NpX2ZpbmRfZGV2KHN0cnVjdCBhdGFfcG9ydCAqYXAsCisJCQkJCSAgICBjb25zdCBzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNjc2lkZXYpOworc3RhdGljIGludCBhdGFfc2NzaV91c2VyX3NjYW4oc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsIHVuc2lnbmVkIGludCBjaGFubmVsLAorCQkJICAgICAgdW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbHVuKTsKKwogCiAjZGVmaW5lIFJXX1JFQ09WRVJZX01QQUdFIDB4MQogI2RlZmluZSBSV19SRUNPVkVSWV9NUEFHRV9MRU4gMTIKQEAgLTEwMiw2ICsxMDcsNyBAQAogc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlIGF0YV9zY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSA9IHsKIAkuZWhfc3RyYXRlZ3lfaGFuZGxlcgk9IGF0YV9zY3NpX2Vycm9yLAogCS5laF90aW1lZF9vdXQJCT0gYXRhX3Njc2lfdGltZWRfb3V0LAorCS51c2VyX3NjYW4JCT0gYXRhX3Njc2lfdXNlcl9zY2FuLAogfTsKIAogCkBAIC0zMDQsNyArMzEwLDYgQEAKIAogLyoqCiAgKglhdGFfc2NzaV9xY19uZXcgLSBhY3F1aXJlIG5ldyBhdGFfcXVldWVkX2NtZCByZWZlcmVuY2UKLSAqCUBhcDogQVRBIHBvcnQgdG8gd2hpY2ggdGhlIG5ldyBjb21tYW5kIGlzIGF0dGFjaGVkCiAgKglAZGV2OiBBVEEgZGV2aWNlIHRvIHdoaWNoIHRoZSBuZXcgY29tbWFuZCBpcyBhdHRhY2hlZAogICoJQGNtZDogU0NTSSBjb21tYW5kIHRoYXQgb3JpZ2luYXRlZCB0aGlzIEFUQSBjb21tYW5kCiAgKglAZG9uZTogU0NTSSBjb21tYW5kIGNvbXBsZXRpb24gZnVuY3Rpb24KQEAgLTMyMywxNCArMzI4LDEzIEBACiAgKglSRVRVUk5TOgogICoJQ29tbWFuZCBhbGxvY2F0ZWQsIG9yICVOVUxMIGlmIG5vbmUgYXZhaWxhYmxlLgogICovCi1zdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKmF0YV9zY3NpX3FjX25ldyhzdHJ1Y3QgYXRhX3BvcnQgKmFwLAotCQkJCSAgICAgICBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAorc3RydWN0IGF0YV9xdWV1ZWRfY21kICphdGFfc2NzaV9xY19uZXcoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwKIAkJCQkgICAgICAgc3RydWN0IHNjc2lfY21uZCAqY21kLAogCQkJCSAgICAgICB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSkKIHsKIAlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCi0JcWMgPSBhdGFfcWNfbmV3X2luaXQoYXAsIGRldik7CisJcWMgPSBhdGFfcWNfbmV3X2luaXQoZGV2KTsKIAlpZiAocWMpIHsKIAkJcWMtPnNjc2ljbWQgPSBjbWQ7CiAJCXFjLT5zY3NpZG9uZSA9IGRvbmU7CkBAIC0zOTcsMTggKzQwMSwxOCBAQAogCiBpbnQgYXRhX3Njc2lfZGV2aWNlX3Jlc3VtZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCiB7Ci0Jc3RydWN0IGF0YV9wb3J0ICphcCA9IChzdHJ1Y3QgYXRhX3BvcnQgKikgJnNkZXYtPmhvc3QtPmhvc3RkYXRhWzBdOwotCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSAmYXAtPmRldmljZVtzZGV2LT5pZF07CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGF0YV9zaG9zdF90b19wb3J0KHNkZXYtPmhvc3QpOworCXN0cnVjdCBhdGFfZGV2aWNlICpkZXYgPSBfX2F0YV9zY3NpX2ZpbmRfZGV2KGFwLCBzZGV2KTsKIAotCXJldHVybiBhdGFfZGV2aWNlX3Jlc3VtZShhcCwgZGV2KTsKKwlyZXR1cm4gYXRhX2RldmljZV9yZXN1bWUoZGV2KTsKIH0KIAogaW50IGF0YV9zY3NpX2RldmljZV9zdXNwZW5kKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwgcG1fbWVzc2FnZV90IHN0YXRlKQogewotCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSAoc3RydWN0IGF0YV9wb3J0ICopICZzZGV2LT5ob3N0LT5ob3N0ZGF0YVswXTsKLQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2Vbc2Rldi0+aWRdOworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBhdGFfc2hvc3RfdG9fcG9ydChzZGV2LT5ob3N0KTsKKwlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gX19hdGFfc2NzaV9maW5kX2RldihhcCwgc2Rldik7CiAKLQlyZXR1cm4gYXRhX2RldmljZV9zdXNwZW5kKGFwLCBkZXYsIHN0YXRlKTsKKwlyZXR1cm4gYXRhX2RldmljZV9zdXNwZW5kKGRldiwgc3RhdGUpOwogfQogCiAvKioKQEAgLTQxOSw2ICs0MjMsNyBAQAogICoJQHNrOiB0aGUgc2Vuc2Uga2V5IHdlJ2xsIGZpbGwgb3V0CiAgKglAYXNjOiB0aGUgYWRkaXRpb25hbCBzZW5zZSBjb2RlIHdlJ2xsIGZpbGwgb3V0CiAgKglAYXNjcTogdGhlIGFkZGl0aW9uYWwgc2Vuc2UgY29kZSBxdWFsaWZpZXIgd2UnbGwgZmlsbCBvdXQKKyAqCUB2ZXJib3NlOiBiZSB2ZXJib3NlCiAgKgogICoJQ29udmVydHMgYW4gQVRBIGVycm9yIGludG8gYSBTQ1NJIGVycm9yLiAgRmlsbCBvdXQgcG9pbnRlcnMgdG8KICAqCVNLLCBBU0MsIGFuZCBBU0NRIGJ5dGVzIGZvciBsYXRlciB1c2UgaW4gZml4ZWQgb3IgZGVzY3JpcHRvcgpAQCAtNDI4LDcgKzQzMyw3IEBACiAgKglzcGluX2xvY2tfaXJxc2F2ZShob3N0X3NldCBsb2NrKQogICovCiB2b2lkIGF0YV90b19zZW5zZV9lcnJvcih1bnNpZ25lZCBpZCwgdTggZHJ2X3N0YXQsIHU4IGRydl9lcnIsIHU4ICpzaywgdTggKmFzYywKLQkJCXU4ICphc2NxKQorCQkJdTggKmFzY3EsIGludCB2ZXJib3NlKQogewogCWludCBpOwogCkBAIC00OTMsOCArNDk4LDkgQEAKIAkJCX0KIAkJfQogCQkvKiBObyBpbW1lZGlhdGUgbWF0Y2ggKi8KLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6IG5vIHNlbnNlIHRyYW5zbGF0aW9uIGZvciAiCi0JCSAgICAgICAiZXJyb3IgMHglMDJ4XG4iLCBpZCwgZHJ2X2Vycik7CisJCWlmICh2ZXJib3NlKQorCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYXRhJXU6IG5vIHNlbnNlIHRyYW5zbGF0aW9uIGZvciAiCisJCQkgICAgICAgImVycm9yIDB4JTAyeFxuIiwgaWQsIGRydl9lcnIpOwogCX0KIAogCS8qIEZhbGwgYmFjayB0byBpbnRlcnByZXRpbmcgc3RhdHVzIGJpdHMgKi8KQEAgLTUwNyw4ICs1MTMsOSBAQAogCQl9CiAJfQogCS8qIE5vIGVycm9yPyAgVW5kZWNvZGVkPyAqLwotCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1OiBubyBzZW5zZSB0cmFuc2xhdGlvbiBmb3Igc3RhdHVzOiAweCUwMnhcbiIsCi0JICAgICAgIGlkLCBkcnZfc3RhdCk7CisJaWYgKHZlcmJvc2UpCisJCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1OiBubyBzZW5zZSB0cmFuc2xhdGlvbiBmb3IgIgorCQkgICAgICAgInN0YXR1czogMHglMDJ4XG4iLCBpZCwgZHJ2X3N0YXQpOwogCiAJLyogV2UgbmVlZCBhIHNlbnNpYmxlIGVycm9yIHJldHVybiBoZXJlLCB3aGljaCBpcyB0cmlja3ksIGFuZCBvbmUKIAkgICB0aGF0IHdvbid0IGNhdXNlIHBlb3BsZSB0byBkbyB0aGluZ3MgbGlrZSByZXR1cm4gYSBkaXNrIHdyb25nbHkgKi8KQEAgLTUxNyw5ICs1MjQsMTAgQEAKIAkqYXNjcSA9IDB4MDA7CiAKICB0cmFuc2xhdGVfZG9uZToKLQlwcmludGsoS0VSTl9FUlIgImF0YSV1OiB0cmFuc2xhdGVkIEFUQSBzdGF0L2VyciAweCUwMngvJTAyeCB0byAiCi0JICAgICAgICJTQ1NJIFNLL0FTQy9BU0NRIDB4JXgvJTAyeC8lMDJ4XG4iLCBpZCwgZHJ2X3N0YXQsIGRydl9lcnIsCi0JICAgICAgICpzaywgKmFzYywgKmFzY3EpOworCWlmICh2ZXJib3NlKQorCQlwcmludGsoS0VSTl9FUlIgImF0YSV1OiB0cmFuc2xhdGVkIEFUQSBzdGF0L2VyciAweCUwMngvJTAyeCAiCisJCSAgICAgICAidG8gU0NTSSBTSy9BU0MvQVNDUSAweCV4LyUwMngvJTAyeFxuIiwKKwkJICAgICAgIGlkLCBkcnZfc3RhdCwgZHJ2X2VyciwgKnNrLCAqYXNjLCAqYXNjcSk7CiAJcmV0dXJuOwogfQogCkBAIC01MzksMjcgKzU0NywyMyBAQAogdm9pZCBhdGFfZ2VuX2F0YV9kZXNjX3NlbnNlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCiB7CiAJc3RydWN0IHNjc2lfY21uZCAqY21kID0gcWMtPnNjc2ljbWQ7Ci0Jc3RydWN0IGF0YV90YXNrZmlsZSAqdGYgPSAmcWMtPnRmOworCXN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmID0gJnFjLT5yZXN1bHRfdGY7CiAJdW5zaWduZWQgY2hhciAqc2IgPSBjbWQtPnNlbnNlX2J1ZmZlcjsKIAl1bnNpZ25lZCBjaGFyICpkZXNjID0gc2IgKyA4OworCWludCB2ZXJib3NlID0gcWMtPmFwLT5vcHMtPmVycm9yX2hhbmRsZXIgPT0gTlVMTDsKIAogCW1lbXNldChzYiwgMCwgU0NTSV9TRU5TRV9CVUZGRVJTSVpFKTsKIAogCWNtZC0+cmVzdWx0ID0gKERSSVZFUl9TRU5TRSA8PCAyNCkgfCBTQU1fU1RBVF9DSEVDS19DT05ESVRJT047CiAKIAkvKgotCSAqIFJlYWQgdGhlIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgotCSAqLwotCVdBUk5fT04ocWMtPmFwLT5vcHMtPnRmX3JlYWQgPT0gTlVMTCk7Ci0JcWMtPmFwLT5vcHMtPnRmX3JlYWQocWMtPmFwLCB0Zik7Ci0KLQkvKgogCSAqIFVzZSBhdGFfdG9fc2Vuc2VfZXJyb3IoKSB0byBtYXAgc3RhdHVzIHJlZ2lzdGVyIGJpdHMKIAkgKiBvbnRvIHNlbnNlIGtleSwgYXNjICYgYXNjcS4KIAkgKi8KLQlpZiAodGYtPmNvbW1hbmQgJiAoQVRBX0JVU1kgfCBBVEFfREYgfCBBVEFfRVJSIHwgQVRBX0RSUSkpIHsKKwlpZiAocWMtPmVycl9tYXNrIHx8CisJICAgIHRmLT5jb21tYW5kICYgKEFUQV9CVVNZIHwgQVRBX0RGIHwgQVRBX0VSUiB8IEFUQV9EUlEpKSB7CiAJCWF0YV90b19zZW5zZV9lcnJvcihxYy0+YXAtPmlkLCB0Zi0+Y29tbWFuZCwgdGYtPmZlYXR1cmUsCi0JCQkJICAgJnNiWzFdLCAmc2JbMl0sICZzYlszXSk7CisJCQkJICAgJnNiWzFdLCAmc2JbMl0sICZzYlszXSwgdmVyYm9zZSk7CiAJCXNiWzFdICY9IDB4MGY7CiAJfQogCkBAIC02MTUsMjYgKzYxOSwyMiBAQAogdm9pZCBhdGFfZ2VuX2ZpeGVkX3NlbnNlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCiB7CiAJc3RydWN0IHNjc2lfY21uZCAqY21kID0gcWMtPnNjc2ljbWQ7Ci0Jc3RydWN0IGF0YV90YXNrZmlsZSAqdGYgPSAmcWMtPnRmOworCXN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmID0gJnFjLT5yZXN1bHRfdGY7CiAJdW5zaWduZWQgY2hhciAqc2IgPSBjbWQtPnNlbnNlX2J1ZmZlcjsKKwlpbnQgdmVyYm9zZSA9IHFjLT5hcC0+b3BzLT5lcnJvcl9oYW5kbGVyID09IE5VTEw7CiAKIAltZW1zZXQoc2IsIDAsIFNDU0lfU0VOU0VfQlVGRkVSU0laRSk7CiAKIAljbWQtPnJlc3VsdCA9IChEUklWRVJfU0VOU0UgPDwgMjQpIHwgU0FNX1NUQVRfQ0hFQ0tfQ09ORElUSU9OOwogCiAJLyoKLQkgKiBSZWFkIHRoZSBjb250cm9sbGVyIHJlZ2lzdGVycy4KLQkgKi8KLQlXQVJOX09OKHFjLT5hcC0+b3BzLT50Zl9yZWFkID09IE5VTEwpOwotCXFjLT5hcC0+b3BzLT50Zl9yZWFkKHFjLT5hcCwgdGYpOwotCi0JLyoKIAkgKiBVc2UgYXRhX3RvX3NlbnNlX2Vycm9yKCkgdG8gbWFwIHN0YXR1cyByZWdpc3RlciBiaXRzCiAJICogb250byBzZW5zZSBrZXksIGFzYyAmIGFzY3EuCiAJICovCi0JaWYgKHRmLT5jb21tYW5kICYgKEFUQV9CVVNZIHwgQVRBX0RGIHwgQVRBX0VSUiB8IEFUQV9EUlEpKSB7CisJaWYgKHFjLT5lcnJfbWFzayB8fAorCSAgICB0Zi0+Y29tbWFuZCAmIChBVEFfQlVTWSB8IEFUQV9ERiB8IEFUQV9FUlIgfCBBVEFfRFJRKSkgewogCQlhdGFfdG9fc2Vuc2VfZXJyb3IocWMtPmFwLT5pZCwgdGYtPmNvbW1hbmQsIHRmLT5mZWF0dXJlLAotCQkJCSAgICZzYlsyXSwgJnNiWzEyXSwgJnNiWzEzXSk7CisJCQkJICAgJnNiWzJdLCAmc2JbMTJdLCAmc2JbMTNdLCB2ZXJib3NlKTsKIAkJc2JbMl0gJj0gMHgwZjsKIAl9CiAKQEAgLTY3Nyw3ICs2NzcsNyBAQAogCSAqLwogCW1heF9zZWN0b3JzID0gQVRBX01BWF9TRUNUT1JTOwogCWlmIChkZXYtPmZsYWdzICYgQVRBX0RGTEFHX0xCQTQ4KQotCQltYXhfc2VjdG9ycyA9IDIwNDg7CisJCW1heF9zZWN0b3JzID0gQVRBX01BWF9TRUNUT1JTX0xCQTQ4OwogCWlmIChkZXYtPm1heF9zZWN0b3JzKQogCQltYXhfc2VjdG9ycyA9IGRldi0+bWF4X3NlY3RvcnM7CiAKQEAgLTY5Miw2ICs2OTIsMTQgQEAKIAkJcmVxdWVzdF9xdWV1ZV90ICpxID0gc2Rldi0+cmVxdWVzdF9xdWV1ZTsKIAkJYmxrX3F1ZXVlX21heF9od19zZWdtZW50cyhxLCBxLT5tYXhfaHdfc2VnbWVudHMgLSAxKTsKIAl9CisKKwlpZiAoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19OQ1EpIHsKKwkJaW50IGRlcHRoOworCisJCWRlcHRoID0gbWluKHNkZXYtPmhvc3QtPmNhbl9xdWV1ZSwgYXRhX2lkX3F1ZXVlX2RlcHRoKGRldi0+aWQpKTsKKwkJZGVwdGggPSBtaW4oQVRBX01BWF9RVUVVRSAtIDEsIGRlcHRoKTsKKwkJc2NzaV9hZGp1c3RfcXVldWVfZGVwdGgoc2RldiwgTVNHX1NJTVBMRV9UQUcsIGRlcHRoKTsKKwl9CiB9CiAKIC8qKgpAQCAtNzA4LDE1MiArNzE2LDg4IEBACiAKIGludCBhdGFfc2NzaV9zbGF2ZV9jb25maWcoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KQogeworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBhdGFfc2hvc3RfdG9fcG9ydChzZGV2LT5ob3N0KTsKKwlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gX19hdGFfc2NzaV9maW5kX2RldihhcCwgc2Rldik7CisKIAlhdGFfc2NzaV9zZGV2X2NvbmZpZyhzZGV2KTsKIAogCWJsa19xdWV1ZV9tYXhfcGh5c19zZWdtZW50cyhzZGV2LT5yZXF1ZXN0X3F1ZXVlLCBMSUJBVEFfTUFYX1BSRCk7CiAKLQlpZiAoc2Rldi0+aWQgPCBBVEFfTUFYX0RFVklDRVMpIHsKLQkJc3RydWN0IGF0YV9wb3J0ICphcDsKLQkJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKLQotCQlhcCA9IChzdHJ1Y3QgYXRhX3BvcnQgKikgJnNkZXYtPmhvc3QtPmhvc3RkYXRhWzBdOwotCQlkZXYgPSAmYXAtPmRldmljZVtzZGV2LT5pZF07Ci0KKwlpZiAoZGV2KQogCQlhdGFfc2NzaV9kZXZfY29uZmlnKHNkZXYsIGRldik7Ci0JfQogCiAJcmV0dXJuIDA7CS8qIHNjc2kgbGF5ZXIgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUsIHNpZ2ggKi8KIH0KIAogLyoqCi0gKglhdGFfc2NzaV90aW1lZF9vdXQgLSBTQ1NJIGxheWVyIHRpbWUgb3V0IGNhbGxiYWNrCi0gKglAY21kOiB0aW1lZCBvdXQgU0NTSSBjb21tYW5kCisgKglhdGFfc2NzaV9zbGF2ZV9kZXN0cm95IC0gU0NTSSBkZXZpY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkCisgKglAc2RldjogU0NTSSBkZXZpY2UgdG8gYmUgZGVzdHJveWVkCiAgKgotICoJSGFuZGxlcyBTQ1NJIGxheWVyIHRpbWVvdXQuICBXZSByYWNlIHdpdGggbm9ybWFsIGNvbXBsZXRpb24gb2YKLSAqCXRoZSBxYyBmb3IgQGNtZC4gIElmIHRoZSBxYyBpcyBhbHJlYWR5IGdvbmUsIHdlIGxvc2UgYW5kIGxldAotICoJdGhlIHNjc2kgY29tbWFuZCBmaW5pc2ggKEVIX0hBTkRMRUQpLiAgT3RoZXJ3aXNlLCB0aGUgcWMgaGFzCi0gKgl0aW1lZCBvdXQgYW5kIEVIIHNob3VsZCBiZSBpbnZva2VkLiAgUHJldmVudCBhdGFfcWNfY29tcGxldGUoKQotICoJZnJvbSBmaW5pc2hpbmcgaXQgYnkgc2V0dGluZyBFSF9TQ0hFRFVMRUQgYW5kIHJldHVybgotICoJRUhfTk9UX0hBTkRMRUQuCisgKglAc2RldiBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQgZm9yIGhvdC93YXJtIHVucGx1Z2dpbmcuICBJZgorICoJdGhpcyB1bnBsdWdnaW5nIHdhcyBpbml0aWF0ZWQgYnkgbGliYXRhIGFzIGluZGljYXRlZCBieSBOVUxMCisgKglkZXYtPnNkZXYsIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGRvIGFueXRoaW5nLgorICoJT3RoZXJ3aXNlLCBTQ1NJIGxheWVyIGluaXRpYXRlZCB3YXJtLXVucGx1ZyBpcyBpbiBwcm9ncmVzcy4KKyAqCUNsZWFyIGRldi0+c2Rldiwgc2NoZWR1bGUgdGhlIGRldmljZSBmb3IgQVRBIGRldGFjaCBhbmQgaW52b2tlCisgKglFSC4KICAqCiAgKglMT0NLSU5HOgotICoJQ2FsbGVkIGZyb20gdGltZXIgY29udGV4dAorICoJRGVmaW5lZCBieSBTQ1NJIGxheWVyLiAgV2UgZG9uJ3QgcmVhbGx5IGNhcmUuCisgKi8KK3ZvaWQgYXRhX3Njc2lfc2xhdmVfZGVzdHJveShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGF0YV9zaG9zdF90b19wb3J0KHNkZXYtPmhvc3QpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKKworCWlmICghYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKwlkZXYgPSBfX2F0YV9zY3NpX2ZpbmRfZGV2KGFwLCBzZGV2KTsKKwlpZiAoZGV2ICYmIGRldi0+c2RldikgeworCQkvKiBTQ1NJIGRldmljZSBhbHJlYWR5IGluIENBTkNFTCBzdGF0ZSwgbm8gbmVlZCB0byBvZmZsaW5lIGl0ICovCisJCWRldi0+c2RldiA9IE5VTEw7CisJCWRldi0+ZmxhZ3MgfD0gQVRBX0RGTEFHX0RFVEFDSDsKKwkJYXRhX3BvcnRfc2NoZWR1bGVfZWgoYXApOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKGFwLT5sb2NrLCBmbGFncyk7Cit9CisKKy8qKgorICoJYXRhX3Njc2lfY2hhbmdlX3F1ZXVlX2RlcHRoIC0gU0NTSSBjYWxsYmFjayBmb3IgcXVldWUgZGVwdGggY29uZmlnCisgKglAc2RldjogU0NTSSBkZXZpY2UgdG8gY29uZmlndXJlIHF1ZXVlIGRlcHRoIGZvcgorICoJQHF1ZXVlX2RlcHRoOiBuZXcgcXVldWUgZGVwdGgKKyAqCisgKglUaGlzIGlzIGxpYmF0YSBzdGFuZGFyZCBob3N0dC0+Y2hhbmdlX3F1ZXVlX2RlcHRoIGNhbGxiYWNrLgorICoJU0NTSSB3aWxsIGNhbGwgaW50byB0aGlzIGNhbGxiYWNrIHdoZW4gdXNlciB0cmllcyB0byBzZXQgcXVldWUKKyAqCWRlcHRoIHZpYSBzeXNmcy4KKyAqCisgKglMT0NLSU5HOgorICoJU0NTSSBsYXllciAod2UgZG9uJ3QgY2FyZSkKICAqCiAgKglSRVRVUk5TOgotICoJRUhfSEFORExFRCBvciBFSF9OT1RfSEFORExFRAorICoJTmV3bHkgY29uZmlndXJlZCBxdWV1ZSBkZXB0aC4KICAqLwotZW51bSBzY3NpX2VoX3RpbWVyX3JldHVybiBhdGFfc2NzaV90aW1lZF9vdXQoc3RydWN0IHNjc2lfY21uZCAqY21kKQoraW50IGF0YV9zY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIGludCBxdWV1ZV9kZXB0aCkKIHsKLQlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gY21kLT5kZXZpY2UtPmhvc3Q7Ci0Jc3RydWN0IGF0YV9wb3J0ICphcCA9IChzdHJ1Y3QgYXRhX3BvcnQgKikgJmhvc3QtPmhvc3RkYXRhWzBdOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKLQllbnVtIHNjc2lfZWhfdGltZXJfcmV0dXJuIHJldCA9IEVIX0hBTkRMRUQ7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGF0YV9zaG9zdF90b19wb3J0KHNkZXYtPmhvc3QpOworCXN0cnVjdCBhdGFfZGV2aWNlICpkZXY7CisJaW50IG1heF9kZXB0aDsKIAotCURQUklOVEsoIkVOVEVSXG4iKTsKKwlpZiAocXVldWVfZGVwdGggPCAxKQorCQlyZXR1cm4gc2Rldi0+cXVldWVfZGVwdGg7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmYXAtPmhvc3Rfc2V0LT5sb2NrLCBmbGFncyk7Ci0JcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKLQlpZiAocWMpIHsKLQkJV0FSTl9PTihxYy0+c2NzaWNtZCAhPSBjbWQpOwotCQlxYy0+ZmxhZ3MgfD0gQVRBX1FDRkxBR19FSF9TQ0hFRFVMRUQ7Ci0JCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfVElNRU9VVDsKLQkJcmV0ID0gRUhfTk9UX0hBTkRMRUQ7Ci0JfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOworCWRldiA9IGF0YV9zY3NpX2ZpbmRfZGV2KGFwLCBzZGV2KTsKKwlpZiAoIWRldiB8fCAhYXRhX2Rldl9lbmFibGVkKGRldikpCisJCXJldHVybiBzZGV2LT5xdWV1ZV9kZXB0aDsKIAotCURQUklOVEsoIkVYSVQsIHJldD0lZFxuIiwgcmV0KTsKLQlyZXR1cm4gcmV0OwotfQorCW1heF9kZXB0aCA9IG1pbihzZGV2LT5ob3N0LT5jYW5fcXVldWUsIGF0YV9pZF9xdWV1ZV9kZXB0aChkZXYtPmlkKSk7CisJbWF4X2RlcHRoID0gbWluKEFUQV9NQVhfUVVFVUUgLSAxLCBtYXhfZGVwdGgpOworCWlmIChxdWV1ZV9kZXB0aCA+IG1heF9kZXB0aCkKKwkJcXVldWVfZGVwdGggPSBtYXhfZGVwdGg7CiAKLS8qKgotICoJYXRhX3Njc2lfZXJyb3IgLSBTQ1NJIGxheWVyIGVycm9yIGhhbmRsZXIgY2FsbGJhY2sKLSAqCUBob3N0OiBTQ1NJIGhvc3Qgb24gd2hpY2ggZXJyb3Igb2NjdXJyZWQKLSAqCi0gKglIYW5kbGVzIFNDU0ktbGF5ZXItdGhyb3duIGVycm9yIGV2ZW50cy4KLSAqCi0gKglMT0NLSU5HOgotICoJSW5oZXJpdGVkIGZyb20gU0NTSSBsYXllciAobm9uZSwgY2FuIHNsZWVwKQotICovCi0KLXN0YXRpYyB2b2lkIGF0YV9zY3NpX2Vycm9yKHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QpCi17Ci0Jc3RydWN0IGF0YV9wb3J0ICphcDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0JRFBSSU5USygiRU5URVJcbiIpOwotCi0JYXAgPSAoc3RydWN0IGF0YV9wb3J0ICopICZob3N0LT5ob3N0ZGF0YVswXTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKLQlXQVJOX09OKGFwLT5mbGFncyAmIEFUQV9GTEFHX0lOX0VIKTsKLQlhcC0+ZmxhZ3MgfD0gQVRBX0ZMQUdfSU5fRUg7Ci0JV0FSTl9PTihhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKSA9PSBOVUxMKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKLQotCWF0YV9wb3J0X2ZsdXNoX3Rhc2soYXApOwotCi0JYXAtPm9wcy0+ZW5nX3RpbWVvdXQoYXApOwotCi0JV0FSTl9PTihob3N0LT5ob3N0X2ZhaWxlZCB8fCAhbGlzdF9lbXB0eSgmaG9zdC0+ZWhfY21kX3EpKTsKLQotCXNjc2lfZWhfZmx1c2hfZG9uZV9xKCZhcC0+ZWhfZG9uZV9xKTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKLQlhcC0+ZmxhZ3MgJj0gfkFUQV9GTEFHX0lOX0VIOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOwotCi0JRFBSSU5USygiRVhJVFxuIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGF0YV9laF9zY3NpZG9uZShzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kKQotewotCS8qIG5hZGEgKi8KLX0KLQotc3RhdGljIHZvaWQgX19hdGFfZWhfcWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKLXsKLQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwotCXN0cnVjdCBzY3NpX2NtbmQgKnNjbWQgPSBxYy0+c2NzaWNtZDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFwLT5ob3N0X3NldC0+bG9jaywgZmxhZ3MpOwotCXFjLT5zY3NpZG9uZSA9IGF0YV9laF9zY3NpZG9uZTsKLQlfX2F0YV9xY19jb21wbGV0ZShxYyk7Ci0JV0FSTl9PTihhdGFfdGFnX3ZhbGlkKHFjLT50YWcpKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhcC0+aG9zdF9zZXQtPmxvY2ssIGZsYWdzKTsKLQotCXNjc2lfZWhfZmluaXNoX2NtZChzY21kLCAmYXAtPmVoX2RvbmVfcSk7Ci19Ci0KLS8qKgotICoJYXRhX2VoX3FjX2NvbXBsZXRlIC0gQ29tcGxldGUgYW4gYWN0aXZlIEFUQSBjb21tYW5kIGZyb20gRUgKLSAqCUBxYzogQ29tbWFuZCB0byBjb21wbGV0ZQotICoKLSAqCUluZGljYXRlIHRvIHRoZSBtaWQgYW5kIHVwcGVyIGxheWVycyB0aGF0IGFuIEFUQSBjb21tYW5kIGhhcwotICoJY29tcGxldGVkLiAgVG8gYmUgdXNlZCBmcm9tIEVILgotICovCi12b2lkIGF0YV9laF9xY19jb21wbGV0ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQotewotCXN0cnVjdCBzY3NpX2NtbmQgKnNjbWQgPSBxYy0+c2NzaWNtZDsKLQlzY21kLT5yZXRyaWVzID0gc2NtZC0+YWxsb3dlZDsKLQlfX2F0YV9laF9xY19jb21wbGV0ZShxYyk7Ci19Ci0KLS8qKgotICoJYXRhX2VoX3FjX3JldHJ5IC0gVGVsbCBtaWRsYXllciB0byByZXRyeSBhbiBBVEEgY29tbWFuZCBhZnRlciBFSAotICoJQHFjOiBDb21tYW5kIHRvIHJldHJ5Ci0gKgotICoJSW5kaWNhdGUgdG8gdGhlIG1pZCBhbmQgdXBwZXIgbGF5ZXJzIHRoYXQgYW4gQVRBIGNvbW1hbmQKLSAqCXNob3VsZCBiZSByZXRyaWVkLiAgVG8gYmUgdXNlZCBmcm9tIEVILgotICoKLSAqCVNDU0kgbWlkbGF5ZXIgbGltaXRzIHRoZSBudW1iZXIgb2YgcmV0cmllcyB0byBzY21kLT5hbGxvd2VkLgotICoJVGhpcyBmdW5jdGlvbiBtaWdodCBuZWVkIHRvIGFkanVzdCBzY21kLT5yZXRyaWVzIGZvciBjb21tYW5kcwotICoJd2hpY2ggZ2V0IHJldHJpZWQgZHVlIHRvIHVucmVsYXRlZCBOQ1EgZmFpbHVyZXMuCi0gKi8KLXZvaWQgYXRhX2VoX3FjX3JldHJ5KHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCi17Ci0JX19hdGFfZWhfcWNfY29tcGxldGUocWMpOworCXNjc2lfYWRqdXN0X3F1ZXVlX2RlcHRoKHNkZXYsIE1TR19TSU1QTEVfVEFHLCBxdWV1ZV9kZXB0aCk7CisJcmV0dXJuIHF1ZXVlX2RlcHRoOwogfQogCiAvKioKQEAgLTg5MSw3ICs4MzUsNyBAQAogCQl0Zi0+bnNlY3QgPSAxOwkvKiAxIHNlY3RvciwgbGJhPTAgKi8KIAogCQlpZiAocWMtPmRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfTEJBKSB7Ci0JCQlxYy0+dGYuZmxhZ3MgfD0gQVRBX1RGTEFHX0xCQTsKKwkJCXRmLT5mbGFncyB8PSBBVEFfVEZMQUdfTEJBOwogCiAJCQl0Zi0+bGJhaCA9IDB4MDsKIAkJCXRmLT5sYmFtID0gMHgwOwpAQCAtMTE5NSw2ICsxMTM5LDcgQEAKIAl1NjQgYmxvY2s7CiAJdTMyIG5fYmxvY2s7CiAKKwlxYy0+ZmxhZ3MgfD0gQVRBX1FDRkxBR19JTzsKIAl0Zi0+ZmxhZ3MgfD0gQVRBX1RGTEFHX0lTQUREUiB8IEFUQV9URkxBR19ERVZJQ0U7CiAKIAlpZiAoc2NzaWNtZFswXSA9PSBXUklURV8xMCB8fCBzY3NpY21kWzBdID09IFdSSVRFXzYgfHwKQEAgLTEyNDEsNyArMTE4NiwzNiBAQAogCQkgKi8KIAkJZ290byBub3RoaW5nX3RvX2RvOwogCi0JaWYgKGRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfTEJBKSB7CisJaWYgKChkZXYtPmZsYWdzICYgKEFUQV9ERkxBR19QSU8gfCBBVEFfREZMQUdfTkNRKSkgPT0gQVRBX0RGTEFHX05DUSkgeworCQkvKiB5YXksIE5DUSAqLworCQlpZiAoIWxiYV80OF9vayhibG9jaywgbl9ibG9jaykpCisJCQlnb3RvIG91dF9vZl9yYW5nZTsKKworCQl0Zi0+cHJvdG9jb2wgPSBBVEFfUFJPVF9OQ1E7CisJCXRmLT5mbGFncyB8PSBBVEFfVEZMQUdfTEJBIHwgQVRBX1RGTEFHX0xCQTQ4OworCisJCWlmICh0Zi0+ZmxhZ3MgJiBBVEFfVEZMQUdfV1JJVEUpCisJCQl0Zi0+Y29tbWFuZCA9IEFUQV9DTURfRlBETUFfV1JJVEU7CisJCWVsc2UKKwkJCXRmLT5jb21tYW5kID0gQVRBX0NNRF9GUERNQV9SRUFEOworCisJCXFjLT5uc2VjdCA9IG5fYmxvY2s7CisKKwkJdGYtPm5zZWN0ID0gcWMtPnRhZyA8PCAzOworCQl0Zi0+aG9iX2ZlYXR1cmUgPSAobl9ibG9jayA+PiA4KSAmIDB4ZmY7CisJCXRmLT5mZWF0dXJlID0gbl9ibG9jayAmIDB4ZmY7CisKKwkJdGYtPmhvYl9sYmFoID0gKGJsb2NrID4+IDQwKSAmIDB4ZmY7CisJCXRmLT5ob2JfbGJhbSA9IChibG9jayA+PiAzMikgJiAweGZmOworCQl0Zi0+aG9iX2xiYWwgPSAoYmxvY2sgPj4gMjQpICYgMHhmZjsKKwkJdGYtPmxiYWggPSAoYmxvY2sgPj4gMTYpICYgMHhmZjsKKwkJdGYtPmxiYW0gPSAoYmxvY2sgPj4gOCkgJiAweGZmOworCQl0Zi0+bGJhbCA9IGJsb2NrICYgMHhmZjsKKworCQl0Zi0+ZGV2aWNlID0gMSA8PCA2OworCQlpZiAodGYtPmZsYWdzICYgQVRBX1RGTEFHX0ZVQSkKKwkJCXRmLT5kZXZpY2UgfD0gMSA8PCA3OworCX0gZWxzZSBpZiAoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19MQkEpIHsKIAkJdGYtPmZsYWdzIHw9IEFUQV9URkxBR19MQkE7CiAKIAkJaWYgKGxiYV8yOF9vayhibG9jaywgbl9ibG9jaykpIHsKQEAgLTEzMzIsNiArMTMwNiwxNyBAQAogCXU4ICpjZGIgPSBjbWQtPmNtbmQ7CiAgCWludCBuZWVkX3NlbnNlID0gKHFjLT5lcnJfbWFzayAhPSAwKTsKIAorCS8qIFdlIHNub29wIHRoZSBTRVRfRkVBVFVSRVMgLSBXcml0ZSBDYWNoZSBPTi9PRkYgY29tbWFuZCwgYW5kCisJICogc2NoZWR1bGUgRUhfUkVWQUxJREFURSBvcGVyYXRpb24gdG8gdXBkYXRlIHRoZSBJREVOVElGWSBERVZJQ0UKKwkgKiBjYWNoZQorCSAqLworCWlmICghbmVlZF9zZW5zZSAmJiAocWMtPnRmLmNvbW1hbmQgPT0gQVRBX0NNRF9TRVRfRkVBVFVSRVMpICYmCisJICAgICgocWMtPnRmLmZlYXR1cmUgPT0gU0VURkVBVFVSRVNfV0NfT04pIHx8CisJICAgICAocWMtPnRmLmZlYXR1cmUgPT0gU0VURkVBVFVSRVNfV0NfT0ZGKSkpIHsKKwkJcWMtPmFwLT5laF9pbmZvLmFjdGlvbiB8PSBBVEFfRUhfUkVWQUxJREFURTsKKwkJYXRhX3BvcnRfc2NoZWR1bGVfZWgocWMtPmFwKTsKKwl9CisKIAkvKiBGb3IgQVRBIHBhc3MgdGhydSAoU0FUKSBjb21tYW5kcywgZ2VuZXJhdGUgYSBzZW5zZSBibG9jayBpZgogCSAqIHVzZXIgbWFuZGF0ZWQgaXQgb3IgaWYgdGhlcmUncyBhbiBlcnJvci4gIE5vdGUgdGhhdCBpZiB3ZQogCSAqIGdlbmVyYXRlIGJlY2F1c2UgdGhlIHVzZXIgZm9yY2VkIHVzIHRvLCBhIGNoZWNrIGNvbmRpdGlvbgpAQCAtMTM1NiwxMCArMTM0MSw4IEBACiAJCX0KIAl9CiAKLQlpZiAobmVlZF9zZW5zZSkgewotCQkvKiBUaGUgYXRhX2dlbl8uLi5fc2Vuc2Ugcm91dGluZXMgZmlsbCBpbiB0ZiAqLwotCQlhdGFfZHVtcF9zdGF0dXMocWMtPmFwLT5pZCwgJnFjLT50Zik7Ci0JfQorCWlmIChuZWVkX3NlbnNlICYmICFxYy0+YXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikKKwkJYXRhX2R1bXBfc3RhdHVzKHFjLT5hcC0+aWQsICZxYy0+cmVzdWx0X3RmKTsKIAogCXFjLT5zY3NpZG9uZShjbWQpOwogCkBAIC0xMzY3LDggKzEzNTAsNDAgQEAKIH0KIAogLyoqCisgKglhdGFfc2NtZF9uZWVkX2RlZmVyIC0gQ2hlY2sgd2hldGhlciB3ZSBuZWVkIHRvIGRlZmVyIHNjbWQKKyAqCUBkZXY6IEFUQSBkZXZpY2UgdG8gd2hpY2ggdGhlIGNvbW1hbmQgaXMgYWRkcmVzc2VkCisgKglAaXNfaW86IElzIHRoZSBjb21tYW5kIElPIChhbmQgdGh1cyBwb3NzaWJseSBOQ1EpPworICoKKyAqCU5DUSBhbmQgbm9uLU5DUSBjb21tYW5kcyBjYW5ub3QgcnVuIHRvZ2V0aGVyLiAgQXMgdXBwZXIgbGF5ZXIKKyAqCW9ubHkga25vd3MgdGhlIHF1ZXVlIGRlcHRoLCB3ZSBhcmUgcmVzcG9uc2libGUgZm9yIG1haW50YWluaW5nCisgKglleGNsdXNpb24uICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIGEgbmV3IGNvbW1hbmQgY2FuIGJlCisgKglpc3N1ZWQgdG8gQGRldi4KKyAqCisgKglMT0NLSU5HOgorICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqCisgKglSRVRVUk5TOgorICoJMSBpZiBkZWZlcnJpbmcgaXMgbmVlZGVkLCAwIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGludCBhdGFfc2NtZF9uZWVkX2RlZmVyKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIGludCBpc19pbykKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gZGV2LT5hcDsKKworCWlmICghKGRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfTkNRKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaXNfaW8pIHsKKwkJaWYgKCFhdGFfdGFnX3ZhbGlkKGFwLT5hY3RpdmVfdGFnKSkKKwkJCXJldHVybiAwOworCX0gZWxzZSB7CisJCWlmICghYXRhX3RhZ192YWxpZChhcC0+YWN0aXZlX3RhZykgJiYgIWFwLT5zYWN0aXZlKQorCQkJcmV0dXJuIDA7CisJfQorCXJldHVybiAxOworfQorCisvKioKICAqCWF0YV9zY3NpX3RyYW5zbGF0ZSAtIFRyYW5zbGF0ZSB0aGVuIGlzc3VlIFNDU0kgY29tbWFuZCB0byBBVEEgZGV2aWNlCi0gKglAYXA6IEFUQSBwb3J0IHRvIHdoaWNoIHRoZSBjb21tYW5kIGlzIGFkZHJlc3NlZAogICoJQGRldjogQVRBIGRldmljZSB0byB3aGljaCB0aGUgY29tbWFuZCBpcyBhZGRyZXNzZWQKICAqCUBjbWQ6IFNDU0kgY29tbWFuZCB0byBleGVjdXRlCiAgKglAZG9uZTogU0NTSSBjb21tYW5kIGNvbXBsZXRpb24gZnVuY3Rpb24KQEAgLTEzODksMTkgKzE0MDQsMjUgQEAKICAqCiAgKglMT0NLSU5HOgogICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqCisgKglSRVRVUk5TOgorICoJMCBvbiBzdWNjZXNzLCBTQ1NJX01MX1FVRVVFX0RFVklDRV9CVVNZIGlmIHRoZSBjb21tYW5kCisgKgluZWVkcyB0byBiZSBkZWZlcnJlZC4KICAqLwotCi1zdGF0aWMgdm9pZCBhdGFfc2NzaV90cmFuc2xhdGUoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldiwKLQkJCSAgICAgIHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKK3N0YXRpYyBpbnQgYXRhX3Njc2lfdHJhbnNsYXRlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKIAkJCSAgICAgIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopLAogCQkJICAgICAgYXRhX3hsYXRfZnVuY190IHhsYXRfZnVuYykKIHsKIAlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCXU4ICpzY3NpY21kID0gY21kLT5jbW5kOworCWludCBpc19pbyA9IHhsYXRfZnVuYyA9PSBhdGFfc2NzaV9yd194bGF0OwogCiAJVlBSSU5USygiRU5URVJcbiIpOwogCi0JcWMgPSBhdGFfc2NzaV9xY19uZXcoYXAsIGRldiwgY21kLCBkb25lKTsKKwlpZiAodW5saWtlbHkoYXRhX3NjbWRfbmVlZF9kZWZlcihkZXYsIGlzX2lvKSkpCisJCWdvdG8gZGVmZXI7CisKKwlxYyA9IGF0YV9zY3NpX3FjX25ldyhkZXYsIGNtZCwgZG9uZSk7CiAJaWYgKCFxYykKIAkJZ290byBlcnJfbWVtOwogCkBAIC0xNDA5LDggKzE0MzAsOCBAQAogCWlmIChjbWQtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9GUk9NX0RFVklDRSB8fAogCSAgICBjbWQtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UpIHsKIAkJaWYgKHVubGlrZWx5KGNtZC0+cmVxdWVzdF9idWZmbGVuIDwgMSkpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1KCV1KTogV0FSTklORzogemVybyBsZW4gci93IHJlcVxuIiwKLQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8pOworCQkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX1dBUk5JTkcsCisJCQkJICAgICAgICJXQVJOSU5HOiB6ZXJvIGxlbiByL3cgcmVxXG4iKTsKIAkJCWdvdG8gZXJyX2RpZDsKIAkJfQogCkBAIC0xNDMyLDEzICsxNDUzLDEzIEBACiAJYXRhX3FjX2lzc3VlKHFjKTsKIAogCVZQUklOVEsoIkVYSVRcbiIpOwotCXJldHVybjsKKwlyZXR1cm4gMDsKIAogZWFybHlfZmluaXNoOgogICAgICAgICBhdGFfcWNfZnJlZShxYyk7CiAJZG9uZShjbWQpOwogCURQUklOVEsoIkVYSVQgLSBlYXJseSBmaW5pc2ggKGdvb2Qgb3IgZXJyb3IpXG4iKTsKLQlyZXR1cm47CisJcmV0dXJuIDA7CiAKIGVycl9kaWQ6CiAJYXRhX3FjX2ZyZWUocWMpOwpAQCAtMTQ0Niw3ICsxNDY3LDExIEBACiAJY21kLT5yZXN1bHQgPSAoRElEX0VSUk9SIDw8IDE2KTsKIAlkb25lKGNtZCk7CiAJRFBSSU5USygiRVhJVCAtIGludGVybmFsXG4iKTsKLQlyZXR1cm47CisJcmV0dXJuIDA7CisKK2RlZmVyOgorCURQUklOVEsoIkVYSVQgLSBkZWZlclxuIik7CisJcmV0dXJuIFNDU0lfTUxRVUVVRV9ERVZJQ0VfQlVTWTsKIH0KIAogLyoqCkBAIC0xOTQ0LDcgKzE5NjksNyBAQAogCQlyZXR1cm4gMDsKIAogCWRwb2Z1YSA9IDA7Ci0JaWYgKGF0YV9kZXZfc3VwcG9ydHNfZnVhKGFyZ3MtPmlkKSAmJiBkZXYtPmZsYWdzICYgQVRBX0RGTEFHX0xCQTQ4ICYmCisJaWYgKGF0YV9kZXZfc3VwcG9ydHNfZnVhKGFyZ3MtPmlkKSAmJiAoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19MQkE0OCkgJiYKIAkgICAgKCEoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19QSU8pIHx8IGRldi0+bXVsdGlfY291bnQpKQogCQlkcG9mdWEgPSAxIDw8IDQ7CiAKQEAgLTIxMzcsMTMgKzIxNjIsMTQgQEAKIAogc3RhdGljIHZvaWQgYXRhcGlfc2Vuc2VfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKIHsKLQlpZiAocWMtPmVycl9tYXNrICYmICgocWMtPmVycl9tYXNrICYgQUNfRVJSX0RFVikgPT0gMCkpCisJaWYgKHFjLT5lcnJfbWFzayAmJiAoKHFjLT5lcnJfbWFzayAmIEFDX0VSUl9ERVYpID09IDApKSB7CiAJCS8qIEZJWE1FOiBub3QgcXVpdGUgcmlnaHQ7IHdlIGRvbid0IHdhbnQgdGhlCiAJCSAqIHRyYW5zbGF0aW9uIG9mIHRhc2tmaWxlIHJlZ2lzdGVycyBpbnRvCiAJCSAqIGEgc2Vuc2UgZGVzY3JpcHRvcnMsIHNpbmNlIHRoYXQncyBvbmx5CiAJCSAqIGNvcnJlY3QgZm9yIEFUQSwgbm90IEFUQVBJCiAJCSAqLwogCQlhdGFfZ2VuX2F0YV9kZXNjX3NlbnNlKHFjKTsKKwl9CiAKIAlxYy0+c2NzaWRvbmUocWMtPnNjc2ljbWQpOwogCWF0YV9xY19mcmVlKHFjKTsKQEAgLTIyMDcsMjEgKzIyMzMsMzggQEAKIAogCVZQUklOVEsoIkVOVEVSLCBlcnJfbWFzayAweCVYXG4iLCBlcnJfbWFzayk7CiAKKwkvKiBoYW5kbGUgY29tcGxldGlvbiBmcm9tIG5ldyBFSCAqLworCWlmICh1bmxpa2VseShxYy0+YXAtPm9wcy0+ZXJyb3JfaGFuZGxlciAmJgorCQkgICAgIChlcnJfbWFzayB8fCBxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1NFTlNFX1ZBTElEKSkpIHsKKworCQlpZiAoIShxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1NFTlNFX1ZBTElEKSkgeworCQkJLyogRklYTUU6IG5vdCBxdWl0ZSByaWdodDsgd2UgZG9uJ3Qgd2FudCB0aGUKKwkJCSAqIHRyYW5zbGF0aW9uIG9mIHRhc2tmaWxlIHJlZ2lzdGVycyBpbnRvIGEKKwkJCSAqIHNlbnNlIGRlc2NyaXB0b3JzLCBzaW5jZSB0aGF0J3Mgb25seQorCQkJICogY29ycmVjdCBmb3IgQVRBLCBub3QgQVRBUEkKKwkJCSAqLworCQkJYXRhX2dlbl9hdGFfZGVzY19zZW5zZShxYyk7CisJCX0KKworCQlxYy0+c2NzaWNtZC0+cmVzdWx0ID0gU0FNX1NUQVRfQ0hFQ0tfQ09ORElUSU9OOworCQlxYy0+c2NzaWRvbmUoY21kKTsKKwkJYXRhX3FjX2ZyZWUocWMpOworCQlyZXR1cm47CisJfQorCisJLyogc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9yIG9sZCBFSCBmYWlsdXJlIHBhdGggKi8KIAlpZiAodW5saWtlbHkoZXJyX21hc2sgJiBBQ19FUlJfREVWKSkgewogCQljbWQtPnJlc3VsdCA9IFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTjsKIAkJYXRhcGlfcmVxdWVzdF9zZW5zZShxYyk7CiAJCXJldHVybjsKLQl9Ci0KLQllbHNlIGlmICh1bmxpa2VseShlcnJfbWFzaykpCisJfSBlbHNlIGlmICh1bmxpa2VseShlcnJfbWFzaykpIHsKIAkJLyogRklYTUU6IG5vdCBxdWl0ZSByaWdodDsgd2UgZG9uJ3Qgd2FudCB0aGUKIAkJICogdHJhbnNsYXRpb24gb2YgdGFza2ZpbGUgcmVnaXN0ZXJzIGludG8KIAkJICogYSBzZW5zZSBkZXNjcmlwdG9ycywgc2luY2UgdGhhdCdzIG9ubHkKIAkJICogY29ycmVjdCBmb3IgQVRBLCBub3QgQVRBUEkKIAkJICovCiAJCWF0YV9nZW5fYXRhX2Rlc2Nfc2Vuc2UocWMpOwotCi0JZWxzZSB7CisJfSBlbHNlIHsKIAkJdTggKnNjc2ljbWQgPSBjbWQtPmNtbmQ7CiAKIAkJaWYgKChzY3NpY21kWzBdID09IElOUVVJUlkpICYmICgoc2NzaWNtZFsxXSAmIDB4MDMpID09IDApKSB7CkBAIC0yMzAzLDE4ICsyMzQ2LDYzIEBACiAJCXFjLT50Zi5wcm90b2NvbCA9IEFUQV9QUk9UX0FUQVBJX0RNQTsKIAkJcWMtPnRmLmZlYXR1cmUgfD0gQVRBUElfUEtUX0RNQTsKIAotI2lmZGVmIEFUQVBJX0VOQUJMRV9ETUFESVIKLQkJLyogc29tZSBTQVRBIGJyaWRnZXMgbmVlZCB1cyB0byBpbmRpY2F0ZSBkYXRhIHhmZXIgZGlyZWN0aW9uICovCi0JCWlmIChjbWQtPnNjX2RhdGFfZGlyZWN0aW9uICE9IERNQV9UT19ERVZJQ0UpCisJCWlmIChhdGFwaV9kbWFkaXIgJiYgKGNtZC0+c2NfZGF0YV9kaXJlY3Rpb24gIT0gRE1BX1RPX0RFVklDRSkpCisJCQkvKiBzb21lIFNBVEEgYnJpZGdlcyBuZWVkIHVzIHRvIGluZGljYXRlIGRhdGEgeGZlciBkaXJlY3Rpb24gKi8KIAkJCXFjLT50Zi5mZWF0dXJlIHw9IEFUQVBJX0RNQURJUjsKLSNlbmRpZgogCX0KIAotCXFjLT5uYnl0ZXMgPSBjbWQtPmJ1ZmZsZW47CisJcWMtPm5ieXRlcyA9IGNtZC0+cmVxdWVzdF9idWZmbGVuOwogCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgYXRhX2RldmljZSAqIGF0YV9maW5kX2RldihzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgaWQpCit7CisJaWYgKGxpa2VseShpZCA8IEFUQV9NQVhfREVWSUNFUykpCisJCXJldHVybiAmYXAtPmRldmljZVtpZF07CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXRhX2RldmljZSAqIF9fYXRhX3Njc2lfZmluZF9kZXYoc3RydWN0IGF0YV9wb3J0ICphcCwKKwkJCQkJY29uc3Qgc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpZGV2KQoreworCS8qIHNraXAgY29tbWFuZHMgbm90IGFkZHJlc3NlZCB0byB0YXJnZXRzIHdlIHNpbXVsYXRlICovCisJaWYgKHVubGlrZWx5KHNjc2lkZXYtPmNoYW5uZWwgfHwgc2NzaWRldi0+bHVuKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gYXRhX2ZpbmRfZGV2KGFwLCBzY3NpZGV2LT5pZCk7Cit9CisKKy8qKgorICoJYXRhX3Njc2lfZGV2X2VuYWJsZWQgLSBkZXRlcm1pbmUgaWYgZGV2aWNlIGlzIGVuYWJsZWQKKyAqCUBkZXY6IEFUQSBkZXZpY2UKKyAqCisgKglEZXRlcm1pbmUgaWYgY29tbWFuZHMgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHNwZWNpZmllZCBkZXZpY2UuCisgKgorICoJTE9DS0lORzoKKyAqCXNwaW5fbG9ja19pcnFzYXZlKGhvc3Rfc2V0IGxvY2spCisgKgorICoJUkVUVVJOUzoKKyAqCTAgaWYgY29tbWFuZHMgYXJlIG5vdCBhbGxvd2VkIC8gMSBpZiBjb21tYW5kcyBhcmUgYWxsb3dlZAorICovCisKK3N0YXRpYyBpbnQgYXRhX3Njc2lfZGV2X2VuYWJsZWQoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3sKKwlpZiAodW5saWtlbHkoIWF0YV9kZXZfZW5hYmxlZChkZXYpKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWF0YXBpX2VuYWJsZWQgfHwgKGRldi0+YXAtPmZsYWdzICYgQVRBX0ZMQUdfTk9fQVRBUEkpKSB7CisJCWlmICh1bmxpa2VseShkZXYtPmNsYXNzID09IEFUQV9ERVZfQVRBUEkpKSB7CisJCQlhdGFfZGV2X3ByaW50ayhkZXYsIEtFUk5fV0FSTklORywKKwkJCQkgICAgICAgIldBUk5JTkc6IEFUQVBJIGlzICVzLCBkZXZpY2UgaWdub3JlZC5cbiIsCisJCQkJICAgICAgIGF0YXBpX2VuYWJsZWQgPyAibm90IHN1cHBvcnRlZCB3aXRoIHRoaXMgZHJpdmVyIiA6ICJkaXNhYmxlZCIpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gMTsKK30KKwogLyoqCiAgKglhdGFfc2NzaV9maW5kX2RldiAtIGxvb2t1cCBhdGFfZGV2aWNlIGZyb20gc2NzaV9jbW5kCiAgKglAYXA6IEFUQSBwb3J0IHRvIHdoaWNoIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQKQEAgLTIzMzEsMzMgKzI0MTksMTQgQEAKICAqCVJFVFVSTlM6CiAgKglBc3NvY2lhdGVkIEFUQSBkZXZpY2UsIG9yICVOVUxMIGlmIG5vdCBmb3VuZC4KICAqLwotCiBzdGF0aWMgc3RydWN0IGF0YV9kZXZpY2UgKgogYXRhX3Njc2lfZmluZF9kZXYoc3RydWN0IGF0YV9wb3J0ICphcCwgY29uc3Qgc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpZGV2KQogewotCXN0cnVjdCBhdGFfZGV2aWNlICpkZXY7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9IF9fYXRhX3Njc2lfZmluZF9kZXYoYXAsIHNjc2lkZXYpOwogCi0JLyogc2tpcCBjb21tYW5kcyBub3QgYWRkcmVzc2VkIHRvIHRhcmdldHMgd2Ugc2ltdWxhdGUgKi8KLQlpZiAobGlrZWx5KHNjc2lkZXYtPmlkIDwgQVRBX01BWF9ERVZJQ0VTKSkKLQkJZGV2ID0gJmFwLT5kZXZpY2Vbc2NzaWRldi0+aWRdOwotCWVsc2UKKwlpZiAodW5saWtlbHkoIWRldiB8fCAhYXRhX3Njc2lfZGV2X2VuYWJsZWQoZGV2KSkpCiAJCXJldHVybiBOVUxMOwogCi0JaWYgKHVubGlrZWx5KChzY3NpZGV2LT5jaGFubmVsICE9IDApIHx8Ci0JCSAgICAgKHNjc2lkZXYtPmx1biAhPSAwKSkpCi0JCXJldHVybiBOVUxMOwotCi0JaWYgKHVubGlrZWx5KCFhdGFfZGV2X3ByZXNlbnQoZGV2KSkpCi0JCXJldHVybiBOVUxMOwotCi0JaWYgKCFhdGFwaV9lbmFibGVkIHx8IChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19OT19BVEFQSSkpIHsKLQkJaWYgKHVubGlrZWx5KGRldi0+Y2xhc3MgPT0gQVRBX0RFVl9BVEFQSSkpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgImF0YSV1KCV1KTogV0FSTklORzogQVRBUEkgaXMgJXMsIGRldmljZSBpZ25vcmVkLlxuIiwKLQkJCSAgICAgICBhcC0+aWQsIGRldi0+ZGV2bm8sIGF0YXBpX2VuYWJsZWQgPyAibm90IHN1cHBvcnRlZCB3aXRoIHRoaXMgZHJpdmVyIiA6ICJkaXNhYmxlZCIpOwotCQkJcmV0dXJuIE5VTEw7Ci0JCX0KLQl9Ci0KIAlyZXR1cm4gZGV2OwogfQogCkBAIC0yNDE0LDEwICsyNDgzLDE1IEBACiB7CiAJc3RydWN0IGF0YV90YXNrZmlsZSAqdGYgPSAmKHFjLT50Zik7CiAJc3RydWN0IHNjc2lfY21uZCAqY21kID0gcWMtPnNjc2ljbWQ7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9IHFjLT5kZXY7CiAKIAlpZiAoKHRmLT5wcm90b2NvbCA9IGF0YV9zY3NpX21hcF9wcm90byhzY3NpY21kWzFdKSkgPT0gQVRBX1BST1RfVU5LTk9XTikKIAkJZ290byBpbnZhbGlkX2ZsZDsKIAorCS8qIFdlIG1heSBub3QgaXNzdWUgRE1BIGNvbW1hbmRzIGlmIG5vIERNQSBtb2RlIGlzIHNldCAqLworCWlmICh0Zi0+cHJvdG9jb2wgPT0gQVRBX1BST1RfRE1BICYmIGRldi0+ZG1hX21vZGUgPT0gMCkKKwkJZ290byBpbnZhbGlkX2ZsZDsKKwogCWlmIChzY3NpY21kWzFdICYgMHhlMCkKIAkJLyogUElPIG11bHRpIG5vdCBzdXBwb3J0ZWQgeWV0ICovCiAJCWdvdG8gaW52YWxpZF9mbGQ7CkBAIC0yNTAwLDcgKzI1NzQsMTAgQEAKIAkgKiBUT0RPOiBmaW5kIG91dCBpZiB3ZSBuZWVkIHRvIGRvIG1vcmUgaGVyZSB0bwogCSAqICAgICAgIGNvdmVyIHNjYXR0ZXIvZ2F0aGVyIGNhc2UuCiAJICovCi0JcWMtPm5zZWN0ID0gY21kLT5idWZmbGVuIC8gQVRBX1NFQ1RfU0laRTsKKwlxYy0+bnNlY3QgPSBjbWQtPnJlcXVlc3RfYnVmZmxlbiAvIEFUQV9TRUNUX1NJWkU7CisKKwkvKiByZXF1ZXN0IHJlc3VsdCBURiAqLworCXFjLT5mbGFncyB8PSBBVEFfUUNGTEFHX1JFU1VMVF9URjsKIAogCXJldHVybiAwOwogCkBAIC0yNTc4LDE5ICsyNjU1LDI0IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9fYXRhX3Njc2lfcXVldWVjbWQoc3RydWN0IHNjc2lfY21uZCAqY21kLCB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSwKLQkJCQkgICAgICAgc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3N0YXRpYyBpbmxpbmUgaW50IF9fYXRhX3Njc2lfcXVldWVjbWQoc3RydWN0IHNjc2lfY21uZCAqY21kLAorCQkJCSAgICAgIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopLAorCQkJCSAgICAgIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCiB7CisJaW50IHJjID0gMDsKKwogCWlmIChkZXYtPmNsYXNzID09IEFUQV9ERVZfQVRBKSB7CiAJCWF0YV94bGF0X2Z1bmNfdCB4bGF0X2Z1bmMgPSBhdGFfZ2V0X3hsYXRfZnVuYyhkZXYsCiAJCQkJCQkJICAgICAgY21kLT5jbW5kWzBdKTsKIAogCQlpZiAoeGxhdF9mdW5jKQotCQkJYXRhX3Njc2lfdHJhbnNsYXRlKGFwLCBkZXYsIGNtZCwgZG9uZSwgeGxhdF9mdW5jKTsKKwkJCXJjID0gYXRhX3Njc2lfdHJhbnNsYXRlKGRldiwgY21kLCBkb25lLCB4bGF0X2Z1bmMpOwogCQllbHNlCi0JCQlhdGFfc2NzaV9zaW11bGF0ZShhcCwgZGV2LCBjbWQsIGRvbmUpOworCQkJYXRhX3Njc2lfc2ltdWxhdGUoZGV2LCBjbWQsIGRvbmUpOwogCX0gZWxzZQotCQlhdGFfc2NzaV90cmFuc2xhdGUoYXAsIGRldiwgY21kLCBkb25lLCBhdGFwaV94bGF0KTsKKwkJcmMgPSBhdGFfc2NzaV90cmFuc2xhdGUoZGV2LCBjbWQsIGRvbmUsIGF0YXBpX3hsYXQpOworCisJcmV0dXJuIHJjOwogfQogCiAvKioKQEAgLTI2MDksMzkgKzI2OTEsMzkgQEAKICAqCVJlbGVhc2VzIHNjc2ktbGF5ZXItaGVsZCBsb2NrLCBhbmQgb2J0YWlucyBob3N0X3NldCBsb2NrLgogICoKICAqCVJFVFVSTlM6Ci0gKglaZXJvLgorICoJUmV0dXJuIHZhbHVlIGZyb20gX19hdGFfc2NzaV9xdWV1ZWNtZCgpIGlmIEBjbWQgY2FuIGJlIHF1ZXVlZCwKKyAqCTAgb3RoZXJ3aXNlLgogICovCi0KIGludCBhdGFfc2NzaV9xdWV1ZWNtZChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQsIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKQogewogCXN0cnVjdCBhdGFfcG9ydCAqYXA7CiAJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKIAlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNjc2lkZXYgPSBjbWQtPmRldmljZTsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHNjc2lkZXYtPmhvc3Q7CisJaW50IHJjID0gMDsKIAotCWFwID0gKHN0cnVjdCBhdGFfcG9ydCAqKSAmc2hvc3QtPmhvc3RkYXRhWzBdOworCWFwID0gYXRhX3Nob3N0X3RvX3BvcnQoc2hvc3QpOwogCiAJc3Bpbl91bmxvY2soc2hvc3QtPmhvc3RfbG9jayk7Ci0Jc3Bpbl9sb2NrKCZhcC0+aG9zdF9zZXQtPmxvY2spOworCXNwaW5fbG9jayhhcC0+bG9jayk7CiAKIAlhdGFfc2NzaV9kdW1wX2NkYihhcCwgY21kKTsKIAogCWRldiA9IGF0YV9zY3NpX2ZpbmRfZGV2KGFwLCBzY3NpZGV2KTsKIAlpZiAobGlrZWx5KGRldikpCi0JCV9fYXRhX3Njc2lfcXVldWVjbWQoY21kLCBkb25lLCBhcCwgZGV2KTsKKwkJcmMgPSBfX2F0YV9zY3NpX3F1ZXVlY21kKGNtZCwgZG9uZSwgZGV2KTsKIAllbHNlIHsKIAkJY21kLT5yZXN1bHQgPSAoRElEX0JBRF9UQVJHRVQgPDwgMTYpOwogCQlkb25lKGNtZCk7CiAJfQogCi0Jc3Bpbl91bmxvY2soJmFwLT5ob3N0X3NldC0+bG9jayk7CisJc3Bpbl91bmxvY2soYXAtPmxvY2spOwogCXNwaW5fbG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmM7CiB9CiAKIC8qKgogICoJYXRhX3Njc2lfc2ltdWxhdGUgLSBzaW11bGF0ZSBTQ1NJIGNvbW1hbmQgb24gQVRBIGRldmljZQotICoJQGFwOiBwb3J0IHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvCiAgKglAZGV2OiB0aGUgdGFyZ2V0IGRldmljZQogICoJQGNtZDogU0NTSSBjb21tYW5kIGJlaW5nIHNlbnQgdG8gZGV2aWNlLgogICoJQGRvbmU6IFNDU0kgY29tbWFuZCBjb21wbGV0aW9uIGZ1bmN0aW9uLgpAQCAtMjY1MywxNCArMjczNSwxMiBAQAogICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKICAqLwogCi12b2lkIGF0YV9zY3NpX3NpbXVsYXRlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsCi0JCSAgICAgIHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKK3ZvaWQgYXRhX3Njc2lfc2ltdWxhdGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgc3RydWN0IHNjc2lfY21uZCAqY21kLAogCQkgICAgICB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSkKIHsKIAlzdHJ1Y3QgYXRhX3Njc2lfYXJncyBhcmdzOwogCWNvbnN0IHU4ICpzY3NpY21kID0gY21kLT5jbW5kOwogCi0JYXJncy5hcCA9IGFwOwogCWFyZ3MuZGV2ID0gZGV2OwogCWFyZ3MuaWQgPSBkZXYtPmlkOwogCWFyZ3MuY21kID0gY21kOwpAQCAtMjczMiwxNyArMjgxMiwyNDEgQEAKIAogdm9pZCBhdGFfc2NzaV9zY2FuX2hvc3Qoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKLQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2OwogCXVuc2lnbmVkIGludCBpOwogCi0JaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX1BPUlRfRElTQUJMRUQpCisJaWYgKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKQogCQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVRBX01BWF9ERVZJQ0VTOyBpKyspIHsKKwkJc3RydWN0IGF0YV9kZXZpY2UgKmRldiA9ICZhcC0+ZGV2aWNlW2ldOworCQlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7CisKKwkJaWYgKCFhdGFfZGV2X2VuYWJsZWQoZGV2KSB8fCBkZXYtPnNkZXYpCisJCQljb250aW51ZTsKKworCQlzZGV2ID0gX19zY3NpX2FkZF9kZXZpY2UoYXAtPmhvc3QsIDAsIGksIDAsIE5VTEwpOworCQlpZiAoIUlTX0VSUihzZGV2KSkgeworCQkJZGV2LT5zZGV2ID0gc2RldjsKKwkJCXNjc2lfZGV2aWNlX3B1dChzZGV2KTsKKwkJfQorCX0KK30KKworLyoqCisgKglhdGFfc2NzaV9vZmZsaW5lX2RldiAtIG9mZmxpbmUgYXR0YWNoZWQgU0NTSSBkZXZpY2UKKyAqCUBkZXY6IEFUQSBkZXZpY2UgdG8gb2ZmbGluZSBhdHRhY2hlZCBTQ1NJIGRldmljZSBmb3IKKyAqCisgKglUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGF0YV9laF9ob3RwbHVnKCkgYW5kIHJlc3BvbnNpYmxlCisgKglmb3IgdGFraW5nIHRoZSBTQ1NJIGRldmljZSBhdHRhY2hlZCB0byBAZGV2IG9mZmxpbmUuICBUaGlzCisgKglmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBob3N0X3NldCBsb2NrIHdoaWNoIHByb3RlY3RzIGRldi0+c2RldgorICoJYWdhaW5zdCBjbGVhcmluZy4KKyAqCisgKglMT0NLSU5HOgorICoJc3Bpbl9sb2NrX2lycXNhdmUoaG9zdF9zZXQgbG9jaykKKyAqCisgKglSRVRVUk5TOgorICoJMSBpZiBhdHRhY2hlZCBTQ1NJIGRldmljZSBleGlzdHMsIDAgb3RoZXJ3aXNlLgorICovCitpbnQgYXRhX3Njc2lfb2ZmbGluZV9kZXYoc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3sKKwlpZiAoZGV2LT5zZGV2KSB7CisJCXNjc2lfZGV2aWNlX3NldF9zdGF0ZShkZXYtPnNkZXYsIFNERVZfT0ZGTElORSk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoqCisgKglhdGFfc2NzaV9yZW1vdmVfZGV2IC0gcmVtb3ZlIGF0dGFjaGVkIFNDU0kgZGV2aWNlCisgKglAZGV2OiBBVEEgZGV2aWNlIHRvIHJlbW92ZSBhdHRhY2hlZCBTQ1NJIGRldmljZSBmb3IKKyAqCisgKglUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGF0YV9laF9zY3NpX2hvdHBsdWcoKSBhbmQKKyAqCXJlc3BvbnNpYmxlIGZvciByZW1vdmluZyB0aGUgU0NTSSBkZXZpY2UgYXR0YWNoZWQgdG8gQGRldi4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCitzdGF0aWMgdm9pZCBhdGFfc2NzaV9yZW1vdmVfZGV2KHN0cnVjdCBhdGFfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGRldi0+YXA7CisJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBBbGFzLCB3ZSBuZWVkIHRvIGdyYWIgc2Nhbl9tdXRleCB0byBlbnN1cmUgU0NTSSBkZXZpY2UKKwkgKiBzdGF0ZSBkb2Vzbid0IGNoYW5nZSB1bmRlcm5lYXRoIHVzIGFuZCB0aHVzCisJICogc2NzaV9kZXZpY2VfZ2V0KCkgYWx3YXlzIHN1Y2NlZWRzLiAgVGhlIG11dGV4IGxvY2tpbmcgY2FuCisJICogYmUgcmVtb3ZlZCBpZiB0aGVyZSBpcyBfX3Njc2lfZGV2aWNlX2dldCgpIGludGVyZmFjZSB3aGljaAorCSAqIGluY3JlbWVudHMgcmVmZXJlbmNlIGNvdW50cyByZWdhcmRsZXNzIG9mIGRldmljZSBzdGF0ZS4KKwkgKi8KKwltdXRleF9sb2NrKCZhcC0+aG9zdC0+c2Nhbl9tdXRleCk7CisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCS8qIGNsZWFyaW5nIGRldi0+c2RldiBpcyBwcm90ZWN0ZWQgYnkgaG9zdF9zZXQgbG9jayAqLworCXNkZXYgPSBkZXYtPnNkZXY7CisJZGV2LT5zZGV2ID0gTlVMTDsKKworCWlmIChzZGV2KSB7CisJCS8qIElmIHVzZXIgaW5pdGlhdGVkIHVucGx1ZyByYWNlcyB3aXRoIHVzLCBzZGV2IGNhbiBnbworCQkgKiBhd2F5IHVuZGVybmVhdGggdXMgYWZ0ZXIgdGhlIGhvc3Rfc2V0IGxvY2sgYW5kCisJCSAqIHNjYW5fbXV0ZXggYXJlIHJlbGVhc2VkLiAgSG9sZCBvbnRvIGl0LgorCQkgKi8KKwkJaWYgKHNjc2lfZGV2aWNlX2dldChzZGV2KSA9PSAwKSB7CisJCQkvKiBUaGUgZm9sbG93aW5nIGVuc3VyZXMgdGhlIGF0dGFjaGVkIHNkZXYgaXMKKwkJCSAqIG9mZmxpbmUgb24gcmV0dXJuIGZyb20gYXRhX3Njc2lfb2ZmbGluZV9kZXYoKQorCQkJICogcmVnYXJkbGVzcyBpdCB3aW5zIG9yIGxvc2VzIHRoZSByYWNlCisJCQkgKiBhZ2FpbnN0IHRoaXMgZnVuY3Rpb24uCisJCQkgKi8KKwkJCXNjc2lfZGV2aWNlX3NldF9zdGF0ZShzZGV2LCBTREVWX09GRkxJTkUpOworCQl9IGVsc2UgeworCQkJV0FSTl9PTigxKTsKKwkJCXNkZXYgPSBOVUxMOworCQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShhcC0+bG9jaywgZmxhZ3MpOworCW11dGV4X3VubG9jaygmYXAtPmhvc3QtPnNjYW5fbXV0ZXgpOworCisJaWYgKHNkZXYpIHsKKwkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0lORk8sICJkZXRhY2hpbmcgKFNDU0kgJXMpXG4iLAorCQkJICAgICAgIHNkZXYtPnNkZXZfZ2VuZGV2LmJ1c19pZCk7CisKKwkJc2NzaV9yZW1vdmVfZGV2aWNlKHNkZXYpOworCQlzY3NpX2RldmljZV9wdXQoc2Rldik7CisJfQorfQorCisvKioKKyAqCWF0YV9zY3NpX2hvdHBsdWcgLSBTQ1NJIHBhcnQgb2YgaG90cGx1ZworICoJQGRhdGE6IFBvaW50ZXIgdG8gQVRBIHBvcnQgdG8gcGVyZm9ybSBTQ1NJIGhvdHBsdWcgb24KKyAqCisgKglQZXJmb3JtIFNDU0kgcGFydCBvZiBob3RwbHVnLiAgSXQncyBleGVjdXRlZCBmcm9tIGEgc2VwYXJhdGUKKyAqCXdvcmtxdWV1ZSBhZnRlciBFSCBjb21wbGV0ZXMuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIFNDU0kKKyAqCWhvdCBwbHVnZ2luZyByZXF1aXJlcyB3b3JraW5nIEVIIGFuZCBob3QgdW5wbHVnZ2luZyBpcworICoJc3luY2hyb25pemVkIHdpdGggaG90IHBsdWdnaW5nIHdpdGggYSBtdXRleC4KKyAqCisgKglMT0NLSU5HOgorICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgorICovCit2b2lkIGF0YV9zY3NpX2hvdHBsdWcodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gZGF0YTsKKwlpbnQgaTsKKworCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19VTkxPQURJTkcpIHsKKwkJRFBSSU5USygiRU5URVIvRVhJVCAtIHVubG9hZGluZ1xuIik7CisJCXJldHVybjsKKwl9CisKKwlEUFJJTlRLKCJFTlRFUlxuIik7CisKKwkvKiB1bnBsdWcgZGV0YWNoZWQgZGV2aWNlcyAqLworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgeworCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJaWYgKCEoZGV2LT5mbGFncyAmIEFUQV9ERkxBR19ERVRBQ0hFRCkpCisJCQljb250aW51ZTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZShhcC0+bG9jaywgZmxhZ3MpOworCQlkZXYtPmZsYWdzICY9IH5BVEFfREZMQUdfREVUQUNIRUQ7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCQlhdGFfc2NzaV9yZW1vdmVfZGV2KGRldik7CisJfQorCisJLyogc2NhbiBmb3IgbmV3IG9uZXMgKi8KKwlhdGFfc2NzaV9zY2FuX2hvc3QoYXApOworCisJLyogSWYgd2Ugc2Nhbm5lZCB3aGlsZSBFSCB3YXMgaW4gcHJvZ3Jlc3MsIHNjYW4gd291bGQgaGF2ZQorCSAqIGZhaWxlZCBzaWxlbnRseS4gIFJlcXVldWUgaWYgdGhlcmUgYXJlIGVuYWJsZWQgYnV0CisJICogdW5hdHRhY2hlZCBkZXZpY2VzLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgeworCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gJmFwLT5kZXZpY2VbaV07CisJCWlmIChhdGFfZGV2X2VuYWJsZWQoZGV2KSAmJiAhZGV2LT5zZGV2KSB7CisJCQlxdWV1ZV9kZWxheWVkX3dvcmsoYXRhX2F1eF93cSwgJmFwLT5ob3RwbHVnX3Rhc2ssIEhaKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJRFBSSU5USygiRVhJVFxuIik7Cit9CisKKy8qKgorICoJYXRhX3Njc2lfdXNlcl9zY2FuIC0gaW5kaWNhdGlvbiBmb3IgdXNlci1pbml0aWF0ZWQgYnVzIHNjYW4KKyAqCUBzaG9zdDogU0NTSSBob3N0IHRvIHNjYW4KKyAqCUBjaGFubmVsOiBDaGFubmVsIHRvIHNjYW4KKyAqCUBpZDogSUQgdG8gc2NhbgorICoJQGx1bjogTFVOIHRvIHNjYW4KKyAqCisgKglUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0cyBidXMKKyAqCXNjYW4uICBTZXQgcHJvYmUgcGVuZGluZyBmbGFnIGFuZCBpbnZva2UgRUguCisgKgorICoJTE9DS0lORzoKKyAqCVNDU0kgbGF5ZXIgKHdlIGRvbid0IGNhcmUpCisgKgorICoJUkVUVVJOUzoKKyAqCVplcm8uCisgKi8KK3N0YXRpYyBpbnQgYXRhX3Njc2lfdXNlcl9zY2FuKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCB1bnNpZ25lZCBpbnQgY2hhbm5lbCwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IGx1bikKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gYXRhX3Nob3N0X3RvX3BvcnQoc2hvc3QpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHJjID0gMDsKKworCWlmICghYXAtPm9wcy0+ZXJyb3JfaGFuZGxlcikKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJaWYgKChjaGFubmVsICE9IFNDQU5fV0lMRF9DQVJEICYmIGNoYW5uZWwgIT0gMCkgfHwKKwkgICAgKGx1biAhPSBTQ0FOX1dJTERfQ0FSRCAmJiBsdW4gIT0gMCkpCisJCXJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrX2lycXNhdmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCWlmIChpZCA9PSBTQ0FOX1dJTERfQ0FSRCkgeworCQlhcC0+ZWhfaW5mby5wcm9iZV9tYXNrIHw9ICgxIDw8IEFUQV9NQVhfREVWSUNFUykgLSAxOworCQlhcC0+ZWhfaW5mby5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgYXRhX2RldmljZSAqZGV2ID0gYXRhX2ZpbmRfZGV2KGFwLCBpZCk7CisKKwkJaWYgKGRldikgeworCQkJYXAtPmVoX2luZm8ucHJvYmVfbWFzayB8PSAxIDw8IGRldi0+ZGV2bm87CisJCQlhcC0+ZWhfaW5mby5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwkJfSBlbHNlCisJCQlyYyA9IC1FSU5WQUw7CisJfQorCisJaWYgKHJjID09IDApCisJCWF0YV9wb3J0X3NjaGVkdWxlX2VoKGFwKTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoYXAtPmxvY2ssIGZsYWdzKTsKKworCXJldHVybiByYzsKK30KKworLyoqCisgKglhdGFfc2NzaV9kZXZfcmVzY2FuIC0gaW5pdGlhdGUgc2NzaV9yZXNjYW5fZGV2aWNlKCkKKyAqCUBkYXRhOiBQb2ludGVyIHRvIEFUQSBwb3J0IHRvIHBlcmZvcm0gc2NzaV9yZXNjYW5fZGV2aWNlKCkKKyAqCisgKglBZnRlciBBVEEgcGFzcyB0aHJ1IChTQVQpIGNvbW1hbmRzIGFyZSBleGVjdXRlZCBzdWNjZXNzZnVsbHksCisgKglsaWJhdGEgbmVlZCB0byBwcm9wYWdhdGUgdGhlIGNoYW5nZXMgdG8gU0NTSSBsYXllci4gIFRoaXMKKyAqCWZ1bmN0aW9uIG11c3QgYmUgZXhlY3V0ZWQgZnJvbSBhdGFfYXV4X3dxIHN1Y2ggdGhhdCBzZGV2CisgKglhdHRhY2gvZGV0YWNoIGRvbid0IHJhY2Ugd2l0aCByZXNjYW4uCisgKgorICoJTE9DS0lORzoKKyAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KKyAqLwordm9pZCBhdGFfc2NzaV9kZXZfcmVzY2FuKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGF0YV9wb3J0ICphcCA9IGRhdGE7CisJc3RydWN0IGF0YV9kZXZpY2UgKmRldjsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBVEFfTUFYX0RFVklDRVM7IGkrKykgewogCQlkZXYgPSAmYXAtPmRldmljZVtpXTsKIAotCQlpZiAoYXRhX2Rldl9wcmVzZW50KGRldikpCi0JCQlzY3NpX3NjYW5fdGFyZ2V0KCZhcC0+aG9zdC0+c2hvc3RfZ2VuZGV2LCAwLCBpLCAwLCAwKTsKKwkJaWYgKGF0YV9kZXZfZW5hYmxlZChkZXYpICYmIGRldi0+c2RldikKKwkJCXNjc2lfcmVzY2FuX2RldmljZSgmKGRldi0+c2Rldi0+c2Rldl9nZW5kZXYpKTsKIAl9CiB9Ci0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJhdGEuaCBiL2RyaXZlcnMvc2NzaS9saWJhdGEuaAppbmRleCBiYWM4Y2JhLi5iZGQ0ODg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbGliYXRhLmgKKysrIGIvZHJpdmVycy9zY3NpL2xpYmF0YS5oCkBAIC0yOSwxMCArMjksOSBAQAogI2RlZmluZSBfX0xJQkFUQV9IX18KIAogI2RlZmluZSBEUlZfTkFNRQkibGliYXRhIgotI2RlZmluZSBEUlZfVkVSU0lPTgkiMS4yMCIJLyogbXVzdCBiZSBleGFjdGx5IGZvdXIgY2hhcnMgKi8KKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjEuMzAiCS8qIG11c3QgYmUgZXhhY3RseSBmb3VyIGNoYXJzICovCiAKIHN0cnVjdCBhdGFfc2NzaV9hcmdzIHsKLQlzdHJ1Y3QgYXRhX3BvcnQJCSphcDsKIAlzdHJ1Y3QgYXRhX2RldmljZQkqZGV2OwogCXUxNgkJCSppZDsKIAlzdHJ1Y3Qgc2NzaV9jbW5kCSpjbWQ7CkBAIC00MCwxOCArMzksMzIgQEAKIH07CiAKIC8qIGxpYmF0YS1jb3JlLmMgKi8KK2V4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqYXRhX2F1eF93cTsKIGV4dGVybiBpbnQgYXRhcGlfZW5hYmxlZDsKK2V4dGVybiBpbnQgYXRhcGlfZG1hZGlyOwogZXh0ZXJuIGludCBsaWJhdGFfZnVhOwotZXh0ZXJuIHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqYXRhX3FjX25ld19pbml0KHN0cnVjdCBhdGFfcG9ydCAqYXAsCi0JCQkJICAgICAgc3RydWN0IGF0YV9kZXZpY2UgKmRldik7CitleHRlcm4gc3RydWN0IGF0YV9xdWV1ZWRfY21kICphdGFfcWNfbmV3X2luaXQoc3RydWN0IGF0YV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGF0YV9yd2NtZF9wcm90b2NvbChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKK2V4dGVybiB2b2lkIGF0YV9kZXZfZGlzYWJsZShzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGF0YV9wb3J0X2ZsdXNoX3Rhc2soc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gdW5zaWduZWQgYXRhX2V4ZWNfaW50ZXJuYWwoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwKKwkJCQkgIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmLCBjb25zdCB1OCAqY2RiLAorCQkJCSAgaW50IGRtYV9kaXIsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IGJ1Zmxlbik7CitleHRlcm4gaW50IGF0YV9kZXZfcmVhZF9pZChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgKnBfY2xhc3MsCisJCQkgICBpbnQgcG9zdF9yZXNldCwgdTE2ICppZCk7CitleHRlcm4gaW50IGF0YV9kZXZfY29uZmlndXJlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIGludCBwcmludF9pbmZvKTsKK2V4dGVybiBpbnQgc2F0YV9kb3duX3NwZF9saW1pdChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK2V4dGVybiBpbnQgc2F0YV9zZXRfc3BkX25lZWRlZChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK2V4dGVybiBpbnQgYXRhX2Rvd25feGZlcm1hc2tfbGltaXQoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgaW50IGZvcmNlX3BpbzApOworZXh0ZXJuIGludCBhdGFfc2V0X21vZGUoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKipyX2ZhaWxlZF9kZXYpOwogZXh0ZXJuIHZvaWQgYXRhX3FjX2ZyZWUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiBleHRlcm4gdm9pZCBhdGFfcWNfaXNzdWUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CitleHRlcm4gdm9pZCBfX2F0YV9xY19jb21wbGV0ZShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIGV4dGVybiBpbnQgYXRhX2NoZWNrX2F0YXBpX2RtYShzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIGV4dGVybiB2b2lkIGF0YV9kZXZfc2VsZWN0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCBkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdCwgdW5zaWduZWQgaW50IGNhbl9zbGVlcCk7CiBleHRlcm4gdm9pZCBzd2FwX2J1Zl9sZTE2KHUxNiAqYnVmLCB1bnNpZ25lZCBpbnQgYnVmX3dvcmRzKTsKK2V4dGVybiB2b2lkIGF0YV9kZXZfaW5pdChzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgYXRhX3Rhc2tfaW9jdGwoc3RydWN0IHNjc2lfZGV2aWNlICpzY3NpZGV2LCB2b2lkIF9fdXNlciAqYXJnKTsKIGV4dGVybiBpbnQgYXRhX2NtZF9pb2N0bChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNjc2lkZXYsIHZvaWQgX191c2VyICphcmcpOwogCkBAIC02MCw2ICs3Myw4IEBACiBleHRlcm4gc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlIGF0YV9zY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZTsKIAogZXh0ZXJuIHZvaWQgYXRhX3Njc2lfc2Nhbl9ob3N0KHN0cnVjdCBhdGFfcG9ydCAqYXApOworZXh0ZXJuIGludCBhdGFfc2NzaV9vZmZsaW5lX2RldihzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGF0YV9zY3NpX2hvdHBsdWcodm9pZCAqZGF0YSk7CiBleHRlcm4gdW5zaWduZWQgaW50IGF0YV9zY3Npb3BfaW5xX3N0ZChzdHJ1Y3QgYXRhX3Njc2lfYXJncyAqYXJncywgdTggKnJidWYsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGJ1Zmxlbik7CiAKQEAgLTg4LDUgKzEwMywxMyBAQAogZXh0ZXJuIHZvaWQgYXRhX3Njc2lfcmJ1Zl9maWxsKHN0cnVjdCBhdGFfc2NzaV9hcmdzICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICgqYWN0b3IpIChzdHJ1Y3QgYXRhX3Njc2lfYXJncyAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqcmJ1ZiwgdW5zaWduZWQgaW50IGJ1ZmxlbikpOworZXh0ZXJuIHZvaWQgYXRhX3NjaGVkdWxlX3Njc2lfZWgoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpOworZXh0ZXJuIHZvaWQgYXRhX3Njc2lfZGV2X3Jlc2Nhbih2b2lkICpkYXRhKTsKKworLyogbGliYXRhLWVoLmMgKi8KK2V4dGVybiBlbnVtIHNjc2lfZWhfdGltZXJfcmV0dXJuIGF0YV9zY3NpX3RpbWVkX291dChzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpOworZXh0ZXJuIHZvaWQgYXRhX3Njc2lfZXJyb3Ioc3RydWN0IFNjc2lfSG9zdCAqaG9zdCk7CitleHRlcm4gdm9pZCBhdGFfcG9ydF93YWl0X2VoKHN0cnVjdCBhdGFfcG9ydCAqYXApOworZXh0ZXJuIHZvaWQgYXRhX3FjX3NjaGVkdWxlX2VoKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwogCiAjZW5kaWYgLyogX19MSUJBVEFfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYyBiL2RyaXZlcnMvc2NzaS9saWJpc2NzaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NzNhMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3Njc2kvbGliaXNjc2kuYwpAQCAtMCwwICsxLDE3MDIgQEAKKy8qCisgKiBpU0NTSSBsaWIgZnVuY3Rpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDA2IE1pa2UgQ2hyaXN0aWUKKyAqIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMDUgRG1pdHJ5IFl1c3Vwb3YKKyAqIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMDUgQWxleCBBaXptYW4KKyAqIG1haW50YWluZWQgYnkgb3Blbi1pc2NzaUBnb29nbGVncm91cHMuY29tCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9rZmlmby5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bmV0L3RjcC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV90Y3EuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgorI2luY2x1ZGUgPHNjc2kvaXNjc2lfcHJvdG8uaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfdHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5oPgorI2luY2x1ZGUgPHNjc2kvbGliaXNjc2kuaD4KKworc3RydWN0IGlzY3NpX3Nlc3Npb24gKgorY2xhc3NfdG9fdHJhbnNwb3J0X3Nlc3Npb24oc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpjbHNfc2Vzc2lvbikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGlzY3NpX3Nlc3Npb25fdG9fc2hvc3QoY2xzX3Nlc3Npb24pOworCXJldHVybiBpc2NzaV9ob3N0ZGF0YShzaG9zdC0+aG9zdGRhdGEpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoY2xhc3NfdG9fdHJhbnNwb3J0X3Nlc3Npb24pOworCisjZGVmaW5lIElOVkFMSURfU05fREVMVEEJMHhmZmZmCisKK2ludAoraXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3QgaXNjc2lfbm9waW4gKmhkcikKK3sKKwl1aW50MzJfdCBtYXhfY21kc24gPSBiZTMyX3RvX2NwdShoZHItPm1heF9jbWRzbik7CisJdWludDMyX3QgZXhwX2NtZHNuID0gYmUzMl90b19jcHUoaGRyLT5leHBfY21kc24pOworCisJaWYgKG1heF9jbWRzbiA8IGV4cF9jbWRzbiAtMSAmJgorCSAgICBtYXhfY21kc24gPiBleHBfY21kc24gLSBJTlZBTElEX1NOX0RFTFRBKQorCQlyZXR1cm4gSVNDU0lfRVJSX01BWF9DTURTTjsKKwlpZiAobWF4X2NtZHNuID4gc2Vzc2lvbi0+bWF4X2NtZHNuIHx8CisJICAgIG1heF9jbWRzbiA8IHNlc3Npb24tPm1heF9jbWRzbiAtIElOVkFMSURfU05fREVMVEEpCisJCXNlc3Npb24tPm1heF9jbWRzbiA9IG1heF9jbWRzbjsKKwlpZiAoZXhwX2NtZHNuID4gc2Vzc2lvbi0+ZXhwX2NtZHNuIHx8CisJICAgIGV4cF9jbWRzbiA8IHNlc3Npb24tPmV4cF9jbWRzbiAtIElOVkFMSURfU05fREVMVEEpCisJCXNlc3Npb24tPmV4cF9jbWRzbiA9IGV4cF9jbWRzbjsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKTsKKwordm9pZCBpc2NzaV9wcmVwX3Vuc29saWNpdF9kYXRhX3BkdShzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrLAorCQkJCSAgIHN0cnVjdCBpc2NzaV9kYXRhICpoZHIsCisJCQkJICAgaW50IHRyYW5zcG9ydF9kYXRhX2NudCkKK3sKKwlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGN0YXNrLT5jb25uOworCisJbWVtc2V0KGhkciwgMCwgc2l6ZW9mKHN0cnVjdCBpc2NzaV9kYXRhKSk7CisJaGRyLT50dHQgPSBjcHVfdG9fYmUzMihJU0NTSV9SRVNFUlZFRF9UQUcpOworCWhkci0+ZGF0YXNuID0gY3B1X3RvX2JlMzIoY3Rhc2stPnVuc29sX2RhdGFzbik7CisJY3Rhc2stPnVuc29sX2RhdGFzbisrOworCWhkci0+b3Bjb2RlID0gSVNDU0lfT1BfU0NTSV9EQVRBX09VVDsKKwltZW1jcHkoaGRyLT5sdW4sIGN0YXNrLT5oZHItPmx1biwgc2l6ZW9mKGhkci0+bHVuKSk7CisKKwloZHItPml0dCA9IGN0YXNrLT5oZHItPml0dDsKKwloZHItPmV4cF9zdGF0c24gPSBjcHVfdG9fYmUzMihjb25uLT5leHBfc3RhdHNuKTsKKworCWhkci0+b2Zmc2V0ID0gY3B1X3RvX2JlMzIoY3Rhc2stPnRvdGFsX2xlbmd0aCAtCisJCQkJICB0cmFuc3BvcnRfZGF0YV9jbnQgLQorCQkJCSAgY3Rhc2stPnVuc29sX2NvdW50KTsKKworCWlmIChjdGFzay0+dW5zb2xfY291bnQgPiBjb25uLT5tYXhfeG1pdF9kbGVuZ3RoKSB7CisJCWh0b24yNChoZHItPmRsZW5ndGgsIGNvbm4tPm1heF94bWl0X2RsZW5ndGgpOworCQljdGFzay0+ZGF0YV9jb3VudCA9IGNvbm4tPm1heF94bWl0X2RsZW5ndGg7CisJCWhkci0+ZmxhZ3MgPSAwOworCX0gZWxzZSB7CisJCWh0b24yNChoZHItPmRsZW5ndGgsIGN0YXNrLT51bnNvbF9jb3VudCk7CisJCWN0YXNrLT5kYXRhX2NvdW50ID0gY3Rhc2stPnVuc29sX2NvdW50OworCQloZHItPmZsYWdzID0gSVNDU0lfRkxBR19DTURfRklOQUw7CisJfQorfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfcHJlcF91bnNvbGljaXRfZGF0YV9wZHUpOworCisvKioKKyAqIGlzY3NpX3ByZXBfc2NzaV9jbWRfcGR1IC0gcHJlcCBpc2NzaSBzY3NpIGNtZCBwZHUKKyAqIEBjdGFzazogaXNjc2kgY21kIHRhc2sKKyAqCisgKiBQcmVwIGJhc2ljIGlTQ1NJIFBEVSBmaWVsZHMgZm9yIGEgc2NzaSBjbWQgcGR1LiBUaGUgTExEIHNob3VsZCBzZXQKKyAqIGZpZWxkcyBsaWtlIGRsZW5ndGggb3IgZmluYWwgYmFzZWQgb24gaG93IG11Y2ggZGF0YSBpdCBzZW5kcworICovCitzdGF0aWMgdm9pZCBpc2NzaV9wcmVwX3Njc2lfY21kX3BkdShzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKQoreworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gY3Rhc2stPmNvbm47CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCXN0cnVjdCBpc2NzaV9jbWQgKmhkciA9IGN0YXNrLT5oZHI7CisJc3RydWN0IHNjc2lfY21uZCAqc2MgPSBjdGFzay0+c2M7CisKKyAgICAgICAgaGRyLT5vcGNvZGUgPSBJU0NTSV9PUF9TQ1NJX0NNRDsKKyAgICAgICAgaGRyLT5mbGFncyA9IElTQ1NJX0FUVFJfU0lNUExFOworICAgICAgICBpbnRfdG9fc2NzaWx1bihzYy0+ZGV2aWNlLT5sdW4sIChzdHJ1Y3Qgc2NzaV9sdW4gKiloZHItPmx1bik7CisgICAgICAgIGhkci0+aXR0ID0gY3Rhc2stPml0dCB8IChjb25uLT5pZCA8PCBJU0NTSV9DSURfU0hJRlQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vzc2lvbi0+YWdlIDw8IElTQ1NJX0FHRV9TSElGVCk7CisgICAgICAgIGhkci0+ZGF0YV9sZW5ndGggPSBjcHVfdG9fYmUzMihzYy0+cmVxdWVzdF9idWZmbGVuKTsKKyAgICAgICAgaGRyLT5jbWRzbiA9IGNwdV90b19iZTMyKHNlc3Npb24tPmNtZHNuKTsKKyAgICAgICAgc2Vzc2lvbi0+Y21kc24rKzsKKyAgICAgICAgaGRyLT5leHBfc3RhdHNuID0gY3B1X3RvX2JlMzIoY29ubi0+ZXhwX3N0YXRzbik7CisgICAgICAgIG1lbWNweShoZHItPmNkYiwgc2MtPmNtbmQsIHNjLT5jbWRfbGVuKTsKKyAgICAgICAgbWVtc2V0KCZoZHItPmNkYltzYy0+Y21kX2xlbl0sIDAsIE1BWF9DT01NQU5EX1NJWkUgLSBzYy0+Y21kX2xlbik7CisKKwlpZiAoc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UpIHsKKwkJaGRyLT5mbGFncyB8PSBJU0NTSV9GTEFHX0NNRF9XUklURTsKKwkJLyoKKwkJICogV3JpdGUgY291bnRlcnM6CisJCSAqCisJCSAqCWltbV9jb3VudAlieXRlcyB0byBiZSBzZW50IHJpZ2h0IGFmdGVyCisJCSAqCQkJU0NTSSBQRFUgSGVhZGVyCisJCSAqCisJCSAqCXVuc29sX2NvdW50CWJ5dGVzKGFzIERhdGEtT3V0KSB0byBiZSBzZW50CisJCSAqCQkJd2l0aG91dAlSMlQgYWNrIHJpZ2h0IGFmdGVyCisJCSAqCQkJaW1tZWRpYXRlIGRhdGEKKwkJICoKKwkJICoJcjJ0X2RhdGFfY291bnQJYnl0ZXMgdG8gYmUgc2VudCB2aWEgUjJUIGFjaydzCisJCSAqCisJCSAqICAgICAgcGFkX2NvdW50ICAgICAgIGJ5dGVzIHRvIGJlIHNlbnQgYXMgemVyby1wYWRkaW5nCisJCSAqLworCQljdGFzay0+aW1tX2NvdW50ID0gMDsKKwkJY3Rhc2stPnVuc29sX2NvdW50ID0gMDsKKwkJY3Rhc2stPnVuc29sX2RhdGFzbiA9IDA7CisKKwkJaWYgKHNlc3Npb24tPmltbV9kYXRhX2VuKSB7CisJCQlpZiAoY3Rhc2stPnRvdGFsX2xlbmd0aCA+PSBzZXNzaW9uLT5maXJzdF9idXJzdCkKKwkJCQljdGFzay0+aW1tX2NvdW50ID0gbWluKHNlc3Npb24tPmZpcnN0X2J1cnN0LAorCQkJCQkJCWNvbm4tPm1heF94bWl0X2RsZW5ndGgpOworCQkJZWxzZQorCQkJCWN0YXNrLT5pbW1fY291bnQgPSBtaW4oY3Rhc2stPnRvdGFsX2xlbmd0aCwKKwkJCQkJCQljb25uLT5tYXhfeG1pdF9kbGVuZ3RoKTsKKwkJCWh0b24yNChjdGFzay0+aGRyLT5kbGVuZ3RoLCBjdGFzay0+aW1tX2NvdW50KTsKKwkJfSBlbHNlCisJCQl6ZXJvX2RhdGEoY3Rhc2stPmhkci0+ZGxlbmd0aCk7CisKKwkJaWYgKCFzZXNzaW9uLT5pbml0aWFsX3IydF9lbikKKwkJCWN0YXNrLT51bnNvbF9jb3VudCA9IG1pbihzZXNzaW9uLT5maXJzdF9idXJzdCwKKwkJCQljdGFzay0+dG90YWxfbGVuZ3RoKSAtIGN0YXNrLT5pbW1fY291bnQ7CisJCWlmICghY3Rhc2stPnVuc29sX2NvdW50KQorCQkJLyogTm8gdW5zb2xpY2l0IERhdGEtT3V0J3MgKi8KKwkJCWN0YXNrLT5oZHItPmZsYWdzIHw9IElTQ1NJX0ZMQUdfQ01EX0ZJTkFMOworCX0gZWxzZSB7CisJCWN0YXNrLT5kYXRhc24gPSAwOworCQloZHItPmZsYWdzIHw9IElTQ1NJX0ZMQUdfQ01EX0ZJTkFMOworCQl6ZXJvX2RhdGEoaGRyLT5kbGVuZ3RoKTsKKworCQlpZiAoc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9GUk9NX0RFVklDRSkKKwkJCWhkci0+ZmxhZ3MgfD0gSVNDU0lfRkxBR19DTURfUkVBRDsKKwl9CisKKwljb25uLT5zY3NpY21kX3BkdXNfY250Kys7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9wcmVwX3Njc2lfY21kX3BkdSk7CisKKy8qKgorICogaXNjc2lfY29tcGxldGVfY29tbWFuZCAtIHJldHVybiBjb21tYW5kIGJhY2sgdG8gc2NzaS1tbAorICogQHNlc3Npb246IGlzY3NpIHNlc3Npb24KKyAqIEBjdGFzazogaXNjc2kgY21kIHRhc2sKKyAqCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHNlc3Npb24gbG9jay4KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2NzaSBjb21tYW5kIHRvIHNjc2ktbWwgYW5kIHJldHVybnMKKyAqIHRoZSBjbWQgdGFzayB0byB0aGUgcG9vbCBvZiBhdmFpbGFibGUgY21kIHRhc2tzLgorICovCitzdGF0aWMgdm9pZCBpc2NzaV9jb21wbGV0ZV9jb21tYW5kKHN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uLAorCQkJCSAgIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCit7CisJc3RydWN0IHNjc2lfY21uZCAqc2MgPSBjdGFzay0+c2M7CisKKwljdGFzay0+c2MgPSBOVUxMOworCWxpc3RfZGVsX2luaXQoJmN0YXNrLT5ydW5uaW5nKTsKKwlfX2tmaWZvX3B1dChzZXNzaW9uLT5jbWRwb29sLnF1ZXVlLCAodm9pZCopJmN0YXNrLCBzaXplb2Yodm9pZCopKTsKKwlzYy0+c2NzaV9kb25lKHNjKTsKK30KKworLyoqCisgKiBpc2NzaV9jbWRfcnNwIC0gU0NTSSBDb21tYW5kIFJlc3BvbnNlIHByb2Nlc3NpbmcKKyAqIEBjb25uOiBpc2NzaSBjb25uZWN0aW9uCisgKiBAaGRyOiBpc2NzaSBoZWFkZXIKKyAqIEBjdGFzazogc2NzaSBjb21tYW5kIHRhc2sKKyAqIEBkYXRhOiBjbWQgZGF0YSBidWZmZXIKKyAqIEBkYXRhbGVuOiBsZW4gb2YgYnVmZmVyCisgKgorICogaXNjc2lfY21kX3JzcCBzZXRzIHVwIHRoZSBzY3NpX2NtbmQgZmllbGRzIGJhc2VkIG9uIHRoZSBQRFUgYW5kCisgKiB0aGVuIGNvbXBsZXRlcyB0aGUgY29tbWFuZCBhbmQgdGFzay4KKyAqKi8KK3N0YXRpYyBpbnQgaXNjc2lfc2NzaV9jbWRfcnNwKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfaGRyICpoZHIsCisJCQkgICAgICBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrLCBjaGFyICpkYXRhLAorCQkJICAgICAgaW50IGRhdGFsZW4pCit7CisJaW50IHJjOworCXN0cnVjdCBpc2NzaV9jbWRfcnNwICpyaGRyID0gKHN0cnVjdCBpc2NzaV9jbWRfcnNwICopaGRyOworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzYyA9IGN0YXNrLT5zYzsKKworCXJjID0gaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHNlc3Npb24sIChzdHJ1Y3QgaXNjc2lfbm9waW4qKXJoZHIpOworCWlmIChyYykgeworCQlzYy0+cmVzdWx0ID0gRElEX0VSUk9SIDw8IDE2OworCQlnb3RvIG91dDsKKwl9CisKKwljb25uLT5leHBfc3RhdHNuID0gYmUzMl90b19jcHUocmhkci0+c3RhdHNuKSArIDE7CisKKwlzYy0+cmVzdWx0ID0gKERJRF9PSyA8PCAxNikgfCByaGRyLT5jbWRfc3RhdHVzOworCisJaWYgKHJoZHItPnJlc3BvbnNlICE9IElTQ1NJX1NUQVRVU19DTURfQ09NUExFVEVEKSB7CisJCXNjLT5yZXN1bHQgPSBESURfRVJST1IgPDwgMTY7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChyaGRyLT5jbWRfc3RhdHVzID09IFNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTikgeworCQlpbnQgc2Vuc2VsZW47CisKKwkJaWYgKGRhdGFsZW4gPCAyKSB7CitpbnZhbGlkX2RhdGFsZW46CisJCQlwcmludGsoS0VSTl9FUlIgImlzY3NpOiBHb3QgQ0hFQ0tfQ09ORElUSU9OIGJ1dCAiCisJCQkgICAgICAgImludmFsaWQgZGF0YSBidWZmZXIgc2l6ZSBvZiAlZFxuIiwgZGF0YWxlbik7CisJCQlzYy0+cmVzdWx0ID0gRElEX0JBRF9UQVJHRVQgPDwgMTY7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXNlbnNlbGVuID0gKGRhdGFbMF0gPDwgOCkgfCBkYXRhWzFdOworCQlpZiAoZGF0YWxlbiA8IHNlbnNlbGVuKQorCQkJZ290byBpbnZhbGlkX2RhdGFsZW47CisKKwkJbWVtY3B5KHNjLT5zZW5zZV9idWZmZXIsIGRhdGEgKyAyLAorCQkgICAgICAgbWluKHNlbnNlbGVuLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpKTsKKwkJZGVidWdfc2NzaSgiY29waWVkICVkIGJ5dGVzIG9mIHNlbnNlXG4iLAorCQkJICAgbWluKHNlbnNlbGVuLCBTQ1NJX1NFTlNFX0JVRkZFUlNJWkUpKTsKKwl9CisKKwlpZiAoc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UpCisJCWdvdG8gb3V0OworCisJaWYgKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19DTURfVU5ERVJGTE9XKSB7CisJCWludCByZXNfY291bnQgPSBiZTMyX3RvX2NwdShyaGRyLT5yZXNpZHVhbF9jb3VudCk7CisKKwkJaWYgKHJlc19jb3VudCA+IDAgJiYgcmVzX2NvdW50IDw9IHNjLT5yZXF1ZXN0X2J1ZmZsZW4pCisJCQlzYy0+cmVzaWQgPSByZXNfY291bnQ7CisJCWVsc2UKKwkJCXNjLT5yZXN1bHQgPSAoRElEX0JBRF9UQVJHRVQgPDwgMTYpIHwgcmhkci0+Y21kX3N0YXR1czsKKwl9IGVsc2UgaWYgKHJoZHItPmZsYWdzICYgSVNDU0lfRkxBR19DTURfQklESV9VTkRFUkZMT1cpCisJCXNjLT5yZXN1bHQgPSAoRElEX0JBRF9UQVJHRVQgPDwgMTYpIHwgcmhkci0+Y21kX3N0YXR1czsKKwllbHNlIGlmIChyaGRyLT5mbGFncyAmIElTQ1NJX0ZMQUdfQ01EX09WRVJGTE9XKQorCQlzYy0+cmVzaWQgPSBiZTMyX3RvX2NwdShyaGRyLT5yZXNpZHVhbF9jb3VudCk7CisKK291dDoKKwlkZWJ1Z19zY3NpKCJkb25lIFtzYyAlbHggcmVzICVkIGl0dCAweCV4XVxuIiwKKwkJICAgKGxvbmcpc2MsIHNjLT5yZXN1bHQsIGN0YXNrLT5pdHQpOworCWNvbm4tPnNjc2lyc3BfcGR1c19jbnQrKzsKKworCWlzY3NpX2NvbXBsZXRlX2NvbW1hbmQoY29ubi0+c2Vzc2lvbiwgY3Rhc2spOworCXJldHVybiByYzsKK30KKworLyoqCisgKiBfX2lzY3NpX2NvbXBsZXRlX3BkdSAtIGNvbXBsZXRlIHBkdQorICogQGNvbm46IGlzY3NpIGNvbm4KKyAqIEBoZHI6IGlzY3NpIGhlYWRlcgorICogQGRhdGE6IGRhdGEgYnVmZmVyCisgKiBAZGF0YWxlbjogbGVuIG9mIGRhdGEgYnVmZmVyCisgKgorICogQ29tcGxldGVzIHBkdSBwcm9jZXNzaW5nIGJ5IGZyZWVpbmcgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYXQKKyAqIHF1ZXVlY29tbWFuZCBvciBzZW5kIGdlbmVyaWMuIHNlc3Npb24gbG9jayBtdXN0IGJlIGhlbGQgYW5kIHZlcmlmeQorICogaXR0IG11c3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAqLworaW50IF9faXNjc2lfY29tcGxldGVfcGR1KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfaGRyICpoZHIsCisJCQkgY2hhciAqZGF0YSwgaW50IGRhdGFsZW4pCit7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCWludCBvcGNvZGUgPSBoZHItPm9wY29kZSAmIElTQ1NJX09QQ09ERV9NQVNLLCByYyA9IDA7CisJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzazsKKwlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzazsKKwl1aW50MzJfdCBpdHQ7CisKKwlpZiAoaGRyLT5pdHQgIT0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKSkKKwkJaXR0ID0gaGRyLT5pdHQgJiBJU0NTSV9JVFRfTUFTSzsKKwllbHNlCisJCWl0dCA9IGhkci0+aXR0OworCisJaWYgKGl0dCA8IHNlc3Npb24tPmNtZHNfbWF4KSB7CisJCWN0YXNrID0gc2Vzc2lvbi0+Y21kc1tpdHRdOworCisJCWRlYnVnX3Njc2koImNtZHJzcCBbb3AgMHgleCBjaWQgJWQgaXR0IDB4JXggbGVuICVkXVxuIiwKKwkJCSAgIG9wY29kZSwgY29ubi0+aWQsIGN0YXNrLT5pdHQsIGRhdGFsZW4pOworCisJCXN3aXRjaChvcGNvZGUpIHsKKwkJY2FzZSBJU0NTSV9PUF9TQ1NJX0NNRF9SU1A6CisJCQlCVUdfT04oKHZvaWQqKWN0YXNrICE9IGN0YXNrLT5zYy0+U0NwLnB0cik7CisJCQlyYyA9IGlzY3NpX3Njc2lfY21kX3JzcChjb25uLCBoZHIsIGN0YXNrLCBkYXRhLAorCQkJCQkJZGF0YWxlbik7CisJCQlicmVhazsKKwkJY2FzZSBJU0NTSV9PUF9TQ1NJX0RBVEFfSU46CisJCQlCVUdfT04oKHZvaWQqKWN0YXNrICE9IGN0YXNrLT5zYy0+U0NwLnB0cik7CisJCQlpZiAoaGRyLT5mbGFncyAmIElTQ1NJX0ZMQUdfREFUQV9TVEFUVVMpIHsKKwkJCQljb25uLT5zY3NpcnNwX3BkdXNfY250Kys7CisJCQkJaXNjc2lfY29tcGxldGVfY29tbWFuZChzZXNzaW9uLCBjdGFzayk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBJU0NTSV9PUF9SMlQ6CisJCQkvKiBMTEQgaGFuZGxlcyB0aGlzIGZvciBub3cgKi8KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmMgPSBJU0NTSV9FUlJfQkFEX09QQ09ERTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlIGlmIChpdHQgPj0gSVNDU0lfTUdNVF9JVFRfT0ZGU0VUICYmCisJCSAgIGl0dCA8IElTQ1NJX01HTVRfSVRUX09GRlNFVCArIHNlc3Npb24tPm1nbXRwb29sX21heCkgeworCQltdGFzayA9IHNlc3Npb24tPm1nbXRfY21kc1tpdHQgLSBJU0NTSV9NR01UX0lUVF9PRkZTRVRdOworCisJCWRlYnVnX3Njc2koImltbXJzcCBbb3AgMHgleCBjaWQgJWQgaXR0IDB4JXggbGVuICVkXVxuIiwKKwkJCSAgIG9wY29kZSwgY29ubi0+aWQsIG10YXNrLT5pdHQsIGRhdGFsZW4pOworCisJCXJjID0gaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHNlc3Npb24sCisJCQkJCSAgICAgIChzdHJ1Y3QgaXNjc2lfbm9waW4qKWhkcik7CisJCWlmIChyYykKKwkJCWdvdG8gZG9uZTsKKworCQlzd2l0Y2gob3Bjb2RlKSB7CisJCWNhc2UgSVNDU0lfT1BfTE9HT1VUX1JTUDoKKwkJCWNvbm4tPmV4cF9zdGF0c24gPSBiZTMyX3RvX2NwdShoZHItPnN0YXRzbikgKyAxOworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgSVNDU0lfT1BfTE9HSU5fUlNQOgorCQljYXNlIElTQ1NJX09QX1RFWFRfUlNQOgorCQkJLyoKKwkJCSAqIGxvZ2luIHJlbGF0ZWQgUERVJ3MgZXhwX3N0YXRzbiBpcyBoYW5kbGVkIGluCisJCQkgKiB1c2Vyc3BhY2UKKwkJCSAqLworCQkJcmMgPSBpc2NzaV9yZWN2X3BkdShjb25uLT5jbHNfY29ubiwgaGRyLCBkYXRhLCBkYXRhbGVuKTsKKwkJCWxpc3RfZGVsKCZtdGFzay0+cnVubmluZyk7CisJCQlpZiAoY29ubi0+bG9naW5fbXRhc2sgIT0gbXRhc2spCisJCQkJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsCisJCQkJCSAgICAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKTsKKwkJCWJyZWFrOworCQljYXNlIElTQ1NJX09QX1NDU0lfVE1GVU5DX1JTUDoKKwkJCWlmIChkYXRhbGVuKSB7CisJCQkJcmMgPSBJU0NTSV9FUlJfUFJPVE87CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWNvbm4tPmV4cF9zdGF0c24gPSBiZTMyX3RvX2NwdShoZHItPnN0YXRzbikgKyAxOworCQkJY29ubi0+dG1mcnNwX3BkdXNfY250Kys7CisJCQlpZiAoY29ubi0+dG1hYm9ydF9zdGF0ZSA9PSBUTUFCT1JUX0lOSVRJQUwpIHsKKwkJCQljb25uLT50bWFib3J0X3N0YXRlID0KKwkJCQkJKChzdHJ1Y3QgaXNjc2lfdG1fcnNwICopaGRyKS0+CisJCQkJCXJlc3BvbnNlID09IElTQ1NJX1RNRl9SU1BfQ09NUExFVEUgPworCQkJCQkJVE1BQk9SVF9TVUNDRVNTOlRNQUJPUlRfRkFJTEVEOworCQkJCS8qIHVuYmxvY2sgZWhfYWJvcnQoKSAqLworCQkJCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBJU0NTSV9PUF9OT09QX0lOOgorCQkJaWYgKGhkci0+dHR0ICE9IElTQ1NJX1JFU0VSVkVEX1RBRykgeworCQkJCXJjID0gSVNDU0lfRVJSX1BST1RPOworCQkJCWJyZWFrOworCQkJfQorCQkJY29ubi0+ZXhwX3N0YXRzbiA9IGJlMzJfdG9fY3B1KGhkci0+c3RhdHNuKSArIDE7CisKKwkJCXJjID0gaXNjc2lfcmVjdl9wZHUoY29ubi0+Y2xzX2Nvbm4sIGhkciwgZGF0YSwgZGF0YWxlbik7CisJCQlsaXN0X2RlbCgmbXRhc2stPnJ1bm5pbmcpOworCQkJaWYgKGNvbm4tPmxvZ2luX210YXNrICE9IG10YXNrKQorCQkJCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAorCQkJCQkgICAgKHZvaWQqKSZtdGFzaywgc2l6ZW9mKHZvaWQqKSk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJjID0gSVNDU0lfRVJSX0JBRF9PUENPREU7CisJCQlicmVhazsKKwkJfQorCX0gZWxzZSBpZiAoaXR0ID09IElTQ1NJX1JFU0VSVkVEX1RBRykgeworCQlzd2l0Y2gob3Bjb2RlKSB7CisJCWNhc2UgSVNDU0lfT1BfTk9PUF9JTjoKKwkJCWlmICghZGF0YWxlbikgeworCQkJCXJjID0gaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHNlc3Npb24sCisJCQkJCQkgKHN0cnVjdCBpc2NzaV9ub3BpbiopaGRyKTsKKwkJCQlpZiAoIXJjICYmIGhkci0+dHR0ICE9IElTQ1NJX1JFU0VSVkVEX1RBRykKKwkJCQkJcmMgPSBpc2NzaV9yZWN2X3BkdShjb25uLT5jbHNfY29ubiwKKwkJCQkJCQkgICAgaGRyLCBOVUxMLCAwKTsKKwkJCX0gZWxzZQorCQkJCXJjID0gSVNDU0lfRVJSX1BST1RPOworCQkJYnJlYWs7CisJCWNhc2UgSVNDU0lfT1BfUkVKRUNUOgorCQkJLyogd2UgbmVlZCBzdGggbGlrZSBpc2NzaV9yZWplY3RfcnNwKCkqLworCQljYXNlIElTQ1NJX09QX0FTWU5DX0VWRU5UOgorCQkJY29ubi0+ZXhwX3N0YXRzbiA9IGJlMzJfdG9fY3B1KGhkci0+c3RhdHNuKSArIDE7CisJCQkvKiB3ZSBuZWVkIHN0aCBsaWtlIGlzY3NpX2FzeW5jX2V2ZW50X3JzcCgpICovCisJCQlyYyA9IElTQ1NJX0VSUl9CQURfT1BDT0RFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlyYyA9IElTQ1NJX0VSUl9CQURfT1BDT0RFOworCQkJYnJlYWs7CisJCX0KKwl9IGVsc2UKKwkJcmMgPSBJU0NTSV9FUlJfQkFEX0lUVDsKKworZG9uZToKKwlyZXR1cm4gcmM7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChfX2lzY3NpX2NvbXBsZXRlX3BkdSk7CisKK2ludCBpc2NzaV9jb21wbGV0ZV9wZHUoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9oZHIgKmhkciwKKwkJICAgICAgIGNoYXIgKmRhdGEsIGludCBkYXRhbGVuKQoreworCWludCByYzsKKworCXNwaW5fbG9jaygmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJcmMgPSBfX2lzY3NpX2NvbXBsZXRlX3BkdShjb25uLCBoZHIsIGRhdGEsIGRhdGFsZW4pOworCXNwaW5fdW5sb2NrKCZjb25uLT5zZXNzaW9uLT5sb2NrKTsKKwlyZXR1cm4gcmM7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9jb21wbGV0ZV9wZHUpOworCisvKiB2ZXJpZnkgaXR0IChpdHQgZW5jb2Rpbmc6IGFnZStjaWQraXR0KSAqLworaW50IGlzY3NpX3ZlcmlmeV9pdHQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9oZHIgKmhkciwKKwkJICAgICB1aW50MzJfdCAqcmV0X2l0dCkKK3sKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzazsKKwl1aW50MzJfdCBpdHQ7CisKKwlpZiAoaGRyLT5pdHQgIT0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKSkgeworCQlpZiAoKGhkci0+aXR0ICYgSVNDU0lfQUdFX01BU0spICE9CisJCSAgICAoc2Vzc2lvbi0+YWdlIDw8IElTQ1NJX0FHRV9TSElGVCkpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IHJlY2VpdmVkIGl0dCAleCBleHBlY3RlZCAiCisJCQkJInNlc3Npb24gYWdlICgleClcbiIsIGhkci0+aXR0LAorCQkJCXNlc3Npb24tPmFnZSAmIElTQ1NJX0FHRV9NQVNLKTsKKwkJCXJldHVybiBJU0NTSV9FUlJfQkFEX0lUVDsKKwkJfQorCisJCWlmICgoaGRyLT5pdHQgJiBJU0NTSV9DSURfTUFTSykgIT0KKwkJICAgIChjb25uLT5pZCA8PCBJU0NTSV9DSURfU0hJRlQpKSB7CisJCQlwcmludGsoS0VSTl9FUlIgImlzY3NpOiByZWNlaXZlZCBpdHQgJXgsIGV4cGVjdGVkICIKKwkJCQkiQ0lEICgleClcbiIsIGhkci0+aXR0LCBjb25uLT5pZCk7CisJCQlyZXR1cm4gSVNDU0lfRVJSX0JBRF9JVFQ7CisJCX0KKwkJaXR0ID0gaGRyLT5pdHQgJiBJU0NTSV9JVFRfTUFTSzsKKwl9IGVsc2UKKwkJaXR0ID0gaGRyLT5pdHQ7CisKKwlpZiAoaXR0IDwgc2Vzc2lvbi0+Y21kc19tYXgpIHsKKwkJY3Rhc2sgPSBzZXNzaW9uLT5jbWRzW2l0dF07CisKKwkJaWYgKCFjdGFzay0+c2MpIHsKKwkJCXByaW50ayhLRVJOX0lORk8gImlzY3NpOiBkcm9wcGluZyBjdGFzayB3aXRoICIKKwkJCSAgICAgICAiaXR0IDB4JXhcbiIsIGN0YXNrLT5pdHQpOworCQkJLyogZm9yY2UgZHJvcCAqLworCQkJcmV0dXJuIElTQ1NJX0VSUl9OT19TQ1NJX0NNRDsKKwkJfQorCisJCWlmIChjdGFzay0+c2MtPlNDcC5waGFzZSAhPSBzZXNzaW9uLT5hZ2UpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGN0YXNrJ3Mgc2Vzc2lvbiBhZ2UgJWQsICIKKwkJCQkiZXhwZWN0ZWQgJWRcbiIsIGN0YXNrLT5zYy0+U0NwLnBoYXNlLAorCQkJCXNlc3Npb24tPmFnZSk7CisJCQlyZXR1cm4gSVNDU0lfRVJSX1NFU1NJT05fRkFJTEVEOworCQl9CisJfQorCisJKnJldF9pdHQgPSBpdHQ7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV92ZXJpZnlfaXR0KTsKKwordm9pZCBpc2NzaV9jb25uX2ZhaWx1cmUoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIGVudW0gaXNjc2lfZXJyIGVycikKK3sKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzZXNzaW9uLT5sb2NrLCBmbGFncyk7CisJaWYgKHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX0ZBSUxFRCkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZXNzaW9uLT5sb2NrLCBmbGFncyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY29ubi0+c3RvcF9zdGFnZSA9PSAwKQorCQlzZXNzaW9uLT5zdGF0ZSA9IElTQ1NJX1NUQVRFX0ZBSUxFRDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZXNzaW9uLT5sb2NrLCBmbGFncyk7CisJc2V0X2JpdChJU0NTSV9TVVNQRU5EX0JJVCwgJmNvbm4tPnN1c3BlbmRfdHgpOworCXNldF9iaXQoSVNDU0lfU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3J4KTsKKwlpc2NzaV9jb25uX2Vycm9yKGNvbm4tPmNsc19jb25uLCBlcnIpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfY29ubl9mYWlsdXJlKTsKKworLyoqCisgKiBpc2NzaV9kYXRhX3htaXQgLSB4bWl0IGFueSBjb21tYW5kIGludG8gdGhlIHNjaGVkdWxlZCBjb25uZWN0aW9uCisgKiBAY29ubjogaXNjc2kgY29ubmVjdGlvbgorICoKKyAqIE5vdGVzOgorICoJVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gLUVBR0FJTiBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgbXVzdAorICoJcmUtc2NoZWR1bGUgaXQgYWdhaW4gbGF0ZXIgb3IgcmVjb3Zlci4gJzAnIHJldHVybiBjb2RlIG1lYW5zCisgKglzdWNjZXNzZnVsIHhtaXQuCisgKiovCitzdGF0aWMgaW50IGlzY3NpX2RhdGFfeG1pdChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKK3sKKwlzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICp0dDsKKwlpbnQgcmMgPSAwOworCisJaWYgKHVubGlrZWx5KGNvbm4tPnN1c3BlbmRfdHgpKSB7CisJCWRlYnVnX3Njc2koImNvbm4gJWQgVHggc3VzcGVuZGVkIVxuIiwgY29ubi0+aWQpOworCQlyZXR1cm4gLUVOT0RBVEE7CisJfQorCXR0ID0gY29ubi0+c2Vzc2lvbi0+dHQ7CisKKwkvKgorCSAqIFRyYW5zbWl0IGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisJICoKKwkgKiAxKSB1bi1maW5pc2hlZCB4bWl0IChjdGFzayBvciBtdGFzaykKKwkgKiAyKSBpbW1lZGlhdGUgY29udHJvbCBQRFVzCisJICogMykgd3JpdGUgZGF0YQorCSAqIDQpIFNDU0kgY29tbWFuZHMKKwkgKiA1KSBub24taW1tZWRpYXRlIGNvbnRyb2wgUERVcworCSAqCisJICogTm8gbmVlZCB0byBsb2NrIGFyb3VuZCBfX2tmaWZvX2dldCBhcyBsb25nIGFzCisJICogdGhlcmUncyBvbmUgcHJvZHVjZXIgYW5kIG9uZSBjb25zdW1lci4KKwkgKi8KKworCUJVR19PTihjb25uLT5jdGFzayAmJiBjb25uLT5tdGFzayk7CisKKwlpZiAoY29ubi0+Y3Rhc2spIHsKKwkJcmMgPSB0dC0+eG1pdF9jbWRfdGFzayhjb25uLCBjb25uLT5jdGFzayk7CisJCWlmIChyYykKKwkJCWdvdG8gYWdhaW47CisJCS8qIGRvbmUgd2l0aCB0aGlzIGluLXByb2dyZXNzIGN0YXNrICovCisJCWNvbm4tPmN0YXNrID0gTlVMTDsKKwl9CisJaWYgKGNvbm4tPm10YXNrKSB7CisJCXJjID0gdHQtPnhtaXRfbWdtdF90YXNrKGNvbm4sIGNvbm4tPm10YXNrKTsKKwkgICAgICAgIGlmIChyYykKKwkJICAgICAgICBnb3RvIGFnYWluOworCQkvKiBkb25lIHdpdGggdGhpcyBpbi1wcm9ncmVzcyBtdGFzayAqLworCQljb25uLT5tdGFzayA9IE5VTEw7CisJfQorCisJLyogcHJvY2VzcyBpbW1lZGlhdGUgZmlyc3QgKi8KKyAgICAgICAgaWYgKHVubGlrZWx5KF9fa2ZpZm9fbGVuKGNvbm4tPmltbXF1ZXVlKSkpIHsKKwkgICAgICAgIHdoaWxlIChfX2tmaWZvX2dldChjb25uLT5pbW1xdWV1ZSwgKHZvaWQqKSZjb25uLT5tdGFzaywKKwkJCSAgICAgICAgICAgc2l6ZW9mKHZvaWQqKSkpIHsKKwkJCXNwaW5fbG9ja19iaCgmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJCQlsaXN0X2FkZF90YWlsKCZjb25uLT5tdGFzay0+cnVubmluZywKKwkJCQkgICAgICAmY29ubi0+bWdtdF9ydW5fbGlzdCk7CisJCQlzcGluX3VubG9ja19iaCgmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJCQlyYyA9IHR0LT54bWl0X21nbXRfdGFzayhjb25uLCBjb25uLT5tdGFzayk7CisJCSAgICAgICAgaWYgKHJjKQorCQkJICAgICAgICBnb3RvIGFnYWluOworCSAgICAgICAgfQorCQkvKiBkb25lIHdpdGggdGhpcyBtdGFzayAqLworCQljb25uLT5tdGFzayA9IE5VTEw7CisJfQorCisJLyogcHJvY2VzcyBjb21tYW5kIHF1ZXVlICovCisJd2hpbGUgKF9fa2ZpZm9fZ2V0KGNvbm4tPnhtaXRxdWV1ZSwgKHZvaWQqKSZjb25uLT5jdGFzaywKKwkJCSAgIHNpemVvZih2b2lkKikpKSB7CisJCS8qCisJCSAqIGlzY3NpIHRjcCBtYXkgcmVhZGQgdGhlIHRhc2sgdG8gdGhlIHhtaXRxdWV1ZSB0byBzZW5kCisJCSAqIHdyaXRlIGRhdGEKKwkJICovCisJCXNwaW5fbG9ja19iaCgmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJCWlmIChsaXN0X2VtcHR5KCZjb25uLT5jdGFzay0+cnVubmluZykpCisJCQlsaXN0X2FkZF90YWlsKCZjb25uLT5jdGFzay0+cnVubmluZywgJmNvbm4tPnJ1bl9saXN0KTsKKwkJc3Bpbl91bmxvY2tfYmgoJmNvbm4tPnNlc3Npb24tPmxvY2spOworCQlyYyA9IHR0LT54bWl0X2NtZF90YXNrKGNvbm4sIGNvbm4tPmN0YXNrKTsKKwkJaWYgKHJjKQorCQkJZ290byBhZ2FpbjsKKwl9CisJLyogZG9uZSB3aXRoIHRoaXMgY3Rhc2sgKi8KKwljb25uLT5jdGFzayA9IE5VTEw7CisKKwkvKiBwcm9jZXNzIHRoZSByZXN0IGNvbnRyb2wgcGxhbmUgUERVcywgaWYgYW55ICovCisgICAgICAgIGlmICh1bmxpa2VseShfX2tmaWZvX2xlbihjb25uLT5tZ210cXVldWUpKSkgeworCSAgICAgICAgd2hpbGUgKF9fa2ZpZm9fZ2V0KGNvbm4tPm1nbXRxdWV1ZSwgKHZvaWQqKSZjb25uLT5tdGFzaywKKwkJCSAgICAgICAgICAgc2l6ZW9mKHZvaWQqKSkpIHsKKwkJCXNwaW5fbG9ja19iaCgmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJCQlsaXN0X2FkZF90YWlsKCZjb25uLT5tdGFzay0+cnVubmluZywKKwkJCQkgICAgICAmY29ubi0+bWdtdF9ydW5fbGlzdCk7CisJCQlzcGluX3VubG9ja19iaCgmY29ubi0+c2Vzc2lvbi0+bG9jayk7CisJCSAgICAgICAgcmMgPSB0dC0+eG1pdF9tZ210X3Rhc2soY29ubiwgY29ubi0+bXRhc2spOworCQkJaWYgKHJjKQorCQkJICAgICAgICBnb3RvIGFnYWluOworCSAgICAgICAgfQorCQkvKiBkb25lIHdpdGggdGhpcyBtdGFzayAqLworCQljb25uLT5tdGFzayA9IE5VTEw7CisJfQorCisJcmV0dXJuIC1FTk9EQVRBOworCithZ2FpbjoKKwlpZiAodW5saWtlbHkoY29ubi0+c3VzcGVuZF90eCkpCisJCXJldHVybiAtRU5PREFUQTsKKworCXJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgaXNjc2lfeG1pdHdvcmtlcih2b2lkICpkYXRhKQoreworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gZGF0YTsKKwlpbnQgcmM7CisJLyoKKwkgKiBzZXJpYWxpemUgWG1pdCB3b3JrZXIgb24gYSBwZXItY29ubmVjdGlvbiBiYXNpcy4KKwkgKi8KKwltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCWRvIHsKKwkJcmMgPSBpc2NzaV9kYXRhX3htaXQoY29ubik7CisJfSB3aGlsZSAocmMgPj0gMCB8fCByYyA9PSAtRUFHQUlOKTsKKwltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7Cit9CisKK2VudW0geworCUZBSUxVUkVfQkFEX0hPU1QgPSAxLAorCUZBSUxVUkVfU0VTU0lPTl9GQUlMRUQsCisJRkFJTFVSRV9TRVNTSU9OX0ZSRUVELAorCUZBSUxVUkVfV0lORE9XX0NMT1NFRCwKKwlGQUlMVVJFX1NFU1NJT05fVEVSTUlOQVRFLAorCUZBSUxVUkVfU0VTU0lPTl9JTl9SRUNPVkVSWSwKKwlGQUlMVVJFX1NFU1NJT05fUkVDT1ZFUllfVElNRU9VVCwKK307CisKK2ludCBpc2NzaV9xdWV1ZWNvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqc2MsIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKmhvc3Q7CisJaW50IHJlYXNvbiA9IDA7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb247CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm47CisJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzayA9IE5VTEw7CisKKwlzYy0+c2NzaV9kb25lID0gZG9uZTsKKwlzYy0+cmVzdWx0ID0gMDsKKworCWhvc3QgPSBzYy0+ZGV2aWNlLT5ob3N0OworCXNlc3Npb24gPSBpc2NzaV9ob3N0ZGF0YShob3N0LT5ob3N0ZGF0YSk7CisKKwlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOworCisJLyoKKwkgKiBJU0NTSV9TVEFURV9GQUlMRUQgaXMgYSB0ZW1wLiBzdGF0ZS4gVGhlIHJlY292ZXJ5CisJICogY29kZSB3aWxsIGRlY2lkZSB3aGF0IGlzIGJlc3QgdG8gZG8gd2l0aCBjb21tYW5kIHF1ZXVlZAorCSAqIGR1cmluZyB0aGlzIHRpbWUKKwkgKi8KKwlpZiAoc2Vzc2lvbi0+c3RhdGUgIT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOICYmCisJICAgIHNlc3Npb24tPnN0YXRlICE9IElTQ1NJX1NUQVRFX0ZBSUxFRCkgeworCQkvKgorCQkgKiB0byBoYW5kbGUgdGhlIHJhY2UgYmV0d2VlbiB3aGVuIHdlIHNldCB0aGUgcmVjb3Zlcnkgc3RhdGUKKwkJICogYW5kIGJsb2NrIHRoZSBzZXNzaW9uIHdlIHJlcXVldWUgaGVyZSAoY29tbWFuZHMgY291bGQKKwkJICogYmUgZW50ZXJpbmcgb3VyIHF1ZXVlY29tbWFuZCB3aGlsZSBhIGJsb2NrIGlzIHN0YXJ0aW5nCisJCSAqIHVwIGJlY2F1c2UgdGhlIGJsb2NrIGNvZGUgaXMgbm90IGxvY2tlZCkKKwkJICovCisJCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9JTl9SRUNPVkVSWSkgeworCQkJcmVhc29uID0gRkFJTFVSRV9TRVNTSU9OX0lOX1JFQ09WRVJZOworCQkJZ290byByZWplY3Q7CisJCX0KKworCQlpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfUkVDT1ZFUllfRkFJTEVEKQorCQkJcmVhc29uID0gRkFJTFVSRV9TRVNTSU9OX1JFQ09WRVJZX1RJTUVPVVQ7CisJCWVsc2UgaWYgKHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX1RFUk1JTkFURSkKKwkJCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9URVJNSU5BVEU7CisJCWVsc2UKKwkJCXJlYXNvbiA9IEZBSUxVUkVfU0VTU0lPTl9GUkVFRDsKKwkJZ290byBmYXVsdDsKKwl9CisKKwkvKgorCSAqIENoZWNrIGZvciBpU0NTSSB3aW5kb3cgYW5kIHRha2UgY2FyZSBvZiBDbWRTTiB3cmFwLWFyb3VuZAorCSAqLworCWlmICgoaW50KShzZXNzaW9uLT5tYXhfY21kc24gLSBzZXNzaW9uLT5jbWRzbikgPCAwKSB7CisJCXJlYXNvbiA9IEZBSUxVUkVfV0lORE9XX0NMT1NFRDsKKwkJZ290byByZWplY3Q7CisJfQorCisJY29ubiA9IHNlc3Npb24tPmxlYWRjb25uOworCisJX19rZmlmb19nZXQoc2Vzc2lvbi0+Y21kcG9vbC5xdWV1ZSwgKHZvaWQqKSZjdGFzaywgc2l6ZW9mKHZvaWQqKSk7CisJc2MtPlNDcC5waGFzZSA9IHNlc3Npb24tPmFnZTsKKwlzYy0+U0NwLnB0ciA9IChjaGFyICopY3Rhc2s7CisKKwljdGFzay0+bXRhc2sgPSBOVUxMOworCWN0YXNrLT5jb25uID0gY29ubjsKKwljdGFzay0+c2MgPSBzYzsKKwlJTklUX0xJU1RfSEVBRCgmY3Rhc2stPnJ1bm5pbmcpOworCWN0YXNrLT50b3RhbF9sZW5ndGggPSBzYy0+cmVxdWVzdF9idWZmbGVuOworCWlzY3NpX3ByZXBfc2NzaV9jbWRfcGR1KGN0YXNrKTsKKworCXNlc3Npb24tPnR0LT5pbml0X2NtZF90YXNrKGN0YXNrKTsKKworCV9fa2ZpZm9fcHV0KGNvbm4tPnhtaXRxdWV1ZSwgKHZvaWQqKSZjdGFzaywgc2l6ZW9mKHZvaWQqKSk7CisJZGVidWdfc2NzaSgKKwkgICAgICAgImN0YXNrIGVucSBbJXMgY2lkICVkIHNjICVseCBpdHQgMHgleCBsZW4gJWQgY21kc24gJWQgd2luICVkXVxuIiwKKwkJc2MtPnNjX2RhdGFfZGlyZWN0aW9uID09IERNQV9UT19ERVZJQ0UgPyAid3JpdGUiIDogInJlYWQiLAorCQljb25uLT5pZCwgKGxvbmcpc2MsIGN0YXNrLT5pdHQsIHNjLT5yZXF1ZXN0X2J1ZmZsZW4sCisJCXNlc3Npb24tPmNtZHNuLCBzZXNzaW9uLT5tYXhfY21kc24gLSBzZXNzaW9uLT5leHBfY21kc24gKyAxKTsKKwlzcGluX3VubG9jaygmc2Vzc2lvbi0+bG9jayk7CisKKwlzY3NpX3F1ZXVlX3dvcmsoaG9zdCwgJmNvbm4tPnhtaXR3b3JrKTsKKwlyZXR1cm4gMDsKKworcmVqZWN0OgorCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKKwlkZWJ1Z19zY3NpKCJjbWQgMHgleCByZWplY3RlZCAoJWQpXG4iLCBzYy0+Y21uZFswXSwgcmVhc29uKTsKKwlyZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1RfQlVTWTsKKworZmF1bHQ6CisJc3Bpbl91bmxvY2soJnNlc3Npb24tPmxvY2spOworCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGNtZCAweCV4IGlzIG5vdCBxdWV1ZWQgKCVkKVxuIiwKKwkgICAgICAgc2MtPmNtbmRbMF0sIHJlYXNvbik7CisJc2MtPnJlc3VsdCA9IChESURfTk9fQ09OTkVDVCA8PCAxNik7CisJc2MtPnJlc2lkID0gc2MtPnJlcXVlc3RfYnVmZmxlbjsKKwlzYy0+c2NzaV9kb25lKHNjKTsKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3F1ZXVlY29tbWFuZCk7CisKK2ludCBpc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgZGVwdGgpCit7CisJaWYgKGRlcHRoID4gSVNDU0lfTUFYX0NNRF9QRVJfTFVOKQorCQlkZXB0aCA9IElTQ1NJX01BWF9DTURfUEVSX0xVTjsKKwlzY3NpX2FkanVzdF9xdWV1ZV9kZXB0aChzZGV2LCBzY3NpX2dldF90YWdfdHlwZShzZGV2KSwgZGVwdGgpOworCXJldHVybiBzZGV2LT5xdWV1ZV9kZXB0aDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCk7CisKK3N0YXRpYyBpbnQKK2lzY3NpX2Nvbm5fc2VuZF9nZW5lcmljKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfaGRyICpoZHIsCisJCQljaGFyICpkYXRhLCB1aW50MzJfdCBkYXRhX3NpemUpCit7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCXN0cnVjdCBpc2NzaV9ub3BvdXQgKm5vcCA9IChzdHJ1Y3QgaXNjc2lfbm9wb3V0ICopaGRyOworCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrOworCisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwlpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfVEVSTUlOQVRFKSB7CisJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwkJcmV0dXJuIC1FUEVSTTsKKwl9CisJaWYgKGhkci0+b3Bjb2RlID09IChJU0NTSV9PUF9MT0dJTiB8IElTQ1NJX09QX0lNTUVESUFURSkgfHwKKwkgICAgaGRyLT5vcGNvZGUgPT0gKElTQ1NJX09QX1RFWFQgfCBJU0NTSV9PUF9JTU1FRElBVEUpKQorCQkvKgorCQkgKiBMb2dpbiBhbmQgVGV4dCBhcmUgc2VudCBzZXJpYWxseSwgaW4KKwkJICogcmVxdWVzdC1mb2xsb3dlZC1ieS1yZXNwb25zZSBzZXF1ZW5jZS4KKwkJICogU2FtZSBtdGFzayBjYW4gYmUgdXNlZC4gU2FtZSBJVFQgbXVzdCBiZSB1c2VkLgorCQkgKiBOb3RlIHRoYXQgbG9naW5fbXRhc2sgaXMgcHJlYWxsb2NhdGVkIGF0IGNvbm5fY3JlYXRlKCkuCisJCSAqLworCQltdGFzayA9IGNvbm4tPmxvZ2luX210YXNrOworCWVsc2UgeworCQlCVUdfT04oY29ubi0+Y19zdGFnZSA9PSBJU0NTSV9DT05OX0lOSVRJQUxfU1RBR0UpOworCQlCVUdfT04oY29ubi0+Y19zdGFnZSA9PSBJU0NTSV9DT05OX1NUT1BQRUQpOworCisJCW5vcC0+ZXhwX3N0YXRzbiA9IGNwdV90b19iZTMyKGNvbm4tPmV4cF9zdGF0c24pOworCQlpZiAoIV9fa2ZpZm9fZ2V0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLAorCQkJCSAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKSkgeworCQkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCQkJcmV0dXJuIC1FTk9TUEM7CisJCX0KKwl9CisKKwkvKgorCSAqIHByZS1mb3JtYXQgQ21kU04gZm9yIG91dGdvaW5nIFBEVS4KKwkgKi8KKwlpZiAoaGRyLT5pdHQgIT0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKSkgeworCQloZHItPml0dCA9IG10YXNrLT5pdHQgfCAoY29ubi0+aWQgPDwgSVNDU0lfQ0lEX1NISUZUKSB8CisJCQkgICAoc2Vzc2lvbi0+YWdlIDw8IElTQ1NJX0FHRV9TSElGVCk7CisJCW5vcC0+Y21kc24gPSBjcHVfdG9fYmUzMihzZXNzaW9uLT5jbWRzbik7CisJCWlmIChjb25uLT5jX3N0YWdlID09IElTQ1NJX0NPTk5fU1RBUlRFRCAmJgorCQkgICAgIShoZHItPm9wY29kZSAmIElTQ1NJX09QX0lNTUVESUFURSkpCisJCQlzZXNzaW9uLT5jbWRzbisrOworCX0gZWxzZQorCQkvKiBkbyBub3QgYWR2YW5jZSBDbWRTTiAqLworCQlub3AtPmNtZHNuID0gY3B1X3RvX2JlMzIoc2Vzc2lvbi0+Y21kc24pOworCisJaWYgKGRhdGFfc2l6ZSkgeworCQltZW1jcHkobXRhc2stPmRhdGEsIGRhdGEsIGRhdGFfc2l6ZSk7CisJCW10YXNrLT5kYXRhX2NvdW50ID0gZGF0YV9zaXplOworCX0gZWxzZQorCQltdGFzay0+ZGF0YV9jb3VudCA9IDA7CisKKwlJTklUX0xJU1RfSEVBRCgmbXRhc2stPnJ1bm5pbmcpOworCW1lbWNweShtdGFzay0+aGRyLCBoZHIsIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSk7CisJaWYgKHNlc3Npb24tPnR0LT5pbml0X21nbXRfdGFzaykKKwkJc2Vzc2lvbi0+dHQtPmluaXRfbWdtdF90YXNrKGNvbm4sIG10YXNrLCBkYXRhLCBkYXRhX3NpemUpOworCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKworCWRlYnVnX3Njc2koIm1nbXRwZHUgW29wIDB4JXggaGRyLT5pdHQgMHgleCBkYXRhbGVuICVkXVxuIiwKKwkJICAgaGRyLT5vcGNvZGUsIGhkci0+aXR0LCBkYXRhX3NpemUpOworCisJLyoKKwkgKiBzaW5jZSBzZW5kX3BkdSgpIGNvdWxkIGJlIGNhbGxlZCBhdCBsZWFzdCBmcm9tIHR3byBjb250ZXh0cywKKwkgKiB3ZSBuZWVkIHRvIHNlcmlhbGl6ZSBfX2tmaWZvX3B1dCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0YWtlCisJICogYWRkaXRpb25hbCBsb2NrIG9uIGZhc3QgZGF0YS1wYXRoCisJICovCisgICAgICAgIGlmIChoZHItPm9wY29kZSAmIElTQ1NJX09QX0lNTUVESUFURSkKKwkgICAgICAgIF9fa2ZpZm9fcHV0KGNvbm4tPmltbXF1ZXVlLCAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKTsKKwllbHNlCisJICAgICAgICBfX2tmaWZvX3B1dChjb25uLT5tZ210cXVldWUsICh2b2lkKikmbXRhc2ssIHNpemVvZih2b2lkKikpOworCisJc2NzaV9xdWV1ZV93b3JrKHNlc3Npb24tPmhvc3QsICZjb25uLT54bWl0d29yayk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBpc2NzaV9jb25uX3NlbmRfcGR1KHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sIHN0cnVjdCBpc2NzaV9oZHIgKmhkciwKKwkJCWNoYXIgKmRhdGEsIHVpbnQzMl90IGRhdGFfc2l6ZSkKK3sKKwlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCWludCByYzsKKworCW11dGV4X2xvY2soJmNvbm4tPnhtaXRtdXRleCk7CisJcmMgPSBpc2NzaV9jb25uX3NlbmRfZ2VuZXJpYyhjb25uLCBoZHIsIGRhdGEsIGRhdGFfc2l6ZSk7CisJbXV0ZXhfdW5sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCisJcmV0dXJuIHJjOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfY29ubl9zZW5kX3BkdSk7CisKK3ZvaWQgaXNjc2lfc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uKQoreworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY2xhc3NfdG9fdHJhbnNwb3J0X3Nlc3Npb24oY2xzX3Nlc3Npb24pOworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gc2Vzc2lvbi0+bGVhZGNvbm47CisKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWlmIChzZXNzaW9uLT5zdGF0ZSAhPSBJU0NTSV9TVEFURV9MT0dHRURfSU4pIHsKKwkJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9SRUNPVkVSWV9GQUlMRUQ7CisJCWlmIChjb25uKQorCQkJd2FrZV91cCgmY29ubi0+ZWh3YWl0KTsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dCk7CisKK2ludCBpc2NzaV9laF9ob3N0X3Jlc2V0KHN0cnVjdCBzY3NpX2NtbmQgKnNjKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKmhvc3QgPSBzYy0+ZGV2aWNlLT5ob3N0OworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gaXNjc2lfaG9zdGRhdGEoaG9zdC0+aG9zdGRhdGEpOworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gc2Vzc2lvbi0+bGVhZGNvbm47CisJaW50IGZhaWxfc2Vzc2lvbiA9IDA7CisKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9URVJNSU5BVEUpIHsKK2ZhaWxlZDoKKwkJZGVidWdfc2NzaSgiZmFpbGluZyBob3N0IHJlc2V0OiBzZXNzaW9uIHRlcm1pbmF0ZWQgIgorCQkJICAgIltDSUQgJWQgYWdlICVkXSIsIGNvbm4tPmlkLCBzZXNzaW9uLT5hZ2UpOworCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJCXJldHVybiBGQUlMRUQ7CisJfQorCisJaWYgKHNjLT5TQ3AucGhhc2UgPT0gc2Vzc2lvbi0+YWdlKSB7CisJCWRlYnVnX3Njc2koImZhaWxpbmcgY29ubmVjdGlvbiBDSUQgJWQgZHVlIHRvIFNDU0kgaG9zdCByZXNldCIsCisJCQkgICBjb25uLT5pZCk7CisJCWZhaWxfc2Vzc2lvbiA9IDE7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKworCS8qCisJICogd2UgZHJvcCB0aGUgbG9jayBoZXJlIGJ1dCB0aGUgbGVhZGNvbm4gY2Fubm90IGJlIGRlc3RveWVkIHdoaWxlCisJICogd2UgYXJlIGluIHRoZSBzY3NpIGVoCisJICovCisJaWYgKGZhaWxfc2Vzc2lvbikKKwkJaXNjc2lfY29ubl9mYWlsdXJlKGNvbm4sIElTQ1NJX0VSUl9DT05OX0ZBSUxFRCk7CisKKwlkZWJ1Z19zY3NpKCJpc2NzaV9laF9ob3N0X3Jlc2V0IHdhaXQgZm9yIHJlbG9naW5cbiIpOworCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShjb25uLT5laHdhaXQsCisJCQkJIHNlc3Npb24tPnN0YXRlID09IElTQ1NJX1NUQVRFX1RFUk1JTkFURSB8fAorCQkJCSBzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9MT0dHRURfSU4gfHwKKwkJCQkgc2Vzc2lvbi0+c3RhdGUgPT0gSVNDU0lfU1RBVEVfUkVDT1ZFUllfRkFJTEVEKTsKKwlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCisJCWZsdXNoX3NpZ25hbHMoY3VycmVudCk7CisKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9MT0dHRURfSU4pCisJCXByaW50ayhLRVJOX0lORk8gImlzY3NpOiBob3N0IHJlc2V0IHN1Y2NlZWRlZFxuIik7CisJZWxzZQorCQlnb3RvIGZhaWxlZDsKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwlyZXR1cm4gU1VDQ0VTUzsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2VoX2hvc3RfcmVzZXQpOworCitzdGF0aWMgdm9pZCBpc2NzaV90bWFib3J0X3RpbWVkb3V0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gKHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqKWRhdGE7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisKKwlzcGluX2xvY2soJnNlc3Npb24tPmxvY2spOworCWlmIChjb25uLT50bWFib3J0X3N0YXRlID09IFRNQUJPUlRfSU5JVElBTCkgeworCQljb25uLT50bWFib3J0X3N0YXRlID0gVE1BQk9SVF9USU1FRE9VVDsKKwkJZGVidWdfc2NzaSgidG1hYm9ydCB0aW1lZG91dCBbc2MgJXAgaXR0IDB4JXhdXG4iLAorCQkJY3Rhc2stPnNjLCBjdGFzay0+aXR0KTsKKwkJLyogdW5ibG9jayBlaF9hYm9ydCgpICovCisJCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7CisJfQorCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKK30KKworLyogbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbXV0ZXggbG9jayAqLworc3RhdGljIGludCBpc2NzaV9leGVjX2Fib3J0X3Rhc2soc3RydWN0IHNjc2lfY21uZCAqc2MsCisJCQkJIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCit7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisJc3RydWN0IGlzY3NpX3RtICpoZHIgPSAmY29ubi0+dG1oZHI7CisJaW50IHJjOworCisJLyoKKwkgKiBjdGFzayB0aW1lZCBvdXQgYnV0IHNlc3Npb24gaXMgT0sgcmVxdWVzdHMgbXVzdCBiZSBzZXJpYWxpemVkLgorCSAqLworCW1lbXNldChoZHIsIDAsIHNpemVvZihzdHJ1Y3QgaXNjc2lfdG0pKTsKKwloZHItPm9wY29kZSA9IElTQ1NJX09QX1NDU0lfVE1GVU5DIHwgSVNDU0lfT1BfSU1NRURJQVRFOworCWhkci0+ZmxhZ3MgPSBJU0NTSV9UTV9GVU5DX0FCT1JUX1RBU0s7CisJaGRyLT5mbGFncyB8PSBJU0NTSV9GTEFHX0NNRF9GSU5BTDsKKwltZW1jcHkoaGRyLT5sdW4sIGN0YXNrLT5oZHItPmx1biwgc2l6ZW9mKGhkci0+bHVuKSk7CisJaGRyLT5ydHQgPSBjdGFzay0+aGRyLT5pdHQ7CisJaGRyLT5yZWZjbWRzbiA9IGN0YXNrLT5oZHItPmNtZHNuOworCisJcmMgPSBpc2NzaV9jb25uX3NlbmRfZ2VuZXJpYyhjb25uLCAoc3RydWN0IGlzY3NpX2hkciAqKWhkciwKKwkJCQkgICAgIE5VTEwsIDApOworCWlmIChyYykgeworCQlpc2NzaV9jb25uX2ZhaWx1cmUoY29ubiwgSVNDU0lfRVJSX0NPTk5fRkFJTEVEKTsKKwkJZGVidWdfc2NzaSgiYWJvcnQgc2VudCBmYWlsdXJlIFtpdHQgMHgleF0gJWQiLCBjdGFzay0+aXR0LCByYyk7CisJCXJldHVybiByYzsKKwl9CisKKwlkZWJ1Z19zY3NpKCJhYm9ydCBzZW50IFtpdHQgMHgleF1cbiIsIGN0YXNrLT5pdHQpOworCisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwljdGFzay0+bXRhc2sgPSAoc3RydWN0IGlzY3NpX21nbXRfdGFzayAqKQorCQkJc2Vzc2lvbi0+bWdtdF9jbWRzWyhoZHItPml0dCAmIElTQ1NJX0lUVF9NQVNLKSAtCisJCQkJCUlTQ1NJX01HTVRfSVRUX09GRlNFVF07CisKKwlpZiAoY29ubi0+dG1hYm9ydF9zdGF0ZSA9PSBUTUFCT1JUX0lOSVRJQUwpIHsKKwkJY29ubi0+dG1mY21kX3BkdXNfY250Kys7CisJCWNvbm4tPnRtYWJvcnRfdGltZXIuZXhwaXJlcyA9IDEwKkhaICsgamlmZmllczsKKwkJY29ubi0+dG1hYm9ydF90aW1lci5mdW5jdGlvbiA9IGlzY3NpX3RtYWJvcnRfdGltZWRvdXQ7CisJCWNvbm4tPnRtYWJvcnRfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKWN0YXNrOworCQlhZGRfdGltZXIoJmNvbm4tPnRtYWJvcnRfdGltZXIpOworCQlkZWJ1Z19zY3NpKCJhYm9ydCBzZXQgdGltZW91dCBbaXR0IDB4JXhdIiwgY3Rhc2stPml0dCk7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7CisKKwkvKgorCSAqIGJsb2NrIGVoIHRocmVhZCB1bnRpbDoKKwkgKgorCSAqIDEpIGFib3J0IHJlc3BvbnNlCisJICogMikgYWJvcnQgdGltZW91dAorCSAqIDMpIHNlc3Npb24gaXMgdGVybWluYXRlZCBvciByZXN0YXJ0ZWQgb3IgdXNlcnNwYWNlIGhhcworCSAqIGdpdmVuIHVwIG9uIHJlY292ZXJ5CisJICovCisJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGNvbm4tPmVod2FpdCwKKwkJCQkgc2MtPlNDcC5waGFzZSAhPSBzZXNzaW9uLT5hZ2UgfHwKKwkJCQkgc2Vzc2lvbi0+c3RhdGUgIT0gSVNDU0lfU1RBVEVfTE9HR0VEX0lOIHx8CisJCQkJIGNvbm4tPnRtYWJvcnRfc3RhdGUgIT0gVE1BQk9SVF9JTklUSUFMKTsKKwlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCisJCWZsdXNoX3NpZ25hbHMoY3VycmVudCk7CisJZGVsX3RpbWVyX3N5bmMoJmNvbm4tPnRtYWJvcnRfdGltZXIpOworCisJbXV0ZXhfbG9jaygmY29ubi0+eG1pdG11dGV4KTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHhtaXQgbXV0ZXggYW5kIHNlc3Npb24gbG9jayBtdXN0IGJlIGhlbGQKKyAqLworI2RlZmluZSBpc2NzaV9yZW1vdmVfdGFzayh0YXNrdHlwZSkJCQkJCVwKK3N0YXRpYyBzdHJ1Y3QgaXNjc2lfIyN0YXNrdHlwZSAqCQkJCQlcCitpc2NzaV9yZW1vdmVfIyN0YXNrdHlwZShzdHJ1Y3Qga2ZpZm8gKmZpZm8sIHVpbnQzMl90IGl0dCkJCVwKK3sJCQkJCQkJCQlcCisJaW50IGksIG5yX3Rhc2tzID0gX19rZmlmb19sZW4oZmlmbykgLyBzaXplb2Yodm9pZCopOwkJXAorCXN0cnVjdCBpc2NzaV8jI3Rhc2t0eXBlICp0YXNrOwkJCQkJXAorCQkJCQkJCQkJXAorCWRlYnVnX3Njc2koInNlYXJjaGluZyAlZCB0YXNrc1xuIiwgbnJfdGFza3MpOwkJCVwKKwkJCQkJCQkJCVwKKwlmb3IgKGkgPSAwOyBpIDwgbnJfdGFza3M7IGkrKykgewkJCQlcCisJCV9fa2ZpZm9fZ2V0KGZpZm8sICh2b2lkKikmdGFzaywgc2l6ZW9mKHZvaWQqKSk7CQlcCisJCWRlYnVnX3Njc2koImNoZWNrIHRhc2sgJXVcbiIsIHRhc2stPml0dCk7CQlcCisJCQkJCQkJCQlcCisJCWlmICh0YXNrLT5pdHQgPT0gaXR0KSB7CQkJCQlcCisJCQlkZWJ1Z19zY3NpKCJtYXRjaGVkIHRhc2tcbiIpOwkJCVwKKwkJCXJldHVybiB0YXNrOwkJCQkJXAorCQl9CQkJCQkJCVwKKwkJCQkJCQkJCVwKKwkJX19rZmlmb19wdXQoZmlmbywgKHZvaWQqKSZ0YXNrLCBzaXplb2Yodm9pZCopKTsJCVwKKwl9CQkJCQkJCQlcCisJcmV0dXJuIE5VTEw7CQkJCQkJCVwKK30KKworaXNjc2lfcmVtb3ZlX3Rhc2sobWdtdF90YXNrKTsKK2lzY3NpX3JlbW92ZV90YXNrKGNtZF90YXNrKTsKKworc3RhdGljIGludCBpc2NzaV9jdGFza19tdGFza19jbGVhbnVwKHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spCit7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjdGFzay0+Y29ubjsKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisKKwlpZiAoIWN0YXNrLT5tdGFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWlzY3NpX3JlbW92ZV9tZ210X3Rhc2soY29ubi0+aW1tcXVldWUsIGN0YXNrLT5tdGFzay0+aXR0KSkKKwkJbGlzdF9kZWwoJmN0YXNrLT5tdGFzay0+cnVubmluZyk7CisJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsICh2b2lkKikmY3Rhc2stPm10YXNrLAorCQkgICAgc2l6ZW9mKHZvaWQqKSk7CisJY3Rhc2stPm10YXNrID0gTlVMTDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHNlc3Npb24gbG9jayBhbmQgeG1pdG11dGV4IG11c3QgYmUgaGVsZAorICovCitzdGF0aWMgdm9pZCBmYWlsX2NvbW1hbmQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2ssCisJCQkgaW50IGVycikKK3sKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzYzsKKworCWNvbm4tPnNlc3Npb24tPnR0LT5jbGVhbnVwX2NtZF90YXNrKGNvbm4sIGN0YXNrKTsKKwlpc2NzaV9jdGFza19tdGFza19jbGVhbnVwKGN0YXNrKTsKKworCXNjID0gY3Rhc2stPnNjOworCWlmICghc2MpCisJCXJldHVybjsKKwlzYy0+cmVzdWx0ID0gZXJyOworCXNjLT5yZXNpZCA9IHNjLT5yZXF1ZXN0X2J1ZmZsZW47CisJaXNjc2lfY29tcGxldGVfY29tbWFuZChjb25uLT5zZXNzaW9uLCBjdGFzayk7Cit9CisKK2ludCBpc2NzaV9laF9hYm9ydChzdHJ1Y3Qgc2NzaV9jbW5kICpzYykKK3sKKwlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrID0gKHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqKXNjLT5TQ3AucHRyOworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gY3Rhc2stPmNvbm47CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqcGVuZGluZ19jdGFzazsKKwlpbnQgcmM7CisKKwljb25uLT5laF9hYm9ydF9jbnQrKzsKKwlkZWJ1Z19zY3NpKCJhYm9ydGluZyBbc2MgJXAgaXR0IDB4JXhdXG4iLCBzYywgY3Rhc2stPml0dCk7CisKKwltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwkvKgorCSAqIElmIHdlIGFyZSBub3QgbG9nZ2VkIGluIG9yIHdlIGhhdmUgc3RhcnRlZCBhIG5ldyBzZXNzaW9uCisJICogdGhlbiBsZXQgdGhlIGhvc3QgcmVzZXQgY29kZSBoYW5kbGUgdGhpcworCSAqLworCWlmIChzZXNzaW9uLT5zdGF0ZSAhPSBJU0NTSV9TVEFURV9MT0dHRURfSU4gfHwKKwkgICAgc2MtPlNDcC5waGFzZSAhPSBzZXNzaW9uLT5hZ2UpCisJCWdvdG8gZmFpbGVkOworCisJLyogY3Rhc2sgY29tcGxldGVkIGJlZm9yZSB0aW1lIG91dCAqLworCWlmICghY3Rhc2stPnNjKQorCQlnb3RvIHN1Y2Nlc3M7CisKKwkvKiB3aGF0IHNob3VsZCB3ZSBkbyBoZXJlID8gKi8KKwlpZiAoY29ubi0+Y3Rhc2sgPT0gY3Rhc2spIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiaXNjc2k6IHNjICVwIGl0dCAweCV4IHBhcnRpYWxseSBzZW50LiAiCisJCSAgICAgICAiRmFpbGluZyBhYm9ydFxuIiwgc2MsIGN0YXNrLT5pdHQpOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwkvKiBjaGVjayBmb3IgdGhlIGVhc3kgcGVuZGluZyBjbWQgYWJvcnQgKi8KKwlwZW5kaW5nX2N0YXNrID0gaXNjc2lfcmVtb3ZlX2NtZF90YXNrKGNvbm4tPnhtaXRxdWV1ZSwgY3Rhc2stPml0dCk7CisJaWYgKHBlbmRpbmdfY3Rhc2spIHsKKwkJLyogaXNjc2lfdGNwIHF1ZXVlcyB3cml0ZSB0cmFuc2ZlcnMgb24gdGhlIHhtaXRxdWV1ZSAqLworCQlpZiAobGlzdF9lbXB0eSgmcGVuZGluZ19jdGFzay0+cnVubmluZykpIHsKKwkJCWRlYnVnX3Njc2koImZvdW5kIHBlbmRpbmcgdGFza1xuIik7CisJCQlnb3RvIHN1Y2Nlc3M7CisJCX0gZWxzZQorCQkJX19rZmlmb19wdXQoY29ubi0+eG1pdHF1ZXVlLCAodm9pZCopJnBlbmRpbmdfY3Rhc2ssCisJCQkJICAgIHNpemVvZih2b2lkKikpOworCX0KKworCWNvbm4tPnRtYWJvcnRfc3RhdGUgPSBUTUFCT1JUX0lOSVRJQUw7CisKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJcmMgPSBpc2NzaV9leGVjX2Fib3J0X3Rhc2soc2MsIGN0YXNrKTsKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCisJaXNjc2lfY3Rhc2tfbXRhc2tfY2xlYW51cChjdGFzayk7CisJaWYgKHJjIHx8IHNjLT5TQ3AucGhhc2UgIT0gc2Vzc2lvbi0+YWdlIHx8CisJICAgIHNlc3Npb24tPnN0YXRlICE9IElTQ1NJX1NUQVRFX0xPR0dFRF9JTikKKwkJZ290byBmYWlsZWQ7CisKKwkvKiBjdGFzayBjb21wbGV0ZWQgYmVmb3JlIHRtZiBhYm9ydCByZXNwb25zZSAqLworCWlmICghY3Rhc2stPnNjKSB7CisJCWRlYnVnX3Njc2koInNjIGNvbXBsZXRlZCB3aGlsZSBhYm9ydCBpbiBwcm9ncmVzc1xuIik7CisJCWdvdG8gc3VjY2VzczsKKwl9CisKKwlpZiAoY29ubi0+dG1hYm9ydF9zdGF0ZSAhPSBUTUFCT1JUX1NVQ0NFU1MpIHsKKwkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCQlpc2NzaV9jb25uX2ZhaWx1cmUoY29ubiwgSVNDU0lfRVJSX0NPTk5fRkFJTEVEKTsKKwkJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwkJZ290byBmYWlsZWQ7CisJfQorCitzdWNjZXNzOgorCWRlYnVnX3Njc2koImFib3J0IHN1Y2Nlc3MgW3NjICVseCBpdHQgMHgleF1cbiIsIChsb25nKXNjLCBjdGFzay0+aXR0KTsKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwkvKgorCSAqIGNsZWFuIHVwIHRhc2sgaWYgYWJvcnRlZC4gd2UgaGF2ZSB0aGUgeG1pdG11dGV4IHNvIGdyYWIKKwkgKiB0aGUgcmVjdiBsb2NrIGFzIGEgd3JpdGVyCisJICovCisJd3JpdGVfbG9ja19iaChjb25uLT5yZWN2X2xvY2spOworCXNwaW5fbG9jaygmc2Vzc2lvbi0+bG9jayk7CisJZmFpbF9jb21tYW5kKGNvbm4sIGN0YXNrLCBESURfQUJPUlQgPDwgMTYpOworCXNwaW5fdW5sb2NrKCZzZXNzaW9uLT5sb2NrKTsKKwl3cml0ZV91bmxvY2tfYmgoY29ubi0+cmVjdl9sb2NrKTsKKworCW11dGV4X3VubG9jaygmY29ubi0+eG1pdG11dGV4KTsKKwlyZXR1cm4gU1VDQ0VTUzsKKworZmFpbGVkOgorCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7CisKKwlkZWJ1Z19zY3NpKCJhYm9ydCBmYWlsZWQgW3NjICVseCBpdHQgMHgleF1cbiIsIChsb25nKXNjLCBjdGFzay0+aXR0KTsKKwlyZXR1cm4gRkFJTEVEOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfZWhfYWJvcnQpOworCitpbnQKK2lzY3NpX3Bvb2xfaW5pdChzdHJ1Y3QgaXNjc2lfcXVldWUgKnEsIGludCBtYXgsIHZvaWQgKioqaXRlbXMsIGludCBpdGVtX3NpemUpCit7CisJaW50IGk7CisKKwkqaXRlbXMgPSBrbWFsbG9jKG1heCAqIHNpemVvZih2b2lkKiksIEdGUF9LRVJORUwpOworCWlmICgqaXRlbXMgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlxLT5tYXggPSBtYXg7CisJcS0+cG9vbCA9IGttYWxsb2MobWF4ICogc2l6ZW9mKHZvaWQqKSwgR0ZQX0tFUk5FTCk7CisJaWYgKHEtPnBvb2wgPT0gTlVMTCkgeworCQlrZnJlZSgqaXRlbXMpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlxLT5xdWV1ZSA9IGtmaWZvX2luaXQoKHZvaWQqKXEtPnBvb2wsIG1heCAqIHNpemVvZih2b2lkKiksCisJCQkgICAgICBHRlBfS0VSTkVMLCBOVUxMKTsKKwlpZiAocS0+cXVldWUgPT0gRVJSX1BUUigtRU5PTUVNKSkgeworCQlrZnJlZShxLT5wb29sKTsKKwkJa2ZyZWUoKml0ZW1zKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7CisJCXEtPnBvb2xbaV0gPSBrbWFsbG9jKGl0ZW1fc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmIChxLT5wb29sW2ldID09IE5VTEwpIHsKKwkJCWludCBqOworCisJCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQorCQkJCWtmcmVlKHEtPnBvb2xbal0pOworCisJCQlrZmlmb19mcmVlKHEtPnF1ZXVlKTsKKwkJCWtmcmVlKHEtPnBvb2wpOworCQkJa2ZyZWUoKml0ZW1zKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCW1lbXNldChxLT5wb29sW2ldLCAwLCBpdGVtX3NpemUpOworCQkoKml0ZW1zKVtpXSA9IHEtPnBvb2xbaV07CisJCV9fa2ZpZm9fcHV0KHEtPnF1ZXVlLCAodm9pZCopJnEtPnBvb2xbaV0sIHNpemVvZih2b2lkKikpOworCX0KKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Bvb2xfaW5pdCk7CisKK3ZvaWQgaXNjc2lfcG9vbF9mcmVlKHN0cnVjdCBpc2NzaV9xdWV1ZSAqcSwgdm9pZCAqKml0ZW1zKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHEtPm1heDsgaSsrKQorCQlrZnJlZShpdGVtc1tpXSk7CisJa2ZyZWUocS0+cG9vbCk7CisJa2ZyZWUoaXRlbXMpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfcG9vbF9mcmVlKTsKKworLyoKKyAqIGlTQ1NJIFNlc3Npb24ncyBob3N0ZGF0YSBvcmdhbml6YXRpb246CisgKgorICogICAgKi0tLS0tLS0tLS0tLS0tLS0tLSogPD09IGhvc3RkYXRhX3Nlc3Npb24oaG9zdC0+aG9zdGRhdGEpCisgKiAgICB8IHB0ciB0byBjbGFzcyBzZXNzfAorICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLXwgPD09IGlzY3NpX2hvc3RkYXRhKGhvc3QtPmhvc3RkYXRhKQorICogICAgfCBpc2NzaV9zZXNzaW9uICAgIHwKKyAqICAgICotLS0tLS0tLS0tLS0tLS0tLS0qCisgKi8KKworI2RlZmluZSBob3N0ZGF0YV9wcml2c2l6ZShfc3opCShzaXplb2YodW5zaWduZWQgbG9uZykgKyBfc3ogKyBcCisJCQkJIF9zeiAlIHNpemVvZih1bnNpZ25lZCBsb25nKSkKKworI2RlZmluZSBob3N0ZGF0YV9zZXNzaW9uKF9ob3N0ZGF0YSkgKGlzY3NpX3B0cigqKHVuc2lnbmVkIGxvbmcgKilfaG9zdGRhdGEpKQorCisvKioKKyAqIGlzY3NpX3Nlc3Npb25fc2V0dXAgLSBjcmVhdGUgaXNjc2kgY2xzIHNlc3Npb24gYW5kIGhvc3QgYW5kIHNlc3Npb24KKyAqIEBzY3NpdDogc2NzaSB0cmFuc3BvcnQgdGVtcGxhdGUKKyAqIEBpc2NzaXQ6IGlzY3NpIHRyYW5zcG9ydCB0ZW1wbGF0ZQorICogQGluaXRpYWxfY21kc246IGluaXRpYWwgQ21kU04KKyAqIEBob3N0bm86IGhvc3Qgbm8gYWxsb2NhdGVkCisgKgorICogVGhpcyBjYW4gYmUgdXNlZCBieSBzb2Z0d2FyZSBpc2NzaV90cmFuc3BvcnRzIHRoYXQgYWxsb2NhdGUKKyAqIGEgc2Vzc2lvbiBwZXIgc2NzaSBob3N0LgorICoqLworc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICoKK2lzY3NpX3Nlc3Npb25fc2V0dXAoc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqaXNjc2l0LAorCQkgICAgc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICpzY3NpdCwKKwkJICAgIGludCBjbWRfdGFza19zaXplLCBpbnQgbWdtdF90YXNrX3NpemUsCisJCSAgICB1aW50MzJfdCBpbml0aWFsX2NtZHNuLCB1aW50MzJfdCAqaG9zdG5vKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0OworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uOworCXN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqY2xzX3Nlc3Npb247CisJaW50IGNtZF9pOworCisJc2hvc3QgPSBzY3NpX2hvc3RfYWxsb2MoaXNjc2l0LT5ob3N0X3RlbXBsYXRlLAorCQkJCWhvc3RkYXRhX3ByaXZzaXplKHNpemVvZigqc2Vzc2lvbikpKTsKKwlpZiAoIXNob3N0KQorCQlyZXR1cm4gTlVMTDsKKworCXNob3N0LT5tYXhfaWQgPSAxOworCXNob3N0LT5tYXhfY2hhbm5lbCA9IDA7CisJc2hvc3QtPm1heF9sdW4gPSBpc2NzaXQtPm1heF9sdW47CisJc2hvc3QtPm1heF9jbWRfbGVuID0gaXNjc2l0LT5tYXhfY21kX2xlbjsKKwlzaG9zdC0+dHJhbnNwb3J0dCA9IHNjc2l0OworCXNob3N0LT50cmFuc3BvcnR0LT5jcmVhdGVfd29ya19xdWV1ZSA9IDE7CisJKmhvc3RubyA9IHNob3N0LT5ob3N0X25vOworCisJc2Vzc2lvbiA9IGlzY3NpX2hvc3RkYXRhKHNob3N0LT5ob3N0ZGF0YSk7CisJbWVtc2V0KHNlc3Npb24sIDAsIHNpemVvZihzdHJ1Y3QgaXNjc2lfc2Vzc2lvbikpOworCXNlc3Npb24tPmhvc3QgPSBzaG9zdDsKKwlzZXNzaW9uLT5zdGF0ZSA9IElTQ1NJX1NUQVRFX0ZSRUU7CisJc2Vzc2lvbi0+bWdtdHBvb2xfbWF4ID0gSVNDU0lfTUdNVF9DTURTX01BWDsKKwlzZXNzaW9uLT5jbWRzX21heCA9IElTQ1NJX1hNSVRfQ01EU19NQVg7CisJc2Vzc2lvbi0+Y21kc24gPSBpbml0aWFsX2NtZHNuOworCXNlc3Npb24tPmV4cF9jbWRzbiA9IGluaXRpYWxfY21kc24gKyAxOworCXNlc3Npb24tPm1heF9jbWRzbiA9IGluaXRpYWxfY21kc24gKyAxOworCXNlc3Npb24tPm1heF9yMnQgPSAxOworCXNlc3Npb24tPnR0ID0gaXNjc2l0OworCisJLyogaW5pdGlhbGl6ZSBTQ1NJIFBEVSBjb21tYW5kcyBwb29sICovCisJaWYgKGlzY3NpX3Bvb2xfaW5pdCgmc2Vzc2lvbi0+Y21kcG9vbCwgc2Vzc2lvbi0+Y21kc19tYXgsCisJCQkgICAgKHZvaWQqKiopJnNlc3Npb24tPmNtZHMsCisJCQkgICAgY21kX3Rhc2tfc2l6ZSArIHNpemVvZihzdHJ1Y3QgaXNjc2lfY21kX3Rhc2spKSkKKwkJZ290byBjbWRwb29sX2FsbG9jX2ZhaWw7CisKKwkvKiBwcmUtZm9ybWF0IGNtZHMgcG9vbCB3aXRoIElUVCAqLworCWZvciAoY21kX2kgPSAwOyBjbWRfaSA8IHNlc3Npb24tPmNtZHNfbWF4OyBjbWRfaSsrKSB7CisJCXN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2sgPSBzZXNzaW9uLT5jbWRzW2NtZF9pXTsKKworCQlpZiAoY21kX3Rhc2tfc2l6ZSkKKwkJCWN0YXNrLT5kZF9kYXRhID0gJmN0YXNrWzFdOworCQljdGFzay0+aXR0ID0gY21kX2k7CisJfQorCisJc3Bpbl9sb2NrX2luaXQoJnNlc3Npb24tPmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZzZXNzaW9uLT5jb25uZWN0aW9ucyk7CisKKwkvKiBpbml0aWFsaXplIGltbWVkaWF0ZSBjb21tYW5kIHBvb2wgKi8KKwlpZiAoaXNjc2lfcG9vbF9pbml0KCZzZXNzaW9uLT5tZ210cG9vbCwgc2Vzc2lvbi0+bWdtdHBvb2xfbWF4LAorCQkJICAgKHZvaWQqKiopJnNlc3Npb24tPm1nbXRfY21kcywKKwkJCSAgIG1nbXRfdGFza19zaXplICsgc2l6ZW9mKHN0cnVjdCBpc2NzaV9tZ210X3Rhc2spKSkKKwkJZ290byBtZ210cG9vbF9hbGxvY19mYWlsOworCisKKwkvKiBwcmUtZm9ybWF0IGltbWVkaWF0ZSBjbWRzIHBvb2wgd2l0aCBJVFQgKi8KKwlmb3IgKGNtZF9pID0gMDsgY21kX2kgPCBzZXNzaW9uLT5tZ210cG9vbF9tYXg7IGNtZF9pKyspIHsKKwkJc3RydWN0IGlzY3NpX21nbXRfdGFzayAqbXRhc2sgPSBzZXNzaW9uLT5tZ210X2NtZHNbY21kX2ldOworCisJCWlmIChtZ210X3Rhc2tfc2l6ZSkKKwkJCW10YXNrLT5kZF9kYXRhID0gJm10YXNrWzFdOworCQltdGFzay0+aXR0ID0gSVNDU0lfTUdNVF9JVFRfT0ZGU0VUICsgY21kX2k7CisJfQorCisJaWYgKHNjc2lfYWRkX2hvc3Qoc2hvc3QsIE5VTEwpKQorCQlnb3RvIGFkZF9ob3N0X2ZhaWw7CisKKwljbHNfc2Vzc2lvbiA9IGlzY3NpX2NyZWF0ZV9zZXNzaW9uKHNob3N0LCBpc2NzaXQsIDApOworCWlmICghY2xzX3Nlc3Npb24pCisJCWdvdG8gY2xzX3Nlc3Npb25fZmFpbDsKKwkqKHVuc2lnbmVkIGxvbmcqKXNob3N0LT5ob3N0ZGF0YSA9ICh1bnNpZ25lZCBsb25nKWNsc19zZXNzaW9uOworCisJcmV0dXJuIGNsc19zZXNzaW9uOworCitjbHNfc2Vzc2lvbl9mYWlsOgorCXNjc2lfcmVtb3ZlX2hvc3Qoc2hvc3QpOworYWRkX2hvc3RfZmFpbDoKKwlpc2NzaV9wb29sX2ZyZWUoJnNlc3Npb24tPm1nbXRwb29sLCAodm9pZCoqKXNlc3Npb24tPm1nbXRfY21kcyk7CittZ210cG9vbF9hbGxvY19mYWlsOgorCWlzY3NpX3Bvb2xfZnJlZSgmc2Vzc2lvbi0+Y21kcG9vbCwgKHZvaWQqKilzZXNzaW9uLT5jbWRzKTsKK2NtZHBvb2xfYWxsb2NfZmFpbDoKKwlzY3NpX2hvc3RfcHV0KHNob3N0KTsKKwlyZXR1cm4gTlVMTDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Nlc3Npb25fc2V0dXApOworCisvKioKKyAqIGlzY3NpX3Nlc3Npb25fdGVhcmRvd24gLSBkZXN0cm95IHNlc3Npb24sIGhvc3QsIGFuZCBjbHNfc2Vzc2lvbgorICogc2hvc3Q6IHNjc2kgaG9zdAorICoKKyAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgc29mdHdhcmUgaXNjc2lfdHJhbnNwb3J0cyB0aGF0IGFsbG9jYXRlCisgKiBhIHNlc3Npb24gcGVyIHNjc2kgaG9zdC4KKyAqKi8KK3ZvaWQgaXNjc2lfc2Vzc2lvbl90ZWFyZG93bihzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uKQoreworCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gaXNjc2lfc2Vzc2lvbl90b19zaG9zdChjbHNfc2Vzc2lvbik7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBpc2NzaV9ob3N0ZGF0YShzaG9zdC0+aG9zdGRhdGEpOworCisJc2NzaV9yZW1vdmVfaG9zdChzaG9zdCk7CisKKwlpc2NzaV9wb29sX2ZyZWUoJnNlc3Npb24tPm1nbXRwb29sLCAodm9pZCoqKXNlc3Npb24tPm1nbXRfY21kcyk7CisJaXNjc2lfcG9vbF9mcmVlKCZzZXNzaW9uLT5jbWRwb29sLCAodm9pZCoqKXNlc3Npb24tPmNtZHMpOworCisJaXNjc2lfZGVzdHJveV9zZXNzaW9uKGNsc19zZXNzaW9uKTsKKwlzY3NpX2hvc3RfcHV0KHNob3N0KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3Nlc3Npb25fdGVhcmRvd24pOworCisvKioKKyAqIGlzY3NpX2Nvbm5fc2V0dXAgLSBjcmVhdGUgaXNjc2lfY2xzX2Nvbm4gYW5kIGlzY3NpX2Nvbm4KKyAqIEBjbHNfc2Vzc2lvbjogaXNjc2lfY2xzX3Nlc3Npb24KKyAqIEBjb25uX2lkeDogY2lkCisgKiovCitzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKgoraXNjc2lfY29ubl9zZXR1cChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uLCB1aW50MzJfdCBjb25uX2lkeCkKK3sKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNsYXNzX3RvX3RyYW5zcG9ydF9zZXNzaW9uKGNsc19zZXNzaW9uKTsKKwlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubjsKKwlzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNsc19jb25uOworCWNoYXIgKmRhdGE7CisKKwljbHNfY29ubiA9IGlzY3NpX2NyZWF0ZV9jb25uKGNsc19zZXNzaW9uLCBjb25uX2lkeCk7CisJaWYgKCFjbHNfY29ubikKKwkJcmV0dXJuIE5VTEw7CisJY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCW1lbXNldChjb25uLCAwLCBzaXplb2YoKmNvbm4pKTsKKworCWNvbm4tPnNlc3Npb24gPSBzZXNzaW9uOworCWNvbm4tPmNsc19jb25uID0gY2xzX2Nvbm47CisJY29ubi0+Y19zdGFnZSA9IElTQ1NJX0NPTk5fSU5JVElBTF9TVEFHRTsKKwljb25uLT5pZCA9IGNvbm5faWR4OworCWNvbm4tPmV4cF9zdGF0c24gPSAwOworCWNvbm4tPnRtYWJvcnRfc3RhdGUgPSBUTUFCT1JUX0lOSVRJQUw7CisJSU5JVF9MSVNUX0hFQUQoJmNvbm4tPnJ1bl9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmY29ubi0+bWdtdF9ydW5fbGlzdCk7CisKKwkvKiBpbml0aWFsaXplIGdlbmVyYWwgeG1pdCBQRFUgY29tbWFuZHMgcXVldWUgKi8KKwljb25uLT54bWl0cXVldWUgPSBrZmlmb19hbGxvYyhzZXNzaW9uLT5jbWRzX21heCAqIHNpemVvZih2b2lkKiksCisJCQkJCUdGUF9LRVJORUwsIE5VTEwpOworCWlmIChjb25uLT54bWl0cXVldWUgPT0gRVJSX1BUUigtRU5PTUVNKSkKKwkJZ290byB4bWl0cXVldWVfYWxsb2NfZmFpbDsKKworCS8qIGluaXRpYWxpemUgZ2VuZXJhbCBpbW1lZGlhdGUgJiBub24taW1tZWRpYXRlIFBEVSBjb21tYW5kcyBxdWV1ZSAqLworCWNvbm4tPmltbXF1ZXVlID0ga2ZpZm9fYWxsb2Moc2Vzc2lvbi0+bWdtdHBvb2xfbWF4ICogc2l6ZW9mKHZvaWQqKSwKKwkJCSAgICAgICAgICAgICAgICBHRlBfS0VSTkVMLCBOVUxMKTsKKwlpZiAoY29ubi0+aW1tcXVldWUgPT0gRVJSX1BUUigtRU5PTUVNKSkKKwkJZ290byBpbW1xdWV1ZV9hbGxvY19mYWlsOworCisJY29ubi0+bWdtdHF1ZXVlID0ga2ZpZm9fYWxsb2Moc2Vzc2lvbi0+bWdtdHBvb2xfbWF4ICogc2l6ZW9mKHZvaWQqKSwKKwkJCSAgICAgICAgICAgICAgICBHRlBfS0VSTkVMLCBOVUxMKTsKKwlpZiAoY29ubi0+bWdtdHF1ZXVlID09IEVSUl9QVFIoLUVOT01FTSkpCisJCWdvdG8gbWdtdHF1ZXVlX2FsbG9jX2ZhaWw7CisKKwlJTklUX1dPUksoJmNvbm4tPnhtaXR3b3JrLCBpc2NzaV94bWl0d29ya2VyLCBjb25uKTsKKworCS8qIGFsbG9jYXRlIGxvZ2luX210YXNrIHVzZWQgZm9yIHRoZSBsb2dpbi90ZXh0IHNlcXVlbmNlcyAqLworCXNwaW5fbG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJaWYgKCFfX2tmaWZvX2dldChzZXNzaW9uLT5tZ210cG9vbC5xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopJmNvbm4tPmxvZ2luX210YXNrLAorCQkJIHNpemVvZih2b2lkKikpKSB7CisJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwkJZ290byBsb2dpbl9tdGFza19hbGxvY19mYWlsOworCX0KKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwlkYXRhID0ga21hbGxvYyhERUZBVUxUX01BWF9SRUNWX0RBVEFfU0VHTUVOVF9MRU5HVEgsIEdGUF9LRVJORUwpOworCWlmICghZGF0YSkKKwkJZ290byBsb2dpbl9tdGFza19kYXRhX2FsbG9jX2ZhaWw7CisJY29ubi0+bG9naW5fbXRhc2stPmRhdGEgPSBkYXRhOworCisJaW5pdF90aW1lcigmY29ubi0+dG1hYm9ydF90aW1lcik7CisJbXV0ZXhfaW5pdCgmY29ubi0+eG1pdG11dGV4KTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjb25uLT5laHdhaXQpOworCisJcmV0dXJuIGNsc19jb25uOworCitsb2dpbl9tdGFza19kYXRhX2FsbG9jX2ZhaWw6CisJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsICh2b2lkKikmY29ubi0+bG9naW5fbXRhc2ssCisJCSAgICBzaXplb2Yodm9pZCopKTsKK2xvZ2luX210YXNrX2FsbG9jX2ZhaWw6CisJa2ZpZm9fZnJlZShjb25uLT5tZ210cXVldWUpOworbWdtdHF1ZXVlX2FsbG9jX2ZhaWw6CisJa2ZpZm9fZnJlZShjb25uLT5pbW1xdWV1ZSk7CitpbW1xdWV1ZV9hbGxvY19mYWlsOgorCWtmaWZvX2ZyZWUoY29ubi0+eG1pdHF1ZXVlKTsKK3htaXRxdWV1ZV9hbGxvY19mYWlsOgorCWlzY3NpX2Rlc3Ryb3lfY29ubihjbHNfY29ubik7CisJcmV0dXJuIE5VTEw7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9jb25uX3NldHVwKTsKKworLyoqCisgKiBpc2NzaV9jb25uX3RlYXJkb3duIC0gdGVhcmRvd24gaXNjc2kgY29ubmVjdGlvbgorICogY2xzX2Nvbm46IGlzY3NpIGNsYXNzIGNvbm5lY3Rpb24KKyAqCisgKiBUT0RPOiB3ZSBtYXkgbmVlZCB0byBtYWtlIHRoaXMgaW50byBhIHR3byBzdGVwIHByb2Nlc3MKKyAqIGxpa2Ugc2NzaS1tbHMgcmVtb3ZlICsgcHV0IGhvc3QKKyAqLwordm9pZCBpc2NzaV9jb25uX3RlYXJkb3duKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4pCit7CisJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBjbHNfY29ubi0+ZGRfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqc2Vzc2lvbiA9IGNvbm4tPnNlc3Npb247CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNldF9iaXQoSVNDU0lfU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3R4KTsKKwltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCWlmIChjb25uLT5jX3N0YWdlID09IElTQ1NJX0NPTk5fSU5JVElBTF9TVEFHRSkgeworCQlpZiAoc2Vzc2lvbi0+dHQtPnN1c3BlbmRfY29ubl9yZWN2KQorCQkJc2Vzc2lvbi0+dHQtPnN1c3BlbmRfY29ubl9yZWN2KGNvbm4pOworCisJCXNlc3Npb24tPnR0LT50ZXJtaW5hdGVfY29ubihjb25uKTsKKwl9CisKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWNvbm4tPmNfc3RhZ2UgPSBJU0NTSV9DT05OX0NMRUFOVVBfV0FJVDsKKwlpZiAoc2Vzc2lvbi0+bGVhZGNvbm4gPT0gY29ubikgeworCQkvKgorCQkgKiBsZWFkaW5nIGNvbm5lY3Rpb24/IHRoZW4gZ2l2ZSB1cCBvbiByZWNvdmVyeS4KKwkJICovCisJCXNlc3Npb24tPnN0YXRlID0gSVNDU0lfU1RBVEVfVEVSTUlOQVRFOworCQl3YWtlX3VwKCZjb25uLT5laHdhaXQpOworCX0KKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7CisKKwkvKgorCSAqIEJsb2NrIHVudGlsIGFsbCBpbi1wcm9ncmVzcyBjb21tYW5kcyBmb3IgdGhpcyBjb25uZWN0aW9uCisJICogdGltZSBvdXQgb3IgZmFpbC4KKwkgKi8KKwlmb3IgKDs7KSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKHNlc3Npb24tPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQlpZiAoIXNlc3Npb24tPmhvc3QtPmhvc3RfYnVzeSkgeyAvKiBPSyBmb3IgRVJMID09IDAgKi8KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2Vzc2lvbi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CisJCQlicmVhazsKKwkJfQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKHNlc3Npb24tPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOworCQltc2xlZXBfaW50ZXJydXB0aWJsZSg1MDApOworCQlwcmludGsoS0VSTl9JTkZPICJpc2NzaTogc2NzaSBjb25uX2Rlc3Ryb3koKTogaG9zdF9idXN5ICVkICIKKwkJICAgICAgICJob3N0X2ZhaWxlZCAlZFxuIiwgc2Vzc2lvbi0+aG9zdC0+aG9zdF9idXN5LAorCQkgICAgICAgc2Vzc2lvbi0+aG9zdC0+aG9zdF9mYWlsZWQpOworCQkvKgorCQkgKiBmb3JjZSBlaF9hYm9ydCgpIHRvIHVuYmxvY2sKKwkJICovCisJCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7CisJfQorCisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwlrZnJlZShjb25uLT5sb2dpbl9tdGFzay0+ZGF0YSk7CisJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsICh2b2lkKikmY29ubi0+bG9naW5fbXRhc2ssCisJCSAgICBzaXplb2Yodm9pZCopKTsKKwlsaXN0X2RlbCgmY29ubi0+aXRlbSk7CisJaWYgKGxpc3RfZW1wdHkoJnNlc3Npb24tPmNvbm5lY3Rpb25zKSkKKwkJc2Vzc2lvbi0+bGVhZGNvbm4gPSBOVUxMOworCWlmIChzZXNzaW9uLT5sZWFkY29ubiAmJiBzZXNzaW9uLT5sZWFkY29ubiA9PSBjb25uKQorCQlzZXNzaW9uLT5sZWFkY29ubiA9IGNvbnRhaW5lcl9vZihzZXNzaW9uLT5jb25uZWN0aW9ucy5uZXh0LAorCQkJc3RydWN0IGlzY3NpX2Nvbm4sIGl0ZW0pOworCisJaWYgKHNlc3Npb24tPmxlYWRjb25uID09IE5VTEwpCisJCS8qIG5vIGNvbm5lY3Rpb25zIGV4aXRzLi4gcmVzZXQgc2VxdWVuY2luZyAqLworCQlzZXNzaW9uLT5jbWRzbiA9IHNlc3Npb24tPm1heF9jbWRzbiA9IHNlc3Npb24tPmV4cF9jbWRzbiA9IDE7CisJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCisJa2ZpZm9fZnJlZShjb25uLT54bWl0cXVldWUpOworCWtmaWZvX2ZyZWUoY29ubi0+aW1tcXVldWUpOworCWtmaWZvX2ZyZWUoY29ubi0+bWdtdHF1ZXVlKTsKKworCWlzY3NpX2Rlc3Ryb3lfY29ubihjbHNfY29ubik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9jb25uX3RlYXJkb3duKTsKKworaW50IGlzY3NpX2Nvbm5fc3RhcnQoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubikKK3sKKwlzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiA9IGNsc19jb25uLT5kZF9kYXRhOworCXN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uID0gY29ubi0+c2Vzc2lvbjsKKworCWlmIChzZXNzaW9uID09IE5VTEwpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaTogY2FuJ3Qgc3RhcnQgdW5ib3VuZCBjb25uZWN0aW9uXG4iKTsKKwkJcmV0dXJuIC1FUEVSTTsKKwl9CisKKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWNvbm4tPmNfc3RhZ2UgPSBJU0NTSV9DT05OX1NUQVJURUQ7CisJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9MT0dHRURfSU47CisKKwlzd2l0Y2goY29ubi0+c3RvcF9zdGFnZSkgeworCWNhc2UgU1RPUF9DT05OX1JFQ09WRVI6CisJCS8qCisJCSAqIHVuYmxvY2sgZWhfYWJvcnQoKSBpZiBpdCBpcyBibG9ja2VkLiByZS10cnkgYWxsCisJCSAqIGNvbW1hbmRzIGFmdGVyIHN1Y2Nlc3NmdWwgcmVjb3ZlcnkKKwkJICovCisJCWNvbm4tPnN0b3Bfc3RhZ2UgPSAwOworCQljb25uLT50bWFib3J0X3N0YXRlID0gVE1BQk9SVF9JTklUSUFMOworCQlzZXNzaW9uLT5hZ2UrKzsKKwkJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCisJCWlzY3NpX3VuYmxvY2tfc2Vzc2lvbihzZXNzaW9uX3RvX2NscyhzZXNzaW9uKSk7CisJCXdha2VfdXAoJmNvbm4tPmVod2FpdCk7CisJCXJldHVybiAwOworCWNhc2UgU1RPUF9DT05OX1RFUk06CisJCWNvbm4tPnN0b3Bfc3RhZ2UgPSAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9jb25uX3N0YXJ0KTsKKworc3RhdGljIHZvaWQKK2ZsdXNoX2NvbnRyb2xfcXVldWVzKHN0cnVjdCBpc2NzaV9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKK3sKKwlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzaywgKnRtcDsKKworCS8qIGhhbmRsZSBwZW5kaW5nICovCisJd2hpbGUgKF9fa2ZpZm9fZ2V0KGNvbm4tPmltbXF1ZXVlLCAodm9pZCopJm10YXNrLCBzaXplb2Yodm9pZCopKSB8fAorCSAgICAgICBfX2tmaWZvX2dldChjb25uLT5tZ210cXVldWUsICh2b2lkKikmbXRhc2ssIHNpemVvZih2b2lkKikpKSB7CisJCWlmIChtdGFzayA9PSBjb25uLT5sb2dpbl9tdGFzaykKKwkJCWNvbnRpbnVlOworCQlkZWJ1Z19zY3NpKCJmbHVzaGluZyBwZW5kaW5nIG1nbXQgdGFzayBpdHQgMHgleFxuIiwgbXRhc2stPml0dCk7CisJCV9fa2ZpZm9fcHV0KHNlc3Npb24tPm1nbXRwb29sLnF1ZXVlLCAodm9pZCopJm10YXNrLAorCQkJICAgIHNpemVvZih2b2lkKikpOworCX0KKworCS8qIGhhbmRsZSBydW5uaW5nICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG10YXNrLCB0bXAsICZjb25uLT5tZ210X3J1bl9saXN0LCBydW5uaW5nKSB7CisJCWRlYnVnX3Njc2koImZsdXNoaW5nIHJ1bm5pbmcgbWdtdCB0YXNrIGl0dCAweCV4XG4iLCBtdGFzay0+aXR0KTsKKwkJbGlzdF9kZWwoJm10YXNrLT5ydW5uaW5nKTsKKworCQlpZiAobXRhc2sgPT0gY29ubi0+bG9naW5fbXRhc2spCisJCQljb250aW51ZTsKKwkJX19rZmlmb19wdXQoc2Vzc2lvbi0+bWdtdHBvb2wucXVldWUsICh2b2lkKikmbXRhc2ssCisJCQkgICBzaXplb2Yodm9pZCopKTsKKwl9CisKKwljb25uLT5tdGFzayA9IE5VTEw7Cit9CisKKy8qIEZhaWwgY29tbWFuZHMuIE11dGV4IGFuZCBzZXNzaW9uIGxvY2sgaGVsZCBhbmQgcmVjdiBzaWRlIHN1c3BlbmRlZCAqLworc3RhdGljIHZvaWQgZmFpbF9hbGxfY29tbWFuZHMoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCit7CisJc3RydWN0IGlzY3NpX2NtZF90YXNrICpjdGFzaywgKnRtcDsKKworCS8qIGZsdXNoIHBlbmRpbmcgKi8KKwl3aGlsZSAoX19rZmlmb19nZXQoY29ubi0+eG1pdHF1ZXVlLCAodm9pZCopJmN0YXNrLCBzaXplb2Yodm9pZCopKSkgeworCQlkZWJ1Z19zY3NpKCJmYWlsaW5nIHBlbmRpbmcgc2MgJXAgaXR0IDB4JXhcbiIsIGN0YXNrLT5zYywKKwkJCSAgIGN0YXNrLT5pdHQpOworCQlmYWlsX2NvbW1hbmQoY29ubiwgY3Rhc2ssIERJRF9CVVNfQlVTWSA8PCAxNik7CisJfQorCisJLyogZmFpbCBhbGwgb3RoZXIgcnVubmluZyAqLworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdGFzaywgdG1wLCAmY29ubi0+cnVuX2xpc3QsIHJ1bm5pbmcpIHsKKwkJZGVidWdfc2NzaSgiZmFpbGluZyBpbiBwcm9ncmVzcyBzYyAlcCBpdHQgMHgleFxuIiwKKwkJCSAgIGN0YXNrLT5zYywgY3Rhc2stPml0dCk7CisJCWZhaWxfY29tbWFuZChjb25uLCBjdGFzaywgRElEX0JVU19CVVNZIDw8IDE2KTsKKwl9CisKKwljb25uLT5jdGFzayA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGlzY3NpX3N0YXJ0X3Nlc3Npb25fcmVjb3Zlcnkoc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24sCisJCQkJCSBzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgaW50IGZsYWcpCit7CisJaW50IG9sZF9zdG9wX3N0YWdlOworCisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwlpZiAoY29ubi0+c3RvcF9zdGFnZSA9PSBTVE9QX0NPTk5fVEVSTSkgeworCQlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIFdoZW4gdGhpcyBpcyBjYWxsZWQgZm9yIHRoZSBpbl9sb2dpbiBzdGF0ZSwgd2Ugb25seSB3YW50IHRvIGNsZWFuCisJICogdXAgdGhlIGxvZ2luIHRhc2sgYW5kIGNvbm5lY3Rpb24uIFdlIGRvIG5vdCBuZWVkIHRvIGJsb2NrIGFuZCBzZXQKKwkgKiB0aGUgcmVjb3Zlcnkgc3RhdGUgYWdhaW4KKwkgKi8KKwlpZiAoZmxhZyA9PSBTVE9QX0NPTk5fVEVSTSkKKwkJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9URVJNSU5BVEU7CisJZWxzZSBpZiAoY29ubi0+c3RvcF9zdGFnZSAhPSBTVE9QX0NPTk5fUkVDT1ZFUikKKwkJc2Vzc2lvbi0+c3RhdGUgPSBJU0NTSV9TVEFURV9JTl9SRUNPVkVSWTsKKworCW9sZF9zdG9wX3N0YWdlID0gY29ubi0+c3RvcF9zdGFnZTsKKwljb25uLT5zdG9wX3N0YWdlID0gZmxhZzsKKwljb25uLT5jX3N0YWdlID0gSVNDU0lfQ09OTl9TVE9QUEVEOworCXNldF9iaXQoSVNDU0lfU1VTUEVORF9CSVQsICZjb25uLT5zdXNwZW5kX3R4KTsKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwlpZiAoc2Vzc2lvbi0+dHQtPnN1c3BlbmRfY29ubl9yZWN2KQorCQlzZXNzaW9uLT50dC0+c3VzcGVuZF9jb25uX3JlY3YoY29ubik7CisKKwltdXRleF9sb2NrKCZjb25uLT54bWl0bXV0ZXgpOworCS8qCisJICogZm9yIGNvbm5lY3Rpb24gbGV2ZWwgcmVjb3Zlcnkgd2Ugc2hvdWxkIG5vdCBjYWxjdWxhdGUKKwkgKiBoZWFkZXIgZGlnZXN0LiBjb25uLT5oZHJfc2l6ZSB1c2VkIGZvciBvcHRpbWl6YXRpb24KKwkgKiBpbiBoZHJfZXh0cmFjdCgpIGFuZCB3aWxsIGJlIHJlLW5lZ290aWF0ZWQgYXQKKwkgKiBzZXRfcGFyYW0oKSB0aW1lLgorCSAqLworCWlmIChmbGFnID09IFNUT1BfQ09OTl9SRUNPVkVSKSB7CisJCWNvbm4tPmhkcmRnc3RfZW4gPSAwOworCQljb25uLT5kYXRhZGdzdF9lbiA9IDA7CisJCWlmIChzZXNzaW9uLT5zdGF0ZSA9PSBJU0NTSV9TVEFURV9JTl9SRUNPVkVSWSAmJgorCQkgICAgb2xkX3N0b3Bfc3RhZ2UgIT0gU1RPUF9DT05OX1JFQ09WRVIpIHsKKwkJCWRlYnVnX3Njc2koImJsb2NraW5nIHNlc3Npb25cbiIpOworCQkJaXNjc2lfYmxvY2tfc2Vzc2lvbihzZXNzaW9uX3RvX2NscyhzZXNzaW9uKSk7CisJCX0KKwl9CisKKwlzZXNzaW9uLT50dC0+dGVybWluYXRlX2Nvbm4oY29ubik7CisJLyoKKwkgKiBmbHVzaCBxdWV1ZXMuCisJICovCisJc3Bpbl9sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwlmYWlsX2FsbF9jb21tYW5kcyhjb25uKTsKKwlmbHVzaF9jb250cm9sX3F1ZXVlcyhzZXNzaW9uLCBjb25uKTsKKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwltdXRleF91bmxvY2soJmNvbm4tPnhtaXRtdXRleCk7Cit9CisKK3ZvaWQgaXNjc2lfY29ubl9zdG9wKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sIGludCBmbGFnKQoreworCXN0cnVjdCBpc2NzaV9jb25uICpjb25uID0gY2xzX2Nvbm4tPmRkX2RhdGE7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjb25uLT5zZXNzaW9uOworCisJc3dpdGNoIChmbGFnKSB7CisJY2FzZSBTVE9QX0NPTk5fUkVDT1ZFUjoKKwljYXNlIFNUT1BfQ09OTl9URVJNOgorCQlpc2NzaV9zdGFydF9zZXNzaW9uX3JlY292ZXJ5KHNlc3Npb24sIGNvbm4sIGZsYWcpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIgImlzY3NpOiBpbnZhbGlkIHN0b3AgZmxhZyAlZFxuIiwgZmxhZyk7CisJfQorfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfY29ubl9zdG9wKTsKKworaW50IGlzY3NpX2Nvbm5fYmluZChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKmNsc19zZXNzaW9uLAorCQkgICAgc3RydWN0IGlzY3NpX2Nsc19jb25uICpjbHNfY29ubiwgaW50IGlzX2xlYWRpbmcpCit7CisJc3RydWN0IGlzY3NpX3Nlc3Npb24gKnNlc3Npb24gPSBjbGFzc190b190cmFuc3BvcnRfc2Vzc2lvbihjbHNfc2Vzc2lvbik7CisJc3RydWN0IGlzY3NpX2Nvbm4gKnRtcCA9IEVSUl9QVFIoLUVFWElTVCksICpjb25uID0gY2xzX2Nvbm4tPmRkX2RhdGE7CisKKwkvKiBsb29rdXAgZm9yIGV4aXN0aW5nIGNvbm5lY3Rpb24gKi8KKwlzcGluX2xvY2tfYmgoJnNlc3Npb24tPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmc2Vzc2lvbi0+Y29ubmVjdGlvbnMsIGl0ZW0pIHsKKwkJaWYgKHRtcCA9PSBjb25uKSB7CisJCQlpZiAoY29ubi0+Y19zdGFnZSAhPSBJU0NTSV9DT05OX1NUT1BQRUQgfHwKKwkJCSAgICBjb25uLT5zdG9wX3N0YWdlID09IFNUT1BfQ09OTl9URVJNKSB7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJpc2NzaTogY2FuJ3QgYmluZCAiCisJCQkJICAgICAgICJub24tc3RvcHBlZCBjb25uZWN0aW9uICglZDolZClcbiIsCisJCQkJICAgICAgIGNvbm4tPmNfc3RhZ2UsIGNvbm4tPnN0b3Bfc3RhZ2UpOworCQkJCXNwaW5fdW5sb2NrX2JoKCZzZXNzaW9uLT5sb2NrKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQorCWlmICh0bXAgIT0gY29ubikgeworCQkvKiBiaW5kIG5ldyBpU0NTSSBjb25uZWN0aW9uIHRvIHNlc3Npb24gKi8KKwkJY29ubi0+c2Vzc2lvbiA9IHNlc3Npb247CisJCWxpc3RfYWRkKCZjb25uLT5pdGVtLCAmc2Vzc2lvbi0+Y29ubmVjdGlvbnMpOworCX0KKwlzcGluX3VubG9ja19iaCgmc2Vzc2lvbi0+bG9jayk7CisKKwlpZiAoaXNfbGVhZGluZykKKwkJc2Vzc2lvbi0+bGVhZGNvbm4gPSBjb25uOworCisJLyoKKwkgKiBVbmJsb2NrIHhtaXR3b3JrZXIoKSwgTG9naW4gUGhhc2Ugd2lsbCBwYXNzIHRocm91Z2guCisJICovCisJY2xlYXJfYml0KElTQ1NJX1NVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF9yeCk7CisJY2xlYXJfYml0KElTQ1NJX1NVU1BFTkRfQklULCAmY29ubi0+c3VzcGVuZF90eCk7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9jb25uX2JpbmQpOworCitNT0RVTEVfQVVUSE9SKCJNaWtlIENocmlzdGllIik7CitNT0RVTEVfREVTQ1JJUFRJT04oImlTQ1NJIGxpYnJhcnkgZnVuY3Rpb25zIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCmluZGV4IGRlMzVmZmUuLjVkMmNlZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCkBAIC01MjQsNyArNTI0LDcgQEAKIAkgKiBmaWx0ZXIgdGhlIGludGVybmFsIGFuZCBpb2N0bCBjb21tYW5kcwogCSAqLwogCWlmKChjbWQtPmNtbmRbMF0gPT0gTUVHQV9JTlRFUk5BTF9DTUQpKSB7Ci0JCXJldHVybiBjbWQtPmJ1ZmZlcjsKKwkJcmV0dXJuIGNtZC0+cmVxdWVzdF9idWZmZXI7CiAJfQogCiAKQEAgLTE4MjgsNyArMTgyOCw3IEBACiAKIAlzY2ItPmRtYV90eXBlID0gTUVHQV9TR0xJU1Q7CiAKLQlpZiggc2djbnQgPiBhZGFwdGVyLT5zZ2xlbiApIEJVRygpOworCUJVR19PTihzZ2NudCA+IGFkYXB0ZXItPnNnbGVuKTsKIAogCSpsZW4gPSAwOwogCkBAIC00NDkyLDcgKzQ0OTIsNyBAQAogCXNjbWQtPmRldmljZSA9IHNkZXY7CiAKIAlzY21kLT5kZXZpY2UtPmhvc3QgPSBhZGFwdGVyLT5ob3N0OwotCXNjbWQtPmJ1ZmZlciA9ICh2b2lkICopc2NiOworCXNjbWQtPnJlcXVlc3RfYnVmZmVyID0gKHZvaWQgKilzY2I7CiAJc2NtZC0+Y21uZFswXSA9IE1FR0FfSU5URVJOQUxfQ01EOwogCiAJc2NiLT5zdGF0ZSB8PSBTQ0JfQUNUSVZFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5jCmluZGV4IDM5NzI5NDYuLjBjOTUxNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuYworKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmMKQEAgLTc0MSw3ICs3NDEsNiBAQAogbWVnYXNhc19xdWV1ZV9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKnNjbWQsIHZvaWQgKCpkb25lKSAoc3RydWN0IHNjc2lfY21uZCAqKSkKIHsKIAl1MzIgZnJhbWVfY291bnQ7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgbWVnYXNhc19jbWQgKmNtZDsKIAlzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2U7CiAKQEAgLTc3Niw5ICs3NzUsNyBAQAogCS8qCiAJICogSXNzdWUgdGhlIGNvbW1hbmQgdG8gdGhlIEZXCiAJICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmluc3RhbmNlLT5pbnN0YW5jZV9sb2NrLCBmbGFncyk7Ci0JaW5zdGFuY2UtPmZ3X291dHN0YW5kaW5nKys7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5zdGFuY2UtPmluc3RhbmNlX2xvY2ssIGZsYWdzKTsKKwlhdG9taWNfaW5jKCZpbnN0YW5jZS0+Zndfb3V0c3RhbmRpbmcpOwogCiAJaW5zdGFuY2UtPmluc3RhbmNldC0+ZmlyZV9jbWQoY21kLT5mcmFtZV9waHlzX2FkZHIgLGNtZC0+ZnJhbWVfY291bnQtMSxpbnN0YW5jZS0+cmVnX3NldCk7CiAKQEAgLTgyNiwxOSArODIzLDIwIEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgd2FpdF90aW1lOyBpKyspIHsKIAotCQlpZiAoIWluc3RhbmNlLT5md19vdXRzdGFuZGluZykKKwkJaW50IG91dHN0YW5kaW5nID0gYXRvbWljX3JlYWQoJmluc3RhbmNlLT5md19vdXRzdGFuZGluZyk7CisKKwkJaWYgKCFvdXRzdGFuZGluZykKIAkJCWJyZWFrOwogCiAJCWlmICghKGkgJSBNRUdBU0FTX1JFU0VUX05PVElDRV9JTlRFUlZBTCkpIHsKIAkJCXByaW50ayhLRVJOX05PVElDRSAibWVnYXNhczogWyUyZF13YWl0aW5nIGZvciAlZCAiCi0JCQkgICAgICAgImNvbW1hbmRzIHRvIGNvbXBsZXRlXG4iLCBpLAotCQkJICAgICAgIGluc3RhbmNlLT5md19vdXRzdGFuZGluZyk7CisJCQkgICAgICAgImNvbW1hbmRzIHRvIGNvbXBsZXRlXG4iLGksb3V0c3RhbmRpbmcpOwogCQl9CiAKIAkJbXNsZWVwKDEwMDApOwogCX0KIAotCWlmIChpbnN0YW5jZS0+Zndfb3V0c3RhbmRpbmcpIHsKKwlpZiAoYXRvbWljX3JlYWQoJmluc3RhbmNlLT5md19vdXRzdGFuZGluZykpIHsKIAkJaW5zdGFuY2UtPmh3X2NyaXRfZXJyb3IgPSAxOwogCQlyZXR1cm4gRkFJTEVEOwogCX0KQEAgLTEwNTAsNyArMTA0OCw2IEBACiB7CiAJaW50IGV4Y2VwdGlvbiA9IDA7CiAJc3RydWN0IG1lZ2FzYXNfaGVhZGVyICpoZHIgPSAmY21kLT5mcmFtZS0+aGRyOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlpZiAoY21kLT5zY21kKSB7CiAJCWNtZC0+c2NtZC0+U0NwLnB0ciA9IChjaGFyICopMDsKQEAgLTEwODIsOSArMTA3OSw3IEBACiAKIAkJaWYgKGV4Y2VwdGlvbikgewogCi0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmaW5zdGFuY2UtPmluc3RhbmNlX2xvY2ssIGZsYWdzKTsKLQkJCWluc3RhbmNlLT5md19vdXRzdGFuZGluZy0tOwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5zdGFuY2UtPmluc3RhbmNlX2xvY2ssIGZsYWdzKTsKKwkJCWF0b21pY19kZWMoJmluc3RhbmNlLT5md19vdXRzdGFuZGluZyk7CiAKIAkJCW1lZ2FzYXNfdW5tYXBfc2didWYoaW5zdGFuY2UsIGNtZCk7CiAJCQljbWQtPnNjbWQtPnNjc2lfZG9uZShjbWQtPnNjbWQpOwpAQCAtMTEzMiw5ICsxMTI3LDcgQEAKIAkJCWJyZWFrOwogCQl9CiAKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmluc3RhbmNlLT5pbnN0YW5jZV9sb2NrLCBmbGFncyk7Ci0JCWluc3RhbmNlLT5md19vdXRzdGFuZGluZy0tOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbnN0YW5jZS0+aW5zdGFuY2VfbG9jaywgZmxhZ3MpOworCQlhdG9taWNfZGVjKCZpbnN0YW5jZS0+Zndfb3V0c3RhbmRpbmcpOwogCiAJCW1lZ2FzYXNfdW5tYXBfc2didWYoaW5zdGFuY2UsIGNtZCk7CiAJCWNtZC0+c2NtZC0+c2NzaV9kb25lKGNtZC0+c2NtZCk7CkBAIC0yMTcxLDExICsyMTY0LDEyIEBACiAJICovCiAJSU5JVF9MSVNUX0hFQUQoJmluc3RhbmNlLT5jbWRfcG9vbCk7CiAKKwlhdG9taWNfc2V0KCZpbnN0YW5jZS0+Zndfb3V0c3RhbmRpbmcsMCk7CisKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpbnN0YW5jZS0+aW50X2NtZF93YWl0X3EpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmluc3RhbmNlLT5hYm9ydF9jbWRfd2FpdF9xKTsKIAogCXNwaW5fbG9ja19pbml0KCZpbnN0YW5jZS0+Y21kX3Bvb2xfbG9jayk7Ci0Jc3Bpbl9sb2NrX2luaXQoJmluc3RhbmNlLT5pbnN0YW5jZV9sb2NrKTsKIAogCXNlbWFfaW5pdCgmaW5zdGFuY2UtPmFlbl9tdXRleCwgMSk7CiAJc2VtYV9pbml0KCZpbnN0YW5jZS0+aW9jdGxfc2VtLCBNRUdBU0FTX0lOVF9DTURTKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaCBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaAppbmRleCA4OTYzOWYwLi45MjdkNmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5oCkBAIC0xMDc3LDkgKzEwNzcsOCBAQAogCXN0cnVjdCBwY2lfZGV2ICpwZGV2OwogCXUzMiB1bmlxdWVfaWQ7CiAKLQl1MzIgZndfb3V0c3RhbmRpbmc7CisJYXRvbWljX3QgZndfb3V0c3RhbmRpbmc7CiAJdTMyIGh3X2NyaXRfZXJyb3I7Ci0Jc3BpbmxvY2tfdCBpbnN0YW5jZV9sb2NrOwogCiAJc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2VfdGVtcGxhdGUgKmluc3RhbmNldDsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMgYi9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMKaW5kZXggMjJmOTEzMS4uNmFiMDM1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL25jcjUzYzh4eC5jCisrKyBiL2RyaXZlcnMvc2NzaS9uY3I1M2M4eHguYwpAQCAtNTI5LDcgKzUyOSw3IEBACiB7CiAJc3dpdGNoKGNtZC0+X19kYXRhX21hcHBlZCkgewogCWNhc2UgMjoKLQkJZG1hX3VubWFwX3NnKGRldiwgY21kLT5idWZmZXIsIGNtZC0+dXNlX3NnLAorCQlkbWFfdW5tYXBfc2coZGV2LCBjbWQtPnJlcXVlc3RfYnVmZmVyLCBjbWQtPnVzZV9zZywKIAkJCQljbWQtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAkJYnJlYWs7CiAJY2FzZSAxOgpAQCAtNTY0LDcgKzU2NCw3IEBACiAJaWYgKGNtZC0+dXNlX3NnID09IDApCiAJCXJldHVybiAwOwogCi0JdXNlX3NnID0gZG1hX21hcF9zZyhkZXYsIGNtZC0+YnVmZmVyLCBjbWQtPnVzZV9zZywKKwl1c2Vfc2cgPSBkbWFfbWFwX3NnKGRldiwgY21kLT5yZXF1ZXN0X2J1ZmZlciwgY21kLT51c2Vfc2csCiAJCQljbWQtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAljbWQtPl9fZGF0YV9tYXBwZWQgPSAyOwogCWNtZC0+X19kYXRhX21hcHBpbmcgPSB1c2Vfc2c7CkBAIC03Njk3LDcgKzc2OTcsNyBAQAogCWlmICghdXNlX3NnKQogCQlzZWdtZW50ID0gbmNyX3NjYXR0ZXJfbm9fc2dsaXN0KG5wLCBjcCwgY21kKTsKIAllbHNlIGlmICgodXNlX3NnID0gbWFwX3Njc2lfc2dfZGF0YShucCwgY21kKSkgPiAwKSB7Ci0JCXN0cnVjdCBzY2F0dGVybGlzdCAqc2NhdHRlciA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKiljbWQtPmJ1ZmZlcjsKKwkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzY2F0dGVyID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKWNtZC0+cmVxdWVzdF9idWZmZXI7CiAJCXN0cnVjdCBzY3JfdGJsbW92ZSAqZGF0YTsKIAogCQlpZiAodXNlX3NnID4gTUFYX1NDQVRURVIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9uc3AzMi5jIGIvZHJpdmVycy9zY3NpL25zcDMyLmMKaW5kZXggMzBlZTBlZi4uNWM1NWUxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL25zcDMyLmMKKysrIGIvZHJpdmVycy9zY3NpL25zcDMyLmMKQEAgLTE2MzYsNyArMTYzNiw3IEBACiAKIAlpZiAoU0NwbnQtPnVzZV9zZykgewogCQlwY2lfdW5tYXBfc2coZGF0YS0+UGNpLAotCQkJICAgICAoc3RydWN0IHNjYXR0ZXJsaXN0ICopU0NwbnQtPmJ1ZmZlciwKKwkJCSAgICAgKHN0cnVjdCBzY2F0dGVybGlzdCAqKVNDcG50LT5yZXF1ZXN0X2J1ZmZlciwKIAkJCSAgICAgU0NwbnQtPnVzZV9zZywgU0NwbnQtPnNjX2RhdGFfZGlyZWN0aW9uKTsKIAl9IGVsc2UgewogCQlwY2lfdW5tYXBfc2luZ2xlKGRhdGEtPlBjaSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9vc3N0LmMgYi9kcml2ZXJzL3Njc2kvb3NzdC5jCmluZGV4IGUzYmQ0YmMuLjRhMmZlZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc3N0LmMKKysrIGIvZHJpdmVycy9zY3NpL29zc3QuYwpAQCAtNDcyNCw3ICs0NzI0LDcgQEAKIAogCiAvKiBGbHVzaCB0aGUgdGFwZSBidWZmZXIgYmVmb3JlIGNsb3NlICovCi1zdGF0aWMgaW50IG9zX3Njc2lfdGFwZV9mbHVzaChzdHJ1Y3QgZmlsZSAqIGZpbHApCitzdGF0aWMgaW50IG9zX3Njc2lfdGFwZV9mbHVzaChzdHJ1Y3QgZmlsZSAqIGZpbHAsIGZsX293bmVyX3QgaWQpCiB7CiAJaW50CQkgICAgICByZXN1bHQgPSAwLCByZXN1bHQyOwogCXN0cnVjdCBvc3N0X3RhcGUgICAgKiBTVHAgICAgPSBmaWxwLT5wcml2YXRlX2RhdGE7CkBAIC01NDkyLDcgKzU0OTIsNyBAQAogICBjaGFyICpzdHA7CiAKICAgc3RwID0gZ2V0X29wdGlvbnMoc3RyLCBBUlJBWV9TSVpFKGludHMpLCBpbnRzKTsKLQkKKwogICBpZiAoaW50c1swXSA+IDApIHsKIAlmb3IgKGkgPSAwOyBpIDwgaW50c1swXSAmJiBpIDwgQVJSQVlfU0laRShwYXJtcyk7IGkrKykKIAkJICAqcGFybXNbaV0udmFsID0gaW50c1tpICsgMV07CkBAIC01NTA3LDcgKzU1MDcsNyBAQAogCQkJCWJyZWFrOwogCQkJfQogCQl9Ci0JCWlmIChpID49IHNpemVvZihwYXJtcykgLyBzaXplb2Yoc3RydWN0IG9zc3RfZGV2X3Bhcm0pKQorCQlpZiAoaSA+PSBBUlJBWV9TSVpFKHBhcm1zKSkKIAkJCXByaW50ayhLRVJOX0lORk8gIm9zc3QgOkk6IElsbGVnYWwgcGFyYW1ldGVyIGluICclcydcbiIsCiAJCQkgICAgICAgc3RwKTsKIAkJc3RwID0gc3RyY2hyKHN0cCwgJywnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wYXMxNi5jIGIvZHJpdmVycy9zY3NpL3BhczE2LmMKaW5kZXggZjA5ZTk0YS4uMWJmOTZlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BhczE2LmMKKysrIGIvZHJpdmVycy9zY3NpL3BhczE2LmMKQEAgLTE1Niw3ICsxNTYsNyBAQAogc3RhdGljIHN0cnVjdCBvdmVycmlkZSB7CiAgICAgdW5zaWduZWQgc2hvcnQgaW9fcG9ydDsKICAgICBpbnQgIGlycTsKLX0gb3ZlcnJpZGVzIAorfSBvdmVycmlkZXMKICNpZmRlZiBQQVMxNl9PVkVSUklERQogICAgIFtdIF9faW5pdGRhdGEgPSBQQVMxNl9PVkVSUklERTsKICNlbHNlCkBAIC0xNjQsMTkgKzE2NCwxOSBAQAogCXswLElSUV9BVVRPfX07CiAjZW5kaWYKIAotI2RlZmluZSBOT19PVkVSUklERVMgKHNpemVvZihvdmVycmlkZXMpIC8gc2l6ZW9mKHN0cnVjdCBvdmVycmlkZSkpCisjZGVmaW5lIE5PX09WRVJSSURFUyBBUlJBWV9TSVpFKG92ZXJyaWRlcykKIAogc3RhdGljIHN0cnVjdCBiYXNlIHsKICAgICB1bnNpZ25lZCBzaG9ydCBpb19wb3J0OwogICAgIGludCBub2F1dG87Ci19IGJhc2VzW10gX19pbml0ZGF0YSA9IAorfSBiYXNlc1tdIF9faW5pdGRhdGEgPQogCXsge1BBUzE2X0RFRkFVTFRfQkFTRV8xLCAwfSwKIAkgIHtQQVMxNl9ERUZBVUxUX0JBU0VfMiwgMH0sCiAJICB7UEFTMTZfREVGQVVMVF9CQVNFXzMsIDB9LAogCSAge1BBUzE2X0RFRkFVTFRfQkFTRV80LCAwfQogCX07CiAKLSNkZWZpbmUgTk9fQkFTRVMgKHNpemVvZiAoYmFzZXMpIC8gc2l6ZW9mIChzdHJ1Y3QgYmFzZSkpCisjZGVmaW5lIE5PX0JBU0VTIEFSUkFZX1NJWkUoYmFzZXMpCiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCAgcGFzMTZfb2Zmc2V0WyA4IF0gPQogICAgIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wZGNfYWRtYS5jIGIvZHJpdmVycy9zY3NpL3BkY19hZG1hLmMKaW5kZXggNWNkYTE2Yy4uN2ViZThlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BkY19hZG1hLmMKKysrIGIvZHJpdmVycy9zY3NpL3BkY19hZG1hLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9saWJhdGEuaD4KIAogI2RlZmluZSBEUlZfTkFNRQkicGRjX2FkbWEiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSIwLjAzIgorI2RlZmluZSBEUlZfVkVSU0lPTgkiMC4wNCIKIAogLyogbWFjcm8gdG8gY2FsY3VsYXRlIGJhc2UgYWRkcmVzcyBmb3IgQVRBIHJlZ3MgKi8KICNkZWZpbmUgQURNQV9BVEFfUkVHUyhiYXNlLHBvcnRfbm8pCSgoYmFzZSkgKyAoKHBvcnRfbm8pICogMHg0MCkpCkBAIC0xNTIsNiArMTUyLDcgQEAKIAkucHJvY19uYW1lCQk9IERSVl9OQU1FLAogCS5kbWFfYm91bmRhcnkJCT0gQURNQV9ETUFfQk9VTkRBUlksCiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKKwkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKIH07CiAKQEAgLTE2Nyw2ICsxNjgsNyBAQAogCS5xY19wcmVwCQk9IGFkbWFfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gYWRtYV9xY19pc3N1ZSwKIAkuZW5nX3RpbWVvdXQJCT0gYWRtYV9lbmdfdGltZW91dCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9tbWlvX2RhdGFfeGZlciwKIAkuaXJxX2hhbmRsZXIJCT0gYWRtYV9pbnRyLAogCS5pcnFfY2xlYXIJCT0gYWRtYV9pcnFfY2xlYXIsCiAJLnBvcnRfc3RhcnQJCT0gYWRtYV9wb3J0X3N0YXJ0LApAQCAtNDU1LDEzICs0NTcsMTMgQEAKIAkJCWNvbnRpbnVlOwogCQloYW5kbGVkID0gMTsKIAkJYWRtYV9lbnRlcl9yZWdfbW9kZShhcCk7Ci0JCWlmIChhcC0+ZmxhZ3MgJiAoQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCB8IEFUQV9GTEFHX05PSU5UUikpCisJCWlmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19ESVNBQkxFRCkKIAkJCWNvbnRpbnVlOwogCQlwcCA9IGFwLT5wcml2YXRlX2RhdGE7CiAJCWlmICghcHAgfHwgcHAtPnN0YXRlICE9IGFkbWFfc3RhdGVfcGt0KQogCQkJY29udGludWU7CiAJCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JCWlmIChxYyAmJiAoIShxYy0+dGYuY3RsICYgQVRBX05JRU4pKSkgeworCQlpZiAocWMgJiYgKCEocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpKSkgewogCQkJaWYgKChzdGF0dXMgJiAoYVBFUlIgfCBhUFNEIHwgYVVJUlEpKSkKIAkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX09USEVSOwogCQkJZWxzZSBpZiAocHAtPnBrdFswXSAhPSBjRE9ORSkKQEAgLTQ4MCwxMyArNDgyLDEzIEBACiAJZm9yIChwb3J0X25vID0gMDsgcG9ydF9ubyA8IGhvc3Rfc2V0LT5uX3BvcnRzOyArK3BvcnRfbm8pIHsKIAkJc3RydWN0IGF0YV9wb3J0ICphcDsKIAkJYXAgPSBob3N0X3NldC0+cG9ydHNbcG9ydF9ub107Ci0JCWlmIChhcCAmJiAoIShhcC0+ZmxhZ3MgJiAoQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCB8IEFUQV9GTEFHX05PSU5UUikpKSkgeworCQlpZiAoYXAgJiYgKCEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpKSkgewogCQkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKIAkJCXN0cnVjdCBhZG1hX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwogCQkJaWYgKCFwcCB8fCBwcC0+c3RhdGUgIT0gYWRtYV9zdGF0ZV9tbWlvKQogCQkJCWNvbnRpbnVlOwogCQkJcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKLQkJCWlmIChxYyAmJiAoIShxYy0+dGYuY3RsICYgQVRBX05JRU4pKSkgeworCQkJaWYgKHFjICYmICghKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKSkpIHsKIAogCQkJCS8qIGNoZWNrIG1haW4gc3RhdHVzLCBjbGVhcmluZyBJTlRSUSAqLwogCQkJCXU4IHN0YXR1cyA9IGF0YV9jaGVja19zdGF0dXMoYXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BsdXRvLmMgYi9kcml2ZXJzL3Njc2kvcGx1dG8uYwppbmRleCA0NjYyNGFiLi44M2E2NzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcGx1dG8uYworKysgYi9kcml2ZXJzL3Njc2kvcGx1dG8uYwpAQCAtMjcsNiArMjcsOSBAQAogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAKKyNkZWZpbmUgUlFfU0NTSV9CVVNZCQkweGZmZmYKKyNkZWZpbmUgUlFfU0NTSV9ET05FCQkweGZmZmUKKwogLyogI2RlZmluZSBQTFVUT19ERUJVRyAqLwogCiAjZGVmaW5lIHBsdXRvX3ByaW50ayBwcmludGsgKCJQTFVUTyAlczogIiwgZmMtPm5hbWUpOyBwcmludGsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMgYi9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jCmluZGV4IDVhNDhlNTUuLjY4MGY2MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTEyODAuYwpAQCAtMzk3LDMwICszOTcsNiBAQAogI2luY2x1ZGUgInFsMTI4MF9mdy5oIgogI2luY2x1ZGUgInFsMTA0MF9mdy5oIgogCi0KLS8qCi0gKiBNaXNzaW5nIFBDSSBJRCdzCi0gKi8KLSNpZm5kZWYgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTA4MAotI2RlZmluZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AxMDgwCTB4MTA4MAotI2VuZGlmCi0jaWZuZGVmIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDEyNDAKLSNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTI0MAkweDEyNDAKLSNlbmRpZgotI2lmbmRlZiBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AxMjgwCi0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDEyODAJMHgxMjgwCi0jZW5kaWYKLSNpZm5kZWYgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTAxNjAKLSNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTAxNjAJMHgxMDE2Ci0jZW5kaWYKLSNpZm5kZWYgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTIxNjAKLSNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTIxNjAJMHgxMjE2Ci0jZW5kaWYKLQotI2lmbmRlZiBQQ0lfVkVORE9SX0lEX0FNSQotI2RlZmluZSBQQ0lfVkVORE9SX0lEX0FNSSAgICAgICAgICAgICAgIDB4MTAxZQotI2VuZGlmCi0KICNpZm5kZWYgQklUU19QRVJfTE9ORwogI2Vycm9yICJCSVRTX1BFUl9MT05HIG5vdCBkZWZpbmVkISIKICNlbmRpZgpAQCAtNDIzOSwxNSArNDIxNSwxMiBAQAogewogCWNoYXIgKnNlcDsKIAlsb25nIHJldCA9IC0xOwotCWludCBpLCBsZW47Ci0KLQlsZW4gPSBzaXplb2Yoc2V0dXBfdG9rZW4pL3NpemVvZihzdHJ1Y3Qgc2V0dXBfdG9rZW5zKTsKKwlpbnQgaTsKIAogCXNlcCA9IHN0cmNocihzdHIsICc6Jyk7CiAKIAlpZiAoc2VwKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKyl7Ci0KKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2V0dXBfdG9rZW4pOyBpKyspIHsKIAkJCWlmICghc3RybmNtcChzZXR1cF90b2tlbltpXS50b2tlbiwgc3RyLCAoc2VwIC0gc3RyKSkpIHsKIAkJCQlyZXQgPSAgc2V0dXBfdG9rZW5baV0udmFsOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvS2NvbmZpZyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L0tjb25maWcKaW5kZXggZmY0MDkwNi4uOGM4NjViOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvS2NvbmZpZworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9LY29uZmlnCkBAIC0yNCw0OCArMjQsMyBAQAogCUZpcm13YXJlIGltYWdlcyBjYW4gYmUgcmV0cmlldmVkIGZyb206CiAKIAkJZnRwOi8vZnRwLnFsb2dpYy5jb20vb3V0Z29pbmcvbGludXgvZmlybXdhcmUvCi0KLQlOT1RFOiBUaGUgb3JpZ2luYWwgbWV0aG9kIG9mIGJ1aWxkaW5nIGZpcm13YXJlLWxvYWRlcgotCW1vZHVsZXMgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyB0aGUgZmlybXdhcmUtaW1hZ2VzIHdpbGwKLQliZSByZW1vdmVkIGZyb20gdGhlIGtlcm5lbCBzb3VyY2VzLgotCi1jb25maWcgU0NTSV9RTEEyWFhYX0VNQkVEREVEX0ZJUk1XQVJFCi0JYm9vbCAiICBVc2UgZmlybXdhcmUtbG9hZGVyIG1vZHVsZXMgKERFUFJFQ0FURUQpIgotCWRlcGVuZHMgb24gU0NTSV9RTEFfRkMKLQloZWxwCi0JICBUaGlzIG9wdGlvbiBvZmZlcnMgeW91IHRoZSBkZXByZWNhdGVkIGZpcm13YXJlLWxvYWRlcgotCSAgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBvYnNvbGV0ZWQgYnkgdGhlIHVzYWdlIG9mIHRoZQotCSAgRmlybXdhcmUgTG9hZGVyIGludGVyZmFjZSBpbiB0aGUgcWxhMnh4eCBkcml2ZXIuCi0KLWNvbmZpZyBTQ1NJX1FMQTIxWFgKLQl0cmlzdGF0ZSAiICBCdWlsZCBRTG9naWMgSVNQMjEwMCBmaXJtd2FyZS1tb2R1bGUiCi0JZGVwZW5kcyBvbiBTQ1NJX1FMQV9GQyAmJiBTQ1NJX1FMQTJYWFhfRU1CRURERURfRklSTVdBUkUKLQktLS1oZWxwLS0tCi0JVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFFMb2dpYyAyMXh4IChJU1AyMTAwKSBob3N0IGFkYXB0ZXIgZmFtaWx5LgotCi1jb25maWcgU0NTSV9RTEEyMlhYCi0JdHJpc3RhdGUgIiAgQnVpbGQgUUxvZ2ljIElTUDIyMDAgZmlybXdhcmUtbW9kdWxlIgotCWRlcGVuZHMgb24gU0NTSV9RTEFfRkMgJiYgU0NTSV9RTEEyWFhYX0VNQkVEREVEX0ZJUk1XQVJFCi0JLS0taGVscC0tLQotCVRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBRTG9naWMgMjJ4eCAoSVNQMjIwMCkgaG9zdCBhZGFwdGVyIGZhbWlseS4KLQotY29uZmlnIFNDU0lfUUxBMjMwMAotCXRyaXN0YXRlICIgIEJ1aWxkIFFMb2dpYyBJU1AyMzAwL0lTUDYzMTIgZmlybXdhcmUtbW9kdWxlIgotCWRlcGVuZHMgb24gU0NTSV9RTEFfRkMgJiYgU0NTSV9RTEEyWFhYX0VNQkVEREVEX0ZJUk1XQVJFCi0JLS0taGVscC0tLQotCVRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBRTG9naWMgMjMwMCAoSVNQMjMwMCwgSVNQMjMxMiBhbmQKLQlJU1A2MzEyKSBob3N0IGFkYXB0ZXIgZmFtaWx5LgotCi1jb25maWcgU0NTSV9RTEEyMzIyCi0JdHJpc3RhdGUgIiAgQnVpbGQgUUxvZ2ljIElTUDIzMjIvSVNQNjMyMiBmaXJtd2FyZS1tb2R1bGUiCi0JZGVwZW5kcyBvbiBTQ1NJX1FMQV9GQyAmJiBTQ1NJX1FMQTJYWFhfRU1CRURERURfRklSTVdBUkUKLQktLS1oZWxwLS0tCi0JVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFFMb2dpYyAyMzIyIChJU1AyMzIyIGFuZCBJU1A2MzIyKSBob3N0Ci0JYWRhcHRlciBmYW1pbHkuCi0KLWNvbmZpZyBTQ1NJX1FMQTI0WFgKLQl0cmlzdGF0ZSAiICBCdWlsZCBRTG9naWMgSVNQMjR4eCBmaXJtd2FyZS1tb2R1bGUiCi0JZGVwZW5kcyBvbiBTQ1NJX1FMQV9GQyAmJiBTQ1NJX1FMQTJYWFhfRU1CRURERURfRklSTVdBUkUKLQktLS1oZWxwLS0tCi0JVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFFMb2dpYyAyNHh4IChJU1AyNDIyIGFuZCBJU1AyNDMyKSBob3N0Ci0JYWRhcHRlciBmYW1pbHkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9NYWtlZmlsZSBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L01ha2VmaWxlCmluZGV4IGM4ZjY3MGUuLjQxMTY2M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L01ha2VmaWxlCkBAIC0xLDE4ICsxLDQgQEAKLUVYVFJBX0NGTEFHUyArPSAtRFVOSVFVRV9GV19OQU1FCi0KIHFsYTJ4eHgteSA6PSBxbGFfb3MubyBxbGFfaW5pdC5vIHFsYV9tYngubyBxbGFfaW9jYi5vIHFsYV9pc3IubyBxbGFfZ3MubyBcCi0JCXFsYV9kYmcubyBxbGFfc3VwLm8gcWxhX3JzY24ubyBxbGFfYXR0ci5vCisJCXFsYV9kYmcubyBxbGFfc3VwLm8gcWxhX2F0dHIubwogCiBvYmotJChDT05GSUdfU0NTSV9RTEFfRkMpICs9IHFsYTJ4eHgubwotCi1xbGEyMTAwLXkgOj0gcWwyMTAwLm8gcWwyMTAwX2Z3Lm8KLXFsYTIyMDAteSA6PSBxbDIyMDAubyBxbDIyMDBfZncubwotcWxhMjMwMC15IDo9IHFsMjMwMC5vIHFsMjMwMF9mdy5vCi1xbGEyMzIyLXkgOj0gcWwyMzIyLm8gcWwyMzIyX2Z3Lm8KLXFsYTI0MDAteSA6PSBxbDI0MDAubyBxbDI0MDBfZncubwotCi1vYmotJChDT05GSUdfU0NTSV9RTEEyMVhYKSArPSBxbGEyeHh4Lm8gcWxhMjEwMC5vCi1vYmotJChDT05GSUdfU0NTSV9RTEEyMlhYKSArPSBxbGEyeHh4Lm8gcWxhMjIwMC5vCi1vYmotJChDT05GSUdfU0NTSV9RTEEyMzAwKSArPSBxbGEyeHh4Lm8gcWxhMjMwMC5vCi1vYmotJChDT05GSUdfU0NTSV9RTEEyMzIyKSArPSBxbGEyeHh4Lm8gcWxhMjMyMi5vCi1vYmotJChDT05GSUdfU0NTSV9RTEEyNFhYKSArPSBxbGEyeHh4Lm8gcWxhMjQwMC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIxMDAuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjEwMC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWRiMjIzLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjEwMC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIFFMb2dpYyBGaWJyZSBDaGFubmVsIEhCQSBEcml2ZXIKLSAqIENvcHlyaWdodCAoQykgIDIwMDMgQ2hyaXN0b3BoIEhlbGx3aWcuCi0gKiBDb3B5cmlnaHQgKGMpICAyMDAzLTIwMDUgUUxvZ2ljIENvcnBvcmF0aW9uCi0gKgotICogU2VlIExJQ0VOU0UucWxhMnh4eCBmb3IgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgZGV0YWlscy4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLQotI2luY2x1ZGUgInFsYV9kZWYuaCIKLQotc3RhdGljIGNoYXIgcWxhX2RyaXZlcl9uYW1lW10gPSAicWxhMjEwMCI7Ci0KLWV4dGVybiB1bnNpZ25lZCBjaGFyICBmdzIxMDB0cF92ZXJzaW9uW107Ci1leHRlcm4gdW5zaWduZWQgY2hhciAgZncyMTAwdHBfdmVyc2lvbl9zdHJbXTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCBmdzIxMDB0cF9hZGRyMDE7Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMTAwdHBfY29kZTAxW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMTAwdHBfbGVuZ3RoMDE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcWxhX2Z3X2luZm8gcWxhX2Z3X3RibFtdID0gewotCXsKLQkJLmFkZHJlc3NpbmcJPSBGV19JTkZPX0FERFJfTk9STUFMLAotCQkuZndjb2RlCQk9ICZmdzIxMDB0cF9jb2RlMDFbMF0sCi0JCS5md2xlbgkJPSAmZncyMTAwdHBfbGVuZ3RoMDEsCi0JCS5md3N0YXJ0CT0gJmZ3MjEwMHRwX2FkZHIwMSwKLQl9LAotCi0JeyBGV19JTkZPX0FERFJfTk9NT1JFLCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBxbGFfYm9hcmRfaW5mbyBxbGFfYm9hcmRfdGJsID0gewotCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQotCS5pc3BfbmFtZQk9ICJJU1AyMTAwIiwKLQkuZndfaW5mbwk9IHFsYV9md190YmwsCi19OwotCi1zdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcWxhMjEwMF9wY2lfdGJsW10gPSB7Ci0JewotCQkudmVuZG9yCQk9IFBDSV9WRU5ET1JfSURfUUxPR0lDLAotCQkuZGV2aWNlCQk9IFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIxMDAsCi0JCS5zdWJ2ZW5kb3IJPSBQQ0lfQU5ZX0lELAotCQkuc3ViZGV2aWNlCT0gUENJX0FOWV9JRCwKLQkJLmRyaXZlcl9kYXRhCT0gKHVuc2lnbmVkIGxvbmcpJnFsYV9ib2FyZF90YmwsCi0JfSwKLQotCXswLCAwfSwKLX07Ci1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcWxhMjEwMF9wY2lfdGJsKTsKLQotc3RhdGljIGludCBfX2RldmluaXQKLXFsYTIxMDBfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCi17Ci0JcmV0dXJuIHFsYTJ4MDBfcHJvYmVfb25lKHBkZXYsCi0JICAgIChzdHJ1Y3QgcWxhX2JvYXJkX2luZm8gKilpZC0+ZHJpdmVyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBfX2RldmV4aXQKLXFsYTIxMDBfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKLXsKLQlxbGEyeDAwX3JlbW92ZV9vbmUocGRldik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBxbGEyMTAwX3BjaV9kcml2ZXIgPSB7Ci0JLm5hbWUJCT0gInFsYTIxMDAiLAotCS5pZF90YWJsZQk9IHFsYTIxMDBfcGNpX3RibCwKLQkucHJvYmUJCT0gcWxhMjEwMF9wcm9iZV9vbmUsCi0JLnJlbW92ZQkJPSBfX2RldmV4aXRfcChxbGEyMTAwX3JlbW92ZV9vbmUpLAotfTsKLQotc3RhdGljIGludCBfX2luaXQKLXFsYTIxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBwY2lfbW9kdWxlX2luaXQoJnFsYTIxMDBfcGNpX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotcWxhMjEwMF9leGl0KHZvaWQpCi17Ci0JcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZxbGEyMTAwX3BjaV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChxbGEyMTAwX2luaXQpOwotbW9kdWxlX2V4aXQocWxhMjEwMF9leGl0KTsKLQotTU9EVUxFX0FVVEhPUigiUUxvZ2ljIENvcnBvcmF0aW9uIik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIlFMb2dpYyBJU1AyMXh4IEZDLVNDU0kgSG9zdCBCdXMgQWRhcHRlciBkcml2ZXIiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9WRVJTSU9OKFFMQTJYWFhfVkVSU0lPTik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIxMDBfZncuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjEwMF9mdy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjAwNjE2Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjEwMF9mdy5jCisrKyAvZGV2L251bGwKQEAgLTEsNDg0OCArMCwwIEBACi0vKgotICogUUxvZ2ljIEZpYnJlIENoYW5uZWwgSEJBIERyaXZlcgotICogQ29weXJpZ2h0IChjKSAgMjAwMy0yMDA1IFFMb2dpYyBDb3Jwb3JhdGlvbgotICoKLSAqIFNlZSBMSUNFTlNFLnFsYTJ4eHggZm9yIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGRldGFpbHMuCi0gKi8KLQotLyoKLSAqCUZpcm13YXJlIFZlcnNpb24gMS4xOS4yNSAoMTM6MTIgRGVjIDEwLCAyMDAzKQotICovCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdW5zaWduZWQgc2hvcnQgZncyMTAwdHBfdmVyc2lvbiA9IDEqMTAyNCsxOTsKLSNlbHNlCi11bnNpZ25lZCBzaG9ydCByaXNjX2NvZGVfdmVyc2lvbiA9IDEqMTAyNCsxOTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIGNoYXIgZncyMTAwdHBfdmVyc2lvbl9zdHJbXSA9IHsxLDE5LDI1fTsKLSNlbHNlCi11bnNpZ25lZCBjaGFyIGZpcm13YXJlX3ZlcnNpb25bXSA9IHsxLDE5LDI1fTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLSNkZWZpbmUgZncyMTAwdHBfVkVSU0lPTl9TVFJJTkcgIjEuMTkuMjUiCi0jZWxzZQotI2RlZmluZSBGV19WRVJTSU9OX1NUUklORyAiMS4xOS4yNSIKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjEwMHRwX2FkZHIwMSA9IDB4MTAwMCA7Ci0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlX2FkZHIwMSA9IDB4MTAwMCA7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIxMDB0cF9jb2RlMDFbXSA9IHsgCi0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlMDFbXSA9IHsgCi0jZW5kaWYKLQkweDAwNzgsIDB4MTAyZCwgMHgwMDAwLCAweDk2MDEsIDB4MDAwMCwgMHgwMDAxLCAweDAwMTMsIDB4MDAxOSwKLQkweDAwMTcsIDB4MjA0MywgMHg0ZjUwLCAweDU5NTIsIDB4NDk0NywgMHg0ODU0LCAweDIwMzIsIDB4MzAzMCwKLQkweDMxMjAsIDB4NTE0YywgMHg0ZjQ3LCAweDQ5NDMsIDB4MjA0MywgMHg0ZjUyLCAweDUwNGYsIDB4NTI0MSwKLQkweDU0NDksIDB4NGY0ZSwgMHgyMDQ5LCAweDUzNTAsIDB4MzIzMSwgMHgzMDMwLCAweDIwNDYsIDB4Njk3MiwKLQkweDZkNzcsIDB4NjE3MiwgMHg2NTIwLCAweDIwNTYsIDB4NjU3MiwgMHg3MzY5LCAweDZmNmUsIDB4MjAzMCwKLQkweDMxMmUsIDB4MzEzOSwgMHgyMDIwLCAweDIwMjAsIDB4MjQwMCwgMHgyMDkxLCAweDIwMDAsIDB4MjBjMSwKLQkweDAwMjEsIDB4MjAzOSwgMHhmZmZmLCAweDIwMTksIDB4YWFhYSwgMHgyNzYwLCAweDIwNjksIDB4N2ZmZiwKLQkweDIwYzEsIDB4MDAyMCwgMHgyYzJjLCAweDJkMzQsIDB4Mjc2MiwgMHgyMzZhLCAweDJjMjQsIDB4MmQwNCwKLQkweDI2NmEsIDB4MjU2MiwgMHhhNDA2LCAweDAwYzAsIDB4MTA1MiwgMHgyMGMxLCAweDAwMjEsIDB4MmMyYywKLQkweDIzNjIsIDB4MmMwNCwgMHgyNTYyLCAweGEzMDYsIDB4MDA0MCwgMHgxMDUyLCAweDIwYzEsIDB4MDAyMCwKLQkweDIwMzksIDB4OGZmZiwgMHgyMGExLCAweGFlMDAsIDB4MjcwOCwgMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwKLQkweDgxMGQsIDB4YTE4YywgMHgwMDBmLCAweDIwMDEsIDB4MDAwYSwgMHhhMTEyLCAweGEwMGUsIDB4MjFhOCwKLQkweDQxYTQsIDB4MzQwMCwgMHg4MjExLCAweDAwYzAsIDB4MTA1ZiwgMHgyNzA4LCAweDM0MDAsIDB4YTEwMiwKLQkweDAwNDAsIDB4MTA2ZiwgMHgwMDQ4LCAweDEwNmYsIDB4MjBhOCwgMHhhMDBlLCAweDQxYTQsIDB4MjBhMSwKLQkweGE2MDEsIDB4MjAwOSwgMHgwMDAwLCAweDIwYTksIDB4MDdmZiwgMHg0MWE0LCAweDM0MDAsIDB4MjBjOSwKLQkweGFiZmYsIDB4MjA1OSwgMHgwMDAwLCAweDJiNzgsIDB4NzgyMywgMHgwMDA0LCAweDIwODksIDB4MjVjNywKLQkweDIwNTEsIDB4YTcwMCwgMHgyYTcwLCAweDc3NjIsIDB4YTc4NiwgMHg4ZmZmLCAweDAwNDAsIDB4MTA5MiwKLQkweDcwNWYsIDB4Y2UwMCwgMHg3MDViLCAweGNkZjEsIDB4NzA2NywgMHgwMjAwLCAweDcwNmIsIDB4MDIwMCwKLQkweDAwNzgsIDB4MTA5YSwgMHg3MDViLCAweGJlMDEsIDB4NzA2NywgMHgwMTAwLCAweDcwNmIsIDB4MDEwMCwKLQkweDcwNWYsIDB4YmUwMCwgMHgxMDc4LCAweDEyZGYsIDB4MTA3OCwgMHgxM2NhLCAweDEwNzgsIDB4MTU3NywKLQkweDEwNzgsIDB4MWNlOSwgMHgxMDc4LCAweDQyZWMsIDB4MTA3OCwgMHg3NmJmLCAweDEwNzgsIDB4MTM1NSwKLQkweDEwNzgsIDB4MmFjMCwgMHgxMDc4LCAweDRlOTMsIDB4MTA3OCwgMHg0OWEzLCAweDEwNzgsIDB4NTk0YSwKLQkweDEwNzgsIDB4MjI2MywgMHgxMDc4LCAweDVjNDMsIDB4MTA3OCwgMHg1NDg1LCAweDEwNzgsIDB4MjE2MiwKLQkweDEwNzgsIDB4MjI0MCwgMHgyMDkxLCAweDMwMDksIDB4NzgyMywgMHgwMDAwLCAweDAwOTAsIDB4MTBjZiwKLQkweDc4MjAsIDB4YTA4NiwgMHgwMDAyLCAweDAwYzAsIDB4MTBjZiwgMHg3ODIzLCAweDQwMDAsIDB4MDA2OCwKLQkweDEwYzcsIDB4NzgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NTAwMCwgMHgyMDkxLCAweDQwODAsIDB4MmE3MCwKLQkweDcwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDAxN2YsIDB4MjAwMywgMHgwMDAwLCAweDJhNzAsIDB4NzAwMCwKLQkweGEwOGUsIDB4MDAwMywgMHgwMGMwLCAweDEwZWYsIDB4MTA3OCwgMHgzNjVlLCAweDEwNzgsIDB4MmFlOCwKLQkweDEwNzgsIDB4NGVlMywgMHgxMDc4LCAweDRiNjYsIDB4MjAwOSwgMHgwMTAwLCAweDIxMDQsIDB4YTA4MiwKLQkweDAwMDIsIDB4MDA0OCwgMHgxMGYzLCAweDEwNzgsIDB4NTk2NiwgMHgwMDc4LCAweDEwZDYsIDB4MTA3OSwKLQkweDEwZjcsIDB4MDA3OCwgMHgxMGRjLCAweDEwNzgsIDB4NzE5NywgMHgwMDc4LCAweDEwZWIsIDB4MTEwMSwKLQkweDExMDIsIDB4MTFiZSwgMHgxMGZmLCAweDEyNDYsIDB4MTJkYywgMHgxMmRkLCAweDEyZGUsIDB4MTA3OCwKLQkweDEzMzIsIDB4MDA3YywgMHgxMjdlLCAweDBmN2UsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDAsIDB4YTA4NiwKLQkweDAwMDEsIDB4MDBjMCwgMHgxMTk4LCAweDEwNzgsIDB4M2FlYywgMHgyMDc5LCAweDAxMDAsIDB4Nzg0NCwKLQkweGEwMDUsIDB4MDBjMCwgMHgxMTk4LCAweDIwMTEsIDB4NDFkYywgMHgxMDc4LCAweDVhNDUsIDB4MTA3OCwKLQkweDFhZGYsIDB4NzgwZiwgMHgwMGZmLCAweDc4NDAsIDB4YTA4NCwgMHhmZmZiLCAweDc4NDIsIDB4MjAxMSwKLQkweDgwMTAsIDB4NzNjNCwgMHgxMDc4LCAweDM2MWIsIDB4MjAwMSwgMHhmZmZmLCAweDEwNzgsIDB4NWFlNiwKLQkweDcyM2MsIDB4YzI4NCwgMHg3MjNlLCAweDIwMDEsIDB4YTcwYywgMHgyMDE0LCAweGMyYWMsIDB4MjIwMiwKLQkweDEwNzgsIDB4NmY5ZiwgMHgyMDExLCAweDAwMDQsIDB4MTA3OCwgMHg4ZDJiLCAweDEwNzgsIDB4NDg5ZSwKLQkweDEwNzgsIDB4NDJkNCwgMHgwMDQwLCAweDExNDQsIDB4NzA4NywgMHgwMDAxLCAweDcwYmYsIDB4MDAwMCwKLQkweDEwNzgsIDB4M2M5ZSwgMHgwMDc4LCAweDExOTgsIDB4MTA3OCwgMHg0OTY3LCAweDAwNDAsIDB4MTE0ZCwKLQkweDdhMGMsIDB4YzJiNCwgMHg3YTBlLCAweDAwNzgsIDB4MTE1OSwgMHgxMDc4LCAweDkwYjYsIDB4NzBjYywKLQkweGQwOWMsIDB4MDBjMCwgMHgxMTU5LCAweDcwOTgsIDB4YTAwNSwgMHgwMDQwLCAweDExNTksIDB4MTA3OCwKLQkweDQyYjgsIDB4NzBkNywgMHgwMDAwLCAweDcwZDMsIDB4MDAwMCwgMHg3MmNjLCAweDIwNzksIDB4YTc1MiwKLQkweDc4MDQsIDB4ZDBhYywgMHgwMDQwLCAweDExNjUsIDB4YzI5NSwgMHg3MmNlLCAweGEyOTYsIDB4MDAwNCwKLQkweDAwNDAsIDB4MTE4NiwgMHgyMDExLCAweDAwMDEsIDB4MTA3OCwgMHg4ZDJiLCAweDcwOTMsIDB4MDAwMCwKLQkweDcwOTcsIDB4ZmZmZiwgMHg3MDAzLCAweDAwMDIsIDB4MGY3ZiwgMHgxMDc4LCAweDI2NzcsIDB4MjAxMSwKLQkweDAwMDUsIDB4MTA3OCwgMHg3MGUwLCAweDEwNzgsIDB4NjJkMSwgMHgwYzdlLCAweDIwNjEsIDB4MDEwMCwKLQkweDYwZTMsIDB4MDAwOCwgMHgwYzdmLCAweDEyN2YsIDB4MDA3OCwgMHgxMTlhLCAweDcwOTMsIDB4MDAwMCwKLQkweDcwOTcsIDB4ZmZmZiwgMHg3MDAzLCAweDAwMDIsIDB4MjAxMSwgMHgwMDA1LCAweDEwNzgsIDB4NzBlMCwKLQkweDEwNzgsIDB4NjJkMSwgMHgwYzdlLCAweDIwNjEsIDB4MDEwMCwgMHg2MGUzLCAweDAwMDgsIDB4MGM3ZiwKLQkweDBmN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDBjN2UsIDB4MjBhOSwgMHgwMDgyLCAweDIwMDksIDB4MDA3ZSwKLQkweDAxN2UsIDB4MDI3ZSwgMHgwMzdlLCAweDIxMTAsIDB4MDI3ZSwgMHgyMDE5LCAweDAwMjksIDB4MTA3OCwKLQkweDczZDAsIDB4MDI3ZiwgMHgxMDc4LCAweGE1MDEsIDB4MDM3ZiwgMHgwMjdmLCAweDAxN2YsIDB4MTA3OCwKLQkweDI5OGUsIDB4ODEwOCwgMHgwMGYwLCAweDExYTAsIDB4MGM3ZiwgMHg3MDZmLCAweDAwMDAsIDB4NzA3MCwKLQkweGEwODQsIDB4MDBmZiwgMHg3MDcyLCAweDcwOWIsIDB4MDAwMCwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAwMCwgMHhhMDg2LCAweDAwMDIsIDB4MDBjMCwgMHgxMjQ0LCAweDcwOTQsIDB4YTA4NiwKLQkweGZmZmYsIDB4MDA0MCwgMHgxMWQxLCAweDEwNzgsIDB4MjY3NywgMHgxMDc4LCAweDYyZDEsIDB4MDA3OCwKLQkweDEyNDQsIDB4NzBjYywgMHhkMDljLCAweDAwNDAsIDB4MTFmZCwgMHhkMDg0LCAweDAwNDAsIDB4MTFmZCwKLQkweDBmN2UsIDB4MjA3OSwgMHgwMTAwLCAweDc5MGMsIDB4YzFiNSwgMHg3OTBlLCAweDBmN2YsIDB4ZDA4YywKLQkweDAwNDAsIDB4MTFmZCwgMHg3MGQwLCAweGEwODYsIDB4ZmZmZiwgMHgwMDQwLCAweDExZjksIDB4MTA3OCwKLQkweDI3ZjcsIDB4MTA3OCwgMHg2MmQxLCAweDcwY2MsIDB4ZDA5NCwgMHgwMGMwLCAweDEyNDQsIDB4MjAxMSwKLQkweDAwMDEsIDB4MjAxOSwgMHgwMDAwLCAweDEwNzgsIDB4MjgyZiwgMHgxMDc4LCAweDYyZDEsIDB4MDA3OCwKLQkweDEyNDQsIDB4NzBkNCwgMHhhMDA1LCAweDAwYzAsIDB4MTI0NCwgMHg3MDkwLCAweGEwMDUsIDB4MDBjMCwKLQkweDEyNDQsIDB4MTA3OCwgMHg0OTY3LCAweDAwYzAsIDB4MTI0NCwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYWMsIDB4MDA0MCwgMHgxMjI3LCAweDE1N2UsIDB4MGM3ZSwgMHgyMGE5LCAweDAwN2YsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDE3ZSwgMHgxMDc4LCAweDQ1YzQsIDB4MDBjMCwgMHgxMjFhLCAweDYwMDAsIDB4ZDBlYywKLQkweDAwYzAsIDB4MTIyMiwgMHgwMTdmLCAweDgxMDgsIDB4MDBmMCwgMHgxMjExLCAweDBjN2YsIDB4MTU3ZiwKLQkweDAwNzgsIDB4MTIyNywgMHgwMTdmLCAweDBjN2YsIDB4MTU3ZiwgMHgwMDc4LCAweDEyNDQsIDB4NzAwMywKLQkweDAwMDMsIDB4NzA5NywgMHhmZmZmLCAweDIwMDEsIDB4MDAwMCwgMHgxMDc4LCAweDI0ZTgsIDB4MTA3OCwKLQkweDM2OTksIDB4MjAwMSwgMHhhOWIyLCAweDIwMDQsIDB4YTA4NiwgMHgwMDA1LCAweDAwYzAsIDB4MTIzYywKLQkweDIwMTEsIDB4MDAwMCwgMHgxMDc4LCAweDcwZTAsIDB4MjAxMSwgMHgwMDAwLCAweDEwNzgsIDB4NzBlYSwKLQkweDEwNzgsIDB4NjJkMSwgMHgxMDc4LCAweDYzOWIsIDB4MTI3ZiwgMHgwMDdjLCAweDAxN2UsIDB4MGY3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzksIDB4MDEwMCwgMHgyMDA5LCAweDAwZjcsIDB4MTA3OCwKLQkweDQyYTEsIDB4Nzk0MCwgMHhhMThjLCAweDAwMTAsIDB4Nzk0MiwgMHg3OTI0LCAweGQxYjQsIDB4MDA0MCwKLQkweDEyNWIsIDB4NzgyNywgMHgwMDQwLCAweGQxOWMsIDB4MDA0MCwgMHgxMjYwLCAweDc4MjcsIDB4MDAwOCwKLQkweDAwN2UsIDB4MDM3ZSwgMHgxNTdlLCAweGEwMDYsIDB4MTA3OCwgMHg1YWU2LCAweDc5MDAsIDB4YTE4YSwKLQkweDAwMDMsIDB4MDA1MCwgMHgxMjg5LCAweDc5NTQsIDB4ZDFhYywgMHgwMGMwLCAweDEyODksIDB4MjAwOSwKLQkweDAwZjgsIDB4MTA3OCwgMHg0MmExLCAweDc4NDMsIDB4MDA5MCwgMHg3ODQzLCAweDAwMTAsIDB4MjBhOSwKLQkweDA5YzQsIDB4NzgyMCwgMHhkMDljLCAweDAwYzAsIDB4MTI4MSwgMHg3ODI0LCAweGQwYWMsIDB4MDBjMCwKLQkweDEyY2EsIDB4MDBmMCwgMHgxMjc5LCAweDIwMDEsIDB4MDAwMSwgMHgxMDc4LCAweDI0ZTgsIDB4MDA3OCwKLQkweDEyZDUsIDB4Nzg1MywgMHgwMDAwLCAweDc4MmYsIDB4MDAyMCwgMHgyMGE5LCAweDAwNTAsIDB4MDBlMCwKLQkweDEyOGYsIDB4MjA5MSwgMHg2MDAwLCAweDAwZjAsIDB4MTI4ZiwgMHg3ODUzLCAweDA0MDAsIDB4NzgyZiwKLQkweDAwMDAsIDB4MjAwOSwgMHgwMGY4LCAweDEwNzgsIDB4NDJhMSwgMHgyMGE5LCAweDAwMGUsIDB4MDAwNSwKLQkweDAwZjAsIDB4MTI5ZiwgMHg3ODUzLCAweDE0MDAsIDB4Nzg0MywgMHgwMDkwLCAweDc4NDMsIDB4MDAxMCwKLQkweDIwMTksIDB4NjFhOCwgMHg3ODU0LCAweDAwMDUsIDB4MDAwNSwgMHhkMDhjLCAweDAwNDAsIDB4MTJiNCwKLQkweDc4MjQsIDB4ZDBhYywgMHgwMGMwLCAweDEyY2EsIDB4ODMxOSwgMHgwMGMwLCAweDEyYWEsIDB4MjAwOSwKLQkweGE3MzIsIDB4MjEwNCwgMHg4MDAwLCAweDIwMGEsIDB4YTA4NCwgMHhmZmYwLCAweDAwNDAsIDB4MTJjNCwKLQkweDIwMGIsIDB4MDAwMCwgMHgxMDc4LCAweDI1ODgsIDB4MjAwMSwgMHgwMDAxLCAweDEwNzgsIDB4MjRlOCwKLQkweDAwNzgsIDB4MTJkMywgMHgyMDAxLCAweGE3MzIsIDB4MjAwMywgMHgwMDAwLCAweDc4MjgsIDB4YzA5ZCwKLQkweDc4MmEsIDB4NzgyNywgMHgwMDQ4LCAweDc4NTMsIDB4MDQwMCwgMHgxNTdmLCAweDAzN2YsIDB4MDA3ZiwKLQkweDEyN2YsIDB4MGY3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4MmE3MCwKLQkweDIwNjEsIDB4YTlhZCwgMHgyMDYzLCAweDAwMDEsIDB4NjAwNywgMHgwMDEzLCAweDYwMGIsIDB4MDAxOSwKLQkweDYwMGYsIDB4MDAxNywgMHgyMDA5LCAweDAxMDAsIDB4MjEwNCwgMHhhMDgyLCAweDAwMDIsIDB4MDA0OCwKLQkweDEyZjUsIDB4NzA1MywgMHhmZmZmLCAweDAwNzgsIDB4MTJmNywgMHg3MDUzLCAweDAwMDAsIDB4NzA1NywKLQkweGZmZmYsIDB4NzA2ZiwgMHgwMDAwLCAweDcwNzMsIDB4MDAwMCwgMHgxMDc4LCAweDkwYjYsIDB4MjA2MSwKLQkweGE5OGQsIDB4NjAwMywgMHgwOTA5LCAweDYwMDcsIDB4MDAwMCwgMHg2MDBiLCAweDg4MDAsIDB4NjAwZiwKLQkweDAyMDAsIDB4NjAxMywgMHgwMGZmLCAweDYwMTcsIDB4MDAwMywgMHg2MDFiLCAweDAwMDAsIDB4NjAxZiwKLQkweDA3ZDAsIDB4MjA2MSwgMHhhOTk1LCAweDYwMDMsIDB4ODAwMCwgMHg2MDA3LCAweDAwMDAsIDB4NjAwYiwKLQkweDAwMDAsIDB4NjAwZiwgMHgwMjAwLCAweDYwMTMsIDB4MDBmZiwgMHg2MDE3LCAweDAwMDAsIDB4NjAxYiwKLQkweDAwMDEsIDB4NjAxZiwgMHgwMDAwLCAweDIwNjEsIDB4YTlhNSwgMHg2MDAzLCAweDUxNGMsIDB4NjAwNywKLQkweDRmNDcsIDB4NjAwYiwgMHg0OTQzLCAweDYwMGYsIDB4MjAyMCwgMHgyMDAxLCAweGE3MjYsIDB4MjAwMywKLQkweDAwMDAsIDB4MDA3YywgMHgyMDkxLCAweDgwMDAsIDB4MDA2OCwgMHgxMzM0LCAweDAwN2UsIDB4MDE3ZSwKLQkweDIwNzksIDB4MDAwMCwgMHg3ODE4LCAweGQwODQsIDB4MDBjMCwgMHgxMzNhLCAweDAxN2YsIDB4NzkyZSwKLQkweDAwN2YsIDB4NzgyYSwgMHgwMDdmLCAweDc4MjYsIDB4MzkwMCwgMHg3ODNhLCAweDc4MjMsIDB4ODAwMiwKLQkweDc4MWIsIDB4MDAwMSwgMHgyMDkxLCAweDUwMDAsIDB4MjA5MSwgMHg0MDgwLCAweDIwNzksIDB4YTcwMCwKLQkweDc4MDMsIDB4MDAwNSwgMHgwMDc4LCAweDEzNTIsIDB4MDA3YywgMHgyMDcxLCAweGE3MDAsIDB4NzE1YywKLQkweDcxMmUsIDB4MjAyMSwgMHgwMDAxLCAweGExOTAsIDB4MDAyZCwgMHhhMjk4LCAweDAwMmQsIDB4MDA0OCwKLQkweDEzNmIsIDB4NzA2MCwgMHhhMzAyLCAweDAwYzgsIDB4MTM2YiwgMHgyMjBhLCAweDIyMDgsIDB4MjMxMCwKLQkweDg0MjAsIDB4MDA3OCwgMHgxMzVkLCAweDIwMGIsIDB4MDAwMCwgMHg3NGFhLCAweDc0YWUsIDB4MDA3YywKLQkweDBlN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHhhNzAwLCAweDcwYWMsIDB4YTBlYSwKLQkweDAwMTAsIDB4MDBjOCwgMHgxMzdlLCAweGEwNmUsIDB4MDA3OCwgMHgxMzg4LCAweDgwMDEsIDB4NzBhZSwKLQkweDcwMmMsIDB4MjA2OCwgMHgyZDA0LCAweDcwMmUsIDB4MjA2YiwgMHgwMDAwLCAweDY4MDcsIDB4MDAwMCwKLQkweDEyN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwgMHhhNzAwLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzBhYywgMHg4MDAxLCAweDAwYzgsIDB4MTM5OCwgMHhhMDZlLCAweDAwNzgsIDB4MTNhMSwKLQkweDcwYWUsIDB4NzAyYywgMHgyMDY4LCAweDJkMDQsIDB4NzAyZSwgMHgyMDZiLCAweDAwMDAsIDB4NjgwNywKLQkweDAwMDAsIDB4MTI3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MGU3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YTcwMCwgMHg3MDJjLCAweDIwNmEsIDB4MmQwMCwgMHg3MDJlLCAweDcwYWMsIDB4ODAwMCwKLQkweDcwYWUsIDB4MTI3ZiwgMHgwZTdmLCAweDAwN2MsIDB4OGRmZiwgMHgwMDQwLCAweDEzYzAsIDB4NjgwNCwKLQkweDY4MDcsIDB4MDAwMCwgMHgwMDdlLCAweDEwNzgsIDB4MTNhNCwgMHgwZDdmLCAweDAwNzgsIDB4MTNiNCwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE3MDAsIDB4NzBhYywgMHhhMDhhLCAweDAwMTAsIDB4YTAwZCwKLQkweDBlN2YsIDB4MDA3YywgMHgwZTdlLCAweDIwNzEsIDB4YTlkNiwgMHg3MDA3LCAweDAwMDAsIDB4NzAxYiwKLQkweDAwMDAsIDB4NzAxZiwgMHgwMDAwLCAweDIwNzEsIDB4MDAwMCwgMHg3MDEwLCAweGEwODUsIDB4ODAwNCwKLQkweDcwMTIsIDB4MGU3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDBlN2UsIDB4MjI3MCwKLQkweDcwMGIsIDB4MDAwMCwgMHgyMDcxLCAweGE5ZDYsIDB4NzAxOCwgMHhhMDg4LCAweGE5ZGYsIDB4MjIwYSwKLQkweDgwMDAsIDB4YTA4NCwgMHgwMDA3LCAweDcwMWEsIDB4NzAwNCwgMHhhMDA1LCAweDAwYzAsIDB4MTNmNiwKLQkweDBmN2UsIDB4MjA3OSwgMHgwMDEwLCAweDEwNzgsIDB4MTQwOCwgMHgwZjdmLCAweDBlN2YsIDB4MTI3ZiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE5ZDYsIDB4NzAwNCwgMHhhMDA1LCAweDAwYzAsIDB4MTQwNiwKLQkweDBmN2UsIDB4MjA3OSwgMHgwMDEwLCAweDEwNzgsIDB4MTQwOCwgMHgwZjdmLCAweDBlN2YsIDB4MDA3YywKLQkweDcwMDAsIDB4MDA3OSwgMHgxNDBiLCAweDE0MGYsIDB4MTQ3OSwgMHgxNDk2LCAweDE0OTYsIDB4NzAxOCwKLQkweDcxMWMsIDB4YTEwNiwgMHgwMGMwLCAweDE0MTcsIDB4NzAwNywgMHgwMDAwLCAweDAwN2MsIDB4MGQ3ZSwKLQkweGExODAsIDB4YTlkZiwgMHgyMDA0LCAweDcwMGEsIDB4MjA2OCwgMHg4MTA4LCAweGExOGMsIDB4MDAwNywKLQkweDcxMWUsIDB4NzgwMywgMHgwMDI2LCAweDY4MjQsIDB4NzgzMiwgMHg2ODI4LCAweDc4MzYsIDB4NjgyYywKLQkweDc4M2EsIDB4NjgzMCwgMHg3ODNlLCAweDY4MTAsIDB4NzAwZSwgMHg2ODBjLCAweDcwMTYsIDB4NjgwNCwKLQkweDBkN2YsIDB4ZDA4NCwgMHgwMDQwLCAweDE0MzksIDB4NzAwNywgMHgwMDAxLCAweDEwNzgsIDB4MTQzZSwKLQkweDAwN2MsIDB4NzAwNywgMHgwMDAyLCAweDEwNzgsIDB4MTQ1NCwgMHgwMDdjLCAweDAxN2UsIDB4MDI3ZSwKLQkweDcxMGMsIDB4MjAxMSwgMHgwMDQwLCAweGExODIsIDB4MDA0MCwgMHgwMGM4LCAweDE0NDksIDB4MjExMCwKLQkweGEwMDYsIDB4NzAwZSwgMHg3MjEyLCAweDgyMDMsIDB4NzgyMiwgMHg3ODAzLCAweDAwMjAsIDB4NzgwMywKLQkweDAwNDEsIDB4MDI3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MDE3ZSwgMHgwMjdlLCAweDEzN2UsIDB4MTQ3ZSwKLQkweDE1N2UsIDB4NzAxNCwgMHgyMDk4LCAweDIwYTEsIDB4MDAxNCwgMHg3ODAzLCAweDAwMjYsIDB4NzEwYywKLQkweDIwMTEsIDB4MDA0MCwgMHhhMTgyLCAweDAwNDAsIDB4MDBjOCwgMHgxNDY4LCAweDIxMTAsIDB4YTAwNiwKLQkweDcwMGUsIDB4MjJhOCwgMHg1M2E2LCAweDgyMDMsIDB4NzgyMiwgMHg3ODAzLCAweDAwMjAsIDB4MzMwMCwKLQkweDcwMTYsIDB4NzgwMywgMHgwMDAxLCAweDE1N2YsIDB4MTQ3ZiwgMHgxMzdmLCAweDAyN2YsIDB4MDE3ZiwKLQkweDAwN2MsIDB4MTM3ZSwgMHgxNDdlLCAweDE1N2UsIDB4MjA5OSwgMHhhN2ZhLCAweDIwYTEsIDB4MDAxOCwKLQkweDIwYTksIDB4MDAwOCwgMHg1M2EzLCAweDc4MDMsIDB4MDAyMCwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDc4MDMsIDB4MDA0MSwgMHg3MDA3LCAweDAwMDMsIDB4NzAwMCwgMHhjMDg0LCAweDcwMDIsIDB4NzAwYiwKLQkweGE3ZjUsIDB4MTI3ZiwgMHgxNTdmLCAweDE0N2YsIDB4MTM3ZiwgMHgwMDdjLCAweDEzN2UsIDB4MTQ3ZSwKLQkweDE1N2UsIDB4MjAwMSwgMHhhODI5LCAweDIwOWMsIDB4MjBhMSwgMHgwMDE0LCAweDc4MDMsIDB4MDAyNiwKLQkweDIwMDEsIDB4YTgyYSwgMHgyMGFjLCAweDUzYTYsIDB4MjA5OSwgMHhhODJiLCAweDIwYTEsIDB4MDAxOCwKLQkweDIwYTksIDB4MDAwOCwgMHg1M2EzLCAweDc4MDMsIDB4MDAyMCwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDc4MDMsIDB4MDAwMSwgMHg3MDA3LCAweDAwMDQsIDB4NzAwMCwgMHhjMDhjLCAweDcwMDIsIDB4NzAwYiwKLQkweGE4MjYsIDB4MTI3ZiwgMHgxNTdmLCAweDE0N2YsIDB4MTM3ZiwgMHgwMDdjLCAweDAxN2UsIDB4MGU3ZSwKLQkweDIwNzEsIDB4YTlkNiwgMHgwZjdlLCAweDIwNzksIDB4MDAxMCwgMHg3OTA0LCAweDc4MDMsIDB4MDAwMiwKLQkweGQxZmMsIDB4MDA0MCwgMHgxNGQwLCAweGExOGMsIDB4MDcwMCwgMHg3MDA0LCAweDEwNzksIDB4MTRkNCwKLQkweDBmN2YsIDB4MGU3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MTQwOCwgMHgxNGRjLCAweDE1MDksIDB4MTUzMSwKLQkweDE1NjQsIDB4MTRkYSwgMHgwMDc4LCAweDE0ZGEsIDB4YTE4YywgMHgwNzAwLCAweDAwYzAsIDB4MTUwMiwKLQkweDEzN2UsIDB4MTQ3ZSwgMHgxNTdlLCAweDcwMTQsIDB4MjBhMCwgMHgyMDk5LCAweDAwMTQsIDB4NzgwMywKLQkweDAwNDAsIDB4NzAxMCwgMHgyMGE4LCAweDUzYTUsIDB4MzQwMCwgMHg3MDE2LCAweDE1N2YsIDB4MTQ3ZiwKLQkweDEzN2YsIDB4NzAwYywgMHhhMDA1LCAweDAwNDAsIDB4MTUxZSwgMHgxMDc4LCAweDE0M2UsIDB4MDA3YywKLQkweDcwMDgsIDB4YTA4MCwgMHgwMDAyLCAweDIwMDMsIDB4MDEwMCwgMHg3MDA3LCAweDAwMDAsIDB4MTA3OCwKLQkweDE0MDgsIDB4MDA3YywgMHg3MDA4LCAweGEwODAsIDB4MDAwMiwgMHgyMDAzLCAweDAyMDAsIDB4MDA3OCwKLQkweDE0ZmQsIDB4YTE4YywgMHgwNzAwLCAweDAwYzAsIDB4MTUxNCwgMHg3MDBjLCAweGEwMDUsIDB4MDA0MCwKLQkweDE1MWUsIDB4MTA3OCwgMHgxNDU0LCAweDAwN2MsIDB4NzAwOCwgMHhhMDgwLCAweDAwMDIsIDB4MjAwMywKLQkweDAyMDAsIDB4NzAwNywgMHgwMDAwLCAweDEwNzgsIDB4MTQwOCwgMHgwMDdjLCAweDBkN2UsIDB4NzAwOCwKLQkweDIwNjgsIDB4NzgzMCwgMHg2ODI2LCAweDc4MzQsIDB4NjgyYSwgMHg3ODM4LCAweDY4MmUsIDB4NzgzYywKLQkweDY4MzIsIDB4NjgwYiwgMHgwMTAwLCAweDBkN2YsIDB4NzAwNywgMHgwMDAwLCAweDEwNzgsIDB4MTQwOCwKLQkweDAwN2MsIDB4YTE4YywgMHgwNzAwLCAweDAwYzAsIDB4MTU1ZSwgMHgxMzdlLCAweDE0N2UsIDB4MTU3ZSwKLQkweDIwMDEsIDB4YTdmOCwgMHgyMDA0LCAweGEwODAsIDB4MDAwZCwgMHgyMGEwLCAweDIwOTksIDB4MDAxNCwKLQkweDc4MDMsIDB4MDA0MCwgMHgyMGE5LCAweDAwMjAsIDB4NTNhNSwgMHgyMDAxLCAweGE3ZmEsIDB4MjAwNCwKLQkweGQwYmMsIDB4MDA0MCwgMHgxNTU0LCAweDIwMDEsIDB4YTgwMywgMHgyMDA0LCAweGEwODAsIDB4MDAwZCwKLQkweDIwYTAsIDB4MjBhOSwgMHgwMDIwLCAweDUzYTUsIDB4MTU3ZiwgMHgxNDdmLCAweDEzN2YsIDB4NzAwNywKLQkweDAwMDAsIDB4MTA3OCwgMHg0ZjhjLCAweDEwNzgsIDB4MTQwOCwgMHgwMDdjLCAweDIwMTEsIDB4ODAwMywKLQkweDEwNzgsIDB4MzYxYiwgMHgwMDc4LCAweDE1NjIsIDB4YTE4YywgMHgwNzAwLCAweDAwYzAsIDB4MTU3MSwKLQkweDIwMDEsIDB4YTgyOCwgMHgyMDAzLCAweDAxMDAsIDB4NzAwNywgMHgwMDAwLCAweDEwNzgsIDB4MTQwOCwKLQkweDAwN2MsIDB4MjAxMSwgMHg4MDA0LCAweDEwNzgsIDB4MzYxYiwgMHgwMDc4LCAweDE1NzUsIDB4MTI3ZSwKLQkweDIwOTEsIDB4MjEwMCwgMHgyMDc5LCAweDAwMzAsIDB4MjA3MSwgMHhhOWU3LCAweDc4MDMsIDB4MDAwNCwKLQkweDcwMDMsIDB4MDAwMCwgMHg3MDBmLCAweGE5ZWQsIDB4NzAxMywgMHhhOWVkLCAweDc4MGYsIDB4MDA3NiwKLQkweDc4MDMsIDB4MDAwNCwgMHgxMjdmLCAweDAwN2MsIDB4NjkzNCwgMHhhMTg0LCAweDAwMDcsIDB4MDA3OSwKLQkweDE1OTEsIDB4MTU5OSwgMHgxNWRmLCAweDE1OTksIDB4MTU5OSwgMHgxNTk5LCAweDE1YzQsIDB4MTVhOCwKLQkweDE1OWQsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4MTVmOSwgMHg2ODRjLCAweGQwYmMsIDB4MDA0MCwKLQkweDE1OTksIDB4Njg2MCwgMHg2ODJlLCAweDY4NWMsIDB4NjgyYSwgMHg2ODU4LCAweDAwNzgsIDB4MTVlNywKLQkweGExOGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMWUsIDB4MDBjMCwgMHgxNTk5LCAweDY4NGMsIDB4ZDBiYywKLQkweDAwNDAsIDB4MTU5OSwgMHg2ODYwLCAweDY4MmUsIDB4Njg1YywgMHg2ODJhLCAweDY4MDQsIDB4NjgxYSwKLQkweGEwODAsIDB4MDAwZCwgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwgMHhhMDgwLCAweDIwNmEsIDB4MjAwNCwKLQkweDY4MzIsIDB4Njg1OCwgMHgwMDc4LCAweDE1ZWYsIDB4YTE4YywgMHgwMGZmLCAweGExODYsIDB4MDAxNSwKLQkweDAwYzAsIDB4MTU5OSwgMHg2ODRjLCAweGQwYWMsIDB4MDA0MCwgMHgxNTk5LCAweDY4MDQsIDB4NjgxYSwKLQkweGEwODAsIDB4MDAwZCwgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwgMHhhMDgwLCAweDIwNmEsIDB4MjAwNCwKLQkweDY4MzIsIDB4YTAwNiwgMHg2ODJlLCAweDY4MmEsIDB4Njg1OCwgMHgwMDc4LCAweDE1ZWYsIDB4Njg0YywKLQkweGQwYWMsIDB4MDA0MCwgMHgxNTk5LCAweGEwMDYsIDB4NjgyZSwgMHg2ODJhLCAweDY4NTgsIDB4YTE4YywKLQkweDAwMGYsIDB4YTE4OCwgMHgyMDZhLCAweDIxMGMsIDB4NjkzMiwgMHgyZDA4LCAweDY5MWEsIDB4NjgyNiwKLQkweDY4NGMsIDB4YzBkZCwgMHg2ODRlLCAweGEwMDYsIDB4NjgwYSwgMHg2OTdjLCAweDY5MTIsIDB4Njk4MCwKLQkweDY5MTYsIDB4MDA3YywgMHgyMGUxLCAweDAwMDcsIDB4MjBlMSwgMHgyMDAwLCAweDIwMDEsIDB4MDIwYSwKLQkweDIwMDQsIDB4ODJmZiwgMHgwMDQwLCAweDE2MWMsIDB4YTI4MCwgMHgwMDA0LCAweDBkN2UsIDB4MjA2YywKLQkweDY4NGMsIDB4ZDBkYywgMHgwMGMwLCAweDE2MTgsIDB4MTA3OCwgMHgxNThjLCAweDAwNDAsIDB4MTYxOCwKLQkweDBkN2YsIDB4YTI4MCwgMHgwMDAwLCAweDIwMDMsIDB4MDAwMiwgMHhhMDE2LCAweDAwNzgsIDB4MTYxYywKLQkweDY4MDgsIDB4ODAwMCwgMHg2ODBhLCAweDBkN2YsIDB4MTI3ZSwgMHgwNDdlLCAweDAzN2UsIDB4MDI3ZSwKLQkweDIwOTEsIDB4MjEwMCwgMHgwMjdmLCAweDAzN2YsIDB4MDQ3ZiwgMHg3MDAwLCAweGEwMDUsIDB4MDBjMCwKLQkweDE2MzAsIDB4NzIwNiwgMHgyMDAxLCAweDE2NTEsIDB4MDA3ZSwgMHgyMjYwLCAweDAwNzgsIDB4MTdlMCwKLQkweDcxMGMsIDB4MjIwYSwgMHg4MTA4LCAweDIzMGEsIDB4ODEwOCwgMHgyNDBhLCAweDgxMDgsIDB4YTE4MiwKLQkweGFhMDgsIDB4MDA0OCwgMHgxNjNkLCAweDIwMDksIDB4YTllZCwgMHg3MTBlLCAweDcwMTAsIDB4YTEwMiwKLQkweGEwODIsIDB4MDAwOSwgMHgwMDQwLCAweDE2NDgsIDB4YTA4MCwgMHgwMDFiLCAweDAwYzAsIDB4MTY0YiwKLQkweDIwMDksIDB4MDEzOCwgMHgyMDBhLCAweDcwMDAsIDB4YTAwNSwgMHgwMGMwLCAweDE2NTEsIDB4MTA3OCwKLQkweDE3YzEsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MDI3ZSwgMHgwMzdlLCAweDBjN2UsIDB4MDA3ZSwKLQkweDIwOTEsIDB4MjEwMCwgMHgwMDdmLCAweDA0N2YsIDB4MDM3ZiwgMHgwMjdmLCAweDBkN2UsIDB4MGM3ZSwKLQkweDI0NjAsIDB4NjExMCwgMHgyMTY4LCAweDZhNjIsIDB4NmI1ZSwgMHhhMDA1LCAweDAwNDAsIDB4MTZkZCwKLQkweDY4MDgsIDB4YTAwNSwgMHgwMDQwLCAweDE3NGEsIDB4NzAwMCwgMHhhMDA1LCAweDAwYzAsIDB4MTY3MiwKLQkweDAwNzgsIDB4MTZkMiwgMHg3MDBjLCAweDcxMTAsIDB4YTEwNiwgMHgwMGMwLCAweDE3NTMsIDB4NzAwNCwKLQkweGE0MDYsIDB4MDBjMCwgMHgxNmQyLCAweDIwMDEsIDB4MDAwNSwgMHgyMDA0LCAweGQwOGMsIDB4MDA0MCwKLQkweDE2OGYsIDB4MDQ3ZSwgMHgxMDc4LCAweDE5MTMsIDB4MDQ3ZiwgMHgyNDYwLCAweDYwMTAsIDB4YTA4MCwKLQkweDAwMDIsIDB4MjAwNCwgMHhhMDA1LCAweDAwNDAsIDB4MTc0YSwgMHgwMDc4LCAweDE2NmMsIDB4MjAwMSwKLQkweDAyMDcsIDB4MjAwNCwgMHhkMDljLCAweDAwYzAsIDB4MTY3YiwgMHg3ODA0LCAweGEwODQsIDB4NjAwMCwKLQkweDAwNDAsIDB4MTZhMCwgMHhhMDg2LCAweDYwMDAsIDB4MDA0MCwgMHgxNmEwLCAweDAwNzgsIDB4MTY3YiwKLQkweDcxMDAsIDB4YTE4NiwgMHgwMDAyLCAweDAwYzAsIDB4MTZjMCwgMHgwZTdlLCAweDJiNjgsIDB4NjgxOCwKLQkweDIwNjAsIDB4MTA3OCwgMHgyMDNmLCAweDI4MDQsIDB4YWM3MCwgMHg2MDM0LCAweGQwOWMsIDB4MDBjMCwKLQkweDE2YjUsIDB4NzEwOCwgMHg3MjBjLCAweDAwNzgsIDB4MTZiNywgMHg3MTEwLCAweDcyMTQsIDB4NjgxMCwKLQkweGExMDAsIDB4NjgxMiwgMHg2ODE0LCAweGEyMDEsIDB4NjgxNiwgMHgwZTdmLCAweDAwNzgsIDB4MTZjNCwKLQkweGExODYsIDB4MDAwMSwgMHgwMGMwLCAweDE2Y2MsIDB4NzgyMCwgMHg2OTEwLCAweGExMDAsIDB4NjgxMiwKLQkweDc4MjQsIDB4NjkxNCwgMHhhMTAxLCAweDY4MTYsIDB4NzgwMywgMHgwMDA0LCAweDcwMDMsIDB4MDAwMCwKLQkweDcwMDQsIDB4MjA2MCwgMHg2MTAwLCAweGExOGUsIDB4MDAwNCwgMHgwMGMwLCAweDE3NTMsIDB4MjAwOSwKLQkweDAwNDgsIDB4MTA3OCwgMHg3NzVjLCAweDAwNzgsIDB4MTc1MywgMHg2ODA4LCAweGEwMDUsIDB4MDA0MCwKLQkweDE3NGEsIDB4NzAwMCwgMHhhMDA1LCAweDAwYzAsIDB4MTZlNywgMHgwMDc4LCAweDE3NGEsIDB4NzAwYywKLQkweDcxMTAsIDB4YTEwNiwgMHgwMGMwLCAweDE2ZjAsIDB4NzAwNCwgMHhhNDA2LCAweDAwYzAsIDB4MTc0YSwKLQkweDIwMDEsIDB4MDAwNSwgMHgyMDA0LCAweGQwOGMsIDB4MDA0MCwgMHgxNzA0LCAweDA0N2UsIDB4MTA3OCwKLQkweDE5MTMsIDB4MDQ3ZiwgMHgyNDYwLCAweDYwMTAsIDB4YTA4MCwgMHgwMDAyLCAweDIwMDQsIDB4YTAwNSwKLQkweDAwNDAsIDB4MTc0YSwgMHgwMDc4LCAweDE2ZTEsIDB4MjAwMSwgMHgwMjA3LCAweDIwMDQsIDB4ZDA5YywKLQkweDAwYzAsIDB4MTZmMCwgMHgyMDAxLCAweDAwMDUsIDB4MjAwNCwgMHhkMDhjLCAweDAwYzAsIDB4MTZmNiwKLQkweDc4MDQsIDB4YTA4NCwgMHg2MDAwLCAweDAwNDAsIDB4MTcxYiwgMHhhMDg2LCAweDYwMDAsIDB4MDA0MCwKLQkweDE3MWIsIDB4MDA3OCwgMHgxNmYwLCAweDcwMDcsIDB4MDAwMCwgMHhhMDE2LCAweDIyMTgsIDB4NzAwMCwKLQkweGEwOGUsIDB4MDAwMSwgMHgwMDQwLCAweDE3M2MsIDB4YTA4ZSwgMHgwMDAyLCAweDAwYzAsIDB4MTc0YSwKLQkweDBjN2UsIDB4MGU3ZSwgMHg2ODE4LCAweDIwNjAsIDB4MTA3OCwgMHgyMDNmLCAweDI4MDQsIDB4YWM3MCwKLQkweDYwMzQsIDB4ZDA5YywgMHgwMGMwLCAweDE3MzgsIDB4NzMwOCwgMHg3MjBjLCAweDAwNzgsIDB4MTczYSwKLQkweDczMTAsIDB4NzIxNCwgMHgwZTdmLCAweDBjN2YsIDB4NzgyMCwgMHhhMzE4LCAweDc4MjQsIDB4YTIxMSwKLQkweDY4MTAsIDB4YTMwMCwgMHg2ODEyLCAweDY4MTQsIDB4YTIwMSwgMHg2ODE2LCAweDc4MDMsIDB4MDAwNCwKLQkweDcwMDMsIDB4MDAwMCwgMHg2MTAwLCAweGExOGUsIDB4MDAwNCwgMHgwMGMwLCAweDE3NTMsIDB4MjAwOSwKLQkweDAwNDgsIDB4MTA3OCwgMHg3NzVjLCAweDBjN2YsIDB4MGQ3ZiwgMHgxMjdmLCAweDAwN2MsIDB4MGY3ZSwKLQkweDBlN2UsIDB4MDI3ZSwgMHgwMzdlLCAweDA0N2UsIDB4MDU3ZSwgMHgyMDcxLCAweGE5ZTcsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweDE3YmEsIDB4NzAwNCwgMHhhYzA2LCAweDAwYzAsIDB4MTdhYiwKLQkweDIwNzksIDB4MDAzMCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMywgMHgwMDQwLCAweDE3YWIsIDB4NzgwNCwKLQkweGQwZmMsIDB4MDBjMCwgMHgxN2E3LCAweDIwZTEsIDB4NjAwMCwgMHgyMDExLCAweDAwMzIsIDB4MjAwMSwKLQkweDAyMDgsIDB4MjAwYywgMHgyMDAxLCAweDAyMDksIDB4MjAwNCwgMHhhMTA2LCAweDAwYzAsIDB4MTc2ZiwKLQkweDgyMTEsIDB4MDBjMCwgMHgxNzc3LCAweDc4MDQsIDB4ZDBmYywgMHgwMGMwLCAweDE3YTcsIDB4MTA3OCwKLQkweDFiMjIsIDB4MDI3ZSwgMHgwNTdlLCAweDc4MDMsIDB4MDAwNCwgMHg3ODA0LCAweGQwYWMsIDB4MDBjMCwKLQkweDE3OGQsIDB4NzgwMywgMHgwMDAyLCAweDc4MDMsIDB4MDAwOSwgMHg3MDAzLCAweDAwMDMsIDB4NzAwNywKLQkweDAwMDAsIDB4MDU3ZiwgMHgwMjdmLCAweDIwMDEsIDB4MDE1ZCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAxNjAsIDB4MjUwMiwgMHgyMDAxLCAweDAxMzgsIDB4MjIwMiwgMHgwMDc4LCAweDE3YWIsIDB4MTA3OCwKLQkweDE5MTMsIDB4MDA3OCwgMHgxNzVmLCAweDE1N2UsIDB4MjBhOSwgMHgwMDA5LCAweDIwMDksIDB4YTllZCwKLQkweDIxMDQsIDB4YWMwNiwgMHgwMGMwLCAweDE3YjUsIDB4MjAwYSwgMHhhMTg4LCAweDAwMDMsIDB4MDBmMCwKLQkweDE3YjAsIDB4MTU3ZiwgMHgwNTdmLCAweDA0N2YsIDB4MDM3ZiwgMHgwMjdmLCAweDBlN2YsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NzAwYywgMHg3MTEwLCAweGExMDYsIDB4MDBjMCwgMHgxN2M5LCAweDcwMDMsIDB4MDAwMCwKLQkweDAwN2MsIDB4MjEwNCwgMHg3MDA2LCAweDIwNjAsIDB4ODEwOCwgMHgyMTFjLCAweDgxMDgsIDB4MjEyNCwKLQkweDgxMDgsIDB4YTE4MiwgMHhhYTA4LCAweDAwNDgsIDB4MTdkNywgMHgyMDA5LCAweGE5ZWQsIDB4NzExMiwKLQkweDcwMGMsIDB4YTEwNiwgMHgwMGMwLCAweDE3ZTAsIDB4MjAwMSwgMHgwMTM4LCAweDIwMDMsIDB4MDAwOCwKLQkweDhjZmYsIDB4MDBjMCwgMHgxN2U3LCAweDEwNzgsIDB4MWI0ZCwgMHgwMDc4LCAweDE4NTQsIDB4NjAxMCwKLQkweDIwNjgsIDB4MmQ1OCwgMHg2ODI4LCAweGE0MDYsIDB4MDBjMCwgMHgxN2YyLCAweDY4MmMsIDB4YTMwNiwKLQkweDAwNDAsIDB4MTgyZiwgMHg2MDFjLCAweGEwODYsIDB4MDAwOCwgMHgwMDQwLCAweDE4MmYsIDB4NjAyNCwKLQkweGQwZjQsIDB4MDBjMCwgMHgxODFjLCAweGQwZDQsIDB4MDA0MCwgMHgxODE4LCAweDYwMzgsIDB4YTQwMiwKLQkweDYwMzQsIDB4YTMwMywgMHgwMDQwLCAweDE4MDYsIDB4MDBjOCwgMHgxODE4LCAweDY0M2EsIDB4NjMzNiwKLQkweDZjMmEsIDB4NmIyZSwgMHgwNDdlLCAweDAzN2UsIDB4MjQwMCwgMHg2YzdjLCAweGE0MDIsIDB4NjgxMiwKLQkweDIzMDAsIDB4NmI4MCwgMHhhMzAzLCAweDY4MTYsIDB4MDM3ZiwgMHgwNDdmLCAweDAwNzgsIDB4MTgxYywKLQkweDEwNzgsIDB4OTA2MywgMHgwMDQwLCAweDE3ZTMsIDB4MjAwMSwgMHhhNzc0LCAweDIwMDQsIDB4ZDBiNCwKLQkweDAwYzAsIDB4MTgyYiwgMHg2MDE4LCAweDIwMDQsIDB4ZDBiYywgMHgwMGMwLCAweDE4MmIsIDB4NjgxNywKLQkweDdmZmYsIDB4NjgxMywgMHhmZmZmLCAweDEwNzgsIDB4MjA4YSwgMHgwMGMwLCAweDE3ZTMsIDB4MGM3ZSwKLQkweDcwMDQsIDB4MjA2MCwgMHg2MDI0LCAweGMwZDQsIDB4NjAyNiwgMHgwYzdmLCAweDY4NGMsIDB4ZDBmNCwKLQkweDAwNDAsIDB4MTg0MCwgMHg2ODE3LCAweGZmZmYsIDB4NjgxMywgMHhmZmZmLCAweDAwNzgsIDB4MTdlMywKLQkweDY4MjQsIDB4MjA1MCwgMHg2ODE4LCAweDIwNjAsIDB4NjgzMCwgMHgyMDQwLCAweDYwMzQsIDB4YTBjYywKLQkweDAwMGYsIDB4MjAwOSwgMHgwMDExLCAweDEwNzgsIDB4MTg1NSwgMHgwMDQwLCAweDE4NTMsIDB4MjAwOSwKLQkweDAwMDEsIDB4MTA3OCwgMHgxODU1LCAweDJkNTgsIDB4MDA3YywgMHg4YWZmLCAweDAwNDAsIDB4MThlYywKLQkweGEwM2UsIDB4MjczMCwgMHg2ODUwLCAweGQwZmMsIDB4MDBjMCwgMHgxODc3LCAweGQwZjQsIDB4MDBjMCwKLQkweDE4ODcsIDB4MGQ3ZSwgMHgyODA0LCAweGFjNjgsIDB4MjkwMCwgMHgwMDc5LCAweDE4NjcsIDB4MThjZSwKLQkweDE4OGUsIDB4MTg4ZSwgMHgxOGNlLCAweDE4Y2UsIDB4MThjNiwgMHgxOGNlLCAweDE4OGUsIDB4MThjZSwKLQkweDE4OTQsIDB4MTg5NCwgMHgxOGNlLCAweDE4Y2UsIDB4MThjZSwgMHgxOGJkLCAweDE4OTQsIDB4YzBmYywKLQkweDY4NTIsIDB4NmI2YywgMHg2YTcwLCAweDZkMWMsIDB4NmMyMCwgMHgwZDdlLCAweGQ5OWMsIDB4MDA0MCwKLQkweDE4ZDEsIDB4MjgwNCwgMHhhYzY4LCAweDZmMDgsIDB4NmUwYywgMHgwMDc4LCAweDE4ZDEsIDB4YzBmNCwKLQkweDY4NTIsIDB4NmI2YywgMHg2YTcwLCAweDBkN2UsIDB4MDA3OCwgMHgxOGQ4LCAweDZiMDgsIDB4NmEwYywKLQkweDZkMDAsIDB4NmMwNCwgMHgwMDc4LCAweDE4ZDEsIDB4N2IwYywgMHhkM2JjLCAweDAwNDAsIDB4MThiNSwKLQkweDcwMDQsIDB4MGU3ZSwgMHgyMDcwLCAweDcwMWMsIDB4MGU3ZiwgMHhhMDg2LCAweDAwMDgsIDB4MDBjMCwKLQkweDE4YjUsIDB4N2IwOCwgMHhhMzljLCAweDBmZmYsIDB4MmQyMCwgMHgwZDdmLCAweDBkN2UsIDB4NmExNCwKLQkweDgyZmYsIDB4MDBjMCwgMHgxOGIwLCAweDY4MTAsIDB4YTMwMiwgMHgwMDQ4LCAweDE4YjAsIDB4NmIxMCwKLQkweDIwMTEsIDB4MDAwMCwgMHgyNDY4LCAweDAwNzgsIDB4MThiNywgMHg2YjEwLCAweDZhMTQsIDB4NmQwMCwKLQkweDZjMDQsIDB4NmYwOCwgMHg2ZTBjLCAweDAwNzgsIDB4MThkMSwgMHgwZDdmLCAweDBkN2UsIDB4NjgzNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMWUsIDB4MDBjMCwgMHgxOGNlLCAweDBkN2YsIDB4MTA3OCwKLQkweDIwMjYsIDB4MDBjMCwgMHgxODU1LCAweGEwMGUsIDB4MDA3OCwgMHgxOGVjLCAweDBkN2YsIDB4MTA3OCwKLQkweDEzMzIsIDB4N2IyMiwgMHg3YTI2LCAweDdkMzIsIDB4N2MzNiwgMHg3ZjNhLCAweDdlM2UsIDB4NzkwMiwKLQkweDcwMDAsIDB4ODAwMCwgMHg3MDAyLCAweDBkN2YsIDB4NjgyOCwgMHhhMzAwLCAweDY4MmEsIDB4NjgyYywKLQkweGEyMDEsIDB4NjgyZSwgMHgyMzAwLCAweDZiMTAsIDB4YTMwMiwgMHg2ODEyLCAweDIyMDAsIDB4NmExNCwKLQkweGEyMDMsIDB4NjgxNiwgMHgxMDc4LCAweDIwMjYsIDB4MDA3YywgMHgxMDc4LCAweDEzMzIsIDB4MTA3OCwKLQkweDFjOTcsIDB4NzAwNCwgMHgyMDYwLCAweDBkN2UsIDB4NjAxMCwgMHgyMDY4LCAweDcwMDMsIDB4MDAwMCwKLQkweDEwNzgsIDB4MWFmNCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwgMHgxOTBjLCAweDY4MDgsIDB4ODAwMSwKLQkweDY4MGEsIDB4Njk3YywgMHg2OTEyLCAweDY5ODAsIDB4NjkxNiwgMHg2ODJiLCAweGZmZmYsIDB4NjgyZiwKLQkweGZmZmYsIDB4Njg1MCwgMHhjMGJkLCAweDY4NTIsIDB4MGQ3ZiwgMHgxMDc4LCAweDhhMTEsIDB4MDA3OCwKLQkweDFhZGIsIDB4MTA3OCwgMHgxMzMyLCAweDEyN2UsIDB4MjA5MSwgMHgyMTAwLCAweDAwN2UsIDB4MDE3ZSwKLQkweDJiNjgsIDB4NjgxOCwgMHgyMDYwLCAweDc5MDQsIDB4NzgwMywgMHgwMDAyLCAweGExODQsIDB4MDcwMCwKLQkweDAwYzAsIDB4MThlZiwgMHhhMTg0LCAweDAwMDMsIDB4YTA4NiwgMHgwMDAzLCAweDAwNDAsIDB4MTkxMSwKLQkweDcwMDAsIDB4MDA3OSwgMHgxOTJiLCAweDE5MzMsIDB4MTkzNSwgMHgxYTM0LCAweDFhYjIsIDB4MWFjOSwKLQkweDE5MzMsIDB4MTkzMywgMHgxOTMzLCAweDEwNzgsIDB4MTMzMiwgMHg4MDAxLCAweDcwMDIsIDB4YTE4NCwKLQkweDA4ODAsIDB4MDBjMCwgMHgxOTRhLCAweDhhZmYsIDB4MDA0MCwgMHgxOWQ0LCAweDIwMDksIDB4MDAwMSwKLQkweDEwNzgsIDB4MTg1NSwgMHgwMDQwLCAweDFhZGIsIDB4MjAwOSwgMHgwMDAxLCAweDEwNzgsIDB4MTg1NSwKLQkweDAwNzgsIDB4MWFkYiwgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweGQxYmMsIDB4MDBjMCwKLQkweDE5YjIsIDB4MDI3ZSwgMHgwMzdlLCAweDAxN2UsIDB4NzgwOCwgMHhkMGVjLCAweDAwYzAsIDB4MTk2MiwKLQkweDdjMjAsIDB4N2QyNCwgMHg3ZTMwLCAweDdmMzQsIDB4NzgwMywgMHgwMDA5LCAweDcwMDMsIDB4MDAwNCwKLQkweDAwNzgsIDB4MTk2NCwgMHgxMDc4LCAweDFiZDcsIDB4MDE3ZiwgMHhkMTk0LCAweDAwNDAsIDB4MTk2YiwKLQkweDhhZmYsIDB4MDA0MCwgMHgxOWExLCAweDZiMjgsIDB4NmEyYywgMHgyNDAwLCAweDY4NmUsIDB4YTMxYSwKLQkweDI1MDAsIDB4Njg3MiwgMHhhMjEzLCAweDZiMmEsIDB4NmEyZSwgMHgwYzdlLCAweDcwMDQsIDB4MjA2MCwKLQkweDYwMjQsIDB4ZDBmNCwgMHgwMGMwLCAweDE5N2UsIDB4NjMzYSwgMHg2MjM2LCAweDBjN2YsIDB4MjQwMCwKLQkweDY5MTAsIDB4YTEwMCwgMHg2ODEyLCAweDI1MDAsIDB4NjkxNCwgMHhhMTAxLCAweDY4MTYsIDB4MDM3ZiwKLQkweDAyN2YsIDB4MjYwMCwgMHg2ODFlLCAweDI3MDAsIDB4NjgyMiwgMHgxMDc4LCAweDIwM2YsIDB4MmEwMCwKLQkweDY4MjYsIDB4MmMwMCwgMHg2ODFhLCAweDI4MDAsIDB4NjgzMiwgMHg2ODUwLCAweGMwZmQsIDB4Njg1MiwKLQkweDY4MDgsIDB4ODAwMSwgMHg2ODBhLCAweDAwYzAsIDB4MTlhNywgMHg2ODRjLCAweGQwZTQsIDB4MDA0MCwKLQkweDE5YTcsIDB4NzAwNCwgMHgyMDYwLCAweDIwMDksIDB4MDA0OCwgMHgxMDc4LCAweDc3NWMsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwNCwgMHgwMDQwLCAweDFhZGIsIDB4NzAwMywgMHgwMDAwLCAweDEwNzgsIDB4MTdjMSwKLQkweDAwNzgsIDB4MWFkYiwgMHgwNTdlLCAweDdkMGMsIDB4ZDViYywgMHgwMGMwLCAweDE5YjksIDB4MTA3OCwKLQkweGE1OGUsIDB4MDU3ZiwgMHgxMDc4LCAweDFhZjQsIDB4MGY3ZSwgMHg3MDA0LCAweDIwNzgsIDB4MTA3OCwKLQkweDQ5NjMsIDB4MDA0MCwgMHgxOWM2LCAweDc4MjQsIDB4YzBmNSwgMHg3ODI2LCAweDBmN2YsIDB4NjgyYiwKLQkweGZmZmYsIDB4NjgyZiwgMHhmZmZmLCAweDY4MDgsIDB4ODAwMSwgMHg2ODBhLCAweDY5N2MsIDB4NjkxMiwKLQkweDY5ODAsIDB4NjkxNiwgMHgwMDc4LCAweDFhZGIsIDB4NzAwNCwgMHgwYzdlLCAweDIwNjAsIDB4NjAyNCwKLQkweDBjN2YsIDB4ZDBmNCwgMHgwMDQwLCAweDE5ZTEsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4MDA3OCwKLQkweDE5ZjUsIDB4Njg0YywgMHhjMGY1LCAweDY4NGUsIDB4NzgxNCwgMHhhMDA1LCAweDAwYzAsIDB4MTlmOSwKLQkweDcwMDMsIDB4MDAwMCwgMHg2ODA4LCAweDgwMDEsIDB4NjgwYSwgMHgwMGMwLCAweDE5ZjUsIDB4NzAwNCwKLQkweDIwNjAsIDB4MjAwOSwgMHgwMDQ4LCAweDEwNzgsIDB4Nzc1YywgMHgxMDc4LCAweDE3YzEsIDB4MDA3OCwKLQkweDFhZGIsIDB4NzgxNCwgMHg2OTEwLCAweGExMDIsIDB4NjgxMiwgMHg2OTE0LCAweGExODMsIDB4MDAwMCwKLQkweDY4MTYsIDB4NzgxNCwgMHg3OTA4LCAweGExOGMsIDB4MGZmZiwgMHhhMTkyLCAweDA4NDEsIDB4MDBjOCwKLQkweDE4ZWYsIDB4YTE4OCwgMHgwMDA3LCAweDgxMTQsIDB4ODIxNCwgMHg4MjE0LCAweGExMGEsIDB4ODEwNCwKLQkweDgwMDQsIDB4ODAwNCwgMHhhMjBhLCAweDgxMGIsIDB4ODEwYiwgMHg4MTBiLCAweDEwNzgsIDB4MWI1ZSwKLQkweDc4MDMsIDB4MDAwNCwgMHg3ODBmLCAweGZmZmYsIDB4NzgwMywgMHgwMDAxLCAweDc4MDQsIDB4ZDBmYywKLQkweDAwNDAsIDB4MWExZSwgMHg3ODAzLCAweDAwMDIsIDB4NzgwMywgMHgwMDA0LCAweDc4MGYsIDB4MDA3NiwKLQkweDcwMDQsIDB4NzAwNywgMHgwMDAwLCAweDIwNjAsIDB4MjAwOSwgMHgwMDQ4LCAweDEwNzgsIDB4Nzc1YywKLQkweDEwNzgsIDB4MWI5MiwgMHgwMDQwLCAweDE5ZjUsIDB4ODAwMSwgMHg3MDAyLCAweGQxOTQsIDB4MDA0MCwKLQkweDFhNDYsIDB4NzgwNCwgMHhkMGZjLCAweDAwYzAsIDB4MTkxYiwgMHg4YWZmLCAweDAwNDAsIDB4MWFkYiwKLQkweDIwMDksIDB4MDAwMSwgMHgxMDc4LCAweDE4NTUsIDB4MDA3OCwgMHgxYWRiLCAweGExODQsIDB4MDg4MCwKLQkweDAwYzAsIDB4MWE1MywgMHg4YWZmLCAweDAwNDAsIDB4MWFkYiwgMHgyMDA5LCAweDAwMDEsIDB4MTA3OCwKLQkweDE4NTUsIDB4MDA3OCwgMHgxYWRiLCAweDc4MDMsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4ZDFiYywKLQkweDAwYzAsIDB4MWE5MywgMHgwMjdlLCAweDAzN2UsIDB4NzgwOCwgMHhkMGVjLCAweDAwYzAsIDB4MWE2NiwKLQkweDc4MDMsIDB4MDAwOSwgMHg3MDAzLCAweDAwMDQsIDB4MDA3OCwgMHgxYTY4LCAweDEwNzgsIDB4MWJkNywKLQkweDZiMjgsIDB4NmEyYywgMHgxMDc4LCAweDIwM2YsIDB4MGQ3ZSwgMHgwZjdlLCAweDJkNzgsIDB4MjgwNCwKLQkweGFjNjgsIDB4NjAzNCwgMHhkMDljLCAweDAwYzAsIDB4MWE4MywgMHg2ODA4LCAweDIwMDgsIDB4YTMxYSwKLQkweDY4MGMsIDB4YTIxMywgMHg3ODEwLCAweGExMDAsIDB4NzgxMiwgMHg2OTBjLCAweDc4MTQsIDB4YTEwMSwKLQkweDc4MTYsIDB4MDA3OCwgMHgxYThmLCAweDY4MTAsIDB4MjAwOCwgMHhhMzFhLCAweDY4MTQsIDB4YTIxMywKLQkweDc4MTAsIDB4YTEwMCwgMHg3ODEyLCAweDY5MTQsIDB4NzgxNCwgMHhhMTAxLCAweDc4MTYsIDB4MGY3ZiwKLQkweDBkN2YsIDB4MDA3OCwgMHgxOTZkLCAweDA1N2UsIDB4N2QwYywgMHgxMDc4LCAweGE1OGUsIDB4MDU3ZiwKLQkweDEwNzgsIDB4MWFmNCwgMHgwZjdlLCAweDcwMDQsIDB4MjA3OCwgMHgxMDc4LCAweDQ5NjMsIDB4MDA0MCwKLQkweDFhYTQsIDB4NzgyNCwgMHhjMGY1LCAweDc4MjYsIDB4MGY3ZiwgMHg2ODJiLCAweGZmZmYsIDB4NjgyZiwKLQkweGZmZmYsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4Njk3YywgMHg2OTEyLCAweDY5ODAsIDB4NjkxNiwKLQkweDAwNzgsIDB4MWFkYiwgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDcwMDQsIDB4YTAwZCwKLQkweDAwNDAsIDB4MWFjNSwgMHg2ODA4LCAweDgwMDEsIDB4NjgwYSwgMHgwMGMwLCAweDFhYzUsIDB4NzAwNCwKLQkweDIwNjAsIDB4MjAwOSwgMHgwMDQ4LCAweDEwNzgsIDB4Nzc1YywgMHgxMDc4LCAweDE3YzEsIDB4MDA3OCwKLQkweDFhZGIsIDB4NzgwMywgMHgwMDA0LCAweDcwMDMsIDB4MDAwMCwgMHg3MDA0LCAweDIwNjAsIDB4NjAxMCwKLQkweGEwMDUsIDB4MDA0MCwgMHgxYWM1LCAweDIwNjgsIDB4NjgwOCwgMHg4MDAwLCAweDY4MGEsIDB4NmMyOCwKLQkweDZiMmMsIDB4MTA3OCwgMHgxN2UwLCAweDAxN2YsIDB4MDA3ZiwgMHgxMjdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDIwOTEsIDB4MjEwMCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDFhZjIsIDB4NzAwYywKLQkweDcxMTAsIDB4YTEwNiwgMHgwMDQwLCAweDFhZjIsIDB4MjBlMSwgMHg5MDI4LCAweDcwMGYsIDB4YTllZCwKLQkweDcwMTMsIDB4YTllZCwgMHgxMjdmLCAweDAwN2MsIDB4MGM3ZSwgMHgxMDc4LCAweDFiMjIsIDB4MjBlMSwKLQkweDkwMjgsIDB4NzAwYywgMHg3MTEwLCAweGExMDYsIDB4MDA0MCwgMHgxYjE5LCAweDIxMDQsIDB4YTAwNSwKLQkweDAwNDAsIDB4MWIwOCwgMHgyMDYwLCAweDYwMTAsIDB4MjA2MCwgMHg2MDA4LCAweDgwMDEsIDB4NjAwYSwKLQkweGExODgsIDB4MDAwMywgMHhhMTgyLCAweGFhMDgsIDB4MDA0OCwgMHgxYjEwLCAweDIwMDksIDB4YTllZCwKLQkweDcxMTIsIDB4NzAwYywgMHhhMTA2LCAweDAwYzAsIDB4MWFmOSwgMHgyMDExLCAweDAwMDgsIDB4MDA3OCwKLQkweDFhZjksIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDAxMzgsIDB4MjIwMiwKLQkweDBjN2YsIDB4MDA3YywgMHgyMDAxLCAweDAxMzgsIDB4MjAxNCwgMHgyMDAzLCAweDAwMDAsIDB4MjAyMSwKLQkweGIwMTUsIDB4MjAwMSwgMHgwMTQxLCAweDIwMWMsIDB4ZDNkYywgMHgwMGMwLCAweDFiM2YsIDB4MjAwMSwKLQkweDAxMDksIDB4MjAxYywgMHhhMzljLCAweDAwNDgsIDB4MDBjMCwgMHgxYjNmLCAweDIwMDEsIDB4MDExMSwKLQkweDIwMWMsIDB4ODNmZiwgMHgwMGMwLCAweDFiM2YsIDB4ODQyMSwgMHgwMGMwLCAweDFiMjksIDB4MDA3YywKLQkweDIwMTEsIDB4MDIwMSwgMHgyMDA5LCAweDAwM2MsIDB4MjIwNCwgMHhhMDA1LCAweDAwYzAsIDB4MWI0YywKLQkweDgxMDksIDB4MDBjMCwgMHgxYjQ0LCAweDAwN2MsIDB4MDA3YywgMHgxMDc4LCAweDFiNDAsIDB4MDA0MCwKLQkweDFiNTUsIDB4NzgwYywgMHhkMGE0LCAweDAwNDAsIDB4MWI1YiwgMHgxMDc4LCAweDFhZjQsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDA3OCwgMHgxYjVkLCAweDEwNzgsIDB4MWI5MiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwKLQkweDAyMDAsIDB4NzgwOCwgMHhhMDg0LCAweGYwMDAsIDB4YTEwZCwgMHgxMDc4LCAweDFiMjIsIDB4MjAxOSwKLQkweDUwMDAsIDB4ODMxOSwgMHgwMDQwLCAweDFiN2MsIDB4MjAwMSwgMHhhYTA4LCAweDIwMDQsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDA0MCwgMHgxYjdjLCAweDIwMDEsIDB4MDAyMSwgMHhkMGZjLCAweDAwNDAsIDB4MWI2OSwKLQkweDEwNzgsIDB4MWVhYSwgMHgwMDc4LCAweDFiNjcsIDB4MjBlMSwgMHg3MDAwLCAweDczMjQsIDB4NzQyMCwKLQkweDcwMjgsIDB4NzAyOCwgMHg3NDI2LCAweDcwMzcsIDB4MDAwMSwgMHg4MTBmLCAweDcxMmUsIDB4NzAyZiwKLQkweDAxMDAsIDB4NzAzNywgMHgwMDA4LCAweDczMjYsIDB4NzQyMiwgMHgyMDAxLCAweDAxMzgsIDB4MjIwMiwKLQkweDBlN2YsIDB4MDA3YywgMHgwMjdlLCAweDIwMDEsIDB4MDE1ZCwgMHgyMDAxLCAweDAwMDAsIDB4NzkwOCwKLQkweGExOGMsIDB4MGZmZiwgMHhhMTgyLCAweDBmZmQsIDB4MDA0OCwgMHgxYmEwLCAweDIwMDksIDB4MDAwMCwKLQkweGExOTAsIDB4MDAwNywgMHhhMjk0LCAweDFmZjgsIDB4ODIxNCwgMHg4MjE0LCAweDgyMTQsIDB4MjAwMSwKLQkweDAyMGEsIDB4ODJmZiwgMHgwMDQwLCAweDFiYjUsIDB4MjBlMSwgMHg2MDAwLCAweDIwMGMsIDB4MjAwYywKLQkweDIwMGMsIDB4MjAwYywgMHg4MjExLCAweDAwYzAsIDB4MWJhZSwgMHgyMGUxLCAweDcwMDAsIDB4MjAwYywKLQkweDIwMGMsIDB4NzAwMywgMHgwMDAwLCAweDIwZTEsIDB4NjAwMCwgMHgyMDAxLCAweDAyMDgsIDB4MjAwYywKLQkweDIwMDEsIDB4MDIwOSwgMHgyMDA0LCAweGExMDYsIDB4MDA0MCwgMHgxYmQ0LCAweDEwNzgsIDB4MWI0MCwKLQkweDAwNDAsIDB4MWJkMiwgMHg3OTA4LCAweGQxZWMsIDB4MDBjMCwgMHgxYmQ0LCAweDc5MGMsIDB4ZDFhNCwKLQkweDAwNDAsIDB4MWI5NywgMHgxMDc4LCAweDFhZjQsIDB4YTAwNiwgMHgwMjdmLCAweDAwN2MsIDB4N2MyMCwKLQkweDdkMjQsIDB4N2UzMCwgMHg3ZjM0LCAweDcwMGMsIDB4NzExMCwgMHhhMTA2LCAweDAwNDAsIDB4MWM2OSwKLQkweDcwMDQsIDB4MDE3ZSwgMHgyMTBjLCAweGExMDYsIDB4MDE3ZiwgMHgwMDQwLCAweDFjNjksIDB4MGQ3ZSwKLQkweDBjN2UsIDB4MjE2YywgMHgyZDAwLCAweGEwMDUsIDB4MDA0MCwgMHgxYzY3LCAweDY4MWMsIDB4YTA4NiwKLQkweDAwMDgsIDB4MDA0MCwgMHgxYzY3LCAweDY4MjQsIDB4ZDBkNCwgMHgwMGMwLCAweDFjNjcsIDB4NjgxMCwKLQkweDIwNjgsIDB4Njg1MCwgMHhkMGZjLCAweDAwNDAsIDB4MWMyOSwgMHg4MTA4LCAweDIxMDQsIDB4NmIyYywKLQkweGEzMDYsIDB4MDBjMCwgMHgxYzY3LCAweDgxMDgsIDB4MjEwNCwgMHg2YTI4LCAweGEyMDYsIDB4MDBjMCwKLQkweDFjNjcsIDB4Njg1MCwgMHhjMGZjLCAweGMwZjUsIDB4Njg1MiwgMHg2ODZjLCAweDc4MjIsIDB4Njg3MCwKLQkweDc4MjYsIDB4NjgxYywgMHg3ODMyLCAweDY4MjAsIDB4NzgzNiwgMHg2ODE4LCAweDIwNjAsIDB4NjAzNCwKLQkweGQwOWMsIDB4MDA0MCwgMHgxYzI0LCAweDY4MzAsIDB4MjAwNCwgMHhhYzY4LCAweDY4MDgsIDB4NzgzYSwKLQkweDY4MGMsIDB4NzgzZSwgMHgwMDc4LCAweDFjNjUsIDB4YTAwNiwgMHg3ODNhLCAweDc4M2UsIDB4MDA3OCwKLQkweDFjNjUsIDB4ODEwOCwgMHgyMTA0LCAweGEwMDUsIDB4MDBjMCwgMHgxYzY3LCAweDZiMmMsIDB4YTMwNiwKLQkweDAwYzAsIDB4MWM2NywgMHg4MTA4LCAweDIxMDQsIDB4YTAwNSwgMHgwMGMwLCAweDFjNjcsIDB4NmEyOCwKLQkweGEyMDYsIDB4MDBjMCwgMHgxYzY3LCAweDY4NTAsIDB4YzBmNSwgMHg2ODUyLCAweDY4MzAsIDB4MjAwNCwKLQkweDY5MTgsIDB4YTE2MCwgMHhhMTgwLCAweDAwMGQsIDB4MjAwNCwgMHhkMDljLCAweDAwYzAsIDB4MWM1NywKLQkweDYwMDgsIDB4NzgyMiwgMHg2ODZlLCAweDYwMGMsIDB4NzgyNiwgMHg2ODcyLCAweDYwMDAsIDB4NzgzMiwKLQkweDYwMDQsIDB4NzgzNiwgMHhhMDA2LCAweDc4M2EsIDB4NzgzZSwgMHgwMDc4LCAweDFjNjUsIDB4NjAxMCwKLQkweDc4MjIsIDB4Njg2ZSwgMHg2MDE0LCAweDc4MjYsIDB4Njg3MiwgMHg2MDAwLCAweDc4MzIsIDB4NjAwNCwKLQkweDc4MzYsIDB4NjAwOCwgMHg3ODNhLCAweDYwMGMsIDB4NzgzZSwgMHg3ODAzLCAweDAwMTEsIDB4MGM3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHgwZjdlLCAweDBlN2UsIDB4MDE3ZSwgMHgwMjdlLCAweDIwNzEsIDB4YTllNywKLQkweDIwNzksIDB4MDAzMCwgMHgyMDExLCAweDAwNTAsIDB4NzAwMCwgMHhhMDg2LCAweDAwMDAsIDB4MDA0MCwKLQkweDFjOTIsIDB4ODIxMSwgMHgwMDQwLCAweDFjOTAsIDB4MjAwMSwgMHgwMDA1LCAweDIwMDQsIDB4ZDA4YywKLQkweDAwNDAsIDB4MWM3OSwgMHg3OTA0LCAweGExOGMsIDB4MDc4MCwgMHgwMTdlLCAweDEwNzgsIDB4MTkxMywKLQkweDAxN2YsIDB4ODFmZiwgMHgwMGMwLCAweDFjOTAsIDB4MjAxMSwgMHgwMDUwLCAweDAwNzgsIDB4MWM3NCwKLQkweGEwODUsIDB4MDAwMSwgMHgwMjdmLCAweDAxN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDAwN2MsIDB4NzgwMywKLQkweDAwMDQsIDB4MjAwOSwgMHgwMDY0LCAweDc4MDQsIDB4ZDBhYywgMHgwMDQwLCAweDFjZTgsIDB4ODEwOSwKLQkweDAwYzAsIDB4MWM5YiwgMHgyMDA5LCAweDAxMDAsIDB4MjEwYywgMHhhMThhLCAweDAwMDMsIDB4MTA0OCwKLQkweDEzMzIsIDB4MTA3OCwgMHgxZmNhLCAweDBlN2UsIDB4MGY3ZSwgMHgyMDcxLCAweGE5ZDYsIDB4MjA3OSwKLQkweDAwMTAsIDB4NzAwNCwgMHhhMDg2LCAweDAwMDAsIDB4MDA0MCwgMHgxY2UwLCAweDc4MDAsIDB4MDA3ZSwKLQkweDc4MjAsIDB4MDA3ZSwgMHg3ODMwLCAweDAwN2UsIDB4NzgzNCwgMHgwMDdlLCAweDc4MzgsIDB4MDA3ZSwKLQkweDc4M2MsIDB4MDA3ZSwgMHg3ODAzLCAweDAwMDQsIDB4NzgyMywgMHgwMDAwLCAweDAwMDUsIDB4MDAwNSwKLQkweDIwNzksIDB4MDAzMCwgMHg3ODA0LCAweGQwYWMsIDB4MTBjMCwgMHgxMzMyLCAweDIwNzksIDB4MDAxMCwKLQkweDAwN2YsIDB4NzgzZSwgMHgwMDdmLCAweDc4M2EsIDB4MDA3ZiwgMHg3ODM2LCAweDAwN2YsIDB4NzgzMiwKLQkweDAwN2YsIDB4NzgyMiwgMHgwMDdmLCAweDc4MDIsIDB4MGY3ZiwgMHgwZTdmLCAweDAwNzgsIDB4MWNlNiwKLQkweDBmN2YsIDB4MGU3ZiwgMHg3ODA0LCAweGQwYWMsIDB4MTBjMCwgMHgxMzMyLCAweDEwNzgsIDB4NjM5YiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGFhMDgsIDB4NzAwMywgMHgwMDAwLCAweDBlN2YsIDB4MDA3YywKLQkweDBkN2UsIDB4YTI4MCwgMHgwMDA0LCAweDIwNmMsIDB4Njk0YywgMHhkMWRjLCAweDAwYzAsIDB4MWQ2YiwKLQkweDY5MzQsIDB4YTE4NCwgMHgwMDA3LCAweDAwNzksIDB4MWNmZCwgMHgxZDA1LCAweDFkNTYsIDB4MWQwNSwKLQkweDFkMDUsIDB4MWQwNSwgMHgxZDNiLCAweDFkMTgsIDB4MWQwNywgMHgxMDc4LCAweDEzMzIsIDB4Njg0YywKLQkweGQwYjQsIDB4MDA0MCwgMHgxZTc5LCAweDY4NjAsIDB4NjgyZSwgMHg2ODE2LCAweDY4NWMsIDB4NjgyYSwKLQkweDY4MTIsIDB4Njg3YywgMHg2ODBhLCAweDY4ODAsIDB4NjgwZSwgMHg2OTU4LCAweDAwNzgsIDB4MWQ1ZSwKLQkweDY4MzQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAxZSwgMHgwMGMwLCAweDFkMDUsIDB4Njg0YywKLQkweGQwYjQsIDB4MDA0MCwgMHgxZTc5LCAweDY4NjAsIDB4NjgyZSwgMHg2ODE2LCAweDY4NWMsIDB4NjgyYSwKLQkweDY4MTIsIDB4Njg3YywgMHg2ODBhLCAweDY4ODAsIDB4NjgwZSwgMHg2ODA0LCAweDY4MWEsIDB4YTA4MCwKLQkweDAwMGQsIDB4MjAwNCwgMHhhMDg0LCAweDAwMGYsIDB4YTA4MCwgMHgyMDZhLCAweDIwMDQsIDB4NjgzMiwKLQkweDY5NTgsIDB4MDA3OCwgMHgxZDY3LCAweGExOGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMTUsIDB4MDBjMCwKLQkweDFkNmIsIDB4Njg0YywgMHhkMGI0LCAweDAwNDAsIDB4MWU3OSwgMHg2ODA0LCAweDY4MWEsIDB4YTA4MCwKLQkweDAwMGQsIDB4MjAwNCwgMHhhMDg0LCAweDAwMGYsIDB4YTA4MCwgMHgyMDZhLCAweDIwMDQsIDB4NjgzMiwKLQkweDY5NTgsIDB4YTAwNiwgMHg2ODJlLCAweDY4MmEsIDB4MDA3OCwgMHgxZDY3LCAweDY4NGMsIDB4ZDBiNCwKLQkweDAwNDAsIDB4MThlZCwgMHg2OTU4LCAweGEwMDYsIDB4NjgyZSwgMHg2ODJhLCAweDJkMDAsIDB4NjgxYSwKLQkweDY4MzQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODAsIDB4MjA2YSwgMHgyMDA0LCAweDY4MzIsIDB4NjkyNiwKLQkweDY4NGMsIDB4YzBkZCwgMHg2ODRlLCAweDBkN2YsIDB4MDA3YywgMHgwZjdlLCAweDIwNzksIDB4MDAyMCwKLQkweDc4MDQsIDB4ZDBmYywgMHgxMGMwLCAweDFlYWEsIDB4MGU3ZSwgMHgwZDdlLCAweDIwNzEsIDB4YWEwOCwKLQkweDcwMDAsIDB4YTAwNSwgMHgwMGMwLCAweDFkZjAsIDB4MGM3ZSwgMHg3MjA2LCAweGEyODAsIDB4MDAwNCwKLQkweDIwNWMsIDB4NzAwNCwgMHgyMDY4LCAweDc4MDMsIDB4MDAwNCwgMHg2ODE4LCAweDBkN2UsIDB4MjA2OCwKLQkweDY4NmMsIDB4NzgxMiwgMHg2ODkwLCAweDBmN2UsIDB4MjBlMSwgMHg5MDQwLCAweDIwNzksIDB4MDIwMCwKLQkweDc4MWEsIDB4MjA3OSwgMHgwMTAwLCAweDgwMDQsIDB4NzhkNiwgMHgwZjdmLCAweDBkN2YsIDB4MmI2OCwKLQkweDY4MjQsIDB4MjA1MCwgMHg2ODE4LCAweDIwNjAsIDB4NjgzMCwgMHgyMDQwLCAweDYwMzQsIDB4YTBjYywKLQkweDAwMGYsIDB4NjkwOCwgMHgyMDAxLCAweDA0ZmQsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDcsIDB4MDA0MCwKLQkweDFkYjIsIDB4YTE4NCwgMHgwMDA3LCAweDAwNDAsIDB4MWRiMiwgMHgwMTdlLCAweDIwMDksIDB4MDAwOCwKLQkweGExMDIsIDB4MDE3ZiwgMHhhMTA4LCAweDc5MWEsIDB4NzExNiwgMHg3MDFlLCAweDY4MGMsIDB4YTA4MSwKLQkweDAwMDAsIDB4NzgxZSwgMHg3MDFhLCAweGEwMDYsIDB4NzAwZSwgMHg3MDEyLCAweDcwMDQsIDB4NjkyYywKLQkweDY4MTQsIDB4YTEwNiwgMHgwMGMwLCAweDFkYzksIDB4NjkyOCwgMHg2ODEwLCAweGExMDYsIDB4MDA0MCwKLQkweDFkZDYsIDB4MDM3ZSwgMHgwNDdlLCAweDZiMTQsIDB4NmMxMCwgMHgxMDc4LCAweDIwOGEsIDB4MDQ3ZiwKLQkweDAzN2YsIDB4MDA0MCwgMHgxZGQ2LCAweDBjN2YsIDB4MDA3OCwgMHgxZGYwLCAweDhhZmYsIDB4MDBjMCwKLQkweDFkZGUsIDB4MGM3ZiwgMHhhMDg1LCAweDAwMDEsIDB4MDA3OCwgMHgxZGYwLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3OSwgMHgwMDIwLCAweDIwMDksIDB4MDAwMSwgMHgxMDc4LCAweDFkZjQsIDB4MDA0MCwKLQkweDFkZWQsIDB4MjAwOSwgMHgwMDAxLCAweDEwNzgsIDB4MWRmNCwgMHgxMjdmLCAweDBjN2YsIDB4YTAwNiwKLQkweDBkN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDAwN2MsIDB4MDc3ZSwgMHgwNjdlLCAweDA1N2UsIDB4MDQ3ZSwKLQkweDAzN2UsIDB4MDI3ZSwgMHg4YWZmLCAweDAwNDAsIDB4MWU3MiwgMHg3MDBjLCAweDcyMTQsIDB4YTIzYSwKLQkweDcwMTAsIDB4NzIxOCwgMHhhMjAzLCAweDAwNDgsIDB4MWU3MSwgMHhhNzA1LCAweDAwNDAsIDB4MWU3MSwKLQkweGEwM2UsIDB4MjczMCwgMHg2ODUwLCAweGQwZmMsIDB4MDBjMCwgMHgxZTI0LCAweDBkN2UsIDB4MjgwNCwKLQkweGFjNjgsIDB4MjkwMCwgMHgwMDc5LCAweDFlMTQsIDB4MWU1MywgMHgxZTM0LCAweDFlMzQsIDB4MWU1MywKLQkweDFlNTMsIDB4MWU0YiwgMHgxZTUzLCAweDFlMzQsIDB4MWU1MywgMHgxZTNhLCAweDFlM2EsIDB4MWU1MywKLQkweDFlNTMsIDB4MWU1MywgMHgxZTQyLCAweDFlM2EsIDB4YzBmYywgMHg2ODUyLCAweDZiNmMsIDB4NmE3MCwKLQkweDZkMWMsIDB4NmMyMCwgMHhkOTljLCAweDAwNDAsIDB4MWU1NywgMHgwZDdlLCAweDI4MDQsIDB4YWM2OCwKLQkweDZmMDgsIDB4NmUwYywgMHgwMDc4LCAweDFlNTYsIDB4NmIwOCwgMHg2YTBjLCAweDZkMDAsIDB4NmMwNCwKLQkweDAwNzgsIDB4MWU1NiwgMHg2YjEwLCAweDZhMTQsIDB4NmQwMCwgMHg2YzA0LCAweDZmMDgsIDB4NmUwYywKLQkweDAwNzgsIDB4MWU1NiwgMHgwZDdmLCAweDBkN2UsIDB4NjgzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMWUsIDB4MDBjMCwgMHgxZTUzLCAweDBkN2YsIDB4MTA3OCwgMHgyMDI2LCAweDAwYzAsIDB4MWRmYSwKLQkweGEwMGUsIDB4MDA3OCwgMHgxZTcyLCAweDBkN2YsIDB4MTA3OCwgMHgxMzMyLCAweDBkN2YsIDB4N2IyMiwKLQkweDdhMjYsIDB4N2QzMiwgMHg3YzM2LCAweDdmM2EsIDB4N2UzZSwgMHg3OTAyLCAweDcwMDAsIDB4ODAwMCwKLQkweDcwMDIsIDB4NjgyOCwgMHhhMzAwLCAweDY4MmEsIDB4NjgyYywgMHhhMjAxLCAweDY4MmUsIDB4NzAwYywKLQkweGEzMDAsIDB4NzAwZSwgMHg3MDEwLCAweGEyMDEsIDB4NzAxMiwgMHgxMDc4LCAweDIwMjYsIDB4MDA3OCwKLQkweDFlNzIsIDB4YTAwNiwgMHgwMjdmLCAweDAzN2YsIDB4MDQ3ZiwgMHgwNTdmLCAweDA2N2YsIDB4MDc3ZiwKLQkweDAwN2MsIDB4MTA3OCwgMHgxMzMyLCAweDAyN2UsIDB4MjAwMSwgMHgwMTA1LCAweDIwMDMsIDB4MDAxMCwKLQkweDIwZTEsIDB4OTA0MCwgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDcwMDQsIDB4MjA2MCwKLQkweDBkN2UsIDB4NjAxMCwgMHgyMDY4LCAweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDFlOTIsIDB4Njg1MCwKLQkweGMwYmQsIDB4Njg1MiwgMHgwZDdmLCAweDBjN2UsIDB4MTA3OCwgMHg4YTExLCAweDBjN2YsIDB4MjAwMSwKLQkweGE5YzAsIDB4MjAwNCwgMHhhYzA2LCAweDAwYzAsIDB4MWVhNywgMHgyMGUxLCAweDkwNDAsIDB4MTA3OCwKLQkweDczOGEsIDB4MjAxMSwgMHgwMDAwLCAweDEwNzgsIDB4NzBlYSwgMHgxMDc4LCAweDYzOWIsIDB4MDI3ZiwKLQkweDAwNzgsIDB4MWY3NiwgMHgxMjdlLCAweDIwOTEsIDB4MjIwMCwgMHgwMDdlLCAweDAxN2UsIDB4MGY3ZSwKLQkweDBlN2UsIDB4MGQ3ZSwgMHgwYzdlLCAweDIwNzksIDB4MDAyMCwgMHgyMDcxLCAweGFhMDgsIDB4MmI2OCwKLQkweDY4MTgsIDB4MjA2MCwgMHg3OTA0LCAweDc4MDMsIDB4MDAwMiwgMHhhMTg0LCAweDA3MDAsIDB4MDBjMCwKLQkweDFlN2IsIDB4NzAwMCwgMHgwMDc5LCAweDFlYzQsIDB4MWY3NiwgMHgxZWM4LCAweDFmNDMsIDB4MWY3NCwKLQkweDgwMDEsIDB4NzAwMiwgMHhkMTljLCAweDAwYzAsIDB4MWVkYywgMHg4YWZmLCAweDAwNDAsIDB4MWVmYiwKLQkweDIwMDksIDB4MDAwMSwgMHgxMDc4LCAweDFkZjQsIDB4MDA0MCwgMHgxZjc2LCAweDIwMDksIDB4MDAwMSwKLQkweDEwNzgsIDB4MWRmNCwgMHgwMDc4LCAweDFmNzYsIDB4NzgwMywgMHgwMDA0LCAweGQxOTQsIDB4MDA0MCwKLQkweDFlZWMsIDB4Njg1MCwgMHhjMGZjLCAweDY4NTIsIDB4OGFmZiwgMHgwMGMwLCAweDFlZjEsIDB4Njg0YywKLQkweGMwZjUsIDB4Njg0ZSwgMHgwMDc4LCAweDFlZjEsIDB4MTA3OCwgMHgyMDNmLCAweDY4NTAsIDB4YzBmZCwKLQkweDY4NTIsIDB4MmEwMCwgMHg2ODI2LCAweDJjMDAsIDB4NjgxYSwgMHgyODAwLCAweDY4MzIsIDB4NzAwMywKLQkweDAwMDAsIDB4MDA3OCwgMHgxZjc2LCAweDcxMWMsIDB4ODFmZiwgMHgwMDQwLCAweDFmMTEsIDB4NzkxOCwKLQkweDc5MjIsIDB4NzgyNywgMHgwMDAwLCAweDc4MDMsIDB4MDAwMSwgMHg3MDAwLCAweDgwMDAsIDB4NzAwMiwKLQkweDcwMGMsIDB4YTEwMCwgMHg3MDBlLCAweDcwMTAsIDB4YTA4MSwgMHgwMDAwLCAweDcwMTIsIDB4MDA3OCwKLQkweDFmNzYsIDB4MGY3ZSwgMHgwMjdlLCAweDc4MWMsIDB4MDA3ZSwgMHg3ODE4LCAweDAwN2UsIDB4MjA3OSwKLQkweDAxMDAsIDB4N2ExNCwgMHhhMjg0LCAweDAwMDQsIDB4YTA4NSwgMHgwMDEyLCAweDc4MTYsIDB4MDM3ZSwKLQkweDIwMTksIDB4MTAwMCwgMHg4MzE5LCAweDEwNDAsIDB4MTMzMiwgMHg3ODIwLCAweGQwYmMsIDB4MDBjMCwKLQkweDFmMjIsIDB4MDM3ZiwgMHg3OWM4LCAweDAwN2YsIDB4YTEwMiwgMHgwMTdmLCAweDAwN2UsIDB4MDE3ZSwKLQkweDc5YzQsIDB4MDA3ZiwgMHhhMTAzLCAweDc4YzYsIDB4MDA3ZiwgMHg3OGNhLCAweGEyODQsIDB4MDAwNCwKLQkweGEwODUsIDB4MDAxMiwgMHg3ODE2LCAweDAyN2YsIDB4MGY3ZiwgMHg3ODAzLCAweDAwMDgsIDB4NzAwMywKLQkweDAwMDAsIDB4MDA3OCwgMHgxZjc2LCAweDgwMDEsIDB4NzAwMiwgMHhkMTk0LCAweDAwNDAsIDB4MWY1OCwKLQkweDc4MDQsIDB4ZDBmYywgMHgwMGMwLCAweDFlYmEsIDB4ZDE5YywgMHgwMGMwLCAweDFmNzIsIDB4OGFmZiwKLQkweDAwNDAsIDB4MWY3NiwgMHgyMDA5LCAweDAwMDEsIDB4MTA3OCwgMHgxZGY0LCAweDAwNzgsIDB4MWY3NiwKLQkweDAyN2UsIDB4MDM3ZSwgMHg2YjI4LCAweDZhMmMsIDB4MTA3OCwgMHgyMDNmLCAweDBkN2UsIDB4MjgwNCwKLQkweGFjNjgsIDB4NjAzNCwgMHhkMDljLCAweDAwYzAsIDB4MWY2YiwgMHg2ODA4LCAweGEzMWEsIDB4NjgwYywKLQkweGEyMTMsIDB4MDA3OCwgMHgxZjZmLCAweDY4MTAsIDB4YTMxYSwgMHg2ODE0LCAweGEyMTMsIDB4MGQ3ZiwKLQkweDAwNzgsIDB4MWVlYywgMHgwMDc4LCAweDFlZWMsIDB4MTA3OCwgMHgxMzMyLCAweDBjN2YsIDB4MGQ3ZiwKLQkweDBlN2YsIDB4MGY3ZiwgMHgwMTdmLCAweDAwN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MGU3ZSwKLQkweDIwNzEsIDB4YWEwOCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweDFmYzcsIDB4MjA3OSwKLQkweDAwMjAsIDB4MDE3ZSwgMHgyMDA5LCAweDAyMDcsIDB4MjEwYywgMHhkMTk0LCAweDAwNDAsIDB4MWZhNCwKLQkweDIwMDksIDB4MDIwYywgMHgyMTBjLCAweGExODQsIDB4MDAwMywgMHgwMDQwLCAweDFmYTQsIDB4MTA3OCwKLQkweGE1ZTIsIDB4MjAwMSwgMHgwMTMzLCAweDIwMDQsIDB4YTAwNSwgMHgxMDQwLCAweDEzMzIsIDB4MjBlMSwKLQkweDkwNDAsIDB4MjAwMSwgMHgwMjBjLCAweDIxMDIsIDB4MjAwOSwgMHgwMjA2LCAweDIxMDQsIDB4MjAwOSwKLQkweDAyMDMsIDB4MjEwYywgMHhhMTA2LCAweDAwYzAsIDB4MWZhZiwgMHgyMGUxLCAweDkwNDAsIDB4NzgwNCwKLQkweGQwZmMsIDB4MDA0MCwgMHgxZjhhLCAweDEwNzgsIDB4MWVhYSwgMHg3MDAwLCAweGEwODYsIDB4MDAwMCwKLQkweDAwYzAsIDB4MWY4YSwgMHgwMTdmLCAweDc4MDMsIDB4MDAwNCwgMHg3ODA0LCAweGQwYWMsIDB4MDBjMCwKLQkweDFmYmQsIDB4MjBlMSwgMHg5MDQwLCAweDc4MDMsIDB4MDAwMiwgMHg3MDAzLCAweDAwMDAsIDB4MGU3ZiwKLQkweDBmN2YsIDB4MDA3YywgMHgwMjdlLCAweDBjN2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDBmN2UsIDB4MjA3MSwKLQkweGFhMDgsIDB4MjA3OSwgMHgwMDIwLCAweDcwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDAwNDAsIDB4MjAwMywKLQkweDcwMDQsIDB4MjA2MCwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4MWZlZCwKLQkweDY4NTAsIDB4YzBiNSwgMHg2ODUyLCAweDY4MGMsIDB4N2ExYywgMHhhMjA2LCAweDAwYzAsIDB4MWZlZCwKLQkweDY4MDgsIDB4N2ExOCwgMHhhMjA2LCAweDAwNDAsIDB4MjAwOSwgMHgyMDAxLCAweDAxMDUsIDB4MjAwMywKLQkweDAwMTAsIDB4MjBlMSwgMHg5MDQwLCAweDc4MDMsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4NzAwNCwKLQkweDIwNjAsIDB4MTA3OCwgMHg4YTExLCAweDIwZTEsIDB4OTA0MCwgMHgxMDc4LCAweDczOGEsIDB4MjAxMSwKLQkweDAwMDAsIDB4MTA3OCwgMHg3MGVhLCAweDBmN2YsIDB4MGU3ZiwgMHgwZDdmLCAweDBjN2YsIDB4MDI3ZiwKLQkweDAwN2MsIDB4NjgxMCwgMHg2YTE0LCAweGEyMDUsIDB4MDBjMCwgMHgxZmVkLCAweDY4NGMsIDB4YzBkYywKLQkweDY4NGUsIDB4MmMxMCwgMHgxMDc4LCAweDFjZjAsIDB4MjAwMSwgMHgwMTA1LCAweDIwMDMsIDB4MDAxMCwKLQkweDIwZTEsIDB4OTA0MCwgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDIwNjksIDB4YTliMSwKLQkweDY4MzMsIDB4MDAwMCwgMHg2ODNmLCAweDAwMDAsIDB4MDA3OCwgMHgyMDAzLCAweDg4NDAsIDB4MjgwNCwKLQkweGEwMDUsIDB4MDBjMCwgMHgyMDNhLCAweDYwMDQsIDB4YTAwNSwgMHgwMDQwLCAweDIwM2MsIDB4NjgxYSwKLQkweDIwNjAsIDB4NjAzNCwgMHhhMDg0LCAweDAwMGYsIDB4YTA4MCwgMHgyMDZhLCAweDIwNDQsIDB4ODhmZiwKLQkweDEwNDAsIDB4MTMzMiwgMHg4YTUxLCAweDAwN2MsIDB4MjA1MSwgMHgwMDAwLCAweDAwN2MsIDB4OGE1MCwKLQkweDg4NDEsIDB4MjgwNCwgMHhhMDA1LCAweDAwYzAsIDB4MjA1OSwgMHgyYzAwLCAweGFkMDYsIDB4MDA0MCwKLQkweDIwNGUsIDB4NjAwMCwgMHhhMDA1LCAweDAwYzAsIDB4MjA0ZSwgMHgyZDAwLCAweDIwNjAsIDB4NjgxYSwKLQkweDYwMzQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODAsIDB4MjA3YSwgMHgyMDQ0LCAweDg4ZmYsIDB4MTA0MCwKLQkweDEzMzIsIDB4MDA3YywgMHgwMDAwLCAweDAwMTEsIDB4MDAxNSwgMHgwMDE5LCAweDAwMWQsIDB4MDAyMSwKLQkweDAwMjUsIDB4MDAyOSwgMHgwMDAwLCAweDAwMGYsIDB4MDAxNSwgMHgwMDFiLCAweDAwMjEsIDB4MDAyNywKLQkweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIwNWYsIDB4MjA1YiwgMHgwMDAwLCAweDAwMDAsIDB4MjA2OSwKLQkweDAwMDAsIDB4MjA1ZiwgMHgwMDAwLCAweDIwNjYsIDB4MjA2MywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKLQkweDIwNjksIDB4MjA2NiwgMHgwMDAwLCAweDIwNjEsIDB4MjA2MSwgMHgwMDAwLCAweDAwMDAsIDB4MjA2OSwKLQkweDAwMDAsIDB4MjA2MSwgMHgwMDAwLCAweDIwNjcsIDB4MjA2NywgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwKLQkweDIwNjksIDB4MjA2NywgMHgwYTdlLCAweDA5N2UsIDB4MDg3ZSwgMHg2YjJlLCAweDZjMmEsIDB4Njg1OCwKLQkweGEwNTUsIDB4MDA0MCwgMHgyMTJkLCAweDJkNjAsIDB4NjAzNCwgMHhhMGNjLCAweDAwMGYsIDB4YTljMCwKLQkweDIwNmEsIDB4YTk4NiwgMHgwMDA3LCAweDAwNDAsIDB4MjBhNSwgMHhhOTg2LCAweDAwMGUsIDB4MDA0MCwKLQkweDIwYTUsIDB4YTk4NiwgMHgwMDBmLCAweDAwYzAsIDB4MjBhOSwgMHg2MDVjLCAweGE0MjIsIDB4NjA2MCwKLQkweGEzMWIsIDB4MjgwNCwgMHhhMDQ1LCAweDAwYzAsIDB4MjBiNywgMHgwMDUwLCAweDIwYjEsIDB4MDA3OCwKLQkweDIxMmQsIDB4NjAwNCwgMHhhMDY1LCAweDAwNDAsIDB4MjEyZCwgMHgwMDc4LCAweDIwOTQsIDB4MjgwNCwKLQkweGEwMDUsIDB4MDA0MCwgMHgyMGQ1LCAweGFjNjgsIDB4ZDk5YywgMHgwMGMwLCAweDIwYzUsIDB4NjgwOCwKLQkweGE0MjIsIDB4NjgwYywgMHhhMzFiLCAweDAwNzgsIDB4MjBjOSwgMHg2ODEwLCAweGE0MjIsIDB4NjgxNCwKLQkweGEzMWIsIDB4MDA0OCwgMHgyMGY0LCAweDIzMDAsIDB4YTQwNSwgMHgwMDQwLCAweDIwZGIsIDB4OGE1MSwKLQkweDAwNDAsIDB4MjEyZCwgMHg4ODQwLCAweDAwNzgsIDB4MjBiNywgMHg2MDA0LCAweGEwNjUsIDB4MDA0MCwKLQkweDIxMmQsIDB4MDA3OCwgMHgyMDk0LCAweDhhNTEsIDB4MDA0MCwgMHgyMTJkLCAweDg4NDAsIDB4MjgwNCwKLQkweGEwMDUsIDB4MDBjMCwgMHgyMGVlLCAweDYwMDQsIDB4YTA2NSwgMHgwMDQwLCAweDIxMmQsIDB4NjAzNCwKLQkweGEwY2MsIDB4MDAwZiwgMHhhOWMwLCAweDIwNmEsIDB4MjgwNCwgMHgyMDQwLCAweDJiNjgsIDB4Njg1MCwKLQkweGMwZmMsIDB4Njg1MiwgMHgwMDc4LCAweDIxMjEsIDB4ODQyMiwgMHg4NDIwLCAweDgzMWEsIDB4YTM5OSwKLQkweDAwMDAsIDB4MGQ3ZSwgMHgyYjY4LCAweDZjNmUsIDB4NmI3MiwgMHgwZDdmLCAweGQ5OWMsIDB4MDBjMCwKLQkweDIxMGYsIDB4NjkwOCwgMHgyNDAwLCAweGExMjIsIDB4NjkwYywgMHgyMzAwLCAweGExMWIsIDB4MTA0OCwKLQkweDEzMzIsIDB4NjgwMCwgMHhhNDIwLCAweDY4MDQsIDB4YTMxOSwgMHgwMDc4LCAweDIxMWIsIDB4NjkxMCwKLQkweDI0MDAsIDB4YTEyMiwgMHg2OTE0LCAweDIzMDAsIDB4YTExYiwgMHgxMDQ4LCAweDEzMzIsIDB4NjgwMCwKLQkweGE0MjAsIDB4NjgwNCwgMHhhMzE5LCAweDJiNjgsIDB4NmMxZSwgMHg2YjIyLCAweDY4NTAsIDB4YzBmZCwKLQkweDY4NTIsIDB4MmMwMCwgMHg2ODFhLCAweDI4MDAsIDB4NjgzMiwgMHgyYTAwLCAweDY4MjYsIDB4MDA3ZiwKLQkweDAwN2YsIDB4MDA3ZiwgMHhhMDA2LCAweDAwNzgsIDB4MjEzMiwgMHgwODdmLCAweDA5N2YsIDB4MGE3ZiwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDIwMDEsIDB4MDAwNSwgMHgyMDA0LCAweGEwODQsIDB4MDAwNywKLQkweDAwNzksIDB4MjEzYSwgMHgyMTQyLCAweDIxNDMsIDB4MjE0NiwgMHgyMTQ5LCAweDIxNGUsIDB4MjE1MSwKLQkweDIxNTYsIDB4MjE1YiwgMHgwMDdjLCAweDEwNzgsIDB4MWVhYSwgMHgwMDdjLCAweDEwNzgsIDB4MTkxMywKLQkweDAwN2MsIDB4MTA3OCwgMHgxOTEzLCAweDEwNzgsIDB4MWVhYSwgMHgwMDdjLCAweDEwNzgsIDB4MTRiZSwKLQkweDAwN2MsIDB4MTA3OCwgMHgxZWFhLCAweDEwNzgsIDB4MTRiZSwgMHgwMDdjLCAweDEwNzgsIDB4MTkxMywKLQkweDEwNzgsIDB4MTRiZSwgMHgwMDdjLCAweDEwNzgsIDB4MTkxMywgMHgxMDc4LCAweDFlYWEsIDB4MTA3OCwKLQkweDE0YmUsIDB4MDA3YywgMHgxMjdlLCAweDIwOTEsIDB4MjMwMCwgMHgyMDc5LCAweDAyMDAsIDB4MjA3MSwKLQkweGFjODAsIDB4MjA2OSwgMHhhNzAwLCAweDIwMDksIDB4MDAwNCwgMHg3OTEyLCAweDc4MTcsIDB4MDAwNCwKLQkweDEwNzgsIDB4MjUxZiwgMHg3ODFiLCAweDAwMDIsIDB4MjBlMSwgMHg4NzAwLCAweDEyN2YsIDB4MDA3YywKLQkweDEyN2UsIDB4MjA5MSwgMHgyMzAwLCAweDc4MWMsIDB4YTA4NCwgMHgwMDA3LCAweDAwNzksIDB4MjE4MCwKLQkweDIxYTQsIDB4MjE4OCwgMHgyMThjLCAweDIxOTAsIDB4MjE5NiwgMHgyMTlhLCAweDIxOWUsIDB4MjFhMiwKLQkweDEwNzgsIDB4NTQ4ZSwgMHgwMDc4LCAweDIxYTQsIDB4MTA3OCwgMHg1NGRhLCAweDAwNzgsIDB4MjFhNCwKLQkweDEwNzgsIDB4NTQ4ZSwgMHgxMDc4LCAweDU0ZGEsIDB4MDA3OCwgMHgyMWE0LCAweDEwNzgsIDB4MjFhNiwKLQkweDAwNzgsIDB4MjFhNCwgMHgxMDc4LCAweDIxYTYsIDB4MDA3OCwgMHgyMWE0LCAweDEwNzgsIDB4MjFhNiwKLQkweDAwNzgsIDB4MjFhNCwgMHgxMDc4LCAweDIxYTYsIDB4MTI3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MDE3ZSwKLQkweDAyN2UsIDB4MTA3OCwgMHhhNWUyLCAweDc5MzAsIDB4YTE4NCwgMHgwMDAzLCAweDAwNDAsIDB4MjFjOSwKLQkweDIwMDEsIDB4YTljMCwgMHgyMDA0LCAweGEwMDUsIDB4MDA0MCwgMHgyMWM1LCAweDIwMDEsIDB4MDEzMywKLQkweDIwMDQsIDB4YTAwNSwgMHgxMDQwLCAweDEzMzIsIDB4MGM3ZSwgMHgyMDAxLCAweGE5YzAsIDB4MjA2NCwKLQkweDEwNzgsIDB4OGExMSwgMHgwYzdmLCAweDAwNzgsIDB4MjFmMiwgMHgyMGUxLCAweDkwNDAsIDB4MDA3OCwKLQkweDIxZjIsIDB4YTE4NCwgMHgwMDMwLCAweDAwNDAsIDB4MjFkYSwgMHg2YTAwLCAweGEyODYsIDB4MDAwMywKLQkweDAwYzAsIDB4MjFkNCwgMHgwMDc4LCAweDIxZDYsIDB4MTA3OCwgMHg0MjI0LCAweDIwZTEsIDB4OTAxMCwKLQkweDAwNzgsIDB4MjFmMiwgMHhhMTg0LCAweDAwYzAsIDB4MDA0MCwgMHgyMWVjLCAweDBlN2UsIDB4MDM3ZSwKLQkweDA0N2UsIDB4MDU3ZSwgMHgyMDcxLCAweGE5ZTcsIDB4MTA3OCwgMHgxYWY0LCAweDA1N2YsIDB4MDQ3ZiwKLQkweDAzN2YsIDB4MGU3ZiwgMHgwMDc4LCAweDIxZjIsIDB4YTE4NCwgMHgwMzAwLCAweDAwNDAsIDB4MjFmMiwKLQkweDIwZTEsIDB4OTAyMCwgMHg3OTMyLCAweDAyN2YsIDB4MDE3ZiwgMHgwMDdmLCAweDAwN2MsIDB4MDE3ZSwKLQkweDBlN2UsIDB4MGY3ZSwgMHgyMDcxLCAweGE3MDAsIDB4NzEyOCwgMHgyMDAxLCAweGE5OTAsIDB4MjEwMiwKLQkweDIwMDEsIDB4YTk5OCwgMHgyMTAyLCAweGExODIsIDB4MDIxMSwgMHgwMGM4LCAweDIyMGIsIDB4MjAwOSwKLQkweDAwMDgsIDB4MDA3OCwgMHgyMjM1LCAweGExODIsIDB4MDI1OSwgMHgwMGM4LCAweDIyMTMsIDB4MjAwOSwKLQkweDAwMDcsIDB4MDA3OCwgMHgyMjM1LCAweGExODIsIDB4MDJjMSwgMHgwMGM4LCAweDIyMWIsIDB4MjAwOSwKLQkweDAwMDYsIDB4MDA3OCwgMHgyMjM1LCAweGExODIsIDB4MDM0OSwgMHgwMGM4LCAweDIyMjMsIDB4MjAwOSwKLQkweDAwMDUsIDB4MDA3OCwgMHgyMjM1LCAweGExODIsIDB4MDQyMSwgMHgwMGM4LCAweDIyMmIsIDB4MjAwOSwKLQkweDAwMDQsIDB4MDA3OCwgMHgyMjM1LCAweGExODIsIDB4MDU4MSwgMHgwMGM4LCAweDIyMzMsIDB4MjAwOSwKLQkweDAwMDMsIDB4MDA3OCwgMHgyMjM1LCAweDIwMDksIDB4MDAwMiwgMHgyMDc5LCAweDAyMDAsIDB4NzkxMiwKLQkweDc4MTcsIDB4MDAwNCwgMHgxMDc4LCAweDI1MWYsIDB4MGY3ZiwgMHgwZTdmLCAweDAxN2YsIDB4MDA3YywKLQkweDEyN2UsIDB4MjA5MSwgMHgyMjAwLCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweGE3MDAsIDB4NjAyNCwKLQkweDYwMjYsIDB4NjA1MywgMHgwMDMwLCAweDYwMzMsIDB4MDBlZiwgMHg2MGU3LCAweDAwMDAsIDB4NjBlYiwKLQkweDAwZWYsIDB4NjBlMywgMHgwMDA4LCAweDYwNGIsIDB4ZjdmNywgMHg2MDQzLCAweDAwMDAsIDB4NjAyZiwKLQkweDAwODAsIDB4NjAyZiwgMHgwMDAwLCAweDYwMDcsIDB4MGVhZiwgMHg2MDBmLCAweDAwZmYsIDB4NjAyYiwKLQkweDAwMmYsIDB4MTI3ZiwgMHgwMDdjLCAweDIwMDEsIDB4YTczMCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweGE3MmYsIDB4MjAwMywgMHgwMDAxLCAweDAwN2MsIDB4MTI3ZSwgMHgyMDkxLCAweDIyMDAsIDB4MDA3ZSwKLQkweDAxN2UsIDB4MDI3ZSwgMHg2MTI0LCAweGExODQsIDB4MDAyYywgMHgwMGMwLCAweDIyN2IsIDB4YTE4NCwKLQkweDAwMDcsIDB4MDA3OSwgMHgyMjgxLCAweGExOTUsIDB4MDAwNCwgMHhhMjg0LCAweDAwMDcsIDB4MDA3OSwKLQkweDIyODEsIDB4MjJhZCwgMHgyMjg5LCAweDIyOGQsIDB4MjI5MSwgMHgyMjk3LCAweDIyOWIsIDB4MjJhMSwKLQkweDIyYTcsIDB4MTA3OCwgMHg1YzU2LCAweDAwNzgsIDB4MjJhZCwgMHgxMDc4LCAweDVkNDUsIDB4MDA3OCwKLQkweDIyYWQsIDB4MTA3OCwgMHg1ZDQ1LCAweDEwNzgsIDB4NWM1NiwgMHgwMDc4LCAweDIyYWQsIDB4MTA3OCwKLQkweDIyYjIsIDB4MDA3OCwgMHgyMmFkLCAweDEwNzgsIDB4NWM1NiwgMHgxMDc4LCAweDIyYjIsIDB4MDA3OCwKLQkweDIyYWQsIDB4MTA3OCwgMHg1ZDQ1LCAweDEwNzgsIDB4MjJiMiwgMHgwMDc4LCAweDIyYWQsIDB4MTA3OCwKLQkweDVkNDUsIDB4MTA3OCwgMHg1YzU2LCAweDEwNzgsIDB4MjJiMiwgMHgwMjdmLCAweDAxN2YsIDB4MDA3ZiwKLQkweDEyN2YsIDB4MDA3YywgMHg2MTI0LCAweGQxYWMsIDB4MDA0MCwgMHgyM2FjLCAweDAxN2UsIDB4MDQ3ZSwKLQkweDBjN2UsIDB4NjQ0YywgMHhhNDg2LCAweGYwZjAsIDB4MDBjMCwgMHgyMmM1LCAweDIwNjEsIDB4MDEwMCwKLQkweDY0NGEsIDB4NjA0MywgMHgwMDkwLCAweDYwNDMsIDB4MDAxMCwgMHg3NGM2LCAweGE0OGMsIDB4ZmYwMCwKLQkweDcwMzQsIDB4ZDA4NCwgMHgwMDQwLCAweDIyZGQsIDB4YTE4NiwgMHhmODAwLCAweDAwYzAsIDB4MjJkZCwKLQkweDcwM2MsIDB4ZDA4NCwgMHgwMGMwLCAweDIyZGQsIDB4YzA4NSwgMHg3MDNlLCAweDAzN2UsIDB4MjQxOCwKLQkweDIwMTEsIDB4ODAxNiwgMHgxMDc4LCAweDM2MWIsIDB4MDM3ZiwgMHhhMTk2LCAweGZmMDAsIDB4MDA0MCwKLQkweDIzMWYsIDB4NjAzMCwgMHhhMDg0LCAweDAwZmYsIDB4ODEwZiwgMHhhMTE2LCAweDAwNDAsIDB4MjMxZiwKLQkweDcxMzAsIDB4ZDE4NCwgMHgwMGMwLCAweDIzMWYsIDB4MjAxMSwgMHhhNzUzLCAweDIyMTQsIDB4ZDJlYywKLQkweDAwNDAsIDB4MjJmYSwgMHhjMThkLCAweDcxMzIsIDB4MjAxMSwgMHhhNzUzLCAweDIyMTQsIDB4ZDJhYywKLQkweDAwYzAsIDB4MjMxZiwgMHg2MjQwLCAweGEyOTQsIDB4MDAxMCwgMHgwMDQwLCAweDIzMDYsIDB4NjI0OCwKLQkweGEyOTQsIDB4ZmYwMCwgMHhhMjk2LCAweGZmMDAsIDB4MDA0MCwgMHgyMzFmLCAweDcwMzAsIDB4ZDA4YywKLQkweDAwNDAsIDB4MjM3MSwgMHg3MDM0LCAweGQwOGMsIDB4MDBjMCwgMHgyMzE2LCAweDIwMDEsIDB4YTcwYywKLQkweDIwMGMsIDB4ZDFhYywgMHgwMGMwLCAweDIzNzEsIDB4YzFhZCwgMHgyMTAyLCAweDAzN2UsIDB4NzNjNCwKLQkweDIwMTEsIDB4ODAxMywgMHgxMDc4LCAweDM2MWIsIDB4MDM3ZiwgMHgwMDc4LCAweDIzNzEsIDB4NzAzNCwKLQkweGQwOGMsIDB4MDBjMCwgMHgyMzJiLCAweDIwMDEsIDB4YTcwYywgMHgyMDBjLCAweGQxYWMsIDB4MDBjMCwKLQkweDIzNzEsIDB4YzFhZCwgMHgyMTAyLCAweDAzN2UsIDB4NzNjNCwgMHgyMDExLCAweDgwMTMsIDB4MTA3OCwKLQkweDM2MWIsIDB4MDM3ZiwgMHg3MTMwLCAweGMxODUsIDB4NzEzMiwgMHgyMDExLCAweGE3NTMsIDB4MjIwYywKLQkweGQxYTQsIDB4MDA0MCwgMHgyMzU1LCAweDAxN2UsIDB4MjAwOSwgMHgwMDAxLCAweDIwMTEsIDB4MDEwMCwKLQkweDEwNzgsIDB4NWJmMSwgMHgyMDE5LCAweDAwMGUsIDB4MTA3OCwgMHhhMWE1LCAweGE0ODQsIDB4MDBmZiwKLQkweGEwODAsIDB4MjljMCwgMHgyMDBjLCAweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDgxMjcsIDB4YTAwNiwKLQkweDIwMDksIDB4MDAwZSwgMHgxMDc4LCAweGEyMmQsIDB4MDE3ZiwgMHhkMWFjLCAweDAwYzAsIDB4MjM2MiwKLQkweDAxN2UsIDB4MjAwOSwgMHgwMDAwLCAweDIwMTksIDB4MDAwNCwgMHgxMDc4LCAweDI4NGYsIDB4MDE3ZiwKLQkweDAwNzgsIDB4MjM3MSwgMHgxNTdlLCAweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwKLQkweDQ1YzQsIDB4MDBjMCwgMHgyMzZkLCAweDEwNzgsIDB4NDJmOCwgMHg4MTA4LCAweDAwZjAsIDB4MjM2NywKLQkweDE1N2YsIDB4MGM3ZiwgMHgwNDdmLCAweDBmN2UsIDB4MjA3OSwgMHhhOWM0LCAweDc4M2MsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDA0MCwgMHgyMzgzLCAweDYwMjcsIDB4MDAwNCwgMHg3ODNmLCAweDAwMDAsIDB4MjA3OSwKLQkweDAxNDAsIDB4NzgwMywgMHgwMDAwLCAweDBmN2YsIDB4MjAxMSwgMHgwMDAzLCAweDEwNzgsIDB4NzBlMCwKLQkweDIwMTEsIDB4MDAwMiwgMHgxMDc4LCAweDcwZWEsIDB4MTA3OCwgMHg2ZmM0LCAweDAzN2UsIDB4MjAxOSwKLQkweDAwMDAsIDB4MTA3OCwgMHg3MDU4LCAweDAzN2YsIDB4NjBlMywgMHgwMDAwLCAweDAxN2YsIDB4MjAwMSwKLQkweGE3MDAsIDB4MjAxNCwgMHhhMjk2LCAweDAwMDQsIDB4MDBjMCwgMHgyM2E0LCAweGQxOWMsIDB4MDBjMCwKLQkweDIzYWMsIDB4NjIyOCwgMHhjMjlkLCAweDYyMmEsIDB4MjAwMywgMHgwMDAxLCAweDIwMDEsIDB4YTcyMiwKLQkweDIwMDMsIDB4MDAwMCwgMHg2MDI3LCAweDAwMjAsIDB4ZDE5NCwgMHgwMDQwLCAweDI0OTAsIDB4MGY3ZSwKLQkweDIwNzksIDB4YTljNCwgMHg3ODNjLCAweGEwODYsIDB4MDAwMSwgMHgwMGMwLCAweDIzZDAsIDB4MDE3ZSwKLQkweDYwMjcsIDB4MDAwNCwgMHg3ODNmLCAweDAwMDAsIDB4MjA3OSwgMHgwMTQwLCAweDc4MDMsIDB4MTAwMCwKLQkweDc4MDMsIDB4MDAwMCwgMHgyMDc5LCAweGE5YjEsIDB4NzgwNywgMHgwMDAwLCAweDc4MzMsIDB4MDAwMCwKLQkweDEwNzgsIDB4NjJkMSwgMHgxMDc4LCAweDYzOWIsIDB4MDE3ZiwgMHgwZjdmLCAweDAwNzgsIDB4MjQ5MCwKLQkweDBmN2YsIDB4MDE3ZSwgMHgzOTAwLCAweGEwODIsIDB4YWFlMywgMHgwMGM4LCAweDIzZGIsIDB4MDE3ZSwKLQkweDEwNzgsIDB4NzQ3YSwgMHgwMTdmLCAweDYyMjAsIDB4ZDJiNCwgMHgwMDQwLCAweDI0NDYsIDB4MTA3OCwKLQkweDVhY2IsIDB4MTA3OCwgMHg2ZTBmLCAweDYwMjcsIDB4MDAwNCwgMHgwZjdlLCAweDIwMTksIDB4YTliYSwKLQkweDIzMDQsIDB4YTA3ZCwgMHgwMDQwLCAweDI0MWMsIDB4NzgwNCwgMHhhMDg2LCAweDAwMzIsIDB4MDBjMCwKLQkweDI0MWMsIDB4MGQ3ZSwgMHgwYzdlLCAweDBlN2UsIDB4MjA2OSwgMHgwMTQwLCAweDYxOGMsIDB4NjI4OCwKLQkweDc4MTgsIDB4NjA4ZSwgMHg3ODA4LCAweDYwOGEsIDB4NjA0MywgMHgwMDAyLCAweDIwMDEsIDB4MDAwMywKLQkweDgwMDEsIDB4MDBjMCwgMHgyNDAwLCAweDYwNDMsIDB4MDAwMCwgMHg2ODAzLCAweDEwMDAsIDB4NjgwMywKLQkweDAwMDAsIDB4NjE4ZSwgMHg2MjhhLCAweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDYyZDEsIDB4NzgxMCwKLQkweDIwNzAsIDB4NzAzNywgMHgwMTAzLCAweDJmNjAsIDB4MTA3OCwgMHg3NzJkLCAweDBlN2YsIDB4MGM3ZiwKLQkweDBkN2YsIDB4MGY3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MGY3ZiwgMHgwZDdlLCAweDIwNjksIDB4MDE0MCwKLQkweDY4MDQsIDB4YTA4NCwgMHg0MDAwLCAweDAwNDAsIDB4MjQyOSwgMHg2ODAzLCAweDEwMDAsIDB4NjgwMywKLQkweDAwMDAsIDB4MGQ3ZiwgMHgwYzdlLCAweDIwNjEsIDB4YTliMSwgMHg2MDI4LCAweGEwOWEsIDB4MDBjOCwKLQkweDAwYzgsIDB4MjQzOSwgMHg4MDAwLCAweDYwMmEsIDB4MGM3ZiwgMHgxMDc4LCAweDZlMDEsIDB4MDA3OCwKLQkweDI0OGYsIDB4MjAxOSwgMHhhOWJhLCAweDIzMDQsIDB4YTA2NSwgMHgwMDQwLCAweDI0NDMsIDB4MjAwOSwKLQkweDAwMjcsIDB4MTA3OCwgMHg3NzVjLCAweDBjN2YsIDB4MDA3OCwgMHgyNDhmLCAweGQyYmMsIDB4MDA0MCwKLQkweDI0OGYsIDB4MTA3OCwgMHg1YWQ4LCAweDYwMTcsIDB4MDAxMCwgMHg2MDI3LCAweDAwMDQsIDB4MGQ3ZSwKLQkweDIwNjksIDB4MDE0MCwgMHg2ODA0LCAweGEwODQsIDB4NDAwMCwgMHgwMDQwLCAweDI0NWIsIDB4NjgwMywKLQkweDEwMDAsIDB4NjgwMywgMHgwMDAwLCAweDBkN2YsIDB4MGM3ZSwgMHgyMDYxLCAweGE5YjEsIDB4NjA0NCwKLQkweGEwOWEsIDB4MDBjOCwgMHgwMGM4LCAweDI0N2UsIDB4ODAwMCwgMHg2MDQ2LCAweDYwM2MsIDB4MGM3ZiwKLQkweGEwMDUsIDB4MDA0MCwgMHgyNDhmLCAweDIwMDksIDB4MDdkMCwgMHgxMDc4LCAweDVhZDAsIDB4YTA4MCwKLQkweDAwMDcsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHgyNDdhLCAweDYwMTcsIDB4MDAxMiwKLQkweDAwNzgsIDB4MjQ4ZiwgMHg2MDE3LCAweDAwMTYsIDB4MDA3OCwgMHgyNDhmLCAweDAzN2UsIDB4MjAxOSwKLQkweDAwMDEsIDB4MTA3OCwgMHg3MDU4LCAweDAzN2YsIDB4MjAxOSwgMHhhOWMwLCAweDIzMDQsIDB4YTA2NSwKLQkweDAwNDAsIDB4MjQ4ZSwgMHgyMDA5LCAweDAwNGYsIDB4MTA3OCwgMHg3NzVjLCAweDBjN2YsIDB4MDE3ZiwKLQkweGQxOWMsIDB4MDA0MCwgMHgyNGU0LCAweDcwMzQsIDB4ZDBhYywgMHgwMGMwLCAweDI0YzEsIDB4MDE3ZSwKLQkweDE1N2UsIDB4NjAyNywgMHgwMDA4LCAweDYwMmYsIDB4MDAyMCwgMHgyMGE5LCAweDAwMGEsIDB4MDBmMCwKLQkweDI0OWYsIDB4NjAyZiwgMHgwMDAwLCAweDYxNTAsIDB4YTE4NSwgMHgxNDAwLCAweDYwNTIsIDB4MjBhOSwKLQkweDAzMjAsIDB4MDBlMCwgMHgyNGE5LCAweDIwOTEsIDB4NjAwMCwgMHg2MDIwLCAweGQwOWMsIDB4MDBjMCwKLQkweDI0YjgsIDB4MTU3ZiwgMHg2MTUyLCAweDAxN2YsIDB4NjAyNywgMHgwMDA4LCAweDAwNzgsIDB4MjRlNCwKLQkweDEwNzgsIDB4MjU3NywgMHgwMGYwLCAweDI0YTksIDB4MTU3ZiwgMHg2MTUyLCAweDAxN2YsIDB4NjAyNywKLQkweDAwMDgsIDB4MDE3ZSwgMHg2MDI4LCAweGMwOWMsIDB4NjAyYSwgMHgyMDExLCAweDAwMDMsIDB4MTA3OCwKLQkweDcwZTAsIDB4MjAxMSwgMHgwMDAyLCAweDEwNzgsIDB4NzBlYSwgMHgxMDc4LCAweDZmYzQsIDB4MDM3ZSwKLQkweDIwMTksIDB4MDAwMCwgMHgxMDc4LCAweDcwNTgsIDB4MDM3ZiwgMHg2MGUzLCAweDAwMDAsIDB4MTA3OCwKLQkweGE1YmQsIDB4MTA3OCwgMHhhNWRiLCAweDIwMDEsIDB4YTcwMCwgMHgyMDAzLCAweDAwMDQsIDB4NjAyNywKLQkweDAwMDgsIDB4MTA3OCwgMHgxMjQ2LCAweDAxN2YsIDB4YTE4YywgMHhmZmQwLCAweDYxMjYsIDB4MDA3YywKLQkweDAwN2UsIDB4MDE3ZSwgMHgwMjdlLCAweDBlN2UsIDB4MGY3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YTcwMCwgMHg3MWJjLCAweDcwYmUsIDB4YTExNiwgMHgwMDQwLCAweDI1MTgsIDB4ODFmZiwKLQkweDAwNDAsIDB4MjUwMCwgMHgyMDExLCAweDgwMTEsIDB4MTA3OCwgMHgzNjFiLCAweDAwNzgsIDB4MjUxOCwKLQkweDIwMTEsIDB4ODAxMiwgMHgxMDc4LCAweDM2MWIsIDB4MjAwMSwgMHhhNzcyLCAweDIwMDQsIDB4ZDBmYywKLQkweDAwYzAsIDB4MjUxOCwgMHgwMzdlLCAweDBjN2UsIDB4MTA3OCwgMHg2ZjlmLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwMTksIDB4MDAyOCwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwgMHgyODRmLCAweDBjN2YsIDB4MDM3ZiwKLQkweDEyN2YsIDB4MGY3ZiwgMHgwZTdmLCAweDAyN2YsIDB4MDE3ZiwgMHgwMDdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDBmN2UsIDB4MDA3ZSwgMHgwMjdlLCAweDIwNjEsIDB4MDEwMCwgMHhhMTkwLCAweDI1M2IsIDB4MjIwNCwKLQkweDYwZjIsIDB4MjAxMSwgMHgyNTQ4LCAweDYwMDAsIDB4YTA4MiwgMHgwMDAzLCAweDAwYzgsIDB4MjUzNCwKLQkweDIwMDEsIDB4MDBmZiwgMHgwMDc4LCAweDI1MzUsIDB4MjIwNCwgMHg2MGVlLCAweDAyN2YsIDB4MDA3ZiwKLQkweDBmN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDA4NDAsIDB4MDg0MCwgMHgwODQwLCAweDA1ODAsIDB4MDQyMCwKLQkweDAzNDgsIDB4MDJjMCwgMHgwMjU4LCAweDAyMTAsIDB4MDFhOCwgMHgwMWE4LCAweDAxYTgsIDB4MDFhOCwKLQkweDAxNDAsIDB4MDBmOCwgMHgwMGQwLCAweDAwYjAsIDB4MDBhMCwgMHgyMDI4LCAweGExOGMsIDB4MDBmZiwKLQkweDIxMzAsIDB4YTA5NCwgMHhmZjAwLCAweDAwYzAsIDB4MjU1OCwgMHg4MWZmLCAweDAwNDAsIDB4MjU1YywKLQkweDEwNzgsIDB4NTc2MSwgMHgwMDc4LCAweDI1NjMsIDB4YTA4MCwgMHgyOWMwLCAweDIwMGMsIDB4YTE4YywKLQkweGZmMDAsIDB4ODEwZiwgMHhhMDA2LCAweDAwN2MsIDB4YTA4MCwgMHgyOWMwLCAweDIwMGMsIDB4YTE4YywKLQkweDAwZmYsIDB4MDA3YywgMHgwYzdlLCAweDIwNjEsIDB4YTcwMCwgMHg2MDMwLCAweDAwNDAsIDB4MjU3MywKLQkweGMwOWQsIDB4MDA3OCwgMHgyNTc0LCAweGMwOWMsIDB4NjAzMiwgMHgwYzdmLCAweDAwN2MsIDB4MDA3ZSwKLQkweDE1N2UsIDB4MGY3ZSwgMHgyMDc5LCAweDAxMDAsIDB4MjBhOSwgMHgwMDBhLCAweDc4NTQsIDB4ZDA4YywKLQkweDAwYzAsIDB4MjU4NCwgMHgwMGYwLCAweDI1N2UsIDB4MGY3ZiwgMHgxNTdmLCAweDAwN2YsIDB4MDA3YywKLQkweDBjN2UsIDB4MDA3ZSwgMHgyMDYxLCAweDAxMDAsIDB4NjAzMCwgMHgwMDdlLCAweDYwNDgsIDB4MDA3ZSwKLQkweDYwZTQsIDB4MDA3ZSwgMHg2MGU4LCAweDAwN2UsIDB4NjA1MCwgMHgwMDdlLCAweDYwZjAsIDB4MDA3ZSwKLQkweDYwZWMsIDB4MDA3ZSwgMHg2MDBjLCAweDAwN2UsIDB4NjAwNCwgMHgwMDdlLCAweDYwMjgsIDB4MDA3ZSwKLQkweDYwZTAsIDB4MDA3ZSwgMHg2MDJmLCAweDAxMDAsIDB4NjAyZiwgMHgwMDAwLCAweDAwMDUsIDB4MDAwNSwKLQkweDAwMDUsIDB4MDAwNSwgMHg2MDJmLCAweDAwNDAsIDB4NjAyZiwgMHgwMDAwLCAweDAwN2YsIDB4NjBlMiwKLQkweDAwN2YsIDB4NjAyYSwgMHgwMDdmLCAweDYwMDYsIDB4MDA3ZiwgMHg2MDBlLCAweDAwN2YsIDB4NjBlZSwKLQkweDAwN2YsIDB4NjBmMiwgMHgwMDdmLCAweDYwNTIsIDB4MDA3ZiwgMHg2MGVhLCAweDAwN2YsIDB4NjBlNiwKLQkweDAwN2YsIDB4NjA0YSwgMHgwMDdmLCAweDYwMzIsIDB4MDA3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MjVlNywKLQkweDI1ZWIsIDB4MjVlZiwgMHgyNWY1LCAweDI1ZmIsIDB4MjYwMSwgMHgyNjA3LCAweDI2MGYsIDB4MjYxNywKLQkweDI2MWQsIDB4MjYyMywgMHgyNjJiLCAweDI2MzMsIDB4MjYzYiwgMHgyNjQzLCAweDI2NGQsIDB4MjY1NywKLQkweDI2NTcsIDB4MjY1NywgMHgyNjU3LCAweDI2NTcsIDB4MjY1NywgMHgyNjU3LCAweDI2NTcsIDB4MjY1NywKLQkweDI2NTcsIDB4MjY1NywgMHgyNjU3LCAweDI2NTcsIDB4MjY1NywgMHgyNjU3LCAweDI2NTcsIDB4MTA3ZSwKLQkweDAwN2UsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgwMDc4LCAweDI2NzAsIDB4MTA3ZSwKLQkweDAwN2UsIDB4MTA3OCwgMHgyMjZjLCAweDAwNzgsIDB4MjY3MCwgMHgxMDdlLCAweDAwN2UsIDB4MTA3OCwKLQkweDIyNmMsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIxMzMsIDB4MDA3OCwKLQkweDI2NzAsIDB4MTA3ZSwgMHgwMDdlLCAweDEwNzgsIDB4MjEzMywgMHgwMDc4LCAweDI2NzAsIDB4MTA3ZSwKLQkweDAwN2UsIDB4MTA3OCwgMHgyMjZjLCAweDEwNzgsIDB4MjEzMywgMHgwMDc4LCAweDI2NzAsIDB4MTA3ZSwKLQkweDAwN2UsIDB4MTA3OCwgMHgyMjZjLCAweDEwNzgsIDB4MjEzMywgMHgwMDc4LCAweDI2NzAsIDB4MTA3ZSwKLQkweDAwN2UsIDB4MTA3OCwgMHgyMTc4LCAweDAwNzgsIDB4MjY3MCwgMHgxMDdlLCAweDAwN2UsIDB4MTA3OCwKLQkweDIxNzgsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIyNmMsIDB4MTA3OCwKLQkweDIxNzgsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIyNmMsIDB4MTA3OCwKLQkweDIxNzgsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIxMzMsIDB4MTA3OCwKLQkweDIxNzgsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIxMzMsIDB4MTA3OCwKLQkweDIxNzgsIDB4MDA3OCwgMHgyNjcwLCAweDEwN2UsIDB4MDA3ZSwgMHgxMDc4LCAweDIyNmMsIDB4MTA3OCwKLQkweDIxMzMsIDB4MTA3OCwgMHgyMTc4LCAweDAwNzgsIDB4MjY3MCwgMHgxMDdlLCAweDAwN2UsIDB4MTA3OCwKLQkweDIyNmMsIDB4MTA3OCwgMHgyMTMzLCAweDEwNzgsIDB4MjE3OCwgMHgwMDc4LCAweDI2NzAsIDB4MDAwNSwKLQkweDAwNzgsIDB4MjY1NywgMHhiMDg0LCAweDAwM2MsIDB4ODAwNCwgMHg4MDA0LCAweDAwNzksIDB4MjY2MCwKLQkweDI2NzAsIDB4MjVlZCwgMHgyNWYxLCAweDI1ZjcsIDB4MjVmZCwgMHgyNjAzLCAweDI2MDksIDB4MjYxMSwKLQkweDI2MTksIDB4MjYxZiwgMHgyNjI1LCAweDI2MmQsIDB4MjYzNSwgMHgyNjNkLCAweDI2NDUsIDB4MjY0ZiwKLQkweDAwMDgsIDB4MjY1YSwgMHgwMDdmLCAweDEwN2YsIDB4MjA5MSwgMHg4MDAxLCAweDAwN2MsIDB4MGM3ZSwKLQkweDAyN2UsIDB4MDQ3ZSwgMHgyMDIxLCAweDAwMDAsIDB4MTA3OCwgMHg0OTY3LCAweDAwYzAsIDB4Mjc3MiwKLQkweDcwY2MsIDB4ZDA5YywgMHgwMDQwLCAweDI2OGUsIDB4ZDA4NCwgMHgwMGMwLCAweDI2OGUsIDB4ZDBiYywKLQkweDAwYzAsIDB4Mjc3MiwgMHgxMDc4LCAweDI3NzYsIDB4MDA3OCwgMHgyNzcyLCAweGQwY2MsIDB4MDBjMCwKLQkweDI3NzIsIDB4ZDA5NCwgMHgwMDQwLCAweDI2OTgsIDB4NzA5NywgMHhmZmZmLCAweDAwNzgsIDB4Mjc3MiwKLQkweDIwMDEsIDB4MDEwYywgMHgyMDNjLCAweDcyODQsIDB4ZDI4NCwgMHgwMDQwLCAweDI3MDEsIDB4ZDI4YywKLQkweDAwYzAsIDB4MjcwMSwgMHgwMzdlLCAweDczOTQsIDB4YTM4ZSwgMHhmZmZmLCAweDAwNDAsIDB4MjZhYiwKLQkweDgzZmYsIDB4MDBjMCwgMHgyNmFkLCAweDIwMTksIDB4MDAwMSwgMHg4MzE0LCAweGEyZTAsIDB4YWRjMCwKLQkweDJjMDQsIDB4YTM4YywgMHgwMDAxLCAweDAwNDAsIDB4MjZiYSwgMHhhMDg0LCAweGZmMDAsIDB4ODAwNywKLQkweDAwNzgsIDB4MjZiYywgMHhhMDg0LCAweDAwZmYsIDB4YTcwZSwgMHgwMDQwLCAweDI2ZjYsIDB4YTA4ZSwKLQkweDAwMDAsIDB4MDA0MCwgMHgyNmY2LCAweGEwOGUsIDB4MDBmZiwgMHgwMGMwLCAweDI2ZDMsIDB4NzIzMCwKLQkweGQyODQsIDB4MDBjMCwgMHgyNmZjLCAweDcyODQsIDB4YzI4ZCwgMHg3Mjg2LCAweDcwOTcsIDB4ZmZmZiwKLQkweDAzN2YsIDB4MDA3OCwgMHgyNzAxLCAweDIwMDksIDB4MDAwMCwgMHgxMDc4LCAweDI1NGQsIDB4MTA3OCwKLQkweDQ1NWMsIDB4MDBjMCwgMHgyNmY5LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4MjZmMCwgMHg3MDMwLCAweGQwOGMsIDB4MDA0MCwgMHgyNmVhLCAweDYwMDAsIDB4ZDBiYywKLQkweDAwNDAsIDB4MjZmMCwgMHgxMDc4LCAweDI3OGMsIDB4MDA0MCwgMHgyNmY5LCAweDAwNzgsIDB4MjZmNiwKLQkweDEwNzgsIDB4MjhjNCwgMHgxMDc4LCAweDI3YjksIDB4MDA0MCwgMHgyNmY5LCAweDgzMTgsIDB4MDA3OCwKLQkweDI2YWQsIDB4NzM5NiwgMHgwMDc4LCAweDI2ZmUsIDB4NzA5NywgMHhmZmZmLCAweDAzN2YsIDB4MDA3OCwKLQkweDI3NzIsIDB4YTc4MCwgMHgyOWMwLCAweDIwM2MsIDB4YTdiYywgMHhmZjAwLCAweDg3M2YsIDB4MjA0MSwKLQkweDAwN2UsIDB4NzA5NCwgMHhhMDk2LCAweGZmZmYsIDB4MDBjMCwgMHgyNzEzLCAweDIwMDksIDB4MDAwMCwKLQkweDI4YTgsIDB4MDA3OCwgMHgyNzFmLCAweGE4MTIsIDB4MDA0OCwgMHgyNzFiLCAweDIwMDgsIDB4YTgwMiwKLQkweDIwYTgsIDB4MDA3OCwgMHgyNzFmLCAweDcwOTcsIDB4ZmZmZiwgMHgwMDc4LCAweDI3NzIsIDB4MjcwMCwKLQkweDE1N2UsIDB4MDE3ZSwgMHhhMTA2LCAweDAwNDAsIDB4Mjc2NiwgMHhjNDg0LCAweDEwNzgsIDB4NDVjNCwKLQkweDAwNDAsIDB4MjczMCwgMHgxMDc4LCAweDQ1NWMsIDB4MDBjMCwgMHgyNzZmLCAweDAwNzgsIDB4MjczMSwKLQkweGM0ODUsIDB4NjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDAwYzAsIDB4Mjc0MCwKLQkweDcwMzAsIDB4ZDA4YywgMHgwMDQwLCAweDI3NWUsIDB4NjAwMCwgMHhkMGJjLCAweDAwYzAsIDB4Mjc1ZSwKLQkweDcyODQsIDB4ZDI4YywgMHgwMDQwLCAweDI3NTYsIDB4NjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4MiwKLQkweDAwMDYsIDB4MDA0OCwgMHgyNzY2LCAweGQ0ODQsIDB4MDBjMCwgMHgyNzUyLCAweDEwNzgsIDB4NDU3ZiwKLQkweDAwNzgsIDB4Mjc1NCwgMHgxMDc4LCAweDI5OGUsIDB4MDA3OCwgMHgyNzY2LCAweDEwNzgsIDB4MjhjNCwKLQkweDEwNzgsIDB4MjdiOSwgMHgwMDQwLCAweDI3NmYsIDB4MDA3OCwgMHgyNzY2LCAweDEwNzgsIDB4Mjk1OSwKLQkweDAwNDAsIDB4Mjc2NiwgMHgxMDc4LCAweDI3OGMsIDB4MDA0MCwgMHgyNzZmLCAweDAxN2YsIDB4ODEwOCwKLQkweDE1N2YsIDB4MDBmMCwgMHgyNzFmLCAweDcwOTcsIDB4ZmZmZiwgMHgwMDc4LCAweDI3NzIsIDB4MDE3ZiwKLQkweDE1N2YsIDB4NzE5NiwgMHgwNDdmLCAweDAyN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDBjN2UsIDB4MDE3ZSwKLQkweDcwOTcsIDB4MDAwMSwgMHgyMDA5LCAweDAwN2UsIDB4MTA3OCwgMHg0NTVjLCAweDAwYzAsIDB4Mjc4OSwKLQkweDEwNzgsIDB4MjhjNCwgMHgxMDc4LCAweDI3YjksIDB4MDA0MCwgMHgyNzg5LCAweDcwY2MsIDB4YzBiZCwKLQkweDcwY2UsIDB4MDE3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MDE3ZSwgMHgwNzdlLCAweDBkN2UsIDB4MGM3ZSwKLQkweDJjNjgsIDB4MjAwMSwgMHhhNzU3LCAweDIwMDQsIDB4YTA4NCwgMHgwMGZmLCAweDY4NDIsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDA0MCwgMHgyN2I0LCAweDJkMDAsIDB4NjAxYSwgMHg2MDFmLCAweDAwMDEsIDB4MjAwMSwKLQkweDAwMDAsIDB4MTA3OCwgMHg0NGVlLCAweDIwMDEsIDB4MDAwMCwgMHgxMDc4LCAweDQ1MDIsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHg3MDkwLCAweDgwMDAsIDB4NzA5MiwgMHgxMjdmLCAweDIwMDksIDB4MDAwNCwKLQkweDEwNzgsIDB4Nzc1YywgMHhhMDg1LCAweDAwMDEsIDB4MGM3ZiwgMHgwZDdmLCAweDA3N2YsIDB4MDE3ZiwKLQkweDAwN2MsIDB4MDE3ZSwgMHgwNzdlLCAweDBkN2UsIDB4MGM3ZSwgMHgyYzY4LCAweDIwMDEsIDB4YTc1NywKLQkweDIwMDQsIDB4YTA4NCwgMHgwMGZmLCAweDY4NDIsIDB4MTA3OCwgMHg5MTk3LCAweDAwNDAsIDB4MjdmMiwKLQkweDJkMDAsIDB4NjAxYSwgMHg2ODAwLCAweGMwYzQsIDB4NjgwMiwgMHg2OGEwLCAweGEwODYsIDB4MDA3ZSwKLQkweDAwNDAsIDB4MjdkYiwgMHg2ODA0LCAweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwKLQkweDI3ZGIsIDB4MTA3OCwgMHgyODgwLCAweDYwMWYsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MTA3OCwKLQkweDQ0ZWUsIDB4MjAwMSwgMHgwMDAyLCAweDEwNzgsIDB4NDUwMiwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDcwOTAsIDB4ODAwMCwgMHg3MDkyLCAweDEyN2YsIDB4MjAwOSwgMHgwMDAyLCAweDEwNzgsIDB4Nzc1YywKLQkweGEwODUsIDB4MDAwMSwgMHgwYzdmLCAweDBkN2YsIDB4MDc3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDAyN2UsIDB4MjAwOSwgMHgwMDgwLCAweDEwNzgsIDB4NDU1YywgMHgwMGMwLCAweDI4MDUsIDB4MTA3OCwKLQkweDI4MDgsIDB4MDA0MCwgMHgyODA1LCAweDcwZDMsIDB4ZmZmZiwgMHgwMjdmLCAweDBjN2YsIDB4MDA3YywKLQkweDAxN2UsIDB4MDc3ZSwgMHgwZDdlLCAweDBjN2UsIDB4MmM2OCwgMHgxMDc4LCAweDc2YzcsIDB4MDA0MCwKLQkweDI4MmEsIDB4MmQwMCwgMHg2MDFhLCAweDYwMWYsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MTA3OCwKLQkweDQ0ZWUsIDB4MjAwMSwgMHgwMDAyLCAweDEwNzgsIDB4NDUwMiwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDcwZDQsIDB4ODAwMCwgMHg3MGQ2LCAweDEyN2YsIDB4MjAwOSwgMHgwMDAyLCAweDEwNzgsIDB4Nzc1YywKLQkweGEwODUsIDB4MDAwMSwgMHgwYzdmLCAweDBkN2YsIDB4MDc3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDBkN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjAwOSwgMHgwMDdmLCAweDEwNzgsIDB4NDU1YywKLQkweDAwYzAsIDB4Mjg0YiwgMHgyYzY4LCAweDEwNzgsIDB4NzZjNywgMHgwMDQwLCAweDI4NGIsIDB4MmQwMCwKLQkweDYwMWEsIDB4NjMxMiwgMHg2MDFmLCAweDAwMDEsIDB4NjIwYSwgMHgyMDA5LCAweDAwMjIsIDB4MTA3OCwKLQkweDc3NWMsIDB4YTA4NSwgMHgwMDAxLCAweDEyN2YsIDB4MGQ3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MGU3ZSwKLQkweDBjN2UsIDB4MDY3ZSwgMHgwMzdlLCAweDAyN2UsIDB4MTA3OCwgMHg1ZjBlLCAweDEwNzgsIDB4NWVhZSwKLQkweDEwNzgsIDB4ODA2OCwgMHgyMTMwLCAweDgxZmYsIDB4MDA0MCwgMHgyODY0LCAweDIwYTksIDB4MDA3ZSwKLQkweDIwMDksIDB4MDAwMCwgMHgwMDc4LCAweDI4NjgsIDB4MjBhOSwgMHgwMDdmLCAweDIwMDksIDB4MDAwMCwKLQkweDAxN2UsIDB4MTA3OCwgMHg0NWM0LCAweDAwYzAsIDB4Mjg3MSwgMHgxMDc4LCAweDQ3ZTksIDB4MTA3OCwKLQkweDQyZjgsIDB4MDE3ZiwgMHg4MTA4LCAweDAwZjAsIDB4Mjg2OCwgMHg4NmZmLCAweDAwYzAsIDB4Mjg3YSwKLQkweDEwNzgsIDB4MTE5YiwgMHgwMjdmLCAweDAzN2YsIDB4MDY3ZiwgMHgwYzdmLCAweDBlN2YsIDB4MDA3YywKLQkweDBlN2UsIDB4MGM3ZSwgMHgwMzdlLCAweDAyN2UsIDB4MDE3ZSwgMHg2MjE4LCAweDIyNzAsIDB4NzJhMCwKLQkweDAyN2UsIDB4MjAxOSwgMHgwMDI5LCAweDEwNzgsIDB4NWYwMSwgMHgwNzdlLCAweDIwMzksIDB4MDAwMCwKLQkweDEwNzgsIDB4NWUwYSwgMHgyYzA4LCAweDEwNzgsIDB4OWY5YiwgMHgwNzdmLCAweDAxN2YsIDB4MmU2MCwKLQkweDEwNzgsIDB4NDdlOSwgMHg2MjEwLCAweDYzMTQsIDB4MTA3OCwgMHg0MmY4LCAweDYyMTIsIDB4NjMxNiwKLQkweDAxN2YsIDB4MDI3ZiwgMHgwMzdmLCAweDBjN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MDA3ZSwKLQkweDYwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4ZDBiYywgMHgwMGMwLCAweDI4YmEsIDB4MjA3MSwKLQkweGE3MDAsIDB4NzA5MCwgMHhhMDA1LCAweDAwNDAsIDB4MjhiNywgMHg4MDAxLCAweDcwOTIsIDB4MDA3ZiwKLQkweDBlN2YsIDB4MDA3YywgMHgyMDcxLCAweGE3MDAsIDB4NzBkNCwgMHhhMDA1LCAweDAwNDAsIDB4MjhiNywKLQkweDgwMDEsIDB4NzBkNiwgMHgwMDc4LCAweDI4YjcsIDB4NjAwMCwgMHhjMDhjLCAweDYwMDIsIDB4MDA3YywKLQkweDBmN2UsIDB4MGU3ZSwgMHgwYzdlLCAweDAzN2UsIDB4MDI3ZSwgMHgwMTdlLCAweDE1N2UsIDB4MjE3OCwKLQkweDgxZmYsIDB4MDBjMCwgMHgyOGQ3LCAweDIwYTksIDB4MDAwMSwgMHgwMDc4LCAweDI4ZjIsIDB4MjAwMSwKLQkweGE3NTMsIDB4MjAwNCwgMHhkMGM0LCAweDAwNDAsIDB4MjhlZSwgMHhkMGE0LCAweDAwNDAsIDB4MjhlZSwKLQkweDA0N2UsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAyNCwgMHhhNGE0LCAweDAwZmYsIDB4ODQyNywKLQkweGEwMDYsIDB4MjAwOSwgMHgwMDJkLCAweDEwNzgsIDB4YTIyZCwgMHgwNDdmLCAweDIwYTksIDB4MDBmZiwKLQkweDIwMTEsIDB4MDAwMCwgMHgwMjdlLCAweGEyOGUsIDB4MDA3ZSwgMHgwMDQwLCAweDI5MzYsIDB4YTI4ZSwKLQkweDAwN2YsIDB4MDA0MCwgMHgyOTM2LCAweGEyOGUsIDB4MDA4MCwgMHgwMDQwLCAweDI5MzYsIDB4YTI4OCwKLQkweGE4MzUsIDB4MjEwYywgMHg4MWZmLCAweDAwNDAsIDB4MjkzNiwgMHg4ZmZmLCAweDEwNDAsIDB4Mjk0MiwKLQkweDBjN2UsIDB4MjE2MCwgMHgyMDAxLCAweDAwMDEsIDB4MTA3OCwgMHg0OTcyLCAweDBjN2YsIDB4MjAxOSwKLQkweDAwMjksIDB4MTA3OCwgMHg1ZjAxLCAweDA3N2UsIDB4MjAzOSwgMHgwMDAwLCAweDEwNzgsIDB4NWUwYSwKLQkweDBjN2UsIDB4MDI3ZSwgMHgyMTYwLCAweDYyMDQsIDB4YTI5NCwgMHgwMGZmLCAweGEyODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4MjkyNiwgMHg2MDA3LCAweDA0MDQsIDB4MDA3OCwgMHgyOTJiLCAweDIwMDEsIDB4MDAwNCwKLQkweDgwMDcsIDB4YTIxNSwgMHg2MjA2LCAweDAyN2YsIDB4MGM3ZiwgMHgwMTdlLCAweDJjMDgsIDB4MTA3OCwKLQkweDlmOWIsIDB4MDE3ZiwgMHgwNzdmLCAweDIxNjAsIDB4MTA3OCwgMHg0N2U5LCAweDAyN2YsIDB4ODIxMCwKLQkweDAwZjAsIDB4MjhmMiwgMHgxNTdmLCAweDAxN2YsIDB4MDI3ZiwgMHgwMzdmLCAweDBjN2YsIDB4MGU3ZiwKLQkweDBmN2YsIDB4MDA3YywgMHgwNDdlLCAweDAyN2UsIDB4MDE3ZSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYzQsIDB4MDA0MCwgMHgyOTU1LCAweGQwYTQsIDB4MDA0MCwgMHgyOTU1LCAweGEwMDYsIDB4MjIyMCwKLQkweDg0MjcsIDB4MjAwOSwgMHgwMDI5LCAweDEwNzgsIDB4YTIyZCwgMHgwMTdmLCAweDAyN2YsIDB4MDQ3ZiwKLQkweDAwN2MsIDB4MDE3ZSwgMHgwMjdlLCAweDAzN2UsIDB4MGM3ZSwgMHg3Mjg0LCAweDgyZmYsIDB4MDA0MCwKLQkweDI5ODcsIDB4YTI5MCwgMHhhNzUzLCAweDIyMTQsIDB4ZDJhYywgMHgwMGMwLCAweDI5ODcsIDB4MjEwMCwKLQkweDEwNzgsIDB4MjU2NCwgMHg4MWZmLCAweDAwNDAsIDB4Mjk4OSwgMHgyMDE5LCAweDAwMDEsIDB4ODMxNCwKLQkweGEyZTAsIDB4YWRjMCwgMHgyYzA0LCAweGQzODQsIDB4MDA0MCwgMHgyOTdiLCAweGEwODQsIDB4ZmYwMCwKLQkweDgwMDcsIDB4MDA3OCwgMHgyOTdkLCAweGEwODQsIDB4MDBmZiwgMHhhMTE2LCAweDAwNDAsIDB4Mjk4OSwKLQkweGEwOTYsIDB4MDBmZiwgMHgwMDQwLCAweDI5ODcsIDB4ODMxOCwgMHgwMDc4LCAweDI5NmYsIDB4YTA4NSwKLQkweDAwMDEsIDB4MGM3ZiwgMHgwMzdmLCAweDAyN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDAxN2UsIDB4MGM3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDAxN2UsIDB4MDI3ZSwgMHgwMzdlLCAweDIxMTAsIDB4MDI3ZSwKLQkweDIwMTksIDB4MDAyOSwgMHgxMDc4LCAweDczZDAsIDB4MDI3ZiwgMHgxMDc4LCAweGE1MDEsIDB4MDM3ZiwKLQkweDAyN2YsIDB4MDE3ZiwgMHhhMTgwLCAweGE4MzUsIDB4MjAwNCwgMHhhMDY1LCAweDAwNDAsIDB4MjliNywKLQkweDAxN2UsIDB4MGM3ZSwgMHgxMDc4LCAweDkxOTcsIDB4MDE3ZiwgMHgxMDQwLCAweDEzMzIsIDB4NjExYSwKLQkweDEwNzgsIDB4Mjg4MCwgMHgxMDc4LCAweDc3MmQsIDB4MDE3ZiwgMHgxMDc4LCAweDQ1N2YsIDB4MTI3ZiwKLQkweDBjN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDIwMDEsIDB4YTczMywgMHgyMDA0LCAweGQwY2MsIDB4MDA3YywKLQkweDdlZWYsIDB4N2RlOCwgMHg3Y2U0LCAweDgwZTIsIDB4N2JlMSwgMHg4MGUwLCAweDgwZGMsIDB4ODBkYSwKLQkweDdhZDksIDB4ODBkNiwgMHg4MGQ1LCAweDgwZDQsIDB4ODBkMywgMHg4MGQyLCAweDgwZDEsIDB4NzljZSwKLQkweDc4Y2QsIDB4ODBjYywgMHg4MGNiLCAweDgwY2EsIDB4ODBjOSwgMHg4MGM3LCAweDgwYzYsIDB4NzdjNSwKLQkweDc2YzMsIDB4ODBiYywgMHg4MGJhLCAweDc1YjksIDB4ODBiNiwgMHg3NGI1LCAweDczYjQsIDB4NzJiMywKLQkweDgwYjIsIDB4ODBiMSwgMHg4MGFlLCAweDcxYWQsIDB4ODBhYywgMHg3MGFiLCAweDZmYWEsIDB4NmVhOSwKLQkweDgwYTcsIDB4NmRhNiwgMHg2Y2E1LCAweDZiYTMsIDB4NmE5ZiwgMHg2OTllLCAweDY4OWQsIDB4ODA5YiwKLQkweDgwOTgsIDB4Njc5NywgMHg2NjkwLCAweDY1OGYsIDB4NjQ4OCwgMHg2Mzg0LCAweDYyODIsIDB4ODA4MSwKLQkweDgwODAsIDB4NjE3YywgMHg2MDdhLCAweDgwNzksIDB4NWY3NiwgMHg4MDc1LCAweDgwNzQsIDB4ODA3MywKLQkweDgwNzIsIDB4ODA3MSwgMHg4MDZlLCAweDVlNmQsIDB4ODA2YywgMHg1ZDZiLCAweDVjNmEsIDB4NWI2OSwKLQkweDgwNjcsIDB4NWE2NiwgMHg1OTY1LCAweDU4NjMsIDB4NTc1YywgMHg1NjVhLCAweDU1NTksIDB4ODA1NiwKLQkweDgwNTUsIDB4NTQ1NCwgMHg1MzUzLCAweDUyNTIsIDB4NTE1MSwgMHg1MDRlLCAweDRmNGQsIDB4ODA0YywKLQkweDgwNGIsIDB4NGU0YSwgMHg0ZDQ5LCAweDgwNDcsIDB4NGM0NiwgMHg4MDQ1LCAweDgwNDMsIDB4ODAzYywKLQkweDgwM2EsIDB4ODAzOSwgMHg4MDM2LCAweDRiMzUsIDB4ODAzNCwgMHg0YTMzLCAweDQ5MzIsIDB4NDgzMSwKLQkweDgwMmUsIDB4NDcyZCwgMHg0NjJjLCAweDQ1MmIsIDB4NDQyYSwgMHg0MzI5LCAweDQyMjcsIDB4ODAyNiwKLQkweDgwMjUsIDB4NDEyMywgMHg0MDFmLCAweDNmMWUsIDB4M2UxZCwgMHgzZDFiLCAweDNjMTgsIDB4ODAxNywKLQkweDgwMTAsIDB4M2IwZiwgMHgzYTA4LCAweDgwMDQsIDB4MzkwMiwgMHg4MDAxLCAweDgwMDAsIDB4ODAwMCwKLQkweDM4MDAsIDB4MzcwMCwgMHgzNjAwLCAweDgwMDAsIDB4MzUwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDM0MDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MzMwMCwKLQkweDMyMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MzEwMCwKLQkweDMwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDJmMDAsIDB4ODAwMCwgMHgyZTAwLCAweDJkMDAsIDB4MmMwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDJiMDAsIDB4ODAwMCwgMHgyYTAwLCAweDI5MDAsIDB4MjgwMCwKLQkweDgwMDAsIDB4MjcwMCwgMHgyNjAwLCAweDI1MDAsIDB4MjQwMCwgMHgyMzAwLCAweDIyMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MjEwMCwgMHgyMDAwLCAweDFmMDAsIDB4MWUwMCwgMHgxZDAwLCAweDFjMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MWIwMCwgMHgxYTAwLCAweDgwMDAsIDB4MTkwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDE4MDAsIDB4ODAwMCwgMHgxNzAwLCAweDE2MDAsIDB4MTUwMCwKLQkweDgwMDAsIDB4MTQwMCwgMHgxMzAwLCAweDEyMDAsIDB4MTEwMCwgMHgxMDAwLCAweDBmMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MGUwMCwgMHgwZDAwLCAweDBjMDAsIDB4MGIwMCwgMHgwYTAwLCAweDA5MDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MDgwMCwgMHgwNzAwLCAweDgwMDAsIDB4MDYwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDA1MDAsIDB4MDQwMCwgMHgwMzAwLCAweDgwMDAsIDB4MDIwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDAxMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MDAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDIwNzEsIDB4YTc4MiwgMHg3MDAzLCAweDAwMDIsIDB4YTAwNiwgMHg3MDEyLCAweDcwMTYsIDB4NzAzYSwKLQkweDcwM2UsIDB4NzAzMywgMHhhNzkyLCAweDcwMzcsIDB4YTc5MiwgMHg3MDA3LCAweDAwMDEsIDB4MjA2MSwKLQkweGE3ZDIsIDB4NjAwMywgMHgwMDAyLCAweDAwN2MsIDB4MDA5MCwgMHgyYWU3LCAweDAwNjgsIDB4MmFlNywKLQkweDIwNzEsIDB4YTc4MiwgMHgyYjc4LCAweDc4MTgsIDB4ZDA4NCwgMHgwMGMwLCAweDJhZTcsIDB4MmE2MCwKLQkweDc4MjAsIDB4YTA4ZSwgMHgwMDY5LCAweDAwYzAsIDB4MmJkNywgMHgwMDc5LCAweDJiNmIsIDB4MDA3YywKLQkweDIwNzEsIDB4YTc4MiwgMHg3MDA0LCAweDAwNzksIDB4MmFlZCwgMHgyYWYxLCAweDJhZjIsIDB4MmFmYywKLQkweDJiMGUsIDB4MDA3YywgMHgwMDkwLCAweDJhZmIsIDB4MDA2OCwgMHgyYWZiLCAweDJiNzgsIDB4NzgxOCwKLQkweGQwODQsIDB4MDA0MCwgMHgyYjFhLCAweDAwN2MsIDB4MmI3OCwgMHgyMDYxLCAweGE3ZDIsIDB4NjAwOCwKLQkweGEwOGUsIDB4MDEwMCwgMHgwMDQwLCAweDJiMDksIDB4YTA4NiwgMHgwMjAwLCAweDAwNDAsIDB4MmJjZiwKLQkweDAwN2MsIDB4NzAxNCwgMHgyMDY4LCAweDJhNjAsIDB4NzAxOCwgMHgwMDdhLCAweDcwMTAsIDB4MjA2OCwKLQkweDY4MzQsIDB4YTA4NiwgMHgwMTAzLCAweDAwNDAsIDB4MmIxNiwgMHgwMDdjLCAweDJhNjAsIDB4MmI3OCwKLQkweDcwMTgsIDB4MDA3YSwgMHgyYTYwLCAweDc4MjAsIDB4YTA4YSwgMHgwMDQwLCAweDAwYzgsIDB4MmIyMywKLQkweDYxYmMsIDB4MDA3OSwgMHgyYjJiLCAweDIxMDAsIDB4YTA4YSwgMHgwMDNmLCAweDAwYzgsIDB4MmJjYiwKLQkweDYxYmMsIDB4MDA3OSwgMHgyYjZiLCAweDJiYWQsIDB4MmJkZiwgMHgyYmU3LCAweDJiZWIsIDB4MmJmMywKLQkweDJiZjksIDB4MmJmZCwgMHgyYzA5LCAweDJjMGQsIDB4MmMxNywgMHgyYzFiLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmMxZiwgMHgyYmNiLCAweDJjMmYsIDB4MmM0NiwgMHgyYzVkLCAweDJjZGQsIDB4MmNlMiwKLQkweDJkMGYsIDB4MmQ2OSwgMHgyZDdhLCAweDJkOTgsIDB4MmRkOSwgMHgyZGUzLCAweDJkZjAsIDB4MmUwMywKLQkweDJlMjIsIDB4MmUyYiwgMHgyZTY4LCAweDJlNmUsIDB4MmJjYiwgMHgyZThhLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJlOTEsIDB4MmU5YiwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwgMHgyZWEzLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJlYjUsIDB4MmVjZSwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJlZTAsIDB4MmYzNywgMHgyZjk1LCAweDJmYTksIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgzOThlLCAweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJjMTcsIDB4MmMxYiwgMHgyZmMwLCAweDJiY2IsIDB4MmZjZCwKLQkweDNhMjYsIDB4M2E4MywgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwKLQkweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDMwMWEsIDB4MzE0ZiwgMHgzMTZiLCAweDMxNzcsIDB4MzFkYSwKLQkweDMyMzMsIDB4MzIzZSwgMHgzMjdkLCAweDMyOGMsIDB4MzI5YiwgMHgzMjllLCAweDJmZDEsIDB4MzJjMiwKLQkweDMzMWUsIDB4MzMyYiwgMHgzNDNjLCAweDM1NmYsIDB4MzU5OSwgMHgzNmE2LCAweDJiY2IsIDB4MzZiNiwKLQkweDM2ZjAsIDB4MzdiZiwgMHgyYmNiLCAweDJiY2IsIDB4MmJjYiwgMHgyYmNiLCAweDM4MjcsIDB4Mzg0MywKLQkweDM4YmQsIDB4Mzk3NywgMHg3MTNjLCAweDAwNzgsIDB4MmJhZCwgMHgyMDIxLCAweDQwMDAsIDB4MTA3OCwKLQkweDM1ZjUsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MDA2OCwgMHgyYmJhLCAweDc4MTgsIDB4ZDA4NCwKLQkweDAwNDAsIDB4MmJiZCwgMHgxMjdmLCAweDAwNzgsIDB4MmJiMSwgMHg3YzIyLCAweDc5MjYsIDB4N2EyYSwKLQkweDdiMmUsIDB4NzgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHg3MDA3LCAweDAwMDEsIDB4MjA5MSwKLQkweDUwMDAsIDB4MTI3ZiwgMHgwMDdjLCAweDIwMjEsIDB4NDAwMSwgMHgwMDc4LCAweDJiYWYsIDB4MjAyMSwKLQkweDQwMDIsIDB4MDA3OCwgMHgyYmFmLCAweDIwMjEsIDB4NDAwMywgMHgwMDc4LCAweDJiYWYsIDB4MjAyMSwKLQkweDQwMDUsIDB4MDA3OCwgMHgyYmFmLCAweDIwMjEsIDB4NDAwNiwgMHgwMDc4LCAweDJiYWYsIDB4YTAyZSwKLQkweDI1MjAsIDB4N2IyOCwgMHg3YTJjLCAweDc4MjQsIDB4NzkzMCwgMHgwMDc4LCAweDM2MDQsIDB4NzgyMywKLQkweDAwMDQsIDB4NzgyNCwgMHgwMDdhLCAweGEwMmUsIDB4MjUyMCwgMHg3YjI4LCAweDdhMmMsIDB4NzgyNCwKLQkweDc5MzAsIDB4MDA3OCwgMHgzNjA4LCAweDc5MjQsIDB4NzgyOCwgMHgyMTE0LCAweDIwMGEsIDB4MDA3OCwKLQkweDJiYWQsIDB4NzkyNCwgMHgyMTE0LCAweDAwNzgsIDB4MmJhZCwgMHgyMDk5LCAweDAwMDksIDB4MjBhMSwKLQkweDAwMDksIDB4MjBhOSwgMHgwMDA3LCAweDUzYTMsIDB4NzkyNCwgMHg3YTI4LCAweDdiMmMsIDB4MDA3OCwKLQkweDJiYWQsIDB4NzgyNCwgMHgyMDYwLCAweDAwNzgsIDB4MmMyMSwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwKLQkweDAwMTMsIDB4MjAxOSwgMHgwMDE5LCAweDc4M2IsIDB4MDAxNywgMHgwMDc4LCAweDJiYWQsIDB4N2QzOCwKLQkweDdjM2MsIDB4MDA3OCwgMHgyYmUxLCAweDdkMzgsIDB4N2MzYywgMHgwMDc4LCAweDJiZWQsIDB4MjA2MSwKLQkweDEwMDAsIDB4NjEwYywgMHhhMDA2LCAweDJjMTQsIDB4YTIwMCwgMHg4YzYwLCAweDgxMDksIDB4MDBjMCwKLQkweDJjMjMsIDB4MjAxMCwgMHhhMDA1LCAweDAwNDAsIDB4MmJhZCwgMHgwMDc4LCAweDJiZDMsIDB4MjA2OSwKLQkweGE3NTIsIDB4NzgyNCwgMHg3OTMwLCAweGExMWEsIDB4MDBjOCwgMHgyYmRiLCAweDgwMTksIDB4MDA0MCwKLQkweDJiZGIsIDB4Njg0YSwgMHg2OTQyLCAweDc4MmMsIDB4Njg1MiwgMHg3ODI4LCAweDY4NTYsIDB4YTAwNiwKLQkweDY4NWEsIDB4Njg1ZSwgMHgxMDc4LCAweDRlYWUsIDB4MDA3OCwgMHgyYmFkLCAweDIwNjksIDB4YTc1MiwKLQkweDc4MjQsIDB4NzkzNCwgMHhhMTFhLCAweDAwYzgsIDB4MmJkYiwgMHg4MDE5LCAweDAwNDAsIDB4MmJkYiwKLQkweDY4NGUsIDB4Njk0NiwgMHg3ODJjLCAweDY4NjIsIDB4NzgyOCwgMHg2ODY2LCAweGEwMDYsIDB4Njg2YSwKLQkweDY4NmUsIDB4MTA3OCwgMHg0YTNlLCAweDAwNzgsIDB4MmJhZCwgMHhhMDJlLCAweDI1MjAsIDB4ODFmZiwKLQkweDAwYzAsIDB4MmJkNywgMHg3OTI0LCAweDdiMjgsIDB4N2EyYywgMHgyMGE5LCAweDAwMDUsIDB4MjBhMSwKLQkweGE3ODksIDB4NDFhMSwgMHgxMDc4LCAweDM1YmEsIDB4MDA0MCwgMHgyYmQ3LCAweDIwMDksIDB4MDAyMCwKLQkweDEwNzgsIDB4MzYwNCwgMHg3MDFiLCAweDJjNzUsIDB4MDA3YywgMHg2ODM0LCAweDIwMDgsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA5NiwgMHgwMDExLCAweDAwNDAsIDB4MmM4NSwgMHhhMDk2LCAweDAwMTksIDB4MDA0MCwKLQkweDJjODUsIDB4YTA5NiwgMHgwMDE1LCAweDAwYzAsIDB4MmJkNywgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwKLQkweDAwNDAsIDB4MmJkNywgMHg3MTBlLCAweDcwMGMsIDB4ODAwMSwgMHgwMDQwLCAweDJjYjYsIDB4NzAwZSwKLQkweDEwNzgsIDB4MzViYSwgMHgwMDQwLCAweDJiZDcsIDB4MjAwOSwgMHgwMDIwLCAweDIwNjEsIDB4YTdkMiwKLQkweDYyMjQsIDB4NjMyOCwgMHg2NDJjLCAweDY1MzAsIDB4YTI5MCwgMHgwMDQwLCAweGEzOTksIDB4MDAwMCwKLQkweGE0YTEsIDB4MDAwMCwgMHhhNWE5LCAweDAwMDAsIDB4MTA3OCwgMHgzNjA0LCAweDcwMWIsIDB4MmNhOSwKLQkweDAwN2MsIDB4NjgzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA5NiwgMHgwMDAyLCAweDAwNDAsIDB4MmNiNCwKLQkweGEwOTYsIDB4MDAwYSwgMHgwMGMwLCAweDJiZDcsIDB4MDA3OCwgMHgyYzhiLCAweDcwMTAsIDB4MjA2OCwKLQkweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDEwNzgsIDB4NDQzMSwgMHgwMGMwLCAweDJjYzQsIDB4NzAwNywKLQkweDAwMDMsIDB4NzAxYiwgMHgyY2M2LCAweDAwN2MsIDB4MTA3OCwgMHg0YjUxLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjBhOSwgMHgwMDA1LCAweDIwOTksIDB4YTc4OSwgMHg1MzBhLCAweDIxMDAsIDB4YTIxMCwKLQkweGEzOTksIDB4MDAwMCwgMHhhNGExLCAweDAwMDAsIDB4YTVhOSwgMHgwMDAwLCAweGFkODAsIDB4MDAwZCwKLQkweDIwMDksIDB4MDAyMCwgMHgxMjdmLCAweDAwNzgsIDB4MzYwOCwgMHg2MWE0LCAweDc4MjQsIDB4NjBhNiwKLQkweDAwNzgsIDB4MmJhZCwgMHgyMDkxLCAweDgwMDAsIDB4NzgyMywgMHg0MDAwLCAweDc4MjcsIDB4NDk1MywKLQkweDc4MmIsIDB4NTAyMCwgMHg3ODJmLCAweDIwMjAsIDB4MjAwOSwgMHgwMTdmLCAweDIxMDQsIDB4NzgzMiwKLQkweDNmMDAsIDB4NzgzNiwgMHgyMDYxLCAweDAxMDAsIDB4NjIwMCwgMHgyMDYxLCAweDAyMDAsIDB4NjAzYywKLQkweDgwMDcsIDB4YTIwNSwgMHg3ODNhLCAweDIwMDksIDB4MDRmZCwgMHgyMTA0LCAweDc4M2UsIDB4NzgxYiwKLQkweDAwMDEsIDB4MjA5MSwgMHg1MDAwLCAweDIwOTEsIDB4NDA4MCwgMHgyMDcxLCAweDAwMTAsIDB4MjBjMSwKLQkweDAwZjAsIDB4YTA4YSwgMHgwMDAzLCAweDAwYzgsIDB4MDQyNywgMHgwMDc4LCAweDA0MjMsIDB4ODFmZiwKLQkweDAwYzAsIDB4MmJkNywgMHg3OTI0LCAweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4MmJkYiwgMHg3ZTM4LCAweGE2ODQsIDB4M2ZmZiwgMHhhMDgyLCAweDQwMDAsIDB4MDA0OCwKLQkweDJkMjMsIDB4MDA3OCwgMHgyYmRiLCAweDdjMjgsIDB4N2QyYywgMHgxMDc4LCAweDQ3YTQsIDB4ZDI4YywKLQkweDAwYzAsIDB4MmQyZSwgMHgxMDc4LCAweDQ3MzYsIDB4MDA3OCwgMHgyZDMwLCAweDEwNzgsIDB4NDc3MiwKLQkweDAwYzAsIDB4MmQ1YSwgMHgyMDYxLCAweGFlMDAsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweDJkNDgsIDB4NjAxMCwgMHhhMDZkLCAweDAwNDAsIDB4MmQ0OCwKLQkweDY4M2MsIDB4YTQwNiwgMHgwMGMwLCAweDJkNDgsIDB4Njg0MCwgMHhhNTA2LCAweDAwNDAsIDB4MmQ1MywKLQkweDEyN2YsIDB4YWNlMCwgMHgwMDEwLCAweDIwMDEsIDB4YTcxNiwgMHgyMDA0LCAweGFjMDIsIDB4MDBjOCwKLQkweDJiZDcsIDB4MDA3OCwgMHgyZDM0LCAweDEwNzgsIDB4OGExMSwgMHgxMjdmLCAweDAwNDAsIDB4MmJkNywKLQkweDAwNzgsIDB4MmJhZCwgMHhhMDBlLCAweDIwMDEsIDB4MDAwNSwgMHgxMDc4LCAweDRiNTEsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgxMDc4LCAweDhmOTUsIDB4MTA3OCwgMHg0YTczLCAweDEyN2YsIDB4MDA3OCwKLQkweDJiYWQsIDB4ODFmZiwgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwgMHgzNWQyLCAweDAwNDAsIDB4MmJkYiwKLQkweDEwNzgsIDB4NDY3MywgMHgwMDQwLCAweDJiZDcsIDB4MTA3OCwgMHg0N2IyLCAweDAwNDAsIDB4MmJkNywKLQkweDAwNzgsIDB4MmJhZCwgMHg4MWZmLCAweDAwYzAsIDB4MmJkNywgMHgxMDc4LCAweDM1ZTQsIDB4MDA0MCwKLQkweDJiZGIsIDB4MTA3OCwgMHg0ODJmLCAweDAwNDAsIDB4MmJkNywgMHgyMDE5LCAweDAwMDUsIDB4MTA3OCwKLQkweDQ3ZDMsIDB4MDA0MCwgMHgyYmQ3LCAweDc4MjgsIDB4YTA4YSwgMHgxMDAwLCAweDAwYzgsIDB4MmJkYiwKLQkweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweGExMDgsIDB4MTA3OCwgMHg1YTUyLCAweDAwNzgsIDB4MmJhZCwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDgxZmYsIDB4MDA0MCwgMHgyZGEyLCAweDIwMDksIDB4MDAwMSwKLQkweDAwNzgsIDB4MmRkMywgMHgyMDI5LCAweDAwZmYsIDB4NjQ1MCwgMHgyNDAwLCAweGE1MDYsIDB4MDA0MCwKLQkweDJkY2QsIDB4MjUwOCwgMHgxMDc4LCAweDQ1YzQsIDB4MDBjMCwgMHgyZGNkLCAweDEwNzgsIDB4NDgyZiwKLQkweDAwYzAsIDB4MmRiOCwgMHgyMDA5LCAweDAwMDIsIDB4NjJhYywgMHgyNTE4LCAweDAwNzgsIDB4MmRkMywKLQkweDIwMTksIDB4MDAwNCwgMHgxMDc4LCAweDQ3ZDMsIDB4MDBjMCwgMHgyZGMyLCAweDIwMDksIDB4MDAwNiwKLQkweDAwNzgsIDB4MmRkMywgMHg3ODI0LCAweGEwOGEsIDB4MTAwMCwgMHgwMGM4LCAweDJkZDYsIDB4ODAwMywKLQkweDgwMGIsIDB4ODEwYiwgMHhhMTA4LCAweDEwNzgsIDB4NWE1MiwgMHg4NTI5LCAweDAwYzgsIDB4MmRhNSwKLQkweDEyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDEyN2YsIDB4MDA3OCwgMHgyYmQ3LCAweDEyN2YsIDB4MDA3OCwKLQkweDJiZGIsIDB4MTA3OCwgMHgzNWQyLCAweDAwNDAsIDB4MmJkYiwgMHgxMDc4LCAweDQ2ZTcsIDB4MTA3OCwKLQkweDQ3YTQsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MDBjMCwgMHgyYmQ3LCAweDEwNzgsIDB4MzVkMiwKLQkweDAwNDAsIDB4MmJkYiwgMHgxMDc4LCAweDQ2ZDYsIDB4MTA3OCwgMHg0N2E0LCAweDAwNzgsIDB4MmJhZCwKLQkweDgxZmYsIDB4MDBjMCwgMHgyYmQ3LCAweDEwNzgsIDB4MzVkMiwgMHgwMDQwLCAweDJiZGIsIDB4MTA3OCwKLQkweDQ3NzUsIDB4MDA0MCwgMHgyYmQ3LCAweDEwNzgsIDB4NDQ4NCwgMHgxMDc4LCAweDQ3MmYsIDB4MTA3OCwKLQkweDQ3YTQsIDB4MDA3OCwgMHgyYmFkLCAweDEwNzgsIDB4MzVkMiwgMHgwMDQwLCAweDJiZGIsIDB4MTA3OCwKLQkweDQ2NzMsIDB4MDA0MCwgMHgyYmQ3LCAweDYyYTAsIDB4MjAxOSwgMHgwMDA1LCAweDBjN2UsIDB4MTA3OCwKLQkweDQ3ZTksIDB4MGM3ZiwgMHgxMDc4LCAweDVmMDEsIDB4MDc3ZSwgMHgyMDM5LCAweDAwMDAsIDB4MTA3OCwKLQkweDVlMGEsIDB4MjAwOSwgMHgwMDAwLCAweDEwNzgsIDB4OWY5YiwgMHgwNzdmLCAweDEwNzgsIDB4NDdhNCwKLQkweDAwNzgsIDB4MmJhZCwgMHgxMDc4LCAweDM1ZDIsIDB4MDA0MCwgMHgyYmRiLCAweDEwNzgsIDB4NDdhNCwKLQkweDIyMDgsIDB4MDA3OCwgMHgyYmFkLCAweDE1N2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDIwNjksIDB4YTgxNCwKLQkweDY4MTAsIDB4NjkxNCwgMHhhMTBhLCAweDAwYzgsIDB4MmUzNywgMHgyMDA5LCAweDAwMDAsIDB4NjgxNiwKLQkweDIwMTEsIDB4MDAwMCwgMHgyMDE5LCAweDAwMDAsIDB4MjBhOSwgMHgwMGZmLCAweDIwNjksIDB4YTgzNSwKLQkweDJkMDQsIDB4YTA3NSwgMHgwMDQwLCAweDJlNGMsIDB4NzA0YywgMHgxMDc4LCAweDJlNTYsIDB4YTIxMCwKLQkweDcwODAsIDB4MTA3OCwgMHgyZTU2LCAweGEzMTgsIDB4OGQ2OCwgMHgwMGYwLCAweDJlNDAsIDB4MjMwMCwKLQkweGEyMTgsIDB4MGU3ZiwgMHgwZDdmLCAweDE1N2YsIDB4MDA3OCwgMHgyYmFkLCAweDBmN2UsIDB4MDE3ZSwKLQkweGEwN2QsIDB4MDA0MCwgMHgyZTY1LCAweDIwMDEsIDB4MDAwMCwgMHg4MDAwLCAweDJmMGMsIDB4ODFmZiwKLQkweDAwNDAsIDB4MmU2NSwgMHgyMTc4LCAweDAwNzgsIDB4MmU1ZCwgMHgwMTdmLCAweDBmN2YsIDB4MDA3YywKLQkweDIwNjksIDB4YTgxNCwgMHg2OTEwLCAweDYyYTgsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MDBjMCwKLQkweDJiZDcsIDB4NjE1MCwgMHhhMTkwLCAweDI5YzAsIDB4MjIxNCwgMHhhMjk0LCAweDAwZmYsIDB4NjA3MCwKLQkweGEwODQsIDB4ZmYwMCwgMHhhMjE1LCAweDYzNmMsIDB4NjdjYywgMHhkNzljLCAweDAwNDAsIDB4MmU4NCwKLQkweDIwMzEsIDB4MDAwMSwgMHgwMDc4LCAweDJlODYsIDB4MjAzMSwgMHgwMDAwLCAweDdlM2EsIDB4N2YzZSwKLQkweDAwNzgsIDB4MmJhZCwgMHg2MTQwLCAweDYyNDQsIDB4MjAxOSwgMHhhOWEyLCAweDIzMWMsIDB4MDA3OCwKLQkweDJiYWQsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjEzNCwgMHg2MzM4LCAweGEwMDYsIDB4MjAxMCwKLQkweDEyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDEwNzgsIDB4MzVlNCwgMHgwMDQwLCAweDJiZGIsIDB4NjI0NCwKLQkweDYzMzgsIDB4MDA3OCwgMHgyYmFkLCAweDYxNDAsIDB4NjI0NCwgMHg3ODI0LCAweDYwNDIsIDB4N2IyOCwKLQkweDYzNDYsIDB4MjA2OSwgMHhhNzUyLCAweDgzMWYsIDB4YTMwNSwgMHg2ODE2LCAweDc4MmMsIDB4MjA2OSwKLQkweGE5YTIsIDB4MmQxYywgMHgyMDZhLCAweDAwNzgsIDB4MmJhZCwgMHgwMTdlLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzgyNCwgMHg2MDM2LCAweGQwOTQsIDB4MDA0MCwgMHgyZWM4LCAweDc4MjgsIDB4YTA4NSwKLQkweDAwMDEsIDB4MjAwOSwgMHhhOWFiLCAweDIwMGEsIDB4MjAwMSwgMHhmZmZmLCAweDEwNzgsIDB4NWFlNiwKLQkweDc4MmMsIDB4NjAzYSwgMHgxMjdmLCAweDAxN2YsIDB4MDA3OCwgMHgyYmFkLCAweDEwNzgsIDB4MzVlNCwKLQkweDAwNDAsIDB4MmJkYiwgMHg3ODI4LCAweGEwMGQsIDB4MDA0MCwgMHgyYmRiLCAweDc4MmMsIDB4YTAwNSwKLQkweDAwNDAsIDB4MmJkYiwgMHg2MjQ0LCAweDYxNDYsIDB4NjMzOCwgMHg2MDNhLCAweDAwNzgsIDB4MmJhZCwKLQkweDIwMDEsIDB4YTcwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDJiZDcsIDB4MGM3ZSwKLQkweDIwNjEsIDB4MDEwMCwgMHg3OTI0LCAweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweGExOTYsIDB4MDBmZiwKLQkweDAwYzAsIDB4MmVmNywgMHg2MDMwLCAweGEwODUsIDB4ZmYwMCwgMHgwMDc4LCAweDJmMDYsIDB4YTE4MiwKLQkweDAwN2YsIDB4MDBjOCwgMHgyZjMwLCAweGExODgsIDB4MjljMCwgMHgyMTBjLCAweGExOGMsIDB4MDBmZiwKLQkweDYwMzAsIDB4YTExNiwgMHgwMDQwLCAweDJmMzAsIDB4ODEwZiwgMHhhMTA1LCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDA3ZSwgMHgxMDc4LCAweDc2YzcsIDB4MDA3ZiwgMHgwMDQwLCAweDJmMmMsIDB4NjAxYSwKLQkweDYwMGIsIDB4YmMwOSwgMHg2MDFmLCAweDAwMDEsIDB4MTA3OCwgMHgzNWJhLCAweDAwNDAsIDB4MmYzMywKLQkweDY4MzcsIDB4MDAwMCwgMHg3MDA3LCAweDAwMDMsIDB4NjgzMywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwKLQkweDY4M2EsIDB4NzAxYiwgMHgyZjhlLCAweDJkMDAsIDB4NjAxMiwgMHgyMDA5LCAweDAwMzIsIDB4MTA3OCwKLQkweDc3NWMsIDB4MTI3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MTI3ZiwgMHgwYzdmLCAweDAwNzgsIDB4MmJkNywKLQkweDBjN2YsIDB4MDA3OCwgMHgyYmRiLCAweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDJmMmMsIDB4MjAwMSwKLQkweGE3MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwgMHgyYmQ3LCAweDBjN2UsIDB4MjA2MSwKLQkweDAxMDAsIDB4NzkyNCwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwgMHhhMTk2LCAweDAwZmYsIDB4MDBjMCwKLQkweDJmNGUsIDB4NjAzMCwgMHhhMDg1LCAweGZmMDAsIDB4MDA3OCwgMHgyZjVkLCAweGExODIsIDB4MDA3ZiwKLQkweDAwYzgsIDB4MmY4NywgMHhhMTg4LCAweDI5YzAsIDB4MjEwYywgMHhhMThjLCAweDAwZmYsIDB4NjAzMCwKLQkweGExMTYsIDB4MDA0MCwgMHgyZjg3LCAweDgxMGYsIDB4YTEwNSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDAwN2UsIDB4MTA3OCwgMHg3NmM3LCAweDAwN2YsIDB4MDA0MCwgMHgyZjgzLCAweDYwMWEsIDB4NjAwYiwKLQkweGJjMDUsIDB4NjAxZiwgMHgwMDAxLCAweDEwNzgsIDB4MzViYSwgMHgwMDQwLCAweDJmOGEsIDB4NjgzNywKLQkweDAwMDAsIDB4NzAwNywgMHgwMDAzLCAweDY4MzMsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwKLQkweDcwMWIsIDB4MmY4ZSwgMHgyZDAwLCAweDYwMTIsIDB4MjAwOSwgMHgwMDMyLCAweDEwNzgsIDB4Nzc1YywKLQkweDEyN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDEyN2YsIDB4MGM3ZiwgMHgwMDc4LCAweDJiZDcsIDB4MGM3ZiwKLQkweDAwNzgsIDB4MmJkYiwgMHgxMDc4LCAweDc3MmQsIDB4MDA3OCwgMHgyZjgzLCAweDY4MzAsIDB4YTA4NiwKLQkweDAxMDAsIDB4MDA0MCwgMHgyYmQ3LCAweDAwNzgsIDB4MmJhZCwgMHgyMDYxLCAweGFhMzMsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHg2MDAwLCAweGQwODQsIDB4MDA0MCwgMHgyZmE2LCAweDYxMDQsIDB4NjIwOCwKLQkweDIwMTksIDB4YTcxMiwgMHgyMzFjLCAweDEyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDEyN2YsIDB4MDA3OCwKLQkweDJiZGIsIDB4ODFmZiwgMHgwMGMwLCAweDJiZDcsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjI0OCwKLQkweDYwNjQsIDB4YTIwMiwgMHgwMDQ4LCAweDJmYmQsIDB4YTA4NSwgMHgwMDAxLCAweDEwNzgsIDB4MjU2YSwKLQkweDEwNzgsIDB4M2M5ZSwgMHgxMjdmLCAweDAwNzgsIDB4MmJhZCwgMHgxMjdmLCAweDAwNzgsIDB4MmJkYiwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwYTksIDB4MDAxMiwgMHgyMDAxLCAweGE3NDAsIDB4MjBhMCwKLQkweGEwMDYsIDB4NDBhNCwgMHgxMjdmLCAweDAwNzgsIDB4MmJhZCwgMHg3ZDM4LCAweDdjM2MsIDB4MDA3OCwKLQkweDJjNWYsIDB4NzgyNCwgMHhhMDljLCAweDAwZmYsIDB4YTM5YSwgMHgwMDAzLCAweDAwYzgsIDB4MmJkNywKLQkweDYyNTAsIDB4YTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4YTIwNiwgMHgwMGMwLCAweDJmZTksIDB4MjAwMSwKLQkweGE3NDAsIDB4MjAwOSwgMHgwMDBjLCAweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDA3OCwKLQkweDM2MDgsIDB4ODFmZiwgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwgMHgzNWU0LCAweDAwNDAsIDB4MmJkYiwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgwMGMwLCAweDJiZDcsIDB4MGM3ZSwKLQkweDEwNzgsIDB4MzViYSwgMHgwYzdmLCAweDAwNDAsIDB4MmJkNywgMHg2ODM3LCAweDAwMDAsIDB4NjgzOCwKLQkweGMwZmQsIDB4NjgzYSwgMHgxMDc4LCAweDhlNWEsIDB4MDA0MCwgMHgyYmQ3LCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWIsIDB4MzAwYiwgMHgwMDdjLCAweDY4MzAsIDB4YTA4NiwgMHgwMTAwLCAweDAwNDAsIDB4MmJkNywKLQkweGFkODAsIDB4MDAwZSwgMHgyMDA5LCAweDAwMGMsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwKLQkweDAwNzgsIDB4MzYwOCwgMHgxMDc4LCAweDM1YmEsIDB4MDA0MCwgMHgyYmQ3LCAweDEwNzgsIDB4NDJkZCwKLQkweDIwMDksIDB4MDAxYywgMHg3YTJjLCAweDdiMjgsIDB4N2MzYywgMHg3ZDM4LCAweDEwNzgsIDB4MzYwNCwKLQkweDcwMWIsIDB4MzAyYiwgMHgwMDdjLCAweGFkZTgsIDB4MDAwZCwgMHg2ODAwLCAweGEwMDUsIDB4MDA0MCwKLQkweDJiZGIsIDB4NjgwNCwgMHhkMGFjLCAweDAwNDAsIDB4MzAzOCwgMHhkMGE0LCAweDAwNDAsIDB4MmJkYiwKLQkweGQwOTQsIDB4MDA0MCwgMHgzMDQzLCAweDBjN2UsIDB4MjA2MSwgMHgwMTAwLCAweDYxMDQsIDB4YTE4YywKLQkweGZmZGYsIDB4NjEwNiwgMHgwYzdmLCAweGQwOGMsIDB4MDA0MCwgMHgzMDRlLCAweDBjN2UsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjEwNCwgMHhhMThkLCAweDAwMTAsIDB4NjEwNiwgMHgwYzdmLCAweDIwMDksIDB4MDEwMCwKLQkweDIxMGMsIDB4YTE4YSwgMHgwMDAyLCAweDAwNDgsIDB4MzA2MywgMHhkMDg0LCAweDAwNDAsIDB4MzA2MywKLQkweDZhMjgsIDB4YTI4YSwgMHgwMDdmLCAweDAwYzgsIDB4MmJkYiwgMHhhMjg4LCAweDI5YzAsIDB4MjEwYywKLQkweGExOGMsIDB4MDBmZiwgMHg2MTU2LCAweGQwZGMsIDB4MDA0MCwgMHgzMDZjLCAweDY4MjgsIDB4YTA4YSwKLQkweDAwN2YsIDB4MDBjOCwgMHgyYmRiLCAweDYwNTIsIDB4NjgwOCwgMHhhMDhhLCAweDAxMDAsIDB4MDA0OCwKLQkweDJiZGIsIDB4YTA4YSwgMHgwODQxLCAweDAwYzgsIDB4MmJkYiwgMHhhMDg0LCAweDAwMDcsIDB4MDBjMCwKLQkweDJiZGIsIDB4NjgwYywgMHhhMDA1LCAweDAwNDAsIDB4MmJkYiwgMHg2ODEwLCAweGEwMDUsIDB4MDA0MCwKLQkweDJiZGIsIDB4Njg0OCwgMHg2OTQwLCAweGExMGEsIDB4MDBjOCwgMHgyYmRiLCAweDgwMDEsIDB4MDA0MCwKLQkweDJiZGIsIDB4Njg0YywgMHg2OTQ0LCAweGExMGEsIDB4MDBjOCwgMHgyYmRiLCAweDgwMDEsIDB4MDA0MCwKLQkweDJiZGIsIDB4NjgwNCwgMHhkMGZjLCAweDAwNDAsIDB4MzBjMiwgMHgxMDc4LCAweDM1YmEsIDB4MDA0MCwKLQkweDJiZDcsIDB4MjAwOSwgMHgwMDE0LCAweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4YTI5MCwKLQkweDAwMzgsIDB4YTM5OSwgMHgwMDAwLCAweDEwNzgsIDB4MzYwNCwgMHg3MDFiLCAweDMwYTgsIDB4MDA3YywKLQkweGFkZTgsIDB4MDAwZCwgMHgyMGE5LCAweDAwMTQsIDB4MmQ5OCwgMHgyMDY5LCAweGE3NmUsIDB4MmRhMCwKLQkweDUzYTMsIDB4NzAxMCwgMHhhMGU4LCAweDAwMGQsIDB4MjAwMSwgMHhhNzcyLCAweDIwMGMsIDB4ZDFlNCwKLQkweDAwNDAsIDB4MzBjMiwgMHgwYzdlLCAweDIwNjEsIDB4MDEwMCwgMHg2MDA0LCAweGEwODUsIDB4MGIwMCwKLQkweDYwMDYsIDB4MGM3ZiwgMHgyMGE5LCAweDAwMWMsIDB4MmQ5OCwgMHgyMDY5LCAweGE3NTIsIDB4MmRhMCwKLQkweDUzYTMsIDB4NjgxNCwgMHhhMDhjLCAweDAwZmYsIDB4NjE0MiwgMHg4MDA3LCAweGEwODQsIDB4MDBmZiwKLQkweDYwNDYsIDB4MTA3OCwgMHg0ZWFlLCAweDEwNzgsIDB4NDljZSwgMHgxMDc4LCAweDRhM2UsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMGMwLCAweDMxNGQsIDB4NjgwOCwgMHg2MDJhLCAweDEwNzgsIDB4MjFmNywKLQkweDY4MTgsIDB4NjkxYywgMHg2YTIwLCAweDZiMjQsIDB4ODAwNywgMHg4MTBmLCAweDgyMTcsIDB4ODMxZiwKLQkweDYwMTYsIDB4NjExYSwgMHg2MjFlLCAweDYzMjIsIDB4NmMwNCwgMHhkNGY0LCAweDAwNDAsIDB4MzBmYSwKLQkweDY4MzAsIDB4NjkzNCwgMHg2YTM4LCAweDZiM2MsIDB4ODAwNywgMHg4MTBmLCAweDgyMTcsIDB4ODMxZiwKLQkweDAwNzgsIDB4MzBmYywgMHhhMDg0LCAweGYwZmYsIDB4NjAwNiwgMHg2MTBhLCAweDYyMGUsIDB4NjMxMiwKLQkweDEwNzgsIDB4NWIxOSwgMHg2OTA0LCAweGQxZmMsIDB4MDA0MCwgMHgzMTJmLCAweDBjN2UsIDB4MjAwOSwKLQkweDAwMDAsIDB4MjBhOSwgMHgwMDAxLCAweDZiNzAsIDB4ZDM4NCwgMHgwMDQwLCAweDMxMmMsIDB4MDA3OCwKLQkweDMxMTYsIDB4ODM5ZCwgMHgwMGM4LCAweDMxMmMsIDB4MzUwOCwgMHg4MTA5LCAweDEwNzgsIDB4NTQ4MCwKLQkweDY4NzgsIDB4NjAxNiwgMHg2ODc0LCAweDIwMDgsIDB4YTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4NjAwYSwKLQkweGExODQsIDB4MDBmZiwgMHg2MDA2LCAweDgxMDgsIDB4MDBjMCwgMHgzMTJhLCAweDYwMDMsIDB4MDAwMywKLQkweDAwNzgsIDB4MzEyYywgMHg2MDAzLCAweDAwMDEsIDB4MDBmMCwgMHgzMTExLCAweDBjN2YsIDB4MGM3ZSwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDJmLCAweDAwNDAsIDB4NjAyZiwgMHgwMDAwLCAweDBjN2YsIDB4MTA3OCwKLQkweDM4MTksIDB4MDA0MCwgMHgzMTNkLCAweDEwNzgsIDB4MjU2YSwgMHg2MGMwLCAweGEwMDUsIDB4MDA0MCwKLQkweDMxNDksIDB4NjAwMywgMHgwMDAxLCAweDIwOTEsIDB4MzAxZCwgMHgxMDc4LCAweDQyMjQsIDB4MDA3OCwKLQkweDMxNGQsIDB4NjAwMywgMHgwMDA0LCAweDIwOTEsIDB4MzAxZCwgMHgwMDc4LCAweDJiYWQsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweDJiZDcsIDB4MjA2OSwgMHhhNzUyLCAweDc4MzAsIDB4Njg0MiwKLQkweDc4MzQsIDB4Njg0NiwgMHg2ODA0LCAweGQwZmMsIDB4MDA0MCwgMHgzMTYyLCAweDIwMDksIDB4MDAzMCwKLQkweDAwNzgsIDB4MzE2NCwgMHgyMDA5LCAweDAwMWMsIDB4MmQwMCwgMHg3YTJjLCAweDdiMjgsIDB4N2MzYywKLQkweDdkMzgsIDB4MDA3OCwgMHgzNjA4LCAweGEwMDYsIDB4MTA3OCwgMHgyNTZhLCAweDgxZmYsIDB4MDBjMCwKLQkweDJiZDcsIDB4MTA3OCwgMHg0MmRkLCAweDEwNzgsIDB4NDIyNCwgMHgwMDc4LCAweDJiYWQsIDB4ODFmZiwKLQkweDAwYzAsIDB4MmJkNywgMHg2MTg0LCAweDgxZmYsIDB4MDA0MCwgMHgzMTkxLCAweDcwM2YsIDB4MDAwMCwKLQkweDIwMDEsIDB4YWRjMCwgMHgyMDA5LCAweDAwNDAsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4MzYwOCwgMHg3MDFiLCAweDJiYWEsIDB4MTI3ZiwKLQkweDAwN2MsIDB4NzAzZiwgMHgwMDAxLCAweDBkN2UsIDB4MjA2OSwgMHhhZGMwLCAweDIwYTksIDB4MDA0MCwKLQkweDIwYTEsIDB4YWRjMCwgMHgyMDE5LCAweGZmZmYsIDB4NDNhNCwgMHg2NTUwLCAweGE1ODgsIDB4MjljMCwKLQkweDIxMGMsIDB4YTE4YywgMHgwMGZmLCAweDIxNmEsIDB4YTAwZSwgMHgyMDExLCAweDAwMDIsIDB4MjEwMCwKLQkweGE1MDYsIDB4MDA0MCwgMHgzMWMzLCAweDEwNzgsIDB4NDVjNCwgMHgwMGMwLCAweDMxYzMsIDB4NjAxNCwKLQkweDgyMWMsIDB4MDA0OCwgMHgzMWJiLCAweGEzOTgsIDB4YWRjMCwgMHhhMDg1LCAweGZmMDAsIDB4ODAwNywKLQkweDIwMWEsIDB4MDA3OCwgMHgzMWMyLCAweGEzOTgsIDB4YWRjMCwgMHgyMzI0LCAweGE0YTQsIDB4ZmYwMCwKLQkweGE0MDUsIDB4MjAxYSwgMHg4MjEwLCAweDgxMDgsIDB4YTE4MiwgMHgwMDgwLCAweDAwYzgsIDB4MzFjYSwKLQkweDAwNzgsIDB4MzFhNywgMHg4MjAxLCAweDgwMDcsIDB4MmQwYywgMHhhMTA1LCAweDIwNmEsIDB4MGQ3ZiwKLQkweDIwYTksIDB4MDA0MCwgMHgyMGExLCAweGFkYzAsIDB4MjA5OSwgMHhhZGMwLCAweDEwNzgsIDB4NDI4MSwKLQkweDAwNzgsIDB4MzE4MCwgMHgxMDc4LCAweDM1ZTQsIDB4MDA0MCwgMHgyYmRiLCAweDBjN2UsIDB4MTA3OCwKLQkweDM1YmEsIDB4MGM3ZiwgMHgwMGMwLCAweDMxZTgsIDB4MjAwOSwgMHgwMDAyLCAweDAwNzgsIDB4MmJkNywKLQkweDIwMDEsIDB4YTc1MywgMHgyMDA0LCAweGQwYjQsIDB4MDA0MCwgMHgzMjBmLCAweDYwMDAsIDB4ZDA4YywKLQkweDAwYzAsIDB4MzIwZiwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwKLQkweDMyMGYsIDB4NjgzNywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDEwNzgsIDB4OGVhZSwKLQkweDAwYzAsIDB4MzIwNiwgMHgyMDA5LCAweDAwMDMsIDB4MDA3OCwgMHgyYmQ3LCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWIsIDB4MzIwYiwgMHgwMDdjLCAweDEwNzgsIDB4MzVlNCwgMHgwMDQwLCAweDJiZGIsIDB4MjBhOSwKLQkweDAwMmIsIDB4MmM5OCwgMHhhZGU4LCAweDAwMDIsIDB4MmRhMCwgMHg1M2EzLCAweDIwYTksIDB4MDAwNCwKLQkweGFjODAsIDB4MDAwNiwgMHgyMDk4LCAweGFkODAsIDB4MDAwNiwgMHgyMGEwLCAweDEwNzgsIDB4NDI4MSwKLQkweDIwYTksIDB4MDAwNCwgMHhhYzgwLCAweDAwMGEsIDB4MjA5OCwgMHhhZDgwLCAweDAwMGEsIDB4MjBhMCwKLQkweDEwNzgsIDB4NDI4MSwgMHgyZDAwLCAweDIwMDksIDB4MDAyYiwgMHg3YTJjLCAweDdiMjgsIDB4N2MzYywKLQkweDdkMzgsIDB4MDA3OCwgMHgzNjA4LCAweDgxZmYsIDB4MDBjMCwgMHgyYmQ3LCAweDEwNzgsIDB4MzVkMiwKLQkweDAwNDAsIDB4MmJkYiwgMHgxMDc4LCAweDQ3YmQsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MDBjMCwKLQkweDJiZDcsIDB4NzgyOCwgMHhhMDhhLCAweDEwMDAsIDB4MDBjOCwgMHgyYmRiLCAweDEwNzgsIDB4MzVlNCwKLQkweDAwNDAsIDB4MmJkYiwgMHgxMDc4LCAweDQ4MmYsIDB4MDA0MCwgMHgyYmQ3LCAweDIwMTksIDB4MDAwNCwKLQkweDEwNzgsIDB4NDdkMywgMHg3OTI0LCAweDgxMGYsIDB4N2EyOCwgMHgxMDc4LCAweDMyNTksIDB4MDA3OCwKLQkweDJiYWQsIDB4YTE4NiwgMHgwMGZmLCAweDAwNDAsIDB4MzI2MSwgMHgxMDc4LCAweDMyNzEsIDB4MDA3OCwKLQkweDMyNzAsIDB4MjAyOSwgMHgwMDdlLCAweDIwNjEsIDB4YTcwMCwgMHg2NDUwLCAweDI0MDAsIDB4YTUwNiwKLQkweDAwNDAsIDB4MzI2ZCwgMHgyNTA4LCAweDEwNzgsIDB4MzI3MSwgMHg4NTI5LCAweDAwYzgsIDB4MzI2NiwKLQkweDAwN2MsIDB4MTA3OCwgMHg0NWM0LCAweDAwYzAsIDB4MzI3YywgMHgyMjAwLCAweDgwMDMsIDB4ODAwYiwKLQkweDgxMGIsIDB4YTEwOCwgMHgxMDc4LCAweDVhNTIsIDB4MDA3YywgMHg4MWZmLCAweDAwYzAsIDB4MmJkNywKLQkweDEwNzgsIDB4MzVkMiwgMHgwMDQwLCAweDJiZGIsIDB4MTA3OCwgMHg0NjczLCAweDAwNDAsIDB4MmJkNywKLQkweDEwNzgsIDB4NDdjOCwgMHgwMDc4LCAweDJiYWQsIDB4ODFmZiwgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwKLQkweDM1ZDIsIDB4MDA0MCwgMHgyYmRiLCAweDEwNzgsIDB4NDY3MywgMHgwMDQwLCAweDJiZDcsIDB4MTA3OCwKLQkweDQ3YjIsIDB4MDA3OCwgMHgyYmFkLCAweDYxMDAsIDB4MDA3OCwgMHgyYmFkLCAweDEwNzgsIDB4MzVlNCwKLQkweDAwNDAsIDB4MmJkYiwgMHgyMDAxLCAweGE3MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwKLQkweDJiZDcsIDB4MGQ3ZSwgMHhhY2U4LCAweDAwMGEsIDB4NzkyNCwgMHhkMTg0LCAweDAwNDAsIDB4MzJiMiwKLQkweGFjZTgsIDB4MDAwNiwgMHg2ODBjLCAweDgwMDcsIDB4NzgzZSwgMHg2ODA4LCAweDgwMDcsIDB4NzgzYSwKLQkweDZiMDQsIDB4ODMxZiwgMHg2YTAwLCAweDgyMTcsIDB4MGQ3ZiwgMHg2MTAwLCAweGExOGMsIDB4MDIwMCwKLQkweDAwNzgsIDB4MmJhZCwgMHhhMDA2LCAweDEwNzgsIDB4MjU2YSwgMHg3ODI0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDBmZiwgMHgwMDQwLCAweDMyY2YsIDB4ODFmZiwgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwKLQkweDQyZGQsIDB4NzgyOCwgMHhhMDhhLCAweDEwMDAsIDB4MDBjOCwgMHgyYmRiLCAweDc5MjQsIDB4YTE4YywKLQkweGZmMDAsIDB4ODEwZiwgMHhhMTg2LCAweDAwZmYsIDB4MDA0MCwgMHgzMmU1LCAweGExODIsIDB4MDA3ZiwKLQkweDAwYzgsIDB4MmJkYiwgMHgyMTAwLCAweDEwNzgsIDB4MjU2NCwgMHgwMjdlLCAweDBjN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDYxLCAweGE5YzQsIDB4NjAxYiwgMHgwMDAwLCAweDYwMWYsIDB4MDAwMCwKLQkweDIwMTEsIDB4MDAwMywgMHgxMDc4LCAweDcwZTAsIDB4MjAxMSwgMHgwMDAyLCAweDEwNzgsIDB4NzBlYSwKLQkweDEwNzgsIDB4NmZjNCwgMHgwMzdlLCAweDIwMTksIDB4MDAwMCwgMHgxMDc4LCAweDcwNTgsIDB4MDM3ZiwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDMwLCAweGEwODQsIDB4MDBmZiwgMHg4MTBmLCAweGExMDUsIDB4NjA0YSwKLQkweDYwNDMsIDB4MDA5MCwgMHg2MDQzLCAweDAwMTAsIDB4MjAwOSwgMHgwMDJkLCAweDIwMTEsIDB4NDI1OSwKLQkweDEwNzgsIDB4NWFkZCwgMHg3OTI0LCAweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDdhMjgsIDB4MTA3OCwKLQkweDMyNTksIDB4MTI3ZiwgMHgwYzdmLCAweDAyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDc5MjQsIDB4YTE4YywKLQkweGZmMDAsIDB4ODEwZiwgMHgwYzdlLCAweDEwNzgsIDB4NDU1YywgMHgyYzA4LCAweDBjN2YsIDB4MDBjMCwKLQkweDJiZGIsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MDA0MCwgMHgzMzMyLCAweDIwMDksIDB4MDAwMSwKLQkweDAwNzgsIDB4MmJkNywgMHg2MGNjLCAweGQwOWMsIDB4MDBjMCwgMHgzMzNhLCAweDIwMDksIDB4MDAwNSwKLQkweDAwNzgsIDB4MmJkNywgMHgxMDc4LCAweDM1YmEsIDB4MDBjMCwgMHgzMzQyLCAweDIwMDksIDB4MDAwMiwKLQkweDAwNzgsIDB4MmJkNywgMHg3OTI0LCAweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MTA3OCwKLQkweDM2MDQsIDB4NzAxYiwgMHgzMzRjLCAweDAwN2MsIDB4MjAwOSwgMHgwMDgwLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4MzM1OSwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDA0MCwKLQkweDMzNWQsIDB4MjAyMSwgMHg0MDBhLCAweDAwNzgsIDB4MmJhZiwgMHgwZDdlLCAweGFkZTgsIDB4MDAwZCwKLQkweDY5MDAsIDB4NmEwOCwgMHg2YjBjLCAweDZjMTAsIDB4NmQxNCwgMHg2ZTE4LCAweDY4MjAsIDB4YTBiZSwKLQkweDAxMDAsIDB4MDA0MCwgMHgzM2QwLCAweGEwYmUsIDB4MDExMiwgMHgwMDQwLCAweDMzZDAsIDB4YTBiZSwKLQkweDAxMTMsIDB4MDA0MCwgMHgzM2QwLCAweGEwYmUsIDB4MDExNCwgMHgwMDQwLCAweDMzZDAsIDB4YTBiZSwKLQkweDAxMTcsIDB4MDA0MCwgMHgzM2QwLCAweGEwYmUsIDB4MDExYSwgMHgwMDQwLCAweDMzZDAsIDB4YTBiZSwKLQkweDAxMjEsIDB4MDA0MCwgMHgzM2M2LCAweGEwYmUsIDB4MDEzMSwgMHgwMDQwLCAweDMzYzYsIDB4YTBiZSwKLQkweDAxNzEsIDB4MDA0MCwgMHgzM2QwLCAweGEwYmUsIDB4MDE3MywgMHgwMDQwLCAweDMzZDAsIDB4YTBiZSwKLQkweDAxYTEsIDB4MDBjMCwgMHgzMzk4LCAweDY4MzAsIDB4ODAwNywgMHg2ODMyLCAweDAwNzgsIDB4MzNkNiwKLQkweGEwYmUsIDB4MDIxMiwgMHgwMDQwLCAweDMzY2MsIDB4YTBiZSwgMHgwMjEzLCAweDAwNDAsIDB4MzNjYywKLQkweGEwYmUsIDB4MDIxNCwgMHgwMDQwLCAweDMzYmUsIDB4YTBiZSwgMHgwMjE3LCAweDAwNDAsIDB4MzNiOCwKLQkweGEwYmUsIDB4MDIxYSwgMHgwMGMwLCAweDMzYjEsIDB4NjgzOCwgMHg4MDA3LCAweDY4M2EsIDB4MDA3OCwKLQkweDMzZDAsIDB4YTBiZSwgMHgwMzAwLCAweDAwNDAsIDB4MzNkMCwgMHgwZDdmLCAweDAwNzgsIDB4MmJkYiwKLQkweGFkODAsIDB4MDAxMCwgMHgyMGE5LCAweDAwMDcsIDB4MTA3OCwgMHgzNDE4LCAweGFkODAsIDB4MDAwZSwKLQkweDIwYTksIDB4MDAwMSwgMHgxMDc4LCAweDM0MTgsIDB4MDA3OCwgMHgzM2QwLCAweGFkODAsIDB4MDAwYywKLQkweDEwNzgsIDB4MzQyNiwgMHgwMDc4LCAweDMzZDYsIDB4YWQ4MCwgMHgwMDBlLCAweDEwNzgsIDB4MzQyNiwKLQkweGFkODAsIDB4MDAwYywgMHgyMGE5LCAweDAwMDEsIDB4MTA3OCwgMHgzNDE4LCAweDBjN2UsIDB4MTA3OCwKLQkweDM1YmEsIDB4MDA0MCwgMHgzNDA5LCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDY4MzcsIDB4MDExOSwKLQkweDY4NTMsIDB4MDAwMCwgMHg2ODRmLCAweDAwMjAsIDB4Njg1YiwgMHgwMDAxLCAweDgxMGIsIDB4Njk3ZSwKLQkweDY4ODMsIDB4MDAwMCwgMHg2YTg2LCAweDZiOGEsIDB4NmM4ZSwgMHg2ZDkyLCAweDY5OTYsIDB4Njg5YiwKLQkweDAwMDAsIDB4MGM3ZiwgMHgwZDdmLCAweDY4MzcsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwKLQkweDY4MjMsIDB4MDAwMCwgMHg2ODA0LCAweDIwNjgsIDB4MTA3OCwgMHg4ZTc2LCAweDAwYzAsIDB4MzQwNCwKLQkweDIwMDksIDB4MDAwMywgMHgwMDc4LCAweDJiZDcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWIsIDB4MzQwZiwKLQkweDAwN2MsIDB4MGM3ZiwgMHgwZDdmLCAweDIwMDksIDB4MDAwMiwgMHgwMDc4LCAweDJiZDcsIDB4NjgyMCwKLQkweGEwODYsIDB4ODAwMSwgMHgwMGMwLCAweDJiYWQsIDB4MjAwOSwgMHgwMDA0LCAweDAwNzgsIDB4MmJkNywKLQkweDAxN2UsIDB4MjAwOCwgMHgyMDQ0LCAweDgwMDAsIDB4MjA0YywgMHg4MDAwLCAweDI5MGEsIDB4ODEwOCwKLQkweDI4MGEsIDB4ODEwOCwgMHgwMGYwLCAweDM0MWEsIDB4MDE3ZiwgMHgwMDdjLCAweDAxN2UsIDB4MGE3ZSwKLQkweDBiN2UsIDB4MjAwOCwgMHgyMDQ0LCAweDgwMDAsIDB4MjA0YywgMHg4MDAwLCAweDIwNTQsIDB4ODAwMCwKLQkweDIwNWMsIDB4MmIwYSwgMHg4MTA4LCAweDJhMGEsIDB4ODEwOCwgMHgyOTBhLCAweDgxMDgsIDB4MjgwYSwKLQkweDBiN2YsIDB4MGE3ZiwgMHgwMTdmLCAweDAwN2MsIDB4ODFmZiwgMHgwMDQwLCAweDM0NDMsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDA3OCwgMHgyYmQ3LCAweDYwY2MsIDB4ZDA5YywgMHgwMGMwLCAweDM0NGIsIDB4MjAwOSwKLQkweDAwMDUsIDB4MDA3OCwgMHgyYmQ3LCAweDc5MjQsIDB4MjE0MCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwKLQkweGExODIsIDB4MDA4MCwgMHgwMDQ4LCAweDJiZGIsIDB4YTE4MiwgMHgwMGZmLCAweDAwYzgsIDB4MmJkYiwKLQkweDdhMmMsIDB4N2IyOCwgMHg2MDZjLCAweGEzMDYsIDB4MDBjMCwgMHgzNDY2LCAweDYwNzAsIDB4YTI0ZSwKLQkweDAwNDAsIDB4MmJkYiwgMHhhOWNjLCAweGZmMDAsIDB4MDA0MCwgMHgyYmRiLCAweDBjN2UsIDB4MTA3OCwKLQkweDM1MGYsIDB4MmM2OCwgMHgwYzdmLCAweDAwNDAsIDB4MzQ5ZSwgMHhhMGM2LCAweDQwMDAsIDB4MDBjMCwKLQkweDM0ODQsIDB4MGM3ZSwgMHgwMDdlLCAweDJkNjAsIDB4MjAwOSwgMHgwMDAwLCAweDEwNzgsIDB4NDg5YiwKLQkweDAwYzAsIDB4MzQ3YiwgMHhjMTg1LCAweDYwMDAsIDB4ZDBiYywgMHgwMDQwLCAweDM0ODAsIDB4YzE4ZCwKLQkweDAwN2YsIDB4MGM3ZiwgMHgwMDc4LCAweDM0OWIsIDB4YTBjNiwgMHg0MDA3LCAweDAwYzAsIDB4MzQ4YiwKLQkweDI0MDgsIDB4MDA3OCwgMHgzNDliLCAweGEwYzYsIDB4NDAwOCwgMHgwMGMwLCAweDM0OTMsIDB4MjcwOCwKLQkweDI2MTAsIDB4MDA3OCwgMHgzNDliLCAweGEwYzYsIDB4NDAwOSwgMHgwMGMwLCAweDM0OTksIDB4MDA3OCwKLQkweDM0OWIsIDB4MjAwMSwgMHg0MDA2LCAweDIwMjAsIDB4MDA3OCwgMHgyYmFmLCAweDJkMDAsIDB4NzAyMiwKLQkweDAxN2UsIDB4MGI3ZSwgMHgwYzdlLCAweDBlN2UsIDB4MmM3MCwgMHgxMDc4LCAweDc2YzcsIDB4MDA0MCwKLQkweDM0ZTQsIDB4MmQwMCwgMHg2MDFhLCAweDIwMDEsIDB4YTc1NywgMHgyMDA0LCAweGEwODQsIDB4MDBmZiwKLQkweDY4NDIsIDB4MmU1OCwgMHgwZTdmLCAweDBlN2UsIDB4MGM3ZSwgMHgxMDc4LCAweDM1YmEsIDB4MGM3ZiwKLQkweDJiNzAsIDB4MDBjMCwgMHgzNGM1LCAweDEwNzgsIDB4NzcyZCwgMHgwZTdmLCAweDBjN2YsIDB4MGI3ZiwKLQkweDAxN2YsIDB4MjAwOSwgMHgwMDAyLCAweDAwNzgsIDB4MmJkNywgMHg2ODM3LCAweDAwMDAsIDB4MmQwMCwKLQkweDYwMTIsIDB4NjgzMywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHgyODgwLCAweDEyN2YsIDB4NjAxZiwgMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwKLQkweDEwNzgsIDB4NDRlZSwgMHgyMDAxLCAweDAwMDIsIDB4MTA3OCwgMHg0NTAyLCAweDIwMDksIDB4MDAwMiwKLQkweDEwNzgsIDB4Nzc1YywgMHhhMDg1LCAweDAwMDEsIDB4MGU3ZiwgMHgwYzdmLCAweDBiN2YsIDB4MDE3ZiwKLQkweDAwYzAsIDB4MzRlZSwgMHgyMDA5LCAweDAwMDMsIDB4MDA3OCwgMHgyYmQ3LCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWIsIDB4MzRmMywgMHgwMDdjLCAweDY4MzAsIDB4YTA4NiwgMHgwMTAwLCAweDcwMjAsIDB4MjA2MCwKLQkweDAwYzAsIDB4MzUwMSwgMHgyMDA5LCAweDAwMDQsIDB4NjIwNCwgMHhhMjk0LCAweDAwZmYsIDB4MDA3OCwKLQkweDJiZDcsIDB4MjAwOSwgMHgwMDAwLCAweDEwNzgsIDB4NDg5YiwgMHgwMGMwLCAweDM1MDgsIDB4YzE4NSwKLQkweDYwMDAsIDB4ZDBiYywgMHgwMDQwLCAweDM1MGQsIDB4YzE4ZCwgMHgwMDc4LCAweDJiYWQsIDB4MGU3ZSwKLQkweDBkN2UsIDB4MjAyOSwgMHgwMDAwLCAweDIwMjEsIDB4MDA4MCwgMHgyMGE5LCAweDAwN2YsIDB4MjA3MSwKLQkweGE4YjUsIDB4MmUwNCwgMHhhMDA1LCAweDAwYzAsIDB4MzUyNCwgMHgyMTAwLCAweGE0MDYsIDB4MDBjMCwKLQkweDM1NTUsIDB4MjQyOCwgMHgwMDc4LCAweDM1NTUsIDB4MjA2OCwgMHg2ZjEwLCAweDI3MDAsIDB4YTMwNiwKLQkweDAwYzAsIDB4MzU0NiwgMHg2ZTE0LCAweDI2MDAsIDB4YTIwNiwgMHgwMGMwLCAweDM1NDYsIDB4MjQwMCwKLQkweGExMDYsIDB4MDBjMCwgMHgzNTQyLCAweDJkNjAsIDB4ZDg4NCwgMHgwMDQwLCAweDM1NmEsIDB4NjAwNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHgzNTZhLCAweDIwMDEsIDB4NDAwMCwKLQkweDAwNzgsIDB4MzU2YiwgMHgyMDAxLCAweDQwMDcsIDB4MDA3OCwgMHgzNTZiLCAweDI0MDAsIDB4YTEwNiwKLQkweDAwYzAsIDB4MzU1NSwgMHg2ZTE0LCAweDg3ZmYsIDB4MDBjMCwgMHgzNTUxLCAweDg2ZmYsIDB4MDA0MCwKLQkweDM1MjEsIDB4MjAwMSwgMHg0MDA4LCAweDAwNzgsIDB4MzU2YiwgMHg4NDIwLCAweDhlNzAsIDB4MDBmMCwKLQkweDM1MTksIDB4ODVmZiwgMHgwMGMwLCAweDM1NjQsIDB4MjAwMSwgMHg0MDA5LCAweDAwNzgsIDB4MzU2YiwKLQkweDIwMDEsIDB4MDAwMSwgMHgwMDc4LCAweDM1NmIsIDB4MTA3OCwgMHg0NTVjLCAweDAwYzAsIDB4MzU2MCwKLQkweDYzMTIsIDB4NjIxNiwgMHhhMDA2LCAweGEwMDUsIDB4MGQ3ZiwgMHgwZTdmLCAweDAwN2MsIDB4ODFmZiwKLQkweDAwYzAsIDB4MmJkNywgMHgxMDc4LCAweDM1YmEsIDB4MDA0MCwgMHgyYmQ3LCAweDY4MzcsIDB4MDAwMCwKLQkweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDc4MjQsIDB4YTAwNSwgMHgwMDQwLCAweDJiZGIsIDB4YTA5NiwKLQkweDAwZmYsIDB4MDA0MCwgMHgzNTg3LCAweGEwOTIsIDB4MDAwNCwgMHgwMGM4LCAweDJiZGIsIDB4MjAxMCwKLQkweDJkMTgsIDB4MTA3OCwgMHgyODJmLCAweDAwNDAsIDB4MmJkNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwKLQkweDM1OTIsIDB4MDA3YywgMHg2ODMwLCAweGEwODYsIDB4MDEwMCwgMHgwMDQwLCAweDJiZDcsIDB4MDA3OCwKLQkweDJiYWQsIDB4NzkyNCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHhhMTgyLCAweDAwODAsIDB4MDA0OCwKLQkweDJiZGIsIDB4YTE4MiwgMHgwMGZmLCAweDAwYzgsIDB4MmJkYiwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDEwNzgsIDB4OGQ1YiwgMHgwMGMwLCAweDM1YjcsIDB4YTE5MCwgMHhhODM1LCAweDIyMDQsIDB4YTA2NSwKLQkweDAwNDAsIDB4MzViNywgMHgxMDc4LCAweDQyZjgsIDB4MTI3ZiwgMHgwMDc4LCAweDJiYWQsIDB4MTI3ZiwKLQkweDAwNzgsIDB4MmJkNywgMHgxMDc4LCAweDEzOGIsIDB4MDA0MCwgMHgzNWQxLCAweGEwMDYsIDB4NjgwMiwKLQkweDcwMTAsIDB4YTAwNSwgMHgwMGMwLCAweDM1YzksIDB4MmQwMCwgMHg3MDEyLCAweDcwMTYsIDB4MDA3OCwKLQkweDM1Y2YsIDB4NzAxNCwgMHg2ODAyLCAweDIwNjAsIDB4MmQwMCwgMHg2MDA2LCAweDcwMTYsIDB4YWQ4MCwKLQkweDAwMGQsIDB4MDA3YywgMHg3OTI0LCAweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4MzVlMSwgMHg3ZTI4LCAweGE2ODQsIDB4M2ZmZiwgMHhhMDgyLCAweDQwMDAsIDB4MDA0OCwKLQkweDM1ZTIsIDB4YTA2NiwgMHg4Y2ZmLCAweDAwN2MsIDB4N2UyNCwgMHg4NjBmLCAweGExOGMsIDB4MDBmZiwKLQkweDEwNzgsIDB4NDVjNCwgMHgwMGMwLCAweDM1ZjIsIDB4YTZiNCwgMHgwMGZmLCAweGE2ODIsIDB4NDAwMCwKLQkweDAwNDgsIDB4MzVmMywgMHhhMDY2LCAweDhjZmYsIDB4MDA3YywgMHgwMTdlLCAweDcxMTAsIDB4ODFmZiwKLQkweDAwNDAsIDB4MzYwMCwgMHgyMTY4LCAweDY5MDQsIDB4MTA3OCwgMHgxM2E0LCAweDAwNzgsIDB4MzVmNywKLQkweDcxMTIsIDB4NzExNiwgMHgwMTdmLCAweDAwN2MsIDB4MjAzMSwgMHgwMDAxLCAweDAwNzgsIDB4MzYwYSwKLQkweDIwMzEsIDB4MDAwMCwgMHgyMDYxLCAweGE3ZDIsIDB4NjYwNiwgMHg2MTEyLCAweDYwMGUsIDB4NjIyNiwKLQkweDYzMmEsIDB4NjQyZSwgMHg2NTMyLCAweDJjMTAsIDB4MTA3OCwgMHgxM2RiLCAweDcwMDcsIDB4MDAwMiwKLQkweDcwMWIsIDB4MmJhZCwgMHgwMDdjLCAweDBmN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA3OSwKLQkweDAwMDAsIDB4MjAwMSwgMHhhNzkwLCAweDIwMDQsIDB4YTAwNSwgMHgwMGMwLCAweDM2MzYsIDB4MDA2OCwKLQkweDM2MzYsIDB4NzgxOCwgMHhkMDg0LCAweDAwYzAsIDB4MzYzNiwgMHg3YTIyLCAweDdiMjYsIDB4N2MyYSwKLQkweDc4MWIsIDB4MDAwMSwgMHgyMDkxLCAweDQwODAsIDB4MDA3OCwgMHgzNjViLCAweDAxN2UsIDB4MGM3ZSwKLQkweDBlN2UsIDB4MjA3MSwgMHhhNzgyLCAweDcxMzgsIDB4YTE4MiwgMHgwMDA4LCAweDAwNDgsIDB4MzY0NCwKLQkweDcwMzAsIDB4MjA2MCwgMHgwMDc4LCAweDM2NTUsIDB4NzAzMCwgMHhhMGUwLCAweDAwMDgsIDB4YWM4MiwKLQkweGE3ZDIsIDB4MDA0OCwgMHgzNjRkLCAweDIwNjEsIDB4YTc5MiwgMHgyYzAwLCAweDcwMzIsIDB4ODFmZiwKLQkweDAwYzAsIDB4MzY1MywgMHg3MDM2LCAweDgxMDgsIDB4NzEzYSwgMHgyMjYyLCAweDYzMDYsIDB4NjQwYSwKLQkweDBlN2YsIDB4MGM3ZiwgMHgwMTdmLCAweDEyN2YsIDB4MGY3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwKLQkweGE3ODIsIDB4NzAzOCwgMHhhMDA1LCAweDAwNDAsIDB4MzY5NywgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDAwNjgsIDB4MzY5NiwgMHgwZjdlLCAweDIwNzksIDB4MDAwMCwgMHg3ODE4LCAweGQwODQsIDB4MDBjMCwKLQkweDM2OTUsIDB4MGM3ZSwgMHg3MDM0LCAweDIwNjAsIDB4MmMwNCwgMHg3ODIyLCAweDYwMDQsIDB4NzgyNiwKLQkweDYwMDgsIDB4NzgyYSwgMHg3ODFiLCAweDAwMDEsIDB4MjA5MSwgMHg0MDgwLCAweDcwMzgsIDB4ODAwMSwKLQkweDcwM2EsIDB4YTAwNSwgMHgwMGMwLCAweDM2OGIsIDB4NzAzMywgMHhhNzkyLCAweDcwMzcsIDB4YTc5MiwKLQkweDBjN2YsIDB4MDA3OCwgMHgzNjk1LCAweGFjODAsIDB4MDAwOCwgMHhhMGZhLCAweGE3ZDIsIDB4MDA0OCwKLQkweDM2OTMsIDB4MjAwMSwgMHhhNzkyLCAweDcwMzYsIDB4MGM3ZiwgMHgwZjdmLCAweDEyN2YsIDB4MGU3ZiwKLQkweDAwN2MsIDB4MDI3ZSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGM0LCAweDAwNDAsIDB4MzZhNCwKLQkweDIwMTEsIDB4ODAxNCwgMHgxMDc4LCAweDM2MWIsIDB4MDI3ZiwgMHgwMDdjLCAweDgxZmYsIDB4MDBjMCwKLQkweDJiZDcsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjAzMCwgMHhjMDhkLCAweGMwODUsIDB4YzBhYywKLQkweDYwMzIsIDB4MTA3OCwgMHg0MjI0LCAweDEyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MDBjMCwKLQkweDJiZDcsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwgMHgyYmQ3LCAweDIwMDEsIDB4YTc1MywKLQkweDIwMDQsIDB4ZDBhYywgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwgMHgzNWU0LCAweDAwNDAsIDB4MmJkYiwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgwMGMwLCAweDM2ZDMsIDB4NzgyOCwKLQkweGEwMDUsIDB4MDA0MCwgMHgyYmFkLCAweDBjN2UsIDB4MTA3OCwgMHgzNWJhLCAweDBjN2YsIDB4MDA0MCwKLQkweDJiZDcsIDB4NjgzNywgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwKLQkweDEwNzgsIDB4OGYyMiwgMHgwMDQwLCAweDJiZDcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWIsIDB4MzZlOSwKLQkweDAwN2MsIDB4NjgzMCwgMHhhMDg2LCAweDAxMDAsIDB4MDA0MCwgMHgyYmQ3LCAweDAwNzgsIDB4MmJhZCwKLQkweDIwMDEsIDB4YTcwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDJiZDcsIDB4N2YyNCwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MTA3OCwgMHgzNWJhLCAweDAwNDAsIDB4MmJkNywKLQkweDIwMDksIDB4MDAwMCwgMHgyMDMxLCAweDAwMDAsIDB4NzAyMywgMHgwMDAwLCAweDcwMmYsIDB4MDAwMCwKLQkweGFkODAsIDB4MDAwNSwgMHg3MDI2LCAweDIwYTAsIDB4MTA3OCwgMHg0NWM0LCAweDAwYzAsIDB4Mzc2ZCwKLQkweDYwMDQsIDB4YTBjNCwgMHgwMGZmLCAweGE4YzYsIDB4MDAwNiwgMHgwMDQwLCAweDM3MWQsIDB4YTBjNCwKLQkweGZmMDAsIDB4YThjNiwgMHgwNjAwLCAweDAwYzAsIDB4Mzc2ZCwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYWMsIDB4MDBjMCwgMHgzNzJhLCAweDEwNzgsIDB4NDg5YiwgMHgwMGMwLCAweDM3MmEsIDB4ZDc5YywKLQkweDAwNDAsIDB4Mzc2ZCwgMHhkNzk0LCAweDAwYzAsIDB4MzczMCwgMHhkNzg0LCAweDAwNDAsIDB4MzczYywKLQkweGFjODAsIDB4MDAwNiwgMHgyMDk4LCAweDM0MDAsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MTA3OCwKLQkweDM0MjYsIDB4ZDc5NCwgMHgwMDQwLCAweDM3NDUsIDB4YWM4MCwgMHgwMDBhLCAweDIwOTgsIDB4MzQwMCwKLQkweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDEwNzgsIDB4MzQyNiwgMHgyMWEyLCAweGQ3OTQsIDB4MDA0MCwKLQkweDM3NjUsIDB4YWM4MCwgMHgwMDAwLCAweDIwOTgsIDB4OTRhMCwgMHgyMGE5LCAweDAwMDIsIDB4NTNhMywKLQkweGFjODAsIDB4MDAwMywgMHgyMGE2LCAweDk0YTAsIDB4YWM4MCwgMHgwMDA0LCAweDIwOTgsIDB4MzQwMCwKLQkweDIwYTksIDB4MDAwMiwgMHg1M2EzLCAweDEwNzgsIDB4MzQxOCwgMHhhYzgwLCAweDAwMjYsIDB4MjA5OCwKLQkweDIwYTksIDB4MDAwMiwgMHg1M2EzLCAweDAwNzgsIDB4Mzc2NiwgMHg5NGEwLCAweGQ3OTQsIDB4MDA0MCwKLQkweDM3NmIsIDB4YTZiMCwgMHgwMDBiLCAweGE2YjAsIDB4MDAwNSwgMHg4MTA4LCAweGQ3OGMsIDB4MDA0MCwKLQkweDM3NzcsIDB4YTE4NiwgMHgwMTAwLCAweDAwNDAsIDB4Mzc4OCwgMHgwMDc4LCAweDM3N2IsIDB4YTE4NiwKLQkweDAwN2UsIDB4MDA0MCwgMHgzNzg4LCAweGQ3OTQsIDB4MDA0MCwgMHgzNzgyLCAweGE2ODYsIDB4MDAyMCwKLQkweDAwNzgsIDB4Mzc4NCwgMHhhNjg2LCAweDAwMjgsIDB4MDA0MCwgMHgzNzkxLCAweDAwNzgsIDB4MzcwYywKLQkweDg2ZmYsIDB4MDBjMCwgMHgzNzhmLCAweDcxMjAsIDB4ODEwYiwgMHgwMDc4LCAweDJiYWQsIDB4NzAyZiwKLQkweDAwMDEsIDB4NzExZSwgMHg3MDIwLCAweGE2MDAsIDB4NzAyMiwgMHg3NzJhLCAweDIwNjEsIDB4YTdkMiwKLQkweDYwMDcsIDB4MDAwMCwgMHg2NjEyLCAweDcwMjQsIDB4NjAwZSwgMHg2MjI2LCAweDYzMmEsIDB4NjQyZSwKLQkweDY1MzIsIDB4MmMxMCwgMHgxMDc4LCAweDEzZGIsIDB4NzAwNywgMHgwMDAyLCAweDcwMWIsIDB4MzdhOSwKLQkweDAwN2MsIDB4NzAyYywgMHhhMDA1LCAweDAwYzAsIDB4MzdiYiwgMHg3MTFjLCAweDcwMjQsIDB4MjBhMCwKLQkweDc3MjgsIDB4MjAzMSwgMHgwMDAwLCAweDIwNjEsIDB4YTdkMiwgMHg2MjI0LCAweDYzMjgsIDB4NjQyYywKLQkweDY1MzAsIDB4MDA3OCwgMHgzNzBjLCAweDcxMjAsIDB4ODEwYiwgMHgwMDc4LCAweDJiYWQsIDB4MjAyOSwKLQkweDAwN2UsIDB4NzkyNCwgMHg3YTI4LCAweDdiMmMsIDB4N2MzOCwgMHhhMTg0LCAweGZmMDAsIDB4ODAwNywKLQkweGEwZTIsIDB4MDAyMCwgMHgwMDQ4LCAweDJiZGIsIDB4YTUwMiwgMHgwMDQ4LCAweDJiZGIsIDB4YTE4NCwKLQkweDAwZmYsIDB4YTBlMiwgMHgwMDIwLCAweDAwNDgsIDB4MmJkYiwgMHhhNTAyLCAweDAwNDgsIDB4MmJkYiwKLQkweGEyODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwZTIsIDB4MDAyMCwgMHgwMDQ4LCAweDJiZGIsIDB4YTUwMiwKLQkweDAwNDgsIDB4MmJkYiwgMHhhMjg0LCAweDAwZmYsIDB4YTBlMiwgMHgwMDIwLCAweDAwNDgsIDB4MmJkYiwKLQkweGE1MDIsIDB4MDA0OCwgMHgyYmRiLCAweGEzODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwZTIsIDB4MDAyMCwKLQkweDAwNDgsIDB4MmJkYiwgMHhhNTAyLCAweDAwNDgsIDB4MmJkYiwgMHhhMzg0LCAweDAwZmYsIDB4YTBlMiwKLQkweDAwMjAsIDB4MDA0OCwgMHgyYmRiLCAweGE1MDIsIDB4MDA0OCwgMHgyYmRiLCAweGE0ODQsIDB4ZmYwMCwKLQkweDgwMDcsIDB4YTBlMiwgMHgwMDIwLCAweDAwNDgsIDB4MmJkYiwgMHhhNTAyLCAweDAwNDgsIDB4MmJkYiwKLQkweGE0ODQsIDB4MDBmZiwgMHhhMGUyLCAweDAwMjAsIDB4MDA0OCwgMHgyYmRiLCAweGE1MDIsIDB4MDA0OCwKLQkweDJiZGIsIDB4MjA2MSwgMHhhOWE1LCAweDYxMDIsIDB4NjIwNiwgMHg2MzBhLCAweDY0MGUsIDB4MDA3OCwKLQkweDJiYWQsIDB4MDA3ZSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGNjLCAweDAwN2YsIDB4MDA3YywKLQkweDAwN2UsIDB4MjAwMSwgMHhhNzcyLCAweDIwMDQsIDB4ZDBiYywgMHgwMDdmLCAweDAwN2MsIDB4NjE2NCwKLQkweDdhMjQsIDB4NjMwMCwgMHg4MmZmLCAweDAwYzAsIDB4MzgzMCwgMHg3OTI2LCAweDAwNzgsIDB4MmJhZCwKLQkweDgzZmYsIDB4MDBjMCwgMHgyYmRiLCAweDIwMDEsIDB4ZmZmMCwgMHhhMjAwLCAweDAwYzgsIDB4MmJkYiwKLQkweDIwMTksIDB4ZmZmZiwgMHg2MDY4LCAweGEzMDIsIDB4YTIwMCwgMHgwMDQ4LCAweDJiZGIsIDB4NzkyNiwKLQkweDYyNjYsIDB4MDA3OCwgMHgyYmFkLCAweDIwMDEsIDB4YTcwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywKLQkweDAwYzAsIDB4MmJkNywgMHg3YzI4LCAweDdkMjQsIDB4N2UzOCwgMHg3ZjJjLCAweDEwNzgsIDB4MzViYSwKLQkweDAwNDAsIDB4MmJkNywgMHgyMDA5LCAweDAwMDAsIDB4MjAxOSwgMHgwMDAwLCAweDcwMjMsIDB4MDAwMCwKLQkweDcwMmYsIDB4MDAwMCwgMHhhZDgwLCAweDAwMDMsIDB4NzAyNiwgMHgyMGEwLCAweGExZTAsIDB4YTgzNSwKLQkweDJjNjQsIDB4OGNmZiwgMHgwMDQwLCAweDM4N2QsIDB4NjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDA0MCwgMHgzODcyLCAweDYwMDQsIDB4YTA4NCwgMHhmZjAwLCAweGEwODYsIDB4MDYwMCwKLQkweDAwYzAsIDB4Mzg3ZCwgMHg2MDE0LCAweDIwYTIsIDB4OTRhMCwgMHg2MDEwLCAweDgwMDcsIDB4YTEwNSwKLQkweDgwMDcsIDB4MjBhMiwgMHg5NGEwLCAweGEzOTgsIDB4MDAwMiwgMHg4MTA4LCAweGExODIsIDB4MDBmZiwKLQkweDAwNDAsIDB4Mzg4OCwgMHhhMzg2LCAweDAwMmEsIDB4MDA0MCwgMHgzODkxLCAweDAwNzgsIDB4Mzg1ZSwKLQkweDgzZmYsIDB4MDBjMCwgMHgzODhmLCAweDcxMjAsIDB4ODEwYywgMHgwMDc4LCAweDJiYWQsIDB4NzAyZiwKLQkweDAwMDEsIDB4NzExZSwgMHg3MDIwLCAweGEzMDAsIDB4NzAyMiwgMHgyMDYxLCAweGE3ZDIsIDB4NjAwNywKLQkweDAwMDAsIDB4NjMxMiwgMHg3MDI0LCAweDYwMGUsIDB4NjQyNiwgMHg2NTJhLCAweDY2MmUsIDB4NjczMiwKLQkweDJjMTAsIDB4MTA3OCwgMHgxM2RiLCAweDcwMDcsIDB4MDAwMiwgMHg3MDFiLCAweDM4YTgsIDB4MDA3YywKLQkweDcwMmMsIDB4YTAwNSwgMHgwMGMwLCAweDM4YjksIDB4NzExYywgMHg3MDI0LCAweDIwYTAsIDB4MjAxOSwKLQkweDAwMDAsIDB4MjA2MSwgMHhhN2QyLCAweDY0MjQsIDB4NjUyOCwgMHg2NjJjLCAweDY3MzAsIDB4MDA3OCwKLQkweDM4NWUsIDB4NzEyMCwgMHg4MTBjLCAweDAwNzgsIDB4MmJhZCwgMHg4MWZmLCAweDAwYzAsIDB4MmJkNywKLQkweDYwY2MsIDB4ZDA5YywgMHgwMDQwLCAweDJiZDcsIDB4MTA3OCwgMHgzNWJhLCAweDAwNDAsIDB4MmJkNywKLQkweDc5MjQsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwgMHgxMDc4LCAweDM2MDQsIDB4NzAxYiwKLQkweDM4ZDIsIDB4MDA3YywgMHgwZDdlLCAweGFkZTgsIDB4MDAwZCwgMHg2ODI4LCAweGEwYmUsIDB4NzAwMCwKLQkweDAwNDAsIDB4MzhlNSwgMHhhMGJlLCAweDcxMDAsIDB4MDA0MCwgMHgzOGU1LCAweGEwYmUsIDB4NzIwMCwKLQkweDAwNDAsIDB4MzhlNSwgMHgwZDdmLCAweDAwNzgsIDB4MmJkYiwgMHg2ODIwLCAweDY5MjQsIDB4MTA3OCwKLQkweDI1NGQsIDB4MDBjMCwgMHgzOTEwLCAweDEwNzgsIDB4NDU1YywgMHgwMGMwLCAweDM5MTAsIDB4NzEyMiwKLQkweDY2MTIsIDB4NjUxNiwgMHg2ZTE4LCAweDBjN2UsIDB4MTA3OCwgMHgzNWJhLCAweDAwNDAsIDB4MzkxMCwKLQkweDEwNzgsIDB4MzViYSwgMHgwMDQwLCAweDM5MTAsIDB4MGM3ZiwgMHgwZDdmLCAweDY4MzcsIDB4MDAwMCwKLQkweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDY4MjMsIDB4MDAwMCwgMHg2ODA0LCAweDIwNjgsIDB4MTA3OCwKLQkweDhlOTIsIDB4MDA0MCwgMHgyYmQ3LCAweDcwMDcsIDB4MDAwMywgMHg3MDFiLCAweDM5MTMsIDB4MDA3YywKLQkweDBkN2YsIDB4MDA3OCwgMHgyYmQ3LCAweDcxMjAsIDB4MTA3OCwgMHgyOThlLCAweDY4MjAsIDB4YTA4NiwKLQkweDgwMDEsIDB4MDA0MCwgMHgyYmQ3LCAweDJkMDAsIDB4NzAxZSwgMHg2ODA0LCAweGEwODAsIDB4MDAwMiwKLQkweDAwN2UsIDB4MjBhOSwgMHgwMDJhLCAweDIwOTgsIDB4MjBhMCwgMHgxMDc4LCAweDQyODEsIDB4MDA3ZiwKLQkweGFkZTgsIDB4MDAwZCwgMHg2YTA4LCAweDZiMGMsIDB4NmMxMCwgMHg2ZDE0LCAweDIwNjEsIDB4YTdkMiwKLQkweDYwMDcsIDB4MDAwMCwgMHg2ZTAwLCAweDZmMjgsIDB4YTdjNiwgMHg3MDAwLCAweDAwYzAsIDB4MzkzYSwKLQkweDAwNzgsIDB4MzkzZSwgMHhhN2M2LCAweDcxMDAsIDB4MDBjMCwgMHgzOTQ2LCAweGE2YzIsIDB4MDAwNCwKLQkweDAwNDgsIDB4MmJkYiwgMHgyMDA5LCAweDAwMDQsIDB4MDA3OCwgMHgzNjA4LCAweGE3YzYsIDB4NzIwMCwKLQkweDAwYzAsIDB4MmJkYiwgMHhhNmMyLCAweDAwNTQsIDB4MDA0OCwgMHgyYmRiLCAweDYwMGUsIDB4NjAxMywKLQkweDAwMmEsIDB4NjIyNiwgMHg2MzJhLCAweDY0MmUsIDB4NjUzMiwgMHgyYzEwLCAweDEwNzgsIDB4MTNkYiwKLQkweDcwMDcsIDB4MDAwMiwgMHg3MDFiLCAweDM5NWQsIDB4MDA3YywgMHg3MDFjLCAweDIwNjgsIDB4NjgwNCwKLQkweGEwODAsIDB4MDAwMSwgMHgyMDA0LCAweGEwODAsIDB4MDAwMiwgMHgwMDdlLCAweDIwYTksIDB4MDAyYSwKLQkweDIwOTgsIDB4MjBhMCwgMHgxMDc4LCAweDQyODEsIDB4MDA3ZiwgMHgyMDA5LCAweDAwMmEsIDB4MjA2MSwKLQkweGE3ZDIsIDB4NjIyNCwgMHg2MzI4LCAweDY0MmMsIDB4NjUzMCwgMHgwMDc4LCAweDM2MDgsIDB4ODFmZiwKLQkweDAwYzAsIDB4MmJkNywgMHg3OTJjLCAweDIwMDEsIDB4YTk5ZCwgMHgyMTAyLCAweDEwNzgsIDB4MzVkMiwKLQkweDAwNDAsIDB4MmJkYiwgMHgxMDc4LCAweDQ2NzMsIDB4MDA0MCwgMHgyYmQ3LCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHg0N2RlLCAweDEyN2YsIDB4MDA3OCwgMHgyYmFkLCAweDc4MjQsIDB4ZDA4YywKLQkweDAwYzAsIDB4Mzk5NSwgMHhkMDg0LCAweDAwNDAsIDB4MzFkYSwgMHgxMDc4LCAweDM1ZTQsIDB4MDA0MCwKLQkweDJiZGIsIDB4MGM3ZSwgMHgxMDc4LCAweDM1YmEsIDB4MGM3ZiwgMHgwMGMwLCAweDM5YTMsIDB4MjAwOSwKLQkweDAwMDIsIDB4MDA3OCwgMHgyYmQ3LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwKLQkweDAwNDAsIDB4MzliMCwgMHhhMDhlLCAweDAwMDQsIDB4MDA0MCwgMHgzOWIwLCAweGEwOGUsIDB4MDAwNSwKLQkweDAwYzAsIDB4MzlkZCwgMHg3ODI0LCAweGQwOGMsIDB4MDA0MCwgMHgzOWJiLCAweDYwMDAsIDB4YzA4YywKLQkweDYwMDIsIDB4MDA3OCwgMHgzOWM1LCAweDIwMDEsIDB4YTc1MywgMHgyMDA0LCAweGQwYjQsIDB4MDA0MCwKLQkweDMyMGYsIDB4NjAwMCwgMHhkMDhjLCAweDAwYzAsIDB4MzIwZiwgMHg2ODM3LCAweDAwMDAsIDB4NjgzOCwKLQkweGMwZmQsIDB4NjgzYSwgMHgxMDc4LCAweDhlYWUsIDB4MDBjMCwgMHgzOWQyLCAweDIwMDksIDB4MDAwMywKLQkweDAwNzgsIDB4MmJkNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHgzOWQ3LCAweDAwN2MsIDB4MTA3OCwKLQkweDM1ZTQsIDB4MDA0MCwgMHgyYmRiLCAweDAwNzgsIDB4MzIwZiwgMHgyMDA5LCAweGE3MmYsIDB4MjEwYywKLQkweDgxZmYsIDB4MDA0MCwgMHgzOWU3LCAweDIwMDksIDB4MDAwMSwgMHgwMDc4LCAweDJiZDcsIDB4MjAwMSwKLQkweGE3MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MDA0MCwgMHgzOWYyLCAweDIwMDksIDB4MDAwNywKLQkweDAwNzgsIDB4MmJkNywgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGFjLCAweDAwNDAsIDB4MzlmYywKLQkweDIwMDksIDB4MDAwOCwgMHgwMDc4LCAweDJiZDcsIDB4NjA5YywgMHhkMGE0LCAweDAwYzAsIDB4M2EwMywKLQkweGQwYWMsIDB4MDBjMCwgMHgzMjBmLCAweDY4MzcsIDB4MDAwMCwgMHg2ODMzLCAweDAwMDAsIDB4NjgzOCwKLQkweGMwZmQsIDB4NjgzYSwgMHgxMDc4LCAweDhmMjIsIDB4MDBjMCwgMHgzYTEyLCAweDIwMDksIDB4MDAwMywKLQkweDAwNzgsIDB4MmJkNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHgzYTE3LCAweDAwN2MsIDB4NjgzMCwKLQkweGEwODYsIDB4MDEwMCwgMHgwMGMwLCAweDNhMjAsIDB4MjAwOSwgMHgwMDA0LCAweDAwNzgsIDB4MmJkNywKLQkweDEwNzgsIDB4MzVlNCwgMHgwMDQwLCAweDJiZGIsIDB4MDA3OCwgMHgzOWIyLCAweDgxZmYsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDBjMCwgMHgyYmQ3LCAweDYwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDIwMDksIDB4MDAwNywKLQkweDAwYzAsIDB4MmJkNywgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGFjLCAweDIwMDksIDB4MDAwOCwKLQkweDAwYzAsIDB4MmJkNywgMHgxMDc4LCAweDM1ZTQsIDB4MDA0MCwgMHgyYmRiLCAweDYwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDIwMDksIDB4MDAwOSwgMHgwMGMwLCAweDJiZDcsIDB4MGM3ZSwKLQkweDEwNzgsIDB4MzViYSwgMHgwYzdmLCAweDIwMDksIDB4MDAwMiwgMHgwMDQwLCAweDJiZDcsIDB4NjgzNywKLQkweDAwMDAsIDB4NjgzMywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDc5MjgsIDB4YTE5NCwKLQkweGZmMDAsIDB4YTE4YywgMHgwMGZmLCAweGEwMDYsIDB4ODJmZiwgMHgwMGMwLCAweDNhNjUsIDB4YzBlZCwKLQkweDY5NTIsIDB4NzkyYywgMHg2OTU2LCAweDAwNzgsIDB4M2E2ZSwgMHhhMjhlLCAweDAxMDAsIDB4MDBjMCwKLQkweDJiZGIsIDB4YzBlNSwgMHg2ODUzLCAweDAwMDAsIDB4Njg1NywgMHgwMDAwLCAweDY4M2UsIDB4MTA3OCwKLQkweDkwY2QsIDB4MjAwOSwgMHgwMDAzLCAweDAwNDAsIDB4MmJkNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwKLQkweDNhN2EsIDB4MDA3YywgMHg2ODMwLCAweGEwODYsIDB4MDEwMCwgMHgyMDA5LCAweDAwMDQsIDB4MDA0MCwKLQkweDJiZDcsIDB4MDA3OCwgMHgyYmFkLCAweDgxZmYsIDB4MjAwOSwgMHgwMDAxLCAweDAwYzAsIDB4MmJkNywKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDIwMDksIDB4MDAwNywgMHgwMGMwLCAweDJiZDcsIDB4MTA3OCwKLQkweDM1ZTQsIDB4MDA0MCwgMHgyYmRiLCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwKLQkweDIwMDksIDB4MDAwOSwgMHgwMGMwLCAweDJiZDcsIDB4MGM3ZSwgMHgxMDc4LCAweDM1YmEsIDB4MGM3ZiwKLQkweDIwMDksIDB4MDAwMiwgMHgwMDQwLCAweDJiZDcsIDB4YWQ4MCwgMHgwMDBmLCAweDIwMDksIDB4MDAwOCwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MTA3OCwgMHgzNjA0LCAweDcwMWIsIDB4M2FiMSwKLQkweDAwN2MsIDB4MGQ3ZSwgMHhhZGU4LCAweDAwMGYsIDB4NjgwMCwgMHhhMDg2LCAweDA1MDAsIDB4MDBjMCwKLQkweDNhYzQsIDB4NjgwNCwgMHhhMDA1LCAweDAwYzAsIDB4M2FjNCwgMHg2ODA4LCAweGEwODQsIDB4ZmYwMCwKLQkweDAwYzAsIDB4M2FjNCwgMHgwMDc4LCAweDNhYzcsIDB4MGQ3ZiwgMHgwMGMwLCAweDJiZGIsIDB4MGQ3ZiwKLQkweDY4MzcsIDB4MDAwMCwgMHg2ODMzLCAweDAwMDAsIDB4NjgzOCwgMHhjMGZkLCAweDY4M2EsIDB4MGM3ZSwKLQkweDEwNzgsIDB4MzVlNCwgMHgwMGMwLCAweDNhZDcsIDB4MGM3ZiwgMHgwMDc4LCAweDJiZGIsIDB4MTA3OCwKLQkweDkxMjksIDB4MjAwOSwgMHgwMDAzLCAweDBjN2YsIDB4MDA0MCwgMHgyYmQ3LCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWIsIDB4M2FlMywgMHgwMDdjLCAweDY4MzAsIDB4YTA4NiwgMHgwMTAwLCAweDIwMDksIDB4MDAwNCwKLQkweDAwNDAsIDB4MmJkNywgMHgwMDc4LCAweDJiYWQsIDB4MTI3ZSwgMHgwYzdlLCAweDBlN2UsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA3MSwgMHhhNzAwLCAweDYwNDQsIDB4ZDBhNCwgMHgwMGMwLCAweDNiMTUsIDB4ZDA4NCwKLQkweDAwNDAsIDB4M2FmZSwgMHgxMDc4LCAweDNjNzUsIDB4MDA3OCwgMHgzYjExLCAweGQwOGMsIDB4MDA0MCwKLQkweDNiMDUsIDB4MTA3OCwgMHgzYjhjLCAweDAwNzgsIDB4M2IxMSwgMHhkMDk0LCAweDAwNDAsIDB4M2IwYywKLQkweDEwNzgsIDB4M2I2MCwgMHgwMDc4LCAweDNiMTEsIDB4ZDA5YywgMHgwMDQwLCAweDNiMTEsIDB4MTA3OCwKLQkweDNiMWYsIDB4MGU3ZiwgMHgwYzdmLCAweDEyN2YsIDB4MDA3YywgMHgwMTdlLCAweDYxMjgsIDB4ZDE5YywKLQkweDAwYzAsIDB4M2IxYywgMHhjMTlkLCAweDYxMmEsIDB4MDE3ZiwgMHgwMDc4LCAweDNiMTEsIDB4NjI0YywKLQkweGEyODYsIDB4ZjBmMCwgMHgwMGMwLCAweDNiMzAsIDB4NjA0OCwgMHhhMDg2LCAweGYwZjAsIDB4MDA0MCwKLQkweDNiMzAsIDB4NjI0YSwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDAwNzgsIDB4M2I1ZiwKLQkweGEyOTQsIDB4ZmYwMCwgMHhhMjk2LCAweGY3MDAsIDB4MDA0MCwgMHgzYjQ1LCAweDcxMzQsIDB4ZDFhNCwKLQkweDAwYzAsIDB4M2I0NSwgMHg2MjQwLCAweGEyOTQsIDB4MDAxMCwgMHgwMDQwLCAweDNiNDUsIDB4MjAwOSwKLQkweDAwZjcsIDB4MTA3OCwgMHg0MmExLCAweDAwNzgsIDB4M2I1ZiwgMHg2MDQzLCAweDAwNDAsIDB4NjA0MywKLQkweDAwMDAsIDB4NzA3NywgMHgwMDAwLCAweDcwOGYsIDB4MDAwMSwgMHg3MGIzLCAweDAwMDAsIDB4NzBjZiwKLQkweDAwMDAsIDB4MjAwOSwgMHhhZGMwLCAweDIwMGIsIDB4MDAwMCwgMHg3MDg3LCAweDAwMDAsIDB4NzA3YiwKLQkweDAwMGYsIDB4MjAwOSwgMHgwMDBmLCAweDIwMTEsIDB4NDFkNSwgMHgxMDc4LCAweDVhZGQsIDB4MDA3YywKLQkweDE1N2UsIDB4NzA3OCwgMHhhMDA1LCAweDAwYzAsIDB4M2I4YSwgMHgyMDExLCAweDQxZDUsIDB4MTA3OCwKLQkweDVhNDUsIDB4NjA0MCwgMHhhMDk0LCAweDAwMTAsIDB4YTI4NSwgMHgwMDIwLCAweDYwNDIsIDB4MjBhOSwKLQkweDAwYzgsIDB4NjA0NCwgMHhkMDhjLCAweDAwYzAsIDB4M2I4MywgMHgwMGYwLCAweDNiNzEsIDB4NjI0MiwKLQkweDcwOGIsIDB4MDAwMCwgMHg2MDQwLCAweGEwOTQsIDB4MDAxMCwgMHhhMjg1LCAweDAwODAsIDB4NjA0MiwKLQkweDYyNDIsIDB4MDA3OCwgMHgzYjhhLCAweDYyNDIsIDB4NzA4YiwgMHgwMDAwLCAweDcwN2YsIDB4MDAwMCwKLQkweDAwNzgsIDB4M2I4YSwgMHgxNTdmLCAweDAwN2MsIDB4NzA3YywgMHhhMDhhLCAweDAwMDMsIDB4MDBjOCwKLQkweDNiOTUsIDB4MTA3OSwgMHgzYjk4LCAweDAwNzgsIDB4M2I5NywgMHgxMDc4LCAweDEzMzIsIDB4MDA3YywKLQkweDNiOWIsIDB4M2JlYSwgMHgzYzc0LCAweDBmN2UsIDB4NzA3ZiwgMHgwMDAxLCAweDIwZTEsIDB4YTAwMCwKLQkweDIwZTEsIDB4ODcwMCwgMHgxMDc4LCAweDIxZjcsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwKLQkweDIwNzksIDB4YWMwMCwgMHgyMDdiLCAweDIyMDAsIDB4NzgwNywgMHgwMGVmLCAweDc4MGIsIDB4MDAwMCwKLQkweDc4MGYsIDB4MDBlZiwgMHg3ODEzLCAweDAxMzgsIDB4NzgxNywgMHgwMDAwLCAweDc4MWIsIDB4MDAwMCwKLQkweDc4MWYsIDB4MDAwMCwgMHg3ODIzLCAweGZmZmYsIDB4NzgyNywgMHhmZmZmLCAweDc4MmIsIDB4MDAwMCwKLQkweDc4MmYsIDB4MDAwMCwgMHgyMDc5LCAweGFjMGMsIDB4MjA3YiwgMHgxMTAxLCAweDc4MDcsIDB4MDAwMCwKLQkweDIwOTksIDB4YTcwNSwgMHgyMGExLCAweGFjMGUsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MjA3OSwKLQkweGFjMTIsIDB4MjA3YiwgMHgwMDAwLCAweDc4MDcsIDB4MDAwMCwgMHgyMDk5LCAweGFjMDAsIDB4MjBhMSwKLQkweDAyMGIsIDB4MjBhOSwgMHgwMDE0LCAweDUzYTYsIDB4NjBjMywgMHgwMDBjLCAweDYwMGYsIDB4MDAwMCwKLQkweDEwNzgsIDB4NDIwYiwgMHgwZjdmLCAweDcwODMsIDB4MDAwMCwgMHg2MDQzLCAweDAwMDgsIDB4NjA0MywKLQkweDAwMDAsIDB4MDA3YywgMHgwZDdlLCAweDcwODAsIDB4NzA4MywgMHgwMDAwLCAweGEwMjUsIDB4MDA0MCwKLQkweDNjNWUsIDB4NjAyMCwgMHhkMGI0LCAweDAwYzAsIDB4M2M1YywgMHg3MThjLCAweDgxZmYsIDB4MDA0MCwKLQkweDNjNGIsIDB4YTQ4NiwgMHgwMDBjLCAweDAwYzAsIDB4M2M1NiwgMHhhNDgwLCAweDAwMTgsIDB4ODAwNCwKLQkweDIwYTgsIDB4MjAxMSwgMHhhYzgwLCAweDIwMTksIDB4YWMwMCwgMHgyMjBjLCAweDIzMDQsIDB4YTEwNiwKLQkweDAwYzAsIDB4M2MyMiwgMHg4MjEwLCAweDgzMTgsIDB4MDBmMCwgMHgzYzA1LCAweDYwNDMsIDB4MDAwNCwKLQkweDYwOGIsIDB4YmM5NCwgMHg2MDhmLCAweGYwZjAsIDB4NjA0MywgMHgwMDA2LCAweDcwN2YsIDB4MDAwMiwKLQkweDcwOGIsIDB4MDAwMiwgMHgyMDA5LCAweDA3ZDAsIDB4MjAxMSwgMHg0MWRjLCAweDEwNzgsIDB4NWFkZCwKLQkweDAwNzgsIDB4M2M1YywgMHgyMDY5LCAweGFjODAsIDB4NjkzMCwgMHhhMThlLCAweDExMDEsIDB4MDBjMCwKLQkweDNjNTYsIDB4NjgzNCwgMHhhMDA1LCAweDAwYzAsIDB4M2M1NiwgMHg2OTAwLCAweGExOGMsIDB4MDBmZiwKLQkweDAwYzAsIDB4M2MzNiwgMHg2ODA0LCAweGEwMDUsIDB4MDA0MCwgMHgzYzRiLCAweDIwMTEsIDB4YWM4ZSwKLQkweDIwMTksIDB4YTcwNSwgMHgyMGE5LCAweDAwMDQsIDB4MjIwYywgMHgyMzA0LCAweGExMDIsIDB4MDA0OCwKLQkweDNjNDksIDB4MDBjMCwgMHgzYzU2LCAweDgyMTAsIDB4ODMxOCwgMHgwMGYwLCAweDNjM2MsIDB4MDA3OCwKLQkweDNjNTYsIDB4NzA4ZiwgMHgwMDAwLCAweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MjA5OSwKLQkweGFjODAsIDB4MjBhMSwgMHgwMjBiLCAweDIwYTksIDB4MDAxNCwgMHg1M2E2LCAweDYwNDMsIDB4MDAwOCwKLQkweDYwNDMsIDB4MDAwMCwgMHgwMDc4LCAweDNjNWUsIDB4MGQ3ZiwgMHgwMDdjLCAweDYwMjAsIDB4ZDBiNCwKLQkweDAwYzAsIDB4M2M1YywgMHg2MGMzLCAweDAwMGMsIDB4MjAxMSwgMHhhOWJiLCAweDIwMTMsIDB4MDAwMCwKLQkweDcwODMsIDB4MDAwMCwgMHgyMGUxLCAweDkwODAsIDB4NjBhMywgMHgwMDU2LCAweDYwYTcsIDB4OTU3NSwKLQkweDEwNzgsIDB4NmUwNiwgMHgwMDc4LCAweDNjNWMsIDB4MDA3YywgMHg3MDg4LCAweGEwOGEsIDB4MDAxZCwKLQkweDAwYzgsIDB4M2M3ZSwgMHgxMDc5LCAweDNjODEsIDB4MDA3OCwgMHgzYzgwLCAweDEwNzgsIDB4MTMzMiwKLQkweDAwN2MsIDB4M2NhYiwgMHgzY2JhLCAweDNjZTksIDB4M2QwMiwgMHgzZDJlLCAweDNkNWEsIDB4M2Q4NiwKLQkweDNkYmMsIDB4M2RlOCwgMHgzZTEwLCAweDNlNTMsIDB4M2U3ZCwgMHgzZTlmLCAweDNlYjUsIDB4M2VkYiwKLQkweDNlZWUsIDB4M2VmNywgMHgzZjJiLCAweDNmNTcsIDB4M2Y4MywgMHgzZmFmLCAweDNmZTUsIDB4NDAzMCwKLQkweDQwNWYsIDB4NDA4MSwgMHg0MGMzLCAweDQwZTksIDB4NDEwMiwgMHg0MTAzLCAweDBjN2UsIDB4MjA2MSwKLQkweGE3MDAsIDB4NjAwMywgMHgwMDA3LCAweDIwNjEsIDB4MDEwMCwgMHg2MDA0LCAweGEwODQsIDB4ZmZmOSwKLQkweDYwMDYsIDB4MGM3ZiwgMHgwMDdjLCAweDYwOGIsIDB4YmM5NCwgMHg2MDhmLCAweGYwZjAsIDB4NjA0MywKLQkweDAwMDIsIDB4NzA4YiwgMHgwMDAxLCAweDIwMDksIDB4MDdkMCwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwKLQkweDVhZGQsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTA4NiwgMHgwMDE0LCAweDAwYzAsIDB4M2NlNywKLQkweDYwNDMsIDB4MDAwMCwgMHg2MDIwLCAweGQwYjQsIDB4MDBjMCwgMHgzY2U3LCAweDIwNzksIDB4YWM4MCwKLQkweDdhMzAsIDB4YTI5NiwgMHgxMTAyLCAweDAwYzAsIDB4M2NlNSwgMHg3ODM0LCAweGEwMDUsIDB4MDBjMCwKLQkweDNjZTUsIDB4N2EzOCwgMHhkMmZjLCAweDAwNDAsIDB4M2NkYiwgMHg3MGIwLCAweGEwMDUsIDB4MDBjMCwKLQkweDNjZGIsIDB4NzBiMywgMHgwMDAxLCAweDIwMTEsIDB4NDFkYywgMHgxMDc4LCAweDVhNDUsIDB4NzA4YiwKLQkweDAwMTAsIDB4MTA3OCwgMHgzZWY3LCAweDAwNzgsIDB4M2NlNywgMHgxMDc4LCAweDQyMjQsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NzA4YiwgMHgwMDAzLCAweDYwNDMsIDB4MDAwNCwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwKLQkweDVhNDUsIDB4MTA3OCwgMHg0Mjg5LCAweDIwYTMsIDB4MTEwMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhOSwKLQkweDAwMGEsIDB4MjBhMywgMHgwMDAwLCAweDAwZjAsIDB4M2NmOSwgMHg2MGMzLCAweDAwMTQsIDB4MTA3OCwKLQkweDQyMGIsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTAwNSwgMHgwMDQwLCAweDNkMmMsIDB4MjAxMSwKLQkweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweGEwODYsIDB4MDAxNCwgMHgwMGMwLCAweDNkMmEsIDB4MjA3OSwKLQkweGFjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDIsIDB4MDBjMCwgMHgzZDJhLCAweDc4MzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2QyYSwgMHg3YTM4LCAweGQyZmMsIDB4MDA0MCwgMHgzZDI0LCAweDcwYjAsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2QyNCwgMHg3MGIzLCAweDAwMDEsIDB4NzA4YiwgMHgwMDA0LCAweDEwNzgsIDB4M2QyZSwKLQkweDAwNzgsIDB4M2QyYywgMHgxMDc4LCAweDQyMjQsIDB4MGY3ZiwgMHgwMDdjLCAweDcwOGIsIDB4MDAwNSwKLQkweDEwNzgsIDB4NDI4OSwgMHgyMGEzLCAweDExMDMsIDB4MjBhMywgMHgwMDAwLCAweDM0MzAsIDB4MjAxMSwKLQkweGFjOGUsIDB4MTA3OCwgMHg0MmQ0LCAweDAwYzAsIDB4M2Q0YywgMHg3MDc0LCAweGEwMDUsIDB4MDBjMCwKLQkweDNkNGMsIDB4NzE1MCwgMHhhMTg2LCAweGZmZmYsIDB4MDA0MCwgMHgzZDRjLCAweDEwNzgsIDB4NDE5ZCwKLQkweDAwNDAsIDB4M2Q0YywgMHgxMDc4LCAweDQyYjgsIDB4MjBhOSwgMHgwMDA4LCAweDIyOTgsIDB4MjZhMCwKLQkweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTQsIDB4MTA3OCwKLQkweDQyMGIsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTAwNSwgMHgwMDQwLCAweDNkODQsIDB4MjAxMSwKLQkweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweGEwODYsIDB4MDAxNCwgMHgwMGMwLCAweDNkODIsIDB4MjA3OSwKLQkweGFjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDMsIDB4MDBjMCwgMHgzZDgyLCAweDc4MzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2Q4MiwgMHg3YTM4LCAweGQyZmMsIDB4MDA0MCwgMHgzZDdjLCAweDcwYjAsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2Q3YywgMHg3MGIzLCAweDAwMDEsIDB4NzA4YiwgMHgwMDA2LCAweDEwNzgsIDB4M2Q4NiwKLQkweDAwNzgsIDB4M2Q4NCwgMHgxMDc4LCAweDQyMjQsIDB4MGY3ZiwgMHgwMDdjLCAweDcwOGIsIDB4MDAwNywKLQkweDEwNzgsIDB4NDI4OSwgMHgyMGEzLCAweDExMDQsIDB4MjBhMywgMHgwMDAwLCAweDM0MzAsIDB4MjAxMSwKLQkweGFjOGUsIDB4MTA3OCwgMHg0MmQ0LCAweDAwYzAsIDB4M2RhZSwgMHg3MDc0LCAweGEwMDUsIDB4MDBjMCwKLQkweDNkYWUsIDB4NzE1NCwgMHhhMTg2LCAweGZmZmYsIDB4MDA0MCwgMHgzZGFlLCAweGExODAsIDB4MjljMCwKLQkweDIwMGMsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4MTA3OCwgMHg0MTlkLCAweDAwNDAsIDB4M2RhZSwKLQkweDEwNzgsIDB4MzgyMCwgMHgwMDQwLCAweDNkYWUsIDB4MTA3OCwgMHgyNTZhLCAweDIwYTksIDB4MDAwOCwKLQkweDIyOTgsIDB4MjZhMCwgMHg1M2E2LCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywKLQkweDAwMTQsIDB4MTA3OCwgMHg0MjBiLCAweDAwN2MsIDB4MGY3ZSwgMHg3MDgwLCAweGEwMDUsIDB4MDA0MCwKLQkweDNkZTYsIDB4MjAxMSwgMHg0MWRjLCAweDEwNzgsIDB4NWE0NSwgMHhhMDg2LCAweDAwMTQsIDB4MDBjMCwKLQkweDNkZTQsIDB4MjA3OSwgMHhhYzgwLCAweDdhMzAsIDB4YTI5NiwgMHgxMTA0LCAweDAwYzAsIDB4M2RlNCwKLQkweDc4MzQsIDB4YTAwNSwgMHgwMGMwLCAweDNkZTQsIDB4N2EzOCwgMHhkMmZjLCAweDAwNDAsIDB4M2RkZSwKLQkweDcwYjAsIDB4YTAwNSwgMHgwMGMwLCAweDNkZGUsIDB4NzBiMywgMHgwMDAxLCAweDcwOGIsIDB4MDAwOCwKLQkweDEwNzgsIDB4M2RlOCwgMHgwMDc4LCAweDNkZTYsIDB4MTA3OCwgMHg0MjI0LCAweDBmN2YsIDB4MDA3YywKLQkweDcwOGIsIDB4MDAwOSwgMHgxMDc4LCAweDQyODksIDB4MjBhMywgMHgxMTA1LCAweDIwYTMsIDB4MDEwMCwKLQkweDM0MzAsIDB4MTA3OCwgMHg0MmQ0LCAweDAwYzAsIDB4M2UwMSwgMHg3MDc0LCAweGEwMDUsIDB4MDBjMCwKLQkweDNlMDEsIDB4MTA3OCwgMHg0MTA0LCAweDAwYzAsIDB4M2UwYiwgMHhhMDg1LCAweDAwMDEsIDB4MTA3OCwKLQkweDI1NmEsIDB4MjBhOSwgMHgwMDA4LCAweDIwOTksIDB4YWM4ZSwgMHgyNmEwLCAweDUzYTYsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAxNCwgMHgxMDc4LCAweDQyMGIsIDB4MDA3YywKLQkweDBmN2UsIDB4NzA4MCwgMHhhMDA1LCAweDAwNDAsIDB4M2U1MSwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwKLQkweDVhNDUsIDB4YTA4NiwgMHgwMDE0LCAweDAwYzAsIDB4M2U0ZiwgMHgyMDc5LCAweGFjODAsIDB4N2EzMCwKLQkweGEyOTYsIDB4MTEwNSwgMHgwMGMwLCAweDNlNGYsIDB4NzgzNCwgMHgyMDExLCAweDAxMDAsIDB4YTIxZSwKLQkweDAwYzAsIDB4M2UzYSwgMHg3YTM4LCAweGQyZmMsIDB4MDA0MCwgMHgzZTM0LCAweDcwYjAsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2UzNCwgMHg3MGIzLCAweDAwMDEsIDB4NzA4YiwgMHgwMDBhLCAweDEwNzgsIDB4M2U1MywKLQkweDAwNzgsIDB4M2U1MSwgMHhhMDA1LCAweDAwYzAsIDB4M2U0ZiwgMHg3YTM4LCAweGQyZmMsIDB4MDA0MCwKLQkweDNlNDcsIDB4NzBiMCwgMHhhMDA1LCAweDAwYzAsIDB4M2U0NywgMHg3MGIzLCAweDAwMDEsIDB4NzA4NywKLQkweDAwMDAsIDB4NzA4YiwgMHgwMDBlLCAweDEwNzgsIDB4M2VkYiwgMHgwMDc4LCAweDNlNTEsIDB4MTA3OCwKLQkweDQyMjQsIDB4MGY3ZiwgMHgwMDdjLCAweDcwOGIsIDB4MDAwYiwgMHgyMDExLCAweGFjMGUsIDB4MjJhMCwKLQkweDIwYTksIDB4MDA0MCwgMHgyMDE5LCAweGZmZmYsIDB4NDNhNCwgMHgyMGE5LCAweDAwMDIsIDB4MjAwOSwKLQkweDAwMDAsIDB4NDFhNCwgMHgxMDc4LCAweDQyODksIDB4MjBhMywgMHgxMTA2LCAweDIwYTMsIDB4MDAwMCwKLQkweDEwNzgsIDB4NDJkNCwgMHgwMDQwLCAweDNlNzAsIDB4MjAxMywgMHgwMDAwLCAweDAwNzgsIDB4M2U3NCwKLQkweDYwMzAsIDB4YTA4NSwgMHgwMTAwLCAweDIwMTIsIDB4MjI5OCwgMHgyMGE5LCAweDAwNDIsIDB4NTNhNiwKLQkweDYwYzMsIDB4MDA4NCwgMHgxMDc4LCAweDQyMGIsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTAwNSwKLQkweDAwNDAsIDB4M2U5ZCwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweGEwODYsIDB4MDA4NCwKLQkweDAwYzAsIDB4M2U5YiwgMHgyMDc5LCAweGFjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDYsIDB4MDBjMCwKLQkweDNlOWIsIDB4NzgzNCwgMHhhMDA1LCAweDAwYzAsIDB4M2U5YiwgMHg3MDhiLCAweDAwMGMsIDB4MTA3OCwKLQkweDNlOWYsIDB4MDA3OCwgMHgzZTlkLCAweDEwNzgsIDB4NDIyNCwgMHgwZjdmLCAweDAwN2MsIDB4NzA4YiwKLQkweDAwMGQsIDB4MTA3OCwgMHg0Mjg5LCAweDIwYTMsIDB4MTEwNywgMHgyMGEzLCAweDAwMDAsIDB4MjA5OSwKLQkweGFjOGUsIDB4MjBhOSwgMHgwMDQwLCAweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDA4NCwgMHgxMDc4LCAweDQyMGIsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTAwNSwKLQkweDAwNDAsIDB4M2VkOSwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweGEwODYsIDB4MDA4NCwKLQkweDAwYzAsIDB4M2VkNywgMHgyMDc5LCAweGFjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDcsIDB4MDBjMCwKLQkweDNlZDcsIDB4NzgzNCwgMHhhMDA1LCAweDAwYzAsIDB4M2VkNywgMHg3MDg3LCAweDAwMDEsIDB4MTA3OCwKLQkweDQyN2IsIDB4NzA4YiwgMHgwMDBlLCAweDEwNzgsIDB4M2VkYiwgMHgwMDc4LCAweDNlZDksIDB4MTA3OCwKLQkweDQyMjQsIDB4MGY3ZiwgMHgwMDdjLCAweDcwOGIsIDB4MDAwZiwgMHg3MDgzLCAweDAwMDAsIDB4NjA4YiwKLQkweGJjODUsIDB4NjA4ZiwgMHhiNWI1LCAweDYwNDMsIDB4MDAwNSwgMHg2MDQzLCAweDAwMDQsIDB4MjAwOSwKLQkweDA3ZDAsIDB4MjAxMSwgMHg0MWRjLCAweDEwNzgsIDB4NWEzOCwgMHgwMDdjLCAweDcwODAsIDB4YTAwNSwKLQkweDAwNDAsIDB4M2VmNiwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweDAwN2MsIDB4NzA4YiwKLQkweDAwMTEsIDB4MTA3OCwgMHg0MmQ0LCAweDAwYzAsIDB4M2YxNCwgMHg3MTZjLCAweDgxZmYsIDB4MDA0MCwKLQkweDNmMTQsIDB4MjAwOSwgMHgwMDAwLCAweDcwNzAsIDB4YTA4NCwgMHgwMGZmLCAweDEwNzgsIDB4MjU0ZCwKLQkweGExODYsIDB4MDA3ZSwgMHgwMDQwLCAweDNmMTQsIDB4YTE4NiwgMHgwMDgwLCAweDAwNDAsIDB4M2YxNCwKLQkweDIwMTEsIDB4YWM4ZSwgMHgxMDc4LCAweDQxOWQsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwKLQkweDIwOTksIDB4YWM4MCwgMHgyMGExLCAweDAyMGIsIDB4NzQ4MCwgMHhhNDgwLCAweDAwMTgsIDB4YTA4MCwKLQkweDAwMDcsIDB4YTA4NCwgMHgwM2Y4LCAweDgwMDQsIDB4MjBhOCwgMHg1M2E2LCAweDYwYzMsIDB4MDAxNCwKLQkweDEwNzgsIDB4NDIwYiwgMHgwMDdjLCAweDBmN2UsIDB4NzA4MCwgMHhhMDA1LCAweDAwNDAsIDB4M2Y1NSwKLQkweDIwMTEsIDB4NDFkYywgMHgxMDc4LCAweDVhNDUsIDB4YTA4NiwgMHgwMDE0LCAweDAwYzAsIDB4M2Y1MywKLQkweDIwNzksIDB4YWM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwMywgMHgwMGMwLCAweDNmNTMsIDB4NzgzNCwKLQkweGEwMDUsIDB4MDBjMCwgMHgzZjUzLCAweDdhMzgsIDB4ZDJmYywgMHgwMDQwLCAweDNmNGQsIDB4NzBiMCwKLQkweGEwMDUsIDB4MDBjMCwgMHgzZjRkLCAweDcwYjMsIDB4MDAwMSwgMHg3MDhiLCAweDAwMTIsIDB4MTA3OCwKLQkweDNmNTcsIDB4MDA3OCwgMHgzZjU1LCAweDEwNzgsIDB4NDIyNCwgMHgwZjdmLCAweDAwN2MsIDB4NzA4YiwKLQkweDAwMTMsIDB4MTA3OCwgMHg0Mjk1LCAweDIwYTMsIDB4MTEwMywgMHgyMGEzLCAweDAwMDAsIDB4MzQzMCwKLQkweDIwMTEsIDB4YWM4ZSwgMHgxMDc4LCAweDQyZDQsIDB4MDBjMCwgMHgzZjc1LCAweDcwNzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2Y3NSwgMHg3MTUwLCAweGExODYsIDB4ZmZmZiwgMHgwMDQwLCAweDNmNzUsIDB4MTA3OCwKLQkweDQxOWQsIDB4MDA0MCwgMHgzZjc1LCAweDEwNzgsIDB4NDJiOCwgMHgyMGE5LCAweDAwMDgsIDB4MjI5OCwKLQkweDI2YTAsIDB4NTNhNiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAxNCwKLQkweDEwNzgsIDB4NDIwYiwgMHgwMDdjLCAweDBmN2UsIDB4NzA4MCwgMHhhMDA1LCAweDAwNDAsIDB4M2ZhZCwKLQkweDIwMTEsIDB4NDFkYywgMHgxMDc4LCAweDVhNDUsIDB4YTA4NiwgMHgwMDE0LCAweDAwYzAsIDB4M2ZhYiwKLQkweDIwNzksIDB4YWM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwNCwgMHgwMGMwLCAweDNmYWIsIDB4NzgzNCwKLQkweGEwMDUsIDB4MDBjMCwgMHgzZmFiLCAweDdhMzgsIDB4ZDJmYywgMHgwMDQwLCAweDNmYTUsIDB4NzBiMCwKLQkweGEwMDUsIDB4MDBjMCwgMHgzZmE1LCAweDcwYjMsIDB4MDAwMSwgMHg3MDhiLCAweDAwMTQsIDB4MTA3OCwKLQkweDNmYWYsIDB4MDA3OCwgMHgzZmFkLCAweDEwNzgsIDB4NDIyNCwgMHgwZjdmLCAweDAwN2MsIDB4NzA4YiwKLQkweDAwMTUsIDB4MTA3OCwgMHg0Mjk1LCAweDIwYTMsIDB4MTEwNCwgMHgyMGEzLCAweDAwMDAsIDB4MzQzMCwKLQkweDIwMTEsIDB4YWM4ZSwgMHgxMDc4LCAweDQyZDQsIDB4MDBjMCwgMHgzZmQ3LCAweDcwNzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4M2ZkNywgMHg3MTU0LCAweGExODYsIDB4ZmZmZiwgMHgwMDQwLCAweDNmZDcsIDB4YTE4MCwKLQkweDI5YzAsIDB4MjAwYywgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHgxMDc4LCAweDQxOWQsIDB4MDA0MCwKLQkweDNmZDcsIDB4MTA3OCwgMHgzODIwLCAweDAwNDAsIDB4M2ZkNywgMHgxMDc4LCAweDI1NmEsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjI5OCwgMHgyNmEwLCAweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxNCwgMHgxMDc4LCAweDQyMGIsIDB4MDA3YywgMHgwZjdlLCAweDcwODAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NDAyZSwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwgMHg1YTQ1LCAweGEwODYsIDB4MDAxNCwKLQkweDAwYzAsIDB4NDAyYywgMHgyMDc5LCAweGFjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDUsIDB4MDBjMCwKLQkweDQwMmMsIDB4NzgzNCwgMHgyMDExLCAweDAxMDAsIDB4YTIxZSwgMHgwMGMwLCAweDQwMGIsIDB4N2EzOCwKLQkweGQyZmMsIDB4MDA0MCwgMHg0MDA5LCAweDcwYjAsIDB4YTAwNSwgMHgwMGMwLCAweDQwMDksIDB4NzBiMywKLQkweDAwMDEsIDB4MDA3OCwgMHg0MDFhLCAweGEwMDUsIDB4MDBjMCwgMHg0MDJjLCAweDdhMzgsIDB4ZDJmYywKLQkweDAwNDAsIDB4NDAxOCwgMHg3MGIwLCAweGEwMDUsIDB4MDBjMCwgMHg0MDE4LCAweDcwYjMsIDB4MDAwMSwKLQkweDcwODcsIDB4MDAwMCwgMHg3YTM4LCAweGQyZjQsIDB4MDA0MCwgMHg0MDI2LCAweDIwMDEsIDB4YTc3NCwKLQkweDIwMDQsIDB4ZDBhNCwgMHgwMGMwLCAweDQwMjYsIDB4NzBjZiwgMHgwMDA4LCAweDcwOGIsIDB4MDAxNiwKLQkweDEwNzgsIDB4NDAzMCwgMHgwMDc4LCAweDQwMmUsIDB4MTA3OCwgMHg0MjI0LCAweDBmN2YsIDB4MDA3YywKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MjA5OSwgMHhhYzgwLCAweDIwYTEsIDB4MDIwYiwKLQkweDIwYTksIDB4MDAwZSwgMHg1M2E2LCAweDM0MzAsIDB4MjAxMSwgMHhhYzhlLCAweDcwOGIsIDB4MDAxNywKLQkweDEwNzgsIDB4NDJkNCwgMHgwMGMwLCAweDQwNTAsIDB4NzA3NCwgMHhhMDA1LCAweDAwYzAsIDB4NDA1MCwKLQkweDEwNzgsIDB4NDEwNCwgMHgwMGMwLCAweDQwNWEsIDB4YTA4NSwgMHgwMDAxLCAweDEwNzgsIDB4MjU2YSwKLQkweDIwYTksIDB4MDAwOCwgMHgyMDk5LCAweGFjOGUsIDB4MjZhMCwgMHg1M2E2LCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTQsIDB4MTA3OCwgMHg0MjBiLCAweDAwN2MsIDB4MGY3ZSwKLQkweDcwODAsIDB4YTAwNSwgMHgwMDQwLCAweDQwN2YsIDB4MjAxMSwgMHg0MWRjLCAweDEwNzgsIDB4NWE0NSwKLQkweGEwODYsIDB4MDA4NCwgMHgwMGMwLCAweDQwN2QsIDB4MjA3OSwgMHhhYzgwLCAweDdhMzAsIDB4YTI5NiwKLQkweDExMDYsIDB4MDBjMCwgMHg0MDdkLCAweDc4MzQsIDB4YTAwNSwgMHgwMGMwLCAweDQwN2QsIDB4NzA4YiwKLQkweDAwMTgsIDB4MTA3OCwgMHg0MDgxLCAweDAwNzgsIDB4NDA3ZiwgMHgxMDc4LCAweDQyMjQsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NzA4YiwgMHgwMDE5LCAweDEwNzgsIDB4NDI5NSwgMHgyMGEzLCAweDExMDYsIDB4MjBhMywKLQkweDAwMDAsIDB4MzQzMCwgMHgyMDk5LCAweGFjOGUsIDB4MjAzOSwgMHhhYzBlLCAweDI3YTAsIDB4MjBhOSwKLQkweDAwNDAsIDB4NTNhMywgMHgxMDc4LCAweDQyZDQsIDB4MDBjMCwgMHg0MGI1LCAweDI3MjgsIDB4MjUxNCwKLQkweDgyMDcsIDB4YTA4NCwgMHgwMGZmLCAweDgwMDAsIDB4MjAxOCwgMHhhMjk0LCAweDAwZmYsIDB4ODAwNywKLQkweGEyMDUsIDB4MjAyYSwgMHg2MDMwLCAweDIzMTAsIDB4ODIxNCwgMHhhMmEwLCAweGFjMGUsIDB4MjQxNCwKLQkweGEzOGMsIDB4MDAwMSwgMHgwMDQwLCAweDQwYjAsIDB4YTI5NCwgMHhmZjAwLCAweDAwNzgsIDB4NDBiMywKLQkweGEyOTQsIDB4MDBmZiwgMHg4MDA3LCAweGEyMTUsIDB4MjIyMiwgMHgyNzk4LCAweDI2YTAsIDB4MjBhOSwKLQkweDAwNDAsIDB4NTNhNiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDA4NCwKLQkweDEwNzgsIDB4NDIwYiwgMHgwMDdjLCAweDBmN2UsIDB4NzA4MCwgMHhhMDA1LCAweDAwNDAsIDB4NDBlNywKLQkweDIwMTEsIDB4NDFkYywgMHgxMDc4LCAweDVhNDUsIDB4YTA4NiwgMHgwMDg0LCAweDAwYzAsIDB4NDBlNSwKLQkweDIwNzksIDB4YWM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwNywgMHgwMGMwLCAweDQwZTUsIDB4NzgzNCwKLQkweGEwMDUsIDB4MDBjMCwgMHg0MGU1LCAweDcwODcsIDB4MDAwMSwgMHgxMDc4LCAweDQyN2IsIDB4NzA4YiwKLQkweDAwMWEsIDB4MTA3OCwgMHg0MGU5LCAweDAwNzgsIDB4NDBlNywgMHgxMDc4LCAweDQyMjQsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NzA4YiwgMHgwMDFiLCAweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MjA5OSwKLQkweGFjODAsIDB4MjBhMSwgMHgwMjBiLCAweDc0ODAsIDB4YTQ4MCwgMHgwMDE4LCAweGEwODAsIDB4MDAwNywKLQkweGEwODQsIDB4MDNmOCwgMHg4MDA0LCAweDIwYTgsIDB4NTNhNiwgMHg2MGMzLCAweDAwODQsIDB4MTA3OCwKLQkweDQyMGIsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4MDg3ZSwgMHgwOTdlLCAweDIwMjksIDB4YTc1MywKLQkweDI1MmMsIDB4MjBhOSwgMHgwMDA4LCAweDIwNDEsIDB4YWMwZSwgMHgyOGEwLCAweDIwOTksIDB4YWM4ZSwKLQkweDUzYTMsIDB4MjBhOSwgMHgwMDA4LCAweDIwMTEsIDB4MDAwNywgMHhkNWQ0LCAweDAwNDAsIDB4NDExYSwKLQkweDIwMTEsIDB4MDAwMCwgMHgyODAwLCAweGEyMDAsIDB4MjAwYywgMHhhMWE2LCAweGZmZmYsIDB4MDBjMCwKLQkweDQxMmMsIDB4ZDVkNCwgMHgwMDQwLCAweDQxMjcsIDB4ODIxMCwgMHgwMDc4LCAweDQxMjgsIDB4ODIxMSwKLQkweDAwZjAsIDB4NDExYSwgMHgwMDc4LCAweDQxOTQsIDB4ODJmZiwgMHgwMGMwLCAweDQxM2UsIDB4ZDVkNCwKLQkweDAwNDAsIDB4NDEzOCwgMHhhMWE2LCAweDNmZmYsIDB4MDA0MCwgMHg0MTI0LCAweDAwNzgsIDB4NDEzYywKLQkweGExYTYsIDB4M2ZmZiwgMHgwMDQwLCAweDQxOTQsIDB4YTE4ZCwgMHhjMDAwLCAweDIwYTksIDB4MDAxMCwKLQkweDIwMTksIDB4MDAwMSwgMHhkNWQ0LCAweDAwNDAsIDB4NDE0NywgMHgyMDE5LCAweDAwMTAsIDB4MjEyMCwKLQkweGQ1ZDQsIDB4MDA0MCwgMHg0MTRlLCAweDg0MjMsIDB4MDA3OCwgMHg0MTRmLCAweDg0MjQsIDB4MDBjOCwKLQkweDQxNWMsIDB4ZDVkNCwgMHgwMDQwLCAweDQxNTcsIDB4ODMxOSwgMHgwMDc4LCAweDQxNTgsIDB4ODMxOCwKLQkweDAwZjAsIDB4NDE0OCwgMHgwMDc4LCAweDQxOTQsIDB4MjNhOCwgMHgyMDIxLCAweDAwMDEsIDB4ODQyNiwKLQkweDg0MjUsIDB4MDBmMCwgMHg0MTYwLCAweDIzMjgsIDB4ODUyOSwgMHhhMmJlLCAweDAwMDcsIDB4MDA0MCwKLQkweDQxNzQsIDB4MDA3ZSwgMHgyMDM5LCAweDAwMDcsIDB4MjIwMCwgMHhhNzNhLCAweDAwN2YsIDB4MjdhOCwKLQkweGE1YTgsIDB4MDAxMCwgMHgwMGYwLCAweDQxNzAsIDB4NzU1MiwgMHhhNWM4LCAweDI5YzAsIDB4MjkyYywKLQkweGE1YWMsIDB4MDBmZiwgMHg2NTMyLCAweDYwZTcsIDB4MDAwMCwgMHg2NWVhLCAweDcwNmYsIDB4MDAwMCwKLQkweDc1NzIsIDB4MjAxOCwgMHgyMzA0LCAweGE0MDUsIDB4MjAxYSwgMHg3MDc3LCAweDAwMDEsIDB4MjZhMCwKLQkweDI4OTgsIDB4MjBhOSwgMHgwMDA4LCAweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDQxOWEsIDB4YTAwNiwgMHgwMDc4LCAweDQxOWEsIDB4YTAwNiwKLQkweDEwNzgsIDB4MTMzMiwgMHgwOTdmLCAweDA4N2YsIDB4MDA3YywgMHgyMTE4LCAweDIwMjEsIDB4MDAwMCwKLQkweDIwMDEsIDB4MDAwNywgMHhhMzlhLCAweDAwMTAsIDB4MDA0OCwgMHg0MWFhLCAweDg0MjAsIDB4ODAwMSwKLQkweDAwNzgsIDB4NDFhMiwgMHgyMTE4LCAweDg0ZmYsIDB4MDA0MCwgMHg0MWIzLCAweGEzOWEsIDB4MDAxMCwKLQkweDg0MjEsIDB4MDBjMCwgMHg0MWFlLCAweDIwMjEsIDB4MDAwMSwgMHg4M2ZmLCAweDAwNDAsIDB4NDFiYywKLQkweDg0MjMsIDB4ODMxOSwgMHgwMGMwLCAweDQxYjgsIDB4YTIzOCwgMHgyNzA0LCAweGE0MmMsIDB4MDBjMCwKLQkweDQxZDQsIDB4YTQwNSwgMHgyMDNhLCAweDcxNTIsIDB4YTFhMCwgMHgyOWMwLCAweDI0MmMsIDB4YTVhYywKLQkweDAwZmYsIDB4NjUzMiwgMHg2MGU3LCAweDAwMDAsIDB4NjVlYSwgMHg3MDZmLCAweDAwMDAsIDB4NzU3MiwKLQkweDcwNzcsIDB4MDAwMSwgMHhhMDg0LCAweDAwMDAsIDB4MDA3YywgMHgwZTdlLCAweDIwNzEsIDB4YTcwMCwKLQkweDcwN2IsIDB4MDAwMCwgMHgwZTdmLCAweDAwN2MsIDB4MGU3ZSwgMHgwZjdlLCAweDIwMDEsIDB4MDAwMiwKLQkweDEwNzgsIDB4NWFlNiwgMHgyMDc5LCAweDAxMDAsIDB4MjA3MSwgMHgwMTQwLCAweDEwNzgsIDB4NmUwZiwKLQkweDcwMDQsIDB4YTA4NCwgMHg0MDAwLCAweDAwNDAsIDB4NDFmMSwgMHg3MDAzLCAweDEwMDAsIDB4NzAwMywKLQkweDAwMDAsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHhhNzIyLCAweDIwNzMsIDB4MDAwMCwKLQkweDc4NDAsIDB4MDI3ZSwgMHgwMTdlLCAweDIwMDksIDB4MDBmNywgMHgxMDc4LCAweDQyYTEsIDB4MDE3ZiwKLQkweGEwOTQsIDB4MDAxMCwgMHhhMjg1LCAweDAwODAsIDB4Nzg0MiwgMHg3YTQyLCAweDAyN2YsIDB4MTI3ZiwKLQkweDBmN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwMTEsIDB4YTliYiwKLQkweDIwMTMsIDB4MDAwMCwgMHg3MDgzLCAweDAwMDAsIDB4MTI3ZiwgMHgyMGUxLCAweDkwODAsIDB4NjBhMywKLQkweDAwNTYsIDB4NjBhNywgMHg5NTc1LCAweDEwNzgsIDB4NmUwNiwgMHgyMDA5LCAweDA3ZDAsIDB4MjAxMSwKLQkweDQxZGMsIDB4MTA3OCwgMHg1YWRkLCAweDAwN2MsIDB4MDE3ZSwgMHgwMjdlLCAweDBjN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDExLCAweDAwMDMsIDB4MTA3OCwgMHg3MGUwLCAweDIwMTEsIDB4MDAwMiwKLQkweDEwNzgsIDB4NzBlYSwgMHgxMDc4LCAweDZmYzQsIDB4MDM3ZSwgMHgyMDE5LCAweDAwMDAsIDB4MTA3OCwKLQkweDcwNTgsIDB4MDM3ZiwgMHgyMDA5LCAweDAwZjcsIDB4MTA3OCwgMHg0MmExLCAweDIwNjEsIDB4YTljNCwKLQkweDYwMWIsIDB4MDAwMCwgMHg2MDFmLCAweDAwMDAsIDB4MjA2MSwgMHhhNzAwLCAweDYwMDMsIDB4MDAwMSwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDIwMDksIDB4MDAyZCwKLQkweDIwMTEsIDB4NDI1OSwgMHgxMDc4LCAweDVhMzgsIDB4MTI3ZiwgMHgwYzdmLCAweDAyN2YsIDB4MDE3ZiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgwMDdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwMDEsIDB4MDAwMSwKLQkweDEwNzgsIDB4NWFlNiwgMHgyMDcxLCAweDAxMDAsIDB4MTA3OCwgMHg2ZTBmLCAweDIwNzEsIDB4MDE0MCwKLQkweDcwMDQsIDB4YTA4NCwgMHg0MDAwLCAweDAwNDAsIDB4NDI3MSwgMHg3MDAzLCAweDEwMDAsIDB4NzAwMywKLQkweDAwMDAsIDB4MjAwMSwgMHgwMDAxLCAweDEwNzgsIDB4MjRlOCwgMHgxMDc4LCAweDQyMjQsIDB4MTI3ZiwKLQkweDAwN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDIwYTksIDB4MDA0MCwgMHgyMGExLCAweGFkYzAsIDB4MjA5OSwKLQkweGFjOGUsIDB4MzMwNCwgMHg4MDA3LCAweDIwYTIsIDB4OTM5OCwgMHg5NGEwLCAweDAwZjAsIDB4NDI4MSwKLQkweDAwN2MsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHgyMDk5LCAweGFjMDAsIDB4MjBhMSwKLQkweDAyMGIsIDB4MjBhOSwgMHgwMDBjLCAweDUzYTYsIDB4MDA3YywgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4MjA5OSwgMHhhYzgwLCAweDIwYTEsIDB4MDIwYiwgMHgyMGE5LCAweDAwMGMsIDB4NTNhNiwKLQkweDAwN2MsIDB4MGM3ZSwgMHgwMDdlLCAweDIwNjEsIDB4MDEwMCwgMHg4MTBmLCAweDIwMDEsIDB4YTcyZiwKLQkweDIwMDQsIDB4YTAwNSwgMHgwMGMwLCAweDQyYjIsIDB4NjAzMCwgMHhhMDg0LCAweDAwZmYsIDB4YTEwNSwKLQkweDAwNzgsIDB4NDJiNCwgMHhhMTg1LCAweDAwZjcsIDB4NjA0YSwgMHgwMDdmLCAweDBjN2YsIDB4MDA3YywKLQkweDAxN2UsIDB4MDQ3ZSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGE0LCAweDAwNDAsIDB4NDJjYiwKLQkweGEwMDYsIDB4MjAyMCwgMHgyMDA5LCAweDAwMmEsIDB4MTA3OCwgMHhhMjJkLCAweDIwMDEsIDB4YTcwYywKLQkweDIwMGMsIDB4YzE5NSwgMHgyMTAyLCAweDIwMTksIDB4MDAyYSwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwKLQkweDI4NGYsIDB4MDQ3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MDA3ZSwgMHgyMDAxLCAweGE3MGMsIDB4MjAwNCwKLQkweGQwOWMsIDB4MDA0MCwgMHg0MmRiLCAweDAwN2YsIDB4MDA3YywgMHgwMDdlLCAweDAxN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDAxLCAweDAxMDEsIDB4MjAwYywgMHhhMThkLCAweDAwMDYsIDB4MjEwMiwKLQkweDEyN2YsIDB4MDE3ZiwgMHgwMDdmLCAweDAwN2MsIDB4MTU3ZSwgMHgyMGE5LCAweDAwZmYsIDB4MjAwOSwKLQkweGE4MzUsIDB4YTAwNiwgMHgyMDBhLCAweDgxMDgsIDB4MDBmMCwgMHg0MmYyLCAweDE1N2YsIDB4MDA3YywKLQkweDBkN2UsIDB4MDM3ZSwgMHgxNTdlLCAweDEzN2UsIDB4MTQ3ZSwgMHgyMDY5LCAweGE3NTIsIDB4YTAwNiwKLQkweDYwMDIsIDB4NjAwNywgMHgwNzA3LCAweDYwMGEsIDB4NjAwZSwgMHg2MDEyLCAweGExOTgsIDB4MjljMCwKLQkweDIzMWMsIDB4YTM5YywgMHgwMGZmLCAweDYzMTYsIDB4MjBhOSwgMHgwMDA0LCAweGFjOTgsIDB4MDAwNiwKLQkweDIzYTAsIDB4NDBhNCwgMHgyMGE5LCAweDAwMDQsIDB4YWM5OCwgMHgwMDBhLCAweDIzYTAsIDB4NDBhNCwKLQkweDYwM2UsIDB4NjA0MiwgMHg2MDRlLCAweDYwNTIsIDB4NjA1NiwgMHg2MDVhLCAweDYwNWUsIDB4NjA2MiwKLQkweDYwNjYsIDB4NjA2YSwgMHg2MDZlLCAweDYwNzIsIDB4NjA3NiwgMHg2MDdhLCAweDYwN2UsIDB4NjA4MiwKLQkweDYwODYsIDB4NjA4YSwgMHg2MDhlLCAweDYwOTIsIDB4NjA5NiwgMHg2MDlhLCAweDYwOWUsIDB4NjBhZSwKLQkweDYxYTIsIDB4MGQ3ZSwgMHg2MGE0LCAweGEwNmQsIDB4MDA0MCwgMHg0MzM4LCAweDEwNzgsIDB4MTNhNCwKLQkweDYwYTcsIDB4MDAwMCwgMHg2MGE4LCAweGEwNmQsIDB4MDA0MCwgMHg0MzQwLCAweDEwNzgsIDB4MTNhNCwKLQkweDYwYWIsIDB4MDAwMCwgMHgwZDdmLCAweGEwMDYsIDB4NjA0YSwgMHg2ODEwLCAweDYwM2EsIDB4NjgwYywKLQkweDYwNDYsIDB4NjgxNCwgMHhhMDg0LCAweDAwZmYsIDB4NjA0MiwgMHgxNDdmLCAweDEzN2YsIDB4MTU3ZiwKLQkweDAzN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDY5NDQsIDB4NmU0OCwKLQkweGE2ODQsIDB4M2ZmZiwgMHhhMDgyLCAweDQwMDAsIDB4MDBjOCwgMHg0NDI0LCAweGExOGMsIDB4ZmYwMCwKLQkweDgxMGYsIDB4YTE4MiwgMHgwMGZmLCAweDAwYzgsIDB4NDQyYSwgMHgyMDAxLCAweGE3MGMsIDB4MjAwNCwKLQkweGEwODQsIDB4MDAwMywgMHgwMDQwLCAweDQzODUsIDB4MjAwMSwgMHhhNzBjLCAweDIwMDQsIDB4ZDA4NCwKLQkweDAwYzAsIDB4NDQwNSwgMHhhMTg4LCAweGE4MzUsIDB4MjEwNCwgMHhhMDY1LCAweDAwNDAsIDB4NDQwNSwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwOGUsIDB4MDAwNiwgMHgwMGMwLCAweDQ0MDUsIDB4NjAwMCwKLQkweGQwYzQsIDB4MDA0MCwgMHg0NDA1LCAweDAwNzgsIDB4NDM5MiwgMHhhMTg4LCAweGE4MzUsIDB4MjEwNCwKLQkweGEwNjUsIDB4MDA0MCwgMHg0M2U5LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwOGUsIDB4MDAwNiwKLQkweDAwYzAsIDB4NDNlZiwgMHg2MGE0LCAweGEwMGQsIDB4MDA0MCwgMHg0MzlhLCAweDEwNzgsIDB4NDgxNywKLQkweDAwNDAsIDB4NDNlMywgMHg2MGE4LCAweGEwMGQsIDB4MDA0MCwgMHg0M2I0LCAweDEwNzgsIDB4NDg2YSwKLQkweDAwYzAsIDB4NDNiNCwgMHg2OTRjLCAweGQxZmMsIDB4MDBjMCwgMHg0M2FhLCAweDEwNzgsIDB4NDRkZiwKLQkweDAwNzgsIDB4NDNkZSwgMHgxMDc4LCAweDQ0ODQsIDB4Njk0YywgMHhkMWVjLCAweDAwYzAsIDB4NDNkZSwKLQkweDEwNzgsIDB4NDZkNiwgMHgwMDc4LCAweDQzZGUsIDB4Njk0YywgMHhhMTg0LCAweGEwMDAsIDB4MDA0MCwKLQkweDQzY2UsIDB4ZDFlYywgMHgwMDQwLCAweDQzYzcsIDB4ZDFmYywgMHgwMDQwLCAweDQzYzMsIDB4MTA3OCwKLQkweDQ2ZTcsIDB4MDA3OCwgMHg0M2NhLCAweDEwNzgsIDB4NDZlNywgMHgwMDc4LCAweDQzY2UsIDB4ZDFmYywKLQkweDAwNDAsIDB4NDNjZSwgMHgxMDc4LCAweDQ0ODQsIDB4MDA3OCwgMHg0M2RlLCAweDYwNTAsIDB4YTAwZCwKLQkweDAwNDAsIDB4NDNkOSwgMHgyZDAwLCAweDIwMGEsIDB4NjgwMywgMHgwMDAwLCAweDYwNTIsIDB4MDA3OCwKLQkweDQzZGUsIDB4MmQwMCwgMHg2MDUyLCAweDYwNGUsIDB4NjgwMywgMHgwMDAwLCAweDEwNzgsIDB4NWRhOSwKLQkweGEwMDYsIDB4MTI3ZiwgMHgwMDdjLCAweDIwMDEsIDB4MDAwNSwgMHgyMDA5LCAweDAwMDAsIDB4MDA3OCwKLQkweDQ0MmUsIDB4MjAwMSwgMHgwMDI4LCAweDIwMDksIDB4MDAwMCwgMHgwMDc4LCAweDQ0MmUsIDB4YTA4MiwKLQkweDAwMDYsIDB4MDBjOCwgMHg0NDA1LCAweDYwYTAsIDB4ZDBiYywgMHgwMGMwLCAweDQ0MDEsIDB4NjEwMCwKLQkweGQxZmMsIDB4MDA0MCwgMHg0MzkyLCAweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDEwMDAsIDB4MDA3OCwKLQkweDQ0MmUsIDB4MjAwMSwgMHgwMDI4LCAweDAwNzgsIDB4NDQyMCwgMHgyMDA5LCAweGE3MGMsIDB4MjEwYywKLQkweGQxOGMsIDB4MDA0MCwgMHg0NDBmLCAweDIwMDEsIDB4MDAwNCwgMHgwMDc4LCAweDQ0MjAsIDB4ZDE4NCwKLQkweDAwNDAsIDB4NDQxNiwgMHgyMDAxLCAweDAwMDQsIDB4MDA3OCwgMHg0NDIwLCAweDIwMDEsIDB4MDAyOSwKLQkweDYxMDAsIDB4ZDFmYywgMHgwMDQwLCAweDQ0MjAsIDB4MjAwOSwgMHgxMDAwLCAweDAwNzgsIDB4NDQyZSwKLQkweDIwMDksIDB4MDAwMCwgMHgwMDc4LCAweDQ0MmUsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwKLQkweDAwNzgsIDB4NDQyZSwgMHgyMDAxLCAweDAwMjksIDB4MjAwOSwgMHgwMDAwLCAweGEwMDUsIDB4MTI3ZiwKLQkweDAwN2MsIDB4Njk0NCwgMHg2ZTQ4LCAweGE2ODQsIDB4M2ZmZiwgMHhhMDgyLCAweDQwMDAsIDB4MDBjOCwKLQkweDQ0N2UsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4MiwgMHgwMGZmLCAweDAwYzgsIDB4NDQ2NCwKLQkweGExODgsIDB4YTgzNSwgMHgyMTA0LCAweGEwNjUsIDB4MDA0MCwgMHg0NDY0LCAweDYwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4ZSwgMHgwMDA2LCAweDAwYzAsIDB4NDQ2YSwgMHg2ODRjLCAweGQwZWMsIDB4MDA0MCwKLQkweDQ0NTcsIDB4MTA3OCwgMHg0NmU3LCAweDEwNzgsIDB4NDQ4NCwgMHgwMDc4LCAweDQ0NWYsIDB4MTA3OCwKLQkweDQ0ODQsIDB4Njg0YywgMHhkMGZjLCAweDAwNDAsIDB4NDQ1ZiwgMHgxMDc4LCAweDQ2ZDYsIDB4MTA3OCwKLQkweDQ3MmYsIDB4YTAwNiwgMHgwMDc4LCAweDQ0ODIsIDB4MjAwMSwgMHgwMDI4LCAweDIwMDksIDB4MDAwMCwKLQkweDAwNzgsIDB4NDQ4MiwgMHhhMDgyLCAweDAwMDYsIDB4MDBjOCwgMHg0NDc4LCAweDYxMDAsIDB4ZDFmYywKLQkweDAwNDAsIDB4NDQ0ZCwgMHgyMDAxLCAweDAwMjksIDB4MjAwOSwgMHgxMDAwLCAweDAwNzgsIDB4NDQ4MiwKLQkweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDAwMDAsIDB4MDA3OCwgMHg0NDgyLCAweDIwMDEsIDB4MDAyOSwKLQkweDIwMDksIDB4MDAwMCwgMHhhMDA1LCAweDAwN2MsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjA1MCwKLQkweGEwMGQsIDB4MDA0MCwgMHg0NDkyLCAweDJkMDAsIDB4MjAwYSwgMHg2ODAzLCAweDAwMDAsIDB4NjA1MiwKLQkweDEyN2YsIDB4MDA3YywgMHgyZDAwLCAweDYwNTIsIDB4NjA0ZSwgMHg2ODAzLCAweDAwMDAsIDB4MDA3OCwKLQkweDQ0OTAsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjA0YywgMHhhMDA1LCAweDAwNDAsIDB4NDRhZiwKLQkweDBlN2UsIDB4MjA3MSwgMHhhOWIxLCAweDcwMDQsIDB4YTA4NiwgMHgwMDAyLCAweDAwNDAsIDB4NDRiNiwKLQkweDBlN2YsIDB4NjA0YywgMHg2ODAyLCAweDJkMDAsIDB4NjA0ZSwgMHgxMjdmLCAweDAwN2MsIDB4MmQwMCwKLQkweDYwNTIsIDB4NjA0ZSwgMHg2ODAzLCAweDAwMDAsIDB4MDA3OCwgMHg0NGFkLCAweDcwMWMsIDB4YWMwNiwKLQkweDAwYzAsIDB4NDRhOCwgMHg2MDRjLCAweDIwNzAsIDB4NzAwMCwgMHg2ODAyLCAweDJkMDAsIDB4NzAwMiwKLQkweDBlN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwNGMsIDB4YTA2ZCwKLQkweDAwNDAsIDB4NDRkMSwgMHg2ODAwLCAweGEwMDUsIDB4MDBjMCwgMHg0NGNmLCAweDYwNTIsIDB4NjA0ZSwKLQkweGFkMDUsIDB4MTI3ZiwgMHgwMDdjLCAweDYwNGMsIDB4YTA2ZCwgMHgwMDQwLCAweDQ0ZGUsIDB4NjgwMCwKLQkweGEwMDUsIDB4MDBjMCwgMHg0NGRjLCAweDYwNTIsIDB4NjA0ZSwgMHhhZDA1LCAweDAwN2MsIDB4NjgwMywKLQkweDAwMDAsIDB4NjA4NCwgMHhhMDBkLCAweDAwNDAsIDB4NDRlOSwgMHgyZDAwLCAweDIwMGEsIDB4NjA4NiwKLQkweDAwN2MsIDB4MmQwMCwgMHg2MDg2LCAweDYwODIsIDB4MDA3OCwgMHg0NGU4LCAweDEyN2UsIDB4MGM3ZSwKLQkweDAyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTgsIDB4MjI2MCwgMHg2MjAwLCAweGEwMDUsIDB4MDA0MCwKLQkweDQ0ZmMsIDB4YzI4NSwgMHgwMDc4LCAweDQ0ZmQsIDB4YzI4NCwgMHg2MjAyLCAweDAyN2YsIDB4MGM3ZiwKLQkweDEyN2YsIDB4MDA3YywgMHgxMjdlLCAweDBjN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTgsIDB4MjI2MCwKLQkweDYyMDQsIDB4MDA3ZSwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHg0NTIxLCAweDYwOWMsIDB4ZDBhYywKLQkweDAwNDAsIDB4NDUyMSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwgMHhkMGE0LCAweDAwNDAsIDB4NDUyMSwKLQkweGEyODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwODYsIDB4MDAwNywgMHgwMGMwLCAweDQ1MjEsIDB4MjAxMSwKLQkweDA2MDAsIDB4MDA3ZiwgMHhhMjk0LCAweGZmMDAsIDB4YTIxNSwgMHg2MjA2LCAweDAwN2UsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDBjMCwgMHg0NTMxLCAweDYyOTAsIDB4ODJmZiwgMHgwMGMwLCAweDQ1MzEsIDB4MTA3OCwKLQkweDEzMzIsIDB4MDA3ZiwgMHgwYzdmLCAweDEyN2YsIDB4MDA3YywgMHgxMjdlLCAweDBjN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjIxOCwgMHgyMjYwLCAweDYyMDQsIDB4MDA3ZSwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwKLQkweDQ1NTMsIDB4NjA5YywgMHhkMGE0LCAweDAwNDAsIDB4NDU1MywgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYWMsIDB4MDBjMCwgMHg0NTUzLCAweGEyODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDcsIDB4MDBjMCwKLQkweDQ1NTMsIDB4MjAxMSwgMHgwMDA2LCAweDAwN2YsIDB4YTI5NCwgMHgwMGZmLCAweDgwMDcsIDB4YTIxNSwKLQkweDYyMDYsIDB4MGM3ZiwgMHgxMjdmLCAweDAwN2MsIDB4MDI3ZSwgMHhhMTgyLCAweDAwZmYsIDB4MDA0OCwKLQkweDQ1NjUsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4NDU3ZCwgMHhhMTkwLCAweGE4MzUsIDB4MjIwNCwKLQkweGEwNjUsIDB4MDBjMCwgMHg0NTdjLCAweDAxN2UsIDB4MGQ3ZSwgMHgxMDc4LCAweDEzNzAsIDB4MmQ2MCwKLQkweDBkN2YsIDB4MDE3ZiwgMHgwMDQwLCAweDQ1NjEsIDB4MmMwMCwgMHgyMDEyLCAweDYwYTcsIDB4MDAwMCwKLQkweDYwYWIsIDB4MDAwMCwgMHgxMDc4LCAweDQyZjgsIDB4YTAwNiwgMHgwMjdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMjdlLCAweGExODIsIDB4MDBmZiwgMHgwMDQ4LCAweDQ1OGIsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDA3OCwgMHg0NWMxLCAweDBkN2UsIDB4YTE5MCwgMHhhODM1LCAweDIyMDQsIDB4YTA2ZCwKLQkweDAwNDAsIDB4NDViZiwgMHgyMDEzLCAweDAwMDAsIDB4MGQ3ZSwgMHgwYzdlLCAweDJkNjAsIDB4NjBhNCwKLQkweGEwNmQsIDB4MDA0MCwgMHg0NTlkLCAweDEwNzgsIDB4MTNhNCwgMHg2MGE4LCAweGEwNmQsIDB4MDA0MCwKLQkweDQ1YTMsIDB4MTA3OCwgMHgxM2E0LCAweDBjN2YsIDB4MGQ3ZiwgMHgwZDdlLCAweDBjN2UsIDB4NjhhYywKLQkweDIwNjAsIDB4OGNmZiwgMHgwMDQwLCAweDQ1YmIsIDB4NjAwYywgMHgwMDdlLCAweDYwMTAsIDB4MjA2OCwKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDQ1YjYsIDB4MTA3OCwgMHgxM2I0LCAweDEwNzgsIDB4NzcyZCwKLQkweDBjN2YsIDB4MDA3OCwgMHg0NWE5LCAweDBjN2YsIDB4MGQ3ZiwgMHgxMDc4LCAweDEzYTQsIDB4MGQ3ZiwKLQkweGEwMDYsIDB4MDI3ZiwgMHgxMjdmLCAweDAwN2MsIDB4MDE3ZSwgMHhhMTgyLCAweDAwZmYsIDB4MDA0OCwKLQkweDQ1Y2QsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4NDVkNCwgMHhhMTg4LCAweGE4MzUsIDB4MjEwNCwKLQkweGEwNjUsIDB4MDA0MCwgMHg0NWM5LCAweGEwMDYsIDB4MDE3ZiwgMHgwMDdjLCAweDBkN2UsIDB4MTU3ZSwKLQkweDEzN2UsIDB4MTQ3ZSwgMHg2MDBiLCAweDAwMDAsIDB4NjAwZiwgMHgwMDAwLCAweDYwMDAsIDB4YzA4YywKLQkweDYwMDIsIDB4MjA2OSwgMHhhYzhlLCAweDY4MDgsIDB4NjA1ZSwgMHg2ODEwLCAweDYwNjIsIDB4NjEzOCwKLQkweGExMGEsIDB4MDA0OCwgMHg0NWVjLCAweDYwM2EsIDB4NjgxNCwgMHg2MDY2LCAweDIwOTksIDB4YWM5NiwKLQkweGFjODgsIDB4MDAwYSwgMHgyMWEwLCAweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDIwOTksIDB4YWM5YSwKLQkweGFjODgsIDB4MDAwNiwgMHgyMWEwLCAweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDIwNjksIDB4YWNhZSwKLQkweDY4MDgsIDB4NjA2YSwgMHg2OTBjLCAweDYxNmUsIDB4NjgxMCwgMHg2MDcyLCAweDY4MTgsIDB4NjA3NiwKLQkweDYwYTAsIDB4YTA4NiwgMHgwMDdlLCAweDAwYzAsIDB4NDYxMSwgMHgyMDY5LCAweGFjOGUsIDB4NjkwYywKLQkweDYxNmUsIDB4YTE4MiwgMHgwMjExLCAweDAwYzgsIDB4NDYxOSwgMHgyMDA5LCAweDAwMDgsIDB4MDA3OCwKLQkweDQ2NDMsIDB4YTE4MiwgMHgwMjU5LCAweDAwYzgsIDB4NDYyMSwgMHgyMDA5LCAweDAwMDcsIDB4MDA3OCwKLQkweDQ2NDMsIDB4YTE4MiwgMHgwMmMxLCAweDAwYzgsIDB4NDYyOSwgMHgyMDA5LCAweDAwMDYsIDB4MDA3OCwKLQkweDQ2NDMsIDB4YTE4MiwgMHgwMzQ5LCAweDAwYzgsIDB4NDYzMSwgMHgyMDA5LCAweDAwMDUsIDB4MDA3OCwKLQkweDQ2NDMsIDB4YTE4MiwgMHgwNDIxLCAweDAwYzgsIDB4NDYzOSwgMHgyMDA5LCAweDAwMDQsIDB4MDA3OCwKLQkweDQ2NDMsIDB4YTE4MiwgMHgwNTgxLCAweDAwYzgsIDB4NDY0MSwgMHgyMDA5LCAweDAwMDMsIDB4MDA3OCwKLQkweDQ2NDMsIDB4MjAwOSwgMHgwMDAyLCAweDYxOTIsIDB4MTQ3ZiwgMHgxMzdmLCAweDE1N2YsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MDE3ZSwgMHgwMjdlLCAweDBlN2UsIDB4MjA3MSwgMHhhYzhkLCAweDJlMDQsIDB4Njg5NiwKLQkweDIwNzEsIDB4YWM4ZSwgMHg3MDA0LCAweDY4OWEsIDB4NzAxYywgMHg2ODllLCAweDZhMDAsIDB4MjAwOSwKLQkweGE3NzIsIDB4MjEwYywgMHhkMGJjLCAweDAwNDAsIDB4NDY2MywgMHhkMWVjLCAweDAwNDAsIDB4NDY2MywKLQkweGMyYWQsIDB4MDA3OCwgMHg0NjY0LCAweGMyYWMsIDB4ZDBjNCwgMHgwMDQwLCAweDQ2NmQsIDB4ZDFlNCwKLQkweDAwNDAsIDB4NDY2ZCwgMHhjMmJkLCAweDAwNzgsIDB4NDY2ZSwgMHhjMmJjLCAweDZhMDIsIDB4MGU3ZiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDBkN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjBhNCwKLQkweGEwNmQsIDB4MDA0MCwgMHg0Njk3LCAweDY5MDAsIDB4ODFmZiwgMHgwMGMwLCAweDQ2YWIsIDB4NmEwNCwKLQkweGEyODIsIDB4MDAxMCwgMHgwMGM4LCAweDQ2YjAsIDB4YWQ4OCwgMHgwMDA0LCAweDIwYTksIDB4MDAxMCwKLQkweDIxMDQsIDB4YTA4NiwgMHhmZmZmLCAweDAwNDAsIDB4NDY5MiwgMHg4MTA4LCAweDAwZjAsIDB4NDY4OCwKLQkweDEwNzgsIDB4MTMzMiwgMHgyNjBhLCAweDgyMTAsIDB4NmEwNiwgMHgwMDc4LCAweDQ2YWIsIDB4MTA3OCwKLQkweDEzOGIsIDB4MDA0MCwgMHg0NmIwLCAweDJkMDAsIDB4NjBhNiwgMHg2ODAzLCAweDAwMDAsIDB4YWQ4OCwKLQkweDAwMDQsIDB4MjBhOSwgMHgwMDEwLCAweDIwMGIsIDB4ZmZmZiwgMHg4MTA4LCAweDAwZjAsIDB4NDZhMywKLQkweDY4MDcsIDB4MDAwMSwgMHg2ZTEyLCAweGEwODUsIDB4MDAwMSwgMHgxMjdmLCAweDBkN2YsIDB4MDA3YywKLQkweGEwMDYsIDB4MDA3OCwgMHg0NmFkLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDBkN2UsIDB4NjBhNCwKLQkweGEwMGQsIDB4MDA0MCwgMHg0NmQzLCAweDIxNjgsIDB4NjgwMCwgMHhhMDA1LCAweDAwYzAsIDB4NDZjZiwKLQkweDEwNzgsIDB4NDgxNywgMHgwMGMwLCAweDQ2ZDMsIDB4MjAwYiwgMHhmZmZmLCAweDY4MDQsIDB4YTA4YSwKLQkweDAwMDIsIDB4MDA0OCwgMHg0NmNmLCAweDgwMDEsIDB4NjgwNiwgMHgwMDc4LCAweDQ2ZDMsIDB4MTA3OCwKLQkweDEzYTQsIDB4NjBhNywgMHgwMDAwLCAweDBkN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHg0ODdmLCAweDAwNzgsIDB4NDZkZiwgMHgxMDc4LCAweDQ0ODQsIDB4MTA3OCwKLQkweDQ3NzUsIDB4MDBjMCwgMHg0NmRkLCAweDEwNzgsIDB4NDcyZiwgMHgxMjdmLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwYTgsIDB4YTA2ZCwgMHgwMDQwLCAweDQ3MGIsIDB4Njk1MCwKLQkweDgxZmYsIDB4MDBjMCwgMHg0NzFmLCAweDZhNTQsIDB4YTI4MiwgMHgwMDEwLCAweDAwYzgsIDB4NDcyYywKLQkweGFkODgsIDB4MDAxOCwgMHgyMGE5LCAweDAwMTAsIDB4MjEwNCwgMHhhMDg2LCAweGZmZmYsIDB4MDA0MCwKLQkweDQ3MDYsIDB4ODEwOCwgMHgwMGYwLCAweDQ2ZmMsIDB4MTA3OCwgMHgxMzMyLCAweDI2MGEsIDB4ODIxMCwKLQkweDZhNTYsIDB4MDA3OCwgMHg0NzFmLCAweDEwNzgsIDB4MTM4YiwgMHgwMDQwLCAweDQ3MmMsIDB4MmQwMCwKLQkweDYwYWEsIDB4Njg1MywgMHgwMDAwLCAweGFkODgsIDB4MDAxOCwgMHgyMGE5LCAweDAwMTAsIDB4MjAwYiwKLQkweGZmZmYsIDB4ODEwOCwgMHgwMGYwLCAweDQ3MTcsIDB4Njg1NywgMHgwMDAxLCAweDZlNjIsIDB4MDA3OCwKLQkweDQ3MjMsIDB4MTA3OCwgMHg0NGRmLCAweDEwNzgsIDB4NDczOSwgMHgwMGMwLCAweDQ3MjEsIDB4YTA4NSwKLQkweDAwMDEsIDB4MTI3ZiwgMHgwZDdmLCAweDAwN2MsIDB4YTAwNiwgMHgwMDc4LCAweDQ3MjksIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgxMDc4LCAweDVkYTksIDB4MTI3ZiwgMHgwMDdjLCAweGEwMWUsIDB4MDA3OCwKLQkweDQ3M2IsIDB4MjAxOSwgMHgwMDAxLCAweGEwMGUsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NjA0YywKLQkweDIwNjgsIDB4NjAwMCwgMHhkMGRjLCAweDAwYzAsIDB4NDc1OSwgMHg4ZGZmLCAweDAwNDAsIDB4NDc3MCwKLQkweDgzZmYsIDB4MDA0MCwgMHg0NzUxLCAweDY4NDgsIDB4YTYwNiwgMHgwMDQwLCAweDQ3NWUsIDB4MDA3OCwKLQkweDQ3NTksIDB4NjgzYywgMHhhNDA2LCAweDAwYzAsIDB4NDc1OSwgMHg2ODQwLCAweGE1MDYsIDB4MDA0MCwKLQkweDQ3NWUsIDB4MmQwOCwgMHg2ODAwLCAweDIwNjgsIDB4MDA3OCwgMHg0NzQ1LCAweDEwNzgsIDB4NzIzMywKLQkweDZhMDAsIDB4NjA0YywgMHhhZDA2LCAweDAwYzAsIDB4NDc2OCwgMHg2MjRlLCAweDAwNzgsIDB4NDc2YiwKLQkweGExODAsIDB4MDAwMCwgMHgyMjAyLCAweDgyZmYsIDB4MDBjMCwgMHg0NzcwLCAweDYxNTIsIDB4OGRmZiwKLQkweDEyN2YsIDB4MDA3YywgMHhhMDFlLCAweDAwNzgsIDB4NDc3NywgMHgyMDE5LCAweDAwMDEsIDB4YTAwZSwKLQkweDYwODAsIDB4MjA2OCwgMHg4ZGZmLCAweDAwNDAsIDB4NDdhMywgMHg4M2ZmLCAweDAwNDAsIDB4NDc4NiwKLQkweDY4NDgsIDB4YTYwNiwgMHgwMDQwLCAweDQ3OTMsIDB4MDA3OCwgMHg0NzhlLCAweDY4M2MsIDB4YTQwNiwKLQkweDAwYzAsIDB4NDc4ZSwgMHg2ODQwLCAweGE1MDYsIDB4MDA0MCwgMHg0NzkzLCAweDJkMDgsIDB4NjgwMCwKLQkweDIwNjgsIDB4MDA3OCwgMHg0NzdhLCAweDZhMDAsIDB4NjA4MCwgMHhhZDA2LCAweDAwYzAsIDB4NDc5YiwKLQkweDYyODIsIDB4MDA3OCwgMHg0NzllLCAweGExODAsIDB4MDAwMCwgMHgyMjAyLCAweDgyZmYsIDB4MDBjMCwKLQkweDQ3YTMsIDB4NjE4NiwgMHg4ZGZmLCAweDAwN2MsIDB4YTAxNiwgMHgxMDc4LCAweDQ4MTAsIDB4MDBjMCwKLQkweDQ3YWIsIDB4MjAxMSwgMHgwMDAxLCAweDEwNzgsIDB4NDg2MywgMHgwMGMwLCAweDQ3YjEsIDB4YTI5NSwKLQkweDAwMDIsIDB4MDA3YywgMHgxMDc4LCAweDQ4OWIsIDB4MDA0MCwgMHg0N2JhLCAweDEwNzgsIDB4OGRkYSwKLQkweDAwNzgsIDB4NDdiYywgMHhhMDg1LCAweDAwMDEsIDB4MDA3YywgMHgxMDc4LCAweDQ4OWIsIDB4MDA0MCwKLQkweDQ3YzUsIDB4MTA3OCwgMHg4ZDcyLCAweDAwNzgsIDB4NDdjNywgMHhhMDg1LCAweDAwMDEsIDB4MDA3YywKLQkweDEwNzgsIDB4NDg5YiwgMHgwMDQwLCAweDQ3ZDAsIDB4MTA3OCwgMHg4ZGJjLCAweDAwNzgsIDB4NDdkMiwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDEwNzgsIDB4NDg5YiwgMHgwMDQwLCAweDQ3ZGIsIDB4MTA3OCwKLQkweDhkOGUsIDB4MDA3OCwgMHg0N2RkLCAweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDEwNzgsIDB4NDg5YiwKLQkweDAwNDAsIDB4NDdlNiwgMHgxMDc4LCAweDhkZjgsIDB4MDA3OCwgMHg0N2U4LCAweGEwODUsIDB4MDAwMSwKLQkweDAwN2MsIDB4MTI3ZSwgMHgwMDdlLCAweDBkN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwODAsIDB4YTA2ZCwKLQkweDAwNDAsIDB4NDgwOCwgMHg2ODAwLCAweDAwN2UsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MTA3OCwgMHg4ZjhkLCAweDAwN2UsIDB4NjAwMCwgMHhkMGZjLCAweDAwNDAsIDB4NDgwMiwKLQkweDEwNzgsIDB4YTRmZCwgMHgwMDdmLCAweDEwNzgsIDB4NGE3MywgMHgwMDdmLCAweDAwNzgsIDB4NDdlZiwKLQkweDYwODMsIDB4MDAwMCwgMHg2MDg3LCAweDAwMDAsIDB4MGQ3ZiwgMHgwMDdmLCAweDEyN2YsIDB4MDA3YywKLQkweDYwYTQsIDB4YTAwZCwgMHgwMGMwLCAweDQ4MTcsIDB4YTA4NSwgMHgwMDAxLCAweDAwN2MsIDB4MGU3ZSwKLQkweDIxNzAsIDB4NzAwMCwgMHhhMDA1LCAweDAwYzAsIDB4NDgyYywgMHgyMGE5LCAweDAwMTAsIDB4YWU4OCwKLQkweDAwMDQsIDB4MjEwNCwgMHhhNjA2LCAweDAwNDAsIDB4NDgyYywgMHg4MTA4LCAweDAwZjAsIDB4NDgyMSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDQ4MmQsIDB4YTAwNiwgMHgwZTdmLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwYTQsIDB4YTA2ZCwgMHgwMGMwLCAweDQ4M2QsIDB4MTA3OCwKLQkweDEzOGIsIDB4MDA0MCwgMHg0ODRmLCAweDJkMDAsIDB4NjBhNiwgMHg2ODAzLCAweDAwMDEsIDB4NjgwNywKLQkweDAwMDAsIDB4YWQ4OCwgMHgwMDA0LCAweDIwYTksIDB4MDAxMCwgMHgyMDBiLCAweGZmZmYsIDB4ODEwOCwKLQkweDAwZjAsIDB4NDg0NSwgMHhhMDg1LCAweDAwMDEsIDB4MTI3ZiwgMHgwZDdmLCAweDAwN2MsIDB4YTAwNiwKLQkweDAwNzgsIDB4NDg0YywgMHgwZDdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwYTQsIDB4YTA2ZCwKLQkweDAwNDAsIDB4NDg2MCwgMHg2MGE3LCAweDAwMDAsIDB4MTA3OCwgMHgxM2E0LCAweGEwODUsIDB4MDAwMSwKLQkweDEyN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDYwYTgsIDB4YTAwZCwgMHgwMGMwLCAweDQ4NmEsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDA3YywgMHgwZTdlLCAweDIxNzAsIDB4NzA1MCwgMHhhMDA1LCAweDAwYzAsIDB4NDg3ZCwKLQkweDIwYTksIDB4MDAxMCwgMHhhZTg4LCAweDAwMTgsIDB4MjEwNCwgMHhhNjA2LCAweDAwNDAsIDB4NDg3ZCwKLQkweDgxMDgsIDB4MDBmMCwgMHg0ODc0LCAweGEwODUsIDB4MDAwMSwgMHgwZTdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgxMDc4LCAweDQ4NjMsIDB4MDBjMCwgMHg0ODk5LCAweDIwMGIsIDB4ZmZmZiwKLQkweDBkN2UsIDB4NjBhOCwgMHgyMDY4LCAweDY4NTQsIDB4YTA4YSwgMHgwMDAyLCAweDAwNDgsIDB4NDg5NCwKLQkweDgwMDEsIDB4Njg1NiwgMHgwMDc4LCAweDQ4OTgsIDB4MTA3OCwgMHgxM2E0LCAweDYwYWIsIDB4MDAwMCwKLQkweDBkN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDYwOWMsIDB4ZDBhNCwgMHgwMDdjLCAweDBmN2UsIDB4NzFiMCwKLQkweDgxZmYsIDB4MDBjMCwgMHg0OGI5LCAweDcxY2MsIDB4ZDE5YywgMHgwMDQwLCAweDQ4YjksIDB4MjAwMSwKLQkweDAwN2UsIDB4YTA4MCwgMHhhODM1LCAweDIwMDQsIDB4YTA3ZCwgMHgwMDQwLCAweDQ4YjksIDB4NzgwNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHg0OGI5LCAweDc4MDAsIDB4YzBlZCwKLQkweDc4MDIsIDB4MjA3OSwgMHhhNzUyLCAweDc4MDQsIDB4ZDBhNCwgMHgwMDQwLCAweDQ4ZGYsIDB4MTU3ZSwKLQkweDBjN2UsIDB4MjBhOSwgMHgwMDdmLCAweDIwMDksIDB4MDAwMCwgMHgwMTdlLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4NDhkOSwgMHg2MDA0LCAweGEwODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwOTYsIDB4MDAwNCwKLQkweDAwNDAsIDB4NDhkNiwgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHg0OGQ5LCAweDYwMDAsIDB4YzBlZCwKLQkweDYwMDIsIDB4MDE3ZiwgMHg4MTA4LCAweDAwZjAsIDB4NDhjNSwgMHgwYzdmLCAweDE1N2YsIDB4MTA3OCwKLQkweDQ5NjcsIDB4MDA0MCwgMHg0OGU4LCAweDIwMDEsIDB4YTlhMSwgMHgyMDBjLCAweDAwNzgsIDB4NDhmMCwKLQkweDIwNzksIDB4YTc1MiwgMHg3ODA0LCAweGQwYTQsIDB4MDA0MCwgMHg0OGY0LCAweDIwMDksIDB4MDdkMCwKLQkweDIwMTEsIDB4NDhmNiwgMHgxMDc4LCAweDVhZGQsIDB4MGY3ZiwgMHgwMDdjLCAweDIwMTEsIDB4NDhmNiwKLQkweDEwNzgsIDB4NWE0NSwgMHgxMDc4LCAweDQ5NjcsIDB4MDA0MCwgMHg0OTFlLCAweDIwMDEsIDB4YThiMywKLQkweDIwMDQsIDB4YTA4MCwgMHgwMDAwLCAweDIwMGMsIDB4YzFlYywgMHgyMTAyLCAweDIwMDEsIDB4YTc1MywKLQkweDIwMDQsIDB4ZDBhNCwgMHgwMDQwLCAweDQ5MTIsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NDhmNiwKLQkweDEwNzgsIDB4NWFkZCwgMHgwZTdlLCAweDIwNzEsIDB4YTcwMCwgMHg3MDZmLCAweDAwMDAsIDB4NzA3MywKLQkweDAwMDAsIDB4MTA3OCwgMHgyNjc3LCAweDBlN2YsIDB4MDA3OCwgMHg0OTU2LCAweDE1N2UsIDB4MGM3ZSwKLQkweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MDE3ZSwgMHgxMDc4LCAweDQ1YzQsIDB4MDBjMCwKLQkweDQ5NTAsIDB4NjAwMCwgMHhkMGVjLCAweDAwNDAsIDB4NDk1MCwgMHgwNDdlLCAweDYyYTAsIDB4YTI5NCwKLQkweDAwZmYsIDB4ODIyNywgMHhhMDA2LCAweDIwMDksIDB4MDAyOSwgMHgxMDc4LCAweGEyMmQsIDB4NjAwMCwKLQkweGMwZTUsIDB4YzBlYywgMHg2MDAyLCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODUsIDB4MDcwMCwKLQkweDYwMDYsIDB4MjAxOSwgMHgwMDI5LCAweDEwNzgsIDB4NWYwMSwgMHgwNzdlLCAweDIwMzksIDB4MDAwMCwKLQkweDEwNzgsIDB4NWUwYSwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwgMHg5ZjliLCAweDA3N2YsIDB4MDQ3ZiwKLQkweDAxN2YsIDB4ODEwOCwgMHgwMGYwLCAweDQ5MjQsIDB4MGM3ZiwgMHgxNTdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDYwMTgsIDB4MjA2MCwgMHg2MDAwLCAweGMwZWMsIDB4NjAwMiwgMHgwYzdmLCAweDAwN2MsIDB4NzgxOCwKLQkweDIwMDQsIDB4ZDBhYywgMHgwMDdjLCAweDc4MTgsIDB4MjAwNCwgMHhkMGJjLCAweDAwN2MsIDB4MGY3ZSwKLQkweDIwMDEsIDB4YThiMywgMHgyMDA0LCAweGEwN2QsIDB4MDA0MCwgMHg0OTcwLCAweDc4MDAsIDB4ZDBlYywKLQkweDBmN2YsIDB4MDA3YywgMHgxMjdlLCAweDAyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDAwN2UsIDB4NjJhMCwKLQkweGEyOTAsIDB4YTgzNSwgMHgyMjA0LCAweGFjMDYsIDB4MTBjMCwgMHgxMzMyLCAweDAwN2YsIDB4NjIwMCwKLQkweGEwMDUsIDB4MDA0MCwgMHg0OTg2LCAweGMyZmQsIDB4MDA3OCwgMHg0OTg3LCAweGMyZmMsIDB4NjIwMiwKLQkweDAyN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDIwMTEsIDB4YTczMywgMHgyMjA0LCAweGQwY2MsIDB4MDA0MCwKLQkweDQ5OTgsIDB4MjAwMSwgMHhhOTlmLCAweDIwMGMsIDB4MjAxMSwgMHg0OTk5LCAweDEwNzgsIDB4NWFkZCwKLQkweDAwN2MsIDB4MjAxMSwgMHg0OTk5LCAweDEwNzgsIDB4NWE0NSwgMHgyMDExLCAweGE3MzMsIDB4MjIwNCwKLQkweGMwY2MsIDB4MjAxMiwgMHgwMDdjLCAweDIwNzEsIDB4YTgxNCwgMHg3MDAzLCAweDAwMDEsIDB4NzAwNywKLQkweDAwMDAsIDB4NzAxMywgMHgwMDAwLCAweDcwMTcsIDB4MDAwMCwgMHg3MDFiLCAweDAwMDAsIDB4NzAxZiwKLQkweDAwMDAsIDB4NzAwYiwgMHgwMDAwLCAweDcwNGIsIDB4MDAwMSwgMHg3MDRmLCAweDAwMDAsIDB4NzA1YiwKLQkweDAwMjAsIDB4NzA1ZiwgMHgwMDQwLCAweDcwN2YsIDB4MDAwMCwgMHgyMDcxLCAweGE5N2QsIDB4NzAwMywKLQkweGE4MTQsIDB4NzAwNywgMHgwMDAwLCAweDcwMGIsIDB4MDAwMCwgMHg3MDBmLCAweGE5NWQsIDB4NzAxMywKLQkweDAwMjAsIDB4NzAxNywgMHgwMDQwLCAweDcwMzcsIDB4MDAwMCwgMHgwMDdjLCAweDAxN2UsIDB4MGU3ZSwKLQkweDIwNzEsIDB4YTkzNSwgMHhhMDBlLCAweDcxODYsIDB4NzE4YSwgMHg3MDk3LCAweDAwMDEsIDB4MjAwMSwKLQkweGE3NTMsIDB4MjAwNCwgMHhkMGZjLCAweDAwYzAsIDB4NDllOCwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGEwMGUsIDB4ZDA5YywgMHgwMDQwLCAweDQ5ZTUsIDB4ODEwOCwgMHg3MTAyLCAweDAwNzgsIDB4NGEzYiwKLQkweDIwMDEsIDB4YTc3MiwgMHgyMDBjLCAweGExODQsIDB4MDAwZiwgMHgyMDA5LCAweGE3NzMsIDB4MjEwYywKLQkweDAwNzksIDB4NDlmMiwgMHg0OWRkLCAweDRhMTMsIDB4NGExYiwgMHg0YTI2LCAweDRhMmMsIDB4NDlkZCwKLQkweDQ5ZGQsIDB4NDlkZCwgMHg0YTAyLCAweDQ5ZGQsIDB4NDlkZCwgMHg0OWRkLCAweDQ5ZGQsIDB4NDlkZCwKLQkweDQ5ZGQsIDB4NDlkZCwgMHg3MDAzLCAweDAwMDQsIDB4MTM3ZSwgMHgxNDdlLCAweDE1N2UsIDB4MjA5OSwKLQkweGE3NzYsIDB4MjBhMSwgMHhhOTg2LCAweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDE1N2YsIDB4MTQ3ZiwKLQkweDEzN2YsIDB4MDA3OCwgMHg0YTNiLCAweDcwOGYsIDB4MDAwNSwgMHg3MDA3LCAweDAxMjIsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDA3OCwgMHg0YTIxLCAweDcwOGYsIDB4MDAwMiwgMHg3MDA3LCAweDAxMjEsIDB4MjAwMSwKLQkweDAwMDMsIDB4NzAwMiwgMHg3MDk3LCAweDAwMDEsIDB4MDA3OCwgMHg0YTM4LCAweDcwMDcsIDB4MDEyMiwKLQkweDIwMDEsIDB4MDAwMiwgMHgwMDc4LCAweDRhMzAsIDB4NzAwNywgMHgwMTIxLCAweDIwMDEsIDB4MDAwMywKLQkweDcwMDIsIDB4YTAwNiwgMHg3MDk2LCAweDcwOGUsIDB4YTE4NCwgMHhmZjAwLCAweDgwMDcsIDB4NzA5YSwKLQkweGExODQsIDB4MDBmZiwgMHg3MDkyLCAweDBlN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwKLQkweGE4MTQsIDB4Njg0YywgMHhhMDA1LCAweDAwYzAsIDB4NGE0YywgMHg3MDI4LCAweGMwODUsIDB4NzAyYSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDRhNzEsIDB4NmE2MCwgMHg3MjM2LCAweDZiNjQsIDB4NzMzYSwKLQkweDY4NjgsIDB4NzAzZSwgMHg3MDc2LCAweDY4NmMsIDB4NzA0MiwgMHg3MDdhLCAweDY4NGMsIDB4NzAyZSwKLQkweDY4NDQsIDB4NzAzMiwgMHgyMDA5LCAweDAwMGQsIDB4MjAwYSwgMHg3MDBiLCAweDAwMDAsIDB4ODAwNywKLQkweDgwMDYsIDB4ODAwNiwgMHhhMDhjLCAweDAwM2YsIDB4YTA4NCwgMHhmZmMwLCAweGEyMTAsIDB4MjEwMCwKLQkweGEzMTksIDB4NzI2ZSwgMHg3MzcyLCAweDcwMjgsIDB4YzA4NCwgMHg3MDJhLCAweDcwMDcsIDB4MDAwMSwKLQkweGEwMDYsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MDI3ZSwgMHg2ODM4LCAweGQwZmMsIDB4MDBjMCwKLQkweDRhYzksIDB4NjgwNCwgMHhhMDBkLCAweDAwNDAsIDB4NGE4ZiwgMHgwZDdlLCAweDIwNzEsIDB4YTcwMCwKLQkweGEwMTYsIDB4NzAyYywgMHgyMTY4LCAweDY5MDQsIDB4MjA2YSwgMHg4MjEwLCAweDJkMDAsIDB4ODFmZiwKLQkweDAwYzAsIDB4NGE4MiwgMHg3MDJlLCAweDcwYWMsIDB4YTIwMCwgMHg3MGFlLCAweDBkN2YsIDB4MjA3MSwKLQkweGE4MTQsIDB4NzAxYywgMHhhMDA1LCAweDAwYzAsIDB4NGFkYiwgMHgwMDY4LCAweDRhZDksIDB4MjA3MSwKLQkweGE5MzUsIDB4NzIwMCwgMHg4MmZmLCAweDAwNDAsIDB4NGFkOSwgMHg2OTM0LCAweGExODYsIDB4MDEwMywKLQkweDAwYzAsIDB4NGFlYywgMHg2OTQ4LCAweDY4NDQsIDB4YTEwNSwgMHgwMGMwLCAweDRhY2MsIDB4MjAwOSwKLQkweDgwMjAsIDB4MjIwMCwgMHgwMDc5LCAweDRhYWMsIDB4NGFkOSwgMHg0YWIxLCAweDRiMDksIDB4NGIxNywKLQkweDRhZDksIDB4MjA3MSwgMHgwMDAwLCAweDcwMTgsIDB4ZDA4NCwgMHgwMGMwLCAweDRhZDksIDB4NzEyMiwKLQkweDY4M2MsIDB4NzAyNiwgMHg2ODQwLCAweDcwMmEsIDB4NzAxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwKLQkweDIwNzEsIDB4YTcwMCwgMHg3MDJjLCAweDIwNmEsIDB4MmQwMCwgMHg3MDJlLCAweDcwYWMsIDB4ODAwMCwKLQkweDcwYWUsIDB4MDI3ZiwgMHgwZTdmLCAweDAwN2MsIDB4Njg0NCwgMHhhMDg2LCAweDAxMDAsIDB4MDBjMCwKLQkweDRhZDksIDB4Njg2OCwgMHhhMDA1LCAweDAwYzAsIDB4NGFkOSwgMHgyMDA5LCAweDgwMjAsIDB4MDA3OCwKLQkweDRhYTksIDB4MjA3MSwgMHhhODE0LCAweDJkMDgsIDB4MjA2YiwgMHgwMDAwLCAweDcwMTAsIDB4ODAwMCwKLQkweDcwMTIsIDB4NzAxOCwgMHhhMDZkLCAweDcxMWEsIDB4MDA0MCwgMHg0YWU5LCAweDY5MDIsIDB4MDA3OCwKLQkweDRhZWEsIDB4NzExZSwgMHgwMDc4LCAweDRhYzksIDB4YTE4YywgMHgwMGZmLCAweGExODYsIDB4MDAxNywKLQkweDAwNDAsIDB4NGFmYSwgMHhhMTg2LCAweDAwMWUsIDB4MDA0MCwgMHg0YWZhLCAweGExOGUsIDB4MDAxZiwKLQkweDAwYzAsIDB4NGFkOSwgMHg2ODRjLCAweGQwY2MsIDB4MDA0MCwgMHg0YWQ5LCAweDY4NTAsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDAxLCAweDAwYzAsIDB4NGFkOSwgMHgyMDA5LCAweDgwMjEsIDB4MDA3OCwKLQkweDRhYTksIDB4NzA4NCwgMHg4MDA4LCAweGEwOTIsIDB4MDAxZSwgMHgwMGM4LCAweDRhZDksIDB4NzE4NiwKLQkweGFlOTAsIDB4MDAwMywgMHhhMjEwLCAweDY4M2MsIDB4MjAxMiwgMHgwMDc4LCAweDRiMjcsIDB4NzA4NCwKLQkweDgwMDgsIDB4YTA5MiwgMHgwMDBmLCAweDAwYzgsIDB4NGFkOSwgMHg3MTg2LCAweGFlOTAsIDB4MDAwMywKLQkweDgwMDMsIDB4YTIxMCwgMHg2ODNjLCAweDIwMTIsIDB4ODIxMCwgMHg2ODQwLCAweDIwMTIsIDB4NzA4OCwKLQkweGExMGEsIDB4MDA0OCwgMHg0YWMwLCAweDcxOGMsIDB4NzA4NCwgMHhhMTBhLCAweDAwNDgsIDB4NGFjMCwKLQkweDIwNzEsIDB4MDAwMCwgMHg3MDE4LCAweGQwODQsIDB4MDBjMCwgMHg0YWMwLCAweDIwNzEsIDB4YTkzNSwKLQkweDcwMDAsIDB4YTA4NiwgMHgwMDAyLCAweDAwYzAsIDB4NGI0NywgMHgxMDc4LCAweDRkYzMsIDB4MjA3MSwKLQkweDAwMDAsIDB4NzAxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHgwMDc4LCAweDRhYzAsIDB4MTA3OCwKLQkweDRkZWUsIDB4MjA3MSwgMHgwMDAwLCAweDcwMWIsIDB4MDAwMSwgMHgyMDkxLCAweDQwODAsIDB4MDA3OCwKLQkweDRhYzAsIDB4MDA3ZSwgMHg2ODRjLCAweDAwN2UsIDB4NjgzNywgMHgwMTAzLCAweDIwYTksIDB4MDAxYywKLQkweGFkODAsIDB4MDAxMSwgMHgyMGEwLCAweDIwMDEsIDB4MDAwMCwgMHg0MGE0LCAweDAwN2YsIDB4YTA4NCwKLQkweDAwZmYsIDB4Njg0ZSwgMHgwMDdmLCAweDY4NGEsIDB4Njk1MiwgMHgwMDdjLCAweDIwNzEsIDB4YTgxNCwKLQkweDcwMDQsIDB4MDA3OSwgMHg0YjZiLCAweDRiNzUsIDB4NGI4NiwgMHg0ZDk0LCAweDRkOTUsIDB4NGRiYywKLQkweDRkYzIsIDB4NGI3NiwgMHg0ZDgyLCAweDRkMjMsIDB4NGRhNSwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDA2OCwgMHg0Yjg1LCAweDIwMDksIDB4MDAwZCwgMHg3MDMwLCAweDIwMGEsIDB4MjA5MSwKLQkweDQwODAsIDB4NzAwNywgMHgwMDAxLCAweDcwMGIsIDB4MDAwMCwgMHgxMjdmLCAweDIwNjksIDB4YTljNCwKLQkweDY4NDQsIDB4YTAwNSwgMHgwMDUwLCAweDRiYWUsIDB4MDBjMCwgMHg0YmFlLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA2OSwgMHgwMDAwLCAweDY5MzQsIDB4MjAwMSwgMHhhODIwLCAweDIwMDQsIDB4YTEwYSwKLQkweDAwNDAsIDB4NGJhOSwgMHgwMDY4LCAweDRiYWQsIDB4MjA2OSwgMHgwMDAwLCAweDY4MTgsIDB4ZDA4NCwKLQkweDAwYzAsIDB4NGJhZCwgMHgyMDA5LCAweDgwNDAsIDB4NjkyMiwgMHg2ODFiLCAweDAwMDEsIDB4MjA5MSwKLQkweDQwODAsIDB4MjA2OSwgMHhhOWM0LCAweDY4NDcsIDB4ZmZmZiwgMHgxMjdmLCAweDIwNjksIDB4YTcwMCwKLQkweDY4NDgsIDB4Njk2NCwgMHhhMTAyLCAweDIwNjksIDB4YTkzNSwgMHg2ODhhLCAweDY5ODQsIDB4NzAxYywKLQkweGEwNmQsIDB4MDA0MCwgMHg0YmMwLCAweDgxZmYsIDB4MDA0MCwgMHg0YzA4LCAweDAwNzgsIDB4NGJkNiwKLQkweDgxZmYsIDB4MDA0MCwgMHg0Y2RhLCAweDIwNzEsIDB4YTkzNSwgMHg3MTg0LCAweDcwODgsIDB4YTEwYSwKLQkweDAwYzgsIDB4NGJkNiwgMHg3MTkwLCAweDIwNzEsIDB4YTljNCwgMHg3MDQwLCAweGEwMDUsIDB4MDA0MCwKLQkweDRiZDYsIDB4MDBkMCwgMHg0Y2RhLCAweDcxNDIsIDB4MDA3OCwgMHg0Y2RhLCAweDIwNzEsIDB4YTkzNSwKLQkweDcxOGMsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NzA4NCwgMHhhMTBhLCAweDAwNDgsIDB4NGNmNywKLQkweDAwNjgsIDB4NGM4YywgMHgyMDcxLCAweDAwMDAsIDB4NzAxOCwgMHhkMDg0LCAweDAwYzAsIDB4NGM4YywKLQkweDIwMDEsIDB4ZmZmZiwgMHgyMDcxLCAweGE5YzQsIDB4NzA0MiwgMHgyMDcxLCAweGE5MzUsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwMiwgMHgwMGMwLCAweDRiZmUsIDB4MTA3OCwgMHg0ZGMzLCAweDIwNzEsIDB4MDAwMCwKLQkweDcwMWIsIDB4MDAwMSwgMHgyMDkxLCAweDQwODAsIDB4MDA3OCwgMHg0YzhjLCAweDEwNzgsIDB4NGRlZSwKLQkweDIwNzEsIDB4MDAwMCwgMHg3MDFiLCAweDAwMDEsIDB4MjA5MSwgMHg0MDgwLCAweDAwNzgsIDB4NGM4YywKLQkweDIwNzEsIDB4YTkzNSwgMHg3MDAwLCAweGEwMDUsIDB4MDA0MCwgMHg0Y2I5LCAweDY5MzQsIDB4YTE4NiwKLQkweDAxMDMsIDB4MDBjMCwgMHg0YzhmLCAweDY4NGMsIDB4ZDBiYywgMHgwMGMwLCAweDRjYjksIDB4Njk0OCwKLQkweDY4NDQsIDB4YTEwNSwgMHgwMGMwLCAweDRjYWMsIDB4MjAwOSwgMHg4MDIwLCAweDIwNzEsIDB4YTkzNSwKLQkweDcwMDAsIDB4MDA3OSwgMHg0YzIzLCAweDRjYjksIDB4NGM3MSwgMHg0YzQ5LCAweDRjNWIsIDB4NGMyOCwKLQkweDEzN2UsIDB4MTQ3ZSwgMHgxNTdlLCAweDIwOTksIDB4YTc3NiwgMHgyMGExLCAweGE5ODYsIDB4MjBhOSwKLQkweDAwMDQsIDB4NTNhMywgMHgxNTdmLCAweDE0N2YsIDB4MTM3ZiwgMHgyMDcxLCAweGE5N2QsIDB4YWQ4MCwKLQkweDAwMGYsIDB4NzAwZSwgMHg3MDEzLCAweDAwMDIsIDB4NzAwNywgMHgwMDAyLCAweDcwMGIsIDB4MDAwMCwKLQkweDJlMTAsIDB4MTA3OCwgMHgxM2RiLCAweDIwNzEsIDB4YTgxNCwgMHg3MDA3LCAweDAwMDksIDB4MDA3OCwKLQkweDRjZGEsIDB4NzA4NCwgMHg4MDA4LCAweGEwOTIsIDB4MDAxZSwgMHgwMGM4LCAweDRjZGEsIDB4YWU5MCwKLQkweDAwMDMsIDB4YTIxMCwgMHg2ODNjLCAweDIwMTIsIDB4NzE4NiwgMHgyMDcxLCAweGE4MTQsIDB4MTA3OCwKLQkweDRlNGMsIDB4MDA3OCwgMHg0Y2RhLCAweDcwODQsIDB4ODAwOCwgMHhhMDkyLCAweDAwMGYsIDB4MDBjOCwKLQkweDRjZGEsIDB4YWU5MCwgMHgwMDAzLCAweDgwMDMsIDB4YTIxMCwgMHg2ODNjLCAweDIwMTIsIDB4ODIxMCwKLQkweDY4NDAsIDB4MjAxMiwgMHg3MTg2LCAweDIwNzEsIDB4YTgxNCwgMHgxMDc4LCAweDRlNGMsIDB4MDA3OCwKLQkweDRjZGEsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MDA2OCwgMHg0YzhjLCAweDIwNzEsIDB4MDAwMCwKLQkweDcwMTgsIDB4ZDA4NCwgMHgwMGMwLCAweDRjOGMsIDB4NzEyMiwgMHg2ODNjLCAweDcwMjYsIDB4Njg0MCwKLQkweDcwMmEsIDB4NzAxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHgxMjdmLCAweDIwNzEsIDB4YTgxNCwKLQkweDEwNzgsIDB4NGU0YywgMHgwMDc4LCAweDRjZGEsIDB4MTI3ZiwgMHgwMDc4LCAweDRjZGEsIDB4YTE4YywKLQkweDAwZmYsIDB4YTE4NiwgMHgwMDE3LCAweDAwNDAsIDB4NGM5ZCwgMHhhMTg2LCAweDAwMWUsIDB4MDA0MCwKLQkweDRjOWQsIDB4YTE4ZSwgMHgwMDFmLCAweDAwYzAsIDB4NGNiOSwgMHg2ODRjLCAweGQwY2MsIDB4MDA0MCwKLQkweDRjYjksIDB4Njg1MCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwgMHgwMDAxLCAweDAwYzAsIDB4NGNiOSwKLQkweDIwMDksIDB4ODAyMSwgMHgwMDc4LCAweDRjMWUsIDB4Njg0NCwgMHhhMDg2LCAweDAxMDAsIDB4MDBjMCwKLQkweDRjYjksIDB4Njg2OCwgMHhhMDA1LCAweDAwYzAsIDB4NGNiOSwgMHgyMDA5LCAweDgwMjAsIDB4MDA3OCwKLQkweDRjMWUsIDB4MjA3MSwgMHhhODE0LCAweDEwNzgsIDB4NGU2MCwgMHgwMDQwLCAweDRjZGEsIDB4MjA3MSwKLQkweGE4MTQsIDB4NzAwZiwgMHgwMDAxLCAweDY5MzQsIDB4YTE4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwMywKLQkweDAwYzAsIDB4NGNkMSwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwgMHg4MTAxLCAweDAwNDAsIDB4NGNkMSwKLQkweDcxMGUsIDB4NzAwNywgMHgwMDAzLCAweDEwNzgsIDB4NGU4MCwgMHg3MDUwLCAweGEwODYsIDB4MDEwMCwKLQkweDAwNDAsIDB4NGQ5NSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE4MTQsIDB4NzAwOCwKLQkweGEwODYsIDB4MDAwMSwgMHgwMGMwLCAweDRjZjUsIDB4MDA2OCwgMHg0Y2Y1LCAweDIwMDksIDB4MDAwZCwKLQkweDcwMzAsIDB4MjAwYSwgMHgyMDkxLCAweDQwODAsIDB4NzAwYiwgMHgwMDAwLCAweDcwMDQsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDBjMCwgMHg0Y2Y1LCAweDcwMDcsIDB4MDAwMSwgMHgxMjdmLCAweDAwN2MsIDB4MjA3MSwKLQkweGE4MTQsIDB4MTA3OCwgMHg0ZTYwLCAweDAwNDAsIDB4NGQyMCwgMHgyMDcxLCAweGE5MzUsIDB4NzA4NCwKLQkweDcwMGEsIDB4MjBhOSwgMHgwMDIwLCAweDIwOTksIDB4YTkzNiwgMHgyMGExLCAweGE5NWQsIDB4NTNhMywKLQkweDcwODcsIDB4MDAwMCwgMHgyMDcxLCAweGE4MTQsIDB4MjA2OSwgMHhhOTdkLCAweDcwNmMsIDB4NjgyNiwKLQkweDcwNzAsIDB4NjgyYSwgMHg3MDc0LCAweDY4MmUsIDB4NzA3OCwgMHg2ODMyLCAweDJkMTAsIDB4MTA3OCwKLQkweDEzZGIsIDB4NzAwNywgMHgwMDA4LCAweDIwMDEsIDB4ZmZmZiwgMHgyMDcxLCAweGE5YzQsIDB4NzA0MiwKLQkweDEyN2YsIDB4MDA3OCwgMHg0Y2RhLCAweDIwNjksIDB4YTk3ZCwgMHg2ODA4LCAweGEwOGUsIDB4MDAwMCwKLQkweDAwNDAsIDB4NGQ4MSwgMHhhMDhlLCAweDAyMDAsIDB4MDA0MCwgMHg0ZDdmLCAweGEwOGUsIDB4MDEwMCwKLQkweDAwYzAsIDB4NGQ4MSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgwMDY4LCAweDRkN2MsIDB4MjA2OSwKLQkweDAwMDAsIDB4NjgxOCwgMHhkMDg0LCAweDAwYzAsIDB4NGQ3YywgMHg3MDJjLCAweDcxMzAsIDB4ODEwOCwKLQkweGExMDIsIDB4MDA0OCwgMHg0ZDRhLCAweGEwMGUsIDB4NzAzNCwgMHg3MDZlLCAweDcwMzgsIDB4NzA3MiwKLQkweDAwNzgsIDB4NGQ1NCwgMHg3MDZjLCAweGEwODAsIDB4MDA0MCwgMHg3MDZlLCAweDAwYzgsIDB4NGQ1NCwKLQkweDcwNzAsIDB4YTA4MSwgMHgwMDAwLCAweDcwNzIsIDB4NzEzMiwgMHg2OTM2LCAweDcwMGIsIDB4MDAwMCwKLQkweDIwMDEsIDB4YTk1YSwgMHgyMDA0LCAweGEwMDUsIDB4MDBjMCwgMHg0ZDczLCAweDY5MzQsIDB4MjA2OSwKLQkweGE5MzUsIDB4Njg5YywgMHg2OTllLCAweDIwNjksIDB4YTljNCwgMHhhMTAyLCAweDAwYzAsIDB4NGQ2YywKLQkweDY4NDQsIDB4YTAwNSwgMHgwMGQwLCAweDRkN2EsIDB4MjAwMSwgMHhhOTViLCAweDIwMGMsIDB4ODEwZCwKLQkweDY5NDYsIDB4MDA3OCwgMHg0ZDdhLCAweDIwMDksIDB4ODA0MCwgMHg2OTIyLCAweDY4MWIsIDB4MDAwMSwKLQkweDIwOTEsIDB4NDA4MCwgMHg3MDA3LCAweDAwMDEsIDB4MTI3ZiwgMHgwMDc4LCAweDRkODEsIDB4NzAwNywKLQkweDAwMDUsIDB4MDA3YywgMHg3MDFjLCAweGEwNmQsIDB4MDA0MCwgMHg0ZDkzLCAweDEwNzgsIDB4NGU2MCwKLQkweDAwNDAsIDB4NGQ5MywgMHg3MDA3LCAweDAwMDMsIDB4MTA3OCwgMHg0ZTgwLCAweDcwNTAsIDB4YTA4NiwKLQkweDAxMDAsIDB4MDA0MCwgMHg0ZDk1LCAweDAwN2MsIDB4MDA3YywgMHg3MDUwLCAweGEwOWUsIDB4MDEwMCwKLQkweDAwYzAsIDB4NGQ5ZSwgMHg3MDA3LCAweDAwMDQsIDB4MDA3OCwgMHg0ZGJjLCAweGEwODYsIDB4MDIwMCwKLQkweDAwYzAsIDB4NGRhNCwgMHg3MDA3LCAweDAwMDUsIDB4MDA3YywgMHgyMDAxLCAweGE5N2YsIDB4MjAwNCwKLQkweGEwOGUsIDB4MDEwMCwgMHgwMGMwLCAweDRkYjEsIDB4NzAwNywgMHgwMDAxLCAweDEwNzgsIDB4NGU0YywKLQkweDAwN2MsIDB4YTA4ZSwgMHgwMDAwLCAweDAwNDAsIDB4NGRiMCwgMHhhMDhlLCAweDAyMDAsIDB4MDBjMCwKLQkweDRkYjAsIDB4NzAwNywgMHgwMDA1LCAweDAwN2MsIDB4MTA3OCwgMHg0ZTE2LCAweDcwMDYsIDB4MTA3OCwKLQkweDRlNGMsIDB4MDA3YywgMHgwMDdjLCAweDBlN2UsIDB4MTU3ZSwgMHgyMDcxLCAweGE5MzUsIDB4NzE4NCwKLQkweDgxZmYsIDB4MDA0MCwgMHg0ZGViLCAweGEwMDYsIDB4NzA4NiwgMHhhZTgwLCAweDAwMDMsIDB4MjA3MSwKLQkweDAwMDAsIDB4MjFhOCwgMHgyMDE0LCAweDcyMjYsIDB4ODAwMCwgMHgwMDcwLCAweDRkZTgsIDB4MjAxNCwKLQkweDcyMmEsIDB4ODAwMCwgMHgwMDcwLCAweDRkZTgsIDB4MjAxNCwgMHg3MjJlLCAweDgwMDAsIDB4MDA3MCwKLQkweDRkZTgsIDB4MjAxNCwgMHg3MjNhLCAweDgwMDAsIDB4MDA3MCwgMHg0ZGU4LCAweDIwMTQsIDB4NzIzZSwKLQkweGExODAsIDB4ODAzMCwgMHg3MDIyLCAweDE1N2YsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MTU3ZSwKLQkweDIwNzEsIDB4YTkzNSwgMHg3MTg0LCAweDgxZmYsIDB4MDA0MCwgMHg0ZTEzLCAweGEwMDYsIDB4NzA4NiwKLQkweGFlODAsIDB4MDAwMywgMHgyMDcxLCAweDAwMDAsIDB4MjFhOCwgMHgyMDE0LCAweDcyMjYsIDB4ODAwMCwKLQkweDIwMTQsIDB4NzIyYSwgMHg4MDAwLCAweDAwNzAsIDB4NGUwYywgMHgyMDE0LCAweDcyM2EsIDB4ODAwMCwKLQkweDIwMTQsIDB4NzIzZSwgMHgwMDc4LCAweDRlMTAsIDB4MjAwMSwgMHg4MDIwLCAweDAwNzgsIDB4NGUxMiwKLQkweDIwMDEsIDB4ODA0MiwgMHg3MDIyLCAweDE1N2YsIDB4MGU3ZiwgMHgwMDdjLCAweDcwMmMsIDB4NzEzMCwKLQkweDgxMDgsIDB4YTEwMiwgMHgwMDQ4LCAweDRlMjMsIDB4YTAwZSwgMHg3MDM0LCAweDcwNmUsIDB4NzAzOCwKLQkweDcwNzIsIDB4MDA3OCwgMHg0ZTJkLCAweDcwNmMsIDB4YTA4MCwgMHgwMDQwLCAweDcwNmUsIDB4MDBjOCwKLQkweDRlMmQsIDB4NzA3MCwgMHhhMDgxLCAweDAwMDAsIDB4NzA3MiwgMHg3MTMyLCAweDcwMGMsIDB4ODAwMSwKLQkweDcwMGUsIDB4MDBjMCwgMHg0ZTQzLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDAwNjgsIDB4NGU0NiwKLQkweDIwMDEsIDB4MDAwZCwgMHgyMTAyLCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwMDEsIDB4NzAwYiwKLQkweDAwMDAsIDB4MTI3ZiwgMHgwMDdjLCAweDIwMDEsIDB4MDAwNywgMHgwMDdjLCAweDIwMDEsIDB4MDAwNiwKLQkweDcwMGIsIDB4MDAwMSwgMHgxMjdmLCAweDAwN2MsIDB4NzAxYywgMHhhMDZkLCAweDAwNDAsIDB4NGU1ZiwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweDJkMDQsIDB4NzAxZSwKLQkweGEwMDUsIDB4MDBjMCwgMHg0ZTVjLCAweDcwMWEsIDB4MTI3ZiwgMHgxMDc4LCAweDEzYTQsIDB4MDA3YywKLQkweDIwMTksIDB4MDAwZCwgMHgyMzA0LCAweDIzMGMsIDB4YTEwZSwgMHgwMDQwLCAweDRlNmYsIDB4MjMwNCwKLQkweDIzMGMsIDB4YTEwZSwgMHgwMDQwLCAweDRlNmYsIDB4YTAwNiwgMHgwMDc4LCAweDRlN2YsIDB4NzMyYywKLQkweDgzMTksIDB4NzEzMCwgMHhhMTAyLCAweDAwYzAsIDB4NGU3OSwgMHgyMzAwLCAweGEwMDUsIDB4MDA3OCwKLQkweDRlN2YsIDB4MDA0OCwgMHg0ZTdlLCAweGEzMDIsIDB4MDA3OCwgMHg0ZTdmLCAweDgwMDIsIDB4MDA3YywKLQkweDJkMDAsIDB4NzAyNiwgMHhhMDgwLCAweDAwMGQsIDB4NzA1NiwgMHg3MDUzLCAweDAwMDAsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweGE5ZDYsIDB4MjEwNCwgMHhjMDhkLCAweDIwMGEsIDB4MTI3ZiwKLQkweDEwNzgsIDB4MTNmOSwgMHgwMDdjLCAweDIwNzEsIDB4YTdlMiwgMHg3MDAzLCAweDAwMDAsIDB4NzAwNywKLQkweDAwMDAsIDB4NzAwZiwgMHgwMDAwLCAweDcwMmIsIDB4MDAwMSwgMHg3MDRmLCAweDAwMDAsIDB4NzA1MywKLQkweDAwMDEsIDB4NzA1ZiwgMHgwMDIwLCAweDcwNjMsIDB4MDA0MCwgMHg3MDgzLCAweDAwMDAsIDB4NzA4YiwKLQkweDAwMDAsIDB4NzA4ZiwgMHgwMDAxLCAweDcwYmYsIDB4MDAwMCwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwKLQkweGE3ZTIsIDB4Njg0OCwgMHhhMDA1LCAweDAwYzAsIDB4NGViYywgMHg3MDI4LCAweGMwODUsIDB4NzAyYSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDRlZTEsIDB4NmE1MCwgMHg3MjM2LCAweDZiNTQsIDB4NzMzYSwKLQkweDY4NTgsIDB4NzAzZSwgMHg3MDdhLCAweDY4NWMsIDB4NzA0MiwgMHg3MDdlLCAweDY4NDgsIDB4NzAyZSwKLQkweDY4NDAsIDB4NzAzMiwgMHgyMDA5LCAweDAwMGMsIDB4MjAwYSwgMHg4MDA3LCAweDgwMDYsIDB4ODAwNiwKLQkweGEwOGMsIDB4MDAzZiwgMHhhMDg0LCAweGZmYzAsIDB4YTIxMCwgMHgyMTAwLCAweGEzMTksIDB4NzI3MiwKLQkweDczNzYsIDB4NzAyOCwgMHhjMDg0LCAweDcwMmEsIDB4NzAwNywgMHgwMDAxLCAweDcwMGYsIDB4MDAwMCwKLQkweGEwMDYsIDB4MGU3ZiwgMHgwMDdjLCAweDJiNzgsIDB4MjA3MSwgMHhhN2UyLCAweDcwMDQsIDB4MTA3OSwKLQkweDRmNDEsIDB4NzAwYywgMHgwMDc5LCAweDRlZWMsIDB4NGVmMSwgMHg0ZWU2LCAweDRlZTYsIDB4NGVlNiwKLQkweDRlZTYsIDB4MDA3YywgMHg3MDBjLCAweDAwNzksIDB4NGVmNSwgMHg0ZWZhLCAweDRmM2YsIDB4NGYzZiwKLQkweDRmNDAsIDB4NGY0MCwgMHg3ODMwLCAweDc5MzAsIDB4YTEwNiwgMHgwMDQwLCAweDRmMDQsIDB4NzgzMCwKLQkweDc5MzAsIDB4YTEwNiwgMHgwMGMwLCAweDRmMmEsIDB4NzAzMCwgMHhhMTBhLCAweDAwNDAsIDB4NGYyYSwKLQkweDAwYzgsIDB4NGYwYywgMHg3MTJjLCAweGExMGEsIDB4YTE4YSwgMHgwMDAyLCAweDAwYzgsIDB4NGYyYiwKLQkweDEwNzgsIDB4MTM3MCwgMHgwMDQwLCAweDRmMmEsIDB4MmQwMCwgMHg3MDVhLCAweDcwNjMsIDB4MDA0MCwKLQkweDIwMDEsIDB4MDAwMywgMHg3MDU3LCAweDAwMDAsIDB4MTI3ZSwgMHgwMDdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDIwMDksIDB4YTlkNiwgMHgyMTA0LCAweGMwODUsIDB4MjAwYSwgMHgwMDdmLCAweDcwMGUsIDB4MTI3ZiwKLQkweDEwNzgsIDB4MTNmOSwgMHgwMDdjLCAweDEwNzgsIDB4MTM3MCwgMHgwMDQwLCAweDRmMmEsIDB4MmQwMCwKLQkweDcwNWEsIDB4MTA3OCwgMHgxMzcwLCAweDAwYzAsIDB4NGYzNywgMHgwMDc4LCAweDRmMTYsIDB4MmQwMCwKLQkweDcwODYsIDB4NzA2MywgMHgwMDgwLCAweDIwMDEsIDB4MDAwNCwgMHgwMDc4LCAweDRmMWEsIDB4MDA3YywKLQkweDAwN2MsIDB4NGY1MiwgMHg0ZjUzLCAweDRmOGEsIDB4NGY4YiwgMHg0ZjNmLCAweDRmYzEsIDB4NGZjNiwKLQkweDRmZmQsIDB4NGZmZSwgMHg1MDE5LCAweDUwMWEsIDB4NTAxYiwgMHg1MDFjLCAweDUwMWQsIDB4NTAxZSwKLQkweDUwOWUsIDB4NTBjOCwgMHgwMDdjLCAweDcwMGMsIDB4MDA3OSwgMHg0ZjU2LCAweDRmNWIsIDB4NGY1ZSwKLQkweDRmNmUsIDB4NGY4OSwgMHg0Zjg5LCAweDEwNzgsIDB4NGVmMiwgMHgwMDdjLCAweDEyN2UsIDB4ODAwMSwKLQkweDcwMGUsIDB4NzA1OCwgMHgwMDdlLCAweDEwNzgsIDB4NTQ2NCwgMHgwMDQwLCAweDRmNmIsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHg0ZWYyLCAweDBkN2YsIDB4MDA3OCwgMHg0Zjc3LCAweDEyN2UsIDB4ODAwMSwKLQkweDcwMGUsIDB4MTA3OCwgMHg1NDY0LCAweDcwNTgsIDB4MjA2OCwgMHg3MDg0LCAweDcwNWEsIDB4NjgwMywKLQkweDAwMDAsIDB4NjgwNywgMHgwMDAwLCAweDY4MzQsIDB4YTA4NCwgMHgwMGZmLCAweGEwOGEsIDB4MDAyMCwKLQkweDAwYzgsIDB4NGY4NiwgMHgxMDc5LCAweDRmYTEsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2YsIDB4MTA3OCwKLQkweDUwMWYsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE3ZTIsIDB4NzAwYywKLQkweDAwNzksIDB4NGY5MiwgMHg0Zjk3LCAweDRmOTcsIDB4NGY5NywgMHg0Zjk5LCAweDRmOWQsIDB4MGU3ZiwKLQkweDAwN2MsIDB4NzAwZiwgMHgwMDAxLCAweDAwNzgsIDB4NGY5ZiwgMHg3MDBmLCAweDAwMDIsIDB4MGU3ZiwKLQkweDAwN2MsIDB4NTAxZiwgMHg1MDFmLCAweDUwM2IsIDB4NTAxZiwgMHg1MTcxLCAweDUwMWYsIDB4NTAxZiwKLQkweDUwMWYsIDB4NTAxZiwgMHg1MDFmLCAweDUwM2IsIDB4NTFiYiwgMHg1MjA4LCAweDUyNjEsIDB4NTI3NywKLQkweDUwMWYsIDB4NTAxZiwgMHg1MDU3LCAweDUwM2IsIDB4NTAxZiwgMHg1MDFmLCAweDUwNzgsIDB4NTMzOCwKLQkweDUzNTYsIDB4NTAxZiwgMHg1MDU3LCAweDUwMWYsIDB4NTAxZiwgMHg1MDFmLCAweDUwMWYsIDB4NTA2ZCwKLQkweDUzNTYsIDB4NzAyMCwgMHgyMDY4LCAweDEwNzgsIDB4MTNhNCwgMHgwMDdjLCAweDcwMGMsIDB4MDA3OSwKLQkweDRmYzksIDB4NGZjZSwgMHg0ZmQxLCAweDRmZTEsIDB4NGZmYywgMHg0ZmZjLCAweDEwNzgsIDB4NGVmMiwKLQkweDAwN2MsIDB4MTI3ZSwgMHg4MDAxLCAweDcwMGUsIDB4NzA1OCwgMHgwMDdlLCAweDEwNzgsIDB4NTQ2NCwKLQkweDAwNDAsIDB4NGZkZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHg0ZWYyLCAweDBkN2YsIDB4MDA3OCwKLQkweDRmZWEsIDB4MTI3ZSwgMHg4MDAxLCAweDcwMGUsIDB4MTA3OCwgMHg1NDY0LCAweDcwNTgsIDB4MjA2OCwKLQkweDcwODQsIDB4NzA1YSwgMHg2ODAzLCAweDAwMDAsIDB4NjgwNywgMHgwMDAwLCAweDY4MzQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4YSwgMHgwMDFhLCAweDAwYzgsIDB4NGZmOSwgMHgxMDc5LCAweDRmZmYsIDB4MTI3ZiwKLQkweDAwN2MsIDB4MTI3ZiwgMHgxMDc4LCAweDUwMWYsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4NTAxZiwKLQkweDUwM2IsIDB4NTE1YiwgMHg1MDFmLCAweDUwM2IsIDB4NTAxZiwgMHg1MDNiLCAweDUwM2IsIDB4NTAxZiwKLQkweDUwM2IsIDB4NTE1YiwgMHg1MDNiLCAweDUwM2IsIDB4NTAzYiwgMHg1MDNiLCAweDUwM2IsIDB4NTAxZiwKLQkweDUwM2IsIDB4NTE1YiwgMHg1MDFmLCAweDUwMWYsIDB4NTAzYiwgMHg1MDFmLCAweDUwMWYsIDB4NTAxZiwKLQkweDUwM2IsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4MDA3YywgMHgwMDdjLCAweDAwN2MsIDB4NzAwNywKLQkweDAwMDEsIDB4NjgzOCwgMHhhMDg0LCAweDAwZmYsIDB4YzBkNSwgMHg2ODNhLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHg0YTczLCAweDEyN2YsIDB4MDA3YywgMHg3MDA3LCAweDAwMDEsIDB4NjgzOCwKLQkweGEwODQsIDB4MDBmZiwgMHhjMGU1LCAweDY4M2EsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwKLQkweDRhNzMsIDB4MTI3ZiwgMHgwMDdjLCAweDcwMDcsIDB4MDAwMSwgMHg2ODM4LCAweGEwODQsIDB4MDBmZiwKLQkweGMwZWQsIDB4NjgzYSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgxMDc4LCAweDRhNzMsIDB4MTI3ZiwKLQkweDAwN2MsIDB4NzAwNywgMHgwMDAxLCAweDY4MzgsIDB4YTA4NCwgMHgwMGZmLCAweGMwZGQsIDB4NjgzYSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NGE3MywgMHgxMjdmLCAweDAwN2MsIDB4NjgzNCwKLQkweDgwMDcsIDB4YTA4NCwgMHgwMGZmLCAweDAwNDAsIDB4NTAyZCwgMHg4MDAxLCAweDAwYzAsIDB4NTA2NCwKLQkweDcwMDcsIDB4MDAwMSwgMHgwMDc4LCAweDUxM2EsIDB4NzAwNywgMHgwMDA2LCAweDcwMTIsIDB4MmQwMCwKLQkweDcwMTYsIDB4NzAxYSwgMHg3MDRiLCAweDUxM2EsIDB4MDA3YywgMHg2ODRjLCAweGEwODQsIDB4MDBjMCwKLQkweGEwODYsIDB4MDBjMCwgMHgwMGMwLCAweDUwNzgsIDB4NzAwNywgMHgwMDAxLCAweDAwNzgsIDB4NTM3MywKLQkweDJkMDAsIDB4NzAxNiwgMHg3MDFhLCAweDIwYTksIDB4MDAwNCwgMHhhMDgwLCAweDAwMjQsIDB4MjA5OCwKLQkweDIwYTEsIDB4YTgwZCwgMHg1M2EzLCAweDY4NTgsIDB4NzAxMiwgMHhhMDgyLCAweDA0MDEsIDB4MDBjOCwKLQkweDUwNDksIDB4Njg4NCwgMHhhMDhhLCAweDAwMDIsIDB4MDBjOCwgMHg1MDQ5LCAweDgyZmYsIDB4MDBjMCwKLQkweDUwOWEsIDB4Njg4OCwgMHg2OThjLCAweGExMDUsIDB4MDA0MCwgMHg1MDlhLCAweDIwMDEsIDB4NTEwYSwKLQkweDAwNzgsIDB4NTA5ZCwgMHhhMjgwLCAweDUxMDAsIDB4MjAwNCwgMHg3MGM2LCAweDcwMTAsIDB4YTAxNSwKLQkweDAwNDAsIDB4NTBlOCwgMHgxMDc4LCAweDEzNzAsIDB4MDBjMCwgMHg1MGE5LCAweDcwMDcsIDB4MDAwZiwKLQkweDAwN2MsIDB4MmQwMCwgMHg3MDIyLCAweDcwYzQsIDB4MjA2MCwgMHg2MDAwLCAweDY4MzYsIDB4NjAwNCwKLQkweGFkMDAsIDB4NzA5NiwgMHg2MDA4LCAweGEyMGEsIDB4MDBjOCwgMHg1MGI4LCAweGEwMGUsIDB4MjIwMCwKLQkweDcxMTIsIDB4NjIwYywgMHg4MDAzLCAweDgwMGIsIDB4YTI5NiwgMHgwMDA0LCAweDAwNDAsIDB4NTBjMSwKLQkweGExMDgsIDB4NzE5YSwgMHg4MTBiLCAweDcxOWUsIDB4YWU5MCwgMHgwMDIyLCAweDEwNzgsIDB4MTNkYiwKLQkweDcwOTAsIDB4YTA4ZSwgMHgwMTAwLCAweDAwNDAsIDB4NTBkYywgMHhhMDg2LCAweDAyMDAsIDB4MDA0MCwKLQkweDUwZDQsIDB4NzAwNywgMHgwMDEwLCAweDAwN2MsIDB4NzAyMCwgMHgyMDY4LCAweDEwNzgsIDB4MTNhNCwKLQkweDcwMTQsIDB4MjA2OCwgMHgwMDc4LCAweDUwNDksIDB4NzAyMCwgMHgyMDY4LCAweDcwMTgsIDB4NjgwMiwKLQkweDY4MDcsIDB4MDAwMCwgMHgyZDA4LCAweDIwNjgsIDB4NjkwNiwgMHg3MTFhLCAweDAwNzgsIDB4NTA5ZSwKLQkweDcwMTQsIDB4MjA2OCwgMHg3MDA3LCAweDAwMDEsIDB4Njg4NCwgMHhhMDA1LCAweDAwYzAsIDB4NTBmNywKLQkweDY4ODgsIDB4Njk4YywgMHhhMTA1LCAweDAwNDAsIDB4NTBmNywgMHgxMDc4LCAweDUxMGUsIDB4NjgzNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMWUsIDB4MDA0MCwgMHg1MzczLCAweDAwNzgsIDB4NTEzYSwKLQkweDUxMDIsIDB4NTEwNiwgMHgwMDAyLCAweDAwMTEsIDB4MDAwNywgMHgwMDA0LCAweDAwMGEsIDB4MDAwZiwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDBhLCAweDAwMTEsIDB4MDAwNSwgMHgwMDA0LCAweDBmN2UsIDB4MGU3ZSwKLQkweDBjN2UsIDB4MDc3ZSwgMHgwNjdlLCAweDZmODgsIDB4NmU4YywgMHg2ODA0LCAweDIwNjAsIDB4YWNmMCwKLQkweDAwMjEsIDB4YWNmOCwgMHgwMDI3LCAweDIwMDksIDB4MDAwNSwgMHg3MDBjLCAweDc4MTYsIDB4NzAwOCwKLQkweDc4MTIsIDB4NzAwNCwgMHg3ODA2LCAweDcwMDAsIDB4NzgwMiwgMHg3ZTBlLCAweDdmMGEsIDB4ODEwOSwKLQkweDAwNDAsIDB4NTEzMCwgMHhhZWYyLCAweDAwMDQsIDB4YWZmYSwgMHgwMDA2LCAweDAwNzgsIDB4NTExZCwKLQkweDYwMDQsIDB4YTA2NSwgMHgwMGMwLCAweDUxMTcsIDB4MDY3ZiwgMHgwNzdmLCAweDBjN2YsIDB4MGU3ZiwKLQkweDBmN2YsIDB4MDA3YywgMHgyMDA5LCAweGE3MmYsIDB4MjEwYywgMHg4MWZmLCAweDAwYzAsIDB4NTE1NSwKLQkweDY4MzgsIDB4YTA4NCwgMHgwMGZmLCAweDY4M2EsIDB4MTA3OCwgMHg0MzUzLCAweDAwYzAsIDB4NTE0OSwKLQkweDAwN2MsIDB4MTA3OCwgMHg0YjUxLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4OGY4ZCwKLQkweDEwNzgsIDB4NGE3MywgMHgxMjdmLCAweDAwNzgsIDB4NTE0OCwgMHgyMDAxLCAweDAwMjgsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDA3OCwgMHg1MTQ5LCAweDcwMTgsIDB4NjgwMiwgMHgyZDA4LCAweDIwNjgsIDB4NjkwNiwKLQkweDcxMWEsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsIDB4MDA0MCwgMHg1MTZhLCAweDcwMDcsIDB4MDAwNiwKLQkweDAwNzgsIDB4NTE3MCwgMHg3MDE0LCAweDIwNjgsIDB4NzAwNywgMHgwMDAxLCAweDcwNDgsIDB4MTA3YSwKLQkweDAwN2MsIDB4NzAwNywgMHgwMDAxLCAweDY5NDQsIDB4ODEwZiwgMHhhMThjLCAweDAwZmYsIDB4Njg0OCwKLQkweGEwODQsIDB4MDBmZiwgMHgyMGE5LCAweDAwMDEsIDB4YTA5NiwgMHgwMDAxLCAweDAwNDAsIDB4NTE5YSwKLQkweDIwMDksIDB4MDAwMCwgMHgyMGE5LCAweDAwZmYsIDB4YTA5NiwgMHgwMDAyLCAweDAwNDAsIDB4NTE5YSwKLQkweGEwMDUsIDB4MDBjMCwgMHg1MWFkLCAweDY5NDQsIDB4ODEwZiwgMHhhMThjLCAweDAwZmYsIDB4MTA3OCwKLQkweDQ1YzQsIDB4MDBjMCwgMHg1MWFkLCAweDA2N2UsIDB4NmU1MCwgMHgxMDc4LCAweDQ2YjMsIDB4MDY3ZiwKLQkweDAwNzgsIDB4NTFhZCwgMHgwNDdlLCAweDIwMTEsIDB4YTcwYywgMHgyMjI0LCAweGM0ODQsIDB4YzQ4YywKLQkweDI0MTIsIDB4MDQ3ZiwgMHgwYzdlLCAweDEwNzgsIDB4NDVjNCwgMHgwMGMwLCAweDUxYTksIDB4MTA3OCwKLQkweDQ4NTIsIDB4ODEwOCwgMHgwMGYwLCAweDUxYTMsIDB4MGM3ZiwgMHg2ODRjLCAweGQwODQsIDB4MDBjMCwKLQkweDUxYjQsIDB4MTA3OCwgMHgxM2E0LCAweDAwN2MsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwKLQkweDRhNzMsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsIDB4MDAwMSwKLQkweDIwMDEsIDB4YTc1MywgMHgyMDA0LCAweGQwYTQsIDB4MDA0MCwgMHg1MWZmLCAweDIwNjEsIDB4YWEzMywKLQkweDYxMDAsIDB4ZDE4NCwgMHgwMDQwLCAweDUxZGYsIDB4Njg1OCwgMHhhMDg0LCAweDAwZmYsIDB4MDBjMCwKLQkweDUyMDIsIDB4NjAwMCwgMHhkMDg0LCAweDAwNDAsIDB4NTFmZiwgMHg2MDA0LCAweGEwMDUsIDB4MDBjMCwKLQkweDUyMDUsIDB4NjAwMywgMHgwMDAwLCAweDYwMGIsIDB4MDAwMCwgMHgwMDc4LCAweDUxZmMsIDB4MjAxMSwKLQkweDAwMDEsIDB4Njg2MCwgMHhhMDA1LCAweDAwYzAsIDB4NTFlNywgMHgyMDAxLCAweDAwMWUsIDB4ODAwMCwKLQkweDYwMTYsIDB4Njg1OCwgMHhhMDg0LCAweDAwZmYsIDB4MDA0MCwgMHg1MWZmLCAweDYwMDYsIDB4Njg1OCwKLQkweDgwMDcsIDB4YTA4NCwgMHgwMGZmLCAweDAwNDAsIDB4NTFmZiwgMHg2MDBhLCAweDY4NTgsIDB4ODAwMCwKLQkweDAwYzAsIDB4NTFmYiwgMHhjMjhkLCAweDYyMDIsIDB4MTI3ZiwgMHgwMDc4LCAweDU0NTMsIDB4MTI3ZiwKLQkweDAwNzgsIDB4NTQ0YiwgMHgxMjdmLCAweDAwNzgsIDB4NTQ0MywgMHgxMjdmLCAweDAwNzgsIDB4NTQ0NywKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsIDB4MDAwMSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYTQsIDB4MDA0MCwgMHg1MjVlLCAweDIwNjEsIDB4YWEzMywgMHg2MDAwLCAweGQwODQsIDB4MDA0MCwKLQkweDUyNWUsIDB4NjIwNCwgMHg2MzA4LCAweGQwOGMsIDB4MDBjMCwgMHg1MjUwLCAweDZjNDgsIDB4YTQ4NCwKLQkweDAwMDMsIDB4MDA0MCwgMHg1MjM2LCAweDY5NTgsIDB4YTE4YywgMHgwMGZmLCAweDgwMDEsIDB4MDBjMCwKLQkweDUyMmYsIDB4MjEwMCwgMHhhMjEwLCAweDAwNDgsIDB4NTI1YiwgMHgwMDc4LCAweDUyMzYsIDB4ODAwMSwKLQkweDAwYzAsIDB4NTI1YiwgMHgyMTAwLCAweGEyMTIsIDB4MDA0OCwgMHg1MjViLCAweGE0ODQsIDB4MDAwYywKLQkweDAwNDAsIDB4NTI1MCwgMHg2OTU4LCAweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweGEwODIsIDB4MDAwNCwKLQkweDAwYzAsIDB4NTI0OCwgMHgyMTAwLCAweGEzMTgsIDB4MDA0OCwgMHg1MjViLCAweDAwNzgsIDB4NTI1MCwKLQkweGEwODIsIDB4MDAwNCwgMHgwMGMwLCAweDUyNWIsIDB4MjEwMCwgMHhhMzFhLCAweDAwNDgsIDB4NTI1YiwKLQkweDY4NjAsIDB4YTAwNSwgMHgwMDQwLCAweDUyNTYsIDB4ODAwMCwgMHg2MDE2LCAweDYyMDYsIDB4NjMwYSwKLQkweDEyN2YsIDB4MDA3OCwgMHg1NDUzLCAweDEyN2YsIDB4MDA3OCwgMHg1NDRmLCAweDEyN2YsIDB4MDA3OCwKLQkweDU0NGIsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywgMHgwMDAxLCAweDIwNjEsIDB4YWEzMywKLQkweDYzMDAsIDB4ZDM4YywgMHgwMGMwLCAweDUyNzEsIDB4NjMwOCwgMHg4MzE4LCAweDAwNDgsIDB4NTI3NCwKLQkweDYzMGEsIDB4MTI3ZiwgMHgwMDc4LCAweDU0NjEsIDB4MTI3ZiwgMHgwMDc4LCAweDU0NGYsIDB4MTI3ZSwKLQkweDBjN2UsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsIDB4MDAwMSwgMHg2ODRjLCAweGQwYWMsIDB4MDA0MCwKLQkweDUyOGIsIDB4MGM3ZSwgMHgyMDYxLCAweGFhMzMsIDB4NjAwMCwgMHhhMDg0LCAweGZjZmYsIDB4NjAwMiwKLQkweDBjN2YsIDB4MDA3OCwgMHg1MmJhLCAweDY4NTgsIDB4YTAwNSwgMHgwMDQwLCAweDUyZDEsIDB4Njg1YywKLQkweGEwNjUsIDB4MDA0MCwgMHg1MmNkLCAweDIwMDEsIDB4YTcyZiwgMHgyMDA0LCAweGEwMDUsIDB4MDA0MCwKLQkweDUyOWQsIDB4MTA3OCwgMHg4ZWQ2LCAweDAwNzgsIDB4NTJhYiwgMHg2MDEzLCAweDA0MDAsIDB4NjAzNywKLQkweDAwMDAsIDB4Njk0YywgMHhkMWE0LCAweDAwNDAsIDB4NTJhNywgMHg2OTUwLCAweDYxMzYsIDB4MjAwOSwKLQkweDAwNDEsIDB4MTA3OCwgMHg3NzVjLCAweDY5NTgsIDB4YTE4YywgMHhmZjAwLCAweGExODYsIDB4MjAwMCwKLQkweDAwYzAsIDB4NTJiYSwgMHgwMjdlLCAweDIwMDksIDB4MDAwMCwgMHgyMDExLCAweGZkZmYsIDB4MTA3OCwKLQkweDViZjEsIDB4MDI3ZiwgMHg2ODRjLCAweGQwYzQsIDB4MDA0MCwgMHg1MmM5LCAweDIwNjEsIDB4YWEzMywKLQkweDYwMDAsIDB4ZDA4YywgMHgwMGMwLCAweDUyYzksIDB4NjAwOCwgMHg4MDAwLCAweDAwNDgsIDB4NTJjZCwKLQkweDYwMGEsIDB4MGM3ZiwgMHgxMjdmLCAweDAwNzgsIDB4NTQ1MywgMHgwYzdmLCAweDEyN2YsIDB4MDA3OCwKLQkweDU0NGIsIDB4Njk1NCwgMHhhMTg2LCAweDAwNDUsIDB4MDA0MCwgMHg1MzA2LCAweGExODYsIDB4MDAyYSwKLQkweDAwYzAsIDB4NTJlMSwgMHgyMDAxLCAweGE3MGMsIDB4MjAwYywgMHhjMTk0LCAweDIxMDIsIDB4MDA3OCwKLQkweDUyYmEsIDB4YTE4NiwgMHgwMDIwLCAweDAwNDAsIDB4NTJmYSwgMHhhMTg2LCAweDAwMjksIDB4MDA0MCwKLQkweDUyZWQsIDB4YTE4NiwgMHgwMDJkLCAweDAwYzAsIDB4NTJjZCwgMHg2OTQ0LCAweGExOGMsIDB4ZmYwMCwKLQkweDgxMGYsIDB4MTA3OCwgMHg0NWM0LCAweDAwYzAsIDB4NTJiYSwgMHg2MDAwLCAweGMwZTQsIDB4NjAwMiwKLQkweDAwNzgsIDB4NTJiYSwgMHg2ODVjLCAweGEwNjUsIDB4MDA0MCwgMHg1MmNkLCAweDYwMDcsIDB4MDAyNCwKLQkweDIwMDEsIDB4YTlhMywgMHgyMDA0LCAweDYwMTYsIDB4MDA3OCwgMHg1MmJhLCAweDY4NWMsIDB4YTA2NSwKLQkweDAwNDAsIDB4NTJjZCwgMHgwZTdlLCAweDY4NjAsIDB4YTA3NSwgMHgyMDAxLCAweGE3MmYsIDB4MjAwNCwKLQkweGEwMDUsIDB4MDA0MCwgMHg1MzFlLCAweDEwNzgsIDB4OGVkNiwgMHg4ZWZmLCAweDAwNDAsIDB4NTMxYiwKLQkweDJlNjAsIDB4MTA3OCwgMHg4ZWQ2LCAweDBlN2YsIDB4MDA3OCwgMHg1MmJhLCAweDYwMjQsIDB4YzBkYywKLQkweGMwZDUsIDB4NjAyNiwgMHgyZTYwLCAweDYwMDcsIDB4MDAzYSwgMHg2ODcwLCAweGEwMDUsIDB4MDA0MCwKLQkweDUzMmYsIDB4NjAwNywgMHgwMDNiLCAweDY4NzQsIDB4NjAyYSwgMHg2ODc4LCAweDYwMTIsIDB4NjAwMywKLQkweDAwMDEsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgwZTdmLCAweDAwNzgsIDB4NTJiYSwKLQkweDIwNjEsIDB4YWEzMywgMHg2MDAwLCAweGQwODQsIDB4MDA0MCwgMHg1MzUyLCAweGQwOGMsIDB4MDBjMCwKLQkweDU0NjEsIDB4MjA5MSwgMHg4MDAwLCAweDYyMDQsIDB4ODIxMCwgMHgwMDQ4LCAweDUzNGMsIDB4NjIwNiwKLQkweDIwOTEsIDB4ODAwMSwgMHgwMDc4LCAweDU0NjEsIDB4MjA5MSwgMHg4MDAxLCAweDY4NTMsIDB4MDAxNiwKLQkweDAwNzgsIDB4NTQ1YSwgMHg2ODUzLCAweDAwMDcsIDB4MDA3OCwgMHg1NDVhLCAweDY4MzQsIDB4ODAwNywKLQkweGEwODQsIDB4MDBmZiwgMHgwMGMwLCAweDUzNjAsIDB4MTA3OCwgMHg1MDJkLCAweDAwNzgsIDB4NTM3MiwKLQkweDIwMzAsIDB4ODAwMSwgMHgwMGMwLCAweDUzNmEsIDB4NzAwNywgMHgwMDAxLCAweDEwNzgsIDB4NTM3MywKLQkweDAwNzgsIDB4NTM3MiwgMHg3MDA3LCAweDAwMDYsIDB4NzAxMiwgMHgyZDAwLCAweDcwMTYsIDB4NzAxYSwKLQkweDcwNGIsIDB4NTM3MywgMHgwMDdjLCAweDBlN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4YTAzZSwKLQkweDIwMDksIDB4YTcyZiwgMHgyMTBjLCAweDgxZmYsIDB4MDBjMCwgMHg1M2ZmLCAweDIwMDksIDB4YTcwYywKLQkweDIxMGMsIDB4ZDE5NCwgMHgwMGMwLCAweDU0MzEsIDB4Njg0OCwgMHgyMDcwLCAweGFlODIsIDB4YWUwMCwKLQkweDAwNDgsIDB4NTNlZiwgMHgyMDAxLCAweGE3MTYsIDB4MjAwNCwgMHhhZTAyLCAweDAwYzgsIDB4NTNlZiwKLQkweDIwNjEsIDB4YWEzMywgMHg2MTAwLCAweGExODQsIDB4MDMwMSwgMHhhMDg2LCAweDAwMDEsIDB4MDBjMCwKLQkweDUzZDIsIDB4NzExYywgMHhhMTg2LCAweDAwMDYsIDB4MDBjMCwgMHg1M2RhLCAweDcwMTgsIDB4YTAwNSwKLQkweDAwNDAsIDB4NTNmZiwgMHgyMDA0LCAweGQwZTQsIDB4MDBjMCwgMHg1NDJiLCAweDcwMjQsIDB4ZDBkYywKLQkweDAwYzAsIDB4NTQzNSwgMHg2ODUzLCAweDAwMDAsIDB4NjgwMywgMHgwMDAwLCAweDJkMDgsIDB4NzAxMCwKLQkweGEwMDUsIDB4MDBjMCwgMHg1M2JlLCAweDcxMTIsIDB4Njg0YywgMHhkMGY0LCAweDAwYzAsIDB4NTQzOSwKLQkweDJlNjAsIDB4MTA3OCwgMHg1YjI3LCAweDEyN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDIwNjgsIDB4NjgwMCwKLQkweGEwMDUsIDB4MDBjMCwgMHg1M2JlLCAweDY5MDIsIDB4MjE2OCwgMHg2ODRjLCAweGQwZjQsIDB4MDBjMCwKLQkweDU0MzksIDB4MTI3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MTI3ZiwgMHgwZTdmLCAweDY4NTMsIDB4MDAwNiwKLQkweDAwNzgsIDB4NTQ1YSwgMHhkMTg0LCAweDAwNDAsIDB4NTNjYywgMHhkMWM0LCAweDAwYzAsIDB4NTNmMywKLQkweDAwNzgsIDB4NTNmNywgMHg2OTQ0LCAweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4NTQyYiwgMHg2MDAwLCAweGQwZTQsIDB4MDBjMCwgMHg1NDJiLCAweDcxMWMsIDB4YTE4NiwKLQkweDAwMDcsIDB4MDBjMCwgMHg1M2VmLCAweDY4NTMsIDB4MDAwMiwgMHgwMDc4LCAweDU0MmQsIDB4Njg1MywKLQkweDAwMDgsIDB4MDA3OCwgMHg1NDJkLCAweDY4NTMsIDB4MDAwZSwgMHgwMDc4LCAweDU0MmQsIDB4Njg1MywKLQkweDAwMTcsIDB4MDA3OCwgMHg1NDJkLCAweDY4NTMsIDB4MDAzNSwgMHgwMDc4LCAweDU0MmQsIDB4MjAwMSwKLQkweGE3NzIsIDB4MjAwNCwgMHhkMGZjLCAweDAwNDAsIDB4NTQyNywgMHg2ODQ4LCAweDIwNzAsIDB4YWU4MiwKLQkweGFlMDAsIDB4MDA0OCwgMHg1NDI3LCAweDYwNTgsIDB4YWUwMiwgMHgwMGM4LCAweDU0MjcsIDB4NzExYywKLQkweGExODYsIDB4MDAwNiwgMHgwMGMwLCAweDU0MjcsIDB4NzAxOCwgMHhhMDA1LCAweDAwNDAsIDB4NTQyNywKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDU0MjcsIDB4MjAzOSwgMHgwMDAxLCAweDcwMDAsIDB4YTA4NiwKLQkweDAwMDcsIDB4MDBjMCwgMHg1MzdlLCAweDcwMDMsIDB4MDAwMiwgMHgwMDc4LCAweDUzN2UsIDB4Njg1MywKLQkweDAwMjgsIDB4MDA3OCwgMHg1NDJkLCAweDY4NTMsIDB4MDAyOSwgMHgxMjdmLCAweDBlN2YsIDB4MDA3OCwKLQkweDU0NWEsIDB4Njg1MywgMHgwMDJhLCAweDAwNzgsIDB4NTQyZCwgMHg2ODUzLCAweDAwNDUsIDB4MDA3OCwKLQkweDU0MmQsIDB4MmU2MCwgMHgyMDE5LCAweDAwMDIsIDB4NjAxNywgMHgwMDE0LCAweDEwNzgsIDB4OWRkNywKLQkweDEyN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDIwMDksIDB4MDAzZSwgMHgwMDc4LCAweDU0NTUsIDB4MjAwOSwKLQkweDAwMDQsIDB4MDA3OCwgMHg1NDU1LCAweDIwMDksIDB4MDAwNiwgMHgwMDc4LCAweDU0NTUsIDB4MjAwOSwKLQkweDAwMTYsIDB4MDA3OCwgMHg1NDU1LCAweDIwMDksIDB4MDAwMSwgMHg2ODU0LCAweGEwODQsIDB4ZmYwMCwKLQkweGExMDUsIDB4Njg1NiwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHg0YTczLCAweDIwOTEsIDB4ODAwMSwKLQkweDAwN2MsIDB4MTA3OCwgMHgxM2E0LCAweDAwN2MsIDB4NzAyYywgMHg3MTMwLCAweDgxMDgsIDB4YTEwMiwKLQkweDAwNDgsIDB4NTQ3MSwgMHhhMDBlLCAweDcwMzQsIDB4NzA3MiwgMHg3MDM4LCAweDcwNzYsIDB4MDA3OCwKLQkweDU0N2QsIDB4NzA3MCwgMHhhMDgwLCAweDAwNDAsIDB4NzA3MiwgMHgwMGM4LCAweDU0N2QsIDB4NzA3NCwKLQkweGEwODEsIDB4MDAwMCwgMHg3MDc2LCAweGEwODUsIDB4MDAwMSwgMHg3OTMyLCAweDcxMzIsIDB4MDA3YywKLQkweDBkN2UsIDB4MTA3OCwgMHg1YjFlLCAweDBkN2YsIDB4MDA3YywgMHgwZDdlLCAweDIwMTEsIDB4MDAwNCwKLQkweDIyMDQsIDB4YTA4NSwgMHg4MDAyLCAweDIwMTIsIDB4MGQ3ZiwgMHgwMDdjLCAweDIwZTEsIDB4MDAwMiwKLQkweDNkMDgsIDB4MjBlMSwgMHgyMDAwLCAweDNkMDAsIDB4YTA4NCwgMHg3MDAwLCAweDAwNDAsIDB4NTQ5YywKLQkweGEwODYsIDB4MTAwMCwgMHgwMGMwLCAweDU0ZDMsIDB4MjBlMSwgMHgwMDAwLCAweDNkMDAsIDB4YTA5NCwKLQkweGZmMDAsIDB4ODIxNywgMHhhMDg0LCAweGYwMDAsIDB4YTA4NiwgMHgzMDAwLCAweDAwYzAsIDB4NTRiNywKLQkweGExODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwODYsIDB4MDAwOCwgMHgwMGMwLCAweDU0ZDMsIDB4MTA3OCwKLQkweDI5YmIsIDB4MDBjMCwgMHg1NGQzLCAweDEwNzgsIDB4NTZiMiwgMHgwMDc4LCAweDU0Y2UsIDB4MjBlMSwKLQkweDAwMDQsIDB4M2Q2MCwgMHhkMWJjLCAweDAwYzAsIDB4NTRiZSwgMHgzZTYwLCAweGFjODQsIDB4MDAwZiwKLQkweDAwYzAsIDB4NTRkMywgMHhhYzgyLCAweGFlMDAsIDB4MDA0OCwgMHg1NGQzLCAweDY4NTgsIDB4YWMwMiwKLQkweDAwYzgsIDB4NTRkMywgMHgyMDA5LCAweDAwNDcsIDB4MTA3OCwgMHg3NzVjLCAweDdhMWMsIDB4ZDI4NCwKLQkweDAwYzAsIDB4NTQ4ZSwgMHgwMDdjLCAweGEwMTYsIDB4MTA3OCwgMHgxNWZhLCAweDAwNzgsIDB4NTRjZSwKLQkweDAwNzgsIDB4NTRkMywgMHg3ODFjLCAweGQwOGMsIDB4MDA0MCwgMHg1NTAyLCAweDE1N2UsIDB4MTM3ZSwKLQkweDE0N2UsIDB4MjBlMSwgMHgzMDAwLCAweDNkMjAsIDB4M2UyOCwgMHhhNTg0LCAweDAwNzYsIDB4MDBjMCwKLQkweDU1MTgsIDB4YTQ4NCwgMHg3MDAwLCAweGEwODYsIDB4MTAwMCwgMHgwMGMwLCAweDU1MDcsIDB4MTA3OCwKLQkweDU1NGUsIDB4MDA0MCwgMHg1NTE4LCAweDIwZTEsIDB4MzAwMCwgMHg3ODI4LCAweDc4MjgsIDB4MTA3OCwKLQkweDU1NmMsIDB4MTQ3ZiwgMHgxMzdmLCAweDE1N2YsIDB4MjAwOSwgMHhhOWI5LCAweDIxMDQsIDB4YTAwNSwKLQkweDAwYzAsIDB4NTUwMywgMHgwMDdjLCAweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDU1MDIsIDB4YTQ4NCwKLQkweDcwMDAsIDB4MDBjMCwgMHg1NTE4LCAweDEwNzgsIDB4NTU0ZSwgMHgwMDQwLCAweDU1MmMsIDB4NzAwMCwKLQkweGEwODQsIDB4ZmYwMCwgMHhhMDg2LCAweDgxMDAsIDB4MDA0MCwgMHg1NGYzLCAweDAwNzgsIDB4NTUyYywKLQkweDEwNzgsIDB4YTU1ZiwgMHhkNWE0LCAweDAwNDAsIDB4NTUyOCwgMHgwNDdlLCAweDEwNzgsIDB4MWIyMiwKLQkweDA0N2YsIDB4MjBlMSwgMHg5MDEwLCAweDIwMDEsIDB4MDEzOCwgMHgyMjAyLCAweDAwNzgsIDB4NTUzMCwKLQkweDEwNzgsIDB4NTU0ZSwgMHg2ODgzLCAweDAwMDAsIDB4MjBlMSwgMHgzMDAwLCAweDc4MjgsIDB4NzgyOCwKLQkweDEwNzgsIDB4NTUzNywgMHgxNDdmLCAweDEzN2YsIDB4MTU3ZiwgMHgwMDc4LCAweDU1MDIsIDB4MjAwMSwKLQkweGE3MGUsIDB4MjAwNCwgMHhkMDhjLCAweDAwNDAsIDB4NTU0ZCwgMHgyMDAxLCAweGE3MDAsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDU1NGQsIDB4MDI3ZSwgMHgwMzdlLCAweDIwMTEsIDB4ODA0OCwKLQkweDI1MTgsIDB4MTA3OCwgMHgzNjFiLCAweDAzN2YsIDB4MDI3ZiwgMHgwMDdjLCAweGE0ODQsIDB4MDFmZiwKLQkweDY4ODIsIDB4YTAwNSwgMHgwMDQwLCAweDU1NjAsIDB4YTA4MCwgMHgwMDFmLCAweGEwODQsIDB4MDNmOCwKLQkweDgwYWMsIDB4MjBlMSwgMHgxMDAwLCAweDJlYTAsIDB4MjA5OSwgMHgwMjBhLCAweDUzYTUsIDB4MDA3YywKLQkweDIwYTksIDB4MDAwYywgMHgyMGUxLCAweDEwMDAsIDB4MmVhMCwgMHgyMDk5LCAweDAyMGEsIDB4NTNhNSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDU1NWYsIDB4NzAwMCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4YywKLQkweGYwMDAsIDB4ODAwNywgMHhhMTk2LCAweDAwMDAsIDB4MDBjMCwgMHg1NTc5LCAweDAwNzgsIDB4NTdiYSwKLQkweDAwN2MsIDB4YTE5NiwgMHgyMDAwLCAweDAwYzAsIDB4NTU4YSwgMHg2OTAwLCAweGExOGUsIDB4MDAwMSwKLQkweDAwYzAsIDB4NTU4NiwgMHgxMDc4LCAweDNhZWMsIDB4MDA3OCwgMHg1NTc4LCAweDEwNzgsIDB4NTU5MiwKLQkweDAwNzgsIDB4NTU3OCwgMHhhMTk2LCAweDgwMDAsIDB4MDBjMCwgMHg1NTc4LCAweDEwNzgsIDB4NTg3MSwKLQkweDAwNzgsIDB4NTU3OCwgMHgwYzdlLCAweDcxMTAsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE5NiwKLQkweDAwMDEsIDB4MDA0MCwgMHg1NTlmLCAweGExOTYsIDB4MDAyMywgMHgwMGMwLCAweDU2YWEsIDB4YTA4ZSwKLQkweDAwMjMsIDB4MDBjMCwgMHg1NWQ0LCAweDEwNzgsIDB4NTkxZCwgMHgwMDQwLCAweDU2YWEsIDB4NzEyNCwKLQkweDYxMGEsIDB4NzAzMCwgMHhhMDhlLCAweDAyMDAsIDB4MDBjMCwgMHg1NWI4LCAweDcwMzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4NTZhYSwgMHgyMDA5LCAweDAwMTUsIDB4MTA3OCwgMHg3NzVjLCAweDAwNzgsIDB4NTZhYSwKLQkweGEwOGUsIDB4MDIxNCwgMHgwMDQwLCAweDU1YzAsIDB4YTA4ZSwgMHgwMjEwLCAweDAwYzAsIDB4NTVjNiwKLQkweDIwMDksIDB4MDAxNSwgMHgxMDc4LCAweDc3NWMsIDB4MDA3OCwgMHg1NmFhLCAweGEwOGUsIDB4MDEwMCwKLQkweDAwYzAsIDB4NTZhYSwgMHg3MDM0LCAweGEwMDUsIDB4MDBjMCwgMHg1NmFhLCAweDIwMDksIDB4MDAxNiwKLQkweDEwNzgsIDB4Nzc1YywgMHgwMDc4LCAweDU2YWEsIDB4YTA4ZSwgMHgwMDIyLCAweDAwYzAsIDB4NTZhYSwKLQkweDcwMzAsIDB4YTA4ZSwgMHgwMzAwLCAweDAwYzAsIDB4NTVlNSwgMHg3MDM0LCAweGEwMDUsIDB4MDBjMCwKLQkweDU2YWEsIDB4MjAwOSwgMHgwMDE3LCAweDAwNzgsIDB4NTY3NiwgMHhhMDhlLCAweDA1MDAsIDB4MDBjMCwKLQkweDU1ZjEsIDB4NzAzNCwgMHhhMDA1LCAweDAwYzAsIDB4NTZhYSwgMHgyMDA5LCAweDAwMTgsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHgyMDEwLCAweDAwYzAsIDB4NTVmOSwgMHgyMDA5LCAweDAwMTksIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHgyMTEwLCAweDAwYzAsIDB4NTYwMSwgMHgyMDA5LCAweDAwMWEsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHg1MjAwLCAweDAwYzAsIDB4NTYwZCwgMHg3MDM0LCAweGEwMDUsIDB4MDBjMCwKLQkweDU2YWEsIDB4MjAwOSwgMHgwMDFiLCAweDAwNzgsIDB4NTY3NiwgMHhhMDhlLCAweDUwMDAsIDB4MDBjMCwKLQkweDU2MTksIDB4NzAzNCwgMHhhMDA1LCAweDAwYzAsIDB4NTZhYSwgMHgyMDA5LCAweDAwMWMsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHgxMzAwLCAweDAwYzAsIDB4NTYyMSwgMHgyMDA5LCAweDAwMzQsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHgxMjAwLCAweDAwYzAsIDB4NTYyZCwgMHg3MDM0LCAweGEwMDUsIDB4MDBjMCwKLQkweDU2YWEsIDB4MjAwOSwgMHgwMDI0LCAweDAwNzgsIDB4NTY3NiwgMHhhMDhjLCAweGZmMDAsIDB4YTE4ZSwKLQkweDI0MDAsIDB4MDBjMCwgMHg1NjM3LCAweDIwMDksIDB4MDAyZCwgMHgwMDc4LCAweDU2NzYsIDB4YTA4YywKLQkweGZmMDAsIDB4YTE4ZSwgMHg1MzAwLCAweDAwYzAsIDB4NTY0MSwgMHgyMDA5LCAweDAwMmEsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHgwZjAwLCAweDAwYzAsIDB4NTY0OSwgMHgyMDA5LCAweDAwMjAsIDB4MDA3OCwKLQkweDU2NzYsIDB4YTA4ZSwgMHg1MzAwLCAweDAwYzAsIDB4NTY0ZiwgMHgwMDc4LCAweDU2NmMsIDB4YTA4ZSwKLQkweDYxMDQsIDB4MDBjMCwgMHg1NjZjLCAweDIwMTEsIDB4YWM4ZCwgMHg4MjA4LCAweDIyMDQsIDB4YTA4MiwKLQkweDAwMDQsIDB4MjBhOCwgMHg5NWFjLCAweDk1YWMsIDB4MjAxMSwgMHg4MDE1LCAweDIxMWMsIDB4ODEwOCwKLQkweDA0N2UsIDB4MjEyNCwgMHgxMDc4LCAweDM2MWIsIDB4MDQ3ZiwgMHg4MTA4LCAweDAwZjAsIDB4NTY1YywKLQkweDIwMDksIDB4MDAyMywgMHgwMDc4LCAweDU2NzYsIDB4YTA4ZSwgMHg2MDAwLCAweDAwYzAsIDB4NTY3NCwKLQkweDIwMDksIDB4MDAzZiwgMHgwMDc4LCAweDU2NzYsIDB4MjAwOSwgMHgwMDFkLCAweDAxN2UsIDB4MjAxMSwKLQkweGFjODMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsIDB4MTA3OCwgMHgyNTRkLCAweDAwYzAsIDB4NTZhYywKLQkweDEwNzgsIDB4NDU1YywgMHgwMGMwLCAweDU2YWMsIDB4NjYxMiwgMHg2NTE2LCAweDg2ZmYsIDB4MDA0MCwKLQkweDU2OWMsIDB4MDE3ZiwgMHgwMTdlLCAweGExODYsIDB4MDAxNywgMHgwMGMwLCAweDU2OWMsIDB4Njg2YywKLQkweGE2MDYsIDB4MDBjMCwgMHg1NjljLCAweDY4NzAsIDB4YTUwNiwgMHhhMDg0LCAweGZmMDAsIDB4MDBjMCwKLQkweDU2OWMsIDB4NjAwMCwgMHhjMGY1LCAweDYwMDIsIDB4MGM3ZSwgMHgxMDc4LCAweDc2YzcsIDB4MDA0MCwKLQkweDU2YWYsIDB4MDE3ZiwgMHg2MTFhLCAweDYwMWYsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MDE3ZiwKLQkweDEwNzgsIDB4Nzc1YywgMHgwYzdmLCAweDAwN2MsIDB4MDE3ZiwgMHgwMDc4LCAweDU2YWEsIDB4MGM3ZiwKLQkweDAwNzgsIDB4NTZhYywgMHgwYzdlLCAweDEwNzgsIDB4NTcwZiwgMHgwMGMwLCAweDU3MGQsIDB4YTI4ZSwKLQkweDAwMzMsIDB4MDBjMCwgMHg1NmRlLCAweDEwNzgsIDB4NTkxZCwgMHgwMDQwLCAweDU3MGQsIDB4NzEyNCwKLQkweDYxMGEsIDB4NzAzMCwgMHhhMDhlLCAweDAyMDAsIDB4MDBjMCwgMHg1NmQwLCAweDcwMzQsIDB4YTAwNSwKLQkweDAwYzAsIDB4NTcwZCwgMHgyMDA5LCAweDAwMTUsIDB4MTA3OCwgMHg3NzVjLCAweDAwNzgsIDB4NTcwZCwKLQkweGEwOGUsIDB4MDEwMCwgMHgwMGMwLCAweDU3MGQsIDB4NzAzNCwgMHhhMDA1LCAweDAwYzAsIDB4NTcwZCwKLQkweDIwMDksIDB4MDAxNiwgMHgxMDc4LCAweDc3NWMsIDB4MDA3OCwgMHg1NzBkLCAweGEyOGUsIDB4MDAzMiwKLQkweDAwYzAsIDB4NTcwZCwgMHg3MDMwLCAweGEwOGUsIDB4MTQwMCwgMHgwMGMwLCAweDU3MGQsIDB4MjAwOSwKLQkweDAwMzgsIDB4MDE3ZSwgMHgyMDExLCAweGFjODMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsIDB4MTA3OCwKLQkweDI1NGQsIDB4MDBjMCwgMHg1NzBjLCAweDEwNzgsIDB4NDU1YywgMHgwMGMwLCAweDU3MGMsIDB4NjYxMiwKLQkweDY1MTYsIDB4MGM3ZSwgMHgxMDc4LCAweDc2YzcsIDB4MDA0MCwgMHg1NzBiLCAweDAxN2YsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MDE3ZiwgMHgxMDc4LCAweDc3NWMsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3OCwgMHg1NzBkLCAweDBjN2YsIDB4MDE3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MGY3ZSwKLQkweDBkN2UsIDB4MDI3ZSwgMHgwMTdlLCAweDEzN2UsIDB4MTQ3ZSwgMHgxNTdlLCAweDNjMDAsIDB4MDA3ZSwKLQkweDIwNzksIDB4MDAzMCwgMHgyMDY5LCAweDAyMDAsIDB4MTA3OCwgMHgxYzZhLCAweDAwYzAsIDB4NTc1MCwKLQkweDEwNzgsIDB4MWI0MCwgMHgwMDQwLCAweDU3NWQsIDB4NzkwOCwgMHhhMThjLCAweDFmZmYsIDB4YTE4MiwKLQkweDAwMTEsIDB4MDBjOCwgMHg1NzVhLCAweDIwYTksIDB4MDAwYywgMHgyMGUxLCAweDAwMDAsIDB4MmVhMCwKLQkweDIwOTksIDB4MDIwYSwgMHg1M2E1LCAweDIwZTEsIDB4MjAwMCwgMHgyMDAxLCAweDAyMGEsIDB4MjAwNCwKLQkweDdhMGMsIDB4NzgwOCwgMHhhMDgwLCAweDAwMDcsIDB4YTA4NCwgMHgxZmY4LCAweGEwOGEsIDB4MDE0MCwKLQkweDEwYzgsIDB4MTMzMiwgMHg4MGFjLCAweDIwZTEsIDB4NjAwMCwgMHgyMDk5LCAweDAyMGEsIDB4NTNhNSwKLQkweDIwZTEsIDB4NzAwMCwgMHg2ODI4LCAweDY4MjgsIDB4NzgwMywgMHgwMDA0LCAweGEyOTQsIDB4MDA3MCwKLQkweDAwN2YsIDB4MjBlMCwgMHgxNTdmLCAweDE0N2YsIDB4MTM3ZiwgMHgwMTdmLCAweDAyN2YsIDB4MGQ3ZiwKLQkweDBmN2YsIDB4MDA3YywgMHhhMDE2LCAweDEwNzgsIDB4MTVmYSwgMHhhMDg1LCAweDAwMDEsIDB4MDA3OCwKLQkweDU3NTAsIDB4MDQ3ZSwgMHgwZTdlLCAweDBkN2UsIDB4MjAyOCwgMHgyMTMwLCAweGE2OTYsIDB4MDBmZiwKLQkweDAwYzAsIDB4NTc4MiwgMHhhNTk2LCAweGZmZmQsIDB4MDBjMCwgMHg1NzcyLCAweDIwMDksIDB4MDA3ZiwKLQkweDAwNzgsIDB4NTdiNSwgMHhhNTk2LCAweGZmZmUsIDB4MDBjMCwgMHg1NzdhLCAweDIwMDksIDB4MDA3ZSwKLQkweDAwNzgsIDB4NTdiNSwgMHhhNTk2LCAweGZmZmMsIDB4MDBjMCwgMHg1NzgyLCAweDIwMDksIDB4MDA4MCwKLQkweDAwNzgsIDB4NTdiNSwgMHgyMDExLCAweDAwMDAsIDB4MjAyMSwgMHgwMDgxLCAweDIwYTksIDB4MDA3ZSwKLQkweDIwNzEsIDB4YThiNiwgMHgyZTFjLCAweDgzZmYsIDB4MDBjMCwgMHg1Nzk0LCAweDgyZmYsIDB4MDBjMCwKLQkweDU3YTksIDB4MjQxMCwgMHgwMDc4LCAweDU3YTksIDB4MjM2OCwgMHg2ZjEwLCAweDAwN2UsIDB4MjEwMCwKLQkweGE3MDYsIDB4MDA3ZiwgMHg2YjE0LCAweDAwYzAsIDB4NTdhMywgMHhhMzQ2LCAweDAwYzAsIDB4NTdhMywKLQkweDI0MDgsIDB4MDA3OCwgMHg1N2I1LCAweDg3ZmYsIDB4MDBjMCwgMHg1N2E5LCAweDgzZmYsIDB4MDA0MCwKLQkweDU3OGUsIDB4ODQyMCwgMHg4ZTcwLCAweDAwZjAsIDB4NTc4YSwgMHg4MmZmLCAweDAwYzAsIDB4NTdiNCwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDU3YjYsIDB4MjIwOCwgMHhhMDA2LCAweDBkN2YsIDB4MGU3ZiwKLQkweDA0N2YsIDB4MDA3YywgMHhhMDg0LCAweDAwMDcsIDB4MDA3OSwgMHg1N2JmLCAweDAwN2MsIDB4NTdjNywKLQkweDU3YzcsIDB4NTdjNywgMHg1OTMzLCAweDU3YzcsIDB4NTdjOCwgMHg1N2UxLCAweDU4NTgsIDB4MDA3YywKLQkweDcxMTAsIDB4ZDFiYywgMHgwMDQwLCAweDU3ZTAsIDB4NzEyMCwgMHgyMTYwLCAweGFjOGMsIDB4MDAwZiwKLQkweDAwYzAsIDB4NTdlMCwgMHhhYzhhLCAweGFlMDAsIDB4MDA0OCwgMHg1N2UwLCAweDY4NTgsIDB4YWMwMiwKLQkweDAwYzgsIDB4NTdlMCwgMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwgMHgwMDQ2LCAweDEwNzgsIDB4Nzc1YywKLQkweDAwN2MsIDB4MGM3ZSwgMHhhNDg0LCAweDAxZmYsIDB4MDA0MCwgMHg1ODMzLCAweDcxMTAsIDB4ZDFiYywKLQkweDAwYzAsIDB4NTgzMywgMHgyMDExLCAweGFjODMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsIDB4MTA3OCwKLQkweDI1NGQsIDB4MDBjMCwgMHg1ODMzLCAweDEwNzgsIDB4NDU1YywgMHgwMGMwLCAweDU4MzMsIDB4NjYxMiwKLQkweDY1MTYsIDB4NjAwMCwgMHhkMGVjLCAweDAwYzAsIDB4NTgzMywgMHg2MjA0LCAweGEyOTQsIDB4ZmYwMCwKLQkweDgyMTcsIDB4YTI4NiwgMHgwMDA2LCAweDAwYzAsIDB4NTgxOCwgMHgwYzdlLCAweDEwNzgsIDB4NzZjNywKLQkweDAxN2YsIDB4MDA0MCwgMHg1ODM1LCAweDYxMWEsIDB4NjAxZiwgMHgwMDA2LCAweDcxMjAsIDB4NjEwYSwKLQkweDcxMzAsIDB4NjEyMiwgMHgyMDA5LCAweDAwNDQsIDB4MTA3OCwgMHg3NzVjLCAweDAwNzgsIDB4NTgzMywKLQkweDBjN2UsIDB4MTA3OCwgMHg3NmM3LCAweDAxN2YsIDB4MDA0MCwgMHg1ODMzLCAweDYxMWEsIDB4NjAxZiwKLQkweDAwMDQsIDB4NzEyMCwgMHg2MTBhLCAweGEyODYsIDB4MDAwNCwgMHgwMGMwLCAweDU4MmIsIDB4NjAwNywKLQkweDAwMDUsIDB4MDA3OCwgMHg1ODJkLCAweDYwMDcsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwKLQkweDVkZDcsIDB4MTA3OCwgMHg2MmQxLCAweDBjN2YsIDB4MDA3YywgMHgyMDAxLCAweGE3MGQsIDB4MjAwNCwKLQkweGQwZWMsIDB4MDA0MCwgMHg1ODNmLCAweDIwMTEsIDB4ODA0OSwgMHgxMDc4LCAweDM2MWIsIDB4MGM3ZSwKLQkweDEwNzgsIDB4OTE5NywgMHgwMTdmLCAweDAwNDAsIDB4NTgzMywgMHg2MTFhLCAweDYwMWYsIDB4MDAwNiwKLQkweDcxMjAsIDB4NjEwYSwgMHg3MTMwLCAweDYxMjIsIDB4NjAxMywgMHgwMzAwLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDA0MSwgMHgxMDc4LCAweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweDAwNzgsIDB4NTgzMywKLQkweDcxMTAsIDB4ZDFiYywgMHgwMDQwLCAweDU4NzAsIDB4NzAyMCwgMHgyMDYwLCAweGFjODQsIDB4MDAwZiwKLQkweDAwYzAsIDB4NTg3MCwgMHhhYzgyLCAweGFlMDAsIDB4MDA0OCwgMHg1ODcwLCAweDY4NTgsIDB4YWMwMiwKLQkweDAwYzgsIDB4NTg3MCwgMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwgMHgwMDQ1LCAweDEwNzgsIDB4Nzc1YywKLQkweDAwN2MsIDB4MDA3ZSwgMHgxMDc4LCAweDI5YmIsIDB4MDA3ZiwgMHgwMGMwLCAweDU4ODcsIDB4NzExMCwKLQkweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweGExOGUsIDB4MDAwMCwgMHgwMGMwLCAweDU4ODcsIDB4YTA4NCwKLQkweDAwMGYsIDB4YTA4YSwgMHgwMDA2LCAweDAwYzgsIDB4NTg4NywgMHgxMDc5LCAweDU4ODgsIDB4MDA3YywKLQkweDU4OGUsIDB4NTg4ZiwgMHg1ODhlLCAweDU4OGUsIDB4NThmZiwgMHg1OTBlLCAweDAwN2MsIDB4NzExMCwKLQkweGQxYmMsIDB4MDA0MCwgMHg1ODk3LCAweDcwMmMsIDB4ZDA4NCwgMHgwMDQwLCAweDU4ZmUsIDB4NzAwYywKLQkweDcxMDgsIDB4MTA3OCwgMHgyNTRkLCAweDAwYzAsIDB4NThmZSwgMHgxMDc4LCAweDQ1NWMsIDB4MDBjMCwKLQkweDU4ZmUsIDB4NjYxMiwgMHg2NTE2LCAweDYyMDQsIDB4NzExMCwgMHhkMWJjLCAweDAwNDAsIDB4NThjOSwKLQkweGEyOGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMDQsIDB4MDA0MCwgMHg1OGIyLCAweGExODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4NThlZiwgMHgwYzdlLCAweDEwNzgsIDB4NTkxZCwgMHgwYzdmLCAweDAwNDAsIDB4NThmZSwKLQkweDBjN2UsIDB4MTA3OCwgMHg3NmM3LCAweDAxN2YsIDB4MDA0MCwgMHg1OGZlLCAweDYxMWEsIDB4NjAxZiwKLQkweDAwMDIsIDB4NzEyMCwgMHg2MTBhLCAweDIwMDksIDB4MDA4OCwgMHgxMDc4LCAweDc3NWMsIDB4MDA3OCwKLQkweDU4ZmUsIDB4YTI4YywgMHgwMGZmLCAweGExODYsIDB4MDAwNiwgMHgwMDQwLCAweDU4ZGUsIDB4YTE4NiwKLQkweDAwMDQsIDB4MDA0MCwgMHg1OGRlLCAweGEyOTQsIDB4ZmYwMCwgMHg4MjE3LCAweGEyODYsIDB4MDAwNCwKLQkweDAwNDAsIDB4NThkZSwgMHhhMjg2LCAweDAwMDYsIDB4MDBjMCwgMHg1OGVmLCAweDBjN2UsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDE3ZiwgMHgwMDQwLCAweDU4ZmUsIDB4NjExYSwgMHg2MDFmLCAweDAwMDUsIDB4NzEyMCwKLQkweDYxMGEsIDB4MjAwOSwgMHgwMDg4LCAweDEwNzgsIDB4Nzc1YywgMHgwMDc4LCAweDU4ZmUsIDB4MGM3ZSwKLQkweDEwNzgsIDB4NzZjNywgMHgwMTdmLCAweDAwNDAsIDB4NThmZSwgMHg2MTFhLCAweDYwMWYsIDB4MDAwNCwKLQkweDcxMjAsIDB4NjEwYSwgMHgyMDA5LCAweDAwMDEsIDB4MTA3OCwgMHg3NzVjLCAweDAwN2MsIDB4NzExMCwKLQkweGQxYmMsIDB4MDA0MCwgMHg1OTBkLCAweDEwNzgsIDB4NTkxZCwgMHgwMDQwLCAweDU5MGQsIDB4NzEyNCwKLQkweDYxMGEsIDB4MjAwOSwgMHgwMDg5LCAweDEwNzgsIDB4Nzc1YywgMHgwMDdjLCAweDcxMTAsIDB4ZDFiYywKLQkweDAwNDAsIDB4NTkxYywgMHgxMDc4LCAweDU5MWQsIDB4MDA0MCwgMHg1OTFjLCAweDcxMjQsIDB4NjEwYSwKLQkweDIwMDksIDB4MDA4YSwgMHgxMDc4LCAweDc3NWMsIDB4MDA3YywgMHg3MDIwLCAweDIwNjAsIDB4YWM4NCwKLQkweDAwMGYsIDB4MDBjMCwgMHg1OTMwLCAweGFjODIsIDB4YWUwMCwgMHgwMDQ4LCAweDU5MzAsIDB4MjAwMSwKLQkweGE3MTYsIDB4MjAwNCwgMHhhYzAyLCAweDAwYzgsIDB4NTkzMCwgMHhhMDg1LCAweDAwMDEsIDB4MDA3YywKLQkweGEwMDYsIDB4MDA3OCwgMHg1OTJmLCAweDcxMTAsIDB4ZDFiYywgMHgwMGMwLCAweDU5NDksIDB4NzAyNCwKLQkweDIwNjAsIDB4YWM4NCwgMHgwMDBmLCAweDAwYzAsIDB4NTk0OSwgMHhhYzgyLCAweGFlMDAsIDB4MDA0OCwKLQkweDU5NDksIDB4Njg1OCwgMHhhYzAyLCAweDAwYzgsIDB4NTk0OSwgMHgyMDA5LCAweDAwNTEsIDB4MTA3OCwKLQkweDc3NWMsIDB4MDA3YywgMHgyMDcxLCAweGE5YzQsIDB4NzAwMywgMHgwMDAzLCAweDcwMGYsIDB4MDM2MSwKLQkweGEwMDYsIDB4NzAxYSwgMHg3MDEyLCAweDcwMTcsIDB4YWUwMCwgMHg3MDA3LCAweDAwMDAsIDB4NzAyNiwKLQkweDcwMmIsIDB4NmUxYywgMHg3MDMyLCAweDcwMzcsIDB4NmU3MCwgMHg3MDNiLCAweDAwMDIsIDB4NzAzZiwKLQkweDAwMDAsIDB4NzA0MywgMHhmZmZmLCAweDcwNDcsIDB4ZmZmZiwgMHgwMDdjLCAweDIwNzEsIDB4YTljNCwKLQkweDAwZTAsIDB4NWEzMiwgMHgyMDkxLCAweDYwMDAsIDB4NzAwYywgMHg4MDAxLCAweDcwMGUsIDB4MDBjMCwKLQkweDU5ZGUsIDB4NzAwZiwgMHgwMzYxLCAweDcwMDcsIDB4MDAwMSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDcxMzgsIDB4ODEwOSwgMHg3MTNhLCAweDAwYzAsIDB4NTlkYywgMHg3MDNiLCAweDAwMDIsIDB4MjAwOSwKLQkweDAxMDAsIDB4MjEwNCwgMHhhMDgyLCAweDAwMDMsIDB4MDBjOCwgMHg1OWRjLCAweDcwM2MsIDB4YTA4NiwKLQkweDAwMDEsIDB4MDBjMCwgMHg1OWI5LCAweDBkN2UsIDB4MjA2OSwgMHgwMTQwLCAweDY4MDQsIDB4YTA4NCwKLQkweDQwMDAsIDB4MDA0MCwgMHg1OTk3LCAweDY4MDMsIDB4MTAwMCwgMHgwMDc4LCAweDU5OWUsIDB4NjgwNCwKLQkweGEwODQsIDB4MTAwMCwgMHgwMDQwLCAweDU5OWUsIDB4NjgwMywgMHgwMTAwLCAweDY4MDMsIDB4MDAwMCwKLQkweDcwM2YsIDB4MDAwMCwgMHgyMDY5LCAweGE5YjEsIDB4NjgwNCwgMHhhMDgyLCAweDAwMDYsIDB4MDBjMCwKLQkweDU5YWIsIDB4NjgwNywgMHgwMDAwLCAweDY4MzAsIDB4YTA4MiwgMHgwMDAzLCAweDAwYzAsIDB4NTliMiwKLQkweDY4MzMsIDB4MDAwMCwgMHgxMDc4LCAweDYyZDEsIDB4MTA3OCwgMHg2MzliLCAweDBkN2YsIDB4MDA3OCwKLQkweDU5ZGMsIDB4MGQ3ZSwgMHgyMDY5LCAweGE3MDAsIDB4Njk0OCwgMHg2ODY0LCAweGExMDIsIDB4MDBjOCwKLQkweDU5ZGIsIDB4MjA2OSwgMHhhOWIxLCAweDY4MDQsIDB4YTA4NiwgMHgwMDAwLCAweDAwYzAsIDB4NTlkYiwKLQkweDY4MzAsIDB4YTA4NiwgMHgwMDAwLCAweDAwYzAsIDB4NTlkYiwgMHg3MDNmLCAweDAwMDEsIDB4NjgwNywKLQkweDAwMDYsIDB4NjgzMywgMHgwMDAzLCAweDIwNjksIDB4MDEwMCwgMHg2ODMwLCAweDY4OWUsIDB4MjA2OSwKLQkweDAxNDAsIDB4NjgwMywgMHgwNjAwLCAweDBkN2YsIDB4MDA3OCwgMHg1OWUxLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAyNCwgMHhhMDBkLCAweDAwNDAsIDB4NTlmOSwgMHg3MDIwLCAweDgwMDEsIDB4NzAyMiwKLQkweDAwYzAsIDB4NTlmOSwgMHg3MDIzLCAweDAwMDksIDB4ODEwOSwgMHg3MTI2LCAweGExODYsIDB4MDNlOCwKLQkweDAwYzAsIDB4NTlmNCwgMHg3MDI4LCAweDEwN2EsIDB4ODFmZiwgMHgwMGMwLCAweDU5ZjksIDB4NzAyOCwKLQkweDEwN2EsIDB4NzAzMCwgMHhhMDBkLCAweDAwNDAsIDB4NWExMCwgMHg3MDJjLCAweDgwMDEsIDB4NzAyZSwKLQkweDAwYzAsIDB4NWExMCwgMHg3MDJmLCAweDAwMDksIDB4ODEwOSwgMHg3MTMyLCAweDAwNDAsIDB4NWEwZSwKLQkweGExODQsIDB4MDA3ZiwgMHgxMDQwLCAweDZlYTIsIDB4MDA3OCwgMHg1YTEwLCAweDcwMzQsIDB4MTA3YSwKLQkweDcwNDAsIDB4YTAwNSwgMHgwMDQwLCAweDVhMTgsIDB4MDA1MCwgMHg1YTE4LCAweDgwMDEsIDB4NzA0MiwKLQkweDcwNDQsIDB4YTAwNSwgMHgwMDQwLCAweDVhMjAsIDB4MDA1MCwgMHg1YTIwLCAweDgwMDEsIDB4NzA0NiwKLQkweDcwMTgsIDB4YTAwZCwgMHgwMDQwLCAweDVhMzEsIDB4NzAwOCwgMHg4MDAxLCAweDcwMGEsIDB4MDBjMCwKLQkweDVhMzEsIDB4NzAwYiwgMHgwMDA5LCAweDgxMDksIDB4NzExYSwgMHgwMGMwLCAweDVhMzEsIDB4NzAxYywKLQkweDEwN2EsIDB4MTI3ZiwgMHg3MDA0LCAweDAwNzksIDB4NWEzNSwgMHg1YTVjLCAweDVhNWQsIDB4NWE3OSwKLQkweDBlN2UsIDB4MjA3MSwgMHhhOWM0LCAweDcwMTgsIDB4YTAwNSwgMHgwMGMwLCAweDVhNDMsIDB4NzExYSwKLQkweDcyMWUsIDB4NzAwYiwgMHgwMDA5LCAweDBlN2YsIDB4MDA3YywgMHgwZTdlLCAweDAwN2UsIDB4MjA3MSwKLQkweGE5YzQsIDB4NzAxYywgMHhhMjA2LCAweDAwYzAsIDB4NWE0ZiwgMHg3MDFhLCAweDcwMWUsIDB4MDA3ZiwKLQkweDBlN2YsIDB4MDA3YywgMHgwZTdlLCAweDIwNzEsIDB4YTljNCwgMHg2MDg4LCAweGExMDIsIDB4MDA0OCwKLQkweDVhNWEsIDB4NjE4YSwgMHgwZTdmLCAweDAwN2MsIDB4MDA3YywgMHg3MTEwLCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4NWE2ZiwgMHg2MDg4LCAweDgwMDEsIDB4MDA0OCwgMHg1YTZmLCAweDYwOGEsIDB4MDBjMCwKLQkweDVhNmYsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHg2MmQxLCAweDEyN2YsIDB4ODEwOCwKLQkweGExODIsIDB4MDBmZiwgMHgwMDQ4LCAweDVhNzcsIDB4YTAwZSwgMHg3MDA3LCAweDAwMDIsIDB4NzExMiwKLQkweDAwN2MsIDB4NzAxNCwgMHgyMDYwLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYwM2MsIDB4YTAwNSwKLQkweDAwNDAsIDB4NWE4OCwgMHg4MDAxLCAweDYwM2UsIDB4MDBjMCwgMHg1YTg4LCAweDEwNzgsIDB4OGZhYywKLQkweDYwMTQsIDB4YTAwNSwgMHgwMDQwLCAweDVhYjIsIDB4ODAwMSwgMHg2MDE2LCAweDAwYzAsIDB4NWFiMiwKLQkweDYxMWMsIDB4YTE4NiwgMHgwMDAzLCAweDAwNDAsIDB4NWE5OSwgMHhhMTg2LCAweDAwMDYsIDB4MDBjMCwKLQkweDVhYjAsIDB4NjAxMCwgMHgyMDY4LCAweDY4NTQsIDB4YTA4YSwgMHgxOTlhLCAweDAwNDgsIDB4NWFiMCwKLQkweGEwODIsIDB4MTk5OSwgMHg2ODU2LCAweGEwOGEsIDB4MTk5YSwgMHgwMDQ4LCAweDVhYTksIDB4MjAwMSwKLQkweDE5OTksIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4YTEwOCwgMHg2MTE2LCAweDAwNzgsIDB4NWFiMiwKLQkweDEwNzgsIDB4OGFjZSwgMHgxMjdmLCAweGFjODgsIDB4MDAxMCwgMHg3MTE2LCAweDIwMDEsIDB4Y2UwMCwKLQkweGExMDIsIDB4MDA0OCwgMHg1YWJmLCAweDcwMTcsIDB4YWUwMCwgMHg3MDA3LCAweDAwMDAsIDB4MDA3YywKLQkweDBlN2UsIDB4MjA3MSwgMHhhOWM0LCAweDcwMjcsIDB4MDdkMCwgMHg3MDIzLCAweDAwMDksIDB4NzAzYiwKLQkweDAwMDIsIDB4MGU3ZiwgMHgwMDdjLCAweDIwMDEsIDB4YTljZCwgMHgyMDAzLCAweDAwMDAsIDB4MDA3YywKLQkweDBlN2UsIDB4MjA3MSwgMHhhOWM0LCAweDcxMzIsIDB4NzAyZiwgMHgwMDA5LCAweDBlN2YsIDB4MDA3YywKLQkweDIwMTEsIDB4YTlkMCwgMHgyMDEzLCAweDAwMDAsIDB4MDA3YywgMHgwZTdlLCAweDIwNzEsIDB4YTljNCwKLQkweDcxMWEsIDB4NzIxZSwgMHg3MDBiLCAweDAwMDksIDB4MGU3ZiwgMHgwMDdjLCAweDAyN2UsIDB4MGU3ZSwKLQkweDBmN2UsIDB4MjA3OSwgMHhhNzAwLCAweDdhMzQsIDB4ZDI5NCwgMHgwMDQwLCAweDViMTUsIDB4MjA3MSwKLQkweGE5YWMsIDB4MmUxNCwgMHhhMGZlLCAweDAwMDAsIDB4MDA0MCwgMHg1YjAyLCAweGEwZmUsIDB4MDAwMSwKLQkweDAwNDAsIDB4NWIwNiwgMHhhMGZlLCAweDAwMDIsIDB4MDBjMCwgMHg1YjExLCAweGEyOTIsIDB4MDA4NSwKLQkweDAwNzgsIDB4NWIwOCwgMHhhMjkyLCAweDAwMDUsIDB4MDA3OCwgMHg1YjA4LCAweGEyOTIsIDB4MDAwMiwKLQkweDIyNzIsIDB4MDA0MCwgMHg1YjBkLCAweDAwYzgsIDB4NWIxNSwgMHgyMDExLCAweDgwMzcsIDB4MTA3OCwKLQkweDM2MWIsIDB4MjAxMSwgMHhhOWFiLCAweDIyMDQsIDB4MjA3MiwgMHgwZjdmLCAweDBlN2YsIDB4MDI3ZiwKLQkweDAwN2MsIDB4MGM3ZSwgMHgyMDYxLCAweGFhMzMsIDB4MGM3ZiwgMHgwMDdjLCAweGExODQsIDB4MDAwZiwKLQkweDgwMDMsIDB4ODAwMywgMHg4MDAzLCAweGEwODAsIDB4YWEzMywgMHgyMDYwLCAweDAwN2MsIDB4Njg1NCwKLQkweGEwOGEsIDB4MTk5YSwgMHgwMDQ4LCAweDViMmUsIDB4MjAwMSwgMHgxOTk5LCAweGEwMDUsIDB4MDBjMCwKLQkweDViM2QsIDB4MGM3ZSwgMHgyMDYxLCAweGFhMzMsIDB4NjAxNCwgMHgwYzdmLCAweGEwMDUsIDB4MDBjMCwKLQkweDViNDIsIDB4MjAwMSwgMHgwMDFlLCAweDAwNzgsIDB4NWI0MiwgMHhhMDhlLCAweGZmZmYsIDB4MDBjMCwKLQkweDViNDIsIDB4YTAwNiwgMHg4MDAzLCAweDgwMGIsIDB4ODEwYiwgMHhhMTA4LCAweDYxMTYsIDB4Njg0YywKLQkweGEwOGMsIDB4MDBjMCwgMHhhMThlLCAweDAwYzAsIDB4MDA0MCwgMHg1YjllLCAweGQwYjQsIDB4MDBjMCwKLQkweDViNTksIDB4ZDBiYywgMHgwMGMwLCAweDViOGIsIDB4MjAwOSwgMHgwMDA2LCAweDEwNzgsIDB4NWJjMywKLQkweDAwN2MsIDB4ZDBmYywgMHgwMDQwLCAweDViNjQsIDB4YTA4NCwgMHgwMDAzLCAweDAwNDAsIDB4NWI2NCwKLQkweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDViYmMsIDB4NjAyNCwgMHhkMGQ0LCAweDAwNDAsIDB4NWI2ZSwKLQkweGMwZDQsIDB4NjAyNiwgMHg2ODYwLCAweDYwMmEsIDB4Njg1YywgMHg2MDJlLCAweDIwMDksIDB4YTc3NCwKLQkweDIxMDQsIDB4ZDA4NCwgMHgwMDQwLCAweDViODMsIDB4NjExOCwgMHhhMTg4LCAweDAwMjcsIDB4MjEwNCwKLQkweGQwOGMsIDB4MDBjMCwgMHg1YjgzLCAweDg3ZmYsIDB4MDBjMCwgMHg1YjgyLCAweDIwMDksIDB4MDA0MiwKLQkweDEwNzgsIDB4Nzc1YywgMHgwMDdjLCAweDg3ZmYsIDB4MDBjMCwgMHg1YjhhLCAweDIwMDksIDB4MDA0MywKLQkweDEwNzgsIDB4Nzc1YywgMHgwMDdjLCAweGQwZmMsIDB4MDA0MCwgMHg1Yjk2LCAweGEwODQsIDB4MDAwMywKLQkweDAwNDAsIDB4NWI5NiwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwgMHg1YmJjLCAweDg3ZmYsIDB4MDBjMCwKLQkweDViOWQsIDB4MjAwOSwgMHgwMDQyLCAweDEwNzgsIDB4Nzc1YywgMHgwMDdjLCAweGQwZmMsIDB4MDA0MCwKLQkweDViYWYsIDB4YTA4NCwgMHgwMDAzLCAweGEwOGUsIDB4MDAwMiwgMHgwMDQwLCAweDViYjMsIDB4ODdmZiwKLQkweDAwYzAsIDB4NWJhZSwgMHgyMDA5LCAweDAwNDEsIDB4MTA3OCwgMHg3NzVjLCAweDAwN2MsIDB4MTA3OCwKLQkweDViYzEsIDB4MDA3OCwgMHg1YmFlLCAweDg3ZmYsIDB4MDBjMCwgMHg1YmFlLCAweDIwMDksIDB4MDA0MywKLQkweDEwNzgsIDB4Nzc1YywgMHgwMDc4LCAweDViYWUsIDB4MjAwOSwgMHgwMDA0LCAweDEwNzgsIDB4NWJjMywKLQkweDAwN2MsIDB4MjAwOSwgMHgwMDAxLCAweDBkN2UsIDB4NjAxMCwgMHhhMGVjLCAweGYwMDAsIDB4MDA0MCwKLQkweDViZWYsIDB4MjA2OCwgMHg2OTUyLCAweDY4MDAsIDB4NjAxMiwgMHhhMTg2LCAweDAwMDEsIDB4MDBjMCwKLQkweDViZTUsIDB4Njk0YywgMHhhMThjLCAweDgxMDAsIDB4YTE4ZSwgMHg4MTAwLCAweDAwYzAsIDB4NWJlNSwKLQkweDBjN2UsIDB4MjA2MSwgMHhhYTMzLCAweDYyMDAsIDB4ZDI4YywgMHgwMGMwLCAweDViZTQsIDB4NjIwNCwKLQkweDgyMTAsIDB4MDA0OCwgMHg1YmU0LCAweDYyMDYsIDB4MGM3ZiwgMHgxMDc4LCAweDRhNzMsIDB4NjAxMCwKLQkweGEwNmQsIDB4MDc3ZSwgMHgyMDM5LCAweDAwMDAsIDB4MTBjMCwgMHg1YjI3LCAweDA3N2YsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MTU3ZSwgMHgwYzdlLCAweDIwNjEsIDB4YWEzMywgMHg2MDAwLCAweDgxZmYsIDB4MDA0MCwKLQkweDViZmMsIDB4YTIwNSwgMHgwMDc4LCAweDViZmQsIDB4YTIwNCwgMHg2MDAyLCAweDBjN2YsIDB4MTU3ZiwKLQkweDAwN2MsIDB4NjgwMCwgMHhkMDhjLCAweDAwYzAsIDB4NWMwZCwgMHg2ODA4LCAweGEwMDUsIDB4MDA0MCwKLQkweDVjMGQsIDB4ODAwMSwgMHg2ODBhLCAweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDIwYTksIDB4MDAxMCwKLQkweGEwMDYsIDB4ODAwNCwgMHg4MDg2LCAweDgxOGUsIDB4MDBjOCwgMHg1YzE3LCAweGEyMDAsIDB4MDBmMCwKLQkweDVjMTIsIDB4ODA4NiwgMHg4MThlLCAweDAwN2MsIDB4MTU3ZSwgMHgyMGE5LCAweDAwMTAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NWMzZCwgMHhhMTFhLCAweDAwYzgsIDB4NWMzZCwgMHg4MjEzLCAweDgxOGQsIDB4MDA0OCwKLQkweDVjMzAsIDB4YTExYSwgMHgwMGM4LCAweDVjMzEsIDB4MDBmMCwgMHg1YzI1LCAweDAwNzgsIDB4NWMzNSwKLQkweGExMWEsIDB4MjMwOCwgMHg4MjEwLCAweDAwZjAsIDB4NWMyNSwgMHgwMDdlLCAweDMyMDAsIDB4YTA4NCwKLQkweGY3ZmYsIDB4MjA4MCwgMHgwMDdmLCAweDE1N2YsIDB4MDA3YywgMHgwMDdlLCAweDMyMDAsIDB4YTA4NSwKLQkweDA4MDAsIDB4MDA3OCwgMHg1YzM5LCAweDEyN2UsIDB4MjA5MSwgMHgyMjAwLCAweDIwNzksIDB4YTliMSwKLQkweDEyN2YsIDB4MGQ3ZSwgMHgyMDY5LCAweGE5YjEsIDB4NjgwMywgMHgwMDA1LCAweDIwNjksIDB4MDAwNCwKLQkweDJkMDQsIDB4YTA4NSwgMHg4MDAxLCAweDIwNmEsIDB4MGQ3ZiwgMHgwMDdjLCAweDBjN2UsIDB4NjAyNywKLQkweDAwMDEsIDB4NzgwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDA3OSwgMHg1YzVlLCAweDVjNjgsIDB4NWM4ZCwKLQkweDVjZTgsIDB4NWM2ZSwgMHg1YzhkLCAweDVjNjgsIDB4NWM2NiwgMHg1YzY2LCAweDEwNzgsIDB4MTMzMiwKLQkweDEwNzgsIDB4NWFjYiwgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZiwgMHgwMDdjLCAweDYyYzAsIDB4ODJmZiwKLQkweDAwYzAsIDB4NWM3NCwgMHgwYzdmLCAweDAwN2MsIDB4MjAxMSwgMHg0MWRjLCAweDEwNzgsIDB4NWE0NSwKLQkweDc4MjgsIDB4YTA5MiwgMHgwMGM4LCAweDAwYzgsIDB4NWM4MywgMHg4MDAwLCAweDc4MmEsIDB4MTA3OCwKLQkweDQyMWIsIDB4MDA3OCwgMHg1YzcyLCAweDEwNzgsIDB4NDFkYywgMHg3ODA3LCAweDAwMDMsIDB4NzgyNywKLQkweDAwMDAsIDB4NzgyYiwgMHgwMDAwLCAweDAwNzgsIDB4NWM3MiwgMHgxMDc4LCAweDVhY2IsIDB4M2MwMCwKLQkweDAwN2UsIDB4MjAxMSwgMHgwMjA5LCAweDIwZTEsIDB4NDAwMCwgMHgyMjE0LCAweDAwN2YsIDB4MjBlMCwKLQkweDgyZmYsIDB4MDA0MCwgMHg1Y2FiLCAweDYyYzAsIDB4ODJmZiwgMHgwMGMwLCAweDVjYWIsIDB4NzgyYiwKLQkweDAwMDAsIDB4NzgyNCwgMHhhMDY1LCAweDEwNDAsIDB4MTMzMiwgMHgyMDA5LCAweDAwMTMsIDB4MTA3OCwKLQkweDc3NWMsIDB4MGM3ZiwgMHgwMDdjLCAweDM5MDAsIDB4YTA4MiwgMHhhYWUzLCAweDAwYzgsIDB4NWNiMiwKLQkweDEwNzgsIDB4NzQ3YSwgMHgwYzdlLCAweDc4MjQsIDB4YTA2NSwgMHgxMDQwLCAweDEzMzIsIDB4NzgwNCwKLQkweGEwODYsIDB4MDAwNCwgMHgwMDQwLCAweDVkMmQsIDB4NzgyOCwgMHhhMDkyLCAweDI3MTAsIDB4MDBjOCwKLQkweDVjYzgsIDB4ODAwMCwgMHg3ODJhLCAweDBjN2YsIDB4MTA3OCwgMHg2ZTAxLCAweDAwNzgsIDB4NWNhOSwKLQkweDYxMDQsIDB4YTE4NiwgMHgwMDAzLCAweDAwYzAsIDB4NWNkZiwgMHgwZTdlLCAweDIwNzEsIDB4YTcwMCwKLQkweDcwZDgsIDB4MGU3ZiwgMHhkMDhjLCAweDAwNDAsIDB4NWNkZiwgMHgwYzdlLCAweDBlN2UsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA3MSwgMHhhNzAwLCAweDEwNzgsIDB4NDIyNCwgMHgwZTdmLCAweDBjN2YsIDB4MTA3OCwKLQkweGE1ZDQsIDB4MjAwOSwgMHgwMDE0LCAweDEwNzgsIDB4Nzc1YywgMHgwYzdmLCAweDAwNzgsIDB4NWNhOSwKLQkweDIwMDEsIDB4YTljZCwgMHgyMDAzLCAweDAwMDAsIDB4NjJjMCwgMHg4MmZmLCAweDAwYzAsIDB4NWNmYywKLQkweDc4MmIsIDB4MDAwMCwgMHg3ODI0LCAweGEwNjUsIDB4MTA0MCwgMHgxMzMyLCAweDIwMDksIDB4MDAxMywKLQkweDEwNzgsIDB4NzdiMywgMHgwYzdmLCAweDAwN2MsIDB4MGM3ZSwgMHgwZDdlLCAweDM5MDAsIDB4YTA4MiwKLQkweGFhZTMsIDB4MDBjOCwgMHg1ZDA1LCAweDEwNzgsIDB4NzQ3YSwgMHg3ODI0LCAweGEwMDUsIDB4MTA0MCwKLQkweDEzMzIsIDB4NzgxYywgMHhhMDZkLCAweDEwNDAsIDB4MTMzMiwgMHg2ODAwLCAweGMwZGMsIDB4NjgwMiwKLQkweDc5MjQsIDB4MjE2MCwgMHgxMDc4LCAweDc3MmQsIDB4NjkzYywgMHg4MWZmLCAweDEwNDAsIDB4MTMzMiwKLQkweDgxMDksIDB4NjkzZSwgMHg2ODU0LCAweGEwMTUsIDB4MDA0MCwgMHg1ZDIxLCAweDdhMWUsIDB4MDA3OCwKLQkweDVkMjMsIDB4NzkxOCwgMHg3OTFlLCAweDc4MDcsIDB4MDAwMCwgMHg3ODI3LCAweDAwMDAsIDB4MGQ3ZiwKLQkweDBjN2YsIDB4MTA3OCwgMHg2MmQxLCAweDAwNzgsIDB4NWNmYSwgMHg2MTA0LCAweGExODYsIDB4MDAwMiwKLQkweDAwNDAsIDB4NWQzOCwgMHhhMTg2LCAweDAwMDQsIDB4MDA0MCwgMHg1ZDM4LCAweDAwNzgsIDB4NWNiYywKLQkweDc4MDgsIDB4YWMwNiwgMHgwMDQwLCAweDVjYmMsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4NWRkNywKLQkweDBjN2YsIDB4MTA3OCwgMHg2MmQxLCAweDAwNzgsIDB4NWNhOSwgMHgwYzdlLCAweDYwMjcsIDB4MDAwMiwKLQkweDYyYzgsIDB4ODJmZiwgMHgwMGMwLCAweDVkNjEsIDB4NjJjNCwgMHg4MmZmLCAweDAwYzAsIDB4NWQ2MSwKLQkweDc5M2MsIDB4YTFlNSwgMHgwMDAwLCAweDAwNDAsIDB4NWQ1YiwgMHgyMDA5LCAweDAwNDksIDB4MTA3OCwKLQkweDc3NWMsIDB4MGM3ZiwgMHgwMDdjLCAweDIwMTEsIDB4YTlkMCwgMHgyMDEzLCAweDAwMDAsIDB4MDA3OCwKLQkweDVkNTksIDB4MzkwOCwgMHhhMTkyLCAweGFhZTMsIDB4MDBjOCwgMHg1ZDY4LCAweDEwNzgsIDB4NzQ3YSwKLQkweDYwMTcsIDB4MDAxMCwgMHg3OTNjLCAweDgxZmYsIDB4MDA0MCwgMHg1ZDViLCAweDc5NDQsIDB4YTE5MiwKLQkweDc1MzAsIDB4MDBjOCwgMHg1ZDg1LCAweDgxMDgsIDB4Nzk0NiwgMHg3OTNjLCAweGExODgsIDB4MDAwNywKLQkweDIxMGMsIDB4YTE4ZSwgMHgwMDA2LCAweDAwYzAsIDB4NWQ4MSwgMHg2MDE3LCAweDAwMTIsIDB4MDA3OCwKLQkweDVkNTksIDB4NjAxNywgMHgwMDE2LCAweDAwNzgsIDB4NWQ1OSwgMHg3ODQ4LCAweGMwODUsIDB4Nzg0YSwKLQkweDAwNzgsIDB4NWQ1OSwgMHgwMDdlLCAweDAxN2UsIDB4MGM3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDYwMGYsIDB4MDAwMCwgMHgyYzA4LCAweDIwNjEsIDB4YTliMSwgMHg2MDIwLCAweDgwMDAsIDB4NjAyMiwKLQkweDYwMTAsIDB4YTAwNSwgMHgwMDQwLCAweDVkYTUsIDB4YTA4MCwgMHgwMDAzLCAweDIxMDIsIDB4NjExMiwKLQkweDEyN2YsIDB4MGM3ZiwgMHgwMTdmLCAweDAwN2YsIDB4MDA3YywgMHg2MTE2LCAweDYxMTIsIDB4MDA3OCwKLQkweDVkYTAsIDB4MGQ3ZSwgMHgyMDY5LCAweGE5YjEsIDB4NjAwMCwgMHhkMGQ0LCAweDAwNDAsIDB4NWRiZSwKLQkweDY4MjAsIDB4ODAwMCwgMHg2ODIyLCAweGEwODYsIDB4MDAwMSwgMHgwMGMwLCAweDVkYjksIDB4MmMwMCwKLQkweDY4MWUsIDB4NjgwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDA3OSwgMHg2MmQ5LCAweGMwZDUsIDB4NjAwMiwKLQkweDY4MTgsIDB4YTAwNSwgMHgwMDQwLCAweDVkZDAsIDB4NjA1NiwgMHg2MDViLCAweDAwMDAsIDB4MDA3ZSwKLQkweDJjMDAsIDB4NjgxYSwgMHgwZDdmLCAweDY4NWEsIDB4MjA2OSwgMHhhOWIxLCAweDAwNzgsIDB4NWRiMCwKLQkweDYwNTYsIDB4NjA1YSwgMHgyYzAwLCAweDY4MWEsIDB4NjgxZSwgMHgwMDc4LCAweDVkYjAsIDB4MDA3ZSwKLQkweDAxN2UsIDB4MGM3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHg2MDBmLCAweDAwMDAsIDB4MmMwOCwKLQkweDIwNjEsIDB4YTliMSwgMHg2MDIwLCAweDgwMDAsIDB4NjAyMiwgMHg2MDA4LCAweGEwMDUsIDB4MDA0MCwKLQkweDVkZjIsIDB4YTA4MCwgMHgwMDAzLCAweDIxMDIsIDB4NjEwYSwgMHgxMjdmLCAweDBjN2YsIDB4MDE3ZiwKLQkweDAwN2YsIDB4MDA3YywgMHg2MTBlLCAweDYxMGEsIDB4MDA3OCwgMHg1ZGVkLCAweDBjN2UsIDB4NjAwZiwKLQkweDAwMDAsIDB4MmMwOCwgMHgyMDYxLCAweGE5YjEsIDB4NjAzNCwgMHhhMDA1LCAweDAwNDAsIDB4NWUwNiwKLQkweGEwODAsIDB4MDAwMywgMHgyMTAyLCAweDYxMzYsIDB4MGM3ZiwgMHgwMDdjLCAweDYxM2EsIDB4NjEzNiwKLQkweDAwNzgsIDB4NWUwNCwgMHgwZjdlLCAweDBlN2UsIDB4MGQ3ZSwgMHgwYzdlLCAweDA2N2UsIDB4MDU3ZSwKLQkweDAzN2UsIDB4MDI3ZSwgMHgwMTdlLCAweDAwN2UsIDB4MTI3ZSwgMHhhMDJlLCAweDIwNzEsIDB4YTliMSwKLQkweDc2MzgsIDB4MjY2MCwgMHgyNjc4LCAweDIwOTEsIDB4ODAwMCwgMHg4Y2ZmLCAweDAwNDAsIDB4NWU4YywKLQkweDYwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4YTIwNiwgMHgwMGMwLCAweDVlODcsIDB4ODdmZiwKLQkweDAwNDAsIDB4NWUyZSwgMHg2MDIwLCAweGExMDYsIDB4MDBjMCwgMHg1ZTg3LCAweDcwM2MsIDB4YWMwNiwKLQkweDAwYzAsIDB4NWU0NCwgMHgwMzdlLCAweDIwMTksIDB4MDAwMSwgMHgxMDc4LCAweDcwNTgsIDB4NzAzMywKLQkweDAwMDAsIDB4NzAzZiwgMHgwMDAwLCAweDcwNDMsIDB4MDAwMCwgMHg3MDQ3LCAweDAwMDAsIDB4NzA0YiwKLQkweDAwMDAsIDB4MDM3ZiwgMHgyMDI5LCAweDAwMDEsIDB4NzAzOCwgMHhhYzM2LCAweDAwYzAsIDB4NWU0YSwKLQkweDY2MGMsIDB4NzYzYSwgMHg3MDM0LCAweGFjMzYsIDB4MDBjMCwgMHg1ZTU4LCAweDJjMDAsIDB4YWYzNiwKLQkweDAwNDAsIDB4NWU1NiwgMHgyZjAwLCAweDcwMzYsIDB4MDA3OCwgMHg1ZTU4LCAweDcwMzcsIDB4MDAwMCwKLQkweDY2MGMsIDB4MDY3ZSwgMHgyYzAwLCAweGFmMDYsIDB4MDA0MCwgMHg1ZTYxLCAweDdlMGUsIDB4MDA3OCwKLQkweDVlNjIsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4NWU4MiwKLQkweDYwMTAsIDB4MjA2OCwgMHg2MDFjLCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDVlOWQsIDB4NjgzNywKLQkweDAxMDMsIDB4NmI0YSwgMHg2ODQ3LCAweDAwMDAsIDB4MDE3ZSwgMHgwMzdlLCAweDA3N2UsIDB4MTA3OCwKLQkweDhmOGQsIDB4MTA3OCwgMHhhNGYyLCAweDEwNzgsIDB4NGE3MywgMHgwNzdmLCAweDAzN2YsIDB4MDE3ZiwKLQkweDEwNzgsIDB4OGVjOSwgMHgxMDc4LCAweDhlZDYsIDB4MGM3ZiwgMHgwMDc4LCAweDVlMWQsIDB4MmM3OCwKLQkweDYwMGMsIDB4MjA2MCwgMHgwMDc4LCAweDVlMWQsIDB4ODVmZiwgMHgwMDQwLCAweDVlOTEsIDB4MTA3OCwKLQkweDYzOWIsIDB4MTI3ZiwgMHgwMDdmLCAweDAxN2YsIDB4MDI3ZiwgMHgwMzdmLCAweDA1N2YsIDB4MDY3ZiwKLQkweDBjN2YsIDB4MGQ3ZiwgMHgwZTdmLCAweDBmN2YsIDB4MDA3YywgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4NWU2ZiwgMHgwMTdlLCAweDAzN2UsIDB4MDc3ZSwgMHgxMDc4LCAweGE0ZjIsIDB4MTA3OCwKLQkweGExZGEsIDB4MDc3ZiwgMHgwMzdmLCAweDAxN2YsIDB4MDA3OCwgMHg1ZTgyLCAweDAwN2UsIDB4MDY3ZSwKLQkweDBjN2UsIDB4MGQ3ZSwgMHgwZjdlLCAweDIwMzEsIDB4MDAwMCwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzksIDB4YTliMSwgMHg3ODM4LCAweGEwNjUsIDB4MDA0MCwgMHg1ZWVmLCAweDYwMGMsIDB4MDA3ZSwKLQkweDYwMGYsIDB4MDAwMCwgMHg3ODNjLCAweGFjMDYsIDB4MDBjMCwgMHg1ZWQ2LCAweDAzN2UsIDB4MjAxOSwKLQkweDAwMDEsIDB4MTA3OCwgMHg3MDU4LCAweDc4MzMsIDB4MDAwMCwgMHg3ODNmLCAweDAwMDAsIDB4Nzg0MywKLQkweDAwMDAsIDB4Nzg0NywgMHgwMDAwLCAweDc4NGIsIDB4MDAwMCwgMHgwMzdmLCAweDEwNzgsIDB4OGQxNiwKLQkweDAwNDAsIDB4NWVlYSwgMHg2MDEwLCAweDIwNjgsIDB4NjAxYywgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwKLQkweDVlZjgsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywgMHgwMDAwLCAweDEwNzgsIDB4NGE3MywKLQkweDEwNzgsIDB4OGVjOSwgMHgxMDc4LCAweDhlZDYsIDB4MDA3ZiwgMHgwMDc4LCAweDVlYmIsIDB4N2UzYSwKLQkweDdlMzYsIDB4MTI3ZiwgMHgwZjdmLCAweDBkN2YsIDB4MGM3ZiwgMHgwNjdmLCAweDAwN2YsIDB4MDA3YywKLQkweDYwMWMsIDB4YTA4NiwgMHgwMDA2LCAweDAwYzAsIDB4NWVlMSwgMHgxMDc4LCAweGExZGEsIDB4MDA3OCwKLQkweDVlZWEsIDB4MDE3ZSwgMHgwMjdlLCAweDA4N2UsIDB4MjA0MSwgMHgwMDAwLCAweDEwNzgsIDB4NWYxYiwKLQkweDEwNzgsIDB4NWZkYiwgMHgwODdmLCAweDAyN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MTI3ZSwKLQkweDIwNzksIDB4YTliMSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHg2MDc2LCAweDEwNzgsIDB4NjBlYywKLQkweDEyN2YsIDB4MGY3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MGU3ZSwgMHgwZDdlLCAweDBjN2UsIDB4MDY3ZSwKLQkweDAxN2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE5YjEsIDB4NzYxNCwKLQkweDI2NjAsIDB4MjY3OCwgMHg4Y2ZmLCAweDAwNDAsIDB4NWZiNSwgMHg2MDE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4YTIwNiwgMHgwMGMwLCAweDVmYjAsIDB4ODhmZiwgMHgwMDQwLCAweDVmM2IsIDB4NjAyMCwKLQkweGExMDYsIDB4MDBjMCwgMHg1ZmIwLCAweDcwMjQsIDB4YWMwNiwgMHgwMGMwLCAweDVmNmIsIDB4MjA2OSwKLQkweDAxMDAsIDB4NjhjMCwgMHhhMDA1LCAweDAwNDAsIDB4NWY2NiwgMHgxMDc4LCAweDVhY2IsIDB4MTA3OCwKLQkweDZlMGYsIDB4NjhjMywgMHgwMDAwLCAweDEwNzgsIDB4NzM3OCwgMHg3MDI3LCAweDAwMDAsIDB4MDM3ZSwKLQkweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweGEzODQsIDB4MTAwMCwgMHgwMDQwLCAweDVmNWIsIDB4NjgwMywKLQkweDAxMDAsIDB4NjgwMywgMHgwMDAwLCAweDIwNjksIDB4MDEwMCwgMHg2ODI0LCAweGQwODQsIDB4MDA0MCwKLQkweDVmNjMsIDB4NjgyNywgMHgwMDAxLCAweDAzN2YsIDB4MDA3OCwgMHg1ZjZiLCAweDYwMDMsIDB4MDAwOSwKLQkweDYzMGEsIDB4MDA3OCwgMHg1ZmIwLCAweDcwMTQsIDB4YWMzNiwgMHgwMGMwLCAweDVmNzEsIDB4NjYwYywKLQkweDc2MTYsIDB4NzAxMCwgMHhhYzM2LCAweDAwYzAsIDB4NWY3ZiwgMHgyYzAwLCAweGFmMzYsIDB4MDA0MCwKLQkweDVmN2QsIDB4MmYwMCwgMHg3MDEyLCAweDAwNzgsIDB4NWY3ZiwgMHg3MDEzLCAweDAwMDAsIDB4NjYwYywKLQkweDA2N2UsIDB4MmMwMCwgMHhhZjA2LCAweDAwNDAsIDB4NWY4OCwgMHg3ZTBlLCAweDAwNzgsIDB4NWY4OSwKLQkweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwKLQkweDVmYTksIDB4NjAxYywgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwgMHg1ZmJlLCAweDY4MzcsIDB4MDEwMywKLQkweDZiNGEsIDB4Njg0NywgMHgwMDAwLCAweDAxN2UsIDB4MDM3ZSwgMHgwODdlLCAweDEwNzgsIDB4OGY4ZCwKLQkweDEwNzgsIDB4YTRmMiwgMHgxMDc4LCAweDRhNzMsIDB4MDg3ZiwgMHgwMzdmLCAweDAxN2YsIDB4MTA3OCwKLQkweDhlYzksIDB4MTA3OCwgMHg4ZWQ2LCAweDEwNzgsIDB4NzIzMywgMHgwYzdmLCAweDAwNzgsIDB4NWYyYSwKLQkweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDAwNzgsIDB4NWYyYSwgMHgxMjdmLCAweDAwN2YsIDB4MDE3ZiwKLQkweDA2N2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MGY3ZiwgMHgwMDdjLCAweDYwMWMsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDBjMCwgMHg1ZmNmLCAweDAxN2UsIDB4MDM3ZSwgMHgwODdlLCAweDEwNzgsIDB4YTRmMiwKLQkweDEwNzgsIDB4YTFkYSwgMHgwODdmLCAweDAzN2YsIDB4MDE3ZiwgMHgwMDc4LCAweDVmYTksIDB4NjAxYywKLQkweGEwODYsIDB4MDAwMiwgMHgwMGMwLCAweDVmYTksIDB4NjAwNCwgMHhhMDg2LCAweDAwODUsIDB4MDA0MCwKLQkweDVmOTYsIDB4MDA3OCwgMHg1ZmE5LCAweDBjN2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweGEyODAsIDB4YTgzNSwgMHgyMDA0LCAweGEwNjUsIDB4MDA0MCwgMHg2MDcyLCAweDBmN2UsIDB4MGU3ZSwKLQkweDBkN2UsIDB4MDY3ZSwgMHgyMDcxLCAweGE5YjEsIDB4NjY1NCwgMHg3MDE4LCAweGFjMDYsIDB4MDBjMCwKLQkweDVmZjIsIDB4NzYxYSwgMHg3MDFjLCAweGFjMDYsIDB4MDBjMCwgMHg1ZmZlLCAweDg2ZmYsIDB4MDBjMCwKLQkweDVmZmQsIDB4NzAxOCwgMHg3MDFlLCAweDAwNzgsIDB4NWZmZSwgMHg3NjFlLCAweDYwNTgsIDB4YTA3ZCwKLQkweDAwNDAsIDB4NjAwMywgMHg3ZTU2LCAweGE2ZWQsIDB4MDAwMCwgMHgwMDQwLCAweDYwMDksIDB4MmYwMCwKLQkweDY4NWEsIDB4NjA1NywgMHgwMDAwLCAweDYwNWIsIDB4MDAwMCwgMHg2MDAwLCAweGMwZDQsIDB4YzBkYywKLQkweDYwMDIsIDB4MTA3OCwgMHg0NGQzLCAweDAwNDAsIDB4NjA2ZSwgMHg3NjI0LCAweDg2ZmYsIDB4MDA0MCwKLQkweDYwNWMsIDB4YTY4MCwgMHgwMDA0LCAweDIwMDQsIDB4YWQwNiwgMHgwMGMwLCAweDYwNWMsIDB4MGQ3ZSwKLQkweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweGEwMDUsIDB4MDA0MCwgMHg2MDUzLCAweDEwNzgsIDB4NWFjYiwKLQkweDEwNzgsIDB4NmUwZiwgMHg2OGMzLCAweDAwMDAsIDB4MTA3OCwgMHg3Mzc4LCAweDcwMjcsIDB4MDAwMCwKLQkweDAzN2UsIDB4MjA2OSwgMHgwMTQwLCAweDZiMDQsIDB4YTM4NCwgMHgxMDAwLCAweDAwNDAsIDB4NjAzYywKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAwNDAsIDB4NjA0NCwgMHg2ODI3LCAweDAwMDEsIDB4MDM3ZiwgMHgwZDdmLCAweDBjN2UsIDB4NjAzYywKLQkweGEwMDUsIDB4MDA0MCwgMHg2MDRkLCAweDgwMDEsIDB4NjAzZSwgMHgyNjYwLCAweDEwNzgsIDB4OGVkNiwKLQkweDBjN2YsIDB4MDA3OCwgMHg2MDVjLCAweDBkN2YsIDB4MGM3ZSwgMHgyNjYwLCAweDYwMDMsIDB4MDAwOSwKLQkweDYzMGEsIDB4MGM3ZiwgMHgwMDc4LCAweDYwMTEsIDB4OGRmZiwgMHgwMDQwLCAweDYwNmEsIDB4NjgzNywKLQkweDAxMDMsIDB4NmI0YSwgMHg2ODQ3LCAweDAwMDAsIDB4MTA3OCwgMHg4ZjhkLCAweDEwNzgsIDB4YTRmMiwKLQkweDEwNzgsIDB4NGE3MywgMHgxMDc4LCAweDcyMzMsIDB4MDA3OCwgMHg2MDExLCAweDA2N2YsIDB4MGQ3ZiwKLQkweDBlN2YsIDB4MGY3ZiwgMHgxMjdmLCAweDAwN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MDY3ZSwKLQkweDBjN2UsIDB4MGQ3ZSwgMHgyMDMxLCAweDAwMDAsIDB4NzgxNCwgMHhhMDY1LCAweDAwNDAsIDB4NjBkMCwKLQkweDYwMGMsIDB4MDA3ZSwgMHg2MDBmLCAweDAwMDAsIDB4NzgyNCwgMHhhYzA2LCAweDAwYzAsIDB4NjBiNSwKLQkweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweGEwMDUsIDB4MDA0MCwgMHg2MGFmLCAweDEwNzgsIDB4NWFjYiwKLQkweDEwNzgsIDB4NmUwZiwgMHg2OGMzLCAweDAwMDAsIDB4MTA3OCwgMHg3Mzc4LCAweDc4MjcsIDB4MDAwMCwKLQkweDAzN2UsIDB4MjA2OSwgMHgwMTQwLCAweDZiMDQsIDB4YTM4NCwgMHgxMDAwLCAweDAwNDAsIDB4NjBhNCwKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAwNDAsIDB4NjBhYywgMHg2ODI3LCAweDAwMDEsIDB4MDM3ZiwgMHgwMDc4LCAweDYwYjUsIDB4NjAwMywKLQkweDAwMDksIDB4NjMwYSwgMHgyYzMwLCAweDAwNzgsIDB4NjBjZCwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwKLQkweDhkMTYsIDB4MDA0MCwgMHg2MGM5LCAweDYwMWMsIDB4YTA4NiwgMHgwMDAzLCAweDAwYzAsIDB4NjBkNywKLQkweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwgMHgxMDc4LCAweDRhNzMsIDB4MTA3OCwKLQkweDhlYzksIDB4MTA3OCwgMHg4ZWQ2LCAweDEwNzgsIDB4NzIzMywgMHgwMDdmLCAweDAwNzgsIDB4NjA3ZCwKLQkweDdlMTYsIDB4N2UxMiwgMHgwZDdmLCAweDBjN2YsIDB4MDY3ZiwgMHgwMDdmLCAweDAwN2MsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwNiwgMHgwMGMwLCAweDYwZTAsIDB4MTA3OCwgMHhhMWRhLCAweDAwNzgsIDB4NjBjOSwKLQkweDYwMWMsIDB4YTA4NiwgMHgwMDAyLCAweDAwYzAsIDB4NjBjOSwgMHg2MDA0LCAweGEwODYsIDB4MDA4NSwKLQkweDAwNDAsIDB4NjBjMCwgMHgwMDc4LCAweDYwYzksIDB4MDA3ZSwgMHgwNjdlLCAweDBjN2UsIDB4MGQ3ZSwKLQkweDc4MTgsIDB4YTA2NSwgMHgwMDQwLCAweDYxNWEsIDB4NjA1NCwgMHgwMDdlLCAweDYwNTcsIDB4MDAwMCwKLQkweDYwNWIsIDB4MDAwMCwgMHg2MDAwLCAweGMwZDQsIDB4YzBkYywgMHg2MDAyLCAweDEwNzgsIDB4NDRkMywKLQkweDAwNDAsIDB4NjE1NywgMHg3ZTI0LCAweDg2ZmYsIDB4MDA0MCwgMHg2MTQ5LCAweGE2ODAsIDB4MDAwNCwKLQkweDIwMDQsIDB4YWQwNiwgMHgwMGMwLCAweDYxNDksIDB4MGQ3ZSwgMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwKLQkweGEwMDUsIDB4MDA0MCwgMHg2MTQwLCAweDEwNzgsIDB4NWFjYiwgMHgxMDc4LCAweDZlMGYsIDB4NjhjMywKLQkweDAwMDAsIDB4MTA3OCwgMHg3Mzc4LCAweDc4MjcsIDB4MDAwMCwgMHgwMzdlLCAweDIwNjksIDB4MDE0MCwKLQkweDZiMDQsIDB4YTM4NCwgMHgxMDAwLCAweDAwNDAsIDB4NjEyOSwgMHg2ODAzLCAweDAxMDAsIDB4NjgwMywKLQkweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwgMHgwMDQwLCAweDYxMzEsIDB4NjgyNywKLQkweDAwMDEsIDB4MDM3ZiwgMHgwZDdmLCAweDBjN2UsIDB4NjAzYywgMHhhMDA1LCAweDAwNDAsIDB4NjEzYSwKLQkweDgwMDEsIDB4NjAzZSwgMHgyNjYwLCAweDEwNzgsIDB4OGVkNiwgMHgwYzdmLCAweDAwNzgsIDB4NjE0OSwKLQkweDBkN2YsIDB4MGM3ZSwgMHgyNjYwLCAweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDBjN2YsIDB4MDA3OCwKLQkweDYwZmUsIDB4OGRmZiwgMHgwMDQwLCAweDYxNTMsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MTA3OCwgMHg0YTczLCAweDEwNzgsIDB4NzIzMywgMHgwMDc4LCAweDYwZmUsIDB4MDA3ZiwKLQkweDAwNzgsIDB4NjBmMSwgMHg3ODFlLCAweDc4MWEsIDB4MGQ3ZiwgMHgwYzdmLCAweDA2N2YsIDB4MDA3ZiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgwZDdlLCAweDA2N2UsIDB4NjAwMCwgMHhkMGRjLCAweDAwNDAsIDB4NjE4MSwKLQkweDYwNGMsIDB4YTA2ZCwgMHgwMDQwLCAweDYxODEsIDB4Njg0OCwgMHhhNjA2LCAweDAwYzAsIDB4NjE4MSwKLQkweDIwNzEsIDB4YTliMSwgMHg3MDI0LCAweGEwMzUsIDB4MDA0MCwgMHg2MTgxLCAweGEwODAsIDB4MDAwNCwKLQkweDIwMDQsIDB4YWQwNiwgMHgwMGMwLCAweDYxODEsIDB4NjAwMCwgMHhjMGRjLCAweDYwMDIsIDB4MTA3OCwKLQkweDYxODUsIDB4MDY3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MDA3YywgMHgwZjdlLCAweDIwNzksIDB4MDEwMCwKLQkweDc4YzAsIDB4YTAwNSwgMHgwMGMwLCAweDYxOTQsIDB4MGM3ZSwgMHgyNjYwLCAweDYwMDMsIDB4MDAwOSwKLQkweDYzMGEsIDB4MGM3ZiwgMHgwMDc4LCAweDYxY2IsIDB4MTA3OCwgMHg2ZTBmLCAweDc4YzMsIDB4MDAwMCwKLQkweDEwNzgsIDB4NzM3OCwgMHg3MDI3LCAweDAwMDAsIDB4MDM3ZSwgMHgyMDc5LCAweDAxNDAsIDB4N2IwNCwKLQkweGEzODQsIDB4MTAwMCwgMHgwMDQwLCAweDYxYTgsIDB4NzgwMywgMHgwMTAwLCAweDc4MDMsIDB4MDAwMCwKLQkweDIwNzksIDB4MDEwMCwgMHg3ODI0LCAweGQwODQsIDB4MDA0MCwgMHg2MWIwLCAweDc4MjcsIDB4MDAwMSwKLQkweDEwNzgsIDB4NzM3OCwgMHgwMzdmLCAweDEwNzgsIDB4NDRkMywgMHgwYzdlLCAweDYwM2MsIDB4YTAwNSwKLQkweDAwNDAsIDB4NjFiYywgMHg4MDAxLCAweDYwM2UsIDB4MjY2MCwgMHgxMDc4LCAweDc3MmQsIDB4MGM3ZiwKLQkweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwgMHgxMDc4LCAweDhmOGQsIDB4MTA3OCwKLQkweDRhNzMsIDB4MTA3OCwgMHg3MjMzLCAweDBmN2YsIDB4MDA3YywgMHgwZTdlLCAweDBjN2UsIDB4MjA3MSwKLQkweGE5YjEsIDB4NzAwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDA3OSwgMHg2MWQ2LCAweDYxZTAsIDB4NjFlMywKLQkweDYxZmMsIDB4NjIxOCwgMHg2MjYyLCAweDYxZTAsIDB4NjFlMCwgMHg2MWRlLCAweDEwNzgsIDB4MTMzMiwKLQkweDBjN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDcwMjQsIDB4YTA2NSwgMHgwMDQwLCAweDYxZjEsIDB4NzAyMCwKLQkweDgwMDEsIDB4NzAyMiwgMHg2MDBjLCAweGEwMTUsIDB4MDA0MCwgMHg2MWY4LCAweDcyMTYsIDB4NjAwZiwKLQkweDAwMDAsIDB4NzAwNywgMHgwMDAwLCAweDcwMjcsIDB4MDAwMCwgMHgwYzdmLCAweDBlN2YsIDB4MDA3YywKLQkweDcyMTYsIDB4NzIxMiwgMHgwMDc4LCAweDYxZjEsIDB4NjAxOCwgMHgyMDYwLCAweDEwNzgsIDB4NDRkMywKLQkweDYwMDAsIDB4YzBkYywgMHg2MDAyLCAweDcwMjAsIDB4ODAwMSwgMHg3MDIyLCAweDAwNDAsIDB4NjIwZCwKLQkweDYwNTQsIDB4YTAxNSwgMHgwMDQwLCAweDYyMTQsIDB4NzIxZSwgMHg3MDA3LCAweDAwMDAsIDB4NzAyNywKLQkweDAwMDAsIDB4MGM3ZiwgMHgwZTdmLCAweDAwN2MsIDB4NzIxOCwgMHg3MjFlLCAweDAwNzgsIDB4NjIwZCwKLQkweDcwMjQsIDB4YTA2NSwgMHgwMDQwLCAweDYyNWYsIDB4NzAwYywgMHhhYzA2LCAweDAwYzAsIDB4NjIyZiwKLQkweDEwNzgsIDB4NzIzMywgMHg2MDBjLCAweGEwMTUsIDB4MDA0MCwgMHg2MjJiLCAweDcyMGUsIDB4NjAwZiwKLQkweDAwMDAsIDB4MDA3OCwgMHg2MjVkLCAweDcyMGUsIDB4NzIwYSwgMHgwMDc4LCAweDYyNWQsIDB4NzAxNCwKLQkweGFjMDYsIDB4MDBjMCwgMHg2MjQyLCAweDEwNzgsIDB4NzIzMywgMHg2MDBjLCAweGEwMTUsIDB4MDA0MCwKLQkweDYyM2UsIDB4NzIxNiwgMHg2MDBmLCAweDAwMDAsIDB4MDA3OCwgMHg2MjVkLCAweDcyMTYsIDB4NzIxMiwKLQkweDAwNzgsIDB4NjI1ZCwgMHg2MDFjLCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDYyNWQsIDB4NjAxOCwKLQkweDIwNjAsIDB4MTA3OCwgMHg0NGQzLCAweDYwMDAsIDB4YzBkYywgMHg2MDAyLCAweDEwNzgsIDB4NzIzMywKLQkweDcwMWMsIDB4YTA2NSwgMHgwMDQwLCAweDYyNWQsIDB4NjA1NCwgMHhhMDE1LCAweDAwNDAsIDB4NjI1YiwKLQkweDcyMWUsIDB4MDA3OCwgMHg2MjVkLCAweDcyMTgsIDB4NzIxZSwgMHg3MDI3LCAweDAwMDAsIDB4MGM3ZiwKLQkweDBlN2YsIDB4MDA3YywgMHg3MDI0LCAweGEwNjUsIDB4MDA0MCwgMHg2MjZmLCAweDEwNzgsIDB4NzIzMywKLQkweDYwMGMsIDB4YTAxNSwgMHgwMDQwLCAweDYyNzYsIDB4NzIwZSwgMHg2MDBmLCAweDAwMDAsIDB4MTA3OCwKLQkweDczNzgsIDB4NzAyNywgMHgwMDAwLCAweDBjN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDcyMGUsIDB4NzIwYSwKLQkweDAwNzgsIDB4NjI2ZiwgMHgwZDdlLCAweDIwNjksIDB4YTliMSwgMHg2ODMwLCAweGEwODQsIDB4MDAwMywKLQkweDAwNzksIDB4NjI4MiwgMHg2Mjg4LCAweDYyOGEsIDB4NjJiNCwgMHg2Mjg4LCAweDEwNzgsIDB4MTMzMiwKLQkweDBkN2YsIDB4MDA3YywgMHgwYzdlLCAweDY4NDAsIDB4YTA4NiwgMHgwMDAxLCAweDAwNDAsIDB4NjJhYSwKLQkweDY4M2MsIDB4YTA2NSwgMHgwMDQwLCAweDYyOWIsIDB4NjAwYywgMHhhMDE1LCAweDAwNDAsIDB4NjJhNiwKLQkweDZhM2EsIDB4NjAwZiwgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwgMHg2ODNmLCAweDAwMDAsIDB4MjAxMSwKLQkweGE5ZDAsIDB4MjAxMywgMHgwMDAwLCAweDBjN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDY4M2EsIDB4NjgzNiwKLQkweDAwNzgsIDB4NjI5YiwgMHg2ODQzLCAweDAwMDAsIDB4NjgzOCwgMHhhMDY1LCAweDAwNDAsIDB4NjI5YiwKLQkweDYwMDMsIDB4MDAwMywgMHgwMDc4LCAweDYyOWIsIDB4MGM3ZSwgMHg2ODQzLCAweDAwMDAsIDB4Njg0NywKLQkweDAwMDAsIDB4Njg0YiwgMHgwMDAwLCAweDY4M2MsIDB4YTA2NSwgMHgwMDQwLCAweDYyY2UsIDB4NjAwYywKLQkweGEwMTUsIDB4MDA0MCwgMHg2MmNhLCAweDZhM2EsIDB4NjAwZiwgMHgwMDAwLCAweDY4M2YsIDB4MDAwMCwKLQkweDAwNzgsIDB4NjJjZSwgMHg2ODNmLCAweDAwMDAsIDB4NjgzYSwgMHg2ODM2LCAweDBjN2YsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MGQ3ZSwgMHgyMDY5LCAweGE5YjEsIDB4NjgwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDA3OSwKLQkweDYyZDksIDB4NjJlMywgMHg2MzhhLCAweDYzOGEsIDB4NjM4YSwgMHg2MzhhLCAweDYzOGMsIDB4NjM4YSwKLQkweDYyZTEsIDB4MTA3OCwgMHgxMzMyLCAweDY4MjAsIDB4YTAwNSwgMHgwMGMwLCAweDYyZTksIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MGM3ZSwgMHg2ODBjLCAweGEwNjUsIDB4MDA0MCwgMHg2MmY4LCAweDY4MDcsIDB4MDAwNCwKLQkweDY4MjYsIDB4NjgyYiwgMHgwMDAwLCAweDEwNzgsIDB4NjNkNCwgMHgwYzdmLCAweDBkN2YsIDB4MDA3YywKLQkweDY4MTQsIDB4YTA2NSwgMHgwMDQwLCAweDYzMDYsIDB4NjgwNywgMHgwMDAxLCAweDY4MjYsIDB4NjgyYiwKLQkweDAwMDAsIDB4MTA3OCwgMHg2M2Q0LCAweDBjN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MDM3ZSwKLQkweDZhMWMsIDB4YTJmNSwgMHgwMDAwLCAweDAwNDAsIDB4NjM4NSwgMHg3MDRjLCAweGEwMGQsIDB4MDA0MCwKLQkweDYzMTUsIDB4NzA4OCwgMHhhMDA1LCAweDAwNDAsIDB4NjMyZCwgMHg3MDU0LCAweGEwNzUsIDB4MDA0MCwKLQkweDYzMWUsIDB4YTIwZSwgMHgwMDQwLCAweDYzODUsIDB4MDA3OCwgMHg2MzIzLCAweDY4MTgsIDB4YTIwZSwKLQkweDAwNDAsIDB4NjM4NSwgMHgyMDcwLCAweDcwNGMsIDB4YTAwZCwgMHgwMDQwLCAweDYzMTUsIDB4NzA4OCwKLQkweGEwMDUsIDB4MDBjMCwgMHg2MzE1LCAweDJlMDAsIDB4NjgxZSwgMHg3MzNjLCAweDcwMzgsIDB4YTMwMiwKLQkweDAwYzgsIDB4NjMxNSwgMHgxMDc4LCAweDc2ZmMsIDB4MDA0MCwgMHg2Mzg1LCAweDgzMTgsIDB4NzMzZSwKLQkweDYxMTIsIDB4MmUxMCwgMHg2MjFhLCAweGExODAsIDB4MDAxNCwgMHgyMDA0LCAweGEwODQsIDB4MDBmZiwKLQkweDYwMzIsIDB4YTE4MCwgMHgwMDE0LCAweDIwMDMsIDB4MDAwMCwgMHhhMTgwLCAweDAwMTUsIDB4MjAwNCwKLQkweGEwOGEsIDB4MTk5YSwgMHgwMDQ4LCAweDYzNGUsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsIDB4ODAxYiwKLQkweDgzMWIsIDB4YTMxOCwgMHg2MzE2LCAweDAzN2YsIDB4MGY3ZSwgMHgyYzc4LCAweDcxYTAsIDB4ZDFiYywKLQkweDAwNDAsIDB4NjM2NywgMHg3MTAwLCAweGQxZjQsIDB4MDA0MCwgMHg2MzYzLCAweDcxMTQsIDB4YTE4YywKLQkweDAwZmYsIDB4MDA3OCwgMHg2MzZjLCAweDIwMDksIDB4MDAwMCwgMHgwMDc4LCAweDYzNmMsIDB4YTFlMCwKLQkweDI5YzAsIDB4MmMwYywgMHhhMThjLCAweDAwZmYsIDB4MjA2MSwgMHgwMTAwLCAweDYxOWEsIDB4MTA3OCwKLQkweDY5NjUsIDB4NzMwMCwgMHhjM2RkLCAweDczMDIsIDB4NjgwNywgMHgwMDAyLCAweDJmMTgsIDB4NmIyNiwKLQkweDY4MmIsIDB4MDAwMCwgMHg3ODFmLCAweDAwMDMsIDB4NzgwMywgMHgwMDAxLCAweDc4MDcsIDB4MDA0MCwKLQkweDBmN2YsIDB4MGU3ZiwgMHgwYzdmLCAweDBkN2YsIDB4MDA3YywgMHgwMzdmLCAweDBlN2YsIDB4MGM3ZiwKLQkweDAwNzgsIDB4NjM4MywgMHgwZDdmLCAweDAwN2MsIDB4MGM3ZSwgMHg2ODBjLCAweGEwNjUsIDB4MDA0MCwKLQkweDYzOTgsIDB4NjgwNywgMHgwMDA0LCAweDY4MjYsIDB4NjgyYiwgMHgwMDAwLCAweDEwNzgsIDB4NjNkNCwKLQkweDBjN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MGQ3ZSwgMHgyMDY5LCAweGE5YjEsIDB4NjgzMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMGMwLCAweDYzYmIsIDB4NjgzOCwgMHhhMDdkLCAweDAwNDAsIDB4NjNiYiwKLQkweDY4MzMsIDB4MDAwMSwgMHg2ODNlLCAweDY4NDcsIDB4MDAwMCwgMHg2ODRiLCAweDAwMDAsIDB4MTI3ZSwKLQkweDBmN2UsIDB4MjA5MSwgMHgyMjAwLCAweDAyN2YsIDB4MTA3OCwgMHgxZDZkLCAweDAwYzAsIDB4NjNiZSwKLQkweDEyN2YsIDB4MTA3OCwgMHg2Y2IzLCAweDBkN2YsIDB4MGY3ZiwgMHgwMDdjLCAweDEyN2YsIDB4Njg0MywKLQkweDAwMDAsIDB4NzgwMywgMHgwMDAyLCAweDc4MGMsIDB4YTAxNSwgMHgwMDQwLCAweDYzZDAsIDB4NmEzYSwKLQkweDc4MGYsIDB4MDAwMCwgMHg2ODMzLCAweDAwMDAsIDB4NjgzZiwgMHgwMDAwLCAweDAwNzgsIDB4NjNiYiwKLQkweDY4M2EsIDB4NjgzNiwgMHgwMDc4LCAweDYzY2EsIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MTA3OSwKLQkweDYzZGEsIDB4MDA3YywgMHg2M2UzLCAweDYzZTgsIDB4NjgwOSwgMHg2OTIyLCAweDYzZTgsIDB4NjgwOSwKLQkweDY5MjIsIDB4NjNlMywgMHg2M2U4LCAweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDYyZDEsIDB4MDA3YywKLQkweDE1N2UsIDB4MTM3ZSwgMHgxNDdlLCAweDBjN2UsIDB4MGY3ZSwgMHg2MDA0LCAweGEwOGEsIDB4MDA0NCwKLQkweDEwYzgsIDB4MTMzMiwgMHg2MTE4LCAweDIxNzgsIDB4NzlhMCwgMHhkMWJjLCAweDAwNDAsIDB4NjQwNSwKLQkweDc5MDAsIDB4ZDFmNCwgMHgwMDQwLCAweDY0MDEsIDB4NzkxNCwgMHhhMThjLCAweDAwZmYsIDB4MDA3OCwKLQkweDY0MGEsIDB4MjAwOSwgMHgwMDAwLCAweDAwNzgsIDB4NjQwYSwgMHhhMWY4LCAweDI5YzAsIDB4MmYwYywKLQkweGExOGMsIDB4MDBmZiwgMHgyYzc4LCAweDIwNjEsIDB4MDEwMCwgMHg2MTlhLCAweGEwOGEsIDB4MDA0MCwKLQkweDAwYzgsIDB4NjQ1YywgMHgxMDc5LCAweDY0MWEsIDB4MGY3ZiwgMHgwYzdmLCAweDE0N2YsIDB4MTM3ZiwKLQkweDE1N2YsIDB4MDA3YywgMHg2NGMyLCAweDY1MGEsIDB4NjUzMiwgMHg2NWNkLCAweDY1ZmQsIDB4NjYwNSwKLQkweDY2MmMsIDB4NjYzZCwgMHg2NjRlLCAweDY2NTYsIDB4NjY2ZSwgMHg2NjU2LCAweDY2ZDksIDB4NjYzZCwKLQkweDY2ZmEsIDB4NjcwMiwgMHg2NjRlLCAweDY3MDIsIDB4NjcxMywgMHg2NDVhLCAweDY0NWEsIDB4NjQ1YSwKLQkweDY0NWEsIDB4NjQ1YSwgMHg2NDVhLCAweDY0NWEsIDB4NjQ1YSwgMHg2NDVhLCAweDY0NWEsIDB4NjQ1YSwKLQkweDZlZWYsIDB4NmYxNCwgMHg2ZjI5LCAweDZmNGMsIDB4NmY2ZCwgMHg2NjJjLCAweDY0NWEsIDB4NjYyYywKLQkweDY2NTYsIDB4NjQ1YSwgMHg2NTMyLCAweDY1Y2QsIDB4NjQ1YSwgMHg3NDljLCAweDY2NTYsIDB4NjQ1YSwKLQkweDc0YmMsIDB4NjY1NiwgMHg2NDVhLCAweDY0NWEsIDB4NjRiZCwgMHg2NDZiLCAweDY0NWEsIDB4NzRlMSwKLQkweDc1NTgsIDB4NzY0MCwgMHg2NDVhLCAweDc2NTEsIDB4NjYyNiwgMHg3NjZkLCAweDY0NWEsIDB4NmY4MiwKLQkweDY0NWEsIDB4NjQ1YSwgMHgxMDc4LCAweDEzMzIsIDB4MjEwMCwgMHgxMDc5LCAweDY0NjUsIDB4MGY3ZiwKLQkweDBjN2YsIDB4MTQ3ZiwgMHgxMzdmLCAweDE1N2YsIDB4MDA3YywgMHg2NDY5LCAweDY0NjksIDB4NjQ2OSwKLQkweDY0OWYsIDB4MTA3OCwgMHgxMzMyLCAweDBkN2UsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjczMSwKLQkweDc4MTAsIDB4MjA2OCwgMHgyMGEzLCAweDI0MTQsIDB4MjBhMywgMHgwMDE4LCAweDIwYTMsIDB4MDgwMCwKLQkweDY4M2MsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2ODUwLCAweDIwYTIsIDB4Njg1NCwgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTgsIDB4MTA3OCwgMHg2ZGZiLCAweDBkN2YsIDB4MDA3YywKLQkweDBkN2UsIDB4NzgxOCwgMHgyMDY4LCAweDY4YTAsIDB4YTA4MiwgMHgwMDdlLCAweDAwNDgsIDB4NjQ5YywKLQkweGEwODUsIDB4MDAwMSwgMHgwZDdmLCAweDAwN2MsIDB4YTAwNiwgMHgwMDc4LCAweDY0OWEsIDB4MGQ3ZSwKLQkweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDY3MzEsIDB4MjBhMywgMHgwNTAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDc4MTAsIDB4YTBlOCwgMHgwMDBmLCAweDY4MDgsIDB4MjBhMiwgMHg2ODBjLCAweDIwYTIsIDB4NjgxMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDY4MTgsIDB4MjBhMiwgMHg2ODFjLCAweDIwYTIsIDB4NjBjMywKLQkweDAwMTAsIDB4MTA3OCwgMHg2ZGZiLCAweDBkN2YsIDB4MDA3YywgMHg2MDMwLCAweDYwOWEsIDB4MTA3OCwKLQkweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDIwYTMsIDB4NTIwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgwZDdlLCAweDIwNjksIDB4YTc1MiwgMHg2ODA0LCAweGQwODQsIDB4MDA0MCwKLQkweDY0ZGMsIDB4NjgyOCwgMHgyMGEzLCAweDAwMDAsIDB4MDE3ZSwgMHgxMDc4LCAweDI1NjQsIDB4MjFhMiwKLQkweDAxN2YsIDB4MGQ3ZiwgMHgwMDc4LCAweDY0ZTEsIDB4MGQ3ZiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksIDB4YTcwNSwgMHg1M2E2LCAweDIwYTksIDB4MDAwNCwKLQkweDIwOTksIDB4YTcwMSwgMHg1M2E2LCAweDc4MTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4YTA4MiwKLQkweDAwN2YsIDB4MDA0OCwgMHg2NGZiLCAweDIwMDEsIDB4YTcxYiwgMHgyMGE2LCAweDIwMDEsIDB4YTcxYywKLQkweDIwYTYsIDB4MDA3OCwgMHg2NTAxLCAweDIwYTMsIDB4MDAwMCwgMHg2MDMwLCAweGEwODQsIDB4MDBmZiwKLQkweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMWMsIDB4MTA3OCwKLQkweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDIwYTMsIDB4MDUwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEwODIsIDB4MDA3ZiwKLQkweDAwNDgsIDB4NjUyMiwgMHgyMDAxLCAweGE3MWIsIDB4MjBhNiwgMHgyMDAxLCAweGE3MWMsIDB4MjBhNiwKLQkweDAwNzgsIDB4NjUyOCwgMHgyMGEzLCAweDAwMDAsIDB4NjAzMCwgMHhhMDg0LCAweDAwZmYsIDB4MjBhMiwKLQkweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweGE3MDUsIDB4NTNhNiwgMHg2MGMzLCAweDAwMTAsIDB4MTA3OCwKLQkweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDBjN2UsIDB4NzgxOCwKLQkweDIwNjAsIDB4MjAwMSwgMHgwMDAwLCAweDEwNzgsIDB4NDk3MiwgMHgwYzdmLCAweDc4MTgsIDB4YTA4MCwKLQkweDAwMjgsIDB4MjAwNCwgMHhhMDg2LCAweDAwN2UsIDB4MDBjMCwgMHg2NTRkLCAweDIwYTMsIDB4MDQwMCwKLQkweDYyMGMsIDB4YzJiNCwgMHg2MjBlLCAweDAwNzgsIDB4NjU0ZiwgMHgyMGEzLCAweDAzMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhhMDg2LCAweDAwN2UsIDB4MDBjMCwKLQkweDY1OWMsIDB4MjA5OSwgMHhhOThkLCAweDMzYTYsIDB4OTM5OCwgMHgzM2E2LCAweDkzOTgsIDB4MzMwNCwKLQkweGEwODQsIDB4M2ZmZiwgMHgyMGEyLCAweDkzOTgsIDB4MzNhNiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGE5LCAweDAwMDQsIDB4MjA5OSwKLQkweGE3MDUsIDB4NTNhNiwgMHgyMGE5LCAweDAwMDQsIDB4MjA5OSwgMHhhNzAxLCAweDUzYTYsIDB4MjBhOSwKLQkweDAwMTAsIDB4MjBhMywgMHgwMDAwLCAweDAwZjAsIDB4NjU3OSwgMHgyMDk5LCAweGE5OTUsIDB4MzMwNCwKLQkweGMwZGQsIDB4MjBhMiwgMHgyMDAxLCAweGE3NzIsIDB4MjAwNCwgMHhkMGU0LCAweDAwNDAsIDB4NjU5NCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4OTM5OCwgMHg5Mzk4LCAweDkzOTgsIDB4MzNhNiwKLQkweDIwYTksIDB4MDAwNCwgMHgwMDc4LCAweDY1OTYsIDB4MjBhOSwgMHgwMDA3LCAweDIwYTMsIDB4MDAwMCwKLQkweDAwZjAsIDB4NjU5NiwgMHgwMDc4LCAweDY1YmMsIDB4MjA5OSwgMHhhOThkLCAweDIwYTksIDB4MDAwOCwKLQkweDUzYTYsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksIDB4YTcwNSwgMHg1M2E2LCAweDIwYTksIDB4MDAwNCwKLQkweDIwOTksIDB4YTcwMSwgMHg1M2E2LCAweDIwYTksIDB4MDAwOCwgMHgyMGEzLCAweDAwMDAsIDB4MDBmMCwKLQkweDY1YWQsIDB4MjBhOSwgMHgwMDA4LCAweDIwYTMsIDB4MDAwMCwgMHgwMGYwLCAweDY1YjMsIDB4MjA5OSwKLQkweGE5OTUsIDB4MjBhOSwgMHgwMDA4LCAweDUzYTYsIDB4MjBhOSwgMHgwMDA4LCAweDIwYTMsIDB4MDAwMCwKLQkweDAwZjAsIDB4NjViZSwgMHgyMGE5LCAweDAwMGEsIDB4MjBhMywgMHgwMDAwLCAweDAwZjAsIDB4NjVjNCwKLQkweDYwYzMsIDB4MDA3NCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3MzEsIDB4MjBhMywgMHgyMDEwLCAweDIwYTMsIDB4MDAxNCwgMHgyMGEzLCAweDA4MDAsIDB4MjBhMywKLQkweDIwMDAsIDB4YTAwNiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTIsIDB4MGY3ZSwKLQkweDIwNzksIDB4YTc1MiwgMHg3OTA0LCAweDBmN2YsIDB4ZDFhYywgMHgwMGMwLCAweDY1ZTksIDB4YTA4NSwKLQkweDAwMjAsIDB4ZDFhNCwgMHgwMDQwLCAweDY1ZWUsIDB4YTA4NSwgMHgwMDEwLCAweGEwODUsIDB4MDAwMiwKLQkweDBkN2UsIDB4MDA3OCwgMHg2NmI3LCAweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxNCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3MzEsIDB4MjBhMywgMHg1MDAwLCAweDAwNzgsIDB4NjU0ZiwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3MzEsIDB4MjBhMywgMHgyMTEwLCAweDIwYTMsIDB4MDAxNCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NjBjMywgMHgwMDE0LCAweDEwNzgsIDB4NmRmYiwgMHgwMDdjLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjdiOSwgMHgwMDc4LCAweDY2MzAsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjdjMiwKLQkweDIwYTMsIDB4MDIwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAwNCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3YzIsIDB4MjBhMywgMHgwMTAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDMsIDB4MjBhMywKLQkweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDEwNzgsIDB4NmRmYiwgMHgwMDdjLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjdjMiwgMHgyMGEzLCAweDAyMDAsIDB4MDA3OCwgMHg2NTRmLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjdjMiwgMHgyMGEzLCAweDAxMDAsIDB4MjBhMywgMHgwMDAwLCAweDc4MjgsIDB4YTAwNSwKLQkweDAwNDAsIDB4NjY2NSwgMHgyMGEyLCAweDAwNzgsIDB4NjY2NywgMHgyMGEzLCAweDAwMDMsIDB4NzgxMCwKLQkweDIwYTIsIDB4NjBjMywgMHgwMDA4LCAweDEwNzgsIDB4NmRmYiwgMHgwMDdjLCAweDBkN2UsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2N2MyLCAweDIwYTMsIDB4MDIxMCwgMHgyMGEzLCAweDAwMTQsIDB4MjBhMywKLQkweDA4MDAsIDB4NzgxOCwgMHgyMDY4LCAweDY4OTQsIDB4YTA4NiwgMHgwMDE0LCAweDAwYzAsIDB4NjY5NCwKLQkweDY5OTgsIDB4YTE4NCwgMHhjMDAwLCAweDAwYzAsIDB4NjY5MCwgMHhkMWVjLCAweDAwNDAsIDB4NjY4YywKLQkweDIwYTMsIDB4MjEwMCwgMHgwMDc4LCAweDY2OTYsIDB4MjBhMywgMHgwMTAwLCAweDAwNzgsIDB4NjY5NiwKLQkweDIwYTMsIDB4MDQwMCwgMHgwMDc4LCAweDY2OTYsIDB4MjBhMywgMHgwNzAwLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTIsIDB4MGY3ZSwgMHgyMDc5LCAweGE3NTIsIDB4NzkwNCwKLQkweDBmN2YsIDB4ZDFhYywgMHgwMGMwLCAweDY2YTYsIDB4YTA4NSwgMHgwMDIwLCAweGQxYTQsIDB4MDA0MCwKLQkweDY2YWIsIDB4YTA4NSwgMHgwMDEwLCAweDIwMDksIDB4YTc3NCwgMHgyMTBjLCAweGQxODQsIDB4MDA0MCwKLQkweDY2YjUsIDB4Njk5YywgMHhkMThjLCAweDAwNDAsIDB4NjZiNywgMHhhMDg1LCAweDAwMDIsIDB4MDI3ZSwKLQkweDIwMDksIDB4YTc3MiwgMHgyMTBjLCAweGQxZTQsIDB4MDA0MCwgMHg2NmM1LCAweGMwYzUsIDB4YTA5NCwKLQkweDAwMzAsIDB4YTI5NiwgMHgwMDEwLCAweDAwNDAsIDB4NjZjZiwgMHhkMWVjLCAweDAwNDAsIDB4NjZjZiwKLQkweGEwOTQsIDB4MDAzMCwgMHhhMjk2LCAweDAwMTAsIDB4MDA0MCwgMHg2NmNmLCAweGMwYmQsIDB4MDI3ZiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDYwYzMsIDB4MDAxNCwgMHgxMDc4LCAweDZkZmIsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjdjMiwgMHgyMGEzLCAweDAyMTAsIDB4MjBhMywKLQkweDAwMTQsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTQsIDB4MTA3OCwKLQkweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2N2MyLCAweDIwYTMsIDB4MDIwMCwKLQkweDAwNzgsIDB4NjRjOCwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2N2MyLCAweDIwYTMsIDB4MDEwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDMsIDB4MjBhMywgMHgyYTAwLCAweDYwYzMsIDB4MDAwOCwKLQkweDEwNzgsIDB4NmRmYiwgMHgwMDdjLCAweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2N2MyLCAweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMGIsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwOCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywKLQkweDAyN2UsIDB4MDM3ZSwgMHgwNDdlLCAweDIwMTksIDB4MzIwMCwgMHgyMDIxLCAweDA4MDAsIDB4MDA3OCwKLQkweDY3MzgsIDB4MDI3ZSwgMHgwMzdlLCAweDA0N2UsIDB4MjAxOSwgMHgyMjAwLCAweDIwMjEsIDB4MDEwMCwKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAxNCwKLQkweGEyODYsIDB4MDA3ZSwgMHgwMGMwLCAweDY3NGIsIDB4YTM4NSwgMHgwMGZmLCAweDIwYTIsIDB4MjBhMywKLQkweGZmZmUsIDB4MDA3OCwgMHg2NzgwLCAweGEyODYsIDB4MDA3ZiwgMHgwMGMwLCAweDY3NTcsIDB4MGQ3ZSwKLQkweGEzODUsIDB4MDBmZiwgMHgyMGEyLCAweDIwYTMsIDB4ZmZmZCwgMHgwMDc4LCAweDY3NmUsIDB4ZDJiYywKLQkweDAwNDAsIDB4Njc3NiwgMHhhMjg2LCAweDAwODAsIDB4MGQ3ZSwgMHgwMGMwLCAweDY3NjYsIDB4YTM4NSwKLQkweDAwZmYsIDB4MjBhMiwgMHgyMGEzLCAweGZmZmMsIDB4MDA3OCwgMHg2NzZlLCAweGEyZTgsIDB4YTgzNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMzA1LCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg2Nzg0LCAweDBkN2UsIDB4YTJlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEzMDUsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MGQ3ZiwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MjMwLCAweDIyYTIsIDB4YTQ4NSwgMHgwMDI5LCAweDIwYTIsIDB4MDQ3ZiwKLQkweDAzN2YsIDB4MjBhMywgMHgwMDAwLCAweDEwNzgsIDB4NmRlYSwgMHgyMmEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDJmYTIsIDB4MjBhMywgMHhmZmZmLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MDI3ZiwKLQkweDAwN2MsIDB4MDI3ZSwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDIwYTMsIDB4MDJmZiwKLQkweDIwMTEsIDB4ZmZmYywgMHgyMmEyLCAweDBkN2UsIDB4MjA2OSwgMHhhNzFiLCAweDJkYTYsIDB4OGQ2OCwKLQkweDJkYTYsIDB4MGQ3ZiwgMHgyMGEzLCAweDIwMjksIDB4MjBhMywgMHgwMDAwLCAweDAwNzgsIDB4Njc4YiwKLQkweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHhmYzAyLCAweDIwYTMsIDB4MDAwMCwKLQkweDAwN2MsIDB4MDI3ZSwgMHgwMzdlLCAweDA0N2UsIDB4MjAxOSwgMHgzMzAwLCAweDIwMjEsIDB4MDgwMCwKLQkweDAwNzgsIDB4NjdjOSwgMHgwMjdlLCAweDAzN2UsIDB4MDQ3ZSwgMHgyMDE5LCAweDIzMDAsIDB4MjAyMSwKLQkweDAxMDAsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4YTA5MiwgMHgwMDdlLCAweDAwNDgsIDB4NjdlNiwgMHgwZDdlLCAweGEwZTgsIDB4YTgzNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMzA1LCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg2N2Y0LCAweDBkN2UsIDB4YTBlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEzMDUsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MGQ3ZiwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MjMwLCAweDIyYTIsIDB4YTQ4NSwgMHgwMDk4LCAweDIwYTIsIDB4MjBhMywKLQkweDAwMDAsIDB4MDQ3ZiwgMHgwMzdmLCAweDEwNzgsIDB4NmRlYSwgMHgyMmEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDdhMDgsIDB4MjJhMiwgMHgyZmEyLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MDI3ZiwKLQkweDAwN2MsIDB4MGM3ZSwgMHgwZjdlLCAweDYwMDQsIDB4YTA4YSwgMHgwMDg1LCAweDEwNDgsIDB4MTMzMiwKLQkweGEwOGEsIDB4MDA4YywgMHgxMGM4LCAweDEzMzIsIDB4NjExOCwgMHgyMTc4LCAweDc5YTAsIDB4ZDFiYywKLQkweDAwNDAsIDB4NjgyNywgMHg3OTAwLCAweGQxZjQsIDB4MDA0MCwgMHg2ODIzLCAweDc5MTQsIDB4YTE4YywKLQkweDAwZmYsIDB4MDA3OCwgMHg2ODJjLCAweDIwMDksIDB4MDAwMCwgMHgwMDc4LCAweDY4MmMsIDB4YTFmOCwKLQkweDI5YzAsIDB4MmYwYywgMHhhMThjLCAweDAwZmYsIDB4MmM3OCwgMHgyMDYxLCAweDAxMDAsIDB4NjE5YSwKLQkweGEwODIsIDB4MDA4NSwgMHgxMDc5LCAweDY4MzcsIDB4MGY3ZiwgMHgwYzdmLCAweDAwN2MsIDB4Njg0MCwKLQkweDY4NGIsIDB4Njg2NiwgMHg2ODNlLCAweDY4M2UsIDB4NjgzZSwgMHg2ODQwLCAweDEwNzgsIDB4MTMzMiwKLQkweDE0N2UsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4Njg3OSwgMHg2MGMzLCAweDAwMDAsIDB4MTA3OCwKLQkweDZkZmIsIDB4MTQ3ZiwgMHgwMDdjLCAweDE0N2UsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjhhZCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgwOCwgMHgyMGEyLCAweDc4MTAsIDB4MjBhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweGZmZmYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAwYywgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwgMHgwMDdjLCAweDE0N2UsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2OGVlLCAweDIwYTMsIDB4MDAwMywgMHgyMGEzLCAweDAzMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwNCwgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwKLQkweDAwN2MsIDB4MDI3ZSwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDc4MTgsIDB4YTA4MCwKLQkweDAwMjgsIDB4MjAwNCwgMHhhMDkyLCAweDAwN2UsIDB4MDA0OCwgMHg2ODk4LCAweDBkN2UsIDB4YTBlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4ODEwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDIwNjksIDB4YTcxYiwgMHgyZGE2LCAweDhkNjgsIDB4MmRhNiwgMHgwZDdmLCAweDAwNzgsIDB4NjhhNywKLQkweDBkN2UsIDB4YTBlOCwgMHhhODM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDgxMDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgwZDdmLCAweDIwYTMsIDB4MDAwMCwgMHg2MjMwLCAweDIyYTIsIDB4MjBhMywKLQkweDAwMDksIDB4MjBhMywgMHgwMDAwLCAweDAwNzgsIDB4Njc4YiwgMHgwMjdlLCAweDIwZTEsIDB4OTA4MCwKLQkweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEwOTIsIDB4MDA3ZSwKLQkweDAwNDgsIDB4NjhjYywgMHgwZDdlLCAweGEwZTgsIDB4YTgzNSwgMHgyZDZjLCAweDY4MTAsIDB4YTA4NSwKLQkweDg0MDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MjA2OSwgMHhhNzFiLCAweDJkYTYsIDB4OGQ2OCwKLQkweDJkYTYsIDB4MGQ3ZiwgMHgwMDc4LCAweDY4ZGIsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHg4NDAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDBkN2YsIDB4MjBhMywKLQkweDAwMDAsIDB4NjIzMCwgMHgyMmEyLCAweDIwYTMsIDB4MDA5OSwgMHgyMGEzLCAweDAwMDAsIDB4MTA3OCwKLQkweDZkZWEsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4N2EwOCwgMHgyMmEyLCAweDdhMTAsIDB4MjJhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MDI3ZiwgMHgwMDdjLCAweDAyN2UsIDB4MjBlMSwKLQkweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDc4MTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4YTA5MiwKLQkweDAwN2UsIDB4MDA0OCwgMHg2OTBkLCAweDBkN2UsIDB4YTBlOCwgMHhhODM1LCAweDJkNmMsIDB4NjgxMCwKLQkweGEwODUsIDB4ODUwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGE3MWIsIDB4MmRhNiwKLQkweDhkNjgsIDB4MmRhNiwgMHgwZDdmLCAweDAwNzgsIDB4NjkxYywgMHgwZDdlLCAweGEwZTgsIDB4YTgzNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDg1MDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MGQ3ZiwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MjMwLCAweDIyYTIsIDB4MjBhMywgMHgwMDk5LCAweDIwYTMsIDB4MDAwMCwKLQkweDAwNzgsIDB4NjhkZiwgMHgwYzdlLCAweDBmN2UsIDB4MmM3OCwgMHg3ODA0LCAweGEwOGEsIDB4MDA0MCwKLQkweDEwNDgsIDB4MTMzMiwgMHhhMDhhLCAweDAwNTMsIDB4MTBjOCwgMHgxMzMyLCAweDc5MTgsIDB4MjE2MCwKLQkweDYxYTAsIDB4ZDFiYywgMHgwMDQwLCAweDY5NDEsIDB4NjEwMCwgMHhkMWY0LCAweDAwNDAsIDB4NjkzZCwKLQkweDYxMTQsIDB4YTE4YywgMHgwMGZmLCAweDAwNzgsIDB4Njk0NiwgMHgyMDA5LCAweDAwMDAsIDB4MDA3OCwKLQkweDY5NDYsIDB4YTFlMCwgMHgyOWMwLCAweDJjMGMsIDB4YTE4YywgMHgwMGZmLCAweDIwNjEsIDB4MDEwMCwKLQkweDYxOWEsIDB4YTA4MiwgMHgwMDQwLCAweDEwNzksIDB4Njk1MCwgMHgwZjdmLCAweDBjN2YsIDB4MDA3YywKLQkweDY5NjUsIDB4NmE3MywgMHg2YTE0LCAweDZjMjcsIDB4Njk2MywgMHg2OTYzLCAweDY5NjMsIDB4Njk2MywKLQkweDY5NjMsIDB4Njk2MywgMHg2OTYzLCAweDcxNGMsIDB4NzE1ZCwgMHg3MTZlLCAweDcxN2YsIDB4Njk2MywKLQkweDc2N2UsIDB4Njk2MywgMHg3MTNiLCAweDEwNzgsIDB4MTMzMiwgMHgwZDdlLCAweDE1N2UsIDB4MTQ3ZSwKLQkweDc4MGIsIDB4ZmZmZiwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2OWQwLCAweDc5MTAsIDB4MjE2OCwKLQkweDY5NDgsIDB4NzkyMiwgMHgyMWEyLCAweGEwMTYsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4Njk0YywKLQkweGExODQsIDB4MDAwZiwgMHgwMGMwLCAweDY5ODAsIDB4MjAwMSwgMHgwMDA1LCAweDAwNzgsIDB4Njk4YSwKLQkweGQxODQsIDB4MDA0MCwgMHg2OTg3LCAweDIwMDEsIDB4MDAwNCwgMHgwMDc4LCAweDY5OGEsIDB4YTA4NCwKLQkweDAwMDYsIDB4ODAwNCwgMHgwMTdlLCAweDIwMDgsIDB4NzgzMCwgMHhhMDg0LCAweDAwZmYsIDB4ODAwNywKLQkweGExMDUsIDB4MDE3ZiwgMHgyMGEyLCAweGQxYWMsIDB4MDA0MCwgMHg2OTlhLCAweDIwYTMsIDB4MDAwMiwKLQkweDAwNzgsIDB4NjlhNiwgMHhkMWI0LCAweDAwNDAsIDB4NjlhMSwgMHgyMGEzLCAweDAwMDEsIDB4MDA3OCwKLQkweDY5YTYsIDB4MjBhMywgMHgwMDAwLCAweDIyMzAsIDB4MDA3OCwgMHg2OWE4LCAweDZhODAsIDB4NmU3YywKLQkweDIwYTksIDB4MDAwOCwgMHhhZDgwLCAweDAwMTcsIDB4MjAwYywgMHg4MTBmLCAweDIxYTIsIDB4ODAwMCwKLQkweDAwZjAsIDB4NjlhYywgMHgyMmEyLCAweDI2YTIsIDB4NjBjMywgMHgwMDIwLCAweDIwZTEsIDB4OTA4MCwKLQkweDYwMTQsIDB4YTA4NCwgMHgwMDA0LCAweGEwODUsIDB4MDAwOSwgMHg2MDE2LCAweDIwMDEsIDB4YTljZCwKLQkweDIwMDMsIDB4MDdkMCwgMHgyMDAxLCAweGE5Y2MsIDB4MjAwMywgMHgwMDA5LCAweDIwMDEsIDB4YTlkMiwKLQkweDIwMDMsIDB4MDAwMiwgMHgxMDc4LCAweDE1OGMsIDB4MTQ3ZiwgMHgxNTdmLCAweDBkN2YsIDB4MDA3YywKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4N2ExOCwgMHhhMjgwLCAweDAwMjMsIDB4MjAxNCwKLQkweDgyMTAsIDB4YTI5NCwgMHgwMGZmLCAweDIyMDIsIDB4ODIxNywgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDY5ZjYsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwNjAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg2YTA1LCAweDBkN2UsIDB4YTBlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDYwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDBkN2YsIDB4MjBhMywgMHgwMDAwLCAweDYxMzAsIDB4MjFhMiwgMHgyMGEzLCAweDA4MjksIDB4MjBhMywKLQkweDAwMDAsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MmZhMiwgMHgyMGEzLCAweGZmZmYsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwN2MsIDB4MGQ3ZSwgMHgxNTdlLCAweDEzN2UsIDB4MTQ3ZSwKLQkweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDZhMzQsIDB4NzgxMCwgMHgyMDY4LCAweDY4NjAsIDB4MjBhMiwKLQkweDY4NWMsIDB4MjBhMiwgMHg2ODgwLCAweDIwYTIsIDB4Njg3YywgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDYwYzMsIDB4MDAwYywgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwKLQkweDEzN2YsIDB4MTU3ZiwgMHgwZDdmLCAweDAwN2MsIDB4MDI3ZSwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhkMGJjLCAweDAwNDAsIDB4NmE1MiwKLQkweDBkN2UsIDB4YTBlOCwgMHhhODM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDA1MDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGE3MWIsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MGQ3ZiwKLQkweDAwNzgsIDB4NmE2MSwgMHgwZDdlLCAweGEwZTgsIDB4YTgzNSwgMHgyZDZjLCAweDY4MTAsIDB4YTA4NSwKLQkweDA1MDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MGQ3ZiwgMHgyMGEzLCAweDAwMDAsIDB4NjIzMCwKLQkweDIyYTIsIDB4MjBhMywgMHgwODg5LCAweDIwYTMsIDB4MDAwMCwgMHgxMDc4LCAweDZkZWEsIDB4MjJhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHg3YTA4LCAweDIyYTIsIDB4MmZhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MDI3ZiwgMHgwMDdjLCAweDBkN2UsIDB4MTU3ZSwgMHgxMzdlLCAweDE0N2UsIDB4NzgxMCwKLQkweGEwZWMsIDB4ZjAwMCwgMHgwMDQwLCAweDZhOGIsIDB4YTA2ZCwgMHgxMDc4LCAweDQ5NWYsIDB4MDA0MCwKLQkweDZhOGIsIDB4Njg0YywgMHhhMDg0LCAweDIwMjAsIDB4YTA4NiwgMHgyMDIwLCAweDAwYzAsIDB4NmE4YiwKLQkweDc4MjQsIDB4YzBjZCwgMHg3ODI2LCAweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDZiZTAsIDB4YTAxNiwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwgMHg3ODEwLCAweGEwODQsIDB4ZjAwMCwKLQkweDAwYzAsIDB4NmFhMiwgMHg3ODEwLCAweGEwODQsIDB4MDcwMCwgMHg4MDA3LCAweDEwNzksIDB4NmFhYSwKLQkweDAwNzgsIDB4NmFhNSwgMHhhMDA2LCAweDEwNzksIDB4NmFhYSwgMHgxNDdmLCAweDEzN2YsIDB4MTU3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHg2YWI0LCAweDZiNGMsIDB4NmI1NywgMHg2YjgxLCAweDZiOTUsIDB4NmJiMSwKLQkweDZiYmMsIDB4NmFiMiwgMHgxMDc4LCAweDEzMzIsIDB4MDE3ZSwgMHgwMzdlLCAweDY5NGMsIDB4YTE4YywKLQkweDAwMDMsIDB4MDA0MCwgMHg2YWJmLCAweGExODYsIDB4MDAwMywgMHgwMGMwLCAweDZhY2UsIDB4NmI3OCwKLQkweDc4MjQsIDB4ZDBjYywgMHgwMDQwLCAweDZhYzUsIDB4YzNlNSwgMHgyM2EyLCAweDY4NjgsIDB4MjBhMiwKLQkweDY4NjQsIDB4MjBhMiwgMHgwMzdmLCAweDAxN2YsIDB4MDA3OCwgMHg2YjhjLCAweGExODYsIDB4MDAwMSwKLQkweDEwYzAsIDB4MTMzMiwgMHg2Yjc4LCAweDc4MjQsIDB4ZDBjYywgMHgwMDQwLCAweDZhZDgsIDB4YzNlNSwKLQkweDIzYTIsIDB4Njg2OCwgMHgyMGEyLCAweDY4NjQsIDB4MjBhMiwgMHgyMmEyLCAweDY4NzQsIDB4MjBhMiwKLQkweDIyYTIsIDB4Njg3YywgMHgyMGEyLCAweDIwMDksIDB4MDAxOCwgMHhhMzg0LCAweDAzMDAsIDB4MDA0MCwKLQkweDZiNDYsIDB4ZDNjNCwgMHgwMDQwLCAweDZhZWUsIDB4Njg3YywgMHhhMTA4LCAweGQzY2MsIDB4MDA0MCwKLQkweDZhZjMsIDB4Njg3NCwgMHhhMTA4LCAweDE1N2UsIDB4MjBhOSwgMHgwMDBkLCAweGFkODAsIDB4MDAyMCwKLQkweDIwMWMsIDB4ODMxZiwgMHgyM2EyLCAweDgwMDAsIDB4MDBmMCwgMHg2YWY4LCAweDE1N2YsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHhhMTg0LCAweDAwMDMsIDB4MDA0MCwgMHg2YjQ2LCAweDIwYTEsIDB4MDIwYiwKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MDA3ZSwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDZiMjYsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwNzAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg2YjM1LCAweDBkN2UsIDB4YTBlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDcwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDBkN2YsIDB4MjBhMywgMHgwMDAwLCAweDYyMzAsIDB4MjJhMiwgMHgwMDdmLCAweDdiMjQsIDB4ZDNjYywKLQkweDAwNDAsIDB4NmIzZSwgMHgyMGEzLCAweDA4ODksIDB4MDA3OCwgMHg2YjQwLCAweDIwYTMsIDB4MDg5OCwKLQkweDIwYTIsIDB4MTA3OCwgMHg2ZGVhLCAweDIyYTIsIDB4MjBhMywgMHgwMDAwLCAweDYxYzIsIDB4MDM3ZiwKLQkweDAxN2YsIDB4MTA3OCwgMHg2ZGZiLCAweDAwN2MsIDB4MjAxMSwgMHgwMDA4LCAweDc4MjQsIDB4ZDBjYywKLQkweDAwNDAsIDB4NmI1MywgMHhjMmU1LCAweDIyYTIsIDB4YTAxNiwgMHgwMDc4LCAweDZiOGEsIDB4MjAxMSwKLQkweDAzMDIsIDB4NzgyNCwgMHhkMGNjLCAweDAwNDAsIDB4NmI1ZSwgMHhjMmU1LCAweDIyYTIsIDB4YTAxNiwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIwYTMsIDB4MDAxMiwgMHgyMmEyLCAweDIwYTMsIDB4MDAwOCwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjBhMywgMHg3MDAwLCAweDIwYTMsIDB4MDUwMCwKLQkweDIyYTIsIDB4MjBhMywgMHgwMDBhLCAweDIyYTIsIDB4MjJhMiwgMHgyMGEzLCAweDI1MDAsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4NjBjMywgMHgwMDMyLCAweDEwNzgsIDB4NmRmYiwKLQkweDAwN2MsIDB4MjAxMSwgMHgwMDI4LCAweDc4MjQsIDB4ZDBjYywgMHgwMDQwLCAweDZiODgsIDB4YzJlNSwKLQkweDIyYTIsIDB4YTAxNiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwKLQkweDYwYzMsIDB4MDAxOCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywgMHgyMDExLCAweDAxMDAsIDB4NzgyNCwKLQkweGQwY2MsIDB4MDA0MCwgMHg2YjljLCAweGMyZTUsIDB4MjJhMiwgMHhhMDE2LCAweDIyYTIsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIwYTMsIDB4MDAwOCwgMHgyMmEyLCAweDc4MzQsIDB4YTA4NCwKLQkweDAwZmYsIDB4MjBhMiwgMHgyMmEyLCAweDIyYTIsIDB4NjBjMywgMHgwMDIwLCAweDEwNzgsIDB4NmRmYiwKLQkweDAwN2MsIDB4MjAxMSwgMHgwMDA4LCAweDc4MjQsIDB4ZDBjYywgMHgwMDQwLCAweDZiYjgsIDB4YzJlNSwKLQkweDIyYTIsIDB4YTAxNiwgMHgwMDc4LCAweDZiOGEsIDB4MDM3ZSwgMHg3YjEwLCAweGEzODQsIDB4ZmYwMCwKLQkweDc4MTIsIDB4YTM4NCwgMHgwMGZmLCAweDgwMDEsIDB4MDBjMCwgMHg2YmNmLCAweDc4MjQsIDB4ZDBjYywKLQkweDAwNDAsIDB4NmJjYiwgMHhjMmU1LCAweDIyYTIsIDB4MDM3ZiwgMHgwMDc4LCAweDZiOGEsIDB4MDQ3ZSwKLQkweDIwMjEsIDB4MDgwMCwgMHgwMDdlLCAweDc4MjQsIDB4ZDBjYywgMHgwMDdmLCAweDAwNDAsIDB4NmJkOSwKLQkweGM0ZTUsIDB4MjRhMiwgMHgwNDdmLCAweDIyYTIsIDB4MjBhMiwgMHgwMzdmLCAweDAwNzgsIDB4NmI4YywKLQkweDAyN2UsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDZiZmUsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwNzAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg2YzBkLCAweDBkN2UsIDB4YTBlOCwKLQkweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDcwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDBkN2YsIDB4MjBhMywgMHgwMDAwLCAweDYyMzAsIDB4MjJhMiwgMHg3ODI0LCAweGQwY2MsIDB4MDA0MCwKLQkweDZjMTUsIDB4MjBhMywgMHgwODg5LCAweDAwNzgsIDB4NmMxNywgMHgyMGEzLCAweDA4OTgsIDB4MjBhMywKLQkweDAwMDAsIDB4MTA3OCwgMHg2ZGVhLCAweDIyYTIsIDB4MjBhMywgMHgwMDAwLCAweDdhMDgsIDB4MjJhMiwKLQkweDJmYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgwMjdmLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDE1N2UsIDB4MTM3ZSwgMHgxNDdlLCAweDAxN2UsIDB4MDM3ZSwgMHg3ODEwLCAweGEwODQsIDB4MDcwMCwKLQkweDgwMDcsIDB4MTA3OSwgMHg2YzNhLCAweDAzN2YsIDB4MDE3ZiwgMHgxNDdmLCAweDEzN2YsIDB4MTU3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHg2YzQyLCAweDZjNDIsIDB4NmM0NCwgMHg2YzQyLCAweDZjNDIsIDB4NmM0MiwKLQkweDZjNjksIDB4NmM0MiwgMHgxMDc4LCAweDEzMzIsIDB4NzkxMCwgMHhhMThjLCAweGY4ZmYsIDB4YTE4ZCwKLQkweDA2MDAsIDB4NzkxMiwgMHgyMGExLCAweDAyMGIsIDB4MjAwOSwgMHgwMDAzLCAweDEwNzgsIDB4NmM3MywKLQkweDBkN2UsIDB4MjA2OSwgMHhhNzUyLCAweDY4MDQsIDB4ZDBiYywgMHgwMDQwLCAweDZjNWUsIDB4NjgyYywKLQkweGEwODQsIDB4MDBmZiwgMHg4MDA3LCAweDIwYTIsIDB4MDA3OCwgMHg2YzYwLCAweDIwYTMsIDB4M2YwMCwKLQkweDBkN2YsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4NjBjMywgMHgwMDAxLCAweDEwNzgsIDB4NmRmYiwKLQkweDAwN2MsIDB4MjBhMSwgMHgwMjBiLCAweDIwMDksIDB4MDAwMywgMHgxMDc4LCAweDZjNzMsIDB4MjBhMywKLQkweDdmMDAsIDB4MDA3OCwgMHg2YzYxLCAweDAyN2UsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwKLQkweDc4MTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDZjOTEsIDB4MGQ3ZSwKLQkweGEwZTgsIDB4YTgzNSwgMHgyZDZjLCAweDY4MTAsIDB4YTA4NSwgMHgwMTAwLCAweDIwYTIsIDB4NjgxNCwKLQkweDIwYTIsIDB4MjA2OSwgMHhhNzFiLCAweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwKLQkweDZjYTAsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDEwMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDBkN2YsIDB4MjBhMywgMHgwMDAwLCAweDYyMzAsIDB4MjJhMiwKLQkweDIwYTMsIDB4MDg4OCwgMHhhMThkLCAweDAwMDgsIDB4MjFhMiwgMHgxMDc4LCAweDZkZWEsIDB4MjJhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHg3YTA4LCAweDIyYTIsIDB4MmZhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MDI3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MGQ3ZSwgMHgwYzdlLCAweDA1N2UsIDB4MDQ3ZSwKLQkweDAzN2UsIDB4MjA2MSwgMHgwMTAwLCAweDIwNzEsIDB4YTcwMCwgMHg2MTMwLCAweDc4MTgsIDB4MjA2OCwKLQkweDY4YTAsIDB4MjAyOCwgMHhkMGJjLCAweDAwYzAsIDB4NmNjYSwgMHg2OTEwLCAweDZhMTQsIDB4NjQzMCwKLQkweDAwNzgsIDB4NmNjZSwgMHg2OTEwLCAweDZhMTQsIDB4NzM2YywgMHg3NDcwLCAweDc4MWMsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDA0MCwgMHg2ZDJkLCAweGQ1YmMsIDB4MDA0MCwgMHg2Y2RlLCAweGExODUsIDB4MDEwMCwKLQkweDYwNjIsIDB4NjI2NiwgMHg2MzZhLCAweDY0NmUsIDB4MDA3OCwgMHg2Y2U1LCAweGExODUsIDB4MDEwMCwKLQkweDYwNjIsIDB4NjI2NiwgMHg2MDZiLCAweDAwMDAsIDB4NjQ2ZSwgMHg2MDczLCAweDA4MDksIDB4NjA3NywKLQkweDAwMDgsIDB4Njg4YywgMHg4MDAwLCAweGEwODQsIDB4MDBmZiwgMHg2ODhlLCAweDgwMDcsIDB4NjA3YSwKLQkweDYwN2YsIDB4MDAwMCwgMHgyZjAwLCAweDYwODIsIDB4NzgwOCwgMHg2MDg2LCAweDc4MTAsIDB4MjA3MCwKLQkweDcwMTQsIDB4NjA4YSwgMHg3MDEwLCAweDYwOGUsIDB4NzAwYywgMHg2MGM2LCAweDcwMDgsIDB4NjBjYSwKLQkweDY4NmMsIDB4NjBjZSwgMHg2MGFiLCAweDAwMzYsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsIDB4MDAwMCwKLQkweGE1ODIsIDB4MDA4MCwgMHgwMDQ4LCAweDZkMTcsIDB4NmEwMCwgMHhkMmY0LCAweDAwNDAsIDB4NmQxNSwKLQkweDZhMTQsIDB4YTI5NCwgMHgwMGZmLCAweDAwNzgsIDB4NmQxNywgMHgyMDExLCAweDAwMDAsIDB4NjI5ZSwKLQkweDYwMTcsIDB4MDAxNiwgMHgyMDA5LCAweDA3ZDAsIDB4NjBjNCwgMHhhMDg0LCAweGZmZjAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NmQyNCwgMHgyMDA5LCAweDFiNTgsIDB4MTA3OCwgMHg1YWQwLCAweDAzN2YsIDB4MDQ3ZiwKLQkweDA1N2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MDA3YywgMHg3ODEwLCAweDIwNzAsIDB4NzA0YywKLQkweGEwODQsIDB4MDAwMywgMHhhMDg2LCAweDAwMDIsIDB4MDA0MCwgMHg2ZDg1LCAweGQ1YmMsIDB4MDA0MCwKLQkweDZkNDEsIDB4YTE4NSwgMHgwMTAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MzZhLCAweDY0NmUsIDB4MDA3OCwKLQkweDZkNDgsIDB4YTE4NSwgMHgwMTAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MDZiLCAweDAwMDAsIDB4NjQ2ZSwKLQkweDYwNzMsIDB4MDg4MCwgMHg2MDc3LCAweDAwMDgsIDB4Njg4YywgMHg4MDAwLCAweGEwODQsIDB4MDBmZiwKLQkweDY4OGUsIDB4ODAwNywgMHg2MDdhLCAweDYwN2YsIDB4MDAwMCwgMHgyZjAwLCAweDYwODYsIDB4NzgwOCwKLQkweDYwODIsIDB4NzA2MCwgMHg2MDhhLCAweDcwNWMsIDB4NjA4ZSwgMHg3MDgwLCAweDYwYzYsIDB4NzA3YywKLQkweDYwY2EsIDB4NzA3YywgMHg3OTJjLCAweGExMDgsIDB4NzkyZSwgMHg3MDgwLCAweDc5MjgsIDB4YTEwOSwKLQkweDc5MmEsIDB4Njg2YywgMHg2MGNlLCAweDYwYWIsIDB4MDAzNiwgMHg2MGFmLCAweDk1ZDUsIDB4NjBkNywKLQkweDAwMDAsIDB4YTU4MiwgMHgwMDgwLCAweDAwNDgsIDB4NmQ4MCwgMHg2YTAwLCAweGQyZjQsIDB4MDA0MCwKLQkweDZkN2UsIDB4NmExNCwgMHhhMjk0LCAweDAwZmYsIDB4MDA3OCwgMHg2ZDgwLCAweDIwMTEsIDB4MDAwMCwKLQkweDYyOWUsIDB4NjAxNywgMHgwMDEyLCAweDAwNzgsIDB4NmQxYSwgMHhkNWJjLCAweDAwNDAsIDB4NmQ5MCwKLQkweGExODUsIDB4MDcwMCwgMHg2MDYyLCAweDYyNjYsIDB4NjM2YSwgMHg2NDZlLCAweDAwNzgsIDB4NmQ5NywKLQkweGExODUsIDB4MDcwMCwgMHg2MDYyLCAweDYyNjYsIDB4NjA2YiwgMHgwMDAwLCAweDY0NmUsIDB4MTA3OCwKLQkweDQ5NWYsIDB4MDA0MCwgMHg2ZGFkLCAweDBkN2UsIDB4NzgxMCwgMHhhMDZkLCAweDY4NGMsIDB4MGQ3ZiwKLQkweGEwODQsIDB4MjAyMCwgMHhhMDg2LCAweDIwMjAsIDB4MDBjMCwgMHg2ZGFkLCAweDc4MjQsIDB4YzBjZCwKLQkweDc4MjYsIDB4NjA3MywgMHgwODg5LCAweDAwNzgsIDB4NmRhZiwgMHg2MDczLCAweDA4OTgsIDB4NjA3NywKLQkweDAwMDAsIDB4Njg4YywgMHg4MDAwLCAweGEwODQsIDB4MDBmZiwgMHg2ODhlLCAweDgwMDcsIDB4NjA3YSwKLQkweDYwN2YsIDB4MDAwMCwgMHgyZjAwLCAweDYwODYsIDB4NzgwOCwgMHg2MDgyLCAweDcwMTQsIDB4NjA4YSwKLQkweDcwMTAsIDB4NjA4ZSwgMHg3MDBjLCAweDYwYzYsIDB4NzAwOCwgMHg2MGNhLCAweDY4NmMsIDB4NjBjZSwKLQkweDYwYWIsIDB4MDAzNiwgMHg2MGFmLCAweDk1ZDUsIDB4NjBkNywgMHgwMDAwLCAweGE1ODIsIDB4MDA4MCwKLQkweDAwNDgsIDB4NmRkZCwgMHg2YTAwLCAweGQyZjQsIDB4MDA0MCwgMHg2ZGRiLCAweDZhMTQsIDB4YTI5NCwKLQkweDAwZmYsIDB4MDA3OCwgMHg2ZGRkLCAweDIwMTEsIDB4MDAwMCwgMHg2MjllLCAweDc4MjQsIDB4ZDBjYywKLQkweDAwNDAsIDB4NmRlNiwgMHg2MDE3LCAweDAwMTYsIDB4MDA3OCwgMHg2ZDFhLCAweDYwMTcsIDB4MDAxMiwKLQkweDAwNzgsIDB4NmQxYSwgMHg3YTE4LCAweGEyODAsIDB4MDAyMywgMHgyMDE0LCAweDgyMTAsIDB4YTI5NCwKLQkweDAwZmYsIDB4MjIwMiwgMHg4MjE3LCAweDAwN2MsIDB4MGQ3ZSwgMHgyMDY5LCAweGE5YjEsIDB4Njg0MywKLQkweDAwMDEsIDB4MGQ3ZiwgMHgwMDdjLCAweDIwZTEsIDB4OTA4MCwgMHg2MGEzLCAweDAwNTYsIDB4NjBhNywKLQkweDk1NzUsIDB4MTA3OCwgMHg2ZTA2LCAweDEwNzgsIDB4NWFjMCwgMHgwMDdjLCAweDAwN2UsIDB4NjAxNCwKLQkweGEwODQsIDB4MDAwNCwgMHhhMDg1LCAweDAwMDksIDB4NjAxNiwgMHgwMDdmLCAweDAwN2MsIDB4MDA3ZSwKLQkweDBjN2UsIDB4MjA2MSwgMHgwMTAwLCAweDYwMTQsIDB4YTA4NCwgMHgwMDA0LCAweGEwODUsIDB4MDAwOCwKLQkweDYwMTYsIDB4MGM3ZiwgMHgwMDdmLCAweDAwN2MsIDB4MGM3ZSwgMHgwZDdlLCAweDAxN2UsIDB4MDI3ZSwKLQkweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAxNDAsIDB4NjkwNCwgMHhhMTk0LCAweDQwMDAsIDB4MDA0MCwKLQkweDZlNTksIDB4MTA3OCwgMHg2ZTBmLCAweDY4MDMsIDB4MTAwMCwgMHg2ODAzLCAweDAwMDAsIDB4MGM3ZSwKLQkweDIwNjEsIDB4YTliMSwgMHg2MTI4LCAweGExOTIsIDB4MDBjOCwgMHgwMGM4LCAweDZlNDQsIDB4ODEwOCwKLQkweDYxMmEsIDB4NjEyNCwgMHgwYzdmLCAweDgxZmYsIDB4MDA0MCwgMHg2ZTU0LCAweDEwNzgsIDB4NWFjMCwKLQkweDEwNzgsIDB4NmUwNiwgMHgwMDc4LCAweDZlNTQsIDB4NjEyNCwgMHhhMWU1LCAweDAwMDAsIDB4MDA0MCwKLQkweDZlNTEsIDB4MTA3OCwgMHhhNWQ0LCAweDEwNzgsIDB4NWFjYiwgMHgyMDA5LCAweDAwMTQsIDB4MTA3OCwKLQkweDc3NWMsIDB4MGM3ZiwgMHgwMDc4LCAweDZlNTQsIDB4MDI3ZiwgMHgwMTdmLCAweDBkN2YsIDB4MGM3ZiwKLQkweDAwN2MsIDB4MjAwMSwgMHhhOWNkLCAweDIwMDQsIDB4YTAwNSwgMHgwMGMwLCAweDZlNTQsIDB4MGM3ZSwKLQkweDIwNjEsIDB4YTliMSwgMHg2MTI4LCAweGExOTIsIDB4MDAwMywgMHgwMGM4LCAweDZlNDQsIDB4ODEwOCwKLQkweDYxMmEsIDB4MGM3ZiwgMHgxMDc4LCAweDVhYzAsIDB4MTA3OCwgMHg0MjI0LCAweDAwNzgsIDB4NmU1NCwKLQkweDBjN2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDAxN2UsIDB4MDI3ZSwgMHgxMDc4LCAweDVhZDgsIDB4MjA3MSwKLQkweGE5YjEsIDB4NzEzYywgMHg4MWZmLCAweDAwNDAsIDB4NmU5YSwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwKLQkweDAxNDAsIDB4NjkwNCwgMHhhMTk0LCAweDQwMDAsIDB4MDA0MCwgMHg2ZWEwLCAweDY4MDMsIDB4MTAwMCwKLQkweDY4MDMsIDB4MDAwMCwgMHgwMzdlLCAweDIwMTksIDB4MDAwMSwgMHgxMDc4LCAweDcwNTgsIDB4MDM3ZiwKLQkweDcxM2MsIDB4MjE2MCwgMHgxMDc4LCAweGE1ZDQsIDB4MjAwOSwgMHgwMDRhLCAweDEwNzgsIDB4Nzc1YywKLQkweDAwNzgsIDB4NmU5YSwgMHgwMjdmLCAweDAxN2YsIDB4MGU3ZiwgMHgwZDdmLCAweDBjN2YsIDB4MDA3YywKLQkweDAwNzgsIDB4NmU4YSwgMHgwZTdlLCAweDIwNzEsIDB4YTliMSwgMHg3MDQ4LCAweGQwODQsIDB4MDA0MCwKLQkweDZlYmMsIDB4NzEzYywgMHg4MWZmLCAweDAwNDAsIDB4NmViYywgMHgyMDcxLCAweDAxMDAsIDB4YTE4OCwKLQkweDAwMDcsIDB4MjEwYywgMHhhMThlLCAweDAwMDYsIDB4MDBjMCwgMHg2ZWJhLCAweDcwMTcsIDB4MDAxMiwKLQkweDAwNzgsIDB4NmViYywgMHg3MDE3LCAweDAwMTYsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MGQ3ZSwKLQkweDBjN2UsIDB4MDY3ZSwgMHgwNTdlLCAweDA0N2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDYwMTgsIDB4MjA2OCwgMHg2Y2EwLCAweDIwNzEsIDB4YTliMSwgMHg3MDE4LCAweDIwNjgsIDB4OGRmZiwKLQkweDAwNDAsIDB4NmVlNiwgMHg2OGEwLCAweGE0MDYsIDB4MDA0MCwgMHg2ZWRhLCAweDY4NTQsIDB4MjA2OCwKLQkweDAwNzgsIDB4NmVjZiwgMHg2MDEwLCAweDIwNjAsIDB4NjQzYywgMHg2NTQwLCAweDY2NDgsIDB4MmQ2MCwKLQkweDEwNzgsIDB4NDczNiwgMHgwMDQwLCAweDZlZTYsIDB4YTA4NSwgMHgwMDAxLCAweDEyN2YsIDB4MDA3ZiwKLQkweDA0N2YsIDB4MDU3ZiwgMHgwNjdmLCAweDBjN2YsIDB4MGQ3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDIwYTMsIDB4MTIwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NzgxYywgMHhhMDg2LCAweDAwMDQsIDB4MDBjMCwgMHg2ZjAxLCAweDYwOTgsIDB4MDA3OCwKLQkweDZmMDIsIDB4NjAzMCwgMHgyMGEyLCAweDc4MzQsIDB4MjBhMiwgMHg3ODM4LCAweDIwYTIsIDB4MjBhOSwKLQkweDAwMTAsIDB4YTAwNiwgMHgyMGEyLCAweDAwZjAsIDB4NmYwYSwgMHgyMGEyLCAweDIwYTIsIDB4NjBjMywKLQkweDAwMmMsIDB4MTA3OCwgMHg2ZGZiLCAweDAwN2MsIDB4MTU3ZSwgMHgxNDdlLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjczMSwgMHgyMGEzLCAweDBmMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDc4MDgsIDB4MjBhMiwgMHg2MGMzLCAweDAwMDgsIDB4MTA3OCwgMHg2ZGZiLCAweDE0N2YsIDB4MTU3ZiwKLQkweDAwN2MsIDB4MTU3ZSwgMHgxNDdlLCAweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDY3YzIsIDB4MjBhMywKLQkweDAyMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTksIDB4MDAwNiwgMHgyMDExLCAweGE3NDAsIDB4MjAxOSwKLQkweGE3NDEsIDB4MjNhNiwgMHgyMmE2LCAweGEzOTgsIDB4MDAwMiwgMHhhMjkwLCAweDAwMDIsIDB4MDBmMCwKLQkweDZmMzksIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMWMsIDB4MTA3OCwKLQkweDZkZmIsIDB4MTQ3ZiwgMHgxNTdmLCAweDAwN2MsIDB4MTU3ZSwgMHgxNDdlLCAweDAxN2UsIDB4MDI3ZSwKLQkweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDY3OTksIDB4MTA3OCwgMHg2N2IwLCAweDc4MTAsIDB4YTA4MCwKLQkweDAwMDAsIDB4MjAwNCwgMHhhMDgwLCAweDAwMTUsIDB4MjA5OCwgMHg3ODA4LCAweGEwODgsIDB4MDAwMiwKLQkweDIxYTgsIDB4NTNhNiwgMHhhMDgwLCAweDAwMDQsIDB4ODAwMywgMHg2MGMyLCAweDEwNzgsIDB4NmRmYiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgxNDdmLCAweDE1N2YsIDB4MDA3YywgMHgxNTdlLCAweDE0N2UsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDIwYTMsIDB4NjIwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NzgwOCwgMHgyMGEyLCAweDYwYzMsIDB4MDAwOCwgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwKLQkweDE1N2YsIDB4MDA3YywgMHgxNTdlLCAweDE0N2UsIDB4MDE3ZSwgMHgwMjdlLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjczMSwgMHg3ODEwLCAweGEwODAsIDB4MDAwMCwgMHgyMDA0LCAweGEwODAsIDB4MDAxNywKLQkweDIwOTgsIDB4NzgwOCwgMHhhMDg4LCAweDAwMDIsIDB4MjFhOCwgMHg1M2E2LCAweDgwMDMsIDB4NjBjMiwKLQkweDEwNzgsIDB4NmRmYiwgMHgwMjdmLCAweDAxN2YsIDB4MTQ3ZiwgMHgxNTdmLCAweDAwN2MsIDB4MGU3ZSwKLQkweDBjN2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE5YjEsIDB4NzAwYywKLQkweDIwNjAsIDB4OGNmZiwgMHgwMDQwLCAweDZmYmIsIDB4MTA3OCwgMHg4ZjEwLCAweDAwYzAsIDB4NmZiMiwKLQkweDEwNzgsIDB4N2M4MywgMHg2MDBjLCAweDAwN2UsIDB4MTA3OCwgMHg3NzJkLCAweDEwNzgsIDB4NzIzMywKLQkweDBjN2YsIDB4MDA3OCwgMHg2ZmE5LCAweDcwMGYsIDB4MDAwMCwgMHg3MDBiLCAweDAwMDAsIDB4MTI3ZiwKLQkweDAwN2YsIDB4MGM3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MTI3ZSwgMHgxNTdlLCAweDBmN2UsIDB4MGU3ZSwKLQkweDBkN2UsIDB4MGM3ZSwgMHgwMjdlLCAweDAxN2UsIDB4MDA3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA2OSwKLQkweDAxMDAsIDB4MjA3OSwgMHgwMTQwLCAweDIwNzEsIDB4YTliMSwgMHg3MDI0LCAweDIwNjAsIDB4OGNmZiwKLQkweDAwNDAsIDB4NzAxNCwgMHgxMDc4LCAweDZlMGYsIDB4NjhjMywgMHgwMDAwLCAweDEwNzgsIDB4NWFjYiwKLQkweDIwMDksIDB4MDAxMywgMHgxMDc4LCAweDc3NWMsIDB4MjBhOSwgMHgwMWY0LCAweDY4MjQsIDB4ZDA5NCwKLQkweDAwNDAsIDB4NmZmNywgMHg2ODI3LCAweDAwMDQsIDB4NzgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDA0MCwKLQkweDcwMDksIDB4NzgwMywgMHgxMDAwLCAweDc4MDMsIDB4MDAwMCwgMHgwMDc4LCAweDcwMDksIDB4ZDA4NCwKLQkweDAwNDAsIDB4NmZmZSwgMHg2ODI3LCAweDAwMDEsIDB4MDA3OCwgMHg3MDAwLCAweDAwZjAsIDB4NmZlNiwKLQkweDc4MDQsIDB4YTA4NCwgMHgxMDAwLCAweDAwNDAsIDB4NzAwOSwgMHg3ODAzLCAweDAxMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4NjgyNCwgMHgwMDdmLCAweDAxN2YsIDB4MDI3ZiwgMHgwYzdmLCAweDBkN2YsIDB4MGU3ZiwKLQkweDBmN2YsIDB4MTU3ZiwgMHgxMjdmLCAweDAwN2MsIDB4MjAwMSwgMHhhNzAwLCAweDIwMDQsIDB4YTA5NiwKLQkweDAwMDEsIDB4MDA0MCwgMHg3MDRlLCAweGEwOTYsIDB4MDAwNCwgMHgwMDQwLCAweDcwNGUsIDB4MTA3OCwKLQkweDVhY2IsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwgMHgyMDExLCAweDQxZGMsIDB4MTA3OCwKLQkweDVhNDUsIDB4MjBhOSwgMHgwMWY0LCAweDY4MjQsIDB4ZDA5NCwgMHgwMDQwLCAweDcwM2MsIDB4NjgyNywKLQkweDAwMDQsIDB4NzgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDA0MCwgMHg3MDRlLCAweDc4MDMsIDB4MTAwMCwKLQkweDc4MDMsIDB4MDAwMCwgMHgwMDc4LCAweDcwNGUsIDB4ZDA4NCwgMHgwMDQwLCAweDcwNDMsIDB4NjgyNywKLQkweDAwMDEsIDB4MDA3OCwgMHg3MDQ1LCAweDAwZjAsIDB4NzAyYiwgMHg3ODA0LCAweGEwODQsIDB4MTAwMCwKLQkweDAwNDAsIDB4NzA0ZSwgMHg3ODAzLCAweDAxMDAsIDB4NzgwMywgMHgwMDAwLCAweDAwN2YsIDB4MDE3ZiwKLQkweDAyN2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MGY3ZiwgMHgxNTdmLCAweDEyN2YsIDB4MDA3YywKLQkweDEyN2UsIDB4MTU3ZSwgMHgwZjdlLCAweDBlN2UsIDB4MGQ3ZSwgMHgwYzdlLCAweDAyN2UsIDB4MDE3ZSwKLQkweDAwN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjksIDB4MDEwMCwgMHgyMDc5LCAweDAxNDAsIDB4MjA3MSwKLQkweGE5YjEsIDB4NzAzYywgMHgyMDYwLCAweDhjZmYsIDB4MDA0MCwgMHg3MGQ2LCAweDY4YWYsIDB4OTVmNSwKLQkweDY4MTcsIDB4MDAxMCwgMHgyMDA5LCAweDAwZmEsIDB4ODEwOSwgMHgwMGMwLCAweDcwNzQsIDB4NjhjNywKLQkweDAwMDAsIDB4NjhjYiwgMHgwMDA4LCAweDEwNzgsIDB4NWFkOCwgMHgxMDc4LCAweDFmN2UsIDB4MDQ3ZSwKLQkweDA1N2UsIDB4MjAwOSwgMHgwMTdmLCAweDIxMmMsIDB4MjAwYiwgMHgwMGE1LCAweDIwMjEsIDB4MDE2OSwKLQkweDI0MDQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODYsIDB4MDAwNCwgMHgwMGMwLCAweDcwYTUsIDB4NjhjNywKLQkweDAwMDAsIDB4NjhjYiwgMHgwMDA4LCAweDBlN2UsIDB4MGY3ZSwgMHgyMDc5LCAweDAwMjAsIDB4MjA3MSwKLQkweGFhMDgsIDB4NjgxNCwgMHhhMDg0LCAweDAwMDQsIDB4YTA4NSwgMHgwMDEyLCAweDY4MTYsIDB4NzgwMywKLQkweDAwMDgsIDB4NzAwMywgMHgwMDAwLCAweDBmN2YsIDB4MGU3ZiwgMHgyNTBhLCAweDA1N2YsIDB4MDQ3ZiwKLQkweGEzOWQsIDB4MDAwMCwgMHgwMGMwLCAweDcwYjAsIDB4MjAwOSwgMHgwMDQ5LCAweDEwNzgsIDB4Nzc1YywKLQkweDIwYTksIDB4MDNlOCwgMHg2ODI0LCAweGQwOTQsIDB4MDA0MCwgMHg3MGMzLCAweDY4MjcsIDB4MDAwNCwKLQkweDc4MDQsIDB4YTA4NCwgMHg0MDAwLCAweDAwNDAsIDB4NzBkNSwgMHg3ODAzLCAweDEwMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4MDA3OCwgMHg3MGQ1LCAweGQwOGMsIDB4MDA0MCwgMHg3MGNhLCAweDY4MjcsIDB4MDAwMiwKLQkweDAwNzgsIDB4NzBjYywgMHgwMGYwLCAweDcwYjIsIDB4NzgwNCwgMHhhMDg0LCAweDEwMDAsIDB4MDA0MCwKLQkweDcwZDUsIDB4NzgwMywgMHgwMTAwLCAweDc4MDMsIDB4MDAwMCwgMHg2ODI0LCAweDAwN2YsIDB4MDE3ZiwKLQkweDAyN2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MGY3ZiwgMHgxNTdmLCAweDEyN2YsIDB4MDA3YywKLQkweDBkN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA2OSwgMHhhOWIxLCAweDZhMDYsIDB4MTI3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHgwZDdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjksIDB4YTliMSwKLQkweDZhMzIsIDB4MTI3ZiwgMHgwZDdmLCAweDAwN2MsIDB4MGY3ZSwgMHgwZTdlLCAweDBjN2UsIDB4MDY3ZSwKLQkweDAwN2UsIDB4MTI3ZSwgMHgyMDcxLCAweGE5YjEsIDB4NzYxNCwgMHgyNjYwLCAweDI2NzgsIDB4MjA5MSwKLQkweDgwMDAsIDB4OGNmZiwgMHgwMDQwLCAweDcxMzQsIDB4NjAxYywgMHhhMjA2LCAweDAwYzAsIDB4NzEyZiwKLQkweDcwMTQsIDB4YWMzNiwgMHgwMGMwLCAweDcxMGUsIDB4NjYwYywgMHg3NjE2LCAweDcwMTAsIDB4YWMzNiwKLQkweDAwYzAsIDB4NzExYywgMHgyYzAwLCAweGFmMzYsIDB4MDA0MCwgMHg3MTFhLCAweDJmMDAsIDB4NzAxMiwKLQkweDAwNzgsIDB4NzExYywgMHg3MDEzLCAweDAwMDAsIDB4NjYwYywgMHgwNjdlLCAweDJjMDAsIDB4YWYwNiwKLQkweDAwNDAsIDB4NzEyNSwgMHg3ZTBlLCAweDAwNzgsIDB4NzEyNiwgMHgyNjc4LCAweDYwMGYsIDB4MDAwMCwKLQkweDEwNzgsIDB4OGVkNiwgMHgxMDc4LCAweDcyMzMsIDB4MGM3ZiwgMHgwMDc4LCAweDcxMDEsIDB4MmM3OCwKLQkweDYwMGMsIDB4MjA2MCwgMHgwMDc4LCAweDcxMDEsIDB4MTI3ZiwgMHgwMDdmLCAweDA2N2YsIDB4MGM3ZiwKLQkweDBlN2YsIDB4MGY3ZiwgMHgwMDdjLCAweDE1N2UsIDB4MTQ3ZSwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY5ZDAsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTMsIDB4MTAwMCwgMHgwMDc4LCAweDcxOGUsIDB4MTU3ZSwgMHgxNDdlLCAweDIwYTEsIDB4MDIwYiwKLQkweDEwNzgsIDB4NjlkMCwgMHg3ODEwLCAweDIwYTIsIDB4YTAwNiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMywgMHg0MDAwLCAweDAwNzgsIDB4NzE4ZSwgMHgxNTdlLCAweDE0N2UsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg2OWQwLCAweDc4MTAsIDB4MjBhMiwgMHhhMDA2LCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEzLCAweDIwMDAsIDB4MDA3OCwgMHg3MThlLCAweDE1N2UsIDB4MTQ3ZSwKLQkweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDY5ZDAsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTMsIDB4MDQwMCwgMHgwMDc4LCAweDcxOGUsIDB4MTU3ZSwKLQkweDE0N2UsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjlkMCwgMHg3ODEwLCAweDIwYTIsIDB4YTAwNiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMywgMHgwMjAwLCAweDEwNzgsIDB4NzIzZSwKLQkweDYwYzMsIDB4MDAyMCwgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwgMHgxNTdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDBjN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjEsIDB4MDEwMCwgMHg2MTIwLCAweGQxYjQsIDB4MDBjMCwKLQkweDcxYTYsIDB4ZDFiYywgMHgwMGMwLCAweDcxZjAsIDB4MDA3OCwgMHg3MjMwLCAweDIwMDksIDB4MDE3ZiwKLQkweDIwMGIsIDB4MDBhMSwgMHgxNTdlLCAweDAwN2UsIDB4MGQ3ZSwgMHgyMDY5LCAweDAxNDAsIDB4MjBhOSwKLQkweDAwMWUsIDB4MjAwOSwgMHgwMTY5LCAweDY4MDQsIDB4YTA4NCwgMHg0MDAwLCAweDAwNDAsIDB4NzFlNywKLQkweDYwMjAsIDB4ZDBiNCwgMHgwMDQwLCAweDcxZTcsIDB4NjAyNCwgMHhkMDk0LCAweDAwYzAsIDB4NzFlNywKLQkweDIxMDQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODYsIDB4MDAwNCwgMHgwMGMwLCAweDcxZTcsIDB4MDBmMCwKLQkweDcxYjMsIDB4MDI3ZSwgMHg2MTk4LCAweGExOGMsIDB4MDBmZiwgMHg4MTA3LCAweDYxMzAsIDB4YTE4YywKLQkweDAwZmYsIDB4YTEwZCwgMHg2MDg4LCAweDYyOGMsIDB4NjE4ZSwgMHg2MDhiLCAweGJjOTEsIDB4NjA0MywKLQkweDAwMDEsIDB4NjA0MywgMHgwMDAwLCAweDYwOGEsIDB4NjI4ZSwgMHg2MDI0LCAweGQwOTQsIDB4MDBjMCwKLQkweDcxZTYsIDB4NmEwNCwgMHhhMjk0LCAweDQwMDAsIDB4MDBjMCwgMHg3MWRkLCAweDAyN2YsIDB4MGQ3ZiwKLQkweDAwN2YsIDB4MTU3ZiwgMHgyMDA5LCAweDAxN2YsIDB4MjAwYiwgMHgwMDAwLCAweDAwNzgsIDB4NzIzMCwKLQkweDIwMDksIDB4MDE3ZiwgMHgyMDBiLCAweDAwYTEsIDB4MTU3ZSwgMHgwMDdlLCAweDBkN2UsIDB4MjA2OSwKLQkweDAxNDAsIDB4MjBhOSwgMHgwMDFlLCAweDIwMDksIDB4MDE2OSwgMHg2ODA0LCAweGEwODQsIDB4NDAwMCwKLQkweDAwNDAsIDB4NzIyOSwgMHg2MDIwLCAweGQwYmMsIDB4MDA0MCwgMHg3MjI5LCAweDIxMDQsIDB4YTA4NCwKLQkweDAwMGYsIDB4YTA4NiwgMHgwMDA0LCAweDAwYzAsIDB4NzIyOSwgMHgwMGYwLCAweDcxZmQsIDB4MDI3ZSwKLQkweDYxNjQsIDB4YTE4YywgMHgwMGZmLCAweDgxMDcsIDB4NjEzMCwgMHhhMThjLCAweDAwZmYsIDB4YTEwZCwKLQkweDYwODgsIDB4NjI4YywgMHg2MDhiLCAweGJjOTEsIDB4NjE4ZSwgMHg2MDQzLCAweDAwMDEsIDB4NjA0MywKLQkweDAwMDAsIDB4NjA4YSwgMHg2MjhlLCAweDZhMDQsIDB4YTI5NCwgMHg0MDAwLCAweDAwYzAsIDB4NzIyMywKLQkweDAyN2YsIDB4MGQ3ZiwgMHgwMDdmLCAweDE1N2YsIDB4MjAwOSwgMHgwMTdmLCAweDIwMGIsIDB4MDAwMCwKLQkweDBjN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwgMHhhOWIxLCAweDcwMjAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NzIzYywgMHg4MDAxLCAweDcwMjIsIDB4MGU3ZiwgMHgwMDdjLCAweDIwYTksIDB4MDAwOCwKLQkweDIwYTIsIDB4MDBmMCwgMHg3MjQwLCAweDIwYTIsIDB4MjBhMiwgMHgwMDdjLCAweDBmN2UsIDB4MGU3ZSwKLQkweDBkN2UsIDB4MGM3ZSwgMHgwNzdlLCAweDA2N2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YTliMSwgMHg3NjE0LCAweDI2NjAsIDB4MjY3OCwgMHgyMDM5LCAweDAwMDEsIDB4ODdmZiwKLQkweDAwNDAsIDB4NzJlMiwgMHg4Y2ZmLCAweDAwNDAsIDB4NzJlMiwgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4NzJkZCwgMHg4OGZmLCAweDAwNDAsIDB4NzI2ZCwgMHgyODAwLCAweGFjMDYsIDB4MDBjMCwKLQkweDcyZGQsIDB4MjAzOSwgMHgwMDAwLCAweDAwNzgsIDB4NzI3OCwgMHg2MDE4LCAweGEyMDYsIDB4MDBjMCwKLQkweDcyZGQsIDB4ODVmZiwgMHgwMDQwLCAweDcyNzgsIDB4NjAyMCwgMHhhMTA2LCAweDAwYzAsIDB4NzJkZCwKLQkweDcwMjQsIDB4YWMwNiwgMHgwMGMwLCAweDcyYTgsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NzJhMywgMHgxMDc4LCAweDVhY2IsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwKLQkweDEwNzgsIDB4NzM3OCwgMHg3MDI3LCAweDAwMDAsIDB4MDM3ZSwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwKLQkweGEzODQsIDB4MTAwMCwgMHgwMDQwLCAweDcyOTgsIDB4NjgwMywgMHgwMTAwLCAweDY4MDMsIDB4MDAwMCwKLQkweDIwNjksIDB4MDEwMCwgMHg2ODI0LCAweGQwODQsIDB4MDA0MCwgMHg3MmEwLCAweDY4MjcsIDB4MDAwMSwKLQkweDAzN2YsIDB4MDA3OCwgMHg3MmE4LCAweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDAwNzgsIDB4NzJkZCwKLQkweDcwMTQsIDB4YWMzNiwgMHgwMGMwLCAweDcyYWUsIDB4NjYwYywgMHg3NjE2LCAweDcwMTAsIDB4YWMzNiwKLQkweDAwYzAsIDB4NzJiYywgMHgyYzAwLCAweGFmMzYsIDB4MDA0MCwgMHg3MmJhLCAweDJmMDAsIDB4NzAxMiwKLQkweDAwNzgsIDB4NzJiYywgMHg3MDEzLCAweDAwMDAsIDB4NjYwYywgMHgwNjdlLCAweDJjMDAsIDB4YWYwNiwKLQkweDAwNDAsIDB4NzJjNSwgMHg3ZTBlLCAweDAwNzgsIDB4NzJjNiwgMHgyNjc4LCAweDg5ZmYsIDB4MDBjMCwKLQkweDcyZDUsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwKLQkweDcyZDMsIDB4MTA3OCwgMHhhMWRhLCAweDEwNzgsIDB4OGVkNiwgMHgxMDc4LCAweDcyMzMsIDB4ODhmZiwKLQkweDAwYzAsIDB4NzJlYywgMHgwYzdmLCAweDAwNzgsIDB4NzI1NywgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwKLQkweDAwNzgsIDB4NzI1NywgMHhhMDA2LCAweDEyN2YsIDB4MDA3ZiwgMHgwNjdmLCAweDA3N2YsIDB4MGM3ZiwKLQkweDBkN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDAwN2MsIDB4NjAxNywgMHgwMDAwLCAweDBjN2YsIDB4YThjNSwKLQkweDAwMDEsIDB4MDA3OCwgMHg3MmUzLCAweDBmN2UsIDB4MGU3ZSwgMHgwZDdlLCAweDBjN2UsIDB4MDY3ZSwKLQkweDAyN2UsIDB4MDA3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE5YjEsIDB4NzYzOCwKLQkweDI2NjAsIDB4MjY3OCwgMHg4Y2ZmLCAweDAwNDAsIDB4NzM2NywgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4NzM2MiwgMHg4N2ZmLCAweDAwNDAsIDB4NzMxMywgMHgyNzAwLCAweGFjMDYsIDB4MDBjMCwKLQkweDczNjIsIDB4MDA3OCwgMHg3MzFlLCAweDYwMTgsIDB4YTIwNiwgMHgwMGMwLCAweDczNjIsIDB4ODVmZiwKLQkweDAwNDAsIDB4NzMxZSwgMHg2MDIwLCAweGExMDYsIDB4MDBjMCwgMHg3MzYyLCAweDcwM2MsIDB4YWMwNiwKLQkweDAwYzAsIDB4NzMzMiwgMHgwMzdlLCAweDIwMTksIDB4MDAwMSwgMHgxMDc4LCAweDcwNTgsIDB4NzAzMywKLQkweDAwMDAsIDB4NzAzZiwgMHgwMDAwLCAweDcwNDMsIDB4MDAwMCwgMHg3MDQ3LCAweDAwMDAsIDB4NzA0YiwKLQkweDAwMDAsIDB4MDM3ZiwgMHg3MDM4LCAweGFjMzYsIDB4MDBjMCwgMHg3MzM4LCAweDY2MGMsIDB4NzYzYSwKLQkweDcwMzQsIDB4YWMzNiwgMHgwMGMwLCAweDczNDYsIDB4MmMwMCwgMHhhZjM2LCAweDAwNDAsIDB4NzM0NCwKLQkweDJmMDAsIDB4NzAzNiwgMHgwMDc4LCAweDczNDYsIDB4NzAzNywgMHgwMDAwLCAweDY2MGMsIDB4MDY3ZSwKLQkweDJjMDAsIDB4YWYwNiwgMHgwMDQwLCAweDczNGYsIDB4N2UwZSwgMHgwMDc4LCAweDczNTAsIDB4MjY3OCwKLQkweDYwMGYsIDB4MDAwMCwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4NzM1YSwKLQkweDEwNzgsIDB4YTFkYSwgMHgxMDc4LCAweDhlZDYsIDB4ODdmZiwgMHgwMGMwLCAweDczNzEsIDB4MGM3ZiwKLQkweDAwNzgsIDB4NzMwMiwgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwgMHgwMDc4LCAweDczMDIsIDB4YTAwNiwKLQkweDEyN2YsIDB4MDA3ZiwgMHgwMjdmLCAweDA2N2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NjAxNywgMHgwMDAwLCAweDBjN2YsIDB4YTdiZCwgMHgwMDAxLCAweDAwNzgsIDB4NzM2OCwKLQkweDBlN2UsIDB4MjA3MSwgMHhhOWIxLCAweDIwMDEsIDB4YTcwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMiwKLQkweDAwYzAsIDB4NzM4NiwgMHg3MDA3LCAweDAwMDUsIDB4MDA3OCwgMHg3Mzg4LCAweDcwMDcsIDB4MDAwMCwKLQkweDBlN2YsIDB4MDA3YywgMHgwZjdlLCAweDBlN2UsIDB4MGM3ZSwgMHgwNjdlLCAweDAyN2UsIDB4MDA3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4YTliMSwgMHgyYzEwLCAweDc2MzgsIDB4MjY2MCwKLQkweDI2NzgsIDB4OGNmZiwgMHgwMDQwLCAweDczYzgsIDB4MjIwMCwgMHhhYzA2LCAweDAwYzAsIDB4NzNjMywKLQkweDcwMzgsIDB4YWMzNiwgMHgwMGMwLCAweDczYTYsIDB4NjYwYywgMHg3NjNhLCAweDcwMzQsIDB4YWMzNiwKLQkweDAwYzAsIDB4NzNiNCwgMHgyYzAwLCAweGFmMzYsIDB4MDA0MCwgMHg3M2IyLCAweDJmMDAsIDB4NzAzNiwKLQkweDAwNzgsIDB4NzNiNCwgMHg3MDM3LCAweDAwMDAsIDB4NjYwYywgMHgyYzAwLCAweGFmMDYsIDB4MDA0MCwKLQkweDczYmMsIDB4N2UwZSwgMHgwMDc4LCAweDczYmQsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDA3OCwgMHg3M2M4LCAweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDAwNzgsIDB4NzM5OSwKLQkweDEyN2YsIDB4MDA3ZiwgMHgwMjdmLCAweDA2N2YsIDB4MGM3ZiwgMHgwZTdmLCAweDBmN2YsIDB4MDA3YywKLQkweDBmN2UsIDB4MGU3ZSwgMHgwZDdlLCAweDBjN2UsIDB4MDY3ZSwgMHgwMDdlLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhhOWIxLCAweDc2MGMsIDB4MjY2MCwgMHgyNjc4LCAweDhjZmYsIDB4MDA0MCwKLQkweDc0NjksIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhhMjA2LCAweDAwYzAsIDB4NzQ2NCwKLQkweDcwMjQsIDB4YWMwNiwgMHgwMGMwLCAweDc0MGYsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsIDB4YTAwNSwKLQkweDAwNDAsIDB4NzQzZCwgMHgxMDc4LCAweDZlMGYsIDB4NjhjMywgMHgwMDAwLCAweDEwNzgsIDB4NzM3OCwKLQkweDcwMjcsIDB4MDAwMCwgMHgwMzdlLCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweGEzODQsIDB4MTAwMCwKLQkweDAwNDAsIDB4NzQwNiwgMHg2ODAzLCAweDAxMDAsIDB4NjgwMywgMHgwMDAwLCAweDIwNjksIDB4MDEwMCwKLQkweDY4MjQsIDB4ZDA4NCwgMHgwMDQwLCAweDc0MGUsIDB4NjgyNywgMHgwMDAxLCAweDAzN2YsIDB4NzAwYywKLQkweGFjMzYsIDB4MDBjMCwgMHg3NDE1LCAweDY2MGMsIDB4NzYwZSwgMHg3MDA4LCAweGFjMzYsIDB4MDBjMCwKLQkweDc0MjMsIDB4MmMwMCwgMHhhZjM2LCAweDAwNDAsIDB4NzQyMSwgMHgyZjAwLCAweDcwMGEsIDB4MDA3OCwKLQkweDc0MjMsIDB4NzAwYiwgMHgwMDAwLCAweDY2MGMsIDB4MDY3ZSwgMHgyYzAwLCAweGFmMDYsIDB4MDA0MCwKLQkweDc0MmMsIDB4N2UwZSwgMHgwMDc4LCAweDc0MmQsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4MTA3OCwKLQkweDhlZmMsIDB4MDBjMCwgMHg3NDQxLCAweDEwNzgsIDB4MjhhNiwgMHgxMDc4LCAweDhmMTAsIDB4MDBjMCwKLQkweDc0NWQsIDB4MTA3OCwgMHg3YzgzLCAweDAwNzgsIDB4NzQ1ZCwgMHgxMDc4LCAweDczNzgsIDB4MDA3OCwKLQkweDc0MGYsIDB4MTA3OCwgMHg4ZjEwLCAweDAwYzAsIDB4NzQ0OSwgMHgxMDc4LCAweDdjODMsIDB4MDA3OCwKLQkweDc0NWQsIDB4NjAxMCwgMHgyMDY4LCAweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDc0NWQsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDc0NzEsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MTA3OCwgMHg0YTczLCAweDEwNzgsIDB4OGVjOSwgMHgxMDc4LCAweDhlZDYsIDB4MTA3OCwKLQkweDcyMzMsIDB4MGM3ZiwgMHgwMDc4LCAweDczZGUsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsIDB4MDA3OCwKLQkweDczZGUsIDB4MTI3ZiwgMHgwMDdmLCAweDA2N2YsIDB4MGM3ZiwgMHgwZDdmLCAweDBlN2YsIDB4MGY3ZiwKLQkweDAwN2MsIDB4NjAxYywgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHg3NDVkLCAweDEwNzgsIDB4YTFkYSwKLQkweDAwNzgsIDB4NzQ1ZCwgMHgwMzdlLCAweDE1N2UsIDB4MTM3ZSwgMHgxNDdlLCAweDM5MDgsIDB4YTAwNiwKLQkweGExOTAsIDB4MDAyMCwgMHgyMjFjLCAweGEzOWUsIDB4MjY3NiwgMHgwMGMwLCAweDc0OGIsIDB4ODIxMCwKLQkweDgwMDAsIDB4MDA3OCwgMHg3NDgyLCAweGEwMDUsIDB4MDA0MCwgMHg3NDk3LCAweDIwYTksIDB4MDAyMCwKLQkweDIxOTgsIDB4ODIxMSwgMHhhMjgyLCAweDAwMjAsIDB4MjBjOCwgMHgyMGEwLCAweDUzYTMsIDB4MTQ3ZiwKLQkweDEzN2YsIDB4MTU3ZiwgMHgwMzdmLCAweDAwN2MsIDB4MGQ3ZSwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3YzIsIDB4MjBhMywgMHgwMjAwLCAweDIwYTMsIDB4MDAxNCwgMHg2MGMzLCAweDAwMTQsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwOTksIDB4YTlhNSwgMHgyMGE5LCAweDAwMDQsIDB4NTNhNiwKLQkweDIwYTMsIDB4MDAwNCwgMHgyMGEzLCAweDc4NzgsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDEwNzgsIDB4NmRmYiwgMHgwZDdmLCAweDAwN2MsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjdjMiwKLQkweDIwYTMsIDB4MDIxNCwgMHgyMGEzLCAweDAwMTgsIDB4MjBhMywgMHgwODAwLCAweDc4MTAsIDB4YTA4NCwKLQkweGZmMDAsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg3ODEwLCAweGEwODQsIDB4MDBmZiwgMHgyMGEyLCAweDc4MjgsIDB4MjBhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywgMHgwMDE4LCAweDEwNzgsIDB4NmRmYiwKLQkweDAwN2MsIDB4MGQ3ZSwgMHgwMTdlLCAweDJmNjgsIDB4MjAwOSwgMHgwMDM1LCAweDEwNzgsIDB4OTFjYywKLQkweDAwYzAsIDB4NzU1MSwgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwgMHg2NzMxLCAweDIwYTMsIDB4MTMwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg3ODI4LCAweDIwNjgsIDB4NjgxYywgMHhhMDg2LCAweDAwMDMsIDB4MDA0MCwKLQkweDc1MmQsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAxNCwgMHhhMjg2LCAweDAwN2UsIDB4MDBjMCwKLQkweDc1MDcsIDB4MjBhMywgMHgwMGZmLCAweDIwYTMsIDB4ZmZmZSwgMHgwMDc4LCAweDc1NDIsIDB4YTI4NiwKLQkweDAwN2YsIDB4MDBjMCwgMHg3NTExLCAweDIwYTMsIDB4MDBmZiwgMHgyMGEzLCAweGZmZmQsIDB4MDA3OCwKLQkweDc1NDIsIDB4ZDJiYywgMHgwMDQwLCAweDc1MjcsIDB4YTI4NiwgMHgwMDgwLCAweDAwYzAsIDB4NzUxZSwKLQkweDIwYTMsIDB4MDBmZiwgMHgyMGEzLCAweGZmZmMsIDB4MDA3OCwgMHg3NTQyLCAweGEyZTgsIDB4YTgzNSwKLQkweDJkNmMsIDB4NjgxMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwgMHgwMDc4LCAweDc1NDIsIDB4MjBhMywKLQkweDAwMDAsIDB4NjA5OCwgMHgyMGEyLCAweDAwNzgsIDB4NzU0MiwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4YTA4MiwgMHgwMDdlLCAweDAwNDgsIDB4NzUzZSwgMHgwZDdlLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg3NTQyLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwMzAsIDB4MjBhMiwgMHg3ODM0LCAweDIwYTIsIDB4NzgzOCwgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMGMsIDB4MTA3OCwgMHg2ZGZiLCAweDAxN2YsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4NzgxNywgMHgwMDAxLCAweDc4MDMsIDB4MDAwNiwgMHgwMTdmLCAweDBkN2YsIDB4MDA3YywKLQkweDBkN2UsIDB4MDI3ZSwgMHg3OTI4LCAweDIxNjgsIDB4NjkxYywgMHhhMTg2LCAweDAwMDYsIDB4MDA0MCwKLQkweDc1N2EsIDB4YTE4NiwgMHgwMDAzLCAweDAwNDAsIDB4NzVkNSwgMHhhMTg2LCAweDAwMDUsIDB4MDA0MCwKLQkweDc1YjgsIDB4YTE4NiwgMHgwMDA0LCAweDAwNDAsIDB4NzVhOCwgMHhhMTg2LCAweDAwMDgsIDB4MDA0MCwKLQkweDc1YzIsIDB4NzgwNywgMHgwMDM3LCAweDc4MTMsIDB4MTcwMCwgMHgxMDc4LCAweDc2NDAsIDB4MDI3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHgxMDc4LCAweDc1ZmQsIDB4MjAwOSwgMHg0MDAwLCAweDY4MDAsIDB4MDA3OSwKLQkweDc1ODEsIDB4NzU5NCwgMHg3NWEyLCAweDc1OTYsIDB4NzVhMiwgMHg3NTlkLCAweDc1OTQsIDB4NzU5NCwKLQkweDc1YTIsIDB4NzVhMiwgMHg3NWEyLCAweDc1YTIsIDB4NzU5NCwgMHg3NTk0LCAweDc1OTQsIDB4NzU5NCwKLQkweDc1OTQsIDB4NzVhMiwgMHg3NTk0LCAweDc1YTIsIDB4MTA3OCwgMHgxMzMyLCAweDY4MjQsIDB4ZDBlNCwKLQkweDAwNDAsIDB4NzU5ZCwgMHhkMGNjLCAweDAwNDAsIDB4NzVhMCwgMHhhMDBlLCAweDAwNzgsIDB4NzVhMiwKLQkweDIwMDksIDB4MjAwMCwgMHg2ODI4LCAweDIwYTIsIDB4NjgyYywgMHgyMGEyLCAweDAwNzgsIDB4NzVmMywKLQkweDEwNzgsIDB4NzVmZCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwMDksIDB4NDAwMCwKLQkweDZhMDAsIDB4YTI4NiwgMHgwMDAyLCAweDAwYzAsIDB4NzViNiwgMHhhMDBlLCAweDAwNzgsIDB4NzVmMywKLQkweDEwNzgsIDB4NzVmZCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwMDksIDB4NDAwMCwKLQkweDAwNzgsIDB4NzVmMywgMHgxMDc4LCAweDc1ZmQsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwMDksIDB4NDAwMCwgMHhhMjg2LCAweDAwMDUsIDB4MDA0MCwgMHg3NWQyLCAweGEyODYsIDB4MDAwMiwKLQkweDAwYzAsIDB4NzVkMywgMHhhMDBlLCAweDAwNzgsIDB4NzVmMywgMHgxMDc4LCAweDc1ZmQsIDB4NjgxMCwKLQkweDIwNjgsIDB4Njk3YywgMHg2ODEwLCAweGExMTIsIDB4Njk4MCwgMHg2ODE0LCAweGExMDMsIDB4MjBhMiwKLQkweDIyYTIsIDB4NzkyOCwgMHhhMTgwLCAweDAwMDAsIDB4MjAwNCwgMHhhMDhlLCAweDAwMDIsIDB4MDA0MCwKLQkweDc1ZjEsIDB4YTA4ZSwgMHgwMDA0LCAweDAwNDAsIDB4NzVmMSwgMHgyMDA5LCAweDQwMDAsIDB4MDA3OCwKLQkweDc1ZjMsIDB4MjAwOSwgMHgwMDAwLCAweDIxYTIsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAxOCwKLQkweDEwNzgsIDB4NmRmYiwgMHgwMjdmLCAweDBkN2YsIDB4MDA3YywgMHgwMzdlLCAweDA0N2UsIDB4MDU3ZSwKLQkweDA2N2UsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjdjMiwgMHhhMDA2LCAweDIwYTMsIDB4MDIwMCwKLQkweDIwYTIsIDB4NzkzNCwgMHgyMWEyLCAweDc5MzgsIDB4MjFhMiwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4YTA5MiwgMHgwMDdlLCAweDAwNDgsIDB4NzYyMywgMHgwZDdlLCAweDIwNjksIDB4YTcxYiwKLQkweDJkMmMsIDB4OGQ2OCwgMHgyZDM0LCAweGEwZTgsIDB4YTgzNSwgMHgyZDZjLCAweDZiMTAsIDB4NmMxNCwKLQkweDBkN2YsIDB4MDA3OCwgMHg3NjI5LCAweDIwMTksIDB4MDAwMCwgMHg2NDk4LCAweDIwMjksIDB4MDAwMCwKLQkweDY2MzAsIDB4NzgyOCwgMHhhMDgwLCAweDAwMDcsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwKLQkweDc2MzcsIDB4MjVhMiwgMHgyNmEyLCAweDIzYTIsIDB4MjRhMiwgMHgwMDc4LCAweDc2M2IsIDB4MjNhMiwKLQkweDI0YTIsIDB4MjVhMiwgMHgyNmEyLCAweDA2N2YsIDB4MDU3ZiwgMHgwNDdmLCAweDAzN2YsIDB4MDA3YywKLQkweDIwYTEsIDB4MDIwYiwgMHgxMDc4LCAweDY3YzIsIDB4MjBhMywgMHgwMTAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwOSwgMHg3ODEwLCAweDIwYTIsIDB4NjBjMywgMHgwMDA4LCAweDEwNzgsIDB4NmRmYiwKLQkweDAwN2MsIDB4MjBhMSwgMHgwMjBiLCAweDEwNzgsIDB4NjcyOCwgMHgyMGEzLCAweDE0MDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NzgzNCwgMHgyMGEyLCAweDc4MzgsIDB4MjBhMiwgMHg3ODI4LCAweDIwYTIsIDB4NzgyYywKLQkweDIwYTIsIDB4NzgzMCwgMHhhMDg0LCAweDAwZmYsIDB4ODAwNywgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxMCwgMHgxMDc4LCAweDZkZmIsIDB4MDA3YywgMHgyMGExLCAweDAyMGIsIDB4MTA3OCwKLQkweDY3YjksIDB4MjBhMywgMHgwMTAwLCAweDIwYTMsIDB4MDAwMCwgMHg3ODI4LCAweDIwYTIsIDB4NzgxMCwKLQkweDIwYTIsIDB4NjBjMywgMHgwMDA4LCAweDEwNzgsIDB4NmRmYiwgMHgwMDdjLCAweDE0N2UsIDB4MjBhMSwKLQkweDAyMGIsIDB4MTA3OCwgMHg3Njg5LCAweDYwYzMsIDB4MDAwMCwgMHgxMDc4LCAweDZkZmIsIDB4MTQ3ZiwKLQkweDAwN2MsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDQwLCAweDc2YTYsIDB4MGQ3ZSwgMHhhMGU4LCAweGE4MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwMzAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YTcxYiwKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDBkN2YsIDB4MDA3OCwgMHg3NmFlLCAweDIwYTMsIDB4MDMwMCwKLQkweDYyOTgsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4NjIzMCwgMHgyMmEyLCAweDIwYTMsIDB4MDgxOSwKLQkweDIwYTMsIDB4MDAwMCwgMHgxMDc4LCAweDZkZWEsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MmZhMiwKLQkweDdhMDgsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwN2MsIDB4MjA2MSwKLQkweGFlMDAsIDB4MmE3MCwgMHg3MDY0LCAweDcwNGEsIDB4NzA0ZiwgMHhhZTAwLCAweDAwN2MsIDB4MGU3ZSwKLQkweDEyN2UsIDB4MjA3MSwgMHhhNzAwLCAweDIwOTEsIDB4ODAwMCwgMHg3NTQ4LCAweGE1ODIsIDB4MDAxMCwKLQkweDAwNDgsIDB4NzZmOSwgMHg3MDRjLCAweDIwNjAsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDAsIDB4MDA0MCwKLQkweDc2ZTUsIDB4YWNlMCwgMHgwMDEwLCAweDcwNTgsIDB4YWMwMiwgMHgwMGM4LCAweDc2ZTEsIDB4MDA3OCwKLQkweDc2ZDQsIDB4MjA2MSwgMHhhZTAwLCAweDAwNzgsIDB4NzZkNCwgMHg2MDAzLCAweDAwMDgsIDB4ODUyOSwKLQkweDc1NGEsIDB4YWNhOCwgMHgwMDEwLCAweDcwNTgsIDB4YTUwMiwgMHgwMGM4LCAweDc2ZjUsIDB4NzU0ZSwKLQkweGEwODUsIDB4MDAwMSwgMHgxMjdmLCAweDBlN2YsIDB4MDA3YywgMHg3MDRmLCAweGFlMDAsIDB4MDA3OCwKLQkweDc2ZjAsIDB4YTAwNiwgMHgwMDc4LCAweDc2ZjIsIDB4MGU3ZSwgMHgyMDcxLCAweGE3MDAsIDB4NzU0OCwKLQkweGE1ODIsIDB4MDAxMCwgMHgwMDQ4LCAweDc3MmEsIDB4NzA0YywgMHgyMDYwLCAweDYwMDAsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDA0MCwgMHg3NzE3LCAweGFjZTAsIDB4MDAxMCwgMHg3MDU4LCAweGFjMDIsIDB4MDBjOCwKLQkweDc3MTMsIDB4MDA3OCwgMHg3NzA2LCAweDIwNjEsIDB4YWUwMCwgMHgwMDc4LCAweDc3MDYsIDB4NjAwMywKLQkweDAwMDgsIDB4ODUyOSwgMHg3NTRhLCAweGFjYTgsIDB4MDAxMCwgMHg3MDU4LCAweGE1MDIsIDB4MDBjOCwKLQkweDc3MjYsIDB4NzU0ZSwgMHhhMDg1LCAweDAwMDEsIDB4MGU3ZiwgMHgwMDdjLCAweDcwNGYsIDB4YWUwMCwKLQkweDAwNzgsIDB4NzcyMiwgMHhhMDA2LCAweDAwNzgsIDB4NzcyNCwgMHhhYzgyLCAweGFlMDAsIDB4MTA0OCwKLQkweDEzMzIsIDB4MjAwMSwgMHhhNzE2LCAweDIwMDQsIDB4YWMwMiwgMHgxMGM4LCAweDEzMzIsIDB4YTAwNiwKLQkweDYwMDYsIDB4NjAwYSwgMHg2MDBlLCAweDYwMTIsIDB4NjAxNiwgMHg2MDFhLCAweDYwMWYsIDB4MDAwMCwKLQkweDYwMDMsIDB4MDAwMCwgMHg2MDIyLCAweDYwMjYsIDB4NjAyYSwgMHg2MDJlLCAweDYwMzIsIDB4NjAzNiwKLQkweDYwM2EsIDB4NjAzZSwgMHgyMDYxLCAweGE3MDAsIDB4NjA0OCwgMHg4MDAwLCAweDYwNGEsIDB4YTA4NiwKLQkweDAwMDEsIDB4MDA0MCwgMHg3NzU0LCAweDAwN2MsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwKLQkweDYyZDEsIDB4MTI3ZiwgMHgwMDc4LCAweDc3NTMsIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MDA3OSwKLQkweDc3NjEsIDB4Nzc2YSwgMHg3NzdiLCAweDc3OTcsIDB4NzdiMywgMHg5MjFlLCAweDkyM2EsIDB4OTI1NiwKLQkweDc3NmEsIDB4Nzc3YiwgMHhhMTg2LCAweDAwMTMsIDB4MDBjMCwgMHg3NzczLCAweDEwNzgsIDB4NjFjZCwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExOGUsIDB4MDA0NywgMHgwMGMwLCAweDc3N2EsIDB4YTAxNiwKLQkweDEwNzgsIDB4MTVmYSwgMHgwMDdjLCAweDA2N2UsIDB4NjAwMCwgMHhhMGIyLCAweDAwMTAsIDB4MTBjOCwKLQkweDEzMzIsIDB4MTA3OSwgMHg3Nzg1LCAweDA2N2YsIDB4MDA3YywgMHg3Nzk1LCAweDdiMDAsIDB4N2NiMiwKLQkweDc3OTUsIDB4N2QzNiwgMHg3N2NmLCAweDc3OTUsIDB4Nzc5NSwgMHg3YTkyLCAweDgwZjYsIDB4Nzc5NSwKLQkweDc3OTUsIDB4Nzc5NSwgMHg3Nzk1LCAweDc3OTUsIDB4Nzc5NSwgMHgxMDc4LCAweDEzMzIsIDB4MDY3ZSwKLQkweDYwMDAsIDB4YTBiMiwgMHgwMDEwLCAweDEwYzgsIDB4MTMzMiwgMHgxMDc5LCAweDc3YTEsIDB4MDY3ZiwKLQkweDAwN2MsIDB4NzdiMSwgMHg4N2QzLCAweDc3YjEsIDB4NzdiMSwgMHg3N2IxLCAweDc3YjEsIDB4NzdiMSwKLQkweDc3YjEsIDB4ODc3NiwgMHg4OTYxLCAweDc3YjEsIDB4ODgwMywgMHg4ODg5LCAweDg4MDMsIDB4ODg4OSwKLQkweDc3YjEsIDB4MTA3OCwgMHgxMzMyLCAweDA2N2UsIDB4NjAwMCwgMHhhMGIyLCAweDAwMTAsIDB4MTBjOCwKLQkweDEzMzIsIDB4MTA3OSwgMHg3N2JkLCAweDA2N2YsIDB4MDA3YywgMHg3N2NkLCAweDgxM2QsIDB4ODIwZSwKLQkweDgzNzIsIDB4ODRmMSwgMHg3N2NkLCAweDc3Y2QsIDB4NzdjZCwgMHg4MTE2LCAweDg3MWUsIDB4ODcyMiwKLQkweDc3Y2QsIDB4NzdjZCwgMHg3N2NkLCAweDc3Y2QsIDB4ODc1MiwgMHgxMDc4LCAweDEzMzIsIDB4YTFiNiwKLQkweDAwMTUsIDB4MDBjMCwgMHg3N2Q3LCAweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDc3ZGQsIDB4YTFiNiwKLQkweDAwMTYsIDB4MTBjMCwgMHgxMzMyLCAweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDIwYTksIDB4MDAwZSwKLQkweDJlOTgsIDB4NjAxMCwgMHgyMGEwLCAweDUzYTMsIDB4MjBhOSwgMHgwMDA2LCAweDMzMTAsIDB4MzQyMCwKLQkweDkzOTgsIDB4OTRhMCwgMHgzMzE4LCAweDM0MjgsIDB4MjIyZSwgMHgyMzI2LCAweGEyOTAsIDB4MDAwMiwKLQkweGE1YTgsIDB4MDAwMiwgMHhhMzk4LCAweDAwMDIsIDB4YTRhMCwgMHgwMDAyLCAweDAwZjAsIDB4NzdlYywKLQkweDBlN2UsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4NzgwMywgMHg2MDEwLCAweDIwNzAsIDB4NzAwNywKLQkweDAwMDAsIDB4NzAzNywgMHgwMTAzLCAweDBlN2YsIDB4MTA3OCwgMHg3NzJkLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDAzN2UsIDB4NzMzMCwgMHhhMzg2LCAweDAyMDAsIDB4MDBjMCwgMHg3ODE0LCAweDYwMTgsIDB4MjA2OCwKLQkweDY4MTMsIDB4MDBmZiwgMHg2ODE3LCAweGZmZmQsIDB4NjAxMCwgMHhhMDA1LCAweDAwNDAsIDB4NzgxZSwKLQkweDIwNjgsIDB4NjgwNywgMHgwMDAwLCAweDY4MzcsIDB4MDEwMywgMHg2YjMyLCAweDEwNzgsIDB4NzcyZCwKLQkweDAzN2YsIDB4MGQ3ZiwgMHgwMDdjLCAweDAxN2UsIDB4MjBhOSwgMHgwMDJhLCAweGFlODAsIDB4MDAwYywKLQkweDIwOTgsIDB4NjAxMCwgMHhhMDgwLCAweDAwMDIsIDB4MjBhMCwgMHg1M2EzLCAweDIwYTksIDB4MDAyYSwKLQkweDYwMTAsIDB4YTA4MCwgMHgwMDAxLCAweDIwMDQsIDB4YTA4MCwgMHgwMDAyLCAweDIwYTAsIDB4NTNhMywKLQkweDBlN2UsIDB4NjAxMCwgMHgyMDA0LCAweDIwNzAsIDB4NzAzNywgMHgwMTAzLCAweDBlN2YsIDB4MTA3OCwKLQkweDc3MmQsIDB4MDE3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MGQ3ZSwgMHg2MDNmLCAweDAwMDAsIDB4MmM2OCwKLQkweDAxN2UsIDB4MjAwOSwgMHgwMDM1LCAweDEwNzgsIDB4OTFjYywgMHgwMTdmLCAweDAwYzAsIDB4Nzg1ZiwKLQkweDAyN2UsIDB4NjIyOCwgMHgyMjY4LCAweDAyN2YsIDB4MjA3MSwgMHhhYzhjLCAweDZiMWMsIDB4YTM4NiwKLQkweDAwMDMsIDB4MDA0MCwgMHg3ODYzLCAweGEzODYsIDB4MDAwNiwgMHgwMDQwLCAweDc4NjcsIDB4MTA3OCwKLQkweDc3MmQsIDB4MDA3OCwgMHg3ODY5LCAweDEwNzgsIDB4Nzg2YywgMHgwMDc4LCAweDc4NjksIDB4MTA3OCwKLQkweDc5MzgsIDB4MGQ3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MGY3ZSwgMHg2ODEwLCAweDIwNzgsIDB4YTE4NiwKLQkweDAwMTUsIDB4MDA0MCwgMHg3OTFkLCAweGExOGUsIDB4MDAxNiwgMHgwMGMwLCAweDc5MzYsIDB4NzAwYywKLQkweGEwOGMsIDB4ZmYwMCwgMHhhMTg2LCAweDE3MDAsIDB4MDA0MCwgMHg3ODgyLCAweGExODYsIDB4MDMwMCwKLQkweDAwYzAsIDB4NzhmOCwgMHg4ZmZmLCAweDAwYzAsIDB4Nzg4YywgMHg2ODAwLCAweGEwODYsIDB4MDAwZiwKLQkweDAwNDAsIDB4NzhkYiwgMHgwMDc4LCAweDc5MzQsIDB4NjgwOCwgMHhhMDg2LCAweGZmZmYsIDB4MDBjMCwKLQkweDc5MjEsIDB4Nzg0YywgMHhhMDg0LCAweDAwNjAsIDB4YTA4NiwgMHgwMDIwLCAweDAwYzAsIDB4NzhhMiwKLQkweDc5N2MsIDB4NzgxMCwgMHhhMTA2LCAweDAwYzAsIDB4NzkyMSwgMHg3OTgwLCAweDc4MTQsIDB4YTEwNiwKLQkweDAwYzAsIDB4NzkyMSwgMHgxMDc4LCAweDhlYzksIDB4NjgzMCwgMHg3ODUyLCAweDc4NGMsIDB4YzBkYywKLQkweGMwZjQsIDB4YzBkNCwgMHg3ODRlLCAweDAyN2UsIDB4YTAwZSwgMHg2YTE0LCAweDIwMDEsIDB4MDAwYSwKLQkweDEwNzgsIDB4NWMxYywgMHg3ODU0LCAweGEyMGEsIDB4MDA0OCwgMHg3OGI3LCAweDgwMTEsIDB4N2E1NiwKLQkweDgyZmYsIDB4MDI3ZiwgMHgwMGMwLCAweDc4YzMsIDB4MGM3ZSwgMHgyZDYwLCAweDEwNzgsIDB4OGFmMCwKLQkweDBjN2YsIDB4MDA3OCwgMHg3OTM0LCAweDBjN2UsIDB4MGQ3ZSwgMHgyZjY4LCAweDY4MzgsIDB4ZDBmYywKLQkweDAwYzAsIDB4NzhjZSwgMHgxMDc4LCAweDQzNTMsIDB4MDA3OCwgMHg3OGQwLCAweDEwNzgsIDB4NDQzMSwKLQkweDBkN2YsIDB4MGM3ZiwgMHgwMGMwLCAweDc5MjEsIDB4MGM3ZSwgMHgyZDYwLCAweDEwNzgsIDB4NzcyZCwKLQkweDBjN2YsIDB4MDA3OCwgMHg3OTM0LCAweDBjN2UsIDB4MTA3OCwgMHg5MTk3LCAweDAwNDAsIDB4NzhmMSwKLQkweDYwMTMsIDB4MDAwMCwgMHg2ODE4LCAweDYwMWEsIDB4NjAxZiwgMHgwMDAzLCAweDY5MDQsIDB4MGM3ZSwKLQkweDJkNjAsIDB4MTA3OCwgMHg3NzJkLCAweDBjN2YsIDB4MTA3OCwgMHg3NzVjLCAweDBjN2YsIDB4MDA3OCwKLQkweDc5MzQsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NjgzZSwgMHgwYzdmLCAweDAwNzgsIDB4NzkzNCwKLQkweDcwMDgsIDB4YTA4NiwgMHgwMDBiLCAweDAwYzAsIDB4NzkxMiwgMHg2MDE4LCAweDIwMGMsIDB4YzFiYywKLQkweDIxMDIsIDB4MGM3ZSwgMHgyZDYwLCAweDc4NTMsIDB4MDAwMywgMHg2MDA3LCAweDAwODUsIDB4NjAwMywKLQkweDAwMGIsIDB4NjAxZiwgMHgwMDAyLCAweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZiwKLQkweDAwNzgsIDB4NzkzNCwgMHg3MDBjLCAweGEwODYsIDB4MmEwMCwgMHgwMGMwLCAweDc5MjEsIDB4MjAwMSwKLQkweGE5YTQsIDB4MjAwNCwgMHg2ODNlLCAweDAwNzgsIDB4NzkzNCwgMHgxMDc4LCAweDc5NTMsIDB4MDA3OCwKLQkweDc5MzYsIDB4OGZmZiwgMHgxMDQwLCAweDEzMzIsIDB4MGM3ZSwgMHgwZDdlLCAweDJkNjAsIDB4MmY2OCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ODRiLCAweDAwMDMsIDB4MTA3OCwgMHg4OWRmLCAweDEwNzgsIDB4OGVjOSwKLQkweDEwNzgsIDB4OGVkNiwgMHgwZDdmLCAweDBjN2YsIDB4MTA3OCwgMHg3NzJkLCAweDBmN2YsIDB4MDA3YywKLQkweGExODYsIDB4MDAxNSwgMHgwMGMwLCAweDc5NDIsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NjgzZSwKLQkweDAwNzgsIDB4Nzk1MCwgMHhhMThlLCAweDAwMTYsIDB4MDBjMCwgMHg3OTUyLCAweDBjN2UsIDB4MmQwMCwKLQkweDIwNjAsIDB4MTA3OCwgMHhhNGE1LCAweDEwNzgsIDB4NWJjMSwgMHgxMDc4LCAweDc3MmQsIDB4MGM3ZiwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDAyN2UsIDB4MDM3ZSwgMHgwNDdlLCAweDcyMjgsIDB4N2M4MCwKLQkweDdiN2MsIDB4ZDJmNCwgMHgwMDQwLCAweDc5NjIsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NjgzZSwKLQkweDAwNzgsIDB4NzljNiwgMHgwYzdlLCAweDJkNjAsIDB4MTA3OCwgMHg4YTAzLCAweDBjN2YsIDB4NjgwNCwKLQkweGEwODYsIDB4MDA1MCwgMHgwMGMwLCAweDc5N2EsIDB4MGM3ZSwgMHgyZDAwLCAweDIwNjAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDUwLCAweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZiwKLQkweDAwNzgsIDB4NzljNiwgMHg2ODAwLCAweGEwODYsIDB4MDAwZiwgMHgwMDQwLCAweDc5OWMsIDB4OGZmZiwKLQkweDEwNDAsIDB4MTMzMiwgMHg2ODI0LCAweGQwZGMsIDB4MDBjMCwgMHg3OTljLCAweDY4MDAsIDB4YTA4NiwKLQkweDAwMDQsIDB4MDBjMCwgMHg3OWExLCAweDc4NGMsIDB4ZDBhYywgMHgwMDQwLCAweDc5YTEsIDB4Nzg0YywKLQkweGMwZGMsIDB4YzBmNCwgMHg3ODRlLCAweDc4NTAsIDB4YzBmNCwgMHhjMGZjLCAweDc4NTIsIDB4MjAwMSwKLQkweDAwMDEsIDB4NjgyZSwgMHgwMDc4LCAweDc5YzAsIDB4MjAwMSwgMHgwMDA3LCAweDY4MmUsIDB4MDA3OCwKLQkweDc5YzAsIDB4Nzg0YywgMHhkMGI0LCAweDAwYzAsIDB4NzlhZSwgMHhkMGFjLCAweDAwNDAsIDB4Nzk5YywKLQkweDc4NGMsIDB4ZDBmNCwgMHgwMGMwLCAweDc5OWMsIDB4MDA3OCwgMHg3OThmLCAweGQyZWMsIDB4MDBjMCwKLQkweDc5OWMsIDB4NzAyNCwgMHhhMzA2LCAweDAwYzAsIDB4NzliOSwgMHg3MDIwLCAweGE0MDYsIDB4MDA0MCwKLQkweDc5OWMsIDB4NzAyMCwgMHg2ODM2LCAweDcwMjQsIDB4NjgzYSwgMHgyMDAxLCAweDAwMDUsIDB4NjgyZSwKLQkweDEwNzgsIDB4OTAwMCwgMHgxMDc4LCAweDYyZDEsIDB4MDA3OCwgMHg3OWM4LCAweDEwNzgsIDB4NzcyZCwKLQkweDA0N2YsIDB4MDM3ZiwgMHgwMjdmLCAweDAwN2MsIDB4MGU3ZSwgMHgwZDdlLCAweDAyN2UsIDB4NjAzNCwKLQkweDIwNjgsIDB4NmExYywgMHhhMjg2LCAweDAwMDcsIDB4MDA0MCwgMHg3YTM1LCAweGEyODYsIDB4MDAwMiwKLQkweDAwNDAsIDB4N2EzNSwgMHhhMjg2LCAweDAwMDAsIDB4MDA0MCwgMHg3YTM1LCAweDY4MDgsIDB4NjMzOCwKLQkweGEzMDYsIDB4MDBjMCwgMHg3YTM1LCAweDIwNzEsIDB4YWM4YywgMHhhMTg2LCAweDAwMTUsIDB4MDA0MCwKLQkweDdhMmYsIDB4YTE4ZSwgMHgwMDE2LCAweDAwYzAsIDB4N2EwMiwgMHg2MDMwLCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDAwMSwgMHgwMGMwLCAweDdhMDIsIDB4NzAwYywgMHhhMDg2LCAweDJhMDAsIDB4MDBjMCwKLQkweDdhMDIsIDB4NjAzNCwgMHhhMDgwLCAweDAwMDksIDB4MjAwYywgMHhjMWRkLCAweGMxZjUsIDB4MjEwMiwKLQkweDAwNzgsIDB4N2EyZiwgMHgwYzdlLCAweDYwMzQsIDB4MjA2MCwgMHg2MTA0LCAweGExODYsIDB4MDA0YiwKLQkweDAwNDAsIDB4N2EyMiwgMHhhMTg2LCAweDAwNGMsIDB4MDA0MCwgMHg3YTIyLCAweGExODYsIDB4MDA0ZCwKLQkweDAwNDAsIDB4N2EyMiwgMHhhMTg2LCAweDAwNGUsIDB4MDA0MCwgMHg3YTIyLCAweGExODYsIDB4MDA1MiwKLQkweDAwNDAsIDB4N2EyMiwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDEwNDAsIDB4MTMzMiwKLQkweDY4NTMsIDB4MDAwMywgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMWYsIDB4MDAwMiwKLQkweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZiwgMHgwMDc4LCAweDdhMzUsIDB4NjAzNCwKLQkweDIwNjgsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NjgzZSwgMHgxMDc4LCAweDc3MmQsIDB4MDI3ZiwKLQkweDBkN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDBkN2UsIDB4MjBhOSwgMHgwMDBlLCAweDJlOTgsIDB4NjAxMCwKLQkweDIwYTAsIDB4NTNhMywgMHhhMWI2LCAweDAwMTUsIDB4MDBjMCwgMHg3YTczLCAweDYwMTgsIDB4MjA2OCwKLQkweDE1N2UsIDB4MDM3ZSwgMHgwMjdlLCAweGFlOTAsIDB4MDAwYywgMHhhMjkwLCAweDAwMDQsIDB4MjBhOSwKLQkweDAwMDQsIDB4YWQ5OCwgMHgwMDBhLCAweDEwNzgsIDB4ODBkZSwgMHgwMjdmLCAweDAzN2YsIDB4MTU3ZiwKLQkweDAwYzAsIDB4N2E3NiwgMHgxNTdlLCAweDAzN2UsIDB4MDI3ZSwgMHhhZTkwLCAweDAwMGMsIDB4YTI5MCwKLQkweDAwMDgsIDB4MjBhOSwgMHgwMDA0LCAweGFkOTgsIDB4MDAwNiwgMHgxMDc4LCAweDgwZGUsIDB4MDI3ZiwKLQkweDAzN2YsIDB4MTU3ZiwgMHgwMGMwLCAweDdhNzYsIDB4NzAzOCwgMHg2ODBhLCAweDcwM2MsIDB4NjgwZSwKLQkweDY4MDAsIDB4YzA4ZCwgMHg2ODAyLCAweDBkN2YsIDB4MDA3OCwgMHg3N2Y4LCAweDEwNzgsIDB4Mjg4MCwKLQkweDBjN2UsIDB4MTA3OCwgMHg3NmM3LCAweDJmMDAsIDB4NjAxYSwgMHg2MDEzLCAweDAwMDAsIDB4NjAxZiwKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDcsIDB4MTA3OCwKLQkweDQ1MDIsIDB4MTA3OCwgMHg0NTM1LCAweDEwNzgsIDB4NWRkNywgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZiwKLQkweDAwNzgsIDB4N2E3MywgMHgyMTAwLCAweGExYjIsIDB4MDA0NCwgMHgxMGM4LCAweDEzMzIsIDB4YTFiMiwKLQkweDAwNDAsIDB4MDBjOCwgMHg3YWY3LCAweDAwNzksIDB4N2E5ZCwgMHg3YWViLCAweDdhZGYsIDB4N2FlYiwKLQkweDdhZWIsIDB4N2FlYiwgMHg3YWViLCAweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FlYiwgMHg3YWRkLCAweDdhZWIsIDB4N2FlYiwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwgMHg3YWViLCAweDdhZGQsIDB4N2FkZCwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FlYiwKLQkweDdhZWIsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwgMHg3YWRkLCAweDdhZGQsIDB4N2FkZCwKLQkweDdhZGQsIDB4N2FkZCwgMHg3YWViLCAweDdhZGQsIDB4N2FkZCwgMHgxMDc4LCAweDEzMzIsIDB4NjAwMywKLQkweDAwMDEsIDB4NjEwNiwgMHgxMDc4LCAweDVkZDcsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwKLQkweDYyZDEsIDB4MTI3ZiwgMHgwMDdjLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDEwNzgsIDB4NWRkNywKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NjJkMSwgMHgxMjdmLCAweDAwN2MsIDB4MjYwMCwKLQkweDAwNzksIDB4N2FmYSwgMHg3YWZlLCAweDdhZmUsIDB4N2FmZSwgMHg3YWViLCAweDEwNzgsIDB4MTMzMiwKLQkweDYwMDQsIDB4YTBiMiwgMHgwMDQ0LCAweDEwYzgsIDB4MTMzMiwgMHhhMWI2LCAweDAwMTMsIDB4MDBjMCwKLQkweDdiMTAsIDB4YTBiMiwgMHgwMDQwLCAweDAwYzgsIDB4N2M3OSwgMHgyMDA4LCAweDAwNzksIDB4N2JiZiwKLQkweGExYjYsIDB4MDAyNywgMHgwMGMwLCAweDdiN2MsIDB4MTA3OCwgMHg2MWNkLCAweDYwMDQsIDB4MTA3OCwKLQkweDhlZmMsIDB4MDA0MCwgMHg3YjJkLCAweDEwNzgsIDB4OGYxMCwgMHgwMDQwLCAweDdiNzQsIDB4YTA4ZSwKLQkweDAwMjEsIDB4MDA0MCwgMHg3Yjc4LCAweGEwOGUsIDB4MDAyMiwgMHgwMDQwLCAweDdiNzQsIDB4YTA4ZSwKLQkweDAwM2QsIDB4MDA0MCwgMHg3Yjc4LCAweDAwNzgsIDB4N2I2ZiwgMHgxMDc4LCAweDI4YTYsIDB4MjAwMSwKLQkweDAwMDcsIDB4MTA3OCwgMHg0NTAyLCAweDYwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMGMsIDB4MTA3OCwKLQkweDdjODMsIDB4YTE4NiwgMHgwMDdlLCAweDAwYzAsIDB4N2I0MiwgMHgyMDAxLCAweGE3MzMsIDB4MjAxNCwKLQkweGMyODUsIDB4MjIwMiwgMHgwMTdlLCAweDAyN2UsIDB4MDM3ZSwgMHgyMTEwLCAweDAyN2UsIDB4MjAxOSwKLQkweDAwMjgsIDB4MTA3OCwgMHg3M2QwLCAweDAyN2YsIDB4MTA3OCwgMHhhNTAxLCAweDAzN2YsIDB4MDI3ZiwKLQkweDAxN2YsIDB4MDE3ZSwgMHgwMjdlLCAweDAzN2UsIDB4MjExMCwgMHgyMDE5LCAweDAwMjgsIDB4MTA3OCwKLQkweDVmMDEsIDB4MDc3ZSwgMHgyMDM5LCAweDAwMDAsIDB4MTA3OCwgMHg1ZTBhLCAweDBjN2UsIDB4NjAxOCwKLQkweGEwNjUsIDB4MDA0MCwgMHg3YjY1LCAweDEwNzgsIDB4NDdlOSwgMHgwYzdmLCAweDJjMDgsIDB4MTA3OCwKLQkweDlmOWIsIDB4MDc3ZiwgMHgwMzdmLCAweDAyN2YsIDB4MDE3ZiwgMHgxMDc4LCAweDQ1N2YsIDB4MTA3OCwKLQkweDc3MmQsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4MTA3OCwgMHg3YzgzLCAweDAwNzgsIDB4N2I2ZiwKLQkweDEwNzgsIDB4N2NhNiwgMHgwMDc4LCAweDdiNmYsIDB4YTE4NiwgMHgwMDE0LCAweDAwYzAsIDB4N2I3MywKLQkweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDI4ODAsIDB4MTA3OCwgMHg4ZWZjLCAweDAwYzAsIDB4N2I5YiwKLQkweDEwNzgsIDB4MjhhNiwgMHg2MDE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDBjLCAweDEwNzgsIDB4N2M4MywKLQkweGExODYsIDB4MDA3ZSwgMHgwMGMwLCAweDdiOTksIDB4MjAwMSwgMHhhNzMzLCAweDIwMGMsIDB4YzE4NSwKLQkweDIxMDIsIDB4MDA3OCwgMHg3YjZmLCAweDEwNzgsIDB4OGYxMCwgMHgwMGMwLCAweDdiYTMsIDB4MTA3OCwKLQkweDdjODMsIDB4MDA3OCwgMHg3YjZmLCAweDYwMDQsIDB4YTA4ZSwgMHgwMDMyLCAweDAwYzAsIDB4N2JiNCwKLQkweDBlN2UsIDB4MGY3ZSwgMHgyMDcxLCAweGE3ODIsIDB4MjA3OSwgMHgwMDAwLCAweDEwNzgsIDB4MmJkNywKLQkweDBmN2YsIDB4MGU3ZiwgMHgwMDc4LCAweDdiNmYsIDB4NjAwNCwgMHhhMDhlLCAweDAwMjEsIDB4MDA0MCwKLQkweDdiOWYsIDB4YTA4ZSwgMHgwMDIyLCAweDEwNDAsIDB4N2M4MywgMHgwMDc4LCAweDdiNmYsIDB4N2MwMSwKLQkweDdjMDMsIDB4N2MwNywgMHg3YzBiLCAweDdjMGYsIDB4N2MxMywgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwKLQkweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwKLQkweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwKLQkweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwgMHg3YzE3LCAweDdjMjksIDB4N2JmZiwKLQkweDdjMmIsIDB4N2MyOSwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2MyOSwKLQkweDdjMjksIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwKLQkweDdiZmYsIDB4N2M1YywgMHg3YzI5LCAweDdiZmYsIDB4N2MyMywgMHg3YmZmLCAweDdiZmYsIDB4N2JmZiwKLQkweDdjMjUsIDB4N2JmZiwgMHg3YmZmLCAweDdiZmYsIDB4N2MyOSwgMHg3YmZmLCAweDdiZmYsIDB4MTA3OCwKLQkweDEzMzIsIDB4MDA3OCwgMHg3YzI5LCAweDIwMDEsIDB4MDAwYiwgMHgwMDc4LCAweDdjMzYsIDB4MjAwMSwKLQkweDAwMDMsIDB4MDA3OCwgMHg3YzM2LCAweDIwMDEsIDB4MDAwNSwgMHgwMDc4LCAweDdjMzYsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDA3OCwgMHg3YzM2LCAweDIwMDEsIDB4MDAwOSwgMHgwMDc4LCAweDdjMzYsIDB4MTA3OCwKLQkweDYxY2QsIDB4NjAwMywgMHgwMDA1LCAweDIwMDEsIDB4YTlhNCwgMHgyMDA0LCAweDYwM2UsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3OCwgMHg3YzM1LCAweDAwNzgsIDB4N2MyOSwgMHgwMDc4LCAweDdjMjksIDB4MTA3OCwKLQkweDQ1MDIsIDB4MDA3OCwgMHg3YzZlLCAweDEwNzgsIDB4NjFjZCwgMHg2MDAzLCAweDAwMDQsIDB4MjAwMSwKLQkweGE5YTIsIDB4MjAwNCwgMHg2MDE2LCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDEwNzgsIDB4NDUwMiwKLQkweDEwNzgsIDB4NjFjZCwgMHgyMDAxLCAweGE5YTQsIDB4MjAwNCwgMHg2MDNlLCAweDYwMDMsIDB4MDAwMiwKLQkweDAzN2UsIDB4MjAxOSwgMHhhNzVkLCAweDIzMDQsIDB4YTA4NCwgMHhmZjAwLCAweDAwYzAsIDB4N2M0ZCwKLQkweDIwMTksIDB4YTlhMiwgMHgyMzFjLCAweDAwNzgsIDB4N2M1NiwgMHg4MDA3LCAweGEwOWEsIDB4MDAwNCwKLQkweDAwNDgsIDB4N2M0OCwgMHg4MDAzLCAweDgwMWIsIDB4ODMxYiwgMHhhMzE4LCAweDYzMTYsIDB4MDM3ZiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDdjMzUsIDB4MGU3ZSwgMHgwZjdlLCAweDIwNzEsIDB4YTc4MiwKLQkweDIwNzksIDB4MDAwMCwgMHgxMDc4LCAweDJiZDcsIDB4MGY3ZiwgMHgwZTdmLCAweDEwNzgsIDB4NjFjZCwKLQkweDEwNzgsIDB4NzcyZCwgMHgxMDc4LCAweDYyZDEsIDB4MDA3OCwgMHg3YzM1LCAweDEwNzgsIDB4NjFjZCwKLQkweDYwMDMsIDB4MDAwMiwgMHgyMDAxLCAweGE5YTIsIDB4MjAwNCwgMHg2MDE2LCAweDEwNzgsIDB4NjJkMSwKLQkweDAwN2MsIDB4MjYwMCwgMHgyMDA4LCAweDAwNzksIDB4N2M3ZCwgMHg3YzgxLCAweDdjODEsIDB4N2M4MSwKLQkweDdjNmUsIDB4MTA3OCwgMHgxMzMyLCAweDBlN2UsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4N2M5ZiwKLQkweDYwMTAsIDB4MjA3MCwgMHg3MDM4LCAweGQwZmMsIDB4MDA0MCwgMHg3YzlmLCAweDcwMDcsIDB4MDAwMCwKLQkweDAxN2UsIDB4NjAwNCwgMHhhMDhlLCAweDAwMjEsIDB4MDA0MCwgMHg3Y2ExLCAweGEwOGUsIDB4MDAzZCwKLQkweDAwNDAsIDB4N2NhMSwgMHgwMTdmLCAweDcwMzcsIDB4MDEwMywgMHg3MDMzLCAweDAxMDAsIDB4MGU3ZiwKLQkweDAwN2MsIDB4MDE3ZiwgMHgxMDc4LCAweDdjYTYsIDB4MDA3OCwgMHg3YzlmLCAweDBlN2UsIDB4YWNmMCwKLQkweDAwMDQsIDB4MmU3NCwgMHg3MDAwLCAweDIwNzAsIDB4NzAzNywgMHgwMTAzLCAweDcwMjMsIDB4ODAwMSwKLQkweDBlN2YsIDB4MDA3YywgMHgwZDdlLCAweDY2MTgsIDB4MjY2OCwgMHg2ODA0LCAweGEwODQsIDB4MDBmZiwKLQkweDBkN2YsIDB4YTBiMiwgMHgwMDBjLCAweDEwYzgsIDB4MTMzMiwgMHg2NjA0LCAweGE2YjYsIDB4MDA0MywKLQkweDAwYzAsIDB4N2NjNiwgMHgxMDc4LCAweDkxNDQsIDB4MDA3OCwgMHg3ZDI1LCAweDY2MDQsIDB4YTZiNiwKLQkweDAwMzMsIDB4MDBjMCwgMHg3Y2NmLCAweDEwNzgsIDB4OTBlOCwgMHgwMDc4LCAweDdkMjUsIDB4NjYwNCwKLQkweGE2YjYsIDB4MDAyOCwgMHgwMGMwLCAweDdjZDgsIDB4MTA3OCwgMHg4ZjNmLCAweDAwNzgsIDB4N2QyNSwKLQkweDY2MDQsIDB4YTZiNiwgMHgwMDI5LCAweDAwYzAsIDB4N2NlMSwgMHgxMDc4LCAweDhmNTksIDB4MDA3OCwKLQkweDdkMjUsIDB4NjYwNCwgMHhhNmI2LCAweDAwMWYsIDB4MDBjMCwgMHg3Y2VhLCAweDEwNzgsIDB4NzdkZSwKLQkweDAwNzgsIDB4N2QyNSwgMHg2NjA0LCAweGE2YjYsIDB4MDAwMCwgMHgwMGMwLCAweDdjZjMsIDB4MTA3OCwKLQkweDdhM2IsIDB4MDA3OCwgMHg3ZDI1LCAweDY2MDQsIDB4YTZiNiwgMHgwMDIyLCAweDAwYzAsIDB4N2NmYywKLQkweDEwNzgsIDB4NzgwNywgMHgwMDc4LCAweDdkMjUsIDB4NjYwNCwgMHhhNmI2LCAweDAwMzUsIDB4MDBjMCwKLQkweDdkMDUsIDB4MTA3OCwgMHg3ODQzLCAweDAwNzgsIDB4N2QyNSwgMHg2NjA0LCAweGE2YjYsIDB4MDAzOSwKLQkweDAwYzAsIDB4N2QwZSwgMHgxMDc4LCAweDc5Y2MsIDB4MDA3OCwgMHg3ZDI1LCAweDY2MDQsIDB4YTZiNiwKLQkweDAwM2QsIDB4MDBjMCwgMHg3ZDE3LCAweDEwNzgsIDB4NzgyMywgMHgwMDc4LCAweDdkMjUsIDB4YTFiNiwKLQkweDAwMTUsIDB4MDBjMCwgMHg3ZDFmLCAweDEwNzksIDB4N2QyYSwgMHgwMDc4LCAweDdkMjUsIDB4YTFiNiwKLQkweDAwMTYsIDB4MDBjMCwgMHg3ZDI2LCAweDEwNzksIDB4N2U3ZiwgMHgwMDdjLCAweDEwNzgsIDB4Nzc3MywKLQkweDAwNzgsIDB4N2QyNSwgMHg3ZDRlLCAweDdkNTEsIDB4N2Q0ZSwgMHg3ZDljLCAweDdkNGUsIDB4N2UxMywKLQkweDdlOGIsIDB4N2Q0ZSwgMHg3ZDRlLCAweDdlNTcsIDB4N2Q0ZSwgMHg3ZTZkLCAweGExYjYsIDB4MDA0OCwKLQkweDAwNDAsIDB4N2Q0MiwgMHgyMGUxLCAweDAwMDUsIDB4M2QxOCwgMHgzZTIwLCAweDJjMTAsIDB4MTA3OCwKLQkweDE1ZmEsIDB4MDA3YywgMHgwZTdlLCAweGFjZjAsIDB4MDAwNCwgMHgyZTc0LCAweDcwMDAsIDB4MjA3MCwKLQkweDcwMzcsIDB4MDEwMywgMHgwZTdmLCAweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDAwMDUsIDB4MDAwNSwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE3MDAsIDB4NzA4MCwgMHhhMDg2LCAweDAwNzQsIDB4MDBjMCwKLQkweDdkODUsIDB4MTA3OCwgMHg5ZjZmLCAweDAwYzAsIDB4N2Q3NywgMHgwZDdlLCAweDYwMTgsIDB4MjA2OCwKLQkweDcwMzAsIDB4ZDA4YywgMHgwMDQwLCAweDdkNmEsIDB4NjgwMCwgMHhkMGJjLCAweDAwNDAsIDB4N2Q2YSwKLQkweGMwYzUsIDB4NjgwMiwgMHgxMDc4LCAweDdkODksIDB4MGQ3ZiwgMHgyMDAxLCAweDAwMDYsIDB4MTA3OCwKLQkweDQ1MDIsIDB4MTA3OCwgMHgyOGE2LCAweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDdkODcsIDB4MjAwMSwKLQkweDAwMGEsIDB4MTA3OCwgMHg0NTAyLCAweDEwNzgsIDB4MjhhNiwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDEsIDB4MTA3OCwgMHg1ZGQ3LCAweDAwNzgsIDB4N2Q4NywgMHgxMDc4LCAweDdkZmYsIDB4MGU3ZiwKLQkweDAwN2MsIDB4NjgwMCwgMHhkMDg0LCAweDAwNDAsIDB4N2Q5YiwgMHgyMDAxLCAweDAwMDAsIDB4MTA3OCwKLQkweDQ0ZWUsIDB4MjA2OSwgMHhhNzUyLCAweDY4MDQsIDB4ZDBhNCwgMHgwMDQwLCAweDdkOWIsIDB4MjAwMSwKLQkweDAwMDYsIDB4MTA3OCwgMHg0NTM1LCAweDAwN2MsIDB4MGQ3ZSwgMHgyMDExLCAweGE3MjAsIDB4MjIwNCwKLQkweGEwODYsIDB4MDA3NCwgMHgwMGMwLCAweDdkZmIsIDB4NjAxOCwgMHgyMDY4LCAweDZhYTAsIDB4YTI4NiwKLQkweDAwN2UsIDB4MDBjMCwgMHg3ZGFmLCAweDEwNzgsIDB4N2Y5YiwgMHgwMDc4LCAweDdkZmQsIDB4MTA3OCwKLQkweDdmOTEsIDB4NjAxOCwgMHgyMDY4LCAweGEwODAsIDB4MDAyOCwgMHgyMDE0LCAweGEyODYsIDB4MDA4MCwKLQkweDAwYzAsIDB4N2RkMywgMHg2ODEzLCAweDAwZmYsIDB4NjgxNywgMHhmZmZjLCAweDYwMTAsIDB4YTAwNSwKLQkweDAwNDAsIDB4N2RjOSwgMHgyMDY4LCAweDY4MDcsIDB4MDAwMCwgMHg2ODM3LCAweDAxMDMsIDB4NjgzMywKLQkweDAyMDAsIDB4MjAwMSwgMHgwMDA2LCAweDEwNzgsIDB4NDUwMiwgMHgxMDc4LCAweDI4YTYsIDB4MTA3OCwKLQkweDc3MmQsIDB4MDA3OCwgMHg3ZGZkLCAweDBlN2UsIDB4MjA3MSwgMHhhNzMzLCAweDJlMDQsIDB4ZDA5YywKLQkweDAwNDAsIDB4N2RlZSwgMHgyMDcxLCAweGFjODAsIDB4NzEwOCwgMHg3MjBjLCAweGExOGMsIDB4MDBmZiwKLQkweDAwYzAsIDB4N2RlNiwgMHhhMjg0LCAweGZmMDAsIDB4MDA0MCwgMHg3ZGVlLCAweDYwMTgsIDB4MjA3MCwKLQkweDcwYTAsIDB4ZDBiYywgMHgwMGMwLCAweDdkZWUsIDB4NzExMiwgMHg3MjE2LCAweDBlN2YsIDB4MjAwMSwKLQkweDAwMDQsIDB4MTA3OCwgMHg0NTAyLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDMsIDB4MTA3OCwKLQkweDVkZDcsIDB4MDA3OCwgMHg3ZGZkLCAweDEwNzgsIDB4N2RmZiwgMHgwZDdmLCAweDAwN2MsIDB4MjAwMSwKLQkweDAwMDcsIDB4MTA3OCwgMHg0NTAyLCAweDIwMDEsIDB4YTcwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywKLQkweDAwYzAsIDB4N2UwZSwgMHgyMDAxLCAweDAwMDcsIDB4MTA3OCwgMHg0NTM1LCAweDEwNzgsIDB4MjhhNiwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwgMHhhNzAwLCAweDcwODAsIDB4YTA4NiwKLQkweDAwMTQsIDB4MDBjMCwgMHg3ZTUxLCAweDcwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDAwYzAsIDB4N2UyNiwKLQkweDYwMTAsIDB4YTAwNSwgMHgwMGMwLCAweDdlMjYsIDB4MTA3OCwgMHgzNjk5LCAweDBkN2UsIDB4NjAxOCwKLQkweDIwNjgsIDB4MTA3OCwgMHg0NjQ5LCAweDEwNzgsIDB4N2Q4OSwgMHgwZDdmLCAweDEwNzgsIDB4ODA0MywKLQkweDAwYzAsIDB4N2U1MSwgMHgwZDdlLCAweDYwMTgsIDB4MjA2OCwgMHg2ODkwLCAweDBkN2YsIDB4YTAwNSwKLQkweDAwNDAsIDB4N2U1MSwgMHgyMDAxLCAweDAwMDYsIDB4MTA3OCwgMHg0NTAyLCAweDBlN2UsIDB4NjAxMCwKLQkweGEwMDUsIDB4MDA0MCwgMHg3ZTRhLCAweDIwNzAsIDB4NzAwNywgMHgwMDAwLCAweDcwMzcsIDB4MDEwMywKLQkweDcwMzMsIDB4MDIwMCwgMHgwZTdmLCAweDEwNzgsIDB4MjhhNiwgMHgxMDc4LCAweDc3MmQsIDB4MDA3OCwKLQkweDdlNTUsIDB4MTA3OCwgMHg3YzgzLCAweDEwNzgsIDB4N2RmZiwgMHgwZTdmLCAweDAwN2MsIDB4MjAxMSwKLQkweGE3MjAsIDB4MjIwNCwgMHhhMDg2LCAweDAwMTQsIDB4MDBjMCwgMHg3ZTZhLCAweDIwMDEsIDB4MDAwMiwKLQkweDEwNzgsIDB4NDUwMiwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDEwNzgsIDB4NWRkNywKLQkweDAwNzgsIDB4N2U2YywgMHgxMDc4LCAweDdkZmYsIDB4MDA3YywgMHgyMDExLCAweGE3MjAsIDB4MjIwNCwKLQkweGEwODYsIDB4MDAwNCwgMHgwMGMwLCAweDdlN2MsIDB4MjAwMSwgMHgwMDA3LCAweDEwNzgsIDB4NDUwMiwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDdlN2UsIDB4MTA3OCwgMHg3ZGZmLCAweDAwN2MsIDB4N2Q0ZSwKLQkweDdlOTcsIDB4N2Q0ZSwgMHg3ZWQyLCAweDdkNGUsIDB4N2Y0NCwgMHg3ZThiLCAweDdkNGUsIDB4N2Q0ZSwKLQkweDdmNTksIDB4N2Q0ZSwgMHg3ZjZjLCAweDY2MDQsIDB4YTY4NiwgMHgwMDAzLCAweDAwNDAsIDB4N2UxMywKLQkweGE2YjYsIDB4MDAxZSwgMHgwMGMwLCAweDdlOTYsIDB4MTA3OCwgMHg3NzJkLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDBjN2UsIDB4MTA3OCwgMHg3ZjdmLCAweDAwYzAsIDB4N2VhZCwgMHgyMDAxLCAweDAwMDAsIDB4MTA3OCwKLQkweDQ0ZWUsIDB4MjAwMSwgMHgwMDAyLCAweDEwNzgsIDB4NDUwMiwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MTA3OCwgMHg1ZGQ3LCAweDAwNzgsIDB4N2VjZiwgMHgyMDA5LCAweGFjOGUsIDB4MjEwNCwKLQkweGEwODYsIDB4MDAwOSwgMHgwMGMwLCAweDdlYzIsIDB4NjAxOCwgMHgyMDY4LCAweDY4NDAsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTAwNSwgMHgwMDQwLCAweDdlY2QsIDB4ODAwMSwgMHg2ODQyLCAweDYwMTcsIDB4MDAwYSwKLQkweDAwNzgsIDB4N2VjZiwgMHgyMDA5LCAweGFjOGYsIDB4MjEwNCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4NiwKLQkweDE5MDAsIDB4MDBjMCwgMHg3ZWNkLCAweDAwNzgsIDB4N2VhMSwgMHgxMDc4LCAweDdkZmYsIDB4MGM3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHgxMDc4LCAweDdmOGUsIDB4MDBjMCwgMHg3ZWU2LCAweDIwMDEsIDB4MDAwMCwKLQkweDEwNzgsIDB4NDRlZSwgMHgyMDAxLCAweDAwMDIsIDB4MTA3OCwgMHg0NTAyLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAwMiwgMHgxMDc4LCAweDVkZDcsIDB4MDA3OCwgMHg3ZjEyLCAweDEwNzgsIDB4N2M4MywKLQkweDIwMDksIDB4YWM4ZSwgMHgyMTM0LCAweGE2YjQsIDB4MDBmZiwgMHhhNjg2LCAweDAwMDUsIDB4MDA0MCwKLQkweDdmMTMsIDB4YTY4NiwgMHgwMDBiLCAweDAwNDAsIDB4N2YxMCwgMHgyMDA5LCAweGFjOGYsIDB4MjEwNCwKLQkweGEwODQsIDB4ZmYwMCwgMHgwMGMwLCAweDdmMDAsIDB4YTY4NiwgMHgwMDA5LCAweDAwNDAsIDB4N2YxMywKLQkweGEwODYsIDB4MTkwMCwgMHgwMGMwLCAweDdmMTAsIDB4YTY4NiwgMHgwMDA5LCAweDAwNDAsIDB4N2YxMywKLQkweDIwMDEsIDB4MDAwNCwgMHgxMDc4LCAweDQ1MDIsIDB4MTA3OCwgMHg3NzJkLCAweDAwNzgsIDB4N2YxMiwKLQkweDEwNzgsIDB4N2RmZiwgMHgwMDdjLCAweDBkN2UsIDB4NjAxMCwgMHgyMDY4LCAweDEwNzgsIDB4OGQxNiwKLQkweDAwNDAsIDB4N2YyMSwgMHg2ODM4LCAweGQwZmMsIDB4MDA0MCwgMHg3ZjIxLCAweDBkN2YsIDB4MDA3OCwKLQkweDdmMTAsIDB4NjAxOCwgMHgyMDY4LCAweDY4NDAsIDB4YTA4NCwgMHgwMGZmLCAweGEwMDUsIDB4MDA0MCwKLQkweDdmMzIsIDB4ODAwMSwgMHg2ODQyLCAweDYwMTcsIDB4MDAwYSwgMHg2MDA3LCAweDAwMTYsIDB4MGQ3ZiwKLQkweDAwNzgsIDB4N2YxMiwgMHg2OGEwLCAweGEwODYsIDB4MDA3ZSwgMHgwMGMwLCAweDdmM2YsIDB4MGU3ZSwKLQkweDIwNzEsIDB4YTcwMCwgMHgxMDc4LCAweDQyYjgsIDB4MGU3ZiwgMHgwMDc4LCAweDdmNDEsIDB4MTA3OCwKLQkweDI4ODAsIDB4MGQ3ZiwgMHgwMDc4LCAweDdmMTAsIDB4MTA3OCwgMHg3ZjhlLCAweDAwYzAsIDB4N2Y1NCwKLQkweDIwMDEsIDB4MDAwNCwgMHgxMDc4LCAweDQ1MDIsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMywKLQkweDEwNzgsIDB4NWRkNywgMHgwMDc4LCAweDdmNTgsIDB4MTA3OCwgMHg3YzgzLCAweDEwNzgsIDB4N2RmZiwKLQkweDAwN2MsIDB4MTA3OCwgMHg3ZjhlLCAweDAwYzAsIDB4N2Y2OSwgMHgyMDAxLCAweDAwMDgsIDB4MTA3OCwKLQkweDQ1MDIsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwNSwgMHgxMDc4LCAweDVkZDcsIDB4MDA3OCwKLQkweDdmNmIsIDB4MTA3OCwgMHg3ZGZmLCAweDAwN2MsIDB4MTA3OCwgMHg3ZjhlLCAweDAwYzAsIDB4N2Y3YywKLQkweDIwMDEsIDB4MDAwYSwgMHgxMDc4LCAweDQ1MDIsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwKLQkweDEwNzgsIDB4NWRkNywgMHgwMDc4LCAweDdmN2UsIDB4MTA3OCwgMHg3ZGZmLCAweDAwN2MsIDB4MjAwOSwKLQkweGFjOGUsIDB4MjEwNCwgMHhhMDg2LCAweDAwMDMsIDB4MDBjMCwgMHg3ZjhkLCAweDIwMDksIDB4YWM4ZiwKLQkweDIxMDQsIDB4YTA4NCwgMHhmZjAwLCAweGEwODYsIDB4MmEwMCwgMHgwMDdjLCAweGEwODUsIDB4MDAwMSwKLQkweDAwN2MsIDB4MGM3ZSwgMHgwMTdlLCAweGFjODgsIDB4MDAwNiwgMHgyMTY0LCAweDEwNzgsIDB4NDVkNiwKLQkweDAxN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MGU3ZSwgMHgwZDdlLCAweDAzN2UsIDB4MDE3ZSwKLQkweDYwMTgsIDB4MjA2OCwgMHgyMDcxLCAweGE3MzMsIDB4MmUwNCwgMHhhMDg1LCAweDAwMDMsIDB4MjA3MiwKLQkweDEwNzgsIDB4ODAxNCwgMHgwMDQwLCAweDdmZDksIDB4MjAwOSwgMHhhNzMzLCAweDIxMDQsIDB4YzBjZCwKLQkweDIwMGEsIDB4MjAwMSwgMHhhNzUzLCAweDIwMDQsIDB4ZDBhNCwgMHgwMDQwLCAweDdmYzIsIDB4YTAwNiwKLQkweDIwMjAsIDB4MjAwOSwgMHgwMDJhLCAweDEwNzgsIDB4YTIyZCwgMHgyMDAxLCAweGE3MGMsIDB4MjAwYywKLQkweGMxOTUsIDB4MjEwMiwgMHgyMDE5LCAweDAwMmEsIDB4MjAwOSwgMHgwMDAxLCAweDEwNzgsIDB4Mjg0ZiwKLQkweDIwNzEsIDB4YTcwMCwgMHgxMDc4LCAweDI2NzcsIDB4MGM3ZSwgMHgxNTdlLCAweDIwYTksIDB4MDA4MSwKLQkweDIwMDksIDB4MDA3ZiwgMHgxMDc4LCAweDI5OGUsIDB4ODEwOCwgMHgwMGYwLCAweDdmZDIsIDB4MTU3ZiwKLQkweDBjN2YsIDB4MTA3OCwgMHg3ZjkxLCAweDY4MTMsIDB4MDBmZiwgMHg2ODE3LCAweGZmZmUsIDB4MjA3MSwKLQkweGFjODAsIDB4MjA3OSwgMHgwMTAwLCAweDJlMDQsIDB4YTA4NCwgMHgwMGZmLCAweDIwNjksIDB4YTcxYiwKLQkweDIwNmEsIDB4NzhlNiwgMHgwMDdlLCAweDhlNzAsIDB4MmUwNCwgMHgyMDY5LCAweGE3MWMsIDB4MjA2YSwKLQkweDc4ZWEsIDB4YTA4NCwgMHhmZjAwLCAweDAxN2YsIDB4YTEwNSwgMHgyMDA5LCAweGE3MjYsIDB4MjAwYSwKLQkweDIwNjksIDB4YWM4ZSwgMHgyMDcxLCAweGE5OWUsIDB4NjgxMCwgMHgyMDcyLCAweDY4MTQsIDB4NzAwNiwKLQkweDY4MTgsIDB4NzAwYSwgMHg2ODFjLCAweDcwMGUsIDB4MTA3OCwgMHg5MDdlLCAweDIwMDEsIDB4MDAwNiwKLQkweDEwNzgsIDB4NDUwMiwgMHgxMDc4LCAweDI4YTYsIDB4MTA3OCwgMHg3NzJkLCAweDAxN2YsIDB4MDM3ZiwKLQkweDBkN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDAwN2MsIDB4MDI3ZSwgMHgwMzdlLCAweDBlN2UsIDB4MTU3ZSwKLQkweDIwMTksIDB4YTcyNiwgMHgyMzFjLCAweDgzZmYsIDB4MDA0MCwgMHg4MDNlLCAweDIwNzEsIDB4YWM4MCwKLQkweDJlMTQsIDB4YTI5NCwgMHgwMGZmLCAweDcwMDQsIDB4YTA4NCwgMHhmZjAwLCAweGEyMDUsIDB4YTMwNiwKLQkweDAwYzAsIDB4ODAzZSwgMHgyMDExLCAweGFjOTYsIDB4YWQ5OCwgMHgwMDBhLCAweDIwYTksIDB4MDAwNCwKLQkweDEwNzgsIDB4ODBkZSwgMHgwMGMwLCAweDgwM2UsIDB4MjAxMSwgMHhhYzlhLCAweGFkOTgsIDB4MDAwNiwKLQkweDIwYTksIDB4MDAwNCwgMHgxMDc4LCAweDgwZGUsIDB4MDBjMCwgMHg4MDNlLCAweDE1N2YsIDB4MGU3ZiwKLQkweDAzN2YsIDB4MDI3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwgMHhhYzhjLCAweDcwMDQsIDB4YTA4NiwKLQkweDAwMTQsIDB4MDBjMCwgMHg4MDY2LCAweDcwMDgsIDB4YTA4NiwgMHgwODAwLCAweDAwYzAsIDB4ODA2NiwKLQkweDcwMGMsIDB4ZDBlYywgMHgwMDQwLCAweDgwNjQsIDB4YTA4NCwgMHgwZjAwLCAweGEwODYsIDB4MDEwMCwKLQkweDAwYzAsIDB4ODA2NCwgMHg3MDI0LCAweGQwYTQsIDB4MDBjMCwgMHg4MDYxLCAweGQwYWMsIDB4MDA0MCwKLQkweDgwNjQsIDB4YTAwNiwgMHgwMDc4LCAweDgwNjYsIDB4YTA4NSwgMHgwMDAxLCAweDBlN2YsIDB4MDA3YywKLQkweDBlN2UsIDB4MGQ3ZSwgMHgwYzdlLCAweDA3N2UsIDB4MDU3ZSwgMHgwNDdlLCAweDAyN2UsIDB4MDA3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDIwMjksIDB4YTliYSwgMHgyNTJjLCAweDIwMjEsIDB4YTljMCwKLQkweDI0MjQsIDB4MjA2MSwgMHhhZTAwLCAweDIwNzEsIDB4YTcwMCwgMHg3MjQ4LCAweDcwNjQsIDB4YTIwMiwKLQkweDAwYzgsIDB4ODBjYywgMHgxMDc4LCAweGEyNTIsIDB4MDA0MCwgMHg4MGM0LCAweDY3MWMsIDB4YTc4NiwKLQkweDAwMDEsIDB4MDA0MCwgMHg4MGM0LCAweGE3ODYsIDB4MDAwNywgMHgwMDQwLCAweDgwYzQsIDB4MjUwMCwKLQkweGFjMDYsIDB4MDA0MCwgMHg4MGM0LCAweDI0MDAsIDB4YWMwNiwgMHgwMDQwLCAweDgwYzQsIDB4MGM3ZSwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDA0LCAweDAwYzAsIDB4ODA5ZiwgMHgxMDc4LCAweDE3NTcsIDB4YTc4NiwKLQkweDAwMDgsIDB4MDBjMCwgMHg4MGFlLCAweDEwNzgsIDB4OGYxMCwgMHgwMGMwLCAweDgwYWUsIDB4MGM3ZiwKLQkweDEwNzgsIDB4N2M4MywgMHgxMDc4LCAweDhlZDYsIDB4MDA3OCwgMHg4MGM0LCAweDYwMTAsIDB4MjA2OCwKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDgwYzEsIDB4YTc4NiwgMHgwMDAzLCAweDAwYzAsIDB4ODBkNiwKLQkweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwgMHgxMDc4LCAweDRhNzMsIDB4MTA3OCwKLQkweDhlYzksIDB4MTA3OCwgMHg4ZWQ2LCAweDBjN2YsIDB4YWNlMCwgMHgwMDEwLCAweDcwNTgsIDB4YWMwMiwKLQkweDAwYzgsIDB4ODBjYywgMHgwMDc4LCAweDgwN2QsIDB4MTI3ZiwgMHgwMDdmLCAweDAyN2YsIDB4MDQ3ZiwKLQkweDA1N2YsIDB4MDc3ZiwgMHgwYzdmLCAweDBkN2YsIDB4MGU3ZiwgMHgwMDdjLCAweGE3ODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4ODBiOCwgMHgxMDc4LCAweGExZGEsIDB4MDA3OCwgMHg4MGMxLCAweDIyMGMsIDB4MjMwNCwKLQkweGExMDYsIDB4MDBjMCwgMHg4MGU5LCAweDgyMTAsIDB4ODMxOCwgMHgwMGYwLCAweDgwZGUsIDB4YTAwNiwKLQkweDAwN2MsIDB4MjMwNCwgMHhhMTAyLCAweDAwNDgsIDB4ODBmMSwgMHgyMDAxLCAweDAwMDEsIDB4MDA3OCwKLQkweDgwZjMsIDB4MjAwMSwgMHgwMDAwLCAweGExOGQsIDB4MDAwMSwgMHgwMDdjLCAweDYwMDQsIDB4YTA4YSwKLQkweDAwNDQsIDB4MTBjOCwgMHgxMzMyLCAweDEwNzgsIDB4OGVmYywgMHgwMDQwLCAweDgxMDUsIDB4MTA3OCwKLQkweDhmMTAsIDB4MDA0MCwgMHg4MTEyLCAweDAwNzgsIDB4ODEwYiwgMHgxMDc4LCAweDI4YTYsIDB4MTA3OCwKLQkweDhmMTAsIDB4MDA0MCwgMHg4MTEyLCAweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDc3MmQsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3YywgMHgxMDc4LCAweDdjODMsIDB4MDA3OCwgMHg4MTBiLCAweGExODIsIDB4MDA0MCwKLQkweDAwNzksIDB4ODExYSwgMHg4MTJkLCAweDgxMmQsIDB4ODEyZCwgMHg4MTJkLCAweDgxMmQsIDB4ODEyZCwKLQkweDgxMmQsIDB4ODEyZCwgMHg4MTJkLCAweDgxMmQsIDB4ODEyZCwgMHg4MTJmLCAweDgxMmYsIDB4ODEyZiwKLQkweDgxMmYsIDB4ODEyZCwgMHg4MTJkLCAweDgxMmQsIDB4ODEyZiwgMHgxMDc4LCAweDEzMzIsIDB4NjAwYiwKLQkweGZmZmYsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MTA3OCwgMHg1ZDhhLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MTA3OCwgMHg2MmQxLCAweDEyN2YsIDB4MDA3YywgMHhhMTg2LCAweDAwMTMsIDB4MDBjMCwKLQkweDgxNDYsIDB4NjAwNCwgMHhhMDgyLCAweDAwNDAsIDB4MDA3OSwgMHg4MWQxLCAweGExODYsIDB4MDAyNywKLQkweDAwYzAsIDB4ODE2OCwgMHgxMDc4LCAweDYxY2QsIDB4MTA3OCwgMHgyODgwLCAweDBkN2UsIDB4NjExMCwKLQkweDIxNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4ODE2MiwgMHg2ODM3LCAweDAxMDMsIDB4Njg0YiwKLQkweDAwMjksIDB4Njg0NywgMHgwMDAwLCAweDY5NGMsIDB4YzFjNSwgMHg2OTRlLCAweDEwNzgsIDB4NGE3MywKLQkweDEwNzgsIDB4OGVjOSwgMHgwZDdmLCAweDEwNzgsIDB4NzcyZCwgMHgxMDc4LCAweDYyZDEsIDB4MDA3YywKLQkweGExODYsIDB4MDAxNCwgMHgwMGMwLCAweDgxNzEsIDB4NjAwNCwgMHhhMDgyLCAweDAwNDAsIDB4MDA3OSwKLQkweDgxOTksIDB4YTE4NiwgMHgwMDQ2LCAweDAwNDAsIDB4ODE3ZCwgMHhhMTg2LCAweDAwNDUsIDB4MDA0MCwKLQkweDgxN2QsIDB4YTE4NiwgMHgwMDQ3LCAweDEwYzAsIDB4MTMzMiwgMHgyMDAxLCAweDAxMDksIDB4MjAwNCwKLQkweGQwODQsIDB4MDA0MCwgMHg4MTk2LCAweDEyN2UsIDB4MjA5MSwgMHgyMjAwLCAweDAwN2UsIDB4MDE3ZSwKLQkweDAyN2UsIDB4MTA3OCwgMHg1YzU2LCAweDAyN2YsIDB4MDE3ZiwgMHgwMDdmLCAweDEyN2YsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMiwgMHgwMGMwLCAweDgxOTYsIDB4MDA3OCwgMHg4MjBlLCAweDEwNzgsIDB4Nzc3MywKLQkweDAwN2MsIDB4ODFhZSwgMHg4MWFjLCAweDgxYWMsIDB4ODFhYywgMHg4MWFjLCAweDgxYWMsIDB4ODFhYywKLQkweDgxYWMsIDB4ODFhYywgMHg4MWFjLCAweDgxYWMsIDB4ODFjYSwgMHg4MWNhLCAweDgxY2EsIDB4ODFjYSwKLQkweDgxYWMsIDB4ODFjYSwgMHg4MWFjLCAweDgxY2EsIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4NjFjZCwKLQkweDBkN2UsIDB4NjExMCwgMHgyMTY4LCAweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDgxYzQsIDB4NjgzNywKLQkweDAxMDMsIDB4Njg0YiwgMHgwMDA2LCAweDY4NDcsIDB4MDAwMCwgMHg2ODUwLCAweGMwZWMsIDB4Njg1MiwKLQkweDEwNzgsIDB4NGE3MywgMHgxMDc4LCAweDhlYzksIDB4MGQ3ZiwgMHgxMDc4LCAweDc3MmQsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3YywgMHgxMDc4LCAweDYxY2QsIDB4MTA3OCwgMHg3NzJkLCAweDEwNzgsIDB4NjJkMSwKLQkweDAwN2MsIDB4ODFlNiwgMHg4MWU0LCAweDgxZTQsIDB4ODFlNCwgMHg4MWU0LCAweDgxZTQsIDB4ODFlNCwKLQkweDgxZTQsIDB4ODFlNCwgMHg4MWU0LCAweDgxZTQsIDB4ODFmOCwgMHg4MWY4LCAweDgxZjgsIDB4ODFmOCwKLQkweDgxZTQsIDB4ODIwNywgMHg4MWU0LCAweDgxZjgsIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4NjFjZCwKLQkweDIwMDEsIDB4YTlhNCwgMHgyMDA0LCAweDYwM2UsIDB4NjAwMywgMHgwMDAyLCAweDEwNzgsIDB4NjJkMSwKLQkweDYwMTAsIDB4YTA4OCwgMHgwMDEzLCAweDIxMDQsIDB4YTA4NSwgMHgwNDAwLCAweDIwMGEsIDB4MDA3YywKLQkweDEwNzgsIDB4NjFjZCwgMHgyMDAxLCAweGE5YTIsIDB4MjAwNCwgMHg2MDE2LCAweDIwMDEsIDB4YTlhNCwKLQkweDIwMDQsIDB4NjAzZSwgMHg2MDAzLCAweDAwMGYsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4MTA3OCwKLQkweDYxY2QsIDB4MTA3OCwgMHg3NzJkLCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExODIsIDB4MDA0MCwKLQkweDAwNzksIDB4ODIxMiwgMHg4MjI1LCAweDgyMjUsIDB4ODIyNSwgMHg4MjI1LCAweDgyMjUsIDB4ODIyNywKLQkweDgzMzEsIDB4ODM2MywgMHg4MjI1LCAweDgyMjUsIDB4ODIyNSwgMHg4MjI1LCAweDgyMjUsIDB4ODIyNSwKLQkweDgyMjUsIDB4ODIyNSwgMHg4MjI1LCAweDgyMjUsIDB4ODIyNSwgMHgxMDc4LCAweDEzMzIsIDB4MGU3ZSwKLQkweDBkN2UsIDB4NjAzZiwgMHgwMDAwLCAweDIwNzEsIDB4YWM4MCwgMHg3MTI0LCAweDYxMGEsIDB4MjA3MSwKLQkweGFjOGMsIDB4NjExMCwgMHgyMTY4LCAweDc2MTQsIDB4YTZiNCwgMHgwZmZmLCAweDg2ZmYsIDB4MDA0MCwKLQkweDgyZjAsIDB4YTY4YywgMHgwYzAwLCAweDAwNDAsIDB4ODI2NSwgMHgwZjdlLCAweDJjNzgsIDB4MTA3OCwKLQkweDQ5NjMsIDB4MGY3ZiwgMHgwMDQwLCAweDgyNjEsIDB4Njg0YywgMHhkMGFjLCAweDAwNDAsIDB4ODI2MSwKLQkweDYwMjQsIDB4ZDBkYywgMHgwMGMwLCAweDgyNjEsIDB4Njg1MCwgMHhkMGJjLCAweDAwYzAsIDB4ODI2MSwKLQkweDczMTgsIDB4NjgxNCwgMHhhMzA2LCAweDAwYzAsIDB4ODMwOCwgMHg3MzFjLCAweDY4MTAsIDB4YTMxZSwKLQkweDAwNDAsIDB4ODI2MSwgMHhkNmQ0LCAweDAwNDAsIDB4ODMwOCwgMHg2YjE0LCAweGEzMDUsIDB4MDBjMCwKLQkweDgzMDgsIDB4NzMxOCwgMHg2YjYyLCAweDczMWMsIDB4NmI1ZSwgMHhhNjhjLCAweDAwZmYsIDB4YTE4NiwKLQkweDAwMDIsIDB4MDA0MCwgMHg4Mjk4LCAweGExODYsIDB4MDAyOCwgMHgwMGMwLCAweDgyNzUsIDB4MTA3OCwKLQkweDhlZWEsIDB4Njg0YiwgMHgwMDFjLCAweDAwNzgsIDB4ODI5YSwgMHhkNmRjLCAweDAwNDAsIDB4ODI5MSwKLQkweDY4NGIsIDB4MDAxNSwgMHg2ODRjLCAweGQwYWMsIDB4MDA0MCwgMHg4MjhmLCAweDY5MTQsIDB4NmExMCwKLQkweDIxMDAsIDB4YTIwNSwgMHgwMDQwLCAweDgyOGYsIDB4NzAxOCwgMHhhMTA2LCAweDAwYzAsIDB4ODI4YywKLQkweDcwMWMsIDB4YTIwNiwgMHgwMDQwLCAweDgyOGYsIDB4Njk2MiwgMHg2YTVlLCAweGM2ZGMsIDB4MDA3OCwKLQkweDgyOWEsIDB4ZDZkNCwgMHgwMDQwLCAweDgyOTgsIDB4Njg0YiwgMHgwMDA3LCAweDAwNzgsIDB4ODI5YSwKLQkweDY4NGIsIDB4MDAwMCwgMHg2ODM3LCAweDAxMDMsIDB4NmU0NiwgMHhhMDFlLCAweGQ2YzQsIDB4MDA0MCwKLQkweDgyYzMsIDB4YTY4NiwgMHgwMTAwLCAweDAwYzAsIDB4ODJhZSwgMHgyMDAxLCAweGFjOTksIDB4MjAwNCwKLQkweGEwMDUsIDB4MDBjMCwgMHg4MmFlLCAweGM2YzQsIDB4MDA3OCwgMHg4MjM2LCAweDczMjgsIDB4NzMyYywKLQkweDZiNTYsIDB4ODNmZiwgMHgwMDQwLCAweDgyYzMsIDB4YTM4YSwgMHgwMDA5LCAweDAwNDgsIDB4ODJiYSwKLQkweDIwMTksIDB4MDAwOCwgMHgwMzdlLCAweDIzMDgsIDB4MjAxOSwgMHhhYzk4LCAweGFkOTAsIDB4MDAxOSwKLQkweDEwNzgsIDB4ODlmMiwgMHgwMzdmLCAweGQ2Y2MsIDB4MDA0MCwgMHg4MzFlLCAweDcxMjQsIDB4Njk1YSwKLQkweDgxZmYsIDB4MDA0MCwgMHg4MzFlLCAweGExOTIsIDB4MDAyMSwgMHgwMGM4LCAweDgyZGMsIDB4MjA3MSwKLQkweGFjOTgsIDB4ODMxYywgMHgyMzAwLCAweGFlMTgsIDB4YWQ5MCwgMHgwMDFkLCAweDEwNzgsIDB4ODlmMiwKLQkweDEwNzgsIDB4OTIwNCwgMHgwMDc4LCAweDgzMWUsIDB4NjgzOCwgMHhkMGZjLCAweDAwNDAsIDB4ODJlNSwKLQkweDIwMDksIDB4MDAyMCwgMHg2OTVhLCAweDAwNzgsIDB4ODJjZiwgMHgwZjdlLCAweDJkNzgsIDB4MTA3OCwKLQkweDg5OGEsIDB4MGY3ZiwgMHgxMDc4LCAweDkyMDQsIDB4MTA3OCwgMHg4OWRmLCAweDAwNzgsIDB4ODMyMCwKLQkweDBmN2UsIDB4MmM3OCwgMHgxMDc4LCAweDQ5NjMsIDB4MGY3ZiwgMHgwMDQwLCAweDgzMGUsIDB4Njg0YywKLQkweGQwYWMsIDB4MDA0MCwgMHg4MzBlLCAweDYwMjQsIDB4ZDBkYywgMHgwMGMwLCAweDgzMGUsIDB4Njg1MCwKLQkweGQwYmMsIDB4MDBjMCwgMHg4MzBlLCAweDY4MTAsIDB4NjkxNCwgMHhhMTA1LCAweDAwNDAsIDB4ODMwZSwKLQkweDEwNzgsIDB4OGZjZiwgMHgwZDdmLCAweDBlN2YsIDB4MDA3OCwgMHg4MzMwLCAweDY4NGIsIDB4MDAwMCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ZTQ2LCAweDY4NGMsIDB4ZDBhYywgMHgwMDQwLCAweDgzMWUsIDB4NjgxMCwKLQkweDY5MTQsIDB4YTExNSwgMHgwMDQwLCAweDgzMWUsIDB4MTA3OCwgMHg4NGUyLCAweDEwNzgsIDB4NGE3MywKLQkweDYyMTgsIDB4MjI2OCwgMHg2YTNjLCAweDgyZmYsIDB4MDA0MCwgMHg4MzI4LCAweDgyMTEsIDB4NmEzZSwKLQkweDEwNzgsIDB4OGY5OSwgMHgwZDdmLCAweDBlN2YsIDB4MDBjMCwgMHg4MzMwLCAweDEwNzgsIDB4NzcyZCwKLQkweDAwN2MsIDB4MGY3ZSwgMHg2MDAzLCAweDAwMDMsIDB4MjA3OSwgMHhhYzhjLCAweDdjMDQsIDB4N2IwMCwKLQkweDdlMGMsIDB4N2QwOCwgMHg2MDEwLCAweDIwNzgsIDB4Nzg0YywgMHhkMGFjLCAweDAwNDAsIDB4ODM0OCwKLQkweDYwMDMsIDB4MDAwMiwgMHgwZjdmLCAweDAwN2MsIDB4MjEzMCwgMHgyMjI4LCAweDAwNzgsIDB4ODM1NCwKLQkweDI0MDAsIDB4Nzk3YywgMHhhMTBhLCAweDIzMDAsIDB4N2E4MCwgMHhhMjEzLCAweDI2MDAsIDB4YTEwMiwKLQkweDI1MDAsIDB4YTIwMywgMHgwMDQ4LCAweDgzNDQsIDB4N2MxMiwgMHg3YjE2LCAweDdlMGEsIDB4N2QwZSwKLQkweDBmN2YsIDB4NjAzZiwgMHgwMDAwLCAweDJjMTAsIDB4MTA3OCwgMHgxY2YwLCAweDEwNzgsIDB4NWRmNiwKLQkweDEwNzgsIDB4NjM5YiwgMHgwMDdjLCAweDIwMDEsIDB4YTlhNCwgMHgyMDA0LCAweDYwM2UsIDB4NjAwMywKLQkweDAwMDQsIDB4NjExMCwgMHgyMGUxLCAweDAwMDUsIDB4M2QxOCwgMHgzZTIwLCAweDJjMTAsIDB4MTA3OCwKLQkweDE1ZmEsIDB4MDA3YywgMHhhMTgyLCAweDAwNDAsIDB4MDA3OSwgMHg4Mzc2LCAweDgzODksIDB4ODM4OSwKLQkweDgzODksIDB4ODM4OSwgMHg4Mzg5LCAweDgzOGIsIDB4ODQzMSwgMHg4Mzg5LCAweDgzODksIDB4ODQ0NywKLQkweDg0YjgsIDB4ODM4OSwgMHg4Mzg5LCAweDgzODksIDB4ODM4OSwgMHg4NGM3LCAweDgzODksIDB4ODM4OSwKLQkweDgzODksIDB4MTA3OCwgMHgxMzMyLCAweDA3N2UsIDB4MGY3ZSwgMHgwZTdlLCAweDBkN2UsIDB4MjA3MSwKLQkweGFjOGMsIDB4NjExMCwgMHgyMTc4LCAweDc2MTQsIDB4YTZiNCwgMHgwZmZmLCAweDdlNDYsIDB4N2Y0YywKLQkweGM3ZTUsIDB4N2Y0ZSwgMHg2MjE4LCAweDIyNjgsIDB4NmEzYywgMHg4MmZmLCAweDAwNDAsIDB4ODNhMiwKLQkweDgyMTEsIDB4NmEzZSwgMHg4NmZmLCAweDAwNDAsIDB4ODQyYywgMHhhNjk0LCAweGZmMDAsIDB4YTI4NCwKLQkweDBjMDAsIDB4MDA0MCwgMHg4M2FmLCAweDcwMTgsIDB4Nzg2MiwgMHg3MDFjLCAweDc4NWUsIDB4YTI4NCwKLQkweDAzMDAsIDB4MDA0MCwgMHg4NDJjLCAweDEwNzgsIDB4MTM4YiwgMHgxMDQwLCAweDEzMzIsIDB4MmQwMCwKLQkweDc4NGEsIDB4N2Y0YywgMHhjN2NkLCAweDdmNGUsIDB4NjgzNywgMHgwMTAzLCAweDc4MzgsIDB4NjgzYSwKLQkweDc4M2MsIDB4NjgzZSwgMHg3ODQwLCAweDY4NDIsIDB4NmU0NiwgMHhhNjhjLCAweDBjMDAsIDB4MDA0MCwKLQkweDgzY2QsIDB4NzMxOCwgMHg2YjYyLCAweDczMWMsIDB4NmI1ZSwgMHhhNjhjLCAweDAwZmYsIDB4YTE4NiwKLQkweDAwMDIsIDB4MDA0MCwgMHg4M2U5LCAweGExODYsIDB4MDAyOCwgMHgwMGMwLCAweDgzZGIsIDB4Njg0YiwKLQkweDAwMWMsIDB4MDA3OCwgMHg4M2ViLCAweGQ2ZGMsIDB4MDA0MCwgMHg4M2UyLCAweDY4NGIsIDB4MDAxNSwKLQkweDAwNzgsIDB4ODNlYiwgMHhkNmQ0LCAweDAwNDAsIDB4ODNlOSwgMHg2ODRiLCAweDAwMDcsIDB4MDA3OCwKLQkweDgzZWIsIDB4Njg0YiwgMHgwMDAwLCAweDZmNGUsIDB4Nzg1MCwgMHg2ODUyLCAweDc4NTQsIDB4Njg1NiwKLQkweGEwMWUsIDB4ZDZjNCwgMHgwMDQwLCAweDg0MDksIDB4NzMyOCwgMHg3MzJjLCAweDZiNTYsIDB4ODNmZiwKLQkweDAwNDAsIDB4ODQwOSwgMHhhMzhhLCAweDAwMDksIDB4MDA0OCwgMHg4NDAwLCAweDIwMTksIDB4MDAwOCwKLQkweDAzN2UsIDB4MjMwOCwgMHgyMDE5LCAweGFjOTgsIDB4YWQ5MCwgMHgwMDE5LCAweDEwNzgsIDB4ODlmMiwKLQkweDAzN2YsIDB4ZDZjYywgMHgwMDQwLCAweDg0MmMsIDB4NzEyNCwgMHg2OTVhLCAweDgxZmYsIDB4MDA0MCwKLQkweDg0MmMsIDB4YTE5MiwgMHgwMDIxLCAweDAwYzgsIDB4ODQyMCwgMHgyMDcxLCAweGFjOTgsIDB4ODMxYywKLQkweDIzMDAsIDB4YWUxOCwgMHhhZDkwLCAweDAwMWQsIDB4MTA3OCwgMHg4OWYyLCAweDAwNzgsIDB4ODQyYywKLQkweDc4MzgsIDB4ZDBmYywgMHgwMDQwLCAweDg0MjksIDB4MjAwOSwgMHgwMDIwLCAweDY5NWEsIDB4MDA3OCwKLQkweDg0MTUsIDB4MmQ3OCwgMHgxMDc4LCAweDg5OGEsIDB4MGQ3ZiwgMHgwZTdmLCAweDBmN2YsIDB4MDc3ZiwKLQkweDAwN2MsIDB4MGY3ZSwgMHg2MDAzLCAweDAwMDMsIDB4MjA3OSwgMHhhYzhjLCAweDdjMDQsIDB4N2IwMCwKLQkweDdlMGMsIDB4N2QwOCwgMHg2MDEwLCAweDIwNzgsIDB4N2MxMiwgMHg3YjE2LCAweDdlMGEsIDB4N2QwZSwKLQkweDBmN2YsIDB4MmMxMCwgMHgxMDc4LCAweDFjZjAsIDB4MTA3OCwgMHg2ZGY0LCAweDAwN2MsIDB4MGQ3ZSwKLQkweDBmN2UsIDB4MmM3OCwgMHgxMDc4LCAweDQ5NjMsIDB4MGY3ZiwgMHgwMDQwLCAweDg0NTMsIDB4MjAwMSwKLQkweGE5YTQsIDB4MjAwNCwgMHg2MDNlLCAweDYwMDMsIDB4MDAwMiwgMHgxMDc4LCAweDYyN2EsIDB4MTA3OCwKLQkweDYzOWIsIDB4NjExMCwgMHgyMTY4LCAweDY5NGMsIDB4ZDFlNCwgMHgwMDQwLCAweDg0YjYsIDB4ZDFjYywKLQkweDAwNDAsIDB4ODQ4ZCwgMHg2OTQ4LCAweDY4MzgsIDB4ZDBmYywgMHgwMDQwLCAweDg0ODUsIDB4MDE3ZSwKLQkweDY4NGMsIDB4MDA3ZSwgMHg2ODUwLCAweDAwN2UsIDB4YWQ5MCwgMHgwMDBkLCAweGExOTgsIDB4MDAwZCwKLQkweDIwMDksIDB4MDAyMCwgMHgxNTdlLCAweDIxYTgsIDB4MjMwNCwgMHgyMDEyLCAweDgzMTgsIDB4ODIxMCwKLQkweDAwZjAsIDB4ODQ3NCwgMHgxNTdmLCAweDAwN2YsIDB4Njg1MiwgMHgwMDdmLCAweDY4NGUsIDB4MDE3ZiwKLQkweDIxNjgsIDB4MTA3OCwgMHgxM2I0LCAweDAwNzgsIDB4ODRiMCwgMHgwMTdlLCAweDEwNzgsIDB4MTNiNCwKLQkweDBkN2YsIDB4MTA3OCwgMHg4OWRmLCAweDAwNzgsIDB4ODRiMCwgMHg2ODM3LCAweDAxMDMsIDB4Njk0NCwKLQkweGExODQsIDB4MDBmZiwgMHhhMGI2LCAweDAwMDIsIDB4MDA0MCwgMHg4NGFjLCAweGEwODYsIDB4MDAyOCwKLQkweDAwYzAsIDB4ODQ5ZSwgMHg2ODRiLCAweDAwMWMsIDB4MDA3OCwgMHg4NGFlLCAweGQxZGMsIDB4MDA0MCwKLQkweDg0YTUsIDB4Njg0YiwgMHgwMDE1LCAweDAwNzgsIDB4ODRhZSwgMHhkMWQ0LCAweDAwNDAsIDB4ODRhYywKLQkweDY4NGIsIDB4MDAwNywgMHgwMDc4LCAweDg0YWUsIDB4Njg0YiwgMHgwMDAwLCAweDEwNzgsIDB4NGE3MywKLQkweDEwNzgsIDB4OGY5OSwgMHgwMGMwLCAweDg0YjYsIDB4MTA3OCwgMHg3NzJkLCAweDBkN2YsIDB4MDA3YywKLQkweDIwMTksIDB4MDAwMSwgMHgxMDc4LCAweDcwNTgsIDB4NjAwMywgMHgwMDAyLCAweDIwMDEsIDB4YTlhNCwKLQkweDIwMDQsIDB4NjAzZSwgMHgxMDc4LCAweDYyN2EsIDB4MTA3OCwgMHg2MzliLCAweDAwN2MsIDB4MTA3OCwKLQkweDYyN2EsIDB4MTA3OCwgMHgyODgwLCAweDBkN2UsIDB4NjExMCwgMHgyMTY4LCAweDEwNzgsIDB4OGQxNiwKLQkweDAwNDAsIDB4ODRkYywgMHg2ODM3LCAweDAxMDMsIDB4Njg0YiwgMHgwMDI5LCAweDY4NDcsIDB4MDAwMCwKLQkweDEwNzgsIDB4NGE3MywgMHgxMDc4LCAweDhlYzksIDB4MGQ3ZiwgMHgxMDc4LCAweDc3MmQsIDB4MTA3OCwKLQkweDYzOWIsIDB4MDA3YywgMHg2ODRiLCAweDAwMTUsIDB4ZDFmYywgMHgwMDQwLCAweDg0ZWUsIDB4Njg0YiwKLQkweDAwMDcsIDB4ODAwMiwgMHg4MDAwLCAweDgxMGEsIDB4YTE4OSwgMHgwMDAwLCAweDY5NjIsIDB4Njg1ZSwKLQkweDAwN2MsIDB4YTE4MiwgMHgwMDQwLCAweDAwNzksIDB4ODRmNSwgMHg4NTA4LCAweDg1MDgsIDB4ODUwOCwKLQkweDg1MDgsIDB4ODUwOCwgMHg4NTBhLCAweDg1MDgsIDB4ODVlMCwgMHg4NWVjLCAweDg1MDgsIDB4ODUwOCwKLQkweDg1MDgsIDB4ODUwOCwgMHg4NTA4LCAweDg1MDgsIDB4ODUwOCwgMHg4NTA4LCAweDg1MDgsIDB4ODUwOCwKLQkweDEwNzgsIDB4MTMzMiwgMHgwNzdlLCAweDBmN2UsIDB4MGU3ZSwgMHgwZDdlLCAweDIwNzEsIDB4YWM4YywKLQkweDYxMTAsIDB4MjE3OCwgMHg3NjE0LCAweGE2YjQsIDB4MGZmZiwgMHgwZjdlLCAweDJjNzgsIDB4MTA3OCwKLQkweDQ5NjMsIDB4MGY3ZiwgMHgwMDQwLCAweDg1MjgsIDB4YTY4NCwgMHgwMGZmLCAweDAwYzAsIDB4ODUyOCwKLQkweDYwMjQsIDB4ZDBmNCwgMHgwMDQwLCAweDg1MjgsIDB4MTA3OCwgMHg4ZmNmLCAweDAwNzgsIDB4ODVkYiwKLQkweDdlNDYsIDB4N2Y0YywgMHhjN2U1LCAweDdmNGUsIDB4NjIxOCwgMHgyMjY4LCAweDZhM2MsIDB4ODJmZiwKLQkweDAwNDAsIDB4ODUzNCwgMHg4MjExLCAweDZhM2UsIDB4ODZmZiwgMHgwMDQwLCAweDg1ZDAsIDB4YTY5NCwKLQkweGZmMDAsIDB4YTI4NCwgMHgwYzAwLCAweDAwNDAsIDB4ODU0MSwgMHg3MDE4LCAweDc4NjIsIDB4NzAxYywKLQkweDc4NWUsIDB4YTI4NCwgMHgwMzAwLCAweDAwNDAsIDB4ODVjZCwgMHhhNjg2LCAweDAxMDAsIDB4MDBjMCwKLQkweDg1NTMsIDB4MjAwMSwgMHhhYzk5LCAweDIwMDQsIDB4YTAwNSwgMHgwMGMwLCAweDg1NTMsIDB4YzZjNCwKLQkweDdlNDYsIDB4MDA3OCwgMHg4NTM0LCAweDEwNzgsIDB4MTM4YiwgMHgxMDQwLCAweDEzMzIsIDB4MmQwMCwKLQkweDc4NGEsIDB4N2Y0YywgMHhhN2JkLCAweDAyMDAsIDB4N2Y0ZSwgMHg2ODM3LCAweDAxMDMsIDB4NzgzOCwKLQkweDY4M2EsIDB4NzgzYywgMHg2ODNlLCAweDc4NDAsIDB4Njg0MiwgMHg2ZTQ2LCAweGE2OGMsIDB4MGMwMCwKLQkweDAwNDAsIDB4ODU2ZSwgMHg3MzE4LCAweDZiNjIsIDB4NzMxYywgMHg2YjVlLCAweGE2OGMsIDB4MDBmZiwKLQkweGExODYsIDB4MDAwMiwgMHgwMDQwLCAweDg1OGEsIDB4YTE4NiwgMHgwMDI4LCAweDAwYzAsIDB4ODU3YywKLQkweDY4NGIsIDB4MDAxYywgMHgwMDc4LCAweDg1OGMsIDB4ZDZkYywgMHgwMDQwLCAweDg1ODMsIDB4Njg0YiwKLQkweDAwMTUsIDB4MDA3OCwgMHg4NThjLCAweGQ2ZDQsIDB4MDA0MCwgMHg4NThhLCAweDY4NGIsIDB4MDAwNywKLQkweDAwNzgsIDB4ODU4YywgMHg2ODRiLCAweDAwMDAsIDB4NmY0ZSwgMHg3ODUwLCAweDY4NTIsIDB4Nzg1NCwKLQkweDY4NTYsIDB4YTAxZSwgMHhkNmM0LCAweDAwNDAsIDB4ODVhYSwgMHg3MzI4LCAweDczMmMsIDB4NmI1NiwKLQkweDgzZmYsIDB4MDA0MCwgMHg4NWFhLCAweGEzOGEsIDB4MDAwOSwgMHgwMDQ4LCAweDg1YTEsIDB4MjAxOSwKLQkweDAwMDgsIDB4MDM3ZSwgMHgyMzA4LCAweDIwMTksIDB4YWM5OCwgMHhhZDkwLCAweDAwMTksIDB4MTA3OCwKLQkweDg5ZjIsIDB4MDM3ZiwgMHhkNmNjLCAweDAwNDAsIDB4ODVjZCwgMHg3MTI0LCAweDY5NWEsIDB4ODFmZiwKLQkweDAwNDAsIDB4ODVjZCwgMHhhMTkyLCAweDAwMjEsIDB4MDBjOCwgMHg4NWMxLCAweDIwNzEsIDB4YWM5OCwKLQkweDgzMWMsIDB4MjMwMCwgMHhhZTE4LCAweGFkOTAsIDB4MDAxZCwgMHgxMDc4LCAweDg5ZjIsIDB4MDA3OCwKLQkweDg1Y2QsIDB4NzgzOCwgMHhkMGZjLCAweDAwNDAsIDB4ODVjYSwgMHgyMDA5LCAweDAwMjAsIDB4Njk1YSwKLQkweDAwNzgsIDB4ODViNiwgMHgyZDc4LCAweDEwNzgsIDB4ODk4YSwgMHhkNmRjLCAweDAwYzAsIDB4ODVkMywKLQkweGEwMDYsIDB4MDA3OCwgMHg4NWQ5LCAweDIwMDEsIDB4MDAwMSwgMHgyMDcxLCAweGFjOGMsIDB4NzIxOCwKLQkweDczMWMsIDB4MTA3OCwgMHgxNjUzLCAweDBkN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDA3N2YsIDB4MDA3YywKLQkweDIwMDEsIDB4YTlhNCwgMHgyMDA0LCAweDYwM2UsIDB4MjBlMSwgMHgwMDA1LCAweDNkMTgsIDB4M2UyMCwKLQkweDJjMTAsIDB4MTA3OCwgMHgxNWZhLCAweDAwN2MsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NjAzZSwKLQkweDBkN2UsIDB4NjAwMywgMHgwMDAyLCAweDYxMTAsIDB4MjE2OCwgMHg2OTRjLCAweGQxZTQsIDB4MDA0MCwKLQkweDg3MWMsIDB4NjAzZiwgMHgwMDAwLCAweDBmN2UsIDB4MmM3OCwgMHgxMDc4LCAweDQ5NjMsIDB4MGY3ZiwKLQkweDAwNDAsIDB4ODYzMiwgMHg2ODE0LCAweDY5MTAsIDB4YTExNSwgMHgwMDQwLCAweDg2MzIsIDB4NmE2MCwKLQkweGEyMDYsIDB4MDBjMCwgMHg4NjBmLCAweDY4NWMsIDB4YTEwNiwgMHgwMDQwLCAweDg2MzIsIDB4Njg0YywKLQkweGMwZTQsIDB4Njg0ZSwgMHg2ODQ3LCAweDAwMDAsIDB4Njg2MywgMHgwMDAwLCAweDY4NWYsIDB4MDAwMCwKLQkweDYwMjQsIDB4ZDBmNCwgMHgwMGMwLCAweDg2MjcsIDB4Njk3YywgMHg2ODEwLCAweGExMDIsIDB4NjAzYSwKLQkweDY5ODAsIDB4NjgxNCwgMHhhMTAzLCAweDYwMzYsIDB4NjAyNCwgMHhjMGY1LCAweDYwMjYsIDB4MGQ3ZSwKLQkweDYwMTgsIDB4MjA2OCwgMHg2ODNjLCAweDgwMDAsIDB4NjgzZSwgMHgwZDdmLCAweDEwNzgsIDB4OGZjZiwKLQkweDAwNzgsIDB4ODcxYywgMHg2OTRjLCAweGQxY2MsIDB4MDA0MCwgMHg4NmUxLCAweDY5NDgsIDB4NjgzOCwKLQkweGQwZmMsIDB4MDA0MCwgMHg4Njk5LCAweDAxN2UsIDB4Njg0YywgMHgwMDdlLCAweDY4NTAsIDB4MDA3ZSwKLQkweDBmN2UsIDB4MjE3OCwgMHg3OTQ0LCAweGExODQsIDB4MDBmZiwgMHhhMGI2LCAweDAwMDIsIDB4MDA0MCwKLQkweDg2NmMsIDB4YTA4NiwgMHgwMDI4LCAweDAwYzAsIDB4ODY1MywgMHg2ODRiLCAweDAwMWMsIDB4Nzg0YiwKLQkweDAwMWMsIDB4MDA3OCwgMHg4Njc3LCAweGQxZGMsIDB4MDA0MCwgMHg4NjYzLCAweDY4NGIsIDB4MDAxNSwKLQkweDc4NGIsIDB4MDAxNSwgMHgxMDc4LCAweDkxN2MsIDB4MDA0MCwgMHg4NjYxLCAweDc5NDQsIDB4YzFkYywKLQkweDc5NDYsIDB4MDA3OCwgMHg4Njc3LCAweGQxZDQsIDB4MDA0MCwgMHg4NjZjLCAweDY4NGIsIDB4MDAwNywKLQkweDc4NGIsIDB4MDAwNywgMHgwMDc4LCAweDg2NzcsIDB4Njg0YywgMHhkMGFjLCAweDAwNDAsIDB4ODY3NywKLQkweDY4MTAsIDB4NjkxNCwgMHhhMTE1LCAweDAwNDAsIDB4ODY3NywgMHgxMDc4LCAweDg0ZTIsIDB4Njg0OCwKLQkweDc4NGEsIDB4Njg2MCwgMHg3ODYyLCAweDY4NWMsIDB4Nzg1ZSwgMHhhZDkwLCAweDAwMGQsIDB4YWY5OCwKLQkweDAwMGQsIDB4MjAwOSwgMHgwMDIwLCAweDE1N2UsIDB4MjFhOCwgMHgyMzA0LCAweDIwMTIsIDB4ODMxOCwKLQkweDgyMTAsIDB4MDBmMCwgMHg4Njg1LCAweDE1N2YsIDB4MGY3ZiwgMHgwMDdmLCAweDY4NTIsIDB4MDA3ZiwKLQkweDY4NGUsIDB4MTA3OCwgMHg5MjA0LCAweDAxN2YsIDB4MjE2OCwgMHgxMDc4LCAweDEzYjQsIDB4MDA3OCwKLQkweDg3MTYsIDB4MDE3ZSwgMHgwZjdlLCAweDIxNzgsIDB4Nzk0NCwgMHhhMTg0LCAweDAwZmYsIDB4YTBiNiwKLQkweDAwMDIsIDB4MDA0MCwgMHg4NmM2LCAweGEwODYsIDB4MDAyOCwgMHgwMGMwLCAweDg2YWQsIDB4Njg0YiwKLQkweDAwMWMsIDB4Nzg0YiwgMHgwMDFjLCAweDAwNzgsIDB4ODZkMSwgMHhkMWRjLCAweDAwNDAsIDB4ODZiZCwKLQkweDY4NGIsIDB4MDAxNSwgMHg3ODRiLCAweDAwMTUsIDB4MTA3OCwgMHg5MTdjLCAweDAwNDAsIDB4ODZiYiwKLQkweDc5NDQsIDB4YzFkYywgMHg3OTQ2LCAweDAwNzgsIDB4ODZkMSwgMHhkMWQ0LCAweDAwNDAsIDB4ODZjNiwKLQkweDY4NGIsIDB4MDAwNywgMHg3ODRiLCAweDAwMDcsIDB4MDA3OCwgMHg4NmQxLCAweDY4NGMsIDB4ZDBhYywKLQkweDAwNDAsIDB4ODZkMSwgMHg2ODEwLCAweDY5MTQsIDB4YTExNSwgMHgwMDQwLCAweDg2ZDEsIDB4MTA3OCwKLQkweDg0ZTIsIDB4Njg2MCwgMHg3ODYyLCAweDY4NWMsIDB4Nzg1ZSwgMHg2ODRjLCAweDc4NGUsIDB4MGY3ZiwKLQkweDEwNzgsIDB4MTNiNCwgMHgwZDdmLCAweDEwNzgsIDB4OTIwNCwgMHgxMDc4LCAweDg5ZGYsIDB4MDA3OCwKLQkweDg3MTYsIDB4NjgzNywgMHgwMTAzLCAweDY5NDQsIDB4YTE4NCwgMHgwMGZmLCAweGEwYjYsIDB4MDAwMiwKLQkweDAwNDAsIDB4ODcwNywgMHhhMDg2LCAweDAwMjgsIDB4MDBjMCwgMHg4NmYyLCAweDY4NGIsIDB4MDAxYywKLQkweDAwNzgsIDB4ODcxNCwgMHhkMWRjLCAweDAwNDAsIDB4ODcwMCwgMHg2ODRiLCAweDAwMTUsIDB4MTA3OCwKLQkweDkxN2MsIDB4MDA0MCwgMHg4NmZlLCAweDY5NDQsIDB4YzFkYywgMHg2OTQ2LCAweDAwNzgsIDB4ODcxNCwKLQkweGQxZDQsIDB4MDA0MCwgMHg4NzA3LCAweDY4NGIsIDB4MDAwNywgMHgwMDc4LCAweDg3MTQsIDB4Njg0YiwKLQkweDAwMDAsIDB4Njg0YywgMHhkMGFjLCAweDAwNDAsIDB4ODcxNCwgMHg2ODEwLCAweDY5MTQsIDB4YTExNSwKLQkweDAwNDAsIDB4ODcxNCwgMHgxMDc4LCAweDg0ZTIsIDB4MTA3OCwgMHg0YTczLCAweDEwNzgsIDB4OGY5OSwKLQkweDAwYzAsIDB4ODcxYywgMHgxMDc4LCAweDc3MmQsIDB4MGQ3ZiwgMHgwMDdjLCAweDEwNzgsIDB4NjFjZCwKLQkweDAwNzgsIDB4ODcyNCwgMHgxMDc4LCAweDYyN2EsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4ODc0MywKLQkweDBkN2UsIDB4NjExMCwgMHgyMTY4LCAweDY4MzcsIDB4MDEwMywgMHgyMDA5LCAweGE3MGMsIDB4MjEwYywKLQkweGQxOGMsIDB4MDBjMCwgMHg4NzRlLCAweGQxODQsIDB4MDBjMCwgMHg4NzRhLCAweDYxMDgsIDB4Njk0YSwKLQkweGExOGUsIDB4MDAyOSwgMHgwMGMwLCAweDg3M2UsIDB4MTA3OCwgMHhhNGYyLCAweDY4NDcsIDB4MDAwMCwKLQkweDEwNzgsIDB4NGE3MywgMHgwZDdmLCAweDEwNzgsIDB4NzcyZCwgMHgxMDc4LCAweDYyZDEsIDB4MTA3OCwKLQkweDYzOWIsIDB4MDA3YywgMHg2ODRiLCAweDAwMDQsIDB4MDA3OCwgMHg4NzNlLCAweDY4NGIsIDB4MDAwNCwKLQkweDAwNzgsIDB4ODczZSwgMHhhMTgyLCAweDAwNDAsIDB4MDA3OSwgMHg4NzU2LCAweDg3NjksIDB4ODc2OSwKLQkweDg3NjksIDB4ODc2OSwgMHg4NzY5LCAweDg3NmIsIDB4ODc2OSwgMHg4NzZlLCAweDg3NjksIDB4ODc2OSwKLQkweDg3NjksIDB4ODc2OSwgMHg4NzY5LCAweDg3NjksIDB4ODc2OSwgMHg4NzY5LCAweDg3NjksIDB4ODc2OSwKLQkweDg3NjksIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDAwN2UsIDB4MDI3ZSwKLQkweGEwMTYsIDB4MTA3OCwgMHgxNWZhLCAweDAyN2YsIDB4MDA3ZiwgMHgwMDdjLCAweGExODIsIDB4MDA4NSwKLQkweDAwNzksIDB4ODc3YSwgMHg4NzgzLCAweDg3ODEsIDB4ODc4MSwgMHg4NzhmLCAweDg3ODEsIDB4ODc4MSwKLQkweDg3ODEsIDB4MTA3OCwgMHgxMzMyLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDEwNzgsIDB4NWQ4YSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NjJkMSwgMHgxMjdmLCAweDAwN2MsIDB4MDI3ZSwKLQkweDA1N2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDIwNzEsIDB4YWM4MCwgMHg3MjI0LCAweDYyMTIsIDB4NzIyMCwKLQkweDEwNzgsIDB4OGQwMiwgMHgwMDQwLCAweDg3YjQsIDB4MjI2OCwgMHg2ODAwLCAweGEwODYsIDB4MDAwMCwKLQkweDAwNDAsIDB4ODdiNCwgMHg2MDE4LCAweDZkMTgsIDB4YTUyZSwgMHgwMGMwLCAweDg3YjQsIDB4MGM3ZSwKLQkweDJkNjAsIDB4MTA3OCwgMHg4YTAzLCAweDBjN2YsIDB4MDA0MCwgMHg4N2I0LCAweDY4MDMsIDB4MDAwMiwKLQkweDYwMDcsIDB4MDA4NiwgMHgwMDc4LCAweDg3YjYsIDB4NjAwNywgMHgwMDg3LCAweDYwMDMsIDB4MDAwMSwKLQkweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MGY3ZSwgMHgyMjc4LCAweDEwNzgsIDB4NDk2MywKLQkweDBmN2YsIDB4MDA0MCwgMHg4N2NlLCAweDY4MjQsIDB4ZDBlYywgMHgwMDQwLCAweDg3Y2UsIDB4MGM3ZSwKLQkweDIyNjAsIDB4NjAzZiwgMHgwMDAwLCAweDEwNzgsIDB4OGZjZiwgMHgwYzdmLCAweDBlN2YsIDB4MGQ3ZiwKLQkweDA1N2YsIDB4MDI3ZiwgMHgwMDdjLCAweGExODYsIDB4MDAxMywgMHgwMGMwLCAweDg3ZTQsIDB4NjAwNCwKLQkweGEwOGEsIDB4MDA4NSwgMHgxMDQ4LCAweDEzMzIsIDB4YTA4YSwgMHgwMDhjLCAweDEwYzgsIDB4MTMzMiwKLQkweGEwODIsIDB4MDA4NSwgMHgwMDc5LCAweDg3ZjMsIDB4YTE4NiwgMHgwMDI3LCAweDAwNDAsIDB4ODdlYywKLQkweGExODYsIDB4MDAxNCwgMHgxMGMwLCAweDEzMzIsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4OGVkNiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDg3ZmEsIDB4ODdmYywgMHg4N2ZjLCAweDg3ZmEsIDB4ODdmYSwKLQkweDg3ZmEsIDB4ODdmYSwgMHgxMDc4LCAweDEzMzIsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4OGVkNiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExODYsIDB4MDAxMywgMHgwMGMwLCAweDg4MGQsIDB4NjAwNCwKLQkweGEwODIsIDB4MDA4NSwgMHgyMDA4LCAweDAwNzgsIDB4ODg0OCwgMHhhMTg2LCAweDAwMjcsIDB4MDBjMCwKLQkweDg4MzAsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4Mjg4MCwgMHgwZDdlLCAweDYwMTAsIDB4MjA2OCwKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDg4MjYsIDB4NjgzNywgMHgwMTAzLCAweDY4NDcsIDB4MDAwMCwKLQkweDY4NGIsIDB4MDAyOSwgMHgxMDc4LCAweDRhNzMsIDB4MTA3OCwgMHg4ZWM5LCAweDBkN2YsIDB4MTA3OCwKLQkweDc3MmQsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4MTA3OCwgMHg3NzczLCAweDAwNzgsIDB4ODgyYiwKLQkweGExODYsIDB4MDAxNCwgMHgwMGMwLCAweDg4MmMsIDB4MTA3OCwgMHg2MWNkLCAweDBkN2UsIDB4NjAxMCwKLQkweDIwNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4ODgyNiwgMHg2ODM3LCAweDAxMDMsIDB4Njg0NywKLQkweDAwMDAsIDB4Njg0YiwgMHgwMDA2LCAweDY4NTAsIDB4YzBlYywgMHg2ODUyLCAweDAwNzgsIDB4ODgyMiwKLQkweDAwNzksIDB4ODg0YSwgMHg4ODUzLCAweDg4NTEsIDB4ODg1MSwgMHg4ODUxLCAweDg4NTEsIDB4ODg1MSwKLQkweDg4NmUsIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4NjFjZCwgMHg2MDMwLCAweGEwOGMsIDB4ZmYwMCwKLQkweDgxMGYsIDB4YTE4NiwgMHgwMDM5LCAweDAwNDAsIDB4ODg2MSwgMHhhMTg2LCAweDAwMzUsIDB4MDBjMCwKLQkweDg4NjUsIDB4MjAwMSwgMHhhOWEyLCAweDAwNzgsIDB4ODg2NywgMHgyMDAxLCAweGE5YTMsIDB4MjAwNCwKLQkweDYwMTYsIDB4NjAwMywgMHgwMDBjLCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDEwNzgsIDB4NjFjZCwKLQkweDYwMzAsIDB4YTA4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4NiwgMHgwMDM5LCAweDAwNDAsIDB4ODg3YywKLQkweGExODYsIDB4MDAzNSwgMHgwMGMwLCAweDg4ODAsIDB4MjAwMSwgMHhhOWEyLCAweDAwNzgsIDB4ODg4MiwKLQkweDIwMDEsIDB4YTlhMywgMHgyMDA0LCAweDYwMTYsIDB4NjAwMywgMHgwMDBlLCAweDEwNzgsIDB4NjJkMSwKLQkweDAwN2MsIDB4YTE4MiwgMHgwMDhjLCAweDAwYzgsIDB4ODg5MywgMHhhMTgyLCAweDAwODUsIDB4MDA0OCwKLQkweDg4OTMsIDB4MDA3OSwgMHg4ODk2LCAweDEwNzgsIDB4Nzc3MywgMHgwMDdjLCAweDg4OWQsIDB4ODg5ZCwKLQkweDg4OWQsIDB4ODg5ZCwgMHg4ODlmLCAweDg4ZmMsIDB4ODg5ZCwgMHgxMDc4LCAweDEzMzIsIDB4MGY3ZSwKLQkweDJjNzgsIDB4MTA3OCwgMHg0OTYzLCAweDBmN2YsIDB4MDA0MCwgMHg4OGIyLCAweDYwMzAsIDB4YTA4YywKLQkweGZmMDAsIDB4ODEwZiwgMHhhMTg2LCAweDAwMzksIDB4MDA0MCwgMHg4OTEzLCAweGExODYsIDB4MDAzNSwKLQkweDAwNDAsIDB4ODkxMywgMHgwZDdlLCAweDEwNzgsIDB4OGQxNiwgMHgwMGMwLCAweDg4YmIsIDB4MTA3OCwKLQkweDhlYzksIDB4MDA3OCwgMHg4OGRlLCAweDYwMTAsIDB4MjA2OCwgMHg2ODRjLCAweGQwZTQsIDB4MDBjMCwKLQkweDg4YzMsIDB4MTA3OCwgMHg4ZWM5LCAweDY4MzcsIDB4MDEwMywgMHg2ODUwLCAweGQwYjQsIDB4MDA0MCwKLQkweDg4Y2YsIDB4Njg0YiwgMHgwMDA2LCAweGMwZWMsIDB4Njg1MiwgMHgwMDc4LCAweDg4ZGEsIDB4ZDBiYywKLQkweDAwNDAsIDB4ODhkNiwgMHg2ODRiLCAweDAwMDIsIDB4MDA3OCwgMHg4OGRhLCAweDY4NGIsIDB4MDAwNSwKLQkweDEwNzgsIDB4OGY5NSwgMHg2ODQ3LCAweDAwMDAsIDB4MTA3OCwgMHg0YTczLCAweDJjNjgsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDA0MCwgMHg4OGY3LCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMWUsIDB4MjAwOSwKLQkweGFjOGUsIDB4MjEwYywgMHg2MTM2LCAweDIwMDksIDB4YWM4ZiwgMHgyMTBjLCAweDYxM2EsIDB4NjkxOCwKLQkweDYxMWEsIDB4NjkyMCwgMHg2MTIyLCAweDYwMWYsIDB4MDAwMSwgMHgxMDc4LCAweDVkOGEsIDB4MmQ2MCwKLQkweDEwNzgsIDB4NzcyZCwgMHgwZDdmLCAweDAwN2MsIDB4MGY3ZSwgMHgyYzc4LCAweDEwNzgsIDB4NDk2MywKLQkweDBmN2YsIDB4MDA0MCwgMHg4OTM5LCAweDYwMzAsIDB4YTA4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4NiwKLQkweDAwMzUsIDB4MDA0MCwgMHg4OTEzLCAweGExODYsIDB4MDAxZSwgMHgwMDQwLCAweDg5MTMsIDB4YTE4NiwKLQkweDAwMzksIDB4MDBjMCwgMHg4OTM5LCAweDBkN2UsIDB4MmM2OCwgMHgxMDc4LCAweDkxY2MsIDB4MDBjMCwKLQkweDg5NWQsIDB4MTA3OCwgMHg3NmM3LCAweDAwNDAsIDB4ODkzNiwgMHg2MTA2LCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMWYsIDB4MDAwMSwgMHg2OTE4LCAweDYxMWEsIDB4NjkyOCwgMHg2MTJhLCAweDY5MmMsIDB4NjEyZSwKLQkweDY5MzAsIDB4YTE4YywgMHgwMGZmLCAweDYxMzIsIDB4NjkzNCwgMHg2MTM2LCAweDY5MzgsIDB4NjEzYSwKLQkweDY5MjAsIDB4NjEyMiwgMHgxMDc4LCAweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweDJkNjAsIDB4MDA3OCwKLQkweDg5NWQsIDB4MGQ3ZSwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4ODk1ZCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ODUwLCAweGQwYjQsIDB4MDA0MCwgMHg4OTRjLCAweGMwZWMsIDB4Njg1MiwKLQkweDY4NGIsIDB4MDAwNiwgMHgwMDc4LCAweDg5NTcsIDB4ZDBiYywgMHgwMDQwLCAweDg5NTMsIDB4Njg0YiwKLQkweDAwMDIsIDB4MDA3OCwgMHg4OTU3LCAweDY4NGIsIDB4MDAwNSwgMHgxMDc4LCAweDhmOTUsIDB4Njg0NywKLQkweDAwMDAsIDB4MTA3OCwgMHg0YTczLCAweDEwNzgsIDB4OGVjOSwgMHgwZDdmLCAweDEwNzgsIDB4NzcyZCwKLQkweDAwN2MsIDB4MDE3ZSwgMHgwZDdlLCAweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwKLQkweDg5NzEsIDB4NjgzNywgMHgwMTAzLCAweDY4NGIsIDB4MDAyOCwgMHg2ODQ3LCAweDAwMDAsIDB4MTA3OCwKLQkweDRhNzMsIDB4MGQ3ZiwgMHgwMTdmLCAweGExODYsIDB4MDAxMywgMHgwMDQwLCAweDg5ODMsIDB4YTE4NiwKLQkweDAwMTQsIDB4MDA0MCwgMHg4OTgzLCAweGExODYsIDB4MDAyNywgMHgwMDQwLCAweDg5ODMsIDB4MTA3OCwKLQkweDc3NzMsIDB4MDA3OCwgMHg4OTg5LCAweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDhlZDYsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3YywgMHgwNTdlLCAweDA2N2UsIDB4MGQ3ZSwgMHgwZjdlLCAweDIwMjksIDB4MDAwMSwKLQkweGExODIsIDB4MDEwMSwgMHgwMGM4LCAweDg5OTYsIDB4MDA3OCwgMHg4OTk4LCAweDIwMDksIDB4MDEwMCwKLQkweDIxMzAsIDB4MjA2OSwgMHhhYzk4LCAweDgzMWMsIDB4MjMwMCwgMHhhZDE4LCAweDIwMDksIDB4MDAyMCwKLQkweGFmOTAsIDB4MDAxZCwgMHgxMDc4LCAweDg5ZjIsIDB4YTZiMiwgMHgwMDIwLCAweDc4MDQsIDB4YTA2ZCwKLQkweDAwNDAsIDB4ODlhYywgMHgxMDc4LCAweDEzYjQsIDB4MTA3OCwgMHgxMzhiLCAweDAwNDAsIDB4ODlkNiwKLQkweDg1MjgsIDB4NjgzNywgMHgwMTEwLCAweDY4M2IsIDB4MDAwMCwgMHgyZDIwLCAweDdjMDYsIDB4YTY4YSwKLQkweDAwM2QsIDB4MDBjOCwgMHg4OWMyLCAweDI2MDgsIDB4YWQ5MCwgMHgwMDBmLCAweDEwNzgsIDB4ODlmMiwKLQkweDAwNzgsIDB4ODlkNiwgMHhhNmIyLCAweDAwM2MsIDB4MjAwOSwgMHgwMDNjLCAweDJkNzgsIDB4YWQ5MCwKLQkweDAwMGYsIDB4MTA3OCwgMHg4OWYyLCAweDAwNzgsIDB4ODlhYywgMHgwZjdmLCAweDg1MmYsIDB4YTVhZCwKLQkweDAwMDMsIDB4N2QzNiwgMHhhNWFjLCAweDAwMDAsIDB4MDA3OCwgMHg4OWRiLCAweDBmN2YsIDB4ODUyZiwKLQkweGE1YWQsIDB4MDAwMywgMHg3ZDM2LCAweDBkN2YsIDB4MDY3ZiwgMHgwNTdmLCAweDAwN2MsIDB4MGY3ZSwKLQkweDhkZmYsIDB4MDA0MCwgMHg4OWYwLCAweDY4MDQsIDB4YTA3ZCwgMHgwMDQwLCAweDg5ZWUsIDB4NjgwNywKLQkweDAwMDAsIDB4MTA3OCwgMHg0YTczLCAweDJmNjgsIDB4MDA3OCwgMHg4OWUzLCAweDEwNzgsIDB4NGE3MywKLQkweDBmN2YsIDB4MDA3YywgMHgxNTdlLCAweGExODQsIDB4MDAwMSwgMHgwMDQwLCAweDg5ZjgsIDB4ODEwOCwKLQkweDgxMGMsIDB4MjFhOCwgMHgyMzA0LCAweDgwMDcsIDB4MjAxMiwgMHg4MzE4LCAweDgyMTAsIDB4MDBmMCwKLQkweDg5ZmEsIDB4MTU3ZiwgMHgwMDdjLCAweDA2N2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjAzMSwKLQkweDAwMDEsIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MTA3OSwgMHg4YTFmLCAweDEyN2YsIDB4MDY3ZiwKLQkweDAwN2MsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MDY3ZSwgMHgyMDMxLCAweDAwMDAsIDB4NjAxYywKLQkweGEwODQsIDB4MDAwZiwgMHgxMDc5LCAweDhhMWYsIDB4MDY3ZiwgMHgxMjdmLCAweDAwN2MsIDB4OGEzOSwKLQkweDhhMjcsIDB4OGEzNCwgMHg4YTU1LCAweDhhMjcsIDB4OGEzNCwgMHg4YTU1LCAweDhhMzQsIDB4MTA3OCwKLQkweDEzMzIsIDB4MDM3ZSwgMHgyMDE5LCAweDAwMTAsIDB4MTA3OCwgMHg5ZGQ3LCAweDYwMWYsIDB4MDAwNiwKLQkweDYwMDMsIDB4MDAwNywgMHgwMzdmLCAweDAwN2MsIDB4YTAwNiwgMHgwMDdjLCAweGEwODUsIDB4MDAwMSwKLQkweDAwN2MsIDB4MGQ3ZSwgMHg4NmZmLCAweDAwYzAsIDB4OGE1MCwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwKLQkweDhkMTYsIDB4MDA0MCwgMHg4YTUyLCAweGEwMGUsIDB4MjAwMSwgMHgwMDA1LCAweDEwNzgsIDB4NGI1MSwKLQkweDEwNzgsIDB4OGY5NSwgMHgxMDc4LCAweDRhNzMsIDB4MTA3OCwgMHg3NzJkLCAweGEwODUsIDB4MDAwMSwKLQkweDBkN2YsIDB4MDA3YywgMHhhMDA2LCAweDAwNzgsIDB4OGE1MCwgMHg2MDAwLCAweGEwOGEsIDB4MDAxMCwKLQkweDEwYzgsIDB4MTMzMiwgMHgxMDc5LCAweDhhNWQsIDB4MDA3YywgMHg4YTZkLCAweDhhOTIsIDB4OGE2ZiwKLQkweDhhYjUsIDB4OGE4ZSwgMHg4YTZkLCAweDhhMzQsIDB4OGEzOSwgMHg4YTM5LCAweDhhMzQsIDB4OGEzNCwKLQkweDhhMzQsIDB4OGEzNCwgMHg4YTM0LCAweDhhMzQsIDB4OGEzNCwgMHgxMDc4LCAweDEzMzIsIDB4ODZmZiwKLQkweDAwYzAsIDB4OGE4YiwgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwgMHgwMDQwLCAweDhhOGIsIDB4MGQ3ZSwKLQkweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwgMHg4YTgwLCAweDEwNzgsIDB4OGY5NSwKLQkweDBkN2YsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDFmLCAweDAwMDIsIDB4MTA3OCwKLQkweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDEwNzgsIDB4MTc1NywKLQkweDAwNzgsIDB4OGE2ZiwgMHgwZTdlLCAweDIwNzEsIDB4YTliMSwgMHg3MDI0LCAweGFjMDYsIDB4MDBjMCwKLQkweDhhOWIsIDB4MTA3OCwgMHg2ZmM0LCAweDYwMWMsIDB4YTA4NCwgMHgwMDBmLCAweGEwODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4OGFhZCwgMHgwODdlLCAweDA5N2UsIDB4MjA0OSwgMHgwMDAxLCAweDJjNDAsIDB4MTA3OCwKLQkweDcyNDYsIDB4MDk3ZiwgMHgwODdmLCAweDAwNzgsIDB4OGFhZiwgMHgxMDc4LCAweDZlYmUsIDB4MGU3ZiwKLQkweDAwYzAsIDB4OGE2ZiwgMHgxMDc4LCAweDhhMzQsIDB4MDA3YywgMHgwMzdlLCAweDBlN2UsIDB4MjA3MSwKLQkweGE5YjEsIDB4NzAzYywgMHhhYzA2LCAweDAwYzAsIDB4OGFjNSwgMHgyMDE5LCAweDAwMDAsIDB4MTA3OCwKLQkweDcwNTgsIDB4MGU3ZiwgMHgwMzdmLCAweDAwNzgsIDB4OGE2ZiwgMHgxMDc4LCAweDczOGEsIDB4MGU3ZiwKLQkweDAzN2YsIDB4MDBjMCwgMHg4YTZmLCAweDEwNzgsIDB4OGEzNCwgMHgwMDdjLCAweDBjN2UsIDB4NjAxYywKLQkweGEwODQsIDB4MDAwZiwgMHgxMDc5LCAweDhhZDYsIDB4MGM3ZiwgMHgwMDdjLCAweDhhZTUsIDB4OGI1NywKLQkweDhjOGYsIDB4OGFmMCwgMHg4ZWQ2LCAweDhhZTUsIDB4OWRjOCwgMHg3NzJkLCAweDhiNTcsIDB4MTA3OCwKLQkweDhmMTAsIDB4MDBjMCwgMHg4YWU1LCAweDEwNzgsIDB4N2M4MywgMHgwMDdjLCAweDEwNzgsIDB4NjFjZCwKLQkweDEwNzgsIDB4NjJkMSwgMHgxMDc4LCAweDc3MmQsIDB4MDA3YywgMHg2MDE3LCAweDAwMDEsIDB4MDA3YywKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDhhZjgsIDB4NjAxMCwgMHhhMDgwLCAweDAwMTksIDB4MmMwMiwKLQkweDYwMDAsIDB4YTA4YSwgMHgwMDEwLCAweDEwYzgsIDB4MTMzMiwgMHgxMDc5LCAweDhiMDAsIDB4MDA3YywKLQkweDhiMTAsIDB4OGIxMiwgMHg4YjM0LCAweDhiNDYsIDB4OGI1MywgMHg4YjEwLCAweDhhZTUsIDB4OGFlNSwKLQkweDhhZTUsIDB4OGI0NiwgMHg4YjQ2LCAweDhiMTAsIDB4OGIxMCwgMHg4YjEwLCAweDhiMTAsIDB4OGI1MCwKLQkweDEwNzgsIDB4MTMzMiwgMHgwZTdlLCAweDYwMTAsIDB4MjA3MCwgMHg3MDUwLCAweGMwYjUsIDB4NzA1MiwKLQkweDIwNzEsIDB4YTliMSwgMHg3MDI0LCAweGFjMDYsIDB4MDA0MCwgMHg4YjMwLCAweDEwNzgsIDB4NmViZSwKLQkweDYwMDcsIDB4MDA4NSwgMHg2MDAzLCAweDAwMGIsIDB4NjAxZiwgMHgwMDAyLCAweDIwMDEsIDB4YTlhMywKLQkweDIwMDQsIDB4NjAxNiwgMHgxMDc4LCAweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweDBlN2YsIDB4MDA3YywKLQkweDYwMTcsIDB4MDAwMSwgMHgwMDc4LCAweDhiMmUsIDB4MGQ3ZSwgMHg2MDEwLCAweDIwNjgsIDB4Njg1MCwKLQkweGMwYjUsIDB4Njg1MiwgMHgwZDdmLCAweDYwMDcsIDB4MDA4NSwgMHg2MDAzLCAweDAwMGIsIDB4NjAxZiwKLQkweDAwMDIsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDBkN2UsIDB4NjAxNywKLQkweDAwMDEsIDB4NjAxMCwgMHgyMDY4LCAweDY4NTAsIDB4YzBiNSwgMHg2ODUyLCAweDBkN2YsIDB4MDA3YywKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDEwNzgsIDB4MTc1NywgMHgwMDc4LCAweDhiMzQsIDB4NjAwMCwKLQkweGEwOGEsIDB4MDAxMCwgMHgxMGM4LCAweDEzMzIsIDB4MTA3OSwgMHg4YjVmLCAweDAwN2MsIDB4OGI2ZiwKLQkweDhhZWQsIDB4OGI3MSwgMHg4YjZmLCAweDhiNzEsIDB4OGI3MSwgMHg4YWU2LCAweDhiNmYsIDB4OGFkZiwKLQkweDhhZGYsIDB4OGI2ZiwgMHg4YjZmLCAweDhiNmYsIDB4OGI2ZiwgMHg4YjZmLCAweDhiNmYsIDB4MTA3OCwKLQkweDEzMzIsIDB4MGQ3ZSwgMHg2MDE4LCAweDIwNjgsIDB4NjgwNCwgMHhhMDg0LCAweDAwZmYsIDB4MGQ3ZiwKLQkweGEwOGEsIDB4MDAwYywgMHgxMGM4LCAweDEzMzIsIDB4MTA3OSwgMHg4YjdmLCAweDAwN2MsIDB4OGI4YiwKLQkweDhjMzMsIDB4OGI4ZCwgMHg4YmNkLCAweDhiOGQsIDB4OGJjZCwgMHg4YjhkLCAweDhiOWEsIDB4OGI4YiwKLQkweDhiY2QsIDB4OGI4YiwgMHg4YmI3LCAweDEwNzgsIDB4MTMzMiwgMHg2MDA0LCAweGEwOGUsIDB4MDAxNiwKLQkweDAwNDAsIDB4OGJjOCwgMHhhMDhlLCAweDAwMDQsIDB4MDA0MCwgMHg4YmM4LCAweGEwOGUsIDB4MDAwMiwKLQkweDAwNDAsIDB4OGJjOCwgMHg2MDA0LCAweDEwNzgsIDB4OGYxMCwgMHgwMDQwLCAweDhjNGUsIDB4YTA4ZSwKLQkweDAwMjEsIDB4MDA0MCwgMHg4YzUyLCAweGEwOGUsIDB4MDAyMiwgMHgwMDQwLCAweDhjNGUsIDB4YTA4ZSwKLQkweDAwM2QsIDB4MDA0MCwgMHg4YzUyLCAweGEwOGUsIDB4MDAzOSwgMHgwMDQwLCAweDhjNTYsIDB4YTA4ZSwKLQkweDAwMzUsIDB4MDA0MCwgMHg4YzU2LCAweGEwOGUsIDB4MDAxZSwgMHgwMDQwLCAweDhiY2EsIDB4YTA4ZSwKLQkweDAwMDEsIDB4MDBjMCwgMHg4YmM2LCAweDBkN2UsIDB4NjAxOCwgMHgyMDY4LCAweDY4MDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4MGQ3ZiwgMHhhMDg2LCAweDAwMDYsIDB4MDA0MCwgMHg4YmM4LCAweDEwNzgsIDB4Mjg4MCwKLQkweDEwNzgsIDB4N2M4MywgMHgxMDc4LCAweDhlZDYsIDB4MDA3YywgMHgwYzdlLCAweDBkN2UsIDB4NjEwNCwKLQkweGExODYsIDB4MDAxNiwgMHgwMDQwLCAweDhjMjMsIDB4YTE4NiwgMHgwMDAyLCAweDAwYzAsIDB4OGJmNiwKLQkweDYwMTgsIDB4MjA2OCwgMHg2OGEwLCAweGQwYmMsIDB4MDBjMCwgMHg4YzdhLCAweDY4NDAsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTAwNSwgMHgwMDQwLCAweDhiZjYsIDB4ODAwMSwgMHg2ODQyLCAweDYwMTMsIDB4MDAwMCwKLQkweDYwMWYsIDB4MDAwNywgMHg2MDE3LCAweDAzOTgsIDB4MTA3OCwgMHg3NmM3LCAweDAwNDAsIDB4OGJmNiwKLQkweDJkMDAsIDB4NjAxYSwgMHg2MDFmLCAweDAwMDEsIDB4MDA3OCwgMHg4YzIzLCAweDBkN2YsIDB4MGM3ZiwKLQkweDYwMDQsIDB4YTA4ZSwgMHgwMDAyLCAweDAwYzAsIDB4OGMxNCwgMHg2MDE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDdlLCAweDAwYzAsIDB4OGMxNCwgMHgyMDA5LCAweGE3MzMsIDB4MjEwNCwKLQkweGMwODUsIDB4MjAwYSwgMHgwZTdlLCAweDIwNzEsIDB4YTcwMCwgMHgxMDc4LCAweDQyYjgsIDB4MGU3ZiwKLQkweDEwNzgsIDB4N2M4MywgMHgwMDc4LCAweDhjMTgsIDB4MTA3OCwgMHg3YzgzLCAweDEwNzgsIDB4Mjg4MCwKLQkweDBlN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHgyOGE2LCAweDEyN2YsIDB4MGU3ZiwKLQkweDEwNzgsIDB4OGVkNiwgMHgwMDdjLCAweDIwMDEsIDB4MDAwMiwgMHgxMDc4LCAweDQ1MDIsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAyLCAweDEwNzgsIDB4NWRkNywgMHgxMDc4LCAweDYyZDEsIDB4MGQ3ZiwKLQkweDBjN2YsIDB4MDA3OCwgMHg4YzIyLCAweDBjN2UsIDB4MGQ3ZSwgMHg2MTA0LCAweGExODYsIDB4MDAxNiwKLQkweDAwNDAsIDB4OGMyMywgMHg2MDE4LCAweDIwNjgsIDB4Njg0MCwgMHhhMDg0LCAweDAwZmYsIDB4YTAwNSwKLQkweDAwNDAsIDB4OGJmNiwgMHg4MDAxLCAweDY4NDIsIDB4NjAwMywgMHgwMDAxLCAweDEwNzgsIDB4NWRkNywKLQkweDEwNzgsIDB4NjJkMSwgMHgwZDdmLCAweDBjN2YsIDB4MDA3OCwgMHg4YzIyLCAweDEwNzgsIDB4N2M4MywKLQkweDAwNzgsIDB4OGJjYSwgMHgxMDc4LCAweDdjYTYsIDB4MDA3OCwgMHg4YmNhLCAweDBkN2UsIDB4MmM2OCwKLQkweDYxMDQsIDB4MTA3OCwgMHg5MWNjLCAweDBkN2YsIDB4MDA0MCwgMHg4YzYyLCAweDEwNzgsIDB4NzcyZCwKLQkweDAwNzgsIDB4OGM3OSwgMHg2MDA0LCAweDgwMDcsIDB4NjEzMCwgMHhhMThjLCAweDAwZmYsIDB4YTEwNSwKLQkweDYwMzIsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDFmLCAweDAwMDIsIDB4NjAzOCwKLQkweDYwMGEsIDB4MjAwMSwgMHhhOWEzLCAweDIwMDQsIDB4NjAxNiwgMHgxMDc4LCAweDVkOGEsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3YywgMHgwZDdmLCAweDBjN2YsIDB4MTA3OCwgMHg3YzgzLCAweDEwNzgsIDB4Mjg4MCwKLQkweDBlN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHgyOGE2LCAweDYwMTMsIDB4MDAwMCwKLQkweDYwMWYsIDB4MDAwNywgMHg2MDE3LCAweDAzOTgsIDB4MTI3ZiwgMHgwZTdmLCAweDAwN2MsIDB4NjAwMCwKLQkweGEwOGEsIDB4MDAxMCwgMHgxMGM4LCAweDEzMzIsIDB4MTA3OSwgMHg4Yzk3LCAweDAwN2MsIDB4OGNhNywKLQkweDhjYTcsIDB4OGNhNywgMHg4Y2E3LCAweDhjYTcsIDB4OGNhNywgMHg4Y2E3LCAweDhjYTcsIDB4OGNhNywKLQkweDhhZTUsIDB4OGNhNywgMHg4YWVkLCAweDhjYTksIDB4OGFlZCwgMHg4Y2I3LCAweDhjYTcsIDB4MTA3OCwKLQkweDEzMzIsIDB4NjAwNCwgMHhhMDg2LCAweDAwOGIsIDB4MDA0MCwgMHg4Y2I3LCAweDYwMDcsIDB4MDA4YiwKLQkweDYwMDMsIDB4MDAwZCwgMHgxMDc4LCAweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4MTA3OCwKLQkweDhlYzksIDB4MTA3OCwgMHg4ZDE2LCAweDAwNDAsIDB4OGNlZiwgMHgxMDc4LCAweDI4ODAsIDB4MGQ3ZSwKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweDhjZDEsIDB4NjAxMCwgMHgyMDY4LCAweDY4MzcsIDB4MDEwMywKLQkweDY4NGIsIDB4MDAwNiwgMHg2ODQ3LCAweDAwMDAsIDB4Njg1MCwgMHhjMGVkLCAweDY4NTIsIDB4MTA3OCwKLQkweDRhNzMsIDB4MmM2OCwgMHgxMDc4LCAweDc2YzcsIDB4MDA0MCwgMHg4Y2RmLCAweDY4MTgsIDB4NjAxYSwKLQkweDBjN2UsIDB4MmQ2MCwgMHgxMDc4LCAweDhlZDYsIDB4MGM3ZiwgMHgwMDc4LCAweDhjZTAsIDB4MmQ2MCwKLQkweDBkN2YsIDB4NjAxMywgMHgwMDAwLCAweDYwMWYsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsIDB4NjAwMywKLQkweDAwMDEsIDB4MTA3OCwgMHg1ZGQ3LCAweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDhkMDEsIDB4NjAzMCwKLQkweGEwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweGExODYsIDB4MDAzOSwgMHgwMDQwLCAweDhjZmIsIDB4YTE4NiwKLQkweDAwMzUsIDB4MDBjMCwgMHg4Y2ZmLCAweDEwNzgsIDB4Mjg4MCwgMHgwMDc4LCAweDhjZDEsIDB4MTA3OCwKLQkweDhlZDYsIDB4MDA3YywgMHhhMjg0LCAweDAwMGYsIDB4MDBjMCwgMHg4ZDEzLCAweGEyODIsIDB4YWUwMCwKLQkweDAwNDgsIDB4OGQxMywgMHgyMDAxLCAweGE3MTYsIDB4MjAwNCwgMHhhMjAyLCAweDAwYzgsIDB4OGQxMywKLQkweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweGEwMDYsIDB4MDA3OCwgMHg4ZDEyLCAweDAyN2UsIDB4MGU3ZSwKLQkweDIwNzEsIDB4YTcwMCwgMHg2MjEwLCAweDcwNWMsIDB4YTIwMiwgMHgwMDQ4LCAweDhkMjgsIDB4NzA2MCwKLQkweGEyMDIsIDB4MDBjOCwgMHg4ZDI4LCAweGEwODUsIDB4MDAwMSwgMHgwZTdmLCAweDAyN2YsIDB4MDA3YywKLQkweGEwMDYsIDB4MDA3OCwgMHg4ZDI1LCAweDBlN2UsIDB4MGM3ZSwgMHgwMzdlLCAweDAwN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDYxLCAweGFlMDAsIDB4MjA3MSwgMHhhNzAwLCAweDczNDgsIDB4NzA2NCwKLQkweGEzMDIsIDB4MDBjOCwgMHg4ZDU1LCAweDYwMWMsIDB4YTIwNiwgMHgwMGMwLCAweDhkNGQsIDB4MTA3OCwKLQkweDkwM2IsIDB4MDA0MCwgMHg4ZDRkLCAweDEwNzgsIDB4OGYxMCwgMHgwMGMwLCAweDhkNDksIDB4MTA3OCwKLQkweDdjODMsIDB4MGM3ZSwgMHgxMDc4LCAweDc3MmQsIDB4MGM3ZiwgMHhhY2UwLCAweDAwMTAsIDB4NzA1OCwKLQkweGFjMDIsIDB4MDBjOCwgMHg4ZDU1LCAweDAwNzgsIDB4OGQzNiwgMHgxMjdmLCAweDAwN2YsIDB4MDM3ZiwKLQkweDBjN2YsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MGM3ZSwgMHgwMTdlLCAweGExODgsIDB4YTgzNSwKLQkweDIxMGMsIDB4ODFmZiwgMHgwMDQwLCAweDhkNjksIDB4MjA2MSwgMHhhYWIzLCAweDYxMWEsIDB4MTA3OCwKLQkweDI4ODAsIDB4YTAwNiwgMHgwMDc4LCAweDhkNmUsIDB4YTA4NSwgMHgwMDAxLCAweDAxN2YsIDB4MGM3ZiwKLQkweDBlN2YsIDB4MDA3YywgMHgwYzdlLCAweDA1N2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MGM3ZSwKLQkweDEwNzgsIDB4NzZjNywgMHgwNTdmLCAweDAwNDAsIDB4OGQ4YiwgMHg2NjEyLCAweDY1MWEsIDB4NjAxZiwKLQkweDAwMDMsIDB4MjAwOSwgMHgwMDRiLCAweDEwNzgsIDB4Nzc1YywgMHhhMDg1LCAweDAwMDEsIDB4MTI3ZiwKLQkweDA1N2YsIDB4MGM3ZiwgMHgwMDdjLCAweGEwMDYsIDB4MDA3OCwgMHg4ZDg3LCAweDBjN2UsIDB4MDU3ZSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDYyYTAsIDB4MGM3ZSwgMHgxMDc4LCAweDc2YzcsIDB4MDU3ZiwKLQkweDAwNDAsIDB4OGRiOSwgMHg2MDEzLCAweDAwMDAsIDB4NjUxYSwgMHg2MDFmLCAweDAwMDMsIDB4MGM3ZSwKLQkweDI1NjAsIDB4MTA3OCwgMHg0N2U5LCAweDBjN2YsIDB4MTA3OCwgMHg1ZjAxLCAweDA3N2UsIDB4MjAzOSwKLQkweDAwMDAsIDB4MTA3OCwgMHg1ZTBhLCAweDJjMDgsIDB4MTA3OCwgMHg5ZjliLCAweDA3N2YsIDB4MjAwOSwKLQkweDAwNGMsIDB4MTA3OCwgMHg3NzVjLCAweGEwODUsIDB4MDAwMSwgMHgxMjdmLCAweDA1N2YsIDB4MGM3ZiwKLQkweDAwN2MsIDB4YTAwNiwgMHgwMDc4LCAweDhkYjUsIDB4MGY3ZSwgMHgwYzdlLCAweDA0N2UsIDB4MGM3ZSwKLQkweDEwNzgsIDB4NzZjNywgMHgyYzc4LCAweDBjN2YsIDB4MDA0MCwgMHg4ZGQ2LCAweDdlMTIsIDB4MmMwMCwKLQkweDc4MWEsIDB4NzgxZiwgMHgwMDAzLCAweDIwMjEsIDB4MDAwNSwgMHgxMDc4LCAweDhlMjEsIDB4MmY2MCwKLQkweDIwMDksIDB4MDA0ZCwgMHgxMDc4LCAweDc3NWMsIDB4YTA4NSwgMHgwMDAxLCAweDA0N2YsIDB4MGM3ZiwKLQkweDBmN2YsIDB4MDA3YywgMHgwZjdlLCAweDBjN2UsIDB4MDQ3ZSwgMHgwYzdlLCAweDEwNzgsIDB4NzZjNywKLQkweDJjNzgsIDB4MGM3ZiwgMHgwMDQwLCAweDhkZjQsIDB4N2UxMiwgMHgyYzAwLCAweDc4MWEsIDB4NzgxZiwKLQkweDAwMDMsIDB4MjAyMSwgMHgwMDA1LCAweDEwNzgsIDB4OGUyMSwgMHgyZjYwLCAweDIwMDksIDB4MDA0ZSwKLQkweDEwNzgsIDB4Nzc1YywgMHhhMDg1LCAweDAwMDEsIDB4MDQ3ZiwgMHgwYzdmLCAweDBmN2YsIDB4MDA3YywKLQkweDBmN2UsIDB4MGM3ZSwgMHgwNDdlLCAweDBjN2UsIDB4MTA3OCwgMHg3NmM3LCAweDJjNzgsIDB4MGM3ZiwKLQkweDAwNDAsIDB4OGUxZCwgMHg3ZTEyLCAweDJjMDAsIDB4NzgxYSwgMHg3ODFmLCAweDAwMDMsIDB4MjAyMSwKLQkweDAwMDQsIDB4MTA3OCwgMHg4ZTIxLCAweDIwMDEsIDB4YTk5ZCwgMHgyMDA0LCAweGQwZmMsIDB4MDA0MCwKLQkweDhlMTYsIDB4MmY2MCwgMHgxMDc4LCAweDc3MmQsIDB4MDA3OCwgMHg4ZTFiLCAweDJmNjAsIDB4MjAwOSwKLQkweDAwNTIsIDB4MTA3OCwgMHg3NzVjLCAweGEwODUsIDB4MDAwMSwgMHgwNDdmLCAweDBjN2YsIDB4MGY3ZiwKLQkweDAwN2MsIDB4MDk3ZSwgMHgwNzdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NDc3NSwKLQkweDAwNDAsIDB4OGUyZSwgMHgyMDAxLCAweDhlMjYsIDB4MDA3OCwgMHg4ZTM0LCAweDEwNzgsIDB4NDczOSwKLQkweDAwNDAsIDB4OGUzZCwgMHgyMDAxLCAweDhlMmUsIDB4MDA3ZSwgMHhhMDBlLCAweDI0MDAsIDB4MTA3OCwKLQkweDRiNTEsIDB4MTA3OCwgMHg0YTczLCAweDAwN2YsIDB4MDA3YSwgMHgyNDE4LCAweDEwNzgsIDB4NjE2MSwKLQkweDYyYTAsIDB4MDg3ZSwgMHgyMDQxLCAweDAwMDEsIDB4MjAzOSwgMHgwMDAxLCAweDI2MDgsIDB4MTA3OCwKLQkweDVmMWIsIDB4MDg3ZiwgMHgxMDc4LCAweDVlMGEsIDB4MmYwOCwgMHgyNjQ4LCAweDEwNzgsIDB4OWY5YiwKLQkweDYxM2MsIDB4ODFmZiwgMHgxMDQwLCAweDVmZGIsIDB4MTA3OCwgMHg2MmQxLCAweDEyN2YsIDB4MDc3ZiwKLQkweDA5N2YsIDB4MDA3YywgMHgwYzdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDBjN2UsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDE3ZiwgMHgwMDQwLCAweDhlNzMsIDB4NjYwYSwgMHg2MTFhLCAweDYwMWYsIDB4MDAwMSwKLQkweDJkMDAsIDB4NjAxMiwgMHgyMDA5LCAweDAwMWYsIDB4MTA3OCwgMHg3NzVjLCAweGEwODUsIDB4MDAwMSwKLQkweDEyN2YsIDB4MGM3ZiwgMHgwMDdjLCAweGEwMDYsIDB4MDA3OCwgMHg4ZTcwLCAweDBjN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgwYzdlLCAweDEwNzgsIDB4NzZjNywgMHgwMTdmLCAweDAwNDAsIDB4OGU4ZiwKLQkweDY2MGEsIDB4NjExYSwgMHg2MDFmLCAweDAwMDgsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDAyMSwKLQkweDEwNzgsIDB4Nzc1YywgMHhhMDg1LCAweDAwMDEsIDB4MTI3ZiwgMHgwYzdmLCAweDAwN2MsIDB4YTAwNiwKLQkweDAwNzgsIDB4OGU4YywgMHgwYzdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDBjN2UsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDE3ZiwgMHgwMDQwLCAweDhlYWIsIDB4NjYwYSwgMHg2MTFhLCAweDYwMWYsIDB4MDAwMSwKLQkweDJkMDAsIDB4NjAxMiwgMHgyMDA5LCAweDAwM2QsIDB4MTA3OCwgMHg3NzVjLCAweGEwODUsIDB4MDAwMSwKLQkweDEyN2YsIDB4MGM3ZiwgMHgwMDdjLCAweGEwMDYsIDB4MDA3OCwgMHg4ZWE4LCAweDBjN2UsIDB4MTI3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgwYzdlLCAweDEwNzgsIDB4NzZjNywgMHgwMTdmLCAweDAwNDAsIDB4OGVjNiwKLQkweDYxMWEsIDB4NjAxZiwgMHgwMDAxLCAweDJkMDAsIDB4NjAxMiwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwKLQkweDc3NWMsIDB4YTA4NSwgMHgwMDAxLCAweDEyN2YsIDB4MGM3ZiwgMHgwMDdjLCAweGEwMDYsIDB4MDA3OCwKLQkweDhlYzMsIDB4MDI3ZSwgMHgwZDdlLCAweDYyMTgsIDB4MjI2OCwgMHg2YTNjLCAweDgyZmYsIDB4MDA0MCwKLQkweDhlZDMsIDB4ODIxMSwgMHg2YTNlLCAweDBkN2YsIDB4MDI3ZiwgMHgwMDdjLCAweDAwN2UsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweDhlZTgsIDB4NjAxMywgMHgwMDAwLCAweDYwMWYsIDB4MDAwNywKLQkweDIwMDEsIDB4YTlhMywgMHgyMDA0LCAweDYwMTYsIDB4MTA3OCwgMHhhNGE1LCAweDYwM2YsIDB4MDAwMCwKLQkweDAwN2YsIDB4MDA3YywgMHgwNjdlLCAweDBjN2UsIDB4MGQ3ZSwgMHgyMDMxLCAweGE3NTMsIDB4MjYzNCwKLQkweGQ2ZTQsIDB4MDA0MCwgMHg4ZWY4LCAweDY2MTgsIDB4MjY2MCwgMHg2ZTQ4LCAweDEwNzgsIDB4NDZlNywKLQkweDBkN2YsIDB4MGM3ZiwgMHgwNjdmLCAweDAwN2MsIDB4MDA3ZSwgMHgwMTdlLCAweDYwMDQsIDB4YTA4ZSwKLQkweDAwMDIsIDB4MDA0MCwgMHg4ZjBkLCAweGEwOGUsIDB4MDAwMywgMHgwMDQwLCAweDhmMGQsIDB4YTA4ZSwKLQkweDAwMDQsIDB4MDA0MCwgMHg4ZjBkLCAweGEwODUsIDB4MDAwMSwgMHgwMTdmLCAweDAwN2YsIDB4MDA3YywKLQkweDAwN2UsIDB4MGQ3ZSwgMHg2MDEwLCAweGEwNmQsIDB4MDA0MCwgMHg4ZjFkLCAweDY4MzgsIDB4ZDBmYywKLQkweDAwNDAsIDB4OGYxZCwgMHhhMDA2LCAweDAwNzgsIDB4OGYxZiwgMHhhMDg1LCAweDAwMDEsIDB4MGQ3ZiwKLQkweDAwN2YsIDB4MDA3YywgMHgwYzdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDBjN2UsIDB4MTA3OCwKLQkweDc2YzcsIDB4MDE3ZiwgMHgwMDQwLCAweDhmM2MsIDB4NjExYSwgMHg2MDFmLCAweDAwMDEsIDB4MmQwMCwKLQkweDYwMTIsIDB4MTA3OCwgMHgyODgwLCAweDIwMDksIDB4MDAyOCwgMHgxMDc4LCAweDc3NWMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MTI3ZiwgMHgwYzdmLCAweDAwN2MsIDB4YTAwNiwgMHgwMDc4LCAweDhmMzksIDB4YTE4NiwKLQkweDAwMTUsIDB4MDBjMCwgMHg4ZjU0LCAweDIwMTEsIDB4YTcyMCwgMHgyMjA0LCAweGEwODYsIDB4MDA3NCwKLQkweDAwYzAsIDB4OGY1NCwgMHgxMDc4LCAweDdmOTEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAyOSwKLQkweDEwNzgsIDB4NWRkNywgMHgwMDc4LCAweDhmNTgsIDB4MTA3OCwgMHg3YzgzLCAweDEwNzgsIDB4NzcyZCwKLQkweDAwN2MsIDB4YTE4NiwgMHgwMDE2LCAweDAwYzAsIDB4OGY2MywgMHgyMDAxLCAweDAwMDQsIDB4MTA3OCwKLQkweDQ1MDIsIDB4MDA3OCwgMHg4Zjg0LCAweGExODYsIDB4MDAxNSwgMHgwMGMwLCAweDhmODgsIDB4MjAxMSwKLQkweGE3MjAsIDB4MjIwNCwgMHhhMDg2LCAweDAwMTQsIDB4MDBjMCwgMHg4Zjg4LCAweDBkN2UsIDB4NjAxOCwKLQkweDIwNjgsIDB4MTA3OCwgMHg0NjQ5LCAweDBkN2YsIDB4MTA3OCwgMHg4MDQzLCAweDAwYzAsIDB4OGY4OCwKLQkweDBkN2UsIDB4NjAxOCwgMHgyMDY4LCAweDY4OTAsIDB4MGQ3ZiwgMHhhMDA1LCAweDAwNDAsIDB4OGY4OCwKLQkweDIwMDEsIDB4MDAwNiwgMHgxMDc4LCAweDQ1MDIsIDB4MTA3OCwgMHg3N2Y4LCAweDAwNzgsIDB4OGY4YywKLQkweDEwNzgsIDB4N2M4MywgMHgxMDc4LCAweDc3MmQsIDB4MDA3YywgMHg2ODQ4LCAweGEwODYsIDB4MDAwNSwKLQkweDAwYzAsIDB4OGY5NCwgMHgxMDc4LCAweDhmOTUsIDB4MDA3YywgMHg2ODUwLCAweGMwYWQsIDB4Njg1MiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGFjOGMsIDB4NzAxNCwgMHhkMGU0LCAweDAwNDAsIDB4OGZhYSwKLQkweDYwMTMsIDB4MDAwMCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDUwLCAweDEwNzgsIDB4NWQ4YSwKLQkweDEwNzgsIDB4NjJkMSwgMHgwZTdmLCAweDAwN2MsIDB4MGM3ZSwgMHgwZjdlLCAweDJjNzgsIDB4MTA3OCwKLQkweDQ5NjMsIDB4MGY3ZiwgMHgwMDQwLCAweDhmYjksIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MTA3OSwKLQkweDhmYmIsIDB4MGM3ZiwgMHgwMDdjLCAweDhhZTUsIDB4OGZjNiwgMHg4ZmM5LCAweDhmY2MsIDB4YTI2ZCwKLQkweGEyODksIDB4YTI4YywgMHg4YWU1LCAweDhhZTUsIDB4MTA3OCwgMHgxMzMyLCAweDAwMDUsIDB4MDAwNSwKLQkweDAwN2MsIDB4MDAwNSwgMHgwMDA1LCAweDAwN2MsIDB4MTA3OCwgMHg4ZmNmLCAweDAwN2MsIDB4MGY3ZSwKLQkweDJjNzgsIDB4MTA3OCwgMHg0OTYzLCAweDAwNDAsIDB4OGZmZSwgMHgxMDc4LCAweDc2YzcsIDB4MDBjMCwKLQkweDhmZGYsIDB4MjAwMSwgMHhhOWE0LCAweDIwMDQsIDB4NzgzZSwgMHgwMDc4LCAweDhmZmUsIDB4NzgxOCwKLQkweDYwMWEsIDB4NzgxYywgMHhhMDg2LCAweDAwMDMsIDB4MDA0MCwgMHg4ZmVjLCAweDc4MDgsIDB4NjAzNiwKLQkweDJmMDAsIDB4NjAzYSwgMHgwMDc4LCAweDhmZjAsIDB4NzgwOCwgMHg2MDNhLCAweDJmMDAsIDB4NjAzNiwKLQkweDYwMmEsIDB4NjAxZiwgMHgwMDAxLCAweDYwMDcsIDB4MDAzNSwgMHg2MDAzLCAweDAwMDEsIDB4NzkyMCwKLQkweDYxMjIsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgyZjYwLCAweDBmN2YsIDB4MDA3YywKLQkweDAxN2UsIDB4MGY3ZSwgMHg2ODJjLCAweDYwMzIsIDB4YTA4ZSwgMHgwMDAxLCAweDAwNDAsIDB4OTAxMSwKLQkweGEwODYsIDB4MDAwNSwgMHgwMDQwLCAweDkwMTUsIDB4YTAwNiwgMHg2MDJhLCAweDYwMmUsIDB4MDA3OCwKLQkweDkwMjYsIDB4NjgyNCwgMHhjMGY0LCAweGMwZDUsIDB4NjgyNiwgMHg2ODEwLCAweDIwNzgsIDB4Nzg3YywKLQkweDY5MzgsIDB4YTEwMiwgMHg3ODgwLCAweDY5MzQsIDB4YTEwMywgMHgwMGM4LCAweDkwMGMsIDB4NjgzNCwKLQkweDYwMmEsIDB4NjgzOCwgMHhhMDg0LCAweGZmZmMsIDB4NjgzYSwgMHg2MDJlLCAweDJkMDAsIDB4NjAzNiwKLQkweDY4MDgsIDB4NjAzYSwgMHg2OTE4LCAweDYxMWEsIDB4NjkyMCwgMHg2MTIyLCAweDYwMWYsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAzOSwgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwgMHg1ZDhhLCAweDY4MDMsIDB4MDAwMiwKLQkweDBmN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MDE3ZSwgMHg2MDA0LCAweGEwOGUsIDB4MDAzNCwKLQkweDAwNDAsIDB4OTA2MCwgMHhhMDhlLCAweDAwMzUsIDB4MDA0MCwgMHg5MDYwLCAweGEwOGUsIDB4MDAzNiwKLQkweDAwNDAsIDB4OTA2MCwgMHhhMDhlLCAweDAwMzcsIDB4MDA0MCwgMHg5MDYwLCAweGEwOGUsIDB4MDAzOCwKLQkweDAwNDAsIDB4OTA2MCwgMHhhMDhlLCAweDAwMzksIDB4MDA0MCwgMHg5MDYwLCAweGEwOGUsIDB4MDAzYSwKLQkweDAwNDAsIDB4OTA2MCwgMHhhMDhlLCAweDAwM2IsIDB4MDA0MCwgMHg5MDYwLCAweGEwODUsIDB4MDAwMSwKLQkweDAxN2YsIDB4MDA3ZiwgMHgwMDdjLCAweDBmN2UsIDB4MmM3OCwgMHgxMDc4LCAweDQ5NjMsIDB4MDBjMCwKLQkweDkwNmQsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4OTA3YywgMHg2MDI0LCAweGQwZjQsIDB4MDBjMCwKLQkweDkwN2IsIDB4YzBmNSwgMHg2MDI2LCAweDYwMTAsIDB4MjA3OCwgMHg3ODI4LCAweDYwM2EsIDB4NzgyYywKLQkweDYwMzYsIDB4MTA3OCwgMHgxNzU3LCAweGEwMDYsIDB4MGY3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MDE3ZSwKLQkweDAyN2UsIDB4MDM3ZSwgMHgwZTdlLCAweDIwMDEsIDB4YTk5ZSwgMHgyMDBjLCAweDgwMDAsIDB4MjAxNCwKLQkweDIwMDEsIDB4MDAzMiwgMHgxMDc4LCAweDVjMWMsIDB4MjAwMSwgMHhhOWEyLCAweDgyZmYsIDB4MDBjMCwKLQkweDkwOTMsIDB4MjAxMSwgMHgwMDE0LCAweDIyMDIsIDB4MjAwMSwgMHhhOWEwLCAweDIwMGMsIDB4ODAwMCwKLQkweDIwMTQsIDB4MjA3MSwgMHhhOThkLCAweDcxMWEsIDB4NzIxZSwgMHgyMDAxLCAweDAwNjQsIDB4MTA3OCwKLQkweDVjMWMsIDB4MjAwMSwgMHhhOWEzLCAweDgyZmYsIDB4MDBjMCwgMHg5MGE4LCAweDIwMTEsIDB4MDAxNCwKLQkweDIyMDIsIDB4MjAwOSwgMHhhOWE0LCAweGEyODAsIDB4MDAwYSwgMHgyMDBhLCAweDEwNzgsIDB4NDk4YiwKLQkweDBlN2YsIDB4MDM3ZiwgMHgwMjdmLCAweDAxN2YsIDB4MDA3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MGU3ZSwKLQkweDIwMDEsIDB4YTlhMiwgMHgyMDAzLCAweDAwMjgsIDB4MjAwMSwgMHhhOWEzLCAweDIwMDMsIDB4MDAxNCwKLQkweDIwNzEsIDB4YTk4ZCwgMHg3MDFiLCAweDAwMDAsIDB4NzAxZiwgMHgwN2QwLCAweDIwMDEsIDB4YTlhNCwKLQkweDIwMDMsIDB4MDAxZSwgMHgwZTdmLCAweDAwN2YsIDB4MDA3YywgMHgwYzdlLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MGM3ZSwgMHgxMDc4LCAweDc2YzcsIDB4MDE3ZiwgMHgwMDQwLCAweDkwZTUsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwMSwgMHgyZDAwLCAweDYwMTIsIDB4MjAwOSwgMHgwMDMzLCAweDEwNzgsIDB4Nzc1YywKLQkweGEwODUsIDB4MDAwMSwgMHgxMjdmLCAweDBjN2YsIDB4MDA3YywgMHhhMDA2LCAweDAwNzgsIDB4OTBlMiwKLQkweDBkN2UsIDB4MGU3ZSwgMHgwZjdlLCAweDIwNzEsIDB4YTcwMCwgMHhhMTg2LCAweDAwMTUsIDB4MDBjMCwKLQkweDkxMTcsIDB4NzA4MCwgMHhhMDg2LCAweDAwMTgsIDB4MDBjMCwgMHg5MTE3LCAweDYwMTAsIDB4MjA2OCwKLQkweDZhM2MsIDB4ZDJlNCwgMHgwMGMwLCAweDkxMGIsIDB4MmM3OCwgMHgxMDc4LCAweDY0OTAsIDB4MDA0MCwKLQkweDkxMWYsIDB4NzA2YywgMHg2YTUwLCAweGEyMDYsIDB4MDBjMCwgMHg5MTEzLCAweDcwNzAsIDB4NmE1NCwKLQkweGEyMDYsIDB4MDBjMCwgMHg5MTEzLCAweDYyMTgsIDB4YTI5MCwgMHgwMDI4LCAweDIyMTQsIDB4MjAwOSwKLQkweDAwMDAsIDB4MTA3OCwgMHgyOGM4LCAweDEwNzgsIDB4NzdmOCwgMHgwMDc4LCAweDkxMWIsIDB4MTA3OCwKLQkweDdjODMsIDB4MTA3OCwgMHg3NzJkLCAweDBmN2YsIDB4MGU3ZiwgMHgwZDdmLCAweDAwN2MsIDB4NzA1MCwKLQkweGEwODAsIDB4MjljMCwgMHgyMDA0LCAweDZhNTQsIDB4YTIwNiwgMHgwMDQwLCAweDkxMGIsIDB4MDA3OCwKLQkweDkxMTMsIDB4MGM3ZSwgMHgxMjdlLCAweDIwOTEsIDB4ODAwMCwgMHgwYzdlLCAweDEwNzgsIDB4NzZjNywKLQkweDAxN2YsIDB4MDA0MCwgMHg5MTQxLCAweDYxMWEsIDB4NjAxZiwgMHgwMDAxLCAweDJkMDAsIDB4NjAxMiwKLQkweDIwMDksIDB4MDA0MywgMHgxMDc4LCAweDc3NWMsIDB4YTA4NSwgMHgwMDAxLCAweDEyN2YsIDB4MGM3ZiwKLQkweDAwN2MsIDB4YTAwNiwgMHgwMDc4LCAweDkxM2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDBmN2UsIDB4MjA3MSwKLQkweGE3MDAsIDB4YTE4NiwgMHgwMDE1LCAweDAwYzAsIDB4OTE2YSwgMHg3MDgwLCAweGEwODYsIDB4MDAwNCwKLQkweDAwYzAsIDB4OTE2YSwgMHg2MDEwLCAweGEwZTgsIDB4MDAwZiwgMHgyYzc4LCAweDEwNzgsIDB4NjQ5MCwKLQkweDAwNDAsIDB4OTE3MiwgMHg3MDZjLCAweDZhMDgsIDB4YTIwNiwgMHgwMGMwLCAweDkxNjYsIDB4NzA3MCwKLQkweDZhMGMsIDB4YTIwNiwgMHgwMGMwLCAweDkxNjYsIDB4MTA3OCwgMHgyODgwLCAweDEwNzgsIDB4NzdmOCwKLQkweDAwNzgsIDB4OTE2ZSwgMHgxMDc4LCAweDdjODMsIDB4MTA3OCwgMHg3NzJkLCAweDBmN2YsIDB4MGU3ZiwKLQkweDBkN2YsIDB4MDA3YywgMHg3MDUwLCAweGEwODAsIDB4MjljMCwgMHgyMDA0LCAweDZhMGMsIDB4YTIwNiwKLQkweDAwNDAsIDB4OTE2NCwgMHgwMDc4LCAweDkxNjYsIDB4MDE3ZSwgMHgwMjdlLCAweDY4NGMsIDB4ZDBhYywKLQkweDAwNDAsIDB4OTE5NCwgMHg2OTE0LCAweDZhMTAsIDB4MjEwMCwgMHhhMjA1LCAweDAwNDAsIDB4OTE5NCwKLQkweDY4NjAsIDB4YTEwNiwgMHgwMGMwLCAweDkxOTAsIDB4Njg1YywgMHhhMjA2LCAweDAwNDAsIDB4OTE5NCwKLQkweDY5NjIsIDB4NmE1ZSwgMHhhMDg1LCAweDAwMDEsIDB4MDI3ZiwgMHgwMTdmLCAweDAwN2MsIDB4MGU3ZSwKLQkweDEyN2UsIDB4MjA3MSwgMHhhNzAwLCAweDIwOTEsIDB4ODAwMCwgMHg3NTQ4LCAweGE1ODIsIDB4MDAwMSwKLQkweDAwNDgsIDB4OTFjOSwgMHg3MDRjLCAweDIwNjAsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDAsIDB4MDA0MCwKLQkweDkxYjUsIDB4YWNlMCwgMHgwMDEwLCAweDcwNTgsIDB4YWMwMiwgMHgwMGM4LCAweDkxYjEsIDB4MDA3OCwKLQkweDkxYTQsIDB4MjA2MSwgMHhhZTAwLCAweDAwNzgsIDB4OTFhNCwgMHg2MDAzLCAweDAwMDgsIDB4ODUyOSwKLQkweDc1NGEsIDB4YWNhOCwgMHgwMDEwLCAweDcwNTgsIDB4YTUwMiwgMHgwMGM4LCAweDkxYzUsIDB4NzU0ZSwKLQkweGEwODUsIDB4MDAwMSwgMHgxMjdmLCAweDBlN2YsIDB4MDA3YywgMHg3MDRmLCAweGFlMDAsIDB4MDA3OCwKLQkweDkxYzAsIDB4YTAwNiwgMHgwMDc4LCAweDkxYzIsIDB4MGM3ZSwgMHgwMjdlLCAweDAxN2UsIDB4YTE4NiwKLQkweDAwMzUsIDB4MDA0MCwgMHg5MWQ2LCAweDZhMzQsIDB4MDA3OCwgMHg5MWQ3LCAweDZhMjgsIDB4MTA3OCwKLQkweDhkMDIsIDB4MDA0MCwgMHg5MjAwLCAweDIyNjAsIDB4NjExYywgMHhhMTg2LCAweDAwMDMsIDB4MDA0MCwKLQkweDkxZTUsIDB4YTE4NiwgMHgwMDA2LCAweDAwYzAsIDB4OTFmYywgMHg2ODM0LCAweGEyMDYsIDB4MDA0MCwKLQkweDkxZjQsIDB4NjgzOCwgMHhhMjA2LCAweDAwYzAsIDB4OTFmYywgMHg2MTA4LCAweDY4MzQsIDB4YTEwNiwKLQkweDAwYzAsIDB4OTFmYywgMHgwMDc4LCAweDkxZjksIDB4NjAwOCwgMHg2OTM4LCAweGExMDYsIDB4MDBjMCwKLQkweDkxZmMsIDB4NjAxOCwgMHg2OTE4LCAweGExMDYsIDB4MDE3ZiwgMHgwMjdmLCAweDBjN2YsIDB4MDA3YywKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDkxZmMsIDB4Njk0NCwgMHhkMWNjLCAweDAwNDAsIDB4OTIxZCwKLQkweGExOGMsIDB4MDBmZiwgMHhhMThlLCAweDAwMDIsIDB4MDBjMCwgMHg5MjFkLCAweGFkODgsIDB4MDAxZSwKLQkweDIxMGMsIDB4YTE4YywgMHgwZjAwLCAweDgxMGYsIDB4YTE4ZSwgMHgwMDAxLCAweDAwYzAsIDB4OTIxZCwKLQkweDY4MTAsIDB4NjkxNCwgMHhhMTE1LCAweDEwYzAsIDB4ODRlMiwgMHgwMDdjLCAweDA2N2UsIDB4NjAwMCwKLQkweGEwYjIsIDB4MDAxMCwgMHgxMGM4LCAweDEzMzIsIDB4MTA3OSwgMHg5MjI4LCAweDA2N2YsIDB4MDA3YywKLQkweDkyMzgsIDB4OTZlZiwgMHg5ODBiLCAweDkyMzgsIDB4OTIzOCwgMHg5MjM4LCAweDkyMzgsIDB4OTIzOCwKLQkweDkyNzIsIDB4OTg5ZSwgMHg5MjM4LCAweDkyMzgsIDB4OTIzOCwgMHg5MjM4LCAweDkyMzgsIDB4OTIzOCwKLQkweDEwNzgsIDB4MTMzMiwgMHgwNjdlLCAweDYwMDAsIDB4YTBiMiwgMHgwMDEwLCAweDEwYzgsIDB4MTMzMiwKLQkweDEwNzksIDB4OTI0NCwgMHgwNjdmLCAweDAwN2MsIDB4OTI1NCwgMHg5ZDYzLCAweDkyNTQsIDB4OTI1NCwKLQkweDkyNTQsIDB4OTI1NCwgMHg5MjU0LCAweDkyNTQsIDB4OWQyMSwgMHg5ZGIxLCAweDkyNTQsIDB4YTNjMCwKLQkweGEzZjQsIDB4YTNjMCwgMHhhM2Y0LCAweDkyNTQsIDB4MTA3OCwgMHgxMzMyLCAweDA2N2UsIDB4NjAwMCwKLQkweGEwYjIsIDB4MDAxMCwgMHgxMGM4LCAweDEzMzIsIDB4MTA3OSwgMHg5MjYwLCAweDA2N2YsIDB4MDA3YywKLQkweDkyNzAsIDB4OTlmYiwgMHg5YWQ3LCAweDliMDUsIDB4OWI4MCwgMHg5MjcwLCAweDljODYsIDB4OWMyZSwKLQkweDk4YWEsIDB4OWNmNSwgMHg5ZDBiLCAweDkyNzAsIDB4OTI3MCwgMHg5MjcwLCAweDkyNzAsIDB4OTI3MCwKLQkweDEwNzgsIDB4MTMzMiwgMHhhMWIyLCAweDAwNDQsIDB4MTBjOCwgMHgxMzMyLCAweDIxMDAsIDB4MDA3OSwKLQkweDkyNzksIDB4OTJiOSwgMHg5NGE4LCAweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDk0YjAsIDB4OTJiOSwKLQkweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwKLQkweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwKLQkweDkyYmIsIDB4OTMyMSwgMHg5MzMwLCAweDkzODcsIDB4OTNhNiwgMHg5NDI1LCAweDk0OTUsIDB4OTJiOSwKLQkweDkyYjksIDB4OTRiNCwgMHg5MmI5LCAweDkyYjksIDB4OTRjNywgMHg5NGQyLCAweDkyYjksIDB4OTJiOSwKLQkweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDk1MGEsIDB4OTJiOSwgMHg5MmI5LCAweDk1MTksIDB4OTJiOSwKLQkweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwgMHg5NTMyLCAweDkyYjksIDB4OTJiOSwKLQkweDkyYjksIDB4OTViZiwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwgMHg5MmI5LCAweDkyYjksIDB4OTJiOSwKLQkweDk2MzksIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4NDk2NywgMHgwMGMwLCAweDkyY2IsIDB4MjAwMSwKLQkweGE3MzMsIDB4MjAwNCwgMHhkMGNjLCAweDAwYzAsIDB4OTJjYiwgMHhhMDg0LCAweDAwMDksIDB4YTA4NiwKLQkweDAwMDgsIDB4MDBjMCwgMHg5MmQzLCAweDYwMDcsIDB4MDAwOSwgMHg2MDJiLCAweDAwMDksIDB4NjAxMywKLQkweDAwMDAsIDB4MDA3OCwgMHg5NGEzLCAweDEwNzgsIDB4NDk1NywgMHgwZTdlLCAweDBjN2UsIDB4MDM3ZSwKLQkweDAyN2UsIDB4MDE3ZSwgMHg2MjE4LCAweDIyNzAsIDB4NzJhMCwgMHgwMjdlLCAweDIwMTksIDB4MDAyOSwKLQkweDEwNzgsIDB4NWYwMSwgMHgwNzdlLCAweDIwMzksIDB4MDAwMCwgMHgxMDc4LCAweDVlMGEsIDB4MmMwOCwKLQkweDEwNzgsIDB4OWY5YiwgMHgwNzdmLCAweDAxN2YsIDB4MmU2MCwgMHgxMDc4LCAweDQ3ZTksIDB4MDE3ZiwKLQkweDAyN2YsIDB4MDM3ZiwgMHgwYzdmLCAweDBlN2YsIDB4NjYxOCwgMHgwYzdlLCAweDI2NjAsIDB4MTA3OCwKLQkweDQ1ZDYsIDB4MGM3ZiwgMHhhNmIwLCAweDAwMDEsIDB4MjYzNCwgMHhhNjg0LCAweDAwZmYsIDB4YTA4MiwKLQkweDAwMDYsIDB4MDA0OCwgMHg5MzEzLCAweDEwNzgsIDB4OWVjZiwgMHgwMGMwLCAweDkzODEsIDB4MTA3OCwKLQkweDllNjAsIDB4MDBjMCwgMHg5MzBmLCAweDYwMDcsIDB4MDAwOCwgMHgwMDc4LCAweDk0YTMsIDB4NjAwNywKLQkweDAwMDksIDB4MDA3OCwgMHg5NGEzLCAweDEwNzgsIDB4YTBhZiwgMHgwMDQwLCAweDkzMWQsIDB4MTA3OCwKLQkweDllY2YsIDB4MDA0MCwgMHg5MzA3LCAweDAwNzgsIDB4OTM4MSwgMHg2MDEzLCAweDE5MDAsIDB4MDA3OCwKLQkweDkzMGYsIDB4MTA3OCwgMHgyOWJiLCAweDAwYzAsIDB4OTY3NCwgMHg2MTA2LCAweDEwNzgsIDB4OWUxNSwKLQkweDYwMDcsIDB4MDAwNiwgMHgwMDc4LCAweDk0YTMsIDB4NjAwNywgMHgwMDA3LCAweDAwNzgsIDB4OTRhMywKLQkweDEwNzgsIDB4YTQyYywgMHgwMGMwLCAweDk2NzQsIDB4MTA3OCwgMHgyOWJiLCAweDAwYzAsIDB4OTY3NCwKLQkweDBkN2UsIDB4NjYxOCwgMHgyNjY4LCAweDZlMDQsIDB4YTY4NCwgMHgwMGZmLCAweGEwODIsIDB4MDAwNiwKLQkweDAwYzgsIDB4OTM0NiwgMHgyMDAxLCAweDAwMDEsIDB4MTA3OCwgMHg0NGVlLCAweGE2YjQsIDB4ZmYwMCwKLQkweDg2MzcsIDB4YTY4NiwgMHgwMDA2LCAweDAwNDAsIDB4OTM2MywgMHhhNjg2LCAweDAwMDQsIDB4MDA0MCwKLQkweDkzNjMsIDB4NmUwNCwgMHhhNmI0LCAweDAwZmYsIDB4YTY4NiwgMHgwMDA2LCAweDAwNDAsIDB4OTM2MywKLQkweGE2ODYsIDB4MDAwNCwgMHgwMDQwLCAweDkzNjMsIDB4YTY4NiwgMHgwMDA1LCAweDAwNDAsIDB4OTM2MywKLQkweDBkN2YsIDB4MDA3OCwgMHg5MzgxLCAweDEwNzgsIDB4OWYzNSwgMHgwMGMwLCAweDkzN2MsIDB4YTY4NiwKLQkweDAwMDYsIDB4MDBjMCwgMHg5Mzc1LCAweDAyN2UsIDB4NjIxOCwgMHhhMjkwLCAweDAwMjgsIDB4MjIxNCwKLQkweDIwMDksIDB4MDAwMCwgMHgxMDc4LCAweDI4YzgsIDB4MDI3ZiwgMHgxMDc4LCAweDQ2NDksIDB4NjAwNywKLQkweDAwMGEsIDB4MGQ3ZiwgMHgwMDc4LCAweDk0YTMsIDB4NjAwNywgMHgwMDBiLCAweDBkN2YsIDB4MDA3OCwKLQkweDk0YTMsIDB4MTA3OCwgMHgyODgwLCAweDYwMDcsIDB4MDAwMSwgMHgwMDc4LCAweDk0YTMsIDB4MTA3OCwKLQkweGE0MmMsIDB4MDBjMCwgMHg5Njc0LCAweDEwNzgsIDB4MjliYiwgMHgwMGMwLCAweDk2NzQsIDB4NjYxOCwKLQkweDBkN2UsIDB4MjY2OCwgMHg2ZTA0LCAweDBkN2YsIDB4YTY4NiwgMHgwNzA3LCAweDAwNDAsIDB4OTM4MSwKLQkweDAyN2UsIDB4NjIxOCwgMHhhMjkwLCAweDAwMjgsIDB4MjIxNCwgMHgyMDA5LCAweDAwMDAsIDB4MTA3OCwKLQkweDI4YzgsIDB4MDI3ZiwgMHg2MDA3LCAweDAwMGMsIDB4MDA3OCwgMHg5NGEzLCAweDEwNzgsIDB4NDk2NywKLQkweDAwYzAsIDB4OTNiMywgMHgyMDAxLCAweGE3MzMsIDB4MjAwNCwgMHhhMDg0LCAweDAwMDksIDB4YTA4NiwKLQkweDAwMDgsIDB4MDBjMCwgMHg5M2JiLCAweDYwMDcsIDB4MDAwOSwgMHg2MDJiLCAweDAwMDksIDB4NjAxMywKLQkweDAwMDAsIDB4MDA3OCwgMHg5NGEzLCAweDEwNzgsIDB4NDk1NywgMHg2NjE4LCAweGE2YjAsIDB4MDAwMSwKLQkweDI2MzQsIDB4YTY4NCwgMHgwMGZmLCAweGEwODIsIDB4MDAwNiwgMHgwMDQ4LCAweDkzZmYsIDB4YTZiNCwKLQkweGZmMDAsIDB4ODYzNywgMHhhNjg2LCAweDAwMDQsIDB4MDA0MCwgMHg5M2QyLCAweGE2ODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4OTM4MSwgMHgxMDc4LCAweDlmNDQsIDB4MDBjMCwgMHg5M2RhLCAweDYwMDcsIDB4MDAwZSwKLQkweDAwNzgsIDB4OTRhMywgMHgwNDdlLCAweDY0MTgsIDB4YTRhMCwgMHgwMDI4LCAweDI0MjQsIDB4YTRhNCwKLQkweDAwZmYsIDB4ODQyNywgMHgwNDdlLCAweDEwNzgsIDB4Mjg4MCwgMHgwNDdmLCAweDAxN2UsIDB4YTAwNiwKLQkweDIwMDksIDB4YTc1MywgMHgyMTBjLCAweGQxYTQsIDB4MDA0MCwgMHg5M2Y5LCAweDIwMDksIDB4MDAyOSwKLQkweDEwNzgsIDB4YTIyZCwgMHg2MDE4LCAweDBkN2UsIDB4MjA2OCwgMHg2ODAwLCAweGMwZTUsIDB4NjgwMiwKLQkweDBkN2YsIDB4MDE3ZiwgMHgwNDdmLCAweDYwMDcsIDB4MDAwMSwgMHgwMDc4LCAweDk0YTMsIDB4MjAwMSwKLQkweDAwMDEsIDB4MTA3OCwgMHg0NGVlLCAweDE1N2UsIDB4MDE3ZSwgMHgwMjdlLCAweDAzN2UsIDB4MjBhOSwKLQkweDAwMDQsIDB4MjAxOSwgMHhhNzA1LCAweDIwMTEsIDB4YWM5MCwgMHgxMDc4LCAweDgwZGUsIDB4MDM3ZiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgxNTdmLCAweGEwMDUsIDB4MDA0MCwgMHg5NDFmLCAweGE2YjQsIDB4ZmYwMCwKLQkweDg2MzcsIDB4YTY4NiwgMHgwMDA2LCAweDAwNDAsIDB4OTNkMiwgMHgwMDc4LCAweDkzODEsIDB4NjAxMywKLQkweDE5MDAsIDB4NjAwNywgMHgwMDA5LCAweDAwNzgsIDB4OTRhMywgMHgxMDc4LCAweDQ5NjcsIDB4MDBjMCwKLQkweDk0MzIsIDB4MjAwMSwgMHhhNzMzLCAweDIwMDQsIDB4YTA4NCwgMHgwMDA5LCAweGEwODYsIDB4MDAwOCwKLQkweDAwYzAsIDB4OTQzYSwgMHg2MDA3LCAweDAwMDksIDB4NjAyYiwgMHgwMDA5LCAweDYwMTMsIDB4MDAwMCwKLQkweDAwNzgsIDB4OTRhMywgMHgxMDc4LCAweDQ5NTcsIDB4NjYxOCwgMHhhNmIwLCAweDAwMDEsIDB4MjYzNCwKLQkweGE2ODQsIDB4MDBmZiwgMHhhMDgyLCAweDAwMDYsIDB4MDA0OCwgMHg5NDgyLCAweGE2YjQsIDB4ZmYwMCwKLQkweDg2MzcsIDB4YTY4NiwgMHgwMDA0LCAweDAwNDAsIDB4OTQ1MSwgMHhhNjg2LCAweDAwMDYsIDB4MDBjMCwKLQkweDkzODEsIDB4MTA3OCwgMHg5ZjZmLCAweDAwYzAsIDB4OTQ1ZCwgMHgxMDc4LCAweDllNjAsIDB4MDBjMCwKLQkweDk0NWQsIDB4NjAwNywgMHgwMDEwLCAweDAwNzgsIDB4OTRhMywgMHgwNDdlLCAweDY0MTgsIDB4YTRhMCwKLQkweDAwMjgsIDB4MjQyNCwgMHhhNGE0LCAweDAwZmYsIDB4ODQyNywgMHgwNDdlLCAweDEwNzgsIDB4Mjg4MCwKLQkweDA0N2YsIDB4MDE3ZSwgMHhhMDA2LCAweDIwMDksIDB4YTc1MywgMHgyMTBjLCAweGQxYTQsIDB4MDA0MCwKLQkweDk0N2MsIDB4MjAwOSwgMHgwMDI5LCAweDEwNzgsIDB4YTIyZCwgMHg2MDE4LCAweDBkN2UsIDB4MjA2OCwKLQkweDY4MDAsIDB4YzBlNSwgMHg2ODAyLCAweDBkN2YsIDB4MDE3ZiwgMHgwNDdmLCAweDYwMDcsIDB4MDAwMSwKLQkweDAwNzgsIDB4OTRhMywgMHgxMDc4LCAweGEwYWYsIDB4MDA0MCwgMHg5NDhmLCAweGE2YjQsIDB4ZmYwMCwKLQkweDg2MzcsIDB4YTY4NiwgMHgwMDA2LCAweDAwNDAsIDB4OTQ1MSwgMHgwMDc4LCAweDkzODEsIDB4NjAxMywKLQkweDE5MDAsIDB4NjAwNywgMHgwMDA5LCAweDAwNzgsIDB4OTRhMywgMHgxMDc4LCAweDI5YmIsIDB4MDBjMCwKLQkweDk2NzQsIDB4MTA3OCwgMHhhNDJjLCAweDAwYzAsIDB4OTY3NCwgMHgxMDc4LCAweDk2NzcsIDB4MDBjMCwKLQkweDkzODEsIDB4NjAwNywgMHgwMDEyLCAweDYwMDMsIDB4MDAwMSwgMHgxMDc4LCAweDVkZDcsIDB4MDA3YywKLQkweDYwMDcsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwgMHg1ZGQ3LCAweDAwNzgsIDB4OTRhNywKLQkweDYwMDcsIDB4MDAwNSwgMHgwMDc4LCAweDk0YWEsIDB4MTA3OCwgMHhhNDJjLCAweDAwYzAsIDB4OTY3NCwKLQkweDEwNzgsIDB4MjliYiwgMHgwMGMwLCAweDk2NzQsIDB4MTA3OCwgMHg5Njc3LCAweDAwYzAsIDB4OTM4MSwKLQkweDYwMDcsIDB4MDAyMCwgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwgMHg1ZGQ3LCAweDAwN2MsIDB4MTA3OCwKLQkweDI5YmIsIDB4MDBjMCwgMHg5Njc0LCAweDYwMDcsIDB4MDAyMywgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwKLQkweDVkZDcsIDB4MDA3YywgMHgxMDc4LCAweGE0MmMsIDB4MDBjMCwgMHg5Njc0LCAweDEwNzgsIDB4MjliYiwKLQkweDAwYzAsIDB4OTY3NCwgMHgxMDc4LCAweDk2NzcsIDB4MDBjMCwgMHg5MzgxLCAweDAxN2UsIDB4MDI3ZSwKLQkweDIwMTEsIDB4YWM5MCwgMHgyMjE0LCAweDJjMDgsIDB4YTAwNiwgMHgxMDc4LCAweGExZjYsIDB4MDBjMCwKLQkweDk0ZjksIDB4MjE2MCwgMHg2MDA3LCAweDAwMjYsIDB4NjAxMywgMHgxNzAwLCAweDIwMTEsIDB4YWM4OSwKLQkweDIyMTQsIDB4YTI5NiwgMHhmZmZmLCAweDAwYzAsIDB4OTUwMywgMHg2MDA3LCAweDAwMjUsIDB4MDA3OCwKLQkweDk1MDMsIDB4NjAwNCwgMHhhMDg2LCAweDAwMjQsIDB4MDBjMCwgMHg5NTAwLCAweDEwNzgsIDB4NzcyZCwKLQkweDIxNjAsIDB4NjAwNywgMHgwMDI1LCAweDYwMDMsIDB4MDAwMSwgMHgxMDc4LCAweDVkZDcsIDB4MDI3ZiwKLQkweDAxN2YsIDB4MDA3YywgMHgxMDc4LCAweDI5YmIsIDB4MDBjMCwgMHg5Njc0LCAweDYxMDYsIDB4MTA3OCwKLQkweDk2OTcsIDB4NjAwNywgMHgwMDJiLCAweDAwNzgsIDB4OTRhMywgMHg2MDA3LCAweDAwMmMsIDB4MDA3OCwKLQkweDk0YTMsIDB4MTA3OCwgMHhhNDJjLCAweDAwYzAsIDB4OTY3NCwgMHgxMDc4LCAweDI5YmIsIDB4MDBjMCwKLQkweDk2NzQsIDB4MTA3OCwgMHg5Njc3LCAweDAwYzAsIDB4OTM4MSwgMHg2MTA2LCAweDEwNzgsIDB4OTY5YywKLQkweDAwYzAsIDB4OTUyZSwgMHg2MDA3LCAweDAwMmUsIDB4MDA3OCwgMHg5NGEzLCAweDYwMDcsIDB4MDAyZiwKLQkweDAwNzgsIDB4OTRhMywgMHgxMDc4LCAweDI5YmIsIDB4MDBjMCwgMHg5Njc0LCAweDBlN2UsIDB4MGQ3ZSwKLQkweDBjN2UsIDB4NjAxOCwgMHhhMDgwLCAweDAwMDEsIDB4MjAwYywgMHhhMTg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDA0MCwgMHg5NTRmLCAweGExODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwODYsIDB4MDAwNiwKLQkweDAwNDAsIDB4OTU0ZiwgMHgwYzdmLCAweDBkN2YsIDB4MGU3ZiwgMHgwMDc4LCAweDk0YTgsIDB4MjAwMSwKLQkweGE3NzIsIDB4MjAwNCwgMHhkMGU0LCAweDAwNDAsIDB4OTViYiwgMHgyMDcxLCAweGFjOGMsIDB4NzAxMCwKLQkweDYwMzYsIDB4NzAxNCwgMHg2MDNhLCAweDcxMDgsIDB4NzIwYywgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYTQsIDB4MDA0MCwgMHg5NTZkLCAweDYwMTgsIDB4MjA2OCwgMHg2ODEwLCAweGExMDYsIDB4MDBjMCwKLQkweDk1NmQsIDB4NjgxNCwgMHhhMjA2LCAweDAwNDAsIDB4OTU5MSwgMHgyMDAxLCAweGE3NTMsIDB4MjAwNCwKLQkweGQwYWMsIDB4MDBjMCwgMHg5NWFmLCAweDIwNjksIDB4YTcwMCwgMHg2ODcwLCAweGEyMDYsIDB4MDBjMCwKLQkweDk1YWYsIDB4Njg2YywgMHhhMTA2LCAweDAwYzAsIDB4OTVhZiwgMHg3MjEwLCAweDEwNzgsIDB4OGQwMiwKLQkweDAwNDAsIDB4OTViNSwgMHgxMDc4LCAweGEyOWUsIDB4MDA0MCwgMHg5NWI1LCAweDYyMmEsIDB4NjAwNywKLQkweDAwMzYsIDB4NjAwMywgMHgwMDAxLCAweDEwNzgsIDB4NWQ4YSwgMHgwYzdmLCAweDBkN2YsIDB4MGU3ZiwKLQkweDAwN2MsIDB4NzIxNCwgMHhhMjg2LCAweGZmZmYsIDB4MDA0MCwgMHg5NWEzLCAweDEwNzgsIDB4OGQwMiwKLQkweDAwNDAsIDB4OTViNSwgMHhhMjgwLCAweDAwMDIsIDB4MjAwNCwgMHg3MTEwLCAweGExMDYsIDB4MDBjMCwKLQkweDk1YjUsIDB4MDA3OCwgMHg5NTdlLCAweDcyMTAsIDB4MmMwOCwgMHhhMDg1LCAweDAwMDEsIDB4MTA3OCwKLQkweGExZjYsIDB4MmMxMCwgMHgyMTYwLCAweDAwNDAsIDB4OTViNSwgMHgwMDc4LCAweDk1N2UsIDB4NjAwNywKLQkweDAwMzcsIDB4NjAxMywgMHgxNTAwLCAweDAwNzgsIDB4OTU4OSwgMHg2MDA3LCAweDAwMzcsIDB4NjAxMywKLQkweDE3MDAsIDB4MDA3OCwgMHg5NTg5LCAweDYwMDcsIDB4MDAxMiwgMHgwMDc4LCAweDk1ODksIDB4MTA3OCwKLQkweDI5YmIsIDB4MDBjMCwgMHg5Njc0LCAweDYwMTgsIDB4YTA4MCwgMHgwMDAxLCAweDIwMDQsIDB4YTA4NCwKLQkweGZmMDAsIDB4ODAwNywgMHhhMDg2LCAweDAwMDYsIDB4MDBjMCwgMHg5NGE4LCAweDBlN2UsIDB4MGQ3ZSwKLQkweDBjN2UsIDB4MjAwMSwgMHhhNzcyLCAweDIwMDQsIDB4ZDBlNCwgMHgwMDQwLCAweDk2MzEsIDB4MjA2OSwKLQkweGE3MDAsIDB4MjA3MSwgMHhhYzhjLCAweDcwMDgsIDB4NjAzNiwgMHg3MjBjLCAweDYyM2EsIDB4YTI4NiwKLQkweGZmZmYsIDB4MDBjMCwgMHg5NWVlLCAweDcyMDgsIDB4MGM3ZSwgMHgyYzA4LCAweGEwODUsIDB4MDAwMSwKLQkweDEwNzgsIDB4YTFmNiwgMHgyYzEwLCAweDBjN2YsIDB4MDA0MCwgMHg5NjI1LCAweDEwNzgsIDB4OGQwMiwKLQkweDAwNDAsIDB4OTYyNSwgMHgwYzdlLCAweDAyN2UsIDB4MjI2MCwgMHgxMDc4LCAweDhhMDMsIDB4MDI3ZiwKLQkweDBjN2YsIDB4NzExOCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHhhMTg2LCAweDAwMDEsIDB4MDA0MCwKLQkweDk2MGYsIDB4YTE4NiwgMHgwMDA1LCAweDAwNDAsIDB4OTYwOSwgMHhhMTg2LCAweDAwMDcsIDB4MDBjMCwKLQkweDk2MTksIDB4YTI4MCwgMHgwMDA0LCAweDIwMDQsIDB4YTAwNSwgMHgwMDQwLCAweDk2MTksIDB4MDU3ZSwKLQkweDc1MTAsIDB4NzYxNCwgMHgxMDc4LCAweGEyYjMsIDB4MDU3ZiwgMHgwYzdmLCAweDBkN2YsIDB4MGU3ZiwKLQkweDAwN2MsIDB4NjAwNywgMHgwMDNiLCAweDYwMmIsIDB4MDAwOSwgMHg2MDEzLCAweDJhMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4MTA3OCwgMHg1ZDhhLCAweDAwNzgsIDB4OTYxNSwgMHg2MDA3LCAweDAwM2IsIDB4NjAyYiwKLQkweDAwMDksIDB4NjAxMywgMHgxNzAwLCAweDYwMDMsIDB4MDAwMSwgMHgxMDc4LCAweDVkOGEsIDB4MDA3OCwKLQkweDk2MTUsIDB4NjAwNywgMHgwMDNiLCAweDYwMmIsIDB4MDAwYiwgMHg2MDEzLCAweDAwMDAsIDB4MDA3OCwKLQkweDk1ODksIDB4MGU3ZSwgMHgwMjdlLCAweDEwNzgsIDB4NDk2NywgMHgwMDQwLCAweDk2NmUsIDB4MTA3OCwKLQkweDQ5NTcsIDB4MTA3OCwgMHhhNGI5LCAweDAwYzAsIDB4OTY2YywgMHgyMDcxLCAweGE3MDAsIDB4NzBjYywKLQkweGMwODUsIDB4NzBjZSwgMHgwZjdlLCAweDIwNzksIDB4MDEwMCwgMHg3Mjk4LCAweGEyODQsIDB4MDBmZiwKLQkweDcwNmUsIDB4NzhlNiwgMHhhMjg0LCAweGZmMDAsIDB4NzI3MCwgMHhhMjA1LCAweDcwNzIsIDB4NzhlYSwKLQkweDBmN2YsIDB4NzBkNywgMHgwMDAwLCAweDIwMDEsIDB4YTc1MywgMHgyMDA0LCAweGQwYTQsIDB4MDA0MCwKLQkweDk2NjUsIDB4MjAxMSwgMHhhOWNhLCAweDIwMTMsIDB4MDdkMCwgMHhkMGFjLCAweDAwYzAsIDB4OTY2ZSwKLQkweDEwNzgsIDB4MjY3NywgMHgwMDc4LCAweDk2NmUsIDB4MTA3OCwgMHhhNGU5LCAweDAyN2YsIDB4MGU3ZiwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDk0YTcsIDB4MTA3OCwgMHg3NzJkLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDA2N2UsIDB4NjYxOCwgMHgyNjY4LCAweDZlMDQsIDB4YTZiNCwgMHhmZjAwLCAweDg2MzcsIDB4YTY4NiwKLQkweDAwMDYsIDB4MDA0MCwgMHg5Njk0LCAweGE2ODYsIDB4MDAwNCwgMHgwMDQwLCAweDk2OTQsIDB4NmUwNCwKLQkweGE2YjQsIDB4MDBmZiwgMHhhNjg2LCAweDAwMDYsIDB4MDA0MCwgMHg5Njk0LCAweGE2ODYsIDB4MDAwNCwKLQkweDAwNDAsIDB4OTY5NCwgMHhhMDg1LCAweDAwMDEsIDB4MDY3ZiwgMHgwZDdmLCAweDAwN2MsIDB4MGQ3ZSwKLQkweDEwNzgsIDB4OTZjYiwgMHgwZDdmLCAweDAwN2MsIDB4MGQ3ZSwgMHgxMDc4LCAweDk2ZGEsIDB4MDBjMCwKLQkweDk2YzQsIDB4NjgwYywgMHhhMDhjLCAweGZmMDAsIDB4NjgyMCwgMHhhMDg0LCAweDAwZmYsIDB4YTExNSwKLQkweDYyMTIsIDB4NjgyNCwgMHg2MDJhLCAweGQxZTQsIDB4MDA0MCwgMHg5NmIyLCAweDIwMDksIDB4MDAwMSwKLQkweDAwNzgsIDB4OTZjMCwgMHhkMWVjLCAweDAwNDAsIDB4OTZjNCwgMHg2OTIwLCAweGExOGMsIDB4MDBmZiwKLQkweDY4MjQsIDB4MTA3OCwgMHgyNTRkLCAweDAwYzAsIDB4OTZjNCwgMHgyMTEwLCAweDIwMDksIDB4MDAwMCwKLQkweDEwNzgsIDB4MjhjOCwgMHgwMDc4LCAweDk2YzgsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4OTZjOSwKLQkweGEwMDYsIDB4MGQ3ZiwgMHgwMDdjLCAweDIwNjksIDB4YWM4ZCwgMHg2ODAwLCAweGEwODIsIDB4MDAxMCwKLQkweDAwYzgsIDB4OTZkOCwgMHg2MDEzLCAweDAwMDAsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4OTZkOSwKLQkweGEwMDYsIDB4MDA3YywgMHg2MDEzLCAweDAwMDAsIDB4MjA2OSwgMHhhYzhjLCAweDY4MDgsIDB4YTA4NCwKLQkweGZmMDAsIDB4YTA4NiwgMHgwODAwLCAweDAwYzAsIDB4OTZlZSwgMHg2ODAwLCAweGEwODQsIDB4MDBmZiwKLQkweGEwOGUsIDB4MDAxNCwgMHgwMDQwLCAweDk2ZWUsIDB4YTA4ZSwgMHgwMDEwLCAweDAwN2MsIDB4NjAwNCwKLQkweGEwYjIsIDB4MDA0NCwgMHgxMGM4LCAweDEzMzIsIDB4YTFiNiwgMHgwMDEzLCAweDAwYzAsIDB4OTZmYiwKLQkweDIwMDgsIDB4MDA3OSwgMHg5NzBlLCAweGExYjYsIDB4MDAyNywgMHgwMDQwLCAweDk3MDMsIDB4YTFiNiwKLQkweDAwMTQsIDB4MTBjMCwgMHgxMzMyLCAweDIwMDEsIDB4MDAwNywgMHgxMDc4LCAweDQ1MzUsIDB4MTA3OCwKLQkweDYxY2QsIDB4MTA3OCwgMHg4ZWQ2LCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDk3NGUsIDB4OTc1MCwKLQkweDk3NGUsIDB4OTc0ZSwgMHg5NzRlLCAweDk3NTAsIDB4OTc1YywgMHg5N2U2LCAweDk3YTksIDB4OTdlNiwKLQkweDk3YmQsIDB4OTdlNiwgMHg5NzVjLCAweDk3ZTYsIDB4OTdkZSwgMHg5N2U2LCAweDk3ZGUsIDB4OTdlNiwKLQkweDk3ZTYsIDB4OTc0ZSwgMHg5NzRlLCAweDk3NGUsIDB4OTc0ZSwgMHg5NzRlLCAweDk3NGUsIDB4OTc0ZSwKLQkweDk3NGUsIDB4OTc0ZSwgMHg5NzRlLCAweDk3NGUsIDB4OTc1MCwgMHg5NzRlLCAweDk3ZTYsIDB4OTc0ZSwKLQkweDk3NGUsIDB4OTdlNiwgMHg5NzRlLCAweDk3ZTYsIDB4OTdlNiwgMHg5NzRlLCAweDk3NGUsIDB4OTc0ZSwKLQkweDk3NGUsIDB4OTdlNiwgMHg5N2U2LCAweDk3NGUsIDB4OTdlNiwgMHg5N2U2LCAweDk3NGUsIDB4OTc0ZSwKLQkweDk3NGUsIDB4OTc0ZSwgMHg5NzRlLCAweDk3NTAsIDB4OTdlNiwgMHg5N2U2LCAweDk3NGUsIDB4OTc0ZSwKLQkweDk3ZTYsIDB4OTdlNiwgMHg5NzRlLCAweDk3NGUsIDB4OTc0ZSwgMHg5NzRlLCAweDEwNzgsIDB4MTMzMiwKLQkweDEwNzgsIDB4NjFjZCwgMHgyMDAxLCAweGE5YTIsIDB4MjAwNCwgMHg2MDE2LCAweDYwMDMsIDB4MDAwMiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDk3ZWMsIDB4MGY3ZSwgMHgyMDc5LCAweGE3NTIsIDB4NzgwNCwKLQkweDBmN2YsIDB4ZDBhYywgMHgwMGMwLCAweDk3ZTYsIDB4MjAwMSwgMHgwMDAwLCAweDEwNzgsIDB4NDRlZSwKLQkweDYwMTgsIDB4YTA4MCwgMHgwMDA0LCAweDIwMDQsIDB4YTA4NiwgMHgwMGZmLCAweDAwNDAsIDB4OTdlNiwKLQkweDBjN2UsIDB4NjAxOCwgMHgyMDYwLCAweDYwMDAsIDB4ZDBmNCwgMHgwMGMwLCAweDk3ODAsIDB4NjAxMCwKLQkweGEwMDUsIDB4MDA0MCwgMHg5NzgwLCAweDBjN2YsIDB4MTA3OCwgMHgzNjk5LCAweDAwNzgsIDB4OTdlNiwKLQkweDBjN2YsIDB4MjAwMSwgMHhhNzAwLCAweDIwMDQsIDB4YTA4NiwgMHgwMDAyLCAweDAwYzAsIDB4OTc4ZiwKLQkweDBmN2UsIDB4MjA3OSwgMHhhNzAwLCAweDc4OTAsIDB4ODAwMCwgMHg3ODkyLCAweDBmN2YsIDB4MjAwMSwKLQkweDAwMDIsIDB4MTA3OCwgMHg0NTAyLCAweDEwNzgsIDB4NjFjZCwgMHg2MDFmLCAweDAwMDEsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAyLCAweDEwNzgsIDB4NWRkNywgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZSwKLQkweDYxMTgsIDB4MjE2MCwgMHgyMDA5LCAweDAwMDEsIDB4MTA3OCwgMHg1YTUyLCAweDBjN2YsIDB4MDA3OCwKLQkweDk3ZWMsIDB4NjYxOCwgMHgwZDdlLCAweDI2NjgsIDB4NmUwNCwgMHgwZDdmLCAweGE2YjQsIDB4ZmYwMCwKLQkweDg2MzcsIDB4YTY4NiwgMHgwMDA2LCAweDAwNDAsIDB4OTdlNiwgMHhhNjg2LCAweDAwMDQsIDB4MDA0MCwKLQkweDk3ZTYsIDB4MjAwMSwgMHgwMDA0LCAweDAwNzgsIDB4OTdlNCwgMHgyMDAxLCAweGE3MDAsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweDk3YzYsIDB4MTA3OCwgMHgzNjk5LCAweDIwMDEsIDB4MDAwNiwKLQkweDEwNzgsIDB4OTdlZCwgMHg2NjE4LCAweDBkN2UsIDB4MjY2OCwgMHg2ZTA0LCAweDBkN2YsIDB4YTZiNCwKLQkweGZmMDAsIDB4ODYzNywgMHhhNjg2LCAweDAwMDYsIDB4MDA0MCwgMHg5N2U2LCAweDIwMDEsIDB4MDAwNiwKLQkweDAwNzgsIDB4OTdlNCwgMHgyMDAxLCAweDAwMDQsIDB4MDA3OCwgMHg5N2U0LCAweDIwMDEsIDB4MDAwNiwKLQkweDEwNzgsIDB4OTdlZCwgMHgwMDc4LCAweDk3ZTYsIDB4MTA3OCwgMHg0NTM1LCAweDEwNzgsIDB4NjFjZCwKLQkweDEwNzgsIDB4NzcyZCwgMHgxMDc4LCAweDYyZDEsIDB4MDA3YywgMHgwMTdlLCAweDBkN2UsIDB4NjExOCwKLQkweDIxNjgsIDB4NjkwMCwgMHhkMTg0LCAweDAwNDAsIDB4OTgwOCwgMHg2MTA0LCAweGExOGUsIDB4MDAwYSwKLQkweDAwYzAsIDB4OTgwMCwgMHg2OTljLCAweGQxYTQsIDB4MDBjMCwgMHg5ODAwLCAweDIwMDEsIDB4MDAwNywKLQkweDEwNzgsIDB4NDUwMiwgMHgyMDAxLCAweDAwMDAsIDB4MTA3OCwgMHg0NGVlLCAweDEwNzgsIDB4MjhhNiwKLQkweDBkN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDBkN2UsIDB4NjYxOCwgMHgyNjY4LCAweDY4MDQsIDB4YTA4NCwKLQkweGZmMDAsIDB4ODAwNywgMHgwZDdmLCAweGEwYjIsIDB4MDAwYywgMHgxMGM4LCAweDEzMzIsIDB4YTFiNiwKLQkweDAwMTUsIDB4MDBjMCwgMHg5ODFmLCAweDEwNzksIDB4OTgyNiwgMHgwMDc4LCAweDk4MjUsIDB4YTFiNiwKLQkweDAwMTYsIDB4MTBjMCwgMHgxMzMyLCAweDEwNzksIDB4OTgzMiwgMHgwMDdjLCAweDdkNGUsIDB4N2Q0ZSwKLQkweDdkNGUsIDB4N2Q0ZSwgMHg3ZDRlLCAweDdkNGUsIDB4OTg4NywgMHg5ODNlLCAweDdkNGUsIDB4N2Q0ZSwKLQkweDdkNGUsIDB4N2Q0ZSwgMHg3ZDRlLCAweDdkNGUsIDB4N2Q0ZSwgMHg3ZDRlLCAweDdkNGUsIDB4N2Q0ZSwKLQkweDk4ODcsIDB4OTg4ZiwgMHg3ZDRlLCAweDdkNGUsIDB4N2Q0ZSwgMHg3ZDRlLCAweDBmN2UsIDB4MjA3OSwKLQkweGE3NTIsIDB4NzgwNCwgMHhkMGFjLCAweDAwYzAsIDB4OTg2NSwgMHg2MDE4LCAweGEwN2QsIDB4MDA0MCwKLQkweDk4NjUsIDB4NzgwMCwgMHhkMGY0LCAweDAwYzAsIDB4OTg1MSwgMHg3ODEwLCAweGEwMDUsIDB4MDBjMCwKLQkweDk4NjUsIDB4MjAwMSwgMHgwMDAwLCAweDEwNzgsIDB4NDRlZSwgMHgyMDAxLCAweDAwMDIsIDB4MTA3OCwKLQkweDQ1MDIsIDB4NjAxZiwgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MTA3OCwKLQkweDVkZDcsIDB4MTA3OCwgMHg2MmQxLCAweDAwNzgsIDB4OTg4NSwgMHgyMDExLCAweGFjODMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgxMDc4LCAweDI1NGQsIDB4MDBjMCwgMHg5ODg1LCAweDBjN2UsIDB4MTA3OCwKLQkweDQ1YzQsIDB4MDA0MCwgMHg5ODc4LCAweDBjN2YsIDB4MTA3OCwgMHg3NzJkLCAweDAwNzgsIDB4OTg4NSwKLQkweDYwMTAsIDB4MDA3ZSwgMHg2MDE0LCAweDAwN2UsIDB4MTA3OCwgMHg0MmY4LCAweDAwN2YsIDB4NjAxNiwKLQkweDAwN2YsIDB4NjAxMiwgMHgwYzdmLCAweDEwNzgsIDB4NzcyZCwgMHgwZjdmLCAweDAwN2MsIDB4NjYwNCwKLQkweGE2YjYsIDB4MDAxZSwgMHgwMGMwLCAweDk4OGUsIDB4MTA3OCwgMHg3NzJkLCAweDAwN2MsIDB4MTA3OCwKLQkweDdmOGUsIDB4MDBjMCwgMHg5ODliLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsIDB4MTA3OCwKLQkweDVkZDcsIDB4MDA3OCwgMHg5ODlkLCAweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweDYwMDQsIDB4YTA4YSwKLQkweDAwNDQsIDB4MTBjOCwgMHgxMzMyLCAweDEwNzgsIDB4NjFjZCwgMHgxMDc4LCAweDhlZDYsIDB4MTA3OCwKLQkweDYyZDEsIDB4MDA3YywgMHhhMTgyLCAweDAwNDAsIDB4MDA3OSwgMHg5OGFlLCAweDk4YzEsIDB4OThjMSwKLQkweDk4YzEsIDB4OThjMSwgMHg5OGMzLCAweDk4YzEsIDB4OThjMSwgMHg5OGMxLCAweDk4YzEsIDB4OThjMSwKLQkweDk4YzEsIDB4OThjMSwgMHg5OGMxLCAweDk4YzEsIDB4OThjMSwgMHg5OGMxLCAweDk4YzEsIDB4OThjMSwKLQkweDk4YzEsIDB4MTA3OCwgMHgxMzMyLCAweDBkN2UsIDB4MGU3ZSwgMHgwZjdlLCAweDE1N2UsIDB4MDQ3ZSwKLQkweDAyN2UsIDB4NjIxOCwgMHhhMjgwLCAweDAwMmIsIDB4MjAwNCwgMHhhMDA1LCAweDAwNDAsIDB4OThkNCwKLQkweDIwMjEsIDB4MDAwMCwgMHgxMDc4LCAweGE0ODIsIDB4NjEwNiwgMHgyMDcxLCAweGFjODAsIDB4NzQ0NCwKLQkweGE0YTQsIDB4ZmYwMCwgMHgwMDQwLCAweDk5MmIsIDB4YTQ4NiwgMHgyMDAwLCAweDAwYzAsIDB4OThlNiwKLQkweDIwMDksIDB4MDAwMSwgMHgyMDExLCAweDAyMDAsIDB4MTA3OCwgMHg1YmYxLCAweDEwNzgsIDB4MTM4YiwKLQkweDEwNDAsIDB4MTMzMiwgMHg2MDAzLCAweDAwMDcsIDB4MmQwMCwgMHg2ODM3LCAweDAxMGQsIDB4NjgwMywKLQkweDAwMDAsIDB4NjgzYiwgMHgwMDAwLCAweDZjNWEsIDB4MmMwMCwgMHg2ODVlLCAweDYwMDgsIDB4NjhiMiwKLQkweDYwMTgsIDB4MjA3OCwgMHg3OGEwLCAweDgwMDcsIDB4NzEzMCwgMHg2OTRhLCAweDAxN2UsIDB4YTA4NCwKLQkweGZmMDAsIDB4Njg0NiwgMHg2ODRmLCAweDAwMDAsIDB4Njg1NywgMHgwMDM2LCAweDEwNzgsIDB4NGE3MywKLQkweDAxN2YsIDB4YTQ4NiwgMHgyMDAwLCAweDAwYzAsIDB4OTkxMywgMHgyMDE5LCAweDAwMTcsIDB4MTA3OCwKLQkweGExYTUsIDB4MDA3OCwgMHg5OThkLCAweGE0ODYsIDB4MDQwMCwgMHgwMGMwLCAweDk5MWQsIDB4MjAxOSwKLQkweDAwMDIsIDB4MTA3OCwgMHhhMTU2LCAweDAwNzgsIDB4OTk4ZCwgMHhhNDg2LCAweDAyMDAsIDB4MDBjMCwKLQkweDk5MjMsIDB4MTA3OCwgMHhhMTNiLCAweGE0ODYsIDB4MTAwMCwgMHgwMGMwLCAweDk5MjksIDB4MTA3OCwKLQkweGExOGEsIDB4MDA3OCwgMHg5OThkLCAweDIwNjksIDB4YWEzMywgMHg2YTAwLCAweGQyODQsIDB4MDA0MCwKLQkweDk5ZjcsIDB4YTI4NCwgMHgwMzAwLCAweDAwYzAsIDB4OTllZiwgMHg2ODA0LCAweGEwMDUsIDB4MDA0MCwKLQkweDk5ZDUsIDB4MmQ3OCwgMHg2MDAzLCAweDAwMDcsIDB4MTA3OCwgMHgxMzcwLCAweDAwNDAsIDB4OTk5NCwKLQkweDc4MDAsIDB4ZDA4YywgMHgwMGMwLCAweDk5NDcsIDB4NzgwNCwgMHg4MDAxLCAweDc4MDYsIDB4NjAxMywKLQkweDAwMDAsIDB4NjgwMywgMHgwMDAwLCAweDY4MzcsIDB4MDExNiwgMHg2ODNiLCAweDAwMDAsIDB4NjAwOCwKLQkweDY4YjIsIDB4MmMwMCwgMHg2ODRhLCAweDYwMTgsIDB4MjA3OCwgMHg3OGEwLCAweDgwMDcsIDB4NzEzMCwKLQkweDY5ODYsIDB4Njg0NiwgMHg3OTI4LCAweDY5OGEsIDB4NzkyYywgMHg2OThlLCAweDc5MzAsIDB4Njk5MiwKLQkweDc5MzQsIDB4Njk5NiwgMHg2ODUzLCAweDAwM2QsIDB4NzI0NCwgMHhhMjk0LCAweDAwMDMsIDB4YTI4NiwKLQkweDAwMDIsIDB4MDBjMCwgMHg5OTZmLCAweDY4NGYsIDB4MDA0MCwgMHgwMDc4LCAweDk5NzksIDB4YTI4NiwKLQkweDAwMDEsIDB4MDBjMCwgMHg5OTc3LCAweDY4NGYsIDB4MDA4MCwgMHgwMDc4LCAweDk5NzksIDB4Njg0ZiwKLQkweDAwMDAsIDB4MjBhOSwgMHgwMDBhLCAweDIwMDEsIDB4YWM5MCwgMHhhZDkwLCAweDAwMTUsIDB4MjAwYywKLQkweDgxMGYsIDB4MjExMiwgMHg4MDAwLCAweDgyMTAsIDB4MDBmMCwgMHg5OTdmLCAweDIwMGMsIDB4Njk4MiwKLQkweDgwMDAsIDB4MjAwYywgMHg2OTdlLCAweDEwNzgsIDB4NGE3MywgMHgwMjdmLCAweDA0N2YsIDB4MTU3ZiwKLQkweDBmN2YsIDB4MGU3ZiwgMHgwZDdmLCAweDAwN2MsIDB4MjAwMSwgMHhhNzBlLCAweDIwMDQsIDB4ZDA4NCwKLQkweDAwNDAsIDB4OTk5ZSwgMHgxMDc4LCAweDEzOGIsIDB4MDBjMCwgMHg5OTQwLCAweDYwMTMsIDB4MDEwMCwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNDEsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwKLQkweDAwNzgsIDB4OTk4ZCwgMHgyMDY5LCAweGFjOTIsIDB4MmQwNCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4NiwKLQkweDEyMDAsIDB4MDBjMCwgMHg5OWM5LCAweDIwNjksIDB4YWM4MCwgMHg2ODZjLCAweGEwODQsIDB4MDBmZiwKLQkweDAxN2UsIDB4NjExMCwgMHhhMThjLCAweDA3MDAsIDB4YTEwZCwgMHg2MTEyLCAweDAxN2YsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDQzLCAweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MDA3OCwKLQkweDk5OGQsIDB4NjAxMywgMHgwMjAwLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNDEsIDB4MTA3OCwKLQkweDVkOGEsIDB4MTA3OCwgMHg2MmQxLCAweDAwNzgsIDB4OTk4ZCwgMHgyMDAxLCAweGE3MGQsIDB4MjAwNCwKLQkweGQwZWMsIDB4MDA0MCwgMHg5OWRmLCAweDIwMTEsIDB4ODA0OSwgMHgxMDc4LCAweDM2MWIsIDB4NjAxMywKLQkweDAzMDAsIDB4MDA3OCwgMHg5OWU1LCAweDYwMTMsIDB4MDEwMCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwNDEsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDk5OGQsIDB4NjAxMywKLQkweDA1MDAsIDB4MDA3OCwgMHg5OWU1LCAweDYwMTMsIDB4MDYwMCwgMHgwMDc4LCAweDk5YWEsIDB4NjAxMywKLQkweDAyMDAsIDB4MDA3OCwgMHg5OWFhLCAweGExODYsIDB4MDAxMywgMHgwMGMwLCAweDlhMGQsIDB4NjAwNCwKLQkweGEwOGEsIDB4MDA0MCwgMHgxMDQ4LCAweDEzMzIsIDB4YTA4YSwgMHgwMDUzLCAweDEwYzgsIDB4MTMzMiwKLQkweGEwODIsIDB4MDA0MCwgMHgyMDA4LCAweDAwNzksIDB4OWE5MiwgMHhhMTg2LCAweDAwNTEsIDB4MDA0MCwKLQkweDlhMWEsIDB4YTE4NiwgMHgwMDQ3LCAweDAwYzAsIDB4OWEzMywgMHg2MDA0LCAweGEwODYsIDB4MDA0MSwKLQkweDAwNDAsIDB4OWE0MSwgMHgyMDAxLCAweDAxMDksIDB4MjAwNCwgMHhkMDg0LCAweDAwNDAsIDB4OWE0MSwKLQkweDEyN2UsIDB4MjA5MSwgMHgyMjAwLCAweDAwN2UsIDB4MDE3ZSwgMHgwMjdlLCAweDEwNzgsIDB4NWM1NiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgwMDdmLCAweDEyN2YsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDIsIDB4MDBjMCwKLQkweDlhNDEsIDB4MDA3OCwgMHg5YWQ3LCAweGExODYsIDB4MDAyNywgMHgwMDQwLCAweDlhM2IsIDB4YTE4NiwKLQkweDAwMTQsIDB4MTBjMCwgMHgxMzMyLCAweDYwMDQsIDB4YTA4MiwgMHgwMDQwLCAweDIwMDgsIDB4MDA3OSwKLQkweDlhNDQsIDB4MTA3OCwgMHg3NzczLCAweDAwN2MsIDB4OWE1NywgMHg5YTU5LCAweDlhNTksIDB4OWE4MSwKLQkweDlhNTcsIDB4OWE1NywgMHg5YTU3LCAweDlhNTcsIDB4OWE1NywgMHg5YTU3LCAweDlhNTcsIDB4OWE1NywKLQkweDlhNTcsIDB4OWE1NywgMHg5YTU3LCAweDlhNTcsIDB4OWE1NywgMHg5YTU3LCAweDlhNTcsIDB4MTA3OCwKLQkweDEzMzIsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4NjJkMSwgMHgwMzdlLCAweDBkN2UsIDB4NjAxMCwKLQkweGEwNmQsIDB4MDA0MCwgMHg5YTdlLCAweGFkODQsIDB4ZjAwMCwgMHgwMDQwLCAweDlhN2UsIDB4NjAwMywKLQkweDAwMDIsIDB4NjAxOCwgMHgyMDA0LCAweGQwYmMsIDB4MDBjMCwgMHg5YTdlLCAweDIwMTksIDB4MDAwNCwKLQkweDEwNzgsIDB4YTFkYSwgMHg2MDEzLCAweDAwMDAsIDB4NjAxNCwgMHhhMDA1LCAweDAwYzAsIDB4OWE3YywKLQkweDIwMDEsIDB4YTlhMywgMHgyMDA0LCAweDYwMTYsIDB4NjAwMywgMHgwMDA3LCAweDBkN2YsIDB4MDM3ZiwKLQkweDAwN2MsIDB4MGQ3ZSwgMHgxMDc4LCAweDYxY2QsIDB4MTA3OCwgMHg2MmQxLCAweDEwNzgsIDB4OGQxNiwKLQkweDAwNDAsIDB4OWE4ZSwgMHg2MDEwLCAweDIwNjgsIDB4MTA3OCwgMHgxM2E0LCAweDEwNzgsIDB4OGVkNiwKLQkweDBkN2YsIDB4MDA3YywgMHg5YWE1LCAweDlhYzQsIDB4OWFhZSwgMHg5YWQxLCAweDlhYTUsIDB4OWFhNSwKLQkweDlhYTUsIDB4OWFhNSwgMHg5YWE1LCAweDlhYTUsIDB4OWFhNSwgMHg5YWE1LCAweDlhYTUsIDB4OWFhNSwKLQkweDlhYTUsIDB4OWFhNSwgMHg5YWE1LCAweDlhYTUsIDB4OWFhNSwgMHgxMDc4LCAweDEzMzIsIDB4NjAxMCwKLQkweGEwODgsIDB4MDAxMywgMHgyMTA0LCAweGEwODUsIDB4MDQwMCwgMHgyMDBhLCAweDEwNzgsIDB4NjFjZCwKLQkweDYwMTAsIDB4YTA4MCwgMHgwMDEzLCAweDIwMDQsIDB4ZDBiNCwgMHgwMDQwLCAweDlhYmYsIDB4NjAwMywKLQkweDAwMDcsIDB4MjAwOSwgMHgwMDQzLCAweDEwNzgsIDB4Nzc1YywgMHgwMDc4LCAweDlhYzEsIDB4NjAwMywKLQkweDAwMDIsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4YTQzMywKLQkweDAwYzAsIDB4OWFjZSwgMHgxMDc4LCAweDViYzEsIDB4MTA3OCwgMHg3NzJkLCAweDEwNzgsIDB4NjJkMSwKLQkweDAwN2MsIDB4MTA3OCwgMHg2MWNkLCAweDIwMDksIDB4MDA0MSwgMHgwMDc4LCAweDljMmUsIDB4YTE4MiwKLQkweDAwNDAsIDB4MDA3OSwgMHg5YWRiLCAweDlhZWUsIDB4OWFmMCwgMHg5YWVlLCAweDlhZWUsIDB4OWFlZSwKLQkweDlhZWUsIDB4OWFlZSwgMHg5YWYxLCAweDlhZWUsIDB4OWFlZSwgMHg5YWVlLCAweDlhZWUsIDB4OWFlZSwKLQkweDlhZWUsIDB4OWFlZSwgMHg5YWVlLCAweDlhZWUsIDB4OWFmYywgMHg5YWVlLCAweDEwNzgsIDB4MTMzMiwKLQkweDAwN2MsIDB4NjAwMywgMHgwMDA0LCAweDYxMTAsIDB4MjBlMSwgMHgwMDA1LCAweDNkMTgsIDB4M2UyMCwKLQkweDJjMTAsIDB4MTA3OCwgMHgxNWZhLCAweDAwN2MsIDB4MGQ3ZSwgMHgxMDc4LCAweDViYzEsIDB4MGQ3ZiwKLQkweDEwNzgsIDB4YTRhNSwgMHgxMDc4LCAweDc3MmQsIDB4MDA3YywgMHhhMTgyLCAweDAwNDAsIDB4MDA3OSwKLQkweDliMDksIDB4OWIxYywgMHg5YjFjLCAweDliMWMsIDB4OWIxYywgMHg5YjFjLCAweDliMWMsIDB4OWIxYywKLQkweDliMWUsIDB4OWIxYywgMHg5YjIxLCAweDliNGMsIDB4OWIxYywgMHg5YjFjLCAweDliMWMsIDB4OWIxYywKLQkweDliNGMsIDB4OWIxYywgMHg5YjFjLCAweDliMWMsIDB4MTA3OCwgMHgxMzMyLCAweDEwNzgsIDB4Nzc3MywKLQkweDAwN2MsIDB4MTA3OCwgMHg2MjdhLCAweDEwNzgsIDB4NjM5YiwgMHg2MDEwLCAweDBkN2UsIDB4MjA2OCwKLQkweDY4NGMsIDB4ZDBmYywgMHgwMDQwLCAweDliMzcsIDB4YTA4YywgMHgwMDAzLCAweGExOGUsIDB4MDAwMiwKLQkweDAwNDAsIDB4OWIzZiwgMHgyMDA5LCAweDAwNDEsIDB4MGQ3ZiwgMHgwMDc4LCAweDljMmUsIDB4NjAwMywKLQkweDAwMDcsIDB4NjAxNywgMHgwMDAwLCAweDEwNzgsIDB4NWJjMSwgMHgwZDdmLCAweDAwN2MsIDB4MTA3OCwKLQkweGE0MzMsIDB4MDA0MCwgMHg5YjQ1LCAweDBkN2YsIDB4MDA3YywgMHgxMDc4LCAweDViYzEsIDB4MTA3OCwKLQkweDc3MmQsIDB4MGQ3ZiwgMHgwMDc4LCAweDliM2UsIDB4MDM3ZSwgMHgxMDc4LCAweDYyN2EsIDB4MTA3OCwKLQkweDYzOWIsIDB4NjAxMCwgMHgwZDdlLCAweDIwNjgsIDB4NjAxOCwgMHgyMDA0LCAweGQwYmMsIDB4MDA0MCwKLQkweDliNmMsIDB4Njg0YywgMHhhMDg0LCAweDAwMDMsIDB4YTA4NiwgMHgwMDAyLCAweDAwNDAsIDB4OWI2OCwKLQkweDY4N2MsIDB4NjMyYywgMHhhMzFhLCAweDYzMmUsIDB4Njg4MCwgMHg2MzI4LCAweGEzMWIsIDB4NjMyYSwKLQkweDYwMDMsIDB4MDAwMiwgMHgwMDc4LCAweDliN2QsIDB4MjAxOSwgMHgwMDA0LCAweDEwNzgsIDB4YTFkYSwKLQkweDYwMTQsIDB4YTAwNSwgMHgwMGMwLCAweDliNzksIDB4MjAwMSwgMHhhOWEzLCAweDIwMDQsIDB4ODAwMywKLQkweDYwMTYsIDB4NjAxMywgMHgwMDAwLCAweDYwMDMsIDB4MDAwNywgMHgwZDdmLCAweDAzN2YsIDB4MDA3YywKLQkweGExODYsIDB4MDAxMywgMHgwMGMwLCAweDliOGUsIDB4NjAwNCwgMHhhMDg2LCAweDAwNDIsIDB4MTBjMCwKLQkweDEzMzIsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExODYsIDB4MDAyNywKLQkweDAwNDAsIDB4OWI5NiwgMHhhMTg2LCAweDAwMTQsIDB4MDBjMCwgMHg5YmE2LCAweDYwMDQsIDB4YTA4NiwKLQkweDAwNDIsIDB4MTBjMCwgMHgxMzMyLCAweDIwMDEsIDB4MDAwNywgMHgxMDc4LCAweDQ1MzUsIDB4MTA3OCwKLQkweDYxY2QsIDB4MTA3OCwgMHg4ZWQ2LCAweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExODIsIDB4MDA0MCwKLQkweDAwNzksIDB4OWJhYSwgMHg5YmJkLCAweDliYmQsIDB4OWJiZCwgMHg5YmJkLCAweDliYmQsIDB4OWJiZCwKLQkweDliYmQsIDB4OWJiZiwgMHg5YmNiLCAweDliYmQsIDB4OWJiZCwgMHg5YmJkLCAweDliYmQsIDB4OWJiZCwKLQkweDliYmQsIDB4OWJiZCwgMHg5YmJkLCAweDliYmQsIDB4OWJiZCwgMHgxMDc4LCAweDEzMzIsIDB4MDM3ZSwKLQkweDA0N2UsIDB4MjBlMSwgMHgwMDA1LCAweDNkMTgsIDB4M2UyMCwgMHgyYzEwLCAweDEwNzgsIDB4MTVmYSwKLQkweDA0N2YsIDB4MDM3ZiwgMHgwMDdjLCAweDYwMTAsIDB4MGQ3ZSwgMHgyMDY4LCAweDY4MTAsIDB4NmExNCwKLQkweDYxMTgsIDB4MjEwYywgMHhkMWJjLCAweDAwNDAsIDB4OWJlYSwgMHg2MTI0LCAweGQxZjQsIDB4MDBjMCwKLQkweDliZWEsIDB4MDA3ZSwgMHgwNDdlLCAweDA1N2UsIDB4NmM3YywgMHhhNDIyLCAweDZkODAsIDB4MjIwMCwKLQkweGE1MmIsIDB4NjAyYywgMHhhNDIwLCAweDY0MmUsIDB4NjAyOCwgMHhhNTI5LCAweDY1MmEsIDB4MDU3ZiwKLQkweDA0N2YsIDB4MDA3ZiwgMHhhMjBkLCAweDAwYzAsIDB4OWJmZSwgMHg2ODRjLCAweGQwZmMsIDB4MDA0MCwKLQkweDliZjYsIDB4MjAwOSwgMHgwMDQxLCAweDBkN2YsIDB4MDA3OCwgMHg5YzJlLCAweDYwMDMsIDB4MDAwNywKLQkweDYwMTcsIDB4MDAwMCwgMHgxMDc4LCAweDViYzEsIDB4MGQ3ZiwgMHgwMDdjLCAweDAwN2UsIDB4MGY3ZSwKLQkweDJjNzgsIDB4MTA3OCwgMHg0OTYzLCAweDBmN2YsIDB4MDA3ZiwgMHgwMDQwLCAweDljMGIsIDB4NjAwMywKLQkweDAwMDIsIDB4MGQ3ZiwgMHgwMDdjLCAweDIwMDksIDB4YTcwZCwgMHgyMTBjLCAweGQxOWMsIDB4MDA0MCwKLQkweDljMTUsIDB4NjAwMywgMHgwMDA3LCAweDAwNzgsIDB4OWMxNywgMHg2MDAzLCAweDAwMDYsIDB4MTA3OCwKLQkweDljMWQsIDB4MTA3OCwgMHg1YmMzLCAweDBkN2YsIDB4MDA3YywgMHhkMmZjLCAweDAwNDAsIDB4OWMyOSwKLQkweDgwMDIsIDB4ODAwMCwgMHg4MjEyLCAweGEyOTEsIDB4MDAwMCwgMHgyMDA5LCAweDAwMDksIDB4MDA3OCwKLQkweDljMmIsIDB4MjAwOSwgMHgwMDE1LCAweDZhNmEsIDB4Njg2NiwgMHgwMDdjLCAweGExODIsIDB4MDA0MCwKLQkweDAwNDgsIDB4OWMzNCwgMHgwMDc5LCAweDljNDEsIDB4YTE4NiwgMHgwMDEzLCAweDAwNDAsIDB4OWMzYywKLQkweGExODYsIDB4MDAxNCwgMHgxMGMwLCAweDEzMzIsIDB4NjAyNCwgMHhkMGRjLCAweDEwNDAsIDB4MTMzMiwKLQkweDAwN2MsIDB4OWM1NCwgMHg5YzViLCAweDljNjcsIDB4OWM3MywgMHg5YzU0LCAweDljNTQsIDB4OWM1NCwKLQkweDljODIsIDB4OWM1NCwgMHg5YzU2LCAweDljNTYsIDB4OWM1NCwgMHg5YzU0LCAweDljNTQsIDB4OWM1NCwKLQkweDljNTQsIDB4OWM1NCwgMHg5YzU0LCAweDljNTQsIDB4MTA3OCwgMHgxMzMyLCAweDYwMjQsIDB4ZDBkYywKLQkweDEwNDAsIDB4MTMzMiwgMHgwMDdjLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDEwNzgsIDB4NWQ4YSwKLQkweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NjJkMSwgMHgxMjdmLCAweDAwN2MsIDB4NjAwMywKLQkweDAwMDEsIDB4NjEwNiwgMHgxMDc4LCAweDVkOGEsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwKLQkweDYyZDEsIDB4MTI3ZiwgMHgwMDdjLCAweDYwMDMsIDB4MDAwMywgMHg2MTA2LCAweDJjMTAsIDB4MTA3OCwKLQkweDFjZjAsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MTA3OCwgMHg1ZGY2LCAweDEwNzgsIDB4NjM5YiwKLQkweDEyN2YsIDB4MDA3YywgMHhhMDE2LCAweDEwNzgsIDB4MTVmYSwgMHgwMDdjLCAweDEyN2UsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDM3ZSwgMHgwZDdlLCAweGExODIsIDB4MDA0MCwgMHgxMDc5LCAweDljOTMsIDB4MGQ3ZiwKLQkweDAzN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDljYTMsIDB4OWNhNSwgMHg5Y2JhLCAweDljZDksIDB4OWNhMywKLQkweDljYTMsIDB4OWNhMywgMHg5Y2YxLCAweDljYTMsIDB4OWNhMywgMHg5Y2EzLCAweDljYTMsIDB4OWNhMywKLQkweDljYTMsIDB4OWNhMywgMHg5Y2EzLCAweDEwNzgsIDB4MTMzMiwgMHg2MDEwLCAweDIwNjgsIDB4Njg0YywKLQkweGQwZmMsIDB4MDA0MCwgMHg5Y2NmLCAweGEwOWMsIDB4MDAwMywgMHhhMzllLCAweDAwMDMsIDB4MDA0MCwKLQkweDljY2YsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwKLQkweDAwNzgsIDB4OWNmNCwgMHg2MDEwLCAweDIwNjgsIDB4Njg0YywgMHhkMGZjLCAweDAwNDAsIDB4OWNjZiwKLQkweGEwOWMsIDB4MDAwMywgMHhhMzllLCAweDAwMDMsIDB4MDA0MCwgMHg5Y2NmLCAweDYwMDMsIDB4MDAwMSwKLQkweDYxMDYsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgwMDc4LCAweDljZjQsIDB4NjAxMywKLQkweDAwMDAsIDB4NjAxNywgMHgwMDAwLCAweDIwMTksIDB4MDAwNCwgMHgxMDc4LCAweGExZGEsIDB4MDA3OCwKLQkweDljZjQsIDB4NjAxMCwgMHgyMDY4LCAweDY4NGMsIDB4ZDBmYywgMHgwMDQwLCAweDljY2YsIDB4YTA5YywKLQkweDAwMDMsIDB4YTM5ZSwgMHgwMDAzLCAweDAwNDAsIDB4OWNjZiwgMHg2MDAzLCAweDAwMDMsIDB4NjEwNiwKLQkweDJjMTAsIDB4MTA3OCwgMHgxY2YwLCAweDEwNzgsIDB4NWRmNiwgMHgxMDc4LCAweDYzOWIsIDB4MDA3OCwKLQkweDljZjQsIDB4YTAxNiwgMHgxMDc4LCAweDE1ZmEsIDB4MDA3YywgMHgxMDc4LCAweDYxY2QsIDB4NjExMCwKLQkweDgxZmYsIDB4MDA0MCwgMHg5ZDA2LCAweDBkN2UsIDB4MjE2OCwgMHgxMDc4LCAweGE0ZjIsIDB4MDM3ZSwKLQkweDIwMTksIDB4MDAyOSwgMHgxMDc4LCAweGExZGEsIDB4MDM3ZiwgMHgwZDdmLCAweDEwNzgsIDB4OGVkNiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDEwNzgsIDB4NjI3YSwgMHg2MTEwLCAweDgxZmYsIDB4MDA0MCwKLQkweDlkMWMsIDB4MGQ3ZSwgMHgyMTY4LCAweDEwNzgsIDB4YTRmMiwgMHgwMzdlLCAweDIwMTksIDB4MDAyOSwKLQkweDEwNzgsIDB4YTFkYSwgMHgwMzdmLCAweDBkN2YsIDB4MTA3OCwgMHg4ZWQ2LCAweDEwNzgsIDB4NjM5YiwKLQkweDAwN2MsIDB4YTE4MiwgMHgwMDg1LCAweDAwNzksIDB4OWQyNSwgMHg5ZDJlLCAweDlkMmMsIDB4OWQyYywKLQkweDlkM2EsIDB4OWQyYywgMHg5ZDJjLCAweDlkMmMsIDB4MTA3OCwgMHgxMzMyLCAweDYwMDMsIDB4MDAwYiwKLQkweDYxMDYsIDB4MTA3OCwgMHg1ZDhhLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDEwNzgsIDB4NjJkMSwKLQkweDEyN2YsIDB4MDA3YywgMHgwMjdlLCAweDBlN2UsIDB4MTA3OCwgMHhhNDJjLCAweDAwNDAsIDB4OWQ0NCwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweDlkNjAsIDB4MjA3MSwgMHhhYzgwLCAweDcyMjQsIDB4NjIxMiwKLQkweDcyMjAsIDB4MTA3OCwgMHhhMDc5LCAweDAwNDAsIDB4OWQ1MSwgMHg2MDA3LCAweDAwODYsIDB4MDA3OCwKLQkweDlkNWEsIDB4NjAwNywgMHgwMDg3LCAweDcyMjQsIDB4YTI5NiwgMHhmZmZmLCAweDAwYzAsIDB4OWQ1YSwKLQkweDYwMDcsIDB4MDA4NiwgMHg2MDAzLCAweDAwMDEsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwKLQkweDBlN2YsIDB4MDI3ZiwgMHgwMDdjLCAweGExODYsIDB4MDAxMywgMHgwMGMwLCAweDlkNzQsIDB4NjAwNCwKLQkweGEwOGEsIDB4MDA4NSwgMHgxMDQ4LCAweDEzMzIsIDB4YTA4YSwgMHgwMDhjLCAweDEwYzgsIDB4MTMzMiwKLQkweGEwODIsIDB4MDA4NSwgMHgwMDc5LCAweDlkOGIsIDB4YTE4NiwgMHgwMDI3LCAweDAwNDAsIDB4OWQ4MCwKLQkweGExODYsIDB4MDAxNCwgMHgwMDQwLCAweDlkODAsIDB4MTA3OCwgMHg3NzczLCAweDAwNzgsIDB4OWQ4YSwKLQkweDIwMDEsIDB4MDAwNywgMHgxMDc4LCAweDQ1MzUsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4OGVkNiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweDlkOTIsIDB4OWQ5NCwgMHg5ZDk0LCAweDlkOTIsIDB4OWQ5MiwKLQkweDlkOTIsIDB4OWQ5MiwgMHgxMDc4LCAweDEzMzIsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4OGVkNiwKLQkweDEwNzgsIDB4NjJkMSwgMHgwMDdjLCAweGExODIsIDB4MDA4NSwgMHgxMDQ4LCAweDEzMzIsIDB4YTE4MiwKLQkweDAwOGMsIDB4MTBjOCwgMHgxMzMyLCAweGExODIsIDB4MDA4NSwgMHgwMDc5LCAweDlkYTcsIDB4OWRhZSwKLQkweDlkYWUsIDB4OWRhZSwgMHg5ZGIwLCAweDlkYWUsIDB4OWRhZSwgMHg5ZGFlLCAweDEwNzgsIDB4MTMzMiwKLQkweDAwN2MsIDB4YTE4NiwgMHgwMDEzLCAweDAwNDAsIDB4OWRjMSwgMHhhMTg2LCAweDAwMTQsIDB4MDA0MCwKLQkweDlkYzEsIDB4YTE4NiwgMHgwMDI3LCAweDAwNDAsIDB4OWRjMSwgMHgxMDc4LCAweDc3NzMsIDB4MDA3OCwKLQkweDlkYzcsIDB4MTA3OCwgMHg2MWNkLCAweDEwNzgsIDB4OGVkNiwgMHgxMDc4LCAweDYyZDEsIDB4MDA3YywKLQkweDAzN2UsIDB4MTA3OCwgMHhhNGE1LCAweDYwM2YsIDB4MDAwMCwgMHgyMDE5LCAweDAwMGIsIDB4MTA3OCwKLQkweDlkZDcsIDB4NjAxZiwgMHgwMDA2LCAweDYwMDMsIDB4MDAwNywgMHgwMzdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDAzN2UsIDB4MjA5MSwgMHg4MDAwLCAweDA4N2UsIDB4MmM0MCwgMHgwOTdlLCAweDIwNDksIDB4MDAwMCwKLQkweDEwNzgsIDB4NzI0NiwgMHgwOTdmLCAweDA4N2YsIDB4MDBjMCwgMHg5ZTEyLCAweDA3N2UsIDB4MmMzOCwKLQkweDEwNzgsIDB4NzJmMywgMHgwNzdmLCAweDAwYzAsIDB4OWUxMiwgMHg2MDAwLCAweGEwODYsIDB4MDAwMCwKLQkweDAwNDAsIDB4OWUxMiwgMHg2MDFjLCAweGEwODYsIDB4MDAwNywgMHgwMDQwLCAweDllMTIsIDB4MGQ3ZSwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDA0LCAweDAwYzAsIDB4OWUwMywgMHgxMDc4LCAweGE0YTUsIDB4NjAxZiwKLQkweDAwMDcsIDB4MTA3OCwgMHgxNzU3LCAweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwKLQkweDllMGIsIDB4MTA3OCwgMHhhMWRhLCAweDBkN2YsIDB4NjAxMywgMHgwMDAwLCAweDEwNzgsIDB4YTRhNSwKLQkweDYwMWYsIDB4MDAwNywgMHgwMzdmLCAweDEyN2YsIDB4MDA3YywgMHgwZjdlLCAweDBjN2UsIDB4MDM3ZSwKLQkweDE1N2UsIDB4MjA3OSwgMHhhYzgwLCAweDc5MzgsIDB4NzgzYywgMHgxMDc4LCAweDI1NGQsIDB4MDBjMCwKLQkweDllNTksIDB4MDE3ZSwgMHgwYzdlLCAweDEwNzgsIDB4NDVjNCwgMHgwMGMwLCAweDllNTksIDB4MDE3ZiwKLQkweDAyN2YsIDB4MDI3ZSwgMHgwMTdlLCAweDIwMTksIDB4MDAyOSwgMHgxMDc4LCAweDczZDAsIDB4MTA3OCwKLQkweDVmMDEsIDB4MDc3ZSwgMHgyMDM5LCAweDAwMDAsIDB4MTA3OCwgMHg1ZTBhLCAweDA3N2YsIDB4MDE3ZiwKLQkweDA3N2UsIDB4MjAzOSwgMHgwMDAwLCAweDEwNzgsIDB4OWY5YiwgMHgwNzdmLCAweDEwNzgsIDB4NDdlOSwKLQkweDAyN2UsIDB4NjIwNCwgMHhhMjk0LCAweGZmMDAsIDB4ODIxNywgMHhhMjg2LCAweDAwMDYsIDB4MDA0MCwKLQkweDllNGQsIDB4YTI4NiwgMHgwMDA0LCAweDAwYzAsIDB4OWU1MCwgMHg2MmEwLCAweDEwNzgsIDB4Mjk0MiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgxMDc4LCAweDQyZjgsIDB4NjYxMiwgMHg2NTE2LCAweGEwMDYsIDB4MDA3OCwKLQkweDllNWIsIDB4MGM3ZiwgMHgwMTdmLCAweDE1N2YsIDB4MDM3ZiwgMHgwYzdmLCAweDBmN2YsIDB4MDA3YywKLQkweDBjN2UsIDB4MGQ3ZSwgMHgwZTdlLCAweDAxN2UsIDB4MjAwOSwgMHhhNzIwLCAweDIxMDQsIDB4YTA4NiwKLQkweDAwNzQsIDB4MDBjMCwgMHg5ZWMzLCAweDIwNjksIDB4YWM4ZSwgMHg2OTBjLCAweGExODIsIDB4MDEwMCwKLQkweDAwNDgsIDB4OWViMywgMHg2OTA4LCAweGExODQsIDB4ODAwMCwgMHgwMDQwLCAweDllYmYsIDB4NjAxOCwKLQkweDIwNzAsIDB4NzAxMCwgMHhhMDg0LCAweDAwZmYsIDB4MDA0MCwgMHg5ZTgyLCAweDcwMDAsIDB4ZDBmNCwKLQkweDAwNDAsIDB4OWU4NiwgMHhhMTg0LCAweDA4MDAsIDB4MDA0MCwgMHg5ZWJmLCAweDY5MTAsIDB4YTE4YSwKLQkweDAwMDEsIDB4MDA0OCwgMHg5ZWI3LCAweDY5MTQsIDB4MjA2OSwgMHhhY2FlLCAweDY5MDQsIDB4ODFmZiwKLQkweDAwYzAsIDB4OWVhYiwgMHg2OTBjLCAweGExODIsIDB4MDEwMCwgMHgwMDQ4LCAweDllYjMsIDB4NjkwOCwKLQkweDgxZmYsIDB4MDBjMCwgMHg5ZWFmLCAweDY5MTAsIDB4YTE4YSwgMHgwMDAxLCAweDAwNDgsIDB4OWViNywKLQkweDY5MTgsIDB4YTE4YSwgMHgwMDAxLCAweDAwNDgsIDB4OWViZiwgMHgwMDc4LCAweDllYzksIDB4NjAxMywKLQkweDAxMDAsIDB4MDA3OCwgMHg5ZWM1LCAweDYwMTMsIDB4MDMwMCwgMHgwMDc4LCAweDllYzUsIDB4NjAxMywKLQkweDA1MDAsIDB4MDA3OCwgMHg5ZWM1LCAweDYwMTMsIDB4MDcwMCwgMHgwMDc4LCAweDllYzUsIDB4NjAxMywKLQkweDA5MDAsIDB4MDA3OCwgMHg5ZWM1LCAweDYwMTMsIDB4MGIwMCwgMHgwMDc4LCAweDllYzUsIDB4NjAxMywKLQkweDBmMDAsIDB4MDA3OCwgMHg5ZWM1LCAweDYwMTMsIDB4MmQwMCwgMHhhMDg1LCAweDAwMDEsIDB4MDA3OCwKLQkweDllY2EsIDB4YTAwNiwgMHgwMTdmLCAweDBlN2YsIDB4MGQ3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDBkN2UsIDB4MDI3ZSwgMHgwMzdlLCAweDE1N2UsIDB4NjIxOCwgMHgyMjY4LCAweDZiMDQsIDB4YTM5NCwKLQkweDAwZmYsIDB4YTI4NiwgMHgwMDA2LCAweDAwNDAsIDB4OWVmMywgMHhhMjg2LCAweDAwMDQsIDB4MDA0MCwKLQkweDllZjMsIDB4YTM5NCwgMHhmZjAwLCAweDgyMTcsIDB4YTI4NiwgMHgwMDA2LCAweDAwNDAsIDB4OWVmMywKLQkweGEyODYsIDB4MDAwNCwgMHgwMDQwLCAweDllZjMsIDB4MGM3ZSwgMHgyZDYwLCAweDEwNzgsIDB4NDVkNiwKLQkweDBjN2YsIDB4MDA3OCwgMHg5ZjJlLCAweDIwMTEsIDB4YWM5NiwgMHhhZDk4LCAweDAwMGEsIDB4MjBhOSwKLQkweDAwMDQsIDB4MTA3OCwgMHg4MGRlLCAweDAwYzAsIDB4OWYyZiwgMHgyMDExLCAweGFjOWEsIDB4YWQ5OCwKLQkweDAwMDYsIDB4MjBhOSwgMHgwMDA0LCAweDEwNzgsIDB4ODBkZSwgMHgwMGMwLCAweDlmMmYsIDB4MDQ3ZSwKLQkweDAxN2UsIDB4NmFhMCwgMHhhMjk0LCAweDAwZmYsIDB4ODIyNywgMHhhMDA2LCAweDIwMDksIDB4YTc1MywKLQkweDIxMGMsIDB4ZDFhNCwgMHgwMDQwLCAweDlmMWIsIDB4MjAwOSwgMHgwMDI5LCAweDEwNzgsIDB4YTIyZCwKLQkweDY4MDAsIDB4YzBlNSwgMHg2ODAyLCAweDIwMTksIDB4MDAyOSwgMHgxMDc4LCAweDVmMDEsIDB4MDc3ZSwKLQkweDIwMzksIDB4MDAwMCwgMHgxMDc4LCAweDVlMGEsIDB4MmMwOCwgMHgxMDc4LCAweDlmOWIsIDB4MDc3ZiwKLQkweDIwMDEsIDB4MDAwNywgMHgxMDc4LCAweDQ1MzUsIDB4MDE3ZiwgMHgwNDdmLCAweGEwMDYsIDB4MTU3ZiwKLQkweDAzN2YsIDB4MDI3ZiwgMHgwZDdmLCAweDBjN2YsIDB4MDA3YywgMHgwZDdlLCAweDIwNjksIDB4YWM4ZSwKLQkweDY4MDAsIDB4YTA4NiwgMHgwODAwLCAweDAwNDAsIDB4OWY0MSwgMHg2MDEzLCAweDAwMDAsIDB4MDA3OCwKLQkweDlmNDIsIDB4YTAwNiwgMHgwZDdmLCAweDAwN2MsIDB4MGM3ZSwgMHgwZjdlLCAweDAxN2UsIDB4MDI3ZSwKLQkweDAzN2UsIDB4MTU3ZSwgMHgyMDc5LCAweGFjOGMsIDB4NzkzMCwgMHg3ODM0LCAweDEwNzgsIDB4MjU0ZCwKLQkweDAwYzAsIDB4OWY2OCwgMHgxMDc4LCAweDQ1YzQsIDB4MDBjMCwgMHg5ZjY4LCAweDIwMTEsIDB4YWM5MCwKLQkweGFjOTgsIDB4MDAwYSwgMHgyMGE5LCAweDAwMDQsIDB4MTA3OCwgMHg4MGRlLCAweDAwYzAsIDB4OWY2OCwKLQkweDIwMTEsIDB4YWM5NCwgMHhhYzk4LCAweDAwMDYsIDB4MjBhOSwgMHgwMDA0LCAweDEwNzgsIDB4ODBkZSwKLQkweDE1N2YsIDB4MDM3ZiwgMHgwMjdmLCAweDAxN2YsIDB4MGY3ZiwgMHgwYzdmLCAweDAwN2MsIDB4MGM3ZSwKLQkweDAwN2UsIDB4MDE3ZSwgMHgwMjdlLCAweDAzN2UsIDB4MTU3ZSwgMHgyMDExLCAweGFjODMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgxMDc4LCAweDI1NGQsIDB4MDBjMCwgMHg5Zjk0LCAweDEwNzgsIDB4NDVjNCwKLQkweDAwYzAsIDB4OWY5NCwgMHgyMDExLCAweGFjOTYsIDB4YWM5OCwgMHgwMDBhLCAweDIwYTksIDB4MDAwNCwKLQkweDEwNzgsIDB4ODBkZSwgMHgwMGMwLCAweDlmOTQsIDB4MjAxMSwgMHhhYzlhLCAweGFjOTgsIDB4MDAwNiwKLQkweDIwYTksIDB4MDAwNCwgMHgxMDc4LCAweDgwZGUsIDB4MTU3ZiwgMHgwMzdmLCAweDAyN2YsIDB4MDE3ZiwKLQkweDAwN2YsIDB4MGM3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MGM3ZSwgMHgwODdlLCAweDA3N2UsIDB4MDY3ZSwKLQkweDA1N2UsIDB4MDQ3ZSwgMHgwMjdlLCAweDEyN2UsIDB4MjA5MSwgMHg4MDAwLCAweDI3NDAsIDB4MjAyOSwKLQkweGE5YmEsIDB4MjUyYywgMHgyMDIxLCAweGE5YzAsIDB4MjQyNCwgMHgyMDYxLCAweGFlMDAsIDB4MjA3MSwKLQkweGE3MDAsIDB4NzY0OCwgMHg3MDY0LCAweDgxZmYsIDB4MDA0MCwgMHg5ZmMyLCAweDAwN2UsIDB4YTE4NiwKLQkweGFhYjMsIDB4MDA3ZiwgMHgwMDQwLCAweDlmYzIsIDB4ODAwMSwgMHhhNjAyLCAweDAwYzgsIDB4YTAyYywKLQkweDAwNzgsIDB4OWZjNSwgMHhhNjA2LCAweDAwNDAsIDB4YTAyYywgMHgyMTAwLCAweGFjMDYsIDB4MDA0MCwKLQkweGEwMjIsIDB4MTA3OCwgMHhhMjUyLCAweDAwNDAsIDB4YTAyMiwgMHg2NzFjLCAweGE3ODYsIDB4MDAwMSwKLQkweDAwNDAsIDB4YTA0NywgMHhhNzg2LCAweDAwMDQsIDB4MDA0MCwgMHhhMDQ3LCAweGE3ODYsIDB4MDAwNywKLQkweDAwNDAsIDB4YTAyMiwgMHgyNTAwLCAweGFjMDYsIDB4MDA0MCwgMHhhMDIyLCAweDI0MDAsIDB4YWMwNiwKLQkweDAwNDAsIDB4YTAyMiwgMHgxMDc4LCAweGEyNjYsIDB4MDBjMCwgMHhhMDIyLCAweDg4ZmYsIDB4MDA0MCwKLQkweDlmZWQsIDB4NjAyMCwgMHhhOTA2LCAweDAwYzAsIDB4YTAyMiwgMHgwZDdlLCAweDYwMDAsIDB4YTA4NiwKLQkweDAwMDQsIDB4MDBjMCwgMHg5ZmY3LCAweDAxN2UsIDB4MTA3OCwgMHgxNzU3LCAweDAxN2YsIDB4YTc4NiwKLQkweDAwMDgsIDB4MDBjMCwgMHhhMDA2LCAweDEwNzgsIDB4OGYxMCwgMHgwMGMwLCAweGEwMDYsIDB4MTA3OCwKLQkweDdjODMsIDB4MGQ3ZiwgMHgxMDc4LCAweDhlZDYsIDB4MDA3OCwgMHhhMDIyLCAweDYwMTAsIDB4MjA2OCwKLQkweDEwNzgsIDB4OGQxNiwgMHgwMDQwLCAweGEwMWYsIDB4YTc4NiwgMHgwMDAzLCAweDAwYzAsIDB4YTAzNiwKLQkweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwgMHgxMDc4LCAweGE0ZjIsIDB4MDE3ZSwKLQkweDEwNzgsIDB4OGY4ZCwgMHgxMDc4LCAweDRhNzMsIDB4MDE3ZiwgMHgxMDc4LCAweDhlYzksIDB4MGQ3ZiwKLQkweDEwNzgsIDB4OGVkNiwgMHhhY2UwLCAweDAwMTAsIDB4MjAwMSwgMHhhNzE2LCAweDIwMDQsIDB4YWMwMiwKLQkweDAwYzgsIDB4YTAyYywgMHgwMDc4LCAweDlmYWYsIDB4MTI3ZiwgMHgwMjdmLCAweDA0N2YsIDB4MDU3ZiwKLQkweDA2N2YsIDB4MDc3ZiwgMHgwODdmLCAweDBjN2YsIDB4MGU3ZiwgMHgwMDdjLCAweGE3ODYsIDB4MDAwNiwKLQkweDAwYzAsIDB4YTAxMCwgMHhhMzg2LCAweDAwMDUsIDB4MDA0MCwgMHhhMDQ0LCAweDEwNzgsIDB4YTRmMiwKLQkweDEwNzgsIDB4YTFkYSwgMHgwMDc4LCAweGEwMWYsIDB4MGQ3ZiwgMHgwMDc4LCAweGEwMjIsIDB4MTA3OCwKLQkweGEyNjYsIDB4MDBjMCwgMHhhMDIyLCAweDgxZmYsIDB4MDA0MCwgMHhhMDIyLCAweGExODAsIDB4MDAwMSwKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDE4LCAweDAwNDAsIDB4YTA1YywgMHhhMTgwLCAweDAwMDEsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAyZCwgMHgwMGMwLCAweGEwMjIsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDIsIDB4MDBjMCwKLQkweGEwMjIsIDB4MTA3OCwgMHg4ZWZjLCAweDAwNDAsIDB4YTA2ZCwgMHgxMDc4LCAweDhmMTAsIDB4MDBjMCwKLQkweGEwMjIsIDB4MTA3OCwgMHg3YzgzLCAweDAwNzgsIDB4YTA3NSwgMHgxMDc4LCAweDI4YTYsIDB4MTA3OCwKLQkweDhmMTAsIDB4MDBjMCwgMHhhMDc1LCAweDEwNzgsIDB4N2M4MywgMHgxMDc4LCAweDhlZDYsIDB4MDA3OCwKLQkweGEwMjIsIDB4MGM3ZSwgMHgwZTdlLCAweDAxN2UsIDB4MmMwOCwgMHgyMTcwLCAweGEwMDYsIDB4MTA3OCwKLQkweGExZjYsIDB4MDE3ZiwgMHgwMDQwLCAweGEwODksIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MTA3OSwKLQkweGEwOGMsIDB4MGU3ZiwgMHgwYzdmLCAweDAwN2MsIDB4YTA5NCwgMHhhMDk0LCAweGEwOTQsIDB4YTA5NCwKLQkweGEwOTQsIDB4YTA5NCwgMHhhMDk2LCAweGEwOTQsIDB4YTAwNiwgMHgwMDdjLCAweDA0N2UsIDB4MDE3ZSwKLQkweDcwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMjQsIDB4YTRhNCwgMHgwMGZmLCAweDg0MjcsIDB4MmMwMCwKLQkweDIwMDksIDB4MDAyMCwgMHgxMDc4LCAweGEyMmQsIDB4MDE3ZiwgMHgwNDdmLCAweDAzN2UsIDB4MjAxOSwKLQkweDAwMDIsIDB4MTA3OCwgMHg5ZGQ3LCAweDAzN2YsIDB4YTA4NSwgMHgwMDAxLCAweDAwN2MsIDB4MjAwMSwKLQkweDAwMDEsIDB4MTA3OCwgMHg0NGVlLCAweDE1N2UsIDB4MDE3ZSwgMHgwMjdlLCAweDAzN2UsIDB4MjBhOSwKLQkweDAwMDQsIDB4MjAxOSwgMHhhNzA1LCAweDIwMTEsIDB4YWM5NiwgMHgxMDc4LCAweDgwZGUsIDB4MDM3ZiwKLQkweDAyN2YsIDB4MDE3ZiwgMHgxNTdmLCAweGEwMDUsIDB4MDA3YywgMHgwZjdlLCAweDBlN2UsIDB4MGM3ZSwKLQkweDA4N2UsIDB4MDc3ZSwgMHgwNjdlLCAweDAyN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4Mjc0MCwKLQkweDIwNjEsIDB4YWUwMCwgMHgyMDc5LCAweDAwMDEsIDB4OGZmZiwgMHgwMDQwLCAweGExMmQsIDB4MjA3MSwKLQkweGE3MDAsIDB4NzY0OCwgMHg3MDY0LCAweDgwMDEsIDB4YTYwMiwgMHgwMGM4LCAweGExMmQsIDB4ODhmZiwKLQkweDAwNDAsIDB4YTBlOCwgMHgyODAwLCAweGFjMDYsIDB4MDBjMCwgMHhhMTIzLCAweDIwNzksIDB4MDAwMCwKLQkweDEwNzgsIDB4YTI1MiwgMHgwMDQwLCAweGExMjMsIDB4MjQwMCwgMHhhYzA2LCAweDAwNDAsIDB4YTEyMywKLQkweDY3MWMsIDB4YTc4NiwgMHgwMDA2LCAweDAwYzAsIDB4YTEyMywgMHhhNzg2LCAweDAwMDcsIDB4MDA0MCwKLQkweGExMjMsIDB4ODhmZiwgMHgwMGMwLCAweGExMDcsIDB4NjAxOCwgMHhhMjA2LCAweDAwYzAsIDB4YTEyMywKLQkweDg1ZmYsIDB4MDA0MCwgMHhhMTA3LCAweDYwMjAsIDB4YTEwNiwgMHgwMGMwLCAweGExMjMsIDB4MGQ3ZSwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDA0LCAweDAwYzAsIDB4YTExMywgMHgxMDc4LCAweGE0YTUsIDB4NjAxZiwKLQkweDAwMDcsIDB4MTA3OCwgMHgxNzU3LCAweDYwMTAsIDB4MjA2OCwgMHgxMDc4LCAweDhkMTYsIDB4MDA0MCwKLQkweGExMWQsIDB4MDQ3ZSwgMHgxMDc4LCAweGExZGEsIDB4MDQ3ZiwgMHgwZDdmLCAweDEwNzgsIDB4OGVkNiwKLQkweDg4ZmYsIDB4MDBjMCwgMHhhMTM3LCAweGFjZTAsIDB4MDAxMCwgMHgyMDAxLCAweGE3MTYsIDB4MjAwNCwKLQkweGFjMDIsIDB4MDBjOCwgMHhhMTJkLCAweDAwNzgsIDB4YTBkNCwgMHhhMDA2LCAweDEyN2YsIDB4MDI3ZiwKLQkweDA2N2YsIDB4MDc3ZiwgMHgwODdmLCAweDBjN2YsIDB4MGU3ZiwgMHgwZjdmLCAweDAwN2MsIDB4YThjNSwKLQkweDAwMDEsIDB4MDA3OCwgMHhhMTJlLCAweDA3N2UsIDB4MDU3ZSwgMHgwODdlLCAweDIwNDEsIDB4MDAwMCwKLQkweDIwMjksIDB4MDAwMSwgMHgyYzIwLCAweDIwMTksIDB4MDAwMiwgMHg2MjE4LCAweDA5N2UsIDB4MjA0OSwKLQkweDAwMDAsIDB4MTA3OCwgMHg3MjQ2LCAweDA5N2YsIDB4MDg3ZiwgMHgyMDM5LCAweDAwMDAsIDB4MTA3OCwKLQkweDcyZjMsIDB4MTA3OCwgMHhhMGM1LCAweDA1N2YsIDB4MDc3ZiwgMHgwMDdjLCAweDAyN2UsIDB4MDQ3ZSwKLQkweDA1N2UsIDB4MDc3ZSwgMHgwYzdlLCAweDE1N2UsIDB4MmMyMCwgMHgyMTI4LCAweDIwYTksIDB4MDA3ZiwKLQkweDIwMDksIDB4MDAwMCwgMHgwMTdlLCAweDAzN2UsIDB4MTA3OCwgMHg0NWM0LCAweDAwYzAsIDB4YTE3ZSwKLQkweDJjMTAsIDB4MDU3ZSwgMHgwODdlLCAweDIwNDEsIDB4MDAwMCwgMHgyNTA4LCAweDIwMjksIDB4MDAwMSwKLQkweDA5N2UsIDB4MjA0OSwgMHgwMDAwLCAweDEwNzgsIDB4NzI0NiwgMHgwOTdmLCAweDA4N2YsIDB4MjAzOSwKLQkweDAwMDAsIDB4MTA3OCwgMHg3MmYzLCAweDEwNzgsIDB4YTBjNSwgMHgwNTdmLCAweDAzN2YsIDB4MDE3ZiwKLQkweDgxMDgsIDB4MDBmMCwgMHhhMTYyLCAweDE1N2YsIDB4MGM3ZiwgMHgwNzdmLCAweDA1N2YsIDB4MDQ3ZiwKLQkweDAyN2YsIDB4MDA3YywgMHgwNzdlLCAweDA1N2UsIDB4NjIxOCwgMHgwODdlLCAweDIwNDEsIDB4MDAwMCwKLQkweDIwMjksIDB4MDAwMSwgMHgyMDE5LCAweDAwNDgsIDB4MDk3ZSwgMHgyMDQ5LCAweDAwMDAsIDB4MTA3OCwKLQkweDcyNDYsIDB4MDk3ZiwgMHgwODdmLCAweDIwMzksIDB4MDAwMCwgMHgxMDc4LCAweDcyZjMsIDB4MmMyMCwKLQkweDEwNzgsIDB4YTBjNSwgMHgwNTdmLCAweDA3N2YsIDB4MDA3YywgMHgwMjdlLCAweDA0N2UsIDB4MDU3ZSwKLQkweDA3N2UsIDB4MGM3ZSwgMHgxNTdlLCAweDJjMjAsIDB4MjBhOSwgMHgwMDdmLCAweDIwMDksIDB4MDAwMCwKLQkweDAxN2UsIDB4MDM3ZSwgMHgxMDc4LCAweDQ1YzQsIDB4MDBjMCwgMHhhMWNlLCAweDJjMTAsIDB4MDg3ZSwKLQkweDIwNDEsIDB4MDAwMCwgMHgyODI4LCAweDA0N2UsIDB4MjAyMSwgMHgwMDAxLCAweDEwNzgsIDB4YTQ4MiwKLQkweDA0N2YsIDB4MDk3ZSwgMHgyMDQ5LCAweDAwMDAsIDB4MTA3OCwgMHg3MjQ2LCAweDA5N2YsIDB4MDg3ZiwKLQkweDIwMzksIDB4MDAwMCwgMHgxMDc4LCAweDcyZjMsIDB4MTA3OCwgMHhhMGM1LCAweDAzN2YsIDB4MDE3ZiwKLQkweDgxMDgsIDB4MDBmMCwgMHhhMWIwLCAweDE1N2YsIDB4MGM3ZiwgMHgwNzdmLCAweDA1N2YsIDB4MDQ3ZiwKLQkweDAyN2YsIDB4MDA3YywgMHgwMTdlLCAweDBmN2UsIDB4YWQ4MiwgMHhjZTAwLCAweDAwNDgsIDB4YTFmMywKLQkweGFkODIsIDB4ZmZmZiwgMHgwMGM4LCAweGExZjMsIDB4NjgwMCwgMHhhMDdkLCAweDAwNDAsIDB4YTFmMCwKLQkweDY4MDMsIDB4MDAwMCwgMHg2YjUyLCAweDEwNzgsIDB4NGE3MywgMHgyZjY4LCAweDAwNzgsIDB4YTFlNCwKLQkweDZiNTIsIDB4MTA3OCwgMHg0YTczLCAweDBmN2YsIDB4MDE3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MDQ3ZSwKLQkweDAzN2UsIDB4MjA2MSwgMHhhZTAwLCAweGEwMDUsIDB4MDBjMCwgMHhhMjA2LCAweDIwNzEsIDB4YTcwMCwKLQkweDc0NDgsIDB4NzA2NCwgMHg4MDAxLCAweGE0MDIsIDB4MDBjOCwgMHhhMjI4LCAweDIxMDAsIDB4YWMwNiwKLQkweDAwNDAsIDB4YTIxYSwgMHg2MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwMDQwLCAweGEyMWEsIDB4NjAwOCwKLQkweGEyMDYsIDB4MDBjMCwgMHhhMjFhLCAweDYwMTgsIDB4YTFhMCwgMHgwMDA2LCAweDI0MjQsIDB4YTQwNiwKLQkweDAwNDAsIDB4YTIyNCwgMHhhY2UwLCAweDAwMTAsIDB4MjAwMSwgMHhhNzE2LCAweDIwMDQsIDB4YWMwMiwKLQkweDAwYzgsIDB4YTIyOCwgMHgwMDc4LCAweGEyMDYsIDB4YTA4NSwgMHgwMDAxLCAweDAwNzgsIDB4YTIyOSwKLQkweGEwMDYsIDB4MDM3ZiwgMHgwNDdmLCAweDBlN2YsIDB4MDA3YywgMHgwZDdlLCAweDAwN2UsIDB4MTA3OCwKLQkweDEzOGIsIDB4MDA3ZiwgMHgxMDQwLCAweDEzMzIsIDB4NjgzNywgMHgwMTBkLCAweDY4NWUsIDB4MDI3ZSwKLQkweDIwMTAsIDB4MTA3OCwgMHg4ZDAyLCAweDIwMDEsIDB4MDAwMCwgMHgwMDQwLCAweGEyNDMsIDB4MjIwMCwKLQkweGEwODAsIDB4MDAwOCwgMHgyMDA0LCAweDAyN2YsIDB4Njg0YSwgMHg2OTU2LCAweDZjNDYsIDB4Njg0ZiwKLQkweDAwMDAsIDB4YTAwNiwgMHg2OGIyLCAweDY4MDIsIDB4NjgzYSwgMHg2ODVhLCAweDEwNzgsIDB4NGE3MywKLQkweDBkN2YsIDB4MDA3YywgMHg2NzAwLCAweGE3ODYsIDB4MDAwMCwgMHgwMDQwLCAweGEyNjUsIDB4YTc4NiwKLQkweDAwMDEsIDB4MDA0MCwgMHhhMjY1LCAweGE3ODYsIDB4MDAwYSwgMHgwMDQwLCAweGEyNjUsIDB4YTc4NiwKLQkweDAwMDksIDB4MDA0MCwgMHhhMjY1LCAweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweDBlN2UsIDB4NjAxOCwKLQkweDIwNzAsIDB4NzBhMCwgMHhhMjA2LCAweDBlN2YsIDB4MDA3YywgMHgwMTdlLCAweDYwMDQsIDB4YTA4ZSwKLQkweDAwMWUsIDB4MDBjMCwgMHhhMjg3LCAweDgwMDcsIDB4NjEzMCwgMHhhMThjLCAweDAwZmYsIDB4YTEwNSwKLQkweDYwMzIsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDFmLCAweDAwMDUsIDB4MjAwMSwKLQkweGE5YTMsIDB4MjAwNCwgMHg2MDE2LCAweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MDE3ZiwKLQkweDAwN2MsIDB4MDAwNSwgMHgwMDA1LCAweDAwN2MsIDB4NjAyNCwgMHhkMGU0LCAweDAwNDAsIDB4YTI5ZCwKLQkweGQwY2MsIDB4MDA0MCwgMHhhMjk3LCAweDEwNzgsIDB4OGZjZiwgMHgwMDc4LCAweGEyOWQsIDB4MTA3OCwKLQkweGE0YTUsIDB4MTA3OCwgMHg1YmMxLCAweDEwNzgsIDB4NzcyZCwgMHgwMDdjLCAweGEyODAsIDB4MDAwNywKLQkweDIwMDQsIDB4YTA4NCwgMHgwMDBmLCAweDAwNzksIDB4YTJhNSwgMHhhMmFlLCAweGEyYWUsIDB4YTJhZSwKLQkweGEyYjAsIDB4YTJhZSwgMHhhMmIwLCAweGEyYjAsIDB4YTJhZSwgMHhhMmIwLCAweGEwMDYsIDB4MDA3YywKLQkweGEwODUsIDB4MDAwMSwgMHgwMDdjLCAweGEyODAsIDB4MDAwNywgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwKLQkweDAwNzksIDB4YTJiYSwgMHhhMmMzLCAweGEyYzMsIDB4YTJjMywgMHhhMmMzLCAweGEyYzMsIDB4YTJjMywKLQkweGEyY2UsIDB4YTJjMywgMHhhMmMzLCAweDYwMDcsIDB4MDAzYiwgMHg2MDJiLCAweDAwMDksIDB4NjAxMywKLQkweDJhMDAsIDB4NjAwMywgMHgwMDAxLCAweDEwNzgsIDB4NWQ4YSwgMHgwMDdjLCAweDBjN2UsIDB4MjI2MCwKLQkweDEwNzgsIDB4YTRhNSwgMHg2MDNmLCAweDAwMDAsIDB4NjAyNCwgMHhjMGY0LCAweGMwY2MsIDB4NjAyNiwKLQkweDBjN2YsIDB4MGQ3ZSwgMHgyMjY4LCAweGExODYsIDB4MDAwNywgMHgwMGMwLCAweGEzMmYsIDB4NjgxMCwKLQkweGEwMDUsIDB4MDA0MCwgMHhhMmVjLCAweGEwODAsIDB4MDAxMywgMHgyMDA0LCAweGQwZmMsIDB4MDBjMCwKLQkweGEyZWMsIDB4MGQ3ZiwgMHgwMDc4LCAweGEyYzMsIDB4NjAwNywgMHgwMDNhLCAweDYwMDMsIDB4MDAwMSwKLQkweDEwNzgsIDB4NWQ4YSwgMHgxMDc4LCAweDYyZDEsIDB4MGM3ZSwgMHgyZDYwLCAweDYxMDAsIDB4YTE4NiwKLQkweDAwMDIsIDB4MDBjMCwgMHhhM2JkLCAweDYwMTAsIDB4YTAwNSwgMHgwMGMwLCAweGEzMDYsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwNywgMHgxMGMwLCAweDEzMzIsIDB4MDA3OCwgMHhhM2JkLCAweGEwOGMsIDB4ZjAwMCwKLQkweDAwYzAsIDB4YTMxMiwgMHgwMDc4LCAweGEzMTIsIDB4MjA2OCwgMHg2ODAwLCAweGEwMDUsIDB4MDBjMCwKLQkweGEzMGMsIDB4MmQwMCwgMHhhMDgwLCAweDAwMTMsIDB4MjAwNCwgMHhhMDg0LCAweDAwMDMsIDB4YTA4NiwKLQkweDAwMDIsIDB4MDBjMCwgMHhhMzJiLCAweDYwMTAsIDB4MjA2OCwgMHg2ODRjLCAweGMwZGMsIDB4YzBmNCwKLQkweDY4NGUsIDB4Njg1MCwgMHhjMGY0LCAweGMwZmMsIDB4Njg1MiwgMHgyMDA5LCAweDAwNDMsIDB4MTA3OCwKLQkweDljMmUsIDB4MDA3OCwgMHhhM2JkLCAweDIwMDksIDB4MDA0MSwgMHgwMDc4LCAweGEzYjcsIDB4YTE4NiwKLQkweDAwMDUsIDB4MDBjMCwgMHhhMzc2LCAweDY4MTAsIDB4YTA4MCwgMHgwMDEzLCAweDIwMDQsIDB4ZDBiYywKLQkweDAwYzAsIDB4YTMzZCwgMHgwZDdmLCAweDAwNzgsIDB4YTJjMywgMHhkMGI0LCAweDAwNDAsIDB4YTM0NSwKLQkweGQwZmMsIDB4MTA0MCwgMHgxMzMyLCAweDAwNzgsIDB4YTJkZiwgMHg2MDA3LCAweDAwM2EsIDB4NjAwMywKLQkweDAwMDEsIDB4MTA3OCwgMHg1ZDhhLCAweDEwNzgsIDB4NjJkMSwgMHgwYzdlLCAweDJkNjAsIDB4NjEwMCwKLQkweGExODYsIDB4MDAwMiwgMHgwMDQwLCAweGEzNTgsIDB4YTE4NiwgMHgwMDA0LCAweDAwYzAsIDB4YTNiZCwKLQkweDIwNzEsIDB4YTllNywgMHg3MDAwLCAweGEwODYsIDB4MDAwMywgMHgwMGMwLCAweGEzNjUsIDB4NzAwNCwKLQkweGFjMDYsIDB4MDBjMCwgMHhhMzY1LCAweDcwMDMsIDB4MDAwMCwgMHg2ODEwLCAweGEwODAsIDB4MDAxMywKLQkweDIwMGMsIDB4YzFmNCwgMHhjMWRjLCAweDIxMDIsIDB4ODAwMCwgMHgyMDBjLCAweGMxZjQsIDB4YzFmYywKLQkweGMxYmMsIDB4MjEwMiwgMHgyMDA5LCAweDAwNDIsIDB4MDA3OCwgMHhhM2I3LCAweDAzN2UsIDB4MGQ3ZSwKLQkweDBkN2UsIDB4MTA3OCwgMHgxMzhiLCAweDAzN2YsIDB4MTA0MCwgMHgxMzMyLCAweDY4MzcsIDB4MDEwZCwKLQkweDY4MDMsIDB4MDAwMCwgMHg2ODNiLCAweDAwMDAsIDB4Njg1YiwgMHgwMDAwLCAweDZiNWUsIDB4Njg1NywKLQkweDAwNDUsIDB4MmMwMCwgMHg2ODYyLCAweDYwMzQsIDB4Njg3MiwgMHgyMzYwLCAweDYwMjQsIDB4YzBkZCwKLQkweDYwMjYsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4ODAwNywKLQkweDYzMjAsIDB4NmI0YSwgMHg2ODQ2LCAweDY4NGYsIDB4MDAwMCwgMHg2ZDZhLCAweDZlNjYsIDB4Njg2ZiwKLQkweDAwMDEsIDB4MTA3OCwgMHg0YTczLCAweDIwMTksIDB4MDA0NSwgMHg2MDA4LCAweDIwNjgsIDB4MTA3OCwKLQkweDlkZDcsIDB4MmQwMCwgMHg2MDBhLCAweDYwMWYsIDB4MDAwNiwgMHg2MDAzLCAweDAwMDcsIDB4NjAxNywKLQkweDAwMDAsIDB4NjAzZiwgMHgwMDAwLCAweDBkN2YsIDB4MDM3ZiwgMHgwMDc4LCAweGEzYmUsIDB4NjAzZiwKLQkweDAwMDAsIDB4NjAwMywgMHgwMDA3LCAweDEwNzgsIDB4OWMyZSwgMHgwYzdmLCAweDBkN2YsIDB4MDA3YywKLQkweGExODYsIDB4MDAxMywgMHgwMGMwLCAweGEzY2EsIDB4NjAwNCwgMHhhMDgyLCAweDAwODUsIDB4MjAwOCwKLQkweDAwNzksIDB4YTNlNCwgMHhhMTg2LCAweDAwMjcsIDB4MDBjMCwgMHhhM2RkLCAweDEwNzgsIDB4NjFjZCwKLQkweDAzN2UsIDB4MGQ3ZSwgMHg2MDEwLCAweDIwNjgsIDB4MjAxOSwgMHgwMDA0LCAweDEwNzgsIDB4YTFkYSwKLQkweDBkN2YsIDB4MDM3ZiwgMHgxMDc4LCAweDYyZDEsIDB4MDA3YywgMHhhMTg2LCAweDAwMTQsIDB4MDA0MCwKLQkweGEzY2UsIDB4MTA3OCwgMHg3NzczLCAweDAwN2MsIDB4YTNlZCwgMHhhM2ViLCAweGEzZWIsIDB4YTNlYiwKLQkweGEzZWIsIDB4YTNlYiwgMHhhM2VkLCAweDEwNzgsIDB4MTMzMiwgMHgxMDc4LCAweDYxY2QsIDB4NjAwMywKLQkweDAwMGMsIDB4MTA3OCwgMHg2MmQxLCAweDAwN2MsIDB4YTE4MiwgMHgwMDhjLCAweDAwYzgsIDB4YTNmZSwKLQkweGExODIsIDB4MDA4NSwgMHgwMDQ4LCAweGEzZmUsIDB4MDA3OSwgMHhhNDAxLCAweDEwNzgsIDB4Nzc3MywKLQkweDAwN2MsIDB4YTQwOCwgMHhhNDA4LCAweGE0MDgsIDB4YTQwOCwgMHhhNDBhLCAweGE0MjksIDB4YTQwOCwKLQkweDEwNzgsIDB4MTMzMiwgMHgwZDdlLCAweDJjNjgsIDB4MTA3OCwgMHg3NmM3LCAweDAwNDAsIDB4YTQyNCwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMWUsIDB4MjAwOSwgMHhhYzhlLCAweDIxMGMsIDB4NjEzNiwKLQkweDIwMDksIDB4YWM4ZiwgMHgyMTBjLCAweDYxM2EsIDB4NjAwYiwgMHhmZmZmLCAweDY5MTgsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwNCwgMHgxMDc4LCAweDVkOGEsIDB4MmQ2MCwgMHgxMDc4LCAweDc3MmQsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MTA3OCwgMHg3NzJkLCAweDAwN2MsIDB4MGU3ZSwgMHg2MDE4LCAweDIwNzAsIDB4NzAwMCwKLQkweGQwZWMsIDB4MGU3ZiwgMHgwMDdjLCAweDYwMTAsIDB4YTA4YywgMHhmMDAwLCAweDAwNDAsIDB4YTQ4MSwKLQkweGEwODAsIDB4MDAxMywgMHgyMDBjLCAweGQxZWMsIDB4MDA0MCwgMHhhNDgxLCAweDIwMDEsIDB4YTc3MiwKLQkweDIwMDQsIDB4ZDBlYywgMHgwMDQwLCAweGE0ODEsIDB4NjAwMywgMHgwMDAyLCAweDYwMjQsIDB4YzBlNSwKLQkweDYwMjYsIDB4ZDFhYywgMHgwMDQwLCAweGE0NWYsIDB4MGY3ZSwgMHgyYzc4LCAweDEwNzgsIDB4NDk1ZiwKLQkweDBmN2YsIDB4MDA0MCwgMHhhNDVmLCAweDIwMDEsIDB4YTlhNCwgMHgyMDA0LCAweDYwM2UsIDB4MjAwOSwKLQkweGE3NzIsIDB4MjEwYywgMHhkMWY0LCAweDAwYzAsIDB4YTQ3ZiwgMHgwMDc4LCAweGE0NzEsIDB4MjAwOSwKLQkweGE3NzIsIDB4MjEwYywgMHhkMWY0LCAweDAwNDAsIDB4YTQ2YiwgMHg2MDI0LCAweGMwZTQsIDB4NjAyNiwKLQkweGEwMDYsIDB4MDA3OCwgMHhhNDgxLCAweDIwMDEsIDB4YTlhNCwgMHgyMDBjLCAweDgxMDMsIDB4YTEwMCwKLQkweDYwM2UsIDB4NjAxOCwgMHhhMDg4LCAweDAwMmIsIDB4MjEwNCwgMHhhMDA1LCAweDAwNDAsIDB4YTQ3YywKLQkweGEwODgsIDB4MDAwMywgMHgwMDc4LCAweGE0NzQsIDB4MmMwYSwgMHg2MDBmLCAweDAwMDAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDA3YywgMHgwMTdlLCAweDBjN2UsIDB4MGU3ZSwgMHg2MTIwLCAweGEyZjAsIDB4MDAyYiwKLQkweDJlMDQsIDB4MjA2MCwgMHg4Y2ZmLCAweDAwNDAsIDB4YTRhMSwgMHg4NGZmLCAweDAwYzAsIDB4YTQ5NCwKLQkweDYwMjAsIDB4YTEwNiwgMHgwMGMwLCAweGE0OWMsIDB4NjAwYywgMHgyMDcyLCAweDEwNzgsIDB4NWJjMSwKLQkweDEwNzgsIDB4NzcyZCwgMHgwMDc4LCAweGE0OWUsIDB4YWNmMCwgMHgwMDAzLCAweDJlNjQsIDB4MDA3OCwKLQkweGE0OGEsIDB4MGU3ZiwgMHgwYzdmLCAweDAxN2YsIDB4MDA3YywgMHgwZDdlLCAweDYwMTgsIDB4YTBlOCwKLQkweDAwMmIsIDB4MmQwNCwgMHhhMDA1LCAweDAwNDAsIDB4YTRiNywgMHhhYzA2LCAweDAwNDAsIDB4YTRiNSwKLQkweDJkMDQsIDB4YTBlOCwgMHgwMDAzLCAweDAwNzgsIDB4YTRhOSwgMHg2MDBjLCAweDIwNmEsIDB4MGQ3ZiwKLQkweDAwN2MsIDB4MDI3ZSwgMHgwMzdlLCAweDE1N2UsIDB4MjAxMSwgMHhhNzI2LCAweDIyMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4MjAxOSwgMHhhYzhlLCAweDIzMzQsIDB4YTYzNiwgMHgwMGMwLCAweGE0ZTUsIDB4ODMxOCwKLQkweDIzMzQsIDB4MjIwNCwgMHhhMDg0LCAweGZmMDAsIDB4YTYzNiwgMHgwMGMwLCAweGE0ZTUsIDB4MjAxMSwKLQkweGFjOTAsIDB4NjAxOCwgMHhhMDk4LCAweDAwMGEsIDB4MjBhOSwgMHgwMDA0LCAweDEwNzgsIDB4ODBkZSwKLQkweDAwYzAsIDB4YTRlNSwgMHgyMDExLCAweGFjOTQsIDB4NjAxOCwgMHhhMDk4LCAweDAwMDYsIDB4MjBhOSwKLQkweDAwMDQsIDB4MTA3OCwgMHg4MGRlLCAweDAwYzAsIDB4YTRlNSwgMHgxNTdmLCAweDAzN2YsIDB4MDI3ZiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE3MDAsIDB4MTA3OCwgMHg0MmI4LCAweDEwNzgsIDB4MjY3NywKLQkweDBlN2YsIDB4MDA3YywgMHgwZTdlLCAweDYwMTgsIDB4MjA3MCwgMHg3MDAwLCAweGQwZmMsIDB4MDA0MCwKLQkweGE0ZmIsIDB4MTA3OCwgMHhhNGZkLCAweDBlN2YsIDB4MDA3YywgMHg2ODUwLCAweGMwZTUsIDB4Njg1MiwKLQkweDAwN2MsIDB4MGU3ZSwgMHgwYzdlLCAweDA3N2UsIDB4MDY3ZSwgMHgwNTdlLCAweDA0N2UsIDB4MDI3ZSwKLQkweDAxN2UsIDB4MTI3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjAyOSwgMHhhOWJhLCAweDI1MmMsIDB4MjAyMSwKLQkweGE5YzAsIDB4MjQyNCwgMHgyMDYxLCAweGFlMDAsIDB4MjA3MSwgMHhhNzAwLCAweDc2NDgsIDB4NzA2NCwKLQkweGE2MDYsIDB4MDA0MCwgMHhhNTU1LCAweDY3MWMsIDB4YTc4NiwgMHgwMDAxLCAweDAwNDAsIDB4YTUyNCwKLQkweGE3ODYsIDB4MDAwOCwgMHgwMGMwLCAweGE1NGIsIDB4MjUwMCwgMHhhYzA2LCAweDAwNDAsIDB4YTU0YiwKLQkweDI0MDAsIDB4YWMwNiwgMHgwMDQwLCAweGE1NGIsIDB4MTA3OCwgMHhhMjUyLCAweDAwNDAsIDB4YTU0YiwKLQkweDEwNzgsIDB4YTI2NiwgMHgwMGMwLCAweGE1NGIsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDQsIDB4MDBjMCwKLQkweGE1M2QsIDB4MDE3ZSwgMHgxMDc4LCAweDE3NTcsIDB4MDE3ZiwgMHgxMDc4LCAweDhlZmMsIDB4MDBjMCwKLQkweGE1NDMsIDB4MTA3OCwgMHgyOGE2LCAweDEwNzgsIDB4OGYxMCwgMHgwMGMwLCAweGE1NDksIDB4MTA3OCwKLQkweDdjODMsIDB4MTA3OCwgMHg4ZWQ2LCAweGFjZTAsIDB4MDAxMCwgMHgyMDAxLCAweGE3MTYsIDB4MjAwNCwKLQkweGFjMDIsIDB4MDBjOCwgMHhhNTU1LCAweDAwNzgsIDB4YTUxNCwgMHgxMjdmLCAweDAxN2YsIDB4MDI3ZiwKLQkweDA0N2YsIDB4MDU3ZiwgMHgwNjdmLCAweDA3N2YsIDB4MGM3ZiwgMHgwZTdmLCAweDAwN2MsIDB4MTI3ZSwKLQkweDAwN2UsIDB4MGU3ZSwgMHgwMTdlLCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE3NDAsIDB4ZDVhNCwKLQkweDAwNDAsIDB4YTU2ZCwgMHg3MDM0LCAweDgwMDAsIDB4NzAzNiwgMHhkNWI0LCAweDAwNDAsIDB4YTU3MywKLQkweDcwMzAsIDB4ODAwMCwgMHg3MDMyLCAweGQ1YWMsIDB4MDA0MCwgMHhhNTg5LCAweDI1MDAsIDB4YTA4NCwKLQkweDAwMDcsIDB4YTA4ZSwgMHgwMDAzLCAweDAwNDAsIDB4YTU4OSwgMHhhMDhlLCAweDAwMDQsIDB4MDA0MCwKLQkweGE1ODksIDB4YTA4ZSwgMHgwMDA1LCAweDAwNDAsIDB4YTU4OSwgMHgyMDcxLCAweGE3NGEsIDB4MTA3OCwKLQkweGE1Y2EsIDB4MDE3ZiwgMHgwZTdmLCAweDAwN2YsIDB4MTI3ZiwgMHgwMDdjLCAweDEyN2UsIDB4MDA3ZSwKLQkweDBlN2UsIDB4MDE3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHhhNzQwLCAweGQ1YTQsIDB4MDA0MCwKLQkweGE1OWMsIDB4NzAzNCwgMHg4MDAwLCAweDcwMzYsIDB4ZDViNCwgMHgwMDQwLCAweGE1YTIsIDB4NzAzMCwKLQkweDgwMDAsIDB4NzAzMiwgMHhkNWFjLCAweDAwNDAsIDB4YTViOCwgMHgyNTAwLCAweGEwODQsIDB4MDAwNywKLQkweGEwOGUsIDB4MDAwMywgMHgwMDQwLCAweGE1YjgsIDB4YTA4ZSwgMHgwMDA0LCAweDAwNDAsIDB4YTViOCwKLQkweGEwOGUsIDB4MDAwNSwgMHgwMDQwLCAweGE1YjgsIDB4MjA3MSwgMHhhNzRhLCAweDEwNzgsIDB4YTVjYSwKLQkweDAxN2YsIDB4MGU3ZiwgMHgwMDdmLCAweDEyN2YsIDB4MDA3YywgMHgxMjdlLCAweDAwN2UsIDB4MGU3ZSwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGE3NDIsIDB4MTA3OCwgMHhhNWNhLCAweDBlN2YsIDB4MDA3ZiwKLQkweDEyN2YsIDB4MDA3YywgMHgyZTA0LCAweDgwMDAsIDB4MjA3MiwgMHgwMGM4LCAweGE1ZDMsIDB4OGU3MCwKLQkweDJlMDQsIDB4ODAwMCwgMHgyMDcyLCAweDAwN2MsIDB4MGU3ZSwgMHgyMDcxLCAweGE3NDAsIDB4MTA3OCwKLQkweGE1Y2EsIDB4MGU3ZiwgMHgwMDdjLCAweDBlN2UsIDB4MjA3MSwgMHhhNzQ0LCAweDEwNzgsIDB4YTVjYSwKLQkweDBlN2YsIDB4MDA3YywgMHgxMjdlLCAweDAwN2UsIDB4MGU3ZSwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweGE3NDAsIDB4NzA0NCwgMHg4MDAwLCAweDcwNDYsIDB4MGU3ZiwgMHgwMDdmLCAweDEyN2YsIDB4MDA3YywKLQkweDAwMDEsIDB4MDAwMiwgMHgwMDA0LCAweDAwMDgsIDB4MDAxMCwgMHgwMDIwLCAweDAwNDAsIDB4MDA4MCwKLQkweDAxMDAsIDB4MDIwMCwgMHgwNDAwLCAweDA4MDAsIDB4MTAwMCwgMHgyMDAwLCAweDQwMDAsIDB4ODAwMCwKLQkweDQ4MTEKLX07Ci0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjEwMHRwX2xlbmd0aDAxID0gMHg5NjAxOwotI2Vsc2UKLXVuc2lnbmVkIHNob3J0IHJpc2NfY29kZV9sZW5ndGgwMSA9IDB4OTYwMTsKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIyMDAuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjIwMC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWVmNzJkLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjIwMC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIFFMb2dpYyBGaWJyZSBDaGFubmVsIEhCQSBEcml2ZXIKLSAqIENvcHlyaWdodCAoQykgIDIwMDMgQ2hyaXN0b3BoIEhlbGx3aWcuCi0gKiBDb3B5cmlnaHQgKGMpICAyMDAzLTIwMDUgUUxvZ2ljIENvcnBvcmF0aW9uCi0gKgotICogU2VlIExJQ0VOU0UucWxhMnh4eCBmb3IgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgZGV0YWlscy4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLQotI2luY2x1ZGUgInFsYV9kZWYuaCIKLQotc3RhdGljIGNoYXIgcWxhX2RyaXZlcl9uYW1lW10gPSAicWxhMjIwMCI7Ci0KLWV4dGVybiB1bnNpZ25lZCBjaGFyICBmdzIyMDB0cF92ZXJzaW9uW107Ci1leHRlcm4gdW5zaWduZWQgY2hhciAgZncyMjAwdHBfdmVyc2lvbl9zdHJbXTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCBmdzIyMDB0cF9hZGRyMDE7Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMjAwdHBfY29kZTAxW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMjAwdHBfbGVuZ3RoMDE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcWxhX2Z3X2luZm8gcWxhX2Z3X3RibFtdID0gewotCXsKLQkJLmFkZHJlc3NpbmcJPSBGV19JTkZPX0FERFJfTk9STUFMLAotCQkuZndjb2RlCQk9ICZmdzIyMDB0cF9jb2RlMDFbMF0sCi0JCS5md2xlbgkJPSAmZncyMjAwdHBfbGVuZ3RoMDEsCi0JCS5md3N0YXJ0CT0gJmZ3MjIwMHRwX2FkZHIwMSwKLQl9LAotCi0JeyBGV19JTkZPX0FERFJfTk9NT1JFLCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBxbGFfYm9hcmRfaW5mbyBxbGFfYm9hcmRfdGJsID0gewotCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQotCS5pc3BfbmFtZQk9ICJJU1AyMjAwIiwKLQkuZndfaW5mbwk9IHFsYV9md190YmwsCi19OwotCi1zdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcWxhMjIwMF9wY2lfdGJsW10gPSB7Ci0JewotCQkudmVuZG9yCQk9IFBDSV9WRU5ET1JfSURfUUxPR0lDLAotCQkuZGV2aWNlCQk9IFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIyMDAsCi0JCS5zdWJ2ZW5kb3IJPSBQQ0lfQU5ZX0lELAotCQkuc3ViZGV2aWNlCT0gUENJX0FOWV9JRCwKLQkJLmRyaXZlcl9kYXRhCT0gKHVuc2lnbmVkIGxvbmcpJnFsYV9ib2FyZF90YmwsCi0JfSwKLQotCXswLCAwfSwKLX07Ci1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcWxhMjIwMF9wY2lfdGJsKTsKLQotc3RhdGljIGludCBfX2RldmluaXQKLXFsYTIyMDBfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCi17Ci0JcmV0dXJuIHFsYTJ4MDBfcHJvYmVfb25lKHBkZXYsCi0JICAgIChzdHJ1Y3QgcWxhX2JvYXJkX2luZm8gKilpZC0+ZHJpdmVyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBfX2RldmV4aXQKLXFsYTIyMDBfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKLXsKLQlxbGEyeDAwX3JlbW92ZV9vbmUocGRldik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBxbGEyMjAwX3BjaV9kcml2ZXIgPSB7Ci0JLm5hbWUJCT0gInFsYTIyMDAiLAotCS5pZF90YWJsZQk9IHFsYTIyMDBfcGNpX3RibCwKLQkucHJvYmUJCT0gcWxhMjIwMF9wcm9iZV9vbmUsCi0JLnJlbW92ZQkJPSBfX2RldmV4aXRfcChxbGEyMjAwX3JlbW92ZV9vbmUpLAotfTsKLQotc3RhdGljIGludCBfX2luaXQKLXFsYTIyMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBwY2lfbW9kdWxlX2luaXQoJnFsYTIyMDBfcGNpX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotcWxhMjIwMF9leGl0KHZvaWQpCi17Ci0JcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZxbGEyMjAwX3BjaV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChxbGEyMjAwX2luaXQpOwotbW9kdWxlX2V4aXQocWxhMjIwMF9leGl0KTsKLQotTU9EVUxFX0FVVEhPUigiUUxvZ2ljIENvcnBvcmF0aW9uIik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIlFMb2dpYyBJU1AyMnh4IEZDLVNDU0kgSG9zdCBCdXMgQWRhcHRlciBkcml2ZXIiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9WRVJTSU9OKFFMQTJYWFhfVkVSU0lPTik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIyMDBfZncuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjIwMF9mdy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzA3ZTE4Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjIwMF9mdy5jCisrKyAvZGV2L251bGwKQEAgLTEsNTMzMyArMCwwIEBACi0vKgotICogUUxvZ2ljIEZpYnJlIENoYW5uZWwgSEJBIERyaXZlcgotICogQ29weXJpZ2h0IChjKSAgMjAwMy0yMDA1IFFMb2dpYyBDb3Jwb3JhdGlvbgotICoKLSAqIFNlZSBMSUNFTlNFLnFsYTJ4eHggZm9yIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGRldGFpbHMuCi0gKi8KLQotLyoKLSAqCUZpcm13YXJlIFZlcnNpb24gMi4wMi4wOCAoMTc6MDYgTWFyIDIyLCAyMDA1KQotICovCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdW5zaWduZWQgc2hvcnQgZncyMjAwdHBfdmVyc2lvbiA9IDIqMTAyNCsyOwotI2Vsc2UKLXVuc2lnbmVkIHNob3J0IHJpc2NfY29kZV92ZXJzaW9uID0gMioxMDI0KzI7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBjaGFyIGZ3MjIwMHRwX3ZlcnNpb25fc3RyW10gPSB7MiwyLDh9OwotI2Vsc2UKLXVuc2lnbmVkIGNoYXIgZmlybXdhcmVfdmVyc2lvbltdID0gezIsMiw4fTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLSNkZWZpbmUgZncyMjAwdHBfVkVSU0lPTl9TVFJJTkcgIjIuMDIuMDgiCi0jZWxzZQotI2RlZmluZSBGV19WRVJTSU9OX1NUUklORyAiMi4wMi4wOCIKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjIwMHRwX2FkZHIwMSA9IDB4MTAwMCA7Ci0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlX2FkZHIwMSA9IDB4MTAwMCA7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIyMDB0cF9jb2RlMDFbXSA9IHsgCi0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlMDFbXSA9IHsgCi0jZW5kaWYKLQkweDA0NzAsIDB4MDAwMCwgMHgwMDAwLCAweGE1MmIsIDB4MDAwMCwgMHgwMDAyLCAweDAwMDIsIDB4MDAwOCwKLQkweDAwMTcsIDB4MjA0MywgMHg0ZjUwLCAweDU5NTIsIDB4NDk0NywgMHg0ODU0LCAweDIwMzIsIDB4MzAzMCwKLQkweDMxMjAsIDB4NTE0YywgMHg0ZjQ3LCAweDQ5NDMsIDB4MjA0MywgMHg0ZjUyLCAweDUwNGYsIDB4NTI0MSwKLQkweDU0NDksIDB4NGY0ZSwgMHgyMDQ5LCAweDUzNTAsIDB4MzIzMiwgMHgzMDMwLCAweDIwNDYsIDB4Njk3MiwKLQkweDZkNzcsIDB4NjE3MiwgMHg2NTIwLCAweDIwNTYsIDB4NjU3MiwgMHg3MzY5LCAweDZmNmUsIDB4MjAzMCwKLQkweDMyMmUsIDB4MzAzMiwgMHgyZTMwLCAweDM4MjAsIDB4MjAyMCwgMHgyMDIwLCAweDI0MDAsIDB4MjBjMSwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMTdmLCAweDIwMDMsIDB4MDAwMCwgMHgyMGM5LCAweGJiZmYsIDB4MjA5MSwKLQkweDIwMDAsIDB4MjA1OSwgMHgwMDAwLCAweDJiNzgsIDB4NzgyMywgMHgwMDA0LCAweDIwODksIDB4Mjk5ZiwKLQkweDIwNTEsIDB4YjYwMCwgMHgyYTcwLCAweDIwMjksIDB4ZWUwMCwgMHgyMDMxLCAweGZmZmYsIDB4MjAzOSwKLQkweGVkZTksIDB4MjAyMSwgMHgwMjAwLCAweDA4MDQsIDB4MTQ2ZCwgMHgyMGExLCAweGI1MmIsIDB4YTAwZSwKLQkweDIwYTksIDB4MDhkNSwgMHg0MWE0LCAweDM0MDAsIDB4NzU2MiwgMHg3NjY2LCAweDc3NWUsIDB4NzQ2YSwKLQkweDc0NmUsIDB4MjBhMSwgMHhiZTAwLCAweDcxNjQsIDB4ODEwZCwgMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwKLQkweGExOGMsIDB4MDAwZiwgMHgyMDAxLCAweDAwMGIsIDB4YTExMiwgMHhhMDBlLCAweDIxYTgsIDB4NDFhNCwKLQkweDM0MDAsIDB4ODIxMSwgMHgxZGQ4LCAweDcxNjQsIDB4MzQwMCwgMHhhMTAyLCAweDAxMjAsIDB4MDIxOCwKLQkweDIwYTgsIDB4YTAwZSwgMHg0MWE0LCAweDM4MDAsIDB4ZDA4YywgMHgwMWQ4LCAweDIwMDksIDB4YjYwMCwKLQkweDgxMGQsIDB4ODEwZCwgMHg4MTBkLCAweDgxMGQsIDB4YTE4YywgMHgwMDBmLCAweDIwMDEsIDB4MDAwMSwKLQkweGExMTIsIDB4MjBhMSwgMHgxMDAwLCAweGEwMGUsIDB4MjFhOCwgMHg0MWE0LCAweDgyMTEsIDB4MWRlMCwKLQkweDIwMDksIDB4YjYwMCwgMHgzNDAwLCAweGExMDIsIDB4MDEyMCwgMHgwMjE4LCAweDIwYTgsIDB4YTAwZSwKLQkweDQxYTQsIDB4MDgwYywgMHgxNDE2LCAweDA4MGMsIDB4MTYzNywgMHgwODBjLCAweDE3ZDQsIDB4MDgwYywKLQkweDFmYmUsIDB4MDgwYywgMHg0YzcyLCAweDA4MGMsIDB4ODY0NiwgMHgwODBjLCAweDE1YzAsIDB4MDgwYywKLQkweDJlZjksIDB4MDgwYywgMHg1ZGZjLCAweDA4MGMsIDB4NTNiMywgMHgwODBjLCAweDY5NDAsIDB4MDgwYywKLQkweDI1NDUsIDB4MDgwYywgMHg2YmQzLCAweDA4MGMsIDB4NjQyZCwgMHgwODBjLCAweDIzZmYsIDB4MDgwYywKLQkweDI1MTMsIDB4MjA5MSwgMHgzMDA5LCAweDc4MjMsIDB4MDAwMCwgMHgxMDA0LCAweDEwYzUsIDB4NzgyMCwKLQkweGEwODYsIDB4MDAwMiwgMHgxMTUwLCAweDc4MjMsIDB4NDAwMCwgMHgwZTA0LCAweDEwYmQsIDB4NzgxYiwKLQkweDAwMDEsIDB4MjA5MSwgMHg1MDAwLCAweDIwOTEsIDB4NDA4MCwgMHgyYTcwLCAweDcwMDMsIDB4MDAwMCwKLQkweDJhNzAsIDB4NzAwMCwgMHhhMDhlLCAweDAwMDMsIDB4MTE1OCwgMHgwODBjLCAweDNmNGYsIDB4MDgwYywKLQkweDJmMjAsIDB4MDgwYywgMHg1ZTRhLCAweDA4MGMsIDB4NTU2MiwgMHgwODBjLCAweDY5NmIsIDB4MGM4MCwKLQkweDAwMGIsIDB4MGM5OCwgMHgxMGU0LCAweDEwZTUsIDB4MTIxNSwgMHgxMGUyLCAweDEyZTIsIDB4MTQxMywKLQkweDE0MTQsIDB4MTQxNSwgMHgwODBjLCAweDE1MWEsIDB4MDAwNSwgMHgwMTI2LCAweDAwZjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAwMCwgMHhhMDg2LCAweDAwMDEsIDB4MTkwNCwgMHgxMWYyLCAweDA4MGMsIDB4MTU4ZCwKLQkweDA4MGMsIDB4NWI0MSwgMHgwMTUwLCAweDA4MGMsIDB4NWI2NywgMHgxNWMwLCAweDIwNzksIDB4MDEwMCwKLQkweDc4MjgsIDB4YTA4NSwgMHgxODAwLCAweDc4MmEsIDB4MDQ4OCwgMHgwODBjLCAweDVhNzksIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwMSwgMHgxOTA0LCAweDExZjIsIDB4NzA4YywgMHhhMDg2LCAweDAwMjgsIDB4MTkwNCwKLQkweDExZjIsIDB4MjAwMSwgMHgwMTYxLCAweDIwMDMsIDB4MDAwMSwgMHgyMDc5LCAweDAxMDAsIDB4NzgyNywKLQkweGZmZmYsIDB4N2EyOCwgMHhhMjk1LCAweDFlMmYsIDB4N2EyYSwgMHgyMDExLCAweDVhMTQsIDB4MDgwYywKLQkweDZhMGUsIDB4MjAxMSwgMHg1YTA3LCAweDA4MGMsIDB4NmFjZSwgMHgyMDExLCAweDVhNTYsIDB4MDgwYywKLQkweDZhMGUsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwZSwgMHgyMDExLCAweDgwMzAsIDB4MjAxOSwKLQkweDAwMDAsIDB4NzA4YiwgMHgwMDAwLCAweDA4MGMsIDB4MWUwNSwgMHgwMGU4LCAweDA4MGMsIDB4NDRkNiwKLQkweDIwNzksIDB4MDEwMCwgMHg3ODQ0LCAweGEwMDUsIDB4MTkwNCwgMHgxMWYyLCAweDIwMTEsIDB4NGIyMywKLQkweDA4MGMsIDB4NmEwZSwgMHgyMDExLCAweDVhNTYsIDB4MDgwYywgMHg2YTBlLCAweDA4MGMsIDB4MWUwNSwKLQkweDIwMDEsIDB4Yjg4ZCwgMHgyMDA0LCAweDc4MGUsIDB4Nzg0MCwgMHhhMDg0LCAweGZmZmIsIDB4Nzg0MiwKLQkweDIwMTEsIDB4ODAxMCwgMHg3M2NjLCAweDA4MGMsIDB4M2YxMywgMHg3MjNjLCAweGMyODQsIDB4NzIzZSwKLQkweDIwMDEsIDB4YjYwYywgMHgyMDBjLCAweGMxYWMsIDB4MjEwMiwgMHgwODBjLCAweDdmYmMsIDB4MjAxMSwKLQkweDAwMDQsIDB4MDgwYywgMHg5ZDFjLCAweDA4MGMsIDB4NTJiZiwgMHgwODBjLCAweDViNDEsIDB4MDE1OCwKLQkweDA4MGMsIDB4NGM0YSwgMHgwMTQwLCAweDcwOGIsIDB4MDAwMSwgMHg3MGM3LCAweDAwMDAsIDB4MDgwYywKLQkweDQ2NzMsIDB4MDgwNCwgMHgxMWYyLCAweDA4MGMsIDB4NTM3YiwgMHgwMTIwLCAweDdhMGMsIDB4YzJiNCwKLQkweDdhMGUsIDB4MDA2MCwgMHg3MDczLCAweDAwMDAsIDB4MDgwYywgMHhhMGM0LCAweDcwZDQsIDB4ZDA5YywKLQkweDExMjgsIDB4NzBhMCwgMHhhMDA1LCAweDAxMTAsIDB4MDgwYywgMHg0YzI4LCAweDcwZGYsIDB4MDAwMCwKLQkweDcwZGIsIDB4MDAwMCwgMHg3MmQ0LCAweDA4MGMsIDB4NWI0MSwgMHgxMTgwLCAweDIwMTEsIDB4MDAwMCwKLQkweDAwMTYsIDB4MDgwYywgMHgyOTIwLCAweDIwMTksIDB4Yjg4ZiwgMHgyMTFhLCAweDAwMWUsIDB4NzA1MywKLQkweGZmZmYsIDB4NzA1NywgMHgwMGVmLCAweDcwNzcsIDB4MDAwMCwgMHgwMDIwLCAweDIwMTksIDB4Yjg4ZiwKLQkweDIwMWIsIDB4MDAwMCwgMHgyMDc5LCAweGI2NTIsIDB4NzgwNCwgMHhkMGFjLCAweDAxMDgsIDB4YzI5NSwKLQkweDcyZDYsIDB4MDgwYywgMHg1YjQxLCAweDAxMTgsIDB4YTI5NiwgMHgwMDA0LCAweDA1NDgsIDB4MjAxMSwKLQkweDAwMDEsIDB4MDgwYywgMHg5ZDFjLCAweDcwOWIsIDB4MDAwMCwgMHg3MDlmLCAweGZmZmYsIDB4NzAwMywKLQkweDAwMDIsIDB4MjA3OSwgMHgwMTAwLCAweDc4MjcsIDB4MDAwMywgMHg3ODI4LCAweGEwODUsIDB4MDAwMywKLQkweDc4MmEsIDB4MDBmZSwgMHgwODBjLCAweDJhZWQsIDB4MjAxMSwgMHgwMDA1LCAweDA4MGMsIDB4ODBmYywKLQkweDA4MGMsIDB4NzFlNSwgMHgwODBjLCAweDViNDEsIDB4MDE0OCwgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwKLQkweDAwMTYsIDB4MDgwYywgMHgyOTIwLCAweDYxZTIsIDB4MDAxZSwgMHgwMGNlLCAweDAxMmUsIDB4MDQyMCwKLQkweDcwOWIsIDB4MDAwMCwgMHg3MDlmLCAweGZmZmYsIDB4NzAwMywgMHgwMDAyLCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4NzgyNywgMHgwMDAzLCAweDc4MjgsIDB4YTA4NSwgMHgwMDAzLCAweDc4MmEsIDB4MDBmZSwKLQkweDIwMTEsIDB4MDAwNSwgMHgwODBjLCAweDgwZmMsIDB4MDgwYywgMHg3MWU1LCAweDA4MGMsIDB4NWI0MSwKLQkweDAxNDgsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4MDAxNiwgMHgwODBjLCAweDI5MjAsIDB4NjFlMiwKLQkweDAwMWUsIDB4MDBjZSwgMHgwMGZlLCAweDAxMmUsIDB4MDAwNSwgMHgwMGM2LCAweDA4MGMsIDB4NWI0MSwKLQkweDExMTgsIDB4MjBhOSwgMHgwMTAwLCAweDAwMTAsIDB4MjBhOSwgMHgwMDgyLCAweDA4MGMsIDB4NWI0MSwKLQkweDExMTgsIDB4MjAwOSwgMHgwMDAwLCAweDAwMTAsIDB4MjAwOSwgMHgwMDdlLCAweDA4MGMsIDB4MmRjYywKLQkweDgxMDgsIDB4MWYwNCwgMHgxMjA2LCAweDAwY2UsIDB4NzA3MywgMHgwMDAwLCAweDcwNzQsIDB4YTA4NCwKLQkweDAwZmYsIDB4NzA3NiwgMHg3MGEzLCAweDAwMDAsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDcwMDAsIDB4YTA4NiwgMHgwMDAyLCAweDE5MDQsIDB4MTJlMCwgMHg3MDljLCAweGEwODYsIDB4ZmZmZiwKLQkweDAxMzAsIDB4MDgwYywgMHgyYWVkLCAweDA4MGMsIDB4NzFlNSwgMHgwODA0LCAweDEyZTAsIDB4NzBkNCwKLQkweGQwYWMsIDB4MTExMCwgMHhkMDljLCAweDA1NDAsIDB4ZDA4NCwgMHgwNTMwLCAweDAwMDYsIDB4MDAxNiwKLQkweDIwMDEsIDB4MDEwMywgMHgyMDA5LCAweGI4OGQsIDB4MjEwYywgMHgyMTAyLCAweDAwMWUsIDB4MDAwZSwKLQkweGQwOGMsIDB4MDFkMCwgMHg3MGQ4LCAweGEwODYsIDB4ZmZmZiwgMHgwMTkwLCAweDA4MGMsIDB4MmM0YywKLQkweDA4MGMsIDB4NzFlNSwgMHg3MGQ0LCAweGQwOTQsIDB4MTkwNCwgMHgxMmUwLCAweDIwMTEsIDB4MDAwMSwKLQkweDIwMTksIDB4MDAwMCwgMHgwODBjLCAweDJjODQsIDB4MDgwYywgMHg3MWU1LCAweDA4MDQsIDB4MTJlMCwKLQkweDcwZGMsIDB4YTAwNSwgMHgxOTA0LCAweDEyZTAsIDB4NzA5OCwgMHhhMDA1LCAweDE5MDQsIDB4MTJlMCwKLQkweDcwZDQsIDB4ZDBhNCwgMHgwMTE4LCAweGQwYjQsIDB4MDkwNCwgMHgxMmUwLCAweDA4MGMsIDB4NTM3YiwKLQkweDE5MDQsIDB4MTJlMCwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwgMHhkMGFjLCAweDAxYzgsIDB4MDE1NiwKLQkweDAwYzYsIDB4MjBhOSwgMHgwMDdmLCAweDIwMDksIDB4MDAwMCwgMHgwMDE2LCAweDA4MGMsIDB4NTAxYiwKLQkweDExMTgsIDB4NjAwMCwgMHhkMGVjLCAweDExMzgsIDB4MDAxZSwgMHg4MTA4LCAweDFmMDQsIDB4MTI2ZCwKLQkweDAwY2UsIDB4MDE1ZSwgMHgwMDI4LCAweDAwMWUsIDB4MDBjZSwgMHgwMTVlLCAweDA4MDQsIDB4MTJlMCwKLQkweDAwMDYsIDB4MDAxNiwgMHgyMDAxLCAweDAxMDMsIDB4MjAwOSwgMHhiODhkLCAweDIxMGMsIDB4MjEwMiwKLQkweDAwMWUsIDB4MDAwZSwgMHg3MWE4LCAweDgxZmYsIDB4MTFiMCwgMHhhMDA2LCAweDIwMDksIDB4MDIwMCwKLQkweDIwYTksIDB4MDAwMiwgMHgyMGExLCAweGI4ZGYsIDB4NDBhMSwgMHgyMDA5LCAweDA3MDAsIDB4MjBhOSwKLQkweDAwMDIsIDB4MjBhMSwgMHhiOGNmLCAweDQwYTEsIDB4NzA3MCwgMHg4MDA3LCAweDcxNzQsIDB4ODEwZiwKLQkweDIwYTksIDB4MDAwMiwgMHg0MGExLCAweDIwYTEsIDB4YjhkMywgMHgyMDA5LCAweDAwMDAsIDB4MDgwYywKLQkweDE1MDAsIDB4MjAwMSwgMHgwMDAwLCAweDgxMGYsIDB4MjBhOSwgMHgwMDAyLCAweDQwYTEsIDB4NzAzMCwKLQkweGMwOGMsIDB4NzAzMiwgMHg3MDAzLCAweDAwMDMsIDB4NzA5ZiwgMHhmZmZmLCAweDA4MGMsIDB4MTU4NiwKLQkweGEwMDYsIDB4MDgwYywgMHgyN2Y4LCAweDA4MGMsIDB4M2Y4NSwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwKLQkweDA4MGMsIDB4NWI2NywgMHgwMTUwLCAweDA4MGMsIDB4NWI0MSwgMHg3ODI4LCAweDAxMTgsIDB4YTA4NCwKLQkweGUxZmYsIDB4MDAxMCwgMHhhMDg0LCAweGZmZGYsIDB4NzgyYSwgMHgwMGZlLCAweDIwMDEsIDB4YjhlMiwKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDA1LCAweDExMjAsIDB4MjAxMSwgMHgwMDAwLCAweDA4MGMsIDB4ODBmYywKLQkweDIwMTEsIDB4MDAwMCwgMHgwODBjLCAweDgxMDYsIDB4MDgwYywgMHg3MWU1LCAweDA4MGMsIDB4NzJhMiwKLQkweDAxMmUsIDB4MDAwNSwgMHgwMDE2LCAweDAwNDYsIDB4MDBmNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzksIDB4MDEwMCwgMHgyMDA5LCAweGI2MzQsIDB4MjEwNCwgMHhhMDA1LCAweDExMTAsIDB4MDgwYywKLQkweDI5NGMsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NGMxMSwgMHg3OTQwLCAweGExOGMsIDB4MDAxMCwKLQkweDc5NDIsIDB4NzkyNCwgMHhkMWI0LCAweDAxMTAsIDB4NzgyNywgMHgwMDQwLCAweGQxOWMsIDB4MDExMCwKLQkweDc4MjcsIDB4MDAwOCwgMHgwMDA2LCAweDAwMzYsIDB4MDE1NiwgMHg3OTU0LCAweGQxYWMsIDB4MTkwNCwKLQkweDEzNTAsIDB4MDgwYywgMHg1YjUzLCAweDAxNTgsIDB4MDgwYywgMHg1YjY3LCAweDExMjgsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwMywgMHgwMDAwLCAweDAwNzAsIDB4MDgwYywgMHg1YjQ5LCAweDBkYzAsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwMywgMHhhYWFhLCAweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDVhNzksIDB4MDA1OCwgMHgwODBjLCAweDViNDEsIDB4MDE0MCwgMHgyMDA5LCAweDAwZjgsIDB4MDgwYywKLQkweDRjMTEsIDB4Nzg0MywgMHgwMDkwLCAweDc4NDMsIDB4MDAxMCwgMHgyMGE5LCAweDA5YzQsIDB4NzgyMCwKLQkweGQwOWMsIDB4MTEzOCwgMHgwODBjLCAweDViNDEsIDB4MDEzOCwgMHg3ODI0LCAweGQwYWMsIDB4MTkwNCwKLQkweDEzZmEsIDB4MWYwNCwgMHgxMzJmLCAweDAwNzAsIDB4NzgyNCwgMHgwODBjLCAweDViNWQsIDB4MDExOCwKLQkweGQwYWMsIDB4MTkwNCwgMHgxM2ZhLCAweGEwODQsIDB4MTgwMCwgMHgwZDk4LCAweDcwMDMsIDB4MDAwMSwKLQkweDA4MDQsIDB4MTNmYSwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyN2Y4LCAweDA4MDQsIDB4MTQwOSwKLQkweDc4NTAsIDB4YTA4NCwgMHgwMTgwLCAweDc4NTIsIDB4NzgyZiwgMHgwMDIwLCAweDIwYTksIDB4MDA0NiwKLQkweDFkMDQsIDB4MTM1OCwgMHgwODBjLCAweDZhYjYsIDB4MWYwNCwgMHgxMzU4LCAweDc4NTAsIDB4YTA4NCwKLQkweDAxODAsIDB4YTA4NSwgMHgwNDAwLCAweDc4NTIsIDB4NzgyZiwgMHgwMDAwLCAweDA4MGMsIDB4NWI1MywKLQkweDAxNTgsIDB4MDgwYywgMHg1YjY3LCAweDExMjgsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4MDAwMCwKLQkweDAwNzAsIDB4MDgwYywgMHg1YjQ5LCAweDBkYzAsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4YWFhYSwKLQkweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4MDgwYywgMHg1YTc5LCAweDAwMjAsIDB4MjAwOSwKLQkweDAwZjgsIDB4MDgwYywgMHg0YzExLCAweDIwYTksIDB4MDAwZSwgMHhlMDAwLCAweDFmMDQsIDB4MTM4NSwKLQkweDc4NTAsIDB4YTA4NCwgMHgwMTgwLCAweGEwODUsIDB4MTQwMCwgMHg3ODUyLCAweDA4MGMsIDB4NWI0MSwKLQkweDAxMjAsIDB4Nzg0MywgMHgwMDkwLCAweDc4NDMsIDB4MDAxMCwgMHgyMDIxLCAweGU2NzgsIDB4MjAxOSwKLQkweGVhNjAsIDB4NzgyMCwgMHhkMDljLCAweDE1NTgsIDB4MDgwYywgMHg1YjQxLCAweDA1ZDgsIDB4NzgyNCwKLQkweGQwYWMsIDB4MTkwNCwgMHgxM2ZhLCAweDA4MGMsIDB4NWI2NywgMHgxNTA4LCAweDAwNDYsIDB4MjAyMSwKLQkweDAxOTAsIDB4ODQyMSwgMHgxZGYwLCAweDAwNGUsIDB4ODQyMSwgMHgxMWM4LCAweDc4MjcsIDB4MDA0OCwKLQkweDIwYTksIDB4MDFmNCwgMHgxZDA0LCAweDEzYjIsIDB4MDgwYywgMHg2YWI2LCAweDFmMDQsIDB4MTNiMiwKLQkweDc4MjQsIDB4YTA4NCwgMHgwMDY4LCAweDE1YzgsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4YWFhYSwKLQkweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4NzAwMywgMHgwMDAxLCAweDA0OTgsIDB4MWQwNCwKLQkweDEzY2IsIDB4MDgwYywgMHg2YWI2LCAweDgzMTksIDB4MTk2MCwgMHgyMDA5LCAweGI2MzQsIDB4MjEwNCwKLQkweDgwMDAsIDB4MjAwYSwgMHhhMDg0LCAweGZmZjAsIDB4MDEyMCwgMHgyMDBiLCAweDAwMDAsIDB4MDgwYywKLQkweDI5NGMsIDB4MDBkOCwgMHgwODBjLCAweDViNTMsIDB4MTE0MCwgMHhhNGEyLCAweDAwNjQsIDB4MTEyOCwKLQkweDA4MGMsIDB4NWIxOCwgMHg3MDAzLCAweDAwMDEsIDB4MDBhOCwgMHg3ODI3LCAweDE4MDAsIDB4ZTAwMCwKLQkweGUwMDAsIDB4NzgyNCwgMHgwODBjLCAweDViNWQsIDB4MDExMCwgMHhkMGFjLCAweDExNTgsIDB4YTA4NCwKLQkweDE4MDAsIDB4MDlhOCwgMHg3MDAzLCAweDAwMDEsIDB4MDAyOCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDI3ZjgsIDB4MDA0OCwgMHgyMDAxLCAweGI2MzQsIDB4MjAwMywgMHgwMDAwLCAweDc4MjcsIDB4MDA0OCwKLQkweDc4MjgsIDB4YzA5ZCwgMHg3ODJhLCAweDc4NTAsIDB4YTA4NCwgMHgwMTgwLCAweGEwODUsIDB4MDQwMCwKLQkweDc4NTIsIDB4MDE1ZSwgMHgwMDNlLCAweDAwMGUsIDB4MDgwYywgMHgxNTVkLCAweDAxMmUsIDB4MDBmZSwKLQkweDAwNGUsIDB4MDAxZSwgMHgwMDA1LCAweDAwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDJhNzAsIDB4MjA2MSwKLQkweGI4YzIsIDB4MjA2MywgMHgwMDAyLCAweDYwMDcsIDB4MDAwMiwgMHg2MDBiLCAweDAwMDgsIDB4NjAwZiwKLQkweDAwMTcsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4MDAwMCwgMHg3MDhiLCAweDAwMDAsIDB4MjAwOSwKLQkweDAxMDAsIDB4MjEwNCwgMHhhMDgyLCAweDAwMDIsIDB4MDIxOCwgMHg3MDUzLCAweGZmZmYsIDB4MDAxMCwKLQkweDcwNTMsIDB4MDAwMCwgMHg3MDViLCAweGZmZmYsIDB4NzA3MywgMHgwMDAwLCAweDcwNzcsIDB4MDAwMCwKLQkweDA4MGMsIDB4YTBjNCwgMHgyMDYxLCAweGI4OGUsIDB4NjAwMywgMHgwOTA5LCAweDYwMDcsIDB4MDAwMCwKLQkweDYwMGIsIDB4ODgwMCwgMHg2MDBmLCAweDAyMDAsIDB4NjAxMywgMHgwMGZmLCAweDYwMTcsIDB4MDAwZiwKLQkweDYwMWIsIDB4MDAwMCwgMHg2MDFmLCAweDA3ZDAsIDB4MjA2MSwgMHhiODk2LCAweDYwMDMsIDB4ODAwMCwKLQkweDYwMDcsIDB4MDAwMCwgMHg2MDBiLCAweDAwMDAsIDB4NjAwZiwgMHgwMjAwLCAweDYwMTMsIDB4MDBmZiwKLQkweDYwMTcsIDB4MDAwMCwgMHg2MDFiLCAweDAwMDEsIDB4NjAxZiwgMHgwMDAwLCAweDIwNjEsIDB4YjhiOSwKLQkweDYwMDMsIDB4NTE0YywgMHg2MDA3LCAweDRmNDcsIDB4NjAwYiwgMHg0OTQzLCAweDYwMGYsIDB4MjAyMCwKLQkweDIwMDEsIDB4YjYyOCwgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwgMHgwNGEwLCAweDIwMTEsIDB4MDAwMCwKLQkweDgxZmYsIDB4MDU3MCwgMHhhMTg2LCAweDAwMDEsIDB4MTE0OCwgMHgyMDMxLCAweDhmZmYsIDB4MjAzOSwKLQkweGQ2MDEsIDB4MjAyMSwgMHgwMTAwLCAweDIwMjksIDB4ZDYwMCwgMHgwMGU4LCAweGExODYsIDB4MDAwMiwKLQkweDExMTgsIDB4MjAxMSwgMHgwMDAwLCAweDAwYjgsIDB4YTE4NiwgMHgwMDA1LCAweDExMTgsIDB4MjAxMSwKLQkweDAwMDEsIDB4MDA4OCwgMHhhMTg2LCAweDAwMDksIDB4MTExOCwgMHgyMDExLCAweDAwMDIsIDB4MDA1OCwKLQkweGExODYsIDB4MDAwYSwgMHgxMTE4LCAweDIwMTEsIDB4MDAwMiwgMHgwMDI4LCAweGExODYsIDB4MDA1NSwKLQkweDExMTAsIDB4MjAxMSwgMHgwMDAzLCAweDM4MDAsIDB4YTA4NCwgMHhmZmZjLCAweGEyMDUsIDB4MjBjMCwKLQkweDA4MDQsIDB4MTA0ZCwgMHhhMDBlLCAweDIwMTEsIDB4MDAwMywgMHgyMDE5LCAweDE0YTksIDB4MDgwNCwKLQkweDE0ZmEsIDB4MjAxOSwgMHhhYWFhLCAweDIwNjEsIDB4ZmZmZiwgMHgyYzE0LCAweDIzNjIsIDB4ZTAwMCwKLQkweGUwMDAsIDB4MmMwNCwgMHhhMzA2LCAweDIyNjIsIDB4MTExMCwgMHhjMWI1LCAweGMxYTUsIDB4MjAxMSwKLQkweDAwMDAsIDB4MjAxOSwgMHgxNGJjLCAweDA0ZjAsIDB4MjAxOSwgMHhhYWFhLCAweDIwNjEsIDB4ZmZmZiwKLQkweDJjMTQsIDB4MjM2MiwgMHhlMDAwLCAweGUwMDAsIDB4MmMxYywgMHgyMDYxLCAweDdmZmYsIDB4ZTAwMCwKLQkweGUwMDAsIDB4MmMwNCwgMHgyMDYxLCAweGZmZmYsIDB4MjI2MiwgMHhhMzA2LCAweDAxMTAsIDB4YzE4ZCwKLQkweDAwMDgsIDB4YzE4NSwgMHgyMDExLCAweDAwMDIsIDB4MjAxOSwgMHgxNGQ3LCAweDA0MTgsIDB4MjA2MSwKLQkweGZmZmYsIDB4MjAxOSwgMHhhYWFhLCAweDJjMTQsIDB4MjM2MiwgMHhlMDAwLCAweGUwMDAsIDB4MmMwNCwKLQkweDIyNjIsIDB4YTMwNiwgMHgxMTgwLCAweDJjMTQsIDB4MjM2MiwgMHhlMDAwLCAweGUwMDAsIDB4MmMxYywKLQkweDIwNjEsIDB4N2ZmZiwgMHgyYzA0LCAweDIwNjEsIDB4ZmZmZiwgMHgyMjYyLCAweGEzMDYsIDB4MTExMCwKLQkweGMxOTUsIDB4MDAwOCwgMHhjMTlkLCAweDIwMTEsIDB4MDAwMSwgMHgyMDE5LCAweDE0ZjgsIDB4MDAxMCwKLQkweDA4MDQsIDB4MTQ2ZSwgMHgzODAwLCAweGEwODQsIDB4ZmZmYywgMHhhMjA1LCAweDIwYzAsIDB4MDgzNywKLQkweDIwMTEsIDB4MDAwMCwgMHgwODBjLCAweDUwMWIsIDB4MTE3OCwgMHg2MDA0LCAweGEwYzQsIDB4MDBmZiwKLQkweGE4YzYsIDB4MDAwNiwgMHgwMTI4LCAweGEwYzQsIDB4ZmYwMCwgMHhhOGM2LCAweDA2MDAsIDB4MTEyMCwKLQkweGExODYsIDB4MDA4MCwgMHgwMTA4LCAweDgyMTAsIDB4ODEwOCwgMHhhMTg2LCAweDAxMDAsIDB4MWQ1MCwKLQkweDIyMDgsIDB4MDAwNSwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwgMHgxNTFjLCAweDAwMDYsIDB4MDAxNiwKLQkweDIwNzksIDB4MDAwMCwgMHg3ODE4LCAweGQwODQsIDB4MWRlOCwgMHgwMDFlLCAweDc5MmUsIDB4MDAwZSwKLQkweDc4MmEsIDB4MDAwZSwgMHg3ODI2LCAweDM5MDAsIDB4NzgzYSwgMHg3ODIzLCAweDgwMDIsIDB4NzgxYiwKLQkweDAwMDEsIDB4MjA5MSwgMHg1MDAwLCAweDAxMjYsIDB4MDE1NiwgMHgwMTQ2LCAweDIwYTksIDB4MDAxMCwKLQkweDIwYTEsIDB4YmEwZCwgMHgyMDkxLCAweDIwMDAsIDB4NDBhMSwgMHgyMGE5LCAweDAwMTAsIDB4MjA5MSwKLQkweDIyMDAsIDB4NDBhMSwgMHgyMGE5LCAweDAwMTAsIDB4MjA5MSwgMHgyNDAwLCAweDQwYTEsIDB4MjBhOSwKLQkweDAwMTAsIDB4MjA5MSwgMHgyNjAwLCAweDQwYTEsIDB4MjBhOSwgMHgwMDEwLCAweDIwOTEsIDB4MjgwMCwKLQkweDQwYTEsIDB4MDE0ZSwgMHgwMTVlLCAweDAxMmUsIDB4MjA3OSwgMHhiNjAwLCAweDc4MDMsIDB4MDAwNSwKLQkweDIwOTEsIDB4NDA4MCwgMHgwNGM5LCAweDBjZjgsIDB4MDAwNSwgMHgwMDA2LCAweDA4MGMsIDB4MTVhOCwKLQkweDE1MTgsIDB4MDBmNiwgMHgyMDc5LCAweGI2MjQsIDB4MmYwNCwgMHg4MDAwLCAweDIwN2EsIDB4YTA4MiwKLQkweDAwMGYsIDB4MDI1OCwgMHhhMDA2LCAweDIwN2EsIDB4MjA3OSwgMHhiNjI2LCAweDJmMDQsIDB4YTA4NCwKLQkweDAwMDEsIDB4YTA4NiwgMHgwMDAxLCAweDIwN2EsIDB4MDA3MCwgMHgyMDc5LCAweGI2MjYsIDB4MmY3YywKLQkweDhmZmYsIDB4MTEyOCwgMHgyMDAxLCAweDBjMDMsIDB4MjAwMywgMHgwMDQwLCAweDAwMjAsIDB4MjAwMSwKLQkweDBjMDMsIDB4MjAwMywgMHgwMGMwLCAweDAwZmUsIDB4MDAwZSwgMHgwMDA1LCAweDA0MDksIDB4MTEyMCwKLQkweDIwMDEsIDB4MGMwMywgMHgyMDAzLCAweDAwODAsIDB4MDAwNSwgMHgwMGQxLCAweDExMjAsIDB4MjAwMSwKLQkweDBjMDMsIDB4MjAwMywgMHgwMDQwLCAweDAwMDUsIDB4MDAwNiwgMHgwMDkxLCAweDExNzgsIDB4MjAwMSwKLQkweDBjMDMsIDB4MjAwMywgMHgwMDQwLCAweDIwMDksIDB4MGZmZiwgMHgwMGExLCAweDIwMDEsIDB4MGMwMywKLQkweDIwMDMsIDB4MDA4MCwgMHgyMDA5LCAweDBmZmYsIDB4MDA2OSwgMHgwYzg4LCAweDAwMGUsIDB4MDAwNSwKLQkweDAwYzYsIDB4MjA2MSwgMHgwYzAwLCAweDJjMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDBhYSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMTU2LCAweDAxMjYsIDB4YTE4YywgMHgwZmZmLCAweDIxYTgsIDB4MWQwNCwKLQkweDE1YjcsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4MTViNywgMHgwMTJlLCAweDAxNWUsIDB4MDAwNSwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MTYwLCAweDcxMmUsIDB4MjAyMSwgMHgwMDAxLCAweGExOTAsIDB4MDAzMCwKLQkweGEyOTgsIDB4MDAzMCwgMHgwMjQwLCAweDcwNjQsIDB4YTMwMiwgMHgxMjI4LCAweDIyMGEsIDB4MjIwOCwKLQkweDIzMTAsIDB4ODQyMCwgMHgwY2E4LCAweDM4MDAsIDB4ZDA4YywgMHgwMTQ4LCAweDcwNjQsIDB4YTA4NiwKLQkweGI2MDAsIDB4MDEyOCwgMHg3MDY3LCAweGI2MDAsIDB4MjAxMSwgMHgxMDAwLCAweDBjNDgsIDB4MjAwYiwKLQkweDAwMDAsIDB4NzRiMiwgMHg3NGI2LCAweDAwMDUsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MGI0LCAweGEwZWEsIDB4MDAxMCwgMHgwMjY4LCAweDgwMDEsIDB4NzBiNiwKLQkweDcwMmMsIDB4MjA2OCwgMHgyZDA0LCAweDcwMmUsIDB4MjA2YiwgMHgwMDAwLCAweDY4MDcsIDB4MDAwMCwKLQkweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweGEwNmUsIDB4MGNkOCwgMHgwMGU2LCAweDIwNzEsIDB4YjYwMCwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwYjQsIDB4ODAwMSwgMHgwMjYwLCAweDcwYjYsIDB4NzAyYywKLQkweDIwNjgsIDB4MmQwNCwgMHg3MDJlLCAweDIwNmIsIDB4MDAwMCwgMHg2ODA3LCAweDAwMDAsIDB4MDEyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHhhMDZlLCAweDBjZDgsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MDJjLCAweDIwNmEsIDB4MmQwMCwgMHg3MDJlLCAweDcwYjQsIDB4ODAwMCwKLQkweDcwYjYsIDB4MDEyZSwgMHgwMGVlLCAweDAwMDUsIDB4OGRmZiwgMHgwMTM4LCAweDY4MDQsIDB4NjgwNywKLQkweDAwMDAsIDB4MDAwNiwgMHgwYzQ5LCAweDAwZGUsIDB4MGNiOCwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweGI2MDAsIDB4NzBiNCwgMHhhMDhhLCAweDAwMTAsIDB4YTAwZCwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjkxMywgMHg3MDA3LCAweDAwMDAsIDB4NzAxYiwgMHgwMDAwLCAweDcwMWYsIDB4MDAwMCwKLQkweDIwNzEsIDB4MDAwMCwgMHg3MDEwLCAweGEwODUsIDB4ODAwNCwgMHg3MDEyLCAweDAwZWUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwZTYsIDB4MjI3MCwgMHg3MDBiLCAweDAwMDAsIDB4MjA3MSwKLQkweGI5MTMsIDB4NzAxOCwgMHhhMDg4LCAweGI5MWMsIDB4MjIwYSwgMHg4MDAwLCAweGEwODQsIDB4MDAwNywKLQkweDcwMWEsIDB4NzAwNCwgMHhhMDA1LCAweDExMjgsIDB4MDBmNiwgMHgyMDc5LCAweDAwMTAsIDB4MDA4OSwKLQkweDAwZmUsIDB4MDBlZSwgMHgwMTJlLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGI5MTMsIDB4NzAwNCwKLQkweGEwMDUsIDB4MTEyOCwgMHgwMGY2LCAweDIwNzksIDB4MDAxMCwgMHgwMDE5LCAweDAwZmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4NzAwMCwgMHgwMDAyLCAweDE2NzcsIDB4MTZkYiwgMHgxNmY4LCAweDE2ZjgsIDB4NzAxOCwKLQkweDcxMWMsIDB4YTEwNiwgMHgxMTE4LCAweDcwMDcsIDB4MDAwMCwgMHgwMDA1LCAweDAwZDYsIDB4YTE4MCwKLQkweGI5MWMsIDB4MjAwNCwgMHg3MDBhLCAweDIwNjgsIDB4ODEwOCwgMHhhMThjLCAweDAwMDcsIDB4NzExZSwKLQkweDc4MDMsIDB4MDAyNiwgMHg2ODI0LCAweDc4MzIsIDB4NjgyOCwgMHg3ODM2LCAweDY4MmMsIDB4NzgzYSwKLQkweDY4MzAsIDB4NzgzZSwgMHg2ODEwLCAweDcwMGUsIDB4NjgwYywgMHg3MDE2LCAweDY4MDQsIDB4MDBkZSwKLQkweGQwODQsIDB4MDEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDAyOSwgMHgwMDA1LCAweDcwMDcsIDB4MDAwMiwKLQkweDAwYjEsIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4NzEwYywgMHgyMDExLCAweDAwNDAsIDB4YTE4MiwKLQkweDAwNDAsIDB4MTIxMCwgMHgyMTEwLCAweGEwMDYsIDB4NzAwZSwgMHg3MjEyLCAweDgyMDMsIDB4NzgyMiwKLQkweDc4MDMsIDB4MDAyMCwgMHg3ODAzLCAweDAwNDEsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4NzAxNCwgMHgyMDk4LCAweDIwYTEsIDB4MDAxNCwKLQkweDc4MDMsIDB4MDAyNiwgMHg3MTBjLCAweDIwMTEsIDB4MDA0MCwgMHhhMTgyLCAweDAwNDAsIDB4MTIxMCwKLQkweDIxMTAsIDB4YTAwNiwgMHg3MDBlLCAweDIyYTgsIDB4NTNhNiwgMHg4MjAzLCAweDc4MjIsIDB4NzgwMywKLQkweDAwMjAsIDB4MzMwMCwgMHg3MDE2LCAweDc4MDMsIDB4MDAwMSwgMHgwMTVlLCAweDAxNGUsIDB4MDEzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDIwOTksIDB4YjZmYSwKLQkweDIwYTEsIDB4MDAxOCwgMHgyMGE5LCAweDAwMDgsIDB4NTNhMywgMHg3ODAzLCAweDAwMjAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg3ODAzLCAweDAwNDEsIDB4NzAwNywgMHgwMDAzLCAweDcwMDAsIDB4YzA4NCwKLQkweDcwMDIsIDB4NzAwYiwgMHhiNmY1LCAweDAxMmUsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsIDB4MDAwNSwKLQkweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDIwMDEsIDB4YjcyOSwgMHgyMDljLCAweDIwYTEsIDB4MDAxNCwKLQkweDc4MDMsIDB4MDAyNiwgMHgyMDAxLCAweGI3MmEsIDB4MjBhYywgMHg1M2E2LCAweDIwOTksIDB4YjcyYiwKLQkweDIwYTEsIDB4MDAxOCwgMHgyMGE5LCAweDAwMDgsIDB4NTNhMywgMHg3ODAzLCAweDAwMjAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg3ODAzLCAweDAwMDEsIDB4NzAwNywgMHgwMDA0LCAweDcwMDAsIDB4YzA4YywKLQkweDcwMDIsIDB4NzAwYiwgMHhiNzI2LCAweDAxMmUsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBlNiwgMHgyMDcxLCAweGI5MTMsIDB4MDBmNiwgMHgyMDc5LCAweDAwMTAsIDB4NzkwNCwKLQkweDc4MDMsIDB4MDAwMiwgMHhkMWZjLCAweDAxMjAsIDB4YTE4YywgMHgwNzAwLCAweDcwMDQsIDB4MDAyMywKLQkweDAwZmUsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4MTY3MSwgMHgxNzNiLCAweDE3NjksIDB4MTc5MywKLQkweDE3YzMsIDB4MTczYSwgMHgwY2Y4LCAweGExOGMsIDB4MDcwMCwgMHgxNTI4LCAweDAxMzYsIDB4MDE0NiwKLQkweDAxNTYsIDB4NzAxNCwgMHgyMGEwLCAweDIwOTksIDB4MDAxNCwgMHg3ODAzLCAweDAwNDAsIDB4NzAxMCwKLQkweDIwYTgsIDB4NTNhNSwgMHgzNDAwLCAweDcwMTYsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsIDB4NzAwYywKLQkweGEwMDUsIDB4MDU3MCwgMHg3ODMwLCAweDc4MzIsIDB4NzgzNCwgMHg3ODM2LCAweDA4MGMsIDB4MTZhMiwKLQkweDAwMDUsIDB4NzAwOCwgMHhhMDgwLCAweDAwMDIsIDB4MjAwMywgMHgwMTAwLCAweDcwMDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4MTY3MSwgMHgwMDA1LCAweDcwMDgsIDB4YTA4MCwgMHgwMDAyLCAweDIwMDMsIDB4MDIwMCwKLQkweDBjYTgsIDB4YTE4YywgMHgwNzAwLCAweDExNTAsIDB4NzAwYywgMHhhMDA1LCAweDAxODgsIDB4NzgzMCwKLQkweDc4MzIsIDB4NzgzNCwgMHg3ODM2LCAweDA4MGMsIDB4MTZiNywgMHgwMDA1LCAweDcwMDgsIDB4YTA4MCwKLQkweDAwMDIsIDB4MjAwMywgMHgwMjAwLCAweDcwMDcsIDB4MDAwMCwgMHgwODBjLCAweDE2NzEsIDB4MDAwNSwKLQkweDAwZDYsIDB4NzAwOCwgMHgyMDY4LCAweDc4MzAsIDB4NjgyNiwgMHg3ODM0LCAweDY4MmEsIDB4NzgzOCwKLQkweDY4MmUsIDB4NzgzYywgMHg2ODMyLCAweDY4MGIsIDB4MDEwMCwgMHgwMGRlLCAweDcwMDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4MTY3MSwgMHgwMDA1LCAweGExOGMsIDB4MDcwMCwgMHgxNTQwLCAweDAxMzYsIDB4MDE0NiwKLQkweDAxNTYsIDB4MjAwMSwgMHhiNmY4LCAweDIwMDQsIDB4YTA4MCwgMHgwMDBkLCAweDIwYTAsIDB4MjA5OSwKLQkweDAwMTQsIDB4NzgwMywgMHgwMDQwLCAweDIwYTksIDB4MDAyMCwgMHg1M2E1LCAweDIwMDEsIDB4YjZmYSwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMTQ4LCAweDIwMDEsIDB4YjcwMywgMHgyMDA0LCAweGEwODAsIDB4MDAwZCwKLQkweDIwYTAsIDB4MjBhOSwgMHgwMDIwLCAweDUzYTUsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsIDB4NzAwNywKLQkweDAwMDAsIDB4MDgwYywgMHg1ZWUxLCAweDA4MGMsIDB4MTY3MSwgMHgwMDA1LCAweDIwMTEsIDB4ODAwMywKLQkweDA4MGMsIDB4M2YxMywgMHgwY2Y4LCAweGExOGMsIDB4MDcwMCwgMHgxMTQ4LCAweDIwMDEsIDB4YjcyOCwKLQkweDIwMDMsIDB4MDEwMCwgMHg3MDA3LCAweDAwMDAsIDB4MDgwYywgMHgxNjcxLCAweDAwMDUsIDB4MjAxMSwKLQkweDgwMDQsIDB4MDgwYywgMHgzZjEzLCAweDBjZjgsIDB4MDEyNiwgMHgyMDkxLCAweDIyMDAsIDB4MjA3OSwKLQkweDAwMzAsIDB4MjA3MSwgMHhiOTI0LCAweDcwMDMsIDB4MDAwMCwgMHg3MDBmLCAweGI5MzAsIDB4NzAxMywKLQkweGI5MzAsIDB4NzgwZiwgMHgwMGY2LCAweDc4MDMsIDB4MDAwNCwgMHgwMTJlLCAweDAwMDUsIDB4NjkzNCwKLQkweGExODQsIDB4MDAwNywgMHgwMDAyLCAweDE3ZjMsIDB4MTgzMSwgMHgxN2YzLCAweDE3ZjMsIDB4MTdmMywKLQkweDE4MTksIDB4MTgwMCwgMHgxN2Y3LCAweGEwODUsIDB4MDAwMSwgMHgwODA0LCAweDE4NGIsIDB4Njg0YywKLQkweGQwYmMsIDB4MGRjOCwgMHg2ODYwLCAweDY4MmUsIDB4Njg1YywgMHg2ODJhLCAweDY4NTgsIDB4MDRjOCwKLQkweGExOGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMWUsIDB4MWQ3MCwgMHg2ODRjLCAweGQwYmMsIDB4MGQ1OCwKLQkweDY4NjAsIDB4NjgyZSwgMHg2ODVjLCAweDY4MmEsIDB4NjgwNCwgMHg2ODFhLCAweGEwODAsIDB4MDAwZCwKLQkweDIwMDQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODAsIDB4MjMwOCwgMHgyMDA1LCAweDY4MzIsIDB4Njg1OCwKLQkweDA0NDAsIDB4YTE4YywgMHgwMGZmLCAweGExODYsIDB4MDAxNSwgMHgxOWE4LCAweDY4NGMsIDB4ZDBhYywKLQkweDA5OTAsIDB4NjgwNCwgMHg2ODFhLCAweGEwODAsIDB4MDAwZCwgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwKLQkweGEwODAsIDB4MjMwOCwgMHgyMDA1LCAweDY4MzIsIDB4YTAwNiwgMHg2ODJlLCAweDY4MmEsIDB4Njg1OCwKLQkweDAwODAsIDB4Njg0YywgMHhkMGFjLCAweDA5MDQsIDB4MTdmMywgMHhhMDA2LCAweDY4MmUsIDB4NjgyYSwKLQkweDY4NTgsIDB4YTE4YywgMHgwMDBmLCAweGExODgsIDB4MjMwOCwgMHgyMTBkLCAweDY5MzIsIDB4MmQwOCwKLQkweDY5MWEsIDB4NjgyNiwgMHg2ODRjLCAweGMwZGQsIDB4Njg0ZSwgMHhhMDA2LCAweDY4MGEsIDB4Njk3YywKLQkweDY5MTIsIDB4Njk4MCwgMHg2OTE2LCAweDAwMDUsIDB4Njg0YywgMHhkMGFjLCAweDA5MGMsIDB4MTUxYSwKLQkweDY4MzMsIDB4MjMwNSwgMHgyZDA4LCAweDY5MWEsIDB4Njg1OCwgMHg4MDAxLCAweDY4MjYsIDB4Njg0YywKLQkweGMwZGQsIDB4Njg0ZSwgMHhhMDA2LCAweDY4MGEsIDB4NjgyZSwgMHg2ODJhLCAweDY5N2MsIDB4NjkxMiwKLQkweDY5ODAsIDB4NjkxNiwgMHgwMDA1LCAweDIwZTEsIDB4MDAwNywgMHgyMGUxLCAweDIwMDAsIDB4MjAwMSwKLQkweDAyMGEsIDB4MjAwNCwgMHg4MmZmLCAweDAxZTgsIDB4YTI4MCwgMHgwMDA0LCAweDAwZDYsIDB4MjA2YywKLQkweDY4NGMsIDB4ZDBkYywgMHgxMTkwLCAweGEyODAsIDB4MDAwNywgMHgyMDA0LCAweGEwODYsIDB4MDAwYSwKLQkweDExMTAsIDB4MDg5MSwgMHgwMDEwLCAweDA4MGMsIDB4MTdlNywgMHgwMTM4LCAweDAwZGUsIDB4YTI4MCwKLQkweDAwMDAsIDB4MjAwMywgMHgwMDAyLCAweGEwMTYsIDB4MDAyMCwgMHg2ODA4LCAweDgwMDAsIDB4NjgwYSwKLQkweDAwZGUsIDB4MDEyNiwgMHgwMDQ2LCAweDAwMzYsIDB4MDAyNiwgMHgyMDkxLCAweDIyMDAsIDB4MDAyZSwKLQkweDAwM2UsIDB4MDA0ZSwgMHg3MDAwLCAweGEwMDUsIDB4MDFkMCwgMHg3MTBjLCAweDIyMGEsIDB4ODEwOCwKLQkweDIzMGEsIDB4ODEwOCwgMHgyNDBhLCAweDgxMDgsIDB4YTE4MiwgMHhiOTRiLCAweDAyMTAsIDB4MjAwOSwKLQkweGI5MzAsIDB4NzEwZSwgMHg3MDEwLCAweGExMDIsIDB4YTA4MiwgMHgwMDA5LCAweDAxMTgsIDB4YTA4MCwKLQkweDAwMWIsIDB4MTExOCwgMHgyMDA5LCAweDAxMzgsIDB4MjAwYSwgMHgwMTJlLCAweDAwMDUsIDB4NzIwNiwKLQkweDIwMDEsIDB4MThhZCwgMHgwMDA2LCAweDIyNjAsIDB4MDgwNCwgMHgxOWRhLCAweDAxMjYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDBjNiwgMHgwMDA2LCAweDIwOTEsIDB4MjIwMCwgMHgwMDBlLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDBkNiwgMHgwMGM2LCAweDI0NjAsIDB4NjExMCwgMHgyMTY4LCAweDZhNjIsIDB4NmI1ZSwKLQkweGEwMDUsIDB4MDkwNCwgMHgxOTBmLCAweDY4MDgsIDB4YTAwNSwgMHgwOTA0LCAweDE5NDYsIDB4NzAwMCwKLQkweGEwMDUsIDB4MTEwOCwgMHgwNDg4LCAweDcwMGMsIDB4NzExMCwgMHhhMTA2LCAweDE5MDQsIDB4MTk0ZSwKLQkweDcwMDQsIDB4YTQwNiwgMHgxNTQ4LCAweDIwMDEsIDB4MDAwNSwgMHgyMDA0LCAweGQwOGMsIDB4MDE2OCwKLQkweDAwNDYsIDB4MDgwYywgMHgxYjIyLCAweDAwNGUsIDB4MjQ2MCwgMHg2MDEwLCAweGEwODAsIDB4MDAwMiwKLQkweDIwMDQsIDB4YTAwNSwgMHgwOTA0LCAweDE5NDYsIDB4MGMxMCwgMHgyMDAxLCAweDAyMDcsIDB4MjAwNCwKLQkweGQwOWMsIDB4MWQ0OCwgMHg3ODA0LCAweGEwODQsIDB4NjAwMCwgMHgwMTIwLCAweGEwODYsIDB4NjAwMCwKLQkweDAxMDgsIDB4MGMwOCwgMHg3ODE4LCAweDY4MTIsIDB4NzgxYywgMHg2ODE2LCAweDc4MDMsIDB4MDAwNCwKLQkweDcwMDMsIDB4MDAwMCwgMHg3MDA0LCAweDIwNjAsIDB4NjEwMCwgMHhhMThlLCAweDAwMDQsIDB4MTkwNCwKLQkweDE5NGUsIDB4MjAwOSwgMHgwMDQ4LCAweDA4MGMsIDB4ODZkMywgMHgwODA0LCAweDE5NGUsIDB4NjgwOCwKLQkweGEwMDUsIDB4MDVhMCwgMHg3MDAwLCAweGEwMDUsIDB4MDU4OCwgMHg3MDBjLCAweDcxMTAsIDB4YTEwNiwKLQkweDExMTgsIDB4NzAwNCwgMHhhNDA2LCAweDE1NTAsIDB4MjAwMSwgMHgwMDA1LCAweDIwMDQsIDB4ZDA4YywKLQkweDAxNjAsIDB4MDA0NiwgMHgwODBjLCAweDFiMjIsIDB4MDA0ZSwgMHgyNDYwLCAweDYwMTAsIDB4YTA4MCwKLQkweDAwMDIsIDB4MjAwNCwgMHhhMDA1LCAweDAxZDAsIDB4MGMyOCwgMHgyMDAxLCAweDAyMDcsIDB4MjAwNCwKLQkweGQwOWMsIDB4MWQ1MCwgMHgyMDAxLCAweDAwMDUsIDB4MjAwNCwgMHhkMDhjLCAweDFkNTAsIDB4NzgwNCwKLQkweGEwODQsIDB4NjAwMCwgMHgwMTE4LCAweGEwODYsIDB4NjAwMCwgMHgxOWYwLCAweDc4MTgsIDB4NjgxMiwKLQkweDc4MWMsIDB4NjgxNiwgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDYxMDAsIDB4YTE4ZSwKLQkweDAwMDQsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDgsIDB4MDgwYywgMHg4NmQzLCAweDAwY2UsIDB4MDBkZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsIDB4MDA1NiwKLQkweDIwNzEsIDB4YjkyNCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwOTA0LCAweDE5YjgsIDB4NzAwNCwKLQkweGFjMDYsIDB4MTkwNCwgMHgxOWFhLCAweDIwNzksIDB4MDAzMCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMywKLQkweDA5MDQsIDB4MTlhYSwgMHg3ODA0LCAweGQwZmMsIDB4MTVjOCwgMHgyMGUxLCAweDYwMDAsIDB4MjAxMSwKLQkweDAwMzIsIDB4MjAwMSwgMHgwMjA4LCAweDIwMGMsIDB4MjAwMSwgMHgwMjA5LCAweDIwMDQsIDB4YTEwNiwKLQkweDFkODgsIDB4ODIxMSwgMHgxZGIwLCAweDc4MDQsIDB4ZDBmYywgMHgxNTQwLCAweDA4MGMsIDB4MWU4YSwKLQkweDAwMjYsIDB4MDA1NiwgMHg3ODAzLCAweDAwMDQsIDB4NzgwNCwgMHhkMGFjLCAweDFkZTgsIDB4NzgwMywKLQkweDAwMDIsIDB4NzgwMywgMHgwMDA5LCAweDcwMDMsIDB4MDAwMywgMHg3MDA3LCAweDAwMDAsIDB4MDA1ZSwKLQkweDAwMmUsIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwgMHgwODBjLCAweDViNDEsIDB4MTEzOCwKLQkweDAwNjYsIDB4MjAzMSwgMHgwMDAxLCAweDA4MGMsIDB4NWJjMywgMHgwMDZlLCAweDAwNTgsIDB4MjAwMSwKLQkweDAxNjAsIDB4MjUwMiwgMHgyMDAxLCAweDAxMzgsIDB4MjIwMiwgMHgwMDIwLCAweDA4MGMsIDB4MWIyMiwKLQkweDA4MDQsIDB4MTk1YSwgMHgwMTU2LCAweDIwYTksIDB4MDAwOSwgMHgyMDA5LCAweGI5MzAsIDB4MjEwNCwKLQkweGFjMDYsIDB4MTEwOCwgMHgyMDBhLCAweGExODgsIDB4MDAwMywgMHgxZjA0LCAweDE5YWYsIDB4MDE1ZSwKLQkweDAwNWUsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMmUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NzAwYywKLQkweDcxMTAsIDB4YTEwNiwgMHgwOTA0LCAweDFhNGUsIDB4MjEwNCwgMHg3MDA2LCAweDIwNjAsIDB4ODEwOCwKLQkweDIxMWMsIDB4ODEwOCwgMHgyMTI0LCAweDgxMDgsIDB4YTE4MiwgMHhiOTRiLCAweDAyMTAsIDB4MjAwOSwKLQkweGI5MzAsIDB4NzExMiwgMHg3MDBjLCAweGExMDYsIDB4MTEyOCwgMHgwODBjLCAweDI5MjAsIDB4MjAwMSwKLQkweDAxMzgsIDB4MjEwMiwgMHg4Y2ZmLCAweDA1OTgsIDB4NjAxMCwgMHgyMDY4LCAweDJkNTgsIDB4NjgyOCwKLQkweGE0MDYsIDB4MTU5MCwgMHg2ODJjLCAweGEzMDYsIDB4MTU3OCwgMHg3MDA0LCAweDIwNjAsIDB4NjAyMCwKLQkweGMwZDQsIDB4NjAyMiwgMHg2ODRjLCAweGQwZjQsIDB4MDEyOCwgMHg2ODE3LCAweGZmZmYsIDB4NjgxMywKLQkweGZmZmYsIDB4MDBlOCwgMHg2ODUwLCAweGQwZjQsIDB4MTEzMCwgMHg3ODAzLCAweDAwMDQsIDB4NjgxMCwKLQkweDc4MWEsIDB4NjgxNCwgMHg3ODFlLCAweDY4MjQsIDB4MjA1MCwgMHg2ODE4LCAweDIwNjAsIDB4NjgzMCwKLQkweDIwNDAsIDB4NjAzNCwgMHhhMGNjLCAweDAwMGYsIDB4MjAwOSwgMHgwMDExLCAweDA4MGMsIDB4MWE1MSwKLQkweDAxMjAsIDB4MjAwOSwgMHgwMDAxLCAweDA4MGMsIDB4MWE1MSwgMHgyZDU4LCAweDAwMDUsIDB4MDgwYywKLQkweDFkZjksIDB4MDkwNCwgMHgxOWJmLCAweDBjZDAsIDB4NjAyMCwgMHhkMGY0LCAweDExZTAsIDB4ZDBkNCwKLQkweDAxYjgsIDB4NjAzOCwgMHhhNDAyLCAweDYwMzQsIDB4YTMwMywgMHgwMTA4LCAweDEyODgsIDB4NjQzYSwKLQkweDYzMzYsIDB4NmMyYSwgMHg2YjJlLCAweDAwNDYsIDB4MDAzNiwgMHgyNDAwLCAweDZjN2MsIDB4YTQwMiwKLQkweDY4MTIsIDB4MjMwMCwgMHg2YjgwLCAweGEzMDMsIDB4NjgxNiwgMHgwMDNlLCAweDAwNGUsIDB4MDAxOCwKLQkweDA4MGMsIDB4YTA1NiwgMHgwOWUwLCAweDYwMWMsIDB4YTA4ZSwgMHgwMDA4LCAweDA5MDQsIDB4MTllNSwKLQkweGEwOGUsIDB4MDAwYSwgMHgwOTA0LCAweDE5ZTUsIDB4MjAwMSwgMHhiNjc0LCAweDIwMDQsIDB4ZDBiNCwKLQkweDExNDAsIDB4NjAxOCwgMHgyMDA0LCAweGQwYmMsIDB4MTEyMCwgMHg2ODE3LCAweDdmZmYsIDB4NjgxMywKLQkweGZmZmYsIDB4MDgwYywgMHgyMzI4LCAweDE5MTgsIDB4MDgwNCwgMHgxOWU1LCAweDcwMDMsIDB4MDAwMCwKLQkweDAwMDUsIDB4OGFmZiwgMHgwOTA0LCAweDFhZmMsIDB4YTAzZSwgMHgyNzMwLCAweGM5ZmMsIDB4Njg1MCwKLQkweGQwZmMsIDB4MTFiOCwgMHhkMGY0LCAweDE1ODgsIDB4MDBkNiwgMHgyODA1LCAweGFjNjgsIDB4MjkwMCwKLQkweDAwMDIsIDB4MWFiYSwgMHgxYTkzLCAweDFhOTMsIDB4MWFiYSwgMHgxYWJhLCAweDFhYjIsIDB4MWFiYSwKLQkweDFhOTMsIDB4MWFiYSwgMHgxYTliLCAweDFhOWIsIDB4MWFiYSwgMHgxYWJhLCAweDFhYmEsIDB4MWFhYSwKLQkweDFhOWIsIDB4NzgwMywgMHgwMDA0LCAweGMwZmMsIDB4Njg1MiwgMHg2YjZjLCAweDZhNzAsIDB4NmQxYywKLQkweDZjMjAsIDB4MDBkNiwgMHhkOTljLCAweDAxNDAsIDB4MjgwNSwgMHhhYzY4LCAweDZmMDgsIDB4NmUwYywKLQkweDA4MGMsIDB4MjNlZCwgMHgwMTIwLCAweDA0ZDAsIDB4MDgwYywgMHgyM2VkLCAweDE1YjAsIDB4Njg1MCwKLQkweGMwZmQsIDB4Njg1MiwgMHgwMGRlLCAweGEwMDYsIDB4MDAwNSwgMHhjMGY0LCAweDY4NTIsIDB4NmI2YywKLQkweDZhNzAsIDB4MDBkNiwgMHgwNGMwLCAweDZiMDgsIDB4NmEwYywgMHg2ZDAwLCAweDZjMDQsIDB4MDgwYywKLQkweDIzZWQsIDB4MGQ4MCwgMHgwNDEwLCAweDZiMTAsIDB4NmExNCwgMHg2ZDAwLCAweDZjMDQsIDB4NmYwOCwKLQkweDZlMGMsIDB4MDgwYywgMHgyM2VkLCAweDBkMzAsIDB4MDBjOCwgMHg2ZDAwLCAweDZjMDQsIDB4NmYwOCwKLQkweDZlMGMsIDB4MDBhMCwgMHgwMGRlLCAweDAwZDYsIDB4NjgzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMWUsIDB4MTE0MCwgMHgwMGRlLCAweDA4MGMsIDB4MjJjYSwgMHgxOTA0LCAweDFhNTEsIDB4YTAwZSwKLQkweDA4MDQsIDB4MWFmYywgMHgwMGRlLCAweDA4MGMsIDB4MTUxYSwgMHhjOWZkLCAweDdiMjIsIDB4N2EyNiwKLQkweDdkMzIsIDB4N2MzNiwgMHg3ZjNhLCAweDdlM2UsIDB4NzMxNiwgMHg3MjFhLCAweDc1MWUsIDB4NzQyMiwKLQkweDc3MjYsIDB4NzYyYSwgMHg3OTAyLCAweDcxMDAsIDB4ODEwOCwgMHg3MTAyLCAweDAwZGUsIDB4NjgyOCwKLQkweGEzMDAsIDB4NjgyYSwgMHg2ODJjLCAweGEyMDEsIDB4NjgyZSwgMHg4MTA5LCAweDJkMDgsIDB4MTUwMCwKLQkweGQ5ZmMsIDB4MDE2MCwgMHhjOWZjLCAweDA4MGMsIDB4MjJjYSwgMHgwMWU4LCAweDI4MDUsIDB4YWM2OCwKLQkweDY4MDAsIDB4YTUwNiwgMHgxMWMwLCAweDY4MDQsIDB4YTQwNiwgMHgwMGE4LCAweGM5ZmMsIDB4MDgwYywKLQkweDIyY2EsIDB4MDE4OCwgMHgyODA1LCAweGFjNjgsIDB4NjgwMCwgMHhhNTA2LCAweDExNjAsIDB4NjgwNCwKLQkweGE0MDYsIDB4MTE0OCwgMHg2ODA4LCAweGE3MDYsIDB4MTEzMCwgMHg2ODBjLCAweGE2MDYsIDB4MDAxOCwKLQkweGM5ZmMsIDB4MDgwYywgMHgyMmNhLCAweDIxNjgsIDB4MDAwNSwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywKLQkweDFmNzEsIDB4NzAwNCwgMHgyMDYwLCAweDAwZDYsIDB4NjAxMCwgMHgyMDY4LCAweDcwMDMsIDB4MDAwMCwKLQkweDA4MGMsIDB4MWUxYSwgMHgwODBjLCAweDlkMTYsIDB4MDE3MCwgMHg2ODA4LCAweDgwMDEsIDB4NjgwYSwKLQkweDY5N2MsIDB4NjkxMiwgMHg2OTgwLCAweDY5MTYsIDB4NjgyYiwgMHhmZmZmLCAweDY4MmYsIDB4ZmZmZiwKLQkweDY4NTAsIDB4YzBiZCwgMHg2ODUyLCAweDAwZGUsIDB4MDgwYywgMHg5OWU2LCAweDA4MDQsIDB4MWQ0NywKLQkweDA4MGMsIDB4MTUxYSwgMHgwMTI2LCAweDIwOTEsIDB4MjIwMCwgMHgwMDA2LCAweDAwMTYsIDB4MmI2OCwKLQkweDY4MTgsIDB4MjA2MCwgMHg3OTA0LCAweDc4MDMsIDB4MDAwMiwgMHhhMTg0LCAweDA3MDAsIDB4MTk3OCwKLQkweGExODQsIDB4MDAwMywgMHhhMDg2LCAweDAwMDMsIDB4MGQ1OCwgMHg3MDAwLCAweDAwMDIsIDB4MWIzZiwKLQkweDFiNDUsIDB4MWM1NiwgMHgxZDIyLCAweDFkMzYsIDB4MWIzZiwgMHgxYjNmLCAweDFiM2YsIDB4NzgwNCwKLQkweGQwOWMsIDB4MTkwNCwgMHgxZDQ3LCAweDA4MGMsIDB4MTUxYSwgMHg4MDAxLCAweDcwMDIsIDB4ZDFiYywKLQkweDExYTAsIDB4ZDE5YywgMHgxOTA0LCAweDFiZGEsIDB4ZDFkYywgMHgxMTc4LCAweDhhZmYsIDB4MDkwNCwKLQkweDFiZGEsIDB4MjAwOSwgMHgwMDAxLCAweDA4MGMsIDB4MWE1MSwgMHgwOTA0LCAweDFkNDcsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDgwYywgMHgxYTUxLCAweDA4MDQsIDB4MWQ0NywgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywKLQkweDAwMDAsIDB4ZDFiYywgMHgxOTA0LCAweDFiYmEsIDB4MDAyNiwgMHgwMDM2LCAweDdjMjAsIDB4N2QyNCwKLQkweDdlMzAsIDB4N2YzNCwgMHg3ODE4LCAweDY4MTIsIDB4NzgxYywgMHg2ODE2LCAweDIwMDEsIDB4MDIwMSwKLQkweDIwMDQsIDB4YTAwNSwgMHgwMTQwLCAweDc4MDgsIDB4ZDBlYywgMHgxMTI4LCAweDc4MDMsIDB4MDAwOSwKLQkweDcwMDMsIDB4MDAwNCwgMHgwMDEwLCAweDA4MGMsIDB4MWQ0YiwgMHg2YjI4LCAweDZhMmMsIDB4MjQwMCwKLQkweDY4NmUsIDB4YTMxYSwgMHgyNTAwLCAweDY4NzIsIDB4YTIxMywgMHg2YjJhLCAweDZhMmUsIDB4MDBjNiwKLQkweDcwMDQsIDB4MjA2MCwgMHg2MDIwLCAweGQwZjQsIDB4MTExMCwgMHg2MzNhLCAweDYyMzYsIDB4MDBjZSwKLQkweDAwM2UsIDB4MDAyZSwgMHg2ZTFlLCAweDZmMjIsIDB4MjUwMCwgMHhhNDA1LCAweDAxMjgsIDB4MDgwYywKLQkweDIyZTAsIDB4Njg1MCwgMHhjMGZkLCAweDY4NTIsIDB4MmEwMCwgMHg2ODI2LCAweDJjMDAsIDB4NjgxYSwKLQkweDI4MDAsIDB4NjgzMiwgMHg2ODA4LCAweDgwMDEsIDB4NjgwYSwgMHgxMTQ4LCAweDY4NGMsIDB4ZDBlNCwKLQkweDAxMzAsIDB4NzAwNCwgMHgyMDYwLCAweDIwMDksIDB4MDA0OCwgMHgwODBjLCAweDg2ZDMsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwNCwgMHgwOTA0LCAweDFkNDcsIDB4NzAwMywgMHgwMDAwLCAweDA4MGMsIDB4MTliZiwKLQkweDA4MDQsIDB4MWQ0NywgMHgwMDU2LCAweDdkMGMsIDB4ZDViYywgMHgxMTEwLCAweDA4MGMsIDB4YjRjMywKLQkweDAwNWUsIDB4MDgwYywgMHgxZTFhLCAweDAwZjYsIDB4NzAwNCwgMHgyMDc4LCAweDA4MGMsIDB4NTM3NywKLQkweDAxMTgsIDB4NzgyMCwgMHhjMGY1LCAweDc4MjIsIDB4MDBmZSwgMHg2ODJiLCAweGZmZmYsIDB4NjgyZiwKLQkweGZmZmYsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4Njk3YywgMHg3OTFhLCAweDY5ODAsIDB4NzkxZSwKLQkweDA4MDQsIDB4MWQ0NywgMHg3MDA0LCAweDAwYzYsIDB4MjA2MCwgMHg2MDIwLCAweDAwY2UsIDB4ZDBmNCwKLQkweDAxMjAsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4MDRjMCwgMHg3ODE4LCAweDY4MTIsIDB4N2ExYywKLQkweDZhMTYsIDB4ZDE5YywgMHgwMTYwLCAweGEyMDUsIDB4MDE1MCwgMHg3MDA0LCAweGEwODAsIDB4MDAwNywKLQkweDIwMDQsIDB4YTA4NCwgMHhmZmZkLCAweGEwODYsIDB4MDAwOCwgMHgxOTA0LCAweDFiNWQsIDB4Njg0YywKLQkweGMwZjUsIDB4Njg0ZSwgMHg3ODE0LCAweGEwMDUsIDB4MTUyMCwgMHg3MDAzLCAweDAwMDAsIDB4NjgwOCwKLQkweDgwMDEsIDB4NjgwYSwgMHgwMWEwLCAweDcwMDQsIDB4MjA2MCwgMHg2MDFjLCAweGEwODYsIDB4MDAwYSwKLQkweDExYTAsIDB4MDE1NiwgMHgyMGE5LCAweDAwMDksIDB4MjAwOSwgMHhiOTMwLCAweDIxMDQsIDB4YWMwNiwKLQkweDExMDgsIDB4MjAwYSwgMHhhMTg4LCAweDAwMDMsIDB4MWYwNCwgMHgxYzBlLCAweDAxNWUsIDB4NzAwNCwKLQkweDIwNjAsIDB4MjAwOSwgMHgwMDQ4LCAweDA4MGMsIDB4ODZkMywgMHgwODBjLCAweDE5YmYsIDB4MDgwNCwKLQkweDFkNDcsIDB4NzgxOCwgMHg2ODEyLCAweDc4MWMsIDB4NjgxNiwgMHg3ODE0LCAweDc5MDgsIDB4YTE4YywKLQkweDBmZmYsIDB4YTE5MiwgMHgwODQxLCAweDFhMDQsIDB4MWFmZiwgMHhhMTg4LCAweDAwMDcsIDB4ODExNCwKLQkweDgyMTQsIDB4ODIxNCwgMHhhMTBhLCAweDgxMDQsIDB4ODAwNCwgMHg4MDA0LCAweGEyMGEsIDB4ODEwYiwKLQkweDgxMGIsIDB4ODEwYiwgMHgwODBjLCAweDFlYjUsIDB4NzgwMywgMHgwMDA0LCAweDc4MGYsIDB4ZmZmZiwKLQkweDc4MDMsIDB4MDAwMSwgMHg3ODA0LCAweGQwZmMsIDB4MGRlOCwgMHg3ODAzLCAweDAwMDIsIDB4NzgwMywKLQkweDAwMDQsIDB4NzgwZiwgMHgwMGY2LCAweDcwMDQsIDB4NzAwNywgMHgwMDAwLCAweDIwNjAsIDB4MjAwOSwKLQkweDAwNDgsIDB4MDgwYywgMHg4NmQzLCAweDA4MGMsIDB4MWYwYiwgMHgwODM4LCAweDgwMDEsIDB4NzAwMiwKLQkweGQxOTQsIDB4MDFiMCwgMHg3ODA0LCAweGQwZmMsIDB4MTkwNCwgMHgxY2YyLCAweGQwOWMsIDB4MDEzOCwKLQkweDc4MDQsIDB4ZDBmYywgMHgxOTA0LCAweDFjZjIsIDB4ZDA5YywgMHgxOTA0LCAweDFjZjYsIDB4OGFmZiwKLQkweDA5MDQsIDB4MWQ0NywgMHgyMDA5LCAweDAwMDEsIDB4MDgwYywgMHgxYTUxLCAweDA4MDQsIDB4MWQ0NywKLQkweGExODQsIDB4MDg4OCwgMHgxMTQ4LCAweDhhZmYsIDB4MDkwNCwgMHgxZDQ3LCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4MWE1MSwgMHgwODA0LCAweDFkNDcsIDB4NzgxOCwgMHg2ODEyLCAweDdhMWMsIDB4NmExNiwKLQkweGEyMDUsIDB4MDkwNCwgMHgxYmY3LCAweDc4MDMsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4ZDFiYywKLQkweDE5MDQsIDB4MWNkNCwgMHg2ODM0LCAweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMjksIDB4MTExOCwKLQkweGQxOWMsIDB4MTkwNCwgMHgxYmY3LCAweDAwMjYsIDB4MDAzNiwgMHg3YzIwLCAweDdkMjQsIDB4N2UzMCwKLQkweDdmMzQsIDB4NzgxOCwgMHg2ODEyLCAweDc4MWMsIDB4NjgxNiwgMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwKLQkweGEwMDUsIDB4MDE0MCwgMHg3ODA4LCAweGQwZWMsIDB4MTEyOCwgMHg3ODAzLCAweDAwMDksIDB4NzAwMywKLQkweDAwMDQsIDB4MDAyMCwgMHgwMDE2LCAweDA4MGMsIDB4MWQ0YiwgMHgwMDFlLCAweDZiMjgsIDB4NmEyYywKLQkweDA4MGMsIDB4MjJlMCwgMHgwMGQ2LCAweDI4MDUsIDB4YWM2OCwgMHg2MDM0LCAweGQwOWMsIDB4MTEyOCwKLQkweDY4MDgsIDB4YTMxYSwgMHg2ODBjLCAweGEyMTMsIDB4MDAyMCwgMHg2ODEwLCAweGEzMWEsIDB4NjgxNCwKLQkweGEyMTMsIDB4MDBkZSwgMHhkMTk0LCAweDA5MDQsIDB4MWI3ZiwgMHgyYTAwLCAweDY4MjYsIDB4MmMwMCwKLQkweDY4MWEsIDB4MjgwMCwgMHg2ODMyLCAweDY4MDgsIDB4ODAwMSwgMHg2ODBhLCAweDZiMmEsIDB4NmEyZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwODA0LCAweDFjMWQsIDB4MDA1NiwgMHg3ZDBjLCAweDA4MGMsIDB4YjRjMywKLQkweDAwNWUsIDB4MDgwYywgMHgxZTFhLCAweDAwZjYsIDB4NzAwNCwgMHgyMDc4LCAweDA4MGMsIDB4NTM3NywKLQkweDAxMTgsIDB4NzgyMCwgMHhjMGY1LCAweDc4MjIsIDB4MDBmZSwgMHg2ODJiLCAweGZmZmYsIDB4NjgyZiwKLQkweGZmZmYsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4Njk3YywgMHg3OTFhLCAweDY5ODAsIDB4NzkxZSwKLQkweDA4MDQsIDB4MWQ0NywgMHg3ODA0LCAweGQwOWMsIDB4MDkwNCwgMHgxYjJhLCAweDdjMjAsIDB4NzgyNCwKLQkweGE0MDUsIDB4MTkwNCwgMHgxYjJhLCAweDc4MTgsIDB4NjgxMiwgMHg3YzFjLCAweDZjMTYsIDB4YTQwNSwKLQkweDExMjAsIDB4NzgwMywgMHgwMDAyLCAweDA4MDQsIDB4MWJmNywgMHg3NTFjLCAweDc0MjAsIDB4NzcyNCwKLQkweDc2MjgsIDB4NzAxNCwgMHhhNTI4LCAweDcwMTgsIDB4YTQyMSwgMHhhN2I5LCAweDAwMDAsIDB4YTZiMSwKLQkweDAwMDAsIDB4NzgzMCwgMHhhNTA2LCAweDExNTAsIDB4NzgzNCwgMHhhNDA2LCAweDExMzgsIDB4NzgzOCwKLQkweGE3MDYsIDB4MTEyMCwgMHg3ODNjLCAweGE2MDYsIDB4MDkwNCwgMHgxYjJhLCAweDc4MDMsIDB4MDAwMiwKLQkweDA4MDQsIDB4MWM4MywgMHg3ODAzLCAweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDcwMDQsIDB4YTAwZCwKLQkweDAxNTAsIDB4NjgwOCwgMHg4MDAxLCAweDY4MGEsIDB4MTEzMCwgMHg3MDA0LCAweDIwNjAsIDB4MjAwOSwKLQkweDAwNDgsIDB4MDgwYywgMHg4NmQzLCAweDA4MGMsIDB4MTliZiwgMHgwMDg4LCAweDc4MDMsIDB4MDAwNCwKLQkweDcwMDMsIDB4MDAwMCwgMHg3MDA0LCAweDIwNjAsIDB4NjAxMCwgMHhhMDA1LCAweDBkYTAsIDB4MjA2OCwKLQkweDY4MDgsIDB4ODAwMCwgMHg2ODBhLCAweDZjMjgsIDB4NmIyYywgMHgwODBjLCAweDE5ZGEsIDB4MDAxZSwKLQkweDAwMGUsIDB4MDEyZSwgMHgwMDA1LCAweDcwMGMsIDB4NzExMCwgMHhhMTA2LCAweDA5MDQsIDB4MWRlZCwKLQkweDcwMDQsIDB4MDAxNiwgMHgyMTBjLCAweGExMDYsIDB4MDAxZSwgMHgwOTA0LCAweDFkZWQsIDB4MDBkNiwKLQkweDAwYzYsIDB4MjE2YywgMHgyZDAwLCAweGEwMDUsIDB4MDkwNCwgMHgxZGViLCAweDY4MWMsIDB4YTA4NiwKLQkweDAwMDgsIDB4MDkwNCwgMHgxZGViLCAweDY4MjAsIDB4ZDBkNCwgMHgxOTA0LCAweDFkZWIsIDB4NjgxMCwKLQkweDIwNjgsIDB4Njg1MCwgMHhkMGZjLCAweDA1YTgsIDB4ODEwOCwgMHgyMTA0LCAweDZiMmMsIDB4YTMwNiwKLQkweDE5MDQsIDB4MWRlYiwgMHg4MTA4LCAweDIxMDQsIDB4NmEyOCwgMHhhMjA2LCAweDE5MDQsIDB4MWRlYiwKLQkweDY4NTAsIDB4YzBmYywgMHhjMGY1LCAweDY4NTIsIDB4Njg2YywgMHg3ODIyLCAweDcwMTYsIDB4Njg3MCwKLQkweDc4MjYsIDB4NzAxYSwgMHg2ODFjLCAweDc4MzIsIDB4NzAxZSwgMHg2ODIwLCAweDc4MzYsIDB4NzAyMiwKLQkweDY4MTgsIDB4MjA2MCwgMHg2MDM0LCAweGQwOWMsIDB4MDE2OCwgMHg2ODMwLCAweDIwMDUsIDB4MDBkNiwKLQkweGFjNjgsIDB4NjgwOCwgMHg3ODNhLCAweDcwMjYsIDB4NjgwYywgMHg3ODNlLCAweDcwMmEsIDB4MDBkZSwKLQkweDA4MDQsIDB4MWRlNSwgMHhhMDA2LCAweDc4M2EsIDB4NzgzZSwgMHg3MDI2LCAweDcwMmEsIDB4MDgwNCwKLQkweDFkZTUsIDB4ODEwOCwgMHgyMTA0LCAweGEwMDUsIDB4MTkwNCwgMHgxZGViLCAweDZiMmMsIDB4YTMwNiwKLQkweDE5MDQsIDB4MWRlYiwgMHg4MTA4LCAweDIxMDQsIDB4YTAwNSwgMHgxNWU4LCAweDZhMjgsIDB4YTIwNiwKLQkweDE1ZDAsIDB4Njg1MCwgMHhjMGY1LCAweDY4NTIsIDB4NjgzMCwgMHgyMDA1LCAweDY5MTgsIDB4YTE2MCwKLQkweGExODAsIDB4MDAwZCwgMHgyMDA0LCAweGQwOWMsIDB4MTFhMCwgMHg2MDA4LCAweDc4MjIsIDB4NzAxNiwKLQkweDY4NmUsIDB4NjAwYywgMHg3ODI2LCAweDcwMWEsIDB4Njg3MiwgMHg2MDAwLCAweDc4MzIsIDB4NzAxZSwKLQkweDYwMDQsIDB4NzgzNiwgMHg3MDIyLCAweGEwMDYsIDB4NzgzYSwgMHg3ODNlLCAweDcwMjYsIDB4NzAyYSwKLQkweDAwYTAsIDB4NjAxMCwgMHg3ODIyLCAweDcwMTYsIDB4Njg2ZSwgMHg2MDE0LCAweDc4MjYsIDB4NzAxYSwKLQkweDY4NzIsIDB4NjAwMCwgMHg3ODMyLCAweDcwMWUsIDB4NjAwNCwgMHg3ODM2LCAweDcwMjIsIDB4NjAwOCwKLQkweDc4M2EsIDB4NzAyNiwgMHg2MDBjLCAweDc4M2UsIDB4NzAyYSwgMHg2ODEwLCAweDc4MWEsIDB4NjgxNCwKLQkweDc4MWUsIDB4NzgwMywgMHgwMDExLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDIwMTEsIDB4MDIwMSwKLQkweDIwMDksIDB4MDAzYywgMHgyMjA0LCAweGEwMDUsIDB4MTExOCwgMHg4MTA5LCAweDFkZDgsIDB4MDAwNSwKLQkweDAwMDUsIDB4MGNhMSwgMHgwMTE4LCAweDc4MGMsIDB4ZDBhNCwgMHgwMTIwLCAweDAwZDksIDB4YTA4NSwKLQkweDAwMDEsIDB4MDAxMCwgMHgwODBjLCAweDFmMGIsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MjIwMCwKLQkweDcwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDExNjAsIDB4NzAwYywgMHg3MTEwLCAweGExMDYsIDB4MDE0MCwKLQkweDA4MGMsIDB4Mjk5MSwgMHgyMGUxLCAweDkwMjgsIDB4NzAwZiwgMHhiOTMwLCAweDcwMTMsIDB4YjkzMCwKLQkweDAxMmUsIDB4MDAwNSwgMHgwMGM2LCAweDA4MGMsIDB4NWI0MSwgMHgxMWI4LCAweDIwMDEsIDB4MDE2MCwKLQkweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDAxMzgsIDB4MjAwMywgMHgwMDAwLCAweDIwMTEsIDB4MDBjOCwKLQkweGUwMDAsIDB4ZTAwMCwgMHg4MjExLCAweDFkZTAsIDB4MDRiMSwgMHgwMDY2LCAweDIwMzEsIDB4MDAwMCwKLQkweDA4MGMsIDB4NWJjMywgMHgwMDZlLCAweDAwY2UsIDB4MDAwNSwgMHgwODBjLCAweDFlOGEsIDB4MDgwYywKLQkweDI5OTEsIDB4MjBlMSwgMHg5MDI4LCAweDcwMGMsIDB4NzExMCwgMHhhMTA2LCAweDAxYzAsIDB4MjEwNCwKLQkweGEwMDUsIDB4MDEzMCwgMHgyMDYwLCAweDYwMTAsIDB4MjA2MCwgMHg2MDA4LCAweDgwMDEsIDB4NjAwYSwKLQkweGExODgsIDB4MDAwMywgMHhhMTgyLCAweGI5NGIsIDB4MDIxMCwgMHgyMDA5LCAweGI5MzAsIDB4NzExMiwKLQkweDcwMGMsIDB4YTEwNiwgMHgxZDQwLCAweDA4MGMsIDB4MjkyMCwgMHgyMTEwLCAweDBjMjAsIDB4MjAwMSwKLQkweDAxNWQsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MDE2MCwgMHgyNTAyLCAweDIwMDEsIDB4MDEzOCwKLQkweDIyMDIsIDB4MDBjZSwgMHgwMDA1LCAweDA4MGMsIDB4Mjk5MSwgMHgyMGUxLCAweDkwMjgsIDB4MjAwMSwKLQkweDAxNWQsIDB4MjAwMywgMHgwMDAwLCAweDAwZTYsIDB4MDBjNiwgMHgwMDE2LCAweDIwNzEsIDB4YjkyNCwKLQkweDcwMGMsIDB4NzExMCwgMHhhMTA2LCAweDAxOTAsIDB4MjEwNCwgMHhhMDA1LCAweDAxMzAsIDB4MjA2MCwKLQkweDYwMTAsIDB4MjA2MCwgMHg2MDA4LCAweDgwMDEsIDB4NjAwYSwgMHhhMTg4LCAweDAwMDMsIDB4YTE4MiwKLQkweGI5NGIsIDB4MDIxMCwgMHgyMDA5LCAweGI5MzAsIDB4NzExMiwgMHgwYzUwLCAweDAwMWUsIDB4MDBjZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDAxMzgsIDB4MjAxNCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAxNjAsIDB4MjAyYywgMHgyMDAzLCAweDAwMDAsIDB4MDgwYywgMHg1YjQxLCAweDExNDgsIDB4MjAyMSwKLQkweDAwMDIsIDB4MWQwNCwgMHgxZTk5LCAweDIwOTEsIDB4NjAwMCwgMHg4NDIxLCAweDFkZDAsIDB4MDAwNSwKLQkweDIwMjEsIDB4YjAxNSwgMHgyMDAxLCAweDAxNDEsIDB4MjAxYywgMHhkM2RjLCAweDExNjgsIDB4MjAwMSwKLQkweDAxMDksIDB4MjAxYywgMHhhMzljLCAweDAwNDgsIDB4MTEzOCwgMHgyMDAxLCAweDAxMTEsIDB4MjAxYywKLQkweDgzZmYsIDB4MTExMCwgMHg4NDIxLCAweDFkNzAsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDIwMCwKLQkweDc4MDgsIDB4YTA4NCwgMHhmMDAwLCAweGExMGQsIDB4MDg2OSwgMHgyMDAxLCAweDAxMDUsIDB4MjAwNCwKLQkweGEwODQsIDB4MDAwMywgMHgxMTMwLCAweDIwMDEsIDB4Yjk0YiwgMHgyMDA0LCAweGEwODYsIDB4MDAwMCwKLQkweDA1NDgsIDB4YTAyNiwgMHgyMDE5LCAweGYwMDAsIDB4ODMxOSwgMHgxMTQ4LCAweDIwMDEsIDB4MDEyYiwKLQkweDIwMDMsIDB4OTVmNSwgMHgyMDAxLCAweDAxMjksIDB4MjAwMywgMHg5NWY1LCAweDAwZDgsIDB4MjAwMSwKLQkweDAxMDUsIDB4MjAwNCwgMHhhMDg0LCAweDAwMDMsIDB4MTEzMCwgMHgyMDAxLCAweGI5NGIsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMTc4LCAweDIwMDEsIDB4MDEzMiwgMHgyMDA0LCAweGE0MzYsIDB4MDExMCwKLQkweDIwMjAsIDB4MGMwMCwgMHgyMDAxLCAweDAwMjEsIDB4MjAwNCwgMHhkMGZjLCAweDA5ZTgsIDB4MDgwYywKLQkweDIxNmQsIDB4MDhjMCwgMHgyMGUxLCAweDcwMDAsIDB4NzMyNCwgMHg3NDIwLCAweDcwMjgsIDB4NzAyOCwKLQkweDc0MjYsIDB4NzAzNywgMHgwMDAxLCAweDgxMGYsIDB4NzEyZSwgMHg3MDJmLCAweDAxMDAsIDB4NzAzNywKLQkweDAwMDgsIDB4NzMyNiwgMHg3NDIyLCAweDIwMDEsIDB4MDE2MCwgMHgyNTAyLCAweDIwMDEsIDB4MDEzOCwKLQkweDIyMDIsIDB4MDBlZSwgMHgwMDA1LCAweDAwMjYsIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwKLQkweDc5MDgsIDB4YTE4YywgMHgwZmZmLCAweGExODIsIDB4MGZmZCwgMHgwMjEwLCAweDIwMDksIDB4MDAwMCwKLQkweGExOTAsIDB4MDAwNywgMHhhMjk0LCAweDFmZjgsIDB4ODIxNCwgMHg4MjE0LCAweDgyMTQsIDB4MjAwMSwKLQkweDAyMGEsIDB4ODJmZiwgMHgwMTQwLCAweDIwZTEsIDB4NjAwMCwgMHgyMDBjLCAweDIwMGMsIDB4MjAwYywKLQkweDIwMGMsIDB4ODIxMSwgMHgxZGQwLCAweDIwZTEsIDB4NzAwMCwgMHgyMDBjLCAweDIwMGMsIDB4NzAwMywKLQkweDAwMDAsIDB4MjBlMSwgMHg2MDAwLCAweDIwMDEsIDB4MDIwOCwgMHgyMDBjLCAweDIwMDEsIDB4MDIwOSwKLQkweDIwMDQsIDB4YTEwNiwgMHgwMTU4LCAweDA4MGMsIDB4MWRlZSwgMHgwMTMwLCAweDc5MDgsIDB4ZDFlYywKLQkweDExMjgsIDB4NzkwYywgMHhkMWE0LCAweDA5NjAsIDB4MDgwYywgMHgxZTFhLCAweGEwMDYsIDB4MDAyZSwKLQkweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDAwMTYsIDB4MDAyNiwgMHgyMDcxLCAweGI5MjQsIDB4MjA3OSwKLQkweDAwMzAsIDB4MjAxMSwgMHgwMDUwLCAweDcwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDAxYTgsIDB4ODIxMSwKLQkweDAxODgsIDB4MjAwMSwgMHgwMDA1LCAweDIwMDQsIDB4ZDA4YywgMHgwZGM4LCAweDc5MDQsIDB4YTE4YywKLQkweDA3ODAsIDB4MDAxNiwgMHgwODBjLCAweDFiMjIsIDB4MDAxZSwgMHg4MWZmLCAweDExMTgsIDB4MjAxMSwKLQkweDAwNTAsIDB4MGM0OCwgMHhhMDg1LCAweDAwMDEsIDB4MDAyZSwgMHgwMDFlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAwMDUsIDB4NzgwMywgMHgwMDA0LCAweDIwMDksIDB4MDA2NCwgMHg3ODA0LCAweGQwYWMsIDB4MDkwNCwKLQkweDFmYmQsIDB4ODEwOSwgMHgxZGQwLCAweDIwMDksIDB4MDEwMCwgMHgyMTBjLCAweGExOGEsIDB4MDAwMywKLQkweDBhMGMsIDB4MTUxYSwgMHgwODBjLCAweDIyNzQsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzEsIDB4YjkxMywKLQkweDIwNzksIDB4MDAxMCwgMHg3MDA0LCAweGEwODYsIDB4MDAwMCwgMHgwNTM4LCAweDc4MDAsIDB4MDAwNiwKLQkweDc4MjAsIDB4MDAwNiwgMHg3ODMwLCAweDAwMDYsIDB4NzgzNCwgMHgwMDA2LCAweDc4MzgsIDB4MDAwNiwKLQkweDc4M2MsIDB4MDAwNiwgMHg3ODAzLCAweDAwMDQsIDB4ZTAwMCwgMHhlMDAwLCAweDIwNzksIDB4MDAzMCwKLQkweDc4MDQsIDB4ZDBhYywgMHgxOTBjLCAweDE1MWEsIDB4MjA3OSwgMHgwMDEwLCAweDAwMGUsIDB4NzgzZSwKLQkweDAwMGUsIDB4NzgzYSwgMHgwMDBlLCAweDc4MzYsIDB4MDAwZSwgMHg3ODMyLCAweDAwMGUsIDB4NzgyMiwKLQkweDAwMGUsIDB4NzgwMiwgMHgwMGZlLCAweDAwZWUsIDB4MDAzMCwgMHgwMGZlLCAweDAwZWUsIDB4NzgwNCwKLQkweGQwYWMsIDB4MTkwYywgMHgxNTFhLCAweDA4MGMsIDB4NzJhMiwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweGI5NGIsIDB4NzAwMywgMHgwMDAwLCAweDAwZWUsIDB4MDAwNSwgMHgwMGQ2LCAweGEyODAsIDB4MDAwNCwKLQkweDIwNmMsIDB4Njk0YywgMHhkMWRjLCAweDE5MDQsIDB4MjAzYiwgMHg2OTM0LCAweGExODQsIDB4MDAwNywKLQkweDAwMDIsIDB4MWZkOSwgMHgyMDI2LCAweDFmZDksIDB4MWZkOSwgMHgxZmQ5LCAweDIwMGQsIDB4MWZlYywKLQkweDFmZGIsIDB4MDgwYywgMHgxNTFhLCAweDY4NGMsIDB4ZDBiNCwgMHgwOTA0LCAweDIxMmEsIDB4Njg2MCwKLQkweDY4MmUsIDB4NjgxNiwgMHg2ODVjLCAweDY4MmEsIDB4NjgxMiwgMHg2ODdjLCAweDY4MGEsIDB4Njg4MCwKLQkweDY4MGUsIDB4Njk1OCwgMHgwODA0LCAweDIwMmUsIDB4NjgzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMWUsIDB4MWQzOCwgMHg2ODRjLCAweGQwYjQsIDB4MDkwNCwgMHgyMTJhLCAweDY4NjAsIDB4NjgyZSwKLQkweDY4MTYsIDB4Njg1YywgMHg2ODJhLCAweDY4MTIsIDB4Njg3YywgMHg2ODBhLCAweDY4ODAsIDB4NjgwZSwKLQkweDY4MDQsIDB4NjgxYSwgMHhhMDgwLCAweDAwMGQsIDB4MjAwNCwgMHhhMDg0LCAweDAwMGYsIDB4YTA4MCwKLQkweDIzMDgsIDB4MjAwNSwgMHg2ODMyLCAweDY5NTgsIDB4MDQ1MCwgMHhhMThjLCAweDAwZmYsIDB4YTE4NiwKLQkweDAwMTUsIDB4MTU0OCwgMHg2ODRjLCAweGQwYjQsIDB4MDkwNCwgMHgyMTJhLCAweDY4MDQsIDB4NjgxYSwKLQkweGEwODAsIDB4MDAwZCwgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwgMHhhMDgwLCAweDIzMDgsIDB4MjAwNSwKLQkweDY4MzIsIDB4Njk1OCwgMHhhMDA2LCAweDY4MmUsIDB4NjgyYSwgMHgwMDg4LCAweDY4NGMsIDB4ZDBiNCwKLQkweDA5MDQsIDB4MWFmZCwgMHg2OTU4LCAweGEwMDYsIDB4NjgyZSwgMHg2ODJhLCAweDJkMDAsIDB4NjgxYSwKLQkweDY4MzQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODAsIDB4MjMwOCwgMHgyMDA1LCAweDY4MzIsIDB4NjkyNiwKLQkweDY4NGMsIDB4YzBkZCwgMHg2ODRlLCAweDAwZGUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDAyMCwKLQkweDc4MDQsIDB4ZDBmYywgMHgxOTBjLCAweDIxNmQsIDB4MDBlNiwgMHgwMGQ2LCAweDIwNzEsIDB4Yjk0YiwKLQkweDcwMDAsIDB4YTAwNSwgMHgxOTA0LCAweDIwYWEsIDB4MDBjNiwgMHg3MjA2LCAweGEyODAsIDB4MDAwNCwKLQkweDIwNWMsIDB4NzAwNCwgMHgyMDY4LCAweDc4MDMsIDB4MDAwNCwgMHg2ODE4LCAweDAwZDYsIDB4MjA2OCwKLQkweDY4NmMsIDB4NzgxMiwgMHg2ODkwLCAweDAwZjYsIDB4MjBlMSwgMHg5MDQwLCAweDIwNzksIDB4MDIwMCwKLQkweDc4MWEsIDB4MjA3OSwgMHgwMTAwLCAweDgwMDQsIDB4NzhkNiwgMHgwMGZlLCAweDAwZGUsIDB4MmI2OCwKLQkweDY4MjQsIDB4MjA1MCwgMHg2ODE4LCAweDIwNjAsIDB4NjgzMCwgMHgyMDQwLCAweDYwMzQsIDB4YTBjYywKLQkweDAwMGYsIDB4NjkwOCwgMHg3OTFhLCAweDcxMTYsIDB4NjgwYywgMHg3ODFlLCAweDcwMWEsIDB4YTAwNiwKLQkweDcwMGUsIDB4NzAxMiwgMHg3MDA0LCAweDY5MmMsIDB4NjgxNCwgMHhhMTA2LCAweDExMjAsIDB4NjkyOCwKLQkweDY4MTAsIDB4YTEwNiwgMHgwMTkwLCAweDIwMDEsIDB4YjY3NCwgMHgyMDA0LCAweGQwY2MsIDB4MDExMCwKLQkweDAwY2UsIDB4MDQwMCwgMHgwMDM2LCAweDAwNDYsIDB4NmIxNCwgMHg2YzEwLCAweDA4MGMsIDB4MjMyOCwKLQkweDAwNGUsIDB4MDAzZSwgMHgwMTEwLCAweDAwY2UsIDB4MDBhOCwgMHg4YWZmLCAweDExMjAsIDB4MDBjZSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDc4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzksIDB4MDAyMCwKLQkweDIwMDksIDB4MDAwMSwgMHgwMDU5LCAweDAxMTgsIDB4MjAwOSwgMHgwMDAxLCAweDAwMzksIDB4MDEyZSwKLQkweDAwY2UsIDB4YTAwNiwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwNzYsIDB4MDA2NiwKLQkweDAwNTYsIDB4MDA0NiwgMHgwMDM2LCAweDAwMjYsIDB4OGFmZiwgMHgwOTA0LCAweDIxMjMsIDB4NzAwYywKLQkweDcyMTQsIDB4YTIzYSwgMHg3MDEwLCAweDcyMTgsIDB4YTIwMywgMHgwYTA0LCAweDIxMjIsIDB4YTcwNSwKLQkweDA5MDQsIDB4MjEyMiwgMHhhMDNlLCAweDI3MzAsIDB4Njg1MCwgMHhkMGZjLCAweDExYTgsIDB4MDBkNiwKLQkweDI4MDUsIDB4YWM2OCwgMHgyOTAwLCAweDAwMDIsIDB4MjEwNSwgMHgyMGVhLCAweDIwZWEsIDB4MjEwNSwKLQkweDIxMDUsIDB4MjBmZSwgMHgyMTA1LCAweDIwZWEsIDB4MjEwNSwgMHgyMGVmLCAweDIwZWYsIDB4MjEwNSwKLQkweDIxMDUsIDB4MjEwNSwgMHgyMGY2LCAweDIwZWYsIDB4YzBmYywgMHg2ODUyLCAweDZiNmMsIDB4NmE3MCwKLQkweDZkMWMsIDB4NmMyMCwgMHhkOTljLCAweDA1MjgsIDB4MDBkNiwgMHgyODA1LCAweGFjNjgsIDB4NmYwOCwKLQkweDZlMGMsIDB4MDBmMCwgMHg2YjA4LCAweDZhMGMsIDB4NmQwMCwgMHg2YzA0LCAweDAwYzgsIDB4NmIxMCwKLQkweDZhMTQsIDB4NmQwMCwgMHg2YzA0LCAweDZmMDgsIDB4NmUwYywgMHgwMDkwLCAweDAwZGUsIDB4MDBkNiwKLQkweDY4MzQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAxZSwgMHgxMTM4LCAweDAwZGUsIDB4MDgwYywKLQkweDIyY2EsIDB4MTkwNCwgMHgyMGI0LCAweGEwMGUsIDB4MDBmMCwgMHgwMGRlLCAweDA4MGMsIDB4MTUxYSwKLQkweDAwZGUsIDB4N2IyMiwgMHg3YTI2LCAweDdkMzIsIDB4N2MzNiwgMHg3ZjNhLCAweDdlM2UsIDB4NzkwMiwKLQkweDcwMDAsIDB4ODAwMCwgMHg3MDAyLCAweDY4MjgsIDB4YTMwMCwgMHg2ODJhLCAweDY4MmMsIDB4YTIwMSwKLQkweDY4MmUsIDB4NzAwYywgMHhhMzAwLCAweDcwMGUsIDB4NzAxMCwgMHhhMjAxLCAweDcwMTIsIDB4MDgwYywKLQkweDIyY2EsIDB4MDAwOCwgMHhhMDA2LCAweDAwMmUsIDB4MDAzZSwgMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwKLQkweDAwN2UsIDB4MDAwNSwgMHgwODBjLCAweDE1MWEsIDB4MDAyNiwgMHgyMDAxLCAweDAxMDUsIDB4MjAwMywKLQkweDAwMTAsIDB4MjBlMSwgMHg5MDQwLCAweDc4MDMsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4NzAwNCwKLQkweDIwNjAsIDB4MDBkNiwgMHg2MDEwLCAweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxMTgsIDB4Njg1MCwKLQkweGMwYmQsIDB4Njg1MiwgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwgMHgxMTgwLCAweDIwNjEsIDB4MDEwMCwKLQkweDYyYzgsIDB4MjAwMSwgMHgwMGZhLCAweDgwMDEsIDB4MWRmMCwgMHg2MGM4LCAweGEyMDYsIDB4MWRjMCwKLQkweDYwYzQsIDB4Njg2YSwgMHg2MGM4LCAweDY4NjYsIDB4NzAwNCwgMHgyMDYwLCAweDAwZGUsIDB4MDBjNiwKLQkweDA4MGMsIDB4OTllNiwgMHgwMGNlLCAweDIwMDEsIDB4YjhmMCwgMHgyMDA0LCAweGFjMDYsIDB4MTE1MCwKLQkweDIwZTEsIDB4OTA0MCwgMHgwODBjLCAweDgyZTQsIDB4MjAxMSwgMHgwMDAwLCAweDA4MGMsIDB4ODEwNiwKLQkweDA4MGMsIDB4NzJhMiwgMHgwMDJlLCAweDA4MDQsIDB4MjIyNywgMHgwMTI2LCAweDIwOTEsIDB4MjQwMCwKLQkweDAwMDYsIDB4MDAxNiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDIwNzksIDB4MDAyMCwKLQkweDIwNzEsIDB4Yjk0YiwgMHgyYjY4LCAweDY4MTgsIDB4MjA2MCwgMHg3OTA0LCAweDc4MDMsIDB4MDAwMiwKLQkweGExODQsIDB4MDcwMCwgMHgxOTA0LCAweDIxMmMsIDB4NzAwMCwgMHgwMDAyLCAweDIyMjcsIDB4MjE4YSwKLQkweDIxZmEsIDB4MjIyNSwgMHg4MDAxLCAweDcwMDIsIDB4ZDE5YywgMHgxMTcwLCAweDhhZmYsIDB4MDVkMCwKLQkweDIwMDksIDB4MDAwMSwgMHgwODBjLCAweDIwYWUsIDB4MDkwNCwgMHgyMjI3LCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4MjBhZSwgMHgwODA0LCAweDIyMjcsIDB4NzgwMywgMHgwMDA0LCAweGQxOTQsIDB4MDE0OCwKLQkweDY4NTAsIDB4YzBmYywgMHg2ODUyLCAweDhhZmYsIDB4MTFkOCwgMHg2ODRjLCAweGMwZjUsIDB4Njg0ZSwKLQkweDAwYjgsIDB4MDAyNiwgMHgwMDM2LCAweDZiMjgsIDB4NmEyYywgMHg3ODIwLCAweDY4NmUsIDB4YTMxYSwKLQkweDc4MjQsIDB4Njg3MiwgMHhhMjEzLCAweDc4MzAsIDB4NjgxZSwgMHg3ODM0LCAweDY4MjIsIDB4NmIyYSwKLQkweDZhMmUsIDB4MDAzZSwgMHgwMDJlLCAweDA4MGMsIDB4MjJlMCwgMHg2ODUwLCAweGMwZmQsIDB4Njg1MiwKLQkweDJhMDAsIDB4NjgyNiwgMHgyYzAwLCAweDY4MWEsIDB4MjgwMCwgMHg2ODMyLCAweDcwMDMsIDB4MDAwMCwKLQkweDA4MDQsIDB4MjIyNywgMHgwMGY2LCAweDAwMjYsIDB4NzgxYywgMHgwMDA2LCAweDc4MTgsIDB4MDAwNiwKLQkweDIwNzksIDB4MDEwMCwgMHg3YTE0LCAweGEyODQsIDB4MDE4NCwgMHhhMDg1LCAweDAwMTIsIDB4NzgxNiwKLQkweDAwMzYsIDB4MjAxOSwgMHgxMDAwLCAweDgzMTksIDB4MDkwYywgMHgxNTFhLCAweDc4MjAsIDB4ZDBiYywKLQkweDFkZDAsIDB4MDAzZSwgMHg3OWM4LCAweDAwMGUsIDB4YTEwMiwgMHgwMDFlLCAweDAwMDYsIDB4MDAxNiwKLQkweDc5YzQsIDB4MDAwZSwgMHhhMTAzLCAweDc4YzYsIDB4MDAwZSwgMHg3OGNhLCAweGEyODQsIDB4MDE4NCwKLQkweGEwODUsIDB4MDAxMiwgMHg3ODE2LCAweDAwMmUsIDB4MDBmZSwgMHg3ODAzLCAweDAwMDgsIDB4NzAwMywKLQkweDAwMDAsIDB4MDQ2OCwgMHg4MDAxLCAweDcwMDIsIDB4ZDE5NCwgMHgwMTY4LCAweDc4MDQsIDB4ZDBmYywKLQkweDE5MDQsIDB4MjE3ZCwgMHhkMTljLCAweDExZjgsIDB4OGFmZiwgMHgwNTA4LCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4MjBhZSwgMHgwMGUwLCAweDAwMjYsIDB4MDAzNiwgMHg2YjI4LCAweDZhMmMsIDB4MDgwYywKLQkweDIyZTAsIDB4MDBkNiwgMHgyODA1LCAweGFjNjgsIDB4NjAzNCwgMHhkMDljLCAweDExMjgsIDB4NjgwOCwKLQkweGEzMWEsIDB4NjgwYywgMHhhMjEzLCAweDAwMjAsIDB4NjgxMCwgMHhhMzFhLCAweDY4MTQsIDB4YTIxMywKLQkweDAwZGUsIDB4MDgwNCwgMHgyMWFkLCAweDA4MDQsIDB4MjFhOSwgMHgwODBjLCAweDE1MWEsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMWUsIDB4MDAwZSwgMHgwMTJlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MjA3MSwgMHhiOTRiLCAweDcwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDA1ZDAsIDB4MjA3OSwKLQkweDAwMjAsIDB4MDAxNiwgMHgyMDA5LCAweDAyMDcsIDB4MjEwYywgMHhkMTk0LCAweDAxOTgsIDB4MjAwOSwKLQkweDAyMGMsIDB4MjEwYywgMHhhMTg0LCAweDAwMDMsIDB4MDE2OCwgMHgwODBjLCAweGI1MGMsIDB4MjAwMSwKLQkweDAxMzMsIDB4MjAwNCwgMHhhMDA1LCAweDA5MGMsIDB4MTUxYSwgMHgyMGUxLCAweDkwNDAsIDB4MjAwMSwKLQkweDAyMGMsIDB4MjEwMiwgMHgyMDA5LCAweDAyMDYsIDB4MjEwNCwgMHgyMDA5LCAweDAyMDMsIDB4MjEwYywKLQkweGExMDYsIDB4MTExMCwgMHgyMGUxLCAweDkwNDAsIDB4NzgwNCwgMHhkMGZjLCAweDA5ZDgsIDB4MDgwYywKLQkweDIxNmQsIDB4NzAwMCwgMHhhMDg2LCAweDAwMDAsIDB4MTlhOCwgMHgwMDFlLCAweDc4MDMsIDB4MDAwNCwKLQkweDc4MDQsIDB4ZDBhYywgMHgxZGU4LCAweDIwZTEsIDB4OTA0MCwgMHg3ODAzLCAweDAwMDIsIDB4NzAwMywKLQkweDAwMDAsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4MDAyNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MjA3MSwgMHhiOTRiLCAweDIwNzksIDB4MDAyMCwgMHg3MDAwLCAweGEwODYsIDB4MDAwMCwKLQkweDA1NDAsIDB4NzAwNCwgMHgyMDYwLCAweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDE1OCwKLQkweDY4NTAsIDB4YzBiNSwgMHg2ODUyLCAweDY4MGMsIDB4N2ExYywgMHhhMjA2LCAweDExMjAsIDB4NjgwOCwKLQkweDdhMTgsIDB4YTIwNiwgMHgwMWUwLCAweDIwMDEsIDB4MDEwNSwgMHgyMDAzLCAweDAwMTAsIDB4MjBlMSwKLQkweDkwNDAsIDB4NzgwMywgMHgwMDA0LCAweDcwMDMsIDB4MDAwMCwgMHg3MDA0LCAweDIwNjAsIDB4MDgwYywKLQkweDk5ZTYsIDB4MjBlMSwgMHg5MDQwLCAweDA4MGMsIDB4ODJlNCwgMHgyMDExLCAweDAwMDAsIDB4MDgwYywKLQkweDgxMDYsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDJlLCAweDAwMDUsIDB4NjgxMCwKLQkweDZhMTQsIDB4YTIwNSwgMHgxZDAwLCAweDY4NGMsIDB4YzBkYywgMHg2ODRlLCAweDJjMTAsIDB4MDgwYywKLQkweDFmYzUsIDB4MjAwMSwgMHgwMTA1LCAweDIwMDMsIDB4MDAxMCwgMHgyMGUxLCAweDkwNDAsIDB4NzgwMywKLQkweDAwMDQsIDB4NzAwMywgMHgwMDAwLCAweDIwNjksIDB4YjhlMSwgMHg2ODMzLCAweDAwMDAsIDB4NjgzZiwKLQkweDAwMDAsIDB4MDhmOCwgMHg4ODQwLCAweDI4MDUsIDB4YTAwNSwgMHgxMTcwLCAweDYwMDQsIDB4YTAwNSwKLQkweDAxNjgsIDB4NjgxYSwgMHgyMDYwLCAweDYwMzQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODAsIDB4MjMwOCwKLQkweDIwNDUsIDB4ODhmZiwgMHgwOTBjLCAweDE1MWEsIDB4OGE1MSwgMHgwMDA1LCAweDIwNTAsIDB4MDAwNSwKLQkweDhhNTAsIDB4ODg0MSwgMHgyODA1LCAweGEwMDUsIDB4MTE5MCwgMHgyYzAwLCAweGFkMDYsIDB4MDEyMCwKLQkweDYwMDAsIDB4YTAwNSwgMHgxMTA4LCAweDJkMDAsIDB4MjA2MCwgMHg2ODFhLCAweDYwMzQsIDB4YTA4NCwKLQkweDAwMGYsIDB4YTA4MCwgMHgyMzE4LCAweDIwNDUsIDB4ODhmZiwgMHgwOTBjLCAweDE1MWEsIDB4MDAwNSwKLQkweDAwMDAsIDB4MDAxMSwgMHgwMDE1LCAweDAwMTksIDB4MDAxZCwgMHgwMDIxLCAweDAwMjUsIDB4MDAyOSwKLQkweDAwMDAsIDB4MDAwZiwgMHgwMDE1LCAweDAwMWIsIDB4MDAyMSwgMHgwMDI3LCAweDAwMDAsIDB4MDAwMCwKLQkweDAwMDAsIDB4MjJmZCwgMHgyMmY5LCAweDAwMDAsIDB4MDAwMCwgMHgyMzA3LCAweDAwMDAsIDB4MjJmZCwKLQkweDAwMDAsIDB4MjMwNCwgMHgyMzAxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIzMDcsIDB4MjMwNCwKLQkweDAwMDAsIDB4MjJmZiwgMHgyMmZmLCAweDAwMDAsIDB4MDAwMCwgMHgyMzA3LCAweDAwMDAsIDB4MjJmZiwKLQkweDAwMDAsIDB4MjMwNSwgMHgyMzA1LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDIzMDcsIDB4MjMwNSwKLQkweDAwYTYsIDB4MDA5NiwgMHgwMDg2LCAweDZiMmUsIDB4NmMyYSwgMHg2ODU4LCAweGEwNTUsIDB4MDkwNCwKLQkweDIzYjksIDB4MmQ2MCwgMHg2MDM0LCAweGEwY2MsIDB4MDAwZiwgMHhhOWMwLCAweDIzMDgsIDB4YTk4NiwKLQkweDAwMDcsIDB4MDEzMCwgMHhhOTg2LCAweDAwMGUsIDB4MDExOCwgMHhhOTg2LCAweDAwMGYsIDB4MTEyMCwKLQkweDYwNWMsIDB4YTQyMiwgMHg2MDYwLCAweGEzMWIsIDB4MjgwNSwgMHhhMDQ1LCAweDExNDAsIDB4MDMxMCwKLQkweDA4MDQsIDB4MjNiOSwgMHg2MDA0LCAweGEwNjUsIDB4MDkwNCwgMHgyM2I5LCAweDBjMTgsIDB4MjgwNSwKLQkweGEwMDUsIDB4MDFhOCwgMHhhYzY4LCAweGQ5OWMsIDB4MTEyOCwgMHg2ODA4LCAweGE0MjIsIDB4NjgwYywKLQkweGEzMWIsIDB4MDAyMCwgMHg2ODEwLCAweGE0MjIsIDB4NjgxNCwgMHhhMzFiLCAweDA2MjAsIDB4MjMwMCwKLQkweGE0MDUsIDB4MDE1MCwgMHg4YTUxLCAweDA5MDQsIDB4MjNiOSwgMHg4ODQwLCAweDBjNDAsIDB4NjAwNCwKLQkweGEwNjUsIDB4MDkwNCwgMHgyM2I5LCAweDA4MzAsIDB4OGE1MSwgMHgwOTA0LCAweDIzYjksIDB4ODg0MCwKLQkweDI4MDUsIDB4YTAwNSwgMHgxMTU4LCAweDYwMDQsIDB4YTA2NSwgMHgwOTA0LCAweDIzYjksIDB4NjAzNCwKLQkweGEwY2MsIDB4MDAwZiwgMHhhOWMwLCAweDIzMDgsIDB4MjgwNSwgMHgyMDQwLCAweDJiNjgsIDB4Njg1MCwKLQkweGMwZmMsIDB4Njg1MiwgMHgwNDU4LCAweDg0MjIsIDB4ODQyMCwgMHg4MzFhLCAweGEzOTksIDB4MDAwMCwKLQkweDAwZDYsIDB4MmI2OCwgMHg2YzZlLCAweDZiNzIsIDB4MDBkZSwgMHhkOTljLCAweDExNjgsIDB4NjkwOCwKLQkweDI0MDAsIDB4YTEyMiwgMHg2OTBjLCAweDIzMDAsIDB4YTExYiwgMHgwYTBjLCAweDE1MWEsIDB4NjgwMCwKLQkweGE0MjAsIDB4NjgwNCwgMHhhMzE5LCAweDAwNjAsIDB4NjkxMCwgMHgyNDAwLCAweGExMjIsIDB4NjkxNCwKLQkweDIzMDAsIDB4YTExYiwgMHgwYTBjLCAweDE1MWEsIDB4NjgwMCwgMHhhNDIwLCAweDY4MDQsIDB4YTMxOSwKLQkweDJiNjgsIDB4NmMxZSwgMHg2YjIyLCAweDY4NTAsIDB4YzBmZCwgMHg2ODUyLCAweDJjMDAsIDB4NjgxYSwKLQkweDI4MDAsIDB4NjgzMiwgMHgyYTAwLCAweDY4MjYsIDB4MDAwZSwgMHgwMDBlLCAweDAwMGUsIDB4YTAwNiwKLQkweDAwMjgsIDB4MDA4ZSwgMHgwMDllLCAweDAwYWUsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMDUsIDB4MjAwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDAwMiwgMHgyM2NkLCAweDIzY2UsIDB4MjNkMSwKLQkweDIzZDQsIDB4MjNkOSwgMHgyM2RjLCAweDIzZTEsIDB4MjNlNiwgMHgwMDA1LCAweDA4MGMsIDB4MjE2ZCwKLQkweDAwMDUsIDB4MDgwYywgMHgxYjIyLCAweDAwMDUsIDB4MDgwYywgMHgxYjIyLCAweDA4MGMsIDB4MjE2ZCwKLQkweDAwMDUsIDB4MDgwYywgMHgxNzIwLCAweDAwMDUsIDB4MDgwYywgMHgyMTZkLCAweDA4MGMsIDB4MTcyMCwKLQkweDAwMDUsIDB4MDgwYywgMHgxYjIyLCAweDA4MGMsIDB4MTcyMCwgMHgwMDA1LCAweDA4MGMsIDB4MWIyMiwKLQkweDA4MGMsIDB4MjE2ZCwgMHgwODBjLCAweDE3MjAsIDB4MDAwNSwgMHgwMDA2LCAweDcwMDAsIDB4YTA4NiwKLQkweDAwMDEsIDB4MTE1OCwgMHg3MDFjLCAweGE1MDYsIDB4MTE0MCwgMHg3MDIwLCAweGE0MDYsIDB4MTEyOCwKLQkweDcwMjQsIDB4YTcwNiwgMHgxMTEwLCAweDcwMjgsIDB4YTYwNiwgMHgwMDBlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4MjYwMCwgMHgyMDc5LCAweDAyMDAsIDB4MjA3MSwgMHhiYzgwLCAweDIwNjksIDB4YjYwMCwKLQkweDA4MGMsIDB4MjRmNSwgMHgwODBjLCAweDI0ZTUsIDB4MjAwOSwgMHgwMDA0LCAweDc5MTIsIDB4NzgxNywKLQkweDAwMDQsIDB4MDgwYywgMHgyODJkLCAweDc4MWIsIDB4MDAwMiwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4MjBhOSwgMHgwMDgwLCAweDc4MmYsIDB4MDAwMCwgMHgxZjA0LCAweDI0MWIsIDB4MjBlMSwKLQkweDkwODAsIDB4NzgzYiwgMHgwMDFmLCAweDIwZTEsIDB4ODcwMCwgMHgwMTJlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4MjYwMCwgMHg3ODFjLCAweGQwYTQsIDB4MTkwYywgMHgyNGUyLCAweGEwODQsIDB4MDAwNywKLQkweDAwMDIsIDB4MjQ0YiwgMHgyNDM5LCAweDI0M2MsIDB4MjQzZiwgMHgyNDQ0LCAweDI0NDYsIDB4MjQ0OCwKLQkweDI0NGEsIDB4MDgwYywgMHg2NDM2LCAweDAwNzgsIDB4MDgwYywgMHg2NDc1LCAweDAwNjAsIDB4MDgwYywKLQkweDY0MzYsIDB4MDgwYywgMHg2NDc1LCAweDAwMzgsIDB4MDA0MSwgMHgwMDI4LCAweDAwMzEsIDB4MDAxOCwKLQkweDAwMjEsIDB4MDAwOCwgMHgwMDExLCAweDAxMmUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwKLQkweDA4MGMsIDB4YjUwYywgMHg3OTMwLCAweGExODQsIDB4MDAwMywgMHgwMWIwLCAweDIwMDEsIDB4YjhmMCwKLQkweDIwMDQsIDB4YTAwNSwgMHgwMTcwLCAweDIwMDEsIDB4MDEzMywgMHgyMDA0LCAweGEwMDUsIDB4MDkwYywKLQkweDE1MWEsIDB4MDBjNiwgMHgyMDAxLCAweGI4ZjAsIDB4MjA2NCwgMHgwODBjLCAweDk5ZTYsIDB4MDBjZSwKLQkweDA0YjgsIDB4MjBlMSwgMHg5MDQwLCAweDA0YTAsIDB4YTE4NCwgMHgwMDMwLCAweDAxZTAsIDB4NmEwMCwKLQkweGEyODYsIDB4MDAwMywgMHgxMTA4LCAweDAwYTAsIDB4MDgwYywgMHg1YjQxLCAweDExNzgsIDB4MjAwMSwKLQkweGI4OWYsIDB4MjAwMywgMHgwMDAxLCAweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDEsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHg1Yjg1LCAweDA4MGMsIDB4NWE3OSwgMHgwMDEwLCAweDA4MGMsIDB4NGI3YiwKLQkweDA4MGMsIDB4MjRlNSwgMHgwMGE4LCAweGExODQsIDB4MDBjMCwgMHgwMTY4LCAweDAwZTYsIDB4MDAzNiwKLQkweDAwNDYsIDB4MDA1NiwgMHgyMDcxLCAweGI5MjQsIDB4MDgwYywgMHgxZTFhLCAweDAwNWUsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDBlZSwgMHgwMDI4LCAweGExODQsIDB4MDMwMCwgMHgwMTEwLCAweDIwZTEsIDB4OTAyMCwKLQkweDc5MzIsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMDE2LCAweDAwZTYsIDB4MDBmNiwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MTI4LCAweDIwMDEsIDB4Yjg5MSwgMHgyMTAyLCAweDIwMDEsIDB4Yjg5OSwKLQkweDIxMDIsIDB4YTE4MiwgMHgwMjExLCAweDEyMTgsIDB4MjAwOSwgMHgwMDA4LCAweDA0MDAsIDB4YTE4MiwKLQkweDAyNTksIDB4MTIxOCwgMHgyMDA5LCAweDAwMDcsIDB4MDBkMCwgMHhhMTgyLCAweDAyYzEsIDB4MTIxOCwKLQkweDIwMDksIDB4MDAwNiwgMHgwMGEwLCAweGExODIsIDB4MDM0OSwgMHgxMjE4LCAweDIwMDksIDB4MDAwNSwKLQkweDAwNzAsIDB4YTE4MiwgMHgwNDIxLCAweDEyMTgsIDB4MjAwOSwgMHgwMDA0LCAweDAwNDAsIDB4YTE4MiwKLQkweDA1ODEsIDB4MTIxOCwgMHgyMDA5LCAweDAwMDMsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDIsIDB4MjA3OSwKLQkweDAyMDAsIDB4NzkxMiwgMHg3ODE3LCAweDAwMDQsIDB4MDgwYywgMHgyODJkLCAweDAwZmUsIDB4MDBlZSwKLQkweDAwMWUsIDB4MDAwNSwgMHg3OTM4LCAweDA4MGMsIDB4MTUxYSwgMHgwMGU2LCAweDAwMjYsIDB4MjA3MSwKLQkweDAyMDAsIDB4MjBlMSwgMHgxMDAwLCAweDcyMjAsIDB4NzAyOCwgMHg3MDIwLCAweGEyMDYsIDB4MGRlMCwKLQkweDIwZTEsIDB4OTAxMCwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgyMGUxLCAweGEwMDAsIDB4NzgzNywKLQkweDAwMDEsIDB4NzgyZiwgMHgwMDAwLCAweDc4MmYsIDB4MDAwMCwgMHg3ODJmLCAweDAwMDAsIDB4NzgyZiwKLQkweDAwMDAsIDB4NzgzNywgMHgwMDA1LCAweDIwYTksIDB4MDIxMCwgMHg3ODMwLCAweGQwYmMsIDB4MTExMCwKLQkweDFmMDQsIDB4MjUwNSwgMHg3ODM3LCAweDAwMDEsIDB4NzgzNywgMHgwMDAwLCAweGUwMDAsIDB4ZTAwMCwKLQkweDIwZTEsIDB4YTAwMCwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNzEsIDB4YjYwMCwgMHg2MDI0LCAweDYwMjYsIDB4NjA1MywgMHgwMDMwLCAweDA4MGMsIDB4Mjg2YywKLQkweDYwNTAsIDB4YTA4NCwgMHhmZTdmLCAweDYwNTIsIDB4MjAwOSwgMHgwMGVmLCAweDYxMzIsIDB4NjEzNiwKLQkweDA4MGMsIDB4Mjg3YywgMHg2MGU3LCAweDAwMDAsIDB4NjFlYSwgMHg2MGUzLCAweDAwMDgsIDB4NjA0YiwKLQkweGY3ZjcsIDB4NjA0MywgMHgwMDAwLCAweDYwMmYsIDB4MDA4MCwgMHg2MDJmLCAweDAwMDAsIDB4NjAwNywKLQkweDBlOWYsIDB4NjAxYiwgMHgwMDFlLCAweDYwMGYsIDB4MDBmZiwgMHgyMDAxLCAweGI4OGQsIDB4MjAwMywKLQkweDAwZmYsIDB4NjAyYiwgMHgwMDJmLCAweDAxMmUsIDB4MDAwNSwgMHgyMDAxLCAweGI2MzIsIDB4MjAwMywKLQkweDAwMDAsIDB4MjAwMSwgMHhiNjMxLCAweDIwMDMsIDB4MDAwMSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDI4MDAsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4NjEyNCwgMHhhMTg0LCAweDFlMmMsIDB4MTExOCwKLQkweGExODQsIDB4MDAwNywgMHgwMDJhLCAweGExOTUsIDB4MDAwNCwgMHhhMjg0LCAweDAwMDcsIDB4MDAwMiwKLQkweDI1ODIsIDB4MjU2OCwgMHgyNTZiLCAweDI1NmUsIDB4MjU3MywgMHgyNTc1LCAweDI1NzksIDB4MjU3ZCwKLQkweDA4MGMsIDB4NmJlNiwgMHgwMGI4LCAweDA4MGMsIDB4NmNjMSwgMHgwMGEwLCAweDA4MGMsIDB4NmNjMSwKLQkweDA4MGMsIDB4NmJlNiwgMHgwMDc4LCAweDAwOTksIDB4MDA2OCwgMHgwODBjLCAweDZiZTYsIDB4MDA3OSwKLQkweDAwNDgsIDB4MDgwYywgMHg2Y2MxLCAweDAwNTksIDB4MDAyOCwgMHgwODBjLCAweDZjYzEsIDB4MDgwYywKLQkweDZiZTYsIDB4MDAyOSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwgMHgwMTJlLCAweDAwMDUsIDB4NjEyNCwKLQkweDYwMjgsIDB4ZDA5YywgMHgwMTE4LCAweGQxOWMsIDB4MTkwNCwgMHgyNzliLCAweDA4MGMsIDB4NWI0MSwKLQkweDA1NzgsIDB4NzAwMCwgMHhhMDg2LCAweDAwMDMsIDB4MDE5OCwgMHg2MDI0LCAweGEwODQsIDB4MTgwMCwKLQkweDAxNzgsIDB4MDgwYywgMHg1YjY3LCAweDAxMTgsIDB4MDgwYywgMHg1YjUzLCAweDExNDgsIDB4NjAyNywKLQkweDAwMjAsIDB4NjA0MywgMHgwMDAwLCAweDIwMDEsIDB4Yjg5ZSwgMHgyMDAzLCAweGFhYWEsIDB4MDQ1OCwKLQkweDA4MGMsIDB4NWI2NywgMHgxNWQwLCAweDYwMjQsIDB4YTA4NCwgMHgxODAwLCAweDExMDgsIDB4MDRhOCwKLQkweDIwMDEsIDB4Yjg5ZSwgMHgyMDAzLCAweGFhYWEsIDB4MjAwMSwgMHhiODlmLCAweDIwMDMsIDB4MDAwMSwKLQkweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDEsIDB4MDgwYywgMHg1YTc5LCAweDA4MDQsIDB4Mjc5YiwKLQkweGQxYWMsIDB4MTUxOCwgMHg2MDI0LCAweGQwZGMsIDB4MTE3MCwgMHhkMGU0LCAweDExODgsIDB4ZDBkNCwKLQkweDExYTAsIDB4ZDBjYywgMHgwMTMwLCAweDcwOGMsIDB4YTA4NiwgMHgwMDI4LCAweDExMTAsIDB4MDgwYywKLQkweDVjZDAsIDB4MDgwNCwgMHgyNzliLCAweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDAsIDB4MDA0OCwKLQkweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDIsIDB4MDAyMCwgMHgwODBjLCAweDVjNDMsIDB4MDgwNCwKLQkweDI3OWIsIDB4MDgwYywgMHg1ZDc1LCAweDA4MDQsIDB4Mjc5YiwgMHhkMWFjLCAweDA5MDQsIDB4MjZlMywKLQkweDA4MGMsIDB4NWI0MSwgMHgxMWQ4LCAweDYwMjcsIDB4MDAyMCwgMHgwMDA2LCAweDAwMjYsIDB4MDAzNiwKLQkweDA4MGMsIDB4NWI1ZCwgMHgxMTcwLCAweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NWE3OSwgMHgwMDNlLCAweDAwMmUsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMGUsIDB4MDgwYywgMHg1YjE4LCAweDAwMTYsIDB4MDA0NiwKLQkweDAwYzYsIDB4NjQ0YywgMHhhNDg2LCAweGYwZjAsIDB4MTEzOCwgMHgyMDYxLCAweDAxMDAsIDB4NjQ0YSwKLQkweDYwNDMsIDB4MDA5MCwgMHg2MDQzLCAweDAwMTAsIDB4NzRjZSwgMHhhNDhjLCAweGZmMDAsIDB4NzAzNCwKLQkweGQwODQsIDB4MDE3OCwgMHhhMTg2LCAweGY4MDAsIDB4MTE2MCwgMHg3MDNjLCAweGQwODQsIDB4MTE0OCwKLQkweGMwODUsIDB4NzAzZSwgMHgwMDM2LCAweDI0MTgsIDB4MjAxMSwgMHg4MDE2LCAweDA4MGMsIDB4M2YxMywKLQkweDAwM2UsIDB4YTE5NiwgMHhmZjAwLCAweDA1YjgsIDB4NzA1NCwgMHhhMDg0LCAweDAwZmYsIDB4ODEwZiwKLQkweGExMTYsIDB4MDU4OCwgMHg3MTMwLCAweGQxODQsIDB4MTU3MCwgMHgyMDExLCAweGI2NTMsIDB4MjIxNCwKLQkweGQyZWMsIDB4MDEzOCwgMHhjMThkLCAweDcxMzIsIDB4MjAxMSwgMHhiNjUzLCAweDIyMTQsIDB4ZDJhYywKLQkweDE1MTAsIDB4NjI0MCwgMHhhMjk0LCAweDAwMTAsIDB4MDEzMCwgMHg2MjQ4LCAweGEyOTQsIDB4ZmYwMCwKLQkweGEyOTYsIDB4ZmYwMCwgMHgwMWMwLCAweDcwMzAsIDB4ZDA4YywgMHgwOTA0LCAweDI2YjAsIDB4NzAzNCwKLQkweGQwOGMsIDB4MTE0MCwgMHgyMDAxLCAweGI2MGMsIDB4MjAwYywgMHhkMWFjLCAweDE5MDQsIDB4MjZiMCwKLQkweGMxYWQsIDB4MjEwMiwgMHgwMDM2LCAweDczY2MsIDB4MjAxMSwgMHg4MDEzLCAweDA4MGMsIDB4M2YxMywKLQkweDAwM2UsIDB4MDgwNCwgMHgyNmIwLCAweDcwMzQsIDB4ZDA4YywgMHgxMTQwLCAweDIwMDEsIDB4YjYwYywKLQkweDIwMGMsIDB4ZDFhYywgMHgxOTA0LCAweDI2YjAsIDB4YzFhZCwgMHgyMTAyLCAweDAwMzYsIDB4NzNjYywKLQkweDIwMTEsIDB4ODAxMywgMHgwODBjLCAweDNmMTMsIDB4MDAzZSwgMHg3MTMwLCAweGMxODUsIDB4NzEzMiwKLQkweDIwMTEsIDB4YjY1MywgMHgyMjBjLCAweGQxYTQsIDB4MDFkMCwgMHgwMDE2LCAweDIwMDksIDB4MDAwMSwKLQkweDIwMTEsIDB4MDEwMCwgMHgwODBjLCAweDZiOGMsIDB4MjAxOSwgMHgwMDBlLCAweDA4MGMsIDB4YjEyMSwKLQkweGE0ODQsIDB4MDBmZiwgMHhhMDgwLCAweDJkZjksIDB4MjAwZCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwKLQkweDgxMjcsIDB4YTAwNiwgMHgyMDA5LCAweDAwMGUsIDB4MDgwYywgMHhiMWE0LCAweDAwMWUsIDB4ZDFhYywKLQkweDExNDgsIDB4MDAxNiwgMHgyMDA5LCAweDAwMDAsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4MmNhNCwKLQkweDAwMWUsIDB4MDA3MCwgMHgwMTU2LCAweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MDgwYywKLQkweDUwMWIsIDB4MTExMCwgMHgwODBjLCAweDRjN2UsIDB4ODEwOCwgMHgxZjA0LCAweDI2YTcsIDB4MDE1ZSwKLQkweDAwY2UsIDB4MDA0ZSwgMHgyMDExLCAweDAwMDMsIDB4MDgwYywgMHg4MGZjLCAweDIwMTEsIDB4MDAwMiwKLQkweDA4MGMsIDB4ODEwNiwgMHgwODBjLCAweDdmZTAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDAsIDB4MDgwYywKLQkweDgwNmIsIDB4MDAzZSwgMHg2MGUzLCAweDAwMDAsIDB4MDAxZSwgMHgyMDAxLCAweGI2MDAsIDB4MjAxNCwKLQkweGEyOTYsIDB4MDAwNCwgMHgxMTI4LCAweGQxOWMsIDB4MTFiMCwgMHg2MjI4LCAweGMyOWQsIDB4NjIyYSwKLQkweDIwMDMsIDB4MDAwMSwgMHgyMDAxLCAweGI2MjMsIDB4MjAwMywgMHgwMDAwLCAweDYwMjcsIDB4MDAyMCwKLQkweDA4MGMsIDB4NWI2NywgMHgxMTQwLCAweDAwMTYsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NWE1NiwKLQkweDA4MGMsIDB4NmE5NCwgMHgwMDFlLCAweGQxOTQsIDB4MDkwNCwgMHgyNzliLCAweDAwMTYsIDB4NjIyMCwKLQkweGQyYjQsIDB4MDkwNCwgMHgyNzRjLCAweDA4MGMsIDB4NmE4MiwgMHgwODBjLCAweDdkZjMsIDB4NjAyNywKLQkweDAwMDQsIDB4MDBmNiwgMHgyMDE5LCAweGI4ZWEsIDB4MjMwNCwgMHhhMDdkLCAweDA1NzAsIDB4NzgwNCwKLQkweGEwODYsIDB4MDAzMiwgMHgxNTUwLCAweDAwZDYsIDB4MDBjNiwgMHgwMGU2LCAweDIwNjksIDB4MDE0MCwKLQkweDYxOGMsIDB4NjI4OCwgMHg3ODE4LCAweDYwOGUsIDB4NzgwOCwgMHg2MDhhLCAweDYwNDMsIDB4MDAwMiwKLQkweDIwMDEsIDB4MDAwMywgMHg4MDAxLCAweDFkZjAsIDB4NjA0MywgMHgwMDAwLCAweDY4MDMsIDB4MTAwMCwKLQkweDY4MDMsIDB4MDAwMCwgMHg2MThlLCAweDYyOGEsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4NzFlNSwKLQkweDc4MTAsIDB4MjA3MCwgMHg3MDM3LCAweDAxMDMsIDB4MmY2MCwgMHgwODBjLCAweDg2YTQsIDB4MDBlZSwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMGZlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGZlLCAweDAwZDYsIDB4MjA2OSwKLQkweDAxNDAsIDB4NjgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDEyMCwgMHg2ODAzLCAweDEwMDAsIDB4NjgwMywKLQkweDAwMDAsIDB4MDBkZSwgMHgwMGM2LCAweDIwNjEsIDB4YjhlMSwgMHg2MDI4LCAweGEwOWEsIDB4MDBjOCwKLQkweDEyMzgsIDB4ODAwMCwgMHg2MDJhLCAweDAwY2UsIDB4MDgwYywgMHg3ZGU2LCAweDA4MDQsIDB4Mjc5YSwKLQkweDIwMTksIDB4YjhlYSwgMHgyMzA0LCAweGEwNjUsIDB4MDEyMCwgMHgyMDA5LCAweDAwMjcsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDBjZSwgMHgwODA0LCAweDI3OWEsIDB4ZDJiYywgMHgwOTA0LCAweDI3OWEsIDB4MDgwYywKLQkweDZhOGYsIDB4NjAxNCwgMHhhMDg0LCAweDAxODQsIDB4YTA4NSwgMHgwMDEwLCAweDYwMTYsIDB4NjAyNywKLQkweDAwMDQsIDB4MDBkNiwgMHgyMDY5LCAweDAxNDAsIDB4NjgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDEyMCwKLQkweDY4MDMsIDB4MTAwMCwgMHg2ODAzLCAweDAwMDAsIDB4MDBkZSwgMHgwMGM2LCAweDIwNjEsIDB4YjhlMSwKLQkweDYwNDQsIDB4YTA5YSwgMHgwMGM4LCAweDEyZjAsIDB4ODAwMCwgMHg2MDQ2LCAweDYwM2MsIDB4MDBjZSwKLQkweGEwMDUsIDB4MDU0MCwgMHgyMDA5LCAweDA3ZDAsIDB4MDgwYywgMHg2YTg3LCAweGEwODAsIDB4MDAwNywKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDA2LCAweDExMzgsIDB4NjExNCwgMHhhMThjLCAweDAxODQsIDB4YTE4ZCwKLQkweDAwMTIsIDB4NjExNiwgMHgwMGI4LCAweDYxMTQsIDB4YTE4YywgMHgwMTg0LCAweGExOGQsIDB4MDAxNiwKLQkweDYxMTYsIDB4MDA4MCwgMHgwMDM2LCAweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweDgwNmIsIDB4MDAzZSwKLQkweDIwMTksIDB4YjhmMCwgMHgyMzA0LCAweGEwNjUsIDB4MDEyMCwgMHgyMDA5LCAweDAwNGYsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDBjZSwgMHgwMDFlLCAweGQxOWMsIDB4MDkwNCwgMHgyN2Y0LCAweDcwMzQsIDB4ZDBhYywKLQkweDE1NjAsIDB4MDAxNiwgMHgwMTU2LCAweDYwMjcsIDB4MDAwOCwgMHg2MDJmLCAweDAwMjAsIDB4MjBhOSwKLQkweDAwMDYsIDB4MWQwNCwgMHgyN2E5LCAweDIwOTEsIDB4NjAwMCwgMHgxZjA0LCAweDI3YTksIDB4NjAyZiwKLQkweDAwMDAsIDB4NjE1MCwgMHhhMTg1LCAweDE0MDAsIDB4NjA1MiwgMHgyMGE5LCAweDAzNjYsIDB4MWQwNCwKLQkweDI3YjcsIDB4MjA5MSwgMHg2MDAwLCAweDYwMjAsIDB4ZDA5YywgMHgxMTMwLCAweDAxNWUsIDB4NjE1MiwKLQkweDAwMWUsIDB4NjAyNywgMHgwMDA4LCAweDA0ODAsIDB4MDgwYywgMHgyOTNjLCAweDFmMDQsIDB4MjdiNywKLQkweDAxNWUsIDB4NjE1MiwgMHgwMDFlLCAweDYwMjcsIDB4MDAwOCwgMHgwMDE2LCAweDYwMjgsIDB4YzA5YywKLQkweDYwMmEsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4ODBmYywgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweDgxMDYsIDB4MDgwYywgMHg3ZmUwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsIDB4ODA2YiwKLQkweDAwM2UsIDB4NjBlMywgMHgwMDAwLCAweDA4MGMsIDB4YjRlYiwgMHgwODBjLCAweGI1MDYsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHg1Yjg1LCAweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDQsIDB4NjAyNywKLQkweDAwMDgsIDB4MDgwYywgMHgxMmUyLCAweDAwMWUsIDB4YTE4YywgMHhmZmQwLCAweDYxMjYsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDAwZTYsIDB4MDBmNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MWM0LCAweDcwYzYsIDB4YTExNiwgMHgwNTAwLCAweDgxZmYsIDB4MDEyOCwKLQkweDIwMTEsIDB4ODAxMSwgMHgwODBjLCAweDNmMTMsIDB4MDBjOCwgMHgyMDExLCAweDgwMTIsIDB4MDgwYywKLQkweDNmMTMsIDB4MjAwMSwgMHhiNjcyLCAweDIwMDQsIDB4ZDBmYywgMHgxMTgwLCAweDAwMzYsIDB4MDBjNiwKLQkweDA4MGMsIDB4MjhjNywgMHgwODBjLCAweDdmYmMsIDB4MjA2MSwgMHgwMTAwLCAweDIwMTksIDB4MDAyOCwKLQkweDIwMDksIDB4MDAwMCwgMHgwODBjLCAweDJjYTQsIDB4MDBjZSwgMHgwMDNlLCAweDAxMmUsIDB4MDBmZSwKLQkweDAwZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZjYsIDB4MDAwNiwKLQkweDAwMjYsIDB4MjA2MSwgMHgwMTAwLCAweGExOTAsIDB4Mjg0MCwgMHgyMjA1LCAweDYwZjIsIDB4MjAxMSwKLQkweDI4NGQsIDB4MjIwNSwgMHg2MGVlLCAweDAwMmUsIDB4MDAwZSwgMHgwMGZlLCAweDAwY2UsIDB4MDAwNSwKLQkweDA4NDAsIDB4MDg0MCwgMHgwODQwLCAweDA1ODAsIDB4MDQyMCwgMHgwMzQ4LCAweDAyYzAsIDB4MDI1OCwKLQkweDAyMTAsIDB4MDFhOCwgMHgwMWE4LCAweDAxYTgsIDB4MDFhOCwgMHgwMTQwLCAweDAwZjgsIDB4MDBkMCwKLQkweDAwYjAsIDB4MDBhMCwgMHgyMDI4LCAweGExOGMsIDB4MDBmZiwgMHgyMTMwLCAweGEwOTQsIDB4ZmYwMCwKLQkweDExMTAsIDB4ODFmZiwgMHgwMTE4LCAweDA4MGMsIDB4NjcyMywgMHgwMDM4LCAweGEwODAsIDB4MmRmOSwKLQkweDIwMGQsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTAwNiwgMHgwMDA1LCAweGEwODAsIDB4MmRmOSwKLQkweDIwMGQsIDB4YTE4YywgMHgwMGZmLCAweDAwMDUsIDB4MDBkNiwgMHgyMDY5LCAweDAxNDAsIDB4MjAwMSwKLQkweGI2MTUsIDB4MjAwMywgMHgwMGVmLCAweDIwYTksIDB4MDAxMCwgMHhhMDA2LCAweDY4NTIsIDB4Njg1NiwKLQkweDFmMDQsIDB4Mjg3NywgMHgwMGRlLCAweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDAwMjYsIDB4MjA2OSwKLQkweDAxNDAsIDB4MjAwMSwgMHhiNjE1LCAweDIxMDIsIDB4ODExNCwgMHg4MjE0LCAweDgyMTQsIDB4ODIxNCwKLQkweDIwYTksIDB4MDAxMCwgMHg2ODUzLCAweDAwMDAsIDB4YTAwNiwgMHg4MmZmLCAweDExMjgsIDB4YTE4NCwKLQkweDAwMGYsIDB4YTA4MCwgMHhiNTFhLCAweDIwMDUsIDB4Njg1NiwgMHg4MjExLCAweDFmMDQsIDB4Mjg4YywKLQkweDAwMmUsIDB4MDBkZSwgMHgwMDBlLCAweDAwMDUsIDB4MDBjNiwgMHgyMDYxLCAweGI2MDAsIDB4NjAzMCwKLQkweDAxMTAsIDB4YzA5ZCwgMHgwMDA4LCAweGMwOWMsIDB4NjAzMiwgMHgwMGNlLCAweDAwMDUsIDB4MDE1NiwKLQkweDAwZDYsIDB4MDAyNiwgMHgwMDE2LCAweDAwMDYsIDB4MjA2OSwgMHgwMTQwLCAweDY5ODAsIDB4YTExNiwKLQkweDAxODAsIDB4YTExMiwgMHgxMjMwLCAweDgyMTIsIDB4ODIxMCwgMHgyMmE4LCAweDIwMDEsIDB4MDQwMiwKLQkweDAwMTgsIDB4MjJhOCwgMHgyMDAxLCAweDA0MDQsIDB4NjgwZSwgMHgxZjA0LCAweDI4YmMsIDB4NjgwZiwKLQkweDAwMDAsIDB4MDAwZSwgMHgwMDFlLCAweDAwMmUsIDB4MDBkZSwgMHgwMTVlLCAweDAwMDUsIDB4MjAwMSwKLQkweGI2NTMsIDB4MjAwNCwgMHhkMGM0LCAweDAxNTAsIDB4ZDBhNCwgMHgwMTQwLCAweGEwMDYsIDB4MDA0NiwKLQkweDIwMjAsIDB4MjAwOSwgMHgwMDJlLCAweDA4MGMsIDB4YjFhNCwgMHgwMDRlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwMTYsIDB4MDAyNiwgMHgyMDc5LCAweDAxNDAsIDB4NzhjNCwgMHhkMGRjLCAweDA1NDgsIDB4YTA4NCwKLQkweDA3MDAsIDB4YTA4ZSwgMHgwMzAwLCAweDE1MjAsIDB4MjAxMSwgMHgwMDAwLCAweDIwMDksIDB4MDAwMiwKLQkweDIzMDAsIDB4YTA4MCwgMHgwMDIwLCAweDIwMTgsIDB4MjMwMCwgMHgwODBjLCAweDZiYjIsIDB4MjAxMSwKLQkweDAwMzAsIDB4MjIwMCwgMHg4MDA3LCAweGEwODUsIDB4MDA0YywgMHg3OGMyLCAweDIwMDksIDB4MDIwNCwKLQkweDIxMGMsIDB4MjIwMCwgMHhhMTAwLCAweDIwMDksIDB4MDEzOCwgMHgyMDBhLCAweDA4MGMsIDB4NWI0MSwKLQkweDExMTgsIDB4MjAwOSwgMHhiODhmLCAweDIwMGEsIDB4MDAyZSwgMHgwMDFlLCAweDAwZmUsIDB4MDAwNSwKLQkweDc4YzMsIDB4MDAwMCwgMHgwY2M4LCAweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDAwMDYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MjAwMSwgMHgwMTcwLCAweDIwMGMsIDB4ODAwMCwgMHgyMDE0LCAweGExODQsIDB4MDAwMywKLQkweDAxMTAsIDB4MDgwNCwgMHgxYjIwLCAweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwKLQkweDAwMDYsIDB4MjAwMSwgMHgwMTAwLCAweDIwMDQsIDB4YTA4MiwgMHgwMDA1LCAweDAwMGUsIDB4MDI2OCwKLQkweDIwMDEsIDB4MDE3MCwgMHgyMDBjLCAweGExOGMsIDB4MDBmZiwgMHhhMThlLCAweDAwNGMsIDB4MTEyOCwKLQkweDIwMGMsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDAsIDB4MjAwMSwKLQkweDAyMDQsIDB4MjAwNCwgMHhhMTA4LCAweDAwMDUsIDB4MDAwNiwgMHgwMTU2LCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4MjBhOSwgMHgwMDBhLCAweDc4NTQsIDB4ZDA4YywgMHgxMTEwLCAweDFmMDQsIDB4Mjk0MywKLQkweDAwZmUsIDB4MDE1ZSwgMHgwMDBlLCAweDAwMDUsIDB4MDAxNiwgMHgwMGM2LCAweDAwMDYsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjAzMCwgMHgwMDA2LCAweDYwNDgsIDB4MDAwNiwgMHg2MGU0LCAweDAwMDYsIDB4NjBlOCwKLQkweDAwMDYsIDB4NjA1MCwgMHgwMDA2LCAweDYwZjAsIDB4MDAwNiwgMHg2MGVjLCAweDAwMDYsIDB4NjAwYywKLQkweDAwMDYsIDB4NjAwNCwgMHgwMDA2LCAweDYwMjgsIDB4MDAwNiwgMHg2MGUwLCAweDAwMDYsIDB4NjAyZiwKLQkweDAxMDAsIDB4NjAyZiwgMHgwMDAwLCAweGUwMDAsIDB4ZTAwMCwgMHhlMDAwLCAweGUwMDAsIDB4NjAyZiwKLQkweDAwNDAsIDB4NjAyZiwgMHgwMDAwLCAweDAwMGUsIDB4NjBlMiwgMHgwMDBlLCAweDYwMmEsIDB4MDAwZSwKLQkweDYwMDYsIDB4MDAwZSwgMHg2MDBlLCAweDAwMGUsIDB4NjBlZSwgMHgwMDBlLCAweDYwZjIsIDB4MDAwZSwKLQkweDYwNTIsIDB4MDAwZSwgMHg2MGVhLCAweDAwMGUsIDB4NjBlNiwgMHgwMDBlLCAweDYwNGEsIDB4MDAwZSwKLQkweDYwMzIsIDB4NjAzNiwgMHgyMDA4LCAweDA4MGMsIDB4Mjg3YywgMHgwMDBlLCAweDAwY2UsIDB4MDAxZSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMTcxLCAweDIxMDQsIDB4ZDBkYywgMHgwMTQwLCAweDIwMDksIDB4MDE3MCwKLQkweDIxMDQsIDB4MjAwYiwgMHgwMDgwLCAweGUwMDAsIDB4ZTAwMCwgMHgyMDBhLCAweDAwMDUsIDB4MmEyZiwKLQkweDJhMzMsIDB4MmEzNywgMHgyYTNkLCAweDJhNDMsIDB4MmE0OSwgMHgyYTRmLCAweDJhNTcsIDB4MmE1ZiwKLQkweDJhNjUsIDB4MmE2YiwgMHgyYTczLCAweDJhN2IsIDB4MmE4MywgMHgyYThiLCAweDJhOTUsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFhMSwKLQkweDJhYTEsIDB4MmFhNywgMHgyYWE3LCAweDJhYWUsIDB4MmFhZSwgMHgyYWI1LCAweDJhYjUsIDB4MmFiZSwKLQkweDJhYmUsIDB4MmFjNSwgMHgyYWM1LCAweDJhY2UsIDB4MmFjZSwgMHgyYWQ3LCAweDJhZDcsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwKLQkweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmFlMiwgMHgyYWUyLCAweDJhZTIsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwKLQkweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MmE5ZiwgMHgyYTlmLCAweDJhOWYsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODA0LCAweDJhZWEsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyNTRlLCAweDA4MDQsIDB4MmFlYSwgMHgwMTA2LCAweDAwMDYsIDB4MDgwYywKLQkweDI1NGUsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDIzYmYsIDB4MDgwNCwKLQkweDJhZWEsIDB4MDEwNiwgMHgwMDA2LCAweDA4MGMsIDB4MjNiZiwgMHgwODA0LCAweDJhZWEsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyNTRlLCAweDA4MGMsIDB4MjNiZiwgMHgwODA0LCAweDJhZWEsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyNTRlLCAweDA4MGMsIDB4MjNiZiwgMHgwODA0LCAweDJhZWEsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyNDI3LCAweDA4MDQsIDB4MmFlYSwgMHgwMTA2LCAweDAwMDYsIDB4MDgwYywKLQkweDI0MjcsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDI1NGUsIDB4MDgwYywKLQkweDI0MjcsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDI1NGUsIDB4MDgwYywKLQkweDI0MjcsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDIzYmYsIDB4MDgwYywKLQkweDI0MjcsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDIzYmYsIDB4MDgwYywKLQkweDI0MjcsIDB4MDgwNCwgMHgyYWVhLCAweDAxMDYsIDB4MDAwNiwgMHgwODBjLCAweDI1NGUsIDB4MDgwYywKLQkweDIzYmYsIDB4MDgwYywgMHgyNDI3LCAweDA4MDQsIDB4MmFlYSwgMHgwMTA2LCAweDAwMDYsIDB4MDgwYywKLQkweDI1NGUsIDB4MDgwYywgMHgyM2JmLCAweDA4MGMsIDB4MjQyNywgMHgwODA0LCAweDJhZWEsIDB4ZTAwMCwKLQkweDBjZjAsIDB4MDEwNiwgMHgwMDA2LCAweDA4MGMsIDB4MjkwYiwgMHgwODA0LCAweDJhZWEsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyOTBiLCAweDA4MGMsIDB4MjU0ZSwgMHgwNGUwLCAweDAxMDYsIDB4MDAwNiwKLQkweDA4MGMsIDB4MjkwYiwgMHgwODBjLCAweDIzYmYsIDB4MDRhOCwgMHgwMTA2LCAweDAwMDYsIDB4MDgwYywKLQkweDI5MGIsIDB4MDgwYywgMHgyNTRlLCAweDA4MGMsIDB4MjNiZiwgMHgwNDYwLCAweDAxMDYsIDB4MDAwNiwKLQkweDA4MGMsIDB4MjkwYiwgMHgwODBjLCAweDI0MjcsIDB4MDQyOCwgMHgwMTA2LCAweDAwMDYsIDB4MDgwYywKLQkweDI5MGIsIDB4MDgwYywgMHgyNTRlLCAweDA4MGMsIDB4MjQyNywgMHgwMGUwLCAweDAxMDYsIDB4MDAwNiwKLQkweDA4MGMsIDB4MjkwYiwgMHgwODBjLCAweDIzYmYsIDB4MDgwYywgMHgyNDI3LCAweDAwOTgsIDB4MDEwNiwKLQkweDAwMDYsIDB4MDgwYywgMHgyOTBiLCAweDA4MGMsIDB4MjU0ZSwgMHgwODBjLCAweDIzYmYsIDB4MDgwYywKLQkweDI0MjcsIDB4MDA0MCwgMHgyMGQxLCAweDAwMDAsIDB4MjBkMSwgMHgwMDAxLCAweDIwZDEsIDB4MDAwMCwKLQkweDA4MGMsIDB4MTUxYSwgMHgwMDBlLCAweDAxMGUsIDB4MDAwZCwgMHgwMGM2LCAweDAwMjYsIDB4MDA0NiwKLQkweDIwMjEsIDB4MDAwMCwgMHgwODBjLCAweDUzN2IsIDB4MTkwNCwgMHgyYmNhLCAweDcyZDQsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwNCwgMHhhMDA1LCAweDExMTAsIDB4ZDI5YywgMHgwMTQ4LCAweGQyODQsIDB4MTEzOCwKLQkweGQyYmMsIDB4MTkwNCwgMHgyYmNhLCAweDA4MGMsIDB4MmJjZSwgMHgwODA0LCAweDJiY2EsIDB4ZDJjYywKLQkweDE5MDQsIDB4MmJjYSwgMHgwODBjLCAweDViNDEsIDB4MTEyMCwgMHg3MDlmLCAweGZmZmYsIDB4MDgwNCwKLQkweDJiY2EsIDB4ZDI5NCwgMHgwMTIwLCAweDcwOWYsIDB4ZmZmZiwgMHgwODA0LCAweDJiY2EsIDB4MjAwMSwKLQkweGI2MTUsIDB4MjAzYywgMHg3Mjg4LCAweGQyODQsIDB4MDkwNCwgMHgyYjZjLCAweGQyOGMsIDB4MTkwNCwKLQkweDJiNmMsIDB4MDAzNiwgMHg3MzljLCAweGEzOGUsIDB4ZmZmZiwgMHgxMTEwLCAweDIwMTksIDB4MDAwMSwKLQkweDgzMTQsIDB4YTJlMCwgMHhiZGMwLCAweDJjMDQsIDB4YTM4YywgMHgwMDAxLCAweDAxMjAsIDB4YTA4NCwKLQkweGZmMDAsIDB4ODAwNywgMHgwMDEwLCAweGEwODQsIDB4MDBmZiwgMHhhNzBlLCAweDA1NjAsIDB4YTA4ZSwKLQkweDAwMDAsIDB4MDU0OCwgMHhhMDhlLCAweDAwZmYsIDB4MTE1MCwgMHg3MjMwLCAweGQyODQsIDB4MTUzOCwKLQkweDcyODgsIDB4YzI4ZCwgMHg3MjhhLCAweDcwOWYsIDB4ZmZmZiwgMHgwMDNlLCAweDA0MjgsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDgwYywgMHgyODUyLCAweDA4MGMsIDB4NGZiZiwgMHgxMWI4LCAweDYwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDExNTAsIDB4NzAzMCwgMHhkMDhjLCAweDAxMTgsIDB4NjAwMCwKLQkweGQwYmMsIDB4MDEyMCwgMHgwODBjLCAweDJiZTEsIDB4MDE0MCwgMHgwMDI4LCAweDA4MGMsIDB4MmQxMiwKLQkweDA4MGMsIDB4MmMwZiwgMHgwMTEwLCAweDgzMTgsIDB4MDgxOCwgMHg3MzllLCAweDAwMTAsIDB4NzA5ZiwKLQkweGZmZmYsIDB4MDAzZSwgMHgwODA0LCAweDJiY2EsIDB4YTc4MCwgMHgyZGY5LCAweDIwM2QsIDB4YTdiYywKLQkweGZmMDAsIDB4ODczZiwgMHgyMDQxLCAweDAwN2UsIDB4NzA5YywgMHhhMDk2LCAweGZmZmYsIDB4MTEyMCwKLQkweDIwMDksIDB4MDAwMCwgMHgyOGE4LCAweDAwNTAsIDB4YTgxMiwgMHgwMjIwLCAweDIwMDgsIDB4YTgwMiwKLQkweDIwYTgsIDB4MDAyMCwgMHg3MDlmLCAweGZmZmYsIDB4MDgwNCwgMHgyYmNhLCAweDI3MDAsIDB4MDE1NiwKLQkweDAwMTYsIDB4YTEwNiwgMHgwNWEwLCAweGM0ODQsIDB4MDgwYywgMHg1MDFiLCAweDAxMjAsIDB4MDgwYywKLQkweDRmYmYsIDB4MTVhOCwgMHgwMDA4LCAweGM0ODUsIDB4NjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMDYsIDB4MTEzMCwgMHg3MDMwLCAweGQwOGMsIDB4MDFlOCwgMHg2MDAwLCAweGQwYmMsIDB4MTFkMCwKLQkweDcyODgsIDB4ZDI4YywgMHgwMTg4LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODIsIDB4MDAwNiwKLQkweDAyYjAsIDB4ZDQ4NCwgMHgxMTE4LCAweDA4MGMsIDB4NGZkZSwgMHgwMDI4LCAweDA4MGMsIDB4MmQ5ZiwKLQkweDAxNzAsIDB4MDgwYywgMHgyZGNjLCAweDAwNTgsIDB4MDgwYywgMHgyZDEyLCAweDA4MGMsIDB4MmMwZiwKLQkweDAxNzAsIDB4MDAyOCwgMHgwODBjLCAweDJkOWYsIDB4MDExMCwgMHgwNDE5LCAweDAxNDAsIDB4MDAxZSwKLQkweDgxMDgsIDB4MDE1ZSwgMHgxZjA0LCAweDJiODYsIDB4NzA5ZiwgMHhmZmZmLCAweDAwMTgsIDB4MDAxZSwKLQkweDAxNWUsIDB4NzE5ZSwgMHgwMDRlLCAweDAwMmUsIDB4MDBjZSwgMHgwMDA1LCAweDAwYzYsIDB4MDAxNiwKLQkweDcwOWYsIDB4MDAwMSwgMHgyMDA5LCAweDAwN2UsIDB4MDgwYywgMHg0ZmJmLCAweDExMzgsIDB4MDgwYywKLQkweDJkMTIsIDB4MDRhOSwgMHgwMTE4LCAweDcwZDQsIDB4YzBiZCwgMHg3MGQ2LCAweDAwMWUsIDB4MDBjZSwKLQkweDAwMDUsIDB4MDAxNiwgMHgwMDc2LCAweDAwZDYsIDB4MDBjNiwgMHgyYzY4LCAweDIwMDEsIDB4YjY1NywKLQkweDIwMDQsIDB4YTA4NCwgMHgwMGZmLCAweDY4NDIsIDB4MDgwYywgMHg5ZjkyLCAweDAxZDgsIDB4MmQwMCwKLQkweDYwMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywKLQkweDRmNWQsIDB4MjAwMSwgMHgwMDAwLCAweDA4MGMsIDB4NGY2ZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDcwOTgsIDB4ODAwMCwgMHg3MDlhLCAweDAxMmUsIDB4MjAwOSwgMHgwMDA0LCAweDA4MGMsIDB4ODZkMywKLQkweGEwODUsIDB4MDAwMSwgMHgwMGNlLCAweDAwZGUsIDB4MDA3ZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwNzYsIDB4MDBkNiwgMHgwMGM2LCAweDJjNjgsIDB4MjAwMSwgMHhiNjU3LCAweDIwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4Njg0MiwgMHgwODBjLCAweDlmOTIsIDB4MDU1MCwgMHgyZDAwLCAweDYwMWEsIDB4NjgwMCwKLQkweGMwYzQsIDB4NjgwMiwgMHg2OGEwLCAweGEwODYsIDB4MDA3ZSwgMHgwMTQwLCAweDY4MDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDExMTAsIDB4MDgwYywgMHgyY2QxLCAweDA4MGMsIDB4YTBlMywKLQkweDYwMWYsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDIwMDEsIDB4MDAwMiwKLQkweDA4MGMsIDB4NGY2ZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg3MDk4LCAweDgwMDAsIDB4NzA5YSwKLQkweDAxMmUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MGMsIDB4ODZkMywgMHhhMDg1LCAweDAwMDEsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDA3ZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBjNiwgMHgwMDI2LCAweDIwMDksIDB4MDA4MCwKLQkweDA4MGMsIDB4NGZiZiwgMHgxMTIwLCAweDAwMzEsIDB4MDExMCwgMHg3MGRiLCAweGZmZmYsIDB4MDAyZSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMDE2LCAweDAwNzYsIDB4MDBkNiwgMHgwMGM2LCAweDJjNjgsIDB4MDgwYywKLQkweDg2NGUsIDB4MDFlOCwgMHgyZDAwLCAweDYwMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwMSwKLQkweDIwMDEsIDB4MDAwMCwgMHgwODBjLCAweDRmNWQsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NGY2ZiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4MmNkMSwgMHg3MGRjLCAweDgwMDAsIDB4NzBkZSwKLQkweDAxMmUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MGMsIDB4ODZkMywgMHhhMDg1LCAweDAwMDEsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDA3ZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBjNiwgMHgwMGQ2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjAwOSwgMHgwMDdmLCAweDA4MGMsIDB4NGZiZiwgMHgxMTkwLCAweDJjNjgsIDB4MDgwYywKLQkweDg2NGUsIDB4MDE3MCwgMHgyZDAwLCAweDYwMWEsIDB4NjMxMiwgMHg2MDFmLCAweDAwMDEsIDB4NjIwYSwKLQkweDA4MGMsIDB4YTBlMywgMHgyMDA5LCAweDAwMjIsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBkZSwgMHgwMGNlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwNjYsIDB4MDAzNiwKLQkweDAwMjYsIDB4MDgwYywgMHg2ZTczLCAweDA4MGMsIDB4NmUxNiwgMHgwODBjLCAweDkwZmIsIDB4MjEzMCwKLQkweDgxZmYsIDB4MDEyOCwgMHgyMGE5LCAweDAwN2UsIDB4MjAwOSwgMHgwMDAwLCAweDAwMjAsIDB4MjBhOSwKLQkweDAwN2YsIDB4MjAwOSwgMHgwMDAwLCAweDAwMTYsIDB4MDgwYywgMHg1MDFiLCAweDExMjAsIDB4MDgwYywKLQkweDUyMWMsIDB4MDgwYywgMHg0YzdlLCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDJjYmIsIDB4ODZmZiwKLQkweDExMTAsIDB4MDgwYywgMHgxMWY1LCAweDAwMmUsIDB4MDAzZSwgMHgwMDZlLCAweDAwY2UsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwMzYsIDB4MDAyNiwgMHgwMDE2LCAweDYyMTgsIDB4MjI3MCwKLQkweDcyYTAsIDB4MDAyNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywgMHg2ZTY3LCAweDAwNzYsIDB4MjAzOSwKLQkweDAwMDAsIDB4MDgwYywgMHg2ZDc0LCAweDJjMDgsIDB4MDgwYywgMHhhZjNlLCAweDAwN2UsIDB4MDAxZSwKLQkweDJlNjAsIDB4MDgwYywgMHg1MjFjLCAweDYyMTAsIDB4NjMxNCwgMHgwODBjLCAweDRjN2UsIDB4NjIxMiwKLQkweDYzMTYsIDB4MDAxZSwgMHgwMDJlLCAweDAwM2UsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwKLQkweDAwMDYsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhhMDg2LCAweDAwODAsIDB4MDE1MCwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MDk4LCAweGEwMDUsIDB4MDExMCwgMHg4MDAxLCAweDcwOWEsIDB4MDAwZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDcxLCAweGI2MDAsIDB4NzBkYywgMHhhMDA1LCAweDBkYzAsIDB4ODAwMSwKLQkweDcwZGUsIDB4MGNhOCwgMHg2MDAwLCAweGMwOGMsIDB4NjAwMiwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwKLQkweDAwYzYsIDB4MDAzNiwgMHgwMDI2LCAweDAwMTYsIDB4MDE1NiwgMHgyMTc4LCAweDgxZmYsIDB4MTExOCwKLQkweDIwYTksIDB4MDAwMSwgMHgwMDk4LCAweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYzQsIDB4MDE1MCwKLQkweGQwYTQsIDB4MDE0MCwgMHhhMDA2LCAweDAwNDYsIDB4MjAyMCwgMHgyMDA5LCAweDAwMmQsIDB4MDgwYywKLQkweGIxYTQsIDB4MDA0ZSwgMHgyMGE5LCAweDAwZmYsIDB4MjAxMSwgMHgwMDAwLCAweDAwMjYsIDB4YTI4ZSwKLQkweDAwN2UsIDB4MDkwNCwgMHgyZDdlLCAweGEyOGUsIDB4MDA3ZiwgMHgwOTA0LCAweDJkN2UsIDB4YTI4ZSwKLQkweDAwODAsIDB4MDVlMCwgMHhhMjg4LCAweGI3MzUsIDB4MjEwYywgMHg4MWZmLCAweDA1YjgsIDB4OGZmZiwKLQkweDExNDgsIDB4MjAwMSwgMHhiOGJlLCAweDAwMDYsIDB4MjAwMywgMHgwMDAxLCAweDA0ZDksIDB4MDAwZSwKLQkweDIwMDMsIDB4MDAwMCwgMHgwMGM2LCAweDIxNjAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NTM4NSwKLQkweDAwY2UsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4NmU2NywgMHgwMDc2LCAweDIwMzksIDB4MDAwMCwKLQkweDA4MGMsIDB4NmQ3NCwgMHgwMGM2LCAweDAwMjYsIDB4MjE2MCwgMHg2MjA0LCAweGEyOTQsIDB4MDBmZiwKLQkweGEyODYsIDB4MDAwNiwgMHgxMTE4LCAweDYwMDcsIDB4MDQwNCwgMHgwMDI4LCAweDIwMDEsIDB4MDAwNCwKLQkweDgwMDcsIDB4YTIxNSwgMHg2MjA2LCAweDAwMmUsIDB4MDBjZSwgMHgwMDE2LCAweDJjMDgsIDB4MDgwYywKLQkweGFmM2UsIDB4MDAxZSwgMHgwMDdlLCAweDIxNjAsIDB4MDgwYywgMHg1MjFjLCAweDAwMmUsIDB4ODIxMCwKLQkweDFmMDQsIDB4MmQzNiwgMHgwMTVlLCAweDAwMWUsIDB4MDAyZSwgMHgwMDNlLCAweDAwY2UsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMDQ2LCAweDAwMjYsIDB4MDAxNiwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwKLQkweGQwYzQsIDB4MDE0OCwgMHhkMGE0LCAweDAxMzgsIDB4YTAwNiwgMHgyMjIwLCAweDg0MjcsIDB4MjAwOSwKLQkweDAwMjksIDB4MDgwYywgMHhiMWE0LCAweDAwMWUsIDB4MDAyZSwgMHgwMDRlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwMGM2LCAweDcyODgsIDB4ODJmZiwgMHgwMWY4LCAweDIwMTEsIDB4YjY1MywKLQkweDIyMTQsIDB4ZDJhYywgMHgxMWQwLCAweDIxMDAsIDB4MDgwYywgMHgyODY2LCAweDgxZmYsIDB4MDFiOCwKLQkweDIwMTksIDB4MDAwMSwgMHg4MzE0LCAweGEyZTAsIDB4YmRjMCwgMHgyYzA0LCAweGQzODQsIDB4MDEyMCwKLQkweGEwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDAwMTAsIDB4YTA4NCwgMHgwMGZmLCAweGExMTYsIDB4MDEzOCwKLQkweGEwOTYsIDB4MDBmZiwgMHgwMTEwLCAweDgzMTgsIDB4MGM2OCwgMHhhMDg1LCAweDAwMDEsIDB4MDBjZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MjExMCwgMHgwMDI2LCAweDIwMTksIDB4MDAyOSwKLQkweDA4MGMsIDB4ODMyMCwgMHgwMDJlLCAweDA4MGMsIDB4YjQ0OSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweGExODAsIDB4YjczNSwgMHgyMDA0LCAweGEwNjUsIDB4MDE1OCwgMHgwMDE2LCAweDAwYzYsIDB4MjA2MSwKLQkweGI5ZjUsIDB4MDAxZSwgMHg2MTFhLCAweDA4MGMsIDB4MmNkMSwgMHgwMDFlLCAweDA4MGMsIDB4NGZkZSwKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDFlLCAweDAwMDUsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBjYywKLQkweDAwMDUsIDB4N2VlZiwgMHg3ZGU4LCAweDdjZTQsIDB4ODBlMiwgMHg3YmUxLCAweDgwZTAsIDB4ODBkYywKLQkweDgwZGEsIDB4N2FkOSwgMHg4MGQ2LCAweDgwZDUsIDB4ODBkNCwgMHg4MGQzLCAweDgwZDIsIDB4ODBkMSwKLQkweDc5Y2UsIDB4NzhjZCwgMHg4MGNjLCAweDgwY2IsIDB4ODBjYSwgMHg4MGM5LCAweDgwYzcsIDB4ODBjNiwKLQkweDc3YzUsIDB4NzZjMywgMHg4MGJjLCAweDgwYmEsIDB4NzViOSwgMHg4MGI2LCAweDc0YjUsIDB4NzNiNCwKLQkweDcyYjMsIDB4ODBiMiwgMHg4MGIxLCAweDgwYWUsIDB4NzFhZCwgMHg4MGFjLCAweDcwYWIsIDB4NmZhYSwKLQkweDZlYTksIDB4ODBhNywgMHg2ZGE2LCAweDZjYTUsIDB4NmJhMywgMHg2YTlmLCAweDY5OWUsIDB4Njg5ZCwKLQkweDgwOWIsIDB4ODA5OCwgMHg2Nzk3LCAweDY2OTAsIDB4NjU4ZiwgMHg2NDg4LCAweDYzODQsIDB4NjI4MiwKLQkweDgwODEsIDB4ODA4MCwgMHg2MTdjLCAweDYwN2EsIDB4ODA3OSwgMHg1Zjc2LCAweDgwNzUsIDB4ODA3NCwKLQkweDgwNzMsIDB4ODA3MiwgMHg4MDcxLCAweDgwNmUsIDB4NWU2ZCwgMHg4MDZjLCAweDVkNmIsIDB4NWM2YSwKLQkweDViNjksIDB4ODA2NywgMHg1YTY2LCAweDU5NjUsIDB4NTg2MywgMHg1NzVjLCAweDU2NWEsIDB4NTU1OSwKLQkweDgwNTYsIDB4ODA1NSwgMHg1NDU0LCAweDUzNTMsIDB4NTI1MiwgMHg1MTUxLCAweDUwNGUsIDB4NGY0ZCwKLQkweDgwNGMsIDB4ODA0YiwgMHg0ZTRhLCAweDRkNDksIDB4ODA0NywgMHg0YzQ2LCAweDgwNDUsIDB4ODA0MywKLQkweDgwM2MsIDB4ODAzYSwgMHg4MDM5LCAweDgwMzYsIDB4NGIzNSwgMHg4MDM0LCAweDRhMzMsIDB4NDkzMiwKLQkweDQ4MzEsIDB4ODAyZSwgMHg0NzJkLCAweDQ2MmMsIDB4NDUyYiwgMHg0NDJhLCAweDQzMjksIDB4NDIyNywKLQkweDgwMjYsIDB4ODAyNSwgMHg0MTIzLCAweDQwMWYsIDB4M2YxZSwgMHgzZTFkLCAweDNkMWIsIDB4M2MxOCwKLQkweDgwMTcsIDB4ODAxMCwgMHgzYjBmLCAweDNhMDgsIDB4ODAwNCwgMHgzOTAyLCAweDgwMDEsIDB4ODAwMCwKLQkweDgwMDAsIDB4MzgwMCwgMHgzNzAwLCAweDM2MDAsIDB4ODAwMCwgMHgzNTAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MzQwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDMzMDAsIDB4MzIwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDMxMDAsIDB4MzAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MmYwMCwgMHg4MDAwLCAweDJlMDAsIDB4MmQwMCwKLQkweDJjMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MmIwMCwgMHg4MDAwLCAweDJhMDAsIDB4MjkwMCwKLQkweDI4MDAsIDB4ODAwMCwgMHgyNzAwLCAweDI2MDAsIDB4MjUwMCwgMHgyNDAwLCAweDIzMDAsIDB4MjIwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHgyMTAwLCAweDIwMDAsIDB4MWYwMCwgMHgxZTAwLCAweDFkMDAsIDB4MWMwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHgxYjAwLCAweDFhMDAsIDB4ODAwMCwgMHgxOTAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MTgwMCwgMHg4MDAwLCAweDE3MDAsIDB4MTYwMCwKLQkweDE1MDAsIDB4ODAwMCwgMHgxNDAwLCAweDEzMDAsIDB4MTIwMCwgMHgxMTAwLCAweDEwMDAsIDB4MGYwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHgwZTAwLCAweDBkMDAsIDB4MGMwMCwgMHgwYjAwLCAweDBhMDAsIDB4MDkwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHgwODAwLCAweDA3MDAsIDB4ODAwMCwgMHgwNjAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MDUwMCwgMHgwNDAwLCAweDAzMDAsIDB4ODAwMCwgMHgwMjAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MDEwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDAwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MjA3MSwgMHhiNjgyLCAweDcwMDMsIDB4MDAwMiwgMHhhMDA2LCAweDcwMTIsIDB4NzAxNiwKLQkweDcwM2EsIDB4NzAzZSwgMHg3MDMzLCAweGI2OTIsIDB4NzAzNywgMHhiNjkyLCAweDcwMDcsIDB4MDAwMSwKLQkweDIwNjEsIDB4YjZkMiwgMHg2MDAzLCAweDAwMDIsIDB4MDAwNSwgMHgxMDA0LCAweDJmMWYsIDB4MGUwNCwKLQkweDJmMWYsIDB4MjA3MSwgMHhiNjgyLCAweDJiNzgsIDB4NzgxOCwgMHhkMDg0LCAweDExNDAsIDB4MmE2MCwKLQkweDc4MjAsIDB4YTA4ZSwgMHgwMDY5LCAweDE5MDQsIDB4MzAwNCwgMHgwODA0LCAweDJmOWQsIDB4MDAwNSwKLQkweDIwNzEsIDB4YjY4MiwgMHg3MDA0LCAweDAwMDIsIDB4MmYyOCwgMHgyZjI5LCAweDJmMzIsIDB4MmY0MywKLQkweDAwMDUsIDB4MTAwNCwgMHgyZjMxLCAweDBlMDQsIDB4MmYzMSwgMHgyYjc4LCAweDc4MTgsIDB4ZDA4NCwKLQkweDAxZTgsIDB4MDAwNSwgMHgyYjc4LCAweDIwNjEsIDB4YjZkMiwgMHg2MDA4LCAweGEwOGUsIDB4MDEwMCwKLQkweDAxMjgsIDB4YTA4NiwgMHgwMjAwLCAweDA5MDQsIDB4MmZmZSwgMHgwMDA1LCAweDcwMTQsIDB4MjA2OCwKLQkweDJhNjAsIDB4NzAxOCwgMHgwODA3LCAweDcwMTAsIDB4MjA2OCwgMHg2ODM0LCAweGEwODYsIDB4MDEwMywKLQkweDAxMDgsIDB4MDAwNSwgMHgyYTYwLCAweDJiNzgsIDB4NzAxOCwgMHgwODA3LCAweDJhNjAsIDB4NzgyMCwKLQkweGEwOGEsIDB4MDA0MCwgMHgxMjEwLCAweDYxYzQsIDB4MDA0MiwgMHgyMTAwLCAweGEwOGEsIDB4MDAzZiwKLQkweDFhMDQsIDB4MmZmYiwgMHg2MWM0LCAweDA4MDQsIDB4MmY5ZCwgMHgyZmRmLCAweDMwMGEsIDB4MzAxMiwKLQkweDMwMTYsIDB4MzAxZSwgMHgzMDI0LCAweDMwMjgsIDB4MzAzNCwgMHgzMDM3LCAweDMwNDEsIDB4MzA0NCwKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDMwNDcsIDB4MmZmYiwgMHgzMDU2LCAweDMwNmQsIDB4MzA4NCwKLQkweDMwZmUsIDB4MzEwMywgMHgzMTJjLCAweDMxN2QsIDB4MzE4ZSwgMHgzMWFkLCAweDMxZTUsIDB4MzFlZiwKLQkweDMxZmMsIDB4MzIwZiwgMHgzMjMwLCAweDMyMzksIDB4MzI2ZiwgMHgzMjc1LCAweDJmZmIsIDB4MzI5ZSwKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwgMHgzMmE1LCAweDMyYWYsIDB4MmZmYiwKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MzJiNywKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwgMHgzMmM5LCAweDMyZDMsIDB4MmZmYiwKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwgMHgwMDAyLCAweDMyZmQsIDB4MzM1MSwKLQkweDMzYWMsIDB4MzNjNiwgMHgyZmZiLCAweDMzZjcsIDB4MzgyYSwgMHg0MjdhLCAweDJmZmIsIDB4MmZmYiwKLQkweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDMwNDEsIDB4MzA0NCwKLQkweDM4MmMsIDB4MmZmYiwgMHgzODM5LCAweDQzMTMsIDB4NDM2ZSwgMHg0M2QyLCAweDJmZmIsIDB4NDQzNSwKLQkweDQ0NWYsIDB4NDQ3ZSwgMHg0NGIwLCAweDJmZmIsIDB4MmZmYiwgMHgyZmZiLCAweDM4M2QsIDB4MzllMiwKLQkweDM5ZmMsIDB4M2EyNiwgMHgzYTg3LCAweDNhZTcsIDB4M2FmMiwgMHgzYjJhLCAweDNiMzksIDB4M2I0OCwKLQkweDNiNGIsIDB4M2I2ZSwgMHgzYmJhLCAweDNjMzQsIDB4M2M0MSwgMHgzZDQyLCAweDNlNmEsIDB4M2U5MywKLQkweDNmOTEsIDB4M2ZiMywgMHgzZmJmLCAweDNmZjgsIDB4NDBiYywgMHgyZmZiLCAweDJmZmIsIDB4MmZmYiwKLQkweDJmZmIsIDB4NDEyNCwgMHg0MTNmLCAweDQxYjEsIDB4NDI2MywgMHg3MTNjLCAweDAwMDAsIDB4MjAyMSwKLQkweDQwMDAsIDB4MDgwYywgMHgzZWYwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDBlMDQsIDB4MmZlYiwKLQkweDc4MTgsIDB4ZDA4NCwgMHgwMTEwLCAweDAxMmUsIDB4MGNiMCwgMHg3YzIyLCAweDc5MjYsIDB4N2EyYSwKLQkweDdiMmUsIDB4NzgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHg3MDA3LCAweDAwMDEsIDB4MjA5MSwKLQkweDUwMDAsIDB4MDEyZSwgMHgwMDA1LCAweDIwMjEsIDB4NDAwMSwgMHgwYzE4LCAweDIwMjEsIDB4NDAwMiwKLQkweDBjMDAsIDB4MjAyMSwgMHg0MDAzLCAweDA4ZTgsIDB4MjAyMSwgMHg0MDA1LCAweDA4ZDAsIDB4MjAyMSwKLQkweDQwMDYsIDB4MDhiOCwgMHhhMDJlLCAweDI1MjAsIDB4N2IyOCwgMHg3YTJjLCAweDc4MjQsIDB4NzkzMCwKLQkweDA4MDQsIDB4M2VmZCwgMHg3ODIzLCAweDAwMDQsIDB4NzgyNCwgMHgwODA3LCAweGEwMmUsIDB4MjUyMCwKLQkweDdiMjgsIDB4N2EyYywgMHg3ODI0LCAweDc5MzAsIDB4MDgwNCwgMHgzZjAwLCAweDc5MjQsIDB4NzgyOCwKLQkweDIxMTQsIDB4MjAwYSwgMHgwODA0LCAweDJmZGYsIDB4NzkyNCwgMHgyMTE0LCAweDA4MDQsIDB4MmZkZiwKLQkweDIwOTksIDB4MDAwOSwgMHgyMGExLCAweDAwMDksIDB4MjBhOSwgMHgwMDA3LCAweDUzYTMsIDB4NzkyNCwKLQkweDdhMjgsIDB4N2IyYywgMHgwODA0LCAweDJmZGYsIDB4NzgyNCwgMHgyMDYwLCAweDAwOTAsIDB4MjAwOSwKLQkweDAwMDIsIDB4MjAxMSwgMHgwMDAyLCAweDIwMTksIDB4MDAwOCwgMHg3ODNiLCAweDAwMTcsIDB4MDgwNCwKLQkweDJmZGYsIDB4N2QzOCwgMHg3YzNjLCAweDA4NDAsIDB4N2QzOCwgMHg3YzNjLCAweDA4ODgsIDB4MjA2MSwKLQkweDEwMDAsIDB4ZTEwYywgMHhhMDA2LCAweDJjMTUsIDB4YTIwMCwgMHg4YzYwLCAweDgxMDksIDB4MWRkOCwKLQkweDIwMTAsIDB4YTAwNSwgMHgwOTA0LCAweDJmZGYsIDB4MDgwNCwgMHgzMDAxLCAweDIwNjksIDB4YjY1MiwKLQkweDc4MjQsIDB4NzkzMCwgMHhhMTFhLCAweDFhMDQsIDB4MzAwNywgMHg4MDE5LCAweDA5MDQsIDB4MzAwNywKLQkweDY4NGEsIDB4Njk0MiwgMHg3ODJjLCAweDY4NTIsIDB4NzgyOCwgMHg2ODU2LCAweGEwMDYsIDB4Njg1YSwKLQkweDY4NWUsIDB4MDgwYywgMHg1ZTE3LCAweDA4MDQsIDB4MmZkZiwgMHgyMDY5LCAweGI2NTIsIDB4NzgyNCwKLQkweDc5MzQsIDB4YTExYSwgMHgxYTA0LCAweDMwMDcsIDB4ODAxOSwgMHgwOTA0LCAweDMwMDcsIDB4Njg0ZSwKLQkweDY5NDYsIDB4NzgyYywgMHg2ODYyLCAweDc4MjgsIDB4Njg2NiwgMHhhMDA2LCAweDY4NmEsIDB4Njg2ZSwKLQkweDA4MGMsIDB4NTQ0NywgMHgwODA0LCAweDJmZGYsIDB4YTAyZSwgMHgyNTIwLCAweDgxZmYsIDB4MTkwNCwKLQkweDMwMDQsIDB4NzkyNCwgMHg3YjI4LCAweDdhMmMsIDB4MjBhOSwgMHgwMDA1LCAweDIwYTEsIDB4YjY4OSwKLQkweDQxYTEsIDB4MDgwYywgMHgzZWJjLCAweDA5MDQsIDB4MzAwNCwgMHgyMDA5LCAweDAwMjAsIDB4MDgwYywKLQkweDNlZmQsIDB4NzAxYiwgMHgzMDljLCAweDAwMDUsIDB4NjgzNCwgMHgyMDA4LCAweGEwODQsIDB4MDBmZiwKLQkweGEwOTYsIDB4MDAxMSwgMHgwMTM4LCAweGEwOTYsIDB4MDAxOSwgMHgwMTIwLCAweGEwOTYsIDB4MDAxNSwKLQkweDE5MDQsIDB4MzAwNCwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwgMHgwOTA0LCAweDMwMDQsIDB4NzEwZSwKLQkweDcwMGMsIDB4ODAwMSwgMHgwNTI4LCAweDcwMGUsIDB4MDgwYywgMHgzZWJjLCAweDA5MDQsIDB4MzAwNCwKLQkweDIwMDksIDB4MDAyMCwgMHgyMDYxLCAweGI2ZDIsIDB4NjIyNCwgMHg2MzI4LCAweDY0MmMsIDB4NjUzMCwKLQkweGEyOTAsIDB4MDA0MCwgMHhhMzk5LCAweDAwMDAsIDB4YTRhMSwgMHgwMDAwLCAweGE1YTksIDB4MDAwMCwKLQkweDA4MGMsIDB4M2VmZCwgMHg3MDFiLCAweDMwY2QsIDB4MDAwNSwgMHg2ODM0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwOTYsIDB4MDAwMiwgMHgwMTIwLCAweGEwOTYsIDB4MDAwYSwgMHgxOTA0LCAweDMwMDQsIDB4MDhjMCwKLQkweDcwMTAsIDB4MjA2OCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwgMHgwODBjLCAweDRlYmIsIDB4MTEyOCwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFiLCAweDMwZTcsIDB4MDAwNSwgMHgwODBjLCAweDU1NGQsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMGE5LCAweDAwMDUsIDB4MjA5OSwgMHhiNjg5LCAweDUzMGEsIDB4MjEwMCwKLQkweGEyMTAsIDB4YTM5OSwgMHgwMDAwLCAweGE0YTEsIDB4MDAwMCwgMHhhNWE5LCAweDAwMDAsIDB4YWQ4MCwKLQkweDAwMGQsIDB4MjAwOSwgMHgwMDIwLCAweDAxMmUsIDB4MDgwNCwgMHgzZjAwLCAweDYxYWMsIDB4NzgyNCwKLQkweDYwYWUsIDB4MDgwNCwgMHgyZmRmLCAweDIwOTEsIDB4ODAwMCwgMHg3ODIzLCAweDQwMDAsIDB4NzgyNywKLQkweDQ5NTMsIDB4NzgyYiwgMHg1MDIwLCAweDc4MmYsIDB4MjAyMCwgMHgyMDA5LCAweDAxN2YsIDB4MjEwNCwKLQkweDc4MzIsIDB4M2YwMCwgMHg3ODM2LCAweDIwNjEsIDB4MDEwMCwgMHg2MjAwLCAweDIwNjEsIDB4MDIwMCwKLQkweDYwM2MsIDB4ODAwNywgMHhhMjA1LCAweDc4M2EsIDB4MjAwOSwgMHgwNGZkLCAweDIxMDQsIDB4NzgzZSwKLQkweDc4MWIsIDB4MDAwMSwgMHgyMDkxLCAweDUwMDAsIDB4MjA5MSwgMHg0MDgwLCAweDIwNzEsIDB4MDAxMCwKLQkweDIwYzEsIDB4MDBmMCwgMHgwODA0LCAweDA0MjcsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4NzkyNCwKLQkweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweDA4MGMsIDB4NTAxYiwgMHgxOTA0LCAweDMwMDcsIDB4N2UzOCwKLQkweGE2ODQsIDB4M2ZmZiwgMHhhMDgyLCAweDQwMDAsIDB4MDIxMCwgMHgwODA0LCAweDMwMDcsIDB4N2MyOCwKLQkweDdkMmMsIDB4MDgwYywgMHg1MWUzLCAweGQyOGMsIDB4MTExOCwgMHgwODBjLCAweDUxOGMsIDB4MDAxMCwKLQkweDA4MGMsIDB4NTFiYywgMHgxNTE4LCAweDIwNjEsIDB4YmUwMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDAxNDgsIDB4NjAxMCwgMHhhMDZkLCAweDAxMzAsIDB4NjgzYywKLQkweGE0MDYsIDB4MTExOCwgMHg2ODQwLCAweGE1MDYsIDB4MDE1MCwgMHgwMTJlLCAweGFjZTAsIDB4MDAxOCwKLQkweDIwMDEsIDB4YjYxNywgMHgyMDA0LCAweGFjMDIsIDB4MWEwNCwgMHgzMDA0LCAweDBjMzAsIDB4MDgwYywKLQkweDk5ZTYsIDB4MDEyZSwgMHgwOTA0LCAweDMwMDQsIDB4MDgwNCwgMHgyZmRmLCAweGEwMGUsIDB4MjAwMSwKLQkweDAwMDUsIDB4MDgwYywgMHg1NTRkLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OWY4ZSwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwMTJlLCAweDA4MDQsIDB4MmZkZiwgMHg4MWZmLCAweDE5MDQsIDB4MzAwNCwKLQkweDA4MGMsIDB4M2VkMSwgMHgwOTA0LCAweDMwMDcsIDB4MDgwYywgMHg1MGUxLCAweDA5MDQsIDB4MzAwNCwKLQkweDA4MGMsIDB4NTFlZiwgMHgwOTA0LCAweDMwMDQsIDB4MDgwNCwgMHgyZmRmLCAweDgxZmYsIDB4MTkwNCwKLQkweDMwMDQsIDB4MDgwYywgMHgzZWUxLCAweDA5MDQsIDB4MzAwNywgMHgwODBjLCAweDUyNWIsIDB4MDkwNCwKLQkweDMwMDQsIDB4MjAxOSwgMHgwMDA1LCAweDc5MjQsIDB4MDgwYywgMHg1MjBhLCAweDA5MDQsIDB4MzAwNCwKLQkweDc4MjgsIDB4YTA4YSwgMHgxMDAwLCAweDFhMDQsIDB4MzAwNywgMHg4MDAzLCAweDgwMGIsIDB4ODEwYiwKLQkweGExMDgsIDB4MDgwYywgMHg2YTFhLCAweDA4MDQsIDB4MmZkZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDgxZmYsIDB4MDExOCwgMHgyMDA5LCAweDAwMDEsIDB4MDQ1MCwgMHgyMDI5LCAweDAwZmYsIDB4NjQ1MCwKLQkweDI0MDAsIDB4YTUwNiwgMHgwMWY4LCAweDI1MDgsIDB4MDgwYywgMHg1MDFiLCAweDExZDgsIDB4MDgwYywKLQkweDUyNWIsIDB4MTEyOCwgMHgyMDA5LCAweDAwMDIsIDB4NjJiNCwgMHgyNTE4LCAweDAwYzAsIDB4MjAxOSwKLQkweDAwMDQsIDB4YTAwZSwgMHgwODBjLCAweDUyMGEsIDB4MTExOCwgMHgyMDA5LCAweDAwMDYsIDB4MDA3OCwKLQkweDc4MjQsIDB4YTA4YSwgMHgxMDAwLCAweDEyNzAsIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4YTEwOCwKLQkweDA4MGMsIDB4NmExYSwgMHg4NTI5LCAweDFhZTAsIDB4MDEyZSwgMHgwODA0LCAweDJmZGYsIDB4MDEyZSwKLQkweDA4MDQsIDB4MzAwNCwgMHgwMTJlLCAweDA4MDQsIDB4MzAwNywgMHgwODBjLCAweDNlZDEsIDB4MDkwNCwKLQkweDMwMDcsIDB4MDgwYywgMHg1MTQ3LCAweDA4MGMsIDB4NTFlMywgMHgwODA0LCAweDJmZGYsIDB4ODFmZiwKLQkweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZDEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTEzOCwKLQkweDA4MGMsIDB4NTFlMywgMHgwODA0LCAweDJmZGYsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4MDgwYywKLQkweDNlZDEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTFiZSwgMHgwOTA0LCAweDMwMDQsIDB4MDgwYywKLQkweDRlZmYsIDB4MDgwYywgMHg1MTg1LCAweDA4MGMsIDB4NTFlMywgMHgwODA0LCAweDJmZGYsIDB4MDgwYywKLQkweDNlZDEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTBlMSwgMHgwOTA0LCAweDMwMDQsIDB4NjJhMCwKLQkweDIwMTksIDB4MDAwNSwgMHgwMGM2LCAweDA4MGMsIDB4NTIxYywgMHgyMDYxLCAweDAwMDAsIDB4MDgwYywKLQkweDZlNjcsIDB4MDA3NiwgMHgyMDM5LCAweDAwMDAsIDB4MDgwYywgMHg2ZDc0LCAweDIwMDksIDB4MDAwMCwKLQkweDA4MGMsIDB4YWYzZSwgMHgwMDdlLCAweDAwY2UsIDB4MDgwYywgMHg1MWUzLCAweDA4MDQsIDB4MmZkZiwKLQkweDA4MGMsIDB4M2VkMSwgMHgwOTA0LCAweDMwMDcsIDB4MDgwYywgMHg1MWUzLCAweDIyMDgsIDB4MDgwNCwKLQkweDJmZGYsIDB4MDE1NiwgMHgwMGQ2LCAweDAwZTYsIDB4MjA2OSwgMHhiNzE0LCAweDY4MTAsIDB4NjkxNCwKLQkweGExMGEsIDB4MTIxMCwgMHgyMDA5LCAweDAwMDAsIDB4NjgxNiwgMHgyMDExLCAweDAwMDAsIDB4MjAxOSwKLQkweDAwMDAsIDB4MjBhOSwgMHgwMDdlLCAweDIwNjksIDB4YjczNSwgMHgyZDA0LCAweGEwNzUsIDB4MDEzMCwKLQkweDcwNGMsIDB4MDA3MSwgMHhhMjEwLCAweDcwODAsIDB4MDA1OSwgMHhhMzE4LCAweDhkNjgsIDB4MWYwNCwKLQkweDMyNGQsIDB4MjMwMCwgMHhhMjE4LCAweDAwZWUsIDB4MDBkZSwgMHgwMTVlLCAweDA4MDQsIDB4MmZkZiwKLQkweDAwZjYsIDB4MDAxNiwgMHhhMDdkLCAweDAxNDAsIDB4MjAwMSwgMHgwMDAwLCAweDgwMDAsIDB4MmYwYywKLQkweDgxZmYsIDB4MDExMCwgMHgyMTc4LCAweDBjZDAsIDB4MDAxZSwgMHgwMGZlLCAweDAwMDUsIDB4MjA2OSwKLQkweGI3MTQsIDB4NjkxMCwgMHg2MmIwLCAweDA4MDQsIDB4MmZkZiwgMHg4MWZmLCAweDE5MDQsIDB4MzAwNCwKLQkweDYxNTAsIDB4YTE5MCwgMHgyZGY5LCAweDIyMTUsIDB4YTI5NCwgMHgwMGZmLCAweDYzNzAsIDB4ODNmZiwKLQkweDAxMDgsIDB4NjI3NCwgMHg2N2Q0LCAweGQ3OWMsIDB4MDExOCwgMHgyMDMxLCAweDAwMDEsIDB4MDA5MCwKLQkweGQ3YWMsIDB4MDExOCwgMHgyMDMxLCAweDAwMDMsIDB4MDA2OCwgMHhkN2E0LCAweDAxMTgsIDB4MjAzMSwKLQkweDAwMDIsIDB4MDA0MCwgMHgwODBjLCAweDViNDEsIDB4MTExOCwgMHgyMDMxLCAweDAwMDQsIDB4MDAxMCwKLQkweDIwMzEsIDB4MDAwMCwgMHg3ZTNhLCAweDdmM2UsIDB4MDgwNCwgMHgyZmRmLCAweDYxNDAsIDB4NjI0NCwKLQkweDIwMTksIDB4YjhiNiwgMHgyMzFjLCAweDA4MDQsIDB4MmZkZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYxMzQsIDB4YTAwNiwgMHgyMDEwLCAweDYzMzgsIDB4MDEyZSwgMHgwODA0LCAweDJmZGYsIDB4MDgwYywKLQkweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDYyNDQsIDB4NjMzOCwgMHgwODA0LCAweDJmZGYsIDB4NjE0MCwKLQkweDYyNDQsIDB4NzgyNCwgMHg2MDQyLCAweDdiMjgsIDB4NjM0NiwgMHgyMDY5LCAweGI2NTIsIDB4ODMxZiwKLQkweGEzMDUsIDB4NjgxNiwgMHg3ODJjLCAweDIwNjksIDB4YjhiNiwgMHgyZDFjLCAweDIwNmEsIDB4MDgwNCwKLQkweDJmZGYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzgyNCwgMHg2MDM2LCAweDc4MmMsIDB4NjAzYSwKLQkweDAxMmUsIDB4MDgwNCwgMHgyZmRmLCAweDc4MzgsIDB4YTAwNSwgMHgwMWE4LCAweDc4MjgsIDB4YTAyNSwKLQkweDA5MDQsIDB4MzAwNywgMHg3ODJjLCAweGEwMmQsIDB4MDkwNCwgMHgzMDA3LCAweGEwMGUsIDB4MDgwYywKLQkweDUwMWIsIDB4MTEyMCwgMHg2MjQ0LCAweDYzMzgsIDB4NjQ0NiwgMHg2NTNhLCAweGExODYsIDB4MDBmZiwKLQkweDAxOTAsIDB4ODEwOCwgMHgwY2EwLCAweDA4MGMsIDB4M2VlMSwgMHgwOTA0LCAweDMwMDcsIDB4NzgyOCwKLQkweGEwMGQsIDB4MDkwNCwgMHgzMDA3LCAweDc4MmMsIDB4YTAwNSwgMHgwOTA0LCAweDMwMDcsIDB4NjI0NCwKLQkweDYxNDYsIDB4NjMzOCwgMHg2MDNhLCAweDA4MDQsIDB4MmZkZiwgMHgyMDAxLCAweGI2MDAsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAwMywgMHgxOTA0LCAweDMwMDQsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4NzkyNCwKLQkweDgxMGYsIDB4YTE4YywgMHgwMGZmLCAweGExOTYsIDB4MDBmZiwgMHgxMTMwLCAweDIwMDEsIDB4YjYxNSwKLQkweDIwMDQsIDB4YTA4NSwgMHhmZjAwLCAweDAwNzgsIDB4YTE4MiwgMHgwMDdmLCAweDE2YTAsIDB4YTE4OCwKLQkweDJkZjksIDB4MjEwZCwgMHhhMThjLCAweDAwZmYsIDB4MjAwMSwgMHhiNjE1LCAweDIwMDQsIDB4YTExNiwKLQkweDA1NTAsIDB4ODEwZiwgMHhhMTA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwMDYsIDB4MDgwYywKLQkweDg2NGUsIDB4MDAwZSwgMHgwMWUwLCAweDYwMWEsIDB4NjAwYiwgMHhiYzA5LCAweDYwMWYsIDB4MDAwMSwKLQkweDA4MGMsIDB4M2ViYywgMHgwMWQ4LCAweDY4MzcsIDB4MDAwMCwgMHg3MDA3LCAweDAwMDMsIDB4NjgzMywKLQkweDAwMDAsIDB4NjgzOCwgMHhjMGZkLCAweDY4M2EsIDB4NzAxYiwgMHgzM2E1LCAweDJkMDAsIDB4NjAxMiwKLQkweDIwMDksIDB4MDAzMiwgMHgwODBjLCAweDg2ZDMsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDgwNCwgMHgzMDA0LCAweDAwY2UsIDB4MDgwNCwgMHgzMDA3LCAweDA4MGMsIDB4ODZhNCwKLQkweDBjYjAsIDB4MjAwMSwgMHhiNjAwLCAweDIwMDQsIDB4YTA4NiwgMHgwMDAzLCAweDE5MDQsIDB4MzAwNCwKLQkweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDc5MjQsIDB4ODEwZiwgMHhhMThjLCAweDAwZmYsIDB4YTE5NiwKLQkweDAwZmYsIDB4MTEzMCwgMHgyMDAxLCAweGI2MTUsIDB4MjAwNCwgMHhhMDg1LCAweGZmMDAsIDB4MDA3OCwKLQkweGExODIsIDB4MDA3ZiwgMHgxNmEwLCAweGExODgsIDB4MmRmOSwgMHgyMTBkLCAweGExOGMsIDB4MDBmZiwKLQkweDIwMDEsIDB4YjYxNSwgMHgyMDA0LCAweGExMTYsIDB4MDU1MCwgMHg4MTBmLCAweGExMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMDA2LCAweDA4MGMsIDB4ODY0ZSwgMHgwMDBlLCAweDAxZTAsIDB4NjAxYSwKLQkweDYwMGIsIDB4YmMwNSwgMHg2MDFmLCAweDAwMDEsIDB4MDgwYywgMHgzZWJjLCAweDAxZDgsIDB4NjgzNywKLQkweDAwMDAsIDB4NzAwNywgMHgwMDAzLCAweDY4MzMsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwKLQkweDcwMWIsIDB4MzNhNSwgMHgyZDAwLCAweDYwMTIsIDB4MjAwOSwgMHgwMDMyLCAweDA4MGMsIDB4ODZkMywKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDAxMmUsIDB4MDBjZSwgMHgwODA0LCAweDMwMDQsIDB4MDBjZSwKLQkweDA4MDQsIDB4MzAwNywgMHgwODBjLCAweDg2YTQsIDB4MGNiMCwgMHg2ODMwLCAweGEwODYsIDB4MDEwMCwKLQkweDA5MDQsIDB4MzAwNCwgMHgwODA0LCAweDJmZGYsIDB4MjA2MSwgMHhiOTc1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjAwMCwgMHhkMDg0LCAweDAxNzgsIDB4NjEwNCwgMHg2MjA4LCAweDJhNjAsIDB4NjA2OCwKLQkweDc4M2EsIDB4NjBiNCwgMHg3ODNlLCAweDYwYjAsIDB4MjAxOSwgMHgwMDcyLCAweDIwMWEsIDB4NjM0OCwKLQkweDAxMmUsIDB4MDgwNCwgMHgyZmRmLCAweGEwMGUsIDB4MjExMCwgMHgwYzgwLCAweDgxZmYsIDB4MTkwNCwKLQkweDMwMDQsIDB4MDgwYywgMHg1YjQxLCAweDA5MDQsIDB4MzAwNCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYyNDgsIDB4NjA2OCwgMHhhMjAyLCAweDAyNDgsIDB4YTA4NSwgMHgwMDAxLCAweDA4MGMsIDB4Mjg5YywKLQkweDA4MGMsIDB4NDY3MywgMHgwMTJlLCAweDA4MDQsIDB4MmZkZiwgMHgwMTJlLCAweDA4MDQsIDB4MzAwNywKLQkweDAwMDYsIDB4MDAxNiwgMHgwMGM2LCAweDAwZTYsIDB4MjAwMSwgMHhiOGMwLCAweDIwNzAsIDB4MjA2MSwKLQkweGI2NTIsIDB4NjAwOCwgMHgyMDcyLCAweDIwMDksIDB4MDAwMCwgMHgyMDExLCAweDEwMDAsIDB4MDgwYywKLQkweDZiYjIsIDB4NzIwNiwgMHgwMGVlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg3ODI0LCAweGEwODQsIDB4MDAwNywgMHgwMDAyLCAweDM0MDksIDB4MzQxMiwKLQkweDM0MTksIDB4MzQwNiwgMHgzNDA2LCAweDM0MDYsIDB4MzQwNiwgMHgzNDA2LCAweDAxMmUsIDB4MDgwNCwKLQkweDMwMDcsIDB4MjAwOSwgMHgwMTE0LCAweDIxMDQsIDB4YTA4NSwgMHgwODAwLCAweDIwMGEsIDB4MDgwYywKLQkweDM1ODQsIDB4MDA3MCwgMHgyMDA5LCAweDAxMGIsIDB4MjAwYiwgMHgwMDEwLCAweDA4MGMsIDB4MzU4NCwKLQkweDAwMzgsIDB4ODFmZiwgMHgwMTI4LCAweDAxMmUsIDB4MjAyMSwgMHg0MDBiLCAweDA4MDQsIDB4MmZlMSwKLQkweDAwODYsIDB4MDA5NiwgMHgwMGE2LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwKLQkweDA4MGMsIDB4MzNlMCwgMHgyMDA5LCAweDAxMDEsIDB4MjEwYywgMHgwMDE2LCAweDIwMDEsIDB4MDEzOCwKLQkweDIwMGMsIDB4MjAwMywgMHgwMDAxLCAweDAwMTYsIDB4MjAwMSwgMHgwMDdhLCAweDIwMzQsIDB4MjAwMSwKLQkweDAwN2IsIDB4MjAyYywgMHhhMDA2LCAweDIwNDgsIDB4MjA1MCwgMHgyMDU4LCAweDA4MGMsIDB4MzdjZiwKLQkweDA4MGMsIDB4MzczMywgMHhhMDNlLCAweDI3MjAsIDB4MDBmNiwgMHgwMGU2LCAweDAwYzYsIDB4MmQ2MCwKLQkweDIwNzEsIDB4Yjk0YiwgMHgyMDc5LCAweDAwMjAsIDB4MDBkNiwgMHgyMDY5LCAweDAwMDAsIDB4NjgyNCwKLQkweGQwYjQsIDB4MDE0MCwgMHgyMDAxLCAweDAwN2QsIDB4MjAwNCwgMHg3ODNlLCAweDIwMDEsIDB4MDA3YywKLQkweDIwMDQsIDB4NzgzYSwgMHgwMGRlLCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweDM2ZGYsIDB4MDgwYywKLQkweDM2ZGYsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDgwYywgMHgzNjJhLCAweDA4MGMsIDB4MzcwNywKLQkweDA4MGMsIDB4MzY4NCwgMHgwODBjLCAweDM1ZTksIDB4MDgwYywgMHgzNjFhLCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4NzgyNCwgMHhkMDk0LCAweDA1MzAsIDB4NzgxNCwgMHhhMDg0LCAweDAxODQsIDB4YTA4NSwKLQkweDAwMTAsIDB4NzgxNiwgMHgyMDc5LCAweDAxNDAsIDB4MDgwYywgMHgzNTYyLCAweDExMTAsIDB4MDBmZSwKLQkweDA0MzAsIDB4NzgwNCwgMHhkMGRjLCAweDBkYzAsIDB4MjA3OSwgMHgwMTAwLCAweDc4MjcsIDB4MDA4NiwKLQkweDc4MTQsIDB4YTA4NCwgMHgwMTg0LCAweGEwODUsIDB4MDAzMiwgMHg3ODE2LCAweDA4MGMsIDB4MzU2MiwKLQkweDExMTAsIDB4MDBmZSwgMHgwMGEwLCAweDc4MjQsIDB4ZDBiYywgMHgwZGMwLCAweDc4MjcsIDB4MDA4MCwKLQkweGEwMjYsIDB4N2MxNiwgMHg3ODI0LCAweGQwYWMsIDB4MDEzMCwgMHg4YjU4LCAweDA4MGMsIDB4MzU2YywKLQkweDAwZmUsIDB4MDgwNCwgMHgzNTJjLCAweDAwZmUsIDB4MDgwYywgMHgzNTYyLCAweDExNTAsIDB4ODk0OCwKLQkweDIwMDEsIDB4MDA3YSwgMHgyNjAyLCAweDIwMDEsIDB4MDA3YiwgMHgyNTAyLCAweDA4MGMsIDB4MzU2YywKLQkweDAwODgsIDB4ODdmZiwgMHgwMTQwLCAweDIwMDEsIDB4MDIwMSwgMHgyMDA0LCAweGEwMDUsIDB4MTkwNCwKLQkweDM0NjYsIDB4ODczOSwgMHgwMDM4LCAweDIwMDEsIDB4YjkyNCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMCwKLQkweDE5MDQsIDB4MzQ2NiwgMHgyMDAxLCAweDAwMzMsIDB4MjAwMywgMHgwMGY2LCAweDg2MzEsIDB4MTIwOCwKLQkweDg1MjksIDB4MjUwMCwgMHhhNjA1LCAweDA5MDQsIDB4MzUyYywgMHg3ODI0LCAweGQwYmMsIDB4MDEyOCwKLQkweDI5MDAsIDB4YWEwNSwgMHhhYjA1LCAweDE5MDQsIDB4MzUyYywgMHg2MDMzLCAweDAwMGQsIDB4MjAwMSwKLQkweDAwMzAsIDB4MjAwMywgMHgwMDA0LCAweDc4MjQsIDB4ZDBhYywgMHgxMTQ4LCAweDIwMDEsIDB4YjkyNCwKLQkweDIwMDMsIDB4MDAwMywgMHgyMDAxLCAweDAwMzAsIDB4MjAwMywgMHgwMDA5LCAweDAwNDAsIDB4NjAyNywKLQkweDAwMDEsIDB4MjAwMSwgMHgwMDc1LCAweDIwMDQsIDB4YTAwNSwgMHgwMTA4LCAweDYwMjYsIDB4MmMwMCwKLQkweDYwMWEsIDB4MjBlMSwgMHg5MDQwLCAweDJkMDAsIDB4NjgxYSwgMHg2ODMzLCAweDAwMGQsIDB4NzgyNCwKLQkweGQwYTQsIDB4MTE4MCwgMHg2ODI3LCAweDAwMDAsIDB4MDBjNiwgMHgyMGE5LCAweDAwMDQsIDB4MjA2MSwKLQkweDAwMjAsIDB4NjAwMywgMHgwMDA4LCAweDIwMDEsIDB4MDIwMywgMHgyMDA0LCAweDFmMDQsIDB4MzUwMSwKLQkweDAwY2UsIDB4MDA0MCwgMHg2ODI3LCAweDAwMDEsIDB4MjAwMSwgMHgwMDc0LCAweDIwMDQsIDB4YTAwNSwKLQkweDAxMDgsIDB4NjgyNiwgMHgwMGY2LCAweDAwYzYsIDB4MjA3OSwgMHgwMTAwLCAweDIwNjEsIDB4MDAyMCwKLQkweDc4MjcsIDB4MDAwMiwgMHgyMDAxLCAweDAwNzIsIDB4MjAwNCwgMHhhMDg0LCAweGZmZjgsIDB4NjAxYSwKLQkweDAwMDYsIDB4MjAwMSwgMHgwMDczLCAweDIwMDQsIDB4NjAxZSwgMHg3OGM2LCAweDAwMGUsIDB4NzhjYSwKLQkweDAwY2UsIDB4MDBmZSwgMHgwODA0LCAweDM0NDQsIDB4MjA2MSwgMHgwMTAwLCAweDYwMjcsIDB4MDAwMiwKLQkweDAwMWUsIDB4NjFlMiwgMHgwMDFlLCAweDYxMDYsIDB4NzgyNCwgMHhhMDg0LCAweDAwMDMsIDB4YTA4NiwKLQkweDAwMDIsIDB4MDE4OCwgMHgyMGUxLCAweDkwMjgsIDB4NjA1MCwgMHhhMDg0LCAweGY3ZWYsIDB4NjA1MiwKLQkweDYwMmYsIDB4MDAwMCwgMHg2MDJjLCAweGMwYWMsIDB4NjAyZSwgMHg2MDRiLCAweGY3ZjcsIDB4NjA0MywKLQkweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDI5MDgsIDB4MmExMCwgMHgyYjE4LCAweDJiMDAsIDB4YWEwNSwKLQkweGE5MDUsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMGJlLCAweDAwYWUsIDB4MDA5ZSwKLQkweDAwOGUsIDB4MTExOCwgMHgwMTJlLCAweDA4MDQsIDB4MmZkZiwgMHgwMTJlLCAweDIwMjEsIDB4NDAwYywKLQkweDA4MDQsIDB4MmZlMSwgMHhhMDg1LCAweDAwMDEsIDB4MWQwNCwgMHgzNTZiLCAweDIwOTEsIDB4NjAwMCwKLQkweDg0MjAsIDB4YTQ4NiwgMHgwMDY0LCAweDAwMDUsIDB4MjAwMSwgMHgwMTA1LCAweDIwMDMsIDB4MDAxMCwKLQkweDIwMDEsIDB4MDAzMCwgMHgyMDAzLCAweDAwMDQsIDB4MjAwMSwgMHgwMDIwLCAweDIwMDMsIDB4MDAwNCwKLQkweDIwMDEsIDB4YjkyNCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHhiOTRiLCAweDIwMDMsIDB4MDAwMCwKLQkweDIwZTEsIDB4ZjAwMCwgMHhhMDI2LCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MjAwMSwKLQkweGI2MTUsIDB4MjAwYywgMHg3OTMyLCAweDc5MzYsIDB4MDgwYywgMHgyODdjLCAweDc4NTAsIDB4YTA4NCwKLQkweDA5ODAsIDB4YTA4NSwgMHgwMDMwLCAweDc4NTIsIDB4MjAxOSwgMHgwMWY0LCAweDgzMTksIDB4MWRmMCwKLQkweGEwODQsIDB4MDk4MCwgMHg3ODUyLCAweDc4MmMsIDB4YzBhZCwgMHg3ODJlLCAweDIwYTksIDB4MDA0NiwKLQkweDFkMDQsIDB4MzVhMCwgMHgyMDkxLCAweDYwMDAsIDB4MWYwNCwgMHgzNWEwLCAweDc4NTAsIDB4YTA4NSwKLQkweDA0MDAsIDB4Nzg1MiwgMHgyMDAxLCAweDAwMDksIDB4MjAwNCwgMHhhMDg0LCAweDAwMDMsIDB4YTA4NiwKLQkweDAwMDEsIDB4MTExOCwgMHg3ODJjLCAweGMwYWMsIDB4NzgyZSwgMHg3ODRiLCAweGY3ZjcsIDB4Nzg0MywKLQkweDAwOTAsIDB4Nzg0MywgMHgwMDEwLCAweDIwYTksIDB4MDAwZSwgMHhlMDAwLCAweDFmMDQsIDB4MzViZCwKLQkweDc4NTAsIDB4YTA4NSwgMHgxNDAwLCAweDc4NTIsIDB4MjAxOSwgMHg2MWE4LCAweDc4NTQsIDB4ZTAwMCwKLQkweGUwMDAsIDB4ZDA4YywgMHgxMTEwLCAweDgzMTksIDB4MWRjOCwgMHg3ODI3LCAweDAwNDgsIDB4Nzg1MCwKLQkweGEwODUsIDB4MDQwMCwgMHg3ODUyLCAweDc4NDMsIDB4MDA0MCwgMHgyMDE5LCAweDAxZjQsIDB4ZTAwMCwKLQkweGUwMDAsIDB4ODMxOSwgMHgxZGUwLCAweDIwMDEsIDB4MDE0MCwgMHgyMDAzLCAweDAxMDAsIDB4NzgyNywKLQkweDAwMjAsIDB4Nzg0MywgMHgwMDAwLCAweDIwMDMsIDB4MDAwMCwgMHg3ODI3LCAweDAwNDgsIDB4MDBmZSwKLQkweDAwMDUsIDB4NzgyNCwgMHhkMGFjLCAweDExYzgsIDB4MDBmNiwgMHgwMGU2LCAweDIwNzEsIDB4YjkyNCwKLQkweDIwNzksIDB4MDAzMCwgMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwgMHhhMDA1LCAweDAxNjAsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgxMTQwLCAweDAwNTEsIDB4ZDBiYywgMHgwMTA4LCAweDg3MzgsIDB4NzAwMywKLQkweDAwMDMsIDB4NzgwMywgMHgwMDE5LCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDc4MGMsIDB4YTA4YywKLQkweDAwNzAsIDB4MDE3OCwgMHgyMDA5LCAweDAwN2EsIDB4MjYwYSwgMHgyMDA5LCAweDAwN2IsIDB4MjUwYSwKLQkweGQwYjQsIDB4MDEwOCwgMHg4YTUwLCAweGQwYWMsIDB4MDEwOCwgMHg4OTQ4LCAweGQwYTQsIDB4MDEwOCwKLQkweDhiNTgsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDIwMCwgMHg3ODFjLCAweGQwODQsIDB4MDE0MCwKLQkweDIwZTEsIDB4MDAwNywgMHgyMGUxLCAweDIwMDAsIDB4MjAwMSwgMHgwMjBhLCAweDIwMDQsIDB4MGNhOCwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDEwMCwgMHgyMDAxLCAweGI4YzEsIDB4MjAwNCwKLQkweDcwZTIsIDB4MjAwOSwgMHhiNjE1LCAweDIxMGMsIDB4NzE2ZSwgMHg3MDYzLCAweDAxMDAsIDB4NzE2NiwKLQkweDcxOWUsIDB4NzA2YiwgMHgwMDAwLCAweDcwNzMsIDB4MDgwOSwgMHg3MDc3LCAweDAwMDgsIDB4NzA3OCwKLQkweGEwODAsIDB4MDEwMCwgMHg3MDdhLCAweDcwODAsIDB4ODAwMCwgMHg3MDgyLCAweDcwODcsIDB4YWFhYSwKLQkweGEwMDYsIDB4NzA4YSwgMHg3MDhlLCAweDcwN2UsIDB4NzBkNiwgMHg3MGFiLCAweDAwMzYsIDB4NzBhZiwKLQkweDk1ZDUsIDB4NzAyNywgMHgwMDgwLCAweDcwMTQsIDB4YTA4NCwgMHgwMTg0LCAweGEwODUsIDB4MDAzMiwKLQkweDcwMTYsIDB4MDgwYywgMHgzNzA3LCAweDA4MGMsIDB4MzU2MiwgMHgxMTEwLCAweDg0MjEsIDB4MDAyOCwKLQkweDcwMjQsIDB4ZDBiYywgMHgwZGIwLCAweDcwMjcsIDB4MDA4MCwgMHgwMGY2LCAweDAwZTYsIDB4MjA3MSwKLQkweGI5MjQsIDB4MjA3OSwgMHgwMDMwLCAweDAwZDYsIDB4MjA2OSwgMHgwMDAwLCAweDY4MjQsIDB4ZDBiNCwKLQkweDAxMjAsIDB4NjgzYywgMHg3ODNlLCAweDY4MzgsIDB4NzgzYSwgMHgwMGRlLCAweDIwMTEsIDB4MDAxMSwKLQkweDA4MGMsIDB4MzZkZiwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHgzNmRmLCAweDAwZWUsIDB4MDBmZSwKLQkweDcwMTcsIDB4MDAwMCwgMHgwMGVlLCAweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDIwNzEsIDB4YjkyNCwKLQkweDIwNzksIDB4MDAzMCwgMHg3OTA0LCAweGQxZmMsIDB4MDkwNCwgMHgzNmRjLCAweDc4MDMsIDB4MDAwMiwKLQkweGEwMjYsIDB4ZDE5YywgMHgxOTA0LCAweDM2ZDgsIDB4NzAwMCwgMHgwMDAyLCAweDM2ZGMsIDB4MzY5YSwKLQkweDM2YmUsIDB4MzZkOCwgMHhkMWJjLCAweDExNTAsIDB4ZDFkYywgMHgxMTUwLCAweDgwMDEsIDB4NzAwMiwKLQkweDIwMTEsIDB4MDAwMSwgMHgwNGUxLCAweDA1YzAsIDB4MDRkMSwgMHgwNGIwLCAweDc4MGYsIDB4MDAwMCwKLQkweDc4MjAsIDB4NzkyNCwgMHg3ODAzLCAweDAwMDQsIDB4NzgyMiwgMHg3OTI2LCAweDIwMDEsIDB4MDIwMSwKLQkweDIwMGMsIDB4ODFmZiwgMHgwZGU4LCAweDA4MGMsIDB4MzYwNiwgMHgyMDA5LCAweDAwMDEsIDB4NzgwOCwKLQkweGQwZWMsIDB4MDExMCwgMHgyMDA5LCAweDAwMTEsIDB4NzkwMiwgMHgwMGYwLCAweDgwMDEsIDB4NzAwMiwKLQkweGExODQsIDB4MDg4MCwgMHgxMTM4LCAweDc4MDQsIDB4ZDBmYywgMHgxOTQwLCAweDIwMTEsIDB4MDAwMSwKLQkweDAwYjEsIDB4MDA5MCwgMHg2MDMwLCAweGEwOTIsIDB4MDAwNCwgMHhhMDg2LCAweDAwMDksIDB4MTEyMCwKLQkweDYwMDAsIDB4NjAxYSwgMHgyMDExLCAweDAwMjUsIDB4NjIzMiwgMHhkMWRjLCAweDE5ODgsIDB4MDg3MCwKLQkweDc4MDMsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAyNCwKLQkweGEwMDUsIDB4MDUyMCwgMHg4MDAxLCAweDYwMjYsIDB4NjAxOCwgMHg2MTMwLCAweGExNDAsIDB4MjgwNCwKLQkweDc4MzIsIDB4ODg0MCwgMHgyODA0LCAweDc4MzYsIDB4ODg0MCwgMHgyODA0LCAweDc4MjIsIDB4ODg0MCwKLQkweDI4MDQsIDB4NzgyNiwgMHg4ODQwLCAweDdhMDIsIDB4NzAwMCwgMHg4MDAwLCAweDcwMDIsIDB4NjAxOCwKLQkweGE4MDIsIDB4YTA4YSwgMHgwMDI5LCAweDExMzgsIDB4NjAxOCwgMHhhMDgwLCAweDAwMDEsIDB4MjAwNCwKLQkweDYwMWEsIDB4MjAwMSwgMHgwMDBkLCAweDYwMzIsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MDBjNiwgMHgyMDcxLCAweGI5NGIsIDB4MjA3OSwgMHgwMDIwLCAweDc5MDQsIDB4ZDFmYywKLQkweDAxZjAsIDB4NzgwMywgMHgwMDAyLCAweDJkNjAsIDB4YTAyNiwgMHg3MDAwLCAweDAwMDIsIDB4MzcyZiwKLQkweDM3MWEsIDB4MzcyNiwgMHg4MDAxLCAweDcwMDIsIDB4ZDE5YywgMHgxMTg4LCAweDIwMTEsIDB4MDAwMSwKLQkweDA4MGMsIDB4MzZkZiwgMHgwMTYwLCAweDA4MGMsIDB4MzZkZiwgMHgwMDQ4LCAweDgwMDEsIDB4NzAwMiwKLQkweDc4MDQsIDB4ZDBmYywgMHgxZDMwLCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweDM2ZGYsIDB4MDBjZSwKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgwMGM2LCAweDIwNjEsIDB4MDIwMCwKLQkweDIwMDEsIDB4YjhjMSwgMHgyMDA0LCAweDYwMWEsIDB4MjA2MSwgMHgwMTAwLCAweDIwMDEsIDB4YjhjMCwKLQkweDIwMDQsIDB4NjBjZSwgMHg2MDA0LCAweGMwYWMsIDB4YTA4NSwgMHgwMjAwLCAweDYwMDYsIDB4MjAwMSwKLQkweDAwNzQsIDB4MjAwNCwgMHhhMDA1LCAweDAxZjgsIDB4MjAzOCwgMHgyMDAxLCAweDAwNzYsIDB4MjAyNCwKLQkweDIwMDEsIDB4MDA3NywgMHgyMDFjLCAweDA4MGMsIDB4M2ViYywgMHg2ODMzLCAweDAwMGQsIDB4NmYyNiwKLQkweDJkMDAsIDB4NjgxYSwgMHhhNzhhLCAweDAwMDcsIDB4MDIyMCwgMHgyMTM4LCAweDIwMDksIDB4MDAwNywKLQkweDAwMTAsIDB4MjcwOCwgMHhhMDNlLCAweDY4MTgsIDB4YTA4MCwgMHgwMDBkLCAweDA0YjEsIDB4MWQ5MCwKLQkweDJkMDAsIDB4NjgxYSwgMHgwMDg4LCAweDA4MGMsIDB4M2ViYywgMHg2ODMzLCAweDAwMGQsIDB4MjA3MCwKLQkweDY4MjcsIDB4MDAwMSwgMHgyZDAwLCAweDY4MWEsIDB4MjAwMSwgMHgwMDc2LCAweDIwMDQsIDB4MjA3MiwKLQkweDIwMDEsIDB4MDA3NywgMHgyMDA0LCAweDcwMDYsIDB4MjA2MSwgMHgwMDIwLCAweDIwNzksIDB4MDEwMCwKLQkweDIwMDEsIDB4YjhjMCwgMHgyMDA0LCAweDYwMTIsIDB4MjBlMSwgMHg5MDQwLCAweDIwMDEsIDB4MDA3MiwKLQkweDIwMDQsIDB4YTA4NCwgMHhmZmY4LCAweDcwMGEsIDB4NjAxYSwgMHgwMDA2LCAweDIwMDEsIDB4MDA3MywKLQkweDIwMDQsIDB4NzAwZSwgMHg2MDFlLCAweDc4YzYsIDB4MDAwZSwgMHg3OGNhLCAweGEwMDYsIDB4NjAzYSwKLQkweDYwM2UsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDAxMCwKLQkweDIwYTAsIDB4MjA5OSwgMHgwMDE0LCAweDcwMDMsIDB4MDAyNiwgMHg3NDMyLCAweDczMzYsIDB4YTAwNiwKLQkweDcwM2EsIDB4NzAzZSwgMHg4MTBiLCAweDgxMGIsIDB4MjFhOCwgMHg4MTBiLCAweDcxMjIsIDB4NzAwMywKLQkweDAwNDEsIDB4NzAwNCwgMHhkMGZjLCAweDBkZTgsIDB4NzAwMywgMHgwMDAyLCAweDcwMDMsIDB4MDA0MCwKLQkweDUzYTUsIDB4NzQzMCwgMHg3MzM0LCAweDg3ZmYsIDB4MDE4MCwgMHgwMGM2LCAweDAwZDYsIDB4MmQ2MCwKLQkweDAwYzYsIDB4MDgwYywgMHgzZWJjLCAweDAwY2UsIDB4NjAxOCwgMHgyMDcwLCAweDJkMDAsIDB4NzAwNiwKLQkweDYwMWEsIDB4MDBkZSwgMHgwMGNlLCAweGEwODUsIDB4MDAwMSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwMDEsIDB4MDA3NSwgMHgyMDA0LCAweGEwMDUsIDB4MDUwOCwgMHgyMDM4LCAweDIwMDEsIDB4MDA3OCwKLQkweDIwMjQsIDB4MjAwMSwgMHgwMDc5LCAweDIwMWMsIDB4MDgwYywgMHgzZWJjLCAweDJkNjAsIDB4NjgzMywKLQkweDAwMGQsIDB4NmYyNiwgMHgyZDAwLCAweDY4MWEsIDB4YTc4YSwgMHgwMDA3LCAweDAyMjAsIDB4MjEzOCwKLQkweDIwMDksIDB4MDAwNywgMHgwMDEwLCAweDI3MDgsIDB4YTAzZSwgMHg2ODE4LCAweGEwODAsIDB4MDAwZCwKLQkweDA4MGMsIDB4Mzc5ZCwgMHgxZDg4LCAweDJkMDAsIDB4NjgxYSwgMHgwMGUwLCAweDA4MGMsIDB4M2ViYywKLQkweDJkNjAsIDB4NjAzMywgMHgwMDBkLCAweDIwNzAsIDB4NjAyNywgMHgwMDAxLCAweDJjMDAsIDB4NjAxYSwKLQkweDIwMDEsIDB4MDA3OCwgMHgyMDA0LCAweDIwNzIsIDB4MjAwMSwgMHgwMDc5LCAweDIwMDQsIDB4NzAwNiwKLQkweDIwMDEsIDB4MDA3MiwgMHgyMDA0LCAweGEwODQsIDB4ZmZmOCwgMHg3MDBhLCAweDIwMDEsIDB4MDA3MywKLQkweDIwMDQsIDB4NzAwZSwgMHgyMDAxLCAweDAwMzAsIDB4MjAwMywgMHgwMDA0LCAweDc4MjQsIDB4ZDBhYywKLQkweDExNzgsIDB4MjAwMSwgMHgwMTAxLCAweDIwMGMsIDB4YzFlZCwgMHgyMTAyLCAweDYwMjcsIDB4MDAwMCwKLQkweDIwMDEsIDB4YjkyNCwgMHgyMDAzLCAweDAwMDMsIDB4MjAwMSwgMHgwMDMwLCAweDIwMDMsIDB4MDAwOSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwODA0LCAweDJmZGYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjBhOSwKLQkweDAwMTIsIDB4MjAwMSwgMHhiNjQwLCAweDIwYTAsIDB4YTAwNiwgMHg0MGE0LCAweDAxMmUsIDB4MDgwNCwKLQkweDJmZGYsIDB4N2QzOCwgMHg3YzNjLCAweDA4MDQsIDB4MzA4NiwgMHgwODBjLCAweDNlYmMsIDB4MDkwNCwKLQkweDMwMDQsIDB4MDgwYywgMHg1YjQxLCAweDAxMTAsIDB4MDgwYywgMHg0YzUyLCAweDIwMDksIDB4MDAxYywKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwYywgMHgzZWZkLCAweDcwMWIsIDB4Mzg1MSwKLQkweDAwMDUsIDB4YWRlOCwgMHgwMDBkLCAweDY4MDAsIDB4YTAwNSwgMHgwOTA0LCAweDMwMDcsIDB4NjgwNCwKLQkweGQwYWMsIDB4MDExOCwgMHhkMGE0LCAweDA5MDQsIDB4MzAwNywgMHhkMDk0LCAweDAwYzYsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjEwNCwgMHgwMTM4LCAweDYyMDAsIDB4YTI5MiwgMHgwMDA1LCAweDAyMTgsIDB4YTE4YywKLQkweGZmZGYsIDB4MDAxMCwgMHhhMThkLCAweDAwMjAsIDB4NjEwNiwgMHgwMGNlLCAweGQwOGMsIDB4MDBjNiwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MTA0LCAweDAxMTgsIDB4YTE4ZCwgMHgwMDEwLCAweDAwMTAsIDB4YTE4YywKLQkweGZmZWYsIDB4NjEwNiwgMHgwMGNlLCAweDIwMDksIDB4MDEwMCwgMHgyMTBjLCAweGExOGEsIDB4MDAwMiwKLQkweDAyNjgsIDB4ZDA4NCwgMHgwMTU4LCAweDZhMjgsIDB4YTI4YSwgMHgwMDdmLCAweDFhMDQsIDB4MzAwNywKLQkweGEyODgsIDB4MmRmOSwgMHgyMTBkLCAweGExOGMsIDB4MDBmZiwgMHg2MTVhLCAweGQwZGMsIDB4MDEzMCwKLQkweDY4MjgsIDB4YTA4YSwgMHgwMDdmLCAweDFhMDQsIDB4MzAwNywgMHg2MDUyLCAweDY4MDgsIDB4YTA4YSwKLQkweDAxMDAsIDB4MGEwNCwgMHgzMDA3LCAweGEwOGEsIDB4MDg0MSwgMHgxYTA0LCAweDMwMDcsIDB4YTA4NCwKLQkweDAwMDcsIDB4MTkwNCwgMHgzMDA3LCAweDY4MGMsIDB4YTAwNSwgMHgwOTA0LCAweDMwMDcsIDB4NjgxMCwKLQkweGEwMDUsIDB4MDkwNCwgMHgzMDA3LCAweDY4NDgsIDB4Njk0MCwgMHhhMTBhLCAweDFhMDQsIDB4MzAwNywKLQkweDgwMDEsIDB4MDkwNCwgMHgzMDA3LCAweDY4NGMsIDB4Njk0NCwgMHhhMTBhLCAweDFhMDQsIDB4MzAwNywKLQkweDgwMDEsIDB4MDkwNCwgMHgzMDA3LCAweDY4MDQsIDB4ZDBmYywgMHgwNTYwLCAweDA4MGMsIDB4M2ViYywKLQkweDA5MDQsIDB4MzAwNCwgMHgyMDA5LCAweDAwMTQsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwKLQkweGEyOTAsIDB4MDAzOCwgMHhhMzk5LCAweDAwMDAsIDB4MDgwYywgMHgzZWZkLCAweDcwMWIsIDB4MzhkMSwKLQkweDAwMDUsIDB4YWRlOCwgMHgwMDBkLCAweDIwYTksIDB4MDAxNCwgMHgyZDk4LCAweDIwNjksIDB4YjY2ZSwKLQkweDJkYTAsIDB4NTNhMywgMHg3MDEwLCAweGEwZTgsIDB4MDAwZCwgMHgyMDAxLCAweGI2NzIsIDB4MjAwYywKLQkweGQxZTQsIDB4MDE0MCwgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwgMHg2MDA0LCAweGEwODUsIDB4MGIwMCwKLQkweDYwMDYsIDB4MDBjZSwgMHgyMDA5LCAweGI4YjEsIDB4MjAwYiwgMHgwMDAwLCAweDIwMDEsIDB4YjY3NCwKLQkweDIwMDQsIDB4ZDBhYywgMHgwMTU4LCAweDc4MjQsIDB4MjAwYSwgMHgyMDA5LCAweDAxN2YsIDB4MjAwYSwKLQkweDMyMDAsIDB4YTA4NCwgMHgwMDNmLCAweGEwODUsIDB4MzAyMCwgMHgyMDkwLCAweDIwYTksIDB4MDAxYywKLQkweDJkOTgsIDB4MjA2OSwgMHhiNjUyLCAweDJkYTAsIDB4NTNhMywgMHg2ODE0LCAweGEwOGMsIDB4MDBmZiwKLQkweDYxNDIsIDB4ODAwNywgMHhhMDg0LCAweDAwZmYsIDB4NjA0NiwgMHgwODBjLCAweDVlMTcsIDB4MDgwYywKLQkweDUzZGUsIDB4MDgwYywgMHg1NDQ3LCAweDYwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDE5MDQsIDB4MzljYywKLQkweDY4MDgsIDB4NjAyYSwgMHgwODBjLCAweDI0YTUsIDB4MDAwNiwgMHgyMDAxLCAweDAxMDAsIDB4MjAwNCwKLQkweGEwODIsIDB4MDAwNSwgMHgwMDBlLCAweDAyNjgsIDB4MjAwOSwgMHgwMTcwLCAweDIwMGIsIDB4MDA4MCwKLQkweGUwMDAsIDB4ZTAwMCwgMHgyMDBiLCAweDAwMDAsIDB4MDAzNiwgMHg2YjA4LCAweDA4MGMsIDB4MjhkNywKLQkweDAwM2UsIDB4NjgxOCwgMHg2OTFjLCAweDZhMjAsIDB4NmIyNCwgMHg4MDA3LCAweDgxMGYsIDB4ODIxNywKLQkweDgzMWYsIDB4NjAxNiwgMHg2MTFhLCAweDYyMWUsIDB4NjMyMiwgMHg2YzA0LCAweGQ0ZjQsIDB4MDE0OCwKLQkweDY4MzAsIDB4NjkzNCwgMHg2YTM4LCAweDZiM2MsIDB4ODAwNywgMHg4MTBmLCAweDgyMTcsIDB4ODMxZiwKLQkweDAwMTAsIDB4YTA4NCwgMHhmMGZmLCAweDYwMDYsIDB4NjEwYSwgMHg2MjBlLCAweDYzMTIsIDB4ODAwNywKLQkweDgxMGYsIDB4ODIxNywgMHg4MzFmLCAweDIwYTksIDB4MDAwNCwgMHgyMGExLCAweGI4YzcsIDB4NDBhMSwKLQkweDA4MGMsIDB4NmFkYSwgMHg2OTA0LCAweGQxZmMsIDB4MDUyMCwgMHgwMGM2LCAweDIwMDksIDB4MDAwMCwKLQkweDIwYTksIDB4MDAwMSwgMHg2YjcwLCAweGQzODQsIDB4MDFjOCwgMHgwMDIwLCAweDgzOWQsIDB4MTJiMCwKLQkweDM1MDgsIDB4ODEwOSwgMHgwODBjLCAweDYzY2UsIDB4Njg3OCwgMHg2MDE2LCAweDY4NzQsIDB4MjAwOCwKLQkweGEwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDYwMGEsIDB4YTE4NCwgMHgwMGZmLCAweDYwMDYsIDB4ODEwOCwKLQkweDExMTgsIDB4NjAwMywgMHgwMDAzLCAweDAwMTAsIDB4NjAwMywgMHgwMDAxLCAweDFmMDQsIDB4Mzk2NiwKLQkweDAwY2UsIDB4MjA2OSwgMHhiNjUyLCAweDIwMDEsIDB4Yjg5ZSwgMHg2YTgwLCAweGEyOTQsIDB4MDAzMCwKLQkweGEyOGUsIDB4MDAwMCwgMHgwMTcwLCAweGEyOGUsIDB4MDAxMCwgMHgwMTE4LCAweGEyOGUsIDB4MDAyMCwKLQkweDAxNDAsIDB4MjAwMywgMHhhYWFhLCAweDA4MGMsIDB4MjkyMCwgMHgyMDAxLCAweGI4OGYsIDB4MjEwMiwKLQkweDAwMDgsIDB4MjEwMiwgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwgMHg2MDJmLCAweDAwNDAsIDB4NjAyZiwKLQkweDAwMDAsIDB4MDBjZSwgMHgwODBjLCAweDViNDEsIDB4MDEyOCwgMHgwODBjLCAweDQxMTYsIDB4MDExMCwKLQkweDA4MGMsIDB4Mjg5YywgMHg2MGM4LCAweGEwMDUsIDB4MDFkMCwgMHg2MDAzLCAweDAwMDEsIDB4MjAwOSwKLQkweDM5YjIsIDB4MDBlMCwgMHgwODBjLCAweDViNDEsIDB4MTE3OCwgMHgyMDExLCAweDVhMTQsIDB4MDgwYywKLQkweDZhMGUsIDB4MjAxMSwgMHg1YTA3LCAweDA4MGMsIDB4NmFjZSwgMHgyMDAxLCAweGI4OWYsIDB4MjAwMywKLQkweDAwMDAsIDB4MDgwYywgMHg1YTc5LCAweDAwNDAsIDB4MDgwYywgMHg0YjdiLCAweDAwMjgsIDB4NjAwMywKLQkweDAwMDQsIDB4MjAwOSwgMHgzOWNjLCAweDAwMTAsIDB4MDgwNCwgMHgyZmRmLCAweDIwMDEsIDB4MDEwMCwKLQkweDIwMDQsIDB4YTA4MiwgMHgwMDA1LCAweDAyNTgsIDB4MjAwMSwgMHgwMTcwLCAweDIwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDRjLCAweDExMTgsIDB4MjA5MSwgMHgzMDlkLCAweDA4MTcsIDB4MjA5MSwKLQkweDMwMWQsIDB4MDgxNywgMHg2MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwOTA0LCAweDMwMDQsIDB4MjA2OSwKLQkweGI2NTIsIDB4NzgzMCwgMHg2ODQyLCAweDc4MzQsIDB4Njg0NiwgMHg2ODA0LCAweGQwZmMsIDB4MDExOCwKLQkweDIwMDksIDB4MDAzMCwgMHgwMDEwLCAweDIwMDksIDB4MDAxYywgMHgyZDAwLCAweDdhMmMsIDB4N2IyOCwKLQkweDdjM2MsIDB4N2QzOCwgMHgwODA0LCAweDNmMDAsIDB4YTAwNiwgMHgwODBjLCAweDI4OWMsIDB4ODFmZiwKLQkweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDViNDEsIDB4MTE3OCwgMHgyMDAxLCAweGI4OWYsIDB4MjAwMywKLQkweDAwMDEsIDB4MjAwMSwgMHhiNjAwLCAweDIwMDMsIDB4MDAwMSwgMHhhMDg1LCAweDAwMDEsIDB4MDgwYywKLQkweDViODUsIDB4MDgwYywgMHg1YTc5LCAweDAwODAsIDB4MDAxNiwgMHgyMDA5LCAweGZmZmYsIDB4ODEwOSwKLQkweDAxMzAsIDB4MjAwMSwgMHhiOGUyLCAweDIwMDQsIDB4YTA4NiwgMHgwMDAwLCAweDFkYzAsIDB4MDAxZSwKLQkweDA4MGMsIDB4NGM1MiwgMHgwODBjLCAweDRiN2IsIDB4MDgwNCwgMHgyZmRmLCAweDgxZmYsIDB4MTkwNCwKLQkweDMwMDQsIDB4MDgwYywgMHg1YjQxLCAweDExMTAsIDB4MDgwNCwgMHgzMDA0LCAweDYxODgsIDB4ODFmZiwKLQkweDAxOTgsIDB4NzAzZiwgMHgwMDAwLCAweDIwMDEsIDB4YmRjMCwgMHgyMDA5LCAweDAwNDAsIDB4N2EyYywKLQkweDdiMjgsIDB4N2MzYywgMHg3ZDM4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4M2YwMCwKLQkweDcwMWIsIDB4MmZkZCwgMHgwMTJlLCAweDAwMDUsIDB4NzAzZiwgMHgwMDAxLCAweDAwZDYsIDB4MjA2OSwKLQkweGJkYzAsIDB4MjBhOSwgMHgwMDQwLCAweDIwYTEsIDB4YmRjMCwgMHgyMDE5LCAweGZmZmYsIDB4NDNhNCwKLQkweDY1NTAsIDB4YTU4OCwgMHgyZGY5LCAweDIxMGQsIDB4YTE4YywgMHgwMGZmLCAweDIxNmEsIDB4YTAwZSwKLQkweDIwMTEsIDB4MDAwMiwgMHgyMTAwLCAweGE1MDYsIDB4MDFhOCwgMHgwODBjLCAweDUwMWIsIDB4MTE5MCwKLQkweDYwMTQsIDB4ODIxYywgMHgwMjM4LCAweGEzOTgsIDB4YmRjMCwgMHhhMDg1LCAweGZmMDAsIDB4ODAwNywKLQkweDIwMWEsIDB4MDAzOCwgMHhhMzk4LCAweGJkYzAsIDB4MjMyNCwgMHhhNGE0LCAweGZmMDAsIDB4YTQwNSwKLQkweDIwMWEsIDB4ODIxMCwgMHg4MTA4LCAweGExODIsIDB4MDA4MCwgMHgxMjA4LCAweDBjMTgsIDB4ODIwMSwKLQkweDgwMDcsIDB4MmQwYywgMHhhMTA1LCAweDIwNmEsIDB4MDBkZSwgMHgyMGE5LCAweDAwNDAsIDB4MjBhMSwKLQkweGJkYzAsIDB4MjA5OSwgMHhiZGMwLCAweDA4MGMsIDB4NGJmMSwgMHgwODA0LCAweDNhMzMsIDB4MDgwYywKLQkweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDAwYzYsIDB4MDgwYywgMHgzZWJjLCAweDAwY2UsIDB4MTEyMCwKLQkweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDMwMDQsIDB4MjAwMSwgMHhiNjUzLCAweDIwMDQsIDB4ZDBiNCwKLQkweDA1NTAsIDB4NzgyNCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4ZSwgMHg3ZTAwLCAweDA1MjAsIDB4YTA4ZSwKLQkweDdmMDAsIDB4MDUwOCwgMHhhMDhlLCAweDgwMDAsIDB4MDFmMCwgMHg2MDAwLCAweGQwOGMsIDB4MTFkOCwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgxMWE4LCAweDY4MzcsIDB4MDAwMCwKLQkweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDA4MGMsIDB4OWU5NiwgMHgxMTIwLCAweDIwMDksIDB4MDAwMywKLQkweDA4MDQsIDB4MzAwNCwgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHgzYWJmLCAweDAwMDUsIDB4MDgwYywKLQkweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDIwYTksIDB4MDAyYiwgMHgyYzk4LCAweGFkZTgsIDB4MDAwMiwKLQkweDJkYTAsIDB4NTNhMywgMHgyMGE5LCAweDAwMDQsIDB4YWM4MCwgMHgwMDA2LCAweDIwOTgsIDB4YWQ4MCwKLQkweDAwMDYsIDB4MjBhMCwgMHgwODBjLCAweDRiZjEsIDB4MjBhOSwgMHgwMDA0LCAweGFjODAsIDB4MDAwYSwKLQkweDIwOTgsIDB4YWQ4MCwgMHgwMDBhLCAweDIwYTAsIDB4MDgwYywgMHg0YmYxLCAweDJkMDAsIDB4MjAwOSwKLQkweDAwMmIsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwgMHgwODA0LCAweDNmMDAsIDB4ODFmZiwKLQkweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZDEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTFmOCwKLQkweDA4MDQsIDB4MmZkZiwgMHg4MWZmLCAweDE5MDQsIDB4MzAwNCwgMHg3ODI4LCAweGEwOGEsIDB4MTAwMCwKLQkweDFhMDQsIDB4MzAwNywgMHgwODBjLCAweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTI1YiwKLQkweDA5MDQsIDB4MzAwNCwgMHgyMDE5LCAweDAwMDQsIDB4YTAwZSwgMHgwODBjLCAweDUyMGEsIDB4NzkyNCwKLQkweDgxMGYsIDB4N2EyOCwgMHgwMDExLCAweDA4MDQsIDB4MmZkZiwgMHhhMTg2LCAweDAwZmYsIDB4MDExMCwKLQkweDAwNzEsIDB4MDA2MCwgMHgyMDI5LCAweDAwN2UsIDB4MjA2MSwgMHhiNjAwLCAweDY0NTAsIDB4MjQwMCwKLQkweGE1MDYsIDB4MDExMCwgMHgyNTA4LCAweDAwMTksIDB4ODUyOSwgMHgxZWM4LCAweDAwMDUsIDB4MDgwYywKLQkweDUwMWIsIDB4MTEzOCwgMHgyMjAwLCAweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweGExMDgsIDB4MDgwYywKLQkweDZhMWEsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZDEsIDB4MDkwNCwKLQkweDMwMDcsIDB4MDgwYywgMHg1MGUxLCAweDA5MDQsIDB4MzAwNCwgMHgwODBjLCAweDUyMDEsIDB4MDgwNCwKLQkweDJmZGYsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4MDgwYywgMHgzZWQxLCAweDA5MDQsIDB4MzAwNywKLQkweDA4MGMsIDB4NTBlMSwgMHgwOTA0LCAweDMwMDQsIDB4MDgwYywgMHg1MWVmLCAweDA4MDQsIDB4MmZkZiwKLQkweDYxMDAsIDB4MDgwNCwgMHgyZmRmLCAweDA4MGMsIDB4M2VlMSwgMHgwOTA0LCAweDMwMDcsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MTkwNCwgMHgzMDA0LCAweDAwZDYsIDB4YWNlOCwKLQkweDAwMGEsIDB4NzkyNCwgMHhkMTg0LCAweDAxMTAsIDB4YWNlOCwgMHgwMDA2LCAweDY4MGMsIDB4ODAwNywKLQkweDc4M2UsIDB4NjgwOCwgMHg4MDA3LCAweDc4M2EsIDB4NmIwNCwgMHg4MzFmLCAweDZhMDAsIDB4ODIxNywKLQkweDAwZGUsIDB4NjEwMCwgMHhhMThjLCAweDAyMDAsIDB4MDgwNCwgMHgyZmRmLCAweDc4MjQsIDB4YTA5YywKLQkweDAwMDMsIDB4ZDBiNCwgMHgxMTYwLCAweGEzOWEsIDB4MDAwMywgMHgxYTA0LCAweDMwMDQsIDB4NjI1MCwKLQkweGEyOTQsIDB4MDBmZiwgMHhhMDg0LCAweGZmMDAsIDB4ODAwNywgMHhhMjA2LCAweDExNTAsIDB4MjAwMSwKLQkweGI2NDAsIDB4MjAwOSwgMHgwMDBjLCAweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwNCwKLQkweDNmMDAsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4MDgwYywgMHgzZWUxLCAweDA5MDQsIDB4MzAwNywKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgxOTA0LCAweDMwMDQsIDB4MDBjNiwKLQkweDA4MGMsIDB4M2ViYywgMHgwMGNlLCAweDA5MDQsIDB4MzAwNCwgMHg2ODM3LCAweDAwMDAsIDB4NjgzOCwKLQkweGMwZmQsIDB4NjgzYSwgMHgwODBjLCAweDllNDIsIDB4MDkwNCwgMHgzMDA0LCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWIsIDB4M2JhYiwgMHgwMDA1LCAweDY4MzAsIDB4YTA4NiwgMHgwMTAwLCAweDA5MDQsIDB4MzAwNCwKLQkweGFkODAsIDB4MDAwZSwgMHgyMDA5LCAweDAwMGMsIDB4N2EyYywgMHg3YjI4LCAweDdjM2MsIDB4N2QzOCwKLQkweDA4MDQsIDB4M2YwMCwgMHhhMDA2LCAweDA4MGMsIDB4Mjg5YywgMHg3ODI0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDBmZiwgMHgwMTE4LCAweDgxZmYsIDB4MTkwNCwgMHgzMDA0LCAweDA4MGMsIDB4NWI0MSwKLQkweDAxMTAsIDB4MDgwYywgMHg0YzUyLCAweDc4MjgsIDB4YTA4YSwgMHgxMDAwLCAweDFhMDQsIDB4MzAwNywKLQkweDc5MjQsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4NiwgMHgwMGZmLCAweDAxMzgsIDB4YTE4MiwKLQkweDAwN2YsIDB4MWEwNCwgMHgzMDA3LCAweDIxMDAsIDB4MDgwYywgMHgyODY2LCAweDAwMjYsIDB4MDBjNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjEsIDB4YjhmNCwgMHg2MDFiLCAweDAwMDAsIDB4NjAxZiwKLQkweDAwMDAsIDB4MDgwYywgMHg1YjQxLCAweDExNzgsIDB4MjAwMSwgMHhiODlmLCAweDIwMDMsIDB4MDAwMSwKLQkweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDEsIDB4YTA4NSwgMHgwMDAxLCAweDA4MGMsIDB4NWI4NSwKLQkweDA4MGMsIDB4NWE3OSwgMHgwNDQwLCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweDgwZmMsIDB4MjAxMSwKLQkweDAwMDIsIDB4MDgwYywgMHg4MTA2LCAweDA4MGMsIDB4N2ZlMCwgMHgwMDM2LCAweDIwMTksIDB4MDAwMCwKLQkweDA4MGMsIDB4ODA2YiwgMHgwMDNlLCAweDIwNjEsIDB4MDEwMCwgMHgyMDAxLCAweGI2MTUsIDB4MjAwNCwKLQkweGEwODQsIDB4MDBmZiwgMHg4MTBmLCAweGExMDUsIDB4NjA0YSwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywKLQkweDAwMTAsIDB4MjAwOSwgMHhiOGJmLCAweDIwMGIsIDB4MDAwMCwgMHgyMDA5LCAweDAwMmQsIDB4MjAxMSwKLQkweDRiYjQsIDB4MDgwYywgMHg2YTk0LCAweDc5MjQsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4MDgwYywKLQkweDViNDEsIDB4MTExMCwgMHgyMDA5LCAweDAwZmYsIDB4N2EyOCwgMHgwODBjLCAweDNiMGQsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDAyZSwgMHgwODA0LCAweDJmZGYsIDB4NzkyNCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwKLQkweDAwYzYsIDB4MDgwYywgMHg0ZmJmLCAweDJjMDgsIDB4MDBjZSwgMHgxOTA0LCAweDMwMDcsIDB4MDgwNCwKLQkweDJmZGYsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksIDB4MDAwMSwgMHgwODA0LCAweDMwMDQsIDB4NjBkNCwKLQkweGQwYWMsIDB4MTEzMCwgMHhkMDljLCAweDExMjAsIDB4MjAwOSwgMHgwMDA1LCAweDA4MDQsIDB4MzAwNCwKLQkweDA4MGMsIDB4M2ViYywgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDMwMDQsIDB4NzkyNCwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwYywgMHgzZWZkLCAweDcwMWIsIDB4M2M2MSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDgwLCAweDA4MGMsIDB4NTAxYiwgMHgxMTMwLCAweDYwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDAxMjAsIDB4MjAyMSwgMHg0MDBhLCAweDA4MDQsIDB4MmZlMSwKLQkweDAwZDYsIDB4YWRlOCwgMHgwMDBkLCAweDY5MDAsIDB4NmEwOCwgMHg2YjBjLCAweDZjMTAsIDB4NmQxNCwKLQkweDZlMTgsIDB4NjgyMCwgMHhhMGJlLCAweDAxMDAsIDB4MDkwNCwgMHgzY2Q4LCAweGEwYmUsIDB4MDExMiwKLQkweDA5MDQsIDB4M2NkOCwgMHhhMGJlLCAweDAxMTMsIDB4MDkwNCwgMHgzY2Q4LCAweGEwYmUsIDB4MDExNCwKLQkweDA5MDQsIDB4M2NkOCwgMHhhMGJlLCAweDAxMTcsIDB4MDkwNCwgMHgzY2Q4LCAweGEwYmUsIDB4MDExYSwKLQkweDA5MDQsIDB4M2NkOCwgMHhhMGJlLCAweDAxMWMsIDB4MDkwNCwgMHgzY2Q4LCAweGEwYmUsIDB4MDEyMSwKLQkweDA1YjAsIDB4YTBiZSwgMHgwMTMxLCAweDA1OTgsIDB4YTBiZSwgMHgwMTcxLCAweDA1YzgsIDB4YTBiZSwKLQkweDAxNzMsIDB4MDViMCwgMHhhMGJlLCAweDAxYTEsIDB4MTEyMCwgMHg2ODMwLCAweDgwMDcsIDB4NjgzMiwKLQkweDA0YTgsIDB4YTBiZSwgMHgwMjEyLCAweDA1NDAsIDB4YTBiZSwgMHgwMjEzLCAweDA1MjgsIDB4YTBiZSwKLQkweDAyMTQsIDB4MDFiMCwgMHhhMGJlLCAweDAyMTcsIDB4MDE2OCwgMHhhMGJlLCAweDAyMWEsIDB4MTEyMCwKLQkweDY4MzgsIDB4ODAwNywgMHg2ODNhLCAweDAwZTAsIDB4YTBiZSwgMHgwMzAwLCAweDAxYzgsIDB4MDBkZSwKLQkweDA4MDQsIDB4MzAwNywgMHhhZDgwLCAweDAwMTAsIDB4MjBhOSwgMHgwMDA3LCAweDA4MGMsIDB4M2QxZSwKLQkweGFkODAsIDB4MDAwZSwgMHgyMGE5LCAweDAwMDEsIDB4MDgwYywgMHgzZDFlLCAweDAwNDgsIDB4YWQ4MCwKLQkweDAwMGMsIDB4MDgwYywgMHgzZDJjLCAweDAwNTAsIDB4YWQ4MCwgMHgwMDBlLCAweDA4MGMsIDB4M2QyYywKLQkweGFkODAsIDB4MDAwYywgMHgyMGE5LCAweDAwMDEsIDB4MDgwYywgMHgzZDFlLCAweDAwYzYsIDB4MDgwYywKLQkweDNlYmMsIDB4MDU2OCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwgMHg2ODM3LCAweDAxMTksIDB4Njg1MywKLQkweDAwMDAsIDB4Njg0ZiwgMHgwMDIwLCAweDY4NWIsIDB4MDAwMSwgMHg4MTBiLCAweDY5N2UsIDB4Njg4MywKLQkweDAwMDAsIDB4NmE4NiwgMHg2YjhhLCAweDZjOGUsIDB4NmQ5MiwgMHg2OTk2LCAweDY4OWIsIDB4MDAwMCwKLQkweDAwY2UsIDB4MDBkZSwgMHg2ODM3LCAweDAwMDAsIDB4NjgzOCwgMHhjMGZkLCAweDY4M2EsIDB4NjgyMywKLQkweDAwMDAsIDB4NjgwNCwgMHgyMDY4LCAweDA4MGMsIDB4OWU1ZSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMywKLQkweDA4MDQsIDB4MzAwNCwgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHgzZDE1LCAweDAwMDUsIDB4MDBjZSwKLQkweDAwZGUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzAwNCwgMHg2ODIwLCAweGEwODYsIDB4ODAwMSwKLQkweDE5MDQsIDB4MmZkZiwgMHgyMDA5LCAweDAwMDQsIDB4MDgwNCwgMHgzMDA0LCAweDAwMTYsIDB4MjAwOCwKLQkweDIwNDQsIDB4ODAwMCwgMHgyMDRjLCAweDgwMDAsIDB4MjkwYSwgMHg4MTA4LCAweDI4MGEsIDB4ODEwOCwKLQkweDFmMDQsIDB4M2QyMCwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgwMGE2LCAweDAwYjYsIDB4MjAwOCwKLQkweDIwNDQsIDB4ODAwMCwgMHgyMDRjLCAweDgwMDAsIDB4MjA1NCwgMHg4MDAwLCAweDIwNWMsIDB4MmIwYSwKLQkweDgxMDgsIDB4MmEwYSwgMHg4MTA4LCAweDI5MGEsIDB4ODEwOCwgMHgyODBhLCAweDAwYmUsIDB4MDBhZSwKLQkweDAwMWUsIDB4MDAwNSwgMHg4MWZmLCAweDAxMjAsIDB4MjAwOSwgMHgwMDAxLCAweDA4MDQsIDB4MzAwNCwKLQkweDYwZDQsIDB4ZDBhYywgMHgxMTMwLCAweGQwOWMsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDUsIDB4MDgwNCwKLQkweDMwMDQsIDB4NzkyNCwgMHgyMTQwLCAweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDYwZDQsIDB4ZDBhYywKLQkweDExMjAsIDB4YTE4MiwgMHgwMDgwLCAweDBhMDQsIDB4MzAwNywgMHhhMTgyLCAweDAwZmYsIDB4MWEwNCwKLQkweDMwMDcsIDB4N2EyYywgMHg3YjI4LCAweDYwNzAsIDB4YTMwNiwgMHgxMTQwLCAweDYwNzQsIDB4YTI0ZSwKLQkweDA5MDQsIDB4MzAwNywgMHhhOWNjLCAweGZmMDAsIDB4MDkwNCwgMHgzMDA3LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDBjNiwgMHgwODBjLCAweDNlMGMsIDB4MmM2OCwgMHgwMGNlLCAweDA1MzgsIDB4YTBjNiwKLQkweDQwMDAsIDB4MTE3OCwgMHgwMGM2LCAweDAwMDYsIDB4MmQ2MCwgMHhhMDBlLCAweDA4MGMsIDB4NTJiYywKLQkweDExMDgsIDB4YzE4NSwgMHg2MDAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDAwMGUsIDB4MDBjZSwKLQkweDAwODgsIDB4YTBjNiwgMHg0MDA3LCAweDExMTAsIDB4MjQwOCwgMHgwMDYwLCAweGEwYzYsIDB4NDAwOCwKLQkweDExMTgsIDB4MjcwOCwgMHgyNjEwLCAweDAwMzAsIDB4YTBjNiwgMHg0MDA5LCAweDExMDgsIDB4MDAxMCwKLQkweDIwMDEsIDB4NDAwNiwgMHgyMDIwLCAweDAxMmUsIDB4MDgwNCwgMHgyZmUxLCAweDJkMDAsIDB4NzAyMiwKLQkweDAwMTYsIDB4MDBiNiwgMHgwMGM2LCAweDAwZTYsIDB4MmM3MCwgMHgwODBjLCAweDg2NGUsIDB4MDVjMCwKLQkweDJkMDAsIDB4NjAxYSwgMHgwODBjLCAweGEwZTMsIDB4MmU1OCwgMHgwMGVlLCAweDAwZTYsIDB4MDBjNiwKLQkweDA4MGMsIDB4M2ViYywgMHgwMGNlLCAweDJiNzAsIDB4MTE1OCwgMHgwODBjLCAweDg2YTQsIDB4MDBlZSwKLQkweDAwY2UsIDB4MDBiZSwgMHgwMDFlLCAweDAxMmUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzAwNCwKLQkweDY4MzcsIDB4MDAwMCwgMHg2ODNiLCAweDAwMDAsIDB4MmQwMCwgMHg2MDEyLCAweDY4MzMsIDB4MDAwMCwKLQkweDY4MzgsIDB4YzBmZCwgMHhkODhjLCAweDAxMDgsIDB4YzBmNSwgMHg2ODNhLCAweDA4MGMsIDB4MmNkMSwKLQkweDYwMWYsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDIwMDEsIDB4MDAwMiwKLQkweDA4MGMsIDB4NGY2ZiwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwKLQkweDAwZWUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMWUsIDB4MDEyZSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMywKLQkweDA4MDQsIDB4MzAwNCwgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHgzZGVmLCAweDAwMDUsIDB4NjgzMCwKLQkweGEwODYsIDB4MDEwMCwgMHg3MDIwLCAweDIwNjAsIDB4MTEzOCwgMHgyMDA5LCAweDAwMDQsIDB4NjIwNCwKLQkweGEyOTQsIDB4MDBmZiwgMHgwODA0LCAweDMwMDQsIDB4MjAwOSwgMHgwMDAwLCAweDY4MzgsIDB4ZDBmNCwKLQkweDE5MDQsIDB4MmZkZiwgMHgwODBjLCAweDUyYmMsIDB4MTEwOCwgMHhjMTg1LCAweDYwMDAsIDB4ZDBiYywKLQkweDAxMDgsIDB4YzE4ZCwgMHgwODA0LCAweDJmZGYsIDB4MDBlNiwgMHgwMGQ2LCAweGEwMmUsIDB4MjAwMSwKLQkweGI2MzUsIDB4MjAwNCwgMHhkMGFjLCAweDAxMzAsIDB4YTAyNiwgMHgyMGE5LCAweDAwZmYsIDB4MjA3MSwKLQkweGI3MzUsIDB4MDAzMCwgMHgyMDIxLCAweDAwODAsIDB4MjBhOSwgMHgwMDdmLCAweDIwNzEsIDB4YjdiNSwKLQkweDJlMDQsIDB4YTAwNSwgMHgxMTMwLCAweDIxMDAsIDB4YTQwNiwgMHgxNTcwLCAweDI0MjgsIDB4YzVmZCwKLQkweDA0NTgsIDB4MjA2OCwgMHg2ZjEwLCAweDI3MDAsIDB4YTMwNiwgMHgxMWIwLCAweDZlMTQsIDB4MjYwMCwKLQkweGEyMDYsIDB4MTE5MCwgMHgyNDAwLCAweGExMDYsIDB4MTE2MCwgMHgyZDYwLCAweGQ4ODQsIDB4MDU2OCwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgxNTM4LCAweDIwMDEsIDB4NDAwMCwKLQkweDA0MjgsIDB4MjAwMSwgMHg0MDA3LCAweDA0MTAsIDB4MjQwMCwgMHhhMTA2LCAweDExNjgsIDB4NmUxNCwKLQkweDg3ZmYsIDB4MTEzOCwgMHg4NmZmLCAweDA5ZDAsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBhYywKLQkweDE5YTgsIDB4MjAwMSwgMHg0MDA4LCAweDAwOTAsIDB4ODQyMCwgMHg4ZTcwLCAweDFmMDQsIDB4M2UyMCwKLQkweDg1ZmYsIDB4MTEzMCwgMHgyMDAxLCAweDQwMDksIDB4MDA0OCwgMHgyMDAxLCAweDAwMDEsIDB4MDAzMCwKLQkweDA4MGMsIDB4NGZiZiwgMHgxZGQwLCAweDYzMTIsIDB4NjIxNiwgMHhhMDA2LCAweGEwMDUsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlYmMsIDB4MDkwNCwKLQkweDMwMDQsIDB4NjgzNywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDc4MjQsIDB4YTAwNSwKLQkweDA5MDQsIDB4MzAwNywgMHhhMDk2LCAweDAwZmYsIDB4MDEyMCwgMHhhMDkyLCAweDAwMDQsIDB4MWEwNCwKLQkweDMwMDcsIDB4MjAxMCwgMHgyZDE4LCAweDA4MGMsIDB4MmM4NCwgMHgwOTA0LCAweDMwMDQsIDB4NzAwNywKLQkweDAwMDMsIDB4NzAxYiwgMHgzZThjLCAweDAwMDUsIDB4NjgzMCwgMHhhMDg2LCAweDAxMDAsIDB4MDkwNCwKLQkweDMwMDQsIDB4MDgwNCwgMHgyZmRmLCAweDc5MjQsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4NjBkNCwKLQkweGQwYWMsIDB4MTEyMCwgMHhhMTgyLCAweDAwODAsIDB4MGEwNCwgMHgzMDA3LCAweGExODIsIDB4MDBmZiwKLQkweDFhMDQsIDB4MzAwNywgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDlkNDYsIDB4MTE4OCwKLQkweGExOTAsIDB4YjczNSwgMHgyMjA0LCAweGEwNjUsIDB4MDE2MCwgMHgwODBjLCAweDRjN2UsIDB4MjAwMSwKLQkweGI2MzUsIDB4MjAwNCwgMHhkMGFjLCAweDAxMTAsIDB4NjAxNywgMHgwMDAwLCAweDAxMmUsIDB4MDgwNCwKLQkweDJmZGYsIDB4MDEyZSwgMHgwODA0LCAweDMwMDQsIDB4MDgwYywgMHgxNWZkLCAweDAxODgsIDB4YTAwNiwKLQkweDY4MDIsIDB4NzAxMCwgMHhhMDA1LCAweDExMjAsIDB4MmQwMCwgMHg3MDEyLCAweDcwMTYsIDB4MDAzMCwKLQkweDcwMTQsIDB4NjgwMiwgMHgyMDYwLCAweDJkMDAsIDB4NjAwNiwgMHg3MDE2LCAweGFkODAsIDB4MDAwZCwKLQkweDAwMDUsIDB4NzkyNCwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwgMHgwODBjLCAweDUwMWIsIDB4MTEzMCwKLQkweDdlMjgsIDB4YTY4NCwgMHgzZmZmLCAweGEwODIsIDB4NDAwMCwgMHgwMjA4LCAweGEwNjYsIDB4OGNmZiwKLQkweDAwMDUsIDB4N2UyNCwgMHg4NjBmLCAweGExOGMsIDB4MDBmZiwgMHgwODBjLCAweDUwMWIsIDB4MTEyOCwKLQkweGE2YjQsIDB4MDBmZiwgMHhhNjgyLCAweDQwMDAsIDB4MDIwOCwgMHhhMDY2LCAweDhjZmYsIDB4MDAwNSwKLQkweDAwMTYsIDB4NzExMCwgMHg4MWZmLCAweDAxMjgsIDB4MjE2OCwgMHg2OTA0LCAweDA4MGMsIDB4MTYxNCwKLQkweDBjYzgsIDB4NzExMiwgMHg3MTE2LCAweDAwMWUsIDB4MDAwNSwgMHgyMDMxLCAweDAwMDEsIDB4MDAxMCwKLQkweDIwMzEsIDB4MDAwMCwgMHgyMDYxLCAweGI2ZDIsIDB4NjYwNiwgMHg2MTEyLCAweDYwMGUsIDB4NjIyNiwKLQkweDYzMmEsIDB4NjQyZSwgMHg2NTMyLCAweDJjMTAsIDB4MDgwYywgMHgxNjQ4LCAweDcwMDcsIDB4MDAwMiwKLQkweDcwMWIsIDB4MmZkZiwgMHgwMDA1LCAweDAwZjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3OSwKLQkweDAwMDAsIDB4MjAwMSwgMHhiNjkwLCAweDIwMDQsIDB4YTAwNSwgMHgxMTY4LCAweDBlMDQsIDB4M2YyYiwKLQkweDc4MTgsIDB4ZDA4NCwgMHgxMTQwLCAweDdhMjIsIDB4N2IyNiwgMHg3YzJhLCAweDc4MWIsIDB4MDAwMSwKLQkweDIwOTEsIDB4NDA4MCwgMHgwNDA4LCAweDAwMTYsIDB4MDBjNiwgMHgwMGU2LCAweDIwNzEsIDB4YjY4MiwKLQkweDcxMzgsIDB4YTE4MiwgMHgwMDEwLCAweDAyMTgsIDB4NzAzMCwgMHgyMDYwLCAweDAwNzgsIDB4NzAzMCwKLQkweGEwZTAsIDB4MDAwNCwgMHhhYzgyLCAweGI2ZDIsIDB4MDIxMCwgMHgyMDYxLCAweGI2OTIsIDB4MmMwMCwKLQkweDcwMzIsIDB4ODFmZiwgMHgxMTA4LCAweDcwMzYsIDB4ODEwOCwgMHg3MTNhLCAweDIyNjIsIDB4NjMwNiwKLQkweDY0MGEsIDB4MDBlZSwgMHgwMGNlLCAweDAwMWUsIDB4MDEyZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjY4MiwgMHg3MDM4LCAweGEwMDUsIDB4MDU3MCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDBlMDQsIDB4M2Y4MiwgMHgwMGY2LCAweDIwNzksIDB4MDAwMCwgMHg3ODE4LCAweGQwODQsIDB4MTUwOCwKLQkweDAwYzYsIDB4NzAzNCwgMHgyMDYwLCAweDJjMDQsIDB4NzgyMiwgMHg2MDA0LCAweDc4MjYsIDB4NjAwOCwKLQkweDc4MmEsIDB4NzgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHg3MDM4LCAweDgwMDEsIDB4NzAzYSwKLQkweGEwMDUsIDB4MTEzMCwgMHg3MDMzLCAweGI2OTIsIDB4NzAzNywgMHhiNjkyLCAweDAwY2UsIDB4MDA0OCwKLQkweGFjODAsIDB4MDAwNCwgMHhhMGZhLCAweGI2ZDIsIDB4MDIxMCwgMHgyMDAxLCAweGI2OTIsIDB4NzAzNiwKLQkweDAwY2UsIDB4MDBmZSwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHgwMDI2LCAweDIwMDEsIDB4YjY1MywKLQkweDIwMDQsIDB4ZDBjNCwgMHgwMTIwLCAweDIwMTEsIDB4ODAxNCwgMHgwODBjLCAweDNmMTMsIDB4MDAyZSwKLQkweDAwMDUsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjAzMCwKLQkweGMwOGQsIDB4YzA4NSwgMHhjMGFjLCAweDYwMzIsIDB4MDgwYywgMHg1YjQxLCAweDExNzgsIDB4MjAwMSwKLQkweGI4OWYsIDB4MjAwMywgMHgwMDAxLCAweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDEsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHg1Yjg1LCAweDA4MGMsIDB4NWE3OSwgMHgwMDEwLCAweDA4MGMsIDB4NGI3YiwKLQkweDAxMmUsIDB4MDgwNCwgMHgyZmRmLCAweDc4MjQsIDB4MjAwOCwgMHhhMThjLCAweGZmZmQsIDB4MTEyOCwKLQkweDYxZTAsIDB4YTEwZCwgMHg2MWUyLCAweDA4MDQsIDB4MmZkZiwgMHgwODA0LCAweDMwMDcsIDB4ODFmZiwKLQkweDE5MDQsIDB4MzAwNCwgMHg2MDAwLCAweGEwODYsIDB4MDAwMywgMHgxOTA0LCAweDMwMDQsIDB4MjAwMSwKLQkweGI2NTMsIDB4MjAwNCwgMHhkMGFjLCAweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZTEsIDB4MDkwNCwKLQkweDMwMDcsIDB4NjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDExMjAsIDB4NzgyOCwKLQkweGEwMDUsIDB4MDkwNCwgMHgyZmRmLCAweDAwYzYsIDB4MDgwYywgMHgzZWJjLCAweDAwY2UsIDB4MDkwNCwKLQkweDMwMDQsIDB4NjgzNywgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwKLQkweDA4MGMsIDB4OWYyNywgMHgwOTA0LCAweDMwMDQsIDB4NzAwNywgMHgwMDAzLCAweDcwMWIsIDB4M2ZmMSwKLQkweDAwMDUsIDB4NjgzMCwgMHhhMDg2LCAweDAxMDAsIDB4MDkwNCwgMHgzMDA0LCAweDA4MDQsIDB4MmZkZiwKLQkweDIwMDEsIDB4YjYwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywgMHgxOTA0LCAweDMwMDQsIDB4N2YyNCwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwYywgMHgzZWJjLCAweDA5MDQsIDB4MzAwNCwKLQkweDIwMDksIDB4MDAwMCwgMHgyMDMxLCAweDAwMDAsIDB4NzAyMywgMHgwMDAwLCAweDcwMmYsIDB4MDAwMCwKLQkweGFkODAsIDB4MDAwNSwgMHg3MDI2LCAweDIwYTAsIDB4MDgwYywgMHg1MDFiLCAweDE5MDQsIDB4NDA2YiwKLQkweDYwMDQsIDB4YTBjNCwgMHgwMGZmLCAweGE4YzYsIDB4MDAwNiwgMHgwMTMwLCAweGEwYzQsIDB4ZmYwMCwKLQkweGE4YzYsIDB4MDYwMCwgMHgxOTA0LCAweDQwNmIsIDB4MjAwMSwgMHhiNjUzLCAweDIwMDQsIDB4ZDBhYywKLQkweDExMjgsIDB4MDgwYywgMHg1MmJjLCAweDExMTAsIDB4ZDc5YywgMHgwNWU4LCAweGQ3OTQsIDB4MTExMCwKLQkweGQ3ODQsIDB4MDE1OCwgMHhhYzgwLCAweDAwMDYsIDB4MjA5OCwgMHgzNDAwLCAweDIwYTksIDB4MDAwNCwKLQkweDUzYTMsIDB4MDgwYywgMHgzZDJjLCAweGQ3OTQsIDB4MDE0OCwgMHhhYzgwLCAweDAwMGEsIDB4MjA5OCwKLQkweDM0MDAsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MDgwYywgMHgzZDJjLCAweDIxYTIsIDB4ZDc5NCwKLQkweDAxZDgsIDB4YWM4MCwgMHgwMDAwLCAweDIwOTgsIDB4OTRhMCwgMHgyMGE5LCAweDAwMDIsIDB4NTNhMywKLQkweGFjODAsIDB4MDAwMywgMHgyMGE2LCAweDk0YTAsIDB4YWM4MCwgMHgwMDA0LCAweDIwOTgsIDB4MzQwMCwKLQkweDIwYTksIDB4MDAwMiwgMHg1M2EzLCAweDA4MGMsIDB4M2QxZSwgMHhhYzgwLCAweDAwMjYsIDB4MjA5OCwKLQkweDIwYTksIDB4MDAwMiwgMHg1M2EzLCAweDAwMDgsIDB4OTRhMCwgMHhkNzk0LCAweDAxMTAsIDB4YTZiMCwKLQkweDAwMGIsIDB4YTZiMCwgMHgwMDA1LCAweDgxMDgsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBhYywKLQkweDAxMTgsIDB4YTE4NiwgMHgwMTAwLCAweDAwNDAsIDB4ZDc4YywgMHgwMTIwLCAweGExODYsIDB4MDEwMCwKLQkweDAxNzAsIDB4MDAxOCwgMHhhMTg2LCAweDAwN2UsIDB4MDE1MCwgMHhkNzk0LCAweDAxMTgsIDB4YTY4NiwKLQkweDAwMjAsIDB4MDAxMCwgMHhhNjg2LCAweDAwMjgsIDB4MDE1MCwgMHgwODA0LCAweDQwMTQsIDB4ODZmZiwKLQkweDExMjAsIDB4NzEyMCwgMHg4MTBiLCAweDA4MDQsIDB4MmZkZiwgMHg3MDJmLCAweDAwMDEsIDB4NzExZSwKLQkweDcwMjAsIDB4YTYwMCwgMHg3MDIyLCAweDc3MmEsIDB4MjA2MSwgMHhiNmQyLCAweDYwMDcsIDB4MDAwMCwKLQkweDY2MTIsIDB4NzAyNCwgMHg2MDBlLCAweDYyMjYsIDB4NjMyYSwgMHg2NDJlLCAweDY1MzIsIDB4MmMxMCwKLQkweDA4MGMsIDB4MTY0OCwgMHg3MDA3LCAweDAwMDIsIDB4NzAxYiwgMHg0MGE3LCAweDAwMDUsIDB4NzAyYywKLQkweGEwMDUsIDB4MTE3MCwgMHg3MTFjLCAweDcwMjQsIDB4MjBhMCwgMHg3NzI4LCAweDIwMzEsIDB4MDAwMCwKLQkweDIwNjEsIDB4YjZkMiwgMHg2MjI0LCAweDYzMjgsIDB4NjQyYywgMHg2NTMwLCAweDA4MDQsIDB4NDAxNCwKLQkweDcxMjAsIDB4ODEwYiwgMHgwODA0LCAweDJmZGYsIDB4MjAyOSwgMHgwMDdlLCAweDc5MjQsIDB4N2EyOCwKLQkweDdiMmMsIDB4N2MzOCwgMHhhMTg0LCAweGZmMDAsIDB4ODAwNywgMHhhMGUyLCAweDAwMjAsIDB4MGEwNCwKLQkweDMwMDcsIDB4YTUwMiwgMHgwYTA0LCAweDMwMDcsIDB4YTE4NCwgMHgwMGZmLCAweGEwZTIsIDB4MDAyMCwKLQkweDBhMDQsIDB4MzAwNywgMHhhNTAyLCAweDBhMDQsIDB4MzAwNywgMHhhMjg0LCAweGZmMDAsIDB4ODAwNywKLQkweGEwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDMwMDcsIDB4YTUwMiwgMHgwYTA0LCAweDMwMDcsIDB4YTI4NCwKLQkweDAwZmYsIDB4YTBlMiwgMHgwMDIwLCAweDBhMDQsIDB4MzAwNywgMHhhNTAyLCAweDBhMDQsIDB4MzAwNywKLQkweGEzODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDMwMDcsIDB4YTUwMiwKLQkweDBhMDQsIDB4MzAwNywgMHhhMzg0LCAweDAwZmYsIDB4YTBlMiwgMHgwMDIwLCAweDBhMDQsIDB4MzAwNywKLQkweGE1MDIsIDB4MGEwNCwgMHgzMDA3LCAweGE0ODQsIDB4ZmYwMCwgMHg4MDA3LCAweGEwZTIsIDB4MDAyMCwKLQkweDBhMDQsIDB4MzAwNywgMHhhNTAyLCAweDBhMDQsIDB4MzAwNywgMHhhNDg0LCAweDAwZmYsIDB4YTBlMiwKLQkweDAwMjAsIDB4MGEwNCwgMHgzMDA3LCAweGE1MDIsIDB4MGEwNCwgMHgzMDA3LCAweDIwNjEsIDB4YjhiOSwKLQkweDYxMDIsIDB4NjIwNiwgMHg2MzBhLCAweDY0MGUsIDB4MDgwNCwgMHgyZmRmLCAweDAwMDYsIDB4MjAwMSwKLQkweGI2NTMsIDB4MjAwNCwgMHhkMGNjLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4YjY3MiwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDBlLCAweDAwMDUsIDB4NjE2OCwgMHg3YTI0LCAweDYzMDAsIDB4ODJmZiwKLQkweDExMTgsIDB4NzkyNiwgMHgwODA0LCAweDJmZGYsIDB4ODNmZiwgMHgxOTA0LCAweDMwMDcsIDB4MjAwMSwKLQkweGZmZjAsIDB4YTIwMCwgMHgxYTA0LCAweDMwMDcsIDB4MjAxOSwgMHhmZmZmLCAweDYwNmMsIDB4YTMwMiwKLQkweGEyMDAsIDB4MGEwNCwgMHgzMDA3LCAweDc5MjYsIDB4NjI2YSwgMHgwODA0LCAweDJmZGYsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MTkwNCwgMHgzMDA0LCAweDdjMjgsIDB4N2QyNCwKLQkweDdlMzgsIDB4N2YyYywgMHgwODBjLCAweDNlYmMsIDB4MDkwNCwgMHgzMDA0LCAweDIwMDksIDB4MDAwMCwKLQkweDIwMTksIDB4MDAwMCwgMHg3MDIzLCAweDAwMDAsIDB4NzAyZiwgMHgwMDAwLCAweGFkODAsIDB4MDAwMywKLQkweDcwMjYsIDB4MjBhMCwgMHhhMWUwLCAweGI3MzUsIDB4MmM2NCwgMHg4Y2ZmLCAweDAxYjgsIDB4NjAwNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDYsIDB4MDEzMCwgMHg2MDA0LCAweGEwODQsIDB4ZmYwMCwKLQkweGEwODYsIDB4MDYwMCwgMHgxMTU4LCAweDYwMTQsIDB4MjBhMiwgMHg5NGEwLCAweDYwMTAsIDB4ODAwNywKLQkweGExMDUsIDB4ODAwNywgMHgyMGEyLCAweDk0YTAsIDB4YTM5OCwgMHgwMDAyLCAweDgxMDgsIDB4YTE4MiwKLQkweDAwZmYsIDB4MDEyMCwgMHhhMzg2LCAweDAwMmEsIDB4MDE0OCwgMHgwOGUwLCAweDgzZmYsIDB4MTEyMCwKLQkweDcxMjAsIDB4ODEwYywgMHgwODA0LCAweDJmZGYsIDB4NzAyZiwgMHgwMDAxLCAweDcxMWUsIDB4NzAyMCwKLQkweGEzMDAsIDB4NzAyMiwgMHgyMDYxLCAweGI2ZDIsIDB4NjAwNywgMHgwMDAwLCAweDYzMTIsIDB4NzAyNCwKLQkweDYwMGUsIDB4NjQyNiwgMHg2NTJhLCAweDY2MmUsIDB4NjczMiwgMHgyYzEwLCAweDA4MGMsIDB4MTY0OCwKLQkweDcwMDcsIDB4MDAwMiwgMHg3MDFiLCAweDQxOWQsIDB4MDAwNSwgMHg3MDJjLCAweGEwMDUsIDB4MTE2OCwKLQkweDcxMWMsIDB4NzAyNCwgMHgyMGEwLCAweDIwMTksIDB4MDAwMCwgMHgyMDYxLCAweGI2ZDIsIDB4NjQyNCwKLQkweDY1MjgsIDB4NjYyYywgMHg2NzMwLCAweDA4MDQsIDB4NDE1YSwgMHg3MTIwLCAweDgxMGMsIDB4MDgwNCwKLQkweDJmZGYsIDB4ODFmZiwgMHgxOTA0LCAweDMwMDQsIDB4NjBkNCwgMHhkMGFjLCAweDExMTgsIDB4ZDA5YywKLQkweDA5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlYmMsIDB4MDkwNCwgMHgzMDA0LCAweDc5MjQsIDB4N2EyYywKLQkweDdiMjgsIDB4N2MzYywgMHg3ZDM4LCAweDA4MGMsIDB4M2VmZCwgMHg3MDFiLCAweDQxYzgsIDB4MDAwNSwKLQkweDAwZDYsIDB4YWRlOCwgMHgwMDBkLCAweDY4MjgsIDB4YTBiZSwgMHg3MDAwLCAweDAxNDgsIDB4YTBiZSwKLQkweDcxMDAsIDB4MDEzMCwgMHhhMGJlLCAweDcyMDAsIDB4MDExOCwgMHgwMGRlLCAweDA4MDQsIDB4MzAwNywKLQkweDY4MjAsIDB4NjkyNCwgMHgwODBjLCAweDI4NTIsIDB4MTUxMCwgMHgwODBjLCAweDRmYmYsIDB4MTFmOCwKLQkweDcxMjIsIDB4NjYxMiwgMHg2NTE2LCAweDZlMTgsIDB4MDBjNiwgMHgwODBjLCAweDNlYmMsIDB4MDFiOCwKLQkweDA4MGMsIDB4M2ViYywgMHgwMWEwLCAweDAwY2UsIDB4MDBkZSwgMHg2ODM3LCAweDAwMDAsIDB4NjgzOCwKLQkweGMwZmQsIDB4NjgzYSwgMHg2ODIzLCAweDAwMDAsIDB4NjgwNCwgMHgyMDY4LCAweDA4MGMsIDB4OWU3YSwKLQkweDA5MDQsIDB4MzAwNCwgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwgMHg0MjAyLCAweDAwMDUsIDB4MDBkZSwKLQkweDA4MDQsIDB4MzAwNCwgMHg3MTIwLCAweDA4MGMsIDB4MmRjYywgMHg2ODIwLCAweGEwODYsIDB4ODAwMSwKLQkweDA5MDQsIDB4MzAwNCwgMHgyZDAwLCAweDcwMWUsIDB4NjgwNCwgMHhhMDgwLCAweDAwMDIsIDB4MDAwNiwKLQkweDIwYTksIDB4MDAyYSwgMHgyMDk4LCAweDIwYTAsIDB4MDgwYywgMHg0YmYxLCAweDAwMGUsIDB4YWRlOCwKLQkweDAwMGQsIDB4NmEwOCwgMHg2YjBjLCAweDZjMTAsIDB4NmQxNCwgMHgyMDYxLCAweGI2ZDIsIDB4NjAwNywKLQkweDAwMDAsIDB4NmUwMCwgMHg2ZjI4LCAweGE3YzYsIDB4NzAwMCwgMHgxMTA4LCAweDAwMTgsIDB4YTdjNiwKLQkweDcxMDAsIDB4MTE0MCwgMHhhNmMyLCAweDAwMDQsIDB4MGEwNCwgMHgzMDA3LCAweDIwMDksIDB4MDAwNCwKLQkweDA4MDQsIDB4M2YwMCwgMHhhN2M2LCAweDcyMDAsIDB4MTkwNCwgMHgzMDA3LCAweGE2YzIsIDB4MDA1NCwKLQkweDBhMDQsIDB4MzAwNywgMHg2MDBlLCAweDYwMTMsIDB4MDAyYSwgMHg2MjI2LCAweDYzMmEsIDB4NjQyZSwKLQkweDY1MzIsIDB4MmMxMCwgMHgwODBjLCAweDE2NDgsIDB4NzAwNywgMHgwMDAyLCAweDcwMWIsIDB4NDI0OSwKLQkweDAwMDUsIDB4NzAxYywgMHgyMDY4LCAweDY4MDQsIDB4YTA4MCwgMHgwMDAxLCAweDIwMDQsIDB4YTA4MCwKLQkweDAwMDIsIDB4MDAwNiwgMHgyMGE5LCAweDAwMmEsIDB4MjA5OCwgMHgyMGEwLCAweDA4MGMsIDB4NGJmMSwKLQkweDAwMGUsIDB4MjAwOSwgMHgwMDJhLCAweDIwNjEsIDB4YjZkMiwgMHg2MjI0LCAweDYzMjgsIDB4NjQyYywKLQkweDY1MzAsIDB4MDgwNCwgMHgzZjAwLCAweDgxZmYsIDB4MTkwNCwgMHgzMDA0LCAweDc5MmMsIDB4MjAwMSwKLQkweGI4YTAsIDB4MjEwMiwgMHgwODBjLCAweDNlZDEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MGMsIDB4NTBlMSwKLQkweDA5MDQsIDB4MzAwNCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDUyMTMsIDB4MDEyZSwKLQkweDA4MDQsIDB4MmZkZiwgMHg3ODI0LCAweGQwOGMsIDB4MTExOCwgMHhkMDg0LCAweDA5MDQsIDB4M2E4NywKLQkweDA4MGMsIDB4M2VlMSwgMHgwOTA0LCAweDMwMDcsIDB4MDBjNiwgMHgwODBjLCAweDNlYmMsIDB4MDBjZSwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzAwNCwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDAwNiwgMHgwMTI4LCAweGEwOGUsIDB4MDAwNCwgMHgwMTEwLCAweGEwOGUsIDB4MDAwNSwKLQkweDE1YjgsIDB4NzgyNCwgMHhkMDhjLCAweDAxMjAsIDB4NjAwMCwgMHhjMDhjLCAweDYwMDIsIDB4MDAzMCwKLQkweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYjQsIDB4MDkwNCwgMHgzYWMzLCAweDc4MjQsIDB4YTA4NCwKLQkweGZmMDAsIDB4YTA4ZSwgMHg3ZTAwLCAweDA5MDQsIDB4M2FjMywgMHhhMDhlLCAweDdmMDAsIDB4MDkwNCwKLQkweDNhYzMsIDB4YTA4ZSwgMHg4MDAwLCAweDA5MDQsIDB4M2FjMywgMHg2MDAwLCAweGQwOGMsIDB4MTkwNCwKLQkweDNhYzMsIDB4NjgzNywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDA4MGMsIDB4OWU5NiwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzAwNCwgMHg3MDA3LCAweDAwMDMsIDB4NzAxYiwKLQkweDQyY2EsIDB4MDAwNSwgMHgwODBjLCAweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDA4MDQsIDB4M2FjMywKLQkweDIwMDksIDB4YjYzMSwgMHgyMTBjLCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwKLQkweDMwMDQsIDB4MjAwMSwgMHhiNjAwLCAweDIwMDQsIDB4YTA4NiwgMHgwMDAzLCAweDAxMjAsIDB4MjAwOSwKLQkweDAwMDcsIDB4MDgwNCwgMHgzMDA0LCAweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYWMsIDB4MDEyMCwKLQkweDIwMDksIDB4MDAwOCwgMHgwODA0LCAweDMwMDQsIDB4NjA5YywgMHhkMGE0LCAweDExMTgsIDB4ZDBhYywKLQkweDE5MDQsIDB4M2FjMywgMHg2ODM3LCAweDAwMDAsIDB4NjgzMywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwKLQkweDY4M2EsIDB4MDgwYywgMHg5ZjI3LCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzAwNCwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFiLCAweDQzMDUsIDB4MDAwNSwgMHg2ODMwLCAweGEwODYsIDB4MDEwMCwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDA0LCAweDA4MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZTEsIDB4MDkwNCwKLQkweDMwMDcsIDB4MDgwNCwgMHg0Mjk5LCAweDgxZmYsIDB4MjAwOSwgMHgwMDAxLCAweDE5MDQsIDB4MzAwNCwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDIwMDksIDB4MDAwNywgMHgxOTA0LCAweDMwMDQsIDB4MjAwMSwKLQkweGI2NTMsIDB4MjAwNCwgMHhkMGFjLCAweDIwMDksIDB4MDAwOCwgMHgxOTA0LCAweDMwMDQsIDB4MDgwYywKLQkweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwKLQkweDIwMDksIDB4MDAwOSwgMHgxOTA0LCAweDMwMDQsIDB4MDBjNiwgMHgwODBjLCAweDNlYmMsIDB4MDBjZSwKLQkweDIwMDksIDB4MDAwMiwgMHgwOTA0LCAweDMwMDQsIDB4NjgzNywgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwKLQkweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDc5MjgsIDB4YTE5NCwgMHhmZjAwLCAweGExOGMsIDB4MDBmZiwKLQkweGEwMDYsIDB4ODJmZiwgMHgxMTI4LCAweGMwZWQsIDB4Njk1MiwgMHg3OTJjLCAweDY5NTYsIDB4MDA0OCwKLQkweGEyOGUsIDB4MDEwMCwgMHgxOTA0LCAweDMwMDcsIDB4YzBlNSwgMHg2ODUzLCAweDAwMDAsIDB4Njg1NywKLQkweDAwMDAsIDB4NjgzZSwgMHgwODBjLCAweGEwZTQsIDB4MjAwOSwgMHgwMDAzLCAweDA5MDQsIDB4MzAwNCwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFiLCAweDQzNjUsIDB4MDAwNSwgMHg2ODMwLCAweGEwODYsIDB4MDEwMCwKLQkweDIwMDksIDB4MDAwNCwgMHgwOTA0LCAweDMwMDQsIDB4MDgwNCwgMHgyZmRmLCAweDgxZmYsIDB4MjAwOSwKLQkweDAwMDEsIDB4MTkwNCwgMHgzMDA0LCAweDYwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDIwMDksIDB4MDAwNywKLQkweDE5MDQsIDB4MzAwNCwgMHgwODBjLCAweDNlZTEsIDB4MDkwNCwgMHgzMDA3LCAweDYwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA2LCAweDIwMDksIDB4MDAwOSwgMHgxOTA0LCAweDMwMDQsIDB4MDBjNiwKLQkweDA4MGMsIDB4M2ViYywgMHgwMGNlLCAweDIwMDksIDB4MDAwMiwgMHgwOTA0LCAweDMwMDQsIDB4YWQ4MCwKLQkweDAwMGYsIDB4MjAwOSwgMHgwMDA4LCAweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwYywKLQkweDNlZmQsIDB4NzAxYiwgMHg0MzljLCAweDAwMDUsIDB4MDBkNiwgMHhhZGU4LCAweDAwMGYsIDB4NjgwMCwKLQkweGEwODYsIDB4MDUwMCwgMHgxMTQwLCAweDY4MDQsIDB4YTAwNSwgMHgxMTI4LCAweDY4MDgsIDB4YTA4NCwKLQkweGZmMDAsIDB4MTEwOCwgMHgwMDE4LCAweDAwZGUsIDB4MTkwNCwgMHgzMDA3LCAweDAwZGUsIDB4NjgzNywKLQkweDAwMDAsIDB4NjgzMywgMHgwMDAwLCAweDY4MzgsIDB4YzBmZCwgMHg2ODNhLCAweDAwYzYsIDB4MDgwYywKLQkweDNlZTEsIDB4MTExOCwgMHgwMGNlLCAweDA4MDQsIDB4MzAwNywgMHgwODBjLCAweGExMzMsIDB4MjAwOSwKLQkweDAwMDMsIDB4MDBjZSwgMHgwOTA0LCAweDMwMDQsIDB4NzAwNywgMHgwMDAzLCAweDcwMWIsIDB4NDNjOSwKLQkweDAwMDUsIDB4NjgzMCwgMHhhMDg2LCAweDAxMDAsIDB4MjAwOSwgMHgwMDA0LCAweDA5MDQsIDB4MzAwNCwKLQkweDA4MDQsIDB4MmZkZiwgMHg4MWZmLCAweDAxMjAsIDB4MjAwOSwgMHgwMDAxLCAweDA4MDQsIDB4MzAwNCwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDAxMjAsIDB4MjAwOSwgMHgwMDA3LCAweDA4MDQsIDB4MzAwNCwKLQkweDdlMjQsIDB4ODYwZiwgMHhhMThjLCAweDAwZmYsIDB4YTZiNCwgMHgwMGZmLCAweDA4MGMsIDB4NTAxYiwKLQkweDE5MDQsIDB4MzAwNywgMHhhMTg2LCAweDAwN2YsIDB4MDE1MCwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDAwNiwgMHgwMTIwLCAweDIwMDksIDB4MDAwOSwgMHgwODA0LCAweDMwMDQsIDB4MDBjNiwKLQkweDA4MGMsIDB4M2ViYywgMHgwMGNlLCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzAwNCwKLQkweDY4MzcsIDB4MDAwMCwgMHg2ODM4LCAweGMwZmQsIDB4NjgzYSwgMHgyMDAxLCAweDAxMDAsIDB4ODAwNywKLQkweDY4MGEsIDB4MDgwYywgMHg5ZWIxLCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzAwNCwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFiLCAweDQ0MTUsIDB4MDAwNSwgMHg2ODA4LCAweDgwMDcsIDB4YTA4NiwKLQkweDAxMDAsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDQsIDB4MDgwNCwgMHgzMDA0LCAweDY4YjAsIDB4NjgzNiwKLQkweDY4MTAsIDB4ODAwNywgMHhhMDg0LCAweDAwZmYsIDB4ODAwYywgMHg2ODE0LCAweDgwMDcsIDB4YTA4NCwKLQkweDAwZmYsIDB4ODAwNCwgMHhhMDgwLCAweDAwMDIsIDB4YTEwOCwgMHhhZDgwLCAweDAwMDQsIDB4N2EyYywKLQkweDdiMjgsIDB4N2MzYywgMHg3ZDM4LCAweDA4MDQsIDB4M2YwMCwgMHgwODBjLCAweDNlYmMsIDB4MTEyMCwKLQkweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDMwMDQsIDB4NzkyNCwgMHhhMTk0LCAweGZmMDAsIDB4YTE4YywKLQkweDAwZmYsIDB4ODIxNywgMHg4MmZmLCAweDAxMTAsIDB4MDgwNCwgMHgzMDA3LCAweDIwMDksIDB4MDAxYSwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwYywgMHgzZWZkLCAweDcwMWIsIDB4NDQ1MSwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjJhLCAweDIwMDMsIDB4MDAwMSwgMHhhZDgwLCAweDAwMGQsIDB4MjA5OCwKLQkweDIwYTksIDB4MDAxYSwgMHgyMGExLCAweGI4YzcsIDB4NTNhMywgMHgwODA0LCAweDJmZGYsIDB4MDgwYywKLQkweDNlYmMsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzMDA0LCAweDc5MjQsIDB4YTE5NCwKLQkweGZmMDAsIDB4YTE4YywgMHgwMGZmLCAweDgyMTcsIDB4ODJmZiwgMHgwMTEwLCAweDA4MDQsIDB4MzAwNywKLQkweDIwOTksIDB4YjhjNywgMHgyMGEwLCAweDIwYTksIDB4MDAxYSwgMHg1M2EzLCAweDIwMDksIDB4MDAxYSwKLQkweDdhMmMsIDB4N2IyOCwgMHg3YzNjLCAweDdkMzgsIDB4MDgwNCwgMHgzZjAwLCAweDc4MjQsIDB4YTA4YSwKLQkweDEwMDAsIDB4MWEwNCwgMHgzMDA3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDgwMDMsIDB4ODAwYiwKLQkweDgxMGIsIDB4YTEwOCwgMHgwMGM2LCAweDIwNjEsIDB4YjhmNCwgMHg2MTQyLCAweDAwY2UsIDB4MDEyZSwKLQkweDA4MDQsIDB4MmZkZiwgMHgwMGM2LCAweDA4MGMsIDB4NWI0MSwgMHgxMTg4LCAweDIwMDEsIDB4Yjg5ZiwKLQkweDIwMDMsIDB4MDAwMSwgMHgyMDAxLCAweGI2MDAsIDB4MjAwMywgMHgwMDAxLCAweGEwODUsIDB4MDAwMSwKLQkweDA4MGMsIDB4NWI4NSwgMHgwODBjLCAweDVhNzksIDB4MDgwYywgMHgxNTFhLCAweDAwMzgsIDB4MjA2MSwKLQkweGI2MDAsIDB4NjAzMCwgMHhjMDlkLCAweDYwMzIsIDB4MDgwYywgMHg0YjdiLCAweDAwY2UsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzYsIDB4MjA2MSwgMHhiOGY0LCAweDc5MjQsIDB4NjE1MiwKLQkweDYxNGUsIDB4NjA1NywgMHgwMDAwLCAweDYwNGIsIDB4MDAwOSwgMHg3ODM4LCAweDYwNmEsIDB4NzgzYywKLQkweDYwNjYsIDB4NzgyOCwgMHg2MDYyLCAweDc4MmMsIDB4NjA1ZSwgMHgyMDYxLCAweGI4YTEsIDB4MjAwMSwKLQkweGI5MDksIDB4NjAwZSwgMHg2MDEzLCAweDAwMDEsIDB4NjAxNywgMHgwMDAyLCAweDYwMDcsIDB4MDAwMCwKLQkweDYwMzcsIDB4MDAwMCwgMHgwMGNlLCAweDAxMmUsIDB4MDgwNCwgMHgyZmRmLCAweDAxMjYsIDB4MDBjNiwKLQkweDAwZTYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNzEsIDB4YjYwMCwgMHg2MDQ0LCAweGQwYTQsIDB4MTFiMCwKLQkweGQwODQsIDB4MDExOCwgMHgwODBjLCAweDQ2NGQsIDB4MDA2OCwgMHhkMDhjLCAweDAxMTgsIDB4MDgwYywKLQkweDQ1NmUsIDB4MDA0MCwgMHhkMDk0LCAweDAxMTgsIDB4MDgwYywgMHg0NTNmLCAweDAwMTgsIDB4ZDA5YywKLQkweDAxMDgsIDB4MDA2MSwgMHgwMGVlLCAweDAwY2UsIDB4MDEyZSwgMHgwMDA1LCAweDAwMTYsIDB4NjEyOCwKLQkweGQxOWMsIDB4MTExMCwgMHhjMTlkLCAweDYxMmEsIDB4MDAxZSwgMHgwY2EwLCAweDYyNGMsIDB4YTI4NiwKLQkweGYwZjAsIDB4MTE1MCwgMHg2MDQ4LCAweGEwODYsIDB4ZjBmMCwgMHgwMTMwLCAweDYyNGEsIDB4NjA0MywKLQkweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDA0OTAsIDB4YTI5NCwgMHhmZjAwLCAweGEyOTYsIDB4ZjcwMCwKLQkweDAxNzgsIDB4NzEzNCwgMHhkMWE0LCAweDExNjAsIDB4NjI0MCwgMHhhMjk1LCAweDAxMDAsIDB4NjI0MiwKLQkweGEyOTQsIDB4MDAxMCwgMHgwMTI4LCAweDIwMDksIDB4MDBmNywgMHgwODBjLCAweDRjMTEsIDB4MDBmMCwKLQkweDYwNDAsIDB4YTA4NCwgMHgwMDEwLCAweGEwODUsIDB4MDE0MCwgMHg2MDQyLCAweDYwNDMsIDB4MDAwMCwKLQkweDcwN2IsIDB4MDAwMCwgMHg3MDk3LCAweDAwMDEsIDB4NzBiYiwgMHgwMDAwLCAweDcwZDcsIDB4MDAwMCwKLQkweDIwMDksIDB4YmRjMCwgMHgyMDBiLCAweDAwMDAsIDB4NzA4YiwgMHgwMDAwLCAweDcwN2YsIDB4MDAwYSwKLQkweDIwMDksIDB4MDAwYSwgMHgyMDExLCAweDRiMWMsIDB4MDgwYywgMHg2YTk0LCAweDAwMDUsIDB4MDE1NiwKLQkweDIwMDEsIDB4YjY3NCwgMHgyMDA0LCAweGQwOGMsIDB4MDExMCwgMHg3MDUzLCAweGZmZmYsIDB4NzA3YywKLQkweGEwMDUsIDB4MTUxMCwgMHgyMDExLCAweDRiMWMsIDB4MDgwYywgMHg2YTBlLCAweDYwNDAsIDB4YTA5NCwKLQkweDAwMTAsIDB4YTI4NSwgMHgwMDIwLCAweDYwNDIsIDB4MjBhOSwgMHgwMGM4LCAweDYwNDQsIDB4ZDA4YywKLQkweDExNjgsIDB4MWYwNCwgMHg0NTU2LCAweDYyNDIsIDB4NzA4ZiwgMHgwMDAwLCAweDYwNDAsIDB4YTA5NCwKLQkweDAwMTAsIDB4YTI4NSwgMHgwMDgwLCAweDYwNDIsIDB4NjI0MiwgMHgwMDMwLCAweDYyNDIsIDB4NzA4ZiwKLQkweDAwMDAsIDB4NzA4MywgMHgwMDAwLCAweDAwMDAsIDB4MDE1ZSwgMHgwMDA1LCAweDcwODAsIDB4YTA4YSwKLQkweDAwMDMsIDB4MTIxMCwgMHgwMDIzLCAweDAwMTAsIDB4MDgwYywgMHgxNTFhLCAweDAwMDUsIDB4NDU3YSwKLQkweDQ1Y2EsIDB4NDY0YywgMHgwMGY2LCAweDcwODMsIDB4MDAwMSwgMHgyMGUxLCAweGEwMDAsIDB4ZTAwMCwKLQkweDIwZTEsIDB4ODcwMCwgMHgwODBjLCAweDI0YTUsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwKLQkweDIwNzksIDB4YmMwMCwgMHgyMDdiLCAweDIyMDAsIDB4NzgwNywgMHgwMGVmLCAweDc4MGIsIDB4MDAwMCwKLQkweDc4MGYsIDB4MDBlZiwgMHg3ODEzLCAweDAxMzgsIDB4NzgxNywgMHgwMDAwLCAweDc4MWIsIDB4MDAwMCwKLQkweDc4MWYsIDB4MDAwMCwgMHg3ODIzLCAweGZmZmYsIDB4NzgyNywgMHhmZmZmLCAweDc4MmIsIDB4MDAwMCwKLQkweDc4MmYsIDB4MDAwMCwgMHgyMDc5LCAweGJjMGMsIDB4MjA3YiwgMHgxMTAxLCAweDc4MDcsIDB4MDAwMCwKLQkweDIwOTksIDB4YjYwNSwgMHgyMGExLCAweGJjMGUsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MjA3OSwKLQkweGJjMTIsIDB4MjA3YiwgMHgwMDAwLCAweDc4MDcsIDB4MDAwMCwgMHgyMDk5LCAweGJjMDAsIDB4MjBhMSwKLQkweDAyMGIsIDB4MjBhOSwgMHgwMDE0LCAweDUzYTYsIDB4NjBjMywgMHgwMDBjLCAweDYwMGYsIDB4MDAwMCwKLQkweDA4MGMsIDB4NGI1NSwgMHgwMGZlLCAweDcwODcsIDB4MDAwMCwgMHg2MDQzLCAweDAwMDgsIDB4NjA0MywKLQkweDAwMDAsIDB4MDAwNSwgMHgwMGQ2LCAweDcwODQsIDB4NzA4NywgMHgwMDAwLCAweGEwMjUsIDB4MDkwNCwKLQkweDQ2MzQsIDB4NjAyMCwgMHhkMGI0LCAweDE5MDQsIDB4NDYzMiwgMHg3MTk0LCAweDgxZmYsIDB4MDkwNCwKLQkweDQ2MjIsIDB4YTQ4NiwgMHgwMDBjLCAweDE5MDQsIDB4NDYyZCwgMHhhNDgwLCAweDAwMTgsIDB4ODAwNCwKLQkweDIwYTgsIDB4MjAxMSwgMHhiYzgwLCAweDIwMTksIDB4YmMwMCwgMHgyMjBjLCAweDIzMDQsIDB4YTEwNiwKLQkweDExYjgsIDB4ODIxMCwgMHg4MzE4LCAweDFmMDQsIDB4NDVlNSwgMHg2MDQzLCAweDAwMDQsIDB4NjA4YiwKLQkweGJjOTQsIDB4NjA4ZiwgMHhmMGYwLCAweDYwNDMsIDB4MDAwNiwgMHg3MDgzLCAweDAwMDIsIDB4NzA4ZiwKLQkweDAwMDIsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NGIyMywgMHgwODBjLCAweDZhOTQsIDB4MDQ5MCwKLQkweDIwNjksIDB4YmM4MCwgMHg2OTMwLCAweGExOGUsIDB4MTEwMSwgMHgxNTM4LCAweDY4MzQsIDB4YTAwNSwKLQkweDE1MjAsIDB4NjkwMCwgMHhhMThjLCAweDAwZmYsIDB4MTExOCwgMHg2ODA0LCAweGEwMDUsIDB4MDE5MCwKLQkweDIwMTEsIDB4YmM4ZSwgMHgyMDE5LCAweGI2MDUsIDB4MjBhOSwgMHgwMDA0LCAweDIyMGMsIDB4MjMwNCwKLQkweGExMDIsIDB4MDIzMCwgMHgxMTkwLCAweDgyMTAsIDB4ODMxOCwgMHgxZjA0LCAweDQ2MTYsIDB4MDA2OCwKLQkweDcwOTcsIDB4MDAwMCwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDIwOTksIDB4YmM4MCwKLQkweDIwYTEsIDB4MDIwYiwgMHgyMGE5LCAweDAwMTQsIDB4NTNhNiwgMHg2MDQzLCAweDAwMDgsIDB4NjA0MywKLQkweDAwMDAsIDB4MDAxMCwgMHgwMGRlLCAweDAwMDUsIDB4NjA0MCwgMHhhMDg1LCAweDAxMDAsIDB4NjA0MiwKLQkweDYwMjAsIDB4ZDBiNCwgMHgxZGI4LCAweDYwYzMsIDB4MDAwYywgMHgyMDExLCAweGI4ZWIsIDB4MjAxMywKLQkweDAwMDAsIDB4NzA4NywgMHgwMDAwLCAweDIwZTEsIDB4OTA4MCwgMHg2MGEzLCAweDAwNTYsIDB4NjBhNywKLQkweDk1NzUsIDB4MDgwYywgMHg3ZGVhLCAweDBjMzAsIDB4MDAwNSwgMHg3MDhjLCAweGEwOGEsIDB4MDAxZCwKLQkweDEyMTAsIDB4MDAyMywgMHgwMDEwLCAweDA4MGMsIDB4MTUxYSwgMHgwMDA1LCAweDQ2ODAsIDB4NDY4ZiwKLQkweDQ2YjcsIDB4NDZkMCwgMHg0NmY0LCAweDQ3MWMsIDB4NDc0MCwgMHg0NzcxLCAweDQ3OTUsIDB4NDdiZCwKLQkweDQ3ZjQsIDB4NDgxYywgMHg0ODM4LCAweDQ4NGUsIDB4NDg2ZSwgMHg0ODgxLCAweDQ4ODksIDB4NDhiOSwKLQkweDQ4ZGQsIDB4NDkwNSwgMHg0OTI5LCAweDQ5NWEsIDB4NDk5NywgMHg0OWM2LCAweDQ5ZTIsIDB4NGEyMSwKLQkweDRhNDEsIDB4NGE1YSwgMHg0YTViLCAweDAwYzYsIDB4MjA2MSwgMHhiNjAwLCAweDYwMDMsIDB4MDAwNywKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDA0LCAweGEwODQsIDB4ZmZmOSwgMHg2MDA2LCAweDAwY2UsIDB4MDAwNSwKLQkweDYwOGIsIDB4YmM5NCwgMHg2MDhmLCAweGYwZjAsIDB4NjA0MywgMHgwMDAyLCAweDcwOGYsIDB4MDAwMSwKLQkweDIwMDksIDB4MDdkMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywgMHg2YTk0LCAweDAwMDUsIDB4MDBmNiwKLQkweDcwODQsIDB4YTA4NiwgMHgwMDE0LCAweDE1MDgsIDB4NjA0MywgMHgwMDAwLCAweDYwMjAsIDB4ZDBiNCwKLQkweDExZTAsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwgMHgxMTAyLCAweDExYTAsIDB4NzgzNCwKLQkweGEwMDUsIDB4MTE4OCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwgMHg3MGI4LCAweGEwMDUsIDB4MTExMCwKLQkweDcwYmIsIDB4MDAwMSwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywgMHg2YTBlLCAweDcwOGYsIDB4MDAxMCwKLQkweDA4MGMsIDB4NDg4OSwgMHgwMDEwLCAweDA4MGMsIDB4NGI3YiwgMHgwMGZlLCAweDAwMDUsIDB4NzA4ZiwKLQkweDAwMDMsIDB4NjA0MywgMHgwMDA0LCAweDIwMTEsIDB4NGIyMywgMHgwODBjLCAweDZhMGUsIDB4MDgwYywKLQkweDRiZjksIDB4MjBhMywgMHgxMTAyLCAweDIwYTMsIDB4MDAwMCwgMHgyMGE5LCAweDAwMGEsIDB4MjBhMywKLQkweDAwMDAsIDB4MWYwNCwgMHg0NmM3LCAweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDRiNTUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA4NCwgMHhhMDA1LCAweDAxZjAsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwZSwKLQkweGEwODYsIDB4MDAxNCwgMHgxMWE4LCAweDIwNzksIDB4YmM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwMiwKLQkweDExNzgsIDB4NzgzNCwgMHhhMDA1LCAweDExNjAsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBiOCwKLQkweGEwMDUsIDB4MTExMCwgMHg3MGJiLCAweDAwMDEsIDB4NzA4ZiwgMHgwMDA0LCAweDAwMjksIDB4MDAxMCwKLQkweDA4MGMsIDB4NGI3YiwgMHgwMGZlLCAweDAwMDUsIDB4NzA4ZiwgMHgwMDA1LCAweDA4MGMsIDB4NGJmOSwKLQkweDIwYTMsIDB4MTEwMywgMHgyMGEzLCAweDAwMDAsIDB4MzQzMCwgMHgyMDExLCAweGJjOGUsIDB4MDgwYywKLQkweDRjNGEsIDB4MTE2MCwgMHg3MDc4LCAweGEwMDUsIDB4MTE0OCwgMHg3MTUwLCAweGExODYsIDB4ZmZmZiwKLQkweDAxMjgsIDB4MDgwYywgMHg0YWU3LCAweDAxMTAsIDB4MDgwYywgMHg0YzI4LCAweDIwYTksIDB4MDAwOCwKLQkweDIyOTgsIDB4MjZhMCwgMHg1M2E2LCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywKLQkweDAwMTQsIDB4MDgwYywgMHg0YjU1LCAweDAwMDUsIDB4MDBmNiwgMHg3MDg0LCAweGEwMDUsIDB4MDFmMCwKLQkweDIwMTEsIDB4NGIyMywgMHgwODBjLCAweDZhMGUsIDB4YTA4NiwgMHgwMDE0LCAweDExYTgsIDB4MjA3OSwKLQkweGJjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDMsIDB4MTE3OCwgMHg3ODM0LCAweGEwMDUsIDB4MTE2MCwKLQkweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYjgsIDB4YTAwNSwgMHgxMTEwLCAweDcwYmIsIDB4MDAwMSwKLQkweDcwOGYsIDB4MDAwNiwgMHgwMDI5LCAweDAwMTAsIDB4MDgwYywgMHg0YjdiLCAweDAwZmUsIDB4MDAwNSwKLQkweDcwOGYsIDB4MDAwNywgMHgwODBjLCAweDRiZjksIDB4MjBhMywgMHgxMTA0LCAweDIwYTMsIDB4MDAwMCwKLQkweDM0MzAsIDB4MjAxMSwgMHhiYzhlLCAweDA4MGMsIDB4NGM0YSwgMHgxMWE4LCAweDcwNzgsIDB4YTAwNSwKLQkweDExOTAsIDB4NzE1OCwgMHhhMTg2LCAweGZmZmYsIDB4MDE3MCwgMHhhMTgwLCAweDJkZjksIDB4MjAwZCwKLQkweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDA4MGMsIDB4NGFlNywgMHgwMTI4LCAweDA4MGMsIDB4NDExZCwKLQkweDAxMTAsIDB4MDgwYywgMHgyODljLCAweDIwYTksIDB4MDAwOCwgMHgyMjk4LCAweDI2YTAsIDB4NTNhNiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywgMHgwMDE0LCAweDA4MGMsIDB4NGI1NSwKLQkweDAwMDUsIDB4MDBmNiwgMHg3MDg0LCAweGEwMDUsIDB4MDFmMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywKLQkweDZhMGUsIDB4YTA4NiwgMHgwMDE0LCAweDExYTgsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwKLQkweDExMDQsIDB4MTE3OCwgMHg3ODM0LCAweGEwMDUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwKLQkweDcwYjgsIDB4YTAwNSwgMHgxMTEwLCAweDcwYmIsIDB4MDAwMSwgMHg3MDhmLCAweDAwMDgsIDB4MDAyOSwKLQkweDAwMTAsIDB4MDgwYywgMHg0YjdiLCAweDAwZmUsIDB4MDAwNSwgMHg3MDhmLCAweDAwMDksIDB4MDgwYywKLQkweDRiZjksIDB4MjBhMywgMHgxMTA1LCAweDIwYTMsIDB4MDEwMCwgMHgzNDMwLCAweDA4MGMsIDB4NGM0YSwKLQkweDExNTAsIDB4NzA3OCwgMHhhMDA1LCAweDExMzgsIDB4MDgwYywgMHg0YTVjLCAweDExNzAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHgyODljLCAweDIwYTksIDB4MDAwOCwgMHgyMDk5LCAweGJjOGUsIDB4MjZhMCwKLQkweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTQsIDB4MDgwYywKLQkweDRiNTUsIDB4MDAxMCwgMHgwODBjLCAweDQ2NzMsIDB4MDAwNSwgMHgwMGY2LCAweDcwODQsIDB4YTAwNSwKLQkweDA1ODgsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwZSwgMHhhMDg2LCAweDAwMTQsIDB4MTU0MCwKLQkweDIwNzksIDB4YmM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwNSwgMHgxNTEwLCAweDc4MzQsIDB4MjAxMSwKLQkweDAxMDAsIDB4YTIxZSwgMHgxMTYwLCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYjgsIDB4YTAwNSwKLQkweDExMTAsIDB4NzBiYiwgMHgwMDAxLCAweDcwOGYsIDB4MDAwYSwgMHgwMGIxLCAweDAwOTgsIDB4YTAwNSwKLQkweDExNzgsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBiOCwgMHhhMDA1LCAweDExMTAsIDB4NzBiYiwKLQkweDAwMDEsIDB4NzA4YiwgMHgwMDAwLCAweDcwOGYsIDB4MDAwZSwgMHgwODBjLCAweDQ4NmUsIDB4MDAxMCwKLQkweDA4MGMsIDB4NGI3YiwgMHgwMGZlLCAweDAwMDUsIDB4NzA4ZiwgMHgwMDBiLCAweDIwMTEsIDB4YmMwZSwKLQkweDIyYTAsIDB4MjBhOSwgMHgwMDQwLCAweDIwMTksIDB4ZmZmZiwgMHg0M2E0LCAweDIwYTksIDB4MDAwMiwKLQkweDIwMDksIDB4MDAwMCwgMHg0MWE0LCAweDA4MGMsIDB4NGJmOSwgMHgyMGEzLCAweDExMDYsIDB4MjBhMywKLQkweDAwMDAsIDB4MDgwYywgMHg0YzRhLCAweDAxMTgsIDB4MjAxMywgMHgwMDAwLCAweDAwMjAsIDB4NzA1NCwKLQkweGEwODUsIDB4MDEwMCwgMHgyMDEyLCAweDIyOTgsIDB4MjBhOSwgMHgwMDQyLCAweDUzYTYsIDB4NjBjMywKLQkweDAwODQsIDB4MDgwYywgMHg0YjU1LCAweDAwMDUsIDB4MDBmNiwgMHg3MDg0LCAweGEwMDUsIDB4MDFiMCwKLQkweDIwMTEsIDB4NGIyMywgMHgwODBjLCAweDZhMGUsIDB4YTA4NiwgMHgwMDg0LCAweDExNjgsIDB4MjA3OSwKLQkweGJjODAsIDB4N2EzMCwgMHhhMjk2LCAweDExMDYsIDB4MTEzOCwgMHg3ODM0LCAweGEwMDUsIDB4MTEyMCwKLQkweDcwOGYsIDB4MDAwYywgMHgwMDI5LCAweDAwMTAsIDB4MDgwYywgMHg0YjdiLCAweDAwZmUsIDB4MDAwNSwKLQkweDcwOGYsIDB4MDAwZCwgMHgwODBjLCAweDRiZjksIDB4MjBhMywgMHgxMTA3LCAweDIwYTMsIDB4MDAwMCwKLQkweDIwOTksIDB4YmM4ZSwgMHgyMGE5LCAweDAwNDAsIDB4NTNhNiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NjBjMywgMHgwMDg0LCAweDA4MGMsIDB4NGI1NSwgMHgwMDA1LCAweDAwZjYsIDB4NzA4NCwKLQkweGEwMDUsIDB4MDFkMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywgMHg2YTBlLCAweGEwODYsIDB4MDA4NCwKLQkweDExODgsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwgMHgxMTA3LCAweDExNTgsIDB4NzgzNCwKLQkweGEwMDUsIDB4MTE0MCwgMHg3MDhiLCAweDAwMDEsIDB4MDgwYywgMHg0YmViLCAweDcwOGYsIDB4MDAwZSwKLQkweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDRiN2IsIDB4MDBmZSwgMHgwMDA1LCAweDcwOGYsIDB4MDAwZiwKLQkweDcwODcsIDB4MDAwMCwgMHg2MDhiLCAweGJjODUsIDB4NjA4ZiwgMHhiNWI1LCAweDYwNDMsIDB4MDAwNSwKLQkweDYwNDMsIDB4MDAwNCwgMHgyMDA5LCAweDA3ZDAsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwMiwKLQkweDAwMDUsIDB4NzA4NCwgMHhhMDA1LCAweDAxMjAsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwZSwKLQkweDAwMDUsIDB4NzA4ZiwgMHgwMDExLCAweDA4MGMsIDB4NGM0YSwgMHgxMWEwLCAweDcxNzAsIDB4ODFmZiwKLQkweDAxODgsIDB4MjAwOSwgMHgwMDAwLCAweDcwNzQsIDB4YTA4NCwgMHgwMGZmLCAweDA4MGMsIDB4Mjg1MiwKLQkweGExODYsIDB4MDA3ZSwgMHgwMTM4LCAweGExODYsIDB4MDA4MCwgMHgwMTIwLCAweDIwMTEsIDB4YmM4ZSwKLQkweDA4MGMsIDB4NGFlNywgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDIwOTksIDB4YmM4MCwKLQkweDIwYTEsIDB4MDIwYiwgMHg3NDg0LCAweGE0ODAsIDB4MDAxOCwgMHhhMDgwLCAweDAwMDcsIDB4YTA4NCwKLQkweDAzZjgsIDB4ODAwNCwgMHgyMGE4LCAweDUzYTYsIDB4NjBjMywgMHgwMDE0LCAweDA4MGMsIDB4NGI1NSwKLQkweDAwMDUsIDB4MDBmNiwgMHg3MDg0LCAweGEwMDUsIDB4MDFmMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywKLQkweDZhMGUsIDB4YTA4NiwgMHgwMDE0LCAweDExYTgsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwKLQkweDExMDMsIDB4MTE3OCwgMHg3ODM0LCAweGEwMDUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwKLQkweDcwYjgsIDB4YTAwNSwgMHgxMTEwLCAweDcwYmIsIDB4MDAwMSwgMHg3MDhmLCAweDAwMTIsIDB4MDAyOSwKLQkweDAwMTAsIDB4MDgwYywgMHg0YjdiLCAweDAwZmUsIDB4MDAwNSwgMHg3MDhmLCAweDAwMTMsIDB4MDgwYywKLQkweDRjMDUsIDB4MjBhMywgMHgxMTAzLCAweDIwYTMsIDB4MDAwMCwgMHgzNDMwLCAweDIwMTEsIDB4YmM4ZSwKLQkweDA4MGMsIDB4NGM0YSwgMHgxMTYwLCAweDcwNzgsIDB4YTAwNSwgMHgxMTQ4LCAweDcxNTAsIDB4YTE4NiwKLQkweGZmZmYsIDB4MDEyOCwgMHgwODBjLCAweDRhZTcsIDB4MDExMCwgMHgwODBjLCAweDRjMjgsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjI5OCwgMHgyNmEwLCAweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDRiNTUsIDB4MDAwNSwgMHgwMGY2LCAweDcwODQsIDB4YTAwNSwKLQkweDAxZjAsIDB4MjAxMSwgMHg0YjIzLCAweDA4MGMsIDB4NmEwZSwgMHhhMDg2LCAweDAwMTQsIDB4MTFhOCwKLQkweDIwNzksIDB4YmM4MCwgMHg3YTMwLCAweGEyOTYsIDB4MTEwNCwgMHgxMTc4LCAweDc4MzQsIDB4YTAwNSwKLQkweDExNjAsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBiOCwgMHhhMDA1LCAweDExMTAsIDB4NzBiYiwKLQkweDAwMDEsIDB4NzA4ZiwgMHgwMDE0LCAweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDRiN2IsIDB4MDBmZSwKLQkweDAwMDUsIDB4NzA4ZiwgMHgwMDE1LCAweDA4MGMsIDB4NGMwNSwgMHgyMGEzLCAweDExMDQsIDB4MjBhMywKLQkweDAwMDAsIDB4MzQzMCwgMHgyMDExLCAweGJjOGUsIDB4MDgwYywgMHg0YzRhLCAweDExYTgsIDB4NzA3OCwKLQkweGEwMDUsIDB4MTE5MCwgMHg3MTU4LCAweGExODYsIDB4ZmZmZiwgMHgwMTcwLCAweGExODAsIDB4MmRmOSwKLQkweDIwMGQsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4MDgwYywgMHg0YWU3LCAweDAxMjgsIDB4MDgwYywKLQkweDQxMWQsIDB4MDExMCwgMHgwODBjLCAweDI4OWMsIDB4MjBhOSwgMHgwMDA4LCAweDIyOTgsIDB4MjZhMCwKLQkweDUzYTYsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTQsIDB4MDgwYywKLQkweDRiNTUsIDB4MDAwNSwgMHgwMGY2LCAweDcwODQsIDB4YTAwNSwgMHgwNWI4LCAweDIwMTEsIDB4NGIyMywKLQkweDA4MGMsIDB4NmEwZSwgMHhhMDg2LCAweDAwMTQsIDB4MTU3MCwgMHgyMDc5LCAweGJjODAsIDB4N2EzMCwKLQkweGEyOTYsIDB4MTEwNSwgMHgxNTQwLCAweDc4MzQsIDB4MjAxMSwgMHgwMTAwLCAweGEyMWUsIDB4MTE0OCwKLQkweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYjgsIDB4YTAwNSwgMHgxMTEwLCAweDcwYmIsIDB4MDAwMSwKLQkweDAwNjAsIDB4YTAwNSwgMHgxMWMwLCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYjgsIDB4YTAwNSwKLQkweDExMTAsIDB4NzBiYiwgMHgwMDAxLCAweDcwOGIsIDB4MDAwMCwgMHg3YTM4LCAweGQyZjQsIDB4MDEzOCwKLQkweDIwMDEsIDB4YjY3NCwgMHgyMDA0LCAweGQwYTQsIDB4MTExMCwgMHg3MGQ3LCAweDAwMDgsIDB4NzA4ZiwKLQkweDAwMTYsIDB4MDAyOSwgMHgwMDEwLCAweDA4MGMsIDB4NGI3YiwgMHgwMGZlLCAweDAwMDUsIDB4MjBlMSwKLQkweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDIwOTksIDB4YmM4MCwgMHgyMGExLCAweDAyMGIsIDB4MjBhOSwKLQkweDAwMGUsIDB4NTNhNiwgMHgzNDMwLCAweDIwMTEsIDB4YmM4ZSwgMHg3MDhmLCAweDAwMTcsIDB4MDgwYywKLQkweDRjNGEsIDB4MTE1MCwgMHg3MDc4LCAweGEwMDUsIDB4MTEzOCwgMHgwODBjLCAweDRhNWMsIDB4MTE3MCwKLQkweGEwODUsIDB4MDAwMSwgMHgwODBjLCAweDI4OWMsIDB4MjBhOSwgMHgwMDA4LCAweDIwOTksIDB4YmM4ZSwKLQkweDI2YTAsIDB4NTNhNiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAxNCwKLQkweDA4MGMsIDB4NGI1NSwgMHgwMDEwLCAweDA4MGMsIDB4NDY3MywgMHgwMDA1LCAweDAwZjYsIDB4NzA4NCwKLQkweGEwMDUsIDB4MDFiMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywgMHg2YTBlLCAweGEwODYsIDB4MDA4NCwKLQkweDExNjgsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwgMHgxMTA2LCAweDExMzgsIDB4NzgzNCwKLQkweGEwMDUsIDB4MTEyMCwgMHg3MDhmLCAweDAwMTgsIDB4MDAyOSwgMHgwMDEwLCAweDA4MGMsIDB4NGI3YiwKLQkweDAwZmUsIDB4MDAwNSwgMHg3MDhmLCAweDAwMTksIDB4MDgwYywgMHg0YzA1LCAweDIwYTMsIDB4MTEwNiwKLQkweDIwYTMsIDB4MDAwMCwgMHgzNDMwLCAweDIwOTksIDB4YmM4ZSwgMHgyMDM5LCAweGJjMGUsIDB4MjdhMCwKLQkweDIwYTksIDB4MDA0MCwgMHg1M2EzLCAweDA4MGMsIDB4NGM0YSwgMHgxMWU4LCAweDI3MjgsIDB4MjUxNCwKLQkweDgyMDcsIDB4YTA4NCwgMHgwMGZmLCAweDgwMDAsIDB4MjAxOCwgMHhhMjk0LCAweDAwZmYsIDB4ODAwNywKLQkweGEyMDUsIDB4MjAyYSwgMHg3MDU0LCAweDIzMTAsIDB4ODIxNCwgMHhhMmEwLCAweGJjMGUsIDB4MjQxNCwKLQkweGEzOGMsIDB4MDAwMSwgMHgwMTE4LCAweGEyOTQsIDB4ZmYwMCwgMHgwMDE4LCAweGEyOTQsIDB4MDBmZiwKLQkweDgwMDcsIDB4YTIxNSwgMHgyMjIyLCAweDI3OTgsIDB4MjZhMCwgMHgyMGE5LCAweDAwNDAsIDB4NTNhNiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywgMHgwMDg0LCAweDA4MGMsIDB4NGI1NSwKLQkweDAwMDUsIDB4MDBmNiwgMHg3MDg0LCAweGEwMDUsIDB4MDFkMCwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywKLQkweDZhMGUsIDB4YTA4NiwgMHgwMDg0LCAweDExODgsIDB4MjA3OSwgMHhiYzgwLCAweDdhMzAsIDB4YTI5NiwKLQkweDExMDcsIDB4MTE1OCwgMHg3ODM0LCAweGEwMDUsIDB4MTE0MCwgMHg3MDhiLCAweDAwMDEsIDB4MDgwYywKLQkweDRiZWIsIDB4NzA4ZiwgMHgwMDFhLCAweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDRiN2IsIDB4MDBmZSwKLQkweDAwMDUsIDB4NzA4ZiwgMHgwMDFiLCAweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MjA5OSwKLQkweGJjODAsIDB4MjBhMSwgMHgwMjBiLCAweDc0ODQsIDB4YTQ4MCwgMHgwMDE4LCAweGEwODAsIDB4MDAwNywKLQkweGEwODQsIDB4MDNmOCwgMHg4MDA0LCAweDIwYTgsIDB4NTNhNiwgMHg2MGMzLCAweDAwODQsIDB4MDgwYywKLQkweDRiNTUsIDB4MDAwNSwgMHgwMDA1LCAweDAwMDUsIDB4MDA4NiwgMHgwMDk2LCAweDIwMjksIDB4YjY1MywKLQkweDI1MmMsIDB4MjBhOSwgMHgwMDA4LCAweDIwNDEsIDB4YmMwZSwgMHgyOGEwLCAweDIwOTksIDB4YmM4ZSwKLQkweDUzYTMsIDB4MjBhOSwgMHgwMDA4LCAweDIwMTEsIDB4MDAwNywgMHhkNWQ0LCAweDAxMTAsIDB4MjAxMSwKLQkweDAwMDAsIDB4MjgwMCwgMHhhMjAwLCAweDIwMGMsIDB4YTFhNiwgMHhmZmZmLCAweDExNDgsIDB4ZDVkNCwKLQkweDAxMTAsIDB4ODIxMCwgMHgwMDA4LCAweDgyMTEsIDB4MWYwNCwgMHg0YTcxLCAweDA4MDQsIDB4NGFkZiwKLQkweDgyZmYsIDB4MTE2MCwgMHhkNWQ0LCAweDAxMjAsIDB4YTFhNiwgMHgzZmZmLCAweDBkOTAsIDB4MDAyMCwKLQkweGExYTYsIDB4M2ZmZiwgMHgwOTA0LCAweDRhZGYsIDB4YTE4ZCwgMHhjMDAwLCAweDIwYTksIDB4MDAxMCwKLQkweDIwMTksIDB4MDAwMSwgMHhkNWQ0LCAweDAxMTAsIDB4MjAxOSwgMHgwMDEwLCAweDIxMjAsIDB4ZDVkNCwKLQkweDAxMTAsIDB4ODQyMywgMHgwMDA4LCAweDg0MjQsIDB4MTI0MCwgMHhkNWQ0LCAweDAxMTAsIDB4ODMxOSwKLQkweDAwMDgsIDB4ODMxOCwgMHgxZjA0LCAweDRhOTcsIDB4MDRkMCwgMHgyM2E4LCAweDIwMjEsIDB4MDAwMSwKLQkweDg0MjYsIDB4ODQyNSwgMHgxZjA0LCAweDRhYTksIDB4MjMyOCwgMHg4NTI5LCAweGEyYmUsIDB4MDAwNywKLQkweDAxNTgsIDB4MDAwNiwgMHgyMDM5LCAweDAwMDcsIDB4MjIwMCwgMHhhNzNhLCAweDAwMGUsIDB4MjdhOCwKLQkweGE1YTgsIDB4MDAxMCwgMHgxZjA0LCAweDRhYjgsIDB4NzU1MiwgMHhhNWM4LCAweDJkZjksIDB4MjkyZCwKLQkweGE1YWMsIDB4MDBmZiwgMHg3NTc2LCAweDY1MzIsIDB4NjUzNiwgMHgwMDE2LCAweDI1MDgsIDB4MDgwYywKLQkweDI4N2MsIDB4MDAxZSwgMHg2MGU3LCAweDAwMDAsIDB4NjVlYSwgMHgyMDE4LCAweDIzMDQsIDB4YTQwNSwKLQkweDIwMWEsIDB4NzA3YiwgMHgwMDAxLCAweDI2YTAsIDB4Mjg5OCwgMHgyMGE5LCAweDAwMDgsIDB4NTNhNiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMjgsIDB4YTAwNiwKLQkweDAwMTgsIDB4YTAwNiwgMHgwODBjLCAweDE1MWEsIDB4MDA5ZSwgMHgwMDhlLCAweDAwMDUsIDB4MjExOCwKLQkweDIwMjEsIDB4MDAwMCwgMHgyMDAxLCAweDAwMDcsIDB4YTM5YSwgMHgwMDEwLCAweDAyMTgsIDB4ODQyMCwKLQkweDgwMDEsIDB4MGNkMCwgMHgyMTE4LCAweDg0ZmYsIDB4MDEyMCwgMHhhMzlhLCAweDAwMTAsIDB4ODQyMSwKLQkweDFkZTAsIDB4MjAyMSwgMHgwMDAxLCAweDgzZmYsIDB4MDExOCwgMHg4NDIzLCAweDgzMTksIDB4MWRlOCwKLQkweGEyMzgsIDB4MjcwNCwgMHhhNDJjLCAweDExYjgsIDB4YTQwNSwgMHgyMDNhLCAweDcxNTIsIDB4YTFhMCwKLQkweDJkZjksIDB4MjQyZCwgMHhhNWFjLCAweDAwZmYsIDB4NzU3NiwgMHg2NTMyLCAweDY1MzYsIDB4MDAxNiwKLQkweDI1MDgsIDB4MDgwYywgMHgyODdjLCAweDAwMWUsIDB4NjBlNywgMHgwMDAwLCAweDY1ZWEsIDB4NzA3YiwKLQkweDAwMDEsIDB4YTA4NCwgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGI2MDAsIDB4NzA3ZiwKLQkweDAwMDAsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MjA3MSwKLQkweDAxNDAsIDB4MDgwYywgMHg0YzYxLCAweDA4MGMsIDB4N2RmMywgMHg3MDA0LCAweGEwODQsIDB4NDAwMCwKLQkweDAxMjAsIDB4NzAwMywgMHgxMDAwLCAweDcwMDMsIDB4MDAwMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YjYyMywgMHgyMDczLCAweDAwMDAsIDB4Nzg0MCwgMHgwMDI2LCAweDAwMTYsIDB4MjAwOSwKLQkweDAwZjcsIDB4MDgwYywgMHg0YzExLCAweDAwMWUsIDB4YTA5NCwgMHgwMDEwLCAweGEyODUsIDB4MDA4MCwKLQkweDc4NDIsIDB4N2E0MiwgMHgyMDA5LCAweDEzODgsIDB4MjAxMSwgMHg1YTE0LCAweDA4MGMsIDB4NmE5NCwKLQkweDAwMmUsIDB4MDEyZSwgMHgwMGZlLCAweDAwZWUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwMTEsIDB4YjhlYiwgMHgyMDEzLCAweDAwMDAsIDB4NzA4NywgMHgwMDAwLCAweDAxMmUsIDB4MjBlMSwKLQkweDkwODAsIDB4NjBhMywgMHgwMDU2LCAweDYwYTcsIDB4OTU3NSwgMHgwODBjLCAweDdkZWEsIDB4NjE0NCwKLQkweGQxODQsIDB4MDEyMCwgMHg3MThjLCAweGExOGQsIDB4MjAwMCwgMHgwMDE4LCAweDcxODAsIDB4YTE4ZCwKLQkweDEwMDAsIDB4MjAxMSwgMHhiOGJmLCAweDIxMTIsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NGIyMywKLQkweDA4MGMsIDB4NmE5NCwgMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4ODBmYywgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweDgxMDYsIDB4MDgwYywgMHg3ZmUwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsIDB4ODA2YiwKLQkweDAwM2UsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NGMxMSwgMHgyMDYxLCAweGI4ZjQsIDB4NjAxYiwKLQkweDAwMDAsIDB4NjAxZiwgMHgwMDAwLCAweDIwNjEsIDB4YjYwMCwgMHg2MDAzLCAweDAwMDEsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjA0MywgMHgwMDkwLCAweDYwNDMsIDB4MDAxMCwgMHgyMDA5LCAweGI4YmYsIDB4MjAwYiwKLQkweDAwMDAsIDB4MjAwOSwgMHgwMDJkLCAweDIwMTEsIDB4NGJiNCwgMHgwODBjLCAweDZhMDIsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBlNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg0YzYxLCAweDIwNzEsIDB4MDEwMCwgMHgwODBjLCAweDdkZjMsIDB4MjA3MSwKLQkweDAxNDAsIDB4NzAwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDEyMCwgMHg3MDAzLCAweDEwMDAsIDB4NzAwMywKLQkweDAwMDAsIDB4MDgwYywgMHg1YjQ5LCAweDAxYTgsIDB4MDgwYywgMHg1YjY3LCAweDExOTAsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwMywgMHhhYWFhLCAweDAwMTYsIDB4MDgwYywgMHgyOTIwLCAweDIwMDEsIDB4Yjg4ZiwKLQkweDIxMDIsIDB4MDAxZSwgMHgyMDAxLCAweGI4OWYsIDB4MjAwMywgMHgwMDAwLCAweDA4MGMsIDB4NWE3OSwKLQkweDAwMzAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjdmOCwgMHgwODBjLCAweDRiN2IsIDB4MDEyZSwKLQkweDAwMGUsIDB4MDBlZSwgMHgwMDA1LCAweDIwYTksIDB4MDA0MCwgMHgyMGExLCAweGJkYzAsIDB4MjA5OSwKLQkweGJjOGUsIDB4MzMwNCwgMHg4MDA3LCAweDIwYTIsIDB4OTM5OCwgMHg5NGEwLCAweDFmMDQsIDB4NGJmMSwKLQkweDAwMDUsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHgyMDk5LCAweGJjMDAsIDB4MjBhMSwKLQkweDAyMGIsIDB4MjBhOSwgMHgwMDBjLCAweDUzYTYsIDB4MDAwNSwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4MjA5OSwgMHhiYzgwLCAweDIwYTEsIDB4MDIwYiwgMHgyMGE5LCAweDAwMGMsIDB4NTNhNiwKLQkweDAwMDUsIDB4MDBjNiwgMHgwMDA2LCAweDIwNjEsIDB4MDEwMCwgMHg4MTBmLCAweDIwMDEsIDB4YjYzMSwKLQkweDIwMDQsIDB4YTAwNSwgMHgxMTM4LCAweDIwMDEsIDB4YjYxNSwgMHgyMDA0LCAweGEwODQsIDB4MDBmZiwKLQkweGExMDUsIDB4MDAxMCwgMHhhMTg1LCAweDAwZjcsIDB4NjA0YSwgMHgwMDBlLCAweDAwY2UsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDA0NiwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwgMHhkMGE0LCAweDAxNTgsIDB4YTAwNiwKLQkweDIwMjAsIDB4MjAwOSwgMHgwMDJhLCAweDA4MGMsIDB4YjFhNCwgMHgyMDAxLCAweGI2MGMsIDB4MjAwYywKLQkweGMxOTUsIDB4MjEwMiwgMHgyMDE5LCAweDAwMmEsIDB4MjAwOSwgMHgwMDAwLCAweDA4MGMsIDB4MmNhNCwKLQkweDAwNGUsIDB4MDAxZSwgMHgwMDA1LCAweDA4MGMsIDB4NGI3YiwgMHg3MDhmLCAweDAwMDAsIDB4NzA4NywKLQkweDAwMDAsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4YjYwYywgMHgyMDA0LCAweGQwOWMsIDB4MDEwMCwKLQkweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwMSwKLQkweDAxMDEsIDB4MjAwYywgMHhhMThkLCAweDAwMDYsIDB4MjEwMiwgMHgwMTJlLCAweDAwMWUsIDB4MDAwZSwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjBkLCAweDIwMDQsIDB4ZDBiYywgMHgwMTU4LCAweDAwMjYsIDB4MDAzNiwKLQkweDIwMTEsIDB4ODAxNywgMHgyMDAxLCAweGI4YmYsIDB4MjAxYywgMHgwODBjLCAweDNmMTMsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAwNSwgMHgwMTU2LCAweDIwYTksIDB4MDBmZiwgMHgyMDA5LCAweGI3MzUsIDB4YTAwNiwKLQkweDIwMGEsIDB4ODEwOCwgMHgxZjA0LCAweDRjNzgsIDB4MDE1ZSwgMHgwMDA1LCAweDAwZDYsIDB4MDAzNiwKLQkweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDIwNjksIDB4YjY1MiwgMHhhMDA2LCAweDYwMDIsIDB4NjAwNywKLQkweDA3MDcsIDB4NjAwYSwgMHg2MDBlLCAweDYwMTIsIDB4YTE5OCwgMHgyZGY5LCAweDIzMWQsIDB4YTM5YywKLQkweDAwZmYsIDB4NjMxNiwgMHgyMGE5LCAweDAwMDQsIDB4YWM5OCwgMHgwMDA2LCAweDIzYTAsIDB4NDBhNCwKLQkweDIwYTksIDB4MDAwNCwgMHhhYzk4LCAweDAwMGEsIDB4MjNhMCwgMHg0MGE0LCAweDYwM2UsIDB4NjA0MiwKLQkweDYwNGUsIDB4NjA1MiwgMHg2MDU2LCAweDYwNWEsIDB4NjA1ZSwgMHg2MDYyLCAweDYwNjYsIDB4NjA2YSwKLQkweDYwNmUsIDB4NjA3MiwgMHg2MDc2LCAweDYwN2EsIDB4NjA3ZSwgMHg2MDgyLCAweDYwODYsIDB4NjA4YSwKLQkweDYwOGUsIDB4NjA5MiwgMHg2MDk2LCAweDYwOWEsIDB4NjA5ZSwgMHg2MGFlLCAweDYxYTIsIDB4MDBkNiwKLQkweDYwYTQsIDB4YTA2ZCwgMHgwMTEwLCAweDA4MGMsIDB4MTYxNCwgMHg2MGE3LCAweDAwMDAsIDB4NjBhOCwKLQkweGEwNmQsIDB4MDExMCwgMHgwODBjLCAweDE2MTQsIDB4NjBhYiwgMHgwMDAwLCAweDAwZGUsIDB4YTAwNiwKLQkweDYwNGEsIDB4NjgxMCwgMHg2MDNhLCAweDY4MGMsIDB4NjA0NiwgMHg2ODE0LCAweGEwODQsIDB4MDBmZiwKLQkweDYwNDIsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDAzZSwgMHgwMGRlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg2OTQ0LCAweDZlNDgsIDB4YTY4NCwgMHgzZmZmLCAweGEwODIsIDB4NDAwMCwKLQkweDFhMDQsIDB4NGQ4YywgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHhhMTgyLCAweDAwZmYsIDB4MWEwNCwKLQkweDRkOTEsIDB4MjAwMSwgMHhiNjBjLCAweDIwMDQsIDB4YTA4NCwgMHgwMDAzLCAweDAxYzAsIDB4MjAwMSwKLQkweGI2MGMsIDB4MjAwNCwgMHhkMDg0LCAweDE5MDQsIDB4NGQ3NCwgMHhhMTg4LCAweGI3MzUsIDB4MjEwNCwKLQkweGEwNjUsIDB4MDkwNCwgMHg0ZDc0LCAweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwOGUsIDB4MDAwNiwKLQkweDE5MDQsIDB4NGQ3NCwgMHg2MDAwLCAweGQwYzQsIDB4MDkwNCwgMHg0ZDc0LCAweDAwNjgsIDB4YTE4OCwKLQkweGI3MzUsIDB4MjEwNCwgMHhhMDY1LCAweDA5MDQsIDB4NGQ1OSwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwOGUsIDB4MDAwNiwgMHgxOTA0LCAweDRkNWUsIDB4NjBhNCwgMHhhMDBkLCAweDAxMTgsIDB4MDgwYywKLQkweDUyNDYsIDB4MDVkMCwgMHg2MGE4LCAweGEwMGQsIDB4MDE4OCwgMHgwODBjLCAweDUyOTEsIDB4MTE3MCwKLQkweDY5NGMsIDB4ZDFmYywgMHgxMTE4LCAweDA4MGMsIDB4NGY1MCwgMHgwNDQ4LCAweDA4MGMsIDB4NGVmZiwKLQkweDY5NGMsIDB4ZDFlYywgMHgxNTIwLCAweDA4MGMsIDB4NTEzOCwgMHgwNDA4LCAweDY5NGMsIDB4YTE4NCwKLQkweGEwMDAsIDB4MDE3OCwgMHhkMWVjLCAweDAxNDAsIDB4ZDFmYywgMHgwMTE4LCAweDA4MGMsIDB4NTE0NywKLQkweDAwMjgsIDB4MDgwYywgMHg1MTQ3LCAweDAwMjgsIDB4ZDFmYywgMHgwMTE4LCAweDA4MGMsIDB4NGVmZiwKLQkweDAwNzAsIDB4NjA1MCwgMHhhMDBkLCAweDAxMzAsIDB4MmQwMCwgMHgyMDBhLCAweDY4MDMsIDB4MDAwMCwKLQkweDYwNTIsIDB4MDAyOCwgMHgyZDAwLCAweDYwNTIsIDB4NjA0ZSwgMHg2ODAzLCAweDAwMDAsIDB4MDgwYywKLQkweDZkMWMsIDB4YTAwNiwgMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwgMHgwMDA1LCAweDIwMDksIDB4MDAwMCwKLQkweDA0ZTAsIDB4MjAwMSwgMHgwMDI4LCAweDIwMDksIDB4MDAwMCwgMHgwNGI4LCAweGEwODIsIDB4MDAwNiwKLQkweDEyOTgsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBhYywgMHgxMTU4LCAweDYwYTAsIDB4ZDBiYywKLQkweDExNDAsIDB4NjEwMCwgMHhkMWZjLCAweDAxMjgsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MTAwMCwKLQkweDA0MjAsIDB4MjAwMSwgMHgwMDI4LCAweDAwYTgsIDB4MjAwOSwgMHhiNjBjLCAweDIxMGMsIDB4ZDE4YywKLQkweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwNjgsIDB4ZDE4NCwgMHgwMTE4LCAweDIwMDEsIDB4MDAwNCwKLQkweDAwNDAsIDB4MjAwMSwgMHgwMDI5LCAweDYxMDAsIDB4ZDFmYywgMHgwMTE4LCAweDIwMDksIDB4MTAwMCwKLQkweDAwNjAsIDB4MjAwOSwgMHgwMDAwLCAweDAwNDgsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwKLQkweDAwMjAsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwgMHhhMDA1LCAweDAxMmUsIDB4MDAwNSwKLQkweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4Njg0NCwgMHg4MDA3LCAweGEwODQsIDB4MDBmZiwKLQkweDIwMDgsIDB4YTE4MiwgMHgwMGZmLCAweDFhMDQsIDB4NGRlYiwgMHhhMTg4LCAweGI3MzUsIDB4MjEwNCwKLQkweGEwNjUsIDB4MDFjMCwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwgMHhhMDhlLCAweDAwMDYsIDB4MTFhOCwKLQkweDJjNzAsIDB4MDgwYywgMHg4NjRlLCAweDA1ZTgsIDB4MmUwMCwgMHg2MDFhLCAweDJkMDAsIDB4NjAxMiwKLQkweDYwMGIsIDB4ZmZmZiwgMHg2MDFmLCAweDAwMGEsIDB4MjAwOSwgMHgwMDAzLCAweDA4MGMsIDB4ODZkMywKLQkweGEwMDYsIDB4MDQ2MCwgMHgyMDAxLCAweDAwMjgsIDB4MDQ0MCwgMHhhMDgyLCAweDAwMDYsIDB4MTI5OCwKLQkweDIwMDEsIDB4YjYzNSwgMHgyMDA0LCAweGQwYWMsIDB4MTE1OCwgMHg2MGEwLCAweGQwYmMsIDB4MTE0MCwKLQkweDYxMDAsIDB4ZDFmYywgMHgwOWU4LCAweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDEwMDAsIDB4MDBhOCwKLQkweDIwMDEsIDB4MDAyOCwgMHgwMDkwLCAweDIwMDksIDB4YjYwYywgMHgyMTBjLCAweGQxOGMsIDB4MDExOCwKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDUwLCAweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAyOCwKLQkweDIwMDEsIDB4MDAyOSwgMHgwMDEwLCAweDIwMDEsIDB4MDAyOSwgMHhhMDA1LCAweDAxMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMDJjLCAweDBjYzgsIDB4MDBmNiwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjAxMSwgMHgwMDAwLCAweDIwNzksIDB4YjYwMCwgMHg2OTQ0LCAweGExOGMsIDB4ZmYwMCwKLQkweDgxMGYsIDB4YTE4MiwgMHgwMGZmLCAweDFhMDQsIDB4NGViNiwgMHgwODBjLCAweDUwMWIsIDB4MTFhMCwKLQkweDYwMDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODIsIDB4MDAwNiwgMHgxMjcwLCAweDY4NjQsIDB4YTBjNiwKLQkweDAwNmYsIDB4MDE1MCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwNCwgMHhkMGFjLCAweDE5MDQsIDB4NGU5ZiwKLQkweDYwYTAsIDB4ZDBiYywgMHgxOTA0LCAweDRlOWYsIDB4Njg2NCwgMHhhMGM2LCAweDAwNmYsIDB4MDExOCwKLQkweDIwMDgsIDB4MDgwNCwgMHg0ZTY4LCAweDY5NjgsIDB4MjE0MCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwKLQkweDc4ZDQsIDB4ZDBhYywgMHgxMTE4LCAweGExODIsIDB4MDA4MCwgMHgwNmQwLCAweGExODIsIDB4MDBmZiwKLQkweDE2YjgsIDB4NmE3MCwgMHg2YjZjLCAweDc4NzAsIDB4YTMwNiwgMHgxMTYwLCAweDc4NzQsIDB4YTI0ZSwKLQkweDExMTgsIDB4MjIwOCwgMHgyMzEwLCAweDA0NjAsIDB4YTljYywgMHhmZjAwLCAweDExMTgsIDB4MjIwOCwKLQkweDIzMTAsIDB4MDQzMCwgMHgwODBjLCAweDNlMGMsIDB4MmM3MCwgMHgwNTUwLCAweDIwMDksIDB4MDAwMCwKLQkweDIwMTEsIDB4MDAwMCwgMHhhMGM2LCAweDQwMDAsIDB4MTE2MCwgMHgwMDA2LCAweDJlNjAsIDB4MDgwYywKLQkweDUyYmMsIDB4MTEwOCwgMHhjMTg1LCAweDcwMDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4MDAwZSwKLQkweDAwODgsIDB4YTBjNiwgMHg0MDA3LCAweDExMTAsIDB4MjQwOCwgMHgwMDYwLCAweGEwYzYsIDB4NDAwOCwKLQkweDExMTgsIDB4MjcwOCwgMHgyNjEwLCAweDAwMzAsIDB4YTBjNiwgMHg0MDA5LCAweDExMDgsIDB4MDAxMCwKLQkweDIwMDEsIDB4NDAwNiwgMHg2ODY2LCAweDY5NmEsIDB4NmE2ZSwgMHgyMDAxLCAweDAwMzAsIDB4MDQ1MCwKLQkweDA4MGMsIDB4ODY0ZSwgMHgxMTM4LCAweDIwMDEsIDB4NDAwNSwgMHgyMDA5LCAweDAwMDMsIDB4MjAxMSwKLQkweDAwMDAsIDB4MGM4MCwgMHgyZTAwLCAweDYwMWEsIDB4MDgwYywgMHhhMGUzLCAweDJkMDAsIDB4NjAxMiwKLQkweDYwMWYsIDB4MDAwMSwgMHg2ODM4LCAweGQ4OGMsIDB4MDEwOCwgMHhjMGY1LCAweDY4M2EsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDJjZDEsIDB4MDEyZSwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywKLQkweDRmNWQsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NGY2ZiwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywKLQkweDg2ZDMsIDB4YTAwNiwgMHhhMDA1LCAweDAxMmUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMjgsIDB4MjAwOSwgMHgwMDAwLCAweDBjYjAsIDB4MjAwOSwgMHhiNjBjLCAweDIxMGMsIDB4ZDE4YywKLQkweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMzgsIDB4ZDE4NCwgMHgwMTE4LCAweDIwMDEsIDB4MDAwNCwKLQkweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwgMHgwYzIwLCAweDIwMDEsIDB4MDAyOSwKLQkweDIwMDksIDB4MDAwMCwgMHgwOGY4LCAweDY5NDQsIDB4NmU0OCwgMHhhNjg0LCAweDNmZmYsIDB4YTA4MiwKLQkweDQwMDAsIDB4MTZiOCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHhhMTgyLCAweDAwZmYsIDB4MTJlMCwKLQkweGExODgsIDB4YjczNSwgMHgyMTA0LCAweGEwNjUsIDB4MDFiOCwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwKLQkweGEwOGUsIDB4MDAwNiwgMHgxMWIwLCAweDY4NGMsIDB4ZDBlYywgMHgwMTIwLCAweDA4MGMsIDB4NTE0NywKLQkweDA0MzEsIDB4MDAzMCwgMHgwNDIxLCAweDY4NGMsIDB4ZDBmYywgMHgwMTEwLCAweDA4MGMsIDB4NTEzOCwKLQkweDA4MGMsIDB4NTE4NSwgMHhhMDA2LCAweDAwYzgsIDB4MjAwMSwgMHgwMDI4LCAweDIwMDksIDB4MDAwMCwKLQkweDAwYTAsIDB4YTA4MiwgMHgwMDA2LCAweDEyNDAsIDB4NjEwMCwgMHhkMWZjLCAweDBkMjAsIDB4MjAwMSwKLQkweDAwMjksIDB4MjAwOSwgMHgxMDAwLCAweDAwNDgsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwKLQkweDAwMjAsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksIDB4MDAwMCwgMHhhMDA1LCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg2MDUwLCAweGEwMGQsIDB4MDEzOCwgMHgyZDAwLCAweDIwMGEsIDB4NjgwMywKLQkweDAwMDAsIDB4NjA1MiwgMHgwMTJlLCAweDAwMDUsIDB4MmQwMCwgMHg2MDUyLCAweDYwNGUsIDB4NjgwMywKLQkweDAwMDAsIDB4MGNjMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MDRjLCAweGEwMDUsIDB4MDE3MCwKLQkweDAwZTYsIDB4MjA3MSwgMHhiOGUxLCAweDcwMDQsIDB4YTA4NiwgMHgwMDAyLCAweDAxNjgsIDB4MDBlZSwKLQkweDYwNGMsIDB4NjgwMiwgMHgyZDAwLCAweDYwNGUsIDB4MDEyZSwgMHgwMDA1LCAweDJkMDAsIDB4NjA1MiwKLQkweDYwNGUsIDB4NjgwMywgMHgwMDAwLCAweDBjYzAsIDB4NzAxYywgMHhhYzA2LCAweDFkODAsIDB4NjA0YywKLQkweDIwNzAsIDB4NzAwMCwgMHg2ODAyLCAweDJkMDAsIDB4NzAwMiwgMHgwMGVlLCAweDAxMmUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwNGMsIDB4YTA2ZCwgMHgwMTMwLCAweDY4MDAsIDB4YTAwNSwKLQkweDExMDgsIDB4NjA1MiwgMHg2MDRlLCAweGFkMDUsIDB4MDEyZSwgMHgwMDA1LCAweDYwNGMsIDB4YTA2ZCwKLQkweDAxMzAsIDB4NjgwMCwgMHhhMDA1LCAweDExMDgsIDB4NjA1MiwgMHg2MDRlLCAweGFkMDUsIDB4MDAwNSwKLQkweDY4MDMsIDB4MDAwMCwgMHg2MDg0LCAweGEwMGQsIDB4MDEyMCwgMHgyZDAwLCAweDIwMGEsIDB4NjA4NiwKLQkweDAwMDUsIDB4MmQwMCwgMHg2MDg2LCAweDYwODIsIDB4MGNkOCwgMHgwMTI2LCAweDAwYzYsIDB4MDAyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg2MjE4LCAweDIyNjAsIDB4NjIwMCwgMHhhMDA1LCAweDAxMTAsIDB4YzI4NSwKLQkweDAwMDgsIDB4YzI4NCwgMHg2MjAyLCAweDAwMmUsIDB4MDBjZSwgMHgwMTJlLCAweDAwMDUsIDB4MDEyNiwKLQkweDAwYzYsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTgsIDB4MjI2MCwgMHg2MjA0LCAweDAwMDYsIDB4YTA4NiwKLQkweDAwMDYsIDB4MTE4MCwgMHg2MDljLCAweGQwYWMsIDB4MDE2OCwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwKLQkweGQwYTQsIDB4MDE0MCwgMHhhMjg0LCAweGZmMDAsIDB4ODAwNywgMHhhMDg2LCAweDAwMDcsIDB4MTExMCwKLQkweDIwMTEsIDB4MDYwMCwgMHgwMDBlLCAweGEyOTQsIDB4ZmYwMCwgMHhhMjE1LCAweDYyMDYsIDB4MDAwNiwKLQkweGEwODYsIDB4MDAwNiwgMHgxMTI4LCAweDYyOTAsIDB4ODJmZiwgMHgxMTEwLCAweDA4MGMsIDB4MTUxYSwKLQkweDAwMGUsIDB4MDBjZSwgMHgwMTJlLCAweDAwMDUsIDB4MDEyNiwgMHgwMGM2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYyMTgsIDB4MjI2MCwgMHg2MjA0LCAweDAwMDYsIDB4YTA4NiwgMHgwMDA2LCAweDExNzgsIDB4NjA5YywKLQkweGQwYTQsIDB4MDE2MCwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwgMHhkMGFjLCAweDExMzgsIDB4YTI4NCwKLQkweDAwZmYsIDB4YTA4NiwgMHgwMDA3LCAweDExMTAsIDB4MjAxMSwgMHgwMDA2LCAweDAwMGUsIDB4YTI5NCwKLQkweDAwZmYsIDB4ODAwNywgMHhhMjE1LCAweDYyMDYsIDB4MDBjZSwgMHgwMTJlLCAweDAwMDUsIDB4MDAyNiwKLQkweGExODIsIDB4MDBmZiwgMHgwMjE4LCAweGEwODUsIDB4MDAwMSwgMHgwMGIwLCAweGExOTAsIDB4YjczNSwKLQkweDIyMDQsIDB4YTA2NSwgMHgxMTgwLCAweDAwMTYsIDB4MDBkNiwgMHgwODBjLCAweDE1ZTQsIDB4MmQ2MCwKLQkweDAwZGUsIDB4MDAxZSwgMHgwZDgwLCAweDJjMDAsIDB4MjAxMiwgMHg2MGE3LCAweDAwMDAsIDB4NjBhYiwKLQkweDAwMDAsIDB4MDgwYywgMHg0YzdlLCAweGEwMDYsIDB4MDAyZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDAyNiwgMHhhMTgyLCAweDAwZmYsIDB4MDIxOCwgMHhhMDg1LCAweDAwMDEsIDB4MDQ4MCwKLQkweDAwZDYsIDB4YTE5MCwgMHhiNzM1LCAweDIyMDQsIDB4YTA2ZCwgMHgwNTQwLCAweDIwMTMsIDB4MDAwMCwKLQkweDAwZDYsIDB4MDBjNiwgMHgyZDYwLCAweDYwYTQsIDB4YTA2ZCwgMHgwMTEwLCAweDA4MGMsIDB4MTYxNCwKLQkweDYwYTgsIDB4YTA2ZCwgMHgwMTEwLCAweDA4MGMsIDB4MTYxNCwgMHgwMGNlLCAweDAwZGUsIDB4MDBkNiwKLQkweDAwYzYsIDB4NjhhYywgMHgyMDYwLCAweDhjZmYsIDB4MDE2OCwgMHg2MDBjLCAweDAwMDYsIDB4NjAxMCwKLQkweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxMTAsIDB4MDgwYywgMHgxNjI0LCAweDA4MGMsIDB4ODZhNCwKLQkweDAwY2UsIDB4MGM4OCwgMHgwMGNlLCAweDAwZGUsIDB4MDgwYywgMHgxNjE0LCAweDAwZGUsIDB4YTAwNiwKLQkweDAwMmUsIDB4MDEyZSwgMHgwMDA1LCAweDAwMTYsIDB4YTE4MiwgMHgwMGZmLCAweDAyMTgsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDAzMCwgMHhhMTg4LCAweGI3MzUsIDB4MjEwNCwgMHhhMDY1LCAweDBkYzAsIDB4YTAwNiwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMGQ2LCAweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDYwMGIsIDB4MDAwMCwKLQkweDYwMGYsIDB4MDAwMCwgMHg2MDAwLCAweGMwOGMsIDB4NjAwMiwgMHgwODBjLCAweDViNDEsIDB4MTU1OCwKLQkweDYwYTAsIDB4YTA4NiwgMHgwMDdlLCAweDIwNjksIDB4YmM5MCwgMHgwMTMwLCAweDIwMDEsIDB4YjYzNSwKLQkweDIwMDQsIDB4ZDBhYywgMHgxNTAwLCAweDAwOTgsIDB4MmQwNCwgMHhkMGU0LCAweDAxZTAsIDB4MDBkNiwKLQkweDIwNjksIDB4YmM4ZSwgMHgwMGM2LCAweDIwNjEsIDB4YjhiMiwgMHg2ODEwLCAweDIwNjIsIDB4NjgxNCwKLQkweDYwMDYsIDB4NjgxOCwgMHg2MDBhLCAweDY4MWMsIDB4NjAwZSwgMHgwMGNlLCAweDAwZGUsIDB4OGQ2OSwKLQkweDJkMDQsIDB4MjA2OSwgMHgwMTQwLCAweGEwMDUsIDB4MTExMCwgMHgyMDAxLCAweDAwMDEsIDB4Njg4NiwKLQkweDIwNjksIDB4YjYwMCwgMHg2OGE2LCAweDIwNjksIDB4YmM4ZSwgMHg2ODA4LCAweDYwNWUsIDB4NjgxMCwKLQkweDYwNjIsIDB4NjEzOCwgMHhhMTBhLCAweDAyMDgsIDB4NjAzYSwgMHg2ODE0LCAweDYwNjYsIDB4MjA5OSwKLQkweGJjOTYsIDB4YWM4OCwgMHgwMDBhLCAweDIxYTAsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MjA5OSwKLQkweGJjOWEsIDB4YWM4OCwgMHgwMDA2LCAweDIxYTAsIDB4MjBhOSwgMHgwMDA0LCAweDUzYTMsIDB4MjA2OSwKLQkweGJjYWUsIDB4NjgwOCwgMHg2MDZhLCAweDY5MGMsIDB4NjE2ZSwgMHg2ODEwLCAweDYwNzIsIDB4NjgxOCwKLQkweDYwNzYsIDB4NjBhMCwgMHhhMDg2LCAweDAwN2UsIDB4MTEyMCwgMHgyMDY5LCAweGJjOGUsIDB4NjkwYywKLQkweDYxNmUsIDB4YTE4MiwgMHgwMjExLCAweDEyMTgsIDB4MjAwOSwgMHgwMDA4LCAweDA0MDAsIDB4YTE4MiwKLQkweDAyNTksIDB4MTIxOCwgMHgyMDA5LCAweDAwMDcsIDB4MDBkMCwgMHhhMTgyLCAweDAyYzEsIDB4MTIxOCwKLQkweDIwMDksIDB4MDAwNiwgMHgwMGEwLCAweGExODIsIDB4MDM0OSwgMHgxMjE4LCAweDIwMDksIDB4MDAwNSwKLQkweDAwNzAsIDB4YTE4MiwgMHgwNDIxLCAweDEyMTgsIDB4MjAwOSwgMHgwMDA0LCAweDAwNDAsIDB4YTE4MiwKLQkweDA1ODEsIDB4MTIxOCwgMHgyMDA5LCAweDAwMDMsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDIsIDB4NjE5MiwKLQkweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDAwZGUsIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4MDBlNiwKLQkweDIwNzEsIDB4YmM4ZCwgMHgyZTA0LCAweDY4OTYsIDB4MjA3MSwgMHhiYzhlLCAweDcwMDQsIDB4Njg5YSwKLQkweDcwMWMsIDB4Njg5ZSwgMHg2YTAwLCAweDIwMDksIDB4YjY3MiwgMHgyMTBjLCAweGQwYmMsIDB4MDEyMCwKLQkweGQxZWMsIDB4MDExMCwgMHhjMmFkLCAweDAwMDgsIDB4YzJhYywgMHhkMGM0LCAweDAxMjAsIDB4ZDFlNCwKLQkweDAxMTAsIDB4YzJiZCwgMHgwMDA4LCAweGMyYmMsIDB4NmEwMiwgMHgwMGVlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDBkNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MGE0LCAweGEwNmQsIDB4MDFjMCwKLQkweDY5MDAsIDB4ODFmZiwgMHgxNTQwLCAweDZhMDQsIDB4YTI4MiwgMHgwMDEwLCAweDE2NDgsIDB4YWQ4OCwKLQkweDAwMDQsIDB4MjBhOSwgMHgwMDEwLCAweDIxMDQsIDB4YTA4NiwgMHhmZmZmLCAweDAxMjgsIDB4ODEwOCwKLQkweDFmMDQsIDB4NTBmMywgMHgwODBjLCAweDE1MWEsIDB4MjYwYSwgMHg4MjEwLCAweDZhMDYsIDB4MDA5OCwKLQkweDA4MGMsIDB4MTVmZCwgMHgwMWE4LCAweDJkMDAsIDB4NjBhNiwgMHg2ODAzLCAweDAwMDAsIDB4YWQ4OCwKLQkweDAwMDQsIDB4MjBhOSwgMHgwMDEwLCAweDIwMGIsIDB4ZmZmZiwgMHg4MTA4LCAweDFmMDQsIDB4NTEwYiwKLQkweDY4MDcsIDB4MDAwMSwgMHg2ZTEyLCAweGEwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwZGUsIDB4MDAwNSwKLQkweGEwMDYsIDB4MGNkOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMGQ2LCAweDYwYTQsIDB4YTAwZCwKLQkweDAxYTAsIDB4MjE2OCwgMHg2ODAwLCAweGEwMDUsIDB4MTE2MCwgMHgwODBjLCAweDUyNDYsIDB4MTE2OCwKLQkweDIwMGIsIDB4ZmZmZiwgMHg2ODA0LCAweGEwOGEsIDB4MDAwMiwgMHgwMjE4LCAweDgwMDEsIDB4NjgwNiwKLQkweDAwMjAsIDB4MDgwYywgMHgxNjE0LCAweDYwYTcsIDB4MDAwMCwgMHgwMGRlLCAweDAxMmUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NTJhNCwgMHgwMDEwLCAweDA4MGMsIDB4NGVmZiwKLQkweDA4MGMsIDB4NTFiZSwgMHgxZGQ4LCAweDA4MGMsIDB4NTE4NSwgMHgwMTJlLCAweDAwMDUsIDB4MDBkNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwYTgsIDB4YTA2ZCwgMHgwMWMwLCAweDY5NTAsIDB4ODFmZiwKLQkweDE1NDAsIDB4NmE1NCwgMHhhMjgyLCAweDAwMTAsIDB4MTY3MCwgMHhhZDg4LCAweDAwMTgsIDB4MjBhOSwKLQkweDAwMTAsIDB4MjEwNCwgMHhhMDg2LCAweGZmZmYsIDB4MDEyOCwgMHg4MTA4LCAweDFmMDQsIDB4NTE1OSwKLQkweDA4MGMsIDB4MTUxYSwgMHgyNjBhLCAweDgyMTAsIDB4NmE1NiwgMHgwMDk4LCAweDA4MGMsIDB4MTVmZCwKLQkweDAxZDAsIDB4MmQwMCwgMHg2MGFhLCAweDY4NTMsIDB4MDAwMCwgMHhhZDg4LCAweDAwMTgsIDB4MjBhOSwKLQkweDAwMTAsIDB4MjAwYiwgMHhmZmZmLCAweDgxMDgsIDB4MWYwNCwgMHg1MTcxLCAweDY4NTcsIDB4MDAwMSwKLQkweDZlNjIsIDB4MDAxMCwgMHgwODBjLCAweDRmNTAsIDB4MDA4OSwgMHgxZGUwLCAweGEwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBkZSwgMHgwMDA1LCAweGEwMDYsIDB4MGNkOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NmQxYywgMHgwMTJlLCAweDAwMDUsIDB4YTAxZSwgMHgwMDEwLCAweDIwMTksIDB4MDAwMSwKLQkweGEwMGUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjA0YywgMHgyMDY4LCAweDYwMDAsIDB4ZDBkYywKLQkweDExNzAsIDB4OGRmZiwgMHgwMWY4LCAweDgzZmYsIDB4MDEyMCwgMHg2ODQ4LCAweGE2MDYsIDB4MDE1OCwKLQkweDAwMzAsIDB4NjgzYywgMHhhNDA2LCAweDExMTgsIDB4Njg0MCwgMHhhNTA2LCAweDAxMjAsIDB4MmQwOCwKLQkweDY4MDAsIDB4MjA2OCwgMHgwYzcwLCAweDA4MGMsIDB4ODFhNSwgMHg2YTAwLCAweDYwNGMsIDB4YWQwNiwKLQkweDExMTAsIDB4NjI0ZSwgMHgwMDE4LCAweGExODAsIDB4MDAwMCwgMHgyMjAyLCAweDgyZmYsIDB4MTExMCwKLQkweDYxNTIsIDB4OGRmZiwgMHgwMTJlLCAweDAwMDUsIDB4YTAxZSwgMHgwMDEwLCAweDIwMTksIDB4MDAwMSwKLQkweGEwMGUsIDB4NjA4MCwgMHgyMDY4LCAweDhkZmYsIDB4MDFlOCwgMHg4M2ZmLCAweDAxMjAsIDB4Njg0OCwKLQkweGE2MDYsIDB4MDE1OCwgMHgwMDMwLCAweDY4M2MsIDB4YTQwNiwgMHgxMTE4LCAweDY4NDAsIDB4YTUwNiwKLQkweDAxMjAsIDB4MmQwOCwgMHg2ODAwLCAweDIwNjgsIDB4MGM3MCwgMHg2YTAwLCAweDYwODAsIDB4YWQwNiwKLQkweDExMTAsIDB4NjI4MiwgMHgwMDE4LCAweGExODAsIDB4MDAwMCwgMHgyMjAyLCAweDgyZmYsIDB4MTExMCwKLQkweDYxODYsIDB4OGRmZiwgMHgwMDA1LCAweGEwMTYsIDB4MDgwYywgMHg1MjQwLCAweDExMTAsIDB4MjAxMSwKLQkweDAwMDEsIDB4MDgwYywgMHg1MjhiLCAweDExMTAsIDB4YTI5NSwgMHgwMDAyLCAweDAwMDUsIDB4MDgwYywKLQkweDUyYmMsIDB4MDExOCwgMHgwODBjLCAweDlkY2IsIDB4MDAxMCwgMHhhMDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDA4MGMsIDB4NTJiYywgMHgwMTE4LCAweDA4MGMsIDB4OWQ1YiwgMHgwMDEwLCAweGEwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDgwYywgMHg1MmJjLCAweDAxMTgsIDB4MDgwYywgMHg5ZGFlLCAweDAwMTAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHgwODBjLCAweDUyYmMsIDB4MDExOCwgMHgwODBjLCAweDlkNzcsIDB4MDAxMCwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDA1LCAweDA4MGMsIDB4NTJiYywgMHgwMTE4LCAweDA4MGMsIDB4OWRlNywKLQkweDAwMTAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDEyNiwgMHgwMDA2LCAweDAwZDYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjA4MCwgMHhhMDZkLCAweDAxYTAsIDB4NjgwMCwgMHgwMDA2LCAweDY4MzcsIDB4MDEwMywKLQkweDZiNGEsIDB4Njg0NywgMHgwMDAwLCAweDA4MGMsIDB4OWY4OCwgMHgwMDA2LCAweDYwMDAsIDB4ZDBmYywKLQkweDAxMTAsIDB4MDgwYywgMHhiNDQ1LCAweDAwMGUsIDB4MDgwYywgMHg1NDdhLCAweDAwMGUsIDB4MGM1MCwKLQkweDYwODMsIDB4MDAwMCwgMHg2MDg3LCAweDAwMDAsIDB4MDBkZSwgMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwKLQkweDYwYTQsIDB4YTAwZCwgMHgxMTE4LCAweGEwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwZTYsIDB4MjE3MCwKLQkweDcwMDAsIDB4YTAwNSwgMHgxMTY4LCAweDIwYTksIDB4MDAxMCwgMHhhZTg4LCAweDAwMDQsIDB4MjEwNCwKLQkweGE2MDYsIDB4MDEzMCwgMHg4MTA4LCAweDFmMDQsIDB4NTI0ZiwgMHhhMDg1LCAweDAwMDEsIDB4MDAwOCwKLQkweGEwMDYsIDB4MDBlZSwgMHgwMDA1LCAweDAwZDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjBhNCwKLQkweGEwNmQsIDB4MTEyOCwgMHgwODBjLCAweDE1ZmQsIDB4MDFhMCwgMHgyZDAwLCAweDYwYTYsIDB4NjgwMywKLQkweDAwMDEsIDB4NjgwNywgMHgwMDAwLCAweGFkODgsIDB4MDAwNCwgMHgyMGE5LCAweDAwMTAsIDB4MjAwYiwKLQkweGZmZmYsIDB4ODEwOCwgMHgxZjA0LCAweDUyNmYsIDB4YTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBkZSwKLQkweDAwMDUsIDB4YTAwNiwgMHgwY2Q4LCAweDAwZDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjBhNCwKLQkweGEwNmQsIDB4MDEzMCwgMHg2MGE3LCAweDAwMDAsIDB4MDgwYywgMHgxNjE0LCAweGEwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBkZSwgMHgwMDA1LCAweDYwYTgsIDB4YTAwZCwgMHgxMTE4LCAweGEwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMTcwLCAweDcwNTAsIDB4YTAwNSwgMHgxMTYwLCAweDIwYTksIDB4MDAxMCwKLQkweGFlODgsIDB4MDAxOCwgMHgyMTA0LCAweGE2MDYsIDB4MDEyOCwgMHg4MTA4LCAweDFmMDQsIDB4NTI5YSwKLQkweGEwODUsIDB4MDAwMSwgMHgwMGVlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MGMxOSwKLQkweDExODgsIDB4MjAwYiwgMHhmZmZmLCAweDAwZDYsIDB4NjBhOCwgMHgyMDY4LCAweDY4NTQsIDB4YTA4YSwKLQkweDAwMDIsIDB4MDIxOCwgMHg4MDAxLCAweDY4NTYsIDB4MDAyMCwgMHgwODBjLCAweDE2MTQsIDB4NjBhYiwKLQkweDAwMDAsIDB4MDBkZSwgMHgwMTJlLCAweDAwMDUsIDB4NjA5YywgMHhkMGE0LCAweDAwMDUsIDB4MDBmNiwKLQkweDA4MGMsIDB4NWI0MSwgMHgwMWIwLCAweDcxYjgsIDB4ODFmZiwgMHgxMTk4LCAweDcxZDQsIDB4ZDE5YywKLQkweDAxODAsIDB4MjAwMSwgMHgwMDdlLCAweGEwODAsIDB4YjczNSwgMHgyMDA0LCAweGEwN2QsIDB4MDE0OCwKLQkweDc4MDQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwNiwgMHgxMTE4LCAweDc4MDAsIDB4YzBlZCwKLQkweDc4MDIsIDB4MjA3OSwgMHhiNjUyLCAweDc4MDQsIDB4ZDBhNCwgMHgwMWU4LCAweDAxNTYsIDB4MDBjNiwKLQkweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MDAxNiwgMHgwODBjLCAweDUwMWIsIDB4MTE2OCwKLQkweDYwMDQsIDB4YTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4YTA5NiwgMHgwMDA0LCAweDAxMTgsIDB4YTA4NiwKLQkweDAwMDYsIDB4MTExOCwgMHg2MDAwLCAweGMwZWQsIDB4NjAwMiwgMHgwMDFlLCAweDgxMDgsIDB4MWYwNCwKLQkweDUyZTQsIDB4MDBjZSwgMHgwMTVlLCAweDA4MGMsIDB4NTM3YiwgMHgwMTIwLCAweDIwMDEsIDB4YjhiNSwKLQkweDIwMGMsIDB4MDAzOCwgMHgyMDc5LCAweGI2NTIsIDB4NzgwNCwgMHhkMGE0LCAweDAxMzAsIDB4MjAwOSwKLQkweDA3ZDAsIDB4MjAxMSwgMHg1MzBmLCAweDA4MGMsIDB4NmE5NCwgMHgwMGZlLCAweDAwMDUsIDB4MjAxMSwKLQkweDUzMGYsIDB4MDgwYywgMHg2YTBlLCAweDA4MGMsIDB4NTM3YiwgMHgwMWYwLCAweDIwMDEsIDB4YjdiMywKLQkweDIwMDQsIDB4YTA4MCwgMHgwMDAwLCAweDIwMGMsIDB4YzFlYywgMHgyMTAyLCAweDIwMDEsIDB4YjY1MywKLQkweDIwMDQsIDB4ZDBhNCwgMHgwMTMwLCAweDIwMDksIDB4MDdkMCwgMHgyMDExLCAweDUzMGYsIDB4MDgwYywKLQkweDZhOTQsIDB4MDBlNiwgMHgyMDcxLCAweGI2MDAsIDB4NzA3MywgMHgwMDAwLCAweDcwNzcsIDB4MDAwMCwKLQkweDA4MGMsIDB4MmFlZCwgMHgwMGVlLCAweDA0YjAsIDB4MDE1NiwgMHgwMGM2LCAweDIwYTksIDB4MDA3ZiwKLQkweDIwMDksIDB4MDAwMCwgMHgwMDE2LCAweDA4MGMsIDB4NTAxYiwgMHgxNTMwLCAweDYwMDAsIDB4ZDBlYywKLQkweDA1MTgsIDB4MDA0NiwgMHg2MmEwLCAweGEyOTQsIDB4MDBmZiwgMHg4MjI3LCAweGEwMDYsIDB4MjAwOSwKLQkweDAwMjksIDB4MDgwYywgMHhiMWE0LCAweDYwMDAsIDB4YzBlNSwgMHhjMGVjLCAweDYwMDIsIDB4NjAwNCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg1LCAweDA3MDAsIDB4NjAwNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywKLQkweDZlNjcsIDB4MDA3NiwgMHgyMDM5LCAweDAwMDAsIDB4MDgwYywgMHg2ZDc0LCAweDIwMDksIDB4MDAwMCwKLQkweDA4MGMsIDB4YWYzZSwgMHgwMDdlLCAweDAwNGUsIDB4MDAxZSwgMHg4MTA4LCAweDFmMDQsIDB4NTMzYSwKLQkweDAwY2UsIDB4MDE1ZSwgMHgwMDA1LCAweDAwYzYsIDB4NjAxOCwgMHgyMDYwLCAweDYwMDAsIDB4YzBlYywKLQkweDYwMDIsIDB4MDBjZSwgMHgwMDA1LCAweDc4MTgsIDB4MjAwNCwgMHhkMGFjLCAweDAwMDUsIDB4NzgxOCwKLQkweDIwMDQsIDB4ZDBiYywgMHgwMDA1LCAweDAwZjYsIDB4MjAwMSwgMHhiN2IzLCAweDIwMDQsIDB4YTA3ZCwKLQkweDAxMTAsIDB4NzgwMCwgMHhkMGVjLCAweDAwZmUsIDB4MDAwNSwgMHgwMTI2LCAweDAwMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDAwNiwgMHg2MmEwLCAweGEyOTAsIDB4YjczNSwgMHgyMjA0LCAweGFjMDYsIDB4MTkwYywKLQkweDE1MWEsIDB4MDAwZSwgMHg2MjAwLCAweGEwMDUsIDB4MDExMCwgMHhjMmZkLCAweDAwMDgsIDB4YzJmYywKLQkweDYyMDIsIDB4MDAyZSwgMHgwMTJlLCAweDAwMDUsIDB4MjAxMSwgMHhiNjM1LCAweDIyMDQsIDB4ZDBjYywKLQkweDAxMzgsIDB4MjAwMSwgMHhiOGIzLCAweDIwMGMsIDB4MjAxMSwgMHg1M2E5LCAweDA4MGMsIDB4NmE5NCwKLQkweDAwMDUsIDB4MjAxMSwgMHg1M2E5LCAweDA4MGMsIDB4NmEwZSwgMHgyMDExLCAweGI2MzUsIDB4MjIwNCwKLQkweGMwY2MsIDB4MjAxMiwgMHgwMDA1LCAweDIwNzEsIDB4YjcxNCwgMHg3MDAzLCAweDAwMDEsIDB4NzAwNywKLQkweDAwMDAsIDB4NzAxMywgMHgwMDAwLCAweDcwMTcsIDB4MDAwMCwgMHg3MDFiLCAweDAwMDAsIDB4NzAxZiwKLQkweDAwMDAsIDB4NzAwYiwgMHgwMDAwLCAweDcwNGIsIDB4MDAwMSwgMHg3MDRmLCAweDAwMDAsIDB4NzA1YiwKLQkweDAwMjAsIDB4NzA1ZiwgMHgwMDQwLCAweDcwN2YsIDB4MDAwMCwgMHgyMDcxLCAweGI4N2QsIDB4NzAwMywKLQkweGI3MTQsIDB4NzAwNywgMHgwMDAwLCAweDcwMGIsIDB4MDAwMCwgMHg3MDBmLCAweGI4NWQsIDB4NzAxMywKLQkweDAwMjAsIDB4NzAxNywgMHgwMDQwLCAweDcwMzcsIDB4MDAwMCwgMHgwMDA1LCAweDAwMTYsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjgzNSwgMHhhMDBlLCAweDcxODYsIDB4NzE4YSwgMHg3MDk3LCAweDAwMDEsIDB4MjAwMSwKLQkweGI2NTMsIDB4MjAwNCwgMHhkMGZjLCAweDExNTAsIDB4MjAwMSwgMHhiNjUzLCAweDIwMDQsIDB4YTAwZSwKLQkweGQwOWMsIDB4MDEwOCwgMHg4MTA4LCAweDcxMDIsIDB4MDgwNCwgMHg1NDQ0LCAweDIwMDEsIDB4YjY3MiwKLQkweDIwMGMsIDB4YTE4NCwgMHgwMDBmLCAweDIwMDksIDB4YjY3MywgMHgyMTBjLCAweDAwMDIsIDB4NTNlYywKLQkweDU0MWYsIDB4NTQyNiwgMHg1NDMwLCAweDU0MzUsIDB4NTNlYywgMHg1M2VjLCAweDUzZWMsIDB4NTQwZiwKLQkweDUzZWMsIDB4NTNlYywgMHg1M2VjLCAweDUzZWMsIDB4NTNlYywgMHg1M2VjLCAweDUzZWMsIDB4NzAwMywKLQkweDAwMDQsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MjA5OSwgMHhiNjc2LCAweDIwYTEsIDB4Yjg4NiwKLQkweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDAxNWUsIDB4MDE0ZSwgMHgwMTNlLCAweDA0MjgsIDB4NzA4ZiwKLQkweDAwMDUsIDB4NzAwNywgMHgwMTIyLCAweDIwMDEsIDB4MDAwMiwgMHgwMDMwLCAweDcwOGYsIDB4MDAwMiwKLQkweDcwMDcsIDB4MDEyMSwgMHgyMDAxLCAweDAwMDMsIDB4NzAwMiwgMHg3MDk3LCAweDAwMDEsIDB4MDA4OCwKLQkweDcwMDcsIDB4MDEyMiwgMHgyMDAxLCAweDAwMDIsIDB4MDAyMCwgMHg3MDA3LCAweDAxMjEsIDB4MjAwMSwKLQkweDAwMDMsIDB4NzAwMiwgMHhhMDA2LCAweDcwOTYsIDB4NzA4ZSwgMHhhMTg0LCAweGZmMDAsIDB4ODAwNywKLQkweDcwOWEsIDB4YTE4NCwgMHgwMGZmLCAweDcwOTIsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjcxNCwgMHg2ODRjLCAweGEwMDUsIDB4MTEzMCwgMHg3MDI4LCAweGMwODUsIDB4NzAyYSwKLQkweGEwODUsIDB4MDAwMSwgMHgwNDI4LCAweDZhNjAsIDB4NzIzNiwgMHg2YjY0LCAweDczM2EsIDB4Njg2OCwKLQkweDcwM2UsIDB4NzA3NiwgMHg2ODZjLCAweDcwNDIsIDB4NzA3YSwgMHg2ODRjLCAweDcwMmUsIDB4Njg0NCwKLQkweDcwMzIsIDB4MjAwOSwgMHgwMDBkLCAweDIwMGEsIDB4NzAwYiwgMHgwMDAwLCAweDgwMDcsIDB4ODAwNiwKLQkweDgwMDYsIDB4YTA4YywgMHgwMDNmLCAweGEwODQsIDB4ZmZjMCwgMHhhMjEwLCAweDIxMDAsIDB4YTMxOSwKLQkweDcyNmUsIDB4NzM3MiwgMHg3MDI4LCAweGMwODQsIDB4NzAyYSwgMHg3MDA3LCAweDAwMDEsIDB4YTAwNiwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMTU2LCAweDAwZTYsIDB4MDAyNiwgMHg2ODM4LCAweGQwZmMsIDB4MTkwNCwKLQkweDU0ZDMsIDB4NjgwNCwgMHhhMDBkLCAweDAxODgsIDB4MDBkNiwgMHgyMDcxLCAweGI2MDAsIDB4YTAxNiwKLQkweDcwMmMsIDB4MjE2OCwgMHg2OTA0LCAweDIwNmEsIDB4ODIxMCwgMHgyZDAwLCAweDgxZmYsIDB4MWRjOCwKLQkweDcwMmUsIDB4NzBiNCwgMHhhMjAwLCAweDcwYjYsIDB4MDBkZSwgMHgyMDcxLCAweGI3MTQsIDB4NzAxYywKLQkweGEwMDUsIDB4MTkwNCwgMHg1NGUzLCAweDIwYTksIDB4MDAzMiwgMHgwZjA0LCAweDU0ZTEsIDB4MGUwNCwKLQkweDU0OWQsIDB4MjA3MSwgMHhiODM1LCAweDcyMDAsIDB4ODJmZiwgMHgwNWQ4LCAweDY5MzQsIDB4YTE4NiwKLQkweDAxMDMsIDB4MTkwNCwgMHg1NGYxLCAweDY5NDgsIDB4Njg0NCwgMHhhMTA1LCAweDE1NDAsIDB4MjAwOSwKLQkweDgwMjAsIDB4MjIwMCwgMHgwMDAyLCAweDU0ZTEsIDB4NTRiOCwgMHg1NTA5LCAweDU1MTUsIDB4NTRlMSwKLQkweDIwNzEsIDB4MDAwMCwgMHgyMGE5LCAweDAwMzIsIDB4MGYwNCwgMHg1NGUxLCAweDcwMTgsIDB4ZDA4NCwKLQkweDFkZDgsIDB4NzEyMiwgMHg2ODNjLCAweDcwMjYsIDB4Njg0MCwgMHg3MDJhLCAweDcwMWIsIDB4MDAwMSwKLQkweDIwOTEsIDB4NDA4MCwgMHgyMDcxLCAweGI2MDAsIDB4NzAyYywgMHgyMDZhLCAweDJkMDAsIDB4NzAyZSwKLQkweDcwYjQsIDB4ODAwMCwgMHg3MGI2LCAweDAwMmUsIDB4MDBlZSwgMHgwMTVlLCAweDAwMDUsIDB4Njg0NCwKLQkweGEwODYsIDB4MDEwMCwgMHgxMTMwLCAweDY4NjgsIDB4YTAwNSwgMHgxMTE4LCAweDIwMDksIDB4ODAyMCwKLQkweDA4ODAsIDB4MjA3MSwgMHhiNzE0LCAweDJkMDgsIDB4MjA2YiwgMHgwMDAwLCAweDcwMTAsIDB4ODAwMCwKLQkweDcwMTIsIDB4NzAxOCwgMHhhMDZkLCAweDcxMWEsIDB4MDExMCwgMHg2OTAyLCAweDAwMDgsIDB4NzExZSwKLQkweDBjMTAsIDB4YTE4YywgMHgwMGZmLCAweGExODYsIDB4MDAxNywgMHgwMTMwLCAweGExODYsIDB4MDAxZSwKLQkweDAxMTgsIDB4YTE4ZSwgMHgwMDFmLCAweDFkMjgsIDB4Njg0YywgMHhkMGNjLCAweDBkMTAsIDB4Njg1MCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDg2LCAweDAwMDEsIDB4MTllMCwgMHgyMDA5LCAweDgwMjEsIDB4MDgwNCwKLQkweDU0YjEsIDB4NzA4NCwgMHg4MDA4LCAweGEwOTIsIDB4MDAxZSwgMHgxYTk4LCAweDcxODYsIDB4YWU5MCwKLQkweDAwMDMsIDB4YTIxMCwgMHg2ODNjLCAweDIwMTIsIDB4MDA3OCwgMHg3MDg0LCAweDgwMDgsIDB4YTA5MiwKLQkweDAwMGYsIDB4MWEzOCwgMHg3MTg2LCAweGFlOTAsIDB4MDAwMywgMHg4MDAzLCAweGEyMTAsIDB4NjgzYywKLQkweDIwMTIsIDB4ODIxMCwgMHg2ODQwLCAweDIwMTIsIDB4NzA4OCwgMHhhMTBhLCAweDBhMDQsIDB4NTRjYSwKLQkweDcxOGMsIDB4NzA4NCwgMHhhMTBhLCAweDBhMDQsIDB4NTRjYSwgMHgyMDcxLCAweDAwMDAsIDB4NzAxOCwKLQkweGQwODQsIDB4MTkwNCwgMHg1NGNhLCAweDIwNzEsIDB4YjgzNSwgMHg3MDAwLCAweGEwODYsIDB4MDAwMiwKLQkweDExNTAsIDB4MDgwYywgMHg1Nzk0LCAweDIwNzEsIDB4MDAwMCwgMHg3MDFiLCAweDAwMDEsIDB4MjA5MSwKLQkweDQwODAsIDB4MDgwNCwgMHg1NGNhLCAweDA4MGMsIDB4NTdiZSwgMHgyMDcxLCAweDAwMDAsIDB4NzAxYiwKLQkweDAwMDEsIDB4MjA5MSwgMHg0MDgwLCAweDA4MDQsIDB4NTRjYSwgMHgwMDA2LCAweDY4NGMsIDB4MDAwNiwKLQkweDY4MzcsIDB4MDEwMywgMHgyMGE5LCAweDAwMWMsIDB4YWQ4MCwgMHgwMDExLCAweDIwYTAsIDB4MjAwMSwKLQkweDAwMDAsIDB4NDBhNCwgMHgwMDBlLCAweGEwODQsIDB4MDBmZiwgMHg2ODRlLCAweDAwMGUsIDB4Njg0YSwKLQkweDY5NTIsIDB4MDAwNSwgMHgyMDcxLCAweGI3MTQsIDB4NzAwNCwgMHgwMDAyLCAweDU1NzAsIDB4NTU4MSwKLQkweDU3N2YsIDB4NTc4MCwgMHg1NzhkLCAweDU3OTMsIDB4NTU3MSwgMHg1NzcwLCAweDU3MDYsIDB4NTc1YywKLQkweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwgMHg1NTgwLCAweDIwMDksIDB4MDAwZCwKLQkweDcwMzAsIDB4MjAwYSwgMHgyMDkxLCAweDQwODAsIDB4NzAwNywgMHgwMDAxLCAweDcwMGIsIDB4MDAwMCwKLQkweDAxMmUsIDB4MjA2OSwgMHhiOGY0LCAweDY4M2MsIDB4YTAwNSwgMHgwM2Y4LCAweDExZjAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDY5LCAweDAwMDAsIDB4NjkzNCwgMHgyMDAxLCAweGI3MjAsIDB4MjAwNCwKLQkweGExMGEsIDB4MDE3MCwgMHgwZTA0LCAweDU1YTQsIDB4MjA2OSwgMHgwMDAwLCAweDY4MTgsIDB4ZDA4NCwKLQkweDExNTgsIDB4MjAwOSwgMHg4MDQwLCAweDY5MjIsIDB4NjgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwKLQkweDIwNjksIDB4YjhmNCwgMHg2ODNmLCAweGZmZmYsIDB4MDEyZSwgMHgyMDY5LCAweGI2MDAsIDB4Njg0OCwKLQkweDY5NjgsIDB4YTEwMiwgMHgyMDY5LCAweGI4MzUsIDB4Njg4YSwgMHg2OTg0LCAweDcwMWMsIDB4YTA2ZCwKLQkweDAxMjAsIDB4ODFmZiwgMHgwOTA0LCAweDU1ZmEsIDB4MDBhMCwgMHg4MWZmLCAweDA5MDQsIDB4NTZjMCwKLQkweDIwNzEsIDB4YjgzNSwgMHg3MTg0LCAweDcwODgsIDB4YTEwYSwgMHgxMjU4LCAweDcxOTAsIDB4MjA3MSwKLQkweGI4ZjQsIDB4NzAzOCwgMHhhMDA1LCAweDAxMjgsIDB4MWIwNCwgMHg1NmMwLCAweDcxM2EsIDB4MDgwNCwKLQkweDU2YzAsIDB4MjA3MSwgMHhiODM1LCAweDcxOGMsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzA4NCwKLQkweGExMGEsIDB4MGEwNCwgMHg1NmRiLCAweDBlMDQsIDB4NTY3YywgMHgyMDcxLCAweDAwMDAsIDB4NzAxOCwKLQkweGQwODQsIDB4MTkwNCwgMHg1NjdjLCAweDIwMDEsIDB4ZmZmZiwgMHgyMDcxLCAweGI4ZjQsIDB4NzAzYSwKLQkweDIwNzEsIDB4YjgzNSwgMHg3MDAwLCAweGEwODYsIDB4MDAwMiwgMHgxMTUwLCAweDA4MGMsIDB4NTc5NCwKLQkweDIwNzEsIDB4MDAwMCwgMHg3MDFiLCAweDAwMDEsIDB4MjA5MSwgMHg0MDgwLCAweDA4MDQsIDB4NTY3YywKLQkweDA4MGMsIDB4NTdiZSwgMHgyMDcxLCAweDAwMDAsIDB4NzAxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwKLQkweDA4MDQsIDB4NTY3YywgMHgyMDcxLCAweGI4MzUsIDB4NzAwMCwgMHhhMDA1LCAweDA5MDQsIDB4NTZhMiwKLQkweDY5MzQsIDB4YTE4NiwgMHgwMTAzLCAweDE5MDQsIDB4NTY3ZiwgMHg2ODRjLCAweGQwYmMsIDB4MTkwNCwKLQkweDU2YTIsIDB4Njk0OCwgMHg2ODQ0LCAweGExMDUsIDB4MTkwNCwgMHg1Njk3LCAweDIwMDksIDB4ODAyMCwKLQkweDIwNzEsIDB4YjgzNSwgMHg3MDAwLCAweDAwMDIsIDB4NTZhMiwgMHg1NjYyLCAweDU2M2EsIDB4NTY0YywKLQkweDU2MTksIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MjA5OSwgMHhiNjc2LCAweDIwYTEsIDB4Yjg4NiwKLQkweDIwYTksIDB4MDAwNCwgMHg1M2EzLCAweDAxNWUsIDB4MDE0ZSwgMHgwMTNlLCAweDIwNzEsIDB4Yjg3ZCwKLQkweGFkODAsIDB4MDAwZiwgMHg3MDBlLCAweDcwMTMsIDB4MDAwMiwgMHg3MDA3LCAweDAwMDIsIDB4NzAwYiwKLQkweDAwMDAsIDB4MmUxMCwgMHgwODBjLCAweDE2NDgsIDB4MjA3MSwgMHhiNzE0LCAweDcwMDcsIDB4MDAwOSwKLQkweDA4MDQsIDB4NTZjMCwgMHg3MDg0LCAweDgwMDgsIDB4YTA5MiwgMHgwMDFlLCAweDFhMDQsIDB4NTZjMCwKLQkweGFlOTAsIDB4MDAwMywgMHhhMjEwLCAweDY4M2MsIDB4MjAxMiwgMHg3MTg2LCAweDIwNzEsIDB4YjcxNCwKLQkweDA4MGMsIDB4NTgxNSwgMHgwODA0LCAweDU2YzAsIDB4NzA4NCwgMHg4MDA4LCAweGEwOTIsIDB4MDAwZiwKLQkweDFhMDQsIDB4NTZjMCwgMHhhZTkwLCAweDAwMDMsIDB4ODAwMywgMHhhMjEwLCAweDY4M2MsIDB4MjAxMiwKLQkweDgyMTAsIDB4Njg0MCwgMHgyMDEyLCAweDcxODYsIDB4MjA3MSwgMHhiNzE0LCAweDA4MGMsIDB4NTgxNSwKLQkweDA4MDQsIDB4NTZjMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwZTA0LCAweDU2N2MsIDB4MjA3MSwKLQkweDAwMDAsIDB4NzAxOCwgMHhkMDg0LCAweDExODAsIDB4NzEyMiwgMHg2ODNjLCAweDcwMjYsIDB4Njg0MCwKLQkweDcwMmEsIDB4NzAxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHgwMTJlLCAweDIwNzEsIDB4YjcxNCwKLQkweDA4MGMsIDB4NTgxNSwgMHgwODA0LCAweDU2YzAsIDB4MDEyZSwgMHgwODA0LCAweDU2YzAsIDB4YTE4YywKLQkweDAwZmYsIDB4YTE4NiwgMHgwMDE3LCAweDAxMzAsIDB4YTE4NiwgMHgwMDFlLCAweDAxMTgsIDB4YTE4ZSwKLQkweDAwMWYsIDB4MTFjMCwgMHg2ODRjLCAweGQwY2MsIDB4MDFhOCwgMHg2ODUwLCAweGEwODQsIDB4MDBmZiwKLQkweGEwODYsIDB4MDAwMSwgMHgxMTc4LCAweDIwMDksIDB4ODAyMSwgMHgwODA0LCAweDU2MTAsIDB4Njg0NCwKLQkweGEwODYsIDB4MDEwMCwgMHgxMTM4LCAweDY4NjgsIDB4YTAwNSwgMHgxMTIwLCAweDIwMDksIDB4ODAyMCwKLQkweDA4MDQsIDB4NTYxMCwgMHgyMDcxLCAweGI3MTQsIDB4MDgwYywgMHg1ODI3LCAweDAxYzgsIDB4MjA3MSwKLQkweGI3MTQsIDB4NzAwZiwgMHgwMDAxLCAweDY5MzQsIDB4YTE4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwMywKLQkweDExMzAsIDB4ODEwZiwgMHhhMThjLCAweDAwZmYsIDB4ODEwMSwgMHgwMTA4LCAweDcxMGUsIDB4NzAwNywKLQkweDAwMDMsIDB4MDgwYywgMHg1ODQwLCAweDcwNTAsIDB4YTA4NiwgMHgwMTAwLCAweDA5MDQsIDB4NTc4MCwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4YjcxNCwgMHg3MDA4LCAweGEwODYsIDB4MDAwMSwKLQkweDExODAsIDB4MGUwNCwgMHg1NmQ5LCAweDIwMDksIDB4MDAwZCwgMHg3MDMwLCAweDIwMGEsIDB4MjA5MSwKLQkweDQwODAsIDB4NzAwYiwgMHgwMDAwLCAweDcwMDQsIDB4YTA4NiwgMHgwMDA2LCAweDExMTAsIDB4NzAwNywKLQkweDAwMDEsIDB4MDEyZSwgMHgwMDA1LCAweDIwNzEsIDB4YjcxNCwgMHgwODBjLCAweDU4MjcsIDB4MDUxOCwKLQkweDIwNzEsIDB4YjgzNSwgMHg3MDg0LCAweDcwMGEsIDB4MjBhOSwgMHgwMDIwLCAweDIwOTksIDB4YjgzNiwKLQkweDIwYTEsIDB4Yjg1ZCwgMHg1M2EzLCAweDcwODcsIDB4MDAwMCwgMHgyMDcxLCAweGI3MTQsIDB4MjA2OSwKLQkweGI4N2QsIDB4NzA2YywgMHg2ODI2LCAweDcwNzAsIDB4NjgyYSwgMHg3MDc0LCAweDY4MmUsIDB4NzA3OCwKLQkweDY4MzIsIDB4MmQxMCwgMHgwODBjLCAweDE2NDgsIDB4NzAwNywgMHgwMDA4LCAweDIwMDEsIDB4ZmZmZiwKLQkweDIwNzEsIDB4YjhmNCwgMHg3MDNhLCAweDAxMmUsIDB4MDgwNCwgMHg1NmMwLCAweDIwNjksIDB4Yjg3ZCwKLQkweDY4MDgsIDB4YTA4ZSwgMHgwMDAwLCAweDA5MDQsIDB4NTc1YiwgMHhhMDhlLCAweDAyMDAsIDB4MDkwNCwKLQkweDU3NTksIDB4YTA4ZSwgMHgwMTAwLCAweDE5MDQsIDB4NTc1YiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDBlMDQsIDB4NTc1NywgMHgyMDY5LCAweDAwMDAsIDB4NjgxOCwgMHhkMDg0LCAweDE1YzAsIDB4NzAyYywKLQkweDcxMzAsIDB4ODEwOCwgMHhhMTAyLCAweDAyMzAsIDB4YTAwZSwgMHg3MDM0LCAweDcwNmUsIDB4NzAzOCwKLQkweDcwNzIsIDB4MDA0OCwgMHg3MDZjLCAweGEwODAsIDB4MDA0MCwgMHg3MDZlLCAweDEyMjAsIDB4NzA3MCwKLQkweGEwODEsIDB4MDAwMCwgMHg3MDcyLCAweDcxMzIsIDB4NjkzNiwgMHg3MDBiLCAweDAwMDAsIDB4MjAwMSwKLQkweGI4NWEsIDB4MjAwNCwgMHhhMDA1LCAweDExOTAsIDB4NjkzNCwgMHgyMDY5LCAweGI4MzUsIDB4Njg5YywKLQkweDY5OWUsIDB4MjA2OSwgMHhiOGY0LCAweGExMDIsIDB4MTExOCwgMHg2ODNjLCAweGEwMDUsIDB4MTM2OCwKLQkweDIwMDEsIDB4Yjg1YiwgMHgyMDBjLCAweDgxMGQsIDB4NjkzZSwgMHgwMDM4LCAweDIwMDksIDB4ODA0MCwKLQkweDY5MjIsIDB4NjgxYiwgMHgwMDAxLCAweDIwOTEsIDB4NDA4MCwgMHg3MDA3LCAweDAwMDEsIDB4MDEyZSwKLQkweDAwMTAsIDB4NzAwNywgMHgwMDA1LCAweDAwMDUsIDB4MjAwMSwgMHhiODdmLCAweDIwMDQsIDB4YTA4ZSwKLQkweDAxMDAsIDB4MTEyOCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwYywgMHg1ODE1LCAweDAwMDUsIDB4YTA4ZSwKLQkweDAwMDAsIDB4MGRlMCwgMHhhMDhlLCAweDAyMDAsIDB4MWRjOCwgMHg3MDA3LCAweDAwMDUsIDB4MDAwNSwKLQkweDcwMWMsIDB4YTA2ZCwgMHgwMTU4LCAweDA4MGMsIDB4NTgyNywgMHgwMTQwLCAweDcwMDcsIDB4MDAwMywKLQkweDA4MGMsIDB4NTg0MCwgMHg3MDUwLCAweGEwODYsIDB4MDEwMCwgMHgwMTEwLCAweDAwMDUsIDB4MDAwNSwKLQkweDcwNTAsIDB4YTA5ZSwgMHgwMTAwLCAweDExMTgsIDB4NzAwNywgMHgwMDA0LCAweDAwMzAsIDB4YTA4NiwKLQkweDAyMDAsIDB4MTExMCwgMHg3MDA3LCAweDAwMDUsIDB4MDAwNSwgMHgwODBjLCAweDU3ZTMsIDB4NzAwNiwKLQkweDA4MGMsIDB4NTgxNSwgMHgwMDA1LCAweDAwMDUsIDB4MDBlNiwgMHgwMTU2LCAweDIwNzEsIDB4YjgzNSwKLQkweDcxODQsIDB4ODFmZiwgMHgwNTAwLCAweGEwMDYsIDB4NzA4NiwgMHhhZTgwLCAweDAwMDMsIDB4MjA3MSwKLQkweDAwMDAsIDB4MjFhOCwgMHgyMDE0LCAweDcyMjYsIDB4ODAwMCwgMHgwZjA0LCAweDU3YjgsIDB4MjAxNCwKLQkweDcyMmEsIDB4ODAwMCwgMHgwZjA0LCAweDU3YjgsIDB4MjAxNCwgMHg3MjJlLCAweDgwMDAsIDB4MGYwNCwKLQkweDU3YjgsIDB4MjAxNCwgMHg3MjNhLCAweDgwMDAsIDB4MGYwNCwgMHg1N2I4LCAweDIwMTQsIDB4NzIzZSwKLQkweGExODAsIDB4ODAzMCwgMHg3MDIyLCAweDAxNWUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDE1NiwKLQkweDIwNzEsIDB4YjgzNSwgMHg3MTg0LCAweDgxZmYsIDB4MDFkOCwgMHhhMDA2LCAweDcwODYsIDB4YWU4MCwKLQkweDAwMDMsIDB4MjA3MSwgMHgwMDAwLCAweDIxYTgsIDB4MjAxNCwgMHg3MjI2LCAweDgwMDAsIDB4MjAxNCwKLQkweDcyMmEsIDB4ODAwMCwgMHgwZjA0LCAweDU3ZGEsIDB4MjAxNCwgMHg3MjNhLCAweDgwMDAsIDB4MjAxNCwKLQkweDcyM2UsIDB4MDAxOCwgMHgyMDAxLCAweDgwMjAsIDB4MDAxMCwgMHgyMDAxLCAweDgwNDIsIDB4NzAyMiwKLQkweDAxNWUsIDB4MDBlZSwgMHgwMDA1LCAweDcwMmMsIDB4NzEzMCwgMHg4MTA4LCAweGExMDIsIDB4MDIzMCwKLQkweGEwMGUsIDB4NzAzNCwgMHg3MDZlLCAweDcwMzgsIDB4NzA3MiwgMHgwMDQ4LCAweDcwNmMsIDB4YTA4MCwKLQkweDAwNDAsIDB4NzA2ZSwgMHgxMjIwLCAweDcwNzAsIDB4YTA4MSwgMHgwMDAwLCAweDcwNzIsIDB4NzEzMiwKLQkweDcwMGMsIDB4ODAwMSwgMHg3MDBlLCAweDExODAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwKLQkweDU4MGYsIDB4MjAwMSwgMHgwMDBkLCAweDIxMDIsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDAwMSwKLQkweDcwMGIsIDB4MDAwMCwgMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwgMHgwMDA3LCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMDYsIDB4NzAwYiwgMHgwMDAxLCAweDAxMmUsIDB4MDAwNSwgMHg3MDFjLCAweGEwNmQsIDB4MDE3MCwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweDJkMDQsIDB4NzAxZSwKLQkweGEwMDUsIDB4MTEwOCwgMHg3MDFhLCAweDAxMmUsIDB4MDgwYywgMHgxNjE0LCAweDAwMDUsIDB4MjAxOSwKLQkweDAwMGQsIDB4MjMwNCwgMHgyMzBjLCAweGExMGUsIDB4MDEzMCwgMHgyMzA0LCAweDIzMGMsIDB4YTEwZSwKLQkweDAxMTAsIDB4YTAwNiwgMHgwMDYwLCAweDczMmMsIDB4ODMxOSwgMHg3MTMwLCAweGExMDIsIDB4MTExOCwKLQkweDIzMDAsIDB4YTAwNSwgMHgwMDIwLCAweDAyMTAsIDB4YTMwMiwgMHgwMDA4LCAweDgwMDIsIDB4MDAwNSwKLQkweDJkMDAsIDB4NzAyNiwgMHhhMDgwLCAweDAwMGQsIDB4NzA1NiwgMHg3MDUzLCAweDAwMDAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweGI5MTMsIDB4MjEwNCwgMHhjMDhkLCAweDIwMGEsIDB4MDEyZSwKLQkweDA4MGMsIDB4MTY2NCwgMHgwMDA1LCAweDcwOGMsIDB4YTA4YSwgMHgwMDI5LCAweDEyMjAsIDB4YTA4MiwKLQkweDAwMWQsIDB4MDAzMywgMHgwMDEwLCAweDA4MGMsIDB4MTUxYSwgMHg2MDI3LCAweDFlMDAsIDB4MDAwNSwKLQkweDU5NGUsIDB4NThjOSwgMHg1OGUxLCAweDU5MWUsIDB4NTkzZiwgMHg1OTc5LCAweDU5OGIsIDB4NThlMSwKLQkweDU5NjUsIDB4NTg2ZCwgMHg1ODliLCAweDU4NmMsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwKLQkweDY4MDQsIDB4YTAwNSwgMHgxMTgwLCAweDY4MDgsIDB4YTAwNSwgMHgxNTE4LCAweDcwOGYsIDB4MDAyOCwKLQkweDIwNjksIDB4YjhjNiwgMHgyZDA0LCAweDcwMDIsIDB4MDgwYywgMHg1YzQzLCAweDYwMjgsIDB4YTA4NSwKLQkweDA2MDAsIDB4NjAyYSwgMHgwMGIwLCAweDcwOGYsIDB4MDAyOCwgMHgyMDY5LCAweGI4YzYsIDB4MmQwNCwKLQkweDcwMDIsIDB4NjAyOCwgMHhhMDg1LCAweDA2MDAsIDB4NjAyYSwgMHgwMGU2LCAweDAwMzYsIDB4MDA0NiwKLQkweDAwNTYsIDB4MjA3MSwgMHhiOTI0LCAweDA4MGMsIDB4MWUxYSwgMHgwMDVlLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MjA2OSwgMHgwMjAwLCAweDY4MDQsIDB4YTAwNSwKLQkweDExODAsIDB4NjgwOCwgMHhhMDA1LCAweDE1MTgsIDB4NzA4ZiwgMHgwMDI4LCAweDIwNjksIDB4YjhjNiwKLQkweDJkMDQsIDB4NzAwMiwgMHgwODBjLCAweDVjZDAsIDB4NjAyOCwgMHhhMDg1LCAweDA2MDAsIDB4NjAyYSwKLQkweDAwYjAsIDB4NzA4ZiwgMHgwMDI4LCAweDIwNjksIDB4YjhjNiwgMHgyZDA0LCAweDcwMDIsIDB4NjAyOCwKLQkweGEwODUsIDB4MDYwMCwgMHg2MDJhLCAweDAwZTYsIDB4MDAzNiwgMHgwMDQ2LCAweDAwNTYsIDB4MjA3MSwKLQkweGI5MjQsIDB4MDgwYywgMHgxZTFhLCAweDAwNWUsIDB4MDA0ZSwgMHgwMDNlLCAweDAwZWUsIDB4MDBkZSwKLQkweDAwMDUsIDB4NjgwMywgMHgwMDkwLCAweDYxMjQsIDB4ZDFlNCwgMHgxMTkwLCAweDA4MGMsIDB4NTlmNiwKLQkweGQxZDQsIDB4MTE2MCwgMHhkMWRjLCAweDExMzgsIDB4ZDFjYywgMHgwMTUwLCAweDcwOGYsIDB4MDAyMCwKLQkweDA4MGMsIDB4NTlmNiwgMHgwMDI4LCAweDcwOGYsIDB4MDAxZCwgMHgwMDEwLCAweDcwOGYsIDB4MDAxZiwKLQkweDAwMDUsIDB4NjgwMywgMHgwMDg4LCAweDYxMjQsIDB4ZDFjYywgMHgxNTkwLCAweGQxZGMsIDB4MTU2OCwKLQkweGQxZTQsIDB4MTU0MCwgMHhhMTg0LCAweDFlMDAsIDB4MTU4MCwgMHg2MGUzLCAweDAwMDEsIDB4NjAwYywKLQkweGMwYjQsIDB4NjAwZSwgMHgwODBjLCAweDViNzEsIDB4MDgwYywgMHgyNGU1LCAweDAxNTYsIDB4NjgwMywKLQkweDAxMDAsIDB4MjBhOSwgMHgwMDE0LCAweDY4MDQsIDB4ZDBkYywgMHgxMTE4LCAweDFmMDQsIDB4NThmYiwKLQkweDAwNDgsIDB4MjBhOSwgMHgwMDE0LCAweDY4MDMsIDB4MDA4MCwgMHg2ODA0LCAweGQwZDQsIDB4MTEzMCwKLQkweDFmMDQsIDB4NTkwNSwgMHgwODBjLCAweDViOTIsIDB4MDE1ZSwgMHgwMDc4LCAweDAxNWUsIDB4NzA4ZiwKLQkweDAwMjgsIDB4MDA1OCwgMHg3MDhmLCAweDAwMWUsIDB4MDA0MCwgMHg3MDhmLCAweDAwMWQsIDB4MDAyOCwKLQkweDcwOGYsIDB4MDAyMCwgMHgwMDEwLCAweDcwOGYsIDB4MDAxZiwgMHgwMDA1LCAweDYwZTMsIDB4MDAwMSwKLQkweDYwMGMsIDB4YzBiNCwgMHg2MDBlLCAweDA4MGMsIDB4NWI3MSwgMHgwODBjLCAweDI0ZTUsIDB4NjgwMywKLQkweDAwODAsIDB4NjEyNCwgMHhkMWQ0LCAweDExODAsIDB4ZDFkYywgMHgxMTU4LCAweGQxZTQsIDB4MTEzMCwKLQkweGExODQsIDB4MWUwMCwgMHgxMTU4LCAweDcwOGYsIDB4MDAyOCwgMHgwMDQwLCAweDcwOGYsIDB4MDAxZSwKLQkweDAwMjgsIDB4NzA4ZiwgMHgwMDFkLCAweDAwMTAsIDB4NzA4ZiwgMHgwMDFmLCAweDAwMDUsIDB4NjgwMywKLQkweDAwYTAsIDB4NjEyNCwgMHhkMWRjLCAweDExMzgsIDB4ZDFlNCwgMHgwMTM4LCAweDA4MGMsIDB4MWU2MywKLQkweDcwOGYsIDB4MDAxZSwgMHgwMDEwLCAweDcwOGYsIDB4MDAxZCwgMHgwMDA1LCAweDA4MGMsIDB4NWE2OCwKLQkweDYxMjQsIDB4ZDFkYywgMHgxMTg4LCAweDA4MGMsIDB4NTlmNiwgMHgwMDE2LCAweDA4MGMsIDB4MWU2MywKLQkweDAwMWUsIDB4ZDFkNCwgMHgxMTI4LCAweGQxZTQsIDB4MDEzOCwgMHg3MDhmLCAweDAwMWUsIDB4MDAyMCwKLQkweDcwOGYsIDB4MDAxZiwgMHgwODBjLCAweDU5ZjYsIDB4MDAwNSwgMHg2ODAzLCAweDAwYTAsIDB4NjEyNCwKLQkweGQxZDQsIDB4MTE2MCwgMHhkMWNjLCAweDExNTAsIDB4ZDFkYywgMHgxMTI4LCAweGQxZTQsIDB4MDE0MCwKLQkweDcwOGYsIDB4MDAxZSwgMHgwMDI4LCAweDcwOGYsIDB4MDAxZCwgMHgwMDEwLCAweDcwOGYsIDB4MDAyMSwKLQkweDAwMDUsIDB4MDgwYywgMHg1YTY4LCAweDYxMjQsIDB4ZDFkNCwgMHgxMTUwLCAweGQxZGMsIDB4MTEyOCwKLQkweGQxZTQsIDB4MDE0MCwgMHg3MDhmLCAweDAwMWUsIDB4MDAyOCwgMHg3MDhmLCAweDAwMWQsIDB4MDAxMCwKLQkweDcwOGYsIDB4MDAxZiwgMHgwMDA1LCAweDY4MDMsIDB4MDA5MCwgMHg2MTI0LCAweGQxZDQsIDB4MTE3OCwKLQkweGQxY2MsIDB4MTE1MCwgMHhkMWRjLCAweDExMjgsIDB4ZDFlNCwgMHgwMTU4LCAweDcwOGYsIDB4MDAxZSwKLQkweDAwNDAsIDB4NzA4ZiwgMHgwMDFkLCAweDAwMjgsIDB4NzA4ZiwgMHgwMDIwLCAweDAwMTAsIDB4NzA4ZiwKLQkweDAwMWYsIDB4MDAwNSwgMHgwMDE2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDAxMjYsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDIwNzEsIDB4YjYwMCwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDViNDEsIDB4MTFlOCwgMHgyMDAxLCAweGI2MGMsIDB4MjAwYywgMHhkMWI0LCAweDAxYzAsIDB4YzFiNCwKLQkweDIxMDIsIDB4NjAyNywgMHgwMjAwLCAweGUwMDAsIDB4ZTAwMCwgMHg2MDI0LCAweGQwY2MsIDB4MDE1OCwKLQkweDY4MDMsIDB4MDBhMCwgMHgyMDAxLCAweGI4OWYsIDB4MjAwMywgMHgwMDAxLCAweDIwMDEsIDB4YjYwMCwKLQkweDIwMDMsIDB4MDAwMSwgMHgwNDI4LCAweDYwMjgsIDB4YzBjZCwgMHg2MDJhLCAweDA0MDgsIDB4MDgwYywKLQkweDViNWQsIDB4MDE1MCwgMHgwODBjLCAweDViNTMsIDB4MTEzOCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDI3ZjgsIDB4MDgwYywgMHg1YjE4LCAweDAwYTAsIDB4MDgwYywgMHg1YTY1LCAweDAxNzgsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHgyN2Y4LCAweDcwOGMsIDB4YTA4NiwgMHgwMDFlLCAweDAxMjAsIDB4NzA4YywKLQkweGEwODYsIDB4MDAyMiwgMHgxMTE4LCAweDcwOGYsIDB4MDAyNSwgMHgwMDEwLCAweDcwOGYsIDB4MDAyMSwKLQkweDAxMmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwMjYsIDB4MjAxMSwKLQkweDVhMDcsIDB4MDgwYywgMHg2YWNlLCAweDAwMmUsIDB4MDAxNiwgMHgwMDI2LCAweDIwMDksIDB4MDA2NCwKLQkweDIwMTEsIDB4NWEwNywgMHgwODBjLCAweDZhYzUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBlNiwKLQkweDAwZjYsIDB4MDAxNiwgMHgwODBjLCAweDdkZjMsIDB4MjA3MSwgMHhiNjAwLCAweDA4MGMsIDB4NTlhMiwKLQkweDAwMWUsIDB4MDBmZSwgMHgwMGVlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDAxMjYsIDB4MDgwYywgMHg3ZGYzLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNjksIDB4MDE0MCwgMHgyMDcxLCAweGI2MDAsIDB4MjA5MSwgMHg4MDAwLCAweDYwMjgsIDB4YzA5YywKLQkweDYwMmEsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4ODBmYywgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweDgxMDYsIDB4MDgwYywgMHg3ZmUwLCAweDA4MGMsIDB4NmE4MiwgMHgwMDM2LCAweDIwMTksIDB4MDAwMCwKLQkweDA4MGMsIDB4ODA2YiwgMHgwMDNlLCAweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweGI0ZWIsIDB4MDgwYywKLQkweGI1MDYsIDB4MjAwMSwgMHhiNjAwLCAweDIwMDMsIDB4MDAwNCwgMHg2MDI3LCAweDAwMDgsIDB4MDgwYywKLQkweDEyZTIsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjdmOCwgMHgwMTJlLCAweDAwZmUsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDIwMDEsIDB4YjYwMCwKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDA0LCAweDAxNDAsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4YWFhYSwKLQkweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwgMHg2MDIwLCAweGQwOWMsIDB4MDAwNSwKLQkweDY4MDAsIDB4YTA4NiwgMHgwMGMwLCAweDAxNjAsIDB4NjgwMywgMHgwMGMwLCAweDAxNTYsIDB4MjBhOSwKLQkweDAwMmQsIDB4MWQwNCwgMHg1YTcxLCAweDIwOTEsIDB4NjAwMCwgMHgxZjA0LCAweDVhNzEsIDB4MDE1ZSwKLQkweDAwMDUsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksIDB4MDE0MCwKLQkweDIwNzEsIDB4YjYwMCwgMHgyMDAxLCAweGI4OWYsIDB4MjAwYywgMHhhMTg2LCAweDAwMDAsIDB4MDE1OCwKLQkweGExODYsIDB4MDAwMSwgMHgwMTU4LCAweGExODYsIDB4MDAwMiwgMHgwMTU4LCAweGExODYsIDB4MDAwMywKLQkweDAxNTgsIDB4MDgwNCwgMHg1YjA2LCAweDcwOGYsIDB4MDAyMiwgMHgwMDQwLCAweDcwOGYsIDB4MDAyMSwKLQkweDAwMjgsIDB4NzA4ZiwgMHgwMDIzLCAweDAwMjAsIDB4NzA4ZiwgMHgwMDI0LCAweDYwNDMsIDB4MDAwMCwKLQkweDYwZTMsIDB4MDAwMCwgMHg2ODg3LCAweDAwMDEsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjhhNywKLQkweDAwMjYsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4ODBmYywgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweDgxMDYsIDB4MDgwYywgMHg3ZmUwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsIDB4ODA2YiwKLQkweDAwM2UsIDB4MDAyZSwgMHg3MDAwLCAweGEwOGUsIDB4MDAwNCwgMHgwMTE4LCAweDYwMmIsIDB4MDAyOCwKLQkweDAwMTAsIDB4NjAyYiwgMHgwMDIwLCAweDAxNTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjBhOSwKLQkweDAwMDUsIDB4NjAyNCwgMHhkMGFjLCAweDAxMjAsIDB4MDEyZSwgMHgwMTVlLCAweDA4MDQsIDB4NWIxNCwKLQkweDY4MDAsIDB4YTA4NCwgMHgwMGEwLCAweGMwYmQsIDB4NjgwMiwgMHg2OTA0LCAweGQxZDQsIDB4MTEzMCwKLQkweDY4MDMsIDB4MDEwMCwgMHgxZjA0LCAweDVhYzksIDB4MDgwYywgMHg1YjkyLCAweDAxMmUsIDB4MDE1ZSwKLQkweDA4MGMsIDB4NWI1MywgMHgwMWE4LCAweDYwNDQsIDB4YTAwNSwgMHgwMTY4LCAweDYwNTAsIDB4MDAwNiwKLQkweGEwODUsIDB4MDAyMCwgMHg2MDUyLCAweDA4MGMsIDB4NWI5MiwgMHhhMDA2LCAweDgwMDEsIDB4MWRmMCwKLQkweDAwMGUsIDB4NjA1MiwgMHgwMDI4LCAweDY4MDQsIDB4ZDBkNCwgMHgxMTEwLCAweDA4MGMsIDB4NWI5MiwKLQkweDAwMTYsIDB4MDAyNiwgMHgyMDA5LCAweDAwYzgsIDB4MjAxMSwgMHg1YTE0LCAweDA4MGMsIDB4NmE5NCwKLQkweDAwMmUsIDB4MDAxZSwgMHgyMDAxLCAweGI4OWYsIDB4MjAwMywgMHgwMDA0LCAweDA4MGMsIDB4NTg1MywKLQkweDA4MGMsIDB4NWI1MywgMHgwMTQ4LCAweDY4MDQsIDB4ZDBkNCwgMHgxMTMwLCAweGQwZGMsIDB4MTEwMCwKLQkweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDAsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAxNDAsIDB4MjA3MSwKLQkweGI2MDAsIDB4MjAwMSwgMHhiODllLCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweGI4OGYsIDB4MjAwMywKLQkweDAwMDAsIDB4NzA4ZiwgMHgwMDAwLCAweDYwZTMsIDB4MDAwMCwgMHg2ODg3LCAweDAwMDAsIDB4MjAwMSwKLQkweDAwMDAsIDB4MDgwYywgMHgyOGE3LCAweDY4MDMsIDB4MDAwMCwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywKLQkweDAwMTAsIDB4NjAyNywgMHhmZmZmLCAweDYwMmIsIDB4MTgyZiwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweGI4OWUsIDB4MjAwNCwgMHhhMDg2LCAweGFhYWEsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweGI2NzIsIDB4MjAwNCwgMHhhMDg0LCAweDAwMzAsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHhiNjcyLCAweDIwMDQsIDB4YTA4NCwKLQkweDAwMzAsIDB4YTA4NiwgMHgwMDMwLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4YjY3MiwKLQkweDIwMDQsIDB4YTA4NCwgMHgwMDMwLCAweGEwODYsIDB4MDAxMCwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4YjY3MiwgMHgyMDA0LCAweGEwODQsIDB4MDAzMCwgMHhhMDg2LCAweDAwMjAsIDB4MDAwZSwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjBjLCAweDIwMDQsIDB4ZDBhNCwgMHgwMTcwLCAweDA4MGMsIDB4MjhjNywKLQkweDAwMzYsIDB4MDAxNiwgMHgyMDA5LCAweDAwMDAsIDB4MjAxOSwgMHgwMDI4LCAweDA4MGMsIDB4MmNhNCwKLQkweDAwMWUsIDB4MDAzZSwgMHhhMDA2LCAweDAwMDksIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4YjYwYywKLQkweDJlMDQsIDB4MDExOCwgMHhhMDg1LCAweDAwMTAsIDB4MDAxMCwgMHhhMDg0LCAweGZmZWYsIDB4MjA3MiwKLQkweDAwZWUsIDB4MDAwNSwgMHg2MDUwLCAweDAwMDYsIDB4NjBmMCwgMHgwMDA2LCAweDYwZWMsIDB4MDAwNiwKLQkweDYwMGMsIDB4MDAwNiwgMHg2MDA0LCAweDAwMDYsIDB4NjAyOCwgMHgwMDA2LCAweDYwMmYsIDB4MDEwMCwKLQkweDYwMmYsIDB4MDAwMCwgMHg2MDJmLCAweDAwNDAsIDB4NjAyZiwgMHgwMDAwLCAweDAwMGUsIDB4NjAyYSwKLQkweDAwMGUsIDB4NjAwNiwgMHgwMDBlLCAweDYwMGUsIDB4MDAwZSwgMHg2MGVlLCAweDAwMGUsIDB4NjBmMiwKLQkweDYwZTMsIDB4MDAwMCwgMHg2ODg3LCAweDAwMDEsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjhhNywKLQkweDY4MDAsIDB4YTA4NCwgMHgwMGEwLCAweGMwYmQsIDB4NjgwMiwgMHg2ODAzLCAweDAwYTAsIDB4MDAwZSwKLQkweDYwNTIsIDB4NjA1MCwgMHgwMDA1LCAweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDIwNzEsIDB4YjYwMCwKLQkweDYwMjAsIDB4YTA4NCwgMHgwMDgwLCAweDAxMzgsIDB4MjAwMSwgMHhiNjBjLCAweDIwMGMsIDB4YzFiZCwKLQkweDIxMDIsIDB4MDgwNCwgMHg1YzNiLCAweDIwMDEsIDB4YjYwYywgMHgyMDBjLCAweGMxYmMsIDB4MjEwMiwKLQkweDYwMjgsIDB4YTA4NCwgMHhlMWZmLCAweDYwMmEsIDB4NjAyNywgMHgwMjAwLCAweDY4MDMsIDB4MDA5MCwKLQkweDIwYTksIDB4MDM4NCwgMHg2MDI0LCAweGQwY2MsIDB4MTUwOCwgMHgxZDA0LCAweDViZWEsIDB4MjA5MSwKLQkweDYwMDAsIDB4MWYwNCwgMHg1YmVhLCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweDgwZmMsIDB4MjAxMSwKLQkweDAwMDIsIDB4MDgwYywgMHg4MTA2LCAweDA4MGMsIDB4N2ZlMCwgMHgyMDE5LCAweDAwMDAsIDB4MDgwYywKLQkweDgwNmIsIDB4NjgwMywgMHgwMGEwLCAweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwMywgMHgwMDAxLCAweGEwODUsIDB4MDAwMSwgMHgwNDY4LCAweDg2ZmYsIDB4MTEyMCwKLQkweDA4MGMsIDB4MWU2MywgMHgwODBjLCAweDI0ZTUsIDB4NjBlMywgMHgwMDAwLCAweDIwMDEsIDB4Yjg4ZiwKLQkweDIwMDQsIDB4MDgwYywgMHgyOGE3LCAweDYwZTIsIDB4NjgwMywgMHgwMDgwLCAweDIwYTksIDB4MDM4NCwKLQkweDYwMjcsIDB4MWUwMCwgMHgyMDA5LCAweDFlMDAsIDB4ZTAwMCwgMHg2MDI0LCAweGExMGMsIDB4MDEzOCwKLQkweDFkMDQsIDB4NWMyMCwgMHgyMDkxLCAweDYwMDAsIDB4MWYwNCwgMHg1YzIwLCAweDA4MjAsIDB4NjAyOCwKLQkweGEwODUsIDB4MWUwMCwgMHg2MDJhLCAweDcwYTQsIDB4YTAwNSwgMHgxMTE4LCAweDY4ODcsIDB4MDAwMSwKLQkweDAwMDgsIDB4Njg4NiwgMHhhMDA2LCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDE1ZSwgMHgwMDA1LCAweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA3MSwgMHhiNjAwLCAweDIwNjksIDB4MDE0MCwKLQkweDYwMjAsIDB4YTA4NCwgMHgwMGMwLCAweDAxMjAsIDB4Njg4NCwgMHhhMDA1LCAweDE5MDQsIDB4NWM5NywKLQkweDY4MDMsIDB4MDA4OCwgMHg2MGUzLCAweDAwMDAsIDB4Njg4NywgMHgwMDAwLCAweDIwMDEsIDB4MDAwMCwKLQkweDA4MGMsIDB4MjhhNywgMHgyMDY5LCAweDAyMDAsIDB4NjgwNCwgMHhhMDA1LCAweDExMTgsIDB4NjgwOCwKLQkweGEwMDUsIDB4MDFjMCwgMHg2MDI4LCAweGEwODQsIDB4ZmJmZiwgMHg2MDJhLCAweDYwMjcsIDB4MDQwMCwKLQkweDIwNjksIDB4YjhjNiwgMHg3MDAwLCAweDIwNmEsIDB4NzA4ZiwgMHgwMDI2LCAweDcwMDMsIDB4MDAwMSwKLQkweDIwYTksIDB4MDAwMiwgMHgxZDA0LCAweDVjN2EsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NWM3YSwKLQkweDA4MDQsIDB4NWNjOCwgMHgyMDY5LCAweDAxNDAsIDB4MjBhOSwgMHgwMzg0LCAweDYwMjcsIDB4MWUwMCwKLQkweDIwMDksIDB4MWUwMCwgMHhlMDAwLCAweDYwMjQsIDB4YTEwYywgMHgwNTIwLCAweGEwODQsIDB4MWEwMCwKLQkweDE1MDgsIDB4MWQwNCwgMHg1Yzg2LCAweDIwOTEsIDB4NjAwMCwgMHgxZjA0LCAweDVjODYsIDB4MjAxMSwKLQkweDAwMDMsIDB4MDgwYywgMHg4MGZjLCAweDIwMTEsIDB4MDAwMiwgMHgwODBjLCAweDgxMDYsIDB4MDgwYywKLQkweDdmZTAsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsIDB4ODA2YiwgMHg2ODAzLCAweDAwYTAsIDB4MjAwMSwKLQkweGI4OWYsIDB4MjAwMywgMHgwMDAxLCAweDIwMDEsIDB4YjYwMCwgMHgyMDAzLCAweDAwMDEsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDBiMCwgMHgwODBjLCAweDI0ZTUsIDB4NjgwMywgMHgwMDgwLCAweDIwNjksIDB4MDE0MCwKLQkweDYwZTMsIDB4MDAwMCwgMHg3MGE0LCAweGEwMDUsIDB4MTExOCwgMHg2ODg3LCAweDAwMDEsIDB4MDAwOCwKLQkweDY4ODYsIDB4MjAwMSwgMHhiODhmLCAweDIwMDQsIDB4MDgwYywgMHgyOGE3LCAweDYwZTIsIDB4YTAwNiwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAxNWUsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA3MSwgMHhiNjAwLCAweDYwMjAsIDB4YTA4NCwgMHgwMGMwLCAweDAxZTAsIDB4MjAxMSwKLQkweDAwMDMsIDB4MDgwYywgMHg4MGZjLCAweDIwMTEsIDB4MDAwMiwgMHgwODBjLCAweDgxMDYsIDB4MDgwYywKLQkweDdmZTAsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsIDB4ODA2YiwgMHgyMDY5LCAweDAxNDAsIDB4NjgwMywKLQkweDAwYTAsIDB4MjAwMSwgMHhiODlmLCAweDIwMDMsIDB4MDAwMSwgMHgyMDAxLCAweGI2MDAsIDB4MjAwMywKLQkweDAwMDEsIDB4MDgwNCwgMHg1ZDZkLCAweDIwMDEsIDB4YjYwYywgMHgyMDBjLCAweGQxYjQsIDB4MTE2MCwKLQkweGMxYjUsIDB4MjEwMiwgMHgwODBjLCAweDU5ZmMsIDB4MjA2OSwgMHgwMTQwLCAweDA4MGMsIDB4MjRlNSwKLQkweDY4MDMsIDB4MDA4MCwgMHg2MGUzLCAweDAwMDAsIDB4MjA2OSwgMHgwMjAwLCAweDY4MDQsIDB4YTAwNSwKLQkweDExMTgsIDB4NjgwOCwgMHhhMDA1LCAweDAxYzAsIDB4NjAyOCwgMHhhMDg0LCAweGZkZmYsIDB4NjAyYSwKLQkweDYwMjcsIDB4MDIwMCwgMHgyMDY5LCAweGI4YzYsIDB4NzAwMCwgMHgyMDZhLCAweDcwOGYsIDB4MDAyNywKLQkweDcwMDMsIDB4MDAwMSwgMHgyMGE5LCAweDAwMDIsIDB4MWQwNCwgMHg1ZDI0LCAweDIwOTEsIDB4NjAwMCwKLQkweDFmMDQsIDB4NWQyNCwgMHgwODA0LCAweDVkNmQsIDB4NjAyNywgMHgxZTAwLCAweDIwMDksIDB4MWUwMCwKLQkweGUwMDAsIDB4NjAyNCwgMHhhMTBjLCAweDAxYzgsIDB4YTA4NCwgMHgxYzAwLCAweDExYjAsIDB4MWQwNCwKLQkweDVkMmMsIDB4MDAwNiwgMHgwMDE2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDA4MGMsIDB4Njk2YiwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwMWUsIDB4MDAwZSwgMHgwMGU2LCAweDIwNzEsIDB4YjhmNCwKLQkweDcwMTgsIDB4MDBlZSwgMHhhMDA1LCAweDFkMDAsIDB4MDUwMCwgMHgwMDI2LCAweDIwMTEsIDB4NWExNCwKLQkweDA4MGMsIDB4NmEwZSwgMHgyMDExLCAweDVhMDcsIDB4MDgwYywgMHg2YWNlLCAweDAwMmUsIDB4MjA2OSwKLQkweDAxNDAsIDB4NjBlMywgMHgwMDAwLCAweDcwYTQsIDB4YTAwNSwgMHgxMTE4LCAweDY4ODcsIDB4MDAwMSwKLQkweDAwMDgsIDB4Njg4NiwgMHgyMDAxLCAweGI4OGYsIDB4MjAwNCwgMHgwODBjLCAweDI4YTcsIDB4NjBlMiwKLQkweDIwMDEsIDB4YjYwYywgMHgyMDBjLCAweGMxYjQsIDB4MjEwMiwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAxNWUsIDB4MDAwNSwgMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA0NiwgMHgwMGM2LCAweDAwZTYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNzEsIDB4YjYwMCwKLQkweDcxMzAsIDB4ZDE4NCwgMHgxMTgwLCAweDIwMTEsIDB4YjY1MywgMHgyMjE0LCAweGQyZWMsIDB4MDEzOCwKLQkweGMxOGQsIDB4NzEzMiwgMHgyMDExLCAweGI2NTMsIDB4MjIxNCwgMHhkMmFjLCAweDExMjAsIDB4NzAzMCwKLQkweGQwOGMsIDB4MDkwNCwgMHg1ZGRhLCAweDcxMzAsIDB4YzE4NSwgMHg3MTMyLCAweDIwMTEsIDB4YjY1MywKLQkweDIyMGMsIDB4ZDFhNCwgMHgwNTMwLCAweDAwMTYsIDB4MjAxOSwgMHgwMDBlLCAweDA4MGMsIDB4YjEyMSwKLQkweDAxNTYsIDB4MjBhOSwgMHgwMDdmLCAweDIwMDksIDB4MDAwMCwgMHhhMTg2LCAweDAwN2UsIDB4MDFhMCwKLQkweGExODYsIDB4MDA4MCwgMHgwMTg4LCAweDA4MGMsIDB4NTAxYiwgMHgxMTcwLCAweDgxMjcsIDB4YTAwNiwKLQkweDAwMTYsIDB4MjAwOSwgMHgwMDBlLCAweDA4MGMsIDB4YjFhNCwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwKLQkweDAxMDAsIDB4MDgwYywgMHg2YjhjLCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDVkYTUsIDB4MDE1ZSwKLQkweDAwMWUsIDB4ZDFhYywgMHgxMTQ4LCAweDAwMTYsIDB4MjAwOSwgMHgwMDAwLCAweDIwMTksIDB4MDAwNCwKLQkweDA4MGMsIDB4MmNhNCwgMHgwMDFlLCAweDAwNzAsIDB4MDE1NiwgMHgyMGE5LCAweDAwN2YsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDgwYywgMHg1MDFiLCAweDExMTAsIDB4MDgwYywgMHg0YzdlLCAweDgxMDgsIDB4MWYwNCwKLQkweDVkZDEsIDB4MDE1ZSwgMHgwODBjLCAweDFlNjMsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4ODBmYywKLQkweDIwMTEsIDB4MDAwMiwgMHgwODBjLCAweDgxMDYsIDB4MDgwYywgMHg3ZmUwLCAweDAwMzYsIDB4MjAxOSwKLQkweDAwMDAsIDB4MDgwYywgMHg4MDZiLCAweDAwM2UsIDB4NjBlMywgMHgwMDAwLCAweDIwMDEsIDB4YjYwMCwKLQkweDIwMDMsIDB4MDAwMSwgMHgwODBjLCAweDVhNzksIDB4MDBlZSwgMHgwMGNlLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMTVlLCAweDAwMDUsIDB4MjA3MSwgMHhiNmUyLCAweDcwMDMsIDB4MDAwMCwKLQkweDcwMDcsIDB4MDAwMCwgMHg3MDBmLCAweDAwMDAsIDB4NzAyYiwgMHgwMDAxLCAweDcwNGYsIDB4MDAwMCwKLQkweDcwNTMsIDB4MDAwMSwgMHg3MDVmLCAweDAwMjAsIDB4NzA2MywgMHgwMDQwLCAweDcwODMsIDB4MDAwMCwKLQkweDcwOGIsIDB4MDAwMCwgMHg3MDhmLCAweDAwMDEsIDB4NzBiZiwgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjZlMiwgMHg2ODQ4LCAweGEwMDUsIDB4MTEzMCwgMHg3MDI4LCAweGMwODUsIDB4NzAyYSwKLQkweGEwODUsIDB4MDAwMSwgMHgwNDI4LCAweDZhNTAsIDB4NzIzNiwgMHg2YjU0LCAweDczM2EsIDB4Njg1OCwKLQkweDcwM2UsIDB4NzA3YSwgMHg2ODVjLCAweDcwNDIsIDB4NzA3ZSwgMHg2ODQ4LCAweDcwMmUsIDB4Njg0MCwKLQkweDcwMzIsIDB4MjAwOSwgMHgwMDBjLCAweDIwMGEsIDB4ODAwNywgMHg4MDA2LCAweDgwMDYsIDB4YTA4YywKLQkweDAwM2YsIDB4YTA4NCwgMHhmZmMwLCAweGEyMTAsIDB4MjEwMCwgMHhhMzE5LCAweDcyNzIsIDB4NzM3NiwKLQkweDcwMjgsIDB4YzA4NCwgMHg3MDJhLCAweDcwMDcsIDB4MDAwMSwgMHg3MDBmLCAweDAwMDAsIDB4YTAwNiwKLQkweDAwZWUsIDB4MDAwNSwgMHgyYjc4LCAweDIwNzEsIDB4YjZlMiwgMHg3MDA0LCAweDAwNDMsIDB4NzAwYywKLQkweDAwMDIsIDB4NWU1NiwgMHg1ZTRkLCAweDVlNGQsIDB4NWU0ZCwgMHg1ZTRkLCAweDAwMDUsIDB4NWVhYywKLQkweDVlYWQsIDB4NWVkZiwgMHg1ZWUwLCAweDVlYWEsIDB4NWYyZSwgMHg1ZjMzLCAweDVmNjQsIDB4NWY2NSwKLQkweDVmODAsIDB4NWY4MSwgMHg1ZjgyLCAweDVmODMsIDB4NWY4NCwgMHg1Zjg1LCAweDYwM2IsIDB4NjA2MiwKLQkweDcwMGMsIDB4MDAwMiwgMHg1ZTZmLCAweDVlYWEsIDB4NWVhYSwgMHg1ZWFiLCAweDVlYWIsIDB4NzgzMCwKLQkweDc5MzAsIDB4YTEwNiwgMHgwMTIwLCAweDc4MzAsIDB4NzkzMCwgMHhhMTA2LCAweDE1MTAsIDB4NzAzMCwKLQkweGExMGEsIDB4MDFmOCwgMHgxMjEwLCAweDcxMmMsIDB4YTEwYSwgMHhhMThhLCAweDAwMDIsIDB4MTJkMCwKLQkweDA4MGMsIDB4MTVlNCwgMHgwMWIwLCAweDJkMDAsIDB4NzA1YSwgMHg3MDYzLCAweDAwNDAsIDB4MjAwMSwKLQkweDAwMDMsIDB4NzA1NywgMHgwMDAwLCAweDAxMjYsIDB4MDAwNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwOSwKLQkweGI5MTMsIDB4MjEwNCwgMHhjMDg1LCAweDIwMGEsIDB4MDAwZSwgMHg3MDBlLCAweDAxMmUsIDB4MDgwYywKLQkweDE2NjQsIDB4MDAwNSwgMHgwODBjLCAweDE1ZTQsIDB4MGRlMCwgMHgyZDAwLCAweDcwNWEsIDB4MDgwYywKLQkweDE1ZTQsIDB4MTEwOCwgMHgwYzEwLCAweDJkMDAsIDB4NzA4NiwgMHg3MDYzLCAweDAwODAsIDB4MjAwMSwKLQkweDAwMDQsIDB4MDhmOCwgMHgwMDA1LCAweDAwMDUsIDB4MDAwNSwgMHg3MDBjLCAweDAwMDIsIDB4NWViNCwKLQkweDVlYjcsIDB4NWVjNSwgMHg1ZWRlLCAweDVlZGUsIDB4MDgwYywgMHg1ZTY4LCAweDAwMDUsIDB4MDEyNiwKLQkweDgwMDEsIDB4NzAwZSwgMHg3MDU4LCAweDAwMDYsIDB4MDgwYywgMHg2M2I1LCAweDAxMjAsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg1ZTY4LCAweDAwZGUsIDB4MDA0OCwgMHgwMTI2LCAweDgwMDEsIDB4NzAwZSwKLQkweDA4MGMsIDB4NjNiNSwgMHg3MDU4LCAweDIwNjgsIDB4NzA4NCwgMHg3MDVhLCAweDY4MDMsIDB4MDAwMCwKLQkweDY4MDcsIDB4MDAwMCwgMHg2ODM0LCAweGEwODQsIDB4MDBmZiwgMHhhMDhhLCAweDAwM2EsIDB4MTIxOCwKLQkweDAwZGIsIDB4MDEyZSwgMHgwMDA1LCAweDAxMmUsIDB4MDgwYywgMHg1Zjg2LCAweDAwMDUsIDB4MDAwNSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGI2ZTIsIDB4NzAwYywgMHgwMDAyLCAweDVlZWIsIDB4NWVlYiwKLQkweDVlZWIsIDB4NWVlZCwgMHg1ZWYwLCAweDAwZWUsIDB4MDAwNSwgMHg3MDBmLCAweDAwMDEsIDB4MDAxMCwKLQkweDcwMGYsIDB4MDAwMiwgMHgwMGVlLCAweDAwMDUsIDB4NWY4NiwgMHg1Zjg2LCAweDVmYTIsIDB4NWY4NiwKLQkweDYxMWYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmYTIsIDB4NjE2MSwKLQkweDYxYTQsIDB4NjFlZCwgMHg2MjAxLCAweDVmODYsIDB4NWY4NiwgMHg1ZmJlLCAweDVmYTIsIDB4NWY4NiwKLQkweDVmODYsIDB4NjAxOCwgMHg2MmFkLCAweDYyYzgsIDB4NWY4NiwgMHg1ZmJlLCAweDVmODYsIDB4NWY4NiwKLQkweDVmODYsIDB4NWY4NiwgMHg2MDBlLCAweDYyYzgsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWY4NiwKLQkweDVmODYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWY4NiwgMHg1ZmQyLCAweDVmODYsIDB4NWY4NiwKLQkweDVmODYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NjNkMywKLQkweDVmODYsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWY4NiwgMHg1ZmU3LCAweDcwMjAsIDB4MjA2OCwKLQkweDA4MGMsIDB4MTYxNCwgMHgwMDA1LCAweDcwMGMsIDB4MDAwMiwgMHg1ZjNhLCAweDVmM2QsIDB4NWY0YiwKLQkweDVmNjMsIDB4NWY2MywgMHgwODBjLCAweDVlNjgsIDB4MDAwNSwgMHgwMTI2LCAweDgwMDEsIDB4NzAwZSwKLQkweDcwNTgsIDB4MDAwNiwgMHgwODBjLCAweDYzYjUsIDB4MDEyMCwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDVlNjgsIDB4MDBkZSwgMHgwMDQ4LCAweDAxMjYsIDB4ODAwMSwgMHg3MDBlLCAweDA4MGMsIDB4NjNiNSwKLQkweDcwNTgsIDB4MjA2OCwgMHg3MDg0LCAweDcwNWEsIDB4NjgwMywgMHgwMDAwLCAweDY4MDcsIDB4MDAwMCwKLQkweDY4MzQsIDB4YTA4NCwgMHgwMGZmLCAweGEwOGEsIDB4MDAxYSwgMHgxMjE4LCAweDAwM2IsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDEyZSwgMHgwNDE5LCAweDAwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDVmODYsIDB4NWZhMiwKLQkweDYxMGIsIDB4NWY4NiwgMHg1ZmEyLCAweDVmODYsIDB4NWZhMiwgMHg1ZmEyLCAweDVmODYsIDB4NWZhMiwKLQkweDYxMGIsIDB4NWZhMiwgMHg1ZmEyLCAweDVmYTIsIDB4NWZhMiwgMHg1ZmEyLCAweDVmODYsIDB4NWZhMiwKLQkweDYxMGIsIDB4NWY4NiwgMHg1Zjg2LCAweDVmYTIsIDB4NWY4NiwgMHg1Zjg2LCAweDVmODYsIDB4NWZhMiwKLQkweDAwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDAwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDcwMDcsIDB4MDAwMSwKLQkweDY4MzgsIDB4YTA4NCwgMHgwMGZmLCAweGMwZDUsIDB4NjgzYSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwMTJlLCAweDAwMDUsIDB4NzAwNywgMHgwMDAxLCAweDY4MzgsIDB4YTA4NCwKLQkweDAwZmYsIDB4YzBlNSwgMHg2ODNhLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NTQ3YSwKLQkweDAxMmUsIDB4MDAwNSwgMHg3MDA3LCAweDAwMDEsIDB4NjgzOCwgMHhhMDg0LCAweDAwZmYsIDB4YzBlZCwKLQkweDY4M2EsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg1NDdhLCAweDAxMmUsIDB4MDAwNSwKLQkweDcwMDcsIDB4MDAwMSwgMHg2ODM4LCAweGEwODQsIDB4MDBmZiwgMHhjMGRkLCAweDY4M2EsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDU0N2EsIDB4MDEyZSwgMHgwMDA1LCAweDY4MzQsIDB4ODAwNywKLQkweGEwODQsIDB4MDBmZiwgMHgwOTg4LCAweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwKLQkweDYwY2IsIDB4NzAwNywgMHgwMDA2LCAweDcwMTIsIDB4MmQwMCwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwKLQkweDYwY2IsIDB4MDAwNSwgMHg2ODM0LCAweDgwMDcsIDB4YTA4NCwgMHgwMGZmLCAweDA5MDQsIDB4NWY5NCwKLQkweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwgMHg2MGU4LCAweDcwMDcsIDB4MDAwNiwKLQkweDcwMTIsIDB4MmQwMCwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwgMHg2MGU4LCAweDAwMDUsIDB4NjgzNCwKLQkweDgwMDcsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAwMSwgMHgxOTA0LCAweDVmOTQsIDB4NzAwNywKLQkweDAwMDEsIDB4MjAwOSwgMHhiNjMxLCAweDIxMGMsIDB4ODFmZiwgMHgxMWE4LCAweDY4MzgsIDB4YTA4NCwKLQkweDAwZmYsIDB4NjgzYSwgMHg2ODUzLCAweDAwMDAsIDB4MDgwYywgMHg0ZGY0LCAweDExMDgsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDY4MzcsIDB4MDEzOSwgMHg2ODRhLCAweDY5NTIsIDB4MDgwYywKLQkweDU0N2EsIDB4MDEyZSwgMHgwY2EwLCAweDIwMDEsIDB4MDAyOCwgMHgwYzkwLCAweDY4NGMsIDB4YTA4NCwKLQkweDAwYzAsIDB4YTA4NiwgMHgwMGMwLCAweDExMjAsIDB4NzAwNywgMHgwMDAxLCAweDA4MDQsIDB4NjJlMCwKLQkweDJkMDAsIDB4NzAxNiwgMHg3MDFhLCAweDIwYTksIDB4MDAwNCwgMHhhMDgwLCAweDAwMjQsIDB4MjA5OCwKLQkweDIwYTEsIDB4YjcwZCwgMHg1M2EzLCAweDY4NTgsIDB4NzAxMiwgMHhhMDgyLCAweDA0MDEsIDB4MWEwNCwKLQkweDVmYjAsIDB4NmE4NCwgMHhhMjhhLCAweDAwMDIsIDB4MWEwNCwgMHg1ZmIwLCAweDgyZmYsIDB4MTEzOCwKLQkweDY4ODgsIDB4Njk4YywgMHhhMTA1LCAweDAxMTgsIDB4MjAwMSwgMHg2MDllLCAweDAwMTgsIDB4YTI4MCwKLQkweDYwOTQsIDB4MjAwNSwgMHg3MGM2LCAweDcwMTAsIDB4YTAxNSwgMHgwOTA0LCAweDYwODAsIDB4MDgwYywKLQkweDE1ZTQsIDB4MTExOCwgMHg3MDA3LCAweDAwMGYsIDB4MDAwNSwgMHgyZDAwLCAweDcwMjIsIDB4NzBjNCwKLQkweDIwNjAsIDB4MmMwNSwgMHg2ODM2LCAweGUwMDQsIDB4YWQwMCwgMHg3MDk2LCAweGUwMDgsIDB4YTIwYSwKLQkweDEyMTAsIDB4YTAwZSwgMHgyMjAwLCAweDcxMTIsIDB4ZTIwYywgMHg4MDAzLCAweDgwMGIsIDB4YTI5NiwKLQkweDAwMDQsIDB4MDEwOCwgMHhhMTA4LCAweDcxOWEsIDB4ODEwYiwgMHg3MTllLCAweGFlOTAsIDB4MDAyMiwKLQkweDA4MGMsIDB4MTY0OCwgMHg3MDkwLCAweGEwOGUsIDB4MDEwMCwgMHgwMTcwLCAweGEwODYsIDB4MDIwMCwKLQkweDAxMTgsIDB4NzAwNywgMHgwMDEwLCAweDAwMDUsIDB4NzAyMCwgMHgyMDY4LCAweDA4MGMsIDB4MTYxNCwKLQkweDcwMTQsIDB4MjA2OCwgMHgwODA0LCAweDVmYjAsIDB4NzAyMCwgMHgyMDY4LCAweDcwMTgsIDB4NjgwMiwKLQkweDY4MDcsIDB4MDAwMCwgMHgyZDA4LCAweDIwNjgsIDB4NjkwNiwgMHg3MTFhLCAweDA4MDQsIDB4NjAzYiwKLQkweDcwMTQsIDB4MjA2OCwgMHg3MDA3LCAweDAwMDEsIDB4Njg4NCwgMHhhMDA1LCAweDExMjgsIDB4Njg4OCwKLQkweDY5OGMsIDB4YTEwNSwgMHgwMTA4LCAweDAwYjEsIDB4NjgzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMWUsIDB4MDkwNCwgMHg2MmUwLCAweDA0YjgsIDB4NjA5NiwgMHg2MDlhLCAweDAwMDIsIDB4MDAxMSwKLQkweDAwMDcsIDB4MDAwNCwgMHgwMDBhLCAweDAwMGYsIDB4MDAwNSwgMHgwMDA2LCAweDAwMGEsIDB4MDAxMSwKLQkweDAwMDUsIDB4MDAwNCwgMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwgMHgwMDc2LCAweDAwNjYsIDB4NmY4OCwKLQkweDZlOGMsIDB4NjgwNCwgMHgyMDYwLCAweGFjZjAsIDB4MDAyMSwgMHhhY2Y4LCAweDAwMjcsIDB4MjAwOSwKLQkweDAwMDUsIDB4NzAwYywgMHg3ODE2LCAweDcwMDgsIDB4NzgxMiwgMHg3MDA0LCAweDc4MDYsIDB4NzAwMCwKLQkweDc4MDIsIDB4N2UwZSwgMHg3ZjBhLCAweDgxMDksIDB4MDEyOCwgMHhhZWYyLCAweDAwMDQsIDB4YWZmYSwKLQkweDAwMDYsIDB4MGM3OCwgMHg2MDA0LCAweGEwNjUsIDB4MWQzMCwgMHgwMDZlLCAweDAwN2UsIDB4MDBjZSwKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDIwMDksIDB4YjYzMSwgMHgyMTBjLCAweDgxZmYsIDB4MTE5OCwKLQkweDY4MzgsIDB4YTA4NCwgMHgwMGZmLCAweDY4M2EsIDB4MDgwYywgMHg0Y2Q3LCAweDExMDgsIDB4MDAwNSwKLQkweDA4MGMsIDB4NTU0ZCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDlmODgsIDB4MDgwYywKLQkweDU0N2EsIDB4MDEyZSwgMHgwY2EwLCAweDIwMDEsIDB4MDAyOCwgMHgyMDA5LCAweDAwMDAsIDB4MGM4MCwKLQkweDIwMDksIDB4YjYzMSwgMHgyMTBjLCAweDgxZmYsIDB4MTFiMCwgMHg2ODU4LCAweGEwMDUsIDB4MDFjMCwKLQkweDY4MzgsIDB4YTA4NCwgMHgwMGZmLCAweDY4M2EsIDB4Njg1MywgMHgwMDAwLCAweDA4MGMsIDB4NGQ5OCwKLQkweDExMDgsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2ODRhLCAweDY5NTIsIDB4MDgwYywKLQkweDU0N2EsIDB4MDEyZSwgMHgwY2IwLCAweDIwMDEsIDB4MDAyOCwgMHgyMDA5LCAweDAwMDAsIDB4MGM5MCwKLQkweDIwMDEsIDB4MDAwMCwgMHgwYzc4LCAweDcwMTgsIDB4NjgwMiwgMHgyZDA4LCAweDIwNjgsIDB4NjkwNiwKLQkweDcxMWEsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsIDB4MDExOCwgMHg3MDA3LCAweDAwMDYsIDB4MDAzMCwKLQkweDcwMTQsIDB4MjA2OCwgMHg3MDA3LCAweDAwMDEsIDB4NzA0OCwgMHgwODBmLCAweDAwMDUsIDB4NzAwNywKLQkweDAwMDEsIDB4Njk0NCwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwgMHg2ODQ4LCAweGEwODQsIDB4MDBmZiwKLQkweDIwYTksIDB4MDAwMSwgMHhhMDk2LCAweDAwMDEsIDB4MDFiMCwgMHgyMDA5LCAweDAwMDAsIDB4MjBhOSwKLQkweDAwZmYsIDB4YTA5NiwgMHgwMDAyLCAweDAxNzgsIDB4YTAwNSwgMHgxMWYwLCAweDY5NDQsIDB4ODEwZiwKLQkweGExOGMsIDB4MDBmZiwgMHgwODBjLCAweDUwMWIsIDB4MTFiOCwgMHgwMDY2LCAweDZlNTAsIDB4MDgwYywKLQkweDUxMWEsIDB4MDA2ZSwgMHgwMDg4LCAweDAwNDYsIDB4MjAxMSwgMHhiNjBjLCAweDIyMjQsIDB4YzQ4NCwKLQkweDI0MTIsIDB4MDA0ZSwgMHgwMGM2LCAweDA4MGMsIDB4NTAxYiwgMHgxMTEwLCAweDA4MGMsIDB4NTI3YiwKLQkweDgxMDgsIDB4MWYwNCwgMHg2MTRiLCAweDAwY2UsIDB4Njg0YywgMHhkMDg0LCAweDExMTgsIDB4MDgwYywKLQkweDE2MTQsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDU0N2EsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywgMHgwMDAxLCAweDIwMDEsIDB4YjY1MywKLQkweDIwMDQsIDB4ZDBhNCwgMHgwNTgwLCAweDIwNjEsIDB4Yjk3NSwgMHg2MTAwLCAweGQxODQsIDB4MDE3OCwKLQkweDY4NTgsIDB4YTA4NCwgMHgwMGZmLCAweDE1NTAsIDB4NjAwMCwgMHhkMDg0LCAweDA1MjAsIDB4NjAwNCwKLQkweGEwMDUsIDB4MTUzOCwgMHg2MDAzLCAweDAwMDAsIDB4NjAwYiwgMHgwMDAwLCAweDAwYzgsIDB4MjAxMSwKLQkweDAwMDEsIDB4Njg2MCwgMHhhMDA1LCAweDExMTAsIDB4MjAwMSwgMHgwMDFlLCAweDgwMDAsIDB4NjAxNiwKLQkweDY4NTgsIDB4YTA4NCwgMHgwMGZmLCAweDAxNzgsIDB4NjAwNiwgMHg2ODU4LCAweDgwMDcsIDB4YTA4NCwKLQkweDAwZmYsIDB4MDE0OCwgMHg2MDBhLCAweDY4NTgsIDB4ODAwMCwgMHgxMTA4LCAweGMyOGQsIDB4NjIwMiwKLQkweDAxMmUsIDB4MDgwNCwgMHg2M2E0LCAweDAxMmUsIDB4MDgwNCwgMHg2MzllLCAweDAxMmUsIDB4MDgwNCwKLQkweDYzOTgsIDB4MDEyZSwgMHgwODA0LCAweDYzOWIsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywKLQkweDAwMDEsIDB4MjAwMSwgMHhiNjUzLCAweDIwMDQsIDB4ZDBhNCwgMHgwNWUwLCAweDIwNjEsIDB4Yjk3NSwKLQkweDYwMDAsIDB4ZDA4NCwgMHgwNWI4LCAweDYyMDQsIDB4NjMwOCwgMHhkMDhjLCAweDE1MzAsIDB4NmM0OCwKLQkweGE0ODQsIDB4MDAwMywgMHgwMTcwLCAweDY5NTgsIDB4YTE4YywgMHgwMGZmLCAweDgwMDEsIDB4MTEyMCwKLQkweDIxMDAsIDB4YTIxMCwgMHgwNjIwLCAweDAwMjgsIDB4ODAwMSwgMHgxNTA4LCAweDIxMDAsIDB4YTIxMiwKLQkweDAyZjAsIDB4YTQ4NCwgMHgwMDBjLCAweDAxODgsIDB4Njk1OCwgMHg4MTBmLCAweGExOGMsIDB4MDBmZiwKLQkweGEwODIsIDB4MDAwNCwgMHgxMTIwLCAweDIxMDAsIDB4YTMxOCwgMHgwMjg4LCAweDAwMzAsIDB4YTA4MiwKLQkweDAwMDQsIDB4MTE2OCwgMHgyMTAwLCAweGEzMWEsIDB4MDI1MCwgMHg2ODYwLCAweGEwMDUsIDB4MDExMCwKLQkweDgwMDAsIDB4NjAxNiwgMHg2MjA2LCAweDYzMGEsIDB4MDEyZSwgMHgwODA0LCAweDYzYTQsIDB4MDEyZSwKLQkweDA4MDQsIDB4NjNhMSwgMHgwMTJlLCAweDA4MDQsIDB4NjM5ZSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDcwMDcsIDB4MDAwMSwgMHgyMDYxLCAweGI5NzUsIDB4NjMwMCwgMHhkMzhjLCAweDExMjAsIDB4NjMwOCwKLQkweDgzMTgsIDB4MDIyMCwgMHg2MzBhLCAweDAxMmUsIDB4MDgwNCwgMHg2M2IyLCAweDAxMmUsIDB4MDgwNCwKLQkweDYzYTEsIDB4MDEyNiwgMHgwMGM2LCAweDIwOTEsIDB4ODAwMCwgMHg3MDA3LCAweDAwMDEsIDB4Njg0YywKLQkweGQwYWMsIDB4MDE0OCwgMHgwMGM2LCAweDIwNjEsIDB4Yjk3NSwgMHg2MDAwLCAweGEwODQsIDB4ZmNmZiwKLQkweDYwMDIsIDB4MDBjZSwgMHgwNDQ4LCAweDY4NTgsIDB4YTAwNSwgMHgwNWQwLCAweDY4NWMsIDB4YTA2NSwKLQkweDA1OTgsIDB4MjAwMSwgMHhiNjMxLCAweDIwMDQsIDB4YTAwNSwgMHgwMTE4LCAweDA4MGMsIDB4OWVkOSwKLQkweDAwNjgsIDB4NjAxMywgMHgwNDAwLCAweDYwNTcsIDB4MDAwMCwgMHg2OTRjLCAweGQxYTQsIDB4MDExMCwKLQkweDY5NTAsIDB4NjE1NiwgMHgyMDA5LCAweDAwNDEsIDB4MDgwYywgMHg4NmQzLCAweDY5NTgsIDB4YTE4YywKLQkweGZmMDAsIDB4YTE4NiwgMHgyMDAwLCAweDExNDAsIDB4MDAyNiwgMHgyMDA5LCAweDAwMDAsIDB4MjAxMSwKLQkweGZkZmYsIDB4MDgwYywgMHg2YjhjLCAweDAwMmUsIDB4Njg0YywgMHhkMGM0LCAweDAxNDgsIDB4MjA2MSwKLQkweGI5NzUsIDB4NjAwMCwgMHhkMDhjLCAweDExMjAsIDB4NjAwOCwgMHg4MDAwLCAweDAyMDgsIDB4NjAwYSwKLQkweDAwY2UsIDB4MDEyZSwgMHgwODA0LCAweDYzYTQsIDB4MDBjZSwgMHgwMTJlLCAweDA4MDQsIDB4NjM5ZSwKLQkweDY5NTQsIDB4YTE4NiwgMHgwMDJlLCAweDBkNDAsIDB4YTE4NiwgMHgwMDJkLCAweDBkMjgsIDB4YTE4NiwKLQkweDAwNDUsIDB4MDUyOCwgMHhhMTg2LCAweDAwMmEsIDB4MTEzMCwgMHgyMDAxLCAweGI2MGMsIDB4MjAwYywKLQkweGMxOTQsIDB4MjEwMiwgMHgwOGM4LCAweGExODYsIDB4MDAyMCwgMHgwMTcwLCAweGExODYsIDB4MDAyOSwKLQkweDFkMTgsIDB4Njk0NCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHgwODBjLCAweDUwMWIsIDB4MTk2MCwKLQkweDYwMDAsIDB4YzBlNCwgMHg2MDAyLCAweDA4NDAsIDB4Njg1YywgMHhhMDY1LCAweDA5YTgsIDB4NjAwNywKLQkweDAwMjQsIDB4MjAwMSwgMHhiOGI2LCAweDIwMDQsIDB4NjAxNiwgMHgwODA0LCAweDYyM2MsIDB4Njg1YywKLQkweGEwNjUsIDB4MDk1MCwgMHgwMGU2LCAweDY4NjAsIDB4YTA3NSwgMHgyMDAxLCAweGI2MzEsIDB4MjAwNCwKLQkweGEwMDUsIDB4MDE1MCwgMHgwODBjLCAweDllZDksIDB4OGVmZiwgMHgwMTE4LCAweDJlNjAsIDB4MDgwYywKLQkweDllZDksIDB4MDBlZSwgMHgwODA0LCAweDYyM2MsIDB4NjAyMCwgMHhjMGRjLCAweGMwZDUsIDB4NjAyMiwKLQkweDJlNjAsIDB4NjAwNywgMHgwMDNhLCAweDY4NzAsIDB4YTAwNSwgMHgwMTMwLCAweDYwMDcsIDB4MDAzYiwKLQkweDY4NzQsIDB4NjAyYSwgMHg2ODc4LCAweDYwMTIsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmNmZiwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMGVlLCAweDA4MDQsIDB4NjIzYywgMHgyMDYxLCAweGI5NzUsIDB4NjAwMCwKLQkweGQwODQsIDB4MDE5MCwgMHhkMDhjLCAweDE5MDQsIDB4NjNiMiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYyMDQsIDB4ODIxMCwgMHgwMjIwLCAweDYyMDYsIDB4MDEyZSwgMHgwODA0LCAweDYzYjIsIDB4MDEyZSwKLQkweDY4NTMsIDB4MDAxNiwgMHgwODA0LCAweDYzYWIsIDB4Njg1MywgMHgwMDA3LCAweDA4MDQsIDB4NjNhYiwKLQkweDY4MzQsIDB4ODAwNywgMHhhMDg0LCAweDAwZmYsIDB4MTExOCwgMHgwODBjLCAweDVmOTQsIDB4MDA3OCwKLQkweDIwMzAsIDB4ODAwMSwgMHgxMTIwLCAweDcwMDcsIDB4MDAwMSwgMHgwMDUxLCAweDAwNDAsIDB4NzAwNywKLQkweDAwMDYsIDB4NzAxMiwgMHgyZDAwLCAweDcwMTYsIDB4NzAxYSwgMHg3MDRiLCAweDYyZTAsIDB4MDAwNSwKLQkweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YTAzZSwgMHgyMDA5LCAweGI2MzEsIDB4MjEwYywKLQkweDgxZmYsIDB4MTkwNCwgMHg2MzVlLCAweDIwMDksIDB4YjYwYywgMHgyMTBjLCAweGQxOTQsIDB4MTkwNCwKLQkweDYzODgsIDB4Njg0OCwgMHgyMDcwLCAweGFlODIsIDB4YmUwMCwgMHgwYTA0LCAweDYzNTIsIDB4MjAwMSwKLQkweGI2MTcsIDB4MjAwNCwgMHhhZTAyLCAweDFhMDQsIDB4NjM1MiwgMHg3MTFjLCAweGExODYsIDB4MDAwNiwKLQkweDE5MDQsIDB4NjM0MSwgMHg3MDE4LCAweGEwMDUsIDB4MDkwNCwgMHg2MzVlLCAweDIwMDQsIDB4ZDBlNCwKLQkweDE5MDQsIDB4NjM4MywgMHgyMDYxLCAweGI5NzUsIDB4NjEwMCwgMHhhMTg0LCAweDAzMDEsIDB4YTA4NiwKLQkweDAwMDEsIDB4MTU1MCwgMHg3MDIwLCAweGQwZGMsIDB4MTkwNCwgMHg2MzhiLCAweDY4NTMsIDB4MDAwMCwKLQkweDY4MDMsIDB4MDAwMCwgMHgyZDA4LCAweDcwMTAsIDB4YTAwNSwgMHgxMTU4LCAweDcxMTIsIDB4Njg0YywKLQkweGQwZjQsIDB4MTkwNCwgMHg2MzhlLCAweDJlNjAsIDB4MDgwYywgMHg2YWU4LCAweDAxMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MjA2OCwgMHg2ODAwLCAweGEwMDUsIDB4MWRlMCwgMHg2OTAyLCAweDIxNjgsIDB4Njg0YywKLQkweGQwZjQsIDB4MTkwNCwgMHg2MzhlLCAweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweDAxMmUsIDB4MDBlZSwKLQkweDY4NTMsIDB4MDAwNiwgMHgwODA0LCAweDYzYWIsIDB4ZDE4NCwgMHgwZGMwLCAweGQxYzQsIDB4MTFhOCwKLQkweDAwYjgsIDB4Njk0NCwgMHhhMThjLCAweGZmMDAsIDB4ODEwZiwgMHgwODBjLCAweDUwMWIsIDB4MTVkOCwKLQkweDYwMDAsIDB4ZDBlNCwgMHgxNWMwLCAweDcxMWMsIDB4YTE4NiwgMHgwMDA3LCAweDExMTgsIDB4Njg1MywKLQkweDAwMDIsIDB4MDQ5OCwgMHg2ODUzLCAweDAwMDgsIDB4MDQ4MCwgMHg2ODUzLCAweDAwMGUsIDB4MDQ2OCwKLQkweDY4NTMsIDB4MDAxNywgMHgwNDUwLCAweDY4NTMsIDB4MDAzNSwgMHgwNDM4LCAweDIwMDEsIDB4YjY3MiwKLQkweDIwMDQsIDB4ZDBmYywgMHgwMWU4LCAweDY4NDgsIDB4MjA3MCwgMHhhZTgyLCAweGJlMDAsIDB4MDJjMCwKLQkweDYwNWMsIDB4YWUwMiwgMHgxMmE4LCAweDcxMWMsIDB4YTE4NiwgMHgwMDA2LCAweDExODgsIDB4NzAxOCwKLQkweGEwMDUsIDB4MDE3MCwgMHgyMDA0LCAweGQwYmMsIDB4MDE1OCwgMHgyMDM5LCAweDAwMDEsIDB4NzAwMCwKLQkweGEwODYsIDB4MDAwNywgMHgxOTA0LCAweDYyZWIsIDB4NzAwMywgMHgwMDAyLCAweDA4MDQsIDB4NjJlYiwKLQkweDY4NTMsIDB4MDAyOCwgMHgwMDEwLCAweDY4NTMsIDB4MDAyOSwgMHgwMTJlLCAweDAwZWUsIDB4MDQxOCwKLQkweDY4NTMsIDB4MDAyYSwgMHgwY2QwLCAweDY4NTMsIDB4MDA0NSwgMHgwY2I4LCAweDJlNjAsIDB4MjAxOSwKLQkweDAwMDIsIDB4NjAxNywgMHgwMDE0LCAweDA4MGMsIDB4YWQ5YywgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwKLQkweDIwMDksIDB4MDAzZSwgMHgwMDU4LCAweDIwMDksIDB4MDAwNCwgMHgwMDQwLCAweDIwMDksIDB4MDAwNiwKLQkweDAwMjgsIDB4MjAwOSwgMHgwMDE2LCAweDAwMTAsIDB4MjAwOSwgMHgwMDAxLCAweDY4NTQsIDB4YTA4NCwKLQkweGZmMDAsIDB4YTEwNSwgMHg2ODU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NTQ3YSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweDE2MTQsIDB4MDAwNSwgMHg3MDJjLCAweDcxMzAsIDB4ODEwOCwKLQkweGExMDIsIDB4MDIzMCwgMHhhMDBlLCAweDcwMzQsIDB4NzA3MiwgMHg3MDM4LCAweDcwNzYsIDB4MDA1OCwKLQkweDcwNzAsIDB4YTA4MCwgMHgwMDQwLCAweDcwNzIsIDB4MTIzMCwgMHg3MDc0LCAweGEwODEsIDB4MDAwMCwKLQkweDcwNzYsIDB4YTA4NSwgMHgwMDAxLCAweDc5MzIsIDB4NzEzMiwgMHgwMDA1LCAweDAwZDYsIDB4MDgwYywKLQkweDZhZGYsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDBjNiwgMHgwMDM2LCAweDAwMjYsIDB4MDAxNiwKLQkweDcwMDcsIDB4MDAwMSwgMHg2YTQ0LCAweGEyODIsIDB4MDAwNCwgMHgxYTA0LCAweDY0MWUsIDB4ZDI4NCwKLQkweDAxNzAsIDB4NmE0YywgMHhhMjkwLCAweGI3MzUsIDB4MjIwNCwgMHhhMDY1LCAweDYwMDQsIDB4MDVlMCwKLQkweDgwMDcsIDB4YTA4NCwgMHgwMGZmLCAweGEwODQsIDB4MDAwNiwgMHgxMTA4LCAweDA0YTgsIDB4MmMxMCwKLQkweDA4MGMsIDB4ODY0ZSwgMHgxMTE4LCAweDA4MGMsIDB4OWY5MiwgMHgwNWEwLCAweDYyMWEsIDB4Njg0NCwKLQkweDAwMDIsIDB4NjNmZCwgMHg2NDAyLCAweDY0MDUsIDB4NjQwYiwgMHgyMDE5LCAweDAwMDIsIDB4MDgwYywKLQkweGIxMjEsIDB4MDA2MCwgMHgwODBjLCAweGIwYjgsIDB4MDA0OCwgMHgyMDE5LCAweDAwMDIsIDB4Njk1MCwKLQkweDA4MGMsIDB4YjBkMywgMHgwMDE4LCAweDY5NTAsIDB4MDgwYywgMHhiMGI4LCAweDA4MGMsIDB4ODZhNCwKLQkweDY4NTcsIDB4MDAwMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDU0N2EsIDB4MDEyZSwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMDNlLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDY4NTcsIDB4MDAwNiwKLQkweDBjODgsIDB4Njg1NywgMHgwMDAyLCAweDBjNzAsIDB4Njg1NywgMHgwMDA1LCAweDBjNTgsIDB4Njg1NywKLQkweDAwMDQsIDB4MGM0MCwgMHg2ODU3LCAweDAwMDcsIDB4MGMyOCwgMHgwMGQ2LCAweDIwMTEsIDB4MDAwNCwKLQkweDIyMDQsIDB4YTA4NSwgMHg4MDAyLCAweDIwMTIsIDB4MDBkZSwgMHgwMDA1LCAweDIwZTEsIDB4MDAwMiwKLQkweDNkMDgsIDB4MjBlMSwgMHgyMDAwLCAweDNkMDAsIDB4YTA4NCwgMHg3MDAwLCAweDAxMTgsIDB4YTA4NiwKLQkweDEwMDAsIDB4MTU3MCwgMHgyMGUxLCAweDAwMDAsIDB4M2QwMCwgMHhhMDk0LCAweGZmMDAsIDB4ODIxNywKLQkweGEwODQsIDB4ZjAwMCwgMHhhMDg2LCAweDMwMDAsIDB4MTE2MCwgMHhhMTg0LCAweGZmMDAsIDB4ODAwNywKLQkweGEwODYsIDB4MDAwOCwgMHgxMWU4LCAweDA4MGMsIDB4MmRmNCwgMHgxMWQwLCAweDA4MGMsIDB4NjY3NSwKLQkweDAwOTgsIDB4MjBlMSwgMHgwMDA0LCAweDNkNjAsIDB4ZDFiYywgMHgxMTA4LCAweDNlNjAsIDB4YWM4NCwKLQkweDAwMDcsIDB4MTE3MCwgMHhhYzgyLCAweGJlMDAsIDB4MDI1OCwgMHg2ODVjLCAweGFjMDIsIDB4MTI0MCwKLQkweDIwMDksIDB4MDA0NywgMHgwODBjLCAweDg2ZDMsIDB4N2ExYywgMHhkMjg0LCAweDE5MzgsIDB4MDAwNSwKLQkweGEwMTYsIDB4MDgwYywgMHgxODYzLCAweDBjYzAsIDB4MGNkOCwgMHg3ODFjLCAweGQwOGMsIDB4MDUwMCwKLQkweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDIwZTEsIDB4MzAwMCwgMHgzZDIwLCAweDNlMjgsIDB4YTU4NCwKLQkweDAwNzYsIDB4MTUzOCwgMHhhNDg0LCAweDcwMDAsIDB4YTA4NiwgMHgxMDAwLCAweDExYTgsIDB4MDgwYywKLQkweDY0ZjAsIDB4MDFmOCwgMHgyMGUxLCAweDMwMDAsIDB4NzgyOCwgMHg3ODI4LCAweDA4MGMsIDB4NjUwYywKLQkweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDIwMDksIDB4YjhlOSwgMHgyMTA0LCAweGEwMDUsIDB4MTEwOCwKLQkweDAwMDUsIDB4MDgwYywgMHg3MWU1LCAweDBjZTAsIDB4YTQ4NCwgMHg3MDAwLCAweDE1NDgsIDB4MDgwYywKLQkweDY0ZjAsIDB4MDFkOCwgMHg3MDAwLCAweGEwODQsIDB4ZmYwMCwgMHhhMDg2LCAweDgxMDAsIDB4MGQxMCwKLQkweDAwYTAsIDB4ZDVhNCwgMHgwMTc4LCAweDAwNTYsIDB4MDA0NiwgMHgwODBjLCAweDFlOGEsIDB4MDgwYywKLQkweDI0ZTUsIDB4MjAwMSwgMHgwMTYwLCAweDI1MDIsIDB4MjAwMSwgMHgwMTM4LCAweDIyMDIsIDB4MDA0ZSwKLQkweDAwNWUsIDB4MDA0OCwgMHgwNGE5LCAweDY4ODcsIDB4MDAwMCwgMHgwODBjLCAweGI0OWIsIDB4MjBlMSwKLQkweDMwMDAsIDB4NzgyOCwgMHg3ODI4LCAweDAwYjksIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDg4MCwKLQkweDA0MzksIDB4MTEzMCwgMHg3MDAwLCAweGEwODQsIDB4ZmYwMCwgMHhhMDg2LCAweDgxMDAsIDB4MWQ2OCwKLQkweDA4MGMsIDB4YjQ5YiwgMHgyMGUxLCAweDMwMDAsIDB4NzgyOCwgMHg3ODI4LCAweDAwNTYsIDB4MDgwYywKLQkweDY4ZTYsIDB4MDA1ZSwgMHgwYzQwLCAweDIwMDEsIDB4YjYwZSwgMHgyMDA0LCAweGQwOGMsIDB4MDE3OCwKLQkweDIwMDEsIDB4YjYwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMywgMHgxMTQ4LCAweDAwMjYsIDB4MDAzNiwKLQkweDIwMTEsIDB4ODA0OCwgMHgyNTE4LCAweDA4MGMsIDB4M2YxMywgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwKLQkweGE0ODQsIDB4MDFmZiwgMHg2ODg2LCAweGEwMDUsIDB4MDE2MCwgMHhhMDgwLCAweDAwMWYsIDB4YTA4NCwKLQkweDAzZjgsIDB4ODBhYywgMHgyMGUxLCAweDEwMDAsIDB4MmVhMCwgMHgyMDk5LCAweDAyMGEsIDB4NTNhNSwKLQkweDAwMDUsIDB4MjBhOSwgMHgwMDBjLCAweDIwZTEsIDB4MTAwMCwgMHgyZWEwLCAweDIwOTksIDB4MDIwYSwKLQkweDUzYTUsIDB4YTA4NSwgMHgwMDAxLCAweDBjYTAsIDB4NzAwMCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4YywKLQkweGYwMDAsIDB4ODAwNywgMHhhMTk2LCAweDAwMDAsIDB4MTExOCwgMHgwODA0LCAweDY3N2EsIDB4MDAwNSwKLQkweGExOTYsIDB4MjAwMCwgMHgxMTQ4LCAweDY5MDAsIDB4YTE4ZSwgMHgwMDAxLCAweDExMTgsIDB4MDgwYywKLQkweDQ0ZDYsIDB4MGNhOCwgMHgwMDM5LCAweDBjOTgsIDB4YTE5NiwgMHg4MDAwLCAweDFkODAsIDB4MDgwYywKLQkweDY4MjYsIDB4MGM2OCwgMHgwMGM2LCAweDZhODQsIDB4ODJmZiwgMHgwOTA0LCAweDY2NmYsIDB4NzExMCwKLQkweGExOGMsIDB4ZmYwMCwgMHg4MTBmLCAweGExOTYsIDB4MDAwMSwgMHgwMTIwLCAweGExOTYsIDB4MDAyMywKLQkweDE5MDQsIDB4NjY2ZiwgMHhhMDhlLCAweDAwMjMsIDB4MTU3MCwgMHgwODBjLCAweDY4YzEsIDB4MDkwNCwKLQkweDY2NmYsIDB4NzEyNCwgMHg2MTBhLCAweDcwMzAsIDB4YTA4ZSwgMHgwMjAwLCAweDExNTAsIDB4NzAzNCwKLQkweGEwMDUsIDB4MTkwNCwgMHg2NjZmLCAweDIwMDksIDB4MDAxNSwgMHgwODBjLCAweDg2ZDMsIDB4MDgwNCwKLQkweDY2NmYsIDB4YTA4ZSwgMHgwMjE0LCAweDAxMTgsIDB4YTA4ZSwgMHgwMjEwLCAweDExMzAsIDB4MjAwOSwKLQkweDAwMTUsIDB4MDgwYywgMHg4NmQzLCAweDA4MDQsIDB4NjY2ZiwgMHhhMDhlLCAweDAxMDAsIDB4MTkwNCwKLQkweDY2NmYsIDB4NzAzNCwgMHhhMDA1LCAweDE5MDQsIDB4NjY2ZiwgMHgyMDA5LCAweDAwMTYsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDgwNCwgMHg2NjZmLCAweGEwOGUsIDB4MDAyMiwgMHgxOTA0LCAweDY2NmYsIDB4NzAzMCwKLQkweGEwOGUsIDB4MDMwMCwgMHgxNTgwLCAweDY4ZDQsIDB4ZDBhNCwgMHgwNTI4LCAweGMwYjUsIDB4NjhkNiwKLQkweDcxMDAsIDB4YTE4YywgMHgwMGZmLCAweDY5NzIsIDB4NzAwNCwgMHg2ODc2LCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4NzllNiwgMHg3OGVhLCAweDAwMDYsIDB4YTA4NCwgMHgwMGZmLCAweDAwMTYsIDB4MjAwOCwKLQkweDA4MGMsIDB4Mjg3YywgMHg3OTMyLCAweDc5MzYsIDB4MDAxZSwgMHgwMDBlLCAweDAwZmUsIDB4MDgwYywKLQkweDI4NTIsIDB4Njk1MiwgMHg3MDNjLCAweDAwZTYsIDB4MjA3MSwgMHgwMTQwLCAweDcwODYsIDB4MjA3MSwKLQkweGI2MDAsIDB4NzBhNiwgMHgwMGVlLCAweDcwMzQsIDB4YTAwNSwgMHgxOTA0LCAweDY2NmYsIDB4MjAwOSwKLQkweDAwMTcsIDB4MDgwNCwgMHg2NjM1LCAweGEwOGUsIDB4MDQwMCwgMHgxMTU4LCAweDcwMzQsIDB4YTAwNSwKLQkweDE5MDQsIDB4NjY2ZiwgMHg2OGQ0LCAweGMwYTUsIDB4NjhkNiwgMHgyMDA5LCAweDAwMzAsIDB4MDgwNCwKLQkweDY2MzUsIDB4YTA4ZSwgMHgwNTAwLCAweDExNDAsIDB4NzAzNCwgMHhhMDA1LCAweDE5MDQsIDB4NjY2ZiwKLQkweDIwMDksIDB4MDAxOCwgMHgwODA0LCAweDY2MzUsIDB4YTA4ZSwgMHgyMDEwLCAweDExMjAsIDB4MjAwOSwKLQkweDAwMTksIDB4MDgwNCwgMHg2NjM1LCAweGEwOGUsIDB4MjExMCwgMHgxMTIwLCAweDIwMDksIDB4MDAxYSwKLQkweDA4MDQsIDB4NjYzNSwgMHhhMDhlLCAweDUyMDAsIDB4MTE0MCwgMHg3MDM0LCAweGEwMDUsIDB4MTkwNCwKLQkweDY2NmYsIDB4MjAwOSwgMHgwMDFiLCAweDA4MDQsIDB4NjYzNSwgMHhhMDhlLCAweDUwMDAsIDB4MTE0MCwKLQkweDcwMzQsIDB4YTAwNSwgMHgxOTA0LCAweDY2NmYsIDB4MjAwOSwgMHgwMDFjLCAweDA4MDQsIDB4NjYzNSwKLQkweGEwOGUsIDB4MTMwMCwgMHgxMTIwLCAweDIwMDksIDB4MDAzNCwgMHgwODA0LCAweDY2MzUsIDB4YTA4ZSwKLQkweDEyMDAsIDB4MTE0MCwgMHg3MDM0LCAweGEwMDUsIDB4MTkwNCwgMHg2NjZmLCAweDIwMDksIDB4MDAyNCwKLQkweDA4MDQsIDB4NjYzNSwgMHhhMDhjLCAweGZmMDAsIDB4YTE4ZSwgMHgyNDAwLCAweDExMTgsIDB4MjAwOSwKLQkweDAwMmQsIDB4MDRkOCwgMHhhMDhjLCAweGZmMDAsIDB4YTE4ZSwgMHg1MzAwLCAweDExMTgsIDB4MjAwOSwKLQkweDAwMmEsIDB4MDQ5OCwgMHhhMDhlLCAweDBmMDAsIDB4MTExOCwgMHgyMDA5LCAweDAwMjAsIDB4MDQ2OCwKLQkweGEwOGUsIDB4NTMwMCwgMHgxMTA4LCAweDAwZDgsIDB4YTA4ZSwgMHg2MTA0LCAweDExYzAsIDB4MjAxMSwKLQkweGJjOGQsIDB4ODIwOCwgMHgyMjA0LCAweGEwODIsIDB4MDAwNCwgMHgyMGE4LCAweDk1YWMsIDB4OTVhYywKLQkweDIwMTEsIDB4ODAxNSwgMHgyMTFjLCAweDgxMDgsIDB4MDA0NiwgMHgyMTI0LCAweDA4MGMsIDB4M2YxMywKLQkweDAwNGUsIDB4ODEwOCwgMHgxZjA0LCAweDY2MTgsIDB4MjAwOSwgMHgwMDIzLCAweDAwNzAsIDB4YTA4ZSwKLQkweDYwMDAsIDB4MTExOCwgMHgyMDA5LCAweDAwM2YsIDB4MDA0MCwgMHhhMDhlLCAweDc4MDAsIDB4MTExOCwKLQkweDIwMDksIDB4MDA0NSwgMHgwMDEwLCAweDIwMDksIDB4MDAxZCwgMHgwMDE2LCAweDIwMTEsIDB4YmM4MywKLQkweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsIDB4Mjg1MiwgMHgxNTk4LCAweDA4MGMsIDB4NGZiZiwKLQkweDE1ODAsIDB4NjYxMiwgMHg2NTE2LCAweDg2ZmYsIDB4MDFlOCwgMHgwMDFlLCAweDAwMTYsIDB4YTE4NiwKLQkweDAwMTcsIDB4MTE1OCwgMHg2ODcwLCAweGE2MDYsIDB4MTFhOCwgMHg2ODc0LCAweGE1MDYsIDB4YTA4NCwKLQkweGZmMDAsIDB4MTE4MCwgMHg2MDAwLCAweGMwZjUsIDB4NjAwMiwgMHhhMTg2LCAweDAwNDYsIDB4MTE1MCwKLQkweDY4NzAsIDB4YTYwNiwgMHgxMTM4LCAweDY4NzQsIDB4YTUwNiwgMHhhMDg0LCAweGZmMDAsIDB4MTExMCwKLQkweDAwMWUsIDB4MDA2OCwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwgMHgwMTY4LCAweDAwMWUsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MDAxZSwgMHgwODBjLCAweDg2ZDMsIDB4MDBjZSwKLQkweDAwMDUsIDB4MDAxZSwgMHgwY2UwLCAweDAwY2UsIDB4MGNlMCwgMHgwMGM2LCAweDAwNDYsIDB4MDgwYywKLQkweDY2YzksIDB4MTkwNCwgMHg2NmM2LCAweGEyOGUsIDB4MDAzMywgMHgxMWU4LCAweDA4MGMsIDB4NjhjMSwKLQkweDA5MDQsIDB4NjZjNiwgMHg3MTI0LCAweDYxMGEsIDB4NzAzMCwgMHhhMDhlLCAweDAyMDAsIDB4MTE0MCwKLQkweDcwMzQsIDB4YTAwNSwgMHgxNWQ4LCAweDIwMDksIDB4MDAxNSwgMHgwODBjLCAweDg2ZDMsIDB4MDRiMCwKLQkweGEwOGUsIDB4MDEwMCwgMHgxNTk4LCAweDcwMzQsIDB4YTAwNSwgMHgxNTgwLCAweDIwMDksIDB4MDAxNiwKLQkweDA4MGMsIDB4ODZkMywgMHgwNDU4LCAweGEyOGUsIDB4MDAzMiwgMHgxNTQwLCAweDcwMzAsIDB4YTA4ZSwKLQkweDE0MDAsIDB4MTUyMCwgMHgyMDA5LCAweDAwMzgsIDB4MDAxNiwgMHgyMDExLCAweGJjODMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI4NTIsIDB4MTFjMCwgMHgwODBjLCAweDRmYmYsIDB4MTFhOCwKLQkweDY2MTIsIDB4NjUxNiwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwgMHgwMTcwLCAweDAwMWUsIDB4NjExYSwKLQkweDA4MGMsIDB4YTBlMywgMHg2MDFmLCAweDAwMDQsIDB4NzEyMCwgMHg2MTBhLCAweDAwMWUsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDgwYywgMHg3MWU1LCAweDAwMTAsIDB4MDBjZSwgMHgwMDFlLCAweDAwNGUsIDB4MDBjZSwKLQkweDAwMDUsIDB4MDBmNiwgMHgwMGQ2LCAweDAwMjYsIDB4MDAxNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDNjMDAsIDB4MDAwNiwgMHgyMDc5LCAweDAwMzAsIDB4MjA2OSwgMHgwMjAwLCAweDA4MGMsIDB4MWY0OSwKLQkweDE1OTAsIDB4MDgwYywgMHgxZGVlLCAweDA1ZTAsIDB4MDRmMSwgMHgxMTMwLCAweDc5MDgsIDB4YTE4YywKLQkweDFmZmYsIDB4YTE4MiwgMHgwMDExLCAweDE2ODgsIDB4MjBhOSwgMHgwMDBjLCAweDIwZTEsIDB4MDAwMCwKLQkweDJlYTAsIDB4MjA5OSwgMHgwMjBhLCAweDUzYTUsIDB4MjBlMSwgMHgyMDAwLCAweDIwMDEsIDB4MDIwYSwKLQkweDIwMDQsIDB4N2EwYywgMHg3ODA4LCAweGEwODAsIDB4MDAwNywgMHhhMDg0LCAweDFmZjgsIDB4MDQxOSwKLQkweDExMjAsIDB4YTA4YSwgMHgwMTQwLCAweDFhMGMsIDB4MTUxYSwgMHg4MGFjLCAweDIwZTEsIDB4NjAwMCwKLQkweDIwOTksIDB4MDIwYSwgMHg1M2E1LCAweDIwZTEsIDB4NzAwMCwgMHg2ODI4LCAweDY4MjgsIDB4NzgwMywKLQkweDAwMDQsIDB4YTI5NCwgMHgwMDcwLCAweDAwMGUsIDB4MjBlMCwgMHgwMTVlLCAweDAxNGUsIDB4MDEzZSwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMGRlLCAweDAwZmUsIDB4MDAwNSwgMHhhMDE2LCAweDA4MGMsIDB4MTg2MywKLQkweGEwODUsIDB4MDAwMSwgMHgwYzgwLCAweDAwMDYsIDB4MjAwMSwgMHgwMTExLCAweDIwMDQsIDB4YTA4NCwKLQkweDAwMDMsIDB4MDAwZSwgMHgwMDA1LCAweDAwNDYsIDB4MDBlNiwgMHgwMGQ2LCAweDIwMjgsIDB4MjEzMCwKLQkweGE2OTYsIDB4MDBmZiwgMHgxMTk4LCAweGE1OTYsIDB4ZmZmZCwgMHgxMTIwLCAweDIwMDksIDB4MDA3ZiwKLQkweDA4MDQsIDB4Njc3NSwgMHhhNTk2LCAweGZmZmUsIDB4MTExOCwgMHgyMDA5LCAweDAwN2UsIDB4MDRlOCwKLQkweGE1OTYsIDB4ZmZmYywgMHgxMTE4LCAweDIwMDksIDB4MDA4MCwgMHgwNGI4LCAweDIwMTEsIDB4MDAwMCwKLQkweDIwMTksIDB4YjYzNSwgMHgyMzFjLCAweGQzYWMsIDB4MDEzOCwgMHgyMDIxLCAweDAwMDAsIDB4MjBhOSwKLQkweDAwZmYsIDB4MjA3MSwgMHhiNzM1LCAweDAwMzAsIDB4MjAyMSwgMHgwMDgxLCAweDIwYTksIDB4MDA3ZSwKLQkweDIwNzEsIDB4YjdiNiwgMHgyZTFjLCAweDgzZmYsIDB4MTEyOCwgMHg4MmZmLCAweDExOTgsIDB4MjQxMCwKLQkweGMyZmQsIDB4MDA4MCwgMHgyMzY4LCAweDZmMTAsIDB4MDAwNiwgMHgyMTAwLCAweGE3MDYsIDB4MDAwZSwKLQkweDZiMTQsIDB4MTEyMCwgMHhhMzQ2LCAweDExMTAsIDB4MjQwOCwgMHgwMDc4LCAweDg3ZmYsIDB4MTExMCwKLQkweDgzZmYsIDB4MGQ1OCwgMHg4NDIwLCAweDhlNzAsIDB4MWYwNCwgMHg2NzUyLCAweDgyZmYsIDB4MTExOCwKLQkweGEwODUsIDB4MDAwMSwgMHgwMDE4LCAweGMyZmMsIDB4MjIwOCwgMHhhMDA2LCAweDAwZGUsIDB4MDBlZSwKLQkweDAwNGUsIDB4MDAwNSwgMHhhMDg0LCAweDAwMDcsIDB4MDAwYSwgMHgwMDA1LCAweDY3ODYsIDB4Njc4NiwKLQkweDY3ODYsIDB4NjhkMywgMHg2Nzg2LCAweDY3ODcsIDB4Njc5YywgMHg2ODExLCAweDAwMDUsIDB4NzExMCwKLQkweGQxYmMsIDB4MDE4OCwgMHg3MTIwLCAweDIxNjAsIDB4YWM4YywgMHgwMDA3LCAweDExNjAsIDB4YWM4YSwKLQkweGJlMDAsIDB4MDI0OCwgMHg2ODVjLCAweGFjMDIsIDB4MTIzMCwgMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwKLQkweDAwNDYsIDB4MDgwYywgMHg4NmQzLCAweDAwMDUsIDB4MDBjNiwgMHhhNDg0LCAweDAxZmYsIDB4MDkwNCwKLQkweDY3ZWYsIDB4NzExMCwgMHhkMWJjLCAweDE5MDQsIDB4NjdlZiwgMHgyMDExLCAweGJjODMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI4NTIsIDB4MTkwNCwgMHg2N2VmLCAweDA4MGMsIDB4NGZiZiwKLQkweDE1ZjAsIDB4NjYxMiwgMHg2NTE2LCAweDYwMDAsIDB4ZDBlYywgMHgxNWM4LCAweDYyMDQsIDB4YTI5NCwKLQkweGZmMDAsIDB4ODIxNywgMHhhMjg2LCAweDAwMDYsIDB4MDE0OCwgMHg2MjA0LCAweGEyOTQsIDB4MDBmZiwKLQkweGEyODYsIDB4MDAwNiwgMHgxMWEwLCAweGEyOTUsIDB4MDYwMCwgMHg2MjA2LCAweDAwYzYsIDB4MDgwYywKLQkweDg2NGUsIDB4MDAxZSwgMHgwNTMwLCAweDYxMWEsIDB4NjAxZiwgMHgwMDA2LCAweDcxMjAsIDB4NjEwYSwKLQkweDcxMzAsIDB4NjE1MiwgMHgyMDA5LCAweDAwNDQsIDB4MDgwYywgMHg4NmQzLCAweDAwYzAsIDB4MDBjNiwKLQkweDA4MGMsIDB4ODY0ZSwgMHgwMDFlLCAweDAxOTgsIDB4NjExYSwgMHg2MDFmLCAweDAwMDQsIDB4NzEyMCwKLQkweDYxMGEsIDB4YTI4NiwgMHgwMDA0LCAweDExMTgsIDB4NjAwNywgMHgwMDA1LCAweDAwMTAsIDB4NjAwNywKLQkweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmQ0NSwgMHgwODBjLCAweDcxZTUsIDB4MDBjZSwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjBkLCAweDIwMDQsIDB4ZDBlYywgMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwKLQkweDA4MGMsIDB4M2YxMywgMHgwMGM2LCAweDA4MGMsIDB4OWY5MiwgMHgwMDFlLCAweDBkODAsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwNiwgMHg3MTIwLCAweDYxMGEsIDB4NzEzMCwgMHg2MTUyLCAweDYwMTMsIDB4MDMwMCwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNDEsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwKLQkweDA4ZjAsIDB4NzExMCwgMHhkMWJjLCAweDAxODgsIDB4NzAyMCwgMHgyMDYwLCAweGFjODQsIDB4MDAwNywKLQkweDExNjAsIDB4YWM4MiwgMHhiZTAwLCAweDAyNDgsIDB4Njg1YywgMHhhYzAyLCAweDEyMzAsIDB4NzEyNCwKLQkweDYxMGEsIDB4MjAwOSwgMHgwMDQ1LCAweDA4MGMsIDB4ODZkMywgMHgwMDA1LCAweDAwMDYsIDB4MDgwYywKLQkweDJkZjQsIDB4MDAwZSwgMHgxMTY4LCAweDcxMTAsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4ZSwKLQkweDAwMDAsIDB4MTEzMCwgMHhhMDg0LCAweDAwMGYsIDB4YTA4YSwgMHgwMDA2LCAweDEyMDgsIDB4MDAwYiwKLQkweDAwMDUsIDB4NjgzZiwgMHg2ODQwLCAweDY4M2YsIDB4NjgzZiwgMHg2OGE5LCAweDY4YjUsIDB4MDAwNSwKLQkweDcxMTAsIDB4ZDFiYywgMHgwMTIwLCAweDcwMmMsIDB4ZDA4NCwgMHgwOTA0LCAweDY4YTgsIDB4NzAwYywKLQkweDcxMDgsIDB4MDgwYywgMHgyODUyLCAweDE5MDQsIDB4NjhhOCwgMHgwODBjLCAweDRmYmYsIDB4MTkwNCwKLQkweDY4YTgsIDB4NjYxMiwgMHg2NTE2LCAweDYyMDQsIDB4NzExMCwgMHhkMWJjLCAweDAxZjgsIDB4YTI4YywKLQkweDAwZmYsIDB4YTE4NiwgMHgwMDA0LCAweDAxMTgsIDB4YTE4NiwgMHgwMDA2LCAweDE1YzgsIDB4MDBjNiwKLQkweDA4MGMsIDB4NjhjMSwgMHgwMGNlLCAweDA5MDQsIDB4NjhhOCwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwKLQkweDAwMWUsIDB4MDVmMCwgMHg2MTFhLCAweDA4MGMsIDB4YTBlMywgMHg2MDFmLCAweDAwMDIsIDB4NzEyMCwKLQkweDYxMGEsIDB4MjAwOSwgMHgwMDg4LCAweDA4MGMsIDB4ODZkMywgMHgwNDkwLCAweGEyOGMsIDB4MDBmZiwKLQkweGExODYsIDB4MDAwNiwgMHgwMTYwLCAweGExODYsIDB4MDAwNCwgMHgwMTQ4LCAweGEyOTQsIDB4ZmYwMCwKLQkweDgyMTcsIDB4YTI4NiwgMHgwMDA0LCAweDAxMTgsIDB4YTI4NiwgMHgwMDA2LCAweDExODgsIDB4MDBjNiwKLQkweDA4MGMsIDB4ODY0ZSwgMHgwMDFlLCAweDAxZTAsIDB4NjExYSwgMHgwODBjLCAweGEwZTMsIDB4NjAxZiwKLQkweDAwMDUsIDB4NzEyMCwgMHg2MTBhLCAweDIwMDksIDB4MDA4OCwgMHgwODBjLCAweDg2ZDMsIDB4MDA4MCwKLQkweDAwYzYsIDB4MDgwYywgMHg4NjRlLCAweDAwMWUsIDB4MDE1OCwgMHg2MTFhLCAweDA4MGMsIDB4YTBlMywKLQkweDYwMWYsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MjAwOSwgMHgwMDAxLCAweDA4MGMsIDB4ODZkMywKLQkweDAwMDUsIDB4NzExMCwgMHhkMWJjLCAweDAxNDAsIDB4MDBhMSwgMHgwMTMwLCAweDcxMjQsIDB4NjEwYSwKLQkweDIwMDksIDB4MDA4OSwgMHgwODBjLCAweDg2ZDMsIDB4MDAwNSwgMHg3MTEwLCAweGQxYmMsIDB4MDE0MCwKLQkweDAwNDEsIDB4MDEzMCwgMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwgMHgwMDhhLCAweDA4MGMsIDB4ODZkMywKLQkweDAwMDUsIDB4NzAyMCwgMHgyMDYwLCAweGFjODQsIDB4MDAwNywgMHgxMTU4LCAweGFjODIsIDB4YmUwMCwKLQkweDAyNDAsIDB4MjAwMSwgMHhiNjE3LCAweDIwMDQsIDB4YWMwMiwgMHgxMjE4LCAweGEwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4YTAwNiwgMHgwY2U4LCAweDcxMTAsIDB4ZDFiYywgMHgxMTc4LCAweDcwMjQsIDB4MjA2MCwKLQkweGFjODQsIDB4MDAwNywgMHgxMTUwLCAweGFjODIsIDB4YmUwMCwgMHgwMjM4LCAweDY4NWMsIDB4YWMwMiwKLQkweDEyMjAsIDB4MjAwOSwgMHgwMDUxLCAweDA4MGMsIDB4ODZkMywgMHgwMDA1LCAweDIwMzEsIDB4MDEwNSwKLQkweDAwNjksIDB4MDAwNSwgMHgyMDMxLCAweDAyMDYsIDB4MDA0OSwgMHgwMDA1LCAweDIwMzEsIDB4MDIwNywKLQkweDAwMjksIDB4MDAwNSwgMHgyMDMxLCAweDAyMTMsIDB4MDAwOSwgMHgwMDA1LCAweDAwYzYsIDB4MDBkNiwKLQkweDAwZjYsIDB4NzAwMCwgMHhhMDg0LCAweGYwMDAsIDB4YTA4NiwgMHhjMDAwLCAweDA1YjAsIDB4MDgwYywKLQkweDg2NGUsIDB4MDU5OCwgMHgwMDY2LCAweDAwYzYsIDB4MDA0NiwgMHgyMDExLCAweGJjODMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI4NTIsIDB4MTU4MCwgMHgwODBjLCAweDRmYmYsIDB4MTU2OCwKLQkweDY2MTIsIDB4NjUxNiwgMHgyYzAwLCAweDAwNGUsIDB4MDBjZSwgMHg2MDFhLCAweDA4MGMsIDB4YTBlMywKLQkweDA4MGMsIDB4MTVmZCwgMHgwMWYwLCAweDJkMDAsIDB4NjA1NiwgMHg2ODAzLCAweDAwMDAsIDB4NjgzNywKLQkweDAwMDAsIDB4NmMzYSwgMHhhZGY4LCAweDAwMGYsIDB4MjBhOSwgMHgwMDBlLCAweDJmYTAsIDB4MmU5OCwKLQkweDUzYTMsIDB4MDA2ZSwgMHg2NjEyLCAweDYwMDcsIDB4MDAzZSwgMHg2MDFmLCAweDAwMDEsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg2ZDQ1LCAweDA4MGMsIDB4NzFlNSwgMHgwMGZlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwMDUsIDB4MDgwYywgMHg4NmE0LCAweDAwNmUsIDB4MGNjMCwgMHgwMDRlLCAweDAwY2UsIDB4MGNjOCwKLQkweDIwNzEsIDB4YjhmNCwgMHg3MDAzLCAweDAwMDMsIDB4NzAwZiwgMHgwMzYxLCAweGEwMDYsIDB4NzAxYSwKLQkweDcwNzYsIDB4NzAxMiwgMHg3MDE3LCAweGJlMDAsIDB4NzAwNywgMHgwMDAwLCAweDcwMjYsIDB4NzAyYiwKLQkweDdlMGEsIDB4NzAzMiwgMHg3MDM3LCAweDdlNmEsIDB4NzAzYiwgMHhmZmZmLCAweDcwM2YsIDB4ZmZmZiwKLQkweDcwNDIsIDB4NzA0NywgMHg0NDkyLCAweDcwNGEsIDB4NzA1YiwgMHg2YTlkLCAweDIwMDEsIDB4YjhhMSwKLQkweDIwMDMsIDB4MDAwMywgMHgyMDAxLCAweGI4YTMsIDB4MjAwMywgMHgwMTAwLCAweDNhMDAsIDB4YTA4NCwKLQkweDAwMDUsIDB4NzA2ZSwgMHgwMDA1LCAweDIwNzEsIDB4YjhmNCwgMHgxZDA0LCAweDY5ZmQsIDB4MjA5MSwKLQkweDYwMDAsIDB4NzAwYywgMHg4MDAxLCAweDcwMGUsIDB4MTUxOCwgMHg3MDBmLCAweDAzNjEsIDB4NzAwNywKLQkweDAwMDEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzA0MCwgMHhhMDBkLCAweDAxMjgsIDB4ODEwOSwKLQkweDcxNDIsIDB4MTExMCwgMHg3MDQ0LCAweDA4MGYsIDB4MDBjNiwgMHgyMDYxLCAweGI2MDAsIDB4NjAzNCwKLQkweDAwY2UsIDB4ZDBjYywgMHgwMTgwLCAweDNhMDAsIDB4YTA4NCwgMHgwMDA1LCAweDcyNmMsIDB4YTIxNiwKLQkweDAxNTAsIDB4NzA2ZSwgMHgyMDExLCAweDgwNDMsIDB4MjAxOCwgMHgwODBjLCAweDNmMTMsIDB4MDAxOCwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMjQsIDB4YTAwZCwgMHgwMTg4LCAweDcwMjAsIDB4ODAwMSwKLQkweDcwMjIsIDB4MTE2OCwgMHg3MDIzLCAweDAwMDksIDB4ODEwOSwgMHg3MTI2LCAweGExODYsIDB4MDNlOCwKLQkweDExMTAsIDB4NzAyOCwgMHgwODBmLCAweDgxZmYsIDB4MTExMCwgMHg3MDI4LCAweDA4MGYsIDB4NzAzMCwKLQkweGEwMGQsIDB4MDE4MCwgMHg3MDJjLCAweDgwMDEsIDB4NzAyZSwgMHgxMTYwLCAweDcwMmYsIDB4MDAwOSwKLQkweDgxMDksIDB4NzEzMiwgMHgwMTI4LCAweGExODQsIDB4MDA3ZiwgMHgwOTBjLCAweDdlYWYsIDB4MDAxMCwKLQkweDcwMzQsIDB4MDgwZiwgMHg3MDM4LCAweGEwMDUsIDB4MDExOCwgMHgwMzEwLCAweDgwMDEsIDB4NzAzYSwKLQkweDcwM2MsIDB4YTAwNSwgMHgwMTE4LCAweDAzMTAsIDB4ODAwMSwgMHg3MDNlLCAweDcwNGMsIDB4YTAwZCwKLQkweDAxNjgsIDB4NzA0OCwgMHg4MDAxLCAweDcwNGEsIDB4MTE0OCwgMHg3MDRiLCAweDAwMDksIDB4ODEwOSwKLQkweDcxNGUsIDB4MTEyMCwgMHg3MTUwLCAweDcxNGUsIDB4NzA1OCwgMHgwODBmLCAweDcwMTgsIDB4YTAwZCwKLQkweDAxZDgsIDB4MDAxNiwgMHg3MDc0LCAweGEwMGQsIDB4MDE1OCwgMHg3MDcwLCAweDgwMDEsIDB4NzA3MiwKLQkweDExMzgsIDB4NzA3MywgMHgwMDA5LCAweDgxMDksIDB4NzE3NiwgMHgxMTEwLCAweDcwNzgsIDB4MDgwZiwKLQkweDAwMWUsIDB4NzAwOCwgMHg4MDAxLCAweDcwMGEsIDB4MTEzOCwgMHg3MDBiLCAweDAwMDksIDB4ODEwOSwKLQkweDcxMWEsIDB4MTExMCwgMHg3MDFjLCAweDA4MGYsIDB4MDEyZSwgMHg3MDA0LCAweDAwMDIsIDB4NmEyMywKLQkweDZhMjQsIDB4NmEzYywgMHgwMGU2LCAweDIwNzEsIDB4YjhmNCwgMHg3MDE4LCAweGEwMDUsIDB4MTEyMCwKLQkweDcxMWEsIDB4NzIxZSwgMHg3MDBiLCAweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDAwNiwKLQkweDIwNzEsIDB4YjhmNCwgMHg3MDFjLCAweGEyMDYsIDB4MTExMCwgMHg3MDFhLCAweDcwMWUsIDB4MDAwZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4YjhmNCwgMHg2MDg4LCAweGExMDIsIDB4MDIwOCwKLQkweDYxOGEsIDB4MDBlZSwgMHgwMDA1LCAweDAwMDUsIDB4NzExMCwgMHgwODBjLCAweDUwMWIsIDB4MTE1OCwKLQkweDYwODgsIDB4ODAwMSwgMHgwMjQwLCAweDYwOGEsIDB4MTEzMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMTJlLCAweDgxMDgsIDB4YTE4MiwgMHgwMGZmLCAweDAyMTgsIDB4YTAwZSwKLQkweDcwMDcsIDB4MDAwMiwgMHg3MTEyLCAweDAwMDUsIDB4NzAxNCwgMHgyMDYwLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjAzYywgMHhhMDA1LCAweDAxMjgsIDB4ODAwMSwgMHg2MDNlLCAweDExMTAsIDB4MDgwYywKLQkweDlmZDEsIDB4NjAxNCwgMHhhMDA1LCAweDA1MDAsIDB4ODAwMSwgMHg2MDE2LCAweDExZTgsIDB4NjExYywKLQkweGExODYsIDB4MDAwMywgMHgwMTE4LCAweGExODYsIDB4MDAwNiwgMHgxMWEwLCAweDYwMTAsIDB4MjA2OCwKLQkweDY4NTQsIDB4YTA4YSwgMHgxOTlhLCAweDAyNzAsIDB4YTA4MiwgMHgxOTk5LCAweDY4NTYsIDB4YTA4YSwKLQkweDE5OWEsIDB4MDIxMCwgMHgyMDAxLCAweDE5OTksIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4YTEwOCwKLQkweDYxMTYsIDB4MDAxMCwgMHgwODBjLCAweDlhYTEsIDB4MDEyZSwgMHhhYzg4LCAweDAwMTgsIDB4NzExNiwKLQkweDIwMDEsIDB4ZWUwMCwgMHhhMTAyLCAweDAyMjAsIDB4NzAxNywgMHhiZTAwLCAweDcwMDcsIDB4MDAwMCwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGI4ZjQsIDB4NzAyNywgMHgwN2QwLCAweDcwMjMsIDB4MDAwOSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweGI4ZmQsIDB4MjAwMywgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4YjhmNCwgMHg3MTMyLCAweDcwMmYsIDB4MDAwOSwgMHgwMGVlLCAweDAwMDUsIDB4MjAxMSwKLQkweGI5MDAsIDB4MjAxMywgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGI4ZjQsIDB4NzExYSwKLQkweDcyMWUsIDB4NzAwYiwgMHgwMDA5LCAweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwMjYsIDB4NzA1NCwKLQkweDgwMDAsIDB4NzA1NiwgMHgyMDYxLCAweGI4YTEsIDB4NjAwOCwgMHhhMDg2LCAweDAwMDAsIDB4MDE1OCwKLQkweDcwNjgsIDB4NjAzMiwgMHg3MDY0LCAweDYwMmUsIDB4NzA2MCwgMHg2MDJhLCAweDcwNWMsIDB4NjAyNiwKLQkweDJjMTAsIDB4MDgwYywgMHgxNjQ4LCAweDAwMmUsIDB4MDBjZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDAwZjYsIDB4MDgwYywgMHg2OTZiLCAweDAwZmUsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDBjZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4YjhmNCwKLQkweDcxNzYsIDB4NzI3YSwgMHg3MDczLCAweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDAwNiwKLQkweDIwNzEsIDB4YjhmNCwgMHg3MDc4LCAweGEyMDYsIDB4MTExMCwgMHg3MDc2LCAweDcwN2EsIDB4MDAwZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDIwNjEsIDB4Yjk3NSwgMHgwMGNlLCAweDAwMDUsIDB4YTE4NCwKLQkweDAwMGYsIDB4ODAwMywgMHg4MDAzLCAweDgwMDMsIDB4YTA4MCwgMHhiOTc1LCAweDIwNjAsIDB4MDAwNSwKLQkweDY4NTQsIDB4YTA4YSwgMHgxOTlhLCAweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweGEwMDUsIDB4MTE1MCwKLQkweDAwYzYsIDB4MjA2MSwgMHhiOTc1LCAweDYwMTQsIDB4MDBjZSwgMHhhMDA1LCAweDExMzgsIDB4MjAwMSwKLQkweDAwMWUsIDB4MDAyMCwgMHhhMDhlLCAweGZmZmYsIDB4MTEwOCwgMHhhMDA2LCAweDgwMDMsIDB4ODAwYiwKLQkweDgxMGIsIDB4YTEwOCwgMHg2MTE2LCAweDY4NGMsIDB4YTA4YywgMHgwMGMwLCAweGExOGUsIDB4MDBjMCwKLQkweDA1ZTgsIDB4ZDBiNCwgMHgxMTM4LCAweGQwYmMsIDB4MTU1MCwgMHgyMDA5LCAweDAwMDYsIDB4MDgwYywKLQkweDZiNjMsIDB4MDAwNSwgMHhkMGZjLCAweDAxMzgsIDB4YTA4NCwgMHgwMDAzLCAweDAxMjAsIDB4YTA4NiwKLQkweDAwMDMsIDB4MTkwNCwgMHg2YjVkLCAweDYwMjAsIDB4ZDBkNCwgMHgwMTMwLCAweGMwZDQsIDB4NjAyMiwKLQkweDY4NjAsIDB4NjAyYSwgMHg2ODVjLCAweDYwMmUsIDB4MjAwOSwgMHhiNjc0LCAweDIxMDQsIDB4ZDA4NCwKLQkweDAxMzgsIDB4ODdmZiwgMHgxMTIwLCAweDIwMDksIDB4MDA0MiwgMHgwODBjLCAweDg2ZDMsIDB4MDAwNSwKLQkweDg3ZmYsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywgMHg4NmQzLCAweDAwMDUsIDB4ZDBmYywKLQkweDAxMzAsIDB4YTA4NCwgMHgwMDAzLCAweDAxMTgsIDB4YTA4NiwgMHgwMDAzLCAweDExZjAsIDB4ODdmZiwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDQyLCAweDA4MGMsIDB4ODZkMywgMHgwMDA1LCAweGQwZmMsIDB4MDE2MCwKLQkweGEwODQsIDB4MDAwMywgMHhhMDhlLCAweDAwMDIsIDB4MDE0OCwgMHg4N2ZmLCAweDExMjAsIDB4MjAwOSwKLQkweDAwNDEsIDB4MDgwYywgMHg4NmQzLCAweDAwMDUsIDB4MDA2MSwgMHgwY2U4LCAweDg3ZmYsIDB4MWRkOCwKLQkweDIwMDksIDB4MDA0MywgMHgwODBjLCAweDg2ZDMsIDB4MGNiMCwgMHgyMDA5LCAweDAwMDQsIDB4MDAxOSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDAxLCAweDAwZDYsIDB4NjAxMCwgMHhhMGVjLCAweGYwMDAsIDB4MDUxMCwKLQkweDIwNjgsIDB4Njk1MiwgMHg2ODAwLCAweDYwMTIsIDB4YTE4NiwgMHgwMDAxLCAweDExODgsIDB4Njk0YywKLQkweGExOGMsIDB4ODEwMCwgMHhhMThlLCAweDgxMDAsIDB4MTE1OCwgMHgwMGM2LCAweDIwNjEsIDB4Yjk3NSwKLQkweDYyMDAsIDB4ZDI4YywgMHgxMTIwLCAweDYyMDQsIDB4ODIxMCwgMHgwMjA4LCAweDYyMDYsIDB4MDBjZSwKLQkweDA4MGMsIDB4NTQ3YSwgMHg2MDEwLCAweGEwNmQsIDB4MDA3NiwgMHgyMDM5LCAweDAwMDAsIDB4MTkwYywKLQkweDZhZTgsIDB4MDA3ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDE1NiwgMHgwMGM2LCAweDIwNjEsIDB4Yjk3NSwKLQkweDYwMDAsIDB4ODFmZiwgMHgwMTEwLCAweGEyMDUsIDB4MDAwOCwgMHhhMjA0LCAweDYwMDIsIDB4MDBjZSwKLQkweDAxNWUsIDB4MDAwNSwgMHg2ODAwLCAweGQwOGMsIDB4MTEzOCwgMHg2ODA4LCAweGEwMDUsIDB4MDEyMCwKLQkweDgwMDEsIDB4NjgwYSwgMHhhMDg1LCAweDAwMDEsIDB4MDAwNSwgMHgyMGE5LCAweDAwMTAsIDB4YTAwNiwKLQkweDgwMDQsIDB4ODA4NiwgMHg4MThlLCAweDEyMDgsIDB4YTIwMCwgMHgxZjA0LCAweDZiYTksIDB4ODA4NiwKLQkweDgxOGUsIDB4MDAwNSwgMHgwMTU2LCAweDIwYTksIDB4MDAxMCwgMHhhMDA1LCAweDAxYjgsIDB4YTExYSwKLQkweDEyYTgsIDB4ODIxMywgMHg4MThkLCAweDAyMjgsIDB4YTExYSwgMHgxMjIwLCAweDFmMDQsIDB4NmJiOSwKLQkweDAwMjgsIDB4YTExYSwgMHgyMzA4LCAweDgyMTAsIDB4MWYwNCwgMHg2YmI5LCAweDAwMDYsIDB4MzIwMCwKLQkweGEwODQsIDB4ZWZmZiwgMHgyMDgwLCAweDAwMGUsIDB4MDE1ZSwgMHgwMDA1LCAweDAwMDYsIDB4MzIwMCwKLQkweGEwODUsIDB4MTAwMCwgMHgwY2I4LCAweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDIwNzksIDB4YjhlMSwKLQkweDAxMmUsIDB4MDBkNiwgMHgyMDY5LCAweGI4ZTEsIDB4NjgwMywgMHgwMDA1LCAweDIwNjksIDB4MDAwNCwKLQkweDJkMDQsIDB4YTA4NSwgMHg4MDAxLCAweDIwNmEsIDB4MDBkZSwgMHgwMDA1LCAweDAwYzYsIDB4NjAyNywKLQkweDAwMDEsIDB4NzgwNCwgMHhhMDg0LCAweDAwMDcsIDB4MDAwMiwgMHg2YmY3LCAweDZjMTgsIDB4NmM2YiwKLQkweDZiZmQsIDB4NmMxOCwgMHg2YmY3LCAweDZiZjUsIDB4NmJmNSwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywKLQkweDZhODIsIDB4MDgwYywgMHg3MWU1LCAweDAwY2UsIDB4MDAwNSwgMHg2MmMwLCAweDgyZmYsIDB4MTExMCwKLQkweDAwY2UsIDB4MDAwNSwgMHgyMDExLCAweDRiMjMsIDB4MDgwYywgMHg2YTBlLCAweDc4MjgsIDB4YTA5MiwKLQkweDAwYzgsIDB4MTIyOCwgMHg4MDAwLCAweDc4MmEsIDB4MDgwYywgMHg0YjY1LCAweDBjODgsIDB4MDgwYywKLQkweDRiMjMsIDB4NzgwNywgMHgwMDAzLCAweDc4MjcsIDB4MDAwMCwgMHg3ODJiLCAweDAwMDAsIDB4MGM0MCwKLQkweDA4MGMsIDB4NmE4MiwgMHgzYzAwLCAweDAwMDYsIDB4MjAxMSwgMHgwMjA5LCAweDIwZTEsIDB4NDAwMCwKLQkweDIyMTQsIDB4MDAwZSwgMHgyMGUwLCAweDgyZmYsIDB4MDE3OCwgMHg2MmMwLCAweDgyZmYsIDB4MTE2MCwKLQkweDc4MmIsIDB4MDAwMCwgMHg3ODI0LCAweGEwNjUsIDB4MDkwYywgMHgxNTFhLCAweDIwMDksIDB4MDAxMywKLQkweDA4MGMsIDB4ODZkMywgMHgwMGNlLCAweDAwMDUsIDB4MzkwMCwgMHhhMDgyLCAweGJhMmQsIDB4MTIxMCwKLQkweDA4MGMsIDB4ODNiOSwgMHgwMGM2LCAweDc4MjQsIDB4YTA2NSwgMHgwOTBjLCAweDE1MWEsIDB4NzgwNCwKLQkweGEwODYsIDB4MDAwNCwgMHgwOTA0LCAweDZjYWIsIDB4NzgyOCwgMHhhMDkyLCAweDI3MTAsIDB4MTIzMCwKLQkweDgwMDAsIDB4NzgyYSwgMHgwMGNlLCAweDA4MGMsIDB4N2RlNiwgMHgwYzIwLCAweDYxMDQsIDB4YTE4NiwKLQkweDAwMDMsIDB4MTE4OCwgMHgwMGU2LCAweDIwNzEsIDB4YjYwMCwgMHg3MGUwLCAweDAwZWUsIDB4ZDA4YywKLQkweDAxNTAsIDB4MDBjNiwgMHgwMGU2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweGI2MDAsIDB4MDgwYywKLQkweDRiN2IsIDB4MDBlZSwgMHgwMGNlLCAweDA4MGMsIDB4YjUwMCwgMHgyMDA5LCAweDAwMTQsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDBjZSwgMHgwODM4LCAweDIwMDEsIDB4YjhmZCwgMHgyMDAzLCAweDAwMDAsIDB4NjJjMCwKLQkweDgyZmYsIDB4MTE2MCwgMHg3ODJiLCAweDAwMDAsIDB4NzgyNCwgMHhhMDY1LCAweDA5MGMsIDB4MTUxYSwKLQkweDIwMDksIDB4MDAxMywgMHgwODBjLCAweDg3MmMsIDB4MDBjZSwgMHgwMDA1LCAweDAwYzYsIDB4MDBkNiwKLQkweDM5MDAsIDB4YTA4MiwgMHhiYTJkLCAweDEyMTAsIDB4MDgwYywgMHg4M2I5LCAweDc4MjQsIDB4YTAwNSwKLQkweDA5MGMsIDB4MTUxYSwgMHg3ODFjLCAweGEwNmQsIDB4MDkwYywgMHgxNTFhLCAweDY4MDAsIDB4YzBkYywKLQkweDY4MDIsIDB4NzkyNCwgMHgyMTYwLCAweDA4MGMsIDB4ODZhNCwgMHg2OTNjLCAweDgxZmYsIDB4MDkwYywKLQkweDE1MWEsIDB4ODEwOSwgMHg2OTNlLCAweDY4NTQsIDB4YTAxNSwgMHgwMTEwLCAweDdhMWUsIDB4MDAxMCwKLQkweDc5MTgsIDB4NzkxZSwgMHg3ODA3LCAweDAwMDAsIDB4NzgyNywgMHgwMDAwLCAweDAwZGUsIDB4MDBjZSwKLQkweDA4MGMsIDB4NzFlNSwgMHgwODg4LCAweDYxMDQsIDB4YTE4NiwgMHgwMDAyLCAweDAxMjgsIDB4YTE4NiwKLQkweDAwMDQsIDB4MDExMCwgMHgwODA0LCAweDZjNDQsIDB4NzgwOCwgMHhhYzA2LCAweDA5MDQsIDB4NmM0NCwKLQkweDA4MGMsIDB4NzEwMiwgMHgwODBjLCAweDZkNDUsIDB4MDBjZSwgMHgwODBjLCAweDcxZTUsIDB4MDgwNCwKLQkweDZjMzIsIDB4MDBjNiwgMHg2MDI3LCAweDAwMDIsIDB4NjJjOCwgMHg2MGM0LCAweGEyMDUsIDB4MTE3OCwKLQkweDc5M2MsIDB4YTFlNSwgMHgwMDAwLCAweDAxMzAsIDB4MjAwOSwgMHgwMDQ5LCAweDA4MGMsIDB4ODZkMywKLQkweDAwY2UsIDB4MDAwNSwgMHgyMDExLCAweGI5MDAsIDB4MjAxMywgMHgwMDAwLCAweDBjYzgsIDB4MzkwOCwKLQkweGExOTIsIDB4YmEyZCwgMHgxMjEwLCAweDA4MGMsIDB4ODNiOSwgMHg3OTNjLCAweDgxZmYsIDB4MGQ5MCwKLQkweDc5NDQsIDB4YTE5MiwgMHg3NTMwLCAweDEyYjgsIDB4ODEwOCwgMHg3OTQ2LCAweDc5M2MsIDB4YTE4OCwKLQkweDAwMDcsIDB4MjEwYywgMHhhMThlLCAweDAwMDYsIDB4MTEzOCwgMHg2MDE0LCAweGEwODQsIDB4MDE4NCwKLQkweGEwODUsIDB4MDAxMiwgMHg2MDE2LCAweDA4ZTAsIDB4NjAxNCwgMHhhMDg0LCAweDAxODQsIDB4YTA4NSwKLQkweDAwMTYsIDB4NjAxNiwgMHgwOGE4LCAweDc4NDgsIDB4YzA4NSwgMHg3ODRhLCAweDA4ODgsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MDBmLCAweDAwMDAsIDB4MmMwOCwKLQkweDIwNjEsIDB4YjhlMSwgMHg2MDIwLCAweDgwMDAsIDB4NjAyMiwgMHg2MDEwLCAweGEwMDUsIDB4MDE0OCwKLQkweGEwODAsIDB4MDAwMywgMHgyMTAyLCAweDYxMTIsIDB4MDEyZSwgMHgwMGNlLCAweDAwMWUsIDB4MDAwZSwKLQkweDAwMDUsIDB4NjExNiwgMHg2MTEyLCAweDBjYzAsIDB4MDBkNiwgMHgyMDY5LCAweGI4ZTEsIDB4NjAwMCwKLQkweGQwZDQsIDB4MDE2OCwgMHg2ODIwLCAweDgwMDAsIDB4NjgyMiwgMHhhMDg2LCAweDAwMDEsIDB4MTExMCwKLQkweDJjMDAsIDB4NjgxZSwgMHg2ODA0LCAweGEwODQsIDB4MDAwNywgMHgwODA0LCAweDcxZWIsIDB4YzBkNSwKLQkweDYwMDIsIDB4NjgxOCwgMHhhMDA1LCAweDAxNTgsIDB4NjA1NiwgMHg2MDViLCAweDAwMDAsIDB4MDAwNiwKLQkweDJjMDAsIDB4NjgxYSwgMHgwMGRlLCAweDY4NWEsIDB4MjA2OSwgMHhiOGUxLCAweDBjMTgsIDB4NjA1NiwKLQkweDYwNWEsIDB4MmMwMCwgMHg2ODFhLCAweDY4MWUsIDB4MDhlOCwgMHgwMDA2LCAweDAwMTYsIDB4MDBjNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwMGYsIDB4MDAwMCwgMHgyYzA4LCAweDIwNjEsIDB4YjhlMSwKLQkweDYwMjAsIDB4ODAwMCwgMHg2MDIyLCAweDYwMDgsIDB4YTAwNSwgMHgwMTQ4LCAweGEwODAsIDB4MDAwMywKLQkweDIxMDIsIDB4NjEwYSwgMHgwMTJlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4NjEwZSwKLQkweDYxMGEsIDB4MGNjMCwgMHgwMGM2LCAweDYwMGYsIDB4MDAwMCwgMHgyYzA4LCAweDIwNjEsIDB4YjhlMSwKLQkweDYwMzQsIDB4YTAwNSwgMHgwMTMwLCAweGEwODAsIDB4MDAwMywgMHgyMTAyLCAweDYxMzYsIDB4MDBjZSwKLQkweDAwMDUsIDB4NjEzYSwgMHg2MTM2LCAweDBjZDgsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwKLQkweDAwNzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwMzYsIDB4MDAyNiwgMHgwMDE2LCAweDAwMDYsIDB4MDEyNiwKLQkweGEwMmUsIDB4MjA3MSwgMHhiOGUxLCAweDc2MzgsIDB4MjY2MCwgMHgyNjc4LCAweDIwOTEsIDB4ODAwMCwKLQkweDhjZmYsIDB4MDkwNCwgMHg2ZGVkLCAweDYwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4YTIwNiwKLQkweDE5MDQsIDB4NmRlOCwgMHg4N2ZmLCAweDAxMjAsIDB4NjA1MCwgMHhhMTA2LCAweDE5MDQsIDB4NmRlOCwKLQkweDcwM2MsIDB4YWMwNiwgMHgxMTkwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAxLCAweDA4MGMsIDB4ODA2YiwKLQkweDcwMzMsIDB4MDAwMCwgMHg3MDNmLCAweDAwMDAsIDB4NzA0MywgMHgwMDAwLCAweDcwNDcsIDB4MDAwMCwKLQkweDcwNGIsIDB4MDAwMCwgMHgwMDNlLCAweDIwMjksIDB4MDAwMSwgMHg3MDM4LCAweGFjMzYsIDB4MTExMCwKLQkweDY2MGMsIDB4NzYzYSwgMHg3MDM0LCAweGFjMzYsIDB4MTE0MCwgMHgyYzAwLCAweGFmMzYsIDB4MDExOCwKLQkweDJmMDAsIDB4NzAzNiwgMHgwMDEwLCAweDcwMzcsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsIDB4MmMwMCwKLQkweGFmMDYsIDB4MDExMCwgMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4MDgwYywKLQkweDlkMTYsIDB4MDFjOCwgMHg2MDEwLCAweDIwNjgsIDB4NjAxYywgMHhhMDg2LCAweDAwMDMsIDB4MTU4MCwKLQkweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwgMHgwMDE2LCAweDAwMzYsIDB4MDA3NiwKLQkweDA4MGMsIDB4OWY4OCwgMHgwODBjLCAweGI0M2MsIDB4MDgwYywgMHg1NDdhLCAweDAwN2UsIDB4MDAzZSwKLQkweDAwMWUsIDB4MDgwYywgMHg5ZWNkLCAweDA4MGMsIDB4OWVkOSwgMHgwMGNlLCAweDA4MDQsIDB4NmQ4OCwKLQkweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDA4MDQsIDB4NmQ4OCwgMHg4NWZmLCAweDAxMjAsIDB4MDAzNiwKLQkweDA4MGMsIDB4NzJhMiwgMHgwMDNlLCAweDAxMmUsIDB4MDAwZSwgMHgwMDFlLCAweDAwMmUsIDB4MDAzZSwKLQkweDAwNWUsIDB4MDA2ZSwgMHgwMDdlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDYwMWMsIDB4YTA4NiwgMHgwMDA2LCAweDExNTgsIDB4MDAxNiwgMHgwMDM2LCAweDAwNzYsIDB4MDgwYywKLQkweGI0M2MsIDB4MDgwYywgMHhiMTU1LCAweDAwN2UsIDB4MDAzZSwgMHgwMDFlLCAweDA4YTAsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwYSwgMHgwOTA0LCAweDZkZDIsIDB4MDgwNCwgMHg2ZGQwLCAweDAwMDYsIDB4MDA2NiwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMGY2LCAweDIwMzEsIDB4MDAwMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzksIDB4YjhlMSwgMHg3ODM4LCAweGEwNjUsIDB4MDU2OCwgMHg2MDBjLCAweDAwMDYsIDB4NjAwZiwKLQkweDAwMDAsIDB4NzgzYywgMHhhYzA2LCAweDExODAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsIDB4MDgwYywKLQkweDgwNmIsIDB4NzgzMywgMHgwMDAwLCAweDc4M2YsIDB4MDAwMCwgMHg3ODQzLCAweDAwMDAsIDB4Nzg0NywKLQkweDAwMDAsIDB4Nzg0YiwgMHgwMDAwLCAweDAwM2UsIDB4MDgwYywgMHg5ZDE2LCAweDAxNzgsIDB4NjAxMCwKLQkweDIwNjgsIDB4NjAxYywgMHhhMDg2LCAweDAwMDMsIDB4MTFiMCwgMHg2ODM3LCAweDAxMDMsIDB4NmI0YSwKLQkweDY4NDcsIDB4MDAwMCwgMHgwODBjLCAweDU0N2EsIDB4MDgwYywgMHg5ZWNkLCAweDA4MGMsIDB4OWVkOSwKLQkweDAwMGUsIDB4MDg4OCwgMHg3ZTNhLCAweDdlMzYsIDB4MDEyZSwgMHgwMGZlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwNmUsIDB4MDAwZSwgMHgwMDA1LCAweDYwMWMsIDB4YTA4NiwgMHgwMDA2LCAweDExMTgsIDB4MDgwYywKLQkweGIxNTUsIDB4MGM2MCwgMHg2MDFjLCAweGEwODYsIDB4MDAwYSwgMHgwZDA4LCAweDA4ZjAsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDA4NiwgMHgyMDQxLCAweDAwMDAsIDB4MDA5OSwgMHgwODBjLCAweDZmMzUsIDB4MDA4ZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZjYsIDB4MDEyNiwgMHgyMDc5LCAweGI4ZTEsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg2ZmMyLCAweDA4MGMsIDB4NzAzNCwgMHgwMTJlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDE2LCAweDAwMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGI4ZTEsIDB4NzYxNCwgMHgyNjYwLCAweDI2NzgsIDB4OGNmZiwKLQkweDA5MDQsIDB4NmYwYiwgMHg2MDE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEyMDYsIDB4MTkwNCwKLQkweDZmMDYsIDB4ODhmZiwgMHgwMTIwLCAweDYwNTAsIDB4YTEwNiwgMHgxOTA0LCAweDZmMDYsIDB4NzAyNCwKLQkweGFjMDYsIDB4MTUzOCwgMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwgMHhhMDA1LCAweDAxZjAsIDB4MDgwYywKLQkweDZhODIsIDB4MDgwYywgMHg3ZGYzLCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweDgyZDQsIDB4NzAyNywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHhhMzg0LCAweDEwMDAsIDB4MDEyMCwKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4MDAyMCwgMHg2MDAzLCAweDAwMDksIDB4NjMwYSwKLQkweDA0ZTgsIDB4NzAxNCwgMHhhYzM2LCAweDExMTAsIDB4NjYwYywgMHg3NjE2LCAweDcwMTAsIDB4YWMzNiwKLQkweDExNDAsIDB4MmMwMCwgMHhhZjM2LCAweDAxMTgsIDB4MmYwMCwgMHg3MDEyLCAweDAwMTAsIDB4NzAxMywKLQkweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4YWYwNiwgMHgwMTEwLCAweDdlMGUsIDB4MDAwOCwKLQkweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDFiOCwKLQkweDYwMWMsIDB4YTA4NiwgMHgwMDAzLCAweDE1NDAsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MDAxNiwgMHgwMDM2LCAweDAwODYsIDB4MDgwYywgMHg5Zjg4LCAweDA4MGMsIDB4YjQzYywKLQkweDA4MGMsIDB4NTQ3YSwgMHgwMDhlLCAweDAwM2UsIDB4MDAxZSwgMHgwODBjLCAweDllY2QsIDB4MDgwYywKLQkweDllZDksIDB4MDgwYywgMHg4MWE1LCAweDAwY2UsIDB4MDgwNCwgMHg2ZThmLCAweDJjNzgsIDB4NjAwYywKLQkweDIwNjAsIDB4MDgwNCwgMHg2ZThmLCAweDAxMmUsIDB4MDAwZSwgMHgwMDFlLCAweDAwNmUsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAxYywgMHhhMDg2LCAweDAwMDYsIDB4MTE1OCwKLQkweDAwMTYsIDB4MDAzNiwgMHgwMDg2LCAweDA4MGMsIDB4YjQzYywgMHgwODBjLCAweGIxNTUsIDB4MDA4ZSwKLQkweDAwM2UsIDB4MDAxZSwgMHgwOGUwLCAweDYwMWMsIDB4YTA4NiwgMHgwMDAyLCAweDExMjgsIDB4NjAwNCwKLQkweGEwODYsIDB4MDA4NSwgMHgwOTA4LCAweDA4OTgsIDB4NjAxYywgMHhhMDg2LCAweDAwMDUsIDB4MTk3OCwKLQkweDYwMDQsIDB4YTA4NiwgMHgwMDg1LCAweDBkMjAsIDB4MDg1MCwgMHgwMGM2LCAweDAwMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHhhMjgwLCAweGI3MzUsIDB4MjAwNCwgMHhhMDY1LCAweDA5MDQsIDB4NmZiZSwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwNjYsIDB4MjA3MSwgMHhiOGUxLCAweDY2NTQsIDB4NzAxOCwKLQkweGFjMDYsIDB4MTEwOCwgMHg3NjFhLCAweDcwMWMsIDB4YWMwNiwgMHgxMTMwLCAweDg2ZmYsIDB4MTExOCwKLQkweDcwMTgsIDB4NzAxZSwgMHgwMDA4LCAweDc2MWUsIDB4NjA1OCwgMHhhMDdkLCAweDAxMDgsIDB4N2U1NiwKLQkweGE2ZWQsIDB4MDAwMCwgMHgwMTEwLCAweDJmMDAsIDB4Njg1YSwgMHg2MDU3LCAweDAwMDAsIDB4NjA1YiwKLQkweDAwMDAsIDB4NjAwMCwgMHhjMGQ0LCAweGMwZGMsIDB4NjAwMiwgMHgwODBjLCAweDRmNDYsIDB4MDkwNCwKLQkweDZmYmEsIDB4NzYyNCwgMHg4NmZmLCAweDA1ZTgsIDB4YTY4MCwgMHgwMDA0LCAweDIwMDQsIDB4YWQwNiwKLQkweDE1YzAsIDB4MDBkNiwgMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwgMHhhMDA1LCAweDA1NDgsIDB4MDgwYywKLQkweDZhODIsIDB4MDgwYywgMHg3ZGYzLCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweDgyZDQsIDB4NzAyNywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHhhMzg0LCAweDEwMDAsIDB4MDEyMCwKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4MDBkZSwgMHgwMGM2LCAweDYwM2MsIDB4YTAwNSwKLQkweDAxMTAsIDB4ODAwMSwgMHg2MDNlLCAweDI2NjAsIDB4MDgwYywgMHg5ZWQ5LCAweDAwY2UsIDB4MDA0OCwKLQkweDAwZGUsIDB4MDBjNiwgMHgyNjYwLCAweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDAwY2UsIDB4MDgwNCwKLQkweDZmNjUsIDB4OGRmZiwgMHgwMTU4LCAweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4OWY4OCwgMHgwODBjLCAweGI0M2MsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4ODFhNSwKLQkweDA4MDQsIDB4NmY2NSwgMHgwMDZlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAxMmUsIDB4MDAwZSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMDA2LCAweDAwNjYsIDB4MDBjNiwgMHgwMGQ2LCAweDIwMzEsIDB4MDAwMCwKLQkweDc4MTQsIDB4YTA2NSwgMHgwOTA0LCAweDcwMTQsIDB4NjAwYywgMHgwMDA2LCAweDYwMGYsIDB4MDAwMCwKLQkweDc4MjQsIDB4YWMwNiwgMHgxNTQwLCAweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweGEwMDUsIDB4MDFmMCwKLQkweDA4MGMsIDB4NmE4MiwgMHgwODBjLCAweDdkZjMsIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4ODJkNCwKLQkweDc4MjcsIDB4MDAwMCwgMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweGEzODQsIDB4MTAwMCwKLQkweDAxMjAsIDB4NjgwMywgMHgwMTAwLCAweDY4MDMsIDB4MDAwMCwgMHgyMDY5LCAweDAxMDAsIDB4NjgyNCwKLQkweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHgwMDI4LCAweDYwMDMsIDB4MDAwOSwKLQkweDYzMGEsIDB4MmMzMCwgMHgwMGIwLCAweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDE2OCwKLQkweDYwMWMsIDB4YTA4NiwgMHgwMDAzLCAweDExYjgsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4OWVjZCwgMHgwODBjLCAweDllZDksIDB4MDgwYywKLQkweDgxYTUsIDB4MDAwZSwgMHgwODA0LCAweDZmYzksIDB4N2UxNiwgMHg3ZTEyLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwNmUsIDB4MDAwZSwgMHgwMDA1LCAweDYwMWMsIDB4YTA4NiwgMHgwMDA2LCAweDExMTgsIDB4MDgwYywKLQkweGIxNTUsIDB4MGM1OCwgMHg2MDFjLCAweGEwODYsIDB4MDAwMiwgMHgxMTI4LCAweDYwMDQsIDB4YTA4NiwKLQkweDAwODUsIDB4MDlkMCwgMHgwYzEwLCAweDYwMWMsIDB4YTA4NiwgMHgwMDA1LCAweDE5ZjAsIDB4NjAwNCwKLQkweGEwODYsIDB4MDA4NSwgMHgwZDYwLCAweDA4YzgsIDB4MDAwNiwgMHgwMDY2LCAweDAwYzYsIDB4MDBkNiwKLQkweDc4MTgsIDB4YTA2NSwgMHgwOTA0LCAweDcwOWEsIDB4NjA1NCwgMHgwMDA2LCAweDYwNTcsIDB4MDAwMCwKLQkweDYwNWIsIDB4MDAwMCwgMHg2MDAwLCAweGMwZDQsIDB4YzBkYywgMHg2MDAyLCAweDA4MGMsIDB4NGY0NiwKLQkweDA5MDQsIDB4NzA5NywgMHg3ZTI0LCAweDg2ZmYsIDB4MDVlOCwgMHhhNjgwLCAweDAwMDQsIDB4MjAwNCwKLQkweGFkMDYsIDB4MTVjMCwgMHgwMGQ2LCAweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweGEwMDUsIDB4MDU0OCwKLQkweDA4MGMsIDB4NmE4MiwgMHgwODBjLCAweDdkZjMsIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4ODJkNCwKLQkweDc4MjcsIDB4MDAwMCwgMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweGEzODQsIDB4MTAwMCwKLQkweDAxMjAsIDB4NjgwMywgMHgwMTAwLCAweDY4MDMsIDB4MDAwMCwgMHgyMDY5LCAweDAxMDAsIDB4NjgyNCwKLQkweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHgwMGRlLCAweDAwYzYsIDB4NjAzYywKLQkweGEwMDUsIDB4MDExMCwgMHg4MDAxLCAweDYwM2UsIDB4MjY2MCwgMHgwODBjLCAweDllZDksIDB4MDBjZSwKLQkweDAwNDgsIDB4MDBkZSwgMHgwMGM2LCAweDI2NjAsIDB4NjAwMywgMHgwMDA5LCAweDYzMGEsIDB4MDBjZSwKLQkweDA4MDQsIDB4NzA0NiwgMHg4ZGZmLCAweDAxMzgsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4ODFhNSwgMHgwODA0LCAweDcwNDYsIDB4MDAwZSwKLQkweDA4MDQsIDB4NzAzOSwgMHg3ODFlLCAweDc4MWEsIDB4MDBkZSwgMHgwMGNlLCAweDAwNmUsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGQ2LCAweDAwNjYsIDB4NjAwMCwgMHhkMGRjLCAweDAxYTAsIDB4NjA0YywKLQkweGEwNmQsIDB4MDE4OCwgMHg2ODQ4LCAweGE2MDYsIDB4MTE3MCwgMHgyMDcxLCAweGI4ZTEsIDB4NzAyNCwKLQkweGEwMzUsIDB4MDE0OCwgMHhhMDgwLCAweDAwMDQsIDB4MjAwNCwgMHhhZDA2LCAweDExMjAsIDB4NjAwMCwKLQkweGMwZGMsIDB4NjAwMiwgMHgwMDIxLCAweDAwNmUsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBmNiwKLQkweDIwNzksIDB4MDEwMCwgMHg3OGMwLCAweGEwMDUsIDB4MTEzOCwgMHgwMGM2LCAweDI2NjAsIDB4NjAwMywKLQkweDAwMDksIDB4NjMwYSwgMHgwMGNlLCAweDA0YTAsIDB4MDgwYywgMHg3ZGYzLCAweDc4YzMsIDB4MDAwMCwKLQkweDA4MGMsIDB4ODJkNCwgMHg3MDI3LCAweDAwMDAsIDB4MDAzNiwgMHgyMDc5LCAweDAxNDAsIDB4N2IwNCwKLQkweGEzODQsIDB4MTAwMCwgMHgwMTIwLCAweDc4MDMsIDB4MDEwMCwgMHg3ODAzLCAweDAwMDAsIDB4MjA3OSwKLQkweDAxMDAsIDB4NzgyNCwgMHhkMDg0LCAweDAxMTAsIDB4NzgyNywgMHgwMDAxLCAweDA4MGMsIDB4ODJkNCwKLQkweDAwM2UsIDB4MDgwYywgMHg0ZjQ2LCAweDAwYzYsIDB4NjAzYywgMHhhMDA1LCAweDAxMTAsIDB4ODAwMSwKLQkweDYwM2UsIDB4MjY2MCwgMHgwODBjLCAweDg2YTQsIDB4MDBjZSwgMHg2ODM3LCAweDAxMDMsIDB4NmI0YSwKLQkweDY4NDcsIDB4MDAwMCwgMHgwODBjLCAweDlmODgsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4ODFhNSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwYzYsIDB4MjA3MSwgMHhiOGUxLCAweDcwMDQsIDB4YTA4NCwKLQkweDAwMDcsIDB4MDAwMiwgMHg3MTE0LCAweDcxMTcsIDB4NzEyZCwgMHg3MTQ2LCAweDcxODMsIDB4NzExNCwKLQkweDcxMTIsIDB4NzExMiwgMHgwODBjLCAweDE1MWEsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsIDB4NzAyNCwKLQkweGEwNjUsIDB4MDE0OCwgMHg3MDIwLCAweDgwMDEsIDB4NzAyMiwgMHg2MDBjLCAweGEwMTUsIDB4MDE1MCwKLQkweDcyMTYsIDB4NjAwZiwgMHgwMDAwLCAweDcwMDcsIDB4MDAwMCwgMHg3MDI3LCAweDAwMDAsIDB4MDBjZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3MjE2LCAweDcyMTIsIDB4MGNiMCwgMHg2MDE4LCAweDIwNjAsIDB4MDgwYywKLQkweDRmNDYsIDB4NjAwMCwgMHhjMGRjLCAweDYwMDIsIDB4NzAyMCwgMHg4MDAxLCAweDcwMjIsIDB4MDEyMCwKLQkweDYwNTQsIDB4YTAxNSwgMHgwMTQwLCAweDcyMWUsIDB4NzAwNywgMHgwMDAwLCAweDcwMjcsIDB4MDAwMCwKLQkweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDcyMTgsIDB4NzIxZSwgMHgwY2IwLCAweDcwMjQsIDB4YTA2NSwKLQkweDA1YjgsIDB4NzAwYywgMHhhYzA2LCAweDExNjAsIDB4MDgwYywgMHg4MWE1LCAweDYwMGMsIDB4YTAxNSwKLQkweDAxMjAsIDB4NzIwZSwgMHg2MDBmLCAweDAwMDAsIDB4MDQ0OCwgMHg3MjBlLCAweDcyMGEsIDB4MDQzMCwKLQkweDcwMTQsIDB4YWMwNiwgMHgxMTYwLCAweDA4MGMsIDB4ODFhNSwgMHg2MDBjLCAweGEwMTUsIDB4MDEyMCwKLQkweDcyMTYsIDB4NjAwZiwgMHgwMDAwLCAweDAwZDAsIDB4NzIxNiwgMHg3MjEyLCAweDAwYjgsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwMywgMHgxMTk4LCAweDYwMTgsIDB4MjA2MCwgMHgwODBjLCAweDRmNDYsIDB4NjAwMCwKLQkweGMwZGMsIDB4NjAwMiwgMHgwODBjLCAweDgxYTUsIDB4NzAxYywgMHhhMDY1LCAweDAxMzgsIDB4NjA1NCwKLQkweGEwMTUsIDB4MDExMCwgMHg3MjFlLCAweDAwMTAsIDB4NzIxOCwgMHg3MjFlLCAweDcwMjcsIDB4MDAwMCwKLQkweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDcwMjQsIDB4YTA2NSwgMHgwMTQwLCAweDA4MGMsIDB4ODFhNSwKLQkweDYwMGMsIDB4YTAxNSwgMHgwMTUwLCAweDcyMGUsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4ODJkNCwKLQkweDcwMjcsIDB4MDAwMCwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHg3MjBlLCAweDcyMGEsIDB4MGNiMCwKLQkweDAwZDYsIDB4MjA2OSwgMHhiOGUxLCAweDY4MzAsIDB4YTA4NCwgMHgwMDAzLCAweDAwMDIsIDB4NzFhNSwKLQkweDcxYTcsIDB4NzFjYiwgMHg3MWEzLCAweDA4MGMsIDB4MTUxYSwgMHgwMGRlLCAweDAwMDUsIDB4MDBjNiwKLQkweDY4NDAsIDB4YTA4NiwgMHgwMDAxLCAweDAxYjgsIDB4NjgzYywgMHhhMDY1LCAweDAxMzAsIDB4NjAwYywKLQkweGEwMTUsIDB4MDE3MCwgMHg2YTNhLCAweDYwMGYsIDB4MDAwMCwgMHg2ODMzLCAweDAwMDAsIDB4NjgzZiwKLQkweDAwMDAsIDB4MjAxMSwgMHhiOTAwLCAweDIwMTMsIDB4MDAwMCwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwKLQkweDY4M2EsIDB4NjgzNiwgMHgwYzkwLCAweDY4NDMsIDB4MDAwMCwgMHg2ODM4LCAweGEwNjUsIDB4MGQ2OCwKLQkweDYwMDMsIDB4MDAwMywgMHgwYzUwLCAweDAwYzYsIDB4Njg0MywgMHgwMDAwLCAweDY4NDcsIDB4MDAwMCwKLQkweDY4NGIsIDB4MDAwMCwgMHg2ODNjLCAweGEwNjUsIDB4MDE2OCwgMHg2MDBjLCAweGEwMTUsIDB4MDEzMCwKLQkweDZhM2EsIDB4NjAwZiwgMHgwMDAwLCAweDY4M2YsIDB4MDAwMCwgMHgwMDIwLCAweDY4M2YsIDB4MDAwMCwKLQkweDY4M2EsIDB4NjgzNiwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksIDB4YjhlMSwKLQkweDY4MDQsIDB4YTA4NCwgMHgwMDA3LCAweDAwMDIsIDB4NzFmNiwgMHg3MjkyLCAweDcyOTIsIDB4NzI5MiwKLQkweDcyOTIsIDB4NzI5NCwgMHg3MWY0LCAweDcxZjQsIDB4MDgwYywgMHgxNTFhLCAweDY4MjAsIDB4YTAwNSwKLQkweDExMTAsIDB4MDBkZSwgMHgwMDA1LCAweDAwYzYsIDB4NjgwYywgMHhhMDY1LCAweDAxNTAsIDB4NjgwNywKLQkweDAwMDQsIDB4NjgyNiwgMHg2ODJiLCAweDAwMDAsIDB4MDgwYywgMHg3MmU0LCAweDAwY2UsIDB4MDBkZSwKLQkweDAwMDUsIDB4NjgxNCwgMHhhMDY1LCAweDAxNTAsIDB4NjgwNywgMHgwMDAxLCAweDY4MjYsIDB4NjgyYiwKLQkweDAwMDAsIDB4MDgwYywgMHg3MmU0LCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDAwZTYsIDB4MDAzNiwKLQkweDZhMWMsIDB4YTJmNSwgMHgwMDAwLCAweDA5MDQsIDB4NzI4ZSwgMHg3MDRjLCAweGEwMGQsIDB4MDExOCwKLQkweDcwODgsIDB4YTAwNSwgMHgwMWEwLCAweDcwNTQsIDB4YTA3NSwgMHgwMTIwLCAweGEyMGUsIDB4MDkwNCwKLQkweDcyOGUsIDB4MDAyOCwgMHg2ODE4LCAweGEyMGUsIDB4MDkwNCwgMHg3MjhlLCAweDIwNzAsIDB4NzA0YywKLQkweGEwMGQsIDB4MGQ4OCwgMHg3MDg4LCAweGEwMDUsIDB4MWQ3MCwgMHgyZTAwLCAweDY4MWUsIDB4NzMzYywKLQkweDcwMzgsIDB4YTMwMiwgMHgxZTQwLCAweDA4MGMsIDB4ODY3YiwgMHgwOTA0LCAweDcyOGUsIDB4ODMxOCwKLQkweDczM2UsIDB4NjExMiwgMHgyZTEwLCAweDYyMWEsIDB4YTE4MCwgMHgwMDE0LCAweDIwMDQsIDB4YTA4NCwKLQkweDAwZmYsIDB4NjA1YSwgMHhhMTgwLCAweDAwMTQsIDB4MjAwMywgMHgwMDAwLCAweGExODAsIDB4MDAxNSwKLQkweDIwMDQsIDB4YTA4YSwgMHgxOTlhLCAweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsIDB4ODAxYiwKLQkweDgzMWIsIDB4YTMxOCwgMHg2MzE2LCAweDAwM2UsIDB4MDBmNiwgMHgyYzc4LCAweDcxYTAsIDB4MjAwMSwKLQkweGI2MzUsIDB4MjAwNCwgMHhkMGFjLCAweDExMTAsIDB4ZDFiYywgMHgwMTUwLCAweDcxMDAsIDB4ZDFmNCwKLQkweDAxMjAsIDB4NzExNCwgMHhhMThjLCAweDAwZmYsIDB4MDA0MCwgMHgyMDA5LCAweDAwMDAsIDB4MDAyOCwKLQkweGExZTAsIDB4MmRmOSwgMHgyYzBkLCAweGExOGMsIDB4MDBmZiwgMHgyMDYxLCAweDAxMDAsIDB4NjE5YSwKLQkweDA4MGMsIDB4NzkxNCwgMHg3MzAwLCAweGMzZGQsIDB4NzMwMiwgMHg2ODA3LCAweDAwMDIsIDB4MmYxOCwKLQkweDZiMjYsIDB4NjgyYiwgMHgwMDAwLCAweDc4MWYsIDB4MDAwMywgMHg3ODAzLCAweDAwMDEsIDB4NzgwNywKLQkweDAwNDAsIDB4MDBmZSwgMHgwMGVlLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDAwM2UsIDB4MDBlZSwKLQkweDAwY2UsIDB4MGNkMCwgMHgwMGRlLCAweDAwMDUsIDB4MDBjNiwgMHg2ODBjLCAweGEwNjUsIDB4MDEzOCwKLQkweDY4MDcsIDB4MDAwNCwgMHg2ODI2LCAweDY4MmIsIDB4MDAwMCwgMHgwODBjLCAweDcyZTQsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZDYsIDB4MjA2OSwgMHhiOGUxLCAweDY4MzAsIDB4YTA4NiwKLQkweDAwMDAsIDB4MTFkMCwgMHgyMDAxLCAweGI2MGMsIDB4MjAwYywgMHhkMWJjLCAweDE1NjAsIDB4NjgzOCwKLQkweGEwN2QsIDB4MDE5MCwgMHg2ODMzLCAweDAwMDEsIDB4NjgzZSwgMHg2ODQ3LCAweDAwMDAsIDB4Njg0YiwKLQkweDAwMDAsIDB4MDEyNiwgMHgwMGY2LCAweDIwOTEsIDB4MjQwMCwgMHgwMDJlLCAweDA4MGMsIDB4MjAzZCwKLQkweDExMzAsIDB4MDEyZSwgMHgwODBjLCAweDdjNWQsIDB4MDBkZSwgMHgwMGZlLCAweDAwMDUsIDB4MDEyZSwKLQkweGUwMDAsIDB4Njg0MywgMHgwMDAwLCAweDc4MDMsIDB4MDAwMiwgMHg3ODBjLCAweGEwMTUsIDB4MDE0MCwKLQkweDZhM2EsIDB4NzgwZiwgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwgMHg2ODNmLCAweDAwMDAsIDB4MGM2MCwKLQkweDY4M2EsIDB4NjgzNiwgMHgwY2MwLCAweGMxYmMsIDB4MjEwMiwgMHgwMDY2LCAweDIwMzEsIDB4MDAwMSwKLQkweDA4MGMsIDB4NWJjMywgMHgwMDZlLCAweDA4NTgsIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MDAwYiwKLQkweDAwMDUsIDB4NzJmMiwgMHg3MmY3LCAweDc3YjUsIDB4NzhkMSwgMHg3MmY3LCAweDc3YjUsIDB4NzhkMSwKLQkweDcyZjIsIDB4NzJmNywgMHgwODBjLCAweDcxMDIsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDE1NiwKLQkweDAxMzYsIDB4MDE0NiwgMHgwMGM2LCAweDAwZjYsIDB4NjAwNCwgMHhhMDhhLCAweDAwODAsIDB4MWEwYywKLQkweDE1MWEsIDB4NjExOCwgMHgyMTc4LCAweDc5YTAsIDB4MjAxMSwgMHhiNjM1LCAweDIyMTQsIDB4ZDJhYywKLQkweDExMTAsIDB4ZDFiYywgMHgwMTUwLCAweDc5MDAsIDB4ZDFmNCwgMHgwMTIwLCAweDc5MTQsIDB4YTE4YywKLQkweDAwZmYsIDB4MDA0MCwgMHgyMDA5LCAweDAwMDAsIDB4MDAyOCwgMHhhMWY4LCAweDJkZjksIDB4MmYwZCwKLQkweGExOGMsIDB4MDBmZiwgMHgyYzc4LCAweDIwNjEsIDB4MDEwMCwgMHg2MTlhLCAweGEwOGEsIDB4MDA0MCwKLQkweDFhMDQsIDB4NzM2YiwgMHgwMDMzLCAweDAwZmUsIDB4MDBjZSwgMHgwMTRlLCAweDAxM2UsIDB4MDE1ZSwKLQkweDAwMDUsIDB4NzQxYSwgMHg3NDY1LCAweDc0OTIsIDB4NzU1ZiwgMHg3NThkLCAweDc1OTUsIDB4NzViYiwKLQkweDc1Y2MsIDB4NzVkZCwgMHg3NWU1LCAweDc1ZmIsIDB4NzVlNSwgMHg3NjVjLCAweDc1Y2MsIDB4NzY3ZCwKLQkweDc2ODUsIDB4NzVkZCwgMHg3Njg1LCAweDc2OTYsIDB4NzM2OSwgMHg3MzY5LCAweDczNjksIDB4NzM2OSwKLQkweDczNjksIDB4NzM2OSwgMHg3MzY5LCAweDczNjksIDB4NzM2OSwgMHg3MzY5LCAweDczNjksIDB4N2VmZSwKLQkweDdmMjMsIDB4N2Y0NiwgMHg3ZjY5LCAweDdmOGEsIDB4NzViYiwgMHg3MzY5LCAweDc1YmIsIDB4NzVlNSwKLQkweDczNjksIDB4NzQ5MiwgMHg3NTVmLCAweDczNjksIDB4ODNkNiwgMHg3NWU1LCAweDczNjksIDB4ODNmNiwKLQkweDc1ZTUsIDB4NzM2OSwgMHg3NWRkLCAweDc0MTMsIDB4NzM3ZSwgMHg3MzY5LCAweDg0MWIsIDB4ODQ5MCwKLQkweDg1NjcsIDB4NzM2OSwgMHg4NTc4LCAweDc1YjYsIDB4ODU5NCwgMHg3MzY5LCAweDdmOWYsIDB4ODVlZiwKLQkweDczNjksIDB4MDgwYywgMHgxNTFhLCAweDIxMDAsIDB4MDAzMywgMHgwMGZlLCAweDAwY2UsIDB4MDE0ZSwKLQkweDAxM2UsIDB4MDE1ZSwgMHgwMDA1LCAweDczN2MsIDB4NzM3YywgMHg3MzdjLCAweDczYjIsIDB4NzNkMCwKLQkweDczZTYsIDB4NzM3YywgMHg3MzdjLCAweDczN2MsIDB4MDgwYywgMHgxNTFhLCAweDAwZDYsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3NmIzLCAweDc4MTAsIDB4MjA2OCwgMHgyMGEzLCAweDI0MTQsIDB4MjBhMywKLQkweDAwMTgsIDB4MjBhMywgMHgwODAwLCAweDY4M2MsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2ODUwLCAweDIwYTIsIDB4Njg1NCwKLQkweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMTgsIDB4MDgwYywKLQkweDdkZTAsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4NzgxOCwgMHgyMDY4LCAweDY4YTAsIDB4MjA2OSwKLQkweGI2MDAsIDB4NmFkNCwgMHhkMmFjLCAweDExMTAsIDB4ZDBiYywgMHgwMTEwLCAweGEwODUsIDB4MDAwMSwKLQkweDAwZGUsIDB4MDAwNSwgMHgwMGQ2LCAweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc2YjMsIDB4MjBhMywKLQkweDA1MDAsIDB4MjBhMywgMHgwMDAwLCAweDc4MTAsIDB4YTBlOCwgMHgwMDBmLCAweDY4MDgsIDB4MjBhMiwKLQkweDY4MGMsIDB4MjBhMiwgMHg2ODEwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDY4MTgsIDB4MjBhMiwKLQkweDY4MWMsIDB4MjBhMiwgMHg2MGMzLCAweDAwMTAsIDB4MDgwYywgMHg3ZGUwLCAweDAwZGUsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDE0NiwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywgMHg3NmIzLCAweDIwYTMsIDB4NzgwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg3ODA4LCAweDgwMDcsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywKLQkweDAwMDgsIDB4MDgwYywgMHg3ZGUwLCAweDAxNGUsIDB4MDE1ZSwgMHgwMDA1LCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc3NGYsIDB4MjBhMywgMHgwMjAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4ZGYxMCwgMHgyMGEzLCAweDAwMzQsIDB4MjA5OSwgMHhiNjA1LCAweDIwYTksIDB4MDAwNCwKLQkweDUzYTYsIDB4MjA5OSwgMHhiNjAxLCAweDIwYTksIDB4MDAwNCwgMHg1M2E2LCAweDIwOTksIDB4YjhjNywKLQkweDIwYTksIDB4MDAxYSwgMHgzMzA0LCAweDgwMDcsIDB4MjBhMiwgMHg5Mzk4LCAweDFmMDQsIDB4NzQwMiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywgMHgwMDRjLCAweDA4MGMsIDB4N2RlMCwKLQkweDAxNGUsIDB4MDE1ZSwgMHgwMDA1LCAweDIwMDEsIDB4YjYxNSwgMHgyMDA0LCAweDYwOWEsIDB4MDgwYywKLQkweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywgMHg3NmIzLCAweDIwYTMsIDB4NTIwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgwMGQ2LCAweDIwNjksIDB4YjY1MiwgMHg2ODA0LCAweGQwODQsIDB4MDE1MCwKLQkweDY4MjgsIDB4MjBhMywgMHgwMDAwLCAweDAwMTYsIDB4MDgwYywgMHgyODY2LCAweDIxYTIsIDB4MDAxZSwKLQkweDAwZGUsIDB4MDAyOCwgMHgwMGRlLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhOSwKLQkweDAwMDQsIDB4MjA5OSwgMHhiNjA1LCAweDUzYTYsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksIDB4YjYwMSwKLQkweDUzYTYsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBhYywgMHgxMTM4LCAweDc4MTgsIDB4YTA4MCwKLQkweDAwMjgsIDB4MjAwNCwgMHhhMDgyLCAweDAwN2YsIDB4MDIzOCwgMHgyMDAxLCAweGI2MWMsIDB4MjBhNiwKLQkweDIwMDEsIDB4YjYxZCwgMHgyMGE2LCAweDAwNDAsIDB4MjBhMywgMHgwMDAwLCAweDIwMDEsIDB4YjYxNSwKLQkweDIwMDQsIDB4YTA4NCwgMHgwMGZmLCAweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxYywgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc2YjMsIDB4MjBhMywgMHgwNTAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwNCwKLQkweGQwYWMsIDB4MTEzOCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEwODIsIDB4MDA3ZiwKLQkweDAyMzgsIDB4MjAwMSwgMHhiNjFjLCAweDIwYTYsIDB4MjAwMSwgMHhiNjFkLCAweDIwYTYsIDB4MDA0MCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMDAxLCAweGI2MTUsIDB4MjAwNCwgMHhhMDg0LCAweDAwZmYsIDB4MjBhMiwKLQkweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweGI2MDUsIDB4NTNhNiwgMHg2MGMzLCAweDAwMTAsIDB4MDgwYywKLQkweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywgMHg3NmIzLCAweDAwYzYsIDB4NzgxOCwKLQkweDIwNjAsIDB4MjAwMSwgMHgwMDAwLCAweDA4MGMsIDB4NTM4NSwgMHgwMGNlLCAweDc4MTgsIDB4YTA4MCwKLQkweDAwMjgsIDB4MjAwNCwgMHhhMDg2LCAweDAwN2UsIDB4MTEzMCwgMHgyMGEzLCAweDA0MDAsIDB4NjIwYywKLQkweGMyYjQsIDB4NjIwZSwgMHgwMDEwLCAweDIwYTMsIDB4MDMwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgxOCwKLQkweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEwODYsIDB4MDA3ZSwgMHgxOTA0LCAweDc1MjEsIDB4MjAwMSwKLQkweGI2MzUsIDB4MjAwNCwgMHhkMGE0LCAweDAxYzgsIDB4MjA5OSwgMHhiODhlLCAweDMzYTYsIDB4OTM5OCwKLQkweDIwYTMsIDB4MDAwMCwgMHg5Mzk4LCAweDMzMDQsIDB4YTA4NCwgMHgyMDAwLCAweDIwYTIsIDB4OTM5OCwKLQkweDMzYTYsIDB4OTM5OCwgMHgyMGEzLCAweDAwMDAsIDB4OTM5OCwgMHgyMDAxLCAweDI3MTAsIDB4MjBhMiwKLQkweDkzOTgsIDB4MzNhNiwgMHg5Mzk4LCAweDMzYTYsIDB4MDBkMCwgMHgyMDk5LCAweGI4OGUsIDB4MzNhNiwKLQkweDkzOTgsIDB4MzNhNiwgMHg5Mzk4LCAweDMzMDQsIDB4MDgwYywgMHg1YjQxLCAweDExMTgsIDB4YTA4NCwKLQkweDM3ZmYsIDB4MDAxMCwgMHhhMDg0LCAweDNmZmYsIDB4MjBhMiwgMHg5Mzk4LCAweDMzYTYsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhOSwKLQkweDAwMDQsIDB4MjA5OSwgMHhiNjA1LCAweDUzYTYsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksIDB4YjYwMSwKLQkweDUzYTYsIDB4MjBhOSwgMHgwMDA4LCAweDIwYTMsIDB4MDAwMCwgMHgxZjA0LCAweDc0ZmIsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjBhMywgMHgwMDAwLCAweDFmMDQsIDB4NzUwMSwgMHgyMDk5LCAweGI4OTYsIDB4MzMwNCwKLQkweGMwZGQsIDB4MjBhMiwgMHgyMDAxLCAweGI2NzIsIDB4MjAwNCwgMHhkMGU0LCAweDAxNTgsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDkzOTgsIDB4OTM5OCwgMHg5Mzk4LCAweDMzYTYsIDB4MjBhOSwKLQkweDAwMDQsIDB4MDAxMCwgMHgyMGE5LCAweDAwMDcsIDB4MjBhMywgMHgwMDAwLCAweDFmMDQsIDB4NzUxYywKLQkweDA0NjgsIDB4MjAwMSwgMHhiNjM1LCAweDIwMDQsIDB4ZDBhNCwgMHgwMTQwLCAweDIwMDEsIDB4Yjg4ZiwKLQkweDIwMDQsIDB4NjBlMywgMHgwMDAwLCAweDA4MGMsIDB4MjhhNywgMHg2MGUyLCAweDIwOTksIDB4Yjg4ZSwKLQkweDIwYTksIDB4MDAwOCwgMHg1M2E2LCAweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweGI2MDUsIDB4NTNhNiwKLQkweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweGI2MDEsIDB4NTNhNiwgMHgyMGE5LCAweDAwMDgsIDB4MjBhMywKLQkweDAwMDAsIDB4MWYwNCwgMHg3NTNmLCAweDIwYTksIDB4MDAwOCwgMHgyMGEzLCAweDAwMDAsIDB4MWYwNCwKLQkweDc1NDUsIDB4MjA5OSwgMHhiODk2LCAweDIwYTksIDB4MDAwOCwgMHg1M2E2LCAweDIwYTksIDB4MDAwOCwKLQkweDIwYTMsIDB4MDAwMCwgMHgxZjA0LCAweDc1NTAsIDB4MjBhOSwgMHgwMDBhLCAweDIwYTMsIDB4MDAwMCwKLQkweDFmMDQsIDB4NzU1NiwgMHg2MGMzLCAweDAwNzQsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3NmIzLCAweDIwYTMsIDB4MjAxMCwgMHgyMGEzLCAweDAwMTQsIDB4MjBhMywKLQkweDA4MDAsIDB4MjBhMywgMHgyMDAwLCAweGEwMDYsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTIsIDB4MDBmNiwgMHgyMDc5LCAweGI2NTIsIDB4NzkwNCwgMHgwMGZlLCAweGQxYWMsIDB4MTExMCwKLQkweGEwODUsIDB4MDAyMCwgMHhkMWE0LCAweDAxMTAsIDB4YTA4NSwgMHgwMDEwLCAweGEwODUsIDB4MDAwMiwKLQkweDAwZDYsIDB4MDgwNCwgMHg3NjNlLCAweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc2YjMsIDB4MjBhMywgMHg1MDAwLCAweDA4MDQsIDB4NzRhZCwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc2YjMsIDB4MjBhMywgMHgyMTEwLCAweDIwYTMsIDB4MDAxNCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDAsIDB4NjBjMywgMHgwMDE0LCAweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDIwYTEsIDB4MDIwYiwKLQkweDA4MGMsIDB4Nzc0NywgMHgwMDIwLCAweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc3NGYsIDB4MjBhMywKLQkweDAyMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywKLQkweDAwMDQsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4Nzc0ZiwKLQkweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAzLCAweDIwYTMsIDB4MmEwMCwKLQkweDYwYzMsIDB4MDAwOCwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc3NGYsIDB4MjBhMywgMHgwMjAwLCAweDA4MDQsIDB4NzRhZCwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc3NGYsIDB4MjBhMywgMHgwMTAwLCAweDIwYTMsIDB4MDAwMCwgMHg3ODI4LCAweGEwMDUsIDB4MDExMCwKLQkweDIwYTIsIDB4MDAxMCwgMHgyMGEzLCAweDAwMDMsIDB4NzgxMCwgMHgyMGEyLCAweDYwYzMsIDB4MDAwOCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDAwZDYsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4Nzc0ZiwKLQkweDIwYTMsIDB4MDIxMCwgMHgyMGEzLCAweDAwMTQsIDB4MjBhMywgMHgwODAwLCAweDc4MTgsIDB4MjA2OCwKLQkweDY4OTQsIDB4YTA4NiwgMHgwMDE0LCAweDExOTgsIDB4Njk5YywgMHhhMTg0LCAweDAwMzAsIDB4MDE5MCwKLQkweDY5OTgsIDB4YTE4NCwgMHhjMDAwLCAweDExNDAsIDB4ZDFlYywgMHgwMTE4LCAweDIwYTMsIDB4MjEwMCwKLQkweDAwNTgsIDB4MjBhMywgMHgwMTAwLCAweDAwNDAsIDB4MjBhMywgMHgwNDAwLCAweDAwMjgsIDB4MjBhMywKLQkweDA3MDAsIDB4MDAxMCwgMHg3MDBmLCAweDA4MDAsIDB4YTAwNiwgMHgyMGEyLCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgwMGY2LCAweDIwNzksIDB4YjY1MiwgMHg3OTA0LCAweDAwZmUsIDB4ZDFhYywKLQkweDExMTAsIDB4YTA4NSwgMHgwMDIwLCAweGQxYTQsIDB4MDExMCwgMHhhMDg1LCAweDAwMTAsIDB4MjAwOSwKLQkweGI2NzQsIDB4MjEwYywgMHhkMTg0LCAweDExMTAsIDB4YTA4NSwgMHgwMDAyLCAweDAwMjYsIDB4MjAwOSwKLQkweGI2NzIsIDB4MjEwYywgMHhkMWU0LCAweDAxMzAsIDB4YzBjNSwgMHhhMDk0LCAweDAwMzAsIDB4YTI5NiwKLQkweDAwMTAsIDB4MDE0MCwgMHhkMWVjLCAweDAxMzAsIDB4YTA5NCwgMHgwMDMwLCAweGEyOTYsIDB4MDAxMCwKLQkweDAxMDgsIDB4YzBiZCwgMHgwMDJlLCAweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDYwYzMsIDB4MDAxNCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMGRlLCAweDAwMDUsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4Nzc0ZiwKLQkweDIwYTMsIDB4MDIxMCwgMHgyMGEzLCAweDAwMTQsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDEwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc3NGYsIDB4MjBhMywgMHgwMjAwLCAweDA4MDQsIDB4NzQyMCwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc3NGYsIDB4MjBhMywgMHgwMTAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDMsIDB4MjBhMywKLQkweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDIwZTEsIDB4OTA4MCwKLQkweDIwZTEsIDB4NDAwMCwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywgMHg3NzRmLCAweDIwYTMsIDB4MDEwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMGIsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwOCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksIDB4MzIwMCwKLQkweDIwMjEsIDB4MDgwMCwgMHgwMDM4LCAweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksIDB4MjIwMCwKLQkweDIwMjEsIDB4MDEwMCwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDc4MTgsIDB4YTA4MCwKLQkweDAwMjgsIDB4MjAxNCwgMHhhMjg2LCAweDAwN2UsIDB4MTFhMCwgMHhhMzg1LCAweDAwZmYsIDB4MjBhMiwKLQkweDIwYTMsIDB4ZmZmZSwgMHgyMGEzLCAweDAwMDAsIDB4MjAxMSwgMHhiNjE1LCAweDIyMTQsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwNCwgMHhhMDA1LCAweDAxMTgsIDB4MjAxMSwgMHhiNjFkLCAweDIyMTQsIDB4MjJhMiwKLQkweDA0ZDAsIDB4YTI4NiwgMHgwMDdmLCAweDExMzgsIDB4MDBkNiwgMHhhMzg1LCAweDAwZmYsIDB4MjBhMiwKLQkweDIwYTMsIDB4ZmZmZCwgMHgwMGM4LCAweDIwMDEsIDB4YjYzNSwgMHgyMDA0LCAweGQwYWMsIDB4MTExMCwKLQkweGQyYmMsIDB4MDFjOCwgMHhhMjg2LCAweDAwODAsIDB4MDBkNiwgMHgxMTMwLCAweGEzODUsIDB4MDBmZiwKLQkweDIwYTIsIDB4MjBhMywgMHhmZmZjLCAweDAwNDAsIDB4YTJlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwKLQkweGEzMDUsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MjA2OSwgMHhiNjFjLCAweDJkYTYsIDB4OGQ2OCwKLQkweDJkYTYsIDB4MDBkZSwgMHgwMDgwLCAweDAwZDYsIDB4YTJlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwKLQkweGEzMDUsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MDBkZSwgMHgyMGEzLCAweDAwMDAsIDB4MjAxMSwKLQkweGI2MTUsIDB4MjIxNCwgMHgyMmEyLCAweGE0ODUsIDB4MDAyOSwgMHgyMGEyLCAweDAwNGUsIDB4MDAzZSwKLQkweDIwYTMsIDB4MDAwMCwgMHgwODBjLCAweDdkY2YsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MmZhMiwKLQkweDIwYTMsIDB4ZmZmZiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwMmUsIDB4MDAwNSwKLQkweDAwMjYsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHgyMGEzLCAweDAyZmYsIDB4MjAxMSwKLQkweGZmZmMsIDB4MjJhMiwgMHgwMGQ2LCAweDIwNjksIDB4YjYxYywgMHgyZGE2LCAweDhkNjgsIDB4MmRhNiwKLQkweDAwZGUsIDB4MjBhMywgMHgyMDI5LCAweDIwYTMsIDB4MDAwMCwgMHgwOGUwLCAweDIwYTMsIDB4MDEwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweGZjMDIsIDB4MjBhMywgMHgwMDAwLCAweDAwMDUsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA0NiwgMHgyMDE5LCAweDMzMDAsIDB4MjAyMSwgMHgwODAwLCAweDAwMzgsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA0NiwgMHgyMDE5LCAweDIzMDAsIDB4MjAyMSwgMHgwMTAwLCAweDIwZTEsIDB4OTA4MCwKLQkweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweDIwMTEsIDB4YjYzNSwKLQkweDIyMTQsIDB4ZDJhYywgMHgxMTE4LCAweGEwOTIsIDB4MDA3ZSwgMHgwMmQ4LCAweDAwZDYsIDB4YTBlOCwKLQkweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEzMDUsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4NjgxMCwKLQkweGEwMDUsIDB4MTE0MCwgMHg2ODE0LCAweGEwMDUsIDB4MTEyOCwgMHgyMGEzLCAweDAwZmYsIDB4MjBhMywKLQkweGZmZmUsIDB4MDAyOCwgMHgyMDY5LCAweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwKLQkweDAwODAsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEzMDUsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgwMGRlLCAweDIwYTMsIDB4MDAwMCwgMHgyMDExLCAweGI2MTUsIDB4MjIxNCwKLQkweDIyYTIsIDB4YTQ4NSwgMHgwMDk4LCAweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDAwNGUsIDB4MDAzZSwKLQkweDA4MGMsIDB4N2RjZiwgMHgyMmEyLCAweDIwYTMsIDB4MDAwMCwgMHg3YTA4LCAweDIyYTIsIDB4MmZhMiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MDAyZSwgMHgwMDA1LCAweDA4MGMsIDB4N2RjZiwKLQkweDIyYTIsIDB4MjBhMywgMHgwMDAwLCAweDdhMDgsIDB4MjJhMiwgMHg3ODEwLCAweDIwYTIsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwMmUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZjYsIDB4NjAwNCwKLQkweGEwOGEsIDB4MDA4NSwgMHgwYTBjLCAweDE1MWEsIDB4YTA4YSwgMHgwMDhjLCAweDFhMGMsIDB4MTUxYSwKLQkweDYxMTgsIDB4MjE3OCwgMHg3OWEwLCAweDIwMTEsIDB4YjYzNSwgMHgyMjE0LCAweGQyYWMsIDB4MTExMCwKLQkweGQxYmMsIDB4MDE1MCwgMHg3OTAwLCAweGQxZjQsIDB4MDEyMCwgMHg3OTE0LCAweGExOGMsIDB4MDBmZiwKLQkweDAwNDAsIDB4MjAwOSwgMHgwMDAwLCAweDAwMjgsIDB4YTFmOCwgMHgyZGY5LCAweDJmMGQsIDB4YTE4YywKLQkweDAwZmYsIDB4MmM3OCwgMHgyMDYxLCAweDAxMDAsIDB4NjE5YSwgMHhhMDgyLCAweDAwODUsIDB4MDAxYiwKLQkweDAwZmUsIDB4MDBjZSwgMHgwMDA1LCAweDc3ZWMsIDB4NzdmNiwgMHg3ODExLCAweDc3ZWEsIDB4NzdlYSwKLQkweDc3ZWEsIDB4NzdlYywgMHgwODBjLCAweDE1MWEsIDB4MDE0NiwgMHgyMGExLCAweDAyMGIsIDB4MDRhMSwKLQkweDYwYzMsIDB4MDAwMCwgMHgwODBjLCAweDdkZTAsIDB4MDE0ZSwgMHgwMDA1LCAweDAxNDYsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3ODVkLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgwOCwKLQkweDIwYTIsIDB4NzgxMCwgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweGZmZmYsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwYywgMHgwODBjLCAweDdkZTAsIDB4MDE0ZSwKLQkweDAwMDUsIDB4MDE0NiwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywgMHg3ODk3LCAweDIwYTMsIDB4MDAwMywKLQkweDIwYTMsIDB4MDMwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwNCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMTRlLCAweDAwMDUsIDB4MDAyNiwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHgyMDExLCAweGI2MzUsIDB4MjIxNCwKLQkweGQyYWMsIDB4MTExOCwgMHhhMDkyLCAweDAwN2UsIDB4MDI4OCwgMHgwMGQ2LCAweGEwZTgsIDB4YjczNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDgxMDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MjA2OSwKLQkweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwgMHgwMDg4LCAweDAwZDYsIDB4YTBlOCwKLQkweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4ODEwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDAwZGUsIDB4MjBhMywgMHgwMDAwLCAweDIwMTEsIDB4YjYxNSwgMHgyMjE0LCAweDIyYTIsIDB4MjBhMywKLQkweDAwMDksIDB4MjBhMywgMHgwMDAwLCAweDA4MDQsIDB4NzcxYSwgMHgwMDI2LCAweDIwZTEsIDB4OTA4MCwKLQkweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweDIwMTEsIDB4YjYzNSwKLQkweDIyMTQsIDB4ZDJhYywgMHgxMTE4LCAweGEwOTIsIDB4MDA3ZSwgMHgwMjg4LCAweDAwZDYsIDB4YTBlOCwKLQkweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4ODQwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDIwNjksIDB4YjYxYywgMHgyZGE2LCAweDhkNjgsIDB4MmRhNiwgMHgwMGRlLCAweDAwODgsIDB4MDBkNiwKLQkweGEwZTgsIDB4YjczNSwgMHgyZDZjLCAweDY4MTAsIDB4YTA4NSwgMHg4NDAwLCAweDIwYTIsIDB4NjgxNCwKLQkweDIwYTIsIDB4MDBkZSwgMHgyMGEzLCAweDAwMDAsIDB4MjAxMSwgMHhiNjE1LCAweDIyMTQsIDB4MjJhMiwKLQkweDIwMDEsIDB4MDA5OSwgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwgMHgwODA0LCAweDc3YTYsIDB4MDAyNiwKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwKLQkweDIwMTEsIDB4YjYzNSwgMHgyMjE0LCAweGQyYWMsIDB4MTExOCwgMHhhMDkyLCAweDAwN2UsIDB4MDI4OCwKLQkweDAwZDYsIDB4YTBlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDg1MDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwKLQkweDAwODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4ODUwMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDAwZGUsIDB4MjBhMywgMHgwMDAwLCAweDIwMTEsIDB4YjYxNSwKLQkweDIyMTQsIDB4MjJhMiwgMHgyMDAxLCAweDAwOTksIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4MDgwNCwKLQkweDc3YTYsIDB4MDBjNiwgMHgwMGY2LCAweDJjNzgsIDB4NzgwNCwgMHhhMDhhLCAweDAwNDAsIDB4MGEwYywKLQkweDE1MWEsIDB4YTA4YSwgMHgwMDUzLCAweDFhMGMsIDB4MTUxYSwgMHg3OTE4LCAweDIxNjAsIDB4NjFhMCwKLQkweDIwMTEsIDB4YjYzNSwgMHgyMjE0LCAweGQyYWMsIDB4MTExMCwgMHhkMWJjLCAweDAxNTAsIDB4NjEwMCwKLQkweGQxZjQsIDB4MDEyMCwgMHg2MTE0LCAweGExOGMsIDB4MDBmZiwgMHgwMDQwLCAweDIwMDksIDB4MDAwMCwKLQkweDAwMjgsIDB4YTFlMCwgMHgyZGY5LCAweDJjMGQsIDB4YTE4YywgMHgwMGZmLCAweDIwNjEsIDB4MDEwMCwKLQkweDYxOWEsIDB4YTA4MiwgMHgwMDQwLCAweDAwMWIsIDB4MDBmZSwgMHgwMGNlLCAweDAwMDUsIDB4NzkxNCwKLQkweDdhMjAsIDB4NzliZCwgMHg3YmQyLCAweDc5MTIsIDB4NzkxMiwgMHg3OTEyLCAweDc5MTIsIDB4NzkxMiwKLQkweDc5MTIsIDB4NzkxMiwgMHg4MTVlLCAweDgxNmUsIDB4ODE3ZSwgMHg4MThlLCAweDc5MTIsIDB4ODVhNSwKLQkweDc5MTIsIDB4ODE0ZCwgMHgwODBjLCAweDE1MWEsIDB4MDBkNiwgMHgwMTU2LCAweDAxNDYsIDB4NzgwYiwKLQkweGZmZmYsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4Nzk3NCwgMHg3OTEwLCAweDIxNjgsIDB4Njk0OCwKLQkweDc5NTIsIDB4MjFhMiwgMHhhMDE2LCAweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDY5NGMsIDB4YTE4NCwKLQkweDAwMGYsIDB4MTExOCwgMHgyMDAxLCAweDAwMDUsIDB4MDA0MCwgMHhkMTg0LCAweDAxMTgsIDB4MjAwMSwKLQkweDAwMDQsIDB4MDAxOCwgMHhhMDg0LCAweDAwMDYsIDB4ODAwNCwgMHgwMDE2LCAweDIwMDgsIDB4Nzg1OCwKLQkweGEwODQsIDB4MDBmZiwgMHg4MDA3LCAweGExMDUsIDB4MDAxZSwgMHgyMGEyLCAweGQxYWMsIDB4MDExOCwKLQkweDIwYTMsIDB4MDAwMiwgMHgwMDQ4LCAweGQxYjQsIDB4MDExOCwgMHgyMGEzLCAweDAwMDEsIDB4MDAyMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMjMwLCAweDAwMTAsIDB4NmE4MCwgMHg2ZTdjLCAweDIwYTksIDB4MDAwOCwKLQkweDAxMzYsIDB4YWQ4OCwgMHgwMDE3LCAweDIxOTgsIDB4MjBhMSwgMHgwMjFiLCAweDUzYTYsIDB4MDEzZSwKLQkweDIwYTEsIDB4MDIwYiwgMHgyMmEyLCAweDI2YTIsIDB4NjBjMywgMHgwMDIwLCAweDIwZTEsIDB4OTA4MCwKLQkweDYwMTQsIDB4YTA4NCwgMHgwMDA0LCAweGEwODUsIDB4MDAwOSwgMHg2MDE2LCAweDIwMDEsIDB4YjhmZCwKLQkweDIwMDMsIDB4MDdkMCwgMHgyMDAxLCAweGI4ZmMsIDB4MjAwMywgMHgwMDA5LCAweDA4MGMsIDB4MTdlNywKLQkweDAxNGUsIDB4MDE1ZSwgMHgwMGRlLCAweDAwMDUsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwKLQkweDdhMTgsIDB4YTI4MCwgMHgwMDIzLCAweDIwMTQsIDB4ODIxMCwgMHhhMjk0LCAweDAwZmYsIDB4MjIwMiwKLQkweDgyMTcsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHgyMDE5LCAweGI2MzUsIDB4MjMxYywKLQkweGQzYWMsIDB4MTExMCwgMHhkMGJjLCAweDAxODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwNjAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YjYxYywKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDAwZGUsIDB4MDA4OCwgMHgwMGQ2LCAweGEwZTgsIDB4YjczNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDA2MDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MDBkZSwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMDA5LCAweGI2MTUsIDB4MjEwYywgMHgyMWEyLCAweDIwYTMsIDB4MDgyOSwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMmEyLCAweDIwYTMsIDB4MDAwMCwgMHgyZmEyLCAweDIwYTMsIDB4ZmZmZiwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4MDAwNSwgMHgwMGQ2LCAweDAxNTYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MjBhMSwgMHgwMjBiLCAweDAwYzEsIDB4NzgxMCwgMHgyMDY4LCAweDY4NjAsIDB4MjBhMiwKLQkweDY4NWMsIDB4MjBhMiwgMHg2ODgwLCAweDIwYTIsIDB4Njg3YywgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDYwYzMsIDB4MDAwYywgMHgwODBjLCAweDdkZTAsIDB4MDE0ZSwKLQkweDAxM2UsIDB4MDE1ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAyNiwgMHgyMGUxLCAweDkwODAsIDB4MjBlMSwKLQkweDQwMDAsIDB4NzgxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHgyMDExLCAweGI2MzUsIDB4MjIxNCwKLQkweGQyYWMsIDB4MTExMCwgMHhkMGJjLCAweDAxODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4YTA4NSwgMHgwNTAwLCAweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDIwNjksIDB4YjYxYywKLQkweDJkYTYsIDB4OGQ2OCwgMHgyZGE2LCAweDAwZGUsIDB4MDA4OCwgMHgwMGQ2LCAweGEwZTgsIDB4YjczNSwKLQkweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDA1MDAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MDBkZSwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMDExLCAweGI2MTUsIDB4MjIxNCwgMHgyMmEyLCAweDIwYTMsIDB4MDg4OSwKLQkweDIwYTMsIDB4MDAwMCwgMHgwODBjLCAweDdkY2YsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4N2EwOCwKLQkweDIyYTIsIDB4MmZhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwMmUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4NzgxMCwgMHhhMGVjLCAweGYwMDAsIDB4MDE2OCwKLQkweGEwNmQsIDB4MDgwYywgMHg1MzczLCAweDAxNDgsIDB4Njg0YywgMHhhMDg0LCAweDIwMjAsIDB4YTA4NiwKLQkweDIwMjAsIDB4MTExOCwgMHg3ODIwLCAweGMwY2QsIDB4NzgyMiwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDdiODgsIDB4YTAxNiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4NzgxMCwKLQkweGEwODQsIDB4ZjAwMCwgMHgxMTMwLCAweDc4MTAsIDB4YTA4NCwgMHgwNzAwLCAweDgwMDcsIDB4MDA0MywKLQkweDAwMTAsIDB4YTAwNiwgMHgwMDJiLCAweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDAwZGUsIDB4MDAwNSwKLQkweDdhNWEsIDB4N2FlZiwgMHg3YWZmLCAweDdiMzEsIDB4N2I0NCwgMHg3YjVmLCAweDdiNjgsIDB4N2E1OCwKLQkweDA4MGMsIDB4MTUxYSwgMHgwMDE2LCAweDAwMzYsIDB4Njk0YywgMHhhMThjLCAweDAwMDMsIDB4MDExOCwKLQkweGExODYsIDB4MDAwMywgMHgxMTcwLCAweDZiNzgsIDB4NzgyMCwgMHhkMGNjLCAweDAxMDgsIDB4YzNlNSwKLQkweDIzYTIsIDB4Njg2OCwgMHgyMGEyLCAweDY4NjQsIDB4MjBhMiwgMHgwMDNlLCAweDAwMWUsIDB4MDgwNCwKLQkweDdiM2IsIDB4YTE4NiwgMHgwMDAxLCAweDE5MGMsIDB4MTUxYSwgMHg2Yjc4LCAweDc4MjAsIDB4ZDBjYywKLQkweDAxMDgsIDB4YzNlNSwgMHgyM2EyLCAweDY4NjgsIDB4MjBhMiwgMHg2ODY0LCAweDIwYTIsIDB4MjJhMiwKLQkweDY4NzQsIDB4MjBhMiwgMHgyMmEyLCAweDY4N2MsIDB4MjBhMiwgMHgyMDA5LCAweDAwMTgsIDB4YTM4NCwKLQkweDAzMDAsIDB4MDkwNCwgMHg3YWU5LCAweGQzYzQsIDB4MDExMCwgMHg2ODdjLCAweGExMDgsIDB4ZDNjYywKLQkweDAxMTAsIDB4Njg3NCwgMHhhMTA4LCAweDAxNTYsIDB4MjBhOSwgMHgwMDBkLCAweGFkODAsIDB4MDAyMCwKLQkweDIwMWMsIDB4ODMxZiwgMHgyM2EyLCAweDgwMDAsIDB4MWYwNCwgMHg3YTk4LCAweDAxNWUsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHhhMTg0LCAweDAwMDMsIDB4MDkwNCwgMHg3YWU5LCAweDIwYTEsIDB4MDIwYiwKLQkweDIwZTEsIDB4OTA4MCwgMHgyMGUxLCAweDQwMDAsIDB4MDAwNiwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4MjAxMSwgMHhiNjM1LCAweDIyMTQsIDB4ZDJhYywgMHgxMTEwLCAweGQwYmMsIDB4MDE4OCwKLQkweDAwZDYsIDB4YTBlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDA3MDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwKLQkweDAwODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDcwMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDAwZGUsIDB4MjBhMywgMHgwMDAwLCAweDIwMTEsIDB4YjYxNSwKLQkweDIyMTQsIDB4MjJhMiwgMHgwMDBlLCAweDdiMjAsIDB4ZDNjYywgMHgwMTE4LCAweDIwYTMsIDB4MDg4OSwKLQkweDAwMTAsIDB4MjBhMywgMHgwODk4LCAweDIwYTIsIDB4MDgwYywgMHg3ZGNmLCAweDIyYTIsIDB4MjBhMywKLQkweDAwMDAsIDB4NjFjMiwgMHgwMDNlLCAweDAwMWUsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjAxMSwKLQkweDAwMDgsIDB4MjAwMSwgMHhiNjBkLCAweDIwMDQsIDB4ZDBmNCwgMHgwMTEwLCAweDIwMTEsIDB4MDAyOCwKLQkweDc4MjAsIDB4ZDBjYywgMHgwMTA4LCAweGMyZTUsIDB4MjJhMiwgMHhhMDE2LCAweDA0ZDAsIDB4MjAxMSwKLQkweDAzMDIsIDB4MDAxNiwgMHgwMDM2LCAweDc4MjgsIDB4NzkyYywgMHhhMTFkLCAweDAxMDgsIDB4YzJkZCwKLQkweDdiMjAsIDB4ZDNjYywgMHgwMTA4LCAweGMyZTUsIDB4MjJhMiwgMHgyMGEyLCAweDIxYTIsIDB4MDAzZSwKLQkweDAwMWUsIDB4YTAxNiwgMHgyMmEyLCAweDIwYTMsIDB4MDAxMiwgMHgyMmEyLCAweDIwYTMsIDB4MDAwOCwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjBhMywgMHg3MDAwLCAweDIwYTMsIDB4MDUwMCwKLQkweDIyYTIsIDB4MjBhMywgMHgwMDBhLCAweDIyYTIsIDB4MjJhMiwgMHgyMGEzLCAweDI1MDAsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4NjBjMywgMHgwMDMyLCAweDA4MGMsIDB4N2RlMCwKLQkweDAwMDUsIDB4MjAxMSwgMHgwMDI4LCAweDc4MjAsIDB4ZDBjYywgMHgwMTA4LCAweGMyZTUsIDB4MjJhMiwKLQkweGEwMTYsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4NjBjMywKLQkweDAwMTgsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjAxMSwgMHgwMTAwLCAweDc4MjAsIDB4ZDBjYywKLQkweDAxMDgsIDB4YzJlNSwgMHgyMmEyLCAweGEwMTYsIDB4MjJhMiwgMHgyMmEyLCAweDIyYTIsIDB4MjJhMiwKLQkweDIyYTIsIDB4MjBhMywgMHgwMDA4LCAweDIyYTIsIDB4Nzg1NCwgMHhhMDg0LCAweDAwZmYsIDB4MjBhMiwKLQkweDIyYTIsIDB4MjJhMiwgMHg2MGMzLCAweDAwMjAsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjAxMSwKLQkweDAwMDgsIDB4NzgyMCwgMHhkMGNjLCAweDAxMDgsIDB4YzJlNSwgMHgyMmEyLCAweGEwMTYsIDB4MDg4OCwKLQkweDAwMzYsIDB4N2IxMCwgMHhhMzg0LCAweGZmMDAsIDB4NzgxMiwgMHhhMzg0LCAweDAwZmYsIDB4ODAwMSwKLQkweDExMzgsIDB4NzgyMCwgMHhkMGNjLCAweDAxMDgsIDB4YzJlNSwgMHgyMmEyLCAweDAwM2UsIDB4MDgwOCwKLQkweDAwNDYsIDB4MjAyMSwgMHgwODAwLCAweDAwMDYsIDB4NzgyMCwgMHhkMGNjLCAweDAwMGUsIDB4MDEwOCwKLQkweGM0ZTUsIDB4MjRhMiwgMHgwMDRlLCAweDIyYTIsIDB4MjBhMiwgMHgwMDNlLCAweDA4MDQsIDB4N2IzYiwKLQkweDAwMjYsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4MjAxMSwgMHhiNjM1LCAweDIyMTQsIDB4ZDJhYywgMHgxMTEwLCAweGQwYmMsIDB4MDE4OCwKLQkweDAwZDYsIDB4YTBlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDA3MDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwKLQkweDAwODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDcwMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDAwZGUsIDB4MjBhMywgMHgwMDAwLCAweDIwMTEsIDB4YjYxNSwKLQkweDIyMTQsIDB4MjJhMiwgMHg3ODIwLCAweGQwY2MsIDB4MDExOCwgMHgyMGEzLCAweDA4ODksIDB4MDAxMCwKLQkweDIwYTMsIDB4MDg5OCwgMHgyMGEzLCAweDAwMDAsIDB4MDgwYywgMHg3ZGNmLCAweDIyYTIsIDB4MjBhMywKLQkweDAwMDAsIDB4N2EwOCwgMHgyMmEyLCAweDJmYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDAwMmUsIDB4MDAwNSwgMHgwMGQ2LCAweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDAwMTYsIDB4MDAzNiwKLQkweDc4MTAsIDB4YTA4NCwgMHgwNzAwLCAweDgwMDcsIDB4MDAzYiwgMHgwMDNlLCAweDAwMWUsIDB4MDE0ZSwKLQkweDAxM2UsIDB4MDE1ZSwgMHgwMGRlLCAweDAwMDUsIDB4N2JlYywgMHg3YmVjLCAweDdiZWUsIDB4N2JlYywKLQkweDdiZWMsIDB4N2JlYywgMHg3YzEwLCAweDdiZWMsIDB4MDgwYywgMHgxNTFhLCAweDc5MTAsIDB4YTE4YywKLQkweGY4ZmYsIDB4YTE4ZCwgMHgwNjAwLCAweDc5MTIsIDB4MjBhMSwgMHgwMjBiLCAweDIwMDksIDB4MDAwMywKLQkweDAwZjksIDB4MDBkNiwgMHgyMDY5LCAweGI2NTIsIDB4NjgwNCwgMHhkMGJjLCAweDAxMzAsIDB4NjgyYywKLQkweGEwODQsIDB4MDBmZiwgMHg4MDA3LCAweDIwYTIsIDB4MDAxMCwgMHgyMGEzLCAweDNmMDAsIDB4MDBkZSwKLQkweDIyYTIsIDB4MjJhMiwgMHgyMmEyLCAweDYwYzMsIDB4MDAwMSwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwKLQkweDIwYTEsIDB4MDIwYiwgMHgyMDA5LCAweDAwMDMsIDB4MDAxOSwgMHgyMGEzLCAweDdmMDAsIDB4MGM4MCwKLQkweDAwMjYsIDB4MjBlMSwgMHg5MDgwLCAweDIwZTEsIDB4NDAwMCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMDQsIDB4MjAxMSwgMHhiNjM1LCAweDIyMTQsIDB4ZDJhYywgMHgxMTEwLCAweGQwYmMsIDB4MDE4OCwKLQkweDAwZDYsIDB4YTBlOCwgMHhiNzM1LCAweDJkNmMsIDB4NjgxMCwgMHhhMDg1LCAweDAxMDAsIDB4MjBhMiwKLQkweDY4MTQsIDB4MjBhMiwgMHgyMDY5LCAweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwKLQkweDAwODgsIDB4MDBkNiwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDEwMCwKLQkweDIwYTIsIDB4NjgxNCwgMHgyMGEyLCAweDAwZGUsIDB4MjBhMywgMHgwMDAwLCAweDIwMTEsIDB4YjYxNSwKLQkweDIyMTQsIDB4MjJhMiwgMHgyMGEzLCAweDA4ODgsIDB4YTE4ZCwgMHgwMDA4LCAweDIxYTIsIDB4MDgwYywKLQkweDdkY2YsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4N2EwOCwgMHgyMmEyLCAweDJmYTIsIDB4MjBhMywKLQkweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwKLQkweDAwNTYsIDB4MDA0NiwgMHgwMDM2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweGI2MDAsIDB4NzE1NCwKLQkweDc4MTgsIDB4MjA2OCwgMHg2OGEwLCAweDIwMjgsIDB4NzZkNCwgMHhkNmFjLCAweDExMzAsIDB4ZDBiYywKLQkweDExMjAsIDB4NjkxMCwgMHg2YTE0LCAweDc0NTQsIDB4MDAyMCwgMHg2OTEwLCAweDZhMTQsIDB4NzM3MCwKLQkweDc0NzQsIDB4NzgxYywgMHhhMGJlLCAweDAwMDYsIDB4MDkwNCwgMHg3ZDFhLCAweGEwYmUsIDB4MDAwYSwKLQkweDE1ZTgsIDB4YTE4NSwgMHgwMjAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MzZhLCAweDY0NmUsIDB4NjA3MywKLQkweDIwMjksIDB4NjA3NywgMHgwMDAwLCAweDY4OGMsIDB4ODAwMCwgMHhhMDg0LCAweDAwZmYsIDB4Njg4ZSwKLQkweDgwMDcsIDB4NjA3YSwgMHg2MDdmLCAweDAwMDAsIDB4MmYwMCwgMHg2MDgyLCAweDc4MDgsIDB4NjA4NiwKLQkweDc4MTAsIDB4MjA3MCwgMHg3MDE0LCAweDYwOGEsIDB4NzAxMCwgMHg2MDhlLCAweDcwMGMsIDB4NjBjNiwKLQkweDcwMDgsIDB4NjBjYSwgMHg2ODZjLCAweDYwY2UsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsIDB4MDAwMCwKLQkweDYwOWYsIDB4MDAwMCwgMHgwODBjLCAweDg2NDAsIDB4MjAwOSwgMHgwN2QwLCAweDYwYzQsIDB4YTA4NCwKLQkweGZmZjAsIDB4YTAwNSwgMHgwMTEwLCAweDIwMDksIDB4MWI1OCwgMHgwODBjLCAweDZhODcsIDB4MDAzZSwKLQkweDAwNGUsIDB4MDA1ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDcwZDQsIDB4ZDBhYywKLQkweDExMTAsIDB4ZDViYywgMHgwMTM4LCAweGExODUsIDB4MDEwMCwgMHg2MDYyLCAweDYyNjYsIDB4NjM2YSwKLQkweDY0NmUsIDB4MDAzOCwgMHhhMTg1LCAweDAxMDAsIDB4NjA2MiwgMHg2MjY2LCAweDYwNmIsIDB4MDAwMCwKLQkweDY0NmUsIDB4NjA3MywgMHgwODA5LCAweDYwNzcsIDB4MDAwOCwgMHg2ODhjLCAweDgwMDAsIDB4YTA4NCwKLQkweDAwZmYsIDB4Njg4ZSwgMHg4MDA3LCAweDYwN2EsIDB4NjA3ZiwgMHgwMDAwLCAweDJmMDAsIDB4NjA4MiwKLQkweDc4MDgsIDB4NjA4NiwgMHg3ODEwLCAweDIwNzAsIDB4NzAxNCwgMHg2MDhhLCAweDcwMTAsIDB4NjA4ZSwKLQkweDcwMGMsIDB4NjBjNiwgMHg3MDA4LCAweDYwY2EsIDB4NzkyYywgMHhhMTA4LCAweDc5MmUsIDB4NzAwYywKLQkweDc5MjgsIDB4YTEwOSwgMHg3OTJhLCAweDY4NmMsIDB4NjBjZSwgMHg2MGFmLCAweDk1ZDUsIDB4NjBkNywKLQkweDAwMDAsIDB4YTU4MiwgMHgwMDgwLCAweDAyNDgsIDB4NmEwMCwgMHhkMmY0LCAweDAxMjAsIDB4NmExNCwKLQkweGEyOTQsIDB4MDBmZiwgMHgwMDEwLCAweDIwMTEsIDB4MDAwMCwgMHg2MjllLCAweDA4MGMsIDB4ODY0MCwKLQkweDIwMDksIDB4MDdkMCwgMHg2MGM0LCAweGEwODQsIDB4ZmZmMCwgMHhhMDA1LCAweDAxMTAsIDB4MjAwOSwKLQkweDFiNTgsIDB4MDgwYywgMHg2YTg3LCAweDAwM2UsIDB4MDA0ZSwgMHgwMDVlLCAweDAwY2UsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3ODEwLCAweDIwNzAsIDB4NzA0YywgMHhhMDg0LCAweDAwMDMsIDB4YTA4NiwKLQkweDAwMDIsIDB4MDkwNCwgMHg3ZDcwLCAweDIwMDEsIDB4YjYzNSwgMHgyMDA0LCAweGQwYWMsIDB4MTExMCwKLQkweGQ1YmMsIDB4MDEzOCwgMHhhMTg1LCAweDAxMDAsIDB4NjA2MiwgMHg2MjY2LCAweDYzNmEsIDB4NjQ2ZSwKLQkweDAwMzgsIDB4YTE4NSwgMHgwMTAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MDZiLCAweDAwMDAsIDB4NjQ2ZSwKLQkweDYwNzMsIDB4MDg4MCwgMHg2MDc3LCAweDAwMDgsIDB4Njg4YywgMHg4MDAwLCAweGEwODQsIDB4MDBmZiwKLQkweDY4OGUsIDB4ODAwNywgMHg2MDdhLCAweDc4MzQsIDB4NjA3ZSwgMHgyZjAwLCAweDYwODYsIDB4NzgwOCwKLQkweDYwODIsIDB4NzA2MCwgMHg2MDhhLCAweDcwNWMsIDB4NjA4ZSwgMHg3MDgwLCAweDYwYzYsIDB4NzA3YywKLQkweDYwY2EsIDB4NzA3YywgMHg3OTJjLCAweGExMDgsIDB4NzkyZSwgMHg3MDgwLCAweDc5MjgsIDB4YTEwOSwKLQkweDc5MmEsIDB4Njg2YywgMHg2MGNlLCAweDYwYWYsIDB4OTVkNSwgMHg2MGQ3LCAweDAwMDAsIDB4YTU4MiwKLQkweDAwODAsIDB4MDI0OCwgMHg2YTAwLCAweGQyZjQsIDB4MDEyMCwgMHg2YTE0LCAweGEyOTQsIDB4MDBmZiwKLQkweDAwMTAsIDB4MjAxMSwgMHgwMDAwLCAweDYyOWUsIDB4MDgwYywgMHg4NjNkLCAweDA4MDQsIDB4N2QwOCwKLQkweDIwMDEsIDB4YjYzNSwgMHgyMDA0LCAweGQwYWMsIDB4MTExMCwgMHhkNWJjLCAweDAxMzgsIDB4YTE4NSwKLQkweDA3MDAsIDB4NjA2MiwgMHg2MjY2LCAweDYzNmEsIDB4NjQ2ZSwgMHgwMDM4LCAweGExODUsIDB4MDcwMCwKLQkweDYwNjIsIDB4NjI2NiwgMHg2MDZiLCAweDAwMDAsIDB4NjQ2ZSwgMHgwODBjLCAweDUzNzMsIDB4MDE4MCwKLQkweDAwZDYsIDB4NzgxMCwgMHhhMDZkLCAweDY4NGMsIDB4MDBkZSwgMHhhMDg0LCAweDIwMjAsIDB4YTA4NiwKLQkweDIwMjAsIDB4MTEzMCwgMHg3ODIwLCAweGMwY2QsIDB4NzgyMiwgMHg2MDczLCAweDA4ODksIDB4MDAxMCwKLQkweDYwNzMsIDB4MDg5OCwgMHg2MDc3LCAweDAwMDAsIDB4Njg4YywgMHg4MDAwLCAweGEwODQsIDB4MDBmZiwKLQkweDY4OGUsIDB4ODAwNywgMHg2MDdhLCAweDYwN2YsIDB4MDAwMCwgMHgyZjAwLCAweDYwODYsIDB4NzgwOCwKLQkweDYwODIsIDB4NzAxNCwgMHg2MDhhLCAweDcwMTAsIDB4NjA4ZSwgMHg3MDBjLCAweDYwYzYsIDB4NzAwOCwKLQkweDYwY2EsIDB4Njg2YywgMHg2MGNlLCAweDYwYWYsIDB4OTVkNSwgMHg2MGQ3LCAweDAwMDAsIDB4YTU4MiwKLQkweDAwODAsIDB4MDI0OCwgMHg2YTAwLCAweGQyZjQsIDB4MDEyMCwgMHg2YTE0LCAweGEyOTQsIDB4MDBmZiwKLQkweDAwMTAsIDB4MjAxMSwgMHgwMDAwLCAweDYyOWUsIDB4NzgyMCwgMHhkMGNjLCAweDAxMjAsIDB4MDgwYywKLQkweDg2NDAsIDB4MDgwNCwgMHg3ZDA4LCAweDA4MGMsIDB4ODYzZCwgMHgwODA0LCAweDdkMDgsIDB4N2ExOCwKLQkweGEyODAsIDB4MDAyMywgMHgyMDE0LCAweDgyMTAsIDB4YTI5NCwgMHgwMGZmLCAweDIyMDIsIDB4ODIxNywKLQkweDAwMDUsIDB4MDBkNiwgMHgyMDY5LCAweGI4ZTEsIDB4Njg0MywgMHgwMDAxLCAweDAwZGUsIDB4MDAwNSwKLQkweDIwZTEsIDB4OTA4MCwgMHg2MGEzLCAweDAwNTYsIDB4NjBhNywgMHg5NTc1LCAweDAwMTksIDB4MDgwYywKLQkweDZhNzksIDB4MDAwNSwgMHgwMDA2LCAweDYwMTQsIDB4YTA4NCwgMHgwMDA0LCAweGEwODUsIDB4MDAwOSwKLQkweDYwMTYsIDB4MDAwZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwgMHgwMDA2LCAweDIwNjEsIDB4MDEwMCwKLQkweDYxYTQsIDB4NjBhNywgMHg5NWY1LCAweDYwMTQsIDB4YTA4NCwgMHgwMDA0LCAweGEwODUsIDB4MDAwOCwKLQkweDYwMTYsIDB4MDAwZSwgMHhlMDAwLCAweGUwMDAsIDB4ZTAwMCwgMHhlMDAwLCAweDYxYTYsIDB4MDBjZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDAxNiwgMHgwMDI2LCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNjksIDB4MDE0MCwgMHgwODBjLCAweDViNDEsIDB4MTE5OCwgMHgyMDAxLCAweGI4ZmQsIDB4MjAwNCwKLQkweGEwMDUsIDB4MTViOCwgMHgwMDY2LCAweDIwMzEsIDB4MDAwMSwgMHgwODBjLCAweDViYzMsIDB4MDA2ZSwKLQkweDExMTgsIDB4MDgwYywgMHg2YTc5LCAweDA0NjgsIDB4MDBjNiwgMHgyMDYxLCAweGI4ZTEsIDB4MDBkOCwKLQkweDY5MDQsIDB4YTE5NCwgMHg0MDAwLCAweDA1NTAsIDB4MDgzMSwgMHg2ODAzLCAweDEwMDAsIDB4NjgwMywKLQkweDAwMDAsIDB4MDBjNiwgMHgyMDYxLCAweGI4ZTEsIDB4NjEyOCwgMHhhMTkyLCAweDAwYzgsIDB4MTI1OCwKLQkweDgxMDgsIDB4NjEyYSwgMHg2MTI0LCAweDAwY2UsIDB4ODFmZiwgMHgwMTk4LCAweDA4MGMsIDB4NmE3OSwKLQkweDA4MGMsIDB4N2RlYSwgMHgwMDcwLCAweDYxMjQsIDB4YTFlNSwgMHgwMDAwLCAweDAxNDAsIDB4MDgwYywKLQkweGI1MDAsIDB4MDgwYywgMHg2YTgyLCAweDIwMDksIDB4MDAxNCwgMHgwODBjLCAweDg2ZDMsIDB4MDBjZSwKLQkweDAwMDAsIDB4MDAyZSwgMHgwMDFlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDIwMDEsIDB4YjhmZCwKLQkweDIwMDQsIDB4YTAwNSwgMHgxZGIwLCAweDAwYzYsIDB4MjA2MSwgMHhiOGUxLCAweDYxMjgsIDB4YTE5MiwKLQkweDAwMDMsIDB4MWUwOCwgMHg4MTA4LCAweDYxMmEsIDB4MDBjZSwgMHgwODBjLCAweDZhNzksIDB4MDgwYywKLQkweDRiN2IsIDB4MGMzOCwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMDE2LCAweDAwMjYsIDB4MDgwYywKLQkweDZhOGYsIDB4MjA3MSwgMHhiOGUxLCAweDcxM2MsIDB4ODFmZiwgMHgwNTkwLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNjksIDB4MDE0MCwgMHgwODBjLCAweDViNDEsIDB4MTFhOCwgMHgwMDM2LCAweDIwMTksIDB4MDAwMiwKLQkweDA4MGMsIDB4ODA2YiwgMHgwMDNlLCAweDcxM2MsIDB4MjE2MCwgMHgwODBjLCAweGI1MDAsIDB4MjAwOSwKLQkweDAwNGEsIDB4MDgwYywgMHg4NmQzLCAweDAwNjYsIDB4MjAzMSwgMHgwMDAxLCAweDA4MGMsIDB4NWJjMywKLQkweDAwNmUsIDB4MDBiMCwgMHg2OTA0LCAweGExOTQsIDB4NDAwMCwgMHgwMWMwLCAweDY4MDMsIDB4MTAwMCwKLQkweDY4MDMsIDB4MDAwMCwgMHgwMDM2LCAweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweDgwNmIsIDB4MDAzZSwKLQkweDcxM2MsIDB4MjE2MCwgMHgwODBjLCAweGI1MDAsIDB4MjAwOSwgMHgwMDRhLCAweDA4MGMsIDB4ODZkMywKLQkweDAwMmUsIDB4MDAxZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDBjNTgsIDB4MDAyNiwKLQkweDAwZTYsIDB4MjA3MSwgMHhiOGUxLCAweDcwNDgsIDB4ZDA4NCwgMHgwMWMwLCAweDcxM2MsIDB4ODFmZiwKLQkweDAxYTgsIDB4MjA3MSwgMHgwMTAwLCAweGExODgsIDB4MDAwNywgMHgyMTE0LCAweGEyOGUsIDB4MDAwNiwKLQkweDExMzgsIDB4NzAxNCwgMHhhMDg0LCAweDAxODQsIDB4YTA4NSwgMHgwMDEyLCAweDcwMTYsIDB4MDAzMCwKLQkweDcwMTQsIDB4YTA4NCwgMHgwMTg0LCAweGEwODUsIDB4MDAxNiwgMHg3MDE2LCAweDAwZWUsIDB4MDAyZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwNDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwMTgsIDB4MjA2OCwgMHg2Y2EwLCAweDIwNzEsIDB4YjhlMSwKLQkweDcwMTgsIDB4MjA2OCwgMHg4ZGZmLCAweDAxODgsIDB4NjhhMCwgMHhhNDA2LCAweDAxMTgsIDB4Njg1NCwKLQkweDIwNjgsIDB4MGNjMCwgMHg2MDEwLCAweDIwNjAsIDB4NjQzYywgMHg2NTQwLCAweDY2NDgsIDB4MmQ2MCwKLQkweDA4MGMsIDB4NTE4YywgMHgwMTEwLCAweGEwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwMGUsIDB4MDA0ZSwKLQkweDAwNWUsIDB4MDA2ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDIwYTEsIDB4MDIwYiwKLQkweDA4MGMsIDB4NzZiMywgMHgyMGEzLCAweDEyMDAsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDc4MWMsIDB4YTA4NiwgMHgwMDA0LCAweDExMTAsIDB4NjA5OCwgMHgwMDE4LCAweDIwMDEsIDB4YjYxNSwKLQkweDIwMDQsIDB4MjBhMiwgMHg3ODM0LCAweDIwYTIsIDB4NzgzOCwgMHgyMGEyLCAweDIwYTksIDB4MDAxMCwKLQkweGEwMDYsIDB4MjBhMiwgMHgxZjA0LCAweDdmMTksIDB4MjBhMiwgMHgyMGEyLCAweDYwYzMsIDB4MDAyYywKLQkweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDAxNTYsIDB4MDE0NiwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc2YjMsIDB4MjBhMywgMHgwZjAwLCAweDIwYTMsIDB4MDAwMCwgMHg3ODA4LCAweGQwOWMsIDB4MTE1MCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEyLCAweDYwYzMsIDB4MDAwOCwgMHgwODBjLCAweDdkZTAsIDB4MDE0ZSwKLQkweDAxNWUsIDB4MDAwNSwgMHgwMGQ2LCAweDc4MTgsIDB4YTA2ZCwgMHgwOTBjLCAweDE1MWEsIDB4NjgxMCwKLQkweGEwODQsIDB4MDBmZiwgMHgyMGEyLCAweDY4MTQsIDB4MDBkZSwgMHgwYzYwLCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc3NGYsIDB4MjBhMywgMHgwMjAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTksIDB4MDAwNiwgMHgyMDExLCAweGI2NDAsIDB4MjAxOSwgMHhiNjQxLCAweDIzYTYsIDB4MjJhNiwKLQkweGEzOTgsIDB4MDAwMiwgMHhhMjkwLCAweDAwMDIsIDB4MWYwNCwgMHg3ZjU2LCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMWMsIDB4MDgwYywgMHg3ZGUwLCAweDAxNGUsIDB4MDE1ZSwKLQkweDAwMDUsIDB4MDE1NiwgMHgwMTQ2LCAweDAwMTYsIDB4MDAyNiwgMHgyMGExLCAweDAyMGIsIDB4MDgwYywKLQkweDc3MjgsIDB4MDgwYywgMHg3NzNlLCAweDc4MTAsIDB4YTA4MCwgMHgwMDAwLCAweDIwMDQsIDB4YTA4MCwKLQkweDAwMTUsIDB4MjA5OCwgMHg3ODA4LCAweGEwODgsIDB4MDAwMiwgMHgyMWE4LCAweDUzYTYsIDB4YTA4MCwKLQkweDAwMDQsIDB4ODAwMywgMHg2MGMyLCAweDA4MGMsIDB4N2RlMCwgMHgwMDJlLCAweDAwMWUsIDB4MDE0ZSwKLQkweDAxNWUsIDB4MDAwNSwgMHgwMTU2LCAweDAxNDYsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4NzZiMywKLQkweDIwYTMsIDB4NjIwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDc4MDgsIDB4MjBhMiwKLQkweDYwYzMsIDB4MDAwOCwgMHgwODBjLCAweDdkZTAsIDB4MDE0ZSwgMHgwMTVlLCAweDAwMDUsIDB4MDE1NiwKLQkweDAxNDYsIDB4MDAxNiwgMHgwMDI2LCAweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc2YjMsIDB4NzgxMCwKLQkweGEwODAsIDB4MDAwMCwgMHgyMDA0LCAweGEwODAsIDB4MDAxNywgMHgyMDk4LCAweDc4MDgsIDB4YTA4OCwKLQkweDAwMDIsIDB4MjFhOCwgMHg1M2E2LCAweDgwMDMsIDB4NjBjMiwgMHgwODBjLCAweDdkZTAsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDE0ZSwgMHgwMTVlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGI4ZTEsIDB4NzAwYywgMHgyMDYwLCAweDhjZmYsIDB4MDE3OCwKLQkweDA4MGMsIDB4OWYxNCwgMHgxMTEwLCAweDA4MGMsIDB4OGNhNSwgMHg2MDBjLCAweDAwMDYsIDB4MDgwYywKLQkweGEwZGIsIDB4MDgwYywgMHg4NmE0LCAweDA4MGMsIDB4ODFhNSwgMHgwMGNlLCAweDBjNzgsIDB4NzAwZiwKLQkweDAwMDAsIDB4NzAwYiwgMHgwMDAwLCAweDAxMmUsIDB4MDAwZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MDE1NiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwMjYsIDB4MDAxNiwKLQkweDAwMDYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjksIDB4MDEwMCwgMHgyMDc5LCAweDAxNDAsIDB4MjA3MSwKLQkweGI4ZTEsIDB4NzAyNCwgMHgyMDYwLCAweDhjZmYsIDB4MDVhMCwgMHgwODBjLCAweDdkZjMsIDB4NjhjMywKLQkweDAwMDAsIDB4MDgwYywgMHg2YTgyLCAweDIwMDksIDB4MDAxMywgMHgwODBjLCAweDg2ZDMsIDB4MjBhOSwKLQkweDAxZjQsIDB4NjgyNCwgMHhkMDk0LCAweDAxNTgsIDB4NjgyNywgMHgwMDA0LCAweDc4MDQsIDB4YTA4NCwKLQkweDQwMDAsIDB4MDFhMCwgMHg3ODAzLCAweDEwMDAsIDB4NzgwMywgMHgwMDAwLCAweDAwNzgsIDB4ZDA4NCwKLQkweDAxMTgsIDB4NjgyNywgMHgwMDAxLCAweDAwMTAsIDB4MWYwNCwgMHg4MDAxLCAweDc4MDQsIDB4YTA4NCwKLQkweDEwMDAsIDB4MDEyMCwgMHg3ODAzLCAweDAxMDAsIDB4NzgwMywgMHgwMDAwLCAweDY4MjQsIDB4MDAwZSwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAxNWUsIDB4MDEyZSwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjAwLCAweDIwMDQsIDB4YTA5NiwgMHgwMDAxLCAweDA1OTAsIDB4YTA5NiwKLQkweDAwMDQsIDB4MDU3OCwgMHgwODBjLCAweDZhODIsIDB4NjgxNCwgMHhhMDg0LCAweDAwMDEsIDB4MDExMCwKLQkweDY4YTcsIDB4OTVmNSwgMHg2ODE3LCAweDAwMDgsIDB4NjhjMywgMHgwMDAwLCAweDIwMTEsIDB4NGIyMywKLQkweDA4MGMsIDB4NmEwZSwgMHgyMGE5LCAweDAxZjQsIDB4NjgyNCwgMHhkMDk0LCAweDAxNTgsIDB4NjgyNywKLQkweDAwMDQsIDB4NzgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDFhMCwgMHg3ODAzLCAweDEwMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4MDA3OCwgMHhkMDg0LCAweDAxMTgsIDB4NjgyNywgMHgwMDAxLCAweDAwMTAsIDB4MWYwNCwKLQkweDgwNDQsIDB4NzgwNCwgMHhhMDg0LCAweDEwMDAsIDB4MDEyMCwgMHg3ODAzLCAweDAxMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4MDAwZSwgMHgwMDFlLCAweDAwMmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAxNWUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsIDB4MDE1NiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4MDAyNiwgMHgwMDE2LCAweDAwMDYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjksIDB4MDEwMCwKLQkweDIwNzksIDB4MDE0MCwgMHgyMDcxLCAweGI4ZTEsIDB4NzAzYywgMHgyMDYwLCAweDhjZmYsIDB4MDkwNCwKLQkweDgwZjIsIDB4YTM4NiwgMHgwMDAyLCAweDExMjgsIDB4NjgxNCwgMHhhMDg0LCAweDAwMDIsIDB4MDkwNCwKLQkweDgwZjIsIDB4NjhhZiwgMHg5NWY1LCAweDY4MTcsIDB4MDAxMCwgMHgyMDA5LCAweDAwZmEsIDB4ODEwOSwKLQkweDFkZjAsIDB4NjhjNywgMHgwMDAwLCAweDY4Y2IsIDB4MDAwOCwgMHgwODBjLCAweDZhOGYsIDB4MDgwYywKLQkweDIyMmYsIDB4MDA0NiwgMHgyMDA5LCAweDAxN2YsIDB4MjAwYiwgMHgwMGE1LCAweDIwMjEsIDB4MDE2OSwKLQkweDI0MDQsIDB4YTA4NCwgMHgwMDBmLCAweGEwODYsIDB4MDAwNCwgMHgxNTAwLCAweDY4YWYsIDB4OTVmNSwKLQkweDY4YzcsIDB4MDAwMCwgMHg2OGNiLCAweDAwMDgsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzksIDB4MDAyMCwKLQkweDIwNzEsIDB4Yjk0YiwgMHg2ODE0LCAweGEwODQsIDB4MDE4NCwgMHhhMDg1LCAweDAwMTIsIDB4NjgxNiwKLQkweDc4MDMsIDB4MDAwOCwgMHg3MDAzLCAweDAwMDAsIDB4MDBmZSwgMHgwMGVlLCAweGEzODYsIDB4MDAwMiwKLQkweDExMjgsIDB4Nzg4NCwgMHhhMDA1LCAweDExMTAsIDB4Nzg4NywgMHgwMDAxLCAweDIwMDEsIDB4YjhiMSwKLQkweDIwMDQsIDB4MjAwYSwgMHgwMDRlLCAweGEzOWQsIDB4MDAwMCwgMHgxMTIwLCAweDIwMDksIDB4MDA0OSwKLQkweDA4MGMsIDB4ODZkMywgMHgyMGE5LCAweDAzZTgsIDB4NjgyNCwgMHhkMDk0LCAweDAxNTgsIDB4NjgyNywKLQkweDAwMDQsIDB4NzgwNCwgMHhhMDg0LCAweDQwMDAsIDB4MDFhMCwgMHg3ODAzLCAweDEwMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4MDA3OCwgMHhkMDhjLCAweDAxMTgsIDB4NjgyNywgMHgwMDAyLCAweDAwMTAsIDB4MWYwNCwKLQkweDgwZDQsIDB4NzgwNCwgMHhhMDg0LCAweDEwMDAsIDB4MDEyMCwgMHg3ODAzLCAweDAxMDAsIDB4NzgwMywKLQkweDAwMDAsIDB4NjgyNCwgMHgwMDBlLCAweDAwMWUsIDB4MDAyZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDE1ZSwgMHgwMTJlLCAweDAwMDUsIDB4MDBkNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNjksIDB4YjhlMSwgMHg2YTA2LCAweDAxMmUsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDY5LCAweGI4ZTEsIDB4NmEzMiwgMHgwMTJlLCAweDAwZGUsIDB4MDAwNSwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGM2LCAweDAwNjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwNzEsIDB4YjhlMSwKLQkweDc2MTQsIDB4MjY2MCwgMHgyNjc4LCAweDIwOTEsIDB4ODAwMCwgMHg4Y2ZmLCAweDA1MzgsIDB4NjAxYywKLQkweGEyMDYsIDB4MTUwMCwgMHg3MDE0LCAweGFjMzYsIDB4MTExMCwgMHg2NjBjLCAweDc2MTYsIDB4NzAxMCwKLQkweGFjMzYsIDB4MTE0MCwgMHgyYzAwLCAweGFmMzYsIDB4MDExOCwgMHgyZjAwLCAweDcwMTIsIDB4MDAxMCwKLQkweDcwMTMsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsIDB4MmMwMCwgMHhhZjA2LCAweDAxMTAsIDB4N2UwZSwKLQkweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4MDgwYywgMHg5ZWQ5LCAweDA4MGMsIDB4ODFhNSwKLQkweDAwY2UsIDB4MDhkOCwgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwgMHgwOGI4LCAweDAxMmUsIDB4MDAwZSwKLQkweDAwNmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwMTU2LCAweDAxNDYsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3OTc0LCAweDc4MTAsIDB4MjBhMiwgMHhhMDA2LCAweDIwYTIsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEzLCAweDEwMDAsIDB4MDgwNCwgMHg4MTlkLCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc5NzQsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTMsIDB4NDAwMCwgMHgwNDc4LCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc5NzQsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTMsIDB4MjAwMCwgMHgwMGY4LCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc5NzQsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTMsIDB4MDQwMCwgMHgwMDc4LCAweDAxNTYsIDB4MDE0NiwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc5NzQsIDB4NzgxMCwgMHgyMGEyLCAweGEwMDYsIDB4MjBhMiwKLQkweDIwYTIsIDB4MjBhMiwgMHgyMGEyLCAweDIwYTMsIDB4MDIwMCwgMHgwMDg5LCAweDYwYzMsIDB4MDAyMCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMTRlLCAweDAxNWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4YjhlMSwKLQkweDcwMjAsIDB4YTAwNSwgMHgwMTEwLCAweDgwMDEsIDB4NzAyMiwgMHgwMGVlLCAweDAwMDUsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjBhMiwgMHgxZjA0LCAweDgxYjEsIDB4MjBhMiwgMHgyMGEyLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNzYsIDB4MDA2NiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhiOGUxLCAweDc2MTQsIDB4MjY2MCwgMHgyNjc4LCAweDIwMzksIDB4MDAwMSwKLQkweDg3ZmYsIDB4MDkwNCwgMHg4MjRkLCAweDhjZmYsIDB4MDkwNCwgMHg4MjRkLCAweDYwMWMsIDB4YTA4NiwKLQkweDAwMDYsIDB4MTkwNCwgMHg4MjQ4LCAweDg4ZmYsIDB4MDEzOCwgMHgyODAwLCAweGFjMDYsIDB4MTkwNCwKLQkweDgyNDgsIDB4MjAzOSwgMHgwMDAwLCAweDAwNTAsIDB4NjAxOCwgMHhhMjA2LCAweDE5MDQsIDB4ODI0OCwKLQkweDg1ZmYsIDB4MDEyMCwgMHg2MDUwLCAweGExMDYsIDB4MTkwNCwgMHg4MjQ4LCAweDcwMjQsIDB4YWMwNiwKLQkweDE1OTgsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsIDB4YTAwNSwgMHgxMTYwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxNDgsIDB4NjgyNywgMHgwMDAxLCAweDA4MGMsIDB4NmE4MiwgMHgwODBjLCAweDgyZDQsIDB4NzAyNywKLQkweDAwMDAsIDB4MDQxMCwgMHgwODBjLCAweDZhODIsIDB4NjgyMCwgMHhkMGI0LCAweDAxMTAsIDB4NjhhNywKLQkweDk1ZjUsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweDgyZDQsIDB4NzAyNywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHhhMzg0LCAweDEwMDAsIDB4MDEyMCwKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4NzAxNCwgMHhhYzM2LCAweDExMTAsIDB4NjYwYywKLQkweDc2MTYsIDB4NzAxMCwgMHhhYzM2LCAweDExNDAsIDB4MmMwMCwgMHhhZjM2LCAweDAxMTgsIDB4MmYwMCwKLQkweDcwMTIsIDB4MDAxMCwgMHg3MDEzLCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4YWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4ODlmZiwgMHgxMTU4LCAweDYwMGYsIDB4MDAwMCwKLQkweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDExMCwgMHgwODBjLCAweGIxNTUsIDB4MDgwYywKLQkweDllZDksIDB4MDgwYywgMHg4MWE1LCAweDg4ZmYsIDB4MTE5MCwgMHgwMGNlLCAweDA4MDQsIDB4ODFjOCwKLQkweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDA4MDQsIDB4ODFjOCwgMHhhMDA2LCAweDAxMmUsIDB4MDAwZSwKLQkweDAwNmUsIDB4MDA3ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAxNywKLQkweDAwMDAsIDB4MDBjZSwgMHhhOGM1LCAweDAwMDEsIDB4MGM4OCwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4MDA2NiwgMHgwMDI2LCAweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweGI4ZTEsIDB4NzYzOCwgMHgyNjYwLCAweDI2NzgsIDB4OGNmZiwgMHgwOTA0LCAweDgyYzQsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwNiwgMHgxOTA0LCAweDgyYmYsIDB4ODdmZiwgMHgwMTI4LCAweDI3MDAsIDB4YWMwNiwKLQkweDE5MDQsIDB4ODJiZiwgMHgwMDQ4LCAweDYwMTgsIDB4YTIwNiwgMHgxOTA0LCAweDgyYmYsIDB4ODVmZiwKLQkweDAxMTgsIDB4NjA1MCwgMHhhMTA2LCAweDE1ZDgsIDB4NzAzYywgMHhhYzA2LCAweDExODAsIDB4MDAzNiwKLQkweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweDgwNmIsIDB4NzAzMywgMHgwMDAwLCAweDcwM2YsIDB4MDAwMCwKLQkweDcwNDMsIDB4MDAwMCwgMHg3MDQ3LCAweDAwMDAsIDB4NzA0YiwgMHgwMDAwLCAweDAwM2UsIDB4NzAzOCwKLQkweGFjMzYsIDB4MTExMCwgMHg2NjBjLCAweDc2M2EsIDB4NzAzNCwgMHhhYzM2LCAweDExNDAsIDB4MmMwMCwKLQkweGFmMzYsIDB4MDExOCwgMHgyZjAwLCAweDcwMzYsIDB4MDAxMCwgMHg3MDM3LCAweDAwMDAsIDB4NjYwYywKLQkweDAwNjYsIDB4MmMwMCwgMHhhZjA2LCAweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwKLQkweDAwMDAsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwgMHgwMTEwLCAweDA4MGMsIDB4YjE1NSwKLQkweDA4MGMsIDB4OWVkOSwgMHg4N2ZmLCAweDExOTAsIDB4MDBjZSwgMHgwODA0LCAweDgyNmMsIDB4MmM3OCwKLQkweDYwMGMsIDB4MjA2MCwgMHgwODA0LCAweDgyNmMsIDB4YTAwNiwgMHgwMTJlLCAweDAwMGUsIDB4MDAyZSwKLQkweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDYwMTcsIDB4MDAwMCwKLQkweDAwY2UsIDB4YTdiZCwgMHgwMDAxLCAweDBjODgsIDB4MDBlNiwgMHgyMDcxLCAweGI4ZTEsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDIsIDB4MTExOCwgMHg3MDA3LCAweDAwMDUsIDB4MDAxMCwKLQkweDcwMDcsIDB4MDAwMCwgMHgwMGVlLCAweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDAwYzYsIDB4MDA2NiwKLQkweDAwMjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweGI4ZTEsIDB4MmMxMCwKLQkweDc2MzgsIDB4MjY2MCwgMHgyNjc4LCAweDhjZmYsIDB4MDUxOCwgMHgyMjAwLCAweGFjMDYsIDB4MTFlMCwKLQkweDcwMzgsIDB4YWMzNiwgMHgxMTEwLCAweDY2MGMsIDB4NzYzYSwgMHg3MDM0LCAweGFjMzYsIDB4MTE0MCwKLQkweDJjMDAsIDB4YWYzNiwgMHgwMTE4LCAweDJmMDAsIDB4NzAzNiwgMHgwMDEwLCAweDcwMzcsIDB4MDAwMCwKLQkweDY2MGMsIDB4MmMwMCwgMHhhZjA2LCAweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwKLQkweDAwMDAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMjAsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsIDB4MDhkOCwKLQkweDAxMmUsIDB4MDAwZSwgMHgwMDJlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhiOGUxLCAweDc2MGMsIDB4MjY2MCwgMHgyNjc4LCAweDhjZmYsIDB4MDkwNCwKLQkweDgzYWEsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwgMHhhMjA2LCAweDE5MDQsIDB4ODNhNSwKLQkweDcwMjQsIDB4YWMwNiwgMHgxNTA4LCAweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweGEwMDUsIDB4MDkwNCwKLQkweDgzODEsIDB4MDgwYywgMHg3ZGYzLCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweDgyZDQsIDB4NzAyNywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHhhMzg0LCAweDEwMDAsIDB4MDEyMCwKLQkweDY4MDMsIDB4MDEwMCwgMHg2ODAzLCAweDAwMDAsIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4NzAwYywgMHhhYzM2LCAweDExMTAsIDB4NjYwYywKLQkweDc2MGUsIDB4NzAwOCwgMHhhYzM2LCAweDExNDAsIDB4MmMwMCwgMHhhZjM2LCAweDAxMTgsIDB4MmYwMCwKLQkweDcwMGEsIDB4MDAxMCwgMHg3MDBiLCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4YWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4OWYwMywKLQkweDExNTgsIDB4MDgwYywgMHgyY2Y3LCAweDA4MGMsIDB4OWYxNCwgMHgxMWYwLCAweDA4MGMsIDB4OGNhNSwKLQkweDAwZDgsIDB4MDgwYywgMHg4MmQ0LCAweDA4YzAsIDB4MDgwYywgMHg5ZjE0LCAweDExMTgsIDB4MDgwYywKLQkweDhjYTUsIDB4MDA5MCwgMHg2MDEwLCAweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxNjgsIDB4NjAxYywKLQkweGEwODYsIDB4MDAwMywgMHgxMWY4LCAweDY4MzcsIDB4MDEwMywgMHg2YjRhLCAweDY4NDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwODBjLCAweDllY2QsIDB4MDgwYywgMHhhMGRiLCAweDA4MGMsIDB4OWVkOSwKLQkweDA4MGMsIDB4ODFhNSwgMHgwMGNlLCAweDA4MDQsIDB4ODMyZSwgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwKLQkweDA4MDQsIDB4ODMyZSwgMHgwMTJlLCAweDAwMGUsIDB4MDA2ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwgMHgxZDMwLCAweDA4MGMsIDB4YjE1NSwKLQkweDBjMTgsIDB4MDAzNiwgMHgwMTU2LCAweDAxMzYsIDB4MDE0NiwgMHgzOTA4LCAweGEwMDYsIDB4YTE5MCwKLQkweDAwMjAsIDB4MjIxYywgMHhhMzllLCAweDJhZWMsIDB4MTExOCwgMHg4MjEwLCAweDgwMDAsIDB4MGNjOCwKLQkweGEwMDUsIDB4MDEzOCwgMHgyMGE5LCAweDAwMjAsIDB4MjE5OCwgMHhhMTEwLCAweDIyYTAsIDB4MjJjOCwKLQkweDUzYTMsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDAzZSwgMHgwMDA1LCAweDAwZDYsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3NzRmLCAweDIwYTMsIDB4MDIwMCwgMHgyMGEzLCAweDAwMTQsIDB4NjBjMywKLQkweDAwMTQsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMDk5LCAweGI4YjksIDB4MjBhOSwKLQkweDAwMDQsIDB4NTNhNiwgMHgyMGEzLCAweDAwMDQsIDB4MjBhMywgMHg3ODc4LCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgwODBjLCAweDdkZTAsIDB4MDBkZSwgMHgwMDA1LCAweDIwYTEsIDB4MDIwYiwKLQkweDA4MGMsIDB4Nzc0ZiwgMHgyMGEzLCAweDAyMTQsIDB4MjBhMywgMHgwMDE4LCAweDIwYTMsIDB4MDgwMCwKLQkweDc4MTAsIDB4YTA4NCwgMHhmZjAwLCAweDIwYTIsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgxMCwgMHhhMDg0LCAweDAwZmYsIDB4MjBhMiwKLQkweDc4MjgsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAxOCwKLQkweDA4MGMsIDB4N2RlMCwgMHgwMDA1LCAweDAwZDYsIDB4MDAxNiwgMHgyZjY4LCAweDIwMDksIDB4MDAzNSwKLQkweDA4MGMsIDB4YTFjNiwgMHgxOTA0LCAweDg0ODksIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4NzZiMywKLQkweDIwYTMsIDB4MTMwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgyOCwgMHgyMDY4LCAweDY4MWMsIDB4YTA4NiwKLQkweDAwMDMsIDB4MDU4MCwgMHg3ODE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDE0LCAweDIwMDEsIDB4YjYzNSwKLQkweDIwMDQsIDB4ZDBhYywgMHgxMWQwLCAweGEyODYsIDB4MDA3ZSwgMHgxMTI4LCAweDIwYTMsIDB4MDBmZiwKLQkweDIwYTMsIDB4ZmZmZSwgMHgwNGI4LCAweGEyODYsIDB4MDA3ZiwgMHgxMTI4LCAweDIwYTMsIDB4MDBmZiwKLQkweDIwYTMsIDB4ZmZmZCwgMHgwNDc4LCAweGQyYmMsIDB4MDE4MCwgMHhhMjg2LCAweDAwODAsIDB4MTEyOCwKLQkweDIwYTMsIDB4MDBmZiwgMHgyMGEzLCAweGZmZmMsIDB4MDQyOCwgMHhhMmU4LCAweGI3MzUsIDB4MmQ2YywKLQkweDY4MTAsIDB4MjBhMiwgMHg2ODE0LCAweDIwYTIsIDB4MDBlOCwgMHgyMGEzLCAweDAwMDAsIDB4NjA5OCwKLQkweDIwYTIsIDB4MDBjMCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwNCwgMHhkMGFjLCAweDExMzgsIDB4NzgxOCwKLQkweGEwODAsIDB4MDAyOCwgMHgyMDA0LCAweGEwODIsIDB4MDA3ZSwgMHgwMjQwLCAweDAwZDYsIDB4MjA2OSwKLQkweGI2MWMsIDB4MmRhNiwgMHg4ZDY4LCAweDJkYTYsIDB4MDBkZSwgMHgwMDIwLCAweDIwYTMsIDB4MDAwMCwKLQkweDYwMzQsIDB4MjBhMiwgMHg3ODM0LCAweDIwYTIsIDB4NzgzOCwgMHgyMGEyLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwYTMsIDB4MDAwMCwgMHg2MGMzLCAweDAwMGMsIDB4MDgwYywgMHg3ZGUwLCAweDAwMWUsIDB4MDBkZSwKLQkweDAwMDUsIDB4NzgxNywgMHgwMDAxLCAweDc4MDMsIDB4MDAwNiwgMHgwMDFlLCAweDAwZGUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDAyNiwgMHg3OTI4LCAweDIxNjgsIDB4NjkxYywgMHhhMTg2LCAweDAwMDYsIDB4MDFjMCwKLQkweGExODYsIDB4MDAwMywgMHgwOTA0LCAweDg0ZmYsIDB4YTE4NiwgMHgwMDA1LCAweDA5MDQsIDB4ODRlOCwKLQkweGExODYsIDB4MDAwNCwgMHgwNWI4LCAweGExODYsIDB4MDAwOCwgMHgwOTA0LCAweDg0ZjAsIDB4NzgwNywKLQkweDAwMzcsIDB4NzgxMywgMHgxNzAwLCAweDA4MGMsIDB4ODU2NywgMHgwMDJlLCAweDAwZGUsIDB4MDAwNSwKLQkweDA4MGMsIDB4ODUyMywgMHgyMDA5LCAweDQwMDAsIDB4NjgwMCwgMHgwMDAyLCAweDg0YzksIDB4ODRkNCwKLQkweDg0Y2IsIDB4ODRkNCwgMHg4NGQwLCAweDg0YzksIDB4ODRjOSwgMHg4NGQ0LCAweDg0ZDQsIDB4ODRkNCwKLQkweDg0ZDQsIDB4ODRjOSwgMHg4NGM5LCAweDg0YzksIDB4ODRjOSwgMHg4NGM5LCAweDg0ZDQsIDB4ODRjOSwKLQkweDg0ZDQsIDB4MDgwYywgMHgxNTFhLCAweDY4MjAsIDB4ZDBlNCwgMHgwMTEwLCAweGQwY2MsIDB4MDExMCwKLQkweGEwMGUsIDB4MDAxMCwgMHgyMDA5LCAweDIwMDAsIDB4NjgyOCwgMHgyMGEyLCAweDY4MmMsIDB4MjBhMiwKLQkweDA4MDQsIDB4ODUxOSwgMHgwODBjLCAweDg1MjMsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDIwMDksIDB4NDAwMCwgMHg2YTAwLCAweGEyODYsIDB4MDAwMiwgMHgxMTA4LCAweGEwMGUsIDB4MDQ4OCwKLQkweDA0ZDEsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMDA5LCAweDQwMDAsIDB4MDQ0OCwKLQkweDA0OTEsIDB4MjBhMywgMHgwMDAwLCAweDIwYTMsIDB4MDAwMCwgMHgyMDA5LCAweDQwMDAsIDB4YTI4NiwKLQkweDAwMDUsIDB4MDExOCwgMHhhMjg2LCAweDAwMDIsIDB4MTEwOCwgMHhhMDBlLCAweDAwZDAsIDB4MDQxOSwKLQkweDY4MTAsIDB4MjA2OCwgMHg2OTdjLCAweDY4MTAsIDB4YTExMiwgMHg2OTgwLCAweDY4MTQsIDB4YTEwMywKLQkweDIwYTIsIDB4MjJhMiwgMHg3OTI4LCAweGExODAsIDB4MDAwMCwgMHgyMDA0LCAweGEwOGUsIDB4MDAwMiwKLQkweDAxMzAsIDB4YTA4ZSwgMHgwMDA0LCAweDAxMTgsIDB4MjAwOSwgMHg0MDAwLCAweDAwMTAsIDB4MjAwOSwKLQkweDAwMDAsIDB4MjFhMiwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywgMHgwMDE4LCAweDA4MGMsIDB4N2RlMCwKLQkweDAwMmUsIDB4MDBkZSwgMHgwMDA1LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNjYsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3NzRmLCAweGEwMDYsIDB4MjBhMywgMHgwMjAwLCAweDIwYTIsIDB4NzkzNCwKLQkweDIxYTIsIDB4NzkzOCwgMHgyMWEyLCAweDc4MTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4MjAxMSwKLQkweGI2MzUsIDB4MjIxNCwgMHhkMmFjLCAweDExMTgsIDB4YTA5MiwgMHgwMDdlLCAweDAyNjgsIDB4MDBkNiwKLQkweDIwNjksIDB4YjYxYywgMHgyZDJjLCAweDhkNjgsIDB4MmQzNCwgMHhhMGU4LCAweGI3MzUsIDB4MmQ2YywKLQkweDZiMTAsIDB4NmMxNCwgMHgwMGRlLCAweDAwMzAsIDB4MjAxOSwgMHgwMDAwLCAweDY0OTgsIDB4MjAyOSwKLQkweDAwMDAsIDB4NjYzNCwgMHg3ODI4LCAweGEwODAsIDB4MDAwNywgMHgyMDA0LCAweGEwODYsIDB4MDAwMywKLQkweDExMjgsIDB4MjVhMiwgMHgyNmEyLCAweDIzYTIsIDB4MjRhMiwgMHgwMDIwLCAweDIzYTIsIDB4MjRhMiwKLQkweDI1YTIsIDB4MjZhMiwgMHgwMDZlLCAweDAwNWUsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMDUsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDgwYywgMHg3NzRmLCAweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywKLQkweDAwMDksIDB4NzgxMCwgMHgyMGEyLCAweDYwYzMsIDB4MDAwOCwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwKLQkweDIwYTEsIDB4MDIwYiwgMHgwODBjLCAweDc2YWIsIDB4MjBhMywgMHgxNDAwLCAweDIwYTMsIDB4MDAwMCwKLQkweDc4MzQsIDB4MjBhMiwgMHg3ODM4LCAweDIwYTIsIDB4NzgyOCwgMHgyMGEyLCAweDc4MmMsIDB4MjBhMiwKLQkweDc4MzAsIDB4YTA4NCwgMHgwMGZmLCAweDgwMDcsIDB4MjBhMiwgMHgyMGEzLCAweDAwMDAsIDB4NjBjMywKLQkweDAwMTAsIDB4MDgwYywgMHg3ZGUwLCAweDAwMDUsIDB4MjBhMSwgMHgwMjBiLCAweDA4MGMsIDB4Nzc0NywKLQkweDIwYTMsIDB4MDEwMCwgMHgyMGEzLCAweDAwMDAsIDB4NzgyOCwgMHgyMGEyLCAweDc4MTAsIDB4MjBhMiwKLQkweDYwYzMsIDB4MDAwOCwgMHgwODBjLCAweDdkZTAsIDB4MDAwNSwgMHgwMTQ2LCAweDIwYTEsIDB4MDIwYiwKLQkweDAwMzEsIDB4NjBjMywgMHgwMDAwLCAweDA4MGMsIDB4N2RlMCwgMHgwMTRlLCAweDAwMDUsIDB4MjBlMSwKLQkweDkwODAsIDB4MjBlMSwgMHg0MDAwLCAweDc4MTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4MjAxMSwKLQkweGI2MzUsIDB4MjIxNCwgMHhkMmFjLCAweDExMTAsIDB4ZDBiYywgMHgwMTg4LCAweDAwZDYsIDB4YTBlOCwKLQkweGI3MzUsIDB4MmQ2YywgMHg2ODEwLCAweGEwODUsIDB4MDMwMCwgMHgyMGEyLCAweDY4MTQsIDB4MjBhMiwKLQkweDIwNjksIDB4YjYxYywgMHgyZGE2LCAweDhkNjgsIDB4MmRhNiwgMHgwMGRlLCAweDAwNzgsIDB4MDBkNiwKLQkweGEwZTgsIDB4YjczNSwgMHgyZDZjLCAweDY4MTAsIDB4YTA4NSwgMHgwMzAwLCAweDIwYTIsIDB4NjgxNCwKLQkweDIwYTIsIDB4MDBkZSwgMHgyMGEzLCAweDAwMDAsIDB4NjIzNCwgMHgyMmEyLCAweDIwYTMsIDB4MDgxOSwKLQkweDIwYTMsIDB4MDAwMCwgMHgwODBjLCAweDdkY2YsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MmZhMiwKLQkweDdhMDgsIDB4MjJhMiwgMHgyMGEzLCAweDAwMDAsIDB4MjBhMywgMHgwMDAwLCAweDAwMDUsIDB4MjBhMSwKLQkweDAyMGIsIDB4MDA3OSwgMHg3OTEwLCAweDIxYTIsIDB4MjBhMywgMHgwMDAwLCAweDYwYzMsIDB4MDAwMCwKLQkweDIwZTEsIDB4OTA4MCwgMHg2MGE3LCAweDk1NzUsIDB4MDgwYywgMHg3ZGVhLCAweDA4MGMsIDB4NmE3OSwKLQkweDAwMDUsIDB4MDE1NiwgMHgwMTM2LCAweDAwMzYsIDB4MDBkNiwgMHgwMGU2LCAweDIwZTEsIDB4OTA4MCwKLQkweDIwZTEsIDB4NDAwMCwgMHg3ODU0LCAweDIwNjgsIDB4YWRmMCwgMHgwMDBmLCAweDcyMTAsIDB4YTI5NiwKLQkweDAwYzAsIDB4YTI5NCwgMHhmZmZkLCAweDcyMTIsIDB4NzIxNCwgMHhhMjk0LCAweDAzMDAsIDB4NzIxNiwKLQkweDcxMDAsIDB4YTE5NCwgMHgwMGZmLCAweDczMDgsIDB4YTM4NCwgMHgwMGZmLCAweGEwOGQsIDB4YzIwMCwKLQkweDcxMDIsIDB4YTM4NCwgMHhmZjAwLCAweGEyMTUsIDB4NzIwYSwgMHg3MDA0LCAweDcyMGMsIDB4NzAwZSwKLQkweDcyMDYsIDB4MjBhOSwgMHgwMDBhLCAweDJlOTgsIDB4NTNhNiwgMHg2MGEzLCAweDAwMzUsIDB4NmEzOCwKLQkweGEyOTQsIDB4NzAwMCwgMHhhMjg2LCAweDMwMDAsIDB4MDExMCwgMHg2MGEzLCAweDAwMzcsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDAzZSwgMHgwMTNlLCAweDAxNWUsIDB4MDAwNSwgMHgyMDA5LCAweDAwOTIsIDB4MDAxMCwKLQkweDIwMDksIDB4MDA5NiwgMHg2MGFiLCAweDAwMzYsIDB4NjExNiwgMHgwMDA1LCAweDIwNjEsIDB4YmUwMCwKLQkweDJhNzAsIDB4NzA2OCwgMHg3MDRhLCAweDcwNGYsIDB4YmUwMCwgMHgwMDA1LCAweDAwZTYsIDB4MDEyNiwKLQkweDIwNzEsIDB4YjYwMCwgMHgyMDkxLCAweDgwMDAsIDB4NzU0OCwgMHhhNTgyLCAweDAwMTAsIDB4MDYwOCwKLQkweDcwNGMsIDB4MjA2MCwgMHg2MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwMTQ4LCAweGFjZTAsIDB4MDAxOCwKLQkweDcwNWMsIDB4YWMwMiwgMHgxMjA4LCAweDBjYjAsIDB4MjA2MSwgMHhiZTAwLCAweDBjOTgsIDB4NjAwMywKLQkweDAwMDgsIDB4ODUyOSwgMHg3NTRhLCAweGFjYTgsIDB4MDAxOCwgMHg3MDVjLCAweGE1MDIsIDB4MTIzMCwKLQkweDc1NGUsIDB4YTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweDcwNGYsIDB4YmUwMCwKLQkweDBjYzAsIDB4YTAwNiwgMHgwY2MwLCAweDAwZTYsIDB4MjA3MSwgMHhiNjAwLCAweDc1NDgsIDB4YTU4MiwKLQkweDAwMTAsIDB4MDYwMCwgMHg3MDRjLCAweDIwNjAsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDAsIDB4MDE0OCwKLQkweGFjZTAsIDB4MDAxOCwgMHg3MDVjLCAweGFjMDIsIDB4MTIwOCwgMHgwY2IwLCAweDIwNjEsIDB4YmUwMCwKLQkweDBjOTgsIDB4NjAwMywgMHgwMDA4LCAweDg1MjksIDB4NzU0YSwgMHhhY2E4LCAweDAwMTgsIDB4NzA1YywKLQkweGE1MDIsIDB4MTIyOCwgMHg3NTRlLCAweGEwODUsIDB4MDAwMSwgMHgwMGVlLCAweDAwMDUsIDB4NzA0ZiwKLQkweGJlMDAsIDB4MGNjOCwgMHhhMDA2LCAweDBjYzgsIDB4YWM4MiwgMHhiZTAwLCAweDBhMGMsIDB4MTUxYSwKLQkweDIwMDEsIDB4YjYxNywgMHgyMDA0LCAweGFjMDIsIDB4MWEwYywgMHgxNTFhLCAweGEwMDYsIDB4NjAwNiwKLQkweDYwMGEsIDB4NjAwZSwgMHg2MDEyLCAweDYwMTYsIDB4NjAxYSwgMHg2MDFmLCAweDAwMDAsIDB4NjAwMywKLQkweDAwMDAsIDB4NjA1MiwgMHg2MDU2LCAweDYwMjIsIDB4NjAyNiwgMHg2MDJhLCAweDYwMmUsIDB4NjAzMiwKLQkweDYwMzYsIDB4NjAzYSwgMHg2MDNlLCAweDIwNjEsIDB4YjYwMCwgMHg2MDQ4LCAweDgwMDAsIDB4NjA0YSwKLQkweGEwODYsIDB4MDAwMSwgMHgwMTA4LCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDcxZTUsIDB4MDEyZSwgMHgwY2MwLCAweDYwMWMsIDB4YTA4NCwgMHgwMDBmLCAweDAwMDIsIDB4ODZlNywKLQkweDg2ZjYsIDB4ODcxMSwgMHg4NzJjLCAweGEyMGUsIDB4YTIyOSwgMHhhMjQ0LCAweDg2ZTcsIDB4ODZmNiwKLQkweDg2ZTcsIDB4ODc0NywgMHg4NmU3LCAweDg2ZTcsIDB4ODZlNywgMHg4NmU3LCAweDg2ZTcsIDB4YTE4NiwKLQkweDAwMTMsIDB4MTEyOCwgMHgwODBjLCAweDcxMDIsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4YTE4ZSwKLQkweDAwNDcsIDB4MTExOCwgMHhhMDE2LCAweDA4MGMsIDB4MTg2MywgMHgwMDA1LCAweDAwNjYsIDB4NjAwMCwKLQkweGEwYjIsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAxMywgMHgwMDZlLCAweDAwMDUsIDB4ODcwZiwKLQkweDhiMjcsIDB4OGNkZiwgMHg4NzBmLCAweDhkNTQsIDB4ODgwNSwgMHg4NzBmLCAweDg3MGYsIDB4OGFiOSwKLQkweDkxN2IsIDB4ODcwZiwgMHg4NzBmLCAweDg3MGYsIDB4ODcwZiwgMHg4NzBmLCAweDg3MGYsIDB4MDgwYywKLQkweDE1MWEsIDB4MDA2NiwgMHg2MDAwLCAweGEwYjIsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAxMywKLQkweDAwNmUsIDB4MDAwNSwgMHg4NzJhLCAweDk3ZGUsIDB4ODcyYSwgMHg4NzJhLCAweDg3MmEsIDB4ODcyYSwKLQkweDg3MmEsIDB4ODcyYSwgMHg5Nzg5LCAweDk5NGEsIDB4ODcyYSwgMHg5ODBiLCAweDk4ODIsIDB4OTgwYiwKLQkweDk4ODIsIDB4ODcyYSwgMHgwODBjLCAweDE1MWEsIDB4MDA2NiwgMHg2MDAwLCAweGEwYjIsIDB4MDAxMCwKLQkweDFhMGMsIDB4MTUxYSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwgMHg4NzQ1LCAweDkxYmMsIDB4OTI4NiwKLQkweDkzYzQsIDB4OTU0ZCwgMHg4NzQ1LCAweDg3NDUsIDB4ODc0NSwgMHg5MTk2LCAweDk3MzksIDB4OTczYywKLQkweDg3NDUsIDB4ODc0NSwgMHg4NzQ1LCAweDg3NDUsIDB4OTc2NiwgMHgwODBjLCAweDE1MWEsIDB4MDA2NiwKLQkweDYwMDAsIDB4YTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MTUxYSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwKLQkweDg3NjAsIDB4ODc2MCwgMHg4NzYwLCAweDg3OGUsIDB4ODdkYiwgMHg4NzYwLCAweDg3NjAsIDB4ODc2MCwKLQkweDg3NjIsIDB4ODc2MCwgMHg4NzYwLCAweDg3NjAsIDB4ODc2MCwgMHg4NzYwLCAweDg3NjAsIDB4ODc2MCwKLQkweDA4MGMsIDB4MTUxYSwgMHhhMTg2LCAweDAwMDMsIDB4MTkwYywgMHgxNTFhLCAweDAwZDYsIDB4NjAwMywKLQkweDAwMDMsIDB4NjEwNiwgMHg2MDEwLCAweDIwNjgsIDB4Njg0ZiwgMHgwMDQwLCAweDY4N2MsIDB4NjgwYSwKLQkweDY4ODAsIDB4NjgwZSwgMHg2ODEzLCAweDAwMDAsIDB4NjgxNywgMHgwMDAwLCAweDY4NTQsIDB4YTA5MiwKLQkweDE5OWEsIDB4MDIxMCwgMHgyMDAxLCAweDE5OTksIDB4ODAwMywgMHg4MDEzLCAweDgyMTMsIDB4YTIxMCwKLQkweDYyMTYsIDB4MDBkZSwgMHgyYzEwLCAweDA4MGMsIDB4MWZjNSwgMHgwODBjLCAweDZkNjIsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcyYTIsIDB4MDEyZSwgMHgwMDA1LCAweGExODIsIDB4MDA0NywKLQkweDAwMDIsIDB4ODc5YSwgMHg4NzlhLCAweDg3OWMsIDB4ODdiNSwgMHg4NzlhLCAweDg3OWEsIDB4ODc5YSwKLQkweDg3OWEsIDB4ODdjNywgMHgwODBjLCAweDE1MWEsIDB4MDBkNiwgMHgwMDE2LCAweDA4MGMsIDB4NzE5OCwKLQkweDA4MGMsIDB4NzJhMiwgMHg2MDAzLCAweDAwMDQsIDB4NjExMCwgMHgyMTY4LCAweDY4NGYsIDB4MDAyMCwKLQkweDY4NWMsIDB4Njg1YSwgMHg2ODc0LCAweDY4N2UsIDB4Njg3OCwgMHg2ODgyLCAweDY4OTcsIDB4MDAwMCwKLQkweDY4OWIsIDB4MDAwMCwgMHgwMDFlLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweDcxOTgsIDB4MDBkNiwKLQkweDYxMTAsIDB4MjE2OCwgMHgwODBjLCAweDlkMTYsIDB4MDEyMCwgMHg2ODRiLCAweDAwMDYsIDB4MDgwYywKLQkweDU0N2EsIDB4MDBkZSwgMHgwODBjLCAweDg2YTQsIDB4MDgwYywgMHg3MmEyLCAweDAwMDUsIDB4MDgwYywKLQkweDcxOTgsIDB4MDgwYywgMHgyY2QxLCAweDAwZDYsIDB4NjExMCwgMHgyMTY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxMjAsIDB4Njg0YiwgMHgwMDI5LCAweDA4MGMsIDB4NTQ3YSwgMHgwMGRlLCAweDA4MGMsIDB4ODZhNCwKLQkweDA4MGMsIDB4NzJhMiwgMHgwMDA1LCAweGExODIsIDB4MDA0NywgMHgwMDAyLCAweDg3ZTksIDB4ODdmOCwKLQkweDg3ZTcsIDB4ODdlNywgMHg4N2U3LCAweDg3ZTcsIDB4ODdlNywgMHg4N2U3LCAweDg3ZTcsIDB4MDgwYywKLQkweDE1MWEsIDB4MDBkNiwgMHg2MDEwLCAweDIwNjgsIDB4Njg0YywgMHhjMGY0LCAweDY4NGUsIDB4MDBkZSwKLQkweDIwZTEsIDB4MDAwNSwgMHgzZDE4LCAweDNlMjAsIDB4MmMxMCwgMHgwODBjLCAweDE4NjMsIDB4MDAwNSwKLQkweDAwZDYsIDB4NjExMCwgMHgyMTY4LCAweDY4NGIsIDB4MDAwMCwgMHg2ODUzLCAweDAwMDAsIDB4MDgwYywKLQkweDU0N2EsIDB4MDBkZSwgMHgwODBjLCAweDg2YTQsIDB4MDAwNSwgMHhhMWI2LCAweDAwMTUsIDB4MTExOCwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMDMwLCAweGExYjYsIDB4MDAxNiwgMHgxOTBjLCAweDE1MWEsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAwNSwgMHgyMGE5LCAweDAwMGUsIDB4MmU5OCwgMHg2MDEwLCAweDIwYTAsIDB4NTNhMywKLQkweDIwYTksIDB4MDAwNiwgMHgzMzEwLCAweDM0MjAsIDB4OTM5OCwgMHg5NGEwLCAweDMzMTgsIDB4MzQyOCwKLQkweDIyMmUsIDB4MjMyNiwgMHhhMjkwLCAweDAwMDIsIDB4YTVhOCwgMHgwMDAyLCAweGEzOTgsIDB4MDAwMiwKLQkweGE0YTAsIDB4MDAwMiwgMHgxZjA0LCAweDg4MjAsIDB4MDBlNiwgMHgwODBjLCAweDlkMTYsIDB4MDEzMCwKLQkweDYwMTAsIDB4MjA3MCwgMHg3MDA3LCAweDAwMDAsIDB4NzAzNywgMHgwMTAzLCAweDAwZWUsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAwNSwgMHgwMGQ2LCAweDAwMzYsIDB4NzMzMCwgMHhhMzg2LCAweDAyMDAsIDB4MTEzMCwKLQkweDYwMTgsIDB4MjA2OCwgMHg2ODEzLCAweDAwZmYsIDB4NjgxNywgMHhmZmZkLCAweDYwMTAsIDB4YTAwNSwKLQkweDAxMzAsIDB4MjA2OCwgMHg2ODA3LCAweDAwMDAsIDB4NjgzNywgMHgwMTAzLCAweDZiMzIsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAzZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAxNiwgMHgyMGE5LCAweDAwMmEsIDB4YWU4MCwKLQkweDAwMGMsIDB4MjA5OCwgMHg2MDEwLCAweGEwODAsIDB4MDAwMiwgMHgyMGEwLCAweDUzYTMsIDB4MjBhOSwKLQkweDAwMmEsIDB4NjAxMCwgMHhhMDgwLCAweDAwMDEsIDB4MjAwNCwgMHhhMDgwLCAweDAwMDIsIDB4MjBhMCwKLQkweDUzYTMsIDB4MDBlNiwgMHg2MDEwLCAweDIwMDQsIDB4MjA3MCwgMHg3MDM3LCAweDAxMDMsIDB4MDBlZSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgyMDA5LCAweDAwMDAsIDB4NzAzMCwKLQkweGEwODYsIDB4MDEwMCwgMHgwMTQwLCAweDcwMzgsIDB4YTA4NCwgMHgwMGZmLCAweDgwMGMsIDB4NzAzYywKLQkweGEwODQsIDB4MDBmZiwgMHg4MDA0LCAweGEwODAsIDB4MDAwNCwgMHhhMTA4LCAweDIxYTgsIDB4YWU4MCwKLQkweDAwMGMsIDB4MjA5OCwgMHg2MDEwLCAweGEwODAsIDB4MDAwMiwgMHgyMGEwLCAweDA4MGMsIDB4NGJmMSwKLQkweDAwZTYsIDB4MDgwYywgMHg5ZDE2LCAweDAxNDAsIDB4NjAxMCwgMHgyMDcwLCAweDcwMDcsIDB4MDAwMCwKLQkweDcwMzQsIDB4NzBiMiwgMHg3MDM3LCAweDAxMDMsIDB4MDBlZSwgMHgwODBjLCAweDg2YTQsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGQ2LCAweDYwM2YsIDB4MDAwMCwgMHgyYzY4LCAweDAwMTYsIDB4MjAwOSwKLQkweDAwMzUsIDB4MDgwYywgMHhhMWM2LCAweDAwMWUsIDB4MTE2OCwgMHgwMDI2LCAweDYyMjgsIDB4MjI2OCwKLQkweDAwMmUsIDB4MjA3MSwgMHhiYzhjLCAweDZiMWMsIDB4YTM4NiwgMHgwMDAzLCAweDAxMzAsIDB4YTM4NiwKLQkweDAwMDYsIDB4MDEyOCwgMHgwODBjLCAweDg2YTQsIDB4MDAyMCwgMHgwMDMxLCAweDAwMTAsIDB4MDgwYywKLQkweDg5ODIsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBmNiwgMHg2ODEwLCAweDIwNzgsIDB4YTE4NiwKLQkweDAwMTUsIDB4MDkwNCwgMHg4OTY5LCAweGExOGUsIDB4MDAxNiwgMHgxOTA0LCAweDg5ODAsIDB4NzAwYywKLQkweGEwOGMsIDB4ZmYwMCwgMHhhMTg2LCAweDE3MDAsIDB4MDEyMCwgMHhhMTg2LCAweDAzMDAsIDB4MTkwNCwKLQkweDg5NDgsIDB4OGZmZiwgMHgxMTM4LCAweDY4MDAsIDB4YTA4NiwgMHgwMDBmLCAweDA5MDQsIDB4ODkyYywKLQkweDA4MDQsIDB4ODk3ZSwgMHg2ODA4LCAweGEwODYsIDB4ZmZmZiwgMHgxOTA0LCAweDg5NmIsIDB4Nzg0YywKLQkweGEwODQsIDB4MDA2MCwgMHhhMDg2LCAweDAwMjAsIDB4MTE1MCwgMHg3OTdjLCAweDc4MTAsIDB4YTEwNiwKLQkweDE5MDQsIDB4ODk2YiwgMHg3OTgwLCAweDc4MTQsIDB4YTEwNiwgMHgxOTA0LCAweDg5NmIsIDB4MDgwYywKLQkweDllY2QsIDB4Njg1OCwgMHg3ODUyLCAweDc4NGMsIDB4YzBkYywgMHhjMGY0LCAweGMwZDQsIDB4Nzg0ZSwKLQkweDAwMjYsIDB4YTAwZSwgMHg2YTE0LCAweDIwMDEsIDB4MDAwYSwgMHgwODBjLCAweDZiYjIsIDB4Nzg1NCwKLQkweGEyMGEsIDB4MDIwOCwgMHg4MDExLCAweDdhNTYsIDB4ODJmZiwgMHgwMDJlLCAweDExMzgsIDB4MDBjNiwKLQkweDJkNjAsIDB4MDgwYywgMHg5YWM1LCAweDAwY2UsIDB4MDgwNCwgMHg4OTdlLCAweDAwYzYsIDB4MDBkNiwKLQkweDJmNjgsIDB4NjgzOCwgMHhkMGZjLCAweDExMTgsIDB4MDgwYywgMHg0Y2Q3LCAweDAwMTAsIDB4MDgwYywKLQkweDRlYmIsIDB4MDBkZSwgMHgwMGNlLCAweDE5MDQsIDB4ODk2YiwgMHgwMGM2LCAweDJkNjAsIDB4MDgwYywKLQkweDg2YTQsIDB4MDBjZSwgMHgwODA0LCAweDg5N2UsIDB4MDBjNiwgMHgwODBjLCAweDlmOTIsIDB4MDE5MCwKLQkweDYwMTMsIDB4MDAwMCwgMHg2ODE4LCAweDYwMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwMywKLQkweDY5MDQsIDB4MDBjNiwgMHgyZDYwLCAweDA4MGMsIDB4ODZhNCwgMHgwMGNlLCAweDA4MGMsIDB4ODZkMywKLQkweDAwY2UsIDB4MDRlMCwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwgMHg2ODNlLCAweDAwY2UsIDB4MDRiMCwKLQkweDcwMDgsIDB4YTA4NiwgMHgwMDBiLCAweDExYTAsIDB4NjAxOCwgMHgyMDBjLCAweGMxYmMsIDB4MjEwMiwKLQkweDAwYzYsIDB4MmQ2MCwgMHg3ODRiLCAweDAwMDMsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwKLQkweDYwMWYsIDB4MDAwMiwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDAwY2UsIDB4MDBmMCwKLQkweDcwMGMsIDB4YTA4NiwgMHgyYTAwLCAweDExMzgsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDQsIDB4NjgzZSwKLQkweDAwYTgsIDB4MDQ4MSwgMHgwMGE4LCAweDhmZmYsIDB4MDkwYywgMHgxNTFhLCAweDAwYzYsIDB4MDBkNiwKLQkweDJkNjAsIDB4MmY2OCwgMHg2ODM3LCAweDAxMDMsIDB4Njg0YiwgMHgwMDAzLCAweDA4MGMsIDB4OTliOSwKLQkweDA4MGMsIDB4OWVjZCwgMHgwODBjLCAweDllZDksIDB4MDBkZSwgMHgwMGNlLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwZmUsIDB4MDAwNSwgMHhhMTg2LCAweDAwMTUsIDB4MTEyOCwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwKLQkweDY4M2UsIDB4MDA2OCwgMHhhMThlLCAweDAwMTYsIDB4MTE2MCwgMHgwMGM2LCAweDJkMDAsIDB4MjA2MCwKLQkweDA4MGMsIDB4YjNmNiwgMHgwODBjLCAweDZiNjEsIDB4MDgwYywgMHg4NmE0LCAweDAwY2UsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAwNSwgMHgwMDI2LCAweDAwMzYsIDB4MDA0NiwgMHg3MjI4LCAweDdjODAsIDB4N2I3YywKLQkweGQyZjQsIDB4MDEzMCwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwgMHg2ODNlLCAweDA4MDQsIDB4ODlmYywKLQkweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweDk5ZDksIDB4MDBjZSwgMHg2ODA0LCAweGEwODYsIDB4MDA1MCwKLQkweDExNjgsIDB4MDBjNiwgMHgyZDAwLCAweDIwNjAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA1MCwKLQkweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDBjZSwgMHgwNGYwLCAweDY4MDAsIDB4YTA4NiwKLQkweDAwMGYsIDB4MDFjOCwgMHg4ZmZmLCAweDA5MGMsIDB4MTUxYSwgMHg2ODIwLCAweGQwZGMsIDB4MTE5OCwKLQkweDY4MDAsIDB4YTA4NiwgMHgwMDA0LCAweDExOTgsIDB4Nzg0YywgMHhkMGFjLCAweDAxODAsIDB4Nzg0YywKLQkweGMwZGMsIDB4YzBmNCwgMHg3ODRlLCAweDc4NTAsIDB4YzBmNCwgMHhjMGZjLCAweDc4NTIsIDB4MjAwMSwKLQkweDAwMDEsIDB4NjgyZSwgMHgwMGUwLCAweDIwMDEsIDB4MDAwNywgMHg2ODJlLCAweDAwYzAsIDB4Nzg0YywKLQkweGQwYjQsIDB4MTEzMCwgMHhkMGFjLCAweDBkYjgsIDB4Nzg0YywgMHhkMGY0LCAweDFkYTAsIDB4MGMzOCwKLQkweGQyZWMsIDB4MWQ4OCwgMHg3MDI0LCAweGEzMDYsIDB4MTExOCwgMHg3MDIwLCAweGE0MDYsIDB4MGQ1OCwKLQkweDcwMjAsIDB4NjgzNiwgMHg3MDI0LCAweDY4M2EsIDB4MjAwMSwgMHgwMDA1LCAweDY4MmUsIDB4MDgwYywKLQkweGEwMWYsIDB4MDgwYywgMHg3MWU1LCAweDAwMTAsIDB4MDgwYywgMHg4NmE0LCAweDAwNGUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZDYsIDB4MDAyNiwgMHg2MDM0LCAweDIwNjgsIDB4NmExYywKLQkweGEyODYsIDB4MDAwNywgMHgwOTA0LCAweDhhNjAsIDB4YTI4NiwgMHgwMDAyLCAweDA5MDQsIDB4OGE2MCwKLQkweGEyODYsIDB4MDAwMCwgMHgwOTA0LCAweDhhNjAsIDB4NjgwOCwgMHg2MzM4LCAweGEzMDYsIDB4MTkwNCwKLQkweDhhNjAsIDB4MjA3MSwgMHhiYzhjLCAweGExODYsIDB4MDAxNSwgMHgwNWUwLCAweGExOGUsIDB4MDAxNiwKLQkweDExOTAsIDB4NjAzMCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwgMHgwMDAxLCAweDExNjAsIDB4NzAwYywKLQkweGEwODYsIDB4MmEwMCwgMHgxMTQwLCAweDYwMzQsIDB4YTA4MCwgMHgwMDA4LCAweDIwMGMsIDB4YzFkZCwKLQkweGMxZjUsIDB4MjEwMiwgMHgwNDM4LCAweDAwYzYsIDB4NjAzNCwgMHgyMDYwLCAweDYxMDQsIDB4YTE4NiwKLQkweDAwNGIsIDB4MDFhMCwgMHhhMTg2LCAweDAwNGMsIDB4MDE4OCwgMHhhMTg2LCAweDAwNGQsIDB4MDE3MCwKLQkweGExODYsIDB4MDA0ZSwgMHgwMTU4LCAweGExODYsIDB4MDA1MiwgMHgwMTQwLCAweDYwMTAsIDB4MjA2OCwKLQkweDA4MGMsIDB4OWQxNiwgMHgwOTBjLCAweDE1MWEsIDB4Njg0YiwgMHgwMDAzLCAweDYwMDcsIDB4MDA4NSwKLQkweDYwMDMsIDB4MDAwYiwgMHg2MDFmLCAweDAwMDIsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwKLQkweDAwY2UsIDB4MDAzMCwgMHg2MDM0LCAweDIwNzAsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDQsIDB4NzAzZSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMDJlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZDYsIDB4MjBhOSwKLQkweDAwMGUsIDB4MmU5OCwgMHg2MDEwLCAweDIwYTAsIDB4NTNhMywgMHhhMWI2LCAweDAwMTUsIDB4MTU1OCwKLQkweDYwMTgsIDB4MjA2OCwgMHgwMTU2LCAweDAwMzYsIDB4MDAyNiwgMHhhZTkwLCAweDAwMGMsIDB4YTI5MCwKLQkweDAwMDQsIDB4MjBhOSwgMHgwMDA0LCAweGFkOTgsIDB4MDAwYSwgMHgwODBjLCAweDkxNjYsIDB4MDAyZSwKLQkweDAwM2UsIDB4MDE1ZSwgMHgxMWQ4LCAweDAxNTYsIDB4MDAzNiwgMHgwMDI2LCAweGFlOTAsIDB4MDAwYywKLQkweGEyOTAsIDB4MDAwOCwgMHgyMGE5LCAweDAwMDQsIDB4YWQ5OCwgMHgwMDA2LCAweDA4MGMsIDB4OTE2NiwKLQkweDAwMmUsIDB4MDAzZSwgMHgwMTVlLCAweDExNTAsIDB4NzAzOCwgMHg2ODBhLCAweDcwM2MsIDB4NjgwZSwKLQkweDY4MDAsIDB4YzA4ZCwgMHg2ODAyLCAweDAwZGUsIDB4MDgwNCwgMHg4ODJjLCAweDA4MGMsIDB4MmNkMSwKLQkweDAwYzYsIDB4MDgwYywgMHg4NjRlLCAweDJmMDAsIDB4NjAxYSwgMHg2MDEzLCAweDAwMDAsIDB4NjAxZiwKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDcsIDB4MDgwYywKLQkweDRmNmYsIDB4MDgwYywgMHg0ZjljLCAweDA4MGMsIDB4NmQ0NSwgMHgwODBjLCAweDcxZTUsIDB4MDBjZSwKLQkweDBjMTAsIDB4MjEwMCwgMHhhMWIyLCAweDAwODAsIDB4MWEwYywgMHgxNTFhLCAweGExYjIsIDB4MDA0MCwKLQkweDFhMDQsIDB4OGIxZCwgMHgwMDAyLCAweDhiMTEsIDB4OGIwNSwgMHg4YjExLCAweDhiMTEsIDB4OGIxMSwKLQkweDhiMTEsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjExLCAweDhiMDMsIDB4OGIxMSwgMHg4YjExLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMTEsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywgMHg4YjExLCAweDhiMTEsIDB4OGIwMywKLQkweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywgMHg4YjAzLCAweDhiMDMsIDB4OGIwMywKLQkweDhiMTEsIDB4OGIwMywgMHg4YjAzLCAweDA4MGMsIDB4MTUxYSwgMHg2MDAzLCAweDAwMDEsIDB4NjEwNiwKLQkweDA4MGMsIDB4NmQ0NSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcxZTUsIDB4MDEyZSwKLQkweDAwMDUsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MDgwYywgMHg2ZDQ1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg3MWU1LCAweDAxMmUsIDB4MDAwNSwgMHgyNjAwLCAweDAwMDIsIDB4OGIxMSwKLQkweDhiMTEsIDB4OGIyNSwgMHg4YjExLCAweDhiMTEsIDB4OGIyNSwgMHgwODBjLCAweDE1MWEsIDB4NjAwNCwKLQkweGEwYjIsIDB4MDA4MCwgMHgxYTBjLCAweDE1MWEsIDB4YTFiNiwgMHgwMDEzLCAweDA5MDQsIDB4OGJkNywKLQkweGExYjYsIDB4MDAyNywgMHgxOTA0LCAweDhiOWQsIDB4MDgwYywgMHg3MTAyLCAweDYwMDQsIDB4MDgwYywKLQkweDlmMDMsIDB4MDE5MCwgMHgwODBjLCAweDlmMTQsIDB4MDkwNCwgMHg4Yjk3LCAweGEwOGUsIDB4MDAyMSwKLQkweDA5MDQsIDB4OGI5YSwgMHhhMDhlLCAweDAwMjIsIDB4MDkwNCwgMHg4Yjk3LCAweGEwOGUsIDB4MDAzZCwKLQkweDA5MDQsIDB4OGI5YSwgMHgwODA0LCAweDhiOTAsIDB4MDgwYywgMHgyY2Y3LCAweDIwMDEsIDB4MDAwNywKLQkweDA4MGMsIDB4NGY2ZiwgMHg2MDE4LCAweGEwODAsIDB4MDAyOCwgMHgyMDBjLCAweDA4MGMsIDB4OGNhNSwKLQkweGExODYsIDB4MDA3ZSwgMHgxMTQ4LCAweDIwMDEsIDB4YjYzNSwgMHgyMDE0LCAweGMyODUsIDB4MDgwYywKLQkweDViNDEsIDB4MTEwOCwgMHhjMmFkLCAweDIyMDIsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MjExMCwKLQkweDAwMjYsIDB4MjAxOSwgMHgwMDI4LCAweDA4MGMsIDB4ODMyMCwgMHgwMDJlLCAweDA4MGMsIDB4YjQ0OSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDIxMTAsIDB4MjAxOSwKLQkweDAwMjgsIDB4MDgwYywgMHg2ZTY3LCAweDAwNzYsIDB4MjAzOSwgMHgwMDAwLCAweDA4MGMsIDB4NmQ3NCwKLQkweDAwYzYsIDB4NjAxOCwgMHhhMDY1LCAweDAxMTAsIDB4MDgwYywgMHg1MjFjLCAweDAwY2UsIDB4MmMwOCwKLQkweDA4MGMsIDB4YWYzZSwgMHgwMDdlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDA4MGMsIDB4NGZkZSwKLQkweDA4MGMsIDB4YTBkYiwgMHgwODBjLCAweDg2YTQsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDgwYywKLQkweDhjYTUsIDB4MGNiMCwgMHgwODBjLCAweDhjZDMsIDB4MGM5OCwgMHhhMTg2LCAweDAwMTQsIDB4MWRiMCwKLQkweDA4MGMsIDB4NzEwMiwgMHgwODBjLCAweDJjZDEsIDB4MDgwYywgMHg5ZjAzLCAweDExODgsIDB4MDgwYywKLQkweDJjZjcsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwYywgMHgwODBjLCAweDhjYTUsIDB4YTE4NiwKLQkweDAwN2UsIDB4MTEyOCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwYywgMHhjMTg1LCAweDIxMDIsIDB4MDhjMCwKLQkweDA4MGMsIDB4OWYxNCwgMHgxMTE4LCAweDA4MGMsIDB4OGNhNSwgMHgwODkwLCAweDYwMDQsIDB4YTA4ZSwKLQkweDAwMzIsIDB4MTE1OCwgMHgwMGU2LCAweDAwZjYsIDB4MjA3MSwgMHhiNjgyLCAweDIwNzksIDB4MDAwMCwKLQkweDA4MGMsIDB4MzAwNCwgMHgwMGZlLCAweDAwZWUsIDB4MDgxOCwgMHg2MDA0LCAweGEwOGUsIDB4MDAyMSwKLQkweDBkNTAsIDB4YTA4ZSwgMHgwMDIyLCAweDA5MGMsIDB4OGNhNSwgMHgwODA0LCAweDhiOTAsIDB4YTBiMiwKLQkweDAwNDAsIDB4MWEwNCwgMHg4YzlhLCAweDIwMDgsIDB4MDAwMiwgMHg4YzFmLCAweDhjMjAsIDB4OGMyMywKLQkweDhjMjYsIDB4OGMyOSwgMHg4YzJjLCAweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMmYsIDB4OGMzZSwgMHg4YzFkLCAweDhjNDAsIDB4OGMzZSwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwgMHg4YzNlLCAweDhjM2UsIDB4OGMxZCwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjMWQsIDB4OGM3YSwKLQkweDhjM2UsIDB4OGMxZCwgMHg4YzNhLCAweDhjMWQsIDB4OGMxZCwgMHg4YzFkLCAweDhjM2IsIDB4OGMxZCwKLQkweDhjMWQsIDB4OGMxZCwgMHg4YzNlLCAweDhjNzEsIDB4OGMxZCwgMHgwODBjLCAweDE1MWEsIDB4MDBmMCwKLQkweDIwMDEsIDB4MDAwYiwgMHgwNDYwLCAweDIwMDEsIDB4MDAwMywgMHgwNDQ4LCAweDIwMDEsIDB4MDAwNSwKLQkweDA0MzAsIDB4MjAwMSwgMHgwMDAxLCAweDA0MTgsIDB4MjAwMSwgMHgwMDA5LCAweDA0MDAsIDB4MDgwYywKLQkweDcxMDIsIDB4NjAwMywgMHgwMDA1LCAweDIwMDEsIDB4YjhiOCwgMHgyMDA0LCAweDYwM2UsIDB4MDgwYywKLQkweDcxZTUsIDB4MDBhMCwgMHgwMDE4LCAweDAwMTAsIDB4MDgwYywgMHg0ZjZmLCAweDA4MDQsIDB4OGM4YiwKLQkweDA4MGMsIDB4NzEwMiwgMHgyMDAxLCAweGI4YjYsIDB4MjAwNCwgMHg2MDE2LCAweDIwMDEsIDB4YjhiOCwKLQkweDIwMDQsIDB4NjAzZSwgMHg2MDAzLCAweDAwMDQsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDgwYywKLQkweDRmNmYsIDB4MDgwYywgMHg3MTAyLCAweDYwMDMsIDB4MDAwMiwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwKLQkweDYwM2UsIDB4MDAzNiwgMHgyMDE5LCAweGI2NWQsIDB4MjMwNCwgMHhhMDg0LCAweGZmMDAsIDB4MTEyMCwKLQkweDIwMDEsIDB4YjhiNiwgMHgyMDFjLCAweDAwNDAsIDB4ODAwNywgMHhhMDlhLCAweDAwMDQsIDB4MGVjMCwKLQkweDgwMDMsIDB4ODAxYiwgMHg4MzFiLCAweGEzMTgsIDB4NjMxNiwgMHgwMDNlLCAweDA4MGMsIDB4NzFlNSwKLQkweDA4ZTgsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4YTBkYiwgMHgwODBjLCAweDg2YTQsIDB4MDgwYywKLQkweDcxZTUsIDB4MDhhMCwgMHgwMGU2LCAweDAwZjYsIDB4MjA3MSwgMHhiNjgyLCAweDIwNzksIDB4MDAwMCwKLQkweDA4MGMsIDB4MzAwNCwgMHgwMGZlLCAweDAwZWUsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4ODZhNCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwODE4LCAweDA4MGMsIDB4NzEwMiwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwKLQkweDYwM2UsIDB4NjAwMywgMHgwMDAyLCAweDIwMDEsIDB4YjhiNiwgMHgyMDA0LCAweDYwMTYsIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHgyNjAwLCAweDIwMDgsIDB4MDAwMiwgMHg4Y2EzLCAweDhjYTMsIDB4OGNhMywKLQkweDhjOGIsIDB4OGM4YiwgMHg4Y2EzLCAweDA4MGMsIDB4MTUxYSwgMHgwMGU2LCAweDAwMjYsIDB4MDAxNiwKLQkweDA4MGMsIDB4OWQxNiwgMHgwNTA4LCAweDYwMTAsIDB4MjA3MCwgMHg3MDM0LCAweGEwODYsIDB4MDEzOSwKLQkweDExNDgsIDB4MjAwMSwgMHgwMDMwLCAweDIwMDksIDB4MDAwMCwgMHgyMDExLCAweDQwMDUsIDB4MDgwYywKLQkweGExOTIsIDB4MDA5MCwgMHg3MDM4LCAweGQwZmMsIDB4MDE3OCwgMHg3MDA3LCAweDAwMDAsIDB4MDAxNiwKLQkweDYwMDQsIDB4YTA4ZSwgMHgwMDIxLCAweDAxNjAsIDB4YTA4ZSwgMHgwMDNkLCAweDAxNDgsIDB4MDAxZSwKLQkweDcwMzcsIDB4MDEwMywgMHg3MDMzLCAweDAxMDAsIDB4MDAxZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwKLQkweDAwMWUsIDB4MDAwOSwgMHgwY2M4LCAweDAwZTYsIDB4YWNmMCwgMHgwMDA0LCAweDJlNzQsIDB4NzAwMCwKLQkweDIwNzAsIDB4NzAzNywgMHgwMTAzLCAweDcwMjMsIDB4ODAwMSwgMHgwMGVlLCAweDAwMDUsIDB4MDBkNiwKLQkweDY2MTgsIDB4MjY2OCwgMHg2ODA0LCAweGEwODQsIDB4MDBmZiwgMHgwMGRlLCAweGEwYjIsIDB4MDAwYywKLQkweDFhMGMsIDB4MTUxYSwgMHg2NjA0LCAweGE2YjYsIDB4MDA0MywgMHgxMTIwLCAweDA4MGMsIDB4YTE0ZSwKLQkweDA4MDQsIDB4OGQ0NCwgMHg2NjA0LCAweGE2YjYsIDB4MDAzMywgMHgxMTIwLCAweDA4MGMsIDB4YTBmZSwKLQkweDA4MDQsIDB4OGQ0NCwgMHg2NjA0LCAweGE2YjYsIDB4MDAyOCwgMHgxMTIwLCAweDA4MGMsIDB4OWY0NCwKLQkweDA4MDQsIDB4OGQ0NCwgMHg2NjA0LCAweGE2YjYsIDB4MDAyOSwgMHgxMTE4LCAweDA4MGMsIDB4OWY1YiwKLQkweDA0ZDgsIDB4NjYwNCwgMHhhNmI2LCAweDAwMWYsIDB4MTExOCwgMHgwODBjLCAweDg4MTIsIDB4MDRhMCwKLQkweDY2MDQsIDB4YTZiNiwgMHgwMDAwLCAweDExMTgsIDB4MDgwYywgMHg4YTY2LCAweDA0NjgsIDB4NjYwNCwKLQkweGE2YjYsIDB4MDAyMiwgMHgxMTE4LCAweDA4MGMsIDB4ODgzYSwgMHgwNDMwLCAweDY2MDQsIDB4YTZiNiwKLQkweDAwMzUsIDB4MTExOCwgMHgwODBjLCAweDg4YTEsIDB4MDBmOCwgMHg2NjA0LCAweGE2YjYsIDB4MDAzOSwKLQkweDExMTgsIDB4MDgwYywgMHg4YTAyLCAweDAwYzAsIDB4NjYwNCwgMHhhNmI2LCAweDAwM2QsIDB4MTExOCwKLQkweDA4MGMsIDB4ODg1NCwgMHgwMDg4LCAweDY2MDQsIDB4YTZiNiwgMHgwMDQ0LCAweDExMTgsIDB4MDgwYywKLQkweDg4NzQsIDB4MDA1MCwgMHhhMWI2LCAweDAwMTUsIDB4MTExMCwgMHgwMDUzLCAweDAwMjgsIDB4YTFiNiwKLQkweDAwMTYsIDB4MTExOCwgMHgwODA0LCAweDhmMDgsIDB4MDAwNSwgMHgwODBjLCAweDg2ZWYsIDB4MGNlMCwKLQkweDhkNmIsIDB4OGQ2ZSwgMHg4ZDZiLCAweDhkYjAsIDB4OGQ2YiwgMHg4ZTk1LCAweDhmMTYsIDB4OGQ2YiwKLQkweDhkNmIsIDB4OGVlNCwgMHg4ZDZiLCAweDhlZjgsIDB4YTFiNiwgMHgwMDQ4LCAweDAxNDAsIDB4MjBlMSwKLQkweDAwMDUsIDB4M2QxOCwgMHgzZTIwLCAweDJjMTAsIDB4MDgwYywgMHgxODYzLCAweDAwMDUsIDB4MDBlNiwKLQkweGFjZjAsIDB4MDAwNCwgMHgyZTc0LCAweDcwMDAsIDB4MjA3MCwgMHg3MDM3LCAweDAxMDMsIDB4MDBlZSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweGUwMDAsIDB4ZTAwMCwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweGI2MDAsIDB4NzA4NCwgMHhhMDg2LCAweDAwNzQsIDB4MTUzMCwgMHgwODBjLCAweGFmMTUsIDB4MTFiMCwKLQkweDAwZDYsIDB4NjAxOCwgMHgyMDY4LCAweDcwMzAsIDB4ZDA4YywgMHgwMTI4LCAweDY4MDAsIDB4ZDBiYywKLQkweDAxMTAsIDB4YzBjNSwgMHg2ODAyLCAweDAwZDksIDB4MDBkZSwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywKLQkweDRmNmYsIDB4MDgwYywgMHgyY2Y3LCAweDA4MGMsIDB4ODZhNCwgMHgwMDc4LCAweDIwMDEsIDB4MDAwYSwKLQkweDA4MGMsIDB4NGY2ZiwgMHgwODBjLCAweDJjZjcsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwKLQkweDA4MGMsIDB4NmQ0NSwgMHgwMDEwLCAweDA4MGMsIDB4OGU4MiwgMHgwMGVlLCAweDAwMDUsIDB4NjgwMCwKLQkweGQwODQsIDB4MDE2OCwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDIwNjksIDB4YjY1MiwKLQkweDY4MDQsIDB4ZDBhNCwgMHgwMTIwLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDRmOWMsIDB4MDAwNSwKLQkweDAwZDYsIDB4MjAxMSwgMHhiNjIxLCAweDIyMDQsIDB4YTA4NiwgMHgwMDc0LCAweDE5MDQsIDB4OGU3ZiwKLQkweDYwMTgsIDB4MjA2OCwgMHg2YWEwLCAweGEyODYsIDB4MDA3ZSwgMHgxMTIwLCAweDA4MGMsIDB4OTAyZSwKLQkweDA4MDQsIDB4OGUxZSwgMHgwODBjLCAweDkwMjQsIDB4NjAxOCwgMHgyMDY4LCAweGEwODAsIDB4MDAyOCwKLQkweDIwMTQsIDB4YTI4NiwgMHgwMDgwLCAweDExYzAsIDB4NjgxMywgMHgwMGZmLCAweDY4MTcsIDB4ZmZmYywKLQkweDYwMTAsIDB4YTAwNSwgMHgwMTM4LCAweDIwNjgsIDB4NjgwNywgMHgwMDAwLCAweDY4MzcsIDB4MDEwMywKLQkweDY4MzMsIDB4MDIwMCwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywgMHg0ZjZmLCAweDA4MGMsIDB4MmNmNywKLQkweDA4MGMsIDB4ODZhNCwgMHgwODA0LCAweDhlODAsIDB4MDBlNiwgMHgyMDcxLCAweGI2MzUsIDB4MmUwNCwKLQkweGQwOWMsIDB4MDE4OCwgMHgyMDcxLCAweGJjODAsIDB4NzEwOCwgMHg3MjBjLCAweGExOGMsIDB4MDBmZiwKLQkweDExMTgsIDB4YTI4NCwgMHhmZjAwLCAweDAxMzgsIDB4NjAxOCwgMHgyMDcwLCAweDcwYTAsIDB4ZDBiYywKLQkweDExMTAsIDB4NzExMiwgMHg3MjE2LCAweDAwZWUsIDB4NjAxMCwgMHhhMDA1LCAweDAxOTgsIDB4MjA2OCwKLQkweDY4MzgsIDB4ZDBmNCwgMHgwMTc4LCAweDY4MzQsIDB4YTA4NCwgMHgwMGZmLCAweGEwODYsIDB4MDAzOSwKLQkweDE5NTgsIDB4MjAwMSwgMHgwMDAwLCAweDIwMDksIDB4MDAwMCwgMHgyMDExLCAweDQwMDAsIDB4MDgwYywKLQkweGExOTIsIDB4MDg0MCwgMHgyMDAxLCAweDAwMDQsIDB4MDgwYywgMHg0ZjZmLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAwMywgMHgwODBjLCAweDZkNDUsIDB4MDgwNCwgMHg4ZTgwLCAweDY4NWMsIDB4ZDBlNCwKLQkweDAxZDgsIDB4MDgwYywgMHhhMDhlLCAweDA4MGMsIDB4NWI0MSwgMHgwMTE4LCAweGQwZGMsIDB4MTkwNCwKLQkweDhkZGEsIDB4MjAxMSwgMHhiNjM1LCAweDIyMDQsIDB4YzBhZCwgMHgyMDEyLCAweDIwMDEsIDB4Yjg4ZiwKLQkweDIwMDQsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4NzhlMywgMHgwMDAwLCAweDA4MGMsIDB4MjhhNywKLQkweDc4ZTIsIDB4MDBmZSwgMHgwODA0LCAweDhkZGEsIDB4MDgwYywgMHhhMGM0LCAweDIwMTEsIDB4YjYzNSwKLQkweDIyMDQsIDB4YzBhNSwgMHgyMDEyLCAweDAwMDYsIDB4MDgwYywgMHhiMDM3LCAweDAwMGUsIDB4MTkwNCwKLQkweDhkZGEsIDB4YzBiNSwgMHgyMDEyLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDRmNmYsIDB4MjAwMSwKLQkweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDAwYzYsIDB4MjAwOSwgMHgwMGVmLCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4NzllYSwgMHg3OTMyLCAweDc5MzYsIDB4MDBmZSwgMHgwODBjLCAweDI4N2MsIDB4MDBmNiwKLQkweDIwNzksIDB4YjYwMCwgMHg3OTc2LCAweDIxMDAsIDB4MjAwOSwgMHgwMDAwLCAweDA4MGMsIDB4Mjg1MiwKLQkweDc5NTIsIDB4MDBmZSwgMHg4MTA4LCAweDA4MGMsIDB4NGZiZiwgMHgyYzAwLCAweDAwY2UsIDB4MTkwNCwKLQkweDhkZGEsIDB4NjAxYSwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg0ZjZmLCAweDYwMWYsIDB4MDAwMSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MDgwYywgMHg2ZDQ1LCAweDAwMDgsIDB4MDAxMSwKLQkweDAwZGUsIDB4MDAwNSwgMHgyMDAxLCAweDAwMDcsIDB4MDgwYywgMHg0ZjZmLCAweDIwMDEsIDB4YjYwMCwKLQkweDIwMDQsIDB4YTA4NiwgMHgwMDAzLCAweDExMjAsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NGY5YywKLQkweDA4MGMsIDB4MmNmNywgMHgwODBjLCAweDg2YTQsIDB4MDAwNSwgMHgwMGU2LCAweDAwMjYsIDB4MDAxNiwKLQkweDIwNzEsIDB4YjYwMCwgMHg3MDg0LCAweGEwODYsIDB4MDAxNCwgMHgxNWYwLCAweDcwMDAsIDB4YTA4NiwKLQkweDAwMDMsIDB4MTEyOCwgMHg2MDEwLCAweGEwMDUsIDB4MTExMCwgMHgwODBjLCAweDNmODUsIDB4MDBkNiwKLQkweDYwMTgsIDB4MjA2OCwgMHgwODBjLCAweDUwYmQsIDB4MDgwYywgMHg4ZDlmLCAweDAwZGUsIDB4MDgwYywKLQkweDkwZGQsIDB4MTU1MCwgMHgwMGQ2LCAweDYwMTgsIDB4MjA2OCwgMHg2ODkwLCAweDAwZGUsIDB4YTAwNSwKLQkweDA1MTgsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NGY2ZiwgMHgwMGU2LCAweDYwMTAsIDB4YTA3NSwKLQkweDAxYTgsIDB4NzAzNCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4NiwgMHgwMDM5LCAweDExNDgsIDB4MjAwMSwKLQkweDAwMDAsIDB4MjAwOSwgMHgwMDAwLCAweDIwMTEsIDB4NDAwMCwgMHgwODBjLCAweGExOTIsIDB4MDAzMCwKLQkweDcwMDcsIDB4MDAwMCwgMHg3MDM3LCAweDAxMDMsIDB4NzAzMywgMHgwMjAwLCAweDAwZWUsIDB4MDgwYywKLQkweDJjZjcsIDB4MDgwYywgMHg4NmE0LCAweDAwMjAsIDB4MDgwYywgMHg4Y2E1LCAweDA4MGMsIDB4OGU4MiwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMGVlLCAweDAwMDUsIDB4MjAxMSwgMHhiNjIxLCAweDIyMDQsIDB4YTA4NiwKLQkweDAwMTQsIDB4MTE1OCwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg0ZjZmLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAwMSwgMHgwODBjLCAweDZkNDUsIDB4MDAxMCwgMHgwODBjLCAweDhlODIsIDB4MDAwNSwKLQkweDIwMTEsIDB4YjYyMSwgMHgyMjA0LCAweGEwODYsIDB4MDAwNCwgMHgxMTM4LCAweDIwMDEsIDB4MDAwNywKLQkweDA4MGMsIDB4NGY2ZiwgMHgwODBjLCAweDg2YTQsIDB4MDAxMCwgMHgwODBjLCAweDhlODIsIDB4MDAwNSwKLQkweDAwMGIsIDB4MDAwNSwgMHg4ZDZiLCAweDhmMjEsIDB4OGQ2YiwgMHg4ZjU1LCAweDhkNmIsIDB4OGZlMCwKLQkweDhmMTYsIDB4OGQ2YiwgMHg4ZDZiLCAweDhmZjMsIDB4OGQ2YiwgMHg5MDAzLCAweDY2MDQsIDB4YTY4NiwKLQkweDAwMDMsIDB4MDkwNCwgMHg4ZTk1LCAweGE2YjYsIDB4MDAxZSwgMHgxMTEwLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDA4MGMsIDB4OTAxMywgMHgxMTc4LCAweDIwMDEsIDB4MDAwMCwKLQkweDA4MGMsIDB4NGY1ZCwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg0ZjZmLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAwMiwgMHgwODBjLCAweDZkNDUsIDB4MDBlOCwgMHgyMDA5LCAweGJjOGUsIDB4MjEwNCwKLQkweGEwODYsIDB4MDAwOSwgMHgxMTYwLCAweDYwMTgsIDB4MjA2OCwgMHg2ODQwLCAweGEwODQsIDB4MDBmZiwKLQkweGEwMDUsIDB4MDE3MCwgMHg4MDAxLCAweDY4NDIsIDB4NjAxNywgMHgwMDBhLCAweDAwNTgsIDB4MjAwOSwKLQkweGJjOGYsIDB4MjEwNCwgMHhhMDg0LCAweGZmMDAsIDB4YTA4NiwgMHgxOTAwLCAweDExMDgsIDB4MDhkMCwKLQkweDA4MGMsIDB4OGU4MiwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHgwMDI2LCAweDIwMTEsIDB4MDAwMCwKLQkweDA4MGMsIDB4OTAyMSwgMHgwMGQ2LCAweDIwNjksIDB4Yjg5ZSwgMHgyZDA0LCAweGEwMDUsIDB4MDE2OCwKLQkweDYwMTgsIDB4MjA2OCwgMHg2OGEwLCAweGEwODYsIDB4MDA3ZSwgMHgxMTM4LCAweDIwNjksIDB4YjYxZCwKLQkweDJkMDQsIDB4ODAwMCwgMHgyMDZhLCAweDAwZGUsIDB4MDAxMCwgMHgwMGRlLCAweDAwNzgsIDB4MjAwMSwKLQkweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDRmNmYsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAyLCAweDA4MGMsIDB4NmQ0NSwgMHgwNDgwLCAweDAwZDYsIDB4NjAxMCwKLQkweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAwZGUsIDB4MDEwOCwgMHg2YTM0LCAweDA4MGMsIDB4OGNhNSwKLQkweDIwMDksIDB4YmM4ZSwgMHgyMTM0LCAweGE2YjQsIDB4MDBmZiwgMHhhNjg2LCAweDAwMDUsIDB4MDUwMCwKLQkweGE2ODYsIDB4MDAwYiwgMHgwMWM4LCAweDIwMDksIDB4YmM4ZiwgMHgyMTA0LCAweGEwODQsIDB4ZmYwMCwKLQkweDExMTgsIDB4YTY4NiwgMHgwMDA5LCAweDAxYTAsIDB4YTA4NiwgMHgxOTAwLCAweDExNjgsIDB4YTY4NiwKLQkweDAwMDksIDB4MDE3MCwgMHgyMDAxLCAweDAwMDQsIDB4MDgwYywgMHg0ZjZmLCAweDIwMDEsIDB4MDAyOCwKLQkweDYwMTYsIDB4NjAwNywgMHgwMDRiLCAweDAwMTAsIDB4MDgwYywgMHg4ZTgyLCAweDAwMmUsIDB4MDAwNSwKLQkweDAwZDYsIDB4YTI4NiwgMHgwMTM5LCAweDAxNjAsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxNDgsIDB4NjgzNCwgMHhhMDg2LCAweDAxMzksIDB4MDExOCwgMHg2ODM4LCAweGQwZmMsIDB4MDExMCwKLQkweDAwZGUsIDB4MGM1MCwgMHg2MDE4LCAweDIwNjgsIDB4Njg0MCwgMHhhMDg0LCAweDAwZmYsIDB4YTAwNSwKLQkweDAxNDAsIDB4ODAwMSwgMHg2ODQyLCAweDYwMTcsIDB4MDAwYSwgMHg2MDA3LCAweDAwMTYsIDB4MDBkZSwKLQkweDA4ZTgsIDB4NjhhMCwgMHhhMDg2LCAweDAwN2UsIDB4MTEzOCwgMHgwMGU2LCAweDIwNzEsIDB4YjYwMCwKLQkweDA4MGMsIDB4NGMyOCwgMHgwMGVlLCAweDAwMTAsIDB4MDgwYywgMHgyY2QxLCAweDAwZGUsIDB4MDg2MCwKLQkweDA4MGMsIDB4OTAyMSwgMHgxMTU4LCAweDIwMDEsIDB4MDAwNCwgMHgwODBjLCAweDRmNmYsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAzLCAweDA4MGMsIDB4NmQ0NSwgMHgwMDIwLCAweDA4MGMsIDB4OGNhNSwKLQkweDA4MGMsIDB4OGU4MiwgMHgwMDA1LCAweDA0NjksIDB4MTE1OCwgMHgyMDAxLCAweDAwMDgsIDB4MDgwYywKLQkweDRmNmYsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwNSwgMHgwODBjLCAweDZkNDUsIDB4MDAxMCwKLQkweDA4MGMsIDB4OGU4MiwgMHgwMDA1LCAweDAwZTksIDB4MTE1OCwgMHgyMDAxLCAweDAwMGEsIDB4MDgwYywKLQkweDRmNmYsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwgMHgwODBjLCAweDZkNDUsIDB4MDAxMCwKLQkweDA4MGMsIDB4OGU4MiwgMHgwMDA1LCAweDIwMDksIDB4YmM4ZSwgMHgyMTA0LCAweGEwODYsIDB4MDAwMywKLQkweDExMzgsIDB4MjAwOSwgMHhiYzhmLCAweDIxMDQsIDB4YTA4NCwgMHhmZjAwLCAweGEwODYsIDB4MmEwMCwKLQkweDAwMDUsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDBjNiwgMHgwMDE2LCAweGFjODgsIDB4MDAwNiwKLQkweDIxNjQsIDB4MDgwYywgMHg1MDJhLCAweDAwMWUsIDB4MDBjZSwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwKLQkweDAwZDYsIDB4MDAzNiwgMHgwMDE2LCAweDYwMTgsIDB4MjA2OCwgMHgyMDcxLCAweGI2MzUsIDB4MmUwNCwKLQkweGEwODUsIDB4MDAwMywgMHgyMDcyLCAweDA4MGMsIDB4OTBiMiwgMHgwNTYwLCAweDIwMDksIDB4YjYzNSwKLQkweDIxMDQsIDB4YzBjZCwgMHgyMDBhLCAweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYTQsIDB4MDE1OCwKLQkweGEwMDYsIDB4MjAyMCwgMHgyMDA5LCAweDAwMmEsIDB4MDgwYywgMHhiMWE0LCAweDIwMDEsIDB4YjYwYywKLQkweDIwMGMsIDB4YzE5NSwgMHgyMTAyLCAweDIwMTksIDB4MDAyYSwgMHgyMDA5LCAweDAwMDEsIDB4MDgwYywKLQkweDJjYTQsIDB4MjA3MSwgMHhiNjAwLCAweDA4MGMsIDB4MmFlZCwgMHgwMGM2LCAweDAxNTYsIDB4MjBhOSwKLQkweDAwODEsIDB4MjAwOSwgMHgwMDdmLCAweDA4MGMsIDB4MmRjYywgMHg4MTA4LCAweDFmMDQsIDB4OTA2MywKLQkweDAxNWUsIDB4MDBjZSwgMHgwODBjLCAweDkwMjQsIDB4NjgxMywgMHgwMGZmLCAweDY4MTcsIDB4ZmZmZSwKLQkweDIwNzEsIDB4YmM4MCwgMHgyMDc5LCAweDAxMDAsIDB4MmUwNCwgMHhhMDg0LCAweDAwZmYsIDB4MjA2OSwKLQkweGI2MWMsIDB4MjA2YSwgMHg3OGU2LCAweDAwMDYsIDB4OGU3MCwgMHgyZTA0LCAweDIwNjksIDB4YjYxZCwKLQkweDIwNmEsIDB4NzhlYSwgMHg3ODMyLCAweDc4MzYsIDB4MjAxMCwgMHhhMDg0LCAweGZmMDAsIDB4MDAxZSwKLQkweGExMDUsIDB4MjAwOSwgMHhiNjI4LCAweDIwMGEsIDB4MjIwMCwgMHhhMDg0LCAweDAwZmYsIDB4MjAwOCwKLQkweDA4MGMsIDB4Mjg3YywgMHgwODBjLCAweDViNDEsIDB4MDE3MCwgMHgyMDY5LCAweGJjOGUsIDB4MjA3MSwKLQkweGI4YjIsIDB4NjgxMCwgMHgyMDcyLCAweDY4MTQsIDB4NzAwNiwgMHg2ODE4LCAweDcwMGEsIDB4NjgxYywKLQkweDcwMGUsIDB4MDgwYywgMHhhMDhlLCAweDAwNDAsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NGY2ZiwKLQkweDA4MGMsIDB4MmNmNywgMHgwODBjLCAweDg2YTQsIDB4MDAxZSwgMHgwMDNlLCAweDAwZGUsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMDI2LCAweDAwMzYsIDB4MDBlNiwgMHgwMTU2LCAweDIwMTksIDB4YjYyOCwKLQkweDIzMWMsIDB4ODNmZiwgMHgwMWU4LCAweDIwNzEsIDB4YmM4MCwgMHgyZTE0LCAweGEyOTQsIDB4MDBmZiwKLQkweDcwMDQsIDB4YTA4NCwgMHhmZjAwLCAweGEyMDUsIDB4YTMwNiwgMHgxMTkwLCAweDIwMTEsIDB4YmM5NiwKLQkweGFkOTgsIDB4MDAwYSwgMHgyMGE5LCAweDAwMDQsIDB4MDgwYywgMHg5MTY2LCAweDExNDgsIDB4MjAxMSwKLQkweGJjOWEsIDB4YWQ5OCwgMHgwMDA2LCAweDIwYTksIDB4MDAwNCwgMHgwODBjLCAweDkxNjYsIDB4MTEwMCwKLQkweDAxNWUsIDB4MDBlZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4YmM4YywKLQkweDcwMDQsIDB4YTA4NiwgMHgwMDE0LCAweDExYTgsIDB4NzAwOCwgMHhhMDg2LCAweDA4MDAsIDB4MTE4OCwKLQkweDcwMGMsIDB4ZDBlYywgMHgwMTYwLCAweGEwODQsIDB4MGYwMCwgMHhhMDg2LCAweDAxMDAsIDB4MTEzOCwKLQkweDcwMjQsIDB4ZDBhNCwgMHgxMTEwLCAweGQwYWMsIDB4MDExMCwgMHhhMDA2LCAweDAwMTAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNzYsIDB4MDA1NiwKLQkweDAwNDYsIDB4MDAyNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwMjksIDB4YjhlYSwKLQkweDI1MmMsIDB4MjAyMSwgMHhiOGYwLCAweDI0MjQsIDB4MjA2MSwgMHhiZTAwLCAweDIwNzEsIDB4YjYwMCwKLQkweDcyNDgsIDB4NzA2OCwgMHhhMjAyLCAweDE2ZjAsIDB4MDgwYywgMHhiMWNjLCAweDA1YTAsIDB4NjcxYywKLQkweGE3ODYsIDB4MDAwMSwgMHgwNTgwLCAweGE3ODYsIDB4MDAwNywgMHgwNTY4LCAweDI1MDAsIDB4YWMwNiwKLQkweDA1NTAsIDB4MjQwMCwgMHhhYzA2LCAweDA1MzgsIDB4MDBjNiwgMHg2MDAwLCAweGEwODYsIDB4MDAwNCwKLQkweDExMTAsIDB4MDgwYywgMHgxOTUyLCAweGE3ODYsIDB4MDAwOCwgMHgxMTQ4LCAweDA4MGMsIDB4OWYxNCwKLQkweDExMzAsIDB4MDBjZSwgMHgwODBjLCAweDhjYTUsIDB4MDgwYywgMHg5ZWQ5LCAweDAwYTAsIDB4NjAxMCwKLQkweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxNjAsIDB4YTc4NiwgMHgwMDAzLCAweDExZTgsIDB4NjgzNywKLQkweDAxMDMsIDB4NmI0YSwgMHg2ODQ3LCAweDAwMDAsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4OWVjZCwKLQkweDA4MGMsIDB4OWVkOSwgMHgwMGNlLCAweGFjZTAsIDB4MDAxOCwgMHg3MDVjLCAweGFjMDIsIDB4MTIxMCwKLQkweDA4MDQsIDB4OTExMCwgMHgwMTJlLCAweDAwMGUsIDB4MDAyZSwgMHgwMDRlLCAweDAwNWUsIDB4MDA3ZSwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4YTc4NiwgMHgwMDA2LCAweDExMTgsIDB4MDgwYywKLQkweGIxNTUsIDB4MGMzMCwgMHhhNzg2LCAweDAwMGEsIDB4MDllMCwgMHgwOGM4LCAweDIyMGMsIDB4MjMwNCwKLQkweGExMDYsIDB4MTEzMCwgMHg4MjEwLCAweDgzMTgsIDB4MWYwNCwgMHg5MTY2LCAweGEwMDYsIDB4MDAwNSwKLQkweDIzMDQsIDB4YTEwMiwgMHgwMjE4LCAweDIwMDEsIDB4MDAwMSwgMHgwMDEwLCAweDIwMDEsIDB4MDAwMCwKLQkweGExOGQsIDB4MDAwMSwgMHgwMDA1LCAweDYwMDQsIDB4YTA4YSwgMHgwMDgwLCAweDFhMGMsIDB4MTUxYSwKLQkweDA4MGMsIDB4OWYwMywgMHgwMTIwLCAweDA4MGMsIDB4OWYxNCwgMHgwMTY4LCAweDAwMjgsIDB4MDgwYywKLQkweDJjZjcsIDB4MDgwYywgMHg5ZjE0LCAweDAxMzgsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4ODZhNCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDA4MGMsIDB4OGNhNSwgMHgwY2IwLCAweGExODIsIDB4MDA0MCwKLQkweDAwMDIsIDB4OTFhYywgMHg5MWFjLCAweDkxYWMsIDB4OTFhYywgMHg5MWFjLCAweDkxYWMsIDB4OTFhYywKLQkweDkxYWMsIDB4OTFhYywgMHg5MWFjLCAweDkxYWMsIDB4OTFhZSwgMHg5MWFlLCAweDkxYWUsIDB4OTFhZSwKLQkweDkxYWMsIDB4OTFhYywgMHg5MWFjLCAweDkxYWUsIDB4MDgwYywgMHgxNTFhLCAweDYwMGIsIDB4ZmZmZiwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDA4MGMsIDB4NmNmZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMTJlLCAweDAwMDUsIDB4YTE4NiwgMHgwMDEzLCAweDExMjgsIDB4NjAwNCwKLQkweGEwODIsIDB4MDA0MCwgMHgwODA0LCAweDkyNDgsIDB4YTE4NiwgMHgwMDI3LCAweDExZTgsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHgyY2QxLCAweDAwZDYsIDB4NjExMCwgMHgyMTY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxNjgsIDB4NjgzNywgMHgwMTAzLCAweDY4NGIsIDB4MDAyOSwgMHg2ODQ3LCAweDAwMDAsIDB4Njk0YywKLQkweGMxYzUsIDB4Njk0ZSwgMHgwODBjLCAweDU0N2EsIDB4MDgwYywgMHg5ZWNkLCAweDAwZGUsIDB4MDgwYywKLQkweDg2YTQsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4YTE4NiwgMHgwMDE0LCAweDExMjAsIDB4NjAwNCwKLQkweGEwODIsIDB4MDA0MCwgMHgwNDI4LCAweGExODYsIDB4MDA0NiwgMHgwMTM4LCAweGExODYsIDB4MDA0NSwKLQkweDAxMjAsIDB4YTE4NiwgMHgwMDQ3LCAweDE5MGMsIDB4MTUxYSwgMHgyMDAxLCAweDAxMDksIDB4MjAwNCwKLQkweGQwODQsIDB4MDE5OCwgMHgwMTI2LCAweDIwOTEsIDB4MjgwMCwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwKLQkweDA4MGMsIDB4NmJlNiwgMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwgMHgwMTJlLCAweGUwMDAsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMiwgMHgxMTEwLCAweDA4MDQsIDB4OTI4NiwgMHgwODBjLCAweDg2ZWYsIDB4MDAwNSwKLQkweDAwMDIsIDB4OTIyNiwgMHg5MjI0LCAweDkyMjQsIDB4OTIyNCwgMHg5MjI0LCAweDkyMjQsIDB4OTIyNCwKLQkweDkyMjQsIDB4OTIyNCwgMHg5MjI0LCAweDkyMjQsIDB4OTI0MSwgMHg5MjQxLCAweDkyNDEsIDB4OTI0MSwKLQkweDkyMjQsIDB4OTI0MSwgMHg5MjI0LCAweDkyNDEsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4NzEwMiwKLQkweDAwZDYsIDB4NjExMCwgMHgyMTY4LCAweDA4MGMsIDB4OWQxNiwgMHgwMTY4LCAweDY4MzcsIDB4MDEwMywKLQkweDY4NGIsIDB4MDAwNiwgMHg2ODQ3LCAweDAwMDAsIDB4Njg1MCwgMHhjMGVjLCAweDY4NTIsIDB4MDgwYywKLQkweDU0N2EsIDB4MDgwYywgMHg5ZWNkLCAweDAwZGUsIDB4MDgwYywgMHg4NmE0LCAweDA4MGMsIDB4NzFlNSwKLQkweDAwMDUsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4ODZhNCwgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwKLQkweDAwMDIsIDB4OTI1ZSwgMHg5MjVjLCAweDkyNWMsIDB4OTI1YywgMHg5MjVjLCAweDkyNWMsIDB4OTI1YywKLQkweDkyNWMsIDB4OTI1YywgMHg5MjVjLCAweDkyNWMsIDB4OTI3MCwgMHg5MjcwLCAweDkyNzAsIDB4OTI3MCwKLQkweDkyNWMsIDB4OTI3ZiwgMHg5MjVjLCAweDkyNzAsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4NzEwMiwKLQkweDIwMDEsIDB4YjhiOCwgMHgyMDA0LCAweDYwM2UsIDB4NjAwMywgMHgwMDAyLCAweDA4MGMsIDB4NzFlNSwKLQkweDYwMTAsIDB4YTA4OCwgMHgwMDEzLCAweDIxMDQsIDB4YTA4NSwgMHgwNDAwLCAweDIwMGEsIDB4MDAwNSwKLQkweDA4MGMsIDB4NzEwMiwgMHgyMDAxLCAweGI4YjYsIDB4MjAwNCwgMHg2MDE2LCAweDIwMDEsIDB4YjhiOCwKLQkweDIwMDQsIDB4NjAzZSwgMHg2MDAzLCAweDAwMGYsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg4NmE0LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweGExODIsIDB4MDA0MCwKLQkweDAwMDIsIDB4OTI5YywgMHg5MjljLCAweDkyOWMsIDB4OTI5YywgMHg5MjljLCAweDkyOWUsIDB4OTM4NiwKLQkweDkzYjUsIDB4OTI5YywgMHg5MjljLCAweDkyOWMsIDB4OTI5YywgMHg5MjljLCAweDkyOWMsIDB4OTI5YywKLQkweDkyOWMsIDB4OTI5YywgMHg5MjljLCAweDkyOWMsIDB4MDgwYywgMHgxNTFhLCAweDAwZTYsIDB4MDBkNiwKLQkweDYwM2YsIDB4MDAwMCwgMHgyMDcxLCAweGJjODAsIDB4NzEyNCwgMHg2MTBhLCAweDIwNzEsIDB4YmM4YywKLQkweDYxMTAsIDB4MjE2OCwgMHg3NjE0LCAweGE2YjQsIDB4MGZmZiwgMHg4NmZmLCAweDA5MDQsIDB4OTM0YywKLQkweGE2OGMsIDB4MGMwMCwgMHgwNTE4LCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDUzNzcsIDB4MDBmZSwKLQkweDAxYzgsIDB4Njg0YywgMHhkMGFjLCAweDAxYjAsIDB4NjAyMCwgMHhkMGRjLCAweDExOTgsIDB4Njg1MCwKLQkweGQwYmMsIDB4MTE4MCwgMHg3MzE4LCAweDY4MTQsIDB4YTMwNiwgMHgxOTA0LCAweDkzNWYsIDB4NzMxYywKLQkweDY4MTAsIDB4YTMxZSwgMHgwMTM4LCAweGQ2ZDQsIDB4MDkwNCwgMHg5MzVmLCAweDZiMTQsIDB4YTMwNSwKLQkweDE5MDQsIDB4OTM1ZiwgMHg3MzE4LCAweDZiNjIsIDB4NzMxYywgMHg2YjVlLCAweGE2OGMsIDB4MDBmZiwKLQkweGExODYsIDB4MDAwMiwgMHgwNTE4LCAweGExODYsIDB4MDAyOCwgMHgxMTI4LCAweDA4MGMsIDB4OWVmMiwKLQkweDY4NGIsIDB4MDAxYywgMHgwMGU4LCAweGQ2ZGMsIDB4MDFhMCwgMHg2ODRiLCAweDAwMTUsIDB4Njg0YywKLQkweGQwYWMsIDB4MDE3MCwgMHg2OTE0LCAweDZhMTAsIDB4MjEwMCwgMHhhMjA1LCAweDAxNDgsIDB4NzAxOCwKLQkweGExMDYsIDB4MTExOCwgMHg3MDFjLCAweGEyMDYsIDB4MDExOCwgMHg2OTYyLCAweDZhNWUsIDB4YzZkYywKLQkweDAwMzgsIDB4ZDZkNCwgMHgwMTE4LCAweDY4NGIsIDB4MDAwNywgMHgwMDEwLCAweDY4NGIsIDB4MDAwMCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ZTQ2LCAweGEwMWUsIDB4ZDZjNCwgMHgwMWYwLCAweGE2ODYsIDB4MDEwMCwKLQkweDExNDAsIDB4MjAwMSwgMHhiYzk5LCAweDIwMDQsIDB4YTAwNSwgMHgxMTE4LCAweGM2YzQsIDB4MDgwNCwKLQkweDkyYWQsIDB4NzMyOCwgMHg3MzJjLCAweDZiNTYsIDB4ODNmZiwgMHgwMTcwLCAweGEzOGEsIDB4MDAwOSwKLQkweDAyMTAsIDB4MjAxOSwgMHgwMDA4LCAweDAwMzYsIDB4MjMwOCwgMHgyMDE5LCAweGJjOTgsIDB4YWQ5MCwKLQkweDAwMTksIDB4MDgwYywgMHg5OWM5LCAweDAwM2UsIDB4ZDZjYywgMHgwOTA0LCAweDkzNzUsIDB4NzEyNCwKLQkweDY5NWEsIDB4ODFmZiwgMHgwOTA0LCAweDkzNzUsIDB4YTE5MiwgMHgwMDIxLCAweDEyNjAsIDB4MjA3MSwKLQkweGJjOTgsIDB4ODMxYywgMHgyMzAwLCAweGFlMTgsIDB4YWQ5MCwgMHgwMDFkLCAweDA4MGMsIDB4OTljOSwKLQkweDA4MGMsIDB4YTFmMywgMHgwNGQwLCAweDY4MzgsIDB4ZDBmYywgMHgwMTIwLCAweDIwMDksIDB4MDAyMCwKLQkweDY5NWEsIDB4MGM2OCwgMHgwMGY2LCAweDJkNzgsIDB4MDgwYywgMHg5OTZlLCAweDAwZmUsIDB4MDgwYywKLQkweGExZjMsIDB4MDgwYywgMHg5OWI5LCAweDA0NTgsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4NTM3NywKLQkweDAwZmUsIDB4MDE5MCwgMHg2ODRjLCAweGQwYWMsIDB4MDE3OCwgMHg2MDIwLCAweGQwZGMsIDB4MTE2MCwKLQkweDY4NTAsIDB4ZDBiYywgMHgxMTQ4LCAweDY4MTAsIDB4NjkxNCwgMHhhMTA1LCAweDAxMjgsIDB4MDgwYywKLQkweDlmZjEsIDB4MDBkZSwgMHgwMGVlLCAweDA0MDgsIDB4Njg0YiwgMHgwMDAwLCAweDY4MzcsIDB4MDEwMywKLQkweDZlNDYsIDB4MDgwYywgMHg5NTIzLCAweDExNDgsIDB4Njg0YywgMHhkMGFjLCAweDAxMzAsIDB4NjgxMCwKLQkweDY5MTQsIDB4YTExNSwgMHgwMTEwLCAweDA4MGMsIDB4OTUzZiwgMHgwODBjLCAweDU0N2EsIDB4NjIxOCwKLQkweDIyNjgsIDB4NmEzYywgMHg4MmZmLCAweDAxMTAsIDB4ODIxMSwgMHg2YTNlLCAweDA4MGMsIDB4OWZiZiwKLQkweDAwZGUsIDB4MDBlZSwgMHgxMTEwLCAweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweDAwZjYsIDB4NjAwMywKLQkweDAwMDMsIDB4MjA3OSwgMHhiYzhjLCAweDdjMDQsIDB4N2IwMCwgMHg3ZTBjLCAweDdkMDgsIDB4NjAxMCwKLQkweDIwNzgsIDB4Nzg0YywgMHhkMGFjLCAweDAxMzgsIDB4NjAwMywgMHgwMDAyLCAweDAwZmUsIDB4MDAwNSwKLQkweDIxMzAsIDB4MjIyOCwgMHgwMDU4LCAweDI0MDAsIDB4Nzk3YywgMHhhMTBhLCAweDIzMDAsIDB4N2E4MCwKLQkweGEyMTMsIDB4MjYwMCwgMHhhMTAyLCAweDI1MDAsIDB4YTIwMywgMHgwZTkwLCAweDdjMTIsIDB4N2IxNiwKLQkweDdlMGEsIDB4N2QwZSwgMHgwMGZlLCAweDYwM2YsIDB4MDAwMCwgMHgyYzEwLCAweDA4MGMsIDB4MWZjNSwKLQkweDA4MGMsIDB4NmQ2MiwgMHgwODBjLCAweDcyYTIsIDB4MDAwNSwgMHgyMDAxLCAweGI4YjgsIDB4MjAwNCwKLQkweDYwM2UsIDB4NjAwMywgMHgwMDA0LCAweDYxMTAsIDB4MjBlMSwgMHgwMDA1LCAweDNkMTgsIDB4M2UyMCwKLQkweDJjMTAsIDB4MDgwYywgMHgxODYzLCAweDAwMDUsIDB4YTE4MiwgMHgwMDQwLCAweDAwMDIsIDB4OTNkYSwKLQkweDkzZGEsIDB4OTNkYSwgMHg5M2RhLCAweDkzZGEsIDB4OTNkYywgMHg5NDZmLCAweDkzZGEsIDB4OTNkYSwKLQkweDk0ODUsIDB4OTRlYiwgMHg5M2RhLCAweDkzZGEsIDB4OTNkYSwgMHg5M2RhLCAweDk1MDksIDB4OTNkYSwKLQkweDkzZGEsIDB4OTNkYSwgMHgwODBjLCAweDE1MWEsIDB4MDA3NiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwKLQkweDIwNzEsIDB4YmM4YywgMHg2MTEwLCAweDIxNzgsIDB4NzYxNCwgMHhhNmI0LCAweDBmZmYsIDB4N2U0NiwKLQkweDdmNGMsIDB4YzdlNSwgMHg3ZjRlLCAweDYyMTgsIDB4MjI2OCwgMHg2YTNjLCAweDgyZmYsIDB4MDExMCwKLQkweDgyMTEsIDB4NmEzZSwgMHg4NmZmLCAweDA5MDQsIDB4OTQ2YSwgMHhhNjk0LCAweGZmMDAsIDB4YTI4NCwKLQkweDBjMDAsIDB4MDEyMCwgMHg3MDE4LCAweDc4NjIsIDB4NzAxYywgMHg3ODVlLCAweGEyODQsIDB4MDMwMCwKLQkweDA5MDQsIDB4OTQ2YSwgMHgwODBjLCAweDE1ZmQsIDB4MDkwYywgMHgxNTFhLCAweDJkMDAsIDB4Nzg0YSwKLQkweDdmNGMsIDB4YzdjZCwgMHg3ZjRlLCAweDY4MzcsIDB4MDEwMywgMHg3ODM4LCAweDY4M2EsIDB4NzgzYywKLQkweDY4M2UsIDB4Nzg0MCwgMHg2ODQyLCAweDZlNDYsIDB4YTY4YywgMHgwYzAwLCAweDAxMjAsIDB4NzMxOCwKLQkweDZiNjIsIDB4NzMxYywgMHg2YjVlLCAweGE2OGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMDIsIDB4MDE4MCwKLQkweGExODYsIDB4MDAyOCwgMHgxMTE4LCAweDY4NGIsIDB4MDAxYywgMHgwMDYwLCAweGQ2ZGMsIDB4MDExOCwKLQkweDY4NGIsIDB4MDAxNSwgMHgwMDM4LCAweGQ2ZDQsIDB4MDExOCwgMHg2ODRiLCAweDAwMDcsIDB4MDAxMCwKLQkweDY4NGIsIDB4MDAwMCwgMHg2ZjRlLCAweDc4NTAsIDB4Njg1MiwgMHg3ODU0LCAweDY4NTYsIDB4YTAxZSwKLQkweGQ2YzQsIDB4MDE5OCwgMHg3MzI4LCAweDczMmMsIDB4NmI1NiwgMHg4M2ZmLCAweDAxNzAsIDB4YTM4YSwKLQkweDAwMDksIDB4MDIxMCwgMHgyMDE5LCAweDAwMDgsIDB4MDAzNiwgMHgyMzA4LCAweDIwMTksIDB4YmM5OCwKLQkweGFkOTAsIDB4MDAxOSwgMHgwODBjLCAweDk5YzksIDB4MDAzZSwgMHhkNmNjLCAweDAxZDgsIDB4NzEyNCwKLQkweDY5NWEsIDB4ODFmZiwgMHgwMWI4LCAweGExOTIsIDB4MDAyMSwgMHgxMjUwLCAweDIwNzEsIDB4YmM5OCwKLQkweDgzMWMsIDB4MjMwMCwgMHhhZTE4LCAweGFkOTAsIDB4MDAxZCwgMHgwODBjLCAweDk5YzksIDB4MDA1MCwKLQkweDc4MzgsIDB4ZDBmYywgMHgwMTIwLCAweDIwMDksIDB4MDAyMCwgMHg2OTVhLCAweDBjNzgsIDB4MmQ3OCwKLQkweDA4MGMsIDB4OTk2ZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDdlLCAweDAwMDUsIDB4MDBmNiwKLQkweDYwMDMsIDB4MDAwMywgMHgyMDc5LCAweGJjOGMsIDB4N2MwNCwgMHg3YjAwLCAweDdlMGMsIDB4N2QwOCwKLQkweDYwMTAsIDB4MjA3OCwgMHg3YzEyLCAweDdiMTYsIDB4N2UwYSwgMHg3ZDBlLCAweDAwZmUsIDB4MmMxMCwKLQkweDA4MGMsIDB4MWZjNSwgMHgwODBjLCAweDdkZDksIDB4MDAwNSwgMHgwMGQ2LCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4NTM3NywgMHgwMGZlLCAweDAxMjAsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDQsIDB4NjAzZSwKLQkweDYwMDMsIDB4MDAwMiwgMHgwODBjLCAweDcxOTgsIDB4MDgwYywgMHg3MmEyLCAweDYxMTAsIDB4MjE2OCwKLQkweDY5NGMsIDB4ZDFlNCwgMHgwOTA0LCAweDk0ZTksIDB4ZDFjYywgMHgwNTQwLCAweDY5NDgsIDB4NjgzOCwKLQkweGQwZmMsIDB4MDFlOCwgMHgwMDE2LCAweDY4NGMsIDB4MDAwNiwgMHg2ODUwLCAweDAwMDYsIDB4YWQ5MCwKLQkweDAwMGQsIDB4YTE5OCwgMHgwMDBkLCAweDIwMDksIDB4MDAyMCwgMHgwMTU2LCAweDIxYTgsIDB4MjMwNCwKLQkweDIwMTIsIDB4ODMxOCwgMHg4MjEwLCAweDFmMDQsIDB4OTRhZiwgMHgwMTVlLCAweDAwMGUsIDB4Njg1MiwKLQkweDAwMGUsIDB4Njg0ZSwgMHgwMDFlLCAweDIxNjgsIDB4MDgwYywgMHgxNjI0LCAweDA0MjgsIDB4MDAxNiwKLQkweDA4MGMsIDB4MTYyNCwgMHgwMGRlLCAweDA4MGMsIDB4OTliOSwgMHgwMGYwLCAweDY4MzcsIDB4MDEwMywKLQkweDY5NDQsIDB4YTE4NCwgMHgwMGZmLCAweGEwYjYsIDB4MDAwMiwgMHgwMTgwLCAweGEwODYsIDB4MDAyOCwKLQkweDExMTgsIDB4Njg0YiwgMHgwMDFjLCAweDAwNzAsIDB4ZDFkYywgMHgwMTE4LCAweDY4NGIsIDB4MDAxNSwKLQkweDAwNDgsIDB4ZDFkNCwgMHgwMTE4LCAweDY4NGIsIDB4MDAwNywgMHgwMDIwLCAweDY4NGIsIDB4MDAwMCwKLQkweDA4MGMsIDB4OTUyMywgMHgwODBjLCAweDU0N2EsIDB4MDgwYywgMHg5ZmJmLCAweDExMTAsIDB4MDgwYywKLQkweDg2YTQsIDB4MDBkZSwgMHgwMDA1LCAweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweDgwNmIsIDB4NjAwMywKLQkweDAwMDIsIDB4MDBkNiwgMHg2MDEwLCAweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxNDAsIDB4NjgwOCwKLQkweDYxMmMsIDB4YTEwYSwgMHg2MTJlLCAweDY4MGMsIDB4NjEyOCwgMHhhMTBiLCAweDYxMmEsIDB4MDBkZSwKLQkweDIwMDEsIDB4YjhiOCwgMHgyMDA0LCAweDYwM2UsIDB4MDgwYywgMHg3MTk4LCAweDA4MGMsIDB4NzJhMiwKLQkweDAwMDUsIDB4MDgwYywgMHg3MTk4LCAweDA4MGMsIDB4MmNkMSwgMHgwMGQ2LCAweDYxMTAsIDB4MjE2OCwKLQkweDA4MGMsIDB4OWQxNiwgMHgwMTUwLCAweDY4MzcsIDB4MDEwMywgMHg2ODRiLCAweDAwMjksIDB4Njg0NywKLQkweDAwMDAsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4OWVjZCwgMHgwMGRlLCAweDA4MGMsIDB4ODZhNCwKLQkweDA4MGMsIDB4NzJhMiwgMHgwMDA1LCAweDY4NGMsIDB4ZDBiNCwgMHgwMWMwLCAweDYwMmMsIDB4Njk3YywKLQkweGExMTIsIDB4NjAyOCwgMHg2OTgwLCAweGExMGIsIDB4MjEwMCwgMHhhMjA1LCAweDAxNjgsIDB4Njg0YiwKLQkweDAwMTUsIDB4ZDFmYywgMHgwMTM4LCAweDY4NGIsIDB4MDAwNywgMHg4MjEyLCAweDgyMTAsIDB4ODEwYSwKLQkweGExODksIDB4MDAwMCwgMHg2OTYyLCAweDZhNWUsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4Njg0YiwKLQkweDAwMTUsIDB4ZDFmYywgMHgwMTM4LCAweDY4NGIsIDB4MDAwNywgMHg4MDAyLCAweDgwMDAsIDB4ODEwYSwKLQkweGExODksIDB4MDAwMCwgMHg2OTYyLCAweDY4NWUsIDB4MDAwNSwgMHhhMTgyLCAweDAwNDAsIDB4MDAwMiwKLQkweDk1NjMsIDB4OTU2MywgMHg5NTYzLCAweDk1NjMsIDB4OTU2MywgMHg5NTY1LCAweDk1NjMsIDB4OTYyMCwKLQkweDk2MmMsIDB4OTU2MywgMHg5NTYzLCAweDk1NjMsIDB4OTU2MywgMHg5NTYzLCAweDk1NjMsIDB4OTU2MywKLQkweDk1NjMsIDB4OTU2MywgMHg5NTYzLCAweDA4MGMsIDB4MTUxYSwgMHgwMDc2LCAweDAwZjYsIDB4MDBlNiwKLQkweDAwZDYsIDB4MjA3MSwgMHhiYzhjLCAweDYxMTAsIDB4MjE3OCwgMHg3NjE0LCAweGE2YjQsIDB4MGZmZiwKLQkweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDUzNzcsIDB4MDBmZSwgMHgwMTUwLCAweGE2ODQsIDB4MDBmZiwKLQkweDExMzgsIDB4NjAyMCwgMHhkMGY0LCAweDAxMjAsIDB4MDgwYywgMHg5ZmYxLCAweDA4MDQsIDB4OTYxYiwKLQkweDdlNDYsIDB4N2Y0YywgMHhjN2U1LCAweDdmNGUsIDB4NjIxOCwgMHgyMjY4LCAweDZhM2MsIDB4ODJmZiwKLQkweDAxMTAsIDB4ODIxMSwgMHg2YTNlLCAweDg2ZmYsIDB4MDkwNCwgMHg5NjExLCAweGE2OTQsIDB4ZmYwMCwKLQkweGEyODQsIDB4MGMwMCwgMHgwMTIwLCAweDcwMTgsIDB4Nzg2MiwgMHg3MDFjLCAweDc4NWUsIDB4YTI4NCwKLQkweDAzMDAsIDB4MDkwNCwgMHg5NjBmLCAweGE2ODYsIDB4MDEwMCwgMHgxMTQwLCAweDIwMDEsIDB4YmM5OSwKLQkweDIwMDQsIDB4YTAwNSwgMHgxMTE4LCAweGM2YzQsIDB4N2U0NiwgMHgwYzI4LCAweDA4MGMsIDB4MTVmZCwKLQkweDA5MGMsIDB4MTUxYSwgMHgyZDAwLCAweDc4NGEsIDB4N2Y0YywgMHhhN2JkLCAweDAyMDAsIDB4N2Y0ZSwKLQkweDY4MzcsIDB4MDEwMywgMHg3ODM4LCAweDY4M2EsIDB4NzgzYywgMHg2ODNlLCAweDc4NDAsIDB4Njg0MiwKLQkweDZlNDYsIDB4YTY4YywgMHgwYzAwLCAweDAxMjAsIDB4NzMxOCwgMHg2YjYyLCAweDczMWMsIDB4NmI1ZSwKLQkweGE2OGMsIDB4MDBmZiwgMHhhMTg2LCAweDAwMDIsIDB4MDE4MCwgMHhhMTg2LCAweDAwMjgsIDB4MTExOCwKLQkweDY4NGIsIDB4MDAxYywgMHgwMDYwLCAweGQ2ZGMsIDB4MDExOCwgMHg2ODRiLCAweDAwMTUsIDB4MDAzOCwKLQkweGQ2ZDQsIDB4MDExOCwgMHg2ODRiLCAweDAwMDcsIDB4MDAxMCwgMHg2ODRiLCAweDAwMDAsIDB4NmY0ZSwKLQkweDc4NTAsIDB4Njg1MiwgMHg3ODU0LCAweDY4NTYsIDB4YTAxZSwgMHhkNmM0LCAweDAxOTgsIDB4NzMyOCwKLQkweDczMmMsIDB4NmI1NiwgMHg4M2ZmLCAweDAxNzAsIDB4YTM4YSwgMHgwMDA5LCAweDAyMTAsIDB4MjAxOSwKLQkweDAwMDgsIDB4MDAzNiwgMHgyMzA4LCAweDIwMTksIDB4YmM5OCwgMHhhZDkwLCAweDAwMTksIDB4MDgwYywKLQkweDk5YzksIDB4MDAzZSwgMHhkNmNjLCAweDAxZDgsIDB4NzEyNCwgMHg2OTVhLCAweDgxZmYsIDB4MDFiOCwKLQkweGExOTIsIDB4MDAyMSwgMHgxMjUwLCAweDIwNzEsIDB4YmM5OCwgMHg4MzFjLCAweDIzMDAsIDB4YWUxOCwKLQkweGFkOTAsIDB4MDAxZCwgMHgwODBjLCAweDk5YzksIDB4MDA1MCwgMHg3ODM4LCAweGQwZmMsIDB4MDEyMCwKLQkweDIwMDksIDB4MDAyMCwgMHg2OTVhLCAweDBjNzgsIDB4MmQ3OCwgMHgwODBjLCAweDk5NmUsIDB4ZDZkYywKLQkweDExMTAsIDB4YTAwNiwgMHgwMDMwLCAweDIwMDEsIDB4MDAwMSwgMHgyMDcxLCAweGJjOGMsIDB4NzIxOCwKLQkweDczMWMsIDB4MDgwYywgMHgxOGI2LCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwN2UsIDB4MDAwNSwKLQkweDIwMDEsIDB4YjhiOCwgMHgyMDA0LCAweDYwM2UsIDB4MjBlMSwgMHgwMDA1LCAweDNkMTgsIDB4M2UyMCwKLQkweDJjMTAsIDB4MDgwYywgMHgxODYzLCAweDAwMDUsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDQsIDB4NjAzZSwKLQkweDAwZDYsIDB4NjAwMywgMHgwMDAyLCAweDYxMTAsIDB4MjE2OCwgMHg2OTRjLCAweGQxZTQsIDB4MDkwNCwKLQkweDk3MzcsIDB4NjAzZiwgMHgwMDAwLCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDUzNzcsIDB4MDBmZSwKLQkweDA1NjAsIDB4NjgxNCwgMHg2OTEwLCAweGExMTUsIDB4MDU0MCwgMHg2YTYwLCAweGEyMDYsIDB4MTExOCwKLQkweDY4NWMsIDB4YTEwNiwgMHgwNTEwLCAweDY4NGMsIDB4YzBlNCwgMHg2ODRlLCAweDY4NDcsIDB4MDAwMCwKLQkweDY4NjMsIDB4MDAwMCwgMHg2ODVmLCAweDAwMDAsIDB4NjAyMCwgMHhkMGY0LCAweDExNTgsIDB4Njk3YywKLQkweDY4MTAsIDB4YTEwMiwgMHg2MDNhLCAweDY5ODAsIDB4NjgxNCwgMHhhMTAzLCAweDYwMzYsIDB4NjAyMCwKLQkweGMwZjUsIDB4NjAyMiwgMHgwMGQ2LCAweDYwMTgsIDB4MjA2OCwgMHg2ODNjLCAweDgwMDAsIDB4NjgzZSwKLQkweDAwZGUsIDB4MDgwYywgMHg5ZmYxLCAweDA4MDQsIDB4OTczNywgMHg2OTRjLCAweGQxY2MsIDB4MDkwNCwKLQkweDk3MDcsIDB4Njk0OCwgMHg2ODM4LCAweGQwZmMsIDB4MDkwNCwgMHg5NmNhLCAweDAwMTYsIDB4Njg0YywKLQkweDAwMDYsIDB4Njg1MCwgMHgwMDA2LCAweDAwZjYsIDB4MjE3OCwgMHg3OTQ0LCAweGExODQsIDB4MDBmZiwKLQkweGEwYjYsIDB4MDAwMiwgMHgwMWUwLCAweGEwODYsIDB4MDAyOCwgMHgxMTI4LCAweDY4NGIsIDB4MDAxYywKLQkweDc4NGIsIDB4MDAxYywgMHgwMGU4LCAweGQxZGMsIDB4MDE1OCwgMHg2ODRiLCAweDAwMTUsIDB4Nzg0YiwKLQkweDAwMTUsIDB4MDgwYywgMHhhMTdiLCAweDAxMTgsIDB4Nzk0NCwgMHhjMWRjLCAweDc5NDYsIDB4MDA4MCwKLQkweGQxZDQsIDB4MDEyOCwgMHg2ODRiLCAweDAwMDcsIDB4Nzg0YiwgMHgwMDA3LCAweDAwNDgsIDB4Njg0YywKLQkweGQwYWMsIDB4MDEzMCwgMHg2ODEwLCAweDY5MTQsIDB4YTExNSwgMHgwMTEwLCAweDA4MGMsIDB4OTUzZiwKLQkweDY4NDgsIDB4Nzg0YSwgMHg2ODYwLCAweDc4NjIsIDB4Njg1YywgMHg3ODVlLCAweGFkOTAsIDB4MDAwZCwKLQkweGFmOTgsIDB4MDAwZCwgMHgyMDA5LCAweDAwMjAsIDB4MDE1NiwgMHgyMWE4LCAweDIzMDQsIDB4MjAxMiwKLQkweDgzMTgsIDB4ODIxMCwgMHgxZjA0LCAweDk2YjYsIDB4MDE1ZSwgMHgwMGZlLCAweDAwMGUsIDB4Njg1MiwKLQkweDAwMGUsIDB4Njg0ZSwgMHgwODBjLCAweGExZjMsIDB4MDAxZSwgMHgyMTY4LCAweDA4MGMsIDB4MTYyNCwKLQkweDA4MDQsIDB4OTczMiwgMHgwMDE2LCAweDAwZjYsIDB4MjE3OCwgMHg3OTQ0LCAweGExODQsIDB4MDBmZiwKLQkweGEwYjYsIDB4MDAwMiwgMHgwMWUwLCAweGEwODYsIDB4MDAyOCwgMHgxMTI4LCAweDY4NGIsIDB4MDAxYywKLQkweDc4NGIsIDB4MDAxYywgMHgwMGU4LCAweGQxZGMsIDB4MDE1OCwgMHg2ODRiLCAweDAwMTUsIDB4Nzg0YiwKLQkweDAwMTUsIDB4MDgwYywgMHhhMTdiLCAweDAxMTgsIDB4Nzk0NCwgMHhjMWRjLCAweDc5NDYsIDB4MDA4MCwKLQkweGQxZDQsIDB4MDEyOCwgMHg2ODRiLCAweDAwMDcsIDB4Nzg0YiwgMHgwMDA3LCAweDAwNDgsIDB4Njg0YywKLQkweGQwYWMsIDB4MDEzMCwgMHg2ODEwLCAweDY5MTQsIDB4YTExNSwgMHgwMTEwLCAweDA4MGMsIDB4OTUzZiwKLQkweDY4NjAsIDB4Nzg2MiwgMHg2ODVjLCAweDc4NWUsIDB4Njg0YywgMHg3ODRlLCAweDAwZmUsIDB4MDgwYywKLQkweDE2MjQsIDB4MDBkZSwgMHgwODBjLCAweGExZjMsIDB4MDgwYywgMHg5OWI5LCAweDA0NTgsIDB4NjgzNywKLQkweDAxMDMsIDB4Njk0NCwgMHhhMTg0LCAweDAwZmYsIDB4YTBiNiwgMHgwMDAyLCAweDAxYjAsIDB4YTA4NiwKLQkweDAwMjgsIDB4MTExOCwgMHg2ODRiLCAweDAwMWMsIDB4MDBkOCwgMHhkMWRjLCAweDAxNDgsIDB4Njg0YiwKLQkweDAwMTUsIDB4MDgwYywgMHhhMTdiLCAweDAxMTgsIDB4Njk0NCwgMHhjMWRjLCAweDY5NDYsIDB4MDA4MCwKLQkweGQxZDQsIDB4MDExOCwgMHg2ODRiLCAweDAwMDcsIDB4MDA1OCwgMHg2ODRiLCAweDAwMDAsIDB4Njg0YywKLQkweGQwYWMsIDB4MDEzMCwgMHg2ODEwLCAweDY5MTQsIDB4YTExNSwgMHgwMTEwLCAweDA4MGMsIDB4OTUzZiwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwODBjLCAweDlmYmYsIDB4MTExMCwgMHgwODBjLCAweDg2YTQsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDgwYywgMHg3MTAyLCAweDAwMTAsIDB4MDgwYywgMHg3MTk4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxYzAsIDB4MDBkNiwgMHg2MTEwLCAweDIxNjgsIDB4NjgzNywgMHgwMTAzLCAweDIwMDksIDB4YjYwYywKLQkweDIxMGMsIDB4ZDE4YywgMHgxMWMwLCAweGQxODQsIDB4MTE5OCwgMHg2MTA4LCAweDY5NGEsIDB4YTE4ZSwKLQkweDAwMjksIDB4MTExMCwgMHgwODBjLCAweGI0M2MsIDB4Njg0NywgMHgwMDAwLCAweDA4MGMsIDB4NTQ3YSwKLQkweDAwZGUsIDB4MDgwYywgMHg4NmE0LCAweDA4MGMsIDB4NzFlNSwgMHgwODBjLCAweDcyYTIsIDB4MDAwNSwKLQkweDY4NGIsIDB4MDAwNCwgMHgwYzg4LCAweDY4NGIsIDB4MDAwNCwgMHgwYzcwLCAweGExODIsIDB4MDA0MCwKLQkweDAwMDIsIDB4OTc3YywgMHg5NzdjLCAweDk3N2MsIDB4OTc3YywgMHg5NzdjLCAweDk3N2UsIDB4OTc3YywKLQkweDk3ODEsIDB4OTc3YywgMHg5NzdjLCAweDk3N2MsIDB4OTc3YywgMHg5NzdjLCAweDk3N2MsIDB4OTc3YywKLQkweDk3N2MsIDB4OTc3YywgMHg5NzdjLCAweDk3N2MsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDI2LCAweGEwMTYsIDB4MDgwYywgMHgxODYzLCAweDAwMmUsIDB4MDAwZSwKLQkweDAwMDUsIDB4YTE4MiwgMHgwMDg1LCAweDAwMDIsIDB4OTc5NSwgMHg5NzkzLCAweDk3OTMsIDB4OTdhMSwKLQkweDk3OTMsIDB4OTc5MywgMHg5NzkzLCAweDA4MGMsIDB4MTUxYSwgMHg2MDAzLCAweDAwMDEsIDB4NjEwNiwKLQkweDA4MGMsIDB4NmNmZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcxZTUsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDAyNiwgMHgwMDU2LCAweDAwZDYsIDB4MDBlNiwgMHgyMDcxLCAweGJjODAsIDB4NzIyNCwKLQkweDYyMTIsIDB4NzIyMCwgMHgwODBjLCAweDlkMDYsIDB4MDFhMCwgMHgyMjY4LCAweDY4MDAsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDE3OCwgMHg2MDE4LCAweDZkMTgsIDB4YTUyZSwgMHgxMTU4LCAweDAwYzYsIDB4MmQ2MCwKLQkweDA4MGMsIDB4OTlkOSwgMHgwMGNlLCAweDAxMjgsIDB4NjgwMywgMHgwMDAyLCAweDYwMDcsIDB4MDA4NiwKLQkweDAwMTAsIDB4NjAwNywgMHgwMDg3LCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywKLQkweDcxZTUsIDB4MDBmNiwgMHgyMjc4LCAweDA4MGMsIDB4NTM3NywgMHgwMGZlLCAweDAxNTAsIDB4NjgyMCwKLQkweGQwZWMsIDB4MDEzOCwgMHgwMGM2LCAweDIyNjAsIDB4NjAzZiwgMHgwMDAwLCAweDA4MGMsIDB4OWZmMSwKLQkweDAwY2UsIDB4MDBlZSwgMHgwMGRlLCAweDAwNWUsIDB4MDAyZSwgMHgwMDA1LCAweGExODYsIDB4MDAxMywKLQkweDExNjAsIDB4NjAwNCwgMHhhMDhhLCAweDAwODUsIDB4MGEwYywgMHgxNTFhLCAweGEwOGEsIDB4MDA4YywKLQkweDFhMGMsIDB4MTUxYSwgMHhhMDgyLCAweDAwODUsIDB4MDA3MiwgMHhhMTg2LCAweDAwMjcsIDB4MDEyMCwKLQkweGExODYsIDB4MDAxNCwgMHgxOTBjLCAweDE1MWEsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4OWVkOSwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDk4MDIsIDB4OTgwNCwgMHg5ODA0LCAweDk4MDIsIDB4OTgwMiwKLQkweDk4MDIsIDB4OTgwMiwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4OWVkOSwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweGExODYsIDB4MDAxMywgMHgxMTI4LCAweDYwMDQsIDB4YTA4MiwKLQkweDAwODUsIDB4MjAwOCwgMHgwNGE4LCAweGExODYsIDB4MDAyNywgMHgxMWU4LCAweDA4MGMsIDB4NzEwMiwKLQkweDA4MGMsIDB4MmNkMSwgMHgwMGQ2LCAweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDE1MCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ODQ3LCAweDAwMDAsIDB4Njg0YiwgMHgwMDI5LCAweDA4MGMsIDB4NTQ3YSwKLQkweDA4MGMsIDB4OWVjZCwgMHgwMGRlLCAweDA4MGMsIDB4ODZhNCwgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwKLQkweDA4MGMsIDB4ODZlZiwgMHgwY2UwLCAweGExODYsIDB4MDAxNCwgMHgxZGQwLCAweDA4MGMsIDB4NzEwMiwKLQkweDAwZDYsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwgMHgwZDYwLCAweDY4MzcsIDB4MDEwMywKLQkweDY4NDcsIDB4MDAwMCwgMHg2ODRiLCAweDAwMDYsIDB4Njg1MCwgMHhjMGVjLCAweDY4NTIsIDB4MDhmMCwKLQkweDAwMDIsIDB4OTg1MiwgMHg5ODUwLCAweDk4NTAsIDB4OTg1MCwgMHg5ODUwLCAweDk4NTAsIDB4OTg2YSwKLQkweDA4MGMsIDB4MTUxYSwgMHgwODBjLCAweDcxMDIsIDB4NjAzMCwgMHhhMDhjLCAweGZmMDAsIDB4ODEwZiwKLQkweGExODYsIDB4MDAzOSwgMHgwMTE4LCAweGExODYsIDB4MDAzNSwgMHgxMTE4LCAweDIwMDEsIDB4YjhiNiwKLQkweDAwMTAsIDB4MjAwMSwgMHhiOGI3LCAweDIwMDQsIDB4NjAxNiwgMHg2MDAzLCAweDAwMGMsIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHgwODBjLCAweDcxMDIsIDB4NjAzMCwgMHhhMDhjLCAweGZmMDAsIDB4ODEwZiwKLQkweGExODYsIDB4MDAzOSwgMHgwMTE4LCAweGExODYsIDB4MDAzNSwgMHgxMTE4LCAweDIwMDEsIDB4YjhiNiwKLQkweDAwMTAsIDB4MjAwMSwgMHhiOGI3LCAweDIwMDQsIDB4NjAxNiwgMHg2MDAzLCAweDAwMGUsIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHhhMTgyLCAweDAwOGMsIDB4MTIyMCwgMHhhMTgyLCAweDAwODUsIDB4MDIwOCwKLQkweDAwMWEsIDB4MDgwYywgMHg4NmVmLCAweDAwMDUsIDB4OTg5MywgMHg5ODkzLCAweDk4OTMsIDB4OTg5MywKLQkweDk4OTUsIDB4OThlZSwgMHg5ODkzLCAweDA4MGMsIDB4MTUxYSwgMHgwMGQ2LCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4NTM3NywgMHgwMGZlLCAweDAxNjgsIDB4NjAzMCwgMHhhMDhjLCAweGZmMDAsIDB4ODEwZiwKLQkweGExODYsIDB4MDAzOSwgMHgwMTE4LCAweGExODYsIDB4MDAzNSwgMHgxMTE4LCAweDAwZGUsIDB4MDgwNCwKLQkweDk5MDEsIDB4MDgwYywgMHg5ZDE2LCAweDExMTgsIDB4MDgwYywgMHg5ZWNkLCAweDAwZjAsIDB4NjAxMCwKLQkweDIwNjgsIDB4Njg0YywgMHhkMGU0LCAweDExMTAsIDB4MDgwYywgMHg5ZWNkLCAweDY4MzcsIDB4MDEwMywKLQkweDY4NTAsIDB4ZDBiNCwgMHgwMTI4LCAweDY4NGIsIDB4MDAwNiwgMHhjMGVjLCAweDY4NTIsIDB4MDA0OCwKLQkweGQwYmMsIDB4MDExOCwgMHg2ODRiLCAweDAwMDIsIDB4MDAyMCwgMHg2ODRiLCAweDAwMDUsIDB4MDgwYywKLQkweDlmOGUsIDB4Njg0NywgMHgwMDAwLCAweDA4MGMsIDB4NTQ3YSwgMHgyYzY4LCAweDA4MGMsIDB4ODY0ZSwKLQkweDAxYzAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAxZSwgMHg2MDBiLCAweGZmZmYsIDB4MjAwOSwKLQkweGJjOGUsIDB4MjEwYywgMHg2MTM2LCAweDIwMDksIDB4YmM4ZiwgMHgyMTBjLCAweDYxM2EsIDB4NjkxOCwKLQkweDYxMWEsIDB4MDgwYywgMHhhMGUzLCAweDY5NTAsIDB4NjE1MiwgMHg2MDFmLCAweDAwMDEsIDB4MDgwYywKLQkweDZjZmYsIDB4MmQ2MCwgMHgwODBjLCAweDg2YTQsIDB4MDBkZSwgMHgwMDA1LCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4NTM3NywgMHgwMGZlLCAweDA1OTgsIDB4NjAzMCwgMHhhMDhjLCAweGZmMDAsIDB4ODEwZiwKLQkweGExODYsIDB4MDAzNSwgMHgwMTMwLCAweGExODYsIDB4MDAxZSwgMHgwMTE4LCAweGExODYsIDB4MDAzOSwKLQkweDE1MzAsIDB4MDBkNiwgMHgyYzY4LCAweDA4MGMsIDB4YTFjNiwgMHgxOTA0LCAweDk5NDYsIDB4MDgwYywKLQkweDg2NGUsIDB4MDFkOCwgMHg2MTA2LCAweDYwMDMsIDB4MDAwMSwgMHg2MDFmLCAweDAwMDEsIDB4NjkxOCwKLQkweDYxMWEsIDB4NjkyOCwgMHg2MTJhLCAweDY5MmMsIDB4NjEyZSwgMHg2OTMwLCAweGExOGMsIDB4MDBmZiwKLQkweDYxMzIsIDB4NjkzNCwgMHg2MTM2LCAweDY5MzgsIDB4NjEzYSwgMHg2OTUwLCAweDYxNTIsIDB4MDgwYywKLQkweGEwZTMsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwgMHgyZDYwLCAweDAwZjgsIDB4MDBkNiwKLQkweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDFjOCwgMHg2ODM3LCAweDAxMDMsIDB4Njg1MCwKLQkweGQwYjQsIDB4MDEyOCwgMHhjMGVjLCAweDY4NTIsIDB4Njg0YiwgMHgwMDA2LCAweDAwNDgsIDB4ZDBiYywKLQkweDAxMTgsIDB4Njg0YiwgMHgwMDAyLCAweDAwMjAsIDB4Njg0YiwgMHgwMDA1LCAweDA4MGMsIDB4OWY4ZSwKLQkweDY4NDcsIDB4MDAwMCwgMHgwODBjLCAweDU0N2EsIDB4MDgwYywgMHg5ZWNkLCAweDAwZGUsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAwNSwgMHgwMDE2LCAweDAwZDYsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxNDAsIDB4NjgzNywgMHgwMTAzLCAweDY4NGIsIDB4MDAyOCwgMHg2ODQ3LCAweDAwMDAsIDB4MDgwYywKLQkweDU0N2EsIDB4MDBkZSwgMHgwMDFlLCAweGExODYsIDB4MDAxMywgMHgwMTQ4LCAweGExODYsIDB4MDAxNCwKLQkweDAxMzAsIDB4YTE4NiwgMHgwMDI3LCAweDAxMTgsIDB4MDgwYywgMHg4NmVmLCAweDAwMzAsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg5ZWQ5LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDAwNTYsIDB4MDA2NiwKLQkweDAwZDYsIDB4MDBmNiwgMHgyMDI5LCAweDAwMDEsIDB4YTE4MiwgMHgwMTAxLCAweDEyMDgsIDB4MDAxMCwKLQkweDIwMDksIDB4MDEwMCwgMHgyMTMwLCAweDIwNjksIDB4YmM5OCwgMHg4MzFjLCAweDIzMDAsIDB4YWQxOCwKLQkweDIwMDksIDB4MDAyMCwgMHhhZjkwLCAweDAwMWQsIDB4MDgwYywgMHg5OWM5LCAweGE2YjIsIDB4MDAyMCwKLQkweDc4MDQsIDB4YTA2ZCwgMHgwMTEwLCAweDA4MGMsIDB4MTYyNCwgMHgwODBjLCAweDE1ZmQsIDB4MDUwMCwKLQkweDg1MjgsIDB4NjgzNywgMHgwMTEwLCAweDY4M2IsIDB4MDAwMCwgMHgyZDIwLCAweDdjMDYsIDB4YTY4YSwKLQkweDAwM2QsIDB4MTIyOCwgMHgyNjA4LCAweGFkOTAsIDB4MDAwZiwgMHgwNDU5LCAweDAwODgsIDB4YTZiMiwKLQkweDAwM2MsIDB4MjAwOSwgMHgwMDNjLCAweDJkNzgsIDB4YWQ5MCwgMHgwMDBmLCAweDA0MTEsIDB4MGMyOCwKLQkweDAwZmUsIDB4ODUyZiwgMHhhNWFkLCAweDAwMDMsIDB4N2QzNiwgMHhhNWFjLCAweDAwMDAsIDB4MDAyOCwKLQkweDAwZmUsIDB4ODUyZiwgMHhhNWFkLCAweDAwMDMsIDB4N2QzNiwgMHgwMGRlLCAweDAwNmUsIDB4MDA1ZSwKLQkweDAwMDUsIDB4MDBmNiwgMHg4ZGZmLCAweDAxNTgsIDB4NjgwNCwgMHhhMDdkLCAweDAxMzAsIDB4NjgwNywKLQkweDAwMDAsIDB4MDgwYywgMHg1NDdhLCAweDJmNjgsIDB4MGNiOCwgMHgwODBjLCAweDU0N2EsIDB4MDBmZSwKLQkweDAwMDUsIDB4MDE1NiwgMHhhMTg0LCAweDAwMDEsIDB4MDEwOCwgMHg4MTA4LCAweDgxMGMsIDB4MjFhOCwKLQkweDIzMDQsIDB4ODAwNywgMHgyMDEyLCAweDgzMTgsIDB4ODIxMCwgMHgxZjA0LCAweDk5ZDAsIDB4MDE1ZSwKLQkweDAwMDUsIDB4MDA2NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDMxLCAweDAwMDEsIDB4NjAxYywKLQkweGEwODQsIDB4MDAwZiwgMHgwMDgzLCAweDAxMmUsIDB4MDA2ZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDA2NiwgMHgyMDMxLCAweDAwMDAsIDB4NjAxYywgMHhhMDg0LCAweDAwMGYsIDB4MDAxYiwKLQkweDAwNmUsIDB4MDEyZSwgMHgwMDA1LCAweDlhMTAsIDB4OWExMCwgMHg5YTBiLCAweDlhMzIsIDB4OTlmZSwKLQkweDlhMGIsIDB4OWEzMiwgMHg5YTBiLCAweDlhMGIsIDB4OTlmZSwgMHg5YTBiLCAweDA4MGMsIDB4MTUxYSwKLQkweDAwMzYsIDB4MjAxOSwgMHgwMDEwLCAweDA4MGMsIDB4YWQ5YywgMHg2MDFmLCAweDAwMDYsIDB4NjAwMywKLQkweDAwMDcsIDB4MDAzZSwgMHgwMDA1LCAweGEwMDYsIDB4MDAwNSwgMHhhMDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDAwZDYsIDB4ODZmZiwgMHgxMWQ4LCAweDYwMTAsIDB4MjA2OCwgMHgwODBjLCAweDlkMTYsIDB4MDFjMCwKLQkweDY4MzQsIDB4YTA4NiwgMHgwMTM5LCAweDExMjgsIDB4Njg0YiwgMHgwMDA1LCAweDY4NTMsIDB4MDAwMCwKLQkweDAwMjgsIDB4YTAwZSwgMHgyMDAxLCAweDAwMDUsIDB4MDgwYywgMHg1NTRkLCAweDA4MGMsIDB4OWY4ZSwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwODBjLCAweDg2YTQsIDB4YTA4NSwgMHgwMDAxLCAweDAwZGUsIDB4MDAwNSwKLQkweGEwMDYsIDB4MGNlMCwgMHg2MDAwLCAweGEwOGEsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAwYiwKLQkweDAwMDUsIDB4OWE0OSwgMHg5YTZhLCAweDlhNGIsIDB4OWE4OSwgMHg5YTY3LCAweDlhNDksIDB4OWEwYiwKLQkweDlhMTAsIDB4OWExMCwgMHg5YTBiLCAweDlhMGIsIDB4OWEwYiwgMHg5YTBiLCAweDlhMGIsIDB4OWEwYiwKLQkweDlhMGIsIDB4MDgwYywgMHgxNTFhLCAweDg2ZmYsIDB4MTFiOCwgMHg2MDFjLCAweGEwODYsIDB4MDAwNiwKLQkweDAxOTgsIDB4MDBkNiwgMHg2MDEwLCAweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxMTAsIDB4MDgwYywKLQkweDlmOGUsIDB4MDBkZSwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMWYsIDB4MDAwMiwKLQkweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDgwYywKLQkweDE5NTIsIDB4MGMwOCwgMHgwMGU2LCAweDIwNzEsIDB4YjhlMSwgMHg3MDI0LCAweGFjMDYsIDB4MTExMCwKLQkweDA4MGMsIDB4N2ZlMCwgMHg2MDFjLCAweGEwODQsIDB4MDAwZiwgMHhhMDg2LCAweDAwMDYsIDB4MTE1MCwKLQkweDAwODYsIDB4MDA5NiwgMHgyMDQ5LCAweDAwMDEsIDB4MmM0MCwgMHgwODBjLCAweDgxYjcsIDB4MDA5ZSwKLQkweDAwOGUsIDB4MDAxMCwgMHgwODBjLCAweDdlZDEsIDB4MDBlZSwgMHgxOTI4LCAweDA4MGMsIDB4OWEwYiwKLQkweDAwMDUsIDB4MDAzNiwgMHgwMGU2LCAweDIwNzEsIDB4YjhlMSwgMHg3MDNjLCAweGFjMDYsIDB4MTE0MCwKLQkweDIwMTksIDB4MDAwMCwgMHgwODBjLCAweDgwNmIsIDB4MDBlZSwgMHgwMDNlLCAweDA4MDQsIDB4OWE0YiwKLQkweDA4MGMsIDB4ODJlNCwgMHgwMGVlLCAweDAwM2UsIDB4MTkwNCwgMHg5YTRiLCAweDA4MGMsIDB4OWEwYiwKLQkweDAwMDUsIDB4MDBjNiwgMHg2MDFjLCAweGEwODQsIDB4MDAwZiwgMHgwMDEzLCAweDAwY2UsIDB4MDAwNSwKLQkweDlhYmEsIDB4OWIyNywgMHg5Yzc1LCAweDlhYzUsIDB4OWVkOSwgMHg5YWJhLCAweGFkOGUsIDB4YTIwYSwKLQkweDliMjcsIDB4OWFiMywgMHg5Y2UwLCAweDA4MGMsIDB4MTUxYSwgMHgwODBjLCAweDlmMTQsIDB4MTExMCwKLQkweDA4MGMsIDB4OGNhNSwgMHgwMDA1LCAweDA4MGMsIDB4NzEwMiwgMHgwODBjLCAweDcxZTUsIDB4MDgwYywKLQkweDg2YTQsIDB4MDAwNSwgMHg2MDE3LCAweDAwMDEsIDB4MDAwNSwgMHgwODBjLCAweDlkMTYsIDB4MDEyMCwKLQkweDYwMTAsIDB4YTA4MCwgMHgwMDE5LCAweDJjMDIsIDB4NjAwMCwgMHhhMDhhLCAweDAwMTAsIDB4MWEwYywKLQkweDE1MWEsIDB4MDAwYiwgMHgwMDA1LCAweDlhZTMsIDB4OWFlNSwgMHg5YjA1LCAweDliMTcsIDB4OWIyNCwKLQkweDlhZTMsIDB4OWFiYSwgMHg5YWJhLCAweDlhYmEsIDB4OWIxNywgMHg5YjE3LCAweDlhZTMsIDB4OWFlMywKLQkweDlhZTMsIDB4OWFlMywgMHg5YjIxLCAweDA4MGMsIDB4MTUxYSwgMHgwMGU2LCAweDYwMTAsIDB4MjA3MCwKLQkweDcwNTAsIDB4YzBiNSwgMHg3MDUyLCAweDIwNzEsIDB4YjhlMSwgMHg3MDI0LCAweGFjMDYsIDB4MDE5MCwKLQkweDA4MGMsIDB4N2VkMSwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMWYsIDB4MDAwMiwKLQkweDIwMDEsIDB4YjhiNywgMHgyMDA0LCAweDYwMTYsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwKLQkweDAwZWUsIDB4MDAwNSwgMHg2MDE3LCAweDAwMDEsIDB4MGNkOCwgMHgwMGQ2LCAweDYwMTAsIDB4MjA2OCwKLQkweDY4NTAsIDB4YzBiNSwgMHg2ODUyLCAweDAwZGUsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwKLQkweDYwMWYsIDB4MDAwMiwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDBkNiwKLQkweDYwMTcsIDB4MDAwMSwgMHg2MDEwLCAweDIwNjgsIDB4Njg1MCwgMHhjMGI1LCAweDY4NTIsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDgwYywgMHg4NmE0LCAweDAwMDUsIDB4MDgwYywgMHgxOTUyLCAweDA4ZjAsIDB4NjAwMCwKLQkweGEwOGEsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAwYiwgMHgwMDA1LCAweDliM2UsIDB4OWFjMiwKLQkweDliNDAsIDB4OWIzZSwgMHg5YjQwLCAweDliNDAsIDB4OWFiYiwgMHg5YjNlLCAweDlhYjUsIDB4OWFiNSwKLQkweDliM2UsIDB4OWIzZSwgMHg5YjNlLCAweDliM2UsIDB4OWIzZSwgMHg5YjNlLCAweDA4MGMsIDB4MTUxYSwKLQkweDAwZDYsIDB4NjAxOCwgMHgyMDY4LCAweDY4MDQsIDB4YTA4NCwgMHgwMGZmLCAweDAwZGUsIDB4YTA4YSwKLQkweDAwMGMsIDB4MWEwYywgMHgxNTFhLCAweDAwMGIsIDB4MDAwNSwgMHg5YjU5LCAweDljMWIsIDB4OWI1YiwKLQkweDliOTksIDB4OWI1YiwgMHg5Yjk5LCAweDliNWIsIDB4OWI2OSwgMHg5YjU5LCAweDliOTksIDB4OWI1OSwKLQkweDliODUsIDB4MDgwYywgMHgxNTFhLCAweDYwMDQsIDB4YTA4ZSwgMHgwMDE2LCAweDA1YTgsIDB4YTA4ZSwKLQkweDAwMDQsIDB4MDU5MCwgMHhhMDhlLCAweDAwMDIsIDB4MDU3OCwgMHhhMDhlLCAweDAwNGIsIDB4MDkwNCwKLQkweDljMTcsIDB4NjAwNCwgMHgwODBjLCAweDlmMTQsIDB4MDkwNCwgMHg5YzM0LCAweGEwOGUsIDB4MDAyMSwKLQkweDA5MDQsIDB4OWMzOCwgMHhhMDhlLCAweDAwMjIsIDB4MDkwNCwgMHg5YzM0LCAweGEwOGUsIDB4MDAzZCwKLQkweDA5MDQsIDB4OWMzOCwgMHhhMDhlLCAweDAwMzksIDB4MDkwNCwgMHg5YzNjLCAweGEwOGUsIDB4MDAzNSwKLQkweDA5MDQsIDB4OWMzYywgMHhhMDhlLCAweDAwMWUsIDB4MDE4OCwgMHhhMDhlLCAweDAwMDEsIDB4MTE1MCwKLQkweDAwZDYsIDB4NjAxOCwgMHgyMDY4LCAweDY4MDQsIDB4YTA4NCwgMHgwMGZmLCAweDAwZGUsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDExMCwgMHgwODBjLCAweDJjZDEsIDB4MDgwYywgMHg4Y2E1LCAweDA4MGMsIDB4OWVkOSwKLQkweDAwMDUsIDB4MDBjNiwgMHgwMGQ2LCAweDYxMDQsIDB4YTE4NiwgMHgwMDE2LCAweDA5MDQsIDB4OWMwOCwKLQkweGExODYsIDB4MDAwMiwgMHgxNWQ4LCAweDIwMDEsIDB4YjYzNSwgMHgyMDA0LCAweGQwOGMsIDB4MTE5OCwKLQkweDA4MGMsIDB4NWI0MSwgMHgxMTgwLCAweDIwMDEsIDB4Yjg5ZiwgMHgyMDAzLCAweDAwMDEsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwMywgMHgwMDAxLCAweGEwODUsIDB4MDAwMSwgMHgwODBjLCAweDViODUsIDB4MDgwYywKLQkweDVhNzksIDB4MDgwNCwgMHg5YzVlLCAweDYwMTgsIDB4MjA2OCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwNCwKLQkweGQwYWMsIDB4MTkwNCwgMHg5YzVlLCAweDY4YTAsIDB4ZDBiYywgMHgxOTA0LCAweDljNWUsIDB4Njg0MCwKLQkweGEwODQsIDB4MDBmZiwgMHhhMDA1LCAweDAxOTAsIDB4ODAwMSwgMHg2ODQyLCAweDYwMTMsIDB4MDAwMCwKLQkweDYwMWYsIDB4MDAwNywgMHg2MDE3LCAweDAzOTgsIDB4NjAzZiwgMHgwMDAwLCAweDA4MGMsIDB4ODY0ZSwKLQkweDAxMjgsIDB4MmQwMCwgMHg2MDFhLCAweDYwMWYsIDB4MDAwMSwgMHgwNDUwLCAweDAwZGUsIDB4MDBjZSwKLQkweDYwMDQsIDB4YTA4ZSwgMHgwMDAyLCAweDExYTgsIDB4NjAxOCwgMHhhMDgwLCAweDAwMjgsIDB4MjAwNCwKLQkweGEwODYsIDB4MDA3ZSwgMHgxMTcwLCAweDIwMDksIDB4YjYzNSwgMHgyMTA0LCAweGMwODUsIDB4MjAwYSwKLQkweDAwZTYsIDB4MjA3MSwgMHhiNjAwLCAweDA4MGMsIDB4NGMyOCwgMHgwMGVlLCAweDA4MGMsIDB4OGNhNSwKLQkweDAwMjAsIDB4MDgwYywgMHg4Y2E1LCAweDA4MGMsIDB4MmNkMSwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHgyY2Y3LCAweDAxMmUsIDB4MDBlZSwgMHgwODBjLCAweDllZDksIDB4MDAwNSwKLQkweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDRmNmYsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMiwKLQkweDA4MGMsIDB4NmQ0NSwgMHgwODBjLCAweDcxZTUsIDB4MDBkZSwgMHgwMGNlLCAweDBjODAsIDB4MDgwYywKLQkweDJjZjcsIDB4MDgwNCwgMHg5Yjk0LCAweDAwYzYsIDB4MDBkNiwgMHg2MTA0LCAweGExODYsIDB4MDAxNiwKLQkweDBkMzgsIDB4NjAxOCwgMHgyMDY4LCAweDY4NDAsIDB4YTA4NCwgMHgwMGZmLCAweGEwMDUsIDB4MDkwNCwKLQkweDliZGUsIDB4ODAwMSwgMHg2ODQyLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZkNDUsIDB4MDgwYywKLQkweDcxZTUsIDB4MDBkZSwgMHgwMGNlLCAweDA4OTgsIDB4MDgwYywgMHg4Y2E1LCAweDA4MDQsIDB4OWI5NiwKLQkweDA4MGMsIDB4OGNkMywgMHgwODA0LCAweDliOTYsIDB4MDBkNiwgMHgyYzY4LCAweDYxMDQsIDB4MDgwYywKLQkweGExYzYsIDB4MDBkZSwgMHgwMTE4LCAweDA4MGMsIDB4ODZhNCwgMHgwMGI4LCAweDYwMDQsIDB4ODAwNywKLQkweDYxMzAsIDB4YTE4YywgMHgwMGZmLCAweGExMDUsIDB4NjAzMiwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywKLQkweDAwMGIsIDB4NjAxZiwgMHgwMDAyLCAweDYwMzgsIDB4NjAwYSwgMHgyMDAxLCAweGI4YjcsIDB4MjAwNCwKLQkweDYwMTYsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDAwZGUsIDB4MDBjZSwKLQkweDA4MGMsIDB4OGNhNSwgMHgwODBjLCAweDJjZDEsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4MmNmNywgMHg2MDEzLCAweDAwMDAsIDB4NjAxZiwgMHgwMDA3LCAweDYwMTcsIDB4MDM5OCwKLQkweDYwM2YsIDB4MDAwMCwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHg2MDAwLCAweGEwOGEsIDB4MDAxMCwKLQkweDFhMGMsIDB4MTUxYSwgMHgwMDBiLCAweDAwMDUsIDB4OWM4YywgMHg5YzhjLCAweDljOGMsIDB4OWM4YywKLQkweDljOGMsIDB4OWM4YywgMHg5YzhjLCAweDljOGMsIDB4OWM4YywgMHg5YWJhLCAweDljOGMsIDB4OWFjMiwKLQkweDljOGUsIDB4OWFjMiwgMHg5YzliLCAweDljOGMsIDB4MDgwYywgMHgxNTFhLCAweDYwMDQsIDB4YTA4NiwKLQkweDAwOGIsIDB4MDE0OCwgMHg2MDA3LCAweDAwOGIsIDB4NjAwMywgMHgwMDBkLCAweDA4MGMsIDB4NmNmZiwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDA4MGMsIDB4OWVjZCwgMHgwODBjLCAweDlkMTYsIDB4MDU4MCwKLQkweDA4MGMsIDB4MmNkMSwgMHgwMGQ2LCAweDA4MGMsIDB4OWQxNiwgMHgwMTY4LCAweDYwMTAsIDB4MjA2OCwKLQkweDY4MzcsIDB4MDEwMywgMHg2ODRiLCAweDAwMDYsIDB4Njg0NywgMHgwMDAwLCAweDY4NTAsIDB4YzBlZCwKLQkweDY4NTIsIDB4MDgwYywgMHg1NDdhLCAweDJjNjgsIDB4MDgwYywgMHg4NjRlLCAweDAxNTAsIDB4NjgxOCwKLQkweDYwMWEsIDB4MDgwYywgMHhhMGUzLCAweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweDllZDksIDB4MDBjZSwKLQkweDAwMDgsIDB4MmQ2MCwgMHgwMGRlLCAweDYwMTMsIDB4MDAwMCwgMHg2MDFmLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmQ0NSwgMHgwODBjLCAweDcxZTUsIDB4MDA3OCwKLQkweDYwMzAsIDB4YTA4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4NiwgMHgwMDM5LCAweDAxMTgsIDB4YTE4NiwKLQkweDAwMzUsIDB4MTExOCwgMHgwODBjLCAweDJjZDEsIDB4MDhiMCwgMHgwODBjLCAweDllZDksIDB4MDAwNSwKLQkweDYwMDAsIDB4YTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MTUxYSwgMHgwMDBiLCAweDAwMDUsIDB4OWNmNywKLQkweDljZjcsIDB4OWNmNywgMHg5Y2Y5LCAweDljZjksIDB4OWNmNywgMHg5Y2Y3LCAweDljZjcsIDB4OWNmNywKLQkweDljZjcsIDB4OWNmNywgMHg5Y2Y3LCAweDljZjcsIDB4OWNmNywgMHg5Y2Y3LCAweDljZjcsIDB4MDgwYywKLQkweDE1MWEsIDB4MDgwYywgMHg4MmU0LCAweDE5MGMsIDB4MTUxYSwgMHg2MTEwLCAweDIxNjgsIDB4Njg0YiwKLQkweDAwMDYsIDB4MDgwYywgMHg1NDdhLCAweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweGEyODQsIDB4MDAwNywKLQkweDExNTgsIDB4YTI4MiwgMHhiZTAwLCAweDAyNDAsIDB4MjAwMSwgMHhiNjE3LCAweDIwMDQsIDB4YTIwMiwKLQkweDEyMTgsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4YTAwNiwgMHgwY2U4LCAweDAwMjYsIDB4NjIxMCwKLQkweGEyOTQsIDB4ZjAwMCwgMHgwMDJlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwMzYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjEsIDB4YmUwMCwgMHgyMDcxLCAweGI2MDAsIDB4NzM0OCwKLQkweDcwNjgsIDB4YTMwMiwgMHgxMmE4LCAweDYwMWMsIDB4YTIwNiwgMHgxMTYwLCAweDA4MGMsIDB4YTA2ZSwKLQkweDAxNDgsIDB4MDgwYywgMHg5ZjE0LCAweDExMTAsIDB4MDgwYywgMHg4Y2E1LCAweDAwYzYsIDB4MDgwYywKLQkweDg2YTQsIDB4MDBjZSwgMHhhY2UwLCAweDAwMTgsIDB4NzA1YywgMHhhYzAyLCAweDEyMDgsIDB4MGMzOCwKLQkweDAxMmUsIDB4MDAwZSwgMHgwMDNlLCAweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBjNiwKLQkweDAwMTYsIDB4YTE4OCwgMHhiNzM1LCAweDIxMGMsIDB4ODFmZiwgMHgwMTI4LCAweDIwNjEsIDB4YjlmNSwKLQkweDYxMWEsIDB4MDgwYywgMHgyY2QxLCAweGEwMDYsIDB4MDAxMCwgMHhhMDg1LCAweDAwMDEsIDB4MDAxZSwKLQkweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDAwYzYsIDB4MDA1NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDAwYzYsIDB4MDgwYywgMHg4NjRlLCAweDAwNWUsIDB4MDE4MCwgMHg2NjEyLCAweDY1MWEsIDB4MDgwYywKLQkweGEwZTMsIDB4NjAxZiwgMHgwMDAzLCAweDIwMDksIDB4MDA0YiwgMHgwODBjLCAweDg2ZDMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMDVlLCAweDAwY2UsIDB4MDAwNSwgMHhhMDA2LCAweDBjZDAsIDB4MDBjNiwKLQkweDAwNTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjJhMCwgMHgwMGM2LCAweDA4MGMsIDB4OWY5MiwKLQkweDAwNWUsIDB4MDU1MCwgMHg2MDEzLCAweDAwMDAsIDB4NjUxYSwgMHgwODBjLCAweGEwZTMsIDB4NjAxZiwKLQkweDAwMDMsIDB4MDAxNiwgMHgwMGM2LCAweDI1NjAsIDB4MDgwYywgMHg1MjFjLCAweDAwY2UsIDB4MDgwYywKLQkweDZlNjcsIDB4MDA3NiwgMHgyMDM5LCAweDAwMDAsIDB4MDgwYywgMHg2ZDc0LCAweDJjMDgsIDB4MDgwYywKLQkweGFmM2UsIDB4MDA3ZSwgMHgwMDFlLCAweGQxODQsIDB4MDEyOCwgMHgwODBjLCAweDg2YTQsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDAzMCwgMHgyMDA5LCAweDAwNGMsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDA1ZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwgMHgwY2QwLCAweDAwZjYsIDB4MDBjNiwKLQkweDAwNDYsIDB4MDBjNiwgMHgwODBjLCAweDg2NGUsIDB4MmM3OCwgMHgwMGNlLCAweDAxODAsIDB4N2UxMiwKLQkweDJjMDAsIDB4NzgxYSwgMHg3ODFmLCAweDAwMDMsIDB4MjAyMSwgMHgwMDA1LCAweDA4MGMsIDB4OWUwYywKLQkweDJmNjAsIDB4MjAwOSwgMHgwMDRkLCAweDA4MGMsIDB4ODZkMywgMHhhMDg1LCAweDAwMDEsIDB4MDA0ZSwKLQkweDAwY2UsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4MDBjNiwgMHgwMDQ2LCAweDAwYzYsIDB4MDgwYywKLQkweDg2NGUsIDB4MmM3OCwgMHgwMGNlLCAweDAxNzgsIDB4N2UxMiwgMHgyYzAwLCAweDc4MWEsIDB4NzgxZiwKLQkweDAwMDMsIDB4MjAyMSwgMHgwMDA1LCAweDA0ODEsIDB4MmY2MCwgMHgyMDA5LCAweDAwNGUsIDB4MDgwYywKLQkweDg2ZDMsIDB4YTA4NSwgMHgwMDAxLCAweDAwNGUsIDB4MDBjZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwYzYsIDB4MDA0NiwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwgMHgyYzc4LCAweDAwY2UsIDB4MDFjMCwKLQkweDdlMTIsIDB4MmMwMCwgMHg3ODFhLCAweDc4MWYsIDB4MDAwMywgMHgyMDIxLCAweDAwMDQsIDB4MDBhMSwKLQkweDIwMDEsIDB4YjhhMCwgMHgyMDA0LCAweGQwZmMsIDB4MDEyMCwgMHgyZjYwLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwMjgsIDB4MmY2MCwgMHgyMDA5LCAweDAwNTIsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwKLQkweDAwNGUsIDB4MDBjZSwgMHgwMGZlLCAweDAwMDUsIDB4MDA5NiwgMHgwMDc2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg1MWJlLCAweDAxMTgsIDB4MjAwMSwgMHg5ZTExLCAweDAwMjgsIDB4MDgwYywKLQkweDUxOGUsIDB4MDE1OCwgMHgyMDAxLCAweDllMTcsIDB4MDAwNiwgMHhhMDBlLCAweDI0MDAsIDB4MDgwYywKLQkweDU1NGQsIDB4MDgwYywgMHg1NDdhLCAweDAwMGUsIDB4MDgwNywgMHgyNDE4LCAweDA4MGMsIDB4NzBhMSwKLQkweDYyYTAsIDB4MDA4NiwgMHgyMDQxLCAweDAwMDEsIDB4MjAzOSwgMHgwMDAxLCAweDI2MDgsIDB4MDgwYywKLQkweDZlODAsIDB4MDA4ZSwgMHgwODBjLCAweDZkNzQsIDB4MmYwOCwgMHgyNjQ4LCAweDA4MGMsIDB4YWYzZSwKLQkweDYxM2MsIDB4ODFmZiwgMHgwOTBjLCAweDZmMzUsIDB4MDgwYywgMHg3MWU1LCAweDAxMmUsIDB4MDA3ZSwKLQkweDAwOWUsIDB4MDAwNSwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzYsIDB4MDgwYywKLQkweDg2NGUsIDB4MDAxZSwgMHgwMTg4LCAweDY2MGEsIDB4NjExYSwgMHgwODBjLCAweGEwZTMsIDB4NjAxZiwKLQkweDAwMDEsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDAxZiwgMHgwODBjLCAweDg2ZDMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwgMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwgMHgwMDFlLCAweDAxODgsIDB4NjYwYSwKLQkweDYxMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwOCwgMHgyZDAwLCAweDYwMTIsIDB4MjAwOSwKLQkweDAwMjEsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwY2UsIDB4MDAwNSwKLQkweGEwMDYsIDB4MGNkOCwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzYsIDB4MDgwYywKLQkweDg2NGUsIDB4MDAxZSwgMHgwMTg4LCAweDY2MGEsIDB4NjExYSwgMHgwODBjLCAweGEwZTMsIDB4NjAxZiwKLQkweDAwMDEsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDAzZCwgMHgwODBjLCAweDg2ZDMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwgMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMGM2LCAweDA4MGMsIDB4OWY5MiwgMHgwMDFlLCAweDAxODAsIDB4NjExYSwKLQkweDA4MGMsIDB4YTBlMywgMHg2MDFmLCAweDAwMDEsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDAwMCwKLQkweDA4MGMsIDB4ODZkMywgMHhhMDg1LCAweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwKLQkweDBjZDgsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMGM2LCAweDA4MGMsIDB4ODY0ZSwKLQkweDAwMWUsIDB4MDE4OCwgMHg2NjBhLCAweDYxMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwMSwKLQkweDJkMDAsIDB4NjAxMiwgMHgyMDA5LCAweDAwNDQsIDB4MDgwYywgMHg4NmQzLCAweGEwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweGEwMDYsIDB4MGNkOCwgMHgwMDI2LCAweDAwZDYsIDB4NjIxOCwKLQkweDIyNjgsIDB4NmEzYywgMHg4MmZmLCAweDAxMTAsIDB4ODIxMSwgMHg2YTNlLCAweDAwZGUsIDB4MDAyZSwKLQkweDAwMDUsIDB4MDAwNiwgMHg2MDAwLCAweGEwODYsIDB4MDAwMCwgMHgwMTkwLCAweDYwMTMsIDB4MDAwMCwKLQkweDYwMWYsIDB4MDAwNywgMHgyMDAxLCAweGI4YjYsIDB4MjAwNCwgMHgwMDA2LCAweGEwODIsIDB4MDA1MSwKLQkweDAwMGUsIDB4MDIwOCwgMHg4MDA0LCAweDYwMTYsIDB4MDgwYywgMHhiM2Y2LCAweDYwM2YsIDB4MDAwMCwKLQkweDAwMGUsIDB4MDAwNSwgMHgwMDY2LCAweDAwYzYsIDB4MDBkNiwgMHgyMDMxLCAweGI2NTMsIDB4MjYzNCwKLQkweGQ2ZTQsIDB4MDEyOCwgMHg2NjE4LCAweDI2NjAsIDB4NmU0OCwgMHgwODBjLCAweDUxNDcsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDA2ZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwgMHg2MDA0LCAweGEwOGUsIDB4MDAwMiwKLQkweDAxNDAsIDB4YTA4ZSwgMHgwMDAzLCAweDAxMjgsIDB4YTA4ZSwgMHgwMDA0LCAweDAxMTAsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDYwMTAsIDB4YTA2ZCwKLQkweDAxNDgsIDB4NjgzNCwgMHhhMDg2LCAweDAxMzksIDB4MDEzOCwgMHg2ODM4LCAweGQwZmMsIDB4MDExMCwKLQkweGEwMDYsIDB4MDAxMCwgMHhhMDg1LCAweDAwMDEsIDB4MDBkZSwgMHgwMDBlLCAweDAwMDUsIDB4MDBjNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzYsIDB4MDgwYywgMHg4NjRlLCAweDAwMWUsIDB4MDE5MCwKLQkweDYxMWEsIDB4MDgwYywgMHhhMGUzLCAweDYwMWYsIDB4MDAwMSwgMHgyZDAwLCAweDYwMTIsIDB4MDgwYywKLQkweDJjZDEsIDB4MjAwOSwgMHgwMDI4LCAweDA4MGMsIDB4ODZkMywgMHhhMDg1LCAweDAwMDEsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDAwNSwgMHhhMDA2LCAweDBjZDgsIDB4YTE4NiwgMHgwMDE1LCAweDExNzgsIDB4MjAxMSwKLQkweGI2MjEsIDB4MjIwNCwgMHhhMDg2LCAweDAwNzQsIDB4MTE0OCwgMHgwODBjLCAweDkwMjQsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDI5LCAweDA4MGMsIDB4NmQ0NSwgMHgwMDIwLCAweDA4MGMsIDB4OGNhNSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweGExODYsIDB4MDAxNiwgMHgxMTI4LCAweDIwMDEsIDB4MDAwNCwKLQkweDA4MGMsIDB4NGY2ZiwgMHgwMGU4LCAweGExODYsIDB4MDAxNSwgMHgxMWU4LCAweDIwMTEsIDB4YjYyMSwKLQkweDIyMDQsIDB4YTA4NiwgMHgwMDE0LCAweDExYjgsIDB4MDBkNiwgMHg2MDE4LCAweDIwNjgsIDB4MDgwYywKLQkweDUwYmQsIDB4MDBkZSwgMHgwODBjLCAweDkwZGQsIDB4MTE3MCwgMHgwMGQ2LCAweDYwMTgsIDB4MjA2OCwKLQkweDY4OTAsIDB4MDBkZSwgMHhhMDA1LCAweDAxMzgsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NGY2ZiwKLQkweDA4MGMsIDB4ODgyYywgMHgwMDIwLCAweDA4MGMsIDB4OGNhNSwgMHgwODBjLCAweDg2YTQsIDB4MDAwNSwKLQkweDY4NDgsIDB4YTA4NiwgMHgwMDA1LCAweDExMDgsIDB4MDAwOSwgMHgwMDA1LCAweDY4NTAsIDB4YzBhZCwKLQkweDY4NTIsIDB4MDAwNSwgMHgwMGU2LCAweDAxMjYsIDB4MjA3MSwgMHhiNjAwLCAweDIwOTEsIDB4ODAwMCwKLQkweDc1NDgsIDB4YTU4MiwgMHgwMDAxLCAweDA2MDgsIDB4NzA0YywgMHgyMDYwLCAweDYwMDAsIDB4YTA4NiwKLQkweDAwMDAsIDB4MDE0OCwgMHhhY2UwLCAweDAwMTgsIDB4NzA1YywgMHhhYzAyLCAweDEyMDgsIDB4MGNiMCwKLQkweDIwNjEsIDB4YmUwMCwgMHgwYzk4LCAweDYwMDMsIDB4MDAwOCwgMHg4NTI5LCAweDc1NGEsIDB4YWNhOCwKLQkweDAwMTgsIDB4NzA1YywgMHhhNTAyLCAweDEyMzAsIDB4NzU0ZSwgMHhhMDg1LCAweDAwMDEsIDB4MDEyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3MDRmLCAweGJlMDAsIDB4MGNjMCwgMHhhMDA2LCAweDBjYzAsIDB4MDBlNiwKLQkweDIwNzEsIDB4YmM4YywgMHg3MDE0LCAweGQwZTQsIDB4MDE1MCwgMHg2MDEzLCAweDAwMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDUwLCAweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBjNiwgMHgwMGY2LCAweDJjNzgsIDB4MDgwYywgMHg1Mzc3LCAweDAwZmUsIDB4MDEyMCwKLQkweDYwMWMsIDB4YTA4NCwgMHgwMDBmLCAweDAwMTMsIDB4MDBjZSwgMHgwMDA1LCAweDlhYmEsIDB4OWZlOSwKLQkweDlmZWMsIDB4OWZlZiwgMHhiMWUzLCAweGIxZmUsIDB4YjIwMSwgMHg5YWJhLCAweDlhYmEsIDB4MDgwYywKLQkweDE1MWEsIDB4ZTAwMCwgMHhlMDAwLCAweDAwMDUsIDB4ZTAwMCwgMHhlMDAwLCAweDAwMDUsIDB4MDAwOSwKLQkweDAwMDUsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4NTM3NywgMHgwNTM4LCAweDA4MGMsIDB4ODY0ZSwKLQkweDExMjgsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDQsIDB4NzgzZSwgMHgwMGY4LCAweDc4MTgsIDB4NjAxYSwKLQkweDA4MGMsIDB4YTBlMywgMHg3ODFjLCAweGEwODYsIDB4MDAwMywgMHgwMTI4LCAweDc4MDgsIDB4NjAzNiwKLQkweDJmMDAsIDB4NjAzYSwgMHgwMDIwLCAweDc4MDgsIDB4NjAzYSwgMHgyZjAwLCAweDYwMzYsIDB4NjAyYSwKLQkweDYwMWYsIDB4MDAwMSwgMHg2MDA3LCAweDAwMzUsIDB4NjAwMywgMHgwMDAxLCAweDc5NTAsIDB4NjE1MiwKLQkweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MmY2MCwgMHgwMGZlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwZjYsIDB4NjgyYywgMHg2MDMyLCAweGEwOGUsIDB4MDAwMSwgMHgwMTM4LCAweGEwODYsIDB4MDAwNSwKLQkweDAxNDAsIDB4YTAwNiwgMHg2MDJhLCAweDYwMmUsIDB4MDBhMCwgMHg2ODIwLCAweGMwZjQsIDB4YzBkNSwKLQkweDY4MjIsIDB4NjgxMCwgMHgyMDc4LCAweDc4N2MsIDB4NjkzOCwgMHhhMTAyLCAweDc4ODAsIDB4NjkzNCwKLQkweGExMDMsIDB4MWU3OCwgMHg2ODM0LCAweDYwMmEsIDB4NjgzOCwgMHhhMDg0LCAweGZmZmMsIDB4NjgzYSwKLQkweDYwMmUsIDB4MmQwMCwgMHg2MDM2LCAweDY4MDgsIDB4NjAzYSwgMHg2OTE4LCAweDYxMWEsIDB4Njk1MCwKLQkweDYxNTIsIDB4NjAxZiwgMHgwMDAxLCAweDYwMDcsIDB4MDAzOSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDZjZmYsIDB4NjgwMywgMHgwMDAyLCAweDAwZmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4NTM3NywgMHgxMTE4LCAweGEwODUsIDB4MDAwMSwgMHgwMDcwLCAweDYwMjAsIDB4ZDBmNCwKLQkweDExNTAsIDB4YzBmNSwgMHg2MDIyLCAweDYwMTAsIDB4MjA3OCwgMHg3ODI4LCAweDYwM2EsIDB4NzgyYywKLQkweDYwMzYsIDB4MDgwYywgMHgxOTUyLCAweGEwMDYsIDB4MDBmZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwKLQkweDYwMDQsIDB4YTA4ZSwgMHgwMDM0LCAweDAxYjgsIDB4YTA4ZSwgMHgwMDM1LCAweDAxYTAsIDB4YTA4ZSwKLQkweDAwMzYsIDB4MDE4OCwgMHhhMDhlLCAweDAwMzcsIDB4MDE3MCwgMHhhMDhlLCAweDAwMzgsIDB4MDE1OCwKLQkweGEwOGUsIDB4MDAzOSwgMHgwMTQwLCAweGEwOGUsIDB4MDAzYSwgMHgwMTI4LCAweGEwOGUsIDB4MDAzYiwKLQkweDAxMTAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwMGU2LCAweDIwMDEsIDB4YjhiMiwgMHgyMDBjLCAweDgwMDAsIDB4MjAxNCwKLQkweDIwMDEsIDB4MDAzMiwgMHgwODBjLCAweDZiYjIsIDB4MjAwMSwgMHhiOGI2LCAweDgyZmYsIDB4MTExMCwKLQkweDIwMTEsIDB4MDAxNCwgMHgyMjAyLCAweDIwMDEsIDB4YjhiNCwgMHgyMDBjLCAweDgwMDAsIDB4MjAxNCwKLQkweDIwNzEsIDB4Yjg4ZSwgMHg3MTFhLCAweDcyMWUsIDB4MjAwMSwgMHgwMDY0LCAweDA4MGMsIDB4NmJiMiwKLQkweDIwMDEsIDB4YjhiNywgMHg4MmZmLCAweDExMTAsIDB4MjAxMSwgMHgwMDE0LCAweDIyMDIsIDB4MjAwOSwKLQkweGI4YjgsIDB4YTI4MCwgMHgwMDBhLCAweDIwMGEsIDB4MDgwYywgMHg1MzljLCAweDAwZWUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwgMHgwMGU2LCAweDIwMDEsIDB4YjhiNiwKLQkweDIwMDMsIDB4MDAyOCwgMHgyMDAxLCAweGI4YjcsIDB4MjAwMywgMHgwMDE0LCAweDIwNzEsIDB4Yjg4ZSwKLQkweDcwMWIsIDB4MDAwMCwgMHg3MDFmLCAweDA3ZDAsIDB4MjAwMSwgMHhiOGI4LCAweDIwMDMsIDB4MDAxZSwKLQkweDAwZWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZDYsIDB4NjA1NCwgMHhhMDZkLCAweDAxMTAsIDB4MDgwYywKLQkweDE2MTQsIDB4MDBkZSwgMHgwMDA1LCAweDAwMDUsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDAwYzYsIDB4MDgwYywgMHg4NjRlLCAweDAwMWUsIDB4MDE3OCwgMHg2MTFhLCAweDBjYTEsIDB4NjAxZiwKLQkweDAwMDEsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDAzMywgMHgwODBjLCAweDg2ZDMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwgMHgwY2Q4LCAweDAwZDYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MjA3MSwgMHhiNjAwLCAweGExODYsIDB4MDAxNSwgMHgxNTAwLCAweDcwODQsIDB4YTA4NiwKLQkweDAwMTgsIDB4MTFlMCwgMHg2MDEwLCAweDIwNjgsIDB4NmEzYywgMHhkMmU0LCAweDExNjAsIDB4MmM3OCwKLQkweDA4MGMsIDB4NzNhMywgMHgwMWQ4LCAweDcwNzAsIDB4NmE1MCwgMHhhMjA2LCAweDExNjAsIDB4NzA3NCwKLQkweDZhNTQsIDB4YTIwNiwgMHgxMTQwLCAweDYyMTgsIDB4YTI5MCwgMHgwMDI4LCAweDIyMTQsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDgwYywgMHgyZDE2LCAweDA4MGMsIDB4ODgyYywgMHgwMDIwLCAweDA4MGMsIDB4OGNhNSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMDA1LCAweDcwNTQsIDB4NmE1NCwKLQkweGEyMDYsIDB4MGQ0OCwgMHgwYzgwLCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDBjNiwKLQkweDA4MGMsIDB4ODY0ZSwgMHgwMDFlLCAweDAxODAsIDB4NjExYSwgMHgwODBjLCAweGEwZTMsIDB4NjAxZiwKLQkweDAwMDEsIDB4MmQwMCwgMHg2MDEyLCAweDIwMDksIDB4MDA0MywgMHgwODBjLCAweDg2ZDMsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4YTAwNiwgMHgwY2Q4LCAweDAwZDYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MjA3MSwgMHhiNjAwLCAweGExODYsIDB4MDAxNSwgMHgxMWMwLCAweDcwODQsIDB4YTA4NiwKLQkweDAwMDQsIDB4MTFhMCwgMHg2MDEwLCAweGEwZTgsIDB4MDAwZiwgMHgyYzc4LCAweDA4MGMsIDB4NzNhMywKLQkweDAxYTgsIDB4NzA3MCwgMHg2YTA4LCAweGEyMDYsIDB4MTEzMCwgMHg3MDc0LCAweDZhMGMsIDB4YTIwNiwKLQkweDExMTAsIDB4MDgwYywgMHgyY2QxLCAweDA4MGMsIDB4ODgyYywgMHgwMDIwLCAweDA4MGMsIDB4OGNhNSwKLQkweDA4MGMsIDB4ODZhNCwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMDA1LCAweDcwNTQsIDB4NmEwYywKLQkweGEyMDYsIDB4MGQ3OCwgMHgwYzgwLCAweDAwMTYsIDB4MDAyNiwgMHg2ODRjLCAweGQwYWMsIDB4MDE3OCwKLQkweDY5MTQsIDB4NmExMCwgMHgyMTAwLCAweGEyMDUsIDB4MDE1MCwgMHg2ODYwLCAweGExMDYsIDB4MTExOCwKLQkweDY4NWMsIDB4YTIwNiwgMHgwMTIwLCAweDY5NjIsIDB4NmE1ZSwgMHhhMDg1LCAweDAwMDEsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMGQ2LCAweDAwMzYsIDB4NjMxMCwgMHgyMzY4LCAweDY4NGEsIDB4Njk1MiwKLQkweGEyOWUsIDB4NDAwMCwgMHgxMWEwLCAweDAwYzYsIDB4NjMxOCwgMHgyMzYwLCAweDIwMDksIDB4MDAwMCwKLQkweDY4MzgsIDB4ZDBmNCwgMHgxMTQwLCAweDA4MGMsIDB4NTJiYywgMHgxMTA4LCAweGMxODUsIDB4NjAwMCwKLQkweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDZhNjYsIDB4Njk2YSwgMHgwMGNlLCAweDAwODAsIDB4NmE2NiwKLQkweDM5MTgsIDB4YTM5OCwgMHgwMDA2LCAweDIzMWMsIDB4Njg2YiwgMHgwMDA0LCAweDZiNzIsIDB4MDBjNiwKLQkweDYzMTgsIDB4MjM2MCwgMHg2MDA0LCAweGEwODQsIDB4MDBmZiwgMHg2ODZlLCAweDAwY2UsIDB4MDgwYywKLQkweDU0N2EsIDB4NjAxMywgMHgwMDAwLCAweDAwM2UsIDB4MDBkZSwgMHgwMDA1LCAweDAwYzYsIDB4MDAyNiwKLQkweDAwMTYsIDB4YTE4NiwgMHgwMDM1LCAweDAxMTAsIDB4NmEzNCwgMHgwMDA4LCAweDZhMjgsIDB4MDgwYywKLQkweDlkMDYsIDB4MDFmMCwgMHgyMjYwLCAweDYxMWMsIDB4YTE4NiwgMHgwMDAzLCAweDAxMTgsIDB4YTE4NiwKLQkweDAwMDYsIDB4MTE5MCwgMHg2ODM0LCAweGEyMDYsIDB4MDE0MCwgMHg2ODM4LCAweGEyMDYsIDB4MTE2MCwKLQkweDYxMDgsIDB4NjgzNCwgMHhhMTA2LCAweDExNDAsIDB4MDAyMCwgMHg2MDA4LCAweDY5MzgsIDB4YTEwNiwKLQkweDExMTgsIDB4NjAxOCwgMHg2OTE4LCAweGExMDYsIDB4MDAxZSwgMHgwMDJlLCAweDAwY2UsIDB4MDAwNSwKLQkweGEwODUsIDB4MDAwMSwgMHgwY2M4LCAweDY5NDQsIDB4ZDFjYywgMHgwMTk4LCAweGExOGMsIDB4MDBmZiwKLQkweGExOGUsIDB4MDAwMiwgMHgxMTcwLCAweGFkODgsIDB4MDAxZSwgMHgyMTBjLCAweGExOGMsIDB4MGYwMCwKLQkweDgxMGYsIDB4YTE4ZSwgMHgwMDAxLCAweDExMjgsIDB4NjgxMCwgMHg2OTE0LCAweGExMTUsIDB4MTkwYywKLQkweDk1M2YsIDB4MDAwNSwgMHgwODBjLCAweDg2YTQsIDB4MDgwNCwgMHg3MWU1LCAweDAwNjYsIDB4NjAwMCwKLQkweGEwYjIsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAxMywgMHgwMDZlLCAweDAwMDUsIDB4YTIyNywKLQkweGE3MDIsIDB4YTgyOCwgMHhhMjI3LCAweGEyMjcsIDB4YTIyNywgMHhhMjI3LCAweGEyMjcsIDB4YTI1ZiwKLQkweGE4YWMsIDB4YTIyNywgMHhhMjI3LCAweGEyMjcsIDB4YTIyNywgMHhhMjI3LCAweGEyMjcsIDB4MDgwYywKLQkweDE1MWEsIDB4MDA2NiwgMHg2MDAwLCAweGEwYjIsIDB4MDAxMCwgMHgxYTBjLCAweDE1MWEsIDB4MDAxMywKLQkweDAwNmUsIDB4MDAwNSwgMHhhMjQyLCAweGFkMzMsIDB4YTI0MiwgMHhhMjQyLCAweGEyNDIsIDB4YTI0MiwKLQkweGEyNDIsIDB4YTI0MiwgMHhhY2Y1LCAweGFkN2IsIDB4YTI0MiwgMHhiMzI4LCAweGIzNTgsIDB4YjMyOCwKLQkweGIzNTgsIDB4YTI0MiwgMHgwODBjLCAweDE1MWEsIDB4MDA2NiwgMHg2MDAwLCAweGEwYjIsIDB4MDAxMCwKLQkweDFhMGMsIDB4MTUxYSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwgMHhhMjVkLCAweGE5ZmMsIDB4YWFjOSwKLQkweGFhZjYsIDB4YWI3YSwgMHhhMjVkLCAweGFjNjcsIDB4YWMxMiwgMHhhOGI4LCAweGFjY2IsIDB4YWNlMCwKLQkweGEyNWQsIDB4YTI1ZCwgMHhhMjVkLCAweGEyNWQsIDB4YTI1ZCwgMHgwODBjLCAweDE1MWEsIDB4YTFiMiwKLQkweDAwODAsIDB4MWEwYywgMHgxNTFhLCAweDIxMDAsIDB4YTFiMiwgMHgwMDQwLCAweDFhMDQsIDB4YTY3NiwKLQkweDAwMDIsIDB4YTJhOSwgMHhhNDc0LCAweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGE0N2IsIDB4YTJhOSwKLQkweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwKLQkweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwKLQkweGEyYWIsIDB4YTMwOSwgMHhhMzE4LCAweGEzNjYsIDB4YTM4NCwgMHhhNDAyLCAweGE0NjEsIDB4YTJhOSwKLQkweGEyYTksIDB4YTQ3ZSwgMHhhMmE5LCAweGEyYTksIDB4YTQ5MSwgMHhhNDljLCAweGEyYTksIDB4YTJhOSwKLQkweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGE1MjcsIDB4YTJhOSwgMHhhMmE5LCAweGE1M2EsIDB4YTJhOSwKLQkweGEyYTksIDB4YTRmMiwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwgMHhhNTUyLCAweGEyYTksIDB4YTJhOSwKLQkweGEyYTksIDB4YTVjYywgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwgMHhhMmE5LCAweGEyYTksIDB4YTJhOSwKLQkweGE2M2QsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4NTM3YiwgMHgxMTUwLCAweDIwMDEsIDB4YjYzNSwKLQkweDIwMDQsIDB4ZDBjYywgMHgxMTI4LCAweGEwODQsIDB4MDAwOSwgMHhhMDg2LCAweDAwMDgsIDB4MTE0MCwKLQkweDYwMDcsIDB4MDAwOSwgMHg2MDJiLCAweDAwMDksIDB4NjAxMywgMHgwMDAwLCAweDA4MDQsIDB4YTQ2ZiwKLQkweDA4MGMsIDB4NTM2YiwgMHgwMGU2LCAweDAwYzYsIDB4MDAzNiwgMHgwMDI2LCAweDAwMTYsIDB4NjIxOCwKLQkweDIyNzAsIDB4NzJhMCwgMHgwMDI2LCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDZlNjcsIDB4MDA3NiwKLQkweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDZkNzQsIDB4MmMwOCwgMHgwODBjLCAweGFmM2UsIDB4MDA3ZSwKLQkweDAwMWUsIDB4MmU2MCwgMHgwODBjLCAweDUyMWMsIDB4MDAxZSwgMHgwMDJlLCAweDAwM2UsIDB4MDBjZSwKLQkweDAwZWUsIDB4NjYxOCwgMHgwMGM2LCAweDI2NjAsIDB4MDgwYywgMHg1MDJhLCAweDAwY2UsIDB4YTZiMCwKLQkweDAwMDEsIDB4MjYzNCwgMHhhNjg0LCAweDAwZmYsIDB4YTA4MiwgMHgwMDA2LCAweDAyNzgsIDB4MDgwYywKLQkweGFlODIsIDB4MTkwNCwgMHhhMzYwLCAweDA4MGMsIDB4YWUyMiwgMHgxMTIwLCAweDYwMDcsIDB4MDAwOCwKLQkweDA4MDQsIDB4YTQ2ZiwgMHg2MDA3LCAweDAwMDksIDB4MDgwNCwgMHhhNDZmLCAweDA4MGMsIDB4YjAzNywKLQkweDAxMjgsIDB4MDgwYywgMHhhZTgyLCAweDBkNzgsIDB4MDgwNCwgMHhhMzYwLCAweDYwMTMsIDB4MTkwMCwKLQkweDBjODgsIDB4MDgwYywgMHgyZGY0LCAweDE5MDQsIDB4YTY3MywgMHg2MTA2LCAweDA4MGMsIDB4YWRkYywKLQkweDYwMDcsIDB4MDAwNiwgMHgwODA0LCAweGE0NmYsIDB4NjAwNywgMHgwMDA3LCAweDA4MDQsIDB4YTQ2ZiwKLQkweDA4MGMsIDB4YjM4YywgMHgxOTA0LCAweGE2NzMsIDB4MDgwYywgMHgyZGY0LCAweDE5MDQsIDB4YTY3MywKLQkweDAwZDYsIDB4NjYxOCwgMHgyNjY4LCAweDZlMDQsIDB4YTY4NCwgMHgwMGZmLCAweGEwODIsIDB4MDAwNiwKLQkweDEyMjAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NGY1ZCwgMHhhNmI0LCAweGZmMDAsIDB4ODYzNywKLQkweGE2ODYsIDB4MDAwNiwgMHgwMTg4LCAweGE2ODYsIDB4MDAwNCwgMHgwMTcwLCAweDZlMDQsIDB4YTZiNCwKLQkweDAwZmYsIDB4YTY4NiwgMHgwMDA2LCAweDAxNDAsIDB4YTY4NiwgMHgwMDA0LCAweDAxMjgsIDB4YTY4NiwKLQkweDAwMDUsIDB4MDExMCwgMHgwMGRlLCAweDAwZTAsIDB4MDgwYywgMHhhZWUwLCAweDExYTAsIDB4YTY4NiwKLQkweDAwMDYsIDB4MTE1MCwgMHgwMDI2LCAweDYyMTgsIDB4YTI5MCwgMHgwMDI4LCAweDIyMTQsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDgwYywgMHgyZDE2LCAweDAwMmUsIDB4MDgwYywgMHg1MGJkLCAweDYwMDcsIDB4MDAwYSwKLQkweDAwZGUsIDB4MDgwNCwgMHhhNDZmLCAweDYwMDcsIDB4MDAwYiwgMHgwMGRlLCAweDA4MDQsIDB4YTQ2ZiwKLQkweDA4MGMsIDB4MmNkMSwgMHg2MDA3LCAweDAwMDEsIDB4MDgwNCwgMHhhNDZmLCAweDA4MGMsIDB4YjM4YywKLQkweDE5MDQsIDB4YTY3MywgMHgwODBjLCAweDJkZjQsIDB4MTkwNCwgMHhhNjczLCAweDY2MTgsIDB4MDBkNiwKLQkweDI2NjgsIDB4NmUwNCwgMHgwMGRlLCAweGE2ODYsIDB4MDcwNywgMHgwZDUwLCAweDAwMjYsIDB4NjIxOCwKLQkweGEyOTAsIDB4MDAyOCwgMHgyMjE0LCAweDIwMDksIDB4MDAwMCwgMHgwODBjLCAweDJkMTYsIDB4MDAyZSwKLQkweDYwMDcsIDB4MDAwYywgMHgwODA0LCAweGE0NmYsIDB4MDgwYywgMHg1MzdiLCAweDExNDAsIDB4MjAwMSwKLQkweGI2MzUsIDB4MjAwNCwgMHhhMDg0LCAweDAwMDksIDB4YTA4NiwgMHgwMDA4LCAweDExMTAsIDB4MDgwNCwKLQkweGEyYjgsIDB4MDgwYywgMHg1MzZiLCAweDY2MTgsIDB4YTZiMCwgMHgwMDAxLCAweDI2MzQsIDB4YTY4NCwKLQkweDAwZmYsIDB4YTA4MiwgMHgwMDA2LCAweDA2ZTgsIDB4MTEzOCwgMHgwMDI2LCAweDIwMDEsIDB4MDAwNiwKLQkweDA4MGMsIDB4NGY5YywgMHgwMDJlLCAweDAwNTAsIDB4YTZiNCwgMHhmZjAwLCAweDg2MzcsIDB4YTY4NiwKLQkweDAwMDQsIDB4MDEyMCwgMHhhNjg2LCAweDAwMDYsIDB4MTkwNCwgMHhhMzYwLCAweDA4MGMsIDB4YWVlZCwKLQkweDExMjAsIDB4NjAwNywgMHgwMDBlLCAweDA4MDQsIDB4YTQ2ZiwgMHgwMDQ2LCAweDY0MTgsIDB4YTRhMCwKLQkweDAwMjgsIDB4MjQyNCwgMHhhNGE0LCAweDAwZmYsIDB4ODQyNywgMHgwMDQ2LCAweDA4MGMsIDB4MmNkMSwKLQkweDAwNGUsIDB4MDAxNiwgMHhhMDA2LCAweDIwMDksIDB4YjY1MywgMHgyMTBjLCAweGQxYTQsIDB4MDE1OCwKLQkweDIwMDksIDB4MDAyOSwgMHgwODBjLCAweGIxYTQsIDB4NjAxOCwgMHgwMGQ2LCAweDIwNjgsIDB4NjgwMCwKLQkweGMwZTUsIDB4NjgwMiwgMHgwMGRlLCAweDAwMWUsIDB4MDA0ZSwgMHg2MDA3LCAweDAwMDEsIDB4MDgwNCwKLQkweGE0NmYsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NGY1ZCwgMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MjBhOSwgMHgwMDA0LCAweDIwMTksIDB4YjYwNSwgMHgyMDExLCAweGJjOTAsIDB4MDgwYywKLQkweDkxNjYsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDE1ZSwgMHhhMDA1LCAweDAxNjgsIDB4YTZiNCwKLQkweGZmMDAsIDB4ODYzNywgMHhhNjgyLCAweDAwMDQsIDB4MGEwNCwgMHhhMzYwLCAweGE2ODIsIDB4MDAwNywKLQkweDBhMDQsIDB4YTNhZSwgMHgwODA0LCAweGEzNjAsIDB4NjAxMywgMHgxOTAwLCAweDYwMDcsIDB4MDAwOSwKLQkweDA4MDQsIDB4YTQ2ZiwgMHgwODBjLCAweDUzN2IsIDB4MTE0MCwgMHgyMDAxLCAweGI2MzUsIDB4MjAwNCwKLQkweGEwODQsIDB4MDAwOSwgMHhhMDg2LCAweDAwMDgsIDB4MTExMCwgMHgwODA0LCAweGEyYjgsIDB4MDgwYywKLQkweDUzNmIsIDB4NjYxOCwgMHhhNmIwLCAweDAwMDEsIDB4MjYzNCwgMHhhNjg0LCAweDAwZmYsIDB4YTA4MiwKLQkweDAwMDYsIDB4MDZiOCwgMHhhNmI0LCAweGZmMDAsIDB4ODYzNywgMHhhNjg2LCAweDAwMDQsIDB4MDEyMCwKLQkweGE2ODYsIDB4MDAwNiwgMHgxOTA0LCAweGEzNjAsIDB4MDgwYywgMHhhZjE1LCAweDExMzgsIDB4MDgwYywKLQkweGFlMjIsIDB4MTEyMCwgMHg2MDA3LCAweDAwMTAsIDB4MDgwNCwgMHhhNDZmLCAweDAwNDYsIDB4NjQxOCwKLQkweGE0YTAsIDB4MDAyOCwgMHgyNDI0LCAweGE0YTQsIDB4MDBmZiwgMHg4NDI3LCAweDAwNDYsIDB4MDgwYywKLQkweDJjZDEsIDB4MDA0ZSwgMHgwMDE2LCAweGEwMDYsIDB4MjAwOSwgMHhiNjUzLCAweDIxMGMsIDB4ZDFhNCwKLQkweDAxNTgsIDB4MjAwOSwgMHgwMDI5LCAweDA4MGMsIDB4YjFhNCwgMHg2MDE4LCAweDAwZDYsIDB4MjA2OCwKLQkweDY4MDAsIDB4YzBlNSwgMHg2ODAyLCAweDAwZGUsIDB4MDAxZSwgMHgwMDRlLCAweDYwMDcsIDB4MDAwMSwKLQkweDAwZjAsIDB4MDgwYywgMHhiMDM3LCAweDAxNDAsIDB4YTZiNCwgMHhmZjAwLCAweDg2MzcsIDB4YTY4NiwKLQkweDAwMDYsIDB4MDk1MCwgMHgwODA0LCAweGEzNjAsIDB4NjAxMywgMHgxOTAwLCAweDYwMDcsIDB4MDAwOSwKLQkweDAwNzAsIDB4MDgwYywgMHgyZGY0LCAweDE5MDQsIDB4YTY3MywgMHgwODBjLCAweGIzOGMsIDB4MTkwNCwKLQkweGE2NzMsIDB4MDgwYywgMHhhNjliLCAweDE5MDQsIDB4YTM2MCwgMHg2MDA3LCAweDAwMTIsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg2ZDQ1LCAweDAwMDUsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwKLQkweDA4MGMsIDB4NmQ0NSwgMHgwY2MwLCAweDYwMDcsIDB4MDAwNSwgMHgwY2MwLCAweDA4MGMsIDB4YjM4YywKLQkweDE5MDQsIDB4YTY3MywgMHgwODBjLCAweDJkZjQsIDB4MTkwNCwgMHhhNjczLCAweDA4MGMsIDB4YTY5YiwKLQkweDE5MDQsIDB4YTM2MCwgMHg2MDA3LCAweDAwMjAsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmQ0NSwKLQkweDAwMDUsIDB4MDgwYywgMHgyZGY0LCAweDE5MDQsIDB4YTY3MywgMHg2MDA3LCAweDAwMjMsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg2ZDQ1LCAweDAwMDUsIDB4MDgwYywgMHhiMzhjLCAweDE5MDQsIDB4YTY3MywKLQkweDA4MGMsIDB4MmRmNCwgMHgxOTA0LCAweGE2NzMsIDB4MDgwYywgMHhhNjliLCAweDE5MDQsIDB4YTM2MCwKLQkweDAwMTYsIDB4MDAyNiwgMHgyMDExLCAweGJjOTEsIDB4MjIxNCwgMHhhMjg2LCAweGZmZmYsIDB4MDE5MCwKLQkweDJjMDgsIDB4MDgwYywgMHg5ZDA2LCAweDAxZTAsIDB4MjI2MCwgMHgyMDExLCAweGJjOTAsIDB4MjIxNCwKLQkweDYwMDgsIDB4YTIwNiwgMHgxMWE4LCAweDYwMTgsIDB4YTE5MCwgMHgwMDA2LCAweDIyMTQsIDB4YTIwNiwKLQkweDAxZTgsIDB4MDA3MCwgMHgyMDExLCAweGJjOTAsIDB4MjIxNCwgMHgyYzA4LCAweGEwMDYsIDB4MDgwYywKLQkweGIxNzYsIDB4MTFhMCwgMHgyMDExLCAweGJjOTEsIDB4MjIxNCwgMHhhMjg2LCAweGZmZmYsIDB4MDFjMCwKLQkweDIxNjAsIDB4NjAwNywgMHgwMDI2LCAweDYwMTMsIDB4MTcwMCwgMHgyMDExLCAweGJjODksIDB4MjIxNCwKLQkweGEyOTYsIDB4ZmZmZiwgMHgxMTgwLCAweDYwMDcsIDB4MDAyNSwgMHgwMDY4LCAweDYwMWMsIDB4YTA4NiwKLQkweDAwMDcsIDB4MWQ3MCwgMHg2MDA0LCAweGEwODYsIDB4MDAyNCwgMHgxMTEwLCAweDA4MGMsIDB4ODZhNCwKLQkweDIxNjAsIDB4NjAwNywgMHgwMDI1LCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZkNDUsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHg0ZjVkLCAweDAxNTYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgyMGE5LCAweDAwMDQsIDB4MjAxOSwgMHhiNjA1LCAweDIwMTEsIDB4YmM5NiwKLQkweDA4MGMsIDB4OTE2NiwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMTVlLCAweDAxMjAsIDB4NjAwNywKLQkweDAwMzEsIDB4MDgwNCwgMHhhNDZmLCAweDA4MGMsIDB4OGU4MiwgMHgwODBjLCAweDViNDEsIDB4MTFiMCwKLQkweDAwMDYsIDB4MDAyNiwgMHgwMDM2LCAweDA4MGMsIDB4NWI1ZCwgMHgxMTU4LCAweDIwMDEsIDB4Yjg5ZiwKLQkweDIwMDMsIDB4MDAwMSwgMHgyMDAxLCAweGI2MDAsIDB4MjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NWE3OSwKLQkweDAwMTAsIDB4MDgwYywgMHg1YjE4LCAweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDAwMDUsIDB4MDgwYywKLQkweDJkZjQsIDB4MTkwNCwgMHhhNjczLCAweDA4MGMsIDB4YTY5YiwgMHgxOTA0LCAweGEzNjAsIDB4NjEwNiwKLQkweDA4MGMsIDB4YTZiNywgMHg2MDA3LCAweDAwMmIsIDB4MDgwNCwgMHhhNDZmLCAweDYwMDcsIDB4MDAyYywKLQkweDA4MDQsIDB4YTQ2ZiwgMHgwODBjLCAweGIzOGMsIDB4MTkwNCwgMHhhNjczLCAweDA4MGMsIDB4MmRmNCwKLQkweDE5MDQsIDB4YTY3MywgMHgwODBjLCAweGE2OWIsIDB4MTkwNCwgMHhhMzYwLCAweDYxMDYsIDB4MDgwYywKLQkweGE2YmIsIDB4MTEyMCwgMHg2MDA3LCAweDAwMmUsIDB4MDgwNCwgMHhhNDZmLCAweDYwMDcsIDB4MDAyZiwKLQkweDA4MDQsIDB4YTQ2ZiwgMHgwODBjLCAweDJkZjQsIDB4MTkwNCwgMHhhNjczLCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4NjAxOCwgMHhhMDgwLCAweDAwMDEsIDB4MjAwYywgMHhhMTg0LCAweDAwZmYsIDB4YTA4NiwKLQkweDAwMDYsIDB4MDE1OCwgMHhhMTg0LCAweGZmMDAsIDB4ODAwNywgMHhhMDg2LCAweDAwMDYsIDB4MDEyOCwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDA4MDQsIDB4YTQ3NCwgMHgyMDAxLCAweGI2NzIsIDB4MjAwNCwKLQkweGQwZTQsIDB4MDkwNCwgMHhhNWM5LCAweDIwNzEsIDB4YmM4YywgMHg3MDEwLCAweDYwMzYsIDB4NzAxNCwKLQkweDYwM2EsIDB4NzEwOCwgMHg3MjBjLCAweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYTQsIDB4MDE0MCwKLQkweDYwMTgsIDB4MjA2OCwgMHg2ODEwLCAweGExMDYsIDB4MTExOCwgMHg2ODE0LCAweGEyMDYsIDB4MDFmOCwKLQkweDIwMDEsIDB4YjY1MywgMHgyMDA0LCAweGQwYWMsIDB4MTU5MCwgMHgyMDY5LCAweGI2MDAsIDB4Njg3NCwKLQkweGEyMDYsIDB4MTU2OCwgMHg2ODcwLCAweGExMDYsIDB4MTU1MCwgMHg3MjEwLCAweDA4MGMsIDB4OWQwNiwKLQkweDA1NTgsIDB4MDgwYywgMHhiMjEwLCAweDA1NDAsIDB4NjIyYSwgMHg2MDA3LCAweDAwMzYsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg2Y2ZmLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4NzIxNCwKLQkweGEyODYsIDB4ZmZmZiwgMHgwMTUwLCAweDA4MGMsIDB4OWQwNiwgMHgwMWIwLCAweGEyODAsIDB4MDAwMiwKLQkweDIwMDQsIDB4NzExMCwgMHhhMTA2LCAweDExODAsIDB4MGMwOCwgMHg3MjEwLCAweDJjMDgsIDB4YTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHhiMTc2LCAweDJjMTAsIDB4MjE2MCwgMHgwMTMwLCAweDA4YjgsIDB4NjAwNywKLQkweDAwMzcsIDB4NjAxMywgMHgxNTAwLCAweDA4ZDgsIDB4NjAwNywgMHgwMDM3LCAweDYwMTMsIDB4MTcwMCwKLQkweDA4YjAsIDB4NjAwNywgMHgwMDEyLCAweDA4OTgsIDB4MDgwYywgMHgyZGY0LCAweDE5MDQsIDB4YTY3MywKLQkweDYwMTgsIDB4YTA4MCwgMHgwMDAxLCAweDIwMDQsIDB4YTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4YTA4NiwKLQkweDAwMDYsIDB4MTkwNCwgMHhhNDc0LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDIwMDEsIDB4YjY3MiwKLQkweDIwMDQsIDB4ZDBlNCwgMHgwOTA0LCAweGE2MzUsIDB4MjA2OSwgMHhiNjAwLCAweDIwNzEsIDB4YmM4YywKLQkweDcwMDgsIDB4NjAzNiwgMHg3MjBjLCAweDYyM2EsIDB4YTI4NiwgMHhmZmZmLCAweDExNTAsIDB4NzIwOCwKLQkweDAwYzYsIDB4MmMwOCwgMHhhMDg1LCAweDAwMDEsIDB4MDgwYywgMHhiMTc2LCAweDJjMTAsIDB4MDBjZSwKLQkweDA1ODgsIDB4MDgwYywgMHg5ZDA2LCAweDA1NzAsIDB4MDBjNiwgMHgwMDI2LCAweDIyNjAsIDB4MDgwYywKLQkweDk5ZDksIDB4MDAyZSwgMHgwMGNlLCAweDcxMTgsIDB4YTE4YywgMHhmZjAwLCAweDgxMGYsIDB4YTE4NiwKLQkweDAwMDEsIDB4MDE1OCwgMHhhMTg2LCAweDAwMDUsIDB4MDExOCwgMHhhMTg2LCAweDAwMDcsIDB4MTE3OCwKLQkweGEyODAsIDB4MDAwNCwgMHgyMDA0LCAweGEwMDUsIDB4MDE1MCwgMHgwMDU2LCAweDc1MTAsIDB4NzYxNCwKLQkweDA4MGMsIDB4YjIyNywgMHgwMDVlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4NjAwNywKLQkweDAwM2IsIDB4NjAyYiwgMHgwMDA5LCAweDYwMTMsIDB4MmEwMCwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDZjZmYsIDB4MGM4OCwgMHg2MDA3LCAweDAwM2IsIDB4NjAyYiwgMHgwMDA5LCAweDYwMTMsIDB4MTcwMCwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZjZmYsIDB4MGMzMCwgMHg2MDA3LCAweDAwM2IsIDB4NjAyYiwKLQkweDAwMGIsIDB4NjAxMywgMHgwMDAwLCAweDA4MDQsIDB4YTU5ZiwgMHgwMGU2LCAweDAwMjYsIDB4MDgwYywKLQkweDUzN2IsIDB4MDU1OCwgMHgwODBjLCAweDUzNmIsIDB4MDgwYywgMHhiNDA3LCAweDE1MjAsIDB4MjA3MSwKLQkweGI2MDAsIDB4NzBkNCwgMHhjMDg1LCAweDcwZDYsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4NzJhMCwKLQkweGEyODQsIDB4MDBmZiwgMHg3MDcyLCAweDc4ZTYsIDB4YTI4NCwgMHhmZjAwLCAweDcyNzQsIDB4YTIwNSwKLQkweDcwNzYsIDB4NzhlYSwgMHgwMGZlLCAweDcwZGYsIDB4MDAwMCwgMHgyMDAxLCAweGI2NTMsIDB4MjAwNCwKLQkweGQwYTQsIDB4MDEyMCwgMHgyMDExLCAweGI4ZmEsIDB4MjAxMywgMHgwN2QwLCAweGQwYWMsIDB4MTEyOCwKLQkweDA4MGMsIDB4MmFlZCwgMHgwMDEwLCAweDA4MGMsIDB4YjQzMywgMHgwMDJlLCAweDAwZWUsIDB4MDgwYywKLQkweDg2YTQsIDB4MDgwNCwgMHhhNDczLCAweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweDI2MDAsIDB4MDAwMiwKLQkweGE2ODEsIDB4YTY4MSwgMHhhNjgxLCAweGE2ODEsIDB4YTY4MSwgMHhhNjgzLCAweGE2ODEsIDB4YTY4MSwKLQkweGE2ODEsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4YjM4YywgMHgxZDY4LCAweDA4MGMsIDB4MmRmNCwKLQkweDFkNTAsIDB4MDA4OSwgMHgxMTM4LCAweDYwMDcsIDB4MDA0NSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDZkNDUsIDB4MDAwNSwgMHgwODBjLCAweDJjZDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwKLQkweDA4MGMsIDB4NmQ0NSwgMHgwMDA1LCAweDAwZDYsIDB4MDA2NiwgMHg2NjE4LCAweDI2NjgsIDB4NmUwNCwKLQkweGE2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweGE2ODYsIDB4MDAwNiwgMHgwMTcwLCAweGE2ODYsIDB4MDAwNCwKLQkweDAxNTgsIDB4NmUwNCwgMHhhNmI0LCAweDAwZmYsIDB4YTY4NiwgMHgwMDA2LCAweDAxMjgsIDB4YTY4NiwKLQkweDAwMDQsIDB4MDExMCwgMHhhMDg1LCAweDAwMDEsIDB4MDA2ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwKLQkweDA0NDksIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDQ5MSwgMHgxMWYwLCAweDY4MGMsIDB4YTA4YywKLQkweGZmMDAsIDB4NjgyMCwgMHhhMDg0LCAweDAwZmYsIDB4YTExNSwgMHg2MjEyLCAweDY4MjQsIDB4NjAyYSwKLQkweGQxZTQsIDB4MDExOCwgMHgyMDA5LCAweDAwMDEsIDB4MDA2MCwgMHhkMWVjLCAweDAxNjgsIDB4NjkyMCwKLQkweGExOGMsIDB4MDBmZiwgMHg2ODI0LCAweDA4MGMsIDB4Mjg1MiwgMHgxMTMwLCAweDIxMTAsIDB4MjAwOSwKLQkweDAwMDAsIDB4MDgwYywgMHgyZDE2LCAweDAwMTgsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4YTAwNiwKLQkweDAwZGUsIDB4MDAwNSwgMHgyMDY5LCAweGJjOGQsIDB4NjgwMCwgMHhhMDgyLCAweDAwMTAsIDB4MTIyOCwKLQkweDYwMTMsIDB4MDAwMCwgMHhhMDg1LCAweDAwMDEsIDB4MDAwOCwgMHhhMDA2LCAweDAwMDUsIDB4NjAxMywKLQkweDAwMDAsIDB4MjA2OSwgMHhiYzhjLCAweDY4MDgsIDB4YTA4NCwgMHhmZjAwLCAweGEwODYsIDB4MDgwMCwKLQkweDExNDAsIDB4NjgwMCwgMHhhMDg0LCAweDAwZmYsIDB4YTA4ZSwgMHgwMDE0LCAweDAxMTAsIDB4YTA4ZSwKLQkweDAwMTAsIDB4MDAwNSwgMHg2MDA0LCAweGEwYjIsIDB4MDA4MCwgMHgxYTBjLCAweDE1MWEsIDB4YTFiNiwKLQkweDAwMTMsIDB4MTEzMCwgMHgyMDA4LCAweGExYjIsIDB4MDA0MCwgMHgxYTA0LCAweGE4MDIsIDB4MDA5MiwKLQkweGExYjYsIDB4MDAyNywgMHgwMTIwLCAweGExYjYsIDB4MDAxNCwgMHgxOTBjLCAweDE1MWEsIDB4MjAwMSwKLQkweDAwMDcsIDB4MDgwYywgMHg0ZjljLCAweDA4MGMsIDB4NzEwMiwgMHgwODBjLCAweDllZDksIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHhhNzYyLCAweGE3NjQsIDB4YTc2MiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2NCwKLQkweGE3NzYsIDB4YTdmYiwgMHhhN2M2LCAweGE3ZmIsIDB4YTdkNywgMHhhN2ZiLCAweGE3NzYsIDB4YTdmYiwKLQkweGE3ZjMsIDB4YTdmYiwgMHhhN2YzLCAweGE3ZmIsIDB4YTdmYiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2MiwKLQkweGE3NjIsIDB4YTc2MiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2MiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2MiwKLQkweGE3NjQsIDB4YTc2MiwgMHhhN2ZiLCAweGE3NjIsIDB4YTc2MiwgMHhhN2ZiLCAweGE3NjIsIDB4YTdmOCwKLQkweGE3ZmIsIDB4YTc2MiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2MiwgMHhhN2ZiLCAweGE3ZmIsIDB4YTc2MiwKLQkweGE3ZmIsIDB4YTdmYiwgMHhhNzYyLCAweGE3NzAsIDB4YTc2MiwgMHhhNzYyLCAweGE3NjIsIDB4YTc2MiwKLQkweGE3ZjcsIDB4YTdmYiwgMHhhNzYyLCAweGE3NjIsIDB4YTdmYiwgMHhhN2ZiLCAweGE3NjIsIDB4YTc2MiwKLQkweGE3NjIsIDB4YTc2MiwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywgMHg3MTAyLCAweDIwMDEsIDB4YjhiNiwKLQkweDIwMDQsIDB4NjAxNiwgMHg2MDAzLCAweDAwMDIsIDB4MDgwYywgMHg3MWU1LCAweDA4MDQsIDB4YTgwMSwKLQkweDIwMDEsIDB4MDAwMCwgMHgwODBjLCAweDRmNWQsIDB4MDgwNCwgMHhhN2ZiLCAweDAwZjYsIDB4MjA3OSwKLQkweGI2NTIsIDB4NzgwNCwgMHgwMGZlLCAweGQwYWMsIDB4MTkwNCwgMHhhN2ZiLCAweDIwMDEsIDB4MDAwMCwKLQkweDA4MGMsIDB4NGY1ZCwgMHg2MDE4LCAweGEwODAsIDB4MDAwNCwgMHgyMDA0LCAweGEwODYsIDB4MDBmZiwKLQkweDExNDAsIDB4MDBmNiwgMHgyMDc5LCAweGI2MDAsIDB4Nzg5OCwgMHg4MDAwLCAweDc4OWEsIDB4MDBmZSwKLQkweDAwZTAsIDB4MDBjNiwgMHg2MDE4LCAweDIwNjAsIDB4NjAwMCwgMHhkMGY0LCAweDExNDAsIDB4NjAxMCwKLQkweGEwMDUsIDB4MDEyOCwgMHgwMGNlLCAweDA4MGMsIDB4M2Y4NSwgMHgwODA0LCAweGE3ZmIsIDB4MDBjZSwKLQkweDIwMDEsIDB4YjYwMCwgMHgyMDA0LCAweGEwODYsIDB4MDAwMiwgMHgxMTM4LCAweDAwZjYsIDB4MjA3OSwKLQkweGI2MDAsIDB4Nzg5OCwgMHg4MDAwLCAweDc4OWEsIDB4MDBmZSwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywKLQkweDRmNmYsIDB4MDgwYywgMHg3MTAyLCAweDYwMWYsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MDgwYywgMHg2ZDQ1LCAweDA4MGMsIDB4NzFlNSwgMHgwMGM2LCAweDYxMTgsIDB4MjE2MCwKLQkweDIwMDksIDB4MDAwMSwgMHgwODBjLCAweDZhMWEsIDB4MDBjZSwgMHgwNGQ4LCAweDY2MTgsIDB4MDBkNiwKLQkweDI2NjgsIDB4NmUwNCwgMHgwMGRlLCAweGE2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweGE2ODYsIDB4MDAwNiwKLQkweDA1NTAsIDB4YTY4NiwgMHgwMDA0LCAweDA1MzgsIDB4MjAwMSwgMHgwMDA0LCAweDA0MTAsIDB4MjAwMSwKLQkweGI2MDAsIDB4MjAwNCwgMHhhMDg2LCAweDAwMDMsIDB4MTExMCwgMHgwODBjLCAweDNmODUsIDB4MjAwMSwKLQkweDAwMDYsIDB4MDRhMSwgMHg2NjE4LCAweDAwZDYsIDB4MjY2OCwgMHg2ZTA0LCAweDAwZGUsIDB4YTZiNCwKLQkweGZmMDAsIDB4ODYzNywgMHhhNjg2LCAweDAwMDYsIDB4MDE3MCwgMHgyMDAxLCAweDAwMDYsIDB4MDA0OCwKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDMwLCAweDIwMDEsIDB4MDAwNiwgMHgwNDAxLCAweDAwMjAsIDB4MDAxOCwKLQkweDAwMTAsIDB4MDgwYywgMHg0ZjljLCAweDA4MGMsIDB4NzEwMiwgMHgwODBjLCAweDg2YTQsIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHgyNjAwLCAweDAwMDIsIDB4YTgwZCwgMHhhODBkLCAweGE4MGQsIDB4YTgwZCwKLQkweGE4MGQsIDB4YTgwZiwgMHhhODBkLCAweGE4MGQsIDB4YTgwZCwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg4NmE0LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDAwMTYsIDB4MDBkNiwKLQkweDYxMTgsIDB4MjE2OCwgMHg2OTAwLCAweGQxODQsIDB4MDE0MCwgMHgwODBjLCAweDRmNmYsIDB4MjAwMSwKLQkweDAwMDAsIDB4MDgwYywgMHg0ZjVkLCAweDA4MGMsIDB4MmNmNywgMHgwMGRlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwZDYsIDB4NjYxOCwgMHgyNjY4LCAweDY4MDQsIDB4YTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4MDBkZSwKLQkweGEwYjIsIDB4MDAwYywgMHgxYTBjLCAweDE1MWEsIDB4YTFiNiwgMHgwMDE1LCAweDExMTAsIDB4MDAzYiwKLQkweDAwMjgsIDB4YTFiNiwgMHgwMDE2LCAweDE5MGMsIDB4MTUxYSwgMHgwMDZiLCAweDAwMDUsIDB4OGQ2YiwKLQkweDhkNmIsIDB4OGQ2YiwgMHg4ZDZiLCAweDhkNmIsIDB4OGQ2YiwgMHhhODk4LCAweGE4NTcsIDB4OGQ2YiwKLQkweDhkNmIsIDB4OGQ2YiwgMHg4ZDZiLCAweDhkNmIsIDB4OGQ2YiwgMHg4ZDZiLCAweDhkNmIsIDB4OGQ2YiwKLQkweDhkNmIsIDB4YTg5OCwgMHhhODlmLCAweDhkNmIsIDB4OGQ2YiwgMHg4ZDZiLCAweDhkNmIsIDB4MDBmNiwKLQkweDIwNzksIDB4YjY1MiwgMHg3ODA0LCAweGQwYWMsIDB4MTFlMCwgMHg2MDE4LCAweGEwN2QsIDB4MDFjOCwKLQkweDc4MDAsIDB4ZDBmNCwgMHgxMTE4LCAweDc4MTAsIDB4YTAwNSwgMHgxMTk4LCAweDIwMDEsIDB4MDAwMCwKLQkweDA4MGMsIDB4NGY1ZCwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg0ZjZmLCAweDYwMWYsIDB4MDAwMSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MDgwYywgMHg2ZDQ1LCAweDA4MGMsIDB4NzFlNSwKLQkweDAwZTgsIDB4MjAxMSwgMHhiYzgzLCAweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsIDB4Mjg1MiwKLQkweDExYTgsIDB4MDBjNiwgMHgwODBjLCAweDUwMWIsIDB4MDEyMCwgMHgwMGNlLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwNjgsIDB4NjAxMCwgMHgwMDA2LCAweDYwMTQsIDB4MDAwNiwgMHgwODBjLCAweDRjN2UsIDB4MDAwZSwKLQkweDYwMTYsIDB4MDAwZSwgMHg2MDEyLCAweDAwY2UsIDB4MDgwYywgMHg4NmE0LCAweDAwZmUsIDB4MDAwNSwKLQkweDY2MDQsIDB4YTZiNiwgMHgwMDFlLCAweDExMTAsIDB4MDgwYywgMHg4NmE0LCAweDAwMDUsIDB4MDgwYywKLQkweDkwMjEsIDB4MTEzOCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDA4MGMsIDB4NmQ0NSwKLQkweDAwMTAsIDB4MDgwYywgMHg4NmE0LCAweDAwMDUsIDB4NjAwNCwgMHhhMDhhLCAweDAwODAsIDB4MWEwYywKLQkweDE1MWEsIDB4MDgwYywgMHg3MTAyLCAweDA4MGMsIDB4OWVkOSwgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwKLQkweGExODIsIDB4MDA0MCwgMHgwMDAyLCAweGE4Y2UsIDB4YThjZSwgMHhhOGNlLCAweGE4Y2UsIDB4YThkMCwKLQkweGE4Y2UsIDB4YThjZSwgMHhhOGNlLCAweGE4Y2UsIDB4YThjZSwgMHhhOGNlLCAweGE4Y2UsIDB4YThjZSwKLQkweGE4Y2UsIDB4YThjZSwgMHhhOGNlLCAweGE4Y2UsIDB4YThjZSwgMHhhOGNlLCAweDA4MGMsIDB4MTUxYSwKLQkweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDAxNTYsIDB4MDA0NiwgMHgwMDI2LCAweDYyMTgsIDB4YTI4MCwKLQkweDAwMmIsIDB4MjAwNCwgMHhhMDA1LCAweDAxMjAsIDB4MjAyMSwgMHgwMDAwLCAweDA4MGMsIDB4YjNkOCwKLQkweDYxMDYsIDB4MjA3MSwgMHhiYzgwLCAweDc0NDQsIDB4YTRhNCwgMHhmZjAwLCAweDA5MDQsIDB4YTkzNCwKLQkweGE0ODYsIDB4MjAwMCwgMHgxMTMwLCAweDIwMDksIDB4MDAwMSwgMHgyMDExLCAweDAyMDAsIDB4MDgwYywKLQkweDZiOGMsIDB4MDgwYywgMHgxNWZkLCAweDA5MGMsIDB4MTUxYSwgMHg2MDAzLCAweDAwMDcsIDB4MmQwMCwKLQkweDY4MzcsIDB4MDEwZCwgMHg2ODAzLCAweDAwMDAsIDB4NjgzYiwgMHgwMDAwLCAweDZjNWEsIDB4MmMwMCwKLQkweDY4NWUsIDB4NjAwOCwgMHg2OGIyLCAweDYwMTgsIDB4MjA3OCwgMHg3OGEwLCAweDgwMDcsIDB4NzEzMCwKLQkweDY5NGEsIDB4MDAxNiwgMHhhMDg0LCAweGZmMDAsIDB4Njg0NiwgMHg2ODRmLCAweDAwMDAsIDB4Njg1MywKLQkweDAwMDAsIDB4Njg1NywgMHgwMDM2LCAweDA4MGMsIDB4NTQ3YSwgMHgwMDFlLCAweGE0ODYsIDB4MjAwMCwKLQkweDExMzAsIDB4MjAxOSwgMHgwMDE3LCAweDA4MGMsIDB4YjEyMSwgMHgwODA0LCAweGE5OTEsIDB4YTQ4NiwKLQkweDA0MDAsIDB4MTEzMCwgMHgyMDE5LCAweDAwMDIsIDB4MDgwYywgMHhiMGQzLCAweDA4MDQsIDB4YTk5MSwKLQkweGE0ODYsIDB4MDIwMCwgMHgxMTEwLCAweDA4MGMsIDB4YjBiOCwgMHhhNDg2LCAweDEwMDAsIDB4MTExMCwKLQkweDA4MGMsIDB4YjEwNiwgMHgwODA0LCAweGE5OTEsIDB4MjA2OSwgMHhiOTc1LCAweDZhMDAsIDB4ZDI4NCwKLQkweDA5MDQsIDB4YTlmOCwgMHhhMjg0LCAweDAzMDAsIDB4MTkwNCwgMHhhOWYxLCAweDY4MDQsIDB4YTAwNSwKLQkweDA5MDQsIDB4YTlkOSwgMHgyZDc4LCAweDYwMDMsIDB4MDAwNywgMHgwODBjLCAweDE1ZTQsIDB4MDkwNCwKLQkweGE5OTgsIDB4NzgwMCwgMHhkMDhjLCAweDExMTgsIDB4NzgwNCwgMHg4MDAxLCAweDc4MDYsIDB4NjAxMywKLQkweDAwMDAsIDB4NjgwMywgMHgwMDAwLCAweDY4MzcsIDB4MDExNiwgMHg2ODNiLCAweDAwMDAsIDB4NjAwOCwKLQkweDY4YjIsIDB4MmMwMCwgMHg2ODRhLCAweDYwMTgsIDB4MjA3OCwgMHg3OGEwLCAweDgwMDcsIDB4NzEzMCwKLQkweDY5ODYsIDB4Njg0NiwgMHg3OTI4LCAweDY5OGEsIDB4NzkyYywgMHg2OThlLCAweDc5MzAsIDB4Njk5MiwKLQkweDc5MzQsIDB4Njk5NiwgMHg2ODUzLCAweDAwM2QsIDB4NzI0NCwgMHhhMjk0LCAweDAwMDMsIDB4YTI4NiwKLQkweDAwMDIsIDB4MTExOCwgMHg2ODRmLCAweDAwNDAsIDB4MDA0MCwgMHhhMjg2LCAweDAwMDEsIDB4MTExOCwKLQkweDY4NGYsIDB4MDA4MCwgMHgwMDEwLCAweDY4NGYsIDB4MDAwMCwgMHgyMGE5LCAweDAwMGEsIDB4MjAwMSwKLQkweGJjOTAsIDB4YWQ5MCwgMHgwMDE1LCAweDIwMGMsIDB4ODEwZiwgMHgyMTEyLCAweDgwMDAsIDB4ODIxMCwKLQkweDFmMDQsIDB4YTk4MywgMHgyMDBjLCAweDY5ODIsIDB4ODAwMCwgMHgyMDBjLCAweDY5N2UsIDB4MDgwYywKLQkweDU0N2EsIDB4MDAyZSwgMHgwMDRlLCAweDAxNWUsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDAwNSwKLQkweDIwMDEsIDB4YjYwZSwgMHgyMDA0LCAweGQwODQsIDB4MDEyMCwgMHgwODBjLCAweDE1ZmQsIDB4MTkwNCwKLQkweGE5NDksIDB4NjAxMywgMHgwMTAwLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNDEsIDB4MDgwYywKLQkweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDBjMjgsIDB4MjA2OSwgMHhiYzkyLCAweDJkMDQsIDB4YTA4NCwKLQkweGZmMDAsIDB4YTA4NiwgMHgxMjAwLCAweDExYTgsIDB4MjA2OSwgMHhiYzgwLCAweDY4NmMsIDB4YTA4NCwKLQkweDAwZmYsIDB4MDAxNiwgMHg2MTEwLCAweGExOGMsIDB4MDcwMCwgMHhhMTBkLCAweDYxMTIsIDB4MDAxZSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNDMsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwKLQkweDA4NDAsIDB4Njg2OCwgMHg2MDJhLCAweDY4NmMsIDB4NjAyZSwgMHg2MDEzLCAweDAyMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDQxLCAweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDgwNCwKLQkweGE5OTEsIDB4MjAwMSwgMHhiNjBkLCAweDIwMDQsIDB4ZDBlYywgMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwKLQkweDA4MGMsIDB4M2YxMywgMHg2MDEzLCAweDAzMDAsIDB4MDAxMCwgMHg2MDEzLCAweDAxMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDQxLCAweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDgwNCwKLQkweGE5OTEsIDB4NjAxMywgMHgwNTAwLCAweDBjOTgsIDB4NjAxMywgMHgwNjAwLCAweDA4MDQsIDB4YTlhYywKLQkweDYwMTMsIDB4MDIwMCwgMHgwODA0LCAweGE5YWMsIDB4YTE4NiwgMHgwMDEzLCAweDExNzAsIDB4NjAwNCwKLQkweGEwOGEsIDB4MDA0MCwgMHgwYTBjLCAweDE1MWEsIDB4YTA4YSwgMHgwMDUzLCAweDFhMGMsIDB4MTUxYSwKLQkweGEwODIsIDB4MDA0MCwgMHgyMDA4LCAweDA4MDQsIDB4YWE4NiwgMHhhMTg2LCAweDAwNTEsIDB4MDEzOCwKLQkweGExODYsIDB4MDA0NywgMHgxMWQ4LCAweDYwMDQsIDB4YTA4NiwgMHgwMDQxLCAweDA1MTgsIDB4MjAwMSwKLQkweDAxMDksIDB4MjAwNCwgMHhkMDg0LCAweDAxZjAsIDB4MDEyNiwgMHgyMDkxLCAweDI4MDAsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDAyNiwgMHgwODBjLCAweDZiZTYsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDEyZSwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAyLCAweDExNzAsIDB4MDgwNCwgMHhhYWM5LCAweGExODYsIDB4MDAyNywKLQkweDAxMjAsIDB4YTE4NiwgMHgwMDE0LCAweDE5MGMsIDB4MTUxYSwgMHg2MDA0LCAweGEwODIsIDB4MDA0MCwKLQkweDIwMDgsIDB4MDAxYSwgMHgwODBjLCAweDg2ZWYsIDB4MDAwNSwgMHhhYTUwLCAweGFhNTIsIDB4YWE1MiwKLQkweGFhNzYsIDB4YWE1MCwgMHhhYTUwLCAweGFhNTAsIDB4YWE1MCwgMHhhYTUwLCAweGFhNTAsIDB4YWE1MCwKLQkweGFhNTAsIDB4YWE1MCwgMHhhYTUwLCAweGFhNTAsIDB4YWE1MCwgMHhhYTUwLCAweGFhNTAsIDB4YWE1MCwKLQkweDA4MGMsIDB4MTUxYSwgMHgwODBjLCAweDcxMDIsIDB4MDgwYywgMHg3MWU1LCAweDAwMzYsIDB4MDBkNiwKLQkweDYwMTAsIDB4YTA2ZCwgMHgwMWMwLCAweGFkODQsIDB4ZjAwMCwgMHgwMWE4LCAweDYwMDMsIDB4MDAwMiwKLQkweDYwMTgsIDB4MjAwNCwgMHhkMGJjLCAweDExNzgsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4YjE1NSwKLQkweDYwMTMsIDB4MDAwMCwgMHg2MDE0LCAweGEwMDUsIDB4MTEyMCwgMHgyMDAxLCAweGI4YjcsIDB4MjAwNCwKLQkweDYwMTYsIDB4NjAwMywgMHgwMDA3LCAweDAwZGUsIDB4MDAzZSwgMHgwMDA1LCAweDAwZDYsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg3MWU1LCAweDA4MGMsIDB4OWQxNiwgMHgwMTIwLCAweDYwMTAsIDB4MjA2OCwKLQkweDA4MGMsIDB4MTYxNCwgMHgwODBjLCAweDllZDksIDB4MDBkZSwgMHgwMDA1LCAweDAwMDIsIDB4YWE5YSwKLQkweGFhYjcsIDB4YWFhMywgMHhhYWMzLCAweGFhOWEsIDB4YWE5YSwgMHhhYTlhLCAweGFhOWEsIDB4YWE5YSwKLQkweGFhOWEsIDB4YWE5YSwgMHhhYTlhLCAweGFhOWEsIDB4YWE5YSwgMHhhYTlhLCAweGFhOWEsIDB4YWE5YSwKLQkweGFhOWEsIDB4YWE5YSwgMHgwODBjLCAweDE1MWEsIDB4NjAxMCwgMHhhMDg4LCAweDAwMTMsIDB4MjEwNCwKLQkweGEwODUsIDB4MDQwMCwgMHgyMDBhLCAweDA4MGMsIDB4NzEwMiwgMHg2MDEwLCAweGEwODAsIDB4MDAxMywKLQkweDIwMDQsIDB4ZDBiNCwgMHgwMTM4LCAweDYwMDMsIDB4MDAwNywgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywKLQkweDg2ZDMsIDB4MDAxMCwgMHg2MDAzLCAweDAwMDIsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHhiMzkzLCAweDExMjAsIDB4MDgwYywgMHg2YjYxLCAweDA4MGMsIDB4ODZhNCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDA4MGMsIDB4NzEwMiwgMHgyMDA5LCAweDAwNDEsIDB4MDgwNCwKLQkweGFjMTIsIDB4YTE4MiwgMHgwMDQwLCAweDAwMDIsIDB4YWFkZiwgMHhhYWUxLCAweGFhZGYsIDB4YWFkZiwKLQkweGFhZGYsIDB4YWFkZiwgMHhhYWRmLCAweGFhZTIsIDB4YWFkZiwgMHhhYWRmLCAweGFhZGYsIDB4YWFkZiwKLQkweGFhZGYsIDB4YWFkZiwgMHhhYWRmLCAweGFhZGYsIDB4YWFkZiwgMHhhYWVkLCAweGFhZGYsIDB4MDgwYywKLQkweDE1MWEsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDQsIDB4NjExMCwgMHgyMGUxLCAweDAwMDUsIDB4M2QxOCwKLQkweDNlMjAsIDB4MmMxMCwgMHgwODBjLCAweDE4NjMsIDB4MDAwNSwgMHgwMGQ2LCAweDA4MGMsIDB4NmI2MSwKLQkweDAwZGUsIDB4MDgwYywgMHhiM2Y2LCAweDA4MGMsIDB4ODZhNCwgMHgwMDA1LCAweGExODIsIDB4MDA0MCwKLQkweDAwMDIsIDB4YWIwYywgMHhhYjBjLCAweGFiMGMsIDB4YWIwYywgMHhhYjBjLCAweGFiMGMsIDB4YWIwYywKLQkweGFiMGUsIDB4YWIwYywgMHhhYjExLCAweGFiNGEsIDB4YWIwYywgMHhhYjBjLCAweGFiMGMsIDB4YWIwYywKLQkweGFiNGEsIDB4YWIwYywgMHhhYjBjLCAweGFiMGMsIDB4MDgwYywgMHgxNTFhLCAweDA4MGMsIDB4ODZlZiwKLQkweDAwMDUsIDB4MjAwMSwgMHhiNjcyLCAweDIwMDQsIDB4ZDBlNCwgMHgwMTU4LCAweDIwMDEsIDB4MDEwMCwKLQkweDIwMDQsIDB4YTA4MiwgMHgwMDA1LCAweDAyMjgsIDB4MjAwMSwgMHgwMTFmLCAweDIwMDQsIDB4NjAzNiwKLQkweDAwMTAsIDB4NjAzNywgMHgwMDAwLCAweDA4MGMsIDB4NzE5OCwgMHgwODBjLCAweDcyYTIsIDB4NjAxMCwKLQkweDAwZDYsIDB4MjA2OCwgMHg2ODRjLCAweGQwZmMsIDB4MDE1MCwgMHhhMDhjLCAweDAwMDMsIDB4YTE4ZSwKLQkweDAwMDIsIDB4MDE2OCwgMHgyMDA5LCAweDAwNDEsIDB4MDBkZSwgMHgwODA0LCAweGFjMTIsIDB4NjAwMywKLQkweDAwMDcsIDB4NjAxNywgMHgwMDAwLCAweDA4MGMsIDB4NmI2MSwgMHgwMGRlLCAweDAwMDUsIDB4MDgwYywKLQkweGIzOTMsIDB4MDExMCwgMHgwMGRlLCAweDAwMDUsIDB4MDgwYywgMHg2YjYxLCAweDA4MGMsIDB4ODZhNCwKLQkweDAwZGUsIDB4MGNhMCwgMHgwMDM2LCAweDA4MGMsIDB4NzE5OCwgMHgwODBjLCAweDcyYTIsIDB4NjAxMCwKLQkweDAwZDYsIDB4MjA2OCwgMHg2MDE4LCAweDIwMDQsIDB4ZDBiYywgMHgwMTg4LCAweDY4NGMsIDB4YTA4NCwKLQkweDAwMDMsIDB4YTA4NiwgMHgwMDAyLCAweDAxNDAsIDB4Njg3YywgMHg2MzJjLCAweGEzMWEsIDB4NjMyZSwKLQkweDY4ODAsIDB4NjMyOCwgMHhhMzFiLCAweDYzMmEsIDB4NjAwMywgMHgwMDAyLCAweDAwODAsIDB4MjAxOSwKLQkweDAwMDQsIDB4MDgwYywgMHhiMTU1LCAweDYwMTQsIDB4YTAwNSwgMHgxMTI4LCAweDIwMDEsIDB4YjhiNywKLQkweDIwMDQsIDB4ODAwMywgMHg2MDE2LCAweDYwMTMsIDB4MDAwMCwgMHg2MDAzLCAweDAwMDcsIDB4MDBkZSwKLQkweDAwM2UsIDB4MDAwNSwgMHhhMTg2LCAweDAwMTMsIDB4MTE1MCwgMHg2MDA0LCAweGEwODYsIDB4MDA0MiwKLQkweDE5MGMsIDB4MTUxYSwgMHgwODBjLCAweDcxMDIsIDB4MDgwYywgMHg3MWU1LCAweDAwMDUsIDB4YTE4NiwKLQkweDAwMjcsIDB4MDExOCwgMHhhMTg2LCAweDAwMTQsIDB4MTE4MCwgMHg2MDA0LCAweGEwODYsIDB4MDA0MiwKLQkweDE5MGMsIDB4MTUxYSwgMHgyMDAxLCAweDAwMDcsIDB4MDgwYywgMHg0ZjljLCAweDA4MGMsIDB4NzEwMiwKLQkweDA4MGMsIDB4OWVkOSwgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwgMHhhMTgyLCAweDAwNDAsIDB4MDAwMiwKLQkweGFiYjMsIDB4YWJiMywgMHhhYmIzLCAweGFiYjMsIDB4YWJiMywgMHhhYmIzLCAweGFiYjMsIDB4YWJiNSwKLQkweGFiYzEsIDB4YWJiMywgMHhhYmIzLCAweGFiYjMsIDB4YWJiMywgMHhhYmIzLCAweGFiYjMsIDB4YWJiMywKLQkweGFiYjMsIDB4YWJiMywgMHhhYmIzLCAweDA4MGMsIDB4MTUxYSwgMHgwMDM2LCAweDAwNDYsIDB4MjBlMSwKLQkweDAwMDUsIDB4M2QxOCwgMHgzZTIwLCAweDJjMTAsIDB4MDgwYywgMHgxODYzLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwMDUsIDB4NjAxMCwgMHgwMGQ2LCAweDIwNjgsIDB4NjgxMCwgMHg2YTE0LCAweDAwMDYsIDB4MDA0NiwKLQkweDAwNTYsIDB4NmM3YywgMHhhNDIyLCAweDZkODAsIDB4MjIwMCwgMHhhNTJiLCAweDYwMmMsIDB4YTQyMCwKLQkweDY0MmUsIDB4NjAyOCwgMHhhNTI5LCAweDY1MmEsIDB4MDA1ZSwgMHgwMDRlLCAweDAwMGUsIDB4YTIwZCwKLQkweDExNzgsIDB4Njg0YywgMHhkMGZjLCAweDAxMjAsIDB4MjAwOSwgMHgwMDQxLCAweDAwZGUsIDB4MDQ5MCwKLQkweDYwMDMsIDB4MDAwNywgMHg2MDE3LCAweDAwMDAsIDB4MDgwYywgMHg2YjYxLCAweDAwZGUsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4NTM3NywgMHgwMGZlLCAweDAwMGUsIDB4MDEyMCwKLQkweDYwMDMsIDB4MDAwMiwgMHgwMGRlLCAweDAwMDUsIDB4MjAwOSwgMHhiNjBkLCAweDIxMGMsIDB4ZDE5YywKLQkweDAxMTgsIDB4NjAwMywgMHgwMDA3LCAweDAwMTAsIDB4NjAwMywgMHgwMDA2LCAweDAwMjEsIDB4MDgwYywKLQkweDZiNjMsIDB4MDBkZSwgMHgwMDA1LCAweGQyZmMsIDB4MDE0MCwgMHg4MDAyLCAweDgwMDAsIDB4ODIxMiwKLQkweGEyOTEsIDB4MDAwMCwgMHgyMDA5LCAweDAwMDksIDB4MDAxMCwgMHgyMDA5LCAweDAwMTUsIDB4NmE2YSwKLQkweDY4NjYsIDB4MDAwNSwgMHhhMTgyLCAweDAwNDAsIDB4MDIwOCwgMHgwMDYyLCAweGExODYsIDB4MDAxMywKLQkweDAxMjAsIDB4YTE4NiwgMHgwMDE0LCAweDE5MGMsIDB4MTUxYSwgMHg2MDIwLCAweGQwZGMsIDB4MDkwYywKLQkweDE1MWEsIDB4MDAwNSwgMHhhYzM1LCAweGFjM2MsIDB4YWM0OCwgMHhhYzU0LCAweGFjMzUsIDB4YWMzNSwKLQkweGFjMzUsIDB4YWM2MywgMHhhYzM1LCAweGFjMzcsIDB4YWMzNywgMHhhYzM1LCAweGFjMzUsIDB4YWMzNSwKLQkweGFjMzUsIDB4YWMzNywgMHhhYzM1LCAweGFjMzcsIDB4YWMzNSwgMHgwODBjLCAweDE1MWEsIDB4NjAyMCwKLQkweGQwZGMsIDB4MDkwYywgMHgxNTFhLCAweDAwMDUsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MDgwYywKLQkweDZjZmYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg3MWU1LCAweDAxMmUsIDB4MDAwNSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDA4MGMsIDB4NmNmZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NzFlNSwgMHgwMTJlLCAweDAwMDUsIDB4NjAwMywgMHgwMDAzLCAweDYxMDYsIDB4MmMxMCwKLQkweDA4MGMsIDB4MWZjNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDZkNjIsIDB4MDgwYywKLQkweDcyYTIsIDB4MDEyZSwgMHgwMDA1LCAweGEwMTYsIDB4MDgwYywgMHgxODYzLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMDM2LCAweDAwZDYsIDB4YTE4MiwgMHgwMDQwLCAweDAwMjMsIDB4MDBkZSwKLQkweDAwM2UsIDB4MDEyZSwgMHgwMDA1LCAweGFjODMsIDB4YWM4NSwgMHhhYzk3LCAweGFjYjIsIDB4YWM4MywKLQkweGFjODMsIDB4YWM4MywgMHhhY2M3LCAweGFjODMsIDB4YWM4MywgMHhhYzgzLCAweGFjODMsIDB4YWM4MywKLQkweGFjODMsIDB4YWM4MywgMHhhYzgzLCAweDA4MGMsIDB4MTUxYSwgMHg2MDEwLCAweDIwNjgsIDB4Njg0YywKLQkweGQwZmMsIDB4MDFmOCwgMHhhMDljLCAweDAwMDMsIDB4YTM5ZSwgMHgwMDAzLCAweDAxZDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjEwNiwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDA0OTgsIDB4NjAxMCwKLQkweDIwNjgsIDB4Njg0YywgMHhkMGZjLCAweDAxNjgsIDB4YTA5YywgMHgwMDAzLCAweGEzOWUsIDB4MDAwMywKLQkweDAxNDAsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MDgwYywgMHg2Y2ZmLCAweDA4MGMsIDB4NzFlNSwKLQkweDA0MDgsIDB4NjAxMywgMHgwMDAwLCAweDYwMTcsIDB4MDAwMCwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywKLQkweGIxNTUsIDB4MDBjMCwgMHg2MDEwLCAweDIwNjgsIDB4Njg0YywgMHhkMGZjLCAweDBkOTAsIDB4YTA5YywKLQkweDAwMDMsIDB4YTM5ZSwgMHgwMDAzLCAweDBkNjgsIDB4NjAwMywgMHgwMDAzLCAweDYxMDYsIDB4MmMxMCwKLQkweDA4MGMsIDB4MWZjNSwgMHgwODBjLCAweDZkNjIsIDB4MDgwYywgMHg3MmEyLCAweDAwMTgsIDB4YTAxNiwKLQkweDA4MGMsIDB4MTg2MywgMHgwMDA1LCAweDA4MGMsIDB4NzEwMiwgMHg2MTEwLCAweDgxZmYsIDB4MDE1OCwKLQkweDAwZDYsIDB4MjE2OCwgMHgwODBjLCAweGI0M2MsIDB4MDAzNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywKLQkweGIxNTUsIDB4MDAzZSwgMHgwMGRlLCAweDA4MGMsIDB4OWVkOSwgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwKLQkweDA4MGMsIDB4NzE5OCwgMHg2MTEwLCAweDgxZmYsIDB4MDE1OCwgMHgwMGQ2LCAweDIxNjgsIDB4MDgwYywKLQkweGI0M2MsIDB4MDAzNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywgMHhiMTU1LCAweDAwM2UsIDB4MDBkZSwKLQkweDA4MGMsIDB4OWVkOSwgMHgwODBjLCAweDcyYTIsIDB4MDAwNSwgMHhhMTgyLCAweDAwODUsIDB4MDAwMiwKLQkweGFkMDEsIDB4YWNmZiwgMHhhY2ZmLCAweGFkMGQsIDB4YWNmZiwgMHhhY2ZmLCAweGFjZmYsIDB4MDgwYywKLQkweDE1MWEsIDB4NjAwMywgMHgwMDBiLCAweDYxMDYsIDB4MDgwYywgMHg2Y2ZmLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg3MWU1LCAweDAxMmUsIDB4MDAwNSwgMHgwMDI2LCAweDAwZTYsIDB4MDgwYywKLQkweGIzOGMsIDB4MDExOCwgMHgwODBjLCAweDg2YTQsIDB4MDBkOCwgMHgyMDcxLCAweGJjODAsIDB4NzIyNCwKLQkweDYyMTIsIDB4NzIyMCwgMHgwODBjLCAweGIwMDMsIDB4MDExOCwgMHg2MDA3LCAweDAwODYsIDB4MDA0MCwKLQkweDYwMDcsIDB4MDA4NywgMHg3MjI0LCAweGEyOTYsIDB4ZmZmZiwgMHgxMTEwLCAweDYwMDcsIDB4MDA4NiwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDA4MGMsIDB4NzJhMiwKLQkweDAwZWUsIDB4MDAyZSwgMHgwMDA1LCAweGExODYsIDB4MDAxMywgMHgxMTYwLCAweDYwMDQsIDB4YTA4YSwKLQkweDAwODUsIDB4MGEwYywgMHgxNTFhLCAweGEwOGEsIDB4MDA4YywgMHgxYTBjLCAweDE1MWEsIDB4YTA4MiwKLQkweDAwODUsIDB4MDBhMiwgMHhhMTg2LCAweDAwMjcsIDB4MDEzMCwgMHhhMTg2LCAweDAwMTQsIDB4MDExOCwKLQkweDA4MGMsIDB4ODZlZiwgMHgwMDUwLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDRmOWMsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg5ZWQ5LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweGFkNWQsIDB4YWQ1ZiwKLQkweGFkNWYsIDB4YWQ1ZCwgMHhhZDVkLCAweGFkNWQsIDB4YWQ1ZCwgMHgwODBjLCAweDE1MWEsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg5ZWQ5LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweGExODIsIDB4MDA4NSwKLQkweDBhMGMsIDB4MTUxYSwgMHhhMTgyLCAweDAwOGMsIDB4MWEwYywgMHgxNTFhLCAweGExODIsIDB4MDA4NSwKLQkweDAwMDIsIDB4YWQ3OCwgMHhhZDc4LCAweGFkNzgsIDB4YWQ3YSwgMHhhZDc4LCAweGFkNzgsIDB4YWQ3OCwKLQkweDA4MGMsIDB4MTUxYSwgMHgwMDA1LCAweGExODYsIDB4MDAxMywgMHgwMTQ4LCAweGExODYsIDB4MDAxNCwKLQkweDAxMzAsIDB4YTE4NiwgMHgwMDI3LCAweDAxMTgsIDB4MDgwYywgMHg4NmVmLCAweDAwMzAsIDB4MDgwYywKLQkweDcxMDIsIDB4MDgwYywgMHg5ZWQ5LCAweDA4MGMsIDB4NzFlNSwgMHgwMDA1LCAweDAwMzYsIDB4MDgwYywKLQkweGIzZjYsIDB4NjAzZiwgMHgwMDAwLCAweDIwMTksIDB4MDAwYiwgMHgwMDMxLCAweDYwMWYsIDB4MDAwNiwKLQkweDYwMDMsIDB4MDAwNywgMHgwMDNlLCAweDAwMDUsIDB4MDEyNiwgMHgwMDM2LCAweDIwOTEsIDB4ODAwMCwKLQkweDAwODYsIDB4MmM0MCwgMHgwMDk2LCAweDIwNDksIDB4MDAwMCwgMHgwODBjLCAweDgxYjcsIDB4MDA5ZSwKLQkweDAwOGUsIDB4MTU3OCwgMHgwMDc2LCAweDJjMzgsIDB4MDgwYywgMHg4MjVkLCAweDAwN2UsIDB4MTU0OCwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDAwLCAweDA1MjgsIDB4NjAxYywgMHhhMDg2LCAweDAwMDcsIDB4MDUwOCwKLQkweDAwZDYsIDB4NjAwMCwgMHhhMDg2LCAweDAwMDQsIDB4MTE1MCwgMHgwODBjLCAweGIzZjYsIDB4NjAxZiwKLQkweDAwMDcsIDB4MjAwMSwgMHhiOGI2LCAweDIwMDQsIDB4NjAxNiwgMHgwODBjLCAweDE5NTIsIDB4NjAxMCwKLQkweDIwNjgsIDB4MDgwYywgMHg5ZDE2LCAweDAxMTAsIDB4MDgwYywgMHhiMTU1LCAweDAwZGUsIDB4NjAxMywKLQkweDAwMDAsIDB4MDgwYywgMHhiM2Y2LCAweDYwMWYsIDB4MDAwNywgMHgyMDAxLCAweGI4YjYsIDB4MjAwNCwKLQkweDYwMTYsIDB4MDAzZSwgMHgwMTJlLCAweDAwMDUsIDB4MDBmNiwgMHgwMGM2LCAweDAwMzYsIDB4MDE1NiwKLQkweDIwNzksIDB4YmM4MCwgMHg3OTM4LCAweDc4M2MsIDB4MDgwYywgMHgyODUyLCAweDE1YjAsIDB4MDAxNiwKLQkweDAwYzYsIDB4MDgwYywgMHg1MDFiLCAweDE1NzgsIDB4MDAxZSwgMHgwMDJlLCAweDAwMjYsIDB4MDAxNiwKLQkweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDgzMjAsIDB4MDgwYywgMHg2ZTY3LCAweDAwNzYsIDB4MjAzOSwKLQkweDAwMDAsIDB4MDgwYywgMHg2ZDc0LCAweDAwN2UsIDB4MDAxZSwgMHgwMDc2LCAweDIwMzksIDB4MDAwMCwKLQkweDA4MGMsIDB4YWYzZSwgMHgwMDdlLCAweDA4MGMsIDB4NTIxYywgMHgwMDI2LCAweDYyMDQsIDB4YTI5NCwKLQkweGZmMDAsIDB4ODIxNywgMHhhMjg2LCAweDAwMDYsIDB4MDExOCwgMHhhMjg2LCAweDAwMDQsIDB4MTExOCwKLQkweDYyYTAsIDB4MDgwYywgMHgyZDhhLCAweDAwMmUsIDB4MDAxZSwgMHgwODBjLCAweDRjN2UsIDB4NjYxMiwKLQkweDY1MTYsIDB4YTAwNiwgMHgwMDEwLCAweDAwY2UsIDB4MDAxZSwgMHgwMTVlLCAweDAwM2UsIDB4MDBjZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMDE2LCAweDIwMDksIDB4YjYyMSwKLQkweDIxMDQsIDB4YTA4NiwgMHgwMDc0LCAweDE5MDQsIDB4YWU3NywgMHgyMDY5LCAweGJjOGUsIDB4NjkwYywKLQkweGExODIsIDB4MDEwMCwgMHgwNmMwLCAweDY5MDgsIDB4YTE4NCwgMHg4MDAwLCAweDA1ZTgsIDB4MjAwMSwKLQkweGI4OWUsIDB4MjAwNCwgMHhhMDA1LCAweDExNjAsIDB4NjAxOCwgMHgyMDcwLCAweDcwMTAsIDB4YTA4NCwKLQkweDAwZmYsIDB4MDExOCwgMHg3MDAwLCAweGQwZjQsIDB4MDExOCwgMHhhMTg0LCAweDA4MDAsIDB4MDU2MCwKLQkweDY5MTAsIDB4YTE4YSwgMHgwMDAxLCAweDA2MTAsIDB4NjkxNCwgMHgyMDY5LCAweGJjYWUsIDB4NjkwNCwKLQkweDgxZmYsIDB4MTE5OCwgMHg2OTBjLCAweGExODIsIDB4MDEwMCwgMHgwMmE4LCAweDY5MDgsIDB4ODFmZiwKLQkweDExNzgsIDB4NjkxMCwgMHhhMThhLCAweDAwMDEsIDB4MDI4OCwgMHg2OTE4LCAweGExOGEsIDB4MDAwMSwKLQkweDAyOTgsIDB4MDBkMCwgMHg2MDEzLCAweDAxMDAsIDB4MDBhMCwgMHg2MDEzLCAweDAzMDAsIDB4MDA4OCwKLQkweDYwMTMsIDB4MDUwMCwgMHgwMDcwLCAweDYwMTMsIDB4MDcwMCwgMHgwMDU4LCAweDYwMTMsIDB4MDkwMCwKLQkweDAwNDAsIDB4NjAxMywgMHgwYjAwLCAweDAwMjgsIDB4NjAxMywgMHgwZjAwLCAweDAwMTAsIDB4NjAxMywKLQkweDJkMDAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4YTAwNiwgMHgwMDFlLCAweDAwZWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDAyNiwgMHgwMDM2LCAweDAxNTYsIDB4NjIxOCwKLQkweDIyNjgsIDB4NmIwNCwgMHhhMzk0LCAweDAwZmYsIDB4YTI4NiwgMHgwMDA2LCAweDAxOTAsIDB4YTI4NiwKLQkweDAwMDQsIDB4MDE3OCwgMHhhMzk0LCAweGZmMDAsIDB4ODIxNywgMHhhMjg2LCAweDAwMDYsIDB4MDE0OCwKLQkweGEyODYsIDB4MDAwNCwgMHgwMTMwLCAweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweDUwMmEsIDB4MDBjZSwKLQkweDA0YzAsIDB4MjAxMSwgMHhiYzk2LCAweGFkOTgsIDB4MDAwYSwgMHgyMGE5LCAweDAwMDQsIDB4MDgwYywKLQkweDkxNjYsIDB4MTU4MCwgMHgyMDExLCAweGJjOWEsIDB4YWQ5OCwgMHgwMDA2LCAweDIwYTksIDB4MDAwNCwKLQkweDA4MGMsIDB4OTE2NiwgMHgxNTM4LCAweDAwNDYsIDB4MDAxNiwgMHg2YWEwLCAweGEyOTQsIDB4MDBmZiwKLQkweDgyMjcsIDB4YTAwNiwgMHgyMDA5LCAweGI2NTMsIDB4MjEwYywgMHhkMWE0LCAweDAxMzgsIDB4MjAwOSwKLQkweDAwMjksIDB4MDgwYywgMHhiMWE0LCAweDY4MDAsIDB4YzBlNSwgMHg2ODAyLCAweDIwMTksIDB4MDAyOSwKLQkweDA4MGMsIDB4NmU2NywgMHgwMDc2LCAweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDZkNzQsIDB4MmMwOCwKLQkweDA4MGMsIDB4YWYzZSwgMHgwMDdlLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDRmOWMsIDB4MDAxZSwKLQkweDAwNGUsIDB4YTAwNiwgMHgwMTVlLCAweDAwM2UsIDB4MDAyZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwKLQkweDAwZDYsIDB4MjA2OSwgMHhiYzhlLCAweDY4MDAsIDB4YTA4NiwgMHgwODAwLCAweDAxMTgsIDB4NjAxMywKLQkweDAwMDAsIDB4MDAwOCwgMHhhMDA2LCAweDAwZGUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZjYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwMTU2LCAweDIwNzksIDB4YmM4YywgMHg3OTMwLCAweDc4MzQsIDB4MDgwYywKLQkweDI4NTIsIDB4MTFhMCwgMHgwODBjLCAweDUwMWIsIDB4MTE4OCwgMHgyMDExLCAweGJjOTAsIDB4YWM5OCwKLQkweDAwMGEsIDB4MjBhOSwgMHgwMDA0LCAweDA4MGMsIDB4OTE2NiwgMHgxMTQwLCAweDIwMTEsIDB4YmM5NCwKLQkweGFjOTgsIDB4MDAwNiwgMHgyMGE5LCAweDAwMDQsIDB4MDgwYywgMHg5MTY2LCAweDAxNWUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMGZlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwMDYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwMTU2LCAweDIwMTEsIDB4YmM4MywgMHgyMjA0LCAweDgyMTEsIDB4MjIwYywKLQkweDA4MGMsIDB4Mjg1MiwgMHgxMWEwLCAweDA4MGMsIDB4NTAxYiwgMHgxMTg4LCAweDIwMTEsIDB4YmM5NiwKLQkweGFjOTgsIDB4MDAwYSwgMHgyMGE5LCAweDAwMDQsIDB4MDgwYywgMHg5MTY2LCAweDExNDAsIDB4MjAxMSwKLQkweGJjOWEsIDB4YWM5OCwgMHgwMDA2LCAweDIwYTksIDB4MDAwNCwgMHgwODBjLCAweDkxNjYsIDB4MDE1ZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDBjZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBjNiwKLQkweDAwODYsIDB4MDA3NiwgMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDI2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4Mjc0MCwgMHgyMDI5LCAweGI4ZWEsIDB4MjUyYywgMHgyMDIxLCAweGI4ZjAsIDB4MjQyNCwKLQkweDIwNjEsIDB4YmUwMCwgMHgyMDcxLCAweGI2MDAsIDB4NzY0OCwgMHg3MDY4LCAweDgxZmYsIDB4MDE1MCwKLQkweDAwMDYsIDB4YTE4NiwgMHhiOWY1LCAweDAwMGUsIDB4MDEyOCwgMHg4MDAxLCAweGE2MDIsIDB4MWEwNCwKLQkweGFmYmYsIDB4MDAxOCwgMHhhNjA2LCAweDA5MDQsIDB4YWZiZiwgMHgyMTAwLCAweGFjMDYsIDB4MDkwNCwKLQkweGFmYjYsIDB4MDgwYywgMHhiMWNjLCAweDA5MDQsIDB4YWZiNiwgMHg2NzFjLCAweGE3ODYsIDB4MDAwMSwKLQkweDA5MDQsIDB4YWZkYSwgMHhhNzg2LCAweDAwMDQsIDB4MDkwNCwgMHhhZmRhLCAweGE3ODYsIDB4MDAwNywKLQkweDA1ZTgsIDB4MjUwMCwgMHhhYzA2LCAweDA1ZDAsIDB4MjQwMCwgMHhhYzA2LCAweDA1YjgsIDB4MDgwYywKLQkweGIxZGMsIDB4MTVhMCwgMHg4OGZmLCAweDAxMTgsIDB4NjA1MCwgMHhhOTA2LCAweDE1NzgsIDB4MDBkNiwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDA0LCAweDExMjAsIDB4MDAxNiwgMHgwODBjLCAweDE5NTIsIDB4MDAxZSwKLQkweGE3ODYsIDB4MDAwOCwgMHgxMTQ4LCAweDA4MGMsIDB4OWYxNCwgMHgxMTMwLCAweDA4MGMsIDB4OGNhNSwKLQkweDAwZGUsIDB4MDgwYywgMHg5ZWQ5LCAweDAwZDAsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxOTAsIDB4YTc4NiwgMHgwMDAzLCAweDE1MjgsIDB4NjgzNywgMHgwMTAzLCAweDZiNGEsIDB4Njg0NywKLQkweDAwMDAsIDB4MDgwYywgMHhiNDNjLCAweDAwMTYsIDB4MDgwYywgMHg5Zjg4LCAweDA4MGMsIDB4NTQ3YSwKLQkweDAwMWUsIDB4MDgwYywgMHg5ZWNkLCAweDAwZGUsIDB4MDgwYywgMHg5ZWQ5LCAweGFjZTAsIDB4MDAxOCwKLQkweDIwMDEsIDB4YjYxNywgMHgyMDA0LCAweGFjMDIsIDB4MTIxMCwgMHgwODA0LCAweGFmNTIsIDB4MDEyZSwKLQkweDAwMmUsIDB4MDA0ZSwgMHgwMDVlLCAweDAwNmUsIDB4MDA3ZSwgMHgwMDhlLCAweDAwY2UsIDB4MDBlZSwKLQkweDAwMDUsIDB4YTc4NiwgMHgwMDA2LCAweDExNTAsIDB4YTM4NiwgMHgwMDA1LCAweDAxMjgsIDB4MDgwYywKLQkweGI0M2MsIDB4MDgwYywgMHhiMTU1LCAweDA4ZjgsIDB4MDBkZSwgMHgwYzAwLCAweGE3ODYsIDB4MDAwYSwKLQkweDA5NjgsIDB4MDg1MCwgMHgwODBjLCAweGIxZGMsIDB4MTljOCwgMHg4MWZmLCAweDA5YjgsIDB4YTE4MCwKLQkweDAwMDEsIDB4MjAwNCwgMHhhMDg2LCAweDAwMTgsIDB4MDEzMCwgMHhhMTgwLCAweDAwMDEsIDB4MjAwNCwKLQkweGEwODYsIDB4MDAyZCwgMHgxOTU4LCAweDYwMDAsIDB4YTA4NiwgMHgwMDAyLCAweDE5MzgsIDB4MDgwYywKLQkweDlmMDMsIDB4MDEzMCwgMHgwODBjLCAweDlmMTQsIDB4MTkwOCwgMHgwODBjLCAweDhjYTUsIDB4MDAzOCwKLQkweDA4MGMsIDB4MmNmNywgMHgwODBjLCAweDlmMTQsIDB4MTExMCwgMHgwODBjLCAweDhjYTUsIDB4MDgwYywKLQkweDllZDksIDB4MDgwNCwgMHhhZmI2LCAweDAwYzYsIDB4MDBlNiwgMHgwMDE2LCAweDJjMDgsIDB4MjE3MCwKLQkweGEwMDYsIDB4MDgwYywgMHhiMTc2LCAweDAwMWUsIDB4MDEyMCwgMHg2MDFjLCAweGEwODQsIDB4MDAwZiwKLQkweDAwMWIsIDB4MDBlZSwgMHgwMGNlLCAweDAwMDUsIDB4YjAxYywgMHhiMDFjLCAweGIwMWMsIDB4YjAxYywKLQkweGIwMWMsIDB4YjAxYywgMHhiMDFlLCAweGIwMWMsIDB4YTAwNiwgMHgwMDA1LCAweDAwNDYsIDB4MDAxNiwKLQkweDcwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMjQsIDB4YTRhNCwgMHgwMGZmLCAweDg0MjcsIDB4MmMwMCwKLQkweDIwMDksIDB4MDAyMCwgMHgwODBjLCAweGIxYTQsIDB4MDAxZSwgMHgwMDRlLCAweDAwMzYsIDB4MjAxOSwKLQkweDAwMDIsIDB4MDgwYywgMHhhZDljLCAweDAwM2UsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHg0ZjVkLCAweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MjBhOSwKLQkweDAwMDQsIDB4MjAxOSwgMHhiNjA1LCAweDIwMTEsIDB4YmM5NiwgMHgwODBjLCAweDkxNjYsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMTVlLCAweGEwMDUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwKLQkweDAwODYsIDB4MDA3NiwgMHgwMDY2LCAweDAwMjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4Mjc0MCwKLQkweDIwNjEsIDB4YmUwMCwgMHgyMDc5LCAweDAwMDEsIDB4OGZmZiwgMHgwOTA0LCAweGIwYWIsIDB4MjA3MSwKLQkweGI2MDAsIDB4NzY0OCwgMHg3MDY4LCAweDgwMDEsIDB4YTYwMiwgMHgxYTA0LCAweGIwYWIsIDB4ODhmZiwKLQkweDAxMjgsIDB4MjgwMCwgMHhhYzA2LCAweDE1YjAsIDB4MjA3OSwgMHgwMDAwLCAweDA4MGMsIDB4YjFjYywKLQkweDA1ODgsIDB4MjQwMCwgMHhhYzA2LCAweDA1NzAsIDB4NjcxYywgMHhhNzg2LCAweDAwMDYsIDB4MTU1MCwKLQkweGE3ODYsIDB4MDAwNywgMHgwNTM4LCAweDg4ZmYsIDB4MTE0MCwgMHg2MDE4LCAweGEyMDYsIDB4MTUxMCwKLQkweDg1ZmYsIDB4MDExOCwgMHg2MDUwLCAweGExMDYsIDB4MTFlOCwgMHgwMGQ2LCAweDYwMDAsIDB4YTA4NiwKLQkweDAwMDQsIDB4MTE1MCwgMHgwODBjLCAweGIzZjYsIDB4NjAxZiwgMHgwMDA3LCAweDIwMDEsIDB4YjhiNiwKLQkweDIwMDQsIDB4NjAxNiwgMHgwODBjLCAweDE5NTIsIDB4NjAxMCwgMHgyMDY4LCAweDA4MGMsIDB4OWQxNiwKLQkweDAxMjAsIDB4MDA0NiwgMHgwODBjLCAweGIxNTUsIDB4MDA0ZSwgMHgwMGRlLCAweDA4MGMsIDB4OWVkOSwKLQkweDg4ZmYsIDB4MTE5OCwgMHhhY2UwLCAweDAwMTgsIDB4MjAwMSwgMHhiNjE3LCAweDIwMDQsIDB4YWMwMiwKLQkweDEyMTAsIDB4MDgwNCwgMHhiMDVjLCAweGEwMDYsIDB4MDEyZSwgMHgwMDJlLCAweDAwNmUsIDB4MDA3ZSwKLQkweDAwOGUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHhhOGM1LCAweDAwMDEsIDB4MGNhMCwKLQkweDAwNzYsIDB4MDA1NiwgMHgwMDg2LCAweDIwNDEsIDB4MDAwMCwgMHgyMDI5LCAweDAwMDEsIDB4MmMyMCwKLQkweDIwMTksIDB4MDAwMiwgMHg2MjE4LCAweDAwOTYsIDB4MjA0OSwgMHgwMDAwLCAweDA4MGMsIDB4ODFiNywKLQkweDAwOWUsIDB4MDA4ZSwgMHgyMDM5LCAweDAwMDAsIDB4MDgwYywgMHg4MjVkLCAweDA4MGMsIDB4YjA0ZCwKLQkweDAwNWUsIDB4MDA3ZSwgMHgwMDA1LCAweDAwMjYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNzYsIDB4MDBjNiwKLQkweDAxNTYsIDB4MmMyMCwgMHgyMTI4LCAweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MDAxNiwKLQkweDAwMzYsIDB4MDgwYywgMHg1MDFiLCAweDExYjAsIDB4MmMxMCwgMHgwMDU2LCAweDAwODYsIDB4MjA0MSwKLQkweDAwMDAsIDB4MjUwOCwgMHgyMDI5LCAweDAwMDEsIDB4MDA5NiwgMHgyMDQ5LCAweDAwMDAsIDB4MDgwYywKLQkweDgxYjcsIDB4MDA5ZSwgMHgwMDhlLCAweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDgyNWQsIDB4MDgwYywKLQkweGIwNGQsIDB4MDA1ZSwgMHgwMDNlLCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweGIwZGYsIDB4MDE1ZSwKLQkweDAwY2UsIDB4MDA3ZSwgMHgwMDVlLCAweDAwNGUsIDB4MDAyZSwgMHgwMDA1LCAweDAwNzYsIDB4MDA1NiwKLQkweDYyMTgsIDB4MDA4NiwgMHgyMDQxLCAweDAwMDAsIDB4MjAyOSwgMHgwMDAxLCAweDIwMTksIDB4MDA0OCwKLQkweDAwOTYsIDB4MjA0OSwgMHgwMDAwLCAweDA4MGMsIDB4ODFiNywgMHgwMDllLCAweDAwOGUsIDB4MjAzOSwKLQkweDAwMDAsIDB4MDgwYywgMHg4MjVkLCAweDJjMjAsIDB4MDgwYywgMHhiMDRkLCAweDAwNWUsIDB4MDA3ZSwKLQkweDAwMDUsIDB4MDAyNiwgMHgwMDQ2LCAweDAwNTYsIDB4MDA3NiwgMHgwMGM2LCAweDAxNTYsIDB4MmMyMCwKLQkweDIwYTksIDB4MDA3ZiwgMHgyMDA5LCAweDAwMDAsIDB4MDAxNiwgMHgwMDM2LCAweDA4MGMsIDB4NTAxYiwKLQkweDExYzAsIDB4MmMxMCwgMHgwMDg2LCAweDIwNDEsIDB4MDAwMCwgMHgyODI4LCAweDAwNDYsIDB4MjAyMSwKLQkweDAwMDEsIDB4MDgwYywgMHhiM2Q4LCAweDAwNGUsIDB4MDA5NiwgMHgyMDQ5LCAweDAwMDAsIDB4MDgwYywKLQkweDgxYjcsIDB4MDA5ZSwgMHgwMDhlLCAweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDgyNWQsIDB4MDgwYywKLQkweGIwNGQsIDB4MDAzZSwgMHgwMDFlLCAweDgxMDgsIDB4MWYwNCwgMHhiMTJjLCAweDAxNWUsIDB4MDBjZSwKLQkweDAwN2UsIDB4MDA1ZSwgMHgwMDRlLCAweDAwMmUsIDB4MDAwNSwgMHgwMDE2LCAweDAwZjYsIDB4MzgwMCwKLQkweGQwOGMsIDB4MDEzMCwgMHhhZDgyLCAweDEwMDAsIDB4MDJiMCwgMHhhZDgyLCAweGI2MDAsIDB4MDIzMCwKLQkweGFkODIsIDB4ZWUwMCwgMHgwMjgwLCAweGFkODIsIDB4ZmZmZiwgMHgxMjY4LCAweDY4MDAsIDB4YTA3ZCwKLQkweDAxMzgsIDB4NjgwMywgMHgwMDAwLCAweDZiNTIsIDB4MDgwYywgMHg1NDdhLCAweDJmNjgsIDB4MGNiMCwKLQkweDZiNTIsIDB4MDgwYywgMHg1NDdhLCAweDAwZmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZTYsIDB4MDA0NiwKLQkweDAwMzYsIDB4MjA2MSwgMHhiZTAwLCAweGEwMDUsIDB4MTEzOCwgMHgyMDcxLCAweGI2MDAsIDB4NzQ0OCwKLQkweDcwNjgsIDB4ODAwMSwgMHhhNDAyLCAweDEyZDgsIDB4MjEwMCwgMHhhYzA2LCAweDAxNjgsIDB4NjAwMCwKLQkweGEwODYsIDB4MDAwMCwgMHgwMTQ4LCAweDYwMDgsIDB4YTIwNiwgMHgxMTMwLCAweDYwMTgsIDB4YTFhMCwKLQkweDAwMDYsIDB4MjQyNCwgMHhhNDA2LCAweDAxNDAsIDB4YWNlMCwgMHgwMDE4LCAweDIwMDEsIDB4YjYxNywKLQkweDIwMDQsIDB4YWMwMiwgMHgxMjIwLCAweDBjNDAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4YTAwNiwKLQkweDAwM2UsIDB4MDA0ZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBkNiwgMHgwMDA2LCAweDA4MGMsIDB4MTVmZCwKLQkweDAwMGUsIDB4MDkwYywgMHgxNTFhLCAweDY4MzcsIDB4MDEwZCwgMHg2ODVlLCAweDAwMjYsIDB4MjAxMCwKLQkweDA4MGMsIDB4OWQwNiwgMHgyMDAxLCAweDAwMDAsIDB4MDEyMCwgMHgyMjAwLCAweGEwODAsIDB4MDAxNCwKLQkweDIwMDQsIDB4MDAyZSwgMHg2ODRhLCAweDY5NTYsIDB4NmM0NiwgMHg2ODRmLCAweDAwMDAsIDB4MjAwMSwKLQkweGI4YmUsIDB4MjAwNCwgMHg2ODUyLCAweGEwMDYsIDB4NjhiMiwgMHg2ODAyLCAweDY4M2EsIDB4Njg1YSwKLQkweDA4MGMsIDB4NTQ3YSwgMHgwMGRlLCAweDAwMDUsIDB4NjcwMCwgMHhhNzg2LCAweDAwMDAsIDB4MDE1OCwKLQkweGE3ODYsIDB4MDAwMSwgMHgwMTQwLCAweGE3ODYsIDB4MDAwYSwgMHgwMTI4LCAweGE3ODYsIDB4MDAwOSwKLQkweDAxMTAsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDBlNiwgMHg2MDE4LCAweDIwNzAsIDB4NzBhMCwKLQkweGEyMDYsIDB4MDBlZSwgMHgwMDA1LCAweDAwMTYsIDB4NjAwNCwgMHhhMDhlLCAweDAwMWUsIDB4MTFhMCwKLQkweDgwMDcsIDB4NjEzMCwgMHhhMThjLCAweDAwZmYsIDB4YTEwNSwgMHg2MDMyLCAweDYwMDcsIDB4MDA4NSwKLQkweDYwMDMsIDB4MDAwYiwgMHg2MDFmLCAweDAwMDUsIDB4MjAwMSwgMHhiOGI3LCAweDIwMDQsIDB4NjAxNiwKLQkweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDAxZSwgMHgwMDA1LCAweGUwMDAsIDB4ZTAwMCwKLQkweDAwMDUsIDB4NjAyMCwgMHhkMGU0LCAweDAxNTgsIDB4ZDBjYywgMHgwMTE4LCAweDA4MGMsIDB4OWZmMSwKLQkweDAwMzAsIDB4MDgwYywgMHhiM2Y2LCAweDA4MGMsIDB4NmI2MSwgMHgwODBjLCAweDg2YTQsIDB4MDAwNSwKLQkweGEyODAsIDB4MDAwNywgMHgyMDA0LCAweGEwODQsIDB4MDAwZiwgMHgwMDAyLCAweGIyMWYsIDB4YjIxZiwKLQkweGIyMWYsIDB4YjIyNCwgMHhiMjFmLCAweGIyMjEsIDB4YjIyMSwgMHhiMjFmLCAweGIyMjEsIDB4YTAwNiwKLQkweDAwMDUsIDB4MDBjNiwgMHgyMjYwLCAweDAwY2UsIDB4YTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4YTI4MCwKLQkweDAwMDcsIDB4MjAwNCwgMHhhMDg0LCAweDAwMGYsIDB4MDAwMiwgMHhiMjM2LCAweGIyMzYsIDB4YjIzNiwKLQkweGIyMzYsIDB4YjIzNiwgMHhiMjM2LCAweGIyNDEsIDB4YjIzNiwgMHhiMjM2LCAweDYwMDcsIDB4MDAzYiwKLQkweDYwMmIsIDB4MDAwOSwgMHg2MDEzLCAweDJhMDAsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmNmZiwKLQkweDAwMDUsIDB4MDBjNiwgMHgyMjYwLCAweDA4MGMsIDB4YjNmNiwgMHg2MDNmLCAweDAwMDAsIDB4NjAyMCwKLQkweGMwZjQsIDB4YzBjYywgMHg2MDIyLCAweDYwMzcsIDB4MDAwMCwgMHgwMGNlLCAweDAwZDYsIDB4MjI2OCwKLQkweGExODYsIDB4MDAwNywgMHgxOTA0LCAweGIyOWMsIDB4NjgxMCwgMHhhMDA1LCAweDAxMzgsIDB4YTA4MCwKLQkweDAwMTMsIDB4MjAwNCwgMHhkMGZjLCAweDExMTAsIDB4MDBkZSwgMHgwOGMwLCAweDYwMDcsIDB4MDAzYSwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDZjZmYsIDB4MDgwYywgMHg3MWU1LCAweDAwYzYsIDB4MmQ2MCwKLQkweDYxMDAsIDB4YTE4NiwgMHgwMDAyLCAweDE5MDQsIDB4YjMyNSwgMHg2MDEwLCAweGEwMDUsIDB4MTEzOCwKLQkweDYwMDAsIDB4YTA4NiwgMHgwMDA3LCAweDE5MGMsIDB4MTUxYSwgMHgwODA0LCAweGIzMjUsIDB4YTA4YywKLQkweGYwMDAsIDB4MTEzMCwgMHgwMDI4LCAweDIwNjgsIDB4NjgwMCwgMHhhMDA1LCAweDFkZTAsIDB4MmQwMCwKLQkweGEwODAsIDB4MDAxMywgMHgyMDA0LCAweGEwODQsIDB4MDAwMywgMHhhMDg2LCAweDAwMDIsIDB4MTE4MCwKLQkweDYwMTAsIDB4MjA2OCwgMHg2ODRjLCAweGMwZGMsIDB4YzBmNCwgMHg2ODRlLCAweDY4NTAsIDB4YzBmNCwKLQkweGMwZmMsIDB4Njg1MiwgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywgMHhhYzEyLCAweDA4MDQsIDB4YjMyNSwKLQkweDIwMDksIDB4MDA0MSwgMHgwODA0LCAweGIzMWYsIDB4YTE4NiwgMHgwMDA1LCAweDE1ZjAsIDB4NjgxMCwKLQkweGEwODAsIDB4MDAxMywgMHgyMDA0LCAweGQwYmMsIDB4MTExOCwgMHgwMGRlLCAweDA4MDQsIDB4YjIzNiwKLQkweGQwYjQsIDB4MDEyOCwgMHhkMGZjLCAweDA5MGMsIDB4MTUxYSwgMHgwODA0LCAweGIyNTQsIDB4NjAwNywKLQkweDAwM2EsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4NmNmZiwgMHgwODBjLCAweDcxZTUsIDB4MDBjNiwKLQkweDJkNjAsIDB4NjEwMCwgMHhhMTg2LCAweDAwMDIsIDB4MDEyMCwgMHhhMTg2LCAweDAwMDQsIDB4MTkwNCwKLQkweGIzMjUsIDB4MjA3MSwgMHhiOTI0LCAweDcwMDAsIDB4YTA4NiwgMHgwMDAzLCAweDExMjgsIDB4NzAwNCwKLQkweGFjMDYsIDB4MTExMCwgMHg3MDAzLCAweDAwMDAsIDB4NjgxMCwgMHhhMDgwLCAweDAwMTMsIDB4MjAwYywKLQkweGMxZjQsIDB4YzFkYywgMHgyMTAyLCAweDgwMDAsIDB4MjAwYywgMHhjMWY0LCAweGMxZmMsIDB4YzFiYywKLQkweDIxMDIsIDB4MjAwOSwgMHgwMDQyLCAweDA4MDQsIDB4YjMxZiwgMHgwMDM2LCAweDAwZDYsIDB4MDBkNiwKLQkweDA4MGMsIDB4MTVmZCwgMHgwMDNlLCAweDA5MGMsIDB4MTUxYSwgMHg2ODM3LCAweDAxMGQsIDB4NjgwMywKLQkweDAwMDAsIDB4NjgzYiwgMHgwMDAwLCAweDY4NWIsIDB4MDAwMCwgMHg2YjVlLCAweDY4NTcsIDB4MDA0NSwKLQkweDJjMDAsIDB4Njg2MiwgMHg2MDM0LCAweDY4NzIsIDB4MjM2MCwgMHg2MDIwLCAweGMwZGQsIDB4NjAyMiwKLQkweDYwMTgsIDB4YTA4MCwgMHgwMDI4LCAweDIwMDQsIDB4YTA4NCwgMHgwMGZmLCAweDgwMDcsIDB4NjM1MCwKLQkweDZiNGEsIDB4Njg0NiwgMHg2ODRmLCAweDAwMDAsIDB4Njg1MywgMHgwMDAwLCAweDZkNmEsIDB4NmU2NiwKLQkweDY4NmYsIDB4MDAwMSwgMHgwODBjLCAweDU0N2EsIDB4MjAxOSwgMHgwMDQ1LCAweDYwMDgsIDB4MjA2OCwKLQkweDA4MGMsIDB4YWQ5YywgMHgyZDAwLCAweDYwMGEsIDB4NjAxZiwgMHgwMDA2LCAweDYwMDMsIDB4MDAwNywKLQkweDYwMTcsIDB4MDAwMCwgMHg2MDNmLCAweDAwMDAsIDB4MDBkZSwgMHgwMDNlLCAweDAwMzgsIDB4NjAzZiwKLQkweDAwMDAsIDB4NjAwMywgMHgwMDA3LCAweDA4MGMsIDB4YWMxMiwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwKLQkweGExODYsIDB4MDAxMywgMHgxMTI4LCAweDYwMDQsIDB4YTA4MiwgMHgwMDg1LCAweDIwMDgsIDB4MDBjMiwKLQkweGExODYsIDB4MDAyNywgMHgxMTc4LCAweDA4MGMsIDB4NzEwMiwgMHgwMDM2LCAweDAwZDYsIDB4NjAxMCwKLQkweDIwNjgsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4YjE1NSwgMHgwMGRlLCAweDAwM2UsIDB4MDgwYywKLQkweDcxZTUsIDB4MDAwNSwgMHhhMTg2LCAweDAwMTQsIDB4MGQ3MCwgMHgwODBjLCAweDg2ZWYsIDB4MDAwNSwKLQkweGIzNTEsIDB4YjM0ZiwgMHhiMzRmLCAweGIzNGYsIDB4YjM0ZiwgMHhiMzRmLCAweGIzNTEsIDB4MDgwYywKLQkweDE1MWEsIDB4MDgwYywgMHg3MTAyLCAweDYwMDMsIDB4MDAwYywgMHgwODBjLCAweDcxZTUsIDB4MDAwNSwKLQkweGExODIsIDB4MDA4YywgMHgxMjIwLCAweGExODIsIDB4MDA4NSwgMHgwMjA4LCAweDAwMWEsIDB4MDgwYywKLQkweDg2ZWYsIDB4MDAwNSwgMHhiMzY5LCAweGIzNjksIDB4YjM2OSwgMHhiMzY5LCAweGIzNmIsIDB4YjM4OSwKLQkweGIzNjksIDB4MDgwYywgMHgxNTFhLCAweDAwZDYsIDB4MmM2OCwgMHgwODBjLCAweDg2NGUsIDB4MDFhMCwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMWUsIDB4MjAwOSwgMHhiYzhlLCAweDIxMGMsIDB4NjEzNiwKLQkweDIwMDksIDB4YmM4ZiwgMHgyMTBjLCAweDYxM2EsIDB4NjAwYiwgMHhmZmZmLCAweDY5MTgsIDB4NjExYSwKLQkweDYwMWYsIDB4MDAwNCwgMHgwODBjLCAweDZjZmYsIDB4MmQ2MCwgMHgwODBjLCAweDg2YTQsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDgwYywgMHg4NmE0LCAweDAwMDUsIDB4MDBlNiwgMHg2MDE4LCAweDIwNzAsIDB4NzAwMCwKLQkweGQwZWMsIDB4MDBlZSwgMHgwMDA1LCAweDYwMTAsIDB4YTA4YywgMHhmMDAwLCAweDA5MDQsIDB4YjNkNywKLQkweGEwODAsIDB4MDAxMywgMHgyMDBjLCAweGQxZWMsIDB4MDVkMCwgMHgyMDAxLCAweGI2NzIsIDB4MjAwNCwKLQkweGQwZWMsIDB4MDVhOCwgMHg2MDAzLCAweDAwMDIsIDB4NjAyMCwgMHhjMGU1LCAweDYwMjIsIDB4ZDFhYywKLQkweDAxODAsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4NTM3MywgMHgwMGZlLCAweDAxNTAsIDB4MjAwMSwKLQkweGI4YjgsIDB4MjAwNCwgMHg2MDNlLCAweDIwMDksIDB4YjY3MiwgMHgyMTBjLCAweGQxZjQsIDB4MTFlOCwKLQkweDAwODAsIDB4MjAwOSwgMHhiNjcyLCAweDIxMGMsIDB4ZDFmNCwgMHgwMTI4LCAweDYwMjAsIDB4YzBlNCwKLQkweDYwMjIsIDB4YTAwNiwgMHgwMGEwLCAweDIwMDEsIDB4YjhiOCwgMHgyMDBjLCAweDgxMDMsIDB4YTEwMCwKLQkweDYwM2UsIDB4NjAxOCwgMHhhMDg4LCAweDAwMmIsIDB4MjEwNCwgMHhhMDA1LCAweDAxMTgsIDB4YTA4OCwKLQkweDAwMDMsIDB4MGNkMCwgMHgyYzBhLCAweDYwMGYsIDB4MDAwMCwgMHhhMDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBjNiwgMHgwMGU2LCAweDYxNTAsIDB4YTJmMCwgMHgwMDJiLCAweDJlMDQsIDB4MjA2MCwKLQkweDhjZmYsIDB4MDE4MCwgMHg4NGZmLCAweDExMTgsIDB4NjA1MCwgMHhhMTA2LCAweDExMzgsIDB4NjAwYywKLQkweDIwNzIsIDB4MDgwYywgMHg2YjYxLCAweDA4MGMsIDB4ODZhNCwgMHgwMDEwLCAweGFjZjAsIDB4MDAwMywKLQkweDJlNjQsIDB4MGM3MCwgMHgwMGVlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwZDYsIDB4NjAxOCwKLQkweGEwZTgsIDB4MDAyYiwgMHgyZDA0LCAweGEwMDUsIDB4MDE0MCwgMHhhYzA2LCAweDAxMjAsIDB4MmQwNCwKLQkweGEwZTgsIDB4MDAwMywgMHgwY2I4LCAweDYwMGMsIDB4MjA2YSwgMHgwMGRlLCAweDAwMDUsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDE1NiwgMHgyMDExLCAweGI2MjgsIDB4MjIwNCwgMHhhMDg0LCAweDAwZmYsIDB4MjAxOSwKLQkweGJjOGUsIDB4MjMzNCwgMHhhNjM2LCAweDExZDgsIDB4ODMxOCwgMHgyMzM0LCAweDIyMDQsIDB4YTA4NCwKLQkweGZmMDAsIDB4YTYzNiwgMHgxMWEwLCAweDIwMTEsIDB4YmM5MCwgMHg2MDE4LCAweGEwOTgsIDB4MDAwYSwKLQkweDIwYTksIDB4MDAwNCwgMHgwODBjLCAweDkxNjYsIDB4MTE1MCwgMHgyMDExLCAweGJjOTQsIDB4NjAxOCwKLQkweGEwOTgsIDB4MDAwNiwgMHgyMGE5LCAweDAwMDQsIDB4MDgwYywgMHg5MTY2LCAweDExMDAsIDB4MDE1ZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHhiNjAwLCAweDA4MGMsIDB4NGMyOCwKLQkweDA4MGMsIDB4MmFlZCwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHg2MDE4LCAweDIwNzAsIDB4NzAwMCwKLQkweGQwZmMsIDB4MDEwOCwgMHgwMDExLCAweDAwZWUsIDB4MDAwNSwgMHg2ODUwLCAweGMwZTUsIDB4Njg1MiwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwNzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwNDYsIDB4MDAyNiwKLQkweDAwMTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAyOSwgMHhiOGVhLCAweDI1MmMsIDB4MjAyMSwKLQkweGI4ZjAsIDB4MjQyNCwgMHgyMDYxLCAweGJlMDAsIDB4MjA3MSwgMHhiNjAwLCAweDc2NDgsIDB4NzA2OCwKLQkweGE2MDYsIDB4MDU3OCwgMHg2NzFjLCAweGE3ODYsIDB4MDAwMSwgMHgwMTE4LCAweGE3ODYsIDB4MDAwOCwKLQkweDE1MDAsIDB4MjUwMCwgMHhhYzA2LCAweDAxZTgsIDB4MjQwMCwgMHhhYzA2LCAweDAxZDAsIDB4MDgwYywKLQkweGIxY2MsIDB4MDFiOCwgMHgwODBjLCAweGIxZGMsIDB4MTFhMCwgMHg2MDAwLCAweGEwODYsIDB4MDAwNCwKLQkweDExMjAsIDB4MDAxNiwgMHgwODBjLCAweDE5NTIsIDB4MDAxZSwgMHgwODBjLCAweDlmMDMsIDB4MTExMCwKLQkweDA4MGMsIDB4MmNmNywgMHgwODBjLCAweDlmMTQsIDB4MTExMCwgMHgwODBjLCAweDhjYTUsIDB4MDgwYywKLQkweDllZDksIDB4YWNlMCwgMHgwMDE4LCAweDIwMDEsIDB4YjYxNywgMHgyMDA0LCAweGFjMDIsIDB4MTIwOCwKLQkweDA4NTgsIDB4MDEyZSwgMHgwMDFlLCAweDAwMmUsIDB4MDA0ZSwgMHgwMDVlLCAweDAwNmUsIDB4MDA3ZSwKLQkweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsIDB4MDAwNiwgMHgwMGU2LCAweDAwMTYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhiNjQwLCAweGQ1YTQsIDB4MDExOCwgMHg3MDM0LCAweDgwMDAsIDB4NzAzNiwKLQkweGQ1YjQsIDB4MDExOCwgMHg3MDMwLCAweDgwMDAsIDB4NzAzMiwgMHhkNWFjLCAweDAxNzgsIDB4MjUwMCwKLQkweGEwODQsIDB4MDAwNywgMHhhMDhlLCAweDAwMDMsIDB4MDE0OCwgMHhhMDhlLCAweDAwMDQsIDB4MDEzMCwKLQkweGEwOGUsIDB4MDAwNSwgMHgwMTE4LCAweDIwNzEsIDB4YjY0YSwgMHgwNGM5LCAweDAwMWUsIDB4MDBlZSwKLQkweDAwMGUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsIDB4MDAwNiwgMHgwMGU2LCAweDAwMTYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhiNjQwLCAweGQ1YTQsIDB4MDExOCwgMHg3MDM0LCAweDgwMDAsIDB4NzAzNiwKLQkweGQ1YjQsIDB4MDExOCwgMHg3MDMwLCAweDgwMDAsIDB4NzAzMiwgMHhkNWFjLCAweDAxNzgsIDB4MjUwMCwKLQkweGEwODQsIDB4MDAwNywgMHhhMDhlLCAweDAwMDMsIDB4MDE0OCwgMHhhMDhlLCAweDAwMDQsIDB4MDEzMCwKLQkweGEwOGUsIDB4MDAwNSwgMHgwMTE4LCAweDIwNzEsIDB4YjY0YSwgMHgwMDg5LCAweDAwMWUsIDB4MDBlZSwKLQkweDAwMGUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsIDB4MDAwNiwgMHgwMGU2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4YjY0MiwgMHgwMDIxLCAweDAwZWUsIDB4MDAwZSwgMHgwMTJlLCAweDAwMDUsIDB4MmUwNCwKLQkweDgwMDAsIDB4MjA3MiwgMHgxMjIwLCAweDhlNzAsIDB4MmUwNCwgMHg4MDAwLCAweDIwNzIsIDB4MDAwNSwKLQkweDAwZTYsIDB4MjA3MSwgMHhiNjQwLCAweDBjOTksIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweGI2NDQsIDB4MGM2OSwgMHgwMGVlLCAweDAwMDUsIDB4MDEyNiwgMHgwMDA2LCAweDAwZTYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHhiNjQwLCAweDcwNDQsIDB4ODAwMCwgMHg3MDQ2LCAweDAwZWUsIDB4MDAwZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwMDAxLCAweDAwMDIsIDB4MDAwNCwgMHgwMDA4LCAweDAwMTAsIDB4MDAyMCwKLQkweDAwNDAsIDB4MDA4MCwgMHgwMTAwLCAweDAyMDAsIDB4MDQwMCwgMHgwODAwLCAweDEwMDAsIDB4MjAwMCwKLQkweDQwMDAsIDB4ODAwMCwgMHhkYjA2Ci19OwotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIyMDB0cF9sZW5ndGgwMSA9IDB4YTUyYjsKLSNlbHNlCi11bnNpZ25lZCBzaG9ydCByaXNjX2NvZGVfbGVuZ3RoMDEgPSAweGE1MmI7Ci0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyMzAwLmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIzMDAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhOTNkZC4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIzMDAuYworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogUUxvZ2ljIEZpYnJlIENoYW5uZWwgSEJBIERyaXZlcgotICogQ29weXJpZ2h0IChDKSAgMjAwMyBDaHJpc3RvcGggSGVsbHdpZy4KLSAqIENvcHlyaWdodCAoYykgIDIwMDMtMjAwNSBRTG9naWMgQ29ycG9yYXRpb24KLSAqCi0gKiBTZWUgTElDRU5TRS5xbGEyeHh4IGZvciBjb3B5cmlnaHQgYW5kIGxpY2Vuc2luZyBkZXRhaWxzLgotICovCi0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotCi0jaW5jbHVkZSAicWxhX2RlZi5oIgotCi1zdGF0aWMgY2hhciBxbGFfZHJpdmVyX25hbWVbXSA9ICJxbGEyMzAwIjsKLQotZXh0ZXJuIHVuc2lnbmVkIGNoYXIgIGZ3MjMwMGlweF92ZXJzaW9uW107Ci1leHRlcm4gdW5zaWduZWQgY2hhciAgZncyMzAwaXB4X3ZlcnNpb25fc3RyW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMzAwaXB4X2FkZHIwMTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCBmdzIzMDBpcHhfY29kZTAxW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMzAwaXB4X2xlbmd0aDAxOwotCi1zdGF0aWMgc3RydWN0IHFsYV9md19pbmZvIHFsYV9md190YmxbXSA9IHsKLQl7Ci0JCS5hZGRyZXNzaW5nCT0gRldfSU5GT19BRERSX05PUk1BTCwKLQkJLmZ3Y29kZQkJPSAmZncyMzAwaXB4X2NvZGUwMVswXSwKLQkJLmZ3bGVuCQk9ICZmdzIzMDBpcHhfbGVuZ3RoMDEsCi0JCS5md3N0YXJ0CT0gJmZ3MjMwMGlweF9hZGRyMDEsCi0JfSwKLQl7IEZXX0lORk9fQUREUl9OT01PUkUsIH0sCi19OwotCi1zdGF0aWMgc3RydWN0IHFsYV9ib2FyZF9pbmZvIHFsYV9ib2FyZF90YmxbXSA9IHsKLQl7Ci0JCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQkJLmlzcF9uYW1lCT0gIklTUDIzMDAiLAotCQkuZndfaW5mbwk9IHFsYV9md190YmwsCi0JfSwKLQl7Ci0JCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQkJLmlzcF9uYW1lCT0gIklTUDIzMTIiLAotCQkuZndfaW5mbwk9IHFsYV9md190YmwsCi0JfSwKLQl7Ci0JCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQkJLmlzcF9uYW1lCT0gIklTUDYzMTIiLAotCQkuZndfaW5mbwk9IHFsYV9md190YmwsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBxbGEyMzAwX3BjaV90YmxbXSA9IHsKLQl7Ci0JCS52ZW5kb3IJCT0gUENJX1ZFTkRPUl9JRF9RTE9HSUMsCi0JCS5kZXZpY2UJCT0gUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjMwMCwKLQkJLnN1YnZlbmRvcgk9IFBDSV9BTllfSUQsCi0JCS5zdWJkZXZpY2UJPSBQQ0lfQU5ZX0lELAotCQkuZHJpdmVyX2RhdGEJPSAodW5zaWduZWQgbG9uZykmcWxhX2JvYXJkX3RibFswXSwKLQl9LAotCXsKLQkJLnZlbmRvcgkJPSBQQ0lfVkVORE9SX0lEX1FMT0dJQywKLQkJLmRldmljZQkJPSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMzEyLAotCQkuc3VidmVuZG9yCT0gUENJX0FOWV9JRCwKLQkJLnN1YmRldmljZQk9IFBDSV9BTllfSUQsCi0JCS5kcml2ZXJfZGF0YQk9ICh1bnNpZ25lZCBsb25nKSZxbGFfYm9hcmRfdGJsWzFdLAotCX0sCi0JewotCQkudmVuZG9yCQk9IFBDSV9WRU5ET1JfSURfUUxPR0lDLAotCQkuZGV2aWNlCQk9IFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDYzMTIsCi0JCS5zdWJ2ZW5kb3IJPSBQQ0lfQU5ZX0lELAotCQkuc3ViZGV2aWNlCT0gUENJX0FOWV9JRCwKLQkJLmRyaXZlcl9kYXRhCT0gKHVuc2lnbmVkIGxvbmcpJnFsYV9ib2FyZF90YmxbMl0sCi0JfSwKLQl7MCwgMH0sCi19OwotTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHFsYTIzMDBfcGNpX3RibCk7Ci0KLXN0YXRpYyBpbnQgX19kZXZpbml0Ci1xbGEyMzAwX3Byb2JlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQotewotCXJldHVybiBxbGEyeDAwX3Byb2JlX29uZShwZGV2LAotCSAgICAoc3RydWN0IHFsYV9ib2FyZF9pbmZvICopaWQtPmRyaXZlcl9kYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgX19kZXZleGl0Ci1xbGEyMzAwX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCi17Ci0JcWxhMngwMF9yZW1vdmVfb25lKHBkZXYpOwotfQotCi1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcWxhMjMwMF9wY2lfZHJpdmVyID0gewotCS5uYW1lCQk9ICJxbGEyMzAwIiwKLQkuaWRfdGFibGUJPSBxbGEyMzAwX3BjaV90YmwsCi0JLnByb2JlCQk9IHFsYTIzMDBfcHJvYmVfb25lLAotCS5yZW1vdmUJCT0gX19kZXZleGl0X3AocWxhMjMwMF9yZW1vdmVfb25lKSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0Ci1xbGEyMzAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gcGNpX21vZHVsZV9pbml0KCZxbGEyMzAwX3BjaV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXFsYTIzMDBfZXhpdCh2b2lkKQotewotCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmcWxhMjMwMF9wY2lfZHJpdmVyKTsKLX0KLQotbW9kdWxlX2luaXQocWxhMjMwMF9pbml0KTsKLW1vZHVsZV9leGl0KHFsYTIzMDBfZXhpdCk7Ci0KLU1PRFVMRV9BVVRIT1IoIlFMb2dpYyBDb3Jwb3JhdGlvbiIpOwotTU9EVUxFX0RFU0NSSVBUSU9OKCJRTG9naWMgSVNQMjN4eCBGQy1TQ1NJIEhvc3QgQnVzIEFkYXB0ZXIgZHJpdmVyIik7Ci1NT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1NT0RVTEVfVkVSU0lPTihRTEEyWFhYX1ZFUlNJT04pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyMzAwX2Z3LmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIzMDBfZncuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjZTdmZS4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIzMDBfZncuYworKysgL2Rldi9udWxsCkBAIC0xLDc3NDYgKzAsMCBAQAotLyoKLSAqIFFMb2dpYyBGaWJyZSBDaGFubmVsIEhCQSBEcml2ZXIKLSAqIENvcHlyaWdodCAoYykgIDIwMDMtMjAwNSBRTG9naWMgQ29ycG9yYXRpb24KLSAqCi0gKiBTZWUgTElDRU5TRS5xbGEyeHh4IGZvciBjb3B5cmlnaHQgYW5kIGxpY2Vuc2luZyBkZXRhaWxzLgotICovCi0KLS8qCi0gKglGaXJtd2FyZSBWZXJzaW9uIDMuMDMuMjAgKDE1OjM5IEZlYiAwMSwgMjAwNikKLSAqLwotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjMwMGlweF92ZXJzaW9uID0gMyoxMDI0KzM7Ci0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlX3ZlcnNpb24gPSAzKjEwMjQrMzsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIGNoYXIgZncyMzAwaXB4X3ZlcnNpb25fc3RyW10gPSB7MywgMywyMH07Ci0jZWxzZQotdW5zaWduZWQgY2hhciBmaXJtd2FyZV92ZXJzaW9uW10gPSB7MywgMywyMH07Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi0jZGVmaW5lIGZ3MjMwMGlweF9WRVJTSU9OX1NUUklORyAiMy4wMy4yMCIKLSNlbHNlCi0jZGVmaW5lIEZXX1ZFUlNJT05fU1RSSU5HICIzLjAzLjIwIgotI2VuZGlmCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdW5zaWduZWQgc2hvcnQgZncyMzAwaXB4X2FkZHIwMSA9IDB4MDgwMCA7Ci0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlX2FkZHIwMSA9IDB4MDgwMCA7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIzMDBpcHhfY29kZTAxW10gPSB7IAotI2Vsc2UKLXVuc2lnbmVkIHNob3J0IHJpc2NfY29kZTAxW10gPSB7IAotI2VuZGlmCi0JMHgwNDcwLCAweDAwMDAsIDB4MDAwMCwgMHhmMDkxLCAweDAwMDAsIDB4MDAwMywgMHgwMDAzLCAweDAwMTQsCi0JMHgwMTM3LCAweDIwNDMsIDB4NGY1MCwgMHg1OTUyLCAweDQ5NDcsIDB4NDg1NCwgMHgyMDMyLCAweDMwMzAsCi0JMHgzMTIwLCAweDUxNGMsIDB4NGY0NywgMHg0OTQzLCAweDIwNDMsIDB4NGY1MiwgMHg1MDRmLCAweDUyNDEsCi0JMHg1NDQ5LCAweDRmNGUsIDB4MjA0OSwgMHg1MzUwLCAweDMyMzMsIDB4MzAzMCwgMHgyMDQ2LCAweDY5NzIsCi0JMHg2ZDc3LCAweDYxNzIsIDB4NjUyMCwgMHgyMDU2LCAweDY1NzIsIDB4NzM2OSwgMHg2ZjZlLCAweDIwMzAsCi0JMHgzMzJlLCAweDMwMzMsIDB4MmUzMiwgMHgzMDIwLCAweDIwMjAsIDB4MjAyMCwgMHgyNDAwLCAweDIwYTksCi0JMHgwMDBmLCAweDIwMDEsIDB4MDAwMCwgMHg0MDBmLCAweDIwOTEsIDB4MjIwMCwgMHgyMGE5LCAweDAwMGYsCi0JMHgyMDAxLCAweDAwMDAsIDB4NDAwZiwgMHgyMDkxLCAweDI0MDAsIDB4MjBhOSwgMHgwMDBmLCAweDIwMDEsCi0JMHgwMDAwLCAweDQwMGYsIDB4MjA5MSwgMHgyNjAwLCAweDIwYTksIDB4MDAwZiwgMHgyMDAxLCAweDAwMDAsCi0JMHg0MDBmLCAweDIwOTEsIDB4MjgwMCwgMHgyMGE5LCAweDAwMGYsIDB4MjAwMSwgMHgwMDAwLCAweDQwMGYsCi0JMHgyMDkxLCAweDJhMDAsIDB4MjBhOSwgMHgwMDBmLCAweDIwMDEsIDB4MDAwMCwgMHg0MDBmLCAweDIwOTEsCi0JMHgyYzAwLCAweDIwYTksIDB4MDAwZiwgMHgyMDAxLCAweDAwMDAsIDB4NDAwZiwgMHgyMDkxLCAweDJlMDAsCi0JMHgyMGE5LCAweDAwMGYsIDB4MjAwMSwgMHgwMDAwLCAweDQwMGYsIDB4MjA5MSwgMHgyMDAwLCAweDIwMDEsCi0JMHgwMDAwLCAweDIwYzEsIDB4MDAwNCwgMHgyMGM5LCAweDFiZmYsIDB4MjA1OSwgMHgwMDAwLCAweDJiNzgsCi0JMHg3ODgzLCAweDAwMDQsIDB4MjA4OSwgMHgyZDkzLCAweDIwNTEsIDB4MTgwMCwgMHgyYTcwLCAweDIwZTEsCi0JMHgwMDAxLCAweDIwZTksIDB4MDAwMSwgMHgyMDA5LCAweDAwMDAsIDB4MDgwYywgMHgwZTUyLCAweDIwMjksCi0JMHg0ZDAwLCAweDIwMzEsIDB4ZmZmZiwgMHgyMDM5LCAweDRjZDAsIDB4MjAyMSwgMHgwMjAwLCAweDIwZTksCi0JMHgwMDAxLCAweDIwYTEsIDB4MDAwMCwgMHgyMGE5LCAweDA4MDAsIDB4OTAwZSwgMHg0MTA0LCAweDIwZTksCi0JMHgwMDAxLCAweDIwYTEsIDB4MTAwMCwgMHg5MDBlLCAweDIwMDEsIDB4MGNjMCwgMHg5MDg0LCAweDBmZmYsCi0JMHgyMGE4LCAweDQxMDQsIDB4MjAwMSwgMHgwMDAwLCAweDkwODYsIDB4MDAwMCwgMHgwMTIwLCAweDIxYTgsCi0JMHg0MTA0LCAweDgwMDEsIDB4MWRlMCwgMHg3NTZlLCAweDc2NzIsIDB4Nzc2YSwgMHg3NDc2LCAweDc0N2EsCi0JMHgwMGU2LCAweDIwNzEsIDB4MWFkMSwgMHgyNDcyLCAweDAwZWUsIDB4MjBhMSwgMHgxY2QwLCAweDcxNzAsCi0JMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwgMHg4MTBkLCAweDkxOGMsIDB4MDAwZiwgMHgyMDAxLCAweDAwMDEsCi0JMHg5MTEyLCAweDkwMGUsIDB4MjFhOCwgMHg0MTA0LCAweDgyMTEsIDB4MWRlMCwgMHg3MTcwLCAweDM0MDAsCi0JMHg4MDAxLCAweDkxMDIsIDB4MDEyMCwgMHgwMjE4LCAweDIwYTgsIDB4OTAwZSwgMHg0MTA0LCAweDIwMDksCi0JMHgxODAwLCAweDgxMGQsIDB4ODEwZCwgMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwgMHg5MThjLCAweDAwMWYsCi0JMHgyMDAxLCAweDAwMDEsIDB4OTExMiwgMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwgMHgwODAwLCAweDkwMGUsCi0JMHgyMGE5LCAweDA4MDAsIDB4NDEwNCwgMHg4MjExLCAweDFkZDgsIDB4MDgwYywgMHgwZjI2LCAweDA4MGMsCi0JMHg2MTNjLCAweDA4MGMsIDB4YjI2OSwgMHgwODBjLCAweDEwZGQsIDB4MDgwYywgMHgxMmZjLCAweDA4MGMsCi0JMHgxYmQ3LCAweDA4MGMsIDB4MGQ1NywgMHgwODBjLCAweDEwNjIsIDB4MDgwYywgMHgzNGI2LCAweDA4MGMsCi0JMHg3OTQ2LCAweDA4MGMsIDB4NmI3YywgMHgwODBjLCAweDhhNjksIDB4MDgwYywgMHg4NzRhLCAweDA4MGMsCi0JMHgyNGI3LCAweDA4MGMsIDB4OTNhNSwgMHgwODBjLCAweDgwNjYsIDB4MDgwYywgMHgyMmU4LCAweDA4MGMsCi0JMHgyNDFjLCAweDA4MGMsIDB4MjRhYywgMHgyMDkxLCAweDMwMDksIDB4Nzg4MywgMHgwMDAwLCAweDEwMDQsCi0JMHgwOTFmLCAweDc4ODAsIDB4OTA4NiwgMHgwMDAyLCAweDExOTAsIDB4Nzg4MywgMHg0MDAwLCAweDc4MzcsCi0JMHg0MDAwLCAweDc4MzMsIDB4MDAxMCwgMHgwZTA0LCAweDA5MTMsIDB4MjA5MSwgMHg1MDAwLCAweDIwOTEsCi0JMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMWFhLCAweDIwNzEsCi0JMHgxODAwLCAweDcwMDMsIDB4MDAwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzAwMCwgMHg5MDhlLCAweDAwMDMsCi0JMHgxMTc4LCAweDA4MGMsIDB4NGQwOSwgMHgwODBjLCAweDM0ZGQsIDB4MDgwYywgMHg3OWI3LCAweDA4MGMsCi0JMHg3MTIyLCAweDA4MGMsIDB4OGI1MCwgMHgwODBjLCAweDg3NzYsIDB4MDgwYywgMHgyY2RkLCAweDBjNTgsCi0JMHgwMDBiLCAweDBjNzgsIDB4MDk0NCwgMHgwOTQ1LCAweDBhZTAsIDB4MDk0MiwgMHgwYmEwLCAweDBkNTYsCi0JMHgwZDU2LCAweDBkNTYsIDB4MDgwYywgMHgwZGM1LCAweDAwMDUsIDB4MDEyNiwgMHgwMGY2LCAweDIwOTEsCi0JMHg4MDAwLCAweDcwMDAsIDB4OTA4NiwgMHgwMDAxLCAweDE5MDQsIDB4MGFiMywgMHgwODBjLCAweDBlOTQsCi0JMHgwODBjLCAweDc2MzcsIDB4MDE1MCwgMHgwODBjLCAweDc2NWEsIDB4MTVhMCwgMHgyMDc5LCAweDAxMDAsCi0JMHg3ODI4LCAweDkwODUsIDB4MTgwMCwgMHg3ODJhLCAweDA0NjgsIDB4MDgwYywgMHg3NTYzLCAweDcwMDAsCi0JMHg5MDg2LCAweDAwMDEsIDB4MTkwNCwgMHgwYWIzLCAweDcwOTgsIDB4OTA4NiwgMHgwMDI5LCAweDE5MDQsCi0JMHgwYWIzLCAweDA4MGMsIDB4ODczMywgMHgwODBjLCAweDg3MjUsIDB4MjAwMSwgMHgwMTYxLCAweDIwMDMsCi0JMHgwMDAxLCAweDIwNzksIDB4MDEwMCwgMHg3ODI3LCAweGZmZmYsIDB4N2EyOCwgMHg5Mjk1LCAweDVlMmYsCi0JMHg3YTJhLCAweDIwMTEsIDB4NzRiMiwgMHgwODBjLCAweDg4M2QsIDB4MjAxMSwgMHg3NGE1LCAweDA4MGMsCi0JMHg4OTE3LCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4M2QsIDB4MjAxMSwgMHg4MDMwLCAweDkwMWUsCi0JMHg3Mzk2LCAweDA0ZDAsIDB4MDgwYywgMHg1ODNmLCAweDIwNzksIDB4MDEwMCwgMHg3ODQ0LCAweDkwMDUsCi0JMHgxOTA0LCAweDBhYjMsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsIDB4ODgzZCwgMHgyMDExLCAweDc0YjIsCi0JMHgwODBjLCAweDg4M2QsIDB4MjAxMSwgMHg3NGE1LCAweDA4MGMsIDB4ODkxNywgMHgyMDAxLCAweDAyNjUsCi0JMHgyMDAxLCAweDAyMDUsIDB4MjAwMywgMHgwMDAwLCAweDc4NDAsIDB4OTA4NCwgMHhmZmZiLCAweDc4NDIsCi0JMHgyMDAxLCAweDE5YTcsIDB4MjAwNCwgMHg5MDA1LCAweDExNDAsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsCi0JMHgwODBjLCAweDYwZTQsIDB4MDBjZSwgMHgwODA0LCAweDBhYjMsIDB4NzgwZiwgMHgwMDZiLCAweDdhMjgsCi0JMHgwODBjLCAweDc2M2YsIDB4MDExOCwgMHg5Mjk1LCAweDVlMmYsIDB4MDAxMCwgMHg5Mjk1LCAweDQwMmYsCi0JMHg3YTJhLCAweDIwMTEsIDB4ODAxMCwgMHg3M2Q4LCAweDIwMDEsIDB4MTlhOCwgMHgyMDAzLCAweDAwMDEsCi0JMHgwODBjLCAweDJiODIsIDB4MDgwYywgMHg0YzQ0LCAweDcyNDgsIDB4YzI4NCwgMHg3MjRhLCAweDIwMDEsCi0JMHgxODBjLCAweDIwMGMsIDB4YzFhYywgMHhjMWNjLCAweDIxMDIsIDB4MDgwYywgMHhhOWIwLCAweDIwMTEsCi0JMHgwMDA0LCAweDA4MGMsIDB4ZDBlOCwgMHgwODBjLCAweDY5NDcsIDB4MDgwYywgMHg3NjM3LCAweDExMjAsCi0JMHgwODBjLCAweDJiYzYsIDB4MDJlMCwgMHgwNDAwLCAweDA4MGMsIDB4NjBlYiwgMHgwMTQwLCAweDcwOTcsCi0JMHgwMDAxLCAweDcwZDMsIDB4MDAwMCwgMHgwODBjLCAweDVhMTEsIDB4MDgwNCwgMHgwYWIzLCAweDA4MGMsCi0JMHg1N2Q1LCAweGQwOTQsIDB4MDE4OCwgMHgyMDExLCAweDE4MGMsIDB4MjIwNCwgMHhjMGNkLCAweDIwMTIsCi0JMHgwODBjLCAweDU3ZDksIDB4ZDBkNCwgMHgxMTE4LCAweDA4MGMsIDB4MmJjNiwgMHgxMjcwLCAweDIwMTEsCi0JMHgxODBjLCAweDIyMDQsIDB4YzBiYywgMHgwMGE4LCAweDA4MGMsIDB4NTdkOSwgMHhkMGQ0LCAweDFkYjgsCi0JMHgyMDExLCAweDE4MGMsIDB4MjIwNCwgMHhjMGJkLCAweDAwNjAsIDB4MjAxMSwgMHgxODBjLCAweDIyMDQsCi0JMHhjMGJkLCAweDIwMTIsIDB4MDgwYywgMHg2YTliLCAweDExMjgsIDB4ZDBhNCwgMHgwMTE4LCAweDIyMDQsCi0JMHhjMGZkLCAweDIwMTIsIDB4MDgwYywgMHg2YTYxLCAweDAxMjAsIDB4N2EwYywgMHhjMmI0LCAweDdhMGUsCi0JMHgwMGE4LCAweDcwN2YsIDB4MDAwMCwgMHgwODBjLCAweDc2MzcsIDB4MTEzMCwgMHg3MGIwLCAweDkwMDUsCi0JMHgxMTY4LCAweDA4MGMsIDB4ZDUyYiwgMHgwMDUwLCAweDA4MGMsIDB4ZDUyYiwgMHg3MGRjLCAweGQwOWMsCi0JMHgxMTI4LCAweDcwYjAsIDB4OTAwNSwgMHgwMTEwLCAweDA4MGMsIDB4NjBjMSwgMHg3MGU3LCAweDAwMDAsCi0JMHg3MGUzLCAweDAwMDAsIDB4NzBhNywgMHgwMDAwLCAweDA4MGMsIDB4MmJjZSwgMHgwMjI4LCAweDIwMTEsCi0JMHgwMTAxLCAweDIyMDQsIDB4YzBjNCwgMHgyMDEyLCAweDcyZGMsIDB4MDgwYywgMHg3NjM3LCAweDExNzgsCi0JMHg5MDE2LCAweDAwMTYsIDB4MDgwYywgMHgyOThiLCAweDIwMTksIDB4MTk2ZCwgMHgyMTFhLCAweDAwMWUsCi0JMHg3MDVmLCAweGZmZmYsIDB4NzA2MywgMHgwMGVmLCAweDcwODMsIDB4MDAwMCwgMHgwMDIwLCAweDIwMTksCi0JMHgxOTZkLCAweDIwMWIsIDB4MDAwMCwgMHgyMDc5LCAweDE4NDcsIDB4NzgwNCwgMHhkMGFjLCAweDAxMDgsCi0JMHhjMjk1LCAweDcyZGUsIDB4MDgwYywgMHg3NjM3LCAweDAxMTgsIDB4OTI5NiwgMHgwMDA0LCAweDA1NDgsCi0JMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHhkMGU4LCAweDcwYWIsIDB4MDAwMCwgMHg3MGFmLCAweGZmZmYsCi0JMHg3MDAzLCAweDAwMDIsIDB4MjA3OSwgMHgwMTAwLCAweDc4MjcsIDB4MDAwMywgMHg3ODI4LCAweDkwODUsCi0JMHgwMDAzLCAweDc4MmEsIDB4MDBmZSwgMHgwODBjLCAweDMwMDAsIDB4MjAxMSwgMHgwMDA1LCAweDA4MGMsCi0JMHhhYWJmLCAweDA4MGMsIDB4OWFiMSwgMHgwODBjLCAweDc2MzcsIDB4MDE0OCwgMHgwMGM2LCAweDIwNjEsCi0JMHgwMTAwLCAweDAwMTYsIDB4MDgwYywgMHgyOThiLCAweDYxZTIsIDB4MDAxZSwgMHgwMGNlLCAweDAxMmUsCi0JMHgwNDIwLCAweDcwYWIsIDB4MDAwMCwgMHg3MGFmLCAweGZmZmYsIDB4NzAwMywgMHgwMDAyLCAweDAwZjYsCi0JMHgyMDc5LCAweDAxMDAsIDB4NzgyNywgMHgwMDAzLCAweDc4MjgsIDB4OTA4NSwgMHgwMDAzLCAweDc4MmEsCi0JMHgwMGZlLCAweDIwMTEsIDB4MDAwNSwgMHgwODBjLCAweGFhYmYsIDB4MDgwYywgMHg5YWIxLCAweDA4MGMsCi0JMHg3NjM3LCAweDAxNDgsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4MDAxNiwgMHgwODBjLCAweDI5OGIsCi0JMHg2MWUyLCAweDAwMWUsIDB4MDBjZSwgMHgwMGZlLCAweDAxMmUsIDB4MDAwNSwgMHgwMGM2LCAweDAwYjYsCi0JMHgwODBjLCAweDc2MzcsIDB4MTExOCwgMHgyMGE5LCAweDA4MDAsIDB4MDAxMCwgMHgyMGE5LCAweDA3ODIsCi0JMHgwODBjLCAweDc2MzcsIDB4MTExMCwgMHg5MDBlLCAweDAwMTAsIDB4MjAwOSwgMHgwMDdlLCAweDg2ZmYsCi0JMHgwMTM4LCAweDkxODAsIDB4MTAwMCwgMHgyMDA0LCAweDkwNWQsIDB4MDExMCwgMHhiODAwLCAweGQwYmMsCi0JMHgwOTBjLCAweDMzNGMsIDB4ODEwOCwgMHgxZjA0LCAweDBhYzcsIDB4NzA3ZiwgMHgwMDAwLCAweDcwODAsCi0JMHg5MDg0LCAweDAwZmYsIDB4NzA4MiwgMHg3MGIzLCAweDAwMDAsIDB4MDBiZSwgMHgwMGNlLCAweDAwMDUsCi0JMHgwMGI2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDAsIDB4OTA4NiwgMHgwMDAyLCAweDE5MDQsCi0JMHgwYjlkLCAweDcwYWMsIDB4OTA4NiwgMHhmZmZmLCAweDAxMzAsIDB4MDgwYywgMHgzMDAwLCAweDA4MGMsCi0JMHg5YWIxLCAweDA4MDQsIDB4MGI5ZCwgMHg3MGRjLCAweGQwYWMsIDB4MTExMCwgMHhkMDljLCAweDA1NTgsCi0JMHhkMDg0LCAweDA1NDgsIDB4MDAwNiwgMHgyMDAxLCAweDAxMDMsIDB4MjAwMywgMHgwMDJiLCAweDAwMGUsCi0JMHhkMDhjLCAweDA1MDgsIDB4MDgwYywgMHgzM2FmLCAweDExZDAsIDB4NzBlMCwgMHg5MDg2LCAweGZmZmYsCi0JMHgwMWIwLCAweDA4MGMsIDB4MzFiYywgMHgwODBjLCAweDlhYjEsIDB4NzBkYywgMHhkMDk0LCAweDE5MDQsCi0JMHgwYjlkLCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweGQ3ZTMsIDB4MDExMCwgMHgyMDExLCAweDAwMDMsCi0JMHg5MDFlLCAweDA4MGMsIDB4MzFmNiwgMHgwODBjLCAweDlhYjEsIDB4MDgwNCwgMHgwYjlkLCAweDcwZTQsCi0JMHg5MDA1LCAweDE5MDQsIDB4MGI5ZCwgMHg3MGE4LCAweDkwMDUsIDB4MTkwNCwgMHgwYjlkLCAweDcwZGMsCi0JMHhkMGE0LCAweDAxMTgsIDB4ZDBiNCwgMHgwOTA0LCAweDBiOWQsIDB4MDgwYywgMHg2YTYxLCAweDE5MDQsCi0JMHgwYjlkLCAweDA4MGMsIDB4NmFiNCwgMHgxOTA0LCAweDBiOWQsIDB4MDgwYywgMHg2YTliLCAweDAxYzAsCi0JMHgwMTU2LCAweDAwYzYsIDB4MjBhOSwgMHgwMDdmLCAweDkwMGUsIDB4MDAxNiwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTE4LCAweGI4MDAsIDB4ZDBlYywgMHgxMTM4LCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDBiM2QsCi0JMHgwMGNlLCAweDAxNWUsIDB4MDAyOCwgMHgwMDFlLCAweDAwY2UsIDB4MDE1ZSwgMHgwODA0LCAweDBiOWQsCi0JMHgwMDA2LCAweDIwMDEsIDB4MDEwMywgMHgyMDAzLCAweDAwMmIsIDB4MDAwZSwgMHgyMDExLCAweDE5YjQsCi0JMHgwODBjLCAweDBmOTYsIDB4MjAxMSwgMHgxOWNlLCAweDA4MGMsIDB4MGY5NiwgMHg3MDMwLCAweGMwOGMsCi0JMHg3MDMyLCAweDcwMDMsIDB4MDAwMywgMHg3MGFmLCAweGZmZmYsIDB4MDgwYywgMHgwZTc2LCAweDkwMDYsCi0JMHgwODBjLCAweDI4MWMsIDB4MDgwYywgMHgzM2FmLCAweDAxMTgsIDB4MDgwYywgMHg0ZGUxLCAweDAwNTAsCi0JMHgwMDM2LCAweDAwNDYsIDB4MjAxOSwgMHhmZmZmLCAweDIwMjEsIDB4MDAwNiwgMHgwODBjLCAweDRkZmIsCi0JMHgwMDRlLCAweDAwM2UsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MDgwYywgMHg3NjVhLCAweDAxNTAsCi0JMHgwODBjLCAweDc2MzcsIDB4NzgyOCwgMHgwMTE4LCAweDkwODQsIDB4ZTFmZiwgMHgwMDEwLCAweDkwODQsCi0JMHhmZmRmLCAweDc4MmEsIDB4MDBmZSwgMHgyMDAxLCAweDE5ZTksIDB4MjAwNCwgMHg5MDg2LCAweDAwMDUsCi0JMHgxMTIwLCAweDIwMTEsIDB4MDAwMCwgMHgwODBjLCAweGFhYmYsIDB4MjAxMSwgMHgwMDAwLCAweDA4MGMsCi0JMHhhYWM5LCAweDA4MGMsIDB4OWFiMSwgMHgwODBjLCAweDliZDMsIDB4MDEyZSwgMHgwMGJlLCAweDAwMDUsCi0JMHgwMDE2LCAweDAwNDYsIDB4MDBmNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDc5LCAweDAxMDAsCi0JMHg3OTA0LCAweDkxOGMsIDB4ZmZmZCwgMHg3OTA2LCAweDIwMDksIDB4MDBmNywgMHgwODBjLCAweDYwYWEsCi0JMHg3OTQwLCAweDkxOGMsIDB4MDAxMCwgMHg3OTQyLCAweDc5MjQsIDB4ZDFiNCwgMHgwMTEwLCAweDc4MjcsCi0JMHgwMDQwLCAweGQxOWMsIDB4MDExMCwgMHg3ODI3LCAweDAwMDgsIDB4MDAwNiwgMHgwMDM2LCAweDAxNTYsCi0JMHg3OTU0LCAweGQxYWMsIDB4MTkwNCwgMHgwYzJkLCAweDIwMDEsIDB4MTlhOCwgMHgyMDA0LCAweDkwMDUsCi0JMHgxNTE4LCAweDA4MGMsIDB4MmM0OSwgMHgxMTQ4LCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiYjEsCi0JMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyYjk0LCAweDAwYjgsIDB4MDgwYywgMHgyYzUxLCAweDExMzgsCi0JMHg5MDA2LCAweDA4MGMsIDB4MmJiMSwgMHg5MDA2LCAweDA4MGMsIDB4MmI5NCwgMHgwMDY4LCAweDA4MGMsCi0JMHgyYzU5LCAweDFkNTAsIDB4MjAwMSwgMHgxOTk4LCAweDIwMDQsIDB4ZDBmYywgMHgwMTA4LCAweDAwMjAsCi0JMHgwODBjLCAweDI5YmYsIDB4MDgwNCwgMHgwZDBkLCAweDA4MGMsIDB4NzY0OCwgMHgwMTQ4LCAweDA4MGMsCi0JMHg3NjVhLCAweDExMTgsIDB4MDgwYywgMHg3OTQxLCAweDAwNTAsIDB4MDgwYywgMHg3NjNmLCAweDBkZDAsCi0JMHgwODBjLCAweDc5M2MsIDB4MDgwYywgMHg3OTMyLCAweDA4MGMsIDB4NzU2MywgMHgwMDU4LCAweDA4MGMsCi0JMHg3NjM3LCAweDAxNDAsIDB4MjAwOSwgMHgwMGY4LCAweDA4MGMsIDB4NjBhYSwgMHg3ODQzLCAweDAwOTAsCi0JMHg3ODQzLCAweDAwMTAsIDB4MjBhOSwgMHgwOWM0LCAweDc4MjAsIDB4ZDA5YywgMHgxMTM4LCAweDA4MGMsCi0JMHg3NjM3LCAweDAxMzgsIDB4NzgyNCwgMHhkMGFjLCAweDE5MDQsIDB4MGQxMiwgMHgxZjA0LCAweDBjMGMsCi0JMHgwMDcwLCAweDc4MjQsIDB4MDgwYywgMHg3NjUxLCAweDAxMTgsIDB4ZDBhYywgMHgxOTA0LCAweDBkMTIsCi0JMHg5MDg0LCAweDE4MDAsIDB4MGQ5OCwgMHg3MDAzLCAweDAwMDEsIDB4MDgwNCwgMHgwZDEyLCAweDIwMDEsCi0JMHgwMDAxLCAweDA4MGMsIDB4MjgxYywgMHgwODA0LCAweDBkMjUsIDB4MjAwMSwgMHgxOWE4LCAweDIwMDQsCi0JMHg5MDA1LCAweDE1MTgsIDB4MDgwYywgMHgyYzQ5LCAweDExNDgsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsCi0JMHgyYmIxLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiOTQsIDB4MDBiOCwgMHgwODBjLCAweDJjNTEsCi0JMHgxMTM4LCAweDkwMDYsIDB4MDgwYywgMHgyYmIxLCAweDkwMDYsIDB4MDgwYywgMHgyYjk0LCAweDAwNjgsCi0JMHgwODBjLCAweDJjNTksIDB4MWQ1MCwgMHgyMDAxLCAweDE5OTgsIDB4MjAwNCwgMHhkMGZjLCAweDAxMDgsCi0JMHgwMDIwLCAweDA4MGMsIDB4MjliZiwgMHgwODA0LCAweDBkMGQsIDB4Nzg1MCwgMHg5MDg1LCAweDAwNDAsCi0JMHg3ODUyLCAweDc5MzgsIDB4Nzg1MCwgMHg5MDg0LCAweGZiY2YsIDB4Nzg1MiwgMHgwODBjLCAweDJjNjEsCi0JMHg5MDg1LCAweDIwMDAsIDB4Nzg1MiwgMHg3OTNhLCAweDIwYTksIDB4MDA0NiwgMHgxZDA0LCAweDBjNjYsCi0JMHgwODBjLCAweDg4ZjcsIDB4MWYwNCwgMHgwYzY2LCAweDc4NTAsIDB4OTA4NSwgMHgwNDAwLCAweDkwODQsCi0JMHhkZmJmLCAweDc4NTIsIDB4NzkzYSwgMHgwODBjLCAweDc2NDgsIDB4MDE0OCwgMHgwODBjLCAweDc2NWEsCi0JMHgxMTE4LCAweDA4MGMsIDB4Nzk0MSwgMHgwMDUwLCAweDA4MGMsIDB4NzYzZiwgMHgwZGQwLCAweDA4MGMsCi0JMHg3OTNjLCAweDA4MGMsIDB4NzkzMiwgMHgwODBjLCAweDc1NjMsIDB4MDAyMCwgMHgyMDA5LCAweDAwZjgsCi0JMHgwODBjLCAweDYwYWEsIDB4MjBhOSwgMHgwMDI4LCAweGEwMDEsIDB4MWYwNCwgMHgwYzhjLCAweDc4NTAsCi0JMHg5MDg1LCAweDE0MDAsIDB4Nzg1MiwgMHgwODBjLCAweDc2MzcsIDB4MDEyMCwgMHg3ODQzLCAweDAwOTAsCi0JMHg3ODQzLCAweDAwMTAsIDB4MjAyMSwgMHhlNjc4LCAweDIwMTksIDB4ZWE2MCwgMHgwZDBjLCAweDg4ZjcsCi0JMHg3ODIwLCAweGQwOWMsIDB4MTU4OCwgMHgwODBjLCAweDc2MzcsIDB4MDkwNCwgMHgwY2YyLCAweDc4MjQsCi0JMHhkMGFjLCAweDE5MDQsIDB4MGQxMiwgMHgwODBjLCAweDc2NWEsIDB4MTUzMCwgMHgwMDQ2LCAweDIwMjEsCi0JMHgwMzIwLCAweDg0MjEsIDB4MWRmMCwgMHgwMDRlLCAweDc4MjcsIDB4MTgwMCwgMHgwODBjLCAweDJjNjEsCi0JMHg3ODI0LCAweDkwODQsIDB4MTgwMCwgMHgxMTY4LCAweDk0ODQsIDB4MGZmZiwgMHgxMTQwLCAweDIwMDEsCi0JMHgxODEwLCAweDIwMDQsIDB4OTA4NCwgMHg5MDAwLCAweDAxMTAsIDB4MDgwYywgMHgwZDMzLCAweDg0MjEsCi0JMHgxMTU4LCAweDFkMDQsIDB4MGNjZCwgMHgwODBjLCAweDg4ZjcsIDB4MDgwYywgMHg3OTNjLCAweDA4MGMsCi0JMHg3OTMyLCAweDcwMDMsIDB4MDAwMSwgMHgwNGYwLCAweDgzMTksIDB4MTk0MCwgMHgxZDA0LCAweDBjZGEsCi0JMHgwODBjLCAweDg4ZjcsIDB4MjAwOSwgMHgxOTliLCAweDIxMDQsIDB4OTAwNSwgMHgwMTE4LCAweDgwMDEsCi0JMHgyMDBhLCAweDExNzgsIDB4MjAwYiwgMHgwMDBhLCAweDc4MjcsIDB4MDA0OCwgMHgyMGE5LCAweDAwMDIsCi0JMHgwODBjLCAweDJjNDIsIDB4NzkyNCwgMHgwODBjLCAweDJjNjEsIDB4ZDE5YywgMHgwMTEwLCAweDA4MGMsCi0JMHgyYjgyLCAweDAwZDgsIDB4MDgwYywgMHg3NjQ4LCAweDExNDAsIDB4OTRhMiwgMHgwM2U4LCAweDExMjgsCi0JMHgwODBjLCAweDc2MGYsIDB4NzAwMywgMHgwMDAxLCAweDAwYTgsIDB4NzgyNywgMHgxODAwLCAweDA4MGMsCi0JMHgyYzYxLCAweDc4MjQsIDB4MDgwYywgMHg3NjUxLCAweDAxMTAsIDB4ZDBhYywgMHgxMTU4LCAweDkwODQsCi0JMHgxODAwLCAweDA5NTAsIDB4NzAwMywgMHgwMDAxLCAweDAwMjgsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsCi0JMHgyODFjLCAweDAwNzgsIDB4MjAwOSwgMHgxODBjLCAweDIxMGMsIDB4ZDE5YywgMHgxMTIwLCAweDc5MDQsCi0JMHg5MThkLCAweDAwMDIsIDB4NzkwNiwgMHg3ODI3LCAweDAwNDgsIDB4NzgyOCwgMHg5MDg1LCAweDAwMjgsCi0JMHg3ODJhLCAweDc4NTAsIDB4OTA4NSwgMHgwNDAwLCAweDc4NTIsIDB4MjAwMSwgMHgxOWE4LCAweDIwMDMsCi0JMHgwMDAwLCAweDkwMDYsIDB4NzhmMiwgMHgwMTVlLCAweDAwM2UsIDB4MDAwZSwgMHgwMTJlLCAweDAwZmUsCi0JMHgwMDRlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDAzNiwgMHgwMDQ2LCAweDAwYjYsCi0JMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDAxNTYsIDB4MDA2OSwgMHgwZDBjLCAweDg4ZjcsCi0JMHgwMTVlLCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMDRlLCAweDAwM2UsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTg5ZSwgMHg3MDA0LCAweDkwODYsCi0JMHgwMDAxLCAweDExMTAsIDB4MDgwYywgMHgzNGRkLCAweDAwZWUsIDB4MDAwNSwgMHgwMDA1LCAweDJhNzAsCi0JMHgyMDYxLCAweDE5YWMsIDB4MjA2MywgMHgwMDAzLCAweDYwMDcsIDB4MDAwMywgMHg2MDBiLCAweDAwMTQsCi0JMHg2MDBmLCAweDAxMzcsIDB4MjAwMSwgMHgxOTdjLCAweDkwMGUsIDB4MjEwMiwgMHg3MTk2LCAweDIwMDEsCi0JMHgwMTAwLCAweDIwMDQsIDB4OTA4MiwgMHgwMDAyLCAweDAyMTgsIDB4NzA1ZiwgMHhmZmZmLCAweDAwMDgsCi0JMHg3MTVlLCAweDcwNjcsIDB4ZmZmZiwgMHg3MTdlLCAweDcxODIsIDB4MDgwYywgMHhkNTJiLCAweDcwZWIsCi0JMHgwMGMwLCAweDIwNjEsIDB4MTk2YywgMHg2MDAzLCAweDA5MDksIDB4NjEwNiwgMHg2MDBiLCAweDg4MDAsCi0JMHg2MDBmLCAweDAyMDAsIDB4NjAxMywgMHgwMGZmLCAweDYwMTcsIDB4MDAxZiwgMHg2MTFhLCAweDYwMWYsCi0JMHgwN2QwLCAweDIwNjEsIDB4MTk3NCwgMHg2MDAzLCAweDgwMDAsIDB4NjEwNiwgMHg2MTBhLCAweDYwMGYsCi0JMHgwMjAwLCAweDYwMTMsIDB4MDBmZiwgMHg2MTE2LCAweDYwMWIsIDB4MDAwMSwgMHg2MTFlLCAweDIwNjEsCi0JMHgxOTg5LCAweDYwMDMsIDB4NTE0YywgMHg2MDA3LCAweDRmNDcsIDB4NjAwYiwgMHg0OTQzLCAweDYwMGYsCi0JMHgyMDIwLCAweDIwMDEsIDB4MTgyYywgMHgyMTAyLCAweDAwMDUsIDB4OTAxNiwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTc4LCAweGI4MDQsIDB4OTBjNCwgMHgwMGZmLCAweDk4YzYsIDB4MDAwNiwgMHgwMTI4LCAweDkwYzQsCi0JMHhmZjAwLCAweDk4YzYsIDB4MDYwMCwgMHgxMTIwLCAweDkxODYsIDB4MDA4MCwgMHgwMTA4LCAweDgyMTAsCi0JMHg4MTA4LCAweDkxODYsIDB4MDgwMCwgMHgxZDUwLCAweDIyMDgsIDB4MDAwNSwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDc5LCAweDAwMDAsIDB4MDAwZSwgMHgwMGY2LCAweDAwMTAsIDB4MjA5MSwgMHg4MDAwLCAweDBlMDQsCi0JMHgwZGM3LCAweDAwMDYsIDB4MDAxNiwgMHgyMDAxLCAweDgwMDIsIDB4MDAwNiwgMHgyMDc5LCAweDAwMDAsCi0JMHgwMDBlLCAweDc4ODIsIDB4NzgzNiwgMHgwMDFlLCAweDc5OGUsIDB4MDAwZSwgMHg3ODhhLCAweDAwMGUsCi0JMHg3ODg2LCAweDM5MDAsIDB4Nzg5YSwgMHgwMGQ2LCAweDIwNjksIDB4MDMwMCwgMHg2ODE4LCAweDc4YWUsCi0JMHg2ODFjLCAweDc4YjIsIDB4MjAwMSwgMHgxYTA5LCAweDIwMDQsIDB4NzhiNiwgMHgyMDAxLCAweDFhODYsCi0JMHgyMDA0LCAweDc4YmEsIDB4NjgwOCwgMHg3OGJlLCAweDAwZGUsIDB4NzgzMywgMHgwMDEyLCAweDIwOTEsCi0JMHg1MDAwLCAweDAxNTYsIDB4MDBkNiwgMHgwMDM2LCAweDAwMjYsIDB4MjA3OSwgMHgwMzAwLCAweDIwNjksCi0JMHgxYWE5LCAweDdhMDgsIDB4MjI2YSwgMHgyMDY5LCAweDFhYWEsIDB4N2ExOCwgMHgyMjZhLCAweDhkNjgsCi0JMHg3YTFjLCAweDIyNmEsIDB4NzgyYywgMHgyMDE5LCAweDFhYjcsIDB4MjAxYSwgMHgyMDE5LCAweDFhYmEsCi0JMHg5MDE2LCAweDc4MDgsIDB4ZDA5YywgMHgwMTY4LCAweDc4MjAsIDB4MjAxYSwgMHg4MjEwLCAweDgzMTgsCi0JMHg5Mzg2LCAweDFhY2YsIDB4MDEwOCwgMHgwY2E4LCAweDc4MDgsIDB4ZDA5YywgMHgwMTEwLCAweDIwMTEsCi0JMHhkZWFkLCAweDIwMTksIDB4MWFiOCwgMHg3ODJjLCAweDIwMWEsIDB4ODMxOCwgMHgyMjFhLCAweDc4MDMsCi0JMHgwMDAwLCAweDIwNjksIDB4MWE4OSwgMHg5MDFlLCAweDIwYTksIDB4MDAyMCwgMHg3YjI2LCAweDdhMjgsCi0JMHgyMjZhLCAweDhkNjgsIDB4ODMxOCwgMHgxZjA0LCAweDBlMjYsIDB4MDAyZSwgMHgwMDNlLCAweDAwZGUsCi0JMHgwMTVlLCAweDIwNzksIDB4MTgwMCwgMHg3ODAzLCAweDAwMDUsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsCi0JMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwgMHgwMTgwLCAweDIwMDEsIDB4MWExYywgMHgyMDA0LCAweDkwMDUsCi0JMHgwMTI4LCAweDIwMDEsIDB4MDA4YiwgMHgyMDA0LCAweGQwZmMsIDB4MGRkOCwgMHgyMDAxLCAweDAwOGEsCi0JMHgyMDAzLCAweDAwMDIsIDB4MjAwMywgMHgxMDAxLCAweDA4MGMsIDB4NTdlNCwgMHgxMTA4LCAweDAwOTksCi0JMHgwY2Q4LCAweDAwMDUsIDB4OTE4YywgMHgwM2ZmLCAweDIwMDEsIDB4MDAwMywgMHgyMDA0LCAweDkwODQsCi0JMHgwNjAwLCAweDExMTgsIDB4OTE4ZCwgMHgyODAwLCAweDAwMTAsIDB4OTE4ZCwgMHgyMDAwLCAweDIwMDEsCi0JMHgwMTdmLCAweDIxMDIsIDB4MDAwNSwgMHgwMDI2LCAweDAxMjYsIDB4MjAxMSwgMHgwMDgwLCAweDA4MGMsCi0JMHgwZWVlLCAweDIwYTksIDB4MDkwMCwgMHgwODBjLCAweDBmMGYsIDB4MjAxMSwgMHgwMDQwLCAweDA4MGMsCi0JMHgwZWVlLCAweDIwYTksIDB4MDkwMCwgMHgwODBjLCAweDBmMGYsIDB4MGM3OCwgMHgwMDI2LCAweDA4MGMsCi0JMHgwZWZiLCAweDExMTgsIDB4MjAxMSwgMHgwMDQwLCAweDAwOTgsIDB4MjAxMSwgMHgwMTBlLCAweDIyMTQsCi0JMHg5Mjk0LCAweDAwMDcsIDB4OTI5NiwgMHgwMDA3LCAweDAxMTgsIDB4MjAxMSwgMHhhODgwLCAweDAwMTAsCi0JMHgyMDExLCAweDY4NDAsIDB4ZDBlNCwgMHg3MGVmLCAweDAwMDAsIDB4MTEyMCwgMHg3MGVmLCAweDBmYTAsCi0JMHgwODBjLCAweDBmMDAsIDB4MDAyZSwgMHgwMDA1LCAweDAwMjYsIDB4MDgwYywgMHgwZWZiLCAweDAxMjgsCi0JMHhkMGE0LCAweDExMzgsIDB4MjAxMSwgMHhjZGQ1LCAweDAwMTAsIDB4MjAxMSwgMHgwMDgwLCAweDA4MGMsCi0JMHgwZjAwLCAweDAwMmUsIDB4MDAwNSwgMHgwMDI2LCAweDcwZWYsIDB4MDAwMCwgMHgwODBjLCAweDBlZmIsCi0JMHgxMTQ4LCAweDA4MGMsIDB4MmM1OSwgMHgxMTE4LCAweDIwMTEsIDB4ODQ4NCwgMHgwMDU4LCAweDIwMTEsCi0JMHg4MjgyLCAweDAwNDAsIDB4MDgwYywgMHgyYzU5LCAweDExMTgsIDB4MjAxMSwgMHhjZGM1LCAweDAwMTAsCi0JMHgyMDExLCAweGNhYzIsIDB4MDgwYywgMHgwZjAwLCAweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwMDYsCi0JMHgyMDcxLCAweDE4MDAsIDB4ZDBiNCwgMHg3MGU4LCAweDExMTAsIDB4YzBlNCwgMHgwMDQ4LCAweDAwMDYsCi0JMHgzYjAwLCAweDkwODQsIDB4ZmYzZiwgMHgyMGQ4LCAweDAwMGUsIDB4NzBlZiwgMHgwMDAwLCAweGMwZTUsCi0JMHgwMDc5LCAweDAwMGUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweGQwZTQsCi0JMHg3MGU4LCAweDExMTAsIDB4YzBkYywgMHgwMDA4LCAweGMwZGQsIDB4MDAxMSwgMHgwMGVlLCAweDAwMDUsCi0JMHg3MGVhLCAweDcwMDAsIDB4OTA4NCwgMHgwMDA3LCAweDAwMGIsIDB4MDAwNSwgMHgwZWJkLCAweDBlOTQsCi0JMHgwZTk0LCAweDBlNzYsIDB4MGVhMywgMHgwZTk0LCAweDBlOTQsIDB4MGVhMywgMHgwMDE2LCAweDNiMDgsCi0JMHgzYTAwLCAweDkxMDQsIDB4OTE4ZCwgMHgwMGMwLCAweDIxZDgsIDB4OTA4NCwgMHhmZjNmLCAweDkyMDUsCi0JMHgyMGQwLCAweDAwMWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4M2EsIDB4MjAwNCwgMHhkMGRjLCAweDAwMDUsCi0JMHg5ZTg2LCAweDE4MDAsIDB4MTkwYywgMHgwZGM1LCAweDcwZTgsIDB4ZDBlNCwgMHgwMTA4LCAweGMyZTUsCi0JMHg3MmVhLCAweGQwZTQsIDB4MTExOCwgMHg5Mjk0LCAweDAwYzAsIDB4MGMwMSwgMHgwMDA1LCAweDFkMDQsCi0JMHgwZjBmLCAweDIwOTEsIDB4NjAwMCwgMHgxZjA0LCAweDBmMGYsIDB4MDAwNSwgMHg4OTBlLCAweDgxMGUsCi0JMHg4MTBmLCAweDkxOTQsIDB4MDAzZiwgMHg5MThjLCAweGZmYzAsIDB4MDAwNSwgMHgwMDA2LCAweDIyMDAsCi0JMHg5MTRkLCAweDg5NGYsIDB4ODk0ZCwgMHg4OTRkLCAweDAwMGUsIDB4MDAwNSwgMHgwMWQ2LCAweDAxNDYsCi0JMHgwMDM2LCAweDAwOTYsIDB4MjA2MSwgMHgxODhkLCAweDYwMGIsIDB4MDAwMCwgMHg2MDBmLCAweDAwMDAsCi0JMHg2MDAzLCAweDAwMDAsIDB4NjAwNywgMHgwMDAwLCAweDIwMDksIDB4ZmZjMCwgMHgyMTA1LCAweDAwMDYsCi0JMHgyMDAxLCAweGFhYWEsIDB4MjAwZiwgMHgyMDE5LCAweDU1NTUsIDB4OTAxNiwgMHgyMDQ5LCAweDBiZmYsCi0JMHhhYjAyLCAweGEwMDEsIDB4YTAwMSwgMHhhODAwLCAweDkzMDYsIDB4MTEzOCwgMHgyMTA1LCAweDkzMDYsCi0JMHgwMTIwLCAweDgyMTAsIDB4OTljOCwgMHgwNDAwLCAweDBjOTgsIDB4MDAwZSwgMHgyMDBmLCAweDIwMDEsCi0JMHgxODlkLCAweDkyOGEsIDB4MDAwZSwgMHgxNjM4LCAweDkyOGEsIDB4MDAwNiwgMHgyMDExLCAweDAwMDYsCi0JMHgxMjEwLCAweDIwMTEsIDB4MDAwMCwgMHgyMjAyLCAweDkwMDYsIDB4MjAwOCwgMHg4MmZmLCAweDAxYjAsCi0JMHg4MjAwLCAweDYwMGEsIDB4NjAwZiwgMHhmZmZmLCAweDYwMDMsIDB4MDAwMiwgMHg2MDA3LCAweDAwMDAsCi0JMHgwMDI2LCAweDIwMTksIDB4MDAxMCwgMHg5MjgwLCAweDAwMDEsIDB4MjBlOCwgMHgyMWEwLCAweDIxYTgsCi0JMHg0MTA0LCAweDgzMTksIDB4MWRlMCwgMHg4MjExLCAweDFkYTAsIDB4MDAyZSwgMHgwMDllLCAweDAwM2UsCi0JMHgwMTRlLCAweDAxZGUsIDB4MDAwNSwgMHgyMDExLCAweDAwMGUsIDB4MDhlOCwgMHgwMDE2LCAweDAwMjYsCi0JMHgwMDk2LCAweDMzNDgsIDB4MDgwYywgMHgwZjE2LCAweDIxMDAsIDB4OTMwMCwgMHgyMDk4LCAweDIyZTAsCi0JMHgwMDllLCAweDAwMmUsIDB4MDAxZSwgMHgwMDM2LCAweDM1MTgsIDB4MjBhOSwgMHgwMDAxLCAweDQwMDIsCi0JMHg4MDA3LCAweDQwMDQsIDB4ODMxOSwgMHgxZGQ4LCAweDAwM2UsIDB4MDAwNSwgMHgyMGU5LCAweDAwMDEsCi0JMHg3MWI4LCAweDgxZmYsIDB4MTFjMCwgMHg5MDA2LCAweDIwMDksIDB4MDIwMCwgMHgyMGE5LCAweDAwMDIsCi0JMHg5Mjk4LCAweDAwMTgsIDB4MjNhMCwgMHg0MDAxLCAweDIwMDksIDB4MDcwMCwgMHgyMGE5LCAweDAwMDIsCi0JMHg5Mjk4LCAweDAwMDgsIDB4MjNhMCwgMHg0MDAxLCAweDcwN2MsIDB4ODAwNywgMHg3MTgwLCAweDgxMGYsCi0JMHgyMGE5LCAweDAwMDIsIDB4NDAwMSwgMHg5Mjk4LCAweDAwMGMsIDB4MjNhMCwgMHg5MDBlLCAweDA4MGMsCi0JMHgwZGE1LCAweDIwMDEsIDB4MDAwMCwgMHg4MTBmLCAweDIwYTksIDB4MDAwMiwgMHg0MDAxLCAweDAwMDUsCi0JMHg4OWZmLCAweDAxNDAsIDB4YTgwNCwgMHhhODA3LCAweDAwMDAsIDB4MDAwNiwgMHgwODBjLCAweDEwNDAsCi0JMHgwMDllLCAweDBjYjAsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDEwYjksCi0JMHgwOTBjLCAweDBkYzUsIDB4MDBlZSwgMHgwMDA1LCAweDAwODYsIDB4MDBlNiwgMHgwMDA2LCAweDAwMjYsCi0JMHgwMDM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzksIDB4MjA3MSwgMHgxODAwLCAweDczYzAsCi0JMHg3MDJjLCAweDkwMTYsIDB4OTA0NSwgMHgwMTU4LCAweDgyMTAsIDB4OTkwNiwgMHgwOTBjLCAweDBkYzUsCi0JMHgyMzAwLCAweDkyMDIsIDB4MDEyMCwgMHgxYTBjLCAweDBkYzUsIDB4YTAwMCwgMHgwYzk4LCAweDAxMmUsCi0JMHgwMDNlLCAweDAwMmUsIDB4MDAwZSwgMHgwMGVlLCAweDAwOGUsIDB4MDAwNSwgMHgwMDg2LCAweDAwZTYsCi0JMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4MTkxMCwgMHg3MDEwLCAweDkwMDUsCi0JMHgwMTQwLCAweDcwMTgsIDB4OTA0NSwgMHgwMTI4LCAweDk5MDYsIDB4MDkwYywgMHgwZGM1LCAweGEwMDAsCi0JMHgwY2M4LCAweDAxMmUsIDB4MDAwZSwgMHgwMGVlLCAweDAwOGUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsCi0JMHgxODAwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwYzAsIDB4ODAwMSwgMHgwMjcwLCAweDcwYzIsCi0JMHg3MDJjLCAweDIwNDgsIDB4OTA4NSwgMHgwMDAxLCAweGE4MDAsIDB4NzAyZSwgMHhhODAzLCAweDAwMDAsCi0JMHhhODA3LCAweDAwMDAsIDB4MDEyZSwgMHgwMGVlLCAweDAwMDUsIDB4OTA0ZSwgMHgwY2Q4LCAweDAwZTYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzBjMCwgMHg5MGNhLCAweDAwMjAsCi0JMHgwMjY4LCAweDgwMDEsIDB4NzBjMiwgMHg3MDJjLCAweDIwNDgsIDB4YTgwMCwgMHg3MDJlLCAweGE4MDMsCi0JMHgwMDAwLCAweGE4MDcsIDB4MDAwMCwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHg5MDRlLCAweDBjZDgsCi0JMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwMTYsIDB4ODkwZSwgMHg4MTBlLCAweDgxMGYsCi0JMHg5MTg0LCAweDAwM2YsIDB4YTg2MiwgMHg5MTg0LCAweGZmYzAsIDB4YTg1ZSwgMHgwMDFlLCAweDAwMjAsCi0JMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4MTgwMCwgMHg3MDJjLCAweGE4MDIsCi0JMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwgMHg4MDAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDAxMmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4MjA3MSwgMHgxODAwLCAweDkwMjYsIDB4MjAwOSwgMHgwMDAwLCAweDIwNDksCi0JMHgwNDAwLCAweDI5MDAsIDB4NzAyZSwgMHg4OTQwLCAweDI4MDAsIDB4YTgwMiwgMHhhOTVlLCAweGE4NjMsCi0JMHgwMDAxLCAweDg0MjAsIDB4OTg4NiwgMHgwNDQwLCAweDAxMjAsIDB4Mjg0OCwgMHg5MTg4LCAweDAwNDAsCi0JMHgwYzkwLCAweDIwNzEsIDB4MTg4ZCwgMHg3MDAwLCAweDkwMDUsIDB4MTFhMCwgMHgyMDAxLCAweDA1MzQsCi0JMHhhODAyLCAweDIwNDgsIDB4MjAwOSwgMHg0ZDAwLCAweDg5NDAsIDB4MjgwMCwgMHhhODAyLCAweGE5NWUsCi0JMHhhODYzLCAweDAwMDEsIDB4ODQyMCwgMHg5ODg2LCAweDA4MDAsIDB4MDEyMCwgMHgyODQ4LCAweDkxODgsCi0JMHgwMDQwLCAweDBjOTAsIDB4MjA3MSwgMHgxODhkLCAweDcxMDQsIDB4NzIwMCwgMHg4MmZmLCAweDAxZDAsCi0JMHg3MzA4LCAweDgzMTgsIDB4ODMxZiwgMHg4MzFiLCAweDgzMWIsIDB4NzMxMiwgMHg4MzE5LCAweDIwMDEsCi0JMHgwODAwLCAweGE4MDIsIDB4MjA0OCwgMHg4OTAwLCAweGE4MDIsIDB4MjA0MCwgMHhhOTVlLCAweGFhNjIsCi0JMHg4NDIwLCAweDIzMDAsIDB4OTkwNiwgMHgwMTMwLCAweDI4NDgsIDB4OTE4OCwgMHgwMDQwLCAweDkyOTEsCi0JMHgwMDAwLCAweDBjODgsIDB4YTgwMywgMHgwMDAwLCAweDIwNzEsIDB4MTgwMCwgMHg3NGJlLCAweDc0YzIsCi0JMHgwMDA1LCAweDAwZTYsIDB4MDAxNiwgMHg5OTg0LCAweGZjMDAsIDB4MDFlOCwgMHg5MDhjLCAweGY4MDAsCi0JMHgxMTY4LCAweDk5ODIsIDB4MDQwMCwgMHgwMmI4LCAweDk5ODIsIDB4MDQ0MCwgMHgwMjc4LCAweDk5ODIsCi0JMHgwNTM0LCAweDAyODgsIDB4OTk4MiwgMHgwODAwLCAweDEyNzAsIDB4MDA0MCwgMHg5OTgyLCAweDA4MDAsCi0JMHgwMjUwLCAweDIwNzEsIDB4MTg4ZCwgMHg3MDEwLCAweDk5MDIsIDB4MTIyOCwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDFlLCAweDAwZWUsIDB4MDAwNSwgMHg5MDA2LCAweDBjZDgsIDB4MDBlNiwgMHgyMDcxLCAweDFhMWIsCi0JMHg3MDA3LCAweDAwMDAsIDB4OTAwNiwgMHg3MDFlLCAweDcwMjIsIDB4NzAwMiwgMHgyMDcxLCAweDAwMDAsCi0JMHg3MDEwLCAweDkwODUsIDB4ODA0NCwgMHg3MDEyLCAweDIwNzEsIDB4MDA4MCwgMHg5MDA2LCAweDIwYTksCi0JMHgwMDQwLCAweDcwMjIsIDB4MWYwNCwgMHgxMGYxLCAweDcwMmIsIDB4MDAyMCwgMHgwMGVlLCAweDAwMDUsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMGU2LCAweGEwNmYsIDB4MDAwMCwgMHgyMDcxLCAweDFhMWIsCi0JMHg3MDFjLCAweDkwODgsIDB4MWEyNSwgMHgyODBhLCAweDgwMDAsIDB4OTA4NCwgMHgwMDNmLCAweDcwMWUsCi0JMHg3MTIwLCAweDkxMDYsIDB4MDkwYywgMHgwZGM1LCAweDcwMDQsIDB4OTAwNSwgMHgxMTI4LCAweDAwZjYsCi0JMHgyMDc5LCAweDAwODAsIDB4MDBhOSwgMHgwMGZlLCAweDAwZWUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDBlNiwgMHgyMDcxLCAweDFhMWIsIDB4NzAwNCwgMHg5MDA1LCAweDExMjgsCi0JMHgwMGY2LCAweDIwNzksIDB4MDA4MCwgMHgwMDIxLCAweDAwZmUsIDB4MDBlZSwgMHgwMTJlLCAweDAwMDUsCi0JMHg3MDA0LCAweDkwODYsIDB4MDAwMCwgMHgxMTEwLCAweDcwMDcsIDB4MDAwNiwgMHg3MDAwLCAweDAwMDIsCi0JMHgxMTNhLCAweDEyYmQsIDB4MTEzOCwgMHgxMTM4LCAweDEyYjEsIDB4MTJiMSwgMHgxMmIxLCAweDEyYjEsCi0JMHgwODBjLCAweDBkYzUsIDB4NzAxYywgMHg3MTIwLCAweDkxMDYsIDB4MTE0OCwgMHg3OTJjLCAweDkxODQsCi0JMHgwMDAxLCAweDExMjAsIDB4ZDFmYywgMHgxMTEwLCAweDcwMDcsIDB4MDAwMCwgMHgwMDA1LCAweDAwOTYsCi0JMHg5MTgwLCAweDFhMjUsIDB4MjAwNCwgMHg3MDBhLCAweDIwNDgsIDB4ODEwOCwgMHg5MThjLCAweDAwM2YsCi0JMHg3MTIyLCAweDc4MmIsIDB4MDAyNiwgMHhhODhjLCAweDc4MDIsIDB4YTg5MCwgMHg3ODA2LCAweGE4OTQsCi0JMHg3ODBhLCAweGE4OTgsIDB4NzgwZSwgMHhhODc4LCAweDcwMGUsIDB4YTg3MCwgMHg3MDE2LCAweGE4NzQsCi0JMHg3MDFhLCAweGE4NjgsIDB4MDA5ZSwgMHhkMDg0LCAweDAxMjAsIDB4NzAwNywgMHgwMDAxLCAweDAwMjksCi0JMHgwMDA1LCAweDcwMDcsIDB4MDAwMiwgMHgwMGIxLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDcxMGMsCi0JMHgyMDExLCAweDAwNDAsIDB4OTE4MiwgMHgwMDQwLCAweDEyMTAsIDB4MjExMCwgMHg5MDA2LCAweDcwMGUsCi0JMHg3MjEyLCAweDgyMDMsIDB4NzgxMiwgMHg3ODJiLCAweDAwMjAsIDB4NzgyYiwgMHgwMDQxLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDcwMTQsCi0JMHgyMGUwLCAweDcwMTgsIDB4MjA5OCwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMDg4LCAweDc4MmIsCi0JMHgwMDI2LCAweDcxMGMsIDB4MjAxMSwgMHgwMDQwLCAweDkxODIsIDB4MDA0MCwgMHgxMjEwLCAweDIxMTAsCi0JMHg5MDA2LCAweDcwMGUsIDB4MjJhOCwgMHg0MDA2LCAweDgyMDMsIDB4NzgxMiwgMHg3ODJiLCAweDAwMjAsCi0JMHgzMzAwLCAweDcwMWEsIDB4NzgyYiwgMHgwMDAxLCAweDAxNWUsIDB4MDE0ZSwgMHgwMTNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMDUsIDB4MjAwOSwgMHgxYTFiLCAweDIxMDQsIDB4YzA5NSwgMHgyMDBhLCAweDA4MGMsCi0JMHgxMTE3LCAweDAwMDUsIDB4MDAxNiwgMHgwMGU2LCAweDIwNzEsIDB4MWExYiwgMHgwMGY2LCAweDIwNzksCi0JMHgwMDgwLCAweDc5MmMsIDB4ZDFiYywgMHgxOTBjLCAweDBkYmUsIDB4NzgyYiwgMHgwMDAyLCAweGQxZmMsCi0JMHgwMTIwLCAweDkxOGMsIDB4MDcwMCwgMHg3MDA0LCAweDAwMjMsIDB4MDBmZSwgMHgwMGVlLCAweDAwMWUsCi0JMHgwMDA1LCAweDExMjgsIDB4MTFkMCwgMHgxMjA0LCAweDEyZGMsIDB4MGRjNSwgMHgxMmY3LCAweDBkYzUsCi0JMHg5MThjLCAweDA3MDAsIDB4MTU1MCwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHg3MDE0LCAweDIwZTgsCi0JMHg3MDE4LCAweDIwYTAsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksIDB4MDA4OCwgMHg3ODJiLCAweDAwNDAsCi0JMHg3MDEwLCAweDIwYTgsIDB4NDAwNSwgMHgzNDAwLCAweDcwMWEsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsCi0JMHg3MDBjLCAweDkwMDUsIDB4MDU3OCwgMHg3ODAwLCAweDc4MDIsIDB4NzgwNCwgMHg3ODA2LCAweDA4MGMsCi0JMHgxMTZkLCAweDAwMDUsIDB4NzAwOCwgMHgwMDk2LCAweDIwNDgsIDB4YTg2ZiwgMHgwMTAwLCAweDAwOWUsCi0JMHg3MDA3LCAweDAwMDAsIDB4MDgwYywgMHgxMTI4LCAweDAwMDUsIDB4NzAwOCwgMHgwMDk2LCAweDIwNDgsCi0JMHhhODZmLCAweDAyMDAsIDB4MDA5ZSwgMHgwY2EwLCAweDkxOGMsIDB4MDcwMCwgMHgxMTUwLCAweDcwMGMsCi0JMHg5MDA1LCAweDAxODAsIDB4NzgwMCwgMHg3ODAyLCAweDc4MDQsIDB4NzgwNiwgMHgwODBjLCAweDExODIsCi0JMHgwMDA1LCAweDcwMDgsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NmYsIDB4MDIwMCwgMHgwMDllLCAweDcwMDcsCi0JMHgwMDAwLCAweDAwODAsIDB4MDA5NiwgMHg3MDA4LCAweDIwNDgsIDB4NzgwMCwgMHhhODhlLCAweDc4MDQsCi0JMHhhODkyLCAweDc4MDgsIDB4YTg5NiwgMHg3ODBjLCAweGE4OWEsIDB4YTg2ZiwgMHgwMTAwLCAweDAwOWUsCi0JMHg3MDA3LCAweDAwMDAsIDB4MDA5NiwgMHgwMGQ2LCAweDcwMDgsIDB4MjA0OCwgMHgyMDAxLCAweDE4YjksCi0JMHgyMDA0LCAweDk5MDYsIDB4MTEyOCwgMHhhODljLCAweDA4MGYsIDB4MDBkZSwgMHgwMDllLCAweDAwYTAsCi0JMHgwMGRlLCAweDAwOWUsIDB4MDA5NiwgMHgwMGQ2LCAweDcwMDgsIDB4MjA0OCwgMHgwMDgxLCAweDAxNTAsCi0JMHhhODljLCAweDAwODYsIDB4Mjk0MCwgMHgwODBmLCAweDAwOGUsIDB4MDBkZSwgMHgwMDllLCAweDA4MGMsCi0JMHgxMTE3LCAweDAwMDUsIDB4MDBkZSwgMHgwMDllLCAweDA4MGMsIDB4MTExNywgMHgwMDA1LCAweGE4YTgsCi0JMHhkMDhjLCAweDAwMDUsIDB4MDA5NiwgMHhhMGEwLCAweDkwNGQsIDB4MDkwYywgMHgwZGM1LCAweGEwNmMsCi0JMHg5MDhlLCAweDAxMDAsIDB4MDEzMCwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsCi0JMHg0MDAyLCAweDA4MGMsIDB4NmU5MiwgMHhhMDlmLCAweDAwMDAsIDB4YTBhMywgMHgwMDAwLCAweDI4NDgsCi0JMHgwODBjLCAweDEwNDAsIDB4MDA5ZSwgMHgwMDA1LCAweDAwYTYsIDB4YTBhMCwgMHg5MDRkLCAweDA5MGMsCi0JMHgwZGM1LCAweGEwNmMsIDB4OTA4ZSwgMHgwMTAwLCAweDAxMjgsIDB4YTg3YiwgMHgwMDAxLCAweGE4ODMsCi0JMHgwMDAwLCAweDAwYzAsIDB4YTgwYywgMHgyMDUwLCAweGIwMDQsIDB4OTAwNSwgMHgwMTk4LCAweGE4MGUsCi0JMHgyMDUwLCAweDgwMDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwOGMsIDB4MDAzZiwgMHg5MDg0LCAweGZmYzAsCi0JMHg5MDgwLCAweDAwMDIsIDB4YTA3NiwgMHhhMTcyLCAweGIwMDAsIDB4YTA3YSwgMHgyODEwLCAweDA4MGMsCi0JMHgxMGY4LCAweDAwZTgsIDB4YTk3YywgMHhhODk0LCAweDAwMTYsIDB4MDAwNiwgMHgwODBjLCAweDZlOTIsCi0JMHgwMDBlLCAweDAwMWUsIDB4ZDFmYywgMHgxMTM4LCAweGQxZjQsIDB4MDEyOCwgMHgwMGM2LCAweDIwNjAsCi0JMHgwODBjLCAweGIyZDMsIDB4MDBjZSwgMHg3MDA4LCAweDIwNDgsIDB4YTg5ZiwgMHgwMDAwLCAweGE4YTMsCi0JMHgwMDAwLCAweDA4MGMsIDB4MTA0MCwgMHg3MDA3LCAweDAwMDAsIDB4MDgwYywgMHgxMTE3LCAweDAwYWUsCi0JMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDc4MmIsIDB4MTAwMSwgMHg3MDA3LCAweDAwMDUsCi0JMHg3MDAwLCAweGMwOTQsIDB4NzAwMiwgMHgwMTJlLCAweDAwMDUsIDB4MDA5NiwgMHgyMDAxLCAweDE5MmYsCi0JMHgyMDRjLCAweGE4N2MsIDB4NzgxMiwgMHhhODhjLCAweDc4MDIsIDB4YTg5MCwgMHg3ODA2LCAweGE4OTQsCi0JMHg3ODBhLCAweGE4OTgsIDB4NzgwZSwgMHg3ODJiLCAweDAwMjAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg3ODJiLCAweDAwNDEsIDB4NzAwNywgMHgwMDAzLCAweDcwMDAsIDB4YzA4NCwgMHg3MDAyLCAweDI5MDAsCi0JMHg3MDBhLCAweDAxMmUsIDB4MDA5ZSwgMHgwMDA1LCAweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAwODgsCi0JMHg3ODJiLCAweDAwNDAsIDB4MDA5NiwgMHgyMDAxLCAweDE5MmYsIDB4MjA0YywgMHhhYTdjLCAweDAwOWUsCi0JMHgwODBjLCAweDhkOTEsIDB4MjAwOSwgMHgxODhjLCAweDIxMDQsIDB4OTA4NCwgMHhmZmZjLCAweDIwMGEsCi0JMHgwODBjLCAweDhiZjMsIDB4NzAwNywgMHgwMDAwLCAweDA4MGMsIDB4MTEyOCwgMHgwMDA1LCAweDcwMDcsCi0JMHgwMDAwLCAweDA4MGMsIDB4MTEyOCwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHgyMjAwLCAweDIwNzksCi0JMHgwMzAwLCAweDIwNzEsIDB4MWE2NSwgMHg3MDAzLCAweDAwMDAsIDB4NzhiZiwgMHgwMGY2LCAweDc4MWIsCi0JMHg0ODAwLCAweDAwYzEsIDB4NzgwMywgMHgwMDAzLCAweDc4MGYsIDB4MDAwMCwgMHgyMGE5LCAweDAzZWEsCi0JMHgyMDYxLCAweGYwYWUsIDB4MmMwZCwgMHg3OTEyLCAweGUxMDQsIDB4OWNlMCwgMHgwMDAyLCAweDc5MTYsCi0JMHgxZjA0LCAweDEzMTIsIDB4NzgwNywgMHgwMDA3LCAweDc4MDMsIDB4MDAwMCwgMHg3ODAzLCAweDAwMDEsCi0JMHgwMTJlLCAweDAwMDUsIDB4MDBjNiwgMHg3ODAzLCAweDAwMDAsIDB4NzgwOCwgMHhkMDljLCAweDAxMjAsCi0JMHg3ODIwLCAweDA4MGMsIDB4MTM3NiwgMHgwY2M4LCAweDIwMDEsIDB4MWE2NiwgMHgyMDAzLCAweDAwMDAsCi0JMHg3OGFiLCAweDAwMDQsIDB4NzhhYywgMHhkMGFjLCAweDFkZTgsIDB4NzhhYiwgMHgwMDAyLCAweDc4MDcsCi0JMHgwMDA3LCAweDc4MjcsIDB4MDAzMCwgMHg3ODJiLCAweDA0MDAsIDB4NzgyNywgMHgwMDMxLCAweDc4MmIsCi0JMHgxYTg5LCAweDc4MWYsIDB4ZmYwMCwgMHg3ODFiLCAweGI3MDAsIDB4MjAwMSwgMHgwMjAwLCAweDIwMDQsCi0JMHhkMGRjLCAweDAxMTAsIDB4NzgxZiwgMHgwMzAzLCAweDIwNjEsIDB4MWE4OSwgMHg2MDJmLCAweDFjZDAsCi0JMHgyMDAxLCAweDE4MWEsIDB4MjAwNCwgMHg5MDgyLCAweDFjZDAsIDB4NjAzMiwgMHg2MDNiLCAweDIwYzcsCi0JMHgyMDAxLCAweDMzYjYsIDB4ZDBmYywgMHgxOTBjLCAweDBkYzUsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsCi0JMHhkMGM0LCAweDExMjgsIDB4MjAwMSwgMHgwMDAzLCAweDIwMDQsIDB4ZDBkNCwgMHgxMTE4LCAweDc4M2YsCi0JMHgzM2I2LCAweDAwMjAsIDB4OTA4NCwgMHhjMDAwLCAweDc4M2YsIDB4YjNiNiwgMHg2MDRmLCAweDE5M2QsCi0JMHgyMDAxLCAweDE5MjgsIDB4MjAwNCwgMHg2MDQyLCAweDAwY2UsIDB4MDAwNSwgMHg5MDg2LCAweDAwMGQsCi0JMHgxMWQwLCAweDc4MDgsIDB4ZDA5YywgMHgwMWI4LCAweDc4MjAsIDB4MDAyNiwgMHgyMDEwLCAweDA4MGMsCi0JMHhkMGM2LCAweDAxODAsIDB4MjI2MCwgMHg2MDAwLCAweDkwODYsIDB4MDAwNCwgMHgxMTU4LCAweDAwMTYsCi0JMHg2MTIwLCAweDkxODYsIDB4MDAwOSwgMHgwMTA4LCAweDAwMjAsIDB4MjAwOSwgMHgwMDRjLCAweDA4MGMsCi0JMHhiMzUyLCAweDAwMWUsIDB4MDAyZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHgyMjAwLCAweDc5MDgsCi0JMHg5MTg0LCAweDAwNzAsIDB4MTkwYywgMHgwZGJlLCAweGQxOWMsIDB4MDE1OCwgMHg3ODIwLCAweDkwOGMsCi0JMHhmMDAwLCAweDE1ZTgsIDB4OTA4YSwgMHgwMDI0LCAweDFhMGMsIDB4MGRjNSwgMHgwMDIzLCAweDAxMmUsCi0JMHgwMDA1LCAweDAxMmUsIDB4MDAwNSwgMHgxM2NmLCAweDEzY2YsIDB4MTNlNiwgMHgxM2ViLCAweDEzZWYsCi0JMHgxM2Y0LCAweDE0MWMsIDB4MTQyMCwgMHgxNDJlLCAweDE0MzIsIDB4MTNjZiwgMHgxNGZmLCAweDE1MDMsCi0JMHgxNTc1LCAweDE1N2MsIDB4MTNjZiwgMHgxNTdkLCAweDE1N2UsIDB4MTU4OSwgMHgxNTkwLCAweDEzY2YsCi0JMHgxM2NmLCAweDEzY2YsIDB4MTNjZiwgMHgxM2NmLCAweDEzY2YsIDB4MTNjZiwgMHgxM2Y2LCAweDEzY2YsCi0JMHgxM2NmLCAweDEzY2YsIDB4MTNjZiwgMHgxM2NmLCAweDEzY2YsIDB4MTNkMywgMHgxM2QxLCAweDA4MGMsCi0JMHgwZGM1LCAweDA4MGMsIDB4MGRiZSwgMHgwODBjLCAweDE1OWIsIDB4MjAwOSwgMHgxYTdlLCAweDIxMDQsCi0JMHg4MDAwLCAweDIwMGEsIDB4MDgwYywgMHg4MTNhLCAweDA4MGMsIDB4MWFkOSwgMHgwMDA1LCAweDIwMDksCi0JMHgwMDQ4LCAweDIwNjAsIDB4MDgwYywgMHhiMzUyLCAweDAxMmUsIDB4MDAwNSwgMHg3MDA0LCAweGMwODUsCi0JMHhjMGI1LCAweDcwMDYsIDB4MDAwNSwgMHg3MDA0LCAweGMwODUsIDB4NzAwNiwgMHgwMDA1LCAweDA4MGMsCi0JMHgxNTliLCAweDA4MGMsIDB4MTZmYiwgMHgwMDA1LCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDE1OWIsCi0JMHgyMDYwLCAweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4M2IsIDB4ZmZmZiwgMHgwMDllLCAweDIwMDksCi0JMHgwMDQ4LCAweDA4MGMsIDB4YjM1MiwgMHgyMDAxLCAweDAxNWQsIDB4MjAwMywgMHgwMDAwLCAweDIwMDksCi0JMHgwM2U4LCAweDgxMDksIDB4MDE2MCwgMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDBkYzgsCi0JMHgyMDAxLCAweDAyMTgsIDB4MjAwNCwgMHhkMGVjLCAweDExMTAsIDB4MDgwYywgMHgxNWEwLCAweDIwMDEsCi0JMHgwMzA3LCAweDIwMDMsIDB4ODAwMCwgMHgwMDA1LCAweDcwMDQsIDB4YzA5NSwgMHg3MDA2LCAweDAwMDUsCi0JMHgwODBjLCAweDE1OWIsIDB4MjA2MCwgMHg2MDE0LCAweDAwOTYsIDB4MjA0OCwgMHhhODNiLCAweGZmZmYsCi0JMHgwMDllLCAweDIwMDksIDB4MDA0OCwgMHgwODBjLCAweGIzNTIsIDB4MDAwNSwgMHgwODBjLCAweDE1OWIsCi0JMHgwODBjLCAweDBkYzUsIDB4MDgwYywgMHgxNTliLCAweDA4MGMsIDB4MTRlYSwgMHg3ODI3LCAweDAwMTgsCi0JMHg3OWFjLCAweGQxZGMsIDB4MDkwNCwgMHgxNDliLCAweDc4MjcsIDB4MDAxNSwgMHg3ODI4LCAweDc4MmIsCi0JMHgwMDAwLCAweDkwNjUsIDB4MDE0MCwgMHgyMDAxLCAweDAyMGQsIDB4MjAwMywgMHgwMDUwLCAweDIwMDMsCi0JMHgwMDIwLCAweDA4MDQsIDB4MTRhMSwgMHg3MDA0LCAweDkwMDUsIDB4MDFjOCwgMHgxMTg4LCAweDc4YWIsCi0JMHgwMDA0LCAweDc4MjcsIDB4MDAxOCwgMHg3ODJiLCAweDAwMDAsIDB4ZDFiYywgMHgwOTBjLCAweDBkYzUsCi0JMHgyMDAxLCAweDAyMGQsIDB4MjAwMywgMHgwMDUwLCAweDIwMDMsIDB4MDAyMCwgMHgwODA0LCAweDE0Y2YsCi0JMHg3OGFiLCAweDAwMDQsIDB4NzgwMywgMHgwMDAxLCAweDA4MGMsIDB4MTUwMywgMHgwMDA1LCAweDc4MjcsCi0JMHgwMDE4LCAweGEwMDEsIDB4NzgyOCwgMHg3ODI3LCAweDAwMTEsIDB4YTAwMSwgMHg3OTI4LCAweDkxMDYsCi0JMHgwMTEwLCAweDc5YWMsIDB4MDhlMCwgMHgwMGU2LCAweDIwNzEsIDB4MDIwMCwgMHg3MDJjLCAweGQwYzQsCi0JMHgwMTQwLCAweDAwZWUsIDB4MDgwYywgMHgxYWQ5LCAweDA4MGMsIDB4MTMyMiwgMHg3ODAzLCAweDAwMDEsCi0JMHgwMDA1LCAweDcwMzcsIDB4MDAwMSwgMHhhMDAxLCAweDcxNTAsIDB4MDBlZSwgMHg5MThjLCAweGZmMDAsCi0JMHg5MTg2LCAweDA1MDAsIDB4MDExMCwgMHg3OWFjLCAweDA4MTAsIDB4NzAwNCwgMHhjMDlkLCAweDcwMDYsCi0JMHg3OGFiLCAweDAwMDQsIDB4NzgwMywgMHgwMDAxLCAweDA4MGMsIDB4MTUwMywgMHgyMDAxLCAweDAyMGQsCi0JMHgyMDAzLCAweDAwMjAsIDB4MDAwNSwgMHg3ODI4LCAweDc4MmIsIDB4MDAwMCwgMHg5MDY1LCAweDA5MGMsCi0JMHgwZGM1LCAweDYwMTQsIDB4MjA0OCwgMHg3OGFiLCAweDAwMDQsIDB4OTE4YywgMHgwNzAwLCAweDAxYTgsCi0JMHgwODBjLCAweDgxM2EsIDB4MDgwYywgMHgxYWQ5LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTU4LCAweGE5YWMsCi0JMHhhOTM2LCAweGE5YjAsIDB4YTkzYSwgMHhhODNmLCAweGZmZmYsIDB4YTg0MywgMHhmZmZmLCAweGE4ODAsCi0JMHhjMGJkLCAweGE4ODIsIDB4MDgwYywgMHhjY2YzLCAweDAwMDUsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDksCi0JMHgxMTI4LCAweDIwMDksIDB4MDA0YywgMHgwODBjLCAweGIzNTIsIDB4MDA0OCwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDYwMjQsIDB4MTkwYywgMHhkNGM0LCAweDIwMjksCi0JMHgwMGM4LCAweDg1MjksIDB4MDEyOCwgMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDBkYzgsCi0JMHg3ZGJjLCAweDA4MGMsIDB4ZjA1NywgMHhkNWE0LCAweDExMTgsIDB4MDgwYywgMHgxNWEwLCAweDAwMDUsCi0JMHgwODBjLCAweDgxM2EsIDB4MDgwYywgMHgxYWQ5LCAweDAwMDUsIDB4NzgxZiwgMHgwMzAwLCAweDc4MDMsCi0JMHgwMDAxLCAweDAwMDUsIDB4MDAxNiwgMHgwMDY2LCAweDAwNzYsIDB4MDBmNiwgMHgyMDc5LCAweDAzMDAsCi0JMHg3OTA4LCAweDkxOGMsIDB4MDAwNywgMHg5MTg2LCAweDAwMDMsIDB4MDEyMCwgMHgyMDAxLCAweDAwMTYsCi0JMHgwODBjLCAweDE2MTEsIDB4MDBmZSwgMHgwMDdlLCAweDAwNmUsIDB4MDAxZSwgMHgwMDA1LCAweDcwMDQsCi0JMHhjMDlkLCAweDcwMDYsIDB4MDAwNSwgMHg3MTA0LCAweDkxODQsIDB4MDAwNCwgMHgxOTBjLCAweDBkYzUsCi0JMHhkMTg0LCAweDExYjEsIDB4ZDE5YywgMHgwMTgwLCAweGMxOWMsIDB4NzEwNiwgMHgwMDE2LCAweDA4MGMsCi0JMHgxNmRlLCAweDAwMWUsIDB4MDE0OCwgMHgyMDAxLCAweDAyMGQsIDB4MjAwMywgMHgwMDUwLCAweDIwMDMsCi0JMHgwMDIwLCAweDA4MGMsIDB4MTVhMCwgMHgwMDA1LCAweDgxZmYsIDB4MTkwYywgMHgwZGM1LCAweDAwMDUsCi0JMHgyMTAwLCAweGMxODQsIDB4YzFiNCwgMHg3MTA2LCAweGQwYjQsIDB4MDAxNiwgMHgwMGU2LCAweDE5MDQsCi0JMHgxNTZhLCAweDIwNzEsIDB4MDIwMCwgMHgwODBjLCAweDE2Y2IsIDB4MDVlMCwgMHgwODBjLCAweDE2ZGUsCi0JMHgwNWIwLCAweDYwMTQsIDB4OTAwNSwgMHgwNWIwLCAweDAwOTYsIDB4MjA0OCwgMHhhODY0LCAweDAwOWUsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTA4ZSwgMHgwMDI5LCAweDAxNjAsIDB4OTA4ZSwgMHgwMDQ4LCAweDE1NTAsCi0JMHg2MDFjLCAweGQwODQsIDB4MTFlMCwgMHgwMGY2LCAweDJjNzgsIDB4MDgwYywgMHgxNzY4LCAweDAwZmUsCi0JMHgwMGIwLCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDE4ZmQsIDB4MDBmZSwgMHgyMDA5LCAweDAxZjQsCi0JMHg4MTA5LCAweDAxNjgsIDB4MjAwMSwgMHgwMjAxLCAweDIwMDQsIDB4OTAwNSwgMHgwZGM4LCAweDIwMDEsCi0JMHgwMjE4LCAweDIwMDQsIDB4ZDBlYywgMHgxMTE4LCAweDA4MGMsIDB4MTVhMCwgMHgwMDQwLCAweDIwMDEsCi0JMHgwMjBkLCAweDIwMDMsIDB4MDAyMCwgMHgwODBjLCAweDEzMjIsIDB4NzgwMywgMHgwMDAxLCAweDAwZWUsCi0JMHgwMDFlLCAweDAwMDUsIDB4MDgwYywgMHgxNmRlLCAweDBkZDAsIDB4MjAwMSwgMHgwMjBkLCAweDIwMDMsCi0JMHgwMDUwLCAweDIwMDMsIDB4MDAyMCwgMHgwNDYxLCAweDBjOTAsIDB4MDQyOSwgMHgyMDYwLCAweDIwMDksCi0JMHgwMDUzLCAweDA4MGMsIDB4YjM1MiwgMHgwMDA1LCAweDAwMDUsIDB4MDAwNSwgMHgwMGUxLCAweDIwMDgsCi0JMHgwMGQxLCAweDAwMDYsIDB4NzAwNCwgMHhjMDlkLCAweDcwMDYsIDB4MDAwZSwgMHgwODBjLCAweDkwZGUsCi0JMHgwMDA1LCAweDAwODksIDB4OTAwNSwgMHgwMTE4LCAweDA4MGMsIDB4OGNlMiwgMHgwY2QwLCAweDAwMDUsCi0JMHgyMDAxLCAweDAwMzYsIDB4MjAwOSwgMHgxODIwLCAweDIxMGMsIDB4MjAxMSwgMHgxODFmLCAweDIyMTQsCi0JMHgwODBjLCAweDE2MTEsIDB4MDAwNSwgMHg3ODA4LCAweGQwOWMsIDB4MGRlOCwgMHg3ODIwLCAweDAwMDUsCi0JMHgwODBjLCAweDE0ZWEsIDB4MDBkNiwgMHgyMDY5LCAweDAyMDAsIDB4MjAwOSwgMHgwMWY0LCAweDgxMDksCi0JMHgwNTEwLCAweDY4MDQsIDB4OTAwNSwgMHgwZGQ4LCAweDIwMDEsIDB4MDE1ZCwgMHgyMDAzLCAweDAwMDAsCi0JMHg3OWJjLCAweGQxYTQsIDB4MTUyOCwgMHg3OWI4LCAweDkxOGMsIDB4MGZmZiwgMHgwMTgwLCAweDkxODIsCi0JMHgwODQxLCAweDEyNjgsIDB4OTE4OCwgMHgwMDA3LCAweDkxOGMsIDB4MGZmOCwgMHg4MTBjLCAweDgxMGMsCi0JMHg4MTBjLCAweDA4MGMsIDB4MTYwMywgMHg2ODI3LCAweDAwMDEsIDB4ODEwOSwgMHgxZGQwLCAweDA0ZDksCi0JMHg2ODI3LCAweDAwMDIsIDB4MDRjMSwgMHg2ODA0LCAweDkwMDUsIDB4MTEzMCwgMHg2ODJjLCAweGQwZTQsCi0JMHgxNTAwLCAweDY4MDQsIDB4OTAwNSwgMHgwZGU4LCAweDc5YjgsIDB4ZDFlYywgMHgxMTMwLCAweDA4YzAsCi0JMHgwODBjLCAweDgxM2EsIDB4MDgwYywgMHgxYWQ5LCAweDAwOTAsIDB4NzgyNywgMHgwMDE1LCAweDc4MmIsCi0JMHgwMDAwLCAweDc4MjcsIDB4MDAxOCwgMHg3ODJiLCAweDAwMDAsIDB4MjAwMSwgMHgwMjBkLCAweDIwMDMsCi0JMHgwMDIwLCAweDIwMDEsIDB4MDMwNywgMHgyMDAzLCAweDAzMDAsIDB4NzgwMywgMHgwMDAxLCAweDAwZGUsCi0JMHgwMDA1LCAweDY4MmMsIDB4OTA4NCwgMHg1NDAwLCAweDkwODYsIDB4NTQwMCwgMHgwZDMwLCAweDc4MjcsCi0JMHgwMDE1LCAweDc4MmIsIDB4MDAwMCwgMHg3ODAzLCAweDAwMDEsIDB4NjgwMCwgMHg5MDg1LCAweDE4MDAsCi0JMHg2ODAyLCAweDAwZGUsIDB4MDAwNSwgMHg2ODI0LCAweDkwODQsIDB4MDAwMywgMHgxZGUwLCAweDAwMDUsCi0JMHgyMDAxLCAweDAwMzAsIDB4MmMwOCwgMHg2MjFjLCAweDAwMjEsIDB4NzgzMCwgMHg5MDg2LCAweDAwNDEsCi0JMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMzAwLCAweDAwMDYsIDB4NzgwOCwgMHhkMDljLCAweDAxNDAsCi0JMHgwMDE2LCAweDAwMjYsIDB4MDBjNiwgMHgwODBjLCAweDEzOTQsIDB4MDBjZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMDBlLCAweDAwMDYsIDB4NzgzMiwgMHg3OTM2LCAweDdhM2EsIDB4NzgxYiwgMHg4MDgwLCAweDAwNTksCi0JMHgxMTE4LCAweDAwMGUsIDB4MDBmZSwgMHgwMDA1LCAweDAwMGUsIDB4NzkyYywgMHgzOTAwLCAweDgwMDAsCi0JMHgyMDA0LCAweDA4MGMsIDB4MGRjNSwgMHgyMDA5LCAweDE4MGMsIDB4MjEwNCwgMHhjMGY0LCAweDIwMGEsCi0JMHgyMDA5LCAweGZmMDAsIDB4ODEwOSwgMHgwOTA0LCAweDE2OGYsIDB4N2ExOCwgMHg5Mjg0LCAweDAwMzAsCi0JMHgwOTA0LCAweDE2OGEsIDB4OTI4NCwgMHgwMDQ4LCAweDkwODYsIDB4MDAwOCwgMHgxOTA0LCAweDE2OGEsCi0JMHgyMDAxLCAweDAxMDksIDB4MjAwNCwgMHhkMDhjLCAweDAxZjAsIDB4MDAwNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwMTI2LCAweDIwOTEsIDB4MjgwMCwgMHgwMGY2LCAweDAwMjYsCi0JMHgwMDE2LCAweDIwMDksIDB4MWE4MSwgMHgyMTA0LCAweDgwMDAsIDB4MDIwOCwgMHgyMDBhLCAweDA4MGMsCi0JMHg5NGIxLCAweDAwMWUsIDB4MDAyZSwgMHgwMGZlLCAweDAxMmUsIDB4MDE1ZSwgMHgwMTRlLCAweDAxM2UsCi0JMHgwMWRlLCAweDAxY2UsIDB4MDAwZSwgMHgyMDAxLCAweDAwOWIsIDB4MjAwNCwgMHhkMGZjLCAweDAxZDAsCi0JMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDAwZjYsCi0JMHgwMDE2LCAweDIwMDksIDB4MWE4MiwgMHgyMTA0LCAweDgwMDAsIDB4MDIwOCwgMHgyMDBhLCAweDA4MGMsCi0JMHgxZWViLCAweDAwMWUsIDB4MDBmZSwgMHgwMTVlLCAweDAxNGUsIDB4MDEzZSwgMHgwMWRlLCAweDAxY2UsCi0JMHgwMTJlLCAweDAwMGUsIDB4NzgxOCwgMHhkMGJjLCAweDE5MDQsIDB4MTYzYSwgMHgwMDA1LCAweDIwMDEsCi0JMHgxODBjLCAweDIwMDQsIDB4ZDBmNCwgMHgxNTI4LCAweDdhMTgsIDB4OTI4NCwgMHgwMDMwLCAweDA1MDgsCi0JMHg5Mjg0LCAweDAwNDgsIDB4OTA4NiwgMHgwMDA4LCAweDExZTAsIDB4MjAwMSwgMHgxOWY3LCAweDIwMDQsCi0JMHg5MDA1LCAweDAxYjgsIDB4MjAwMSwgMHgxYTY5LCAweDIwMDQsIDB4OTA4NiwgMHgwMDAwLCAweDAxODgsCi0JMHgyMDA5LCAweDFhODAsIDB4MjEwNCwgMHg4MDAwLCAweDAyMDgsIDB4MjAwYSwgMHgwODBjLCAweGE3NjcsCi0JMHgyMDA5LCAweDE4MGMsIDB4MjEwNCwgMHhjMGY1LCAweDIwMGEsIDB4MjAwOSwgMHhmZjAwLCAweDA4MDQsCi0JMHgxNjNhLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDc4MzIsIDB4NzkzNiwgMHg3YTNhLCAweDc4MWIsCi0JMHg4MDgwLCAweDA4MGMsIDB4MTYzMywgMHgxMTA4LCAweDAwMDUsIDB4NzkyYywgMHgzOTAwLCAweDgwMDAsCi0JMHgyMDA0LCAweDA4MGMsIDB4MGRjNSwgMHg3MDM3LCAweDAwMDEsIDB4NzE1MCwgMHg3MDM3LCAweDAwMDIsCi0JMHg3MDUwLCAweDIwNjAsIDB4ZDFiYywgMHgxMTEwLCAweDcwNTQsIDB4MjA2MCwgMHg5MThjLCAweGZmMDAsCi0JMHg5MTg2LCAweDA1MDAsIDB4MDExMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMDA2LCAweDAwNDYsCi0JMHgwMGU2LCAweDIwNzEsIDB4MDIwMCwgMHg3MDM3LCAweDAwMDIsIDB4NzA1OCwgMHg5MDg0LCAweGZmMDAsCi0JMHg4MDA3LCAweDkwODYsIDB4MDBiYywgMHgxMTU4LCAweDIwMjEsIDB4MWE3ZiwgMHgyNDA0LCAweDgwMDAsCi0JMHgwMjA4LCAweDIwMjIsIDB4MDgwYywgMHg4MTNhLCAweDA4MGMsIDB4MWFkOSwgMHg5MDA2LCAweDAwZWUsCi0JMHgwMDRlLCAweDAwMGUsIDB4MDAwNSwgMHgwYzExLCAweDExMDgsIDB4MDAwNSwgMHgwMGU2LCAweDAwMTYsCi0JMHgyMDcxLCAweDAyMDAsIDB4MDg0MSwgMHg2MTI0LCAweGQxZGMsIDB4MDFmOCwgMHg3MDFjLCAweGQwOGMsCi0JMHgwOTA0LCAweDE3NWQsIDB4NzAxNywgMHgwMDAwLCAweDIwMDEsIDB4MDI2NCwgMHgyMDA0LCAweGQwYmMsCi0JMHgwOTA0LCAweDE3NWQsIDB4MjAwMSwgMHgwMjY4LCAweDAwYzYsIDB4MjA2NCwgMHg2MTA0LCAweDYwMzgsCi0JMHgwMGNlLCAweDkxOGUsIDB4MDAzOSwgMHgxOTA0LCAweDE3NWQsIDB4OWMwNiwgMHgxNWYwLCAweDAxMjYsCi0JMHgyMDkxLCAweDI2MDAsIDB4MDgwYywgMHg4MDgxLCAweDAxMmUsIDB4NzM1OCwgMHg3NDVjLCAweDYwMTQsCi0JMHg5MDVkLCAweDA1OTgsIDB4MmI0OCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsCi0JMHhkMGJjLCAweDE5MGMsIDB4ZDQ5ZiwgMHhhYjQyLCAweGFjM2UsIDB4MjAwMSwgMHgxODY5LCAweDIwMDQsCi0JMHhkMGI0LCAweDExNzAsIDB4NjAxYywgMHhkMGU0LCAweDExNTgsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsCi0JMHhiODAwLCAweDAwYmUsIDB4ZDBiYywgMHgxMTIwLCAweGE4M2IsIDB4N2ZmZiwgMHhhODM3LCAweGZmZmYsCi0JMHgwODBjLCAweDIwZTcsIDB4MTE5MCwgMHgwODBjLCAweDE5NWEsIDB4MmEwMCwgMHhhODE2LCAweDAxMzAsCi0JMHgyODAwLCAweGE4MGUsIDB4MmMwNSwgMHhhODBhLCAweDJjMDAsIDB4YTgxMiwgMHg3MDM3LCAweDAwMjAsCi0JMHg3ODFmLCAweDAzMDAsIDB4MDAxZSwgMHgwMGVlLCAweDAwMDUsIDB4NzAzNywgMHgwMDUwLCAweDcwMzcsCi0JMHgwMDIwLCAweDAwMWUsIDB4MDBlZSwgMHgwODBjLCAweDE1YTAsIDB4MDAwNSwgMHgwODBjLCAweDBkYzUsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDE5MGMsIDB4NmI1ZSwgMHgyZmYwLCAweDAxMjYsCi0JMHgyMDkxLCAweDIyMDAsIDB4MDAxNiwgMHgwMGM2LCAweDNlNjAsIDB4NjAxNCwgMHgyMDQ4LCAweDI5NDAsCi0JMHg5MDNlLCAweDI3MzAsIDB4YTg2NCwgMHgyMDY4LCAweGE4MWEsIDB4OWQ4NCwgMHgwMDBmLCAweDkwODgsCi0JMHgyMGM3LCAweDIxNjUsIDB4MDAwMiwgMHgxNzlhLCAweDE4MDgsIDB4MTc5YSwgMHgxNzlhLCAweDE3OWUsCi0JMHgxN2U5LCAweDE3OWEsIDB4MTdiZSwgMHgxNzkzLCAweDE3ZmYsIDB4MTc5YSwgMHgxNzlhLCAweDE3YTMsCi0JMHgxOGY1LCAweDE3ZDIsIDB4MTdjOCwgMHhhOTY0LCAweDkxOGMsIDB4MDBmZiwgMHg5MThlLCAweDAwNDgsCi0JMHgwOTA0LCAweDE3ZmYsIDB4OTA4NSwgMHgwMDAxLCAweDA4MDQsIDB4MThlYiwgMHhhODdjLCAweGQwYWMsCi0JMHgwZGM4LCAweDA4MDQsIDB4MTgwZiwgMHhhODdjLCAweGQwYWMsIDB4MGRhMCwgMHgwODA0LCAweDE4N2EsCi0JMHhhODk4LCAweDkwMWQsIDB4MTEwOCwgMHhhYjljLCAweDkwMTYsIDB4YWFiMiwgMHhhYTNlLCAweGFhNDIsCi0JMHgzZTAwLCAweDkwODAsIDB4MDAwOCwgMHgyMDA0LCAweDkwODAsIDB4OTMzZCwgMHgyMDA1LCAweDkwMDUsCi0JMHgwOTBjLCAweDBkYzUsIDB4MjAwNCwgMHhhOGFlLCAweDA4MDQsIDB4MThkMywgMHhhODdjLCAweGQwYmMsCi0JMHgwOWM4LCAweGE4OTAsIDB4YTg0MiwgMHhhODhjLCAweGE4M2UsIDB4YTg4OCwgMHgwODA0LCAweDE4MGYsCi0JMHhhODdjLCAweGQwYmMsIDB4MDk3OCwgMHhhODkwLCAweGE4NDIsIDB4YTg4YywgMHhhODNlLCAweGE4ODgsCi0JMHgwODA0LCAweDE4N2EsIDB4YTg3YywgMHhkMGJjLCAweDA5MjgsIDB4YTg5MCwgMHhhODQyLCAweGE4OGMsCi0JMHhhODNlLCAweGE4MDQsIDB4OTA0NSwgMHgwOTBjLCAweDBkYzUsIDB4YTE2NCwgMHhhOTFhLCAweDkxZWMsCi0JMHgwMDBmLCAweDlkODAsIDB4MjBjNywgMHgyMDY1LCAweGE4ODgsIDB4ZDE5YywgMHgxOTA0LCAweDE4N2EsCi0JMHgwNDMwLCAweGE4N2MsIDB4ZDBhYywgMHgwOTA0LCAweDE3OWEsIDB4YTgwNCwgMHg5MDQ1LCAweDA5MGMsCi0JMHgwZGM1LCAweGExNjQsIDB4YTkxYSwgMHg5MWVjLCAweDAwMGYsIDB4OWQ4MCwgMHgyMGM3LCAweDIwNjUsCi0JMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwgMHhkMTljLCAweDE5MDQsIDB4MTg3YSwgMHgwMDgwLCAweGE4N2MsCi0JMHhkMGFjLCAweDA5MDQsIDB4MTc5YSwgMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwgMHgwODA0LCAweDE4N2EsCi0JMHhhODdjLCAweGQwYWMsIDB4MDkwNCwgMHgxNzlhLCAweDkwMDYsIDB4YTg0MiwgMHhhODNlLCAweDJjMDUsCi0JMHg5MDhhLCAweDAwMzYsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDE4MzIsCi0JMHgxODMyLCAweDE4MzQsIDB4MTgzMiwgMHgxODMyLCAweDE4MzIsIDB4MTgzZSwgMHgxODMyLCAweDE4MzIsCi0JMHgxODMyLCAweDE4NDgsIDB4MTgzMiwgMHgxODMyLCAweDE4MzIsIDB4MTg1MiwgMHgxODMyLCAweDE4MzIsCi0JMHgxODMyLCAweDE4NWMsIDB4MTgzMiwgMHgxODMyLCAweDE4MzIsIDB4MTg2NiwgMHgxODMyLCAweDE4MzIsCi0JMHgxODMyLCAweDE4NzAsIDB4MDgwYywgMHgwZGM1LCAweGE1NzQsIDB4YTQ3OCwgMHg5ZDg2LCAweDAwMjQsCi0JMHgwOTA0LCAweDE3YTgsIDB4YTM3YywgMHhhMjgwLCAweDA4MDQsIDB4MThkMywgMHhhNTg0LCAweGE0ODgsCi0JMHg5ZDg2LCAweDAwMjQsIDB4MDkwNCwgMHgxN2E4LCAweGEzOGMsIDB4YTI5MCwgMHgwODA0LCAweDE4ZDMsCi0JMHhhNTk0LCAweGE0OTgsIDB4OWQ4NiwgMHgwMDI0LCAweDA5MDQsIDB4MTdhOCwgMHhhMzljLCAweGEyYTAsCi0JMHgwODA0LCAweDE4ZDMsIDB4YTVhNCwgMHhhNGE4LCAweDlkODYsIDB4MDAyNCwgMHgwOTA0LCAweDE3YTgsCi0JMHhhM2FjLCAweGEyYjAsIDB4MDgwNCwgMHgxOGQzLCAweGE1YjQsIDB4YTRiOCwgMHg5ZDg2LCAweDAwMjQsCi0JMHgwOTA0LCAweDE3YTgsIDB4YTNiYywgMHhhMmMwLCAweDA4MDQsIDB4MThkMywgMHhhNWM0LCAweGE0YzgsCi0JMHg5ZDg2LCAweDAwMjQsIDB4MDkwNCwgMHgxN2E4LCAweGEzY2MsIDB4YTJkMCwgMHgwODA0LCAweDE4ZDMsCi0JMHhhNWQ0LCAweGE0ZDgsIDB4OWQ4NiwgMHgwMDI0LCAweDA5MDQsIDB4MTdhOCwgMHhhM2RjLCAweGEyZTAsCi0JMHgwODA0LCAweDE4ZDMsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsCi0JMHgwMDFiLCAweDAwMDIsIDB4MTg5ZCwgMHgxODliLCAweDE4OWIsIDB4MTg5YiwgMHgxODliLCAweDE4OWIsCi0JMHgxOGE4LCAweDE4OWIsIDB4MTg5YiwgMHgxODliLCAweDE4OWIsIDB4MTg5YiwgMHgxOGIzLCAweDE4OWIsCi0JMHgxODliLCAweDE4OWIsIDB4MTg5YiwgMHgxODliLCAweDE4YmUsIDB4MTg5YiwgMHgxODliLCAweDE4OWIsCi0JMHgxODliLCAweDE4OWIsIDB4MThjOSwgMHgwODBjLCAweDBkYzUsIDB4YTU2YywgMHhhNDcwLCAweGE3NzQsCi0JMHhhNjc4LCAweDlkODYsIDB4MDAyYywgMHgwOTA0LCAweDE3YTgsIDB4YTM3YywgMHhhMjgwLCAweDA0NTgsCi0JMHhhNTg0LCAweGE0ODgsIDB4YTc4YywgMHhhNjkwLCAweDlkODYsIDB4MDAyYywgMHgwOTA0LCAweDE3YTgsCi0JMHhhMzk0LCAweGEyOTgsIDB4MDQwMCwgMHhhNTljLCAweGE0YTAsIDB4YTdhNCwgMHhhNmE4LCAweDlkODYsCi0JMHgwMDJjLCAweDA5MDQsIDB4MTdhOCwgMHhhM2FjLCAweGEyYjAsIDB4MDBhOCwgMHhhNWI0LCAweGE0YjgsCi0JMHhhN2JjLCAweGE2YzAsIDB4OWQ4NiwgMHgwMDJjLCAweDA5MDQsIDB4MTdhOCwgMHhhM2M0LCAweGEyYzgsCi0JMHgwMDUwLCAweGE1Y2MsIDB4YTRkMCwgMHhhN2Q0LCAweGE2ZDgsIDB4OWQ4NiwgMHgwMDJjLCAweDA5MDQsCi0JMHgxN2E4LCAweGEzZGMsIDB4YTJlMCwgMHhhYjJlLCAweGFhMzIsIDB4YWQxZSwgMHhhYzIyLCAweGFmMjYsCi0JMHhhZTJhLCAweGE5ODgsIDB4OGM2MCwgMHgyYzFkLCAweGE4YWMsIDB4YWFiMCwgMHhhODM2LCAweGFhM2EsCi0JMHg4MTA5LCAweGE5MTYsIDB4MTE2MCwgMHgzZTYwLCAweDYwMWMsIDB4YzA4NSwgMHg2MDFlLCAweGE4N2MsCi0JMHhjMGRkLCAweGE4N2UsIDB4OTAwNiwgMHgwMGNlLCAweDAwMWUsIDB4MDEyZSwgMHgwMDA1LCAweDI4MDAsCi0JMHhhODBlLCAweGFiMGEsIDB4MmMwMCwgMHhhODEyLCAweDBjNzAsIDB4MDgwNCwgMHgxNzlhLCAweDIwMDEsCi0JMHgxODBkLCAweDIwMDQsIDB4ZDA4YywgMHgxOTBjLCAweDZiNWUsIDB4MmZmMCwgMHgwMTI2LCAweDIwOTEsCi0JMHgyMjAwLCAweDAwMTYsIDB4MDBjNiwgMHgzZTYwLCAweDYwMTQsIDB4MjA0OCwgMHgyOTQwLCAweGE4MGUsCi0JMHgyMDYxLCAweDIwYzIsIDB4YTgxMywgMHgyMGMyLCAweDJjMDUsIDB4YTgwYSwgMHhhOTY0LCAweGE5MWEsCi0JMHhhODdjLCAweGQwYWMsIDB4MDkwYywgMHgwZGM1LCAweDkwMDYsIDB4YTg0MiwgMHhhODNlLCAweDJjMDUsCi0JMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweGFkY2MsIDB4YWNkMCwgMHhhZmQ0LCAweGFlZDgsCi0JMHhhYmRjLCAweGFhZTAsIDB4YWIyZSwgMHhhYTMyLCAweGFkMWUsIDB4YWMyMiwgMHhhZjI2LCAweGFlMmEsCi0JMHhhOGFjLCAweGFhYjAsIDB4YTgzNiwgMHhhYTNhLCAweGE5ODgsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDg2LCAweDAwMDgsIDB4MTEyMCwgMHg4MTA5LCAweGE5MTYsIDB4MDEyOCwgMHgwMDgwLCAweDkxOGEsCi0JMHgwMDAyLCAweGE5MTYsIDB4MTE2MCwgMHgzZTYwLCAweDYwMWMsIDB4YzA4NSwgMHg2MDFlLCAweGE4N2MsCi0JMHhjMGRkLCAweGE4N2UsIDB4OTAwNiwgMHgwMGNlLCAweDAwMWUsIDB4MDEyZSwgMHgwMDA1LCAweGE4MDQsCi0JMHg5MDQ1LCAweDA5MGMsIDB4MGRjNSwgMHhhODBlLCAweGEwNjQsIDB4YTgxYSwgMHg5MDg0LCAweDAwMGYsCi0JMHg5MDgwLCAweDIwYzcsIDB4MjAxNSwgMHg4MmZmLCAweDA5MGMsIDB4MGRjNSwgMHhhYTEyLCAweDIyMDUsCi0JMHhhODBhLCAweDBjMDgsIDB4OTAzZSwgMHgyNzMwLCAweGE4ODAsIDB4ZDBmYywgMHgxMTkwLCAweDJkMDAsCi0JMHgwMDAyLCAweDFhNGYsIDB4MTliMSwgMHgxOWIxLCAweDFhNGYsIDB4MWE0ZiwgMHgxYTQ5LCAweDFhNGYsCi0JMHgxOWIxLCAweDFhMDAsIDB4MWEwMCwgMHgxYTAwLCAweDFhNGYsIDB4MWE0ZiwgMHgxYTRmLCAweDFhNDYsCi0JMHgxYTAwLCAweGMwZmMsIDB4YTg4MiwgMHhhYjJjLCAweGFhMzAsIDB4YWQxYywgMHhhYzIwLCAweGRkOWMsCi0JMHgwOTA0LCAweDFhNTEsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsCi0JMHgwMDFiLCAweDAwMDIsIDB4MTk5ZCwgMHgxOTliLCAweDE5OWIsIDB4MTk5YiwgMHgxOTliLCAweDE5OWIsCi0JMHgxOWExLCAweDE5OWIsIDB4MTk5YiwgMHgxOTliLCAweDE5OWIsIDB4MTk5YiwgMHgxOWE1LCAweDE5OWIsCi0JMHgxOTliLCAweDE5OWIsIDB4MTk5YiwgMHgxOTliLCAweDE5YTksIDB4MTk5YiwgMHgxOTliLCAweDE5OWIsCi0JMHgxOTliLCAweDE5OWIsIDB4MTlhZCwgMHgwODBjLCAweDBkYzUsIDB4YTc3NCwgMHhhNjc4LCAweDA4MDQsCi0JMHgxYTUxLCAweGE3OGMsIDB4YTY5MCwgMHgwODA0LCAweDFhNTEsIDB4YTdhNCwgMHhhNmE4LCAweDA4MDQsCi0JMHgxYTUxLCAweGE3YmMsIDB4YTZjMCwgMHgwODA0LCAweDFhNTEsIDB4YTdkNCwgMHhhNmQ4LCAweDA4MDQsCi0JMHgxYTUxLCAweDJjMDUsIDB4OTA4YSwgMHgwMDM2LCAweDFhMGMsIDB4MGRjNSwgMHg5MDgyLCAweDAwMWIsCi0JMHgwMDAyLCAweDE5ZDQsIDB4MTlkNCwgMHgxOWQ2LCAweDE5ZDQsIDB4MTlkNCwgMHgxOWQ0LCAweDE5ZGMsCi0JMHgxOWQ0LCAweDE5ZDQsIDB4MTlkNCwgMHgxOWUyLCAweDE5ZDQsIDB4MTlkNCwgMHgxOWQ0LCAweDE5ZTgsCi0JMHgxOWQ0LCAweDE5ZDQsIDB4MTlkNCwgMHgxOWVlLCAweDE5ZDQsIDB4MTlkNCwgMHgxOWQ0LCAweDE5ZjQsCi0JMHgxOWQ0LCAweDE5ZDQsIDB4MTlkNCwgMHgxOWZhLCAweDA4MGMsIDB4MGRjNSwgMHhhNTc0LCAweGE0NzgsCi0JMHhhMzdjLCAweGEyODAsIDB4MDgwNCwgMHgxYTUxLCAweGE1ODQsIDB4YTQ4OCwgMHhhMzhjLCAweGEyOTAsCi0JMHgwODA0LCAweDFhNTEsIDB4YTU5NCwgMHhhNDk4LCAweGEzOWMsIDB4YTJhMCwgMHgwODA0LCAweDFhNTEsCi0JMHhhNWE0LCAweGE0YTgsIDB4YTNhYywgMHhhMmIwLCAweDA4MDQsIDB4MWE1MSwgMHhhNWI0LCAweGE0YjgsCi0JMHhhM2JjLCAweGEyYzAsIDB4MDgwNCwgMHgxYTUxLCAweGE1YzQsIDB4YTRjOCwgMHhhM2NjLCAweGEyZDAsCi0JMHgwODA0LCAweDFhNTEsIDB4YTVkNCwgMHhhNGQ4LCAweGEzZGMsIDB4YTJlMCwgMHgwODA0LCAweDFhNTEsCi0JMHgyYzA1LCAweDkwOGEsIDB4MDAzNCwgMHgxYTBjLCAweDBkYzUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsCi0JMHgxYTIzLCAweDFhMjEsIDB4MWEyMSwgMHgxYTIxLCAweDFhMjEsIDB4MWEyMSwgMHgxYTJhLCAweDFhMjEsCi0JMHgxYTIxLCAweDFhMjEsIDB4MWEyMSwgMHgxYTIxLCAweDFhMzEsIDB4MWEyMSwgMHgxYTIxLCAweDFhMjEsCi0JMHgxYTIxLCAweDFhMjEsIDB4MWEzOCwgMHgxYTIxLCAweDFhMjEsIDB4MWEyMSwgMHgxYTIxLCAweDFhMjEsCi0JMHgxYTNmLCAweDA4MGMsIDB4MGRjNSwgMHhhNTZjLCAweGE0NzAsIDB4YTc3NCwgMHhhNjc4LCAweGEzN2MsCi0JMHhhMjgwLCAweDA0MzgsIDB4YTU4NCwgMHhhNDg4LCAweGE3OGMsIDB4YTY5MCwgMHhhMzk0LCAweGEyOTgsCi0JMHgwNDAwLCAweGE1OWMsIDB4YTRhMCwgMHhhN2E0LCAweGE2YTgsIDB4YTNhYywgMHhhMmIwLCAweDAwYzgsCi0JMHhhNWI0LCAweGE0YjgsIDB4YTdiYywgMHhhNmMwLCAweGEzYzQsIDB4YTJjOCwgMHgwMDkwLCAweGE1Y2MsCi0JMHhhNGQwLCAweGE3ZDQsIDB4YTZkOCwgMHhhM2RjLCAweGEyZTAsIDB4MDA1OCwgMHg5ZDg2LCAweDAwMGUsCi0JMHgxMTMwLCAweDA4MGMsIDB4MjA3ZiwgMHgxOTA0LCAweDE5NWEsIDB4OTAwZSwgMHgwMDUwLCAweDA4MGMsCi0JMHgwZGM1LCAweGFiMmUsIDB4YWEzMiwgMHhhZDFlLCAweGFjMjIsIDB4YWYyNiwgMHhhZTJhLCAweDA4MGMsCi0JMHgyMDdmLCAweDAwMDUsIDB4NjAxNCwgMHgyMDQ4LCAweDYxMTgsIDB4ODFmZiwgMHgwMTQ4LCAweDgxMGMsCi0JMHg4MTBjLCAweDgxMGMsIDB4ODFmZiwgMHgxMTE4LCAweGE4ODcsIDB4MDAwMSwgMHgwMDA4LCAweGE5ODYsCi0JMHg2MDFiLCAweDAwMDIsIDB4YTg3NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NCwgMHgwMDA4LCAweDAxNTAsCi0JMHgwMGU5LCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExMjAsIDB4MjAwOSwgMHgwMDQ4LCAweDA4MGMsCi0JMHhiMzUyLCAweDAwMDUsIDB4YTk3NCwgMHhkMWRjLCAweDExMDgsIDB4MDAwNSwgMHhhOTM0LCAweGE4OGMsCi0JMHg5MTA2LCAweDExNTgsIDB4YTkzOCwgMHhhODkwLCAweDkxMDYsIDB4MTEzOCwgMHg2MDFjLCAweGMwODQsCi0JMHg2MDFlLCAweDIwMDksIDB4MDA0OCwgMHgwODA0LCAweGIzNTIsIDB4MDAwNSwgMHgwMTI2LCAweDAwYzYsCi0JMHgyMDkxLCAweDIyMDAsIDB4MDBjZSwgMHg3OTA4LCAweDkxOGMsIDB4MDAwNywgMHg5MTg2LCAweDAwMDAsCi0JMHgwNWIwLCAweDkxODYsIDB4MDAwMywgMHgwNTk4LCAweDYwMjAsIDB4NjAyMywgMHgwMDAwLCAweDAwMDYsCi0JMHgyMDMxLCAweDAwMDgsIDB4MDBjNiwgMHg3ODFmLCAweDA4MDgsIDB4NzgwOCwgMHhkMDljLCAweDAxMjAsCi0JMHgwODBjLCAweDEzOTQsIDB4ODYzMSwgMHgxZGI4LCAweDAwY2UsIDB4NzgxZiwgMHgwODAwLCAweDIwMzEsCi0JMHgwMTY4LCAweDAwYzYsIDB4NzgwOCwgMHhkMDljLCAweDE5MGMsIDB4MTM5NCwgMHgwMGNlLCAweDIwMDEsCi0JMHgwMDM4LCAweDA4MGMsIDB4MWI2OSwgMHg3OTMwLCAweDkxODYsIDB4MDA0MCwgMHgwMTYwLCAweDkxODYsCi0JMHgwMDQyLCAweDE5MGMsIDB4MGRjNSwgMHgyMDAxLCAweDAwMWUsIDB4ODAwMSwgMHgxZGYwLCAweDg2MzEsCi0JMHgxZDQwLCAweDA4MGMsIDB4MWI3OCwgMHgwMDBlLCAweDYwMjIsIDB4MDEyZSwgMHgwMDA1LCAweDA4MGMsCi0JMHgxYjY1LCAweDc4MjcsIDB4MDAxNSwgMHg3ODI4LCAweDljMDYsIDB4MWRiOCwgMHg3ODJiLCAweDAwMDAsCi0JMHgwY2EwLCAweDAwZjYsIDB4MjA3OSwgMHgwMzAwLCAweDc4MDMsIDB4MDAwMCwgMHg3OGFiLCAweDAwMDQsCi0JMHgyMDAxLCAweGYwMDAsIDB4ODAwMSwgMHgwOTBjLCAweDBkYzUsIDB4N2FhYywgMHhkMmFjLCAweDFkZDAsCi0JMHgwMGZlLCAweDA4MGMsIDB4NzYzNywgMHgxMTg4LCAweDIwMDEsIDB4MDEzOCwgMHgyMDAzLCAweDAwMDAsCi0JMHgyMDAxLCAweDAxNjAsIDB4MjAwMywgMHgwMDAwLCAweDIwMTEsIDB4MDEyYywgMHhhMDAxLCAweGEwMDEsCi0JMHg4MjExLCAweDFkZTAsIDB4MDA1OSwgMHgwODA0LCAweDc2ZTQsIDB4MDQ3OSwgMHgwMDM5LCAweDIwMDEsCi0JMHgwMTYwLCAweDI1MDIsIDB4MjAwMSwgMHgwMTM4LCAweDIyMDIsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsCi0JMHgwMjAwLCAweDA4MGMsIDB4MmM2ZCwgMHgyMDA5LCAweDAwM2MsIDB4MDgwYywgMHgyNDA5LCAweDIwMDEsCi0JMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwgMHg3MDAwLCAweDkwODQsIDB4MDAzYywgMHgxZGUwLCAweDA4MGMsCi0JMHg4NzI1LCAweDcwYTAsIDB4NzBhMiwgMHg3MDk4LCAweDcwOWEsIDB4NzA5YywgMHg3MDllLCAweDIwMDEsCi0JMHgwMjBkLCAweDIwMDMsIDB4MDAyMCwgMHgwMGY2LCAweDIwNzksIDB4MDMwMCwgMHgwODBjLCAweDEzMjIsCi0JMHg3ODAzLCAweDAwMDEsIDB4MDBmZSwgMHgwMGVlLCAweDAwMDUsIDB4MjAwMSwgMHgwMTM4LCAweDIwMTQsCi0JMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgwMTYwLCAweDIwMmMsIDB4MjAwMywgMHgwMDAwLCAweDA4MGMsCi0JMHg3NjM3LCAweDExMDgsIDB4MDAwNSwgMHgyMDIxLCAweDAyNjAsIDB4MjAwMSwgMHgwMTQxLCAweDIwMWMsCi0JMHhkM2RjLCAweDExNjgsIDB4MjAwMSwgMHgwMTA5LCAweDIwMWMsIDB4OTM5YywgMHgwMDQ4LCAweDExNjAsCi0JMHgyMDAxLCAweDAxMTEsIDB4MjAxYywgMHg4M2ZmLCAweDExMTAsIDB4ODQyMSwgMHgxZDcwLCAweDIwMDEsCi0JMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwgMHgwMDA1LCAweDAwNDYsIDB4MjAyMSwgMHgwMDE5LCAweDIwMDMsCi0JMHgwMDQ4LCAweGEwMDEsIDB4YTAwMSwgMHgyMDFjLCAweDkzOWMsIDB4MDA0OCwgMHgwMTIwLCAweDg0MjEsCi0JMHgxZGIwLCAweDAwNGUsIDB4MGM2MCwgMHgwMDRlLCAweDBjNDAsIDB4NjAxYywgMHhjMDg0LCAweDYwMWUsCi0JMHgwMDA1LCAweDJjMDgsIDB4NjIxYywgMHgwODBjLCAweDE2MTEsIDB4NzkzMCwgMHgwMDA1LCAweDJjMDgsCi0JMHg2MjFjLCAweDA4MGMsIDB4MTZiYywgMHg3OTMwLCAweDAwMDUsIDB4ODAwMSwgMHgxZGYwLCAweDAwMDUsCi0JMHgyMDMxLCAweDAwNjQsIDB4NzgxYywgMHg5MDg0LCAweDAwMDcsIDB4MDE3MCwgMHgyMDAxLCAweDAwMzgsCi0JMHgwYzQxLCAweDkxODYsIDB4MDA0MCwgMHgwOTA0LCAweDFiZDYsIDB4MjAwMSwgMHgwMDFlLCAweDBjNjksCi0JMHg4NjMxLCAweDFkODAsIDB4MDgwYywgMHgwZGM1LCAweDc4MWYsIDB4MDIwMiwgMHgyMDAxLCAweDAxNWQsCi0JMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgwZGFjLCAweDBjMDEsIDB4NzgxYywgMHhkMDg0LCAweDAxMTAsCi0JMHgwODYxLCAweDA0ZTAsIDB4MjAwMSwgMHgwMDMwLCAweDA4OTEsIDB4OTE4NiwgMHgwMDQwLCAweDA1NjgsCi0JMHg3ODFjLCAweGQwODQsIDB4MWRhOCwgMHg3ODFmLCAweDAxMDEsIDB4MjAwMSwgMHgwMDE0LCAweDA4NjksCi0JMHgyMDAxLCAweDAwMzcsIDB4MDgyMSwgMHg5MTg2LCAweDAwNDAsIDB4MDE0MCwgMHgyMDAxLCAweDAwMzAsCi0JMHgwODBjLCAweDFiNmYsIDB4OTE4NiwgMHgwMDQwLCAweDE5MGMsIDB4MGRjNSwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMjAwLCAweDY5MmMsIDB4ZDFmNCwgMHgxMTcwLCAweGQxYzQsIDB4MDE2MCwgMHhkMTljLCAweDAxMzAsCi0JMHg2ODAwLCAweDkwODUsIDB4MTgwMCwgMHg2ODAyLCAweDAwZGUsIDB4MDA4MCwgMHg2OTA4LCAweDkxODQsCi0JMHgwMDA3LCAweDFkYjAsIDB4MDBkZSwgMHg3ODFmLCAweDAxMDAsIDB4NzkxYywgMHg5MTg0LCAweDAwMDcsCi0JMHgwOTBjLCAweDBkYzUsIDB4YTAwMSwgMHhhMDAxLCAweDc4MWYsIDB4MDIwMCwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDI0MDAsIDB4MjA3MSwgMHgxYTY5LCAweDIwNzksIDB4MDA5MCwgMHgwMTJlLCAweDAwMDUsCi0JMHg5MjgwLCAweDAwMDUsIDB4MjAwNCwgMHgyMDQ4LCAweGE5N2MsIDB4ZDFkYywgMHgxOTA0LCAweDFjNzgsCi0JMHhhOTY0LCAweDkxODQsIDB4MDAwNywgMHgwMDAyLCAweDFiZjQsIDB4MWM2MywgMHgxYzBiLCAweDFjMGQsCi0JMHgxYzBiLCAweDFjNGIsIDB4MWMyYiwgMHgxYzFhLCAweDkxOGMsIDB4MDBmZiwgMHg5MTg2LCAweDAwMDgsCi0JMHgxMTcwLCAweGE4N2MsIDB4ZDBiNCwgMHgwOTA0LCAweDFlYTUsIDB4OTAwNiwgMHhhODQyLCAweGE4M2UsCi0JMHhhOTg4LCAweDI5MDAsIDB4YTg1YSwgMHhhODEzLCAweDIwYzIsIDB4MDgwNCwgMHgxYzc0LCAweDkxODYsCi0JMHgwMDQ4LCAweDA5MDQsIDB4MWM2MywgMHgwODBjLCAweDBkYzUsIDB4OTE4NCwgMHgwMGZmLCAweDkwODYsCi0JMHgwMDEzLCAweDA5MDQsIDB4MWM2MywgMHg5MTg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDFiLCAweDA5MDQsCi0JMHgxYzYzLCAweDBjODgsIDB4YTg3YywgMHhkMGI0LCAweDA5MDQsIDB4MWVhNSwgMHhhODkwLCAweGE4NDIsCi0JMHhhODNhLCAweGE4OGMsIDB4YTgzZSwgMHhhODM2LCAweGE4YWMsIDB4YTg0NiwgMHhhOGIwLCAweGE4NGEsCi0JMHhhOTg4LCAweDA4MDQsIDB4MWM2YiwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMWUsCi0JMHgxOWQwLCAweGE4N2MsIDB4ZDBiNCwgMHgwOTA0LCAweDFlYTUsIDB4YTg5MCwgMHhhODQyLCAweGE4M2EsCi0JMHhhODhjLCAweGE4M2UsIDB4YTgzNiwgMHhhOGFjLCAweGE4NDYsIDB4YThiMCwgMHhhODRhLCAweGE4MDQsCi0JMHhhODVhLCAweDIwNDAsIDB4YTA2NCwgMHg5MDg0LCAweDAwMGYsIDB4OTA4MCwgMHgyMGM3LCAweDIwMDUsCi0JMHhhODEyLCAweGE5ODgsIDB4MDQ0OCwgMHg5MThjLCAweDAwZmYsIDB4OTE4NiwgMHgwMDE1LCAweDE1NDAsCi0JMHhhODdjLCAweGQwYjQsIDB4MDkwNCwgMHgxZWE1LCAweGE4MDQsIDB4YTg1YSwgMHgyMDQwLCAweGEwNjQsCi0JMHg5MDg0LCAweDAwMGYsIDB4OTA4MCwgMHgyMGM3LCAweDIwMDUsIDB4YTgxMiwgMHhhOTg4LCAweDkwMDYsCi0JMHhhODQyLCAweGE4M2UsIDB4MDA4OCwgMHhhODdjLCAweGQwYjQsIDB4MDkwNCwgMHgxZWE1LCAweGE5ODgsCi0JMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwgMHgyOTAwLCAweGE4NWEsIDB4YTg2NCwgMHg5MDg0LCAweDAwMGYsCi0JMHg5MDgwLCAweDIwYzcsIDB4MjAwNSwgMHhhODEyLCAweGE5MTYsIDB4YTg3YywgMHhjMGRkLCAweGE4N2UsCi0JMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMDkwLCAweDc4MmMsIDB4ZDBmYywgMHgxOTBjLCAweDFlZWIsCi0JMHgwMGU2LCAweDIwNzEsIDB4MWE2OSwgMHg3MDAwLCAweDkwMDUsIDB4MTkwNCwgMHgxY2RmLCAweDcyMDYsCi0JMHg5MjgwLCAweDAwMDUsIDB4MjA0YywgMHg5MjgwLCAweDAwMDQsIDB4MjAwNCwgMHg3ODJiLCAweDAwMDQsCi0JMHgwMGY2LCAweDIwNzksIDB4MDIwMCwgMHg3ODAzLCAweDAwNDAsIDB4MDBmZSwgMHgwMGI2LCAweDIwNTgsCi0JMHhiODZjLCAweDc4MzYsIDB4Yjg5MCwgMHgwMGJlLCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc4MDMsCi0JMHgwMDQwLCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweDc4MWEsCi0JMHg3OGQ3LCAweDAwMDAsIDB4MDBmZSwgMHhhODE0LCAweDIwNTAsIDB4YTg1OCwgMHgyMDQwLCAweGE4MTAsCi0JMHgyMDYwLCAweGEwNjQsIDB4OTBlYywgMHgwMDBmLCAweGE5NDQsIDB4NzkxYSwgMHg3MTE2LCAweGE4NDgsCi0JMHg3ODFlLCAweDcwMWEsIDB4OTAwNiwgMHg3MDBlLCAweDcwMTIsIDB4NzAwNCwgMHhhOTQwLCAweGE4MzgsCi0JMHg5MTA2LCAweDE1MDAsIDB4YTkzYywgMHhhODM0LCAweDkxMDYsIDB4MTFlMCwgMHgwMDA2LCAweDAwMTYsCi0JMHhhOTM4LCAweGE4MzQsIDB4OTEwNSwgMHgwMTE4LCAweDAwMWUsIDB4MDAwZSwgMHgwMDk4LCAweDAwMWUsCi0JMHgwMDBlLCAweDhhZmYsIDB4MDFjOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweDAzMDYsCi0JMHgyMDBiLCAweDA4MDgsIDB4MDBkOSwgMHgwMTA4LCAweDAwYzksIDB4MDEyZSwgMHg5MDA2LCAweDAwZWUsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDAzNiwgMHgwMDQ2LCAweGFiMzgsIDB4YWMzNCwgMHgwODBjLCAweDIwZTcsCi0JMHgwMDRlLCAweDAwM2UsIDB4MGQzMCwgMHgwYzk4LCAweDkwODUsIDB4MDAwMSwgMHgwYzgwLCAweDIwMDksCi0JMHgwMzA2LCAweDIwMGIsIDB4NDgwMCwgMHg3MDI3LCAweDAwMDAsIDB4MDAwNSwgMHgwMDc2LCAweDAwNjYsCi0JMHgwMDU2LCAweDAwNDYsIDB4MDAzNiwgMHgwMDI2LCAweDhhZmYsIDB4MDkwNCwgMHgxZTllLCAweDcwMGMsCi0JMHg3MjE0LCAweDkyM2EsIDB4NzAxMCwgMHg3MjE4LCAweDkyMDMsIDB4MGEwNCwgMHgxZTlkLCAweDk3MDUsCi0JMHgwOTA0LCAweDFlOWQsIDB4OTAzZSwgMHgyNzMwLCAweGE4ODAsIDB4ZDBmYywgMHgxMTkwLCAweDJkMDAsCi0JMHgwMDAyLCAweDFlMjIsIDB4MWQ2MSwgMHgxZDYxLCAweDFlMjIsIDB4MWUyMiwgMHgxZGZmLCAweDFlMjIsCi0JMHgxZDYxLCAweDFlMDYsIDB4MWRiMCwgMHgxZGIwLCAweDFlMjIsIDB4MWUyMiwgMHgxZTIyLCAweDFkZjksCi0JMHgxZGIwLCAweGMwZmMsIDB4YTg4MiwgMHhhYjJjLCAweGFhMzAsIDB4YWQxYywgMHhhYzIwLCAweGRkOWMsCi0JMHgwOTA0LCAweDFlMmYsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsCi0JMHgwMDFiLCAweDAwMDIsIDB4MWQ0ZCwgMHgxZDRiLCAweDFkNGIsIDB4MWQ0YiwgMHgxZDRiLCAweDFkNGIsCi0JMHgxZDUxLCAweDFkNGIsIDB4MWQ0YiwgMHgxZDRiLCAweDFkNGIsIDB4MWQ0YiwgMHgxZDU1LCAweDFkNGIsCi0JMHgxZDRiLCAweDFkNGIsIDB4MWQ0YiwgMHgxZDRiLCAweDFkNTksIDB4MWQ0YiwgMHgxZDRiLCAweDFkNGIsCi0JMHgxZDRiLCAweDFkNGIsIDB4MWQ1ZCwgMHgwODBjLCAweDBkYzUsIDB4YTc3NCwgMHhhNjc4LCAweDA4MDQsCi0JMHgxZTJmLCAweGE3OGMsIDB4YTY5MCwgMHgwODA0LCAweDFlMmYsIDB4YTdhNCwgMHhhNmE4LCAweDA4MDQsCi0JMHgxZTJmLCAweGE3YmMsIDB4YTZjMCwgMHgwODA0LCAweDFlMmYsIDB4YTdkNCwgMHhhNmQ4LCAweDA4MDQsCi0JMHgxZTJmLCAweDJjMDUsIDB4OTA4YSwgMHgwMDM2LCAweDFhMGMsIDB4MGRjNSwgMHg5MDgyLCAweDAwMWIsCi0JMHgwMDAyLCAweDFkODQsIDB4MWQ4NCwgMHgxZDg2LCAweDFkODQsIDB4MWQ4NCwgMHgxZDg0LCAweDFkOGMsCi0JMHgxZDg0LCAweDFkODQsIDB4MWQ4NCwgMHgxZDkyLCAweDFkODQsIDB4MWQ4NCwgMHgxZDg0LCAweDFkOTgsCi0JMHgxZDg0LCAweDFkODQsIDB4MWQ4NCwgMHgxZDllLCAweDFkODQsIDB4MWQ4NCwgMHgxZDg0LCAweDFkYTQsCi0JMHgxZDg0LCAweDFkODQsIDB4MWQ4NCwgMHgxZGFhLCAweDA4MGMsIDB4MGRjNSwgMHhhNTc0LCAweGE0NzgsCi0JMHhhMzdjLCAweGEyODAsIDB4MDgwNCwgMHgxZTJmLCAweGE1ODQsIDB4YTQ4OCwgMHhhMzhjLCAweGEyOTAsCi0JMHgwODA0LCAweDFlMmYsIDB4YTU5NCwgMHhhNDk4LCAweGEzOWMsIDB4YTJhMCwgMHgwODA0LCAweDFlMmYsCi0JMHhhNWE0LCAweGE0YTgsIDB4YTNhYywgMHhhMmIwLCAweDA4MDQsIDB4MWUyZiwgMHhhNWI0LCAweGE0YjgsCi0JMHhhM2JjLCAweGEyYzAsIDB4MDgwNCwgMHgxZTJmLCAweGE1YzQsIDB4YTRjOCwgMHhhM2NjLCAweGEyZDAsCi0JMHgwODA0LCAweDFlMmYsIDB4YTVkNCwgMHhhNGQ4LCAweGEzZGMsIDB4YTJlMCwgMHgwODA0LCAweDFlMmYsCi0JMHgyYzA1LCAweDkwOGEsIDB4MDAzNCwgMHgxYTBjLCAweDBkYzUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsCi0JMHgxZGQzLCAweDFkZDEsIDB4MWRkMSwgMHgxZGQxLCAweDFkZDEsIDB4MWRkMSwgMHgxZGRiLCAweDFkZDEsCi0JMHgxZGQxLCAweDFkZDEsIDB4MWRkMSwgMHgxZGQxLCAweDFkZTMsIDB4MWRkMSwgMHgxZGQxLCAweDFkZDEsCi0JMHgxZGQxLCAweDFkZDEsIDB4MWRlYiwgMHgxZGQxLCAweDFkZDEsIDB4MWRkMSwgMHgxZGQxLCAweDFkZDEsCi0JMHgxZGYyLCAweDA4MGMsIDB4MGRjNSwgMHhhNTZjLCAweGE0NzAsIDB4YTc3NCwgMHhhNjc4LCAweGEzN2MsCi0JMHhhMjgwLCAweDA4MDQsIDB4MWUyZiwgMHhhNTg0LCAweGE0ODgsIDB4YTc4YywgMHhhNjkwLCAweGEzOTQsCi0JMHhhMjk4LCAweDA4MDQsIDB4MWUyZiwgMHhhNTljLCAweGE0YTAsIDB4YTdhNCwgMHhhNmE4LCAweGEzYWMsCi0JMHhhMmIwLCAweDA4MDQsIDB4MWUyZiwgMHhhNWI0LCAweGE0YjgsIDB4YTdiYywgMHhhNmMwLCAweGEzYzQsCi0JMHhhMmM4LCAweDA0ZTgsIDB4YTVjYywgMHhhNGQwLCAweGE3ZDQsIDB4YTZkOCwgMHhhM2RjLCAweGEyZTAsCi0JMHgwNGIwLCAweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAxZSwgMHgxNTE4LCAweDA4MGMsCi0JMHgyMDdmLCAweDE5MDQsIDB4MWNmYywgMHg5MDBlLCAweDA4MDQsIDB4MWU5ZSwgMHhhYjY0LCAweDkzOWMsCi0JMHgwMGZmLCAweDkzODYsIDB4MDA0OCwgMHgxMTgwLCAweDAwYzYsIDB4NzAwNCwgMHgyMDYwLCAweDYwMDQsCi0JMHg5MDg2LCAweDAwNDMsIDB4MDBjZSwgMHgwOTA0LCAweDFkYjAsIDB4YWI5YywgMHg5MDE2LCAweGFkOGMsCi0JMHhhYzkwLCAweGFmOTQsIDB4YWU5OCwgMHgwMDk4LCAweDkzODYsIDB4MDAwOCwgMHgwOTA0LCAweDFkYjAsCi0JMHgwODBjLCAweDBkYzUsIDB4YTk2NCwgMHg5MThjLCAweDAwZmYsIDB4OTE4NiwgMHgwMDEzLCAweDA5MDQsCi0JMHgxZDYxLCAweDkxODYsIDB4MDAxYiwgMHgwOTA0LCAweDFkYjAsIDB4MDgwYywgMHgwZGM1LCAweDIwMDksCi0JMHgwMzBmLCAweDIxMDQsIDB4ZDBmYywgMHgwNTM4LCAweDAwNjYsIDB4MjAwOSwgMHgwMzA2LCAweDIxMzQsCi0JMHgyMDBiLCAweDQwMDAsIDB4MjEwNCwgMHg5MDg0LCAweDAwMzAsIDB4MTViOCwgMHgyMDMxLCAweDEwMDAsCi0JMHgyNjAwLCAweDkzMDIsIDB4OTI4YiwgMHgwMDAwLCAweGE4MmUsIDB4YTkzMiwgMHgwMjc4LCAweDkxMDUsCi0JMHgwMTY4LCAweDIwMTEsIDB4MDAwMCwgMHgyNjE4LCAweDI2MDAsIDB4OTUwMCwgMHhhODFlLCAweDk0ODEsCi0JMHgwMDAwLCAweGE4MjIsIDB4YTg4MCwgMHhjMGZkLCAweGE4ODIsIDB4MDAyMCwgMHhhODJmLCAweDAwMDAsCi0JMHhhODMzLCAweDAwMDAsIDB4MDA2ZSwgMHg3YjEyLCAweDdhMTYsIDB4N2QwMiwgMHg3YzA2LCAweDdmMGEsCi0JMHg3ZTBlLCAweDc4MmIsIDB4MDAwMSwgMHg3MDAwLCAweDgwMDAsIDB4NzAwMiwgMHhhODNjLCAweDkzMDAsCi0JMHhhODNlLCAweGE4NDAsIDB4OTIwMSwgMHhhODQyLCAweDcwMGMsIDB4OTMwMCwgMHg3MDBlLCAweDcwMTAsCi0JMHg5MjAxLCAweDcwMTIsIDB4MDgwYywgMHgyMDdmLCAweDA0NDgsIDB4ZDZiNCwgMHgwMTEwLCAweDIwMGIsCi0JMHg0MDQwLCAweDIwMzEsIDB4MDA4MCwgMHg5NTg0LCAweDAwN2YsIDB4MDEwOCwgMHg5NjMyLCAweDcxMjQsCi0JMHg3MDAwLCAweDkwODYsIDB4MDAwMCwgMHgxMTk4LCAweGMxODUsIDB4NzEyNiwgMHgyMDA5LCAweDAzMDYsCi0JMHgyMTA0LCAweGQwYjQsIDB4MTkwNCwgMHgxZTQwLCAweDIwMGIsIDB4NDA0MCwgMHgyMDA5LCAweDFhODMsCi0JMHgyMTA0LCAweDgwMDAsIDB4MGEwNCwgMHgxZTQwLCAweDIwMGEsIDB4MDgwNCwgMHgxZTQwLCAweGMxOGQsCi0JMHg3MTI2LCAweGQxODQsIDB4MWQ1OCwgMHgwODA0LCAweDFlNDAsIDB4OTAwNiwgMHgwMDJlLCAweDAwM2UsCi0JMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwgMHgwMDdlLCAweDAwMDUsIDB4MDgwYywgMHgwZGM1LCAweDAwMjYsCi0JMHgyMDAxLCAweDAxMDUsIDB4MjAwMywgMHgwMDEwLCAweDc4MmIsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsCi0JMHg3MDA0LCAweDIwNjAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTE4LCAweGE4ODAsCi0JMHhjMGJkLCAweGE4ODIsIDB4NzgyYywgMHhkMGFjLCAweDFkZTgsIDB4MDgwYywgMHgxY2VmLCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMDYsIDB4MTE4MCwgMHgyMDYxLCAweDAxMDAsIDB4NjJjOCwgMHgyMDAxLCAweDAwZmEsCi0JMHg4MDAxLCAweDFkZjAsIDB4NjBjOCwgMHg5MjA2LCAweDFkYzAsIDB4NjBjNCwgMHhhODlhLCAweDYwYzgsCi0JMHhhODk2LCAweDcwMDQsIDB4MjA2MCwgMHgwMGM2LCAweDA4MGMsIDB4Y2NmMywgMHgwMGNlLCAweDIwMDEsCi0JMHgxOWY3LCAweDIwMDQsIDB4OWMwNiwgMHgxMTYwLCAweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDI0MDksCi0JMHgwODBjLCAweGFjMmIsIDB4MjAxMSwgMHgwMDAwLCAweDA4MGMsIDB4YWFjOSwgMHgwODBjLCAweDliZDMsCi0JMHgwMDJlLCAweDA4MDQsIDB4MjAyZiwgMHgwMTI2LCAweDIwOTEsIDB4MjQwMCwgMHhhODU4LCAweDIwNDAsCi0JMHg3OTJjLCAweDc4MmIsIDB4MDAwMiwgMHg5MTg0LCAweDA3MDAsIDB4MTkwNCwgMHgxZWE3LCAweDcwMDAsCi0JMHgwMDAyLCAweDIwMmYsIDB4MWVmZCwgMHgxZjdkLCAweDIwMmQsIDB4ODAwMSwgMHg3MDAyLCAweDcwMjcsCi0JMHgwMDAwLCAweGQxOWMsIDB4MTE1OCwgMHg4YWZmLCAweDA5MDQsIDB4MWY0YSwgMHgwODBjLCAweDFjZjYsCi0JMHgwOTA0LCAweDIwMmYsIDB4MDgwYywgMHgxY2Y2LCAweDA4MDQsIDB4MjAyZiwgMHg3ODJiLCAweDAwMDQsCi0JMHhkMTk0LCAweDAxNDgsIDB4YTg4MCwgMHhjMGZjLCAweGE4ODIsIDB4OGFmZiwgMHgxNTE4LCAweGE4N2MsCi0JMHhjMGY1LCAweGE4N2UsIDB4MDBmOCwgMHgwMDI2LCAweDAwMzYsIDB4YWIzYywgMHhhYTQwLCAweDAwMTYsCi0JMHg3OTEwLCAweGE4MmMsIDB4OTEwMCwgMHhhODJlLCAweDc5MTQsIDB4YTgzMCwgMHg5MTAxLCAweGE4MzIsCi0JMHgwMDFlLCAweDc4MTAsIDB4OTMxYSwgMHg3ODE0LCAweDkyMTMsIDB4NzgwMCwgMHhhODFlLCAweDc4MDQsCi0JMHhhODIyLCAweGFiM2UsIDB4YWE0MiwgMHgwMDNlLCAweDAwMmUsIDB4MDgwYywgMHgyMDlhLCAweGE4ODAsCi0JMHhjMGZkLCAweGE4ODIsIDB4MmEwMCwgMHhhODE2LCAweDI4MDAsIDB4YTg1YSwgMHgyYzAwLCAweGE4MTIsCi0JMHg3MDAzLCAweDAwMDAsIDB4MjAwOSwgMHgwMzA2LCAweDIwMGIsIDB4NDgwMCwgMHg3MDI3LCAweDAwMDAsCi0JMHgwODA0LCAweDIwMmYsIDB4MDBmNiwgMHgwMDI2LCAweDc4MWMsIDB4MDAwNiwgMHg3ODE4LCAweDAwMDYsCi0JMHgyMDc5LCAweDAxMDAsIDB4N2ExNCwgMHg5Mjg0LCAweDE5ODQsIDB4OTA4NSwgMHgwMDEyLCAweDc4MTYsCi0JMHgwMDM2LCAweDIwMTksIDB4MTAwMCwgMHg4MzE5LCAweDA5MGMsIDB4MGRjNSwgMHg3ODIwLCAweGQwYmMsCi0JMHgxZGQwLCAweDAwM2UsIDB4NzljOCwgMHgwMDBlLCAweDkxMDIsIDB4MDAxZSwgMHgwMDA2LCAweDAwMTYsCi0JMHg3OWM0LCAweDAwMGUsIDB4OTEwMywgMHg3OGM2LCAweDAwMGUsIDB4NzhjYSwgMHg5Mjg0LCAweDE5ODQsCi0JMHg5MDg1LCAweDAwMTIsIDB4NzgxNiwgMHgwMDJlLCAweDAwZmUsIDB4NzgyYiwgMHgwMDA4LCAweDcwMDMsCi0JMHgwMDAwLCAweDA4MGMsIDB4MWNlZiwgMHgwODA0LCAweDIwMmYsIDB4ODAwMSwgMHg3MDAyLCAweDcwMjQsCi0JMHg4MDA0LCAweDcwMjYsIDB4ZDE5NCwgMHgwMTcwLCAweDc4MmMsIDB4ZDBmYywgMHgxOTA0LCAweDFlZjAsCi0JMHhkMTljLCAweDE5MDQsIDB4MjAyYiwgMHg4YWZmLCAweDA5MDQsIDB4MjAyZiwgMHgwODBjLCAweDFjZjYsCi0JMHgwODA0LCAweDIwMmYsIDB4MDAyNiwgMHgwMDM2LCAweGFiM2MsIDB4YWE0MCwgMHgwODBjLCAweDIwOWEsCi0JMHhkZDljLCAweDE5MDQsIDB4MWZlYSwgMHgyYzA1LCAweDkwOGEsIDB4MDAzNiwgMHgxYTBjLCAweDBkYzUsCi0JMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwgMHgxZmJlLCAweDFmYmUsIDB4MWZjMCwgMHgxZmJlLCAweDFmYmUsCi0JMHgxZmJlLCAweDFmYzYsIDB4MWZiZSwgMHgxZmJlLCAweDFmYmUsIDB4MWZjYywgMHgxZmJlLCAweDFmYmUsCi0JMHgxZmJlLCAweDFmZDIsIDB4MWZiZSwgMHgxZmJlLCAweDFmYmUsIDB4MWZkOCwgMHgxZmJlLCAweDFmYmUsCi0JMHgxZmJlLCAweDFmZGUsIDB4MWZiZSwgMHgxZmJlLCAweDFmYmUsIDB4MWZlNCwgMHgwODBjLCAweDBkYzUsCi0JMHhhMDdjLCAweDkzMWEsIDB4YTA4MCwgMHg5MjEzLCAweDA4MDQsIDB4MWYxZiwgMHhhMDhjLCAweDkzMWEsCi0JMHhhMDkwLCAweDkyMTMsIDB4MDgwNCwgMHgxZjFmLCAweGEwOWMsIDB4OTMxYSwgMHhhMGEwLCAweDkyMTMsCi0JMHgwODA0LCAweDFmMWYsIDB4YTBhYywgMHg5MzFhLCAweGEwYjAsIDB4OTIxMywgMHgwODA0LCAweDFmMWYsCi0JMHhhMGJjLCAweDkzMWEsIDB4YTBjMCwgMHg5MjEzLCAweDA4MDQsIDB4MWYxZiwgMHhhMGNjLCAweDkzMWEsCi0JMHhhMGQwLCAweDkyMTMsIDB4MDgwNCwgMHgxZjFmLCAweGEwZGMsIDB4OTMxYSwgMHhhMGUwLCAweDkyMTMsCi0JMHgwODA0LCAweDFmMWYsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsCi0JMHgwMDFiLCAweDAwMDIsIDB4MjAwZCwgMHgyMDBiLCAweDIwMGIsIDB4MjAwYiwgMHgyMDBiLCAweDIwMGIsCi0JMHgyMDEzLCAweDIwMGIsIDB4MjAwYiwgMHgyMDBiLCAweDIwMGIsIDB4MjAwYiwgMHgyMDE5LCAweDIwMGIsCi0JMHgyMDBiLCAweDIwMGIsIDB4MjAwYiwgMHgyMDBiLCAweDIwMWYsIDB4MjAwYiwgMHgyMDBiLCAweDIwMGIsCi0JMHgyMDBiLCAweDIwMGIsIDB4MjAyNSwgMHgwODBjLCAweDBkYzUsIDB4YTA3YywgMHg5MzFhLCAweGEwODAsCi0JMHg5MjEzLCAweDA4MDQsIDB4MWYxZiwgMHhhMDk0LCAweDkzMWEsIDB4YTA5OCwgMHg5MjEzLCAweDA4MDQsCi0JMHgxZjFmLCAweGEwYWMsIDB4OTMxYSwgMHhhMGIwLCAweDkyMTMsIDB4MDgwNCwgMHgxZjFmLCAweGEwYzQsCi0JMHg5MzFhLCAweGEwYzgsIDB4OTIxMywgMHgwODA0LCAweDFmMWYsIDB4YTBkYywgMHg5MzFhLCAweGEwZTAsCi0JMHg5MjEzLCAweDA4MDQsIDB4MWYxZiwgMHgwODA0LCAweDFmMWIsIDB4MDgwYywgMHgwZGM1LCAweDAxMmUsCi0JMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgyMDcxLCAweDFhNjksIDB4NzAwMCwgMHg5MDg2LCAweDAwMDAsCi0JMHgwOTA0LCAweDIwN2EsIDB4MjA3OSwgMHgwMDkwLCAweDIwMDksIDB4MDIwNywgMHgyMTBjLCAweGQxOTQsCi0JMHgwMWI4LCAweDIwMDksIDB4MDIwYywgMHgyMTBjLCAweDkxODQsIDB4MDAwMywgMHgwMTg4LCAweDA4MGMsCi0JMHhmMGEwLCAweDIwMDEsIDB4MDEzMywgMHgyMDA0LCAweDkwMDUsIDB4MDkwYywgMHgwZGM1LCAweDAwMTYsCi0JMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyNDA5LCAweDAwMWUsIDB4MjAwMSwgMHgwMjBjLCAweDIxMDIsCi0JMHgyMDA5LCAweDAyMDYsIDB4MjEwNCwgMHgyMDA5LCAweDAyMDMsIDB4MjEwYywgMHg5MTA2LCAweDExMjAsCi0JMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyNDA5LCAweDc4MmMsIDB4ZDBmYywgMHgwOWE4LCAweDA4MGMsCi0JMHgxZWViLCAweDcwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDE5NzgsIDB4NzgyYiwgMHgwMDA0LCAweDc4MmMsCi0JMHhkMGFjLCAweDFkZTgsIDB4MjAwOSwgMHgwMDQwLCAweDA4MGMsIDB4MjQwOSwgMHg3ODJiLCAweDAwMDIsCi0JMHg3MDAzLCAweDAwMDAsIDB4MDgwYywgMHgxY2VmLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweGE4ODAsCi0JMHhkMGZjLCAweDExYTgsIDB4OGM2MCwgMHgyYzA1LCAweDkwMDUsIDB4MDExMCwgMHg4YTUxLCAweDAwMDUsCi0JMHhhMDA0LCAweDkwMDUsIDB4MDE2OCwgMHhhODVhLCAweDIwNDAsIDB4YTA2NCwgMHg5MDg0LCAweDAwMGYsCi0JMHg5MDgwLCAweDIwYzcsIDB4MjA2NSwgMHg4Y2ZmLCAweDA5MGMsIDB4MGRjNSwgMHg4YTUxLCAweDAwMDUsCi0JMHgyMDUwLCAweDAwMDUsIDB4YTg4MCwgMHhkMGZjLCAweDExYjgsIDB4OGE1MCwgMHg4YzYxLCAweDJjMDUsCi0JMHg5MDA1LCAweDExOTAsIDB4MjgwMCwgMHg5OTA2LCAweDAxMjAsIDB4YTAwMCwgMHg5MDA1LCAweDExMDgsCi0JMHgyOTAwLCAweDIwNDAsIDB4YTg1YSwgMHhhMDY0LCAweDkwODQsIDB4MDAwZiwgMHg5MDgwLCAweDIwZDcsCi0JMHgyMDY1LCAweDhjZmYsIDB4MDkwYywgMHgwZGM1LCAweDAwMDUsIDB4MDAwMCwgMHgwMDFkLCAweDAwMjEsCi0JMHgwMDI1LCAweDAwMjksIDB4MDAyZCwgMHgwMDMxLCAweDAwMzUsIDB4MDAwMCwgMHgwMDFiLCAweDAwMjEsCi0JMHgwMDI3LCAweDAwMmQsIDB4MDAzMywgMHgwMDAwLCAweDAwMDAsIDB4MDAyMywgMHgwMDAwLCAweDAwMDAsCi0JMHgyMGJhLCAweDIwYjYsIDB4MjBiYSwgMHgyMGJhLCAweDIwYzQsIDB4MDAwMCwgMHgyMGJhLCAweDIwYzEsCi0JMHgyMGMxLCAweDIwYmUsIDB4MjBjMSwgMHgyMGMxLCAweDAwMDAsIDB4MjBjNCwgMHgyMGMxLCAweDAwMDAsCi0JMHgyMGJjLCAweDIwYmMsIDB4MDAwMCwgMHgyMGJjLCAweDIwYzQsIDB4MDAwMCwgMHgyMGJjLCAweDIwYzIsCi0JMHgyMGMyLCAweDIwYzIsIDB4MDAwMCwgMHgyMGMyLCAweDAwMDAsIDB4MjBjNCwgMHgyMGMyLCAweDAwYzYsCi0JMHgwMGQ2LCAweDAwODYsIDB4YWI0MiwgMHhhYzNlLCAweGE4ODgsIDB4OTA1NSwgMHgwOTA0LCAweDIyYzYsCi0JMHgyOTQwLCAweGEwNjQsIDB4OTBlYywgMHgwMDBmLCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDgsCi0JMHgxMTE4LCAweDIwNjEsIDB4MjBjMiwgMHgwMGQwLCAweDlkZTAsIDB4MjBjNywgMHg5ZDg2LCAweDAwMDcsCi0JMHgwMTMwLCAweDlkODYsIDB4MDAwZSwgMHgwMTE4LCAweDlkODYsIDB4MDAwZiwgMHgxMTIwLCAweGEwOGMsCi0JMHg5NDIyLCAweGEwOTAsIDB4OTMxYiwgMHgyYzA1LCAweDkwNjUsIDB4MTE0MCwgMHgwMzEwLCAweDA4MDQsCi0JMHgyMmM2LCAweGEwMDQsIDB4OTA0NSwgMHgwOTA0LCAweDIyYzYsIDB4MDhkOCwgMHgyYzA1LCAweDkwMDUsCi0JMHgwOTA0LCAweDIxYWUsIDB4ZGQ5YywgMHgxOTA0LCAweDIxNmEsIDB4OTA4YSwgMHgwMDM2LCAweDFhMGMsCi0JMHgwZGM1LCAweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDIxM2YsIDB4MjEzZiwgMHgyMTQxLCAweDIxM2YsCi0JMHgyMTNmLCAweDIxM2YsIDB4MjE0NywgMHgyMTNmLCAweDIxM2YsIDB4MjEzZiwgMHgyMTRkLCAweDIxM2YsCi0JMHgyMTNmLCAweDIxM2YsIDB4MjE1MywgMHgyMTNmLCAweDIxM2YsIDB4MjEzZiwgMHgyMTU5LCAweDIxM2YsCi0JMHgyMTNmLCAweDIxM2YsIDB4MjE1ZiwgMHgyMTNmLCAweDIxM2YsIDB4MjEzZiwgMHgyMTY1LCAweDA4MGMsCi0JMHgwZGM1LCAweGEwN2MsIDB4OTQyMiwgMHhhMDgwLCAweDkzMWIsIDB4MDgwNCwgMHgyMWE0LCAweGEwOGMsCi0JMHg5NDIyLCAweGEwOTAsIDB4OTMxYiwgMHgwODA0LCAweDIxYTQsIDB4YTA5YywgMHg5NDIyLCAweGEwYTAsCi0JMHg5MzFiLCAweDA4MDQsIDB4MjFhNCwgMHhhMGFjLCAweDk0MjIsIDB4YTBiMCwgMHg5MzFiLCAweDA4MDQsCi0JMHgyMWE0LCAweGEwYmMsIDB4OTQyMiwgMHhhMGMwLCAweDkzMWIsIDB4MDgwNCwgMHgyMWE0LCAweGEwY2MsCi0JMHg5NDIyLCAweGEwZDAsIDB4OTMxYiwgMHgwODA0LCAweDIxYTQsIDB4YTBkYywgMHg5NDIyLCAweGEwZTAsCi0JMHg5MzFiLCAweDA0ZDAsIDB4OTA4YSwgMHgwMDM0LCAweDFhMGMsIDB4MGRjNSwgMHg5MDgyLCAweDAwMWIsCi0JMHgwMDAyLCAweDIxOGMsIDB4MjE4YSwgMHgyMThhLCAweDIxOGEsIDB4MjE4YSwgMHgyMThhLCAweDIxOTEsCi0JMHgyMThhLCAweDIxOGEsIDB4MjE4YSwgMHgyMThhLCAweDIxOGEsIDB4MjE5NiwgMHgyMThhLCAweDIxOGEsCi0JMHgyMThhLCAweDIxOGEsIDB4MjE4YSwgMHgyMTliLCAweDIxOGEsIDB4MjE4YSwgMHgyMThhLCAweDIxOGEsCi0JMHgyMThhLCAweDIxYTAsIDB4MDgwYywgMHgwZGM1LCAweGEwN2MsIDB4OTQyMiwgMHhhMDgwLCAweDkzMWIsCi0JMHgwMDk4LCAweGEwOTQsIDB4OTQyMiwgMHhhMDk4LCAweDkzMWIsIDB4MDA3MCwgMHhhMGFjLCAweDk0MjIsCi0JMHhhMGIwLCAweDkzMWIsIDB4MDA0OCwgMHhhMGM0LCAweDk0MjIsIDB4YTBjOCwgMHg5MzFiLCAweDAwMjAsCi0JMHhhMGRjLCAweDk0MjIsIDB4YTBlMCwgMHg5MzFiLCAweDA2MzAsIDB4MjMwMCwgMHg5NDA1LCAweDAxNjAsCi0JMHg4YTUxLCAweDA5MDQsIDB4MjJjNiwgMHg4YzYwLCAweDA4MDQsIDB4MjExNiwgMHhhMDA0LCAweDkwNDUsCi0JMHgwOTA0LCAweDIyYzYsIDB4MDgwNCwgMHgyMGYxLCAweDhhNTEsIDB4MDkwNCwgMHgyMmM2LCAweDhjNjAsCi0JMHgyYzA1LCAweDkwMDUsIDB4MTE1OCwgMHhhMDA0LCAweDkwNDUsIDB4MDkwNCwgMHgyMmM2LCAweGEwNjQsCi0JMHg5MGVjLCAweDAwMGYsIDB4OWRlMCwgMHgyMGM3LCAweDJjMDUsIDB4MjA2MCwgMHhhODgwLCAweGMwZmMsCi0JMHhhODgyLCAweDA4MDQsIDB4MjJiYiwgMHgyYzA1LCAweDg0MjIsIDB4ODQyMCwgMHg4MzFhLCAweDkzOTksCi0JMHgwMDAwLCAweGFjMmUsIDB4YWIzMiwgMHhkZDljLCAweDE5MDQsIDB4MjI1OCwgMHg5MDgyLCAweDAwMWIsCi0JMHgwMDAyLCAweDIxZjQsIDB4MjFmNCwgMHgyMWY2LCAweDIxZjQsIDB4MjFmNCwgMHgyMWY0LCAweDIyMDQsCi0JMHgyMWY0LCAweDIxZjQsIDB4MjFmNCwgMHgyMjEyLCAweDIxZjQsIDB4MjFmNCwgMHgyMWY0LCAweDIyMjAsCi0JMHgyMWY0LCAweDIxZjQsIDB4MjFmNCwgMHgyMjJlLCAweDIxZjQsIDB4MjFmNCwgMHgyMWY0LCAweDIyM2MsCi0JMHgyMWY0LCAweDIxZjQsIDB4MjFmNCwgMHgyMjRhLCAweDA4MGMsIDB4MGRjNSwgMHhhMTdjLCAweDI0MDAsCi0JMHg5MTIyLCAweGExODAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGRjNSwgMHhhMDc0LCAweDk0MjAsCi0JMHhhMDc4LCAweDkzMTksIDB4MDgwNCwgMHgyMmI2LCAweGExOGMsIDB4MjQwMCwgMHg5MTIyLCAweGExOTAsCi0JMHgyMzAwLCAweDkxMWIsIDB4MGEwYywgMHgwZGM1LCAweGEwODQsIDB4OTQyMCwgMHhhMDg4LCAweDkzMTksCi0JMHgwODA0LCAweDIyYjYsIDB4YTE5YywgMHgyNDAwLCAweDkxMjIsIDB4YTFhMCwgMHgyMzAwLCAweDkxMWIsCi0JMHgwYTBjLCAweDBkYzUsIDB4YTA5NCwgMHg5NDIwLCAweGEwOTgsIDB4OTMxOSwgMHgwODA0LCAweDIyYjYsCi0JMHhhMWFjLCAweDI0MDAsIDB4OTEyMiwgMHhhMWIwLCAweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkYzUsCi0JMHhhMGE0LCAweDk0MjAsIDB4YTBhOCwgMHg5MzE5LCAweDA4MDQsIDB4MjJiNiwgMHhhMWJjLCAweDI0MDAsCi0JMHg5MTIyLCAweGExYzAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGRjNSwgMHhhMGI0LCAweDk0MjAsCi0JMHhhMGI4LCAweDkzMTksIDB4MDgwNCwgMHgyMmI2LCAweGExY2MsIDB4MjQwMCwgMHg5MTIyLCAweGExZDAsCi0JMHgyMzAwLCAweDkxMWIsIDB4MGEwYywgMHgwZGM1LCAweGEwYzQsIDB4OTQyMCwgMHhhMGM4LCAweDkzMTksCi0JMHgwODA0LCAweDIyYjYsIDB4YTFkYywgMHgyNDAwLCAweDkxMjIsIDB4YTFlMCwgMHgyMzAwLCAweDkxMWIsCi0JMHgwYTBjLCAweDBkYzUsIDB4YTBkNCwgMHg5NDIwLCAweGEwZDgsIDB4OTMxOSwgMHgwODA0LCAweDIyYjYsCi0JMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwgMHgyMjc2LCAweDIyNzQsIDB4MjI3NCwgMHgyMjc0LCAweDIyNzQsCi0JMHgyMjc0LCAweDIyODMsIDB4MjI3NCwgMHgyMjc0LCAweDIyNzQsIDB4MjI3NCwgMHgyMjc0LCAweDIyOTAsCi0JMHgyMjc0LCAweDIyNzQsIDB4MjI3NCwgMHgyMjc0LCAweDIyNzQsIDB4MjI5ZCwgMHgyMjc0LCAweDIyNzQsCi0JMHgyMjc0LCAweDIyNzQsIDB4MjI3NCwgMHgyMmFhLCAweDA4MGMsIDB4MGRjNSwgMHhhMTdjLCAweDI0MDAsCi0JMHg5MTIyLCAweGExODAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGRjNSwgMHhhMDZjLCAweDk0MjAsCi0JMHhhMDcwLCAweDkzMTksIDB4MDQ5OCwgMHhhMTk0LCAweDI0MDAsIDB4OTEyMiwgMHhhMTk4LCAweDIzMDAsCi0JMHg5MTFiLCAweDBhMGMsIDB4MGRjNSwgMHhhMDg0LCAweDk0MjAsIDB4YTA4OCwgMHg5MzE5LCAweDA0MzAsCi0JMHhhMWFjLCAweDI0MDAsIDB4OTEyMiwgMHhhMWIwLCAweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkYzUsCi0JMHhhMDljLCAweDk0MjAsIDB4YTBhMCwgMHg5MzE5LCAweDAwYzgsIDB4YTFjNCwgMHgyNDAwLCAweDkxMjIsCi0JMHhhMWM4LCAweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkYzUsIDB4YTBiNCwgMHg5NDIwLCAweGEwYjgsCi0JMHg5MzE5LCAweDAwNjAsIDB4YTFkYywgMHgyNDAwLCAweDkxMjIsIDB4YTFlMCwgMHgyMzAwLCAweDkxMWIsCi0JMHgwYTBjLCAweDBkYzUsIDB4YTBjYywgMHg5NDIwLCAweGEwZDAsIDB4OTMxOSwgMHhhYzFlLCAweGFiMjIsCi0JMHhhODgwLCAweGMwZmQsIDB4YTg4MiwgMHgyODAwLCAweGE4NWEsIDB4MmMwMCwgMHhhODEyLCAweDJhMDAsCi0JMHhhODE2LCAweDAwMGUsIDB4MDAwZSwgMHgwMDBlLCAweDkwMDYsIDB4MDAyOCwgMHgwMDhlLCAweDAwZGUsCi0JMHgwMGNlLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDIwMDEsIDB4MDAwNSwgMHgyMDA0LCAweGQwYmMsCi0JMHgxOTBjLCAweDBkYmUsIDB4OTA4NCwgMHgwMDA3LCAweDAwMDIsIDB4MjJlNywgMHgxZWViLCAweDIyZTcsCi0JMHgyMmRkLCAweDIyZTAsIDB4MjJlMywgMHgyMmUwLCAweDIyZTMsIDB4MDgwYywgMHgxZWViLCAweDAwMDUsCi0JMHgwODBjLCAweDExYjIsIDB4MDAwNSwgMHgwODBjLCAweDFlZWIsIDB4MDgwYywgMHgxMWIyLCAweDAwMDUsCi0JMHgwMTI2LCAweDIwOTEsIDB4MjYwMCwgMHgyMDc5LCAweDAyMDAsIDB4MjA3MSwgMHgwMjYwLCAweDIwNjksCi0JMHgxODAwLCAweDc4MTcsIDB4MDAwMCwgMHg3ODliLCAweDA4MTQsIDB4NzhhMywgMHgwNDA2LCAweDc4OWYsCi0JMHgwNDEwLCAweDIwMDksIDB4MDEzYiwgMHgyMDBiLCAweDA0MDAsIDB4NzgxYiwgMHgwMDAyLCAweDc4M2IsCi0JMHgwMDFmLCAweDc4MzcsIDB4MDAyMCwgMHg3ODAzLCAweDE2MDAsIDB4MDEyZSwgMHgwMDA1LCAweDIwOTEsCi0JMHgyNjAwLCAweDc4MWMsIDB4ZDBhNCwgMHgxOTBjLCAweDI0MDYsIDB4NzkwMCwgMHhkMWRjLCAweDExMTgsCi0JMHg5MDg0LCAweDAwMDYsIDB4MDAxYSwgMHg5MDg0LCAweDAwMGUsIDB4MDAwMiwgMHgyMzJlLCAweDIzMjYsCi0JMHg4MDgxLCAweDIzMjYsIDB4MjMyOCwgMHgyMzI4LCAweDIzMjgsIDB4MjMyOCwgMHg4MDY3LCAweDIzMjYsCi0JMHgyMzJhLCAweDIzMjYsIDB4MjMyOCwgMHgyMzI2LCAweDIzMjgsIDB4MjMyNiwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDMxLCAweDAwMjAsIDB4MDgwYywgMHg4MDY3LCAweDA4MGMsIDB4ODA4MSwgMHgwMDA1LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwMjYsIDB4MDgwYywgMHhmMGEwLCAweDc5MzAsIDB4OTE4NCwgMHgwMDAzLCAweDAxYzAsCi0JMHgyMDAxLCAweDE5ZjcsIDB4MjAwNCwgMHg5MDA1LCAweDAxNzAsIDB4MjAwMSwgMHgwMTMzLCAweDIwMDQsCi0JMHg5MDA1LCAweDA5MGMsIDB4MGRjNSwgMHgwMGM2LCAweDIwMDEsIDB4MTlmNywgMHgyMDY0LCAweDA4MGMsCi0JMHhjY2YzLCAweDAwY2UsIDB4MDBmOCwgMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyNDA5LCAweDAwZDAsCi0JMHg5MTg0LCAweDAwMTQsIDB4MDFhMCwgMHg2YTAwLCAweDkyODYsIDB4MDAwMywgMHgwMTYwLCAweDA4MGMsCi0JMHg3NjM3LCAweDExMzgsIDB4MDgwYywgMHg3OTMyLCAweDA4MGMsIDB4NjEyZSwgMHgwODBjLCAweDc1NjMsCi0JMHgwMDEwLCAweDA4MGMsIDB4NWZlZCwgMHgwODBjLCAweDgxMzAsIDB4MDA0MSwgMHgwMDE4LCAweDkxODQsCi0JMHg5NTQwLCAweDFkYzgsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGU2LCAweDAwMzYsCi0JMHgwMDQ2LCAweDAwNTYsIDB4MjA3MSwgMHgxYTY1LCAweDA4MGMsIDB4MWFkOSwgMHgwMDVlLCAweDAwNGUsCi0JMHgwMDNlLCAweDAwZWUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MmUwMCwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MTI4LCAweDIwMDEsIDB4MTk2ZiwgMHgyMTAyLCAweDIwMDEsIDB4MTk3NywgMHgyMTAyLCAweDIwMDEsCi0JMHgwMTNiLCAweDIxMDIsIDB4MjA3OSwgMHgwMjAwLCAweDIwMDEsIDB4MDIwMSwgMHg3ODllLCAweDc4YTMsCi0JMHgwMjAwLCAweDkxOTgsIDB4MDAwNywgMHg4MzFjLCAweDgzMWMsIDB4ODMxYywgMHg5Mzk4LCAweDAwMDUsCi0JMHgyMzIwLCAweDkxODIsIDB4MDIwNCwgMHgxMjMwLCAweDIwMTEsIDB4MDAwOCwgMHg4NDIzLCAweDg0MjMsCi0JMHg4NDIzLCAweDA0ODgsIDB4OTE4MiwgMHgwMjRjLCAweDEyNDAsIDB4MjAxMSwgMHgwMDA3LCAweDg0MDMsCi0JMHg4MDAzLCAweDk0MDAsIDB4OTQwMCwgMHg5NDIwLCAweDA0MzAsIDB4OTE4MiwgMHgwMmJjLCAweDEyMzgsCi0JMHgyMDExLCAweDAwMDYsIDB4ODQwMywgMHg4MDAzLCAweDk0MDAsIDB4OTQyMCwgMHgwMGUwLCAweDkxODIsCi0JMHgwMzRjLCAweDEyMzAsIDB4MjAxMSwgMHgwMDA1LCAweDg0MDMsIDB4ODAwMywgMHg5NDIwLCAweDAwOTgsCi0JMHg5MTgyLCAweDA0MmMsIDB4MTIyOCwgMHgyMDExLCAweDAwMDQsIDB4ODQyMywgMHg4NDIzLCAweDAwNTgsCi0JMHg5MTgyLCAweDA1OWMsIDB4MTIyOCwgMHgyMDExLCAweDAwMDMsIDB4ODQwMywgMHg5NDIwLCAweDAwMTgsCi0JMHgyMDExLCAweDAwMDIsIDB4ODQyMywgMHg5NDgyLCAweDAyMjgsIDB4ODAwMiwgMHg4MDIwLCAweDgzMDEsCi0JMHg5NDAyLCAweDAxMTAsIDB4MDIwOCwgMHg4MzIxLCAweDgyMTcsIDB4ODIwMywgMHg5NDA1LCAweDc4OWEsCi0JMHgwMTJlLCAweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHg2ODE0LCAweDkwODQsCi0JMHhmZmMwLCAweDkxMGQsIDB4NjkxNiwgMHgwMGRlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMjAwLCAweDkwMDUsIDB4NjgxMCwgMHgwMTEwLCAweGMwYTUsIDB4MDAwOCwgMHhjMGE0LCAweDY4MTIsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHg2ODEwLCAweDkwODQsCi0JMHhmZmY4LCAweDkxMGQsIDB4NjkxMiwgMHgwMGRlLCAweDAwMGUsIDB4MDAwNSwgMHg3OTM4LCAweDA4MGMsCi0JMHgwZGJlLCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc5MDIsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsCi0JMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwgMHg3OTAyLCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsCi0JMHhhMDAxLCAweGEwMDEsIDB4MDBmZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDIwNjEsCi0JMHgwMTAwLCAweDIwNzEsIDB4MTgwMCwgMHgyMDA5LCAweDAwMDAsIDB4MDgwYywgMHgyYzY3LCAweDA4MGMsCi0JMHgyYjgyLCAweDYwNTQsIDB4ODAwNCwgMHg4MDA0LCAweDgwMDQsIDB4ODAwNCwgMHg5MDg0LCAweDAwMGMsCi0JMHg2MTUwLCAweDkxOGMsIDB4ZmZmMywgMHg5MTA1LCAweDYwNTIsIDB4NjA1MCwgMHg5MDg0LCAweGIxN2YsCi0JMHg5MDg1LCAweDIwMDAsIDB4NjA1MiwgMHgyMDA5LCAweDE5OWQsIDB4MjAxMSwgMHgxOTllLCAweDYzNTgsCi0JMHg5MzljLCAweDM4ZjAsIDB4MjMyMCwgMHgwODBjLCAweDJiYzYsIDB4MTIzOCwgMHg5MzlkLCAweDQwMDMsCi0JMHg5NGE1LCAweDg2MDMsIDB4MjMwYSwgMHgyNDEyLCAweDAwMzAsIDB4OTM5ZCwgMHgwMjAzLCAweDk0YTUsCi0JMHg4NjAzLCAweDIzMGEsIDB4MjQxMiwgMHg5MDA2LCAweDA4MGMsIDB4MmJiMSwgMHg5MDA2LCAweDA4MGMsCi0JMHgyYjk0LCAweDIwYTksIDB4MDAxMiwgMHgxZDA0LCAweDI0NWIsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsCi0JMHgyNDViLCAweDYwMmYsIDB4MDEwMCwgMHg2MDJmLCAweDAwMDAsIDB4NjA1MCwgMHg5MDg1LCAweDA0MDAsCi0JMHg5MDg0LCAweGRmZmYsIDB4NjA1MiwgMHg2MDI0LCAweDYwMjYsIDB4MDgwYywgMHgyOGFjLCAweDIwMDksCi0JMHgwMGVmLCAweDYxMzIsIDB4NjEzNiwgMHgwODBjLCAweDI4YmMsIDB4NjBlNywgMHgwMDAwLCAweDYxZWEsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDIwMDEsIDB4MDAwMiwgMHgxMTEwLCAweDIwMDEsCi0JMHgwMDA4LCAweDYwZTIsIDB4NjA0YiwgMHhmN2Y3LCAweDYwNDMsIDB4MDAwMCwgMHg2MDJmLCAweDAwODAsCi0JMHg2MDJmLCAweDAwMDAsIDB4NjAwNywgMHgzNDlmLCAweDYwYmIsIDB4MDAwMCwgMHgyMGE5LCAweDAwMTgsCi0JMHg2MGJmLCAweDAwMDAsIDB4MWYwNCwgMHgyNDkwLCAweDYwYmIsIDB4MDAwMCwgMHg2MGJmLCAweDAxMDgsCi0JMHg2MGJmLCAweDAwMTIsIDB4NjBiZiwgMHgwNDA1LCAweDYwYmYsIDB4MDAxNCwgMHg2MGJmLCAweDAzMjAsCi0JMHg2MGJmLCAweDAwMTgsIDB4NjAxYiwgMHgwMGYwLCAweDYwMWYsIDB4MDAxZSwgMHg2MDBmLCAweDAwNmIsCi0JMHg2MDJiLCAweDQwMmYsIDB4MDEyZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMTQwLCAweDc4YzMsCi0JMHgwMDgwLCAweDc4YzMsIDB4MDA4MywgMHg3OGMzLCAweDAwMDAsIDB4MDBmZSwgMHgwMDA1LCAweDIwMDEsCi0JMHgxODM1LCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDE4MzQsIDB4MjAwMywgMHgwMDAxLCAweDAwMDUsCi0JMHgwMTI2LCAweDIwOTEsIDB4MjgwMCwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHg2MTI0LCAweDAwNjYsCi0JMHgyMDMxLCAweDE4MzcsIDB4MjYzNCwgMHg5NmI0LCAweDAwMjgsIDB4MDA2ZSwgMHgxMTM4LCAweDYwMjAsCi0JMHhkMWJjLCAweDAxMjAsIDB4ZDBiYywgMHgxMTY4LCAweGQwYjQsIDB4MTE5OCwgMHg5MTg0LCAweDVlMmMsCi0JMHgxMTE4LCAweDkxODQsIDB4MDAwNywgMHgwMGFhLCAweDkxOTUsIDB4MDAwNCwgMHg5Mjg0LCAweDAwMDcsCi0JMHgwMDgyLCAweDAwMTYsIDB4MjAwMSwgMHgxODhiLCAweDIwMGMsIDB4ZDE4NCwgMHgwMDFlLCAweDBkNzAsCi0JMHgwYzk4LCAweDAwMTYsIDB4MjAwMSwgMHgxODhiLCAweDIwMGMsIDB4ZDE5NCwgMHgwMDFlLCAweDBkMzAsCi0JMHgwYzU4LCAweDI1MTMsIDB4MjRmOSwgMHgyNGZjLCAweDI0ZmYsIDB4MjUwNCwgMHgyNTA2LCAweDI1MGEsCi0JMHgyNTBlLCAweDA4MGMsIDB4OTNlMiwgMHgwMGI4LCAweDA4MGMsIDB4OTRiMSwgMHgwMGEwLCAweDA4MGMsCi0JMHg5NGIxLCAweDA4MGMsIDB4OTNlMiwgMHgwMDc4LCAweDAwOTksIDB4MDA2OCwgMHgwODBjLCAweDkzZTIsCi0JMHgwMDc5LCAweDAwNDgsIDB4MDgwYywgMHg5NGIxLCAweDAwNTksIDB4MDAyOCwgMHgwODBjLCAweDk0YjEsCi0JMHgwODBjLCAweDkzZTIsIDB4MDAyOSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwgMHgwMTJlLCAweDAwMDUsCi0JMHgwMGE2LCAweDYxMjQsIDB4NjAyOCwgMHhkMDljLCAweDAxMTgsIDB4ZDE5YywgMHgxOTA0LCAweDI3ODQsCi0JMHhkMWY0LCAweDE5MGMsIDB4MGRiZSwgMHgwODBjLCAweDc2MzcsIDB4MDkwNCwgMHgyNTZlLCAweDA4MGMsCi0JMHhkN2UzLCAweDExMjAsIDB4NzAwMCwgMHg5MDg2LCAweDAwMDMsIDB4MDU3MCwgMHg2MDI0LCAweDkwODQsCi0JMHgxODAwLCAweDA1NTAsIDB4MDgwYywgMHg3NjVhLCAweDAxMTgsIDB4MDgwYywgMHg3NjQ4LCAweDE1MjAsCi0JMHg2MDI3LCAweDAwMjAsIDB4NjA0MywgMHgwMDAwLCAweDA4MGMsIDB4ZDdlMywgMHgwMTY4LCAweDA4MGMsCi0JMHg3NjVhLCAweDExNTAsIDB4MjAwMSwgMHgxOWE4LCAweDIwMDMsIDB4MDAwMSwgMHg2MDI3LCAweDE4MDAsCi0JMHgwODBjLCAweDc0YjIsIDB4MDgwNCwgMHgyNzg3LCAweDcwYTQsIDB4OTAwNSwgMHgxMTUwLCAweDcwYTcsCi0JMHgwMDAxLCAweDAwZDYsIDB4MjA2OSwgMHgwMTQwLCAweDA4MGMsIDB4NzY4YiwgMHgwMGRlLCAweDE5MDQsCi0JMHgyNzg3LCAweDA4MGMsIDB4NzkzYywgMHgwNDI4LCAweDA4MGMsIDB4NzY1YSwgMHgxNTkwLCAweDYwMjQsCi0JMHg5MDg0LCAweDE4MDAsIDB4MTEwOCwgMHgwNDY4LCAweDA4MGMsIDB4NzkzYywgMHgwODBjLCAweDc5MzIsCi0JMHgwODBjLCAweDYxMmUsIDB4MDgwYywgMHg3NTYzLCAweDA4MDQsIDB4Mjc4NCwgMHhkMWFjLCAweDE1MDgsCi0JMHg2MDI0LCAweGQwZGMsIDB4MTE3MCwgMHhkMGU0LCAweDExNzgsIDB4ZDBkNCwgMHgxMTkwLCAweGQwY2MsCi0JMHgwMTMwLCAweDcwOTgsIDB4OTA4NiwgMHgwMDI5LCAweDExMTAsIDB4MDgwYywgMHg3ODE4LCAweDA4MDQsCi0JMHgyNzg0LCAweDA4MGMsIDB4NzkzNywgMHgwMDQ4LCAweDIwMDEsIDB4MTk3ZCwgMHgyMDAzLCAweDAwMDIsCi0JMHgwMDIwLCAweDA4MGMsIDB4Nzc3NCwgMHgwODA0LCAweDI3ODQsIDB4MDgwYywgMHg3OGJhLCAweDA4MDQsCi0JMHgyNzg0LCAweDYyMjAsIDB4ZDFiYywgMHgwMTM4LCAweGQyYmMsIDB4MTkwNCwgMHgyN2UxLCAweGQyYjQsCi0JMHgxOTA0LCAweDI3ZjQsIDB4MDAwMCwgMHhkMWFjLCAweDA5MDQsIDB4MjY5OSwgMHgwMDM2LCAweDYzMjgsCi0JMHhjM2JjLCAweDYzMmEsIDB4MDAzZSwgMHgwODBjLCAweDc2MzcsIDB4MTFjMCwgMHg2MDI3LCAweDAwMjAsCi0JMHgwMDA2LCAweDAwMjYsIDB4MDAzNiwgMHgwODBjLCAweDc2NTEsIDB4MTE1OCwgMHgwODBjLCAweDc5MzIsCi0JMHgwODBjLCAweDYxMmUsIDB4MDgwYywgMHg3NTYzLCAweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDAwYWUsCi0JMHgwMDA1LCAweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDA4MGMsIDB4NzYwZiwgMHgwMDE2LCAweDAwNDYsCi0JMHgwMGM2LCAweDY0NGMsIDB4OTQ4NiwgMHhmMGYwLCAweDExMzgsIDB4MjA2MSwgMHgwMTAwLCAweDY0NGEsCi0JMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDc0ZGEsIDB4OTQ4YywgMHhmZjAwLCAweDcwMzgsCi0JMHhkMDg0LCAweDAxOTAsIDB4MDgwYywgMHhkN2UzLCAweDExMTgsIDB4OTE4NiwgMHhmODAwLCAweDExNjAsCi0JMHg3MDQ4LCAweGQwODQsIDB4MTE0OCwgMHhjMDg1LCAweDcwNGEsIDB4MDAzNiwgMHgyNDE4LCAweDIwMTEsCi0JMHg4MDE2LCAweDA4MGMsIDB4NGM0NCwgMHgwMDNlLCAweDA4MGMsIDB4ZDdkYywgMHgxOTA0LCAweDI2NzYsCi0JMHg5MTk2LCAweGZmMDAsIDB4MDVhOCwgMHg3MDYwLCAweDkwODQsIDB4MDBmZiwgMHg4MTBmLCAweDgxZmYsCi0JMHgwMTEwLCAweDkxMTYsIDB4MDU2OCwgMHg3MTMwLCAweGQxODQsIDB4MTU1MCwgMHgwODBjLCAweDMzYWEsCi0JMHgwMTI4LCAweGMxOGQsIDB4NzEzMiwgMHgwODBjLCAweDZhOWIsIDB4MTUxMCwgMHg2MjQwLCAweDkyOTQsCi0JMHgwMDEwLCAweDAxMzAsIDB4NjI0OCwgMHg5Mjk0LCAweGZmMDAsIDB4OTI5NiwgMHhmZjAwLCAweDAxYzAsCi0JMHg3MDMwLCAweGQwOGMsIDB4MDkwNCwgMHgyNjc2LCAweDcwMzgsIDB4ZDA4YywgMHgxMTQwLCAweDIwMDEsCi0JMHgxODBjLCAweDIwMGMsIDB4ZDFhYywgMHgxOTA0LCAweDI2NzYsIDB4YzFhZCwgMHgyMTAyLCAweDAwMzYsCi0JMHg3M2Q4LCAweDIwMTEsIDB4ODAxMywgMHgwODBjLCAweDRjNDQsIDB4MDAzZSwgMHgwODA0LCAweDI2NzYsCi0JMHg3MDM4LCAweGQwOGMsIDB4MTE0MCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHhkMWFjLCAweDE5MDQsCi0JMHgyNjc2LCAweGMxYWQsIDB4MjEwMiwgMHgwMDM2LCAweDczZDgsIDB4MjAxMSwgMHg4MDEzLCAweDA4MGMsCi0JMHg0YzQ0LCAweDAwM2UsIDB4NzEzMCwgMHhjMTg1LCAweDcxMzIsIDB4MjAxMSwgMHgxODQ4LCAweDIyMGMsCi0JMHhkMWE0LCAweDAxZjAsIDB4MDAxNiwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwgMHgwMTAwLCAweDA4MGMsCi0JMHg4YTUwLCAweDIwMTksIDB4MDAwZSwgMHgwMGM2LCAweDIwNjEsIDB4MDAwMCwgMHgwODBjLCAweGViYTEsCi0JMHgwMGNlLCAweDk0ODQsIDB4MDBmZiwgMHg5MDgwLCAweDMzYjYsIDB4MjAwZCwgMHg5MThjLCAweGZmMDAsCi0JMHg4MTBmLCAweDIxMjAsIDB4OTAwNiwgMHgyMDA5LCAweDAwMGUsIDB4MDgwYywgMHhlYzMxLCAweDAwMWUsCi0JMHgwMDE2LCAweDIwMDksIDB4MDAwMiwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHgzMjFiLCAweDAwMWUsCi0JMHgwMGE4LCAweDAxNTYsIDB4MDBiNiwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTQwLCAweDcwMzAsIDB4ZDA4NCwgMHgxMTE4LCAweGI4MDAsIDB4ZDBiYywgMHgxMTEwLCAweDA4MGMsCi0JMHg2MTQ4LCAweDgxMDgsIDB4MWYwNCwgMHgyNjY2LCAweDAwYmUsIDB4MDE1ZSwgMHgwMGNlLCAweDAwNGUsCi0JMHgwODBjLCAweGIyNDQsIDB4NjBlMywgMHgwMDAwLCAweDAwMWUsIDB4MjAwMSwgMHgxODAwLCAweDIwMTQsCi0JMHg5Mjk2LCAweDAwMDQsIDB4MTE3MCwgMHhkMTljLCAweDExYTAsIDB4MjAxMSwgMHgxODBjLCAweDIyMTQsCi0JMHhkMjljLCAweDExMjAsIDB4NjIwNCwgMHg5Mjk1LCAweDAwMDIsIDB4NjIwNiwgMHg2MjI4LCAweGMyOWQsCi0JMHg2MjJhLCAweDIwMDMsIDB4MDAwMSwgMHgyMDAxLCAweDE4MjYsIDB4MjAwMywgMHgwMDAwLCAweDYwMjcsCi0JMHgwMDIwLCAweGQxOTQsIDB4MDkwNCwgMHgyNzg0LCAweDAwMTYsIDB4NjIyMCwgMHhkMmI0LCAweDA5MDQsCi0JMHgyNzIxLCAweDA4MGMsIDB4ODhjMywgMHgwODBjLCAweGE2ZTksIDB4NjAyNywgMHgwMDA0LCAweDAwZjYsCi0JMHgyMDE5LCAweDE5ZjEsIDB4MjMwNCwgMHg5MDdkLCAweDA5MDQsIDB4MjZmMCwgMHg3ODA0LCAweDkwODYsCi0JMHgwMDMyLCAweDE1ZjAsIDB4MDBkNiwgMHgwMGM2LCAweDAwZTYsIDB4MDA5NiwgMHgyMDY5LCAweDAxNDAsCi0JMHg3ODJjLCAweDY4NWUsIDB4NzgwOCwgMHg2ODVhLCAweDYwNDMsIDB4MDAwMiwgMHgyMDAxLCAweDAwMDMsCi0JMHg4MDAxLCAweDFkZjAsIDB4NjA0MywgMHgwMDAwLCAweDIwMDEsIDB4MDAzYywgMHg4MDAxLCAweDFkZjAsCi0JMHgwODBjLCAweDJkNDksIDB4MjAwMSwgMHgwMDFlLCAweDgwMDEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMDksCi0JMHgwODBjLCAweDJjNDIsIDB4NjkwNCwgMHhkMWRjLCAweDExNDAsIDB4MGNiMCwgMHgyMDAxLCAweDAxMDAsCi0JMHgwODBjLCAweDJkMzksIDB4OTAwNiwgMHgwODBjLCAweDJkMzksIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsCi0JMHg5YWIxLCAweDc4MTQsIDB4MjA0OCwgMHhhODY3LCAweDAxMDMsIDB4MmY2MCwgMHgwODBjLCAweGIyZDMsCi0JMHgwMDllLCAweDAwZWUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZmUsIDB4MDAxZSwgMHgwMGFlLCAweDAwMDUsCi0JMHgwMGZlLCAweDAwZDYsIDB4MjA2OSwgMHgwMTQwLCAweDY4MDQsIDB4OTA4NCwgMHg0MDAwLCAweDAxMTAsCi0JMHgwODBjLCAweDJkNDksIDB4MDBkZSwgMHgwMGM2LCAweDIwNjEsIDB4MTllOCwgMHg2MDI4LCAweDA4MGMsCi0JMHhkN2UzLCAweDAxMjAsIDB4OTA5YSwgMHgwMDAzLCAweDEyNTgsIDB4MDAxOCwgMHg5MDlhLCAweDAwYzgsCi0JMHgxMjM4LCAweDgwMDAsIDB4NjAyYSwgMHgwMGNlLCAweDA4MGMsIDB4YTZjNSwgMHgwODA0LCAweDI3ODMsCi0JMHgyMDYxLCAweDAxMDAsIDB4NjJjMCwgMHgwODBjLCAweGIwY2EsIDB4MjAxOSwgMHgxOWYxLCAweDIzMDQsCi0JMHg5MDY1LCAweDAxMjAsIDB4MjAwOSwgMHgwMDI3LCAweDA4MGMsIDB4YjM1MiwgMHgwMGNlLCAweDA4MDQsCi0JMHgyNzgzLCAweGQyYmMsIDB4MDkwNCwgMHgyNzZhLCAweDA4MGMsIDB4ODhkMCwgMHg2MDE0LCAweDkwODQsCi0JMHgxOTg0LCAweDkwODUsIDB4MDAxMCwgMHg2MDE2LCAweDYwMjcsIDB4MDAwNCwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMTQwLCAweDY4MDQsIDB4OTA4NCwgMHg0MDAwLCAweDAxMTAsIDB4MDgwYywgMHgyZDQ5LCAweDAwZGUsCi0JMHgwMGM2LCAweDIwNjEsIDB4MTllOCwgMHg2MDQ0LCAweDA4MGMsIDB4ZDdlMywgMHgwMTIwLCAweDkwOWEsCi0JMHgwMDAzLCAweDE2NTgsIDB4MDAxOCwgMHg5MDlhLCAweDAwYzgsIDB4MTYzOCwgMHg4MDAwLCAweDYwNDYsCi0JMHg2MDNjLCAweDAwY2UsIDB4OTAwNSwgMHgwNWI4LCAweDIwMDksIDB4MDdkMCwgMHgwODBjLCAweDg4YzgsCi0JMHg5MDgwLCAweDAwMDgsIDB4MjAwNCwgMHg5MDg2LCAweDAwMDYsIDB4MTEzOCwgMHg2MTE0LCAweDkxOGMsCi0JMHgxOTg0LCAweDkxOGQsIDB4MDAxMiwgMHg2MTE2LCAweDA0MzAsIDB4OTA4MCwgMHgwMDA4LCAweDIwMDQsCi0JMHg5MDg2LCAweDAwMDksIDB4MGQ5OCwgMHg2MTE0LCAweDkxOGMsIDB4MTk4NCwgMHg5MThkLCAweDAwMTYsCi0JMHg2MTE2LCAweDAwYzgsIDB4NjAyNywgMHgwMDA0LCAweDAwYjAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsCi0JMHgwODBjLCAweGFhNDksIDB4MDAzZSwgMHgyMDE5LCAweDE5ZjcsIDB4MjMwNCwgMHg5MDY1LCAweDAxNTAsCi0JMHgyMDA5LCAweDAwNGYsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDksIDB4MTExMCwgMHgyMDA5LCAweDAwNGYsCi0JMHgwODBjLCAweGIzNTIsIDB4MDBjZSwgMHgwMDFlLCAweGQxOWMsIDB4MDkwNCwgMHgyN2RjLCAweDcwMzgsCi0JMHhkMGFjLCAweDE1MzgsIDB4MDAxNiwgMHgwMTU2LCAweDYwMjcsIDB4MDAwOCwgMHgwODBjLCAweDJkNzMsCi0JMHgyMGE5LCAweDAwMjgsIDB4YTAwMSwgMHgxZjA0LCAweDI3OTIsIDB4NjE1MCwgMHg5MTg1LCAweDE0MDAsCi0JMHg2MDUyLCAweDIwYTksIDB4MDM2NiwgMHgxZDA0LCAweDI3OWIsIDB4MDgwYywgMHg4OGY3LCAweDYwMjAsCi0JMHhkMDljLCAweDExMzAsIDB4MDE1ZSwgMHg2MTUyLCAweDAwMWUsIDB4NjAyNywgMHgwMDA4LCAweDA0YTAsCi0JMHgwODBjLCAweDJjMjksIDB4MWYwNCwgMHgyNzliLCAweDAxNWUsIDB4NjE1MiwgMHgwMDFlLCAweDYwMjcsCi0JMHgwMDA4LCAweDAwMTYsIDB4NjAyOCwgMHhjMDljLCAweDYwMmEsIDB4MDgwYywgMHhiMjQ0LCAweDYwZTMsCi0JMHgwMDAwLCAweDA4MGMsIDB4ZjA3ZiwgMHgwODBjLCAweGYwOWEsIDB4MDgwYywgMHg1N2Q5LCAweGQwZmMsCi0JMHgxMTM4LCAweDA4MGMsIDB4ZDdkYywgMHgxMTIwLCAweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDc2N2IsCi0JMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywgMHgyYzY3LCAweDAwZTYsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzAwMywgMHgwMDA0LCAweDA4MGMsIDB4MGVhMywgMHgwMGVlLCAweDYwMjcsCi0JMHgwMDA4LCAweDA4MGMsIDB4MGJhMCwgMHgwMDFlLCAweDkxOGMsIDB4ZmZkMCwgMHg2MTI2LCAweDAwYWUsCi0JMHgwMDA1LCAweDAwMTYsIDB4MjAwMSwgMHgxODhiLCAweDIwMGMsIDB4ZDE4NCwgMHgwMDFlLCAweDA5MDQsCi0JMHgyNTliLCAweDAwMTYsIDB4MjAwOSwgMHgyN2VkLCAweDAwZDAsIDB4MjAwMSwgMHgxODhiLCAweDIwMGMsCi0JMHhjMTg0LCAweDIxMDIsIDB4MDAxZSwgMHgwYzQwLCAweDAwMTYsIDB4MjAwMSwgMHgxODhiLCAweDIwMGMsCi0JMHhkMTk0LCAweDAwMWUsIDB4MDkwNCwgMHgyNTliLCAweDAwMTYsIDB4MjAwOSwgMHgyODAwLCAweDAwMzgsCi0JMHgyMDAxLCAweDE4OGIsIDB4MjAwYywgMHhjMTk0LCAweDIxMDIsIDB4MDAxZSwgMHgwOGE4LCAweDYwMjgsCi0JMHhjMGJjLCAweDYwMmEsIDB4MjAwMSwgMHgwMTU2LCAweDIwMDMsIDB4YmM5MSwgMHg4MDAwLCAweDIwMDMsCi0JMHhmZmZmLCAweDYwNDMsIDB4MDAwMSwgMHgwODBjLCAweDJjNjEsIDB4NjAyNywgMHgwMDgwLCAweDYwMTcsCi0JMHgwMDAwLCAweDYwNDMsIDB4MDAwMCwgMHgwODE3LCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsCi0JMHgwMGU2LCAweDAwZjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxODAwLCAweDcxZDAsCi0JMHg3MGQyLCAweDkxMTYsIDB4MDkwNCwgMHgyODZiLCAweDgxZmYsIDB4MDFhMCwgMHgyMDA5LCAweDAwMDAsCi0JMHgwODBjLCAweDJjNjcsIDB4MjAxMSwgMHg4MDExLCAweDIwMTksIDB4MDEwZSwgMHgyMzFjLCAweDkzOWUsCi0JMHgwMDA3LCAweDExMTgsIDB4MjAxOSwgMHgwMDAxLCAweDAwMTAsIDB4MjAxOSwgMHgwMDAwLCAweDA4MGMsCi0JMHg0YzQ0LCAweDA0NDgsIDB4MjAwMSwgMHgxOWE5LCAweDIwMGMsIDB4ODFmZiwgMHgxMTQwLCAweDIwMDEsCi0JMHgwMTA5LCAweDIwMDQsIDB4ZDBiNCwgMHgwMTE4LCAweDIwMTksIDB4MDAwMywgMHgwMDA4LCAweDIxMTgsCi0JMHgyMDExLCAweDgwMTIsIDB4MDgwYywgMHg0YzQ0LCAweDA4MGMsIDB4MGVhMywgMHgwODBjLCAweDU3ZDksCi0JMHhkMGZjLCAweDExODgsIDB4MDgwYywgMHhkN2RjLCAweDExNzAsIDB4MDBjNiwgMHgwODBjLCAweDI5MDcsCi0JMHgwODBjLCAweGE5YjAsIDB4MjA2MSwgMHgwMTAwLCAweDIwMTksIDB4MDAyOCwgMHgyMDA5LCAweDAwMDIsCi0JMHgwODBjLCAweDMyMWIsIDB4MDBjZSwgMHgwMTJlLCAweDAwZmUsIDB4MDBlZSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgyMDI4LCAweDkxOGMsIDB4MDBmZiwgMHgyMTMwLCAweDkwOTQsCi0JMHhmZjAwLCAweDExZjAsIDB4MjAxMSwgMHgxODM3LCAweDIyMTQsIDB4ZDJhYywgMHgxMWM4LCAweDgxZmYsCi0JMHgwMWU4LCAweDIwMTEsIDB4MTgxZiwgMHgyMjA0LCAweDkxMDYsIDB4MTE5MCwgMHgyMDExLCAweDE4MjAsCi0JMHgyMjE0LCAweDkyOTQsIDB4ZmYwMCwgMHg5NTg0LCAweGZmMDAsIDB4OTIwNiwgMHgxMTQ4LCAweDIwMTEsCi0JMHgxODIwLCAweDIyMTQsIDB4OTI5NCwgMHgwMGZmLCAweDk1ODQsIDB4MDBmZiwgMHg5MjA2LCAweDExMjAsCi0JMHgyNTAwLCAweDA4MGMsIDB4ODNhNSwgMHgwMDQ4LCAweDk1ODQsIDB4MDBmZiwgMHg5MDgwLCAweDMzYjYsCi0JMHgyMDBkLCAweDkxOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkwMDYsIDB4MDAwNSwgMHg5MDgwLCAweDMzYjYsCi0JMHgyMDBkLCAweDkxOGMsIDB4MDBmZiwgMHgwMDA1LCAweDAwZDYsIDB4MjA2OSwgMHgwMTQwLCAweDIwMDEsCi0JMHgxODE4LCAweDIwMDMsIDB4MDBlZiwgMHgyMGE5LCAweDAwMTAsIDB4OTAwNiwgMHg2ODUyLCAweDY4NTYsCi0JMHgxZjA0LCAweDI4YjcsIDB4MDBkZSwgMHgwMDA1LCAweDAwMDYsIDB4MDBkNiwgMHgwMDI2LCAweDIwNjksCi0JMHgwMTQwLCAweDIwMDEsIDB4MTgxOCwgMHgyMTAyLCAweDgxMTQsIDB4ODIxNCwgMHg4MjE0LCAweDgyMTQsCi0JMHgyMGE5LCAweDAwMTAsIDB4Njg1MywgMHgwMDAwLCAweDkwMDYsIDB4ODJmZiwgMHgxMTI4LCAweDkxODQsCi0JMHgwMDBmLCAweDkwODAsIDB4Zjg4MCwgMHgyMDA1LCAweDY4NTYsIDB4ODIxMSwgMHgxZjA0LCAweDI4Y2MsCi0JMHgwMDJlLCAweDAwZGUsIDB4MDAwZSwgMHgwMDA1LCAweDAwYzYsIDB4MjA2MSwgMHgxODAwLCAweDYwMzAsCi0JMHgwMTEwLCAweGMwOWQsIDB4MDAwOCwgMHhjMDljLCAweDYwMzIsIDB4MDBjZSwgMHgwMDA1LCAweDAxNTYsCi0JMHgwMGQ2LCAweDAwMjYsIDB4MDAxNiwgMHgwMDA2LCAweDIwNjksIDB4MDE0MCwgMHg2OTgwLCAweDkxMTYsCi0JMHgwMTgwLCAweDkxMTIsIDB4MTIzMCwgMHg4MjEyLCAweDgyMTAsIDB4MjJhOCwgMHgyMDAxLCAweDA0MDIsCi0JMHgwMDE4LCAweDIyYTgsIDB4MjAwMSwgMHgwNDA0LCAweDY4MGUsIDB4MWYwNCwgMHgyOGZjLCAweDY4MGYsCi0JMHgwMDAwLCAweDAwMGUsIDB4MDAxZSwgMHgwMDJlLCAweDAwZGUsIDB4MDE1ZSwgMHgwMDA1LCAweDA4MGMsCi0JMHg1N2Q1LCAweGQwYzQsIDB4MDE1MCwgMHhkMGE0LCAweDAxNDAsIDB4OTAwNiwgMHgwMDQ2LCAweDIwMjAsCi0JMHgyMDA5LCAweDAwMmUsIDB4MDgwYywgMHhlYzMxLCAweDAwNGUsIDB4MDAwNSwgMHgwMGY2LCAweDAwMTYsCi0JMHgwMDI2LCAweDIwNzksIDB4MDE0MCwgMHg3OGM0LCAweGQwZGMsIDB4MDkwNCwgMHgyOTczLCAweDA4MGMsCi0JMHgyYmM2LCAweDA2NjAsIDB4OTA4NCwgMHgwNzAwLCAweDkwOGUsIDB4MDYwMCwgMHgxMTIwLCAweDIwMTEsCi0JMHg0MDAwLCAweDkwMGUsIDB4MDQ1OCwgMHg5MDhlLCAweDA1MDAsIDB4MTEyMCwgMHgyMDExLCAweDgwMDAsCi0JMHg5MDBlLCAweDA0MjAsIDB4OTA4ZSwgMHgwNDAwLCAweDExMjAsIDB4OTAxNiwgMHgyMDA5LCAweDAwMDEsCi0JMHgwMGU4LCAweDkwOGUsIDB4MDMwMCwgMHgxMTIwLCAweDkwMTYsIDB4MjAwOSwgMHgwMDAyLCAweDAwYjAsCi0JMHg5MDhlLCAweDAyMDAsIDB4MTEyMCwgMHg5MDE2LCAweDIwMDksIDB4MDAwNCwgMHgwMDc4LCAweDkwOGUsCi0JMHgwMTAwLCAweDE1NDgsIDB4OTAxNiwgMHgyMDA5LCAweDAwMDgsIDB4MDA0MCwgMHg5MDg0LCAweDA3MDAsCi0JMHg5MDhlLCAweDAzMDAsIDB4MTUwMCwgMHgyMDExLCAweDAwMzAsIDB4MDA1OCwgMHgyMzAwLCAweDkwODAsCi0JMHgwMDIwLCAweDIwMTgsIDB4MDgwYywgMHg5Mzc1LCAweDkyOGMsIDB4ZmYwMCwgMHgwMTEwLCAweDIwMTEsCi0JMHgwMGZmLCAweDIyMDAsIDB4ODAwNywgMHg5MDg1LCAweDAwNGMsIDB4NzhjMiwgMHgyMDA5LCAweDAxMzgsCi0JMHgyMjBhLCAweDA4MGMsIDB4NzYzNywgMHgxMTE4LCAweDIwMDksIDB4MTk2ZCwgMHgyMjBhLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwZmUsIDB4MDAwNSwgMHg3OGMzLCAweDAwMDAsIDB4MGNjOCwgMHgwMTI2LCAweDIwOTEsCi0JMHgyODAwLCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDIwMDEsIDB4MDE3MCwgMHgyMDBjLCAweDgwMDAsCi0JMHgyMDE0LCAweDkxODQsIDB4MDAwMywgMHgwMTEwLCAweDA4MGMsIDB4MGRiZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDAxMTgsCi0JMHgyMDA5LCAweDAwMDIsIDB4MDAwNSwgMHgyMDAxLCAweDAxNzEsIDB4MjAwNCwgMHhkMGRjLCAweDAxNjgsCi0JMHgyMDAxLCAweDAxNzAsIDB4MjAwYywgMHg5MThjLCAweDAwZmYsIDB4OTE4ZSwgMHgwMDRjLCAweDExMjgsCi0JMHgyMDBjLCAweDkxOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDAwMDUsIDB4OTAwZSwgMHgyMDAxLCAweDAyMjcsCi0JMHgyMDA0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDQsIDB4OTEwOCwgMHgyMDAxLCAweDAyMjYsCi0JMHgyMDA0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDQsIDB4OTEwOCwgMHgwMDA1LCAweDAwMTgsCi0JMHgwMDBjLCAweDAwMTgsIDB4MDAyMCwgMHgxMDAwLCAweDA4MDAsIDB4MTAwMCwgMHgxODAwLCAweDAxNTYsCi0JMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHgwMGU2LCAweDIwMDEsIDB4MTk5MCwgMHgyMDA0LCAweDkwOGEsCi0JMHgwMDA3LCAweDFhMGMsIDB4MGRjNSwgMHgwMDMzLCAweDAwZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsCi0JMHgwMTVlLCAweDAwMDUsIDB4MjlkOSwgMHgyOWY3LCAweDJhMWIsIDB4MmExZCwgMHgyYTQ2LCAweDJhNDgsCi0JMHgyYTRhLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDI4MWMsIDB4MDgwYywgMHgyYzI0LCAweDIwMDEsCi0JMHgxOTkyLCAweDIwMDMsIDB4MDAwMCwgMHg3ODI4LCAweDkwODQsIDB4ZTFkNywgMHg3ODJhLCAweDkwMDYsCi0JMHgyMGE5LCAweDAwMDksIDB4MDgwYywgMHgyYmUyLCAweDIwMDEsIDB4MTk5MCwgMHgyMDAzLCAweDAwMDYsCi0JMHgyMDA5LCAweDAwMWUsIDB4MjAxMSwgMHgyYTRiLCAweDA4MGMsIDB4ODhkNSwgMHgwMDA1LCAweDIwMDksCi0JMHgxOTk1LCAweDIwMGIsIDB4MDAwMCwgMHgyMDAxLCAweDE5OWEsIDB4MjAwMywgMHgwMDM2LCAweDIwMDEsCi0JMHgxOTk5LCAweDIwMDMsIDB4MDAyYSwgMHgyMDAxLCAweDE5OTIsIDB4MjAwMywgMHgwMDAxLCAweDkwMDYsCi0JMHgwODBjLCAweDJiOTQsIDB4MjAwMSwgMHhmZmZmLCAweDIwYTksIDB4MDAwOSwgMHgwODBjLCAweDJiZTIsCi0JMHgyMDAxLCAweDE5OTAsIDB4MjAwMywgMHgwMDA2LCAweDIwMDksIDB4MDAxZSwgMHgyMDExLCAweDJhNGIsCi0JMHgwODBjLCAweDg4ZDUsIDB4MDAwNSwgMHgwODBjLCAweDBkYzUsIDB4MjAwMSwgMHgxOTlhLCAweDIwMDMsCi0JMHgwMDM2LCAweDIwMDEsIDB4MTk5MiwgMHgyMDAzLCAweDAwMDMsIDB4N2EzOCwgMHg5Mjk0LCAweDAwMDUsCi0JMHg5Mjk2LCAweDAwMDQsIDB4MDExMCwgMHg5MDA2LCAweDAwMTAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsCi0JMHgyYjk0LCAweDIwMDEsIDB4MTk5NiwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHhmZmZmLCAweDIwYTksCi0JMHgwMDA5LCAweDA4MGMsIDB4MmJlMiwgMHgyMDAxLCAweDE5OTAsIDB4MjAwMywgMHgwMDA2LCAweDIwMDksCi0JMHgwMDFlLCAweDIwMTEsIDB4MmE0YiwgMHgwODBjLCAweDg4ZDUsIDB4MDAwNSwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweDBkYzUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHgwMGU2LCAweDAwZjYsCi0JMHgwMTU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzksIDB4MDEwMCwgMHgyMDAxLCAweDE5OTIsCi0JMHgyMDA0LCAweDkwOGEsIDB4MDAwNywgMHgxYTBjLCAweDBkYzUsIDB4MDA0MywgMHgwMTJlLCAweDAxNWUsCi0JMHgwMGZlLCAweDAwZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgyYTZkLCAweDJhODksCi0JMHgyYWM1LCAweDJhZjEsIDB4MmIxMSwgMHgyYjFkLCAweDJiMWYsIDB4MDgwYywgMHgyYmQ2LCAweDExOTAsCi0JMHgyMDA5LCAweDE5OTgsIDB4MjEwNCwgMHg3YTM4LCAweDkyOTQsIDB4MDAwNSwgMHg5Mjk2LCAweDAwMDQsCi0JMHgwMTEwLCAweGMwOGQsIDB4MDAwOCwgMHhjMDg1LCAweDIwMGEsIDB4MjAwMSwgMHgxOTkwLCAweDIwMDMsCi0JMHgwMDAxLCAweDAwMzAsIDB4MDgwYywgMHgyYjQzLCAweDIwMDEsIDB4ZmZmZiwgMHgwODBjLCAweDI5ZTgsCi0JMHgwMDA1LCAweDA4MGMsIDB4MmIyMSwgMHgwNWMwLCAweDIwMDksIDB4MTk5OSwgMHgyMTA0LCAweDgwMDEsCi0JMHgyMDBhLCAweDA4MGMsIDB4MmJkNiwgMHgxMTU4LCAweDdhMzgsIDB4OTI5NCwgMHgwMDA1LCAweDkyOTYsCi0JMHgwMDA1LCAweDA1MTgsIDB4MjAwOSwgMHgxOTk4LCAweDIxMDQsIDB4YzA4NSwgMHgyMDBhLCAweDIwMDksCi0JMHgxOTk1LCAweDIxMDQsIDB4ODAwMCwgMHgyMDBhLCAweDkwODYsIDB4MDAwNSwgMHgwMTE4LCAweDA4MGMsCi0JMHgyYjI5LCAweDAwYzAsIDB4MjAwYiwgMHgwMDAwLCAweDdhMzgsIDB4OTI5NCwgMHgwMDA2LCAweDkyOTYsCi0JMHgwMDA0LCAweDAxMTAsIDB4OTAwNiwgMHgwMDEwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiYjEsCi0JMHgyMDAxLCAweDE5OTIsIDB4MjAwMywgMHgwMDAyLCAweDAwMjgsIDB4MjAwMSwgMHgxOTkwLCAweDIwMDMsCi0JMHgwMDAzLCAweDAwMTAsIDB4MDgwYywgMHgyYTBhLCAweDAwMDUsIDB4MDgwYywgMHgyYjIxLCAweDA1NDAsCi0JMHgyMDA5LCAweDE5OTksIDB4MjEwNCwgMHg4MDAxLCAweDIwMGEsIDB4MDgwYywgMHgyYmQ2LCAweDExNDgsCi0JMHgyMDAxLCAweDE5OTAsIDB4MjAwMywgMHgwMDAzLCAweDIwMDEsIDB4MTk5MSwgMHgyMDAzLCAweDAwMDAsCi0JMHgwMGI4LCAweDIwMDksIDB4MTk5OSwgMHgyMTA0LCAweDkwMDUsIDB4MTExOCwgMHgwODBjLCAweDJiNjYsCi0JMHgwMDEwLCAweDA4MGMsIDB4MmIzNiwgMHgwODBjLCAweDJiMjksIDB4MjAwOSwgMHgxOTk1LCAweDIwMGIsCi0JMHgwMDAwLCAweDIwMDEsIDB4MTk5MiwgMHgyMDAzLCAweDAwMDEsIDB4MDgwYywgMHgyYTBhLCAweDAwMDAsCi0JMHgwMDA1LCAweDA0NzksIDB4MDFlOCwgMHgwODBjLCAweDJiZDYsIDB4MTE5OCwgMHgyMDA5LCAweDE5OTYsCi0JMHgyMTA0LCAweDgwMDAsIDB4MjAwYSwgMHg5MDg2LCAweDAwMDcsIDB4MDEwOCwgMHgwMDc4LCAweDIwMDEsCi0JMHgxOTliLCAweDIwMDMsIDB4MDAwYSwgMHgyMDA5LCAweDE5OTgsIDB4MjEwNCwgMHhjMGZkLCAweDIwMGEsCi0JMHgwMDM4LCAweDAwZjksIDB4MjAwMSwgMHgxOTkyLCAweDIwMDMsIDB4MDAwNCwgMHgwODBjLCAweDJhMzUsCi0JMHgwMDA1LCAweDAwNzksIDB4MDE0OCwgMHgwODBjLCAweDJiZDYsIDB4MTExOCwgMHgwODBjLCAweDJhMjEsCi0JMHgwMDE4LCAweDAwNzksIDB4MDgwYywgMHgyYTM1LCAweDAwMDUsIDB4MDgwYywgMHgwZGM1LCAweDA4MGMsCi0JMHgwZGM1LCAweDIwMDksIDB4MTk5YSwgMHgyMTA0LCAweDgwMDEsIDB4MjAwYSwgMHgwOTBjLCAweDJiODIsCi0JMHgwMDA1LCAweDdhMzgsIDB4OTI5NCwgMHgwMDA1LCAweDkyOTYsIDB4MDAwNSwgMHgwMTEwLCAweDkwMDYsCi0JMHgwMDEwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiYjEsIDB4MDAwNSwgMHg3YTM4LCAweDkyOTQsCi0JMHgwMDA2LCAweDkyOTYsIDB4MDAwNiwgMHgwMTEwLCAweDkwMDYsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDJiOTQsIDB4MDAwNSwgMHgyMDA5LCAweDE5OTUsIDB4MjEwNCwgMHg4MDAwLCAweDIwMGEsCi0JMHg5MDg2LCAweDAwMDUsIDB4MDEwOCwgMHgwMDY4LCAweDIwMGIsIDB4MDAwMCwgMHg3YTM4LCAweDkyOTQsCi0JMHgwMDA2LCAweDkyOTYsIDB4MDAwNiwgMHgwMTEwLCAweDkwMDYsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDEsCi0JMHgwNGQ5LCAweDdhMzgsIDB4OTI5NCwgMHgwMDA1LCAweDkyOTYsIDB4MDAwNSwgMHgwMTEwLCAweDkwMDYsCi0JMHgwMDEwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiYjEsIDB4MDAwNSwgMHgwMDg2LCAweDIwMDEsCi0JMHgxOTk4LCAweDIwMDQsIDB4OTA4NCwgMHg3ZmZmLCAweDA5MGMsIDB4MGRjNSwgMHgyMDA5LCAweDE5OTcsCi0JMHgyMTQ0LCAweDg4NDYsIDB4MjgwYSwgMHg5ODQ0LCAweDBkZDgsIDB4ZDA4YywgMHgxMTIwLCAweGQwODQsCi0JMHgxMTIwLCAweDA4MGMsIDB4MGRjNSwgMHg5MDA2LCAweDAwMTAsIDB4MjAwMSwgMHgwMDAxLCAweDAwYTEsCi0JMHgwMDhlLCAweDAwMDUsIDB4MDAwNiwgMHgwMTU2LCAweDIwMDEsIDB4MTk5MCwgMHgyMGE5LCAweDAwMDksCi0JMHgyMDAzLCAweDAwMDAsIDB4ODAwMCwgMHgxZjA0LCAweDJiODgsIDB4MjAwMSwgMHgxOTk3LCAweDIwMDMsCi0JMHg4MDAwLCAweDAxNWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDkwODUsCi0JMHgwMDAwLCAweDAxNTgsIDB4NzgzOCwgMHg5MDg0LCAweGZmZjksIDB4OTA4NSwgMHgwMDA0LCAweDc4M2EsCi0JMHgyMDA5LCAweDE5OWQsIDB4MjEwYywgMHg3OTVhLCAweDAwNTAsIDB4NzgzOCwgMHg5MDg0LCAweGZmZmIsCi0JMHg5MDg1LCAweDAwMDYsIDB4NzgzYSwgMHgyMDA5LCAweDE5OWUsIDB4MjEwYywgMHg3OTVhLCAweDAwZmUsCi0JMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDkwODUsIDB4MDAwMCwgMHgwMTM4LCAweDc4MzgsCi0JMHg5MDg0LCAweGZmZmEsIDB4OTA4NSwgMHgwMDA0LCAweDc4M2EsIDB4MDAzMCwgMHg3ODM4LCAweDkwODQsCi0JMHhmZmZiLCAweDkwODUsIDB4MDAwNSwgMHg3ODNhLCAweDAwZmUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsCi0JMHgwMTAwLCAweDIwMDQsIDB4OTA4MiwgMHgwMDA3LCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsCi0JMHgwMTAwLCAweDIwMDQsIDB4OTA4MiwgMHgwMDA5LCAweDAwMGUsIDB4MDAwNSwgMHgwMTU2LCAweDIwYTksCi0JMHgwMDY0LCAweDc4MjAsIDB4MDgwYywgMHgyYzYxLCAweGQwOWMsIDB4MTExMCwgMHgxZjA0LCAweDJiZDksCi0JMHgwMTVlLCAweDAwMDUsIDB4MDEyNiwgMHgwMDE2LCAweDAwMDYsIDB4MjA5MSwgMHg4MDAwLCAweDc4NTAsCi0JMHg5MDg1LCAweDAwNDAsIDB4Nzg1MiwgMHg3ODUwLCAweDkwODQsIDB4ZmJjZiwgMHg3ODUyLCAweDA4MGMsCi0JMHgyYzYxLCAweDkwODUsIDB4MjAwMCwgMHg3ODUyLCAweDAwMGUsIDB4MjAwOCwgMHg5MTg2LCAweDAwMDAsCi0JMHgxMTE4LCAweDc4M2IsIDB4MDAwNywgMHgwMDkwLCAweDkxODYsIDB4MDAwMSwgMHgxMTE4LCAweDc4M2IsCi0JMHgwMDA2LCAweDAwNjAsIDB4OTE4NiwgMHgwMDAyLCAweDExMTgsIDB4NzgzYiwgMHgwMDA1LCAweDAwMzAsCi0JMHg5MTg2LCAweDAwMDMsIDB4MTExOCwgMHg3ODNiLCAweDAwMDQsIDB4MDAwMCwgMHgwMDA2LCAweDFkMDQsCi0JMHgyYzBmLCAweDA4MGMsIDB4ODhmNywgMHgxZjA0LCAweDJjMGYsIDB4Nzg1MCwgMHg5MDg1LCAweDA0MDAsCi0JMHg5MDg0LCAweGRmYmYsIDB4Nzg1MiwgMHgwODBjLCAweDJjNjEsIDB4OTA4NSwgMHgxMDAwLCAweDc4NTIsCi0JMHgwMDBlLCAweDAwMWUsIDB4MDEyZSwgMHgwMDA1LCAweDc4NTAsIDB4OTA4NCwgMHhmZmNmLCAweDc4NTIsCi0JMHgwMDA1LCAweDAwMDYsIDB4MDE1NiwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHgyMGE5LCAweDAwMGEsCi0JMHg3ODU0LCAweGQwYWMsIDB4MTEzMCwgMHg3ODIwLCAweGQwZTQsIDB4MTE0MCwgMHgxZjA0LCAweDJjMzMsCi0JMHgwMDI4LCAweDc4NTQsIDB4ZDA4YywgMHgxMTEwLCAweDFmMDQsIDB4MmMzOSwgMHgwMGZlLCAweDAxNWUsCi0JMHgwMDBlLCAweDAwMDUsIDB4MWQwNCwgMHgyYzQyLCAweDA4MGMsIDB4ODhmNywgMHgxZjA0LCAweDJjNDIsCi0JMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHgxOTljLCAweDIwMDQsIDB4OTA4NiwgMHgwMDAwLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHgxOTljLCAweDIwMDQsIDB4OTA4NiwgMHgwMDAxLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHgxOTljLCAweDIwMDQsIDB4OTA4NiwgMHgwMDAyLCAweDAwMGUsCi0JMHgwMDA1LCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwgMHgwMDA1LCAweDAwMDYsCi0JMHgyMDAxLCAweDE5YTksIDB4MjEwMiwgMHgwMDBlLCAweDAwMDUsIDB4MjAwOSwgMHgwMTcxLCAweDIxMDQsCi0JMHhkMGRjLCAweDAxNDAsIDB4MjAwOSwgMHgwMTcwLCAweDIxMDQsIDB4MjAwYiwgMHgwMDgwLCAweGEwMDEsCi0JMHhhMDAxLCAweDIwMGEsIDB4MDAwNSwgMHgwMDM2LCAweDAwNDYsIDB4MjAwMSwgMHgwMTQxLCAweDIwMGMsCi0JMHg5MThjLCAweGZmMDAsIDB4OTE4NiwgMHgyMTAwLCAweDAxNDAsIDB4OTE4NiwgMHgyMDAwLCAweDAxNzAsCi0JMHg5MTg2LCAweDAxMDAsIDB4MTkwNCwgMHgyY2RhLCAweDAwNDgsIDB4MDAxNiwgMHgyMDA5LCAweDFhODcsCi0JMHgyMTA0LCAweDgwMDAsIDB4MDIwOCwgMHgyMDBhLCAweDAwMWUsIDB4MDRmMCwgMHgyMDA5LCAweDAwYTIsCi0JMHgwODBjLCAweDBlNTIsIDB4MjAxOSwgMHgwMTYwLCAweDIzMjQsIDB4MjAxMSwgMHgwMDAzLCAweDIwMDksCi0JMHgwMTY5LCAweDIxMDQsIDB4OTA4NCwgMHgwMDA3LCAweDIxMGMsIDB4OTE4YywgMHgwMDA3LCAweDkxMGUsCi0JMHgxZGIwLCAweDkwODYsIDB4MDAwMywgMHgxNTQ4LCAweDIzMDQsIDB4MDA2NiwgMHgwMDc2LCAweDIwMzEsCi0JMHgwMDAyLCAweDIzM2MsIDB4OTczZSwgMHgwMTQ4LCAweDg2MzEsIDB4MWRkOCwgMHgyMDMxLCAweDFhODgsCi0JMHgyNjNjLCAweDg3MzgsIDB4MDIwOCwgMHgyNzMyLCAweDIzMDQsIDB4MDA3ZSwgMHgwMDZlLCAweDk0MDIsCi0JMHgwMmEwLCAweDE5ZDAsIDB4ODIxMSwgMHgxOWQ4LCAweDg0ZmYsIDB4MDE3MCwgMHgyMDAxLCAweDAxNDEsCi0JMHgyMDBjLCAweDkxOGMsIDB4ZmYwMCwgMHg5MTg2LCAweDAxMDAsIDB4MDEzMCwgMHgyMDA5LCAweDE4MGMsCi0JMHgyMTA0LCAweGMwZGQsIDB4MjAwYSwgMHgwMDA4LCAweDA0MjEsIDB4MjAwMSwgMHgxOTgxLCAweDIwMGMsCi0JMHgwODBjLCAweDBlNTIsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMDUsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsCi0JMHhkMGRjLCAweDAxYjAsIDB4MjAwMSwgMHgwMTYwLCAweDIwMDQsIDB4OTAwNSwgMHgwMTQwLCAweDIwMDEsCi0JMHgwMTQxLCAweDIwMDQsIDB4OTA4NCwgMHhmZjAwLCAweDkwODYsIDB4MDEwMCwgMHgxMTQ4LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDAxNiwgMHgwMDI2LCAweDAwMjEsIDB4MDAyZSwgMHgwMDFlLCAweDAxMmUsCi0JMHgwMDA1LCAweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDYwMTQsIDB4MDAwNiwgMHgyMDAxLCAweDAxNjEsCi0JMHgyMDAzLCAweDAwMDAsIDB4NjAxNywgMHgwMDE4LCAweGEwMDEsIDB4YTAwMSwgMHg2MDJmLCAweDAwMDgsCi0JMHg2MTA0LCAweDkxOGUsIDB4MDAxMCwgMHg2MTA2LCAweDkxOGUsIDB4MDAxMCwgMHg2MTA2LCAweDYwMTcsCi0JMHgwMDQwLCAweDA0YjksIDB4MDAxZSwgMHg5MTg0LCAweDAwMDMsIDB4MDFlMCwgMHgwMDM2LCAweDAwMTYsCi0JMHgyMDE5LCAweDAxNDEsIDB4NjEyNCwgMHg5MThjLCAweDAwMjgsIDB4MTEyMCwgMHgyMzA0LCAweDkwODQsCi0JMHgyODAwLCAweDBkYzAsIDB4MDAxZSwgMHg5MTljLCAweGZmZTQsIDB4OTE4NCwgMHgwMDAxLCAweDAxMTgsCi0JMHg5Mzg1LCAweDAwMDksIDB4NjAxNiwgMHg5MTg0LCAweDAwMDIsIDB4MDExOCwgMHg5Mzg1LCAweDAwMTIsCi0JMHg2MDE2LCAweDAwM2UsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsIDB4YzFkYywgMHgyMTAyLCAweDAwY2UsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHgwODBjLCAweDc2NTEsIDB4MDEwOCwgMHhjMGJjLCAweDIwMDksCi0JMHgwMTQwLCAweDIxMTQsIDB4OTI5NCwgMHgwMDAxLCAweDkyMTUsIDB4MjIwYSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHgyMDA5LCAweDAxNDAsIDB4MjExNCwgMHg5Mjk0LCAweDAwMDEsCi0JMHg5Mjg1LCAweDEwMDAsIDB4MjAwYSwgMHgyMjBhLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwMTYsCi0JMHgwMDI2LCAweDIwMDksIDB4MDE0MCwgMHgyMTE0LCAweDkyOTQsIDB4MDAwMSwgMHg5MjE1LCAweDIyMGEsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MjAwOSwgMHgwMTQwLCAweDIxMDQsCi0JMHgxMTI4LCAweDA4MGMsIDB4NzY1MSwgMHgwMTEwLCAweGMwYmMsIDB4MDAwOCwgMHhjMGJkLCAweDIwMGEsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAxNTYsIDB4NjA1MCwgMHg5MDg1LCAweDAwNDAsCi0JMHg2MDUyLCAweDYwNTAsIDB4OTA4NCwgMHhmYmNmLCAweDYwNTIsIDB4MDgwYywgMHgyYzYxLCAweDkwODUsCi0JMHgyMDAwLCAweDYwNTIsIDB4MjBhOSwgMHgwMDEyLCAweDFkMDQsIDB4MmQ4NCwgMHgwODBjLCAweDg4ZjcsCi0JMHgxZjA0LCAweDJkODQsIDB4NjA1MCwgMHg5MDg1LCAweDA0MDAsIDB4OTA4NCwgMHhkZmJmLCAweDYwNTIsCi0JMHgwMTVlLCAweDAwMGUsIDB4MDAwNSwgMHgyZmZmLCAweDJmZmYsIDB4MmUyMywgMHgyZTIzLCAweDJlMmYsCi0JMHgyZTJmLCAweDJlM2IsIDB4MmUzYiwgMHgyZTQ5LCAweDJlNDksIDB4MmU1NSwgMHgyZTU1LCAweDJlNjMsCi0JMHgyZTYzLCAweDJlNzEsIDB4MmU3MSwgMHgyZTgzLCAweDJlODMsIDB4MmU4ZiwgMHgyZThmLCAweDJlOWQsCi0JMHgyZTlkLCAweDJlYmIsIDB4MmViYiwgMHgyZWRiLCAweDJlZGIsIDB4MmVhYiwgMHgyZWFiLCAweDJlY2IsCi0JMHgyZWNiLCAweDJlZTksIDB4MmVlOSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZWZiLCAweDJlZmIsIDB4MmYwNywgMHgyZjA3LCAweDJmMTUsCi0JMHgyZjE1LCAweDJmMjMsIDB4MmYyMywgMHgyZjMzLCAweDJmMzMsIDB4MmY0MSwgMHgyZjQxLCAweDJmNTEsCi0JMHgyZjUxLCAweDJmNjEsIDB4MmY2MSwgMHgyZjczLCAweDJmNzMsIDB4MmY4MSwgMHgyZjgxLCAweDJmOTEsCi0JMHgyZjkxLCAweDJmYjMsIDB4MmZiMywgMHgyZmQ1LCAweDJmZDUsIDB4MmZhMSwgMHgyZmExLCAweDJmYzQsCi0JMHgyZmM0LCAweDJmZTQsIDB4MmZlNCwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgyZTgxLCAweDJlODEsCi0JMHgyZTgxLCAweDJlODEsIDB4MmU4MSwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI0YzAsIDB4MDgwNCwgMHgyZmY3LCAweDAxMDYsCi0JMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsCi0JMHgyMmNjLCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgyNGMwLCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4MjMwNywgMHgwODA0LCAweDJmZjcsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsCi0JMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyNGMwLCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4MjJjYywgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweGEwMDEsIDB4MGNmMCwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDEzOTQsIDB4MDgwNCwgMHgyZmY3LCAweDAxMDYsCi0JMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsCi0JMHgyNGMwLCAweDA4MGMsIDB4MTM5NCwgMHgwODA0LCAweDJmZjcsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsCi0JMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyMmNjLCAweDA4MGMsCi0JMHgxMzk0LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgxMzk0LCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgyNGMwLCAweDA4MGMsCi0JMHgxMzk0LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgxMzk0LCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDEzOTQsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4MjJjYywgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgxMzk0LCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI5NzYsIDB4MDgwNCwgMHgyZmY3LCAweDAxMDYsCi0JMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsCi0JMHgyOTc2LCAweDA4MGMsIDB4MjRjMCwgMHgwODA0LCAweDJmZjcsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsCi0JMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyOTc2LCAweDA4MGMsCi0JMHgyMmNjLCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI5NzYsIDB4MDgwYywgMHgyMmNjLCAweDA4MGMsCi0JMHgyNGMwLCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI5NzYsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgyMzA3LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgyNGMwLCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI5NzYsIDB4MDgwYywgMHgxMzk0LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgxMzk0LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDIyY2MsIDB4MDgwYywgMHgxMzk0LCAweDA4MDQsCi0JMHgyZmY3LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsCi0JMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgxMzk0LCAweDA4MGMsCi0JMHgyMzA3LCAweDA4MDQsIDB4MmZmNywgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsCi0JMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI5NzYsIDB4MDgwYywgMHgyMmNjLCAweDA4MGMsCi0JMHgyNGMwLCAweDA4MGMsIDB4MTM5NCwgMHgwNDk4LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsCi0JMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDIyY2MsCi0JMHgwODBjLCAweDEzOTQsIDB4MDgwYywgMHgyMzA3LCAweDA0MTAsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsCi0JMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyOTc2LCAweDA4MGMsCi0JMHgxMzk0LCAweDA4MGMsIDB4MjMwNywgMHgwMDk4LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsCi0JMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjk3NiwgMHgwODBjLCAweDIyY2MsCi0JMHgwODBjLCAweDI0YzAsIDB4MDgwYywgMHgxMzk0LCAweDA4MGMsIDB4MjMwNywgMHgwMDAwLCAweDAxNWUsCi0JMHgwMTRlLCAweDAxM2UsIDB4MDFkZSwgMHgwMWNlLCAweDAxMmUsIDB4MDAwZSwgMHgwMTBlLCAweDAwMGQsCi0JMHgwMGI2LCAweDAwYzYsIDB4MDAyNiwgMHgwMDQ2LCAweDkwMjYsIDB4MDgwYywgMHg2YTYxLCAweDE5MDQsCi0JMHgzMTM3LCAweDcyZGMsIDB4MjAwMSwgMHgxOTdjLCAweDIwMDQsIDB4OTAwNSwgMHgxMTEwLCAweGQyOWMsCi0JMHgwMTQ4LCAweGQyODQsIDB4MTEzOCwgMHhkMmJjLCAweDE5MDQsIDB4MzEzNywgMHgwODBjLCAweDMxM2MsCi0JMHgwODA0LCAweDMxMzcsIDB4ZDJjYywgMHgxOTA0LCAweDMxMzcsIDB4MDgwYywgMHg3NjM3LCAweDExMjAsCi0JMHg3MGFmLCAweGZmZmYsIDB4MDgwNCwgMHgzMTM3LCAweGQyOTQsIDB4MDEyMCwgMHg3MGFmLCAweGZmZmYsCi0JMHgwODA0LCAweDMxMzcsIDB4MDgwYywgMHgzM2E1LCAweDAxNjAsIDB4MDgwYywgMHhkN2UzLCAweDAxMjgsCi0JMHgyMDAxLCAweDE4MTgsIDB4MjAzYywgMHgwODA0LCAweDMwYjAsIDB4NzBhZiwgMHhmZmZmLCAweDA4MDQsCi0JMHgzMTM3LCAweDIwMDEsIDB4MTgxOCwgMHgyMDNjLCAweDcyOTQsIDB4ZDI4NCwgMHgwOTA0LCAweDMwYjAsCi0JMHhkMjhjLCAweDE5MDQsIDB4MzBiMCwgMHgwMDM2LCAweDczYWMsIDB4OTM4ZSwgMHhmZmZmLCAweDExMTAsCi0JMHgyMDE5LCAweDAwMDEsIDB4ODMxNCwgMHg5MmUwLCAweDFjODAsIDB4MmMwNCwgMHg5MzhjLCAweDAwMDEsCi0JMHgwMTIwLCAweDkwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDAwMTAsIDB4OTA4NCwgMHgwMGZmLCAweDk3MGUsCi0JMHgwOTA0LCAweDMwYTYsIDB4OTA4ZSwgMHgwMDAwLCAweDA5MDQsIDB4MzBhNiwgMHg5MDhlLCAweDAwZmYsCi0JMHgxMTYwLCAweDcyMzAsIDB4ZDI4NCwgMHgxOTA0LCAweDMwYWIsIDB4NzI5NCwgMHhjMjhkLCAweDcyOTYsCi0JMHg3MGFmLCAweGZmZmYsIDB4MDAzZSwgMHgwODA0LCAweDMwYjAsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsCi0JMHhkMThjLCAweDAxNTAsIDB4MDAyNiwgMHgyMDExLCAweDAwMTAsIDB4MDgwYywgMHg2YWM3LCAweDAwMmUsCi0JMHgwMTE4LCAweDcwYWYsIDB4ZmZmZiwgMHgwNDg4LCAweDkwMGUsIDB4MDgwYywgMHgyODczLCAweDA4MGMsCi0JMHg2NmI5LCAweDE1MzgsIDB4OTAwNiwgMHhiOGJiLCAweDA1MjAsIDB4YjhhYywgMHg5MDA1LCAweDAxNDgsCi0JMHgwMGM2LCAweDIwNjAsIDB4MDgwYywgMHg4Y2Y3LCAweDAwY2UsIDB4MDkwYywgMHg5MDk2LCAweGI4YWYsCi0JMHgwMDAwLCAweDA4MGMsIDB4NmFhMywgMHgxMTY4LCAweDcwMzAsIDB4ZDA4YywgMHgwMTMwLCAweGI4MDAsCi0JMHhkMGJjLCAweDAxMzgsIDB4MDgwYywgMHg2OTQ0LCAweDAxMjAsIDB4MDgwYywgMHgzMTU1LCAweDAxNDgsCi0JMHgwMDI4LCAweDA4MGMsIDB4MzI5NSwgMHgwODBjLCAweDMxODEsIDB4MDExOCwgMHg4MzE4LCAweDA4MDQsCi0JMHgzMDRhLCAweDczYWUsIDB4MDAxMCwgMHg3MGFmLCAweGZmZmYsIDB4MDAzZSwgMHgwODA0LCAweDMxMzcsCi0JMHg5NzgwLCAweDMzYjYsIDB4MjAzZCwgMHg5N2JjLCAweGZmMDAsIDB4ODczZiwgMHgyMDQxLCAweDAwN2UsCi0JMHg3MGFjLCAweDkwOTYsIDB4ZmZmZiwgMHgxMTE4LCAweDkwMGUsIDB4MjhhOCwgMHgwMDUwLCAweDk4MTIsCi0JMHgwMjIwLCAweDIwMDgsIDB4OTgwMiwgMHgyMGE4LCAweDAwMjAsIDB4NzBhZiwgMHhmZmZmLCAweDA4MDQsCi0JMHgzMTM3LCAweDI3MDAsIDB4MDE1NiwgMHgwMDE2LCAweDkxMDYsIDB4MDkwNCwgMHgzMTJjLCAweDIwMDEsCi0JMHgxODBkLCAweDIwMDQsIDB4ZDA4YywgMHgwMTU4LCAweDAwMjYsIDB4MjAxMSwgMHgwMDEwLCAweDA4MGMsCi0JMHg2YWM3LCAweDAwMmUsIDB4MDEyMCwgMHgyMDA5LCAweGZmZmYsIDB4MDgwNCwgMHgzMTM0LCAweGM0ODQsCi0JMHgwODBjLCAweDY3MjQsIDB4MDE2OCwgMHgwODBjLCAweGQ3ZTMsIDB4MTkwNCwgMHgzMTJjLCAweDA4MGMsCi0JMHgzM2E1LCAweDE5MDQsIDB4MzEyYywgMHgwODBjLCAweDY2YjksIDB4MTkwNCwgMHgzMTM0LCAweDAwMDgsCi0JMHhjNDg1LCAweGI4YmIsIDB4MDUyMCwgMHhiOGFjLCAweDkwMDUsIDB4MDE0OCwgMHgwMGM2LCAweDIwNjAsCi0JMHgwODBjLCAweDhjZjcsIDB4MDBjZSwgMHgwOTBjLCAweDkwOTYsIDB4YjhhZiwgMHgwMDAwLCAweDA4MGMsCi0JMHg2YWEzLCAweDExMzAsIDB4NzAzMCwgMHhkMDhjLCAweDAxZjgsIDB4YjgwMCwgMHhkMGJjLCAweDExZTAsCi0JMHg3Mjk0LCAweGQyOGMsIDB4MDE4MCwgMHgwODBjLCAweDZhYTMsIDB4OTA4MiwgMHgwMDA2LCAweDAyZTAsCi0JMHhkNDg0LCAweDExMTgsIDB4MDgwYywgMHg2NmRlLCAweDAwMjgsIDB4MDgwYywgMHgzMzIxLCAweDAxYTAsCi0JMHgwODBjLCAweDMzNGMsIDB4MDA4OCwgMHgwODBjLCAweDMyOTUsIDB4MDgwYywgMHhkN2UzLCAweDExNjAsCi0JMHgwODBjLCAweDMxODEsIDB4MDE4OCwgMHgwMDQwLCAweDA4MGMsIDB4ZDdlMywgMHgxMTE4LCAweDA4MGMsCi0JMHgzMzIxLCAweDAxMTAsIDB4MDQ1MSwgMHgwMTQwLCAweDAwMWUsIDB4ODEwOCwgMHgwMTVlLCAweDFmMDQsCi0JMHgzMGM5LCAweDcwYWYsIDB4ZmZmZiwgMHgwMDE4LCAweDAwMWUsIDB4MDE1ZSwgMHg3MWFlLCAweDAwNGUsCi0JMHgwMDJlLCAweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweDAwYzYsIDB4MDAxNiwgMHg3MGFmLCAweDAwMDEsCi0JMHgyMDA5LCAweDAwN2UsIDB4MDgwYywgMHg2NmI5LCAweDExNjgsIDB4YjgxMywgMHgwMGZmLCAweGI4MTcsCi0JMHhmZmZlLCAweDA4MGMsIDB4MzI5NSwgMHgwNGE5LCAweDAxMjgsIDB4NzBkYywgMHhjMGJkLCAweDcwZGUsCi0JMHgwODBjLCAweGQ1MmIsIDB4MDAxZSwgMHgwMGNlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDc2LCAweDAwZDYsCi0JMHgwMGM2LCAweDIwMDEsIDB4MTg0YywgMHgyMDA0LCAweDkwODQsIDB4MDBmZiwgMHhiODQyLCAweDA4MGMsCi0JMHhiMzI1LCAweDAxZDAsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDEsCi0JMHg5MDA2LCAweDA4MGMsIDB4NjY1NiwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywgMHg2NjZhLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4NzBhOCwgMHg4MDAwLCAweDcwYWEsIDB4MDEyZSwgMHgyMDA5LCAweDAwMDQsCi0JMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDBkZSwgMHgwMDdlLCAweDAwMWUsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDA3NiwgMHgwMGQ2LCAweDAwYzYsIDB4MjAwMSwgMHgxODRjLCAweDIwMDQsCi0JMHg5MDg0LCAweDAwZmYsIDB4Yjg0MiwgMHgwODBjLCAweGIzMjUsIDB4MDU0OCwgMHgyYjAwLCAweDYwMTIsCi0JMHhiODAwLCAweGMwYzQsIDB4YjgwMiwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgwMTQwLCAweGI4MDQsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDA2LCAweDExMTAsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsCi0JMHhkNTU0LCAweDYwMjMsIDB4MDAwMSwgMHg5MDA2LCAweDA4MGMsIDB4NjY1NiwgMHgyMDAxLCAweDAwMDIsCi0JMHgwODBjLCAweDY2NmEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzBhOCwgMHg4MDAwLCAweDcwYWEsCi0JMHgwMTJlLCAweDIwMDksIDB4MDAwMiwgMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsCi0JMHgwMGRlLCAweDAwN2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwYjYsIDB4MDBjNiwgMHgwMDI2LCAweDIwMDksCi0JMHgwMDgwLCAweDA4MGMsIDB4NjZiOSwgMHgxMTQwLCAweGI4MTMsIDB4MDBmZiwgMHhiODE3LCAweGZmZmMsCi0JMHgwMDM5LCAweDAxMTAsIDB4NzBlMywgMHhmZmZmLCAweDAwMmUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMDUsCi0JMHgwMDE2LCAweDAwNzYsIDB4MDBkNiwgMHgwMGM2LCAweDA4MGMsIDB4YjI3ZCwgMHgwMWQwLCAweDJiMDAsCi0JMHg2MDEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDEsIDB4OTAwNiwgMHgwODBjLCAweDY2NTYsCi0JMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg2NjZhLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwZTQsCi0JMHg4MDAwLCAweDcwZTYsIDB4MDEyZSwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywgMHhiMzUyLCAweDkwODUsCi0JMHgwMDAxLCAweDAwY2UsIDB4MDBkZSwgMHgwMDdlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweDAwN2YsIDB4MDgwYywgMHg2NmI5LCAweDExYjgsCi0JMHhiODEzLCAweDAwZmYsIDB4YjgxNywgMHhmZmZkLCAweGI4Y2YsIDB4MDAwNCwgMHgwODBjLCAweGIyN2QsCi0JMHgwMTcwLCAweDJiMDAsIDB4NjAxMiwgMHg2MzE2LCAweDYwMjMsIDB4MDAwMSwgMHg2MjBhLCAweDA4MGMsCi0JMHhkNTU0LCAweDIwMDksIDB4MDAyMiwgMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGU2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDM2LCAweDAwMjYsCi0JMHgwMGI2LCAweDIxZjAsIDB4MDgwYywgMHg5NmFmLCAweDA4MGMsIDB4OTYyZiwgMHgwODBjLCAweGIxMTEsCi0JMHgwODBjLCAweGMyZDMsIDB4M2UwOCwgMHgyMTMwLCAweDgxZmYsIDB4MDEyMCwgMHgyMGE5LCAweDAwN2UsCi0JMHg5MDBlLCAweDAwMTgsIDB4MjBhOSwgMHgwMDdmLCAweDkwMGUsIDB4MDAxNiwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTQwLCAweDk2ODYsIDB4MDAwMiwgMHgxMTE4LCAweGI4MDAsIDB4ZDBiYywgMHgxMTEwLCAweDA4MGMsCi0JMHg2MTQ4LCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDMyMzUsIDB4OTY4NiwgMHgwMDAxLCAweDE5MGMsCi0JMHgzMzc5LCAweDAwYmUsIDB4MDAyZSwgMHgwMDNlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDA0NiwgMHgwMDM2LCAweDAwMjYsIDB4MDAxNiwgMHgwMGI2LCAweDYyMTAsCi0JMHgyMjU4LCAweGJhYTAsIDB4MDAyNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywgMHg5NmE0LCAweDAwNzYsCi0JMHgyMDM5LCAweDAwMDAsIDB4MDgwYywgMHg5NTc3LCAweDJjMDgsIDB4MDgwYywgMHhlOTFjLCAweDAwN2UsCi0JMHgwMDFlLCAweGJhMTAsIDB4YmIxNCwgMHhiY2MwLCAweDA4MGMsIDB4NjE0OCwgMHhiYTEyLCAweGJiMTYsCi0JMHhiY2MyLCAweDAwYmUsIDB4MDAxZSwgMHgwMDJlLCAweDAwM2UsIDB4MDA0ZSwgMHgwMGNlLCAweDAwZWUsCi0JMHgwMDA1LCAweDAwZTYsIDB4MDAwNiwgMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwgMHhiOGEwLCAweDAwYmUsCi0JMHg5MDg2LCAweDAwODAsIDB4MDE1MCwgMHgyMDcxLCAweDE4MDAsIDB4NzBhOCwgMHg5MDA1LCAweDAxMTAsCi0JMHg4MDAxLCAweDcwYWEsIDB4MDAwZSwgMHgwMGVlLCAweDAwMDUsIDB4MjA3MSwgMHgxODAwLCAweDcwZTQsCi0JMHg5MDA1LCAweDBkYzAsIDB4ODAwMSwgMHg3MGU2LCAweDBjYTgsIDB4YjgwMCwgMHhjMDhjLCAweGI4MDIsCi0JMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgwMGM2LCAweDAwYjYsIDB4MDA0NiwgMHgwMDM2LCAweDAwMjYsCi0JMHgwMDE2LCAweDAxNTYsIDB4MjE3OCwgMHg4MWZmLCAweDExMTgsIDB4MjBhOSwgMHgwMDAxLCAweDAwNzgsCi0JMHgwODBjLCAweDU3ZDUsIDB4ZDBjNCwgMHgwMTQwLCAweGQwYTQsIDB4MDEzMCwgMHg5MDA2LCAweDIwMjAsCi0JMHgyMDA5LCAweDAwMmQsIDB4MDgwYywgMHhlYzMxLCAweDIwYTksIDB4MDgwMCwgMHg5MDE2LCAweDAwMjYsCi0JMHg5MjhlLCAweDAwN2UsIDB4MDkwNCwgMHgzMzAwLCAweDkyOGUsIDB4MDA3ZiwgMHgwOTA0LCAweDMzMDAsCi0JMHg5MjhlLCAweDAwODAsIDB4MDVlOCwgMHg5Mjg4LCAweDEwMDAsIDB4MjEwYywgMHg4MWZmLCAweDA1YzAsCi0JMHg4ZmZmLCAweDExNDgsIDB4MjAwMSwgMHgxOThlLCAweDAwMDYsIDB4MjAwMywgMHgwMDAxLCAweDA0ZjEsCi0JMHgwMDBlLCAweDIwMDMsIDB4MDAwMCwgMHgwMGI2LCAweDAwYzYsIDB4MjE1OCwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDZhNmQsIDB4MDBjZSwgMHgwMGJlLCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk2YTQsCi0JMHgwMDc2LCAweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDk1NzcsIDB4MDBiNiwgMHgwMGM2LCAweDAwMjYsCi0JMHgyMTU4LCAweGJhMDQsIDB4OTI5NCwgMHgwMGZmLCAweDkyODYsIDB4MDAwNiwgMHgxMTE4LCAweGI4MDcsCi0JMHgwNDA0LCAweDAwMjgsIDB4MjAwMSwgMHgwMDA0LCAweDgwMDcsIDB4OTIxNSwgMHhiYTA2LCAweDAwMmUsCi0JMHgwMGNlLCAweDAwYmUsIDB4MDAxNiwgMHgyYzA4LCAweDA4MGMsIDB4ZTkxYywgMHgwMDFlLCAweDAwN2UsCi0JMHgwMDJlLCAweDgyMTAsIDB4MWYwNCwgMHgzMmI3LCAweDAxNWUsIDB4MDAxZSwgMHgwMDJlLCAweDAwM2UsCi0JMHgwMDRlLCAweDAwYmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwMDQ2LCAweDAwMjYsCi0JMHgwMDE2LCAweDA4MGMsIDB4NTdkNSwgMHhkMGM0LCAweDAxNDAsIDB4ZDBhNCwgMHgwMTMwLCAweDkwMDYsCi0JMHgyMjIwLCAweDIwMDksIDB4MDAyOSwgMHgwODBjLCAweGVjMzEsIDB4MDAxZSwgMHgwMDJlLCAweDAwNGUsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwYzYsIDB4NzI5NCwgMHg4MmZmLCAweDAxZTgsCi0JMHgwODBjLCAweDZhOWIsIDB4MTFkMCwgMHgyMTAwLCAweDA4MGMsIDB4MjhhNiwgMHg4MWZmLCAweDAxYjgsCi0JMHgyMDE5LCAweDAwMDEsIDB4ODMxNCwgMHg5MmUwLCAweDFjODAsIDB4MmMwNCwgMHhkMzg0LCAweDAxMjAsCi0JMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHgwMDEwLCAweDkwODQsIDB4MDBmZiwgMHg5MTE2LCAweDAxMzgsCi0JMHg5MDk2LCAweDAwZmYsIDB4MDExMCwgMHg4MzE4LCAweDBjNjgsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsCi0JMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDI5LCAweDAwYTksIDB4MDAzZSwgMHg5MTgwLCAweDEwMDAsCi0JMHgyMDA0LCAweDkwNjUsIDB4MDE1OCwgMHgwMDE2LCAweDAwYzYsIDB4MjA2MSwgMHgxYWI3LCAweDAwMWUsCi0JMHg2MTEyLCAweDA4MGMsIDB4MzI1MCwgMHgwMDFlLCAweDA4MGMsIDB4NjZkZSwgMHgwMTJlLCAweDAwY2UsCi0JMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDIxMTAsIDB4MDgwYywgMHhhYzZjLCAweDA4MGMsCi0JMHhlZjk0LCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwY2MsCi0JMHgwMDA1LCAweDAwYzYsIDB4MDBiNiwgMHgwODBjLCAweDc2MzcsIDB4MTExOCwgMHgyMGE5LCAweDA4MDAsCi0JMHgwMDEwLCAweDIwYTksIDB4MDc4MiwgMHgwODBjLCAweDc2MzcsIDB4MTExMCwgMHg5MDBlLCAweDAwMTAsCi0JMHgyMDA5LCAweDAwN2UsIDB4OTE4MCwgMHgxMDAwLCAweDIwMDQsIDB4OTA1ZCwgMHgwMTMwLCAweDg2ZmYsCi0JMHgwMTEwLCAweGI4MDAsIDB4ZDBiYywgMHgwOTBjLCAweDY2ZGUsIDB4ODEwOCwgMHgxZjA0LCAweDMzOGEsCi0JMHgyMDYxLCAweDE4MDAsIDB4NjA3ZiwgMHgwMDAwLCAweDYwODAsIDB4OTA4NCwgMHgwMGZmLCAweDYwODIsCi0JMHg2MGIzLCAweDAwMDAsIDB4MDBiZSwgMHgwMGNlLCAweDAwMDUsIDB4MjAwMSwgMHgxODY5LCAweDIwMDQsCi0JMHhkMGJjLCAweDAwMDUsIDB4MjAxMSwgMHgxODQ4LCAweDIyMTQsIDB4ZDJlYywgMHgwMDA1LCAweDAwMjYsCi0JMHgyMDExLCAweDE4NjcsIDB4MjIxNCwgMHhkMmRjLCAweDAwMmUsIDB4MDAwNSwgMHg3ZWVmLCAweDdkZTgsCi0JMHg3Y2U0LCAweDgwZTIsIDB4N2JlMSwgMHg4MGUwLCAweDgwZGMsIDB4ODBkYSwgMHg3YWQ5LCAweDgwZDYsCi0JMHg4MGQ1LCAweDgwZDQsIDB4ODBkMywgMHg4MGQyLCAweDgwZDEsIDB4NzljZSwgMHg3OGNkLCAweDgwY2MsCi0JMHg4MGNiLCAweDgwY2EsIDB4ODBjOSwgMHg4MGM3LCAweDgwYzYsIDB4NzdjNSwgMHg3NmMzLCAweDgwYmMsCi0JMHg4MGJhLCAweDc1YjksIDB4ODBiNiwgMHg3NGI1LCAweDczYjQsIDB4NzJiMywgMHg4MGIyLCAweDgwYjEsCi0JMHg4MGFlLCAweDcxYWQsIDB4ODBhYywgMHg3MGFiLCAweDZmYWEsIDB4NmVhOSwgMHg4MGE3LCAweDZkYTYsCi0JMHg2Y2E1LCAweDZiYTMsIDB4NmE5ZiwgMHg2OTllLCAweDY4OWQsIDB4ODA5YiwgMHg4MDk4LCAweDY3OTcsCi0JMHg2NjkwLCAweDY1OGYsIDB4NjQ4OCwgMHg2Mzg0LCAweDYyODIsIDB4ODA4MSwgMHg4MDgwLCAweDYxN2MsCi0JMHg2MDdhLCAweDgwNzksIDB4NWY3NiwgMHg4MDc1LCAweDgwNzQsIDB4ODA3MywgMHg4MDcyLCAweDgwNzEsCi0JMHg4MDZlLCAweDVlNmQsIDB4ODA2YywgMHg1ZDZiLCAweDVjNmEsIDB4NWI2OSwgMHg4MDY3LCAweDVhNjYsCi0JMHg1OTY1LCAweDU4NjMsIDB4NTc1YywgMHg1NjVhLCAweDU1NTksIDB4ODA1NiwgMHg4MDU1LCAweDU0NTQsCi0JMHg1MzUzLCAweDUyNTIsIDB4NTE1MSwgMHg1MDRlLCAweDRmNGQsIDB4ODA0YywgMHg4MDRiLCAweDRlNGEsCi0JMHg0ZDQ5LCAweDgwNDcsIDB4NGM0NiwgMHg4MDQ1LCAweDgwNDMsIDB4ODAzYywgMHg4MDNhLCAweDgwMzksCi0JMHg4MDM2LCAweDRiMzUsIDB4ODAzNCwgMHg0YTMzLCAweDQ5MzIsIDB4NDgzMSwgMHg4MDJlLCAweDQ3MmQsCi0JMHg0NjJjLCAweDQ1MmIsIDB4NDQyYSwgMHg0MzI5LCAweDQyMjcsIDB4ODAyNiwgMHg4MDI1LCAweDQxMjMsCi0JMHg0MDFmLCAweDNmMWUsIDB4M2UxZCwgMHgzZDFiLCAweDNjMTgsIDB4ODAxNywgMHg4MDEwLCAweDNiMGYsCi0JMHgzYTA4LCAweDgwMDQsIDB4MzkwMiwgMHg4MDAxLCAweDgwMDAsIDB4ODAwMCwgMHgzODAwLCAweDM3MDAsCi0JMHgzNjAwLCAweDgwMDAsIDB4MzUwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgzNDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MzMwMCwgMHgzMjAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MzEwMCwgMHgzMDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDJmMDAsIDB4ODAwMCwgMHgyZTAwLCAweDJkMDAsIDB4MmMwMCwgMHg4MDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDJiMDAsIDB4ODAwMCwgMHgyYTAwLCAweDI5MDAsIDB4MjgwMCwgMHg4MDAwLCAweDI3MDAsCi0JMHgyNjAwLCAweDI1MDAsIDB4MjQwMCwgMHgyMzAwLCAweDIyMDAsIDB4ODAwMCwgMHg4MDAwLCAweDIxMDAsCi0JMHgyMDAwLCAweDFmMDAsIDB4MWUwMCwgMHgxZDAwLCAweDFjMDAsIDB4ODAwMCwgMHg4MDAwLCAweDFiMDAsCi0JMHgxYTAwLCAweDgwMDAsIDB4MTkwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDE4MDAsIDB4ODAwMCwgMHgxNzAwLCAweDE2MDAsIDB4MTUwMCwgMHg4MDAwLCAweDE0MDAsCi0JMHgxMzAwLCAweDEyMDAsIDB4MTEwMCwgMHgxMDAwLCAweDBmMDAsIDB4ODAwMCwgMHg4MDAwLCAweDBlMDAsCi0JMHgwZDAwLCAweDBjMDAsIDB4MGIwMCwgMHgwYTAwLCAweDA5MDAsIDB4ODAwMCwgMHg4MDAwLCAweDA4MDAsCi0JMHgwNzAwLCAweDgwMDAsIDB4MDYwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgwNTAwLCAweDA0MDAsCi0JMHgwMzAwLCAweDgwMDAsIDB4MDIwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgwMTAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4MDAwMCwgMHg4MDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsCi0JMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgyMDcxLCAweDE4OWUsCi0JMHg3MDAzLCAweDAwMDIsIDB4OTAwNiwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YSwgMHg3MDRlLCAweDcwMGUsCi0JMHg3MDQyLCAweDcwNDYsIDB4NzAzYiwgMHgxOGJhLCAweDcwM2YsIDB4MThiYSwgMHg3MDA3LCAweDAwMDEsCi0JMHgwODBjLCAweDEwMjcsIDB4MDkwYywgMHgwZGM1LCAweDI5MDAsIDB4NzA2YSwgMHhhODY3LCAweDAwMDIsCi0JMHhhOGFiLCAweGRjYjAsIDB4MDgwYywgMHgxMDI3LCAweDA5MGMsIDB4MGRjNSwgMHgyOTAwLCAweDcwNmUsCi0JMHhhODY3LCAweDAwMDIsIDB4YThhYiwgMHhkY2IwLCAweDAwMDUsIDB4MjA3MSwgMHgxODllLCAweDcwMDQsCi0JMHgwMDAyLCAweDM0ZTUsIDB4MzRlNiwgMHgzNGY5LCAweDM1MGQsIDB4MDAwNSwgMHgxMDA0LCAweDM0ZjYsCi0JMHgwZTA0LCAweDM0ZjYsIDB4MjA3OSwgMHgwMDAwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMGMsCi0JMHg5MDA1LCAweDExMjgsIDB4NzAwZiwgMHgwMDAxLCAweDAxMmUsIDB4MDQ2OCwgMHgwMDA1LCAweDAxMmUsCi0JMHgwY2U4LCAweDIwNzksIDB4MDAwMCwgMHgyMDYxLCAweDE4YjgsIDB4MmM0YywgMHhhODZjLCAweDkwOGUsCi0JMHgwMTAwLCAweDAxMjgsIDB4OTA4NiwgMHgwMjAwLCAweDA5MDQsIDB4MzVlMSwgMHgwMDA1LCAweDcwMTgsCi0JMHgyMDQ4LCAweDIwNjEsIDB4MTgwMCwgMHg3MDFjLCAweDA4MDcsIDB4NzAxNCwgMHgyMDQ4LCAweGE4NjQsCi0JMHg5MDk0LCAweDAwZmYsIDB4OTI5NiwgMHgwMDI5LCAweDExMjAsIDB4YWE3OCwgMHhkMmZjLCAweDAxMjgsCi0JMHgwMDA1LCAweDkwODYsIDB4MDEwMywgMHgwMTA4LCAweDAwMDUsIDB4MjA3OSwgMHgwMDAwLCAweDIwNjEsCi0JMHgxODAwLCAweDcwMWMsIDB4MDgwNywgMHgyMDYxLCAweDE4MDAsIDB4Nzg4MCwgMHg5MDhhLCAweDAwNDAsCi0JMHgxMjEwLCAweDYxZDAsIDB4MDA0MiwgMHgyMTAwLCAweDkwOGEsIDB4MDAzZiwgMHgxYTA0LCAweDM1ZGUsCi0JMHg2MWQwLCAweDA4MDQsIDB4MzU3MywgMHgzNWI1LCAweDM1ZWQsIDB4MzVkZSwgMHgzNWY5LCAweDM2MDMsCi0JMHgzNjA5LCAweDM2MGQsIDB4MzYxZCwgMHgzNjIxLCAweDM2MzcsIDB4MzYzZCwgMHgzNjQzLCAweDM2NGUsCi0JMHgzNjU5LCAweDM2NjgsIDB4MzY3NywgMHgzNjg1LCAweDM2OWMsIDB4MzZiNywgMHgzNWRlLCAweDM3NjIsCi0JMHgzN2EwLCAweDM4NDYsIDB4Mzg1NywgMHgzODdhLCAweDM1ZGUsIDB4MzVkZSwgMHgzNWRlLCAweDM4YjIsCi0JMHgzOGNlLCAweDM4ZDcsIDB4MzkwNiwgMHgzOTBjLCAweDM1ZGUsIDB4Mzk1MiwgMHgzNWRlLCAweDM1ZGUsCi0JMHgzNWRlLCAweDM1ZGUsIDB4MzVkZSwgMHgzOTVkLCAweDM5NjYsIDB4Mzk2ZSwgMHgzOTcwLCAweDM1ZGUsCi0JMHgzNWRlLCAweDM1ZGUsIDB4MzVkZSwgMHgzNWRlLCAweDM1ZGUsIDB4Mzk5YywgMHgzNWRlLCAweDM1ZGUsCi0JMHgzNWRlLCAweDM1ZGUsIDB4MzVkZSwgMHgzOWI5LCAweDNhNDAsIDB4MzVkZSwgMHgzNWRlLCAweDM1ZGUsCi0JMHgzNWRlLCAweDM1ZGUsIDB4MzVkZSwgMHgwMDAyLCAweDNhNmEsIDB4M2E2ZCwgMHgzYWNjLCAweDNhZTUsCi0JMHgzYjE1LCAweDNkYjcsIDB4MzVkZSwgMHg1Mzk4LCAweDM1ZGUsIDB4MzVkZSwgMHgzNWRlLCAweDM1ZGUsCi0JMHgzNWRlLCAweDM1ZGUsIDB4MzVkZSwgMHgzNWRlLCAweDM2MzcsIDB4MzYzZCwgMHg0MmVjLCAweDU3ZjksCi0JMHg0MzBhLCAweDU0MjcsIDB4NTQ3OSwgMHg1NTg0LCAweDM1ZGUsIDB4NTVlNiwgMHg1NjIyLCAweDU2NTMsCi0JMHg1NzViLCAweDU2ODAsIDB4NTZkYiwgMHgzNWRlLCAweDQzMGUsIDB4NDRlMSwgMHg0NGY3LCAweDQ1MWMsCi0JMHg0NTgxLCAweDQ1ZjUsIDB4NDYxNSwgMHg0NjhjLCAweDQ2ZTgsIDB4NDc0NCwgMHg0NzQ3LCAweDQ3NmMsCi0JMHg0ODIzLCAweDQ4ODksIDB4NDg5MSwgMHg0OWM2LCAweDRiNmUsIDB4NGJhMiwgMHg0ZTA2LCAweDM1ZGUsCi0JMHg0ZTI0LCAweDRlZWIsIDB4NGZkNCwgMHg1MDJlLCAweDM1ZGUsIDB4NTBjMSwgMHgzNWRlLCAweDUwZDcsCi0JMHg1MGYyLCAweDQ4OTEsIDB4NTMzOCwgMHg3MTRjLCAweDAwMDAsIDB4MjAyMSwgMHg0MDAwLCAweDA4MGMsCi0JMHg0YzIwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDBlMDQsIDB4MzViZiwgMHgwMDEwLCAweDAxMmUsCi0JMHgwY2MwLCAweDdjMzYsIDB4OTQ4NiwgMHg0MDAwLCAweDAxMTgsIDB4NzgzMywgMHgwMDExLCAweDAwMTAsCi0JMHg3ODMzLCAweDAwMTAsIDB4N2M4MiwgMHg3OTg2LCAweDdhOGEsIDB4N2I4ZSwgMHgyMDkxLCAweDQwODAsCi0JMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHg3MDA3LCAweDAwMDEsCi0JMHgyMDkxLCAweDUwMDAsIDB4NzAwZiwgMHgwMDAwLCAweDAxMmUsIDB4MDAwNSwgMHgyMDIxLCAweDQwMDEsCi0JMHgwOGIwLCAweDIwMjEsIDB4NDAwMiwgMHgwODk4LCAweDIwMjEsIDB4NDAwMywgMHgwODgwLCAweDIwMjEsCi0JMHg0MDA1LCAweDA4NjgsIDB4MjAyMSwgMHg0MDA2LCAweDA4NTAsIDB4MjAzOSwgMHgwMDAxLCAweDkwMmUsCi0JMHgyNTIwLCAweDdiODgsIDB4N2E4YywgMHg3ODg0LCAweDc5OTAsIDB4ODFmZiwgMHgwZDk4LCAweDA4MDQsCi0JMHg0YzJkLCAweDIwMzksIDB4MDAwMSwgMHg5MDJlLCAweDI1MjAsIDB4N2I4OCwgMHg3YThjLCAweDc4ODQsCi0JMHg3OTkwLCAweDA4MDQsIDB4NGMzMCwgMHg3OTg0LCAweDc4ODgsIDB4MjExNCwgMHgyMDBhLCAweDA4MDQsCi0JMHgzNWI1LCAweDc5ODQsIDB4MjExNCwgMHgwODA0LCAweDM1YjUsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksCi0JMHgwMDIxLCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAwMjEsIDB4MjBhOSwgMHgwMDFmLCAweDQwMDMsCi0JMHg3OTg0LCAweDdhODgsIDB4N2I4YywgMHgwODA0LCAweDM1YjUsIDB4Nzg4NCwgMHgyMDYwLCAweDA4MDQsCi0JMHgzNjZhLCAweDIwMDksIDB4MDAwMywgMHgyMDExLCAweDAwMDMsIDB4MjAxOSwgMHgwMDE0LCAweDc4OWIsCi0JMHgwMTM3LCAweDc4OTMsIDB4ZmZmZiwgMHgyMDAxLCAweDE4OGYsIDB4MjAwNCwgMHg5MDA1LCAweDAxMTgsCi0JMHg3ODk2LCAweDA4MDQsIDB4MzViNSwgMHg3ODk3LCAweDAwMDEsIDB4MDgwNCwgMHgzNWI1LCAweDIwMzksCi0JMHgwMDAxLCAweDdkOTgsIDB4N2M5YywgMHgwODA0LCAweDM1ZjEsIDB4MjAzOSwgMHgwMDAxLCAweDdkOTgsCi0JMHg3YzljLCAweDA4MDQsIDB4MzVmZCwgMHg3OWEwLCAweDkxODIsIDB4MDA0MCwgMHgwMjEwLCAweDA4MDQsCi0JMHgzNWVhLCAweDIxMzgsIDB4N2Q5OCwgMHg3YzljLCAweDA4MDQsIDB4MzVmMSwgMHg3OWEwLCAweDkxODIsCi0JMHgwMDQwLCAweDAyMTAsIDB4MDgwNCwgMHgzNWVhLCAweDIxMzgsIDB4N2Q5OCwgMHg3YzljLCAweDA4MDQsCi0JMHgzNWZkLCAweDc5YTAsIDB4OTE4MiwgMHgwMDQwLCAweDAyMTAsIDB4MDgwNCwgMHgzNWVhLCAweDIxZTgsCi0JMHg3OTg0LCAweDc4ODgsIDB4MjBhOSwgMHgwMDAxLCAweDIxYTAsIDB4NDAwNCwgMHgwODA0LCAweDM1YjUsCi0JMHgyMDYxLCAweDA4MDAsIDB4ZTEwYywgMHg5MDA2LCAweDJjMTUsIDB4OTIwMCwgMHg4YzYwLCAweDgxMDksCi0JMHgxZGQ4LCAweDIwMTAsIDB4OTAwNSwgMHgwOTA0LCAweDM1YjUsIDB4MDgwNCwgMHgzNWU0LCAweDc5YTAsCi0JMHg5MTgyLCAweDAwNDAsIDB4MDIxMCwgMHgwODA0LCAweDM1ZWEsIDB4MjFlMCwgMHgyMGE5LCAweDAwMDEsCi0JMHg3OTg0LCAweDIxOTgsIDB4NDAxMiwgMHgwODA0LCAweDM1YjUsIDB4MjA2OSwgMHgxODQ3LCAweDc4ODQsCi0JMHg3OTkwLCAweDkxMWEsIDB4MWEwNCwgMHgzNWVhLCAweDgwMTksIDB4MDkwNCwgMHgzNWVhLCAweDY4NGEsCi0JMHg2OTQyLCAweDc4OGMsIDB4Njg1MiwgMHg3ODg4LCAweDY4NTYsIDB4OTAwNiwgMHg2ODVhLCAweDY4NWUsCi0JMHgwODBjLCAweDc5NjMsIDB4MDgwNCwgMHgzNWI1LCAweDIwNjksIDB4MTg0NywgMHg3ODg0LCAweDc5OTQsCi0JMHg5MTFhLCAweDFhMDQsIDB4MzVlYSwgMHg4MDE5LCAweDA5MDQsIDB4MzVlYSwgMHg2ODRlLCAweDY5NDYsCi0JMHg3ODhjLCAweDY4NjIsIDB4Nzg4OCwgMHg2ODY2LCAweDkwMDYsIDB4Njg2YSwgMHg2ODZlLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg2YmY4LCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDkwMmUsCi0JMHgyNTIwLCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwgMHgzNWU3LCAweDc5ODQsCi0JMHg3Yjg4LCAweDdhOGMsIDB4MjBhOSwgMHgwMDA1LCAweDIwZTksIDB4MDAwMSwgMHgyMGExLCAweDE4YTYsCi0JMHg0MTAxLCAweDA4MGMsIDB4NGJlNCwgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsCi0JMHgyMDA5LCAweDAwMjAsIDB4YTg1YywgMHg5MDgwLCAweDAwMTksIDB4YWY2MCwgMHgwODBjLCAweDRjMmQsCi0JMHg3MDFmLCAweDM2ZGIsIDB4MDAwNSwgMHhhODY0LCAweDIwMDgsIDB4OTA4NCwgMHgwMGZmLCAweDkwOTYsCi0JMHgwMDExLCAweDAxNjgsIDB4OTA5NiwgMHgwMDE5LCAweDAxNTAsIDB4OTA5NiwgMHgwMDE1LCAweDAxMzgsCi0JMHg5MDk2LCAweDAwNDgsIDB4MDEyMCwgMHg5MDk2LCAweDAwMjksIDB4MTkwNCwgMHgzNWU3LCAweDgxMGYsCi0JMHg5MThjLCAweDAwZmYsIDB4MDkwNCwgMHgzNWU3LCAweDcxMTIsIDB4NzAxMCwgMHg4MDAxLCAweDA1NjAsCi0JMHg3MDEyLCAweDA4MGMsIDB4NGJlNCwgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsCi0JMHgyMDA5LCAweDAwMjAsIDB4NzA2OCwgMHgyMDQwLCAweGEyOGMsIDB4YTM5MCwgMHhhNDk0LCAweGE1OTgsCi0JMHg5MjkwLCAweDAwNDAsIDB4OTM5OSwgMHgwMDAwLCAweDk0YTEsIDB4MDAwMCwgMHg5NWE5LCAweDAwMDAsCi0JMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHhhZjYwLCAweDA4MGMsIDB4NGMyZCwgMHg3MDFmLCAweDM3MTksCi0JMHgwMDA1LCAweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwOTYsIDB4MDAwMiwgMHgwMTIwLCAweDkwOTYsCi0JMHgwMDBhLCAweDE5MDQsIDB4MzVlNywgMHgwODg4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMTQsCi0JMHgyMDQ4LCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwOTYsCi0JMHgwMDI5LCAweDExNDgsIDB4YzJmZCwgMHhhYTdhLCAweDA4MGMsIDB4NjI5ZiwgMHgwMTM4LCAweGE4N2EsCi0JMHhhOTgyLCAweDAxMmUsIDB4MDA2MCwgMHgwODBjLCAweDY1Y2YsIDB4MTEzMCwgMHg3MDA3LCAweDAwMDMsCi0JMHg3MDFmLCAweDM3NDcsIDB4MDEyZSwgMHgwMDA1LCAweDA4MGMsIDB4NzEwYiwgMHgwMTJlLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MjBhOSwgMHgwMDA1LCAweDIwZTEsIDB4MDAwMSwgMHgyMDk5LCAweDE4YTYsCi0JMHg0MDBhLCAweDIxMDAsIDB4OTIxMCwgMHg5Mzk5LCAweDAwMDAsIDB4OTRhMSwgMHgwMDAwLCAweDk1YTksCi0JMHgwMDAwLCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDIwMDksIDB4MDAyMCwgMHgwMTJlLCAweGFmNjAsCi0JMHgwODA0LCAweDRjMzAsIDB4MjA5MSwgMHg4MDAwLCAweDc4MzcsIDB4NDAwMCwgMHg3ODMzLCAweDAwMTAsCi0JMHg3ODgzLCAweDQwMDAsIDB4Nzg4NywgMHg0OTUzLCAweDc4OGIsIDB4NTAyMCwgMHg3ODhmLCAweDIwMjAsCi0JMHgyMDA5LCAweDAxN2YsIDB4MjEwNCwgMHg3ODkyLCAweDNmMDAsIDB4Nzg5NiwgMHgyMDYxLCAweDAxMDAsCi0JMHg2MjAwLCAweDIwNjEsIDB4MDIwMCwgMHg2MDNjLCAweDgwMDcsIDB4OTIwNSwgMHg3ODlhLCAweDIwMDksCi0JMHgwNGZkLCAweDIxMDQsIDB4Nzg5ZSwgMHgyMDkxLCAweDUwMDAsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsCi0JMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwgMHgwMTgwLCAweDIwMDEsIDB4MWExYywgMHgyMDA0LCAweDkwMDUsCi0JMHgwMTI4LCAweDIwMDEsIDB4MDA4YiwgMHgyMDA0LCAweGQwZmMsIDB4MGRkOCwgMHgyMDAxLCAweDAwOGEsCi0JMHgyMDAzLCAweDAwMDIsIDB4MjAwMywgMHgxMDAxLCAweDIwNzEsIDB4MDA4MCwgMHgwODA0LCAweDA0MjcsCi0JMHg4MWZmLCAweDE5MDQsIDB4MzVlNywgMHg3OTg0LCAweDA4MGMsIDB4NjcyNCwgMHgxOTA0LCAweDM1ZWEsCi0JMHg3ZTk4LCAweDk2ODQsIDB4M2ZmZiwgMHg5MDgyLCAweDQwMDAsIDB4MWEwNCwgMHgzNWVhLCAweDdjODgsCi0JMHg3ZDhjLCAweDA4MGMsIDB4Njg4NywgMHgwODBjLCAweDY4NTYsIDB4MDAwMCwgMHgxNTE4LCAweDIwNjEsCi0JMHgxY2QwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNDgsCi0JMHg2MDE0LCAweDkwNGQsIDB4MDEzMCwgMHhhODZjLCAweDk0MDYsIDB4MTExOCwgMHhhODcwLCAweDk1MDYsCi0JMHgwMTUwLCAweDAxMmUsIDB4OWNlMCwgMHgwMDE4LCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsCi0JMHgxYTA0LCAweDM1ZTcsIDB4MGMzMCwgMHgwODBjLCAweGNjZjMsIDB4MDEyZSwgMHgwOTA0LCAweDM1ZTcsCi0JMHgwODA0LCAweDM1YjUsIDB4OTAwZSwgMHgyMDAxLCAweDAwMDUsIDB4MDgwYywgMHg3MTBiLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhkM2Q0LCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDA4MDQsCi0JMHgzNWI1LCAweDAwYTYsIDB4Mjk1MCwgMHhiMTk4LCAweDA4MGMsIDB4NjcyNCwgMHgxOTA0LCAweDM4MzMsCi0JMHhiNmE0LCAweDk2ODQsIDB4M2ZmZiwgMHg5MDgyLCAweDQwMDAsIDB4MTZlOCwgMHhiNDljLCAweGI1YTAsCi0JMHgwODBjLCAweDY4ODcsIDB4MDgwYywgMHg2ODU2LCAweDE1MjAsIDB4MjA2MSwgMHgxY2QwLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MDE0OCwgMHg2MDE0LCAweDkwNGQsCi0JMHgwMTMwLCAweGE4NmMsIDB4OTQwNiwgMHgxMTE4LCAweGE4NzAsIDB4OTUwNiwgMHgwMTU4LCAweDAxMmUsCi0JMHg5Y2UwLCAweDAwMTgsIDB4MjAwMSwgMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgyMDA5LCAweDAwMGQsCi0JMHgxMmIwLCAweDBjMjgsIDB4MDgwYywgMHhjY2YzLCAweDAxMmUsIDB4MjAwOSwgMHgwMDAzLCAweDAxNzgsCi0JMHgwMGUwLCAweDkwMGUsIDB4MjAwMSwgMHgwMDA1LCAweDA4MGMsIDB4NzEwYiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDA4MGMsIDB4ZDNkNCwgMHgwODBjLCAweDZlOTIsIDB4MDEyZSwgMHgwMDcwLCAweGIwOTcsCi0JMHg0MDA1LCAweGIxOWEsIDB4MDAxMCwgMHhiMDk3LCAweDQwMDYsIDB4OTAwZSwgMHg5MDg1LCAweDAwMDEsCi0JMHgyMDAxLCAweDAwMzAsIDB4MmE0OCwgMHgwMGFlLCAweDAwMDUsIDB4YjA5NywgMHg0MDAwLCAweDkwMDYsCi0JMHg5MThkLCAweDAwMDEsIDB4MjAwOCwgMHgyYTQ4LCAweDAwYWUsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4NGJmYiwgMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg2N2ViLCAweDA5MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4Njg4ZCwgMHgwOTA0LCAweDM1ZTcsIDB4MDgwNCwgMHg0NjBjLCAweDgxZmYsCi0JMHgxOTA0LCAweDM1ZTcsIDB4MDgwYywgMHg0YzE3LCAweDA5MDQsIDB4MzVlYSwgMHgwODBjLCAweDY5MWIsCi0JMHgwOTA0LCAweDM1ZTcsIDB4MjAxOSwgMHgwMDA1LCAweDc5YTgsIDB4MDgwYywgMHg2OGE4LCAweDA5MDQsCi0JMHgzNWU3LCAweDc4ODgsIDB4OTA4YSwgMHgxMDAwLCAweDFhMDQsIDB4MzVlYSwgMHg4MDAzLCAweDgwMGIsCi0JMHg4MTBiLCAweDkxMDgsIDB4MDgwYywgMHg4ODRiLCAweDc5YTgsIDB4ZDE4NCwgMHgxOTA0LCAweDM1YjUsCi0JMHgwODA0LCAweDQ2MGMsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4ODFmZiwgMHgwMTE4LCAweDIwMDksCi0JMHgwMDAxLCAweDA0NTAsIDB4MjAyOSwgMHgwN2ZmLCAweDY0NWMsIDB4MjQwMCwgMHg5NTA2LCAweDAxZjgsCi0JMHgyNTA4LCAweDA4MGMsIDB4NjcyNCwgMHgxMWQ4LCAweDA4MGMsIDB4NjkxYiwgMHgxMTI4LCAweDIwMDksCi0JMHgwMDAyLCAweDYyYzAsIDB4MjUxOCwgMHgwMGMwLCAweDIwMTksIDB4MDAwNCwgMHg5MDBlLCAweDA4MGMsCi0JMHg2OGE4LCAweDExMTgsIDB4MjAwOSwgMHgwMDA2LCAweDAwNzgsIDB4Nzg4NCwgMHg5MDhhLCAweDEwMDAsCi0JMHgxMjcwLCAweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweDkxMDgsIDB4MDgwYywgMHg4ODRiLCAweDg1MjksCi0JMHgxYWUwLCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDAxMmUsIDB4MDgwNCwgMHgzNWU3LCAweDAxMmUsCi0JMHgwODA0LCAweDM1ZWEsIDB4MDgwYywgMHg0YmZiLCAweDA5MDQsIDB4MzVlYSwgMHgwODBjLCAweDY3ZWIsCi0JMHgwOTA0LCAweDM1ZTcsIDB4YmFhMCwgMHgyMDE5LCAweDAwMDUsIDB4MDBjNiwgMHg5MDY2LCAweDA4MGMsCi0JMHg5NmE0LCAweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweDk1NzcsIDB4OTAwZSwgMHgwODBjLCAweGU5MWMsCi0JMHgwMDdlLCAweDAwY2UsIDB4MDgwYywgMHg2ODg3LCAweDA4MDQsIDB4MzViNSwgMHgwODBjLCAweDRiZmIsCi0JMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg2ODg3LCAweDIyMDgsIDB4MDgwNCwgMHgzNWI1LCAweDAxNTYsCi0JMHgwMGQ2LCAweDAwZTYsIDB4MjA2OSwgMHgxOTEwLCAweDY4MTAsIDB4NjkxNCwgMHg5MTBhLCAweDEyMDgsCi0JMHg5MDBlLCAweDY4MTYsIDB4OTAxNiwgMHg5MDFlLCAweDIwYTksIDB4MDA3ZSwgMHgyMDY5LCAweDEwMDAsCi0JMHgyZDA0LCAweDkwNWQsIDB4MDExOCwgMHhiODRjLCAweDAwNTksIDB4OTIxMCwgMHg4ZDY4LCAweDFmMDQsCi0JMHgzOGU4LCAweDIzMDAsIDB4OTIxOCwgMHgwMGVlLCAweDAwZGUsIDB4MDE1ZSwgMHgwODA0LCAweDM1YjUsCi0JMHgwMGY2LCAweDAwMTYsIDB4OTA3ZCwgMHgwMTM4LCAweDkwMDYsIDB4ODAwMCwgMHgyZjBjLCAweDgxZmYsCi0JMHgwMTEwLCAweDIxNzgsIDB4MGNkMCwgMHgwMDFlLCAweDAwZmUsIDB4MDAwNSwgMHgyMDY5LCAweDE5MTAsCi0JMHg2OTEwLCAweDYyYmMsIDB4MDgwNCwgMHgzNWI1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsCi0JMHgwODA0LCAweDM1ZTcsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg1N2U5LCAweDAxMjgsCi0JMHgyMDA5LCAweDAwMDcsIDB4MDEyZSwgMHgwODA0LCAweDM1ZTcsIDB4MDEyZSwgMHg2MTVjLCAweDkxOTAsCi0JMHgzM2I2LCAweDIyMTUsIDB4OTI5NCwgMHgwMGZmLCAweDYzN2MsIDB4ODNmZiwgMHgwMTA4LCAweDYyODAsCi0JMHg2N2RjLCAweDk3YzQsIDB4MDAwYSwgMHg5OGM2LCAweDAwMGEsIDB4MTExOCwgMHgyMDMxLCAweDAwMDEsCi0JMHgwMGU4LCAweDk3YzQsIDB4MDAyMiwgMHg5OGM2LCAweDAwMjIsIDB4MTExOCwgMHgyMDMxLCAweDAwMDMsCi0JMHgwMGE4LCAweDk3YzQsIDB4MDAxMiwgMHg5OGM2LCAweDAwMTIsIDB4MTExOCwgMHgyMDMxLCAweDAwMDIsCi0JMHgwMDY4LCAweDA4MGMsIDB4NzYzNywgMHgxMTE4LCAweDIwMzEsIDB4MDAwNCwgMHgwMDM4LCAweGQ3OWMsCi0JMHgwMTIwLCAweDIwMDksIDB4MDAwNSwgMHgwODA0LCAweDM1ZTcsIDB4OTAzNiwgMHg3ZTlhLCAweDdmOWUsCi0JMHgwODA0LCAweDM1YjUsIDB4NjE0YywgMHg2MjUwLCAweDIwMTksIDB4MTk4NiwgMHgyMzFjLCAweDIwMDEsCi0JMHgxOTg3LCAweDIwMDQsIDB4Nzg5YSwgMHgwODA0LCAweDM1YjUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg2MTM4LCAweDYyM2MsIDB4NjM0MCwgMHgwMTJlLCAweDA4MDQsIDB4MzViNSwgMHgwODBjLCAweDRjMTcsCi0JMHgwOTA0LCAweDM1ZWEsIDB4YmE0NCwgMHhiYjM4LCAweDA4MDQsIDB4MzViNSwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweDRjMTcsIDB4MjExMCwgMHgwOTA0LCAweDM1ZWEsIDB4YjgwNCwgMHg5MDhjLCAweDAwZmYsCi0JMHg5MThlLCAweDAwMDYsIDB4MDE0MCwgMHg5MDg0LCAweGZmMDAsIDB4OTA4NiwgMHgwNjAwLCAweDIwMDksCi0JMHgwMDA5LCAweDE5MDQsIDB4MzVlNywgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDE5LCAweDAwMDUsCi0JMHgwMGM2LCAweDkwNjYsIDB4MDgwYywgMHhhYzZjLCAweDA4MGMsIDB4OTZhNCwgMHgwMDc2LCAweDkwM2UsCi0JMHgwODBjLCAweDk1NzcsIDB4OTAwZSwgMHgwODBjLCAweGU5MWMsIDB4MDA3ZSwgMHgwMGNlLCAweGI4MDcsCi0JMHgwNDA3LCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDYxNGMsIDB4NjI1MCwgMHg3ODg0LCAweDYwNGUsCi0JMHg3Yjg4LCAweDYzNTIsIDB4MjA2OSwgMHgxODQ3LCAweDgzMWYsIDB4OTMwNSwgMHg2ODE2LCAweDc4OGMsCi0JMHgyMDY5LCAweDE5ODYsIDB4MmQxYywgMHgyMDZhLCAweDdlOTgsIDB4OTY4MiwgMHgwMDE0LCAweDEyMTAsCi0JMHgyMDMxLCAweDA3ZDAsIDB4MjA2OSwgMHgxOTg3LCAweDJkMDQsIDB4MjY2YSwgMHg3ODlhLCAweDA4MDQsCi0JMHgzNWI1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYxMzgsIDB4Nzg4NCwgMHg2MDNhLCAweDkxMGUsCi0JMHhkMWI0LCAweDE5MGMsIDB4MGViZSwgMHhkMDk0LCAweDAxNDgsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZmIsCi0JMHg3OWI0LCAweDkxOTIsIDB4MDdkMCwgMHgxMjA4LCAweDcxM2UsIDB4MDBlZSwgMHhkMGM0LCAweDAxYTgsCi0JMHgwMGQ2LCAweDc4YTgsIDB4MjAwOSwgMHgxOTlkLCAweDIwMGEsIDB4NzhhYywgMHgyMDExLCAweDE5OWUsCi0JMHgyMDEyLCAweDIwNjksIDB4MDEwMCwgMHg2ODM4LCAweDkwODYsIDB4MDAwNywgMHgxMTE4LCAweDIyMTQsCi0JMHg2YTVhLCAweDAwMTAsIDB4MjEwYywgMHg2OTVhLCAweDAwZGUsIDB4Nzg4OCwgMHhkMGVjLCAweDAxNzgsCi0JMHg2MDM0LCAweGMwOGQsIDB4NjAzNiwgMHgyMDAxLCAweDAwNTAsIDB4NjA3NiwgMHg2MDdhLCAweDYwNTYsCi0JMHg2MDZiLCAweDI0NTAsIDB4MDBjNiwgMHgyMDYxLCAweDFhZDEsIDB4MjA2MiwgMHgwMGNlLCAweDIwMTEsCi0JMHgwMTE0LCAweDIyMGMsIDB4Nzg4OCwgMHhkMDhjLCAweDAxMTgsIDB4OTE4ZCwgMHgwMDgwLCAweDAwMTAsCi0JMHg5MThjLCAweGZmN2YsIDB4MjExMiwgMHg2MDNjLCAweDc5ODgsIDB4NjEzZSwgMHg2MTQwLCAweDkxMGQsCi0JMHg3ODhjLCAweDYwNDIsIDB4N2E4OCwgMHg5Mjk0LCAweDEwMDAsIDB4OTIwNSwgMHg5MTBlLCAweGQxZTQsCi0JMHgxOTBjLCAweDBlZDQsIDB4OTA4NCwgMHgwMDIwLCAweDAxMzAsIDB4NzhiNCwgMHg2MDQ2LCAweDkwODQsCi0JMHgwMDAxLCAweDA5MGMsIDB4NDJlYywgMHg2MDQwLCAweGQwY2MsIDB4MDEyMCwgMHg3OGIwLCAweDIwMTEsCi0JMHgwMTE0LCAweDIwMTIsIDB4MDEyZSwgMHgwODA0LCAweDM1YjUsIDB4MDBmNiwgMHgyMDc5LCAweDE4MDAsCi0JMHg3YTM4LCAweGE4OTgsIDB4OTA4NCwgMHhmZWJmLCAweDkyMTUsIDB4YTg5YywgMHg5MDg0LCAweGZlYmYsCi0JMHg4MDAyLCAweDkyMTQsIDB4NzgzOCwgMHg5MDg0LCAweDAxNDAsIDB4OTIxNSwgMHg3YTNhLCAweGE4OTcsCi0JMHg0MDAwLCAweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsCi0JMHg3ODk4LCAweDkwMDUsIDB4MDFhOCwgMHg3ODg4LCAweDkwMjUsIDB4MDkwNCwgMHgzNWVhLCAweDc4OGMsCi0JMHg5MDJkLCAweDA5MDQsIDB4MzVlYSwgMHg5MDBlLCAweDA4MGMsIDB4NjcyNCwgMHgxMTIwLCAweGJhNDQsCi0JMHhiYjM4LCAweGJjNDYsIDB4YmQzYSwgMHg5MTg2LCAweDA3ZmYsIDB4MDE5MCwgMHg4MTA4LCAweDBjYTAsCi0JMHgwODBjLCAweDRjMTcsIDB4MDkwNCwgMHgzNWVhLCAweDc4ODgsIDB4OTAwZCwgMHgwOTA0LCAweDM1ZWEsCi0JMHg3ODhjLCAweDkwMDUsIDB4MDkwNCwgMHgzNWVhLCAweGJhNDQsIDB4Yjk0NiwgMHhiYjM4LCAweGI4M2EsCi0JMHgwODA0LCAweDM1YjUsIDB4MjAxMSwgMHhiYzA5LCAweDAwMTAsIDB4MjAxMSwgMHhiYzA1LCAweDA4MGMsCi0JMHg1N2U5LCAweDE5MDQsIDB4MzVlNywgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwgMHg3OTg0LCAweDkxODYsCi0JMHgwMGZmLCAweDExMzAsIDB4MjAwMSwgMHgxODE4LCAweDIwMDQsIDB4OTA4NSwgMHhmZjAwLCAweDAwODgsCi0JMHg5MTgyLCAweDAwN2YsIDB4MTZlMCwgMHg5MTg4LCAweDMzYjYsIDB4MjEwZCwgMHg5MThjLCAweDAwZmYsCi0JMHgyMDAxLCAweDE4MTgsIDB4MjAwNCwgMHgwMDI2LCAweDkxMTYsIDB4MDAyZSwgMHgwNTgwLCAweDgxMGYsCi0JMHg5MTA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwMDYsIDB4MDgwYywgMHhiMjdkLCAweDAwMGUsCi0JMHgwNTEwLCAweDYwMmUsIDB4NjIwYSwgMHg3OTg0LCAweDAwYjYsIDB4MDgwYywgMHg2NmJmLCAweDJiMDgsCi0JMHgwMGJlLCAweDE1MDAsIDB4NjExMiwgMHg2MDIzLCAweDAwMDEsIDB4MDgwYywgMHg0YmU0LCAweDAxZDAsCi0JMHg5MDA2LCAweGE4NjYsIDB4NzAwNywgMHgwMDAzLCAweGE4MzIsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsCi0JMHg3MDFmLCAweDNhYzUsIDB4MjkwMCwgMHg2MDE2LCAweDIwMDksIDB4MDAzMiwgMHgwODBjLCAweGIzNTIsCi0JMHgwMTJlLCAweDAwY2UsIDB4MDAwNSwgMHgwMTJlLCAweDAwY2UsIDB4MDgwNCwgMHgzNWU3LCAweDAwY2UsCi0JMHgwODA0LCAweDM1ZWEsIDB4MDgwYywgMHhiMmQzLCAweDBjYjAsIDB4YTgzMCwgMHg5MDg2LCAweDAxMDAsCi0JMHgwOTA0LCAweDM1ZTcsIDB4MDgwNCwgMHgzNWI1LCAweDIwNjEsIDB4MWE3NCwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDYwMDAsIDB4ZDA4NCwgMHgwMTcwLCAweDYxMDQsIDB4NjIwOCwgMHgyMDYxLCAweDE4MDAsCi0JMHg2MzU0LCAweDYwNzQsIDB4Nzg5YSwgMHg2MGMwLCAweDc4OWUsIDB4NjBiYywgMHg3OGFhLCAweDAxMmUsCi0JMHgwODA0LCAweDM1YjUsIDB4OTAwZSwgMHgyMTEwLCAweDBjODgsIDB4ODFmZiwgMHgxOTA0LCAweDM1ZTcsCi0JMHgwODBjLCAweDc2MzcsIDB4MDkwNCwgMHgzNWU3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYyNTQsCi0JMHg2MDc0LCAweDkyMDIsIDB4MDI0OCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHgyOGRjLCAweDA4MGMsCi0JMHg1YTExLCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDAxMmUsIDB4MDgwNCwgMHgzNWVhLCAweDAwMDYsCi0JMHgwMDE2LCAweDAwYzYsIDB4MDBlNiwgMHgyMDAxLCAweDE5YWEsIDB4MjA3MCwgMHgyMDYxLCAweDE4NDcsCi0JMHg2MDA4LCAweDIwNzIsIDB4OTAwZSwgMHgyMDExLCAweDE0MDAsIDB4MDgwYywgMHg5Mzc1LCAweDcyMDYsCi0JMHgwMGVlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg4MWZmLCAweDAxMjgsIDB4MDEyZSwgMHgyMDIxLCAweDQwMGIsIDB4MDgwNCwgMHgzNWI3LCAweDc4ODQsCi0JMHhkMGZjLCAweDAxNTgsIDB4MjAwMSwgMHgwMDJhLCAweDIwMDQsIDB4OTAwNSwgMHgwMTgwLCAweDkwODIsCi0JMHgwMGUxLCAweDAyOTgsIDB4MDEyZSwgMHgwODA0LCAweDM1ZWEsIDB4MjAwMSwgMHgwMDJhLCAweDIwMDQsCi0JMHg5MDA1LCAweDAxMjgsIDB4MjA2OSwgMHgxODQ3LCAweDY5MDgsIDB4OTEwMiwgMHgxMjMwLCAweDAxMmUsCi0JMHgwODA0LCAweDM1ZWEsIDB4MDEyZSwgMHgwODA0LCAweDM1ZTcsIDB4MDgwYywgMHhiMjNkLCAweDBkZDAsCi0JMHg3ODg0LCAweGQwZmMsIDB4MDkwNCwgMHgzYjk0LCAweDAwYzYsIDB4MDgwYywgMHg0YmU0LCAweDAwY2UsCi0JMHgwZDg4LCAweGE4NjcsIDB4MDAwMCwgMHg3ODg0LCAweGE4MGEsIDB4Nzg5OCwgMHhhODBlLCAweDc4OWMsCi0JMHhhODEyLCAweDIwMDEsIDB4MDAyZSwgMHgyMDA0LCAweGE4MWEsIDB4MjAwMSwgMHgwMDJmLCAweDIwMDQsCi0JMHhhODFlLCAweDIwMDEsIDB4MDAzMCwgMHgyMDA0LCAweGE4MjIsIDB4MjAwMSwgMHgwMDMxLCAweDIwMDQsCi0JMHhhODI2LCAweDIwMDEsIDB4MDAzNCwgMHgyMDA0LCAweGE4MmEsIDB4MjAwMSwgMHgwMDM1LCAweDIwMDQsCi0JMHhhODJlLCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODAsIDB4MDAwMywgMHg5MDg0LCAweDAwZmMsCi0JMHg4MDA0LCAweGE4MTYsIDB4MDgwYywgMHgzZDFhLCAweDA5MjgsIDB4NzAxNCwgMHgyMDQ4LCAweGFkMmMsCi0JMHhhYzI4LCAweGFiMWMsIDB4YWExOCwgMHhhOTMwLCAweGE4MDgsIDB4ZDBiNCwgMHgxMTIwLCAweDIwMjksCi0JMHgwMDAwLCAweDIwMjEsIDB4MDAwMCwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsCi0JMHg5MDg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDFiLCAweDA4MGMsIDB4NGMyZCwgMHg3MDFmLCAweDNjNTcsCi0JMHg3MDIzLCAweDAwMDEsIDB4MDEyZSwgMHgwMDA1LCAweDAwNDYsIDB4MDA4NiwgMHgwMDk2LCAweDAwYTYsCi0JMHgwMGI2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDAwZjYsIDB4MDgwYywgMHgzYWZmLCAweDIwMDEsCi0JMHgxOWEwLCAweDIwMDMsIDB4MDAwMCwgMHgyMDIxLCAweDAwMGEsIDB4MjA2MSwgMHgwMTAwLCAweDYxMDQsCi0JMHgwMDE2LCAweDYwYmIsIDB4MDAwMCwgMHg2MGJmLCAweDMyZTEsIDB4NjBiZiwgMHgwMDEyLCAweDA4MGMsCi0JMHgzZDg5LCAweDA4MGMsIDB4M2Q0OCwgMHgwMGY2LCAweDAwZTYsIDB4MDA4NiwgMHgyOTQwLCAweDIwNzEsCi0JMHgxYTY5LCAweDIwNzksIDB4MDA5MCwgMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwgMHg2ODg0LCAweGQwYjQsCi0JMHgwMTQwLCAweDIwMDEsIDB4MDAzNSwgMHgyMDA0LCAweDc4MGUsIDB4MjAwMSwgMHgwMDM0LCAweDIwMDQsCi0JMHg3ODBhLCAweDAwZGUsIDB4MjAxMSwgMHgwMDAxLCAweDA4MGMsIDB4NDEzMCwgMHgwMDhlLCAweDAwZWUsCi0JMHgwMGZlLCAweDA4MGMsIDB4NDA1MiwgMHgwODBjLCAweDNmNTcsIDB4MDViOCwgMHgyMDAxLCAweDAyMGIsCi0JMHgyMDA0LCAweDkwODQsIDB4MDE0MCwgMHgxZGI4LCAweDA4MGMsIDB4NDFhNCwgMHgwMGY2LCAweDIwNzksCi0JMHgwMzAwLCAweDc4YmMsIDB4MDBmZSwgMHg5MDhjLCAweDAwNzAsIDB4MTU2MCwgMHgyMDcxLCAweDAyMDAsCi0JMHg3MDM3LCAweDAwMDAsIDB4NzA1MCwgMHg5MDg0LCAweGZmMDAsIDB4OTA4NiwgMHgzMjAwLCAweDE1MTAsCi0JMHg3MDM3LCAweDAwMDEsIDB4NzA1MCwgMHg5MDg0LCAweGZmMDAsIDB4OTA4NiwgMHhlMTAwLCAweDExZDAsCi0JMHg3MDM3LCAweDAwMDAsIDB4NzA1NCwgMHg3MDM3LCAweDAwMDAsIDB4NzE1YywgMHg5MTA2LCAweDExOTAsCi0JMHgyMDAxLCAweDE4MjAsIDB4MjAwNCwgMHg5MTA2LCAweDExNjgsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsCi0JMHg2MDI0LCAweDkwODQsIDB4MWUwMCwgMHgwMGNlLCAweDAxMzgsIDB4MDgwYywgMHgzZjYxLCAweDA4MGMsCi0JMHgzZDQzLCAweDAwNTgsIDB4MDgwYywgMHgzZDQzLCAweDA4MGMsIDB4NDBjOCwgMHgwODBjLCAweDQwNDgsCi0JMHgyMDAxLCAweDAyMGIsIDB4MjAwNCwgMHhkMGU0LCAweDBkZDgsIDB4MjAwMSwgMHgwMzJhLCAweDIwMDMsCi0JMHgwMDA0LCAweDIwNjEsIDB4MDEwMCwgMHg2MDI3LCAweDAwMDIsIDB4MDAxZSwgMHg2MTA2LCAweDIwMTEsCi0JMHgwMjBkLCAweDIwMTMsIDB4MDAyMCwgMHg2MGJiLCAweDAwMDAsIDB4NjBiZiwgMHgwMTA4LCAweDYwYmYsCi0JMHgwMDEyLCAweDIwMDEsIDB4MDAwNCwgMHgyMDBjLCAweDkxOGMsIDB4ZmZmZCwgMHgyMTAyLCAweDA4MGMsCi0JMHgxMmZjLCAweDIwMDksIDB4MDAyOCwgMHgwODBjLCAweDI0MDksIDB4MjAwMSwgMHgwMjI3LCAweDIwMGMsCi0JMHgyMTAyLCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMGFlLCAweDAwOWUsCi0JMHgwMDhlLCAweDAwNGUsIDB4MjAwMSwgMHgxOWEwLCAweDIwMDQsIDB4OTAwNSwgMHgxMTE4LCAweDAxMmUsCi0JMHgwODA0LCAweDM1YjUsIDB4MDEyZSwgMHgyMDIxLCAweDQwMGMsIDB4MDgwNCwgMHgzNWI3LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNzYsIDB4MDA4NiwgMHgwMDk2LCAweDAwZDYsCi0JMHgwMTU2LCAweDcwMTQsIDB4MjA0OCwgMHg3MDIwLCAweDIwYTgsIDB4ODAwMCwgMHg3MDIyLCAweGE4MDQsCi0JMHg5MDA1LCAweDA5MDQsIDB4M2NiMywgMHgyMDQ4LCAweDFmMDQsIDB4M2M2NywgMHg3MDY4LCAweDIwNDAsCi0JMHhhMjhjLCAweGEzOTAsIDB4YTQ5NCwgMHhhNTk4LCAweGE5MzAsIDB4YTgwOCwgMHhkMGI0LCAweDExMjAsCi0JMHgyMDI5LCAweDAwMDAsIDB4MjAyMSwgMHgwMDAwLCAweDAwOTYsIDB4NzAxNCwgMHgyMDQ4LCAweGE4NjQsCi0JMHgwMDllLCAweDkwODYsIDB4MDEwMywgMHgwMTcwLCAweDg5MDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwYmMsCi0JMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMWIsIDB4MDgwYywgMHg0YzJkLCAweDcwMWYsCi0JMHgzYzU3LCAweDAwYjAsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsCi0JMHhmZmMwLCAweDkwODAsIDB4MDAxYiwgMHgyMWE4LCAweDI3ZTAsIDB4MjA5OCwgMHgyN2U4LCAweDIwYTAsCi0JMHgwMDA2LCAweDA4MGMsIDB4MGY4YiwgMHgwMDBlLCAweDA4MGMsIDB4NGMzMCwgMHg3MDFmLCAweDNjNTcsCi0JMHgwMTVlLCAweDAwZGUsIDB4MDA5ZSwgMHgwMDhlLCAweDAwN2UsIDB4MDA1ZSwgMHgwMDRlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHg3MDE0LCAweDIwNDgsIDB4YTg2NCwgMHg5MDg2LCAweDAxMDMsCi0JMHgxMTE4LCAweDcwMWYsIDB4M2QxOCwgMHgwNDUwLCAweDcwMTQsIDB4MjA0OCwgMHhhODY4LCAweGMwZmQsCi0JMHhhODZhLCAweDIwMDksIDB4MDA3ZiwgMHgwODBjLCAweDY2YjksIDB4MDExMCwgMHg5MDA2LCAweDAwMzAsCi0JMHhiODEzLCAweDAwZmYsIDB4YjgxNywgMHhmZmZkLCAweDA4MGMsIDB4ZDVhNywgMHgwMTVlLCAweDAwZGUsCi0JMHgwMDllLCAweDAwOGUsIDB4MDA3ZSwgMHgwMDVlLCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwOTA0LCAweDM1ZTcsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNzYsCi0JMHgwMDg2LCAweDAwOTYsIDB4MDBkNiwgMHgwMTU2LCAweDcwMWYsIDB4M2NlYSwgMHg3MDA3LCAweDAwMDMsCi0JMHgwODA0LCAweDNjYTgsIDB4YTgzMCwgMHg5MDg2LCAweDAxMDAsIDB4MjAyMSwgMHg0MDBjLCAweDA5MDQsCi0JMHgzNWI3LCAweDAwNzYsIDB4YWQxMCwgMHhhYzBjLCAweGFiMjQsIDB4YWEyMCwgMHhhOTMwLCAweGE4MDgsCi0JMHhkMGI0LCAweDExMjAsIDB4MjAyOSwgMHgwMDAwLCAweDIwMjEsIDB4MDAwMCwgMHg4OTA2LCAweDgwMDYsCi0JMHg4MDA3LCAweDkwYmMsIDB4MDAzZiwgMHg5MDg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDFiLCAweDIxYTgsCi0JMHgyN2UwLCAweDIwOTgsIDB4MjdlOCwgMHgyMGEwLCAweDAwMDYsIDB4MDgwYywgMHgwZjhiLCAweDAwMGUsCi0JMHgwODBjLCAweDRjMzAsIDB4MDA3ZSwgMHg3MDFmLCAweDNjNTcsIDB4NzAyMywgMHgwMDAxLCAweDAwMDUsCi0JMHgwODA0LCAweDM1YjUsIDB4MDE1NiwgMHgwMGM2LCAweGE4MTQsIDB4OTA4YSwgMHgwMDFlLCAweDAyMTgsCi0JMHhhODMzLCAweDAwMWUsIDB4MDAxMCwgMHhhODMyLCAweDAwNzgsIDB4ODFmZiwgMHgwMTY4LCAweDAwMTYsCi0JMHgwODBjLCAweDRiZTQsIDB4MDAxZSwgMHgwMTMwLCAweGE4MDAsIDB4MjA0MCwgMHhhMDA4LCAweGE4MGEsCi0JMHgyMTAwLCAweDBjNTgsIDB4OTAwNiwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwgMHgwMGNlLCAweDAxNWUsCi0JMHgwMDA1LCAweDAwMDYsIDB4MDBmNiwgMHgyMDc5LCAweDAwMDAsIDB4Nzg4MCwgMHg5MDg2LCAweDAwNDQsCi0JMHgwMGZlLCAweDAwMGUsIDB4MDAwNSwgMHgyMDAxLCAweDE5YTAsIDB4MjAwMywgMHgwMDAxLCAweDAwMDUsCi0JMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwgMHgyMDYxLCAweDAyMDAsIDB4MjAwMSwgMHgxOWFiLCAweDIwMDQsCi0JMHg2MDFhLCAweDIwNjEsIDB4MDEwMCwgMHgyMDAxLCAweDE5YWEsIDB4MjAwNCwgMHg2MGNlLCAweDYxMDQsCi0JMHhjMWFjLCAweDYxMDYsIDB4MDgwYywgMHg0YmU0LCAweGE4MTMsIDB4MDAxOSwgMHhhODE3LCAweDAwMDEsCi0JMHgyOTAwLCAweGE4NWEsIDB4MjAwMSwgMHgwMDJlLCAweDIwMDQsIDB4YTg2NiwgMHgyMDAxLCAweDAwMmYsCi0JMHgyMDA0LCAweGE4NmEsIDB4MjA2MSwgMHgwMDkwLCAweDIwNzksIDB4MDEwMCwgMHgyMDAxLCAweDE5YWEsCi0JMHgyMDA0LCAweDYwMzYsIDB4MjAwOSwgMHgwMDQwLCAweDA4MGMsIDB4MjQwOSwgMHgyMDAxLCAweDAwMmEsCi0JMHgyMDA0LCAweDkwODQsIDB4ZmZmOCwgMHhhODZlLCAweDYwMWEsIDB4YTg3MywgMHgwMDAwLCAweDYwMWYsCi0JMHgwMDAwLCAweDc4Y2EsIDB4OTAwNiwgMHg2MDBhLCAweDYwMGUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsCi0JMHgwMDA1LCAweDAwZTYsIDB4MDgwYywgMHg0YmU0LCAweDI5NDAsIDB4YTAxMywgMHgwMDE5LCAweGEwMTcsCi0JMHgwMDAxLCAweDI4MDAsIDB4YTA1YSwgMHgyMDAxLCAweDAwMzAsIDB4MjAwNCwgMHhhODY2LCAweDIwMDEsCi0JMHgwMDMxLCAweDIwMDQsIDB4YTg2YSwgMHgyMDAxLCAweDAwMmEsIDB4MjAwNCwgMHg5MDg0LCAweGZmZjgsCi0JMHhhODZlLCAweGE4NzMsIDB4MDAwMCwgMHgyMDAxLCAweDAzMmEsIDB4MjAwMywgMHgwMDA0LCAweDIwMDEsCi0JMHgwMzAwLCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDAyMGQsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsCi0JMHgwMDA0LCAweDIwMGMsIDB4OTE4ZCwgMHgwMDAyLCAweDIxMDIsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4ODFmZiwgMHgwMTQ4LCAweDA4MGMsIDB4MmM1OSwgMHgxMTMwLCAweDkwMDYsCi0JMHgwODBjLCAweDJiYjEsIDB4OTAwNiwgMHgwODBjLCAweDJiOTQsIDB4MjAwMSwgMHgxOTlmLCAweDIwMDMsCi0JMHgwMDAwLCAweDc4ODQsIDB4OTA4NCwgMHgwMDA3LCAweDAwMDIsIDB4M2RkOCwgMHgzZGUxLCAweDNkZWEsCi0JMHgzZGQ1LCAweDNkZDUsIDB4M2RkNSwgMHgzZGQ1LCAweDNkZDUsIDB4MDEyZSwgMHgwODA0LCAweDM1ZWEsCi0JMHgyMDA5LCAweDAxMTQsIDB4MjEwNCwgMHg5MDg1LCAweDA4MDAsIDB4MjAwYSwgMHgwODBjLCAweDNmYWIsCi0JMHgwMGMwLCAweDIwMDksIDB4MDExNCwgMHgyMTA0LCAweDkwODUsIDB4NDAwMCwgMHgyMDBhLCAweDA4MGMsCi0JMHgzZmFiLCAweDAwNzgsIDB4MDgwYywgMHg3NjM3LCAweDExMjgsIDB4MDEyZSwgMHgyMDA5LCAweDAwMTYsCi0JMHgwODA0LCAweDM1ZTcsIDB4ODFmZiwgMHgwMTI4LCAweDAxMmUsIDB4MjAyMSwgMHg0MDBiLCAweDA4MDQsCi0JMHgzNWI3LCAweDIwMDEsIDB4MDE0MSwgMHgyMDA0LCAweGQwZGMsIDB4MGRiMCwgMHgwMDg2LCAweDAwOTYsCi0JMHgwMGE2LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwgMHgwODBjLCAweDNhZmYsCi0JMHgyMDA5LCAweDAxMDEsIDB4MjEwYywgMHgwMDE2LCAweDdlYzgsIDB4N2RjYywgMHg5MDA2LCAweDIwNjgsCi0JMHgyMDYwLCAweDIwNTgsIDB4MDgwYywgMHg0MjdmLCAweDA4MGMsIDB4NDFjZiwgMHg5MDNlLCAweDI3MjAsCi0JMHgwMGY2LCAweDAwZTYsIDB4MDA4NiwgMHgyOTQwLCAweDIwNzEsIDB4MWE2OSwgMHgyMDc5LCAweDAwOTAsCi0JMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwgMHg2ODg0LCAweGQwYjQsIDB4MDEyMCwgMHg2OGQ0LCAweDc4MGUsCi0JMHg2OGQwLCAweDc4MGEsIDB4MDBkZSwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHg0MTMwLCAweDA4MGMsCi0JMHgyYzYxLCAweDA4MGMsIDB4MmM2MSwgMHgwODBjLCAweDJjNjEsIDB4MDgwYywgMHgyYzYxLCAweDA4MGMsCi0JMHg0MTMwLCAweDAwOGUsIDB4MDBlZSwgMHgwMGZlLCAweDA4MGMsIDB4NDA1MiwgMHgyMDA5LCAweDljNDAsCi0JMHg4MTA5LCAweDExYjAsIDB4MDgwYywgMHgzZjYxLCAweDIwMDEsIDB4MDAwNCwgMHgyMDBjLCAweDkxOGMsCi0JMHhmZmZkLCAweDIxMDIsIDB4MDAxZSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwYmUsCi0JMHgwMGFlLCAweDAwOWUsIDB4MDA4ZSwgMHgyMDA5LCAweDAwMTcsIDB4MDgwYywgMHgzNWU3LCAweDBjZjgsCi0JMHgyMDAxLCAweDAyMGIsIDB4MjAwNCwgMHg5MDg0LCAweDAxNDAsIDB4MWQxMCwgMHgwMGY2LCAweDIwNzksCi0JMHgwMDAwLCAweDc4ODQsIDB4MDBmZSwgMHhkMGJjLCAweDAxNzgsIDB4MjAwMSwgMHgwMjAxLCAweDIwMGMsCi0JMHg4MWZmLCAweDAxNTAsIDB4MDgwYywgMHg0MDMwLCAweDJkMDAsIDB4OWMwNSwgMHg5YjA1LCAweDAxMjAsCi0JMHgwODBjLCAweDNmNjEsIDB4MDgwNCwgMHgzZjBlLCAweDA4MGMsIDB4NDFhNCwgMHgwODBjLCAweDQwYzgsCi0JMHgwODBjLCAweDQwMTMsIDB4MDgwYywgMHg0MDQ4LCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDc4MjQsCi0JMHhkMGFjLCAweDAxMzAsIDB4OGI1OCwgMHgwODBjLCAweDNmNjEsIDB4MDBmZSwgMHgwODA0LCAweDNmMGUsCi0JMHgwMGZlLCAweDA4MGMsIDB4M2Y1NywgMHgxMTUwLCAweDhkNjgsIDB4MjAwMSwgMHgwMDMyLCAweDI2MDIsCi0JMHgyMDAxLCAweDAwMzMsIDB4MjUwMiwgMHgwODBjLCAweDNmNjEsIDB4MDA4MCwgMHg4N2ZmLCAweDAxMzgsCi0JMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDE5MDgsIDB4ODczOSwgMHgwMDM4LCAweDIwMDEsCi0JMHgxYTY1LCAweDIwMDQsIDB4OTA4NiwgMHgwMDAwLCAweDE5MDQsIDB4M2U1ZSwgMHgyMDAxLCAweDAzMmYsCi0JMHgyMDAzLCAweDAwZjYsIDB4ODYzMSwgMHgxMjA4LCAweDg1MjksIDB4MjUwMCwgMHg5NjA1LCAweDA5MDQsCi0JMHgzZjBlLCAweDc4ODQsIDB4ZDBiYywgMHgwMTI4LCAweDJkMDAsIDB4OWMwNSwgMHg5YjA1LCAweDE5MDQsCi0JMHgzZjBlLCAweGEwMTMsIDB4MDAxOSwgMHgyMDAxLCAweDAzMmEsIDB4MjAwMywgMHgwMDA0LCAweDc4ODQsCi0JMHhkMGFjLCAweDExNDgsIDB4MjAwMSwgMHgxYTY1LCAweDIwMDMsIDB4MDAwMywgMHgyMDAxLCAweDAzMmEsCi0JMHgyMDAzLCAweDAwMDksIDB4MDAzMCwgMHhhMDE3LCAweDAwMDEsIDB4NzhiNCwgMHg5MDA1LCAweDAxMDgsCi0JMHhhMDE2LCAweDI4MDAsIDB4YTA1YSwgMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyNDA5LCAweDI5MDAsCi0JMHhhODVhLCAweGE4MTMsIDB4MDAxOSwgMHg3ODg0LCAweGQwYTQsIDB4MTE4MCwgMHhhODE3LCAweDAwMDAsCi0JMHgwMGM2LCAweDIwYTksIDB4MDAwNCwgMHgyMDYxLCAweDAwOTAsIDB4NjAyYiwgMHgwMDA4LCAweDIwMDEsCi0JMHgwMjAzLCAweDIwMDQsIDB4MWYwNCwgMHgzZWU1LCAweDAwY2UsIDB4MDAzMCwgMHhhODE3LCAweDAwMDEsCi0JMHg3OGIwLCAweDkwMDUsIDB4MDEwOCwgMHhhODE2LCAweDAwZjYsIDB4MDBjNiwgMHgyMDc5LCAweDAxMDAsCi0JMHgyMDYxLCAweDAwOTAsIDB4NzgyNywgMHgwMDAyLCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODQsCi0JMHhmZmY4LCAweDYwMWEsIDB4MDAwNiwgMHgyMDAxLCAweDAwMmIsIDB4MjAwNCwgMHg2MDFlLCAweDc4YzYsCi0JMHgwMDBlLCAweDc4Y2EsIDB4MDBjZSwgMHgwMGZlLCAweDA4MDQsIDB4M2UxOCwgMHgwMDFlLCAweDAwYzYsCi0JMHgyMDAxLCAweDAzMmEsIDB4MjAwMywgMHgwMDA0LCAweDIwNjEsIDB4MDEwMCwgMHg2MDI3LCAweDAwMDIsCi0JMHg2MTA2LCAweDIwMTEsIDB4MDIwZCwgMHgyMDEzLCAweDAwMjAsIDB4MjAwMSwgMHgwMDA0LCAweDIwMGMsCi0JMHg5MThjLCAweGZmZmQsIDB4MjEwMiwgMHgwODBjLCAweDEyZmMsIDB4Nzg4NCwgMHg5MDg0LCAweDAwMDMsCi0JMHg5MDg2LCAweDAwMDIsIDB4MDFhMCwgMHgyMDA5LCAweDAwMjgsIDB4MDgwYywgMHgyNDA5LCAweDIwMDEsCi0JMHgwMjI3LCAweDIwMGMsIDB4MjEwMiwgMHg2MDUwLCAweDkwODQsIDB4YjdlZiwgMHg2MDUyLCAweDYwMmYsCi0JMHgwMDAwLCAweDYwNGIsIDB4ZjdmNywgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDAwY2UsCi0JMHgyZDA4LCAweDJjMTAsIDB4MmIxOCwgMHgyYjAwLCAweDljMDUsIDB4OWQwNSwgMHgwMGZlLCAweDAwZWUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMGFlLCAweDAwOWUsIDB4MDA4ZSwgMHgxMTE4LCAweDAxMmUsCi0JMHgwODA0LCAweDM1YjUsIDB4MDEyZSwgMHgyMDIxLCAweDQwMGMsIDB4MDgwNCwgMHgzNWI3LCAweDkwODUsCi0JMHgwMDAxLCAweDFkMDQsIDB4M2Y2MCwgMHgyMDkxLCAweDYwMDAsIDB4ODQyMCwgMHg5NDg2LCAweDAwNjQsCi0JMHgwMDA1LCAweDIwMDEsIDB4MDEwNSwgMHgyMDAzLCAweDAwMTAsIDB4MjAwMSwgMHgwMzJhLCAweDIwMDMsCi0JMHgwMDA0LCAweDIwMDEsIDB4MWE2NSwgMHgyMDAzLCAweDAwMDAsIDB4MDA3MSwgMHgyMDA5LCAweDAwNDgsCi0JMHgwODBjLCAweDI0MDksIDB4MjAwMSwgMHgwMjI3LCAweDIwMjQsIDB4MjQwMiwgMHgyMDAxLCAweDAxMDksCi0JMHgyMDAzLCAweDQwMDAsIDB4OTAyNiwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgyMDcxLCAweDFhNjksCi0JMHg3MDAwLCAweDkwODYsIDB4MDAwMCwgMHgwNTIwLCAweDIwNzksIDB4MDA5MCwgMHgyMDA5LCAweDAyMDYsCi0JMHgyMTA0LCAweDIwMDksIDB4MDIwMywgMHgyMTBjLCAweDkxMDYsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDAsCi0JMHgwODBjLCAweDI0MDksIDB4NzgyYywgMHhkMGZjLCAweDBkODgsIDB4MDgwYywgMHg0MWE0LCAweDcwMDAsCi0JMHg5MDg2LCAweDAwMDAsIDB4MWQ1OCwgMHg3ODJiLCAweDAwMDQsIDB4NzgyYywgMHhkMGFjLCAweDFkZTgsCi0JMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyNDA5LCAweDc4MmIsIDB4MDAwMiwgMHg3MDAzLCAweDAwMDAsCi0JMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHgyMDAxLCAweDE4MTgsCi0JMHgyMDBjLCAweDc5MzIsIDB4NzkzNiwgMHgwODBjLCAweDI4YmMsIDB4Nzg1MCwgMHg5MDg0LCAweGZiZmYsCi0JMHg5MDg1LCAweDAwMzAsIDB4Nzg1MiwgMHgyMDE5LCAweDAxZjQsIDB4ODMxOSwgMHgxZGYwLCAweDkwODQsCi0JMHhmZmNmLCAweDkwODUsIDB4MjAwMCwgMHg3ODUyLCAweDIwYTksIDB4MDA0NiwgMHgxZDA0LCAweDNmYzYsCi0JMHgyMDkxLCAweDYwMDAsIDB4MWYwNCwgMHgzZmM2LCAweDc4NTAsIDB4OTA4NSwgMHgwNDAwLCAweDkwODQsCi0JMHhkZmZmLCAweDc4NTIsIDB4MjAwMSwgMHgwMDIxLCAweDIwMDQsIDB4OTA4NCwgMHgwMDAzLCAweDkwODYsCi0JMHgwMDAxLCAweDExMjAsIDB4Nzg1MCwgMHg5MDg0LCAweGRmZmYsIDB4Nzg1MiwgMHg3ODRiLCAweGY3ZjcsCi0JMHg3ODQzLCAweDAwOTAsIDB4Nzg0MywgMHgwMDEwLCAweDIwYTksIDB4MDAyOCwgMHhhMDAxLCAweDFmMDQsCi0JMHgzZmU2LCAweDc4NTAsIDB4OTA4NSwgMHgxNDAwLCAweDc4NTIsIDB4MjAxOSwgMHg2MWE4LCAweDc4NTQsCi0JMHhhMDAxLCAweGEwMDEsIDB4ZDA4YywgMHgxMTEwLCAweDgzMTksIDB4MWRjOCwgMHg3ODI3LCAweDAwNDgsCi0JMHg3ODUwLCAweDkwODUsIDB4MDQwMCwgMHg3ODUyLCAweDc4NDMsIDB4MDA0MCwgMHgyMDE5LCAweDAxZjQsCi0JMHhhMDAxLCAweGEwMDEsIDB4ODMxOSwgMHgxZGUwLCAweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJkMzksCi0JMHg3ODI3LCAweDAwMjAsIDB4Nzg0MywgMHgwMDAwLCAweDkwMDYsIDB4MDgwYywgMHgyZDM5LCAweDc4MjcsCi0JMHgwMDQ4LCAweDAwZmUsIDB4MDAwNSwgMHg3ODg0LCAweGQwYWMsIDB4MTFjOCwgMHgwMGY2LCAweDAwZTYsCi0JMHgyMDcxLCAweDFhNjUsIDB4MjA3OSwgMHgwMzIwLCAweDIwMDEsIDB4MDIwMSwgMHgyMDA0LCAweDkwMDUsCi0JMHgwMTYwLCAweDcwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDExNDAsIDB4MDA1MSwgMHhkMGJjLCAweDAxMDgsCi0JMHg4NzM4LCAweDcwMDMsIDB4MDAwMywgMHg3ODJiLCAweDAwMTksIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsCi0JMHgwMGY2LCAweDIwNzksIDB4MDMwMCwgMHg3OGJjLCAweDAwZmUsIDB4OTA4YywgMHgwMDcwLCAweDAxNzgsCi0JMHgyMDA5LCAweDAwMzIsIDB4MjYwYSwgMHgyMDA5LCAweDAwMzMsIDB4MjUwYSwgMHhkMGI0LCAweDAxMDgsCi0JMHg4YzYwLCAweGQwYWMsIDB4MDEwOCwgMHg4ZDY4LCAweGQwYTQsIDB4MDEwOCwgMHg4YjU4LCAweDAwMDUsCi0JMHgwMGY2LCAweDIwNzksIDB4MDIwMCwgMHg3ODFjLCAweGQwODQsIDB4MDExMCwgMHg3ODM3LCAweDAwNTAsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDAxMDAsIDB4MjAwMSwgMHgxOWFiLCAweDIwMDQsCi0JMHg3MGUyLCAweDA4MGMsIDB4M2QzOSwgMHgxMTg4LCAweDIwMDEsIDB4MTgyMCwgMHgyMDA0LCAweDIwMDksCi0JMHgxODFmLCAweDIxMGMsIDB4OTE4YywgMHgwMGZmLCAweDcwNmUsIDB4NzE2YSwgMHg3MDY2LCAweDkxOGQsCi0JMHgzMjAwLCAweDcxNjIsIDB4NzA3MywgMHhlMTA5LCAweDAwODAsIDB4NzAyYywgMHg5MDg1LCAweDAwMDIsCi0JMHg3MDJlLCAweDIwMDksIDB4MTgxOCwgMHgyMTBjLCAweDcxNmUsIDB4NzA2MywgMHgwMTAwLCAweDcxNjYsCi0JMHg3MTllLCAweDcwNmIsIDB4MDAwMCwgMHg3MDczLCAweDA4MDksIDB4NzA3NywgMHgwMDA4LCAweDcwNzgsCi0JMHg5MDgwLCAweDAxMDAsIDB4NzA3YSwgMHg3MDgwLCAweDgwMDAsIDB4NzA4MiwgMHg3MDg3LCAweGFhYWEsCi0JMHg5MDA2LCAweDcwOGEsIDB4NzA4ZSwgMHg3MDdlLCAweDcwZDYsIDB4NzBhYiwgMHgwMDM2LCAweDcwYWYsCi0JMHg5NWQ1LCAweDcwMTQsIDB4OTA4NCwgMHgxOTg0LCAweDkwODUsIDB4MDA5MiwgMHg3MDE2LCAweDA4MGMsCi0JMHg0MWE0LCAweDAwZjYsIDB4MjA3MSwgMHgxYTY1LCAweDIwNzksIDB4MDMyMCwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMDAwLCAweDY4ODQsIDB4ZDBiNCwgMHgwMTIwLCAweDY4OWMsIDB4NzgwZSwgMHg2ODk4LCAweDc4MGEsCi0JMHgwMGRlLCAweDA4MGMsIDB4M2QzOSwgMHgwMTQwLCAweDIwMDEsIDB4MTk5ZiwgMHgyMDBjLCAweDIwMDMsCi0JMHgwMDAxLCAweDkxOGUsIDB4MDAwMSwgMHgwMTIwLCAweDIwMDksIDB4MDNlOCwgMHg4MTA5LCAweDFkZjAsCi0JMHg3OTJjLCAweGQxZmMsIDB4MDExMCwgMHg3ODJiLCAweDAwMDQsIDB4MjAxMSwgMHgwMDExLCAweDA4MGMsCi0JMHg0MTMwLCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweDQxMzAsIDB4MDBmZSwgMHgwMGVlLCAweDAwMDUsCi0JMHgwMGY2LCAweDAwZTYsIDB4MjA3MSwgMHgxYTY1LCAweDIwNzksIDB4MDMyMCwgMHg3OTJjLCAweGQxZmMsCi0JMHgwOTA0LCAweDQxMmQsIDB4NzgyYiwgMHgwMDAyLCAweDkwMjYsIDB4ZDE5YywgMHgxOTA0LCAweDQxMjksCi0JMHg3MDAwLCAweDAwMDIsIDB4NDEyZCwgMHg0MGRlLCAweDQxMGUsIDB4NDEyOSwgMHhkMWJjLCAweDExNzAsCi0JMHhkMWRjLCAweDExOTAsIDB4ODAwMSwgMHg3MDAyLCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweDQxMzAsCi0JMHgwOTA0LCAweDQxMmQsIDB4MDgwYywgMHg0MTMwLCAweDA4MDQsIDB4NDEyZCwgMHgwMGY2LCAweDIwNzksCi0JMHgwMzAwLCAweDc4YmYsIDB4MDAwMCwgMHgwMGZlLCAweDc4MTAsIDB4NzkxNCwgMHg3ODJiLCAweDAwMDQsCi0JMHg3ODEyLCAweDc5MTYsIDB4MjAwMSwgMHgwMjAxLCAweDIwMGMsIDB4ODFmZiwgMHgwZGU4LCAweDA4MGMsCi0JMHg0MDMwLCAweDIwMDksIDB4MDAwMSwgMHgwMGY2LCAweDIwNzksIDB4MDMwMCwgMHg3OGI4LCAweDAwZmUsCi0JMHhkMGVjLCAweDAxMTAsIDB4MjAwOSwgMHgwMDExLCAweDc5MmEsIDB4MDBmOCwgMHg4MDAxLCAweDcwMDIsCi0JMHg5MTg0LCAweDA4ODAsIDB4MTE0MCwgMHg3ODJjLCAweGQwZmMsIDB4MTkwNCwgMHg0MGQyLCAweDIwMTEsCi0JMHgwMDAxLCAweDAwYjEsIDB4MDA5MCwgMHhhMDEwLCAweDkwOTIsIDB4MDAwNCwgMHg5MDg2LCAweDAwMTUsCi0JMHgxMTIwLCAweGEwMDAsIDB4YTA1YSwgMHgyMDExLCAweDAwMzEsIDB4YTIxMiwgMHhkMWRjLCAweDE5NjAsCi0JMHgwODI4LCAweDc4MmIsIDB4MDAwNCwgMHg3MDAzLCAweDAwMDAsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsCi0JMHhhMDE0LCAweDkwMDUsIDB4MDU1MCwgMHg4MDAxLCAweDAwMzYsIDB4MDA5NiwgMHhhMDE2LCAweGEwNTgsCi0JMHgyMDQ4LCAweGEwMTAsIDB4MjAwOSwgMHgwMDMxLCAweDkxMWEsIDB4ODMxYywgMHg4MzFjLCAweDkzOGEsCi0JMHgwMDA3LCAweDFhMGMsIDB4MGRjNSwgMHg5Mzk4LCAweDQxNWUsIDB4MjMxZCwgMHgwODNmLCAweDkwODAsCi0JMHgwMDA0LCAweDdhMmEsIDB4NzEwMCwgMHg4MTA4LCAweDcxMDIsIDB4MDA5ZSwgMHgwMDNlLCAweDkwOGEsCi0JMHgwMDM1LCAweDExNDAsIDB4MDA5NiwgMHhhMDU4LCAweDIwNDgsIDB4YTgwNCwgMHhhMDVhLCAweDIwMDEsCi0JMHgwMDE5LCAweDAwOWUsIDB4YTAxMiwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg0MTliLCAweDQxOTIsCi0JMHg0MTg5LCAweDQxODAsIDB4NDE3NywgMHg0MTZlLCAweDQxNjUsIDB4YTk2NCwgMHg3OTAyLCAweGE5NjgsCi0JMHg3OTA2LCAweGE5NmMsIDB4NzkxMiwgMHhhOTcwLCAweDc5MTYsIDB4MDAwNSwgMHhhOTc0LCAweDc5MDIsCi0JMHhhOTc4LCAweDc5MDYsIDB4YTk3YywgMHg3OTEyLCAweGE5ODAsIDB4NzkxNiwgMHgwMDA1LCAweGE5ODQsCi0JMHg3OTAyLCAweGE5ODgsIDB4NzkwNiwgMHhhOThjLCAweDc5MTIsIDB4YTk5MCwgMHg3OTE2LCAweDAwMDUsCi0JMHhhOTk0LCAweDc5MDIsIDB4YTk5OCwgMHg3OTA2LCAweGE5OWMsIDB4NzkxMiwgMHhhOWEwLCAweDc5MTYsCi0JMHgwMDA1LCAweGE5YTQsIDB4NzkwMiwgMHhhOWE4LCAweDc5MDYsIDB4YTlhYywgMHg3OTEyLCAweGE5YjAsCi0JMHg3OTE2LCAweDAwMDUsIDB4YTliNCwgMHg3OTAyLCAweGE5YjgsIDB4NzkwNiwgMHhhOWJjLCAweDc5MTIsCi0JMHhhOWMwLCAweDc5MTYsIDB4MDAwNSwgMHhhOWM0LCAweDc5MDIsIDB4YTljOCwgMHg3OTA2LCAweGE5Y2MsCi0JMHg3OTEyLCAweGE5ZDAsIDB4NzkxNiwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgwMDg2LCAweDIwNzEsCi0JMHgxYTY5LCAweDIwNzksIDB4MDA5MCwgMHg3OTJjLCAweGQxZmMsIDB4MDFlOCwgMHg3ODJiLCAweDAwMDIsCi0JMHgyOTQwLCAweDkwMjYsIDB4NzAwMCwgMHgwMDAyLCAweDQxY2IsIDB4NDFiNywgMHg0MWMyLCAweDgwMDEsCi0JMHg3MDAyLCAweGQxOWMsIDB4MTE4MCwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHg0MTMwLCAweDE5MGMsCi0JMHg0MTMwLCAweDAwNDgsIDB4ODAwMSwgMHg3MDAyLCAweDc4MmMsIDB4ZDBmYywgMHgxZDM4LCAweDIwMTEsCi0JMHgwMDAxLCAweDA4MGMsIDB4NDEzMCwgMHgwMDhlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDA4NiwgMHgyMDYxLCAweDAyMDAsIDB4MjAwMSwgMHgxOWFiLCAweDIwMDQsCi0JMHg2MDFhLCAweDIwNjEsIDB4MDEwMCwgMHgyMDAxLCAweDE5YWEsIDB4MjAwNCwgMHg2MGNlLCAweDYxMDQsCi0JMHhjMWFjLCAweDYxMDYsIDB4MjAwMSwgMHgwMDJjLCAweDIwMDQsIDB4OTAwNSwgMHgwNTIwLCAweDIwMzgsCi0JMHgyMDAxLCAweDAwMmUsIDB4MjAyNCwgMHgyMDAxLCAweDAwMmYsIDB4MjAxYywgMHgwODBjLCAweDRiZTQsCi0JMHhhODEzLCAweDAwMTksIDB4YWYxNiwgMHgyOTAwLCAweGE4NWEsIDB4OTc4YSwgMHgwMDA3LCAweDAyMjAsCi0JMHgyMTM4LCAweDIwMDksIDB4MDAwNywgMHgwMDEwLCAweDI3MDgsIDB4OTAzZSwgMHgwMDk2LCAweGE4NTgsCi0JMHgyMDQ4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDAwOWUsIDB4MDgwYywgMHg0MjQ3LCAweDFkNjgsCi0JMHgyOTAwLCAweGE4NWEsIDB4MDBkMCwgMHgwODBjLCAweDRiZTQsIDB4YTgxMywgMHgwMDE5LCAweGE4MTcsCi0JMHgwMDAxLCAweDI5MDAsIDB4YTg1YSwgMHgyMDAxLCAweDAwMmUsIDB4MjAwNCwgMHhhODY2LCAweDIwMDEsCi0JMHgwMDJmLCAweDIwMDQsIDB4YTg2YSwgMHgyMDAxLCAweDAwMmEsIDB4MjAwNCwgMHg5MDg0LCAweGZmZjgsCi0JMHhhODZlLCAweDIwMDEsIDB4MDAyYiwgMHgyMDA0LCAweGE4NzIsIDB4MjA2MSwgMHgwMDkwLCAweDIwNzksCi0JMHgwMTAwLCAweDIwMDEsIDB4MTlhYSwgMHgyMDA0LCAweDYwMzYsIDB4MjAwOSwgMHgwMDQwLCAweDA4MGMsCi0JMHgyNDA5LCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODQsIDB4ZmZmOCwgMHg2MDFhLCAweDAwMDYsCi0JMHgyMDAxLCAweDAwMmIsIDB4MjAwNCwgMHg2MDFlLCAweDc4YzYsIDB4MDAwZSwgMHg3OGNhLCAweDkwMDYsCi0JMHg2MDBhLCAweDYwMGUsIDB4MDA4ZSwgMHgwMGNlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgyMDcxLCAweDAwODAsIDB4YWE2MCwgMHgyMmU4LCAweDIwYTAsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksCi0JMHgwMDg4LCAweDcwMmIsIDB4MDAyNiwgMHg3NDAyLCAweDczMDYsIDB4OTAwNiwgMHg3MDBhLCAweDcwMGUsCi0JMHg4MTBiLCAweDgxMGIsIDB4MjFhOCwgMHg4MTBiLCAweDcxMTIsIDB4NzAyYiwgMHgwMDQxLCAweDcwMmMsCi0JMHhkMGZjLCAweDBkZTgsIDB4NzAyYiwgMHgwMDAyLCAweDcwMmIsIDB4MDA0MCwgMHg0MDA1LCAweDc0MDAsCi0JMHg3MzA0LCAweDg3ZmYsIDB4MDE5MCwgMHgwMDg2LCAweDAwOTYsIDB4Mjk0MCwgMHgwMDg2LCAweDA4MGMsCi0JMHg0YmU0LCAweDAwOGUsIDB4YTA1OCwgMHgwMGE2LCAweDIwNTAsIDB4MjkwMCwgMHhiMDA2LCAweGEwNWEsCi0JMHgwMGFlLCAweDAwOWUsIDB4MDA4ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgyMDAxLCAweDAwMmQsIDB4MjAwNCwgMHg5MDA1LCAweDA1MjgsIDB4MjAzOCwgMHgyMDAxLCAweDAwMzAsCi0JMHgyMDI0LCAweDIwMDEsIDB4MDAzMSwgMHgyMDFjLCAweDA4MGMsIDB4NGJlNCwgMHgyOTQwLCAweGE4MTMsCi0JMHgwMDE5LCAweGFmMTYsIDB4MjkwMCwgMHhhODVhLCAweDk3OGEsIDB4MDAwNywgMHgwMjIwLCAweDIxMzgsCi0JMHgyMDA5LCAweDAwMDcsIDB4MDAxMCwgMHgyNzA4LCAweDkwM2UsIDB4MDA5NiwgMHhhODU4LCAweDIwNDgsCi0JMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHgwMDllLCAweDA4MGMsIDB4NDI0NywgMHgxZDY4LCAweDI5MDAsCi0JMHhhODVhLCAweDAwZDgsIDB4MDgwYywgMHg0YmU0LCAweDI5NDAsIDB4YTAxMywgMHgwMDE5LCAweGEwMTcsCi0JMHgwMDAxLCAweDI4MDAsIDB4YTA1YSwgMHgyMDAxLCAweDAwMzAsIDB4MjAwNCwgMHhhMDY2LCAweDIwMDEsCi0JMHgwMDMxLCAweDIwMDQsIDB4YTA2YSwgMHgyMDAxLCAweDAwMmEsIDB4MjAwNCwgMHg5MDg0LCAweGZmZjgsCi0JMHhhMDZlLCAweDIwMDEsIDB4MDAyYiwgMHgyMDA0LCAweGEwNzIsIDB4MjAwMSwgMHgwMzJhLCAweDIwMDMsCi0JMHgwMDA0LCAweDc4ODQsIDB4ZDBhYywgMHgxMTgwLCAweDIwMDEsIDB4MDEwMSwgMHgyMDBjLCAweDkxOGQsCi0JMHgwMjAwLCAweDIxMDIsIDB4YTAxNywgMHgwMDAwLCAweDIwMDEsIDB4MWE2NSwgMHgyMDAzLCAweDAwMDMsCi0JMHgyMDAxLCAweDAzMmEsIDB4MjAwMywgMHgwMDA5LCAweDIwMDEsIDB4MDMwMCwgMHgyMDAzLCAweDAwMDAsCi0JMHgyMDAxLCAweDAyMGQsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MDAwNCwgMHgyMDBjLCAweDkxOGQsCi0JMHgwMDAyLCAweDIxMDIsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwYTksCi0JMHgwMDA3LCAweDIwYTEsIDB4MTg0MCwgMHgyMGU5LCAweDAwMDEsIDB4OTAwNiwgMHg0MDA0LCAweDIwYTksCi0JMHgwMDE0LCAweDIwYTEsIDB4ZmZlYywgMHgyMGU5LCAweDAwMDAsIDB4OTAwNiwgMHg0MDA0LCAweDIwMDksCi0JMHgwMTNjLCAweDIwMGEsIDB4MDEyZSwgMHg3ODgwLCAweDkwODYsIDB4MDA1MiwgMHgwMTA4LCAweDAwMDUsCi0JMHgwODA0LCAweDM1YjUsIDB4N2Q5OCwgMHg3YzljLCAweDA4MDQsIDB4MzZiOSwgMHgwODBjLCAweDc2MzcsCi0JMHgxOTBjLCAweDYwZjMsIDB4NjA0MCwgMHg5MDg0LCAweDAwMjAsIDB4MDliMSwgMHgyMDY5LCAweDE4NDcsCi0JMHgyZDAwLCAweDIwMDksIDB4MDAzMCwgMHg3YThjLCAweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDIwMzksCi0JMHgwMDAxLCAweDA4MGMsIDB4NGMyZCwgMHg3MDFmLCAweDQzMjYsIDB4MDAwNSwgMHgwODBjLCAweDU3ZTQsCi0JMHgxMTMwLCAweDNiMDAsIDB4M2EwOCwgMHhjMTk0LCAweGMwOTUsIDB4MjBkOCwgMHgyMWQwLCAweDIwNjksCi0JMHgxODQ3LCAweDY4MDAsIDB4OTAwNSwgMHgwOTA0LCAweDM1ZWEsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsCi0JMHhkMDhjLCAweDY4MDQsIDB4MDExOCwgMHhjMGE0LCAweGMwYWMsIDB4NjgwNiwgMHhkMGFjLCAweDAxMTgsCi0JMHhkMGE0LCAweDA5MDQsIDB4MzVlYSwgMHhkMDk0LCAweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDYxMDQsCi0JMHgwMTM4LCAweDYyMDAsIDB4OTI5MiwgMHgwMDA1LCAweDAyMTgsIDB4OTE4YywgMHhmZmRmLCAweDAwMTAsCi0JMHg5MThkLCAweDAwMjAsIDB4NjEwNiwgMHgwMGNlLCAweGQwOGMsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsCi0JMHg2MTA0LCAweDAxMTgsIDB4OTE4ZCwgMHgwMDEwLCAweDAwMTAsIDB4OTE4YywgMHhmZmVmLCAweDYxMDYsCi0JMHgwMGNlLCAweGQwODQsIDB4MDE1OCwgMHg2YTI4LCAweDkyOGEsIDB4MDA3ZiwgMHgxYTA0LCAweDM1ZWEsCi0JMHg5Mjg4LCAweDMzYjYsIDB4MjEwZCwgMHg5MThjLCAweDAwZmYsIDB4NjE2NiwgMHhkMGRjLCAweDAxMzAsCi0JMHg2ODI4LCAweDkwOGEsIDB4MDA3ZiwgMHgxYTA0LCAweDM1ZWEsIDB4NjA1ZSwgMHg2ODg4LCAweDkwODQsCi0JMHgwMDMwLCAweDgwMDQsIDB4ODAwNCwgMHg4MDA0LCAweDgwMDQsIDB4MDAwNiwgMHgyMDA5LCAweDE5YjIsCi0JMHg5MDgwLCAweDI5YjcsIDB4MjAwNSwgMHgyMDBhLCAweDAwMGUsIDB4MjAwOSwgMHgxOWIzLCAweDkwODAsCi0JMHgyOWJiLCAweDIwMDUsIDB4MjAwYSwgMHg2ODA4LCAweDkwOGEsIDB4MDEwMCwgMHgwYTA0LCAweDM1ZWEsCi0JMHg5MDhhLCAweDA4NDEsIDB4MWEwNCwgMHgzNWVhLCAweDkwODQsIDB4MDAwNywgMHgxOTA0LCAweDM1ZWEsCi0JMHg2ODBjLCAweDkwMDUsIDB4MDkwNCwgMHgzNWVhLCAweDY4MTAsIDB4OTAwNSwgMHgwOTA0LCAweDM1ZWEsCi0JMHg2ODQ4LCAweDY5NDAsIDB4OTEwYSwgMHgxYTA0LCAweDM1ZWEsIDB4ODAwMSwgMHgwOTA0LCAweDM1ZWEsCi0JMHg2ODRjLCAweDY5NDQsIDB4OTEwYSwgMHgxYTA0LCAweDM1ZWEsIDB4ODAwMSwgMHgwOTA0LCAweDM1ZWEsCi0JMHgyMDA5LCAweDE5ODEsIDB4MjAwYiwgMHgwMDAwLCAweDIwMDEsIDB4MTg2OSwgMHgyMDA0LCAweGQwYzQsCi0JMHgwMTQwLCAweDc4ODQsIDB4MjAwYSwgMHgyMDA4LCAweDA4MGMsIDB4MGU1MiwgMHgzYjAwLCAweGMwODUsCi0JMHgyMGQ4LCAweDY4MTQsIDB4OTA4YywgMHgwMGZmLCAweDYxNGUsIDB4ODAwNywgMHg5MDg0LCAweDAwZmYsCi0JMHg2MDUyLCAweDA4MGMsIDB4Nzk2MywgMHgwODBjLCAweDZiOGUsIDB4MDgwYywgMHg2YmY4LCAweDY4MDgsCi0JMHg2MDJhLCAweDA4MGMsIDB4MjM3YiwgMHgyMDA5LCAweDAxNzAsIDB4MjAwYiwgMHgwMDgwLCAweGEwMDEsCi0JMHhhMDAxLCAweDIwMGIsIDB4MDAwMCwgMHgwMDM2LCAweDZiMDgsIDB4MDgwYywgMHgyOTE2LCAweDAwM2UsCi0JMHg2MDAwLCAweDkwODYsIDB4MDAwMCwgMHgxOTA0LCAweDQ0Y2YsIDB4NjgxOCwgMHg2OTFjLCAweDZhMjAsCi0JMHg2YjI0LCAweDgwMDcsIDB4ODEwZiwgMHg4MjE3LCAweDgzMWYsIDB4NjAxNiwgMHg2MTFhLCAweDYyMWUsCi0JMHg2MzIyLCAweDZjMDQsIDB4ZDRmNCwgMHgwMTQ4LCAweDY4MzAsIDB4NjkzNCwgMHg2YTM4LCAweDZiM2MsCi0JMHg4MDA3LCAweDgxMGYsIDB4ODIxNywgMHg4MzFmLCAweDAwMTAsIDB4OTA4NCwgMHhmMGZmLCAweDYwMDYsCi0JMHg2MTBhLCAweDYyMGUsIDB4NjMxMiwgMHg4MDA3LCAweDgxMGYsIDB4ODIxNywgMHg4MzFmLCAweDIwYTksCi0JMHgwMDA0LCAweDIwYTEsIDB4MTliNCwgMHgyMGU5LCAweDAwMDEsIDB4NDAwMSwgMHgyMGE5LCAweDAwMDQsCi0JMHgyMGExLCAweDE5Y2UsIDB4MjBlOSwgMHgwMDAxLCAweDQwMDEsIDB4MDgwYywgMHg4OTYyLCAweDAwYzYsCi0JMHg5MDBlLCAweDIwYTksIDB4MDAwMSwgMHg2YjcwLCAweGQzODQsIDB4MDUxMCwgMHgwMDY4LCAweDIwMDksCi0JMHgwMTAwLCAweDIxMGMsIDB4OTE4ZSwgMHgwMDA4LCAweDExMTAsIDB4ODM5ZCwgMHgwMDEwLCAweDgzZjUsCi0JMHgzZTE4LCAweDEyYjAsIDB4MzUwOCwgMHg4MTA5LCAweDA4MGMsIDB4N2Y2ZiwgMHg2ODc4LCAweDYwMTYsCi0JMHg2ODc0LCAweDIwMDgsIDB4OTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4NjAwYSwgMHg5MTg0LCAweDAwZmYsCi0JMHg2MDA2LCAweDgxMDgsIDB4MTExOCwgMHg2MDAzLCAweDAwMDMsIDB4MDAxMCwgMHg2MDAzLCAweDAwMDEsCi0JMHgxZjA0LCAweDQ0MWYsIDB4MDBjZSwgMHgwMGM2LCAweDIwNjEsIDB4MTk5YywgMHgyMDAxLCAweDE4MGQsCi0JMHgyMDA0LCAweGQwOGMsIDB4MTFhOCwgMHg2YTg4LCAweDkyODQsIDB4YzAwMCwgMHgyMDEwLCAweDkyODYsCi0JMHgwMDAwLCAweDExNTgsIDB4MjA2MywgMHgwMDAwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDJiYjEsCi0JMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyYjk0LCAweDAwODgsIDB4OTI4NiwgMHg0MDAwLCAweDExNDgsCi0JMHgyMDYzLCAweDAwMDEsIDB4OTAwNiwgMHgwODBjLCAweDJiYjEsIDB4OTAwNiwgMHgwODBjLCAweDJiOTQsCi0JMHgwMDI4LCAweDkyODYsIDB4ODAwMCwgMHgxZDMwLCAweDIwNjMsIDB4MDAwMiwgMHgwMGNlLCAweDAwZTYsCi0JMHgyYzcwLCAweDA4MGMsIDB4MGVhMywgMHgwMGVlLCAweDY4ODgsIDB4ZDBlYywgMHgwMTMwLCAweDIwMTEsCi0JMHgwMTE0LCAweDIyMDQsIDB4OTA4NSwgMHgwMTAwLCAweDIwMTIsIDB4NmE4MCwgMHg5Mjg0LCAweDAwMzAsCi0JMHg5MDg2LCAweDAwMzAsIDB4MTEyOCwgMHg5Mjk0LCAweGZmY2YsIDB4OTI5NSwgMHgwMDIwLCAweDZhODIsCi0JMHgyMDAxLCAweDE5N2MsIDB4NmE4MCwgMHg5Mjk0LCAweDAwMzAsIDB4OTI4ZSwgMHgwMDAwLCAweDAxNzAsCi0JMHg5MjhlLCAweDAwMTAsIDB4MDExOCwgMHg5MjhlLCAweDAwMjAsIDB4MDE0MCwgMHgyMDAzLCAweGFhYWEsCi0JMHgwODBjLCAweDI5OGIsIDB4MjAwMSwgMHgxOTZkLCAweDIxMDIsIDB4MDAwOCwgMHgyMTAyLCAweDAwYzYsCi0JMHgyMDYxLCAweDAxMDAsIDB4NjAyZiwgMHgwMDQwLCAweDYwMmYsIDB4MDAwMCwgMHgwMGNlLCAweDA4MGMsCi0JMHg3NjM3LCAweDAxMjgsIDB4MDgwYywgMHg1MGNiLCAweDAxMTAsIDB4MDgwYywgMHgyOGRjLCAweDYwZDQsCi0JMHg5MDA1LCAweDAxYzAsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4NDRiNywgMHgwMGUwLCAweDA4MGMsCi0JMHg3NjM3LCAweDExNjgsIDB4MjAxMSwgMHg3NGIyLCAweDA4MGMsIDB4ODgzZCwgMHgyMDExLCAweDc0YTUsCi0JMHgwODBjLCAweDg5MTcsIDB4MDgwYywgMHg3OTM3LCAweDA4MGMsIDB4NzU2MywgMHgwMDQwLCAweDA4MGMsCi0JMHg1ZmVkLCAweDAwMjgsIDB4NjAwMywgMHgwMDA0LCAweDIwMDksIDB4NDRjZiwgMHgwMDIwLCAweDA4MGMsCi0JMHg2YTA1LCAweDA4MDQsIDB4MzViNSwgMHgyMDAxLCAweDAxNzAsIDB4MjAwNCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDg2LCAweDAwNGMsIDB4MTExOCwgMHgyMDkxLCAweDMwYmQsIDB4MDgxNywgMHgyMDkxLCAweDMwM2QsCi0JMHgwODE3LCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDA5MDQsIDB4MzVlNywgMHgyMDY5LCAweDE4NDcsCi0JMHg3ODkwLCAweDY4NDIsIDB4Nzg5NCwgMHg2ODQ2LCAweDJkMDAsIDB4MjAwOSwgMHgwMDMwLCAweDdhOGMsCi0JMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHgyMDM5LCAweDAwMDEsIDB4MDgwNCwgMHg0YzMwLCAweDkwMDYsCi0JMHgwODBjLCAweDI4ZGMsIDB4ODFmZiwgMHgxOTA0LCAweDM1ZTcsIDB4MDgwYywgMHg3NjM3LCAweDExYjAsCi0JMHgwODBjLCAweDc5MzIsIDB4MDgwYywgMHg2MTJlLCAweDA4MGMsIDB4MzNhYSwgMHgwMTE4LCAweDYxMzAsCi0JMHhjMThkLCAweDYxMzIsIDB4MDgwYywgMHhkN2UzLCAweDAxMzAsIDB4MDgwYywgMHg3NjVhLCAweDExMTgsCi0JMHgwODBjLCAweDc2MGYsIDB4MDAzOCwgMHgwODBjLCAweDc1NjMsIDB4MDAyMCwgMHgwODBjLCAweDYwZjMsCi0JMHgwODBjLCAweDVmZWQsIDB4MDgwNCwgMHgzNWI1LCAweDgxZmYsIDB4MTkwNCwgMHgzNWU3LCAweDA4MGMsCi0JMHg3NjM3LCAweDExMTAsIDB4MDgwNCwgMHgzNWU3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYxOTQsCi0JMHg4MWZmLCAweDAxOTAsIDB4NzA0ZiwgMHgwMDAwLCAweDIwMDEsIDB4MWM4MCwgMHgyMDA5LCAweDAwNDAsCi0JMHg3YThjLCAweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDIwMzksIDB4MDAwMSwgMHgwODBjLCAweDRjMzAsCi0JMHg3MDFmLCAweDM1YjMsIDB4MDEyZSwgMHgwMDA1LCAweDcwNGYsIDB4MDAwMSwgMHgwMGQ2LCAweDIwNjksCi0JMHgxYzgwLCAweDIwYTksIDB4MDA0MCwgMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwgMHgxYzgwLCAweDIwMTksCi0JMHhmZmZmLCAweDQzMDQsIDB4NjU1YywgMHg5NTg4LCAweDMzYjYsIDB4MjEwZCwgMHg5MThjLCAweDAwZmYsCi0JMHgyMTZhLCAweDkwMGUsIDB4MjAxMSwgMHgwMDAyLCAweDIxMDAsIDB4OTUwNiwgMHgwMWE4LCAweDA4MGMsCi0JMHg2NzI0LCAweDExOTAsIDB4YjgxNCwgMHg4MjFjLCAweDAyMzgsIDB4OTM5OCwgMHgxYzgwLCAweDkwODUsCi0JMHhmZjAwLCAweDgwMDcsIDB4MjAxYSwgMHgwMDM4LCAweDkzOTgsIDB4MWM4MCwgMHgyMzI0LCAweDk0YTQsCi0JMHhmZjAwLCAweDk0MDUsIDB4MjAxYSwgMHg4MjEwLCAweDgxMDgsIDB4OTE4MiwgMHgwMDgwLCAweDEyMDgsCi0JMHgwYzE4LCAweDgyMDEsIDB4ODAwNywgMHgyZDBjLCAweDkxMDUsIDB4MjA2YSwgMHgwMGRlLCAweDIwYTksCi0JMHgwMDQwLCAweDIwYTEsIDB4MWM4MCwgMHgyMDk5LCAweDFjODAsIDB4MDgwYywgMHg2MDdlLCAweDA4MDQsCi0JMHg0NTJjLCAweDA4MGMsIDB4NGMxNywgMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg0YmU0LCAweDExMjAsCi0JMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzNWU3LCAweDA4MGMsIDB4NTdkNSwgMHhkMGI0LCAweDA1NTgsCi0JMHg3ODg0LCAweDkwOGUsIDB4MDA3ZSwgMHgwNTM4LCAweDkwOGUsIDB4MDA3ZiwgMHgwNTIwLCAweDkwOGUsCi0JMHgwMDgwLCAweDA1MDgsIDB4MDgwYywgMHgzM2E1LCAweDExNDgsIDB4YjgwMCwgMHhkMDhjLCAweDExZDgsCi0JMHhiODA0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDYsIDB4MTFhOCwgMHhhODY3LCAweDAwMDAsCi0JMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHgwODBjLCAweGQyYTMsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsCi0JMHgwODA0LCAweDM1ZTcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsIDB4NDViNywgMHgwMDA1LCAweDA4MGMsCi0JMHg0YzE3LCAweDA5MDQsIDB4MzVlYSwgMHgyMGE5LCAweDAwMmIsIDB4YjhjNCwgMHgyMGUwLCAweGI4YzgsCi0JMHgyMDk4LCAweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAwMiwgMHgyMGEwLCAweDQwMDMsCi0JMHgyMGE5LCAweDAwMDgsIDB4OTA4MCwgMHgwMDA2LCAweDIwYTAsIDB4YjhjNCwgMHgyMGUwLCAweGI4YzgsCi0JMHg5MDgwLCAweDAwMDYsIDB4MjA5OCwgMHgwODBjLCAweDBmOGIsIDB4MDA3MCwgMHgyMGE5LCAweDAwMDQsCi0JMHhhODVjLCAweDkwODAsIDB4MDAwYSwgMHgyMGEwLCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDkwODAsCi0JMHgwMDBhLCAweDIwOTgsIDB4MDgwYywgMHgwZjhiLCAweDg5MDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwYmMsCi0JMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMDIsIDB4MjAwOSwgMHgwMDJiLCAweDdhOGMsCi0JMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHgwODA0LCAweDRjMzAsIDB4ODFmZiwgMHgxOTA0LCAweDM1ZTcsCi0JMHgwODBjLCAweDRiZmIsIDB4MDkwNCwgMHgzNWVhLCAweDA4MGMsIDB4Njg5NiwgMHgwOTA0LCAweDM1ZTcsCi0JMHgwMDU4LCAweGE4NzgsIDB4OTAwNSwgMHgwMTIwLCAweDIwMDksIDB4MDAwNCwgMHgwODA0LCAweDM1ZTcsCi0JMHhhOTc0LCAweGFhOTQsIDB4MDgwNCwgMHgzNWI1LCAweDA4MGMsIDB4NTdkZCwgMHgwOTA0LCAweDM1YjUsCi0JMHg3MDFmLCAweDQ2MDEsIDB4NzAwNywgMHgwMDAzLCAweDAwMDUsIDB4ODFmZiwgMHgxOTA0LCAweDM1ZTcsCi0JMHg3ODg4LCAweDkwOGEsIDB4MTAwMCwgMHgxYTA0LCAweDM1ZWEsIDB4MDgwYywgMHg0YzE3LCAweDA5MDQsCi0JMHgzNWVhLCAweDA4MGMsIDB4NmFhMywgMHgwMTIwLCAweDA4MGMsIDB4NmFhYiwgMHgxOTA0LCAweDM1ZWEsCi0JMHgwODBjLCAweDY5MWIsIDB4MDkwNCwgMHgzNWU3LCAweDIwMTksIDB4MDAwNCwgMHg5MDBlLCAweDA4MGMsCi0JMHg2OGE4LCAweDA5MDQsIDB4MzVlNywgMHg3OTg0LCAweDdhODgsIDB4MDRjOSwgMHgwOGE4LCAweGE4OWMsCi0JMHg5MDhhLCAweDEwMDAsIDB4MTJmOCwgMHgwODBjLCAweDRjMTUsIDB4MDFlMCwgMHgwODBjLCAweDZhYTMsCi0JMHgwMTE4LCAweDA4MGMsIDB4NmFhYiwgMHgxMWIwLCAweDA4MGMsIDB4NjkxYiwgMHgyMDA5LCAweDAwMDIsCi0JMHgwMTY4LCAweDIwMDksIDB4MDAwMiwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHg2OGE4LCAweDIwMDksCi0JMHgwMDAzLCAweDAxMjAsIDB4YTk5OCwgMHhhYTljLCAweDAwZDEsIDB4MDA2MCwgMHhhODk3LCAweDQwMDUsCi0JMHhhOTlhLCAweDAwMTAsIDB4YTg5NywgMHg0MDA2LCAweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsCi0JMHgwMDMwLCAweDAwMDUsIDB4YTg5NywgMHg0MDAwLCAweDA4MGMsIDB4NTdkZCwgMHgwMTEwLCAweDkwMDYsCi0JMHgwMDE4LCAweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwgMHgwMDA1LCAweDkxODYsCi0JMHgwMGZmLCAweDAxMTAsIDB4MDA3MSwgMHgwMDYwLCAweDIwMjksIDB4MDA3ZSwgMHgyMDYxLCAweDE4MDAsCi0JMHg2NDVjLCAweDI0MDAsIDB4OTUwNiwgMHgwMTEwLCAweDI1MDgsIDB4MDAxOSwgMHg4NTI5LCAweDFlYzgsCi0JMHgwMDA1LCAweDA4MGMsIDB4NjcyNCwgMHgxMTM4LCAweDIyMDAsIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsCi0JMHg5MTA4LCAweDA4MGMsIDB4ODg0YiwgMHgwMDA1LCAweDgxZmYsIDB4MTkwNCwgMHgzNWU3LCAweDc5OGMsCi0JMHgyMDAxLCAweDE5ODAsIDB4OTE4YywgMHg4MDAwLCAweDIxMDIsIDB4MDgwYywgMHg0YmZiLCAweDA5MDQsCi0JMHgzNWVhLCAweDA4MGMsIDB4NmFhMywgMHgwMTIwLCAweDA4MGMsIDB4NmFhYiwgMHgxOTA0LCAweDM1ZWEsCi0JMHgwODBjLCAweDY3ZWIsIDB4MDkwNCwgMHgzNWU3LCAweDA4MGMsIDB4Njg5ZiwgMHgwOTA0LCAweDM1ZTcsCi0JMHgyMDAxLCAweDE5ODAsIDB4MjAwNCwgMHhkMGZjLCAweDE5MDQsIDB4MzViNSwgMHgwODA0LCAweDQ2MGMsCi0JMHhhOWEwLCAweDIwMDEsIDB4MTk4MCwgMHg5MThjLCAweDgwMDAsIDB4YzE4ZCwgMHgyMTAyLCAweDA4MGMsCi0JMHg0YzA4LCAweDAxYTAsIDB4MDgwYywgMHg2YWEzLCAweDAxMTgsIDB4MDgwYywgMHg2YWFiLCAweDExNzAsCi0JMHgwODBjLCAweDY3ZWIsIDB4MjAwOSwgMHgwMDAyLCAweDAxMjgsIDB4MDgwYywgMHg2ODlmLCAweDExNzAsCi0JMHgyMDA5LCAweDAwMDMsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsIDB4MDAxMCwgMHhhODk3LCAweDQwMDYsCi0JMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsIDB4MDAwNSwgMHhhODk3LCAweDQwMDAsCi0JMHgyMDAxLCAweDE5ODAsIDB4MjAwNCwgMHhkMGZjLCAweDExMjgsIDB4MDgwYywgMHg1N2RkLCAweDAxMTAsCi0JMHg5MDA2LCAweDAwMTgsIDB4OTAwZSwgMHg5MDg1LCAweDAwMDEsIDB4MjAwMSwgMHgwMDAwLCAweDAwMDUsCi0JMHg4MWZmLCAweDE5MDQsIDB4MzVlNywgMHg3OThjLCAweDIwMDEsIDB4MTk3ZiwgMHg5MThjLCAweDgwMDAsCi0JMHgyMTAyLCAweDA4MGMsIDB4NGJmYiwgMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg2YWEzLCAweDAxMjAsCi0JMHgwODBjLCAweDZhYWIsIDB4MTkwNCwgMHgzNWVhLCAweDA4MGMsIDB4NjdlYiwgMHgwOTA0LCAweDM1ZTcsCi0JMHgwODBjLCAweDY4OGQsIDB4MDkwNCwgMHgzNWU3LCAweDIwMDEsIDB4MTk3ZiwgMHgyMDA0LCAweGQwZmMsCi0JMHgxOTA0LCAweDM1YjUsIDB4MDgwNCwgMHg0NjBjLCAweGE5YTAsIDB4MjAwMSwgMHgxOTdmLCAweDkxOGMsCi0JMHg4MDAwLCAweGMxOGQsIDB4MjEwMiwgMHgwODBjLCAweDRjMDgsIDB4MDFhMCwgMHgwODBjLCAweDZhYTMsCi0JMHgwMTE4LCAweDA4MGMsIDB4NmFhYiwgMHgxMTcwLCAweDA4MGMsIDB4NjdlYiwgMHgyMDA5LCAweDAwMDIsCi0JMHgwMTI4LCAweDA4MGMsIDB4Njg4ZCwgMHgxMTcwLCAweDIwMDksIDB4MDAwMywgMHhhODk3LCAweDQwMDUsCi0JMHhhOTlhLCAweDAwMTAsIDB4YTg5NywgMHg0MDA2LCAweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsCi0JMHgwMDMwLCAweDAwMDUsIDB4YTg5NywgMHg0MDAwLCAweDIwMDEsIDB4MTk3ZiwgMHgyMDA0LCAweGQwZmMsCi0JMHgxMTI4LCAweDA4MGMsIDB4NTdkZCwgMHgwMTEwLCAweDkwMDYsIDB4MDAxOCwgMHg5MDBlLCAweDkwODUsCi0JMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwgMHgwMDA1LCAweDYxMDAsIDB4MDgwNCwgMHgzNWI1LCAweDA4MGMsCi0JMHg0YzE3LCAweDA5MDQsIDB4MzVlYSwgMHgwODBjLCAweDU3ZTksIDB4MTkwNCwgMHgzNWU3LCAweDc5YTgsCi0JMHhkMTg0LCAweDExNTgsIDB4YjgzNCwgMHg4MDA3LCAweDc4OWUsIDB4YjgzMCwgMHg4MDA3LCAweDc4OWEsCi0JMHhiYjJjLCAweDgzMWYsIDB4YmEyOCwgMHg4MjE3LCAweDAwNTAsIDB4YjgyNCwgMHg4MDA3LCAweDc4OWUsCi0JMHhiODIwLCAweDgwMDcsIDB4Nzg5YSwgMHhiYjFjLCAweDgzMWYsIDB4YmExOCwgMHg4MjE3LCAweGI5MDAsCi0JMHg5MThjLCAweDAyMDIsIDB4MDgwNCwgMHgzNWI1LCAweDc4YTgsIDB4OTA5YywgMHgwMDAzLCAweGQwYWMsCi0JMHgxMTU4LCAweGQwYjQsIDB4MTE0OCwgMHg5MzlhLCAweDAwMDMsIDB4MWEwNCwgMHgzNWU3LCAweDYyNWMsCi0JMHg3ODg0LCAweDkyMDYsIDB4MTkwNCwgMHg0N2M3LCAweDA4MGMsIDB4ODk0YywgMHgyMDAxLCAweGZmZWMsCi0JMHgyMDA5LCAweDAwMGMsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHgyMDM5LCAweDAwMDAsCi0JMHgwMDA2LCAweDc4YTgsIDB4OTA4NCwgMHgwMDgwLCAweDE1MjgsIDB4MDAwNiwgMHgwMDM2LCAweDIwMDEsCi0JMHgxYTgzLCAweDIwMWMsIDB4N2I5YSwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgxYTg0LCAweDIwMWMsCi0JMHg3YjllLCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDFhODUsIDB4MjAxYywgMHg3YmFlLCAweDIwMDMsCi0JMHgwMDAwLCAweDIwMDEsIDB4MWE3ZiwgMHgyMDFjLCAweDdiYWEsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsCi0JMHgxYTg2LCAweDIwMWMsIDB4N2JiMiwgMHgyMDAzLCAweDAwMDAsIDB4MDAzZSwgMHgwMDBlLCAweDAwMGUsCi0JMHgwODA0LCAweDRjMzAsIDB4MDAwZSwgMHgyMDMxLCAweDAwMDAsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsCi0JMHhhNjZhLCAweGExN2EsIDB4YTc3MiwgMHhhMDc2LCAweGEyOGUsIDB4YTM5MiwgMHhhNDk2LCAweGE1OWEsCi0JMHgwODBjLCAweDEwZjgsIDB4NzAwNywgMHgwMDAyLCAweDcwMWYsIDB4NDdlNywgMHgwMDA1LCAweDgxZmYsCi0JMHgxOTA0LCAweDM1ZTcsIDB4MDgwYywgMHg0YzE3LCAweDA5MDQsIDB4MzVlYSwgMHgwODBjLCAweDZhYTMsCi0JMHgxOTA0LCAweDM1ZTcsIDB4MDBjNiwgMHgwODBjLCAweDRiZTQsIDB4MDBjZSwgMHgwOTA0LCAweDM1ZTcsCi0JMHhhODY3LCAweDAwMDAsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4N2VhOCwgMHgwODBjLCAweGQyNDksCi0JMHgwOTA0LCAweDM1ZTcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsIDB4NDgwZCwgMHgwMDA1LCAweDA4MGMsCi0JMHg0MmVjLCAweDAwMDYsIDB4MDAzNiwgMHgyMDAxLCAweDFhODMsIDB4MjAxYywgMHg3YjlhLCAweDIwMDMsCi0JMHgwMDAwLCAweDIwMDEsIDB4MWE4NCwgMHgyMDFjLCAweDdiOWUsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsCi0JMHgxYTg1LCAweDIwMWMsIDB4N2JhZSwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgxYTdmLCAweDIwMWMsCi0JMHg3YmFhLCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDFhODYsIDB4MjAxYywgMHg3YmIyLCAweDIwMDMsCi0JMHgwMDAwLCAweDAwM2UsIDB4MDAwZSwgMHgwODA0LCAweDM1YjUsIDB4YTgzMCwgMHg5MDg2LCAweDAxMDAsCi0JMHgwOTA0LCAweDM1ZTcsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsCi0JMHhmZmMwLCAweDkwODAsIDB4MDAxYiwgMHgyMDA5LCAweDAwMGMsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsCi0JMHg3ZDk4LCAweDA4MDQsIDB4NGMzMCwgMHg5MDA2LCAweDA4MGMsIDB4MjhkYywgMHg3OGE4LCAweDkwODQsCi0JMHgwMGZmLCAweDkwODYsIDB4MDBmZiwgMHgwMTE4LCAweDgxZmYsIDB4MTkwNCwgMHgzNWU3LCAweDA4MGMsCi0JMHg3NjM3LCAweDAxMTAsIDB4MDgwYywgMHg2MGYzLCAweDc4ODgsIDB4OTA4YSwgMHgxMDAwLCAweDFhMDQsCi0JMHgzNWVhLCAweDc5ODQsIDB4OTE4NiwgMHgwMGZmLCAweDAxMzgsIDB4OTE4MiwgMHgwMDdmLCAweDFhMDQsCi0JMHgzNWVhLCAweDIxMDAsIDB4MDgwYywgMHgyOGE2LCAweDAwMjYsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwNjEsIDB4MTlmYiwgMHg2MDFiLCAweDAwMDAsIDB4NjAxZiwgMHgwMDAwLCAweDYwN2IsCi0JMHgwMDAwLCAweDYwN2YsIDB4MDAwMCwgMHgwODBjLCAweDc2MzcsIDB4MTE1OCwgMHgwODBjLCAweDc5MzIsCi0JMHgwODBjLCAweDYxMmUsIDB4OTA4NSwgMHgwMDAxLCAweDA4MGMsIDB4NzY3YiwgMHgwODBjLCAweDc1NjMsCi0JMHgwMGQwLCAweDA4MGMsIDB4YjI0NCwgMHgyMDYxLCAweDAxMDAsIDB4MjAwMSwgMHgxODE4LCAweDIwMDQsCi0JMHg5MDg0LCAweDAwZmYsIDB4ODEwZiwgMHg5MTA1LCAweDYwNGEsIDB4NjA0MywgMHgwMDkwLCAweDYwNDMsCi0JMHgwMDEwLCAweDIwMDksIDB4MTk5OSwgMHgyMDBiLCAweDAwMDAsIDB4MjAwOSwgMHgwMDJkLCAweDIwMTEsCi0JMHg2MDE5LCAweDA4MGMsIDB4ODhkNSwgMHg3OTg0LCAweDA4MGMsIDB4NzYzNywgMHgxMTEwLCAweDIwMDksCi0JMHgwMGZmLCAweDdhODgsIDB4MDgwYywgMHg0NjZmLCAweDAxMmUsIDB4MDBjZSwgMHgwMDJlLCAweDA4MDQsCi0JMHgzNWI1LCAweDc5ODQsIDB4MDgwYywgMHg2NmI5LCAweDJiMDgsIDB4MTkwNCwgMHgzNWVhLCAweDA4MDQsCi0JMHgzNWI1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwgMHgzNWU3LCAweDYwZGMsCi0JMHhkMGFjLCAweDExMzAsIDB4ZDA5YywgMHgxMTIwLCAweDIwMDksIDB4MDAwNSwgMHgwODA0LCAweDM1ZTcsCi0JMHgwODBjLCAweDRiZTQsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzNWU3LCAweDc5ODQsCi0JMHg4MWZmLCAweDA5MDQsIDB4MzVlYSwgMHg5MTkyLCAweDAwMjEsIDB4MWEwNCwgMHgzNWVhLCAweDdhOGMsCi0JMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHg3MDJhLCAweGFmNjAsCi0JMHg3NzM2LCAweDA4MGMsIDB4NGMyZCwgMHg3MDFmLCAweDQ4YzQsIDB4Nzg4MCwgMHg5MDg2LCAweDAwNmUsCi0JMHgwMTEwLCAweDcwMWYsIDB4NTI3ZCwgMHgwMDA1LCAweDIwMDksIDB4MDA4MCwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTE4LCAweDA4MGMsIDB4NmFhMywgMHgwMTIwLCAweDIwMjEsIDB4NDAwYSwgMHgwODA0LCAweDM1YjcsCi0JMHgwMGQ2LCAweDAwOTYsIDB4YTk2NCwgMHhhYTZjLCAweGFiNzAsIDB4YWM3NCwgMHhhZDc4LCAweGFlN2MsCi0JMHhhODg0LCAweDkwYmUsIDB4MDEwMCwgMHgwOTA0LCAweDQ5NWQsIDB4OTBiZSwgMHgwMTEyLCAweDA5MDQsCi0JMHg0OTVkLCAweDkwYmUsIDB4MDExMywgMHgwOTA0LCAweDQ5NWQsIDB4OTBiZSwgMHgwMTE0LCAweDA5MDQsCi0JMHg0OTVkLCAweDkwYmUsIDB4MDExNywgMHgwOTA0LCAweDQ5NWQsIDB4OTBiZSwgMHgwMTFhLCAweDA5MDQsCi0JMHg0OTVkLCAweDkwYmUsIDB4MDExYywgMHgwOTA0LCAweDQ5NWQsIDB4OTBiZSwgMHgwMTIxLCAweDA5MDQsCi0JMHg0OTQ0LCAweDkwYmUsIDB4MDEzMSwgMHgwOTA0LCAweDQ5NDQsIDB4OTBiZSwgMHgwMTcxLCAweDA5MDQsCi0JMHg0OTVkLCAweDkwYmUsIDB4MDE3MywgMHgwOTA0LCAweDQ5NWQsIDB4OTBiZSwgMHgwMWExLCAweDExMjgsCi0JMHhhODk0LCAweDgwMDcsIDB4YTg5NiwgMHgwODA0LCAweDQ5NjgsIDB4OTBiZSwgMHgwMjEyLCAweDA5MDQsCi0JMHg0OTUxLCAweDkwYmUsIDB4MDIxMywgMHgwNWU4LCAweDkwYmUsIDB4MDIxNCwgMHgwNTAwLCAweDkwYmUsCi0JMHgwMjE3LCAweDAxODgsIDB4OTBiZSwgMHgwMjFhLCAweDExMjAsIDB4YTg5YywgMHg4MDA3LCAweGE4OWUsCi0JMHgwNGUwLCAweDkwYmUsIDB4MDIxZiwgMHgwNWM4LCAweDkwYmUsIDB4MDMwMCwgMHgwNWIwLCAweDAwOWUsCi0JMHgwMGRlLCAweDA4MDQsIDB4MzVlYSwgMHg3MDI4LCAweDkwODAsIDB4MDAxMCwgMHgyMDk4LCAweDIwYTAsCi0JMHg3MDM0LCAweDIwZTAsIDB4MjBlOCwgMHgyMGE5LCAweDAwMDcsIDB4MDgwYywgMHg0OWE2LCAweDcwMjgsCi0JMHg5MDgwLCAweDAwMGUsIDB4MjA5OCwgMHgyMGEwLCAweDcwMzQsIDB4MjBlMCwgMHgyMGU4LCAweDIwYTksCi0JMHgwMDAxLCAweDA4MGMsIDB4NDlhNiwgMHgwMGM4LCAweDcwMjgsIDB4OTA4MCwgMHgwMDBjLCAweDIwOTgsCi0JMHgyMGEwLCAweDcwMzQsIDB4MjBlMCwgMHgyMGU4LCAweDIwYTksIDB4MDAwMSwgMHgwODBjLCAweDQ5YjMsCi0JMHgwMGI4LCAweDcwMjgsIDB4OTA4MCwgMHgwMDBlLCAweDIwOTgsIDB4MjBhMCwgMHg3MDM0LCAweDIwZTAsCi0JMHgyMGU4LCAweDIwYTksIDB4MDAwMSwgMHgwODBjLCAweDQ5YjMsIDB4NzAyOCwgMHg5MDgwLCAweDAwMGMsCi0JMHgyMDk4LCAweDIwYTAsIDB4NzAzNCwgMHgyMGUwLCAweDIwZTgsIDB4MjBhOSwgMHgwMDAxLCAweDA0ZjEsCi0JMHgwMGM2LCAweDA4MGMsIDB4NGJlNCwgMHgwNTUwLCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweGE4NjcsCi0JMHgwMTE5LCAweDkwMDYsIDB4YTg4MiwgMHhhODdmLCAweDAwMjAsIDB4YTg4YiwgMHgwMDAxLCAweDgxMGIsCi0JMHhhOWFlLCAweGE4YjIsIDB4YWFiNiwgMHhhYmJhLCAweGFjYmUsIDB4YWRjMiwgMHhhOWM2LCAweGE4Y2EsCi0JMHgwMGNlLCAweDAwOWUsIDB4MDBkZSwgMHhhODY2LCAweGE4MjIsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsCi0JMHhhODA0LCAweDIwNDgsIDB4MDgwYywgMHhkMjY0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsCi0JMHgzNWU3LCAweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDQ5OWQsIDB4MDAwNSwgMHgwMGNlLCAweDAwOWUsCi0JMHgwMGRlLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsIDB4YTgyMCwgMHg5MDg2LCAweDgwMDEsCi0JMHgxOTA0LCAweDM1YjUsIDB4MjAwOSwgMHgwMDA0LCAweDA4MDQsIDB4MzVlNywgMHgwMDE2LCAweDAwMjYsCi0JMHgzNTEwLCAweDIwYTksIDB4MDAwMiwgMHg0MDAyLCAweDQxMDQsIDB4NDAwNCwgMHg4MjExLCAweDFkYzgsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDM1MjAsCi0JMHgyMGE5LCAweDAwMDQsIDB4NDAwMiwgMHg0MzA0LCAweDQyMDQsIDB4NDEwNCwgMHg0MDA0LCAweDg0MjEsCi0JMHgxZGI4LCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHg4MWZmLCAweDAxMjAsCi0JMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwgMHgzNWU3LCAweDYwZGMsIDB4ZDBhYywgMHgxMTg4LCAweDIwMDksCi0JMHgxODBkLCAweDIxMGMsIDB4ZDE4YywgMHgwMTMwLCAweGQwOWMsIDB4MDEyMCwgMHgyMDA5LCAweDAwMTYsCi0JMHgwODA0LCAweDM1ZTcsIDB4ZDA5YywgMHgxMTIwLCAweDIwMDksIDB4MDAwNSwgMHgwODA0LCAweDM1ZTcsCi0JMHg3OTg0LCAweDc4YTgsIDB4MjA0MCwgMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHg5MTgyLCAweDAwN2YsCi0JMHgwYTA0LCAweDM1ZWEsIDB4OTE4NiwgMHgwMGZmLCAweDA5MDQsIDB4MzVlYSwgMHg5MTgyLCAweDA4MDAsCi0JMHgxYTA0LCAweDM1ZWEsIDB4N2E4YywgMHg3Yjg4LCAweDYwN2MsIDB4OTMwNiwgMHgxMTU4LCAweDYwODAsCi0JMHg5MjRlLCAweDA5MDQsIDB4MzVlYSwgMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHg5OWNjLCAweGZmMDAsCi0JMHgwOTA0LCAweDM1ZWEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsCi0JMHhkMDhjLCAweDAxOTgsIDB4OTM4NiwgMHgwMGZmLCAweDAxODAsIDB4MDAyNiwgMHgyMDExLCAweDgwMDgsCi0JMHgwODBjLCAweDZhYzcsIDB4MDAyZSwgMHgwMTQ4LCAweDkxOGQsIDB4ODAwMCwgMHgwODBjLCAweDZiMTEsCi0JMHgxMTIwLCAweDIwMDEsIDB4NDAwOSwgMHgwODA0LCAweDRhNjQsIDB4MDgwYywgMHg0YWY3LCAweDA5MDQsCi0JMHg0YTZhLCAweDAwODYsIDB4OTBjNiwgMHg0MDAwLCAweDAwOGUsIDB4MTUzOCwgMHgwMGM2LCAweDAwMDYsCi0JMHgwMDM2LCAweGI4MTgsIDB4YmIxYywgMHg5MzA1LCAweGJiMjAsIDB4OTMwNSwgMHhiYjI0LCAweDkzMDUsCi0JMHhiYjI4LCAweDkzMDUsIDB4YmIyYywgMHg5MzA1LCAweGJiMzAsIDB4OTMwNSwgMHhiYjM0LCAweDkzMDUsCi0JMHgwMDNlLCAweDA1NzAsIDB4ZDg4YywgMHgxMTI4LCAweDA4MGMsIDB4NmFhMywgMHgwMTEwLCAweGM4OWQsCi0JMHgwNDM4LCAweDkwMGUsIDB4MDgwYywgMHg2OTQ0LCAweDExMDgsIDB4YzE4NSwgMHhiODAwLCAweGQwYmMsCi0JMHgwMTA4LCAweGMxOGQsIDB4MDAwZSwgMHgwMGNlLCAweDAwYjgsIDB4OTBjNiwgMHg0MDA3LCAweDExMTAsCi0JMHgyNDA4LCAweDAwOTAsIDB4OTBjNiwgMHg0MDA4LCAweDExMTgsIDB4MjcwOCwgMHgyNjEwLCAweDAwNjAsCi0JMHg5MGM2LCAweDQwMDksIDB4MTEwOCwgMHgwMDQwLCAweDkwYzYsIDB4NDAwNiwgMHgxMTA4LCAweDAwMjAsCi0JMHgyMDAxLCAweDQwMDUsIDB4MjAwOSwgMHgwMDBhLCAweDIwMjAsIDB4MDEyZSwgMHgwODA0LCAweDM1YjcsCi0JMHgwMDBlLCAweDAwY2UsIDB4MmIwMCwgMHg3MDI2LCAweDAwMTYsIDB4MDBiNiwgMHgwMGM2LCAweDAwZTYsCi0JMHgyYzcwLCAweDA4MGMsIDB4YjMyNSwgMHgwOTA0LCAweDRhYmYsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsCi0JMHhkNTU0LCAweDJlNTgsIDB4MDBlZSwgMHgwMGU2LCAweDAwYzYsIDB4MDgwYywgMHg0YmU0LCAweDAwY2UsCi0JMHgyYjcwLCAweDExNTgsIDB4MDgwYywgMHhiMmQzLCAweDAwZWUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMWUsCi0JMHgwMTJlLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsIDB4OTAwZSwgMHhhOTY2LCAweGE5NmEsCi0JMHgyOTAwLCAweDYwMTYsIDB4YTkzMiwgMHhhODY4LCAweGMwZmQsIDB4ZDg4YywgMHgwMTA4LCAweGMwZjUsCi0JMHhhODZhLCAweGQ4OWMsIDB4MTExMCwgMHgwODBjLCAweDMyNTAsIDB4NjAyMywgMHgwMDAxLCAweDkwMDYsCi0JMHgwODBjLCAweDY2NTYsIDB4ZDg5YywgMHgwMTM4LCAweDIwMDEsIDB4MDAwNCwgMHgwODBjLCAweDY2NmEsCi0JMHgyMDA5LCAweDAwMDMsIDB4MDAzMCwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg2NjZhLCAweDIwMDksCi0JMHgwMDAyLCAweDA4MGMsIDB4YjM1MiwgMHg3OGE4LCAweGQwOTQsIDB4MDEzOCwgMHgwMGVlLCAweDcwMjQsCi0JMHgwMGU2LCAweDIwNTgsIDB4YjhjYywgMHhjMDhkLCAweGI4Y2UsIDB4OTA4NSwgMHgwMDAxLCAweDAwZWUsCi0JMHgwMGNlLCAweDAwYmUsIDB4MDAxZSwgMHgwMTJlLCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsCi0JMHgzNWU3LCAweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDRhY2UsIDB4MDAwNSwgMHhhODMwLCAweDIwMDksCi0JMHgxODBkLCAweDIxMGMsIDB4ZDE4YywgMHgwMTQwLCAweDIwMDgsIDB4OTE4ZSwgMHhkZWFkLCAweDExMjAsCi0JMHgyMDIxLCAweDQwMDksIDB4MDgwNCwgMHgzNWI3LCAweDkwODYsIDB4MDEwMCwgMHg3MDI0LCAweDIwNTgsCi0JMHgxMTM4LCAweDIwMDksIDB4MDAwNCwgMHhiYTA0LCAweDkyOTQsIDB4MDBmZiwgMHgwODA0LCAweDU3MjksCi0JMHg5MDBlLCAweGE4NjgsIDB4ZDBmNCwgMHgxOTA0LCAweDM1YjUsIDB4MDgwYywgMHg2OTQ0LCAweDExMDgsCi0JMHhjMTg1LCAweGI4MDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4MDgwNCwgMHgzNWI1LCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwOTYsIDB4ODNmZiwgMHgwOTA0LCAweDRiNDYsIDB4OTAyZSwgMHgwODBjLCAweGIyM2QsCi0JMHgwMTMwLCAweDkwMjYsIDB4MjBhOSwgMHgwODAwLCAweDIwNzEsIDB4MTAwMCwgMHgwMDMwLCAweDIwMjEsCi0JMHgwMDdmLCAweDIwYTksIDB4MDc4MSwgMHgyMDcxLCAweDEwN2YsIDB4MmUwNCwgMHg5MDA1LCAweDExYjgsCi0JMHgyMTAwLCAweDk0MDYsIDB4MTkwNCwgMHg0YjU3LCAweDI0MjgsIDB4OTRjZSwgMHgwMDdmLCAweDExMjAsCi0JMHg5MmNlLCAweGZmZmQsIDB4MTU1OCwgMHgwMDMwLCAweDk0Y2UsIDB4MDA4MCwgMHgxMTMwLCAweDkyY2UsCi0JMHhmZmZjLCAweDE1MjAsIDB4OTNjZSwgMHgwMGZmLCAweDE1MDgsIDB4YzVmZCwgMHgwNDgwLCAweDIwNTgsCi0JMHhiZjEwLCAweDI3MDAsIDB4OTMwNiwgMHgxMWU4LCAweGJlMTQsIDB4MjYwMCwgMHg5MjA2LCAweDExYzgsCi0JMHgyNDAwLCAweDkxMDYsIDB4MTE4MCwgMHhkODg0LCAweDA1OTgsIDB4ZDg5NCwgMHgxNTg4LCAweDA4MGMsCi0JMHg2YTQzLCAweDE1NzAsIDB4MjAwMSwgMHg0MDAwLCAweDA0NjAsIDB4MDgwYywgMHg2YWEzLCAweDE1NDAsCi0JMHgyMDAxLCAweDQwMDAsIDB4MDQzMCwgMHgyMDAxLCAweDQwMDcsIDB4MDQxOCwgMHgyMDAxLCAweDQwMDYsCi0JMHgwNDAwLCAweDI0MDAsIDB4OTEwNiwgMHgxMTU4LCAweGJlMTQsIDB4ODdmZiwgMHgxMTI4LCAweDg2ZmYsCi0JMHgwOTE4LCAweDA4MGMsIDB4YjIzZCwgMHgxOTAwLCAweDIwMDEsIDB4NDAwOCwgMHgwMDkwLCAweDg0MjAsCi0JMHg4ZTcwLCAweDFmMDQsIDB4NGIwZCwgMHg4NWZmLCAweDExMzAsIDB4MjAwMSwgMHg0MDA5LCAweDAwNDgsCi0JMHgyMDAxLCAweDAwMDEsIDB4MDAzMCwgMHgwODBjLCAweDY2YjksIDB4MWRkMCwgMHhiYjEyLCAweGJhMTYsCi0JMHg5MDA2LCAweDkwMDUsIDB4MDA5ZSwgMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHg4MWZmLCAweDAxMjAsCi0JMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwgMHgzNWU3LCAweDA4MGMsIDB4NGJlNCwgMHgxMTIwLCAweDIwMDksCi0JMHgwMDAyLCAweDA4MDQsIDB4MzVlNywgMHhhODY3LCAweDAwMDAsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsCi0JMHg3ODg0LCAweDkwMDUsIDB4MDkwNCwgMHgzNWVhLCAweDkwOTYsIDB4MDBmZiwgMHgwMTIwLCAweDkwOTIsCi0JMHgwMDA0LCAweDFhMDQsIDB4MzVlYSwgMHgyMDEwLCAweDI5MTgsIDB4MDgwYywgMHgzMWY2LCAweDExMjAsCi0JMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwgMHgzNWU3LCAweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDRiOTksCi0JMHgwMDA1LCAweGE4MzAsIDB4OTA4NiwgMHgwMTAwLCAweDE5MDQsIDB4MzViNSwgMHgyMDA5LCAweDAwMDQsCi0JMHgwODA0LCAweDM1ZTcsIDB4Nzk4NCwgMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHg5MTgyLCAweDAwN2YsCi0JMHgwYTA0LCAweDM1ZWEsIDB4OTE4NiwgMHgwMGZmLCAweDA5MDQsIDB4MzVlYSwgMHg5MTgyLCAweDA4MDAsCi0JMHgxYTA0LCAweDM1ZWEsIDB4MjAwMSwgMHg5NDAwLCAweDA4MGMsIDB4NTc4NCwgMHgxOTA0LCAweDM1ZTcsCi0JMHgwODA0LCAweDM1YjUsIDB4YTk5OCwgMHgwODBjLCAweGIyM2QsIDB4MTExOCwgMHg5MTgyLCAweDAwN2YsCi0JMHgwMjgwLCAweDkxODYsIDB4MDBmZiwgMHgwMTY4LCAweDkxODIsIDB4MDgwMCwgMHgxMjUwLCAweDIwMDEsCi0JMHg5NDAwLCAweDA4MGMsIDB4NTc4NCwgMHgxMWE4LCAweDAwNjAsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsCi0JMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsCi0JMHgwMDA1LCAweGE4OTcsIDB4NDAwMCwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsCi0JMHgwMDA1LCAweDIwMDksIDB4MDAwYSwgMHgwYzQ4LCAweDA4MGMsIDB4MTAwZSwgMHgwMTk4LCAweDkwMDYsCi0JMHhhODAyLCAweDcwMTQsIDB4OTAwNSwgMHgxMTIwLCAweDI5MDAsIDB4NzAxNiwgMHg3MDFhLCAweDAwNDAsCi0JMHg3MDE4LCAweGE4MDIsIDB4MDA4NiwgMHgyMDQwLCAweDI5MDAsIDB4YTAwNiwgMHg3MDFhLCAweDAwOGUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg3OTg0LCAweDA4MGMsIDB4NjcyNCwgMHgxMTMwLCAweDdlODgsCi0JMHg5Njg0LCAweDNmZmYsIDB4OTA4MiwgMHg0MDAwLCAweDAyMDgsIDB4OTA1ZSwgMHg4YmZmLCAweDAwMDUsCi0JMHhhOTk4LCAweDA4MGMsIDB4NjcyNCwgMHgxMTMwLCAweGFlOWMsIDB4OTY4NCwgMHgzZmZmLCAweDkwODIsCi0JMHg0MDAwLCAweDAyMDgsIDB4OTA1ZSwgMHg4YmZmLCAweDAwMDUsIDB4YWU5OCwgMHgwMDA4LCAweDdlODQsCi0JMHgyNjA4LCAweDA4MGMsIDB4NjcyNCwgMHgxMTA4LCAweDAwMDgsIDB4OTA1ZSwgMHg4YmZmLCAweDAwMDUsCi0JMHgwMDE2LCAweDcxMTQsIDB4ODFmZiwgMHgwMTI4LCAweDIxNDgsIDB4YTkwNCwgMHgwODBjLCAweDEwNDAsCi0JMHgwY2M4LCAweDcxMTYsIDB4NzExYSwgMHgwMDFlLCAweDAwMDUsIDB4MjAzMSwgMHgwMDAxLCAweDAwMTAsCi0JMHgyMDMxLCAweDAwMDAsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsIDB4YTY2YSwgMHhhMTdhLCAweGE3NzIsCi0JMHhhMDc2LCAweGEyOGUsIDB4YTM5MiwgMHhhNDk2LCAweGE1OWEsIDB4MDgwYywgMHgxMGY4LCAweDcwMDcsCi0JMHgwMDAyLCAweDcwMWYsIDB4MzViNSwgMHgwMDA1LCAweDAwZjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDc5LCAweDAwMDAsIDB4MjAwMSwgMHgxOGIwLCAweDIwMDQsIDB4OTAwNSwgMHgxMTkwLCAweDBlMDQsCi0JMHg0YzYxLCAweDdhMzYsIDB4NzgzMywgMHgwMDEyLCAweDdhODIsIDB4N2I4NiwgMHg3YzhhLCAweDIwOTEsCi0JMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMWFhLCAweDA4MDQsCi0JMHg0Y2M3LCAweDAwMTYsIDB4MDA4NiwgMHgwMDk2LCAweDAwYzYsIDB4MDBlNiwgMHgyMDcxLCAweDE4OWUsCi0JMHg3MDQ0LCAweDkwMDUsIDB4MTU0MCwgMHg3MTQ4LCAweDkxODIsIDB4MDAxMCwgMHgwMjg4LCAweDcwMzgsCi0JMHgyMDYwLCAweDA4MGMsIDB4MTAwZSwgMHgwOTA0LCAweDRjYmYsIDB4YTg0YiwgMHgwMDAwLCAweDI5MDAsCi0JMHg3MDQ2LCAweDIwMDEsIDB4MDAwMiwgMHg5MDgwLCAweDIwYzcsIDB4MjAwNSwgMHhhODQ2LCAweDAwOTgsCi0JMHg3MDM4LCAweDkwZTAsIDB4MDAwNCwgMHgyMDAxLCAweDE4YmEsIDB4OWM4MiwgMHgxOGZhLCAweDAyMTAsCi0JMHgyMDYxLCAweDE4YmEsIDB4MmMwMCwgMHg3MDNhLCAweDcxNDgsIDB4ODFmZiwgMHgxMTA4LCAweDcwM2UsCi0JMHg4MTA4LCAweDcxNGEsIDB4MDQ2MCwgMHg3MTQ4LCAweDgxMDgsIDB4NzE0YSwgMHg3MDQ0LCAweDIwNDAsCi0JMHhhMTQ0LCAweDIxMDUsIDB4MDAxNiwgMHg5MDhhLCAweDAwMzYsIDB4MWEwYywgMHgwZGM1LCAweDIwNjAsCi0JMHgwMDFlLCAweDgxMDgsIDB4MjEwNSwgMHg5MDA1LCAweGExNDYsIDB4MTUyMCwgMHgwODBjLCAweDEwMGUsCi0JMHgxMTMwLCAweDgxMDksIDB4YTk0NiwgMHg3MTQ4LCAweDgxMDksIDB4NzE0YSwgMHgwMGQ4LCAweDkwMDYsCi0JMHhhODA2LCAweGE4NGEsIDB4YTA0NiwgMHgyODAwLCAweGE4MDIsIDB4MjkwMCwgMHhhMDA2LCAweDcwNDYsCi0JMHgyMDAxLCAweDAwMDIsIDB4OTA4MCwgMHgyMGM3LCAweDIwMDUsIDB4YTg0NiwgMHgwMDU4LCAweDIyNjIsCi0JMHg2MzA2LCAweDY0MGEsIDB4MDBlZSwgMHgwMGNlLCAweDAwOWUsIDB4MDA4ZSwgMHgwMDFlLCAweDAxMmUsCi0JMHgwMGZlLCAweDAwMDUsIDB4MmMwMCwgMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwgMHg0Y2U5LCAweDRjZTksCi0JMHg0Y2ViLCAweDRjZTksIDB4NGNlOSwgMHg0Y2U5LCAweDRjZWYsIDB4NGNlOSwgMHg0Y2U5LCAweDRjZTksCi0JMHg0Y2YzLCAweDRjZTksIDB4NGNlOSwgMHg0Y2U5LCAweDRjZjcsIDB4NGNlOSwgMHg0Y2U5LCAweDRjZTksCi0JMHg0Y2ZiLCAweDRjZTksIDB4NGNlOSwgMHg0Y2U5LCAweDRjZmYsIDB4NGNlOSwgMHg0Y2U5LCAweDRjZTksCi0JMHg0ZDA0LCAweDA4MGMsIDB4MGRjNSwgMHhhMjc2LCAweGEzN2EsIDB4YTQ3ZSwgMHgwODk4LCAweGEyODYsCi0JMHhhMzhhLCAweGE0OGUsIDB4MDg3OCwgMHhhMjk2LCAweGEzOWEsIDB4YTQ5ZSwgMHgwODU4LCAweGEyYTYsCi0JMHhhM2FhLCAweGE0YWUsIDB4MDgzOCwgMHhhMmI2LCAweGEzYmEsIDB4YTRiZSwgMHgwODE4LCAweGEyYzYsCi0JMHhhM2NhLCAweGE0Y2UsIDB4MDgwNCwgMHg0Y2MyLCAweGEyZDYsIDB4YTNkYSwgMHhhNGRlLCAweDA4MDQsCi0JMHg0Y2MyLCAweDAwZTYsIDB4MjA3MSwgMHgxODllLCAweDcwNDgsIDB4OTAwNSwgMHgwOTA0LCAweDRkOWIsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwZTA0LCAweDRkOWEsIDB4MDBmNiwgMHgyMDc5LCAweDAwMDAsCi0JMHgwMGM2LCAweDAwOTYsIDB4MDA4NiwgMHgwMDc2LCAweDkwMDYsIDB4MjAzOCwgMHg3MDQwLCAweDIwNDgsCi0JMHg5MDA1LCAweDA1MDAsIDB4YTk0OCwgMHgyMTA1LCAweDAwMTYsIDB4OTA4YSwgMHgwMDM2LCAweDFhMGMsCi0JMHgwZGM1LCAweDIwNjAsIDB4MDAxZSwgMHg4MTA4LCAweDIxMDUsIDB4OTAwNSwgMHhhOTRhLCAweDE5MDQsCi0JMHg0ZDlkLCAweGE4MDQsIDB4OTAwNSwgMHgwOTBjLCAweDBkYzUsIDB4NzA0MiwgMHgyOTM4LCAweDIwNDAsCi0JMHhhMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgwMDAyLCAweDkwODAsIDB4MjBjNywgMHgyMDA1LCAweGEwNGEsCi0JMHgwODA0LCAweDRkOWQsIDB4NzAzYywgMHgyMDYwLCAweDJjMTQsIDB4NjMwNCwgMHg2NDA4LCAweDY1MGMsCi0JMHgyMjAwLCAweDc4MzYsIDB4NzgzMywgMHgwMDEyLCAweDc4ODIsIDB4MjMwMCwgMHg3ODg2LCAweDI0MDAsCi0JMHg3ODhhLCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsCi0JMHgxMWFhLCAweDg3ZmYsIDB4MDExOCwgMHgyNzQ4LCAweDA4MGMsIDB4MTA0MCwgMHg3MDQ4LCAweDgwMDEsCi0JMHg3MDRhLCAweDkwMDUsIDB4MTE3MCwgMHg3MDQwLCAweDIwNDgsIDB4OTAwNSwgMHgwMTI4LCAweDA4MGMsCi0JMHgxMDQwLCAweDkwMDYsIDB4NzA0MiwgMHg3MDQ2LCAweDcwM2IsIDB4MThiYSwgMHg3MDNmLCAweDE4YmEsCi0JMHgwNDIwLCAweDcwNDAsIDB4OTAwNSwgMHgxNTA4LCAweDcyMzgsIDB4MmMwMCwgMHg5MjA2LCAweDAxNDgsCi0JMHg5YzgwLCAweDAwMDQsIDB4OTBmYSwgMHgxOGZhLCAweDAyMTAsIDB4MjAwMSwgMHgxOGJhLCAweDcwM2UsCi0JMHgwMGEwLCAweDkwMDYsIDB4NzAzZSwgMHg3MDNhLCAweDcwNDQsIDB4OTAwNSwgMHgwOTBjLCAweDBkYzUsCi0JMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwgMHgxZGUwLCAweDI5MDAsIDB4NzA0MiwgMHgyMDAxLCAweDAwMDIsCi0JMHg5MDgwLCAweDIwYzcsIDB4MjAwNSwgMHhhODRhLCAweDAwMDAsIDB4MDA3ZSwgMHgwMDhlLCAweDAwOWUsCi0JMHgwMGNlLCAweDAwZmUsIDB4MDEyZSwgMHgwMGVlLCAweDAwMDUsIDB4MmMwMCwgMHg5MDgyLCAweDAwMWIsCi0JMHgwMDAyLCAweDRkYmMsIDB4NGRiYywgMHg0ZGJlLCAweDRkYmMsIDB4NGRiYywgMHg0ZGJjLCAweDRkYzMsCi0JMHg0ZGJjLCAweDRkYmMsIDB4NGRiYywgMHg0ZGM4LCAweDRkYmMsIDB4NGRiYywgMHg0ZGJjLCAweDRkY2QsCi0JMHg0ZGJjLCAweDRkYmMsIDB4NGRiYywgMHg0ZGQyLCAweDRkYmMsIDB4NGRiYywgMHg0ZGJjLCAweDRkZDcsCi0JMHg0ZGJjLCAweDRkYmMsIDB4NGRiYywgMHg0ZGRjLCAweDA4MGMsIDB4MGRjNSwgMHhhYTc0LCAweGFiNzgsCi0JMHhhYzdjLCAweDA4MDQsIDB4NGQ0OCwgMHhhYTg0LCAweGFiODgsIDB4YWM4YywgMHgwODA0LCAweDRkNDgsCi0JMHhhYTk0LCAweGFiOTgsIDB4YWM5YywgMHgwODA0LCAweDRkNDgsIDB4YWFhNCwgMHhhYmE4LCAweGFjYWMsCi0JMHgwODA0LCAweDRkNDgsIDB4YWFiNCwgMHhhYmI4LCAweGFjYmMsIDB4MDgwNCwgMHg0ZDQ4LCAweGFhYzQsCi0JMHhhYmM4LCAweGFjY2MsIDB4MDgwNCwgMHg0ZDQ4LCAweGFhZDQsIDB4YWJkOCwgMHhhY2RjLCAweDA4MDQsCi0JMHg0ZDQ4LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwYjYsIDB4MDBjNiwgMHgyMDA5LCAweDAwN2UsCi0JMHgwODBjLCAweDY3MjQsIDB4MjAxOSwgMHgwMDAxLCAweGI4NWMsIDB4ZDBhYywgMHgwMTEwLCAweDIwMTksCi0JMHgwMDAwLCAweDIwMTEsIDB4ODAxYiwgMHgwODBjLCAweDRjNDQsIDB4MDBjZSwgMHgwMGJlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDI2LCAweDA4MGMsIDB4NTdkNSwgMHhkMGM0LCAweDAxMjAsCi0JMHgyMDExLCAweDgwMTQsIDB4MDgwYywgMHg0YzQ0LCAweDAwMmUsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsCi0JMHgzNWU3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwMzAsIDB4YzA4ZCwgMHhjMDg1LCAweGMwYWMsCi0JMHg2MDMyLCAweDA4MGMsIDB4NzYzNywgMHgxMTU4LCAweDA4MGMsIDB4NzkzMiwgMHgwODBjLCAweDYxMmUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHg3NjdiLCAweDA4MGMsIDB4NzU2MywgMHgwMDEwLCAweDA4MGMsCi0JMHg1ZmVkLCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsCi0JMHgwODA0LCAweDM1ZTcsIDB4MDgwYywgMHg1N2U5LCAweDAxMjAsIDB4MjAwOSwgMHgwMDA3LCAweDA4MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4NmE5YiwgMHgwMTIwLCAweDIwMDksIDB4MDAwOCwgMHgwODA0LCAweDM1ZTcsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDAxNzgsIDB4MDAyNiwgMHgyMDExLCAweDAwMTAsCi0JMHgwODBjLCAweDZhYzcsIDB4MDAyZSwgMHgwMTQwLCAweDc5ODQsIDB4MDgwYywgMHg2YjExLCAweDExMjAsCi0JMHgyMDA5LCAweDQwMDksIDB4MDgwNCwgMHgzNWU3LCAweDc5ODQsIDB4MDgwYywgMHg2NmI5LCAweDE5MDQsCi0JMHgzNWVhLCAweDA4MGMsIDB4NGMxNywgMHgwOTA0LCAweDM1ZWEsIDB4MmIwMCwgMHg3MDI2LCAweDA4MGMsCi0JMHg2YWEzLCAweDc4ODgsIDB4MTE3MCwgMHg5MDg0LCAweDAwMDUsIDB4MTE1OCwgMHg5MDBlLCAweDA4MGMsCi0JMHg2OTQ0LCAweDExMDgsIDB4YzE4NSwgMHhiODAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDA4MDQsCi0JMHgzNWI1LCAweDA4MGMsIDB4NGJlNCwgMHgwOTA0LCAweDM1ZTcsIDB4OTAwNiwgMHhhODY2LCAweGE4MzIsCi0JMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHgwODBjLCAweGQzMDIsIDB4MDkwNCwgMHgzNWU3LCAweDc4ODgsCi0JMHhkMDk0LCAweDAxMTgsIDB4YjhjYywgMHhjMDhkLCAweGI4Y2UsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsCi0JMHg0ZWNiLCAweDAwMDUsIDB4MjA2MSwgMHgxODAwLCAweDA4MGMsIDB4NTdlOSwgMHgyMDA5LCAweDAwMDcsCi0JMHgxNTYwLCAweDA4MGMsIDB4NmE5YiwgMHgwMTE4LCAweDIwMDksIDB4MDAwOCwgMHgwNDMwLCAweGE5OTgsCi0JMHgwODBjLCAweDY2YjksIDB4MTUzMCwgMHgwODBjLCAweDRjMTUsIDB4MDUxOCwgMHgwODBjLCAweDZhYTMsCi0JMHhhODljLCAweDExNjgsIDB4OTA4NCwgMHgwMDA1LCAweDExNTAsIDB4OTAwZSwgMHgwODBjLCAweDY5NDQsCi0JMHgxMTA4LCAweGMxODUsIDB4YjgwMCwgMHhkMGJjLCAweDAxMDgsIDB4YzE4ZCwgMHgwMGQwLCAweGE4NjgsCi0JMHhjMGZjLCAweGE4NmEsIDB4MDgwYywgMHhkMzAyLCAweDExZTAsIDB4YTg5YywgMHhkMDk0LCAweDAxMTgsCi0JMHhiOGNjLCAweGMwOGQsIDB4YjhjZSwgMHgyMDA5LCAweDAwMDMsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsCi0JMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsCi0JMHgwMDA1LCAweGE4OTcsIDB4NDAwMCwgMHhhOTlhLCAweDkwMDYsIDB4OTE4ZCwgMHgwMDAxLCAweDIwMDgsCi0JMHgwMDA1LCAweDkwMDYsIDB4MDAwNSwgMHhhODMwLCAweDIwMDksIDB4MTgwZCwgMHgyMTBjLCAweGQxOGMsCi0JMHgwMTQwLCAweDIwMDgsIDB4OTE4ZSwgMHhkZWFkLCAweDExMjAsIDB4MjAyMSwgMHg0MDA5LCAweDA4MDQsCi0JMHgzNWI3LCAweDkwODYsIDB4MDEwMCwgMHg3MDI0LCAweDIwNTgsIDB4MTExMCwgMHgwODA0LCAweDU3MjksCi0JMHg5MDBlLCAweDA4MGMsIDB4Njk0NCwgMHgxMTA4LCAweGMxODUsIDB4YjgwMCwgMHhkMGJjLCAweDAxMDgsCi0JMHhjMThkLCAweDA4MDQsIDB4MzViNSwgMHgwODBjLCAweDU3ZTksIDB4MDEyMCwgMHgyMDA5LCAweDAwMDcsCi0JMHgwODA0LCAweDM1ZTcsIDB4N2Y4NCwgMHg3YThjLCAweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDA4MGMsCi0JMHg0YmU0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzVlNywgMHg5MDBlLCAweDIxMzAsCi0JMHg3MTI2LCAweDcxMzIsIDB4YTg2MCwgMHgyMGU4LCAweDcwMzYsIDB4YTg1YywgMHg5MDgwLCAweDAwMDUsCi0JMHg3MDJhLCAweDIwYTAsIDB4MDgwYywgMHg2NzI0LCAweDE5MDQsIDB4NGY4MSwgMHgwODBjLCAweDZhYTMsCi0JMHgwMTM4LCAweDA4MGMsIDB4NmFhYiwgMHgwMTIwLCAweDA4MGMsIDB4NmE0MywgMHgxOTA0LCAweDRmODEsCi0JMHhkNzk0LCAweDExMTAsIDB4ZDc4NCwgMHgwMWE4LCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDkwODAsCi0JMHgwMDA2LCAweDIwOTgsIDB4MzQwMCwgMHhkNzk0LCAweDAxOTgsIDB4MjBhOSwgMHgwMDA4LCAweDQwMDMsCi0JMHgyMDk4LCAweDIwYTAsIDB4M2QwMCwgMHgyMGUwLCAweDIwYTksIDB4MDAwMiwgMHgwODBjLCAweDQ5YjMsCi0JMHgwMDgwLCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDkwODAsIDB4MDAwYSwgMHgyMDk4LCAweDM0MDAsCi0JMHgyMGE5LCAweDAwMDQsIDB4NDAwMywgMHgyMDk4LCAweDIwYTAsIDB4M2QwMCwgMHgyMGUwLCAweDA4MGMsCi0JMHg0OWIzLCAweDkxODYsIDB4MDA3ZSwgMHgwMTcwLCAweDkxODYsIDB4MDA4MCwgMHgwMTU4LCAweDA4MGMsCi0JMHg2YWEzLCAweDkwYzIsIDB4MDAwNiwgMHgxMjEwLCAweGMxZmQsIDB4MDAyMCwgMHgwODBjLCAweDY5NDQsCi0JMHgxMTA4LCAweGMxZmQsIDB4NDEwNCwgMHhjMWZjLCAweGQ3OTQsIDB4MDUyOCwgMHhiOGM0LCAweDIwZTAsCi0JMHhiOGM4LCAweDIwNjAsIDB4OWM4MCwgMHgwMDAwLCAweDIwOTgsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDMsCi0JMHg5YzgwLCAweDAwMDMsIDB4MjA5OCwgMHgyMGE5LCAweDAwMDEsIDB4NDAwNSwgMHg5YzgwLCAweDAwMDQsCi0JMHgyMDk4LCAweDM0MDAsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDMsIDB4MjA5OCwgMHgyMGEwLCAweDNkMDAsCi0JMHgyMGUwLCAweDA4MGMsIDB4NDlhNiwgMHg5YzgwLCAweDAwMjYsIDB4MjA5OCwgMHhiOGM0LCAweDIwZTAsCi0JMHgyMGE5LCAweDAwMDIsIDB4NDAwMywgMHhkNzk0LCAweDAxMTAsIDB4OTZiMCwgMHgwMDBiLCAweDk2YjAsCi0JMHgwMDA1LCAweDgxMDgsIDB4MDgwYywgMHhiMjNkLCAweDAxMTgsIDB4OTE4NiwgMHgwODAwLCAweDAwNDAsCi0JMHhkNzhjLCAweDAxMjAsIDB4OTE4NiwgMHgwODAwLCAweDAxNzAsIDB4MDAxOCwgMHg5MTg2LCAweDAwN2UsCi0JMHgwMTUwLCAweGQ3OTQsIDB4MDExOCwgMHg5Njg2LCAweDAwMjAsIDB4MDAxMCwgMHg5Njg2LCAweDAwMjgsCi0JMHgwMTUwLCAweDA4MDQsIDB4NGYwYSwgMHg4NmZmLCAweDExMjAsIDB4NzEyNCwgMHg4MTBiLCAweDA4MDQsCi0JMHgzNWI1LCAweDcwMzMsIDB4MDAwMSwgMHg3MTIyLCAweDcwMjQsIDB4OTYwMCwgMHg3MDI2LCAweDc3MmUsCi0JMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwgMHhhMDZiLCAweDAwMDAsIDB4YTY3YSwgMHg3MDM0LCAweGEwNzIsCi0JMHg3MDI4LCAweGEwNzYsIDB4YTI4ZSwgMHhhMzkyLCAweGE0OTYsIDB4YTU5YSwgMHgwODBjLCAweDEwZjgsCi0JMHg3MDA3LCAweDAwMDIsIDB4NzAxZiwgMHg0ZmJkLCAweDAwMDUsIDB4NzAzMCwgMHg5MDA1LCAweDExODAsCi0JMHg3MTIwLCAweDcwMjgsIDB4MjBhMCwgMHg3NzJjLCAweDkwMzYsIDB4NzAzNCwgMHgyMGU4LCAweDIwNjEsCi0JMHgxOGI4LCAweDJjNDQsIDB4YTI4YywgMHhhMzkwLCAweGE0OTQsIDB4YTU5OCwgMHgwODA0LCAweDRmMGEsCi0JMHg3MTI0LCAweDgxMGIsIDB4MDgwNCwgMHgzNWI1LCAweDIwMjksIDB4MDA3ZSwgMHg3OTg0LCAweDdhODgsCi0JMHg3YjhjLCAweDdjOTgsIDB4OTE4NCwgMHhmZjAwLCAweDgwMDcsIDB4OTBlMiwgMHgwMDIwLCAweDBhMDQsCi0JMHgzNWVhLCAweDk1MDIsIDB4MGEwNCwgMHgzNWVhLCAweDkxODQsIDB4MDBmZiwgMHg5MGUyLCAweDAwMjAsCi0JMHgwYTA0LCAweDM1ZWEsIDB4OTUwMiwgMHgwYTA0LCAweDM1ZWEsIDB4OTI4NCwgMHhmZjAwLCAweDgwMDcsCi0JMHg5MGUyLCAweDAwMjAsIDB4MGEwNCwgMHgzNWVhLCAweDk1MDIsIDB4MGEwNCwgMHgzNWVhLCAweDkyODQsCi0JMHgwMGZmLCAweDkwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDM1ZWEsIDB4OTUwMiwgMHgwYTA0LCAweDM1ZWEsCi0JMHg5Mzg0LCAweGZmMDAsIDB4ODAwNywgMHg5MGUyLCAweDAwMjAsIDB4MGEwNCwgMHgzNWVhLCAweDk1MDIsCi0JMHgwYTA0LCAweDM1ZWEsIDB4OTM4NCwgMHgwMGZmLCAweDkwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDM1ZWEsCi0JMHg5NTAyLCAweDBhMDQsIDB4MzVlYSwgMHg5NDg0LCAweGZmMDAsIDB4ODAwNywgMHg5MGUyLCAweDAwMjAsCi0JMHgwYTA0LCAweDM1ZWEsIDB4OTUwMiwgMHgwYTA0LCAweDM1ZWEsIDB4OTQ4NCwgMHgwMGZmLCAweDkwZTIsCi0JMHgwMDIwLCAweDBhMDQsIDB4MzVlYSwgMHg5NTAyLCAweDBhMDQsIDB4MzVlYSwgMHgyMDYxLCAweDE5ODksCi0JMHg2MTAyLCAweDYyMDYsIDB4NjMwYSwgMHg2NDBlLCAweDA4MDQsIDB4MzViNSwgMHgwODBjLCAweDRiZTQsCi0JMHgwOTA0LCAweDM1ZTcsIDB4MjAwOSwgMHgwMDE2LCAweDdhOGMsIDB4N2I4OCwgMHg3YzljLCAweDdkOTgsCi0JMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHhhZjYwLCAweDA4MGMsIDB4NGMyZCwgMHg3MDFmLCAweDUwNDEsCi0JMHgwMDA1LCAweDIwYTksIDB4MDAxNiwgMHg4OTZlLCAweDhkNmUsIDB4OGQ2ZiwgMHg5ZDg0LCAweGZmYzAsCi0JMHg5MDgwLCAweDAwMTksIDB4MjA5OCwgMHg5ZDg0LCAweDAwM2YsIDB4MjBlMCwgMHgyMDY5LCAweDE4NzcsCi0JMHgyMGU5LCAweDAwMDEsIDB4MmRhMCwgMHg0MDAzLCAweDY4MDAsIDB4OTAwNSwgMHgwOTA0LCAweDUwYTgsCi0JMHg2ODA0LCAweDIwMDgsIDB4OTE4YywgMHhmZmY4LCAweDE5MDQsIDB4NTBhOCwgMHg2ODBjLCAweDkwMDUsCi0JMHgwOTA0LCAweDUwYTgsIDB4OTA4MiwgMHhmZjAxLCAweDFhMDQsIDB4NTBhOCwgMHg2ODEwLCAweDkwODIsCi0JMHgwMDVjLCAweDA2ZjAsIDB4NjgyNCwgMHgyMDA4LCAweDkwODIsIDB4MDAwOCwgMHgwNmM4LCAweDkxODIsCi0JMHgwNDAwLCAweDE2YjAsIDB4MDA1NiwgMHgyMDI5LCAweDAwMDAsIDB4MDgwYywgMHg4ZTgwLCAweDAwNWUsCi0JMHg2OTQ0LCAweDY4MjAsIDB4OTEwMiwgMHgwNjYwLCAweDY4MjAsIDB4OTA4MiwgMHgwMDE5LCAweDE2NDAsCi0JMHg2ODI4LCAweDY5NDQsIDB4ODEwYywgMHg5MTAyLCAweDA2MTgsIDB4Njg0MCwgMHg5MDgyLCAweDAwMGYsCi0JMHgxMmY4LCAweDA4MGMsIDB4MTAyNywgMHgyOTAwLCAweDA1OTAsIDB4Njg0ZSwgMHgwMGU2LCAweDIwNzEsCi0JMHgxOTMxLCAweDAwYjYsIDB4MjA1OSwgMHgwMDAwLCAweDA4MGMsIDB4OGQzYywgMHgwMGJlLCAweDAwZWUsCi0JMHgwMWU4LCAweDA4MGMsIDB4OGE4NCwgMHgwODBjLCAweDhhZDMsIDB4MTE2MCwgMHg2ODU3LCAweDAwMDAsCi0JMHgwMGM2LCAweDZiMTAsIDB4MjA2MSwgMHgxYTY1LCAweDYzMGEsIDB4MDBjZSwgMHgwODA0LCAweDM1YjUsCi0JMHgwODA0LCAweDM1ZWEsIDB4MDgwYywgMHg4YWNjLCAweDAwZTYsIDB4MjA3MSwgMHgxOTMxLCAweDA4MGMsCi0JMHg4ZjAwLCAweDA4MGMsIDB4OGYwZiwgMHgwODBjLCAweDhkMjEsIDB4MDBlZSwgMHgyMDAxLCAweDE4OGEsCi0JMHgyMDRjLCAweDA4MGMsIDB4MTA0MCwgMHgyMDAxLCAweDE4OGEsIDB4MjAwMywgMHgwMDAwLCAweDA4MDQsCi0JMHgzNWU3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OTJiZiwgMHgwODBjLCAweDhhY2MsCi0JMHgwMTJlLCAweDA4MDQsIDB4MzViNSwgMHgwMDA2LCAweDA4MGMsIDB4NTdkNSwgMHhkMGNjLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwMDYsIDB4MDgwYywgMHg1N2Q5LCAweGQwYmMsIDB4MDAwZSwgMHgwMDA1LCAweDYxNzQsCi0JMHg3YTg0LCAweDYzMDAsIDB4ODJmZiwgMHgxMTE4LCAweDc5ODYsIDB4MDgwNCwgMHgzNWI1LCAweDgzZmYsCi0JMHgxOTA0LCAweDM1ZWEsIDB4MjAwMSwgMHhmZmYwLCAweDkyMDAsIDB4MWEwNCwgMHgzNWVhLCAweDIwMTksCi0JMHhmZmZmLCAweDYwNzgsIDB4OTMwMiwgMHg5MjAwLCAweDBhMDQsIDB4MzVlYSwgMHg3OTg2LCAweDYyNzYsCi0JMHgwODA0LCAweDM1YjUsIDB4MDgwYywgMHg1N2U5LCAweDE5MDQsIDB4MzVlNywgMHg3Yzg4LCAweDdkODQsCi0JMHg3ZTk4LCAweDdmOGMsIDB4MDgwYywgMHg0YmU0LCAweDA5MDQsIDB4MzVlNywgMHg5MDBlLCAweDkwMWUsCi0JMHg3MzI2LCAweDczMzIsIDB4YTg2MCwgMHgyMGU4LCAweDcwMzYsIDB4YTg1YywgMHg5MDgwLCAweDAwMDMsCi0JMHg3MDJhLCAweDIwYTAsIDB4OTFkOCwgMHgxMDAwLCAweDJiNWMsIDB4OGJmZiwgMHgwMTc4LCAweDA4MGMsCi0JMHg2YWEzLCAweDAxMTgsIDB4MDgwYywgMHg2YWFiLCAweDExNDgsIDB4MjBhOSwgMHgwMDAxLCAweGI4MTQsCi0JMHg0MDA0LCAweGI4MTAsIDB4NDAwNCwgMHg0MTA0LCAweDkzOTgsIDB4MDAwMywgMHg4MTA4LCAweDkxODIsCi0JMHgwODAwLCAweDAxMjAsIDB4OTM4NiwgMHgwMDNjLCAweDAxNzAsIDB4MGMyMCwgMHg4M2ZmLCAweDExNDgsCi0JMHg3MjI0LCAweDkwMGUsIDB4MjAwMSwgMHgwMDAzLCAweDA4MGMsIDB4OTM3NSwgMHgyMjA4LCAweDA4MDQsCi0JMHgzNWI1LCAweDcwMzMsIDB4MDAwMSwgMHg3MTIyLCAweDcwMjQsIDB4OTMwMCwgMHg3MDI2LCAweDIwNjEsCi0JMHgxOGI4LCAweDJjNDQsIDB4YTA2YiwgMHgwMDAwLCAweGEzN2EsIDB4NzAyOCwgMHhhMDc2LCAweDcwMzQsCi0JMHhhMDcyLCAweGE0OGUsIDB4YTU5MiwgMHhhNjk2LCAweGE3OWEsIDB4MDgwYywgMHgxMGY4LCAweDcwMDcsCi0JMHgwMDAyLCAweDcwMWYsIDB4NTE0YywgMHgwMDA1LCAweDcwMzAsIDB4OTAwNSwgMHgxMTc4LCAweDcxMjAsCi0JMHg3MDI4LCAweDIwYTAsIDB4OTAxZSwgMHg3MDM0LCAweDIwZTgsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsCi0JMHhhNDhjLCAweGE1OTAsIDB4YTY5NCwgMHhhNzk4LCAweDA4MDQsIDB4NTEwYSwgMHg3MjI0LCAweDkwMGUsCi0JMHgyMDAxLCAweDAwMDMsIDB4MDgwYywgMHg5Mzc1LCAweDIyMDgsIDB4MDgwNCwgMHgzNWI1LCAweDAwZjYsCi0JMHgwMGU2LCAweDA4MGMsIDB4NTdlOSwgMHgyMDA5LCAweDAwMDcsIDB4MTkwNCwgMHg1MWRmLCAweDIwNzEsCi0JMHgxODllLCAweDc0NWMsIDB4ODRmZiwgMHgyMDA5LCAweDAwMGUsIDB4MTkwNCwgMHg1MWRmLCAweGFjOWMsCi0JMHhhZDk4LCAweGFlYTQsIDB4YWZhMCwgMHgwMDk2LCAweDA4MGMsIDB4MTAyNywgMHgyMDA5LCAweDAwMDIsCi0JMHgwOTA0LCAweDUxZGYsIDB4MjkwMCwgMHg3MDVlLCAweDkwMGUsIDB4OTAxZSwgMHg3MzU2LCAweDczNjIsCi0JMHhhODYwLCAweDcwNjYsIDB4YTg1YywgMHg5MDgwLCAweDAwMDMsIDB4NzA1YSwgMHgyMGEwLCAweDkxZDgsCi0JMHgxMDAwLCAweDJiNWMsIDB4OGJmZiwgMHgwMTc4LCAweDA4MGMsIDB4NmFhMywgMHgwMTE4LCAweDA4MGMsCi0JMHg2YWFiLCAweDExNDgsIDB4YjgxNCwgMHgyMGE5LCAweDAwMDEsIDB4NDAwNCwgMHhiODEwLCAweDQwMDQsCi0JMHg0MTA0LCAweDkzOTgsIDB4MDAwMywgMHg4MTA4LCAweDkxODIsIDB4MDgwMCwgMHgwMTIwLCAweDkzODYsCi0JMHgwMDNjLCAweDAxZTgsIDB4MGMyMCwgMHg4M2ZmLCAweDExYzAsIDB4NzI1NCwgMHg5MDBlLCAweDIwMDEsCi0JMHgwMDAzLCAweDA4MGMsIDB4OTM3NSwgMHgyMjA4LCAweDAwOWUsIDB4YTg5NywgMHg0MDAwLCAweGE5OWEsCi0JMHg3MTVjLCAweDgxZmYsIDB4MDkwYywgMHgwZGM1LCAweDIxNDgsIDB4MDgwYywgMHgxMDQwLCAweDkwMDYsCi0JMHg3MDVlLCAweDkxOGQsIDB4MDAwMSwgMHgyMDA4LCAweDA0MTgsIDB4NzA2MywgMHgwMDAxLCAweDcxNTIsCi0JMHg3MDU0LCAweDkzMDAsIDB4NzA1NiwgMHgyMDYxLCAweDE4YjksIDB4MmM0NCwgMHhhMzdhLCAweDcwNTgsCi0JMHhhMDc2LCAweDcwNjQsIDB4YTA3MiwgMHhhNDhlLCAweGE1OTIsIDB4YTY5NiwgMHhhNzlhLCAweGEwOWYsCi0JMHg1MWViLCAweDAwMGUsIDB4YTBhMiwgMHgwODBjLCAweDEwZjgsIDB4OTAwNiwgMHgwMDQ4LCAweDAwOWUsCi0JMHhhODk3LCAweDQwMDUsIDB4YTk5YSwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsCi0JMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweGEwYTAsIDB4OTA0ZCwgMHgwOTBjLCAweDBkYzUsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTg5ZSwgMHhhMDZjLCAweDkwOGUsIDB4MDEwMCwgMHgwMTM4LCAweGE4N2IsCi0JMHgwMDMwLCAweGE4ODMsIDB4MDAwMCwgMHhhODk3LCAweDQwMDIsIDB4MDBkOCwgMHg3MDYwLCAweDkwMDUsCi0JMHgxMTU4LCAweDcxNTAsIDB4NzA1OCwgMHgyMGEwLCAweDkwMWUsIDB4NzA2NCwgMHgyMGU4LCAweGE0OGMsCi0JMHhhNTkwLCAweGE2OTQsIDB4YTc5OCwgMHgwNDI4LCAweGE4N2IsIDB4MDAwMCwgMHhhODgzLCAweDAwMDAsCi0JMHhhODk3LCAweDQwMDAsIDB4NzI1NCwgMHg5MDBlLCAweDIwMDEsIDB4MDAwMywgMHgwODBjLCAweDkzNzUsCi0JMHhhYTlhLCAweDcxNWMsIDB4ODFmZiwgMHgwOTBjLCAweDBkYzUsIDB4MjE0OCwgMHgwODBjLCAweDEwNDAsCi0JMHg3MDVmLCAweDAwMDAsIDB4YTBhMCwgMHgyMDQ4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAxMmUsIDB4YTA5ZiwgMHgwMDAwLCAweGEwYTMsIDB4MDAwMCwgMHgwMGVlLCAweDAwZmUsCi0JMHgwMDA1LCAweDkxZDgsIDB4MTAwMCwgMHgyYjVjLCAweDhiZmYsIDB4MDE3OCwgMHgwODBjLCAweDZhYTMsCi0JMHgwMTE4LCAweDA4MGMsIDB4NmFhYiwgMHgxMTQ4LCAweGI4MTQsIDB4MjBhOSwgMHgwMDAxLCAweDQwMDQsCi0JMHhiODEwLCAweDQwMDQsIDB4NDEwNCwgMHg5Mzk4LCAweDAwMDMsIDB4ODEwOCwgMHg5MTgyLCAweDA4MDAsCi0JMHgwMTIwLCAweDkzODYsIDB4MDAzYywgMHgwNTE4LCAweDBjMjAsIDB4ODNmZiwgMHgxMWYwLCAweDcxNTQsCi0JMHg4MTBjLCAweGE5OWEsIDB4YTg5NywgMHg0MDAwLCAweDcxNWMsIDB4ODFmZiwgMHgwOTBjLCAweDBkYzUsCi0JMHgyMTQ4LCAweDA4MGMsIDB4MTA0MCwgMHg5MDA2LCAweDcwNWUsIDB4OTE4ZCwgMHgwMDAxLCAweDIwMDgsCi0JMHhhMGEwLCAweDIwNDgsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDAxMmUsCi0JMHhhMDlmLCAweDAwMDAsIDB4YTBhMywgMHgwMDAwLCAweDAwNzAsIDB4NzA2MywgMHgwMDAxLCAweDcxNTIsCi0JMHg3MDU0LCAweDkzMDAsIDB4NzA1NiwgMHhhMzdhLCAweGE0OGUsIDB4YTU5MiwgMHhhNjk2LCAweGE3OWEsCi0JMHgwODBjLCAweDEwZjgsIDB4OTAwNiwgMHgwMGVlLCAweDAwMDUsIDB4MDA5NiwgMHhhODhjLCAweDkwYmUsCi0JMHg3MDAwLCAweDAxNDgsIDB4OTBiZSwgMHg3MTAwLCAweDAxMzAsIDB4OTBiZSwgMHg3MjAwLCAweDAxMTgsCi0JMHgwMDllLCAweDA4MDQsIDB4MzVlYSwgMHhhODg0LCAweGE5ODgsIDB4MDgwYywgMHgyODczLCAweDE1MTgsCi0JMHgwODBjLCAweDY2YjksIDB4MTUwMCwgMHg3MTI2LCAweGJlMTIsIDB4YmQxNiwgMHhhZTdjLCAweDA4MGMsCi0JMHg0YmU0LCAweDAxYzgsIDB4MDgwYywgMHg0YmU0LCAweDAxYjAsIDB4MDA5ZSwgMHhhODY3LCAweDAwMDAsCi0JMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHhhODIzLCAweDAwMDAsIDB4YTgwNCwgMHgyMDQ4LCAweDA4MGMsCi0JMHhkMjg0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzVlNywgMHg3MDA3LCAweDAwMDMsCi0JMHg3MDFmLCAweDUyYjgsIDB4MDAwNSwgMHgwMDllLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsCi0JMHg3MTI0LCAweDA4MGMsIDB4MzM0YywgMHhhODIwLCAweDkwODYsIDB4ODAwMSwgMHgxMTIwLCAweDIwMDksCi0JMHgwMDA0LCAweDA4MDQsIDB4MzVlNywgMHgyOTAwLCAweDcwMjIsIDB4YTgwNCwgMHgwMDk2LCAweDIwNDgsCi0JMHg4OTA2LCAweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDAwOWUsCi0JMHg5MDgwLCAweDAwMDIsIDB4MDA3NiwgMHgwMDA2LCAweDIwOTgsIDB4MjBhMCwgMHgyN2UwLCAweDI3ZTgsCi0JMHgyMGE5LCAweDAwMmEsIDB4MDgwYywgMHgwZjhiLCAweGFhNmMsIDB4YWI3MCwgMHhhYzc0LCAweGFkNzgsCi0JMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwgMHhhMDZiLCAweDAwMDAsIDB4YWU2NCwgMHhhZjhjLCAweDk3YzYsCi0JMHg3MDAwLCAweDAxMTgsIDB4OTdjNiwgMHg3MTAwLCAweDExNDgsIDB4OTZjMiwgMHgwMDA0LCAweDA2MDAsCi0JMHgyMDA5LCAweDAwMDQsIDB4MDAwZSwgMHgwMDdlLCAweDA4MDQsIDB4NGMzMCwgMHg5N2M2LCAweDcyMDAsCi0JMHgxMWI4LCAweDk2YzIsIDB4MDA1NCwgMHgwMmEwLCAweDAwMGUsIDB4MDA3ZSwgMHgyMDYxLCAweDE4YjgsCi0JMHgyYzQ0LCAweGEwNzYsIDB4YTc3MiwgMHhhMDdiLCAweDAwMmEsIDB4YTI4ZSwgMHhhMzkyLCAweGE0OTYsCi0JMHhhNTlhLCAweDA4MGMsIDB4MTBmOCwgMHg3MDA3LCAweDAwMDIsIDB4NzAxZiwgMHg1MzE0LCAweDAwMDUsCi0JMHgwMDBlLCAweDAwN2UsIDB4MDgwNCwgMHgzNWVhLCAweDcwMjAsIDB4MjA0OCwgMHhhODA0LCAweDIwNDgsCi0JMHhhODA0LCAweDIwNDgsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsCi0JMHhmZmMwLCAweDkwODAsIDB4MDAwMiwgMHgyMDk4LCAweDIwYTAsIDB4MjdlMCwgMHgyN2U4LCAweDIwYTksCi0JMHgwMDJhLCAweDA4MGMsIDB4MGY4YiwgMHgyMTAwLCAweDIyMzgsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsCi0JMHhhMjhjLCAweGEzOTAsIDB4YTQ5NCwgMHhhNTk4LCAweDIwMDksIDB4MDAyYSwgMHgwODA0LCAweDRjMzAsCi0JMHg4MWZmLCAweDE5MDQsIDB4MzVlNywgMHg3OThjLCAweDIwMDEsIDB4MTk3ZSwgMHg5MThjLCAweDgwMDAsCi0JMHgyMTAyLCAweDA4MGMsIDB4NGJmYiwgMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg2YWEzLCAweDAxMjAsCi0JMHgwODBjLCAweDZhYWIsIDB4MTkwNCwgMHgzNWVhLCAweDA4MGMsIDB4NjdlYiwgMHgwOTA0LCAweDM1ZTcsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDY4YjEsIDB4MDEyZSwgMHgwOTA0LCAweDM1ZTcsCi0JMHgyMDAxLCAweDE5N2UsIDB4MjAwNCwgMHhkMGZjLCAweDE5MDQsIDB4MzViNSwgMHgwODA0LCAweDQ2MGMsCi0JMHhhOWEwLCAweDIwMDEsIDB4MTk3ZSwgMHg5MThjLCAweDgwMDAsIDB4YzE4ZCwgMHgyMTAyLCAweDA4MGMsCi0JMHg0YzA4LCAweDAxYTAsIDB4MDgwYywgMHg2YWEzLCAweDAxMTgsIDB4MDgwYywgMHg2YWFiLCAweDExNzAsCi0JMHgwODBjLCAweDY3ZWIsIDB4MjAwOSwgMHgwMDAyLCAweDAxMjgsIDB4MDgwYywgMHg2OGIxLCAweDExNzAsCi0JMHgyMDA5LCAweDAwMDMsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsIDB4MDAxMCwgMHhhODk3LCAweDQwMDYsCi0JMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsIDB4MDAwNSwgMHhhODk3LCAweDQwMDAsCi0JMHgyMDAxLCAweDE5N2UsIDB4MjAwNCwgMHhkMGZjLCAweDExMjgsIDB4MDgwYywgMHg1N2RkLCAweDAxMTAsCi0JMHg5MDA2LCAweDAwMTgsIDB4OTAwZSwgMHg5MDg1LCAweDAwMDEsIDB4MjAwMSwgMHgwMDAwLCAweDAwMDUsCi0JMHg3OGE4LCAweGQwOGMsIDB4MTExOCwgMHhkMDg0LCAweDA5MDQsIDB4NDU4MSwgMHgwODBjLCAweDRjMTcsCi0JMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg0YmU0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4NmFhMywgMHgwMTMwLCAweDkwOGUsIDB4MDAwNCwgMHgwMTE4LCAweDkwOGUsCi0JMHgwMDA1LCAweDE1YTAsIDB4NzhhOCwgMHhkMDhjLCAweDAxMjAsIDB4YjgwMCwgMHhjMDhjLCAweGI4MDIsCi0JMHgwMDI4LCAweDA4MGMsIDB4NTdkNSwgMHhkMGI0LCAweDA5MDQsIDB4NDViYiwgMHg3ODg0LCAweDkwOGUsCi0JMHgwMDdlLCAweDA5MDQsIDB4NDViYiwgMHg5MDhlLCAweDAwN2YsIDB4MDkwNCwgMHg0NWJiLCAweDkwOGUsCi0JMHgwMDgwLCAweDA5MDQsIDB4NDViYiwgMHhiODAwLCAweGQwOGMsIDB4MTkwNCwgMHg0NWJiLCAweGE4NjcsCi0JMHgwMDAwLCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDA4MGMsIDB4ZDJhMywgMHgxMTIwLCAweDIwMDksCi0JMHgwMDAzLCAweDA4MDQsIDB4MzVlNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwgMHg1M2UwLCAweDAwMDUsCi0JMHgwODBjLCAweDRjMTcsIDB4MDkwNCwgMHgzNWVhLCAweDA4MDQsIDB4NDViYiwgMHgwODBjLCAweDMzYTUsCi0JMHgwMTA4LCAweDAwMDUsIDB4MjAwOSwgMHgxODM0LCAweDIxMGMsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksCi0JMHgwMDAxLCAweDA4MDQsIDB4MzVlNywgMHgwODBjLCAweDU3ZTksIDB4MDEyMCwgMHgyMDA5LCAweDAwMDcsCi0JMHgwODA0LCAweDM1ZTcsIDB4MDgwYywgMHg2YTliLCAweDAxMjAsIDB4MjAwOSwgMHgwMDA4LCAweDA4MDQsCi0JMHgzNWU3LCAweGI4OWMsIDB4ZDBhNCwgMHgxMTE4LCAweGQwYWMsIDB4MTkwNCwgMHg0NWJiLCAweDkwMDYsCi0JMHhhODY2LCAweGE4MzIsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4MDgwYywgMHhkMzAyLCAweDExMjAsCi0JMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwgMHgzNWU3LCAweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDU0MTksCi0JMHgwMDA1LCAweGE4MzAsIDB4OTA4NiwgMHgwMTAwLCAweDExMjAsIDB4MjAwOSwgMHgwMDA0LCAweDA4MDQsCi0JMHg1NzI5LCAweDA4MGMsIDB4NGMxNywgMHgwOTA0LCAweDM1ZWEsIDB4MDgwNCwgMHg1M2IyLCAweDgxZmYsCi0JMHgyMDA5LCAweDAwMDEsIDB4MTkwNCwgMHgzNWU3LCAweDA4MGMsIDB4NTdlOSwgMHgyMDA5LCAweDAwMDcsCi0JMHgxOTA0LCAweDM1ZTcsIDB4MDgwYywgMHg2YTliLCAweDAxMjAsIDB4MjAwOSwgMHgwMDA4LCAweDA4MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4NGMxNywgMHgwOTA0LCAweDM1ZWEsIDB4MDgwYywgMHg2YWEzLCAweDIwMDksCi0JMHgwMDA5LCAweDE5MDQsIDB4MzVlNywgMHgwODBjLCAweDRiZTQsIDB4MjAwOSwgMHgwMDAyLCAweDA5MDQsCi0JMHgzNWU3LCAweDkwMDYsIDB4YTg2NiwgMHhhODMyLCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDc5ODgsCi0JMHhhOTVhLCAweDkxOTQsIDB4ZmQwMCwgMHg5MThjLCAweDAwZmYsIDB4OTAwNiwgMHg4MmZmLCAweDExMjgsCi0JMHhjMGVkLCAweGE5NTIsIDB4Nzk4YywgMHhhOTU2LCAweDAwMzgsIDB4OTI4ZSwgMHgwMTAwLCAweDE5MDQsCi0JMHgzNWVhLCAweGMwZTUsIDB4YTk1MiwgMHhhOTU2LCAweGE4M2UsIDB4MDgwYywgMHhkNTU1LCAweDIwMDksCi0JMHgwMDAzLCAweDA5MDQsIDB4MzVlNywgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwgMHg1NDcwLCAweDAwMDUsCi0JMHhhODMwLCAweDkwODYsIDB4MDEwMCwgMHgyMDA5LCAweDAwMDQsIDB4MDkwNCwgMHgzNWU3LCAweDA4MDQsCi0JMHgzNWI1LCAweDdhYTgsIDB4OTI4NCwgMHhjMDAwLCAweDAxNDgsIDB4ZDJlYywgMHgwMWEwLCAweDA4MGMsCi0JMHg1N2U5LCAweDExODgsIDB4MjAwOSwgMHgwMDE0LCAweDA4MDQsIDB4MzVlNywgMHhkMmRjLCAweDE1NzgsCi0JMHg4MWZmLCAweDIwMDksIDB4MDAwMSwgMHgxOTA0LCAweDM1ZTcsIDB4MDgwYywgMHg1N2U5LCAweDIwMDksCi0JMHgwMDA3LCAweDE5MDQsIDB4MzVlNywgMHhkMmY0LCAweDAxMzgsIDB4OTI4NCwgMHg1MDAwLCAweGMwZDUsCi0JMHgwODBjLCAweDU3YWYsIDB4MDgwNCwgMHgzNWI1LCAweGQyZmMsIDB4MDE2MCwgMHgwODBjLCAweDRjMTcsCi0JMHgwOTA0LCAweDM1ZWEsIDB4Nzk4NCwgMHg5Mjg0LCAweDkwMDAsIDB4YzBkNSwgMHgwODBjLCAweDU3ODQsCi0JMHgwODA0LCAweDM1YjUsIDB4MDgwYywgMHg0YzE3LCAweDA5MDQsIDB4MzVlYSwgMHhiODA0LCAweDkwODQsCi0JMHgwMGZmLCAweDkwODYsIDB4MDAwNiwgMHgyMDA5LCAweDAwMDksIDB4MTkwNCwgMHg1NTVmLCAweDA4MGMsCi0JMHg0YmU0LCAweDIwMDksIDB4MDAwMiwgMHgwOTA0LCAweDU1NWYsIDB4YTg1YywgMHg5MDgwLCAweDAwMWIsCi0JMHhhZjYwLCAweDIwMDksIDB4MDAwOCwgMHg3YThjLCAweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDA4MGMsCi0JMHg0YzJkLCAweDcwMWYsIDB4NTRjYywgMHgwMDA1LCAweGE4NmMsIDB4OTA4NiwgMHgwNTAwLCAweDExMzgsCi0JMHhhODcwLCAweDkwMDUsIDB4MTEyMCwgMHhhODc0LCAweDkwODQsIDB4ZmYwMCwgMHgwMTEwLCAweDE5MDQsCi0JMHgzNWVhLCAweGE4NjYsIDB4YTgzMiwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHgwODBjLCAweDRjMTcsCi0JMHgxMTEwLCAweDA4MDQsIDB4MzVlYSwgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywgMHhkNWMxLCAweDIwMDksCi0JMHgwMDAzLCAweDA5MDQsIDB4NTU1ZiwgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwgMHg1NGYwLCAweDAwMDUsCi0JMHhhODMwLCAweDkwODYsIDB4MDEwMCwgMHgyMDA5LCAweDAwMDQsIDB4MDkwNCwgMHg1NTVmLCAweDc5ODQsCi0JMHg3YWE4LCAweDkyODQsIDB4MTAwMCwgMHhjMGQ1LCAweDA4MGMsIDB4NTc4NCwgMHgwODA0LCAweDM1YjUsCi0JMHgwMGM2LCAweGFhYjAsIDB4OTI4NCwgMHhjMDAwLCAweDAxNDgsIDB4ZDJlYywgMHgwMTcwLCAweDA4MGMsCi0JMHg1N2U5LCAweDExNTgsIDB4MjAwOSwgMHgwMDE0LCAweDA4MDQsIDB4NTU0ZSwgMHgyMDYxLCAweDE4MDAsCi0JMHgwODBjLCAweDU3ZTksIDB4MjAwOSwgMHgwMDA3LCAweDE1YzgsIDB4ZDJmNCwgMHgwMTMwLCAweDkyODQsCi0JMHg1MDAwLCAweGMwZDUsIDB4MDgwYywgMHg1N2FmLCAweDAwNTgsIDB4ZDJmYywgMHgwMTgwLCAweDA4MGMsCi0JMHg0YzE1LCAweDA1OTAsIDB4YTk5OCwgMHg5Mjg0LCAweDkwMDAsIDB4YzBkNSwgMHgwODBjLCAweDU3ODQsCi0JMHhhODdiLCAweDAwMDAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsIDB4NDAwMCwgMHgwNDM4LCAweDA4MGMsCi0JMHg0YzE1LCAweDA1MTAsIDB4MDgwYywgMHg2YWEzLCAweDIwMDksIDB4MDAwOSwgMHgxMWI4LCAweGE4YzQsCi0JMHg5MDg2LCAweDA1MDAsIDB4MTFjOCwgMHhhOGM4LCAweDkwMDUsIDB4MTFiMCwgMHhhOGNjLCAweDkwODQsCi0JMHhmZjAwLCAweDExOTAsIDB4MDgwYywgMHg0YzE1LCAweDExMDgsIDB4MDA3MCwgMHgyMDA5LCAweDAwNGIsCi0JMHgwODBjLCAweGQ1YzEsIDB4MjAwOSwgMHgwMDAzLCAweDAxMDgsIDB4MDA3OCwgMHgwNDMxLCAweDE5YzAsCi0JMHhhODk3LCAweDQwMDUsIDB4YTk5YSwgMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsCi0JMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwgMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2UwLCAweDdhYTgsCi0JMHhkMmRjLCAweDA5MDQsIDB4MzVlNywgMHgwMDE2LCAweDc5ODQsIDB4OTI4NCwgMHgxMDAwLCAweGMwZmQsCi0JMHgwODBjLCAweDU3ODQsIDB4MDAxZSwgMHgxOTA0LCAweDM1ZTcsIDB4MDgwNCwgMHgzNWI1LCAweDAwZjYsCi0JMHgyZDc4LCAweGFhYjAsIDB4MDAyMSwgMHgwMGZlLCAweDAwMDUsIDB4YWFiMCwgMHhjMmQ1LCAweGQyZGMsCi0JMHgwMTUwLCAweDAwMTYsIDB4YTk5OCwgMHg5Mjg0LCAweDE0MDAsIDB4YzBmZCwgMHgwODBjLCAweDU3ODQsCi0JMHgwMDFlLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsCi0JMHgwODA0LCAweDM1ZTcsIDB4MDgwYywgMHg1N2U5LCAweDAxMjAsIDB4MjAwOSwgMHgwMDA3LCAweDA4MDQsCi0JMHgzNWU3LCAweDc5ODQsIDB4N2VhOCwgMHg5NmI0LCAweDAwZmYsIDB4MDgwYywgMHg2NzI0LCAweDE5MDQsCi0JMHgzNWVhLCAweDkxODYsIDB4MDA3ZiwgMHgwMTM4LCAweDA4MGMsIDB4NmFhMywgMHgwMTIwLCAweDIwMDksCi0JMHgwMDA5LCAweDA4MDQsIDB4MzVlNywgMHgwODBjLCAweDRiZTQsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsCi0JMHgwODA0LCAweDM1ZTcsIDB4YTg2NywgMHgwMDAwLCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDIwMDEsCi0JMHgwMTAwLCAweDgwMDcsIDB4YTgwYSwgMHgwODBjLCAweGQyYmQsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsCi0JMHgwODA0LCAweDM1ZTcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsIDB4NTViZiwgMHgwMDA1LCAweGE4MDgsCi0JMHg4MDA3LCAweDkwODYsIDB4MDEwMCwgMHgxMTIwLCAweDIwMDksIDB4MDAwNCwgMHgwODA0LCAweDM1ZTcsCi0JMHhhOGUwLCAweGE4NjYsIDB4YTgxMCwgMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHg4MDBjLCAweGE4MTQsCi0JMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHg4MDA0LCAweDkwODAsIDB4MDAwMiwgMHg5MTA4LCAweDg5MDYsCi0JMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMDQsCi0JMHg3YThjLCAweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDA4MDQsIDB4NGMzMCwgMHgwODBjLCAweDRiZTQsCi0JMHgxMTIwLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM1ZTcsIDB4Nzk4NCwgMHg5MTk0LCAweGZmMDAsCi0JMHg5MThjLCAweDAwZmYsIDB4ODIxNywgMHg4MmZmLCAweDExMTgsIDB4NzAyMywgMHgxOWI0LCAweDAwNDAsCi0JMHg5MmM2LCAweDAwMDEsIDB4MTExOCwgMHg3MDIzLCAweDE5Y2UsIDB4MDAxMCwgMHgwODA0LCAweDM1ZWEsCi0JMHgyMDA5LCAweDAwMWEsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDE5LCAweGFmNjAsIDB4MDgwYywgMHg0YzJkLCAweDcwMWYsIDB4NTYwZiwgMHgwMDA1LCAweDIwMDEsCi0JMHgxODJlLCAweDIwMDMsIDB4MDAwMSwgMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHgyMDk4LCAweGE4NjAsCi0JMHgyMGUwLCAweDIwYTksIDB4MDAxYSwgMHg3MDIwLCAweDIwYTAsIDB4MjBlOSwgMHgwMDAxLCAweDQwMDMsCi0JMHgwODA0LCAweDM1YjUsIDB4MDgwYywgMHg0YmU0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsCi0JMHgzNWU3LCAweDc5ODQsIDB4OTE5NCwgMHhmZjAwLCAweDkxOGMsIDB4MDBmZiwgMHg4MjE3LCAweDgyZmYsCi0JMHgxMTE4LCAweDIwOTksIDB4MTliNCwgMHgwMDQwLCAweDkyYzYsIDB4MDAwMSwgMHgxMTE4LCAweDIwOTksCi0JMHgxOWNlLCAweDAwMTAsIDB4MDgwNCwgMHgzNWVhLCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDIwYTAsCi0JMHhhODYwLCAweDIwZTgsIDB4MjBhOSwgMHgwMDFhLCAweDIwZTEsIDB4MDAwMSwgMHg0MDAzLCAweDIwMDksCi0JMHgwMDFhLCAweDdhOGMsIDB4N2I4OCwgMHg3YzljLCAweDdkOTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMTksCi0JMHhhZjYwLCAweDA4MDQsIDB4NGMzMCwgMHg3ODg0LCAweDkwOGEsIDB4MTAwMCwgMHgxYTA0LCAweDM1ZWEsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg4MDAzLCAweDgwMGIsIDB4ODEwYiwgMHg5MTA4LCAweDAwYzYsCi0JMHgyMDYxLCAweDE5ZmIsIDB4NjE0YSwgMHgwMGNlLCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDAwYzYsCi0JMHgwODBjLCAweDc2MzcsIDB4MTE2MCwgMHgwODBjLCAweDc5MzIsIDB4MDgwYywgMHg2MTJlLCAweDkwODUsCi0JMHgwMDAxLCAweDA4MGMsIDB4NzY3YiwgMHgwODBjLCAweDc1NjMsIDB4MDgwYywgMHgwZGM1LCAweDIwNjEsCi0JMHgxODAwLCAweDYwMzAsIDB4YzA5ZCwgMHg2MDMyLCAweDA4MGMsIDB4NWZlZCwgMHgwMGNlLCAweDAwMDUsCi0JMHgwMGM2LCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwOGUsIDB4MDAwMCwgMHgwOTA0LCAweDM1ZTcsCi0JMHg3ODg0LCAweDkwMDUsIDB4MDE4OCwgMHg3ODg4LCAweDIwNjEsIDB4MTk5YywgMHgyYzBjLCAweDIwNjIsCi0JMHgwODBjLCAweDJjNDksIDB4MDFhMCwgMHgwODBjLCAweDJjNTEsIDB4MDE4OCwgMHgwODBjLCAweDJjNTksCi0JMHgwMTcwLCAweDIxNjIsIDB4MDgwNCwgMHgzNWVhLCAweDIwNjEsIDB4MDEwMCwgMHg2MDM4LCAweDkwODYsCi0JMHgwMDA3LCAweDExMTgsIDB4MjAwOSwgMHgwMDAxLCAweDAwMTAsIDB4MjAwOSwgMHgwMDAwLCAweDc4ODQsCi0JMHg5MDg2LCAweDAwMDIsIDB4MTU2OCwgMHgyMDYxLCAweDAxMDAsIDB4NjAyOCwgMHhjMDljLCAweDYwMmEsCi0JMHgwMDI2LCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweGFhYmYsIDB4MjAxMSwgMHgwMDAyLCAweDA4MGMsCi0JMHhhYWM5LCAweDAwMmUsIDB4MDgwYywgMHhhOWQzLCAweDAwMzYsIDB4OTAxZSwgMHgwODBjLCAweGFhNDksCi0JMHgwMDNlLCAweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweGYwN2YsIDB4MDgwYywgMHhmMDlhLCAweDkwODUsCi0JMHgwMDAxLCAweDA4MGMsIDB4NzY3YiwgMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDAxLCAweDE4MDAsCi0JMHgyMDAzLCAweDAwMDQsIDB4MjAwMSwgMHgxOWE4LCAweDIwMDMsIDB4MDAwMCwgMHg2MDI3LCAweDAwMDgsCi0JMHgwMGNlLCAweDA4MDQsIDB4MzViNSwgMHg4MWZmLCAweDAxMjAsIDB4MjAwOSwgMHgwMDAxLCAweDA4MDQsCi0JMHgzNWU3LCAweDA4MGMsIDB4NTdlOSwgMHgwMTIwLCAweDIwMDksIDB4MDAwNywgMHgwODA0LCAweDM1ZTcsCi0JMHg3OTg0LCAweDdlYTgsIDB4OTZiNCwgMHgwMGZmLCAweDA4MGMsIDB4NjcyNCwgMHgxOTA0LCAweDM1ZWEsCi0JMHg5MTg2LCAweDAwN2YsIDB4MDEzOCwgMHgwODBjLCAweDZhYTMsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDksCi0JMHgwODA0LCAweDM1ZTcsIDB4MDgwYywgMHg0YmU0LCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsCi0JMHgzNWU3LCAweGE4NjcsIDB4MDAwMCwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHgwODBjLCAweGQyYzAsCi0JMHgxMTIwLCAweDIwMDksIDB4MDAwMywgMHgwODA0LCAweDM1ZTcsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsCi0JMHg1NzEyLCAweDAwMDUsIDB4YTgzMCwgMHg5MDg2LCAweDAxMDAsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDQsCi0JMHgwODA0LCAweDM1ZTcsIDB4YThlMCwgMHhhODY2LCAweGE4MzQsIDB4ODAwNywgMHg4MDBjLCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMGMsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHhhZjYwLCAweDA4MDQsCi0JMHg0YzMwLCAweGE4OTgsIDB4OTA4NiwgMHgwMDBkLCAweDE5MDQsIDB4MzVlNywgMHgyMDIxLCAweDQwMDUsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwZTA0LCAweDU3MzYsIDB4MDAxMCwgMHgwMTJlLCAweDBjYzAsCi0JMHg3YzM2LCAweDk0ODYsIDB4NDAwMCwgMHgwMTE4LCAweDc4MzMsIDB4MDAxMSwgMHgwMDEwLCAweDc4MzMsCi0JMHgwMDEwLCAweDc4ODMsIDB4NDAwNSwgMHhhOTk4LCAweDc5ODYsIDB4YTlhNCwgMHg3OTlhLCAweGE5YTgsCi0JMHg3OTllLCAweDA4MGMsIDB4NGMyMCwgMHgyMDkxLCAweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsCi0JMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHg3MDA3LCAweDAwMDEsIDB4MjA5MSwgMHg1MDAwLCAweDcwMGYsCi0JMHgwMDAwLCAweDAxMmUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMGM2LCAweDIwNjEsCi0JMHgxOWZiLCAweDc5ODQsIDB4NjE1YSwgMHg2MTU2LCAweDYwNWYsIDB4MDAwMCwgMHg2MDUzLCAweDAwMDksCi0JMHg3ODk4LCAweDYwNzIsIDB4Nzg5YywgMHg2MDZlLCAweDc4ODgsIDB4NjA2YSwgMHg3ODhjLCAweDYwNjYsCi0JMHgyMDAxLCAweDFhMGIsIDB4MjA0NCwgMHgyMDAxLCAweDFhMTIsIDB4YTA3NiwgMHhhMDYwLCAweGEwNzIsCi0JMHhhMDdiLCAweDAwMDEsIDB4YTA3ZiwgMHgwMDAyLCAweGEwNmIsIDB4MDAwMCwgMHhhMDlmLCAweDAwMDAsCi0JMHgwMGNlLCAweDAxMmUsIDB4MDgwNCwgMHgzNWI1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYjYsCi0JMHgwMGM2LCAweDkwZTQsIDB4YzAwMCwgMHgwMTY4LCAweDAwMDYsIDB4ZDBkNCwgMHgwMTMwLCAweDAwMzYsCi0JMHgyMDE5LCAweDAwMjksIDB4MDgwYywgMHgzMzZhLCAweDAwM2UsIDB4MDgwYywgMHhkMTI1LCAweDAwMGUsCi0JMHgxMTk4LCAweGQwZTQsIDB4MDE2MCwgMHg5MTgwLCAweDEwMDAsIDB4MjAwNCwgMHg5MDVkLCAweDAxNjAsCi0JMHgwODBjLCAweDYxNDgsIDB4MDgwYywgMHhiMjNkLCAweDAxMTAsIDB4YjgxNywgMHgwMDAwLCAweDkwMDYsCi0JMHgwMGNlLCAweDAwYmUsIDB4MDEyZSwgMHgwMDA1LCAweDkwODUsIDB4MDAwMSwgMHgwY2M4LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDE1NiwgMHgyMDEwLCAweDkwMGUsIDB4MjBhOSwgMHgwODAwLCAweDAwMTYsCi0JMHg5MTgwLCAweDEwMDAsIDB4MjAwNCwgMHg5MDA1LCAweDAxODgsIDB4OTE4NiwgMHgwMDdlLCAweDAxNzAsCi0JMHg5MTg2LCAweDAwN2YsIDB4MDE1OCwgMHg5MTg2LCAweDAwODAsIDB4MDE0MCwgMHg5MTg2LCAweDAwZmYsCi0JMHgwMTI4LCAweDAwMjYsIDB4MjIwMCwgMHgwODBjLCAweDU3ODQsIDB4MDAyZSwgMHgwMDFlLCAweDgxMDgsCi0JMHgxZjA0LCAweDU3YjcsIDB4MDE1ZSwgMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwgMHgxODQ4LCAweDIwMDQsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTg2NywgMHgyMDA0LCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDE4MTAsCi0JMHgyMDA0LCAweGQwZDQsIDB4MDAwZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgwZSwgMHgyMDA0LCAweGQwYjQsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwODYsIDB4MDAwMywgMHgwMDA1LCAweDAwMTYsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTg5ZSwgMHg3MTA4LCAweDkxMGQsIDB4NzEwYSwgMHgwMGVlLCAweDAwMWUsCi0JMHgwMDA1LCAweDc5YTQsIDB4ODFmZiwgMHgwOTA0LCAweDM1ZWEsIDB4OTE4MiwgMHgwMDgxLCAweDFhMDQsCi0JMHgzNWVhLCAweDgxMGMsIDB4MDAxNiwgMHgwODBjLCAweDRiZTQsIDB4MDE3MCwgMHgwODBjLCAweDBmMTYsCi0JMHgyMTAwLCAweDIyMzgsIDB4N2Q4NCwgMHg3Yzg4LCAweDdiOGMsIDB4N2E5MCwgMHgwMDFlLCAweDA4MGMsCi0JMHg0YzJkLCAweDcwMWYsIDB4NTgxOSwgMHgwMDA1LCAweDAwMWUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsCi0JMHgzNWU3LCAweDIwNzksIDB4MDAwMCwgMHg3ZDk0LCAweDdjOTgsIDB4N2JhOCwgMHg3YWFjLCAweDc5YTQsCi0JMHg4MTBjLCAweDIwNjEsIDB4MThiOCwgMHgyYzQ0LCAweGE3NzAsIDB4YTA3NCwgMHgyMDcxLCAweDE4OWUsCi0JMHgwODBjLCAweDRjMzAsIDB4NzAxZiwgMHg1ODJkLCAweDAwMDUsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsCi0JMHgwMDE2LCAweDAwMjYsIDB4YTI3MCwgMHhhMTc0LCAweDA4MGMsIDB4MGYxZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwODBjLCAweDBmY2IsIDB4OTAwNiwgMHhhODAyLCAweGE4MDYsIDB4MDgwNCwgMHgzNWI1LCAweDAxMjYsCi0JMHgwMTU2LCAweDAxMzYsIDB4MDE0NiwgMHgwMWM2LCAweDAxZDYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsCi0JMHgwMGY2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAyMDAsIDB4MjA3MSwgMHgxODAwLCAweDYwNDQsCi0JMHhkMGE0LCAweDExZTgsIDB4ZDA4NCwgMHgwMTE4LCAweDA4MGMsIDB4NTllZCwgMHgwMDY4LCAweGQwOGMsCi0JMHgwMTE4LCAweDA4MGMsIDB4NThmNiwgMHgwMDQwLCAweGQwOTQsIDB4MDExOCwgMHgwODBjLCAweDU4YzYsCi0JMHgwMDE4LCAweGQwOWMsIDB4MDEwOCwgMHgwMDk5LCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsCi0JMHgwMWRlLCAweDAxY2UsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDEyZSwgMHgwMDA1LCAweDAwMTYsCi0JMHg2MTI4LCAweGQxOWMsIDB4MTExMCwgMHhjMTlkLCAweDYxMmEsIDB4MDAxZSwgMHgwYzY4LCAweDcwMzAsCi0JMHhkMDljLCAweDExMjAsIDB4NjAwNCwgMHg5MDg1LCAweDAwMDIsIDB4NjAwNiwgMHg3MDk4LCAweDkwMDUsCi0JMHgwMTIwLCAweDcwOWIsIDB4MDAwMCwgMHg3MDkzLCAweDAwMDAsIDB4NjI0YywgMHg5Mjg2LCAweGYwZjAsCi0JMHgxMTUwLCAweDYwNDgsIDB4OTA4NiwgMHhmMGYwLCAweDAxMzAsIDB4NjI0YSwgMHg2MDQzLCAweDAwOTAsCi0JMHg2MDQzLCAweDAwMTAsIDB4MDQ5MCwgMHg5Mjk0LCAweGZmMDAsIDB4OTI5NiwgMHhmNzAwLCAweDAxNzgsCi0JMHg3MTM4LCAweGQxYTQsIDB4MTE2MCwgMHg2MjQwLCAweDkyOTUsIDB4MDEwMCwgMHg2MjQyLCAweDkyOTQsCi0JMHgwMDEwLCAweDAxMjgsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NjBhYSwgMHgwMGYwLCAweDYwNDAsCi0JMHg5MDg0LCAweDAwMTAsIDB4OTA4NSwgMHgwMTQwLCAweDYwNDIsIDB4NjA0MywgMHgwMDAwLCAweDcwODcsCi0JMHgwMDAwLCAweDcwYTMsIDB4MDAwMSwgMHg3MGM3LCAweDAwMDAsIDB4NzBkZiwgMHgwMDAwLCAweDIwMDksCi0JMHgxYzgwLCAweDIwMGIsIDB4MDAwMCwgMHg3MDk3LCAweDAwMDAsIDB4NzA4YiwgMHgwMDBmLCAweDIwMDksCi0JMHgwMDBmLCAweDIwMTEsIDB4NWY5MCwgMHgwODBjLCAweDg4ZDUsIDB4MDAwNSwgMHgyMDAxLCAweDE4NjksCi0JMHgyMDA0LCAweGQwOGMsIDB4MDExMCwgMHg3MDVmLCAweGZmZmYsIDB4NzA4OCwgMHg5MDA1LCAweDE1MjgsCi0JMHgyMDExLCAweDVmOTAsIDB4MDgwYywgMHg4ODNkLCAweDYwNDAsIDB4OTA5NCwgMHgwMDEwLCAweDkyODUsCi0JMHgwMDIwLCAweDYwNDIsIDB4MjBhOSwgMHgwMGM4LCAweDYwNDQsIDB4ZDA4YywgMHgxMTY4LCAweDFmMDQsCi0JMHg1OGRjLCAweDYyNDIsIDB4NzA5YiwgMHgwMDAwLCAweDYwNDAsIDB4OTA5NCwgMHgwMDEwLCAweDkyODUsCi0JMHgwMDgwLCAweDYwNDIsIDB4NjI0MiwgMHgwMDQ4LCAweDYyNDIsIDB4NzA5YiwgMHgwMDAwLCAweDcwOGYsCi0JMHgwMDAwLCAweDkwMDYsIDB4MDgwYywgMHg2MTMzLCAweDAwMDAsIDB4MDAwNSwgMHg3MDhjLCAweDkwOGEsCi0JMHgwMDAzLCAweDFhMGMsIDB4MGRjNSwgMHgwMDBiLCAweDAwMDUsIDB4NTkwMCwgMHg1OTUxLCAweDU5ZWMsCi0JMHgwMGY2LCAweDAwMTYsIDB4NjkwMCwgMHg5MThjLCAweDA4MDAsIDB4NzA4ZiwgMHgwMDAxLCAweDIwMDEsCi0JMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwgMHg2ODAzLCAweDAwZmMsIDB4MjBhOSwgMHgwMDA0LCAweDY4MDAsCi0JMHg5MDg0LCAweDAwZmMsIDB4MDEyMCwgMHgxZjA0LCAweDU5MGYsIDB4MDgwYywgMHgwZGM1LCAweDY4YTAsCi0JMHg2OGEyLCAweDY4OWMsIDB4Njg5ZSwgMHg2ODk4LCAweDY4OWEsIDB4YTAwMSwgMHg5MThkLCAweDE2MDAsCi0JMHg2OTAyLCAweDAwMWUsIDB4NjgzNywgMHgwMDIwLCAweDA4MGMsIDB4NjEwZiwgMHgyMDc5LCAweDFjMDAsCi0JMHg3ODMzLCAweDExMDEsIDB4NzgzNywgMHgwMDAwLCAweDIwZTEsIDB4MDAwMSwgMHgyMDk5LCAweDE4MDUsCi0JMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwgMHgxYzBlLCAweDIwYTksIDB4MDAwNCwgMHg0MDAzLCAweDA4MGMsCi0JMHhhZjhlLCAweDIwZTEsIDB4MDAwMSwgMHgyMDk5LCAweDFjMDAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsCi0JMHgwMjQwLCAweDIwYTksIDB4MDAxNCwgMHg0MDAzLCAweDYwYzMsIDB4MDAwYywgMHg2MDBmLCAweDAwMDAsCi0JMHgwODBjLCAweDVmYzEsIDB4MDBmZSwgMHg5MDA2LCAweDcwOTIsIDB4NjA0MywgMHgwMDA4LCAweDYwNDIsCi0JMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg3MDkzLCAweDAwMDAsIDB4OTAyNSwgMHgwOTA0LCAweDU5YzksCi0JMHg2MDIwLCAweGQwYjQsIDB4MTkwNCwgMHg1OWM3LCAweDcxYTAsIDB4ODFmZiwgMHgwOTA0LCAweDU5YjUsCi0JMHg5NDg2LCAweDAwMGMsIDB4MTkwNCwgMHg1OWMyLCAweDk0ODAsIDB4MDAxOCwgMHg4MDA0LCAweDIwYTgsCi0JMHgwODBjLCAweDYxMDgsIDB4MjAxMSwgMHgwMjYwLCAweDIwMTksIDB4MWMwMCwgMHgyMjBjLCAweDIzMDQsCi0JMHg5MTA2LCAweDExZTgsIDB4ODIxMCwgMHg4MzE4LCAweDFmMDQsIDB4NTk2ZSwgMHg2MDQzLCAweDAwMDQsCi0JMHgyMDYxLCAweDAxNDAsIDB4NjA1YiwgMHhiYzk0LCAweDYwNWYsIDB4ZjBmMCwgMHgyMDYxLCAweDAxMDAsCi0JMHg2MDQzLCAweDAwMDYsIDB4NzA4ZiwgMHgwMDAyLCAweDcwOWIsIDB4MDAwMiwgMHgyMDA5LCAweDA3ZDAsCi0JMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4OGQ1LCAweDA4MGMsIDB4NjEwZiwgMHgwNGMwLCAweDA4MGMsCi0JMHg2MTA4LCAweDIwNzksIDB4MDI2MCwgMHg3OTMwLCAweDkxOGUsIDB4MTEwMSwgMHgxNTU4LCAweDc4MzQsCi0JMHg5MDA1LCAweDE1NDAsIDB4NzkwMCwgMHg5MThjLCAweDAwZmYsIDB4MTExOCwgMHg3ODA0LCAweDkwMDUsCi0JMHgwMTkwLCAweDA4MGMsIDB4NjEwOCwgMHgyMDExLCAweDAyNmUsIDB4MjAxOSwgMHgxODA1LCAweDIwYTksCi0JMHgwMDA0LCAweDIyMGMsIDB4MjMwNCwgMHg5MTAyLCAweDAyMzAsIDB4MTFhMCwgMHg4MjEwLCAweDgzMTgsCi0JMHgxZjA0LCAweDU5YTksIDB4MDA3OCwgMHg3MGEzLCAweDAwMDAsIDB4MDgwYywgMHg2MTA4LCAweDIwZTEsCi0JMHgwMDAwLCAweDIwOTksIDB4MDI2MCwgMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwgMHgxYzAwLCAweDIwYTksCi0JMHgwMDE0LCAweDQwMDMsIDB4NjA0MywgMHgwMDA4LCAweDYwNDMsIDB4MDAwMCwgMHgwMDEwLCAweDAwZmUsCi0JMHgwMDA1LCAweDYwNDAsIDB4OTA4NSwgMHgwMTAwLCAweDYwNDIsIDB4NjAyMCwgMHhkMGI0LCAweDFkYjgsCi0JMHgwODBjLCAweGFmOGUsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MWMwMCwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMGExLCAweDAyNDAsIDB4MjBhOSwgMHgwMDE0LCAweDQwMDMsIDB4NjBjMywgMHgwMDBjLCAweDIwMTEsCi0JMHgxOWYyLCAweDIwMTMsIDB4MDAwMCwgMHg3MDkzLCAweDAwMDAsIDB4NjBhMywgMHgwMDU2LCAweDYwYTcsCi0JMHg5NTc1LCAweDA4MGMsIDB4YTZlMCwgMHgwOGQ4LCAweDAwMDUsIDB4NzA5OCwgMHg5MDhhLCAweDAwMWQsCi0JMHgxYTBjLCAweDBkYzUsIDB4MDAwYiwgMHgwMDA1LCAweDVhMWUsIDB4NWEzMSwgMHg1YTVhLCAweDVhN2EsCi0JMHg1YWEwLCAweDVhY2YsIDB4NWFmNSwgMHg1YjJkLCAweDViNTMsIDB4NWI4MSwgMHg1YmJjLCAweDViZjQsCi0JMHg1YzEyLCAweDVjM2QsIDB4NWM1ZiwgMHg1YzdhLCAweDVjODQsIDB4NWNiOCwgMHg1Y2RlLCAweDVkMGQsCi0JMHg1ZDMzLCAweDVkNmIsIDB4NWRhZiwgMHg1ZGVjLCAweDVlMGQsIDB4NWU2NiwgMHg1ZTg4LCAweDVlYjYsCi0JMHg1ZWI2LCAweDAwYzYsIDB4MjA2MSwgMHgxODAwLCAweDYwMDMsIDB4MDAwNywgMHgyMDYxLCAweDAxMDAsCi0JMHg2MDA0LCAweDkwODQsIDB4ZmZmOSwgMHg2MDA2LCAweDAwY2UsIDB4MDAwNSwgMHgyMDYxLCAweDAxNDAsCi0JMHg2MDViLCAweGJjOTQsIDB4NjA1ZiwgMHhmMGYwLCAweDIwNjEsIDB4MDEwMCwgMHg2MDQzLCAweDAwMDIsCi0JMHg3MDliLCAweDAwMDEsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4ZDUsCi0JMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg5MDg2LCAweDAwMTQsIDB4MTUxMCwgMHg2MDQyLCAweDYwMjAsCi0JMHhkMGI0LCAweDExZjAsIDB4MDgwYywgMHg2MTA4LCAweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsCi0JMHgxMTAyLCAweDExYTAsIDB4NzgzNCwgMHg5MDA1LCAweDExODgsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsCi0JMHg3MGM0LCAweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsCi0JMHg4ODNkLCAweDcwOWIsIDB4MDAxMCwgMHgwODBjLCAweDVjODQsIDB4MDAxMCwgMHg3MDkzLCAweDAwMDAsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDliLCAweDAwMDMsIDB4NjA0MywgMHgwMDA0LCAweDIwMTEsCi0JMHg1Zjk3LCAweDA4MGMsIDB4ODgzZCwgMHgwODBjLCAweDYwOGMsIDB4MjA3OSwgMHgwMjQwLCAweDc4MzMsCi0JMHgxMTAyLCAweDc4MzcsIDB4MDAwMCwgMHgyMGE5LCAweDAwMDgsIDB4OWY4OCwgMHgwMDBlLCAweDIwMGIsCi0JMHgwMDAwLCAweDgxMDgsIDB4MWYwNCwgMHg1YTZmLCAweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDVmYzEsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsIDB4MDUwMCwgMHgyMDExLCAweDVmOTcsCi0JMHgwODBjLCAweDg4M2QsIDB4OTA4NiwgMHgwMDE0LCAweDExYjgsIDB4MDgwYywgMHg2MTA4LCAweDIwNzksCi0JMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwgMHgxMTAyLCAweDExNzgsIDB4NzgzNCwgMHg5MDA1LCAweDExNjAsCi0JMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwgMHg3MGM0LCAweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsCi0JMHg3MDliLCAweDAwMDQsIDB4MDAyOSwgMHgwMDEwLCAweDA4MGMsIDB4NjBlNCwgMHgwMGZlLCAweDAwMDUsCi0JMHgwMGY2LCAweDcwOWIsIDB4MDAwNSwgMHgwODBjLCAweDYwOGMsIDB4MjA3OSwgMHgwMjQwLCAweDc4MzMsCi0JMHgxMTAzLCAweDc4MzcsIDB4MDAwMCwgMHgwODBjLCAweDYxMDgsIDB4MDgwYywgMHg2MGViLCAweDExNzAsCi0JMHg3MDg0LCAweDkwMDUsIDB4MTE1OCwgMHg3MTVjLCAweDkxODYsIDB4ZmZmZiwgMHgwMTM4LCAweDIwMTEsCi0JMHgwMDA4LCAweDA4MGMsIDB4NWY0NCwgMHgwMTY4LCAweDA4MGMsIDB4NjBjMSwgMHgyMGE5LCAweDAwMDgsCi0JMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjZlLCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAyNGUsCi0JMHg0MDAzLCAweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDVmYzEsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsCi0JMHg3MDkwLCAweDkwMDUsIDB4MDUwMCwgMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4ODNkLCAweDkwODYsCi0JMHgwMDE0LCAweDExYjgsIDB4MDgwYywgMHg2MTA4LCAweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsCi0JMHgxMTAzLCAweDExNzgsIDB4NzgzNCwgMHg5MDA1LCAweDExNjAsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsCi0JMHg3MGM0LCAweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsIDB4NzA5YiwgMHgwMDA2LCAweDAwMjksCi0JMHgwMDEwLCAweDA4MGMsIDB4NjBlNCwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDliLCAweDAwMDcsCi0JMHgwODBjLCAweDYwOGMsIDB4MjA3OSwgMHgwMjQwLCAweDc4MzMsIDB4MTEwNCwgMHg3ODM3LCAweDAwMDAsCi0JMHgwODBjLCAweDYxMDgsIDB4MDgwYywgMHg2MGViLCAweDExYjgsIDB4NzA4NCwgMHg5MDA1LCAweDExYTAsCi0JMHg3MTY0LCAweDkxODYsIDB4ZmZmZiwgMHgwMTgwLCAweDkxODAsIDB4MzNiNiwgMHgyMDBkLCAweDkxOGMsCi0JMHhmZjAwLCAweDgxMGYsIDB4MjAxMSwgMHgwMDA4LCAweDA4MGMsIDB4NWY0NCwgMHgwMTgwLCAweDA4MGMsCi0JMHg1MGQxLCAweDAxMTAsIDB4MDgwYywgMHgyOGRjLCAweDIwYTksIDB4MDAwOCwgMHgyMGUxLCAweDAwMDAsCi0JMHgyMDk5LCAweDAyNmUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0ZSwgMHg0MDAzLCAweDYwYzMsCi0JMHgwMDE0LCAweDA4MGMsIDB4NWZjMSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsCi0JMHgwNTAwLCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4M2QsIDB4OTA4NiwgMHgwMDE0LCAweDExYjgsCi0JMHgwODBjLCAweDYxMDgsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwgMHgxMTA0LCAweDExNzgsCi0JMHg3ODM0LCAweDkwMDUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwgMHg3MGM0LCAweDkwMDUsCi0JMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwgMHg3MDliLCAweDAwMDgsIDB4MDAyOSwgMHgwMDEwLCAweDA4MGMsCi0JMHg2MGU0LCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOWIsIDB4MDAwOSwgMHgwODBjLCAweDYwOGMsCi0JMHgyMDc5LCAweDAyNDAsIDB4NzgzMywgMHgxMTA1LCAweDc4MzcsIDB4MDEwMCwgMHgwODBjLCAweDYwZWIsCi0JMHgxMTUwLCAweDcwODQsIDB4OTAwNSwgMHgxMTM4LCAweDA4MGMsIDB4NWViNywgMHgxMTg4LCAweDkwODUsCi0JMHgwMDAxLCAweDA4MGMsIDB4MjhkYywgMHgyMGE5LCAweDAwMDgsIDB4MDgwYywgMHg2MTA4LCAweDIwZTEsCi0JMHgwMDAwLCAweDIwOTksIDB4MDI2ZSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjRlLCAweDQwMDMsCi0JMHg2MGMzLCAweDAwMTQsIDB4MDgwYywgMHg1ZmMxLCAweDAwMTAsIDB4MDgwYywgMHg1YTExLCAweDAwZmUsCi0JMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDA1YTgsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsCi0JMHg4ODNkLCAweDkwODYsIDB4MDAxNCwgMHgxNTYwLCAweDA4MGMsIDB4NjEwOCwgMHgyMDc5LCAweDAyNjAsCi0JMHg3YTMwLCAweDkyOTYsIDB4MTEwNSwgMHgxNTIwLCAweDc4MzQsIDB4OTA4NCwgMHgwMTAwLCAweDIwMTEsCi0JMHgwMTAwLCAweDkyMWUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwgMHg3MGM0LCAweDkwMDUsCi0JMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwgMHg3MDliLCAweDAwMGEsIDB4MDBiMSwgMHgwMDk4LCAweDkwMDUsCi0JMHgxMTc4LCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwgMHgxMTEwLCAweDcwYzcsCi0JMHgwMDAxLCAweDcwOTcsIDB4MDAwMCwgMHg3MDliLCAweDAwMGUsIDB4MDgwYywgMHg1YzVmLCAweDAwMTAsCi0JMHgwODBjLCAweDYwZTQsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5YiwgMHgwMDBiLCAweDIwMTEsCi0JMHgxYzBlLCAweDIwZTksIDB4MDAwMSwgMHgyMmEwLCAweDIwYTksIDB4MDA0MCwgMHgyMDE5LCAweGZmZmYsCi0JMHg0MzA0LCAweDA4MGMsIDB4NjA4YywgMHgyMDc5LCAweDAyNDAsIDB4NzgzMywgMHgxMTA2LCAweDc4MzcsCi0JMHgwMDAwLCAweDA4MGMsIDB4NjBlYiwgMHgwMTE4LCAweDIwMTMsIDB4MDAwMCwgMHgwMDIwLCAweDcwNjAsCi0JMHg5MDg1LCAweDAxMDAsIDB4MjAxMiwgMHgyMGE5LCAweDAwNDAsIDB4MjAwOSwgMHgwMjRlLCAweDIwMTEsCi0JMHgxYzBlLCAweDIyMGUsIDB4ODIxMCwgMHg4MTA4LCAweDkxODYsIDB4MDI2MCwgMHgxMTI4LCAweDY4MTAsCi0JMHg4MDAwLCAweDY4MTIsIDB4MjAwOSwgMHgwMjQwLCAweDFmMDQsIDB4NWJlMSwgMHg2MGMzLCAweDAwODQsCi0JMHgwODBjLCAweDVmYzEsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDAxYzAsCi0JMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4ODNkLCAweDkwODYsIDB4MDA4NCwgMHgxMTc4LCAweDA4MGMsCi0JMHg2MTA4LCAweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsIDB4MTEwNiwgMHgxMTM4LCAweDc4MzQsCi0JMHg5MDA1LCAweDExMjAsIDB4NzA5YiwgMHgwMDBjLCAweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDYwZTQsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDliLCAweDAwMGQsIDB4MDgwYywgMHg2MDhjLCAweDIwNzksCi0JMHgwMjQwLCAweDc4MzMsIDB4MTEwNywgMHg3ODM3LCAweDAwMDAsIDB4MDgwYywgMHg2MTA4LCAweDIwYTksCi0JMHgwMDQwLCAweDIwMTEsIDB4MDI2ZSwgMHgyMDA5LCAweDAyNGUsIDB4MjIwZSwgMHg4MjEwLCAweDgxMDgsCi0JMHg5MTg2LCAweDAyNjAsIDB4MTE1MCwgMHg2ODEwLCAweDgwMDAsIDB4NjgxMiwgMHgyMDA5LCAweDAyNDAsCi0JMHg2ODE0LCAweDgwMDAsIDB4NjgxNiwgMHgyMDExLCAweDAyNjAsIDB4MWYwNCwgMHg1YzI1LCAweDYwYzMsCi0JMHgwMDg0LCAweDA4MGMsIDB4NWZjMSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsCi0JMHgwMWUwLCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4M2QsIDB4OTA4NiwgMHgwMDg0LCAweDExOTgsCi0JMHgwODBjLCAweDYxMDgsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwgMHgxMTA3LCAweDExNTgsCi0JMHg3ODM0LCAweDkwMDUsIDB4MTE0MCwgMHg3MDk3LCAweDAwMDEsIDB4MDgwYywgMHg2MDVlLCAweDcwOWIsCi0JMHgwMDBlLCAweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDYwZTQsIDB4MDBmZSwgMHgwMDA1LCAweDkxOGQsCi0JMHgwMDAxLCAweDA4MGMsIDB4NjEzMywgMHg3MDliLCAweDAwMGYsIDB4NzA5MywgMHgwMDAwLCAweDIwNjEsCi0JMHgwMTQwLCAweDYwNWIsIDB4YmM4NSwgMHg2MDVmLCAweGI1YjUsIDB4MjA2MSwgMHgwMTAwLCAweDYwNDMsCi0JMHgwMDA1LCAweDYwNDMsIDB4MDAwNCwgMHgyMDA5LCAweDA3ZDAsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsCi0JMHg4ODMxLCAweDAwMDUsIDB4NzA5MCwgMHg5MDA1LCAweDAxMzAsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsCi0JMHg4ODNkLCAweDcwOWIsIDB4MDAwMCwgMHgwMDA1LCAweDcwOWIsIDB4MDAxMSwgMHgwODBjLCAweGFmOGUsCi0JMHgwODBjLCAweDYxMDgsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksIDB4MDI2MCwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMGExLCAweDAyNDAsIDB4NzQ5MCwgMHg5NDgwLCAweDAwMTgsIDB4OTA4MCwgMHgwMDA3LCAweDkwODQsCi0JMHgwM2Y4LCAweDgwMDQsIDB4MjBhOCwgMHg0MDAzLCAweDA4MGMsIDB4NjBlYiwgMHgxMWEwLCAweDcxN2MsCi0JMHg4MWZmLCAweDAxODgsIDB4OTAwZSwgMHg3MDgwLCAweDkwODQsIDB4MDBmZiwgMHgwMTYwLCAweDA4MGMsCi0JMHgyODczLCAweDkxODYsIDB4MDA3ZSwgMHgwMTM4LCAweDkxODYsIDB4MDA4MCwgMHgwMTIwLCAweDIwMTEsCi0JMHgwMDA4LCAweDA4MGMsIDB4NWY0NCwgMHg2MGMzLCAweDAwMTQsIDB4MDgwYywgMHg1ZmMxLCAweDAwMDUsCi0JMHgwMGY2LCAweDcwOTAsIDB4OTAwNSwgMHgwNTAwLCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4M2QsCi0JMHg5MDg2LCAweDAwMTQsIDB4MTFiOCwgMHgwODBjLCAweDYxMDgsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsCi0JMHg5Mjk2LCAweDExMDMsIDB4MTE3OCwgMHg3ODM0LCAweDkwMDUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsCi0JMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwgMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwgMHg3MDliLCAweDAwMTIsCi0JMHgwMDI5LCAweDAwMTAsIDB4NzA5MywgMHgwMDAwLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOWIsCi0JMHgwMDEzLCAweDA4MGMsIDB4NjA5YSwgMHgyMDc5LCAweDAyNDAsIDB4NzgzMywgMHgxMTAzLCAweDc4MzcsCi0JMHgwMDAwLCAweDA4MGMsIDB4NjEwOCwgMHgwODBjLCAweDYwZWIsIDB4MTE3MCwgMHg3MDg0LCAweDkwMDUsCi0JMHgxMTU4LCAweDcxNWMsIDB4OTE4NiwgMHhmZmZmLCAweDAxMzgsIDB4MjAxMSwgMHgwMDA4LCAweDA4MGMsCi0JMHg1ZjQ0LCAweDAxNjgsIDB4MDgwYywgMHg2MGMxLCAweDIwYTksIDB4MDAwOCwgMHgyMGUxLCAweDAwMDAsCi0JMHgyMDk5LCAweDAyNmUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0ZSwgMHg0MDAzLCAweDYwYzMsCi0JMHgwMDE0LCAweDA4MGMsIDB4NWZjMSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsCi0JMHgwNTAwLCAweDIwMTEsIDB4NWY5NywgMHgwODBjLCAweDg4M2QsIDB4OTA4NiwgMHgwMDE0LCAweDExYjgsCi0JMHgwODBjLCAweDYxMDgsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwgMHgxMTA0LCAweDExNzgsCi0JMHg3ODM0LCAweDkwMDUsIDB4MTE2MCwgMHg3YTM4LCAweGQyZmMsIDB4MDEyOCwgMHg3MGM0LCAweDkwMDUsCi0JMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwgMHg3MDliLCAweDAwMTQsIDB4MDAyOSwgMHgwMDEwLCAweDcwOTMsCi0JMHgwMDAwLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOWIsIDB4MDAxNSwgMHgwODBjLCAweDYwOWEsCi0JMHgyMDc5LCAweDAyNDAsIDB4NzgzMywgMHgxMTA0LCAweDc4MzcsIDB4MDAwMCwgMHgwODBjLCAweDYxMDgsCi0JMHgwODBjLCAweDYwZWIsIDB4MTFiOCwgMHg3MDg0LCAweDkwMDUsIDB4MTFhMCwgMHg3MTY0LCAweDkxODYsCi0JMHhmZmZmLCAweDAxODAsIDB4OTE4MCwgMHgzM2I2LCAweDIwMGQsIDB4OTE4YywgMHhmZjAwLCAweDgxMGYsCi0JMHgyMDExLCAweDAwMDgsIDB4MDgwYywgMHg1ZjQ0LCAweDAxODAsIDB4MDgwYywgMHg1MGQxLCAweDAxMTAsCi0JMHgwODBjLCAweDI4ZGMsIDB4MjBhOSwgMHgwMDA4LCAweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAyNmUsCi0JMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjRlLCAweDQwMDMsIDB4NjBjMywgMHgwMDE0LCAweDA4MGMsCi0JMHg1ZmMxLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOTAsIDB4OTAwNSwgMHgwNWYwLCAweDIwMTEsCi0JMHg1Zjk3LCAweDA4MGMsIDB4ODgzZCwgMHg5MDg2LCAweDAwMTQsIDB4MTVhOCwgMHgwODBjLCAweDYxMDgsCi0JMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwgMHg5Mjk2LCAweDExMDUsIDB4MTU2OCwgMHg3ODM0LCAweDkwODQsCi0JMHgwMTAwLCAweDIwMTEsIDB4MDEwMCwgMHg5MjFlLCAweDExNjgsIDB4OTA4NSwgMHgwMDAxLCAweDA4MGMsCi0JMHg2MTMzLCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwgMHgxMTEwLCAweDcwYzcsCi0JMHgwMDAxLCAweDAwODAsIDB4OTAwNSwgMHgxMWI4LCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsCi0JMHg5MDA1LCAweDExMTAsIDB4NzBjNywgMHgwMDAxLCAweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDYxMzMsCi0JMHg3MDk3LCAweDAwMDAsIDB4N2EzOCwgMHhkMmY0LCAweDAxMTAsIDB4NzBkZiwgMHgwMDA4LCAweDcwOWIsCi0JMHgwMDE2LCAweDAwMjksIDB4MDAxMCwgMHg3MDkzLCAweDAwMDAsIDB4MDBmZSwgMHgwMDA1LCAweDA4MGMsCi0JMHhhZjhlLCAweDA4MGMsIDB4NjEwOCwgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjYwLCAweDIwZTksCi0JMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMGUsIDB4NDAwMywgMHgyMDExLCAweDAyNmQsCi0JMHgyMjA0LCAweDkwODQsIDB4MDEwMCwgMHgyMDExLCAweDAyNGQsIDB4MjAxMiwgMHgyMDExLCAweDAyNmUsCi0JMHg3MDliLCAweDAwMTcsIDB4MDgwYywgMHg2MGViLCAweDExNTAsIDB4NzA4NCwgMHg5MDA1LCAweDExMzgsCi0JMHgwODBjLCAweDVlYjcsIDB4MTE4OCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHgyOGRjLCAweDIwYTksCi0JMHgwMDA4LCAweDA4MGMsIDB4NjEwOCwgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjZlLCAweDIwZTksCi0JMHgwMDAwLCAweDIwYTEsIDB4MDI0ZSwgMHg0MDAzLCAweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDVmYzEsCi0JMHgwMDEwLCAweDA4MGMsIDB4NWExMSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDAxZDgsCi0JMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4ODNkLCAweDkwODYsIDB4MDA4NCwgMHgxMTkwLCAweDA4MGMsCi0JMHg2MTA4LCAweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsIDB4MTEwNiwgMHgxMTUwLCAweDc4MzQsCi0JMHg5MDA1LCAweDExMzgsIDB4OTAwNiwgMHgwODBjLCAweDYxMzMsIDB4NzA5YiwgMHgwMDE4LCAweDAwMjksCi0JMHgwMDEwLCAweDcwOTMsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDliLCAweDAwMTksCi0JMHgwODBjLCAweDYwOWEsIDB4MjA3OSwgMHgwMjQwLCAweDc4MzMsIDB4MTEwNiwgMHg3ODM3LCAweDAwMDAsCi0JMHgwODBjLCAweDYxMDgsIDB4MjAwOSwgMHgwMjZlLCAweDIwMzksIDB4MWMwZSwgMHgyMGE5LCAweDAwNDAsCi0JMHgyMTNlLCAweDg3MzgsIDB4ODEwOCwgMHg5MTg2LCAweDAyODAsIDB4MTEyOCwgMHg2ODE0LCAweDgwMDAsCi0JMHg2ODE2LCAweDIwMDksIDB4MDI2MCwgMHgxZjA0LCAweDVlMjAsIDB4MjAzOSwgMHgxYzBlLCAweDA4MGMsCi0JMHg2MGViLCAweDExZTgsIDB4MjcyOCwgMHgyNTE0LCAweDgyMDcsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDAsCi0JMHgyMDE4LCAweDkyOTQsIDB4MDBmZiwgMHg4MDA3LCAweDkyMDUsIDB4MjAyYSwgMHg3MDYwLCAweDIzMTAsCi0JMHg4MjE0LCAweDkyYTAsIDB4MWMwZSwgMHgyNDE0LCAweDkzOGMsIDB4MDAwMSwgMHgwMTE4LCAweDkyOTQsCi0JMHhmZjAwLCAweDAwMTgsIDB4OTI5NCwgMHgwMGZmLCAweDgwMDcsIDB4OTIxNSwgMHgyMjIyLCAweDIwYTksCi0JMHgwMDQwLCAweDIwMDksIDB4MDI0ZSwgMHgyNzBlLCAweDg3MzgsIDB4ODEwOCwgMHg5MTg2LCAweDAyNjAsCi0JMHgxMTI4LCAweDY4MTAsIDB4ODAwMCwgMHg2ODEyLCAweDIwMDksIDB4MDI0MCwgMHgxZjA0LCAweDVlNTMsCi0JMHg2MGMzLCAweDAwODQsIDB4MDgwYywgMHg1ZmMxLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOTAsCi0JMHg5MDA1LCAweDAxZTAsIDB4MjAxMSwgMHg1Zjk3LCAweDA4MGMsIDB4ODgzZCwgMHg5MDg2LCAweDAwODQsCi0JMHgxMTk4LCAweDA4MGMsIDB4NjEwOCwgMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwgMHg5Mjk2LCAweDExMDcsCi0JMHgxMTU4LCAweDc4MzQsIDB4OTAwNSwgMHgxMTQwLCAweDcwOTcsIDB4MDAwMSwgMHgwODBjLCAweDYwNWUsCi0JMHg3MDliLCAweDAwMWEsIDB4MDAyOSwgMHgwMDEwLCAweDcwOTMsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHg2MTMzLCAweDcwOWIsIDB4MDAxYiwgMHgwODBjLCAweGFmOGUsCi0JMHgwODBjLCAweDYxMDgsIDB4MjAxMSwgMHgwMjYwLCAweDIwMDksIDB4MDI0MCwgMHg3NDkwLCAweDk0ODAsCi0JMHgwMDE4LCAweDkwODAsIDB4MDAwNywgMHg5MDg0LCAweDAzZjgsIDB4ODAwNCwgMHgyMGE4LCAweDIyMGUsCi0JMHg4MjEwLCAweDgxMDgsIDB4OTE4NiwgMHgwMjYwLCAweDExNTAsIDB4NjgxMCwgMHg4MDAwLCAweDY4MTIsCi0JMHgyMDA5LCAweDAyNDAsIDB4NjgxNCwgMHg4MDAwLCAweDY4MTYsIDB4MjAxMSwgMHgwMjYwLCAweDFmMDQsCi0JMHg1ZTlmLCAweDYwYzMsIDB4MDA4NCwgMHgwODBjLCAweDVmYzEsIDB4MDAwNSwgMHgwMDA1LCAweDAwODYsCi0JMHgwMDk2LCAweDIwMjksIDB4MTg0OCwgMHgyNTJjLCAweDIwYTksIDB4MDAwOCwgMHgyMDQxLCAweDFjMGUsCi0JMHgyMGU5LCAweDAwMDEsIDB4MjhhMCwgMHgwODBjLCAweDYxMDgsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksCi0JMHgwMjZlLCAweDQwMDMsIDB4MjBhOSwgMHgwMDA4LCAweDIwMTEsIDB4MDAwNywgMHhkNWQ0LCAweDAxMDgsCi0JMHg5MDE2LCAweDI4MDAsIDB4OTIwMCwgMHgyMDBjLCAweDkxYTYsIDB4ZmZmZiwgMHgxMTQ4LCAweGQ1ZDQsCi0JMHgwMTEwLCAweDgyMTAsIDB4MDAwOCwgMHg4MjExLCAweDFmMDQsIDB4NWVkMSwgMHgwODA0LCAweDVmNDAsCi0JMHg4MmZmLCAweDExNjAsIDB4ZDVkNCwgMHgwMTIwLCAweDkxYTYsIDB4M2ZmZiwgMHgwZDkwLCAweDAwMjAsCi0JMHg5MWE2LCAweDNmZmYsIDB4MDkwNCwgMHg1ZjQwLCAweDkxOGQsIDB4YzAwMCwgMHgyMGE5LCAweDAwMTAsCi0JMHgyMDE5LCAweDAwMDEsIDB4ZDVkNCwgMHgwMTEwLCAweDIwMTksIDB4MDAxMCwgMHgyMTIwLCAweGQ1ZDQsCi0JMHgwMTEwLCAweDg0MjMsIDB4MDAwOCwgMHg4NDI0LCAweDEyNDAsIDB4ZDVkNCwgMHgwMTEwLCAweDgzMTksCi0JMHgwMDA4LCAweDgzMTgsIDB4MWYwNCwgMHg1ZWY3LCAweDA0ZDgsIDB4MjNhOCwgMHgyMDIxLCAweDAwMDEsCi0JMHg4NDI2LCAweDg0MjUsIDB4MWYwNCwgMHg1ZjA5LCAweDIzMjgsIDB4ODUyOSwgMHg5MmJlLCAweDAwMDcsCi0JMHgwMTU4LCAweDAwMDYsIDB4MjAzOSwgMHgwMDA3LCAweDIyMDAsIDB4OTczYSwgMHgwMDBlLCAweDI3YTgsCi0JMHg5NWE4LCAweDAwMTAsIDB4MWYwNCwgMHg1ZjE4LCAweDc1NWUsIDB4OTVjOCwgMHgzM2I2LCAweDI5MmQsCi0JMHg5NWFjLCAweDAwZmYsIDB4NzU4MiwgMHg2NTMyLCAweDY1MzYsIDB4MDAxNiwgMHgyNTA4LCAweDA4MGMsCi0JMHgyOGJjLCAweDAwMWUsIDB4NjBlNywgMHgwMDAwLCAweDY1ZWEsIDB4MjAxOCwgMHgyMzA0LCAweDk0MDUsCi0JMHgyMDFhLCAweDcwODcsIDB4MDAwMSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjRlLCAweDIwZTEsCi0JMHgwMDAxLCAweDI4OTgsIDB4MjBhOSwgMHgwMDA4LCAweDQwMDMsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsCi0JMHg5MDA2LCAweDAwOWUsIDB4MDA4ZSwgMHgwMDA1LCAweDAxNTYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsCi0JMHgwMTQ2LCAweDIyYTgsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksIDB4MDI2ZSwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMDExLCAweDAyNGUsIDB4MjJhMCwgMHg0MDAzLCAweDAxNGUsIDB4MDEzZSwgMHgwMWRlLCAweDAxY2UsCi0JMHgwMTVlLCAweDIxMTgsIDB4OTAyNiwgMHgyMDAxLCAweDAwMDcsIDB4OTM5YSwgMHgwMDEwLCAweDAyMTgsCi0JMHg4NDIwLCAweDgwMDEsIDB4MGNkMCwgMHgyMTE4LCAweDg0ZmYsIDB4MDEyMCwgMHg5MzlhLCAweDAwMTAsCi0JMHg4NDIxLCAweDFkZTAsIDB4MjAyMSwgMHgwMDAxLCAweDgzZmYsIDB4MDExOCwgMHg4NDIzLCAweDgzMTksCi0JMHgxZGU4LCAweDkyMzgsIDB4MjAyOSwgMHgwMjZlLCAweDk1MjgsIDB4MjUwNCwgMHg5NDJjLCAweDExYjgsCi0JMHg5NDA1LCAweDIwM2EsIDB4NzE1ZSwgMHg5MWEwLCAweDMzYjYsIDB4MjQyZCwgMHg5NWFjLCAweDAwZmYsCi0JMHg3NTgyLCAweDY1MzIsIDB4NjUzNiwgMHgwMDE2LCAweDI1MDgsIDB4MDgwYywgMHgyOGJjLCAweDAwMWUsCi0JMHg2MGU3LCAweDAwMDAsIDB4NjVlYSwgMHg3MDg3LCAweDAwMDEsIDB4OTA4NCwgMHgwMDAwLCAweDAwMDUsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHg3MDhiLCAweDAwMDAsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHgyMDcxLCAweDAxNDAsIDB4MDgwYywgMHg2MDRkLCAweDA4MGMsCi0JMHhhNmU5LCAweDcwMDQsIDB4OTA4NCwgMHg0MDAwLCAweDAxMTAsIDB4MDgwYywgMHgyZDQ5LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxODI2LCAweDIwNzMsIDB4MDAwMCwgMHg3ODQwLCAweDAwMjYsCi0JMHgwMDE2LCAweDIwMDksIDB4MDBmNywgMHgwODBjLCAweDYwYWEsIDB4MDAxZSwgMHg5MDk0LCAweDAwMTAsCi0JMHg5Mjg1LCAweDAwODAsIDB4Nzg0MiwgMHg3YTQyLCAweDAwMmUsIDB4MDEyZSwgMHgwMGZlLCAweDAwZWUsCi0JMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4MmJjZSwgMHgwMjI4LCAweDIwMTEsCi0JMHgwMTAxLCAweDIyMDQsIDB4YzBjNSwgMHgyMDEyLCAweDIwMTEsIDB4MTlmMiwgMHgyMDEzLCAweDAwMDAsCi0JMHg3MDkzLCAweDAwMDAsIDB4MDEyZSwgMHg2MGEzLCAweDAwNTYsIDB4NjBhNywgMHg5NTc1LCAweDA4MGMsCi0JMHhhNmUwLCAweDYxNDQsIDB4ZDE4NCwgMHgwMTIwLCAweDcxOTgsIDB4OTE4ZCwgMHgyMDAwLCAweDAwMTgsCi0JMHg3MThjLCAweDkxOGQsIDB4MTAwMCwgMHgyMDExLCAweDE5OTksIDB4MjExMiwgMHgyMDA5LCAweDA3ZDAsCi0JMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4OGQ1LCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwYzYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIyNDQsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsCi0JMHg2MGFhLCAweDIwNjEsIDB4MTlmYiwgMHg5MDBlLCAweDYxMWEsIDB4NjExZSwgMHg2MTdhLCAweDYxN2UsCi0JMHgyMDYxLCAweDE4MDAsIDB4NjAwMywgMHgwMDAxLCAweDIwNjEsIDB4MDEwMCwgMHg2MDQzLCAweDAwOTAsCi0JMHg2MDQzLCAweDAwMTAsIDB4MjAwOSwgMHgxOTk5LCAweDIwMGIsIDB4MDAwMCwgMHgyMDA5LCAweDAwMmQsCi0JMHgyMDExLCAweDYwMTksIDB4MDgwYywgMHg4ODMxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMDA1LCAweDAwZTYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwNDcxLCAweDIwNzEsCi0JMHgwMTAwLCAweDA4MGMsIDB4YTZlOSwgMHgyMDcxLCAweDAxNDAsIDB4NzAwNCwgMHg5MDg0LCAweDQwMDAsCi0JMHgwMTEwLCAweDA4MGMsIDB4MmQ0OSwgMHgwODBjLCAweDc2M2YsIDB4MDE4OCwgMHgwODBjLCAweDc2NWEsCi0JMHgxMTcwLCAweDA4MGMsIDB4NzkzYywgMHgwMDE2LCAweDA4MGMsIDB4Mjk4YiwgMHgyMDAxLCAweDE5NmQsCi0JMHgyMTAyLCAweDAwMWUsIDB4MDgwYywgMHg3OTM3LCAweDA4MGMsIDB4NzU2MywgMHgwMDUwLCAweDIwMDksCi0JMHgwMDAxLCAweDA4MGMsIDB4MmM2NywgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyODFjLCAweDA4MGMsCi0JMHg1ZmVkLCAweDAxMmUsIDB4MDAwZSwgMHgwMGVlLCAweDAwMDUsIDB4MjAwMSwgMHgxODBlLCAweDIwMDQsCi0JMHhkMGJjLCAweDAxNTgsIDB4MDAyNiwgMHgwMDM2LCAweDIwMTEsIDB4ODAxNywgMHgyMDAxLCAweDE5OTksCi0JMHgyMDFjLCAweDA4MGMsIDB4NGM0NCwgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgyMGE5LCAweDAwMTIsCi0JMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwgMHgxYzgwLCAweDA4MGMsIDB4NjEwOCwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMDk5LCAweDAyNmUsIDB4MDA5OSwgMHgyMGE5LCAweDAwMjAsIDB4MDgwYywgMHg2MTAyLCAweDIwOTksCi0JMHgwMjYwLCAweDIwYTEsIDB4MWM5MiwgMHgwMDUxLCAweDIwYTksIDB4MDAwZSwgMHgwODBjLCAweDYxMDUsCi0JMHgyMDk5LCAweDAyNjAsIDB4MjBhMSwgMHgxY2IyLCAweDAwMDksIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsCi0JMHgzNDEwLCAweDMzMDgsIDB4MjEwNCwgMHg4MDA3LCAweDIwMTIsIDB4ODEwOCwgMHg4MjEwLCAweDFmMDQsCi0JMHg2MDgyLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDA4MGMsIDB4YWY4ZSwgMHgyMGUxLCAweDAwMDEsCi0JMHgyMDk5LCAweDFjMDAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMGMsCi0JMHg0MDAzLCAweDAwMDUsIDB4MDgwYywgMHhhZjhlLCAweDA4MGMsIDB4NjEwOCwgMHgyMGUxLCAweDAwMDAsCi0JMHgyMDk5LCAweDAyNjAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMGMsCi0JMHg0MDAzLCAweDAwMDUsIDB4MDBjNiwgMHgwMDA2LCAweDIwNjEsIDB4MDEwMCwgMHg4MTBmLCAweDIwMDEsCi0JMHgxODM0LCAweDIwMDQsIDB4OTAwNSwgMHgxMTM4LCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDkwODQsCi0JMHgwMGZmLCAweDkxMDUsIDB4MDAxMCwgMHg5MTg1LCAweDAwZjcsIDB4NjA0YSwgMHgwMDBlLCAweDAwY2UsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDA0NiwgMHgwODBjLCAweDZhOWYsIDB4MDE1OCwgMHg5MDA2LCAweDIwMjAsCi0JMHgyMDA5LCAweDAwMmEsIDB4MDgwYywgMHhlYzMxLCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGMxOTUsCi0JMHgyMTAyLCAweDIwMTksIDB4MDAyYSwgMHg5MDBlLCAweDA4MGMsIDB4MzIxYiwgMHgwODBjLCAweGQ3ZTMsCi0JMHgwMTQwLCAweDAwMzYsIDB4MjAxOSwgMHhmZmZmLCAweDIwMjEsIDB4MDAwNywgMHgwODBjLCAweDRkZmIsCi0JMHgwMDNlLCAweDAwNGUsIDB4MDAxZSwgMHgwMDA1LCAweDA4MGMsIDB4NWZlZCwgMHg3MDliLCAweDAwMDAsCi0JMHg3MDkzLCAweDAwMDAsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MTgwYywgMHgyMDA0LCAweGQwOWMsCi0JMHgwMTAwLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDAxLCAweDAxMDEsIDB4MjAwYywgMHg5MThkLCAweDAwMDYsIDB4MjEwMiwgMHgwMTJlLCAweDAwMWUsCi0JMHgwMDBlLCAweDAwMDUsIDB4MjAwOSwgMHgwMDAxLCAweDAwMjAsIDB4MjAwOSwgMHgwMDAyLCAweDAwMDgsCi0JMHg5MDBlLCAweDY4MTQsIDB4OTA4NCwgMHhmZmMwLCAweDkxMGQsIDB4NjkxNiwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMTU2LCAweDAxNDYsIDB4MDFkNiwgMHg5MDA2LCAweDIwYTksIDB4MDA4MCwgMHgyMGU5LCAweDAwMDEsCi0JMHgyMGExLCAweDFjMDAsIDB4NDAwNCwgMHgyMDc5LCAweDFjMDAsIDB4NzgwMywgMHgyMjAwLCAweDc4MDcsCi0JMHgwMGVmLCAweDc4MGYsIDB4MDBlZiwgMHg3ODEzLCAweDAxMzgsIDB4NzgyMywgMHhmZmZmLCAweDc4MjcsCi0JMHhmZmZmLCAweDAxZGUsIDB4MDE0ZSwgMHgwMTVlLCAweDAwZmUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MDAsCi0JMHgyMDAzLCAweDAwMDEsIDB4MDAwNSwgMHgyMDAxLCAweDE5YTcsIDB4MDExOCwgMHgyMDAzLCAweDAwMDEsCi0JMHgwMDEwLCAweDIwMDMsIDB4MDAwMCwgMHgwMDA1LCAweDAxNTYsIDB4MjBhOSwgMHgwODAwLCAweDIwMDksCi0JMHgxMDAwLCAweDkwMDYsIDB4MjAwYSwgMHg4MTA4LCAweDFmMDQsIDB4NjE0MiwgMHgwMTVlLCAweDAwMDUsCi0JMHgwMGQ2LCAweDAwMzYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4MjA2OSwgMHgxODQ3LCAweDkwMDYsCi0JMHhiODAyLCAweGI4Y2UsIDB4YjgwNywgMHgwNzA3LCAweGI4MGEsIDB4YjgwZSwgMHhiODEyLCAweDkxOTgsCi0JMHgzM2I2LCAweDIzMWQsIDB4OTM5YywgMHgwMGZmLCAweGJiMTYsIDB4MDAxNiwgMHgwMDI2LCAweGI4YzIsCi0JMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHg5MTkyLCAweDAwN2UsIDB4MTIwOCwgMHhiYmMyLCAweDIwYTksCi0JMHgwMDA0LCAweGI4YzQsIDB4MjBlOCwgMHhiOWM4LCAweDkxOTgsIDB4MDAwNiwgMHg5MDA2LCAweDIzYTAsCi0JMHg0MDA0LCAweDIwYTksIDB4MDAwNCwgMHg5MTk4LCAweDAwMGEsIDB4MjNhMCwgMHg0MDA0LCAweDAwMmUsCi0JMHgwMDFlLCAweGI4M2UsIDB4Yjg0MiwgMHhiODRlLCAweGI4NTIsIDB4Yjg1NiwgMHhiODVhLCAweGI4NWUsCi0JMHhiODYyLCAweGI4NjYsIDB4Yjg2YSwgMHhiODZmLCAweDAxMDAsIDB4Yjg3MiwgMHhiODc2LCAweGI4N2EsCi0JMHhiODhhLCAweGI4OGUsIDB4Yjg5MywgMHgwMDA4LCAweGI4OTYsIDB4Yjg5YSwgMHhiODllLCAweGI4YmUsCi0JMHhiOWEyLCAweDAwOTYsIDB4YjhhNCwgMHg5MDRkLCAweDAxMTAsIDB4MDgwYywgMHgxMDQwLCAweGI4YTcsCi0JMHgwMDAwLCAweDAwOWUsIDB4OTAwNiwgMHhiODRhLCAweDY4MTAsIDB4YjgzYSwgMHg2ODBjLCAweGI4NDYsCi0JMHhiOGJiLCAweDA1MjAsIDB4YjhhYywgMHg5MDA1LCAweDAxOTgsIDB4MDBjNiwgMHgyMDYwLCAweDljODIsCi0JMHgxY2QwLCAweDBhMGMsIDB4MGRjNSwgMHgyMDAxLCAweDE4MWEsIDB4MjAwNCwgMHg5YzAyLCAweDFhMGMsCi0JMHgwZGM1LCAweDA4MGMsIDB4OGNmNywgMHgwMGNlLCAweDA5MGMsIDB4OTA5NiwgMHhiOGFmLCAweDAwMDAsCi0JMHg2ODE0LCAweDkwODQsIDB4MDBmZiwgMHhiODQyLCAweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDAwM2UsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YTk3NCwgMHhhZTc4LCAweDk2ODQsCi0JMHgzZmZmLCAweDkwODIsIDB4NDAwMCwgMHgxYTA0LCAweDYyMzAsIDB4OTE4MiwgMHgwODAwLCAweDFhMDQsCi0JMHg2MjM0LCAweDIwMDEsIDB4MTgwYywgMHgyMDA0LCAweDkwODQsIDB4MDAwMywgMHgxOTA0LCAweDYyM2EsCi0JMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwgMHg5MDVkLCAweDA1MTgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDhlLCAweDAwMDYsIDB4MTUwOCwgMHhiOGE0LCAweDkwMGQsIDB4MTkwNCwgMHg2MjRjLCAweGI4NTAsCi0JMHg5MDBkLCAweDExNDgsIDB4YTgwMiwgMHgyOTAwLCAweGI4NTIsIDB4Yjg0ZSwgMHgwODBjLCAweDk1MWMsCi0JMHg5MDA2LCAweDAxMmUsIDB4MDAwNSwgMHgwMGE2LCAweDIxNTAsIDB4MjkwMCwgMHhiMDAyLCAweGE4MDMsCi0JMHgwMDAwLCAweDAwYWUsIDB4Yjg1MiwgMHgwYzkwLCAweDIwMDEsIDB4MDAwNSwgMHg5MDBlLCAweDA0YjgsCi0JMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwgMHgwNDk4LCAweDkwODIsIDB4MDAwNiwgMHgxMjkwLCAweDA4MGMsCi0JMHhiMjNkLCAweDExNjAsIDB4YjhhMCwgMHg5MDg0LCAweGZmODAsIDB4MTE0MCwgMHhiOTAwLCAweGQxZmMsCi0JMHgwOTkwLCAweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDEwMDAsIDB4MDQwOCwgMHgyMDAxLCAweDAwMjgsCi0JMHgwMGE4LCAweDIwMDksIDB4MTgwYywgMHgyMTBjLCAweGQxOGMsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsCi0JMHgwMDY4LCAweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDA0MCwgMHgyMDAxLCAweDAwMjksCi0JMHhiOTAwLCAweGQxZmMsIDB4MDExOCwgMHgyMDA5LCAweDEwMDAsIDB4MDA0OCwgMHg5MDBlLCAweDAwMzgsCi0JMHgyMDAxLCAweDAwMjksIDB4OTAwZSwgMHgwMDE4LCAweDIwMDEsIDB4MDAyOSwgMHg5MDBlLCAweDkwMDUsCi0JMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsIDB4ZDA4NCwgMHgxOWQwLCAweDkxODgsCi0JMHgxMDAwLCAweDIxMDQsIDB4OTA1ZCwgMHgwOWE4LCAweDA4MGMsIDB4NmFhMywgMHgxOTkwLCAweGI4MDAsCi0JMHhkMGJjLCAweDA5NzgsIDB4MDgwNCwgMHg2MWUzLCAweDA4MGMsIDB4NjhjMCwgMHgwOTA0LCAweDYxZmMsCi0JMHgwODA0LCAweDYxZTcsIDB4MDBiNiwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE4NzQsCi0JMHg5MDhlLCAweDAwZmYsIDB4MTEyMCwgMHgyMDAxLCAweDE5NmIsIDB4MjA1YywgMHgwMDYwLCAweGE5NzQsCi0JMHg5MTgyLCAweDA4MDAsIDB4MTY5MCwgMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwgMHg5MDVkLCAweDAxZDAsCi0JMHgwODBjLCAweDZhNDMsIDB4MTFkMCwgMHgwODBjLCAweGIyN2QsIDB4MDU3MCwgMHgyYjAwLCAweDYwMTIsCi0JMHgyOTAwLCAweDYwMTYsIDB4NjAyMywgMHgwMDA5LCAweDYwMGIsIDB4MDAwMCwgMHhhODc0LCAweDkwOGUsCi0JMHgwMGZmLCAweDExMTAsIDB4NjAwYiwgMHg4MDAwLCAweDIwMDksIDB4MDA0MywgMHgwODBjLCAweGIzNTIsCi0JMHg5MDA2LCAweDAwYjAsIDB4MjAwMSwgMHgwMDI4LCAweDAwOTAsIDB4MjAwOSwgMHgxODBjLCAweDIxMGMsCi0JMHhkMThjLCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMzgsIDB4ZDE4NCwgMHgwMTE4LCAweDIwMDEsCi0JMHgwMDA0LCAweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDkwMDUsCi0JMHgwMTJlLCAweDAwZWUsIDB4MDBiZSwgMHgwMDA1LCAweDIwMDEsIDB4MDAyYywgMHgwY2MwLCAweDAwYjYsCi0JMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE5NzQsIDB4OTE4MiwgMHgwODAwLCAweDFhMDQsCi0JMHg2MzFkLCAweDkxODgsIDB4MTAwMCwgMHgyMTA0LCAweDkwNWQsIDB4MDkwNCwgMHg2MmY1LCAweGI4YTAsCi0JMHg5MDg2LCAweDAwN2YsIDB4MDE5MCwgMHhhODdjLCAweGQwZmMsIDB4MTE3OCwgMHgwODBjLCAweDZhYWIsCi0JMHgwMTYwLCAweGE5OTQsIDB4ODFmZiwgMHgwMTMwLCAweDkwOGUsIDB4MDAwNCwgMHgwMTMwLCAweDkwOGUsCi0JMHgwMDA1LCAweDAxMTgsIDB4MDgwYywgMHg2YWEzLCAweDE1OTgsIDB4YTg3YywgMHhkMGZjLCAweDAxZTAsCi0JMHhhODk0LCAweDkwMDUsIDB4MDFjOCwgMHgyMDYwLCAweDAwMjYsIDB4MjAxMCwgMHgwODBjLCAweGQwYzYsCi0JMHgwMDJlLCAweDExMjAsIDB4MjAwMSwgMHgwMDA4LCAweDA4MDQsIDB4NjMxZiwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDBhLCAweDAxMjAsIDB4MjAwMSwgMHgwMDA4LCAweDA4MDQsIDB4NjMxZiwgMHg2MDFhLCAweDYwMDMsCi0JMHgwMDA4LCAweDI5MDAsIDB4NjAxNiwgMHgwMDU4LCAweDA4MGMsIDB4YjI3ZCwgMHgwNWU4LCAweDJiMDAsCi0JMHg2MDEyLCAweDI5MDAsIDB4NjAxNiwgMHg2MDBiLCAweGZmZmYsIDB4NjAyMywgMHgwMDBhLCAweDIwMDksCi0JMHgwMDAzLCAweDA4MGMsIDB4YjM1MiwgMHg5MDA2LCAweDA0NTgsIDB4MjAwMSwgMHgwMDI4LCAweDA0MzgsCi0JMHg5MDgyLCAweDAwMDYsIDB4MTI5MCwgMHgwODBjLCAweGIyM2QsIDB4MTE2MCwgMHhiOGEwLCAweDkwODQsCi0JMHhmZjgwLCAweDExNDAsIDB4YjkwMCwgMHhkMWZjLCAweDA5MDAsIDB4MjAwMSwgMHgwMDI5LCAweDIwMDksCi0JMHgxMDAwLCAweDAwYTgsIDB4MjAwMSwgMHgwMDI4LCAweDAwOTAsIDB4MjAwOSwgMHgxODBjLCAweDIxMGMsCi0JMHhkMThjLCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwNTAsIDB4ZDE4NCwgMHgwMTE4LCAweDIwMDEsCi0JMHgwMDA0LCAweDAwMjgsIDB4MjAwMSwgMHgwMDI5LCAweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDkwMDUsCi0JMHgwMTJlLCAweDAwZWUsIDB4MDBiZSwgMHgwMDA1LCAweDIwMDEsIDB4MDAyYywgMHgwY2MwLCAweDAwZjYsCi0JMHgwMGI2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE4ZTAsIDB4OTAwNSwgMHgxNTUwLCAweGE4ZGMsCi0JMHg5MDgyLCAweDAxMDEsIDB4MTYzMCwgMHhhOGM4LCAweDkwMDUsIDB4MTUxOCwgMHhhOGM0LCAweDkwODIsCi0JMHgwMTAxLCAweDEyZjgsIDB4YTk3NCwgMHgyMDc5LCAweDE4MDAsIDB4OTE4MiwgMHgwODAwLCAweDEyZTgsCi0JMHg3ODMwLCAweDkwODQsIDB4MDAwMywgMHgxMTMwLCAweGFhOTgsIDB4YWI5NCwgMHhhODc4LCAweDkwODQsCi0JMHgwMDA3LCAweDAwZWEsIDB4NzkzMCwgMHhkMThjLCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMzgsCi0JMHhkMTg0LCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsCi0JMHgwMDM4LCAweDIwMDEsIDB4MDAyYywgMHg5MDBlLCAweDAwMTgsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsCi0JMHg5MDA2LCAweDAwMDgsIDB4OTAwNSwgMHgwMTJlLCAweDAwYmUsIDB4MDBmZSwgMHgwMDA1LCAweDYzYjQsCi0JMHg2MzZmLCAweDYzODYsIDB4NjNiNCwgMHg2M2I0LCAweDYzYjQsIDB4NjNiNCwgMHg2M2I0LCAweDIxMDAsCi0JMHg5MDgyLCAweDAwN2UsIDB4MTI3OCwgMHgwODBjLCAweDY2YjksIDB4MDE0OCwgMHg5MDQ2LCAweGI4MTAsCi0JMHg5MzA2LCAweDE5MDQsIDB4NjNiYywgMHhiODE0LCAweDkyMDYsIDB4MTVmMCwgMHgwMDI4LCAweGJiMTIsCi0JMHhiYTE2LCAweDAwMTAsIDB4MDgwYywgMHg0YWY3LCAweDAxNTAsIDB4MDRiMCwgMHgwODBjLCAweDY3MjQsCi0JMHgxNTk4LCAweGI4MTAsIDB4OTMwNiwgMHgxNTgwLCAweGI4MTQsIDB4OTIwNiwgMHgxNTY4LCAweDA4MGMsCi0JMHhiMjdkLCAweDA1MzAsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsIDB4ZDU1NCwgMHgyOTAwLCAweDYwMTYsCi0JMHg2MDBiLCAweGZmZmYsIDB4NjAyMywgMHgwMDBhLCAweGE4NzgsIDB4OTA4NiwgMHgwMDAxLCAweDExNzAsCi0JMHgwODBjLCAweDMyNTAsIDB4OTAwNiwgMHgwODBjLCAweDY2NTYsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsCi0JMHg2NjZhLCAweDIwMDEsIDB4MDIwMCwgMHhiODZlLCAweGI4OTMsIDB4MDAwMiwgMHgyMDA5LCAweDAwMDMsCi0JMHgwODBjLCAweGIzNTIsIDB4OTAwNiwgMHgwMDY4LCAweDIwMDEsIDB4MDAwMSwgMHg5MDBlLCAweDAwMzgsCi0JMHgyMDAxLCAweDAwMmMsIDB4OTAwZSwgMHgwMDE4LCAweDIwMDEsIDB4MDAyOCwgMHg5MDBlLCAweDkwMDUsCi0JMHgwMDAwLCAweDAxMmUsIDB4MDBiZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGY2LCAweDAwZTYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHhhODk0LCAweDkwYzYsIDB4MDAxNSwgMHgwOTA0LCAweDY1YTcsCi0JMHg5MGM2LCAweDAwNTYsIDB4MDkwNCwgMHg2NWFiLCAweDkwYzYsIDB4MDA2NiwgMHgwOTA0LCAweDY1YWYsCi0JMHg5MGM2LCAweDAwNjcsIDB4MDkwNCwgMHg2NWIzLCAweDkwYzYsIDB4MDA2OCwgMHgwOTA0LCAweDY1YjcsCi0JMHg5MGM2LCAweDAwNzEsIDB4MDkwNCwgMHg2NWJiLCAweDkwYzYsIDB4MDA3NCwgMHgwOTA0LCAweDY1YmYsCi0JMHg5MGM2LCAweDAwN2MsIDB4MDkwNCwgMHg2NWMzLCAweDkwYzYsIDB4MDA3ZSwgMHgwOTA0LCAweDY1YzcsCi0JMHg5MGM2LCAweDAwMzcsIDB4MDkwNCwgMHg2NWNiLCAweDkwMTYsIDB4MjA3OSwgMHgxODAwLCAweGE5NzQsCi0JMHg5MTg2LCAweDAwZmYsIDB4MDkwNCwgMHg2NWEyLCAweDkxODIsIDB4MDgwMCwgMHgxYTA0LCAweDY1YTIsCi0JMHgwODBjLCAweDY3MjQsIDB4MTE5OCwgMHhiODA0LCAweDkwODQsIDB4MDBmZiwgMHg5MDgyLCAweDAwMDYsCi0JMHgxMjY4LCAweGE4OTQsIDB4OTBjNiwgMHgwMDZmLCAweDAxNDgsIDB4MDgwYywgMHhiMjNkLCAweDE5MDQsCi0JMHg2NThiLCAweGI4YTAsIDB4OTA4NCwgMHhmZjgwLCAweDE5MDQsIDB4NjU4YiwgMHhhODk0LCAweDkwYzYsCi0JMHgwMDZmLCAweDAxNTgsIDB4OTBjNiwgMHgwMDVlLCAweDA5MDQsIDB4NjRlYiwgMHg5MGM2LCAweDAwNjQsCi0JMHgwOTA0LCAweDY1MTQsIDB4MjAwOCwgMHgwODA0LCAweDY0YWQsIDB4YTk5OCwgMHhhOGIwLCAweDIwNDAsCi0JMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHg5MTgyLCAweDAwN2YsIDB4MGEwNCwgMHg2NGFkLCAweDkxODYsCi0JMHgwMGZmLCAweDA5MDQsIDB4NjRhZCwgMHg5MTgyLCAweDA4MDAsIDB4MWEwNCwgMHg2NGFkLCAweGFhYTAsCi0JMHhhYjljLCAweDc4N2MsIDB4OTMwNiwgMHgxMWE4LCAweDc4ODAsIDB4MDA5NiwgMHg5MjRlLCAweDExMjgsCi0JMHgyMjA4LCAweDIzMTAsIDB4MDA5ZSwgMHgwODA0LCAweDY0YWQsIDB4MDgwYywgMHhiMjNkLCAweDExNDAsCi0JMHg5OWNjLCAweGZmMDAsIDB4MDA5ZSwgMHgxMTI4LCAweDIyMDgsIDB4MjMxMCwgMHgwODA0LCAweDY0YWQsCi0JMHgwMDllLCAweDA4MGMsIDB4NGFmNywgMHgwOTA0LCAweDY0YjcsIDB4OTAwZSwgMHg5MDE2LCAweDkwYzYsCi0JMHg0MDAwLCAweDE1ZTAsIDB4MDAwNiwgMHgwODBjLCAweDY5NDQsIDB4MTEwOCwgMHhjMTg1LCAweGI4MDAsCi0JMHhkMGJjLCAweDAxMDgsIDB4YzE4ZCwgMHgyMGE5LCAweDAwMDQsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMzEsIDB4MjBhMCwgMHhiOGM0LCAweDIwZTAsIDB4YjhjOCwgMHg5MDgwLCAweDAwMDYsCi0JMHgyMDk4LCAweDA4MGMsIDB4MGY4YiwgMHgyMGE5LCAweDAwMDQsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMzUsIDB4MjBhMCwgMHhiOGM0LCAweDIwZTAsIDB4YjhjOCwgMHg5MDgwLCAweDAwMGEsCi0JMHgyMDk4LCAweDA4MGMsIDB4MGY4YiwgMHhhOGM0LCAweGFiYzgsIDB4OTMwNSwgMHhhYmNjLCAweDkzMDUsCi0JMHhhYmQwLCAweDkzMDUsIDB4YWJkNCwgMHg5MzA1LCAweGFiZDgsIDB4OTMwNSwgMHhhYmRjLCAweDkzMDUsCi0JMHhhYmUwLCAweDkzMDUsIDB4OTAwNSwgMHgwNTEwLCAweDAwMGUsIDB4MDBjOCwgMHg5MGM2LCAweDQwMDcsCi0JMHgxMTEwLCAweDI0MDgsIDB4MDBhMCwgMHg5MGM2LCAweDQwMDgsIDB4MTExOCwgMHgyNzA4LCAweDI2MTAsCi0JMHgwMDcwLCAweDkwYzYsIDB4NDAwOSwgMHgxMTA4LCAweDAwNTAsIDB4OTBjNiwgMHg0MDA2LCAweDAxMzgsCi0JMHgyMDAxLCAweDQwMDUsIDB4MjAwOSwgMHgwMDBhLCAweDAwMTAsIDB4MjAwMSwgMHg0MDA2LCAweGE4OTYsCi0JMHhhOTlhLCAweGFhOWUsIDB4MjAwMSwgMHgwMDMwLCAweDkwMGUsIDB4MDQ3OCwgMHgwMDBlLCAweDA4MGMsCi0JMHhiMjdkLCAweDExMzAsIDB4MjAwMSwgMHg0MDA1LCAweDIwMDksIDB4MDAwMywgMHg5MDE2LCAweDBjNzgsCi0JMHgyYjAwLCAweDYwMTIsIDB4MDgwYywgMHhkNTU0LCAweDI5MDAsIDB4NjAxNiwgMHg2MDIzLCAweDAwMDEsCi0JMHhhODY4LCAweGQ4OGMsIDB4MDEwOCwgMHhjMGY1LCAweGE4NmEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweDMyNTAsIDB4MDEyZSwgMHg5MDA2LCAweDA4MGMsIDB4NjY1NiwgMHgyMDAxLCAweDAwMDIsCi0JMHgwODBjLCAweDY2NmEsIDB4MjAwOSwgMHgwMDAyLCAweDA4MGMsIDB4YjM1MiwgMHhhOGIwLCAweGQwOTQsCi0JMHgwMTE4LCAweGI4Y2MsIDB4YzA4ZCwgMHhiOGNlLCAweDkwMDYsIDB4OTAwNSwgMHgwMTJlLCAweDAwZWUsCi0JMHgwMGZlLCAweDAwYmUsIDB4MDAwNSwgMHgwODBjLCAweDU3ZTksIDB4MDExOCwgMHgyMDA5LCAweDAwMDcsCi0JMHgwMGY4LCAweGE5OTgsIDB4YWViMCwgMHgwODBjLCAweDY3MjQsIDB4MTkwNCwgMHg2NGE4LCAweDkxODYsCi0JMHgwMDdmLCAweDAxMzAsIDB4MDgwYywgMHg2YWEzLCAweDAxMTgsIDB4MjAwOSwgMHgwMDA5LCAweDAwODAsCi0JMHgwMDk2LCAweDA4MGMsIDB4MTAwZSwgMHgxMTIwLCAweDAwOWUsIDB4MjAwOSwgMHgwMDAyLCAweDAwNDAsCi0JMHgyOTAwLCAweDAwOWUsIDB4YTgwNiwgMHgwODBjLCAweGQyYzAsIDB4MTliMCwgMHgyMDA5LCAweDAwMDMsCi0JMHgyMDAxLCAweDQwMDUsIDB4MDgwNCwgMHg2NGFmLCAweGE5OTgsIDB4YWViMCwgMHgwODBjLCAweDY3MjQsCi0JMHgxOTA0LCAweDY0YTgsIDB4MDA5NiwgMHgwODBjLCAweDEwMGUsIDB4MTEyOCwgMHgwMDllLCAweDIwMDksCi0JMHgwMDAyLCAweDA4MDQsIDB4NjU2OCwgMHgyOTAwLCAweDAwOWUsIDB4YTgwNiwgMHgwMDk2LCAweDIwNDgsCi0JMHgyMGE5LCAweDAwMmIsIDB4YjhjNCwgMHgyMGUwLCAweGI4YzgsIDB4MjA5OCwgMHhhODYwLCAweDIwZTgsCi0JMHhhODVjLCAweDkwODAsIDB4MDAwMiwgMHgyMGEwLCAweDQwMDMsIDB4MjBhOSwgMHgwMDA4LCAweDkwODAsCi0JMHgwMDA2LCAweDIwYTAsIDB4YmJjOCwgMHg5Mzk4LCAweDAwMDYsIDB4MjM5OCwgMHgwODBjLCAweDBmOGIsCi0JMHgwMDllLCAweGE4N2IsIDB4MDAwMCwgMHhhODgzLCAweDAwMDAsIDB4YTg5NywgMHg0MDAwLCAweGQ2ODQsCi0JMHgxMTY4LCAweDA4MGMsIDB4NTdkNSwgMHhkMGI0LCAweDExMTgsIDB4YTg5YiwgMHgwMDBiLCAweDAwZTAsCi0JMHhiODAwLCAweGQwOGMsIDB4MDExOCwgMHhhODliLCAweDAwMGMsIDB4MDBiMCwgMHgwODBjLCAweDZhYTMsCi0JMHgwMTE4LCAweGE4OWIsIDB4MDAwOSwgMHgwMDgwLCAweDA4MGMsIDB4NTdlOSwgMHgwMTE4LCAweGE4OWIsCi0JMHgwMDA3LCAweDAwNTAsIDB4MDgwYywgMHhkMmEzLCAweDE5MDQsIDB4NjRlNCwgMHgyMDA5LCAweDAwMDMsCi0JMHgyMDAxLCAweDQwMDUsIDB4MDgwNCwgMHg2NGFmLCAweGE4N2IsIDB4MDAzMCwgMHhhODk3LCAweDQwMDUsCi0JMHhhODA0LCAweDgwMDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwYmMsIDB4MDAzZiwgMHg5MDg0LCAweGZmYzAsCi0JMHg5MDgwLCAweDAwMDIsIDB4MjAwOSwgMHgwMDJiLCAweGFhYTAsIDB4YWI5YywgMHhhY2E4LCAweGFkYTQsCi0JMHgyMDMxLCAweDAwMDAsIDB4MjA0MSwgMHgxMjUyLCAweDA4MGMsIDB4YjdmMSwgMHgxOTA0LCAweDY0ZTQsCi0JMHgyMDA5LCAweDAwMDIsIDB4MDhlOCwgMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwgMHgwODA0LCAweDY0ZTUsCi0JMHgyMDA5LCAweDE4MGMsIDB4MjEwYywgMHhkMThjLCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMzgsCi0JMHhkMTg0LCAweDAxMTgsIDB4MjAwMSwgMHgwMDA0LCAweDAwMTAsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsCi0JMHgwODA0LCAweDY0ZTUsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsIDB4MDgwNCwgMHg2NGU1LCAweDA4MGMsCi0JMHgzN2U5LCAweDA4MDQsIDB4NjRlNiwgMHgwODBjLCAweDU1MDAsIDB4MDgwNCwgMHg2NGU2LCAweDA4MGMsCi0JMHg0NjM3LCAweDA4MDQsIDB4NjRlNiwgMHgwODBjLCAweDQ2YjAsIDB4MDgwNCwgMHg2NGU2LCAweDA4MGMsCi0JMHg0NzBjLCAweDA4MDQsIDB4NjRlNiwgMHgwODBjLCAweDRiYmEsIDB4MDgwNCwgMHg2NGU2LCAweDA4MGMsCi0JMHg0ZTgyLCAweDA4MDQsIDB4NjRlNiwgMHgwODBjLCAweDUxNjcsIDB4MDgwNCwgMHg2NGU2LCAweDA4MGMsCi0JMHg1MzYwLCAweDA4MDQsIDB4NjRlNiwgMHgwODBjLCAweDNhMjUsIDB4MDgwNCwgMHg2NGU2LCAweDAwYjYsCi0JMHhhOTc0LCAweGFlNzgsIDB4OTY4NCwgMHgzZmZmLCAweDkwODIsIDB4NDAwMCwgMHgxNjE4LCAweDkxODIsCi0JMHgwODAwLCAweDEyNjgsIDB4OTE4OCwgMHgxMDAwLCAweDIxMDQsIDB4OTA1ZCwgMHgwMTQwLCAweDA4MGMsCi0JMHg2YWEzLCAweDExNDgsIDB4MDBlOSwgMHgwODBjLCAweDY4NGYsIDB4OTAwNiwgMHgwMGIwLCAweDIwMDEsCi0JMHgwMDI4LCAweDkwMGUsIDB4MDA5MCwgMHg5MDgyLCAweDAwMDYsIDB4MTI0MCwgMHhiOTAwLCAweGQxZmMsCi0JMHgwZDg4LCAweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDEwMDAsIDB4MDAzOCwgMHgyMDAxLCAweDAwMjksCi0JMHg5MDBlLCAweDAwMTgsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsIDB4OTAwNSwgMHgwMGJlLCAweDAwMDUsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHhiODUwLCAweDkwMGQsIDB4MDE1MCwgMHgyOTAwLCAweDAwOTYsCi0JMHgyMTQ4LCAweGE4MDIsIDB4MDA5ZSwgMHhhODAzLCAweDAwMDAsIDB4Yjg1MiwgMHgwMTJlLCAweDAwMDUsCi0JMHgyOTAwLCAweGI4NTIsIDB4Yjg0ZSwgMHhhODAzLCAweDAwMDAsIDB4MGNjMCwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweGI4NGMsIDB4OTAwNSwgMHgwMTcwLCAweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDcwMDQsCi0JMHg5MDg2LCAweDAwMDIsIDB4MDE2OCwgMHgwMGVlLCAweGI4NGMsIDB4YTgwMiwgMHgyOTAwLCAweGI4NGUsCi0JMHgwMTJlLCAweDAwMDUsIDB4MjkwMCwgMHhiODUyLCAweGI4NGUsIDB4YTgwMywgMHgwMDAwLCAweDBjYzAsCi0JMHg3MDFjLCAweDliMDYsIDB4MWQ4MCwgMHhiODRjLCAweDAwYTYsIDB4MjA1MCwgMHhiMDAwLCAweGE4MDIsCi0JMHgyOTAwLCAweGIwMDIsIDB4MDBhZSwgMHgwMGVlLCAweDAxMmUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweGI4NGMsIDB4OTA0ZCwgMHgwMTMwLCAweGE4MDAsIDB4OTAwNSwgMHgxMTA4LCAweGI4NTIsCi0JMHhiODRlLCAweDk5MDUsIDB4MDEyZSwgMHgwMDA1LCAweGI4NGMsIDB4OTA0ZCwgMHgwMTMwLCAweGE4MDAsCi0JMHg5MDA1LCAweDExMDgsIDB4Yjg1MiwgMHhiODRlLCAweDk5MDUsIDB4MDAwNSwgMHgwMGI2LCAweDAxMjYsCi0JMHgwMGM2LCAweDAwMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTAsIDB4MjI1OCwgMHhiYTAwLCAweDkwMDUsCi0JMHgwMTEwLCAweGMyODUsIDB4MDAwOCwgMHhjMjg0LCAweGJhMDIsIDB4MDAyZSwgMHgwMGNlLCAweDAxMmUsCi0JMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMTI2LCAweDAwYzYsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTAsCi0JMHgyMjU4LCAweGJhMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwMDYsIDB4MTE3MCwgMHhiODljLCAweGQwYWMsCi0JMHgwMTU4LCAweDA4MGMsIDB4NmE5ZiwgMHgwMTQwLCAweDkyODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwODYsCi0JMHgwMDA3LCAweDExMTAsIDB4MjAxMSwgMHgwNjAwLCAweDAwMGUsIDB4OTI5NCwgMHhmZjAwLCAweDkyMTUsCi0JMHhiYTA2LCAweDAwMDYsIDB4OTA4NiwgMHgwMDA2LCAweDExMjAsIDB4YmE5MCwgMHg4MmZmLCAweDA5MGMsCi0JMHgwZGM1LCAweDAwMGUsIDB4MDBjZSwgMHgwMTJlLCAweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAxMjYsCi0JMHgwMGM2LCAweDIwOTEsIDB4ODAwMCwgMHg2MjEwLCAweDIyNTgsIDB4YmEwNCwgMHgwMDA2LCAweDkwODYsCi0JMHgwMDA2LCAweDExNjgsIDB4Yjg5YywgMHhkMGE0LCAweDAxNTAsIDB4MDgwYywgMHg2YTliLCAweDExMzgsCi0JMHg5Mjg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDA3LCAweDExMTAsIDB4MjAxMSwgMHgwMDA2LCAweDAwMGUsCi0JMHg5Mjk0LCAweDAwZmYsIDB4ODAwNywgMHg5MjE1LCAweGJhMDYsIDB4MDBjZSwgMHgwMTJlLCAweDAwYmUsCi0JMHgwMDA1LCAweDkxODIsIDB4MDgwMCwgMHgwMjE4LCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwZDYsCi0JMHgwMDI2LCAweDkxOTAsIDB4MTAwMCwgMHgyMjA0LCAweDkwNWQsIDB4MTE4OCwgMHgwMDk2LCAweDA4MGMsCi0JMHgxMDBlLCAweDI5NTgsIDB4MDA5ZSwgMHgwMTY4LCAweDJiMDAsIDB4MjAxMiwgMHhiODVjLCAweGI4Y2EsCi0JMHhiODYwLCAweGI4YzYsIDB4OTAwNiwgMHhiOGE2LCAweGI4YWUsIDB4MDgwYywgMHg2MTQ4LCAweDkwMDYsCi0JMHgwMDEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDJlLCAweDAwZGUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMDI2LCAweDkxODIsIDB4MDgwMCwgMHgwMjE4LCAweDkwODUsCi0JMHgwMDAxLCAweDA0YTgsIDB4MDBkNiwgMHg5MTkwLCAweDEwMDAsIDB4MjIwNCwgMHg5MDVkLCAweDA1NjgsCi0JMHgyMDEzLCAweDAwMDAsIDB4YjhhNCwgMHg5MDRkLCAweDAxMTAsIDB4MDgwYywgMHgxMDQwLCAweDAwZDYsCi0JMHgwMGM2LCAweGI4YmMsIDB4MjA2MCwgMHg4Y2ZmLCAweDAxNjgsIDB4NjAwYywgMHgwMDA2LCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTEwLCAweDA4MGMsIDB4MGZjMCwgMHgwODBjLCAweGIyZDMsCi0JMHgwMGNlLCAweDBjODgsIDB4MDBjZSwgMHgwMGRlLCAweDAwYzYsIDB4YjhhYywgMHg5MDY1LCAweDAxMjgsCi0JMHg2MjFjLCAweGQyYzQsIDB4MDExMCwgMHgwODBjLCAweDkwOTYsIDB4MDBjZSwgMHgyYjQ4LCAweGI4YzgsCi0JMHhiODVlLCAweGI4YzQsIDB4Yjg2MiwgMHgwODBjLCAweDEwNTAsIDB4MDBkZSwgMHg5MDA2LCAweDAwMmUsCi0JMHgwMTJlLCAweDAwOWUsIDB4MDBiZSwgMHgwMDA1LCAweDAwMTYsIDB4OTE4MiwgMHgwODAwLCAweDAyMTgsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAzMCwgMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwgMHg5MDVkLCAweDBkYzAsCi0JMHg5MDA2LCAweDAwMWUsIDB4MDAwNSwgMHgwMGQ2LCAweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDkwMDYsCi0JMHhiODBhLCAweGI4MGUsIDB4YjgwMCwgMHhjMDhjLCAweGI4MDIsIDB4MDgwYywgMHg3NjM3LCAweDE1MTAsCi0JMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgwMTIwLCAweDA4MGMsIDB4YjIzZCwgMHgxMWQ4LCAweDAwNzgsCi0JMHg3MDQwLCAweGQwZTQsIDB4MDFiOCwgMHgwMGM2LCAweDIwNjEsIDB4MTk4MiwgMHg3MDQ4LCAweDIwNjIsCi0JMHg3MDRjLCAweDYwMDYsIDB4NzA1MCwgMHg2MDBhLCAweDcwNTQsIDB4NjAwZSwgMHgwMGNlLCAweDcwM2MsCi0JMHgyMDY5LCAweDAxNDAsIDB4OTAwNSwgMHgxMTEwLCAweDIwMDEsIDB4MDAwMSwgMHg2ODg2LCAweDIwNjksCi0JMHgxODAwLCAweDY4YjYsIDB4NzA0MCwgMHhiODVlLCAweDcwNDgsIDB4Yjg2MiwgMHg3MDRjLCAweGI4NjYsCi0JMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjc2LCAweGI4YzQsIDB4MjBlOCwgMHhiOGM4LCAweDkwODgsCi0JMHgwMDBhLCAweDIxYTAsIDB4MjBhOSwgMHgwMDA0LCAweDQwMDMsIDB4MjA5OSwgMHgwMjdhLCAweDkwODgsCi0JMHgwMDA2LCAweDIxYTAsIDB4MjBhOSwgMHgwMDA0LCAweDQwMDMsIDB4MjA2OSwgMHgwMjAwLCAweDY4MTcsCi0JMHgwMDAxLCAweDcwNDAsIDB4Yjg2YSwgMHg3MTQ0LCAweGI5NmUsIDB4NzA0OCwgMHhiODcyLCAweDcwNTAsCi0JMHhiODc2LCAweDIwNjksIDB4MDIwMCwgMHg2ODE3LCAweDAwMDAsIDB4YjhhMCwgMHg5MDg2LCAweDAwN2UsCi0JMHgxMTEwLCAweDcxNDQsIDB4Yjk2ZSwgMHg5MTgyLCAweDAyMTEsIDB4MTIxOCwgMHgyMDA5LCAweDAwMDgsCi0JMHgwNDAwLCAweDkxODIsIDB4MDI1OSwgMHgxMjE4LCAweDIwMDksIDB4MDAwNywgMHgwMGQwLCAweDkxODIsCi0JMHgwMmMxLCAweDEyMTgsIDB4MjAwOSwgMHgwMDA2LCAweDAwYTAsIDB4OTE4MiwgMHgwMzQ5LCAweDEyMTgsCi0JMHgyMDA5LCAweDAwMDUsIDB4MDA3MCwgMHg5MTgyLCAweDA0MjEsIDB4MTIxOCwgMHgyMDA5LCAweDAwMDQsCi0JMHgwMDQwLCAweDkxODIsIDB4MDU4MSwgMHgxMjE4LCAweDIwMDksIDB4MDAwMywgMHgwMDEwLCAweDIwMDksCi0JMHgwMDAyLCAweGI5OTIsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDBkZSwgMHgwMDA1LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwZTYsIDB4MjA3MSwgMHgwMjYwLCAweDcwMzQsIDB4Yjg5NiwgMHg3MDNjLCAweGI4OWEsCi0JMHg3MDU0LCAweGI4OWUsIDB4MDAzNiwgMHhiYmNjLCAweGMzODQsIDB4YmEwMCwgMHgyMDA5LCAweDE4NjcsCi0JMHgyMTBjLCAweGQwYmMsIDB4MDEyMCwgMHhkMWVjLCAweDAxMTAsIDB4YzJhZCwgMHgwMDA4LCAweGMyYWMsCi0JMHhkMGM0LCAweDAxNDgsIDB4ZDFlNCwgMHgwMTM4LCAweGMyYmQsIDB4ZDBjYywgMHgwMTI4LCAweGQzOGMsCi0JMHgxMTA4LCAweGMzODUsIDB4MDAwOCwgMHhjMmJjLCAweGJhMDIsIDB4YmJjZSwgMHgwMDNlLCAweDAwZWUsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDk2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGI4YTQsCi0JMHg5MDRkLCAweDA1NzgsIDB4YTkwMCwgMHg4MWZmLCAweDE1YzAsIDB4YWEwNCwgMHg5MjgyLCAweDAwMTAsCi0JMHgxNmM4LCAweDAxMzYsIDB4MDE0NiwgMHgwMWM2LCAweDAxZDYsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsCi0JMHg5MDhjLCAweDAwM2YsIDB4MjFlMCwgMHg5MDg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDA0LCAweDIwOTgsCi0JMHgyMDA5LCAweDAwMTAsIDB4MjBhOSwgMHgwMDAxLCAweDQwMDIsIDB4OTA4NiwgMHhmZmZmLCAweDAxMjAsCi0JMHg4MTA5LCAweDFkZDAsIDB4MDgwYywgMHgwZGM1LCAweDNjMDAsIDB4MjBlOCwgMHgzMzAwLCAweDgwMDEsCi0JMHgyMGEwLCAweDQ2MDQsIDB4ODIxMCwgMHhhYTA2LCAweDAxZGUsIDB4MDFjZSwgMHgwMTRlLCAweDAxM2UsCi0JMHgwMDYwLCAweDA4MGMsIDB4MTAwZSwgMHgwMTcwLCAweDI5MDAsIDB4YjhhNiwgMHhhODAzLCAweDAwMDAsCi0JMHgwODBjLCAweDY4ZTAsIDB4YTgwNywgMHgwMDAxLCAweGFlMTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsCi0JMHgwMDllLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwOTYsCi0JMHhiOGE0LCAweDkwNGQsIDB4MDE4OCwgMHhhODAwLCAweDkwMDUsIDB4MTE1MCwgMHgwODBjLCAweDY4ZWYsCi0JMHgxMTU4LCAweGE4MDQsIDB4OTA4YSwgMHgwMDAyLCAweDAyMTgsIDB4ODAwMSwgMHhhODA2LCAweDAwMjAsCi0JMHgwODBjLCAweDEwNDAsIDB4YjhhNywgMHgwMDAwLCAweDAwOWUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg5NTFjLCAweDAxMmUsIDB4MDAwNSwgMHg5MDFlLCAweDAwMTAsCi0JMHgyMDE5LCAweDAwMDEsIDB4OTAwZSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHhiODRjLCAweDIwNDgsCi0JMHhiODAwLCAweGQwZGMsIDB4MTE3MCwgMHg4OWZmLCAweDA1MDAsIDB4ODNmZiwgMHgwMTIwLCAweGE4NzgsCi0JMHg5NjA2LCAweDAxNTgsIDB4MDAzMCwgMHhhODZjLCAweDk0MDYsIDB4MTExOCwgMHhhODcwLCAweDk1MDYsCi0JMHgwMTIwLCAweDI5MDgsIDB4YTgwMCwgMHgyMDQ4LCAweDBjNzAsIDB4MDgwYywgMHhhYWYxLCAweGFhMDAsCi0JMHhiODRjLCAweDk5MDYsIDB4MTExMCwgMHhiYTRlLCAweDAwMjAsIDB4MDBhNiwgMHgyMTUwLCAweGIyMDIsCi0JMHgwMGFlLCAweDgyZmYsIDB4MTExMCwgMHhiOTUyLCAweDg5ZmYsIDB4MDEyZSwgMHgwMDA1LCAweDkwMTYsCi0JMHgwNDg5LCAweDExMTAsIDB4MjAxMSwgMHgwMDAxLCAweDAwMDUsIDB4MDgwYywgMHg2OTQ0LCAweDAxMjgsCi0JMHgwODBjLCAweGQxOTUsIDB4MDAxMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwODBjLCAweDY5NDQsCi0JMHgwMTI4LCAweDA4MGMsIDB4ZDEzYSwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDA4MGMsCi0JMHg2OTQ0LCAweDAxMjgsIDB4MDgwYywgMHhkMTkyLCAweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsCi0JMHgwODBjLCAweDY5NDQsIDB4MDEyOCwgMHgwODBjLCAweGQxNTksIDB4MDAxMCwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDA1LCAweDA4MGMsIDB4Njk0NCwgMHgwMTI4LCAweDA4MGMsIDB4ZDFkOCwgMHgwMDEwLCAweDkwODUsCi0JMHgwMDAxLCAweDAwMDUsIDB4YjhhNCwgMHg5MDBkLCAweDExMTgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsCi0JMHgwMTM2LCAweDAxYzYsIDB4YTgwMCwgMHg5MDA1LCAweDExYjgsIDB4ODkwZSwgMHg4MTBlLCAweDgxMGYsCi0JMHg5MTg0LCAweDAwM2YsIDB4MjBlMCwgMHg5MTg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDA0LCAweDIwOTgsCi0JMHgyMGE5LCAweDAwMDEsIDB4MjAwOSwgMHgwMDEwLCAweDQwMDIsIDB4OTYwNiwgMHgwMTI4LCAweDgxMDksCi0JMHgxZGQ4LCAweDkwODUsIDB4MDAwMSwgMHgwMDA4LCAweDkwMDYsIDB4MDFjZSwgMHgwMTNlLCAweDAwMDUsCi0JMHgwMTQ2LCAweDAxZDYsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDA0LCAweDIwYTAsCi0JMHgyMGE5LCAweDAwMTAsIDB4MjAwOSwgMHhmZmZmLCAweDQxMDQsIDB4MDFkZSwgMHgwMTRlLCAweDAxMzYsCi0JMHgwMWM2LCAweGE4MDAsIDB4OTAwNSwgMHgxMWI4LCAweDg5MGUsIDB4ODEwZSwgMHg4MTBmLCAweDkxODQsCi0JMHgwMDNmLCAweDIwZTAsIDB4OTE4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwNCwgMHgyMDk4LCAweDIwYTksCi0JMHgwMDAxLCAweDIwMDksIDB4MDAxMCwgMHg0MDAyLCAweDk2MDYsIDB4MDEyOCwgMHg4MTA5LCAweDFkZDgsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDA2OCwgMHgwMTQ2LCAweDAxZDYsIDB4MzMwMCwgMHg4MDAxLCAweDIwYTAsCi0JMHgzYzAwLCAweDIwZTgsIDB4MjAwMSwgMHhmZmZmLCAweDQwMDQsIDB4MDFkZSwgMHgwMTRlLCAweDkwMDYsCi0JMHgwMWNlLCAweDAxM2UsIDB4MDAwNSwgMHgwMDk2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGI4YTQsCi0JMHg5MDRkLCAweDExMjgsIDB4MDgwYywgMHgxMDBlLCAweDAxNjgsIDB4MjkwMCwgMHhiOGE2LCAweDA4MGMsCi0JMHg2OGUwLCAweGE4MDMsIDB4MDAwMSwgMHhhODA3LCAweDAwMDAsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsCi0JMHgwMDllLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDAwOTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHhiOGE0LCAweDkwNGQsIDB4MDEzMCwgMHhiOGE3LCAweDAwMDAsIDB4MDgwYywgMHgxMDQwLCAweDkwODUsCi0JMHgwMDAxLCAweDAxMmUsIDB4MDA5ZSwgMHgwMDA1LCAweGI4OWMsIDB4ZDBhNCwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMGY2LCAweDA4MGMsIDB4NzYzNywgMHgwMWIwLCAweDcxYzQsIDB4ODFmZiwgMHgxMTk4LCAweDcxZGMsCi0JMHhkMTljLCAweDAxODAsIDB4MjAwMSwgMHgwMDdlLCAweDkwODAsIDB4MTAwMCwgMHgyMDA0LCAweDkwNWQsCi0JMHgwMTQ4LCAweGI4MDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwNiwgMHgxMTE4LCAweGI4MDAsCi0JMHhjMGVkLCAweGI4MDIsIDB4MjA3OSwgMHgxODQ3LCAweDc4MDQsIDB4ZDBhNCwgMHgwMWQwLCAweDAxNTYsCi0JMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwMDE2LCAweDA4MGMsIDB4NjcyNCwgMHgxMTY4LCAweGI4MDQsCi0JMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHg5MDk2LCAweDAwMDQsIDB4MDExOCwgMHg5MDg2LCAweDAwMDYsCi0JMHgxMTE4LCAweGI4MDAsIDB4YzBlZCwgMHhiODAyLCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDY5NmIsCi0JMHgwMTVlLCAweDA4MGMsIDB4NmE2MSwgMHgwMTIwLCAweDIwMDEsIDB4MTk4NSwgMHgyMDBjLCAweDAwOTgsCi0JMHgyMDc5LCAweDE4NDcsIDB4NzgwNCwgMHhkMGE0LCAweDAxOTAsIDB4MjAwOSwgMHgwN2QwLCAweDIwMDEsCi0JMHgxODJjLCAweDIwMDQsIDB4OTAwNSwgMHgwMTM4LCAweDIwMDEsIDB4MTg2NywgMHgyMDA0LCAweGQwZTQsCi0JMHgwMTEwLCAweDIwMDksIDB4NWRjMCwgMHgyMDExLCAweDY5YTIsIDB4MDgwYywgMHg4OGQ1LCAweDAwZmUsCi0JMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgyMDExLCAweDY5YTIsIDB4MDgwYywgMHg4ODNkLCAweDA4MGMsCi0JMHg2YTYxLCAweDAxZDgsIDB4MjAwMSwgMHgxMDdlLCAweDIwMDQsIDB4MjA1OCwgMHhiOTAwLCAweGMxZWMsCi0JMHhiOTAyLCAweDA4MGMsIDB4NmE5ZiwgMHgwMTMwLCAweDIwMDksIDB4MDdkMCwgMHgyMDExLCAweDY5YTIsCi0JMHgwODBjLCAweDg4ZDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4OTAwNiwgMHg3MDdlLCAweDcwNjAsCi0JMHg3MDgyLCAweDA4MGMsIDB4MzAwMCwgMHgwMGVlLCAweDA0YjAsIDB4MDE1NiwgMHgwMGM2LCAweDIwYTksCi0JMHgwMDdmLCAweDkwMGUsIDB4MDAxNiwgMHgwODBjLCAweDY3MjQsIDB4MTUzOCwgMHhiODAwLCAweGQwZWMsCi0JMHgwNTIwLCAweDAwNDYsIDB4YmFhMCwgMHgyMjIwLCAweDkwMDYsIDB4MjAwOSwgMHgwMDI5LCAweDA4MGMsCi0JMHhlYzMxLCAweGI4MDAsIDB4YzBlNSwgMHhjMGVjLCAweGI4MDIsIDB4MDgwYywgMHg2YTliLCAweDIwMDEsCi0JMHgwNzA3LCAweDExMjgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NSwgMHgwNzAwLCAweGI4MDYsCi0JMHgyMDE5LCAweDAwMjksIDB4MDgwYywgMHg5NmE0LCAweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweDk1NzcsCi0JMHg5MDBlLCAweDA4MGMsIDB4ZTkxYywgMHgwMDdlLCAweDAwNGUsIDB4MDAxZSwgMHg4MTA4LCAweDFmMDQsCi0JMHg2OWNhLCAweDAwY2UsIDB4MDE1ZSwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHg2MDEwLCAweDIwNTgsCi0JMHhiODAwLCAweGMwZWMsIDB4YjgwMiwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGM2LCAweDAwOTYsCi0JMHgwODBjLCAweDEwMjcsIDB4MDkwYywgMHgwZGM1LCAweDI5NTgsIDB4MDA5ZSwgMHgyMDAxLCAweDE5NmIsCi0JMHgyYjAyLCAweDhiMDcsIDB4ODAwNiwgMHg4MDA2LCAweDkwOGMsIDB4MDAzZiwgMHhiOWM2LCAweDkwOGMsCi0JMHhmZmMwLCAweGI5Y2EsIDB4YjhhZiwgMHgwMDAwLCAweDIwMDksIDB4MDBmZiwgMHgwODBjLCAweDYxNDgsCi0JMHhiODA3LCAweDAwMDYsIDB4YjgxMywgMHgwMGZmLCAweGI4MTcsIDB4ZmZmZiwgMHhiODZmLCAweDAyMDAsCi0JMHhiODZjLCAweGI4OTMsIDB4MDAwMiwgMHhiOGJiLCAweDA1MjAsIDB4YjhhMywgMHgwMGZmLCAweGI4YWYsCi0JMHgwMDAwLCAweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweDc4MTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsCi0JMHgwMGJlLCAweGQwYWMsIDB4MDAwNSwgMHg2MDEwLCAweDAwYjYsIDB4OTA1ZCwgMHgwMTA4LCAweGI4MDAsCi0JMHgwMGJlLCAweGQwYmMsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHhiODA0LCAweDkwOGMsCi0JMHgwMGZmLCAweDkxOTYsIDB4MDAwNiwgMHgwMTg4LCAweDkxOTYsIDB4MDAwNCwgMHgwMTcwLCAweDkxOTYsCi0JMHgwMDA1LCAweDAxNTgsIDB4OTA4YywgMHhmZjAwLCAweDgxMGYsIDB4OTE5NiwgMHgwMDA2LCAweDAxMjgsCi0JMHg5MTk2LCAweDAwMDQsIDB4MDExMCwgMHg5MTk2LCAweDAwMDUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwYjYsIDB4MDBmNiwgMHgyMDAxLCAweDEwN2UsIDB4MjAwNCwgMHg5MDVkLCAweDAxMTAsCi0JMHhiODAwLCAweGQwZWMsIDB4MDBmZSwgMHgwMGJlLCAweDAwMDUsIDB4MDEyNiwgMHgwMDI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDAwMDYsIDB4YmFhMCwgMHg5MjkwLCAweDEwMDAsIDB4MjIwNCwgMHg5YjA2LCAweDE5MGMsCi0JMHgwZGM1LCAweDAwMGUsIDB4YmEwMCwgMHg5MDA1LCAweDAxMTAsIDB4YzJmZCwgMHgwMDA4LCAweGMyZmMsCi0JMHhiYTAyLCAweDAwMmUsIDB4MDEyZSwgMHgwMDA1LCAweDIwMTEsIDB4MTgzNywgMHgyMjA0LCAweGQwY2MsCi0JMHgwMTM4LCAweDIwMDEsIDB4MTk4MywgMHgyMDBjLCAweDIwMTEsIDB4NmE5MSwgMHgwODBjLCAweDg4ZDUsCi0JMHgwMDA1LCAweDIwMTEsIDB4NmE5MSwgMHgwODBjLCAweDg4M2QsIDB4MjAxMSwgMHgxODM3LCAweDIyMDQsCi0JMHhjMGNjLCAweDIwMTIsIDB4MDAwNSwgMHgwODBjLCAweDU3ZDUsIDB4ZDBhYywgMHgwMDA1LCAweDA4MGMsCi0JMHg1N2Q1LCAweGQwYTQsIDB4MDAwNSwgMHgwMDE2LCAweGI5MDQsIDB4OTE4NCwgMHgwMGZmLCAweDkwOGUsCi0JMHgwMDA2LCAweDAwMWUsIDB4MDAwNSwgMHgwMDE2LCAweGI5MDQsIDB4OTE4NCwgMHhmZjAwLCAweDgwMDcsCi0JMHg5MDhlLCAweDAwMDYsIDB4MDAxZSwgMHgwMDA1LCAweDAwYjYsIDB4MDBmNiwgMHgwODBjLCAweGQ3ZTMsCi0JMHgwMTU4LCAweDcwZGMsIDB4OTA4NCwgMHgwMDI4LCAweDAxMzgsIDB4MjAwMSwgMHgxMDdmLCAweDIwMDQsCi0JMHg5MDVkLCAweDAxMTAsIDB4YjhjYywgMHhkMDk0LCAweDAwZmUsIDB4MDBiZSwgMHgwMDA1LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDc2LCAweDAwYjYsIDB4MjAwMSwgMHgxODE4LCAweDIwM2MsCi0JMHg5NzgwLCAweDMzYjYsIDB4MjAzZCwgMHg5N2JjLCAweGZmMDAsIDB4ODczZiwgMHg5MDA2LCAweDIwMTgsCi0JMHgyMDA4LCAweDkyODQsIDB4ODAwMCwgMHgwMTEwLCAweDIwMTksIDB4MDAwMSwgMHg5Mjk0LCAweDdmZmYsCi0JMHgyMTAwLCAweDk3MDYsIDB4MDE5MCwgMHg5MWEwLCAweDEwMDAsIDB4MjQwNCwgMHg5MDVkLCAweDAxNjgsCi0JMHhiODA0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDYsIDB4MTEzOCwgMHg4M2ZmLCAweDAxMTgsCi0JMHhiODljLCAweGQwYTQsIDB4MDExMCwgMHg4MjExLCAweDAxNTgsIDB4ODEwOCwgMHg4M2ZmLCAweDAxMjAsCi0JMHg5MTgyLCAweDA4MDAsIDB4MGUyOCwgMHgwMDY4LCAweDkxODIsIDB4MDA3ZSwgMHgwZTA4LCAweDAwNDgsCi0JMHgwMGJlLCAweDAwN2UsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMWUsIDB4OTA4NSwgMHgwMDAxLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwYmUsIDB4MDA3ZSwgMHgwMDRlLCAweDAwM2UsIDB4MDAxZSwgMHg5MDA2LCAweDAwMGUsCi0JMHgwMDA1LCAweDAwNDYsIDB4MDA1NiwgMHgwMDc2LCAweDAwYjYsIDB4MjEwMCwgMHg5MDg0LCAweDdmZmYsCi0JMHg5MDgwLCAweDEwMDAsIDB4MjAwNCwgMHg5MDVkLCAweDAxMzAsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDg2LCAweDAwMDYsIDB4MDU1MCwgMHg5MTg0LCAweDgwMDAsIDB4MDU4MCwgMHgyMDAxLCAweDE4MTgsCi0JMHgyMDNjLCAweDk3ODAsIDB4MzNiNiwgMHgyMDNkLCAweDk3YmMsIDB4ZmYwMCwgMHg4NzNmLCAweDkwMDYsCi0JMHgyMDIwLCAweDI0MDAsIDB4OTcwNiwgMHgwMWEwLCAweDk0YTgsIDB4MTAwMCwgMHgyNTA0LCAweDkwNWQsCi0JMHgwMTc4LCAweGI4MDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwNiwgMHgxMTQ4LCAweGI4OWMsCi0JMHhkMGE0LCAweDAxMzAsIDB4YjgxNCwgMHg5MjA2LCAweDExMTgsIDB4YjgxMCwgMHg5MzA2LCAweDAxMjgsCi0JMHg4NDIwLCAweDk0ODIsIDB4MDgwMCwgMHgwZTI4LCAweDAwNDgsIDB4OTE4YywgMHg3ZmZmLCAweDAwYmUsCi0JMHgwMDdlLCAweDAwNWUsIDB4MDA0ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg5MThjLCAweDdmZmYsCi0JMHgwMGJlLCAweDAwN2UsIDB4MDA1ZSwgMHgwMDRlLCAweDkwMDYsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsCi0JMHgwMGEwLCAweDgwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4MWRkOCwgMHgwMDBlLCAweDAwMDUsCi0JMHgwMDA2LCAweDIwMDEsIDB4MDBmOCwgMHg4MDAxLCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweDFkZDgsCi0JMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAwZTgsIDB4ODAwMSwgMHhhMDAxLCAweGEwMDEsCi0JMHhhMDAxLCAweDFkZDgsIDB4MDAwZSwgMHgwMDA1LCAweDIwNzEsIDB4MTkxMCwgMHg3MDAzLCAweDAwMDEsCi0JMHg3MDA3LCAweDAwMDAsIDB4OTAwNiwgMHg3MDEyLCAweDcwMTYsIDB4NzAxYSwgMHg3MDFlLCAweDcwMGEsCi0JMHg3MDQ2LCAweDIwMDEsIDB4MTkyMiwgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwgMHgwMDE2LCAweDAwZTYsCi0JMHgyMDcxLCAweDE5NDgsIDB4OTAwZSwgMHg3MTBhLCAweDA4MGMsIDB4NTdkNSwgMHhkMGZjLCAweDExNDAsCi0JMHgwODBjLCAweDU3ZDUsIDB4OTAwZSwgMHhkMDljLCAweDAxMDgsIDB4ODEwOCwgMHg3MTAyLCAweDA0NzAsCi0JMHgyMDAxLCAweDE4NjcsIDB4MjAwYywgMHg5MTg0LCAweDAwMDcsIDB4MDAwNiwgMHgyMDAxLCAweDE4MGQsCi0JMHgyMDA0LCAweGQwOGMsIDB4MDAwZSwgMHgwMTA4LCAweDkwMDYsIDB4MDAwMiwgMHg2Yjk4LCAweDZiOTgsCi0JMHg2Yjk4LCAweDZiOTgsIDB4NmI5OCwgMHg2YmI2LCAweDZiY2IsIDB4NmJkOSwgMHg3MDAzLCAweDAwMDMsCi0JMHgyMDA5LCAweDE4NjgsIDB4MjEwYywgMHg5MTg0LCAweGZmMDAsIDB4OTA4ZSwgMHhmZjAwLCAweDAxNDAsCi0JMHg4MDA3LCAweDkwMDUsIDB4MTExMCwgMHgyMDAxLCAweDAwMDIsIDB4ODAwMywgMHg3MDA2LCAweDAwMzAsCi0JMHg3MDA3LCAweDAwMDEsIDB4MDAxOCwgMHg3MDAzLCAweDAwMDUsIDB4MGM1MCwgMHgyMDcxLCAweDE5MTAsCi0JMHg3MDRmLCAweDAwMDAsIDB4MjA3MSwgMHgxODAwLCAweDcwZjMsIDB4MDAwMSwgMHgwMGVlLCAweDAwMWUsCi0JMHgwMDA1LCAweDcwMDMsIDB4MDAwMCwgMHgyMDcxLCAweDE5MTAsIDB4MjAwOSwgMHgxODY4LCAweDIxMGMsCi0JMHg5MTg0LCAweDdmMDAsIDB4ODAwNywgMHg5MDhjLCAweDAwMGYsIDB4MDE2MCwgMHg3MTRlLCAweDgwMDQsCi0JMHg4MDA0LCAweDgwMDQsIDB4ODAwNCwgMHgyMDcxLCAweDE4MDAsIDB4OTA4YywgMHgwMDA3LCAweDAxMjgsCi0JMHg3MGYyLCAweDBjMjAsIDB4NzA0ZiwgMHgwMDBmLCAweDBjOTAsIDB4NzBmMywgMHgwMDA1LCAweDA4ZjAsCi0JMHgwMGU2LCAweDIwNzEsIDB4MDA1MCwgMHg2ODRjLCAweDkwMDUsIDB4MTE1MCwgMHgwMGU2LCAweDIwNzEsCi0JMHgxOTEwLCAweDcwMjgsIDB4YzA4NSwgMHg3MDJhLCAweDAwZWUsIDB4OTA4NSwgMHgwMDAxLCAweDA0ODgsCi0JMHg2ODQ0LCAweDkwMDUsIDB4MDE1OCwgMHgwODBjLCAweDc5YTQsIDB4NmE2MCwgMHg5MjAwLCAweDcwMDIsCi0JMHg2ODY0LCAweDkxMDEsIDB4NzAwNiwgMHg5MDA2LCAweDcwMTIsIDB4NzAxNiwgMHg2ODYwLCAweDcwMDIsCi0JMHg2ODY0LCAweDcwMDYsIDB4Njg2OCwgMHg3MDBhLCAweDY4NmMsIDB4NzAwZSwgMHg2ODQ0LCAweDkwMDUsCi0JMHgxMTEwLCAweDcwMTIsIDB4NzAxNiwgMHg2ODRjLCAweDcwMWEsIDB4NzAxYywgMHg5MDg1LCAweDAwNDAsCi0JMHg3MDFlLCAweDcwMzcsIDB4MDAxOSwgMHg3MDJiLCAweDAwMDEsIDB4MDBlNiwgMHgyMDcxLCAweDE5MTAsCi0JMHg3MDI4LCAweGMwODQsIDB4NzAyYSwgMHg3MDA3LCAweDAwMDEsIDB4NzAwYiwgMHgwMDAwLCAweDAwZWUsCi0JMHg5MDA2LCAweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwMjYsIDB4MjA3MSwgMHgxOTQ4LCAweDcwMDAsCi0JMHg5MDE1LCAweDA5MDQsIDB4NmVhNSwgMHg5Mjg2LCAweDAwMDMsIDB4MDkwNCwgMHg2ZDNlLCAweDkyODYsCi0JMHgwMDA1LCAweDA5MDQsIDB4NmQzZSwgMHgyMDcxLCAweDE4NzcsIDB4YTg3YywgMHg5MDA1LCAweDA5MDQsCi0JMHg2Yzk5LCAweDcxNDAsIDB4YTg2OCwgMHg5MTAyLCAweDBhMDQsIDB4NmVhNSwgMHhhODc4LCAweGQwODQsCi0JMHgxNWQ4LCAweGE4NTMsIDB4MDAxOSwgMHgyMDAxLCAweDgwMjMsIDB4YTg0ZSwgMHgyMDcxLCAweDE5MTAsCi0JMHg3MDFjLCAweDkwMDUsIDB4MTkwNCwgMHg3MDczLCAweDBlMDQsIDB4NzBlMSwgMHgyMDcxLCAweDAwMDAsCi0JMHhhODUwLCAweDcwMzIsIDB4YTg0YywgMHg3MDgyLCAweGE4NzAsIDB4NzA4NiwgMHhhODZjLCAweDcwOGEsCi0JMHhhODgwLCAweDcwOGUsIDB4NzAzNiwgMHgwMTQ2LCAweDAxZDYsIDB4MDEzNiwgMHgwMWM2LCAweDAxNTYsCi0JMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMDJhLCAweGE4NjgsIDB4MjBhOCwgMHhhODYwLCAweDIwZTAsCi0JMHhhODVjLCAweDkwODAsIDB4MDAyMSwgMHgyMDk4LCAweDQwMDMsIDB4MDE1ZSwgMHgwMWNlLCAweDAxM2UsCi0JMHgwMWRlLCAweDAxNGUsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsCi0JMHgxOTBjLCAweDExYWEsIDB4MDgwNCwgMHg2ZDIxLCAweGE4NTMsIDB4MDAxYiwgMHgyMDAxLCAweDgwMjcsCi0JMHgwODIwLCAweDcwMDQsIDB4ZDA4YywgMHgxOTA0LCAweDZlYTUsIDB4YTg1MywgMHgwMDFhLCAweDIwMDEsCi0JMHg4MDI0LCAweDA4MDQsIDB4NmM1ZCwgMHgwMGU2LCAweDAwMjYsIDB4MjA3MSwgMHgxOTQ4LCAweDcwMDAsCi0JMHg5MDE1LCAweDA5MDQsIDB4NmVhNSwgMHg5Mjg2LCAweDAwMDMsIDB4MDkwNCwgMHg2ZDNlLCAweDkyODYsCi0JMHgwMDA1LCAweDA5MDQsIDB4NmQzZSwgMHhhODRmLCAweDgwMjIsIDB4YTg1MywgMHgwMDE4LCAweDA4MDQsCi0JMHg2ZDA2LCAweGE4NjgsIDB4ZDBmYywgMHgxNTA4LCAweDAwZTYsIDB4MDAyNiwgMHgyMDAxLCAweDE5NDgsCi0JMHgyMDA0LCAweDkwMTUsIDB4MDkwNCwgMHg2ZWE1LCAweGE5NzgsIDB4YTg3NCwgMHg5MTA1LCAweDE5MDQsCi0JMHg2ZWE1LCAweDkyODYsIDB4MDAwMywgMHgwOTA0LCAweDZkM2UsIDB4OTI4NiwgMHgwMDA1LCAweDA5MDQsCi0JMHg2ZDNlLCAweGE4N2MsIDB4ZDBiYywgMHgxOTA0LCAweDZlYTUsIDB4MjIwMCwgMHgwMDAyLCAweDZlYTUsCi0JMHg2ZDAyLCAweDZkM2UsIDB4NmQzZSwgMHg2ZWE1LCAweDZkM2UsIDB4MDAwNSwgMHhhODY4LCAweGQwZmMsCi0JMHgxNTAwLCAweDAwZTYsIDB4MDAyNiwgMHgyMDA5LCAweDE5NDgsIDB4MjEwYywgMHg4MWZmLCAweDA5MDQsCi0JMHg2ZWE1LCAweGE4ODAsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwMSwgMHgxOTA0LCAweDZlYTUsCi0JMHg5MTg2LCAweDAwMDMsIDB4MDkwNCwgMHg2ZDNlLCAweDkxODYsIDB4MDAwNSwgMHgwOTA0LCAweDZkM2UsCi0JMHhhODdjLCAweGQwY2MsIDB4MDkwNCwgMHg2ZWE1LCAweGE4NGYsIDB4ODAyMSwgMHhhODUzLCAweDAwMTcsCi0JMHgwMDI4LCAweDAwMDUsIDB4YTg0ZiwgMHg4MDIwLCAweGE4NTMsIDB4MDAxNiwgMHgyMDcxLCAweDE5MTAsCi0JMHg3MDFjLCAweDkwMDUsIDB4MTkwNCwgMHg3MDczLCAweDBlMDQsIDB4NzBlMSwgMHgyMDcxLCAweDAwMDAsCi0JMHhhODRjLCAweDcwODIsIDB4YTg1MCwgMHg3MDMyLCAweGE4NmMsIDB4NzA4NiwgMHg3MDM2LCAweGE4NzAsCi0JMHg3MDhhLCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsCi0JMHgxMWFhLCAweDIwNzEsIDB4MTgwMCwgMHgyMDExLCAweDAwMDEsIDB4YTgwNCwgMHg5MDBkLCAweDcwMmMsCi0JMHgxMTU4LCAweGE4MDIsIDB4MjkwMCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsCi0JMHg4NzI1LCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDAwOTYsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsCi0JMHg4MjEwLCAweDI5MDAsIDB4ODFmZiwgMHgxZGM4LCAweDAwOWUsIDB4MGM1OCwgMHhhODRmLCAweDAwMDAsCi0JMHgwMGY2LCAweDIwNzksIDB4MDA1MCwgMHgyMDcxLCAweDE5MTAsIDB4YTgwMywgMHgwMDAwLCAweDcwMTAsCi0JMHg5MDA1LCAweDE5MDQsIDB4NmUyOSwgMHg3ODJjLCAweDkwOGMsIDB4MDc4MCwgMHgxOTBjLCAweDcyMmYsCi0JMHg4MDA0LCAweDgwMDQsIDB4ODAwNCwgMHg5MDg0LCAweDAwMDMsIDB4MDAwMiwgMHg2ZDVjLCAweDZlMjksCi0JMHg2ZDgwLCAweDZkYzYsIDB4MDgwYywgMHgwZGM1LCAweDIwNzEsIDB4MTgwMCwgMHgyOTAwLCAweDc4MjIsCi0JMHhhODA0LCAweDkwMGQsIDB4MTE2OCwgMHgyMDcxLCAweDE5ZmIsIDB4NzA0NCwgMHg5MDA1LCAweDEzMjAsCi0JMHgyMDAxLCAweDE5NDksIDB4MjAwNCwgMHg3MDQ2LCAweDAwZmUsIDB4MDAyZSwgMHgwMGVlLCAweDAwMDUsCi0JMHg5MDE2LCAweDcwMmMsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsCi0JMHgxZGM4LCAweDcwMmUsIDB4NzBjMCwgMHg5MjAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDBjMTgsCi0JMHgyMDcxLCAweDE4MDAsIDB4MjkwMCwgMHg3ODIyLCAweGE4MDQsIDB4OTAwZCwgMHgxNTc4LCAweDc4MjQsCi0JMHgwMGU2LCAweDIwNzEsIDB4MDA0MCwgMHg3MTJjLCAweGQxOWMsIDB4MTE0OCwgMHgyMDA5LCAweDE4MzAsCi0JMHgyMTBjLCAweDkxOGEsIDB4MDAyMCwgMHgwMjE4LCAweDcwMjIsIDB4MDBlZSwgMHgwMDU4LCAweDAwZWUsCi0JMHgyMDQ4LCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwgMHg4MDAwLCAweDcwYzIsCi0JMHgwODBjLCAweDg3MjUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweGQwYTQsCi0JMHgxOWYwLCAweDIwNzEsIDB4MTlmYiwgMHg3MDQ0LCAweDkwMDUsIDB4MTMyMCwgMHgyMDAxLCAweDE5NDksCi0JMHgyMDA0LCAweDcwNDYsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHg5MDE2LCAweDcwMmMsCi0JMHgyMTQ4LCAweGE5MDQsIDB4YTgwMiwgMHg4MjEwLCAweDI5MDAsIDB4ODFmZiwgMHgxZGM4LCAweDcwMmUsCi0JMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsIDB4MDgwOCwgMHgwMDk2LCAweDAwZTYsCi0JMHg3ODI0LCAweDIwNDgsIDB4MjA3MSwgMHgxODAwLCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsCi0JMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsCi0JMHgxOTBjLCAweDcyMmYsIDB4ZDBhNCwgMHgxZDYwLCAweDAwZWUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsCi0JMHgxOTBjLCAweDcyMmYsIDB4ZDA5YywgMHgxMTk4LCAweDAwOWUsIDB4MjkwMCwgMHg3ODIyLCAweGE4MDQsCi0JMHg5MDBkLCAweDE1NTAsIDB4MjA3MSwgMHgxOWZiLCAweDcwNDQsIDB4OTAwNSwgMHgxMzIwLCAweDIwMDEsCi0JMHgxOTQ5LCAweDIwMDQsIDB4NzA0NiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDAwOWUsCi0JMHgyOTA4LCAweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMTgsIDB4OTA0ZCwgMHg3MTFhLCAweDAxMTAsCi0JMHhhOTAyLCAweDAwMDgsIDB4NzExZSwgMHgyMTQ4LCAweGE4MDQsIDB4OTAwZCwgMHgxMTY4LCAweDIwNzEsCi0JMHgxOWZiLCAweDcwNDQsIDB4OTAwNSwgMHgxMzIwLCAweDIwMDEsIDB4MTk0OSwgMHgyMDA0LCAweDcwNDYsCi0JMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDIwNzEsIDB4MTgwMCwgMHg5MDE2LCAweDcwMmMsCi0JMHgyMTQ4LCAweGE5MDQsIDB4YTgwMiwgMHg4MjEwLCAweDI5MDAsIDB4ODFmZiwgMHgxZGM4LCAweDcwMmUsCi0JMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsCi0JMHgwMDA1LCAweDI5MDgsIDB4NzAxMCwgMHg4MDAwLCAweDcwMTIsIDB4NzAxOCwgMHg5MDRkLCAweDcxMWEsCi0JMHgwMTEwLCAweGE5MDIsIDB4MDAwOCwgMHg3MTFlLCAweDIxNDgsIDB4YTgwNCwgMHg5MDBkLCAweDE5MDQsCi0JMHg2ZTdkLCAweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzIyZiwgMHhkMDljLCAweDExOTgsCi0JMHg3MDFjLCAweDkwNGQsIDB4MDE4MCwgMHg3MDEwLCAweDgwMDEsIDB4NzAxMiwgMHgxMTA4LCAweDcwMWEsCi0JMHhhODAwLCAweDcwMWUsIDB4MjkwMCwgMHg3ODIyLCAweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsCi0JMHg3MjJmLCAweGQwOWMsIDB4MGQ2OCwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDcyMmYsCi0JMHhkMGE0LCAweDAxYjAsIDB4MDBlNiwgMHg3ODI0LCAweDIwNDgsIDB4MjA3MSwgMHgxODAwLCAweDcwMmMsCi0JMHhhODAyLCAweDI5MDAsIDB4NzAyZSwgMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsCi0JMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDcyMmYsIDB4ZDBhNCwgMHgxZDYwLCAweDAwZWUsCi0JMHgyMDcxLCAweDE5ZmIsIDB4NzA0NCwgMHg5MDA1LCAweDEzMjAsIDB4MjAwMSwgMHgxOTQ5LCAweDIwMDQsCi0JMHg3MDQ2LCAweDAwZmUsIDB4MDAyZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsCi0JMHg5MDE2LCAweDcwMmMsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsCi0JMHgxZGM4LCAweDcwMmUsIDB4NzBjMCwgMHg5MjAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDAwZWUsCi0JMHgwODA0LCAweDZlMzksIDB4YTg2OCwgMHhkMGZjLCAweDE5MDQsIDB4NmVmMywgMHgwMDk2LCAweGE4MDQsCi0JMHhhODA3LCAweDAwMDAsIDB4OTA0ZCwgMHgxOTBjLCAweDBmYzAsIDB4MDA5ZSwgMHgwMDIwLCAweGE4NjgsCi0JMHhkMGZjLCAweDE5MDQsIDB4NmVmMywgMHgwMGU2LCAweDAwMjYsIDB4YTg0ZiwgMHgwMDAwLCAweDAwZjYsCi0JMHgyMDc5LCAweDAwNTAsIDB4MjA3MSwgMHgxODAwLCAweDcwZWMsIDB4ODAwMSwgMHgwNTU4LCAweDFhMDQsCi0JMHg2ZWYwLCAweDIwNzEsIDB4MTkxMCwgMHhhODAzLCAweDAwMDAsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDhlLCAweDAwMTYsIDB4MDFhOCwgMHg3MDEwLCAweDkwMDUsIDB4MTkwNCwgMHg2ZmVmLCAweDc4MmMsCi0JMHg5MDhjLCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweDgwMDQsIDB4ODAwNCwgMHg4MDA0LCAweDkwODQsCi0JMHgwMDAzLCAweDAwMDIsIDB4NmVmNCwgMHg2ZmVmLCAweDZmMGYsIDB4NmY4MCwgMHgwODBjLCAweDBkYzUsCi0JMHgyMDA5LCAweDE5NDgsIDB4MjEwNCwgMHgwMDAyLCAweDZlYmIsIDB4NmViYiwgMHg2ZWJiLCAweDZkNDcsCi0JMHg2ZWJiLCAweDZkNDcsIDB4NzBlZiwgMHgwZmEwLCAweDcxZTgsIDB4ODEwNywgMHg5MTA2LCAweDkwOTQsCi0JMHgwMGMwLCAweDkxODQsIDB4ZmYzZiwgMHg5MjA1LCAweDcwZWEsIDB4M2IwOCwgMHgzYTAwLCAweDkxMDQsCi0JMHg5MThkLCAweDAwYzAsIDB4MjFkOCwgMHg5MDg0LCAweGZmM2YsIDB4OTIwNSwgMHgyMGQwLCAweDA4MDgsCi0JMHg3MGVlLCAweDA4MDQsIDB4NmViMSwgMHgwMDA1LCAweDIwNzEsIDB4MTgwMCwgMHgyOTAwLCAweDc4MjIsCi0JMHhhODA0LCAweDkwMGQsIDB4MTEyMCwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDkwMTYsCi0JMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwgMHg4MWZmLCAweDFkYzgsCi0JMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODcyNSwgMHgwYzYwLCAweDIwNzEsCi0JMHgxODAwLCAweDI5MDAsIDB4NzgyMiwgMHhhODA0LCAweDkwMGQsIDB4MTkwNCwgMHg2ZjZmLCAweDc4MzAsCi0JMHg4MDA3LCAweDkwOGMsIDB4MDAxZiwgMHg3MGYwLCAweDkxMDIsIDB4MTIyMCwgMHgwMGZlLCAweDAwMmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4NzgyNCwgMHgwMGU2LCAweDIwNzEsIDB4MDA0MCwgMHg3MTJjLCAweGQxOWMsCi0JMHgxMTQ4LCAweDIwMDksIDB4MTgzMCwgMHgyMTBjLCAweDkxOGEsIDB4MDAyMCwgMHgwMjE4LCAweDcwMjIsCi0JMHgwMGVlLCAweDAwNTgsIDB4MDBlZSwgMHgyMDQ4LCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsCi0JMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsCi0JMHgxOTBjLCAweDcyMmYsIDB4ZDBhNCwgMHgxOWYwLCAweDBlMDQsIDB4NmY2NiwgMHg3ODM4LCAweDc5MzgsCi0JMHg5MTBlLCAweDFkZTAsIDB4MDBkNiwgMHgyMDY5LCAweDAwMDAsIDB4NjgzNiwgMHg2ODMzLCAweDAwMTMsCi0JMHgwMGRlLCAweDIwMDEsIDB4MTkyMSwgMHgyMDBjLCAweGMxODQsIDB4MjEwMiwgMHgyMDkxLCAweDQwODAsCi0JMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHgyMDAxLCAweDE5MjIsCi0JMHgyMDAzLCAweDAwMDAsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDE5MjEsCi0JMHgyMDBjLCAweGMxODUsIDB4MjEwMiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDkwMTYsCi0JMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwgMHg4MWZmLCAweDFkYzgsCi0JMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODcyNSwgMHgwODA0LCAweDZmMjIsCi0JMHgwMDk2LCAweDAwZTYsIDB4NzgyNCwgMHgyMDQ4LCAweDIwNzEsIDB4MTgwMCwgMHg3MDJjLCAweGE4MDIsCi0JMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwgMHg4MDAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDc4MmMsCi0JMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweGQwYTQsIDB4MWQ2MCwgMHgwMGVlLCAweDBlMDQsCi0JMHg2ZmMyLCAweDc4MzgsIDB4NzkzOCwgMHg5MTBlLCAweDFkZTAsIDB4MDBkNiwgMHgyMDY5LCAweDAwMDAsCi0JMHg2ODM2LCAweDY4MzMsIDB4MDAxMywgMHgwMGRlLCAweDcwNDQsIDB4YzA4NCwgMHg3MDQ2LCAweDIwOTEsCi0JMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMWFhLCAweDcwNGIsCi0JMHgwMDAwLCAweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzIyZiwgMHhkMDljLCAweDExNzAsCi0JMHgwMDllLCAweDI5MDAsIDB4NzgyMiwgMHhhODA0LCAweDkwMGQsIDB4MTFlMCwgMHgwMGZlLCAweDAwMmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4NzA0NCwgMHhjMDg1LCAweDcwNDYsIDB4MGM1OCwgMHgwMDllLCAweDI5MDgsCi0JMHg3MDEwLCAweDgwMDAsIDB4NzAxMiwgMHg3MDE4LCAweDkwNGQsIDB4NzExYSwgMHgwMTEwLCAweGE5MDIsCi0JMHgwMDA4LCAweDcxMWUsIDB4MjE0OCwgMHhhODA0LCAweDkwMGQsIDB4MTEyMCwgMHgwMGZlLCAweDAwMmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4MjA3MSwgMHgxODAwLCAweDkwMTYsIDB4NzAyYywgMHgyMTQ4LCAweGE5MDQsCi0JMHhhODAyLCAweDgyMTAsIDB4MjkwMCwgMHg4MWZmLCAweDFkYzgsIDB4NzAyZSwgMHg3MGMwLCAweDkyMDAsCi0JMHg3MGMyLCAweDA4MGMsIDB4ODcyNSwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDI5MDgsCi0JMHg3MDEwLCAweDgwMDAsIDB4NzAxMiwgMHg3MDE4LCAweDkwNGQsIDB4NzExYSwgMHgwMTEwLCAweGE5MDIsCi0JMHgwMDA4LCAweDcxMWUsIDB4MjE0OCwgMHhhODA0LCAweDkwMGQsIDB4MTkwNCwgMHg3MDVlLCAweDc4MmMsCi0JMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweGQwOWMsIDB4MTFiMCwgMHg3MDFjLCAweDkwNGQsCi0JMHgwMTk4LCAweGE4NGMsIDB4OTAwNSwgMHgxMTgwLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweDExMDgsCi0JMHg3MDFhLCAweGE4MDAsIDB4NzAxZSwgMHgyOTAwLCAweDc4MjIsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsCi0JMHgxOTBjLCAweDcyMmYsIDB4ZDA5YywgMHgwZDUwLCAweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsCi0JMHg3MjJmLCAweGQwYTQsIDB4MDViOCwgMHgwMGU2LCAweDc4MjQsIDB4MjA0OCwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MDJjLCAweGE4MDIsIDB4MjkwMCwgMHg3MDJlLCAweDcwYzAsIDB4ODAwMCwgMHg3MGMyLCAweDA4MGMsCi0JMHg4NzI1LCAweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzIyZiwgMHhkMGE0LCAweDFkNjAsCi0JMHgwMGVlLCAweDBlMDQsIDB4NzA1NywgMHg3ODM4LCAweDc5MzgsIDB4OTEwZSwgMHgxZGUwLCAweDAwZDYsCi0JMHgyMDY5LCAweDAwMDAsIDB4NjgzNiwgMHg2ODMzLCAweDAwMTMsIDB4MDBkZSwgMHg3MDQ0LCAweGMwODQsCi0JMHg3MDQ2LCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsCi0JMHgxMWFhLCAweDcwNGIsIDB4MDAwMCwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDcwNDQsCi0JMHhjMDg1LCAweDcwNDYsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsCi0JMHgxODAwLCAweDkwMTYsIDB4NzAyYywgMHgyMTQ4LCAweGE5MDQsIDB4YTgwMiwgMHg4MjEwLCAweDI5MDAsCi0JMHg4MWZmLCAweDFkYzgsIDB4NzAyZSwgMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsCi0JMHgwMGVlLCAweDA4MDQsIDB4NmZmZiwgMHgyMDcxLCAweDE5MTAsIDB4YTgwMywgMHgwMDAwLCAweDI5MDgsCi0JMHg3MDEwLCAweDgwMDAsIDB4NzAxMiwgMHg3MDE4LCAweDkwNGQsIDB4NzExYSwgMHgwMTEwLCAweGE5MDIsCi0JMHgwMDA4LCAweDcxMWUsIDB4MjE0OCwgMHhhODA0LCAweDkwMGQsIDB4MTEyOCwgMHgxZTA0LCAweDcwOWUsCi0JMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDcxLCAweDE4MDAsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsCi0JMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsCi0JMHg5MjAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDBlMDQsIDB4NzA4OCwgMHgyMDcxLCAweDE5MTAsCi0JMHg3MDFjLCAweDIwNDgsIDB4YTg0YywgMHg5MDBkLCAweDBkMTgsIDB4MjA3MSwgMHgwMDAwLCAweDcxODIsCi0JMHhhODUwLCAweDcwMzIsIDB4YTg2YywgMHg3MDg2LCAweDcwMzYsIDB4YTg3MCwgMHg3MDhhLCAweGE4NTAsCi0JMHg5MDgyLCAweDAwMTksIDB4MTI3OCwgMHgyMDkxLCAweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsCi0JMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHgyMDcxLCAweDE5MTAsIDB4MDgwYywgMHg3MjFiLCAweDAwMmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4YTg1MCwgMHg5MDgyLCAweDAwMWMsIDB4MWU2OCwgMHhhODgwLCAweDcwOGUsCi0JMHg3MDM2LCAweDAxNDYsIDB4MDFkNiwgMHgwMTM2LCAweDAxYzYsIDB4MDE1NiwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMGExLCAweDAwMmEsIDB4YTg2OCwgMHgyMGE4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDIxLCAweDIwOTgsIDB4NDAwMywgMHgwMTVlLCAweDAxY2UsIDB4MDEzZSwgMHgwMWRlLCAweDAxNGUsCi0JMHgwODkwLCAweDIwNzEsIDB4MTkxMCwgMHhhODAzLCAweDAwMDAsIDB4MjkwOCwgMHg3MDEwLCAweDgwMDAsCi0JMHg3MDEyLCAweDcwMTgsIDB4OTA0ZCwgMHg3MTFhLCAweDAxMTAsIDB4YTkwMiwgMHgwMDA4LCAweDcxMWUsCi0JMHgyMTQ4LCAweGE4MDQsIDB4OTAwZCwgMHgxMTE4LCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDIwNzEsCi0JMHgxODAwLCAweDkwMTYsIDB4NzAyYywgMHgyMTQ4LCAweGE5MDQsIDB4YTgwMiwgMHg4MjEwLCAweDI5MDAsCi0JMHg4MWZmLCAweDFkYzgsIDB4NzAyZSwgMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsCi0JMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgwMDA2LCAweGE4N2MsIDB4MDAwNiwgMHhhODY3LCAweDAxMDMsCi0JMHgyMGE5LCAweDAwMWMsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDFkLCAweDIwYTAsCi0JMHg5MDA2LCAweDQwMDQsIDB4MDAwZSwgMHg5MDg0LCAweDAwZmYsIDB4YTg3ZSwgMHgwMDBlLCAweGE4N2EsCi0JMHhhOTgyLCAweDAwMDUsIDB4MjA3MSwgMHgxOTEwLCAweDcwMDQsIDB4MDAwMiwgMHg3MTJlLCAweDcxMmYsCi0JMHg3MjFhLCAweDcxMmYsIDB4NzEyYywgMHg3MjFhLCAweDA4MGMsIDB4MGRjNSwgMHgwMDA1LCAweDIwMDEsCi0JMHgxOTQ4LCAweDIwMDQsIDB4MDAwMiwgMHg3MTM5LCAweDcxMzksIDB4NzFiMywgMHg3MWI0LCAweDcxMzksCi0JMHg3MWI0LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDFlMGMsIDB4NzIzYSwgMHg3MDFjLCAweDkwNGQsCi0JMHgwNTA4LCAweGE4NGMsIDB4OTAwNSwgMHgwOTA0LCAweDcxODQsIDB4MGUwNCwgMHg3MTYyLCAweGE5NGMsCi0JMHgyMDcxLCAweDAwMDAsIDB4NzE4MiwgMHhhODUwLCAweDcwMzIsIDB4YTg2YywgMHg3MDg2LCAweDcwMzYsCi0JMHhhODcwLCAweDcwOGEsIDB4YTg1MCwgMHg5MDgyLCAweDAwMTksIDB4MTI3OCwgMHgyMDkxLCAweDQwODAsCi0JMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHgyMDcxLCAweDE5MTAsCi0JMHgwODBjLCAweDcyMWIsIDB4MDEyZSwgMHgwODA0LCAweDcxYjIsIDB4YTg1MCwgMHg5MDgyLCAweDAwMWMsCi0JMHgxZTY4LCAweGE4ODAsIDB4NzA4ZSwgMHg3MDM2LCAweDAxNDYsIDB4MDFkNiwgMHgwMTM2LCAweDAxYzYsCi0JMHgwMTU2LCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAwMmEsIDB4YTg2OCwgMHgyMGE4LCAweGE4NjAsCi0JMHgyMGUwLCAweGE4NWMsIDB4OTA4MCwgMHgwMDIxLCAweDIwOTgsIDB4NDAwMywgMHgwMTVlLCAweDAxY2UsCi0JMHgwMTNlLCAweDAxZGUsIDB4MDE0ZSwgMHgwODkwLCAweDIwMDEsIDB4MDA1YiwgMHgyMDA0LCAweDkwOTQsCi0JMHgwNzgwLCAweDE5MGMsIDB4NzIyZiwgMHhkMDljLCAweDIwNzEsIDB4MTkxMCwgMHgxNTEwLCAweDIwNzEsCi0JMHgxOTEwLCAweDcwMGYsIDB4MDAwMSwgMHhhOTY0LCAweDkxODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDMsCi0JMHgxMTMwLCAweDgxMGYsIDB4OTE4YywgMHgwMGZmLCAweDgxMDEsIDB4MDEwOCwgMHg3MTBlLCAweDI5MDAsCi0JMHgwMGQ2LCAweDIwNjksIDB4MDA1MCwgMHg2ODIyLCAweDAwZGUsIDB4MjA3MSwgMHgxOTEwLCAweDcwMWMsCi0JMHgyMDQ4LCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweGE4MDAsIDB4NzAxZSwgMHg5MDA1LCAweDExMDgsCi0JMHg3MDFhLCAweDAxMmUsIDB4MDAwNSwgMHgwMDA1LCAweDAwZDYsIDB4MjAwOCwgMHgyMDY5LCAweDE5ZmIsCi0JMHg2ODQ0LCAweDkwMDUsIDB4MDc2MCwgMHgwMTU4LCAweDkxODYsIDB4MDAwMywgMHgwNTQwLCAweDIwMDEsCi0JMHgxODE1LCAweDIwMDQsIDB4MjAwOSwgMHgxYWQxLCAweDIxMGMsIDB4OTEwMiwgMHgxNTAwLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MjA2OSwgMHgwMDUwLCAweDY5M2MsIDB4NjgzOCwgMHg5MTA2LCAweDAxOTAsCi0JMHgwZTA0LCAweDcxZTYsIDB4MjA2OSwgMHgwMDAwLCAweDY4MzcsIDB4ODA0MCwgMHg2ODMzLCAweDAwMTIsCi0JMHg2ODgzLCAweDgwNDAsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsCi0JMHgxOTBjLCAweDExYWEsIDB4MjA2OSwgMHgxOWZiLCAweDY4NDcsIDB4ZmZmZiwgMHgwMTJlLCAweDAwZGUsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgxZTBjLCAweDcyYTUsIDB4NzAxYywgMHg5MDRkLCAweDA1NDAsCi0JMHgyMDAxLCAweDAwNWIsIDB4MjAwNCwgMHg5MDk0LCAweDA3ODAsIDB4MTVjOSwgMHhkMDljLCAweDE1MDAsCi0JMHgyMDcxLCAweDE5MTAsIDB4NzAwZiwgMHgwMDAxLCAweGE5NjQsIDB4OTE4NCwgMHgwMGZmLCAweDkwODYsCi0JMHgwMDAzLCAweDExMzAsIDB4ODEwZiwgMHg5MThjLCAweDAwZmYsIDB4ODEwMSwgMHgwMTA4LCAweDcxMGUsCi0JMHgyOTAwLCAweDAwZDYsIDB4MjA2OSwgMHgwMDUwLCAweDY4MjIsIDB4MDBkZSwgMHg3MDFjLCAweDIwNDgsCi0JMHg3MDEwLCAweDgwMDEsIDB4NzAxMiwgMHhhODAwLCAweDcwMWUsIDB4OTAwNSwgMHgxMTA4LCAweDcwMWEsCi0JMHgwMTJlLCAweDAwMDUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg3MDFjLCAweDkwNGQsCi0JMHgwMTYwLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweGE4MDAsIDB4NzAxZSwgMHg5MDA1LCAweDExMDgsCi0JMHg3MDFhLCAweDAxMmUsIDB4MDgwYywgMHgxMDQwLCAweDAwMDUsIDB4MDEyZSwgMHgwMDA1LCAweDIwOTEsCi0JMHg4MDAwLCAweDBlMDQsIDB4NzIzMSwgMHgwMDA2LCAweDAwMTYsIDB4MjAwMSwgMHg4MDA0LCAweDAwMDYsCi0JMHgwODA0LCAweDBkY2UsIDB4MDA5NiwgMHgwMGY2LCAweDIwNzksIDB4MDA1MCwgMHg3MDQ0LCAweGQwODQsCi0JMHgwMWQwLCAweGMwODQsIDB4NzA0NiwgMHg3ODM4LCAweDc5MzgsIDB4OTEwZSwgMHgxZGUwLCAweDAwZDYsCi0JMHgyMDY5LCAweDAwMDAsIDB4NjgzNiwgMHg2ODMzLCAweDAwMTMsIDB4MDBkZSwgMHgyMDkxLCAweDQwODAsCi0JMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTFhYSwgMHg3MDRiLCAweDAwMDAsCi0JMHgwMGZlLCAweDAwOWUsIDB4MDAwNSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTgxLCAweGQwYTQsCi0JMHgwZGI4LCAweDcxNDgsIDB4NzA0YywgMHg4MTA4LCAweDcxNGEsIDB4OTEwMiwgMHgwZTg4LCAweDAwZTYsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzgyNCwgMHgwMGU2LCAweDIwNzEsIDB4MDA0MCwgMHg3MTJjLCAweGQxOWMsCi0JMHgxMTQ4LCAweDIwMDksIDB4MTgzMCwgMHgyMTBjLCAweDkxOGEsIDB4MDAyMCwgMHgwMjE4LCAweDcwMjIsCi0JMHgwMGVlLCAweDAwNTgsIDB4MDBlZSwgMHgyMDQ4LCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsCi0JMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg3MjUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsCi0JMHgxOTBjLCAweDcyMmYsIDB4ZDBhNCwgMHgxOWYwLCAweDc4MzgsIDB4NzkzOCwgMHg5MTBlLCAweDFkZTAsCi0JMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwgMHg2ODM2LCAweDY4MzMsIDB4MDAxMywgMHgwMGRlLCAweDIwOTEsCi0JMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMWFhLCAweDAwZWUsCi0JMHg3MDRiLCAweDAwMDAsIDB4MDBmZSwgMHgwMDllLCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDAwNTAsCi0JMHg3MDQ0LCAweGQwODQsIDB4MDFiOCwgMHhjMDg0LCAweDcwNDYsIDB4NzgzOCwgMHg3OTM4LCAweDkxMGUsCi0JMHgxZGUwLCAweDAwZDYsIDB4MjA2OSwgMHgwMDAwLCAweDY4MzYsIDB4NjgzMywgMHgwMDEzLCAweDAwZGUsCi0JMHgyMDkxLCAweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwgMHgxOTBjLCAweDExYWEsCi0JMHgwMGZlLCAweDAwMDUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweGQwYTQsCi0JMHgwZGI4LCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDc4MjQsIDB4MjA0OCwgMHg3MDJjLCAweGE4MDIsCi0JMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwgMHg4MDAwLCAweDcwYzIsIDB4MDgwYywgMHg4NzI1LCAweDc4MmMsCi0JMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MjJmLCAweGQwYTQsIDB4MWQ3MCwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMDUwLCAweDY5M2MsIDB4MjA2OSwgMHgxOTQ4LCAweDY4MDgsIDB4NjkwYSwgMHgyMDY5LCAweDE5ZmIsCi0JMHg5MTAyLCAweDExMTgsIDB4Njg0NCwgMHg5MDA1LCAweDEzMjAsIDB4MjAwMSwgMHgxOTQ5LCAweDIwMGMsCi0JMHg2OTQ2LCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NzA5OCwgMHg5MDhhLCAweDAwMmEsCi0JMHgxYTBjLCAweDBkYzUsIDB4OTA4MiwgMHgwMDFkLCAweDAwMWIsIDB4NjAyNywgMHgxZTAwLCAweDAwMDUsCi0JMHg3M2U2LCAweDczNTMsIDB4NzM2ZiwgMHg3Mzk5LCAweDczZDUsIDB4NzQxNSwgMHg3NDI3LCAweDczNmYsCi0JMHg3M2ZkLCAweDczMGUsIDB4NzMzYywgMHg3M2JmLCAweDczMGQsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMjAwLCAweDY4MDQsIDB4OTAwNSwgMHgxMTgwLCAweDY4MDgsIDB4OTAwNSwgMHgxNTE4LCAweDcwOWIsCi0JMHgwMDI5LCAweDIwNjksIDB4MTk4ZiwgMHgyZDA0LCAweDcwMDIsIDB4MDgwYywgMHg3Nzc0LCAweDYwMjgsCi0JMHg5MDg1LCAweDA2MDAsIDB4NjAyYSwgMHgwMGIwLCAweDcwOWIsIDB4MDAyOSwgMHgyMDY5LCAweDE5OGYsCi0JMHgyZDA0LCAweDcwMDIsIDB4NjAyOCwgMHg5MDg1LCAweDA2MDAsIDB4NjAyYSwgMHgwMGU2LCAweDAwMzYsCi0JMHgwMDQ2LCAweDAwNTYsIDB4MjA3MSwgMHgxYTY1LCAweDA4MGMsIDB4MWFkOSwgMHgwMDVlLCAweDAwNGUsCi0JMHgwMDNlLCAweDAwZWUsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MjA2OSwgMHgwMjAwLCAweDY4MDQsCi0JMHg5MDA1LCAweDExNzgsIDB4NjgwOCwgMHg5MDA1LCAweDExNjAsIDB4NzA5YiwgMHgwMDI5LCAweDIwNjksCi0JMHgxOThmLCAweDJkMDQsIDB4NzAwMiwgMHgwODBjLCAweDc4MTgsIDB4NjAyOCwgMHg5MDg1LCAweDA2MDAsCi0JMHg2MDJhLCAweDAwZGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MDA5MCwgMHgwODBjLCAweDJkMzksCi0JMHgwMDBlLCAweDYxMjQsIDB4ZDFlNCwgMHgxMTkwLCAweDA4MGMsIDB4NzQ5NCwgMHhkMWQ0LCAweDExNjAsCi0JMHhkMWRjLCAweDExMzgsIDB4ZDFjYywgMHgwMTUwLCAweDcwOWIsIDB4MDAyMCwgMHgwODBjLCAweDc0OTQsCi0JMHgwMDI4LCAweDcwOWIsIDB4MDAxZCwgMHgwMDEwLCAweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDIwMDEsCi0JMHgwMDg4LCAweDA4MGMsIDB4MmQzOSwgMHg2MTI0LCAweGQxY2MsIDB4MTFlOCwgMHhkMWRjLCAweDExYzAsCi0JMHhkMWU0LCAweDExOTgsIDB4OTE4NCwgMHgxZTAwLCAweDExZDgsIDB4MDgwYywgMHgxYjA2LCAweDYwZTMsCi0JMHgwMDAxLCAweDYwMGMsIDB4YzBiNCwgMHg2MDBlLCAweDA4MGMsIDB4NzY2MywgMHgyMDAxLCAweDAwODAsCi0JMHgwODBjLCAweDJkMzksIDB4NzA5YiwgMHgwMDI5LCAweDAwNTgsIDB4NzA5YiwgMHgwMDFlLCAweDAwNDAsCi0JMHg3MDliLCAweDAwMWQsIDB4MDAyOCwgMHg3MDliLCAweDAwMjAsIDB4MDAxMCwgMHg3MDliLCAweDAwMWYsCi0JMHgwMDA1LCAweDA4MGMsIDB4MWIwNiwgMHg2MGUzLCAweDAwMDEsIDB4NjAwYywgMHhjMGI0LCAweDYwMGUsCi0JMHgwODBjLCAweDc2NjMsIDB4MjAwMSwgMHgwMDgwLCAweDA4MGMsIDB4MmQzOSwgMHg2MTI0LCAweGQxZDQsCi0JMHgxMTk4LCAweGQxZGMsIDB4MTE3MCwgMHhkMWU0LCAweDExNDgsIDB4OTE4NCwgMHgxZTAwLCAweDExMTgsCi0JMHg3MDliLCAweDAwMjksIDB4MDA1OCwgMHg3MDliLCAweDAwMjgsIDB4MDA0MCwgMHg3MDliLCAweDAwMWUsCi0JMHgwMDI4LCAweDcwOWIsIDB4MDAxZCwgMHgwMDEwLCAweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDYxMjQsCi0JMHhkMWQ0LCAweDExODAsIDB4ZDFkYywgMHgxMTU4LCAweGQxZTQsIDB4MTEzMCwgMHg5MTg0LCAweDFlMDAsCi0JMHgxMTU4LCAweDcwOWIsIDB4MDAyOSwgMHgwMDQwLCAweDcwOWIsIDB4MDAxZSwgMHgwMDI4LCAweDcwOWIsCi0JMHgwMDFkLCAweDAwMTAsIDB4NzA5YiwgMHgwMDFmLCAweDAwMDUsIDB4MjAwMSwgMHgwMGEwLCAweDA4MGMsCi0JMHgyZDM5LCAweDYxMjQsIDB4ZDFkYywgMHgxMTM4LCAweGQxZTQsIDB4MDEzOCwgMHgwODBjLCAweDFiMDYsCi0JMHg3MDliLCAweDAwMWUsIDB4MDAxMCwgMHg3MDliLCAweDAwMWQsIDB4MDAwNSwgMHgwODBjLCAweDc1MTcsCi0JMHg2MTI0LCAweGQxZGMsIDB4MTE4OCwgMHgwODBjLCAweDc0OTQsIDB4MDAxNiwgMHgwODBjLCAweDFiMDYsCi0JMHgwMDFlLCAweGQxZDQsIDB4MTEyOCwgMHhkMWU0LCAweDAxMzgsIDB4NzA5YiwgMHgwMDFlLCAweDAwMjAsCi0JMHg3MDliLCAweDAwMWYsIDB4MDgwYywgMHg3NDk0LCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAwYTAsCi0JMHgwODBjLCAweDJkMzksIDB4MDAwZSwgMHg2MTI0LCAweGQxZDQsIDB4MTE2MCwgMHhkMWNjLCAweDExNTAsCi0JMHhkMWRjLCAweDExMjgsIDB4ZDFlNCwgMHgwMTQwLCAweDcwOWIsIDB4MDAxZSwgMHgwMDI4LCAweDcwOWIsCi0JMHgwMDFkLCAweDAwMTAsIDB4NzA5YiwgMHgwMDIxLCAweDAwMDUsIDB4MDgwYywgMHg3NTE3LCAweDYxMjQsCi0JMHhkMWQ0LCAweDExNTAsIDB4ZDFkYywgMHgxMTI4LCAweGQxZTQsIDB4MDE0MCwgMHg3MDliLCAweDAwMWUsCi0JMHgwMDI4LCAweDcwOWIsIDB4MDAxZCwgMHgwMDEwLCAweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDAwMDYsCi0JMHgyMDAxLCAweDAwOTAsIDB4MDgwYywgMHgyZDM5LCAweDAwMGUsIDB4NjEyNCwgMHhkMWQ0LCAweDExNzgsCi0JMHhkMWNjLCAweDExNTAsIDB4ZDFkYywgMHgxMTI4LCAweGQxZTQsIDB4MDE1OCwgMHg3MDliLCAweDAwMWUsCi0JMHgwMDQwLCAweDcwOWIsIDB4MDAxZCwgMHgwMDI4LCAweDcwOWIsIDB4MDAyMCwgMHgwMDEwLCAweDcwOWIsCi0JMHgwMDFmLCAweDAwMDUsIDB4MDAxNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwNjEsCi0JMHgwMTAwLCAweDIwNjksIDB4MDE0MCwgMHgyMDcxLCAweDE4MDAsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg3NjM3LCAweDExZDgsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsIDB4ZDFiNCwgMHgwMWIwLCAweGMxYjQsCi0JMHgyMTAyLCAweDYwMjcsIDB4MDIwMCwgMHgwODBjLCAweDJjNjEsIDB4NjAyNCwgMHhkMGNjLCAweDAxNDgsCi0JMHgyMDAxLCAweDAwYTAsIDB4MDgwYywgMHgyZDM5LCAweDA4MGMsIDB4NzkzMiwgMHgwODBjLCAweDYxMmUsCi0JMHgwNDI4LCAweDYwMjgsIDB4YzBjZCwgMHg2MDJhLCAweDA0MDgsIDB4MDgwYywgMHg3NjUxLCAweDAxNTAsCi0JMHgwODBjLCAweDc2NDgsIDB4MTEzOCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyODFjLCAweDA4MGMsCi0JMHg3NjBmLCAweDAwYTAsIDB4MDgwYywgMHg3NTE0LCAweDAxNzgsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsCi0JMHgyODFjLCAweDcwOTgsIDB4OTA4NiwgMHgwMDFlLCAweDAxMjAsIDB4NzA5OCwgMHg5MDg2LCAweDAwMjIsCi0JMHgxMTE4LCAweDcwOWIsIDB4MDAyNSwgMHgwMDEwLCAweDcwOWIsIDB4MDAyMSwgMHgwMTJlLCAweDAwZWUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwMjYsIDB4MjAxMSwgMHg3NGE1LCAweDA4MGMsCi0JMHg4OTE3LCAweDAwMmUsIDB4MDAxNiwgMHgwMDI2LCAweDIwMDksIDB4MDA2NCwgMHgyMDExLCAweDc0YTUsCi0JMHgwODBjLCAweDg5MGUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGY2LCAweDAwMTYsCi0JMHgwODBjLCAweGE2ZTksIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsIDB4NzQ0MiwgMHgwMDFlLCAweDAwZmUsCi0JMHgwMGVlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsCi0JMHgwMGY2LCAweDAxMjYsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsIDB4YTZlOSwgMHgyMDYxLCAweDAxMDAsCi0JMHgyMDY5LCAweDAxNDAsIDB4MjA5MSwgMHg4MDAwLCAweDYwMjgsIDB4YzA5YywgMHg2MDJhLCAweDIwMTEsCi0JMHgwMDAzLCAweDA4MGMsIDB4YWFiZiwgMHgyMDExLCAweDAwMDIsIDB4MDgwYywgMHhhYWM5LCAweDA4MGMsCi0JMHhhOWQzLCAweDA4MGMsIDB4ODhjMywgMHgwMDM2LCAweDkwMWUsIDB4MDgwYywgMHhhYTQ5LCAweDAwM2UsCi0JMHg2MGUzLCAweDAwMDAsIDB4MDgwYywgMHhmMDdmLCAweDA4MGMsIDB4ZjA5YSwgMHgyMDA5LCAweDAwMDQsCi0JMHgwODBjLCAweDJjNjcsIDB4MDgwYywgMHgyYjgyLCAweDIwMDEsIDB4MTgwMCwgMHgyMDAzLCAweDAwMDQsCi0JMHg2MDI3LCAweDAwMDgsIDB4MjAxMSwgMHg3NGE1LCAweDA4MGMsIDB4ODkxNywgMHgwODBjLCAweDc2NTEsCi0JMHgwMTE4LCAweDkwMDYsIDB4MDgwYywgMHgyZDM5LCAweDA4MGMsIDB4MGJhMCwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDI4MWMsIDB4MDEyZSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMDI2LCAweDAwZTYsIDB4MjAxMSwgMHg3NGIyLCAweDIwNzEsCi0JMHgxOWZiLCAweDcwMWMsIDB4OTIwNiwgMHgxMTE4LCAweDcwMTgsIDB4OTAwNSwgMHgwMTEwLCAweDkwODUsCi0JMHgwMDAxLCAweDAwZWUsIDB4MDAyZSwgMHgwMDA1LCAweDYwMjAsIDB4ZDA5YywgMHgwMDA1LCAweDY4MDAsCi0JMHg5MDg0LCAweGZmZmUsIDB4OTA4NiwgMHgwMGMwLCAweDAxYjgsIDB4MjAwMSwgMHgwMGMwLCAweDA4MGMsCi0JMHgyZDM5LCAweDAxNTYsIDB4MjBhOSwgMHgwMDJkLCAweDFkMDQsIDB4NzUyNCwgMHgyMDkxLCAweDYwMDAsCi0JMHgxZjA0LCAweDc1MjQsIDB4MDE1ZSwgMHgwMGQ2LCAweDIwNjksIDB4MTgwMCwgMHg2ODljLCAweDgwMDEsCi0JMHgwMjIwLCAweDAxMTgsIDB4Njg5ZSwgMHgwMGRlLCAweDAwMDUsIDB4Njg5ZiwgMHgwMDE0LCAweDY4ZTgsCi0JMHhkMGRjLCAweDBkYzgsIDB4NjgwMCwgMHg5MDg2LCAweDAwMDEsIDB4MWRhOCwgMHgwODBjLCAweDg5MjMsCi0JMHgwYzkwLCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAxNDAsCi0JMHgyMDcxLCAweDE4MDAsIDB4MDgwYywgMHg3OTQxLCAweDIwMDEsIDB4MTk2ZCwgMHgyMDAzLCAweDAwMDAsCi0JMHg5MDA2LCAweDcwOWEsIDB4NjBlMiwgMHg2ODg2LCAweDA4MGMsIDB4MjhlNywgMHg5MDA2LCAweDA4MGMsCi0JMHgyZDM5LCAweDA4MGMsIDB4NWZlZCwgMHg2MDI3LCAweGZmZmYsIDB4NjAyYiwgMHgxODJmLCAweDAwZWUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsCi0JMHgyMDY5LCAweDAxNDAsIDB4MjA3MSwgMHgxODAwLCAweDIwMDEsIDB4MTk3ZCwgMHgyMDBjLCAweDkxODYsCi0JMHgwMDAwLCAweDAxNTgsIDB4OTE4NiwgMHgwMDAxLCAweDAxNTgsIDB4OTE4NiwgMHgwMDAyLCAweDAxNTgsCi0JMHg5MTg2LCAweDAwMDMsIDB4MDE1OCwgMHgwODA0LCAweDc1ZmYsIDB4NzA5YiwgMHgwMDIyLCAweDAwNDAsCi0JMHg3MDliLCAweDAwMjEsIDB4MDAyOCwgMHg3MDliLCAweDAwMjMsIDB4MDAxMCwgMHg3MDliLCAweDAwMjQsCi0JMHg2MGUzLCAweDAwMDAsIDB4Njg4NywgMHgwMDAxLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDI4ZTcsCi0JMHgwMDI2LCAweDA4MGMsIDB4YjI0NCwgMHgwMDJlLCAweDcwMDAsIDB4OTA4ZSwgMHgwMDA0LCAweDAxMTgsCi0JMHg2MDJiLCAweDAwMjgsIDB4MDAxMCwgMHg2MDJiLCAweDAwMjAsIDB4MDE1NiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwYTksIDB4MDAwNSwgMHg2MDI0LCAweGQwYWMsIDB4MDE1MCwgMHgwMTJlLCAweDAxNWUsCi0JMHgwODBjLCAweGQ3ZTMsIDB4MDExOCwgMHg5MDA2LCAweDA4MGMsIDB4MmQ2MywgMHgwODA0LCAweDc2MGIsCi0JMHg2ODAwLCAweDkwODQsIDB4MDBhMSwgMHhjMGJkLCAweDY4MDIsIDB4MDgwYywgMHgyYzYxLCAweDY5MDQsCi0JMHhkMWQ0LCAweDExNDAsIDB4MjAwMSwgMHgwMTAwLCAweDA4MGMsIDB4MmQzOSwgMHgxZjA0LCAweDc1YTMsCi0JMHgwODBjLCAweDc2OGIsIDB4MDEyZSwgMHgwMTVlLCAweDA4MGMsIDB4NzY0OCwgMHgwMWQ4LCAweDYwNDQsCi0JMHg5MDA1LCAweDAxOTgsIDB4MjAxMSwgMHgwMTE0LCAweDIyMDQsIDB4OTA4NSwgMHgwMTAwLCAweDIwMTIsCi0JMHg2MDUwLCAweDAwMDYsIDB4OTA4NSwgMHgwMDIwLCAweDYwNTIsIDB4MDgwYywgMHg3NjhiLCAweDkwMDYsCi0JMHg4MDAxLCAweDFkZjAsIDB4MDAwZSwgMHg2MDUyLCAweDAwMjgsIDB4NjgwNCwgMHhkMGQ0LCAweDExMTAsCi0JMHgwODBjLCAweDc2OGIsIDB4MDgwYywgMHhkN2UzLCAweDAxMTgsIDB4OTAwNiwgMHgwODBjLCAweDJkNjMsCi0JMHgwMDE2LCAweDAwMjYsIDB4NzAwMCwgMHg5MDhlLCAweDAwMDQsIDB4MDEzMCwgMHgyMDA5LCAweDAwYzgsCi0JMHgyMDExLCAweDc0YjIsIDB4MDgwYywgMHg4OGQ1LCAweDAwMmUsIDB4MDAxZSwgMHgwODBjLCAweDg3MWMsCi0JMHg3MDM0LCAweGMwODUsIDB4NzAzNiwgMHgyMDAxLCAweDE5N2QsIDB4MjAwMywgMHgwMDA0LCAweDA4MGMsCi0JMHg3MmY1LCAweDA4MGMsIDB4NzY0OCwgMHgwMTM4LCAweDY4MDQsIDB4ZDBkNCwgMHgxMTIwLCAweGQwZGMsCi0JMHgxMTAwLCAweDA4MGMsIDB4NzkzNywgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDAwYzYsCi0JMHgwMGQ2LCAweDAwZTYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksIDB4MDE0MCwgMHgyMDcxLCAweDE4MDAsCi0JMHgwODBjLCAweDg3MzMsIDB4MDgwYywgMHg4NzI1LCAweDA4MGMsIDB4Nzk0MSwgMHgyMDAxLCAweDE5NmQsCi0JMHgyMDAzLCAweDAwMDAsIDB4OTAwNiwgMHg3MDlhLCAweDYwZTIsIDB4Njg4NiwgMHgwODBjLCAweDI4ZTcsCi0JMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDYwMjcsCi0JMHhmZmZmLCAweDYwMmIsIDB4MTgyZiwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDAwMDYsCi0JMHgyMDAxLCAweDE5N2MsIDB4MjAwNCwgMHg5MDg2LCAweGFhYWEsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsCi0JMHgwODBjLCAweDU3ZDksIDB4OTA4NCwgMHgwMDMwLCAweDkwODYsIDB4MDAwMCwgMHgwMDBlLCAweDAwMDUsCi0JMHgwMDA2LCAweDA4MGMsIDB4NTdkOSwgMHg5MDg0LCAweDAwMzAsIDB4OTA4NiwgMHgwMDMwLCAweDAwMGUsCi0JMHgwMDA1LCAweDAwMDYsIDB4MDgwYywgMHg1N2Q5LCAweDkwODQsIDB4MDAzMCwgMHg5MDg2LCAweDAwMTAsCi0JMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwgMHgwODBjLCAweDU3ZDksIDB4OTA4NCwgMHgwMDMwLCAweDkwODYsCi0JMHgwMDIwLCAweDAwMGUsIDB4MDAwNSwgMHgwMDM2LCAweDAwMTYsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsCi0JMHg5MDhjLCAweDAwMTMsIDB4MDE2OCwgMHgwMDIwLCAweDA4MGMsIDB4MjkwNywgMHg5MDBlLCAweDAwMTAsCi0JMHgyMDA5LCAweDAwMDIsIDB4MjAxOSwgMHgwMDI4LCAweDA4MGMsIDB4MzIxYiwgMHg5MDA2LCAweDAwMTksCi0JMHgwMDFlLCAweDAwM2UsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwYywgMHgyZTA0LCAweDAxMzAsCi0JMHgwODBjLCAweGQ3ZGMsIDB4MTEyOCwgMHg5MDg1LCAweDAwMTAsIDB4MDAxMCwgMHg5MDg0LCAweGZmZWYsCi0JMHgyMDcyLCAweDAwZWUsIDB4MDAwNSwgMHg2MDUwLCAweDAwMDYsIDB4NjBlYywgMHgwMDA2LCAweDYwMGMsCi0JMHgwMDA2LCAweDYwMDQsIDB4MDAwNiwgMHg2MDI4LCAweDAwMDYsIDB4MDAxNiwgMHg2MTM4LCAweDYwNTAsCi0JMHg5MDg0LCAweGZiZmYsIDB4OTA4NSwgMHgyMDAwLCAweDYwNTIsIDB4NjEzYSwgMHgyMGE5LCAweDAwMTIsCi0JMHgxZDA0LCAweDc2YTAsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NzZhMCwgMHg2MDJmLCAweDAxMDAsCi0JMHg2MDJmLCAweDAwMDAsIDB4NjA1MCwgMHg5MDg1LCAweDA0MDAsIDB4OTA4NCwgMHhkZmZmLCAweDYwNTIsCi0JMHg2MTNhLCAweDAwMWUsIDB4NjAyZiwgMHgwMDQwLCAweDYwMmYsIDB4MDAwMCwgMHgwMDBlLCAweDYwMmEsCi0JMHgwMDBlLCAweDYwMDYsIDB4MDAwZSwgMHg2MDBlLCAweDAwMGUsIDB4NjBlZSwgMHg2MGUzLCAweDAwMDAsCi0JMHg2ODg3LCAweDAwMDEsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjhlNywgMHgyMDAxLCAweDAwYTAsCi0JMHgwMDA2LCAweDA4MGMsIDB4ZDdlMywgMHgwMDBlLCAweDAxMzAsIDB4MDgwYywgMHgyZDU3LCAweDkwMDYsCi0JMHgwODBjLCAweDJkNjMsIDB4MDAxMCwgMHgwODBjLCAweDJkMzksIDB4MDAwZSwgMHg2MDUyLCAweDYwNTAsCi0JMHgwMDA2LCAweGMwZTUsIDB4NjA1MiwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHgwODBjLCAweDJiZDYsCi0JMHgwMGZlLCAweDAwMGUsIDB4NjA1MiwgMHgwMDA1LCAweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsCi0JMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDIwNzEsCi0JMHgxODAwLCAweDYwMjAsIDB4OTA4NCwgMHgwMDgwLCAweDAxMzgsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsCi0JMHhjMWM1LCAweDIxMDIsIDB4MDgwNCwgMHg3NzY2LCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGMxYzQsCi0JMHgyMTAyLCAweDYwMjgsIDB4OTA4NCwgMHhlMWZmLCAweDYwMmEsIDB4NjAyNywgMHgwMjAwLCAweDIwMDEsCi0JMHgwMDkwLCAweDA4MGMsIDB4MmQzOSwgMHgyMGE5LCAweDAzNjYsIDB4NjAyNCwgMHhkMGNjLCAweDE1MTgsCi0JMHgxZDA0LCAweDc3MGQsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NzcwZCwgMHgyMDExLCAweDAwMDMsCi0JMHgwODBjLCAweGFhYmYsIDB4MjAxMSwgMHgwMDAyLCAweDA4MGMsIDB4YWFjOSwgMHgwODBjLCAweGE5ZDMsCi0JMHg5MDFlLCAweDA4MGMsIDB4YWE0OSwgMHgyMDAxLCAweDAwYTAsIDB4MDgwYywgMHgyZDM5LCAweDA4MGMsCi0JMHg3OTMyLCAweDA4MGMsIDB4NjEyZSwgMHgwODBjLCAweGQ3ZTMsIDB4MDExMCwgMHgwODBjLCAweDBkMzMsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDRjOCwgMHgwODBjLCAweDFiMDYsIDB4NjBlMywgMHgwMDAwLCAweDIwMDEsCi0JMHgxODBkLCAweDIwMDQsIDB4ZDA4YywgMHgyMDAxLCAweDAwMDIsIDB4MTExOCwgMHgyMDAxLCAweDE5NmQsCi0JMHgyMDA0LCAweDA4MGMsIDB4MjhlNywgMHg2MGUyLCAweDIwMDEsIDB4MDA4MCwgMHgwODBjLCAweDJkMzksCi0JMHgyMGE5LCAweDAzNjYsIDB4NjAyNywgMHgxZTAwLCAweDIwMDksIDB4MWUwMCwgMHgwODBjLCAweDJjNjEsCi0JMHg2MDI0LCAweDkxMGMsIDB4MDE0MCwgMHgxZDA0LCAweDc3NGEsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsCi0JMHg3NzRhLCAweDA4MDQsIDB4NzcxNiwgMHg2MDI4LCAweDkwODUsIDB4MWUwMCwgMHg2MDJhLCAweDcwYjQsCi0JMHg5MDA1LCAweDExMTgsIDB4Njg4NywgMHgwMDAxLCAweDAwMDgsIDB4Njg4NiwgMHgwODBjLCAweGQ3ZTMsCi0JMHgwMTEwLCAweDA4MGMsIDB4MGQzMywgMHg5MDA2LCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDE1ZSwgMHgwMDA1LCAweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsCi0JMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA3MSwgMHgxODAwLCAweDcwMDAsCi0JMHg5MDg2LCAweDAwMDMsIDB4MTE2OCwgMHgyMDAxLCAweDAyMGIsIDB4MjAwNCwgMHg5MDg0LCAweDU1NDAsCi0JMHg5MDg2LCAweDU1NDAsIDB4MTEyOCwgMHgyMDY5LCAweDFhN2MsIDB4MmQwNCwgMHg4MDAwLCAweDIwNmEsCi0JMHgyMDY5LCAweDAxNDAsIDB4NjAyMCwgMHg5MDg0LCAweDAwYzAsIDB4MDEyMCwgMHg2ODg0LCAweDkwMDUsCi0JMHgxOTA0LCAweDc3ZDksIDB4MjAwMSwgMHgwMDg4LCAweDA4MGMsIDB4MmQzOSwgMHg5MDA2LCAweDYwZTIsCi0JMHg2ODg2LCAweDA4MGMsIDB4MjhlNywgMHgyMDY5LCAweDAyMDAsIDB4NjgwNCwgMHg5MDA1LCAweDExMTgsCi0JMHg2ODA4LCAweDkwMDUsIDB4MDFjMCwgMHg2MDI4LCAweDkwODQsIDB4ZmJmZiwgMHg2MDJhLCAweDYwMjcsCi0JMHgwNDAwLCAweDIwNjksIDB4MTk4ZiwgMHg3MDAwLCAweDIwNmEsIDB4NzA5YiwgMHgwMDI2LCAweDcwMDMsCi0JMHgwMDAxLCAweDIwYTksIDB4MDAwMiwgMHgxZDA0LCAweDc3YmIsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsCi0JMHg3N2JiLCAweDA4MDQsIDB4NzgxMCwgMHgyMDY5LCAweDAxNDAsIDB4MjBhOSwgMHgwMzg0LCAweDYwMjcsCi0JMHgxZTAwLCAweDIwMDksIDB4MWUwMCwgMHgwODBjLCAweDJjNjEsIDB4NjAyNCwgMHg5MTBjLCAweDA1MDgsCi0JMHg5MDg0LCAweDFhMDAsIDB4MTFmMCwgMHgxZDA0LCAweDc3YzcsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsCi0JMHg3N2M3LCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweGFhYmYsIDB4MjAxMSwgMHgwMDAyLCAweDA4MGMsCi0JMHhhYWM5LCAweDA4MGMsIDB4YTlkMywgMHg5MDFlLCAweDA4MGMsIDB4YWE0OSwgMHgyMDAxLCAweDAwYTAsCi0JMHgwODBjLCAweDJkMzksIDB4MDgwYywgMHg3OTMyLCAweDA4MGMsIDB4NjEyZSwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMGY4LCAweDA4MGMsIDB4MWIwNiwgMHgyMDAxLCAweDAwODAsIDB4MDgwYywgMHgyZDM5LCAweDIwNjksCi0JMHgwMTQwLCAweDYwZTMsIDB4MDAwMCwgMHg3MGI0LCAweDkwMDUsIDB4MTExOCwgMHg2ODg3LCAweDAwMDEsCi0JMHgwMDA4LCAweDY4ODYsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywgMHgyMDAxLCAweDAwMDIsCi0JMHgxMTE4LCAweDIwMDEsIDB4MTk2ZCwgMHgyMDA0LCAweDA4MGMsIDB4MjhlNywgMHg2MGUyLCAweDkwMDYsCi0JMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMTVlLCAweDAwMDUsCi0JMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNjEsCi0JMHgwMTAwLCAweDIwNzEsIDB4MTgwMCwgMHg2MDIwLCAweDkwODQsIDB4MDBjMCwgMHgwMWM4LCAweDIwMTEsCi0JMHgwMDAzLCAweDA4MGMsIDB4YWFiZiwgMHgyMDExLCAweDAwMDIsIDB4MDgwYywgMHhhYWM5LCAweDA4MGMsCi0JMHhhOWQzLCAweDkwMWUsIDB4MDgwYywgMHhhYTQ5LCAweDIwNjksIDB4MDE0MCwgMHgyMDAxLCAweDAwYTAsCi0JMHgwODBjLCAweDJkMzksIDB4MDgwYywgMHg3OTMyLCAweDA4MGMsIDB4NjEyZSwgMHgwODA0LCAweDc4YjIsCi0JMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHhkMWI0LCAweDExNjAsIDB4YzFiNSwgMHgyMTAyLCAweDA4MGMsCi0JMHg3NDlhLCAweDIwNjksIDB4MDE0MCwgMHgyMDAxLCAweDAwODAsIDB4MDgwYywgMHgyZDM5LCAweDYwZTMsCi0JMHgwMDAwLCAweDIwNjksIDB4MDIwMCwgMHg2ODA0LCAweDkwMDUsIDB4MTExOCwgMHg2ODA4LCAweDkwMDUsCi0JMHgwMTgwLCAweDYwMjgsIDB4OTA4NCwgMHhmZGZmLCAweDYwMmEsIDB4NjAyNywgMHgwMjAwLCAweDIwNjksCi0JMHgxOThmLCAweDcwMDAsIDB4MjA2YSwgMHg3MDliLCAweDAwMjcsIDB4NzAwMywgMHgwMDAxLCAweDA4MDQsCi0JMHg3OGIyLCAweDYwMjcsIDB4MWUwMCwgMHgyMDA5LCAweDFlMDAsIDB4MDgwYywgMHgyYzYxLCAweDYwMjQsCi0JMHg5MTBjLCAweDAxYzgsIDB4OTA4NCwgMHgxYzAwLCAweDExYjAsIDB4MWQwNCwgMHg3ODY5LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDA4MGMsIDB4ODc3NiwgMHgwMGVlLCAweDAwZGUsCi0JMHgwMGNlLCAweDAwMWUsIDB4MDAwZSwgMHgwMGU2LCAweDIwNzEsIDB4MTlmYiwgMHg3MDc4LCAweDAwZWUsCi0JMHg5MDA1LCAweDE5ZjgsIDB4MDQzOCwgMHgwMDI2LCAweDIwMTEsIDB4NzRiMiwgMHgwODBjLCAweDg4M2QsCi0JMHgyMDExLCAweDc0YTUsIDB4MDgwYywgMHg4OTE3LCAweDAwMmUsIDB4MjA2OSwgMHgwMTQwLCAweDYwZTMsCi0JMHgwMDAwLCAweDcwYjQsIDB4OTAwNSwgMHgxMTE4LCAweDY4ODcsIDB4MDAwMSwgMHgwMDA4LCAweDY4ODYsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDIwMDEsIDB4MDAwMiwgMHgxMTE4LCAweDIwMDEsCi0JMHgxOTZkLCAweDIwMDQsIDB4MDgwYywgMHgyOGU3LCAweDYwZTIsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsCi0JMHhjMWI0LCAweDIxMDIsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMTVlLCAweDAwMDUsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDAwYzYsCi0JMHgwMGU2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweDE4MDAsIDB4MDgwYywgMHhkN2RjLCAweDE5MDQsCi0JMHg3OTIwLCAweDcxMzAsIDB4ZDE4NCwgMHgxMTcwLCAweDA4MGMsIDB4MzNhYSwgMHgwMTM4LCAweGMxOGQsCi0JMHg3MTMyLCAweDIwMTEsIDB4MTg0OCwgMHgyMjE0LCAweGQyYWMsIDB4MTEyMCwgMHg3MDMwLCAweGQwOGMsCi0JMHgwOTA0LCAweDc5MjAsIDB4MjAxMSwgMHgxODQ4LCAweDIyMGMsIDB4ZDFhNCwgMHgwNTM4LCAweDAwMTYsCi0JMHgyMDE5LCAweDAwMGUsIDB4MDgwYywgMHhlYmExLCAweDAxNTYsIDB4MDBiNiwgMHgyMGE5LCAweDAwN2YsCi0JMHg5MDBlLCAweDkxODYsIDB4MDA3ZSwgMHgwMWEwLCAweDkxODYsIDB4MDA4MCwgMHgwMTg4LCAweDA4MGMsCi0JMHg2NzI0LCAweDExNzAsIDB4MjEyMCwgMHg5MDA2LCAweDAwMTYsIDB4MjAwOSwgMHgwMDBlLCAweDA4MGMsCi0JMHhlYzMxLCAweDIwMDksIDB4MDAwMSwgMHgyMDExLCAweDAxMDAsIDB4MDgwYywgMHg4YTUwLCAweDAwMWUsCi0JMHg4MTA4LCAweDFmMDQsIDB4NzhlOSwgMHgwMGJlLCAweDAxNWUsIDB4MDAxZSwgMHhkMWFjLCAweDExNDgsCi0JMHgwMDE2LCAweDIwMDksIDB4MDAwMiwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHgzMjFiLCAweDAwMWUsCi0JMHgwMDc4LCAweDAxNTYsIDB4MDBiNiwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwODBjLCAweDY3MjQsCi0JMHgxMTEwLCAweDA4MGMsIDB4NjE0OCwgMHg4MTA4LCAweDFmMDQsIDB4NzkxNiwgMHgwMGJlLCAweDAxNWUsCi0JMHgwODBjLCAweDFiMDYsIDB4MDgwYywgMHhiMjQ0LCAweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweDYxMmUsCi0JMHgwODBjLCAweDc1NjMsIDB4MDBlZSwgMHgwMGNlLCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMTVlLCAweDAwMDUsIDB4MjAwMSwgMHgxOTdkLCAweDIwMDMsIDB4MDAwMSwgMHgwMDA1LCAweDIwMDEsCi0JMHgxOTdkLCAweDIwMDMsIDB4MDAwMCwgMHgwMDA1LCAweDIwMDEsIDB4MTk3YywgMHgyMDAzLCAweGFhYWEsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTk3YywgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwgMHgyMDcxLCAweDE4ZmEsCi0JMHg3MDAzLCAweDAwMDAsIDB4NzAwNywgMHgwMDAwLCAweDA4MGMsIDB4MTAyNywgMHgwOTBjLCAweDBkYzUsCi0JMHhhOGFiLCAweGRjYjAsIDB4MjkwMCwgMHg3MDRlLCAweDA4MGMsIDB4MTAyNywgMHgwOTBjLCAweDBkYzUsCi0JMHhhOGFiLCAweGRjYjAsIDB4MjkwMCwgMHg3MDUyLCAweGE4NjcsIDB4MDAwMCwgMHhhODZiLCAweDAwMDEsCi0JMHhhODlmLCAweDAwMDAsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDA0MCwgMHg2ODQ4LCAweDkwMDUsCi0JMHgxMTE4LCAweDkwODUsIDB4MDAwMSwgMHgwNGIwLCAweDY4NDAsIDB4OTAwNSwgMHgwMTUwLCAweDA0YTEsCi0JMHg2YTUwLCAweDkyMDAsIDB4NzAwMiwgMHg2ODU0LCAweDkxMDEsIDB4NzAwNiwgMHg5MDA2LCAweDcwMTIsCi0JMHg3MDE2LCAweDY4NTAsIDB4NzAwMiwgMHg2ODU0LCAweDcwMDYsIDB4Njg1OCwgMHg3MDBhLCAweDY4NWMsCi0JMHg3MDBlLCAweDY4NDAsIDB4OTAwNSwgMHgxMTEwLCAweDcwMTIsIDB4NzAxNiwgMHg2ODQ4LCAweDcwMWEsCi0JMHg3MDFjLCAweDkwODUsIDB4MDA0MCwgMHg3MDFlLCAweDIwMDEsIDB4MDAxOSwgMHg3MDM2LCAweDcwMmIsCi0JMHgwMDAxLCAweDIwMDEsIDB4MDAwNCwgMHgyMDBjLCAweDkxOGMsIDB4ZmZmNywgMHg5MThkLCAweDgwMDAsCi0JMHgyMTAyLCAweDAwZDYsIDB4MjA2OSwgMHgxOGZhLCAweDY4MDcsIDB4MDAwMSwgMHgwMGRlLCAweDA4MGMsCi0JMHg3Zjc0LCAweDkwMDYsIDB4MDBlZSwgMHgwMDA1LCAweDkwMGUsIDB4MDE1NiwgMHgyMGE5LCAweDAwMDYsCi0JMHg4MDAzLCAweDIwMTEsIDB4MDEwMCwgMHgyMjE0LCAweDkyOTYsIDB4MDAwOCwgMHgxMTEwLCAweDgxOGQsCi0JMHgwMDEwLCAweDgxZjUsIDB4M2UwOCwgMHgxZjA0LCAweDc5YTgsIDB4MDE1ZSwgMHgwMDA1LCAweDIwNzksCi0JMHgwMDQwLCAweDIwNzEsIDB4MThmYSwgMHg3MDA0LCAweDAwMDIsIDB4NzljNywgMHg3OWM4LCAweDdhMDAsCi0JMHg3YTViLCAweDdiYmIsIDB4NzljNSwgMHg3OWM1LCAweDdiZTUsIDB4MDgwYywgMHgwZGM1LCAweDAwMDUsCi0JMHgyMDc5LCAweDAwNDAsIDB4NzgyYywgMHg5MDhjLCAweDA3ODAsIDB4MTkwYywgMHg4MDU2LCAweGQwYTQsCi0JMHgwMWY4LCAweDc4MjQsIDB4MjA0OCwgMHg5MDA2LCAweGE4MDIsIDB4YTgwNiwgMHhhODY0LCAweDkwODQsCi0JMHgwMGZmLCAweDkwOGEsIDB4MDA0MCwgMHgwNjEwLCAweDAwYzAsIDB4MjAwMSwgMHgxODAwLCAweDIwMGMsCi0JMHg5MTg2LCAweDAwMDMsIDB4MTE2OCwgMHg3MDA0LCAweDAwMDIsIDB4NzlmMCwgMHg3OWNhLCAweDc5ZjAsCi0JMHg3OWVlLCAweDc5ZjAsIDB4NzlmMCwgMHg3OWYwLCAweDc5ZjAsIDB4NzlmMCwgMHgwODBjLCAweDdhNWIsCi0JMHg3ODJjLCAweGQwOWMsIDB4MDkwYywgMHg3Zjc0LCAweDAwMDUsIDB4OTA4MiwgMHgwMDVhLCAweDEyMTgsCi0JMHgyMTAwLCAweDAwM2IsIDB4MGMxMCwgMHgwODBjLCAweDdhOTEsIDB4MGM5MCwgMHgwMGUzLCAweDA4ZTgsCi0JMHgwMDA1LCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhYjMsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5ZCwgMHg3YTkxLCAweDdjZGIsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YWIzLCAweDdhOTEsIDB4N2E5ZCwgMHg3ZDFjLCAweDdkNWQsCi0JMHg3ZGE0LCAweDdkYjgsIDB4N2E5MSwgMHg3YTkxLCAweDdhYjMsIDB4N2E5ZCwgMHg3YWM3LCAweDdhOTEsCi0JMHg3YjhmLCAweDdlNjMsIDB4N2U3ZSwgMHg3YTkxLCAweDdhYjMsIDB4N2E5MSwgMHg3YWM3LCAweDdhOTEsCi0JMHg3YTkxLCAweDdiODUsIDB4N2U3ZSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhZGIsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHg3ZmZhLCAweDdhOTEsCi0JMHg3ZmE0LCAweDdhOTEsIDB4N2ZhNCwgMHg3YTkxLCAweDdhZjAsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTkxLCAweDdhOTEsIDB4N2E5MSwgMHgyMDc5LCAweDAwNDAsIDB4NzAwNCwgMHg5MDg2LCAweDAwMDMsCi0JMHgxMTk4LCAweDc4MmMsIDB4MDgwYywgMHg3ZjlkLCAweGQwYTQsIDB4MDE3MCwgMHg3ODI0LCAweDIwNDgsCi0JMHg5MDA2LCAweGE4MDIsIDB4YTgwNiwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDhhLCAweDAwMWEsCi0JMHgxMjEwLCAweDAwMmIsIDB4MGM1MCwgMHgwMGU5LCAweDA4MGMsIDB4N2Y3NCwgMHgwMDA1LCAweDdhOTEsCi0JMHg3YTlkLCAweDdjYzcsIDB4N2E5MSwgMHg3YTlkLCAweDdhOTEsIDB4N2E5ZCwgMHg3YTlkLCAweDdhOTEsCi0JMHg3YTlkLCAweDdjYzcsIDB4N2E5ZCwgMHg3YTlkLCAweDdhOWQsIDB4N2E5ZCwgMHg3YTlkLCAweDdhOTEsCi0JMHg3YTlkLCAweDdjYzcsIDB4N2E5MSwgMHg3YTkxLCAweDdhOWQsIDB4N2E5MSwgMHg3YTkxLCAweDdhOTEsCi0JMHg3YTlkLCAweDAwZTYsIDB4MjA3MSwgMHgxOGZhLCAweDIwMDksIDB4MDQwMCwgMHgwMDcxLCAweDAwZWUsCi0JMHgwMDA1LCAweDIwMDksIDB4MTAwMCwgMHgwMDQ5LCAweDAwMDUsIDB4MjAwOSwgMHgyMDAwLCAweDAwMjksCi0JMHgwMDA1LCAweDIwMDksIDB4MDgwMCwgMHgwMDA5LCAweDAwMDUsIDB4NzAwNywgMHgwMDAxLCAweGE4NjgsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTEwNSwgMHhhODZhLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAxMmUsIDB4MDAwNSwgMHhhODY0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDBkMDgsCi0JMHg4MDAxLCAweDExMjAsIDB4NzAwNywgMHgwMDAxLCAweDA4MDQsIDB4N2M2NCwgMHg3MDA3LCAweDAwMDMsCi0JMHg3MDEyLCAweDI5MDAsIDB4NzAxNiwgMHg3MDFhLCAweDcwNGIsIDB4N2M2NCwgMHgwMDA1LCAweGE4NjQsCi0JMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHgwOTY4LCAweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsCi0JMHgwODA0LCAweDdjN2YsIDB4NzAwNywgMHgwMDAzLCAweDcwMTIsIDB4MjkwMCwgMHg3MDE2LCAweDcwMWEsCi0JMHg3MDRiLCAweDdjN2YsIDB4MDAwNSwgMHhhODY0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDA5MDQsCi0JMHg3YTk5LCAweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwgMHg3YzliLCAweDcwMDcsCi0JMHgwMDAzLCAweDcwMTIsIDB4MjkwMCwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwgMHg3YzliLCAweDAwMDUsCi0JMHhhODY0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwMSwgMHgxOTA0LCAweDdhOTksCi0JMHg3MDA3LCAweDAwMDEsIDB4MjAwOSwgMHgxODM0LCAweDIxMGMsIDB4ODFmZiwgMHgxOTA0LCAweDdiNWMsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDA5MDQsIDB4N2I0NywgMHhhOTljLCAweDkxODYsCi0JMHgwMGZmLCAweDA1ZTgsIDB4YTk5NCwgMHg5MTg2LCAweDAwNmYsIDB4MDE4OCwgMHg5MTg2LCAweDAwNzQsCi0JMHgxNWIwLCAweDAwMjYsIDB4MjAxMSwgMHgwMDEwLCAweDA4MGMsIDB4NmFjNywgMHgwMDJlLCAweDA1NzgsCi0JMHgwMDE2LCAweGE5OTgsIDB4MDgwYywgMHg2YjExLCAweDAwMWUsIDB4MTU0OCwgMHgwNDAwLCAweDA4MGMsCi0JMHg3NjM3LCAweDAxNDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAxNiwgMHgyMDAxLCAweDAwMzAsCi0JMHg5MDBlLCAweDA0MzgsIDB4MDAyNiwgMHgyMDExLCAweDgwMDgsIDB4MDgwYywgMHg2YWM3LCAweDAwMmUsCi0JMHgwMWIwLCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweGE5OTgsIDB4YWFhMCwgMHhhYjljLCAweDkxOGQsCi0JMHg4MDAwLCAweDA4MGMsIDB4NmIxMSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgxMTQwLCAweGE4OTcsCi0JMHg0MDA1LCAweGE4OWIsIDB4NDAwOSwgMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwgMHgwMDUwLCAweGE4NjgsCi0JMHg5MDg0LCAweDAwZmYsIDB4YTg2YSwgMHhhODgzLCAweDAwMDAsIDB4MDgwYywgMHg2M2M1LCAweDExMDgsCi0JMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE4NjcsIDB4MDEzOSwgMHhhODdhLCAweGE5ODIsCi0JMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwY2EwLCAweGE5OTQsIDB4OTE4NiwgMHgwMDcxLCAweDA5MDQsCi0JMHg3YjAwLCAweDkxODYsIDB4MDA2NCwgMHgwOTA0LCAweDdiMDAsIDB4OTE4NiwgMHgwMDdjLCAweDA5MDQsCi0JMHg3YjAwLCAweDkxODYsIDB4MDAyOCwgMHgwOTA0LCAweDdiMDAsIDB4OTE4NiwgMHgwMDM4LCAweDA5MDQsCi0JMHg3YjAwLCAweDkxODYsIDB4MDA3OCwgMHgwOTA0LCAweDdiMDAsIDB4OTE4NiwgMHgwMDVmLCAweDA5MDQsCi0JMHg3YjAwLCAweDkxODYsIDB4MDA1NiwgMHgwOTA0LCAweDdiMDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsCi0JMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwgMHg5MDBlLCAweDA4NjAsIDB4YTg3YywgMHg5MDg0LCAweDAwYzAsCi0JMHg5MDg2LCAweDAwYzAsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwgMHg3ZTk1LCAweDI5MDAsCi0JMHg3MDE2LCAweDcwMWEsIDB4MjBhOSwgMHgwMDA0LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDMwLCAweDIwOTgsIDB4NzA1MCwgMHgyMDQwLCAweGEwNjAsIDB4MjBlOCwgMHhhMDVjLCAweDkwODAsCi0JMHgwMDIzLCAweDIwYTAsIDB4NDAwMywgMHhhODg4LCAweDcwMTIsIDB4OTA4MiwgMHgwNDAxLCAweDFhMDQsCi0JMHg3YWExLCAweGFhYjQsIDB4OTI4YSwgMHgwMDAyLCAweDFhMDQsIDB4N2FhMSwgMHg4MmZmLCAweDExMzgsCi0JMHhhOGI4LCAweGE5YmMsIDB4OTEwNSwgMHgwMTE4LCAweDIwMDEsIDB4N2MyMiwgMHgwMDE4LCAweDkyODAsCi0JMHg3YzE4LCAweDIwMDUsIDB4NzA1NiwgMHg3MDEwLCAweDkwMTUsIDB4MDkwNCwgMHg3YzAzLCAweDA4MGMsCi0JMHgxMDI3LCAweDExMTgsIDB4NzAwNywgMHgwMDA0LCAweDAwMDUsIDB4MjkwMCwgMHg3MDIyLCAweDcwNTQsCi0JMHgyMDYwLCAweGUwMDAsIDB4YTg2NiwgMHg3MDUwLCAweDIwNDAsIDB4YTk1YywgMHhlMDA0LCAweDkxMDAsCi0JMHhhMDc2LCAweGE4NjAsIDB4YTA3MiwgMHhlMDA4LCAweDkyMGEsIDB4MTIxMCwgMHg5MDBlLCAweDIyMDAsCi0JMHg3MTEyLCAweGUyMGMsIDB4ODAwMywgMHg4MDBiLCAweDkyOTYsIDB4MDAwNCwgMHgwMTA4LCAweDkxMDgsCi0JMHhhMTdhLCAweDgxMGIsIDB4YTE3ZSwgMHgwODBjLCAweDEwZjgsIDB4YTA2YywgMHg5MDhlLCAweDAxMDAsCi0JMHgwMTcwLCAweDkwODYsIDB4MDIwMCwgMHgwMTE4LCAweDcwMDcsIDB4MDAwNywgMHgwMDA1LCAweDcwMjAsCi0JMHgyMDQ4LCAweDA4MGMsIDB4MTA0MCwgMHg3MDE0LCAweDIwNDgsIDB4MDgwNCwgMHg3YWExLCAweDcwMjAsCi0JMHgyMDQ4LCAweDcwMTgsIDB4YTgwMiwgMHhhODA3LCAweDAwMDAsIDB4MjkwOCwgMHgyMDQ4LCAweGE5MDYsCi0JMHg3MTFhLCAweDA4MDQsIDB4N2JiYiwgMHg3MDE0LCAweDIwNDgsIDB4NzAwNywgMHgwMDAxLCAweGE4YjQsCi0JMHg5MDA1LCAweDExMjgsIDB4YThiOCwgMHhhOWJjLCAweDkxMDUsIDB4MDEwOCwgMHgwMGI5LCAweGE4NjQsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDFlLCAweDA5MDQsIDB4N2U5NSwgMHgwODA0LCAweDdjNjQsCi0JMHg3YzFhLCAweDdjMWUsIDB4MDAwMiwgMHgwMDFkLCAweDAwMDcsIDB4MDAwNCwgMHgwMDBhLCAweDAwMWIsCi0JMHgwMDA1LCAweDAwMDYsIDB4MDAwYSwgMHgwMDFkLCAweDAwMDUsIDB4MDAwNCwgMHgwMDc2LCAweDAwNjYsCi0JMHhhZmI4LCAweGFlYmMsIDB4YTgwNCwgMHgyMDUwLCAweGIwYzAsIDB4YjBlMiwgMHhiMGJjLCAweGIwZGUsCi0JMHhiMGI4LCAweGIwZDIsIDB4YjBiNCwgMHhiMGNlLCAweGI2ZGEsIDB4YjdkNiwgMHhiMGIwLCAweGIwY2EsCi0JMHhiMGFjLCAweGIwYzYsIDB4YjBhOCwgMHhiMGJhLCAweGIwYTQsIDB4YjBiNiwgMHhiNmMyLCAweGI3YmUsCi0JMHhiMGEwLCAweGIwYjIsIDB4YjA5YywgMHhiMGFlLCAweGIwOTgsIDB4YjBhMiwgMHhiMDk0LCAweGIwOWUsCi0JMHhiNmFhLCAweGI3YTYsIDB4YjA5MCwgMHhiMDlhLCAweGIwOGMsIDB4YjA5NiwgMHhiMDg4LCAweGIwOGEsCi0JMHhiMDg0LCAweGIwODYsIDB4YjY5MiwgMHhiNzhlLCAweGIwODAsIDB4YjA4MiwgMHhiMDdjLCAweGIwN2UsCi0JMHhiMDc4LCAweGIwNzIsIDB4YjA3NCwgMHhiMDZlLCAweGI2N2EsIDB4Yjc3NiwgMHhiMDA0LCAweDkwNTUsCi0JMHgxOTU4LCAweDAwNmUsIDB4MDA3ZSwgMHgwMDA1LCAweDIwMDksIDB4MTgzNCwgMHgyMTBjLCAweDgxZmYsCi0JMHgxMTc4LCAweDA4MGMsIDB4NjFjMiwgMHgxMTA4LCAweDAwMDUsIDB4MDgwYywgMHg3MTBiLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhkM2NlLCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDBjYTAsCi0JMHgwODBjLCAweGQ3ZGMsIDB4MWQ3MCwgMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwgMHgwYzcwLCAweDIwMDksCi0JMHgxODM0LCAweDIxMGMsIDB4ODFmZiwgMHgxMTg4LCAweGE4ODgsIDB4OTAwNSwgMHgwMTg4LCAweGE4ODMsCi0JMHgwMDAwLCAweDA4MGMsIDB4NjI1MiwgMHgxMTA4LCAweDAwMDUsIDB4YTg3YSwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDBjYjgsIDB4MjAwMSwgMHgwMDI4LCAweDBjYTgsCi0JMHgyMDAxLCAweDAwMDAsIDB4MGM5MCwgMHgwNDE5LCAweDExZDgsIDB4YTg4OCwgMHg5MDA1LCAweDAxZTAsCi0JMHhhODgzLCAweDAwMDAsIDB4YTg3YywgMHhkMGY0LCAweDAxMjAsIDB4MDgwYywgMHg2MzI3LCAweDExMzgsCi0JMHgwMDA1LCAweDkwMDYsIDB4YTg3YSwgMHgwODBjLCAweDYyOWYsIDB4MTEwOCwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4YTg3YSwgMHhhOTgyLCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDBjYjAsCi0JMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwgMHgwYzk4LCAweDIwMDEsIDB4MDAwMCwgMHgwYzgwLCAweDAwYzYsCi0JMHgyMDYxLCAweDE4MDAsIDB4NjBkMCwgMHg5MDA1LCAweDAxMDAsIDB4MDBjZSwgMHgwMDA1LCAweDcwMTgsCi0JMHhhODAyLCAweDI5MDgsIDB4MjA0OCwgMHhhOTA2LCAweDcxMWEsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsCi0JMHgwMTE4LCAweDcwMDcsIDB4MDAwMywgMHgwMDMwLCAweDcwMTQsIDB4MjA0OCwgMHg3MDA3LCAweDAwMDEsCi0JMHg3MDQ4LCAweDA4MGYsIDB4MDAwNSwgMHgwMGI2LCAweDcwMDcsIDB4MDAwMSwgMHhhOTc0LCAweGE4NzgsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTA5NiwgMHgwMDA0LCAweDA1NDAsIDB4MjBhOSwgMHgwMDAxLCAweDkwOTYsCi0JMHgwMDAxLCAweDAxOTAsIDB4OTAwZSwgMHgyMGE5LCAweDA4MDAsIDB4OTA5NiwgMHgwMDAyLCAweDAxNjAsCi0JMHg5MDA1LCAweDExZDgsIDB4YTk3NCwgMHgwODBjLCAweDY3MjQsIDB4MTFiOCwgMHgwMDY2LCAweGFlODAsCi0JMHgwODBjLCAweDY4MzQsIDB4MDA2ZSwgMHgwMDg4LCAweDAwNDYsIDB4MjAxMSwgMHgxODBjLCAweDIyMjQsCi0JMHhjNDg0LCAweDI0MTIsIDB4MDA0ZSwgMHgwMGM2LCAweDA4MGMsIDB4NjcyNCwgMHgxMTEwLCAweDA4MGMsCi0JMHg2OTM0LCAweDgxMDgsIDB4MWYwNCwgMHg3ZDA0LCAweDAwY2UsIDB4YTg3YywgMHhkMDg0LCAweDExMjAsCi0JMHgwODBjLCAweDEwNDAsIDB4MDBiZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAxMmUsIDB4MDBiZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsCi0JMHgwMDAxLCAweDA4MGMsIDB4NmE5ZiwgMHgwNTgwLCAweDIwNjEsIDB4MWE3NCwgMHg2MTAwLCAweGQxODQsCi0JMHgwMTc4LCAweGE4ODgsIDB4OTA4NCwgMHgwMGZmLCAweDE1NTAsIDB4NjAwMCwgMHhkMDg0LCAweDA1MjAsCi0JMHg2MDA0LCAweDkwMDUsIDB4MTUzOCwgMHg2MDAzLCAweDAwMDAsIDB4NjAwYiwgMHgwMDAwLCAweDAwYzgsCi0JMHgyMDExLCAweDAwMDEsIDB4YTg5MCwgMHg5MDA1LCAweDExMTAsIDB4MjAwMSwgMHgwMDFlLCAweDgwMDAsCi0JMHg2MDE2LCAweGE4ODgsIDB4OTA4NCwgMHgwMGZmLCAweDAxNzgsIDB4NjAwNiwgMHhhODg4LCAweDgwMDcsCi0JMHg5MDg0LCAweDAwZmYsIDB4MDE0OCwgMHg2MDBhLCAweGE4ODgsIDB4ODAwMCwgMHgxMTA4LCAweGMyOGQsCi0JMHg2MjAyLCAweDAxMmUsIDB4MDgwNCwgMHg3ZjVlLCAweDAxMmUsIDB4MDgwNCwgMHg3ZjU4LCAweDAxMmUsCi0JMHgwODA0LCAweDdmNTIsIDB4MDEyZSwgMHgwODA0LCAweDdmNTUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg3MDA3LCAweDAwMDEsIDB4MDgwYywgMHg2YTlmLCAweDA1ZTAsIDB4MjA2MSwgMHgxYTc0LCAweDYwMDAsCi0JMHhkMDg0LCAweDA1YjgsIDB4NjIwNCwgMHg2MzA4LCAweGQwOGMsIDB4MTUzMCwgMHhhYzc4LCAweDk0ODQsCi0JMHgwMDAzLCAweDAxNzAsIDB4YTk4OCwgMHg5MThjLCAweDAwZmYsIDB4ODAwMSwgMHgxMTIwLCAweDIxMDAsCi0JMHg5MjEwLCAweDA2MjAsIDB4MDAyOCwgMHg4MDAxLCAweDE1MDgsIDB4MjEwMCwgMHg5MjEyLCAweDAyZjAsCi0JMHg5NDg0LCAweDAwMGMsIDB4MDE4OCwgMHhhOTg4LCAweDgxMGYsIDB4OTE4YywgMHgwMGZmLCAweDkwODIsCi0JMHgwMDA0LCAweDExMjAsIDB4MjEwMCwgMHg5MzE4LCAweDAyODgsIDB4MDAzMCwgMHg5MDgyLCAweDAwMDQsCi0JMHgxMTY4LCAweDIxMDAsIDB4OTMxYSwgMHgwMjUwLCAweGE4OTAsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDAsCi0JMHg2MDE2LCAweDYyMDYsIDB4NjMwYSwgMHgwMTJlLCAweDA4MDQsIDB4N2Y1ZSwgMHgwMTJlLCAweDA4MDQsCi0JMHg3ZjViLCAweDAxMmUsIDB4MDgwNCwgMHg3ZjU4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsCi0JMHgwMDAxLCAweDIwNjEsIDB4MWE3NCwgMHg2MzAwLCAweGQzOGMsIDB4MTEyMCwgMHg2MzA4LCAweDgzMTgsCi0JMHgwMjIwLCAweDYzMGEsIDB4MDEyZSwgMHgwODA0LCAweDdmNmMsIDB4MDEyZSwgMHgwODA0LCAweDdmNWIsCi0JMHgwMGI2LCAweDAxMjYsIDB4MDBjNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywgMHgwMDAxLCAweGE4N2MsCi0JMHhkMGFjLCAweDAxNDgsIDB4MDBjNiwgMHgyMDYxLCAweDFhNzQsIDB4NjAwMCwgMHg5MDg0LCAweGZjZmYsCi0JMHg2MDAyLCAweDAwY2UsIDB4MDQ0MCwgMHhhODg4LCAweDkwMDUsIDB4MDVkOCwgMHhhODhjLCAweDkwNjUsCi0JMHgwNTk4LCAweDIwMDEsIDB4MTgzNCwgMHgyMDA0LCAweDkwMDUsIDB4MDExOCwgMHgwODBjLCAweGIzMDYsCi0JMHgwMDY4LCAweDYwMTcsIDB4ZjQwMCwgMHg2MDViLCAweDAwMDAsIDB4YTk3YywgMHhkMWE0LCAweDAxMTAsCi0JMHhhOTgwLCAweDYxNWEsIDB4MjAwOSwgMHgwMDQxLCAweDA4MGMsIDB4YjM1MiwgMHhhOTg4LCAweDkxOGMsCi0JMHhmZjAwLCAweDkxODYsIDB4MjAwMCwgMHgxMTM4LCAweDAwMjYsIDB4OTAwZSwgMHgyMDExLCAweGZkZmYsCi0JMHgwODBjLCAweDhhNTAsIDB4MDAyZSwgMHhhODdjLCAweGQwYzQsIDB4MDE0OCwgMHgyMDYxLCAweDFhNzQsCi0JMHg2MDAwLCAweGQwOGMsIDB4MTEyMCwgMHg2MDA4LCAweDgwMDAsIDB4MDIwOCwgMHg2MDBhLCAweDAwY2UsCi0JMHgwMTJlLCAweDAwYmUsIDB4MDgwNCwgMHg3ZjVlLCAweDAwY2UsIDB4MDEyZSwgMHgwMGJlLCAweDA4MDQsCi0JMHg3ZjU4LCAweGE5ODQsIDB4OTE4NiwgMHgwMDJlLCAweDBkMzAsIDB4OTE4NiwgMHgwMDJkLCAweDBkMTgsCi0JMHg5MTg2LCAweDAwNDUsIDB4MDUxMCwgMHg5MTg2LCAweDAwMmEsIDB4MTEzMCwgMHgyMDAxLCAweDE4MGMsCi0JMHgyMDBjLCAweGMxOTQsIDB4MjEwMiwgMHgwOGI4LCAweDkxODYsIDB4MDAyMCwgMHgwMTU4LCAweDkxODYsCi0JMHgwMDI5LCAweDFkMTAsIDB4YTk3NCwgMHgwODBjLCAweDY3MjQsIDB4MTk2OCwgMHhiODAwLCAweGMwZTQsCi0JMHhiODAyLCAweDA4NDgsIDB4YTg4YywgMHg5MDY1LCAweDA5YjgsIDB4NjAwNywgMHgwMDI0LCAweDIwMDEsCi0JMHgxOTg2LCAweDIwMDQsIDB4NjAxYSwgMHgwODA0LCAweDdkZjMsIDB4YTg4YywgMHg5MDY1LCAweDA5NjAsCi0JMHgwMGU2LCAweGE4OTAsIDB4OTA3NSwgMHgyMDAxLCAweDE4MzQsIDB4MjAwNCwgMHg5MDA1LCAweDAxNTAsCi0JMHgwODBjLCAweGIzMDYsIDB4OGVmZiwgMHgwMTE4LCAweDJlNjAsIDB4MDgwYywgMHhiMzA2LCAweDAwZWUsCi0JMHgwODA0LCAweDdkZjMsIDB4NjAyNCwgMHhjMGRjLCAweGMwZDUsIDB4NjAyNiwgMHgyZTYwLCAweDYwMDcsCi0JMHgwMDNhLCAweGE4YTAsIDB4OTAwNSwgMHgwMTMwLCAweDYwMDcsIDB4MDAzYiwgMHhhOGE0LCAweDYwMmUsCi0JMHhhOGE4LCAweDYwMTYsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsCi0JMHgwMGVlLCAweDA4MDQsIDB4N2RmMywgMHgyMDYxLCAweDFhNzQsIDB4NjAwMCwgMHhkMDg0LCAweDAxOTAsCi0JMHhkMDhjLCAweDE5MDQsIDB4N2Y2YywgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MjA0LCAweDgyMTAsCi0JMHgwMjIwLCAweDYyMDYsIDB4MDEyZSwgMHgwODA0LCAweDdmNmMsIDB4MDEyZSwgMHhhODgzLCAweDAwMTYsCi0JMHgwODA0LCAweDdmNjUsIDB4YTg4MywgMHgwMDA3LCAweDA4MDQsIDB4N2Y2NSwgMHhhODY0LCAweDgwMDcsCi0JMHg5MDg0LCAweDAwZmYsIDB4MDEzMCwgMHg4MDAxLCAweDExMzgsIDB4NzAwNywgMHgwMDAxLCAweDAwNjksCi0JMHgwMDA1LCAweDA4MGMsIDB4N2E5OSwgMHgwMDQwLCAweDcwMDcsIDB4MDAwMywgMHg3MDEyLCAweDI5MDAsCi0JMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwgMHg3ZTk1LCAweDAwMDUsIDB4MDBiNiwgMHgwMGU2LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4OTAzZSwgMHgyMDYxLCAweDE4MDAsIDB4NjFkMCwgMHg4MWZmLCAweDE5MDQsCi0JMHg3ZjE3LCAweDYxMzAsIDB4ZDE5NCwgMHgxOTA0LCAweDdmNDEsIDB4YTg3OCwgMHgyMDcwLCAweDllODIsCi0JMHgxY2QwLCAweDBhMDQsIDB4N2YwYiwgMHg2MDY4LCAweDllMDIsIDB4MWEwNCwgMHg3ZjBiLCAweDcxMjAsCi0JMHg5MTg2LCAweDAwMDYsIDB4MTkwNCwgMHg3ZWZkLCAweDcwMTAsIDB4OTA1ZCwgMHgwOTA0LCAweDdmMTcsCi0JMHhiODAwLCAweGQwZTQsIDB4MTkwNCwgMHg3ZjNiLCAweDIwNjEsIDB4MWE3NCwgMHg2MTAwLCAweDkxODQsCi0JMHgwMzAxLCAweDkwODYsIDB4MDAwMSwgMHgxNWEwLCAweDcwMjQsIDB4ZDBkYywgMHgxOTA0LCAweDdmNDQsCi0JMHhhODgzLCAweDAwMDAsIDB4YTgwMywgMHgwMDAwLCAweDI5MDgsIDB4NzAxNCwgMHg5MDA1LCAweDExOTgsCi0JMHg3MTE2LCAweGE4N2MsIDB4ZDBmNCwgMHgxOTA0LCAweDdmNDcsIDB4MDgwYywgMHg1N2Q1LCAweGQwOWMsCi0JMHgxMTE4LCAweGE4N2MsIDB4YzBjYywgMHhhODdlLCAweDJlNjAsIDB4MDgwYywgMHg4OTcwLCAweDAxMmUsCi0JMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwgMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwgMHgxZGUwLCAweGE5MDIsCi0JMHgyMTQ4LCAweGE4N2MsIDB4ZDBmNCwgMHgxOTA0LCAweDdmNDcsIDB4MDEyZSwgMHgwMGVlLCAweDAwYmUsCi0JMHgwMDA1LCAweDAxMmUsIDB4MDBlZSwgMHhhODgzLCAweDAwMDYsIDB4MDBiZSwgMHgwODA0LCAweDdmNjUsCi0JMHhkMTg0LCAweDBkYjgsIDB4ZDFjNCwgMHgxMTkwLCAweDAwYTAsIDB4YTk3NCwgMHgwODBjLCAweDY3MjQsCi0JMHgxNWQwLCAweGI4MDAsIDB4ZDBlNCwgMHgxNWI4LCAweDcxMjAsIDB4OTE4NiwgMHgwMDA3LCAweDExMTgsCi0JMHhhODgzLCAweDAwMDIsIDB4MDQ5MCwgMHhhODgzLCAweDAwMDgsIDB4MDQ3OCwgMHhhODgzLCAweDAwMGUsCi0JMHgwNDYwLCAweGE4ODMsIDB4MDAxNywgMHgwNDQ4LCAweGE4ODMsIDB4MDAzNSwgMHgwNDMwLCAweDA4MGMsCi0JMHg1N2Q5LCAweGQwZmMsIDB4MDFlOCwgMHhhODc4LCAweDIwNzAsIDB4OWU4MiwgMHgxY2QwLCAweDAyYzAsCi0JMHg2MDY4LCAweDllMDIsIDB4MTJhOCwgMHg3MTIwLCAweDkxODYsIDB4MDAwNiwgMHgxMTg4LCAweDcwMTAsCi0JMHg5MDVkLCAweDAxNzAsIDB4YjgwMCwgMHhkMGJjLCAweDAxNTgsIDB4MjAzOSwgMHgwMDAxLCAweDcwMDAsCi0JMHg5MDg2LCAweDAwMDcsIDB4MTkwNCwgMHg3ZWExLCAweDcwMDMsIDB4MDAwMiwgMHgwODA0LCAweDdlYTEsCi0JMHhhODgzLCAweDAwMjgsIDB4MDAxMCwgMHhhODgzLCAweDAwMjksIDB4MDEyZSwgMHgwMGVlLCAweDAwYmUsCi0JMHgwNDIwLCAweGE4ODMsIDB4MDAyYSwgMHgwY2M4LCAweGE4ODMsIDB4MDA0NSwgMHgwY2IwLCAweDJlNjAsCi0JMHgyMDE5LCAweDAwMDIsIDB4NjAxYiwgMHgwMDE0LCAweDA4MGMsIDB4ZTc1NCwgMHgwMTJlLCAweDAwZWUsCi0JMHgwMGJlLCAweDAwMDUsIDB4MjAwOSwgMHgwMDNlLCAweDAwNTgsIDB4MjAwOSwgMHgwMDA0LCAweDAwNDAsCi0JMHgyMDA5LCAweDAwMDYsIDB4MDAyOCwgMHgyMDA5LCAweDAwMTYsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDEsCi0JMHhhODg0LCAweDkwODQsIDB4ZmYwMCwgMHg5MTA1LCAweGE4ODYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwMDA1LCAweDA4MGMsIDB4MTA0MCwgMHgwMDA1LCAweDAwZDYsCi0JMHgwODBjLCAweDg5NjcsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwNzEsIDB4MDA0MCwgMHg3MDJjLCAweGQwODQsIDB4MDFkOCwgMHg5MDhjLCAweDA3ODAsCi0JMHgxOTBjLCAweDgwNTYsIDB4ZDA5YywgMHgxMWE4LCAweDIwNzEsIDB4MTgwMCwgMHg3MGMwLCAweDkwZWEsCi0JMHgwMDIwLCAweDAyNzgsIDB4ODAwMSwgMHg3MGMyLCAweDcwMmMsIDB4MjA0OCwgMHhhODAwLCAweDcwMmUsCi0JMHg5MDA2LCAweGE4MDIsIDB4YTgwNiwgMHgyMDcxLCAweDAwNDAsIDB4MjkwMCwgMHg3MDIyLCAweDcwMmMsCi0JMHgwYzI4LCAweDAxMmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAwNiwgMHg5MDg0LCAweDA3ODAsCi0JMHgxOTBjLCAweDgwNTYsIDB4MDAwZSwgMHgwMDA1LCAweGE4OTgsIDB4OTA4NCwgMHgwMDAzLCAweDA1YTgsCi0JMHgwODBjLCAweGIyN2QsIDB4MDVkOCwgMHgyOTAwLCAweDYwMTYsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDg2LCAweDAwMzUsIDB4MTEzOCwgMHg2MDA4LCAweGMwZmQsIDB4NjAwYSwgMHgyMDAxLCAweDE5NmIsCi0JMHgyMDA0LCAweDAwOTgsIDB4YThhMCwgMHg5MDg0LCAweDAwZmYsIDB4YTk5YywgMHg5MThjLCAweGZmMDAsCi0JMHg5MTA1LCAweGE5OWMsIDB4OTE4YywgMHgwMGZmLCAweDA4MGMsIDB4Mjg3MywgMHgxNTQwLCAweDAwYjYsCi0JMHgwODBjLCAweDY3MjQsIDB4MmIwMCwgMHgwMGJlLCAweDE1MTAsIDB4NjAxMiwgMHg2MDIzLCAweDAwMDEsCi0JMHgyMDA5LCAweDAwNDAsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDM1LCAweDAxMTAsCi0JMHgyMDA5LCAweDAwNDEsIDB4MDgwYywgMHhiMzUyLCAweDAwMDUsIDB4YTg3YiwgMHgwMTAxLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDAxMmUsIDB4MDAwNSwgMHhhODdiLCAweDAwMmMsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwMDA1LCAweGE4N2IsCi0JMHgwMDI4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDAwMzYsIDB4MDAyNiwgMHgwMDE2LCAweDAwYjYsCi0JMHg3MDA3LCAweDAwMDEsIDB4YWE3NCwgMHg5MjgyLCAweDAwMDQsIDB4MWEwNCwgMHg4MDQ3LCAweGE5N2MsCi0JMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwgMHg5MDVkLCAweGI4MDQsIDB4ZDI4NCwgMHgwMTQwLCAweDA1ZTgsCi0JMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHg5MDg0LCAweDAwMDYsIDB4MTEwOCwgMHgwNGIwLCAweDJiMTAsCi0JMHgwODBjLCAweGIyN2QsIDB4MTExOCwgMHgwODBjLCAweGIzMjUsIDB4MDVhOCwgMHg2MjEyLCAweGE4NzQsCi0JMHgwMDAyLCAweDgwMjUsIDB4ODAyYSwgMHg4MDJkLCAweDgwMzMsIDB4MjAxOSwgMHgwMDAyLCAweDA4MGMsCi0JMHhlYmExLCAweDAwNjAsIDB4MDgwYywgMHhlYjM4LCAweDAwNDgsIDB4MjAxOSwgMHgwMDAyLCAweGE5ODAsCi0JMHgwODBjLCAweGViNTMsIDB4MDAxOCwgMHhhOTgwLCAweDA4MGMsIDB4ZWIzOCwgMHgwODBjLCAweGIyZDMsCi0JMHhhODg3LCAweDAwMDAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDAxMmUsCi0JMHgwMGJlLCAweDAwMWUsIDB4MDAyZSwgMHgwMDNlLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweGE4ODcsCi0JMHgwMDA2LCAweDBjODAsIDB4YTg4NywgMHgwMDAyLCAweDBjNjgsIDB4YTg4NywgMHgwMDA1LCAweDBjNTAsCi0JMHhhODg3LCAweDAwMDQsIDB4MGMzOCwgMHhhODg3LCAweDAwMDcsIDB4MGMyMCwgMHgyMDkxLCAweDgwMDAsCi0JMHgwZTA0LCAweDgwNTgsIDB4MDAwNiwgMHgwMDE2LCAweDIwMDEsIDB4ODAwMywgMHgwMDA2LCAweDA4MDQsCi0JMHgwZGNlLCAweDIwMDEsIDB4MTgzNCwgMHgyMDA0LCAweDkwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDAwZjYsCi0JMHgyMDc5LCAweDAzMDAsIDB4MjAwMSwgMHgwMjAwLCAweDIwMGMsIDB4YzFlNSwgMHhjMWRjLCAweDIxMDIsCi0JMHgyMDA5LCAweDAyMTgsIDB4MjEwYywgMHhkMWVjLCAweDExMjAsIDB4MDgwYywgMHgxNWEwLCAweDAwZmUsCi0JMHgwMDA1LCAweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwMjAsIDB4NzgxZiwgMHgwMzAwLCAweDAwZmUsCi0JMHgwMDA1LCAweDc4MWMsIDB4ZDA4YywgMHgwOTA0LCAweDgwZDgsIDB4NjhjMCwgMHg5MGFhLCAweDAwMDUsCi0JMHgwYTA0LCAweDg3MWMsIDB4N2Q0NCwgMHg3YzQwLCAweDk1ODQsIDB4MDBmNiwgMHgxNTEwLCAweDk0ODQsCi0JMHg3MDAwLCAweDAxNDAsIDB4OTA4YSwgMHgyMDAwLCAweDEyNjAsIDB4OTU4NCwgMHgwNzAwLCAweDgwMDcsCi0JMHgwODA0LCAweDgwZGYsIDB4NzAwMCwgMHg5MDg0LCAweGZmMDAsIDB4OTA4NiwgMHg4MTAwLCAweDBkYTgsCi0JMHgwMGIwLCAweDk0ODQsIDB4MGZmZiwgMHgxMTMwLCAweDcwMDAsIDB4OTA4NCwgMHhmZjAwLCAweDkwODYsCi0JMHg4MTAwLCAweDExYzAsIDB4MDgwYywgMHhmMDU3LCAweDA4MGMsIDB4ODYwMSwgMHg3ODE3LCAweDAxNDAsCi0JMHgwMGE4LCAweDk1ODQsIDB4MDA3NiwgMHgxMTE4LCAweDA4MGMsIDB4ODY1ZiwgMHgxOWMwLCAweGQ1YTQsCi0JMHgwMTQ4LCAweDAwNDYsIDB4MDA1NiwgMHgwODBjLCAweDgxM2EsIDB4MDgwYywgMHgyMzZlLCAweDAwNWUsCi0JMHgwMDRlLCAweDAwMjAsIDB4MDgwYywgMHhmMDU3LCAweDc4MTcsIDB4MDE0MCwgMHgwODBjLCAweDc2MzcsCi0JMHgwMTY4LCAweDIwMDEsIDB4MDExMSwgMHgyMDA0LCAweGQwOGMsIDB4MDE0MCwgMHg2ODkzLCAweDAwMDAsCi0JMHgyMDAxLCAweDAxMTAsIDB4MjAwMywgMHgwMDA4LCAweDIwMDMsIDB4MDAwMCwgMHgwODBjLCAweDgxMWIsCi0JMHgyMDAxLCAweDE5ZjEsIDB4MjAwNCwgMHg5MDA1LCAweDA5MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwMDIsCi0JMHg4MGYxLCAweDg0MDksIDB4ODBlOCwgMHg4MGU4LCAweDgwZTgsIDB4ODBlOCwgMHg4MGU4LCAweDgwZTgsCi0JMHg3ODE3LCAweDAxNDAsIDB4MjAwMSwgMHgxOWYxLCAweDIwMDQsIDB4OTAwNSwgMHgwOTBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDcwMDAsIDB4OTA4YywgMHhmZjAwLCAweDkxOTQsIDB4ZjAwMCwgMHg4MTBmLCAweDk0ODQsCi0JMHgwZmZmLCAweDY4OTIsIDB4OTI4NiwgMHgyMDAwLCAweDExNTAsIDB4NjgwMCwgMHg5MDg2LCAweDAwMDEsCi0JMHgxMTE4LCAweDA4MGMsIDB4NTgzZiwgMHgwMDcwLCAweDA4MGMsIDB4ODE1YSwgMHgwMDU4LCAweDkyODYsCi0JMHgzMDAwLCAweDExMTgsIDB4MDgwYywgMHg4MzQxLCAweDAwMjgsIDB4OTI4NiwgMHg4MDAwLCAweDExMTAsCi0JMHgwODBjLCAweDg1MjgsIDB4NzgxNywgMHgwMTQwLCAweDIwMDEsIDB4MTlmMSwgMHgyMDA0LCAweDkwMDUsCi0JMHgwOTBjLCAweDlhYjEsIDB4MDAwNSwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwgMHhkMDhjLCAweDAxNzgsCi0JMHgyMDAxLCAweDE4MDAsIDB4MjAwNCwgMHg5MDg2LCAweDAwMDMsIDB4MTE0OCwgMHgwMDI2LCAweDAwMzYsCi0JMHgyMDExLCAweDgwNDgsIDB4MjUxOCwgMHgwODBjLCAweDRjNDQsIDB4MDAzZSwgMHgwMDJlLCAweDAwMDUsCi0JMHgwMDM2LCAweDAwNDYsIDB4MDA1NiwgMHgwMGY2LCAweDIwNzksIDB4MDIwMCwgMHgyMDE5LCAweGZmZmUsCi0JMHg3YzMwLCAweDAwNTAsIDB4MDAzNiwgMHgwMDQ2LCAweDAwNTYsIDB4MDBmNiwgMHgyMDc5LCAweDAyMDAsCi0JMHg3ZDQ0LCAweDdjNDAsIDB4MjAxOSwgMHhmZmZmLCAweDIwMDEsIDB4MTgxMCwgMHgyMDA0LCAweGQwOGMsCi0JMHgwMTYwLCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwODYsIDB4MDAwMywgMHgxMTMwLCAweDAwMjYsCi0JMHgyMDExLCAweDgwNDgsIDB4MDgwYywgMHg0YzQ0LCAweDAwMmUsIDB4MDBmZSwgMHgwMDVlLCAweDAwNGUsCi0JMHgwMDNlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGM2LCAweDcwMTAsIDB4OTA4NCwgMHhmZjAwLCAweDgwMDcsCi0JMHg5MDk2LCAweDAwMDEsIDB4MDEyMCwgMHg5MDk2LCAweDAwMjMsIDB4MTkwNCwgMHg4MzEyLCAweDkxODYsCi0JMHgwMDIzLCAweDE1YzAsIDB4MDgwYywgMHg4NWM2LCAweDA5MDQsIDB4ODMxMiwgMHg2MTIwLCAweDkxODYsCi0JMHgwMDAxLCAweDAxNTAsIDB4OTE4NiwgMHgwMDA0LCAweDAxMzgsIDB4OTE4NiwgMHgwMDA4LCAweDAxMjAsCi0JMHg5MTg2LCAweDAwMGEsIDB4MTkwNCwgMHg4MzEyLCAweDcxMjQsIDB4NjEwYSwgMHg3MDMwLCAweDkwOGUsCi0JMHgwMjAwLCAweDExMzAsIDB4MjAwOSwgMHgwMDE1LCAweDA4MGMsIDB4YjM1MiwgMHgwODA0LCAweDgzMTIsCi0JMHg5MDhlLCAweDAyMTQsIDB4MDExOCwgMHg5MDhlLCAweDAyMTAsIDB4MTEzMCwgMHgyMDA5LCAweDAwMTUsCi0JMHgwODBjLCAweGIzNTIsIDB4MDgwNCwgMHg4MzEyLCAweDkwOGUsIDB4MDEwMCwgMHgxOTA0LCAweDgzMTIsCi0JMHg3MDM0LCAweDkwMDUsIDB4MTkwNCwgMHg4MzEyLCAweDIwMDksIDB4MDAxNiwgMHgwODBjLCAweGIzNTIsCi0JMHgwODA0LCAweDgzMTIsIDB4OTE4NiwgMHgwMDIyLCAweDE5MDQsIDB4ODMxMiwgMHg3MDMwLCAweDkwOGUsCi0JMHgwMzAwLCAweDE1ODAsIDB4NjhkYywgMHhkMGE0LCAweDA1MjgsIDB4YzBiNSwgMHg2OGRlLCAweDcxMDAsCi0JMHg5MThjLCAweDAwZmYsIDB4Njk3ZSwgMHg3MDA0LCAweDY4ODIsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsCi0JMHg3OWU2LCAweDc4ZWEsIDB4MDAwNiwgMHg5MDg0LCAweDAwZmYsIDB4MDAxNiwgMHgyMDA4LCAweDA4MGMsCi0JMHgyOGJjLCAweDc5MzIsIDB4NzkzNiwgMHgwMDFlLCAweDAwMGUsIDB4MDBmZSwgMHgwODBjLCAweDI4NzMsCi0JMHg2OTVlLCAweDcwM2MsIDB4MDBlNiwgMHgyMDcxLCAweDAxNDAsIDB4NzA4NiwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MGI2LCAweDAwZWUsIDB4NzAzNCwgMHg5MDA1LCAweDE5MDQsIDB4ODMxMiwgMHgyMDA5LCAweDAwMTcsCi0JMHgwODA0LCAweDgyYzIsIDB4OTA4ZSwgMHgwNDAwLCAweDExOTAsIDB4NzAzNCwgMHg5MDA1LCAweDE5MDQsCi0JMHg4MzEyLCAweDA4MGMsIDB4NzYzNywgMHgwMTIwLCAweDIwMDksIDB4MDAxZCwgMHgwODA0LCAweDgyYzIsCi0JMHg2OGRjLCAweGMwYTUsIDB4NjhkZSwgMHgyMDA5LCAweDAwMzAsIDB4MDgwNCwgMHg4MmMyLCAweDkwOGUsCi0JMHgwNTAwLCAweDExNDAsIDB4NzAzNCwgMHg5MDA1LCAweDE5MDQsIDB4ODMxMiwgMHgyMDA5LCAweDAwMTgsCi0JMHgwODA0LCAweDgyYzIsIDB4OTA4ZSwgMHgyMDEwLCAweDExMjAsIDB4MjAwOSwgMHgwMDE5LCAweDA4MDQsCi0JMHg4MmMyLCAweDkwOGUsIDB4MjExMCwgMHgxMTIwLCAweDIwMDksIDB4MDAxYSwgMHgwODA0LCAweDgyYzIsCi0JMHg5MDhlLCAweDUyMDAsIDB4MTE0MCwgMHg3MDM0LCAweDkwMDUsIDB4MTkwNCwgMHg4MzEyLCAweDIwMDksCi0JMHgwMDFiLCAweDA4MDQsIDB4ODJjMiwgMHg5MDhlLCAweDUwMDAsIDB4MTE0MCwgMHg3MDM0LCAweDkwMDUsCi0JMHgxOTA0LCAweDgzMTIsIDB4MjAwOSwgMHgwMDFjLCAweDA4MDQsIDB4ODJjMiwgMHg5MDhlLCAweDEzMDAsCi0JMHgxMTIwLCAweDIwMDksIDB4MDAzNCwgMHgwODA0LCAweDgyYzIsIDB4OTA4ZSwgMHgxMjAwLCAweDExNDAsCi0JMHg3MDM0LCAweDkwMDUsIDB4MTkwNCwgMHg4MzEyLCAweDIwMDksIDB4MDAyNCwgMHgwODA0LCAweDgyYzIsCi0JMHg5MDhjLCAweGZmMDAsIDB4OTE4ZSwgMHgyNDAwLCAweDExNzAsIDB4MjAwOSwgMHgwMDJkLCAweDIwMDEsCi0JMHgxODEwLCAweDIwMDQsIDB4ZDA5YywgMHgwOTA0LCAweDgyYzIsIDB4MDgwYywgMHhkZjFhLCAweDE5MDQsCi0JMHg4MzEyLCAweDA4MDQsIDB4ODJjMCwgMHg5MDhjLCAweGZmMDAsIDB4OTE4ZSwgMHg1MzAwLCAweDExMjAsCi0JMHgyMDA5LCAweDAwMmEsIDB4MDgwNCwgMHg4MmMyLCAweDkwOGUsIDB4MGYwMCwgMHgxMTIwLCAweDIwMDksCi0JMHgwMDIwLCAweDA4MDQsIDB4ODJjMiwgMHg5MDhlLCAweDYxMDQsIDB4MTUzMCwgMHgyMDI5LCAweDAyMDUsCi0JMHgyMDExLCAweDAyNmQsIDB4ODIwOCwgMHgyMjA0LCAweDkwODIsIDB4MDAwNCwgMHg4MDA0LCAweDgwMDQsCi0JMHgyMGE4LCAweDIwMTEsIDB4ODAxNSwgMHgyMTFjLCAweDgxMDgsIDB4MDA0NiwgMHgyMTI0LCAweDA4MGMsCi0JMHg0YzQ0LCAweDAwNGUsIDB4ODEwOCwgMHgwZjA0LCAweDgyNzYsIDB4OTE4NiwgMHgwMjgwLCAweDFkODgsCi0JMHgyNTA0LCAweDgwMDAsIDB4MjAyYSwgMHgyMDA5LCAweDAyNjAsIDB4MGM1OCwgMHgyMDJiLCAweDAwMDAsCi0JMHgyMDA5LCAweDAwMjMsIDB4MDgwNCwgMHg4MmMyLCAweDkwOGUsIDB4NjAwMCwgMHgxMTIwLCAweDIwMDksCi0JMHgwMDNmLCAweDA4MDQsIDB4ODJjMiwgMHg5MDhlLCAweDU0MDAsIDB4MTEzOCwgMHgwODBjLCAweDg2Y2MsCi0JMHgxOTA0LCAweDgzMTIsIDB4MjAwOSwgMHgwMDQ2LCAweDA0YTgsIDB4OTA4ZSwgMHg1NTAwLCAweDExNDgsCi0JMHgwODBjLCAweDg2ZjQsIDB4MTExOCwgMHgyMDA5LCAweDAwNDEsIDB4MDQ2MCwgMHgyMDA5LCAweDAwNDIsCi0JMHgwNDQ4LCAweDkwOGUsIDB4NzgwMCwgMHgxMTE4LCAweDIwMDksIDB4MDA0NSwgMHgwNDE4LCAweDkwOGUsCi0JMHgxMDAwLCAweDExMTgsIDB4MjAwOSwgMHgwMDRlLCAweDAwZTgsIDB4OTA4ZSwgMHg2MzAwLCAweDExMTgsCi0JMHgyMDA5LCAweDAwNGEsIDB4MDBiOCwgMHg5MDhjLCAweGZmMDAsIDB4OTE4ZSwgMHg1NjAwLCAweDExMTgsCi0JMHgyMDA5LCAweDAwNGYsIDB4MDA3OCwgMHg5MDhjLCAweGZmMDAsIDB4OTE4ZSwgMHg1NzAwLCAweDExMTgsCi0JMHgyMDA5LCAweDAwNTAsIDB4MDAzOCwgMHgyMDA5LCAweDAwMWQsIDB4NjgzOCwgMHhkMGQ0LCAweDAxMTAsCi0JMHgyMDA5LCAweDAwNGMsIDB4MDAxNiwgMHgyMDExLCAweDAyNjMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsCi0JMHgwODBjLCAweDI4NzMsIDB4MTkwNCwgMHg4MzE1LCAweDA4MGMsIDB4NjZiOSwgMHgxOTA0LCAweDgzMTUsCi0JMHhiZTEyLCAweGJkMTYsIDB4MDAxZSwgMHgwMDE2LCAweDA4MGMsIDB4NzYzNywgMHgwMWMwLCAweDY4ZGMsCi0JMHhkMDhjLCAweDExNDgsIDB4NzAwMCwgMHg5MDg0LCAweDAwZmYsIDB4MTE4OCwgMHg3MDA0LCAweDkwODQsCi0JMHhmZjAwLCAweDExNjgsIDB4MDA0MCwgMHg2ODdjLCAweDk2MDYsIDB4MTE0OCwgMHg2ODgwLCAweDk1MDYsCi0JMHg5MDg0LCAweGZmMDAsIDB4MTEyMCwgMHg5NTg0LCAweDAwZmYsIDB4YjhjMiwgMHgwMDgwLCAweGI4YzAsCi0JMHg5MDA1LCAweDExNjgsIDB4OTE4NiwgMHgwMDQ2LCAweDExNTAsIDB4Njg3YywgMHg5NjA2LCAweDExMzgsCi0JMHg2ODgwLCAweDk1MDYsIDB4OTA4NCwgMHhmZjAwLCAweDExMTAsIDB4MDAxZSwgMHgwMDk4LCAweDA4MGMsCi0JMHhiMjdkLCAweDAxYTgsIDB4MmIwOCwgMHg2MTEyLCAweDYwMjMsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsCi0JMHgwMDFlLCAweDkxODYsIDB4MDA0YywgMHgxMTEwLCAweDYwMjMsIDB4MDAwYSwgMHgwMDE2LCAweDAwMWUsCi0JMHgwODBjLCAweGIzNTIsIDB4MDBjZSwgMHgwMGJlLCAweDAwMDUsIDB4MDAxZSwgMHgwY2Q4LCAweDIwMDEsCi0JMHgxODBlLCAweDIwMDQsIDB4ZDBlYywgMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwgMHgwODBjLCAweDRjNDQsCi0JMHgwODBjLCAweGIzMjUsIDB4MGQ5MCwgMHgyYjA4LCAweDYxMTIsIDB4NjAyMywgMHgwMDA0LCAweDcxMjAsCi0JMHg2MTBhLCAweDAwMWUsIDB4MDAxNiwgMHg5MTg2LCAweDAwMTcsIDB4MDExOCwgMHg5MTg2LCAweDAwMzAsCi0JMHgxMTI4LCAweDYwMDcsIDB4MDAwOSwgMHg2MDE3LCAweDI5MDAsIDB4MDAyMCwgMHg2MDA3LCAweDAwNTEsCi0JMHg2MDE3LCAweDAwMDAsIDB4NjAyZiwgMHgwMDA5LCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwOGEwLCAweDA4MGMsIDB4ODczYiwgMHgxMTU4LCAweDA4MGMsIDB4MzM3NCwgMHgxMTQwLCAweDcwMTAsCi0JMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHg5MDhlLCAweDAwMDgsIDB4MTEwOCwgMHgwMDA5LCAweDAwMDUsCi0JMHgwMGI2LCAweDAwYzYsIDB4MDA0NiwgMHg3MDAwLCAweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsCi0JMHgwMDMzLCAweDExZTgsIDB4MDgwYywgMHg4NWM2LCAweDA5MDQsIDB4ODNhMSwgMHg3MTI0LCAweDYxMGEsCi0JMHg3MDMwLCAweDkwOGUsIDB4MDIwMCwgMHgxMTQwLCAweDcwMzQsIDB4OTAwNSwgMHgxNWQwLCAweDIwMDksCi0JMHgwMDE1LCAweDA4MGMsIDB4YjM1MiwgMHgwNGE4LCAweDkwOGUsIDB4MDEwMCwgMHgxNTkwLCAweDcwMzQsCi0JMHg5MDA1LCAweDE1NzgsIDB4MjAwOSwgMHgwMDE2LCAweDA4MGMsIDB4YjM1MiwgMHgwNDUwLCAweDkxODYsCi0JMHgwMDMyLCAweDE1MzgsIDB4NzAzMCwgMHg5MDhlLCAweDE0MDAsIDB4MTUxOCwgMHgyMDA5LCAweDAwMzgsCi0JMHgwMDE2LCAweDIwMTEsIDB4MDI2MywgMHgyMjA0LCAweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI4NzMsCi0JMHgxMWI4LCAweDA4MGMsIDB4NjZiOSwgMHgxMWEwLCAweGJlMTIsIDB4YmQxNiwgMHgwODBjLCAweGIyN2QsCi0JMHgwMTc4LCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDA0LCAweDcxMjAsCi0JMHg2MTBhLCAweDAwMWUsIDB4MDgwYywgMHhiMzUyLCAweDA4MGMsIDB4OWFiMSwgMHgwMDEwLCAweDAwY2UsCi0JMHgwMDFlLCAweDAwNGUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMDQ2LCAweDAwZTYsCi0JMHgwMGQ2LCAweDIwMjgsIDB4MjEzMCwgMHg5Njk2LCAweDAwZmYsIDB4MTFiOCwgMHg5NTkyLCAweGZmZmMsCi0JMHgwMmEwLCAweDk1OTYsIDB4ZmZmZCwgMHgxMTIwLCAweDIwMDksIDB4MDA3ZiwgMHgwODA0LCAweDg0MDMsCi0JMHg5NTk2LCAweGZmZmUsIDB4MTEyMCwgMHgyMDA5LCAweDAwN2UsIDB4MDgwNCwgMHg4NDAzLCAweDk1OTYsCi0JMHhmZmZjLCAweDExMTgsIDB4MjAwOSwgMHgwMDgwLCAweDA0ZjAsIDB4MjAxMSwgMHgwMDAwLCAweDIwMTksCi0JMHgxODM3LCAweDIzMWMsIDB4ZDNhYywgMHgwMTMwLCAweDkwMjYsIDB4MjBhOSwgMHgwODAwLCAweDIwNzEsCi0JMHgxMDAwLCAweDAwMzAsIDB4MjAyMSwgMHgwMDgxLCAweDIwYTksIDB4MDc3ZiwgMHgyMDcxLCAweDEwODEsCi0JMHgyZTFjLCAweDkzZGQsIDB4MDAwMCwgMHgxMTQwLCAweDgyZmYsIDB4MTFkMCwgMHg5NDk2LCAweDAwZmYsCi0JMHgwMWI4LCAweDI0MTAsIDB4YzJmZCwgMHgwMGEwLCAweGJmMTAsIDB4MjYwMCwgMHg5NzA2LCAweGI4MTQsCi0JMHgxMTIwLCAweDk1NDYsIDB4MTExMCwgMHgyNDA4LCAweDAwYjAsIDB4OTc0NSwgMHgxMTQ4LCAweDk0YzYsCi0JMHgwMDdlLCAweDAxMzAsIDB4OTRjNiwgMHgwMDdmLCAweDAxMTgsIDB4OTRjNiwgMHgwMDgwLCAweDFkMjAsCi0JMHg4NDIwLCAweDhlNzAsIDB4MWYwNCwgMHg4M2Q4LCAweDgyZmYsIDB4MTExOCwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDE4LCAweGMyZmMsIDB4MjIwOCwgMHg5MDA2LCAweDAwZGUsIDB4MDBlZSwgMHgwMDRlLCAweDAwYmUsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTgzNywgMHgyMDBjLCAweDkxODQsIDB4MDA4MCwgMHgwMTEwLCAweGQxOGMsCi0JMHgwMTM4LCAweDcwMDAsIDB4OTA4YywgMHhmZjAwLCAweDgxMGYsIDB4OTE4NCwgMHgwMDBmLCAweDAwNGEsCi0JMHg3ODE3LCAweDAxNDAsIDB4MjAwMSwgMHgxOWYxLCAweDIwMDQsIDB4OTAwNSwgMHgwOTBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDg0MzEsIDB4ODQzMSwgMHg4NDMxLCAweDg1ZDgsIDB4ODQzMSwgMHg4NDNhLCAweDg0NjUsCi0JMHg4NGYzLCAweDg0MzEsIDB4ODQzMSwgMHg4NDMxLCAweDg0MzEsIDB4ODQzMSwgMHg4NDMxLCAweDg0MzEsCi0JMHg4NDMxLCAweDc4MTcsIDB4MDE0MCwgMHgyMDAxLCAweDE5ZjEsIDB4MjAwNCwgMHg5MDA1LCAweDA5MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4MDBiNiwgMHg3MTEwLCAweGQxYmMsIDB4MDFlOCwgMHg3MTIwLCAweDIxNjAsCi0JMHg5YzhjLCAweDAwMDcsIDB4MTFjMCwgMHg5YzhhLCAweDFjZDAsIDB4MDJhOCwgMHg2ODY4LCAweDljMDIsCi0JMHgxMjkwLCAweDcwMDgsIDB4OTA4NCwgMHgwMGZmLCAweDYxMTAsIDB4MjE1OCwgMHhiOTEwLCAweDkxMDYsCi0JMHgxMTUwLCAweDcwMGMsIDB4YjkxNCwgMHg5MTA2LCAweDExMzAsIDB4NzEyNCwgMHg2MTBhLCAweDIwMDksCi0JMHgwMDQ2LCAweDA4MGMsIDB4YjM1MiwgMHg3ODE3LCAweDAxNDAsIDB4MjAwMSwgMHgxOWYxLCAweDIwMDQsCi0JMHg5MDA1LCAweDA5MGMsIDB4OWFiMSwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGM2LCAweDk0ODQsCi0JMHgwZmZmLCAweDA5MDQsIDB4ODRjOSwgMHg3MTEwLCAweGQxYmMsIDB4MTkwNCwgMHg4NGM5LCAweDcxMDgsCi0JMHg3MDBjLCAweDIwMjgsIDB4OTE4YywgMHgwMGZmLCAweDIxMzAsIDB4OTA5NCwgMHhmZjAwLCAweDE1YjAsCi0JMHg4MWZmLCAweDE1YTAsIDB4OTA4MCwgMHgzM2I2LCAweDIwMGQsIDB4OTE4YywgMHhmZjAwLCAweDgxMGYsCi0JMHgyMDAxLCAweDAwODAsIDB4OTEwNiwgMHgwOTA0LCAweDg0YzksIDB4MDgwYywgMHg2NmI5LCAweDE5MDQsCi0JMHg4NGM5LCAweGJlMTIsIDB4YmQxNiwgMHhiODAwLCAweGQwZWMsIDB4MTVkOCwgMHhiYTA0LCAweDkyOTQsCi0JMHhmZjAwLCAweDkyODYsIDB4MDYwMCwgMHgxMWEwLCAweDA4MGMsIDB4YjI3ZCwgMHgwNWU4LCAweDJiMDgsCi0JMHg3MDI4LCAweDYwNDYsIDB4NzAyYywgMHg2MDRhLCAweDYxMTIsIDB4NjAyMywgMHgwMDA2LCAweDcxMjAsCi0JMHg2MTBhLCAweDcxMzAsIDB4NjE1NiwgMHgyMDA5LCAweDAwNDQsIDB4MDgwYywgMHhlMTkyLCAweDA0MDgsCi0JMHgwODBjLCAweDZhYTMsIDB4MTEzOCwgMHhiODA3LCAweDA2MDYsIDB4MGMzMCwgMHgxOTBjLCAweDgzYTUsCi0JMHgxMWMwLCAweDA4OTgsIDB4MDgwYywgMHhiMjdkLCAweDJiMDgsIDB4MDE5OCwgMHg2MTEyLCAweDYwMjMsCi0JMHgwMDA0LCAweDcxMjAsIDB4NjEwYSwgMHg5Mjg2LCAweDA0MDAsIDB4MTExOCwgMHg2MDA3LCAweDAwMDUsCi0JMHgwMDEwLCAweDYwMDcsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsCi0JMHg5YWIxLCAweDc4MTcsIDB4MDE0MCwgMHgyMDAxLCAweDE5ZjEsIDB4MjAwNCwgMHg5MDA1LCAweDA5MGMsCi0JMHg5YWIxLCAweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgwZSwgMHgyMDA0LCAweGQwZWMsCi0JMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwgMHgwODBjLCAweDRjNDQsIDB4MDgwYywgMHhiMzI1LCAweDBkNDgsCi0JMHgyYjA4LCAweDYxMTIsIDB4NjAyMywgMHgwMDA2LCAweDcxMjAsIDB4NjEwYSwgMHg3MTMwLCAweDYxNTYsCi0JMHg2MDE3LCAweGYzMDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA0MSwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MDhiMCwgMHgwMGI2LCAweDcxMTAsIDB4ZDFiYywgMHgwMWU4LCAweDcwMjAsCi0JMHgyMDYwLCAweDljODQsIDB4MDAwNywgMHgxMWMwLCAweDljODIsIDB4MWNkMCwgMHgwMmE4LCAweDY4NjgsCi0JMHg5YzAyLCAweDEyOTAsIDB4NzAwOCwgMHg5MDg0LCAweDAwZmYsIDB4NjExMCwgMHgyMTU4LCAweGI5MTAsCi0JMHg5MTA2LCAweDExNTAsIDB4NzAwYywgMHhiOTE0LCAweDkxMDYsIDB4MTEzMCwgMHg3MTI0LCAweDYxMGEsCi0JMHgyMDA5LCAweDAwNDUsIDB4MDgwYywgMHhiMzUyLCAweDc4MTcsIDB4MDE0MCwgMHgyMDAxLCAweDE5ZjEsCi0JMHgyMDA0LCAweDkwMDUsIDB4MDkwYywgMHg5YWIxLCAweDAwYmUsIDB4MDAwNSwgMHg2MTIwLCAweDkxODYsCi0JMHgwMDAyLCAweDAxMjgsIDB4OTE4NiwgMHgwMDA1LCAweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsCi0JMHgwODBjLCAweDg3M2IsIDB4MTE4MCwgMHgwODBjLCAweDMzNzQsIDB4MTE2OCwgMHg3MDEwLCAweDkwODQsCi0JMHhmZjAwLCAweDgwMDcsIDB4OTA4NiwgMHgwMDAwLCAweDExMzAsIDB4OTE4NCwgMHgwMDBmLCAweDkwOGEsCi0JMHgwMDA2LCAweDEyMDgsIDB4MDAwYiwgMHgwMDA1LCAweDg1NDIsIDB4ODU0MywgMHg4NTQyLCAweDg1NDIsCi0JMHg4NWE4LCAweDg1YjcsIDB4MDAwNSwgMHgwMGI2LCAweDcwMGMsIDB4NzEwOCwgMHgwODBjLCAweDI4NzMsCi0JMHgxOTA0LCAweDg1YTYsIDB4MDgwYywgMHg2NmI5LCAweDE5MDQsIDB4ODVhNiwgMHhiZTEyLCAweGJkMTYsCi0JMHg3MTEwLCAweGQxYmMsIDB4MDU0MCwgMHg3MDJjLCAweGQwODQsIDB4MTEyMCwgMHhiODAwLCAweGQwYmMsCi0JMHgxOTA0LCAweDg1YTYsIDB4MDgwYywgMHg2YWEzLCAweDAxNDgsIDB4OTA4NiwgMHgwMDA0LCAweDAxMzAsCi0JMHgwODBjLCAweDZhYWIsIDB4MDExOCwgMHg5MDg2LCAweDAwMDQsIDB4MTU4OCwgMHgwMGM2LCAweDA4MGMsCi0JMHg4NWM2LCAweDAwY2UsIDB4MDVkOCwgMHgwODBjLCAweGIyN2QsIDB4MmIwOCwgMHgwNWI4LCAweDYxMTIsCi0JMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDAyLCAweDcxMjAsIDB4NjEwYSwgMHgyMDA5LCAweDAwODgsCi0JMHgwODBjLCAweGIzNTIsIDB4MDQ1OCwgMHgwODBjLCAweDZhYTMsIDB4MDE0OCwgMHg5MDg2LCAweDAwMDQsCi0JMHgwMTMwLCAweDA4MGMsIDB4NmFhYiwgMHgwMTE4LCAweDkwODYsIDB4MDAwNCwgMHgxMTgwLCAweDA4MGMsCi0JMHhiMjdkLCAweDJiMDgsIDB4MDFkOCwgMHg2MTEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDUsCi0JMHg3MTIwLCAweDYxMGEsIDB4MjAwOSwgMHgwMDg4LCAweDA4MGMsIDB4YjM1MiwgMHgwMDc4LCAweDA4MGMsCi0JMHhiMjdkLCAweDJiMDgsIDB4MDE1OCwgMHg2MTEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDQsCi0JMHg3MTIwLCAweDYxMGEsIDB4MjAwOSwgMHgwMDAxLCAweDA4MGMsIDB4YjM1MiwgMHgwMGJlLCAweDAwMDUsCi0JMHg3MTEwLCAweGQxYmMsIDB4MDE1OCwgMHgwMGQxLCAweDAxNDgsIDB4MDgwYywgMHg4NTFlLCAweDExMzAsCi0JMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwgMHgwMDg5LCAweDA4MGMsIDB4YjM1MiwgMHgwMDA1LCAweDcxMTAsCi0JMHhkMWJjLCAweDAxNTgsIDB4MDA1OSwgMHgwMTQ4LCAweDA4MGMsIDB4ODUxZSwgMHgxMTMwLCAweDcxMjQsCi0JMHg2MTBhLCAweDIwMDksIDB4MDA4YSwgMHgwODBjLCAweGIzNTIsIDB4MDAwNSwgMHg3MDIwLCAweDIwNjAsCi0JMHg5Yzg0LCAweDAwMDcsIDB4MTE1OCwgMHg5YzgyLCAweDFjZDAsIDB4MDI0MCwgMHgyMDAxLCAweDE4MWEsCi0JMHgyMDA0LCAweDljMDIsIDB4MTIxOCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg5MDA2LCAweDBjZTgsCi0JMHgwMGI2LCAweDcxMTAsIDB4ZDFiYywgMHgxMWQ4LCAweDcwMjQsIDB4MjA2MCwgMHg5Yzg0LCAweDAwMDcsCi0JMHgxMWIwLCAweDljODIsIDB4MWNkMCwgMHgwMjk4LCAweDY4NjgsIDB4OWMwMiwgMHgxMjgwLCAweDcwMDgsCi0JMHg5MDg0LCAweDAwZmYsIDB4NjExMCwgMHgyMTU4LCAweGI5MTAsIDB4OTEwNiwgMHgxMTQwLCAweDcwMGMsCi0JMHhiOTE0LCAweDkxMDYsIDB4MTEyMCwgMHgyMDA5LCAweDAwNTEsIDB4MDgwYywgMHhiMzUyLCAweDc4MTcsCi0JMHgwMTQwLCAweDIwMDEsIDB4MTlmMSwgMHgyMDA0LCAweDkwMDUsIDB4MDkwYywgMHg5YWIxLCAweDAwYmUsCi0JMHgwMDA1LCAweDIwMzEsIDB4MDEwNSwgMHgwMDY5LCAweDAwMDUsIDB4MjAzMSwgMHgwMjA2LCAweDAwNDksCi0JMHgwMDA1LCAweDIwMzEsIDB4MDIwNywgMHgwMDI5LCAweDAwMDUsIDB4MjAzMSwgMHgwMjEzLCAweDAwMDksCi0JMHgwMDA1LCAweDAwYzYsIDB4MDA5NiwgMHgwMGY2LCAweDcwMDAsIDB4OTA4NCwgMHhmMDAwLCAweDkwODYsCi0JMHhjMDAwLCAweDA1ZDAsIDB4MDgwYywgMHhiMjdkLCAweDA1YjgsIDB4MDA2NiwgMHgwMGM2LCAweDAwNDYsCi0JMHgyMDExLCAweDAyNjMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsIDB4MDgwYywgMHgyODczLCAweDE1YTAsCi0JMHgwODBjLCAweDY2YjksIDB4MTU4OCwgMHhiZTEyLCAweGJkMTYsIDB4MmIwMCwgMHgwMDRlLCAweDAwY2UsCi0JMHg2MDEyLCAweDA4MGMsIDB4ZDU1NCwgMHgwODBjLCAweDEwMGUsIDB4MDUxMCwgMHgyOTAwLCAweDYwNWEsCi0JMHg5MDA2LCAweGE4MDIsIDB4YTg2NiwgMHhhYzZhLCAweGE4NWMsIDB4OTBmOCwgMHgwMDFiLCAweDIwYTksCi0JMHgwMDBlLCAweGE4NjAsIDB4MjBlOCwgMHgyMGUxLCAweDAwMDAsIDB4MmZhMCwgMHgyZTk4LCAweDQwMDMsCi0JMHgwMDZlLCAweDY2MTYsIDB4NjAwNywgMHgwMDNlLCAweDYwMjMsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsCi0JMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDAwZmUsIDB4MDA5ZSwgMHgwMGNlLCAweDAwMDUsCi0JMHgwODBjLCAweGIyZDMsIDB4MDA2ZSwgMHgwY2MwLCAweDAwNGUsIDB4MDBjZSwgMHgwY2M4LCAweDAwYzYsCi0JMHg3MDAwLCAweDkwOGMsIDB4ZmYwMCwgMHg5MTg0LCAweGYwMDAsIDB4ODEwZiwgMHg5MDg2LCAweDIwMDAsCi0JMHgxOTA0LCAweDg2YjYsIDB4OTE4NiwgMHgwMDIyLCAweDE1ZjAsIDB4MjAwMSwgMHgwMTExLCAweDIwMDQsCi0JMHg5MDA1LCAweDE5MDQsIDB4ODZiOCwgMHg3MDMwLCAweDkwOGUsIDB4MDQwMCwgMHgwOTA0LCAweDg2YjgsCi0JMHg5MDhlLCAweDYwMDAsIDB4MDVlOCwgMHg5MDhlLCAweDU0MDAsIDB4MDVkMCwgMHg5MDhlLCAweDAzMDAsCi0JMHgxMWQ4LCAweDIwMDksIDB4MTgzNywgMHgyMTBjLCAweGQxOGMsIDB4MTU5MCwgMHhkMWE0LCAweDE1ODAsCi0JMHgwODBjLCAweDZhNjEsIDB4MDU4OCwgMHg2OGIwLCAweDkwODQsIDB4MDBmZiwgMHg3MTAwLCAweDkxOGMsCi0JMHgwMGZmLCAweDkxMDYsIDB4MTUxOCwgMHg2ODgwLCAweDY5YjAsIDB4OTE4YywgMHhmZjAwLCAweDkxMDUsCi0JMHg3MTA0LCAweDkxMDYsIDB4MTFkOCwgMHgwMGUwLCAweDIwMDksIDB4MDEwMywgMHgyMTBjLCAweGQxYjQsCi0JMHgxMWE4LCAweDkwOGUsIDB4NTIwMCwgMHgwOWU4LCAweDkwOGUsIDB4MDUwMCwgMHgwOWQwLCAweDkwOGUsCi0JMHg1MDAwLCAweDA5YjgsIDB4MDA1OCwgMHg5MTg2LCAweDAwMjMsIDB4MTE0MCwgMHgwODBjLCAweDg1YzYsCi0JMHgwMTI4LCAweDYwMDQsIDB4OTA4NiwgMHgwMDAyLCAweDAxMTgsIDB4MDAwMCwgMHg5MDA2LCAweDAwMTAsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDBjZSwgMHgwMDA1LCAweDcwMzAsIDB4OTA4ZSwgMHgwMzAwLCAweDAxMTgsCi0JMHg5MDhlLCAweDUyMDAsIDB4MWQ5OCwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHg5MDg0LCAweDAwMDksCi0JMHg5MDg2LCAweDAwMDgsIDB4MGQ2OCwgMHgwYzUwLCAweDAxNTYsIDB4MDA0NiwgMHgwMDE2LCAweDAwMzYsCi0JMHg3MDM4LCAweDIwMjAsIDB4ODQyNywgMHg5NGE0LCAweDAwMDcsIDB4ZDQ4NCwgMHgwMTQ4LCAweDIwYTksCi0JMHgwMDA0LCAweDIwMTksIDB4MTgwNSwgMHgyMDExLCAweDAyN2EsIDB4MDgwYywgMHhjMzY1LCAweDExNzgsCi0JMHhkNDhjLCAweDAxNDgsIDB4MjBhOSwgMHgwMDA0LCAweDIwMTksIDB4MTgwMSwgMHgyMDExLCAweDAyN2UsCi0JMHgwODBjLCAweGMzNjUsIDB4MTEyMCwgMHhkNDk0LCAweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwM2UsCi0JMHgwMDFlLCAweDAwNGUsIDB4MDE1ZSwgMHgwMDA1LCAweDAxNTYsIDB4MDA0NiwgMHgwMDE2LCAweDAwMzYsCi0JMHg3MDM4LCAweDIwMjAsIDB4ODQyNywgMHg5NGE0LCAweDAwMDcsIDB4ZDQ4NCwgMHgwMTQ4LCAweDIwYTksCi0JMHgwMDA0LCAweDIwMTksIDB4MTgwNSwgMHgyMDExLCAweDAyNzIsIDB4MDgwYywgMHhjMzY1LCAweDExNzgsCi0JMHhkNDhjLCAweDAxNDgsIDB4MjBhOSwgMHgwMDA0LCAweDIwMTksIDB4MTgwMSwgMHgyMDExLCAweDAyNzYsCi0JMHgwODBjLCAweGMzNjUsIDB4MTEyMCwgMHhkNDk0LCAweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwM2UsCi0JMHgwMDFlLCAweDAwNGUsIDB4MDE1ZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc4MDAsCi0JMHhjMGU1LCAweGMwY2MsIDB4NzgwMiwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDE4MDAsCi0JMHg3ODM0LCAweGQwODQsIDB4MTEzMCwgMHgyMDc5LCAweDAyMDAsIDB4NzgwMCwgMHg5MDg1LCAweDEyMDAsCi0JMHg3ODAyLCAweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHg3MDM0LCAweGMwODQsCi0JMHg3MDM2LCAweDAwZWUsIDB4MDAwNSwgMHgwMDE2LCAweDIwMDEsIDB4MTgzNywgMHgyMDBjLCAweDkxODQsCi0JMHgwMDgwLCAweDAxMTgsIDB4ZDE4YywgMHgwMTE4LCAweDkwMDYsIDB4MDAxZSwgMHgwMDA1LCAweDkwODUsCi0JMHgwMDAxLCAweDBjZDgsIDB4MjA3MSwgMHgxOWZiLCAweDcwMDMsIDB4MDAwMywgMHg3MDBmLCAweDAzNjEsCi0JMHg5MDA2LCAweDcwMWEsIDB4NzA3YSwgMHg3MDEyLCAweDcwMTcsIDB4MWNkMCwgMHg3MDA3LCAweDAwMDAsCi0JMHg3MDI2LCAweDcwMmIsIDB4YTZmZiwgMHg3MDMyLCAweDcwM2EsIDB4NzAzZiwgMHgwMDY0LCAweDcwMzcsCi0JMHhhNzY3LCAweDcwNDcsIDB4ZmZmZiwgMHg3MDRhLCAweDcwNGYsIDB4NTY2NywgMHg3MDUyLCAweDcwNjMsCi0JMHg4OGRlLCAweDA4MGMsIDB4MTAyNywgMHgwOTBjLCAweDBkYzUsIDB4MjkwMCwgMHg3MDQyLCAweGE4NjcsCi0JMHgwMDAzLCAweGE4NmYsIDB4MDEwMCwgMHhhOGFiLCAweGRjYjAsIDB4MDAwNSwgMHgyMDcxLCAweDE5ZmIsCi0JMHgxZDA0LCAweDg4MmMsIDB4MjA5MSwgMHg2MDAwLCAweDcwMGMsIDB4ODAwMSwgMHg3MDBlLCAweDE1NDAsCi0JMHgyMDAxLCAweDAxM2MsIDB4MjAwNCwgMHg5MDA1LCAweDE5MGMsIDB4ODk0YywgMHgyMDAxLCAweDE4NjksCi0JMHgyMDA0LCAweGQwYzQsIDB4MDE1OCwgMHgzYTAwLCAweGQwOGMsIDB4MTE0MCwgMHgyMGQxLCAweDAwMDAsCi0JMHgyMGQxLCAweDAwMDEsIDB4MjBkMSwgMHgwMDAwLCAweDA4MGMsIDB4MGRjNSwgMHg3MDBmLCAweDAzNjEsCi0JMHg3MDA3LCAweDAwMDEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg4OTIzLCAweDcwNDgsCi0JMHg5MDBkLCAweDAxNDgsIDB4ODEwOSwgMHg3MTRhLCAweDExMzAsIDB4NzA0YywgMHgwODBmLCAweDAwMTgsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg3MDI0LCAweDkwMGQsIDB4MDE4OCwgMHg3MDIwLCAweDgwMDEsCi0JMHg3MDIyLCAweDExNjgsIDB4NzAyMywgMHgwMDA5LCAweDgxMDksIDB4NzEyNiwgMHg5MTg2LCAweDAzZTgsCi0JMHgxMTEwLCAweDcwMjgsIDB4MDgwZiwgMHg4MWZmLCAweDExMTAsIDB4NzAyOCwgMHgwODBmLCAweDcwMzAsCi0JMHg5MDBkLCAweDA1YTgsIDB4NzAyYywgMHg4MDAxLCAweDcwMmUsIDB4MTU4OCwgMHgwMDE2LCAweDIwMDksCi0JMHgwMzA2LCAweDIxMGMsIDB4OTE4NCwgMHgwMDMwLCAweDAxZTgsIDB4OTE4NCwgMHgwMDQ4LCAweDkwODYsCi0JMHgwMDA4LCAweDExYzAsIDB4NzAzOCwgMHg5MDA1LCAweDAxYTgsIDB4ODAwMSwgMHg3MDNhLCAweDExOTAsCi0JMHgwODBjLCAweDc2MzcsIDB4MDE3OCwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwgMHgwODBjLCAweGE3ZjUsCi0JMHgwMGVlLCAweDExNDAsIDB4MjAwOSwgMHgxYTg2LCAweDIxMDQsIDB4ODAwMCwgMHgwMjA4LCAweDIwMGEsCi0JMHgwMDFlLCAweDAwNjgsIDB4MDAxZSwgMHg3MDJmLCAweDAwMDksIDB4ODEwOSwgMHg3MTMyLCAweDAxMjgsCi0JMHg5MTg0LCAweDAwN2YsIDB4MDkwYywgMHhhOGFiLCAweDAwMTAsIDB4NzAzNCwgMHgwODBmLCAweDcwNDQsCi0JMHg5MDA1LCAweDAxMTgsIDB4MDMxMCwgMHg4MDAxLCAweDcwNDYsIDB4NzA1NCwgMHg5MDBkLCAweDAxNjgsCi0JMHg3MDUwLCAweDgwMDEsIDB4NzA1MiwgMHgxMTQ4LCAweDcwNTMsIDB4MDAwOSwgMHg4MTA5LCAweDcxNTYsCi0JMHgxMTIwLCAweDcxNTgsIDB4NzE1NiwgMHg3MDYwLCAweDA4MGYsIDB4NzAxOCwgMHg5MDBkLCAweDAxZDgsCi0JMHgwMDE2LCAweDcwNzgsIDB4OTAwZCwgMHgwMTU4LCAweDcwNzQsIDB4ODAwMSwgMHg3MDc2LCAweDExMzgsCi0JMHg3MDc3LCAweDAwMDksIDB4ODEwOSwgMHg3MTdhLCAweDExMTAsIDB4NzA3YywgMHgwODBmLCAweDAwMWUsCi0JMHg3MDA4LCAweDgwMDEsIDB4NzAwYSwgMHgxMTM4LCAweDcwMGIsIDB4MDAwOSwgMHg4MTA5LCAweDcxMWEsCi0JMHgxMTEwLCAweDcwMWMsIDB4MDgwZiwgMHgwMTJlLCAweDcwMDQsIDB4MDAwMiwgMHg4ODU0LCAweDg4NTUsCi0JMHg4ODcxLCAweDAwZTYsIDB4MjA3MSwgMHgxOWZiLCAweDcwMTgsIDB4OTAwNSwgMHgxMTIwLCAweDcxMWEsCi0JMHg3MjFlLCAweDcwMGIsIDB4MDAwOSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgwMDA2LCAweDIwNzEsCi0JMHgxOWZiLCAweDcwMWMsIDB4OTIwNiwgMHgxMTIwLCAweDcwMWEsIDB4NzAxZSwgMHg3MDdhLCAweDcwN2UsCi0JMHgwMDBlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTlmYiwgMHhiODg4LCAweDkxMDIsCi0JMHgwMjA4LCAweGI5OGEsIDB4MDBlZSwgMHgwMDA1LCAweDAwMDUsIDB4MDBiNiwgMHg3MTEwLCAweDA4MGMsCi0JMHg2NzI0LCAweDExNjgsIDB4Yjg4OCwgMHg4MDAxLCAweDAyNTAsIDB4Yjg4YSwgMHgxMTQwLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDAxNiwgMHgwODBjLCAweDlhYjEsIDB4MDAxZSwgMHgwMTJlLCAweDgxMDgsCi0JMHg5MTgyLCAweDA4MDAsIDB4MDIxOCwgMHg5MDBlLCAweDcwMDcsIDB4MDAwMiwgMHg3MTEyLCAweDAwYmUsCi0JMHgwMDA1LCAweDcwMTQsIDB4MjA2MCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MDQwLCAweDkwMDUsCi0JMHgwMTI4LCAweDgwMDEsIDB4NjA0MiwgMHgxMTEwLCAweDA4MGMsIDB4ZDNlNSwgMHg2MDE4LCAweDkwMDUsCi0JMHgwNTU4LCAweDgwMDEsIDB4NjAxYSwgMHgxNTQwLCAweDYxMjAsIDB4OTE4NiwgMHgwMDAzLCAweDAxNDgsCi0JMHg5MTg2LCAweDAwMDYsIDB4MDEzMCwgMHg5MTg2LCAweDAwMDksIDB4MTFlMCwgMHg2MTFjLCAweGQxYzQsCi0JMHgxMTAwLCAweDA4MGMsIDB4ZDBkOCwgMHgwMWIwLCAweDYwMTQsIDB4MjA0OCwgMHhhODg0LCAweDkwOGEsCi0JMHgxOTlhLCAweDAyODAsIDB4OTA4MiwgMHgxOTk5LCAweGE4ODYsIDB4OTA4YSwgMHgxOTlhLCAweDAyMTAsCi0JMHgyMDAxLCAweDE5OTksIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4OTEwOCwgMHg2MTFhLCAweGE4N2MsCi0JMHhkMGU0LCAweDAxMTAsIDB4MDgwYywgMHhjZGJjLCAweDAxMmUsIDB4OWM4OCwgMHgwMDE4LCAweDcxMTYsCi0JMHgyMDAxLCAweDE4MWEsIDB4MjAwNCwgMHg5MTAyLCAweDAyMjAsIDB4NzAxNywgMHgxY2QwLCAweDcwMDcsCi0JMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZmIsIDB4NzAyNywgMHgwN2QwLCAweDcwMjMsCi0JMHgwMDA5LCAweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDFhMDQsIDB4MjAwMywgMHgwMDAwLCAweDAwMDUsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTlmYiwgMHg3MTMyLCAweDcwMmYsIDB4MDAwOSwgMHgwMGVlLCAweDAwMDUsCi0JMHgyMDExLCAweDFhMDcsIDB4MjAxMywgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZmIsCi0JMHg3MTFhLCAweDcyMWUsIDB4NzAwYiwgMHgwMDA5LCAweDAwZWUsIDB4MDAwNSwgMHgwMDg2LCAweDAwMjYsCi0JMHg3MDVjLCAweDgwMDAsIDB4NzA1ZSwgMHgyMDAxLCAweDFhMGIsIDB4MjA0NCwgMHhhMDZjLCAweDkwODYsCi0JMHgwMDAwLCAweDAxNTAsIDB4NzA3MCwgMHhhMDlhLCAweDcwNmMsIDB4YTA5NiwgMHg3MDY4LCAweGEwOTIsCi0JMHg3MDY0LCAweGEwOGUsIDB4MDgwYywgMHgxMGY4LCAweDAwMmUsIDB4MDA4ZSwgMHgwMDA1LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwOTYsIDB4MDBhNiwgMHgwMGI2LCAweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDAwZjYsCi0JMHgwMTU2LCAweDA4MGMsIDB4ODc3NiwgMHgwMTVlLCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsCi0JMHgwMGJlLCAweDAwYWUsIDB4MDA5ZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsCi0JMHgxOWZiLCAweDcxN2EsIDB4NzI3ZSwgMHg3MDc3LCAweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgwMDA2LCAweDIwNzEsIDB4MTlmYiwgMHg3MDdjLCAweDkyMDYsIDB4MTExMCwgMHg3MDdhLCAweDcwN2UsCi0JMHgwMDBlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDY5LCAweDE4MDAsIDB4NjllOCwgMHhkMWU0LCAweDE1MTgsCi0JMHgwMDI2LCAweGQxZWMsIDB4MDE0MCwgMHg2YTU0LCAweDY4NzQsIDB4OTIwMiwgMHgwMjg4LCAweDgxMTcsCi0JMHg5Mjk0LCAweDAwYzAsIDB4MDA4OCwgMHg5MTg0LCAweDAwMDcsIDB4MDFhMCwgMHg4MTA5LCAweDkxODQsCi0JMHgwMDA3LCAweDAxMTAsIDB4NjllYSwgMHgwMDcwLCAweDgxMDcsIDB4OTA4NCwgMHgwMDA3LCAweDkxMGQsCi0JMHg4MTA3LCAweDkxMDYsIDB4OTA5NCwgMHgwMGMwLCAweDkxODQsIDB4ZmYzZiwgMHg5MjA1LCAweDY4ZWEsCi0JMHgwODBjLCAweDBlZWUsIDB4MDAyZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwgMHgyMDA5LCAweGZmZjQsCi0JMHgyMTBkLCAweDIwNjEsIDB4MDEwMCwgMHg2MGYwLCAweDkxMDAsIDB4NjBmMywgMHgwMDAwLCAweDIwMDksCi0JMHhmZmY0LCAweDIwMGYsIDB4MTIyMCwgMHg4MTA4LCAweDIxMDUsIDB4ODAwMCwgMHgyMDBmLCAweDAwY2UsCi0JMHgwMDFlLCAweDAwMDUsIDB4MDBjNiwgMHgyMDYxLCAweDFhNzQsIDB4MDBjZSwgMHgwMDA1LCAweDkxODQsCi0JMHgwMDBmLCAweDgwMDMsIDB4ODAwMywgMHg4MDAzLCAweDkwODAsIDB4MWE3NCwgMHgyMDYwLCAweDAwMDUsCi0JMHhhODg0LCAweDkwOGEsIDB4MTk5YSwgMHgxNjM4LCAweDkwMDUsIDB4MTE1MCwgMHgwMGM2LCAweDIwNjEsCi0JMHgxYTc0LCAweDYwMTQsIDB4MDBjZSwgMHg5MDA1LCAweDExMzAsIDB4MjAwMSwgMHgwMDFlLCAweDAwMTgsCi0JMHg5MDhlLCAweGZmZmYsIDB4MDFiMCwgMHg4MDAzLCAweDgwMGIsIDB4ODEwYiwgMHg5MTA4LCAweDYxMWEsCi0JMHhhODdjLCAweDkwOGMsIDB4MDBjMCwgMHg5MThlLCAweDAwYzAsIDB4MDkwNCwgMHg4OWZhLCAweGQwYjQsCi0JMHgxMTY4LCAweGQwYmMsIDB4MTkwNCwgMHg4OWQzLCAweDIwMDksIDB4MDAwNiwgMHgwODBjLCAweDhhMjcsCi0JMHgwMDA1LCAweDkwMGUsIDB4MGM2MCwgMHgyMDAxLCAweDE5OTksIDB4MDhiMCwgMHhkMGZjLCAweDAxNjAsCi0JMHg5MDhjLCAweDAwMDMsIDB4MDEyMCwgMHg5MThlLCAweDAwMDMsIDB4MTkwNCwgMHg4YTIxLCAweDkwOGMsCi0JMHgyMDIwLCAweDkxOGUsIDB4MjAyMCwgMHgwMWE4LCAweDYwMjQsIDB4ZDBkNCwgMHgxMWU4LCAweDIwMDksCi0JMHgxODY5LCAweDIxMDQsIDB4ZDA4NCwgMHgxMTM4LCAweDg3ZmYsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDMsCi0JMHgwODA0LCAweGIzNTIsIDB4MDAwNSwgMHg4N2ZmLCAweDFkZTgsIDB4MjAwOSwgMHgwMDQyLCAweDA4MDQsCi0JMHhiMzUyLCAweDYxMTAsIDB4MDBiNiwgMHgyMTU4LCAweGI5MDAsIDB4MDBiZSwgMHhkMWFjLCAweDBkMjAsCi0JMHg2MDI0LCAweGMwY2QsIDB4NjAyNiwgMHgwYzAwLCAweGMwZDQsIDB4NjAyNiwgMHhhODkwLCAweDYwMmUsCi0JMHhhODhjLCAweDYwMzIsIDB4MDhlMCwgMHhkMGZjLCAweDAxNjAsIDB4OTA4YywgMHgwMDAzLCAweDAxMjAsCi0JMHg5MThlLCAweDAwMDMsIDB4MTkwNCwgMHg4YTIxLCAweDkwOGMsIDB4MjAyMCwgMHg5MThlLCAweDIwMjAsCi0JMHgwMTcwLCAweDAwNzYsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4MTc2OCwgMHgwMGZlLCAweDAwN2UsCi0JMHg4N2ZmLCAweDExMjAsIDB4MjAwOSwgMHgwMDQyLCAweDA4MGMsIDB4YjM1MiwgMHgwMDA1LCAweDYxMTAsCi0JMHgwMGI2LCAweDIxNTgsIDB4YjkwMCwgMHgwMGJlLCAweGQxYWMsIDB4MGQ1OCwgMHg2MTI0LCAweGMxY2QsCi0JMHg2MTI2LCAweDBjMzgsIDB4ZDBmYywgMHgwMTg4LCAweDkwOGMsIDB4MjAyMCwgMHg5MThlLCAweDIwMjAsCi0JMHgwMWE4LCAweDkwODQsIDB4MDAwMywgMHg5MDhlLCAweDAwMDIsIDB4MDE0OCwgMHg4N2ZmLCAweDExMjAsCi0JMHgyMDA5LCAweDAwNDEsIDB4MDgwYywgMHhiMzUyLCAweDAwMDUsIDB4MDBiOSwgMHgwY2U4LCAweDg3ZmYsCi0JMHgxZGQ4LCAweDIwMDksIDB4MDA0MywgMHgwODBjLCAweGIzNTIsIDB4MGNiMCwgMHg2MTEwLCAweDAwYjYsCi0JMHgyMTU4LCAweGI5MDAsIDB4MDBiZSwgMHhkMWFjLCAweDBkMjAsIDB4NjEyNCwgMHhjMWNkLCAweDYxMjYsCi0JMHgwYzAwLCAweDIwMDksIDB4MDAwNCwgMHgwMDE5LCAweDAwMDUsIDB4MjAwOSwgMHgwMDAxLCAweDAwOTYsCi0JMHgwODBjLCAweGQwZDgsIDB4MDUxOCwgMHg2MDE0LCAweDIwNDgsIDB4YTk4MiwgMHhhODAwLCAweDYwMTYsCi0JMHg5MTg2LCAweDAwMDEsIDB4MTE4OCwgMHhhOTdjLCAweDkxOGMsIDB4ODEwMCwgMHg5MThlLCAweDgxMDAsCi0JMHgxMTU4LCAweDAwYzYsIDB4MjA2MSwgMHgxYTc0LCAweDYyMDAsIDB4ZDI4YywgMHgxMTIwLCAweDYyMDQsCi0JMHg4MjEwLCAweDAyMDgsIDB4NjIwNiwgMHgwMGNlLCAweDA4MGMsIDB4NmNkZSwgMHg2MDE0LCAweDkwNGQsCi0JMHgwMDc2LCAweDIwMzksIDB4MDAwMCwgMHgxOTBjLCAweDg5NzAsIDB4MDA3ZSwgMHgwMDllLCAweDAwMDUsCi0JMHgwMTU2LCAweDAwYzYsIDB4MjA2MSwgMHgxYTc0LCAweDYwMDAsIDB4ODFmZiwgMHgwMTEwLCAweDkyMDUsCi0JMHgwMDA4LCAweDkyMDQsIDB4NjAwMiwgMHgwMGNlLCAweDAxNWUsIDB4MDAwNSwgMHg2ODAwLCAweGQwOGMsCi0JMHgxMTM4LCAweDY4MDgsIDB4OTAwNSwgMHgwMTIwLCAweDgwMDEsIDB4NjgwYSwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDA1LCAweDIwNzEsIDB4MTkyNCwgMHg3MDAzLCAweDAwMDYsIDB4NzAwNywgMHgwMDAwLCAweDcwMGYsCi0JMHgwMDAwLCAweDcwMTMsIDB4MDAwMSwgMHgwODBjLCAweDEwMjcsIDB4MDkwYywgMHgwZGM1LCAweGE4NjcsCi0JMHgwMDA2LCAweGE4NmIsIDB4MDAwMSwgMHhhOGFiLCAweGRjYjAsIDB4YTg5ZiwgMHgwMDAwLCAweDI5MDAsCi0JMHg3MDJlLCAweDcwMzMsIDB4MDAwMCwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwOTYsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTkyNCwgMHg3MDJjLCAweDIwNDgsIDB4NmEyYywgMHg3MjFlLCAweDZiMzAsCi0JMHg3MzIyLCAweDY4MzQsIDB4NzAyNiwgMHhhODk2LCAweDY4MzgsIDB4NzAyYSwgMHhhODlhLCAweDY4MjQsCi0JMHg3MDE2LCAweDY4M2MsIDB4NzAxYSwgMHgyMDA5LCAweDAwMjgsIDB4MjAwYSwgMHg5MDA1LCAweDAxNDgsCi0JMHg5MDBlLCAweDkxODgsIDB4MDAwYywgMHg4MDAxLCAweDFkZTAsIDB4MjEwMCwgMHg5MjEwLCAweDEyMDgsCi0JMHg4MzE4LCAweGFhOGUsIDB4YWI5MiwgMHg3MDEwLCAweGQwODQsIDB4MDE2OCwgMHhjMDg0LCAweDcwMDcsCi0JMHgwMDAxLCAweDcwMGYsIDB4MDAwMCwgMHgwMDA2LCAweDIwMDksIDB4MWFkMSwgMHgyMTA0LCAweDkwODIsCi0JMHgwMDA3LCAweDIwMGEsIDB4MDAwZSwgMHhjMDk1LCAweDcwMTIsIDB4MjAwOCwgMHgyMDAxLCAweDAwM2IsCi0JMHgwODBjLCAweDE2MTEsIDB4OTAwNiwgMHgyMDcxLCAweDE5M2QsIDB4NzAwMiwgMHg3MDA2LCAweDcwMmEsCi0JMHgwMGVlLCAweDAwOWUsIDB4MDEyZSwgMHgwMDA1LCAweDIwMDksIDB4MWFkMSwgMHgyMTA0LCAweDkwODAsCi0JMHgwMDA3LCAweDIwMGEsIDB4MDAwNSwgMHgwMGU2LCAweDAxMjYsIDB4MDE1NiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzE1NCwgMHgyMDAxLCAweDAwMDgsIDB4OTEwYSwgMHgwNjM4LCAweDIwMDEsCi0JMHgxODdkLCAweDIwYWMsIDB4OTAwNiwgMHg5MDgwLCAweDAwMDgsIDB4MWYwNCwgMHg4YWUzLCAweDcxYzAsCi0JMHg5MTAyLCAweDAyZTAsIDB4MjA3MSwgMHgxODc3LCAweDIwYTksIDB4MDAwNywgMHgwMGM2LCAweDA4MGMsCi0JMHhiMjdkLCAweDYwMjMsIDB4MDAwOSwgMHg2MDAzLCAweDAwMDQsIDB4NjAxZiwgMHgwMTAxLCAweDAwODksCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDhjNjEsIDB4MDEyZSwgMHgxZjA0LCAweDhhZWYsCi0JMHg5MDA2LCAweDAwY2UsIDB4MDE1ZSwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsCi0JMHgwY2M4LCAweDAwZTYsIDB4MDBiNiwgMHgwMDk2LCAweDAwODYsIDB4MDA1NiwgMHgwMDQ2LCAweDAwMjYsCi0JMHg3MTE4LCAweDcyMGMsIDB4NzYyMCwgMHg3MDA0LCAweGQwODQsIDB4MTEyOCwgMHgyMDIxLCAweDAwMjQsCi0JMHgyMDI5LCAweDAwMDIsIDB4MDAyMCwgMHgyMDIxLCAweDAwMmMsIDB4MjAyOSwgMHgwMDBhLCAweDA4MGMsCi0JMHgxMDBlLCAweDA5MGMsIDB4MGRjNSwgMHgyOTAwLCAweDYwMTYsIDB4MjA1OCwgMHhhYzY2LCAweDkwMDYsCi0JMHhhODAyLCAweGE4MDYsIDB4YTg2YSwgMHhhODdhLCAweGE4YWEsIDB4YTg4NywgMHgwMDA1LCAweGE4N2YsCi0JMHgwMDIwLCAweDcwMDgsIDB4YTg5YSwgMHg3MDEwLCAweGE4OWUsIDB4YWU4YSwgMHhhOGFmLCAweGZmZmYsCi0JMHhhOGIzLCAweDAwMDAsIDB4ODEwOSwgMHgwMTYwLCAweDA4MGMsIDB4MTAwZSwgMHgwOTBjLCAweDBkYzUsCi0JMHhhZDY2LCAweDJiMDAsIDB4YTgwMiwgMHgyOTAwLCAweGI4MDYsIDB4MjA1OCwgMHg4MTA5LCAweDFkYTAsCi0JMHgwMDJlLCAweDAwNGUsIDB4MDA1ZSwgMHgwMDhlLCAweDAwOWUsIDB4MDBiZSwgMHgwMGVlLCAweDAwMDUsCi0JMHgyMDc5LCAweDAwMDAsIDB4MjA3MSwgMHgxOTI0LCAweDcwMDQsIDB4MDA0YiwgMHg3MDBjLCAweDAwMDIsCi0JMHg4YjViLCAweDhiNTQsIDB4OGI1NCwgMHgwMDA1LCAweDhiNjUsIDB4OGJiYiwgMHg4YmJiLCAweDhiYmIsCi0JMHg4YmJjLCAweDhiY2QsIDB4OGJjZCwgMHg3MDBjLCAweDBjYmEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg3OGEwLCAweDc5YTAsIDB4OTEwNiwgMHgxOTA0LCAweDhiYWQsIDB4NzgxNCwgMHhkMGJjLCAweDE5MDQsCi0JMHg4YmI2LCAweDAxMmUsIDB4NzAxOCwgMHg5MTBhLCAweDExMjgsIDB4NzAzMCwgMHg5MDA1LCAweDE5MDQsCi0JMHg4YmZmLCAweDAwMDUsIDB4MTIxMCwgMHg3MTE0LCAweDkxMGEsIDB4OTE5MiwgMHgwMDBhLCAweDAyMTAsCi0JMHgyMDA5LCAweDAwMGEsIDB4MjAwMSwgMHgxODg4LCAweDIwMTQsIDB4MjAwMSwgMHgxOTM2LCAweDIwMDQsCi0JMHg5MTAwLCAweDkyMDIsIDB4MGU1MCwgMHgwODBjLCAweDhkNWMsIDB4MjIwMCwgMHg5MTAyLCAweDAyMDgsCi0JMHgyMjA4LCAweDAwOTYsIDB4NzAyYywgMHgyMDQ4LCAweGE4NzMsIDB4MDAwMSwgMHhhOTc2LCAweDA4MGMsCi0JMHg4ZTY1LCAweDIxMDAsIDB4YTg3ZSwgMHhhODZmLCAweDAwMDAsIDB4MDA5ZSwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwMDksIDB4MWExYiwgMHgyMTA0LCAweGMwODUsIDB4MjAwYSwgMHg3MDBmLCAweDAwMDIsCi0JMHgwMTJlLCAweDA4MGMsIDB4MTExNywgMHgxZGU4LCAweDAwMDUsIDB4NzhhMCwgMHg3OWEwLCAweDkxMDYsCi0JMHgwOTA0LCAweDhiNmQsIDB4MDgwYywgMHg4ZDM0LCAweDAxMmUsIDB4MDAwNSwgMHg3ODEwLCAweGMwYzUsCi0JMHg3ODEyLCAweDA4MDQsIDB4OGI2ZCwgMHgwMDA1LCAweDcwMGMsIDB4MDAwMiwgMHg4YmMxLCAweDhiYzQsCi0JMHg4YmMzLCAweDA4MGMsIDB4OGI2MywgMHgwMDA1LCAweDgwMDEsIDB4NzAwZSwgMHgwMDk2LCAweDcwMmMsCi0JMHgyMDQ4LCAweGE5NzQsIDB4MDA5ZSwgMHgwMDExLCAweDBjYTAsIDB4MDAwNSwgMHgwMDk2LCAweDcwMmMsCi0JMHgyMDQ4LCAweDcwMTgsIDB4OTEwMCwgMHg3MjE0LCAweDkyMWEsIDB4MTEzMCwgMHg3MDFjLCAweGE4OGUsCi0JMHg3MDIwLCAweGE4OTIsIDB4OTAwNiwgMHgwMDY4LCAweDAwMDYsIDB4MDgwYywgMHg4ZTY1LCAweDIxMDAsCi0JMHhhYThjLCAweDkyMTAsIDB4YWE4ZSwgMHgxMjIwLCAweGE4OTAsIDB4OTA4MSwgMHgwMDAwLCAweGE4OTIsCi0JMHgwMDBlLCAweDAwOWUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzhhMiwgMHg3MDFhLCAweDA4MGMsCi0JMHg4ZDM0LCAweDAxMmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTkyNCwgMHg3MDBjLCAweDAwMDIsCi0JMHg4YmZkLCAweDhiZmQsIDB4OGJmYiwgMHg3MDBmLCAweDAwMDEsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4NzAzMCwgMHg5MDA1LCAweDA1MDgsIDB4MjA3OCwgMHg3ODE0LCAweDIwNDgsCi0JMHhhZTg4LCAweDAwYjYsIDB4MjA1OSwgMHgwMDAwLCAweDA4MGMsIDB4OGM2YSwgMHgwMGJlLCAweDAxYjAsCi0JMHgwMGU2LCAweDIwNzEsIDB4MTkzZCwgMHgwODBjLCAweDhjYjEsIDB4MDBlZSwgMHgwMTc4LCAweDAwOTYsCi0JMHgwODBjLCAweDEwMjcsIDB4MjkwMCwgMHgwMDllLCAweDAxNDgsIDB4YThhYSwgMHgwNGI5LCAweDAwNDEsCi0JMHgyMDAxLCAweDE5NDcsIDB4MjAwMywgMHgwMDAwLCAweDAxMmUsIDB4MDhjOCwgMHgwMTJlLCAweDAwMDUsCi0JMHgwMGQ2LCAweDAwYzYsIDB4MDA4NiwgMHgwMGE2LCAweDI5NDAsIDB4MjY1MCwgMHgyNjAwLCAweDkwMDUsCi0JMHgwMTgwLCAweGE4NjQsIDB4OTA4NCwgMHgwMDBmLCAweDIwNjgsIDB4OWQ4OCwgMHgyMGM3LCAweDIxNjUsCi0JMHgwMDU2LCAweDIwMjksIDB4MDAwMCwgMHgwODBjLCAweDhkZWEsIDB4MDgwYywgMHgyMDdmLCAweDFkZDgsCi0JMHgwMDVlLCAweDAwYWUsIDB4MjAwMSwgMHgxODdmLCAweDIwMDQsIDB4YTg4YSwgMHgwODBjLCAweDE3NjgsCi0JMHg3ODFmLCAweDAxMDEsIDB4NzgxMywgMHgwMDAwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg4Y2MwLCAweDAxMmUsIDB4MDA4ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHg3MDMwLCAweDkwMDUsCi0JMHgwMTM4LCAweDIwNzgsIDB4NzgwYywgMHg3MDMyLCAweDIwMDEsIDB4MTk0NywgMHgyMDAzLCAweDAwMDEsCi0JMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxOTI0LCAweDcwMzAsIDB4NjAwZSwgMHgyYzAwLCAweDcwMzIsCi0JMHgwMGVlLCAweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDAwMjYsIDB4OWI4MCwgMHg4ZjMzLCAweDIwMDUsCi0JMHg5MDZkLCAweDA5MGMsIDB4MGRjNSwgMHg5YjgwLCAweDhmMmIsIDB4MjAwNSwgMHg5MDY1LCAweDA5MGMsCi0JMHgwZGM1LCAweDYxMTQsIDB4MjYwMCwgMHg5MTAyLCAweDAyNDgsIDB4NjgyOCwgMHg5MTAyLCAweDAyZjAsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAyZSwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHg2ODA0LCAweGQwOTQsCi0JMHgwMTQ4LCAweDY4NTQsIDB4ZDA4NCwgMHgxMTc4LCAweGMwODUsIDB4Njg1NiwgMHgyMDExLCAweDgwMjYsCi0JMHgwODBjLCAweDRjNDQsIDB4Njg0YywgMHgwMDk2LCAweDkwNGQsIDB4MDkwYywgMHgwZGM1LCAweGE4MDQsCi0JMHg4MDAwLCAweGE4MDYsIDB4MDA5ZSwgMHg5MDA2LCAweDIwMzAsIDB4MGMyMCwgMHg2ODU0LCAweGQwOGMsCi0JMHgxZDA4LCAweGMwOGQsIDB4Njg1NiwgMHgyMDExLCAweDgwMjUsIDB4MDgwYywgMHg0YzQ0LCAweDY4NGMsCi0JMHgwMDk2LCAweDkwNGQsIDB4MDkwYywgMHgwZGM1LCAweGE4MDAsIDB4ODAwMCwgMHhhODAyLCAweDAwOWUsCi0JMHgwODg4LCAweDcwMDAsIDB4MjAxOSwgMHgwMDA4LCAweDgzMTksIDB4NzEwNCwgMHg5MTAyLCAweDExMTgsCi0JMHgyMzAwLCAweDkwMDUsIDB4MDAyMCwgMHgwMjEwLCAweDkzMDIsIDB4MDAwOCwgMHg4MDAyLCAweDAwMDUsCi0JMHgwMGQ2LCAweDc4MTQsIDB4OTAwNSwgMHgwOTBjLCAweDBkYzUsIDB4NzgxYywgMHg5MDg0LCAweDAxMDEsCi0JMHg5MDg2LCAweDAxMDEsIDB4MTkwYywgMHgwZGM1LCAweDc4MjcsIDB4MDAwMCwgMHgyMDY5LCAweDE5M2QsCi0JMHg2ODA0LCAweDkwODAsIDB4MTkzZiwgMHgyZjA4LCAweDIxMDIsIDB4NjkwNCwgMHg4MTA4LCAweDkxODIsCi0JMHgwMDA4LCAweDAyMDgsIDB4OTAwZSwgMHg2OTA2LCAweDkxODAsIDB4MTkzZiwgMHgyMDAzLCAweDAwMDAsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDA5NiwgMHgwMGM2LCAweDIwNjAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4YTgsCi0JMHgwMDk2LCAweDIwNDgsIDB4OTAwNSwgMHgxOTBjLCAweDEwNDAsIDB4MDA5ZSwgMHhhOGFiLCAweDAwMDAsCi0JMHgwODBjLCAweDBmYzAsIDB4MDgwYywgMHhiMmQzLCAweDAwY2UsIDB4MDA5ZSwgMHgwMDA1LCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMDksIDB4MTEyOCwgMHg2MDFjLCAweGQwYzQsIDB4MDExMCwgMHg5MDA2LCAweDAwMDUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg2MDAwLCAweDkwODYsIDB4MDAwMCwgMHgwMTc4LCAweDYwMTAsCi0JMHg5MDA1LCAweDAxNTAsIDB4MDBiNiwgMHgyMDU4LCAweDA4MGMsIDB4OTA2NywgMHgwMGJlLCAweDYwMTMsCi0JMHgwMDAwLCAweDYwMWIsIDB4MDAwMCwgMHgwMDEwLCAweDJjMDAsIDB4MDg2MSwgMHgwMDA1LCAweDIwMDksCi0JMHgxOTI4LCAweDIxMGMsIDB4ZDE5NCwgMHgwMDA1LCAweDIwMDksIDB4MTkyOCwgMHgyMTBjLCAweGQxYzQsCi0JMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwZTYsIDB4MjA3MSwgMHgxOTI0LCAweDcxMTAsCi0JMHhjMTk0LCAweGMxODUsIDB4NzAwNywgMHgwMDAwLCAweDcxMTIsIDB4MjAwMSwgMHgwMDNiLCAweDA4MGMsCi0JMHgxNjExLCAweDAwZWUsIDB4MDEyZSwgMHgwMDA1LCAweDc4MTQsIDB4ZDBiYywgMHgxMTA4LCAweDAwMDUsCi0JMHg3ODEwLCAweGMwYzUsIDB4NzgxMiwgMHgwY2MwLCAweDAwOTYsIDB4MDBkNiwgMHg5MDA2LCAweDcwMDYsCi0JMHg3MDBlLCAweDcwMWEsIDB4NzAxZSwgMHg3MDIyLCAweDcwMTYsIDB4NzAyYSwgMHg3MDI2LCAweDcwMmYsCi0JMHgwMDAwLCAweDA4MGMsIDB4OGViMywgMHgwMTcwLCAweDA4MGMsIDB4OGVlOCwgMHgwMTU4LCAweDI5MDAsCi0JMHg3MDAyLCAweDcwMGEsIDB4NzAxYSwgMHg3MDEzLCAweDAwMDEsIDB4NzAxZiwgMHgwMDBhLCAweDAwZGUsCi0JMHgwMDllLCAweDAwMDUsIDB4OTAwZSwgMHgwY2Q4LCAweDAwZTYsIDB4MDA5NiwgMHgwMDg2LCAweDAwZDYsCi0JMHgwMGM2LCAweDIwNzEsIDB4MTkzMSwgMHg3MjFjLCAweDIxMDAsIDB4OTIwMiwgMHgxNjE4LCAweDA4MGMsCi0JMHg4ZWU4LCAweDA5MGMsIDB4MGRjNSwgMHg3MDE4LCAweDkwMDUsIDB4MTE2MCwgMHgyOTAwLCAweDcwMDIsCi0JMHg3MDBhLCAweDcwMWEsIDB4OTAwNiwgMHg3MDA2LCAweDcwMGUsIDB4YTgwNiwgMHhhODAyLCAweDcwMTIsCi0JMHg3MDFlLCAweDAwMzgsIDB4MjA0MCwgMHhhODA2LCAweDI5MDAsIDB4YTAwMiwgMHg3MDFhLCAweGE4MDMsCi0JMHgwMDAwLCAweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMWMsIDB4OTA4MCwgMHgwMDBhLCAweDcwMWUsCi0JMHg3MjFjLCAweDA4ZDAsIDB4NzIxYywgMHgwMGNlLCAweDAwZGUsIDB4MDA4ZSwgMHgwMDllLCAweDAwZWUsCi0JMHgwMDA1LCAweDAwOTYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwNzEsIDB4MTkzMSwgMHg3MzAwLCAweDgzMWYsIDB4ODMxZSwgMHg4MzFlLCAweDkzODQsCi0JMHgwMDNmLCAweDIwZTgsIDB4OTM5YywgMHhmZmMwLCAweDkzOTgsIDB4MDAwMywgMHg3MTA0LCAweDA4MGMsCi0JMHg4ZTY1LCAweDgxMGMsIDB4MjEwMCwgMHg5MzE4LCAweDgwMDMsIDB4MjIyOCwgMHgyMDIxLCAweDAwNzgsCi0JMHg5NDAyLCAweDk1MzIsIDB4MDIwOCwgMHgyMDI4LCAweDI1MDAsIDB4ODAwNCwgMHgyMGE4LCAweDIzYTAsCi0JMHhhMDAxLCAweGEwMDEsIDB4NDAwNSwgMHgyNTA4LCAweDA4MGMsIDB4OGU2ZSwgMHgyMTMwLCAweDcwMTQsCi0JMHg5NjAwLCAweDcwMTYsIDB4MjYwMCwgMHg3MTFjLCAweDkxMDIsIDB4NzAxZSwgMHg3MDA0LCAweDk2MDAsCi0JMHgyMDA4LCAweDkwODIsIDB4MDAwYSwgMHgxMTkwLCAweDcwMDAsIDB4MjA0OCwgMHhhODAwLCAweDkwMDUsCi0JMHgxMTQ4LCAweDIwMDksIDB4MDAwMSwgMHgwMDI2LCAweDA4MGMsIDB4OGQ1YywgMHgwMDJlLCAweDcwMDAsCi0JMHgyMDQ4LCAweGE4MDAsIDB4NzAwMiwgMHg3MDA3LCAweDAwMDAsIDB4MDAwOCwgMHg3MTA2LCAweDI1MDAsCi0JMHg5MjEyLCAweDE5MDQsIDB4OGQ5YiwgMHgwMTJlLCAweDAwZWUsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsCi0JMHgwMDllLCAweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHg5NTgwLCAweDhmMmIsIDB4MjAwNSwgMHg5MDc1LCAweDA5MGMsIDB4MGRjNSwgMHgwODBjLCAweDhlNDAsCi0JMHgwMTJlLCAweDk1ODAsIDB4OGYyNywgMHgyMDA1LCAweDkwNzUsIDB4MDkwYywgMHgwZGM1LCAweDAxNTYsCi0JMHgwMTM2LCAweDAxYzYsIDB4MDE0NiwgMHgwMWQ2LCAweDgzMWYsIDB4ODMxZSwgMHg4MzFlLCAweDkzODQsCi0JMHgwMDNmLCAweDIwZTAsIDB4OTM4NCwgMHhmZmMwLCAweDkxMDAsIDB4MjA5OCwgMHhhODYwLCAweDIwZTgsCi0JMHhhOTVjLCAweDJjMDUsIDB4OTEwMCwgMHgyMGEwLCAweDIwYTksIDB4MDAwMiwgMHg0MDAzLCAweDJlMGMsCi0JMHgyZDAwLCAweDAwMDIsIDB4OGUyYSwgMHg4ZTJhLCAweDhlMmMsIDB4OGUyYSwgMHg4ZTJjLCAweDhlMmEsCi0JMHg4ZTJhLCAweDhlMmEsIDB4OGUyYSwgMHg4ZTJhLCAweDhlMzIsIDB4OGUyYSwgMHg4ZTMyLCAweDhlMmEsCi0JMHg4ZTJhLCAweDhlMmEsIDB4MDgwYywgMHgwZGM1LCAweDQxMDQsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDIsCi0JMHg0MDAzLCAweDAwMjgsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDMsIDB4NDEwNCwgMHg0MDAzLCAweDAxZGUsCi0JMHgwMTRlLCAweDAxY2UsIDB4MDEzZSwgMHgwMTVlLCAweDAwZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsCi0JMHgwMDk2LCAweDcwMTQsIDB4ODAwMSwgMHg3MDE2LCAweDcxMGMsIDB4MjExMCwgMHgwMGYxLCAweDgxMGMsCi0JMHg5MTg4LCAweDAwMDMsIDB4NzMwOCwgMHg4MjEwLCAweDkyODIsIDB4MDAwYSwgMHgxMTk4LCAweDcwMDgsCi0JMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwgMHgwMTU4LCAweDAwMDYsIDB4MDgwYywgMHg4ZWY3LCAweDAwOWUsCi0JMHhhODA3LCAweDAwMDAsIDB4MjkwMCwgMHg3MDBhLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweDcwMGYsCi0JMHgwMDAwLCAweDAwMDgsIDB4NzIwZSwgMHgwMDllLCAweDAwMDUsIDB4MDAwNiwgMHg4MTBiLCAweDgxMGIsCi0JMHgyMTAwLCAweDgxMGIsIDB4OTEwMCwgMHgyMDA4LCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMjYsCi0JMHgyMTAwLCAweDkwMDUsIDB4MDE1OCwgMHg5MDkyLCAweDAwMGMsIDB4MDI0MCwgMHg5MDBlLCAweDgxMDgsCi0JMHg5MDgyLCAweDAwMGMsIDB4MWRlMCwgMHgwMDJlLCAweDAwMGUsIDB4MDAwNSwgMHg5MDBlLCAweDBjZDgsCi0JMHgyZDAwLCAweDkwYjgsIDB4MDAwOCwgMHgyMDMxLCAweDhlYjEsIDB4OTAxZSwgMHg2ODA4LCAweDkwMDUsCi0JMHgwMTA4LCAweDgzMTgsIDB4NjkwYywgMHg5MTBhLCAweDAyNDgsIDB4MDE0MCwgMHg4MzE4LCAweDY4MTAsCi0JMHg5MTEyLCAweDAyMjAsIDB4MDExOCwgMHg4MzE4LCAweDIyMDgsIDB4MGNkMCwgMHgyMzNhLCAweDY4MDQsCi0JMHhkMDg0LCAweDIzMDAsIDB4MjAyMSwgMHgwMDAxLCAweDExNTAsIDB4OTA4MiwgMHgwMDAzLCAweDA5NjcsCi0JMHgwYTY3LCAweDg0MjAsIDB4OTA4MiwgMHgwMDA3LCAweDA5NjcsIDB4MGE2NywgMHgwY2QwLCAweDkwODIsCi0JMHgwMDAyLCAweDA5NjcsIDB4MGE2NywgMHg4NDIwLCAweDkwODIsIDB4MDAwNSwgMHgwOTY3LCAweDBhNjcsCi0JMHgwY2QwLCAweDZjMWEsIDB4MDAwNSwgMHgwMDk2LCAweDAwNDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyYjAwLCAweDkwODAsIDB4OGYyZiwgMHgyMDA1LCAweDkwMDUsIDB4MDkwYywgMHgwZGM1LCAweDIwMDQsCi0JMHg5MGEwLCAweDAwMGEsIDB4MDgwYywgMHgxMDI3LCAweDAxZDAsIDB4MjkwMCwgMHg3MDI2LCAweGE4MDMsCi0JMHgwMDAwLCAweGE4MDcsIDB4MDAwMCwgMHgwODBjLCAweDEwMjcsIDB4MDE4OCwgMHg3MDI0LCAweGE4MDIsCi0JMHhhODA3LCAweDAwMDAsIDB4MjkwMCwgMHg3MDI2LCAweDk0YTIsIDB4MDAwYSwgMHgwMTEwLCAweDAyMDgsCi0JMHgwYzkwLCAweDkwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwNGUsIDB4MDA5ZSwgMHgwMDA1LCAweDcwMjQsCi0JMHg5MDA1LCAweDBkYzgsIDB4MjA0OCwgMHhhYzAwLCAweDA4MGMsIDB4MTA0MCwgMHgyNDAwLCAweDBjYzAsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg3MDI0LCAweDIwNDgsIDB4OTAwNSwgMHgwMTMwLCAweGE4MDAsCi0JMHg3MDI2LCAweGE4MDMsIDB4MDAwMCwgMHhhODA3LCAweDAwMDAsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4NzAyNCwgMHhhODAyLCAweDI5MDAsIDB4NzAyNiwgMHgwMTJlLCAweDAwMDUsCi0JMHgwMDk2LCAweDllODAsIDB4MDAwOSwgMHgyMDA0LCAweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4MDAsCi0JMHgwMDA2LCAweDA4MGMsIDB4MTA0MCwgMHgwMDBlLCAweDBjYjgsIDB4MDA5ZSwgMHgwMDA1LCAweDAwOTYsCi0JMHg3MDA4LCAweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4MDAsIDB4MDAwNiwgMHgwODBjLCAweDEwNDAsCi0JMHgwMDBlLCAweDBjYjgsIDB4OTAwNiwgMHg3MDAyLCAweDcwMGEsIDB4NzAwNiwgMHg3MDBlLCAweDcwMWEsCi0JMHg3MDFlLCAweDcwMjIsIDB4NzAyYSwgMHg3MDI2LCAweDcwMmUsIDB4MDA5ZSwgMHgwMDA1LCAweDFhNjcsCi0JMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxOTMxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDE4ODgsCi0JMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxODc3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwZTYsCi0JMHgwMGM2LCAweDAwYjYsIDB4MDBhNiwgMHhhOGE4LCAweDIwNDAsIDB4MjA3MSwgMHgxODc3LCAweDA4MGMsCi0JMHg5MDUzLCAweGEwNjcsIDB4MDAyMywgMHg2MDEwLCAweDkwNWQsIDB4MDkwNCwgMHg5MDI4LCAweGI4MTQsCi0JMHhhMDZlLCAweGI5MTAsIDB4YTE3MiwgMHhiOWEwLCAweGExNzYsIDB4MjAwMSwgMHgwMDAzLCAweGEwN2UsCi0JMHhhODM0LCAweGEwODIsIDB4YTA3YiwgMHgwMDAwLCAweGE4OTgsIDB4OTAwNSwgMHgwMTE4LCAweGEwNzgsCi0JMHhjMDg1LCAweGEwN2EsIDB4Mjg1OCwgMHgyMDMxLCAweDAwMTgsIDB4YTA2OCwgMHg5MDhhLCAweDAwMTksCi0JMHgxYTBjLCAweDBkYzUsIDB4MjAyMCwgMHgyMDUwLCAweDI5NDAsIDB4YTg2NCwgMHg5MGJjLCAweDAwZmYsCi0JMHg5MDhjLCAweDAwMGYsIDB4OTFlMCwgMHgyMGM3LCAweDJjNjUsIDB4OTc4NiwgMHgwMDI0LCAweDJjMDUsCi0JMHgxNTkwLCAweDkwOGEsIDB4MDAzNiwgMHgxYTBjLCAweDBkYzUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsCi0JMHg4ZjkzLCAweDhmOTMsIDB4OGY5NSwgMHg4ZjkzLCAweDhmOTMsIDB4OGY5MywgMHg4Zjk3LCAweDhmOTMsCi0JMHg4ZjkzLCAweDhmOTMsIDB4OGY5OSwgMHg4ZjkzLCAweDhmOTMsIDB4OGY5MywgMHg4ZjliLCAweDhmOTMsCi0JMHg4ZjkzLCAweDhmOTMsIDB4OGY5ZCwgMHg4ZjkzLCAweDhmOTMsIDB4OGY5MywgMHg4ZjlmLCAweDhmOTMsCi0JMHg4ZjkzLCAweDhmOTMsIDB4OGZhMSwgMHgwODBjLCAweDBkYzUsIDB4YTE4MCwgMHgwNGI4LCAweGExOTAsCi0JMHgwNGE4LCAweGExYTAsIDB4MDQ5OCwgMHhhMWIwLCAweDA0ODgsIDB4YTFjMCwgMHgwNDc4LCAweGExZDAsCi0JMHgwNDY4LCAweGExZTAsIDB4MDQ1OCwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsCi0JMHgwMDFiLCAweDAwMDIsIDB4OGZjNSwgMHg4ZmMzLCAweDhmYzMsIDB4OGZjMywgMHg4ZmMzLCAweDhmYzMsCi0JMHg4ZmM3LCAweDhmYzMsIDB4OGZjMywgMHg4ZmMzLCAweDhmYzMsIDB4OGZjMywgMHg4ZmM5LCAweDhmYzMsCi0JMHg4ZmMzLCAweDhmYzMsIDB4OGZjMywgMHg4ZmMzLCAweDhmY2IsIDB4OGZjMywgMHg4ZmMzLCAweDhmYzMsCi0JMHg4ZmMzLCAweDhmYzMsIDB4OGZjZCwgMHgwODBjLCAweDBkYzUsIDB4YTE4MCwgMHgwMDM4LCAweGExOTgsCi0JMHgwMDI4LCAweGExYjAsIDB4MDAxOCwgMHhhMWM4LCAweDAwMDgsIDB4YTFlMCwgMHgyNjAwLCAweDAwMDIsCi0JMHg4ZmU5LCAweDhmZWIsIDB4OGZlZCwgMHg4ZmVmLCAweDhmZjEsIDB4OGZmMywgMHg4ZmY1LCAweDhmZjcsCi0JMHg4ZmY5LCAweDhmZmIsIDB4OGZmZCwgMHg4ZmZmLCAweDkwMDEsIDB4OTAwMywgMHg5MDA1LCAweDkwMDcsCi0JMHg5MDA5LCAweDkwMGIsIDB4OTAwZCwgMHg5MDBmLCAweDkwMTEsIDB4OTAxMywgMHg5MDE1LCAweDkwMTcsCi0JMHg5MDE5LCAweDA4MGMsIDB4MGRjNSwgMHhiOWUyLCAweDA0NjgsIDB4YjlkZSwgMHgwNDU4LCAweGI5ZGEsCi0JMHgwNDQ4LCAweGI5ZDYsIDB4MDQzOCwgMHhiOWQyLCAweDA0MjgsIDB4YjljZSwgMHgwNDE4LCAweGI5Y2EsCi0JMHgwNDA4LCAweGI5YzYsIDB4MDBmOCwgMHhiOWMyLCAweDAwZTgsIDB4YjliZSwgMHgwMGQ4LCAweGI5YmEsCi0JMHgwMGM4LCAweGI5YjYsIDB4MDBiOCwgMHhiOWIyLCAweDAwYTgsIDB4YjlhZSwgMHgwMDk4LCAweGI5YWEsCi0JMHgwMDg4LCAweGI5YTYsIDB4MDA3OCwgMHhiOWEyLCAweDAwNjgsIDB4Yjk5ZSwgMHgwMDU4LCAweGI5OWEsCi0JMHgwMDQ4LCAweGI5OTYsIDB4MDAzOCwgMHhiOTkyLCAweDAwMjgsIDB4Yjk4ZSwgMHgwMDE4LCAweGI5OGEsCi0JMHgwMDA4LCAweGI5ODYsIDB4ODYzMSwgMHg4NDIxLCAweDAxMzAsIDB4MDgwYywgMHgyMDdmLCAweDA5MGMsCi0JMHgwZGM1LCAweDA4MDQsIDB4OGY2ZCwgMHgwMGFlLCAweDAwYmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsCi0JMHhhODZjLCAweGEwNmUsIDB4YTg3MCwgMHhhMDcyLCAweGEwNzcsIDB4MDBmZiwgMHg5MDA2LCAweDA4MDQsCi0JMHg4ZjRmLCAweDAwMDYsIDB4MDAxNiwgMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwgMHhiODEwLCAweDkwMDUsCi0JMHgwMWIwLCAweDIwMDEsIDB4MTkyNSwgMHgyMDA0LCAweDkwMDUsIDB4MDE4OCwgMHgyMDAxLCAweDE4MDAsCi0JMHgyMDA0LCAweDkwODYsIDB4MDAwMywgMHgxMTU4LCAweDAwMzYsIDB4MDA0NiwgMHhiYmEwLCAweDIwMjEsCi0JMHgwMDA0LCAweDIwMTEsIDB4ODAxNCwgMHgwODBjLCAweDRjNDQsIDB4MDA0ZSwgMHgwMDNlLCAweDAwYmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHg5MDE2LCAweDcxMGMsIDB4YTgzNCwgMHg5MTBhLCAweGE5MzYsCi0JMHg3MDA4LCAweDkwMDUsIDB4MDEyMCwgMHg4MjEwLCAweDkxMGEsIDB4MDIzMCwgMHgwMTI4LCAweDcwMTAsCi0JMHg4MjEwLCAweDkxMGEsIDB4MDIwOCwgMHgxZGUwLCAweGFhOGEsIDB4YTI2YSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMGQ2LCAweDAwMzYsIDB4MjA3OSwgMHgwMzAwLCAweDc4MWIsIDB4MDIwMCwgMHg3ODE4LCAweGQwOTQsCi0JMHgxZGQ4LCAweDc4MWIsIDB4MDIwMiwgMHhhMDAxLCAweGEwMDEsIDB4NzgxOCwgMHhkMDk0LCAweDFkYTAsCi0JMHhiOGFjLCAweDkwNmQsIDB4MDE5OCwgMHgyMDc5LCAweDAwMDAsIDB4OWMxZSwgMHgxMTE4LCAweDY4MGMsCi0JMHhiOGFlLCAweDAwNTAsIDB4OWMwNiwgMHgwMTMwLCAweDJkNzgsIDB4NjgwYywgMHg5MDZkLCAweDFkZDAsCi0JMHgwODBjLCAweDBkYzUsIDB4NmIwYywgMHg3YjBlLCAweDYwMGYsIDB4MDAwMCwgMHgyMDc5LCAweDAzMDAsCi0JMHg3ODFiLCAweDAyMDAsIDB4MDAzZSwgMHgwMGRlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZDYsCi0JMHgwMDk2LCAweDAwYzYsIDB4MDAzNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMTU2LCAweDIwYTksCi0JMHgwMWZmLCAweDIwNzEsIDB4MDMwMCwgMHg3MDFiLCAweDAyMDAsIDB4NzAxOCwgMHhkMDk0LCAweDAxMTAsCi0JMHgxZjA0LCAweDkwYTMsIDB4NzAxYiwgMHgwMjAyLCAweGEwMDEsIDB4YTAwMSwgMHg3MDE4LCAweGQwOTQsCi0JMHgxZDkwLCAweGI4YWMsIDB4OTA2NSwgMHgwMWYwLCAweDYwMGMsIDB4YjhhZSwgMHg2MDI0LCAweGMwOGQsCi0JMHg2MDI2LCAweDYwMDMsIDB4MDAwNCwgMHg2MDFiLCAweDAwMDAsIDB4NjAxMywgMHgwMDAwLCAweDYwMWYsCi0JMHgwMTAxLCAweDYwMTQsIDB4OTA0ZCwgMHgwOTBjLCAweDBkYzUsIDB4YTg4YiwgMHgwMDAwLCAweGE4YTgsCi0JMHhhOGFiLCAweDAwMDAsIDB4OTA0ZCwgMHgwOTBjLCAweDBkYzUsIDB4MDgwYywgMHgxMDQwLCAweDA4MGMsCi0JMHg4YzYxLCAweDA4ZjgsIDB4MjA3MSwgMHgwMzAwLCAweDcwMWIsIDB4MDIwMCwgMHgwMTVlLCAweDAxMmUsCi0JMHgwMDNlLCAweDAwY2UsIDB4MDA5ZSwgMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwYjYsCi0JMHgwMDE2LCAweDAwMDYsIDB4MDE1NiwgMHgwODBjLCAweDI4NzMsIDB4MDE1ZSwgMHgxMWIwLCAweDA4MGMsCi0JMHg2NmI5LCAweDE5MGMsIDB4MGRjNSwgMHgwMDBlLCAweDAwMWUsIDB4YjkxMiwgMHhiODE2LCAweDA4MGMsCi0JMHhiMjdkLCAweDAxNDAsIDB4MmIwMCwgMHg2MDEyLCAweDYwMjMsIDB4MDAwMSwgMHgyMDA5LCAweDAwMDEsCi0JMHgwODBjLCAweGIzNTIsIDB4MDBiZSwgMHgwMGNlLCAweDAwMDUsIDB4MDAwZSwgMHgwMDFlLCAweDBjZDAsCi0JMHgwMDY2LCAweDYwMDAsIDB4OTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MGRjNSwgMHgwMDEzLCAweDAwNmUsCi0JMHgwMDA1LCAweDkxMTksIDB4OTExOSwgMHg5MTE5LCAweDkxMWIsIDB4OTE2YywgMHg5MTE5LCAweDkxMTksCi0JMHg5MTE5LCAweDkxZTYsIDB4OTExOSwgMHg5MjIzLCAweDkxMTksIDB4OTExOSwgMHg5MTE5LCAweDkxMTksCi0JMHg5MTE5LCAweDA4MGMsIDB4MGRjNSwgMHg5MTgyLCAweDAwNDAsIDB4MDAwMiwgMHg5MTJlLCAweDkxMmUsCi0JMHg5MTJlLCAweDkxMmUsIDB4OTEyZSwgMHg5MTJlLCAweDkxMmUsIDB4OTEyZSwgMHg5MTJlLCAweDkxMzAsCi0JMHg5MTQ1LCAweDkxMmUsIDB4OTEyZSwgMHg5MTJlLCAweDkxMmUsIDB4OTE1OCwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDk2LCAweDA4MGMsIDB4OWE2MSwgMHgwODBjLCAweDliZDMsIDB4NjExNCwgMHgyMTQ4LCAweGE4N2IsCi0JMHgwMDAwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YmIsIDB4MDUwMCwgMHgwMGJlLCAweDA4MGMsCi0JMHg2Y2EzLCAweDA4MGMsIDB4YjJkMywgMHgwMDllLCAweDAwMDUsIDB4MDgwYywgMHg5YTYxLCAweDAwZDYsCi0JMHg2MTE0LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTMwLCAweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweDA4MGMsCi0JMHg2ZTlmLCAweDAwOWUsIDB4MDBkZSwgMHgwODBjLCAweGIyZDMsIDB4MDgwYywgMHg5YmQzLCAweDAwMDUsCi0JMHgwODBjLCAweDlhNjEsIDB4MDgwYywgMHgzMjUwLCAweDYxMTQsIDB4MDA5NiwgMHgyMTQ4LCAweDA4MGMsCi0JMHhkMGQ4LCAweDAxMjAsIDB4YTg3YiwgMHgwMDI5LCAweDA4MGMsIDB4NmU5ZiwgMHgwMDllLCAweDA4MGMsCi0JMHhiMmQzLCAweDA4MGMsIDB4OWJkMywgMHgwMDA1LCAweDYwMWIsIDB4MDAwMCwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMDk2LCAweDAwMDIsIDB4OTE4NywgMHg5MTg3LCAweDkxODcsIDB4OTE4NywgMHg5MTg3LCAweDkxODcsCi0JMHg5MTg3LCAweDkxODcsIDB4OTE4OSwgMHg5MTg3LCAweDkxODcsIDB4OTE4NywgMHg5MWUyLCAweDkxODcsCi0JMHg5MTg3LCAweDkxODcsIDB4OTE4NywgMHg5MTg3LCAweDkxODcsIDB4OTE5MCwgMHg5MTg3LCAweDA4MGMsCi0JMHgwZGM1LCAweDYxMTQsIDB4MjE0OCwgMHhhOTM4LCAweDkxOGUsIDB4ZmZmZiwgMHgwOTA0LCAweDkxZTIsCi0JMHg2MDI0LCAweGQwOGMsIDB4MTVkOCwgMHgwODBjLCAweDhkMTcsIDB4MDVlMCwgMHgwMGU2LCAweDYxMTQsCi0JMHgyMTQ4LCAweDA4MGMsIDB4OGYzNywgMHgwMDk2LCAweGE4YTgsIDB4MjA0OCwgMHgwODBjLCAweDZjM2IsCi0JMHgwMDllLCAweGE4YWIsIDB4MDAwMCwgMHg2MDEwLCAweDkwMDUsIDB4MDEyOCwgMHgwMGI2LCAweDIwNTgsCi0JMHgwODBjLCAweDkwNjcsIDB4MDBiZSwgMHhhZTg4LCAweDAwYjYsIDB4MjA1OSwgMHgwMDAwLCAweDA4MGMsCi0JMHg4YzZhLCAweDAwYmUsIDB4MDFlMCwgMHgyMDcxLCAweDE5M2QsIDB4MDgwYywgMHg4Y2IxLCAweDAxYjgsCi0JMHg5MDg2LCAweDAwMDEsIDB4MTEyOCwgMHgyMDAxLCAweDE5NDcsIDB4MjAwNCwgMHg5MDA1LCAweDExNzgsCi0JMHgwMDk2LCAweDA4MGMsIDB4MTAwZSwgMHgyOTAwLCAweDAwOWUsIDB4MDE0OCwgMHhhOGFhLCAweDAwZjYsCi0JMHgyYzc4LCAweDA4MGMsIDB4OGMyOCwgMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwgMHgwMDA1LCAweDA4MGMsCi0JMHg4YzYxLCAweDBjZDAsIDB4MDgwYywgMHg4ZDFjLCAweDExNjAsIDB4NjAxMCwgMHg5MDA1LCAweDAxMzAsCi0JMHgyMDU4LCAweGI4YWMsIDB4OTAwNSwgMHgxOTBjLCAweDBkYzUsIDB4NjAxMiwgMHgyYzAwLCAweDA4MGMsCi0JMHg4Y2UyLCAweDAwMDUsIDB4MDgwYywgMHg5MjkwLCAweDAwOWUsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMDk2LCAweDAwMDIsIDB4OTFmYSwgMHg5MWZhLCAweDkxZmEsIDB4OTFmYywgMHg5MWZhLCAweDkxZmEsCi0JMHg5MWZhLCAweDkyMjEsIDB4OTFmYSwgMHg5MWZhLCAweDkxZmEsIDB4OTFmYSwgMHg5MWZhLCAweDkxZmEsCi0JMHg5MWZhLCAweDkxZmEsIDB4MDgwYywgMHgwZGM1LCAweDYwMDMsIDB4MDAwMywgMHg2MTA2LCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4YWMsIDB4YTg0NiwgMHhhOGIwLCAweGE4NGEsIDB4YTgzNywgMHgwMDAwLCAweGE4M2IsCi0JMHgwMDAwLCAweGE4ODQsIDB4OTA5MiwgMHgxOTlhLCAweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsCi0JMHg4MDEzLCAweDgyMTMsIDB4OTIxMCwgMHg2MjFhLCAweDJjMTAsIDB4MDgwYywgMHgxYmUwLCAweDA4MGMsCi0JMHg5NTY0LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OWJkMywgMHgwMTJlLCAweDAwOWUsCi0JMHgwMDA1LCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDlhNjEsIDB4MDgwYywgMHg5YmQzLCAweDYxMTQsCi0JMHgyMTQ4LCAweGE4N2IsIDB4MDAwMCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGJiLCAweDA1MDAsCi0JMHgwMGJlLCAweDA4MGMsIDB4NmU5ZiwgMHgwODBjLCAweGIyZDMsIDB4MDA5ZSwgMHgwMDA1LCAweDYwMDAsCi0JMHg5MDhhLCAweDAwMTAsIDB4MWEwYywgMHgwZGM1LCAweDAwOTYsIDB4MDAxMywgMHgwMDllLCAweDAwMDUsCi0JMHg5MjUwLCAweDkyNTAsIDB4OTI1MCwgMHg5MjUyLCAweDkyNjMsIDB4OTI1MCwgMHg5MjUwLCAweDkyNTAsCi0JMHg5MjUwLCAweDkyNTAsIDB4OTI1MCwgMHg5MjUwLCAweDkyNTAsIDB4OTI1MCwgMHg5MjUwLCAweDkyNTAsCi0JMHgwODBjLCAweDBkYzUsIDB4MDgwYywgMHhhYzJiLCAweDYxMTQsIDB4MjE0OCwgMHhhODdiLCAweDAwMDYsCi0JMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGJiLCAweDA1MDAsIDB4MDBiZSwgMHgwODBjLCAweDZlOWYsCi0JMHgwODBjLCAweGIyZDMsIDB4MDAwNSwgMHgwNDYxLCAweDAwMDUsIDB4NjAwMCwgMHg5MDhhLCAweDAwMTAsCi0JMHgxYTBjLCAweDBkYzUsIDB4MDA5NiwgMHgwMDEzLCAweDAwOWUsIDB4MDAwNSwgMHg5MjdlLCAweDkyN2UsCi0JMHg5MjdlLCAweDkyODAsIDB4OTI5MCwgMHg5MjdlLCAweDkyN2UsIDB4OTI3ZSwgMHg5MjdlLCAweDkyN2UsCi0JMHg5MjdlLCAweDkyN2UsIDB4OTI3ZSwgMHg5MjdlLCAweDkyN2UsIDB4OTI3ZSwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDM2LCAweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDcwM2MsIDB4OWMwNiwgMHgxMTIwLCAweDIwMTksCi0JMHgwMDAwLCAweDA4MGMsIDB4YWE0OSwgMHgwODBjLCAweGFjMmIsIDB4MDBlZSwgMHgwMDNlLCAweDAwMDUsCi0JMHg2MDI0LCAweGQwOGMsIDB4MTFmMCwgMHgwMGY2LCAweDAwZTYsIDB4NjAxYiwgMHgwMDAwLCAweDYwMTQsCi0JMHgyMDQ4LCAweDYwMTAsIDB4OTAwNSwgMHgwMTI4LCAweDAwYjYsIDB4MjA1OCwgMHgwODBjLCAweDkwNjcsCi0JMHgwMGJlLCAweDIwNzEsIDB4MTkzZCwgMHgwODBjLCAweDhjYjEsIDB4MDE2MCwgMHgyMDAxLCAweDE4N2YsCi0JMHgyMDA0LCAweGE4OGEsIDB4MjAzMSwgMHgwMDAwLCAweDJjNzgsIDB4MDgwYywgMHg4YzI4LCAweDAwZWUsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDA5NiwgMHhhODhiLCAweDAwMDAsIDB4YThhOCwgMHgyMDQ4LCAweDA4MGMsCi0JMHgxMDQwLCAweDAwOWUsIDB4YThhYiwgMHgwMDAwLCAweDA4MGMsIDB4OGM2MSwgMHgwYzgwLCAweDIwMDEsCi0JMHgxOTI1LCAweDIwMGMsIDB4OTE4ZSwgMHgwMDAwLCAweDE5MGMsIDB4OGQxNywgMHgwNWM4LCAweDAwZTYsCi0JMHgyMDcxLCAweDE5MjQsIDB4NzExMCwgMHhjMWM1LCAweDcxMTIsIDB4MDgwYywgMHg4ZDIxLCAweDAwZjYsCi0JMHgwMGM2LCAweDIwNzEsIDB4MTAwMCwgMHgwMGI2LCAweDJlMDQsIDB4OTA1ZCwgMHgwMTM4LCAweGI4YWMsCi0JMHg5MDY1LCAweDAxMjAsIDB4MDgwYywgMHg4Y2Y3LCAweDA5MGMsIDB4OTA5NiwgMHg4ZTcwLCAweDllODYsCi0JMHgxODAwLCAweDFkOTAsIDB4MDBiZSwgMHgwMGQ2LCAweDAwOTYsIDB4MDA0NiwgMHgyMDYxLCAweDFjZDAsCi0JMHgyMDAxLCAweDE4MWEsIDB4MjAyNCwgMHg2MDIwLCAweDkwODYsIDB4MDAwMCwgMHgxMTkxLCAweDljZTAsCi0JMHgwMDE4LCAweDI0MDAsIDB4OWMwNiwgMHgxZGI4LCAweDAwNGUsIDB4MDA5ZSwgMHgwMGRlLCAweDAwZDEsCi0JMHgwMGNlLCAweDAwZmUsIDB4MjA3MSwgMHgxOTI0LCAweDcxMTAsIDB4YzFjNCwgMHg3MTEyLCAweDAwZWUsCi0JMHgwMDA1LCAweDYwMjAsIDB4OTA4NiwgMHgwMDA5LCAweDExNjAsIDB4NjEwMCwgMHg5MTg2LCAweDAwMDQsCi0JMHgxMTM4LCAweDYxMTAsIDB4ODFmZiwgMHgxOTBjLCAweDBkYzUsIDB4MmMwMCwgMHgwODBjLCAweDhjZTIsCi0JMHg5MDA2LCAweDAwMDUsIDB4MjA3MSwgMHgxOTNmLCAweDIwNzMsIDB4MDAwMCwgMHg4ZTcwLCAweDllODYsCi0JMHgxOTQ3LCAweDFkZDAsIDB4MjA3MSwgMHgxOTNkLCAweDcwMDYsIDB4NzAwMiwgMHgyMDAxLCAweDE5MzAsCi0JMHgyMDY0LCAweDhjZmYsIDB4MDEzMCwgMHg2MTIwLCAweDkxOGUsIDB4MDAwMCwgMHgxOTBjLCAweDBkYzUsCi0JMHgyMTAyLCAweDIwMDEsIDB4MTg4YSwgMHgyMDBjLCAweDgxZmYsIDB4MDE0OCwgMHgwMDk2LCAweDIxNDgsCi0JMHgwODBjLCAweDEwNDAsIDB4MDA5ZSwgMHgyMDAxLCAweDE4OGEsIDB4MjAwMywgMHgwMDAwLCAweDIwNzEsCi0JMHgxOTMxLCAweDA4MGMsIDB4OGYwMCwgMHgwODA0LCAweDhmMGYsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsCi0JMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgxODdhLCAweDAwMDAsCi0JMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwMDM2LCAweDAwNDYsIDB4MjBhOSwgMHgwMDEwLCAweDkwMDYsIDB4ODAwNCwgMHgyMDE5LCAweDAxMDAsCi0JMHgyMzFjLCAweDkzYTYsIDB4MDAwOCwgMHgxMTE4LCAweDgwODYsIDB4ODE4ZSwgMHgwMDIwLCAweDgwZjYsCi0JMHgzZTAwLCAweDgxZjYsIDB4M2UwOCwgMHgxMjA4LCAweDkyMDAsIDB4MWYwNCwgMHg5MzU2LCAweDkzYTYsCi0JMHgwMDA4LCAweDExMTgsIDB4ODA4NiwgMHg4MThlLCAweDAwMjAsIDB4ODBmNiwgMHgzZTAwLCAweDgxZjYsCi0JMHgzZTA4LCAweDAwNGUsIDB4MDAzZSwgMHgwMTJlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwMDc2LCAweDAxNTYsIDB4MjBhOSwgMHgwMDEwLCAweDkwMDUsIDB4MDUxMCwgMHg5MTFhLCAweDE2MDAsCi0JMHg4MjEzLCAweDIwMzksIDB4MDEwMCwgMHgyNzNjLCAweDk3YmUsIDB4MDAwOCwgMHgxMTEwLCAweDgxOGQsCi0JMHgwMDEwLCAweDgxZjUsIDB4M2UwOCwgMHgwMjI4LCAweDkxMWEsIDB4MTIyMCwgMHgxZjA0LCAweDkzODAsCi0JMHgwMDI4LCAweDkxMWEsIDB4MjMwOCwgMHg4MjEwLCAweDFmMDQsIDB4OTM4MCwgMHgwMDA2LCAweDMyMDAsCi0JMHg5MDg0LCAweGVmZmYsIDB4MjA4MCwgMHgwMDBlLCAweDAxNWUsIDB4MDA3ZSwgMHgwMTJlLCAweDAwMDUsCi0JMHgwMDA2LCAweDMyMDAsIDB4OTA4NSwgMHgxMDAwLCAweDBjYTgsIDB4MDEyNiwgMHgyMDkxLCAweDI4MDAsCi0JMHgyMDc5LCAweDE5ZTgsIDB4MDEyZSwgMHgwMGQ2LCAweDIwNjksIDB4MTllOCwgMHg2ODAzLCAweDAwMDUsCi0JMHgwMTU2LCAweDAxNDYsIDB4MDFkNiwgMHgyMGU5LCAweDAwMDAsIDB4MjA2OSwgMHgwMjAwLCAweDA4MGMsCi0JMHhhZjhlLCAweDA0MDEsIDB4MDgwYywgMHhhZjc5LCAweDAwZTksIDB4MDgwYywgMHhhZjdjLCAweDAwZDEsCi0JMHgwODBjLCAweGFmN2YsIDB4MDBiOSwgMHgwODBjLCAweGFmODIsIDB4MDBhMSwgMHgwODBjLCAweGFmODUsCi0JMHgwMDg5LCAweDA4MGMsIDB4YWY4OCwgMHgwMDcxLCAweDA4MGMsIDB4YWY4YiwgMHgwMDU5LCAweDAxZGUsCi0JMHgwMTRlLCAweDAxNWUsIDB4MjA2OSwgMHgwMDA0LCAweDJkMDQsIDB4OTA4NSwgMHg4MDAxLCAweDIwNmEsCi0JMHgwMGRlLCAweDAwMDUsIDB4MjBhOSwgMHgwMDIwLCAweDIwYTEsIDB4MDI0MCwgMHgyMDAxLCAweDAwMDAsCi0JMHg0MDA0LCAweDAwMDUsIDB4MDBjNiwgMHg2MDI3LCAweDAwMDEsIDB4NzgwNCwgMHg5MDg0LCAweDAwMDcsCi0JMHgwMDAyLCAweDkzZjMsIDB4OTQxNywgMHg5NDU4LCAweDkzZjksIDB4OTQxNywgMHg5M2YzLCAweDkzZjEsCi0JMHg5M2YxLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDg4YzMsIDB4MDgwYywgMHg5YWIxLCAweDAwY2UsCi0JMHgwMDA1LCAweDYyYzAsIDB4ODJmZiwgMHgxMTEwLCAweDAwY2UsIDB4MDAwNSwgMHgyMDExLCAweDVmOTcsCi0JMHgwODBjLCAweDg4M2QsIDB4NzgyOCwgMHg5MDkyLCAweDAwYzgsIDB4MTIyOCwgMHg4MDAwLCAweDc4MmEsCi0JMHgwODBjLCAweDVmZDcsIDB4MGM4OCwgMHg2MmMwLCAweDA4MGMsIDB4YjBjYSwgMHgwODBjLCAweDVmOTcsCi0JMHg3ODA3LCAweDAwMDMsIDB4NzgyNywgMHgwMDAwLCAweDc4MmIsIDB4MDAwMCwgMHgwYzI4LCAweDA4MGMsCi0JMHg4OGMzLCAweDYyMjAsIDB4ZDJhNCwgMHgwMTcwLCAweGQyY2MsIDB4MDE2MCwgMHg3ODJiLCAweDAwMDAsCi0JMHg3ODI0LCAweDkwNjUsIDB4MDkwYywgMHgwZGM1LCAweDIwMDksIDB4MDAxMywgMHgwODBjLCAweGIzNTIsCi0JMHgwMGNlLCAweDAwMDUsIDB4MDBjNiwgMHg3ODI0LCAweDkwNjUsIDB4MDkwYywgMHgwZGM1LCAweDc4MjgsCi0JMHg5MDkyLCAweGMzNTAsIDB4MTJjMCwgMHg4MDAwLCAweDc4MmEsIDB4MDBjZSwgMHgwODBjLCAweDJiY2UsCi0JMHgwMjc4LCAweDAwYzYsIDB4NzkyNCwgMHgyMTYwLCAweDYwMTAsIDB4OTA2ZCwgMHgwOTBjLCAweDBkYzUsCi0JMHg3ODA3LCAweDAwMDAsIDB4NzgyNywgMHgwMDAwLCAweDAwY2UsIDB4MDgwYywgMHg5YWIxLCAweDBjMDAsCi0JMHgwODBjLCAweGE2YzUsIDB4MDhlOCwgMHgyMDExLCAweDAxMzAsIDB4MjIxNCwgMHgwODBjLCAweGIwY2EsCi0JMHgwODBjLCAweGYwOTQsIDB4MjAwOSwgMHgwMDE0LCAweDA4MGMsIDB4YjM1MiwgMHgwMGNlLCAweDA4ODAsCi0JMHgyMDAxLCAweDFhMDQsIDB4MjAwMywgMHgwMDAwLCAweDYyYzAsIDB4ODJmZiwgMHgxMTYwLCAweDc4MmIsCi0JMHgwMDAwLCAweDc4MjQsIDB4OTA2NSwgMHgwOTBjLCAweDBkYzUsIDB4MjAwOSwgMHgwMDEzLCAweDA4MGMsCi0JMHhiM2E0LCAweDAwY2UsIDB4MDAwNSwgMHgwMGI2LCAweDAwYzYsIDB4MDBkNiwgMHg3ODI0LCAweDkwMDUsCi0JMHgwOTBjLCAweDBkYzUsIDB4NzgyOCwgMHg5MDkyLCAweGMzNTAsIDB4MTY0OCwgMHg4MDAwLCAweDc4MmEsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwODBjLCAweDJiY2UsIDB4MDJmMCwgMHgwMGI2LCAweDAwYzYsCi0JMHgwMGQ2LCAweDc4MWMsIDB4OTA1ZCwgMHgwOTBjLCAweDBkYzUsIDB4YjgwMCwgMHhjMGRjLCAweGI4MDIsCi0JMHg3OTI0LCAweDIxNjAsIDB4MDgwYywgMHhiMmQzLCAweGI5M2MsIDB4ODFmZiwgMHgwOTBjLCAweDBkYzUsCi0JMHg4MTA5LCAweGI5M2UsIDB4NzgwNywgMHgwMDAwLCAweDc4MjcsIDB4MDAwMCwgMHgwMGRlLCAweDAwY2UsCi0JMHgwMGJlLCAweDA4MGMsIDB4OWFiMSwgMHgwODY4LCAweDA4MGMsIDB4YTZjNSwgMHgwODUwLCAweDIwMTEsCi0JMHgwMTMwLCAweDIyMTQsIDB4MDgwYywgMHhiMGNhLCAweDA4MGMsIDB4ZjA5NCwgMHg3ODI0LCAweDkwNjUsCi0JMHgyMDA5LCAweDAwMTQsIDB4MDgwYywgMHhiMzUyLCAweDAwZGUsIDB4MDBjZSwgMHgwMGJlLCAweDA4MDQsCi0JMHg5NDY5LCAweDAwYzYsIDB4MjAwMSwgMHgwMDliLCAweDIwMDQsIDB4ZDBmYywgMHgxOTBjLCAweDFlZWIsCi0JMHg2MDI0LCAweDYwMjcsIDB4MDAwMiwgMHhkMGY0LCAweDE1YjgsIDB4NjJjOCwgMHg2MGM0LCAweDkyMDUsCi0JMHgxMTcwLCAweDc4M2MsIDB4OTA2NSwgMHgwMTMwLCAweDIwMDksIDB4MDA0OSwgMHgwODBjLCAweGIzNTIsCi0JMHgwMGNlLCAweDAwMDUsIDB4MjAxMSwgMHgxYTA3LCAweDIwMTMsIDB4MDAwMCwgMHgwY2M4LCAweDc5M2MsCi0JMHg4MWZmLCAweDBkYzAsIDB4Nzk0NCwgMHg5MTkyLCAweDc1MzAsIDB4MTYyOCwgMHg4MTA4LCAweDc5NDYsCi0JMHg3OTNjLCAweDkxODgsIDB4MDAwOCwgMHgyMTBjLCAweDkxOGUsIDB4MDAwNiwgMHgxMTM4LCAweDYwMTQsCi0JMHg5MDg0LCAweDE5ODQsIDB4OTA4NSwgMHgwMDEyLCAweDYwMTYsIDB4MGMxMCwgMHg3OTNjLCAweDkxODgsCi0JMHgwMDA4LCAweDIxMGMsIDB4OTE4ZSwgMHgwMDA5LCAweDBkOTAsIDB4NjAxNCwgMHg5MDg0LCAweDE5ODQsCi0JMHg5MDg1LCAweDAwMTYsIDB4NjAxNiwgMHgwOGEwLCAweDc5M2MsIDB4MjE2MCwgMHgyMDA5LCAweDAwNGEsCi0JMHgwODBjLCAweGIzNTIsIDB4MDg2OCwgMHg3ODQ4LCAweGMwODUsIDB4Nzg0YSwgMHgwODQ4LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjAwZiwgMHgwMDAwLCAweDJjMDgsCi0JMHgyMDYxLCAweDE5ZTgsIDB4NjAyMCwgMHg4MDAwLCAweDYwMjIsIDB4NjAxMCwgMHg5MDA1LCAweDAxNDgsCi0JMHg5MDgwLCAweDAwMDMsIDB4MjEwMiwgMHg2MTEyLCAweDAxMmUsIDB4MDBjZSwgMHgwMDFlLCAweDAwMGUsCi0JMHgwMDA1LCAweDYxMTYsIDB4NjExMiwgMHgwY2MwLCAweDAwZDYsIDB4MjA2OSwgMHgxOWU4LCAweGI4MDAsCi0JMHhkMGQ0LCAweDAxNjgsIDB4NjgyMCwgMHg4MDAwLCAweDY4MjIsIDB4OTA4NiwgMHgwMDAxLCAweDExMTAsCi0JMHgyYjAwLCAweDY4MWUsIDB4MDBkZSwgMHgwODA0LCAweDlhYjEsIDB4MDBkZSwgMHgwMDA1LCAweGMwZDUsCi0JMHhiODAyLCAweDY4MTgsIDB4OTAwNSwgMHgwMTY4LCAweGI4NTYsIDB4Yjg1YiwgMHgwMDAwLCAweDAwODYsCi0JMHgwMDA2LCAweDJiMDAsIDB4NjgxYSwgMHgwMDhlLCAweGEwNWEsIDB4MDA4ZSwgMHgyMDY5LCAweDE5ZTgsCi0JMHgwYzA4LCAweGI4NTYsIDB4Yjg1YSwgMHgyYjAwLCAweDY4MWEsIDB4NjgxZSwgMHgwOGQ4LCAweDAwMDYsCi0JMHgwMDE2LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjAwZiwgMHgwMDAwLCAweDJjMDgsCi0JMHgyMDYxLCAweDE5ZTgsIDB4NjAyMCwgMHg4MDAwLCAweDYwMjIsIDB4NjAwOCwgMHg5MDA1LCAweDAxNDgsCi0JMHg5MDgwLCAweDAwMDMsIDB4MjEwMiwgMHg2MTBhLCAweDAxMmUsIDB4MDBjZSwgMHgwMDFlLCAweDAwMGUsCi0JMHgwMDA1LCAweDYxMGUsIDB4NjEwYSwgMHgwY2MwLCAweDAwYzYsIDB4NjAwZiwgMHgwMDAwLCAweDJjMDgsCi0JMHgyMDYxLCAweDE5ZTgsIDB4NjAzNCwgMHg5MDA1LCAweDAxMzAsIDB4OTA4MCwgMHgwMDAzLCAweDIxMDIsCi0JMHg2MTM2LCAweDAwY2UsIDB4MDAwNSwgMHg2MTNhLCAweDYxMzYsIDB4MDBjZSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHgwMGI2LCAweDAwOTYsIDB4MDA3NiwgMHgwMDY2LCAweDAwNTYsCi0JMHgwMDM2LCAweDAwMjYsIDB4MDAxNiwgMHgwMDA2LCAweDAxMjYsIDB4OTAyZSwgMHgyMDcxLCAweDE5ZTgsCi0JMHg3NjM4LCAweDI2NjAsIDB4MjY3OCwgMHgyMDkxLCAweDgwMDAsIDB4OGNmZiwgMHgwOTA0LCAweDk1ZjMsCi0JMHg2MDEwLCAweDIwNTgsIDB4YjhhMCwgMHg5MjA2LCAweDE5MDQsIDB4OTVlZSwgMHg4N2ZmLCAweDAxMjAsCi0JMHg2MDU0LCAweDkxMDYsIDB4MTkwNCwgMHg5NWVlLCAweDcwM2MsIDB4OWMwNiwgMHgxMTc4LCAweDAwMzYsCi0JMHgyMDE5LCAweDAwMDEsIDB4MDgwYywgMHhhYTQ5LCAweDcwMzMsIDB4MDAwMCwgMHg5MDA2LCAweDcwM2UsCi0JMHg3MDQyLCAweDcwNDYsIDB4NzA0YSwgMHgwMDNlLCAweDIwMjksIDB4MDAwMSwgMHg3MDM4LCAweDljMzYsCi0JMHgxMTEwLCAweDY2MGMsIDB4NzYzYSwgMHg3MDM0LCAweDljMzYsIDB4MTE0MCwgMHgyYzAwLCAweDlmMzYsCi0JMHgwMTE4LCAweDJmMDAsIDB4NzAzNiwgMHgwMDEwLCAweDcwMzcsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsCi0JMHgyYzAwLCAweDlmMDYsIDB4MDExMCwgMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsCi0JMHgwODBjLCAweGQwZDgsIDB4MDFmMCwgMHg2MDE0LCAweDIwNDgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDMsCi0JMHgxNWI4LCAweDYwMDQsIDB4OTA4NiwgMHgwMDQwLCAweDA5MGMsIDB4YWMxYiwgMHhhODY3LCAweDAxMDMsCi0JMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwMDE2LCAweDAwMzYsIDB4MDA3NiwgMHgwODBjLCAweGQzY2UsCi0JMHgwODBjLCAweGVmODUsIDB4MDgwYywgMHg2ZTlmLCAweDAwN2UsIDB4MDAzZSwgMHgwMDFlLCAweDA4MGMsCi0JMHhkMmMzLCAweDA4MGMsIDB4YjMwNiwgMHgwMGNlLCAweDA4MDQsIDB4OTU4ZCwgMHgyYzc4LCAweDYwMGMsCi0JMHgyMDYwLCAweDA4MDQsIDB4OTU4ZCwgMHg4NWZmLCAweDAxMjAsIDB4MDAzNiwgMHgwODBjLCAweDliZDMsCi0JMHgwMDNlLCAweDAxMmUsIDB4MDAwZSwgMHgwMDFlLCAweDAwMmUsIDB4MDAzZSwgMHgwMDVlLCAweDAwNmUsCi0JMHgwMDdlLCAweDAwOWUsIDB4MDBiZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwNiwgMHgxMTU4LCAweDAwMTYsIDB4MDAzNiwgMHgwMDc2LCAweDA4MGMsCi0JMHhlZjg1LCAweDA4MGMsIDB4ZWJkNCwgMHgwMDdlLCAweDAwM2UsIDB4MDAxZSwgMHgwODkwLCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMDksIDB4MTE2OCwgMHhhODdiLCAweDAwMDYsIDB4MDAxNiwgMHgwMDM2LCAweDAwNzYsCi0JMHgwODBjLCAweDZlOWYsIDB4MDgwYywgMHhiMmQzLCAweDAwN2UsIDB4MDAzZSwgMHgwMDFlLCAweDA4MTgsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwYSwgMHgwOTA0LCAweDk1ZDgsIDB4MDgwNCwgMHg5NWQxLCAweDAwMDYsCi0JMHgwMDY2LCAweDAwOTYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZjYsIDB4OTAzNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwNzksIDB4MTllOCwgMHg3ODM4LCAweDkwNjUsIDB4MDkwNCwgMHg5Njg0LCAweDYwMGMsCi0JMHgwMDA2LCAweDYwMGYsIDB4MDAwMCwgMHg3ODNjLCAweDljMDYsIDB4MTE2OCwgMHgwMDM2LCAweDIwMTksCi0JMHgwMDAxLCAweDA4MGMsIDB4YWE0OSwgMHg3ODMzLCAweDAwMDAsIDB4OTAxZSwgMHg3YjNlLCAweDdiNDIsCi0JMHg3YjQ2LCAweDdiNGEsIDB4MDAzZSwgMHgwODBjLCAweGQwZDgsIDB4MDU0OCwgMHg2MDE0LCAweDIwNDgsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwMywgMHgxNTkwLCAweDNlMDgsIDB4OTE4ZSwgMHgwMDAyLCAweDExODgsCi0JMHg2MDEwLCAweDkwMDUsIDB4MDE3MCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsCi0JMHgwMTQwLCAweDYwNDAsIDB4OTAwNSwgMHgxMWE4LCAweDIwMDEsIDB4MTk4OCwgMHgyMDA0LCAweDYwNDIsCi0JMHgwMDgwLCAweDYwMDQsIDB4OTA4NiwgMHgwMDQwLCAweDA5MGMsIDB4YWMxYiwgMHhhODY3LCAweDAxMDMsCi0JMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDZlOTIsIDB4MDgwYywgMHhkMmMzLCAweDA4MGMsCi0JMHhiMzA2LCAweDAwMGUsIDB4MDgwNCwgMHg5NjNjLCAweDdlM2EsIDB4N2UzNiwgMHgwMTJlLCAweDAwZmUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDA5ZSwgMHgwMDZlLCAweDAwMGUsIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDA2LCAweDExMTgsIDB4MDgwYywgMHhlYmQ0LCAweDBjNTAsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDksCi0JMHgxMTMwLCAweGFiN2EsIDB4MDgwYywgMHg2ZTlmLCAweDA4MGMsIDB4YjJkMywgMHgwYzEwLCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMGEsIDB4MDlhOCwgMHgwODY4LCAweDAwMTYsIDB4MDAyNiwgMHgwMDg2LCAweDkwNDYsCi0JMHgwMDk5LCAweDA4MGMsIDB4OTc4ZiwgMHgwMDhlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMTI2LCAweDIwNzksIDB4MTllOCwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg5ODI2LCAweDA4MGMsCi0JMHg5OGI2LCAweDAxMmUsIDB4MDBmZSwgMHgwMDA1LCAweDAwYjYsIDB4MDA5NiwgMHgwMGY2LCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDE2LCAweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDcxLCAweDE5ZTgsIDB4NzYxNCwgMHgyNjYwLCAweDI2NzgsIDB4OGNmZiwgMHgwOTA0LCAweDk3NTQsCi0JMHg2MDEwLCAweDIwNTgsIDB4YjhhMCwgMHg5MjA2LCAweDE5MDQsIDB4OTc0ZiwgMHg4OGZmLCAweDAxMjAsCi0JMHg2MDU0LCAweDkxMDYsIDB4MTkwNCwgMHg5NzRmLCAweDcwMjQsIDB4OWMwNiwgMHgxNTY4LCAweDIwNjksCi0JMHgwMTAwLCAweDY4MjAsIDB4ZDBhNCwgMHgwMTEwLCAweGQwY2MsIDB4MTUwOCwgMHgwODBjLCAweDg4YzMsCi0JMHgwODBjLCAweGE2ZTksIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4YWMxYiwgMHg3MDI3LCAweDAwMDAsCi0JMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsCi0JMHgwMTAwLCAweDA4MGMsIDB4MmQzOSwgMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDY5LCAweDAxMDAsCi0JMHg2ODI0LCAweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHgwMDI4LCAweDYwMDMsCi0JMHgwMDA5LCAweDYzMGEsIDB4MDgwNCwgMHg5NzRmLCAweDcwMTQsIDB4OWMzNiwgMHgxMTEwLCAweDY2MGMsCi0JMHg3NjE2LCAweDcwMTAsIDB4OWMzNiwgMHgxMTQwLCAweDJjMDAsIDB4OWYzNiwgMHgwMTE4LCAweDJmMDAsCi0JMHg3MDEyLCAweDAwMTAsIDB4NzAxMywgMHgwMDAwLCAweDY2MGMsIDB4MDA2NiwgMHgyYzAwLCAweDlmMDYsCi0JMHgwMTEwLCAweDdlMGUsIDB4MDAwOCwgMHgyNjc4LCAweDYwMGYsIDB4MDAwMCwgMHg2MDE0LCAweDIwNDgsCi0JMHgwODBjLCAweGQwZDgsIDB4MDFlOCwgMHg2MDIwLCAweDkwODYsIDB4MDAwMywgMHgxNTgwLCAweDA4MGMsCi0JMHhkMmUwLCAweDExMTgsIDB4MDgwYywgMHhiY2I2LCAweDAwOTgsIDB4YTg2NywgMHgwMTAzLCAweGFiN2EsCi0JMHhhODc3LCAweDAwMDAsIDB4MDAxNiwgMHgwMDM2LCAweDAwODYsIDB4MDgwYywgMHhkM2NlLCAweDA4MGMsCi0JMHhlZjg1LCAweDA4MGMsIDB4NmU5ZiwgMHgwMDhlLCAweDAwM2UsIDB4MDAxZSwgMHgwODBjLCAweGQyYzMsCi0JMHgwODBjLCAweGIzMDYsIDB4MDgwYywgMHhhYWYxLCAweDAwY2UsIDB4MDgwNCwgMHg5NmNkLCAweDJjNzgsCi0JMHg2MDBjLCAweDIwNjAsIDB4MDgwNCwgMHg5NmNkLCAweDAxMmUsIDB4MDAwZSwgMHgwMDFlLCAweDAwNmUsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwOWUsIDB4MDBiZSwgMHgwMDA1LCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMDYsIDB4MTE1OCwgMHgwMDE2LCAweDAwMzYsIDB4MDA4NiwgMHgwODBjLCAweGVmODUsCi0JMHgwODBjLCAweGViZDQsIDB4MDA4ZSwgMHgwMDNlLCAweDAwMWUsIDB4MDhkMCwgMHgwODBjLCAweGJjYjYsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwMiwgMHgxMTYwLCAweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsCi0JMHgwMDBlLCAweDA5MDQsIDB4OTczNSwgMHg5MDg2LCAweDAwOGIsIDB4MDkwNCwgMHg5NzM1LCAweDA4NDAsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwNSwgMHgxOTIwLCAweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsCi0JMHgwMDBlLCAweDA5YzgsIDB4OTA4NiwgMHgwMDhiLCAweDA5YjAsIDB4MDgwNCwgMHg5NzQ4LCAweDAwYjYsCi0JMHgwMGE2LCAweDAwOTYsIDB4MDBjNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDkyODAsCi0JMHgxMDAwLCAweDIwMDQsIDB4OTA1ZCwgMHgwOTA0LCAweDk4MWYsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsCi0JMHgwMDY2LCAweDIwNzEsIDB4MTllOCwgMHhiZTU0LCAweDcwMTgsIDB4OWIwNiwgMHgxMTA4LCAweDc2MWEsCi0JMHg3MDFjLCAweDliMDYsIDB4MTEzMCwgMHg4NmZmLCAweDExMTgsIDB4NzAxOCwgMHg3MDFlLCAweDAwMDgsCi0JMHg3NjFlLCAweGI4NTgsIDB4OTA0ZCwgMHgwMTA4LCAweGFlNTYsIDB4OTZkNSwgMHgwMDAwLCAweDAxMTAsCi0JMHgyOTAwLCAweGIwNWEsIDB4Yjg1NywgMHgwMDAwLCAweGI4NWIsIDB4MDAwMCwgMHhiODAwLCAweGMwZDQsCi0JMHhjMGRjLCAweGI4MDIsIDB4MDgwYywgMHg2NjRjLCAweDA5MDQsIDB4OTgxYiwgMHg3NjI0LCAweDg2ZmYsCi0JMHgwOTA0LCAweDk4MGEsIDB4OTY4MCwgMHgwMDA1LCAweDIwMDQsIDB4OTkwNiwgMHgxNWQ4LCAweDAwZDYsCi0JMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwgMHg5MDA1LCAweDA1NjAsIDB4MDgwYywgMHg4OGMzLCAweDA4MGMsCi0JMHhhNmU5LCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweGFjMWIsIDB4NzAyNywgMHgwMDAwLCAweDAwMzYsCi0JMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsCi0JMHgwODBjLCAweDJkMzksIDB4OTAwNiwgMHgwODBjLCAweDJkMzksIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsCi0JMHhkMDg0LCAweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4MDBkZSwgMHgwMGM2LCAweGI4M2MsCi0JMHg5MDA1LCAweDAxMTAsIDB4ODAwMSwgMHhiODNlLCAweDI2NjAsIDB4MDgwYywgMHhiMzA2LCAweDAwY2UsCi0JMHgwMDQ4LCAweDAwZGUsIDB4MDBjNiwgMHgyNjYwLCAweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDAwY2UsCi0JMHgwODA0LCAweDk3YzIsIDB4ODlmZiwgMHgwMTU4LCAweGE4NjcsIDB4MDEwMywgMHhhYjdhLCAweGE4NzcsCi0JMHgwMDAwLCAweDA4MGMsIDB4ZDNjZSwgMHgwODBjLCAweGVmODUsIDB4MDgwYywgMHg2ZTlmLCAweDA4MGMsCi0JMHhhYWYxLCAweDA4MDQsIDB4OTdjMiwgMHgwMDZlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAxMmUsCi0JMHgwMDBlLCAweDAwY2UsIDB4MDA5ZSwgMHgwMGFlLCAweDAwYmUsIDB4MDAwNSwgMHgwMDk2LCAweDAwMDYsCi0JMHgwMDY2LCAweDAwYzYsIDB4MDBkNiwgMHg5MDM2LCAweDc4MTQsIDB4OTA2NSwgMHgwOTA0LCAweDk4ODksCi0JMHg2MDBjLCAweDAwMDYsIDB4NjAwZiwgMHgwMDAwLCAweDc4MjQsIDB4OWMwNiwgMHgxNTgwLCAweDIwNjksCi0JMHgwMTAwLCAweDY4MjAsIDB4ZDBhNCwgMHgwMTEwLCAweGQwY2MsIDB4MTUwOCwgMHgwODBjLCAweDg4YzMsCi0JMHgwODBjLCAweGE2ZTksIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4YWMxYiwgMHg3ODI3LCAweDAwMDAsCi0JMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsCi0JMHgwMTAwLCAweDA4MGMsIDB4MmQzOSwgMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDY5LCAweDAxMDAsCi0JMHg2ODI0LCAweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHgwMDQwLCAweDA4MGMsCi0JMHg2YTNiLCAweDE1MjAsIDB4NjAwMywgMHgwMDA5LCAweDYzMGEsIDB4MmMzMCwgMHgwMGY4LCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkNiwgMHgwMWIwLCAweDYwMjAsIDB4OTA4NiwgMHgwMDAzLCAweDE1MDgsCi0JMHgwODBjLCAweGQyZTAsIDB4MTExOCwgMHgwODBjLCAweGJjYjYsIDB4MDA2MCwgMHgwODBjLCAweDZhM2IsCi0JMHgxMTY4LCAweGE4NjcsIDB4MDEwMywgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDZlOWYsCi0JMHgwODBjLCAweGQyYzMsIDB4MDgwYywgMHhiMzA2LCAweDA4MGMsIDB4YWFmMSwgMHgwMDBlLCAweDA4MDQsCi0JMHg5ODJkLCAweDdlMTYsIDB4N2UxMiwgMHgwMGRlLCAweDAwY2UsIDB4MDA2ZSwgMHgwMDBlLCAweDAwOWUsCi0JMHgwMDA1LCAweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDExMTgsIDB4MDgwYywgMHhlYmQ0LCAweDBjNTAsCi0JMHgwODBjLCAweGJjYjYsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDIsIDB4MTE1MCwgMHg2MDA0LCAweDAwMDYsCi0JMHg5MDg2LCAweDAwODUsIDB4MDAwZSwgMHgwOTkwLCAweDkwODYsIDB4MDA4YiwgMHgwOTc4LCAweDA4ZDAsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwNSwgMHgxOWIwLCAweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsCi0JMHgwMDBlLCAweDBkMTgsIDB4OTA4NiwgMHgwMDhiLCAweDBkMDAsIDB4MDg2MCwgMHgwMDA2LCAweDAwNjYsCi0JMHgwMDk2LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDc4MTgsIDB4OTA1ZCwgMHgwOTA0LCAweDk5MzYsCi0JMHhiODU0LCAweDAwMDYsIDB4OTAwNiwgMHhiODU2LCAweGI4NWEsIDB4YjgwMCwgMHhjMGQ0LCAweGMwZGMsCi0JMHhiODAyLCAweDA4MGMsIDB4NjY0YywgMHgwOTA0LCAweDk5MzMsIDB4N2UyNCwgMHg4NmZmLCAweDA5MDQsCi0JMHg5OTI2LCAweDk2ODAsIDB4MDAwNSwgMHgyMDA0LCAweDk5MDYsIDB4MTkwNCwgMHg5OTI2LCAweDAwZDYsCi0JMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwgMHg5MDA1LCAweDA5MDQsIDB4OTkxZCwgMHgwODBjLCAweDg4YzMsCi0JMHgwODBjLCAweGE2ZTksIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4YWMxYiwgMHg3ODI3LCAweDAwMDAsCi0JMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsCi0JMHgwMTAwLCAweDA4MGMsIDB4MmQzOSwgMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDY5LCAweDAxMDAsCi0JMHg2ODI0LCAweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHgwMGRlLCAweDAwYzYsCi0JMHgzZTA4LCAweDkxOGUsIDB4MDAwMiwgMHgxMTY4LCAweGI4MDAsIDB4ZDBiYywgMHgwMTUwLCAweDk2ODAsCi0JMHgwMDEwLCAweDIwMGMsIDB4ODFmZiwgMHgxNTE4LCAweDIwMDksIDB4MTk4OCwgMHgyMTBjLCAweDIxMDIsCi0JMHgwMGYwLCAweGI4M2MsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDEsIDB4YjgzZSwgMHgyNjYwLCAweDYwMGYsCi0JMHgwMDAwLCAweDA4MGMsIDB4YjMwNiwgMHgwMGNlLCAweDAwNDgsIDB4MDBkZSwgMHgwMGM2LCAweDI2NjAsCi0JMHg2MDAzLCAweDAwMDksIDB4NjMwYSwgMHgwMGNlLCAweDA4MDQsIDB4OThjOSwgMHg4OWZmLCAweDAxMzgsCi0JMHhhODY3LCAweDAxMDMsIDB4YWI3YSwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDA4MGMsCi0JMHhhYWYxLCAweDA4MDQsIDB4OThjOSwgMHgwMDBlLCAweDA4MDQsIDB4OThiZCwgMHg3ODFlLCAweDc4MWEsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMDllLCAweDAwNmUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwOTYsIDB4MDA2NiwgMHhiODAwLCAweGQwZGMsIDB4MDFhMCwgMHhiODRjLCAweDkwNGQsCi0JMHgwMTg4LCAweGE4NzgsIDB4OTYwNiwgMHgxMTcwLCAweDIwNzEsIDB4MTllOCwgMHg3MDI0LCAweDkwMzUsCi0JMHgwMTQ4LCAweDkwODAsIDB4MDAwNSwgMHgyMDA0LCAweDk5MDYsIDB4MTEyMCwgMHhiODAwLCAweGMwZGMsCi0JMHhiODAyLCAweDAwMjksIDB4MDA2ZSwgMHgwMDllLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZjYsCi0JMHgyMDc5LCAweDAxMDAsIDB4NzhjMCwgMHg5MDA1LCAweDExMzgsIDB4MDBjNiwgMHgyNjYwLCAweDYwMDMsCi0JMHgwMDA5LCAweDYzMGEsIDB4MDBjZSwgMHgwNGI4LCAweDA4MGMsIDB4YTZlOSwgMHg3OGMzLCAweDAwMDAsCi0JMHgwODBjLCAweGFjMWIsIDB4NzAyNywgMHgwMDAwLCAweDAwMzYsIDB4MjA3OSwgMHgwMTQwLCAweDdiMDQsCi0JMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywgMHgyZDM5LCAweDkwMDYsCi0JMHgwODBjLCAweDJkMzksIDB4MjA3OSwgMHgwMTAwLCAweDc4MjQsIDB4ZDA4NCwgMHgwMTEwLCAweDc4MjcsCi0JMHgwMDAxLCAweDA4MGMsIDB4YWMxYiwgMHgwMDNlLCAweDA4MGMsIDB4NjY0YywgMHgwMGM2LCAweGI4M2MsCi0JMHg5MDA1LCAweDAxMTAsIDB4ODAwMSwgMHhiODNlLCAweDI2NjAsIDB4MDgwYywgMHhiMmQzLCAweDAwY2UsCi0JMHhhODY3LCAweDAxMDMsIDB4YWI3YSwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywgMHhkM2NlLCAweDA4MGMsCi0JMHg2ZTlmLCAweDA4MGMsIDB4YWFmMSwgMHgwMGZlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGU2LCAweDAwYzYsCi0JMHgyMDExLCAweDAxMDEsIDB4MjIwNCwgMHhjMGM0LCAweDIwMTIsIDB4MjAwMSwgMHgxODBjLCAweDIwMTQsCi0JMHhjMmU0LCAweDIyMDIsIDB4MjA3MSwgMHgxOWU4LCAweDcwMDQsIDB4OTA4NCwgMHgwMDA3LCAweDAwMDIsCi0JMHg5OWMyLCAweDk5YzYsIDB4OTllNCwgMHg5YTBkLCAweDlhNGIsIDB4OTljMiwgMHg5OWRkLCAweDk5YzAsCi0JMHgwODBjLCAweDBkYzUsIDB4MDBjZSwgMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwgMHg3MDI0LCAweDkwNjUsCi0JMHgwMTQ4LCAweDcwMjAsIDB4ODAwMSwgMHg3MDIyLCAweDYwMGMsIDB4OTAxNSwgMHgwMTU4LCAweDcyMTYsCi0JMHg2MDBmLCAweDAwMDAsIDB4NzAwNywgMHgwMDAwLCAweDcwMjcsIDB4MDAwMCwgMHgwMGNlLCAweDAwZWUsCi0JMHgwMGJlLCAweDAwMDUsIDB4NzIxNiwgMHg3MjEyLCAweDBjYTgsIDB4NzAwNywgMHgwMDAwLCAweDcwMjcsCi0JMHgwMDAwLCAweDcwMjAsIDB4OTAwNSwgMHgwMDcwLCAweDYwMTAsIDB4MjA1OCwgMHgwODBjLCAweDY2NGMsCi0JMHhiODAwLCAweGMwZGMsIDB4YjgwMiwgMHg3MDA3LCAweDAwMDAsIDB4NzAyNywgMHgwMDAwLCAweDcwMjAsCi0JMHg4MDAxLCAweDcwMjIsIDB4MTE0OCwgMHgyMDAxLCAweDE4MGMsIDB4MjAxNCwgMHhkMmVjLCAweDExODAsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDBiZSwgMHgwMDA1LCAweGI4NTQsIDB4OTAxNSwgMHgwMTIwLCAweDcyMWUsCi0JMHgwODBjLCAweDlhYjEsIDB4MGNhOCwgMHg3MjE4LCAweDcyMWUsIDB4MDgwYywgMHg5YWIxLCAweDBjODAsCi0JMHhjMmVjLCAweDIyMDIsIDB4MDgwYywgMHg5YmQzLCAweDBjNTgsIDB4NzAyNCwgMHg5MDY1LCAweDA1YjgsCi0JMHg3MDBjLCAweDljMDYsIDB4MTE2MCwgMHgwODBjLCAweGFhZjEsIDB4NjAwYywgMHg5MDE1LCAweDAxMjAsCi0JMHg3MjBlLCAweDYwMGYsIDB4MDAwMCwgMHgwNDQ4LCAweDcyMGUsIDB4NzIwYSwgMHgwNDMwLCAweDcwMTQsCi0JMHg5YzA2LCAweDExNjAsIDB4MDgwYywgMHhhYWYxLCAweDYwMGMsIDB4OTAxNSwgMHgwMTIwLCAweDcyMTYsCi0JMHg2MDBmLCAweDAwMDAsIDB4MDBkMCwgMHg3MjE2LCAweDcyMTIsIDB4MDBiOCwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDAzLCAweDExOTgsIDB4NjAxMCwgMHgyMDU4LCAweDA4MGMsIDB4NjY0YywgMHhiODAwLCAweGMwZGMsCi0JMHhiODAyLCAweDA4MGMsIDB4YWFmMSwgMHg3MDFjLCAweDkwNjUsIDB4MDEzOCwgMHhiODU0LCAweDkwMTUsCi0JMHgwMTEwLCAweDcyMWUsIDB4MDAxMCwgMHg3MjE4LCAweDcyMWUsIDB4NzAyNywgMHgwMDAwLCAweDAwY2UsCi0JMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwgMHg3MDI0LCAweDkwNjUsIDB4MDE0MCwgMHgwODBjLCAweGFhZjEsCi0JMHg2MDBjLCAweDkwMTUsIDB4MDE1OCwgMHg3MjBlLCAweDYwMGYsIDB4MDAwMCwgMHgwODBjLCAweGFjMWIsCi0JMHg3MDI3LCAweDAwMDAsIDB4MDBjZSwgMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwgMHg3MjBlLCAweDcyMGEsCi0JMHgwY2E4LCAweDAwZDYsIDB4MjA2OSwgMHgxOWU4LCAweDY4MzAsIDB4OTA4NCwgMHgwMDAzLCAweDAwMDIsCi0JMHg5YTZlLCAweDlhNzAsIDB4OWE5NCwgMHg5YTZjLCAweDA4MGMsIDB4MGRjNSwgMHgwMGRlLCAweDAwMDUsCi0JMHgwMGM2LCAweDY4NDAsIDB4OTA4NiwgMHgwMDAxLCAweDAxYjgsIDB4NjgzYywgMHg5MDY1LCAweDAxMzAsCi0JMHg2MDBjLCAweDkwMTUsIDB4MDE3MCwgMHg2YTNhLCAweDYwMGYsIDB4MDAwMCwgMHg2ODMzLCAweDAwMDAsCi0JMHg2ODNmLCAweDAwMDAsIDB4MjAxMSwgMHgxYTA3LCAweDIwMTMsIDB4MDAwMCwgMHgwMGNlLCAweDAwZGUsCi0JMHgwMDA1LCAweDY4M2EsIDB4NjgzNiwgMHgwYzkwLCAweDY4NDMsIDB4MDAwMCwgMHg2ODM4LCAweDkwNjUsCi0JMHgwZDY4LCAweDYwMDMsIDB4MDAwMywgMHgwYzUwLCAweDAwYzYsIDB4OTAwNiwgMHg2ODQyLCAweDY4NDYsCi0JMHg2ODRhLCAweDY4M2MsIDB4OTA2NSwgMHgwMTYwLCAweDYwMGMsIDB4OTAxNSwgMHgwMTMwLCAweDZhM2EsCi0JMHg2MDBmLCAweDAwMDAsIDB4NjgzZiwgMHgwMDAwLCAweDAwMTgsIDB4NjgzZSwgMHg2ODNhLCAweDY4MzYsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHhjMWU1LCAweDIxMDIsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGQxZWMsIDB4MDEyMCwgMHhjMWVjLCAweDIxMDIsCi0JMHgwODBjLCAweDliZDMsIDB4MjAwMSwgMHgxOWY0LCAweDIwMDQsIDB4OTA4NiwgMHgwMDAxLCAweDBkNTgsCi0JMHgwMGQ2LCAweDIwNjksIDB4MTllOCwgMHg2ODA0LCAweDkwODQsIDB4MDAwNywgMHgwMDA2LCAweDkwMDUsCi0JMHgxMWM4LCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweDkwODQsIDB4MDAyOCwgMHgxMTk4LCAweDIwMDEsCi0JMHgxOTdjLCAweDIwMDQsIDB4OTA4NiwgMHhhYWFhLCAweDAxNjgsIDB4MjAwMSwgMHgxODhiLCAweDIwMDQsCi0JMHhkMDhjLCAweDExMTgsIDB4ZDA4NCwgMHgxMTE4LCAweDAwMjgsIDB4MDgwYywgMHg5YmQzLCAweDAwMGUsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDAwZSwgMHgwMDAyLCAweDlhZWUsIDB4OWJhNywgMHg5YmE3LCAweDliYTcsCi0JMHg5YmE3LCAweDliYTksIDB4OWJhNywgMHg5YWVjLCAweDA4MGMsIDB4MGRjNSwgMHg2ODIwLCAweDkwMDUsCi0JMHgxMTEwLCAweDAwZGUsIDB4MDAwNSwgMHgwMGM2LCAweDY4MGMsIDB4OTA2NSwgMHgwMWYwLCAweDYxMDQsCi0JMHg5MThlLCAweDAwNDAsIDB4MTE4MCwgMHgyMDA5LCAweDE4MzcsIDB4MjEwYywgMHg5MThjLCAweDAwMjgsCi0JMHgxMTUwLCAweDA4MGMsIDB4NzYzNywgMHgwMTM4LCAweDAwMDYsIDB4MjAwOSwgMHgxODhiLCAweDIxMDQsCi0JMHhjMDk1LCAweDIwMGEsIDB4MDAwZSwgMHg2ODA3LCAweDAwMDQsIDB4NjgyNiwgMHg2ODJiLCAweDAwMDAsCi0JMHgwODBjLCAweDljN2MsIDB4MDBjZSwgMHgwMGRlLCAweDAwMDUsIDB4NjgxNCwgMHg5MDY1LCAweDAxNTAsCi0JMHg2ODA3LCAweDAwMDEsIDB4NjgyNiwgMHg2ODJiLCAweDAwMDAsIDB4MDgwYywgMHg5YzdjLCAweDAwY2UsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGU2LCAweDZhMWMsIDB4OTJkZCwgMHgwMDAwLCAweDA5MDQsCi0JMHg5YjkxLCAweGI4NGMsIDB4OTAwZCwgMHgwMTE4LCAweGI4ODgsIDB4OTAwNSwgMHgwMWEwLCAweGI4NTQsCi0JMHg5MDVkLCAweDAxMjAsIDB4OTIwZSwgMHgwOTA0LCAweDliOTEsIDB4MDAyOCwgMHg2ODE4LCAweDkyMGUsCi0JMHgwOTA0LCAweDliOTEsIDB4MjA1OCwgMHhiODRjLCAweDkwMGQsIDB4MGQ4OCwgMHhiODg4LCAweDkwMDUsCi0JMHgxZDcwLCAweDJiMDAsIDB4NjgxZSwgMHhiYjNjLCAweGI4MzgsIDB4OTMwMiwgMHgxZTQwLCAweDA4MGMsCi0JMHhiMmFhLCAweDA5MDQsIDB4OWI5MSwgMHg4MzE4LCAweGJiM2UsIDB4NjExNiwgMHgyYjEwLCAweDYyMTIsCi0JMHgwMDk2LCAweDIxNDgsIDB4YTg4MCwgMHg5MDg0LCAweDAwZmYsIDB4NjA1ZSwgMHhhODgzLCAweDAwMDAsCi0JMHhhODg0LCAweDAwOWUsIDB4OTA4YSwgMHgxOTlhLCAweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsCi0JMHg4MDFiLCAweDgzMWIsIDB4OTMxOCwgMHg2MzFhLCAweDYxMTQsIDB4MDA5NiwgMHgyMTQ4LCAweGE5NjQsCi0JMHgwMDllLCAweDkxOGMsIDB4MDBmZiwgMHg5MThlLCAweDAwNDgsIDB4MDUzOCwgMHgwMGY2LCAweDJjNzgsCi0JMHgyMDYxLCAweDAxMDAsIDB4YmFjMCwgMHg2MjlhLCAweDIwNjksIDB4MDIwMCwgMHgyMDcxLCAweDAyNDAsCi0JMHgwODBjLCAweGEyMTksIDB4MjA2OSwgMHgxOWU4LCAweGJiMDAsIDB4YzNkZCwgMHhiYjAyLCAweDY4MDcsCi0JMHgwMDAyLCAweDJmMTgsIDB4NmIyNiwgMHg2ODJiLCAweDAwMDAsIDB4NzgyMywgMHgwMDAzLCAweDc4MDMsCi0JMHgwMDAxLCAweDc4MDcsIDB4MDA0MCwgMHgwMGZlLCAweDAwZWUsIDB4MDBiZSwgMHgwMGNlLCAweDAwZGUsCi0JMHgwMDA1LCAweDAwZWUsIDB4MDBiZSwgMHgwMGNlLCAweDBjZDAsIDB4NjgwNywgMHgwMDA2LCAweDJjMTgsCi0JMHg2YjI2LCAweDY4MjAsIDB4ODAwMSwgMHg2ODIyLCAweDY4MmIsIDB4MDAwMCwgMHgwODBjLCAweDY2NGMsCi0JMHgwODBjLCAweGIwZWEsIDB4MDBlZSwgMHgwMGJlLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDAwZGUsCi0JMHgwMDA1LCAweDAwYzYsIDB4NjgwYywgMHg5MDY1LCAweDAxZDgsIDB4NjEwNCwgMHg5MThlLCAweDAwNDAsCi0JMHgxMTgwLCAweDIwMDksIDB4MTgzNywgMHgyMTBjLCAweDkxOGMsIDB4MDAyOCwgMHgxMTUwLCAweDA4MGMsCi0JMHg3NjM3LCAweDAxMzgsIDB4MDAwNiwgMHgyMDA5LCAweDE4OGIsIDB4MjEwNCwgMHhjMDk1LCAweDIwMGEsCi0JMHgwMDBlLCAweDY4MDcsIDB4MDAwNCwgMHg2ODI2LCAweDY4MmIsIDB4MDAwMCwgMHgwODBjLCAweDljN2MsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MGMsIDB4MjAxNCwgMHhjMmVkLCAweDIyMDIsCi0JMHgwMGRlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZDYsIDB4MjA2OSwgMHgxOWU4LCAweDY4MzAsCi0JMHg5MDg2LCAweDAwMDAsIDB4MTU3MCwgMHgyMDAxLCAweDE4MGMsIDB4MjAxNCwgMHhkMmU0LCAweDAxMzAsCi0JMHhjMmU0LCAweDIyMDIsIDB4MDgwYywgMHg5YWMwLCAweDIwNjksIDB4MTllOCwgMHgyMDAxLCAweDE4MGMsCi0JMHgyMDBjLCAweGQxYzQsIDB4MTUwOCwgMHg2ODM4LCAweDkwN2QsIDB4MDFkOCwgMHg2YTA0LCAweDkyOTYsCi0JMHgwMDAwLCAweDE5MDQsIDB4OWM3MCwgMHg3OTIwLCAweDkxOGUsIDB4MDAwOSwgMHgwNTY4LCAweDY4MzMsCi0JMHgwMDAxLCAweDY4M2UsIDB4Njg0NywgMHgwMDAwLCAweDY4NGIsIDB4MDAwMCwgMHgwMTI2LCAweDAwZjYsCi0JMHgyMDkxLCAweDI0MDAsIDB4MDAyZSwgMHgwODBjLCAweDFjNzksIDB4MTE1OCwgMHgwMTJlLCAweDA4MGMsCi0JMHhhNTQ2LCAweDAwZGUsIDB4MDBmZSwgMHgwMDA1LCAweGMxYzQsIDB4MjEwMiwgMHgwODBjLCAweDc2ZTQsCi0JMHgwOGQwLCAweDAxMmUsIDB4Njg0MywgMHgwMDAwLCAweDc4MDMsIDB4MDAwMiwgMHg3ODBjLCAweDkwMTUsCi0JMHgwMTQwLCAweDZhM2EsIDB4NzgwZiwgMHgwMDAwLCAweDY4MzMsIDB4MDAwMCwgMHg2ODNmLCAweDAwMDAsCi0JMHgwYzQwLCAweDY4M2EsIDB4NjgzNiwgMHgwY2MwLCAweDc5MDgsIDB4ZDFmYywgMHgxMTk4LCAweDY4MzMsCi0JMHgwMDAxLCAweDY4M2UsIDB4Njg0NywgMHgwMDAwLCAweDY4NGIsIDB4MDAwMCwgMHgwMTI2LCAweDAwZjYsCi0JMHgyMDkxLCAweDI0MDAsIDB4MDAyZSwgMHgwODBjLCAweDFjNzksIDB4MTlkOCwgMHgwMTJlLCAweDA4MGMsCi0JMHhhNGM3LCAweDA4NzgsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsIDB4OTA4NCwgMHgwMDI4LCAweDExODgsCi0JMHgyMDAxLCAweDE5N2MsIDB4MjAwNCwgMHg5MDg2LCAweGFhYWEsIDB4MDE1OCwgMHgyMDAxLCAweDE5ZTksCi0JMHgyMDA0LCAweDkwMDUsIDB4MTFmMCwgMHgyMDAxLCAweDE4OGIsIDB4MjAwYywgMHhjMTg1LCAweGMxOGMsCi0JMHgyMTAyLCAweDJmMDAsIDB4NjgzMywgMHgwMDAxLCAweDY4M2UsIDB4Njg0NywgMHgwMDAwLCAweDY4NGIsCi0JMHgwMDAwLCAweDAxMjYsIDB4MDBmNiwgMHgyMDkxLCAweDI0MDAsIDB4MDAyZSwgMHgwODBjLCAweDFjNzksCi0JMHgxOTA0LCAweDljMTEsIDB4MDEyZSwgMHg2YTNjLCAweDIyNzgsIDB4MDgwYywgMHhhNDUxLCAweDA4MDQsCi0JMHg5YzA5LCAweDIwMTEsIDB4MTg4YiwgMHgyMjA0LCAweGMwOGQsIDB4MjAxMiwgMHgwODA0LCAweDljMDksCi0JMHg2YTA0LCAweDkyOTYsIDB4MDAwNiwgMHgxOTA0LCAweDliY2IsIDB4NmEzMCwgMHg5Mjk2LCAweDAwMDAsCi0JMHgwOTA0LCAweDliZjMsIDB4MDgwNCwgMHg5YmNiLCAweDYwMjAsIDB4OTA4NCwgMHgwMDBmLCAweDAwMGIsCi0JMHgwMDA1LCAweDljOTAsIDB4OWM5NSwgMHhhMTQ5LCAweGExZTIsIDB4OWM5NSwgMHhhMTQ5LCAweGExZTIsCi0JMHg5YzkwLCAweDljOTUsIDB4OWM5MCwgMHg5YzkwLCAweDljOTAsIDB4OWM5MCwgMHg5YzkwLCAweDljOTAsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsIDB4MDBiNiwgMHgwMTU2LCAweDAxMzYsCi0JMHgwMTQ2LCAweDAxYzYsIDB4MDFkNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDIwNjksCi0JMHgwMjAwLCAweDIwNzEsIDB4MDI0MCwgMHg2MDA0LCAweDkwOGEsIDB4MDA1MywgMHgxYTBjLCAweDBkYzUsCi0JMHg2MTEwLCAweDIxNTgsIDB4YjljMCwgMHgyYzc4LCAweDIwNjEsIDB4MDEwMCwgMHg2MTlhLCAweDkwOGEsCi0JMHgwMDQwLCAweDFhMDQsIDB4OWQwMSwgMHgwMDViLCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsCi0JMHgwMWRlLCAweDAxY2UsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDBiZSwgMHgwMDA1LCAweDllYWEsCi0JMHg5ZWU1LCAweDlmMGUsIDB4OWZkOCwgMHg5ZmZhLCAweGEwMDAsIDB4YTAwZCwgMHhhMDE1LCAweGEwMjEsCi0JMHhhMDI3LCAweGEwMzgsIDB4YTAyNywgMHhhMDkwLCAweGEwMTUsIDB4YTA5YywgMHhhMGEyLCAweGEwMjEsCi0JMHhhMGEyLCAweGEwYWUsIDB4OWNmZiwgMHg5Y2ZmLCAweDljZmYsIDB4OWNmZiwgMHg5Y2ZmLCAweDljZmYsCi0JMHg5Y2ZmLCAweDljZmYsIDB4OWNmZiwgMHg5Y2ZmLCAweDljZmYsIDB4YTkwMCwgMHhhOTIzLCAweGE5MzQsCi0JMHhhOTU0LCAweGE5ODYsIDB4YTAwZCwgMHg5Y2ZmLCAweGEwMGQsIDB4YTAyNywgMHg5Y2ZmLCAweDlmMGUsCi0JMHg5ZmQ4LCAweDljZmYsIDB4YWQxMiwgMHhhMDI3LCAweDljZmYsIDB4YWQyZSwgMHhhMDI3LCAweDljZmYsCi0JMHhhMDIxLCAweDllYTQsIDB4OWQyMiwgMHg5Y2ZmLCAweGFkNGEsIDB4YWRiNywgMHhhZTkyLCAweDljZmYsCi0JMHhhZTlmLCAweGEwMGEsIDB4YWVjYSwgMHg5Y2ZmLCAweGE5OTAsIDB4YWVmNywgMHg5Y2ZmLCAweDA4MGMsCi0JMHgwZGM1LCAweDIxMDAsIDB4MDA1YiwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAxZGUsCi0JMHgwMWNlLCAweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDAwYmUsIDB4MDAwNSwgMHhhZjkyLCAweGIwNDQsCi0JMHg5ZDIwLCAweDlkNWEsIDB4OWUwNiwgMHg5ZTExLCAweDlkMjAsIDB4YTAwZCwgMHg5ZDIwLCAweDllNmIsCi0JMHg5ZTc3LCAweDlkNzUsIDB4OWQyMCwgMHg5ZDkwLCAweDlkYzQsIDB4YjFiMSwgMHhiMWY2LCAweGEwMjcsCi0JMHgwODBjLCAweDBkYzUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsIDB4YTBjMSwgMHgwMDI2LCAweDAwMzYsCi0JMHg3ODE0LCAweDIwNDgsIDB4YTk1OCwgMHhkMWNjLCAweDExMzgsIDB4MjAwOSwgMHgyNDE0LCAweDIwMTEsCi0JMHgwMDE4LCAweDIwMTksIDB4MDAxOCwgMHgwMDMwLCAweDIwMDksIDB4MjQxMCwgMHgyMDExLCAweDAwMTQsCi0JMHgyMDE5LCAweDAwMTQsIDB4NzEwMiwgMHg3MjA2LCAweDcwMGIsIDB4MDgwMCwgMHhhODNjLCAweDcwMGUsCi0JMHhhODUwLCAweDcwMjIsIDB4YTg1NCwgMHg3MDI2LCAweDYzYzIsIDB4MDgwYywgMHhhNmJkLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwOWUsIDB4MDBkZSwgMHgwMDA1LCAweDc4MTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YTAsCi0JMHgwMGJlLCAweDA4MGMsIDB4YjIzZCwgMHgxMTE4LCAweDkwODQsIDB4ZmY4MCwgMHgwMTEwLCAweDkwODUsCi0JMHgwMDAxLCAweDAwMDUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsIDB4YTBjMSwgMHg3MDAzLCAweDA1MDAsCi0JMHg3ODE0LCAweDIwNDgsIDB4YTg3NCwgMHg3MDBhLCAweGE4NzgsIDB4NzAwZSwgMHhhODdjLCAweDcwMTIsCi0JMHhhODgwLCAweDcwMTYsIDB4YTg4NCwgMHg3MDFhLCAweGE4ODgsIDB4NzAxZSwgMHg2MGMzLCAweDAwMTAsCi0JMHgwODBjLCAweGE2YmQsIDB4MDA5ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsCi0JMHhhMGMxLCAweDcwMDMsIDB4MDUwMCwgMHg3ODE0LCAweDIwNDgsIDB4YThjYywgMHg3MDBhLCAweGE4ZDAsCi0JMHg3MDBlLCAweGE4ZDQsIDB4NzAxMiwgMHhhOGQ4LCAweDcwMTYsIDB4YThkYywgMHg3MDFhLCAweGE4ZTAsCi0JMHg3MDFlLCAweDYwYzMsIDB4MDAxMCwgMHgwODBjLCAweGE2YmQsIDB4MDA5ZSwgMHgwMGRlLCAweDAwMDUsCi0JMHgwMGQ2LCAweDAwOTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhhMGMxLCAweDIwZTksCi0JMHgwMDAwLCAweDIwMDEsIDB4MTlhNCwgMHgyMDAzLCAweDAwMDAsIDB4NzgxNCwgMHgyMDQ4LCAweGE4MTQsCi0JMHg4MDAzLCAweDYwYzIsIDB4YTgzMCwgMHgyMGE4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDFiLCAweDIwOTgsIDB4MjAwMSwgMHgxOWE0LCAweDAwMTYsIDB4MjAwYywgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDIzZWUsIDB4MDgwYywgMHhkZTdjLCAweDkwMDYsIDB4MDgwYywgMHgyM2VlLCAweDAwMWUsCi0JMHhhODA0LCAweDkwMDUsIDB4MDExMCwgMHgyMDQ4LCAweDBjMjgsIDB4MDRkOSwgMHgwODBjLCAweGE2YmQsCi0JMHgwMTJlLCAweDAwOWUsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDA5NiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDA4MGMsIDB4YTEwYywgMHgyMGU5LCAweDAwMDAsIDB4MjAwMSwgMHgxOWE0LCAweDIwMDMsCi0JMHgwMDAwLCAweDc4MTQsIDB4MjA0OCwgMHhhODZmLCAweDAyMDAsIDB4YTg3MywgMHgwMDAwLCAweGE4MTQsCi0JMHg4MDAzLCAweDYwYzIsIDB4YTgzMCwgMHgyMGE4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDFiLCAweDIwOTgsIDB4MjAwMSwgMHgxOWE0LCAweDAwMTYsIDB4MjAwYywgMHgwODBjLCAweGRlN2MsCi0JMHgwMDFlLCAweGE4MDQsIDB4OTAwNSwgMHgwMTEwLCAweDIwNDgsIDB4MGM2MCwgMHgwMDUxLCAweDc4MTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4MGZjMCwgMHgwODBjLCAweGE2YmQsIDB4MDEyZSwgMHgwMDllLCAweDAwZGUsCi0JMHgwMDA1LCAweDYwYzAsIDB4ODAwNCwgMHg5MDg0LCAweDAwMDMsIDB4OTAwNSwgMHgwMTMwLCAweDkwODIsCi0JMHgwMDA0LCAweDIwYTMsIDB4MDAwMCwgMHg4MDAwLCAweDFkZTAsIDB4MDAwNSwgMHgwODBjLCAweGEwYzEsCi0JMHg3MDAzLCAweDc4MDAsIDB4NzgwOCwgMHg4MDA3LCAweDcwMGEsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsCi0JMHhhNmJkLCAweDAwZDYsIDB4MDBlNiwgMHgwODBjLCAweGExMGMsIDB4NzgxNCwgMHg5MDg0LCAweGZmMDAsCi0JMHgyMDczLCAweDAyMDAsIDB4OGU3MCwgMHg4ZTcwLCAweDkwOTYsIDB4ZGYwMCwgMHgwMTM4LCAweDkwOTYsCi0JMHhlMDAwLCAweDAxMjAsIDB4MjA3MywgMHgwMDEwLCAweDhlNzAsIDB4MDAzMCwgMHg5MDk1LCAweDAwMTAsCi0JMHgyMjcyLCAweDhlNzAsIDB4MjA3MywgMHgwMDM0LCAweDhlNzAsIDB4MjA2OSwgMHgxODA1LCAweDIwYTksCi0JMHgwMDA0LCAweDJkNzYsIDB4OGQ2OCwgMHg4ZTcwLCAweDFmMDQsIDB4OWUzMSwgMHgyMDY5LCAweDE4MDEsCi0JMHgyMGE5LCAweDAwMDQsIDB4MmQ3NiwgMHg4ZDY4LCAweDhlNzAsIDB4MWYwNCwgMHg5ZTNhLCAweDkwOTYsCi0JMHhkZjAwLCAweDAxMzAsIDB4OTA5NiwgMHhlMDAwLCAweDAxMTgsIDB4NjBjMywgMHgwMDE4LCAweDAwZjAsCi0JMHgyMDY5LCAweDE5YjQsIDB4OTA4NiwgMHhkZjAwLCAweDAxMTAsIDB4MjA2OSwgMHgxOWNlLCAweDIwYTksCi0JMHgwMDFhLCAweDllODYsIDB4MDI2MCwgMHgxMTQ4LCAweDAwYzYsIDB4MjA2MSwgMHgwMjAwLCAweDYwMTAsCi0JMHg4MDAwLCAweDYwMTIsIDB4MDBjZSwgMHgyMDcxLCAweDAyNDAsIDB4MmQwNCwgMHg4MDA3LCAweDIwNzIsCi0JMHg4ZDY4LCAweDhlNzAsIDB4MWYwNCwgMHg5ZTUxLCAweDYwYzMsIDB4MDA0YywgMHgwODBjLCAweGE2YmQsCi0JMHgwMGVlLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweGEwYzEsIDB4NzAwMywgMHg2MzAwLCAweDcwMDcsCi0JMHgwMDI4LCAweDc4MDgsIDB4NzAwZSwgMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwgMHhhNmJkLCAweDAwZDYsCi0JMHgwMDI2LCAweDAwMTYsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsIDB4MDIwMCwgMHg3ODE0LCAweDcwMGUsCi0JMHgwMGU2LCAweDllZjAsIDB4MDAwNCwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwgMHgwMDBjLCAweDIwNjksCi0JMHgxOTI0LCAweDY4MTAsIDB4ZDA4NCwgMHgxMTQ4LCAweDIwNzMsIDB4MDUwMCwgMHg4ZTcwLCAweDIwNzMsCi0JMHgwMDAwLCAweDhlNzAsIDB4ODEwOCwgMHg5MjkwLCAweDAwMDQsIDB4MjA3MywgMHgwODAwLCAweDhlNzAsCi0JMHgyMDczLCAweDAwMDAsIDB4MDBlZSwgMHg3MjA2LCAweDcxMGEsIDB4NjJjMiwgMHgwODBjLCAweGE2YmQsCi0JMHgwMDFlLCAweDAwMmUsIDB4MDBkZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDYwOWEsCi0JMHgwODA0LCAweGE2YmQsIDB4MDgwYywgMHhhMGMxLCAweDcwMDMsIDB4NTIwMCwgMHgyMDY5LCAweDE4NDcsCi0JMHg2ODA0LCAweGQwODQsIDB4MDEzMCwgMHg2ODI4LCAweDAwMTYsIDB4MDgwYywgMHgyOGE2LCAweDcxMGUsCi0JMHgwMDFlLCAweDIwYTksIDB4MDAwNCwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwgMHgxODA1LCAweDIwZTksCi0JMHgwMDAwLCAweDIwYTEsIDB4MDI1MCwgMHg0MDAzLCAweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweDE4MDEsCi0JMHgyMGExLCAweDAyNTQsIDB4NDAwMywgMHgwODBjLCAweGIyM2QsIDB4MTEyMCwgMHhiOGEwLCAweDkwODIsCi0JMHgwMDdmLCAweDAyNDgsIDB4MjAwMSwgMHgxODFmLCAweDIwMDQsIDB4NzAzMiwgMHgyMDAxLCAweDE4MjAsCi0JMHgyMDA0LCAweDcwMzYsIDB4MDAzMCwgMHgyMDAxLCAweDE4MTgsIDB4MjAwNCwgMHg5MDg0LCAweDAwZmYsCi0JMHg3MDM2LCAweDYwYzMsIDB4MDAxYywgMHgwODA0LCAweGE2YmQsIDB4MDgwYywgMHhhMGMxLCAweDcwMDMsCi0JMHgwNTAwLCAweDA4MGMsIDB4YjIzZCwgMHgxMTIwLCAweGI4YTAsIDB4OTA4MiwgMHgwMDdmLCAweDAyNDgsCi0JMHgyMDAxLCAweDE4MWYsIDB4MjAwNCwgMHg3MDBhLCAweDIwMDEsIDB4MTgyMCwgMHgyMDA0LCAweDcwMGUsCi0JMHgwMDMwLCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDkwODQsIDB4MDBmZiwgMHg3MDBlLCAweDIwYTksCi0JMHgwMDA0LCAweDIwZTEsIDB4MDAwMSwgMHgyMDk5LCAweDE4MDUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsCi0JMHgwMjUwLCAweDQwMDMsIDB4NjBjMywgMHgwMDEwLCAweDA4MDQsIDB4YTZiZCwgMHgwODBjLCAweGEwYzEsCi0JMHg5MDA2LCAweDA4MGMsIDB4NmE2ZCwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgxMTcwLCAweDIwMTEsCi0JMHgwMjQwLCAweDIwMTMsIDB4MjJmZiwgMHgyMDExLCAweDAyNDEsIDB4MjAxMywgMHhmZmZlLCAweDcwMDMsCi0JMHgwNDAwLCAweDYyMGMsIDB4YzJiNCwgMHg2MjBlLCAweDAwNTgsIDB4NzgxNCwgMHgwMDk2LCAweDkwNGQsCi0JMHgwMTIwLCAweDkwMDYsIDB4YTg5YSwgMHhhOGE2LCAweGE4YWEsIDB4MDA5ZSwgMHg3MDAzLCAweDAzMDAsCi0JMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgxOTA0LCAweDlmOTgsIDB4MDBkNiwgMHgyMDY5LCAweDE5NmMsCi0JMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxODgsIDB4NjgwMCwgMHg3MDBhLCAweDY4MDgsCi0JMHg5MDg0LCAweDIwMDAsIDB4NzAxMiwgMHgwODBjLCAweGIyNTQsIDB4NjgwYywgMHg3MDE2LCAweDcwMWYsCi0JMHgyNzEwLCAweDY4MTgsIDB4NzAyMiwgMHg2ODFjLCAweDcwMjYsIDB4MDQyOCwgMHg2ODAwLCAweDcwMGEsCi0JMHg2ODA0LCAweDcwMGUsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywgMHgwMTEwLCAweDIwMDEsCi0JMHgwMDAyLCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDA4MGMsIDB4NzYzNywgMHgxMTI4LCAweDc4ZTMsCi0JMHgwMDAwLCAweDA4MGMsIDB4MjhlNywgMHg3OGUyLCAweDAwZmUsIDB4NjgwOCwgMHgwODBjLCAweDc2MzcsCi0JMHgxMTE4LCAweDkwODQsIDB4MzdmZiwgMHgwMDEwLCAweDkwODQsIDB4M2ZmZiwgMHg3MDEyLCAweDA4MGMsCi0JMHhiMjU0LCAweDY4MGMsIDB4NzAxNiwgMHgwMGRlLCAweDIwYTksIDB4MDAwNCwgMHgyMGUxLCAweDAwMDEsCi0JMHgyMDk5LCAweDE4MDUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI1NiwgMHg0MDAzLCAweDIwYTksCi0JMHgwMDA0LCAweDIwOTksIDB4MTgwMSwgMHgyMGExLCAweDAyNWEsIDB4NDAwMywgMHgwMGQ2LCAweDA4MGMsCi0JMHhhZjc5LCAweDIwNjksIDB4MTk3NCwgMHgyMDcxLCAweDAyNGUsIDB4NjgwMCwgMHhjMGRkLCAweDcwMDIsCi0JMHgwODBjLCAweDU3ZDksIDB4ZDBlNCwgMHgwMTEwLCAweDY4MGMsIDB4NzAwZSwgMHgwMGRlLCAweDA0ZTAsCi0JMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxYTgsIDB4MDAxNiwgMHgyMDAxLCAweDE4MGQsCi0JMHgyMDA0LCAweGQwOGMsIDB4MjAwOSwgMHgwMDAyLCAweDExMTgsIDB4MjAwMSwgMHgxOTZkLCAweDIwMGMsCi0JMHg2MGUwLCAweDkxMDYsIDB4MDEzMCwgMHgyMTAwLCAweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweDI4ZTcsCi0JMHg2MWUyLCAweDAwMWUsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MTk2YywgMHgyMGU5LCAweDAwMDAsCi0JMHgyMGExLCAweDAyNGUsIDB4MjBhOSwgMHgwMDA4LCAweDQwMDMsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksCi0JMHgxODA1LCAweDIwYTEsIDB4MDI1NiwgMHg0MDAzLCAweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweDE4MDEsCi0JMHgyMGExLCAweDAyNWEsIDB4NDAwMywgMHgwODBjLCAweGFmNzksIDB4MjBhMSwgMHgwMjRlLCAweDIwYTksCi0JMHgwMDA4LCAweDIwOTksIDB4MTk3NCwgMHg0MDAzLCAweDYwYzMsIDB4MDA3NCwgMHgwODA0LCAweGE2YmQsCi0JMHgwODBjLCAweGEwYzEsIDB4NzAwMywgMHgyMDEwLCAweDcwMDcsIDB4MDAxNCwgMHg3MDBiLCAweDA4MDAsCi0JMHg3MDBmLCAweDIwMDAsIDB4OTAwNiwgMHgwMGY2LCAweDIwNzksIDB4MTg0NywgMHg3OTA0LCAweDAwZmUsCi0JMHhkMWFjLCAweDExMTAsIDB4OTA4NSwgMHgwMDIwLCAweGQxYTQsIDB4MDExMCwgMHg5MDg1LCAweDAwMTAsCi0JMHg5MDg1LCAweDAwMDIsIDB4MDBkNiwgMHgwODA0LCAweGEwNzEsIDB4NzAyNiwgMHg2MGMzLCAweDAwMTQsCi0JMHgwODA0LCAweGE2YmQsIDB4MDgwYywgMHhhMGMxLCAweDcwMDMsIDB4NTAwMCwgMHgwODA0LCAweDlmMzAsCi0JMHgwODBjLCAweGEwYzEsIDB4NzAwMywgMHgyMTEwLCAweDcwMDcsIDB4MDAxNCwgMHg2MGMzLCAweDAwMTQsCi0JMHgwODA0LCAweGE2YmQsIDB4MDgwYywgMHhhMTAzLCAweDAwMTAsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsCi0JMHgwMjAwLCAweDYwYzMsIDB4MDAwNCwgMHgwODA0LCAweGE2YmQsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsCi0JMHgwMTAwLCAweDcwMGIsIDB4MDAwMywgMHg3MDBmLCAweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsCi0JMHhhNmJkLCAweDA4MGMsIDB4YTEwYywgMHg3MDAzLCAweDAyMDAsIDB4MDgwNCwgMHg5ZjMwLCAweDA4MGMsCi0JMHhhMTBjLCAweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDkwMDUsIDB4MDExMCwgMHg3MDBhLCAweDAwMTAsCi0JMHg3MDBiLCAweDAwMDMsIDB4NzgxNCwgMHg3MDBlLCAweDYwYzMsIDB4MDAwOCwgMHgwODA0LCAweGE2YmQsCi0JMHgwMGQ2LCAweDA4MGMsIDB4YTEwYywgMHg3MDAzLCAweDAyMTAsIDB4NzAwNywgMHgwMDE0LCAweDcwMGIsCi0JMHgwODAwLCAweGI4OTQsIDB4OTA4NiwgMHgwMDE0LCAweDExOTgsIDB4Yjk5YywgMHg5MTg0LCAweDAwMzAsCi0JMHgwMTkwLCAweGI5OTgsIDB4OTE4NCwgMHhjMDAwLCAweDExNDAsIDB4ZDFlYywgMHgwMTE4LCAweDcwMGYsCi0JMHgyMTAwLCAweDAwNTgsIDB4NzAwZiwgMHgwMTAwLCAweDAwNDAsIDB4NzAwZiwgMHgwNDAwLCAweDAwMjgsCi0JMHg3MDBmLCAweDA3MDAsIDB4MDAxMCwgMHg3MDBmLCAweDA4MDAsIDB4MDBmNiwgMHgyMDc5LCAweDE4NDcsCi0JMHg3OTA0LCAweDAwZmUsIDB4ZDFhYywgMHgxMTEwLCAweDkwODUsIDB4MDAyMCwgMHhkMWE0LCAweDAxMTAsCi0JMHg5MDg1LCAweDAwMTAsIDB4MjAwOSwgMHgxODY5LCAweDIxMGMsIDB4ZDE4NCwgMHgxMTEwLCAweDkwODUsCi0JMHgwMDAyLCAweDAwMjYsIDB4MjAwOSwgMHgxODY3LCAweDIxMGMsIDB4ZDFlNCwgMHgwMTUwLCAweGMwYzUsCi0JMHhiYWNjLCAweGQyOGMsIDB4MTEwOCwgMHhjMGNkLCAweDkwOTQsIDB4MDAzMCwgMHg5Mjk2LCAweDAwMTAsCi0JMHgwMTQwLCAweGQxZWMsIDB4MDEzMCwgMHg5MDk0LCAweDAwMzAsIDB4OTI5NiwgMHgwMDEwLCAweDAxMDgsCi0JMHhjMGJkLCAweDAwMmUsIDB4NzAyNiwgMHg2MGMzLCAweDAwMTQsIDB4MDBkZSwgMHgwODA0LCAweGE2YmQsCi0JMHgwODBjLCAweGExMGMsIDB4NzAwMywgMHgwMjEwLCAweDcwMDcsIDB4MDAxNCwgMHg3MDBmLCAweDAxMDAsCi0JMHg2MGMzLCAweDAwMTQsIDB4MDgwNCwgMHhhNmJkLCAweDA4MGMsIDB4YTEwYywgMHg3MDAzLCAweDAyMDAsCi0JMHgwODA0LCAweDllYWUsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsIDB4MDEwMCwgMHg3MDBiLCAweDAwMDMsCi0JMHg3MDBmLCAweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTZiZCwgMHgwODBjLCAweGExMGMsCi0JMHg3MDAzLCAweDAxMDAsIDB4NzAwYiwgMHgwMDBiLCAweDYwYzMsIDB4MDAwOCwgMHgwODA0LCAweGE2YmQsCi0JMHgwMDI2LCAweDAwZDYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksIDB4MzIwMCwgMHgyMDIxLCAweDA4MDAsCi0JMHgwMDQwLCAweDAwMjYsIDB4MDBkNiwgMHgwMDM2LCAweDAwNDYsIDB4MjAxOSwgMHgyMjAwLCAweDIwMjEsCi0JMHgwMTAwLCAweDA4MGMsIDB4YWY4ZSwgMHhiODEwLCAweDkzMDUsIDB4NzAwMiwgMHhiODE0LCAweDcwMDYsCi0JMHgyMDY5LCAweDE4MDAsIDB4Njg3YywgMHg3MDBhLCAweDY4ODAsIDB4NzAwZSwgMHg5NDg1LCAweDAwMjksCi0JMHg3MDEyLCAweDAwNGUsIDB4MDAzZSwgMHgwMGRlLCAweDA4MGMsIDB4YTZhYiwgMHg3MjFhLCAweDlmOTUsCi0JMHgwMDAwLCAweDcyMjIsIDB4NzAyNywgMHhmZmZmLCAweDIwNzEsIDB4MDI0YywgMHgwMDJlLCAweDAwMDUsCi0JMHgwMDI2LCAweDA4MGMsIDB4YWY4ZSwgMHg3MDAzLCAweDAyZmYsIDB4NzAwNywgMHhmZmZjLCAweDAwZDYsCi0JMHgyMDY5LCAweDE4MDAsIDB4Njg3YywgMHg3MDBhLCAweDY4ODAsIDB4NzAwZSwgMHgwMGRlLCAweDcwMTMsCi0JMHgyMDI5LCAweDBjMTAsIDB4NzAwMywgMHgwMTAwLCAweDcwMDcsIDB4MDAwMCwgMHg3MDBiLCAweGZjMDIsCi0JMHg3MDBmLCAweDAwMDAsIDB4MDAwNSwgMHgwMDI2LCAweDAwZDYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksCi0JMHgzMzAwLCAweDIwMjEsIDB4MDgwMCwgMHgwMDQwLCAweDAwMjYsIDB4MDBkNiwgMHgwMDM2LCAweDAwNDYsCi0JMHgyMDE5LCAweDIzMDAsIDB4MjAyMSwgMHgwMTAwLCAweDA4MGMsIDB4YWY4ZSwgMHhiODEwLCAweDkzMDUsCi0JMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsIDB4YjgxMCwgMHg5MDA1LCAweDExNDAsCi0JMHhiODE0LCAweDkwMDUsIDB4MTEyOCwgMHg3MDBiLCAweDAwZmYsIDB4NzAwZiwgMHhmZmZlLCAweDAwMjAsCi0JMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDAwMDAsIDB4OTQ4NSwgMHgwMDk4LCAweDcwMTIsCi0JMHgwMDRlLCAweDAwM2UsIDB4MDBkZSwgMHgwODBjLCAweGE2YWIsIDB4NzIxYSwgMHg3YTA4LCAweDcyMjIsCi0JMHgyZjEwLCAweDcyMjYsIDB4MjA3MSwgMHgwMjRjLCAweDAwMmUsIDB4MDAwNSwgMHgwODBjLCAweGE2YWIsCi0JMHg3MjFhLCAweDdhMDgsIDB4NzIyMiwgMHg3ODE0LCAweDcwMjYsIDB4MjA3MSwgMHgwMjRjLCAweDAwMmUsCi0JMHgwMDA1LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwgMHgyMDY5LCAweDAyMDAsCi0JMHgyMDcxLCAweDAyNDAsIDB4NjAwNCwgMHg5MDhhLCAweDAwODUsIDB4MGEwYywgMHgwZGM1LCAweDkwOGEsCi0JMHgwMDkyLCAweDFhMGMsIDB4MGRjNSwgMHg2MTEwLCAweDIxNTgsIDB4YjljMCwgMHgyYzc4LCAweDIwNjEsCi0JMHgwMTAwLCAweDYxOWEsIDB4OTA4MiwgMHgwMDg1LCAweDAwMzMsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsCi0JMHgwMGNlLCAweDAwYmUsIDB4MDAwNSwgMHhhMTdhLCAweGExODksIDB4YTE5NCwgMHhhMTc4LCAweGExNzgsCi0JMHhhMTc4LCAweGExN2EsIDB4YTE3OCwgMHhhMTc4LCAweGExNzgsIDB4YTE3OCwgMHhhMTc4LCAweGExNzgsCi0JMHgwODBjLCAweDBkYzUsIDB4MDQxMSwgMHg2MGMzLCAweDAwMDAsIDB4MDAyNiwgMHgwODBjLCAweDJiY2UsCi0JMHgwMjI4LCAweDIwMTEsIDB4MDEwMSwgMHgyMjA0LCAweGMwYzUsIDB4MjAxMiwgMHgwMDJlLCAweDA4MDQsCi0JMHhhNmJkLCAweDA0MzEsIDB4NzgwOCwgMHg3MDBhLCAweDc4MTQsIDB4NzAwZSwgMHg3MDE3LCAweGZmZmYsCi0JMHg2MGMzLCAweDAwMGMsIDB4MDgwNCwgMHhhNmJkLCAweDA0YTEsIDB4NzAwMywgMHgwMDAzLCAweDcwMDcsCi0JMHgwMzAwLCAweDYwYzMsIDB4MDAwNCwgMHgwODA0LCAweGE2YmQsIDB4MDAyNiwgMHgwODBjLCAweGFmOGUsCi0JMHhiODEwLCAweDkwODUsIDB4ODEwMCwgMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsCi0JMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDcwMTMsIDB4MDAwOSwgMHgwODA0LCAweGEwZGMsCi0JMHgwMDI2LCAweDA4MGMsIDB4YWY4ZSwgMHhiODEwLCAweDkwODUsIDB4ODQwMCwgMHg3MDAyLCAweGI4MTQsCi0JMHg3MDA2LCAweDIwNjksIDB4MTgwMCwgMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDIwMDEsCi0JMHgwMDk5LCAweDdhMjAsIDB4OTI5NiwgMHgwMDA1LCAweDAxMDgsIDB4YzBiYywgMHg3MDEyLCAweDA4MDQsCi0JMHhhMTNlLCAweDAwMjYsIDB4MDgwYywgMHhhZjhlLCAweGI4MTAsIDB4OTA4NSwgMHg4NTAwLCAweDcwMDIsCi0JMHhiODE0LCAweDcwMDYsIDB4MjA2OSwgMHgxODAwLCAweDY4N2MsIDB4NzAwYSwgMHg2ODgwLCAweDcwMGUsCi0JMHgyMDAxLCAweDAwOTksIDB4N2EyMCwgMHg5Mjk2LCAweDAwMDUsIDB4MDEwOCwgMHhjMGJjLCAweDcwMTIsCi0JMHgwODA0LCAweGExM2UsIDB4MDBiNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDJjNzgsCi0JMHgyMDY5LCAweDAyMDAsIDB4MjA3MSwgMHgwMjQwLCAweDc4MDQsIDB4OTA4YSwgMHgwMDQwLCAweDBhMGMsCi0JMHgwZGM1LCAweDkwOGEsIDB4MDA1NCwgMHgxYTBjLCAweDBkYzUsIDB4NzkxMCwgMHgyMTU4LCAweGI5YzAsCi0JMHgyMDYxLCAweDAxMDAsIDB4NjE5YSwgMHg5MDgyLCAweDAwNDAsIDB4MDAzMywgMHgwMGZlLCAweDAwZWUsCi0JMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweGEyMTksIDB4YTJlMCwgMHhhMmIzLCAweGE0MDIsCi0JMHhhMjE3LCAweGEyMTcsIDB4YTIxNywgMHhhMjE3LCAweGEyMTcsIDB4YTIxNywgMHhhMjE3LCAweGFhZDgsCi0JMHhhYWRkLCAweGFhZTIsIDB4YWFlNywgMHhhMjE3LCAweGFlZDYsIDB4YTIxNywgMHhhYWQzLCAweDA4MGMsCi0JMHgwZGM1LCAweDAwOTYsIDB4NzgwYiwgMHhmZmZmLCAweDA4MGMsIDB4YTI4NCwgMHg3OTE0LCAweDIxNDgsCi0JMHhhOTc4LCAweDc5NTYsIDB4YWU2NCwgMHg5NmI0LCAweDAwZmYsIDB4OTY4NiwgMHgwMDA4LCAweDExNDgsCi0JMHhhOGI0LCAweDcwMzIsIDB4YThiOCwgMHg3MDM2LCAweGE4YmMsIDB4NzAzYSwgMHhhOGMwLCAweDcwM2UsCi0JMHgwMDA4LCAweDcxMzIsIDB4YTk3YywgMHg5MTg0LCAweDAwMGYsIDB4MTExOCwgMHgyMDAxLCAweDAwMDUsCi0JMHgwMDQwLCAweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAxOCwgMHg5MDg0LCAweDAwMDYsCi0JMHg4MDA0LCAweDIwMTAsIDB4Nzg1YywgMHg5MDg0LCAweDAwZmYsIDB4ODAwNywgMHg5MjA1LCAweDcwNDIsCi0JMHhkMWFjLCAweDAxNTgsIDB4NzA0NywgMHgwMDAyLCAweDk2ODYsIDB4MDAwOCwgMHgxMTE4LCAweDA4MGMsCi0JMHgxOGY3LCAweDAwMTAsIDB4MDgwYywgMHgxNzY4LCAweDAwNTAsIDB4ZDFiNCwgMHgwMTE4LCAweDcwNDcsCi0JMHgwMDAxLCAweDAwMjgsIDB4NzA0NywgMHgwMDAwLCAweDkwMTYsIDB4MjIzMCwgMHgwMDEwLCAweGFhYjAsCi0JMHhhZWFjLCAweDcyNmEsIDB4NzY2ZSwgMHgyMGE5LCAweDAwMDgsIDB4MjBlOSwgMHgwMDAwLCAweGE4NjAsCi0JMHgyMGUwLCAweGE4NWMsIDB4OTA4MCwgMHgwMDIzLCAweDIwOTgsIDB4MjBhMSwgMHgwMjUyLCAweDIwNjksCi0JMHgwMjAwLCAweDY4MTMsIDB4MDAxOCwgMHg0MDAzLCAweDY4MTMsIDB4MDAwOCwgMHg2MGMzLCAweDAwMjAsCi0JMHg2MDE3LCAweDAwMDksIDB4MjAwMSwgMHgxYTA0LCAweDIwMDMsIDB4MDdkMCwgMHgyMDAxLCAweDFhMDMsCi0JMHgyMDAzLCAweDAwMDksIDB4MDA5ZSwgMHgwMDA1LCAweDY4MTMsIDB4MDAwOCwgMHhiYThjLCAweDgyMTAsCi0JMHhiOGNjLCAweGQwODQsIDB4MDE4MCwgMHgyMDAxLCAweDFhZDAsIDB4MjAwYywgMHg4MTA4LCAweDIxMDIsCi0JMHgyMDAxLCAweDFhY2YsIDB4MjAxYywgMHgxMjE4LCAweDgzMTgsIDB4MjMwMiwgMHgwZWEwLCAweDc5NGEsCi0JMHg3MTJlLCAweDdiNDYsIDB4NzMyYSwgMHg5Mjk0LCAweDAwZmYsIDB4YmE4ZSwgMHg4MjE3LCAweDcyMWEsCi0JMHhiYTEwLCAweDkyOTUsIDB4MDYwMCwgMHg3MjAyLCAweGJhMTQsIDB4NzIwNiwgMHgyMDY5LCAweDE4MDAsCi0JMHg2YTdjLCAweDcyMGEsIDB4NmE4MCwgMHg3MjBlLCAweDcwMTMsIDB4MDgyOSwgMHgyZjEwLCAweDcyMjIsCi0JMHg3MDI3LCAweGZmZmYsIDB4MDAwNSwgMHgwMGQ2LCAweDAwOTYsIDB4MDA4MSwgMHg3ODE0LCAweDIwNDgsCi0JMHhhODkwLCAweDcwMDIsIDB4YTg4YywgMHg3MDA2LCAweGE4YjAsIDB4NzAwYSwgMHhhOGFjLCAweDcwMGUsCi0JMHg2MGMzLCAweDAwMGMsIDB4MDA5ZSwgMHgwMGRlLCAweDA4MDQsIDB4YTZiZCwgMHg2ODEzLCAweDAwMDgsCi0JMHhiODEwLCAweDkwODUsIDB4MDUwMCwgMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsCi0JMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDcwMTMsIDB4MDg4OSwgMHgwODBjLCAweGE2YWIsCi0JMHg3MjFhLCAweDdhMDgsIDB4NzIyMiwgMHgyZjEwLCAweDcyMjYsIDB4MjA3MSwgMHgwMjRjLCAweDAwMDUsCi0JMHgwMGQ2LCAweDAwOTYsIDB4MDgwYywgMHhhM2UwLCAweDc4MTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDYsCi0JMHgxMTMwLCAweDc4MTQsIDB4OTA4NCwgMHgwNzAwLCAweDgwMDcsIDB4MDAzMywgMHgwMDEwLCAweDkwMDYsCi0JMHgwMDFiLCAweDAwOWUsIDB4MDBkZSwgMHgwMDA1LCAweGEyZmUsIDB4YTM2NywgMHhhMzc3LCAweGEzOWQsCi0JMHhhM2E5LCAweGEzYmEsIDB4YTNjMiwgMHhhMmZjLCAweDA4MGMsIDB4MGRjNSwgMHgwMDE2LCAweDAwMzYsCi0JMHhhOTdjLCAweDkxOGMsIDB4MDAwMywgMHgwMTE4LCAweDkxODYsIDB4MDAwMywgMHgxMTk4LCAweGFiYTgsCi0JMHg3ODI0LCAweGQwY2MsIDB4MTE2OCwgMHg3MzE2LCAweGE4OTgsIDB4NzAxYSwgMHhhODk0LCAweDcwMWUsCi0JMHgwMDNlLCAweDAwMWUsIDB4MjAwMSwgMHgxOWIyLCAweDIwMDQsIDB4NjBjMiwgMHgwODA0LCAweGE2YmQsCi0JMHhjM2U1LCAweDBjODgsIDB4OTE4NiwgMHgwMDAxLCAweDE5MGMsIDB4MGRjNSwgMHhhYmE4LCAweDc4MjQsCi0JMHhkMGNjLCAweDE5MDQsIDB4YTM2NCwgMHg3MzE2LCAweGE4OTgsIDB4NzAxYSwgMHhhODk0LCAweDcwMWUsCi0JMHhhOGE0LCAweDcwMjYsIDB4YThhYywgMHg3MDJlLCAweDIwMDksIDB4MDAxOCwgMHg5Mzg0LCAweDAzMDAsCi0JMHgwNTcwLCAweGQzYzQsIDB4MDExMCwgMHhhOGFjLCAweDkxMDgsIDB4ZDNjYywgMHgwMTEwLCAweGE4YTQsCi0JMHg5MTA4LCAweDY4MTAsIDB4OTA4NSwgMHgwMDEwLCAweDY4MTIsIDB4MjAxMSwgMHgwMjU4LCAweDIwZTksCi0JMHgwMDAwLCAweDIyYTAsIDB4MDE1NiwgMHgyMGE5LCAweDAwMDgsIDB4YTg2MCwgMHgyMGUwLCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMmMsIDB4MjA5OCwgMHg0MDAzLCAweDY4MTAsIDB4ODAwMCwgMHg2ODEyLCAweDIwMTEsCi0JMHgwMjQwLCAweDIyYTAsIDB4MjBhOSwgMHgwMDA1LCAweDQwMDMsIDB4NjgxMCwgMHhjMGE0LCAweDY4MTIsCi0JMHgwMTVlLCAweDkxODQsIDB4MDAwMywgMHgwMTE4LCAweDIwMTksIDB4MDI0NSwgMHgyMDFhLCAweDYxYzIsCi0JMHgwMDNlLCAweDAwMWUsIDB4MDgwNCwgMHhhNmJkLCAweGMzZTUsIDB4MDgwNCwgMHhhMzIzLCAweDIwMTEsCi0JMHgwMDA4LCAweDIwMDEsIDB4MTgwZiwgMHgyMDA0LCAweGQwYTQsIDB4MDExMCwgMHgyMDExLCAweDAwMjgsCi0JMHg3ODI0LCAweGQwY2MsIDB4MTExMCwgMHg3MjE2LCAweDA0NzAsIDB4MGNlOCwgMHhjMmU1LCAweDIwMTEsCi0JMHgwMzAyLCAweDAwMTYsIDB4NzgyYywgMHg3MDFhLCAweDc5MzAsIDB4NzExZSwgMHg5MTA1LCAweDAxMDgsCi0JMHhjMmRkLCAweDAwMWUsIDB4NzgyNCwgMHhkMGNjLCAweDAxMDgsIDB4YzJlNSwgMHg3MjE2LCAweDcwMjcsCi0JMHgwMDEyLCAweDcwMmYsIDB4MDAwOCwgMHg3MDQzLCAweDcwMDAsIDB4NzA0NywgMHgwNTAwLCAweDcwNGYsCi0JMHgwMDBhLCAweDIwNjksIDB4MDIwMCwgMHg2ODEzLCAweDAwMDksIDB4MjA3MSwgMHgwMjQwLCAweDcwMGIsCi0JMHgyNTAwLCAweDYwYzMsIDB4MDAzMiwgMHgwODA0LCAweGE2YmQsIDB4MjAxMSwgMHgwMDI4LCAweDc4MjQsCi0JMHhkMGNjLCAweDExMjgsIDB4NzIxNiwgMHg2MGMzLCAweDAwMTgsIDB4MDgwNCwgMHhhNmJkLCAweDBjZDAsCi0JMHhjMmU1LCAweDIwMTEsIDB4MDEwMCwgMHg3ODI0LCAweGQwY2MsIDB4MDEwOCwgMHhjMmU1LCAweDcyMTYsCi0JMHg3MDJmLCAweDAwMDgsIDB4Nzg1OCwgMHg5MDg0LCAweDAwZmYsIDB4NzAzNiwgMHg2MGMzLCAweDAwMjAsCi0JMHgwODA0LCAweGE2YmQsIDB4MjAxMSwgMHgwMDA4LCAweDc4MjQsIDB4ZDBjYywgMHgwMTA4LCAweGMyZTUsCi0JMHg3MjE2LCAweDBjMDgsIDB4MDAzNiwgMHg3YjE0LCAweDkzODQsIDB4ZmYwMCwgMHg3ODE2LCAweDkzODQsCi0JMHgwMGZmLCAweDgwMDEsIDB4MTEzOCwgMHg3ODI0LCAweGQwY2MsIDB4MDEwOCwgMHhjMmU1LCAweDcyMTYsCi0JMHgwMDNlLCAweDA4ODgsIDB4MDA0NiwgMHgyMDIxLCAweDA4MDAsIDB4MDAwNiwgMHg3ODI0LCAweGQwY2MsCi0JMHgwMDBlLCAweDAxMDgsIDB4YzRlNSwgMHg3NDE2LCAweDAwNGUsIDB4NzAxZSwgMHgwMDNlLCAweDA4MTgsCi0JMHgwMGQ2LCAweDY4MTMsIDB4MDAwOCwgMHhiODEwLCAweDkwODUsIDB4MDcwMCwgMHg3MDAyLCAweGI4MTQsCi0JMHg3MDA2LCAweDIwNjksIDB4MTgwMCwgMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDc4MjQsCi0JMHhkMGNjLCAweDExNjgsIDB4NzAxMywgMHgwODk4LCAweDA4MGMsIDB4YTZhYiwgMHg3MjFhLCAweDdhMDgsCi0JMHg3MjIyLCAweDJmMTAsIDB4NzIyNiwgMHgyMDcxLCAweDAyNGMsIDB4MDBkZSwgMHgwMDA1LCAweDcwMTMsCi0JMHgwODg5LCAweDBjOTAsIDB4MDAxNiwgMHg3ODE0LCAweDkwODQsIDB4MDcwMCwgMHg4MDA3LCAweDAwMTMsCi0JMHgwMDFlLCAweDAwMDUsIDB4YTQxMiwgMHhhNDEyLCAweGE0MTQsIDB4YTQxMiwgMHhhNDEyLCAweGE0MTIsCi0JMHhhNDJlLCAweGE0MTIsIDB4MDgwYywgMHgwZGM1LCAweDc5MTQsIDB4OTE4YywgMHgwOGZmLCAweDkxOGQsCi0JMHhmNjAwLCAweDc5MTYsIDB4MjAwOSwgMHgwMDAzLCAweDAwYjksIDB4MjA2OSwgMHgxODQ3LCAweDY4MDQsCi0JMHhkMGJjLCAweDAxMzAsIDB4NjgyYywgMHg5MDg0LCAweDAwZmYsIDB4ODAwNywgMHg3MDMyLCAweDAwMTAsCi0JMHg3MDMzLCAweDNmMDAsIDB4NjBjMywgMHgwMDAxLCAweDA4MDQsIDB4YTZiZCwgMHgyMDA5LCAweDAwMDMsCi0JMHgwMDE5LCAweDcwMzMsIDB4N2YwMCwgMHgwY2IwLCAweDAwMTYsIDB4MDgwYywgMHhhZjhlLCAweDAwMWUsCi0JMHhiODEwLCAweDkwODUsIDB4MDEwMCwgMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsCi0JMHg2YTdjLCAweDcyMGEsIDB4NmE4MCwgMHg3MjBlLCAweDcwMTMsIDB4MDg4OCwgMHg5MThkLCAweDAwMDgsCi0JMHg3MTE2LCAweDA4MGMsIDB4YTZhYiwgMHg3MjFhLCAweDdhMDgsIDB4NzIyMiwgMHgyZjEwLCAweDcyMjYsCi0JMHgwMDA1LCAweDAwYjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwNDYsCi0JMHgwMDM2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzE2MCwgMHg3ODEwLCAweDIwNTgsCi0JMHg3NmRjLCAweDk2YjQsIDB4MDAyOCwgMHgwMTEwLCAweDczN2MsIDB4NzQ4MCwgMHgyNTAwLCAweDc2ZGMsCi0JMHg5NmI0LCAweDAwMjgsIDB4MDE0MCwgMHgyMDAxLCAweDA0ZmYsIDB4NjA2MiwgMHg2MDY3LCAweGZmZmYsCi0JMHg2MzZhLCAweDY0NmUsIDB4MDA1MCwgMHgyMDAxLCAweDAwZmYsIDB4OTA4NSwgMHgwNDAwLCAweDYwNjIsCi0JMHg2MDY3LCAweGZmZmYsIDB4NjA2YiwgMHgwMDAwLCAweDYxNmUsIDB4YjhiOCwgMHg2MDczLCAweDA1MzAsCi0JMHg2MDc3LCAweDAwMDgsIDB4Yjg4YywgMHg4MDAwLCAweDkwODQsIDB4MDBmZiwgMHhiODhlLCAweDgwMDcsCi0JMHg5MDg1LCAweDAwMjAsIDB4NjA3YSwgMHg2MDdmLCAweDAwMDAsIDB4MmIwMCwgMHg2MDgyLCAweDYwODcsCi0JMHhmZmZmLCAweDc4MTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4MzgsIDB4NjA4YSwgMHhhODM0LCAweDYwOGUsCi0JMHhhODQ4LCAweDYwYzYsIDB4YTg0NCwgMHg2MGNhLCAweDAwOWUsIDB4Yjg2YywgMHg2MGNlLCAweDYwYWIsCi0JMHgwMDM2LCAweDYwYWYsIDB4OTVkNSwgMHg2MGQ3LCAweDAwMDAsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsCi0JMHg5MDg0LCAweDAwMjgsIDB4MDEyOCwgMHg2MDlmLCAweDAwMDAsIDB4MjAwMSwgMHgwMDkyLCAweDAwNDgsCi0JMHg2MDI4LCAweGMwYmQsIDB4NjAyYSwgMHg2MDlmLCAweDAwZmYsIDB4NjAyNywgMHhmZmZmLCAweDIwMDEsCi0JMHgwMGIyLCAweDYwMTYsIDB4MjAwOSwgMHgwN2QwLCAweDA4MGMsIDB4ODhjOCwgMHgwMDNlLCAweDAwNGUsCi0JMHgwMDVlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBiZSwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDM2LCAweDIwNjEsCi0JMHgwMTAwLCAweDIwNzEsIDB4MTgwMCwgMHg3MTYwLCAweDc4MTAsIDB4MjA1OCwgMHhiOGEwLCAweDIwMjgsCi0JMHg3NmRjLCAweGQ2YWMsIDB4MTE2OCwgMHg5NTgyLCAweDAwN2UsIDB4MTI1MCwgMHgyNTAwLCAweDkwOTQsCi0JMHhmZjgwLCAweDExMzAsIDB4OTA4MCwgMHgzM2I2LCAweDIwMTUsIDB4OTI5NCwgMHgwMGZmLCAweDAwMjAsCi0JMHhiOTEwLCAweGJhMTQsIDB4NzM3YywgMHg3NDgwLCAweDcwZGMsIDB4ZDBhYywgMHgxMTMwLCAweDk1ODIsCi0JMHgwMDdlLCAweDEyMTgsIDB4OTU4NCwgMHhmZjgwLCAweDAxMzgsIDB4OTE4NSwgMHgwNDAwLCAweDYwNjIsCi0JMHg2MjY2LCAweDYzNmEsIDB4NjQ2ZSwgMHgwMDMwLCAweDYwNjMsIDB4MDQwMCwgMHg2MjY2LCAweDYwNmIsCi0JMHgwMDAwLCAweDYxNmUsIDB4YjhiOCwgMHg2MDcyLCAweDYwNzcsIDB4MDAwMCwgMHhiODY0LCAweGQwYTQsCi0JMHgwMTEwLCAweDYwNzcsIDB4MDAwOCwgMHhiODhjLCAweDgwMDAsIDB4OTA4NCwgMHgwMGZmLCAweGI4OGUsCi0JMHg4MDA3LCAweDkwODUsIDB4MDAyMCwgMHg2MDdhLCAweDYwN2YsIDB4MDAwMCwgMHgyYjAwLCAweDYwODIsCi0JMHg2MDg3LCAweGZmZmYsIDB4NzgxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTgzOCwgMHg2MDhhLCAweGE4MzQsCi0JMHg2MDhlLCAweGE4NDgsIDB4NjBjNiwgMHhhODQ0LCAweDYwY2EsIDB4MDA5ZSwgMHhiODZjLCAweDYwY2UsCi0JMHg2MGFiLCAweDAwMzYsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsIDB4MDAwMCwgMHhiYWMwLCAweDYyOWUsCi0JMHgwMGY2LCAweDIwNzksIDB4MDE0MCwgMHg3ODAzLCAweDAwMDAsIDB4MDBmZSwgMHgyMDA5LCAweDAwOTIsCi0JMHg2MTE2LCAweDIwMDksIDB4MDdkMCwgMHgwODBjLCAweDg4YzgsIDB4MDAzZSwgMHgwMDRlLCAweDAwNWUsCi0JMHgwMDZlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsCi0JMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHgwMDU2LCAweDAwNDYsIDB4MDAzNiwgMHgyMDYxLCAweDAxMDAsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzgxMCwgMHgyMDU4LCAweGI4YTAsIDB4MjAyOCwgMHhiOTEwLCAweGJhMTQsCi0JMHg3MzdjLCAweDc0ODAsIDB4NzgyMCwgMHg5MGJlLCAweDAwMDYsIDB4MDkwNCwgMHhhNjFhLCAweDkwYmUsCi0JMHgwMDBhLCAweDE5MDQsIDB4YTVkNiwgMHhiOGMwLCAweDYwOWUsIDB4NzgxNCwgMHgyMDQ4LCAweGE4N2MsCi0JMHhkMGZjLCAweDA1NTgsIDB4YWY5MCwgMHg5Nzg0LCAweGZmMDAsIDB4OTEwNSwgMHg2MDYyLCAweDg3M2YsCi0JMHg5Nzg0LCAweGZmMDAsIDB4MDAwNiwgMHg3ODE0LCAweDIwNDgsIDB4YTg3OCwgMHhjMGZjLCAweDkwMDUsCi0JMHgwMDBlLCAweDExNjAsIDB4YWY5NCwgMHg4N2ZmLCAweDAxOTgsIDB4MjAzOSwgMHgwMDk4LCAweDk3MDUsCi0JMHg2MDcyLCAweDc4MDgsIDB4NjA4MiwgMHgyZjAwLCAweDYwODYsIDB4MDAzOCwgMHg5MTg1LCAweDIyMDAsCi0JMHg2MDYyLCAweDYwNzMsIDB4MDEyOSwgMHg2MDc3LCAweDAwMDAsIDB4YjhjMCwgMHg2MDllLCAweDAwNTAsCi0JMHgyMDM5LCAweDAwMjksIDB4OTcwNSwgMHg2MDcyLCAweDBjYzAsIDB4OTE4NSwgMHgwMjAwLCAweDYwNjIsCi0JMHg2MDczLCAweDIwMjksIDB4YTg3YywgMHhkMGZjLCAweDAxMTgsIDB4YWY5NCwgMHg4N2ZmLCAweDExMjAsCi0JMHgyZjAwLCAweDYwODIsIDB4NzgwOCwgMHg2MDg2LCAweDYyNjYsIDB4NjM2YSwgMHg2NDZlLCAweDYwNzcsCi0JMHgwMDAwLCAweGI4OGMsIDB4ODAwMCwgMHg5MDg0LCAweDAwZmYsIDB4Yjg4ZSwgMHg4MDA3LCAweDYwN2EsCi0JMHg2MDdmLCAweDAwMDAsIDB4YTgzOCwgMHg2MDhhLCAweGE4MzQsIDB4NjA4ZSwgMHhhODQ4LCAweDYwYzYsCi0JMHhhODQ0LCAweDYwY2EsIDB4Yjg2YywgMHg2MGNlLCAweDYwYWYsIDB4OTVkNSwgMHg2MGQ3LCAweDAwMDAsCi0JMHgwODBjLCAweGFmNzMsIDB4MjAwOSwgMHgwN2QwLCAweDYwYzQsIDB4OTA4NCwgMHhmZmYwLCAweDkwMDUsCi0JMHgwMTEwLCAweDIwMDksIDB4MWI1OCwgMHgwODBjLCAweDg4YzgsIDB4MDAzZSwgMHgwMDRlLCAweDAwNWUsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDllLCAweDAwYmUsIDB4MDAwNSwgMHg3ODA0LCAweDkwODYsCi0JMHgwMDQwLCAweDA5MDQsIDB4YTY1NiwgMHg5MTg1LCAweDAxMDAsIDB4NjA2MiwgMHg2MjY2LCAweDYzNmEsCi0JMHg2NDZlLCAweDYwNzMsIDB4MDgwOSwgMHg2MDc3LCAweDAwMDgsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsCi0JMHgwMDAwLCAweGI4OGMsIDB4ODAwMCwgMHg5MDg0LCAweDAwZmYsIDB4Yjg4ZSwgMHg4MDA3LCAweDYwN2EsCi0JMHg2MDdmLCAweDAwMDAsIDB4MmYwMCwgMHg2MDgyLCAweDc4MDgsIDB4NjA4NiwgMHg3ODE0LCAweDIwNDgsCi0JMHhhODM4LCAweDYwOGEsIDB4YTgzNCwgMHg2MDhlLCAweGE4NDgsIDB4NjBjNiwgMHhhODQ0LCAweDYwY2EsCi0JMHhiODZjLCAweDYwY2UsIDB4YmFjMCwgMHg2MjllLCAweDA4MGMsIDB4YWY3MywgMHgyMDA5LCAweDA3ZDAsCi0JMHg2MGM0LCAweDkwODQsIDB4ZmZmMCwgMHg5MDA1LCAweDAxMTAsIDB4MjAwOSwgMHgxYjU4LCAweDA4MGMsCi0JMHg4OGM4LCAweDAwM2UsIDB4MDA0ZSwgMHgwMDVlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwOWUsCi0JMHgwMGJlLCAweDAwMDUsIDB4NzgxNCwgMHgyMDQ4LCAweGE4N2MsIDB4OTA4NCwgMHgwMDAzLCAweDkwODYsCi0JMHgwMDAyLCAweDA5MDQsIDB4YTY3MiwgMHg5MTg1LCAweDAxMDAsIDB4NjA2MiwgMHg2MjY2LCAweDYzNmEsCi0JMHg2NDZlLCAweDYwNzMsIDB4MDg4MCwgMHg2MDc3LCAweDAwMDgsIDB4Yjg4YywgMHg4MDAwLCAweDkwODQsCi0JMHgwMGZmLCAweGI4OGUsIDB4ODAwNywgMHg2MDdhLCAweDc4MzgsIDB4NjA3ZSwgMHgyZjAwLCAweDYwODYsCi0JMHg3ODA4LCAweDYwODIsIDB4YTg5MCwgMHg2MDhhLCAweGE4OGMsIDB4NjA4ZSwgMHhhOGIwLCAweDYwYzYsCi0JMHhhOGFjLCAweDYwY2EsIDB4YThhYywgMHg3OTMwLCAweDkxMDgsIDB4NzkzMiwgMHhhOGIwLCAweDc5MmMsCi0JMHg5MTA5LCAweDc5MmUsIDB4Yjg2YywgMHg2MGNlLCAweDYwYWYsIDB4OTVkNSwgMHg2MGQ3LCAweDAwMDAsCi0JMHhiYWMwLCAweDYyOWUsIDB4MDgwYywgMHhhZjUwLCAweDA4MDQsIDB4YTYwNiwgMHhiOGNjLCAweGQwODQsCi0JMHgwMTQ4LCAweGI4OGMsIDB4NzgxNCwgMHgyMDQ4LCAweGI4OGMsIDB4Nzg0YSwgMHhhODM2LCAweDI5MDAsCi0JMHhhODNhLCAweGIwNDYsIDB4OTE4NSwgMHgwNjAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MzZhLCAweDY0NmUsCi0JMHg2MDczLCAweDA4MjksIDB4NjA3NywgMHgwMDAwLCAweDYwYWYsIDB4OTU3NSwgMHg2MGQ3LCAweDAwMDAsCi0JMHgwODA0LCAweGE1ZTksIDB4OTE4NSwgMHgwNzAwLCAweDYwNjIsIDB4NjI2NiwgMHg2MzZhLCAweDY0NmUsCi0JMHg3ODI0LCAweGQwY2MsIDB4NzgyNiwgMHgwMTE4LCAweDYwNzMsIDB4MDg4OSwgMHgwMDEwLCAweDYwNzMsCi0JMHgwODk4LCAweDYwNzcsIDB4MDAwMCwgMHhiODhjLCAweDgwMDAsIDB4OTA4NCwgMHgwMGZmLCAweGI4OGUsCi0JMHg4MDA3LCAweDYwN2EsIDB4NjA3ZiwgMHgwMDAwLCAweDJmMDAsIDB4NjA4NiwgMHg3ODA4LCAweDYwODIsCi0JMHhhODM4LCAweDYwOGEsIDB4YTgzNCwgMHg2MDhlLCAweGE4NDgsIDB4NjBjNiwgMHhhODQ0LCAweDYwY2EsCi0JMHhiODZjLCAweDYwY2UsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsIDB4MDAwMCwgMHhiYWMwLCAweDYyOWUsCi0JMHg3ODI0LCAweGQwY2MsIDB4MDEyMCwgMHgwODBjLCAweGFmNzMsIDB4MDgwNCwgMHhhNjA2LCAweDA4MGMsCi0JMHhhZjUwLCAweDA4MDQsIDB4YTYwNiwgMHg3YTEwLCAweDAwYjYsIDB4MjI1OCwgMHhiYThjLCAweDgyMTAsCi0JMHg5Mjk0LCAweDAwZmYsIDB4YmE4ZSwgMHgwMGJlLCAweDgyMTcsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksCi0JMHgxOWU4LCAweDY4NDMsIDB4MDAwMSwgMHgwMGRlLCAweDAwMDUsIDB4NjBhMywgMHgwMDU2LCAweDYwYTcsCi0JMHg5NTc1LCAweDAwZjEsIDB4MDgwYywgMHg4OGJhLCAweDAwMDUsIDB4MDAxNiwgMHgyMDAxLCAweDE4MGMsCi0JMHgyMDBjLCAweDkxODQsIDB4MDYwMCwgMHg5MDg2LCAweDA2MDAsIDB4MDEyOCwgMHgwMDg5LCAweDA4MGMsCi0JMHg4OGJhLCAweDAwMWUsIDB4MDAwNSwgMHhjMWU1LCAweDIwMDEsIDB4MTgwYywgMHgyMTAyLCAweDIwMDEsCi0JMHgxOWU5LCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDE5ZjEsIDB4MjAwMywgMHgwMDAwLCAweDBjODgsCi0JMHgwMDA2LCAweDYwMTQsIDB4OTA4NCwgMHgxODA0LCAweDkwODUsIDB4MDAwOSwgMHg2MDE2LCAweDAwMGUsCi0JMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwgMHgwMDA2LCAweDIwNjEsIDB4MDEwMCwgMHg2MWE0LCAweDYwYTcsCi0JMHg5NWY1LCAweDYwMTQsIDB4OTA4NCwgMHgxODA0LCAweDkwODUsIDB4MDAwOCwgMHg2MDE2LCAweDAwMGUsCi0JMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwgMHg2MWE2LCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwYzYsCi0JMHgwMGQ2LCAweDAwMTYsIDB4MDAyNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDA4MGMsCi0JMHg3NjM3LCAweDExYzAsIDB4MjAwMSwgMHgxYTA0LCAweDIwMDQsIDB4OTAwNSwgMHgxNWQwLCAweDA4MGMsCi0JMHg3NmU0LCAweDExNjAsIDB4MjA2MSwgMHgwMTAwLCAweDYwMjAsIDB4ZDBiNCwgMHgxMTIwLCAweDYwMjQsCi0JMHhkMDg0LCAweDA5MGMsIDB4MGRjNSwgMHgwODBjLCAweDg4YmEsIDB4MDQ1OCwgMHgwMGM2LCAweDIwNjEsCi0JMHgxOWU4LCAweDAwYzgsIDB4NjkwNCwgMHg5MTk0LCAweDQwMDAsIDB4MDU0MCwgMHgwODExLCAweDA4MGMsCi0JMHgyZDQ5LCAweDAwYzYsIDB4MjA2MSwgMHgxOWU4LCAweDYxMjgsIDB4OTE5MiwgMHgwMDA4LCAweDEyNTgsCi0JMHg4MTA4LCAweDYxMmEsIDB4NjEyNCwgMHgwMGNlLCAweDgxZmYsIDB4MDE5OCwgMHgwODBjLCAweDg4YmEsCi0JMHgwODBjLCAweGE2ZTAsIDB4MDA3MCwgMHg2MTI0LCAweDkxZTUsIDB4MDAwMCwgMHgwMTQwLCAweDA4MGMsCi0JMHhmMDk0LCAweDA4MGMsIDB4ODhjMywgMHgyMDA5LCAweDAwMTQsIDB4MDgwYywgMHhiMzUyLCAweDAwY2UsCi0JMHgwMDAwLCAweDAwMmUsIDB4MDAxZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwgMHgyMDAxLCAweDFhMDQsCi0JMHgyMDA0LCAweDkwMDUsIDB4MWRiMCwgMHgwMGM2LCAweDIwNjEsIDB4MTllOCwgMHg2MTI4LCAweDkxOTIsCi0JMHgwMDAzLCAweDFlMDgsIDB4ODEwOCwgMHg2MTJhLCAweDAwY2UsIDB4MDgwYywgMHg4OGJhLCAweDA4MGMsCi0JMHg1ZmVkLCAweDIwMDksIDB4MTg0NiwgMHgyMTE0LCAweDgyMTAsIDB4MjIwYSwgMHgwYzEwLCAweDAwOTYsCi0JMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMDE2LCAweDAwMjYsIDB4MDgwYywgMHg4OGQwLCAweDIwNzEsCi0JMHgxOWU4LCAweDcxM2MsIDB4ODFmZiwgMHgwOTA0LCAweGE3ZTksIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksCi0JMHgwMTQwLCAweDA4MGMsIDB4NzYzNywgMHgxMWUwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAyLCAweDA4MGMsCi0JMHhhYTQ5LCAweDAwM2UsIDB4NzEzYywgMHgyMTYwLCAweDA4MGMsIDB4ZjA5NCwgMHgyMDA5LCAweDAwNGEsCi0JMHg2MjIwLCAweDkyOTYsIDB4MDAwOSwgMHgxMTMwLCAweDYxMTQsIDB4MjE0OCwgMHhhODdiLCAweDAwMDYsCi0JMHgyMDA5LCAweDAwNGEsIDB4MDgwYywgMHhiMzUyLCAweDA4MGMsIDB4NzZlNCwgMHgwODA0LCAweGE3ZTksCi0JMHgwODBjLCAweGE3ZjUsIDB4MDkwNCwgMHhhN2U5LCAweDY5MDQsIDB4ZDFmNCwgMHgwOTA0LCAweGE3ZjAsCi0JMHgwODBjLCAweDJkNDksIDB4MDBjNiwgMHg3MDNjLCAweDkwNjUsIDB4MDkwYywgMHgwZGM1LCAweDYwMjAsCi0JMHgwMGNlLCAweDkwODYsIDB4MDAwNiwgMHgxNTI4LCAweDYxYzgsIDB4NjBjNCwgMHg5MTA1LCAweDE1MDgsCi0JMHgyMDA5LCAweDE4MGMsIDB4MjEwNCwgMHhkMGQ0LCAweDAxZTAsIDB4NjIxNCwgMHg5Mjk0LCAweDE4MDAsCi0JMHgxMTI4LCAweDYyMjQsIDB4OTI5NCwgMHgwMDAyLCAweDE1NjAsIDB4MDAzMCwgMHhjMGQ0LCAweDIwMGEsCi0JMHhkMGNjLCAweDAxMTAsIDB4MDgwYywgMHgyYzdiLCAweDYwMTQsIDB4OTA4NCwgMHhlN2ZkLCAweDkwODUsCi0JMHgwMDEwLCAweDYwMTYsIDB4NzAzYywgMHgyMDYwLCAweDIwMDksIDB4MDA0OSwgMHgwODBjLCAweGIzNTIsCi0JMHgwMGMwLCAweDAwMzYsIDB4MjAxOSwgMHgwMDAxLCAweDA4MGMsIDB4YWE0OSwgMHgwMDNlLCAweDcxM2MsCi0JMHgyMTYwLCAweDA4MGMsIDB4ZjA5NCwgMHgyMDA5LCAweDAwNGEsIDB4NjIyMCwgMHg5Mjk2LCAweDAwMDksCi0JMHgxMTMwLCAweDYxMTQsIDB4MjE0OCwgMHhhODdiLCAweDAwMDYsIDB4MjAwOSwgMHgwMDRhLCAweDA4MGMsCi0JMHhiMzUyLCAweDAwMmUsIDB4MDAxZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDllLCAweDAwMDUsCi0JMHhkMWVjLCAweDE5MDQsIDB4YTdhMCwgMHgwODA0LCAweGE3YTIsIDB4MDBkNiwgMHgwMGM2LCAweDAwOTYsCi0JMHg3MDNjLCAweDkwNjUsIDB4MDkwYywgMHgwZGM1LCAweDIwMDEsIDB4MDMwNiwgMHgyMDBjLCAweDkxODQsCi0JMHgwMDMwLCAweDA5MDQsIDB4YThhOCwgMHg5MTg0LCAweDAwNDgsIDB4OTA4NiwgMHgwMDA4LCAweDE5MDQsCi0JMHhhOGE4LCAweDIwMDksIDB4MDIwNiwgMHgyMTA0LCAweDIwMDksIDB4MDIwMywgMHgyMTBjLCAweDkxMDYsCi0JMHgxOTA0LCAweGE4YTgsIDB4MjAwOSwgMHgwMjJhLCAweDIxMDQsIDB4MjAwOSwgMHgwMjJmLCAweDIxMGMsCi0JMHg5MTE2LCAweDkwODQsIDB4MDNmZiwgMHg5MThjLCAweDAzZmYsIDB4OTI5NCwgMHgwNDAwLCAweDAxMTAsCi0JMHg5MTAyLCAweDAwMzAsIDB4MjAxMCwgMHgyMTAwLCAweDkyMDIsIDB4MjAwOSwgMHgwMjI4LCAweDkxMDIsCi0JMHg5MDgyLCAweDAwMDUsIDB4MDI1MCwgMHgyMDA4LCAweDIwMDEsIDB4MDEzYiwgMHgyMDA0LCAweDgwMDQsCi0JMHg4MDA0LCAweDgwMDQsIDB4OTEwMiwgMHgxYTA0LCAweGE4YTgsIDB4MjAwOSwgMHgxYTg0LCAweDIxMDQsCi0JMHg4MDAwLCAweDAyMDgsIDB4MjAwYSwgMHgyMDY5LCAweDAxMDAsIDB4NjkxNCwgMHg5MThjLCAweDE5ODQsCi0JMHg5MThkLCAweDAwMTAsIDB4NjkxNiwgMHg2OWM4LCAweDIwMTEsIDB4MDAyMCwgMHg2OGM4LCAweDkxMDYsCi0JMHgxNWMwLCAweDgyMTEsIDB4MWRkOCwgMHgyMDAxLCAweDAzMDYsIDB4MjAwMywgMHg0ODAwLCAweDIwMDEsCi0JMHgwMDlhLCAweDIwMDMsIDB4MDAwNCwgMHgyMDAxLCAweDFhNjksIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsCi0JMHgxYTcyLCAweDIwMDMsIDB4MDAwMCwgMHg2YTg4LCAweDY5OGMsIDB4MjIwMCwgMHg5MTA1LCAweDExNzAsCi0JMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweGMwZGMsIDB4YTg3ZSwgMHhhODgwLCAweGMwZmMsCi0JMHhhODgyLCAweDAwOWUsIDB4MmMxMCwgMHgwODBjLCAweDFiZTAsIDB4MDA0MCwgMHg2MDE0LCAweDIwNDgsCi0JMHhhYTNhLCAweGE5MzYsIDB4NmFjNCwgMHg2OWM4LCAweGE5NDYsIDB4YWE0YSwgMHgwMTI2LCAweDAwYzYsCi0JMHgyMDkxLCAweDI0MDAsIDB4MDAyZSwgMHgwODBjLCAweDFjNzksIDB4MTkwYywgMHgwZGM1LCAweDAxMmUsCi0JMHgwMDkwLCAweDIwMDksIDB4MWE4NSwgMHgyMTA0LCAweDgwMDAsIDB4MDIwOCwgMHgyMDBhLCAweDY5YzgsCi0JMHgyMDExLCAweDAwMjAsIDB4ODIxMSwgMHgxZGYwLCAweDY4YzgsIDB4OTEwNiwgMHgxZGMwLCAweDY5YzQsCi0JMHg2OGM4LCAweDkxMDUsIDB4MDE2MCwgMHg2ODI0LCAweGQwOGMsIDB4MDExMCwgMHg2ODI3LCAweDAwMDIsCi0JMHg3MDQ4LCAweGMwODUsIDB4NzA0YSwgMHgwMDc5LCAweDcwNDgsIDB4YzA4NCwgMHg3MDRhLCAweDIwMDksCi0JMHgwN2QwLCAweDA4MGMsIDB4ODhjOCwgMHg5MDA2LCAweDAwOWUsIDB4MDBjZSwgMHgwMGRlLCAweDAwMDUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MGNjOCwgMHgwMDI2LCAweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDcwNDgsCi0JMHhkMDg0LCAweDAxZDgsIDB4NzEzYywgMHg4MWZmLCAweDAxYzAsIDB4MjA3MSwgMHgwMTAwLCAweDkxODgsCi0JMHgwMDA4LCAweDIxMTQsIDB4OTI4ZSwgMHgwMDA2LCAweDExMzgsIDB4NzAxNCwgMHg5MDg0LCAweDE5ODQsCi0JMHg5MDg1LCAweDAwMTIsIDB4NzAxNiwgMHgwMDQ4LCAweDkyOGUsIDB4MDAwOSwgMHgwZGIwLCAweDcwMTQsCi0JMHg5MDg0LCAweDE5ODQsIDB4OTA4NSwgMHgwMDE2LCAweDcwMTYsIDB4MDBlZSwgMHgwMDJlLCAweDAwMDUsCi0JMHgwMGI2LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNjYsIDB4MDA1NiwgMHgwMDQ2LCAweDAwMDYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MDEwLCAweDIwNTgsIDB4YmNhMCwgMHgyMDcxLCAweDE5ZTgsCi0JMHg3MDE4LCAweDIwNTgsIDB4OGJmZiwgMHgwMTkwLCAweGI4YTAsIDB4OTQwNiwgMHgwMTE4LCAweGI4NTQsCi0JMHgyMDU4LCAweDBjYzAsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4YWM2YywgMHhhZDcwLCAweGFlNzgsCi0JMHgwMDllLCAweDA4MGMsIDB4Njg1NiwgMHgwMTEwLCAweDkwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwMGUsCi0JMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGJlLCAweDAwMDUsCi0JMHgwODBjLCAweGEwYzEsIDB4NzAwMywgMHgxMjAwLCAweDc4MzgsIDB4NzAxMiwgMHg3ODNjLCAweDcwMTYsCi0JMHgwMGM2LCAweDc4MjAsIDB4OTA4NiwgMHgwMDA0LCAweDExNDgsIDB4NzgxMCwgMHg5MDA1LCAweDAxMzAsCi0JMHgwMGI2LCAweDIwNTgsIDB4YjgxMCwgMHhiOTE0LCAweDAwYmUsIDB4MDAyMCwgMHgyMDYxLCAweDE4MDAsCi0JMHg2MDdjLCAweDYxODAsIDB4OTA4NCwgMHgwMGZmLCAweDcwMGEsIDB4NzEwZSwgMHgwMGNlLCAweDYwYzMsCi0JMHgwMDJjLCAweDA4MDQsIDB4YTZiZCwgMHgwODBjLCAweGEwYzEsIDB4NzAwMywgMHgwZjAwLCAweDc4MDgsCi0JMHhkMDljLCAweDAxMjgsIDB4YjgxMCwgMHg5MDg0LCAweDAwZmYsIDB4NzAwYSwgMHhiODE0LCAweDcwMGUsCi0JMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwgMHhhNmJkLCAweDAxNTYsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsCi0JMHgwMjAwLCAweDA4MGMsIDB4ODk0YywgMHgyMGE5LCAweDAwMDYsIDB4MjAxMSwgMHhmZmVjLCAweDIwMTksCi0JMHhmZmVkLCAweDllZjAsIDB4MDAwMiwgMHgyMzA1LCAweDIwNzIsIDB4OGU3MCwgMHgyMjA1LCAweDIwNzIsCi0JMHg4ZTcwLCAweDkzOTgsIDB4MDAwMiwgMHg5MjkwLCAweDAwMDIsIDB4MWYwNCwgMHhhOTQzLCAweDYwYzMsCi0JMHgwMDFjLCAweDAxNWUsIDB4MDgwNCwgMHhhNmJkLCAweDAwMTYsIDB4MDAyNiwgMHgwODBjLCAweGEwZTgsCi0JMHgwODBjLCAweGEwZmEsIDB4OWU4MCwgMHgwMDA0LCAweDIwZTksIDB4MDAwMCwgMHgyMGEwLCAweDc4MTQsCi0JMHgwMDk2LCAweDIwNDgsIDB4YTgwMCwgMHgyMDQ4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDIxLCAweDIwOTgsIDB4MDA5ZSwgMHg3ODA4LCAweDkwODgsIDB4MDAwMiwgMHgyMWE4LCAweDkxOTIsCi0JMHgwMDEwLCAweDEyNTAsIDB4NDAwMywgMHg5MDgwLCAweDAwMDQsIDB4ODAwMywgMHg2MGMyLCAweDA4MGMsCi0JMHhhNmJkLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDIwYTksIDB4MDAxMCwgMHg0MDAzLCAweDA4MGMsCi0JMHhhZjc5LCAweDIwYTEsIDB4MDI0MCwgMHgyMmE4LCAweDQwMDMsIDB4MGM2OCwgMHgwODBjLCAweGEwYzEsCi0JMHg3MDAzLCAweDYyMDAsIDB4NzgwOCwgMHg3MDBlLCAweDYwYzMsIDB4MDAwOCwgMHgwODA0LCAweGE2YmQsCi0JMHgwMDE2LCAweDAwMjYsIDB4MDgwYywgMHhhMGMxLCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAyNGMsCi0JMHg3ODE0LCAweDAwOTYsIDB4MjA0OCwgMHhhODAwLCAweDIwNDgsIDB4YTg2MCwgMHgyMGUwLCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMjMsIDB4MjA5OCwgMHgwMDllLCAweDc4MDgsIDB4OTA4OCwgMHgwMDAyLCAweDIxYTgsCi0JMHg0MDAzLCAweDgwMDMsIDB4NjBjMiwgMHgwODBjLCAweGE2YmQsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE5ZTgsCi0JMHg3MDBjLCAweDIwNjAsIDB4OGNmZiwgMHgwMTc4LCAweDA4MGMsIDB4ZDJlMCwgMHgxMTEwLCAweDA4MGMsCi0JMHhiY2I2LCAweDYwMGMsIDB4MDAwNiwgMHgwODBjLCAweGQ1NGMsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsCi0JMHhhYWYxLCAweDAwY2UsIDB4MGM3OCwgMHgyYzAwLCAweDcwMGUsIDB4NzAwYSwgMHgwMTJlLCAweDAwMGUsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHgwMTI2LCAweDAxNTYsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsCi0JMHgwMGM2LCAweDAwNjYsIDB4MDAyNiwgMHgwMDE2LCAweDAwMDYsIDB4MjA5MSwgMHg4MDAwLCAweDIwMDEsCi0JMHgxODBjLCAweDIwMGMsIDB4OTE4YywgMHhlN2ZmLCAweDIxMDIsIDB4MjA2OSwgMHgwMTAwLCAweDIwNzksCi0JMHgwMTQwLCAweDIwNzEsIDB4MTllOCwgMHg3MDI0LCAweDIwNjAsIDB4OGNmZiwgMHgwMWY4LCAweDA4MGMsCi0JMHhhNmU5LCAweDZhYzAsIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4ODhjMywgMHgwMGM2LCAweDIwNjEsCi0JMHgwMTAwLCAweDA4MGMsIDB4YjBjYSwgMHgwMGNlLCAweDIwYTksIDB4MDFmNCwgMHgwNDYxLCAweDIwMDksCi0JMHgwMDEzLCAweDA4MGMsIDB4YjM1MiwgMHgwMDBlLCAweDAwMWUsIDB4MDAyZSwgMHgwMDZlLCAweDAwY2UsCi0JMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwgMHgwMTVlLCAweDAxMmUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MDAsCi0JMHgyMDA0LCAweDkwOTYsIDB4MDAwMSwgMHgwZDc4LCAweDkwOTYsIDB4MDAwNCwgMHgwZDYwLCAweDA4MGMsCi0JMHg4OGMzLCAweDY4MTQsIDB4OTA4NCwgMHgwMDAxLCAweDAxMTAsIDB4NjhhNywgMHg5NWY1LCAweDY4MTcsCi0JMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwgMHgyMDExLCAweDVmOTcsIDB4MDgwYywgMHg4ODNkLCAweDIwYTksCi0JMHgwMWY0LCAweDAwMDksIDB4MDhjMCwgMHg2ODI0LCAweGQwOTQsIDB4MDE0MCwgMHg2ODI3LCAweDAwMDQsCi0JMHg3ODA0LCAweDkwODQsIDB4NDAwMCwgMHgxOTBjLCAweDJkNDksIDB4MDA5MCwgMHhkMDg0LCAweDAxMTgsCi0JMHg2ODI3LCAweDQwMDEsIDB4MDAxMCwgMHgxZjA0LCAweGFhMmIsIDB4NzgwNCwgMHg5MDg0LCAweDEwMDAsCi0JMHgwMTM4LCAweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJkMzksIDB4OTAwNiwgMHgwODBjLCAweDJkMzksCi0JMHgwMDA1LCAweDAxMjYsIDB4MDE1NiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNjYsCi0JMHgwMDI2LCAweDAwMTYsIDB4MDAwNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsCi0JMHg5MThjLCAweGRiZmYsIDB4MjEwMiwgMHgyMDY5LCAweDAxMDAsIDB4MjA3OSwgMHgwMTQwLCAweDIwNzEsCi0JMHgxOWU4LCAweDcwM2MsIDB4MjA2MCwgMHg4Y2ZmLCAweDA5MDQsIDB4YWFiNCwgMHg5Mzg2LCAweDAwMDIsCi0JMHgxMTI4LCAweDY4MTQsIDB4OTA4NCwgMHgwMDAyLCAweDA5MDQsIDB4YWFiNCwgMHg2OGFmLCAweDk1ZjUsCi0JMHg2ODE3LCAweDAwMTAsIDB4MjAwOSwgMHgwMGZhLCAweDgxMDksIDB4MWRmMCwgMHg2OWM2LCAweDY4Y2IsCi0JMHgwMDA4LCAweDA4MGMsIDB4ODhkMCwgMHgwODBjLCAweDIwMzEsIDB4MjAwMSwgMHgwMDMyLCAweDY5MjAsCi0JMHhkMWJjLCAweDAxMzAsIDB4ODAwMSwgMHgxZGQ4LCAweDY5MmMsIDB4OTE4ZCwgMHgwMDA4LCAweDY5MmUsCi0JMHgyMGE5LCAweDAzZTgsIDB4NjgyNCwgMHhkMDk0LCAweDAxNDAsIDB4NjgyNywgMHgwMDA0LCAweDc4MDQsCi0JMHg5MDg0LCAweDQwMDAsIDB4MTkwYywgMHgyZDQ5LCAweDAwOTAsIDB4ZDA4YywgMHgwMTE4LCAweDY4MjcsCi0JMHgwMDAyLCAweDAwMTAsIDB4MWYwNCwgMHhhYThhLCAweDc4MDQsIDB4OTA4NCwgMHgxMDAwLCAweDAxMzgsCi0JMHgyMDAxLCAweDAxMDAsIDB4MDgwYywgMHgyZDM5LCAweDkwMDYsIDB4MDgwYywgMHgyZDM5LCAweDY4MjcsCi0JMHg0MDAwLCAweDY4MjQsIDB4ODNmZiwgMHgxMTQwLCAweDIwMDksIDB4MDA0OSwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDA5LCAweDAxMTAsIDB4MDgwYywgMHhiMzUyLCAweDAwMGUsIDB4MDAxZSwgMHgwMDJlLCAweDAwNmUsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAxNWUsIDB4MDEyZSwgMHgwMDA1LCAweDAwZDYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDY5LCAweDE5ZTgsIDB4NmEwNiwgMHgwMTJlLCAweDAwZGUsCi0JMHgwMDA1LCAweDAwZDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA2OSwgMHgxOWU4LCAweDZhMzIsCi0JMHgwMTJlLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweGEyODQsIDB4NzA0NywgMHgxMDAwLCAweDAwOTgsCi0JMHgwODBjLCAweGEyODQsIDB4NzA0NywgMHg0MDAwLCAweDAwNzAsIDB4MDgwYywgMHhhMjg0LCAweDcwNDcsCi0JMHgyMDAwLCAweDAwNDgsIDB4MDgwYywgMHhhMjg0LCAweDcwNDcsIDB4MDQwMCwgMHgwMDIwLCAweDA4MGMsCi0JMHhhMjg0LCAweDcwNDcsIDB4MDIwMCwgMHg3ODU0LCAweDcwMzIsIDB4NjBjMywgMHgwMDIwLCAweDA4MDQsCi0JMHhhNmJkLCAweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDcwMjAsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDEsCi0JMHg3MDIyLCAweDAwZWUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNzYsCi0JMHgwMDY2LCAweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxOWU4LCAweDc2MTQsCi0JMHgyNjYwLCAweDI2NzgsIDB4MjAzOSwgMHgwMDAxLCAweDg3ZmYsIDB4MDkwNCwgMHhhYjk2LCAweDhjZmYsCi0JMHgwOTA0LCAweGFiOTYsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDYsIDB4MTkwNCwgMHhhYjkxLCAweDg4ZmYsCi0JMHgwMTM4LCAweDI4MDAsIDB4OWMwNiwgMHgxOTA0LCAweGFiOTEsIDB4MjAzOSwgMHgwMDAwLCAweDAwNTAsCi0JMHg2MDEwLCAweDliMDYsIDB4MTkwNCwgMHhhYjkxLCAweDg1ZmYsIDB4MDEyMCwgMHg2MDU0LCAweDkxMDYsCi0JMHgxOTA0LCAweGFiOTEsIDB4NzAyNCwgMHg5YzA2LCAweDE1YjAsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsCi0JMHg5MDA1LCAweDExNjAsIDB4NjgyNCwgMHhkMDg0LCAweDAxNDgsIDB4NjgyNywgMHgwMDAxLCAweDA4MGMsCi0JMHg4OGMzLCAweDA4MGMsIDB4YWMxYiwgMHg3MDI3LCAweDAwMDAsIDB4MDQyOCwgMHgwODBjLCAweDg4YzMsCi0JMHg2ODIwLCAweGQwYjQsIDB4MDExMCwgMHg2OGE3LCAweDk1ZjUsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsCi0JMHgwMDAwLCAweDA4MGMsIDB4YWMxYiwgMHg3MDI3LCAweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsCi0JMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJkMzksCi0JMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDY5LCAweDAxMDAsIDB4NjgyNCwgMHhkMDg0LCAweDAxMTAsCi0JMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHg3MDE0LCAweDljMzYsIDB4MTExMCwgMHg2NjBjLCAweDc2MTYsCi0JMHg3MDEwLCAweDljMzYsIDB4MTE0MCwgMHgyYzAwLCAweDlmMzYsIDB4MDExOCwgMHgyZjAwLCAweDcwMTIsCi0JMHgwMDEwLCAweDcwMTMsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsIDB4MmMwMCwgMHg5ZjA2LCAweDAxMTAsCi0JMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg4OWZmLCAweDExNjgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTQsCi0JMHgwMDk2LCAweDIwNDgsIDB4MDgwYywgMHhkMGQ2LCAweDAxMTAsIDB4MDgwYywgMHhlYmQ0LCAweDAwOWUsCi0JMHgwODBjLCAweGIzMDYsIDB4MDgwYywgMHhhYWYxLCAweDg4ZmYsIDB4MTE5MCwgMHgwMGNlLCAweDA4MDQsCi0JMHhhYjBjLCAweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDA4MDQsIDB4YWIwYywgMHg5MDA2LCAweDAxMmUsCi0JMHgwMDBlLCAweDAwNmUsIDB4MDA3ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsCi0JMHg2MDFiLCAweDAwMDAsIDB4MDBjZSwgMHg5OGM1LCAweDAwMDEsIDB4MGM4OCwgMHgwMGY2LCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwOTYsIDB4MDBjNiwgMHgwMDY2LCAweDAwMjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDIwNzEsIDB4MTllOCwgMHg3NjM4LCAweDI2NjAsIDB4MjY3OCwgMHg4Y2ZmLCAweDA5MDQsCi0JMHhhYzBhLCAweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDE5MDQsIDB4YWMwNSwgMHg4N2ZmLCAweDAxMjgsCi0JMHgyNzAwLCAweDljMDYsIDB4MTkwNCwgMHhhYzA1LCAweDAwNDAsIDB4NjAxMCwgMHg5YjA2LCAweDE1ZTgsCi0JMHg4NWZmLCAweDAxMTgsIDB4NjA1NCwgMHg5MTA2LCAweDE1YzAsIDB4NzAzYywgMHg5YzA2LCAweDExNjgsCi0JMHgwMDM2LCAweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweGFhNDksIDB4NzAzMywgMHgwMDAwLCAweDkwMDYsCi0JMHg3MDNlLCAweDcwNDIsIDB4NzA0NiwgMHg3MDRhLCAweDAwM2UsIDB4NzAzOCwgMHg5YzM2LCAweDExMTAsCi0JMHg2NjBjLCAweDc2M2EsIDB4NzAzNCwgMHg5YzM2LCAweDExNDAsIDB4MmMwMCwgMHg5ZjM2LCAweDAxMTgsCi0JMHgyZjAwLCAweDcwMzYsIDB4MDAxMCwgMHg3MDM3LCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsCi0JMHg5ZjA2LCAweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkNiwgMHgwMTEwLCAweDA4MGMsIDB4ZWJkNCwgMHgwODBjLCAweGIzMDYsCi0JMHg4N2ZmLCAweDExOTgsIDB4MDBjZSwgMHgwODA0LCAweGFiYjYsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsCi0JMHgwODA0LCAweGFiYjYsIDB4OTAwNiwgMHgwMTJlLCAweDAwMGUsIDB4MDAyZSwgMHgwMDZlLCAweDAwY2UsCi0JMHgwMDllLCAweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAxYiwgMHgwMDAwLCAweDAwY2UsCi0JMHg5N2JkLCAweDAwMDEsIDB4MGM4MCwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwgMHgyMDAxLCAweDE4MDAsCi0JMHgyMDA0LCAweDkwODYsIDB4MDAwMiwgMHgxMTE4LCAweDcwMDcsIDB4MDAwNSwgMHgwMDEwLCAweDcwMDcsCi0JMHgwMDAwLCAweDAwZWUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwgMHgwMDY2LCAweDAwMjYsCi0JMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4MTllOCwgMHgyYzEwLCAweDc2MzgsCi0JMHgyNjYwLCAweDI2NzgsIDB4OGNmZiwgMHgwNTQwLCAweDIyMDAsIDB4OWMwNiwgMHgxNTA4LCAweDcwMzgsCi0JMHg5YzM2LCAweDExMTAsIDB4NjYwYywgMHg3NjNhLCAweDcwMzQsIDB4OWMzNiwgMHgxMTQwLCAweDJjMDAsCi0JMHg5ZjM2LCAweDAxMTgsIDB4MmYwMCwgMHg3MDM2LCAweDAwMTAsIDB4NzAzNywgMHgwMDAwLCAweDY2MGMsCi0JMHgyYzAwLCAweDlmMDYsIDB4MDExMCwgMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsCi0JMHg2MDA0LCAweDkwODYsIDB4MDA0MCwgMHgwOTBjLCAweDk5YTUsIDB4OTA4NSwgMHgwMDAxLCAweDAwMjAsCi0JMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwgMHgwOGIwLCAweDAxMmUsIDB4MDAwZSwgMHgwMDJlLCAweDAwNmUsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwOTYsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsCi0JMHgwMGM2LCAweDAwNjYsIDB4MDAyNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsCi0JMHgxOWU4LCAweDc2MGMsIDB4MjY2MCwgMHgyNjc4LCAweDhjZmYsIDB4MDkwNCwgMHhhZDAxLCAweDYwMTAsCi0JMHgwMGI2LCAweDIwNTgsIDB4YjhhMCwgMHgwMGJlLCAweDkyMDYsIDB4MTkwNCwgMHhhY2ZjLCAweDcwMjQsCi0JMHg5YzA2LCAweDE1MjAsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsIDB4OTAwNSwgMHgwOTA0LCAweGFjZDMsCi0JMHgwODBjLCAweGE2ZTksIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4YWMxYiwgMHg3MDI3LCAweDAwMDAsCi0JMHgwMDM2LCAweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsCi0JMHgwMTAwLCAweDA4MGMsIDB4MmQzOSwgMHg5MDA2LCAweDA4MGMsIDB4MmQzOSwgMHgyMDY5LCAweDAxMDAsCi0JMHg2ODI0LCAweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4MDAzZSwgMHg3MDBjLCAweDljMzYsCi0JMHgxMTEwLCAweDY2MGMsIDB4NzYwZSwgMHg3MDA4LCAweDljMzYsIDB4MTE0MCwgMHgyYzAwLCAweDlmMzYsCi0JMHgwMTE4LCAweDJmMDAsIDB4NzAwYSwgMHgwMDEwLCAweDcwMGIsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsCi0JMHgyYzAwLCAweDlmMDYsIDB4MDExMCwgMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsCi0JMHgwODBjLCAweGQyY2YsIDB4MTE4MCwgMHgwODBjLCAweDMyNzksIDB4MDgwYywgMHhkMmUwLCAweDE1MTgsCi0JMHgwODBjLCAweGJjYjYsIDB4MDQwMCwgMHgwODBjLCAweGFjMWIsIDB4NjgyNCwgMHhkMDg0LCAweDA5YjAsCi0JMHg2ODI3LCAweDAwMDEsIDB4MDg5OCwgMHgwODBjLCAweGQyZTAsIDB4MTExOCwgMHgwODBjLCAweGJjYjYsCi0JMHgwMDkwLCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDYsIDB4MDE2OCwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDAzLCAweDE1MDgsIDB4YTg2NywgMHgwMTAzLCAweGFiN2EsIDB4YTg3NywgMHgwMDAwLCAweDA4MGMsCi0JMHg2ZTkyLCAweDA4MGMsIDB4ZDJjMywgMHgwODBjLCAweGQ1NGMsIDB4MDgwYywgMHhiMzA2LCAweDA4MGMsCi0JMHhhYWYxLCAweDAwY2UsIDB4MDgwNCwgMHhhYzdjLCAweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDA4MDQsCi0JMHhhYzdjLCAweDAxMmUsIDB4MDAwZSwgMHgwMDJlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsCi0JMHgwMGZlLCAweDAwOWUsIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsIDB4MDAwNiwgMHgxZDIwLCAweDA4MGMsCi0JMHhlYmQ0LCAweDBjMDgsIDB4MDBkNiwgMHgwODBjLCAweGExMGMsIDB4NzAwMywgMHgwMjAwLCAweDcwMDcsCi0JMHgwMDE0LCAweDYwYzMsIDB4MDAxNCwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwgMHgxOTg5LCAweDIwZTksCi0JMHgwMDAwLCAweDIwYTEsIDB4MDI1MCwgMHgyMGE5LCAweDAwMDQsIDB4NDAwMywgMHg3MDIzLCAweDAwMDQsCi0JMHg3MDI3LCAweDc4NzgsIDB4MDgwYywgMHhhNmJkLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweGExMGMsCi0JMHg3MDBiLCAweDA4MDAsIDB4NzgxNCwgMHg5MDg0LCAweGZmMDAsIDB4NzAwZSwgMHg3ODE0LCAweDkwODQsCi0JMHgwMGZmLCAweDcwMjIsIDB4NzgyYywgMHg3MDI2LCAweDc4NTgsIDB4OTA4NCwgMHgwMGZmLCAweDkwODUsCi0JMHgwMjAwLCAweDcwMDIsIDB4Nzg1OCwgMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHg3MDA2LCAweDYwYzIsCi0JMHgwODA0LCAweGE2YmQsIDB4MDBiNiwgMHgwMGQ2LCAweDAwMTYsIDB4MDBkNiwgMHgyZjY4LCAweDIwMDksCi0JMHgwMDM1LCAweDA4MGMsIDB4ZDc1OSwgMHgwMGRlLCAweDE5MDQsIDB4YWRhZiwgMHgwODBjLCAweGEwYzEsCi0JMHg3MDAzLCAweDEzMDAsIDB4NzgyYywgMHgwODBjLCAweGFlYjUsIDB4MjA2OCwgMHg2ODIwLCAweDkwODYsCi0JMHgwMDAzLCAweDA1NjAsIDB4NzgxMCwgMHgyMDU4LCAweGJhYTAsIDB4MDgwYywgMHhiMjNkLCAweDExZDgsCi0JMHg5Mjg2LCAweDAwN2UsIDB4MTEyOCwgMHg3MDBiLCAweDAwZmYsIDB4NzAwZiwgMHhmZmZlLCAweDA0OTgsCi0JMHg5Mjg2LCAweDAwN2YsIDB4MTEyOCwgMHg3MDBiLCAweDAwZmYsIDB4NzAwZiwgMHhmZmZkLCAweDA0NTgsCi0JMHg5Mjg0LCAweGZmODAsIDB4MDE4MCwgMHg5Mjg2LCAweDAwODAsIDB4MTEyOCwgMHg3MDBiLCAweDAwZmYsCi0JMHg3MDBmLCAweGZmZmMsIDB4MDQwMCwgMHg5MmQ4LCAweDEwMDAsIDB4MmI1YywgMHhiODEwLCAweDcwMGEsCi0JMHhiODE0LCAweDcwMGUsIDB4MDBjMCwgMHg2MDk4LCAweDcwMGUsIDB4MDBhOCwgMHgwODBjLCAweGIyM2QsCi0JMHgxMTMwLCAweDc4MTAsIDB4MjA1OCwgMHhiOGEwLCAweDkwODIsIDB4MDA3ZSwgMHgwMjUwLCAweDAwZDYsCi0JMHgyMDY5LCAweDE4MWYsIDB4MmQwNCwgMHg3MDBhLCAweDhkNjgsIDB4MmQwNCwgMHg3MDBlLCAweDAwZGUsCi0JMHgwMDEwLCAweDYwMzQsIDB4NzAwZSwgMHg3ODM4LCAweDcwMTIsIDB4NzgzYywgMHg3MDE2LCAweDYwYzMsCi0JMHgwMDBjLCAweDAwMWUsIDB4MDBkZSwgMHgwODBjLCAweGE2YmQsIDB4MDBiZSwgMHgwMDA1LCAweDc4MWIsCi0JMHgwMDAxLCAweDc4MDMsIDB4MDAwNiwgMHgwMDFlLCAweDAwZGUsIDB4MDBiZSwgMHgwMDA1LCAweDc5MmMsCi0JMHg5MTgwLCAweDAwMDgsIDB4MjAwYywgMHg5MTg2LCAweDAwMDYsIDB4MDFjMCwgMHg5MTg2LCAweDAwMDMsCi0JMHgwOTA0LCAweGFlMmEsIDB4OTE4NiwgMHgwMDA1LCAweDA5MDQsIDB4YWUxMiwgMHg5MTg2LCAweDAwMDQsCi0JMHgwNWQ4LCAweDkxODYsIDB4MDAwOCwgMHgwOTA0LCAweGFlMWIsIDB4NzgwNywgMHgwMDM3LCAweDc4MmYsCi0JMHgwMDAzLCAweDc4MTcsIDB4MTcwMCwgMHgwODBjLCAweGFlOTIsIDB4MDAwNSwgMHgwODBjLCAweGFlNTMsCi0JMHgwMGQ2LCAweDAwMjYsIDB4NzkyYywgMHgyMTY4LCAweDIwMDksIDB4NDAwMCwgMHg2ODAwLCAweDAwMDIsCi0JMHhhZGYzLCAweGFkZmUsIDB4YWRmNSwgMHhhZGZlLCAweGFkZmEsIDB4YWRmMywgMHhhZGYzLCAweGFkZmUsCi0JMHhhZGZlLCAweGFkZmUsIDB4YWRmZSwgMHhhZGYzLCAweGFkZjMsIDB4YWRmMywgMHhhZGYzLCAweGFkZjMsCi0JMHhhZGZlLCAweGFkZjMsIDB4YWRmZSwgMHgwODBjLCAweDBkYzUsIDB4NjgyNCwgMHhkMGU0LCAweDAxMTAsCi0JMHhkMGNjLCAweDAxMTAsIDB4OTAwZSwgMHgwMDEwLCAweDIwMDksIDB4MjAwMCwgMHg2ODJjLCAweDcwMjIsCi0JMHg2ODMwLCAweDcwMjYsIDB4MDgwNCwgMHhhZTRjLCAweDA4MGMsIDB4YWU1MywgMHgwMGQ2LCAweDAwMjYsCi0JMHg3OTJjLCAweDIxNjgsIDB4MjAwOSwgMHg0MDAwLCAweDZhMDAsIDB4OTI4NiwgMHgwMDAyLCAweDExMDgsCi0JMHg5MDBlLCAweDA0ZDAsIDB4MDgwYywgMHhhZTUzLCAweDAwZDYsIDB4MDAyNiwgMHg3OTJjLCAweDIxNjgsCi0JMHgyMDA5LCAweDQwMDAsIDB4MDQ4OCwgMHgwNGI5LCAweDAwZDYsIDB4MDAyNiwgMHg3OTJjLCAweDIxNjgsCi0JMHgyMDA5LCAweDQwMDAsIDB4OTI4NiwgMHgwMDA1LCAweDAxMTgsIDB4OTI4NiwgMHgwMDAyLCAweDExMDgsCi0JMHg5MDBlLCAweDA0MTAsIDB4MDQ0MSwgMHgwMGQ2LCAweDAwMjYsIDB4NzkyYywgMHgyMTY4LCAweDY4MTQsCi0JMHg2OTI0LCAweGMxODUsIDB4NjkyNiwgMHgwMDk2LCAweDIwNDgsIDB4YTlhYywgMHhhODM0LCAweDkxMTIsCi0JMHhhOWIwLCAweGE4MzgsIDB4MDA5ZSwgMHg5MTAzLCAweDcwMjIsIDB4NzIyNiwgMHg3OTJjLCAweDkxODAsCi0JMHgwMDAwLCAweDIwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDAxMzAsIDB4OTA4ZSwgMHgwMDA0LCAweDAxMTgsCi0JMHgyMDA5LCAweDQwMDAsIDB4MDAwOCwgMHg5MDBlLCAweDcxMmEsIDB4NjBjMywgMHgwMDE4LCAweDAwMmUsCi0JMHgwMGRlLCAweDA4MDQsIDB4YTZiZCwgMHgwMGI2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNjYsCi0JMHgwODBjLCAweGExMGMsIDB4OTAwNiwgMHg3MDAzLCAweDAyMDAsIDB4NzkzOCwgMHg3MTBhLCAweDc5M2MsCi0JMHg3MTBlLCAweDc4MTAsIDB4MjA1OCwgMHhiOGEwLCAweDA4MGMsIDB4YjIzZCwgMHgxMTE4LCAweDkwOTIsCi0JMHgwMDdlLCAweDAyNjgsIDB4MDBkNiwgMHgyMDY5LCAweDE4MWYsIDB4MmQyYywgMHg4ZDY4LCAweDJkMzQsCi0JMHg5MGQ4LCAweDEwMDAsIDB4MmI1YywgMHhiYjEwLCAweGJjMTQsIDB4MDBkZSwgMHgwMDI4LCAweDkwMWUsCi0JMHg2NDk4LCAweDIwMjksIDB4MDAwMCwgMHg2NjM0LCAweDc4MmMsIDB4OTA4MCwgMHgwMDA4LCAweDIwMDQsCi0JMHg5MDg2LCAweDAwMDMsIDB4MTEyOCwgMHg3NTEyLCAweDc2MTYsIDB4NzMxYSwgMHg3NDFlLCAweDAwMjAsCi0JMHg3MzEyLCAweDc0MTYsIDB4NzUxYSwgMHg3NjFlLCAweDAwNmUsIDB4MDA1ZSwgMHgwMDRlLCAweDAwM2UsCi0JMHgwMGJlLCAweDAwMDUsIDB4MDgwYywgMHhhMTBjLCAweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDcwMGEsCi0JMHg3ODE0LCAweDcwMGUsIDB4NzAwZSwgMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwgMHhhNmJkLCAweDA4MGMsCi0JMHhhMGI4LCAweDcwMDMsIDB4MTQwMCwgMHg3ODM4LCAweDcwMGEsIDB4MDA3OSwgMHg3ODNjLCAweDcwMGUsCi0JMHg3ODJjLCAweDcwMTIsIDB4NzgzMCwgMHg3MDE2LCAweDc4MzQsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDcsCi0JMHg3MDFhLCAweDYwYzMsIDB4MDAxMCwgMHgwODA0LCAweGE2YmQsIDB4MDBlNiwgMHgyMDcxLCAweDAyNDAsCi0JMHgwMDA2LCAweDAwZjYsIDB4MjA3OCwgMHg3ODEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGNjLCAweGQwODQsCi0JMHgwMTIwLCAweDc4NDQsIDB4NzAyYSwgMHg3ODQ4LCAweDcwMmUsIDB4MDBiZSwgMHgwMGZlLCAweDAwMGUsCi0JMHgwMGVlLCAweDAwMDUsIDB4MDgwYywgMHhhMTAzLCAweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDcwMGEsCi0JMHg3ODE0LCAweDcwMGUsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTZiZCwgMHgwMDIxLCAweDYwYzMsCi0JMHgwMDAwLCAweDA4MDQsIDB4YTZiZCwgMHgwMGQ2LCAweDA4MGMsIDB4YWY4ZSwgMHhiODEwLCAweDkwODUsCi0JMHgwMzAwLCAweDcwMDIsIDB4YjgxNCwgMHg3MDA2LCAweDIwNjksIDB4MTgwMCwgMHg2ODdjLCAweDcwMGEsCi0JMHg2ODgwLCAweDcwMGUsIDB4NzAxMywgMHgwODE5LCAweDA4MGMsIDB4YTZhYiwgMHg3MjFhLCAweDJmMTAsCi0JMHg3MjIyLCAweDdhMDgsIDB4NzIyNiwgMHgyMDcxLCAweDAyNGMsIDB4MDBkZSwgMHgwMDA1LCAweDAwYTksCi0JMHg3OTE0LCAweDcxMmEsIDB4NjBjMywgMHgwMDAwLCAweDYwYTcsIDB4OTU3NSwgMHgwMDI2LCAweDA4MGMsCi0JMHgyYmNlLCAweDAyMjgsIDB4MjAxMSwgMHgwMTAxLCAweDIyMDQsIDB4YzBjNSwgMHgyMDEyLCAweDAwMmUsCi0JMHgwODBjLCAweGE2ZTAsIDB4MDgwYywgMHg4OGJhLCAweDAwMDUsIDB4MDAzNiwgMHgwMDk2LCAweDAwZDYsCi0JMHgwMGU2LCAweDc4NTgsIDB4MjA0OCwgMHhhYTdjLCAweDkyOTYsIDB4MDBjMCwgMHg5Mjk0LCAweDAwZmQsCi0JMHhhYTdlLCAweGFhODAsIDB4OTI5NCwgMHgwMzAwLCAweGFhODIsIDB4YTk2YywgMHg5MTk0LCAweDAwZmYsCi0JMHhhYjc0LCAweDkzODQsIDB4MDBmZiwgMHg5MDhkLCAweGMyMDAsIDB4YTk2ZSwgMHg5Mzg0LCAweGZmMDAsCi0JMHg5MjE1LCAweGFhNzYsIDB4YTg3MCwgMHhhYTc4LCAweGE4N2EsIDB4YWE3MiwgMHgwMGQ2LCAweDIwNjksCi0JMHgwMjAwLCAweDA4MGMsIDB4YWY4ZSwgMHgwMGRlLCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAyNDAsCi0JMHgyMGE5LCAweDAwMGEsIDB4YTg2MCwgMHgyMGUwLCAweGE4NWMsIDB4OTA4MCwgMHgwMDFiLCAweDIwOTgsCi0JMHg0MDAzLCAweDYwYTMsIDB4MDAzNSwgMHhhYTY4LCAweDkyOTQsIDB4NzAwMCwgMHg5Mjg2LCAweDMwMDAsCi0JMHgwMTEwLCAweDYwYTMsIDB4MDAzNywgMHgwMGVlLCAweDAwZGUsIDB4MDA5ZSwgMHgwMDNlLCAweDAwMDUsCi0JMHg5MDBlLCAweDc4MTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBmYywgMHgwMWMwLCAweDkwODQsCi0JMHgwMDAzLCAweDExYTgsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsIDB4ZDBiYywgMHgwMTgwLCAweDc4MjQsCi0JMHhkMGNjLCAweDExNjgsIDB4ZDBjNCwgMHgxMTU4LCAweGE4YTgsIDB4OTAwNSwgMHgxMTQwLCAweDIwMDEsCi0JMHgxODBjLCAweDIwMGMsIDB4YzFkNSwgMHgyMTAyLCAweDIwMDksIDB4MTliMywgMHgyMTBjLCAweDAwOWUsCi0JMHg5MThkLCAweDAwOTIsIDB4MDAxMCwgMHgyMDA5LCAweDAwOTYsIDB4NjBhYiwgMHgwMDM2LCAweDYxMTYsCi0JMHgwMDA1LCAweDIwMDksIDB4MDAwOSwgMHgwMGEwLCAweDIwMDksIDB4MDAwYSwgMHgwMDg4LCAweDIwMDksCi0JMHgwMDBiLCAweDAwNzAsIDB4MjAwOSwgMHgwMDBjLCAweDAwNTgsIDB4MjAwOSwgMHgwMDBkLCAweDAwNDAsCi0JMHgyMDA5LCAweDAwMGUsIDB4MDAyOCwgMHgyMDA5LCAweDAwMGYsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDgsCi0JMHg2OTEyLCAweDAwMDUsIDB4MDgwYywgMHhhMGMxLCAweDAwMTYsIDB4MDAyNiwgMHgwMDk2LCAweDAwZDYsCi0JMHg3ODE0LCAweDIwNDgsIDB4NzAxMywgMHgwMTM4LCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweDkwODQsCi0JMHgwMDI4LCAweDExMzgsIDB4MjAwMSwgMHgxOTdjLCAweDIwMDQsIDB4OTA4NiwgMHhhYWFhLCAweDE5MDQsCi0JMHhiMDMzLCAweDcwMDMsIDB4NTQwMCwgMHgwMGM2LCAweDIwNjEsIDB4MTgwMCwgMHg2MDdjLCAweDkwODQsCi0JMHgwMGZmLCAweGE5OTgsIDB4ODEwZiwgMHg5MThjLCAweGZmMDAsIDB4OTEwNSwgMHg3MDBhLCAweDYwODAsCi0JMHg3MDBlLCAweGE5OTgsIDB4OTE4YywgMHhmZjAwLCAweDcxMTIsIDB4MjBhOSwgMHgwMDA0LCAweDIwMDksCi0JMHgxODA1LCAweDJlMTAsIDB4OTI5MCwgMHgwMDA2LCAweDIxMDQsIDB4MjAxMiwgMHg4MTA4LCAweDgyMTAsCi0JMHgxZjA0LCAweGFmYzQsIDB4MjBhOSwgMHgwMDA0LCAweDIwMDksIDB4MTgwMSwgMHgyMTA0LCAweDIwMTIsCi0JMHg4MTA4LCAweDgyMTAsIDB4MWYwNCwgMHhhZmNlLCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDI5LCAweDIwOTgsIDB4MjAwOSwgMHgwMDA2LCAweDIwYTksIDB4MDAwMSwgMHg0MDAyLCAweDgwMDcsCi0JMHgyMDEyLCAweDgyMTAsIDB4ODEwOSwgMHgxZGMwLCAweDAwZDYsIDB4MjA2OSwgMHgwMjAwLCAweDA4MGMsCi0JMHhhZjc5LCAweDAwZGUsIDB4MjA3MSwgMHgwMjQwLCAweDIwMTEsIDB4MDI0MCwgMHgyMDA5LCAweDAwMDIsCi0JMHgyMGE5LCAweDAwMDEsIDB4NDAwMiwgMHg4MDA3LCAweDIwMTIsIDB4ODIxMCwgMHg4MTA5LCAweDFkYzAsCi0JMHgyMDA5LCAweDAwMDgsIDB4MjBhOSwgMHgwMDAxLCAweDQwMDIsIDB4ODAwNywgMHgyMDEyLCAweDgyMTAsCi0JMHg4MTA5LCAweDFkYzAsIDB4YTg1YywgMHg5MDgwLCAweDAwMzEsIDB4MjA5OCwgMHgyMDA5LCAweDAwMDgsCi0JMHgyMGE5LCAweDAwMDEsIDB4NDAwMiwgMHg4MDA3LCAweDIwMTIsIDB4ODIxMCwgMHg4MTA5LCAweDFkYzAsCi0JMHgwMGNlLCAweDYwYzMsIDB4MDA0YywgMHg2MGEzLCAweDAwNTYsIDB4NjBhNywgMHg5NTc1LCAweDIwMDEsCi0JMHgxODM3LCAweDIwMDQsIDB4OTA4NCwgMHgwMDI4LCAweDExNjgsIDB4MDgwYywgMHg3NjM3LCAweDAxNTAsCi0JMHg2MDI4LCAweGMwYmQsIDB4NjAyYSwgMHg2MDE0LCAweDkwODQsIDB4MTgwNCwgMHg5MDg1LCAweDAwMjksCi0JMHg2MDE2LCAweDAwMTAsIDB4MDgwYywgMHhhNmJkLCAweDA4MGMsIDB4ODhiYSwgMHgwMGRlLCAweDAwOWUsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDI0MCwgMHgyMDAxLCAweDIyMDAsCi0JMHg5MDg1LCAweDAwZmYsIDB4NzAwMiwgMHg3MDA3LCAweGZmZmYsIDB4MjA3MSwgMHgwMTAwLCAweDcwOWIsCi0JMHgwMGZmLCAweDAwZWUsIDB4MDgwNCwgMHhhZmE5LCAweDA4MGMsIDB4YTBjMSwgMHgwMDE2LCAweDAwMjYsCi0JMHgwMDk2LCAweDAwZDYsIDB4NzgxNCwgMHgyMDQ4LCAweDcwMTMsIDB4MDEzOCwgMHg3MDAzLCAweDU1MDAsCi0JMHgwMGM2LCAweGE4OWMsIDB4OTA4NCwgMHgwMGZmLCAweGE5OTgsIDB4ODEwZiwgMHg5MThjLCAweGZmMDAsCi0JMHg5MTA1LCAweDcwMGEsIDB4YTk5YywgMHg5MThjLCAweGZmMDAsIDB4YThhMCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MTA1LCAweDcwMGUsIDB4YTk5OCwgMHg5MThjLCAweGZmMDAsIDB4MjA2MSwgMHgxODAwLCAweDYwN2MsCi0JMHg5MDg0LCAweDAwZmYsIDB4OTEwZCwgMHg3MTEyLCAweDYxODAsIDB4NzExNiwgMHgyMDA5LCAweDAwMDgsCi0JMHhhODYwLCAweDIwZTAsIDB4YTg1YywgMHg5MDgwLCAweDAwMjksIDB4MjA5OCwgMHgyZTEwLCAweDkyOTAsCi0JMHgwMDA2LCAweDIwYTksIDB4MDAwMSwgMHg0MDAyLCAweDgwMDcsIDB4MjAxMiwgMHg4MjEwLCAweDgxMDksCi0JMHgxZGMwLCAweDIwYTksIDB4MDAwNCwgMHgyMDA5LCAweDE4MDUsIDB4MjEwNCwgMHgyMDEyLCAweDgxMDgsCi0JMHg4MjEwLCAweDFmMDQsIDB4YjA4NSwgMHgyMGE5LCAweDAwMDIsIDB4MjAwOSwgMHgxODAxLCAweDIxMDQsCi0JMHgyMDEyLCAweDgxMDgsIDB4ODIxMCwgMHgxZjA0LCAweGIwOGYsIDB4MDBkNiwgMHgwMDE2LCAweDIwNjksCi0JMHgwMjAwLCAweDA4MGMsIDB4YWY3OSwgMHgwMDFlLCAweDAwZGUsIDB4MjA3MSwgMHgwMjQwLCAweDIwYTksCi0JMHgwMDAyLCAweDIwMDksIDB4MTgwMywgMHgyMDExLCAweDAyNDAsIDB4MjEwNCwgMHgyMDEyLCAweDgxMDgsCi0JMHg4MjEwLCAweDFmMDQsIDB4YjBhNSwgMHgyMDA5LCAweDAwMDgsIDB4NDAwMiwgMHg4MDA3LCAweDIwMTIsCi0JMHg4MjEwLCAweDgxMDksIDB4MWRkMCwgMHg5MDA2LCAweDIwYTksIDB4MDAwOCwgMHgyMDEyLCAweDgyMTAsCi0JMHgxZjA0LCAweGIwYjYsIDB4MDBjZSwgMHg2MGMzLCAweDAwNGMsIDB4NjBhMywgMHgwMDU2LCAweDYwYTcsCi0JMHg5NTc1LCAweDA4MGMsIDB4YTZiZCwgMHgwODBjLCAweDg4YmEsIDB4MDBkZSwgMHgwMDllLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMDUsIDB4MDBkNiwgMHg5MjkwLCAweDAwMTgsIDB4ODIxNCwgMHgyMGU5LCAweDAwMDAsCi0JMHgyMDY5LCAweDAyMDAsIDB4NjgxMywgMHgwMDAwLCAweDIyYTgsIDB4OTI4NCwgMHgwMGUwLCAweDAxMjgsCi0JMHgyMGE5LCAweDAwMjAsIDB4OTI5MiwgMHgwMDIwLCAweDAwMDgsIDB4OTAxNiwgMHgyMGExLCAweDAyNDAsCi0JMHg5MDA2LCAweDQwMDQsIDB4ODJmZiwgMHgwMTIwLCAweDY4MTAsIDB4ODAwMCwgMHg2ODEyLCAweDBjNjAsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwgMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHhhODc4LCAweDYwNTYsCi0JMHg5MDA2LCAweGE4MzYsIDB4YTgzYSwgMHhhOTljLCAweGE5NDYsIDB4YTg0YSwgMHg2MDIzLCAweDAwMDMsCi0JMHg2MDA3LCAweDAwNDAsIDB4NjAwMywgMHgwMDAzLCAweDYwMGIsIDB4ZmZmZiwgMHhhODE3LCAweDAwMDEsCi0JMHhhODQyLCAweGE4M2UsIDB4MjkwMCwgMHhhODVhLCAweGE4MTMsIDB4MjBjNSwgMHgwODBjLCAweDk1NjQsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDliZDMsIDB4MDEyZSwgMHgwMDllLCAweDAwZGUsCi0JMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDBhNiwgMHgwMDk2LCAweDAwNjYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE5ZTgsIDB4NzYwYywgMHgyNjYwLCAweDI2NzgsCi0JMHg4Y2ZmLCAweDA5MDQsIDB4YjE5ZCwgMHg3MDI0LCAweDljMDYsIDB4MTUyMCwgMHgyMDY5LCAweDAxMDAsCi0JMHg2OGMwLCAweDkwMDUsIDB4MDkwNCwgMHhiMTZmLCAweDA4MGMsIDB4YTZlOSwgMHg2OGMzLCAweDAwMDAsCi0JMHgwODBjLCAweGFjMWIsIDB4NzAyNywgMHgwMDAwLCAweDAwMzYsIDB4MjA2OSwgMHgwMTQwLCAweDZiMDQsCi0JMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywgMHgyZDM5LCAweDkwMDYsCi0JMHgwODBjLCAweDJkMzksIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwgMHgwMTEwLCAweDY4MjcsCi0JMHgwMDAxLCAweDAwM2UsIDB4NzAwYywgMHg5YzM2LCAweDExMTAsIDB4NjYwYywgMHg3NjBlLCAweDcwMDgsCi0JMHg5YzM2LCAweDExNDAsIDB4MmMwMCwgMHg5ZjM2LCAweDAxMTgsIDB4MmYwMCwgMHg3MDBhLCAweDAwMTAsCi0JMHg3MDBiLCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4OWYwNiwgMHgwMTEwLCAweDdlMGUsCi0JMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4ZDJjZiwgMHgxMTgwLCAweDA4MGMsCi0JMHgzMjc5LCAweDA4MGMsIDB4ZDJlMCwgMHgxNTE4LCAweDA4MGMsIDB4YmNiNiwgMHgwNDAwLCAweDA4MGMsCi0JMHhhYzFiLCAweDY4MjQsIDB4ZDA4NCwgMHgwOWIwLCAweDY4MjcsIDB4MDAwMSwgMHgwODk4LCAweDA4MGMsCi0JMHhkMmUwLCAweDExMTgsIDB4MDgwYywgMHhiY2I2LCAweDAwOTAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsCi0JMHhkMGQ2LCAweDAxNjgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDMsIDB4MTUyMCwgMHhhODY3LCAweDAxMDMsCi0JMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDZlOWYsIDB4MDgwYywgMHhkMmMzLCAweDA4MGMsCi0JMHhkNTRjLCAweDA4MGMsIDB4YjMwNiwgMHgwODBjLCAweGFhZjEsIDB4MDBjZSwgMHgwODA0LCAweGIxMjAsCi0JMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwgMHgwODA0LCAweGIxMjAsIDB4NzAwZiwgMHgwMDAwLCAweDcwMGIsCi0JMHgwMDAwLCAweDAxMmUsIDB4MDA2ZSwgMHgwMDllLCAweDAwYWUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsCi0JMHgwMGZlLCAweDAwMDUsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDYsIDB4MWQwOCwgMHgwODBjLCAweGViZDQsCi0JMHgwOGYwLCAweDAwZDYsIDB4MDE1NiwgMHgwODBjLCAweGExMGMsIDB4N2ExNCwgMHg4MmZmLCAweDAxMzgsCi0JMHg3MDAzLCAweDAxMDAsIDB4NzAwYiwgMHgwMDAzLCAweDYwYzMsIDB4MDAwOCwgMHgwNDkwLCAweDcwMDMsCi0JMHgwMjAwLCAweDcwMDcsIDB4MDAwMCwgMHgyMDY5LCAweDE4MDAsIDB4OTAxZSwgMHg2ODAwLCAweDkwODYsCi0JMHgwMDA0LCAweDExMTAsIDB4YzM4ZCwgMHgwMDYwLCAweDA4MGMsIDB4NzYzNywgMHgxMTEwLCAweGMzYWQsCi0JMHgwMDA4LCAweGMzYTUsIDB4NmFkYywgMHhkMjljLCAweDExMTAsIDB4ZDJhYywgMHgwMTA4LCAweGMzOWQsCi0JMHg3MzBlLCAweDA4MGMsIDB4ODk0YywgMHgyMGE5LCAweDAwMDYsIDB4MjAxMSwgMHhmZmVjLCAweDIwMTksCi0JMHhmZmVkLCAweDIwNzEsIDB4MDI1MCwgMHgyMzA1LCAweDIwNzIsIDB4OGU3MCwgMHgyMjA1LCAweDIwNzIsCi0JMHg4ZTcwLCAweDkzOTgsIDB4MDAwMiwgMHg5MjkwLCAweDAwMDIsIDB4MWYwNCwgMHhiMWUzLCAweDYwYzMsCi0JMHgwMDIwLCAweDA4MGMsIDB4YTZiZCwgMHgwMTVlLCAweDAwZGUsIDB4MDAwNSwgMHgwMTU2LCAweDA4MGMsCi0JMHhhMTBjLCAweDdhMTQsIDB4ODJmZiwgMHgwMTY4LCAweDkyODYsIDB4ZmZmZiwgMHgwMTE4LCAweDkyODIsCi0JMHgwMDBlLCAweDEyMzgsIDB4NzAwMywgMHgwMTAwLCAweDcwMGIsIDB4MDAwMywgMHg2MGMzLCAweDAwMDgsCi0JMHgwNDg4LCAweDcwMDMsIDB4MDIwMCwgMHg3MDA3LCAweDAwMWMsIDB4NzAwZiwgMHgwMDAxLCAweDIwMTEsCi0JMHgxOWJlLCAweDIyMDQsIDB4ODAwNywgMHg3MDFhLCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweDcwMWUsCi0JMHgwNDIxLCAweDExMjAsIDB4YjhhMCwgMHg5MDgyLCAweDAwN2YsIDB4MDI0OCwgMHgyMDAxLCAweDE4MWYsCi0JMHgyMDA0LCAweDcwMjIsIDB4MjAwMSwgMHgxODIwLCAweDIwMDQsIDB4NzAyNiwgMHgwMDMwLCAweDIwMDEsCi0JMHgxODE4LCAweDIwMDQsIDB4OTA4NCwgMHgwMGZmLCAweDcwMjYsIDB4MjBhOSwgMHgwMDA0LCAweDIwZTEsCi0JMHgwMDAxLCAweDIwOTksIDB4MTgwNSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjU2LCAweDQwMDMsCi0JMHg2MGMzLCAweDAwMWMsIDB4MDE1ZSwgMHgwODA0LCAweGE2YmQsIDB4MDAwNiwgMHgyMDAxLCAweDE4MzcsCi0JMHgyMDA0LCAweGQwYWMsIDB4MDAwZSwgMHgwMDA1LCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweGFhYmYsCi0JMHgyMDExLCAweDAwMDIsIDB4MDgwYywgMHhhYWM5LCAweDA4MGMsIDB4YTlkMywgMHgwMDM2LCAweDkwMWUsCi0JMHgwODBjLCAweGFhNDksIDB4MDAzZSwgMHgwMDA1LCAweDA4MGMsIDB4MzNhZiwgMHgwMTg4LCAweDAwMTYsCi0JMHgwMGI2LCAweDAwYzYsIDB4NzAxMCwgMHg5MDg1LCAweDAwMjAsIDB4NzAxMiwgMHgyMDA5LCAweDAwN2UsCi0JMHgwODBjLCAweDY3MjQsIDB4Yjg1YywgMHhjMGFjLCAweGI4NWUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMWUsCi0JMHgwMDA1LCAweDIwNzEsIDB4MTg4ZCwgMHg3MDAwLCAweDkwMDUsIDB4MDE0MCwgMHgyMDAxLCAweDA5NzYsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzA3NiwgMHg3MDdhLCAweDcwNmIsIDB4ZmZlMCwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MDc0LCAweDcwNTYsIDB4NzA1YiwgMHgxY2QwLCAweDAwMDUsIDB4MDBlNiwgMHgwMTI2LCAweDIwNzEsCi0JMHgxODAwLCAweDIwOTEsIDB4ODAwMCwgMHg3NTU0LCAweDk1ODIsIDB4MDAxMCwgMHgwNjA4LCAweDcwNTgsCi0JMHgyMDYwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNDgsIDB4OWNlMCwgMHgwMDE4LCAweDcwNjgsCi0JMHg5YzAyLCAweDEyMDgsIDB4MGNiMCwgMHgyMDYxLCAweDFjZDAsIDB4MGM5OCwgMHg2MDAzLCAweDAwMDgsCi0JMHg4NTI5LCAweDc1NTYsIDB4OWNhOCwgMHgwMDE4LCAweDcwNjgsIDB4OTUwMiwgMHgxMjMwLCAweDc1NWEsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDEyZSwgMHgwMGVlLCAweDAwMDUsIDB4NzA1YiwgMHgxY2QwLCAweDBjYzAsCi0JMHg5MDA2LCAweDBjYzAsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4NzU1NCwgMHg5NTgyLCAweDAwMTAsCi0JMHgwNjAwLCAweDcwNTgsIDB4MjA2MCwgMHg2MDAwLCAweDkwODYsIDB4MDAwMCwgMHgwMTQ4LCAweDljZTAsCi0JMHgwMDE4LCAweDcwNjgsIDB4OWMwMiwgMHgxMjA4LCAweDBjYjAsIDB4MjA2MSwgMHgxY2QwLCAweDBjOTgsCi0JMHg2MDAzLCAweDAwMDgsIDB4ODUyOSwgMHg3NTU2LCAweDljYTgsIDB4MDAxOCwgMHg3MDY4LCAweDk1MDIsCi0JMHgxMjI4LCAweDc1NWEsIDB4OTA4NSwgMHgwMDAxLCAweDAwZWUsIDB4MDAwNSwgMHg3MDViLCAweDFjZDAsCi0JMHgwY2M4LCAweDkwMDYsIDB4MGNjOCwgMHg5YzgyLCAweDFjZDAsIDB4MGEwYywgMHgwZGM1LCAweDIwMDEsCi0JMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgxYTBjLCAweDBkYzUsIDB4OTAwNiwgMHg2MDA2LCAweDYwMGEsCi0JMHg2MDBlLCAweDYwMTYsIDB4NjAxYSwgMHg2MDEyLCAweDYwMjMsIDB4MDAwMCwgMHg2MDAzLCAweDAwMDAsCi0JMHg2MDFlLCAweDYwNTYsIDB4NjA1YSwgMHg2MDI2LCAweDYwMmEsIDB4NjAyZSwgMHg2MDMyLCAweDYwMzYsCi0JMHg2MDNhLCAweDYwM2UsIDB4NjA0MiwgMHg2MDJhLCAweDIwNjEsIDB4MTgwMCwgMHg2MDU0LCAweDgwMDAsCi0JMHg2MDU2LCAweDkwODYsIDB4MDAwMSwgMHgwMTA4LCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwMDE2LCAweDA4MGMsIDB4OWFiMSwgMHgwMDFlLCAweDAxMmUsIDB4MGNiMCwgMHgwMDA2LCAweDYwMDAsCi0JMHg5MDg2LCAweDAwMDAsIDB4MDFjMCwgMHg2MDFjLCAweGQwODQsIDB4MTkwYywgMHgxYThlLCAweDYwMTcsCi0JMHgwMDAwLCAweDYwMjMsIDB4MDAwNywgMHgyMDAxLCAweDE5ODYsIDB4MjAwNCwgMHgwMDA2LCAweDkwODIsCi0JMHgwMDUxLCAweDAwMGUsIDB4MDIwOCwgMHg4MDA0LCAweDYwMWEsIDB4MDgwYywgMHhlZTg3LCAweDYwNDMsCi0JMHgwMDAwLCAweDYwMTMsIDB4MDAwMCwgMHgwMDBlLCAweDAwMDUsIDB4MDBlNiwgMHgwMTI2LCAweDIwNzEsCi0JMHgxODAwLCAweDIwOTEsIDB4ODAwMCwgMHg3NTU0LCAweDk1ODIsIDB4MDAwMSwgMHgwNjA4LCAweDcwNTgsCi0JMHgyMDYwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNDgsIDB4OWNlMCwgMHgwMDE4LCAweDcwNjgsCi0JMHg5YzAyLCAweDEyMDgsIDB4MGNiMCwgMHgyMDYxLCAweDFjZDAsIDB4MGM5OCwgMHg2MDAzLCAweDAwMDgsCi0JMHg4NTI5LCAweDc1NTYsIDB4OWNhOCwgMHgwMDE4LCAweDcwNjgsIDB4OTUwMiwgMHgxMjMwLCAweDc1NWEsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDEyZSwgMHgwMGVlLCAweDAwMDUsIDB4NzA1YiwgMHgxY2QwLCAweDBjYzAsCi0JMHg5MDA2LCAweDBjYzAsIDB4NjAyMCwgMHg5MDg0LCAweDAwMGYsIDB4MDAwMiwgMHhiMzY1LCAweGIzNmUsCi0JMHhiMzg5LCAweGIzYTQsIDB4ZDgyYiwgMHhkODQ4LCAweGQ4NjMsIDB4YjM2NSwgMHhiMzZlLCAweDkxMDAsCi0JMHhiM2JkLCAweGIzNjUsIDB4YjM2NSwgMHhiMzY1LCAweGIzNjUsIDB4OTE4NiwgMHgwMDEzLCAweDExMjgsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsIDB4MDAwNSwgMHgwMDY2LCAweDYwMDAsCi0JMHg5MGIyLCAweDAwMTAsIDB4MWEwYywgMHgwZGM1LCAweDAwMTMsIDB4MDA2ZSwgMHgwMDA1LCAweGIzODcsCi0JMHhiYjA1LCAweGJjZmQsIDB4YjM4NywgMHhiZDkzLCAweGI2YTAsIDB4YjM4NywgMHhiMzg3LCAweGJhODcsCi0JMHhjM2IxLCAweGIzODcsIDB4YjM4NywgMHhiMzg3LCAweGIzODcsIDB4YjM4NywgMHhiMzg3LCAweDA4MGMsCi0JMHgwZGM1LCAweDAwNjYsIDB4NjAwMCwgMHg5MGIyLCAweDAwMTAsIDB4MWEwYywgMHgwZGM1LCAweDAwMTMsCi0JMHgwMDZlLCAweDAwMDUsIDB4YjNhMiwgMHhjYTdlLCAweGIzYTIsIDB4YjNhMiwgMHhiM2EyLCAweGIzYTIsCi0JMHhiM2EyLCAweGIzYTIsIDB4Y2ExNSwgMHhjYzAwLCAweGIzYTIsIDB4Y2FiZiwgMHhjYjNlLCAweGNhYmYsCi0JMHhjYjNlLCAweGIzYTIsIDB4MDgwYywgMHgwZGM1LCAweDYwMDAsIDB4OTA4MiwgMHgwMDEwLCAweDFhMGMsCi0JMHgwZGM1LCAweDYwMDAsIDB4MDAwMiwgMHhiM2JiLCAweGMzZjgsIDB4YzRjMCwgMHhjNWYzLCAweGM3YTIsCi0JMHhiM2JiLCAweGIzYmIsIDB4YjNiYiwgMHhjM2NjLCAweGM5YTEsIDB4YzlhNCwgMHhiM2JiLCAweGIzYmIsCi0JMHhiM2JiLCAweGIzYmIsIDB4YzlkMywgMHgwODBjLCAweDBkYzUsIDB4MDA2NiwgMHg2MDAwLCAweDkwYjIsCi0JMHgwMDEwLCAweDFhMGMsIDB4MGRjNSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwgMHhiM2Q2LCAweGIzZDYsCi0JMHhiNDE5LCAweGI0YjgsIDB4YjU0ZCwgMHhiM2Q2LCAweGIzZDYsIDB4YjNkNiwgMHhiM2Q4LCAweGIzZDYsCi0JMHhiM2Q2LCAweGIzZDYsIDB4YjNkNiwgMHhiM2Q2LCAweGIzZDYsIDB4YjNkNiwgMHgwODBjLCAweDBkYzUsCi0JMHg5MTg2LCAweDAwNGMsIDB4MDU4OCwgMHg5MTg2LCAweDAwMDMsIDB4MTkwYywgMHgwZGM1LCAweDAwOTYsCi0JMHg2MDFjLCAweGMwZWQsIDB4NjAxZSwgMHg2MDAzLCAweDAwMDMsIDB4NjEwNiwgMHg2MDE0LCAweDIwNDgsCi0JMHhhODdjLCAweDkwODQsIDB4YTAwMCwgMHhjMGI1LCAweGE4N2UsIDB4YThhYywgMHhhODQ2LCAweGE4YjAsCi0JMHhhODRhLCAweDkwMDYsIDB4YTgzNiwgMHhhODNhLCAweGE4ODQsIDB4OTA5MiwgMHgxOTlhLCAweDAyMTAsCi0JMHgyMDAxLCAweDE5OTksIDB4ODAwMywgMHg4MDEzLCAweDgyMTMsIDB4OTIxMCwgMHg2MjFhLCAweDAwOWUsCi0JMHgyYzEwLCAweDA4MGMsIDB4MWJlMCwgMHgwODBjLCAweDk1NjQsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweDliZDMsIDB4MDEyZSwgMHgwMDA1LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGJjYTAsCi0JMHgwMGJlLCAweDJjMDAsIDB4MDgwYywgMHhiNTZmLCAweDA4MGMsIDB4ZDdmYiwgMHg2MDAzLCAweDAwMDcsCi0JMHgwMDA1LCAweDAwZDYsIDB4MDA5NiwgMHgwMGY2LCAweDIwNzksIDB4MTgwMCwgMHg3YTkwLCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4N2MsIDB4ZDBlYywgMHgxMTEwLCAweDkyOTAsIDB4MDAxOCwgMHhhYzc4LCAweGM0ZmMsCi0JMHgwMDQ2LCAweGE4ZTAsIDB4OTAwNSwgMHgxMTQwLCAweGE4ZGMsIDB4OTIxYSwgMHgwMTQwLCAweDAyMjAsCi0JMHhhODdiLCAweDAwMDcsIDB4MjAxMCwgMHgwMDI4LCAweGE4N2IsIDB4MDAxNSwgMHgwMDEwLCAweGE4N2IsCi0JMHgwMDAwLCAweDgyMTQsIDB4YTg4MywgMHgwMDAwLCAweGFhMDIsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsCi0JMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDI0MDAsIDB4OTAwNSwgMHgxMTA4LCAweDAwOWEsCi0JMHgyMTAwLCAweDkwODYsIDB4MDAxNSwgMHgxMTE4LCAweDIwMDEsIDB4MDAwMSwgMHgwMDM4LCAweDIxMDAsCi0JMHg5MDg2LCAweDAwMTYsIDB4MDExOCwgMHgyMDAxLCAweDAwMDEsIDB4MDAyYSwgMHg5NGE0LCAweDAwMDcsCi0JMHg4NDIzLCAweDk0MDUsIDB4MDAwMiwgMHhiNDgwLCAweGI0ODAsIDB4YjQ3YiwgMHhiNDdlLCAweGI0ODAsCi0JMHhiNDc4LCAweGI0NmIsIDB4YjQ2YiwgMHhiNDZiLCAweGI0NmIsIDB4YjQ2YiwgMHhiNDZiLCAweGI0NmIsCi0JMHhiNDZiLCAweGI0NmIsIDB4YjQ2YiwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDA0ZSwgMHgwMGZlLCAweDAwOWUsIDB4MDBkZSwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweGJmYWIsIDB4MDAyOCwgMHgwODBjLCAweGMwZTksIDB4MDAxMCwgMHgwODBjLCAweGMxZGYsCi0JMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwMmUsIDB4MDAxZSwgMHgyYzAwLCAweGE4OTYsCi0JMHgwMDBlLCAweDA4MGMsIDB4YjYyZCwgMHgwNTMwLCAweGE4MDQsIDB4YTgwZSwgMHgwMGE2LCAweDIwNTAsCi0JMHhiMTAwLCAweDAwYWUsIDB4ODAwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsCi0JMHhmZmMwLCAweDkwODAsIDB4MDAwMiwgMHhhYWNjLCAweGFiZDAsIDB4YWNkNCwgMHhhZGQ4LCAweDIwMzEsCi0JMHgwMDAwLCAweDIwNDEsIDB4MTI2YywgMHgwODBjLCAweGI3ZjEsIDB4MDE2MCwgMHgwMDBlLCAweDkwMDUsCi0JMHgwMTIwLCAweDAwZmUsIDB4MDA5ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDBmZSwgMHgwMDllLCAweDAwZGUsCi0JMHgwODA0LCAweGIyZDMsIDB4MjAwMSwgMHgwMDJjLCAweDkwMGUsIDB4MDgwYywgMHhiNjkzLCAweDBjNzAsCi0JMHg5MWI2LCAweDAwMTUsIDB4MDE3MCwgMHg5MWI2LCAweDAwMTYsIDB4MDE1OCwgMHg5MWIyLCAweDAwNDcsCi0JMHgwYTBjLCAweDBkYzUsIDB4OTFiMiwgMHgwMDUwLCAweDFhMGMsIDB4MGRjNSwgMHg5MTgyLCAweDAwNDcsCi0JMHgwMGNhLCAweDIwMDEsIDB4MDEwOSwgMHgyMDA0LCAweGQwOGMsIDB4MDE5OCwgMHgwMTI2LCAweDIwOTEsCi0JMHgyODAwLCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDA4MGMsIDB4OTRiMSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwMDBlLCAweDAxMmUsIDB4YTAwMSwgMHg2MDAwLCAweDkwODYsIDB4MDAwMiwgMHgxMTEwLCAweDA4MDQsCi0JMHhiNDE5LCAweDAwMDUsIDB4YjRlYiwgMHhiNGViLCAweGI0ZWQsIDB4YjUyMywgMHhiNGViLCAweGI0ZWIsCi0JMHhiNGViLCAweGI0ZWIsIDB4YjUzNiwgMHgwODBjLCAweDBkYzUsIDB4MDBkNiwgMHgwMDE2LCAweDAwOTYsCi0JMHgwODBjLCAweDlhNjEsIDB4MDgwYywgMHg5YmQzLCAweDYwMDMsIDB4MDAwNCwgMHg2MTE0LCAweDIxNDgsCi0JMHhhODdjLCAweGQwZmMsIDB4MDFjMCwgMHhhODc4LCAweGMwZmMsIDB4OTAwNSwgMHgxMTU4LCAweGE4OTQsCi0JMHg5MDA1LCAweDAxNDAsIDB4MjAwMSwgMHgwMDAwLCAweDkwMGUsIDB4MDgwYywgMHhiNjkzLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwYTgsIDB4NjAwMywgMHgwMDAyLCAweGE4YTQsIDB4YTlhOCwgMHg5MTA1LCAweDExNzgsCi0JMHhhOGFlLCAweGE4YjIsIDB4MGM3OCwgMHhhODdmLCAweDAwMjAsIDB4YTg4YywgMHhhODhhLCAweGE4YTQsCi0JMHhhOGFlLCAweGE4YTgsIDB4YThiMiwgMHhhOGM3LCAweDAwMDAsIDB4YThjYiwgMHgwMDAwLCAweDAwOWUsCi0JMHgwMDFlLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweDlhNjEsIDB4MDBkNiwgMHgwMDk2LCAweDYxMTQsCi0JMHgyMTQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTIwLCAweGE4N2IsIDB4MDAwNiwgMHgwODBjLCAweDZlOWYsCi0JMHgwMDllLCAweDAwZGUsIDB4MDgwYywgMHhiMmQzLCAweDA4MDQsIDB4OWJkMywgMHgwODBjLCAweDlhNjEsCi0JMHgwODBjLCAweDMyNTAsIDB4MDgwYywgMHhkN2Y4LCAweDAwZDYsIDB4MDA5NiwgMHg2MTE0LCAweDIxNDgsCi0JMHgwODBjLCAweGQwZDgsIDB4MDEyMCwgMHhhODdiLCAweDAwMjksIDB4MDgwYywgMHg2ZTlmLCAweDAwOWUsCi0JMHgwMGRlLCAweDA4MGMsIDB4YjJkMywgMHgwODA0LCAweDliZDMsIDB4OTE4MiwgMHgwMDQ3LCAweDAwMDIsCi0JMHhiNTVkLCAweGI1NWYsIDB4YjU1ZCwgMHhiNTVkLCAweGI1NWQsIDB4YjU1ZCwgMHhiNTVkLCAweGI1NWQsCi0JMHhiNTVkLCAweGI1NWQsIDB4YjU1ZCwgMHhiNTVkLCAweGI1NWYsIDB4MDgwYywgMHgwZGM1LCAweDAwZDYsCi0JMHgwMDk2LCAweDYwMWYsIDB4MDAwMCwgMHg2MTE0LCAweDIxNDgsIDB4YTg3YiwgMHgwMDAwLCAweGE4ODMsCi0JMHgwMDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwMDllLCAweDAwZGUsIDB4MDgwNCwgMHhiMmQzLCAweDAwMjYsCi0JMHgwMDM2LCAweDAwNTYsIDB4MDA2NiwgMHgwMDk2LCAweDAwYTYsIDB4MDBmNiwgMHgwMDA2LCAweDA4MGMsCi0JMHgxMDBlLCAweDAwMGUsIDB4MDkwYywgMHgwZGM1LCAweGE5NjAsIDB4MjFlOCwgMHhhOTVjLCAweDkxODgsCi0JMHgwMDE5LCAweDIxYTAsIDB4OTAwZSwgMHgyMGE5LCAweDAwMjAsIDB4NDEwNCwgMHhhODdhLCAweDIwNzksCi0JMHgxODAwLCAweDc5OTAsIDB4OTE4OCwgMHgwMDE4LCAweDkxOGMsIDB4MGZmZiwgMHhhOTcyLCAweGFjNzYsCi0JMHgyOTUwLCAweDAwYTYsIDB4MjAwMSwgMHgwMjA1LCAweDIwMDMsIDB4MDAwMCwgMHg5MDFlLCAweDIwMjksCi0JMHgwMDAxLCAweDkxODIsIDB4MDAzNSwgMHgxMjI4LCAweDIwMTEsIDB4MDAxZiwgMHgwODBjLCAweGNjODUsCi0JMHgwNGMwLCAweDIxMzAsIDB4MjAwOSwgMHgwMDM0LCAweDIwMTEsIDB4MDAxZiwgMHgwODBjLCAweGNjODUsCi0JMHg5NmIyLCAweDAwMzQsIDB4YjAwNCwgMHg5MDRkLCAweDAxMTAsIDB4MDgwYywgMHgwZmMwLCAweDA4MGMsCi0JMHgxMDBlLCAweDAxZDAsIDB4ODUyOCwgMHhhODY3LCAweDAxMTAsIDB4YTg2YiwgMHgwMDAwLCAweDI5MjAsCi0JMHhiNDA2LCAweDk2OGEsIDB4MDAzZCwgMHgxMjMwLCAweDI2MDgsIDB4MjAxMSwgMHgwMDFiLCAweDA4MGMsCi0JMHhjYzg1LCAweDAwYjgsIDB4OTZiMiwgMHgwMDNjLCAweDIwMDksIDB4MDAzYywgMHgyOTUwLCAweDIwMTEsCi0JMHgwMDFiLCAweDA4MGMsIDB4Y2M4NSwgMHgwYzE4LCAweDIwMDEsIDB4MDIwNSwgMHgyMDAzLCAweDAwMDAsCi0JMHgwMGFlLCAweDg1MmYsIDB4OTVhZCwgMHgwMDUwLCAweGI1NjYsIDB4YjA3MCwgMHhjMGZkLCAweGIwNzIsCi0JMHgwMDQ4LCAweDIwMDEsIDB4MDIwNSwgMHgyMDAzLCAweDAwMDAsIDB4MDBhZSwgMHg4NTJmLCAweDk1YWQsCi0JMHgwMDUwLCAweGI1NjYsIDB4MmE0OCwgMHhhODA0LCAweGE4MDcsIDB4MDAwMCwgMHgwMDA2LCAweDA4MGMsCi0JMHg2ZTlmLCAweDAwMGUsIDB4MjA0OCwgMHg5MDA1LCAweDFkYjAsIDB4MDBmZSwgMHgwMGFlLCAweDAwOWUsCi0JMHgwMDZlLCAweDAwNWUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMDUsIDB4MDBkNiwgMHgwMGY2LCAweDAwOTYsCi0JMHgwMDA2LCAweDA4MGMsIDB4MTAwZSwgMHgwMDBlLCAweDA5MGMsIDB4MGRjNSwgMHhhOTYwLCAweDIxZTgsCi0JMHhhOTVjLCAweDkxODgsIDB4MDAxOSwgMHgyMWEwLCAweDkwMGUsIDB4MjBhOSwgMHgwMDIwLCAweDQxMDQsCi0JMHhhYTY2LCAweGE4N2EsIDB4MjA3OSwgMHgxODAwLCAweDc5OTAsIDB4ODEwYywgMHg5MTg4LCAweDAwMGMsCi0JMHg5MTgyLCAweDAwMWEsIDB4MDIxMCwgMHgyMDA5LCAweDAwMWEsIDB4MjFhOCwgMHg4MTBiLCAweGE5NzIsCi0JMHhhYzc2LCAweDJlOTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMWYsIDB4MjBhMCwgMHgyMDAxLCAweDAyMDUsCi0JMHgyMDBjLCAweDkxOGQsIDB4MDA4MCwgMHgyMTAyLCAweDQwMDMsIDB4MjAwMywgMHgwMDAwLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAwOWUsIDB4MDBmZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAxNiwgMHgwMGQ2LCAweDAwZjYsCi0JMHgwMDk2LCAweDAwMTYsIDB4MjAwMSwgMHgwMjA1LCAweDIwMGMsIDB4OTE4ZCwgMHgwMDgwLCAweDIxMDIsCi0JMHgwMDFlLCAweDIwNzksIDB4MDIwMCwgMHgyZTk4LCAweGE4N2MsIDB4ZDBlYywgMHgwMTE4LCAweDllODAsCi0JMHgwMDBjLCAweDIwOTgsIDB4MjAyMSwgMHgwMDNlLCAweDkwMWUsIDB4OTI4MiwgMHgwMDIwLCAweDAyMTgsCi0JMHgyMDExLCAweDAwMjAsIDB4MjAxOCwgMHg5NDg2LCAweDAwM2UsIDB4MTE3MCwgMHgwMDk2LCAweDA4MGMsCi0JMHgxMDBlLCAweDI5MDAsIDB4MDA5ZSwgMHgwNWMwLCAweGE4MDYsIDB4MjA0OCwgMHhhODYwLCAweDIwZTgsCi0JMHhhODVjLCAweDkwODAsIDB4MDAwMiwgMHgyMGEwLCAweDMzMDAsIDB4OTA4ZSwgMHgwMjYwLCAweDAxNDAsCi0JMHgyMDA5LCAweDAyODAsIDB4OTEwMiwgMHg5MjBhLCAweDAyMTgsIDB4MjAxMCwgMHgyMTAwLCAweDkzMTgsCi0JMHgyMjAwLCAweDk0MDIsIDB4MTIyOCwgMHgyNDAwLCAweDkyMDIsIDB4MjQxMCwgMHg5MzE4LCAweDkwMDYsCi0JMHgyMDIwLCAweDIyYTgsIDB4YTgwMCwgMHg5MjAwLCAweGE4MDIsIDB4MjBlMSwgMHgwMDAwLCAweDQwMDMsCi0JMHg4M2ZmLCAweDAxODAsIDB4MzMwMCwgMHg5MDg2LCAweDAyODAsIDB4MTEzMCwgMHg3ODE0LCAweDgwMDAsCi0JMHg5MDg1LCAweDAwODAsIDB4NzgxNiwgMHgyZTk4LCAweDIzMTAsIDB4ODRmZiwgMHgwOTA0LCAweGI2NDIsCi0JMHgwODA0LCAweGI2NDQsIDB4OTA4NSwgMHgwMDAxLCAweDc4MTcsIDB4MDAwMCwgMHgwMDllLCAweDAwZmUsCi0JMHgwMGRlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGQ2LCAweDAwMzYsIDB4MDA5NiwgMHg2MzE0LCAweDIzNDgsCi0JMHhhODdhLCAweGE5ODIsIDB4MDgwYywgMHg2ZTkyLCAweDAwOWUsIDB4MDAzZSwgMHgwMGRlLCAweDAwMDUsCi0JMHg5MWI2LCAweDAwMTUsIDB4MTExOCwgMHgwODBjLCAweGIyZDMsIDB4MDAzMCwgMHg5MWI2LCAweDAwMTYsCi0JMHgxOTBjLCAweDBkYzUsIDB4MDgwYywgMHhiMmQzLCAweDAwMDUsIDB4MjBhOSwgMHgwMDBlLCAweDIwZTEsCi0JMHgwMDAwLCAweDJlOTgsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHgyMGEwLCAweDAwOWUsIDB4NDAwMywgMHg5MTk2LCAweDAwMTYsIDB4MDFmMCwgMHgwMTM2LCAweDkwODAsCi0JMHgwMDFiLCAweDIwYTAsIDB4MjAxMSwgMHgwMDA2LCAweDIwYTksIDB4MDAwMSwgMHgzNDE4LCAweDgzMTgsCi0JMHgyM2EwLCAweDQwMDMsIDB4MzMxOCwgMHg4MzE4LCAweDIzOTgsIDB4ODIxMSwgMHgxZGI4LCAweDIwMTEsCi0JMHgwMDA2LCAweDAxM2UsIDB4MjBhMCwgMHgzMzE4LCAweDgzMTgsIDB4MjM5OCwgMHg0MDAzLCAweDM0MTgsCi0JMHg4MzE4LCAweDIzYTAsIDB4ODIxMSwgMHgxZGI4LCAweDAwOTYsIDB4MDgwYywgMHhkMGQ4LCAweDAxMzAsCi0JMHg2MDE0LCAweDIwNDgsIDB4YTgwNywgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHgwMDllLCAweDA4MDQsCi0JMHhiMmQzLCAweDAwOTYsIDB4MDBkNiwgMHgwMDM2LCAweDczMzAsIDB4OTM4NiwgMHgwMjAwLCAweDExYTgsCi0JMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGNmLCAweDAwMDAsIDB4MDBiZSwgMHg2MDE0LCAweDkwMDUsCi0JMHgwMTMwLCAweDIwNDgsIDB4YTgwNywgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhYjMyLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwM2UsIDB4MDBkZSwgMHgwMDllLCAweDAwMDUsIDB4MDAxMSwgMHgxZDQ4LCAweDBjYzgsCi0JMHgwMDA2LCAweDAwMTYsIDB4MDgwYywgMHhkN2UzLCAweDAxODgsIDB4NjAxNCwgMHg5MDA1LCAweDExNzAsCi0JMHg2MDBiLCAweDAwMDMsIDB4NjAxYiwgMHgwMDAwLCAweDYwNDMsIDB4MDAwMCwgMHgyMDA5LCAweDAwMjIsCi0JMHgwODBjLCAweGJhZGQsIDB4OTAwNiwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsCi0JMHgwY2QwLCAweDAwOTYsIDB4MDAxNiwgMHgyMGE5LCAweDAwMTQsIDB4OWU4MCwgMHgwMDBjLCAweDIwZTEsCi0JMHgwMDAwLCAweDIwOTgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDAyLCAweDIwYTAsIDB4NDAwMywgMHgyMDAxLCAweDAyMDUsIDB4MjAwMywgMHgwMDAxLCAweDIwOTksCi0JMHgwMjYwLCAweDIwYTksIDB4MDAxNiwgMHg0MDAzLCAweDIwYTksIDB4MDAwYSwgMHhhODA0LCAweDIwNDgsCi0JMHhhODYwLCAweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMDIsIDB4MjBhMCwgMHg0MDAzLCAweDIwMDEsCi0JMHgwMjA1LCAweDIwMDMsIDB4MDAwMiwgMHgyMDk5LCAweDAyNjAsIDB4MjBhOSwgMHgwMDIwLCAweDQwMDMsCi0JMHgyMDAzLCAweDAwMDAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDAsIDB4MjA0OCwgMHhhODY3LCAweDAxMDMsCi0JMHgwODBjLCAweGIyZDMsIDB4MDAxZSwgMHgwMDllLCAweDAwMDUsIDB4MDA5NiwgMHgwMDE2LCAweDkwMGUsCi0JMHg3MDMwLCAweDkwODYsIDB4MDEwMCwgMHgwMTQwLCAweDcwMzgsIDB4OTA4NCwgMHgwMGZmLCAweDgwMGMsCi0JMHg3MDNjLCAweDkwODQsIDB4MDBmZiwgMHg4MDA0LCAweDkwODAsIDB4MDAwNCwgMHg5MTA4LCAweDgxMGIsCi0JMHgyMDExLCAweDAwMDIsIDB4MjAxOSwgMHgwMDBjLCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGNjODUsCi0JMHgwODBjLCAweGQwZDgsIDB4MDE0MCwgMHg2MDE0LCAweDIwNDgsIDB4YTgwNywgMHgwMDAwLCAweGE4NjQsCi0JMHhhOGUyLCAweGE4NjcsIDB4MDEwMywgMHgwODBjLCAweGIyZDMsIDB4MDAxZSwgMHgwMDllLCAweDAwMDUsCi0JMHgwMDE2LCAweDIwMDksIDB4MDAwMCwgMHg3MDMwLCAweDkwODYsIDB4MDIwMCwgMHgwMTEwLCAweDIwMDksCi0JMHgwMDAxLCAweDAwOTYsIDB4NjAxNCwgMHg5MDRkLCAweDA5MGMsIDB4MGRjNSwgMHhhOTdhLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAwOWUsIDB4MDgwYywgMHhiMmQzLCAweDAwMWUsIDB4MDAwNSwgMHgwMDE2LCAweDAwOTYsCi0JMHg3MDMwLCAweDkwODYsIDB4MDEwMCwgMHgxMTE4LCAweDIwMDksIDB4MDAwNCwgMHgwMDEwLCAweDcwMzQsCi0JMHg4MDBjLCAweDgxMGIsIDB4MjAxMSwgMHgwMDBjLCAweDIwMTksIDB4MDAwYywgMHg2MDE0LCAweDIwNDgsCi0JMHhhODA0LCAweDAwOTYsIDB4OTAwNSwgMHgwMTA4LCAweDIwNDgsIDB4MDgwYywgMHhjYzg1LCAweDAwOWUsCi0JMHgwODBjLCAweGQwZDgsIDB4MDE0OCwgMHhhODA0LCAweDkwMDUsIDB4MTE1OCwgMHhhODA3LCAweDAwMDAsCi0JMHhhODY0LCAweGE4ZTIsIDB4YTg2NywgMHgwMTAzLCAweDA4MGMsIDB4YjJkMywgMHgwMDllLCAweDAwMWUsCi0JMHgwMDA1LCAweDAwODYsIDB4MjA0MCwgMHhhMDMwLCAweDgwMDcsIDB4OTA4NiwgMHgwMTAwLCAweDExMTgsCi0JMHgwODBjLCAweGJjYjYsIDB4MDBlMCwgMHhhMDM0LCAweDgwMDcsIDB4ODAwYywgMHg4ODA2LCAweDgwMDYsCi0JMHg4MDA3LCAweDkwYmMsIDB4MDAzZiwgMHg5MDg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDBjLCAweGE4N2IsCi0JMHgwMDAwLCAweGE4ODMsIDB4MDAwMCwgMHhhODk3LCAweDQwMDAsIDB4YWFhMCwgMHhhYjljLCAweGFjYTgsCi0JMHhhZGE0LCAweDIwMzEsIDB4MDAwMCwgMHgyMDQxLCAweDEyNTIsIDB4MDAxOSwgMHgwZDA4LCAweDAwOGUsCi0JMHgwODk4LCAweDAwOTYsIDB4MDAwNiwgMHgwODBjLCAweDEwMGUsIDB4MDAwZSwgMHgwMWIwLCAweGE4YWIsCi0JMHgwZGNiLCAweGE4NzYsIDB4MDAwZSwgMHhhOGEyLCAweDAwMDYsIDB4YWU2YSwgMHgyODAwLCAweGE4OWUsCi0JMHhhOTdhLCAweGFmNzIsIDB4YWE4ZSwgMHhhYjkyLCAweGFjOTYsIDB4YWQ5YSwgMHgwMDg2LCAweDI5NDAsCi0JMHgwODBjLCAweDEwZjgsIDB4MDA4ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDA5ZSwgMHgwMDA1LCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwMjYsIDB4NzAwOCwgMHg5MDg0LCAweDAwZmYsIDB4NjIxMCwgMHgwMGI2LCAweDIyNTgsCi0JMHhiYTEwLCAweDAwYmUsIDB4OTIwNiwgMHgxNTIwLCAweDcwMGMsIDB4NjIxMCwgMHgwMGI2LCAweDIyNTgsCi0JMHhiYTE0LCAweDAwYmUsIDB4OTIwNiwgMHgxMWUwLCAweDYwNDMsIDB4MDAwMCwgMHgyYzY4LCAweDAwMTYsCi0JMHgyMDA5LCAweDAwMzUsIDB4MDgwYywgMHhkNzU5LCAweDAwMWUsIDB4MTE1OCwgMHg2MjJjLCAweDIyNjgsCi0JMHgyMDcxLCAweDAyNmMsIDB4NmIyMCwgMHg5Mzg2LCAweDAwMDMsIDB4MDEzMCwgMHg5Mzg2LCAweDAwMDYsCi0JMHgwMTI4LCAweDA4MGMsIDB4YjJkMywgMHgwMDIwLCAweDAwMzksIDB4MDAxMCwgMHgwODBjLCAweGI5MTAsCi0JMHgwMDJlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDAwOTYsIDB4NjgxNCwgMHgyMDQ4LCAweDkxODYsCi0JMHgwMDE1LCAweDA5MDQsIDB4YjhmOCwgMHg5MThlLCAweDAwMTYsIDB4MTkwNCwgMHhiOTBlLCAweDcwMGMsCi0JMHg5MDhjLCAweGZmMDAsIDB4OTE4NiwgMHgxNzAwLCAweDAxMjAsIDB4OTE4NiwgMHgwMzAwLCAweDE5MDQsCi0JMHhiOGQyLCAweDg5ZmYsIDB4MTEzOCwgMHg2ODAwLCAweDkwODYsIDB4MDAwZiwgMHgwOTA0LCAweGI4YjUsCi0JMHgwODA0LCAweGI5MGMsIDB4NjgwOCwgMHg5MDg2LCAweGZmZmYsIDB4MTkwNCwgMHhiOGZhLCAweGE4N2MsCi0JMHg5MDg0LCAweDAwNjAsIDB4OTA4NiwgMHgwMDIwLCAweDExMjgsIDB4YTgzYywgMHhhOTQwLCAweDkxMDUsCi0JMHgxOTA0LCAweGI4ZmEsIDB4NjgyNCwgMHhkMDg0LCAweDE5MDQsIDB4YjhmYSwgMHhkMGI0LCAweDAxNTgsCi0JMHgwMDE2LCAweDIwMDEsIDB4MTk4NiwgMHgyMDBjLCAweDYwMTgsIDB4OTEwMiwgMHg5MDgyLCAweDAwMDUsCi0JMHgwMDFlLCAweDFhMDQsIDB4YjhmYSwgMHgwODBjLCAweGQyYzMsIDB4Njg1YywgMHhhODgyLCAweGE4N2MsCi0JMHhjMGRjLCAweGMwZjQsIDB4YzBkNCwgMHhhODdlLCAweDAwMjYsIDB4OTAwZSwgMHg2YTE4LCAweDIwMDEsCi0JMHgwMDBhLCAweDA4MGMsIDB4OTM3NSwgMHhhODg0LCAweDkyMGEsIDB4MDIwOCwgMHg4MDExLCAweGFhODYsCi0JMHg4MmZmLCAweDAwMmUsIDB4MTEzOCwgMHgwMGM2LCAweDJkNjAsIDB4MDgwYywgMHhjZGUzLCAweDAwY2UsCi0JMHgwODA0LCAweGI5MGMsIDB4MDBjNiwgMHhhODY4LCAweGQwZmMsIDB4MTExOCwgMHgwODBjLCAweDYxYzIsCi0JMHgwMDEwLCAweDA4MGMsIDB4NjVjZiwgMHgwMGNlLCAweDE5MDQsIDB4YjhmYSwgMHgwMGM2LCAweDJkNjAsCi0JMHgwODBjLCAweGIyZDMsIDB4MDBjZSwgMHgwODA0LCAweGI5MGMsIDB4MDBjNiwgMHgwODBjLCAweGIzMjUsCi0JMHgwMTk4LCAweDYwMTcsIDB4MDAwMCwgMHg2ODEwLCAweDYwMTIsIDB4MDgwYywgMHhkNTU0LCAweDYwMjMsCi0JMHgwMDAzLCAweDY5MDQsIDB4MDBjNiwgMHgyZDYwLCAweDA4MGMsIDB4YjJkMywgMHgwMGNlLCAweDA4MGMsCi0JMHhiMzUyLCAweDAwY2UsIDB4MDgwNCwgMHhiOTBjLCAweDIwMDEsIDB4MTk4OCwgMHgyMDA0LCAweDY4NDIsCi0JMHgwMGNlLCAweDA0ZDAsIDB4NzAwOCwgMHg5MDg2LCAweDAwMGIsIDB4MTFjOCwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI5MDAsIDB4YzFiYywgMHhiOTAyLCAweDAwYmUsIDB4MDBjNiwgMHgyZDYwLCAweGE4N2IsCi0JMHgwMDAzLCAweDA4MGMsIDB4ZDc5ZCwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsCi0JMHgwMDAyLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsIDB4MDBjZSwgMHgwMGU4LCAweDcwMGMsCi0JMHg5MDg2LCAweDJhMDAsIDB4MTEzOCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2ODQyLCAweDAwYTAsCi0JMHgwNDc5LCAweDAwYTAsIDB4ODlmZiwgMHgwOTBjLCAweDBkYzUsIDB4MDBjNiwgMHgwMGQ2LCAweDJkNjAsCi0JMHhhODY3LCAweDAxMDMsIDB4YTg3YiwgMHgwMDAzLCAweDA4MGMsIDB4NmNiOSwgMHgwODBjLCAweGQyYzMsCi0JMHgwODBjLCAweGIzMDYsIDB4MDBkZSwgMHgwMGNlLCAweDA4MGMsIDB4YjJkMywgMHgwMDllLCAweDAwMDUsCi0JMHg5MTg2LCAweDAwMTUsIDB4MTEyOCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2ODQyLCAweDAwNjgsCi0JMHg5MThlLCAweDAwMTYsIDB4MTE2MCwgMHgwMGM2LCAweDJkMDAsIDB4MjA2MCwgMHgwODBjLCAweGVlODcsCi0JMHgwODBjLCAweDhhMjUsIDB4MDgwYywgMHhiMmQzLCAweDAwY2UsIDB4MDgwYywgMHhiMmQzLCAweDAwMDUsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDA0NiwgMHg3MjI4LCAweGFjYjAsIDB4YWJhYywgMHhkMmY0LCAweDAxMzAsCi0JMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2ODQyLCAweDA4MDQsIDB4Yjk4YSwgMHgwMGM2LCAweDJkNjAsCi0JMHgwODBjLCAweGNjZTYsIDB4MDBjZSwgMHg2ODA0LCAweDkwODYsIDB4MDA1MCwgMHgxMTY4LCAweDAwYzYsCi0JMHgyZDAwLCAweDIwNjAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA1MCwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MDBjZSwgMHgwNGYwLCAweDY4MDAsIDB4OTA4NiwgMHgwMDBmLCAweDAxYTgsCi0JMHg4OWZmLCAweDA5MGMsIDB4MGRjNSwgMHg2ODAwLCAweDkwODYsIDB4MDAwNCwgMHgxMTkwLCAweGE4N2MsCi0JMHhkMGFjLCAweDAxNzgsIDB4YTg0MywgMHgwZmZmLCAweGE4M2YsIDB4MGZmZiwgMHhhODgwLCAweGMwZmMsCi0JMHhhODgyLCAweDIwMDEsIDB4MDAwMSwgMHg2ODMyLCAweDA0MDAsIDB4MjAwMSwgMHgwMDA3LCAweDY4MzIsCi0JMHgwMGUwLCAweGE4N2MsIDB4ZDBiNCwgMHgxMTUwLCAweGQwYWMsIDB4MGRiOCwgMHg2ODI0LCAweGQwZjQsCi0JMHgxZDQ4LCAweGE4MzgsIDB4YTkzNCwgMHg5MTA1LCAweDBkODAsIDB4MGMyMCwgMHhkMmVjLCAweDFkNjgsCi0JMHg3MDI0LCAweDkzMDYsIDB4MTExOCwgMHg3MDIwLCAweDk0MDYsIDB4MGQzOCwgMHg3MDIwLCAweDY4M2UsCi0JMHg3MDI0LCAweDY4M2EsIDB4MjAwMSwgMHgwMDA1LCAweDY4MzIsIDB4MDgwYywgMHhkNDRiLCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMTAsIDB4MDgwYywgMHhiMmQzLCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMDUsCi0JMHgwMGU2LCAweDAwZDYsIDB4MDAyNiwgMHg3MDA4LCAweDkwODQsIDB4MDBmZiwgMHg2MjEwLCAweDAwYjYsCi0JMHgyMjU4LCAweGJhMTAsIDB4MDBiZSwgMHg5MjA2LCAweDE5MDQsIDB4YjlmNSwgMHg3MDBjLCAweDYyMTAsCi0JMHgwMGI2LCAweDIyNTgsIDB4YmExNCwgMHgwMGJlLCAweDkyMDYsIDB4MTkwNCwgMHhiOWY1LCAweDYwMzgsCi0JMHgyMDY4LCAweDY4MjQsIDB4YzBkYywgMHg2ODI2LCAweDZhMjAsIDB4OTI4NiwgMHgwMDA3LCAweDA5MDQsCi0JMHhiOWY1LCAweDkyODYsIDB4MDAwMiwgMHgwOTA0LCAweGI5ZjUsIDB4OTI4NiwgMHgwMDAwLCAweDA1ZTgsCi0JMHg2ODA4LCAweDYzM2MsIDB4OTMwNiwgMHgxNWM4LCAweDIwNzEsIDB4MDI2YywgMHg5MTg2LCAweDAwMTUsCi0JMHgwNTcwLCAweDkxOGUsIDB4MDAxNiwgMHgxMTAwLCAweDAwYzYsIDB4NjAzOCwgMHgyMDYwLCAweDYxMDQsCi0JMHg5MTg2LCAweDAwNGIsIDB4MDFjMCwgMHg5MTg2LCAweDAwNGMsIDB4MDFhOCwgMHg5MTg2LCAweDAwNGQsCi0JMHgwMTkwLCAweDkxODYsIDB4MDA0ZSwgMHgwMTc4LCAweDkxODYsIDB4MDA1MiwgMHgwMTYwLCAweDYwMTQsCi0JMHgwMDk2LCAweDIwNDgsIDB4MDgwYywgMHhkMGQ4LCAweDA5MGMsIDB4MGRjNSwgMHhhODdiLCAweDAwMDMsCi0JMHgwMDllLCAweDA4MGMsIDB4ZDc5ZCwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsCi0JMHgwMDAyLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsIDB4MDBjZSwgMHgwMDMwLCAweDYwMzgsCi0JMHgyMDcwLCAweDIwMDEsIDB4MTk4OCwgMHgyMDA0LCAweDcwNDIsIDB4MDgwYywgMHhiMmQzLCAweDAwMmUsCi0JMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsIDB4MDBmNiwgMHg2MDE0LCAweDIwNDgsCi0JMHg2MDEwLCAweDIwNTgsIDB4OTFiNiwgMHgwMDE1LCAweDAxMzAsIDB4YmEwOCwgMHhiYjBjLCAweGJjMDAsCi0JMHhjNDhjLCAweGJjMDIsIDB4MDQ3MCwgMHgwMDk2LCAweDAxNTYsIDB4MDAzNiwgMHgwMDI2LCAweDJiNDgsCi0JMHg5ZTkwLCAweDAwMTAsIDB4MjAxOSwgMHgwMDBhLCAweDIwYTksIDB4MDAwNCwgMHgwODBjLCAweGMzNzksCi0JMHgwMDJlLCAweDAwM2UsIDB4MDE1ZSwgMHgwMDllLCAweDE5MDQsIDB4YmE2NiwgMHgwMDk2LCAweDAxNTYsCi0JMHgwMDM2LCAweDAwMjYsIDB4MmI0OCwgMHg5ZTkwLCAweDAwMTQsIDB4MjAxOSwgMHgwMDA2LCAweDIwYTksCi0JMHgwMDA0LCAweDA4MGMsIDB4YzM3OSwgMHgwMDJlLCAweDAwM2UsIDB4MDE1ZSwgMHgwMDllLCAweDE1YjAsCi0JMHg3MjM4LCAweGJhMGEsIDB4NzMzYywgMHhiYjBlLCAweDgzZmYsIDB4MDExOCwgMHhiYzAwLCAweGM0OGQsCi0JMHhiYzAyLCAweGE4MDQsIDB4OTAwNSwgMHgxMTI4LCAweDAwZmUsIDB4MDA5ZSwgMHgwMGJlLCAweDA4MDQsCi0JMHhiNmRjLCAweDAwOTYsIDB4MjA0OCwgMHhhYTEyLCAweGFiMTYsIDB4YWMwYSwgMHgwMDllLCAweDgwMDYsCi0JMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMDIsCi0JMHgyMDA5LCAweDAwMmIsIDB4YWFhMCwgMHhhYjljLCAweGFjYTgsIDB4YWRhNCwgMHgyMDMxLCAweDAwMDAsCi0JMHgyMDQxLCAweDEyNTIsIDB4MDgwYywgMHhiN2YxLCAweDAxMzAsIDB4MDBmZSwgMHgwMDllLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwYmUsIDB4MDAwNSwgMHgwODBjLCAweGJjYjYsIDB4MGNiOCwgMHgyYjc4LCAweDAwZjYsCi0JMHgwODBjLCAweDMyNTAsIDB4MDgwYywgMHhkN2Y4LCAweDAwZmUsIDB4MDBjNiwgMHgwODBjLCAweGIyN2QsCi0JMHgyZjAwLCAweDYwMTIsIDB4NjAxNywgMHgwMDAwLCAweDYwMjMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsCi0JMHg2MDAzLCAweDAwMDEsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjY2YSwgMHgwODBjLCAweDY2OTYsCi0JMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDAwY2UsIDB4MDgwNCwgMHhiYTM5LCAweDIxMDAsCi0JMHg5MWIyLCAweDAwNTMsIDB4MWEwYywgMHgwZGM1LCAweDkxYjIsIDB4MDA0MCwgMHgxYTA0LCAweGJhZWYsCi0JMHgwMDAyLCAweGJhZGQsIDB4YmFkZCwgMHhiYWQzLCAweGJhZGQsIDB4YmFkZCwgMHhiYWRkLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWRkLCAweGJhZDEsIDB4YmFkZCwgMHhiYWRkLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDMsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWRkLCAweGJhZGQsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsCi0JMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWQxLCAweGJhZDEsIDB4YmFkMSwgMHhiYWRkLCAweGJhZDEsCi0JMHhiYWQxLCAweDA4MGMsIDB4MGRjNSwgMHgwMDY2LCAweDAwYjYsIDB4NjYxMCwgMHgyNjU4LCAweGI4Y2MsCi0JMHhjMDhjLCAweGI4Y2UsIDB4MDBiZSwgMHgwMDZlLCAweDAwMDAsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsCi0JMHg5MTg2LCAweDAwMzIsIDB4MDExOCwgMHgwODBjLCAweDk1NDcsIDB4MDAxMCwgMHgwODBjLCAweDk0ZmYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDlhYjEsIDB4MDEyZSwgMHgwMDA1LCAweDI2MDAsCi0JMHgwMDAyLCAweGJhZGQsIDB4YmFkZCwgMHhiYjAzLCAweGJhZGQsIDB4YmFkZCwgMHhiYjAzLCAweGJiMDMsCi0JMHhiYjAzLCAweGJiMDMsIDB4YmFkZCwgMHhiYjAzLCAweGJhZGQsIDB4YmIwMywgMHhiYWRkLCAweGJiMDMsCi0JMHhiYjAzLCAweGJiMDMsIDB4YmIwMywgMHgwODBjLCAweDBkYzUsIDB4NjAwNCwgMHg5MGIyLCAweDAwNTMsCi0JMHgxYTBjLCAweDBkYzUsIDB4OTFiNiwgMHgwMDEzLCAweDA5MDQsIDB4YmJkOCwgMHg5MWI2LCAweDAwMjcsCi0JMHgxOTA0LCAweGJiODIsIDB4MDgwYywgMHg5OWE1LCAweDYwMDQsIDB4MDgwYywgMHhkMmNmLCAweDAxYjAsCi0JMHgwODBjLCAweGQyZTAsIDB4MDFhOCwgMHg5MDhlLCAweDAwMjEsIDB4MDkwNCwgMHhiYjdmLCAweDkwOGUsCi0JMHgwMDIyLCAweDExMzAsIDB4MDgwYywgMHhiNzA4LCAweDA5MDQsIDB4YmI3YiwgMHgwODA0LCAweGJiN2MsCi0JMHg5MDhlLCAweDAwM2QsIDB4MDkwNCwgMHhiYjdmLCAweDA4MDQsIDB4YmI3NSwgMHgwODBjLCAweDMyNzksCi0JMHgyMDAxLCAweDAwMDcsIDB4MDgwYywgMHg2NjZhLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI5YTAsCi0JMHgwMGJlLCAweDA4MGMsIDB4YmNiNiwgMHg5MTg2LCAweDAwN2UsIDB4MTE0OCwgMHgyMDAxLCAweDE4MzcsCi0JMHgyMDE0LCAweGMyODUsIDB4MDgwYywgMHg3NjM3LCAweDExMDgsIDB4YzJhZCwgMHgyMjAyLCAweDAwMzYsCi0JMHgwMDI2LCAweDIwMTksIDB4MDAyOCwgMHgyMTEwLCAweDA4MGMsIDB4ZWY5NCwgMHgwMDJlLCAweDAwM2UsCi0JMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgyMTEwLCAweDIwMTksIDB4MDAyOCwgMHgwODBjLCAweDk2YTQsCi0JMHgwMDc2LCAweDkwM2UsIDB4MDgwYywgMHg5NTc3LCAweDYwMTAsIDB4MDBiNiwgMHg5MDVkLCAweDAxMDAsCi0JMHgwMGJlLCAweDJjMDgsIDB4MDgwYywgMHhlOTFjLCAweDAwN2UsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsCi0JMHgwODBjLCAweGQ3ZjgsIDB4MDAxNiwgMHgwODBjLCAweGQ1NGMsIDB4MDgwYywgMHhiMmQzLCAweDAwMWUsCi0JMHgwODBjLCAweDMzNGMsIDB4MDgwYywgMHg5YWIxLCAweDAwMzAsIDB4MDgwYywgMHhkNTRjLCAweDA4MGMsCi0JMHhiMmQzLCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDA4MGMsIDB4YmNiNiwgMHgwY2IwLCAweDA4MGMsCi0JMHhiY2YyLCAweDBjOTgsIDB4OTE4NiwgMHgwMDE1LCAweDAxMTgsIDB4OTE4NiwgMHgwMDE2LCAweDExNDgsCi0JMHgwODBjLCAweGQ4MDksIDB4MGQ4MCwgMHg2MDAwLCAweDkwODYsIDB4MDAwMiwgMHgwOTA0LCAweGJjZmQsCi0JMHgwYzUwLCAweDkxODYsIDB4MDAxNCwgMHgxZDM4LCAweDA4MGMsIDB4OTlhNSwgMHg2MDA0LCAweDkwOGUsCi0JMHgwMDIyLCAweDExMTgsIDB4MDgwYywgMHhiNzA4LCAweDA5ZjAsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsCi0JMHhkN2Y4LCAweDA4MGMsIDB4ZDJjZiwgMHgxMTk4LCAweDA4MGMsIDB4MzI3OSwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI5YTAsIDB4MDBiZSwgMHgwODBjLCAweGJjYjYsIDB4OTE4NiwgMHgwMDdlLCAweDExMjgsCi0JMHgyMDAxLCAweDE4MzcsIDB4MjAwYywgMHhjMTg1LCAweDIxMDIsIDB4MDgwNCwgMHhiYjc1LCAweDA4MGMsCi0JMHhkMmUwLCAweDExMjAsIDB4MDgwYywgMHhiY2I2LCAweDA4MDQsIDB4YmI3NSwgMHg2MDA0LCAweDkwOGUsCi0JMHgwMDMyLCAweDExNjAsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzEsIDB4MTg5ZSwgMHgyMDc5LCAweDAwMDAsCi0JMHgwODBjLCAweDM1ZTcsIDB4MDBmZSwgMHgwMGVlLCAweDA4MDQsIDB4YmI3NSwgMHg2MDA0LCAweDkwOGUsCi0JMHgwMDIxLCAweDBkNDAsIDB4OTA4ZSwgMHgwMDIyLCAweDA5MGMsIDB4YmNiNiwgMHgwODA0LCAweGJiNzUsCi0JMHg5MGIyLCAweDAwNDAsIDB4MWEwNCwgMHhiYzkyLCAweDIwMDgsIDB4MDAwMiwgMHhiYzIwLCAweGJjMjEsCi0JMHhiYzI0LCAweGJjMjcsIDB4YmMyYSwgMHhiYzM3LCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsCi0JMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsCi0JMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsCi0JMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjM2EsIDB4YmM0NywgMHhiYzFlLCAweGJjNDksCi0JMHhiYzQ3LCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzQ3LCAweGJjNDcsCi0JMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjMWUsCi0JMHhiYzc5LCAweGJjNDcsIDB4YmMxZSwgMHhiYzQzLCAweGJjMWUsIDB4YmMxZSwgMHhiYzFlLCAweGJjNDQsCi0JMHhiYzFlLCAweGJjMWUsIDB4YmMxZSwgMHhiYzQ3LCAweGJjNzAsIDB4YmMxZSwgMHgwODBjLCAweDBkYzUsCi0JMHgwNDMwLCAweDIwMDEsIDB4MDAwYiwgMHgwNDcwLCAweDIwMDEsIDB4MDAwMywgMHgwNDU4LCAweDIwMDEsCi0JMHgwMDA1LCAweDA0NDAsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwNCwgMHgwMGJlLCAweDkwODQsCi0JMHgwMGZmLCAweDkwODYsIDB4MDAwMCwgMHgxNTAwLCAweDIwMDEsIDB4MDAwMSwgMHgwMGQ4LCAweDIwMDEsCi0JMHgwMDA5LCAweDAwYzAsIDB4MDgwYywgMHg5OWE1LCAweDYwMDMsIDB4MDAwNSwgMHgwODBjLCAweGQ3ZmIsCi0JMHgwODBjLCAweDlhYjEsIDB4MDA3MCwgMHgwMDE4LCAweDAwMTAsIDB4MDgwYywgMHg2NjZhLCAweDA4MDQsCi0JMHhiYzhhLCAweDA4MGMsIDB4OTlhNSwgMHgwODBjLCAweGQ3ZmIsIDB4NjAwMywgMHgwMDA0LCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4MDgwYywgMHg2NjZhLCAweDA4MGMsIDB4OTlhNSwgMHg2MDAzLCAweDAwMDIsCi0JMHgwMDM2LCAweDIwMTksIDB4MTg1MiwgMHgyMzA0LCAweDkwODQsIDB4ZmYwMCwgMHgxMTIwLCAweDIwMDEsCi0JMHgxOTg2LCAweDIwMWMsIDB4MDA0MCwgMHg4MDA3LCAweDkwOWEsIDB4MDAwNCwgMHgwZWMwLCAweDgwMDMsCi0JMHg4MDFiLCAweDgzMWIsIDB4OTMxOCwgMHg2MzFhLCAweDAwM2UsIDB4MDgwYywgMHg5YWIxLCAweDBjMDgsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhkNTRjLCAweDA4MGMsIDB4YjJkMywgMHgwODBjLCAweDlhYjEsCi0JMHgwOGMwLCAweDAwZTYsIDB4MDBmNiwgMHgyMDcxLCAweDE4OWUsIDB4MjA3OSwgMHgwMDAwLCAweDA4MGMsCi0JMHgzNWU3LCAweDAwZmUsIDB4MDBlZSwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsCi0JMHg5YWIxLCAweDA4MzgsIDB4MDgwYywgMHg5OWE1LCAweDYwMDMsIDB4MDAwMiwgMHgwODBjLCAweGQ3ZmIsCi0JMHgwODA0LCAweDlhYjEsIDB4MjYwMCwgMHgyMDA4LCAweDAwMDIsIDB4YmNhOSwgMHhiYzhhLCAweGJjYTcsCi0JMHhiYzhhLCAweGJjOGEsIDB4YmNhNywgMHhiY2E3LCAweGJjYTcsIDB4YmNhNywgMHhiYzhhLCAweGJjYTcsCi0JMHhiYzhhLCAweGJjYTcsIDB4YmM4YSwgMHhiY2E3LCAweGJjYTcsIDB4YmNhNywgMHhiY2E3LCAweDA4MGMsCi0JMHgwZGM1LCAweDA4MGMsIDB4OTlhNSwgMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweDZlOWYsCi0JMHgwMDllLCAweDA4MGMsIDB4YjJkMywgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHgwMGU2LCAweDAwOTYsCi0JMHgwMDI2LCAweDAwMTYsIDB4MDgwYywgMHhkMGQ4LCAweDA1NjgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjQsCi0JMHg5MDg2LCAweDAxMzksIDB4MTFhOCwgMHhhODk0LCAweDkwODYsIDB4MDA1NiwgMHgxMTQ4LCAweDA4MGMsCi0JMHg1NTZmLCAweDAxMzAsIDB4MjAwMSwgMHgwMDAwLCAweDkwMGUsIDB4MjAxMSwgMHg0MDAwLCAweDAwMjgsCi0JMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwgMHgyMDExLCAweDQwMDUsIDB4MDgwYywgMHhkNmJkLCAweDAwOTAsCi0JMHhhODY4LCAweGQwZmMsIDB4MDE3OCwgMHhhODA3LCAweDAwMDAsIDB4MDAxNiwgMHg2MDA0LCAweDkwOGUsCi0JMHgwMDIxLCAweDAxNjgsIDB4OTA4ZSwgMHgwMDNkLCAweDAxNTAsIDB4MDAxZSwgMHhhODY3LCAweDAxMDMsCi0JMHhhODMzLCAweDAxMDAsIDB4MDAxZSwgMHgwMDJlLCAweDAwOWUsIDB4MDBlZSwgMHgwMDA1LCAweDAwMWUsCi0JMHgwMDA5LCAweDBjYzAsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4YTgwMCwgMHgyMDQ4LCAweGE4NjcsCi0JMHgwMTAzLCAweGE4MjMsIDB4ODAwMSwgMHgwMDllLCAweDAwMDUsIDB4MDBiNiwgMHg2NjEwLCAweDI2NTgsCi0JMHhiODA0LCAweDkwODQsIDB4MDBmZiwgMHg5MGIyLCAweDAwMGMsIDB4MWEwYywgMHgwZGM1LCAweDY2MDQsCi0JMHg5NmI2LCAweDAwNGQsIDB4MTEyMCwgMHgwODBjLCAweGQ1ZGMsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwNDMsIDB4MTEyMCwgMHgwODBjLCAweGQ2MjUsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwNGIsIDB4MTEyMCwgMHgwODBjLCAweGQ2NTEsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwMzMsIDB4MTEyMCwgMHgwODBjLCAweGQ1NmUsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwMjgsIDB4MTEyMCwgMHgwODBjLCAweGQzMWUsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwMjksIDB4MTEyMCwgMHgwODBjLCAweGQzNWYsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwMWYsIDB4MTEyMCwgMHgwODBjLCAweGI2YWQsIDB4MDgwNCwgMHhiZDgyLCAweDY2MDQsCi0JMHg5NmI2LCAweDAwMDAsIDB4MTExOCwgMHgwODBjLCAweGI5ZmIsIDB4MDRlMCwgMHg2NjA0LCAweDk2YjYsCi0JMHgwMDIyLCAweDExMTgsIDB4MDgwYywgMHhiNmU5LCAweDA0YTgsIDB4NjYwNCwgMHg5NmI2LCAweDAwMzUsCi0JMHgxMTE4LCAweDA4MGMsIDB4YjgwZiwgMHgwNDcwLCAweDY2MDQsIDB4OTZiNiwgMHgwMDM5LCAweDExMTgsCi0JMHgwODBjLCAweGI5OTAsIDB4MDQzOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAzZCwgMHgxMTE4LCAweDA4MGMsCi0JMHhiNzIxLCAweDA0MDAsIDB4NjYwNCwgMHg5NmI2LCAweDAwNDQsIDB4MTExOCwgMHgwODBjLCAweGI3NWQsCi0JMHgwMGM4LCAweDY2MDQsIDB4OTZiNiwgMHgwMDQ5LCAweDExMTgsIDB4MDgwYywgMHhiNzllLCAweDAwOTAsCi0JMHg2NjA0LCAweDk2YjYsIDB4MDA0MSwgMHgxMTE4LCAweDA4MGMsIDB4Yjc4OCwgMHgwMDU4LCAweDkxYjYsCi0JMHgwMDE1LCAweDExMTAsIDB4MDA2MywgMHgwMDMwLCAweDkxYjYsIDB4MDAxNiwgMHgxMTI4LCAweDAwYmUsCi0JMHgwODA0LCAweGMwOGUsIDB4MDBiZSwgMHgwMDA1LCAweDA4MGMsIDB4YjM2ZCwgMHgwY2Q4LCAweGJkOWYsCi0JMHhiZGFkLCAweGJkOWYsIDB4YmRmNCwgMHhiZDlmLCAweGJmYWIsIDB4YzA5YiwgMHhiZDlmLCAweGJkOWYsCi0JMHhjMDY0LCAweGJkOWYsIDB4YzA3YSwgMHgwMDk2LCAweDYwMWYsIDB4MDAwMCwgMHg2MDE0LCAweDIwNDgsCi0JMHhhODAwLCAweDIwNDgsIDB4YTg2NywgMHgwMTAzLCAweDAwOWUsIDB4MDgwNCwgMHhiMmQzLCAweGEwMDEsCi0JMHhhMDAxLCAweDAwMDUsIDB4NjYwNCwgMHg5NmI2LCAweDAwMDQsIDB4MTEzMCwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDY2NTYsIDB4MDgwNCwgMHhiMmQzLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MDkwLCAweDkwODYsIDB4MDA3NCwgMHgxNTQwLCAweDA4MGMsIDB4ZThlZCwgMHgxMWIwLCAweDYwMTAsCi0JMHgwMGI2LCAweDIwNTgsIDB4NzAzMCwgMHhkMDhjLCAweDAxMjgsIDB4YjgwMCwgMHhkMGJjLCAweDAxMTAsCi0JMHhjMGM1LCAweGI4MDIsIDB4MDBmOSwgMHgwMGJlLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDY2NmEsCi0JMHgwODBjLCAweDMyNzksIDB4MDgwYywgMHhiMmQzLCAweDAwOTgsIDB4MjAwMSwgMHgwMDBhLCAweDA4MGMsCi0JMHg2NjZhLCAweDA4MGMsIDB4MzI3OSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwMDIwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweGJmN2IsCi0JMHgwMGVlLCAweDAwMDUsIDB4MDBkNiwgMHhiODAwLCAweGQwODQsIDB4MDE2MCwgMHg5MDA2LCAweDA4MGMsCi0JMHg2NjU2LCAweDIwNjksIDB4MTg0NywgMHg2ODA0LCAweGQwYTQsIDB4MDEyMCwgMHgyMDAxLCAweDAwMDYsCi0JMHgwODBjLCAweDY2OTYsIDB4MDBkZSwgMHgwMDA1LCAweDAwYjYsIDB4MDA5NiwgMHgwMGQ2LCAweDIwMTEsCi0JMHgxODI0LCAweDIyMDQsIDB4OTA4NiwgMHgwMDc0LCAweDE5MDQsIDB4YmY1MCwgMHg2MDEwLCAweDIwNTgsCi0JMHhiYWEwLCAweDkyODYsIDB4MDA3ZSwgMHgxMTIwLCAweDA4MGMsIDB4YzFlYSwgMHgwODA0LCAweGJlYmQsCi0JMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDA5MDQsIDB4YmU1ZiwgMHgwMGQ2LCAweDA4MGMsCi0JMHg3NjM3LCAweDAxYTAsIDB4MDAyNiwgMHgyMDExLCAweDAwMTAsIDB4MDgwYywgMHg2YWM3LCAweDAwMmUsCi0JMHgwOTA0LCAweGJlNWUsIDB4MDgwYywgMHg1N2U5LCAweDE1OTgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDcsCi0JMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhODMzLCAweGRlYWQsIDB4MDQ1MCwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI5MTAsIDB4MDBiZSwgMHg5MTg2LCAweDAwZmYsIDB4MDU4MCwgMHgwMDI2LCAweDIwMTEsCi0JMHg4MDA4LCAweDA4MGMsIDB4NmFjNywgMHgwMDJlLCAweDA1NDgsIDB4NjAxNCwgMHg5MDA1LCAweDA5MGMsCi0JMHgwZGM1LCAweDIwNDgsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDM5LCAweDExNDAsCi0JMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwgMHgyMDExLCAweDQwMDksIDB4MDgwYywgMHhkNmJkLCAweDAwNDAsCi0JMHg2MDE0LCAweDIwNDgsIDB4YTgwNywgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhODMzLCAweGRlYWQsCi0JMHg2MDEwLCAweDIwNTgsIDB4YjlhMCwgMHgwMDE2LCAweDA4MGMsIDB4MzI3OSwgMHgwODBjLCAweGIyZDMsCi0JMHgwMDFlLCAweDA4MGMsIDB4MzM0YywgMHgwMGRlLCAweDA4MDQsIDB4YmY1NSwgMHgwMGRlLCAweDA4MGMsCi0JMHhjMWRmLCAweDYwMTAsIDB4MjA1OCwgMHhiYWEwLCAweDkyODYsIDB4MDA4MCwgMHgxNTEwLCAweDYwMTQsCi0JMHg5MDA1LCAweDAxYTgsIDB4MjA0OCwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMzksCi0JMHgxMTQwLCAweDIwMDEsIDB4MDAwMCwgMHg5MDBlLCAweDIwMTEsIDB4NDAwMCwgMHgwODBjLCAweGQ2YmQsCi0JMHgwMDMwLCAweGE4MDcsIDB4MDAwMCwgMHhhODY3LCAweDAxMDMsIDB4YTgzMywgMHgwMjAwLCAweDIwMDEsCi0JMHgwMDA2LCAweDA4MGMsIDB4NjY2YSwgMHgwODBjLCAweDMyNzksIDB4MDgwYywgMHhiMmQzLCAweDA4MDQsCi0JMHhiZjU1LCAweDA4MGMsIDB4YmY2MywgMHg2MDE0LCAweDkwMDUsIDB4MDE5MCwgMHgyMDQ4LCAweGE4NjgsCi0JMHhkMGY0LCAweDAxZTgsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDM5LCAweDFkMDgsCi0JMHgyMDAxLCAweDAwMDAsIDB4OTAwZSwgMHgyMDExLCAweDQwMDAsIDB4MDgwYywgMHhkNmJkLCAweDA4ZjgsCi0JMHgwODBjLCAweGJmNTksIDB4MDE2MCwgMHg5MDA2LCAweDA4MGMsIDB4NjY1NiwgMHgyMDAxLCAweDAwMDQsCi0JMHgwODBjLCAweDY2OTYsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjY2YSwgMHgwOGEwLCAweDIwMDEsCi0JMHgwMDA0LCAweDA4MGMsIDB4NjY2YSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAzLCAweDA4MGMsCi0JMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwODA0LCAweGJmNTUsIDB4Yjg1YywgMHhkMGU0LCAweDAxNzgsCi0JMHgwODBjLCAweGQ0ZWUsIDB4MDgwYywgMHg3NjM3LCAweDAxMTgsIDB4ZDBkYywgMHgxOTA0LCAweGJlN2YsCi0JMHgyMDExLCAweDE4MzcsIDB4MjIwNCwgMHhjMGFkLCAweDIwMTIsIDB4MDgwNCwgMHhiZTdmLCAweDA4MGMsCi0JMHhkNTJiLCAweDIwMTEsIDB4MTgzNywgMHgyMjA0LCAweGMwYTUsIDB4MjAxMiwgMHgwMDA2LCAweDA4MGMsCi0JMHhlYWI5LCAweDAwMGUsIDB4MTkwNCwgMHhiZTdmLCAweGMwYjUsIDB4MjAxMiwgMHgyMDAxLCAweDAwMDYsCi0JMHgwODBjLCAweDY2NmEsIDB4OTAwNiwgMHgwODBjLCAweDY2NTYsIDB4MDBjNiwgMHgyMDAxLCAweDE4MGYsCi0JMHgyMDA0LCAweGQwOWMsIDB4MDUyMCwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHgwMGU2LCAweDIwNzEsCi0JMHgxODAwLCAweDcwMGMsIDB4OTA4NCwgMHgwMGZmLCAweDc4ZTYsIDB4NzA3ZSwgMHg3MDEwLCAweDc4ZWEsCi0JMHg3MDgyLCAweDkwOGMsIDB4MDBmZiwgMHgwMGVlLCAweDc4MGMsIDB4YzBiNSwgMHg3ODBlLCAweDAwZmUsCi0JMHgwODBjLCAweDI4YmMsIDB4MDBmNiwgMHgyMTAwLCAweDkwMGUsIDB4MDgwYywgMHgyODczLCAweDc5NWUsCi0JMHgwMGZlLCAweDkxODYsIDB4MDA4MSwgMHgwMWYwLCAweDIwMDksIDB4MDA4MSwgMHgwMGUwLCAweDIwMDksCi0JMHgwMGVmLCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDc5ZWEsIDB4NzhlNywgMHgwMDAwLCAweDc5MzIsCi0JMHg3OTM2LCAweDc4MGMsIDB4YzBiNSwgMHg3ODBlLCAweDAwZmUsIDB4MDgwYywgMHgyOGJjLCAweDAwZjYsCi0JMHgyMDc5LCAweDE4MDAsIDB4Nzk4MiwgMHgyMTAwLCAweDkwMGUsIDB4Nzk3ZSwgMHgwODBjLCAweDI4NzMsCi0JMHg3OTVlLCAweDAwZmUsIDB4ODEwOCwgMHgwODBjLCAweDY2YjksIDB4MmIwMCwgMHgwMGNlLCAweDE5MDQsCi0JMHhiZTdmLCAweDYwMTIsIDB4MjAwOSwgMHgxODBmLCAweDIxMGMsIDB4ZDE5YywgMHgwMTUwLCAweDIwMDksCi0JMHgwMjdjLCAweDIxMGMsIDB4OTE4YywgMHgwMGZmLCAweGI5MTIsIDB4MjAwOSwgMHgwMjdkLCAweDIxMGMsCi0JMHhiOTE2LCAweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDY2NmEsIDB4NjAyMywgMHgwMDAxLCAweDYwMDMsCi0JMHgwMDAxLCAweDYwMDcsIDB4MDAwMiwgMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDAwMjgsCi0JMHgwODBjLCAweGJjYjYsIDB4MjAwMSwgMHgwMDAxLCAweDA0MzEsIDB4MDBkZSwgMHgwMDllLCAweDAwYmUsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTgxMCwgMHgyMDA0LCAweGQwYTQsIDB4MDEyMCwgMHgyMDAxLCAweDE4NDgsCi0JMHgyMDA0LCAweGQwYWMsIDB4MDAwNSwgMHgwMGU2LCAweDA4MGMsIDB4ZWZlZCwgMHgwMTkwLCAweDIwNzEsCi0JMHgwMjYwLCAweDcxMDgsIDB4NzIwYywgMHg5MThjLCAweDAwZmYsIDB4MTExOCwgMHg5Mjg0LCAweGZmMDAsCi0JMHgwMTQwLCAweDYwMTAsIDB4MjA1OCwgMHhiOGEwLCAweDkwODQsIDB4ZmY4MCwgMHgxMTEwLCAweGI5MTIsCi0JMHhiYTE2LCAweDAwZWUsIDB4MDAwNSwgMHgyMDMwLCAweDkwMDUsIDB4MDE1OCwgMHgyMDAxLCAweDAwMDcsCi0JMHgwODBjLCAweDY2NmEsIDB4MDgwYywgMHg1N2U5LCAweDExMjAsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsCi0JMHg2Njk2LCAweDI2MDAsIDB4OTAwNSwgMHgxMWIwLCAweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NjgsCi0JMHgwMDllLCAweGQwZmMsIDB4MTE3OCwgMHgwMDM2LCAweDAwNDYsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsCi0JMHhiYmEwLCAweDAwYmUsIDB4MjAyMSwgMHgwMDA0LCAweDIwMTEsIDB4ODAxNCwgMHgwODBjLCAweDRjNDQsCi0JMHgwMDRlLCAweDAwM2UsIDB4MDgwYywgMHgzMjc5LCAweDYwMjAsIDB4OTA4NiwgMHgwMDBhLCAweDExMDgsCi0JMHgwMDA1LCAweDA4MDQsIDB4YjJkMywgMHgwMGI2LCAweDAwZTYsIDB4MDAyNiwgMHgwMDE2LCAweDIwNzEsCi0JMHgxODAwLCAweDcwOTAsIDB4OTA4NiwgMHgwMDE0LCAweDE5MDQsIDB4YzA1YSwgMHgyMDAxLCAweDE4MGQsCi0JMHgyMDA0LCAweGQwOGMsIDB4MDkwNCwgMHhjMDBkLCAweDAwZDYsIDB4MDgwYywgMHg3NjM3LCAweDAxYTAsCi0JMHgwMDI2LCAweDIwMTEsIDB4MDAxMCwgMHgwODBjLCAweDZhYzcsIDB4MDAyZSwgMHgwOTA0LCAweGMwMGMsCi0JMHgwODBjLCAweDU3ZTksIDB4MTU5OCwgMHg2MDE0LCAweDIwNDgsIDB4YTgwNywgMHgwMDAwLCAweGE4NjcsCi0JMHgwMTAzLCAweGE4MzMsIDB4ZGVhZCwgMHgwNDUwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI5MTAsCi0JMHgwMGJlLCAweDkxODYsIDB4MDBmZiwgMHgwNTgwLCAweDAwMjYsIDB4MjAxMSwgMHg4MDA4LCAweDA4MGMsCi0JMHg2YWM3LCAweDAwMmUsIDB4MDU0OCwgMHg2MDE0LCAweDkwMDUsIDB4MDkwYywgMHgwZGM1LCAweDIwNDgsCi0JMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMzksIDB4MTE0MCwgMHgyMDAxLCAweDAwMzAsCi0JMHg5MDBlLCAweDIwMTEsIDB4NDAwOSwgMHgwODBjLCAweGQ2YmQsIDB4MDA0MCwgMHg2MDE0LCAweDIwNDgsCi0JMHhhODA3LCAweDAwMDAsIDB4YTg2NywgMHgwMTAzLCAweGE4MzMsIDB4ZGVhZCwgMHg2MDEwLCAweDIwNTgsCi0JMHhiOWEwLCAweDAwMTYsIDB4MDgwYywgMHgzMjc5LCAweDA4MGMsIDB4YjJkMywgMHgwMDFlLCAweDA4MGMsCi0JMHgzMzRjLCAweDAwZGUsIDB4MDgwNCwgMHhjMDVmLCAweDAwZGUsIDB4MDgwYywgMHg1N2U5LCAweDExNzAsCi0JMHg2MDE0LCAweDkwMDUsIDB4MTE1OCwgMHgwMDM2LCAweDAwNDYsIDB4NjAxMCwgMHgyMDU4LCAweGJiYTAsCi0JMHgyMDIxLCAweDAwMDYsIDB4MDgwYywgMHg0ZGZiLCAweDAwNGUsIDB4MDAzZSwgMHgwMGQ2LCAweDYwMTAsCi0JMHgyMDU4LCAweDA4MGMsIDB4NjdiZiwgMHgwODBjLCAweGJkZTIsIDB4MDBkZSwgMHgwODBjLCAweGMyYjUsCi0JMHgxNTg4LCAweDYwMTAsIDB4MjA1OCwgMHhiODkwLCAweDkwMDUsIDB4MDU2MCwgMHgyMDAxLCAweDAwMDYsCi0JMHgwODBjLCAweDY2NmEsIDB4MDA5NiwgMHg2MDE0LCAweDkwNGQsIDB4MDFkMCwgMHhhODY0LCAweDkwODQsCi0JMHgwMGZmLCAweDkwODYsIDB4MDAzOSwgMHgxMTQwLCAweDIwMDEsIDB4MDAwMCwgMHg5MDBlLCAweDIwMTEsCi0JMHg0MDAwLCAweDA4MGMsIDB4ZDZiZCwgMHgwMDYwLCAweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsCi0JMHgwMDI5LCAweDAxMzAsIDB4YTgwNywgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhODMzLCAweDAyMDAsCi0JMHgwMDllLCAweDA4MGMsIDB4MzI3OSwgMHg2MDIwLCAweDkwODYsIDB4MDAwYSwgMHgwMTQwLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwMjgsIDB4MDgwYywgMHhiY2I2LCAweDkwMDYsIDB4MDgwYywgMHhiZjdiLCAweDAwMWUsCi0JMHgwMDJlLCAweDAwZWUsIDB4MDBiZSwgMHgwMDA1LCAweDIwMTEsIDB4MTgyNCwgMHgyMjA0LCAweDkwODYsCi0JMHgwMDE0LCAweDExNjAsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NjY2YSwgMHg2MDAzLCAweDAwMDEsCi0JMHg2MDA3LCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDA4MDQsIDB4OWFiMSwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODA0LCAweGJmN2IsIDB4MjAzMCwgMHgyMDExLCAweDE4MjQsIDB4MjIwNCwgMHg5MDg2LCAweDAwMDQsCi0JMHgxMTQ4LCAweDk2YjYsIDB4MDAwYiwgMHgxMTIwLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2NmEsCi0JMHgwODA0LCAweGIyZDMsIDB4MjAwMSwgMHgwMDAxLCAweDA4MDQsIDB4YmY3YiwgMHgwMDAyLCAweGJkOWYsCi0JMHhjMGE2LCAweGJkOWYsIDB4YzBlOSwgMHhiZDlmLCAweGMxOTYsIDB4YzA5YiwgMHhiZGEyLCAweGJkOWYsCi0JMHhjMWFhLCAweGJkOWYsIDB4YzFiYywgMHg2NjA0LCAweDk2ODYsIDB4MDAwMywgMHgwOTA0LCAweGJmYWIsCi0JMHg5NmI2LCAweDAwMWUsIDB4MTExMCwgMHgwODBjLCAweGIyZDMsIDB4MDAwNSwgMHgwMGI2LCAweDAwZDYsCi0JMHgwMGM2LCAweDA4MGMsIDB4YzFjZSwgMHgxMWEwLCAweDkwMDYsIDB4MDgwYywgMHg2NjU2LCAweDA4MGMsCi0JMHgzMjUwLCAweDA4MGMsIDB4ZDdmOCwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywgMHg2NjZhLCAweDYwMDMsCi0JMHgwMDAxLCAweDYwMDcsIDB4MDAwMiwgMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDA0MjgsCi0JMHgyMDA5LCAweDAyNmUsIDB4MjEwNCwgMHg5MDg2LCAweDAwMDksIDB4MTE2MCwgMHg2MDEwLCAweDIwNTgsCi0JMHhiODQwLCAweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDAxODAsIDB4ODAwMSwgMHhiODQyLCAweDYwMWIsCi0JMHgwMDBhLCAweDAwOTgsIDB4MjAwOSwgMHgwMjZmLCAweDIxMDQsIDB4OTA4NCwgMHhmZjAwLCAweDkwOGUsCi0JMHgxOTAwLCAweDAxNTgsIDB4OTA4ZSwgMHgxZTAwLCAweDA5OTAsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsCi0JMHhkN2Y4LCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweGJmN2IsIDB4MDBjZSwgMHgwMGRlLCAweDAwYmUsCi0JMHgwMDA1LCAweDAwOTYsIDB4MDBiNiwgMHgwMDI2LCAweDkwMTYsIDB4MDgwYywgMHhjMWRjLCAweDAwZDYsCi0JMHgyMDY5LCAweDE5N2MsIDB4MmQwNCwgMHg5MDA1LCAweDAxNjgsIDB4NjAxMCwgMHgyMDU4LCAweGI4YTAsCi0JMHg5MDg2LCAweDAwN2UsIDB4MTEzOCwgMHgyMDY5LCAweDE4MjAsIDB4MmQwNCwgMHg4MDAwLCAweDIwNmEsCi0JMHgwMGRlLCAweDAwMTAsIDB4MDBkZSwgMHgwMDg4LCAweDkwMDYsIDB4MDgwYywgMHg2NjU2LCAweDIwMDEsCi0JMHgwMDAyLCAweDA4MGMsIDB4NjY2YSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAyLCAweDA4MGMsCi0JMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwODA0LCAweGMxNjYsIDB4MDgwYywgMHhkMGQ4LCAweDAxYjAsCi0JMHg2MDE0LCAweDIwNDgsIDB4YTg2NCwgMHgyMDEwLCAweDkwODYsIDB4MDEzOSwgMHgxMTM4LCAweDYwMDcsCi0JMHgwMDE2LCAweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweGQ3MWEsIDB4MDBiMCwgMHg2MDE0LCAweDIwNDgsCi0JMHhhODY0LCAweGQwZmMsIDB4MDExOCwgMHgyMDAxLCAweDAwMDEsIDB4MGNhOCwgMHgyMDAxLCAweDE4MGUsCi0JMHgyMDA0LCAweGQwZGMsIDB4MDE0OCwgMHg2MDEwLCAweDIwNTgsIDB4Yjg0MCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDA1LCAweDExMTAsIDB4OTAwNiwgMHgwYzM4LCAweDA4MGMsIDB4YmNiNiwgMHgyMDA5LCAweDAyNmUsCi0JMHgyMTM0LCAweDk2YjQsIDB4MDBmZiwgMHg5Njg2LCAweDAwMDUsIDB4MDUyMCwgMHg5Njg2LCAweDAwMGIsCi0JMHgwMWM4LCAweDIwMDksIDB4MDI2ZiwgMHgyMTA0LCAweDkwODQsIDB4ZmYwMCwgMHgxMTE4LCAweDk2ODYsCi0JMHgwMDA5LCAweDAxYzAsIDB4OTA4NiwgMHgxOTAwLCAweDExNjgsIDB4OTY4NiwgMHgwMDA5LCAweDAxOTAsCi0JMHgyMDAxLCAweDAwMDQsIDB4MDgwYywgMHg2NjZhLCAweDIwMDEsIDB4MDAyOCwgMHg2MDFhLCAweDYwMDcsCi0JMHgwMDUyLCAweDAwMjAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4YmY3YiwgMHgwMDJlLCAweDAwYmUsCi0JMHgwMDllLCAweDAwMDUsIDB4OTI4NiwgMHgwMTM5LCAweDAxNjAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsCi0JMHhkMGQ4LCAweDAxNDAsIDB4YTg2NCwgMHg5MDg2LCAweDAxMzksIDB4MDExOCwgMHhhODY4LCAweGQwZmMsCi0JMHgwMTA4LCAweDBjNDAsIDB4NjAxMCwgMHgyMDU4LCAweGI4NDAsIDB4OTA4NCwgMHgwMGZmLCAweDkwMDUsCi0JMHgwMTM4LCAweDgwMDEsIDB4Yjg0MiwgMHg2MDFiLCAweDAwMGEsIDB4NjAwNywgMHgwMDE2LCAweDA4ZjAsCi0JMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgxMTM4LCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsCi0JMHg2MGMxLCAweDAwZWUsIDB4MDAxMCwgMHgwODBjLCAweDMyNTAsIDB4MDg2MCwgMHgyMDAxLCAweDAwMDQsCi0JMHgwODBjLCAweDY2NmEsIDB4MDgwYywgMHhjMWRjLCAweDExNDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsCi0JMHgwMDAzLCAweDA4MGMsIDB4OTU0NywgMHgwODA0LCAweDlhYjEsIDB4MDgwYywgMHhiY2I2LCAweDkwMDYsCi0JMHgwODA0LCAweGJmN2IsIDB4MDQ4OSwgMHgxMTYwLCAweDIwMDEsIDB4MDAwOCwgMHgwODBjLCAweDY2NmEsCi0JMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDA1LCAweDA4MGMsIDB4OTU0NywgMHgwODA0LCAweDlhYjEsCi0JMHgyMDAxLCAweDAwMDEsIDB4MDgwNCwgMHhiZjdiLCAweDAwZjksIDB4MTE2MCwgMHgyMDAxLCAweDAwMGEsCi0JMHgwODBjLCAweDY2NmEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwODA0LCAweDlhYjEsIDB4MjAwMSwgMHgwMDAxLCAweDA4MDQsIDB4YmY3YiwgMHgyMDA5LCAweDAyNmUsCi0JMHgyMTA0LCAweDkwODYsIDB4MDAwMywgMHgxMTM4LCAweDIwMDksIDB4MDI2ZiwgMHgyMTA0LCAweDkwODQsCi0JMHhmZjAwLCAweDkwODYsIDB4MmEwMCwgMHgwMDA1LCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMGM2LCAweDAwMTYsIDB4NjExMCwgMHgyMTU4LCAweDA4MGMsIDB4NjczMywgMHgwMDFlLCAweDAwY2UsCi0JMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMDM2LCAweDAwMTYsCi0JMHg2MDEwLCAweDIwNTgsIDB4MjAwOSwgMHgxODM3LCAweDIxMDQsIDB4OTA4NSwgMHgwMDAzLCAweDIwMGEsCi0JMHgwODBjLCAweGMyODcsIDB4MDU2MCwgMHgyMDA5LCAweDE4MzcsIDB4MjEwNCwgMHhjMGNkLCAweDIwMGEsCi0JMHgwODBjLCAweDZhOWYsIDB4MDE1OCwgMHg5MDA2LCAweDIwMjAsIDB4MjAwOSwgMHgwMDJhLCAweDA4MGMsCi0JMHhlYzMxLCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGMxOTUsIDB4MjEwMiwgMHgyMDE5LCAweDAwMmEsCi0JMHgyMDA5LCAweDAwMDEsIDB4MDgwYywgMHgzMjFiLCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsCi0JMHgzMDAwLCAweDAwZWUsIDB4MDBjNiwgMHgwMTU2LCAweDIwYTksIDB4MDc4MSwgMHgyMDA5LCAweDAwN2YsCi0JMHgwODBjLCAweDMzNGMsIDB4ODEwOCwgMHgxZjA0LCAweGMyMjAsIDB4MDE1ZSwgMHgwMGNlLCAweDA4MGMsCi0JMHhjMWRmLCAweDIwNzEsIDB4MDI2MCwgMHgyMDc5LCAweDAyMDAsIDB4NzgxNywgMHgwMDAxLCAweDIwMDEsCi0JMHgxODM3LCAweDIwMGMsIDB4YzFjNSwgMHg3MDE4LCAweGQwZmMsIDB4MDExMCwgMHhkMGRjLCAweDAxMTgsCi0JMHg3MDM4LCAweGQwZGMsIDB4MTEwOCwgMHhjMWM0LCAweDc4MTcsIDB4MDAwMCwgMHgyMDAxLCAweDE4MzcsCi0JMHgyMTAyLCAweDkxODQsIDB4MDA1MCwgMHg5MDg2LCAweDAwNTAsIDB4MDVkMCwgMHgyMDc5LCAweDAxMDAsCi0JMHgyZTA0LCAweDkwODQsIDB4MDBmZiwgMHgyMDY5LCAweDE4MWYsIDB4MjA2YSwgMHg3OGU2LCAweDAwMDYsCi0JMHg4ZTcwLCAweDJlMDQsIDB4MjA2OSwgMHgxODIwLCAweDIwNmEsIDB4NzhlYSwgMHg3ODMyLCAweDc4MzYsCi0JMHgyMDEwLCAweDkwODQsIDB4ZmYwMCwgMHgwMDFlLCAweDkxMDUsIDB4MjAwOSwgMHgxODJjLCAweDIwMGEsCi0JMHgyMjAwLCAweDkwODQsIDB4MDBmZiwgMHgyMDA4LCAweDA4MGMsIDB4MjhiYywgMHgwODBjLCAweDc2MzcsCi0JMHgwMTcwLCAweDIwNzEsIDB4MDI2MCwgMHgyMDY5LCAweDE5ODIsIDB4NzA0OCwgMHgyMDZhLCAweDcwNGMsCi0JMHg2ODA2LCAweDcwNTAsIDB4NjgwYSwgMHg3MDU0LCAweDY4MGUsIDB4MDgwYywgMHhkNGVlLCAweDAwNDAsCi0JMHgyMDAxLCAweDAwMDYsIDB4MDgwYywgMHg2NjZhLCAweDA4MGMsIDB4MzI3OSwgMHgwODBjLCAweGIyZDMsCi0JMHgwMDFlLCAweDAwM2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwZmUsIDB4MDBiZSwgMHgwMDA1LCAweDAwOTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDBlNiwgMHgwMTU2LCAweDIwMTksIDB4MTgyYywgMHgyMzFjLCAweDgzZmYsCi0JMHgwMWYwLCAweDIwNzEsIDB4MDI2MCwgMHg3MjAwLCAweDkyOTQsIDB4MDBmZiwgMHg3MDA0LCAweDkwODQsCi0JMHhmZjAwLCAweDkyMDUsIDB4OTMwNiwgMHgxMTk4LCAweDIwMTEsIDB4MDI3NiwgMHgyMGE5LCAweDAwMDQsCi0JMHgyYjQ4LCAweDIwMTksIDB4MDAwYSwgMHgwODBjLCAweGMzNzksIDB4MTE0OCwgMHgyMDExLCAweDAyN2EsCi0JMHgyMGE5LCAweDAwMDQsIDB4MjAxOSwgMHgwMDA2LCAweDA4MGMsIDB4YzM3OSwgMHgxMTAwLCAweDAxNWUsCi0JMHgwMGVlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDllLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDAyNjAsCi0JMHg3MDM0LCAweDkwODYsIDB4MDAxNCwgMHgxMWE4LCAweDcwMzgsIDB4OTA4NiwgMHgwODAwLCAweDExODgsCi0JMHg3MDNjLCAweGQwZWMsIDB4MDE2MCwgMHg5MDg0LCAweDBmMDAsIDB4OTA4NiwgMHgwMTAwLCAweDExMzgsCi0JMHg3MDU0LCAweGQwYTQsIDB4MTExMCwgMHhkMGFjLCAweDAxMTAsIDB4OTAwNiwgMHgwMDEwLCAweDkwODUsCi0JMHgwMDAxLCAweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwOTYsIDB4MDBjNiwgMHgwMDc2LCAweDAwNTYsCi0JMHgwMDQ2LCAweDAwMjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDI5LCAweDE5ZjEsCi0JMHgyNTJjLCAweDIwMjEsIDB4MTlmNywgMHgyNDI0LCAweDIwNjEsIDB4MWNkMCwgMHgyMDcxLCAweDE4MDAsCi0JMHg3MjU0LCAweDcwNzQsIDB4OTIwMiwgMHgxYTA0LCAweGMzNDUsIDB4MDgwYywgMHg4Y2Y3LCAweDA5MDQsCi0JMHhjMzNlLCAweDA4MGMsIDB4ZWM2MiwgMHgwOTA0LCAweGMzM2UsIDB4NjcyMCwgMHg5Nzg2LCAweDAwMDcsCi0JMHgwOTA0LCAweGMzM2UsIDB4MjUwMCwgMHg5YzA2LCAweDA5MDQsIDB4YzMzZSwgMHgyNDAwLCAweDljMDYsCi0JMHgwNWU4LCAweDNlMDgsIDB4OTE4NiwgMHgwMDAyLCAweDExNDgsIDB4NjAxMCwgMHg5MDA1LCAweDAxMzAsCi0JMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsIDB4MTU4MCwgMHgwMGM2LCAweDYwMDAsCi0JMHg5MDg2LCAweDAwMDQsIDB4MTExMCwgMHgwODBjLCAweDFhOGUsIDB4OTc4NiwgMHgwMDBhLCAweDAxNDgsCi0JMHgwODBjLCAweGQyZTAsIDB4MTEzMCwgMHgwMGNlLCAweDA4MGMsIDB4YmNiNiwgMHgwODBjLCAweGIzMDYsCi0JMHgwMGU4LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDgsIDB4MDFhOCwgMHg5Nzg2LCAweDAwMDMsCi0JMHgxNTMwLCAweGE4NjcsIDB4MDEwMywgMHhhODdjLCAweGQwY2MsIDB4MDEzMCwgMHgwMDk2LCAweGE4NzgsCi0JMHgyMDQ4LCAweDA4MGMsIDB4MGZjMCwgMHgwMDllLCAweGFiN2EsIDB4YTg3NywgMHgwMDAwLCAweDA4MGMsCi0JMHg2ZTkyLCAweDA4MGMsIDB4ZDJjMywgMHgwODBjLCAweGIzMDYsIDB4MDBjZSwgMHg5Y2UwLCAweDAwMTgsCi0JMHg3MDY4LCAweDljMDIsIDB4MTIxMCwgMHgwODA0LCAweGMyZTgsIDB4MDEyZSwgMHgwMDBlLCAweDAwMmUsCi0JMHgwMDRlLCAweDAwNWUsIDB4MDA3ZSwgMHgwMGNlLCAweDAwOWUsIDB4MDBlZSwgMHgwMDA1LCAweDk3ODYsCi0JMHgwMDA2LCAweDExMTgsIDB4MDgwYywgMHhlYmQ0LCAweDBjMzAsIDB4OTc4NiwgMHgwMDA5LCAweDExNDgsCi0JMHg2MDAwLCAweDkwODYsIDB4MDAwNCwgMHgwZDA4LCAweDIwMDksIDB4MDA0YywgMHgwODBjLCAweGIzNTIsCi0JMHgwOGUwLCAweDk3ODYsIDB4MDAwYSwgMHgwOTgwLCAweDA4MjAsIDB4MjIwYywgMHgyMzA0LCAweDkxMDYsCi0JMHgxMTMwLCAweDgyMTAsIDB4ODMxOCwgMHgxZjA0LCAweGMzNjUsIDB4OTAwNiwgMHgwMDA1LCAweDIzMDQsCi0JMHg5MTAyLCAweDAyMTgsIDB4MjAwMSwgMHgwMDAxLCAweDAwMDgsIDB4OTAwNiwgMHg5MThkLCAweDAwMDEsCi0JMHgwMDA1LCAweDAxMzYsIDB4MDFjNiwgMHgwMDE2LCAweDg5MDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwOGMsCi0JMHgwMDNmLCAweDIxZTAsIDB4OTA4NCwgMHhmZmMwLCAweDkzMDAsIDB4MjA5OCwgMHgzNTE4LCAweDIwYTksCi0JMHgwMDAxLCAweDIyMGMsIDB4NDAwMiwgMHg5MTBlLCAweDExNDAsIDB4ODIxMCwgMHg4MzE5LCAweDFkYzgsCi0JMHg5MDA2LCAweDAwMWUsIDB4MDFjZSwgMHgwMTNlLCAweDAwMDUsIDB4MjIwYywgMHg5MTAyLCAweDAyMTgsCi0JMHgyMDAxLCAweDAwMDEsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDAsIDB4OTE4ZCwgMHgwMDAxLCAweDAwMWUsCi0JMHgwMWNlLCAweDAxM2UsIDB4MDAwNSwgMHgyMjBjLCAweDgxMGYsIDB4MjMwNCwgMHg5MTA2LCAweDExMzAsCi0JMHg4MjEwLCAweDgzMTgsIDB4MWYwNCwgMHhjM2EzLCAweDkwMDYsIDB4MDAwNSwgMHg5MThkLCAweDAwMDEsCi0JMHgwMDA1LCAweDYwMDQsIDB4OTA4YSwgMHgwMDUzLCAweDFhMGMsIDB4MGRjNSwgMHgwODBjLCAweGQyY2YsCi0JMHgwMTIwLCAweDA4MGMsIDB4ZDJlMCwgMHgwMTY4LCAweDAwMjgsIDB4MDgwYywgMHgzMjc5LCAweDA4MGMsCi0JMHhkMmUwLCAweDAxMzgsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsIDB4YjJkMywgMHgwODBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDA4MGMsIDB4YmNiNiwgMHgwY2IwLCAweDkxODIsIDB4MDA1NCwgMHgxMjIwLCAweDkxODIsCi0JMHgwMDQwLCAweDAyMDgsIDB4MDAwYSwgMHgwMDA1LCAweGMzZTgsIDB4YzNlOCwgMHhjM2U4LCAweGMzZTgsCi0JMHhjM2U4LCAweGMzZTgsIDB4YzNlOCwgMHhjM2U4LCAweGMzZTgsIDB4YzNlOCwgMHhjM2U4LCAweGMzZWEsCi0JMHhjM2VhLCAweGMzZWEsIDB4YzNlYSwgMHhjM2U4LCAweGMzZTgsIDB4YzNlOCwgMHhjM2VhLCAweGMzZTgsCi0JMHgwODBjLCAweDBkYzUsIDB4NjAwYiwgMHhmZmZmLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDA4MGMsCi0JMHg5NGZmLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OWFiMSwgMHgwMTJlLCAweDAwMDUsCi0JMHg5MTg2LCAweDAwMTMsIDB4MTEyOCwgMHg2MDA0LCAweDkwODIsIDB4MDA0MCwgMHgwODA0LCAweGM0ODIsCi0JMHg5MTg2LCAweDAwMjcsIDB4MTUyMCwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsCi0JMHhkN2Y4LCAweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTk4LCAweDA4MGMsCi0JMHhkMmUwLCAweDExMTgsIDB4MDgwYywgMHhiY2I2LCAweDAwNjgsIDB4YTg2NywgMHgwMTAzLCAweGE4N2IsCi0JMHgwMDI5LCAweGE4NzcsIDB4MDAwMCwgMHhhOTdjLCAweGMxYzUsIDB4YTk3ZSwgMHgwODBjLCAweDZlOWYsCi0JMHgwODBjLCAweGQyYzMsIDB4MDA5ZSwgMHgwODBjLCAweGIyZDMsIDB4MDgwNCwgMHg5YWIxLCAweDkxODYsCi0JMHgwMDE0LCAweDExMjAsIDB4NjAwNCwgMHg5MDgyLCAweDAwNDAsIDB4MDBiOCwgMHg5MTg2LCAweDAwNDYsCi0JMHgwMTUwLCAweDkxODYsIDB4MDA0NSwgMHgwMTM4LCAweDkxODYsIDB4MDA1MywgMHgwMTIwLCAweDkxODYsCi0JMHgwMDQ4LCAweDE5MGMsIDB4MGRjNSwgMHgwODBjLCAweGQ4MDksIDB4MDEzMCwgMHg2MDAwLCAweDkwODYsCi0JMHgwMDAyLCAweDExMTAsIDB4MDgwNCwgMHhjNGMwLCAweDAwMDUsIDB4MDAwMiwgMHhjNDVjLCAweGM0NWEsCi0JMHhjNDVhLCAweGM0NWEsIDB4YzQ1YSwgMHhjNDVhLCAweGM0NWEsIDB4YzQ1YSwgMHhjNDVhLCAweGM0NWEsCi0JMHhjNDVhLCAweGM0NzcsIDB4YzQ3NywgMHhjNDc3LCAweGM0NzcsIDB4YzQ1YSwgMHhjNDc3LCAweGM0NWEsCi0JMHhjNDc3LCAweGM0NWEsIDB4MDgwYywgMHgwZGM1LCAweDA4MGMsIDB4OTlhNSwgMHgwMDk2LCAweDYxMTQsCi0JMHgyMTQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTY4LCAweGE4NjcsIDB4MDEwMywgMHhhODdiLCAweDAwMDYsCi0JMHhhODc3LCAweDAwMDAsIDB4YTg4MCwgMHhjMGVjLCAweGE4ODIsIDB4MDgwYywgMHg2ZTlmLCAweDA4MGMsCi0JMHhkMmMzLCAweDAwOWUsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDA4MGMsCi0JMHg5OWE1LCAweDA4MGMsIDB4ZDJlMCwgMHgwOTBjLCAweGJjYjYsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4MDAwMiwgMHhjNDk5LCAweGM0OTcsIDB4YzQ5NywgMHhjNDk3LCAweGM0OTcsCi0JMHhjNDk3LCAweGM0OTcsIDB4YzQ5NywgMHhjNDk3LCAweGM0OTcsIDB4YzQ5NywgMHhjNGIwLCAweGM0YjAsCi0JMHhjNGIwLCAweGM0YjAsIDB4YzQ5NywgMHhjNGJhLCAweGM0OTcsIDB4YzRiMCwgMHhjNDk3LCAweDA4MGMsCi0JMHgwZGM1LCAweDAwOTYsIDB4MDgwYywgMHg5OWE1LCAweDYwMTQsIDB4MjA0OCwgMHgyMDAxLCAweDE5ODgsCi0JMHgyMDA0LCAweDYwNDIsIDB4YTk3YywgMHhkMWFjLCAweDAxNDAsIDB4NjAwMywgMHgwMDA0LCAweGE4N2MsCi0JMHg5MDg1LCAweDA0MDAsIDB4YTg3ZSwgMHgwMDllLCAweDAwMDUsIDB4NjAwMywgMHgwMDAyLCAweDBjYjgsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhkN2ZiLCAweDA4MGMsIDB4ZDgwMCwgMHg2MDAzLCAweDAwMGYsCi0JMHgwODA0LCAweDlhYjEsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsIDB4YjJkMywgMHgwODA0LCAweDlhYjEsCi0JMHg5MTgyLCAweDAwNTQsIDB4MTIyMCwgMHg5MTgyLCAweDAwNDAsIDB4MDIwOCwgMHgwMDBhLCAweDAwMDUsCi0JMHhjNGRjLCAweGM0ZGMsIDB4YzRkYywgMHhjNGRjLCAweGM0ZGMsIDB4YzRkZSwgMHhjNWJlLCAweGM0ZGMsCi0JMHhjNWYyLCAweGM0ZGMsIDB4YzRkYywgMHhjNGRjLCAweGM0ZGMsIDB4YzRkYywgMHhjNGRjLCAweGM0ZGMsCi0JMHhjNGRjLCAweGM0ZGMsIDB4YzRkYywgMHhjNWYyLCAweDA4MGMsIDB4MGRjNSwgMHgwMGI2LCAweDAwOTYsCi0JMHg2MTE0LCAweDIxNDgsIDB4NzY0NCwgMHg5NmI0LCAweDBmZmYsIDB4ODZmZiwgMHgxNTI4LCAweDYwMTAsCi0JMHgyMDU4LCAweGI4MDAsIDB4ZDBiYywgMHgxOTA0LCAweGM1YWQsIDB4YTg3YiwgMHgwMDAwLCAweGE4NjcsCi0JMHgwMTAzLCAweGFlNzYsIDB4YTg3YywgMHhkMGFjLCAweDAxMjgsIDB4YTgzNCwgMHhhOTM4LCAweDkxMTUsCi0JMHgxOTBjLCAweGM3OGIsIDB4MDgwYywgMHg2Y2I5LCAweDYyMTAsIDB4MjI1OCwgMHhiYTNjLCAweDgyZmYsCi0JMHgwMTEwLCAweDgyMTEsIDB4YmEzZSwgMHg3MDQ0LCAweGQwZTQsIDB4MTkwNCwgMHhjNThlLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwOWUsIDB4MDBiZSwgMHgwMDA1LCAweDk2OGMsIDB4MGMwMCwgMHgwMTUwLCAweDYwMTAsCi0JMHgyMDU4LCAweGI4MDAsIDB4ZDBiYywgMHgxOTA0LCAweGM1OTIsIDB4NzM0OCwgMHhhYjkyLCAweDczNGMsCi0JMHhhYjhlLCAweDk2OGMsIDB4MDBmZiwgMHg5MTg2LCAweDAwMDIsIDB4MDUwOCwgMHg5MTg2LCAweDAwMjgsCi0JMHgxMTE4LCAweGE4N2IsIDB4MDAxYywgMHgwMGU4LCAweGQ2ZGMsIDB4MDFhMCwgMHhhODdiLCAweDAwMTUsCi0JMHhhODdjLCAweGQwYWMsIDB4MDE3MCwgMHhhOTM4LCAweGFhMzQsIDB4MjEwMCwgMHg5MjA1LCAweDAxNDgsCi0JMHg3MDQ4LCAweDkxMDYsIDB4MTExOCwgMHg3MDRjLCAweDkyMDYsIDB4MDExOCwgMHhhOTkyLCAweGFhOGUsCi0JMHhjNmRjLCAweDAwMzgsIDB4ZDZkNCwgMHgwMTE4LCAweGE4N2IsIDB4MDAwNywgMHgwMDEwLCAweGE4N2IsCi0JMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhZTc2LCAweDkwMWUsIDB4ZDZjNCwgMHgwMWQ4LCAweDk2ODYsCi0JMHgwMTAwLCAweDExMzAsIDB4NzA2NCwgMHg5MDA1LCAweDExMTgsIDB4YzZjNCwgMHgwODA0LCAweGM0ZTUsCi0JMHg3MzVjLCAweGFiODYsIDB4ODNmZiwgMHgwMTcwLCAweDkzOGEsIDB4MDAwOSwgMHgwMjEwLCAweDIwMTksCi0JMHgwMDA4LCAweDAwMzYsIDB4MjMwOCwgMHgyMDE5LCAweDAwMTgsIDB4MjAxMSwgMHgwMDI1LCAweDA4MGMsCi0JMHhjYzg1LCAweDAwM2UsIDB4ZDZjYywgMHgwOTA0LCAweGM0ZmEsIDB4NzE1NCwgMHhhOThhLCAweDgxZmYsCi0JMHgwOTA0LCAweGM0ZmEsIDB4OTE5MiwgMHgwMDIxLCAweDEyNzgsIDB4ODMwNCwgMHg5MDk4LCAweDAwMTgsCi0JMHgyMDExLCAweDAwMjksIDB4MDgwYywgMHhjYzg1LCAweDIwMTEsIDB4MDIwNSwgMHgyMDEzLCAweDAwMDAsCi0JMHgwODBjLCAweGQ3ODYsIDB4MDgwNCwgMHhjNGZhLCAweGE4NjgsIDB4ZDBmYywgMHgwMTIwLCAweDIwMDksCi0JMHgwMDIwLCAweGE5OGEsIDB4MGM1MCwgMHgwMGE2LCAweDI5NTAsIDB4MDgwYywgMHhjYzI0LCAweDAwYWUsCi0JMHgwODBjLCAweGQ3ODYsIDB4MDgwYywgMHhjYzc1LCAweDA4MDQsIDB4YzRmYywgMHgwODBjLCAweGQzZDgsCi0JMHgwODA0LCAweGM1MDksIDB4YTg3YywgMHhkMGFjLCAweDA5MDQsIDB4YzUxNSwgMHhhODgwLCAweGQwYmMsCi0JMHgxOTA0LCAweGM1MTUsIDB4OTY4NCwgMHgwNDAwLCAweDAxMzAsIDB4YTgzOCwgMHhhYjM0LCAweDkzMDUsCi0JMHgwOTA0LCAweGM1MTUsIDB4MDBiOCwgMHg3MzQ4LCAweGE4MzgsIDB4OTMwNiwgMHgxMTk4LCAweDczNGMsCi0JMHhhODM0LCAweDkzMWUsIDB4MDkwNCwgMHhjNTE1LCAweDAwNjgsIDB4YTg3YywgMHhkMGFjLCAweDA5MDQsCi0JMHhjNGVkLCAweGE4MzgsIDB4YTkzNCwgMHg5MTA1LCAweDA5MDQsIDB4YzRlZCwgMHhhODgwLCAweGQwYmMsCi0JMHgxOTA0LCAweGM0ZWQsIDB4MDgwYywgMHhkNDEyLCAweDA4MDQsIDB4YzUwOSwgMHgwMDk2LCAweDAwZjYsCi0JMHg2MDAzLCAweDAwMDMsIDB4NjAwNywgMHgwMDQzLCAweDIwNzksIDB4MDI2YywgMHg3YzA0LCAweDdiMDAsCi0JMHg3ZTBjLCAweDdkMDgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBhYywgMHgwMTQwLCAweDYwMDMsCi0JMHgwMDAyLCAweDAwZmUsIDB4MDA5ZSwgMHgwMDA1LCAweDIxMzAsIDB4MjIyOCwgMHgwMDU4LCAweDI0MDAsCi0JMHhhOWFjLCAweDkxMGEsIDB4MjMwMCwgMHhhYWIwLCAweDkyMTMsIDB4MjYwMCwgMHg5MTAyLCAweDI1MDAsCi0JMHg5MjAzLCAweDBlOTAsIDB4YWMzNiwgMHhhYjNhLCAweGFlNDYsIDB4YWQ0YSwgMHgwMGZlLCAweDYwNDMsCi0JMHgwMDAwLCAweDJjMTAsIDB4MDgwYywgMHgxYmUwLCAweDA4MGMsIDB4OTU2NCwgMHgwODBjLCAweDliZDMsCi0JMHgwMDllLCAweDAwMDUsIDB4MDAwNSwgMHg5MTgyLCAweDAwNTQsIDB4MTIyMCwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMjA4LCAweDAwMGEsIDB4MDAwNSwgMHhjNjBmLCAweGM2MGYsIDB4YzYwZiwgMHhjNjBmLCAweGM2MGYsCi0JMHhjNjExLCAweGM2YTcsIDB4YzYwZiwgMHhjNjBmLCAweGM2YmUsIDB4Yzc0ZSwgMHhjNjBmLCAweGM2MGYsCi0JMHhjNjBmLCAweGM2MGYsIDB4Yzc2MywgMHhjNjBmLCAweGM2MGYsIDB4YzYwZiwgMHhjNjBmLCAweDA4MGMsCi0JMHgwZGM1LCAweDAwNzYsIDB4MDBhNiwgMHgwMGU2LCAweDAwOTYsIDB4MjA3MSwgMHgwMjYwLCAweDYxMTQsCi0JMHgyMTUwLCAweDc2NDQsIDB4YjY3NiwgMHg5NmI0LCAweDBmZmYsIDB4Yjc3YywgMHhjN2U1LCAweGI3N2UsCi0JMHg2MjEwLCAweDAwYjYsIDB4MjI1OCwgMHhiYTNjLCAweDgyZmYsIDB4MDExMCwgMHg4MjExLCAweGJhM2UsCi0JMHgwMGJlLCAweDg2ZmYsIDB4MDkwNCwgMHhjNmEyLCAweDk2OTQsIDB4ZmYwMCwgMHg5Mjg0LCAweDBjMDAsCi0JMHgwMTIwLCAweDcwNDgsIDB4YjA5MiwgMHg3MDRjLCAweGIwOGUsIDB4OTI4NCwgMHgwMzAwLCAweDA5MDQsCi0JMHhjNmEyLCAweDA4MGMsIDB4MTAwZSwgMHgwOTBjLCAweDBkYzUsIDB4MjkwMCwgMHhiMDdhLCAweGI3N2MsCi0JMHhjN2NkLCAweGI3N2UsIDB4YTg2NywgMHgwMTAzLCAweGIwNjgsIDB4YTg2YSwgMHhiMDZjLCAweGE4NmUsCi0JMHhiMDcwLCAweGE4NzIsIDB4YWU3NiwgMHg5NjhjLCAweDBjMDAsIDB4MDEyMCwgMHg3MzQ4LCAweGFiOTIsCi0JMHg3MzRjLCAweGFiOGUsIDB4OTY4YywgMHgwMGZmLCAweDkxODYsIDB4MDAwMiwgMHgwMTgwLCAweDkxODYsCi0JMHgwMDI4LCAweDExMTgsIDB4YTg3YiwgMHgwMDFjLCAweDAwNjAsIDB4ZDZkYywgMHgwMTE4LCAweGE4N2IsCi0JMHgwMDE1LCAweDAwMzgsIDB4ZDZkNCwgMHgwMTE4LCAweGE4N2IsIDB4MDAwNywgMHgwMDEwLCAweGE4N2IsCi0JMHgwMDAwLCAweGFmN2UsIDB4YjA4MCwgMHhhODgyLCAweGIwODQsIDB4YTg4NiwgMHg5MDFlLCAweGQ2YzQsCi0JMHgwMTkwLCAweDczNWMsIDB4YWI4NiwgMHg4M2ZmLCAweDAxNzAsIDB4OTM4YSwgMHgwMDA5LCAweDAyMTAsCi0JMHgyMDE5LCAweDAwMDgsIDB4MDAzNiwgMHgyMzA4LCAweDIwMTksIDB4MDAxOCwgMHgyMDExLCAweDAwMjUsCi0JMHgwODBjLCAweGNjODUsIDB4MDAzZSwgMHhkNmNjLCAweDAxZTgsIDB4NzE1NCwgMHhhOThhLCAweDgxZmYsCi0JMHgwMWM4LCAweDkxOTIsIDB4MDAyMSwgMHgxMjYwLCAweDgzMDQsIDB4OTA5OCwgMHgwMDE4LCAweDIwMTEsCi0JMHgwMDI5LCAweDA4MGMsIDB4Y2M4NSwgMHgyMDExLCAweDAyMDUsIDB4MjAxMywgMHgwMDAwLCAweDAwNTAsCi0JMHhiMDY4LCAweGQwZmMsIDB4MDEyMCwgMHgyMDA5LCAweDAwMjAsIDB4YTk4YSwgMHgwYzY4LCAweDI5NTAsCi0JMHgwODBjLCAweGNjMjQsIDB4MDA5ZSwgMHgwMGVlLCAweDAwYWUsIDB4MDA3ZSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMGE2LCAweDYwMDMsIDB4MDAwMywgMHgyMDc5LCAweDAyNmMsIDB4N2MwNCwgMHg3YjAwLCAweDdlMGMsCi0JMHg3ZDA4LCAweDYwMTQsIDB4MjA1MCwgMHhiNDM2LCAweGIzM2EsIDB4YjY0NiwgMHhiNTRhLCAweDAwYWUsCi0JMHgwMGZlLCAweDJjMTAsIDB4MDgwYywgMHgxYmUwLCAweDA4MDQsIDB4YTZiNiwgMHg2MDAzLCAweDAwMDIsCi0JMHg2MDA0LCAweDkwODYsIDB4MDA0MCwgMHgxMWM4LCAweDAwOTYsIDB4NjAxNCwgMHgyMDQ4LCAweGE4N2MsCi0JMHhkMGFjLCAweDAxNjAsIDB4NjAxYywgMHhkMDg0LCAweDExMzAsIDB4MDBmNiwgMHgyYzAwLCAweDIwNzgsCi0JMHgwODBjLCAweDE3NjgsIDB4MDBmZSwgMHg2MDAzLCAweDAwMDQsIDB4MDAxMCwgMHg2MDAzLCAweDAwMDIsCi0JMHgwMDllLCAweDA4MGMsIDB4OTlhNSwgMHgwODBjLCAweDlhYjEsIDB4MDA5NiwgMHgyMDAxLCAweDE5ODgsCi0JMHgyMDA0LCAweDYwNDIsIDB4MDgwYywgMHg5YTYxLCAweDA4MGMsIDB4OWJkMywgMHg2MTE0LCAweDIxNDgsCi0JMHhhOTdjLCAweGQxZTQsIDB4MDkwNCwgMHhjNzQ5LCAweGQxY2MsIDB4MDVjOCwgMHhhOTc4LCAweGE4NjgsCi0JMHhkMGZjLCAweDA1NDAsIDB4MDAxNiwgMHhhODdjLCAweDAwMDYsIDB4YTg4MCwgMHgwMDA2LCAweGE4NjAsCi0JMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDIwYTAsIDB4ODEwZSwgMHg4MTBlLCAweDgxMGYsCi0JMHg5MTg0LCAweDAwM2YsIDB4MjBlMCwgMHg5MTg0LCAweGZmYzAsIDB4OTA4MCwgMHgwMDE5LCAweDIwOTgsCi0JMHgwMTU2LCAweDIwYTksIDB4MDAyMCwgMHg0MDAzLCAweDAxNWUsIDB4MDAwZSwgMHhhODgyLCAweDAwMGUsCi0JMHhjMGNjLCAweGE4N2UsIDB4MDAxZSwgMHhhODc0LCAweDAwMDYsIDB4MjE0OCwgMHgwODBjLCAweDBmYzAsCi0JMHgwMDFlLCAweDA0NTgsIDB4MDAxNiwgMHgwODBjLCAweDBmYzAsIDB4MDA5ZSwgMHhhODdjLCAweGMwY2MsCi0JMHhhODdlLCAweGE5NzQsIDB4MDAxNiwgMHgwODBjLCAweGNjNzUsIDB4MDAxZSwgMHgwMGYwLCAweGE4NjcsCi0JMHgwMTAzLCAweGE5NzQsIDB4OTE4NCwgMHgwMGZmLCAweDkwYjYsIDB4MDAwMiwgMHgwMTgwLCAweDkwODYsCi0JMHgwMDI4LCAweDExMTgsIDB4YTg3YiwgMHgwMDFjLCAweDAwNjAsIDB4ZDFkYywgMHgwMTE4LCAweGE4N2IsCi0JMHgwMDE1LCAweDAwMzgsIDB4ZDFkNCwgMHgwMTE4LCAweGE4N2IsIDB4MDAwNywgMHgwMDEwLCAweGE4N2IsCi0JMHgwMDAwLCAweDAwMTYsIDB4MDgwYywgMHg2Y2I5LCAweDAwMWUsIDB4ZDFlNCwgMHgxMTIwLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwOWUsIDB4MDAwNSwgMHgwODBjLCAweGQzZDgsIDB4MGNkOCwgMHg2MDA0LCAweDkwODYsCi0JMHgwMDQwLCAweDExMjAsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsIDB4OWFiMSwgMHgyMDE5LCAweDAwMDEsCi0JMHgwODBjLCAweGFhNDksIDB4NjAwMywgMHgwMDAyLCAweDA4MGMsIDB4ZDgwMCwgMHgwODBjLCAweDlhNjEsCi0JMHgwODBjLCAweDliZDMsIDB4MDAwNSwgMHg2MDA0LCAweDkwODYsIDB4MDA0MCwgMHgxMTIwLCAweDA4MGMsCi0JMHg5OWE1LCAweDA4MGMsIDB4OWFiMSwgMHgyMDE5LCAweDAwMDEsIDB4MDgwYywgMHhhYTQ5LCAweDA4MGMsCi0JMHg5YTYxLCAweDA4MGMsIDB4MzI1MCwgMHgwODBjLCAweGQ3ZjgsIDB4MDA5NiwgMHg2MTE0LCAweDIxNDgsCi0JMHgwODBjLCAweGQwZDgsIDB4MDE1MCwgMHhhODY3LCAweDAxMDMsIDB4YTg3YiwgMHgwMDI5LCAweGE4NzcsCi0JMHgwMDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwODBjLCAweGQyYzMsIDB4MDA5ZSwgMHgwODBjLCAweGIyZDMsCi0JMHgwODBjLCAweDliZDMsIDB4MDAwNSwgMHhhODdiLCAweDAwMTUsIDB4ZDFmYywgMHgwMTgwLCAweGE4N2IsCi0JMHgwMDA3LCAweDgwMDIsIDB4ODAwMCwgMHg4MTBhLCAweDkxODksIDB4MDAwMCwgMHgwMDA2LCAweDAwMTYsCi0JMHgyMDA5LCAweDFhN2QsIDB4MjEwNCwgMHg4MDAwLCAweDIwMGEsIDB4MDAxZSwgMHgwMDBlLCAweGE5OTIsCi0JMHhhODhlLCAweDAwMDUsIDB4OTE4MiwgMHgwMDU0LCAweDEyMjAsIDB4OTE4MiwgMHgwMDQwLCAweDAyMDgsCi0JMHgwMDBhLCAweDAwMDUsIDB4YzdiZSwgMHhjN2JlLCAweGM3YmUsIDB4YzdiZSwgMHhjN2JlLCAweGM3YzAsCi0JMHhjN2JlLCAweGM3YmUsIDB4Yzg2NiwgMHhjN2JlLCAweGM3YmUsIDB4YzdiZSwgMHhjN2JlLCAweGM3YmUsCi0JMHhjN2JlLCAweGM3YmUsIDB4YzdiZSwgMHhjN2JlLCAweGM3YmUsIDB4Yzk5OCwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDc2LCAweDAwYTYsIDB4MDBlNiwgMHgwMDk2LCAweDIwNzEsIDB4MDI2MCwgMHg2MTE0LCAweDIxNTAsCi0JMHg3NjQ0LCAweGI2NzYsIDB4OTZiNCwgMHgwZmZmLCAweGI3N2MsIDB4YzdlNSwgMHhiNzdlLCAweDYyMTAsCi0JMHgwMGI2LCAweDIyNTgsIDB4YmEzYywgMHg4MmZmLCAweDAxMTAsIDB4ODIxMSwgMHhiYTNlLCAweDAwYmUsCi0JMHg4NmZmLCAweDA5MDQsIDB4Yzg1ZiwgMHg5Njk0LCAweGZmMDAsIDB4OTI4NCwgMHgwYzAwLCAweDAxMjAsCi0JMHg3MDQ4LCAweGIwOTIsIDB4NzA0YywgMHhiMDhlLCAweDkyODQsIDB4MDMwMCwgMHgwOTA0LCAweGM4NWYsCi0JMHg5Njg2LCAweDAxMDAsIDB4MTEzMCwgMHg3MDY0LCAweDkwMDUsIDB4MTExOCwgMHhjNmM0LCAweGI2NzYsCi0JMHgwYzM4LCAweDA4MGMsIDB4MTAwZSwgMHgwOTBjLCAweDBkYzUsIDB4MjkwMCwgMHhiMDdhLCAweGI3N2MsCi0JMHg5N2JkLCAweDAyMDAsIDB4Yjc3ZSwgMHhhODY3LCAweDAxMDMsIDB4YjA2OCwgMHhhODZhLCAweGIwNmMsCi0JMHhhODZlLCAweGIwNzAsIDB4YTg3MiwgMHg3MDQ0LCAweDkwODQsIDB4ZjAwMCwgMHg5NjM1LCAweGFlNzYsCi0JMHg5NjhjLCAweDBjMDAsIDB4MDEyMCwgMHg3MzQ4LCAweGFiOTIsIDB4NzM0YywgMHhhYjhlLCAweDk2OGMsCi0JMHgwMGZmLCAweDkxODYsIDB4MDAwMiwgMHgwMTgwLCAweDkxODYsIDB4MDAyOCwgMHgxMTE4LCAweGE4N2IsCi0JMHgwMDFjLCAweDAwNjAsIDB4ZDZkYywgMHgwMTE4LCAweGE4N2IsIDB4MDAxNSwgMHgwMDM4LCAweGQ2ZDQsCi0JMHgwMTE4LCAweGE4N2IsIDB4MDAwNywgMHgwMDEwLCAweGE4N2IsIDB4MDAwMCwgMHhhZjdlLCAweGIwODAsCi0JMHhhODgyLCAweGIwODQsIDB4YTg4NiwgMHg5MDFlLCAweGQ2YzQsIDB4MDE5MCwgMHg3MzVjLCAweGFiODYsCi0JMHg4M2ZmLCAweDAxNzAsIDB4OTM4YSwgMHgwMDA5LCAweDAyMTAsIDB4MjAxOSwgMHgwMDA4LCAweDAwMzYsCi0JMHgyMzA4LCAweDIwMTksIDB4MDAxOCwgMHgyMDExLCAweDAwMjUsIDB4MDgwYywgMHhjYzg1LCAweDAwM2UsCi0JMHhkNmNjLCAweDAxZTgsIDB4NzE1NCwgMHhhOThhLCAweDgxZmYsIDB4MDFjOCwgMHg5MTkyLCAweDAwMjEsCi0JMHgxMjYwLCAweDgzMDQsIDB4OTA5OCwgMHgwMDE4LCAweDIwMTEsIDB4MDAyOSwgMHgwODBjLCAweGNjODUsCi0JMHgyMDExLCAweDAyMDUsIDB4MjAxMywgMHgwMDAwLCAweDAwNTAsIDB4YjA2OCwgMHhkMGZjLCAweDAxMjAsCi0JMHgyMDA5LCAweDAwMjAsIDB4YTk4YSwgMHgwYzY4LCAweDI5NTAsIDB4MDgwYywgMHhjYzI0LCAweDA4MGMsCi0JMHgxYTVhLCAweDAwOWUsIDB4MDBlZSwgMHgwMGFlLCAweDAwN2UsIDB4MDAwNSwgMHgyMDAxLCAweDE5ODgsCi0JMHgyMDA0LCAweDYwNDIsIDB4MDA5NiwgMHg2MTE0LCAweDIxNDgsIDB4YTgzYywgMHhhOTQwLCAweDkxMDUsCi0JMHgxMTE4LCAweGE4N2MsIDB4YzBkYywgMHhhODdlLCAweDYwMDMsIDB4MDAwMiwgMHhhOTdjLCAweGQxZTQsCi0JMHgwOTA0LCAweGM5OTMsIDB4NjA0MywgMHgwMDAwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsCi0JMHgwMGJlLCAweGQwYmMsIDB4MTUwMCwgMHhkMWNjLCAweDA5MDQsIDB4Yzk2MiwgMHhhOTc4LCAweGE4NjgsCi0JMHhkMGZjLCAweDA5MDQsIDB4YzkyMywgMHgwMDE2LCAweGE4N2MsIDB4MDAwNiwgMHhhODgwLCAweDAwMDYsCi0JMHgwMGE2LCAweDIxNTAsIDB4YjE3NCwgMHg5MTg0LCAweDAwZmYsIDB4OTBiNiwgMHgwMDAyLCAweDA5MDQsCi0JMHhjOGYwLCAweDkwODYsIDB4MDAyOCwgMHgxOTA0LCAweGM4ZGMsIDB4YTg3YiwgMHgwMDFjLCAweGIwN2IsCi0JMHgwMDFjLCAweDA4MDQsIDB4YzhmOCwgMHg2MDI0LCAweGQwZjQsIDB4MTFkMCwgMHhhODM4LCAweGFhMzQsCi0JMHg5MjA1LCAweDA5YzgsIDB4YTgzOCwgMHhhYTkwLCAweDkyMDYsIDB4MTEyMCwgMHhhODhjLCAweGFhMzQsCi0JMHg5MjA2LCAweDA5ODgsIDB4NjAyNCwgMHhkMGQ0LCAweDExNDgsIDB4YTlhYywgMHhhODM0LCAweDkxMDIsCi0JMHg2MDNhLCAweGE5YjAsIDB4YTgzOCwgMHg5MTAzLCAweDYwM2UsIDB4NjAyNCwgMHhjMGY1LCAweDYwMjYsCi0JMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODNjLCAweDgwMDAsIDB4YjgzZSwgMHgwMGJlLCAweDkwMDYsCi0JMHhhODc2LCAweGE4OTIsIDB4YTg4ZSwgMHhhODdjLCAweGMwZTQsIDB4YTg3ZSwgMHhkMGNjLCAweDAxNDAsCi0JMHhjMGNjLCAweGE4N2UsIDB4MDA5NiwgMHhhODc4LCAweDIwNDgsIDB4MDgwYywgMHgwZmMwLCAweDAwOWUsCi0JMHgwODBjLCAweGQ0MTIsIDB4MDgwNCwgMHhjOTkzLCAweGQxZGMsIDB4MDE1OCwgMHhhODdiLCAweDAwMTUsCi0JMHhiMDdiLCAweDAwMTUsIDB4MDgwYywgMHhkNmE2LCAweDAxMTgsIDB4YjE3NCwgMHhjMWRjLCAweGIxNzYsCi0JMHgwMDc4LCAweGQxZDQsIDB4MDEyOCwgMHhhODdiLCAweDAwMDcsIDB4YjA3YiwgMHgwMDA3LCAweDAwNDAsCi0JMHhhODdjLCAweGQwYWMsIDB4MDEyOCwgMHhhODM0LCAweGE5MzgsIDB4OTExNSwgMHgxOTBjLCAweGM3OGIsCi0JMHhhODdjLCAweGIwN2UsIDB4YTg5MCwgMHhiMDkyLCAweGE4OGMsIDB4YjA4ZSwgMHhhODYwLCAweDIwZTgsCi0JMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHgyMGEwLCAweDIwYTksIDB4MDAyMCwgMHg4YTA2LCAweDgwMDYsCi0JMHg4MDA3LCAweDkwOTQsIDB4MDAzZiwgMHgyMmUwLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMTksCi0JMHgyMDk4LCAweDQwMDMsIDB4MDBhZSwgMHgwMDBlLCAweGE4ODIsIDB4MDAwZSwgMHhjMGNjLCAweGE4N2UsCi0JMHgwODBjLCAweGQ3ODYsIDB4MDAxZSwgMHhhODc0LCAweDAwMDYsIDB4MjE0OCwgMHgwODBjLCAweDBmYzAsCi0JMHgwMDFlLCAweDA4MDQsIDB4Yzk4ZiwgMHgwMDE2LCAweDAwYTYsIDB4MjE1MCwgMHhiMTc0LCAweDkxODQsCi0JMHgwMGZmLCAweDkwYjYsIDB4MDAwMiwgMHgwMWUwLCAweDkwODYsIDB4MDAyOCwgMHgxMTI4LCAweGE4N2IsCi0JMHgwMDFjLCAweGIwN2IsIDB4MDAxYywgMHgwMGUwLCAweGQxZGMsIDB4MDE1OCwgMHhhODdiLCAweDAwMTUsCi0JMHhiMDdiLCAweDAwMTUsIDB4MDgwYywgMHhkNmE2LCAweDAxMTgsIDB4YjE3NCwgMHhjMWRjLCAweGIxNzYsCi0JMHgwMDc4LCAweGQxZDQsIDB4MDEyOCwgMHhhODdiLCAweDAwMDcsIDB4YjA3YiwgMHgwMDA3LCAweDAwNDAsCi0JMHhhODdjLCAweGQwYWMsIDB4MDEyOCwgMHhhODM0LCAweGE5MzgsIDB4OTExNSwgMHgxOTBjLCAweGM3OGIsCi0JMHhhODkwLCAweGIwOTIsIDB4YTg4YywgMHhiMDhlLCAweGE4N2MsIDB4YjA3ZSwgMHgwMGFlLCAweDA4MGMsCi0JMHgwZmMwLCAweDAwOWUsIDB4MDgwYywgMHhkNzg2LCAweGE5NzQsIDB4MDAxNiwgMHgwODBjLCAweGNjNzUsCi0JMHgwMDFlLCAweDA0NjgsIDB4YTg2NywgMHgwMTAzLCAweGE5NzQsIDB4OTE4NCwgMHgwMGZmLCAweDkwYjYsCi0JMHgwMDAyLCAweDAxYjAsIDB4OTA4NiwgMHgwMDI4LCAweDExMTgsIDB4YTg3YiwgMHgwMDFjLCAweDAwZDAsCi0JMHhkMWRjLCAweDAxNDgsIDB4YTg3YiwgMHgwMDE1LCAweDA4MGMsIDB4ZDZhNiwgMHgwMTE4LCAweGE5NzQsCi0JMHhjMWRjLCAweGE5NzYsIDB4MDA3OCwgMHhkMWQ0LCAweDAxMTgsIDB4YTg3YiwgMHgwMDA3LCAweDAwNTAsCi0JMHhhODdiLCAweDAwMDAsIDB4YTg3YywgMHhkMGFjLCAweDAxMjgsIDB4YTgzNCwgMHhhOTM4LCAweDkxMTUsCi0JMHgxOTBjLCAweGM3OGIsIDB4YTk3NCwgMHgwMDE2LCAweDA4MGMsIDB4NmNiOSwgMHgwMDFlLCAweGQxZTQsCi0JMHgxMTIwLCAweDA4MGMsIDB4YjJkMywgMHgwMDllLCAweDAwMDUsIDB4MDgwYywgMHhkM2Q4LCAweDBjZDgsCi0JMHg2MTE0LCAweDAwOTYsIDB4MjE0OCwgMHhhOTdjLCAweGQxZTQsIDB4MTkwYywgMHgxYTdhLCAweDAwOWUsCi0JMHgwMDA1LCAweDA4MGMsIDB4OTlhNSwgMHgwMDEwLCAweDA4MGMsIDB4OWE2MSwgMHgwODBjLCAweGQwZDgsCi0JMHgwMWYwLCAweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweDA4MGMsIDB4ZDJlMCwgMHgxMTE4LCAweDA4MGMsCi0JMHhiY2I2LCAweDAwYTAsIDB4YTg2NywgMHgwMTAzLCAweDIwMDksIDB4MTgwYywgMHgyMTBjLCAweGQxOGMsCi0JMHgxMWI4LCAweGQxODQsIDB4MTE5MCwgMHg2MTA4LCAweGE5N2EsIDB4OTE4ZSwgMHgwMDI5LCAweDExMTAsCi0JMHgwODBjLCAweGVmODUsIDB4YTg3NywgMHgwMDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwMDllLCAweDA4MGMsCi0JMHhiMmQzLCAweDA4MGMsIDB4OWFiMSwgMHgwODA0LCAweDliZDMsIDB4YTg3YiwgMHgwMDA0LCAweDBjOTAsCi0JMHhhODdiLCAweDAwMDQsIDB4MGM3OCwgMHg5MTgyLCAweDAwNTQsIDB4MTIyMCwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMjA4LCAweDAwMGEsIDB4MDAwNSwgMHhjOWVmLCAweGM5ZWYsIDB4YzllZiwgMHhjOWVmLCAweGM5ZWYsCi0JMHhjOWYxLCAweGM5ZWYsIDB4YzllZiwgMHhjOWVmLCAweGM5ZWYsIDB4YzllZiwgMHhjOWVmLCAweGM5ZWYsCi0JMHhjOWVmLCAweGM5ZWYsIDB4YzllZiwgMHhjOWVmLCAweGM5ZWYsIDB4YzllZiwgMHhjOWVmLCAweDA4MGMsCi0JMHgwZGM1LCAweDA4MGMsIDB4NTdkZCwgMHgwMWY4LCAweDYwMTQsIDB4NzE0NCwgMHg5MThjLCAweDBmZmYsCi0JMHg5MDE2LCAweGQxYzQsIDB4MDExOCwgMHg3MjY0LCAweDkyOTQsIDB4MDBmZiwgMHgwMDk2LCAweDkwNGQsCi0JMHgwMTg4LCAweGE4N2IsIDB4MDAwMCwgMHhhODY0LCAweDkwODYsIDB4MDEzOSwgMHgwMTI4LCAweGE4NjcsCi0JMHgwMTAzLCAweGE5NzYsIDB4YWE5NiwgMHgwMDMwLCAweGE4OTcsIDB4NDAwMCwgMHhhOTlhLCAweGFhOWUsCi0JMHgwODBjLCAweDZlOWYsIDB4MDA5ZSwgMHgwODA0LCAweGIyZDMsIDB4OTE4MiwgMHgwMDg1LCAweDAwMDIsCi0JMHhjYTI3LCAweGNhMjUsIDB4Y2EyNSwgMHhjYTMzLCAweGNhMjUsIDB4Y2EyNSwgMHhjYTI1LCAweGNhMjUsCi0JMHhjYTI1LCAweGNhMjUsIDB4Y2EyNSwgMHhjYTI1LCAweGNhMjUsIDB4MDgwYywgMHgwZGM1LCAweDYwMDMsCi0JMHgwMDAxLCAweDYxMDYsIDB4MDgwYywgMHg5NGZmLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg5YWIxLCAweDAxMmUsIDB4MDAwNSwgMHgwMDI2LCAweDAwNTYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNzEsCi0JMHgwMjYwLCAweDcyMjQsIDB4NjIxNiwgMHg3MjIwLCAweDA4MGMsIDB4ZDBjNiwgMHgwMWY4LCAweDIyNjgsCi0JMHg2ODAwLCAweDkwODYsIDB4MDAwMCwgMHgwMWQwLCAweDYwMTAsIDB4NmQxMCwgMHg5NTJlLCAweDExYjAsCi0JMHgwMGM2LCAweDJkNjAsIDB4MDBkNiwgMHgwODBjLCAweGNjZTYsIDB4MDBkZSwgMHgwMGNlLCAweDAxNTgsCi0JMHg3MDJjLCAweGQwODQsIDB4MTExOCwgMHgwODBjLCAweGNjYjAsIDB4MDAxMCwgMHg2ODAzLCAweDAwMDIsCi0JMHg2MDA3LCAweDAwODYsIDB4MDAyOCwgMHgwODBjLCAweGNjZDIsIDB4MGQ5MCwgMHg2MDA3LCAweDAwODcsCi0JMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHg3MjIwLCAweDA4MGMsCi0JMHhkMGM2LCAweDAxNzgsIDB4NjgxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsCi0JMHgwMTQwLCAweDY4MjQsIDB4ZDBlYywgMHgwMTI4LCAweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweGQ0MTIsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDBkZSwgMHgwMDVlLCAweDAwMmUsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTMsCi0JMHgxMTYwLCAweDYwMDQsIDB4OTA4YSwgMHgwMDg1LCAweDBhMGMsIDB4MGRjNSwgMHg5MDhhLCAweDAwOTIsCi0JMHgxYTBjLCAweDBkYzUsIDB4OTA4MiwgMHgwMDg1LCAweDAwZTIsIDB4OTE4NiwgMHgwMDI3LCAweDAxMjAsCi0JMHg5MTg2LCAweDAwMTQsIDB4MTkwYywgMHgwZGM1LCAweDA4MGMsIDB4OTlhNSwgMHgwMDk2LCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTQwLCAweGE4NjcsIDB4MDEwMywgMHhhODc3LCAweDAwMDAsCi0JMHhhODdiLCAweDAwMjksIDB4MDgwYywgMHg2ZTlmLCAweDAwOWUsIDB4MDgwYywgMHhiMzA2LCAweDA4MDQsCi0JMHg5YWIxLCAweGNhYjYsIDB4Y2FiOCwgMHhjYWI4LCAweGNhYjYsIDB4Y2FiNiwgMHhjYWI2LCAweGNhYjYsCi0JMHhjYWI2LCAweGNhYjYsIDB4Y2FiNiwgMHhjYWI2LCAweGNhYjYsIDB4Y2FiNiwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhiMzA2LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDkxODYsCi0JMHgwMDEzLCAweDExMjgsIDB4NjAwNCwgMHg5MDgyLCAweDAwODUsIDB4MjAwOCwgMHgwNGI4LCAweDkxODYsCi0JMHgwMDI3LCAweDExZjgsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsIDB4MzI1MCwgMHgwODBjLCAweGQ3ZjgsCi0JMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDgsIDB4MDE1MCwgMHhhODY3LCAweDAxMDMsCi0JMHhhODc3LCAweDAwMDAsIDB4YTg3YiwgMHgwMDI5LCAweDA4MGMsIDB4NmU5ZiwgMHgwODBjLCAweGQyYzMsCi0JMHgwMDllLCAweDA4MGMsIDB4YjJkMywgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHgwODBjLCAweGIzNmQsCi0JMHgwY2UwLCAweDkxODYsIDB4MDAxNCwgMHgxZGQwLCAweDA4MGMsIDB4OTlhNSwgMHgwMDk2LCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwZDYwLCAweGE4NjcsIDB4MDEwMywgMHhhODc3LCAweDAwMDAsCi0JMHhhODdiLCAweDAwMDYsIDB4YTg4MCwgMHhjMGVjLCAweGE4ODIsIDB4MDhmMCwgMHgwMDAyLCAweGNiMGUsCi0JMHhjYjBjLCAweGNiMGMsIDB4Y2IwYywgMHhjYjBjLCAweGNiMGMsIDB4Y2IyNiwgMHhjYjBjLCAweGNiMGMsCi0JMHhjYjBjLCAweGNiMGMsIDB4Y2IwYywgMHhjYjBjLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDk5YTUsCi0JMHg2MDM0LCAweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsIDB4MDAzOSwgMHgwMTE4LCAweDkxODYsCi0JMHgwMDM1LCAweDExMTgsIDB4MjAwMSwgMHgxOTg2LCAweDAwMTAsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsCi0JMHg2MDFhLCAweDYwMDMsIDB4MDAwYywgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHgwODBjLCAweDk5YTUsCi0JMHg2MDM0LCAweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsIDB4MDAzOSwgMHgwMTE4LCAweDkxODYsCi0JMHgwMDM1LCAweDExMTgsIDB4MjAwMSwgMHgxOTg2LCAweDAwMTAsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsCi0JMHg2MDFhLCAweDYwMDMsIDB4MDAwZSwgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHg5MTgyLCAweDAwOTIsCi0JMHgxMjIwLCAweDkxODIsIDB4MDA4NSwgMHgwMjA4LCAweDAwMTIsIDB4MDgwNCwgMHhiMzZkLCAweGNiNTQsCi0JMHhjYjU0LCAweGNiNTQsIDB4Y2I1NCwgMHhjYjU2LCAweGNiYTMsIDB4Y2I1NCwgMHhjYjU0LCAweGNiNTQsCi0JMHhjYjU0LCAweGNiNTQsIDB4Y2I1NCwgMHhjYjU0LCAweDA4MGMsIDB4MGRjNSwgMHgwMDk2LCAweDYwMTAsCi0JMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsIDB4MDE2OCwgMHg2MDM0LCAweDkwOGMsCi0JMHhmZjAwLCAweDgxMGYsIDB4OTE4NiwgMHgwMDM5LCAweDAxMTgsIDB4OTE4NiwgMHgwMDM1LCAweDExMTgsCi0JMHgwMDllLCAweDA4MDQsIDB4Y2JiNywgMHgwODBjLCAweGQwZDgsIDB4MTExOCwgMHgwODBjLCAweGQyYzMsCi0JMHgwMDY4LCAweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweGQwZTQsIDB4MTExMCwgMHgwODBjLCAweGQyYzMsCi0JMHhhODY3LCAweDAxMDMsIDB4MDgwYywgMHhkN2MzLCAweDA4MGMsIDB4NmU5ZiwgMHgwMGQ2LCAweDJjNjgsCi0JMHgwODBjLCAweGIyN2QsIDB4MDFkMCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDFlLCAweDYwMGIsCi0JMHhmZmZmLCAweDIwMDksIDB4MDI2ZSwgMHgyMTBjLCAweDYxM2EsIDB4MjAwOSwgMHgwMjZmLCAweDIxMGMsCi0JMHg2MTNlLCAweDY5MTAsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsIDB4Njk1NCwgMHg2MTU2LCAweDYwMjMsCi0JMHgwMDAxLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsIDB4MmQ2MCwgMHgwMGRlLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwOWUsIDB4MDAwNSwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsCi0JMHhkMGJjLCAweDA1YTAsIDB4NjAzNCwgMHg5MDhjLCAweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzUsCi0JMHgwMTMwLCAweDkxODYsIDB4MDAxZSwgMHgwMTE4LCAweDkxODYsIDB4MDAzOSwgMHgxNTM4LCAweDAwZDYsCi0JMHgyYzY4LCAweDA4MGMsIDB4ZDc1OSwgMHgxMWYwLCAweDA4MGMsIDB4YjI3ZCwgMHgwMWQ4LCAweDYxMDYsCi0JMHg2MDAzLCAweDAwMDEsIDB4NjAyMywgMHgwMDAxLCAweDY5MTAsIDB4NjExMiwgMHg2OTJjLCAweDYxMmUsCi0JMHg2OTMwLCAweDYxMzIsIDB4NjkzNCwgMHg5MThjLCAweDAwZmYsIDB4NjEzNiwgMHg2OTM4LCAweDYxM2EsCi0JMHg2OTNjLCAweDYxM2UsIDB4Njk1NCwgMHg2MTU2LCAweDA4MGMsIDB4ZDU1NCwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MmQ2MCwgMHgwMGRlLCAweDA4MDQsIDB4YjJkMywgMHgwMDk2LCAweDYwMTQsCi0JMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMWM4LCAweGE4NjcsIDB4MDEwMywgMHhhODgwLCAweGQwYjQsCi0JMHgwMTI4LCAweGMwZWMsIDB4YTg4MiwgMHhhODdiLCAweDAwMDYsIDB4MDA0OCwgMHhkMGJjLCAweDAxMTgsCi0JMHhhODdiLCAweDAwMDIsIDB4MDAyMCwgMHhhODdiLCAweDAwMDUsIDB4MDgwYywgMHhkM2Q0LCAweGE4NzcsCi0JMHgwMDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwODBjLCAweGQyYzMsIDB4MDA5ZSwgMHgwODA0LCAweGIyZDMsCi0JMHgwMDE2LCAweDAwOTYsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTQwLCAweGE4NjcsCi0JMHgwMTAzLCAweGE4N2IsIDB4MDAyOCwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDAwOWUsCi0JMHgwMDFlLCAweDkxODYsIDB4MDAxMywgMHgwMTQ4LCAweDkxODYsIDB4MDAxNCwgMHgwMTMwLCAweDkxODYsCi0JMHgwMDI3LCAweDAxMTgsIDB4MDgwYywgMHhiMzZkLCAweDAwMzAsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsCi0JMHhiMzA2LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwNTYsIDB4MDA2NiwgMHgwMDk2LCAweDAwYTYsCi0JMHgyMDI5LCAweDAwMDEsIDB4OTE4MiwgMHgwMTAxLCAweDEyMDgsIDB4MDAxMCwgMHgyMDA5LCAweDAxMDAsCi0JMHgyMTMwLCAweDgzMDQsIDB4OTA5OCwgMHgwMDE4LCAweDIwMDksIDB4MDAyMCwgMHgyMDExLCAweDAwMjksCi0JMHgwODBjLCAweGNjODUsIDB4OTZiMiwgMHgwMDIwLCAweGIwMDQsIDB4OTA0ZCwgMHgwMTEwLCAweDA4MGMsCi0JMHgwZmMwLCAweDA4MGMsIDB4MTAwZSwgMHgwNTIwLCAweDg1MjgsIDB4YTg2NywgMHgwMTEwLCAweGE4NmIsCi0JMHgwMDAwLCAweDI5MjAsIDB4YjQwNiwgMHg5NjhhLCAweDAwM2QsIDB4MTIyOCwgMHgyNjA4LCAweDIwMTEsCi0JMHgwMDFiLCAweDA0OTksIDB4MDBhOCwgMHg5NmIyLCAweDAwM2MsIDB4MjAwOSwgMHgwMDNjLCAweDI5NTAsCi0JMHgyMDExLCAweDAwMWIsIDB4MDQ1MSwgMHgwYzI4LCAweDIwMDEsIDB4MDIwNSwgMHgyMDAzLCAweDAwMDAsCi0JMHgwMGFlLCAweDg1MmYsIDB4OTVhZCwgMHgwMDAzLCAweGI1NjYsIDB4OTVhYywgMHgwMDAwLCAweDAwNDgsCi0JMHgyMDAxLCAweDAyMDUsIDB4MjAwMywgMHgwMDAwLCAweDAwYWUsIDB4ODUyZiwgMHg5NWFkLCAweDAwMDMsCi0JMHhiNTY2LCAweDAwOWUsIDB4MDA2ZSwgMHgwMDVlLCAweDAwMDUsIDB4MDBhNiwgMHg4OWZmLCAweDAxNTgsCi0JMHhhODA0LCAweDkwNTUsIDB4MDEzMCwgMHhhODA3LCAweDAwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDJhNDgsCi0JMHgwY2I4LCAweDA4MGMsIDB4NmU5ZiwgMHgwMGFlLCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDAyMDAsCi0JMHg3ODE0LCAweDkwODUsIDB4MDA4MCwgMHg3ODE2LCAweGQxODQsIDB4MDEwOCwgMHg4MTA4LCAweDgxMGMsCi0JMHgyMGE5LCAweDAwMDEsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTIwMCwgMHgyMGEwLCAweDIwZTEsCi0JMHgwMDAwLCAweDIzMDAsIDB4OWUwMCwgMHgyMDk4LCAweDQwMDMsIDB4ODMxOCwgMHg5Mzg2LCAweDAwMjAsCi0JMHgxMTQ4LCAweDIwMTgsIDB4MjMwMCwgMHg5ZTAwLCAweDIwOTgsIDB4NzgxNCwgMHg4MDAwLCAweDkwODUsCi0JMHgwMDgwLCAweDc4MTYsIDB4ODEwOSwgMHgxZDgwLCAweDc4MTcsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsCi0JMHg2OTIwLCAweDkxODYsIDB4MDAwMywgMHgwMTE4LCAweDkxODYsIDB4MDAwMiwgMHgxMWQwLCAweDAwYzYsCi0JMHgwMGQ2LCAweDAwZTYsIDB4MmQ2MCwgMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDgsCi0JMHgwMTUwLCAweDIwMDEsIDB4MDAwNiwgMHhhOTgwLCAweGMxZDUsIDB4MDgwYywgMHg3MTBiLCAweDA4MGMsCi0JMHg2ZTkyLCAweDA4MGMsIDB4ZDJjMywgMHgwMDllLCAweDA4MGMsIDB4YjMwNiwgMHgwMGVlLCAweDAwZGUsCi0JMHgwMGNlLCAweDAwMDUsIDB4MDBjNiwgMHg3MDJjLCAweGQwODQsIDB4MTE3MCwgMHg2MDA4LCAweDIwNjAsCi0JMHg2MDIwLCAweDkwODYsIDB4MDAwMiwgMHgxMTQwLCAweDYxMDQsIDB4OTE4NiwgMHgwMDg1LCAweDAxMTgsCi0JMHg5MTg2LCAweDAwOGIsIDB4MTEwOCwgMHg5MDA2LCAweDAwY2UsIDB4MDAwNSwgMHgwMDY2LCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MjAzMSwgMHgwMDAxLCAweDYwMjAsIDB4OTA4NCwgMHgwMDBmLCAweDAwODMsCi0JMHgwMTJlLCAweDAwNmUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMDY2LCAweDIwMzEsCi0JMHgwMDAwLCAweDYwMjAsIDB4OTA4NCwgMHgwMDBmLCAweDAwMWIsIDB4MDA2ZSwgMHgwMTJlLCAweDAwMDUsCi0JMHhjZDFkLCAweGNkMWQsIDB4Y2QxOCwgMHhjZDNmLCAweGNkMGYsIDB4Y2QxOCwgMHhjZDNmLCAweGNkMTgsCi0JMHhjZDE4LCAweDkyNjUsIDB4Y2QxOCwgMHhjZDE4LCAweGNkMTgsIDB4Y2QwZiwgMHhjZDBmLCAweDA4MGMsCi0JMHgwZGM1LCAweDAwMzYsIDB4MjAxOSwgMHgwMDEwLCAweDA4MGMsIDB4ZTc0NiwgMHgwMDNlLCAweDAwMDUsCi0JMHg5MDA2LCAweDAwMDUsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDA5NiwgMHg4NmZmLCAweDExZDgsCi0JMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhkMGQ4LCAweDAxYzAsIDB4YTg2NCwgMHg5MDg2LCAweDAxMzksCi0JMHgxMTI4LCAweGE4N2IsIDB4MDAwNSwgMHhhODgzLCAweDAwMDAsIDB4MDAyOCwgMHg5MDBlLCAweDIwMDEsCi0JMHgwMDA1LCAweDA4MGMsIDB4NzEwYiwgMHgwODBjLCAweGQzZDQsIDB4MDgwYywgMHg2ZTkyLCAweDA4MGMsCi0JMHhiMzA2LCAweDkwODUsIDB4MDAwMSwgMHgwMDllLCAweDAwMDUsIDB4OTAwNiwgMHgwY2UwLCAweDYwMDAsCi0JMHg5MDhhLCAweDAwMTAsIDB4MWEwYywgMHgwZGM1LCAweDAwMDIsIDB4Y2Q1NSwgMHhjZDg1LCAweGNkNTcsCi0JMHhjZGE2LCAweGNkODAsIDB4Y2Q1NSwgMHhjZDE4LCAweGNkMWQsIDB4Y2QxZCwgMHhjZDE4LCAweGNkMTgsCi0JMHhjZDE4LCAweGNkMTgsIDB4Y2QxOCwgMHhjZDE4LCAweGNkMTgsIDB4MDgwYywgMHgwZGM1LCAweDg2ZmYsCi0JMHgxNTIwLCAweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDA1MDAsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsCi0JMHgwODBjLCAweGQwZDgsIDB4MDE2OCwgMHhhODdjLCAweGQwY2MsIDB4MDE0MCwgMHgwMDk2LCAweGMwY2MsCi0JMHhhODdlLCAweGE4NzgsIDB4MjA0OCwgMHgwODBjLCAweDBmYzAsIDB4MDA5ZSwgMHgwODBjLCAweGQzZDQsCi0JMHgwMDllLCAweDA4MGMsIDB4ZDc5ZCwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsCi0JMHgwMDAyLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsCi0JMHgwMDY2LCAweDA4MGMsIDB4MWE4ZSwgMHgwMDZlLCAweDA4OTAsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZTgsCi0JMHg3MDI0LCAweDljMDYsIDB4MTEyMCwgMHgwODBjLCAweGE5ZDMsIDB4MDBlZSwgMHgwODQwLCAweDYwMjAsCi0JMHg5MDg0LCAweDAwMGYsIDB4OTA4NiwgMHgwMDA2LCAweDExNTAsIDB4MDA4NiwgMHgwMDk2LCAweDIwNDksCi0JMHgwMDAxLCAweDJjNDAsIDB4MDgwYywgMHhhYWZiLCAweDAwOWUsIDB4MDA4ZSwgMHgwMDEwLCAweDA4MGMsCi0JMHhhOGQwLCAweDAwZWUsIDB4MTkwNCwgMHhjZDU3LCAweDA4MDQsIDB4Y2QxOCwgMHgwMDM2LCAweDAwZTYsCi0JMHgyMDcxLCAweDE5ZTgsIDB4NzAzYywgMHg5YzA2LCAweDExMzgsIDB4OTAxZSwgMHgwODBjLCAweGFhNDksCi0JMHgwMGVlLCAweDAwM2UsIDB4MDgwNCwgMHhjZDU3LCAweDA4MGMsIDB4YWMyYiwgMHgwMGVlLCAweDAwM2UsCi0JMHgxOTA0LCAweGNkNTcsIDB4MDgwNCwgMHhjZDE4LCAweDAwYzYsIDB4NjAyMCwgMHg5MDg0LCAweDAwMGYsCi0JMHgwMDEzLCAweDAwY2UsIDB4MDAwNSwgMHhjZGQ5LCAweGNlYTMsIDB4ZDAxMSwgMHhjZGUzLCAweGIzMDYsCi0JMHhjZGQ5LCAweGU3M2MsIDB4ZDgwNSwgMHhjZWEzLCAweDkyMzcsIDB4ZDA5ZCwgMHhjZGQyLCAweGNkZDIsCi0JMHhjZGQyLCAweGNkZDIsIDB4MDgwYywgMHgwZGM1LCAweDA4MGMsIDB4ZDJlMCwgMHgxMTEwLCAweDA4MGMsCi0JMHhiY2I2LCAweDAwMDUsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsIDB4OWFiMSwgMHgwODA0LCAweGIyZDMsCi0JMHg2MDFiLCAweDAwMDEsIDB4MDAwNSwgMHgwODBjLCAweGQwZDgsIDB4MDEzMCwgMHg2MDE0LCAweDAwOTYsCi0JMHgyMDQ4LCAweDJjMDAsIDB4YTg5NiwgMHgwMDllLCAweDYwMDAsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsCi0JMHgwZGM1LCAweDAwMDIsIDB4Y2UwMiwgMHhjZTA0LCAweGNlMjgsIDB4Y2UzYywgMHhjZTYyLCAweGNlMDIsCi0JMHhjZGQ5LCAweGNkZDksIDB4Y2RkOSwgMHhjZTNjLCAweGNlM2MsIDB4Y2UwMiwgMHhjZTAyLCAweGNlMDIsCi0JMHhjZTAyLCAweGNlNDYsIDB4MDgwYywgMHgwZGM1LCAweDAwZTYsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsCi0JMHhhODgwLCAweGMwYjUsIDB4YTg4MiwgMHgwMDllLCAweDIwNzEsIDB4MTllOCwgMHg3MDI0LCAweDljMDYsCi0JMHgwMWEwLCAweDA4MGMsIDB4YThkMCwgMHgwODBjLCAweGQ3OWQsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsCi0JMHgwMDBiLCAweDYwMjMsIDB4MDAwMiwgMHgyMDAxLCAweDE5ODcsIDB4MjAwNCwgMHg2MDFhLCAweDA4MGMsCi0JMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwMGVlLCAweDAwMDUsIDB4NjAxYiwgMHgwMDAxLCAweDBjZDgsCi0JMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwgMHhhODgwLCAweGMwYjUsIDB4YTg4MiwgMHgwMDllLCAweDA4MGMsCi0JMHhkNzlkLCAweDYwMDcsIDB4MDA4NSwgMHg2MDAzLCAweDAwMGIsIDB4NjAyMywgMHgwMDAyLCAweDA4MGMsCi0JMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwOTYsIDB4NjAxYiwgMHgwMDAxLCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4ODAsIDB4YzBiNSwgMHhhODgyLCAweDAwOWUsIDB4MDAwNSwgMHgwODBjLCAweDU3ZGQsCi0JMHgwMWI4LCAweDYwMTQsIDB4MDA5NiwgMHg5MDRkLCAweDAxOTAsIDB4YTg2NCwgMHhhODY3LCAweDAxMDMsCi0JMHhhODdiLCAweDAwMDYsIDB4OTA4NiwgMHgwMTM5LCAweDExNTAsIDB4YTg2NywgMHgwMTM5LCAweGE4N2IsCi0JMHgwMDMwLCAweGE4OTcsIDB4NDAwNSwgMHhhODliLCAweDAwMDQsIDB4MDgwYywgMHg2ZTlmLCAweDAwOWUsCi0JMHgwODA0LCAweGIyZDMsIDB4NjAxNCwgMHgwMDk2LCAweDkwNGQsIDB4MDVjMCwgMHhhOTdjLCAweGQxZTQsCi0JMHgwNWE4LCAweDIwMDEsIDB4MTgwZiwgMHgyMDA0LCAweGQwYzQsIDB4MDExMCwgMHgwMDllLCAweDAwMDUsCi0JMHhhODg0LCAweDAwOWUsIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4OTEwOCwgMHg2MTFhLCAweDIwMDEsCi0JMHgwMDMwLCAweDJjMDgsIDB4MDgwYywgMHgxNjExLCAweDIwMDEsIDB4MDMwYywgMHgyMDA0LCAweDkwODYsCi0JMHgwMDQxLCAweDExOTgsIDB4NjAxNCwgMHgwMDk2LCAweDkwNGQsIDB4MDkwYywgMHgwZGM1LCAweGE4ODAsCi0JMHhkMGY0LCAweDExMzAsIDB4YzBmNSwgMHhhODgyLCAweDAwOWUsIDB4NjAxYiwgMHgwMDAyLCAweDAwNjgsCi0JMHgwMDllLCAweDAwYzYsIDB4MDgwYywgMHgyMzZlLCAweDAwY2UsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDQsCi0JMHgxMTIwLCAweDIwMDksIDB4MDA0OCwgMHgwODBjLCAweGIzNTIsIDB4MDAwNSwgMHgwMDllLCAweDA4MGMsCi0JMHgxYThlLCAweDA4MDQsIDB4Y2UyOCwgMHg2MDAwLCAweDkwOGEsIDB4MDAxMCwgMHgxYTBjLCAweDBkYzUsCi0JMHgwMDBiLCAweDAwMDUsIDB4Y2ViYSwgMHhjZGUwLCAweGNlYmMsIDB4Y2ViYSwgMHhjZWJjLCAweGNlYmMsCi0JMHhjZGRhLCAweGNlYmEsIDB4Y2RkNCwgMHhjZGQ0LCAweGNlYmEsIDB4Y2ViYSwgMHhjZWJhLCAweGNlYmEsCi0JMHhjZWJhLCAweGNlYmEsIDB4MDgwYywgMHgwZGM1LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDQsCi0JMHg5MDg0LCAweDAwZmYsIDB4MDBiZSwgMHg5MDhhLCAweDAwMGMsIDB4MWEwYywgMHgwZGM1LCAweDAwYjYsCi0JMHgwMDEzLCAweDAwYmUsIDB4MDAwNSwgMHhjZWQ3LCAweGNmYTgsIDB4Y2VkOSwgMHhjZjE5LCAweGNlZDksCi0JMHhjZjE5LCAweGNlZDksIDB4Y2VlNywgMHhjZWQ3LCAweGNmMTksIDB4Y2VkNywgMHhjZjA4LCAweDA4MGMsCi0JMHgwZGM1LCAweDYwMDQsIDB4OTA4ZSwgMHgwMDE2LCAweDA1YzAsIDB4OTA4ZSwgMHgwMDA0LCAweDA1YTgsCi0JMHg5MDhlLCAweDAwMDIsIDB4MDU5MCwgMHg5MDhlLCAweDAwNTIsIDB4MDkwNCwgMHhjZmE0LCAweDYwMDQsCi0JMHgwODBjLCAweGQyZTAsIDB4MDkwNCwgMHhjZmMxLCAweDkwOGUsIDB4MDAwNCwgMHgxMTEwLCAweDA4MGMsCi0JMHgzMjc5LCAweDkwOGUsIDB4MDAyMSwgMHgwOTA0LCAweGNmYzUsIDB4OTA4ZSwgMHgwMDIyLCAweDA5MDQsCi0JMHhkMDBjLCAweDkwOGUsIDB4MDAzZCwgMHgwOTA0LCAweGNmYzUsIDB4OTA4ZSwgMHgwMDM5LCAweDA5MDQsCi0JMHhjZmM5LCAweDkwOGUsIDB4MDAzNSwgMHgwOTA0LCAweGNmYzksIDB4OTA4ZSwgMHgwMDFlLCAweDAxNzgsCi0JMHg5MDhlLCAweDAwMDEsIDB4MTE0MCwgMHg2MDEwLCAweDIwNTgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsCi0JMHg5MDg2LCAweDAwMDYsIDB4MDExMCwgMHgwODBjLCAweDMyNTAsIDB4MDgwYywgMHhiY2I2LCAweDA4MDQsCi0JMHhiMzA2LCAweDAwYzYsIDB4MDBkNiwgMHg2MTA0LCAweDkxODYsIDB4MDAxNiwgMHgwOTA0LCAweGNmOTUsCi0JMHg5MTg2LCAweDAwMDIsIDB4MTkwNCwgMHhjZjZhLCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwOGMsCi0JMHgxMWM4LCAweDA4MGMsIDB4NzYzNywgMHgxMWIwLCAweDA4MGMsIDB4ZDdlMywgMHgwMTM4LCAweDA4MGMsCi0JMHg3NjVhLCAweDExMjAsIDB4MDgwYywgMHg3NTQxLCAweDA4MDQsIDB4Y2ZmNSwgMHgyMDAxLCAweDE5N2QsCi0JMHgyMDAzLCAweDAwMDEsIDB4MjAwMSwgMHgxODAwLCAweDIwMDMsIDB4MDAwMSwgMHgwODBjLCAweDc1NjMsCi0JMHgwODA0LCAweGNmZjUsIDB4NjAxMCwgMHgyMDU4LCAweGI4YTAsIDB4OTA4NiwgMHgwMDgwLCAweDAxMzAsCi0JMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHhkMGFjLCAweDE5MDQsIDB4Y2ZmNSwgMHhiOGEwLCAweDkwODIsCi0JMHgwMDgxLCAweDFhMDQsIDB4Y2ZmNSwgMHhiODQwLCAweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDAxOTAsCi0JMHg4MDAxLCAweGI4NDIsIDB4NjAxNywgMHgwMDAwLCAweDYwMjMsIDB4MDAwNywgMHg2MDFiLCAweDAzOTgsCi0JMHg2MDQzLCAweDAwMDAsIDB4MDgwYywgMHhiMjdkLCAweDAxMjgsIDB4MmIwMCwgMHg2MDEyLCAweDYwMjMsCi0JMHgwMDAxLCAweDA0NTgsIDB4MDBkZSwgMHgwMGNlLCAweDYwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDExYTAsCi0JMHg2MDEwLCAweDIwNTgsIDB4YjhhMCwgMHg5MDg2LCAweDAwN2UsIDB4MTE3MCwgMHgyMDA5LCAweDE4MzcsCi0JMHgyMTA0LCAweGMwODUsIDB4MjAwYSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDYwYzEsCi0JMHgwMGVlLCAweDA4MGMsIDB4YmNiNiwgMHgwMDMwLCAweDA4MGMsIDB4YmNiNiwgMHgwODBjLCAweDMyNTAsCi0JMHgwODBjLCAweGQ3ZjgsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDMyNzksCi0JMHgwMTJlLCAweDAwZWUsIDB4MDgwYywgMHhiMzA2LCAweDAwMDUsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsCi0JMHg2NjZhLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsCi0JMHg5YWIxLCAweDAwZGUsIDB4MDBjZSwgMHgwYzgwLCAweDA4MGMsIDB4MzI3OSwgMHgwODA0LCAweGNmMTUsCi0JMHgwMGM2LCAweDAwZDYsIDB4NjEwNCwgMHg5MTg2LCAweDAwMTYsIDB4MGQzOCwgMHg2MDEwLCAweDIwNTgsCi0JMHhiODQwLCAweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDA5MDQsIDB4Y2Y2YSwgMHg4MDAxLCAweGI4NDIsCi0JMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwMGRlLCAweDAwY2UsCi0JMHgwODk4LCAweDA4MGMsIDB4YmNiNiwgMHgwODA0LCAweGNmMTcsIDB4MDgwYywgMHhiY2YyLCAweDA4MDQsCi0JMHhjZjE3LCAweDAwZDYsIDB4MmM2OCwgMHg2MTA0LCAweDA4MGMsIDB4ZDc1OSwgMHgwMGRlLCAweDAxMTgsCi0JMHgwODBjLCAweGIyZDMsIDB4MDQwOCwgMHg2MDA0LCAweDgwMDcsIDB4NjEzNCwgMHg5MThjLCAweDAwZmYsCi0JMHg5MTA1LCAweDYwMzYsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDIzLCAweDAwMDIsCi0JMHg2MDNjLCAweDYwMGEsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsIDB4NjAxYSwgMHg2MDJjLCAweDJjMDgsCi0JMHgyMDYwLCAweDYwMjQsIDB4ZDBiNCwgMHgwMTA4LCAweGMwODUsIDB4YzBiNSwgMHg2MDI2LCAweDIxNjAsCi0JMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsIDB4MDBkZSwgMHgwMGNlLCAweDA4MGMsCi0JMHhiY2I2LCAweDA4MGMsIDB4MzI1MCwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHgzMjc5LCAweDYwMTcsIDB4MDAwMCwgMHg2MDIzLCAweDAwMDcsIDB4NjAxYiwgMHgwMzk4LCAweDYwNDMsCi0JMHgwMDAwLCAweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweDA4MGMsIDB4YjcwOCwgMHgxOTA0LCAweGNmYzEsCi0JMHgwMDA1LCAweDYwMDAsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MGRjNSwgMHgwMDk2LCAweDAwZDYsCi0JMHgwMDFiLCAweDAwZGUsIDB4MDA5ZSwgMHgwMDA1LCAweGQwMmMsIDB4ZDAyYywgMHhkMDJjLCAweGQwMmMsCi0JMHhkMDJjLCAweGQwMmMsIDB4ZDAyYywgMHhkMDJjLCAweGQwMmMsIDB4Y2RkOSwgMHhkMDJjLCAweGNkZTAsCi0JMHhkMDJlLCAweGNkZTAsIDB4ZDA0OCwgMHhkMDJjLCAweDA4MGMsIDB4MGRjNSwgMHg2MDA0LCAweDkwODYsCi0JMHgwMDhiLCAweDAxYjAsIDB4NjAzNCwgMHg5MDhjLCAweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzUsCi0JMHgxMTMwLCAweDYwMmMsIDB4OTA4MCwgMHgwMDA5LCAweDIwMGMsIDB4YzE4NSwgMHgyMTAyLCAweDYwMDcsCi0JMHgwMDhiLCAweDYwMDMsIDB4MDAwZCwgMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsCi0JMHgwODBjLCAweGQ3ZDcsIDB4MDExOCwgMHgwODBjLCAweGQ3ZWEsIDB4MDAxMCwgMHgwODBjLCAweGQ3ZjgsCi0JMHgwODBjLCAweGQyYzMsIDB4MDgwYywgMHhkMGQ4LCAweDA1NzAsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsCi0JMHhkMGQ4LCAweDAxNjgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywgMHhhODdiLCAweDAwMDYsCi0JMHhhODc3LCAweDAwMDAsIDB4YTg4MCwgMHhjMGVkLCAweGE4ODIsIDB4MDgwYywgMHg2ZTlmLCAweDJjNjgsCi0JMHgwODBjLCAweGIyN2QsIDB4MDE1MCwgMHg2ODEwLCAweDYwMTIsIDB4MDgwYywgMHhkNTU0LCAweDAwYzYsCi0JMHgyZDYwLCAweDA4MGMsIDB4YjMwNiwgMHgwMGNlLCAweDAwMDgsIDB4MmQ2MCwgMHg2MDE3LCAweDAwMDAsCi0JMHg2MDIzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwODBjLCAweDlhYjEsIDB4MDBjOCwgMHgwODBjLCAweGQ3ZDcsIDB4MDEzOCwgMHg2MDM0LCAweDkwODYsCi0JMHg0MDAwLCAweDExMTgsIDB4MDgwYywgMHgzMjUwLCAweDA4ZDAsIDB4NjAzNCwgMHg5MDhjLCAweGZmMDAsCi0JMHg4MTBmLCAweDkxODYsIDB4MDAzOSwgMHgwMTE4LCAweDkxODYsIDB4MDAzNSwgMHgxMTE4LCAweDA4MGMsCi0JMHgzMjUwLCAweDA4NjgsIDB4MDgwYywgMHhiMzA2LCAweDAwMDUsIDB4NjAwMCwgMHg5MDhhLCAweDAwMTAsCi0JMHgxYTBjLCAweDBkYzUsIDB4MDAwMiwgMHhkMGIzLCAweGQwYjMsIDB4ZDBiNywgMHhkMGI1LCAweGQwYzEsCi0JMHhkMGIzLCAweGQwYjMsIDB4YjMwNiwgMHhkMGIzLCAweGQwYjMsIDB4ZDBiMywgMHhkMGIzLCAweGQwYjMsCi0JMHhkMGIzLCAweGQwYjMsIDB4ZDBiMywgMHgwODBjLCAweDBkYzUsIDB4MDgwYywgMHhhYzJiLCAweDYxMTQsCi0JMHgwMDk2LCAweDIxNDgsIDB4YTg3YiwgMHgwMDA2LCAweDA4MGMsIDB4NmU5ZiwgMHgwMDllLCAweDA4MDQsCi0JMHhiMmQzLCAweDYwMWMsIDB4ZDA4NCwgMHgxOTBjLCAweDFhOGUsIDB4MGM4OCwgMHg5Mjg0LCAweDAwMDcsCi0JMHgxMTU4LCAweDkyODIsIDB4MWNkMCwgMHgwMjQwLCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDkyMDIsCi0JMHgxMjE4LCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDkwMDYsIDB4MGNlOCwgMHgwMDk2LCAweDAwMjgsCi0JMHgwMDk2LCAweDAwMDYsIDB4NjAxNCwgMHgyMDQ4LCAweDAwMGUsIDB4MDAwNiwgMHg5OTg0LCAweGYwMDAsCi0JMHg5MDg2LCAweGYwMDAsIDB4MDExMCwgMHgwODBjLCAweDEwYjksIDB4MDAwZSwgMHgwMDllLCAweDAwMDUsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDAzNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjEsCi0JMHgxY2QwLCAweDIwNzEsIDB4MTgwMCwgMHg3MzU0LCAweDcwNzQsIDB4OTMwMiwgMHgxNjQwLCAweDYwMjAsCi0JMHg5MjA2LCAweDExZjgsIDB4MDgwYywgMHhkN2UzLCAweDAxODAsIDB4OTI4NiwgMHgwMDAxLCAweDExNjgsCi0JMHg2MDA0LCAweDkwODYsIDB4MDAwNCwgMHgxMTQ4LCAweDA4MGMsIDB4MzI1MCwgMHgwODBjLCAweGQ3ZjgsCi0JMHgwMGM2LCAweDA4MGMsIDB4YjMwNiwgMHgwMGNlLCAweDAwNjAsIDB4MDgwYywgMHhkNGNlLCAweDAxNDgsCi0JMHgwODBjLCAweGQyZTAsIDB4MTExMCwgMHgwODBjLCAweGJjYjYsIDB4MDBjNiwgMHgwODBjLCAweGIyZDMsCi0JMHgwMGNlLCAweDljZTAsIDB4MDAxOCwgMHg3MDY4LCAweDljMDIsIDB4MTIwOCwgMHgwOGEwLCAweDAxMmUsCi0JMHgwMDBlLCAweDAwM2UsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwMTYsCi0JMHg5MTg4LCAweDEwMDAsIDB4MjEwYywgMHg4MWZmLCAweDAxMjgsIDB4MjA2MSwgMHgxYWI3LCAweDYxMTIsCi0JMHgwODBjLCAweDMyNTAsIDB4OTAwNiwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDFlLCAweDAwY2UsCi0JMHgwMGVlLCAweDAwMDUsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIyN2QsCi0JMHgwMWIwLCAweDY2NTYsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsIDB4NTdkZCwgMHgwMTE4LCAweDA4MGMsCi0JMHhkMjA3LCAweDAxNjgsIDB4MDgwYywgMHhkNTU0LCAweDYwMjMsIDB4MDAwMywgMHgyMDA5LCAweDAwNGIsCi0JMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsCi0JMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YmFhMCwgMHgwODBjLCAweGIzMjUsCi0JMHgwNTYwLCAweDYwNTcsIDB4MDAwMCwgMHgyYjAwLCAweDYwMTIsIDB4MDgwYywgMHhkNTU0LCAweDYwMjMsCi0JMHgwMDAzLCAweDAwMTYsIDB4MDgwYywgMHg5NmE0LCAweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweDk1NzcsCi0JMHgyYzA4LCAweDA4MGMsIDB4ZTkxYywgMHgwMDdlLCAweDAwMWUsIDB4ZDE4NCwgMHgwMTI4LCAweDA4MGMsCi0JMHhiMmQzLCAweDkwODUsIDB4MDAwMSwgMHgwMDcwLCAweDA4MGMsIDB4NTdkZCwgMHgwMTI4LCAweGQxOGMsCi0JMHgxMTcwLCAweDA4MGMsIDB4ZDIwNywgMHgwMTQ4LCAweDIwMDksIDB4MDA0YywgMHgwODBjLCAweGIzNTIsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDI5MDAsCi0JMHg2MDE2LCAweDBjOTAsIDB4MjAwOSwgMHgwMDRkLCAweDAwMTAsIDB4MjAwOSwgMHgwMDRlLCAweDAwZjYsCi0JMHgwMGM2LCAweDAwNDYsIDB4MDAxNiwgMHgwODBjLCAweGIyN2QsIDB4MmM3OCwgMHgwNWEwLCAweDdlNTYsCi0JMHgyYjAwLCAweDc4MTIsIDB4NzgyMywgMHgwMDAzLCAweDAwMTYsIDB4MjAyMSwgMHgwMDA1LCAweDA4MGMsCi0JMHhkMjE5LCAweDAwMWUsIDB4OTE4NiwgMHgwMDRkLCAweDAxMTgsIDB4OTE4NiwgMHgwMDRlLCAweDAxNDgsCi0JMHgyMDAxLCAweDE5ODAsIDB4MjAwYywgMHhkMWZjLCAweDAxNjgsIDB4MmY2MCwgMHgwODBjLCAweGIyZDMsCi0JMHgwMGQwLCAweDIwMDEsIDB4MTk3ZiwgMHgyMDBjLCAweGQxZmMsIDB4MDEyMCwgMHgyZjYwLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwODgsIDB4MmY2MCwgMHgwODBjLCAweDU3ZGQsIDB4MDEzOCwgMHhkMThjLCAweDExMTgsCi0JMHgwNGYxLCAweDAxNDgsIDB4MDAxMCwgMHgyOTAwLCAweDc4MTYsIDB4MDAxZSwgMHgwMDE2LCAweDA4MGMsCi0JMHhiMzUyLCAweDkwODUsIDB4MDAwMSwgMHgwMDFlLCAweDAwNGUsIDB4MDBjZSwgMHgwMGZlLCAweDAwMDUsCi0JMHgwMGY2LCAweDAwYzYsIDB4MDA0NiwgMHgwODBjLCAweGIyN2QsIDB4MmM3OCwgMHgwNTA4LCAweDdlNTYsCi0JMHgyYjAwLCAweDc4MTIsIDB4NzgyMywgMHgwMDAzLCAweDAwOTYsIDB4MjAyMSwgMHgwMDA0LCAweDA0ODksCi0JMHgwMDllLCAweDIwMDEsIDB4MTk3ZSwgMHgyMDBjLCAweGQxZmMsIDB4MDEyMCwgMHgyZjYwLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwNjAsIDB4MmY2MCwgMHgwODBjLCAweDU3ZGQsIDB4MDEyMCwgMHhkMThjLCAweDExNjAsCi0JMHgwMDcxLCAweDAxMzAsIDB4MjAwOSwgMHgwMDUyLCAweDA4MGMsIDB4YjM1MiwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDRlLCAweDAwY2UsIDB4MDBmZSwgMHgwMDA1LCAweDI5MDAsIDB4NzgxNiwgMHgwYzk4LCAweDAwYzYsCi0JMHgwODBjLCAweDRiZTQsIDB4MDBjZSwgMHgxMTIwLCAweDA4MGMsIDB4YjJkMywgMHg5MDA2LCAweDAwMDUsCi0JMHhhODY3LCAweDAwMDAsIDB4YTg2YiwgMHg4MDAwLCAweDI5MDAsIDB4NjAxNiwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDA1LCAweDAwOTYsIDB4MDA3NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDY4NTgsCi0JMHgwMTU4LCAweDIwMDEsIDB4ZDIxZSwgMHgwMDA2LCAweDkwMGUsIDB4MjQwMCwgMHgwODBjLCAweDcxMGIsCi0JMHgwODBjLCAweDZlOWYsIDB4MDAwZSwgMHgwODA3LCAweDI0MTgsIDB4MDgwYywgMHg5OTNmLCAweGJhYTAsCi0JMHgwMDg2LCAweDIwNDEsIDB4MDAwMSwgMHgyMDM5LCAweDAwMDEsIDB4MjYwOCwgMHgwODBjLCAweDk2YmMsCi0JMHgwMDhlLCAweDA4MGMsIDB4OTU3NywgMHgyZjA4LCAweDI2NDgsIDB4MDgwYywgMHhlOTFjLCAweGI5M2MsCi0JMHg4MWZmLCAweDA5MGMsIDB4OTc4ZiwgMHgwODBjLCAweDlhYjEsIDB4MDEyZSwgMHgwMDdlLCAweDAwOWUsCi0JMHgwMDA1LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhiMjdkLCAweDAxOTAsCi0JMHg2NjBhLCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsCi0JMHg2MDE2LCAweDIwMDksIDB4MDAxZiwgMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsCi0JMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweGIzMjUsIDB4MDFiOCwgMHg2NjBhLCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsCi0JMHg2MDIzLCAweDAwMDgsIDB4MjkwMCwgMHg2MDE2LCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDE3NjgsCi0JMHgwMGZlLCAweDIwMDksIDB4MDAyMSwgMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsCi0JMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDIwMDksIDB4MDAzZCwgMHgwMGM2LCAweDAxMjYsCi0JMHgwMDE2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIyN2QsIDB4MDE5OCwgMHg2NjBhLCAweDJiMDgsCi0JMHg2MTEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDEsIDB4MjkwMCwgMHg2MDE2LCAweDAwMWUsCi0JMHgwMDE2LCAweDA4MGMsIDB4YjM1MiwgMHg5MDg1LCAweDAwMDEsIDB4MDAxZSwgMHgwMTJlLCAweDAwY2UsCi0JMHgwMDA1LCAweDkwMDYsIDB4MGNkMCwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHhiMzI1LCAweDAxODgsIDB4MmIwOCwgMHg2MTEyLCAweDA4MGMsIDB4ZDU1NCwgMHg2MDIzLCAweDAwMDEsCi0JMHgyOTAwLCAweDYwMTYsIDB4MjAwOSwgMHgwMDAwLCAweDA4MGMsIDB4YjM1MiwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMTJlLCAweDAwY2UsIDB4MDAwNSwgMHg5MDA2LCAweDBjZDgsIDB4MjAwOSwgMHgwMDQ0LCAweDA4MzAsCi0JMHgyMDA5LCAweDAwNDksIDB4MDgxOCwgMHgwMDI2LCAweDAwYjYsIDB4NjIxMCwgMHgyMjU4LCAweGJhM2MsCi0JMHg4MmZmLCAweDAxMTAsIDB4ODIxMSwgMHhiYTNlLCAweDAwYmUsIDB4MDAyZSwgMHgwMDA1LCAweDAwMDYsCi0JMHgwMDE2LCAweDYwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDAxNDAsIDB4OTA4ZSwgMHgwMDAzLCAweDAxMjgsCi0JMHg5MDhlLCAweDAwMDQsIDB4MDExMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsCi0JMHgwMDA2LCAweDAwODYsIDB4MDA5NiwgMHg2MDIwLCAweDkwODYsIDB4MDAwNCwgMHgwMWE4LCAweDYwMTQsCi0JMHg5MDRkLCAweDA4MGMsIDB4ZDBkOCwgMHgwMTgwLCAweGE4NjQsIDB4OTA4NiwgMHgwMTM5LCAweDAxNzAsCi0JMHg2MDIwLCAweDkwYzYsIDB4MDAwMywgMHgwMTQwLCAweDkwYzYsIDB4MDAwMiwgMHgwMTI4LCAweGE4NjgsCi0JMHhkMGZjLCAweDAxMTAsIDB4OTAwNiwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDllLCAweDAwOGUsCi0JMHgwMDBlLCAweDAwMDUsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIzMjUsCi0JMHgwMTk4LCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsCi0JMHg2MDE2LCAweDA4MGMsIDB4MzI1MCwgMHgyMDA5LCAweDAwMjgsIDB4MDgwYywgMHhiMzUyLCAweDkwODUsCi0JMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwgMHg5MTg2LCAweDAwMTUsCi0JMHgxMWE4LCAweDIwMTEsIDB4MTgyNCwgMHgyMjA0LCAweDkwODYsIDB4MDA3NCwgMHgxMTc4LCAweDAwYjYsCi0JMHgwODBjLCAweGJmNjMsIDB4MDBiZSwgMHgwODBjLCAweGMxZGYsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsCi0JMHgwMDI5LCAweDA4MGMsIDB4OTU0NywgMHgwODBjLCAweDlhYjEsIDB4MDA3OCwgMHg2MDE0LCAweDAwOTYsCi0JMHgyMDQ4LCAweGE4NjgsIDB4MDA5ZSwgMHhkMGZjLCAweDAxNDgsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsCi0JMHhkNzFhLCAweDA4MGMsIDB4YmNiNiwgMHgwODBjLCAweGIyZDMsIDB4MDAwNSwgMHgwMDk2LCAweDYwMTQsCi0JMHg5MDRkLCAweDA5MGMsIDB4MGRjNSwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsCi0JMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHhhODY3LCAweDAxMzksIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwMDllLCAweDA4MGMsIDB4YjJkMywgMHgwYzMwLCAweDAwOTYsCi0JMHg5MTg2LCAweDAwMTYsIDB4MTEyOCwgMHgyMDAxLCAweDAwMDQsIDB4MDgwYywgMHg2NjZhLCAweDAwZTgsCi0JMHg5MTg2LCAweDAwMTUsIDB4MTUxMCwgMHgyMDExLCAweDE4MjQsIDB4MjIwNCwgMHg5MDg2LCAweDAwMTQsCi0JMHgxMWUwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweDA4MGMsIDB4NjdiZiwgMHgwMGJlLCAweDA4MGMsCi0JMHhjMmI1LCAweDExOTgsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4Yjg5MCwgMHgwMGJlLCAweDkwMDUsCi0JMHgwMTYwLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDY2NmEsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjgsCi0JMHhkMGZjLCAweDAxNzAsIDB4MDgwYywgMHhiNmRjLCAweDAwNDgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjgsCi0JMHhkMGZjLCAweDA1MjgsIDB4MDgwYywgMHhiY2I2LCAweDA4MGMsIDB4YjJkMywgMHgwMDllLCAweDAwMDUsCi0JMHg2MDE0LCAweDYzMTAsIDB4MjM1OCwgMHg5MDRkLCAweDA5MGMsIDB4MGRjNSwgMHhhODdiLCAweDAwMDAsCi0JMHhhODgzLCAweDAwMDAsIDB4YTg5NywgMHg0MDAwLCAweDkwMGUsIDB4MDgwYywgMHg2OTQ0LCAweDExMDgsCi0JMHhjMTg1LCAweGI4MDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4YTk5YSwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgwMTJlLCAweDA4MGMsIDB4YjJkMywgMHgwOGY4LCAweDYwMTQsCi0JMHg5MDRkLCAweDA5MGMsIDB4MGRjNSwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsCi0JMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHhhODY3LCAweDAxMzksIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwODBjLCAweGIyZDMsIDB4MDg0MCwgMHhhODc4LCAweDkwODYsCi0JMHgwMDA1LCAweDExMDgsIDB4MDAwOSwgMHgwMDA1LCAweGE4ODAsIDB4YzBhZCwgMHhhODgyLCAweDAwMDUsCi0JMHg2MDQzLCAweDAwMDAsIDB4NjAxNywgMHgwMDAwLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwNTAsCi0JMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsIDB4MDBjNiwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDAxMjAsIDB4NjAyMCwgMHg5MDg0LCAweDAwMGYsCi0JMHgwMDEzLCAweDAwY2UsIDB4MDAwNSwgMHhjZGQ5LCAweGQ0MDQsIDB4ZDQwNCwgMHhkNDA3LCAweGVjODAsCi0JMHhlYzliLCAweGVjOWUsIDB4Y2RkOSwgMHhjZGQ5LCAweGNkZDksIDB4Y2RkOSwgMHhjZGQ5LCAweGNkZDksCi0JMHhjZGQ5LCAweGNkZDksIDB4MDgwYywgMHgwZGM1LCAweGEwMDEsIDB4YTAwMSwgMHgwMDA1LCAweDAwOTYsCi0JMHg2MDE0LCAweDkwNGQsIDB4MDExOCwgMHhhODdjLCAweGQwZTQsIDB4MTExMCwgMHgwMDllLCAweDAwMTAsCi0JMHgwMDllLCAweDAwMDUsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsCi0JMHgwNTUwLCAweDIwMDEsIDB4MTgzNCwgMHgyMDA0LCAweDkwMDUsIDB4MTU0MCwgMHgwMGY2LCAweDJjNzgsCi0JMHgwODBjLCAweGIyN2QsIDB4MDUwOCwgMHg3ODEwLCAweDYwMTIsIDB4MDgwYywgMHhkNTU0LCAweDc4MjAsCi0JMHg5MDg2LCAweDAwMDMsIDB4MDEyOCwgMHg3ODA4LCAweDYwM2EsIDB4MmYwMCwgMHg2MDNlLCAweDAwMjAsCi0JMHg3ODA4LCAweDYwM2UsIDB4MmYwMCwgMHg2MDNhLCAweDYwMmUsIDB4NjAyMywgMHgwMDAxLCAweDYwMDcsCi0JMHgwMDM1LCAweDYwMDMsIDB4MDAwMSwgMHg3OTU0LCAweDYxNTYsIDB4MDgwYywgMHg5NGZmLCAweDA4MGMsCi0JMHg5YWIxLCAweDJmNjAsIDB4MDBmZSwgMHgwMDA1LCAweDJmNjAsIDB4MDBmZSwgMHgyMDAxLCAweDE5ODgsCi0JMHgyMDA0LCAweDYwNDIsIDB4MDAwNSwgMHgwMDE2LCAweDAwOTYsIDB4NjgxNCwgMHgyMDQ4LCAweGE4N2MsCi0JMHhkMGU0LCAweDAxODAsIDB4YzBlNCwgMHhhODdlLCAweGE4NzcsIDB4MDAwMCwgMHhhODkzLCAweDAwMDAsCi0JMHhhODhmLCAweDAwMDAsIDB4ZDBjYywgMHgwMTMwLCAweGMwY2MsIDB4YTg3ZSwgMHhhODc4LCAweDIwNDgsCi0JMHgwODBjLCAweDBmYzAsIDB4NjgzMCwgMHg2MDM2LCAweDkwOGUsIDB4MDAwMSwgMHgwMTQ4LCAweDY4MDMsCi0JMHgwMDAyLCAweDkwODYsIDB4MDAwNSwgMHgwMTcwLCAweDkwMDYsIDB4NjAyZSwgMHg2MDMyLCAweDAwZDAsCi0JMHg2ODFjLCAweGMwODUsIDB4NjgxZSwgMHg2ODAzLCAweDAwMDQsIDB4NjgyNCwgMHhjMGY0LCAweDkwODUsCi0JMHgwYzAwLCAweDY4MjYsIDB4NjgxNCwgMHgyMDQ4LCAweGE4YWMsIDB4NjkzOCwgMHg5MTAyLCAweGE4YjAsCi0JMHg2OTNjLCAweDkxMDMsIDB4MWU0OCwgMHg2ODNjLCAweDYwMmUsIDB4NjgzOCwgMHg5MDg0LCAweGZmZmMsCi0JMHg2ODNhLCAweDYwMzIsIDB4MmQwMCwgMHg2MDNhLCAweDY4MDgsIDB4NjAzZSwgMHg2OTEwLCAweDYxMTIsCi0JMHg2OTU0LCAweDYxNTYsIDB4NjAyMywgMHgwMDAxLCAweDYwMDcsIDB4MDAzOSwgMHg2MDAzLCAweDAwMDEsCi0JMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDAwOWUsIDB4MDAxZSwgMHgwMDA1LCAweDYwMjQsCi0JMHhkMGQ0LCAweDA1MTAsIDB4ZDBmNCwgMHgxMWY4LCAweDYwMzgsIDB4OTQwYSwgMHg2MDNjLCAweDkzMDMsCi0JMHgwMjMwLCAweDkxMDUsIDB4MDEyMCwgMHg2MDI0LCAweGMwZDQsIDB4YzBmNSwgMHgwMDk4LCAweDY0M2EsCi0JMHg2MzNlLCAweGFjM2UsIDB4YWI0MiwgMHgwMDQ2LCAweDAwMzYsIDB4MjQwMCwgMHhhY2FjLCAweDk0MDIsCi0JMHhhODM2LCAweDIzMDAsIDB4YWJiMCwgMHg5MzAzLCAweGE4M2EsIDB4MDAzZSwgMHgwMDRlLCAweDYwMjQsCi0JMHhjMGQ0LCAweDAwMDAsIDB4NjAyNiwgMHgwMDA1LCAweGQwZjQsIDB4MTEzOCwgMHhhODNjLCAweDYwM2EsCi0JMHhhODQwLCAweDYwM2UsIDB4NjAyNCwgMHhjMGY1LCAweDYwMjYsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsCi0JMHg2MDA0LCAweDkwOGUsIDB4MDAzNCwgMHgwMWI4LCAweDkwOGUsIDB4MDAzNSwgMHgwMWEwLCAweDkwOGUsCi0JMHgwMDM2LCAweDAxODgsIDB4OTA4ZSwgMHgwMDM3LCAweDAxNzAsIDB4OTA4ZSwgMHgwMDM4LCAweDAxNTgsCi0JMHg5MDhlLCAweDAwMzksIDB4MDE0MCwgMHg5MDhlLCAweDAwM2EsIDB4MDEyOCwgMHg5MDhlLCAweDAwM2IsCi0JMHgwMTEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDBlNiwgMHgyMDAxLCAweDE5ODIsIDB4MjAwYywgMHg4MDAwLCAweDIwMTQsCi0JMHgyMDAxLCAweDAwMzIsIDB4MDgwYywgMHg5Mzc1LCAweDIwMDEsIDB4MTk4NiwgMHg4MmZmLCAweDExMTAsCi0JMHgyMDExLCAweDAwMTQsIDB4MjIwMiwgMHgyMDAxLCAweDE5ODQsIDB4MjAwYywgMHg4MDAwLCAweDIwMTQsCi0JMHgyMDcxLCAweDE5NmMsIDB4NzExYSwgMHg3MjFlLCAweDIwMDEsIDB4MDA2NCwgMHgwODBjLCAweDkzNzUsCi0JMHgyMDAxLCAweDE5ODcsIDB4ODJmZiwgMHgxMTEwLCAweDIwMTEsIDB4MDAxNCwgMHgyMjAyLCAweDIwMDEsCi0JMHgxOTg4LCAweDkyODgsIDB4MDAwYSwgMHgyMTAyLCAweDIwMDEsIDB4MWE5OCwgMHgyMTAyLCAweDIwMDEsCi0JMHgwMDMyLCAweDA4MGMsIDB4MTYxMSwgMHgwODBjLCAweDZhODQsIDB4MDBlZSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDBlNiwgMHgyMDAxLCAweDE5ODYsCi0JMHgyMDAzLCAweDAwMjgsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDMsIDB4MDAxNCwgMHgyMDcxLCAweDE5NmMsCi0JMHg3MDFiLCAweDAwMDAsIDB4NzAxZiwgMHgwN2QwLCAweDIwMDEsIDB4MTk4OCwgMHgyMDA5LCAweDAwMWUsCi0JMHgyMTAyLCAweDIwMDEsIDB4MWE5OCwgMHgyMTAyLCAweDIwMDEsIDB4MDAzMiwgMHgwODBjLCAweDE2MTEsCi0JMHgwMGVlLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwOTYsIDB4NjA1OCwgMHg5MDRkLCAweDAxMTAsCi0JMHgwODBjLCAweDEwNDAsIDB4MDA5ZSwgMHgwMDA1LCAweDAwMDUsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDA4MGMsIDB4YjI3ZCwgMHgwMTgwLCAweDJiMDgsIDB4NjExMiwgMHgwY2E5LCAweDYwMjMsCi0JMHgwMDAxLCAweDI5MDAsIDB4NjAxNiwgMHgyMDA5LCAweDAwMzMsIDB4MDgwYywgMHhiMzUyLCAweDkwODUsCi0JMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwgMHgwMDk2LCAweDAwZTYsCi0JMHgwMGY2LCAweDIwNzEsIDB4MTgwMCwgMHg5MTg2LCAweDAwMTUsIDB4MTUyMCwgMHg3MDkwLCAweDkwODYsCi0JMHgwMDE4LCAweDAxMjAsIDB4NzA5MCwgMHg5MDg2LCAweDAwMTQsIDB4MTFlMCwgMHg2MDE0LCAweDIwNDgsCi0JMHhhYTNjLCAweGQyZTQsIDB4MTE2MCwgMHgyYzc4LCAweDA4MGMsIDB4OWQ0YywgMHgwMWQ4LCAweDcwN2MsCi0JMHhhYTUwLCAweDkyMDYsIDB4MTE2MCwgMHg3MDgwLCAweGFhNTQsIDB4OTIwNiwgMHgxMTQwLCAweDYyMTAsCi0JMHgwMGI2LCAweDIyNTgsIDB4YmFhMCwgMHgwMGJlLCAweDkwMGUsIDB4MDgwYywgMHgzMjk5LCAweDA4MGMsCi0JMHhiNmRjLCAweDAwMjAsIDB4MDgwYywgMHhiY2I2LCAweDA4MGMsIDB4YjJkMywgMHgwMGZlLCAweDAwZWUsCi0JMHgwMDllLCAweDAwMDUsIDB4NzA2MCwgMHhhYTU0LCAweDkyMDYsIDB4MGQ0OCwgMHgwYzgwLCAweDAwYzYsCi0JMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIyN2QsIDB4MDE4OCwgMHgyYjA4LCAweDYxMTIsCi0JMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsIDB4NjAxNiwgMHgyMDA5LCAweDAwNGQsCi0JMHgwODBjLCAweGIzNTIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsCi0JMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDAxNiwgMHgwODBjLCAweGIyN2QsCi0JMHgwMTgwLCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQ1NTQsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsCi0JMHg2MDE2LCAweDAwMWUsIDB4MDgwYywgMHhiMzUyLCAweDkwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwY2UsCi0JMHgwMDA1LCAweDAwMWUsIDB4OTAwNiwgMHgwY2QwLCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsCi0JMHgwMDU2LCAweDAwNjYsIDB4MDA5NiwgMHgwMGU2LCAweDAwZjYsIDB4MjA3MSwgMHgxODAwLCAweDkxODYsCi0JMHgwMDE1LCAweDE1NjgsIDB4NzE5MCwgMHg2MDE0LCAweDIwNDgsIDB4YTgxNCwgMHg4MDAzLCAweDkxMDYsCi0JMHgxNTMwLCAweDIwZTEsIDB4MDAwMCwgMHgyMDAxLCAweDE5YTEsIDB4MjAwMywgMHgwMDAwLCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4MzAsIDB4MjBhOCwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywgMHg5MDk0LCAweDAwM2YsCi0JMHgyMmU4LCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMWIsIDB4MjBhMCwgMHgyMDAxLCAweDE5YTEsCi0JMHgwMDE2LCAweDIwMGMsIDB4MDgwYywgMHhkZTJlLCAweDAwMWUsIDB4YTgwNCwgMHg5MDA1LCAweDAxMTAsCi0JMHgyMDQ4LCAweDBjMzgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywgMHgwMDEwLCAweDA4MGMsCi0JMHhiY2I2LCAweDA4MGMsIDB4YjJkMywgMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwgMHgwMDZlLCAweDAwNWUsCi0JMHgwMDRlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDA5NiwgMHgwMGU2LCAweDAwZjYsCi0JMHgyMDcxLCAweDE4MDAsIDB4OTE4NiwgMHgwMDE1LCAweDExYjgsIDB4NzA5MCwgMHg5MDg2LCAweDAwMDQsCi0JMHgxMTk4LCAweDYwMTQsIDB4MjA0OCwgMHgyYzc4LCAweDA4MGMsIDB4OWQ0YywgMHgwMWE4LCAweDcwN2MsCi0JMHhhYTc0LCAweDkyMDYsIDB4MTEzMCwgMHg3MDgwLCAweGFhNzgsIDB4OTIwNiwgMHgxMTEwLCAweDA4MGMsCi0JMHgzMjUwLCAweDA4MGMsIDB4YjZkYywgMHgwMDIwLCAweDA4MGMsIDB4YmNiNiwgMHgwODBjLCAweGIyZDMsCi0JMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwgMHgwMDA1LCAweDcwNjAsIDB4YWE3OCwgMHg5MjA2LCAweDBkNzgsCi0JMHgwYzgwLCAweDAwOTYsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzEsIDB4MTgwMCwgMHg5MTg2LCAweDAwMTUsCi0JMHgxNTUwLCAweDcwOTAsIDB4OTA4NiwgMHgwMDA0LCAweDE1MzAsIDB4NjAxNCwgMHgyMDQ4LCAweDJjNzgsCi0JMHgwODBjLCAweDlkNGMsIDB4MDVmMCwgMHg3MDdjLCAweGFhY2MsIDB4OTIwNiwgMHgxMTgwLCAweDcwODAsCi0JMHhhYWQwLCAweDkyMDYsIDB4MTE2MCwgMHgwODBjLCAweDMyNTAsIDB4MDAxNiwgMHhhOTk4LCAweGFhYjAsCi0JMHg5Mjg0LCAweDEwMDAsIDB4YzBmZCwgMHgwODBjLCAweDU3ODQsIDB4MDAxZSwgMHgwMDEwLCAweDA4MGMsCi0JMHg1NTZmLCAweDA4MGMsIDB4ZDBkOCwgMHgwNTA4LCAweGE4N2IsIDB4MDAwMCwgMHhhODgzLCAweDAwMDAsCi0JMHhhODk3LCAweDQwMDAsIDB4MDA4MCwgMHgwODBjLCAweGQwZDgsIDB4MDFiOCwgMHg2MDE0LCAweDIwNDgsCi0JMHgwODBjLCAweDU1NmYsIDB4MWQ3MCwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsCi0JMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHhhODY3LCAweDAxMzksCi0JMHgwODBjLCAweDZlOWYsIDB4MDEyZSwgMHgwODBjLCAweGIyZDMsIDB4MDBmZSwgMHgwMGVlLCAweDAwOWUsCi0JMHgwMDA1LCAweDcwNjAsIDB4YWFkMCwgMHg5MjA2LCAweDA5MzAsIDB4MDg4OCwgMHgwMDE2LCAweDAwMjYsCi0JMHhhODdjLCAweGQwYWMsIDB4MDE3OCwgMHhhOTM4LCAweGFhMzQsIDB4MjEwMCwgMHg5MjA1LCAweDAxNTAsCi0JMHhhODkwLCAweDkxMDYsIDB4MTExOCwgMHhhODhjLCAweDkyMDYsIDB4MDEyMCwgMHhhOTkyLCAweGFhOGUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGQ2LCAweDAwMzYsCi0JMHgwODBjLCAweGQwZDgsIDB4MDkwNCwgMHhkNzE2LCAweDAwOTYsIDB4NjMxNCwgMHgyMzQ4LCAweGE4N2EsCi0JMHhhOTgyLCAweDkyOWUsIDB4NDAwMCwgMHgxNTgwLCAweDYzMTAsIDB4MDBjNiwgMHgyMzU4LCAweDIwMDksCi0JMHgwMDAwLCAweGE4NjgsIDB4ZDBmNCwgMHgxMTQwLCAweDA4MGMsIDB4Njk0NCwgMHgxMTA4LCAweGMxODUsCi0JMHhiODAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweGFhOTYsIDB4YTk5YSwgMHgyMGE5LCAweDAwMDQsCi0JMHhhODYwLCAweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMzEsIDB4MjBhMCwgMHhiOGM0LCAweDIwZTAsCi0JMHhiOGM4LCAweDkwODAsIDB4MDAwNiwgMHgyMDk4LCAweDA4MGMsIDB4MGY4YiwgMHgyMGE5LCAweDAwMDQsCi0JMHhhODVjLCAweDkwODAsIDB4MDAzNSwgMHgyMGEwLCAweGI4YzgsIDB4OTA4MCwgMHgwMDBhLCAweDIwOTgsCi0JMHgwODBjLCAweDBmOGIsIDB4MDBjZSwgMHgwMDkwLCAweGFhOTYsIDB4MzkxOCwgMHg5Mzk4LCAweDAwMDcsCi0JMHgyMzFjLCAweDYwMDQsIDB4OTA4NiwgMHgwMDE2LCAweDAxMTAsIDB4YTg5YiwgMHgwMDA0LCAweGFiYTIsCi0JMHg2MzEwLCAweDIzNTgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsIDB4YTg5ZSwgMHhhODY4LCAweGMwZjQsCi0JMHhhODZhLCAweDA4MGMsIDB4NmU5MiwgMHg2MDE3LCAweDAwMDAsIDB4MDA5ZSwgMHgwMDNlLCAweDAwZGUsCi0JMHgwMGJlLCAweDAwMDUsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsIDB4MDBiNiwgMHgwMDk2LCAweDAwZjYsCi0JMHg2MjE0LCAweDIyNDgsIDB4NjIxMCwgMHgyMjU4LCAweDIwNzksIDB4MDI2MCwgMHg5MDk2LCAweDAwMDAsCi0JMHgxMWEwLCAweGI4MTQsIDB4OTA4NCwgMHgwMGZmLCAweDkwMGUsIDB4MDgwYywgMHgyODczLCAweDIxMTgsCi0JMHg4MzFmLCAweDkzOWMsIDB4ZmYwMCwgMHg3ODM4LCAweDkwODQsIDB4MDBmZiwgMHg5MzFkLCAweDdjM2MsCi0JMHgyMDExLCAweDgwMTgsIDB4MDgwYywgMHg0YzQ0LCAweDAwYTgsIDB4OTA5NiwgMHgwMDAxLCAweDExNDgsCi0JMHg4OWZmLCAweDAxODAsIDB4YTg5YiwgMHgwMDBkLCAweDc4MzgsIDB4YThhNiwgMHg3ODNjLCAweGE4YWEsCi0JMHgwMDQ4LCAweDkwOTYsIDB4MDAwMiwgMHgxMTMwLCAweGE4OWIsIDB4MDAwZCwgMHg3ODM4LCAweGE4YTYsCi0JMHg3ODNjLCAweGE4YWEsIDB4MDBmZSwgMHgwMDllLCAweDAwYmUsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDA1LCAweDAwYzYsIDB4MDAyNiwgMHgwMDE2LCAweDkxODYsIDB4MDAzNSwgMHgwMTEwLCAweDZhMzgsCi0JMHgwMDA4LCAweDZhMmMsIDB4MDgwYywgMHhkMGM2LCAweDAxZjAsIDB4MjI2MCwgMHg2MTIwLCAweDkxODYsCi0JMHgwMDAzLCAweDAxMTgsIDB4OTE4NiwgMHgwMDA2LCAweDExOTAsIDB4NjgzOCwgMHg5MjA2LCAweDAxNDAsCi0JMHg2ODNjLCAweDkyMDYsIDB4MTE2MCwgMHg2MTA4LCAweDY4MzgsIDB4OTEwNiwgMHgxMTQwLCAweDAwMjAsCi0JMHg2MDA4LCAweDY5M2MsIDB4OTEwNiwgMHgxMTE4LCAweDYwMTAsIDB4NjkxMCwgMHg5MTA2LCAweDAwMWUsCi0JMHgwMDJlLCAweDAwY2UsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsIDB4MGNjOCwgMHhhOTc0LCAweGQxY2MsCi0JMHgwMTk4LCAweDkxOGMsIDB4MDBmZiwgMHg5MThlLCAweDAwMDIsIDB4MTE3MCwgMHhhOWE4LCAweDkxOGMsCi0JMHgwMDBmLCAweDkxOGUsIDB4MDAwMSwgMHgxMTQwLCAweGE4N2MsIDB4ZDBhYywgMHgwMTI4LCAweGE4MzQsCi0JMHhhOTM4LCAweDkxMTUsIDB4MTkwYywgMHhjNzhiLCAweDAwMDUsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsCi0JMHgwMDEwLCAweDAwMzYsIDB4OTAxZSwgMHgwNDk5LCAweDAxZTAsIDB4MDgwYywgMHhkMGQ4LCAweDAxYzgsCi0JMHgwODBjLCAweGQyYzMsIDB4NjAzNywgMHg0MDAwLCAweDYwMTQsIDB4NjAxNywgMHgwMDAwLCAweDAwOTYsCi0JMHgyMDQ4LCAweGE4N2MsIDB4MDgwYywgMHhkMmUwLCAweDExMTgsIDB4MDgwYywgMHhiY2I2LCAweDAwNDAsCi0JMHhhODY3LCAweDAxMDMsIDB4YTg3NywgMHgwMDAwLCAweDgzZmYsIDB4MTEyOSwgMHgwODBjLCAweDZlOWYsCi0JMHgwMDllLCAweDAwM2UsIDB4MDAwNSwgMHhhODgwLCAweGQwYjQsIDB4MDEyOCwgMHhhODdiLCAweDAwMDYsCi0JMHhjMGVjLCAweGE4ODIsIDB4MDA0OCwgMHhkMGJjLCAweDAxMTgsIDB4YTg3YiwgMHgwMDAyLCAweDAwMjAsCi0JMHhhODdiLCAweDAwMDUsIDB4MDgwYywgMHhkM2Q0LCAweGE4NzcsIDB4MDAwMCwgMHgwMDA1LCAweDIwMDEsCi0JMHgxODEwLCAweDIwMDQsIDB4ZDBlYywgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsCi0JMHhkMGY0LCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MTgxMCwgMHgyMDA0LCAweGQwZTQsCi0JMHgwMDBlLCAweDAwMDUsIDB4MDAzNiwgMHgwMDQ2LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGJiYTAsCi0JMHgwMGJlLCAweDIwMjEsIDB4MDAwNywgMHgwODBjLCAweDRkZmIsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMDUsCi0JMHgwYzUxLCAweDFkODEsIDB4MDAwNSwgMHgyMDAxLCAweDE5ODYsIDB4MjAwNCwgMHg2MDFhLCAweDAwMDUsCi0JMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2MDQyLCAweDAwMDUsIDB4MDgwYywgMHhiMmQzLCAweDA4MDQsCi0JMHg5YWIxLCAweDIwMDEsIDB4MDEwOSwgMHgyMDA0LCAweGQwODQsIDB4MDFlMCwgMHgwMTI2LCAweDIwOTEsCi0JMHgyODAwLCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBmNiwgMHgwMGU2LCAweDAwYzYsCi0JMHgyMDc5LCAweDE5ZTgsIDB4MjA3MSwgMHgxODAwLCAweDIwNjEsIDB4MDEwMCwgMHgwODBjLCAweDkzZTIsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAxMmUsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMGI2LCAweDAwNjYsIDB4NjAwMCwgMHg5MGIyLCAweDAwMTAsCi0JMHgxYTBjLCAweDBkYzUsIDB4MDAxYiwgMHgwMDZlLCAweDAwYmUsIDB4MDAwNSwgMHhkODQ2LCAweGRmOGQsCi0JMHhlMTAyLCAweGQ4NDYsIDB4ZDg0NiwgMHhkODQ2LCAweGQ4NDYsIDB4ZDg0NiwgMHhkODdkLCAweGUxODYsCi0JMHhkODQ2LCAweGQ4NDYsIDB4ZDg0NiwgMHhkODQ2LCAweGQ4NDYsIDB4ZDg0NiwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDY2LCAweDYwMDAsIDB4OTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MGRjNSwgMHgwMDEzLCAweDAwNmUsCi0JMHgwMDA1LCAweGQ4NjEsIDB4ZTZkNSwgMHhkODYxLCAweGQ4NjEsIDB4ZDg2MSwgMHhkODYxLCAweGQ4NjEsCi0JMHhkODYxLCAweGU2ODIsIDB4ZTcyOSwgMHhkODYxLCAweGVkYjQsIDB4ZWRlYSwgMHhlZGI0LCAweGVkZWEsCi0JMHhkODYxLCAweDA4MGMsIDB4MGRjNSwgMHg2MDAwLCAweDkwODIsIDB4MDAxMCwgMHgxYTBjLCAweDBkYzUsCi0JMHg2MDAwLCAweDAwMGEsIDB4MDAwNSwgMHhkODdiLCAweGUzNjQsIDB4ZTQzMywgMHhlNDU2LCAweGU1MTYsCi0JMHhkODdiLCAweGU1ZjUsIDB4ZTU5ZSwgMHhlMTkyLCAweGU2NTgsIDB4ZTY2ZCwgMHhkODdiLCAweGQ4N2IsCi0JMHhkODdiLCAweGQ4N2IsIDB4ZDg3YiwgMHgwODBjLCAweDBkYzUsIDB4OTFiMiwgMHgwMDUzLCAweDFhMGMsCi0JMHgwZGM1LCAweDIxMDAsIDB4OTFiMiwgMHgwMDQwLCAweDFhMDQsIDB4ZGNmZCwgMHgwMDAyLCAweGQ4YzcsCi0JMHhkYWNiLCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGRhZDQsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsCi0JMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsCi0JMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM5LCAweGQ5MmMsCi0JMHhkOTNiLCAweGQ5OWYsIDB4ZDljYSwgMHhkYTQzLCAweGRhYjYsIDB4ZDhjNywgMHhkOGM3LCAweGRhZDcsCi0JMHhkOGM3LCAweGQ4YzcsIDB4ZGFlYywgMHhkYWY5LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsCi0JMHhkOGM3LCAweGRiOWYsIDB4ZDhjNywgMHhkOGM3LCAweGRiYjMsIDB4ZDhjNywgMHhkOGM3LCAweGRiNmUsCi0JMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkYmNiLCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGRjNDgsCi0JMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkOGM3LCAweGQ4YzcsIDB4ZDhjNywgMHhkY2M1LCAweDA4MGMsCi0JMHgwZGM1LCAweDA4MGMsIDB4NmE2MSwgMHgxMTUwLCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwY2MsCi0JMHgxMTI4LCAweDkwODQsIDB4MDAwOSwgMHg5MDg2LCAweDAwMDgsIDB4MTE0MCwgMHg2MDA3LCAweDAwMDksCi0JMHg2MDJmLCAweDAwMDksIDB4NjAxNywgMHgwMDAwLCAweDA4MDQsIDB4ZGFjNCwgMHgwODBjLCAweDY5ZmQsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDAzNiwgMHgwMDI2LCAweDAwMTYsIDB4NjIxMCwgMHgyMjU4LCAweGJhYTAsCi0JMHgwMDI2LCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk2YTQsIDB4MDA3NiwgMHg5MDNlLCAweDA4MGMsCi0JMHg5NTc3LCAweDJjMDgsIDB4MDgwYywgMHhlOTFjLCAweDAwN2UsIDB4MDAxZSwgMHgwMDFlLCAweDAwMmUsCi0JMHgwMDNlLCAweDAwY2UsIDB4MDBlZSwgMHg2NjEwLCAweDI2NTgsIDB4MDgwYywgMHg2NzMzLCAweGJlMDQsCi0JMHg5Njg0LCAweDAwZmYsIDB4OTA4MiwgMHgwMDA2LCAweDEyNjgsIDB4MDAxNiwgMHgwMDI2LCAweDYyMTAsCi0JMHgwMGI2LCAweDIyNTgsIDB4YmFhMCwgMHgwMGJlLCAweDJjMDgsIDB4MDgwYywgMHhmMDE1LCAweDAwMmUsCi0JMHgwMDFlLCAweDExNzgsIDB4MDgwYywgMHhlODRlLCAweDE5MDQsIDB4ZDk5NywgMHgwODBjLCAweGU3ZWEsCi0JMHgxMTIwLCAweDYwMDcsIDB4MDAwOCwgMHgwODA0LCAweGRhYzQsIDB4NjAwNywgMHgwMDA5LCAweDA4MDQsCi0JMHhkYWM0LCAweDA4MGMsIDB4ZWFiOSwgMHgwMTI4LCAweDA4MGMsIDB4ZTg0ZSwgMHgwZDc4LCAweDA4MDQsCi0JMHhkOTk3LCAweDYwMTcsIDB4MTkwMCwgMHgwYzg4LCAweDA4MGMsIDB4MzM3NCwgMHgxOTA0LCAweGRjZmEsCi0JMHg2MTA2LCAweDA4MGMsIDB4ZTc4ZSwgMHg2MDA3LCAweDAwMDYsIDB4MDgwNCwgMHhkYWM0LCAweDYwMDcsCi0JMHgwMDA3LCAweDA4MDQsIDB4ZGFjNCwgMHgwODBjLCAweGVlMjYsIDB4MTkwNCwgMHhkY2ZhLCAweDA4MGMsCi0JMHgzMzc0LCAweDE5MDQsIDB4ZGNmYSwgMHgwMGQ2LCAweDY2MTAsIDB4MjY1OCwgMHhiZTA0LCAweDk2ODQsCi0JMHgwMGZmLCAweDkwODIsIDB4MDAwNiwgMHgxMjIwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDY2NTYsCi0JMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5Njg2LCAweDAwMDYsIDB4MDE4OCwgMHg5Njg2LCAweDAwMDQsCi0JMHgwMTcwLCAweGJlMDQsIDB4OTZiNCwgMHgwMGZmLCAweDk2ODYsIDB4MDAwNiwgMHgwMTQwLCAweDk2ODYsCi0JMHgwMDA0LCAweDAxMjgsIDB4OTY4NiwgMHgwMDA1LCAweDAxMTAsIDB4MDBkZSwgMHgwNDgwLCAweDAwZTYsCi0JMHgyMDcxLCAweDAyNjAsIDB4NzAzNCwgMHg5MDg0LCAweDAwMDMsIDB4MTE0MCwgMHg3MDM0LCAweDkwODIsCi0JMHgwMDE0LCAweDAyMjAsIDB4NzAzMCwgMHg5MDg0LCAweDAwMDMsIDB4MDEzMCwgMHgwMGVlLCAweDYwMTcsCi0JMHgwMDAwLCAweDYwMmYsIDB4MDAwNywgMHgwMGIwLCAweDAwZWUsIDB4MDgwYywgMHhlOGIyLCAweDExOTAsCi0JMHg5Njg2LCAweDAwMDYsIDB4MTE0MCwgMHgwMDI2LCAweDYyMTAsIDB4MjI1OCwgMHhiYWEwLCAweDkwMGUsCi0JMHgwODBjLCAweDMyOTksIDB4MDAyZSwgMHgwODBjLCAweDY3YmYsIDB4NjAwNywgMHgwMDBhLCAweDAwZGUsCi0JMHgwODA0LCAweGRhYzQsIDB4NjAwNywgMHgwMDBiLCAweDAwZGUsIDB4MDgwNCwgMHhkYWM0LCAweDA4MGMsCi0JMHgzMjUwLCAweDA4MGMsIDB4ZDdmOCwgMHg2MDA3LCAweDAwMDEsIDB4MDgwNCwgMHhkYWM0LCAweDA4MGMsCi0JMHhlZTI2LCAweDE5MDQsIDB4ZGNmYSwgMHgwODBjLCAweDMzNzQsIDB4MTkwNCwgMHhkY2ZhLCAweDIwNzEsCi0JMHgwMjYwLCAweDcwMzQsIDB4OTBiNCwgMHgwMDAzLCAweDE5NDgsIDB4OTBiMiwgMHgwMDE0LCAweDBhMzAsCi0JMHg3MDMwLCAweDkwODQsIDB4MDAwMywgMHgxOTEwLCAweDY2MTAsIDB4MjY1OCwgMHhiZTA0LCAweDk2ODYsCi0JMHgwNzA3LCAweDA5ZTgsIDB4MDAyNiwgMHg2MjEwLCAweDIyNTgsIDB4YmFhMCwgMHg5MDBlLCAweDA4MGMsCi0JMHgzMjk5LCAweDAwMmUsIDB4NjAwNywgMHgwMDBjLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweGVmZjQsCi0JMHgwODA0LCAweGRhYzQsIDB4MDgwYywgMHg2YTYxLCAweDExNDAsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsCi0JMHg5MDg0LCAweDAwMDksIDB4OTA4NiwgMHgwMDA4LCAweDExMTAsIDB4MDgwNCwgMHhkOGQ2LCAweDA4MGMsCi0JMHg2OWZkLCAweDY2MTAsIDB4MjY1OCwgMHhiZTA0LCAweDk2ODQsIDB4MDBmZiwgMHg5MDgyLCAweDAwMDYsCi0JMHgwNmM4LCAweDExMzgsIDB4MDAyNiwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywgMHg2Njk2LCAweDAwMmUsCi0JMHgwMDUwLCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNCwgMHgwMTIwLCAweDk2ODYsCi0JMHgwMDA2LCAweDE5MDQsIDB4ZDk5NywgMHgwODBjLCAweGU4YmYsIDB4MTEyMCwgMHg2MDA3LCAweDAwMGUsCi0JMHgwODA0LCAweGRhYzQsIDB4MDA0NiwgMHg2NDEwLCAweDI0NTgsIDB4YmNhMCwgMHgwMDQ2LCAweDA4MGMsCi0JMHgzMjUwLCAweDA4MGMsIDB4ZDdmOCwgMHgwMDRlLCAweDAwMTYsIDB4OTAwNiwgMHgyMDA5LCAweDE4NDgsCi0JMHgyMTBjLCAweGQxYTQsIDB4MDE0OCwgMHgyMDA5LCAweDAwMjksIDB4MDgwYywgMHhlYzMxLCAweDYwMTAsCi0JMHgyMDU4LCAweGI4MDAsIDB4YzBlNSwgMHhiODAyLCAweDAwMWUsIDB4MDA0ZSwgMHg2MDA3LCAweDAwMDEsCi0JMHgwODA0LCAweGRhYzQsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NjY1NiwgMHgwMTU2LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MjBhOSwgMHgwMDA0LCAweDIwMTksIDB4MTgwNSwgMHgyMDExLCAweDAyNzAsCi0JMHgwODBjLCAweGMzNjUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDE1ZSwgMHg5MDA1LCAweDAxNjgsCi0JMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5NjgyLCAweDAwMDQsIDB4MGEwNCwgMHhkOTk3LCAweDk2ODIsCi0JMHgwMDA3LCAweDBhMDQsIDB4ZDlmMywgMHgwODA0LCAweGQ5OTcsIDB4NjAxNywgMHgxOTAwLCAweDYwMDcsCi0JMHgwMDA5LCAweDA4MDQsIDB4ZGFjNCwgMHgwODBjLCAweDZhNjEsIDB4MTE0MCwgMHgyMDAxLCAweDE4MzcsCi0JMHgyMDA0LCAweDkwODQsIDB4MDAwOSwgMHg5MDg2LCAweDAwMDgsIDB4MTExMCwgMHgwODA0LCAweGQ4ZDYsCi0JMHgwODBjLCAweDY5ZmQsIDB4NjYxMCwgMHgyNjU4LCAweGJlMDQsIDB4OTY4NCwgMHgwMGZmLCAweDAwMDYsCi0JMHgwMDE2LCAweDkwOGUsIDB4MDAwMSwgMHgwMTE4LCAweDkwOGUsIDB4MDAwMCwgMHgxMTE4LCAweDAwMWUsCi0JMHgwMDBlLCAweDAwODAsIDB4MDAxZSwgMHgwMDBlLCAweDkwODIsIDB4MDAwNiwgMHgwNmEwLCAweDAxNTAsCi0JMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5Njg2LCAweDAwMDQsIDB4MDEyMCwgMHg5Njg2LCAweDAwMDYsCi0JMHgxOTA0LCAweGQ5OTcsIDB4MDgwYywgMHhlOGVkLCAweDExMzgsIDB4MDgwYywgMHhlN2VhLCAweDExMjAsCi0JMHg2MDA3LCAweDAwMTAsIDB4MDgwNCwgMHhkYWM0LCAweDAwNDYsIDB4NjQxMCwgMHgyNDU4LCAweGJjYTAsCi0JMHgwMDQ2LCAweDA4MGMsIDB4MzI1MCwgMHgwODBjLCAweGQ3ZjgsIDB4MDA0ZSwgMHgwMDE2LCAweDkwMDYsCi0JMHgyMDA5LCAweDE4NDgsIDB4MjEwYywgMHhkMWE0LCAweDAxNDgsIDB4MjAwOSwgMHgwMDI5LCAweDA4MGMsCi0JMHhlYzMxLCAweDYwMTAsIDB4MjA1OCwgMHhiODAwLCAweGMwZTUsIDB4YjgwMiwgMHgwMDFlLCAweDAwNGUsCi0JMHg2MDA3LCAweDAwMDEsIDB4MDQ0OCwgMHgwODBjLCAweGVhYjksIDB4MDE5OCwgMHgwMDE2LCAweDk2OGMsCi0JMHgwMGZmLCAweDkxODYsIDB4MDAwMiwgMHgwMTYwLCAweDkxODYsIDB4MDAwMywgMHgwMTQ4LCAweDAwMWUsCi0JMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5Njg2LCAweDAwMDYsIDB4MDkyMCwgMHgwODA0LCAweGQ5OTcsCi0JMHgwMDFlLCAweDYwMTcsIDB4MTkwMCwgMHg2MDA3LCAweDAwMDksIDB4MDA3MCwgMHgwODBjLCAweDMzNzQsCi0JMHgxOTA0LCAweGRjZmEsIDB4MDgwYywgMHhlZTI2LCAweDE5MDQsIDB4ZGNmYSwgMHgwODBjLCAweGRlY2IsCi0JMHgxOTA0LCAweGQ5OTcsIDB4NjAwNywgMHgwMDEyLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHg2MDA3LCAweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwY2IwLCAweDYwMDcsIDB4MDAwNSwgMHgwYzY4LCAweDA4MGMsCi0JMHhlZTI2LCAweDE5MDQsIDB4ZGNmYSwgMHgwODBjLCAweDMzNzQsIDB4MTkwNCwgMHhkY2ZhLCAweDA4MGMsCi0JMHhkZWNiLCAweDE5MDQsIDB4ZDk5NywgMHg2MDA3LCAweDAwMjAsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDA4MGMsIDB4MzM3NCwgMHgxOTA0LCAweGRjZmEsCi0JMHg2MDA3LCAweDAwMjMsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTU0NywgMHgwODBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDA4MGMsIDB4ZWUyNiwgMHgxOTA0LCAweGRjZmEsIDB4MDgwYywgMHgzMzc0LCAweDE5MDQsCi0JMHhkY2ZhLCAweDA4MGMsIDB4ZGVjYiwgMHgxOTA0LCAweGQ5OTcsIDB4MDAxNiwgMHgwMDI2LCAweDAwZTYsCi0JMHgyMDcxLCAweDAyNjAsIDB4MmMwOCwgMHgyMDExLCAweDE4MjAsIDB4MjIxNCwgMHg3MDNjLCAweDkyMDYsCi0JMHgxMWUwLCAweDIwMTEsIDB4MTgxZiwgMHgyMjE0LCAweDcwMzgsIDB4OTA4NCwgMHgwMGZmLCAweDkyMDYsCi0JMHgxMWEwLCAweDcyNDAsIDB4MDgwYywgMHhkMGM2LCAweDA1NzAsIDB4MjI2MCwgMHg2MDA4LCAweDkwODYsCi0JMHhmZmZmLCAweDAxMjAsIDB4NzI0NCwgMHg2MDA4LCAweDkyMDYsIDB4MTUyOCwgMHg2MDIwLCAweDkwODYsCi0JMHgwMDA3LCAweDE1MDgsIDB4MDgwYywgMHhiMmQzLCAweDA0YTAsIDB4NzI0NCwgMHg5Mjg2LCAweGZmZmYsCi0JMHgwMTgwLCAweDJjMDgsIDB4MDgwYywgMHhkMGM2LCAweDAxYjAsIDB4MjI2MCwgMHg3MjQwLCAweDYwMDgsCi0JMHg5MjA2LCAweDExODgsIDB4NjAxMCwgMHg5MTkwLCAweDAwMDQsIDB4MjIxNCwgMHg5MjA2LCAweDAxYjgsCi0JMHgwMDUwLCAweDcyNDAsIDB4MmMwOCwgMHg5MDA2LCAweDA4MGMsIDB4ZWJmYiwgMHgxMTgwLCAweDcyNDQsCi0JMHg5Mjg2LCAweGZmZmYsIDB4MDFiMCwgMHgyMTYwLCAweDYwMDcsIDB4MDAyNiwgMHg2MDE3LCAweDE3MDAsCi0JMHg3MjE0LCAweDkyOTYsIDB4ZmZmZiwgMHgxMTgwLCAweDYwMDcsIDB4MDAyNSwgMHgwMDY4LCAweDYwMjAsCi0JMHg5MDg2LCAweDAwMDcsIDB4MWQ4MCwgMHg2MDA0LCAweDkwODYsIDB4MDAyNCwgMHgxMTEwLCAweDA4MGMsCi0JMHhiMmQzLCAweDIxNjAsIDB4NjAwNywgMHgwMDI1LCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwODBjLCAweDlhYjEsIDB4MDBlZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgyMDAxLCAweDAwMDEsCi0JMHgwODBjLCAweDY2NTYsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgyMGE5LCAweDAwMDQsCi0JMHgyMDE5LCAweDE4MDUsIDB4MjAxMSwgMHgwMjc2LCAweDA4MGMsIDB4YzM2NSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAxNWUsIDB4MDEyMCwgMHg2MDA3LCAweDAwMzEsIDB4MDgwNCwgMHhkYWM0LCAweDA4MGMsCi0JMHhiZjdiLCAweDA4MGMsIDB4NzYzNywgMHgxMTkwLCAweDAwMDYsIDB4MDAyNiwgMHgwMDM2LCAweDA4MGMsCi0JMHg3NjUxLCAweDExMzgsIDB4MDgwYywgMHg3OTMyLCAweDA4MGMsIDB4NjEyZSwgMHgwODBjLCAweDc1NjMsCi0JMHgwMDEwLCAweDA4MGMsIDB4NzYwZiwgMHgwMDNlLCAweDAwMmUsIDB4MDAwZSwgMHgwMDA1LCAweDA4MGMsCi0JMHgzMzc0LCAweDE5MDQsIDB4ZGNmYSwgMHgwODBjLCAweGRlY2IsIDB4MTkwNCwgMHhkOTk3LCAweDYxMDYsCi0JMHgwODBjLCAweGRlZTcsIDB4MTEyMCwgMHg2MDA3LCAweDAwMmIsIDB4MDgwNCwgMHhkYWM0LCAweDYwMDcsCi0JMHgwMDJjLCAweDA4MDQsIDB4ZGFjNCwgMHgwODBjLCAweGVlMjYsIDB4MTkwNCwgMHhkY2ZhLCAweDA4MGMsCi0JMHgzMzc0LCAweDE5MDQsIDB4ZGNmYSwgMHgwODBjLCAweGRlY2IsIDB4MTkwNCwgMHhkOTk3LCAweDYxMDYsCi0JMHgwODBjLCAweGRlZWMsIDB4MTEyMCwgMHg2MDA3LCAweDAwMmUsIDB4MDgwNCwgMHhkYWM0LCAweDYwMDcsCi0JMHgwMDJmLCAweDA4MDQsIDB4ZGFjNCwgMHgwODBjLCAweDMzNzQsIDB4MTkwNCwgMHhkY2ZhLCAweDAwZTYsCi0JMHgwMGQ2LCAweDAwYzYsIDB4NjAxMCwgMHgyMDU4LCAweGI5MDQsIDB4OTE4NCwgMHgwMGZmLCAweDkwODYsCi0JMHgwMDA2LCAweDAxNTgsIDB4OTE4NCwgMHhmZjAwLCAweDgwMDcsIDB4OTA4NiwgMHgwMDA2LCAweDAxMjgsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwODA0LCAweGRhY2IsIDB4MDgwYywgMHg1N2Q5LCAweGQwZTQsCi0JMHgwOTA0LCAweGRjNDUsIDB4MjA3MSwgMHgwMjZjLCAweDcwMTAsIDB4NjAzYSwgMHg3MDE0LCAweDYwM2UsCi0JMHg3MTA4LCAweDcyMGMsIDB4MDgwYywgMHg2YTlmLCAweDAxNDAsIDB4NjAxMCwgMHgyMDU4LCAweGI4MTAsCi0JMHg5MTA2LCAweDExMTgsIDB4YjgxNCwgMHg5MjA2LCAweDA1MTAsIDB4MDgwYywgMHg2YTliLCAweDE1YjgsCi0JMHgyMDY5LCAweDE4MDAsIDB4Njg4MCwgMHg5MjA2LCAweDE1OTAsIDB4Njg3YywgMHg5MTA2LCAweDE1NzgsCi0JMHg3MjEwLCAweDA4MGMsIDB4ZDBjNiwgMHgwNTkwLCAweDA4MGMsIDB4ZGRiOCwgMHgwNTc4LCAweDA4MGMsCi0JMHhlY2FkLCAweDA1NjAsIDB4NjIyZSwgMHg2MDA3LCAweDAwMzYsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDcyMTQsCi0JMHg5Mjg2LCAweGZmZmYsIDB4MDE1MCwgMHgwODBjLCAweGQwYzYsIDB4MDFjMCwgMHg5MjgwLCAweDAwMDIsCi0JMHgyMDA0LCAweDcxMTAsIDB4OTEwNiwgMHgxMTkwLCAweDA4ZTAsIDB4NzIxMCwgMHgyYzA4LCAweDkwODUsCi0JMHgwMDAxLCAweDA4MGMsIDB4ZWJmYiwgMHgyYzEwLCAweDIxNjAsIDB4MDE0MCwgMHgwODkwLCAweDYwMDcsCi0JMHgwMDM3LCAweDYwMmYsIDB4MDAwOSwgMHg2MDE3LCAweDE1MDAsIDB4MDhiOCwgMHg2MDA3LCAweDAwMzcsCi0JMHg2MDJmLCAweDAwMDMsIDB4NjAxNywgMHgxNzAwLCAweDA4ODAsIDB4NjAwNywgMHgwMDEyLCAweDA4NjgsCi0JMHgwODBjLCAweDMzNzQsIDB4MTkwNCwgMHhkY2ZhLCAweDYwMTAsIDB4MjA1OCwgMHhiODA0LCAweDkwODQsCi0JMHhmZjAwLCAweDgwMDcsIDB4OTA4NiwgMHgwMDA2LCAweDE5MDQsIDB4ZGFjYiwgMHgwMGU2LCAweDAwZDYsCi0JMHgwMGM2LCAweDA4MGMsIDB4NTdkOSwgMHhkMGU0LCAweDA5MDQsIDB4ZGNiZCwgMHgyMDY5LCAweDE4MDAsCi0JMHgyMDcxLCAweDAyNmMsIDB4NzAwOCwgMHg2MDNhLCAweDcyMGMsIDB4NjIzZSwgMHg5Mjg2LCAweGZmZmYsCi0JMHgxMTUwLCAweDcyMDgsIDB4MDBjNiwgMHgyYzA4LCAweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweGViZmIsCi0JMHgyYzEwLCAweDAwY2UsIDB4MDVlOCwgMHgwODBjLCAweGQwYzYsIDB4MDVkMCwgMHg3MTA4LCAweDkyODAsCi0JMHgwMDAyLCAweDIwMDQsIDB4OTEwNiwgMHgxNWEwLCAweDAwYzYsIDB4MDAyNiwgMHgyMjYwLCAweDA4MGMsCi0JMHhjY2U2LCAweDAwMmUsIDB4MDBjZSwgMHg3MTE4LCAweDkxOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsCi0JMHgwMDAxLCAweDAxNzgsIDB4OTE4NiwgMHgwMDA1LCAweDAxMTgsIDB4OTE4NiwgMHgwMDA3LCAweDExOTgsCi0JMHg5MjgwLCAweDAwMDUsIDB4MjAwNCwgMHg5MDA1LCAweDAxNzAsIDB4MDgwYywgMHhkZGI4LCAweDA5MDQsCi0JMHhkYzNlLCAweDAwNTYsIDB4NzUxMCwgMHg3NjE0LCAweDA4MGMsIDB4ZWNjNiwgMHgwMDVlLCAweDAwY2UsCi0JMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHg2MDA3LCAweDAwM2IsIDB4NjAyZiwgMHgwMDA5LCAweDYwMTcsCi0JMHgyYTAwLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDBjNzgsCi0JMHg2MDA3LCAweDAwM2IsIDB4NjAyZiwgMHgwMDAzLCAweDYwMTcsIDB4MDMwMCwgMHg2MDAzLCAweDAwMDEsCi0JMHgwODBjLCAweDk0ZmYsIDB4MDgwYywgMHg5YWIxLCAweDBjMTAsIDB4NjAwNywgMHgwMDNiLCAweDYwMmYsCi0JMHgwMDBiLCAweDYwMTcsIDB4MDAwMCwgMHgwODA0LCAweGRjMTUsIDB4MDBlNiwgMHgwMDI2LCAweDA4MGMsCi0JMHg2YTYxLCAweDA1NTAsIDB4MDgwYywgMHg2OWZkLCAweDA4MGMsIDB4ZWU5NywgMHgxNTE4LCAweDIwNzEsCi0JMHgxODAwLCAweDcwZGMsIDB4OTA4NSwgMHgwMDAzLCAweDcwZGUsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsCi0JMHg3MmIwLCAweDkyODQsIDB4MDBmZiwgMHg3MDdlLCAweDc4ZTYsIDB4OTI4NCwgMHhmZjAwLCAweDcyODAsCi0JMHg5MjA1LCAweDcwODIsIDB4NzhlYSwgMHgwMGZlLCAweDcwZTcsIDB4MDAwMCwgMHgwODBjLCAweDZhOWYsCi0JMHgwMTIwLCAweDIwMTEsIDB4MWEwMSwgMHgyMDEzLCAweDA3ZDAsIDB4ZDBhYywgMHgxMTI4LCAweDA4MGMsCi0JMHgzMDAwLCAweDAwMTAsIDB4MDgwYywgMHhlZWNiLCAweDAwMmUsIDB4MDBlZSwgMHgwODBjLCAweGIyZDMsCi0JMHgwODA0LCAweGRhY2EsIDB4MDgwYywgMHhiMmQzLCAweDAwMDUsIDB4MjYwMCwgMHgwMDAyLCAweGRkMTEsCi0JMHhkZDNmLCAweGRkNTAsIDB4ZGQxMSwgMHhkZDExLCAweGRkMTMsIDB4ZGQ2MSwgMHhkZDExLCAweGRkMTEsCi0JMHhkZDExLCAweGRkMmQsIDB4ZGQxMSwgMHhkZDExLCAweGRkMTEsIDB4ZGQ2YywgMHhkZDgyLCAweGRkYjMsCi0JMHhkZDExLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweGVlMjYsIDB4MWQyMCwgMHgwODBjLCAweDMzNzQsCi0JMHgxZDA4LCAweDcwMzgsIDB4NjAxNiwgMHg2MDA3LCAweDAwNDUsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NTQ3LCAweDAwMDUsIDB4MDgwYywgMHgzMjUwLCAweDA4MGMsIDB4ZDdmOCwgMHg2MDA3LCAweDAwMDEsCi0JMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDAwMDUsIDB4MDgwYywgMHhlZTI2LCAweDE5NTAsCi0JMHgwODBjLCAweDMzNzQsIDB4MTkzOCwgMHgwODBjLCAweGRlY2IsIDB4MWQ2MCwgMHg3MDNjLCAweDYwMTYsCi0JMHg2MDA3LCAweDAwNGEsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTU0NywgMHgwMDA1LCAweDA4MGMsCi0JMHgzMzc0LCAweDE5MDQsIDB4ZGNmYSwgMHgyMDA5LCAweDAwNDEsIDB4MDgwYywgMHhlZWQ0LCAweDYwMDcsCi0JMHgwMDQ3LCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsCi0JMHgwODBjLCAweDMzNzQsIDB4MTkwNCwgMHhkY2ZhLCAweDIwMDksIDB4MDA0MiwgMHgwODBjLCAweGVlZDQsCi0JMHg2MDA3LCAweDAwNDcsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTU0NywgMHgwODBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDA4MGMsIDB4MzM3NCwgMHgxOTA0LCAweGRjZmEsIDB4MjAwOSwgMHgwMDQ2LCAweDA4MGMsCi0JMHhlZWQ0LCAweDA4MGMsIDB4YjJkMywgMHgwMDA1LCAweDIwMDEsIDB4MTgyNCwgMHgyMDA0LCAweDkwODIsCi0JMHgwMGUxLCAweDEyNjgsIDB4MDgwYywgMHhkZGQ1LCAweDA5MDQsIDB4ZGNmYSwgMHg2MDA3LCAweDAwNGUsCi0JMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDYwMDcsCi0JMHgwMDEyLCAweDBjYjAsIDB4NjAwNywgMHgwMDRmLCAweDYwMTcsIDB4MDAwMCwgMHg3MTM0LCAweDkxOGMsCi0JMHgwMGZmLCAweDgxZmYsIDB4MDUwOCwgMHg5MTg2LCAweDAwMDEsIDB4MTE2MCwgMHg3MTQwLCAweDIwMDEsCi0JMHgxOWJlLCAweDIwMDQsIDB4OTEwNiwgMHgxMWIwLCAweDcxNDQsIDB4MjAwMSwgMHgxOWJmLCAweDIwMDQsCi0JMHg5MTA2LCAweDAxOTAsIDB4OTE4NiwgMHgwMDAyLCAweDExNjgsIDB4MjAxMSwgMHgwMjc2LCAweDIwYTksCi0JMHgwMDA0LCAweDYwMTAsIDB4MDA5NiwgMHgyMDQ4LCAweDIwMTksIDB4MDAwYSwgMHgwODBjLCAweGMzNzksCi0JMHgwMDllLCAweDAxMTAsIDB4NjAxNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk1NDcsCi0JMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHg2MDA3LCAweDAwNTAsIDB4NzAzYywgMHg2MDE2LCAweDBjYTAsCi0JMHgwMDE2LCAweDAwZTYsIDB4MjA3MSwgMHgwMjYwLCAweDAwYjYsIDB4MDBjNiwgMHgyMjYwLCAweDYwMTAsCi0JMHgyMDU4LCAweGI4Y2MsIDB4ZDA4NCwgMHgwMTUwLCAweDcxMjgsIDB4NjA0NCwgMHg5MTA2LCAweDExMjAsCi0JMHg3MTJjLCAweDYwNDgsIDB4OTEwNiwgMHgwMTEwLCAweDkwMDYsIDB4MDAxMCwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMGNlLCAweDAwYmUsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDk2LCAweDAwODYsCi0JMHgwMGU2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE4MDAsCi0JMHgyMGUxLCAweDAwMDAsIDB4MjAwMSwgMHgxOWExLCAweDIwMDMsIDB4MDAwMCwgMHgwODBjLCAweDEwMjcsCi0JMHgwNWEwLCAweDI5MDAsIDB4NjAxNiwgMHg3MDkwLCAweDgwMDQsIDB4YTgxNiwgMHg5MDhhLCAweDAwMWUsCi0JMHgwMmQwLCAweGE4MzMsIDB4MDAxZSwgMHgyMGE5LCAweDAwMWUsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMWIsIDB4MjBhMCwgMHgyMDAxLCAweDE5YTEsIDB4MDAxNiwgMHgyMDBjLCAweDA0NzEsCi0JMHgwMDFlLCAweDgxZmYsIDB4MDFiOCwgMHgyOTQwLCAweDA4MGMsIDB4MTAyNywgMHgwMWIwLCAweDI5MDAsCi0JMHhhMDA2LCAweDIxMDAsIDB4MGMxOCwgMHhhODMyLCAweDIwYTgsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMWIsIDB4MjBhMCwgMHgyMDAxLCAweDE5YTEsIDB4MDAxNiwgMHgyMDBjLCAweDAwYjEsCi0JMHgwMDFlLCAweDAwMDAsIDB4OTA4NSwgMHgwMDAxLCAweDAwNDgsIDB4MjA3MSwgMHgxODAwLCAweDcwOTMsCi0JMHgwMDAwLCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweDBmYzAsIDB4OTAwNiwgMHgwMTJlLCAweDAxZGUsCi0JMHgwMWNlLCAweDAwZWUsIDB4MDA4ZSwgMHgwMDllLCAweDAwMWUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwgMHg5MThjLCAweGZmZmYsIDB4MTFiMCwgMHgwODBjLCAweDIzZTIsCi0JMHgyMDk5LCAweDAyNmMsIDB4MjAwMSwgMHgwMDE0LCAweDM1MTgsIDB4OTMxMiwgMHgwMTA4LCAweDEyMTgsCi0JMHgyM2E4LCAweDQwMDMsIDB4MDQwMCwgMHgyMGE4LCAweDQwMDMsIDB4MjJhOCwgMHg4MTA4LCAweDA4MGMsCi0JMHgyM2UyLCAweDIwOTksIDB4MDI2MCwgMHgwY2E4LCAweDA4MGMsIDB4MjNlMiwgMHgyMDYxLCAweDE5YTEsCi0JMHg2MDA0LCAweDIwOTgsIDB4NjAwOCwgMHgzNTE4LCAweDkzMTIsIDB4MDEwOCwgMHgxMjE4LCAweDIzYTgsCi0JMHg0MDAzLCAweDAwNDgsIDB4MjBhOCwgMHg0MDAzLCAweDIyYTgsIDB4ODEwOCwgMHgwODBjLCAweDIzZTIsCi0JMHgyMDk5LCAweDAyNjAsIDB4MGNhOCwgMHgyMDYxLCAweDE5YTEsIDB4MjAxOSwgMHgwMjgwLCAweDMzMDAsCi0JMHg5MzFlLCAweDAxMTAsIDB4NjAwNiwgMHgwMDIwLCAweDIwMDEsIDB4MDI2MCwgMHg2MDA2LCAweDgxMDgsCi0JMHgyMTYyLCAweDkyOTIsIDB4MDAyMSwgMHg5Mjk2LCAweGZmZmYsIDB4NjIwYSwgMHgwMGNlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsCi0JMHgwMGM2LCAweDgxZmYsIDB4MTFiOCwgMHgwODBjLCAweDIzZmEsIDB4MjBhMSwgMHgwMjRjLCAweDIwMDEsCi0JMHgwMDE0LCAweDM1MTgsIDB4OTMxMiwgMHgxMjE4LCAweDIzYTgsIDB4NDAwMywgMHgwNDE4LCAweDIwYTgsCi0JMHg0MDAzLCAweDgyZmYsIDB4MDFmOCwgMHgyMmE4LCAweDgxMDgsIDB4MDgwYywgMHgyM2ZhLCAweDIwYTEsCi0JMHgwMjQwLCAweDBjOTgsIDB4MDgwYywgMHgyM2ZhLCAweDIwNjEsIDB4MTlhNCwgMHg2MDA0LCAweDIwYTAsCi0JMHg2MDA4LCAweDM1MTgsIDB4OTMxMiwgMHgxMjE4LCAweDIzYTgsIDB4NDAwMywgMHgwMDU4LCAweDIwYTgsCi0JMHg0MDAzLCAweDgyZmYsIDB4MDEzOCwgMHgyMmE4LCAweDgxMDgsIDB4MDgwYywgMHgyM2ZhLCAweDIwYTEsCi0JMHgwMjQwLCAweDBjOTgsIDB4MjA2MSwgMHgxOWE0LCAweDIwMTksIDB4MDI2MCwgMHgzNDAwLCAweDkzMWUsCi0JMHgwMTEwLCAweDYwMDYsIDB4MDAyMCwgMHgyMDAxLCAweDAyNDAsIDB4NjAwNiwgMHg4MTA4LCAweDIxNjIsCi0JMHg5MjkyLCAweDAwMjEsIDB4OTI5NiwgMHhmZmZmLCAweDYyMGEsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGI2LCAweDAwNjYsIDB4NjYxMCwgMHgyNjU4LCAweGJlMDQsCi0JMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5Njg2LCAweDAwMDYsIDB4MDE3MCwgMHg5Njg2LCAweDAwMDQsCi0JMHgwMTU4LCAweGJlMDQsIDB4OTZiNCwgMHgwMGZmLCAweDk2ODYsIDB4MDAwNiwgMHgwMTI4LCAweDk2ODYsCi0JMHgwMDA0LCAweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwNmUsIDB4MDBiZSwgMHgwMDA1LCAweDAwZDYsCi0JMHgwODBjLCAweGRmNjMsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDgwYywgMHhkZjcwLCAweDE1MjAsCi0JMHg2ODBjLCAweDkwOGMsIDB4ZmYwMCwgMHg2ODIwLCAweDkwODQsIDB4MDBmZiwgMHg5MTE1LCAweDYyMTYsCi0JMHg2ODI0LCAweDYwMmUsIDB4ZDFlNCwgMHgwMTMwLCAweDkwMDYsIDB4MDgwYywgMHhlZmY0LCAweDIwMDksCi0JMHgwMDAxLCAweDAwNzgsIDB4ZDFlYywgMHgwMTgwLCAweDY5MjAsIDB4OTE4YywgMHgwMGZmLCAweDY4MjQsCi0JMHgwODBjLCAweDI4NzMsIDB4MTE0OCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHhlZmY0LCAweDIxMTAsCi0JMHg5MDBlLCAweDA4MGMsIDB4MzI5OSwgMHgwMDE4LCAweDkwODUsIDB4MDAwMSwgMHgwMDA4LCAweDkwMDYsCi0JMHgwMGRlLCAweDAwMDUsIDB4MDBiNiwgMHgwMGM2LCAweDA4MGMsIDB4YjMyNSwgMHgwNWE4LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwYzYsIDB4MjAxMSwgMHgwMjYzLCAweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsCi0JMHgyODczLCAweDE1NzgsIDB4MDgwYywgMHg2NmI5LCAweDE1NjAsIDB4YmUxMiwgMHhiZDE2LCAweDAwY2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsIDB4ZWUyNiwgMHgxMWQ4LCAweDA4MGMsCi0JMHgzMzc0LCAweDExYzAsIDB4MDgwYywgMHhkZWNiLCAweDA1MTAsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsCi0JMHg2NjZhLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2OTYsIDB4NjAxNywgMHgwMDAwLCAweDYwMjMsCi0JMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMTAsIDB4MDgwYywgMHhiMmQzLCAweDkwODUsIDB4MDAwMSwgMHgwMGNlLCAweDAwYmUsCi0JMHgwMDA1LCAweDA4MGMsIDB4YjJkMywgMHgwMGNlLCAweDAwMmUsIDB4MDAxZSwgMHgwY2E4LCAweDA4MGMsCi0JMHhiMmQzLCAweDkwMDYsIDB4MGM5OCwgMHgyMDY5LCAweDAyNmQsIDB4NjgwMCwgMHg5MDgyLCAweDAwMTAsCi0JMHgxMjI4LCAweDYwMTcsIDB4MDAwMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwOCwgMHg5MDA2LCAweDAwMDUsCi0JMHg2MDE3LCAweDAwMDAsIDB4MjA2OSwgMHgwMjZjLCAweDY4MDgsIDB4OTA4NCwgMHhmZjAwLCAweDkwODYsCi0JMHgwODAwLCAweDExOTAsIDB4NjkwNCwgMHg5MTg2LCAweDAwMTgsIDB4MDExOCwgMHg5MTg2LCAweDAwMTQsCi0JMHgxMTU4LCAweDgxMGYsIDB4NjgwMCwgMHg5MDg0LCAweDAwZmYsIDB4OTEwZCwgMHg2MTVhLCAweDkwOGUsCi0JMHgwMDE0LCAweDAxMTAsIDB4OTA4ZSwgMHgwMDEwLCAweDAwMDUsIDB4NjAwNCwgMHg5MGIyLCAweDAwNTMsCi0JMHgxYTBjLCAweDBkYzUsIDB4OTFiNiwgMHgwMDEzLCAweDExMzAsIDB4MjAwOCwgMHg5MWIyLCAweDAwNDAsCi0JMHgxYTA0LCAweGUwZDIsIDB4MDQwYSwgMHg5MWI2LCAweDAwMjcsIDB4MDE5OCwgMHg5MTg2LCAweDAwMTUsCi0JMHgwMTE4LCAweDkxODYsIDB4MDAxNiwgMHgxMTQ4LCAweDA4MGMsIDB4ZDgwOSwgMHgwMTI4LCAweDYwMDAsCi0JMHg5MDg2LCAweDAwMDIsIDB4MDkwNCwgMHhiY2ZkLCAweDAwMDUsIDB4OTFiNiwgMHgwMDE0LCAweDE5MGMsCi0JMHgwZGM1LCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2OTYsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsCi0JMHhiMzA2LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweGRmZmMsIDB4ZGZmZSwgMHhkZmZjLCAweGRmZmMsCi0JMHhkZmZjLCAweGRmZmUsIDB4ZTAwZCwgMHhlMGNiLCAweGUwNTEsIDB4ZTBjYiwgMHhlMDc5LCAweGUwY2IsCi0JMHhlMDBkLCAweGUwY2IsIDB4ZTBjMywgMHhlMGNiLCAweGUwYzMsIDB4ZTBjYiwgMHhlMGNiLCAweGRmZmMsCi0JMHhkZmZjLCAweGRmZmMsIDB4ZGZmYywgMHhkZmZjLCAweGRmZmMsIDB4ZGZmYywgMHhkZmZjLCAweGRmZmMsCi0JMHhkZmZjLCAweGRmZmMsIDB4ZGZmZSwgMHhkZmZjLCAweGUwY2IsIDB4ZGZmYywgMHhkZmZjLCAweGUwY2IsCi0JMHhkZmZjLCAweGUwYzgsIDB4ZTBjYiwgMHhkZmZjLCAweGRmZmMsIDB4ZGZmYywgMHhkZmZjLCAweGUwY2IsCi0JMHhlMGNiLCAweGRmZmMsIDB4ZTBjYiwgMHhlMGNiLCAweGRmZmMsIDB4ZTAwOCwgMHhkZmZjLCAweGRmZmMsCi0JMHhkZmZjLCAweGRmZmMsIDB4ZTBjNywgMHhlMGNiLCAweGRmZmMsIDB4ZGZmYywgMHhlMGNiLCAweGUwY2IsCi0JMHhkZmZjLCAweGRmZmMsIDB4ZGZmYywgMHhkZmZjLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDk5YTUsCi0JMHgwODBjLCAweGQ3ZmIsIDB4NjAwMywgMHgwMDAyLCAweDA4MGMsIDB4OWFiMSwgMHgwODA0LCAweGUwZDEsCi0JMHg5MDA2LCAweDA4MGMsIDB4NjY1NiwgMHgwODA0LCAweGUwY2IsIDB4MDgwYywgMHg2YTliLCAweDE5MDQsCi0JMHhlMGNiLCAweDkwMDYsIDB4MDgwYywgMHg2NjU2LCAweDYwMTAsIDB4MjA1OCwgMHhiODEwLCAweDkwODYsCi0JMHgwMGZmLCAweDExNDAsIDB4MDBmNiwgMHgyMDc5LCAweDE4MDAsIDB4NzhhOCwgMHg4MDAwLCAweDc4YWEsCi0JMHgwMGZlLCAweDAwYjgsIDB4NjAxMCwgMHgyMDU4LCAweGI4YzAsIDB4OTAwNSwgMHgwOTA0LCAweGUwY2IsCi0JMHgwODBjLCAweDMzYTUsIDB4MTkwNCwgMHhlMGNiLCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwODYsCi0JMHgwMDAyLCAweDExMzgsIDB4MDBmNiwgMHgyMDc5LCAweDE4MDAsIDB4NzhhOCwgMHg4MDAwLCAweDc4YWEsCi0JMHgwMGZlLCAweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDY2NmEsIDB4MDgwYywgMHg5OWE1LCAweDYwMjMsCi0JMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MDgwYywgMHg5NTQ3LCAweDA4MGMsCi0JMHg5YWIxLCAweDYxMTAsIDB4MjE1OCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwYywgMHg4ODRiLCAweDA4MDQsCi0JMHhlMGQxLCAweDY2MTAsIDB4MjY1OCwgMHhiZTA0LCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsCi0JMHgwMDA2LCAweDAxNDgsIDB4OTY4NiwgMHgwMDA0LCAweDAxMzAsIDB4MDgwYywgMHg5MDMxLCAweDIwMDEsCi0JMHgwMDA0LCAweDA4MGMsIDB4NjY5NiwgMHgwODBjLCAweGYwNDMsIDB4MDkwNCwgMHhlMGNiLCAweDA4MGMsCi0JMHg5OWE1LCAweDIwMDEsIDB4MDAwNCwgMHgwODBjLCAweDY2NmEsIDB4NjAyMywgMHgwMDAxLCAweDYwMDMsCi0JMHgwMDAxLCAweDYwMDcsIDB4MDAwMywgMHgwODBjLCAweDk1NDcsIDB4MDgwYywgMHg5YWIxLCAweDA4MDQsCi0JMHhlMGQxLCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwODYsIDB4MDAwMywgMHgxMTU4LCAweDAwMzYsCi0JMHgwMDQ2LCAweDYwMTAsIDB4MjA1OCwgMHhiYmEwLCAweDIwMjEsIDB4MDAwNiwgMHgwODBjLCAweDRkZmIsCi0JMHgwMDRlLCAweDAwM2UsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4ZTBlZiwgMHg2NjEwLCAweDI2NTgsCi0JMHhiZTA0LCAweDAwNjYsIDB4OTZiNCwgMHhmZjAwLCAweDg2MzcsIDB4OTY4NiwgMHgwMDA2LCAweDAwNmUsCi0JMHgwMTgwLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDY2OTYsIDB4OTI4NCwgMHgwMGZmLCAweDkwOGUsCi0JMHgwMDA3LCAweDAxMTgsIDB4OTA4ZSwgMHgwMDA0LCAweDExMjAsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsCi0JMHg2NjZhLCAweDA4MGMsIDB4NmE5YiwgMHgxMWY4LCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwYTQsCi0JMHgwMWQwLCAweGJlMDQsIDB4OTZiNCwgMHgwMGZmLCAweDk2ODYsIDB4MDAwNiwgMHgwMWEwLCAweDAwZjYsCi0JMHgyMDc5LCAweDE4MDAsIDB4NzhhOCwgMHg4MDAwLCAweDc4YWEsIDB4MDBmZSwgMHgwODA0LCAweGUwMzksCi0JMHgyMDAxLCAweDAwMDQsIDB4MDAzMCwgMHgyMDAxLCAweDAwMDYsIDB4MDQ0OSwgMHgwMDIwLCAweDAwMTgsCi0JMHgwMDEwLCAweDA4MGMsIDB4NjY5NiwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4MjYwMCwgMHgwMDAyLCAweGUwZTYsIDB4ZTBlNiwgMHhlMGU2LCAweGUwZTYsCi0JMHhlMGU2LCAweGUwZTgsIDB4ZTBlNiwgMHhlMGU4LCAweGUwZTYsIDB4ZTBlNiwgMHhlMGU4LCAweGUwZTYsCi0JMHhlMGU2LCAweGUwZTYsIDB4ZTBlOCwgMHhlMGU4LCAweGUwZTgsIDB4ZTBlOCwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhiMmQzLCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwMTYsCi0JMHgwMGI2LCAweDAwZDYsIDB4NjExMCwgMHgyMTU4LCAweGI5MDAsIDB4ZDE4NCwgMHgwMTM4LCAweDA4MGMsCi0JMHg2NjZhLCAweDkwMDYsIDB4MDgwYywgMHg2NjU2LCAweDA4MGMsIDB4MzI3OSwgMHgwMGRlLCAweDAwYmUsCi0JMHgwMDFlLCAweDAwMDUsIDB4NjYxMCwgMHgyNjU4LCAweGI4MDQsIDB4OTA4NCwgMHhmZjAwLCAweDgwMDcsCi0JMHg5MGIyLCAweDAwMGMsIDB4MWEwYywgMHgwZGM1LCAweDkxYjYsIDB4MDAxNSwgMHgxMTEwLCAweDAwM2IsCi0JMHgwMDI4LCAweDkxYjYsIDB4MDAxNiwgMHgxOTBjLCAweDBkYzUsIDB4MDA2YiwgMHgwMDA1LCAweGJkOWYsCi0JMHhiZDlmLCAweGJkOWYsIDB4YmQ5ZiwgMHhlMTg0LCAweGJkOWYsIDB4ZTE2ZSwgMHhlMTJmLCAweGJkOWYsCi0JMHhiZDlmLCAweGJkOWYsIDB4YmQ5ZiwgMHhiZDlmLCAweGJkOWYsIDB4YmQ5ZiwgMHhiZDlmLCAweGUxODQsCi0JMHhiZDlmLCAweGUxNmUsIDB4ZTE3NSwgMHhiZDlmLCAweGJkOWYsIDB4YmQ5ZiwgMHhiZDlmLCAweDAwZjYsCi0JMHgwODBjLCAweDZhOWIsIDB4MTFkOCwgMHgwODBjLCAweGQ3ZTMsIDB4MTFjMCwgMHg2MDEwLCAweDkwNWQsCi0JMHgwMWE4LCAweGI4YzAsIDB4OTAwNSwgMHgwMTkwLCAweDkwMDYsIDB4MDgwYywgMHg2NjU2LCAweDIwMDEsCi0JMHgwMDAyLCAweDA4MGMsIDB4NjY2YSwgMHg2MDIzLCAweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsCi0JMHgwMDAyLCAweDA4MGMsIDB4OTU0NywgMHgwODBjLCAweDlhYjEsIDB4MDBmMCwgMHgyMDExLCAweDAyNjMsCi0JMHgyMjA0LCAweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI4NzMsIDB4MTFiMCwgMHgwODBjLCAweDY3MjQsCi0JMHgwMTE4LCAweDA4MGMsIDB4YjJkMywgMHgwMDgwLCAweGI4MTAsIDB4MDAwNiwgMHhiODE0LCAweDAwMDYsCi0JMHhiOGMwLCAweDAwMDYsIDB4MDgwYywgMHg2MTQ4LCAweDAwMGUsIDB4YjhjMiwgMHgwMDBlLCAweGI4MTYsCi0JMHgwMDBlLCAweGI4MTIsIDB4MDgwYywgMHhiMmQzLCAweDAwZmUsIDB4MDAwNSwgMHg2NjA0LCAweDk2YjYsCi0JMHgwMDFlLCAweDExMTAsIDB4MDgwYywgMHhiMmQzLCAweDAwMDUsIDB4MDgwYywgMHhjMWRjLCAweDExNDgsCi0JMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDA4MGMsIDB4OTU0NywgMHgwODBjLCAweDlhYjEsCi0JMHgwMDEwLCAweDA4MGMsIDB4YjJkMywgMHgwMDA1LCAweDA4MDQsIDB4YjJkMywgMHg2MDA0LCAweDkwOGEsCi0JMHgwMDUzLCAweDFhMGMsIDB4MGRjNSwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHhiMzA2LCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4OTE4MiwgMHgwMDQwLCAweDAwMDIsIDB4ZTFhOSwgMHhlMWE5LCAweGUxYTksCi0JMHhlMWE5LCAweGUxYWIsIDB4ZTFhOSwgMHhlMWE5LCAweGUxYTksIDB4ZTFhOSwgMHhlMWE5LCAweGUxYTksCi0JMHhlMWE5LCAweGUxYTksIDB4ZTFhOSwgMHhlMWE5LCAweGUxYTksIDB4ZTFhOSwgMHhlMWE5LCAweGUxYTksCi0JMHhlMWE5LCAweDA4MGMsIDB4MGRjNSwgMHgwMDk2LCAweDAwYjYsIDB4MDBkNiwgMHgwMGU2LCAweDAwZjYsCi0JMHgwMDQ2LCAweDAwMjYsIDB4NjIxMCwgMHgyMjU4LCAweGI4YmMsIDB4OTAwNSwgMHgxMWE4LCAweDYxMDYsCi0JMHgyMDcxLCAweDAyNjAsIDB4NzQ0NCwgMHg5NGE0LCAweGZmMDAsIDB4MDkwNCwgMHhlMjExLCAweDA4MGMsCi0JMHhlZmU4LCAweDExNzAsIDB4OTQ4NiwgMHgyMDAwLCAweDExNTgsIDB4MjAwOSwgMHgwMDAxLCAweDIwMTEsCi0JMHgwMjAwLCAweDA4MGMsIDB4OGE1MCwgMHgwMDIwLCAweDkwMjYsIDB4MDgwYywgMHhlZTZiLCAweDBjMzgsCi0JMHgwODBjLCAweDEwMGUsIDB4MDkwYywgMHgwZGM1LCAweDYwMDMsIDB4MDAwNywgMHhhODY3LCAweDAxMGQsCi0JMHg5MDA2LCAweGE4MDIsIDB4YTg2YSwgMHhhYzhhLCAweDJjMDAsIDB4YTg4ZSwgMHg2MDA4LCAweGE4ZTIsCi0JMHg2MDEwLCAweDIwNTgsIDB4YjhhMCwgMHg3MTMwLCAweGE5N2EsIDB4MDAxNiwgMHhhODc2LCAweGE4N2YsCi0JMHgwMDAwLCAweGE4ODMsIDB4MDAwMCwgMHhhODg3LCAweDAwMzYsIDB4MDgwYywgMHg2ZTlmLCAweDAwMWUsCi0JMHgwODBjLCAweGVmZTgsIDB4MTkwNCwgMHhlMjcxLCAweDk0ODYsIDB4MjAwMCwgMHgxMTMwLCAweDIwMTksCi0JMHgwMDE3LCAweDA4MGMsIDB4ZWJhMSwgMHgwODA0LCAweGUyNzEsIDB4OTQ4NiwgMHgwMjAwLCAweDExMjAsCi0JMHgwODBjLCAweGViMzgsIDB4MDgwNCwgMHhlMjcxLCAweDk0ODYsIDB4MDQwMCwgMHgwMTIwLCAweDk0ODYsCi0JMHgxMDAwLCAweDE5MDQsIDB4ZTI3MSwgMHgyMDE5LCAweDAwMDIsIDB4MDgwYywgMHhlYjUzLCAweDA4MDQsCi0JMHhlMjcxLCAweDIwNjksIDB4MWE3NCwgMHg2YTAwLCAweGQyODQsIDB4MDkwNCwgMHhlMmRiLCAweDkyODQsCi0JMHgwMzAwLCAweDE5MDQsIDB4ZTJkNCwgMHg2ODA0LCAweDkwMDUsIDB4MDkwNCwgMHhlMmJjLCAweDJkNzgsCi0JMHg2MDAzLCAweDAwMDcsIDB4MDgwYywgMHgxMDI3LCAweDA5MDQsIDB4ZTI3ZCwgMHg3ODAwLCAweGQwOGMsCi0JMHgxMTE4LCAweDc4MDQsIDB4ODAwMSwgMHg3ODA2LCAweDYwMTcsIDB4MDAwMCwgMHgyMDAxLCAweDE4MGYsCi0JMHgyMDA0LCAweGQwODQsIDB4MTkwNCwgMHhlMmRmLCAweDkwMDYsIDB4YTgwMiwgMHhhODY3LCAweDAxMTYsCi0JMHhhODZhLCAweDYwMDgsIDB4YThlMiwgMHgyYzAwLCAweGE4N2EsIDB4NjAxMCwgMHgyMDU4LCAweGI4YTAsCi0JMHg3MTMwLCAweGE5YjYsIDB4YTg3NiwgMHhiOTI4LCAweGE5YmEsIDB4YjkyYywgMHhhOWJlLCAweGI5MzAsCi0JMHhhOWMyLCAweGI5MzQsIDB4YTljNiwgMHhhODgzLCAweDAwM2QsIDB4NzA0NCwgMHg5MDg0LCAweDAwMDMsCi0JMHg5MDgwLCAweGUyNzksIDB4MjAwNSwgMHhhODdlLCAweDIwYTksIDB4MDAwYSwgMHgyMDAxLCAweDAyNzAsCi0JMHhhYTVjLCAweDkyOTAsIDB4MDAyMSwgMHgyMDA5LCAweDAyMDUsIDB4MjAwYiwgMHgwMDgwLCAweDIwZTEsCi0JMHgwMDAwLCAweGFiNjAsIDB4MjNlOCwgMHgyMDk4LCAweDIyYTAsIDB4NDAwMywgMHgyMDBiLCAweDAwMDAsCi0JMHgyMDAxLCAweDAyN2EsIDB4MjAwYywgMHhhOWIyLCAweDgwMDAsIDB4MjAwYywgMHhhOWFlLCAweDA4MGMsCi0JMHg2ZTlmLCAweDAwMmUsIDB4MDA0ZSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGJlLCAweDAwOWUsCi0JMHgwMDA1LCAweDAwMDAsIDB4MDA4MCwgMHgwMDQwLCAweDAwMDAsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsCi0JMHhkMDg0LCAweDAxMjAsIDB4MDgwYywgMHgxMDBlLCAweDE5MDQsIDB4ZTIyNiwgMHg2MDE3LCAweGYxMDAsCi0JMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDQxLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsCi0JMHgwYzAwLCAweDIwNjksIDB4MDI2MCwgMHg2ODQ4LCAweDkwODQsIDB4ZmYwMCwgMHg5MDg2LCAweDEyMDAsCi0JMHgxMTk4LCAweDY4NmMsIDB4OTA4NCwgMHgwMGZmLCAweDAwMTYsIDB4NjExNCwgMHg5MThjLCAweGY3MDAsCi0JMHg5MTBkLCAweDYxMTYsIDB4MDAxZSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDQzLCAweDA4MGMsCi0JMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwODI4LCAweDY4NjgsIDB4NjAyZSwgMHg2ODZjLCAweDYwMzIsCi0JMHg2MDE3LCAweGYyMDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA0MSwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MDgwNCwgMHhlMjcxLCAweDIwMDEsIDB4MTgwZSwgMHgyMDA0LCAweGQwZWMsCi0JMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwgMHgwODBjLCAweDRjNDQsIDB4NjAxNywgMHhmMzAwLCAweDAwMTAsCi0JMHg2MDE3LCAweGYxMDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA0MSwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MDgwNCwgMHhlMjcxLCAweDYwMTcsIDB4ZjUwMCwgMHgwYzk4LCAweDYwMTcsCi0JMHhmNjAwLCAweDA4MDQsIDB4ZTI5MSwgMHg2MDE3LCAweGYyMDAsIDB4MDgwNCwgMHhlMjkxLCAweGE4NjcsCi0JMHgwMTQ2LCAweGE4NmIsIDB4MDAwMCwgMHg2MDA4LCAweGE4ODYsIDB4MmMwMCwgMHhhODdhLCAweDcwNDQsCi0JMHg5MDg0LCAweDAwMDMsIDB4OTA4MCwgMHhlMjc5LCAweDIwMDUsIDB4YTg3ZSwgMHgyOTI4LCAweDYwMTAsCi0JMHgyMDU4LCAweGI4YTAsIDB4YTg3NiwgMHhiODI4LCAweGE4OGEsIDB4YjgyYywgMHhhODhlLCAweGI4MzAsCi0JMHhhODkyLCAweGI4MzQsIDB4YTg5NiwgMHhhODgzLCAweDAwM2QsIDB4MjAwOSwgMHgwMjA1LCAweDIxMDQsCi0JMHg5MDg1LCAweDAwODAsIDB4MjAwYSwgMHgyMGUxLCAweDAwMDAsIDB4MjAxMSwgMHgwMjEwLCAweDIyMTQsCi0JMHg5Mjk0LCAweDBmZmYsIDB4YWFhMiwgMHg5MjgyLCAweDAxMTEsIDB4MWEwYywgMHgwZGM1LCAweDgyMTAsCi0JMHg4MjFjLCAweDIwMDEsIDB4MDI2YywgMHgyMDk4LCAweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsCi0JMHgwMDI5LCAweDIwYTAsIDB4MjAxMSwgMHhlMzViLCAweDIwNDEsIDB4MDAwMSwgMHgyMjNkLCAweDk3ODQsCi0JMHgwMGZmLCAweDkzMjIsIDB4MTIwOCwgMHgyMzAwLCAweDIwYTgsIDB4NDAwMywgMHg5MzFhLCAweDA1MzAsCi0JMHg4MjEwLCAweGQ3ZmMsIDB4MTEzMCwgMHg4ZDY4LCAweDJkMGEsIDB4MjAwMSwgMHgwMjYwLCAweDIwOTgsCi0JMHgwYzY4LCAweDI5NTAsIDB4MDgwYywgMHgxMDI3LCAweDAxNzAsIDB4MjkwMCwgMHhiMDAyLCAweGE4NjcsCi0JMHgwMTQ3LCAweGE4NmIsIDB4MDAwMCwgMHhhODYwLCAweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMWIsCi0JMHgyMGEwLCAweDg4NDAsIDB4MDhkOCwgMHgyNTQ4LCAweGE4MDAsIDB4OTAyZCwgMHgwMTE4LCAweDA4MGMsCi0JMHgxMDQwLCAweDBjYzgsIDB4MDgwYywgMHgxMDQwLCAweDA4MDQsIDB4ZTI3ZCwgMHgyNTQ4LCAweDg4NDcsCi0JMHg5ODg1LCAweDAwNDYsIDB4YTg2NiwgMHgyMDA5LCAweDAyMDUsIDB4MjAwYiwgMHgwMDAwLCAweDA4MGMsCi0JMHhlYmQ0LCAweDA4MDQsIDB4ZTI3MSwgMHg4MDEwLCAweDAwMDQsIDB4ODAxYSwgMHgwMDA2LCAweDgwMTgsCi0JMHgwMDA4LCAweDgwMTYsIDB4MDAwYSwgMHg4MDE0LCAweDkxODYsIDB4MDAxMywgMHgxMTYwLCAweDYwMDQsCi0JMHg5MDhhLCAweDAwNTQsIDB4MWEwYywgMHgwZGM1LCAweDkwODIsIDB4MDA0MCwgMHgwYTBjLCAweDBkYzUsCi0JMHgyMDA4LCAweDA4MDQsIDB4ZTNlYSwgMHg5MTg2LCAweDAwNTEsIDB4MDEwOCwgMHgwMDQ4LCAweDA4MGMsCi0JMHhkODA5LCAweDA1MDAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDIsIDB4MTFlMCwgMHgwODA0LCAweGU0MzMsCi0JMHg5MTg2LCAweDAwMjcsIDB4MDE5MCwgMHg5MTg2LCAweDAwNDgsIDB4MDEyOCwgMHg5MTg2LCAweDAwMTQsCi0JMHgwMTYwLCAweDE5MGMsIDB4MGRjNSwgMHgwODBjLCAweGQ4MDksIDB4MDE2MCwgMHg2MDAwLCAweDkwODYsCi0JMHgwMDA0LCAweDE5MGMsIDB4MGRjNSwgMHgwODA0LCAweGU1MTYsIDB4NjAwNCwgMHg5MDgyLCAweDAwNDAsCi0JMHgyMDA4LCAweDAwMWEsIDB4MDgwYywgMHhiMzZkLCAweDAwMDUsIDB4ZTNiMSwgMHhlM2IzLCAweGUzYjMsCi0JMHhlM2RhLCAweGUzYjEsIDB4ZTNiMSwgMHhlM2IxLCAweGUzYjEsIDB4ZTNiMSwgMHhlM2IxLCAweGUzYjEsCi0JMHhlM2IxLCAweGUzYjEsIDB4ZTNiMSwgMHhlM2IxLCAweGUzYjEsIDB4ZTNiMSwgMHhlM2IxLCAweGUzYjEsCi0JMHhlM2IxLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHg5YWIxLCAweDAwMzYsCi0JMHgwMDk2LCAweDYwMTQsIDB4OTA0ZCwgMHgwMWQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMWMwLCAweDYwMDMsCi0JMHgwMDAyLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDExNzgsCi0JMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHhlYmQ0LCAweDYwMTcsIDB4MDAwMCwgMHg2MDE4LCAweDkwMDUsCi0JMHgxMTIwLCAweDIwMDEsIDB4MTk4NywgMHgyMDA0LCAweDYwMWEsIDB4NjAwMywgMHgwMDA3LCAweDAwOWUsCi0JMHgwMDNlLCAweDAwMDUsIDB4MDA5NiwgMHgwODBjLCAweDk5YTUsIDB4MDgwYywgMHg5YWIxLCAweDA4MGMsCi0JMHhkMGQ4LCAweDAxMjAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4MTA0MCwgMHgwODBjLCAweGIzMDYsCi0JMHgwMDllLCAweDAwMDUsIDB4MDAwMiwgMHhlM2ZmLCAweGU0MTYsIDB4ZTQwMSwgMHhlNDJkLCAweGUzZmYsCi0JMHhlM2ZmLCAweGUzZmYsIDB4ZTNmZiwgMHhlM2ZmLCAweGUzZmYsIDB4ZTNmZiwgMHhlM2ZmLCAweGUzZmYsCi0JMHhlM2ZmLCAweGUzZmYsIDB4ZTNmZiwgMHhlM2ZmLCAweGUzZmYsIDB4ZTNmZiwgMHhlM2ZmLCAweDA4MGMsCi0JMHgwZGM1LCAweDAwOTYsIDB4MDgwYywgMHg5OWE1LCAweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweGQwYjQsCi0JMHgwMTM4LCAweDYwMDMsIDB4MDAwNywgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywgMHhiMzUyLCAweDAwMTAsCi0JMHg2MDAzLCAweDAwMDQsIDB4MDgwYywgMHg5YWIxLCAweDAwOWUsIDB4MDAwNSwgMHgwODBjLCAweDk5YTUsCi0JMHgwODBjLCAweGQwZDgsIDB4MDEzOCwgMHg2MTE0LCAweDAwOTYsIDB4MjE0OCwgMHhhOTdjLCAweDAwOWUsCi0JMHhkMWVjLCAweDExMzgsIDB4MDgwYywgMHg4YTI1LCAweDA4MGMsIDB4YjJkMywgMHgwODBjLCAweDlhYjEsCi0JMHgwMDA1LCAweDA4MGMsIDB4ZWUyZiwgMHgwZGIwLCAweDBjYzgsIDB4MDgwYywgMHg5OWE1LCAweDIwMDksCi0JMHgwMDQxLCAweDA4MDQsIDB4ZTU5ZSwgMHg5MTgyLCAweDAwNDAsIDB4MDAwMiwgMHhlNDRhLCAweGU0NGMsCi0JMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsCi0JMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGQsCi0JMHhlNDRhLCAweGU0NGEsIDB4MDgwYywgMHgwZGM1LCAweDAwMDUsIDB4MDBkNiwgMHgwODBjLCAweDhhMjUsCi0JMHgwMGRlLCAweDA4MGMsIDB4ZWU4NywgMHgwODBjLCAweGIyZDMsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMDAyLCAweGU0NmQsIDB4ZTQ2ZCwgMHhlNDZkLCAweGU0NmQsIDB4ZTQ2ZCwgMHhlNDZkLCAweGU0NmQsCi0JMHhlNDZkLCAweGU0NmQsIDB4ZTQ2ZiwgMHhlNGRlLCAweGU0NmQsIDB4ZTQ2ZCwgMHhlNDZkLCAweGU0NmQsCi0JMHhlNGRlLCAweGU0NmQsIDB4ZTQ2ZCwgMHhlNDZkLCAweGU0NmQsIDB4MDgwYywgMHgwZGM1LCAweDIwMDEsCi0JMHgwMTA1LCAweDIwMDQsIDB4OTA4NCwgMHgxODAwLCAweDAxYzgsIDB4MjAwMSwgMHgwMTMyLCAweDIwMGMsCi0JMHgyMDAxLCAweDAxMzEsIDB4MjAwNCwgMHg5MTA1LCAweDE5MDQsIDB4ZTRkZSwgMHgyMDA5LCAweDE4MGMsCi0JMHgyMTA0LCAweGQwZDQsIDB4MDkwNCwgMHhlNGRlLCAweGMwZDQsIDB4MjAwYSwgMHgyMDA5LCAweDAxMDUsCi0JMHgyMTA0LCAweDkwODQsIDB4ZTdmZCwgMHg5MDg1LCAweDAwMTAsIDB4MjAwYSwgMHgyMDAxLCAweDE4NjcsCi0JMHgyMDA0LCAweGQwZTQsIDB4MTUyOCwgMHg2MDNiLCAweDAwMDAsIDB4MDgwYywgMHg5YTYxLCAweDYwMTQsCi0JMHgwMDk2LCAweDIwNDgsIDB4YTg3YywgMHhkMGZjLCAweDAxODgsIDB4OTA4YywgMHgwMDAzLCAweDkxOGUsCi0JMHgwMDAyLCAweDA1MDgsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsIDB4ZDBkNCwgMHgxMWUwLCAweDA4MGMsCi0JMHg5YmQzLCAweDIwMDksIDB4MDA0MSwgMHgwMDllLCAweDA4MDQsIDB4ZTU5ZSwgMHgwODBjLCAweDliZDMsCi0JMHg2MDAzLCAweDAwMDcsIDB4NjAxYiwgMHgwMDAwLCAweDA4MGMsIDB4OGEyNSwgMHgwMDllLCAweDAwMDUsCi0JMHgyMDAxLCAweDAxMDAsIDB4MjAwNCwgMHg5MDgyLCAweDAwMDUsIDB4MGFhOCwgMHgyMDAxLCAweDAxMWYsCi0JMHgyMDA0LCAweDYwM2EsIDB4MDg5MCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHhjMWQ0LCAweDIxMDIsCi0JMHhkMWNjLCAweDAxMTAsIDB4MDgwYywgMHgyYzdiLCAweDA4MGMsIDB4OWJkMywgMHg2MDE0LCAweDIwNDgsCi0JMHhhOTdjLCAweGQxZWMsIDB4MTEzMCwgMHgwODBjLCAweDhhMjUsIDB4MDgwYywgMHhiMmQzLCAweDAwOWUsCi0JMHgwMDA1LCAweDA4MGMsIDB4ZWUyZiwgMHgwZGI4LCAweDAwOWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MGMsCi0JMHgyMDBjLCAweGMxZDQsIDB4MjEwMiwgMHgwMDM2LCAweDA4MGMsIDB4OWE2MSwgMHgwODBjLCAweDliZDMsCi0JMHg2MDE0LCAweDAwOTYsIDB4MjA0OCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsCi0JMHhkMGJjLCAweDAxODgsIDB4YTg3YywgMHg5MDg0LCAweDAwMDMsIDB4OTA4NiwgMHgwMDAyLCAweDAxNDAsCi0JMHhhOGFjLCAweDYzMzAsIDB4OTMxYSwgMHg2MzMyLCAweGE4YjAsIDB4NjMyYywgMHg5MzFiLCAweDYzMmUsCi0JMHg2MDAzLCAweDAwMDIsIDB4MDA4MCwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHhlYmQ0LCAweDYwMTgsCi0JMHg5MDA1LCAweDExMjgsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsIDB4ODAwMywgMHg2MDFhLCAweDYwMTcsCi0JMHgwMDAwLCAweDYwMDMsIDB4MDAwNywgMHgwMDllLCAweDAwM2UsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMDAyLCAweGU1MmQsIDB4ZTUyZCwgMHhlNTJkLCAweGU1MmQsIDB4ZTUyZCwgMHhlNTJkLCAweGU1MmQsCi0JMHhlNTJkLCAweGU1MmYsIDB4ZTUyZCwgMHhlNTJkLCAweGU1MmQsIDB4ZTUyZCwgMHhlNTJkLCAweGU1MmQsCi0JMHhlNTJkLCAweGU1MmQsIDB4ZTUyZCwgMHhlNTJkLCAweGU1N2EsIDB4MDgwYywgMHgwZGM1LCAweDYwMTQsCi0JMHgwMDk2LCAweDIwNDgsIDB4YTgzNCwgMHhhYTM4LCAweDYxMTAsIDB4MDBiNiwgMHgyMTU4LCAweGI5MDAsCi0JMHgwMGJlLCAweGQxYmMsIDB4MTE5MCwgMHg5MjBkLCAweDE1MTgsIDB4YTg3YywgMHhkMGZjLCAweDAxMjgsCi0JMHgyMDA5LCAweDAwNDEsIDB4MDA5ZSwgMHgwODA0LCAweGU1OWUsIDB4NjAwMywgMHgwMDA3LCAweDYwMWIsCi0JMHgwMDAwLCAweDA4MGMsIDB4OGEyNSwgMHgwMDllLCAweDAwMDUsIDB4NjEyNCwgMHhkMWY0LCAweDFkNTgsCi0JMHgwMDA2LCAweDAwNDYsIDB4YWNhYywgMHg5NDIyLCAweGE5YjAsIDB4MjIwMCwgMHg5MTBiLCAweDYwMzAsCi0JMHg5NDIwLCAweDY0MzIsIDB4NjAyYywgMHg5MTA5LCAweDYxMmUsIDB4MDA0ZSwgMHgwMDBlLCAweDA4ZDgsCi0JMHg2MTEwLCAweDAwYjYsIDB4MjE1OCwgMHhiOTAwLCAweDAwYmUsIDB4ZDFiYywgMHgxMTc4LCAweDIwMDksCi0JMHgxODBlLCAweDIxMGMsIDB4ZDE5YywgMHgwMTE4LCAweDYwMDMsIDB4MDAwNywgMHgwMDEwLCAweDYwMDMsCi0JMHgwMDA2LCAweDAwZTksIDB4MDgwYywgMHg4YTI3LCAweDAwOWUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDIsCi0JMHgwMDllLCAweDAwMDUsIDB4NjAyNCwgMHhkMGY0LCAweDAxMjgsIDB4MDgwYywgMHgxNjA4LCAweDE5MDQsCi0JMHhlNTJmLCAweDAwMDUsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTgzNCwgMHhhOTM4LCAweDAwOWUsCi0JMHg5MTA1LCAweDExMjAsIDB4MDgwYywgMHgxNjA4LCAweDE5MDQsIDB4ZTUyZiwgMHgwMDA1LCAweGQyZmMsCi0JMHgwMTQwLCAweDgwMDIsIDB4ODAwMCwgMHg4MjEyLCAweDkyOTEsIDB4MDAwMCwgMHgyMDA5LCAweDAwMDksCi0JMHgwMDEwLCAweDIwMDksIDB4MDAxNSwgMHhhYTlhLCAweGE4OTYsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsCi0JMHgwMjA4LCAweDAwNjIsIDB4OTE4NiwgMHgwMDEzLCAweDAxMjAsIDB4OTE4NiwgMHgwMDE0LCAweDE5MGMsCi0JMHgwZGM1LCAweDYwMjQsIDB4ZDBkYywgMHgwOTBjLCAweDBkYzUsIDB4MDAwNSwgMHhlNWMyLCAweGU1Y2UsCi0JMHhlNWRhLCAweGU1ZTYsIDB4ZTVjMiwgMHhlNWMyLCAweGU1YzIsIDB4ZTVjMiwgMHhlNWM5LCAweGU1YzQsCi0JMHhlNWM0LCAweGU1YzIsIDB4ZTVjMiwgMHhlNWMyLCAweGU1YzIsIDB4ZTVjNCwgMHhlNWMyLCAweGU1YzQsCi0JMHhlNWMyLCAweGU1YzksIDB4MDgwYywgMHgwZGM1LCAweDYwMjQsIDB4ZDBkYywgMHgwOTBjLCAweDBkYzUsCi0JMHgwMDA1LCAweDYwMTQsIDB4OTAwNSwgMHgxOTBjLCAweDBkYzUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDEsCi0JMHg2MTA2LCAweDA4MGMsIDB4OTRmZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDlhYjEsCi0JMHgwMTJlLCAweDAwMDUsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4MDgwYywgMHg5NGZmLCAweDAxMjYsCi0JMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg5YWIxLCAweDAxMmUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDMsCi0JMHg2MTA2LCAweDJjMTAsIDB4MDgwYywgMHgxYmUwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsCi0JMHg5NTY0LCAweDA4MGMsIDB4OWJkMywgMHgwMTJlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwMDM2LCAweDAwOTYsIDB4OTE4MiwgMHgwMDQwLCAweDAwMjMsIDB4MDA5ZSwgMHgwMDNlLCAweDAxMmUsCi0JMHgwMDA1LCAweGU2MTUsIDB4ZTYxNywgMHhlNjI5LCAweGU2NDMsIDB4ZTYxNSwgMHhlNjE1LCAweGU2MTUsCi0JMHhlNjE1LCAweGU2MTUsIDB4ZTYxNSwgMHhlNjE1LCAweGU2MTUsIDB4ZTYxNSwgMHhlNjE1LCAweGU2MTUsCi0JMHhlNjE1LCAweGU2MTUsIDB4ZTYxNSwgMHhlNjE1LCAweGU2MTUsIDB4MDgwYywgMHgwZGM1LCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4N2MsIDB4ZDBmYywgMHgwMWY4LCAweDkwOWMsIDB4MDAwMywgMHg5MzllLCAweDAwMDMsCi0JMHgwMWQwLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsCi0JMHgwNDcwLCAweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MDE2OCwgMHg5MDljLCAweDAwMDMsCi0JMHg5MzllLCAweDAwMDMsIDB4MDE0MCwgMHg2MDAzLCAweDAwMDEsIDB4NjEwNiwgMHgwODBjLCAweDk0ZmYsCi0JMHgwODBjLCAweDlhYjEsIDB4MDBlMCwgMHg5MDFlLCAweDYzMTYsIDB4NjMxYSwgMHgyMDE5LCAweDAwMDQsCi0JMHgwODBjLCAweGViZDQsIDB4MDBhMCwgMHg2MDE0LCAweDIwNDgsIDB4YTg3YywgMHhkMGZjLCAweDBkOTgsCi0JMHg5MDljLCAweDAwMDMsIDB4OTM5ZSwgMHgwMDAzLCAweDBkNzAsIDB4NjAwMywgMHgwMDAzLCAweDYxMDYsCi0JMHgyYzEwLCAweDA4MGMsIDB4MWJlMCwgMHgwODBjLCAweDk1NjQsIDB4MDgwYywgMHg5YmQzLCAweDAwMDUsCi0JMHgwODBjLCAweDk5YTUsIDB4NjExNCwgMHg4MWZmLCAweDAxNTgsIDB4MDA5NiwgMHgyMTQ4LCAweDA4MGMsCi0JMHhlZjg1LCAweDAwMzYsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4ZWJkNCwgMHgwMDNlLCAweDAwOWUsCi0JMHgwODBjLCAweGIzMDYsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsIDB4MDgwYywgMHg5YTYxLCAweDYxMTQsCi0JMHg4MWZmLCAweDAxNTgsIDB4MDA5NiwgMHgyMTQ4LCAweDA4MGMsIDB4ZWY4NSwgMHgwMDM2LCAweDIwMTksCi0JMHgwMDI5LCAweDA4MGMsIDB4ZWJkNCwgMHgwMDNlLCAweDAwOWUsIDB4MDgwYywgMHhiMzA2LCAweDA4MGMsCi0JMHg5YmQzLCAweDAwMDUsIDB4OTE4MiwgMHgwMDg1LCAweDAwMDIsIDB4ZTY5NCwgMHhlNjkyLCAweGU2OTIsCi0JMHhlNmEwLCAweGU2OTIsIDB4ZTY5MiwgMHhlNjkyLCAweGU2OTIsIDB4ZTY5MiwgMHhlNjkyLCAweGU2OTIsCi0JMHhlNjkyLCAweGU2OTIsIDB4MDgwYywgMHgwZGM1LCAweDYwMDMsIDB4MDAwYiwgMHg2MTA2LCAweDA4MGMsCi0JMHg5NGZmLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OWFiMSwgMHgwMTJlLCAweDAwMDUsCi0JMHgwMDI2LCAweDAwZTYsIDB4MDgwYywgMHhlZTI2LCAweDAxMTgsIDB4MDgwYywgMHhiMmQzLCAweDA0NTAsCi0JMHgyMDcxLCAweDAyNjAsIDB4NzIyNCwgMHg2MjE2LCAweDIwMDEsIDB4MTgwZSwgMHgyMDA0LCAweGQwZTQsCi0JMHgwMTUwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGJjYTAsIDB4MDBiZSwgMHgyYzAwLCAweDIwMTEsCi0JMHgwMTRlLCAweDA4MGMsIDB4YjVmNSwgMHg3MjIwLCAweDA4MGMsIDB4ZWEyOSwgMHgwMTE4LCAweDYwMDcsCi0JMHgwMDg2LCAweDAwNDAsIDB4NjAwNywgMHgwMDg3LCAweDcyMjQsIDB4OTI5NiwgMHhmZmZmLCAweDExMTAsCi0JMHg2MDA3LCAweDAwODYsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsCi0JMHgwODBjLCAweDliZDMsIDB4MDBlZSwgMHgwMDJlLCAweDAwMDUsIDB4OTE4NiwgMHgwMDEzLCAweDExNjAsCi0JMHg2MDA0LCAweDkwOGEsIDB4MDA4NSwgMHgwYTBjLCAweDBkYzUsIDB4OTA4YSwgMHgwMDkyLCAweDFhMGMsCi0JMHgwZGM1LCAweDkwODIsIDB4MDA4NSwgMHgwMGEyLCAweDkxODYsIDB4MDAyNywgMHgwMTMwLCAweDkxODYsCi0JMHgwMDE0LCAweDAxMTgsIDB4MDgwYywgMHhiMzZkLCAweDAwNTAsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsCi0JMHg2Njk2LCAweDA4MGMsIDB4OTlhNSwgMHgwODBjLCAweGIzMDYsIDB4MDgwYywgMHg5YWIxLCAweDAwMDUsCi0JMHhlNzA1LCAweGU3MDcsIDB4ZTcwNywgMHhlNzA1LCAweGU3MDUsIDB4ZTcwNSwgMHhlNzA1LCAweGU3MDUsCi0JMHhlNzA1LCAweGU3MDUsIDB4ZTcwNSwgMHhlNzA1LCAweGU3MDUsIDB4MDgwYywgMHgwZGM1LCAweDA4MGMsCi0JMHg5OWE1LCAweDA4MGMsIDB4YjMwNiwgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHg5MTgyLCAweDAwODUsCi0JMHgwYTBjLCAweDBkYzUsIDB4OTE4MiwgMHgwMDkyLCAweDFhMGMsIDB4MGRjNSwgMHg5MTgyLCAweDAwODUsCi0JMHgwMDAyLCAweGU3MjYsIDB4ZTcyNiwgMHhlNzI2LCAweGU3MjgsIDB4ZTcyNiwgMHhlNzI2LCAweGU3MjYsCi0JMHhlNzI2LCAweGU3MjYsIDB4ZTcyNiwgMHhlNzI2LCAweGU3MjYsIDB4ZTcyNiwgMHgwODBjLCAweDBkYzUsCi0JMHgwMDA1LCAweDkxODYsIDB4MDAxMywgMHgwMTQ4LCAweDkxODYsIDB4MDAxNCwgMHgwMTMwLCAweDkxODYsCi0JMHgwMDI3LCAweDAxMTgsIDB4MDgwYywgMHhiMzZkLCAweDAwMzAsIDB4MDgwYywgMHg5OWE1LCAweDA4MGMsCi0JMHhiMzA2LCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwMzYsIDB4MDgwYywgMHhlZTg3LCAweDYwNDMsCi0JMHgwMDAwLCAweDIwMTksIDB4MDAwYiwgMHgwMDExLCAweDAwM2UsIDB4MDAwNSwgMHg2MDEwLCAweDAwMDYsCi0JMHgwMDU5LCAweDAwMGUsIDB4NjAxMiwgMHg2MDIzLCAweDAwMDYsIDB4NjAwMywgMHgwMDA3LCAweDYwMWIsCi0JMHgwMDAwLCAweDYwNDMsIDB4MDAwMCwgMHgwMDA1LCAweDAxMjYsIDB4MDAzNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgwMDg2LCAweDJjNDAsIDB4MDA5NiwgMHg5MDRlLCAweDA4MGMsIDB4YWFmYiwgMHgwMDllLCAweDAwOGUsCi0JMHgxNTUwLCAweDAwNzYsIDB4MmMzOCwgMHgwODBjLCAweGFiYTYsIDB4MDA3ZSwgMHgxNTIwLCAweDYwMDAsCi0JMHg5MDg2LCAweDAwMDAsIDB4MDUwMCwgMHg2MDIwLCAweDkwODYsIDB4MDAwNywgMHgwMWUwLCAweDAwOTYsCi0JMHg2MDFjLCAweGQwODQsIDB4MDE0MCwgMHgwODBjLCAweGVlODcsIDB4MDgwYywgMHhkN2ZiLCAweDA4MGMsCi0JMHgxYThlLCAweDYwMjMsIDB4MDAwNywgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhkMGQ4LCAweDAxMTAsCi0JMHgwODBjLCAweGViZDQsIDB4MDA5ZSwgMHg2MDE3LCAweDAwMDAsIDB4MDgwYywgMHhlZTg3LCAweDYwMjMsCi0JMHgwMDA3LCAweDA4MGMsIDB4ZDdmYiwgMHgwMDNlLCAweDAxMmUsIDB4MDAwNSwgMHgwMGY2LCAweDAwYzYsCi0JMHgwMGI2LCAweDAwMzYsIDB4MDE1NiwgMHgyMDc5LCAweDAyNjAsIDB4NzkzOCwgMHg3ODNjLCAweDA4MGMsCi0JMHgyODczLCAweDE5MDQsIDB4ZTdlNCwgMHgwMDE2LCAweDAwYzYsIDB4MDgwYywgMHg2NzI0LCAweDE5MDQsCi0JMHhlN2UyLCAweDAwMWUsIDB4MDBjNiwgMHgwODBjLCAweGQ3ZTMsIDB4MTEzMCwgMHhiOGMwLCAweDkwMDUsCi0JMHgwMTE4LCAweDA4MGMsIDB4MzNhNSwgMHgwMTQ4LCAweDJiMTAsIDB4MjE2MCwgMHg2MDEwLCAweDAwMDYsCi0JMHg2MjEyLCAweDA4MGMsIDB4ZDdlYSwgMHgwMDBlLCAweDYwMTIsIDB4MDBjZSwgMHgwMDJlLCAweDAwMjYsCi0JMHgwMDE2LCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweGFjNmMsIDB4MDgwYywgMHg5NmE0LCAweDAwNzYsCi0JMHg5MDNlLCAweDA4MGMsIDB4OTU3NywgMHgwMDdlLCAweDAwMWUsIDB4MDA3NiwgMHg5MDNlLCAweDA4MGMsCi0JMHhlOTFjLCAweDAwN2UsIDB4MDAyNiwgMHhiYTA0LCAweDkyOTQsIDB4ZmYwMCwgMHg4MjE3LCAweDkyODYsCi0JMHgwMDA2LCAweDAxMTgsIDB4OTI4NiwgMHgwMDA0LCAweDExMTgsIDB4YmFhMCwgMHgwODBjLCAweDMzMGUsCi0JMHgwMDJlLCAweGJjYzAsIDB4MDAxZSwgMHgwODBjLCAweDYxNDgsIDB4YmUxMiwgMHhiZDE2LCAweGJjYzIsCi0JMHg5MDA2LCAweDAwMTAsIDB4MDBjZSwgMHgwMDFlLCAweDAxNWUsIDB4MDAzZSwgMHgwMGJlLCAweDAwY2UsCi0JMHgwMGZlLCAweDAwMDUsIDB4MDBjNiwgMHgwMGQ2LCAweDAwYjYsIDB4MDAxNiwgMHgyMDA5LCAweDE4MjQsCi0JMHgyMTA0LCAweDkwODYsIDB4MDA3NCwgMHgxOTA0LCAweGU4NDMsIDB4MjA2OSwgMHgwMjYwLCAweDY5NDQsCi0JMHg5MTgyLCAweDAxMDAsIDB4MDZlMCwgMHg2OTQwLCAweDkxODQsIDB4ODAwMCwgMHgwOTA0LCAweGU4NDAsCi0JMHgyMDAxLCAweDE5N2MsIDB4MjAwNCwgMHg5MDA1LCAweDExNDAsIDB4NjAxMCwgMHgyMDU4LCAweGI4YzAsCi0JMHg5MDA1LCAweDAxMTgsIDB4OTE4NCwgMHgwODAwLCAweDA1OTgsIDB4Njk0OCwgMHg5MThhLCAweDAwMDEsCi0JMHgwNjQ4LCAweDA4MGMsIDB4ZWZlZCwgMHgwMTE4LCAweDY5NzgsIDB4ZDFmYywgMHgxMWI4LCAweDIwMDksCi0JMHgwMjA1LCAweDIwMGIsIDB4MDAwMSwgMHg2OTNjLCAweDgxZmYsIDB4MTE5OCwgMHg2OTQ0LCAweDkxODIsCi0JMHgwMTAwLCAweDAyYTgsIDB4Njk0MCwgMHg4MWZmLCAweDExNzgsIDB4Njk0OCwgMHg5MThhLCAweDAwMDEsCi0JMHgwMjg4LCAweDY5NTAsIDB4OTE4YSwgMHgwMDAxLCAweDAyOTgsIDB4MDBkMCwgMHg2MDE3LCAweDAxMDAsCi0JMHgwMGEwLCAweDYwMTcsIDB4MDMwMCwgMHgwMDg4LCAweDYwMTcsIDB4MDUwMCwgMHgwMDcwLCAweDYwMTcsCi0JMHgwNzAwLCAweDAwNTgsIDB4NjAxNywgMHgwOTAwLCAweDAwNDAsIDB4NjAxNywgMHgwYjAwLCAweDAwMjgsCi0JMHg2MDE3LCAweDBmMDAsIDB4MDAxMCwgMHg2MDE3LCAweDJkMDAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsCi0JMHg5MDA2LCAweDAwMWUsIDB4MDBiZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwYjYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDE1NiwgMHg2MjEwLCAweDIyNTgsIDB4YmIwNCwgMHg5Mzk0LCAweDAwZmYsCi0JMHg5Mjg2LCAweDAwMDYsIDB4MDE4MCwgMHg5Mjg2LCAweDAwMDQsIDB4MDE2OCwgMHg5Mzk0LCAweGZmMDAsCi0JMHg4MjE3LCAweDkyODYsIDB4MDAwNiwgMHgwMTM4LCAweDkyODYsIDB4MDAwNCwgMHgwMTIwLCAweDA4MGMsCi0JMHg2NzMzLCAweDA4MDQsIDB4ZThhYiwgMHgyMDExLCAweDAyNzYsIDB4MjBhOSwgMHgwMDA0LCAweDAwOTYsCi0JMHgyYjQ4LCAweDIwMTksIDB4MDAwYSwgMHgwODBjLCAweGMzNzksIDB4MDA5ZSwgMHgxNWE4LCAweDIwMTEsCi0JMHgwMjdhLCAweDIwYTksIDB4MDAwNCwgMHgwMDk2LCAweDJiNDgsIDB4MjAxOSwgMHgwMDA2LCAweDA4MGMsCi0JMHhjMzc5LCAweDAwOWUsIDB4MTU0OCwgMHgwMDQ2LCAweDAwMTYsIDB4YmFhMCwgMHgyMjIwLCAweDkwMDYsCi0JMHgyMDA5LCAweDE4NDgsIDB4MjEwYywgMHhkMWE0LCAweDAxMzgsIDB4MjAwOSwgMHgwMDI5LCAweDA4MGMsCi0JMHhlYzMxLCAweGI4MDAsIDB4YzBlNSwgMHhiODAyLCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk2YTQsCi0JMHgwMDc2LCAweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDk1NzcsIDB4MmMwOCwgMHgwODBjLCAweGU5MWMsCi0JMHgwMDdlLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2OTYsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsCi0JMHg2NjZhLCAweDAwMWUsIDB4MDA0ZSwgMHg5MDA2LCAweDAxNWUsIDB4MDAzZSwgMHgwMDJlLCAweDAwYmUsCi0JMHgwMGNlLCAweDAwMDUsIDB4MDBkNiwgMHgyMDY5LCAweDAyNmUsIDB4NjgwMCwgMHg5MDg2LCAweDA4MDAsCi0JMHgwMTE4LCAweDYwMTcsIDB4MDAwMCwgMHgwMDA4LCAweDkwMDYsIDB4MDBkZSwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMGY2LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAxNTYsIDB4MjA3OSwgMHgwMjZjLCAweDc5MzAsCi0JMHg3ODM0LCAweDA4MGMsIDB4Mjg3MywgMHgxMWQwLCAweDA4MGMsIDB4NjcyNCwgMHgxMWI4LCAweDIwMTEsCi0JMHgwMjcwLCAweDIwYTksIDB4MDAwNCwgMHgwMDk2LCAweDJiNDgsIDB4MjAxOSwgMHgwMDBhLCAweDA4MGMsCi0JMHhjMzc5LCAweDAwOWUsIDB4MTE1OCwgMHgyMDExLCAweDAyNzQsIDB4MjBhOSwgMHgwMDA0LCAweDAwOTYsCi0JMHgyYjQ4LCAweDIwMTksIDB4MDAwNiwgMHgwODBjLCAweGMzNzksIDB4MDA5ZSwgMHgwMTVlLCAweDAwM2UsCi0JMHgwMDJlLCAweDAwMWUsIDB4MDBmZSwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgwMDA2LCAweDAwMTYsCi0JMHgwMDI2LCAweDAwMzYsIDB4MDE1NiwgMHgyMDExLCAweDAyNjMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsCi0JMHgwODBjLCAweDI4NzMsIDB4MTFkMCwgMHgwODBjLCAweDY3MjQsIDB4MTFiOCwgMHgyMDExLCAweDAyNzYsCi0JMHgyMGE5LCAweDAwMDQsIDB4MDA5NiwgMHgyYjQ4LCAweDIwMTksIDB4MDAwYSwgMHgwODBjLCAweGMzNzksCi0JMHgwMDllLCAweDExNTgsIDB4MjAxMSwgMHgwMjdhLCAweDIwYTksIDB4MDAwNCwgMHgwMDk2LCAweDJiNDgsCi0JMHgyMDE5LCAweDAwMDYsIDB4MDgwYywgMHhjMzc5LCAweDAwOWUsIDB4MDE1ZSwgMHgwMDNlLCAweDAwMmUsCi0JMHgwMDFlLCAweDAwMGUsIDB4MDBiZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBjNiwgMHgwMDg2LCAweDAwNzYsCi0JMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDI2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDI3NDAsCi0JMHgyMDI5LCAweDE5ZjEsIDB4MjUyYywgMHgyMDIxLCAweDE5ZjcsIDB4MjQyNCwgMHgyMDYxLCAweDFjZDAsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzY1NCwgMHg3MDc0LCAweDgxZmYsIDB4MDE1MCwgMHgwMDA2LCAweDkxODYsCi0JMHgxYWI3LCAweDAwMGUsIDB4MDEyOCwgMHg4MDAxLCAweDk2MDIsIDB4MWEwNCwgMHhlOWJhLCAweDAwMTgsCi0JMHg5NjA2LCAweDA5MDQsIDB4ZTliYSwgMHgwODBjLCAweDhjZjcsIDB4MDkwNCwgMHhlOWIxLCAweDIxMDAsCi0JMHg5YzA2LCAweDA5MDQsIDB4ZTliMSwgMHg2NzIwLCAweDk3ODYsIDB4MDAwNywgMHgwOTA0LCAweGU5YjEsCi0JMHgwODBjLCAweGVjNzIsIDB4MTkwNCwgMHhlOWIxLCAweDA4MGMsIDB4ZjAwYiwgMHgwOTA0LCAweGU5YjEsCi0JMHgwODBjLCAweGVjNjIsIDB4MDkwNCwgMHhlOWIxLCAweDY3MjAsIDB4OTc4NiwgMHgwMDAxLCAweDExNDgsCi0JMHgwODBjLCAweDMzYTUsIDB4MDkwNCwgMHhlOWY5LCAweDYwMDQsIDB4OTA4NiwgMHgwMDAwLCAweDE5MDQsCi0JMHhlOWY5LCAweDk3ODYsIDB4MDAwNCwgMHgwOTA0LCAweGU5ZjksIDB4MjUwMCwgMHg5YzA2LCAweDA5MDQsCi0JMHhlOWIxLCAweDI0MDAsIDB4OWMwNiwgMHgwNWU4LCAweDg4ZmYsIDB4MDExOCwgMHg2MDU0LCAweDk5MDYsCi0JMHgxNWMwLCAweDAwOTYsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDQsIDB4MTEyMCwgMHgwMDE2LCAweDA4MGMsCi0JMHgxYThlLCAweDAwMWUsIDB4OTc4NiwgMHgwMDBhLCAweDAxNDgsIDB4MDgwYywgMHhkMmUwLCAweDExMzAsCi0JMHgwODBjLCAweGJjYjYsIDB4MDA5ZSwgMHgwODBjLCAweGIzMDYsIDB4MDQxOCwgMHg2MDE0LCAweDIwNDgsCi0JMHgwODBjLCAweGQwZDgsIDB4MDFkOCwgMHg5Nzg2LCAweDAwMDMsIDB4MTU3MCwgMHhhODY3LCAweDAxMDMsCi0JMHhhODdjLCAweGQwY2MsIDB4MDEzMCwgMHgwMDk2LCAweGE4NzgsIDB4MjA0OCwgMHgwODBjLCAweDBmYzAsCi0JMHgwMDllLCAweGFiN2EsIDB4YTg3NywgMHgwMDAwLCAweDA4MGMsIDB4ZWY4NSwgMHgwMDE2LCAweDA4MGMsCi0JMHhkM2NlLCAweDA4MGMsIDB4NmU5MiwgMHgwMDFlLCAweDA4MGMsIDB4ZDJjMywgMHgwMDllLCAweDA4MGMsCi0JMHhiMzA2LCAweDljZTAsIDB4MDAxOCwgMHgyMDAxLCAweDE4MWEsIDB4MjAwNCwgMHg5YzAyLCAweDEyMTAsCi0JMHgwODA0LCAweGU5MzAsIDB4MDEyZSwgMHgwMDJlLCAweDAwNGUsIDB4MDA1ZSwgMHgwMDZlLCAweDAwN2UsCi0JMHgwMDhlLCAweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDk3ODYsIDB4MDAwNiwgMHgxMTUwLCAweDkzODYsCi0JMHgwMDA1LCAweDAxMjgsIDB4MDgwYywgMHhlZjg1LCAweDA4MGMsIDB4ZWJkNCwgMHgwOGY4LCAweDAwOWUsCi0JMHgwYzAwLCAweDk3ODYsIDB4MDAwOSwgMHgxMWY4LCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDAxYzAsCi0JMHg2MDAwLCAweDkwODYsIDB4MDAwMywgMHgxMWEwLCAweDA4MGMsIDB4OWE2MSwgMHgwMDk2LCAweDYxMTQsCi0JMHgyMTQ4LCAweDA4MGMsIDB4ZDBkOCwgMHgwMTE4LCAweDYwMTAsIDB4MDgwYywgMHg2ZTlmLCAweDAwOWUsCi0JMHgwMGM2LCAweDA4MGMsIDB4YjJkMywgMHgwMGNlLCAweDAwMzYsIDB4MDgwYywgMHg5YmQzLCAweDAwM2UsCi0JMHgwMDllLCAweDA4MDQsIDB4ZTliMSwgMHg5Nzg2LCAweDAwMGEsIDB4MDkwNCwgMHhlOWExLCAweDA4MDQsCi0JMHhlOTk2LCAweDgxZmYsIDB4MDkwNCwgMHhlOWIxLCAweDkxODAsIDB4MDAwMSwgMHgyMDA0LCAweDkwODYsCi0JMHgwMDE4LCAweDAxMzgsIDB4OTE4MCwgMHgwMDAxLCAweDIwMDQsIDB4OTA4NiwgMHgwMDJkLCAweDE5MDQsCi0JMHhlOWIxLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAyLCAweDE5MDQsIDB4ZTliMSwgMHgwODBjLCAweGQyY2YsCi0JMHgwMTM4LCAweDA4MGMsIDB4ZDJlMCwgMHgxOTA0LCAweGU5YjEsIDB4MDgwYywgMHhiY2I2LCAweDAwMzgsCi0JMHgwODBjLCAweDMyNzksIDB4MDgwYywgMHhkMmUwLCAweDExMTAsIDB4MDgwYywgMHhiY2I2LCAweDA4MGMsCi0JMHhiMzA2LCAweDA4MDQsIDB4ZTliMSwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMzksCi0JMHgwMDA1LCAweDAwYzYsIDB4MDBlNiwgMHgwMDE2LCAweDJjMDgsIDB4MjE3MCwgMHg5MDA2LCAweDA4MGMsCi0JMHhlYmZiLCAweDAwMWUsIDB4MDEyMCwgMHg2MDIwLCAweDkwODQsIDB4MDAwZiwgMHgwMDFiLCAweDAwZWUsCi0JMHgwMGNlLCAweDAwMDUsIDB4ZWE0OCwgMHhlYTQ4LCAweGVhNDgsIDB4ZWE0OCwgMHhlYTQ4LCAweGVhNDgsCi0JMHhlYTRhLCAweGVhNDgsIDB4ZWE0OCwgMHhlYTQ4LCAweGVhNzMsIDB4YjMwNiwgMHhiMzA2LCAweGVhNDgsCi0JMHg5MDA2LCAweDAwMDUsIDB4MDAzNiwgMHgwMDQ2LCAweDAwMTYsIDB4NzAxMCwgMHgwMGI2LCAweDIwNTgsCi0JMHhiY2EwLCAweDAwYmUsIDB4MmMwMCwgMHgyMDA5LCAweDAwMjAsIDB4MDgwYywgMHhlYzMxLCAweDAwMWUsCi0JMHgwMDRlLCAweDIwMTksIDB4MDAwMiwgMHgwODBjLCAweGU3NTQsIDB4MDAzZSwgMHg5MDg1LCAweDAwMDEsCi0JMHgwMDA1LCAweDAwOTYsIDB4MDgwYywgMHhkMGQ4LCAweDAxNDAsIDB4NjAxNCwgMHg5MDRkLCAweDA4MGMsCi0JMHhjY2YzLCAweDY4N2IsIDB4MDAwNSwgMHgwODBjLCAweDZlOWYsIDB4MDA5ZSwgMHgwODBjLCAweGIzMDYsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMDE5LCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDYwMDAsCi0JMHg5MDhhLCAweDAwMTAsIDB4MWEwYywgMHgwZGM1LCAweDAwMGIsIDB4MDAwNSwgMHhlYThlLCAweGVhOGUsCi0JMHhlYWE1LCAweGVhOTUsIDB4ZWFiNCwgMHhlYThlLCAweGVhOGUsIDB4ZWE5MCwgMHhlYThlLCAweGVhOGUsCi0JMHhlYThlLCAweGVhOGUsIDB4ZWE4ZSwgMHhlYThlLCAweGVhOGUsIDB4ZWE4ZSwgMHgwODBjLCAweDBkYzUsCi0JMHgwODBjLCAweGIzMDYsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDAzNiwgMHgwMGU2LCAweDIwNzEsCi0JMHgxOWU4LCAweDcwM2MsIDB4OWMwNiwgMHgxMTI4LCAweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweGFhNDksCi0JMHgwMDEwLCAweDA4MGMsIDB4YWMyYiwgMHgwMGVlLCAweDAwM2UsIDB4MDA5NiwgMHgwMGQ2LCAweDYwMTQsCi0JMHgyMDQ4LCAweGE4N2IsIDB4MDAwNSwgMHgwODBjLCAweDZlOWYsIDB4MDgwYywgMHhiMzA2LCAweDAwZGUsCi0JMHgwMDllLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDYwMWMsIDB4ZDA4NCwgMHgxOTBjLCAweDFhOGUsCi0JMHgwYzYwLCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDY2NTYsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsCi0JMHgwMDM2LCAweDIwYTksIDB4MDAwNCwgMHgyMDE5LCAweDE4MDUsIDB4MjAxMSwgMHgwMjc2LCAweDA4MGMsCi0JMHhjMzY1LCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAxNWUsIDB4OTAwNSwgMHgwMDA1LCAweDAwZjYsCi0JMHgwMGU2LCAweDAwYzYsIDB4MDA4NiwgMHgwMDc2LCAweDAwNjYsIDB4MDBiNiwgMHgwMTI2LCAweDIwOTEsCi0JMHg4MDAwLCAweDI3NDAsIDB4MjA2MSwgMHgxY2QwLCAweDIwNzksIDB4MDAwMSwgMHg4ZmZmLCAweDA5MDQsCi0JMHhlYjJiLCAweDIwNzEsIDB4MTgwMCwgMHg3NjU0LCAweDcwNzQsIDB4ODAwMSwgMHg5NjAyLCAweDFhMDQsCi0JMHhlYjJiLCAweDg4ZmYsIDB4MDEyMCwgMHgyODAwLCAweDljMDYsIDB4MTVhMCwgMHgyMDc4LCAweDA4MGMsCi0JMHhlYzYyLCAweDA1ODAsIDB4MjQwMCwgMHg5YzA2LCAweDA1NjgsIDB4NjcyMCwgMHg5Nzg2LCAweDAwMDYsCi0JMHgxNTQ4LCAweDk3ODYsIDB4MDAwNywgMHgwNTMwLCAweDg4ZmYsIDB4MTE1MCwgMHhkNThjLCAweDExMTgsCi0JMHg2MDEwLCAweDliMDYsIDB4MTFmOCwgMHhkNTg0LCAweDAxMTgsIDB4NjA1NCwgMHg5MTA2LCAweDExZDAsCi0JMHgwMDk2LCAweDYwMWMsIDB4ZDA4NCwgMHgwMTQwLCAweDA4MGMsIDB4ZWU4NywgMHgwODBjLCAweGQ3ZmIsCi0JMHgwODBjLCAweDFhOGUsIDB4NjAyMywgMHgwMDA3LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGQwZDgsCi0JMHgwMTIwLCAweDAwNDYsIDB4MDgwYywgMHhlYmQ0LCAweDAwNGUsIDB4MDA5ZSwgMHgwODBjLCAweGIzMDYsCi0JMHg4OGZmLCAweDExOTgsIDB4OWNlMCwgMHgwMDE4LCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsCi0JMHgxMjEwLCAweDA4MDQsIDB4ZWFkZSwgMHg5MDA2LCAweDAxMmUsIDB4MDBiZSwgMHgwMDZlLCAweDAwN2UsCi0JMHgwMDhlLCAweDAwY2UsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4OThjNSwgMHgwMDAxLCAweDBjYTAsCi0JMHgwMGI2LCAweDAwNzYsIDB4MDA1NiwgMHgwMDg2LCAweDkwNDYsIDB4MjAyOSwgMHgwMDAxLCAweDJjMjAsCi0JMHgyMDE5LCAweDAwMDIsIDB4NjIxMCwgMHgyMjU4LCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGFhZmIsCi0JMHgwMDllLCAweDAwOGUsIDB4OTAzZSwgMHgwODBjLCAweGFiYTYsIDB4MDgwYywgMHhlYWNmLCAweDAwNWUsCi0JMHgwMDdlLCAweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAwNDYsIDB4MDA1NiwgMHgwMDc2LCAweDAwYzYsCi0JMHgwMTU2LCAweDJjMjAsIDB4MjEyOCwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwMDE2LCAweDAwMzYsCi0JMHgwODBjLCAweDY3MjQsIDB4MTE4MCwgMHgwMDU2LCAweDAwODYsIDB4OTA0NiwgMHgyNTA4LCAweDIwMjksCi0JMHgwMDAxLCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGFhZmIsIDB4MDA5ZSwgMHgwMDhlLCAweDkwM2UsCi0JMHgwODBjLCAweGFiYTYsIDB4MDA1ZSwgMHgwMDNlLCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweGViNWUsCi0JMHgwMDM2LCAweDI1MDgsIDB4MjAyOSwgMHgwMDAzLCAweDA4MGMsIDB4ZWFjZiwgMHgwMDNlLCAweDAxNWUsCi0JMHgwMGNlLCAweDAwN2UsIDB4MDA1ZSwgMHgwMDRlLCAweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAwNzYsCi0JMHgwMDU2LCAweDYyMTAsIDB4MjI1OCwgMHgwMDg2LCAweDkwNDYsIDB4MjAyOSwgMHgwMDAxLCAweDIwMTksCi0JMHgwMDQ4LCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGFhZmIsIDB4MDA5ZSwgMHgwMDhlLCAweDkwM2UsCi0JMHgwODBjLCAweGFiYTYsIDB4MmMyMCwgMHgwODBjLCAweGVhY2YsIDB4MDA1ZSwgMHgwMDdlLCAweDAwYmUsCi0JMHgwMDA1LCAweDAwYjYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNzYsIDB4MDBjNiwgMHgwMTU2LCAweDJjMjAsCi0JMHgyMGE5LCAweDA4MDAsIDB4OTAwZSwgMHgwMDE2LCAweDAwMzYsIDB4MDgwYywgMHg2NzI0LCAweDExOTAsCi0JMHgwMDg2LCAweDkwNDYsIDB4MjgyOCwgMHgwMDQ2LCAweDIwMjEsIDB4MDAwMSwgMHgwODBjLCAweGVlNmIsCi0JMHgwMDRlLCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGFhZmIsIDB4MDA5ZSwgMHgwMDhlLCAweDkwM2UsCi0JMHgwODBjLCAweGFiYTYsIDB4MDAzZSwgMHgwMDFlLCAweDgxMDgsIDB4MWYwNCwgMHhlYmFiLCAweDAwMzYsCi0JMHgyMDI5LCAweDAwMDIsIDB4MDgwYywgMHhlYWNmLCAweDAwM2UsIDB4MDE1ZSwgMHgwMGNlLCAweDAwN2UsCi0JMHgwMDVlLCAweDAwNGUsIDB4MDBiZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBmNiwgMHgwODBjLCAweGQwZDYsCi0JMHgwMTk4LCAweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDA0NiwgMHgwMTgwLCAweGE4MDAsCi0JMHg5MDdkLCAweDAxMzgsIDB4YTgwMywgMHgwMDAwLCAweGFiODIsIDB4MDgwYywgMHg2ZTlmLCAweDJmNDgsCi0JMHgwY2IwLCAweGFiODIsIDB4MDgwYywgMHg2ZTlmLCAweDAwZmUsIDB4MDAxZSwgMHgwMDA1LCAweGE4MDAsCi0JMHg5MDdkLCAweDAxMzAsIDB4YTgwMywgMHgwMDAwLCAweDA4MGMsIDB4NmU5ZiwgMHgyZjQ4LCAweDBjYjgsCi0JMHgwODBjLCAweDZlOWYsIDB4MGM4OCwgMHgwMGU2LCAweDAwNDYsIDB4MDAzNiwgMHgyMDYxLCAweDFjZDAsCi0JMHg5MDA1LCAweDExMzgsIDB4MjA3MSwgMHgxODAwLCAweDc0NTQsIDB4NzA3NCwgMHg4MDAxLCAweDk0MDIsCi0JMHgxMmY4LCAweDIxMDAsIDB4OWMwNiwgMHgwMTg4LCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNjgsCi0JMHg2MDA4LCAweDkyMDYsIDB4MTE1MCwgMHg2MzIwLCAweDkzODYsIDB4MDAwOSwgMHgwMWIwLCAweDYwMTAsCi0JMHg5MWEwLCAweDAwMDQsIDB4MjQyNCwgMHg5NDA2LCAweDAxNDAsIDB4OWNlMCwgMHgwMDE4LCAweDIwMDEsCi0JMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgxMjIwLCAweDBjMjAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsCi0JMHg5MDA2LCAweDAwM2UsIDB4MDA0ZSwgMHgwMGVlLCAweDAwMDUsIDB4NjMxYywgMHhkM2M0LCAweDFkNjgsCi0JMHgwYzMwLCAweDAwOTYsIDB4MDAwNiwgMHgwODBjLCAweDEwMGUsIDB4MDAwZSwgMHgwOTBjLCAweDBkYzUsCi0JMHhhYWUyLCAweGE4NjcsIDB4MDEwZCwgMHhhODhlLCAweDAwMjYsIDB4MjAxMCwgMHgwODBjLCAweGQwYzYsCi0JMHgyMDAxLCAweDAwMDAsIDB4MDEyMCwgMHgyMjAwLCAweDkwODAsIDB4MDAxNSwgMHgyMDA0LCAweDAwMmUsCi0JMHhhODdhLCAweDkxODYsIDB4MDAyMCwgMHgwMTEwLCAweGE4ZTMsIDB4ZmZmZiwgMHhhOTg2LCAweGFjNzYsCi0JMHhhODdmLCAweDAwMDAsIDB4MjAwMSwgMHgxOThlLCAweDIwMDQsIDB4YTg4MiwgMHg5MDA2LCAweGE4MDIsCi0JMHhhODZhLCAweGE4OGEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg2ZTlmLCAweDAxMmUsCi0JMHgwMDllLCAweDAwMDUsIDB4NjcwMCwgMHg5Nzg2LCAweDAwMDAsIDB4MDE1OCwgMHg5Nzg2LCAweDAwMDEsCi0JMHgwMTQwLCAweDk3ODYsIDB4MDAwYSwgMHgwMTI4LCAweDk3ODYsIDB4MDAwOSwgMHgwMTEwLCAweDkwODUsCi0JMHgwMDAxLCAweDAwMDUsIDB4MDBlNiwgMHg2MDEwLCAweDkwNzUsIDB4MDEzOCwgMHgwMGI2LCAweDIwNTgsCi0JMHhiOGEwLCAweDAwYmUsIDB4OTIwNiwgMHgwMGVlLCAweDAwMDUsIDB4OTA4NSwgMHgwMDAxLCAweDBjZDgsCi0JMHgwMDE2LCAweDYwMDQsIDB4OTA4ZSwgMHgwMDFlLCAweDExYTAsIDB4ODAwNywgMHg2MTM0LCAweDkxOGMsCi0JMHgwMGZmLCAweDkxMDUsIDB4NjAzNiwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsCi0JMHgwMDA1LCAweDIwMDEsIDB4MTk4NywgMHgyMDA0LCAweDYwMWEsIDB4MDgwYywgMHg5NGZmLCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMWUsIDB4MDAwNSwgMHhhMDAxLCAweGEwMDEsIDB4MDAwNSwgMHg2MDI0LCAweGQwZTQsCi0JMHgwMTU4LCAweGQwY2MsIDB4MDExOCwgMHgwODBjLCAweGQ0MTIsIDB4MDAzMCwgMHgwODBjLCAweGVlODcsCi0JMHgwODBjLCAweDhhMjUsIDB4MDgwYywgMHhiMmQzLCAweDAwMDUsIDB4OTI4MCwgMHgwMDA4LCAweDIwMDQsCi0JMHg5MDg0LCAweDAwMGYsIDB4MDAwMiwgMHhlY2MxLCAweGVjYzEsIDB4ZWNjMSwgMHhlY2MzLCAweGVjYzEsCi0JMHhlY2MzLCAweGVjYzMsIDB4ZWNjMSwgMHhlY2MzLCAweGVjYzEsIDB4ZWNjMSwgMHhlY2MxLCAweGVjYzEsCi0JMHhlY2MxLCAweDkwMDYsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHg5MjgwLCAweDAwMDgsCi0JMHgyMDA0LCAweDkwODQsIDB4MDAwZiwgMHgwMDAyLCAweGVjZGEsIDB4ZWNkYSwgMHhlY2RhLCAweGVjZGEsCi0JMHhlY2RhLCAweGVjZGEsIDB4ZWNlNywgMHhlY2RhLCAweGVjZGEsIDB4ZWNkYSwgMHhlY2RhLCAweGVjZGEsCi0JMHhlY2RhLCAweGVjZGEsIDB4NjAwNywgMHgwMDNiLCAweDYwMmYsIDB4MDAwOSwgMHg2MDE3LCAweDJhMDAsCi0JMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwMDA1LCAweDAwOTYsCi0JMHgwMGM2LCAweDIyNjAsIDB4MDgwYywgMHhlZTg3LCAweDYwNDMsIDB4MDAwMCwgMHg2MDI0LCAweGMwZjQsCi0JMHhjMGU0LCAweDYwMjYsIDB4NjAzYiwgMHgwMDAwLCAweDAwY2UsIDB4MDBkNiwgMHgyMjY4LCAweDkxODYsCi0JMHgwMDA3LCAweDE5MDQsIDB4ZWQ0MCwgMHg2ODE0LCAweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4N2MsCi0JMHhkMGZjLCAweDExMTgsIDB4MDBkZSwgMHgwMDllLCAweDA4YTgsIDB4NjAwNywgMHgwMDNhLCAweDYwMDMsCi0JMHgwMDAxLCAweDA4MGMsIDB4OTRmZiwgMHgwODBjLCAweDlhYjEsIDB4MDBjNiwgMHgyZDYwLCAweDYxMDAsCi0JMHg5MTg2LCAweDAwMDIsIDB4MTkwNCwgMHhlZGIwLCAweDYwMTQsIDB4OTAwNSwgMHgxMTM4LCAweDYwMDAsCi0JMHg5MDg2LCAweDAwMDcsIDB4MTkwYywgMHgwZGM1LCAweDA4MDQsIDB4ZWRiMCwgMHgyMDQ4LCAweDA4MGMsCi0JMHhkMGQ4LCAweDExMzAsIDB4MDAyOCwgMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwgMHgxZGUwLCAweDI5MDAsCi0JMHgyMDQ4LCAweGE4N2MsIDB4OTA4NCwgMHgwMDAzLCAweDkwODYsIDB4MDAwMiwgMHgxMTY4LCAweGE4N2MsCi0JMHhjMGRjLCAweGMwZjQsIDB4YTg3ZSwgMHhhODgwLCAweGMwZmMsIDB4YTg4MiwgMHgyMDA5LCAweDAwNDMsCi0JMHgwODBjLCAweGU1OWUsIDB4MDgwNCwgMHhlZGIwLCAweDIwMDksIDB4MDA0MSwgMHgwODA0LCAweGVkYWEsCi0JMHg5MTg2LCAweDAwMDUsIDB4MTVhMCwgMHg2ODE0LCAweDIwNDgsIDB4YTg3YywgMHhkMGJjLCAweDExMjAsCi0JMHgwMGRlLCAweDAwOWUsIDB4MDgwNCwgMHhlY2RhLCAweGQwYjQsIDB4MDEyOCwgMHhkMGZjLCAweDA5MGMsCi0JMHgwZGM1LCAweDA4MDQsIDB4ZWNmYiwgMHg2MDA3LCAweDAwM2EsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsCi0JMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgwMGM2LCAweDJkNjAsIDB4NjEwMCwgMHg5MTg2LCAweDAwMDIsCi0JMHgwMTIwLCAweDkxODYsIDB4MDAwNCwgMHgxOTA0LCAweGVkYjAsIDB4NjgxNCwgMHgyMDQ4LCAweGE5N2MsCi0JMHhjMWY0LCAweGMxZGMsIDB4YTk3ZSwgMHhhOTgwLCAweGMxZmMsIDB4YzFiYywgMHhhOTgyLCAweDAwZjYsCi0JMHgyYzc4LCAweDA4MGMsIDB4MTc2OCwgMHgwMGZlLCAweDIwMDksIDB4MDA0MiwgMHgwNDk4LCAweDAwMzYsCi0JMHgwODBjLCAweDEwMGUsIDB4MDkwYywgMHgwZGM1LCAweGE4NjcsIDB4MDEwZCwgMHg5MDA2LCAweGE4MDIsCi0JMHhhODZhLCAweGE4OGEsIDB4MmQxOCwgMHhhYjhlLCAweGE4ODcsIDB4MDA0NSwgMHgyYzAwLCAweGE4OTIsCi0JMHg2MDM4LCAweGE4YTIsIDB4MjM2MCwgMHg2MDI0LCAweGMwZGQsIDB4NjAyNiwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI4YTAsIDB4MDBiZSwgMHgyMDA0LCAweDYzNTQsIDB4YWI3YSwgMHhhODc2LCAweDkwMDYsCi0JMHhhODdlLCAweGE4ODIsIDB4YWQ5YSwgMHhhZTk2LCAweGE4OWYsIDB4MDAwMSwgMHgwODBjLCAweDZlOWYsCi0JMHgyMDE5LCAweDAwNDUsIDB4NjAwOCwgMHgyMDY4LCAweDA4MGMsIDB4ZTc0NiwgMHgyZDAwLCAweDYwMGEsCi0JMHgwMDNlLCAweDAwMzgsIDB4NjA0MywgMHgwMDAwLCAweDYwMDMsIDB4MDAwNywgMHgwODBjLCAweGU1OWUsCi0JMHgwMGNlLCAweDAwZGUsIDB4MDA5ZSwgMHgwMDA1LCAweDkxODYsIDB4MDAxMywgMHgxMTI4LCAweDYwMDQsCi0JMHg5MDgyLCAweDAwODUsIDB4MjAwOCwgMHgwMGMyLCAweDkxODYsIDB4MDAyNywgMHgxMTc4LCAweDA4MGMsCi0JMHg5OWE1LCAweDAwMzYsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsCi0JMHhlYmQ0LCAweDAwOWUsIDB4MDAzZSwgMHgwODBjLCAweDlhYjEsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTQsCi0JMHgwZDcwLCAweDA4MGMsIDB4YjM2ZCwgMHgwMDA1LCAweGVkZTMsIDB4ZWRlMSwgMHhlZGUxLCAweGVkZTEsCi0JMHhlZGUxLCAweGVkZTEsIDB4ZWRlMywgMHhlZGUxLCAweGVkZTEsIDB4ZWRlMSwgMHhlZGUxLCAweGVkZTEsCi0JMHhlZGUxLCAweDA4MGMsIDB4MGRjNSwgMHgwODBjLCAweDk5YTUsIDB4NjAwMywgMHgwMDBjLCAweDA4MGMsCi0JMHg5YWIxLCAweDAwMDUsIDB4OTE4MiwgMHgwMDkyLCAweDEyMjAsIDB4OTE4MiwgMHgwMDg1LCAweDAyMDgsCi0JMHgwMDFhLCAweDA4MGMsIDB4YjM2ZCwgMHgwMDA1LCAweGVlMDEsIDB4ZWUwMSwgMHhlZTAxLCAweGVlMDEsCi0JMHhlZTAzLCAweGVlMjMsIDB4ZWUwMSwgMHhlZTAxLCAweGVlMDEsIDB4ZWUwMSwgMHhlZTAxLCAweGVlMDEsCi0JMHhlZTAxLCAweDA4MGMsIDB4MGRjNSwgMHgwMGQ2LCAweDJjNjgsIDB4MDgwYywgMHhiMjdkLCAweDAxYjAsCi0JMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDFlLCAweDIwMDksIDB4MDI2ZSwgMHgyMTBjLCAweDYxM2EsCi0JMHgyMDA5LCAweDAyNmYsIDB4MjEwYywgMHg2MTNlLCAweDYwMGIsIDB4ZmZmZiwgMHg2OTEwLCAweDYxMTIsCi0JMHg2MDIzLCAweDAwMDQsIDB4MDgwYywgMHg5NGZmLCAweDA4MGMsIDB4OWFiMSwgMHgyZDYwLCAweDA4MGMsCi0JMHhiMmQzLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweGIyZDMsIDB4MDAwNSwgMHgwMGU2LCAweDYwMTAsCi0JMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwZWMsIDB4MDBlZSwgMHgwMDA1LCAweDIwMDksCi0JMHgxODY3LCAweDIxMGMsIDB4ZDFlYywgMHgwNWIwLCAweDYwMDMsIDB4MDAwMiwgMHg2MDI0LCAweGMwZTUsCi0JMHg2MDI2LCAweGQwY2MsIDB4MDE1MCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2MDQyLCAweDIwMDksCi0JMHgxODY3LCAweDIxMGMsIDB4ZDFmNCwgMHgxNTIwLCAweDAwYTAsIDB4MjAwOSwgMHgxODY3LCAweDIxMGMsCi0JMHhkMWY0LCAweDAxMjgsIDB4NjAyNCwgMHhjMGU0LCAweDYwMjYsIDB4OTAwNiwgMHgwMGQ4LCAweDIwMDEsCi0JMHgxOTg4LCAweDIwMGMsIDB4MjAwMSwgMHgxOTg2LCAweDIwMDQsIDB4OTEwMCwgMHg5MDgwLCAweDAwMGEsCi0JMHg2MDQyLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YmMsIDB4MDBiZSwgMHgwMDA4LCAweDIxMDQsCi0JMHg5MDA1LCAweDAxMTgsIDB4OTA4OCwgMHgwMDAzLCAweDBjZDAsIDB4MmMwYSwgMHg2MDBmLCAweDAwMDAsCi0JMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMDE2LCAweDAwYzYsIDB4MDBlNiwgMHg2MTU0LCAweGI4YmMsCi0JMHgyMDYwLCAweDhjZmYsIDB4MDE4MCwgMHg4NGZmLCAweDExMTgsIDB4NjA1NCwgMHg5MTA2LCAweDExMzgsCi0JMHg2MDBjLCAweDIwNzIsIDB4MDgwYywgMHg4YTI1LCAweDA4MGMsIDB4YjJkMywgMHgwMDEwLCAweDljZjAsCi0JMHgwMDAzLCAweDJlNjQsIDB4MGM3MCwgMHgwMGVlLCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwZDYsCi0JMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwgMHhiOGJjLCAweDkwNmQsIDB4MDEzMCwgMHg5YzA2LCAweDAxMTAsCi0JMHg2ODBjLCAweDBjZDAsIDB4NjAwYywgMHg2ODBlLCAweDAwYmUsIDB4MDBkZSwgMHgwMDA1LCAweDAwMjYsCi0JMHgwMDM2LCAweDAxNTYsIDB4MjAxMSwgMHgxODJjLCAweDIyMDQsIDB4OTA4NCwgMHgwMGZmLCAweDIwMTksCi0JMHgwMjZlLCAweDIzMzQsIDB4OTZiNCwgMHgwMGZmLCAweDk2MzYsIDB4MTUwOCwgMHg4MzE4LCAweDIzMzQsCi0JMHgyMjA0LCAweDkwODQsIDB4ZmYwMCwgMHg5NjM2LCAweDExZDAsIDB4MjAxMSwgMHgwMjcwLCAweDIwYTksCi0JMHgwMDA0LCAweDYwMTAsIDB4MDA5NiwgMHgyMDQ4LCAweDIwMTksIDB4MDAwYSwgMHgwODBjLCAweGMzNzksCi0JMHgwMDllLCAweDExNjgsIDB4MjAxMSwgMHgwMjc0LCAweDIwYTksIDB4MDAwNCwgMHg2MDEwLCAweDAwOTYsCi0JMHgyMDQ4LCAweDIwMTksIDB4MDAwNiwgMHgwODBjLCAweGMzNzksIDB4MDA5ZSwgMHgxMTAwLCAweDAxNWUsCi0JMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDYwYzEsCi0JMHgwODBjLCAweDMwMDAsIDB4MDBlZSwgMHgwMDA1LCAweDAwOTYsIDB4MDAyNiwgMHgwODBjLCAweDEwMGUsCi0JMHgwOTBjLCAweDBkYzUsIDB4YTg1YywgMHg5MDgwLCAweDAwMWEsIDB4MjBhMCwgMHgyMGE5LCAweDAwMGMsCi0JMHhhODYwLCAweDIwZTgsIDB4OTAwNiwgMHg0MDA0LCAweDkxODYsIDB4MDA0NiwgMHgxMTE4LCAweGE4NjcsCi0JMHgwMTM2LCAweDAwMzgsIDB4YTg2NywgMHgwMTM4LCAweDkxODYsIDB4MDA0MSwgMHgwMTEwLCAweGE4N2IsCi0JMHgwMDAxLCAweDcwMzgsIDB4OTA4NCwgMHhmZjAwLCAweDcyNDAsIDB4OTI5NCwgMHhmZjAwLCAweDgwMDcsCi0JMHg5MjE1LCAweGFhOWEsIDB4OTE4NiwgMHgwMDQ2LCAweDExNjgsIDB4NzAzOCwgMHg5MDg0LCAweDAwZmYsCi0JMHg3MjNjLCAweDkyOTQsIDB4ZmYwMCwgMHg5MjE1LCAweGFhOWUsIDB4NzIzYywgMHg5Mjk0LCAweDAwZmYsCi0JMHhhYWEyLCAweDAwNjAsIDB4NzA0MCwgMHg5MDg0LCAweDAwZmYsIDB4NzI0NCwgMHg5Mjk0LCAweGZmMDAsCi0JMHg5MjE1LCAweGFhOWUsIDB4NzI0NCwgMHg5Mjk0LCAweDAwZmYsIDB4YWFhMiwgMHg5MTg2LCAweDAwNDYsCi0JMHgxMTE4LCAweDllOTAsIDB4MDAxMiwgMHgwMDEwLCAweDllOTAsIDB4MDAxYSwgMHgyMjA0LCAweDgwMDcsCi0JMHhhOGE2LCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YWEsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsCi0JMHhhOGFlLCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YjIsIDB4ODIxMCwgMHg5MTg2LCAweDAwNDYsCi0JMHgxMWI4LCAweDllOTAsIDB4MDAxNiwgMHgyMjA0LCAweDgwMDcsIDB4YThiNiwgMHg4MjEwLCAweDIyMDQsCi0JMHg4MDA3LCAweGE4YmEsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsIDB4YThiZSwgMHg4MjEwLCAweDIyMDQsCi0JMHg4MDA3LCAweGE4YzIsIDB4ODIxMCwgMHgyMDExLCAweDAyMDUsIDB4MjAxMywgMHgwMDAxLCAweDAwYjAsCi0JMHg5ZTkwLCAweDAwMWUsIDB4MjIwNCwgMHg4MDA3LCAweGE4YjYsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsCi0JMHhhOGJhLCAweDIwMTEsIDB4MDIwNSwgMHgyMDEzLCAweDAwMDEsIDB4MjAxMSwgMHgwMjYwLCAweDIyMDQsCi0JMHg4MDA3LCAweGE4YmUsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsIDB4YThjMiwgMHg5MTg2LCAweDAwNDYsCi0JMHgxMTE4LCAweDIwMTEsIDB4MDI2MiwgMHgwMDEwLCAweDIwMTEsIDB4MDI2YSwgMHgwMTQ2LCAweDAxZDYsCi0JMHgwMDM2LCAweDIwYTksIDB4MDAwMSwgMHgyMDE5LCAweDAwMDgsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsCi0JMHg5MDgwLCAweDAwMzEsIDB4MjBhMCwgMHgyMjA0LCAweDgwMDcsIDB4NDAwNCwgMHg4MjEwLCAweDgzMTksCi0JMHgxZGQwLCAweDAwM2UsIDB4MDFjZSwgMHgwMTNlLCAweDIwMTEsIDB4MDIwNSwgMHgyMDEzLCAweDAwMDAsCi0JMHgwMDJlLCAweDA4MGMsIDB4NmU5ZiwgMHgwMDllLCAweDAwMDUsIDB4MDBlNiwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGZjLCAweDAxMDgsIDB4MDAxMSwgMHgwMGVlLCAweDAwMDUsCi0JMHhhODgwLCAweGMwZTUsIDB4YTg4MiwgMHgwMDA1LCAweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNzYsCi0JMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDI2LCAweDAwMTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsCi0JMHgyMDI5LCAweDE5ZjEsIDB4MjUyYywgMHgyMDIxLCAweDE5ZjcsIDB4MjQyNCwgMHgyMDYxLCAweDFjZDAsCi0JMHgyMDcxLCAweDE4MDAsIDB4NzY1NCwgMHg3MDc0LCAweDk2MDYsIDB4MDU3OCwgMHg2NzIwLCAweDk3ODYsCi0JMHgwMDAxLCAweDAxMTgsIDB4OTc4NiwgMHgwMDA4LCAweDE1MDAsIDB4MjUwMCwgMHg5YzA2LCAweDAxZTgsCi0JMHgyNDAwLCAweDljMDYsIDB4MDFkMCwgMHgwODBjLCAweGVjNjIsIDB4MDFiOCwgMHgwODBjLCAweGVjNzIsCi0JMHgxMWEwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExMjAsIDB4MDAxNiwgMHgwODBjLCAweDFhOGUsCi0JMHgwMDFlLCAweDA4MGMsIDB4ZDJjZiwgMHgxMTEwLCAweDA4MGMsIDB4MzI3OSwgMHgwODBjLCAweGQyZTAsCi0JMHgxMTEwLCAweDA4MGMsIDB4YmNiNiwgMHgwODBjLCAweGIzMDYsIDB4OWNlMCwgMHgwMDE4LCAweDIwMDEsCi0JMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgxMjA4LCAweDA4NTgsIDB4MDEyZSwgMHgwMDFlLCAweDAwMmUsCi0JMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwgMHgwMDdlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsCi0JMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwgMHhkMGRjLCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDE4MzcsCi0JMHgyMDA0LCAweGQwOWMsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAzNiwgMHgwMDQ2LCAweDA4MGMsCi0JMHhkN2UzLCAweDAxNjgsIDB4MjAxOSwgMHhmZmZmLCAweDkwMDUsIDB4MDEyOCwgMHg2MDEwLCAweDAwYjYsCi0JMHgyMDU4LCAweGJiYTAsIDB4MDBiZSwgMHgyMDIxLCAweDAwMDQsIDB4MDgwYywgMHg0ZGZiLCAweDAwNGUsCi0JMHgwMDNlLCAweDAwMGUsIDB4MDAwNSwgMHg2MDA0LCAweDkwODYsIDB4MDAwMSwgMHgxMTI4LCAweDA4MGMsCi0JMHhhYzZjLCAweDA4MGMsIDB4YjMwNiwgMHg5MDA2LCAweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwYjYsCi0JMHgwMDQ2LCAweDIwNjEsIDB4MWNkMCwgMHgyMDcxLCAweDE4MDAsIDB4NzQ1NCwgMHg3MDc0LCAweDgwMDEsCi0JMHg5NDAyLCAweDEyZDgsIDB4MjEwMCwgMHg5YzA2LCAweDAxNjgsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsCi0JMHgwMTQ4LCAweDYwMTAsIDB4MjA1OCwgMHhiOGEwLCAweDkyMDYsIDB4MTEyMCwgMHg2MDA0LCAweDkwODYsCi0JMHgwMDAyLCAweDAxNDAsIDB4OWNlMCwgMHgwMDE4LCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsCi0JMHgxMjIwLCAweDBjNDAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4OTAwNiwgMHgwMDRlLCAweDAwYmUsCi0JMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwgMHhkMGE0LCAweDAxNjAsCi0JMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxMzgsIDB4MjAwMSwgMHgxODQ4LCAweDIwMDQsCi0JMHhkMGE0LCAweDExMTgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4OTAwNiwgMHgwY2U4LCAweDAxMjYsCi0JMHgwMDA2LCAweDAwZTYsIDB4MDAxNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxODQwLCAweGQ1YTQsCi0JMHgwMTE4LCAweDcwMDQsIDB4ODAwMCwgMHg3MDA2LCAweGQ1YjQsIDB4MDExOCwgMHg3MDAwLCAweDgwMDAsCi0JMHg3MDAyLCAweGQ1YWMsIDB4MDE3OCwgMHgyNTAwLCAweDkwODQsIDB4MDAwNywgMHg5MDhlLCAweDAwMDMsCi0JMHgwMTQ4LCAweDkwOGUsIDB4MDAwNCwgMHgwMTMwLCAweDkwOGUsIDB4MDAwNSwgMHgwMTE4LCAweDIwNzEsCi0JMHhmZmY2LCAweDAwODksIDB4MDAxZSwgMHgwMGVlLCAweDAwMGUsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsCi0JMHgwMDA2LCAweDAwZTYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4ZmZlZSwgMHgwMDIxLCAweDAwZWUsCi0JMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwgMHgyZTA1LCAweDgwMDAsIDB4MjA3NywgMHgxMjIwLCAweDhlNzAsCi0JMHgyZTA1LCAweDgwMDAsIDB4MjA3NywgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHhmZmVjLCAweDBjOTksCi0JMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGZmZjAsIDB4MGM2OSwgMHgwMGVlLCAweDAwMDUsCi0JMHgwMTI2LCAweDAwMDYsIDB4MDBlNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxODQwLCAweDcwMTQsCi0JMHg4MDAwLCAweDcwMTYsIDB4MDBlZSwgMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwgMHgwMDAzLCAweDAwMGIsCi0JMHgwN2QyLCAweDAwMDAsIDB4YzAwMCwgMHgwMDAxLCAweDgwNjQsIDB4MDAwOCwgMHgwMDEwLCAweDAwMDAsCi0JMHg4MDY2LCAweDAwMDAsIDB4MDEwMSwgMHgwMDA4LCAweDQ0MDcsIDB4MDAwMywgMHg4MDYwLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4NTgwZCwgMHgwMDBiLCAweDc5YzAsIDB4MDAwMywgMHg1MTA2LCAweDAwMDMsCi0JMHg0YzBhLCAweDAwMDMsIDB4YmFjMCwgMHgwMDA5LCAweDAwOGEsIDB4MDAwMCwgMHgwYzBhLCAweDAwMGIsCi0JMHgxNWZlLCAweDAwMDgsIDB4MzQwYSwgMHgwMDAzLCAweGM0YzAsIDB4MDAwOSwgMHg3MDAwLCAweDAwMDAsCi0JMHhmZmEwLCAweDAwMDEsIDB4MjAwMCwgMHgwMDAwLCAweDE2ODAsIDB4MDAwYiwgMHg4MDhjLCAweDAwMDgsCi0JMHgwMDAxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDA3LCAweDQwMjgsIDB4MDAwMCwgMHg0MDQ3LCAweDAwMGEsCi0JMHg4MDhjLCAweDAwMDgsIDB4MDAwMiwgMHgwMDAwLCAweDA4MjIsIDB4MDAwMywgMHg0MDIyLCAweDAwMDAsCi0JMHgwMDI4LCAweDAwMGIsIDB4NDEyMiwgMHgwMDA4LCAweDk0YzAsIDB4MDAwOSwgMHhmZjAwLCAweDAwMDgsCi0JMHhmZmUwLCAweDAwMDksIDB4MDUwMCwgMHgwMDA4LCAweDBhYWIsIDB4MDAwMywgMHg0NDQ3LCAweDAwMDIsCi0JMHgwZWE4LCAweDAwMGIsIDB4MGJmZSwgMHgwMDA4LCAweDExYTAsIDB4MDAwMSwgMHgxMjg2LCAweDAwMDMsCi0JMHgwY2EwLCAweDAwMDEsIDB4MTI4NiwgMHgwMDAzLCAweDkxODAsIDB4MDAwMSwgMHgwMDA0LCAweDAwMDAsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDdmNjIsIDB4MDAwOCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwMDA5LCAweDAwMDgsIDB4NDQzNiwgMHgwMDBiLCAweDgwOGMsIDB4MDAwOCwgMHgwMDAwLCAweDAwMDgsCi0JMHgwMDYwLCAweDAwMDgsIDB4ODA2MiwgMHgwMDA4LCAweDAwMDQsIDB4MDAwMCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwNDExLCAweDAwMDAsIDB4NDQzZSwgMHgwMDAzLCAweDAzZmUsIDB4MDAwMCwgMHg0M2UwLCAweDAwMDEsCi0JMHgwZTgzLCAweDAwMGIsIDB4YzJjMCwgMHgwMDA5LCAweDAwZmYsIDB4MDAwOCwgMHgwMmUwLCAweDAwMDEsCi0JMHgwZTgzLCAweDAwMGIsIDB4OTE4MCwgMHgwMDAxLCAweDAwMDUsIDB4MDAwOCwgMHg4MDYwLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4N2Y2MiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgwMDE5LCAweDAwMDAsCi0JMHg0NDRkLCAweDAwMGIsIDB4MDI0MCwgMHgwMDAyLCAweDBhODAsIDB4MDAwMywgMHgwMGZlLCAweDAwMDAsCi0JMHgzMjgzLCAweDAwMGIsIDB4MDI0OCwgMHgwMDBhLCAweDA4NWMsIDB4MDAwMywgMHg5MTgwLCAweDAwMDEsCi0JMHgwMDA2LCAweDAwMDgsIDB4N2Y2MiwgMHgwMDA4LCAweDgwMDIsIDB4MDAwOCwgMHgwMDAzLCAweDAwMDgsCi0JMHg4MDY2LCAweDAwMDAsIDB4MDIwYSwgMHgwMDAwLCAweDQ0NWIsIDB4MDAwMywgMHgxMTJhLCAweDAwMDAsCi0JMHgwMDJlLCAweDAwMDgsIDB4MDIyYywgMHgwMDA4LCAweDNhNDQsIDB4MDAwMiwgMHgwYzBhLCAweDAwMGIsCi0JMHg4MDhjLCAweDAwMDgsIDB4MDAwMiwgMHgwMDAwLCAweDE3NjAsIDB4MDAwOCwgMHg4MDYyLCAweDAwMDgsCi0JMHgwMDBmLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDAwMTEsIDB4MDAwOCwgMHg0NDY4LCAweDAwMDMsCi0JMHgwMWZlLCAweDAwMDgsIDB4NDJlMCwgMHgwMDA5LCAweDBlNzQsIDB4MDAwMywgMHgwMGZlLCAweDAwMDAsCi0JMHg0M2UwLCAweDAwMDEsIDB4MGU3NCwgMHgwMDAzLCAweDE3MzQsIDB4MDAwMCwgMHgxNTMwLCAweDAwMDAsCi0JMHgxNjMyLCAweDAwMDgsIDB4MGQyYSwgMHgwMDA4LCAweDk4ODAsIDB4MDAwMSwgMHgwMDEwLCAweDAwMDAsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDdmNjIsIDB4MDAwOCwgMHg4MDY2LCAweDAwMDAsCi0JMHgxZTBhLCAweDAwMDgsIDB4NDQ3YSwgMHgwMDAzLCAweDgwOGEsIDB4MDAwOCwgMHgwMDAzLCAweDAwMDgsCi0JMHgxYTYwLCAweDAwMDAsIDB4ODA2MiwgMHgwMDA4LCAweDAwMDIsIDB4MDAwMCwgMHg1ODgwLCAweDAwMGIsCi0JMHg4MDY2LCAweDAwMDAsIDB4MzY3OSwgMHgwMDAwLCAweDQ0ODMsIDB4MDAwMywgMHg1ODg0LCAweDAwMDMsCi0JMHgzZWZlLCAweDAwMDgsIDB4N2Y0ZiwgMHgwMDAyLCAweDA4OGEsIDB4MDAwYiwgMHgwZDAwLCAweDAwMDAsCi0JMHgwMDkyLCAweDAwMGMsIDB4ODA1NCwgMHgwMDA4LCAweDAwMTEsIDB4MDAwOCwgMHg4MDc0LCAweDAwMDAsCi0JMHgxMDEwLCAweDAwMDgsIDB4MWVmZSwgMHgwMDAwLCAweDMwMGEsIDB4MDAwYiwgMHgwMGUwLCAweDAwMGMsCi0JMHgwMDBhLCAweDAwMGIsIDB4MDBmZSwgMHgwMDAwLCAweDM0OWEsIDB4MDAwMywgMHgxYTYwLCAweDAwMDAsCi0JMHg4MDYyLCAweDAwMDgsIDB4MDAwNywgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwMjMxLCAweDAwMDgsCi0JMHg0NDk5LCAweDAwMGIsIDB4MDNmZSwgMHgwMDAwLCAweDA0ZDAsIDB4MDAwMSwgMHgwY2Q0LCAweDAwMGIsCi0JMHg4MmMwLCAweDAwMDEsIDB4MWYwMCwgMHgwMDAwLCAweGZmYTAsIDB4MDAwMSwgMHgwNDAwLCAweDAwMDAsCi0JMHgwOGIyLCAweDAwMDMsIDB4MTRkYywgMHgwMDAzLCAweDAxZmUsIDB4MDAwOCwgMHgwNTgwLCAweDAwMDksCi0JMHg3ZjA2LCAweDAwMDAsIDB4ODY5MCwgMHgwMDA5LCAweDAwMDAsIDB4MDAwOCwgMHg3ZjBjLCAweDAwMDAsCi0JMHgwMmZlLCAweDAwMDgsIDB4ZmZjMCwgMHgwMDAxLCAweDAwZmYsIDB4MDAwOCwgMHgwNjgwLCAweDAwMDksCi0JMHgxMGIyLCAweDAwMDMsIDB4N2YwOCwgMHgwMDA4LCAweDg0YzAsIDB4MDAwMSwgMHhmZjAwLCAweDAwMDgsCi0JMHgwOGQ0LCAweDAwMDMsIDB4YjljMCwgMHgwMDA5LCAweDAwMzAsIDB4MDAwOCwgMHgwY2MzLCAweDAwMGIsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDgwZmUsIDB4MDAwOCwgMHgxYTBhLCAweDAwMDksCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDA0MDksIDB4MDAwMCwgMHg0NGJjLCAweDAwMDMsCi0JMHg4MGZlLCAweDAwMDgsIDB4MWEwOSwgMHgwMDA5LCAweDdmNjIsIDB4MDAwOCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwNDBhLCAweDAwMDAsIDB4NDRjMiwgMHgwMDAzLCAweDAwZmUsIDB4MDAwMCwgMHgzNGNhLCAweDAwMDMsCi0JMHg4MDcyLCAweDAwMDAsIDB4MTAxMCwgMHgwMDA4LCAweDM5NDQsIDB4MDAwMiwgMHgwOGM1LCAweDAwMDMsCi0JMHgwMGNlLCAweDAwMDMsIDB4ODA3MiwgMHgwMDAwLCAweDIwMjAsIDB4MDAwOCwgMHgzOTQ1LCAweDAwMGEsCi0JMHgwOGNhLCAweDAwMDMsIDB4Mzk0NiwgMHgwMDBhLCAweDBjZGIsIDB4MDAwYiwgMHgwMDAwLCAweDAwMDcsCi0JMHgzOTQzLCAweDAwMGEsIDB4MDhkYiwgMHgwMDAzLCAweDAwY2UsIDB4MDAwMywgMHgwMGZlLCAweDAwMDAsCi0JMHgzNGQ5LCAweDAwMGIsIDB4ODA3MiwgMHgwMDAwLCAweDEwMDAsIDB4MDAwMCwgMHgwMGRiLCAweDAwMGIsCi0JMHg4MDcyLCAweDAwMDAsIDB4MjAwMCwgMHgwMDAwLCAweDQwMDAsIDB4MDAwZiwgMHg4NmMwLCAweDAwMDksCi0JMHhmYzAwLCAweDAwMDgsIDB4MDhkNCwgMHgwMDAzLCAweDAwYjIsIDB4MDAwYiwgMHgxYzYwLCAweDAwMDAsCi0JMHgxYjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDAwLCAweDAyMzEsIDB4MDAwOCwgMHg0NGU0LCAweDAwMGIsCi0JMHg1OGU1LCAweDAwMGIsIDB4MDE0MCwgMHgwMDA4LCAweDAyNDIsIDB4MDAwMCwgMHgxZjQzLCAweDAwMDIsCi0JMHgwY2YzLCAweDAwMGIsIDB4MGQ0NCwgMHgwMDAwLCAweDBkNDYsIDB4MDAwOCwgMHgwMzQ4LCAweDAwMDgsCi0JMHgwNDRhLCAweDAwMDgsIDB4MDMwYSwgMHgwMDA4LCAweDA0MGMsIDB4MDAwMCwgMHgwZDA2LCAweDAwMDAsCi0JMHgwZDA4LCAweDAwMDgsIDB4MDBmNywgMHgwMDAzLCAweDAzNDQsIDB4MDAwOCwgMHgwNDQ2LCAweDAwMDgsCi0JMHgwNTQ4LCAweDAwMDgsIDB4MDY0YSwgMHgwMDAwLCAweDE5NDgsIDB4MDAwYSwgMHgwOGZhLCAweDAwMDMsCi0JMHgwZDRhLCAweDAwMDgsIDB4NThmYSwgMHgwMDAzLCAweDNlZmUsIDB4MDAwOCwgMHg3ZjRmLCAweDAwMDIsCi0JMHgwOTAxLCAweDAwMDMsIDB4ODAwMCwgMHgwMDAwLCAweDAwMDEsIDB4MDAwMCwgMHgwMDkyLCAweDAwMGMsCi0JMHg4MDU0LCAweDAwMDgsIDB4MDAwMSwgMHgwMDAwLCAweDgwNzQsIDB4MDAwMCwgMHgyMDIwLCAweDAwMDgsCi0JMHg0MDAwLCAweDAwMGYsIDB4M2E0MCwgMHgwMDBhLCAweDBjMGQsIDB4MDAwMywgMHgyYjI0LCAweDAwMDgsCi0JMHgyYjI0LCAweDAwMDgsIDB4NTkwYSwgMHgwMDBiLCAweDgwNTQsIDB4MDAwOCwgMHgwMDAyLCAweDAwMDAsCi0JMHgxMjQyLCAweDAwMDIsIDB4MDk1OCwgMHgwMDAzLCAweDNhNDUsIDB4MDAwYSwgMHgwOTQ3LCAweDAwMGIsCi0JMHg4MDcyLCAweDAwMDAsIDB4MTAwMCwgMHgwMDAwLCAweDM5NDUsIDB4MDAwYSwgMHgwOTE3LCAweDAwMGIsCi0JMHg4MDcyLCAweDAwMDAsIDB4MzAxMCwgMHgwMDAwLCAweDFlMTAsIDB4MDAwYSwgMHg3ZjNjLCAweDAwMDAsCi0JMHgwOTQyLCAweDAwMGIsIDB4MWQwMCwgMHgwMDAyLCAweDdmM2EsIDB4MDAwMCwgMHgwZDYwLCAweDAwMDAsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDAwMDksIDB4MDAwOCwgMHg0NTIwLCAweDAwMGIsCi0JMHgwMGZlLCAweDAwMDAsIDB4MzUzZiwgMHgwMDBiLCAweDFjNjAsIDB4MDAwMCwgMHg4MDYyLCAweDAwMDgsCi0JMHgwMDAxLCAweDAwMDAsIDB4ODA2NiwgMHgwMDAwLCAweDAwMDksIDB4MDAwOCwgMHg0NTI4LCAweDAwMDMsCi0JMHgwMGZlLCAweDAwMDAsIDB4MzI1YiwgMHgwMDBiLCAweDAwMzgsIDB4MDAwMCwgMHgwMDYwLCAweDAwMDgsCi0JMHg4MDYyLCAweDAwMDgsIDB4MDAxOSwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwMDA5LCAweDAwMDgsCi0JMHg0NTMxLCAweDAwMGIsIDB4ODBjMCwgMHgwMDA5LCAweDAwZmYsIDB4MDAwOCwgMHg3ZjNlLCAweDAwMDgsCi0JMHgwZDYwLCAweDAwMDAsIDB4MGVmZSwgMHgwMDA4LCAweDFmODAsIDB4MDAwMSwgMHg3ZjYyLCAweDAwMDgsCi0JMHg4MDY2LCAweDAwMDAsIDB4MDAwOSwgMHgwMDA4LCAweDQ1M2IsIDB4MDAwYiwgMHgwMDNhLCAweDAwMDgsCi0JMHgxZGZlLCAweDAwMDAsIDB4MDExYywgMHgwMDBiLCAweDAwMzYsIDB4MDAwOCwgMHgwMGUwLCAweDAwMGMsCi0JMHgwMTU4LCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweDIwMDAsIDB4MDAwMCwgMHg4MDcyLCAweDAwMDAsCi0JMHgyMDAwLCAweDAwMDAsIDB4MDE1OCwgMHgwMDBiLCAweDNhNDQsIDB4MDAwMiwgMHgwYTg5LCAweDAwMDMsCi0JMHg4MDc0LCAweDAwMDAsIDB4MTAwMCwgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHgxMDAwLCAweDAwMDAsCi0JMHgyZDBlLCAweDAwMDAsIDB4MmQwZSwgMHgwMDAwLCAweDM2NTgsIDB4MDAwMywgMHgyNmZlLCAweDAwMDgsCi0JMHgyNmZlLCAweDAwMDgsIDB4MjcwMCwgMHgwMDA4LCAweDI3MDAsIDB4MDAwOCwgMHgwMGQwLCAweDAwMDksCi0JMHgwZDZhLCAweDAwMDMsIDB4ODA3NCwgMHgwMDAwLCAweDQwNDAsIDB4MDAwOCwgMHg1OTU4LCAweDAwMDMsCi0JMHg1MTA2LCAweDAwMDMsIDB4M2E0NiwgMHgwMDBhLCAweDBkNmEsIDB4MDAwMywgMHgzYTQ3LCAweDAwMDIsCi0JMHgwOTY1LCAweDAwMGIsIDB4ODA1NCwgMHgwMDA4LCAweDAwMDQsIDB4MDAwMCwgMHg4MDc0LCAweDAwMDAsCi0JMHg4MDAwLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDMwMDAsIDB4MDAwOCwgMHgwMWI0LCAweDAwMDMsCi0JMHg5MmMwLCAweDAwMDksIDB4MGZjOCwgMHgwMDAwLCAweDA4MGEsIDB4MDAwMywgMHgxMjQ2LCAweDAwMGEsCi0JMHgwZTUyLCAweDAwMGIsIDB4MWE2MCwgMHgwMDAwLCAweDgwNjIsIDB4MDAwOCwgMHgwMDAyLCAweDAwMDAsCi0JMHg4MDY2LCAweDAwMDAsIDB4MzYyYSwgMHgwMDAwLCAweDQ1NmYsIDB4MDAwMywgMHgyMDAwLCAweDAwMDAsCi0JMHgyMDAwLCAweDAwMDAsIDB4MjEwMiwgMHgwMDAwLCAweDIxMDIsIDB4MDAwMCwgMHgyMjA0LCAweDAwMDAsCi0JMHgyMjA0LCAweDAwMDAsIDB4MjMwNiwgMHgwMDAwLCAweDIzMDYsIDB4MDAwMCwgMHgyNDA4LCAweDAwMDAsCi0JMHgyNDA4LCAweDAwMDAsIDB4MjUwYSwgMHgwMDAwLCAweDI1MGEsIDB4MDAwMCwgMHgyNjBjLCAweDAwMDAsCi0JMHgyNjBjLCAweDAwMDAsIDB4MjcwZSwgMHgwMDAwLCAweDI3MGUsIDB4MDAwMCwgMHgyODEwLCAweDAwMDAsCi0JMHgyODEwLCAweDAwMDAsIDB4MjkxMiwgMHgwMDAwLCAweDI5MTIsIDB4MDAwMCwgMHgxYTYwLCAweDAwMDAsCi0JMHg4MDYyLCAweDAwMDgsIDB4MDAwNywgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwMDUyLCAweDAwMDAsCi0JMHg0NTg5LCAweDAwMGIsIDB4OTJjMCwgMHgwMDA5LCAweDA3ODAsIDB4MDAwOCwgMHgwZTZlLCAweDAwMGIsCi0JMHgxMjRiLCAweDAwMDIsIDB4MDk5MiwgMHgwMDAzLCAweDJlNGQsIDB4MDAwMiwgMHgyZTRkLCAweDAwMDIsCi0JMHgwYTU4LCAweDAwMDMsIDB4M2E0NiwgMHgwMDBhLCAweDBkYTIsIDB4MDAwYiwgMHg1OTk0LCAweDAwMDMsCi0JMHg4MDU0LCAweDAwMDgsIDB4MDAwNCwgMHgwMDAwLCAweDEyNDMsIDB4MDAwYSwgMHgwOWIwLCAweDAwMDMsCi0JMHg4MDEwLCAweDAwMDgsIDB4MDAwZCwgMHgwMDAwLCAweDAyMzMsIDB4MDAwYywgMHgxOTQ4LCAweDAwMGEsCi0JMHgwOTlmLCAweDAwMGIsIDB4MDIyOCwgMHgwMDBjLCAweDE4MTAsIDB4MDAwMCwgMHgwMjMzLCAweDAwMGMsCi0JMHgwMWIwLCAweDAwMGIsIDB4MTk0OCwgMHgwMDBhLCAweDA5YTYsIDB4MDAwYiwgMHgxMjQzLCAweDAwMGEsCi0JMHgwYTViLCAweDAwMDMsIDB4MTk0ZCwgMHgwMDBhLCAweDA5YWEsIDB4MDAwYiwgMHgxMjQzLCAweDAwMGEsCi0JMHgwYTYyLCAweDAwMDMsIDB4NTlhYSwgMHgwMDBiLCAweDgwNTQsIDB4MDAwOCwgMHgwMDA0LCAweDAwMDAsCi0JMHgwMjI4LCAweDAwMGMsIDB4MTgxMCwgMHgwMDAwLCAweDAyMzMsIDB4MDAwYywgMHg4MDc0LCAweDAwMDAsCi0JMHhmMDAwLCAweDAwMDgsIDB4ODA3MiwgMHgwMDAwLCAweDMwMDAsIDB4MDAwOCwgMHgwZDMwLCAweDAwMDAsCi0JMHgzYTQyLCAweDAwMDIsIDB4MGRiYSwgMHgwMDBiLCAweDE1ZmUsIDB4MDAwOCwgMHgzNDYxLCAweDAwMGIsCi0JMHgwMDBhLCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweDA1MDEsIDB4MDAwMCwgMHg4MDEwLCAweDAwMDgsCi0JMHgwMDBjLCAweDAwMDgsIDB4MDIzMywgMHgwMDBjLCAweDAwMGEsIDB4MDAwYiwgMHhiYmUwLCAweDAwMDksCi0JMHgwMDMwLCAweDAwMDgsIDB4MGRkMCwgMHgwMDBiLCAweDE4ZmUsIDB4MDAwMCwgMHgzY2UwLCAweDAwMDksCi0JMHgwOWNkLCAweDAwMDMsIDB4MTVmZSwgMHgwMDA4LCAweDNjZTAsIDB4MDAwOSwgMHgwOWNkLCAweDAwMDMsCi0JMHgwMjIzLCAweDAwMDQsIDB4ODA3NiwgMHgwMDA4LCAweDAwNDAsIDB4MDAwMCwgMHgwMjIwLCAweDAwMGIsCi0JMHg4MDc2LCAweDAwMDgsIDB4MDA0MSwgMHgwMDA4LCAweDAyMjAsIDB4MDAwYiwgMHhiYmUwLCAweDAwMDksCi0JMHgwMDMyLCAweDAwMDAsIDB4MGRkNSwgMHgwMDBiLCAweDNjMWUsIDB4MDAwOCwgMHgwMjIwLCAweDAwMGIsCi0JMHhiYmUwLCAweDAwMDksIDB4MDAzYiwgMHgwMDAwLCAweDBkZGEsIDB4MDAwYiwgMHgzYzIwLCAweDAwMDAsCi0JMHgwMjIwLCAweDAwMGIsIDB4YmJlMCwgMHgwMDA5LCAweDAwMzUsIDB4MDAwOCwgMHgwZGUwLCAweDAwMGIsCi0JMHg4MDcyLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAwLCAweDAzOWUsIDB4MDAwMywgMHhiYmUwLCAweDAwMDksCi0JMHgwMDM2LCAweDAwMDgsIDB4MGFiZCwgMHgwMDBiLCAweGJiZTAsIDB4MDAwOSwgMHgwMDM3LCAweDAwMDAsCi0JMHgwZTAxLCAweDAwMGIsIDB4MThmZSwgMHgwMDAwLCAweDNjZTAsIDB4MDAwOSwgMHgwZGNkLCAweDAwMGIsCi0JMHg4MDc2LCAweDAwMDgsIDB4MDA0MCwgMHgwMDAwLCAweDFhNjAsIDB4MDAwMCwgMHg4MDYyLCAweDAwMDgsCi0JMHgwMDBkLCAweDAwMDAsIDB4MjYwNCwgMHgwMDA4LCAweDI2MDQsIDB4MDAwOCwgMHgyNzA2LCAweDAwMDgsCi0JMHgyNzA2LCAweDAwMDgsIDB4MjgwOCwgMHgwMDAwLCAweDI4MDgsIDB4MDAwMCwgMHgyOTBhLCAweDAwMDAsCi0JMHgyOTBhLCAweDAwMDAsIDB4ODA2NiwgMHgwMDAwLCAweDA0MjIsIDB4MDAwMCwgMHg0NWY4LCAweDAwMGIsCi0JMHgwMjI4LCAweDAwMGMsIDB4ODA1NCwgMHgwMDA4LCAweDAwMDQsIDB4MDAwMCwgMHg4MDc0LCAweDAwMDAsCi0JMHhmMDAwLCAweDAwMDgsIDB4ODA3MiwgMHgwMDAwLCAweGIwMDAsIDB4MDAwMCwgMHgwMWI0LCAweDAwMDMsCi0JMHhiYmUwLCAweDAwMDksIDB4MDAzOCwgMHgwMDAwLCAweDBlMTMsIDB4MDAwYiwgMHgxOGZlLCAweDAwMDAsCi0JMHgzY2UwLCAweDAwMDksIDB4MGExMCwgMHgwMDAzLCAweDE1ZmUsIDB4MDAwOCwgMHgzY2UwLCAweDAwMDksCi0JMHgwZGM5LCAweDAwMDMsIDB4MDIyMywgMHgwMDA0LCAweDgwNzYsIDB4MDAwOCwgMHgwMDQwLCAweDAwMDAsCi0JMHg4MDcyLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAwLCAweDAyODAsIDB4MDAwYiwgMHg4MDc2LCAweDAwMDgsCi0JMHgwMDQyLCAweDAwMDgsIDB4MDIyMCwgMHgwMDBiLCAweGJiZTAsIDB4MDAwOSwgMHgwMDE2LCAweDAwMDAsCi0JMHgwZTIwLCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweDA4MDgsIDB4MDAwOCwgMHgzYTQ0LCAweDAwMDIsCi0JMHgwYzBjLCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweDA4MDAsIDB4MDAwMCwgMHg4MDcyLCAweDAwMDAsCi0JMHg4MDAwLCAweDAwMDAsIDB4ODAwMCwgMHgwMDBmLCAweDAwMGEsIDB4MDAwYiwgMHg4MDcyLCAweDAwMDAsCi0JMHg4MDAwLCAweDAwMDAsIDB4MDAwYSwgMHgwMDBiLCAweDNkMzAsIDB4MDAwYSwgMHg3ZjAwLCAweDAwMDAsCi0JMHhiYzgwLCAweDAwMDEsIDB4MDAwNywgMHgwMDAwLCAweDAyMmMsIDB4MDAwYiwgMHgxOTMwLCAweDAwMGEsCi0JMHg3ZjAwLCAweDAwMDAsIDB4OTg4MCwgMHgwMDAxLCAweDAwMDcsIDB4MDAwMCwgMHg4MDYwLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4N2Y2MiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgwMDBhLCAweDAwMDgsCi0JMHg0NjMxLCAweDAwMGIsIDB4NDAwMCwgMHgwMDBmLCAweDIyMzYsIDB4MDAwYiwgMHgwODcwLCAweDAwMDgsCi0JMHg0MDAwLCAweDAwMGYsIDB4N2UzMywgMHgwMDBiLCAweGJiZTAsIDB4MDAwOSwgMHgwMDMwLCAweDAwMDgsCi0JMHgwZTMzLCAweDAwMDMsIDB4MThmZSwgMHgwMDAwLCAweDNjZTAsIDB4MDAwOSwgMHgwYTQ0LCAweDAwMGIsCi0JMHgxNWZlLCAweDAwMDgsIDB4M2NlMCwgMHgwMDA5LCAweDBhNDQsIDB4MDAwYiwgMHgwMjIzLCAweDAwMDQsCi0JMHg4MDc2LCAweDAwMDgsIDB4MDA0MCwgMHgwMDAwLCAweDAyNDYsIDB4MDAwYiwgMHg4MDc2LCAweDAwMDgsCi0JMHgwMDQxLCAweDAwMDgsIDB4ODA3MiwgMHgwMDAwLCAweDgwMDAsIDB4MDAwMCwgMHgwMjMzLCAweDAwMDMsCi0JMHhiYWMwLCAweDAwMDksIDB4MDA5MCwgMHgwMDA4LCAweDBhNGYsIDB4MDAwMywgMHg4MDc0LCAweDAwMDAsCi0JMHgwNzA2LCAweDAwMDAsIDB4MDI1MSwgMHgwMDBiLCAweDgwNzQsIDB4MDAwMCwgMHgwNzAzLCAweDAwMDAsCi0JMHg0MDAwLCAweDAwMGYsIDB4ODAxMCwgMHgwMDA4LCAweDAwMjMsIDB4MDAwMCwgMHgwMjhlLCAweDAwMDMsCi0JMHg4MDEwLCAweDAwMDgsIDB4MDAwOCwgMHgwMDAwLCAweDAyOGUsIDB4MDAwMywgMHg4MDEwLCAweDAwMDgsCi0JMHgwMDIyLCAweDAwMDgsIDB4MDI4ZSwgMHgwMDAzLCAweDAyMjgsIDB4MDAwYywgMHg4MDEwLCAweDAwMDgsCi0JMHgwMDA3LCAweDAwMDAsIDB4MDIzMywgMHgwMDBjLCAweDE4MTAsIDB4MDAwMCwgMHgwMjMzLCAweDAwMGMsCi0JMHgwMjlhLCAweDAwMDMsIDB4MDIyOCwgMHgwMDBjLCAweDgwMTAsIDB4MDAwOCwgMHgwMDFiLCAweDAwMDgsCi0JMHgwMjMzLCAweDAwMGMsIDB4MTgxMCwgMHgwMDAwLCAweDAyMzMsIDB4MDAwYywgMHg4MDc0LCAweDAwMDAsCi0JMHhmMDgwLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDMwMDAsIDB4MDAwOCwgMHgwZDMwLCAweDAwMDAsCi0JMHgwMDBhLCAweDAwMGIsIDB4ODAxMCwgMHgwMDA4LCAweDAwMDksIDB4MDAwOCwgMHgwMjhlLCAweDAwMDMsCi0JMHg4MDEwLCAweDAwMDgsIDB4MDAwNSwgMHgwMDA4LCAweDAyOGUsIDB4MDAwMywgMHgxNjQ4LCAweDAwMGEsCi0JMHgwYzZmLCAweDAwMGIsIDB4ODA4YywgMHgwMDA4LCAweDAwMDEsIDB4MDAwMCwgMHg4MDEwLCAweDAwMDgsCi0JMHgwMDA0LCAweDAwMDAsIDB4NDE0MywgMHgwMDBhLCAweDA4NmYsIDB4MDAwMywgMHgzYTQ0LCAweDAwMDIsCi0JMHgwYzBhLCAweDAwMGIsIDB4MGQyYSwgMHgwMDA4LCAweDAyOGUsIDB4MDAwMywgMHg4MDEwLCAweDAwMDgsCi0JMHgwMDAzLCAweDAwMDgsIDB4MDI5MiwgMHgwMDBiLCAweDgwMTAsIDB4MDAwOCwgMHgwMDBiLCAweDAwMDAsCi0JMHgwMjkyLCAweDAwMGIsIDB4ODAxMCwgMHgwMDA4LCAweDAwMDIsIDB4MDAwMCwgMHgwMjkyLCAweDAwMGIsCi0JMHgzYTQ3LCAweDAwMDIsIDB4MGQ1OCwgMHgwMDBiLCAweDgwMTAsIDB4MDAwOCwgMHgwMDA2LCAweDAwMDgsCi0JMHgwMjkyLCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweGYwMDAsIDB4MDAwOCwgMHg4MDcyLCAweDAwMDAsCi0JMHgzMDAwLCAweDAwMDgsIDB4MDIzMywgMHgwMDBjLCAweDAyNDksIDB4MDAwNCwgMHgzYTQwLCAweDAwMGEsCi0JMHgwODBhLCAweDAwMDMsIDB4ODAxMCwgMHgwMDA4LCAweDAwMGMsIDB4MDAwOCwgMHgwMjMzLCAweDAwMGMsCi0JMHgwMDBhLCAweDAwMGIsIDB4ODA3NCwgMHgwMDAwLCAweGYwODAsIDB4MDAwMCwgMHg4MDcyLCAweDAwMDAsCi0JMHgzMDAwLCAweDAwMDgsIDB4MGQzMCwgMHgwMDAwLCAweDJlNGQsIDB4MDAwMiwgMHgyZTRkLCAweDAwMDIsCi0JMHgwYWE1LCAweDAwMGIsIDB4ODA1NCwgMHgwMDA4LCAweDAwMTksIDB4MDAwMCwgMHgwMDBhLCAweDAwMGIsCi0JMHg4MDU0LCAweDAwMDgsIDB4MDAwOSwgMHgwMDA4LCAweDAwMGEsIDB4MDAwYiwgMHgzYTQ0LCAweDAwMDIsCi0JMHgwYzBhLCAweDAwMGIsIDB4MDI4MywgMHgwMDBiLCAweDgwOGMsIDB4MDAwOCwgMHgwMDAwLCAweDAwMDgsCi0JMHg0NDQ3LCAweDAwMDIsIDB4MGFkMSwgMHgwMDBiLCAweGMwYzAsIDB4MDAwMSwgMHgwMGZmLCAweDAwMDgsCi0JMHhmZmUwLCAweDAwMDksIDB4MDBmZiwgMHgwMDA4LCAweDBlYTgsIDB4MDAwYiwgMHhjMWUwLCAweDAwMDEsCi0JMHhmZmZmLCAweDAwMDgsIDB4MGVhOCwgMHgwMDBiLCAweDgwMTAsIDB4MDAwOCwgMHgwMDEzLCAweDAwMDAsCi0JMHgwMjMzLCAweDAwMGMsIDB4ODA3NCwgMHgwMDAwLCAweDAyMDIsIDB4MDAwOCwgMHgwMDBhLCAweDAwMGIsCi0JMHgzYTQwLCAweDAwMGEsIDB4MGVjZSwgMHgwMDBiLCAweDgwNzQsIDB4MDAwMCwgMHgwMjAwLCAweDAwMDAsCi0JMHgzZDAwLCAweDAwMDAsIDB4M2NmZSwgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHg4MDAwLCAweDAwMDAsCi0JMHg0M2UwLCAweDAwMDEsIDB4MGVjYywgMHgwMDAzLCAweDQyZmUsIDB4MDAwMCwgMHhmZmMwLCAweDAwMDEsCi0JMHgwMGZmLCAweDAwMDgsIDB4MDBlMCwgMHgwMDA5LCAweDBhYTgsIDB4MDAwMywgMHgwZDA4LCAweDAwMDgsCi0JMHgwMzIxLCAweDAwMGIsIDB4ODA3MiwgMHgwMDAwLCAweDgwMDAsIDB4MDAwMCwgMHgwMDBhLCAweDAwMGIsCi0JMHgwM2E3LCAweDAwMGMsIDB4ODA4YywgMHgwMDA4LCAweDAwMDEsIDB4MDAwMCwgMHgwNGZlLCAweDAwMDgsCi0JMHgzMzhhLCAweDAwMDMsIDB4MDQ2MCwgMHgwMDAwLCAweDgwNjIsIDB4MDAwOCwgMHgwMDAxLCAweDAwMDAsCi0JMHg4MDY2LCAweDAwMDAsIDB4MDAwOSwgMHgwMDA4LCAweDQ2ZGIsIDB4MDAwMywgMHgwMDA0LCAweDAwMDAsCi0JMHg4MGMwLCAweDAwMDksIDB4MDBmZiwgMHgwMDA4LCAweDdmMDAsIDB4MDAwMCwgMHg4MGUwLCAweDAwMDEsCi0JMHgwMDA0LCAweDAwMDAsIDB4MGFmNSwgMHgwMDBiLCAweDgwZTAsIDB4MDAwMSwgMHgwMDA1LCAweDAwMDgsCi0JMHgwYWY1LCAweDAwMGIsIDB4ODBlMCwgMHgwMDAxLCAweDAwMDYsIDB4MDAwOCwgMHgwYWY1LCAweDAwMGIsCi0JMHg4MmMwLCAweDAwMDEsIDB4ZmYwMCwgMHgwMDA4LCAweDdmMDQsIDB4MDAwOCwgMHg4MmUwLCAweDAwMDksCi0JMHgwNjAwLCAweDAwMDgsIDB4MGFmNSwgMHgwMDBiLCAweDgyZTAsIDB4MDAwOSwgMHgwNTAwLCAweDAwMDgsCi0JMHgwYWY1LCAweDAwMGIsIDB4ODJlMCwgMHgwMDA5LCAweDA0MDAsIDB4MDAwMCwgMHgwZjhhLCAweDAwMDMsCi0JMHhjNGMwLCAweDAwMDksIDB4NzAwMCwgMHgwMDAwLCAweGZmZTAsIDB4MDAwOSwgMHgxMDAwLCAweDAwMDAsCi0JMHgwYjIxLCAweDAwMDMsIDB4MDM5OCwgMHgwMDBjLCAweDM5NDEsIDB4MDAwMiwgMHgwYjAwLCAweDAwMDMsCi0JMHg4MDcyLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDAwMGEsIDB4MDAwYiwgMHgwNDYwLCAweDAwMDAsCi0JMHg4MGZlLCAweDAwMDgsIDB4MDAyYiwgMHgwMDA4LCAweDdmNjIsIDB4MDAwOCwgMHg4MDY2LCAweDAwMDAsCi0JMHgyMjA5LCAweDAwMDgsIDB4NDcwNiwgMHgwMDBiLCAweDExZmUsIDB4MDAwMCwgMHgzMzFjLCAweDAwMDMsCi0JMHg5MTgwLCAweDAwMDEsIDB4MDAwMiwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDAsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDA2MDksIDB4MDAwOCwgMHg0NzEwLCAweDAwMDMsCi0JMHg0MmZlLCAweDAwMDAsIDB4ZmZjMCwgMHgwMDAxLCAweGZmMDAsIDB4MDAwOCwgMHgwM2UwLCAweDAwMDksCi0JMHgwZjE5LCAweDAwMDMsIDB4ODA3MiwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMCwgMHgwMDQ2LCAweDAwMDMsCi0JMHg5MTgwLCAweDAwMDEsIDB4MDAwMywgMHgwMDA4LCAweDAzMDMsIDB4MDAwYiwgMHg4MDcyLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4ODAxMCwgMHgwMDA4LCAweDAwMTAsIDB4MDAwMCwgMHgwMzdiLCAweDAwMGIsCi0JMHgwMzk4LCAweDAwMGMsIDB4Mzk0MSwgMHgwMDAyLCAweDBiMjcsIDB4MDAwMywgMHg4MDcyLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4MDAwYSwgMHgwMDBiLCAweDEwNDIsIDB4MDAwYSwgMHgwYjJjLCAweDAwMGIsCi0JMHgwMzYwLCAweDAwMDQsIDB4MTFmZSwgMHgwMDAwLCAweDM3MzEsIDB4MDAwYiwgMHg4MDcyLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4ODAxMCwgMHgwMDA4LCAweDAwMGUsIDB4MDAwMCwgMHgwMzdiLCAweDAwMGIsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDA0ZmUsIDB4MDAwOCwgMHgzNzQ2LCAweDAwMGIsCi0JMHg4MDhjLCAweDAwMDgsIDB4MDAwMCwgMHgwMDA4LCAweDkxODAsIDB4MDAwMSwgMHgwMDA1LCAweDAwMDgsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDAwMDksIDB4MDAwOCwgMHg0NzNjLCAweDAwMGIsCi0JMHgwMDYwLCAweDAwMDgsIDB4ODA2MiwgMHgwMDA4LCAweDAwMWIsIDB4MDAwOCwgMHg0MzA0LCAweDAwMDgsCi0JMHg0MjA2LCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDA0MTIsIDB4MDAwMCwgMHg0NzQ0LCAweDAwMGIsCi0JMHgwMzVkLCAweDAwMDMsIDB4ODA4YywgMHgwMDA4LCAweDAwMDEsIDB4MDAwMCwgMHgwNDYwLCAweDAwMDAsCi0JMHg4MDYyLCAweDAwMDgsIDB4MDAyYiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgwNjA5LCAweDAwMDgsCi0JMHg0NzRkLCAweDAwMGIsIDB4ODA2NiwgMHgwMDAwLCAweDIyMGEsIDB4MDAwOCwgMHg0NzUwLCAweDAwMGIsCi0JMHg0MmZlLCAweDAwMDAsIDB4ZmZjMCwgMHgwMDAxLCAweGZmMDAsIDB4MDAwOCwgMHg3ZjA0LCAweDAwMDgsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDkxODAsIDB4MDAwMSwgMHgwMDAyLCAweDAwMDAsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDA0MWEsIDB4MDAwOCwgMHg0NzVjLCAweDAwMGIsCi0JMHg4MDcyLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDAwNDYsIDB4MDAwMywgMHg4MDYwLCAweDAwMDAsCi0JMHgwNDAwLCAweDAwMDAsIDB4MTM2MiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgwNDExLCAweDAwMDAsCi0JMHg0NzY1LCAweDAwMGIsIDB4MDJmZSwgMHgwMDA4LCAweDAzZTAsIDB4MDAwOSwgMHgwZjZiLCAweDAwMDMsCi0JMHgwZDIyLCAweDAwMDAsIDB4NDAwMCwgMHgwMDBmLCAweDgyODAsIDB4MDAwOSwgMHgwMDAyLCAweDAwMDAsCi0JMHgxMzgwLCAweDAwMDEsIDB4N2Y2MiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgyMjA5LCAweDAwMDgsCi0JMHg0NzcxLCAweDAwMGIsIDB4MDIwMCwgMHgwMDBhLCAweGZmYzAsIDB4MDAwMSwgMHgwMDA3LCAweDAwMDAsCi0JMHg3ZjA2LCAweDAwMDAsIDB4MTM2MiwgMHgwMDA4LCAweDgwNjYsIDB4MDAwMCwgMHgwNjBhLCAweDAwMDgsCi0JMHg0Nzc5LCAweDAwMDMsIDB4NDAwMCwgMHgwMDBmLCAweDNhNDQsIDB4MDAwMiwgMHgwYzBhLCAweDAwMGIsCi0JMHgyZjQ0LCAweDAwMGEsIDB4MmY0NCwgMHgwMDBhLCAweDBlODMsIDB4MDAwYiwgMHg4MDhhLCAweDAwMDgsCi0JMHgwMDAzLCAweDAwMDgsIDB4ODA3NCwgMHgwMDAwLCAweGYwODAsIDB4MDAwMCwgMHg4MDcyLCAweDAwMDAsCi0JMHgzMDAwLCAweDAwMDgsIDB4NWI4NiwgMHgwMDBiLCAweDgwNTQsIDB4MDAwOCwgMHgwMDE5LCAweDAwMDAsCi0JMHgwMDBhLCAweDAwMGIsIDB4M2E0NCwgMHgwMDAyLCAweDBjMGEsIDB4MDAwYiwgMHg4MDhjLCAweDAwMDgsCi0JMHgwMDAwLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMTEsIDB4MDAwOCwgMHgwMjMzLCAweDAwMGMsCi0JMHg0MmZlLCAweDAwMDAsIDB4ZmZjMCwgMHgwMDAxLCAweDAwZmYsIDB4MDAwOCwgMHg3ZjEwLCAweDAwMDgsCi0JMHgwMjMzLCAweDAwMGMsIDB4NDMxMCwgMHgwMDA4LCAweDAyOTIsIDB4MDAwYiwgMHgzOTQxLCAweDAwMDIsCi0JMHgwYjliLCAweDAwMGIsIDB4NDAwMCwgMHgwMDBmLCAweDgwNzIsIDB4MDAwMCwgMHgwNDA0LCAweDAwMDgsCi0JMHg0MDAwLCAweDAwMGYsIDB4ODAxMCwgMHgwMDA4LCAweDAwMTIsIDB4MDAwOCwgMHgwMjMzLCAweDAwMGMsCi0JMHgwMzYwLCAweDAwMDQsIDB4MTExMCwgMHgwMDAwLCAweDAyMzMsIDB4MDAwYywgMHgxMWZlLCAweDAwMDAsCi0JMHgzN2ExLCAweDAwMGIsIDB4MDAwYSwgMHgwMDBiLCAweGMyYzAsIDB4MDAwOSwgMHgwMGZmLCAweDAwMDgsCi0JMHg3ZjAwLCAweDAwMDAsIDB4YzNjMCwgMHgwMDAxLCAweGZmMDAsIDB4MDAwOCwgMHgwMGQwLCAweDAwMDksCi0JMHgwYmNjLCAweDAwMDMsIDB4MGQwYSwgMHgwMDAwLCAweDg1ODAsIDB4MDAwMSwgMHgxMDAwLCAweDAwMDAsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwODA5LCAweDAwMDAsIDB4NDdiNiwgMHgwMDAzLCAweDA0ZmUsIDB4MDAwOCwgMHgzM2M1LCAweDAwMGIsCi0JMHgwNDYwLCAweDAwMDAsIDB4ODA2MiwgMHgwMDA4LCAweDAwMDQsIDB4MDAwMCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwMjExLCAweDAwMDAsIDB4NDdiZSwgMHgwMDBiLCAweDAxZmUsIDB4MDAwOCwgMHgwMGUwLCAweDAwMDksCi0JMHgwZmM1LCAweDAwMGIsIDB4MDJmZSwgMHgwMDA4LCAweDQzZTAsIDB4MDAwMSwgMHgwYmNiLCAweDAwMGIsCi0JMHgwNTAwLCAweDAwMDIsIDB4N2YwYSwgMHgwMDAwLCAweGZmZTAsIDB4MDAwOSwgMHgwODAwLCAweDAwMDAsCi0JMHgwZmFmLCAweDAwMGIsIDB4MGQwOCwgMHgwMDA4LCAweDQwMDAsIDB4MDAwZiwgMHg0M2ZlLCAweDAwMDgsCi0JMHgzZTgwLCAweDAwMDEsIDB4ZmZjMCwgMHgwMDAxLCAweDdmZmYsIDB4MDAwMCwgMHgwZDYwLCAweDAwMDAsCi0JMHg3ZjYyLCAweDAwMDgsIDB4ODA2NiwgMHgwMDAwLCAweDA4MDksIDB4MDAwMCwgMHg0N2Q0LCAweDAwMGIsCi0JMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweDg0YzAsIDB4MDAwMSwgMHhmZjAwLCAweDAwMDgsCi0JMHg3ZjYwLCAweDAwMGEsIDB4N2Y2MCwgMHgwMDBhLCAweDdmNjAsIDB4MDAwYSwgMHg3ZjYwLCAweDAwMGEsCi0JMHg3ZjYwLCAweDAwMGEsIDB4N2Y2MCwgMHgwMDBhLCAweDdmNjAsIDB4MDAwYSwgMHg3ZjYwLCAweDAwMGEsCi0JMHhmZjgwLCAweDAwMDksIDB4MTAwMCwgMHgwMDAwLCAweDdmNjIsIDB4MDAwOCwgMHg4MDY2LCAweDAwMDAsCi0JMHgwODA5LCAweDAwMDAsIDB4NDdlNiwgMHgwMDAzLCAweDQwMDAsIDB4MDAwZiwgMHg4ZDViLCAweGVhYzQsCi0JMHgwMDAxLCAweDAwMDIsIDB4MDAwNCwgMHgwMDA4LCAweDAwMTAsIDB4MDAyMCwgMHgwMDQwLCAweDAwODAsCi0JMHgwMTAwLCAweDAyMDAsIDB4MDQwMCwgMHgwODAwLCAweDEwMDAsIDB4MjAwMCwgMHg0MDAwLCAweDgwMDAsCi0JMHgxMmIwCi19OwotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIzMDBpcHhfbGVuZ3RoMDEgPSAweGYwOTE7Ci0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlX2xlbmd0aDAxID0gMHhmMDkxOwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjMyMi5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyMzIyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOGNhZmMuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyMzIyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIFFMb2dpYyBGaWJyZSBDaGFubmVsIEhCQSBEcml2ZXIKLSAqIENvcHlyaWdodCAoYykgIDIwMDMtMjAwNSBRTG9naWMgQ29ycG9yYXRpb24KLSAqCi0gKiBTZWUgTElDRU5TRS5xbGEyeHh4IGZvciBjb3B5cmlnaHQgYW5kIGxpY2Vuc2luZyBkZXRhaWxzLgotICovCi0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotCi0jaW5jbHVkZSAicWxhX2RlZi5oIgotCi1zdGF0aWMgY2hhciBxbGFfZHJpdmVyX25hbWVbXSA9ICJxbGEyMzIyIjsKLQotZXh0ZXJuIHVuc2lnbmVkIGNoYXIgIGZ3MjMyMmlweF92ZXJzaW9uW107Ci1leHRlcm4gdW5zaWduZWQgY2hhciAgZncyMzIyaXB4X3ZlcnNpb25fc3RyW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMzIyaXB4X2FkZHIwMTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCBmdzIzMjJpcHhfY29kZTAxW107Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgZncyMzIyaXB4X2xlbmd0aDAxOwotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcnNlcWlweF9jb2RlX2FkZHIwMTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCByc2VxaXB4X2NvZGUwMVtdOwotZXh0ZXJuIHVuc2lnbmVkIHNob3J0IHJzZXFpcHhfY29kZV9sZW5ndGgwMTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIHhzZXFpcHhfY29kZV9hZGRyMDE7Ci1leHRlcm4gdW5zaWduZWQgc2hvcnQgeHNlcWlweF9jb2RlMDFbXTsKLWV4dGVybiB1bnNpZ25lZCBzaG9ydCB4c2VxaXB4X2NvZGVfbGVuZ3RoMDE7Ci0KLXN0YXRpYyBzdHJ1Y3QgcWxhX2Z3X2luZm8gcWxhX2Z3X3RibFtdID0gewotCXsKLQkJLmFkZHJlc3NpbmcJPSBGV19JTkZPX0FERFJfTk9STUFMLAotCQkuZndjb2RlCQk9ICZmdzIzMjJpcHhfY29kZTAxWzBdLAotCQkuZndsZW4JCT0gJmZ3MjMyMmlweF9sZW5ndGgwMSwKLQkJLmZ3c3RhcnQJPSAmZncyMzIyaXB4X2FkZHIwMSwKLQl9LAotCXsKLQkJLmFkZHJlc3NpbmcJPSBGV19JTkZPX0FERFJfRVhURU5ERUQsCi0JCS5md2NvZGUJCT0gJnJzZXFpcHhfY29kZTAxWzBdLAotCQkuZndsZW4JCT0gJnJzZXFpcHhfY29kZV9sZW5ndGgwMSwKLQkJLmxmd3N0YXJ0CT0gJnJzZXFpcHhfY29kZV9hZGRyMDEsCi0JfSwKLQl7Ci0JCS5hZGRyZXNzaW5nCT0gRldfSU5GT19BRERSX0VYVEVOREVELAotCQkuZndjb2RlCQk9ICZ4c2VxaXB4X2NvZGUwMVswXSwKLQkJLmZ3bGVuCQk9ICZ4c2VxaXB4X2NvZGVfbGVuZ3RoMDEsCi0JCS5sZndzdGFydAk9ICZ4c2VxaXB4X2NvZGVfYWRkcjAxLAotCX0sCi0JeyBGV19JTkZPX0FERFJfTk9NT1JFLCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBxbGFfYm9hcmRfaW5mbyBxbGFfYm9hcmRfdGJsW10gPSB7Ci0JewotCQkuZHJ2X25hbWUJPSBxbGFfZHJpdmVyX25hbWUsCi0JCS5pc3BfbmFtZQk9ICJJU1AyMzIyIiwKLQkJLmZ3X2luZm8JPSBxbGFfZndfdGJsLAotCX0sCi0JewotCQkuZHJ2X25hbWUJPSBxbGFfZHJpdmVyX25hbWUsCi0JCS5pc3BfbmFtZQk9ICJJU1A2MzIyIiwKLQkJLmZ3X2luZm8JPSBxbGFfZndfdGJsLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcWxhMjMyMl9wY2lfdGJsW10gPSB7Ci0JewotCQkudmVuZG9yCQk9IFBDSV9WRU5ET1JfSURfUUxPR0lDLAotCQkuZGV2aWNlCQk9IFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIzMjIsCi0JCS5zdWJ2ZW5kb3IJPSBQQ0lfQU5ZX0lELAotCQkuc3ViZGV2aWNlCT0gUENJX0FOWV9JRCwKLQkJLmRyaXZlcl9kYXRhCT0gKHVuc2lnbmVkIGxvbmcpJnFsYV9ib2FyZF90YmxbMF0sCi0JfSwKLQl7Ci0JCS52ZW5kb3IJCT0gUENJX1ZFTkRPUl9JRF9RTE9HSUMsCi0JCS5kZXZpY2UJCT0gUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNjMyMiwKLQkJLnN1YnZlbmRvcgk9IFBDSV9BTllfSUQsCi0JCS5zdWJkZXZpY2UJPSBQQ0lfQU5ZX0lELAotCQkuZHJpdmVyX2RhdGEJPSAodW5zaWduZWQgbG9uZykmcWxhX2JvYXJkX3RibFsxXSwKLQl9LAotCXswLCAwfSwKLX07Ci1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgcWxhMjMyMl9wY2lfdGJsKTsKLQotc3RhdGljIGludCBfX2RldmluaXQKLXFsYTIzMjJfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCi17Ci0JcmV0dXJuIHFsYTJ4MDBfcHJvYmVfb25lKHBkZXYsCi0JICAgIChzdHJ1Y3QgcWxhX2JvYXJkX2luZm8gKilpZC0+ZHJpdmVyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBfX2RldmV4aXQKLXFsYTIzMjJfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKLXsKLQlxbGEyeDAwX3JlbW92ZV9vbmUocGRldik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBxbGEyMzIyX3BjaV9kcml2ZXIgPSB7Ci0JLm5hbWUJCT0gInFsYTIzMjIiLAotCS5pZF90YWJsZQk9IHFsYTIzMjJfcGNpX3RibCwKLQkucHJvYmUJCT0gcWxhMjMyMl9wcm9iZV9vbmUsCi0JLnJlbW92ZQkJPSBfX2RldmV4aXRfcChxbGEyMzIyX3JlbW92ZV9vbmUpLAotfTsKLQotc3RhdGljIGludCBfX2luaXQKLXFsYTIzMjJfaW5pdCh2b2lkKQotewotCXJldHVybiBwY2lfbW9kdWxlX2luaXQoJnFsYTIzMjJfcGNpX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotcWxhMjMyMl9leGl0KHZvaWQpCi17Ci0JcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZxbGEyMzIyX3BjaV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChxbGEyMzIyX2luaXQpOwotbW9kdWxlX2V4aXQocWxhMjMyMl9leGl0KTsKLQotTU9EVUxFX0FVVEhPUigiUUxvZ2ljIENvcnBvcmF0aW9uIik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIlFMb2dpYyBJU1AyMzIyIEZDLVNDU0kgSG9zdCBCdXMgQWRhcHRlciBkcml2ZXIiKTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9WRVJTSU9OKFFMQTJYWFhfVkVSU0lPTik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDIzMjJfZncuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjMyMl9mdy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzU5OWE4Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjMyMl9mdy5jCisrKyAvZGV2L251bGwKQEAgLTEsODM3NiArMCwwIEBACi0vKgotICogUUxvZ2ljIEZpYnJlIENoYW5uZWwgSEJBIERyaXZlcgotICogQ29weXJpZ2h0IChjKSAgMjAwMy0yMDA1IFFMb2dpYyBDb3Jwb3JhdGlvbgotICoKLSAqIFNlZSBMSUNFTlNFLnFsYTJ4eHggZm9yIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGRldGFpbHMuCi0gKi8KLQotLyoKLSAqCUZpcm13YXJlIFZlcnNpb24gMy4wMy4yMCAoMTU6NDIgRmViIDAxLCAyMDA2KQotICovCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdW5zaWduZWQgc2hvcnQgZncyMzIyaXB4X3ZlcnNpb24gPSAzKjEwMjQrMzsKLSNlbHNlCi11bnNpZ25lZCBzaG9ydCByaXNjX2NvZGVfdmVyc2lvbiA9IDMqMTAyNCszOwotI2VuZGlmCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdW5zaWduZWQgY2hhciBmdzIzMjJpcHhfdmVyc2lvbl9zdHJbXSA9IHszLCAzLDIwfTsKLSNlbHNlCi11bnNpZ25lZCBjaGFyIGZpcm13YXJlX3ZlcnNpb25bXSA9IHszLCAzLDIwfTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLSNkZWZpbmUgZncyMzIyaXB4X1ZFUlNJT05fU1RSSU5HICIzLjAzLjIwIgotI2Vsc2UKLSNkZWZpbmUgRldfVkVSU0lPTl9TVFJJTkcgIjMuMDMuMjAiCi0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11bnNpZ25lZCBzaG9ydCBmdzIzMjJpcHhfYWRkcjAxID0gMHgwODAwIDsKLSNlbHNlCi11bnNpZ25lZCBzaG9ydCByaXNjX2NvZGVfYWRkcjAxID0gMHgwODAwIDsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjMyMmlweF9jb2RlMDFbXSA9IHsgCi0jZWxzZQotdW5zaWduZWQgc2hvcnQgcmlzY19jb2RlMDFbXSA9IHsgCi0jZW5kaWYKLQkweDA0NzAsIDB4MDAwMCwgMHgwMDAwLCAweGU3MTksIDB4MDAwMCwgMHgwMDAzLCAweDAwMDMsIDB4MDAxNCwKLQkweDAxMzcsIDB4MjA0MywgMHg0ZjUwLCAweDU5NTIsIDB4NDk0NywgMHg0ODU0LCAweDIwMzIsIDB4MzAzMCwKLQkweDMxMjAsIDB4NTE0YywgMHg0ZjQ3LCAweDQ5NDMsIDB4MjA0MywgMHg0ZjUyLCAweDUwNGYsIDB4NTI0MSwKLQkweDU0NDksIDB4NGY0ZSwgMHgyMDQ5LCAweDUzNTAsIDB4MzIzMywgMHgzMDMwLCAweDIwNDYsIDB4Njk3MiwKLQkweDZkNzcsIDB4NjE3MiwgMHg2NTIwLCAweDIwNTYsIDB4NjU3MiwgMHg3MzY5LCAweDZmNmUsIDB4MjAzMCwKLQkweDMzMmUsIDB4MzAzMywgMHgyZTMyLCAweDMwMjAsIDB4MjAyMCwgMHgyMDIwLCAweDI0MDAsIDB4MjBhOSwKLQkweDAwMGYsIDB4MjAwMSwgMHgwMDAwLCAweDQwMGYsIDB4MjA5MSwgMHgyMjAwLCAweDIwYTksIDB4MDAwZiwKLQkweDIwMDEsIDB4MDAwMCwgMHg0MDBmLCAweDIwOTEsIDB4MjQwMCwgMHgyMGE5LCAweDAwMGYsIDB4MjAwMSwKLQkweDAwMDAsIDB4NDAwZiwgMHgyMDkxLCAweDI2MDAsIDB4MjBhOSwgMHgwMDBmLCAweDIwMDEsIDB4MDAwMCwKLQkweDQwMGYsIDB4MjA5MSwgMHgyODAwLCAweDIwYTksIDB4MDAwZiwgMHgyMDAxLCAweDAwMDAsIDB4NDAwZiwKLQkweDIwOTEsIDB4MmEwMCwgMHgyMGE5LCAweDAwMGYsIDB4MjAwMSwgMHgwMDAwLCAweDQwMGYsIDB4MjA5MSwKLQkweDJjMDAsIDB4MjBhOSwgMHgwMDBmLCAweDIwMDEsIDB4MDAwMCwgMHg0MDBmLCAweDIwOTEsIDB4MmUwMCwKLQkweDIwYTksIDB4MDAwZiwgMHgyMDAxLCAweDAwMDAsIDB4NDAwZiwgMHgyMDkxLCAweDIwMDAsIDB4MjAwMSwKLQkweDAwMDAsIDB4MjBjMSwgMHgwMDA0LCAweDIwYzksIDB4MWNmZiwgMHgyMDU5LCAweDAwMDAsIDB4MmI3OCwKLQkweDc4ODMsIDB4MDAwNCwgMHgyMDg5LCAweDJiYzIsIDB4MjA1MSwgMHgxODAwLCAweDJhNzAsIDB4MjBlMSwKLQkweDAwMDEsIDB4MjBlOSwgMHgwMDAxLCAweDIwMDksIDB4MDAwMCwgMHgwODBjLCAweDBlNzQsIDB4MDBmNiwKLQkweDc4ODgsIDB4OTAwNSwgMHgxMWY4LCAweDIwNjEsIDB4YzAwMCwgMHgwODBjLCAweDIwYzYsIDB4MTE3MCwKLQkweDIwNzksIDB4MDMwMCwgMHgwODBjLCAweDIwZGMsIDB4MjA2MSwgMHhlMDAwLCAweDA4MGMsIDB4MjBjNiwKLQkweDExMjgsIDB4MjA3OSwgMHgwMzgwLCAweDA4MGMsIDB4MjBkYywgMHgwMDYwLCAweDAwZmUsIDB4Nzg4MywKLQkweDQwMTAsIDB4NzgzNywgMHg0MDEwLCAweDc4MzMsIDB4MDAxMSwgMHgyMDkxLCAweDUwMDAsIDB4MjA5MSwKLQkweDQwODAsIDB4MGNmOCwgMHgwMGZlLCAweDIwMjksIDB4NTYwMCwgMHgyMDMxLCAweGZmZmYsIDB4MjAzOSwKLQkweDU1ZGMsIDB4MjAyMSwgMHgwMjAwLCAweDIwZTksIDB4MDAwMSwgMHgyMGExLCAweDAwMDAsIDB4MjBhOSwKLQkweDA4MDAsIDB4OTAwZSwgMHg0MTA0LCAweDIwZTksIDB4MDAwMSwgMHgyMGExLCAweDEwMDAsIDB4OTAwZSwKLQkweDIwMDEsIDB4MGRjMSwgMHg5MDg0LCAweDBmZmYsIDB4MjBhOCwgMHg0MTA0LCAweDIwMDEsIDB4MDAwMCwKLQkweDkwODYsIDB4MDAwMCwgMHgwMTIwLCAweDIxYTgsIDB4NDEwNCwgMHg4MDAxLCAweDFkZTAsIDB4NzU2ZSwKLQkweDc2NzIsIDB4Nzc2YSwgMHg3NDc2LCAweDc0N2EsIDB4MDBlNiwgMHgyMDcxLCAweDFiNzMsIDB4MjQ3MiwKLQkweDAwZWUsIDB4MjBhMSwgMHgxZGRjLCAweDcxNzAsIDB4ODEwZCwgMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwKLQkweDkxOGMsIDB4MDAwZiwgMHgyMDAxLCAweDAwMDEsIDB4OTExMiwgMHg5MDBlLCAweDIxYTgsIDB4NDEwNCwKLQkweDgyMTEsIDB4MWRlMCwgMHg3MTcwLCAweDM0MDAsIDB4ODAwMSwgMHg5MTAyLCAweDAxMjAsIDB4MDIxOCwKLQkweDIwYTgsIDB4OTAwZSwgMHg0MTA0LCAweDIwMDksIDB4MTgwMCwgMHg4MTBkLCAweDgxMGQsIDB4ODEwZCwKLQkweDgxMGQsIDB4ODEwZCwgMHg5MThjLCAweDAwMWYsIDB4MjAwMSwgMHgwMDAxLCAweDkxMTIsIDB4MjBlOSwKLQkweDAwMDEsIDB4MjBhMSwgMHgwODAwLCAweDkwMGUsIDB4MjBhOSwgMHgwODAwLCAweDQxMDQsIDB4ODIxMSwKLQkweDFkZDgsIDB4MDgwYywgMHgwZjcxLCAweDA4MGMsIDB4NjFhYiwgMHgwODBjLCAweGIxMDIsIDB4MDgwYywKLQkweDExMjgsIDB4MDgwYywgMHgxMzUyLCAweDA4MGMsIDB4MWMxYywgMHgwODBjLCAweDk1ODIsIDB4MDgwYywKLQkweDBkMTcsIDB4MDgwYywgMHgxMGFkLCAweDA4MGMsIDB4MzU4ZSwgMHgwODBjLCAweDdhY2EsIDB4MDgwYywKLQkweDZjZWEsIDB4MDgwYywgMHg4YzVkLCAweDA4MGMsIDB4ODhiZSwgMHgwODBjLCAweDIyYmYsIDB4MDgwYywKLQkweDgxZjUsIDB4MDgwYywgMHgyMGY1LCAweDA4MGMsIDB4MjIzMywgMHgwODBjLCAweDIyYjQsIDB4MjA5MSwKLQkweDMwMDksIDB4Nzg4MywgMHgwMDAwLCAweDEwMDQsIDB4MDk0MywgMHg3ODgwLCAweDkwODYsIDB4MDAwMiwKLQkweDExOTAsIDB4Nzg4MywgMHg0MDAwLCAweDc4MzcsIDB4NDAwMCwgMHg3ODMzLCAweDAwMTAsIDB4MGUwNCwKLQkweDA5MzcsIDB4MjA5MSwgMHg1MDAwLCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwKLQkweGQwODQsIDB4MTkwYywgMHgxMjAwLCAweDIwNzEsIDB4MTgwMCwgMHg3MDAzLCAweDAwMDAsIDB4NzgwYywKLQkweDkwODQsIDB4MDAzMCwgMHg5MDg2LCAweDAwMjAsIDB4MTE2OCwgMHg3MDM0LCAweGMwOGQsIDB4NzAzNiwKLQkweDIwMDEsIDB4MDA1MCwgMHg3MDc2LCAweDcwN2EsIDB4NzA1NiwgMHg2MDZiLCAweDI2OWMsIDB4MjA3MSwKLQkweDFiNzMsIDB4MjA3MiwgMHgyMDcxLCAweDE4MDAsIDB4NzAwMCwgMHg5MDhlLCAweDAwMDMsIDB4MTE2OCwKLQkweDA4MGMsIDB4NGQ2NiwgMHgwODBjLCAweDM1YjUsIDB4MDgwYywgMHg3YjMyLCAweDA4MGMsIDB4NzI3NSwKLQkweDA4MGMsIDB4OGQ0NCwgMHgwODBjLCAweDg4ZTcsIDB4MGM2OCwgMHgwMDBiLCAweDBjODgsIDB4MDk3OSwKLQkweDA5N2EsIDB4MGIxNSwgMHgwOTc3LCAweDBiY2YsIDB4MGQxNiwgMHgwZDE2LCAweDBkMTYsIDB4MDgwYywKLQkweDBkODUsIDB4MDAwNSwgMHgwMTI2LCAweDAwZjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDAsIDB4OTA4NiwKLQkweDAwMDEsIDB4MTkwNCwgMHgwYWU4LCAweDA4MGMsIDB4MGVjNCwgMHgwODBjLCAweDc3OWUsIDB4MDE1MCwKLQkweDA4MGMsIDB4NzdjMSwgMHgxNWIwLCAweDIwNzksIDB4MDEwMCwgMHg3ODI4LCAweDkwODUsIDB4MTgwMCwKLQkweDc4MmEsIDB4MDQ3OCwgMHgwODBjLCAweDc2Y2QsIDB4NzAwMCwgMHg5MDg2LCAweDAwMDEsIDB4MTkwNCwKLQkweDBhZTgsIDB4NzA5OCwgMHg5MDg2LCAweDAwMjksIDB4MTkwNCwgMHgwYWU4LCAweDA4MGMsIDB4ODhhNywKLQkweDA4MGMsIDB4ODg5OSwgMHgyMDAxLCAweDAxNjEsIDB4MjAwMywgMHgwMDAxLCAweDIwNzksIDB4MDEwMCwKLQkweDIwMTEsIDB4ZmZmZiwgMHgwODBjLCAweDJhZDMsIDB4N2EyOCwgMHg5Mjk1LCAweDVlMmMsIDB4N2EyYSwKLQkweDIwMTEsIDB4NzYxMiwgMHgwODBjLCAweDg5OTMsIDB4MjAxMSwgMHg3NjA1LCAweDA4MGMsIDB4OGE5ZiwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4MjAxMSwgMHg4MDMwLCAweDkwMWUsIDB4NzM5NiwKLQkweDA0ZDAsIDB4MDgwYywgMHg1OGFhLCAweDIwNzksIDB4MDEwMCwgMHg3ODQ0LCAweDkwMDUsIDB4MTkwNCwKLQkweDBhZTgsIDB4MjAxMSwgMHg2MDAyLCAweDA4MGMsIDB4ODk5MywgMHgyMDExLCAweDc2MTIsIDB4MDgwYywKLQkweDg5OTMsIDB4MjAxMSwgMHg3NjA1LCAweDA4MGMsIDB4OGE5ZiwgMHgyMDAxLCAweDAyNjUsIDB4MjAwMSwKLQkweDAyMDUsIDB4MjAwMywgMHgwMDAwLCAweDc4NDAsIDB4OTA4NCwgMHhmZmZiLCAweDc4NDIsIDB4MjAwMSwKLQkweDE5YTcsIDB4MjAwNCwgMHg5MDA1LCAweDExNDAsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4MDgwYywKLQkweDYxNTMsIDB4MDBjZSwgMHgwODA0LCAweDBhZTgsIDB4NzgwZiwgMHgwMDZiLCAweDdhMjgsIDB4MDgwYywKLQkweDc3YTYsIDB4MDExOCwgMHg5Mjk1LCAweDVlMmMsIDB4MDAxMCwgMHg5Mjk1LCAweDQwMmMsIDB4N2EyYSwKLQkweDIwMTEsIDB4ODAxMCwgMHg3M2Q4LCAweDIwMDEsIDB4MTlhOCwgMHgyMDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDI5OWIsIDB4MDgwYywgMHg0Y2ExLCAweDcyNDgsIDB4YzI4NCwgMHg3MjRhLCAweDIwMDEsIDB4MTgwYywKLQkweDIwMGMsIDB4YzFhYywgMHhjMWNjLCAweDIxMDIsIDB4MjAwMSwgMHgwMzkwLCAweDIwMDMsIDB4MDQwMCwKLQkweDA4MGMsIDB4YWNmYywgMHgwODBjLCAweGE0ZjEsIDB4MjAxMSwgMHgwMDA0LCAweDA4MGMsIDB4Y2YyYiwKLQkweDA4MGMsIDB4YWQxOCwgMHgwODBjLCAweDZhYjEsIDB4MDgwYywgMHg3NzllLCAweDExMjAsIDB4MDgwYywKLQkweDI5ZmMsIDB4MDYwMCwgMHgwNDIwLCAweDA4MGMsIDB4NjE1YSwgMHgwMTQwLCAweDcwOTcsIDB4MDAwMSwKLQkweDcwZDMsIDB4MDAwMCwgMHgwODBjLCAweDVhN2MsIDB4MDgwNCwgMHgwYWU4LCAweDIwMDEsIDB4MDM5MCwKLQkweDIwMDMsIDB4MDQwNCwgMHgwODBjLCAweDU4NDAsIDB4ZDA5NCwgMHgwMTg4LCAweDIwMTEsIDB4MTgwYywKLQkweDIyMDQsIDB4YzBjZCwgMHgyMDEyLCAweDA4MGMsIDB4NTg0NCwgMHhkMGQ0LCAweDExMTgsIDB4MDgwYywKLQkweDI5ZmMsIDB4MTI3MCwgMHgyMDExLCAweDE4MGMsIDB4MjIwNCwgMHhjMGJjLCAweDAwYTgsIDB4MDgwYywKLQkweDU4NDQsIDB4ZDBkNCwgMHgxZGI4LCAweDIwMTEsIDB4MTgwYywgMHgyMjA0LCAweGMwYmQsIDB4MDA2MCwKLQkweDIwMTEsIDB4MTgwYywgMHgyMjA0LCAweGMwYmQsIDB4MjAxMiwgMHgwODBjLCAweDZjMDksIDB4MTEyOCwKLQkweGQwYTQsIDB4MDExOCwgMHgyMjA0LCAweGMwZmQsIDB4MjAxMiwgMHgwODBjLCAweDZiY2YsIDB4MDEyMCwKLQkweDdhMGMsIDB4YzJiNCwgMHg3YTBlLCAweDAwYTgsIDB4NzA3ZiwgMHgwMDAwLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDExMzAsIDB4NzBiMCwgMHg5MDA1LCAweDExNjgsIDB4MDgwYywgMHhkMzg5LCAweDAwNTAsIDB4MDgwYywKLQkweGQzODksIDB4NzBkYywgMHhkMDljLCAweDExMjgsIDB4NzBiMCwgMHg5MDA1LCAweDAxMTAsIDB4MDgwYywKLQkweDYxMzAsIDB4NzBlNywgMHgwMDAwLCAweDcwZTMsIDB4MDAwMCwgMHg3MGE3LCAweDAwMDAsIDB4MDgwYywKLQkweDJhMDQsIDB4MDIyOCwgMHgyMDExLCAweDAxMDEsIDB4MjIwNCwgMHhjMGM0LCAweDIwMTIsIDB4NzJkYywKLQkweDA4MGMsIDB4Nzc5ZSwgMHgxMTc4LCAweDkwMTYsIDB4MDAxNiwgMHgwODBjLCAweDI3YTQsIDB4MjAxOSwKLQkweDE5NmQsIDB4MjExYSwgMHgwMDFlLCAweDcwNWYsIDB4ZmZmZiwgMHg3MDYzLCAweDAwZWYsIDB4NzA4MywKLQkweDAwMDAsIDB4MDAyMCwgMHgyMDE5LCAweDE5NmQsIDB4MjAxYiwgMHgwMDAwLCAweDIwNzksIDB4MTg0NywKLQkweDc4MDQsIDB4ZDBhYywgMHgwMTA4LCAweGMyOTUsIDB4NzJkZSwgMHgwODBjLCAweDc3OWUsIDB4MDExOCwKLQkweDkyOTYsIDB4MDAwNCwgMHgwNTE4LCAweDIwMTEsIDB4MDAwMSwgMHgwODBjLCAweGNmMmIsIDB4NzBhYiwKLQkweDAwMDAsIDB4NzBhZiwgMHhmZmZmLCAweDcwMDMsIDB4MDAwMiwgMHgwMGZlLCAweDA4MGMsIDB4MzBiZiwKLQkweDA4MGMsIDB4YWNmYywgMHgyMDExLCAweDAwMDUsIDB4MDgwYywgMHhhNjJiLCAweDA4MGMsIDB4YWQxOCwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgwMTQ4LCAweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDAwMTYsIDB4MDgwYywKLQkweDI3YTQsIDB4NjFlMiwgMHgwMDFlLCAweDAwY2UsIDB4MDEyZSwgMHgwMGUwLCAweDcwYWIsIDB4MDAwMCwKLQkweDcwYWYsIDB4ZmZmZiwgMHg3MDAzLCAweDAwMDIsIDB4MDgwYywgMHhhY2ZjLCAweDIwMTEsIDB4MDAwNSwKLQkweDA4MGMsIDB4YTYyYiwgMHgwODBjLCAweGFkMTgsIDB4MDgwYywgMHg3NzllLCAweDAxNDgsIDB4MDBjNiwKLQkweDIwNjEsIDB4MDEwMCwgMHgwMDE2LCAweDA4MGMsIDB4MjdhNCwgMHg2MWUyLCAweDAwMWUsIDB4MDBjZSwKLQkweDAwZmUsIDB4MDEyZSwgMHgwMDA1LCAweDAwYzYsIDB4MDBiNiwgMHgwODBjLCAweDc3OWUsIDB4MTExOCwKLQkweDIwYTksIDB4MDgwMCwgMHgwMDEwLCAweDIwYTksIDB4MDc4MiwgMHgwODBjLCAweDc3OWUsIDB4MTExMCwKLQkweDkwMGUsIDB4MDAxMCwgMHgyMDA5LCAweDAwN2UsIDB4ODZmZiwgMHgwMTM4LCAweDkxODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA1ZCwgMHgwMTEwLCAweGI4MDAsIDB4ZDBiYywgMHgwOTBjLCAweDM0MWUsIDB4ODEwOCwKLQkweDFmMDQsIDB4MGFmYywgMHg3MDdmLCAweDAwMDAsIDB4NzA4MCwgMHg5MDg0LCAweDAwZmYsIDB4NzA4MiwKLQkweDcwYjMsIDB4MDAwMCwgMHgwMGJlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGI2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAwMCwgMHg5MDg2LCAweDAwMDIsIDB4MTkwNCwgMHgwYmNjLCAweDcwYWMsIDB4OTA4NiwKLQkweGZmZmYsIDB4MDEyMCwgMHgwODBjLCAweDMwYmYsIDB4MDgwNCwgMHgwYmNjLCAweDcwZGMsIDB4ZDBhYywKLQkweDExMTAsIDB4ZDA5YywgMHgwNTM4LCAweGQwODQsIDB4MDUyOCwgMHgwMDA2LCAweDIwMDEsIDB4MDEwMywKLQkweDIwMDMsIDB4MDAyYiwgMHgwMDBlLCAweGQwOGMsIDB4MDFlOCwgMHgwODBjLCAweDM0ODcsIDB4MTFiMCwKLQkweDcwZTAsIDB4OTA4NiwgMHhmZmZmLCAweDAxOTAsIDB4MDgwYywgMHgzMjdiLCAweDcwZGMsIDB4ZDA5NCwKLQkweDE5MDQsIDB4MGJjYywgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHhkNjQ1LCAweDAxMTAsIDB4MjAxMSwKLQkweDAwMDMsIDB4OTAxZSwgMHgwODBjLCAweDMyYjUsIDB4MDgwNCwgMHgwYmNjLCAweDcwZTQsIDB4OTAwNSwKLQkweDE5MDQsIDB4MGJjYywgMHg3MGE4LCAweDkwMDUsIDB4MTkwNCwgMHgwYmNjLCAweDcwZGMsIDB4ZDBhNCwKLQkweDAxMTgsIDB4ZDBiNCwgMHgwOTA0LCAweDBiY2MsIDB4MDgwYywgMHg2YmNmLCAweDE5MDQsIDB4MGJjYywKLQkweDA4MGMsIDB4NmMyMiwgMHgxOTA0LCAweDBiY2MsIDB4MDgwYywgMHg2YzA5LCAweDAxYzAsIDB4MDE1NiwKLQkweDAwYzYsIDB4MjBhOSwgMHgwMDdmLCAweDkwMGUsIDB4MDAxNiwgMHgwODBjLCAweDY3YjQsIDB4MTExOCwKLQkweGI4MDAsIDB4ZDBlYywgMHgxMTM4LCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDBiNmMsIDB4MDBjZSwKLQkweDAxNWUsIDB4MDAyOCwgMHgwMDFlLCAweDAwY2UsIDB4MDE1ZSwgMHgwODA0LCAweDBiY2MsIDB4MDAwNiwKLQkweDIwMDEsIDB4MDEwMywgMHgyMDAzLCAweDAwMmIsIDB4MDAwZSwgMHgyMDExLCAweDE5YjQsIDB4MDgwYywKLQkweDBmZTEsIDB4MjAxMSwgMHgxOWNlLCAweDA4MGMsIDB4MGZlMSwgMHg3MDMwLCAweGMwOGMsIDB4NzAzMiwKLQkweDcwMDMsIDB4MDAwMywgMHg3MGFmLCAweGZmZmYsIDB4MDgwYywgMHgwZTk4LCAweDkwMDYsIDB4MDgwYywKLQkweDI2MzEsIDB4MDgwYywgMHgzNDg3LCAweDAxMTgsIDB4MDgwYywgMHg0ZTNlLCAweDAwNTAsIDB4MDAzNiwKLQkweDAwNDYsIDB4MjAxOSwgMHhmZmZmLCAweDIwMjEsIDB4MDAwNiwgMHgwODBjLCAweDRlNTgsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MDgwYywgMHg3N2MxLCAweDAxNTAsIDB4MDgwYywKLQkweDc3OWUsIDB4NzgyOCwgMHgwMTE4LCAweDkwODQsIDB4ZTFmZiwgMHgwMDEwLCAweDkwODQsIDB4ZmZkZiwKLQkweDc4MmEsIDB4MDBmZSwgMHgwODBjLCAweGFjZmMsIDB4MjAwMSwgMHgxOWU5LCAweDIwMDQsIDB4OTA4NiwKLQkweDAwMDUsIDB4MTEyMCwgMHgyMDExLCAweDAwMDAsIDB4MDgwYywgMHhhNjJiLCAweDIwMTEsIDB4MDAwMCwKLQkweDA4MGMsIDB4YTYzNSwgMHgwODBjLCAweGFkMTgsIDB4MDEyZSwgMHgwMGJlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDA0NiwgMHgwMGY2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzksIDB4MDEwMCwKLQkweDc5MDQsIDB4OTE4YywgMHhmZmZkLCAweDc5MDYsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NjExOSwKLQkweDc5NDAsIDB4OTE4YywgMHgwMDEwLCAweDc5NDIsIDB4NzkyNCwgMHhkMWI0LCAweDAxMjAsIDB4MjAxMSwKLQkweDAwNDAsIDB4MDgwYywgMHgyYWQzLCAweGQxOWMsIDB4MDEyMCwgMHgyMDExLCAweDAwMDgsIDB4MDgwYywKLQkweDJhZDMsIDB4MDAwNiwgMHgwMDM2LCAweDAxNTYsIDB4MDAwMCwgMHgyMDAxLCAweDE5YTgsIDB4MjAwNCwKLQkweDkwMDUsIDB4MTUxOCwgMHgwODBjLCAweDJhNjcsIDB4MTE0OCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDI5Y2EsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjlhZCwgMHgwMGI4LCAweDA4MGMsIDB4MmE2ZiwKLQkweDExMzgsIDB4OTAwNiwgMHgwODBjLCAweDI5Y2EsIDB4OTAwNiwgMHgwODBjLCAweDI5YWQsIDB4MDA2OCwKLQkweDA4MGMsIDB4MmE3NywgMHgxZDUwLCAweDIwMDEsIDB4MTk5OCwgMHgyMDA0LCAweGQwZmMsIDB4MDEwOCwKLQkweDAwMjAsIDB4MDgwYywgMHgyN2Q4LCAweDA4MDQsIDB4MGNjOSwgMHgyMGE5LCAweDAwM2EsIDB4MWQwNCwKLQkweDBjMWYsIDB4MDgwYywgMHg4YTdmLCAweDFmMDQsIDB4MGMxZiwgMHgwODBjLCAweDc3YWYsIDB4MDE0OCwKLQkweDA4MGMsIDB4NzdjMSwgMHgxMTE4LCAweDA4MGMsIDB4N2FjNSwgMHgwMDUwLCAweDA4MGMsIDB4NzdhNiwKLQkweDBkZDAsIDB4MDgwYywgMHg3YWMwLCAweDA4MGMsIDB4N2FiNiwgMHgwODBjLCAweDc2Y2QsIDB4MDAyMCwKLQkweDIwMDksIDB4MDBmOCwgMHgwODBjLCAweDYxMTksIDB4Nzg1MCwgMHhjMGU1LCAweDc4NTIsIDB4MDgwYywKLQkweDc3OWUsIDB4MDEyMCwgMHg3ODQzLCAweDAwOTAsIDB4Nzg0MywgMHgwMDEwLCAweDIwMjEsIDB4ZTY3OCwKLQkweDIwMTksIDB4ZWE2MCwgMHgwZDBjLCAweDhhN2YsIDB4NzgyMCwgMHhkMDljLCAweDE1YTAsIDB4MDgwYywKLQkweDc3OWUsIDB4MDkwNCwgMHgwY2FiLCAweDc4MjQsIDB4ZDBhYywgMHgxOTA0LCAweDBjY2UsIDB4MDgwYywKLQkweDc3YzEsIDB4MTU0OCwgMHgwMDQ2LCAweDIwMjEsIDB4MDMyMCwgMHg4NDIxLCAweDFkZjAsIDB4MDA0ZSwKLQkweDIwMTEsIDB4MTgwMCwgMHgwODBjLCAweDJhZDMsIDB4MDgwYywgMHgyYTdmLCAweDc4MjQsIDB4OTA4NCwKLQkweDE4MDAsIDB4MTE2OCwgMHg5NDg0LCAweDBmZmYsIDB4MTE0MCwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwKLQkweDkwODQsIDB4OTAwMCwgMHgwMTEwLCAweDA4MGMsIDB4MGNmMSwgMHg4NDIxLCAweDExNjAsIDB4MWQwNCwKLQkweDBjN2IsIDB4MDgwYywgMHg4YTdmLCAweDA4MGMsIDB4N2FjMCwgMHgwODBjLCAweDdhYjYsIDB4NzAwMywKLQkweDAwMDEsIDB4MDgwNCwgMHgwY2NlLCAweDgzMTksIDB4MTkyOCwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwKLQkweDkwODQsIDB4OTAwMCwgMHgwMTEwLCAweDA4MGMsIDB4MGNmMSwgMHgxZDA0LCAweDBjOTEsIDB4MDgwYywKLQkweDhhN2YsIDB4MjAwOSwgMHgxOTliLCAweDIxMDQsIDB4OTAwNSwgMHgwMTE4LCAweDgwMDEsIDB4MjAwYSwKLQkweDExODgsIDB4MjAwYiwgMHgwMDBhLCAweDIwMTEsIDB4MDA0OCwgMHgwODBjLCAweDJhZDMsIDB4MjBhOSwKLQkweDAwMDIsIDB4MDgwYywgMHgyYTYwLCAweDc5MjQsIDB4MDgwYywgMHgyYTdmLCAweGQxOWMsIDB4MDExMCwKLQkweDA4MGMsIDB4Mjk5YiwgMHgwMGYwLCAweDA4MGMsIDB4NzdhZiwgMHgxMTQwLCAweDk0YTIsIDB4MDNlOCwKLQkweDExMjgsIDB4MDgwYywgMHg3NzcyLCAweDcwMDMsIDB4MDAwMSwgMHgwMGMwLCAweDIwMTEsIDB4MTgwMCwKLQkweDA4MGMsIDB4MmFkMywgMHgwODBjLCAweDJhN2YsIDB4NzgyNCwgMHgwODBjLCAweDc3YjgsIDB4MDExMCwKLQkweGQwYWMsIDB4MTE2MCwgMHg5MDg0LCAweDE4MDAsIDB4MDkwNCwgMHgwYzgzLCAweDcwMDMsIDB4MDAwMSwKLQkweDAwMjgsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjYzMSwgMHgwMGEwLCAweDc4NTAsIDB4YzBlNCwKLQkweDc4NTIsIDB4MjAwOSwgMHgxODBjLCAweDIxMGMsIDB4ZDE5YywgMHgxMTIwLCAweDc5MDQsIDB4OTE4ZCwKLQkweDAwMDIsIDB4NzkwNiwgMHgyMDExLCAweDAwNDgsIDB4MDgwYywgMHgyYWQzLCAweDc4MjgsIDB4OTA4NSwKLQkweDAwMjgsIDB4NzgyYSwgMHgyMDAxLCAweDE5YTgsIDB4MjAwMywgMHgwMDAwLCAweDkwMDYsIDB4NzhmMiwKLQkweDAxNWUsIDB4MDAzZSwgMHgwMDBlLCAweDAxMmUsIDB4MDBmZSwgMHgwMDRlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDAwYjYsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDAxNTYsIDB4MDA3MSwgMHgwZDBjLCAweDhhN2YsIDB4MDE1ZSwKLQkweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDBiZSwgMHgwMDRlLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxODllLCAweDcwMDQsIDB4OTA4NiwKLQkweDAwMDEsIDB4MTExMCwgMHgwODBjLCAweDM1YjUsIDB4MDBlZSwgMHgwMDA1LCAweDAwMDUsIDB4MmE3MCwKLQkweDIwNjEsIDB4MTlhYywgMHgyMDYzLCAweDAwMDMsIDB4NjAwNywgMHgwMDAzLCAweDYwMGIsIDB4MDAxNCwKLQkweDYwMGYsIDB4MDEzNywgMHgyMDAxLCAweDE5N2MsIDB4OTAwZSwgMHgyMTAyLCAweDcxOTYsIDB4MjAwMSwKLQkweDAxMDAsIDB4MjAwNCwgMHg5MDgyLCAweDAwMDIsIDB4MDIxOCwgMHg3MDVmLCAweGZmZmYsIDB4MDAwOCwKLQkweDcxNWUsIDB4NzA2NywgMHhmZmZmLCAweDcxN2UsIDB4NzE4MiwgMHgwODBjLCAweGQzODksIDB4NzBlZiwKLQkweDAwYzAsIDB4MjA2MSwgMHgxOTZjLCAweDYwMDMsIDB4MDkwOSwgMHg2MTA2LCAweDYwMGIsIDB4ODgwMCwKLQkweDYwMGYsIDB4MDIwMCwgMHg2MDEzLCAweDAwZmYsIDB4NjAxNywgMHgwMDFmLCAweDYxMWEsIDB4NjAxZiwKLQkweDA3ZDAsIDB4MjA2MSwgMHgxOTc0LCAweDYwMDMsIDB4ODAwMCwgMHg2MTA2LCAweDYxMGEsIDB4NjAwZiwKLQkweDAyMDAsIDB4NjAxMywgMHgwMGZmLCAweDYxMTYsIDB4NjAxYiwgMHgwMDAxLCAweDYxMWUsIDB4MjA2MSwKLQkweDE5ODksIDB4NjAwMywgMHg1MTRjLCAweDYwMDcsIDB4NGY0NywgMHg2MDBiLCAweDQ5NDMsIDB4NjAwZiwKLQkweDIwMjAsIDB4MjAwMSwgMHgxODJjLCAweDIxMDIsIDB4MDAwNSwgMHg5MDE2LCAweDA4MGMsIDB4NjdiNCwKLQkweDExNzgsIDB4YjgwNCwgMHg5MGM0LCAweDAwZmYsIDB4OThjNiwgMHgwMDA2LCAweDAxMjgsIDB4OTBjNCwKLQkweGZmMDAsIDB4OThjNiwgMHgwNjAwLCAweDExMjAsIDB4OTE4NiwgMHgwMDgwLCAweDAxMDgsIDB4ODIxMCwKLQkweDgxMDgsIDB4OTE4NiwgMHgwODAwLCAweDFkNTAsIDB4MjIwOCwgMHgwMDA1LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzksIDB4MDAwMCwgMHgwMDBlLCAweDAwZjYsIDB4MDAxMCwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwKLQkweDBkODcsIDB4MDAwNiwgMHgwMDE2LCAweDIwMDEsIDB4ODAwMiwgMHgwMDA2LCAweDIwNzksIDB4MDAwMCwKLQkweDAwMGUsIDB4Nzg4MiwgMHg3ODM2LCAweDAwMWUsIDB4Nzk4ZSwgMHgwMDBlLCAweDc4OGEsIDB4MDAwZSwKLQkweDc4ODYsIDB4MzkwMCwgMHg3ODlhLCAweDAwZDYsIDB4MjA2OSwgMHgwMzAwLCAweDY4MTgsIDB4NzhhZSwKLQkweDY4MWMsIDB4NzhiMiwgMHg2ODA4LCAweDc4YmUsIDB4MDBkZSwgMHg3ODMzLCAweDAwMTIsIDB4MjA5MSwKLQkweDUwMDAsIDB4MDE1NiwgMHgwMGQ2LCAweDAwMzYsIDB4MDAyNiwgMHgyMDc5LCAweDAzMDAsIDB4MjA2OSwKLQkweDFiMmIsIDB4N2EwOCwgMHgyMjZhLCAweDIwNjksIDB4MWIyYywgMHg3YTE4LCAweDIyNmEsIDB4OGQ2OCwKLQkweDdhMWMsIDB4MjI2YSwgMHg3ODJjLCAweDIwMTksIDB4MWIzOSwgMHgyMDFhLCAweDIwMTksIDB4MWIzYywKLQkweDkwMTYsIDB4NzgwOCwgMHhkMDljLCAweDAxNjgsIDB4NzgyMCwgMHgyMDFhLCAweDgyMTAsIDB4ODMxOCwKLQkweDkzODYsIDB4MWI1NSwgMHgwMTA4LCAweDBjYTgsIDB4NzgwOCwgMHhkMDljLCAweDAxMTAsIDB4MjAxMSwKLQkweGRlYWQsIDB4MjAxOSwgMHgxYjNhLCAweDc4MmMsIDB4MjAxYSwgMHg4MzE4LCAweDIyMWEsIDB4NzgwMywKLQkweDAwMDAsIDB4MjA2OSwgMHgxYTgxLCAweDkwMWUsIDB4MjBhOSwgMHgwMDIwLCAweDdiMjYsIDB4N2EyOCwKLQkweDIyNmEsIDB4OGQ2OCwgMHg4MzE4LCAweDFmMDQsIDB4MGRkZSwgMHgyMDY5LCAweDFhYTEsIDB4MjAxOSwKLQkweDAwNTAsIDB4MjBhOSwgMHgwMDIwLCAweDdiMjYsIDB4N2EyOCwgMHgyMjZhLCAweDhkNjgsIDB4ODMxOCwKLQkweDFmMDQsIDB4MGRlYiwgMHgwNDkxLCAweDAwMmUsIDB4MDAzZSwgMHgwMGRlLCAweDAxNWUsIDB4MjA3OSwKLQkweDE4MDAsIDB4NzgwMywgMHgwMDA1LCAweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwKLQkweGQwODQsIDB4MDE4MCwgMHgyMDAxLCAweDFhMjUsIDB4MjAwNCwgMHg5MDA1LCAweDAxMjgsIDB4MjAwMSwKLQkweDAwOGIsIDB4MjAwNCwgMHhkMGZjLCAweDBkZDgsIDB4MjAwMSwgMHgwMDhhLCAweDIwMDMsIDB4MDAwMiwKLQkweDIwMDMsIDB4MTAwMSwgMHgwODBjLCAweDU4NGYsIDB4MTE3MCwgMHgwODBjLCAweDBmMzIsIDB4MDExMCwKLQkweDA4MGMsIDB4MGU4NSwgMHgwODBjLCAweDU4NGYsIDB4MTEzMCwgMHgyMDcxLCAweDE4MDAsIDB4MjAxMSwKLQkweDgwMDAsIDB4MDgwYywgMHgwZjQ2LCAweDBjNzAsIDB4MDAwNSwgMHgyMDAxLCAweDAzODIsIDB4MjAwNCwKLQkweDkwODQsIDB4MDAwNywgMHg5MDg2LCAweDAwMDEsIDB4MTEyMCwgMHgyMDAxLCAweDAwMTUsIDB4MDgwYywKLQkweGFjZWQsIDB4MjA3OSwgMHgwMzgwLCAweDIwNjksIDB4MWIwYiwgMHg3ODE4LCAweDY4MDIsIDB4NzgxYywKLQkweDY4MDYsIDB4Nzg0MCwgMHg2ODBhLCAweDc4NDQsIDB4NjgwZSwgMHg3ODJjLCAweDY4MTIsIDB4MjAxOSwKLQkweDFiMTYsIDB4OTAxNiwgMHg3ODA4LCAweGQwOWMsIDB4MDE1MCwgMHg3ODIwLCAweDIwMWEsIDB4ODIxMCwKLQkweDgzMTgsIDB4ODIxMCwgMHg5MjgyLCAweDAwMTEsIDB4MGVhOCwgMHgyMDExLCAweGRlYWQsIDB4NmEyYSwKLQkweDc4MzAsIDB4NjgxYSwgMHg3ODM0LCAweDY4MWUsIDB4NzgzOCwgMHg2ODIyLCAweDc4M2MsIDB4NjgyNiwKLQkweDc4MDMsIDB4MDAwMCwgMHgyMDY5LCAweDFhY2IsIDB4OTAxZSwgMHgyMGE5LCAweDAwMjAsIDB4N2IyNiwKLQkweDc4MjgsIDB4MjA2YSwgMHg4ZDY4LCAweDgzMTgsIDB4MWYwNCwgMHgwZTVmLCAweDIwNjksIDB4MWFlYiwKLQkweDIwMTksIDB4MDBiMCwgMHgyMGE5LCAweDAwMjAsIDB4N2IyNiwgMHg3ODI4LCAweDIwNmEsIDB4OGQ2OCwKLQkweDgzMTgsIDB4MWYwNCwgMHgwZTZjLCAweDAwMDUsIDB4OTE4YywgMHgwM2ZmLCAweDIwMDEsIDB4MDAwMywKLQkweDIwMDQsIDB4OTA4NCwgMHgwNjAwLCAweDExMTgsIDB4OTE4ZCwgMHg2YzAwLCAweDAwMTAsIDB4OTE4ZCwKLQkweDY0MDAsIDB4MjAwMSwgMHgwMTdmLCAweDIxMDIsIDB4MDAwNSwgMHgwMDI2LCAweDAxMjYsIDB4MjAxMSwKLQkweDAwODAsIDB4MDgwYywgMHgwZjI0LCAweDIwYTksIDB4MDkwMCwgMHgwODBjLCAweDBmNWEsIDB4MjAxMSwKLQkweDAwNDAsIDB4MDgwYywgMHgwZjI0LCAweDIwYTksIDB4MDkwMCwgMHgwODBjLCAweDBmNWEsIDB4MGM3OCwKLQkweDAwMjYsIDB4MDgwYywgMHgwZjMyLCAweDExODgsIDB4MjAxMSwgMHgwMTBlLCAweDIyMTQsIDB4OTI5NCwKLQkweDAwMDcsIDB4OTI5NiwgMHgwMDA3LCAweDAxMTgsIDB4MjAxMSwgMHgwOTQ3LCAweDAwMTAsIDB4MjAxMSwKLQkweDFiNDcsIDB4MDgwYywgMHgwZjQ2LCAweDAwMmUsIDB4MDAwNSwgMHgyMDExLCAweDAxMGUsIDB4MjIxNCwKLQkweDkyOTQsIDB4MDAwNywgMHg5Mjk2LCAweDAwMDcsIDB4MDExOCwgMHgyMDExLCAweGE4ODAsIDB4MDAxMCwKLQkweDIwMTEsIDB4Njg0MCwgMHhkMGU0LCAweDcwZjMsIDB4MDAwMCwgMHgxMTIwLCAweDcwZjMsIDB4MGZhMCwKLQkweDA4MGMsIDB4MGYzNywgMHgwMDJlLCAweDAwMDUsIDB4MDAyNiwgMHgwODBjLCAweDBmMzIsIDB4MDE0OCwKLQkweGQwYTQsIDB4MTEzOCwgMHgyMDExLCAweGNkZDUsIDB4MDAxMCwgMHgyMDExLCAweDAwODAsIDB4MDgwYywKLQkweDBmMzcsIDB4MDAyZSwgMHgwMDA1LCAweDAwMjYsIDB4NzBmMywgMHgwMDAwLCAweDA4MGMsIDB4MGYzMiwKLQkweDExMzAsIDB4MjAxMSwgMHg4MDQwLCAweDA4MGMsIDB4MGY0NiwgMHgwMDJlLCAweDAwMDUsIDB4MDgwYywKLQkweDJhNzcsIDB4MTExOCwgMHgyMDExLCAweGNkYzUsIDB4MDAxMCwgMHgyMDExLCAweGNhYzIsIDB4MDgwYywKLQkweDBmMzcsIDB4MDAyZSwgMHgwMDA1LCAweDAwZTYsIDB4MDAxNiwgMHgwMDA2LCAweDIwNzEsIDB4MTgwMCwKLQkweGQwYjQsIDB4NzBlYywgMHg3MWU4LCAweDExMTgsIDB4YzBlNCwgMHhjMWY0LCAweDAwNTAsIDB4MDAwNiwKLQkweDNiMDAsIDB4OTA4NCwgMHhmZjNlLCAweDIwZDgsIDB4MDAwZSwgMHg3MGYzLCAweDAwMDAsIDB4YzBlNSwKLQkweGMxZjUsIDB4MDA5OSwgMHgwMDBlLCAweDAwMWUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweDE4MDAsIDB4ZDBlNCwgMHg3MGVjLCAweDExMTAsIDB4YzBkYywgMHgwMDA4LCAweGMwZGQsIDB4MDAxNiwKLQkweDcxZTgsIDB4MDAxOSwgMHgwMDFlLCAweDAwZWUsIDB4MDAwNSwgMHg3MGVlLCAweDcxZWEsIDB4NzAwMCwKLQkweDkwODQsIDB4MDAwNywgMHgwMDBiLCAweDAwMDUsIDB4MGVlYSwgMHgwZWM0LCAweDBlYzQsIDB4MGU5OCwKLQkweDBlZDMsIDB4MGVjNCwgMHgwZWM0LCAweDBlZDMsIDB4YzI4NCwgMHgwMDE2LCAweDNiMDgsIDB4M2EwMCwKLQkweDkxMDQsIDB4OTE4ZCwgMHgwMGMxLCAweDIxZDgsIDB4OTA4NCwgMHhmZjNlLCAweDkyMDUsIDB4MjBkMCwKLQkweDAwMWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4M2IsIDB4MjAwNCwgMHhkMGRjLCAweDAwMDUsIDB4OWU4NiwKLQkweDE4MDAsIDB4MTkwYywgMHgwZDg1LCAweDcwZWMsIDB4ZDBlNCwgMHgwMTA4LCAweGMyZTUsIDB4NzJlZSwKLQkweGQwZTQsIDB4MTExOCwgMHg5Mjk0LCAweDAwYzEsIDB4MDhmOSwgMHgwMDA1LCAweDllODYsIDB4MTgwMCwKLQkweDE5MGMsIDB4MGQ4NSwgMHg3MGU4LCAweGQwZjQsIDB4MDEwOCwgMHhjMmY1LCAweDcyZWEsIDB4ZDBmNCwKLQkweDExNDAsIDB4OTI4NCwgMHg4MDAwLCAweDgwMDUsIDB4YzI4NCwgMHg5MjE1LCAweDkyOTQsIDB4MDBjMSwKLQkweDA4NjEsIDB4MDAwNSwgMHgxZDA0LCAweDBmNWEsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4MGY1YSwKLQkweDAwMDUsIDB4ODkwZSwgMHg4MTBlLCAweDgxMGYsIDB4OTE5NCwgMHgwMDNmLCAweDkxOGMsIDB4ZmZjMCwKLQkweDAwMDUsIDB4MDAwNiwgMHgyMjAwLCAweDkxNGQsIDB4ODk0ZiwgMHg4OTRkLCAweDg5NGQsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDFkNiwgMHgwMTQ2LCAweDAwMzYsIDB4MDA5NiwgMHgyMDYxLCAweDE4OGQsIDB4NjAwYiwKLQkweDAwMDAsIDB4NjAwZiwgMHgwMDAwLCAweDYwMDMsIDB4MDAwMCwgMHg2MDA3LCAweDAwMDAsIDB4MjAwOSwKLQkweGZmYzAsIDB4MjEwNSwgMHgwMDA2LCAweDIwMDEsIDB4YWFhYSwgMHgyMDBmLCAweDIwMTksIDB4NTU1NSwKLQkweDkwMTYsIDB4MjA0OSwgMHgwYmZmLCAweGFiMDIsIDB4YTAwMSwgMHhhMDAxLCAweGE4MDAsIDB4OTMwNiwKLQkweDExMzgsIDB4MjEwNSwgMHg5MzA2LCAweDAxMjAsIDB4ODIxMCwgMHg5OWM4LCAweDA0MDAsIDB4MGM5OCwKLQkweDAwMGUsIDB4MjAwZiwgMHgyMDAxLCAweDE4OWQsIDB4OTI4YSwgMHgwMDBlLCAweDE2MzgsIDB4OTI4YSwKLQkweDAwMDYsIDB4MjAxMSwgMHgwMDA2LCAweDEyMTAsIDB4MjAxMSwgMHgwMDAwLCAweDIyMDIsIDB4OTAwNiwKLQkweDIwMDgsIDB4ODJmZiwgMHgwMWIwLCAweDgyMDAsIDB4NjAwYSwgMHg2MDBmLCAweGZmZmYsIDB4NjAwMywKLQkweDAwMDIsIDB4NjAwNywgMHgwMDAwLCAweDAwMjYsIDB4MjAxOSwgMHgwMDEwLCAweDkyODAsIDB4MDAwMSwKLQkweDIwZTgsIDB4MjFhMCwgMHgyMWE4LCAweDQxMDQsIDB4ODMxOSwgMHgxZGUwLCAweDgyMTEsIDB4MWRhMCwKLQkweDAwMmUsIDB4MDA5ZSwgMHgwMDNlLCAweDAxNGUsIDB4MDFkZSwgMHgwMDA1LCAweDIwMTEsIDB4MDAwZSwKLQkweDA4ZTgsIDB4MDAxNiwgMHgwMDI2LCAweDAwOTYsIDB4MzM0OCwgMHgwODBjLCAweDBmNjEsIDB4MjEwMCwKLQkweDkzMDAsIDB4MjA5OCwgMHgyMmUwLCAweDAwOWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMzYsIDB4MzUxOCwKLQkweDIwYTksIDB4MDAwMSwgMHg0MDAyLCAweDgwMDcsIDB4NDAwNCwgMHg4MzE5LCAweDFkZDgsIDB4MDAzZSwKLQkweDAwMDUsIDB4MjBlOSwgMHgwMDAxLCAweDcxYjgsIDB4ODFmZiwgMHgxMWMwLCAweDkwMDYsIDB4MjAwOSwKLQkweDAyMDAsIDB4MjBhOSwgMHgwMDAyLCAweDkyOTgsIDB4MDAxOCwgMHgyM2EwLCAweDQwMDEsIDB4MjAwOSwKLQkweDA3MDAsIDB4MjBhOSwgMHgwMDAyLCAweDkyOTgsIDB4MDAwOCwgMHgyM2EwLCAweDQwMDEsIDB4NzA3YywKLQkweDgwMDcsIDB4NzE4MCwgMHg4MTBmLCAweDIwYTksIDB4MDAwMiwgMHg0MDAxLCAweDkyOTgsIDB4MDAwYywKLQkweDIzYTAsIDB4OTAwZSwgMHgwODBjLCAweDBkNjUsIDB4MjAwMSwgMHgwMDAwLCAweDgxMGYsIDB4MjBhOSwKLQkweDAwMDIsIDB4NDAwMSwgMHgwMDA1LCAweDg5ZmYsIDB4MDE0MCwgMHhhODA0LCAweGE4MDcsIDB4MDAwMCwKLQkweDAwMDYsIDB4MDgwYywgMHgxMDhiLCAweDAwOWUsIDB4MGNiMCwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweDE4MDAsIDB4MDgwYywgMHgxMTA0LCAweDA5MGMsIDB4MGQ4NSwgMHgwMGVlLCAweDAwMDUsIDB4MDA4NiwKLQkweDAwZTYsIDB4MDAwNiwgMHgwMDI2LCAweDAwMzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDBjOSwKLQkweDIwNzEsIDB4MTgwMCwgMHg3M2MwLCAweDcwMmMsIDB4OTAxNiwgMHg5MDQ1LCAweDAxNTgsIDB4ODIxMCwKLQkweDk5MDYsIDB4MDkwYywgMHgwZDg1LCAweDIzMDAsIDB4OTIwMiwgMHgwMTIwLCAweDFhMGMsIDB4MGQ4NSwKLQkweGEwMDAsIDB4MGM5OCwgMHgwMTJlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDAwZWUsIDB4MDA4ZSwKLQkweDAwMDUsIDB4MDA4NiwgMHgwMGU2LCAweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE5MTAsIDB4NzAxMCwgMHg5MDA1LCAweDAxNDAsIDB4NzAxOCwgMHg5MDQ1LCAweDAxMjgsIDB4OTkwNiwKLQkweDA5MGMsIDB4MGQ4NSwgMHhhMDAwLCAweDBjYzgsIDB4MDEyZSwgMHgwMDBlLCAweDAwZWUsIDB4MDA4ZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzBjMCwKLQkweDgwMDEsIDB4MDI3MCwgMHg3MGMyLCAweDcwMmMsIDB4MjA0OCwgMHg5MDg1LCAweDAwMDEsIDB4YTgwMCwKLQkweDcwMmUsIDB4YTgwMywgMHgwMDAwLCAweGE4MDcsIDB4MDAwMCwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwKLQkweDkwNGUsIDB4MGNkOCwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4MTgwMCwKLQkweDcwYzAsIDB4OTBjYSwgMHgwMDIwLCAweDAyNjgsIDB4ODAwMSwgMHg3MGMyLCAweDcwMmMsIDB4MjA0OCwKLQkweGE4MDAsIDB4NzAyZSwgMHhhODAzLCAweDAwMDAsIDB4YTgwNywgMHgwMDAwLCAweDAxMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4OTA0ZSwgMHgwY2Q4LCAweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDAxNiwKLQkweDg5MGUsIDB4ODEwZSwgMHg4MTBmLCAweDkxODQsIDB4MDAzZiwgMHhhODYyLCAweDkxODQsIDB4ZmZjMCwKLQkweGE4NWUsIDB4MDAxZSwgMHgwMDIwLCAweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE4MDAsIDB4NzAyYywgMHhhODAyLCAweDI5MDAsIDB4NzAyZSwgMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwKLQkweDA4MGMsIDB4ODg5OSwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDcxLCAweDE4MDAsIDB4OTAyNiwKLQkweDIwMDksIDB4MDAwMCwgMHgyMDQ5LCAweDA0MDAsIDB4MjkwMCwgMHg3MDJlLCAweDg5NDAsIDB4MjgwMCwKLQkweGE4MDIsIDB4YTk1ZSwgMHhhODYzLCAweDAwMDEsIDB4ODQyMCwgMHg5ODg2LCAweDA0NDAsIDB4MDEyMCwKLQkweDI4NDgsIDB4OTE4OCwgMHgwMDQwLCAweDBjOTAsIDB4MjA3MSwgMHgxODhkLCAweDcwMDAsIDB4OTAwNSwKLQkweDExYTAsIDB4MjAwMSwgMHgwNTU4LCAweGE4MDIsIDB4MjA0OCwgMHgyMDA5LCAweDU2MDAsIDB4ODk0MCwKLQkweDI4MDAsIDB4YTgwMiwgMHhhOTVlLCAweGE4NjMsIDB4MDAwMSwgMHg4NDIwLCAweDk4ODYsIDB4MDgwMCwKLQkweDAxMjAsIDB4Mjg0OCwgMHg5MTg4LCAweDAwNDAsIDB4MGM5MCwgMHgyMDcxLCAweDE4OGQsIDB4NzEwNCwKLQkweDcyMDAsIDB4ODJmZiwgMHgwMWQwLCAweDczMDgsIDB4ODMxOCwgMHg4MzFmLCAweDgzMWIsIDB4ODMxYiwKLQkweDczMTIsIDB4ODMxOSwgMHgyMDAxLCAweDA4MDAsIDB4YTgwMiwgMHgyMDQ4LCAweDg5MDAsIDB4YTgwMiwKLQkweDIwNDAsIDB4YTk1ZSwgMHhhYTYyLCAweDg0MjAsIDB4MjMwMCwgMHg5OTA2LCAweDAxMzAsIDB4Mjg0OCwKLQkweDkxODgsIDB4MDA0MCwgMHg5MjkxLCAweDAwMDAsIDB4MGM4OCwgMHhhODAzLCAweDAwMDAsIDB4MjA3MSwKLQkweDE4MDAsIDB4NzRiZSwgMHg3NGMyLCAweDAwMDUsIDB4MDBlNiwgMHgwMDE2LCAweDk5ODQsIDB4ZmMwMCwKLQkweDAxZTgsIDB4OTA4YywgMHhmODAwLCAweDExNjgsIDB4OTk4MiwgMHgwNDAwLCAweDAyYjgsIDB4OTk4MiwKLQkweDA0NDAsIDB4MDI3OCwgMHg5OTgyLCAweDA1NTgsIDB4MDI4OCwgMHg5OTgyLCAweDA4MDAsIDB4MTI3MCwKLQkweDAwNDAsIDB4OTk4MiwgMHgwODAwLCAweDAyNTAsIDB4MjA3MSwgMHgxODhkLCAweDcwMTAsIDB4OTkwMiwKLQkweDEyMjgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMWUsIDB4MDBlZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwKLQkweDAwZTYsIDB4MjA3MSwgMHgxYTI0LCAweDcwMDcsIDB4MDAwMCwgMHg5MDA2LCAweDcwMWUsIDB4NzAyMiwKLQkweDcwMDIsIDB4MjA3MSwgMHgwMDAwLCAweDcwMTAsIDB4OTA4NSwgMHg4MDQ0LCAweDcwMTIsIDB4MjA3MSwKLQkweDAwODAsIDB4OTAwNiwgMHg3MDJiLCAweDAwNjAsIDB4MjBhOSwgMHgwMDQwLCAweDcwMjIsIDB4MWYwNCwKLQkweDExM2UsIDB4NzAyYiwgMHgwMDYwLCAweDcwMmIsIDB4MDAyMCwgMHgyMGE5LCAweDAwNDAsIDB4NzAyMiwKLQkweDFmMDQsIDB4MTE0NywgMHg3MDJiLCAweDAwMjAsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDBlNiwgMHhhMDZmLCAweDAwMDAsIDB4MjA3MSwgMHgxYTI0LCAweDcwMWMsIDB4OTA4OCwKLQkweDFhMmUsIDB4MjgwYSwgMHg4MDAwLCAweDkwODQsIDB4MDAzZiwgMHg3MDFlLCAweDcxMjAsIDB4OTEwNiwKLQkweDA5MGMsIDB4MGQ4NSwgMHg3MDA0LCAweDkwMDUsIDB4MTEyOCwgMHgwMGY2LCAweDIwNzksIDB4MDA4MCwKLQkweDAwYTksIDB4MDBmZSwgMHgwMGVlLCAweDAxMmUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDAwZTYsIDB4MjA3MSwgMHgxYTI0LCAweDcwMDQsIDB4OTAwNSwgMHgxMTI4LCAweDAwZjYsIDB4MjA3OSwKLQkweDAwODAsIDB4MDAyMSwgMHgwMGZlLCAweDAwZWUsIDB4MDEyZSwgMHgwMDA1LCAweDcwMDQsIDB4OTA4NiwKLQkweDAwMDAsIDB4MTExMCwgMHg3MDA3LCAweDAwMDYsIDB4NzAwMCwgMHgwMDAyLCAweDExOTAsIDB4MTMxMywKLQkweDExOGUsIDB4MTE4ZSwgMHgxMzA3LCAweDEzMDcsIDB4MTMwNywgMHgxMzA3LCAweDA4MGMsIDB4MGQ4NSwKLQkweDcwMWMsIDB4NzEyMCwgMHg5MTA2LCAweDExNDgsIDB4NzkyYywgMHg5MTg0LCAweDAwMDEsIDB4MTEyMCwKLQkweGQxZmMsIDB4MTExMCwgMHg3MDA3LCAweDAwMDAsIDB4MDAwNSwgMHgwMDk2LCAweDkxODAsIDB4MWEyZSwKLQkweDIwMDQsIDB4NzAwYSwgMHgyMDQ4LCAweDgxMDgsIDB4OTE4YywgMHgwMDNmLCAweDcxMjIsIDB4NzgyYiwKLQkweDAwMjYsIDB4YTg4YywgMHg3ODAyLCAweGE4OTAsIDB4NzgwNiwgMHhhODk0LCAweDc4MGEsIDB4YTg5OCwKLQkweDc4MGUsIDB4YTg3OCwgMHg3MDBlLCAweGE4NzAsIDB4NzAxNiwgMHhhODc0LCAweDcwMWEsIDB4YTg2OCwKLQkweDAwOWUsIDB4ZDA4NCwgMHgwMTIwLCAweDcwMDcsIDB4MDAwMSwgMHgwMDI5LCAweDAwMDUsIDB4NzAwNywKLQkweDAwMDIsIDB4MDBiMSwgMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHg3MTBjLCAweDIwMTEsIDB4MDA0MCwKLQkweDkxODIsIDB4MDA0MCwgMHgxMjEwLCAweDIxMTAsIDB4OTAwNiwgMHg3MDBlLCAweDcyMTIsIDB4ODIwMywKLQkweDc4MTIsIDB4NzgyYiwgMHgwMDIwLCAweDc4MmIsIDB4MDA0MSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwgMHg3MDE0LCAweDIwZTAsIDB4NzAxOCwKLQkweDIwOTgsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDA4OCwgMHg3ODJiLCAweDAwMjYsIDB4NzEwYywKLQkweDIwMTEsIDB4MDA0MCwgMHg5MTgyLCAweDAwNDAsIDB4MTIxMCwgMHgyMTEwLCAweDkwMDYsIDB4NzAwZSwKLQkweDIyYTgsIDB4NDAwNiwgMHg4MjAzLCAweDc4MTIsIDB4NzgyYiwgMHgwMDIwLCAweDMzMDAsIDB4NzAxYSwKLQkweDc4MmIsIDB4MDAwMSwgMHgwMTVlLCAweDAxNGUsIDB4MDEzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDIwMDksIDB4MWEyNCwgMHgyMTA0LCAweGMwOTUsIDB4MjAwYSwgMHgwODBjLCAweDExNmQsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBlNiwgMHgyMDcxLCAweDFhMjQsIDB4MDBmNiwgMHgyMDc5LCAweDAwODAsIDB4NzkyYywKLQkweGQxYmMsIDB4MTkwYywgMHgwZDdlLCAweDc4MmIsIDB4MDAwMiwgMHhkMWZjLCAweDAxMjAsIDB4OTE4YywKLQkweDA3MDAsIDB4NzAwNCwgMHgwMDIzLCAweDAwZmUsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4MTE3ZSwKLQkweDEyMjYsIDB4MTI1YSwgMHgxMzMyLCAweDBkODUsIDB4MTM0ZCwgMHgwZDg1LCAweDkxOGMsIDB4MDcwMCwKLQkweDE1NTAsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4NzAxNCwgMHgyMGU4LCAweDcwMTgsIDB4MjBhMCwKLQkweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAwODgsIDB4NzgyYiwgMHgwMDQwLCAweDcwMTAsIDB4MjBhOCwKLQkweDQwMDUsIDB4MzQwMCwgMHg3MDFhLCAweDAxNWUsIDB4MDE0ZSwgMHgwMTNlLCAweDcwMGMsIDB4OTAwNSwKLQkweDA1NzgsIDB4NzgwMCwgMHg3ODAyLCAweDc4MDQsIDB4NzgwNiwgMHgwODBjLCAweDExYzMsIDB4MDAwNSwKLQkweDcwMDgsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NmYsIDB4MDEwMCwgMHgwMDllLCAweDcwMDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4MTE3ZSwgMHgwMDA1LCAweDcwMDgsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NmYsIDB4MDIwMCwKLQkweDAwOWUsIDB4MGNhMCwgMHg5MThjLCAweDA3MDAsIDB4MTE1MCwgMHg3MDBjLCAweDkwMDUsIDB4MDE4MCwKLQkweDc4MDAsIDB4NzgwMiwgMHg3ODA0LCAweDc4MDYsIDB4MDgwYywgMHgxMWQ4LCAweDAwMDUsIDB4NzAwOCwKLQkweDAwOTYsIDB4MjA0OCwgMHhhODZmLCAweDAyMDAsIDB4MDA5ZSwgMHg3MDA3LCAweDAwMDAsIDB4MDA4MCwKLQkweDAwOTYsIDB4NzAwOCwgMHgyMDQ4LCAweDc4MDAsIDB4YTg4ZSwgMHg3ODA0LCAweGE4OTIsIDB4NzgwOCwKLQkweGE4OTYsIDB4NzgwYywgMHhhODlhLCAweGE4NmYsIDB4MDEwMCwgMHgwMDllLCAweDcwMDcsIDB4MDAwMCwKLQkweDAwOTYsIDB4MDBkNiwgMHg3MDA4LCAweDIwNDgsIDB4MjAwMSwgMHgxOGI5LCAweDIwMDQsIDB4OTkwNiwKLQkweDExMjgsIDB4YTg5YywgMHgwODBmLCAweDAwZGUsIDB4MDA5ZSwgMHgwMGEwLCAweDAwZGUsIDB4MDA5ZSwKLQkweDAwOTYsIDB4MDBkNiwgMHg3MDA4LCAweDIwNDgsIDB4MDA4MSwgMHgwMTUwLCAweGE4OWMsIDB4MDA4NiwKLQkweDI5NDAsIDB4MDgwZiwgMHgwMDhlLCAweDAwZGUsIDB4MDA5ZSwgMHgwODBjLCAweDExNmQsIDB4MDAwNSwKLQkweDAwZGUsIDB4MDA5ZSwgMHgwODBjLCAweDExNmQsIDB4MDAwNSwgMHhhOGE4LCAweGQwOGMsIDB4MDAwNSwKLQkweDAwOTYsIDB4YTBhMCwgMHg5MDRkLCAweDA5MGMsIDB4MGQ4NSwgMHhhMDZjLCAweDkwOGUsIDB4MDEwMCwKLQkweDAxMzAsIDB4YTg3YiwgMHgwMDMwLCAweGE4ODMsIDB4MDAwMCwgMHhhODk3LCAweDQwMDIsIDB4MDgwYywKLQkweDcwMDYsIDB4YTA5ZiwgMHgwMDAwLCAweGEwYTMsIDB4MDAwMCwgMHgyODQ4LCAweDA4MGMsIDB4MTA4YiwKLQkweDAwOWUsIDB4MDAwNSwgMHgwMGE2LCAweGEwYTAsIDB4OTA0ZCwgMHgwOTBjLCAweDBkODUsIDB4YTA2YywKLQkweDkwOGUsIDB4MDEwMCwgMHgwMTI4LCAweGE4N2IsIDB4MDAwMSwgMHhhODgzLCAweDAwMDAsIDB4MDBjMCwKLQkweGE4MGMsIDB4MjA1MCwgMHhiMDA0LCAweDkwMDUsIDB4MDE5OCwgMHhhODBlLCAweDIwNTAsIDB4ODAwNiwKLQkweDgwMDYsIDB4ODAwNywgMHg5MDhjLCAweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwMiwKLQkweGEwNzYsIDB4YTE3MiwgMHhiMDAwLCAweGEwN2EsIDB4MjgxMCwgMHgwODBjLCAweDExNGUsIDB4MDBlOCwKLQkweGE5N2MsIDB4YTg5NCwgMHgwMDE2LCAweDAwMDYsIDB4MDgwYywgMHg3MDA2LCAweDAwMGUsIDB4MDAxZSwKLQkweGQxZmMsIDB4MTEzOCwgMHhkMWY0LCAweDAxMjgsIDB4MDBjNiwgMHgyMDYwLCAweDA4MGMsIDB4YjE2YywKLQkweDAwY2UsIDB4NzAwOCwgMHgyMDQ4LCAweGE4OWYsIDB4MDAwMCwgMHhhOGEzLCAweDAwMDAsIDB4MDgwYywKLQkweDEwOGIsIDB4NzAwNywgMHgwMDAwLCAweDA4MGMsIDB4MTE2ZCwgMHgwMGFlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg3ODJiLCAweDEwMDEsIDB4NzAwNywgMHgwMDA1LCAweDcwMDAsIDB4YzA5NCwKLQkweDcwMDIsIDB4MDEyZSwgMHgwMDA1LCAweDAwOTYsIDB4MjAwMSwgMHgxOTJmLCAweDIwNGMsIDB4YTg3YywKLQkweDc4MTIsIDB4YTg4YywgMHg3ODAyLCAweGE4OTAsIDB4NzgwNiwgMHhhODk0LCAweDc4MGEsIDB4YTg5OCwKLQkweDc4MGUsIDB4NzgyYiwgMHgwMDIwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDc4MmIsIDB4MDA0MSwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDAwLCAweGMwODQsIDB4NzAwMiwgMHgyOTAwLCAweDcwMGEsIDB4MDEyZSwKLQkweDAwOWUsIDB4MDAwNSwgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMDg4LCAweDc4MmIsIDB4MDA0MCwKLQkweDAwOTYsIDB4MjAwMSwgMHgxOTJmLCAweDIwNGMsIDB4YWE3YywgMHgwMDllLCAweDA4MGMsIDB4OGY4OCwKLQkweDIwMDksIDB4MTg4YywgMHgyMTA0LCAweDkwODQsIDB4ZmZmYywgMHgyMDBhLCAweDA4MGMsIDB4OGRlNywKLQkweDcwMDcsIDB4MDAwMCwgMHgwODBjLCAweDExN2UsIDB4MDAwNSwgMHg3MDA3LCAweDAwMDAsIDB4MDgwYywKLQkweDExN2UsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MjIwMCwgMHgyMDc5LCAweDAzMDAsIDB4MjA3MSwKLQkweDFhNmUsIDB4NzAwMywgMHgwMDAwLCAweDc4YmYsIDB4MDBmNiwgMHgwMDQxLCAweDc4MDcsIDB4MDAwNywKLQkweDc4MDMsIDB4MDAwMCwgMHg3ODAzLCAweDAwMDEsIDB4MDEyZSwgMHgwMDA1LCAweDAwYzYsIDB4NzgwMywKLQkweDAwMDAsIDB4MjAwMSwgMHgwMTY1LCAweDIwMDMsIDB4NDE5OCwgMHg3ODA4LCAweGQwOWMsIDB4MDEyMCwKLQkweDc4MjAsIDB4MDgwYywgMHgxM2I2LCAweDBjYzgsIDB4MjAwMSwgMHgxYTZmLCAweDIwMDMsIDB4MDAwMCwKLQkweDc4YWIsIDB4MDAwNCwgMHg3OGFjLCAweGQwYWMsIDB4MWRlOCwgMHg3OGFiLCAweDAwMDIsIDB4NzgwNywKLQkweDAwMDcsIDB4NzgyNywgMHgwMDMwLCAweDc4MmIsIDB4MDQwMCwgMHg3ODI3LCAweDAwMzEsIDB4NzgyYiwKLQkweDFhODEsIDB4NzhlMywgMHhmZjAwLCAweDc4MWYsIDB4ZmYwMCwgMHg3ODFiLCAweGZmMDAsIDB4MjAwMSwKLQkweDFhNzAsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MDIwMCwgMHgyMDA0LCAweGQwZGMsIDB4MDExMCwKLQkweDc4MWYsIDB4MDMwMywgMHgyMDYxLCAweDFhODEsIDB4NjAyZiwgMHgxZGRjLCAweDIwMDEsIDB4MTgxYSwKLQkweDIwMDQsIDB4OTA4MiwgMHgxZGRjLCAweDYwMzIsIDB4NjAzYiwgMHgxZWMxLCAweDYwMmIsIDB4MWFjMSwKLQkweDYwMDcsIDB4MWFhMSwgMHgyMDYxLCAweDFhYTEsIDB4NjA2ZiwgMHgxOTNkLCAweDIwMDEsIDB4MTkyOCwKLQkweDIwMDQsIDB4NjA3YSwgMHg3ODNmLCAweDM0OGUsIDB4MDBjZSwgMHgwMDA1LCAweDkwODYsIDB4MDAwZCwKLQkweDExZDAsIDB4NzgwOCwgMHhkMDljLCAweDAxYjgsIDB4NzgyMCwgMHgwMDI2LCAweDIwMTAsIDB4MDgwYywKLQkweGNmMDksIDB4MDE4MCwgMHgyMjYwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExNTgsIDB4MDAxNiwKLQkweDYxMjAsIDB4OTE4NiwgMHgwMDA5LCAweDAxMDgsIDB4MDAyMCwgMHgyMDA5LCAweDAwNGMsIDB4MDgwYywKLQkweGIyMGEsIDB4MDAxZSwgMHgwMDJlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDIyMDAsIDB4NzkwOCwKLQkweDkxODQsIDB4MDA3MCwgMHgxOTBjLCAweDBkN2UsIDB4ZDE5YywgMHgwNWEwLCAweDc4MjAsIDB4OTA4YywKLQkweGYwMDAsIDB4MDU0MCwgMHgyMDYwLCAweDYwMjAsIDB4OTA4NiwgMHgwMDAzLCAweDE1NTAsIDB4NjAwMCwKLQkweDkwODYsIDB4MDAwNCwgMHgxNTMwLCAweDYxMTQsIDB4MjE0OCwgMHhhODc2LCAweGE4N2EsIDB4YTg2NywKLQkweDAxMDMsIDB4MDgwYywgMHg2ZTI3LCAweDAwYjYsIDB4NjAxMCwgMHgyMDU4LCAweGJhM2MsIDB4ODIxMSwKLQkweDAyMDgsIDB4YmEzZSwgMHhiOGQwLCAweDkwMDUsIDB4MTkwYywgMHg2OGRmLCAweDAwYmUsIDB4NjA0NCwKLQkweGQwZmMsIDB4MTkwYywgMHhhZDI1LCAweDA4MGMsIDB4YjE5NSwgMHg3ODA4LCAweGQwOWMsIDB4MTliMCwKLQkweDAxMmUsIDB4MDAwNSwgMHg5MDhhLCAweDAwMjQsIDB4MWEwYywgMHgwZDg1LCAweDAwMmIsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDRiMCwgMHgwMTJlLCAweDAwMDUsIDB4MTQzOCwgMHgxNDVlLCAweDE0OGUsIDB4MTQ5MywKLQkweDE0OTcsIDB4MTQ5YywgMHgxNGM0LCAweDE0YzgsIDB4MTRkNiwgMHgxNGRhLCAweDE0MzgsIDB4MTVhNywKLQkweDE1YWIsIDB4MTYxZCwgMHgxNjI0LCAweDE0MzgsIDB4MTYyNSwgMHgxNjI2LCAweDE2MzEsIDB4MTYzOCwKLQkweDE0MzgsIDB4MTQzOCwgMHgxNDM4LCAweDE0MzgsIDB4MTQzOCwgMHgxNDM4LCAweDE0MzgsIDB4MTQ5ZSwKLQkweDE0MzgsIDB4MTQ2NiwgMHgxNDhiLCAweDE0NTIsIDB4MTQzOCwgMHgxNDcyLCAweDE0M2MsIDB4MTQzYSwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweDBkN2UsIDB4MDgwYywgMHgxNjQzLCAweDIwMDksIDB4MWE3ZCwKLQkweDIxMDQsIDB4ODAwMCwgMHgyMDBhLCAweDA4MGMsIDB4ODJiOCwgMHgwODBjLCAweDFiMWUsIDB4MDAwNSwKLQkweDYwNDQsIDB4ZDBmYywgMHgxOTBjLCAweGFkMjUsIDB4MjAwOSwgMHgwMDU1LCAweDA4MGMsIDB4YjIwYSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweDE2NDMsIDB4MjA2MCwgMHg2MDQ0LCAweGQwZmMsIDB4MTkwYywKLQkweGFkMjUsIDB4MjAwOSwgMHgwMDU1LCAweDA4MGMsIDB4YjIwYSwgMHgwMDA1LCAweDIwMDksIDB4MDA0OCwKLQkweDA4MGMsIDB4MTY0MywgMHgyMDYwLCAweDA4MGMsIDB4YjIwYSwgMHgwMDA1LCAweDIwMDksIDB4MDA1NCwKLQkweDA4MGMsIDB4MTY0MywgMHgyMDYwLCAweDYwNDQsIDB4ZDBmYywgMHgxOTBjLCAweGFkMjUsIDB4MDgwYywKLQkweGIyMGEsIDB4MDAwNSwgMHgwODBjLCAweDE2NDMsIDB4MjA2MCwgMHgwMDU2LCAweDAwNjYsIDB4MDgwYywKLQkweDE2NDMsIDB4MjAyOCwgMHgwODBjLCAweDE2NDMsIDB4MjAzMCwgMHgwMDM2LCAweDAwNDYsIDB4MjAyMSwKLQkweDAwMDAsIDB4MjQxOCwgMHgyMDA5LCAweDAwNTYsIDB4MDgwYywgMHhiMjBhLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwNmUsIDB4MDA1ZSwgMHgwMDA1LCAweDA4MGMsIDB4MTY0MywgMHgwMDA1LCAweDcwMDQsIDB4YzA4NSwKLQkweGMwYjUsIDB4NzAwNiwgMHgwMDA1LCAweDcwMDQsIDB4YzA4NSwgMHg3MDA2LCAweDAwMDUsIDB4MDgwYywKLQkweDE2NDMsIDB4MDgwYywgMHgxNzQwLCAweDAwMDUsIDB4MDgwYywgMHgwZDg1LCAweDA4MGMsIDB4MTY0MywKLQkweDIwNjAsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTgzYiwgMHhmZmZmLCAweDAwOWUsIDB4MjAwOSwKLQkweDAwNDgsIDB4MDgwYywgMHhiMjBhLCAweDIwMDEsIDB4MDE1ZCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwOSwKLQkweDAzZTgsIDB4ODEwOSwgMHgwMTYwLCAweDIwMDEsIDB4MDIwMSwgMHgyMDA0LCAweDkwMDUsIDB4MGRjOCwKLQkweDIwMDEsIDB4MDIxOCwgMHgyMDA0LCAweGQwZWMsIDB4MTExMCwgMHgwODBjLCAweDE2NDgsIDB4MjAwMSwKLQkweDAzMDcsIDB4MjAwMywgMHg4MDAwLCAweDAwMDUsIDB4NzAwNCwgMHhjMDk1LCAweDcwMDYsIDB4MDAwNSwKLQkweDA4MGMsIDB4MTY0MywgMHgyMDYwLCAweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4M2IsIDB4ZmZmZiwKLQkweDAwOWUsIDB4MjAwOSwgMHgwMDQ4LCAweDA4MGMsIDB4YjIwYSwgMHgwMDA1LCAweDA4MGMsIDB4MTY0MywKLQkweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweDE2NDMsIDB4MDgwYywgMHgxNTkyLCAweDc4MjcsIDB4MDAxOCwKLQkweDc5YWMsIDB4ZDFkYywgMHgwOTA0LCAweDE1NDMsIDB4NzgyNywgMHgwMDE1LCAweDc4MjgsIDB4NzgyYiwKLQkweDAwMDAsIDB4OTA2NSwgMHgwMTQwLCAweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwNTAsIDB4MjAwMywKLQkweDAwMjAsIDB4MDgwNCwgMHgxNTQ5LCAweDcwMDQsIDB4OTAwNSwgMHgwMWM4LCAweDExODgsIDB4NzhhYiwKLQkweDAwMDQsIDB4NzgyNywgMHgwMDE4LCAweDc4MmIsIDB4MDAwMCwgMHhkMWJjLCAweDA5MGMsIDB4MGQ4NSwKLQkweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwNTAsIDB4MjAwMywgMHgwMDIwLCAweDA4MDQsIDB4MTU3NywKLQkweDc4YWIsIDB4MDAwNCwgMHg3ODAzLCAweDAwMDEsIDB4MDgwYywgMHgxNWFiLCAweDAwMDUsIDB4NzgyNywKLQkweDAwMTgsIDB4YTAwMSwgMHg3ODI4LCAweDc4MjcsIDB4MDAxMSwgMHhhMDAxLCAweDc5MjgsIDB4OTEwNiwKLQkweDAxMTAsIDB4NzlhYywgMHgwOGUwLCAweDAwZTYsIDB4MjA3MSwgMHgwMjAwLCAweDcwMmMsIDB4ZDBjNCwKLQkweDAxNDAsIDB4MDBlZSwgMHgwODBjLCAweDFiMWUsIDB4MDgwYywgMHgxMzY2LCAweDc4MDMsIDB4MDAwMSwKLQkweDAwMDUsIDB4NzAzNywgMHgwMDAxLCAweGEwMDEsIDB4NzE1MCwgMHgwMGVlLCAweDkxOGMsIDB4ZmYwMCwKLQkweDkxODYsIDB4MDUwMCwgMHgwMTEwLCAweDc5YWMsIDB4MDgxMCwgMHg3MDA0LCAweGMwOWQsIDB4NzAwNiwKLQkweDc4YWIsIDB4MDAwNCwgMHg3ODAzLCAweDAwMDEsIDB4MDgwYywgMHgxNWFiLCAweDIwMDEsIDB4MDIwZCwKLQkweDIwMDMsIDB4MDAyMCwgMHgwMDA1LCAweDc4MjgsIDB4NzgyYiwgMHgwMDAwLCAweDkwNjUsIDB4MDkwYywKLQkweDBkODUsIDB4NjAxNCwgMHgyMDQ4LCAweDc4YWIsIDB4MDAwNCwgMHg5MThjLCAweDA3MDAsIDB4MDFhOCwKLQkweDA4MGMsIDB4ODJiOCwgMHgwODBjLCAweDFiMWUsIDB4MDgwYywgMHhjZjFiLCAweDAxNTgsIDB4YTlhYywKLQkweGE5MzYsIDB4YTliMCwgMHhhOTNhLCAweGE4M2YsIDB4ZmZmZiwgMHhhODQzLCAweGZmZmYsIDB4YTg4MCwKLQkweGMwYmQsIDB4YTg4MiwgMHgwODBjLCAweGNhZTksIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsIDB4MDAwOSwKLQkweDExMjgsIDB4MjAwOSwgMHgwMDRjLCAweDA4MGMsIDB4YjIwYSwgMHgwMDQ4LCAweDYwMTAsIDB4MDBiNiwKLQkweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsIDB4NjAyNCwgMHgxOTBjLCAweGQzMWUsIDB4MjAyOSwKLQkweDAwYzgsIDB4ODUyOSwgMHgwMTI4LCAweDIwMDEsIDB4MDIwMSwgMHgyMDA0LCAweDkwMDUsIDB4MGRjOCwKLQkweDdkYmMsIDB4MDgwYywgMHhlZWIxLCAweGQ1YTQsIDB4MTExOCwgMHgwODBjLCAweDE2NDgsIDB4MDAwNSwKLQkweDA4MGMsIDB4ODJiOCwgMHgwODBjLCAweDFiMWUsIDB4MDAwNSwgMHg3ODFmLCAweDAzMDAsIDB4NzgwMywKLQkweDAwMDEsIDB4MDAwNSwgMHgwMDE2LCAweDAwNjYsIDB4MDA3NiwgMHgwMGY2LCAweDIwNzksIDB4MDMwMCwKLQkweDc5MDgsIDB4OTE4YywgMHgwMDA3LCAweDkxODYsIDB4MDAwMywgMHgwMTIwLCAweDIwMDEsIDB4MDAxNiwKLQkweDA4MGMsIDB4MTZiOSwgMHgwMGZlLCAweDAwN2UsIDB4MDA2ZSwgMHgwMDFlLCAweDAwMDUsIDB4NzAwNCwKLQkweGMwOWQsIDB4NzAwNiwgMHgwMDA1LCAweDcxMDQsIDB4OTE4NCwgMHgwMDA0LCAweDE5MGMsIDB4MGQ4NSwKLQkweGQxODQsIDB4MTFiMSwgMHhkMTljLCAweDAxODAsIDB4YzE5YywgMHg3MTA2LCAweDAwMTYsIDB4MDgwYywKLQkweDE3MjMsIDB4MDAxZSwgMHgwMTQ4LCAweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwNTAsIDB4MjAwMywKLQkweDAwMjAsIDB4MDgwYywgMHgxNjQ4LCAweDAwMDUsIDB4ODFmZiwgMHgxOTBjLCAweDBkODUsIDB4MDAwNSwKLQkweDIxMDAsIDB4YzE4NCwgMHhjMWI0LCAweDcxMDYsIDB4ZDBiNCwgMHgwMDE2LCAweDAwZTYsIDB4MTkwNCwKLQkweDE2MTIsIDB4MjA3MSwgMHgwMjAwLCAweDA4MGMsIDB4MTcxMCwgMHgwNWUwLCAweDA4MGMsIDB4MTcyMywKLQkweDA1YjAsIDB4NjAxNCwgMHg5MDA1LCAweDA1YjAsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NjQsIDB4MDA5ZSwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDhlLCAweDAwMjksIDB4MDE2MCwgMHg5MDhlLCAweDAwNDgsIDB4MTU1MCwKLQkweDYwMWMsIDB4ZDA4NCwgMHgxMWUwLCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDE3YWQsIDB4MDBmZSwKLQkweDAwYjAsIDB4MDBmNiwgMHgyYzc4LCAweDA4MGMsIDB4MTk0MiwgMHgwMGZlLCAweDIwMDksIDB4MDFmNCwKLQkweDgxMDksIDB4MDE2OCwgMHgyMDAxLCAweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDBkYzgsIDB4MjAwMSwKLQkweDAyMTgsIDB4MjAwNCwgMHhkMGVjLCAweDExMTgsIDB4MDgwYywgMHgxNjQ4LCAweDAwNDAsIDB4MjAwMSwKLQkweDAyMGQsIDB4MjAwMywgMHgwMDIwLCAweDA4MGMsIDB4MTM2NiwgMHg3ODAzLCAweDAwMDEsIDB4MDBlZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgwODBjLCAweDE3MjMsIDB4MGRkMCwgMHgyMDAxLCAweDAyMGQsIDB4MjAwMywKLQkweDAwNTAsIDB4MjAwMywgMHgwMDIwLCAweDA0NjEsIDB4MGM5MCwgMHgwNDI5LCAweDIwNjAsIDB4MjAwOSwKLQkweDAwNTMsIDB4MDgwYywgMHhiMjBhLCAweDAwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDAwZTEsIDB4MjAwOCwKLQkweDAwZDEsIDB4MDAwNiwgMHg3MDA0LCAweGMwOWQsIDB4NzAwNiwgMHgwMDBlLCAweDA4MGMsIDB4OTJkNSwKLQkweDAwMDUsIDB4MDA4OSwgMHg5MDA1LCAweDAxMTgsIDB4MDgwYywgMHg4ZWQ5LCAweDBjZDAsIDB4MDAwNSwKLQkweDIwMDEsIDB4MDAzNiwgMHgyMDA5LCAweDE4MjAsIDB4MjEwYywgMHgyMDExLCAweDE4MWYsIDB4MjIxNCwKLQkweDA4MGMsIDB4MTZiOSwgMHgwMDA1LCAweDc4MDgsIDB4ZDA5YywgMHgwZGU4LCAweDc4MjAsIDB4MDAwNSwKLQkweDA4MGMsIDB4MTU5MiwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHgyMDA5LCAweDAxZjQsIDB4ODEwOSwKLQkweDA1MTAsIDB4NjgwNCwgMHg5MDA1LCAweDBkZDgsIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwKLQkweDc5YmMsIDB4ZDFhNCwgMHgxNTI4LCAweDc5YjgsIDB4OTE4YywgMHgwZmZmLCAweDAxODAsIDB4OTE4MiwKLQkweDA4NDEsIDB4MTI2OCwgMHg5MTg4LCAweDAwMDcsIDB4OTE4YywgMHgwZmY4LCAweDgxMGMsIDB4ODEwYywKLQkweDgxMGMsIDB4MDgwYywgMHgxNmFiLCAweDY4MjcsIDB4MDAwMSwgMHg4MTA5LCAweDFkZDAsIDB4MDRkOSwKLQkweDY4MjcsIDB4MDAwMiwgMHgwNGMxLCAweDY4MDQsIDB4OTAwNSwgMHgxMTMwLCAweDY4MmMsIDB4ZDBlNCwKLQkweDE1MDAsIDB4NjgwNCwgMHg5MDA1LCAweDBkZTgsIDB4NzliOCwgMHhkMWVjLCAweDExMzAsIDB4MDhjMCwKLQkweDA4MGMsIDB4ODJiOCwgMHgwODBjLCAweDFiMWUsIDB4MDA5MCwgMHg3ODI3LCAweDAwMTUsIDB4NzgyYiwKLQkweDAwMDAsIDB4NzgyNywgMHgwMDE4LCAweDc4MmIsIDB4MDAwMCwgMHgyMDAxLCAweDAyMGQsIDB4MjAwMywKLQkweDAwMjAsIDB4MjAwMSwgMHgwMzA3LCAweDIwMDMsIDB4MDMwMCwgMHg3ODAzLCAweDAwMDEsIDB4MDBkZSwKLQkweDAwMDUsIDB4NjgyYywgMHg5MDg0LCAweDU0MDAsIDB4OTA4NiwgMHg1NDAwLCAweDBkMzAsIDB4NzgyNywKLQkweDAwMTUsIDB4NzgyYiwgMHgwMDAwLCAweDc4MDMsIDB4MDAwMSwgMHg2ODAwLCAweDkwODUsIDB4MTgwMCwKLQkweDY4MDIsIDB4MDBkZSwgMHgwMDA1LCAweDY4MjQsIDB4OTA4NCwgMHgwMDAzLCAweDFkZTAsIDB4MDAwNSwKLQkweDIwMDEsIDB4MDAzMCwgMHgyYzA4LCAweDYyMWMsIDB4MDAyMSwgMHg3ODMwLCAweDkwODYsIDB4MDA0MSwKLQkweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDIwNzksIDB4MDMwMCwgMHgwMDA2LCAweDIwNzEsIDB4MWE2ZSwKLQkweDcwMDgsIDB4OTAwNSwgMHgxMTEwLCAweDc4ZTMsIDB4MGMwYywgMHg4MDAwLCAweDcwMGEsIDB4MDAyNiwKLQkweDIwMTEsIDB4MDAwNiwgMHg3ODA4LCAweGQwOWMsIDB4MDE1MCwgMHgwMDE2LCAweDAwMjYsIDB4MDBjNiwKLQkweDA4MGMsIDB4MTNkNCwgMHgwMGNlLCAweDAwMmUsIDB4MDAxZSwgMHg4MjExLCAweDFkOTgsIDB4MDAyZSwKLQkweDAwMGUsIDB4MDAwNiwgMHg3ODMyLCAweDc5MzYsIDB4N2EzYSwgMHg3ODFiLCAweDgwODAsIDB4MDBiOSwKLQkweDExNzgsIDB4MjA3MSwgMHgxYTZlLCAweDcwMDgsIDB4OTAwNSwgMHgwMTMwLCAweDgwMDEsIDB4MGEwYywKLQkweDBkODUsIDB4NzAwYSwgMHg3OGUzLCAweDBjMDAsIDB4MDAwZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwMGUsIDB4NzkyYywgMHgzOTAwLCAweDgwMDAsIDB4MjAwNCwgMHgwODBjLCAweDBkODUsIDB4MjAwOSwKLQkweGZmMDAsIDB4ODEwOSwgMHgwMTIwLCAweDc4MTgsIDB4ZDBiYywgMHgxZGQ4LCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHg3ODMyLCAweDc5MzYsIDB4N2EzYSwgMHg3ODFiLCAweDgwODAsIDB4MGM3OSwKLQkweDExMDgsIDB4MDAwNSwgMHg3OTJjLCAweDM5MDAsIDB4ODAwMCwgMHgyMDA0LCAweDA4MGMsIDB4MGQ4NSwKLQkweDcwMzcsIDB4MDAwMSwgMHg3MTUwLCAweDcwMzcsIDB4MDAwMiwgMHg3MDUwLCAweDIwNjAsIDB4ZDFiYywKLQkweDExMTAsIDB4NzA1NCwgMHgyMDYwLCAweDkxOGMsIDB4ZmYwMCwgMHg5MTg2LCAweDA1MDAsIDB4MDExMCwKLQkweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwMDYsIDB4MDA0NiwgMHgwMGU2LCAweDIwNzEsIDB4MDIwMCwKLQkweDcwMzcsIDB4MDAwMiwgMHg3MDU4LCAweDkwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwODYsIDB4MDBiYywKLQkweDExNTgsIDB4MjAyMSwgMHgxYTdlLCAweDI0MDQsIDB4ODAwMCwgMHgwMjA4LCAweDIwMjIsIDB4MDgwYywKLQkweDgyYjgsIDB4MDgwYywgMHgxYjFlLCAweDkwMDYsIDB4MDBlZSwgMHgwMDRlLCAweDAwMGUsIDB4MDAwNSwKLQkweDBjMTEsIDB4MTEwOCwgMHgwMDA1LCAweDAwZTYsIDB4MDAxNiwgMHgyMDcxLCAweDAyMDAsIDB4MDg0MSwKLQkweDYxMjQsIDB4ZDFkYywgMHgwMWY4LCAweDcwMWMsIDB4ZDA4YywgMHgwOTA0LCAweDE3YTIsIDB4NzAxNywKLQkweDAwMDAsIDB4MjAwMSwgMHgwMjY0LCAweDIwMDQsIDB4ZDBiYywgMHgwOTA0LCAweDE3YTIsIDB4MjAwMSwKLQkweDAyNjgsIDB4MDBjNiwgMHgyMDY0LCAweDYxMDQsIDB4NjAzOCwgMHgwMGNlLCAweDkxOGUsIDB4MDAzOSwKLQkweDE5MDQsIDB4MTdhMiwgMHg5YzA2LCAweDE1ZjAsIDB4MDEyNiwgMHgyMDkxLCAweDI2MDAsIDB4MDgwYywKLQkweDgyMTAsIDB4MDEyZSwgMHg3MzU4LCAweDc0NWMsIDB4NjAxNCwgMHg5MDVkLCAweDA1OTgsIDB4MmI0OCwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDE5MGMsIDB4ZDJmOSwKLQkweGFiNDIsIDB4YWMzZSwgMHgyMDAxLCAweDE4NjksIDB4MjAwNCwgMHhkMGI0LCAweDExNzAsIDB4NjAxYywKLQkweGQwZTQsIDB4MTE1OCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsIDB4ZDBiYywKLQkweDExMjAsIDB4YTgzYiwgMHg3ZmZmLCAweGE4MzcsIDB4ZmZmZiwgMHgwODBjLCAweDFlZTEsIDB4MTE5MCwKLQkweDA4MGMsIDB4MTk5ZiwgMHgyYTAwLCAweGE4MTYsIDB4MDEzMCwgMHgyODAwLCAweGE4MGUsIDB4MmMwNSwKLQkweGE4MGEsIDB4MmMwMCwgMHhhODEyLCAweDcwMzcsIDB4MDAyMCwgMHg3ODFmLCAweDAzMDAsIDB4MDAxZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3MDM3LCAweDAwNTAsIDB4NzAzNywgMHgwMDIwLCAweDAwMWUsIDB4MDBlZSwKLQkweDA4MGMsIDB4MTY0OCwgMHgwMDA1LCAweDA4MGMsIDB4MGQ4NSwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwKLQkweGQwOGMsIDB4MTkwYywgMHg2Y2NjLCAweDJjZjAsIDB4MDEyNiwgMHgyMDkxLCAweDIyMDAsIDB4MDAxNiwKLQkweDAwYzYsIDB4M2U2MCwgMHg2MDE0LCAweDIwNDgsIDB4Mjk0MCwgMHg5MDNlLCAweDI3MzAsIDB4YTg2NCwKLQkweDIwNjgsIDB4YTgxYSwgMHg5ZDg0LCAweDAwMGYsIDB4OTA4OCwgMHgxZWMxLCAweDIxNjUsIDB4MDAwMiwKLQkweDE3ZGYsIDB4MTg0ZCwgMHgxN2RmLCAweDE3ZGYsIDB4MTdlMywgMHgxODJlLCAweDE3ZGYsIDB4MTgwMywKLQkweDE3ZDgsIDB4MTg0NCwgMHgxN2RmLCAweDE3ZGYsIDB4MTdlOCwgMHgxOTNhLCAweDE4MTcsIDB4MTgwZCwKLQkweGE5NjQsIDB4OTE4YywgMHgwMGZmLCAweDkxOGUsIDB4MDA0OCwgMHgwOTA0LCAweDE4NDQsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDgwNCwgMHgxOTMwLCAweGE4N2MsIDB4ZDBhYywgMHgwZGM4LCAweDA4MDQsIDB4MTg1NCwKLQkweGE4N2MsIDB4ZDBhYywgMHgwZGEwLCAweDA4MDQsIDB4MThiZiwgMHhhODk4LCAweDkwMWQsIDB4MTEwOCwKLQkweGFiOWMsIDB4OTAxNiwgMHhhYWIyLCAweGFhM2UsIDB4YWE0MiwgMHgzZTAwLCAweDkwODAsIDB4MDAwOCwKLQkweDIwMDQsIDB4OTA4MCwgMHg5NTM2LCAweDIwMDUsIDB4OTAwNSwgMHgwOTBjLCAweDBkODUsIDB4MjAwNCwKLQkweGE4YWUsIDB4MDgwNCwgMHgxOTE4LCAweGE4N2MsIDB4ZDBiYywgMHgwOWM4LCAweGE4OTAsIDB4YTg0MiwKLQkweGE4OGMsIDB4YTgzZSwgMHhhODg4LCAweDA4MDQsIDB4MTg1NCwgMHhhODdjLCAweGQwYmMsIDB4MDk3OCwKLQkweGE4OTAsIDB4YTg0MiwgMHhhODhjLCAweGE4M2UsIDB4YTg4OCwgMHgwODA0LCAweDE4YmYsIDB4YTg3YywKLQkweGQwYmMsIDB4MDkyOCwgMHhhODkwLCAweGE4NDIsIDB4YTg4YywgMHhhODNlLCAweGE4MDQsIDB4OTA0NSwKLQkweDA5MGMsIDB4MGQ4NSwgMHhhMTY0LCAweGE5MWEsIDB4OTFlYywgMHgwMDBmLCAweDlkODAsIDB4MWVjMSwKLQkweDIwNjUsIDB4YTg4OCwgMHhkMTljLCAweDE5MDQsIDB4MThiZiwgMHgwNDMwLCAweGE4N2MsIDB4ZDBhYywKLQkweDA5MDQsIDB4MTdkZiwgMHhhODA0LCAweDkwNDUsIDB4MDkwYywgMHgwZDg1LCAweGExNjQsIDB4YTkxYSwKLQkweDkxZWMsIDB4MDAwZiwgMHg5ZDgwLCAweDFlYzEsIDB4MjA2NSwgMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwKLQkweGQxOWMsIDB4MTkwNCwgMHgxOGJmLCAweDAwODAsIDB4YTg3YywgMHhkMGFjLCAweDA5MDQsIDB4MTdkZiwKLQkweDkwMDYsIDB4YTg0MiwgMHhhODNlLCAweDA4MDQsIDB4MThiZiwgMHhhODdjLCAweGQwYWMsIDB4MDkwNCwKLQkweDE3ZGYsIDB4OTAwNiwgMHhhODQyLCAweGE4M2UsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzYsIDB4MWEwYywKLQkweDBkODUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsIDB4MTg3NywgMHgxODc3LCAweDE4NzksIDB4MTg3NywKLQkweDE4NzcsIDB4MTg3NywgMHgxODgzLCAweDE4NzcsIDB4MTg3NywgMHgxODc3LCAweDE4OGQsIDB4MTg3NywKLQkweDE4NzcsIDB4MTg3NywgMHgxODk3LCAweDE4NzcsIDB4MTg3NywgMHgxODc3LCAweDE4YTEsIDB4MTg3NywKLQkweDE4NzcsIDB4MTg3NywgMHgxOGFiLCAweDE4NzcsIDB4MTg3NywgMHgxODc3LCAweDE4YjUsIDB4MDgwYywKLQkweDBkODUsIDB4YTU3NCwgMHhhNDc4LCAweDlkODYsIDB4MDAyNCwgMHgwOTA0LCAweDE3ZWQsIDB4YTM3YywKLQkweGEyODAsIDB4MDgwNCwgMHgxOTE4LCAweGE1ODQsIDB4YTQ4OCwgMHg5ZDg2LCAweDAwMjQsIDB4MDkwNCwKLQkweDE3ZWQsIDB4YTM4YywgMHhhMjkwLCAweDA4MDQsIDB4MTkxOCwgMHhhNTk0LCAweGE0OTgsIDB4OWQ4NiwKLQkweDAwMjQsIDB4MDkwNCwgMHgxN2VkLCAweGEzOWMsIDB4YTJhMCwgMHgwODA0LCAweDE5MTgsIDB4YTVhNCwKLQkweGE0YTgsIDB4OWQ4NiwgMHgwMDI0LCAweDA5MDQsIDB4MTdlZCwgMHhhM2FjLCAweGEyYjAsIDB4MDgwNCwKLQkweDE5MTgsIDB4YTViNCwgMHhhNGI4LCAweDlkODYsIDB4MDAyNCwgMHgwOTA0LCAweDE3ZWQsIDB4YTNiYywKLQkweGEyYzAsIDB4MDgwNCwgMHgxOTE4LCAweGE1YzQsIDB4YTRjOCwgMHg5ZDg2LCAweDAwMjQsIDB4MDkwNCwKLQkweDE3ZWQsIDB4YTNjYywgMHhhMmQwLCAweDA4MDQsIDB4MTkxOCwgMHhhNWQ0LCAweGE0ZDgsIDB4OWQ4NiwKLQkweDAwMjQsIDB4MDkwNCwgMHgxN2VkLCAweGEzZGMsIDB4YTJlMCwgMHgwODA0LCAweDE5MTgsIDB4MmMwNSwKLQkweDkwOGEsIDB4MDAzNCwgMHgxYTBjLCAweDBkODUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsIDB4MThlMiwKLQkweDE4ZTAsIDB4MThlMCwgMHgxOGUwLCAweDE4ZTAsIDB4MThlMCwgMHgxOGVkLCAweDE4ZTAsIDB4MThlMCwKLQkweDE4ZTAsIDB4MThlMCwgMHgxOGUwLCAweDE4ZjgsIDB4MThlMCwgMHgxOGUwLCAweDE4ZTAsIDB4MThlMCwKLQkweDE4ZTAsIDB4MTkwMywgMHgxOGUwLCAweDE4ZTAsIDB4MThlMCwgMHgxOGUwLCAweDE4ZTAsIDB4MTkwZSwKLQkweDA4MGMsIDB4MGQ4NSwgMHhhNTZjLCAweGE0NzAsIDB4YTc3NCwgMHhhNjc4LCAweDlkODYsIDB4MDAyYywKLQkweDA5MDQsIDB4MTdlZCwgMHhhMzdjLCAweGEyODAsIDB4MDQ1OCwgMHhhNTg0LCAweGE0ODgsIDB4YTc4YywKLQkweGE2OTAsIDB4OWQ4NiwgMHgwMDJjLCAweDA5MDQsIDB4MTdlZCwgMHhhMzk0LCAweGEyOTgsIDB4MDQwMCwKLQkweGE1OWMsIDB4YTRhMCwgMHhhN2E0LCAweGE2YTgsIDB4OWQ4NiwgMHgwMDJjLCAweDA5MDQsIDB4MTdlZCwKLQkweGEzYWMsIDB4YTJiMCwgMHgwMGE4LCAweGE1YjQsIDB4YTRiOCwgMHhhN2JjLCAweGE2YzAsIDB4OWQ4NiwKLQkweDAwMmMsIDB4MDkwNCwgMHgxN2VkLCAweGEzYzQsIDB4YTJjOCwgMHgwMDUwLCAweGE1Y2MsIDB4YTRkMCwKLQkweGE3ZDQsIDB4YTZkOCwgMHg5ZDg2LCAweDAwMmMsIDB4MDkwNCwgMHgxN2VkLCAweGEzZGMsIDB4YTJlMCwKLQkweGFiMmUsIDB4YWEzMiwgMHhhZDFlLCAweGFjMjIsIDB4YWYyNiwgMHhhZTJhLCAweGE5ODgsIDB4OGM2MCwKLQkweDJjMWQsIDB4YThhYywgMHhhYWIwLCAweGE4MzYsIDB4YWEzYSwgMHg4MTA5LCAweGE5MTYsIDB4MTE2MCwKLQkweDNlNjAsIDB4NjAxYywgMHhjMDg1LCAweDYwMWUsIDB4YTg3YywgMHhjMGRkLCAweGE4N2UsIDB4OTAwNiwKLQkweDAwY2UsIDB4MDAxZSwgMHgwMTJlLCAweDAwMDUsIDB4MjgwMCwgMHhhODBlLCAweGFiMGEsIDB4MmMwMCwKLQkweGE4MTIsIDB4MGM3MCwgMHgwODA0LCAweDE3ZGYsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywKLQkweDE5MGMsIDB4NmNjYywgMHgyZmYwLCAweDAxMjYsIDB4MjA5MSwgMHgyMjAwLCAweDAwMTYsIDB4MDBjNiwKLQkweDNlNjAsIDB4NjAxNCwgMHgyMDQ4LCAweDI5NDAsIDB4YTgwZSwgMHgyMDYxLCAweDFlYmMsIDB4YTgxMywKLQkweDFlYmMsIDB4MmMwNSwgMHhhODBhLCAweGE5NjQsIDB4YTkxYSwgMHhhODdjLCAweGQwYWMsIDB4MDkwYywKLQkweDBkODUsIDB4OTAwNiwgMHhhODQyLCAweGE4M2UsIDB4MmMwNSwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywKLQkweDBkODUsIDB4YWRjYywgMHhhY2QwLCAweGFmZDQsIDB4YWVkOCwgMHhhYmRjLCAweGFhZTAsIDB4YWIyZSwKLQkweGFhMzIsIDB4YWQxZSwgMHhhYzIyLCAweGFmMjYsIDB4YWUyYSwgMHhhOGFjLCAweGFhYjAsIDB4YTgzNiwKLQkweGFhM2EsIDB4YTk4OCwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDgsIDB4MTEyMCwKLQkweDgxMDksIDB4YTkxNiwgMHgwMTI4LCAweDAwODAsIDB4OTE4YSwgMHgwMDAyLCAweGE5MTYsIDB4MTE2MCwKLQkweDNlNjAsIDB4NjAxYywgMHhjMDg1LCAweDYwMWUsIDB4YTg3YywgMHhjMGRkLCAweGE4N2UsIDB4OTAwNiwKLQkweDAwY2UsIDB4MDAxZSwgMHgwMTJlLCAweDAwMDUsIDB4YTgwNCwgMHg5MDQ1LCAweDA5MGMsIDB4MGQ4NSwKLQkweGE4MGUsIDB4YTA2NCwgMHhhODFhLCAweDkwODQsIDB4MDAwZiwgMHg5MDgwLCAweDFlYzEsIDB4MjAxNSwKLQkweDgyZmYsIDB4MDkwYywgMHgwZDg1LCAweGFhMTIsIDB4MjIwNSwgMHhhODBhLCAweDBjMDgsIDB4OTAzZSwKLQkweDI3MzAsIDB4YTg4MCwgMHhkMGZjLCAweDExOTAsIDB4MmQwMCwgMHgwMDAyLCAweDFhOTQsIDB4MTlmNiwKLQkweDE5ZjYsIDB4MWE5NCwgMHgxYTk0LCAweDFhOGUsIDB4MWE5NCwgMHgxOWY2LCAweDFhNDUsIDB4MWE0NSwKLQkweDFhNDUsIDB4MWE5NCwgMHgxYTk0LCAweDFhOTQsIDB4MWE4YiwgMHgxYTQ1LCAweGMwZmMsIDB4YTg4MiwKLQkweGFiMmMsIDB4YWEzMCwgMHhhZDFjLCAweGFjMjAsIDB4ZGQ5YywgMHgwOTA0LCAweDFhOTYsIDB4MmMwNSwKLQkweDkwOGEsIDB4MDAzNCwgMHgxYTBjLCAweDBkODUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsIDB4MTllMiwKLQkweDE5ZTAsIDB4MTllMCwgMHgxOWUwLCAweDE5ZTAsIDB4MTllMCwgMHgxOWU2LCAweDE5ZTAsIDB4MTllMCwKLQkweDE5ZTAsIDB4MTllMCwgMHgxOWUwLCAweDE5ZWEsIDB4MTllMCwgMHgxOWUwLCAweDE5ZTAsIDB4MTllMCwKLQkweDE5ZTAsIDB4MTllZSwgMHgxOWUwLCAweDE5ZTAsIDB4MTllMCwgMHgxOWUwLCAweDE5ZTAsIDB4MTlmMiwKLQkweDA4MGMsIDB4MGQ4NSwgMHhhNzc0LCAweGE2NzgsIDB4MDgwNCwgMHgxYTk2LCAweGE3OGMsIDB4YTY5MCwKLQkweDA4MDQsIDB4MWE5NiwgMHhhN2E0LCAweGE2YTgsIDB4MDgwNCwgMHgxYTk2LCAweGE3YmMsIDB4YTZjMCwKLQkweDA4MDQsIDB4MWE5NiwgMHhhN2Q0LCAweGE2ZDgsIDB4MDgwNCwgMHgxYTk2LCAweDJjMDUsIDB4OTA4YSwKLQkweDAwMzYsIDB4MWEwYywgMHgwZDg1LCAweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDFhMTksIDB4MWExOSwKLQkweDFhMWIsIDB4MWExOSwgMHgxYTE5LCAweDFhMTksIDB4MWEyMSwgMHgxYTE5LCAweDFhMTksIDB4MWExOSwKLQkweDFhMjcsIDB4MWExOSwgMHgxYTE5LCAweDFhMTksIDB4MWEyZCwgMHgxYTE5LCAweDFhMTksIDB4MWExOSwKLQkweDFhMzMsIDB4MWExOSwgMHgxYTE5LCAweDFhMTksIDB4MWEzOSwgMHgxYTE5LCAweDFhMTksIDB4MWExOSwKLQkweDFhM2YsIDB4MDgwYywgMHgwZDg1LCAweGE1NzQsIDB4YTQ3OCwgMHhhMzdjLCAweGEyODAsIDB4MDgwNCwKLQkweDFhOTYsIDB4YTU4NCwgMHhhNDg4LCAweGEzOGMsIDB4YTI5MCwgMHgwODA0LCAweDFhOTYsIDB4YTU5NCwKLQkweGE0OTgsIDB4YTM5YywgMHhhMmEwLCAweDA4MDQsIDB4MWE5NiwgMHhhNWE0LCAweGE0YTgsIDB4YTNhYywKLQkweGEyYjAsIDB4MDgwNCwgMHgxYTk2LCAweGE1YjQsIDB4YTRiOCwgMHhhM2JjLCAweGEyYzAsIDB4MDgwNCwKLQkweDFhOTYsIDB4YTVjNCwgMHhhNGM4LCAweGEzY2MsIDB4YTJkMCwgMHgwODA0LCAweDFhOTYsIDB4YTVkNCwKLQkweGE0ZDgsIDB4YTNkYywgMHhhMmUwLCAweDA4MDQsIDB4MWE5NiwgMHgyYzA1LCAweDkwOGEsIDB4MDAzNCwKLQkweDFhMGMsIDB4MGQ4NSwgMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwgMHgxYTY4LCAweDFhNjYsIDB4MWE2NiwKLQkweDFhNjYsIDB4MWE2NiwgMHgxYTY2LCAweDFhNmYsIDB4MWE2NiwgMHgxYTY2LCAweDFhNjYsIDB4MWE2NiwKLQkweDFhNjYsIDB4MWE3NiwgMHgxYTY2LCAweDFhNjYsIDB4MWE2NiwgMHgxYTY2LCAweDFhNjYsIDB4MWE3ZCwKLQkweDFhNjYsIDB4MWE2NiwgMHgxYTY2LCAweDFhNjYsIDB4MWE2NiwgMHgxYTg0LCAweDA4MGMsIDB4MGQ4NSwKLQkweGE1NmMsIDB4YTQ3MCwgMHhhNzc0LCAweGE2NzgsIDB4YTM3YywgMHhhMjgwLCAweDA0MzgsIDB4YTU4NCwKLQkweGE0ODgsIDB4YTc4YywgMHhhNjkwLCAweGEzOTQsIDB4YTI5OCwgMHgwNDAwLCAweGE1OWMsIDB4YTRhMCwKLQkweGE3YTQsIDB4YTZhOCwgMHhhM2FjLCAweGEyYjAsIDB4MDBjOCwgMHhhNWI0LCAweGE0YjgsIDB4YTdiYywKLQkweGE2YzAsIDB4YTNjNCwgMHhhMmM4LCAweDAwOTAsIDB4YTVjYywgMHhhNGQwLCAweGE3ZDQsIDB4YTZkOCwKLQkweGEzZGMsIDB4YTJlMCwgMHgwMDU4LCAweDlkODYsIDB4MDAwZSwgMHgxMTMwLCAweDA4MGMsIDB4MWU5NywKLQkweDE5MDQsIDB4MTk5ZiwgMHg5MDBlLCAweDAwNTAsIDB4MDgwYywgMHgwZDg1LCAweGFiMmUsIDB4YWEzMiwKLQkweGFkMWUsIDB4YWMyMiwgMHhhZjI2LCAweGFlMmEsIDB4MDgwYywgMHgxZTk3LCAweDAwMDUsIDB4NjAxNCwKLQkweDIwNDgsIDB4NjExOCwgMHg4MWZmLCAweDAxNDgsIDB4ODEwYywgMHg4MTBjLCAweDgxMGMsIDB4ODFmZiwKLQkweDExMTgsIDB4YTg4NywgMHgwMDAxLCAweDAwMDgsIDB4YTk4NiwgMHg2MDFiLCAweDAwMDIsIDB4YTg3NCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg0LCAweDAwMDgsIDB4MDE1MCwgMHgwMGU5LCAweDYwMDAsIDB4OTA4NiwKLQkweDAwMDQsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDgsIDB4MDgwYywgMHhiMjBhLCAweDAwMDUsIDB4YTk3NCwKLQkweGQxZGMsIDB4MTEwOCwgMHgwMDA1LCAweGE5MzQsIDB4YTg4YywgMHg5MTA2LCAweDExNTgsIDB4YTkzOCwKLQkweGE4OTAsIDB4OTEwNiwgMHgxMTM4LCAweDYwMWMsIDB4YzA4NCwgMHg2MDFlLCAweDIwMDksIDB4MDA0OCwKLQkweDA4MDQsIDB4YjIwYSwgMHgwMDA1LCAweDAxMjYsIDB4MDBjNiwgMHgyMDkxLCAweDIyMDAsIDB4MDBjZSwKLQkweDc5MDgsIDB4OTE4YywgMHgwMDA3LCAweDkxODYsIDB4MDAwMCwgMHgwNWIwLCAweDkxODYsIDB4MDAwMywKLQkweDA1OTgsIDB4NjAyMCwgMHg2MDIzLCAweDAwMDAsIDB4MDAwNiwgMHgyMDMxLCAweDAwMDgsIDB4MDBjNiwKLQkweDc4MWYsIDB4MDgwOCwgMHg3ODA4LCAweGQwOWMsIDB4MDEyMCwgMHgwODBjLCAweDEzZDQsIDB4ODYzMSwKLQkweDFkYjgsIDB4MDBjZSwgMHg3ODFmLCAweDA4MDAsIDB4MjAzMSwgMHgwMTY4LCAweDAwYzYsIDB4NzgwOCwKLQkweGQwOWMsIDB4MTkwYywgMHgxM2Q0LCAweDAwY2UsIDB4MjAwMSwgMHgwMDM4LCAweDA4MGMsIDB4MWJhZSwKLQkweDc5MzAsIDB4OTE4NiwgMHgwMDQwLCAweDAxNjAsIDB4OTE4NiwgMHgwMDQyLCAweDE5MGMsIDB4MGQ4NSwKLQkweDIwMDEsIDB4MDAxZSwgMHg4MDAxLCAweDFkZjAsIDB4ODYzMSwgMHgxZDQwLCAweDA4MGMsIDB4MWJiZCwKLQkweDAwMGUsIDB4NjAyMiwgMHgwMTJlLCAweDAwMDUsIDB4MDgwYywgMHgxYmFhLCAweDc4MjcsIDB4MDAxNSwKLQkweDc4MjgsIDB4OWMwNiwgMHgxZGI4LCAweDc4MmIsIDB4MDAwMCwgMHgwY2EwLCAweDAwZjYsIDB4MjA3OSwKLQkweDAzMDAsIDB4NzgwMywgMHgwMDAwLCAweDc4YWIsIDB4MDAwNCwgMHgyMDAxLCAweGYwMDAsIDB4ODAwMSwKLQkweDA5MGMsIDB4MGQ4NSwgMHg3YWFjLCAweGQyYWMsIDB4MWRkMCwgMHgwMGZlLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDExODgsIDB4MjAwMSwgMHgwMTM4LCAweDIwMDMsIDB4MDAwMCwgMHgyMDAxLCAweDAxNjAsIDB4MjAwMywKLQkweDAwMDAsIDB4MjAxMSwgMHgwMTJjLCAweGEwMDEsIDB4YTAwMSwgMHg4MjExLCAweDFkZTAsIDB4MDA1OSwKLQkweDA4MDQsIDB4Nzg0MCwgMHgwNDc5LCAweDAwMzksIDB4MjAwMSwgMHgwMTYwLCAweDI1MDIsIDB4MjAwMSwKLQkweDAxMzgsIDB4MjIwMiwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgwMjAwLCAweDA4MGMsIDB4MmE4YiwKLQkweDIwMDksIDB4MDAzYywgMHgwODBjLCAweDIyMjAsIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwKLQkweDcwMDAsIDB4OTA4NCwgMHgwMDNjLCAweDFkZTAsIDB4MDgwYywgMHg4ODk5LCAweDcwYTAsIDB4NzBhMiwKLQkweDcwOTgsIDB4NzA5YSwgMHg3MDljLCAweDcwOWUsIDB4MjAwMSwgMHgwMjBkLCAweDIwMDMsIDB4MDAyMCwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMzAwLCAweDA4MGMsIDB4MTM2NiwgMHg3ODAzLCAweDAwMDEsIDB4MDBmZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDAxMzgsIDB4MjAxNCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAxNjAsIDB4MjAyYywgMHgyMDAzLCAweDAwMDAsIDB4MDgwYywgMHg3NzllLCAweDExMDgsIDB4MDAwNSwKLQkweDIwMjEsIDB4MDI2MCwgMHgyMDAxLCAweDAxNDEsIDB4MjAxYywgMHhkM2RjLCAweDExNjgsIDB4MjAwMSwKLQkweDAxMDksIDB4MjAxYywgMHg5MzljLCAweDAwNDgsIDB4MTE2MCwgMHgyMDAxLCAweDAxMTEsIDB4MjAxYywKLQkweDgzZmYsIDB4MTExMCwgMHg4NDIxLCAweDFkNzAsIDB4MjAwMSwgMHgwMTVkLCAweDIwMDMsIDB4MDAwMCwKLQkweDAwMDUsIDB4MDA0NiwgMHgyMDIxLCAweDAwMTksIDB4MjAwMywgMHgwMDQ4LCAweGEwMDEsIDB4YTAwMSwKLQkweDIwMWMsIDB4OTM5YywgMHgwMDQ4LCAweDAxMjAsIDB4ODQyMSwgMHgxZGIwLCAweDAwNGUsIDB4MGM2MCwKLQkweDAwNGUsIDB4MGM0MCwgMHg2MDFjLCAweGMwODQsIDB4NjAxZSwgMHgwMDA1LCAweDJjMDgsIDB4NjIxYywKLQkweDA4MGMsIDB4MTZiOSwgMHg3OTMwLCAweDAwMDUsIDB4MmMwOCwgMHg2MjFjLCAweDA4MGMsIDB4MTcwMiwKLQkweDc5MzAsIDB4MDAwNSwgMHg4MDAxLCAweDFkZjAsIDB4MDAwNSwgMHgyMDMxLCAweDAwNjQsIDB4NzgxYywKLQkweDkwODQsIDB4MDAwNywgMHgwMTcwLCAweDIwMDEsIDB4MDAzOCwgMHgwYzQxLCAweDkxODYsIDB4MDA0MCwKLQkweDA5MDQsIDB4MWMxYiwgMHgyMDAxLCAweDAwMWUsIDB4MGM2OSwgMHg4NjMxLCAweDFkODAsIDB4MDgwYywKLQkweDBkODUsIDB4NzgxZiwgMHgwMjAyLCAweDIwMDEsIDB4MDE1ZCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDBkYWMsIDB4MGMwMSwgMHg3ODFjLCAweGQwODQsIDB4MDExMCwgMHgwODYxLCAweDA0ZTAsIDB4MjAwMSwKLQkweDAwMzAsIDB4MDg5MSwgMHg5MTg2LCAweDAwNDAsIDB4MDU2OCwgMHg3ODFjLCAweGQwODQsIDB4MWRhOCwKLQkweDc4MWYsIDB4MDEwMSwgMHgyMDAxLCAweDAwMTQsIDB4MDg2OSwgMHgyMDAxLCAweDAwMzcsIDB4MDgyMSwKLQkweDkxODYsIDB4MDA0MCwgMHgwMTQwLCAweDIwMDEsIDB4MDAzMCwgMHgwODBjLCAweDFiYjQsIDB4OTE4NiwKLQkweDAwNDAsIDB4MTkwYywgMHgwZDg1LCAweDAwZDYsIDB4MjA2OSwgMHgwMjAwLCAweDY5MmMsIDB4ZDFmNCwKLQkweDExNzAsIDB4ZDFjNCwgMHgwMTYwLCAweGQxOWMsIDB4MDEzMCwgMHg2ODAwLCAweDkwODUsIDB4MTgwMCwKLQkweDY4MDIsIDB4MDBkZSwgMHgwMDgwLCAweDY5MDgsIDB4OTE4NCwgMHgwMDA3LCAweDFkYjAsIDB4MDBkZSwKLQkweDc4MWYsIDB4MDEwMCwgMHg3OTFjLCAweDkxODQsIDB4MDAwNywgMHgwOTBjLCAweDBkODUsIDB4YTAwMSwKLQkweGEwMDEsIDB4NzgxZiwgMHgwMjAwLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDI0MDAsIDB4MjA3OSwKLQkweDAzODAsIDB4MjAwMSwgMHgxOWU4LCAweDIwNzAsIDB4MDEyZSwgMHgwMDA1LCAweDJjZjAsIDB4MDEyNiwKLQkweDIwOTEsIDB4MjQwMCwgMHgzZTYwLCAweDYwMTQsIDB4MjA0OCwgMHhhOTY0LCAweGE5MWEsIDB4OTE4YywKLQkweDAwZmYsIDB4OTE4NCwgMHgwMDBmLCAweDAwMDIsIDB4MWM1MCwgMHgxYzUwLCAweDFjNTAsIDB4MWM1MiwKLQkweDFjNTAsIDB4MWM1MCwgMHgxYzUwLCAweDFjNTAsIDB4MWM0NCwgMHgxYzVhLCAweDFjNTAsIDB4MWM1NiwKLQkweDFjNTAsIDB4MWM1MCwgMHgxYzUwLCAweDFjNTAsIDB4OTA4NiwgMHgwMDA4LCAweDExNDgsIDB4YTg3YywKLQkweGQwYjQsIDB4MDkwNCwgMHgxZGNhLCAweDIwMTEsIDB4MWViYywgMHgyMjA1LCAweGFiODgsIDB4MDBhOCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg5MTg2LCAweDAwMTMsIDB4MDEyOCwgMHgwY2QwLCAweDkxODYsIDB4MDAxYiwKLQkweDAxMDgsIDB4MGNiMCwgMHhhODdjLCAweGQwYjQsIDB4MDkwNCwgMHgxZGNhLCAweDkxODQsIDB4MDAwZiwKLQkweDkwODAsIDB4MWVjMSwgMHgyMDE1LCAweDIyMDUsIDB4YWI4OCwgMHgyOTA4LCAweGE4MGEsIDB4YTkwZSwKLQkweGFhMTIsIDB4YWIxNiwgMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwgMHgwMTJlLCAweDAwMDUsIDB4MmNmMCwKLQkweDAxMjYsIDB4MjA5MSwgMHgyNDAwLCAweDNlNjAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4OGMsIDB4YTk5MCwKLQkweGFhYWMsIDB4YWJiMCwgMHhhYTM2LCAweGFiM2EsIDB4YTgzZSwgMHhhOTQyLCAweGE4NDYsIDB4YTk0YSwKLQkweGE5NjQsIDB4OTE4YywgMHgwMGZmLCAweDkxODYsIDB4MDAxZSwgMHgwMTk4LCAweDI5NDAsIDB4YTA2NCwKLQkweGE4MWEsIDB4OTBlYywgMHgwMDBmLCAweDlkODAsIDB4MWVjMSwgMHgyMDY1LCAweDJjMDUsIDB4MjgwOCwKLQkweDJjMTAsIDB4YWI4OCwgMHhhODBhLCAweGE5MGUsIDB4YWExMiwgMHhhYjE2LCAweDAxMmUsIDB4M2U2MCwKLQkweDAwMDUsIDB4YTgwNCwgMHgyMDQwLCAweDBjNTgsIDB4MmNmMCwgMHgwMTI2LCAweDIwOTEsIDB4MjQwMCwKLQkweDNlNjAsIDB4NjAxNCwgMHgyMDQ4LCAweGE5N2MsIDB4Mjk1MCwgMHhkMWRjLCAweDE5MDQsIDB4MWQ5NCwKLQkweGMxZGQsIDB4YTk3ZSwgMHg5MDA2LCAweGE4NDIsIDB4YTgzZSwgMHhhOTg4LCAweDgxMDksIDB4YTkxNiwKLQkweGE5NjQsIDB4YTkxYSwgMHg5MTg0LCAweDAwMGYsIDB4OTA4OCwgMHgxZWMxLCAweDIxNDUsIDB4MDAwMiwKLQkweDFjYzgsIDB4MWNkNiwgMHgxY2M4LCAweDFjYzgsIDB4MWNjOCwgMHgxY2NhLCAweDFjYzgsIDB4MWNjOCwKLQkweDFkMmIsIDB4MWQyYiwgMHgxY2M4LCAweDFjYzgsIDB4MWNjOCwgMHgxZDI5LCAweDFjYzgsIDB4MWNjOCwKLQkweDA4MGMsIDB4MGQ4NSwgMHhhODA0LCAweDIwNTAsIDB4YjE2NCwgMHhhOTFhLCAweDkxODQsIDB4MDAwZiwKLQkweDkwODAsIDB4MWVjMSwgMHgyMDQ1LCAweGQxOWMsIDB4MTkwNCwgMHgxZDJiLCAweDkwMzYsIDB4MjYzOCwKLQkweDI4MDUsIDB4OTA4YSwgMHgwMDM2LCAweDFhMGMsIDB4MGQ4NSwgMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwKLQkweDFjZmIsIDB4MWNmYiwgMHgxY2ZkLCAweDFjZmIsIDB4MWNmYiwgMHgxY2ZiLCAweDFkMDMsIDB4MWNmYiwKLQkweDFjZmIsIDB4MWNmYiwgMHgxZDA5LCAweDFjZmIsIDB4MWNmYiwgMHgxY2ZiLCAweDFkMGYsIDB4MWNmYiwKLQkweDFjZmIsIDB4MWNmYiwgMHgxZDE1LCAweDFjZmIsIDB4MWNmYiwgMHgxY2ZiLCAweDFkMWIsIDB4MWNmYiwKLQkweDFjZmIsIDB4MWNmYiwgMHgxZDIxLCAweDA4MGMsIDB4MGQ4NSwgMHhiNTc0LCAweGI0NzgsIDB4YjM3YywKLQkweGIyODAsIDB4MDgwNCwgMHgxZDcwLCAweGI1ODQsIDB4YjQ4OCwgMHhiMzhjLCAweGIyOTAsIDB4MDgwNCwKLQkweDFkNzAsIDB4YjU5NCwgMHhiNDk4LCAweGIzOWMsIDB4YjJhMCwgMHgwODA0LCAweDFkNzAsIDB4YjVhNCwKLQkweGI0YTgsIDB4YjNhYywgMHhiMmIwLCAweDA4MDQsIDB4MWQ3MCwgMHhiNWI0LCAweGI0YjgsIDB4YjNiYywKLQkweGIyYzAsIDB4MDgwNCwgMHgxZDcwLCAweGI1YzQsIDB4YjRjOCwgMHhiM2NjLCAweGIyZDAsIDB4MDgwNCwKLQkweDFkNzAsIDB4YjVkNCwgMHhiNGQ4LCAweGIzZGMsIDB4YjJlMCwgMHgwODA0LCAweDFkNzAsIDB4MDgwNCwKLQkweDFkNzAsIDB4MDgwYywgMHgwZDg1LCAweDI4MDUsIDB4OTA4YSwgMHgwMDM0LCAweDFhMGMsIDB4MGQ4NSwKLQkweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDFkNGUsIDB4MWQ0YywgMHgxZDRjLCAweDFkNGMsIDB4MWQ0YywKLQkweDFkNGMsIDB4MWQ1NSwgMHgxZDRjLCAweDFkNGMsIDB4MWQ0YywgMHgxZDRjLCAweDFkNGMsIDB4MWQ1YywKLQkweDFkNGMsIDB4MWQ0YywgMHgxZDRjLCAweDFkNGMsIDB4MWQ0YywgMHgxZDYzLCAweDFkNGMsIDB4MWQ0YywKLQkweDFkNGMsIDB4MWQ0YywgMHgxZDRjLCAweDFkNmEsIDB4MDgwYywgMHgwZDg1LCAweGI1NmMsIDB4YjQ3MCwKLQkweGI3NzQsIDB4YjY3OCwgMHhiMzdjLCAweGIyODAsIDB4MDBkOCwgMHhiNTg0LCAweGI0ODgsIDB4Yjc4YywKLQkweGI2OTAsIDB4YjM5NCwgMHhiMjk4LCAweDAwYTAsIDB4YjU5YywgMHhiNGEwLCAweGI3YTQsIDB4YjZhOCwKLQkweGIzYWMsIDB4YjJiMCwgMHgwMDY4LCAweGI1YjQsIDB4YjRiOCwgMHhiN2JjLCAweGI2YzAsIDB4YjNjNCwKLQkweGIyYzgsIDB4MDAzMCwgMHhiNWNjLCAweGI0ZDAsIDB4YjdkNCwgMHhiNmQ4LCAweGIzZGMsIDB4YjJlMCwKLQkweGFiMmUsIDB4YWEzMiwgMHhhZDFlLCAweGFjMjIsIDB4YWYyNiwgMHhhZTJhLCAweGE5ODgsIDB4ODEwOSwKLQkweGE5MTYsIDB4MTExOCwgMHg5MDA2LCAweDAxMmUsIDB4MDAwNSwgMHg4ODQwLCAweDI4MDUsIDB4OTAwNSwKLQkweDExNjgsIDB4YjAwNCwgMHg5MDA1LCAweDA5MGMsIDB4MGQ4NSwgMHgyMDUwLCAweGIxNjQsIDB4YTkxYSwKLQkweDkxODQsIDB4MDAwZiwgMHg5MDgwLCAweDFlYzEsIDB4MjA0NSwgMHgyODA1LCAweDI4MTAsIDB4MmEwOCwKLQkweGE4MGEsIDB4YTkwZSwgMHhhYTEyLCAweDBjMzAsIDB4M2U2MCwgMHg2MzQ0LCAweGQzZmMsIDB4MTkwYywKLQkweDBkODUsIDB4YTkzYywgMHhhYTQwLCAweGE4NDQsIDB4OTEwNiwgMHgxMTE4LCAweGE4NDgsIDB4OTIwNiwKLQkweDA1MDgsIDB4Mjk1OCwgMHhhYjQ4LCAweGFjNDQsIDB4Mjk0MCwgMHgwODBjLCAweDFlZTEsIDB4MTk5OCwKLQkweDI4NTAsIDB4MmM0MCwgMHhhYjE0LCAweGE4ODAsIDB4ZDBmYywgMHgxMTQwLCAweGE4MTAsIDB4MjAwNSwKLQkweGE4MGEsIDB4MmEwMCwgMHhhODBlLCAweDIwMDksIDB4ODAxNSwgMHgwMDcwLCAweDAwYzYsIDB4M2U2MCwKLQkweDYwNDQsIDB4YzBhNCwgMHg5MDg1LCAweDgwMDUsIDB4NjA0NiwgMHgwMGNlLCAweDgzMTksIDB4YWIxNiwKLQkweDE5MDQsIDB4MWQ3ZCwgMHgyMDA5LCAweDgwMDUsIDB4M2U2MCwgMHg2MDQ0LCAweDkxMDUsIDB4NjA0NiwKLQkweDA4MDQsIDB4MWQ3YSwgMHgwODBjLCAweDBkODUsIDB4MDBmNiwgMHgwMGU2LCAweDAwOTYsIDB4MDBjNiwKLQkweDAwMjYsIDB4NzA0YywgMHg5YzA2LCAweDE5MGMsIDB4MGQ4NSwgMHgyMDc5LCAweDAwOTAsIDB4MjAwMSwKLQkweDAxMDUsIDB4MjAwMywgMHgwMDEwLCAweDc4MmIsIDB4MDAwNCwgMHg3MDU3LCAweDAwMDAsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxMTgsIDB4YTg4MCwgMHhjMGJkLCAweGE4ODIsIDB4NjAyMCwKLQkweDkwODYsIDB4MDAwNiwgMHgxMTcwLCAweDIwNjEsIDB4MDEwMCwgMHg2MmM4LCAweDIwMDEsIDB4MDBmYSwKLQkweDgwMDEsIDB4MWRmMCwgMHg2MGM4LCAweDkyMDYsIDB4MWRjMCwgMHg2MGM0LCAweGE4OWEsIDB4NjBjOCwKLQkweGE4OTYsIDB4NzA0YywgMHgyMDYwLCAweDAwYzYsIDB4MDgwYywgMHhjYWU5LCAweDA4MGMsIDB4YWNmYywKLQkweDAwY2UsIDB4NzA0YywgMHg5YzA2LCAweDExNTAsIDB4MjAwOSwgMHgwMDQwLCAweDA4MGMsIDB4MjIyMCwKLQkweDA4MGMsIDB4YTdhMSwgMHgyMDExLCAweDAwMDAsIDB4MDgwYywgMHhhNjM1LCAweDAwMmUsIDB4MDBjZSwKLQkweDAwOWUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDAwOTAsIDB4NzgxYywKLQkweDAwMDYsIDB4NzgxOCwgMHgwMDA2LCAweDIwNzksIDB4MDEwMCwgMHg3YTE0LCAweDkyODQsIDB4MTk4NCwKLQkweDkwODUsIDB4MDAxMiwgMHg3ODE2LCAweDIwMTksIDB4MTAwMCwgMHg4MzE5LCAweDA5MGMsIDB4MGQ4NSwKLQkweDc4MjAsIDB4ZDBiYywgMHgxZGQwLCAweDc5YzgsIDB4MDAwZSwgMHg5MTAyLCAweDAwMWUsIDB4MDAwNiwKLQkweDAwMTYsIDB4NzljNCwgMHgwMDBlLCAweDkxMDMsIDB4NzhjNiwgMHgwMDBlLCAweDc4Y2EsIDB4OTI4NCwKLQkweDE5ODQsIDB4OTA4NSwgMHgwMDEyLCAweDc4MTYsIDB4MjA3OSwgMHgwMDkwLCAweDc4MmIsIDB4MDAwOCwKLQkweDcwNTcsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwKLQkweDcwNTQsIDB4OTA4NiwgMHgwMDAwLCAweDA5MDQsIDB4MWU5MiwgMHgyMDc5LCAweDAwOTAsIDB4MjAwOSwKLQkweDAyMDcsIDB4MjEwYywgMHhkMTk0LCAweDAxYjgsIDB4MjAwOSwgMHgwMjBjLCAweDIxMGMsIDB4OTE4NCwKLQkweDAwMDMsIDB4MDE4OCwgMHgwODBjLCAweGVlZmEsIDB4MjAwMSwgMHgwMTMzLCAweDIwMDQsIDB4OTAwNSwKLQkweDA5MGMsIDB4MGQ4NSwgMHgwMDE2LCAweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4MDAxZSwKLQkweDIwMDEsIDB4MDIwYywgMHgyMTAyLCAweDIwMDksIDB4MDIwNiwgMHgyMTA0LCAweDIwMDksIDB4MDIwMywKLQkweDIxMGMsIDB4OTEwNiwgMHgxMTIwLCAweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4NzgyYywKLQkweGQwZmMsIDB4MDlhOCwgMHgwODBjLCAweGFkMTgsIDB4NzgyYywgMHhkMGZjLCAweDFkZTgsIDB4MDgwYywKLQkweGFjZmMsIDB4NzA1NCwgMHg5MDg2LCAweDAwMDAsIDB4MTk1MCwgMHg3ODJiLCAweDAwMDQsIDB4NzgyYywKLQkweGQwYWMsIDB4MWRlOCwgMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyMjIwLCAweDc4MmIsIDB4MDAwMiwKLQkweDcwNTcsIDB4MDAwMCwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHgwODBjLCAweDBkODUsIDB4OGM2MCwKLQkweDJjMDUsIDB4OTAwNSwgMHgwMTEwLCAweDhhNTEsIDB4MDAwNSwgMHhhMDA0LCAweDkwMDUsIDB4MDE2OCwKLQkweGE4NWEsIDB4MjA0MCwgMHhhMDY0LCAweDkwODQsIDB4MDAwZiwgMHg5MDgwLCAweDFlYzEsIDB4MjA2NSwKLQkweDhjZmYsIDB4MDkwYywgMHgwZDg1LCAweDhhNTEsIDB4MDAwNSwgMHgyMDUwLCAweDAwMDUsIDB4MDAwMCwKLQkweDAwMWQsIDB4MDAyMSwgMHgwMDI1LCAweDAwMjksIDB4MDAyZCwgMHgwMDMxLCAweDAwMzUsIDB4MDAwMCwKLQkweDAwMWIsIDB4MDAyMSwgMHgwMDI3LCAweDAwMmQsIDB4MDAzMywgMHgwMDAwLCAweDAwMDAsIDB4MDAyMywKLQkweDAwMDAsIDB4MDAwMCwgMHgxZWI0LCAweDFlYjAsIDB4MWViNCwgMHgxZWI0LCAweDFlYmUsIDB4MDAwMCwKLQkweDFlYjQsIDB4MWViYiwgMHgxZWJiLCAweDFlYjgsIDB4MWViYiwgMHgxZWJiLCAweDAwMDAsIDB4MWViZSwKLQkweDFlYmIsIDB4MDAwMCwgMHgxZWI2LCAweDFlYjYsIDB4MDAwMCwgMHgxZWI2LCAweDFlYmUsIDB4MDAwMCwKLQkweDFlYjYsIDB4MWViYywgMHgxZWJjLCAweDFlYmMsIDB4MDAwMCwgMHgxZWJjLCAweDAwMDAsIDB4MWViZSwKLQkweDFlYmMsIDB4MDBjNiwgMHgwMGQ2LCAweDAwODYsIDB4YWI0MiwgMHhhYzNlLCAweGE4ODgsIDB4OTA1NSwKLQkweDA5MDQsIDB4MjBjMCwgMHgyOTQwLCAweGEwNjQsIDB4OTBlYywgMHgwMDBmLCAweDkwODQsIDB4MDBmZiwKLQkweDkwODYsIDB4MDAwOCwgMHgxMTE4LCAweDIwNjEsIDB4MWViYywgMHgwMGQwLCAweDlkZTAsIDB4MWVjMSwKLQkweDlkODYsIDB4MDAwNywgMHgwMTMwLCAweDlkODYsIDB4MDAwZSwgMHgwMTE4LCAweDlkODYsIDB4MDAwZiwKLQkweDExMjAsIDB4YTA4YywgMHg5NDIyLCAweGEwOTAsIDB4OTMxYiwgMHgyYzA1LCAweDkwNjUsIDB4MTE0MCwKLQkweDAzMTAsIDB4MDgwNCwgMHgyMGMwLCAweGEwMDQsIDB4OTA0NSwgMHgwOTA0LCAweDIwYzAsIDB4MDhkOCwKLQkweDJjMDUsIDB4OTAwNSwgMHgwOTA0LCAweDFmYTgsIDB4ZGQ5YywgMHgxOTA0LCAweDFmNjQsIDB4OTA4YSwKLQkweDAwMzYsIDB4MWEwYywgMHgwZDg1LCAweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDFmMzksIDB4MWYzOSwKLQkweDFmM2IsIDB4MWYzOSwgMHgxZjM5LCAweDFmMzksIDB4MWY0MSwgMHgxZjM5LCAweDFmMzksIDB4MWYzOSwKLQkweDFmNDcsIDB4MWYzOSwgMHgxZjM5LCAweDFmMzksIDB4MWY0ZCwgMHgxZjM5LCAweDFmMzksIDB4MWYzOSwKLQkweDFmNTMsIDB4MWYzOSwgMHgxZjM5LCAweDFmMzksIDB4MWY1OSwgMHgxZjM5LCAweDFmMzksIDB4MWYzOSwKLQkweDFmNWYsIDB4MDgwYywgMHgwZDg1LCAweGEwN2MsIDB4OTQyMiwgMHhhMDgwLCAweDkzMWIsIDB4MDgwNCwKLQkweDFmOWUsIDB4YTA4YywgMHg5NDIyLCAweGEwOTAsIDB4OTMxYiwgMHgwODA0LCAweDFmOWUsIDB4YTA5YywKLQkweDk0MjIsIDB4YTBhMCwgMHg5MzFiLCAweDA4MDQsIDB4MWY5ZSwgMHhhMGFjLCAweDk0MjIsIDB4YTBiMCwKLQkweDkzMWIsIDB4MDgwNCwgMHgxZjllLCAweGEwYmMsIDB4OTQyMiwgMHhhMGMwLCAweDkzMWIsIDB4MDgwNCwKLQkweDFmOWUsIDB4YTBjYywgMHg5NDIyLCAweGEwZDAsIDB4OTMxYiwgMHgwODA0LCAweDFmOWUsIDB4YTBkYywKLQkweDk0MjIsIDB4YTBlMCwgMHg5MzFiLCAweDA0ZDAsIDB4OTA4YSwgMHgwMDM0LCAweDFhMGMsIDB4MGQ4NSwKLQkweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDFmODYsIDB4MWY4NCwgMHgxZjg0LCAweDFmODQsIDB4MWY4NCwKLQkweDFmODQsIDB4MWY4YiwgMHgxZjg0LCAweDFmODQsIDB4MWY4NCwgMHgxZjg0LCAweDFmODQsIDB4MWY5MCwKLQkweDFmODQsIDB4MWY4NCwgMHgxZjg0LCAweDFmODQsIDB4MWY4NCwgMHgxZjk1LCAweDFmODQsIDB4MWY4NCwKLQkweDFmODQsIDB4MWY4NCwgMHgxZjg0LCAweDFmOWEsIDB4MDgwYywgMHgwZDg1LCAweGEwN2MsIDB4OTQyMiwKLQkweGEwODAsIDB4OTMxYiwgMHgwMDk4LCAweGEwOTQsIDB4OTQyMiwgMHhhMDk4LCAweDkzMWIsIDB4MDA3MCwKLQkweGEwYWMsIDB4OTQyMiwgMHhhMGIwLCAweDkzMWIsIDB4MDA0OCwgMHhhMGM0LCAweDk0MjIsIDB4YTBjOCwKLQkweDkzMWIsIDB4MDAyMCwgMHhhMGRjLCAweDk0MjIsIDB4YTBlMCwgMHg5MzFiLCAweDA2MzAsIDB4MjMwMCwKLQkweDk0MDUsIDB4MDE2MCwgMHg4YTUxLCAweDA5MDQsIDB4MjBjMCwgMHg4YzYwLCAweDA4MDQsIDB4MWYxMCwKLQkweGEwMDQsIDB4OTA0NSwgMHgwOTA0LCAweDIwYzAsIDB4MDgwNCwgMHgxZWViLCAweDhhNTEsIDB4MDkwNCwKLQkweDIwYzAsIDB4OGM2MCwgMHgyYzA1LCAweDkwMDUsIDB4MTE1OCwgMHhhMDA0LCAweDkwNDUsIDB4MDkwNCwKLQkweDIwYzAsIDB4YTA2NCwgMHg5MGVjLCAweDAwMGYsIDB4OWRlMCwgMHgxZWMxLCAweDJjMDUsIDB4MjA2MCwKLQkweGE4ODAsIDB4YzBmYywgMHhhODgyLCAweDA4MDQsIDB4MjBiNSwgMHgyYzA1LCAweDg0MjIsIDB4ODQyMCwKLQkweDgzMWEsIDB4OTM5OSwgMHgwMDAwLCAweGFjMmUsIDB4YWIzMiwgMHhkZDljLCAweDE5MDQsIDB4MjA1MiwKLQkweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDFmZWUsIDB4MWZlZSwgMHgxZmYwLCAweDFmZWUsIDB4MWZlZSwKLQkweDFmZWUsIDB4MWZmZSwgMHgxZmVlLCAweDFmZWUsIDB4MWZlZSwgMHgyMDBjLCAweDFmZWUsIDB4MWZlZSwKLQkweDFmZWUsIDB4MjAxYSwgMHgxZmVlLCAweDFmZWUsIDB4MWZlZSwgMHgyMDI4LCAweDFmZWUsIDB4MWZlZSwKLQkweDFmZWUsIDB4MjAzNiwgMHgxZmVlLCAweDFmZWUsIDB4MWZlZSwgMHgyMDQ0LCAweDA4MGMsIDB4MGQ4NSwKLQkweGExN2MsIDB4MjQwMCwgMHg5MTIyLCAweGExODAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGQ4NSwKLQkweGEwNzQsIDB4OTQyMCwgMHhhMDc4LCAweDkzMTksIDB4MDgwNCwgMHgyMGIwLCAweGExOGMsIDB4MjQwMCwKLQkweDkxMjIsIDB4YTE5MCwgMHgyMzAwLCAweDkxMWIsIDB4MGEwYywgMHgwZDg1LCAweGEwODQsIDB4OTQyMCwKLQkweGEwODgsIDB4OTMxOSwgMHgwODA0LCAweDIwYjAsIDB4YTE5YywgMHgyNDAwLCAweDkxMjIsIDB4YTFhMCwKLQkweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkODUsIDB4YTA5NCwgMHg5NDIwLCAweGEwOTgsIDB4OTMxOSwKLQkweDA4MDQsIDB4MjBiMCwgMHhhMWFjLCAweDI0MDAsIDB4OTEyMiwgMHhhMWIwLCAweDIzMDAsIDB4OTExYiwKLQkweDBhMGMsIDB4MGQ4NSwgMHhhMGE0LCAweDk0MjAsIDB4YTBhOCwgMHg5MzE5LCAweDA4MDQsIDB4MjBiMCwKLQkweGExYmMsIDB4MjQwMCwgMHg5MTIyLCAweGExYzAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGQ4NSwKLQkweGEwYjQsIDB4OTQyMCwgMHhhMGI4LCAweDkzMTksIDB4MDgwNCwgMHgyMGIwLCAweGExY2MsIDB4MjQwMCwKLQkweDkxMjIsIDB4YTFkMCwgMHgyMzAwLCAweDkxMWIsIDB4MGEwYywgMHgwZDg1LCAweGEwYzQsIDB4OTQyMCwKLQkweGEwYzgsIDB4OTMxOSwgMHgwODA0LCAweDIwYjAsIDB4YTFkYywgMHgyNDAwLCAweDkxMjIsIDB4YTFlMCwKLQkweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkODUsIDB4YTBkNCwgMHg5NDIwLCAweGEwZDgsIDB4OTMxOSwKLQkweDA4MDQsIDB4MjBiMCwgMHg5MDgyLCAweDAwMWIsIDB4MDAwMiwgMHgyMDcwLCAweDIwNmUsIDB4MjA2ZSwKLQkweDIwNmUsIDB4MjA2ZSwgMHgyMDZlLCAweDIwN2QsIDB4MjA2ZSwgMHgyMDZlLCAweDIwNmUsIDB4MjA2ZSwKLQkweDIwNmUsIDB4MjA4YSwgMHgyMDZlLCAweDIwNmUsIDB4MjA2ZSwgMHgyMDZlLCAweDIwNmUsIDB4MjA5NywKLQkweDIwNmUsIDB4MjA2ZSwgMHgyMDZlLCAweDIwNmUsIDB4MjA2ZSwgMHgyMGE0LCAweDA4MGMsIDB4MGQ4NSwKLQkweGExN2MsIDB4MjQwMCwgMHg5MTIyLCAweGExODAsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGQ4NSwKLQkweGEwNmMsIDB4OTQyMCwgMHhhMDcwLCAweDkzMTksIDB4MDQ5OCwgMHhhMTk0LCAweDI0MDAsIDB4OTEyMiwKLQkweGExOTgsIDB4MjMwMCwgMHg5MTFiLCAweDBhMGMsIDB4MGQ4NSwgMHhhMDg0LCAweDk0MjAsIDB4YTA4OCwKLQkweDkzMTksIDB4MDQzMCwgMHhhMWFjLCAweDI0MDAsIDB4OTEyMiwgMHhhMWIwLCAweDIzMDAsIDB4OTExYiwKLQkweDBhMGMsIDB4MGQ4NSwgMHhhMDljLCAweDk0MjAsIDB4YTBhMCwgMHg5MzE5LCAweDAwYzgsIDB4YTFjNCwKLQkweDI0MDAsIDB4OTEyMiwgMHhhMWM4LCAweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkODUsIDB4YTBiNCwKLQkweDk0MjAsIDB4YTBiOCwgMHg5MzE5LCAweDAwNjAsIDB4YTFkYywgMHgyNDAwLCAweDkxMjIsIDB4YTFlMCwKLQkweDIzMDAsIDB4OTExYiwgMHgwYTBjLCAweDBkODUsIDB4YTBjYywgMHg5NDIwLCAweGEwZDAsIDB4OTMxOSwKLQkweGFjMWUsIDB4YWIyMiwgMHhhODgwLCAweGMwZmQsIDB4YTg4MiwgMHgyODAwLCAweGE4NWEsIDB4MmMwMCwKLQkweGE4MTIsIDB4MmEwMCwgMHhhODE2LCAweDAwMGUsIDB4MDAwZSwgMHgwMDBlLCAweDkwMDYsIDB4MDAyOCwKLQkweDAwOGUsIDB4MDBkZSwgMHgwMGNlLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwYzYsIDB4NjEwYywKLQkweDAwMTYsIDB4OTAyNiwgMHgyNDEwLCAweDYwMDQsIDB4OTQyMCwgMHg5MjkxLCAweDAwMDAsIDB4MmMwNCwKLQkweDkyMTAsIDB4OWNlMCwgMHgwMDAyLCAweDkxOGEsIDB4MDAwMiwgMHgxZGE4LCAweDkyODQsIDB4MDAwZiwKLQkweDk0MDUsIDB4MDAxZSwgMHgwMGNlLCAweDAwMDUsIDB4NzgwMywgMHgwMDAzLCAweDc4MGYsIDB4MDAwMCwKLQkweDYwMDQsIDB4NzgxMiwgMHgyYzA0LCAweDc4MTYsIDB4OWNlMCwgMHgwMDAyLCAweDkxOGEsIDB4MDAwMiwKLQkweDFkYjgsIDB4MDAwNSwgMHgyMDAxLCAweDAwMDUsIDB4MjAwNCwgMHhkMGJjLCAweDE5MGMsIDB4MGQ3ZSwKLQkweGQwOTQsIDB4MDExMCwgMHgwODBjLCAweDEyMDgsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MjYwMCwKLQkweDIwNzksIDB4MDIwMCwgMHgyMDcxLCAweDAyNjAsIDB4MjA2OSwgMHgxODAwLCAweDc4MTcsIDB4MDAwMCwKLQkweDc4OWIsIDB4MDgxNCwgMHg3OGEzLCAweDA0MDYsIDB4Nzg5ZiwgMHgwNDEwLCAweDIwMDksIDB4MDEzYiwKLQkweDIwMGIsIDB4MDQwMCwgMHg3ODFiLCAweDAwMDIsIDB4NzgzYiwgMHgwMDFmLCAweDc4MzcsIDB4MDAyMCwKLQkweDc4MDMsIDB4MTYwMCwgMHgwMTJlLCAweDAwMDUsIDB4MjA5MSwgMHgyNjAwLCAweDc4MWMsIDB4ZDBhNCwKLQkweDE5MGMsIDB4MjIxZCwgMHg3OTAwLCAweGQxZGMsIDB4MTExOCwgMHg5MDg0LCAweDAwMDYsIDB4MDAxYSwKLQkweDkwODQsIDB4MDAwZSwgMHgwMDAyLCAweDIxM2IsIDB4MjEzMywgMHg4MjEwLCAweDIxMzMsIDB4MjEzNSwKLQkweDIxMzUsIDB4MjEzNSwgMHgyMTM1LCAweDgxZjYsIDB4MjEzMywgMHgyMTM3LCAweDIxMzMsIDB4MjEzNSwKLQkweDIxMzMsIDB4MjEzNSwgMHgyMTMzLCAweDA4MGMsIDB4MGQ4NSwgMHgwMDMxLCAweDAwMjAsIDB4MDgwYywKLQkweDgxZjYsIDB4MDgwYywgMHg4MjEwLCAweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDgwYywKLQkweGVlZmEsIDB4NzkzMCwgMHg5MTg0LCAweDAwMDMsIDB4MDUxMCwgMHgwODBjLCAweGFjZmMsIDB4MjAwMSwKLQkweDE5ZmIsIDB4MjAwNCwgMHg5MDA1LCAweDAxYTAsIDB4MjAwMSwgMHgwMTMzLCAweDIwMDQsIDB4OTAwNSwKLQkweDA5MGMsIDB4MGQ4NSwgMHgwMGM2LCAweDIwMDEsIDB4MTlmYiwgMHgyMDY0LCAweDA4MGMsIDB4YWQxOCwKLQkweDA4MGMsIDB4Y2FlOSwgMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyMjIwLCAweDAwY2UsIDB4MDQwOCwKLQkweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4MDgwYywgMHhhZDE4LCAweDAwZDAsIDB4OTE4NCwKLQkweDAwMTQsIDB4MDFhMCwgMHg2YTAwLCAweDkyODYsIDB4MDAwMywgMHgwMTYwLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDExMzgsIDB4MDgwYywgMHg3YWI2LCAweDA4MGMsIDB4NjE5ZCwgMHgwODBjLCAweDc2Y2QsIDB4MDAxMCwKLQkweDA4MGMsIDB4NjA1OCwgMHgwODBjLCAweDgyYWUsIDB4MDA0MSwgMHgwMDE4LCAweDkxODQsIDB4OTU0MCwKLQkweDFkYzgsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGU2LCAweDAwMzYsIDB4MDA0NiwKLQkweDAwNTYsIDB4MjA3MSwgMHgxYTZlLCAweDA4MGMsIDB4MWIxZSwgMHgwMDVlLCAweDAwNGUsIDB4MDAzZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MmUwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzEyOCwKLQkweDIwMDEsIDB4MTk2ZiwgMHgyMTAyLCAweDIwMDEsIDB4MTk3NywgMHgyMTAyLCAweDIwMDEsIDB4MDEzYiwKLQkweDIxMDIsIDB4MjA3OSwgMHgwMjAwLCAweDIwMDEsIDB4MDIwMSwgMHg3ODllLCAweDc4YTMsIDB4MDIwMCwKLQkweDkxOTgsIDB4MDAwNywgMHg4MzFjLCAweDgzMWMsIDB4ODMxYywgMHg5Mzk4LCAweDAwMDUsIDB4MjMyMCwKLQkweDkxODIsIDB4MDIwNCwgMHgxMjMwLCAweDIwMTEsIDB4MDAwOCwgMHg4NDIzLCAweDg0MjMsIDB4ODQyMywKLQkweDA0ODgsIDB4OTE4MiwgMHgwMjRjLCAweDEyNDAsIDB4MjAxMSwgMHgwMDA3LCAweDg0MDMsIDB4ODAwMywKLQkweDk0MDAsIDB4OTQwMCwgMHg5NDIwLCAweDA0MzAsIDB4OTE4MiwgMHgwMmJjLCAweDEyMzgsIDB4MjAxMSwKLQkweDAwMDYsIDB4ODQwMywgMHg4MDAzLCAweDk0MDAsIDB4OTQyMCwgMHgwMGUwLCAweDkxODIsIDB4MDM0YywKLQkweDEyMzAsIDB4MjAxMSwgMHgwMDA1LCAweDg0MDMsIDB4ODAwMywgMHg5NDIwLCAweDAwOTgsIDB4OTE4MiwKLQkweDA0MmMsIDB4MTIyOCwgMHgyMDExLCAweDAwMDQsIDB4ODQyMywgMHg4NDIzLCAweDAwNTgsIDB4OTE4MiwKLQkweDA1OWMsIDB4MTIyOCwgMHgyMDExLCAweDAwMDMsIDB4ODQwMywgMHg5NDIwLCAweDAwMTgsIDB4MjAxMSwKLQkweDAwMDIsIDB4ODQyMywgMHg5NDgyLCAweDAyMjgsIDB4ODAwMiwgMHg4MDIwLCAweDgzMDEsIDB4OTQwMiwKLQkweDAxMTAsIDB4MDIwOCwgMHg4MzIxLCAweDgyMTcsIDB4ODIwMywgMHg5NDA1LCAweDc4OWEsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHg2ODE0LCAweDkwODQsIDB4ZmZjMCwKLQkweDkxMGQsIDB4NjkxNiwgMHgwMGRlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwKLQkweDkwMDUsIDB4NjgxMCwgMHgwMTEwLCAweGMwYTUsIDB4MDAwOCwgMHhjMGE0LCAweDY4MTIsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHg2ODEwLCAweDkwODQsIDB4ZmZmOCwKLQkweDkxMGQsIDB4NjkxMiwgMHgwMGRlLCAweDAwMGUsIDB4MDAwNSwgMHg3OTM4LCAweDA4MGMsIDB4MGQ3ZSwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc5MDIsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwKLQkweGEwMDEsIDB4YTAwMSwgMHg3OTAyLCAweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwKLQkweGEwMDEsIDB4MDBmZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNzEsIDB4MTgwMCwgMHgyMDA5LCAweDAwMDAsIDB4MDgwYywgMHgyYTg1LCAweDA4MGMsIDB4Mjk5YiwKLQkweDIwMDEsIDB4MTk5ZCwgMHgyMDAzLCAweDA3MDAsIDB4MjAwMSwgMHgxOTllLCAweDIwMDMsIDB4MDcwMCwKLQkweDA4MGMsIDB4MmFmNiwgMHg5MDA2LCAweDA4MGMsIDB4MjljYSwgMHg5MDA2LCAweDA4MGMsIDB4MjlhZCwKLQkweDIwYTksIDB4MDAxMiwgMHgxZDA0LCAweDIyNTIsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4MjI1MiwKLQkweDYwMmYsIDB4MDEwMCwgMHg2MDJmLCAweDAwMDAsIDB4NjA1MCwgMHg5MDg1LCAweDA0MDAsIDB4OTA4NCwKLQkweGRmZmYsIDB4NjA1MiwgMHg2MjI0LCAweDA4MGMsIDB4MmFkMywgMHgwODBjLCAweDI2YzUsIDB4MjAwOSwKLQkweDAwZWYsIDB4NjEzMiwgMHg2MTM2LCAweDA4MGMsIDB4MjZkNSwgMHg2MGU3LCAweDAwMDAsIDB4NjFlYSwKLQkweDIwMDEsIDB4MTgwZCwgMHgyMDA0LCAweGQwOGMsIDB4MjAwMSwgMHgwMDAyLCAweDExMTAsIDB4MjAwMSwKLQkweDAwMDgsIDB4NjBlMiwgMHg2MDRiLCAweGY3ZjcsIDB4NjA0MywgMHgwMDAwLCAweDYwMmYsIDB4MDA4MCwKLQkweDYwMmYsIDB4MDAwMCwgMHg2MDA3LCAweDM0OWYsIDB4MDBjNiwgMHgyMDYxLCAweDAxNDAsIDB4NjA4YiwKLQkweDAwMGIsIDB4NjA4ZiwgMHgxMGI4LCAweDYwOTMsIDB4MDAwMCwgMHg2MDk3LCAweDAxOTgsIDB4MDBjZSwKLQkweDYwMDQsIDB4OTA4NSwgMHg4MDAwLCAweDYwMDYsIDB4NjBiYiwgMHgwMDAwLCAweDIwYTksIDB4MDAxOCwKLQkweDYwYmYsIDB4MDAwMCwgMHgxZjA0LCAweDIyOTgsIDB4NjBiYiwgMHgwMDAwLCAweDYwYmYsIDB4MDEwOCwKLQkweDYwYmYsIDB4MDAxMiwgMHg2MGJmLCAweDA0MDUsIDB4NjBiZiwgMHgwMDE0LCAweDYwYmYsIDB4MDMyMCwKLQkweDYwYmYsIDB4MDAxOCwgMHg2MDFiLCAweDAwZjAsIDB4NjAxZiwgMHgwMDFlLCAweDYwMGYsIDB4MDA2YiwKLQkweDYwMmIsIDB4NDAyYywgMHgwMTJlLCAweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDAxNDAsIDB4NzhjMywKLQkweDAwODAsIDB4NzhjMywgMHgwMDgzLCAweDc4YzMsIDB4MDAwMCwgMHgwMGZlLCAweDAwMDUsIDB4MjAwMSwKLQkweDE4MzUsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MTgzNCwgMHgyMDAzLCAweDAwMDEsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHgyODAwLCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDYxMjQsIDB4NjAyOCwKLQkweDkxMGMsIDB4MDA2NiwgMHgyMDMxLCAweDE4MzcsIDB4MjYzNCwgMHg5NmI0LCAweDAwMjgsIDB4MDA2ZSwKLQkweDExMzgsIDB4NjAyMCwgMHhkMWJjLCAweDAxMjAsIDB4ZDBiYywgMHgxMTY4LCAweGQwYjQsIDB4MTE5OCwKLQkweDkxODQsIDB4NWUyYywgMHgxMTE4LCAweDkxODQsIDB4MDAwNywgMHgwMGFhLCAweDkxOTUsIDB4MDAwNCwKLQkweDkyODQsIDB4MDAwNywgMHgwMDgyLCAweDAwMTYsIDB4MjAwMSwgMHgwMzg3LCAweDIwMGMsIDB4ZDFhNCwKLQkweDAwMWUsIDB4MGQ3MCwgMHgwYzk4LCAweDAwMTYsIDB4MjAwMSwgMHgwMzg3LCAweDIwMGMsIDB4ZDFiNCwKLQkweDAwMWUsIDB4MGQzMCwgMHgwYzU4LCAweDIzMDYsIDB4MjMwMywgMHgyMzAzLCAweDIzMDMsIDB4MjMwNSwKLQkweDIzMDMsIDB4MjMwMywgMHgyMzAzLCAweDA4MGMsIDB4MGQ4NSwgMHgwMDI5LCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMGUsIDB4MDEyZSwgMHgwMDA1LCAweDAwYTYsIDB4NjEyNCwgMHg2MDI4LCAweGQwOWMsIDB4MDExOCwKLQkweGQxOWMsIDB4MTkwNCwgMHgyNThiLCAweGQxZjQsIDB4MTkwYywgMHgwZDdlLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDA5MDQsIDB4MjM2MywgMHgwODBjLCAweGQ2NDUsIDB4MTEyMCwgMHg3MDAwLCAweDkwODYsIDB4MDAwMywKLQkweDA1ODAsIDB4NjAyNCwgMHg5MDg0LCAweDE4MDAsIDB4MDU2MCwgMHgwODBjLCAweDc3YzEsIDB4MDExOCwKLQkweDA4MGMsIDB4NzdhZiwgMHgxNTMwLCAweDIwMTEsIDB4MDAyMCwgMHgwODBjLCAweDJhZDMsIDB4NjA0MywKLQkweDAwMDAsIDB4MDgwYywgMHhkNjQ1LCAweDAxNjgsIDB4MDgwYywgMHg3N2MxLCAweDExNTAsIDB4MjAwMSwKLQkweDE5YTgsIDB4MjAwMywgMHgwMDAxLCAweDYwMjcsIDB4MTgwMCwgMHgwODBjLCAweDc2MTIsIDB4MDgwNCwKLQkweDI1OGUsIDB4NzBhNCwgMHg5MDA1LCAweDExNTAsIDB4NzBhNywgMHgwMDAxLCAweDAwZDYsIDB4MjA2OSwKLQkweDAxNDAsIDB4MDgwYywgMHg3N2YyLCAweDAwZGUsIDB4MTkwNCwgMHgyNThlLCAweDA4MGMsIDB4N2FjMCwKLQkweDA0MjgsIDB4MDgwYywgMHg3N2MxLCAweDE1OTAsIDB4NjAyNCwgMHg5MDg0LCAweDE4MDAsIDB4MTEwOCwKLQkweDA0NjgsIDB4MDgwYywgMHg3YWMwLCAweDA4MGMsIDB4N2FiNiwgMHgwODBjLCAweDYxOWQsIDB4MDgwYywKLQkweDc2Y2QsIDB4MDgwNCwgMHgyNThiLCAweGQxYWMsIDB4MTUwOCwgMHg2MDI0LCAweGQwZGMsIDB4MTE3MCwKLQkweGQwZTQsIDB4MTE3OCwgMHhkMGQ0LCAweDExOTAsIDB4ZDBjYywgMHgwMTMwLCAweDcwOTgsIDB4OTA4NiwKLQkweDAwMjksIDB4MTExMCwgMHgwODBjLCAweDc5OTAsIDB4MDgwNCwgMHgyNThiLCAweDA4MGMsIDB4N2FiYiwKLQkweDAwNDgsIDB4MjAwMSwgMHgxOTdkLCAweDIwMDMsIDB4MDAwMiwgMHgwMDIwLCAweDA4MGMsIDB4NzhlNCwKLQkweDA4MDQsIDB4MjU4YiwgMHgwODBjLCAweDdhM2EsIDB4MDgwNCwgMHgyNThiLCAweDYyMjAsIDB4ZDFiYywKLQkweDAxMzgsIDB4ZDJiYywgMHgxOTA0LCAweDI1ZjYsIDB4ZDJiNCwgMHgxOTA0LCAweDI2MDgsIDB4MDAwMCwKLQkweGQxYWMsIDB4MDkwNCwgMHgyNDk4LCAweDAwMzYsIDB4NjMyOCwgMHhjM2JjLCAweDYzMmEsIDB4MDAzZSwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgxMWQwLCAweDIwMTEsIDB4MDAyMCwgMHgwODBjLCAweDJhZDMsIDB4MDAwNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwODBjLCAweDc3YjgsIDB4MTE1OCwgMHgwODBjLCAweDdhYjYsIDB4MDgwYywKLQkweDYxOWQsIDB4MDgwYywgMHg3NmNkLCAweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDAwYWUsIDB4MDAwNSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDBlLCAweDA4MGMsIDB4Nzc3MiwgMHgwMDE2LCAweDAwNDYsIDB4MDBjNiwKLQkweDY0NGMsIDB4OTQ4NiwgMHhmMGYwLCAweDExMzgsIDB4MjA2MSwgMHgwMTAwLCAweDY0NGEsIDB4NjA0MywKLQkweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDc0ZGEsIDB4OTQ4YywgMHhmZjAwLCAweDcwMzgsIDB4ZDA4NCwKLQkweDAxOTAsIDB4MDgwYywgMHhkNjQ1LCAweDExMTgsIDB4OTE4NiwgMHhmODAwLCAweDExNjAsIDB4NzA0OCwKLQkweGQwODQsIDB4MTE0OCwgMHhjMDg1LCAweDcwNGEsIDB4MDAzNiwgMHgyNDE4LCAweDIwMTEsIDB4ODAxNiwKLQkweDA4MGMsIDB4NGNhMSwgMHgwMDNlLCAweDA4MGMsIDB4ZDYzZSwgMHgxOTA0LCAweDI0NmQsIDB4OTE5NiwKLQkweGZmMDAsIDB4MDVhOCwgMHg3MDYwLCAweDkwODQsIDB4MDBmZiwgMHg4MTBmLCAweDgxZmYsIDB4MDExMCwKLQkweDkxMTYsIDB4MDU2OCwgMHg3MTMwLCAweGQxODQsIDB4MTU1MCwgMHgwODBjLCAweDM0ODIsIDB4MDEyOCwKLQkweGMxOGQsIDB4NzEzMiwgMHgwODBjLCAweDZjMDksIDB4MTUxMCwgMHg2MjQwLCAweDkyOTQsIDB4MDAxMCwKLQkweDAxMzAsIDB4NjI0OCwgMHg5Mjk0LCAweGZmMDAsIDB4OTI5NiwgMHhmZjAwLCAweDAxYzAsIDB4NzAzMCwKLQkweGQwOGMsIDB4MDkwNCwgMHgyNDZkLCAweDcwMzgsIDB4ZDA4YywgMHgxMTQwLCAweDIwMDEsIDB4MTgwYywKLQkweDIwMGMsIDB4ZDFhYywgMHgxOTA0LCAweDI0NmQsIDB4YzFhZCwgMHgyMTAyLCAweDAwMzYsIDB4NzNkOCwKLQkweDIwMTEsIDB4ODAxMywgMHgwODBjLCAweDRjYTEsIDB4MDAzZSwgMHgwODA0LCAweDI0NmQsIDB4NzAzOCwKLQkweGQwOGMsIDB4MTE0MCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHhkMWFjLCAweDE5MDQsIDB4MjQ2ZCwKLQkweGMxYWQsIDB4MjEwMiwgMHgwMDM2LCAweDczZDgsIDB4MjAxMSwgMHg4MDEzLCAweDA4MGMsIDB4NGNhMSwKLQkweDAwM2UsIDB4NzEzMCwgMHhjMTg1LCAweDcxMzIsIDB4MjAxMSwgMHgxODQ4LCAweDIyMGMsIDB4ZDFhNCwKLQkweDAxZjAsIDB4MDAxNiwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwgMHgwMTAwLCAweDA4MGMsIDB4OGM0NCwKLQkweDIwMTksIDB4MDAwZSwgMHgwMGM2LCAweDIwNjEsIDB4MDAwMCwgMHgwODBjLCAweGU5ZjksIDB4MDBjZSwKLQkweDk0ODQsIDB4MDBmZiwgMHg5MDgwLCAweDM0OGUsIDB4MjAwZCwgMHg5MThjLCAweGZmMDAsIDB4ODEwZiwKLQkweDIxMjAsIDB4OTAwNiwgMHgyMDA5LCAweDAwMGUsIDB4MDgwYywgMHhlYThkLCAweDAwMWUsIDB4MDAxNiwKLQkweDIwMDksIDB4MDAwMiwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHgzMmRhLCAweDAwMWUsIDB4MDBhOCwKLQkweDAxNTYsIDB4MDBiNiwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwODBjLCAweDY3YjQsIDB4MTE0MCwKLQkweDcwMzAsIDB4ZDA4NCwgMHgxMTE4LCAweGI4MDAsIDB4ZDBiYywgMHgxMTEwLCAweDA4MGMsIDB4NjFiNywKLQkweDgxMDgsIDB4MWYwNCwgMHgyNDVkLCAweDAwYmUsIDB4MDE1ZSwgMHgwMGNlLCAweDAwNGUsIDB4MDgwYywKLQkweGFjZmMsIDB4MDgwYywgMHhhZmQyLCAweDA4MGMsIDB4YjA5YiwgMHgwODBjLCAweGFkMTgsIDB4NjBlMywKLQkweDAwMDAsIDB4MDAxZSwgMHgyMDAxLCAweDE4MDAsIDB4MjAxNCwgMHg5Mjk2LCAweDAwMDQsIDB4MTE3MCwKLQkweGQxOWMsIDB4MTFiMCwgMHgyMDExLCAweDE4MGMsIDB4MjIxNCwgMHhkMjljLCAweDExMjAsIDB4NjIwNCwKLQkweDkyOTUsIDB4MDAwMiwgMHg2MjA2LCAweDYyMjgsIDB4YzI5ZCwgMHg2MjJhLCAweDIwMDMsIDB4MDAwMSwKLQkweDIwMDEsIDB4MTgyNiwgMHgyMDAzLCAweDAwMDAsIDB4MjAxMSwgMHgwMDIwLCAweDA4MGMsIDB4MmFkMywKLQkweGQxOTQsIDB4MDkwNCwgMHgyNThiLCAweDAwMTYsIDB4MDgwYywgMHhhY2ZjLCAweDYyMjAsIDB4ZDJiNCwKLQkweDA5MDQsIDB4MjUyNiwgMHgwODBjLCAweDhhNGIsIDB4MDgwYywgMHhhMmEwLCAweDIwMTEsIDB4MDAwNCwKLQkweDA4MGMsIDB4MmFkMywgMHgwMGY2LCAweDIwMTksIDB4MTlmNCwgMHgyMzA0LCAweDkwN2QsIDB4MDkwNCwKLQkweDI0ZjMsIDB4NzgwNCwgMHg5MDg2LCAweDAwMzIsIDB4MTVmMCwgMHgwMGQ2LCAweDAwYzYsIDB4MDBlNiwKLQkweDAwOTYsIDB4MjA2OSwgMHgwMTQwLCAweDc4MmMsIDB4Njg1ZSwgMHg3ODA4LCAweDY4NWEsIDB4NjA0MywKLQkweDAwMDIsIDB4MjAwMSwgMHgwMDAzLCAweDgwMDEsIDB4MWRmMCwgMHg2MDQzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAwM2MsIDB4ODAwMSwgMHgxZGYwLCAweDA4MGMsIDB4MmFhOSwgMHgyMDAxLCAweDAwMWUsIDB4ODAwMSwKLQkweDAyNDAsIDB4MjBhOSwgMHgwMDA5LCAweDA4MGMsIDB4MmE2MCwgMHg2OTA0LCAweGQxZGMsIDB4MTE0MCwKLQkweDBjYjAsIDB4MjAwMSwgMHgwMTAwLCAweDA4MGMsIDB4MmE5OSwgMHg5MDA2LCAweDA4MGMsIDB4MmE5OSwKLQkweDA4MGMsIDB4OTllZCwgMHgwODBjLCAweGFkMTgsIDB4NzgxNCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywKLQkweDJmNjAsIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDBlZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBmZSwKLQkweDAwMWUsIDB4MDBhZSwgMHgwMDA1LCAweDAwZmUsIDB4MDBkNiwgMHgyMDY5LCAweDAxNDAsIDB4NjgwNCwKLQkweDkwODQsIDB4NDAwMCwgMHgwMTEwLCAweDA4MGMsIDB4MmFhOSwgMHgwMGRlLCAweDAwYzYsIDB4MjA2MSwKLQkweDE5ZTgsIDB4NjAzNCwgMHgwODBjLCAweGQ2NDUsIDB4MDEyMCwgMHg5MDlhLCAweDAwMDMsIDB4MTI1OCwKLQkweDAwMTgsIDB4OTA5YSwgMHgwMGM4LCAweDEyMzgsIDB4ODAwMCwgMHg2MDM2LCAweDAwY2UsIDB4MDgwYywKLQkweGEyNzgsIDB4MDgwNCwgMHgyNTg4LCAweDIwNjEsIDB4MDEwMCwgMHg2MmMwLCAweDA4MGMsIDB4YWMyZCwKLQkweDIwMTksIDB4MTlmNCwgMHgyMzA0LCAweDkwNjUsIDB4MDEzMCwgMHg2MDAzLCAweDAwMDEsIDB4MjAwOSwKLQkweDAwMjcsIDB4MDgwYywgMHhiMjBhLCAweDAwY2UsIDB4MDgwNCwgMHgyNTg4LCAweGQyYmMsIDB4MDkwNCwKLQkweDI1NmIsIDB4MDgwYywgMHg4YTU4LCAweDIwMTEsIDB4MDAwNCwgMHgwODBjLCAweDJhZDMsIDB4MDBkNiwKLQkweDIwNjksIDB4MDE0MCwgMHg2ODA0LCAweDkwODQsIDB4NDAwMCwgMHgwMTEwLCAweDA4MGMsIDB4MmFhOSwKLQkweDAwZGUsIDB4MDBjNiwgMHgyMDYxLCAweDE5ZTgsIDB4NjA1MCwgMHgwODBjLCAweGQ2NDUsIDB4MDEyMCwKLQkweDkwOWEsIDB4MDAwMywgMHgxNjY4LCAweDAwMTgsIDB4OTA5YSwgMHgwMGM4LCAweDE2NDgsIDB4ODAwMCwKLQkweDYwNTIsIDB4NjA0YywgMHgwMGNlLCAweDkwMDUsIDB4MDVkOCwgMHgyMDA5LCAweDA3ZDAsIDB4MDgwYywKLQkweDhhNTAsIDB4OTA4MCwgMHgwMDA4LCAweDIwMDQsIDB4OTA4NiwgMHgwMDA2LCAweDExMzgsIDB4MjAwOSwKLQkweDE5ODQsIDB4MjAxMSwgMHgwMDEyLCAweDA4MGMsIDB4MmFlMiwgMHgwNDUwLCAweDkwODAsIDB4MDAwOCwKLQkweDIwMDQsIDB4OTA4NiwgMHgwMDA5LCAweDBkOTgsIDB4MjAwOSwgMHgxOTg0LCAweDIwMTEsIDB4MDAxNiwKLQkweDA4MGMsIDB4MmFlMiwgMHgwMGU4LCAweDIwMTEsIDB4MDAwNCwgMHgwODBjLCAweDJhZDMsIDB4MDBjMCwKLQkweDAwMzYsIDB4MjAxOSwgMHgwMDAxLCAweDA4MGMsIDB4YTU5NiwgMHgwMDNlLCAweDIwMTksIDB4MTlmYiwKLQkweDIzMDQsIDB4OTA2NSwgMHgwMTYwLCAweDIwMDksIDB4MDA0ZiwgMHg2MDIwLCAweDkwODYsIDB4MDAwOSwKLQkweDExMTAsIDB4MjAwOSwgMHgwMDRmLCAweDYwMDMsIDB4MDAwMywgMHgwODBjLCAweGIyMGEsIDB4MDBjZSwKLQkweDA4MGMsIDB4YWQxOCwgMHgwMDFlLCAweGQxOWMsIDB4MDkwNCwgMHgyNWVmLCAweDcwMzgsIDB4ZDBhYywKLQkweDE1NTgsIDB4MDAxNiwgMHgwMTU2LCAweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDJhZDMsIDB4MDgwYywKLQkweDJhZjYsIDB4MDgwYywgMHgyYjI5LCAweDYwNTAsIDB4YzBlNSwgMHg2MDUyLCAweDIwYTksIDB4MDM2NywKLQkweDBmMDQsIDB4MjViYSwgMHgxZDA0LCAweDI1YTIsIDB4MDgwYywgMHg4YTdmLCAweDYwMjAsIDB4ZDA5YywKLQkweDFkYjgsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MDgwYywgMHgyYTBjLCAweDAwZmUsIDB4MWQ4MCwKLQkweDYwNTAsIDB4YzBlNCwgMHg2MDUyLCAweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDJhZDMsIDB4MDE1ZSwKLQkweDAwMWUsIDB4MDRhOCwgMHgwMTVlLCAweDAwMWUsIDB4MDAxNiwgMHg2MDI4LCAweGMwOWMsIDB4NjAyYSwKLQkweDA4MGMsIDB4YWNmYywgMHgwODBjLCAweGFmZDIsIDB4MDgwYywgMHhiMDliLCAweDA4MGMsIDB4YWQxOCwKLQkweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweGVlZDksIDB4MDgwYywgMHhlZWY0LCAweDA4MGMsIDB4NTg0NCwKLQkweGQwZmMsIDB4MTEzOCwgMHgwODBjLCAweGQ2M2UsIDB4MTEyMCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywKLQkweDc3ZTIsIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjAwOSwgMHgwMDAyLCAweDA4MGMsIDB4MmE4NSwKLQkweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDcwMDMsIDB4MDAwNCwgMHgwODBjLCAweDBlZDMsIDB4MDBlZSwKLQkweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDJhZDMsIDB4MDgwYywgMHgwYmNmLCAweDAwMWUsIDB4OTE4YywKLQkweGZmZDAsIDB4MjExMCwgMHgwODBjLCAweDJhZDMsIDB4MDBhZSwgMHgwMDA1LCAweDAwMTYsIDB4MjAwMSwKLQkweDAzODcsIDB4MjAwYywgMHhkMWE0LCAweDAwMWUsIDB4MDkwNCwgMHgyMzkwLCAweDAwMTYsIDB4MjAwOSwKLQkweDI2MDIsIDB4MDBjMCwgMHgyMDAxLCAweDAzODcsIDB4MjAwMywgMHgxMDAwLCAweDAwMWUsIDB4MGMzOCwKLQkweDAwMTYsIDB4MjAwMSwgMHgwMzg3LCAweDIwMGMsIDB4ZDFiNCwgMHgwMDFlLCAweDA5MDQsIDB4MjM5MCwKLQkweDAwMTYsIDB4MjAwOSwgMHgyNjE0LCAweDAwMzAsIDB4MjAwMSwgMHgwMzg3LCAweDIwMDMsIDB4NDAwMCwKLQkweDAwMWUsIDB4MDhhOCwgMHg2MDI4LCAweGMwYmMsIDB4NjAyYSwgMHgyMDAxLCAweDAxNTYsIDB4MjAwMywKLQkweGJjOTEsIDB4ODAwMCwgMHgyMDAzLCAweGZmZmYsIDB4NjA0MywgMHgwMDAxLCAweDA4MGMsIDB4MmE3ZiwKLQkweDIwMTEsIDB4MDA4MCwgMHgwODBjLCAweDJhZDMsIDB4NjAxNywgMHgwMDAwLCAweDYwNDMsIDB4MDAwMCwKLQkweDA4MTcsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMGU2LCAweDAwZjYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzFkMCwgMHg3MGQyLCAweDkxMTYsIDB4MDkwNCwKLQkweDI2ODQsIDB4ODFmZiwgMHgwMWEwLCAweDIwMDksIDB4MDAwMCwgMHgwODBjLCAweDJhODUsIDB4MjAxMSwKLQkweDgwMTEsIDB4MjAxOSwgMHgwMTBlLCAweDIzMWMsIDB4OTM5ZSwgMHgwMDA3LCAweDExMTgsIDB4MjAxOSwKLQkweDAwMDEsIDB4MDAxMCwgMHgyMDE5LCAweDAwMDAsIDB4MDgwYywgMHg0Y2ExLCAweDA0NjgsIDB4MjAwMSwKLQkweDE5YTksIDB4MjAwYywgMHg4MWZmLCAweDExNDAsIDB4MjAwMSwgMHgwMTA5LCAweDIwMDQsIDB4ZDBiNCwKLQkweDAxMTgsIDB4MjAxOSwgMHgwMDAzLCAweDAwMDgsIDB4MjExOCwgMHgyMDExLCAweDgwMTIsIDB4MDgwYywKLQkweDRjYTEsIDB4MDgwYywgMHgwZWQzLCAweDA4MGMsIDB4NTg0NCwgMHhkMGZjLCAweDExYTgsIDB4MDgwYywKLQkweGQ2M2UsIDB4MTE5MCwgMHgwMGM2LCAweDA4MGMsIDB4MjcyMCwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywKLQkweGE0ZjEsIDB4MDgwYywgMHhhZDE4LCAweDIwNjEsIDB4MDEwMCwgMHgyMDE5LCAweDAwMjgsIDB4MjAwOSwKLQkweDAwMDIsIDB4MDgwYywgMHgzMmRhLCAweDAwY2UsIDB4MDEyZSwgMHgwMGZlLCAweDAwZWUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MjAyOCwgMHg5MThjLCAweDAwZmYsIDB4MjEzMCwKLQkweDkwOTQsIDB4ZmYwMCwgMHgxMWYwLCAweDIwMTEsIDB4MTgzNywgMHgyMjE0LCAweGQyYWMsIDB4MTFjOCwKLQkweDgxZmYsIDB4MDFlOCwgMHgyMDExLCAweDE4MWYsIDB4MjIwNCwgMHg5MTA2LCAweDExOTAsIDB4MjAxMSwKLQkweDE4MjAsIDB4MjIxNCwgMHg5Mjk0LCAweGZmMDAsIDB4OTU4NCwgMHhmZjAwLCAweDkyMDYsIDB4MTE0OCwKLQkweDIwMTEsIDB4MTgyMCwgMHgyMjE0LCAweDkyOTQsIDB4MDBmZiwgMHg5NTg0LCAweDAwZmYsIDB4OTIwNiwKLQkweDExMjAsIDB4MjUwMCwgMHgwODBjLCAweDg1MjEsIDB4MDA0OCwgMHg5NTg0LCAweDAwZmYsIDB4OTA4MCwKLQkweDM0OGUsIDB4MjAwZCwgMHg5MThjLCAweGZmMDAsIDB4ODEwZiwgMHg5MDA2LCAweDAwMDUsIDB4OTA4MCwKLQkweDM0OGUsIDB4MjAwZCwgMHg5MThjLCAweDAwZmYsIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksIDB4MDE0MCwKLQkweDIwMDEsIDB4MTgxOCwgMHgyMDAzLCAweDAwZWYsIDB4MjBhOSwgMHgwMDEwLCAweDkwMDYsIDB4Njg1MiwKLQkweDY4NTYsIDB4MWYwNCwgMHgyNmQwLCAweDAwZGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwZDYsIDB4MDAyNiwKLQkweDIwNjksIDB4MDE0MCwgMHgyMDAxLCAweDE4MTgsIDB4MjEwMiwgMHg4MTE0LCAweDgyMTQsIDB4ODIxNCwKLQkweDgyMTQsIDB4MjBhOSwgMHgwMDEwLCAweDY4NTMsIDB4MDAwMCwgMHg5MDA2LCAweDgyZmYsIDB4MTEyOCwKLQkweDkxODQsIDB4MDAwZiwgMHg5MDgwLCAweGVmMDgsIDB4MjAwNSwgMHg2ODU2LCAweDgyMTEsIDB4MWYwNCwKLQkweDI2ZTUsIDB4MDAyZSwgMHgwMGRlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGM2LCAweDIwNjEsIDB4MTgwMCwKLQkweDYwMzAsIDB4MDExMCwgMHhjMDlkLCAweDAwMDgsIDB4YzA5YywgMHg2MDMyLCAweDAwY2UsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDBkNiwgMHgwMDI2LCAweDAwMTYsIDB4MDAwNiwgMHgyMDY5LCAweDAxNDAsIDB4Njk4MCwKLQkweDkxMTYsIDB4MDE4MCwgMHg5MTEyLCAweDEyMzAsIDB4ODIxMiwgMHg4MjEwLCAweDIyYTgsIDB4MjAwMSwKLQkweDA0MDIsIDB4MDAxOCwgMHgyMmE4LCAweDIwMDEsIDB4MDQwNCwgMHg2ODBlLCAweDFmMDQsIDB4MjcxNSwKLQkweDY4MGYsIDB4MDAwMCwgMHgwMDBlLCAweDAwMWUsIDB4MDAyZSwgMHgwMGRlLCAweDAxNWUsIDB4MDAwNSwKLQkweDA4MGMsIDB4NTg0MCwgMHhkMGM0LCAweDAxNTAsIDB4ZDBhNCwgMHgwMTQwLCAweDkwMDYsIDB4MDA0NiwKLQkweDIwMjAsIDB4MjAwOSwgMHgwMDJlLCAweDA4MGMsIDB4ZWE4ZCwgMHgwMDRlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwMTYsIDB4MDAyNiwgMHgyMDc5LCAweDAxNDAsIDB4NzhjNCwgMHhkMGRjLCAweDA5MDQsIDB4Mjc4YywKLQkweDA4MGMsIDB4MjlmYywgMHgwNjYwLCAweDkwODQsIDB4MDcwMCwgMHg5MDhlLCAweDA2MDAsIDB4MTEyMCwKLQkweDIwMTEsIDB4NDAwMCwgMHg5MDBlLCAweDA0NTgsIDB4OTA4ZSwgMHgwNTAwLCAweDExMjAsIDB4MjAxMSwKLQkweDgwMDAsIDB4OTAwZSwgMHgwNDIwLCAweDkwOGUsIDB4MDQwMCwgMHgxMTIwLCAweDkwMTYsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDBlOCwgMHg5MDhlLCAweDAzMDAsIDB4MTEyMCwgMHg5MDE2LCAweDIwMDksIDB4MDAwMiwKLQkweDAwYjAsIDB4OTA4ZSwgMHgwMjAwLCAweDExMjAsIDB4OTAxNiwgMHgyMDA5LCAweDAwMDQsIDB4MDA3OCwKLQkweDkwOGUsIDB4MDEwMCwgMHgxNTQ4LCAweDkwMTYsIDB4MjAwOSwgMHgwMDA4LCAweDAwNDAsIDB4OTA4NCwKLQkweDA3MDAsIDB4OTA4ZSwgMHgwMzAwLCAweDE1MDAsIDB4MjAxMSwgMHgwMDMwLCAweDAwNTgsIDB4MjMwMCwKLQkweDkwODAsIDB4MDAyMCwgMHgyMDE4LCAweDA4MGMsIDB4OTU1YiwgMHg5MjhjLCAweGZmMDAsIDB4MDExMCwKLQkweDIwMTEsIDB4MDBmZiwgMHgyMjAwLCAweDgwMDcsIDB4OTA4NSwgMHgwMDRjLCAweDc4YzIsIDB4MjAwOSwKLQkweDAxMzgsIDB4MjIwYSwgMHgwODBjLCAweDc3OWUsIDB4MTExOCwgMHgyMDA5LCAweDE5NmQsIDB4MjIwYSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMGZlLCAweDAwMDUsIDB4NzhjMywgMHgwMDAwLCAweDBjYzgsIDB4MDEyNiwKLQkweDIwOTEsIDB4MjgwMCwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHgyMDAxLCAweDAxNzAsIDB4MjAwYywKLQkweDgwMDAsIDB4MjAxNCwgMHg5MTg0LCAweDAwMDMsIDB4MDExMCwgMHgwODBjLCAweDBkN2UsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDAwZSwgMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywKLQkweDAxMTgsIDB4MjAwOSwgMHgwMDAyLCAweDAwMDUsIDB4MjAwMSwgMHgwMTcxLCAweDIwMDQsIDB4ZDBkYywKLQkweDAxNjgsIDB4MjAwMSwgMHgwMTcwLCAweDIwMGMsIDB4OTE4YywgMHgwMGZmLCAweDkxOGUsIDB4MDA0YywKLQkweDExMjgsIDB4MjAwYywgMHg5MThjLCAweGZmMDAsIDB4ODEwZiwgMHgwMDA1LCAweDkwMGUsIDB4MjAwMSwKLQkweDAyMjcsIDB4MjAwNCwgMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHg4MDA0LCAweDkxMDgsIDB4MjAwMSwKLQkweDAyMjYsIDB4MjAwNCwgMHg4MDA3LCAweDkwODQsIDB4MDBmZiwgMHg4MDA0LCAweDkxMDgsIDB4MDAwNSwKLQkweDAwMTgsIDB4MDAwYywgMHgwMDE4LCAweDAwMjAsIDB4MTAwMCwgMHgwODAwLCAweDEwMDAsIDB4MTgwMCwKLQkweDAxNTYsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDBlNiwgMHgyMDAxLCAweDE5OTAsIDB4MjAwNCwKLQkweDkwOGEsIDB4MDAwNywgMHgxYTBjLCAweDBkODUsIDB4MDAzMywgMHgwMGVlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMGUsIDB4MDE1ZSwgMHgwMDA1LCAweDI3ZjIsIDB4MjgxMCwgMHgyODM0LCAweDI4MzYsIDB4Mjg1ZiwKLQkweDI4NjEsIDB4Mjg2MywgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyNjMxLCAweDA4MGMsIDB4MmE0YSwKLQkweDIwMDEsIDB4MTk5MiwgMHgyMDAzLCAweDAwMDAsIDB4NzgyOCwgMHg5MDg0LCAweGUxZDcsIDB4NzgyYSwKLQkweDkwMDYsIDB4MjBhOSwgMHgwMDA5LCAweDA4MGMsIDB4MmExOCwgMHgyMDAxLCAweDE5OTAsIDB4MjAwMywKLQkweDAwMDYsIDB4MjAwOSwgMHgwMDFlLCAweDIwMTEsIDB4Mjg2NCwgMHgwODBjLCAweDhhNWQsIDB4MDAwNSwKLQkweDIwMDksIDB4MTk5NSwgMHgyMDBiLCAweDAwMDAsIDB4MjAwMSwgMHgxOTlhLCAweDIwMDMsIDB4MDAzNiwKLQkweDIwMDEsIDB4MTk5OSwgMHgyMDAzLCAweDAwMmEsIDB4MjAwMSwgMHgxOTkyLCAweDIwMDMsIDB4MDAwMSwKLQkweDkwMDYsIDB4MDgwYywgMHgyOWFkLCAweDIwMDEsIDB4ZmZmZiwgMHgyMGE5LCAweDAwMDksIDB4MDgwYywKLQkweDJhMTgsIDB4MjAwMSwgMHgxOTkwLCAweDIwMDMsIDB4MDAwNiwgMHgyMDA5LCAweDAwMWUsIDB4MjAxMSwKLQkweDI4NjQsIDB4MDgwYywgMHg4YTVkLCAweDAwMDUsIDB4MDgwYywgMHgwZDg1LCAweDIwMDEsIDB4MTk5YSwKLQkweDIwMDMsIDB4MDAzNiwgMHgyMDAxLCAweDE5OTIsIDB4MjAwMywgMHgwMDAzLCAweDdhMzgsIDB4OTI5NCwKLQkweDAwMDUsIDB4OTI5NiwgMHgwMDA0LCAweDAxMTAsIDB4OTAwNiwgMHgwMDEwLCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MGMsIDB4MjlhZCwgMHgyMDAxLCAweDE5OTYsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4ZmZmZiwKLQkweDIwYTksIDB4MDAwOSwgMHgwODBjLCAweDJhMTgsIDB4MjAwMSwgMHgxOTkwLCAweDIwMDMsIDB4MDAwNiwKLQkweDIwMDksIDB4MDAxZSwgMHgyMDExLCAweDI4NjQsIDB4MDgwYywgMHg4YTVkLCAweDAwMDUsIDB4MDgwYywKLQkweDBkODUsIDB4MDgwYywgMHgwZDg1LCAweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MDE1NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDc5LCAweDAxMDAsIDB4MjAwMSwKLQkweDE5OTIsIDB4MjAwNCwgMHg5MDhhLCAweDAwMDcsIDB4MWEwYywgMHgwZDg1LCAweDAwNDMsIDB4MDEyZSwKLQkweDAxNWUsIDB4MDBmZSwgMHgwMGVlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4Mjg4NiwKLQkweDI4YTIsIDB4MjhkZSwgMHgyOTBhLCAweDI5MmEsIDB4MjkzNiwgMHgyOTM4LCAweDA4MGMsIDB4MmEwYywKLQkweDExOTAsIDB4MjAwOSwgMHgxOTk4LCAweDIxMDQsIDB4N2EzOCwgMHg5Mjk0LCAweDAwMDUsIDB4OTI5NiwKLQkweDAwMDQsIDB4MDExMCwgMHhjMDhkLCAweDAwMDgsIDB4YzA4NSwgMHgyMDBhLCAweDIwMDEsIDB4MTk5MCwKLQkweDIwMDMsIDB4MDAwMSwgMHgwMDMwLCAweDA4MGMsIDB4Mjk1YywgMHgyMDAxLCAweGZmZmYsIDB4MDgwYywKLQkweDI4MDEsIDB4MDAwNSwgMHgwODBjLCAweDI5M2EsIDB4MDVjMCwgMHgyMDA5LCAweDE5OTksIDB4MjEwNCwKLQkweDgwMDEsIDB4MjAwYSwgMHgwODBjLCAweDJhMGMsIDB4MTE1OCwgMHg3YTM4LCAweDkyOTQsIDB4MDAwNSwKLQkweDkyOTYsIDB4MDAwNSwgMHgwNTE4LCAweDIwMDksIDB4MTk5OCwgMHgyMTA0LCAweGMwODUsIDB4MjAwYSwKLQkweDIwMDksIDB4MTk5NSwgMHgyMTA0LCAweDgwMDAsIDB4MjAwYSwgMHg5MDg2LCAweDAwMDUsIDB4MDExOCwKLQkweDA4MGMsIDB4Mjk0MiwgMHgwMGMwLCAweDIwMGIsIDB4MDAwMCwgMHg3YTM4LCAweDkyOTQsIDB4MDAwNiwKLQkweDkyOTYsIDB4MDAwNCwgMHgwMTEwLCAweDkwMDYsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDI5Y2EsIDB4MjAwMSwgMHgxOTkyLCAweDIwMDMsIDB4MDAwMiwgMHgwMDI4LCAweDIwMDEsIDB4MTk5MCwKLQkweDIwMDMsIDB4MDAwMywgMHgwMDEwLCAweDA4MGMsIDB4MjgyMywgMHgwMDA1LCAweDA4MGMsIDB4MjkzYSwKLQkweDA1NDAsIDB4MjAwOSwgMHgxOTk5LCAweDIxMDQsIDB4ODAwMSwgMHgyMDBhLCAweDA4MGMsIDB4MmEwYywKLQkweDExNDgsIDB4MjAwMSwgMHgxOTkwLCAweDIwMDMsIDB4MDAwMywgMHgyMDAxLCAweDE5OTEsIDB4MjAwMywKLQkweDAwMDAsIDB4MDBiOCwgMHgyMDA5LCAweDE5OTksIDB4MjEwNCwgMHg5MDA1LCAweDExMTgsIDB4MDgwYywKLQkweDI5N2YsIDB4MDAxMCwgMHgwODBjLCAweDI5NGYsIDB4MDgwYywgMHgyOTQyLCAweDIwMDksIDB4MTk5NSwKLQkweDIwMGIsIDB4MDAwMCwgMHgyMDAxLCAweDE5OTIsIDB4MjAwMywgMHgwMDAxLCAweDA4MGMsIDB4MjgyMywKLQkweDAwMDAsIDB4MDAwNSwgMHgwNDc5LCAweDAxZTgsIDB4MDgwYywgMHgyYTBjLCAweDExOTgsIDB4MjAwOSwKLQkweDE5OTYsIDB4MjEwNCwgMHg4MDAwLCAweDIwMGEsIDB4OTA4NiwgMHgwMDA3LCAweDAxMDgsIDB4MDA3OCwKLQkweDIwMDEsIDB4MTk5YiwgMHgyMDAzLCAweDAwMGEsIDB4MjAwOSwgMHgxOTk4LCAweDIxMDQsIDB4YzBmZCwKLQkweDIwMGEsIDB4MDAzOCwgMHgwMGY5LCAweDIwMDEsIDB4MTk5MiwgMHgyMDAzLCAweDAwMDQsIDB4MDgwYywKLQkweDI4NGUsIDB4MDAwNSwgMHgwMDc5LCAweDAxNDgsIDB4MDgwYywgMHgyYTBjLCAweDExMTgsIDB4MDgwYywKLQkweDI4M2EsIDB4MDAxOCwgMHgwMDc5LCAweDA4MGMsIDB4Mjg0ZSwgMHgwMDA1LCAweDA4MGMsIDB4MGQ4NSwKLQkweDA4MGMsIDB4MGQ4NSwgMHgyMDA5LCAweDE5OWEsIDB4MjEwNCwgMHg4MDAxLCAweDIwMGEsIDB4MDkwYywKLQkweDI5OWIsIDB4MDAwNSwgMHg3YTM4LCAweDkyOTQsIDB4MDAwNSwgMHg5Mjk2LCAweDAwMDUsIDB4MDExMCwKLQkweDkwMDYsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyOWNhLCAweDAwMDUsIDB4N2EzOCwKLQkweDkyOTQsIDB4MDAwNiwgMHg5Mjk2LCAweDAwMDYsIDB4MDExMCwgMHg5MDA2LCAweDAwMTAsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHgyOWFkLCAweDAwMDUsIDB4MjAwOSwgMHgxOTk1LCAweDIxMDQsIDB4ODAwMCwKLQkweDIwMGEsIDB4OTA4NiwgMHgwMDA1LCAweDAxMDgsIDB4MDA2OCwgMHgyMDBiLCAweDAwMDAsIDB4N2EzOCwKLQkweDkyOTQsIDB4MDAwNiwgMHg5Mjk2LCAweDAwMDYsIDB4MDExMCwgMHg5MDA2LCAweDAwMTAsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDRkOSwgMHg3YTM4LCAweDkyOTQsIDB4MDAwNSwgMHg5Mjk2LCAweDAwMDUsIDB4MDExMCwKLQkweDkwMDYsIDB4MDAxMCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyOWNhLCAweDAwMDUsIDB4MDA4NiwKLQkweDIwMDEsIDB4MTk5OCwgMHgyMDA0LCAweDkwODQsIDB4N2ZmZiwgMHgwOTBjLCAweDBkODUsIDB4MjAwOSwKLQkweDE5OTcsIDB4MjE0NCwgMHg4ODQ2LCAweDI4MGEsIDB4OTg0NCwgMHgwZGQ4LCAweGQwOGMsIDB4MTEyMCwKLQkweGQwODQsIDB4MTEyMCwgMHgwODBjLCAweDBkODUsIDB4OTAwNiwgMHgwMDEwLCAweDIwMDEsIDB4MDAwMSwKLQkweDAwYTEsIDB4MDA4ZSwgMHgwMDA1LCAweDAwMDYsIDB4MDE1NiwgMHgyMDAxLCAweDE5OTAsIDB4MjBhOSwKLQkweDAwMDksIDB4MjAwMywgMHgwMDAwLCAweDgwMDAsIDB4MWYwNCwgMHgyOWExLCAweDIwMDEsIDB4MTk5NywKLQkweDIwMDMsIDB4ODAwMCwgMHgwMTVlLCAweDAwMGUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwKLQkweDkwODUsIDB4MDAwMCwgMHgwMTU4LCAweDc4MzgsIDB4OTA4NCwgMHhmZmY5LCAweDkwODUsIDB4MDAwNCwKLQkweDc4M2EsIDB4MjAwOSwgMHgxOTlkLCAweDIxMGMsIDB4Nzk1YSwgMHgwMDUwLCAweDc4MzgsIDB4OTA4NCwKLQkweGZmZmIsIDB4OTA4NSwgMHgwMDA2LCAweDc4M2EsIDB4MjAwOSwgMHgxOTllLCAweDIxMGMsIDB4Nzk1YSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDEwMCwgMHg5MDg1LCAweDAwMDAsIDB4MDE1OCwKLQkweDc4MzgsIDB4OTA4NCwgMHhmZmZhLCAweDkwODUsIDB4MDAwNCwgMHg3ODNhLCAweDc4NTAsIDB4OTA4NCwKLQkweGZmZjAsIDB4Nzg1MiwgMHgwMGY4LCAweDc4MzgsIDB4OTA4NCwgMHhmZmZiLCAweDkwODUsIDB4MDAwNSwKLQkweDc4M2EsIDB4Nzg1MCwgMHg5MDg0LCAweGZmZjAsIDB4MDAxNiwgMHgyMDA5LCAweDAxN2YsIDB4MjEwYywKLQkweDkxOGUsIDB4MDAwNSwgMHgwMTQwLCAweDIwMDksIDB4MDAwMywgMHgyMTBjLCAweDkxOGMsIDB4MDYwMCwKLQkweDkxOGUsIDB4MDQwMCwgMHgwMTE4LCAweDkwODUsIDB4MDAwYSwgMHgwMDEwLCAweDkwODUsIDB4MDAwMCwKLQkweDAwMWUsIDB4Nzg1MiwgMHgwMGZlLCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAxMDAsIDB4MjAwNCwKLQkweDkwODIsIDB4MDAwNywgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAxMDAsIDB4MjAwNCwKLQkweDkwODIsIDB4MDAwOSwgMHgwMDBlLCAweDAwMDUsIDB4MDE1NiwgMHgyMGE5LCAweDAwNjQsIDB4NzgyMCwKLQkweDA4MGMsIDB4MmE3ZiwgMHhkMDljLCAweDExMTAsIDB4MWYwNCwgMHgyYTBmLCAweDAxNWUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MDAxNiwgMHgwMDA2LCAweDIwOTEsIDB4ODAwMCwgMHgwMDBlLCAweDIwMDgsIDB4OTE4NiwKLQkweDAwMDAsIDB4MTExOCwgMHg3ODNiLCAweDAwMDcsIDB4MDA5MCwgMHg5MTg2LCAweDAwMDEsIDB4MTExOCwKLQkweDc4M2IsIDB4MDAwNiwgMHgwMDYwLCAweDkxODYsIDB4MDAwMiwgMHgxMTE4LCAweDc4M2IsIDB4MDAwNSwKLQkweDAwMzAsIDB4OTE4NiwgMHgwMDAzLCAweDExMTgsIDB4NzgzYiwgMHgwMDA0LCAweDAwMDAsIDB4MDAwNiwKLQkweDFkMDQsIDB4MmEzOCwgMHgwODBjLCAweDhhN2YsIDB4MWYwNCwgMHgyYTM4LCAweDA4MGMsIDB4MmFmNiwKLQkweDA4MGMsIDB4MmIyOSwgMHg3ODUwLCAweDkwODUsIDB4MTAwMCwgMHg3ODUyLCAweDAwMGUsIDB4MDAxZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweDJiMjksIDB4MDAwNSwgMHgwMDA2LCAweDAxNTYsIDB4MDBmNiwKLQkweDIwNzksIDB4MDEwMCwgMHgyMGE5LCAweDAwMGEsIDB4Nzg1NCwgMHhkMGFjLCAweDExMDAsIDB4Nzg1NCwKLQkweGQwOGMsIDB4MTExMCwgMHgxZjA0LCAweDJhNTcsIDB4MDBmZSwgMHgwMTVlLCAweDAwMGUsIDB4MDAwNSwKLQkweDFkMDQsIDB4MmE2MCwgMHgwODBjLCAweDhhN2YsIDB4MWYwNCwgMHgyYTYwLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4MTk5YywgMHgyMDA0LCAweDkwODYsIDB4MDAwMCwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4MTk5YywgMHgyMDA0LCAweDkwODYsIDB4MDAwMSwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4MTk5YywgMHgyMDA0LCAweDkwODYsIDB4MDAwMiwgMHgwMDBlLCAweDAwMDUsIDB4YTAwMSwKLQkweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MTlhOSwKLQkweDIxMDIsIDB4MDAwZSwgMHgwMDA1LCAweDIwMDksIDB4MDE3MSwgMHgyMTA0LCAweGQwZGMsIDB4MDE0MCwKLQkweDIwMDksIDB4MDE3MCwgMHgyMTA0LCAweDIwMGIsIDB4MDA4MCwgMHhhMDAxLCAweGEwMDEsIDB4MjAwYSwKLQkweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDA4MGMsIDB4NzdiOCwgMHgwMTA4LCAweGMwYmMsIDB4MjAwOSwKLQkweDAxNDAsIDB4MjExNCwgMHg5Mjk0LCAweDAwMDEsIDB4OTIxNSwgMHgyMjBhLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDIwMDksIDB4MDE0MCwgMHgyMTE0LCAweDkyOTQsIDB4MDAwMSwKLQkweDkyODUsIDB4MTAwMCwgMHgyMDBhLCAweDIyMGEsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwMjYsIDB4MjAwOSwgMHgwMTQwLCAweDIxMTQsIDB4OTI5NCwgMHgwMDAxLCAweDkyMTUsIDB4MjIwYSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAxNiwgMHgyMDA5LCAweDAxNDAsIDB4MjEwNCwKLQkweDExMjgsIDB4MDgwYywgMHg3N2I4LCAweDAxMTAsIDB4YzBiYywgMHgwMDA4LCAweGMwYmQsIDB4MjAwYSwKLQkweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMzgwLCAweDc4NDMsIDB4MDEwMSwKLQkweDc4NDQsIDB4ZDA4NCwgMHgxZGU4LCAweDIwMDEsIDB4MDEwOSwgMHgyMjAyLCAweDc4NDMsIDB4MDEwMCwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDM4MCwgMHg3ODQzLCAweDAyMDIsIDB4Nzg0NCwKLQkweGQwOGMsIDB4MWRlOCwgMHgyMDc5LCAweDAxMDAsIDB4NzgxNCwgMHg5MTA0LCAweDkyMDUsIDB4N2ExNiwKLQkweDIwNzksIDB4MDM4MCwgMHg3ODQzLCAweDAyMDAsIDB4MDBmZSwgMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4NjA1MCwgMHg5MDg0LCAweGZiZmYsIDB4OTA4NSwKLQkweDAwNDAsIDB4NjA1MiwgMHgyMGE5LCAweDAwMDIsIDB4MDgwYywgMHgyYTYwLCAweDYwNTAsIDB4OTA4NSwKLQkweDA0MDAsIDB4OTA4NCwgMHhmZjlmLCAweDYwNTIsIDB4MjBhOSwgMHgwMDA1LCAweDA4MGMsIDB4MmE2MCwKLQkweDYwNTQsIDB4ZDBiYywgMHgwOTBjLCAweDBkODUsIDB4MjBhOSwgMHgwMDA1LCAweDA4MGMsIDB4MmE2MCwKLQkweDYwNTQsIDB4ZDBhYywgMHgwOTBjLCAweDBkODUsIDB4MjAwOSwgMHgxOWIwLCAweDkwODQsIDB4N2UwMCwKLQkweDgwMDcsIDB4ODAwNCwgMHg4MDA0LCAweDIwMGEsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwgMHg2MDUwLCAweGMwY2QsIDB4NjA1MiwKLQkweDAwY2UsIDB4MDAwZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwMDYsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDYwMzAsIDB4MDAwNiwgMHg2MDQ4LCAweDAwMDYsIDB4NjBlNCwKLQkweDAwMDYsIDB4NjBlOCwgMHgwMDA2LCAweDYwNTAsIDB4MDAwNiwgMHg2MGVjLCAweDAwMDYsIDB4NjAwYywKLQkweDAwMDYsIDB4NjAwNCwgMHgwMDA2LCAweGMwZmMsIDB4NjAwNiwgMHgyMDA5LCAweDA4MDAsIDB4MjAwMSwKLQkweDAzMzgsIDB4MjAwMywgMHgwMzAxLCAweDgxMDksIDB4MDkwYywgMHgwZDg1LCAweDIwMDEsIDB4MDMzOCwKLQkweDIwMDQsIDB4ZDA4NCwgMHgxZGMwLCAweDYwMjgsIDB4MDAwNiwgMHg2MGUwLCAweDAwMDYsIDB4Njg4OCwKLQkweDAwMDYsIDB4Njg4YywgMHgwMDA2LCAweDY4OTAsIDB4MDAwNiwgMHgwODBjLCAweDc3OWUsIDB4MTExMCwKLQkweDY4ODQsIDB4MDAwNiwgMHg2MDJmLCAweDAxMDAsIDB4NjAyZiwgMHgwMDAwLCAweGEwMDEsIDB4YTAwMSwKLQkweGEwMDEsIDB4YTAwMSwgMHg2MDJmLCAweDAwNDAsIDB4NjAyZiwgMHgwMDAwLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDExMjAsIDB4NjgwMywgMHgwMDgwLCAweDAwMGUsIDB4Njg4NiwgMHg2ODk3LCAweDQxOTgsIDB4MDAwZSwKLQkweDY4OTIsIDB4MDAwZSwgMHg2ODhlLCAweDAwMGUsIDB4Njg4YSwgMHgwMDBlLCAweDYwZTIsIDB4MDAwZSwKLQkweDYwMmEsIDB4MDAwZSwgMHg2MDA2LCAweDAwMGUsIDB4NjAwZSwgMHgwMDBlLCAweDYwZWUsIDB4MDAwZSwKLQkweDYwNTIsIDB4MDAwZSwgMHg2MGVhLCAweDAwMGUsIDB4NjBlNiwgMHgwMDBlLCAweDYwNGEsIDB4MDAwZSwKLQkweDYwMzIsIDB4NjAzNiwgMHgyMDA4LCAweDA4MGMsIDB4MjZkNSwgMHgwMDBlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMDA2LCAweDAxNTYsIDB4NjA1MCwgMHg5MDg1LCAweDAwNDAsIDB4NjA1MiwKLQkweDYwNTAsIDB4OTA4NCwgMHhmYmNmLCAweDYwNTIsIDB4MDgwYywgMHgyYTdmLCAweDkwODUsIDB4MjAwMCwKLQkweDYwNTIsIDB4MjBhOSwgMHgwMDEyLCAweDFkMDQsIDB4MmJiMywgMHgwODBjLCAweDhhN2YsIDB4MWYwNCwKLQkweDJiYjMsIDB4NjA1MCwgMHg5MDg1LCAweDA0MDAsIDB4OTA4NCwgMHhkZmJmLCAweDYwNTIsIDB4MDE1ZSwKLQkweDAwMGUsIDB4MDAwNSwgMHgzMGJlLCAweDMwYmUsIDB4MmNjMiwgMHgyY2MyLCAweDJjY2UsIDB4MmNjZSwKLQkweDJjZGEsIDB4MmNkYSwgMHgyY2U4LCAweDJjZTgsIDB4MmNmNCwgMHgyY2Y0LCAweDJkMDIsIDB4MmQwMiwKLQkweDJkMTAsIDB4MmQxMCwgMHgyZDIyLCAweDJkMjIsIDB4MmQyZSwgMHgyZDJlLCAweDJkM2MsIDB4MmQzYywKLQkweDJkNWEsIDB4MmQ1YSwgMHgyZDdhLCAweDJkN2EsIDB4MmQ0YSwgMHgyZDRhLCAweDJkNmEsIDB4MmQ2YSwKLQkweDJkODgsIDB4MmQ4OCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDlhLCAweDJkOWEsIDB4MmRhNiwgMHgyZGE2LCAweDJkYjQsIDB4MmRiNCwKLQkweDJkYzIsIDB4MmRjMiwgMHgyZGQyLCAweDJkZDIsIDB4MmRlMCwgMHgyZGUwLCAweDJkZjAsIDB4MmRmMCwKLQkweDJlMDAsIDB4MmUwMCwgMHgyZTEyLCAweDJlMTIsIDB4MmUyMCwgMHgyZTIwLCAweDJlMzAsIDB4MmUzMCwKLQkweDJlNTIsIDB4MmU1MiwgMHgyZTc2LCAweDJlNzYsIDB4MmU0MCwgMHgyZTQwLCAweDJlNjQsIDB4MmU2NCwKLQkweDJlODYsIDB4MmU4NiwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZTlhLCAweDJlOWEsIDB4MmVhNiwgMHgyZWE2LCAweDJlYjQsIDB4MmViNCwKLQkweDJlYzIsIDB4MmVjMiwgMHgyZWQyLCAweDJlZDIsIDB4MmVlMCwgMHgyZWUwLCAweDJlZjAsIDB4MmVmMCwKLQkweDJmMDAsIDB4MmYwMCwgMHgyZjEyLCAweDJmMTIsIDB4MmYyMCwgMHgyZjIwLCAweDJmMzAsIDB4MmYzMCwKLQkweDJmNDAsIDB4MmY0MCwgMHgyZjUyLCAweDJmNTIsIDB4MmY2MiwgMHgyZjYyLCAweDJmNzQsIDB4MmY3NCwKLQkweDJmODYsIDB4MmY4NiwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZjlhLCAweDJmOWEsIDB4MmZhOCwgMHgyZmE4LCAweDJmYjgsIDB4MmZiOCwKLQkweDJmYzgsIDB4MmZjOCwgMHgyZmRhLCAweDJmZGEsIDB4MmZlYSwgMHgyZmVhLCAweDJmZmMsIDB4MmZmYywKLQkweDMwMGUsIDB4MzAwZSwgMHgzMDIyLCAweDMwMjIsIDB4MzAzMiwgMHgzMDMyLCAweDMwNDQsIDB4MzA0NCwKLQkweDMwNTYsIDB4MzA1NiwgMHgzMDZhLCAweDMwNmEsIDB4MzA3YiwgMHgzMDdiLCAweDMwOGUsIDB4MzA4ZSwKLQkweDMwYTEsIDB4MzBhMSwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwgMHgyZDIwLCAweDJkMjAsIDB4MmQyMCwKLQkweDJkMjAsIDB4MmQyMCwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyYzgsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgyMmM4LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjExNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweGEwMDEsIDB4MGNmMCwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDEzZDQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyMGVhLCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDEzZDQsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MjJjOCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyNzhmLCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHgyMGVhLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHgyMGVhLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyNzhmLCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODBjLCAweDIxMTQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODBjLCAweDIxMTQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweGFkNjIsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4YWQ2MiwKLQkweDA4MGMsIDB4MjJjOCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyMGVhLCAweDA4MGMsIDB4YWQ2MiwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4YWQ2MiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMTE0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4YWQ2MiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgxM2Q0LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MGMsIDB4MjExNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyMGVhLCAweDA4MGMsIDB4YWQ2MiwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODBjLCAweDIxMTQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MGMsIDB4YWQ2MiwgMHgwODBjLCAweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHhhZDYyLCAweDA4MDQsIDB4MzBiNiwKLQkweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MDE1NiwKLQkweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweDIwZWEsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MGMsIDB4MjExNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyNzhmLCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MGMsIDB4YWQ2MiwgMHgwODBjLCAweDIxMTQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MjExNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjJjOCwKLQkweDA4MGMsIDB4MTNkNCwgMHgwODA0LCAweDMwYjYsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxNTYsIDB4MDgwYywgMHgyNzhmLCAweDA4MGMsIDB4MjBlYSwKLQkweDA4MGMsIDB4YWQ2MiwgMHgwODBjLCAweDEzZDQsIDB4MDgwNCwgMHgzMGI2LCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywgMHgyMmM4LCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MDQsIDB4MzBiNiwgMHgwMTA2LCAweDAwMDYsIDB4MDEyNiwgMHgwMWM2LCAweDAxZDYsIDB4MDEzNiwKLQkweDAxNDYsIDB4MDE1NiwgMHgwODBjLCAweDI3OGYsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MTNkNCwKLQkweDA4MGMsIDB4MjExNCwgMHgwNGQ4LCAweDAxMDYsIDB4MDAwNiwgMHgwMTI2LCAweDAxYzYsIDB4MDFkNiwKLQkweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywKLQkweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwgMHgwNDQwLCAweDAxMDYsIDB4MDAwNiwKLQkweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwgMHgwMTU2LCAweDA4MGMsIDB4Mjc4ZiwKLQkweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweDEzZDQsIDB4MDgwYywgMHhhZDYyLCAweDA4MGMsIDB4MjExNCwKLQkweDAwYTgsIDB4MDEwNiwgMHgwMDA2LCAweDAxMjYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMzYsIDB4MDE0NiwKLQkweDAxNTYsIDB4MDgwYywgMHgyNzhmLCAweDA4MGMsIDB4MjBlYSwgMHgwODBjLCAweGFkNjIsIDB4MDgwYywKLQkweDIyYzgsIDB4MDgwYywgMHgxM2Q0LCAweDA4MGMsIDB4MjExNCwgMHgwMDAwLCAweDAxNWUsIDB4MDE0ZSwKLQkweDAxM2UsIDB4MDFkZSwgMHgwMWNlLCAweDAxMmUsIDB4MDAwZSwgMHgwMTBlLCAweDAwMGQsIDB4MDBiNiwKLQkweDAwYzYsIDB4MDAyNiwgMHgwMDQ2LCAweDkwMjYsIDB4MDgwYywgMHg2YmNmLCAweDE5MDQsIDB4MzFmNiwKLQkweDcyZGMsIDB4MjAwMSwgMHgxOTdjLCAweDIwMDQsIDB4OTAwNSwgMHgxMTEwLCAweGQyOWMsIDB4MDE0OCwKLQkweGQyODQsIDB4MTEzOCwgMHhkMmJjLCAweDE5MDQsIDB4MzFmNiwgMHgwODBjLCAweDMxZmIsIDB4MDgwNCwKLQkweDMxZjYsIDB4ZDJjYywgMHgxOTA0LCAweDMxZjYsIDB4MDgwYywgMHg3NzllLCAweDExMjAsIDB4NzBhZiwKLQkweGZmZmYsIDB4MDgwNCwgMHgzMWY2LCAweGQyOTQsIDB4MDEyMCwgMHg3MGFmLCAweGZmZmYsIDB4MDgwNCwKLQkweDMxZjYsIDB4MDgwYywgMHgzNDdkLCAweDAxNjAsIDB4MDgwYywgMHhkNjQ1LCAweDAxMjgsIDB4MjAwMSwKLQkweDE4MTgsIDB4MjAzYywgMHgwODA0LCAweDMxNmYsIDB4NzBhZiwgMHhmZmZmLCAweDA4MDQsIDB4MzFmNiwKLQkweDIwMDEsIDB4MTgxOCwgMHgyMDNjLCAweDcyOTQsIDB4ZDI4NCwgMHgwOTA0LCAweDMxNmYsIDB4ZDI4YywKLQkweDE5MDQsIDB4MzE2ZiwgMHgwMDM2LCAweDczYWMsIDB4OTM4ZSwgMHhmZmZmLCAweDExMTAsIDB4MjAxOSwKLQkweDAwMDEsIDB4ODMxNCwgMHg5MmUwLCAweDFkODAsIDB4MmMwNCwgMHg5MzhjLCAweDAwMDEsIDB4MDEyMCwKLQkweDkwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDAwMTAsIDB4OTA4NCwgMHgwMGZmLCAweDk3MGUsIDB4MDkwNCwKLQkweDMxNjUsIDB4OTA4ZSwgMHgwMDAwLCAweDA5MDQsIDB4MzE2NSwgMHg5MDhlLCAweDAwZmYsIDB4MTE2MCwKLQkweDcyMzAsIDB4ZDI4NCwgMHgxOTA0LCAweDMxNmEsIDB4NzI5NCwgMHhjMjhkLCAweDcyOTYsIDB4NzBhZiwKLQkweGZmZmYsIDB4MDAzZSwgMHgwODA0LCAweDMxNmYsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywKLQkweDAxNTAsIDB4MDAyNiwgMHgyMDExLCAweDAwMTAsIDB4MDgwYywgMHg2YzM1LCAweDAwMmUsIDB4MDExOCwKLQkweDcwYWYsIDB4ZmZmZiwgMHgwNDg4LCAweDkwMGUsIDB4MDgwYywgMHgyNjhjLCAweDA4MGMsIDB4Njc0OSwKLQkweDE1MzgsIDB4OTAwNiwgMHhiOGJiLCAweDA1MjAsIDB4YjhhYywgMHg5MDA1LCAweDAxNDgsIDB4MDBjNiwKLQkweDIwNjAsIDB4MDgwYywgMHg4ZWVlLCAweDAwY2UsIDB4MDkwYywgMHg5MjhkLCAweGI4YWYsIDB4MDAwMCwKLQkweDA4MGMsIDB4NmMxMSwgMHgxMTY4LCAweDcwMzAsIDB4ZDA4YywgMHgwMTMwLCAweGI4MDAsIDB4ZDBiYywKLQkweDAxMzgsIDB4MDgwYywgMHg2YWFlLCAweDAxMjAsIDB4MDgwYywgMHgzMjE0LCAweDAxNDgsIDB4MDAyOCwKLQkweDA4MGMsIDB4MzM2MCwgMHgwODBjLCAweDMyNDAsIDB4MDExOCwgMHg4MzE4LCAweDA4MDQsIDB4MzEwOSwKLQkweDczYWUsIDB4MDAxMCwgMHg3MGFmLCAweGZmZmYsIDB4MDAzZSwgMHgwODA0LCAweDMxZjYsIDB4OTc4MCwKLQkweDM0OGUsIDB4MjAzZCwgMHg5N2JjLCAweGZmMDAsIDB4ODczZiwgMHgyMDQxLCAweDAwN2UsIDB4NzBhYywKLQkweDkwOTYsIDB4ZmZmZiwgMHgxMTE4LCAweDkwMGUsIDB4MjhhOCwgMHgwMDUwLCAweDk4MTIsIDB4MDIyMCwKLQkweDIwMDgsIDB4OTgwMiwgMHgyMGE4LCAweDAwMjAsIDB4NzBhZiwgMHhmZmZmLCAweDA4MDQsIDB4MzFmNiwKLQkweDI3MDAsIDB4MDE1NiwgMHgwMDE2LCAweDkxMDYsIDB4MDkwNCwgMHgzMWViLCAweDIwMDEsIDB4MTgwZCwKLQkweDIwMDQsIDB4ZDA4YywgMHgwMTU4LCAweDAwMjYsIDB4MjAxMSwgMHgwMDEwLCAweDA4MGMsIDB4NmMzNSwKLQkweDAwMmUsIDB4MDEyMCwgMHgyMDA5LCAweGZmZmYsIDB4MDgwNCwgMHgzMWYzLCAweGM0ODQsIDB4MDgwYywKLQkweDY3YjQsIDB4MDE2OCwgMHgwODBjLCAweGQ2NDUsIDB4MTkwNCwgMHgzMWViLCAweDA4MGMsIDB4MzQ3ZCwKLQkweDE5MDQsIDB4MzFlYiwgMHgwODBjLCAweDY3NDksIDB4MTkwNCwgMHgzMWYzLCAweDAwMDgsIDB4YzQ4NSwKLQkweGI4YmIsIDB4MDUyMCwgMHhiOGFjLCAweDkwMDUsIDB4MDE0OCwgMHgwMGM2LCAweDIwNjAsIDB4MDgwYywKLQkweDhlZWUsIDB4MDBjZSwgMHgwOTBjLCAweDkyOGQsIDB4YjhhZiwgMHgwMDAwLCAweDA4MGMsIDB4NmMxMSwKLQkweDExMzAsIDB4NzAzMCwgMHhkMDhjLCAweDAxZjgsIDB4YjgwMCwgMHhkMGJjLCAweDExZTAsIDB4NzI5NCwKLQkweGQyOGMsIDB4MDE4MCwgMHgwODBjLCAweDZjMTEsIDB4OTA4MiwgMHgwMDA2LCAweDAyZTAsIDB4ZDQ4NCwKLQkweDExMTgsIDB4MDgwYywgMHg2NzZlLCAweDAwMjgsIDB4MDgwYywgMHgzM2YzLCAweDAxYTAsIDB4MDgwYywKLQkweDM0MWUsIDB4MDA4OCwgMHgwODBjLCAweDMzNjAsIDB4MDgwYywgMHhkNjQ1LCAweDExNjAsIDB4MDgwYywKLQkweDMyNDAsIDB4MDE4OCwgMHgwMDQwLCAweDA4MGMsIDB4ZDY0NSwgMHgxMTE4LCAweDA4MGMsIDB4MzNmMywKLQkweDAxMTAsIDB4MDQ1MSwgMHgwMTQwLCAweDAwMWUsIDB4ODEwOCwgMHgwMTVlLCAweDFmMDQsIDB4MzE4OCwKLQkweDcwYWYsIDB4ZmZmZiwgMHgwMDE4LCAweDAwMWUsIDB4MDE1ZSwgMHg3MWFlLCAweDAwNGUsIDB4MDAyZSwKLQkweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweDAwYzYsIDB4MDAxNiwgMHg3MGFmLCAweDAwMDEsIDB4MjAwOSwKLQkweDAwN2UsIDB4MDgwYywgMHg2NzQ5LCAweDExNjgsIDB4YjgxMywgMHgwMGZmLCAweGI4MTcsIDB4ZmZmZSwKLQkweDA4MGMsIDB4MzM2MCwgMHgwNGE5LCAweDAxMjgsIDB4NzBkYywgMHhjMGJkLCAweDcwZGUsIDB4MDgwYywKLQkweGQzODksIDB4MDAxZSwgMHgwMGNlLCAweDAwMDUsIDB4MDAxNiwgMHgwMDc2LCAweDAwZDYsIDB4MDBjNiwKLQkweDIwMDEsIDB4MTg0YywgMHgyMDA0LCAweDkwODQsIDB4MDBmZiwgMHhiODQyLCAweDA4MGMsIDB4YjFkZCwKLQkweDAxZDAsIDB4MmIwMCwgMHg2MDEyLCAweDA4MGMsIDB4ZDNiNiwgMHg2MDIzLCAweDAwMDEsIDB4OTAwNiwKLQkweDA4MGMsIDB4NjZlNiwgMHgyMDAxLCAweDAwMDAsIDB4MDgwYywgMHg2NmZhLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzBhOCwgMHg4MDAwLCAweDcwYWEsIDB4MDEyZSwgMHgyMDA5LCAweDAwMDQsIDB4MDgwYywKLQkweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDBkZSwgMHgwMDdlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDA3NiwgMHgwMGQ2LCAweDAwYzYsIDB4MjAwMSwgMHgxODRjLCAweDIwMDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4Yjg0MiwgMHgwODBjLCAweGIxZGQsIDB4MDU0OCwgMHgyYjAwLCAweDYwMTIsIDB4YjgwMCwKLQkweGMwYzQsIDB4YjgwMiwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgwMTQwLCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDA2LCAweDExMTAsIDB4MDgwYywgMHgzMzE1LCAweDA4MGMsIDB4ZDNiNiwKLQkweDYwMjMsIDB4MDAwMSwgMHg5MDA2LCAweDA4MGMsIDB4NjZlNiwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywKLQkweDY2ZmEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzBhOCwgMHg4MDAwLCAweDcwYWEsIDB4MDEyZSwKLQkweDIwMDksIDB4MDAwMiwgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDBkZSwKLQkweDAwN2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwYjYsIDB4MDBjNiwgMHgwMDI2LCAweDIwMDksIDB4MDA4MCwKLQkweDA4MGMsIDB4Njc0OSwgMHgxMTQwLCAweGI4MTMsIDB4MDBmZiwgMHhiODE3LCAweGZmZmMsIDB4MDAzOSwKLQkweDAxMTAsIDB4NzBlMywgMHhmZmZmLCAweDAwMmUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwNzYsIDB4MDBkNiwgMHgwMGM2LCAweDA4MGMsIDB4YjExNiwgMHgwMWQwLCAweDJiMDAsIDB4NjAxMiwKLQkweDA4MGMsIDB4ZDNiNiwgMHg2MDIzLCAweDAwMDEsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDgwYywgMHg2NmZhLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwZTQsIDB4ODAwMCwKLQkweDcwZTYsIDB4MDEyZSwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywgMHhiMjBhLCAweDkwODUsIDB4MDAwMSwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMDdlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweDAwN2YsIDB4MDgwYywgMHg2NzQ5LCAweDExYjgsIDB4YjgxMywKLQkweDAwZmYsIDB4YjgxNywgMHhmZmZkLCAweGI4ZDcsIDB4MDAwNCwgMHgwODBjLCAweGIxMTYsIDB4MDE3MCwKLQkweDJiMDAsIDB4NjAxMiwgMHg2MzE2LCAweDYwMjMsIDB4MDAwMSwgMHg2MjBhLCAweDA4MGMsIDB4ZDNiNiwKLQkweDIwMDksIDB4MDAyMiwgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMGU2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDM2LCAweDAwMjYsIDB4MDBiNiwKLQkweDIxZjAsIDB4MDgwYywgMHhhY2ZjLCAweDAxMDYsIDB4MDgwYywgMHg5N2JiLCAweDA4MGMsIDB4OTcyNywKLQkweDA4MGMsIDB4YWM0ZCwgMHgwODBjLCAweGMxNzksIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4M2UwOCwKLQkweDIxMzAsIDB4ODFmZiwgMHgwMTIwLCAweDIwYTksIDB4MDA3ZSwgMHg5MDBlLCAweDAwMTgsIDB4MjBhOSwKLQkweDAwN2YsIDB4OTAwZSwgMHgwMDE2LCAweDA4MGMsIDB4NjdiNCwgMHgxMTQwLCAweDk2ODYsIDB4MDAwMiwKLQkweDExMTgsIDB4YjgwMCwgMHhkMGJjLCAweDExMTAsIDB4MDgwYywgMHg2MWI3LCAweDAwMWUsIDB4ODEwOCwKLQkweDFmMDQsIDB4MzJmYSwgMHg5Njg2LCAweDAwMDEsIDB4MTkwYywgMHgzNDUxLCAweDAwYmUsIDB4MDAyZSwKLQkweDAwM2UsIDB4MDA2ZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwYzYsIDB4MDA0NiwKLQkweDAwMzYsIDB4MDAyNiwgMHgwMDE2LCAweDAwYjYsIDB4MDgwYywgMHhhY2ZjLCAweDAxMDYsIDB4NjIxMCwKLQkweDIyNTgsIDB4YmFhMCwgMHgwMDI2LCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk3YjAsIDB4MDA3NiwKLQkweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDk2NmQsIDB4MmMwOCwgMHgwODBjLCAweGU3NWQsIDB4MDA3ZSwKLQkweDAwMWUsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4YmExMCwgMHhiYjE0LCAweGJjODQsIDB4MDgwYywKLQkweDYxYjcsIDB4YmExMiwgMHhiYjE2LCAweGJjODYsIDB4MDBiZSwgMHgwMDFlLCAweDAwMmUsIDB4MDAzZSwKLQkweDAwNGUsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgwMDA2LCAweDAwYjYsIDB4NjAxMCwKLQkweDIwNTgsIDB4YjhhMCwgMHgwMGJlLCAweDkwODYsIDB4MDA4MCwgMHgwMTUwLCAweDIwNzEsIDB4MTgwMCwKLQkweDcwYTgsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDEsIDB4NzBhYSwgMHgwMDBlLCAweDAwZWUsIDB4MDAwNSwKLQkweDIwNzEsIDB4MTgwMCwgMHg3MGU0LCAweDkwMDUsIDB4MGRjMCwgMHg4MDAxLCAweDcwZTYsIDB4MGNhOCwKLQkweGI4MDAsIDB4YzA4YywgMHhiODAyLCAweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDAwYzYsIDB4MDBiNiwKLQkweDAwNDYsIDB4MDAzNiwgMHgwMDI2LCAweDAwMTYsIDB4MDE1NiwgMHgyMTc4LCAweDA4MGMsIDB4YWNmYywKLQkweDAxMDYsIDB4ODFmZiwgMHgxMTE4LCAweDIwYTksIDB4MDAwMSwgMHgwMDc4LCAweDA4MGMsIDB4NTg0MCwKLQkweGQwYzQsIDB4MDE0MCwgMHhkMGE0LCAweDAxMzAsIDB4OTAwNiwgMHgyMDIwLCAweDIwMDksIDB4MDAyZCwKLQkweDA4MGMsIDB4ZWE4ZCwgMHgyMGE5LCAweDA4MDAsIDB4OTAxNiwgMHgwMDI2LCAweDkyOGUsIDB4MDA3ZSwKLQkweDA5MDQsIDB4MzNjZiwgMHg5MjhlLCAweDAwN2YsIDB4MDkwNCwgMHgzM2NmLCAweDkyOGUsIDB4MDA4MCwKLQkweDA1ZjAsIDB4OTI4OCwgMHgxMDAwLCAweDIxMGMsIDB4ODFmZiwgMHgwNWM4LCAweDhmZmYsIDB4MTE1MCwKLQkweDIwMDEsIDB4MTk4ZSwgMHgwMDA2LCAweDIwMDMsIDB4MDAwMSwgMHgwODBjLCAweDMzZTAsIDB4MDAwZSwKLQkweDIwMDMsIDB4MDAwMCwgMHgwMGI2LCAweDAwYzYsIDB4MjE1OCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDZiZGIsIDB4MDBjZSwgMHgwMGJlLCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk3YjAsIDB4MDA3NiwKLQkweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDk2NmQsIDB4MDBiNiwgMHgwMGM2LCAweDAwMjYsIDB4MjE1OCwKLQkweGJhMDQsIDB4OTI5NCwgMHgwMGZmLCAweDkyODYsIDB4MDAwNiwgMHgxMTE4LCAweGI4MDcsIDB4MDQwNCwKLQkweDAwMjgsIDB4MjAwMSwgMHgwMDA0LCAweDgwMDcsIDB4OTIxNSwgMHhiYTA2LCAweDAwMmUsIDB4MDBjZSwKLQkweDAwYmUsIDB4MDAxNiwgMHgyYzA4LCAweDA4MGMsIDB4ZTc1ZCwgMHgwMDFlLCAweDAwN2UsIDB4MDAyZSwKLQkweDgyMTAsIDB4MWYwNCwgMHgzMzg1LCAweDAxMGUsIDB4MDkwYywgMHhhZDE4LCAweDAxNWUsIDB4MDAxZSwKLQkweDAwMmUsIDB4MDAzZSwgMHgwMDRlLCAweDAwYmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwNDYsIDB4MDAyNiwgMHgwMDE2LCAweDA4MGMsIDB4NTg0MCwgMHhkMGM0LCAweDAxNDAsIDB4ZDBhNCwKLQkweDAxMzAsIDB4OTAwNiwgMHgyMjIwLCAweDIwMDksIDB4MDAyOSwgMHgwODBjLCAweGVhOGQsIDB4MDAxZSwKLQkweDAwMmUsIDB4MDA0ZSwgMHgwMDA1LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwYzYsIDB4NzI5NCwKLQkweDgyZmYsIDB4MDFlOCwgMHgwODBjLCAweDZjMDksIDB4MTFkMCwgMHgyMTAwLCAweDA4MGMsIDB4MjZiZiwKLQkweDgxZmYsIDB4MDFiOCwgMHgyMDE5LCAweDAwMDEsIDB4ODMxNCwgMHg5MmUwLCAweDFkODAsIDB4MmMwNCwKLQkweGQzODQsIDB4MDEyMCwgMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHgwMDEwLCAweDkwODQsIDB4MDBmZiwKLQkweDkxMTYsIDB4MDEzOCwgMHg5MDk2LCAweDAwZmYsIDB4MDExMCwgMHg4MzE4LCAweDBjNjgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4YWNmYywgMHgwMTA2LCAweDAwMzYsIDB4MjAxOSwKLQkweDAwMjksIDB4MDBjMSwgMHgwMDNlLCAweDAxMGUsIDB4MDkwYywgMHhhZDE4LCAweDkxODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA2NSwgMHgwMTU4LCAweDAwMTYsIDB4MDBjNiwgMHgyMDYxLCAweDFiMzksIDB4MDAxZSwKLQkweDYxMTIsIDB4MDgwYywgMHgzMzE1LCAweDAwMWUsIDB4MDgwYywgMHg2NzZlLCAweDAxMmUsIDB4MDBjZSwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4MjExMCwgMHgwODBjLCAweGE3ZTIsIDB4MDgwYywKLQkweGVkZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsIDB4ZDBjYywKLQkweDAwMDUsIDB4MDBjNiwgMHgwMGI2LCAweDA4MGMsIDB4Nzc5ZSwgMHgxMTE4LCAweDIwYTksIDB4MDgwMCwKLQkweDAwMTAsIDB4MjBhOSwgMHgwNzgyLCAweDA4MGMsIDB4Nzc5ZSwgMHgxMTEwLCAweDkwMGUsIDB4MDAxMCwKLQkweDIwMDksIDB4MDA3ZSwgMHg5MTgwLCAweDEwMDAsIDB4MjAwNCwgMHg5MDVkLCAweDAxMzAsIDB4ODZmZiwKLQkweDAxMTAsIDB4YjgwMCwgMHhkMGJjLCAweDA5MGMsIDB4Njc2ZSwgMHg4MTA4LCAweDFmMDQsIDB4MzQ2MiwKLQkweDIwNjEsIDB4MTgwMCwgMHg2MDdmLCAweDAwMDAsIDB4NjA4MCwgMHg5MDg0LCAweDAwZmYsIDB4NjA4MiwKLQkweDYwYjMsIDB4MDAwMCwgMHgwMGJlLCAweDAwY2UsIDB4MDAwNSwgMHgyMDAxLCAweDE4NjksIDB4MjAwNCwKLQkweGQwYmMsIDB4MDAwNSwgMHgyMDExLCAweDE4NDgsIDB4MjIxNCwgMHhkMmVjLCAweDAwMDUsIDB4MDAyNiwKLQkweDIwMTEsIDB4MTg2NywgMHgyMjE0LCAweGQyZGMsIDB4MDAyZSwgMHgwMDA1LCAweDdlZWYsIDB4N2RlOCwKLQkweDdjZTQsIDB4ODBlMiwgMHg3YmUxLCAweDgwZTAsIDB4ODBkYywgMHg4MGRhLCAweDdhZDksIDB4ODBkNiwKLQkweDgwZDUsIDB4ODBkNCwgMHg4MGQzLCAweDgwZDIsIDB4ODBkMSwgMHg3OWNlLCAweDc4Y2QsIDB4ODBjYywKLQkweDgwY2IsIDB4ODBjYSwgMHg4MGM5LCAweDgwYzcsIDB4ODBjNiwgMHg3N2M1LCAweDc2YzMsIDB4ODBiYywKLQkweDgwYmEsIDB4NzViOSwgMHg4MGI2LCAweDc0YjUsIDB4NzNiNCwgMHg3MmIzLCAweDgwYjIsIDB4ODBiMSwKLQkweDgwYWUsIDB4NzFhZCwgMHg4MGFjLCAweDcwYWIsIDB4NmZhYSwgMHg2ZWE5LCAweDgwYTcsIDB4NmRhNiwKLQkweDZjYTUsIDB4NmJhMywgMHg2YTlmLCAweDY5OWUsIDB4Njg5ZCwgMHg4MDliLCAweDgwOTgsIDB4Njc5NywKLQkweDY2OTAsIDB4NjU4ZiwgMHg2NDg4LCAweDYzODQsIDB4NjI4MiwgMHg4MDgxLCAweDgwODAsIDB4NjE3YywKLQkweDYwN2EsIDB4ODA3OSwgMHg1Zjc2LCAweDgwNzUsIDB4ODA3NCwgMHg4MDczLCAweDgwNzIsIDB4ODA3MSwKLQkweDgwNmUsIDB4NWU2ZCwgMHg4MDZjLCAweDVkNmIsIDB4NWM2YSwgMHg1YjY5LCAweDgwNjcsIDB4NWE2NiwKLQkweDU5NjUsIDB4NTg2MywgMHg1NzVjLCAweDU2NWEsIDB4NTU1OSwgMHg4MDU2LCAweDgwNTUsIDB4NTQ1NCwKLQkweDUzNTMsIDB4NTI1MiwgMHg1MTUxLCAweDUwNGUsIDB4NGY0ZCwgMHg4MDRjLCAweDgwNGIsIDB4NGU0YSwKLQkweDRkNDksIDB4ODA0NywgMHg0YzQ2LCAweDgwNDUsIDB4ODA0MywgMHg4MDNjLCAweDgwM2EsIDB4ODAzOSwKLQkweDgwMzYsIDB4NGIzNSwgMHg4MDM0LCAweDRhMzMsIDB4NDkzMiwgMHg0ODMxLCAweDgwMmUsIDB4NDcyZCwKLQkweDQ2MmMsIDB4NDUyYiwgMHg0NDJhLCAweDQzMjksIDB4NDIyNywgMHg4MDI2LCAweDgwMjUsIDB4NDEyMywKLQkweDQwMWYsIDB4M2YxZSwgMHgzZTFkLCAweDNkMWIsIDB4M2MxOCwgMHg4MDE3LCAweDgwMTAsIDB4M2IwZiwKLQkweDNhMDgsIDB4ODAwNCwgMHgzOTAyLCAweDgwMDEsIDB4ODAwMCwgMHg4MDAwLCAweDM4MDAsIDB4MzcwMCwKLQkweDM2MDAsIDB4ODAwMCwgMHgzNTAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDM0MDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgzMzAwLCAweDMyMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgzMTAwLCAweDMwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MmYwMCwgMHg4MDAwLCAweDJlMDAsIDB4MmQwMCwgMHgyYzAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MmIwMCwgMHg4MDAwLCAweDJhMDAsIDB4MjkwMCwgMHgyODAwLCAweDgwMDAsIDB4MjcwMCwKLQkweDI2MDAsIDB4MjUwMCwgMHgyNDAwLCAweDIzMDAsIDB4MjIwMCwgMHg4MDAwLCAweDgwMDAsIDB4MjEwMCwKLQkweDIwMDAsIDB4MWYwMCwgMHgxZTAwLCAweDFkMDAsIDB4MWMwMCwgMHg4MDAwLCAweDgwMDAsIDB4MWIwMCwKLQkweDFhMDAsIDB4ODAwMCwgMHgxOTAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4MTgwMCwgMHg4MDAwLCAweDE3MDAsIDB4MTYwMCwgMHgxNTAwLCAweDgwMDAsIDB4MTQwMCwKLQkweDEzMDAsIDB4MTIwMCwgMHgxMTAwLCAweDEwMDAsIDB4MGYwMCwgMHg4MDAwLCAweDgwMDAsIDB4MGUwMCwKLQkweDBkMDAsIDB4MGMwMCwgMHgwYjAwLCAweDBhMDAsIDB4MDkwMCwgMHg4MDAwLCAweDgwMDAsIDB4MDgwMCwKLQkweDA3MDAsIDB4ODAwMCwgMHgwNjAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDA1MDAsIDB4MDQwMCwKLQkweDAzMDAsIDB4ODAwMCwgMHgwMjAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDAxMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHgwMDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwKLQkweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDIwNzEsIDB4MTg5ZSwKLQkweDcwMDMsIDB4MDAwMiwgMHg5MDA2LCAweDcwMTYsIDB4NzAxYSwgMHg3MDRhLCAweDcwNGUsIDB4NzAwZSwKLQkweDcwNDIsIDB4NzA0NiwgMHg3MDNiLCAweDE4YmEsIDB4NzAzZiwgMHgxOGJhLCAweDcwMDcsIDB4MDAwMSwKLQkweDA4MGMsIDB4MTA3MiwgMHgwOTBjLCAweDBkODUsIDB4MjkwMCwgMHg3MDZhLCAweGE4NjcsIDB4MDAwMiwKLQkweGE4YWIsIDB4ZGNiMCwgMHgwODBjLCAweDEwNzIsIDB4MDkwYywgMHgwZDg1LCAweDI5MDAsIDB4NzA2ZSwKLQkweGE4NjcsIDB4MDAwMiwgMHhhOGFiLCAweGRjYjAsIDB4MDAwNSwgMHgyMDcxLCAweDE4OWUsIDB4NzAwNCwKLQkweDAwMDIsIDB4MzViZCwgMHgzNWJlLCAweDM1ZDEsIDB4MzVlNSwgMHgwMDA1LCAweDEwMDQsIDB4MzVjZSwKLQkweDBlMDQsIDB4MzVjZSwgMHgyMDc5LCAweDAwMDAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwYywKLQkweDkwMDUsIDB4MTEyOCwgMHg3MDBmLCAweDAwMDEsIDB4MDEyZSwgMHgwNDY4LCAweDAwMDUsIDB4MDEyZSwKLQkweDBjZTgsIDB4MjA3OSwgMHgwMDAwLCAweDIwNjEsIDB4MThiOCwgMHgyYzRjLCAweGE4NmMsIDB4OTA4ZSwKLQkweDAxMDAsIDB4MDEyOCwgMHg5MDg2LCAweDAyMDAsIDB4MDkwNCwgMHgzNmI5LCAweDAwMDUsIDB4NzAxOCwKLQkweDIwNDgsIDB4MjA2MSwgMHgxODAwLCAweDcwMWMsIDB4MDgwNywgMHg3MDE0LCAweDIwNDgsIDB4YTg2NCwKLQkweDkwOTQsIDB4MDBmZiwgMHg5Mjk2LCAweDAwMjksIDB4MTEyMCwgMHhhYTc4LCAweGQyZmMsIDB4MDEyOCwKLQkweDAwMDUsIDB4OTA4NiwgMHgwMTAzLCAweDAxMDgsIDB4MDAwNSwgMHgyMDc5LCAweDAwMDAsIDB4MjA2MSwKLQkweDE4MDAsIDB4NzAxYywgMHgwODA3LCAweDIwNjEsIDB4MTgwMCwgMHg3ODgwLCAweDkwOGEsIDB4MDA0MCwKLQkweDEyMTAsIDB4NjFkMCwgMHgwMDQyLCAweDIxMDAsIDB4OTA4YSwgMHgwMDNmLCAweDFhMDQsIDB4MzZiNiwKLQkweDYxZDAsIDB4MDgwNCwgMHgzNjRiLCAweDM2OGQsIDB4MzZjNSwgMHgzNmI2LCAweDM2ZDEsIDB4MzZkYiwKLQkweDM2ZTEsIDB4MzZlNSwgMHgzNmY1LCAweDM2ZjksIDB4MzcwZiwgMHgzNzE1LCAweDM3MWIsIDB4MzcyNiwKLQkweDM3MzEsIDB4Mzc0MCwgMHgzNzRmLCAweDM3NWQsIDB4Mzc3NCwgMHgzNzhmLCAweDM2YjYsIDB4MzgzYSwKLQkweDM4NzgsIDB4MzkxZCwgMHgzOTJlLCAweDM5NTEsIDB4MzZiNiwgMHgzNmI2LCAweDM2YjYsIDB4Mzk4OSwKLQkweDM5YTksIDB4MzliMiwgMHgzOWRlLCAweDM5ZTQsIDB4MzZiNiwgMHgzYTJhLCAweDM2YjYsIDB4MzZiNiwKLQkweDM2YjYsIDB4MzZiNiwgMHgzNmI2LCAweDNhMzUsIDB4M2EzZSwgMHgzYTQ2LCAweDNhNDgsIDB4MzZiNiwKLQkweDM2YjYsIDB4MzZiNiwgMHgzNmI2LCAweDM2YjYsIDB4MzZiNiwgMHgzYTc4LCAweDM2YjYsIDB4MzZiNiwKLQkweDM2YjYsIDB4MzZiNiwgMHgzNmI2LCAweDNhOTUsIDB4M2IxOSwgMHgzNmI2LCAweDM2YjYsIDB4MzZiNiwKLQkweDM2YjYsIDB4MzZiNiwgMHgzNmI2LCAweDAwMDIsIDB4M2I0MywgMHgzYjQ2LCAweDNiYTUsIDB4M2JiZSwKLQkweDNiZWUsIDB4M2U5NCwgMHgzNmI2LCAweDUzZjUsIDB4MzZiNiwgMHgzNmI2LCAweDM2YjYsIDB4MzZiNiwKLQkweDM2YjYsIDB4MzZiNiwgMHgzNmI2LCAweDM2YjYsIDB4MzcwZiwgMHgzNzE1LCAweDQzOTcsIDB4NTg2NCwKLQkweDQzYjUsIDB4NTQ4NCwgMHg1NGQ2LCAweDU1ZTEsIDB4MzZiNiwgMHg1NjQzLCAweDU2N2YsIDB4NTZiMCwKLQkweDU3YzAsIDB4NTZkZCwgMHg1NzQwLCAweDM2YjYsIDB4NDNiOSwgMHg0NTdmLCAweDQ1OTUsIDB4NDViYSwKLQkweDQ2MWYsIDB4NDY5MywgMHg0NmIzLCAweDQ3MmEsIDB4NDc4NiwgMHg0N2UyLCAweDQ3ZTUsIDB4NDgwYSwKLQkweDQ4N2MsIDB4NDhlNiwgMHg0OGVlLCAweDRhMjMsIDB4NGJjYiwgMHg0YmZmLCAweDRlNjMsIDB4MzZiNiwKLQkweDRlODEsIDB4NGY0OCwgMHg1MDMxLCAweDUwOGIsIDB4MzZiNiwgMHg1MTFlLCAweDM2YjYsIDB4NTEzNCwKLQkweDUxNGYsIDB4NDhlZSwgMHg1Mzk1LCAweDcxNGMsIDB4MDAwMCwgMHgyMDIxLCAweDQwMDAsIDB4MDgwYywKLQkweDRjN2QsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwgMHgzNjk3LCAweDAwMTAsIDB4MDEyZSwKLQkweDBjYzAsIDB4N2MzNiwgMHg5NDg2LCAweDQwMDAsIDB4MDExOCwgMHg3ODMzLCAweDAwMTEsIDB4MDAxMCwKLQkweDc4MzMsIDB4MDAxMCwgMHg3YzgyLCAweDc5ODYsIDB4N2E4YSwgMHg3YjhlLCAweDIwOTEsIDB4NDA4MCwKLQkweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMjAwLCAweDcwMDcsIDB4MDAwMSwKLQkweDIwOTEsIDB4NTAwMCwgMHg3MDBmLCAweDAwMDAsIDB4MDEyZSwgMHgwMDA1LCAweDIwMjEsIDB4NDAwMSwKLQkweDA4YjAsIDB4MjAyMSwgMHg0MDAyLCAweDA4OTgsIDB4MjAyMSwgMHg0MDAzLCAweDA4ODAsIDB4MjAyMSwKLQkweDQwMDUsIDB4MDg2OCwgMHgyMDIxLCAweDQwMDYsIDB4MDg1MCwgMHgyMDM5LCAweDAwMDEsIDB4OTAyZSwKLQkweDI1MjAsIDB4N2I4OCwgMHg3YThjLCAweDc4ODQsIDB4Nzk5MCwgMHg4MWZmLCAweDBkOTgsIDB4MDgwNCwKLQkweDRjOGEsIDB4MjAzOSwgMHgwMDAxLCAweDkwMmUsIDB4MjUyMCwgMHg3Yjg4LCAweDdhOGMsIDB4Nzg4NCwKLQkweDc5OTAsIDB4MDgwNCwgMHg0YzhkLCAweDc5ODQsIDB4Nzg4OCwgMHgyMTE0LCAweDIwMGEsIDB4MDgwNCwKLQkweDM2OGQsIDB4Nzk4NCwgMHgyMTE0LCAweDA4MDQsIDB4MzY4ZCwgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwKLQkweDAwMjEsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDAyMSwgMHgyMGE5LCAweDAwMWYsIDB4NDAwMywKLQkweDc5ODQsIDB4N2E4OCwgMHg3YjhjLCAweDA4MDQsIDB4MzY4ZCwgMHg3ODg0LCAweDIwNjAsIDB4MDgwNCwKLQkweDM3NDIsIDB4MjAwOSwgMHgwMDAzLCAweDIwMTEsIDB4MDAwMywgMHgyMDE5LCAweDAwMTQsIDB4Nzg5YiwKLQkweDAxMzcsIDB4Nzg5MywgMHhmZmZmLCAweDIwMDEsIDB4MTg4ZiwgMHgyMDA0LCAweDkwMDUsIDB4MDExOCwKLQkweDc4OTYsIDB4MDgwNCwgMHgzNjhkLCAweDc4OTcsIDB4MDAwMSwgMHgwODA0LCAweDM2OGQsIDB4MjAzOSwKLQkweDAwMDEsIDB4N2Q5OCwgMHg3YzljLCAweDA4MDQsIDB4MzZjOSwgMHgyMDM5LCAweDAwMDEsIDB4N2Q5OCwKLQkweDdjOWMsIDB4MDgwNCwgMHgzNmQ1LCAweDc5YTAsIDB4OTE4MiwgMHgwMDQwLCAweDAyMTAsIDB4MDgwNCwKLQkweDM2YzIsIDB4MjEzOCwgMHg3ZDk4LCAweDdjOWMsIDB4MDgwNCwgMHgzNmM5LCAweDc5YTAsIDB4OTE4MiwKLQkweDAwNDAsIDB4MDIxMCwgMHgwODA0LCAweDM2YzIsIDB4MjEzOCwgMHg3ZDk4LCAweDdjOWMsIDB4MDgwNCwKLQkweDM2ZDUsIDB4NzlhMCwgMHg5MTgyLCAweDAwNDAsIDB4MDIxMCwgMHgwODA0LCAweDM2YzIsIDB4MjFlOCwKLQkweDc5ODQsIDB4Nzg4OCwgMHgyMGE5LCAweDAwMDEsIDB4MjFhMCwgMHg0MDA0LCAweDA4MDQsIDB4MzY4ZCwKLQkweDIwNjEsIDB4MDgwMCwgMHhlMTBjLCAweDkwMDYsIDB4MmMxNSwgMHg5MjAwLCAweDhjNjAsIDB4ODEwOSwKLQkweDFkZDgsIDB4MjAxMCwgMHg5MDA1LCAweDA5MDQsIDB4MzY4ZCwgMHgwODA0LCAweDM2YmMsIDB4NzlhMCwKLQkweDkxODIsIDB4MDA0MCwgMHgwMjEwLCAweDA4MDQsIDB4MzZjMiwgMHgyMWUwLCAweDIwYTksIDB4MDAwMSwKLQkweDc5ODQsIDB4MjE5OCwgMHg0MDEyLCAweDA4MDQsIDB4MzY4ZCwgMHgyMDY5LCAweDE4NDcsIDB4Nzg4NCwKLQkweDc5OTAsIDB4OTExYSwgMHgxYTA0LCAweDM2YzIsIDB4ODAxOSwgMHgwOTA0LCAweDM2YzIsIDB4Njg0YSwKLQkweDY5NDIsIDB4Nzg4YywgMHg2ODUyLCAweDc4ODgsIDB4Njg1NiwgMHg5MDA2LCAweDY4NWEsIDB4Njg1ZSwKLQkweDA4MGMsIDB4N2FlNywgMHgwODA0LCAweDM2OGQsIDB4MjA2OSwgMHgxODQ3LCAweDc4ODQsIDB4Nzk5NCwKLQkweDkxMWEsIDB4MWEwNCwgMHgzNmMyLCAweDgwMTksIDB4MDkwNCwgMHgzNmMyLCAweDY4NGUsIDB4Njk0NiwKLQkweDc4OGMsIDB4Njg2MiwgMHg3ODg4LCAweDY4NjYsIDB4OTAwNiwgMHg2ODZhLCAweDY4NmUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDZkNjYsIDB4MDEyZSwgMHgwODA0LCAweDM2OGQsIDB4OTAyZSwKLQkweDI1MjAsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksIDB4MDAwMSwgMHgwODA0LCAweDM2YmYsIDB4Nzk4NCwKLQkweDdiODgsIDB4N2E4YywgMHgyMGE5LCAweDAwMDUsIDB4MjBlOSwgMHgwMDAxLCAweDIwYTEsIDB4MThhNiwKLQkweDQxMDEsIDB4MDgwYywgMHg0YzQxLCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzZiZiwKLQkweDIwMDksIDB4MDAyMCwgMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHhhZjYwLCAweDA4MGMsIDB4NGM4YSwKLQkweDcwMWYsIDB4MzdiMywgMHgwMDA1LCAweGE4NjQsIDB4MjAwOCwgMHg5MDg0LCAweDAwZmYsIDB4OTA5NiwKLQkweDAwMTEsIDB4MDE2OCwgMHg5MDk2LCAweDAwMTksIDB4MDE1MCwgMHg5MDk2LCAweDAwMTUsIDB4MDEzOCwKLQkweDkwOTYsIDB4MDA0OCwgMHgwMTIwLCAweDkwOTYsIDB4MDAyOSwgMHgxOTA0LCAweDM2YmYsIDB4ODEwZiwKLQkweDkxOGMsIDB4MDBmZiwgMHgwOTA0LCAweDM2YmYsIDB4NzExMiwgMHg3MDEwLCAweDgwMDEsIDB4MDU2MCwKLQkweDcwMTIsIDB4MDgwYywgMHg0YzQxLCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzZiZiwKLQkweDIwMDksIDB4MDAyMCwgMHg3MDY4LCAweDIwNDAsIDB4YTI4YywgMHhhMzkwLCAweGE0OTQsIDB4YTU5OCwKLQkweDkyOTAsIDB4MDA0MCwgMHg5Mzk5LCAweDAwMDAsIDB4OTRhMSwgMHgwMDAwLCAweDk1YTksIDB4MDAwMCwKLQkweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweGFmNjAsIDB4MDgwYywgMHg0YzhhLCAweDcwMWYsIDB4MzdmMSwKLQkweDAwMDUsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA5NiwgMHgwMDAyLCAweDAxMjAsIDB4OTA5NiwKLQkweDAwMGEsIDB4MTkwNCwgMHgzNmJmLCAweDA4ODgsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAxNCwKLQkweDIwNDgsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA5NiwKLQkweDAwMjksIDB4MTE0OCwgMHhjMmZkLCAweGFhN2EsIDB4MDgwYywgMHg2MzBhLCAweDAxMzgsIDB4YTg3YSwKLQkweGE5ODIsIDB4MDEyZSwgMHgwMDYwLCAweDA4MGMsIDB4NjYzYSwgMHgxMTMwLCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWYsIDB4MzgxZiwgMHgwMTJlLCAweDAwMDUsIDB4MDgwYywgMHg3MjVlLCAweDAxMmUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMGE5LCAweDAwMDUsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MThhNiwKLQkweDQwMGEsIDB4MjEwMCwgMHg5MjEwLCAweDkzOTksIDB4MDAwMCwgMHg5NGExLCAweDAwMDAsIDB4OTVhOSwKLQkweDAwMDAsIDB4YTg1YywgMHg5MDgwLCAweDAwMTksIDB4MjAwOSwgMHgwMDIwLCAweDAxMmUsIDB4YWY2MCwKLQkweDA4MDQsIDB4NGM4ZCwgMHgyMDkxLCAweDgwMDAsIDB4NzgzNywgMHg0MDAwLCAweDc4MzMsIDB4MDAxMCwKLQkweDc4ODMsIDB4NDAwMCwgMHg3ODg3LCAweDQ5NTMsIDB4Nzg4YiwgMHg1MDIwLCAweDc4OGYsIDB4MjAyMCwKLQkweDIwMDksIDB4MDE3ZiwgMHgyMTA0LCAweDc4OTIsIDB4M2YwMCwgMHg3ODk2LCAweDIwNjEsIDB4MDEwMCwKLQkweDYyMDAsIDB4MjA2MSwgMHgwMjAwLCAweDYwM2MsIDB4ODAwNywgMHg5MjA1LCAweDc4OWEsIDB4MjAwOSwKLQkweDA0ZmQsIDB4MjEwNCwgMHg3ODllLCAweDIwOTEsIDB4NTAwMCwgMHgyMDkxLCAweDQwODAsIDB4MjAwMSwKLQkweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDAxODAsIDB4MjAwMSwgMHgxYTI1LCAweDIwMDQsIDB4OTAwNSwKLQkweDAxMjgsIDB4MjAwMSwgMHgwMDhiLCAweDIwMDQsIDB4ZDBmYywgMHgwZGQ4LCAweDIwMDEsIDB4MDA4YSwKLQkweDIwMDMsIDB4MDAwMiwgMHgyMDAzLCAweDEwMDEsIDB4MjA3MSwgMHgwMDgwLCAweDA4MDQsIDB4MDQyNywKLQkweDgxZmYsIDB4MTkwNCwgMHgzNmJmLCAweDc5ODQsIDB4MDgwYywgMHg2N2I0LCAweDE5MDQsIDB4MzZjMiwKLQkweDdlOTgsIDB4OTY4NCwgMHgzZmZmLCAweDkwODIsIDB4NDAwMCwgMHgxYTA0LCAweDM2YzIsIDB4N2M4OCwKLQkweDdkOGMsIDB4MDgwYywgMHg2OWYxLCAweDA4MGMsIDB4Njk3ZSwgMHgxNTE4LCAweDIwNjEsIDB4MWRkYywKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNDgsIDB4NjAxNCwKLQkweDkwNGQsIDB4MDEzMCwgMHhhODZjLCAweDk0MDYsIDB4MTExOCwgMHhhODcwLCAweDk1MDYsIDB4MDE1MCwKLQkweDAxMmUsIDB4OWNlMCwgMHgwMDFjLCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsIDB4MWEwNCwKLQkweDM2YmYsIDB4MGMzMCwgMHgwODBjLCAweGNhZTksIDB4MDEyZSwgMHgwOTA0LCAweDM2YmYsIDB4MDgwNCwKLQkweDM2OGQsIDB4OTAwZSwgMHgyMDAxLCAweDAwMDUsIDB4MDgwYywgMHg3MjVlLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHhkMjI2LCAweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZCwKLQkweDAwYTYsIDB4Mjk1MCwgMHhiMTk4LCAweDA4MGMsIDB4NjdiNCwgMHgxOTA0LCAweDM5MGEsIDB4YjZhNCwKLQkweDk2ODQsIDB4M2ZmZiwgMHg5MDgyLCAweDQwMDAsIDB4MTZlOCwgMHhiNDljLCAweGI1YTAsIDB4MDgwYywKLQkweDY5ZjEsIDB4MDgwYywgMHg2OTdlLCAweDE1MjAsIDB4MjA2MSwgMHgxZGRjLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MDE0OCwgMHg2MDE0LCAweDkwNGQsIDB4MDEzMCwKLQkweGE4NmMsIDB4OTQwNiwgMHgxMTE4LCAweGE4NzAsIDB4OTUwNiwgMHgwMTU4LCAweDAxMmUsIDB4OWNlMCwKLQkweDAwMWMsIDB4MjAwMSwgMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgyMDA5LCAweDAwMGQsIDB4MTJiMCwKLQkweDBjMjgsIDB4MDgwYywgMHhjYWU5LCAweDAxMmUsIDB4MjAwOSwgMHgwMDAzLCAweDAxNzgsIDB4MDBlMCwKLQkweDkwMGUsIDB4MjAwMSwgMHgwMDA1LCAweDA4MGMsIDB4NzI1ZSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4ZDIyNiwgMHgwODBjLCAweDcwMDYsIDB4MDEyZSwgMHgwMDcwLCAweGIwOTcsIDB4NDAwNSwKLQkweGIxOWEsIDB4MDAxMCwgMHhiMDk3LCAweDQwMDYsIDB4OTAwZSwgMHg5MDg1LCAweDAwMDEsIDB4MjAwMSwKLQkweDAwMzAsIDB4MmE0OCwgMHgwMGFlLCAweDAwMDUsIDB4YjA5NywgMHg0MDAwLCAweDkwMDYsIDB4OTE4ZCwKLQkweDAwMDEsIDB4MjAwOCwgMHgyYTQ4LCAweDAwYWUsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4NGM1OCwgMHgwOTA0LCAweDM2YzIsIDB4MDgwYywgMHg2ODdiLCAweDA5MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4NjlmNywgMHgwOTA0LCAweDM2YmYsIDB4MDgwNCwgMHg0NmFhLCAweDgxZmYsIDB4MTkwNCwKLQkweDM2YmYsIDB4MDgwYywgMHg0Yzc0LCAweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDZhODUsIDB4MDkwNCwKLQkweDM2YmYsIDB4MjAxOSwgMHgwMDA1LCAweDc5YTgsIDB4MDgwYywgMHg2YTEyLCAweDA5MDQsIDB4MzZiZiwKLQkweDc4ODgsIDB4OTA4YSwgMHgxMDAwLCAweDFhMDQsIDB4MzZjMiwgMHg4MDAzLCAweDgwMGIsIDB4ODEwYiwKLQkweDkxMDgsIDB4MDgwYywgMHg4OWExLCAweDc5YTgsIDB4ZDE4NCwgMHgxOTA0LCAweDM2OGQsIDB4MDgwNCwKLQkweDQ2YWEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4ODFmZiwgMHgwMTE4LCAweDIwMDksIDB4MDAwMSwKLQkweDA0NTAsIDB4MjAyOSwgMHgwN2ZmLCAweDY0NWMsIDB4MjQwMCwgMHg5NTA2LCAweDAxZjgsIDB4MjUwOCwKLQkweDA4MGMsIDB4NjdiNCwgMHgxMWQ4LCAweDA4MGMsIDB4NmE4NSwgMHgxMTI4LCAweDIwMDksIDB4MDAwMiwKLQkweDYyYzAsIDB4MjUxOCwgMHgwMGMwLCAweDIwMTksIDB4MDAwNCwgMHg5MDBlLCAweDA4MGMsIDB4NmExMiwKLQkweDExMTgsIDB4MjAwOSwgMHgwMDA2LCAweDAwNzgsIDB4Nzg4NCwgMHg5MDhhLCAweDEwMDAsIDB4MTI3MCwKLQkweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweDkxMDgsIDB4MDgwYywgMHg4OWExLCAweDg1MjksIDB4MWFlMCwKLQkweDAxMmUsIDB4MDgwNCwgMHgzNjhkLCAweDAxMmUsIDB4MDgwNCwgMHgzNmJmLCAweDAxMmUsIDB4MDgwNCwKLQkweDM2YzIsIDB4MDgwYywgMHg0YzU4LCAweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDY4N2IsIDB4MDkwNCwKLQkweDM2YmYsIDB4MDgwYywgMHhhY2ZjLCAweGJhYTAsIDB4MjAxOSwgMHgwMDA1LCAweDAwYzYsIDB4OTA2NiwKLQkweDA4MGMsIDB4OTdiMCwgMHgwMDc2LCAweDkwM2UsIDB4MDgwYywgMHg5NjZkLCAweDkwMGUsIDB4MDgwYywKLQkweGU3NWQsIDB4MDA3ZSwgMHgwMGNlLCAweDA4MGMsIDB4YWQxOCwgMHgwODBjLCAweDY5ZjEsIDB4MDgwNCwKLQkweDM2OGQsIDB4MDgwYywgMHg0YzU4LCAweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDY5ZjEsIDB4MjIwOCwKLQkweDA4MDQsIDB4MzY4ZCwgMHgwMTU2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGM2LCAweDIwNjksIDB4MTkxMCwKLQkweDY4MTAsIDB4NjkxNCwgMHg5MTBhLCAweDEyMDgsIDB4OTAwZSwgMHg2ODE2LCAweDkwMTYsIDB4OTAxZSwKLQkweDIwNzEsIDB4MTllOCwgMHg3MDI4LCAweDkwNjUsIDB4MDExOCwgMHg4MjEwLCAweDYwMGMsIDB4MGNkOCwKLQkweDIzMDAsIDB4OTIxOCwgMHgwMGNlLCAweDAwZWUsIDB4MDBkZSwgMHgwMTVlLCAweDA4MDQsIDB4MzY4ZCwKLQkweDAwZjYsIDB4MDAxNiwgMHg5MDdkLCAweDAxMzgsIDB4OTAwNiwgMHg4MDAwLCAweDJmMGMsIDB4ODFmZiwKLQkweDAxMTAsIDB4MjE3OCwgMHgwY2QwLCAweDAwMWUsIDB4MDBmZSwgMHgwMDA1LCAweDIwNjksIDB4MTkxMCwKLQkweDY5MTAsIDB4NjJiYywgMHgwODA0LCAweDM2OGQsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksIDB4MDAwMSwKLQkweDA4MDQsIDB4MzZiZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDU4NTQsIDB4MDEyOCwKLQkweDIwMDksIDB4MDAwNywgMHgwMTJlLCAweDA4MDQsIDB4MzZiZiwgMHgwMTJlLCAweDYxNWMsIDB4OTE5MCwKLQkweDM0OGUsIDB4MjIxNSwgMHg5Mjk0LCAweDAwZmYsIDB4NjM3YywgMHg4M2ZmLCAweDAxMDgsIDB4NjI4MCwKLQkweDY3ZGMsIDB4OTdjNCwgMHgwMDBhLCAweDk4YzYsIDB4MDAwYSwgMHgxMTE4LCAweDIwMzEsIDB4MDAwMSwKLQkweDAwZTgsIDB4OTdjNCwgMHgwMDIyLCAweDk4YzYsIDB4MDAyMiwgMHgxMTE4LCAweDIwMzEsIDB4MDAwMywKLQkweDAwYTgsIDB4OTdjNCwgMHgwMDEyLCAweDk4YzYsIDB4MDAxMiwgMHgxMTE4LCAweDIwMzEsIDB4MDAwMiwKLQkweDAwNjgsIDB4MDgwYywgMHg3NzllLCAweDExMTgsIDB4MjAzMSwgMHgwMDA0LCAweDAwMzgsIDB4ZDc5YywKLQkweDAxMjAsIDB4MjAwOSwgMHgwMDA1LCAweDA4MDQsIDB4MzZiZiwgMHg5MDM2LCAweDdlOWEsIDB4N2Y5ZSwKLQkweDA4MDQsIDB4MzY4ZCwgMHg2MTRjLCAweDYyNTAsIDB4MjAxOSwgMHgxOTg2LCAweDIzMWMsIDB4MjAwMSwKLQkweDE5ODcsIDB4MjAwNCwgMHg3ODlhLCAweDA4MDQsIDB4MzY4ZCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYxMzgsIDB4NjIzYywgMHg2MzQwLCAweDAxMmUsIDB4MDgwNCwgMHgzNjhkLCAweDA4MGMsIDB4NGM3NCwKLQkweDA5MDQsIDB4MzZjMiwgMHhiYTQ0LCAweGJiMzgsIDB4MDgwNCwgMHgzNjhkLCAweDA4MGMsIDB4MGQ4NSwKLQkweDA4MGMsIDB4NGM3NCwgMHgyMTEwLCAweDA5MDQsIDB4MzZjMiwgMHhiODA0LCAweDkwOGMsIDB4MDBmZiwKLQkweDkxOGUsIDB4MDAwNiwgMHgwMTQwLCAweDkwODQsIDB4ZmYwMCwgMHg5MDg2LCAweDA2MDAsIDB4MjAwOSwKLQkweDAwMDksIDB4MTkwNCwgMHgzNmJmLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwMTksIDB4MDAwNSwKLQkweDAwYzYsIDB4OTA2NiwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywgMHhhN2UyLCAweDA4MGMsIDB4OTdiMCwKLQkweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweDk2NmQsIDB4OTAwZSwgMHgwODBjLCAweGU3NWQsIDB4MDA3ZSwKLQkweDAwY2UsIDB4MDgwYywgMHhhZDE4LCAweGI4MDcsIDB4MDQwNywgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZCwKLQkweDYxNGMsIDB4NjI1MCwgMHg3ODg0LCAweDYwNGUsIDB4N2I4OCwgMHg2MzUyLCAweDIwNjksIDB4MTg0NywKLQkweDgzMWYsIDB4OTMwNSwgMHg2ODE2LCAweDc4OGMsIDB4MjA2OSwgMHgxOTg2LCAweDJkMWMsIDB4MjA2YSwKLQkweDdlOTgsIDB4OTY4MiwgMHgwMDE0LCAweDEyMTAsIDB4MjAzMSwgMHgwN2QwLCAweDIwNjksIDB4MTk4NywKLQkweDJkMDQsIDB4MjY2YSwgMHg3ODlhLCAweDA4MDQsIDB4MzY4ZCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYxMzgsIDB4Nzg4NCwgMHg2MDNhLCAweDkxMGUsIDB4ZDFiNCwgMHgxOTBjLCAweDBlZWIsIDB4ZDBjNCwKLQkweDAxYTgsIDB4MDBkNiwgMHg3OGE4LCAweDIwMDksIDB4MTk5ZCwgMHgyMDBhLCAweDc4YWMsIDB4MjAxMSwKLQkweDE5OWUsIDB4MjAxMiwgMHgyMDY5LCAweDAxMDAsIDB4NjgzOCwgMHg5MDg2LCAweDAwMDcsIDB4MTExOCwKLQkweDIyMTQsIDB4NmE1YSwgMHgwMDEwLCAweDIxMGMsIDB4Njk1YSwgMHgwMGRlLCAweDc4ODgsIDB4ZDBlYywKLQkweDAxNzgsIDB4NjAzNCwgMHhjMDhkLCAweDYwMzYsIDB4MjAwMSwgMHgwMDUwLCAweDYwNzYsIDB4NjA3YSwKLQkweDYwNTYsIDB4NjA2YiwgMHgyNjljLCAweDAwYzYsIDB4MjA2MSwgMHgxYjczLCAweDIwNjIsIDB4MDBjZSwKLQkweDIwMTEsIDB4MDExNiwgMHgyMjBjLCAweDc4ODgsIDB4ZDA4YywgMHgwMTE4LCAweDkxOGQsIDB4MDA0MCwKLQkweDAwMTAsIDB4OTE4YywgMHhmZjdmLCAweDIxMTIsIDB4NjEzNCwgMHhkMThjLCAweDIwMDEsIDB4MDAwMCwKLQkweDAxMDgsIDB4NjAzYywgMHg3OTg4LCAweDYxM2UsIDB4NjE0MCwgMHg5MTBkLCAweDc4OGMsIDB4NjA0MiwKLQkweDYyMzQsIDB4ZDI4YywgMHgwMTIwLCAweDdhODgsIDB4OTI5NCwgMHgxMDAwLCAweDkyMDUsIDB4OTEwZSwKLQkweGQxZTQsIDB4MTkwYywgMHgwZjA2LCAweDkwODQsIDB4MDAyMCwgMHgwMTMwLCAweDc4YjQsIDB4NjA0NiwKLQkweDkwODQsIDB4MDAwMSwgMHgwOTBjLCAweDQzOTcsIDB4NjA0MCwgMHhkMGNjLCAweDAxMjAsIDB4NzhiMCwKLQkweDIwMTEsIDB4MDExNCwgMHgyMDEyLCAweDAxMmUsIDB4MDgwNCwgMHgzNjhkLCAweDAwZjYsIDB4MjA3OSwKLQkweDE4MDAsIDB4N2EzOCwgMHhhODk4LCAweDkwODQsIDB4ZmViZiwgMHg5MjE1LCAweGE4OWMsIDB4OTA4NCwKLQkweGZlYmYsIDB4ODAwMiwgMHg5MjE0LCAweDc4MzgsIDB4OTA4NCwgMHgwMTQwLCAweDkyMTUsIDB4N2EzYSwKLQkweGE4OTcsIDB4NDAwMCwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDBmZSwKLQkweDAwMDUsIDB4Nzg5OCwgMHg5MDA1LCAweDAxYTgsIDB4Nzg4OCwgMHg5MDI1LCAweDA5MDQsIDB4MzZjMiwKLQkweDc4OGMsIDB4OTAyZCwgMHgwOTA0LCAweDM2YzIsIDB4OTAwZSwgMHgwODBjLCAweDY3YjQsIDB4MTEyMCwKLQkweGJhNDQsIDB4YmIzOCwgMHhiYzQ2LCAweGJkM2EsIDB4OTE4NiwgMHgwN2ZmLCAweDAxOTAsIDB4ODEwOCwKLQkweDBjYTAsIDB4MDgwYywgMHg0Yzc0LCAweDA5MDQsIDB4MzZjMiwgMHg3ODg4LCAweDkwMGQsIDB4MDkwNCwKLQkweDM2YzIsIDB4Nzg4YywgMHg5MDA1LCAweDA5MDQsIDB4MzZjMiwgMHhiYTQ0LCAweGI5NDYsIDB4YmIzOCwKLQkweGI4M2EsIDB4MDgwNCwgMHgzNjhkLCAweDIwMTEsIDB4YmMwOSwgMHgwMDEwLCAweDIwMTEsIDB4YmMwNSwKLQkweDA4MGMsIDB4NTg1NCwgMHgxOTA0LCAweDM2YmYsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4Nzk4NCwKLQkweDkxODYsIDB4MDBmZiwgMHgxMTMwLCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDkwODUsIDB4ZmYwMCwKLQkweDAwODgsIDB4OTE4MiwgMHgwMDdmLCAweDE2ZTAsIDB4OTE4OCwgMHgzNDhlLCAweDIxMGQsIDB4OTE4YywKLQkweDAwZmYsIDB4MjAwMSwgMHgxODE4LCAweDIwMDQsIDB4MDAyNiwgMHg5MTE2LCAweDAwMmUsIDB4MDU4MCwKLQkweDgxMGYsIDB4OTEwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMDA2LCAweDA4MGMsIDB4YjExNiwKLQkweDAwMGUsIDB4MDUxMCwgMHg2MDJlLCAweDYyMGEsIDB4Nzk4NCwgMHgwMGI2LCAweDA4MGMsIDB4Njc0ZiwKLQkweDJiMDgsIDB4MDBiZSwgMHgxNTAwLCAweDYxMTIsIDB4NjAyMywgMHgwMDAxLCAweDA4MGMsIDB4NGM0MSwKLQkweDAxZDAsIDB4OTAwNiwgMHhhODY2LCAweDcwMDcsIDB4MDAwMywgMHhhODMyLCAweGE4NjgsIDB4YzBmZCwKLQkweGE4NmEsIDB4NzAxZiwgMHgzYjllLCAweDI5MDAsIDB4NjAxNiwgMHgyMDA5LCAweDAwMzIsIDB4MDgwYywKLQkweGIyMGEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4MDEyZSwgMHgwMGNlLCAweDA4MDQsIDB4MzZiZiwKLQkweDAwY2UsIDB4MDgwNCwgMHgzNmMyLCAweDA4MGMsIDB4YjE2YywgMHgwY2IwLCAweGE4MzAsIDB4OTA4NiwKLQkweDAxMDAsIDB4MDkwNCwgMHgzNmJmLCAweDA4MDQsIDB4MzY4ZCwgMHgyMDYxLCAweDFhNzMsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg2MDAwLCAweGQwODQsIDB4MDE3MCwgMHg2MTA0LCAweDYyMDgsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjM1NCwgMHg2MDc0LCAweDc4OWEsIDB4NjBjMCwgMHg3ODllLCAweDYwYmMsIDB4NzhhYSwKLQkweDAxMmUsIDB4MDgwNCwgMHgzNjhkLCAweDkwMGUsIDB4MjExMCwgMHgwYzg4LCAweDgxZmYsIDB4MTkwNCwKLQkweDM2YmYsIDB4MDgwYywgMHg3NzllLCAweDA5MDQsIDB4MzZiZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDYyNTQsIDB4NjA3NCwgMHg5MjAyLCAweDAyNDgsIDB4OTA4NSwgMHgwMDAxLCAweDA4MGMsIDB4MjZmNSwKLQkweDA4MGMsIDB4NWE3YywgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZCwgMHgwMTJlLCAweDA4MDQsIDB4MzZjMiwKLQkweDAwMDYsIDB4MDAxNiwgMHgwMGM2LCAweDAwZTYsIDB4MjAwMSwgMHgxOWFhLCAweDIwNzAsIDB4MjA2MSwKLQkweDE4NDcsIDB4NjAwOCwgMHgyMDcyLCAweDkwMGUsIDB4MjAxMSwgMHgxNDAwLCAweDA4MGMsIDB4OTU1YiwKLQkweDcyMDYsIDB4MDBlZSwgMHgwMGNlLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4ODFmZiwgMHgwMTI4LCAweDAxMmUsIDB4MjAyMSwgMHg0MDBiLCAweDA4MDQsIDB4MzY4ZiwKLQkweDc4ODQsIDB4ZDBmYywgMHgwMTU4LCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwMDUsIDB4MDE4MCwKLQkweDkwODIsIDB4MDBlMSwgMHgwMjk4LCAweDAxMmUsIDB4MDgwNCwgMHgzNmMyLCAweDIwMDEsIDB4MDAyYSwKLQkweDIwMDQsIDB4OTAwNSwgMHgwMTI4LCAweDIwNjksIDB4MTg0NywgMHg2OTA4LCAweDkxMDIsIDB4MTIzMCwKLQkweDAxMmUsIDB4MDgwNCwgMHgzNmMyLCAweDAxMmUsIDB4MDgwNCwgMHgzNmJmLCAweDA4MGMsIDB4YjA5NCwKLQkweDBkZDAsIDB4Nzg4NCwgMHhkMGZjLCAweDA5MDQsIDB4M2M2ZCwgMHgwMGM2LCAweDA4MGMsIDB4NGM0MSwKLQkweDAwY2UsIDB4MGQ4OCwgMHhhODY3LCAweDAwMDAsIDB4Nzg4NCwgMHhhODBhLCAweDc4OTgsIDB4YTgwZSwKLQkweDc4OWMsIDB4YTgxMiwgMHgyMDAxLCAweDAwMmUsIDB4MjAwNCwgMHhhODFhLCAweDIwMDEsIDB4MDAyZiwKLQkweDIwMDQsIDB4YTgxZSwgMHgyMDAxLCAweDAwMzAsIDB4MjAwNCwgMHhhODIyLCAweDIwMDEsIDB4MDAzMSwKLQkweDIwMDQsIDB4YTgyNiwgMHgyMDAxLCAweDAwMzQsIDB4MjAwNCwgMHhhODJhLCAweDIwMDEsIDB4MDAzNSwKLQkweDIwMDQsIDB4YTgyZSwgMHgyMDAxLCAweDAwMmEsIDB4MjAwNCwgMHg5MDgwLCAweDAwMDMsIDB4OTA4NCwKLQkweDAwZmMsIDB4ODAwNCwgMHhhODE2LCAweDA4MGMsIDB4M2RmNywgMHgwOTI4LCAweDcwMTQsIDB4MjA0OCwKLQkweGFkMmMsIDB4YWMyOCwgMHhhYjFjLCAweGFhMTgsIDB4YTkzMCwgMHhhODA4LCAweGQwYjQsIDB4MTEyMCwKLQkweDIwMjksIDB4MDAwMCwgMHgyMDIxLCAweDAwMDAsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywKLQkweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAxYiwgMHgwODBjLCAweDRjOGEsIDB4NzAxZiwKLQkweDNkMzQsIDB4NzAyMywgMHgwMDAxLCAweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweGFjZmMsIDB4MDA0NiwKLQkweDAwODYsIDB4MDA5NiwgMHgwMGE2LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwKLQkweDA4MGMsIDB4M2JkOCwgMHgyMDAxLCAweDE5YTAsIDB4MjAwMywgMHgwMDAwLCAweDIwMjEsIDB4MDAwYSwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MTA0LCAweDAwMTYsIDB4NjBiYiwgMHgwMDAwLCAweDYwYmYsIDB4MzJlMSwKLQkweDYwYmYsIDB4MDAxMiwgMHgwODBjLCAweDNlNjYsIDB4MDgwYywgMHgzZTI1LCAweDAwZjYsIDB4MDBlNiwKLQkweDAwODYsIDB4Mjk0MCwgMHgyMDcxLCAweDE5ZTgsIDB4MjA3OSwgMHgwMDkwLCAweDAwZDYsIDB4MjA2OSwKLQkweDAwMDAsIDB4Njg4NCwgMHhkMGI0LCAweDAxNDAsIDB4MjAwMSwgMHgwMDM1LCAweDIwMDQsIDB4NzgwZSwKLQkweDIwMDEsIDB4MDAzNCwgMHgyMDA0LCAweDc4MGEsIDB4MDBkZSwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywKLQkweDQxZGIsIDB4MDA4ZSwgMHgwMGVlLCAweDAwZmUsIDB4MDgwYywgMHg0MGZkLCAweDA4MGMsIDB4NDAyYSwKLQkweDA1YjgsIDB4MjAwMSwgMHgwMjBiLCAweDIwMDQsIDB4OTA4NCwgMHgwMTQwLCAweDFkYjgsIDB4MDgwYywKLQkweDQyNGYsIDB4MDBmNiwgMHgyMDc5LCAweDAzMDAsIDB4NzhiYywgMHgwMGZlLCAweDkwOGMsIDB4MDA3MCwKLQkweDE1NjAsIDB4MjA3MSwgMHgwMjAwLCAweDcwMzcsIDB4MDAwMCwgMHg3MDUwLCAweDkwODQsIDB4ZmYwMCwKLQkweDkwODYsIDB4MzIwMCwgMHgxNTEwLCAweDcwMzcsIDB4MDAwMSwgMHg3MDUwLCAweDkwODQsIDB4ZmYwMCwKLQkweDkwODYsIDB4ZTEwMCwgMHgxMWQwLCAweDcwMzcsIDB4MDAwMCwgMHg3MDU0LCAweDcwMzcsIDB4MDAwMCwKLQkweDcxNWMsIDB4OTEwNiwgMHgxMTkwLCAweDIwMDEsIDB4MTgyMCwgMHgyMDA0LCAweDkxMDYsIDB4MTE2OCwKLQkweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDYwMjQsIDB4OTA4NCwgMHgxZTAwLCAweDAwY2UsIDB4MDEzOCwKLQkweDA4MGMsIDB4NDAzNCwgMHgwODBjLCAweDNlMjAsIDB4MDA1OCwgMHgwODBjLCAweDNlMjAsIDB4MDgwYywKLQkweDQxNzMsIDB4MDgwYywgMHg0MGYzLCAweDIwMDEsIDB4MDIwYiwgMHgyMDA0LCAweGQwZTQsIDB4MGRkOCwKLQkweDIwMDEsIDB4MDMyYSwgMHgyMDAzLCAweDAwMDQsIDB4MjA2MSwgMHgwMTAwLCAweDYwMjcsIDB4MDAwMiwKLQkweDAwMWUsIDB4NjEwNiwgMHgyMDExLCAweDAyMGQsIDB4MjAxMywgMHgwMDIwLCAweDYwYmIsIDB4MDAwMCwKLQkweDYwYmYsIDB4MDEwOCwgMHg2MGJmLCAweDAwMTIsIDB4MjAwMSwgMHgwMDA0LCAweDIwMGMsIDB4OTE4YywKLQkweGZmZmQsIDB4MjEwMiwgMHgwODBjLCAweDEzNTIsIDB4MjAwOSwgMHgwMDI4LCAweDA4MGMsIDB4MjIyMCwKLQkweDIwMDEsIDB4MDIyNywgMHgyMDBjLCAweDIxMDIsIDB4MDgwYywgMHhhZDE4LCAweDAwZmUsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDBjZSwgMHgwMGJlLCAweDAwYWUsIDB4MDA5ZSwgMHgwMDhlLCAweDAwNGUsIDB4MjAwMSwKLQkweDE5YTAsIDB4MjAwNCwgMHg5MDA1LCAweDExMTgsIDB4MDEyZSwgMHgwODA0LCAweDM2OGQsIDB4MDEyZSwKLQkweDIwMjEsIDB4NDAwYywgMHgwODA0LCAweDM2OGYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDA0NiwKLQkweDAwNTYsIDB4MDA3NiwgMHgwMDg2LCAweDAwOTYsIDB4MDBkNiwgMHgwMTU2LCAweDcwMTQsIDB4MjA0OCwKLQkweDcwMjAsIDB4MjBhOCwgMHg4MDAwLCAweDcwMjIsIDB4YTgwNCwgMHg5MDA1LCAweDA5MDQsIDB4M2Q5MCwKLQkweDIwNDgsIDB4MWYwNCwgMHgzZDQ0LCAweDcwNjgsIDB4MjA0MCwgMHhhMjhjLCAweGEzOTAsIDB4YTQ5NCwKLQkweGE1OTgsIDB4YTkzMCwgMHhhODA4LCAweGQwYjQsIDB4MTEyMCwgMHgyMDI5LCAweDAwMDAsIDB4MjAyMSwKLQkweDAwMDAsIDB4MDA5NiwgMHg3MDE0LCAweDIwNDgsIDB4YTg2NCwgMHgwMDllLCAweDkwODYsIDB4MDEwMywKLQkweDAxNzAsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwKLQkweDkwODAsIDB4MDAxYiwgMHgwODBjLCAweDRjOGEsIDB4NzAxZiwgMHgzZDM0LCAweDAwYjAsIDB4ODkwNiwKLQkweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAxYiwKLQkweDIxYTgsIDB4MjdlMCwgMHgyMDk4LCAweDI3ZTgsIDB4MjBhMCwgMHgwMDA2LCAweDA4MGMsIDB4MGZkNiwKLQkweDAwMGUsIDB4MDgwYywgMHg0YzhkLCAweDcwMWYsIDB4M2QzNCwgMHgwMTVlLCAweDAwZGUsIDB4MDA5ZSwKLQkweDAwOGUsIDB4MDA3ZSwgMHgwMDVlLCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDcwMTQsIDB4MjA0OCwgMHhhODY0LCAweDkwODYsIDB4MDEwMywgMHgxMTE4LCAweDcwMWYsIDB4M2RmNSwKLQkweDA0NTAsIDB4NzAxNCwgMHgyMDQ4LCAweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDIwMDksIDB4MDA3ZiwKLQkweDA4MGMsIDB4Njc0OSwgMHgwMTEwLCAweDkwMDYsIDB4MDAzMCwgMHhiODEzLCAweDAwZmYsIDB4YjgxNywKLQkweGZmZmQsIDB4MDgwYywgMHhkNDA5LCAweDAxNWUsIDB4MDBkZSwgMHgwMDllLCAweDAwOGUsIDB4MDA3ZSwKLQkweDAwNWUsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwOTA0LCAweDM2YmYsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwMDQ2LCAweDAwNTYsIDB4MDA3NiwgMHgwMDg2LCAweDAwOTYsIDB4MDBkNiwKLQkweDAxNTYsIDB4NzAxZiwgMHgzZGM3LCAweDcwMDcsIDB4MDAwMywgMHgwODA0LCAweDNkODUsIDB4YTgzMCwKLQkweDkwODYsIDB4MDEwMCwgMHgyMDIxLCAweDQwMGMsIDB4MDkwNCwgMHgzNjhmLCAweDAwNzYsIDB4YWQxMCwKLQkweGFjMGMsIDB4YWIyNCwgMHhhYTIwLCAweGE5MzAsIDB4YTgwOCwgMHhkMGI0LCAweDExMjAsIDB4MjAyOSwKLQkweDAwMDAsIDB4MjAyMSwgMHgwMDAwLCAweDg5MDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwYmMsIDB4MDAzZiwKLQkweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMWIsIDB4MjFhOCwgMHgyN2UwLCAweDIwOTgsIDB4MjdlOCwKLQkweDIwYTAsIDB4MDAwNiwgMHgwODBjLCAweDBmZDYsIDB4MDAwZSwgMHgwODBjLCAweDRjOGQsIDB4MDA3ZSwKLQkweDcwMWYsIDB4M2QzNCwgMHg3MDIzLCAweDAwMDEsIDB4MDAwNSwgMHgwODA0LCAweDM2OGQsIDB4MDE1NiwKLQkweDAwYzYsIDB4YTgxNCwgMHg5MDhhLCAweDAwMWUsIDB4MDIxOCwgMHhhODMzLCAweDAwMWUsIDB4MDAxMCwKLQkweGE4MzIsIDB4MDA3OCwgMHg4MWZmLCAweDAxNjgsIDB4MDAxNiwgMHgwODBjLCAweDRjNDEsIDB4MDAxZSwKLQkweDAxMzAsIDB4YTgwMCwgMHgyMDQwLCAweGEwMDgsIDB4YTgwYSwgMHgyMTAwLCAweDBjNTgsIDB4OTAwNiwKLQkweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDE1ZSwgMHgwMDA1LCAweDAwMDYsIDB4MDBmNiwKLQkweDIwNzksIDB4MDAwMCwgMHg3ODgwLCAweDkwODYsIDB4MDA0NCwgMHgwMGZlLCAweDAwMGUsIDB4MDAwNSwKLQkweDIwMDEsIDB4MTlhMCwgMHgyMDAzLCAweDAwMDEsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwKLQkweDIwNjEsIDB4MDIwMCwgMHgyMDAxLCAweDE5YWIsIDB4MjAwNCwgMHg2MDFhLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwMDEsIDB4MTlhYSwgMHgyMDA0LCAweDYwY2UsIDB4NjEwNCwgMHhjMWFjLCAweDYxMDYsIDB4MDgwYywKLQkweDRjNDEsIDB4YTgxMywgMHgwMDE5LCAweGE4MTcsIDB4MDAwMSwgMHgyOTAwLCAweGE4NWEsIDB4MjAwMSwKLQkweDAwMmUsIDB4MjAwNCwgMHhhODY2LCAweDIwMDEsIDB4MDAyZiwgMHgyMDA0LCAweGE4NmEsIDB4MjA2MSwKLQkweDAwOTAsIDB4MjA3OSwgMHgwMTAwLCAweDIwMDEsIDB4MTlhYSwgMHgyMDA0LCAweDYwMzYsIDB4MjAwOSwKLQkweDAwNDAsIDB4MDgwYywgMHgyMjIwLCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODQsIDB4ZmZmOCwKLQkweGE4NmUsIDB4NjAxYSwgMHhhODczLCAweDAwMDAsIDB4NjAxZiwgMHgwMDAwLCAweDc4Y2EsIDB4OTAwNiwKLQkweDYwMGEsIDB4NjAwZSwgMHgwMGNlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZTYsIDB4MDgwYywKLQkweDRjNDEsIDB4Mjk0MCwgMHhhMDEzLCAweDAwMTksIDB4YTAxNywgMHgwMDAxLCAweDI4MDAsIDB4YTA1YSwKLQkweDIwMDEsIDB4MDAzMCwgMHgyMDA0LCAweGE4NjYsIDB4MjAwMSwgMHgwMDMxLCAweDIwMDQsIDB4YTg2YSwKLQkweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODQsIDB4ZmZmOCwgMHhhODZlLCAweGE4NzMsIDB4MDAwMCwKLQkweDIwMDEsIDB4MDMyYSwgMHgyMDAzLCAweDAwMDQsIDB4MjAwMSwgMHgwMzAwLCAweDIwMDMsIDB4MDAwMCwKLQkweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwgMHgwMDA0LCAweDIwMGMsIDB4OTE4ZCwKLQkweDAwMDIsIDB4MjEwMiwgMHgwMGVlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4ODFmZiwKLQkweDAxNDgsIDB4MDgwYywgMHgyYTc3LCAweDExMzAsIDB4OTAwNiwgMHgwODBjLCAweDI5Y2EsIDB4OTAwNiwKLQkweDA4MGMsIDB4MjlhZCwgMHgyMDAxLCAweDE5OWYsIDB4MjAwMywgMHgwMDAwLCAweDc4ODQsIDB4OTA4NCwKLQkweDAwMDcsIDB4MDAwMiwgMHgzZWI1LCAweDNlYjYsIDB4M2ViNywgMHgzZWIyLCAweDNlYjIsIDB4M2ViMiwKLQkweDNlYjIsIDB4M2ViMiwgMHgwMTJlLCAweDA4MDQsIDB4MzZjMiwgMHgwY2UwLCAweDBjZDgsIDB4MDgwYywKLQkweDc3OWUsIDB4MTEyOCwgMHgwMTJlLCAweDIwMDksIDB4MDAxNiwgMHgwODA0LCAweDM2YmYsIDB4ODFmZiwKLQkweDAxMjgsIDB4MDEyZSwgMHgyMDIxLCAweDQwMGIsIDB4MDgwNCwgMHgzNjhmLCAweDIwMDEsIDB4MDE0MSwKLQkweDIwMDQsIDB4ZDBkYywgMHgwZGIwLCAweDA4MGMsIDB4YWNmYywgMHgwMDg2LCAweDAwOTYsIDB4MDBhNiwKLQkweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwgMHgwODBjLCAweDNiZDgsIDB4MjAwOSwKLQkweDAxMDEsIDB4MjEwYywgMHgwMDE2LCAweDdlYzgsIDB4N2RjYywgMHg5MDA2LCAweDIwNjgsIDB4MjA2MCwKLQkweDIwNTgsIDB4MDgwYywgMHg0MzJhLCAweDA4MGMsIDB4NDI3YSwgMHg5MDNlLCAweDI3MjAsIDB4MDBmNiwKLQkweDAwZTYsIDB4MDA4NiwgMHgyOTQwLCAweDIwNzEsIDB4MTllOCwgMHgyMDc5LCAweDAwOTAsIDB4MDBkNiwKLQkweDIwNjksIDB4MDAwMCwgMHg2ODg0LCAweGQwYjQsIDB4MDEyMCwgMHg2OGQ0LCAweDc4MGUsIDB4NjhkMCwKLQkweDc4MGEsIDB4MDBkZSwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHg0MWRiLCAweDA4MGMsIDB4MmE3ZiwKLQkweDA4MGMsIDB4MmE3ZiwgMHgwODBjLCAweDJhN2YsIDB4MDgwYywgMHgyYTdmLCAweDA4MGMsIDB4NDFkYiwKLQkweDAwOGUsIDB4MDBlZSwgMHgwMGZlLCAweDA4MGMsIDB4NDBmZCwgMHgyMDA5LCAweDljNDAsIDB4ODEwOSwKLQkweDExYjAsIDB4MDgwYywgMHg0MDM0LCAweDIwMDEsIDB4MDAwNCwgMHgyMDBjLCAweDkxOGMsIDB4ZmZmZCwKLQkweDIxMDIsIDB4MDAxZSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwYmUsIDB4MDBhZSwKLQkweDAwOWUsIDB4MDA4ZSwgMHgyMDA5LCAweDAwMTcsIDB4MDgwYywgMHgzNmJmLCAweDBjZjgsIDB4MjAwMSwKLQkweDAyMGIsIDB4MjAwNCwgMHg5MDg0LCAweDAxNDAsIDB4MWQxMCwgMHgwMGY2LCAweDIwNzksIDB4MDAwMCwKLQkweDc4ODQsIDB4MDBmZSwgMHhkMGJjLCAweDAxNzgsIDB4MjAwMSwgMHgwMjAxLCAweDIwMGMsIDB4ODFmZiwKLQkweDAxNTAsIDB4MDgwYywgMHg0MGRiLCAweDJkMDAsIDB4OWMwNSwgMHg5YjA1LCAweDAxMjAsIDB4MDgwYywKLQkweDQwMzQsIDB4MDgwNCwgMHgzZmRkLCAweDA4MGMsIDB4NDI0ZiwgMHgwODBjLCAweDQxNzMsIDB4MDgwYywKLQkweDQwYmUsIDB4MDgwYywgMHg0MGYzLCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDc4MjQsIDB4ZDBhYywKLQkweDAxMzAsIDB4OGI1OCwgMHgwODBjLCAweDQwMzQsIDB4MDBmZSwgMHgwODA0LCAweDNmZGQsIDB4MDBmZSwKLQkweDA4MGMsIDB4NDAyYSwgMHgxMTUwLCAweDhkNjgsIDB4MjAwMSwgMHgwMDMyLCAweDI2MDIsIDB4MjAwMSwKLQkweDAwMzMsIDB4MjUwMiwgMHgwODBjLCAweDQwMzQsIDB4MDA4MCwgMHg4N2ZmLCAweDAxMzgsIDB4MjAwMSwKLQkweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDE5MDgsIDB4ODczOSwgMHgwMDM4LCAweDIwMDEsIDB4MWE2ZSwKLQkweDIwMDQsIDB4OTA4NiwgMHgwMDAwLCAweDE5MDQsIDB4M2YyZCwgMHgyMDAxLCAweDAzMmYsIDB4MjAwMywKLQkweDAwZjYsIDB4ODYzMSwgMHgxMjA4LCAweDg1MjksIDB4MjUwMCwgMHg5NjA1LCAweDA5MDQsIDB4M2ZkZCwKLQkweDc4ODQsIDB4ZDBiYywgMHgwMTI4LCAweDJkMDAsIDB4OWMwNSwgMHg5YjA1LCAweDE5MDQsIDB4M2ZkZCwKLQkweGEwMTMsIDB4MDAxOSwgMHgyMDAxLCAweDAzMmEsIDB4MjAwMywgMHgwMDA0LCAweDc4ODQsIDB4ZDBhYywKLQkweDExNDgsIDB4MjAwMSwgMHgxYTZlLCAweDIwMDMsIDB4MDAwMywgMHgyMDAxLCAweDAzMmEsIDB4MjAwMywKLQkweDAwMDksIDB4MDAzMCwgMHhhMDE3LCAweDAwMDEsIDB4NzhiNCwgMHg5MDA1LCAweDAxMDgsIDB4YTAxNiwKLQkweDI4MDAsIDB4YTA1YSwgMHgyMDA5LCAweDAwNDAsIDB4MDgwYywgMHgyMjIwLCAweDI5MDAsIDB4YTg1YSwKLQkweGE4MTMsIDB4MDAxOSwgMHg3ODg0LCAweGQwYTQsIDB4MTE4MCwgMHhhODE3LCAweDAwMDAsIDB4MDBjNiwKLQkweDIwYTksIDB4MDAwNCwgMHgyMDYxLCAweDAwOTAsIDB4NjAyYiwgMHgwMDA4LCAweDIwMDEsIDB4MDIwMywKLQkweDIwMDQsIDB4MWYwNCwgMHgzZmI0LCAweDAwY2UsIDB4MDAzMCwgMHhhODE3LCAweDAwMDEsIDB4NzhiMCwKLQkweDkwMDUsIDB4MDEwOCwgMHhhODE2LCAweDAwZjYsIDB4MDBjNiwgMHgyMDc5LCAweDAxMDAsIDB4MjA2MSwKLQkweDAwOTAsIDB4NzgyNywgMHgwMDAyLCAweDIwMDEsIDB4MDAyYSwgMHgyMDA0LCAweDkwODQsIDB4ZmZmOCwKLQkweDYwMWEsIDB4MDAwNiwgMHgyMDAxLCAweDAwMmIsIDB4MjAwNCwgMHg2MDFlLCAweDc4YzYsIDB4MDAwZSwKLQkweDc4Y2EsIDB4MDBjZSwgMHgwMGZlLCAweDA4MDQsIDB4M2VlNywgMHgwMDFlLCAweDAwYzYsIDB4MjAwMSwKLQkweDAzMmEsIDB4MjAwMywgMHgwMDA0LCAweDIwNjEsIDB4MDEwMCwgMHg2MDI3LCAweDAwMDIsIDB4NjEwNiwKLQkweDIwMTEsIDB4MDIwZCwgMHgyMDEzLCAweDAwMjAsIDB4MjAwMSwgMHgwMDA0LCAweDIwMGMsIDB4OTE4YywKLQkweGZmZmQsIDB4MjEwMiwgMHgwODBjLCAweDEzNTIsIDB4Nzg4NCwgMHg5MDg0LCAweDAwMDMsIDB4OTA4NiwKLQkweDAwMDIsIDB4MDFiMCwgMHgyMDA5LCAweDAwMjgsIDB4MDgwYywgMHgyMjIwLCAweDIwMDEsIDB4MDIyNywKLQkweDIwMGMsIDB4MjEwMiwgMHg2MDUwLCAweDkwODQsIDB4YjdmZiwgMHgwODBjLCAweDJiMjksIDB4NjA1MiwKLQkweDYwMmYsIDB4MDAwMCwgMHg2MDRiLCAweGY3ZjcsIDB4NjA0MywgMHgwMDkwLCAweDYwNDMsIDB4MDAxMCwKLQkweDA4MGMsIDB4YWQxOCwgMHgwMGNlLCAweDJkMDgsIDB4MmMxMCwgMHgyYjE4LCAweDJiMDAsIDB4OWMwNSwKLQkweDlkMDUsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMGJlLCAweDAwYWUsIDB4MDA5ZSwKLQkweDAwOGUsIDB4MTExOCwgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZCwgMHgwMTJlLCAweDIwMjEsIDB4NDAwYywKLQkweDA4MDQsIDB4MzY4ZiwgMHg5MDg1LCAweDAwMDEsIDB4MWQwNCwgMHg0MDMzLCAweDIwOTEsIDB4NjAwMCwKLQkweDg0MjAsIDB4OTQ4NiwgMHgwMDY0LCAweDAwMDUsIDB4MjAwMSwgMHgwMTA1LCAweDIwMDMsIDB4MDAxMCwKLQkweDIwMDEsIDB4MDMyYSwgMHgyMDAzLCAweDAwMDQsIDB4MjAwMSwgMHgxYTZlLCAweDIwMDMsIDB4MDAwMCwKLQkweDAwNzEsIDB4MjAwOSwgMHgwMDQ4LCAweDA4MGMsIDB4MjIyMCwgMHgyMDAxLCAweDAyMjcsIDB4MjAyNCwKLQkweDI0MDIsIDB4MjAwMSwgMHgwMTA5LCAweDIwMDMsIDB4NDAwMCwgMHg5MDI2LCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDcwNTQsIDB4OTA4NiwgMHgwMDAwLCAweDA1MjAsIDB4MjA3OSwKLQkweDAwOTAsIDB4MjAwOSwgMHgwMjA2LCAweDIxMDQsIDB4MjAwOSwgMHgwMjAzLCAweDIxMGMsIDB4OTEwNiwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDQwLCAweDA4MGMsIDB4MjIyMCwgMHg3ODJjLCAweGQwZmMsIDB4MGQ4OCwKLQkweDA4MGMsIDB4NDI0ZiwgMHg3MDU0LCAweDkwODYsIDB4MDAwMCwgMHgxZDU4LCAweDc4MmIsIDB4MDAwNCwKLQkweDc4MmMsIDB4ZDBhYywgMHgxZGU4LCAweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4NzgyYiwKLQkweDAwMDIsIDB4NzA1NywgMHgwMDAwLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwKLQkweDAxMDAsIDB4MjAwMSwgMHgxODE4LCAweDIwMGMsIDB4NzkzMiwgMHg3OTM2LCAweDA4MGMsIDB4MjZkNSwKLQkweDA4MGMsIDB4MmFmNiwgMHgwODBjLCAweDJiMjksIDB4Nzg0YiwgMHhmN2Y3LCAweDc4NDMsIDB4MDA5MCwKLQkweDc4NDMsIDB4MDAxMCwgMHg3ODUwLCAweGMwZTUsIDB4Nzg1MiwgMHgyMDE5LCAweDYxYTgsIDB4NzgyMCwKLQkweGQwOWMsIDB4MDExMCwgMHg4MzE5LCAweDFkZDgsIDB4Nzg1MCwgMHhjMGU0LCAweDc4NTIsIDB4MjAxMSwKLQkweDAwNDgsIDB4MDgwYywgMHgyYWQzLCAweDc4NDMsIDB4MDA0MCwgMHgyMDE5LCAweDAxZjQsIDB4YTAwMSwKLQkweGEwMDEsIDB4ODMxOSwgMHgxZGUwLCAweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJhOTksIDB4MjAxMSwKLQkweDAwMjAsIDB4MDgwYywgMHgyYWQzLCAweDc4NDMsIDB4MDAwMCwgMHg5MDA2LCAweDA4MGMsIDB4MmE5OSwKLQkweDIwMTEsIDB4MDA0OCwgMHgwODBjLCAweDJhZDMsIDB4MDBmZSwgMHgwMDA1LCAweDc4ODQsIDB4ZDBhYywKLQkweDExYzgsIDB4MDBmNiwgMHgwMGU2LCAweDIwNzEsIDB4MWE2ZSwgMHgyMDc5LCAweDAzMjAsIDB4MjAwMSwKLQkweDAyMDEsIDB4MjAwNCwgMHg5MDA1LCAweDAxNjAsIDB4NzAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MTE0MCwKLQkweDAwNTEsIDB4ZDBiYywgMHgwMTA4LCAweDg3MzgsIDB4NzAwMywgMHgwMDAzLCAweDc4MmIsIDB4MDAxOSwKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMzAwLCAweDc4YmMsIDB4MDBmZSwKLQkweDkwOGMsIDB4MDA3MCwgMHgwMTc4LCAweDIwMDksIDB4MDAzMiwgMHgyNjBhLCAweDIwMDksIDB4MDAzMywKLQkweDI1MGEsIDB4ZDBiNCwgMHgwMTA4LCAweDhjNjAsIDB4ZDBhYywgMHgwMTA4LCAweDhkNjgsIDB4ZDBhNCwKLQkweDAxMDgsIDB4OGI1OCwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc4MWMsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NzgzNywgMHgwMDUwLCAweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDEwMCwKLQkweDIwMDEsIDB4MTlhYiwgMHgyMDA0LCAweDcwZTIsIDB4MDgwYywgMHgzZTE2LCAweDExODgsIDB4MjAwMSwKLQkweDE4MjAsIDB4MjAwNCwgMHgyMDA5LCAweDE4MWYsIDB4MjEwYywgMHg5MThjLCAweDAwZmYsIDB4NzA2ZSwKLQkweDcxNmEsIDB4NzA2NiwgMHg5MThkLCAweDMyMDAsIDB4NzE2MiwgMHg3MDczLCAweGUxMDksIDB4MDA4MCwKLQkweDcwMmMsIDB4OTA4NSwgMHgwMDAyLCAweDcwMmUsIDB4MjAwOSwgMHgxODE4LCAweDIxMGMsIDB4NzE2ZSwKLQkweDcwNjMsIDB4MDEwMCwgMHg3MTY2LCAweDcxOWUsIDB4NzA2YiwgMHgwMDAwLCAweDcwNzMsIDB4MDgwOSwKLQkweDcwNzcsIDB4MDAwOCwgMHg3MDc4LCAweDkwODAsIDB4MDEwMCwgMHg3MDdhLCAweDcwODAsIDB4ODAwMCwKLQkweDcwODIsIDB4NzA4NywgMHhhYWFhLCAweDkwMDYsIDB4NzA4YSwgMHg3MDhlLCAweDcwN2UsIDB4NzBkNiwKLQkweDcwYWIsIDB4MDAzNiwgMHg3MGFmLCAweDk1ZDUsIDB4NzAxNCwgMHg5MDg0LCAweDE5ODQsIDB4OTA4NSwKLQkweDAwOTIsIDB4NzAxNiwgMHgwODBjLCAweDQyNGYsIDB4MDBmNiwgMHgyMDcxLCAweDFhNmUsIDB4MjA3OSwKLQkweDAzMjAsIDB4MDBkNiwgMHgyMDY5LCAweDAwMDAsIDB4Njg4NCwgMHhkMGI0LCAweDAxMjAsIDB4Njg5YywKLQkweDc4MGUsIDB4Njg5OCwgMHg3ODBhLCAweDAwZGUsIDB4MDgwYywgMHgzZTE2LCAweDAxNDAsIDB4MjAwMSwKLQkweDE5OWYsIDB4MjAwYywgMHgyMDAzLCAweDAwMDEsIDB4OTE4ZSwgMHgwMDAxLCAweDAxMjAsIDB4MjAwOSwKLQkweDAzZTgsIDB4ODEwOSwgMHgxZGYwLCAweDc5MmMsIDB4ZDFmYywgMHgwMTEwLCAweDc4MmIsIDB4MDAwNCwKLQkweDIwMTEsIDB4MDAxMSwgMHgwODBjLCAweDQxZGIsIDB4MjAxMSwgMHgwMDAxLCAweDA4MGMsIDB4NDFkYiwKLQkweDAwZmUsIDB4MDBlZSwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgyMDcxLCAweDFhNmUsIDB4MjA3OSwKLQkweDAzMjAsIDB4NzkyYywgMHhkMWZjLCAweDA5MDQsIDB4NDFkOCwgMHg3ODJiLCAweDAwMDIsIDB4OTAyNiwKLQkweGQxOWMsIDB4MTkwNCwgMHg0MWQ0LCAweDcwMDAsIDB4MDAwMiwgMHg0MWQ4LCAweDQxODksIDB4NDFiOSwKLQkweDQxZDQsIDB4ZDFiYywgMHgxMTcwLCAweGQxZGMsIDB4MTE5MCwgMHg4MDAxLCAweDcwMDIsIDB4MjAxMSwKLQkweDAwMDEsIDB4MDgwYywgMHg0MWRiLCAweDA5MDQsIDB4NDFkOCwgMHgwODBjLCAweDQxZGIsIDB4MDgwNCwKLQkweDQxZDgsIDB4MDBmNiwgMHgyMDc5LCAweDAzMDAsIDB4NzhiZiwgMHgwMDAwLCAweDAwZmUsIDB4NzgxMCwKLQkweDc5MTQsIDB4NzgyYiwgMHgwMDA0LCAweDc4MTIsIDB4NzkxNiwgMHgyMDAxLCAweDAyMDEsIDB4MjAwYywKLQkweDgxZmYsIDB4MGRlOCwgMHgwODBjLCAweDQwZGIsIDB4MjAwOSwgMHgwMDAxLCAweDAwZjYsIDB4MjA3OSwKLQkweDAzMDAsIDB4NzhiOCwgMHgwMGZlLCAweGQwZWMsIDB4MDExMCwgMHgyMDA5LCAweDAwMTEsIDB4NzkyYSwKLQkweDAwZjgsIDB4ODAwMSwgMHg3MDAyLCAweDkxODQsIDB4MDg4MCwgMHgxMTQwLCAweDc4MmMsIDB4ZDBmYywKLQkweDE5MDQsIDB4NDE3ZCwgMHgyMDExLCAweDAwMDEsIDB4MDBiMSwgMHgwMDkwLCAweGEwMTAsIDB4OTA5MiwKLQkweDAwMDQsIDB4OTA4NiwgMHgwMDE1LCAweDExMjAsIDB4YTAwMCwgMHhhMDVhLCAweDIwMTEsIDB4MDAzMSwKLQkweGEyMTIsIDB4ZDFkYywgMHgxOTYwLCAweDA4MjgsIDB4NzgyYiwgMHgwMDA0LCAweDcwMDMsIDB4MDAwMCwKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweGEwMTQsIDB4OTAwNSwgMHgwNTUwLCAweDgwMDEsIDB4MDAzNiwKLQkweDAwOTYsIDB4YTAxNiwgMHhhMDU4LCAweDIwNDgsIDB4YTAxMCwgMHgyMDA5LCAweDAwMzEsIDB4OTExYSwKLQkweDgzMWMsIDB4ODMxYywgMHg5MzhhLCAweDAwMDcsIDB4MWEwYywgMHgwZDg1LCAweDkzOTgsIDB4NDIwOSwKLQkweDIzMWQsIDB4MDgzZiwgMHg5MDgwLCAweDAwMDQsIDB4N2EyYSwgMHg3MTAwLCAweDgxMDgsIDB4NzEwMiwKLQkweDAwOWUsIDB4MDAzZSwgMHg5MDhhLCAweDAwMzUsIDB4MTE0MCwgMHgwMDk2LCAweGEwNTgsIDB4MjA0OCwKLQkweGE4MDQsIDB4YTA1YSwgMHgyMDAxLCAweDAwMTksIDB4MDA5ZSwgMHhhMDEyLCAweDkwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4NDI0NiwgMHg0MjNkLCAweDQyMzQsIDB4NDIyYiwgMHg0MjIyLCAweDQyMTksIDB4NDIxMCwKLQkweGE5NjQsIDB4NzkwMiwgMHhhOTY4LCAweDc5MDYsIDB4YTk2YywgMHg3OTEyLCAweGE5NzAsIDB4NzkxNiwKLQkweDAwMDUsIDB4YTk3NCwgMHg3OTAyLCAweGE5NzgsIDB4NzkwNiwgMHhhOTdjLCAweDc5MTIsIDB4YTk4MCwKLQkweDc5MTYsIDB4MDAwNSwgMHhhOTg0LCAweDc5MDIsIDB4YTk4OCwgMHg3OTA2LCAweGE5OGMsIDB4NzkxMiwKLQkweGE5OTAsIDB4NzkxNiwgMHgwMDA1LCAweGE5OTQsIDB4NzkwMiwgMHhhOTk4LCAweDc5MDYsIDB4YTk5YywKLQkweDc5MTIsIDB4YTlhMCwgMHg3OTE2LCAweDAwMDUsIDB4YTlhNCwgMHg3OTAyLCAweGE5YTgsIDB4NzkwNiwKLQkweGE5YWMsIDB4NzkxMiwgMHhhOWIwLCAweDc5MTYsIDB4MDAwNSwgMHhhOWI0LCAweDc5MDIsIDB4YTliOCwKLQkweDc5MDYsIDB4YTliYywgMHg3OTEyLCAweGE5YzAsIDB4NzkxNiwgMHgwMDA1LCAweGE5YzQsIDB4NzkwMiwKLQkweGE5YzgsIDB4NzkwNiwgMHhhOWNjLCAweDc5MTIsIDB4YTlkMCwgMHg3OTE2LCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MDA4NiwgMHgyMDcxLCAweDE5ZTgsIDB4MjA3OSwgMHgwMDkwLCAweDc5MmMsIDB4ZDFmYywKLQkweDAxZTgsIDB4NzgyYiwgMHgwMDAyLCAweDI5NDAsIDB4OTAyNiwgMHg3MDU0LCAweDAwMDIsIDB4NDI3NiwKLQkweDQyNjIsIDB4NDI2ZCwgMHg4MDAxLCAweDcwNTYsIDB4ZDE5YywgMHgxMTgwLCAweDIwMTEsIDB4MDAwMSwKLQkweDA4MGMsIDB4NDFkYiwgMHgxOTBjLCAweDQxZGIsIDB4MDA0OCwgMHg4MDAxLCAweDcwNTYsIDB4NzgyYywKLQkweGQwZmMsIDB4MWQzOCwgMHgyMDExLCAweDAwMDEsIDB4MDgwYywgMHg0MWRiLCAweDAwOGUsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBjNiwgMHgwMDg2LCAweDIwNjEsIDB4MDIwMCwKLQkweDIwMDEsIDB4MTlhYiwgMHgyMDA0LCAweDYwMWEsIDB4MjA2MSwgMHgwMTAwLCAweDIwMDEsIDB4MTlhYSwKLQkweDIwMDQsIDB4NjBjZSwgMHg2MTA0LCAweGMxYWMsIDB4NjEwNiwgMHgyMDAxLCAweDAwMmMsIDB4MjAwNCwKLQkweDkwMDUsIDB4MDUyMCwgMHgyMDM4LCAweDIwMDEsIDB4MDAyZSwgMHgyMDI0LCAweDIwMDEsIDB4MDAyZiwKLQkweDIwMWMsIDB4MDgwYywgMHg0YzQxLCAweGE4MTMsIDB4MDAxOSwgMHhhZjE2LCAweDI5MDAsIDB4YTg1YSwKLQkweDk3OGEsIDB4MDAwNywgMHgwMjIwLCAweDIxMzgsIDB4MjAwOSwgMHgwMDA3LCAweDAwMTAsIDB4MjcwOCwKLQkweDkwM2UsIDB4MDA5NiwgMHhhODU4LCAweDIwNDgsIDB4YTg1YywgMHg5MDgwLCAweDAwMTksIDB4MDA5ZSwKLQkweDA4MGMsIDB4NDJmMiwgMHgxZDY4LCAweDI5MDAsIDB4YTg1YSwgMHgwMGQwLCAweDA4MGMsIDB4NGM0MSwKLQkweGE4MTMsIDB4MDAxOSwgMHhhODE3LCAweDAwMDEsIDB4MjkwMCwgMHhhODVhLCAweDIwMDEsIDB4MDAyZSwKLQkweDIwMDQsIDB4YTg2NiwgMHgyMDAxLCAweDAwMmYsIDB4MjAwNCwgMHhhODZhLCAweDIwMDEsIDB4MDAyYSwKLQkweDIwMDQsIDB4OTA4NCwgMHhmZmY4LCAweGE4NmUsIDB4MjAwMSwgMHgwMDJiLCAweDIwMDQsIDB4YTg3MiwKLQkweDIwNjEsIDB4MDA5MCwgMHgyMDc5LCAweDAxMDAsIDB4MjAwMSwgMHgxOWFhLCAweDIwMDQsIDB4NjAzNiwKLQkweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4MjAwMSwgMHgwMDJhLCAweDIwMDQsIDB4OTA4NCwKLQkweGZmZjgsIDB4NjAxYSwgMHgwMDA2LCAweDIwMDEsIDB4MDAyYiwgMHgyMDA0LCAweDYwMWUsIDB4NzhjNiwKLQkweDAwMGUsIDB4NzhjYSwgMHg5MDA2LCAweDYwMGEsIDB4NjAwZSwgMHgwMDhlLCAweDAwY2UsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MDA4MCwgMHhhYTYwLCAweDIyZTgsIDB4MjBhMCwKLQkweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAwODgsIDB4NzAyYiwgMHgwMDI2LCAweDc0MDIsIDB4NzMwNiwKLQkweDkwMDYsIDB4NzAwYSwgMHg3MDBlLCAweDgxMGIsIDB4ODEwYiwgMHgyMWE4LCAweDgxMGIsIDB4NzExMiwKLQkweDcwMmIsIDB4MDA0MSwgMHg3MDJjLCAweGQwZmMsIDB4MGRlOCwgMHg3MDJiLCAweDAwMDIsIDB4NzAyYiwKLQkweDAwNDAsIDB4NDAwNSwgMHg3NDAwLCAweDczMDQsIDB4ODdmZiwgMHgwMTkwLCAweDAwODYsIDB4MDA5NiwKLQkweDI5NDAsIDB4MDA4NiwgMHgwODBjLCAweDRjNDEsIDB4MDA4ZSwgMHhhMDU4LCAweDAwYTYsIDB4MjA1MCwKLQkweDI5MDAsIDB4YjAwNiwgMHhhMDVhLCAweDAwYWUsIDB4MDA5ZSwgMHgwMDhlLCAweDkwODUsIDB4MDAwMSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDIwMDEsIDB4MDAyZCwgMHgyMDA0LCAweDkwMDUsIDB4MDUyOCwKLQkweDIwMzgsIDB4MjAwMSwgMHgwMDMwLCAweDIwMjQsIDB4MjAwMSwgMHgwMDMxLCAweDIwMWMsIDB4MDgwYywKLQkweDRjNDEsIDB4Mjk0MCwgMHhhODEzLCAweDAwMTksIDB4YWYxNiwgMHgyOTAwLCAweGE4NWEsIDB4OTc4YSwKLQkweDAwMDcsIDB4MDIyMCwgMHgyMTM4LCAweDIwMDksIDB4MDAwNywgMHgwMDEwLCAweDI3MDgsIDB4OTAzZSwKLQkweDAwOTYsIDB4YTg1OCwgMHgyMDQ4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDAwOWUsIDB4MDgwYywKLQkweDQyZjIsIDB4MWQ2OCwgMHgyOTAwLCAweGE4NWEsIDB4MDBkOCwgMHgwODBjLCAweDRjNDEsIDB4Mjk0MCwKLQkweGEwMTMsIDB4MDAxOSwgMHhhMDE3LCAweDAwMDEsIDB4MjgwMCwgMHhhMDVhLCAweDIwMDEsIDB4MDAzMCwKLQkweDIwMDQsIDB4YTA2NiwgMHgyMDAxLCAweDAwMzEsIDB4MjAwNCwgMHhhMDZhLCAweDIwMDEsIDB4MDAyYSwKLQkweDIwMDQsIDB4OTA4NCwgMHhmZmY4LCAweGEwNmUsIDB4MjAwMSwgMHgwMDJiLCAweDIwMDQsIDB4YTA3MiwKLQkweDIwMDEsIDB4MDMyYSwgMHgyMDAzLCAweDAwMDQsIDB4Nzg4NCwgMHhkMGFjLCAweDExODAsIDB4MjAwMSwKLQkweDAxMDEsIDB4MjAwYywgMHg5MThkLCAweDAyMDAsIDB4MjEwMiwgMHhhMDE3LCAweDAwMDAsIDB4MjAwMSwKLQkweDFhNmUsIDB4MjAwMywgMHgwMDAzLCAweDIwMDEsIDB4MDMyYSwgMHgyMDAzLCAweDAwMDksIDB4MjAwMSwKLQkweDAzMDAsIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAwMDQsIDB4MjAwYywgMHg5MThkLCAweDAwMDIsIDB4MjEwMiwgMHgwMGVlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMGE5LCAweDAwMDcsIDB4MjBhMSwgMHgxODQwLCAweDIwZTksIDB4MDAwMSwKLQkweDkwMDYsIDB4NDAwNCwgMHgyMGE5LCAweDAwMTQsIDB4MjBhMSwgMHhmZmVjLCAweDIwZTksIDB4MDAwMCwKLQkweDkwMDYsIDB4NDAwNCwgMHgyMDA5LCAweDAxM2MsIDB4MjAwYSwgMHgwMTJlLCAweDc4ODAsIDB4OTA4NiwKLQkweDAwNTIsIDB4MDEwOCwgMHgwMDA1LCAweDA4MDQsIDB4MzY4ZCwgMHg3ZDk4LCAweDdjOWMsIDB4MDgwNCwKLQkweDM3OTEsIDB4MDgwYywgMHg3NzllLCAweDE5MGMsIDB4NjE2MiwgMHg2MDQwLCAweDkwODQsIDB4MDAyMCwKLQkweDA5YjEsIDB4MjA2OSwgMHgxODQ3LCAweDJkMDAsIDB4MjAwOSwgMHgwMDMwLCAweDdhOGMsIDB4N2I4OCwKLQkweDdjOWMsIDB4N2Q5OCwgMHgyMDM5LCAweDAwMDEsIDB4MDgwYywgMHg0YzhhLCAweDcwMWYsIDB4NDNkMSwKLQkweDAwMDUsIDB4MDgwYywgMHg1ODRmLCAweDExMzAsIDB4M2IwMCwgMHgzYTA4LCAweGMxOTQsIDB4YzA5NSwKLQkweDIwZDgsIDB4MjFkMCwgMHgyMDY5LCAweDE4NDcsIDB4NjgwMCwgMHg5MDA1LCAweDA5MDQsIDB4MzZjMiwKLQkweDIwMDEsIDB4MTgwZCwgMHgyMDA0LCAweGQwOGMsIDB4NjgwNCwgMHgwMTE4LCAweGMwYTQsIDB4YzBhYywKLQkweDY4MDYsIDB4ZDBhYywgMHgwMTE4LCAweGQwYTQsIDB4MDkwNCwgMHgzNmMyLCAweGQwOTQsIDB4MDBjNiwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MTA0LCAweDAxMzgsIDB4NjIwMCwgMHg5MjkyLCAweDAwMDUsIDB4MDIxOCwKLQkweDkxOGMsIDB4ZmZkZiwgMHgwMDEwLCAweDkxOGQsIDB4MDAyMCwgMHg2MTA2LCAweDAwY2UsIDB4ZDA4YywKLQkweDAwYzYsIDB4MjA2MSwgMHgwMTAwLCAweDYxMDQsIDB4MDExOCwgMHg5MThkLCAweDAwMTAsIDB4MDAxMCwKLQkweDkxOGMsIDB4ZmZlZiwgMHg2MTA2LCAweDAwY2UsIDB4ZDA4NCwgMHgwMTU4LCAweDZhMjgsIDB4OTI4YSwKLQkweDAwN2YsIDB4MWEwNCwgMHgzNmMyLCAweDkyODgsIDB4MzQ4ZSwgMHgyMTBkLCAweDkxOGMsIDB4MDBmZiwKLQkweDYxNjYsIDB4ZDBkYywgMHgwMTMwLCAweDY4MjgsIDB4OTA4YSwgMHgwMDdmLCAweDFhMDQsIDB4MzZjMiwKLQkweDYwNWUsIDB4Njg4OCwgMHg5MDg0LCAweDAwMzAsIDB4ODAwNCwgMHg4MDA0LCAweDgwMDQsIDB4ODAwNCwKLQkweDAwMDYsIDB4MjAwOSwgMHgxOWIyLCAweDkwODAsIDB4MjdkMCwgMHgyMDA1LCAweDIwMGEsIDB4MjAwOCwKLQkweDIwMDEsIDB4MDAxOCwgMHgwODBjLCAweGFjZWQsIDB4MjAwOSwgMHgwMzkwLCAweDIwMGIsIDB4MDQwMCwKLQkweDAwMGUsIDB4MjAwOSwgMHgxOWIzLCAweDkwODAsIDB4MjdkNCwgMHgyMDA1LCAweDIwMGEsIDB4NjgwOCwKLQkweDkwOGEsIDB4MDEwMCwgMHgwYTA0LCAweDM2YzIsIDB4OTA4YSwgMHgwODQxLCAweDFhMDQsIDB4MzZjMiwKLQkweDkwODQsIDB4MDAwNywgMHgxOTA0LCAweDM2YzIsIDB4NjgwYywgMHg5MDA1LCAweDA5MDQsIDB4MzZjMiwKLQkweDY4MTAsIDB4OTAwNSwgMHgwOTA0LCAweDM2YzIsIDB4Njg0OCwgMHg2OTQwLCAweDkxMGEsIDB4MWEwNCwKLQkweDM2YzIsIDB4ODAwMSwgMHgwOTA0LCAweDM2YzIsIDB4Njg0YywgMHg2OTQ0LCAweDkxMGEsIDB4MWEwNCwKLQkweDM2YzIsIDB4ODAwMSwgMHgwOTA0LCAweDM2YzIsIDB4NjgxNCwgMHg5MDhjLCAweDAwZmYsIDB4NjE0ZSwKLQkweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDYwNTIsIDB4MDgwYywgMHg3YWU3LCAweDA4MGMsIDB4NmNmYywKLQkweDA4MGMsIDB4NmQ2NiwgMHg2ODA4LCAweDYwMmEsIDB4MDgwYywgMHgyMTkyLCAweDIwMDksIDB4MDE3MCwKLQkweDIwMGIsIDB4MDA4MCwgMHhhMDAxLCAweGEwMDEsIDB4MjAwYiwgMHgwMDAwLCAweDAwMzYsIDB4NmIwOCwKLQkweDA4MGMsIDB4MjcyZiwgMHgwMDNlLCAweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDE5MDQsIDB4NDU2ZCwKLQkweDY4MTgsIDB4NjkxYywgMHg2YTIwLCAweDZiMjQsIDB4ODAwNywgMHg4MTBmLCAweDgyMTcsIDB4ODMxZiwKLQkweDYwMTYsIDB4NjExYSwgMHg2MjFlLCAweDYzMjIsIDB4NmMwNCwgMHhkNGY0LCAweDAxNDgsIDB4NjgzMCwKLQkweDY5MzQsIDB4NmEzOCwgMHg2YjNjLCAweDgwMDcsIDB4ODEwZiwgMHg4MjE3LCAweDgzMWYsIDB4MDAxMCwKLQkweDkwODQsIDB4ZjBmZiwgMHg2MDA2LCAweDYxMGEsIDB4NjIwZSwgMHg2MzEyLCAweDgwMDcsIDB4ODEwZiwKLQkweDgyMTcsIDB4ODMxZiwgMHgyMGE5LCAweDAwMDQsIDB4MjBhMSwgMHgxOWI0LCAweDIwZTksIDB4MDAwMSwKLQkweDQwMDEsIDB4MjBhOSwgMHgwMDA0LCAweDIwYTEsIDB4MTljZSwgMHgyMGU5LCAweDAwMDEsIDB4NDAwMSwKLQkweDA4MGMsIDB4OGIyNiwgMHgwMGM2LCAweDkwMGUsIDB4MjBhOSwgMHgwMDAxLCAweDZiNzAsIDB4ZDM4NCwKLQkweDAxYzgsIDB4MDAyMCwgMHg4MzlkLCAweDEyYjAsIDB4MzUwOCwgMHg4MTA5LCAweDA4MGMsIDB4ODBmZSwKLQkweDY4NzgsIDB4NjAxNiwgMHg2ODc0LCAweDIwMDgsIDB4OTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4NjAwYSwKLQkweDkxODQsIDB4MDBmZiwgMHg2MDA2LCAweDgxMDgsIDB4MTExOCwgMHg2MDAzLCAweDAwMDMsIDB4MDAxMCwKLQkweDYwMDMsIDB4MDAwMSwgMHgxZjA0LCAweDQ0YzIsIDB4MDBjZSwgMHgwMGM2LCAweDIwNjEsIDB4MTk5YywKLQkweDIwMDEsIDB4MTgwZCwgMHgyMDA0LCAweGQwOGMsIDB4MTFhOCwgMHg2YTg4LCAweDkyODQsIDB4YzAwMCwKLQkweDIwMTAsIDB4OTI4NiwgMHgwMDAwLCAweDExNTgsIDB4MjA2MywgMHgwMDAwLCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MGMsIDB4MjljYSwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyOWFkLCAweDAwODgsIDB4OTI4NiwKLQkweDQwMDAsIDB4MTE0OCwgMHgyMDYzLCAweDAwMDEsIDB4OTAwNiwgMHgwODBjLCAweDI5Y2EsIDB4OTAwNiwKLQkweDA4MGMsIDB4MjlhZCwgMHgwMDI4LCAweDkyODYsIDB4ODAwMCwgMHgxZDMwLCAweDIwNjMsIDB4MDAwMiwKLQkweDAwY2UsIDB4MDBlNiwgMHgyYzcwLCAweDA4MGMsIDB4MGVkMywgMHgwMGVlLCAweDA4MGMsIDB4MmFmNiwKLQkweDA4MGMsIDB4MmIyOSwgMHg2ODg4LCAweGQwZWMsIDB4MDEzMCwgMHgyMDExLCAweDAxMTQsIDB4MjIwNCwKLQkweDkwODUsIDB4MDE4MCwgMHgyMDEyLCAweDZhODAsIDB4OTI4NCwgMHgwMDMwLCAweDkwODYsIDB4MDAzMCwKLQkweDExMjgsIDB4OTI5NCwgMHhmZmNmLCAweDkyOTUsIDB4MDAyMCwgMHg2YTgyLCAweDIwMDEsIDB4MTk3YywKLQkweDZhODAsIDB4OTI5NCwgMHgwMDMwLCAweDkyOGUsIDB4MDAwMCwgMHgwMTcwLCAweDkyOGUsIDB4MDAxMCwKLQkweDAxMTgsIDB4OTI4ZSwgMHgwMDIwLCAweDAxNDAsIDB4MjAwMywgMHhhYWFhLCAweDA4MGMsIDB4MjdhNCwKLQkweDIwMDEsIDB4MTk2ZCwgMHgyMTAyLCAweDAwMDgsIDB4MjEwMiwgMHgwMGM2LCAweDIwNjEsIDB4MDEwMCwKLQkweDYwMmYsIDB4MDA0MCwgMHg2MDJmLCAweDAwMDAsIDB4MDBjZSwgMHgwODBjLCAweDc3OWUsIDB4MDEyOCwKLQkweDA4MGMsIDB4NTEyOCwgMHgwMTEwLCAweDA4MGMsIDB4MjZmNSwgMHg2MGQ0LCAweDkwMDUsIDB4MDFjMCwKLQkweDYwMDMsIDB4MDAwMSwgMHgyMDA5LCAweDQ1NTUsIDB4MDBlMCwgMHgwODBjLCAweDc3OWUsIDB4MTE2OCwKLQkweDIwMTEsIDB4NzYxMiwgMHgwODBjLCAweDg5OTMsIDB4MjAxMSwgMHg3NjA1LCAweDA4MGMsIDB4OGE5ZiwKLQkweDA4MGMsIDB4N2FiYiwgMHgwODBjLCAweDc2Y2QsIDB4MDA0MCwgMHgwODBjLCAweDYwNTgsIDB4MDAyOCwKLQkweDYwMDMsIDB4MDAwNCwgMHgyMDA5LCAweDQ1NmQsIDB4MDAyMCwgMHgwODBjLCAweDZiNzMsIDB4MDgwNCwKLQkweDM2OGQsIDB4MjAwMSwgMHgwMTcwLCAweDIwMDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDA0YywKLQkweDExMTgsIDB4MjA5MSwgMHgzMWJkLCAweDA4MTcsIDB4MjA5MSwgMHgzMTNkLCAweDA4MTcsIDB4NjAwMCwKLQkweDkwODYsIDB4MDAwMCwgMHgwOTA0LCAweDM2YmYsIDB4MjA2OSwgMHgxODQ3LCAweDc4OTAsIDB4Njg0MiwKLQkweDc4OTQsIDB4Njg0NiwgMHgyZDAwLCAweDIwMDksIDB4MDAzMCwgMHg3YThjLCAweDdiODgsIDB4N2M5YywKLQkweDdkOTgsIDB4MjAzOSwgMHgwMDAxLCAweDA4MDQsIDB4NGM4ZCwgMHg5MDA2LCAweDA4MGMsIDB4MjZmNSwKLQkweDgxZmYsIDB4MTkwNCwgMHgzNmJmLCAweDA4MGMsIDB4Nzc5ZSwgMHgxMWIwLCAweDA4MGMsIDB4N2FiNiwKLQkweDA4MGMsIDB4NjE5ZCwgMHgwODBjLCAweDM0ODIsIDB4MDExOCwgMHg2MTMwLCAweGMxOGQsIDB4NjEzMiwKLQkweDA4MGMsIDB4ZDY0NSwgMHgwMTMwLCAweDA4MGMsIDB4NzdjMSwgMHgxMTE4LCAweDA4MGMsIDB4Nzc3MiwKLQkweDAwMzgsIDB4MDgwYywgMHg3NmNkLCAweDAwMjAsIDB4MDgwYywgMHg2MTYyLCAweDA4MGMsIDB4NjA1OCwKLQkweDA4MDQsIDB4MzY4ZCwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwgMHgwODBjLCAweDc3OWUsIDB4MTExMCwKLQkweDA4MDQsIDB4MzZiZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MTk0LCAweDgxZmYsIDB4MDE5MCwKLQkweDcwNGYsIDB4MDAwMCwgMHgyMDAxLCAweDFkODAsIDB4MjAwOSwgMHgwMDQwLCAweDdhOGMsIDB4N2I4OCwKLQkweDdjOWMsIDB4N2Q5OCwgMHgyMDM5LCAweDAwMDEsIDB4MDgwYywgMHg0YzhkLCAweDcwMWYsIDB4MzY4YiwKLQkweDAxMmUsIDB4MDAwNSwgMHg3MDRmLCAweDAwMDEsIDB4MDBkNiwgMHgyMDY5LCAweDFkODAsIDB4MjBhOSwKLQkweDAwNDAsIDB4MjBlOSwgMHgwMDAxLCAweDIwYTEsIDB4MWQ4MCwgMHgyMDE5LCAweGZmZmYsIDB4NDMwNCwKLQkweDY1NWMsIDB4OTU4OCwgMHgzNDhlLCAweDIxMGQsIDB4OTE4YywgMHgwMGZmLCAweDIxNmEsIDB4OTAwZSwKLQkweDIwMTEsIDB4MDAwMiwgMHgyMTAwLCAweDk1MDYsIDB4MDFhOCwgMHgwODBjLCAweDY3YjQsIDB4MTE5MCwKLQkweGI4MTQsIDB4ODIxYywgMHgwMjM4LCAweDkzOTgsIDB4MWQ4MCwgMHg5MDg1LCAweGZmMDAsIDB4ODAwNywKLQkweDIwMWEsIDB4MDAzOCwgMHg5Mzk4LCAweDFkODAsIDB4MjMyNCwgMHg5NGE0LCAweGZmMDAsIDB4OTQwNSwKLQkweDIwMWEsIDB4ODIxMCwgMHg4MTA4LCAweDkxODIsIDB4MDA4MCwgMHgxMjA4LCAweDBjMTgsIDB4ODIwMSwKLQkweDgwMDcsIDB4MmQwYywgMHg5MTA1LCAweDIwNmEsIDB4MDBkZSwgMHgyMGE5LCAweDAwNDAsIDB4MjBhMSwKLQkweDFkODAsIDB4MjA5OSwgMHgxZDgwLCAweDA4MGMsIDB4NjBlZCwgMHgwODA0LCAweDQ1Y2EsIDB4MDgwYywKLQkweDRjNzQsIDB4MDkwNCwgMHgzNmMyLCAweDA4MGMsIDB4NGM0MSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwKLQkweDA4MDQsIDB4MzZiZiwgMHgwODBjLCAweDU4NDAsIDB4ZDBiNCwgMHgwNTU4LCAweDc4ODQsIDB4OTA4ZSwKLQkweDAwN2UsIDB4MDUzOCwgMHg5MDhlLCAweDAwN2YsIDB4MDUyMCwgMHg5MDhlLCAweDAwODAsIDB4MDUwOCwKLQkweDA4MGMsIDB4MzQ3ZCwgMHgxMTQ4LCAweGI4MDAsIDB4ZDA4YywgMHgxMWQ4LCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDA2LCAweDExYTgsIDB4YTg2NywgMHgwMDAwLCAweGE4NjgsIDB4YzBmZCwKLQkweGE4NmEsIDB4MDgwYywgMHhkMGVjLCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzZiZiwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDQ2NTUsIDB4MDAwNSwgMHgwODBjLCAweDRjNzQsIDB4MDkwNCwKLQkweDM2YzIsIDB4MjBhOSwgMHgwMDJiLCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDIwOTgsIDB4YTg2MCwKLQkweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMDIsIDB4MjBhMCwgMHg0MDAzLCAweDIwYTksIDB4MDAwOCwKLQkweDkwODAsIDB4MDAwNiwgMHgyMGEwLCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDkwODAsIDB4MDAwNiwKLQkweDIwOTgsIDB4MDgwYywgMHgwZmQ2LCAweDAwNzAsIDB4MjBhOSwgMHgwMDA0LCAweGE4NWMsIDB4OTA4MCwKLQkweDAwMGEsIDB4MjBhMCwgMHhiOGM0LCAweDIwZTAsIDB4YjhjOCwgMHg5MDgwLCAweDAwMGEsIDB4MjA5OCwKLQkweDA4MGMsIDB4MGZkNiwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsIDB4OTA4NCwKLQkweGZmYzAsIDB4OTA4MCwgMHgwMDAyLCAweDIwMDksIDB4MDAyYiwgMHg3YThjLCAweDdiODgsIDB4N2M5YywKLQkweDdkOTgsIDB4MDgwNCwgMHg0YzhkLCAweDgxZmYsIDB4MTkwNCwgMHgzNmJmLCAweDA4MGMsIDB4NGM1OCwKLQkweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDZhMDAsIDB4MDkwNCwgMHgzNmJmLCAweDAwNTgsIDB4YTg3OCwKLQkweDkwMDUsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDQsIDB4MDgwNCwgMHgzNmJmLCAweGE5NzQsIDB4YWE5NCwKLQkweDA4MDQsIDB4MzY4ZCwgMHgwODBjLCAweDU4NDgsIDB4MDkwNCwgMHgzNjhkLCAweDcwMWYsIDB4NDY5ZiwKLQkweDcwMDcsIDB4MDAwMywgMHgwMDA1LCAweDgxZmYsIDB4MTkwNCwgMHgzNmJmLCAweDc4ODgsIDB4OTA4YSwKLQkweDEwMDAsIDB4MWEwNCwgMHgzNmMyLCAweDA4MGMsIDB4NGM3NCwgMHgwOTA0LCAweDM2YzIsIDB4MDgwYywKLQkweDZjMTEsIDB4MDEyMCwgMHgwODBjLCAweDZjMTksIDB4MTkwNCwgMHgzNmMyLCAweDA4MGMsIDB4NmE4NSwKLQkweDA5MDQsIDB4MzZiZiwgMHgyMDE5LCAweDAwMDQsIDB4OTAwZSwgMHgwODBjLCAweDZhMTIsIDB4MDkwNCwKLQkweDM2YmYsIDB4Nzk4NCwgMHg3YTg4LCAweDA0YzksIDB4MDhhOCwgMHhhODljLCAweDkwOGEsIDB4MTAwMCwKLQkweDEyZjgsIDB4MDgwYywgMHg0YzcyLCAweDAxZTAsIDB4MDgwYywgMHg2YzExLCAweDAxMTgsIDB4MDgwYywKLQkweDZjMTksIDB4MTFiMCwgMHgwODBjLCAweDZhODUsIDB4MjAwOSwgMHgwMDAyLCAweDAxNjgsIDB4MjAwOSwKLQkweDAwMDIsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4NmExMiwgMHgyMDA5LCAweDAwMDMsIDB4MDEyMCwKLQkweGE5OTgsIDB4YWE5YywgMHgwMGQxLCAweDAwNjAsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsIDB4MDAxMCwKLQkweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsIDB4MDAwNSwKLQkweGE4OTcsIDB4NDAwMCwgMHgwODBjLCAweDU4NDgsIDB4MDExMCwgMHg5MDA2LCAweDAwMTgsIDB4OTAwZSwKLQkweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDAwNSwgMHg5MTg2LCAweDAwZmYsIDB4MDExMCwKLQkweDAwNzEsIDB4MDA2MCwgMHgyMDI5LCAweDAwN2UsIDB4MjA2MSwgMHgxODAwLCAweDY0NWMsIDB4MjQwMCwKLQkweDk1MDYsIDB4MDExMCwgMHgyNTA4LCAweDAwMTksIDB4ODUyOSwgMHgxZWM4LCAweDAwMDUsIDB4MDgwYywKLQkweDY3YjQsIDB4MTEzOCwgMHgyMjAwLCAweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweDkxMDgsIDB4MDgwYywKLQkweDg5YTEsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwgMHg3OThjLCAweDIwMDEsIDB4MTk4MCwKLQkweDkxOGMsIDB4ODAwMCwgMHgyMTAyLCAweDA4MGMsIDB4NGM1OCwgMHgwOTA0LCAweDM2YzIsIDB4MDgwYywKLQkweDZjMTEsIDB4MDEyMCwgMHgwODBjLCAweDZjMTksIDB4MTkwNCwgMHgzNmMyLCAweDA4MGMsIDB4Njg3YiwKLQkweDA5MDQsIDB4MzZiZiwgMHgwODBjLCAweDZhMDksIDB4MDkwNCwgMHgzNmJmLCAweDIwMDEsIDB4MTk4MCwKLQkweDIwMDQsIDB4ZDBmYywgMHgxOTA0LCAweDM2OGQsIDB4MDgwNCwgMHg0NmFhLCAweGE5YTAsIDB4MjAwMSwKLQkweDE5ODAsIDB4OTE4YywgMHg4MDAwLCAweGMxOGQsIDB4MjEwMiwgMHgwODBjLCAweDRjNjUsIDB4MDFhMCwKLQkweDA4MGMsIDB4NmMxMSwgMHgwMTE4LCAweDA4MGMsIDB4NmMxOSwgMHgxMTcwLCAweDA4MGMsIDB4Njg3YiwKLQkweDIwMDksIDB4MDAwMiwgMHgwMTI4LCAweDA4MGMsIDB4NmEwOSwgMHgxMTcwLCAweDIwMDksIDB4MDAwMywKLQkweGE4OTcsIDB4NDAwNSwgMHhhOTlhLCAweDAwMTAsIDB4YTg5NywgMHg0MDA2LCAweDkwMGUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MjAwMSwgMHgwMDMwLCAweDAwMDUsIDB4YTg5NywgMHg0MDAwLCAweDIwMDEsIDB4MTk4MCwKLQkweDIwMDQsIDB4ZDBmYywgMHgxMTI4LCAweDA4MGMsIDB4NTg0OCwgMHgwMTEwLCAweDkwMDYsIDB4MDAxOCwKLQkweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwgMHgwMDA1LCAweDgxZmYsIDB4MTkwNCwKLQkweDM2YmYsIDB4Nzk4YywgMHgyMDAxLCAweDE5N2YsIDB4OTE4YywgMHg4MDAwLCAweDIxMDIsIDB4MDgwYywKLQkweDRjNTgsIDB4MDkwNCwgMHgzNmMyLCAweDA4MGMsIDB4NmMxMSwgMHgwMTIwLCAweDA4MGMsIDB4NmMxOSwKLQkweDE5MDQsIDB4MzZjMiwgMHgwODBjLCAweDY4N2IsIDB4MDkwNCwgMHgzNmJmLCAweDA4MGMsIDB4NjlmNywKLQkweDA5MDQsIDB4MzZiZiwgMHgyMDAxLCAweDE5N2YsIDB4MjAwNCwgMHhkMGZjLCAweDE5MDQsIDB4MzY4ZCwKLQkweDA4MDQsIDB4NDZhYSwgMHhhOWEwLCAweDIwMDEsIDB4MTk3ZiwgMHg5MThjLCAweDgwMDAsIDB4YzE4ZCwKLQkweDIxMDIsIDB4MDgwYywgMHg0YzY1LCAweDAxYTAsIDB4MDgwYywgMHg2YzExLCAweDAxMTgsIDB4MDgwYywKLQkweDZjMTksIDB4MTE3MCwgMHgwODBjLCAweDY4N2IsIDB4MjAwOSwgMHgwMDAyLCAweDAxMjgsIDB4MDgwYywKLQkweDY5ZjcsIDB4MTE3MCwgMHgyMDA5LCAweDAwMDMsIDB4YTg5NywgMHg0MDA1LCAweGE5OWEsIDB4MDAxMCwKLQkweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMzAsIDB4MDAwNSwKLQkweGE4OTcsIDB4NDAwMCwgMHgyMDAxLCAweDE5N2YsIDB4MjAwNCwgMHhkMGZjLCAweDExMjgsIDB4MDgwYywKLQkweDU4NDgsIDB4MDExMCwgMHg5MDA2LCAweDAwMTgsIDB4OTAwZSwgMHg5MDg1LCAweDAwMDEsIDB4MjAwMSwKLQkweDAwMDAsIDB4MDAwNSwgMHg2MTAwLCAweDA4MDQsIDB4MzY4ZCwgMHgwODBjLCAweDRjNzQsIDB4MDkwNCwKLQkweDM2YzIsIDB4MDgwYywgMHg1ODU0LCAweDE5MDQsIDB4MzZiZiwgMHg3OWE4LCAweGQxODQsIDB4MTE1OCwKLQkweGI4MzQsIDB4ODAwNywgMHg3ODllLCAweGI4MzAsIDB4ODAwNywgMHg3ODlhLCAweGJiMmMsIDB4ODMxZiwKLQkweGJhMjgsIDB4ODIxNywgMHgwMDUwLCAweGI4MjQsIDB4ODAwNywgMHg3ODllLCAweGI4MjAsIDB4ODAwNywKLQkweDc4OWEsIDB4YmIxYywgMHg4MzFmLCAweGJhMTgsIDB4ODIxNywgMHhiOTAwLCAweDkxOGMsIDB4MDIwMiwKLQkweDA4MDQsIDB4MzY4ZCwgMHg3OGE4LCAweDkwOWMsIDB4MDAwMywgMHhkMGFjLCAweDExNTAsIDB4ZDBiNCwKLQkweDExNDAsIDB4OTM5YSwgMHgwMDAzLCAweDFhMDQsIDB4MzZiZiwgMHg2MjVjLCAweDc4ODQsIDB4OTIwNiwKLQkweDE1NDgsIDB4MDgwYywgMHg4YjEwLCAweDIwMDEsIDB4ZmZlYywgMHgyMDA5LCAweDAwMGMsIDB4N2E4YywKLQkweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweDIwMzksIDB4MDAwMCwgMHgwMDA2LCAweDc4YTgsIDB4OTA4NCwKLQkweDAwODAsIDB4MTExOCwgMHgwMDBlLCAweDA4MDQsIDB4NGM4ZCwgMHgwMDBlLCAweDIwMzEsIDB4MDAwMCwKLQkweDIwNjEsIDB4MThiOCwgMHgyYzQ0LCAweGE2NmEsIDB4YTE3YSwgMHhhNzcyLCAweGEwNzYsIDB4YTI4ZSwKLQkweGEzOTIsIDB4YTQ5NiwgMHhhNTlhLCAweDA4MGMsIDB4MTE0ZSwgMHg3MDA3LCAweDAwMDIsIDB4NzAxZiwKLQkweDQ4NjIsIDB4MDAwNSwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwgMHgwODBjLCAweDRjNzQsIDB4MDkwNCwKLQkweDM2YzIsIDB4MDgwYywgMHg2YzExLCAweDE5MDQsIDB4MzZiZiwgMHgwMGM2LCAweDA4MGMsIDB4NGM0MSwKLQkweDAwY2UsIDB4MDkwNCwgMHgzNmJmLCAweGE4NjcsIDB4MDAwMCwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwKLQkweDdlYTgsIDB4MDgwYywgMHhkMDkyLCAweDA5MDQsIDB4MzZiZiwgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwKLQkweDQ4NjYsIDB4MDAwNSwgMHgwODBjLCAweDQzOTcsIDB4MDgwNCwgMHgzNjhkLCAweGE4MzAsIDB4OTA4NiwKLQkweDAxMDAsIDB4MDkwNCwgMHgzNmJmLCAweDg5MDYsIDB4ODAwNiwgMHg4MDA3LCAweDkwYmMsIDB4MDAzZiwKLQkweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMWIsIDB4MjAwOSwgMHgwMDBjLCAweDdhOGMsIDB4N2I4OCwKLQkweDdjOWMsIDB4N2Q5OCwgMHgwODA0LCAweDRjOGQsIDB4OTAwNiwgMHgwODBjLCAweDI2ZjUsIDB4NzhhOCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwZmYsIDB4MDExOCwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgwMTEwLCAweDA4MGMsIDB4NjE2MiwgMHg3ODg4LCAweDkwOGEsIDB4MTAwMCwKLQkweDFhMDQsIDB4MzZjMiwgMHg3OTg0LCAweDkxODYsIDB4MDBmZiwgMHgwMTM4LCAweDkxODIsIDB4MDA3ZiwKLQkweDFhMDQsIDB4MzZjMiwgMHgyMTAwLCAweDA4MGMsIDB4MjZiZiwgMHgwMDI2LCAweDAwYzYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDYxLCAweDFhMDQsIDB4NjAxYiwgMHgwMDAwLCAweDYwMWYsIDB4MDAwMCwKLQkweDYwN2IsIDB4MDAwMCwgMHg2MDdmLCAweDAwMDAsIDB4MDgwYywgMHg3NzllLCAweDExNTgsIDB4MDgwYywKLQkweDdhYjYsIDB4MDgwYywgMHg2MTlkLCAweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDc3ZTIsIDB4MDgwYywKLQkweDc2Y2QsIDB4MDBmMCwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywgMHhiMDliLCAweDA4MGMsIDB4YWQxOCwKLQkweDIwNjEsIDB4MDEwMCwgMHgyMDAxLCAweDE4MTgsIDB4MjAwNCwgMHg5MDg0LCAweDAwZmYsIDB4ODEwZiwKLQkweDkxMDUsIDB4NjA0YSwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywgMHgwMDEwLCAweDIwMDksIDB4MTk5OSwKLQkweDIwMGIsIDB4MDAwMCwgMHgyMDA5LCAweDAwMmQsIDB4MjAxMSwgMHg2MDg4LCAweDA4MGMsIDB4OGE1ZCwKLQkweDc5ODQsIDB4MDgwYywgMHg3NzllLCAweDExMTAsIDB4MjAwOSwgMHgwMGZmLCAweDdhODgsIDB4MDgwYywKLQkweDQ3MGQsIDB4MDEyZSwgMHgwMGNlLCAweDAwMmUsIDB4MDgwNCwgMHgzNjhkLCAweDc5ODQsIDB4MDgwYywKLQkweDY3NDksIDB4MmIwOCwgMHgxOTA0LCAweDM2YzIsIDB4MDgwNCwgMHgzNjhkLCAweDgxZmYsIDB4MDEyMCwKLQkweDIwMDksIDB4MDAwMSwgMHgwODA0LCAweDM2YmYsIDB4NjBkYywgMHhkMGFjLCAweDExMzAsIDB4ZDA5YywKLQkweDExMjAsIDB4MjAwOSwgMHgwMDA1LCAweDA4MDQsIDB4MzZiZiwgMHgwODBjLCAweDRjNDEsIDB4MTEyMCwKLQkweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM2YmYsIDB4Nzk4NCwgMHg4MWZmLCAweDA5MDQsIDB4MzZjMiwKLQkweDkxOTIsIDB4MDAyMSwgMHgxYTA0LCAweDM2YzIsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwKLQkweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDcwMmEsIDB4YWY2MCwgMHg3NzM2LCAweDA4MGMsIDB4NGM4YSwKLQkweDcwMWYsIDB4NDkyMSwgMHg3ODgwLCAweDkwODYsIDB4MDA2ZSwgMHgwMTEwLCAweDcwMWYsIDB4NTJkYSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDgwLCAweDA4MGMsIDB4NjdiNCwgMHgxMTE4LCAweDA4MGMsIDB4NmMxMSwKLQkweDAxMjAsIDB4MjAyMSwgMHg0MDBhLCAweDA4MDQsIDB4MzY4ZiwgMHgwMGQ2LCAweDAwOTYsIDB4YTk2NCwKLQkweGFhNmMsIDB4YWI3MCwgMHhhYzc0LCAweGFkNzgsIDB4YWU3YywgMHhhODg0LCAweDkwYmUsIDB4MDEwMCwKLQkweDA5MDQsIDB4NDliYSwgMHg5MGJlLCAweDAxMTIsIDB4MDkwNCwgMHg0OWJhLCAweDkwYmUsIDB4MDExMywKLQkweDA5MDQsIDB4NDliYSwgMHg5MGJlLCAweDAxMTQsIDB4MDkwNCwgMHg0OWJhLCAweDkwYmUsIDB4MDExNywKLQkweDA5MDQsIDB4NDliYSwgMHg5MGJlLCAweDAxMWEsIDB4MDkwNCwgMHg0OWJhLCAweDkwYmUsIDB4MDExYywKLQkweDA5MDQsIDB4NDliYSwgMHg5MGJlLCAweDAxMjEsIDB4MDkwNCwgMHg0OWExLCAweDkwYmUsIDB4MDEzMSwKLQkweDA5MDQsIDB4NDlhMSwgMHg5MGJlLCAweDAxNzEsIDB4MDkwNCwgMHg0OWJhLCAweDkwYmUsIDB4MDE3MywKLQkweDA5MDQsIDB4NDliYSwgMHg5MGJlLCAweDAxYTEsIDB4MTEyOCwgMHhhODk0LCAweDgwMDcsIDB4YTg5NiwKLQkweDA4MDQsIDB4NDljNSwgMHg5MGJlLCAweDAyMTIsIDB4MDkwNCwgMHg0OWFlLCAweDkwYmUsIDB4MDIxMywKLQkweDA1ZTgsIDB4OTBiZSwgMHgwMjE0LCAweDA1MDAsIDB4OTBiZSwgMHgwMjE3LCAweDAxODgsIDB4OTBiZSwKLQkweDAyMWEsIDB4MTEyMCwgMHhhODljLCAweDgwMDcsIDB4YTg5ZSwgMHgwNGUwLCAweDkwYmUsIDB4MDIxZiwKLQkweDA1YzgsIDB4OTBiZSwgMHgwMzAwLCAweDA1YjAsIDB4MDA5ZSwgMHgwMGRlLCAweDA4MDQsIDB4MzZjMiwKLQkweDcwMjgsIDB4OTA4MCwgMHgwMDEwLCAweDIwOTgsIDB4MjBhMCwgMHg3MDM0LCAweDIwZTAsIDB4MjBlOCwKLQkweDIwYTksIDB4MDAwNywgMHgwODBjLCAweDRhMDMsIDB4NzAyOCwgMHg5MDgwLCAweDAwMGUsIDB4MjA5OCwKLQkweDIwYTAsIDB4NzAzNCwgMHgyMGUwLCAweDIwZTgsIDB4MjBhOSwgMHgwMDAxLCAweDA4MGMsIDB4NGEwMywKLQkweDAwYzgsIDB4NzAyOCwgMHg5MDgwLCAweDAwMGMsIDB4MjA5OCwgMHgyMGEwLCAweDcwMzQsIDB4MjBlMCwKLQkweDIwZTgsIDB4MjBhOSwgMHgwMDAxLCAweDA4MGMsIDB4NGExMCwgMHgwMGI4LCAweDcwMjgsIDB4OTA4MCwKLQkweDAwMGUsIDB4MjA5OCwgMHgyMGEwLCAweDcwMzQsIDB4MjBlMCwgMHgyMGU4LCAweDIwYTksIDB4MDAwMSwKLQkweDA4MGMsIDB4NGExMCwgMHg3MDI4LCAweDkwODAsIDB4MDAwYywgMHgyMDk4LCAweDIwYTAsIDB4NzAzNCwKLQkweDIwZTAsIDB4MjBlOCwgMHgyMGE5LCAweDAwMDEsIDB4MDRmMSwgMHgwMGM2LCAweDA4MGMsIDB4NGM0MSwKLQkweDA1NTAsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4YTg2NywgMHgwMTE5LCAweDkwMDYsIDB4YTg4MiwKLQkweGE4N2YsIDB4MDAyMCwgMHhhODhiLCAweDAwMDEsIDB4ODEwYiwgMHhhOWFlLCAweGE4YjIsIDB4YWFiNiwKLQkweGFiYmEsIDB4YWNiZSwgMHhhZGMyLCAweGE5YzYsIDB4YThjYSwgMHgwMGNlLCAweDAwOWUsIDB4MDBkZSwKLQkweGE4NjYsIDB4YTgyMiwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHhhODA0LCAweDIwNDgsIDB4MDgwYywKLQkweGQwYWQsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwgMHgzNmJmLCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWYsIDB4NDlmYSwgMHgwMDA1LCAweDAwY2UsIDB4MDA5ZSwgMHgwMGRlLCAweDIwMDksIDB4MDAwMiwKLQkweDA4MDQsIDB4MzZiZiwgMHhhODIwLCAweDkwODYsIDB4ODAwMSwgMHgxOTA0LCAweDM2OGQsIDB4MjAwOSwKLQkweDAwMDQsIDB4MDgwNCwgMHgzNmJmLCAweDAwMTYsIDB4MDAyNiwgMHgzNTEwLCAweDIwYTksIDB4MDAwMiwKLQkweDQwMDIsIDB4NDEwNCwgMHg0MDA0LCAweDgyMTEsIDB4MWRjOCwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsIDB4MzUyMCwgMHgyMGE5LCAweDAwMDQsIDB4NDAwMiwKLQkweDQzMDQsIDB4NDIwNCwgMHg0MTA0LCAweDQwMDQsIDB4ODQyMSwgMHgxZGI4LCAweDAwNGUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwKLQkweDM2YmYsIDB4NjBkYywgMHhkMGFjLCAweDExODgsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywKLQkweDAxMzAsIDB4ZDA5YywgMHgwMTIwLCAweDIwMDksIDB4MDAxNiwgMHgwODA0LCAweDM2YmYsIDB4ZDA5YywKLQkweDExMjAsIDB4MjAwOSwgMHgwMDA1LCAweDA4MDQsIDB4MzZiZiwgMHg3OTg0LCAweDc4YTgsIDB4MjA0MCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTIwLCAweDkxODIsIDB4MDA3ZiwgMHgwYTA0LCAweDM2YzIsIDB4OTE4NiwKLQkweDAwZmYsIDB4MDkwNCwgMHgzNmMyLCAweDkxODIsIDB4MDgwMCwgMHgxYTA0LCAweDM2YzIsIDB4N2E4YywKLQkweDdiODgsIDB4NjA3YywgMHg5MzA2LCAweDExNTgsIDB4NjA4MCwgMHg5MjRlLCAweDA5MDQsIDB4MzZjMiwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTIwLCAweDk5Y2MsIDB4ZmYwMCwgMHgwOTA0LCAweDM2YzIsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDAxOTgsIDB4OTM4NiwKLQkweDAwZmYsIDB4MDE4MCwgMHgwMDI2LCAweDIwMTEsIDB4ODAwOCwgMHgwODBjLCAweDZjMzUsIDB4MDAyZSwKLQkweDAxNDgsIDB4OTE4ZCwgMHg4MDAwLCAweDA4MGMsIDB4NmM3ZiwgMHgxMTIwLCAweDIwMDEsIDB4NDAwOSwKLQkweDA4MDQsIDB4NGFjMSwgMHgwODBjLCAweDRiNTQsIDB4MDkwNCwgMHg0YWM3LCAweDAwODYsIDB4OTBjNiwKLQkweDQwMDAsIDB4MDA4ZSwgMHgxNTM4LCAweDAwYzYsIDB4MDAwNiwgMHgwMDM2LCAweGI4MTgsIDB4YmIxYywKLQkweDkzMDUsIDB4YmIyMCwgMHg5MzA1LCAweGJiMjQsIDB4OTMwNSwgMHhiYjI4LCAweDkzMDUsIDB4YmIyYywKLQkweDkzMDUsIDB4YmIzMCwgMHg5MzA1LCAweGJiMzQsIDB4OTMwNSwgMHgwMDNlLCAweDA1NzAsIDB4ZDg4YywKLQkweDExMjgsIDB4MDgwYywgMHg2YzExLCAweDAxMTAsIDB4Yzg5ZCwgMHgwNDM4LCAweDkwMGUsIDB4MDgwYywKLQkweDZhYWUsIDB4MTEwOCwgMHhjMTg1LCAweGI4MDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4MDAwZSwKLQkweDAwY2UsIDB4MDBiOCwgMHg5MGM2LCAweDQwMDcsIDB4MTExMCwgMHgyNDA4LCAweDAwOTAsIDB4OTBjNiwKLQkweDQwMDgsIDB4MTExOCwgMHgyNzA4LCAweDI2MTAsIDB4MDA2MCwgMHg5MGM2LCAweDQwMDksIDB4MTEwOCwKLQkweDAwNDAsIDB4OTBjNiwgMHg0MDA2LCAweDExMDgsIDB4MDAyMCwgMHgyMDAxLCAweDQwMDUsIDB4MjAwOSwKLQkweDAwMGEsIDB4MjAyMCwgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZiwgMHgwMDBlLCAweDAwY2UsIDB4MmIwMCwKLQkweDcwMjYsIDB4MDAxNiwgMHgwMGI2LCAweDAwYzYsIDB4MDBlNiwgMHgyYzcwLCAweDA4MGMsIDB4YjFkZCwKLQkweDA5MDQsIDB4NGIxYywgMHgyYjAwLCAweDYwMTIsIDB4MDgwYywgMHhkM2I2LCAweDJlNTgsIDB4MDBlZSwKLQkweDAwZTYsIDB4MDBjNiwgMHgwODBjLCAweDRjNDEsIDB4MDBjZSwgMHgyYjcwLCAweDExNTgsIDB4MDgwYywKLQkweGIxNmMsIDB4MDBlZSwgMHgwMGNlLCAweDAwYmUsIDB4MDAxZSwgMHgwMTJlLCAweDIwMDksIDB4MDAwMiwKLQkweDA4MDQsIDB4MzZiZiwgMHg5MDBlLCAweGE5NjYsIDB4YTk2YSwgMHgyOTAwLCAweDYwMTYsIDB4YTkzMiwKLQkweGE4NjgsIDB4YzBmZCwgMHhkODhjLCAweDAxMDgsIDB4YzBmNSwgMHhhODZhLCAweGQ4OWMsIDB4MTExMCwKLQkweDA4MGMsIDB4MzMxNSwgMHg2MDIzLCAweDAwMDEsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4ZDg5YywKLQkweDAxMzgsIDB4MjAwMSwgMHgwMDA0LCAweDA4MGMsIDB4NjZmYSwgMHgyMDA5LCAweDAwMDMsIDB4MDAzMCwKLQkweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDY2ZmEsIDB4MjAwOSwgMHgwMDAyLCAweDA4MGMsIDB4YjIwYSwKLQkweDc4YTgsIDB4ZDA5NCwgMHgwMTM4LCAweDAwZWUsIDB4NzAyNCwgMHgwMGU2LCAweDIwNTgsIDB4YjhkNCwKLQkweGMwOGQsIDB4YjhkNiwgMHg5MDg1LCAweDAwMDEsIDB4MDBlZSwgMHgwMGNlLCAweDAwYmUsIDB4MDAxZSwKLQkweDAxMmUsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwgMHgzNmJmLCAweDcwMDcsIDB4MDAwMywKLQkweDcwMWYsIDB4NGIyYiwgMHgwMDA1LCAweGE4MzAsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywKLQkweDAxNDAsIDB4MjAwOCwgMHg5MThlLCAweGRlYWQsIDB4MTEyMCwgMHgyMDIxLCAweDQwMDksIDB4MDgwNCwKLQkweDM2OGYsIDB4OTA4NiwgMHgwMTAwLCAweDcwMjQsIDB4MjA1OCwgMHgxMTM4LCAweDIwMDksIDB4MDAwNCwKLQkweGJhMDQsIDB4OTI5NCwgMHgwMGZmLCAweDA4MDQsIDB4NTc4ZSwgMHg5MDBlLCAweGE4NjgsIDB4ZDBmNCwKLQkweDE5MDQsIDB4MzY4ZCwgMHgwODBjLCAweDZhYWUsIDB4MTEwOCwgMHhjMTg1LCAweGI4MDAsIDB4ZDBiYywKLQkweDAxMDgsIDB4YzE4ZCwgMHgwODA0LCAweDM2OGQsIDB4MDBlNiwgMHgwMGQ2LCAweDAwOTYsIDB4ODNmZiwKLQkweDA5MDQsIDB4NGJhMywgMHg5MDJlLCAweDA4MGMsIDB4YjA5NCwgMHgwMTMwLCAweDkwMjYsIDB4MjBhOSwKLQkweDA4MDAsIDB4MjA3MSwgMHgxMDAwLCAweDAwMzAsIDB4MjAyMSwgMHgwMDdmLCAweDIwYTksIDB4MDc4MSwKLQkweDIwNzEsIDB4MTA3ZiwgMHgyZTA0LCAweDkwMDUsIDB4MTFiOCwgMHgyMTAwLCAweDk0MDYsIDB4MTkwNCwKLQkweDRiYjQsIDB4MjQyOCwgMHg5NGNlLCAweDAwN2YsIDB4MTEyMCwgMHg5MmNlLCAweGZmZmQsIDB4MTU1OCwKLQkweDAwMzAsIDB4OTRjZSwgMHgwMDgwLCAweDExMzAsIDB4OTJjZSwgMHhmZmZjLCAweDE1MjAsIDB4OTNjZSwKLQkweDAwZmYsIDB4MTUwOCwgMHhjNWZkLCAweDA0ODAsIDB4MjA1OCwgMHhiZjEwLCAweDI3MDAsIDB4OTMwNiwKLQkweDExZTgsIDB4YmUxNCwgMHgyNjAwLCAweDkyMDYsIDB4MTFjOCwgMHgyNDAwLCAweDkxMDYsIDB4MTE4MCwKLQkweGQ4ODQsIDB4MDU5OCwgMHhkODk0LCAweDE1ODgsIDB4MDgwYywgMHg2YmIxLCAweDE1NzAsIDB4MjAwMSwKLQkweDQwMDAsIDB4MDQ2MCwgMHgwODBjLCAweDZjMTEsIDB4MTU0MCwgMHgyMDAxLCAweDQwMDAsIDB4MDQzMCwKLQkweDIwMDEsIDB4NDAwNywgMHgwNDE4LCAweDIwMDEsIDB4NDAwNiwgMHgwNDAwLCAweDI0MDAsIDB4OTEwNiwKLQkweDExNTgsIDB4YmUxNCwgMHg4N2ZmLCAweDExMjgsIDB4ODZmZiwgMHgwOTE4LCAweDA4MGMsIDB4YjA5NCwKLQkweDE5MDAsIDB4MjAwMSwgMHg0MDA4LCAweDAwOTAsIDB4ODQyMCwgMHg4ZTcwLCAweDFmMDQsIDB4NGI2YSwKLQkweDg1ZmYsIDB4MTEzMCwgMHgyMDAxLCAweDQwMDksIDB4MDA0OCwgMHgyMDAxLCAweDAwMDEsIDB4MDAzMCwKLQkweDA4MGMsIDB4Njc0OSwgMHgxZGQwLCAweGJiMTIsIDB4YmExNiwgMHg5MDA2LCAweDkwMDUsIDB4MDA5ZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwKLQkweDM2YmYsIDB4MDgwYywgMHg0YzQxLCAweDExMjAsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzZiZiwKLQkweGE4NjcsIDB4MDAwMCwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwgMHg3ODg0LCAweDkwMDUsIDB4MDkwNCwKLQkweDM2YzIsIDB4OTA5NiwgMHgwMGZmLCAweDAxMjAsIDB4OTA5MiwgMHgwMDA0LCAweDFhMDQsIDB4MzZjMiwKLQkweDIwMTAsIDB4MjkxOCwgMHgwODBjLCAweDMyYjUsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwKLQkweDM2YmYsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsIDB4NGJmNiwgMHgwMDA1LCAweGE4MzAsIDB4OTA4NiwKLQkweDAxMDAsIDB4MTkwNCwgMHgzNjhkLCAweDIwMDksIDB4MDAwNCwgMHgwODA0LCAweDM2YmYsIDB4Nzk4NCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTIwLCAweDkxODIsIDB4MDA3ZiwgMHgwYTA0LCAweDM2YzIsIDB4OTE4NiwKLQkweDAwZmYsIDB4MDkwNCwgMHgzNmMyLCAweDkxODIsIDB4MDgwMCwgMHgxYTA0LCAweDM2YzIsIDB4MjAwMSwKLQkweDk0MDAsIDB4MDgwYywgMHg1N2U5LCAweDE5MDQsIDB4MzZiZiwgMHgwODA0LCAweDM2OGQsIDB4YTk5OCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTE4LCAweDkxODIsIDB4MDA3ZiwgMHgwMjgwLCAweDkxODYsIDB4MDBmZiwKLQkweDAxNjgsIDB4OTE4MiwgMHgwODAwLCAweDEyNTAsIDB4MjAwMSwgMHg5NDAwLCAweDA4MGMsIDB4NTdlOSwKLQkweDExYTgsIDB4MDA2MCwgMHhhODk3LCAweDQwMDUsIDB4YTk5YSwgMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwKLQkweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwgMHgwMDA1LCAweGE4OTcsIDB4NDAwMCwKLQkweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAwMCwgMHgwMDA1LCAweDIwMDksIDB4MDAwYSwKLQkweDBjNDgsIDB4MDgwYywgMHgxMDU5LCAweDAxOTgsIDB4OTAwNiwgMHhhODAyLCAweDcwMTQsIDB4OTAwNSwKLQkweDExMjAsIDB4MjkwMCwgMHg3MDE2LCAweDcwMWEsIDB4MDA0MCwgMHg3MDE4LCAweGE4MDIsIDB4MDA4NiwKLQkweDIwNDAsIDB4MjkwMCwgMHhhMDA2LCAweDcwMWEsIDB4MDA4ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDc5ODQsIDB4MDgwYywgMHg2N2I0LCAweDExMzAsIDB4N2U4OCwgMHg5Njg0LCAweDNmZmYsIDB4OTA4MiwKLQkweDQwMDAsIDB4MDIwOCwgMHg5MDVlLCAweDhiZmYsIDB4MDAwNSwgMHhhOTk4LCAweDA4MGMsIDB4NjdiNCwKLQkweDExMzAsIDB4YWU5YywgMHg5Njg0LCAweDNmZmYsIDB4OTA4MiwgMHg0MDAwLCAweDAyMDgsIDB4OTA1ZSwKLQkweDhiZmYsIDB4MDAwNSwgMHhhZTk4LCAweDAwMDgsIDB4N2U4NCwgMHgyNjA4LCAweDA4MGMsIDB4NjdiNCwKLQkweDExMDgsIDB4MDAwOCwgMHg5MDVlLCAweDhiZmYsIDB4MDAwNSwgMHgwMDE2LCAweDcxMTQsIDB4ODFmZiwKLQkweDAxMjgsIDB4MjE0OCwgMHhhOTA0LCAweDA4MGMsIDB4MTA4YiwgMHgwY2M4LCAweDcxMTYsIDB4NzExYSwKLQkweDAwMWUsIDB4MDAwNSwgMHgyMDMxLCAweDAwMDEsIDB4MDAxMCwgMHgyMDMxLCAweDAwMDAsIDB4MjA2MSwKLQkweDE4YjgsIDB4MmM0NCwgMHhhNjZhLCAweGExN2EsIDB4YTc3MiwgMHhhMDc2LCAweGEyOGUsIDB4YTM5MiwKLQkweGE0OTYsIDB4YTU5YSwgMHgwODBjLCAweDExNGUsIDB4NzAwNywgMHgwMDAyLCAweDcwMWYsIDB4MzY4ZCwKLQkweDAwMDUsIDB4MDBmNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDc5LCAweDAwMDAsIDB4MjAwMSwKLQkweDE4YjAsIDB4MjAwNCwgMHg5MDA1LCAweDExOTAsIDB4MGUwNCwgMHg0Y2JlLCAweDdhMzYsIDB4NzgzMywKLQkweDAwMTIsIDB4N2E4MiwgMHg3Yjg2LCAweDdjOGEsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwKLQkweDIwMDQsIDB4ZDA4NCwgMHgxOTBjLCAweDEyMDAsIDB4MDgwNCwgMHg0ZDI0LCAweDAwMTYsIDB4MDA4NiwKLQkweDAwOTYsIDB4MDBjNiwgMHgwMGU2LCAweDIwNzEsIDB4MTg5ZSwgMHg3MDQ0LCAweDkwMDUsIDB4MTU0MCwKLQkweDcxNDgsIDB4OTE4MiwgMHgwMDEwLCAweDAyODgsIDB4NzAzOCwgMHgyMDYwLCAweDA4MGMsIDB4MTA1OSwKLQkweDA5MDQsIDB4NGQxYywgMHhhODRiLCAweDAwMDAsIDB4MjkwMCwgMHg3MDQ2LCAweDIwMDEsIDB4MDAwMiwKLQkweDkwODAsIDB4MWVjMSwgMHgyMDA1LCAweGE4NDYsIDB4MDA5OCwgMHg3MDM4LCAweDkwZTAsIDB4MDAwNCwKLQkweDIwMDEsIDB4MThiYSwgMHg5YzgyLCAweDE4ZmEsIDB4MDIxMCwgMHgyMDYxLCAweDE4YmEsIDB4MmMwMCwKLQkweDcwM2EsIDB4NzE0OCwgMHg4MWZmLCAweDExMDgsIDB4NzAzZSwgMHg4MTA4LCAweDcxNGEsIDB4MDQ2MCwKLQkweDcxNDgsIDB4ODEwOCwgMHg3MTRhLCAweDcwNDQsIDB4MjA0MCwgMHhhMTQ0LCAweDIxMDUsIDB4MDAxNiwKLQkweDkwOGEsIDB4MDAzNiwgMHgxYTBjLCAweDBkODUsIDB4MjA2MCwgMHgwMDFlLCAweDgxMDgsIDB4MjEwNSwKLQkweDkwMDUsIDB4YTE0NiwgMHgxNTIwLCAweDA4MGMsIDB4MTA1OSwgMHgxMTMwLCAweDgxMDksIDB4YTk0NiwKLQkweDcxNDgsIDB4ODEwOSwgMHg3MTRhLCAweDAwZDgsIDB4OTAwNiwgMHhhODA2LCAweGE4NGEsIDB4YTA0NiwKLQkweDI4MDAsIDB4YTgwMiwgMHgyOTAwLCAweGEwMDYsIDB4NzA0NiwgMHgyMDAxLCAweDAwMDIsIDB4OTA4MCwKLQkweDFlYzEsIDB4MjAwNSwgMHhhODQ2LCAweDAwNTgsIDB4MjI2MiwgMHg2MzA2LCAweDY0MGEsIDB4MDBlZSwKLQkweDAwY2UsIDB4MDA5ZSwgMHgwMDhlLCAweDAwMWUsIDB4MDEyZSwgMHgwMGZlLCAweDAwMDUsIDB4MmMwMCwKLQkweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDRkNDYsIDB4NGQ0NiwgMHg0ZDQ4LCAweDRkNDYsIDB4NGQ0NiwKLQkweDRkNDYsIDB4NGQ0YywgMHg0ZDQ2LCAweDRkNDYsIDB4NGQ0NiwgMHg0ZDUwLCAweDRkNDYsIDB4NGQ0NiwKLQkweDRkNDYsIDB4NGQ1NCwgMHg0ZDQ2LCAweDRkNDYsIDB4NGQ0NiwgMHg0ZDU4LCAweDRkNDYsIDB4NGQ0NiwKLQkweDRkNDYsIDB4NGQ1YywgMHg0ZDQ2LCAweDRkNDYsIDB4NGQ0NiwgMHg0ZDYxLCAweDA4MGMsIDB4MGQ4NSwKLQkweGEyNzYsIDB4YTM3YSwgMHhhNDdlLCAweDA4OTgsIDB4YTI4NiwgMHhhMzhhLCAweGE0OGUsIDB4MDg3OCwKLQkweGEyOTYsIDB4YTM5YSwgMHhhNDllLCAweDA4NTgsIDB4YTJhNiwgMHhhM2FhLCAweGE0YWUsIDB4MDgzOCwKLQkweGEyYjYsIDB4YTNiYSwgMHhhNGJlLCAweDA4MTgsIDB4YTJjNiwgMHhhM2NhLCAweGE0Y2UsIDB4MDgwNCwKLQkweDRkMWYsIDB4YTJkNiwgMHhhM2RhLCAweGE0ZGUsIDB4MDgwNCwgMHg0ZDFmLCAweDAwZTYsIDB4MjA3MSwKLQkweDE4OWUsIDB4NzA0OCwgMHg5MDA1LCAweDA5MDQsIDB4NGRmOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDBlMDQsIDB4NGRmNywgMHgwMGY2LCAweDIwNzksIDB4MDAwMCwgMHgwMGM2LCAweDAwOTYsIDB4MDA4NiwKLQkweDAwNzYsIDB4OTAwNiwgMHgyMDM4LCAweDcwNDAsIDB4MjA0OCwgMHg5MDA1LCAweDA1MDAsIDB4YTk0OCwKLQkweDIxMDUsIDB4MDAxNiwgMHg5MDhhLCAweDAwMzYsIDB4MWEwYywgMHgwZDg1LCAweDIwNjAsIDB4MDAxZSwKLQkweDgxMDgsIDB4MjEwNSwgMHg5MDA1LCAweGE5NGEsIDB4MTkwNCwgMHg0ZGZhLCAweGE4MDQsIDB4OTAwNSwKLQkweDA5MGMsIDB4MGQ4NSwgMHg3MDQyLCAweDI5MzgsIDB4MjA0MCwgMHhhMDAzLCAweDAwMDAsIDB4MjAwMSwKLQkweDAwMDIsIDB4OTA4MCwgMHgxZWMxLCAweDIwMDUsIDB4YTA0YSwgMHgwODA0LCAweDRkZmEsIDB4NzAzYywKLQkweDIwNjAsIDB4MmMxNCwgMHg2MzA0LCAweDY0MDgsIDB4NjUwYywgMHgyMjAwLCAweDc4MzYsIDB4NzgzMywKLQkweDAwMTIsIDB4Nzg4MiwgMHgyMzAwLCAweDc4ODYsIDB4MjQwMCwgMHg3ODhhLCAweDIwOTEsIDB4NDA4MCwKLQkweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMjAwLCAweDg3ZmYsIDB4MDExOCwKLQkweDI3NDgsIDB4MDgwYywgMHgxMDhiLCAweDcwNDgsIDB4ODAwMSwgMHg3MDRhLCAweDkwMDUsIDB4MTE3MCwKLQkweDcwNDAsIDB4MjA0OCwgMHg5MDA1LCAweDAxMjgsIDB4MDgwYywgMHgxMDhiLCAweDkwMDYsIDB4NzA0MiwKLQkweDcwNDYsIDB4NzAzYiwgMHgxOGJhLCAweDcwM2YsIDB4MThiYSwgMHgwNDIwLCAweDcwNDAsIDB4OTAwNSwKLQkweDE1MDgsIDB4NzIzOCwgMHgyYzAwLCAweDkyMDYsIDB4MDE0OCwgMHg5YzgwLCAweDAwMDQsIDB4OTBmYSwKLQkweDE4ZmEsIDB4MDIxMCwgMHgyMDAxLCAweDE4YmEsIDB4NzAzZSwgMHgwMGEwLCAweDkwMDYsIDB4NzAzZSwKLQkweDcwM2EsIDB4NzA0NCwgMHg5MDA1LCAweDA5MGMsIDB4MGQ4NSwgMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwKLQkweDFkZTAsIDB4MjkwMCwgMHg3MDQyLCAweDIwMDEsIDB4MDAwMiwgMHg5MDgwLCAweDFlYzEsIDB4MjAwNSwKLQkweGE4NGEsIDB4MDAwMCwgMHgwMDdlLCAweDAwOGUsIDB4MDA5ZSwgMHgwMGNlLCAweDAwZmUsIDB4MDEyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyYzAwLCAweDkwODIsIDB4MDAxYiwgMHgwMDAyLCAweDRlMTksIDB4NGUxOSwKLQkweDRlMWIsIDB4NGUxOSwgMHg0ZTE5LCAweDRlMTksIDB4NGUyMCwgMHg0ZTE5LCAweDRlMTksIDB4NGUxOSwKLQkweDRlMjUsIDB4NGUxOSwgMHg0ZTE5LCAweDRlMTksIDB4NGUyYSwgMHg0ZTE5LCAweDRlMTksIDB4NGUxOSwKLQkweDRlMmYsIDB4NGUxOSwgMHg0ZTE5LCAweDRlMTksIDB4NGUzNCwgMHg0ZTE5LCAweDRlMTksIDB4NGUxOSwKLQkweDRlMzksIDB4MDgwYywgMHgwZDg1LCAweGFhNzQsIDB4YWI3OCwgMHhhYzdjLCAweDA4MDQsIDB4NGRhNSwKLQkweGFhODQsIDB4YWI4OCwgMHhhYzhjLCAweDA4MDQsIDB4NGRhNSwgMHhhYTk0LCAweGFiOTgsIDB4YWM5YywKLQkweDA4MDQsIDB4NGRhNSwgMHhhYWE0LCAweGFiYTgsIDB4YWNhYywgMHgwODA0LCAweDRkYTUsIDB4YWFiNCwKLQkweGFiYjgsIDB4YWNiYywgMHgwODA0LCAweDRkYTUsIDB4YWFjNCwgMHhhYmM4LCAweGFjY2MsIDB4MDgwNCwKLQkweDRkYTUsIDB4YWFkNCwgMHhhYmQ4LCAweGFjZGMsIDB4MDgwNCwgMHg0ZGE1LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDBiNiwgMHgwMGM2LCAweDIwMDksIDB4MDA3ZSwgMHgwODBjLCAweDY3YjQsIDB4MjAxOSwKLQkweDAwMDEsIDB4Yjg1YywgMHhkMGFjLCAweDAxMTAsIDB4MjAxOSwgMHgwMDAwLCAweDIwMTEsIDB4ODAxYiwKLQkweDA4MGMsIDB4NGNhMSwgMHgwMGNlLCAweDAwYmUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwMjYsIDB4MDgwYywgMHg1ODQwLCAweGQwYzQsIDB4MDEyMCwgMHgyMDExLCAweDgwMTQsIDB4MDgwYywKLQkweDRjYTEsIDB4MDAyZSwgMHgwMDA1LCAweDgxZmYsIDB4MTkwNCwgMHgzNmJmLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NjAzMCwgMHhjMDhkLCAweGMwODUsIDB4YzBhYywgMHg2MDMyLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDExNTgsIDB4MDgwYywgMHg3YWI2LCAweDA4MGMsIDB4NjE5ZCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywKLQkweDc3ZTIsIDB4MDgwYywgMHg3NmNkLCAweDAwMTAsIDB4MDgwYywgMHg2MDU4LCAweDAxMmUsIDB4MDgwNCwKLQkweDM2OGQsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksIDB4MDAwMSwgMHgwODA0LCAweDM2YmYsIDB4MDgwYywKLQkweDU4NTQsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDcsIDB4MDgwNCwgMHgzNmJmLCAweDA4MGMsIDB4NmMwOSwKLQkweDAxMjAsIDB4MjAwOSwgMHgwMDA4LCAweDA4MDQsIDB4MzZiZiwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwKLQkweGQwOGMsIDB4MDE3OCwgMHgwMDI2LCAweDIwMTEsIDB4MDAxMCwgMHgwODBjLCAweDZjMzUsIDB4MDAyZSwKLQkweDAxNDAsIDB4Nzk4NCwgMHgwODBjLCAweDZjN2YsIDB4MTEyMCwgMHgyMDA5LCAweDQwMDksIDB4MDgwNCwKLQkweDM2YmYsIDB4Nzk4NCwgMHgwODBjLCAweDY3NDksIDB4MTkwNCwgMHgzNmMyLCAweDA4MGMsIDB4NGM3NCwKLQkweDA5MDQsIDB4MzZjMiwgMHgyYjAwLCAweDcwMjYsIDB4MDgwYywgMHg2YzExLCAweDc4ODgsIDB4MTE3MCwKLQkweDkwODQsIDB4MDAwNSwgMHgxMTU4LCAweDkwMGUsIDB4MDgwYywgMHg2YWFlLCAweDExMDgsIDB4YzE4NSwKLQkweGI4MDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4MDgwNCwgMHgzNjhkLCAweDA4MGMsIDB4NGM0MSwKLQkweDA5MDQsIDB4MzZiZiwgMHg5MDA2LCAweGE4NjYsIDB4YTgzMiwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwKLQkweDA4MGMsIDB4ZDE1NCwgMHgwOTA0LCAweDM2YmYsIDB4Nzg4OCwgMHhkMDk0LCAweDAxMTgsIDB4YjhkNCwKLQkweGMwOGQsIDB4YjhkNiwgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwgMHg0ZjI4LCAweDAwMDUsIDB4MjA2MSwKLQkweDE4MDAsIDB4MDgwYywgMHg1ODU0LCAweDIwMDksIDB4MDAwNywgMHgxNTYwLCAweDA4MGMsIDB4NmMwOSwKLQkweDAxMTgsIDB4MjAwOSwgMHgwMDA4LCAweDA0MzAsIDB4YTk5OCwgMHgwODBjLCAweDY3NDksIDB4MTUzMCwKLQkweDA4MGMsIDB4NGM3MiwgMHgwNTE4LCAweDA4MGMsIDB4NmMxMSwgMHhhODljLCAweDExNjgsIDB4OTA4NCwKLQkweDAwMDUsIDB4MTE1MCwgMHg5MDBlLCAweDA4MGMsIDB4NmFhZSwgMHgxMTA4LCAweGMxODUsIDB4YjgwMCwKLQkweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDAwZDAsIDB4YTg2OCwgMHhjMGZjLCAweGE4NmEsIDB4MDgwYywKLQkweGQxNTQsIDB4MTFlMCwgMHhhODljLCAweGQwOTQsIDB4MDExOCwgMHhiOGQ0LCAweGMwOGQsIDB4YjhkNiwKLQkweDIwMDksIDB4MDAwMywgMHhhODk3LCAweDQwMDUsIDB4YTk5YSwgMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwKLQkweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwgMHgwMDA1LCAweGE4OTcsIDB4NDAwMCwKLQkweGE5OWEsIDB4OTAwNiwgMHg5MThkLCAweDAwMDEsIDB4MjAwOCwgMHgwMDA1LCAweDkwMDYsIDB4MDAwNSwKLQkweGE4MzAsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywgMHgwMTQwLCAweDIwMDgsIDB4OTE4ZSwKLQkweGRlYWQsIDB4MTEyMCwgMHgyMDIxLCAweDQwMDksIDB4MDgwNCwgMHgzNjhmLCAweDkwODYsIDB4MDEwMCwKLQkweDcwMjQsIDB4MjA1OCwgMHgxMTEwLCAweDA4MDQsIDB4NTc4ZSwgMHg5MDBlLCAweDA4MGMsIDB4NmFhZSwKLQkweDExMDgsIDB4YzE4NSwgMHhiODAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDA4MDQsIDB4MzY4ZCwKLQkweDA4MGMsIDB4NTg1NCwgMHgwMTIwLCAweDIwMDksIDB4MDAwNywgMHgwODA0LCAweDM2YmYsIDB4N2Y4NCwKLQkweDdhOGMsIDB4N2I4OCwgMHg3YzljLCAweDdkOTgsIDB4MDgwYywgMHg0YzQxLCAweDExMjAsIDB4MjAwOSwKLQkweDAwMDIsIDB4MDgwNCwgMHgzNmJmLCAweDkwMGUsIDB4MjEzMCwgMHg3MTI2LCAweDcxMzIsIDB4YTg2MCwKLQkweDIwZTgsIDB4NzAzNiwgMHhhODVjLCAweDkwODAsIDB4MDAwNSwgMHg3MDJhLCAweDIwYTAsIDB4MDgwYywKLQkweDY3YjQsIDB4MTkwNCwgMHg0ZmRlLCAweDA4MGMsIDB4NmMxMSwgMHgwMTM4LCAweDA4MGMsIDB4NmMxOSwKLQkweDAxMjAsIDB4MDgwYywgMHg2YmIxLCAweDE5MDQsIDB4NGZkZSwgMHhkNzk0LCAweDExMTAsIDB4ZDc4NCwKLQkweDAxYTgsIDB4YjhjNCwgMHgyMGUwLCAweGI4YzgsIDB4OTA4MCwgMHgwMDA2LCAweDIwOTgsIDB4MzQwMCwKLQkweGQ3OTQsIDB4MDE5OCwgMHgyMGE5LCAweDAwMDgsIDB4NDAwMywgMHgyMDk4LCAweDIwYTAsIDB4M2QwMCwKLQkweDIwZTAsIDB4MjBhOSwgMHgwMDAyLCAweDA4MGMsIDB4NGExMCwgMHgwMDgwLCAweGI4YzQsIDB4MjBlMCwKLQkweGI4YzgsIDB4OTA4MCwgMHgwMDBhLCAweDIwOTgsIDB4MzQwMCwgMHgyMGE5LCAweDAwMDQsIDB4NDAwMywKLQkweDIwOTgsIDB4MjBhMCwgMHgzZDAwLCAweDIwZTAsIDB4MDgwYywgMHg0YTEwLCAweDkxODYsIDB4MDA3ZSwKLQkweDAxNzAsIDB4OTE4NiwgMHgwMDgwLCAweDAxNTgsIDB4MDgwYywgMHg2YzExLCAweDkwYzIsIDB4MDAwNiwKLQkweDEyMTAsIDB4YzFmZCwgMHgwMDIwLCAweDA4MGMsIDB4NmFhZSwgMHgxMTA4LCAweGMxZmQsIDB4NDEwNCwKLQkweGMxZmMsIDB4ZDc5NCwgMHgwNTI4LCAweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDIwNjAsIDB4OWM4MCwKLQkweDAwMDAsIDB4MjA5OCwgMHgyMGE5LCAweDAwMDIsIDB4NDAwMywgMHg5YzgwLCAweDAwMDMsIDB4MjA5OCwKLQkweDIwYTksIDB4MDAwMSwgMHg0MDA1LCAweDljODAsIDB4MDAwNCwgMHgyMDk4LCAweDM0MDAsIDB4MjBhOSwKLQkweDAwMDIsIDB4NDAwMywgMHgyMDk4LCAweDIwYTAsIDB4M2QwMCwgMHgyMGUwLCAweDA4MGMsIDB4NGEwMywKLQkweDljODAsIDB4MDAyNiwgMHgyMDk4LCAweGI4YzQsIDB4MjBlMCwgMHgyMGE5LCAweDAwMDIsIDB4NDAwMywKLQkweGQ3OTQsIDB4MDExMCwgMHg5NmIwLCAweDAwMGIsIDB4OTZiMCwgMHgwMDA1LCAweDgxMDgsIDB4MDgwYywKLQkweGIwOTQsIDB4MDExOCwgMHg5MTg2LCAweDA4MDAsIDB4MDA0MCwgMHhkNzhjLCAweDAxMjAsIDB4OTE4NiwKLQkweDA4MDAsIDB4MDE3MCwgMHgwMDE4LCAweDkxODYsIDB4MDA3ZSwgMHgwMTUwLCAweGQ3OTQsIDB4MDExOCwKLQkweDk2ODYsIDB4MDAyMCwgMHgwMDEwLCAweDk2ODYsIDB4MDAyOCwgMHgwMTUwLCAweDA4MDQsIDB4NGY2NywKLQkweDg2ZmYsIDB4MTEyMCwgMHg3MTI0LCAweDgxMGIsIDB4MDgwNCwgMHgzNjhkLCAweDcwMzMsIDB4MDAwMSwKLQkweDcxMjIsIDB4NzAyNCwgMHg5NjAwLCAweDcwMjYsIDB4NzcyZSwgMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwKLQkweGEwNmIsIDB4MDAwMCwgMHhhNjdhLCAweDcwMzQsIDB4YTA3MiwgMHg3MDI4LCAweGEwNzYsIDB4YTI4ZSwKLQkweGEzOTIsIDB4YTQ5NiwgMHhhNTlhLCAweDA4MGMsIDB4MTE0ZSwgMHg3MDA3LCAweDAwMDIsIDB4NzAxZiwKLQkweDUwMWEsIDB4MDAwNSwgMHg3MDMwLCAweDkwMDUsIDB4MTE4MCwgMHg3MTIwLCAweDcwMjgsIDB4MjBhMCwKLQkweDc3MmMsIDB4OTAzNiwgMHg3MDM0LCAweDIwZTgsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsIDB4YTI4YywKLQkweGEzOTAsIDB4YTQ5NCwgMHhhNTk4LCAweDA4MDQsIDB4NGY2NywgMHg3MTI0LCAweDgxMGIsIDB4MDgwNCwKLQkweDM2OGQsIDB4MjAyOSwgMHgwMDdlLCAweDc5ODQsIDB4N2E4OCwgMHg3YjhjLCAweDdjOTgsIDB4OTE4NCwKLQkweGZmMDAsIDB4ODAwNywgMHg5MGUyLCAweDAwMjAsIDB4MGEwNCwgMHgzNmMyLCAweDk1MDIsIDB4MGEwNCwKLQkweDM2YzIsIDB4OTE4NCwgMHgwMGZmLCAweDkwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDM2YzIsIDB4OTUwMiwKLQkweDBhMDQsIDB4MzZjMiwgMHg5Mjg0LCAweGZmMDAsIDB4ODAwNywgMHg5MGUyLCAweDAwMjAsIDB4MGEwNCwKLQkweDM2YzIsIDB4OTUwMiwgMHgwYTA0LCAweDM2YzIsIDB4OTI4NCwgMHgwMGZmLCAweDkwZTIsIDB4MDAyMCwKLQkweDBhMDQsIDB4MzZjMiwgMHg5NTAyLCAweDBhMDQsIDB4MzZjMiwgMHg5Mzg0LCAweGZmMDAsIDB4ODAwNywKLQkweDkwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDM2YzIsIDB4OTUwMiwgMHgwYTA0LCAweDM2YzIsIDB4OTM4NCwKLQkweDAwZmYsIDB4OTBlMiwgMHgwMDIwLCAweDBhMDQsIDB4MzZjMiwgMHg5NTAyLCAweDBhMDQsIDB4MzZjMiwKLQkweDk0ODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwZTIsIDB4MDAyMCwgMHgwYTA0LCAweDM2YzIsIDB4OTUwMiwKLQkweDBhMDQsIDB4MzZjMiwgMHg5NDg0LCAweDAwZmYsIDB4OTBlMiwgMHgwMDIwLCAweDBhMDQsIDB4MzZjMiwKLQkweDk1MDIsIDB4MGEwNCwgMHgzNmMyLCAweDIwNjEsIDB4MTk4OSwgMHg2MTAyLCAweDYyMDYsIDB4NjMwYSwKLQkweDY0MGUsIDB4MDgwNCwgMHgzNjhkLCAweDA4MGMsIDB4NGM0MSwgMHgwOTA0LCAweDM2YmYsIDB4MjAwOSwKLQkweDAwMTYsIDB4N2E4YywgMHg3Yjg4LCAweDdjOWMsIDB4N2Q5OCwgMHhhODVjLCAweDkwODAsIDB4MDAxOSwKLQkweGFmNjAsIDB4MDgwYywgMHg0YzhhLCAweDcwMWYsIDB4NTA5ZSwgMHgwMDA1LCAweDIwYTksIDB4MDAxNiwKLQkweDg5NmUsIDB4OGQ2ZSwgMHg4ZDZmLCAweDlkODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMTksIDB4MjA5OCwKLQkweDlkODQsIDB4MDAzZiwgMHgyMGUwLCAweDIwNjksIDB4MTg3NywgMHgyMGU5LCAweDAwMDEsIDB4MmRhMCwKLQkweDQwMDMsIDB4NjgwMCwgMHg5MDA1LCAweDA5MDQsIDB4NTEwNSwgMHg2ODA0LCAweDIwMDgsIDB4OTE4YywKLQkweGZmZjgsIDB4MTkwNCwgMHg1MTA1LCAweDY4MGMsIDB4OTAwNSwgMHgwOTA0LCAweDUxMDUsIDB4OTA4MiwKLQkweGZmMDEsIDB4MWEwNCwgMHg1MTA1LCAweDY4MTAsIDB4OTA4MiwgMHgwMDVjLCAweDA2ZjAsIDB4NjgyNCwKLQkweDIwMDgsIDB4OTA4MiwgMHgwMDA4LCAweDA2YzgsIDB4OTE4MiwgMHgwNDAwLCAweDE2YjAsIDB4MDA1NiwKLQkweDIwMjksIDB4MDAwMCwgMHgwODBjLCAweDkwNzcsIDB4MDA1ZSwgMHg2OTQ0LCAweDY4MjAsIDB4OTEwMiwKLQkweDA2NjAsIDB4NjgyMCwgMHg5MDgyLCAweDAwMTksIDB4MTY0MCwgMHg2ODI4LCAweDY5NDQsIDB4ODEwYywKLQkweDkxMDIsIDB4MDYxOCwgMHg2ODQwLCAweDkwODIsIDB4MDAwZiwgMHgxMmY4LCAweDA4MGMsIDB4MTA3MiwKLQkweDI5MDAsIDB4MDU5MCwgMHg2ODRlLCAweDAwZTYsIDB4MjA3MSwgMHgxOTMxLCAweDAwYjYsIDB4MjA1OSwKLQkweDAwMDAsIDB4MDgwYywgMHg4ZjMzLCAweDAwYmUsIDB4MDBlZSwgMHgwMWU4LCAweDA4MGMsIDB4OGM3OCwKLQkweDA4MGMsIDB4OGNjNywgMHgxMTYwLCAweDY4NTcsIDB4MDAwMCwgMHgwMGM2LCAweDZiMTAsIDB4MjA2MSwKLQkweDFhNmUsIDB4NjMwZSwgMHgwMGNlLCAweDA4MDQsIDB4MzY4ZCwgMHgwODA0LCAweDM2YzIsIDB4MDgwYywKLQkweDhjYzAsIDB4MDBlNiwgMHgyMDcxLCAweDE5MzEsIDB4MDgwYywgMHg5MGY3LCAweDA4MGMsIDB4OTEwNiwKLQkweDA4MGMsIDB4OGYxOCwgMHgwMGVlLCAweDIwMDEsIDB4MTg4YSwgMHgyMDRjLCAweDA4MGMsIDB4MTA4YiwKLQkweDIwMDEsIDB4MTg4YSwgMHgyMDAzLCAweDAwMDAsIDB4MDgwNCwgMHgzNmJmLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg5NGI4LCAweDA4MGMsIDB4OGNjMCwgMHgwMTJlLCAweDA4MDQsIDB4MzY4ZCwKLQkweDAwMDYsIDB4MDgwYywgMHg1ODQwLCAweGQwY2MsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDgwYywKLQkweDU4NDQsIDB4ZDBiYywgMHgwMDBlLCAweDAwMDUsIDB4NjE3NCwgMHg3YTg0LCAweDYzMDAsIDB4ODJmZiwKLQkweDExMTgsIDB4Nzk4NiwgMHgwODA0LCAweDM2OGQsIDB4ODNmZiwgMHgxOTA0LCAweDM2YzIsIDB4MjAwMSwKLQkweGZmZjAsIDB4OTIwMCwgMHgxYTA0LCAweDM2YzIsIDB4MjAxOSwgMHhmZmZmLCAweDYwNzgsIDB4OTMwMiwKLQkweDkyMDAsIDB4MGEwNCwgMHgzNmMyLCAweDc5ODYsIDB4NjI3NiwgMHgwODA0LCAweDM2OGQsIDB4MDgwYywKLQkweDU4NTQsIDB4MTkwNCwgMHgzNmJmLCAweDdjODgsIDB4N2Q4NCwgMHg3ZTk4LCAweDdmOGMsIDB4MDgwYywKLQkweDRjNDEsIDB4MDkwNCwgMHgzNmJmLCAweDkwMGUsIDB4OTAxZSwgMHg3MzI2LCAweDczMzIsIDB4YTg2MCwKLQkweDIwZTgsIDB4NzAzNiwgMHhhODVjLCAweDkwODAsIDB4MDAwMywgMHg3MDJhLCAweDIwYTAsIDB4OTFkOCwKLQkweDEwMDAsIDB4MmI1YywgMHg4YmZmLCAweDAxNzgsIDB4MDgwYywgMHg2YzExLCAweDAxMTgsIDB4MDgwYywKLQkweDZjMTksIDB4MTE0OCwgMHgyMGE5LCAweDAwMDEsIDB4YjgxNCwgMHg0MDA0LCAweGI4MTAsIDB4NDAwNCwKLQkweDQxMDQsIDB4OTM5OCwgMHgwMDAzLCAweDgxMDgsIDB4OTE4MiwgMHgwODAwLCAweDAxMjAsIDB4OTM4NiwKLQkweDAwM2MsIDB4MDE3MCwgMHgwYzIwLCAweDgzZmYsIDB4MTE0OCwgMHg3MjI0LCAweDkwMGUsIDB4MjAwMSwKLQkweDAwMDMsIDB4MDgwYywgMHg5NTViLCAweDIyMDgsIDB4MDgwNCwgMHgzNjhkLCAweDcwMzMsIDB4MDAwMSwKLQkweDcxMjIsIDB4NzAyNCwgMHg5MzAwLCAweDcwMjYsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsIDB4YTA2YiwKLQkweDAwMDAsIDB4YTM3YSwgMHg3MDI4LCAweGEwNzYsIDB4NzAzNCwgMHhhMDcyLCAweGE0OGUsIDB4YTU5MiwKLQkweGE2OTYsIDB4YTc5YSwgMHgwODBjLCAweDExNGUsIDB4NzAwNywgMHgwMDAyLCAweDcwMWYsIDB4NTFhOSwKLQkweDAwMDUsIDB4NzAzMCwgMHg5MDA1LCAweDExNzgsIDB4NzEyMCwgMHg3MDI4LCAweDIwYTAsIDB4OTAxZSwKLQkweDcwMzQsIDB4MjBlOCwgMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwgMHhhNDhjLCAweGE1OTAsIDB4YTY5NCwKLQkweGE3OTgsIDB4MDgwNCwgMHg1MTY3LCAweDcyMjQsIDB4OTAwZSwgMHgyMDAxLCAweDAwMDMsIDB4MDgwYywKLQkweDk1NWIsIDB4MjIwOCwgMHgwODA0LCAweDM2OGQsIDB4MDBmNiwgMHgwMGU2LCAweDA4MGMsIDB4NTg1NCwKLQkweDIwMDksIDB4MDAwNywgMHgxOTA0LCAweDUyM2MsIDB4MjA3MSwgMHgxODllLCAweDc0NWMsIDB4ODRmZiwKLQkweDIwMDksIDB4MDAwZSwgMHgxOTA0LCAweDUyM2MsIDB4YWM5YywgMHhhZDk4LCAweGFlYTQsIDB4YWZhMCwKLQkweDAwOTYsIDB4MDgwYywgMHgxMDcyLCAweDIwMDksIDB4MDAwMiwgMHgwOTA0LCAweDUyM2MsIDB4MjkwMCwKLQkweDcwNWUsIDB4OTAwZSwgMHg5MDFlLCAweDczNTYsIDB4NzM2MiwgMHhhODYwLCAweDcwNjYsIDB4YTg1YywKLQkweDkwODAsIDB4MDAwMywgMHg3MDVhLCAweDIwYTAsIDB4OTFkOCwgMHgxMDAwLCAweDJiNWMsIDB4OGJmZiwKLQkweDAxNzgsIDB4MDgwYywgMHg2YzExLCAweDAxMTgsIDB4MDgwYywgMHg2YzE5LCAweDExNDgsIDB4YjgxNCwKLQkweDIwYTksIDB4MDAwMSwgMHg0MDA0LCAweGI4MTAsIDB4NDAwNCwgMHg0MTA0LCAweDkzOTgsIDB4MDAwMywKLQkweDgxMDgsIDB4OTE4MiwgMHgwODAwLCAweDAxMjAsIDB4OTM4NiwgMHgwMDNjLCAweDAxZTgsIDB4MGMyMCwKLQkweDgzZmYsIDB4MTFjMCwgMHg3MjU0LCAweDkwMGUsIDB4MjAwMSwgMHgwMDAzLCAweDA4MGMsIDB4OTU1YiwKLQkweDIyMDgsIDB4MDA5ZSwgMHhhODk3LCAweDQwMDAsIDB4YTk5YSwgMHg3MTVjLCAweDgxZmYsIDB4MDkwYywKLQkweDBkODUsIDB4MjE0OCwgMHgwODBjLCAweDEwOGIsIDB4OTAwNiwgMHg3MDVlLCAweDkxOGQsIDB4MDAwMSwKLQkweDIwMDgsIDB4MDQxOCwgMHg3MDYzLCAweDAwMDEsIDB4NzE1MiwgMHg3MDU0LCAweDkzMDAsIDB4NzA1NiwKLQkweDIwNjEsIDB4MThiOSwgMHgyYzQ0LCAweGEzN2EsIDB4NzA1OCwgMHhhMDc2LCAweDcwNjQsIDB4YTA3MiwKLQkweGE0OGUsIDB4YTU5MiwgMHhhNjk2LCAweGE3OWEsIDB4YTA5ZiwgMHg1MjQ4LCAweDAwMGUsIDB4YTBhMiwKLQkweDA4MGMsIDB4MTE0ZSwgMHg5MDA2LCAweDAwNDgsIDB4MDA5ZSwgMHhhODk3LCAweDQwMDUsIDB4YTk5YSwKLQkweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4YTBhMCwgMHg5MDRkLCAweDA5MGMsIDB4MGQ4NSwgMHgwMGU2LCAweDIwNzEsIDB4MTg5ZSwKLQkweGEwNmMsIDB4OTA4ZSwgMHgwMTAwLCAweDAxMzgsIDB4YTg3YiwgMHgwMDMwLCAweGE4ODMsIDB4MDAwMCwKLQkweGE4OTcsIDB4NDAwMiwgMHgwMGQ4LCAweDcwNjAsIDB4OTAwNSwgMHgxMTU4LCAweDcxNTAsIDB4NzA1OCwKLQkweDIwYTAsIDB4OTAxZSwgMHg3MDY0LCAweDIwZTgsIDB4YTQ4YywgMHhhNTkwLCAweGE2OTQsIDB4YTc5OCwKLQkweDA0MjgsIDB4YTg3YiwgMHgwMDAwLCAweGE4ODMsIDB4MDAwMCwgMHhhODk3LCAweDQwMDAsIDB4NzI1NCwKLQkweDkwMGUsIDB4MjAwMSwgMHgwMDAzLCAweDA4MGMsIDB4OTU1YiwgMHhhYTlhLCAweDcxNWMsIDB4ODFmZiwKLQkweDA5MGMsIDB4MGQ4NSwgMHgyMTQ4LCAweDA4MGMsIDB4MTA4YiwgMHg3MDVmLCAweDAwMDAsIDB4YTBhMCwKLQkweDIwNDgsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg3MDEyLCAweDAxMmUsIDB4YTA5ZiwKLQkweDAwMDAsIDB4YTBhMywgMHgwMDAwLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDkxZDgsIDB4MTAwMCwKLQkweDJiNWMsIDB4OGJmZiwgMHgwMTc4LCAweDA4MGMsIDB4NmMxMSwgMHgwMTE4LCAweDA4MGMsIDB4NmMxOSwKLQkweDExNDgsIDB4YjgxNCwgMHgyMGE5LCAweDAwMDEsIDB4NDAwNCwgMHhiODEwLCAweDQwMDQsIDB4NDEwNCwKLQkweDkzOTgsIDB4MDAwMywgMHg4MTA4LCAweDkxODIsIDB4MDgwMCwgMHgwMTIwLCAweDkzODYsIDB4MDAzYywKLQkweDA1MTgsIDB4MGMyMCwgMHg4M2ZmLCAweDExZjAsIDB4NzE1NCwgMHg4MTBjLCAweGE5OWEsIDB4YTg5NywKLQkweDQwMDAsIDB4NzE1YywgMHg4MWZmLCAweDA5MGMsIDB4MGQ4NSwgMHgyMTQ4LCAweDA4MGMsIDB4MTA4YiwKLQkweDkwMDYsIDB4NzA1ZSwgMHg5MThkLCAweDAwMDEsIDB4MjAwOCwgMHhhMGEwLCAweDIwNDgsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDEyZSwgMHhhMDlmLCAweDAwMDAsIDB4YTBhMywKLQkweDAwMDAsIDB4MDA3MCwgMHg3MDYzLCAweDAwMDEsIDB4NzE1MiwgMHg3MDU0LCAweDkzMDAsIDB4NzA1NiwKLQkweGEzN2EsIDB4YTQ4ZSwgMHhhNTkyLCAweGE2OTYsIDB4YTc5YSwgMHgwODBjLCAweDExNGUsIDB4OTAwNiwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMDk2LCAweGE4OGMsIDB4OTBiZSwgMHg3MDAwLCAweDAxNDgsIDB4OTBiZSwKLQkweDcxMDAsIDB4MDEzMCwgMHg5MGJlLCAweDcyMDAsIDB4MDExOCwgMHgwMDllLCAweDA4MDQsIDB4MzZjMiwKLQkweGE4ODQsIDB4YTk4OCwgMHgwODBjLCAweDI2OGMsIDB4MTUxOCwgMHgwODBjLCAweDY3NDksIDB4MTUwMCwKLQkweDcxMjYsIDB4YmUxMiwgMHhiZDE2LCAweGFlN2MsIDB4MDgwYywgMHg0YzQxLCAweDAxYzgsIDB4MDgwYywKLQkweDRjNDEsIDB4MDFiMCwgMHgwMDllLCAweGE4NjcsIDB4MDAwMCwgMHhhODY4LCAweGMwZmQsIDB4YTg2YSwKLQkweGE4MjMsIDB4MDAwMCwgMHhhODA0LCAweDIwNDgsIDB4MDgwYywgMHhkMGNkLCAweDExMjAsIDB4MjAwOSwKLQkweDAwMDMsIDB4MDgwNCwgMHgzNmJmLCAweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDUzMTUsIDB4MDAwNSwKLQkweDAwOWUsIDB4MjAwOSwgMHgwMDAyLCAweDA4MDQsIDB4MzZiZiwgMHg3MTI0LCAweDA4MGMsIDB4MzQxZSwKLQkweGE4MjAsIDB4OTA4NiwgMHg4MDAxLCAweDExMjAsIDB4MjAwOSwgMHgwMDA0LCAweDA4MDQsIDB4MzZiZiwKLQkweDI5MDAsIDB4NzAyMiwgMHhhODA0LCAweDAwOTYsIDB4MjA0OCwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywKLQkweDkwYmMsIDB4MDAzZiwgMHg5MDg0LCAweGZmYzAsIDB4MDA5ZSwgMHg5MDgwLCAweDAwMDIsIDB4MDA3NiwKLQkweDAwMDYsIDB4MjA5OCwgMHgyMGEwLCAweDI3ZTAsIDB4MjdlOCwgMHgyMGE5LCAweDAwMmEsIDB4MDgwYywKLQkweDBmZDYsIDB4YWE2YywgMHhhYjcwLCAweGFjNzQsIDB4YWQ3OCwgMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwKLQkweGEwNmIsIDB4MDAwMCwgMHhhZTY0LCAweGFmOGMsIDB4OTdjNiwgMHg3MDAwLCAweDAxMTgsIDB4OTdjNiwKLQkweDcxMDAsIDB4MTE0OCwgMHg5NmMyLCAweDAwMDQsIDB4MDYwMCwgMHgyMDA5LCAweDAwMDQsIDB4MDAwZSwKLQkweDAwN2UsIDB4MDgwNCwgMHg0YzhkLCAweDk3YzYsIDB4NzIwMCwgMHgxMWI4LCAweDk2YzIsIDB4MDA1NCwKLQkweDAyYTAsIDB4MDAwZSwgMHgwMDdlLCAweDIwNjEsIDB4MThiOCwgMHgyYzQ0LCAweGEwNzYsIDB4YTc3MiwKLQkweGEwN2IsIDB4MDAyYSwgMHhhMjhlLCAweGEzOTIsIDB4YTQ5NiwgMHhhNTlhLCAweDA4MGMsIDB4MTE0ZSwKLQkweDcwMDcsIDB4MDAwMiwgMHg3MDFmLCAweDUzNzEsIDB4MDAwNSwgMHgwMDBlLCAweDAwN2UsIDB4MDgwNCwKLQkweDM2YzIsIDB4NzAyMCwgMHgyMDQ4LCAweGE4MDQsIDB4MjA0OCwgMHhhODA0LCAweDIwNDgsIDB4ODkwNiwKLQkweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwMiwKLQkweDIwOTgsIDB4MjBhMCwgMHgyN2UwLCAweDI3ZTgsIDB4MjBhOSwgMHgwMDJhLCAweDA4MGMsIDB4MGZkNiwKLQkweDIxMDAsIDB4MjIzOCwgMHgyMDYxLCAweDE4YjgsIDB4MmM0NCwgMHhhMjhjLCAweGEzOTAsIDB4YTQ5NCwKLQkweGE1OTgsIDB4MjAwOSwgMHgwMDJhLCAweDA4MDQsIDB4NGM4ZCwgMHg4MWZmLCAweDE5MDQsIDB4MzZiZiwKLQkweDc5OGMsIDB4MjAwMSwgMHgxOTdlLCAweDkxOGMsIDB4ODAwMCwgMHgyMTAyLCAweDA4MGMsIDB4NGM1OCwKLQkweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDZjMTEsIDB4MDEyMCwgMHgwODBjLCAweDZjMTksIDB4MTkwNCwKLQkweDM2YzIsIDB4MDgwYywgMHg2ODdiLCAweDA5MDQsIDB4MzZiZiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NmExYiwgMHgwMTJlLCAweDA5MDQsIDB4MzZiZiwgMHgyMDAxLCAweDE5N2UsIDB4MjAwNCwKLQkweGQwZmMsIDB4MTkwNCwgMHgzNjhkLCAweDA4MDQsIDB4NDZhYSwgMHhhOWEwLCAweDIwMDEsIDB4MTk3ZSwKLQkweDkxOGMsIDB4ODAwMCwgMHhjMThkLCAweDIxMDIsIDB4MDgwYywgMHg0YzY1LCAweDAxYTAsIDB4MDgwYywKLQkweDZjMTEsIDB4MDExOCwgMHgwODBjLCAweDZjMTksIDB4MTE3MCwgMHgwODBjLCAweDY4N2IsIDB4MjAwOSwKLQkweDAwMDIsIDB4MDEyOCwgMHgwODBjLCAweDZhMWIsIDB4MTE3MCwgMHgyMDA5LCAweDAwMDMsIDB4YTg5NywKLQkweDQwMDUsIDB4YTk5YSwgMHgwMDEwLCAweGE4OTcsIDB4NDAwNiwgMHg5MDBlLCAweDkwODUsIDB4MDAwMSwKLQkweDIwMDEsIDB4MDAzMCwgMHgwMDA1LCAweGE4OTcsIDB4NDAwMCwgMHgyMDAxLCAweDE5N2UsIDB4MjAwNCwKLQkweGQwZmMsIDB4MTEyOCwgMHgwODBjLCAweDU4NDgsIDB4MDExMCwgMHg5MDA2LCAweDAwMTgsIDB4OTAwZSwKLQkweDkwODUsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDAsIDB4MDAwNSwgMHg3OGE4LCAweGQwOGMsIDB4MTExOCwKLQkweGQwODQsIDB4MDkwNCwgMHg0NjFmLCAweDA4MGMsIDB4NGM3NCwgMHgwOTA0LCAweDM2YzIsIDB4MDgwYywKLQkweDRjNDEsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzNmJmLCAweDA4MGMsIDB4NmMxMSwKLQkweDAxMzAsIDB4OTA4ZSwgMHgwMDA0LCAweDAxMTgsIDB4OTA4ZSwgMHgwMDA1LCAweDE1YTAsIDB4NzhhOCwKLQkweGQwOGMsIDB4MDEyMCwgMHhiODAwLCAweGMwOGMsIDB4YjgwMiwgMHgwMDI4LCAweDA4MGMsIDB4NTg0MCwKLQkweGQwYjQsIDB4MDkwNCwgMHg0NjU5LCAweDc4ODQsIDB4OTA4ZSwgMHgwMDdlLCAweDA5MDQsIDB4NDY1OSwKLQkweDkwOGUsIDB4MDA3ZiwgMHgwOTA0LCAweDQ2NTksIDB4OTA4ZSwgMHgwMDgwLCAweDA5MDQsIDB4NDY1OSwKLQkweGI4MDAsIDB4ZDA4YywgMHgxOTA0LCAweDQ2NTksIDB4YTg2NywgMHgwMDAwLCAweGE4NjgsIDB4YzBmZCwKLQkweGE4NmEsIDB4MDgwYywgMHhkMGVjLCAweDExMjAsIDB4MjAwOSwgMHgwMDAzLCAweDA4MDQsIDB4MzZiZiwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDU0M2QsIDB4MDAwNSwgMHgwODBjLCAweDRjNzQsIDB4MDkwNCwKLQkweDM2YzIsIDB4MDgwNCwgMHg0NjU5LCAweDA4MGMsIDB4MzQ3ZCwgMHgwMTA4LCAweDAwMDUsIDB4MjAwOSwKLQkweDE4MzQsIDB4MjEwYywgMHg4MWZmLCAweDAxMjAsIDB4MjAwOSwgMHgwMDAxLCAweDA4MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4NTg1NCwgMHgwMTIwLCAweDIwMDksIDB4MDAwNywgMHgwODA0LCAweDM2YmYsIDB4MDgwYywKLQkweDZjMDksIDB4MDEyMCwgMHgyMDA5LCAweDAwMDgsIDB4MDgwNCwgMHgzNmJmLCAweGI4OWMsIDB4ZDBhNCwKLQkweDExMTgsIDB4ZDBhYywgMHgxOTA0LCAweDQ2NTksIDB4OTAwNiwgMHhhODY2LCAweGE4MzIsIDB4YTg2OCwKLQkweGMwZmQsIDB4YTg2YSwgMHgwODBjLCAweGQxNTQsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDMsIDB4MDgwNCwKLQkweDM2YmYsIDB4NzAwNywgMHgwMDAzLCAweDcwMWYsIDB4NTQ3NiwgMHgwMDA1LCAweGE4MzAsIDB4OTA4NiwKLQkweDAxMDAsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDQsIDB4MDgwNCwgMHg1NzhlLCAweDA4MGMsIDB4NGM3NCwKLQkweDA5MDQsIDB4MzZjMiwgMHgwODA0LCAweDU0MGYsIDB4ODFmZiwgMHgyMDA5LCAweDAwMDEsIDB4MTkwNCwKLQkweDM2YmYsIDB4MDgwYywgMHg1ODU0LCAweDIwMDksIDB4MDAwNywgMHgxOTA0LCAweDM2YmYsIDB4MDgwYywKLQkweDZjMDksIDB4MDEyMCwgMHgyMDA5LCAweDAwMDgsIDB4MDgwNCwgMHgzNmJmLCAweDA4MGMsIDB4NGM3NCwKLQkweDA5MDQsIDB4MzZjMiwgMHgwODBjLCAweDZjMTEsIDB4MjAwOSwgMHgwMDA5LCAweDE5MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4NGM0MSwgMHgyMDA5LCAweDAwMDIsIDB4MDkwNCwgMHgzNmJmLCAweDkwMDYsIDB4YTg2NiwKLQkweGE4MzIsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4Nzk4OCwgMHhhOTVhLCAweDkxOTQsIDB4ZmQwMCwKLQkweDkxOGMsIDB4MDBmZiwgMHg5MDA2LCAweDgyZmYsIDB4MTEyOCwgMHhjMGVkLCAweGE5NTIsIDB4Nzk4YywKLQkweGE5NTYsIDB4MDAzOCwgMHg5MjhlLCAweDAxMDAsIDB4MTkwNCwgMHgzNmMyLCAweGMwZTUsIDB4YTk1MiwKLQkweGE5NTYsIDB4YTgzZSwgMHgwODBjLCAweGQzYjcsIDB4MjAwOSwgMHgwMDAzLCAweDA5MDQsIDB4MzZiZiwKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDU0Y2QsIDB4MDAwNSwgMHhhODMwLCAweDkwODYsIDB4MDEwMCwKLQkweDIwMDksIDB4MDAwNCwgMHgwOTA0LCAweDM2YmYsIDB4MDgwNCwgMHgzNjhkLCAweDdhYTgsIDB4OTI4NCwKLQkweGMwMDAsIDB4MDE0OCwgMHhkMmVjLCAweDAxYTAsIDB4MDgwYywgMHg1ODU0LCAweDExODgsIDB4MjAwOSwKLQkweDAwMTQsIDB4MDgwNCwgMHgzNmJmLCAweGQyZGMsIDB4MTU3OCwgMHg4MWZmLCAweDIwMDksIDB4MDAwMSwKLQkweDE5MDQsIDB4MzZiZiwgMHgwODBjLCAweDU4NTQsIDB4MjAwOSwgMHgwMDA3LCAweDE5MDQsIDB4MzZiZiwKLQkweGQyZjQsIDB4MDEzOCwgMHg5Mjg0LCAweDUwMDAsIDB4YzBkNSwgMHgwODBjLCAweDU4MWEsIDB4MDgwNCwKLQkweDM2OGQsIDB4ZDJmYywgMHgwMTYwLCAweDA4MGMsIDB4NGM3NCwgMHgwOTA0LCAweDM2YzIsIDB4Nzk4NCwKLQkweDkyODQsIDB4OTAwMCwgMHhjMGQ1LCAweDA4MGMsIDB4NTdlOSwgMHgwODA0LCAweDM2OGQsIDB4MDgwYywKLQkweDRjNzQsIDB4MDkwNCwgMHgzNmMyLCAweGI4MDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwNiwKLQkweDIwMDksIDB4MDAwOSwgMHgxOTA0LCAweDU1YmMsIDB4MDgwYywgMHg0YzQxLCAweDIwMDksIDB4MDAwMiwKLQkweDA5MDQsIDB4NTViYywgMHhhODVjLCAweDkwODAsIDB4MDAxYiwgMHhhZjYwLCAweDIwMDksIDB4MDAwOCwKLQkweDdhOGMsIDB4N2I4OCwgMHg3YzljLCAweDdkOTgsIDB4MDgwYywgMHg0YzhhLCAweDcwMWYsIDB4NTUyOSwKLQkweDAwMDUsIDB4YTg2YywgMHg5MDg2LCAweDA1MDAsIDB4MTEzOCwgMHhhODcwLCAweDkwMDUsIDB4MTEyMCwKLQkweGE4NzQsIDB4OTA4NCwgMHhmZjAwLCAweDAxMTAsIDB4MTkwNCwgMHgzNmMyLCAweGE4NjYsIDB4YTgzMiwKLQkweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDA4MGMsIDB4NGM3NCwgMHgxMTEwLCAweDA4MDQsIDB4MzZjMiwKLQkweDIwMDksIDB4MDA0MywgMHgwODBjLCAweGQ0MjMsIDB4MjAwOSwgMHgwMDAzLCAweDA5MDQsIDB4NTViYywKLQkweDcwMDcsIDB4MDAwMywgMHg3MDFmLCAweDU1NGQsIDB4MDAwNSwgMHhhODMwLCAweDkwODYsIDB4MDEwMCwKLQkweDIwMDksIDB4MDAwNCwgMHgwOTA0LCAweDU1YmMsIDB4Nzk4NCwgMHg3YWE4LCAweDkyODQsIDB4MTAwMCwKLQkweGMwZDUsIDB4MDgwYywgMHg1N2U5LCAweDA4MDQsIDB4MzY4ZCwgMHgwMGM2LCAweGFhYjAsIDB4OTI4NCwKLQkweGMwMDAsIDB4MDE0OCwgMHhkMmVjLCAweDAxNzAsIDB4MDgwYywgMHg1ODU0LCAweDExNTgsIDB4MjAwOSwKLQkweDAwMTQsIDB4MDgwNCwgMHg1NWFiLCAweDIwNjEsIDB4MTgwMCwgMHgwODBjLCAweDU4NTQsIDB4MjAwOSwKLQkweDAwMDcsIDB4MTVjOCwgMHhkMmY0LCAweDAxMzAsIDB4OTI4NCwgMHg1MDAwLCAweGMwZDUsIDB4MDgwYywKLQkweDU4MWEsIDB4MDA1OCwgMHhkMmZjLCAweDAxODAsIDB4MDgwYywgMHg0YzcyLCAweDA1OTAsIDB4YTk5OCwKLQkweDkyODQsIDB4OTAwMCwgMHhjMGQ1LCAweDA4MGMsIDB4NTdlOSwgMHhhODdiLCAweDAwMDAsIDB4YTg4MywKLQkweDAwMDAsIDB4YTg5NywgMHg0MDAwLCAweDA0MzgsIDB4MDgwYywgMHg0YzcyLCAweDA1MTAsIDB4MDgwYywKLQkweDZjMTEsIDB4MjAwOSwgMHgwMDA5LCAweDExYjgsIDB4YThjNCwgMHg5MDg2LCAweDA1MDAsIDB4MTFjOCwKLQkweGE4YzgsIDB4OTAwNSwgMHgxMWIwLCAweGE4Y2MsIDB4OTA4NCwgMHhmZjAwLCAweDExOTAsIDB4MDgwYywKLQkweDRjNzIsIDB4MTEwOCwgMHgwMDcwLCAweDIwMDksIDB4MDA0YiwgMHgwODBjLCAweGQ0MjMsIDB4MjAwOSwKLQkweDAwMDMsIDB4MDEwOCwgMHgwMDc4LCAweDA0MzEsIDB4MTljMCwgMHhhODk3LCAweDQwMDUsIDB4YTk5YSwKLQkweDAwMTAsIDB4YTg5NywgMHg0MDA2LCAweDkwMGUsIDB4OTA4NSwgMHgwMDAxLCAweDIwMDEsIDB4MDAzMCwKLQkweDAwY2UsIDB4MDAwNSwgMHg5MDA2LCAweDBjZTAsIDB4N2FhOCwgMHhkMmRjLCAweDA5MDQsIDB4MzZiZiwKLQkweDAwMTYsIDB4Nzk4NCwgMHg5Mjg0LCAweDEwMDAsIDB4YzBmZCwgMHgwODBjLCAweDU3ZTksIDB4MDAxZSwKLQkweDE5MDQsIDB4MzZiZiwgMHgwODA0LCAweDM2OGQsIDB4MDBmNiwgMHgyZDc4LCAweGFhYjAsIDB4MDAyMSwKLQkweDAwZmUsIDB4MDAwNSwgMHhhYWIwLCAweGMyZDUsIDB4ZDJkYywgMHgwMTUwLCAweDAwMTYsIDB4YTk5OCwKLQkweDkyODQsIDB4MTQwMCwgMHhjMGZkLCAweDA4MGMsIDB4NTdlOSwgMHgwMDFlLCAweDkwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4ODFmZiwgMHgwMTIwLCAweDIwMDksIDB4MDAwMSwgMHgwODA0LCAweDM2YmYsIDB4MDgwYywKLQkweDU4NTQsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDcsIDB4MDgwNCwgMHgzNmJmLCAweDc5ODQsIDB4N2VhOCwKLQkweDk2YjQsIDB4MDBmZiwgMHgwODBjLCAweDY3YjQsIDB4MTkwNCwgMHgzNmMyLCAweDkxODYsIDB4MDA3ZiwKLQkweDAxMzgsIDB4MDgwYywgMHg2YzExLCAweDAxMjAsIDB4MjAwOSwgMHgwMDA5LCAweDA4MDQsIDB4MzZiZiwKLQkweDA4MGMsIDB4NGM0MSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM2YmYsIDB4YTg2NywKLQkweDAwMDAsIDB4YTg2OCwgMHhjMGZkLCAweGE4NmEsIDB4MjAwMSwgMHgwMTAwLCAweDgwMDcsIDB4YTgwYSwKLQkweDA4MGMsIDB4ZDEwNiwgMHgxMTIwLCAweDIwMDksIDB4MDAwMywgMHgwODA0LCAweDM2YmYsIDB4NzAwNywKLQkweDAwMDMsIDB4NzAxZiwgMHg1NjFjLCAweDAwMDUsIDB4YTgwOCwgMHg4MDA3LCAweDkwODYsIDB4MDEwMCwKLQkweDExMjAsIDB4MjAwOSwgMHgwMDA0LCAweDA4MDQsIDB4MzZiZiwgMHhhOGUwLCAweGE4NjYsIDB4YTgxMCwKLQkweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDgwMGMsIDB4YTgxNCwgMHg4MDA3LCAweDkwODQsIDB4MDBmZiwKLQkweDgwMDQsIDB4OTA4MCwgMHgwMDAyLCAweDkxMDgsIDB4ODkwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywKLQkweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwNCwgMHg3YThjLCAweDdiODgsIDB4N2M5YywKLQkweDdkOTgsIDB4MDgwNCwgMHg0YzhkLCAweDA4MGMsIDB4NGM0MSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMiwKLQkweDA4MDQsIDB4MzZiZiwgMHg3OTg0LCAweDkxOTQsIDB4ZmYwMCwgMHg5MThjLCAweDAwZmYsIDB4ODIxNywKLQkweDgyZmYsIDB4MTExOCwgMHg3MDIzLCAweDE5YjQsIDB4MDA0MCwgMHg5MmM2LCAweDAwMDEsIDB4MTExOCwKLQkweDcwMjMsIDB4MTljZSwgMHgwMDEwLCAweDA4MDQsIDB4MzZjMiwgMHgyMDA5LCAweDAwMWEsIDB4N2E4YywKLQkweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweGFmNjAsIDB4MDgwYywKLQkweDRjOGEsIDB4NzAxZiwgMHg1NjZjLCAweDAwMDUsIDB4MjAwMSwgMHgxODJlLCAweDIwMDMsIDB4MDAwMSwKLQkweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDIwOTgsIDB4YTg2MCwgMHgyMGUwLCAweDIwYTksIDB4MDAxYSwKLQkweDcwMjAsIDB4MjBhMCwgMHgyMGU5LCAweDAwMDEsIDB4NDAwMywgMHgwODA0LCAweDM2OGQsIDB4MDgwYywKLQkweDRjNDEsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzNmJmLCAweDc5ODQsIDB4OTE5NCwKLQkweGZmMDAsIDB4OTE4YywgMHgwMGZmLCAweDgyMTcsIDB4ODJmZiwgMHgxMTE4LCAweDIwOTksIDB4MTliNCwKLQkweDAwNDAsIDB4OTJjNiwgMHgwMDAxLCAweDExMTgsIDB4MjA5OSwgMHgxOWNlLCAweDAwMTAsIDB4MDgwNCwKLQkweDM2YzIsIDB4YTg1YywgMHg5MDgwLCAweDAwMTksIDB4MjBhMCwgMHhhODYwLCAweDIwZTgsIDB4MjBhOSwKLQkweDAwMWEsIDB4MjBlMSwgMHgwMDAxLCAweDQwMDMsIDB4MjAwOSwgMHgwMDFhLCAweDdhOGMsIDB4N2I4OCwKLQkweDdjOWMsIDB4N2Q5OCwgMHhhODVjLCAweDkwODAsIDB4MDAxOSwgMHhhZjYwLCAweDA4MDQsIDB4NGM4ZCwKLQkweDc4ODQsIDB4OTA4YSwgMHgxMDAwLCAweDFhMDQsIDB4MzZjMiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweDkxMDgsIDB4MDBjNiwgMHgyMDYxLCAweDFhMDQsIDB4NjE0YSwKLQkweDAwY2UsIDB4MDEyZSwgMHgwODA0LCAweDM2OGQsIDB4MDBjNiwgMHgwODBjLCAweDc3OWUsIDB4MTE2MCwKLQkweDA4MGMsIDB4N2FiNiwgMHgwODBjLCAweDYxOWQsIDB4OTA4NSwgMHgwMDAxLCAweDA4MGMsIDB4NzdlMiwKLQkweDA4MGMsIDB4NzZjZCwgMHgwODBjLCAweDBkODUsIDB4MjA2MSwgMHgxODAwLCAweDYwMzAsIDB4YzA5ZCwKLQkweDYwMzIsIDB4MDgwYywgMHg2MDU4LCAweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDIwMDEsIDB4MTgwMCwKLQkweDIwMDQsIDB4OTA4ZSwgMHgwMDAwLCAweDA5MDQsIDB4MzZiZiwgMHg3ODg0LCAweDkwMDUsIDB4MDE4OCwKLQkweDc4ODgsIDB4MjA2MSwgMHgxOTljLCAweDJjMGMsIDB4MjA2MiwgMHgwODBjLCAweDJhNjcsIDB4MDFhMCwKLQkweDA4MGMsIDB4MmE2ZiwgMHgwMTg4LCAweDA4MGMsIDB4MmE3NywgMHgwMTcwLCAweDIxNjIsIDB4MDgwNCwKLQkweDM2YzIsIDB4MjA2MSwgMHgwMTAwLCAweDYwMzgsIDB4OTA4NiwgMHgwMDA3LCAweDExMTgsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDAsIDB4Nzg4NCwgMHg5MDg2LCAweDAwMDIsIDB4MTVhOCwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDI4LCAweGMwOWMsIDB4NjAyYSwgMHgwODBjLCAweGFjZmMsIDB4MDAyNiwKLQkweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweGE2MmIsIDB4MjAxMSwgMHgwMDAyLCAweDA4MGMsIDB4YTYzNSwKLQkweDAwMmUsIDB4MDgwYywgMHhhNTE2LCAweDAwMzYsIDB4OTAxZSwgMHgwODBjLCAweGE1OTYsIDB4MDAzZSwKLQkweDA4MGMsIDB4YWQxOCwgMHg2MGUzLCAweDAwMDAsIDB4MDgwYywgMHhlZWQ5LCAweDA4MGMsIDB4ZWVmNCwKLQkweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDc3ZTIsIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjAwMSwKLQkweDE4MDAsIDB4MjAwMywgMHgwMDA0LCAweDIwMDEsIDB4MTlhOCwgMHgyMDAzLCAweDAwMDAsIDB4MDAyNiwKLQkweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDJhZDMsIDB4MDAyZSwgMHgwMGNlLCAweDA4MDQsIDB4MzY4ZCwKLQkweDgxZmYsIDB4MDEyMCwgMHgyMDA5LCAweDAwMDEsIDB4MDgwNCwgMHgzNmJmLCAweDA4MGMsIDB4NTg1NCwKLQkweDAxMjAsIDB4MjAwOSwgMHgwMDA3LCAweDA4MDQsIDB4MzZiZiwgMHg3OTg0LCAweDdlYTgsIDB4OTZiNCwKLQkweDAwZmYsIDB4MDgwYywgMHg2N2I0LCAweDE5MDQsIDB4MzZjMiwgMHg5MTg2LCAweDAwN2YsIDB4MDEzOCwKLQkweDA4MGMsIDB4NmMxMSwgMHgwMTIwLCAweDIwMDksIDB4MDAwOSwgMHgwODA0LCAweDM2YmYsIDB4MDgwYywKLQkweDRjNDEsIDB4MTEyMCwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHgzNmJmLCAweGE4NjcsIDB4MDAwMCwKLQkweGE4NjgsIDB4YzBmZCwgMHhhODZhLCAweDA4MGMsIDB4ZDEwOSwgMHgxMTIwLCAweDIwMDksIDB4MDAwMywKLQkweDA4MDQsIDB4MzZiZiwgMHg3MDA3LCAweDAwMDMsIDB4NzAxZiwgMHg1Nzc3LCAweDAwMDUsIDB4YTgzMCwKLQkweDkwODYsIDB4MDEwMCwgMHgxMTIwLCAweDIwMDksIDB4MDAwNCwgMHgwODA0LCAweDM2YmYsIDB4YThlMCwKLQkweGE4NjYsIDB4YTgzNCwgMHg4MDA3LCAweDgwMGMsIDB4YTg1YywgMHg5MDgwLCAweDAwMGMsIDB4N2E4YywKLQkweDdiODgsIDB4N2M5YywgMHg3ZDk4LCAweGFmNjAsIDB4MDgwNCwgMHg0YzhkLCAweGE4OTgsIDB4OTA4NiwKLQkweDAwMGQsIDB4MTkwNCwgMHgzNmJmLCAweDIwMjEsIDB4NDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDBlMDQsIDB4NTc5YiwgMHgwMDEwLCAweDAxMmUsIDB4MGNjMCwgMHg3YzM2LCAweDk0ODYsIDB4NDAwMCwKLQkweDAxMTgsIDB4NzgzMywgMHgwMDExLCAweDAwMTAsIDB4NzgzMywgMHgwMDEwLCAweDc4ODMsIDB4NDAwNSwKLQkweGE5OTgsIDB4Nzk4NiwgMHhhOWE0LCAweDc5OWEsIDB4YTlhOCwgMHg3OTllLCAweDA4MGMsIDB4NGM3ZCwKLQkweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTIwMCwKLQkweDcwMDcsIDB4MDAwMSwgMHgyMDkxLCAweDUwMDAsIDB4NzAwZiwgMHgwMDAwLCAweDAxMmUsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwYzYsIDB4MjA2MSwgMHgxYTA0LCAweDc5ODQsIDB4NjE1YSwKLQkweDYxNTYsIDB4NjA1ZiwgMHgwMDAwLCAweDYwNTMsIDB4MDAwOSwgMHg3ODk4LCAweDYwNzIsIDB4Nzg5YywKLQkweDYwNmUsIDB4Nzg4OCwgMHg2MDZhLCAweDc4OGMsIDB4NjA2NiwgMHgyMDAxLCAweDFhMTQsIDB4MjA0NCwKLQkweDIwMDEsIDB4MWExYiwgMHhhMDc2LCAweGEwNjAsIDB4YTA3MiwgMHhhMDdiLCAweDAwMDEsIDB4YTA3ZiwKLQkweDAwMDIsIDB4YTA2YiwgMHgwMDAwLCAweGEwOWYsIDB4MDAwMCwgMHgwMGNlLCAweDAxMmUsIDB4MDgwNCwKLQkweDM2OGQsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDBiNiwgMHgwMGM2LCAweDkwZTQsIDB4YzAwMCwKLQkweDAxOTgsIDB4MDAwNiwgMHhkMGQ0LCAweDAxNjAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMjksIDB4MDgwYywKLQkweGFjZmMsIDB4MDEwNiwgMHgwODBjLCAweDM0NDIsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4MDAzZSwKLQkweDA4MGMsIDB4Y2Y2OCwgMHgwMDBlLCAweDExOTgsIDB4ZDBlNCwgMHgwMTYwLCAweDkxODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA1ZCwgMHgwMTYwLCAweDA4MGMsIDB4NjFiNywgMHgwODBjLCAweGIwOTQsIDB4MDExMCwKLQkweGI4MTcsIDB4MDAwMCwgMHg5MDA2LCAweDAwY2UsIDB4MDBiZSwgMHgwMTJlLCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MGNjOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMTU2LCAweDIwMTAsIDB4OTAwZSwKLQkweDIwYTksIDB4MDgwMCwgMHgwMDE2LCAweDkxODAsIDB4MTAwMCwgMHgyMDA0LCAweDkwMDUsIDB4MDE4OCwKLQkweDkxODYsIDB4MDA3ZSwgMHgwMTcwLCAweDkxODYsIDB4MDA3ZiwgMHgwMTU4LCAweDkxODYsIDB4MDA4MCwKLQkweDAxNDAsIDB4OTE4NiwgMHgwMGZmLCAweDAxMjgsIDB4MDAyNiwgMHgyMjAwLCAweDA4MGMsIDB4NTdlOSwKLQkweDAwMmUsIDB4MDAxZSwgMHg4MTA4LCAweDFmMDQsIDB4NTgyMiwgMHgwMTVlLCAweDAxMmUsIDB4MDAwNSwKLQkweDIwMDEsIDB4MTg0OCwgMHgyMDA0LCAweDAwMDUsIDB4MjAwMSwgMHgxODY3LCAweDIwMDQsIDB4MDAwNSwKLQkweDAwMDYsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsIDB4ZDBkNCwgMHgwMDBlLCAweDAwMDUsIDB4MjAwMSwKLQkweDE4MGUsIDB4MjAwNCwgMHhkMGI0LCAweDAwMDUsIDB4MjAwMSwgMHgxODAwLCAweDIwMDQsIDB4OTA4NiwKLQkweDAwMDMsIDB4MDAwNSwgMHgwMDE2LCAweDAwZTYsIDB4MjA3MSwgMHgxODllLCAweDcxMDgsIDB4OTEwZCwKLQkweDcxMGEsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4NzlhNCwgMHg4MWZmLCAweDA5MDQsIDB4MzZjMiwKLQkweDkxODIsIDB4MDA4MSwgMHgxYTA0LCAweDM2YzIsIDB4ODEwYywgMHgwMDE2LCAweDA4MGMsIDB4NGM0MSwKLQkweDAxNzAsIDB4MDgwYywgMHgwZjYxLCAweDIxMDAsIDB4MjIzOCwgMHg3ZDg0LCAweDdjODgsIDB4N2I4YywKLQkweDdhOTAsIDB4MDAxZSwgMHgwODBjLCAweDRjOGEsIDB4NzAxZiwgMHg1ODg0LCAweDAwMDUsIDB4MDAxZSwKLQkweDIwMDksIDB4MDAwMiwgMHgwODA0LCAweDM2YmYsIDB4MjA3OSwgMHgwMDAwLCAweDdkOTQsIDB4N2M5OCwKLQkweDdiYTgsIDB4N2FhYywgMHg3OWE0LCAweDgxMGMsIDB4MjA2MSwgMHgxOGI4LCAweDJjNDQsIDB4YTc3MCwKLQkweGEwNzQsIDB4MjA3MSwgMHgxODllLCAweDA4MGMsIDB4NGM4ZCwgMHg3MDFmLCAweDU4OTgsIDB4MDAwNSwKLQkweDIwNjEsIDB4MThiOCwgMHgyYzQ0LCAweDAwMTYsIDB4MDAyNiwgMHhhMjcwLCAweGExNzQsIDB4MDgwYywKLQkweDBmNjksIDB4MDAyZSwgMHgwMDFlLCAweDA4MGMsIDB4MTAxNiwgMHg5MDA2LCAweGE4MDIsIDB4YTgwNiwKLQkweDA4MDQsIDB4MzY4ZCwgMHgwMTI2LCAweDAxNTYsIDB4MDEzNiwgMHgwMTQ2LCAweDAxYzYsIDB4MDFkNiwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDAwZjYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksIDB4MDIwMCwKLQkweDIwNzEsIDB4MTgwMCwgMHg2MDQ0LCAweGQwYTQsIDB4MTFlOCwgMHhkMDg0LCAweDAxMTgsIDB4MDgwYywKLQkweDVhNTgsIDB4MDA2OCwgMHhkMDhjLCAweDAxMTgsIDB4MDgwYywgMHg1OTYxLCAweDAwNDAsIDB4ZDA5NCwKLQkweDAxMTgsIDB4MDgwYywgMHg1OTMxLCAweDAwMTgsIDB4ZDA5YywgMHgwMTA4LCAweDAwOTksIDB4MDBmZSwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAxZGUsIDB4MDFjZSwgMHgwMTRlLCAweDAxM2UsIDB4MDE1ZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwMDE2LCAweDYxMjgsIDB4ZDE5YywgMHgxMTEwLCAweGMxOWQsIDB4NjEyYSwKLQkweDAwMWUsIDB4MGM2OCwgMHg3MDMwLCAweGQwOWMsIDB4MTEyMCwgMHg2MDA0LCAweDkwODUsIDB4MDAwMiwKLQkweDYwMDYsIDB4NzA5OCwgMHg5MDA1LCAweDAxMjAsIDB4NzA5YiwgMHgwMDAwLCAweDcwOTMsIDB4MDAwMCwKLQkweDYyNGMsIDB4OTI4NiwgMHhmMGYwLCAweDExNTAsIDB4NjA0OCwgMHg5MDg2LCAweGYwZjAsIDB4MDEzMCwKLQkweDYyNGEsIDB4NjA0MywgMHgwMDkwLCAweDYwNDMsIDB4MDAxMCwgMHgwNDkwLCAweDkyOTQsIDB4ZmYwMCwKLQkweDkyOTYsIDB4ZjcwMCwgMHgwMTc4LCAweDcxMzgsIDB4ZDFhNCwgMHgxMTYwLCAweDYyNDAsIDB4OTI5NSwKLQkweDAxMDAsIDB4NjI0MiwgMHg5Mjk0LCAweDAwMTAsIDB4MDEyOCwgMHgyMDA5LCAweDAwZjcsIDB4MDgwYywKLQkweDYxMTksIDB4MDBmMCwgMHg2MDQwLCAweDkwODQsIDB4MDAxMCwgMHg5MDg1LCAweDAxNDAsIDB4NjA0MiwKLQkweDYwNDMsIDB4MDAwMCwgMHg3MDg3LCAweDAwMDAsIDB4NzBhMywgMHgwMDAxLCAweDcwYzcsIDB4MDAwMCwKLQkweDcwZGYsIDB4MDAwMCwgMHgyMDA5LCAweDFkODAsIDB4MjAwYiwgMHgwMDAwLCAweDcwOTcsIDB4MDAwMCwKLQkweDcwOGIsIDB4MDAwZiwgMHgyMDA5LCAweDAwMGYsIDB4MjAxMSwgMHg1ZmZiLCAweDA4MGMsIDB4OGE1ZCwKLQkweDAwMDUsIDB4MjAwMSwgMHgxODY5LCAweDIwMDQsIDB4ZDA4YywgMHgwMTEwLCAweDcwNWYsIDB4ZmZmZiwKLQkweDcwODgsIDB4OTAwNSwgMHgxNTI4LCAweDIwMTEsIDB4NWZmYiwgMHgwODBjLCAweDg5OTMsIDB4NjA0MCwKLQkweDkwOTQsIDB4MDAxMCwgMHg5Mjg1LCAweDAwMjAsIDB4NjA0MiwgMHgyMGE5LCAweDAwYzgsIDB4NjA0NCwKLQkweGQwOGMsIDB4MTE2OCwgMHgxZjA0LCAweDU5NDcsIDB4NjI0MiwgMHg3MDliLCAweDAwMDAsIDB4NjA0MCwKLQkweDkwOTQsIDB4MDAxMCwgMHg5Mjg1LCAweDAwODAsIDB4NjA0MiwgMHg2MjQyLCAweDAwNDgsIDB4NjI0MiwKLQkweDcwOWIsIDB4MDAwMCwgMHg3MDhmLCAweDAwMDAsIDB4OTAwNiwgMHgwODBjLCAweDYxYTIsIDB4MDAwMCwKLQkweDAwMDUsIDB4NzA4YywgMHg5MDhhLCAweDAwMDMsIDB4MWEwYywgMHgwZDg1LCAweDAwMGIsIDB4MDAwNSwKLQkweDU5NmIsIDB4NTliYywgMHg1YTU3LCAweDAwZjYsIDB4MDAxNiwgMHg2OTAwLCAweDkxOGMsIDB4MDgwMCwKLQkweDcwOGYsIDB4MDAwMSwgMHgyMDAxLCAweDAxNWQsIDB4MjAwMywgMHgwMDAwLCAweDY4MDMsIDB4MDBmYywKLQkweDIwYTksIDB4MDAwNCwgMHg2ODAwLCAweDkwODQsIDB4MDBmYywgMHgwMTIwLCAweDFmMDQsIDB4NTk3YSwKLQkweDA4MGMsIDB4MGQ4NSwgMHg2OGEwLCAweDY4YTIsIDB4Njg5YywgMHg2ODllLCAweDY4OTgsIDB4Njg5YSwKLQkweGEwMDEsIDB4OTE4ZCwgMHgxNjAwLCAweDY5MDIsIDB4MDAxZSwgMHg2ODM3LCAweDAwMjAsIDB4MDgwYywKLQkweDYxN2UsIDB4MjA3OSwgMHgxZDAwLCAweDc4MzMsIDB4MTEwMSwgMHg3ODM3LCAweDAwMDAsIDB4MjBlMSwKLQkweDAwMDEsIDB4MjA5OSwgMHgxODA1LCAweDIwZTksIDB4MDAwMSwgMHgyMGExLCAweDFkMGUsIDB4MjBhOSwKLQkweDAwMDQsIDB4NDAwMywgMHgwODBjLCAweGFhZjEsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MWQwMCwKLQkweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAyNDAsIDB4MjBhOSwgMHgwMDE0LCAweDQwMDMsIDB4NjBjMywKLQkweDAwMGMsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4NjAyYywgMHgwMGZlLCAweDkwMDYsIDB4NzA5MiwKLQkweDYwNDMsIDB4MDAwOCwgMHg2MDQyLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDcwOTMsIDB4MDAwMCwKLQkweDkwMjUsIDB4MDkwNCwgMHg1YTM0LCAweDYwMjAsIDB4ZDBiNCwgMHgxOTA0LCAweDVhMzIsIDB4NzFhMCwKLQkweDgxZmYsIDB4MDkwNCwgMHg1YTIwLCAweDk0ODYsIDB4MDAwYywgMHgxOTA0LCAweDVhMmQsIDB4OTQ4MCwKLQkweDAwMTgsIDB4ODAwNCwgMHgyMGE4LCAweDA4MGMsIDB4NjE3NywgMHgyMDExLCAweDAyNjAsIDB4MjAxOSwKLQkweDFkMDAsIDB4MjIwYywgMHgyMzA0LCAweDkxMDYsIDB4MTFlOCwgMHg4MjEwLCAweDgzMTgsIDB4MWYwNCwKLQkweDU5ZDksIDB4NjA0MywgMHgwMDA0LCAweDIwNjEsIDB4MDE0MCwgMHg2MDViLCAweGJjOTQsIDB4NjA1ZiwKLQkweGYwZjAsIDB4MjA2MSwgMHgwMTAwLCAweDYwNDMsIDB4MDAwNiwgMHg3MDhmLCAweDAwMDIsIDB4NzA5YiwKLQkweDAwMDIsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDhhNWQsIDB4MDgwYywKLQkweDYxN2UsIDB4MDRjMCwgMHgwODBjLCAweDYxNzcsIDB4MjA3OSwgMHgwMjYwLCAweDc5MzAsIDB4OTE4ZSwKLQkweDExMDEsIDB4MTU1OCwgMHg3ODM0LCAweDkwMDUsIDB4MTU0MCwgMHg3OTAwLCAweDkxOGMsIDB4MDBmZiwKLQkweDExMTgsIDB4NzgwNCwgMHg5MDA1LCAweDAxOTAsIDB4MDgwYywgMHg2MTc3LCAweDIwMTEsIDB4MDI2ZSwKLQkweDIwMTksIDB4MTgwNSwgMHgyMGE5LCAweDAwMDQsIDB4MjIwYywgMHgyMzA0LCAweDkxMDIsIDB4MDIzMCwKLQkweDExYTAsIDB4ODIxMCwgMHg4MzE4LCAweDFmMDQsIDB4NWExNCwgMHgwMDc4LCAweDcwYTMsIDB4MDAwMCwKLQkweDA4MGMsIDB4NjE3NywgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjYwLCAweDIwZTksIDB4MDAwMSwKLQkweDIwYTEsIDB4MWQwMCwgMHgyMGE5LCAweDAwMTQsIDB4NDAwMywgMHg2MDQzLCAweDAwMDgsIDB4NjA0MywKLQkweDAwMDAsIDB4MDAxMCwgMHgwMGZlLCAweDAwMDUsIDB4NjA0MCwgMHg5MDg1LCAweDAxMDAsIDB4NjA0MiwKLQkweDYwMjAsIDB4ZDBiNCwgMHgxZGI4LCAweDA4MGMsIDB4YWFmMSwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwKLQkweDFkMDAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMTQsIDB4NDAwMywKLQkweDYwYzMsIDB4MDAwYywgMHgyMDExLCAweDE5ZjUsIDB4MjAxMywgMHgwMDAwLCAweDcwOTMsIDB4MDAwMCwKLQkweDYwYTMsIDB4MDA1NiwgMHg2MGE3LCAweDk1NzUsIDB4MDgwYywgMHhhMjkzLCAweDA4ZDgsIDB4MDAwNSwKLQkweDcwOTgsIDB4OTA4YSwgMHgwMDFkLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDBiLCAweDAwMDUsIDB4NWE4OSwKLQkweDVhOWMsIDB4NWFjNSwgMHg1YWU1LCAweDViMGIsIDB4NWIzYSwgMHg1YjYwLCAweDViOTgsIDB4NWJiZSwKLQkweDViZWMsIDB4NWMyNywgMHg1YzVmLCAweDVjN2QsIDB4NWNhOCwgMHg1Y2NhLCAweDVjZTUsIDB4NWNlZiwKLQkweDVkMjMsIDB4NWQ0OSwgMHg1ZDc4LCAweDVkOWUsIDB4NWRkNiwgMHg1ZTFhLCAweDVlNTcsIDB4NWU3OCwKLQkweDVlZDEsIDB4NWVmMywgMHg1ZjIxLCAweDVmMjEsIDB4MDBjNiwgMHgyMDYxLCAweDE4MDAsIDB4NjAwMywKLQkweDAwMDcsIDB4MjA2MSwgMHgwMTAwLCAweDYwMDQsIDB4OTA4NCwgMHhmZmY5LCAweDYwMDYsIDB4MDBjZSwKLQkweDAwMDUsIDB4MjA2MSwgMHgwMTQwLCAweDYwNWIsIDB4YmM5NCwgMHg2MDVmLCAweGYwZjAsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjA0MywgMHgwMDAyLCAweDcwOWIsIDB4MDAwMSwgMHgyMDA5LCAweDA3ZDAsIDB4MjAxMSwKLQkweDYwMDIsIDB4MDgwYywgMHg4YTVkLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwODYsIDB4MDAxNCwKLQkweDE1MTAsIDB4NjA0MiwgMHg2MDIwLCAweGQwYjQsIDB4MTFmMCwgMHgwODBjLCAweDYxNzcsIDB4MjA3OSwKLQkweDAyNjAsIDB4N2EzMCwgMHg5Mjk2LCAweDExMDIsIDB4MTFhMCwgMHg3ODM0LCAweDkwMDUsIDB4MTE4OCwKLQkweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwgMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4NzA5YiwgMHgwMDEwLCAweDA4MGMsIDB4NWNlZiwKLQkweDAwMTAsIDB4NzA5MywgMHgwMDAwLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOWIsIDB4MDAwMywKLQkweDYwNDMsIDB4MDAwNCwgMHgyMDExLCAweDYwMDIsIDB4MDgwYywgMHg4OTkzLCAweDA4MGMsIDB4NjBmYiwKLQkweDIwNzksIDB4MDI0MCwgMHg3ODMzLCAweDExMDIsIDB4NzgzNywgMHgwMDAwLCAweDIwYTksIDB4MDAwOCwKLQkweDlmODgsIDB4MDAwZSwgMHgyMDBiLCAweDAwMDAsIDB4ODEwOCwgMHgxZjA0LCAweDVhZGEsIDB4NjBjMywKLQkweDAwMTQsIDB4MDgwYywgMHg2MDJjLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOTAsIDB4OTAwNSwKLQkweDA1MDAsIDB4MjAxMSwgMHg2MDAyLCAweDA4MGMsIDB4ODk5MywgMHg5MDg2LCAweDAwMTQsIDB4MTFiOCwKLQkweDA4MGMsIDB4NjE3NywgMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwgMHg5Mjk2LCAweDExMDIsIDB4MTE3OCwKLQkweDc4MzQsIDB4OTAwNSwgMHgxMTYwLCAweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwKLQkweDExMTAsIDB4NzBjNywgMHgwMDAxLCAweDcwOWIsIDB4MDAwNCwgMHgwMDI5LCAweDAwMTAsIDB4MDgwYywKLQkweDYxNTMsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5YiwgMHgwMDA1LCAweDA4MGMsIDB4NjBmYiwKLQkweDIwNzksIDB4MDI0MCwgMHg3ODMzLCAweDExMDMsIDB4NzgzNywgMHgwMDAwLCAweDA4MGMsIDB4NjE3NywKLQkweDA4MGMsIDB4NjE1YSwgMHgxMTcwLCAweDcwODQsIDB4OTAwNSwgMHgxMTU4LCAweDcxNWMsIDB4OTE4NiwKLQkweGZmZmYsIDB4MDEzOCwgMHgyMDExLCAweDAwMDgsIDB4MDgwYywgMHg1ZmFmLCAweDAxNjgsIDB4MDgwYywKLQkweDYxMzAsIDB4MjBhOSwgMHgwMDA4LCAweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAyNmUsIDB4MjBlOSwKLQkweDAwMDAsIDB4MjBhMSwgMHgwMjRlLCAweDQwMDMsIDB4NjBjMywgMHgwMDE0LCAweDA4MGMsIDB4NjAyYywKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOTAsIDB4OTAwNSwgMHgwNTAwLCAweDIwMTEsIDB4NjAwMiwKLQkweDA4MGMsIDB4ODk5MywgMHg5MDg2LCAweDAwMTQsIDB4MTFiOCwgMHgwODBjLCAweDYxNzcsIDB4MjA3OSwKLQkweDAyNjAsIDB4N2EzMCwgMHg5Mjk2LCAweDExMDMsIDB4MTE3OCwgMHg3ODM0LCAweDkwMDUsIDB4MTE2MCwKLQkweDdhMzgsIDB4ZDJmYywgMHgwMTI4LCAweDcwYzQsIDB4OTAwNSwgMHgxMTEwLCAweDcwYzcsIDB4MDAwMSwKLQkweDcwOWIsIDB4MDAwNiwgMHgwMDI5LCAweDAwMTAsIDB4MDgwYywgMHg2MTUzLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA5YiwgMHgwMDA3LCAweDA4MGMsIDB4NjBmYiwgMHgyMDc5LCAweDAyNDAsIDB4NzgzMywKLQkweDExMDQsIDB4NzgzNywgMHgwMDAwLCAweDA4MGMsIDB4NjE3NywgMHgwODBjLCAweDYxNWEsIDB4MTFiOCwKLQkweDcwODQsIDB4OTAwNSwgMHgxMWEwLCAweDcxNjQsIDB4OTE4NiwgMHhmZmZmLCAweDAxODAsIDB4OTE4MCwKLQkweDM0OGUsIDB4MjAwZCwgMHg5MThjLCAweGZmMDAsIDB4ODEwZiwgMHgyMDExLCAweDAwMDgsIDB4MDgwYywKLQkweDVmYWYsIDB4MDE4MCwgMHgwODBjLCAweDUxMmUsIDB4MDExMCwgMHgwODBjLCAweDI2ZjUsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksIDB4MDI2ZSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwKLQkweDAyNGUsIDB4NDAwMywgMHg2MGMzLCAweDAwMTQsIDB4MDgwYywgMHg2MDJjLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDA1MDAsIDB4MjAxMSwgMHg2MDAyLCAweDA4MGMsIDB4ODk5MywKLQkweDkwODYsIDB4MDAxNCwgMHgxMWI4LCAweDA4MGMsIDB4NjE3NywgMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwKLQkweDkyOTYsIDB4MTEwNCwgMHgxMTc4LCAweDc4MzQsIDB4OTAwNSwgMHgxMTYwLCAweDdhMzgsIDB4ZDJmYywKLQkweDAxMjgsIDB4NzBjNCwgMHg5MDA1LCAweDExMTAsIDB4NzBjNywgMHgwMDAxLCAweDcwOWIsIDB4MDAwOCwKLQkweDAwMjksIDB4MDAxMCwgMHgwODBjLCAweDYxNTMsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5YiwKLQkweDAwMDksIDB4MDgwYywgMHg2MGZiLCAweDIwNzksIDB4MDI0MCwgMHg3ODMzLCAweDExMDUsIDB4NzgzNywKLQkweDAxMDAsIDB4MDgwYywgMHg2MTVhLCAweDExNTAsIDB4NzA4NCwgMHg5MDA1LCAweDExMzgsIDB4MDgwYywKLQkweDVmMjIsIDB4MTE4OCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHgyNmY1LCAweDIwYTksIDB4MDAwOCwKLQkweDA4MGMsIDB4NjE3NywgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwgMHgwMjZlLCAweDIwZTksIDB4MDAwMCwKLQkweDIwYTEsIDB4MDI0ZSwgMHg0MDAzLCAweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDYwMmMsIDB4MDAxMCwKLQkweDA4MGMsIDB4NWE3YywgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsIDB4MDVhOCwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4OTA4NiwgMHgwMDE0LCAweDE1NjAsIDB4MDgwYywKLQkweDYxNzcsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwgMHgxMTA1LCAweDE1MjAsIDB4NzgzNCwKLQkweDkwODQsIDB4MDEwMCwgMHgyMDExLCAweDAxMDAsIDB4OTIxZSwgMHgxMTYwLCAweDdhMzgsIDB4ZDJmYywKLQkweDAxMjgsIDB4NzBjNCwgMHg5MDA1LCAweDExMTAsIDB4NzBjNywgMHgwMDAxLCAweDcwOWIsIDB4MDAwYSwKLQkweDAwYjEsIDB4MDA5OCwgMHg5MDA1LCAweDExNzgsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBjNCwKLQkweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsIDB4NzA5NywgMHgwMDAwLCAweDcwOWIsIDB4MDAwZSwKLQkweDA4MGMsIDB4NWNjYSwgMHgwMDEwLCAweDA4MGMsIDB4NjE1MywgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwKLQkweDcwOWIsIDB4MDAwYiwgMHgyMDExLCAweDFkMGUsIDB4MjBlOSwgMHgwMDAxLCAweDIyYTAsIDB4MjBhOSwKLQkweDAwNDAsIDB4MjAxOSwgMHhmZmZmLCAweDQzMDQsIDB4MDgwYywgMHg2MGZiLCAweDIwNzksIDB4MDI0MCwKLQkweDc4MzMsIDB4MTEwNiwgMHg3ODM3LCAweDAwMDAsIDB4MDgwYywgMHg2MTVhLCAweDAxMTgsIDB4MjAxMywKLQkweDAwMDAsIDB4MDAyMCwgMHg3MDYwLCAweDkwODUsIDB4MDEwMCwgMHgyMDEyLCAweDIwYTksIDB4MDA0MCwKLQkweDIwMDksIDB4MDI0ZSwgMHgyMDExLCAweDFkMGUsIDB4MjIwZSwgMHg4MjEwLCAweDgxMDgsIDB4OTE4NiwKLQkweDAyNjAsIDB4MTEyOCwgMHg2ODEwLCAweDgwMDAsIDB4NjgxMiwgMHgyMDA5LCAweDAyNDAsIDB4MWYwNCwKLQkweDVjNGMsIDB4NjBjMywgMHgwMDg0LCAweDA4MGMsIDB4NjAyYywgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwKLQkweDcwOTAsIDB4OTAwNSwgMHgwMWMwLCAweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4OTA4NiwKLQkweDAwODQsIDB4MTE3OCwgMHgwODBjLCAweDYxNzcsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwKLQkweDExMDYsIDB4MTEzOCwgMHg3ODM0LCAweDkwMDUsIDB4MTEyMCwgMHg3MDliLCAweDAwMGMsIDB4MDAyOSwKLQkweDAwMTAsIDB4MDgwYywgMHg2MTUzLCAweDAwZmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwOWIsIDB4MDAwZCwKLQkweDA4MGMsIDB4NjBmYiwgMHgyMDc5LCAweDAyNDAsIDB4NzgzMywgMHgxMTA3LCAweDc4MzcsIDB4MDAwMCwKLQkweDA4MGMsIDB4NjE3NywgMHgyMGE5LCAweDAwNDAsIDB4MjAxMSwgMHgwMjZlLCAweDIwMDksIDB4MDI0ZSwKLQkweDIyMGUsIDB4ODIxMCwgMHg4MTA4LCAweDkxODYsIDB4MDI2MCwgMHgxMTUwLCAweDY4MTAsIDB4ODAwMCwKLQkweDY4MTIsIDB4MjAwOSwgMHgwMjQwLCAweDY4MTQsIDB4ODAwMCwgMHg2ODE2LCAweDIwMTEsIDB4MDI2MCwKLQkweDFmMDQsIDB4NWM5MCwgMHg2MGMzLCAweDAwODQsIDB4MDgwYywgMHg2MDJjLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDAxZTAsIDB4MjAxMSwgMHg2MDAyLCAweDA4MGMsIDB4ODk5MywKLQkweDkwODYsIDB4MDA4NCwgMHgxMTk4LCAweDA4MGMsIDB4NjE3NywgMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwKLQkweDkyOTYsIDB4MTEwNywgMHgxMTU4LCAweDc4MzQsIDB4OTAwNSwgMHgxMTQwLCAweDcwOTcsIDB4MDAwMSwKLQkweDA4MGMsIDB4NjBjZCwgMHg3MDliLCAweDAwMGUsIDB4MDAyOSwgMHgwMDEwLCAweDA4MGMsIDB4NjE1MywKLQkweDAwZmUsIDB4MDAwNSwgMHg5MThkLCAweDAwMDEsIDB4MDgwYywgMHg2MWEyLCAweDcwOWIsIDB4MDAwZiwKLQkweDcwOTMsIDB4MDAwMCwgMHgyMDYxLCAweDAxNDAsIDB4NjA1YiwgMHhiYzg1LCAweDYwNWYsIDB4YjViNSwKLQkweDIwNjEsIDB4MDEwMCwgMHg2MDQzLCAweDAwMDUsIDB4NjA0MywgMHgwMDA0LCAweDIwMDksIDB4MDdkMCwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5ODcsIDB4MDAwNSwgMHg3MDkwLCAweDkwMDUsIDB4MDEzMCwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4NzA5YiwgMHgwMDAwLCAweDAwMDUsIDB4NzA5YiwKLQkweDAwMTEsIDB4MDgwYywgMHhhYWYxLCAweDA4MGMsIDB4NjE3NywgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwKLQkweDAyNjAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHg3NDkwLCAweDk0ODAsIDB4MDAxOCwKLQkweDkwODAsIDB4MDAwNywgMHg5MDg0LCAweDAzZjgsIDB4ODAwNCwgMHgyMGE4LCAweDQwMDMsIDB4MDgwYywKLQkweDYxNWEsIDB4MTFhMCwgMHg3MTdjLCAweDgxZmYsIDB4MDE4OCwgMHg5MDBlLCAweDcwODAsIDB4OTA4NCwKLQkweDAwZmYsIDB4MDE2MCwgMHgwODBjLCAweDI2OGMsIDB4OTE4NiwgMHgwMDdlLCAweDAxMzgsIDB4OTE4NiwKLQkweDAwODAsIDB4MDEyMCwgMHgyMDExLCAweDAwMDgsIDB4MDgwYywgMHg1ZmFmLCAweDYwYzMsIDB4MDAxNCwKLQkweDA4MGMsIDB4NjAyYywgMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDA1MDAsIDB4MjAxMSwKLQkweDYwMDIsIDB4MDgwYywgMHg4OTkzLCAweDkwODYsIDB4MDAxNCwgMHgxMWI4LCAweDA4MGMsIDB4NjE3NywKLQkweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsIDB4MTEwMywgMHgxMTc4LCAweDc4MzQsIDB4OTAwNSwKLQkweDExNjAsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBjNCwgMHg5MDA1LCAweDExMTAsIDB4NzBjNywKLQkweDAwMDEsIDB4NzA5YiwgMHgwMDEyLCAweDAwMjksIDB4MDAxMCwgMHg3MDkzLCAweDAwMDAsIDB4MDBmZSwKLQkweDAwMDUsIDB4MDBmNiwgMHg3MDliLCAweDAwMTMsIDB4MDgwYywgMHg2MTA5LCAweDIwNzksIDB4MDI0MCwKLQkweDc4MzMsIDB4MTEwMywgMHg3ODM3LCAweDAwMDAsIDB4MDgwYywgMHg2MTc3LCAweDA4MGMsIDB4NjE1YSwKLQkweDExNzAsIDB4NzA4NCwgMHg5MDA1LCAweDExNTgsIDB4NzE1YywgMHg5MTg2LCAweGZmZmYsIDB4MDEzOCwKLQkweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDVmYWYsIDB4MDE2OCwgMHgwODBjLCAweDYxMzAsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjBlMSwgMHgwMDAwLCAweDIwOTksIDB4MDI2ZSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwKLQkweDAyNGUsIDB4NDAwMywgMHg2MGMzLCAweDAwMTQsIDB4MDgwYywgMHg2MDJjLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA5MCwgMHg5MDA1LCAweDA1MDAsIDB4MjAxMSwgMHg2MDAyLCAweDA4MGMsIDB4ODk5MywKLQkweDkwODYsIDB4MDAxNCwgMHgxMWI4LCAweDA4MGMsIDB4NjE3NywgMHgyMDc5LCAweDAyNjAsIDB4N2EzMCwKLQkweDkyOTYsIDB4MTEwNCwgMHgxMTc4LCAweDc4MzQsIDB4OTAwNSwgMHgxMTYwLCAweDdhMzgsIDB4ZDJmYywKLQkweDAxMjgsIDB4NzBjNCwgMHg5MDA1LCAweDExMTAsIDB4NzBjNywgMHgwMDAxLCAweDcwOWIsIDB4MDAxNCwKLQkweDAwMjksIDB4MDAxMCwgMHg3MDkzLCAweDAwMDAsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5YiwKLQkweDAwMTUsIDB4MDgwYywgMHg2MTA5LCAweDIwNzksIDB4MDI0MCwgMHg3ODMzLCAweDExMDQsIDB4NzgzNywKLQkweDAwMDAsIDB4MDgwYywgMHg2MTc3LCAweDA4MGMsIDB4NjE1YSwgMHgxMWI4LCAweDcwODQsIDB4OTAwNSwKLQkweDExYTAsIDB4NzE2NCwgMHg5MTg2LCAweGZmZmYsIDB4MDE4MCwgMHg5MTgwLCAweDM0OGUsIDB4MjAwZCwKLQkweDkxOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDIwMTEsIDB4MDAwOCwgMHgwODBjLCAweDVmYWYsIDB4MDE4MCwKLQkweDA4MGMsIDB4NTEyZSwgMHgwMTEwLCAweDA4MGMsIDB4MjZmNSwgMHgyMGE5LCAweDAwMDgsIDB4MjBlMSwKLQkweDAwMDAsIDB4MjA5OSwgMHgwMjZlLCAweDIwZTksIDB4MDAwMCwgMHgyMGExLCAweDAyNGUsIDB4NDAwMywKLQkweDYwYzMsIDB4MDAxNCwgMHgwODBjLCAweDYwMmMsIDB4MDBmZSwgMHgwMDA1LCAweDAwZjYsIDB4NzA5MCwKLQkweDkwMDUsIDB4MDVmMCwgMHgyMDExLCAweDYwMDIsIDB4MDgwYywgMHg4OTkzLCAweDkwODYsIDB4MDAxNCwKLQkweDE1YTgsIDB4MDgwYywgMHg2MTc3LCAweDIwNzksIDB4MDI2MCwgMHg3YTMwLCAweDkyOTYsIDB4MTEwNSwKLQkweDE1NjgsIDB4NzgzNCwgMHg5MDg0LCAweDAxMDAsIDB4MjAxMSwgMHgwMTAwLCAweDkyMWUsIDB4MTE2OCwKLQkweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDYxYTIsIDB4N2EzOCwgMHhkMmZjLCAweDAxMjgsIDB4NzBjNCwKLQkweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsIDB4MDA4MCwgMHg5MDA1LCAweDExYjgsIDB4N2EzOCwKLQkweGQyZmMsIDB4MDEyOCwgMHg3MGM0LCAweDkwMDUsIDB4MTExMCwgMHg3MGM3LCAweDAwMDEsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHg2MWEyLCAweDcwOTcsIDB4MDAwMCwgMHg3YTM4LCAweGQyZjQsIDB4MDExMCwKLQkweDcwZGYsIDB4MDAwOCwgMHg3MDliLCAweDAwMTYsIDB4MDAyOSwgMHgwMDEwLCAweDcwOTMsIDB4MDAwMCwKLQkweDAwZmUsIDB4MDAwNSwgMHgwODBjLCAweGFhZjEsIDB4MDgwYywgMHg2MTc3LCAweDIwZTEsIDB4MDAwMCwKLQkweDIwOTksIDB4MDI2MCwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjQwLCAweDIwYTksIDB4MDAwZSwKLQkweDQwMDMsIDB4MjAxMSwgMHgwMjZkLCAweDIyMDQsIDB4OTA4NCwgMHgwMTAwLCAweDIwMTEsIDB4MDI0ZCwKLQkweDIwMTIsIDB4MjAxMSwgMHgwMjZlLCAweDcwOWIsIDB4MDAxNywgMHgwODBjLCAweDYxNWEsIDB4MTE1MCwKLQkweDcwODQsIDB4OTAwNSwgMHgxMTM4LCAweDA4MGMsIDB4NWYyMiwgMHgxMTg4LCAweDkwODUsIDB4MDAwMSwKLQkweDA4MGMsIDB4MjZmNSwgMHgyMGE5LCAweDAwMDgsIDB4MDgwYywgMHg2MTc3LCAweDIwZTEsIDB4MDAwMCwKLQkweDIwOTksIDB4MDI2ZSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjRlLCAweDQwMDMsIDB4NjBjMywKLQkweDAwMTQsIDB4MDgwYywgMHg2MDJjLCAweDAwMTAsIDB4MDgwYywgMHg1YTdjLCAweDAwMDUsIDB4MDBmNiwKLQkweDcwOTAsIDB4OTAwNSwgMHgwMWQ4LCAweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4OTA4NiwKLQkweDAwODQsIDB4MTE5MCwgMHgwODBjLCAweDYxNzcsIDB4MjA3OSwgMHgwMjYwLCAweDdhMzAsIDB4OTI5NiwKLQkweDExMDYsIDB4MTE1MCwgMHg3ODM0LCAweDkwMDUsIDB4MTEzOCwgMHg5MDA2LCAweDA4MGMsIDB4NjFhMiwKLQkweDcwOWIsIDB4MDAxOCwgMHgwMDI5LCAweDAwMTAsIDB4NzA5MywgMHgwMDAwLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwZjYsIDB4NzA5YiwgMHgwMDE5LCAweDA4MGMsIDB4NjEwOSwgMHgyMDc5LCAweDAyNDAsIDB4NzgzMywKLQkweDExMDYsIDB4NzgzNywgMHgwMDAwLCAweDA4MGMsIDB4NjE3NywgMHgyMDA5LCAweDAyNmUsIDB4MjAzOSwKLQkweDFkMGUsIDB4MjBhOSwgMHgwMDQwLCAweDIxM2UsIDB4ODczOCwgMHg4MTA4LCAweDkxODYsIDB4MDI4MCwKLQkweDExMjgsIDB4NjgxNCwgMHg4MDAwLCAweDY4MTYsIDB4MjAwOSwgMHgwMjYwLCAweDFmMDQsIDB4NWU4YiwKLQkweDIwMzksIDB4MWQwZSwgMHgwODBjLCAweDYxNWEsIDB4MTFlOCwgMHgyNzI4LCAweDI1MTQsIDB4ODIwNywKLQkweDkwODQsIDB4MDBmZiwgMHg4MDAwLCAweDIwMTgsIDB4OTI5NCwgMHgwMGZmLCAweDgwMDcsIDB4OTIwNSwKLQkweDIwMmEsIDB4NzA2MCwgMHgyMzEwLCAweDgyMTQsIDB4OTJhMCwgMHgxZDBlLCAweDI0MTQsIDB4OTM4YywKLQkweDAwMDEsIDB4MDExOCwgMHg5Mjk0LCAweGZmMDAsIDB4MDAxOCwgMHg5Mjk0LCAweDAwZmYsIDB4ODAwNywKLQkweDkyMTUsIDB4MjIyMiwgMHgyMGE5LCAweDAwNDAsIDB4MjAwOSwgMHgwMjRlLCAweDI3MGUsIDB4ODczOCwKLQkweDgxMDgsIDB4OTE4NiwgMHgwMjYwLCAweDExMjgsIDB4NjgxMCwgMHg4MDAwLCAweDY4MTIsIDB4MjAwOSwKLQkweDAyNDAsIDB4MWYwNCwgMHg1ZWJlLCAweDYwYzMsIDB4MDA4NCwgMHgwODBjLCAweDYwMmMsIDB4MDBmZSwKLQkweDAwMDUsIDB4MDBmNiwgMHg3MDkwLCAweDkwMDUsIDB4MDFlMCwgMHgyMDExLCAweDYwMDIsIDB4MDgwYywKLQkweDg5OTMsIDB4OTA4NiwgMHgwMDg0LCAweDExOTgsIDB4MDgwYywgMHg2MTc3LCAweDIwNzksIDB4MDI2MCwKLQkweDdhMzAsIDB4OTI5NiwgMHgxMTA3LCAweDExNTgsIDB4NzgzNCwgMHg5MDA1LCAweDExNDAsIDB4NzA5NywKLQkweDAwMDEsIDB4MDgwYywgMHg2MGNkLCAweDcwOWIsIDB4MDAxYSwgMHgwMDI5LCAweDAwMTAsIDB4NzA5MywKLQkweDAwMDAsIDB4MDBmZSwgMHgwMDA1LCAweDkwODUsIDB4MDAwMSwgMHgwODBjLCAweDYxYTIsIDB4NzA5YiwKLQkweDAwMWIsIDB4MDgwYywgMHhhYWYxLCAweDA4MGMsIDB4NjE3NywgMHgyMDExLCAweDAyNjAsIDB4MjAwOSwKLQkweDAyNDAsIDB4NzQ5MCwgMHg5NDgwLCAweDAwMTgsIDB4OTA4MCwgMHgwMDA3LCAweDkwODQsIDB4MDNmOCwKLQkweDgwMDQsIDB4MjBhOCwgMHgyMjBlLCAweDgyMTAsIDB4ODEwOCwgMHg5MTg2LCAweDAyNjAsIDB4MTE1MCwKLQkweDY4MTAsIDB4ODAwMCwgMHg2ODEyLCAweDIwMDksIDB4MDI0MCwgMHg2ODE0LCAweDgwMDAsIDB4NjgxNiwKLQkweDIwMTEsIDB4MDI2MCwgMHgxZjA0LCAweDVmMGEsIDB4NjBjMywgMHgwMDg0LCAweDA4MGMsIDB4NjAyYywKLQkweDAwMDUsIDB4MDAwNSwgMHgwMDg2LCAweDAwOTYsIDB4MjAyOSwgMHgxODQ4LCAweDI1MmMsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjA0MSwgMHgxZDBlLCAweDIwZTksIDB4MDAwMSwgMHgyOGEwLCAweDA4MGMsIDB4NjE3NywKLQkweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAyNmUsIDB4NDAwMywgMHgyMGE5LCAweDAwMDgsIDB4MjAxMSwKLQkweDAwMDcsIDB4ZDVkNCwgMHgwMTA4LCAweDkwMTYsIDB4MjgwMCwgMHg5MjAwLCAweDIwMGMsIDB4OTFhNiwKLQkweGZmZmYsIDB4MTE0OCwgMHhkNWQ0LCAweDAxMTAsIDB4ODIxMCwgMHgwMDA4LCAweDgyMTEsIDB4MWYwNCwKLQkweDVmM2MsIDB4MDgwNCwgMHg1ZmFiLCAweDgyZmYsIDB4MTE2MCwgMHhkNWQ0LCAweDAxMjAsIDB4OTFhNiwKLQkweDNmZmYsIDB4MGQ5MCwgMHgwMDIwLCAweDkxYTYsIDB4M2ZmZiwgMHgwOTA0LCAweDVmYWIsIDB4OTE4ZCwKLQkweGMwMDAsIDB4MjBhOSwgMHgwMDEwLCAweDIwMTksIDB4MDAwMSwgMHhkNWQ0LCAweDAxMTAsIDB4MjAxOSwKLQkweDAwMTAsIDB4MjEyMCwgMHhkNWQ0LCAweDAxMTAsIDB4ODQyMywgMHgwMDA4LCAweDg0MjQsIDB4MTI0MCwKLQkweGQ1ZDQsIDB4MDExMCwgMHg4MzE5LCAweDAwMDgsIDB4ODMxOCwgMHgxZjA0LCAweDVmNjIsIDB4MDRkOCwKLQkweDIzYTgsIDB4MjAyMSwgMHgwMDAxLCAweDg0MjYsIDB4ODQyNSwgMHgxZjA0LCAweDVmNzQsIDB4MjMyOCwKLQkweDg1MjksIDB4OTJiZSwgMHgwMDA3LCAweDAxNTgsIDB4MDAwNiwgMHgyMDM5LCAweDAwMDcsIDB4MjIwMCwKLQkweDk3M2EsIDB4MDAwZSwgMHgyN2E4LCAweDk1YTgsIDB4MDAxMCwgMHgxZjA0LCAweDVmODMsIDB4NzU1ZSwKLQkweDk1YzgsIDB4MzQ4ZSwgMHgyOTJkLCAweDk1YWMsIDB4MDBmZiwgMHg3NTgyLCAweDY1MzIsIDB4NjUzNiwKLQkweDAwMTYsIDB4MjUwOCwgMHgwODBjLCAweDI2ZDUsIDB4MDAxZSwgMHg2MGU3LCAweDAwMDAsIDB4NjVlYSwKLQkweDIwMTgsIDB4MjMwNCwgMHg5NDA1LCAweDIwMWEsIDB4NzA4NywgMHgwMDAxLCAweDIwZTksIDB4MDAwMCwKLQkweDIwYTEsIDB4MDI0ZSwgMHgyMGUxLCAweDAwMDEsIDB4Mjg5OCwgMHgyMGE5LCAweDAwMDgsIDB4NDAwMywKLQkweDkwODUsIDB4MDAwMSwgMHgwMDA4LCAweDkwMDYsIDB4MDA5ZSwgMHgwMDhlLCAweDAwMDUsIDB4MDE1NiwKLQkweDAxYzYsIDB4MDFkNiwgMHgwMTM2LCAweDAxNDYsIDB4MjJhOCwgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwKLQkweDAyNmUsIDB4MjBlOSwgMHgwMDAwLCAweDIwMTEsIDB4MDI0ZSwgMHgyMmEwLCAweDQwMDMsIDB4MDE0ZSwKLQkweDAxM2UsIDB4MDFkZSwgMHgwMWNlLCAweDAxNWUsIDB4MjExOCwgMHg5MDI2LCAweDIwMDEsIDB4MDAwNywKLQkweDkzOWEsIDB4MDAxMCwgMHgwMjE4LCAweDg0MjAsIDB4ODAwMSwgMHgwY2QwLCAweDIxMTgsIDB4ODRmZiwKLQkweDAxMjAsIDB4OTM5YSwgMHgwMDEwLCAweDg0MjEsIDB4MWRlMCwgMHgyMDIxLCAweDAwMDEsIDB4ODNmZiwKLQkweDAxMTgsIDB4ODQyMywgMHg4MzE5LCAweDFkZTgsIDB4OTIzOCwgMHgyMDI5LCAweDAyNmUsIDB4OTUyOCwKLQkweDI1MDQsIDB4OTQyYywgMHgxMWI4LCAweDk0MDUsIDB4MjAzYSwgMHg3MTVlLCAweDkxYTAsIDB4MzQ4ZSwKLQkweDI0MmQsIDB4OTVhYywgMHgwMGZmLCAweDc1ODIsIDB4NjUzMiwgMHg2NTM2LCAweDAwMTYsIDB4MjUwOCwKLQkweDA4MGMsIDB4MjZkNSwgMHgwMDFlLCAweDYwZTcsIDB4MDAwMCwgMHg2NWVhLCAweDcwODcsIDB4MDAwMSwKLQkweDkwODQsIDB4MDAwMCwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDcwOGIsIDB4MDAwMCwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDIwNzEsIDB4MDE0MCwKLQkweDA4MGMsIDB4NjBiYywgMHgwODBjLCAweGEyYTAsIDB4NzAwNCwgMHg5MDg0LCAweDQwMDAsIDB4MDExMCwKLQkweDA4MGMsIDB4MmFhOSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE4MjYsIDB4MjA3MywKLQkweDAwMDAsIDB4Nzg0MCwgMHgwMDI2LCAweDAwMTYsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NjExOSwKLQkweDAwMWUsIDB4OTA5NCwgMHgwMDEwLCAweDkyODUsIDB4MDA4MCwgMHg3ODQyLCAweDdhNDIsIDB4MDAyZSwKLQkweDAxMmUsIDB4MDBmZSwgMHgwMGVlLCAweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDJhMDQsIDB4MDIyOCwgMHgyMDExLCAweDAxMDEsIDB4MjIwNCwgMHhjMGM1LCAweDIwMTIsIDB4MjAxMSwKLQkweDE5ZjUsIDB4MjAxMywgMHgwMDAwLCAweDcwOTMsIDB4MDAwMCwgMHgwMTJlLCAweDYwYTMsIDB4MDA1NiwKLQkweDYwYTcsIDB4OTU3NSwgMHgwODBjLCAweGEyOTMsIDB4NjE0NCwgMHhkMTg0LCAweDAxMjAsIDB4NzE5OCwKLQkweDkxOGQsIDB4MjAwMCwgMHgwMDE4LCAweDcxOGMsIDB4OTE4ZCwgMHgxMDAwLCAweDIwMTEsIDB4MTk5OSwKLQkweDIxMTIsIDB4MjAwOSwgMHgwN2QwLCAweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDhhNWQsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4YWNmYywKLQkweDA4MGMsIDB4YjA5YiwgMHgwODBjLCAweGFkMTgsIDB4MjAwOSwgMHgwMGY3LCAweDA4MGMsIDB4NjExOSwKLQkweDIwNjEsIDB4MWEwNCwgMHg5MDBlLCAweDYxMWEsIDB4NjExZSwgMHg2MTdhLCAweDYxN2UsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjAwMywgMHgwMDAxLCAweDIwNjEsIDB4MDEwMCwgMHg2MDQzLCAweDAwOTAsIDB4NjA0MywKLQkweDAwMTAsIDB4MjAwOSwgMHgxOTk5LCAweDIwMGIsIDB4MDAwMCwgMHgyMDA5LCAweDAwMmQsIDB4MjAxMSwKLQkweDYwODgsIDB4MDgwYywgMHg4OTg3LCAweDAxMmUsIDB4MDBjZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwZTYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwNDcxLCAweDIwNzEsIDB4MDEwMCwKLQkweDA4MGMsIDB4YTJhMCwgMHgyMDcxLCAweDAxNDAsIDB4NzAwNCwgMHg5MDg0LCAweDQwMDAsIDB4MDExMCwKLQkweDA4MGMsIDB4MmFhOSwgMHgwODBjLCAweDc3YTYsIDB4MDE4OCwgMHgwODBjLCAweDc3YzEsIDB4MTE3MCwKLQkweDA4MGMsIDB4N2FjMCwgMHgwMDE2LCAweDA4MGMsIDB4MjdhNCwgMHgyMDAxLCAweDE5NmQsIDB4MjEwMiwKLQkweDAwMWUsIDB4MDgwYywgMHg3YWJiLCAweDA4MGMsIDB4NzZjZCwgMHgwMDUwLCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4MmE4NSwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHgyNjMxLCAweDA4MGMsIDB4NjA1OCwKLQkweDAxMmUsIDB4MDAwZSwgMHgwMGVlLCAweDAwMDUsIDB4MjAwMSwgMHgxODBlLCAweDIwMDQsIDB4ZDBiYywKLQkweDAxNTgsIDB4MDAyNiwgMHgwMDM2LCAweDIwMTEsIDB4ODAxNywgMHgyMDAxLCAweDE5OTksIDB4MjAxYywKLQkweDA4MGMsIDB4NGNhMSwgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgyMGE5LCAweDAwMTIsIDB4MjBlOSwKLQkweDAwMDEsIDB4MjBhMSwgMHgxZDgwLCAweDA4MGMsIDB4NjE3NywgMHgyMGU5LCAweDAwMDAsIDB4MjA5OSwKLQkweDAyNmUsIDB4MDA5OSwgMHgyMGE5LCAweDAwMjAsIDB4MDgwYywgMHg2MTcxLCAweDIwOTksIDB4MDI2MCwKLQkweDIwYTEsIDB4MWQ5MiwgMHgwMDUxLCAweDIwYTksIDB4MDAwZSwgMHgwODBjLCAweDYxNzQsIDB4MjA5OSwKLQkweDAyNjAsIDB4MjBhMSwgMHgxZGIyLCAweDAwMDksIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4MzQxMCwKLQkweDMzMDgsIDB4MjEwNCwgMHg4MDA3LCAweDIwMTIsIDB4ODEwOCwgMHg4MjEwLCAweDFmMDQsIDB4NjBmMSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDA4MGMsIDB4YWFmMSwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwKLQkweDFkMDAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMGMsIDB4NDAwMywKLQkweDAwMDUsIDB4MDgwYywgMHhhYWYxLCAweDA4MGMsIDB4NjE3NywgMHgyMGUxLCAweDAwMDAsIDB4MjA5OSwKLQkweDAyNjAsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMGMsIDB4NDAwMywKLQkweDAwMDUsIDB4MDBjNiwgMHgwMDA2LCAweDIwNjEsIDB4MDEwMCwgMHg4MTBmLCAweDIwMDEsIDB4MTgzNCwKLQkweDIwMDQsIDB4OTAwNSwgMHgxMTM4LCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDkwODQsIDB4MDBmZiwKLQkweDkxMDUsIDB4MDAxMCwgMHg5MTg1LCAweDAwZjcsIDB4NjA0YSwgMHgwMDBlLCAweDAwY2UsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDA0NiwgMHgwODBjLCAweDZjMGQsIDB4MDE1OCwgMHg5MDA2LCAweDIwMjAsIDB4MjAwOSwKLQkweDAwMmEsIDB4MDgwYywgMHhlYThkLCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGMxOTUsIDB4MjEwMiwKLQkweDIwMTksIDB4MDAyYSwgMHg5MDBlLCAweDA4MGMsIDB4MzJkYSwgMHgwODBjLCAweGQ2NDUsIDB4MDE0MCwKLQkweDAwMzYsIDB4MjAxOSwgMHhmZmZmLCAweDIwMjEsIDB4MDAwNywgMHgwODBjLCAweDRlNTgsIDB4MDAzZSwKLQkweDAwNGUsIDB4MDAxZSwgMHgwMDA1LCAweDA4MGMsIDB4NjA1OCwgMHg3MDliLCAweDAwMDAsIDB4NzA5MywKLQkweDAwMDAsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MTgwYywgMHgyMDA0LCAweGQwOWMsIDB4MDEwMCwKLQkweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwMSwKLQkweDAxMDEsIDB4MjAwYywgMHg5MThkLCAweDAwMDYsIDB4MjEwMiwgMHgwMTJlLCAweDAwMWUsIDB4MDAwZSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDAxLCAweDAwMjAsIDB4MjAwOSwgMHgwMDAyLCAweDAwMDgsIDB4OTAwZSwKLQkweDY4MTQsIDB4OTA4NCwgMHhmZmMwLCAweDkxMGQsIDB4NjkxNiwgMHgwMDA1LCAweDAwZjYsIDB4MDE1NiwKLQkweDAxNDYsIDB4MDFkNiwgMHg5MDA2LCAweDIwYTksIDB4MDA4MCwgMHgyMGU5LCAweDAwMDEsIDB4MjBhMSwKLQkweDFkMDAsIDB4NDAwNCwgMHgyMDc5LCAweDFkMDAsIDB4NzgwMywgMHgyMjAwLCAweDc4MDcsIDB4MDBlZiwKLQkweDc4MGYsIDB4MDBlZiwgMHg3ODEzLCAweDAxMzgsIDB4NzgyMywgMHhmZmZmLCAweDc4MjcsIDB4ZmZmZiwKLQkweDAxZGUsIDB4MDE0ZSwgMHgwMTVlLCAweDAwZmUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MDAsIDB4MjAwMywKLQkweDAwMDEsIDB4MDAwNSwgMHgyMDAxLCAweDE5YTcsIDB4MDExOCwgMHgyMDAzLCAweDAwMDEsIDB4MDAxMCwKLQkweDIwMDMsIDB4MDAwMCwgMHgwMDA1LCAweDAxNTYsIDB4MjBhOSwgMHgwODAwLCAweDIwMDksIDB4MTAwMCwKLQkweDkwMDYsIDB4MjAwYSwgMHg4MTA4LCAweDFmMDQsIDB4NjFiMSwgMHgwMTVlLCAweDAwMDUsIDB4MDBkNiwKLQkweDAwMzYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4MjA2OSwgMHgxODQ3LCAweDkwMDYsIDB4YjgwMiwKLQkweGI4ZDYsIDB4YjgwNywgMHgwNzA3LCAweGI4MGEsIDB4YjgwZSwgMHhiODEyLCAweDkxOTgsIDB4MzQ4ZSwKLQkweDIzMWQsIDB4OTM5YywgMHgwMGZmLCAweGJiMTYsIDB4MDAxNiwgMHgwMDI2LCAweGI4ODYsIDB4MDgwYywKLQkweGIwOTQsIDB4MTEyMCwgMHg5MTkyLCAweDAwN2UsIDB4MTIwOCwgMHhiYjg2LCAweDIwYTksIDB4MDAwNCwKLQkweGI4YzQsIDB4MjBlOCwgMHhiOWM4LCAweDkxOTgsIDB4MDAwNiwgMHg5MDA2LCAweDIzYTAsIDB4NDAwNCwKLQkweDIwYTksIDB4MDAwNCwgMHg5MTk4LCAweDAwMGEsIDB4MjNhMCwgMHg0MDA0LCAweDAwMmUsIDB4MDAxZSwKLQkweGI4M2UsIDB4Yjg0MiwgMHhiOGNlLCAweGI4ZDIsIDB4Yjg1ZSwgMHhiODYyLCAweGI4NjYsIDB4Yjg2YSwKLQkweGI4NmYsIDB4MDEwMCwgMHhiODcyLCAweGI4NzYsIDB4Yjg3YSwgMHhiODhhLCAweGI4OGUsIDB4Yjg5MywKLQkweDAwMDgsIDB4Yjg5NiwgMHhiODlhLCAweGI4OWUsIDB4YjhiZSwgMHhiOWEyLCAweDAwOTYsIDB4YjhhNCwKLQkweDkwNGQsIDB4MDExMCwgMHgwODBjLCAweDEwOGIsIDB4YjhhNywgMHgwMDAwLCAweDAwOWUsIDB4OTAwNiwKLQkweGI4NGEsIDB4NjgxMCwgMHhiODNhLCAweDY4MGMsIDB4Yjg0NiwgMHhiOGJiLCAweDA1MjAsIDB4YjhhYywKLQkweDkwMDUsIDB4MDE5OCwgMHgwMGM2LCAweDIwNjAsIDB4OWM4MiwgMHgxZGRjLCAweDBhMGMsIDB4MGQ4NSwKLQkweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsIDB4MWEwYywgMHgwZDg1LCAweDA4MGMsIDB4OGVlZSwKLQkweDAwY2UsIDB4MDkwYywgMHg5MjhkLCAweGI4YWYsIDB4MDAwMCwgMHg2ODE0LCAweDkwODQsIDB4MDBmZiwKLQkweGI4NDIsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDAzZSwgMHgwMGRlLCAweDAwMDUsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHhhOTc0LCAweGFlNzgsIDB4OTY4NCwgMHgzZmZmLCAweDkwODIsIDB4NDAwMCwKLQkweDFhMDQsIDB4NjI4ZCwgMHg5MTgyLCAweDA4MDAsIDB4MWEwNCwgMHg2MjkxLCAweDIwMDEsIDB4MTgwYywKLQkweDIwMDQsIDB4OTA4NCwgMHgwMDAzLCAweDE5MDQsIDB4NjI5NywgMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwKLQkweDkwNWQsIDB4MDE5OCwgMHhiODA0LCAweDkwODQsIDB4MDBmZiwgMHg5MDhlLCAweDAwMDYsIDB4MTE4OCwKLQkweGI4YTQsIDB4OTAwZCwgMHgxOTA0LCAweDYyYTksIDB4MDgwYywgMHg2NjY5LCAweDkwMDYsIDB4MDEyZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMDA1LCAweDkwMGUsIDB4MDRiOCwgMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwKLQkweDA0OTgsIDB4OTA4MiwgMHgwMDA2LCAweDEyOTAsIDB4MDgwYywgMHhiMDk0LCAweDExNjAsIDB4YjhhMCwKLQkweDkwODQsIDB4ZmY4MCwgMHgxMTQwLCAweGI5MDAsIDB4ZDFmYywgMHgwZDEwLCAweDIwMDEsIDB4MDAyOSwKLQkweDIwMDksIDB4MTAwMCwgMHgwNDA4LCAweDIwMDEsIDB4MDAyOCwgMHgwMGE4LCAweDIwMDksIDB4MTgwYywKLQkweDIxMGMsIDB4ZDE4YywgMHgwMTE4LCAweDIwMDEsIDB4MDAwNCwgMHgwMDY4LCAweGQxODQsIDB4MDExOCwKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDQwLCAweDIwMDEsIDB4MDAyOSwgMHhiOTAwLCAweGQxZmMsIDB4MDExOCwKLQkweDIwMDksIDB4MTAwMCwgMHgwMDQ4LCAweDkwMGUsIDB4MDAzOCwgMHgyMDAxLCAweDAwMjksIDB4OTAwZSwKLQkweDAwMTgsIDB4MjAwMSwgMHgwMDI5LCAweDkwMGUsIDB4OTAwNSwgMHgwMTJlLCAweDAwMDUsIDB4MjAwMSwKLQkweDE4MGMsIDB4MjAwNCwgMHhkMDg0LCAweDE5ZDAsIDB4OTE4OCwgMHgxMDAwLCAweDIxMDQsIDB4OTA2NSwKLQkweDA5YTgsIDB4MDgwYywgMHg2YzExLCAweDE5OTAsIDB4YjgwMCwgMHhkMGJjLCAweDA5NzgsIDB4MDgwNCwKLQkweDYyNTAsIDB4MDgwYywgMHg2YTJhLCAweDA5MDQsIDB4NjI1OSwgMHgwODA0LCAweDYyNTQsIDB4MDBlNiwKLQkweDIwNzEsIDB4MTllOCwgMHg3MDA0LCAweDkwODYsIDB4MDAwMiwgMHgxMTI4LCAweDcwMzAsIDB4OTA4MCwKLQkweDAwMDQsIDB4MjAwNCwgMHg5YjA2LCAweDAwZWUsIDB4MDAwNSwgMHgwMGI2LCAweDAwZTYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHhhODc0LCAweDkwOGUsIDB4MDBmZiwgMHgxMTIwLCAweDIwMDEsIDB4MTk2YiwKLQkweDIwNWMsIDB4MDA2MCwgMHhhOTc0LCAweDkxODIsIDB4MDgwMCwgMHgxNjkwLCAweDkxODgsIDB4MTAwMCwKLQkweDIxMDQsIDB4OTA1ZCwgMHgwMWQwLCAweDA4MGMsIDB4NmJiMSwgMHgxMWQwLCAweDA4MGMsIDB4YjExNiwKLQkweDA1NzAsIDB4MmIwMCwgMHg2MDEyLCAweDI5MDAsIDB4NjAxNiwgMHg2MDIzLCAweDAwMDksIDB4NjAyYiwKLQkweDAwMDAsIDB4YTg3NCwgMHg5MDhlLCAweDAwZmYsIDB4MTExMCwgMHg2MDJiLCAweDgwMDAsIDB4MjAwOSwKLQkweDAwNDMsIDB4MDgwYywgMHhiMjBhLCAweDkwMDYsIDB4MDBiMCwgMHgyMDAxLCAweDAwMjgsIDB4MDA5MCwKLQkweDIwMDksIDB4MTgwYywgMHgyMTBjLCAweGQxOGMsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAzOCwKLQkweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAxMCwgMHgyMDAxLCAweDAwMjksIDB4MDAxMCwKLQkweDIwMDEsIDB4MDAyOSwgMHg5MDA1LCAweDAxMmUsIDB4MDBlZSwgMHgwMGJlLCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMmMsIDB4MGNjMCwgMHgwMGI2LCAweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YTk3NCwKLQkweDkxODIsIDB4MDgwMCwgMHgxYTA0LCAweDYzODgsIDB4OTE4OCwgMHgxMDAwLCAweDIxMDQsIDB4OTA1ZCwKLQkweDA5MDQsIDB4NjM2MCwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZiwgMHgwMTkwLCAweGE4N2MsIDB4ZDBmYywKLQkweDExNzgsIDB4MDgwYywgMHg2YzE5LCAweDAxNjAsIDB4YTk5NCwgMHg4MWZmLCAweDAxMzAsIDB4OTA4ZSwKLQkweDAwMDQsIDB4MDEzMCwgMHg5MDhlLCAweDAwMDUsIDB4MDExOCwgMHgwODBjLCAweDZjMTEsIDB4MTU5OCwKLQkweGE4N2MsIDB4ZDBmYywgMHgwMWUwLCAweGE4OTQsIDB4OTAwNSwgMHgwMWM4LCAweDIwNjAsIDB4MDAyNiwKLQkweDIwMTAsIDB4MDgwYywgMHhjZjA5LCAweDAwMmUsIDB4MTEyMCwgMHgyMDAxLCAweDAwMDgsIDB4MDgwNCwKLQkweDYzOGEsIDB4NjAyMCwgMHg5MDg2LCAweDAwMGEsIDB4MDEyMCwgMHgyMDAxLCAweDAwMDgsIDB4MDgwNCwKLQkweDYzOGEsIDB4NjAxYSwgMHg2MDAzLCAweDAwMDgsIDB4MjkwMCwgMHg2MDE2LCAweDAwNTgsIDB4MDgwYywKLQkweGIxMTYsIDB4MDVlOCwgMHgyYjAwLCAweDYwMTIsIDB4MjkwMCwgMHg2MDE2LCAweDYwMGIsIDB4ZmZmZiwKLQkweDYwMjMsIDB4MDAwYSwgMHgyMDA5LCAweDAwMDMsIDB4MDgwYywgMHhiMjBhLCAweDkwMDYsIDB4MDQ1OCwKLQkweDIwMDEsIDB4MDAyOCwgMHgwNDM4LCAweDkwODIsIDB4MDAwNiwgMHgxMjkwLCAweDA4MGMsIDB4YjA5NCwKLQkweDExNjAsIDB4YjhhMCwgMHg5MDg0LCAweGZmODAsIDB4MTE0MCwgMHhiOTAwLCAweGQxZmMsIDB4MDkwMCwKLQkweDIwMDEsIDB4MDAyOSwgMHgyMDA5LCAweDEwMDAsIDB4MDBhOCwgMHgyMDAxLCAweDAwMjgsIDB4MDA5MCwKLQkweDIwMDksIDB4MTgwYywgMHgyMTBjLCAweGQxOGMsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDA1MCwKLQkweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAyOCwgMHgyMDAxLCAweDAwMjksIDB4MDAxMCwKLQkweDIwMDEsIDB4MDAyOSwgMHg5MDA1LCAweDAxMmUsIDB4MDBlZSwgMHgwMGJlLCAweDAwMDUsIDB4MjAwMSwKLQkweDAwMmMsIDB4MGNjMCwgMHgwMGY2LCAweDAwYjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YThlMCwKLQkweDkwMDUsIDB4MTU1MCwgMHhhOGRjLCAweDkwODIsIDB4MDEwMSwgMHgxNjMwLCAweGE4YzgsIDB4OTAwNSwKLQkweDE1MTgsIDB4YThjNCwgMHg5MDgyLCAweDAxMDEsIDB4MTJmOCwgMHhhOTc0LCAweDIwNzksIDB4MTgwMCwKLQkweDkxODIsIDB4MDgwMCwgMHgxMmU4LCAweDc4MzAsIDB4OTA4NCwgMHgwMDAzLCAweDExMzAsIDB4YWE5OCwKLQkweGFiOTQsIDB4YTg3OCwgMHg5MDg0LCAweDAwMDcsIDB4MDBlYSwgMHg3OTMwLCAweGQxOGMsIDB4MDExOCwKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDM4LCAweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAxMCwKLQkweDIwMDEsIDB4MDAyOSwgMHg5MDBlLCAweDAwMzgsIDB4MjAwMSwgMHgwMDJjLCAweDkwMGUsIDB4MDAxOCwKLQkweDIwMDEsIDB4MDAyOSwgMHg5MDBlLCAweDkwMDYsIDB4MDAwOCwgMHg5MDA1LCAweDAxMmUsIDB4MDBiZSwKLQkweDAwZmUsIDB4MDAwNSwgMHg2NDFmLCAweDYzZGEsIDB4NjNmMSwgMHg2NDFmLCAweDY0MWYsIDB4NjQxZiwKLQkweDY0MWYsIDB4NjQxZiwgMHgyMTAwLCAweDkwODIsIDB4MDA3ZSwgMHgxMjc4LCAweDA4MGMsIDB4Njc0OSwKLQkweDAxNDgsIDB4OTA0NiwgMHhiODEwLCAweDkzMDYsIDB4MTkwNCwgMHg2NDI3LCAweGI4MTQsIDB4OTIwNiwKLQkweDE1ZjAsIDB4MDAyOCwgMHhiYjEyLCAweGJhMTYsIDB4MDAxMCwgMHgwODBjLCAweDRiNTQsIDB4MDE1MCwKLQkweDA0YjAsIDB4MDgwYywgMHg2N2I0LCAweDE1OTgsIDB4YjgxMCwgMHg5MzA2LCAweDE1ODAsIDB4YjgxNCwKLQkweDkyMDYsIDB4MTU2OCwgMHgwODBjLCAweGIxMTYsIDB4MDUzMCwgMHgyYjAwLCAweDYwMTIsIDB4MDgwYywKLQkweGQzYjYsIDB4MjkwMCwgMHg2MDE2LCAweDYwMGIsIDB4ZmZmZiwgMHg2MDIzLCAweDAwMGEsIDB4YTg3OCwKLQkweDkwODYsIDB4MDAwMSwgMHgxMTcwLCAweDA4MGMsIDB4MzMxNSwgMHg5MDA2LCAweDA4MGMsIDB4NjZlNiwKLQkweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDY2ZmEsIDB4MjAwMSwgMHgwMjAwLCAweGI4NmUsIDB4Yjg5MywKLQkweDAwMDIsIDB4MjAwOSwgMHgwMDAzLCAweDA4MGMsIDB4YjIwYSwgMHg5MDA2LCAweDAwNjgsIDB4MjAwMSwKLQkweDAwMDEsIDB4OTAwZSwgMHgwMDM4LCAweDIwMDEsIDB4MDAyYywgMHg5MDBlLCAweDAwMTgsIDB4MjAwMSwKLQkweDAwMjgsIDB4OTAwZSwgMHg5MDA1LCAweDAwMDAsIDB4MDEyZSwgMHgwMGJlLCAweDAwZmUsIDB4MDAwNSwKLQkweDAwYjYsIDB4MDBmNiwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE4OTQsIDB4OTBjNiwKLQkweDAwMTUsIDB4MDkwNCwgMHg2NjEyLCAweDkwYzYsIDB4MDA1NiwgMHgwOTA0LCAweDY2MTYsIDB4OTBjNiwKLQkweDAwNjYsIDB4MDkwNCwgMHg2NjFhLCAweDkwYzYsIDB4MDA2NywgMHgwOTA0LCAweDY2MWUsIDB4OTBjNiwKLQkweDAwNjgsIDB4MDkwNCwgMHg2NjIyLCAweDkwYzYsIDB4MDA3MSwgMHgwOTA0LCAweDY2MjYsIDB4OTBjNiwKLQkweDAwNzQsIDB4MDkwNCwgMHg2NjJhLCAweDkwYzYsIDB4MDA3YywgMHgwOTA0LCAweDY2MmUsIDB4OTBjNiwKLQkweDAwN2UsIDB4MDkwNCwgMHg2NjMyLCAweDkwYzYsIDB4MDAzNywgMHgwOTA0LCAweDY2MzYsIDB4OTAxNiwKLQkweDIwNzksIDB4MTgwMCwgMHhhOTc0LCAweDkxODYsIDB4MDBmZiwgMHgwOTA0LCAweDY2MGQsIDB4OTE4MiwKLQkweDA4MDAsIDB4MWEwNCwgMHg2NjBkLCAweDA4MGMsIDB4NjdiNCwgMHgxMTk4LCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4MiwgMHgwMDA2LCAweDEyNjgsIDB4YTg5NCwgMHg5MGM2LCAweDAwNmYsIDB4MDE0OCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxOTA0LCAweDY1ZjYsIDB4YjhhMCwgMHg5MDg0LCAweGZmODAsIDB4MTkwNCwKLQkweDY1ZjYsIDB4YTg5NCwgMHg5MGM2LCAweDAwNmYsIDB4MDE1OCwgMHg5MGM2LCAweDAwNWUsIDB4MDkwNCwKLQkweDY1NTYsIDB4OTBjNiwgMHgwMDY0LCAweDA5MDQsIDB4NjU3ZiwgMHgyMDA4LCAweDA4MDQsIDB4NjUxOCwKLQkweGE5OTgsIDB4YThiMCwgMHgyMDQwLCAweDA4MGMsIDB4YjA5NCwgMHgxMTIwLCAweDkxODIsIDB4MDA3ZiwKLQkweDBhMDQsIDB4NjUxOCwgMHg5MTg2LCAweDAwZmYsIDB4MDkwNCwgMHg2NTE4LCAweDkxODIsIDB4MDgwMCwKLQkweDFhMDQsIDB4NjUxOCwgMHhhYWEwLCAweGFiOWMsIDB4Nzg3YywgMHg5MzA2LCAweDExYTgsIDB4Nzg4MCwKLQkweDAwOTYsIDB4OTI0ZSwgMHgxMTI4LCAweDIyMDgsIDB4MjMxMCwgMHgwMDllLCAweDA4MDQsIDB4NjUxOCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTQwLCAweDk5Y2MsIDB4ZmYwMCwgMHgwMDllLCAweDExMjgsIDB4MjIwOCwKLQkweDIzMTAsIDB4MDgwNCwgMHg2NTE4LCAweDAwOWUsIDB4MDgwYywgMHg0YjU0LCAweDA5MDQsIDB4NjUyMiwKLQkweDkwMGUsIDB4OTAxNiwgMHg5MGM2LCAweDQwMDAsIDB4MTVlMCwgMHgwMDA2LCAweDA4MGMsIDB4NmFhZSwKLQkweDExMDgsIDB4YzE4NSwgMHhiODAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweDIwYTksIDB4MDAwNCwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAzMSwgMHgyMGEwLCAweGI4YzQsIDB4MjBlMCwKLQkweGI4YzgsIDB4OTA4MCwgMHgwMDA2LCAweDIwOTgsIDB4MDgwYywgMHgwZmQ2LCAweDIwYTksIDB4MDAwNCwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAzNSwgMHgyMGEwLCAweGI4YzQsIDB4MjBlMCwKLQkweGI4YzgsIDB4OTA4MCwgMHgwMDBhLCAweDIwOTgsIDB4MDgwYywgMHgwZmQ2LCAweGE4YzQsIDB4YWJjOCwKLQkweDkzMDUsIDB4YWJjYywgMHg5MzA1LCAweGFiZDAsIDB4OTMwNSwgMHhhYmQ0LCAweDkzMDUsIDB4YWJkOCwKLQkweDkzMDUsIDB4YWJkYywgMHg5MzA1LCAweGFiZTAsIDB4OTMwNSwgMHg5MDA1LCAweDA1MTAsIDB4MDAwZSwKLQkweDAwYzgsIDB4OTBjNiwgMHg0MDA3LCAweDExMTAsIDB4MjQwOCwgMHgwMGEwLCAweDkwYzYsIDB4NDAwOCwKLQkweDExMTgsIDB4MjcwOCwgMHgyNjEwLCAweDAwNzAsIDB4OTBjNiwgMHg0MDA5LCAweDExMDgsIDB4MDA1MCwKLQkweDkwYzYsIDB4NDAwNiwgMHgwMTM4LCAweDIwMDEsIDB4NDAwNSwgMHgyMDA5LCAweDAwMGEsIDB4MDAxMCwKLQkweDIwMDEsIDB4NDAwNiwgMHhhODk2LCAweGE5OWEsIDB4YWE5ZSwgMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwKLQkweDA0NzgsIDB4MDAwZSwgMHgwODBjLCAweGIxMTYsIDB4MTEzMCwgMHgyMDAxLCAweDQwMDUsIDB4MjAwOSwKLQkweDAwMDMsIDB4OTAxNiwgMHgwYzc4LCAweDJiMDAsIDB4NjAxMiwgMHgwODBjLCAweGQzYjYsIDB4MjkwMCwKLQkweDYwMTYsIDB4NjAyMywgMHgwMDAxLCAweGE4NjgsIDB4ZDg4YywgMHgwMTA4LCAweGMwZjUsIDB4YTg2YSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4MzMxNSwgMHgwMTJlLCAweDkwMDYsIDB4MDgwYywKLQkweDY2ZTYsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NjZmYSwgMHgyMDA5LCAweDAwMDIsIDB4MDgwYywKLQkweGIyMGEsIDB4YThiMCwgMHhkMDk0LCAweDAxMTgsIDB4YjhkNCwgMHhjMDhkLCAweGI4ZDYsIDB4OTAwNiwKLQkweDkwMDUsIDB4MDEyZSwgMHgwMGVlLCAweDAwZmUsIDB4MDBiZSwgMHgwMDA1LCAweDA4MGMsIDB4NTg1NCwKLQkweDAxMTgsIDB4MjAwOSwgMHgwMDA3LCAweDAwZjgsIDB4YTk5OCwgMHhhZWIwLCAweDA4MGMsIDB4NjdiNCwKLQkweDE5MDQsIDB4NjUxMywgMHg5MTg2LCAweDAwN2YsIDB4MDEzMCwgMHgwODBjLCAweDZjMTEsIDB4MDExOCwKLQkweDIwMDksIDB4MDAwOSwgMHgwMDgwLCAweDAwOTYsIDB4MDgwYywgMHgxMDU5LCAweDExMjAsIDB4MDA5ZSwKLQkweDIwMDksIDB4MDAwMiwgMHgwMDQwLCAweDI5MDAsIDB4MDA5ZSwgMHhhODA2LCAweDA4MGMsIDB4ZDEwOSwKLQkweDE5YjAsIDB4MjAwOSwgMHgwMDAzLCAweDIwMDEsIDB4NDAwNSwgMHgwODA0LCAweDY1MWEsIDB4YTk5OCwKLQkweGFlYjAsIDB4MDgwYywgMHg2N2I0LCAweDE5MDQsIDB4NjUxMywgMHgwMDk2LCAweDA4MGMsIDB4MTA1OSwKLQkweDExMjgsIDB4MDA5ZSwgMHgyMDA5LCAweDAwMDIsIDB4MDgwNCwgMHg2NWQzLCAweDI5MDAsIDB4MDA5ZSwKLQkweGE4MDYsIDB4MDA5NiwgMHgyMDQ4LCAweDIwYTksIDB4MDAyYiwgMHhiOGM0LCAweDIwZTAsIDB4YjhjOCwKLQkweDIwOTgsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDAyLCAweDIwYTAsIDB4NDAwMywKLQkweDIwYTksIDB4MDAwOCwgMHg5MDgwLCAweDAwMDYsIDB4MjBhMCwgMHhiYmM4LCAweDkzOTgsIDB4MDAwNiwKLQkweDIzOTgsIDB4MDgwYywgMHgwZmQ2LCAweDAwOWUsIDB4YTg3YiwgMHgwMDAwLCAweGE4ODMsIDB4MDAwMCwKLQkweGE4OTcsIDB4NDAwMCwgMHhkNjg0LCAweDExNjgsIDB4MDgwYywgMHg1ODQwLCAweGQwYjQsIDB4MTExOCwKLQkweGE4OWIsIDB4MDAwYiwgMHgwMGUwLCAweGI4MDAsIDB4ZDA4YywgMHgwMTE4LCAweGE4OWIsIDB4MDAwYywKLQkweDAwYjAsIDB4MDgwYywgMHg2YzExLCAweDAxMTgsIDB4YTg5YiwgMHgwMDA5LCAweDAwODAsIDB4MDgwYywKLQkweDU4NTQsIDB4MDExOCwgMHhhODliLCAweDAwMDcsIDB4MDA1MCwgMHgwODBjLCAweGQwZWMsIDB4MTkwNCwKLQkweDY1NGYsIDB4MjAwOSwgMHgwMDAzLCAweDIwMDEsIDB4NDAwNSwgMHgwODA0LCAweDY1MWEsIDB4YTg3YiwKLQkweDAwMzAsIDB4YTg5NywgMHg0MDA1LCAweGE4MDQsIDB4ODAwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTBiYywKLQkweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwMiwgMHgyMDA5LCAweDAwMmIsIDB4YWFhMCwKLQkweGFiOWMsIDB4YWNhOCwgMHhhZGE0LCAweDIwMzEsIDB4MDAwMCwgMHgyMDQxLCAweDEyYTgsIDB4MDgwYywKLQkweGI2OTEsIDB4MTkwNCwgMHg2NTRmLCAweDIwMDksIDB4MDAwMiwgMHgwOGU4LCAweDIwMDEsIDB4MDAyOCwKLQkweDkwMGUsIDB4MDgwNCwgMHg2NTUwLCAweDIwMDksIDB4MTgwYywgMHgyMTBjLCAweGQxOGMsIDB4MDExOCwKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDM4LCAweGQxODQsIDB4MDExOCwgMHgyMDAxLCAweDAwMDQsIDB4MDAxMCwKLQkweDIwMDEsIDB4MDAyOSwgMHg5MDBlLCAweDA4MDQsIDB4NjU1MCwgMHgyMDAxLCAweDAwMjksIDB4OTAwZSwKLQkweDA4MDQsIDB4NjU1MCwgMHgwODBjLCAweDM4YzAsIDB4MDgwNCwgMHg2NTUxLCAweDA4MGMsIDB4NTU1ZCwKLQkweDA4MDQsIDB4NjU1MSwgMHgwODBjLCAweDQ2ZDUsIDB4MDgwNCwgMHg2NTUxLCAweDA4MGMsIDB4NDc0ZSwKLQkweDA4MDQsIDB4NjU1MSwgMHgwODBjLCAweDQ3YWEsIDB4MDgwNCwgMHg2NTUxLCAweDA4MGMsIDB4NGMxNywKLQkweDA4MDQsIDB4NjU1MSwgMHgwODBjLCAweDRlZGYsIDB4MDgwNCwgMHg2NTUxLCAweDA4MGMsIDB4NTFjNCwKLQkweDA4MDQsIDB4NjU1MSwgMHgwODBjLCAweDUzYmQsIDB4MDgwNCwgMHg2NTUxLCAweDA4MGMsIDB4M2FmZSwKLQkweDA4MDQsIDB4NjU1MSwgMHgwMGI2LCAweGE5NzQsIDB4YWU3OCwgMHg5Njg0LCAweDNmZmYsIDB4OTA4MiwKLQkweDQwMDAsIDB4MTYwOCwgMHg5MTgyLCAweDA4MDAsIDB4MTI1OCwgMHg5MTg4LCAweDEwMDAsIDB4MjEwNCwKLQkweDkwNWQsIDB4MDEzMCwgMHgwODBjLCAweDZjMTEsIDB4MTEzOCwgMHgwMGQ5LCAweDkwMDYsIDB4MDBiMCwKLQkweDIwMDEsIDB4MDAyOCwgMHg5MDBlLCAweDAwOTAsIDB4OTA4MiwgMHgwMDA2LCAweDEyNDAsIDB4YjkwMCwKLQkweGQxZmMsIDB4MGQ5OCwgMHgyMDAxLCAweDAwMjksIDB4MjAwOSwgMHgxMDAwLCAweDAwMzgsIDB4MjAwMSwKLQkweDAwMjksIDB4OTAwZSwgMHgwMDE4LCAweDIwMDEsIDB4MDAyOSwgMHg5MDBlLCAweDkwMDUsIDB4MDBiZSwKLQkweDAwMDUsIDB4YTg3NywgMHgwMDAwLCAweGI4ZDAsIDB4OTAwNSwgMHgxOTA0LCAweDY2ZGEsIDB4Yjg4OCwKLQkweDkwMDUsIDB4MTkwNCwgMHg2NmRhLCAweGI4MzgsIDB4YjkzYywgMHg5MTAyLCAweDFhMDQsIDB4NjZkYSwKLQkweDJiMTAsIDB4MDgwYywgMHhiMTQzLCAweDA5MDQsIDB4NjZkNiwgMHg4MTA4LCAweGI5M2UsIDB4NjIxMiwKLQkweDI5MDAsIDB4NjAxNiwgMHg2MDIzLCAweDAwMDMsIDB4NjAwYiwgMHhmZmZmLCAweDYwMDcsIDB4MDA0MCwKLQkweGE4NzgsIDB4NjA1ZSwgMHhhODgwLCAweDYwNjYsIDB4YTg4MywgMHgwMDAwLCAweGE4N2MsIDB4ZDBhYywKLQkweDA1YjgsIDB4YzBkZCwgMHhhODdlLCAweGE4ODgsIDB4ODAwMSwgMHgxNTYwLCAweDIwMTEsIDB4MTgwZCwKLQkweDIyMTQsIDB4ZDI4YywgMHgxOTBjLCAweDZjZDYsIDB4YTgxNiwgMHhhODY0LCAweDkwOTQsIDB4MDBmNywKLQkweDkyOTYsIDB4MDAxMSwgMHgxMWY4LCAweDkwODQsIDB4MDBmZiwgMHhjMGJkLCAweDYwMWUsIDB4YThhYywKLQkweGFhYjAsIDB4YTgzNiwgMHhhYTNhLCAweDIwMDEsIDB4MDAwZiwgMHg4MDAxLCAweDFkZjAsIDB4MjAwMSwKLQkweDgwMDQsIDB4NjAwMywgMHgwMDA0LCAweDYwNDYsIDB4MDBmNiwgMHgyMDc5LCAweDAzODAsIDB4NzgxOCwKLQkweGQwYmMsIDB4MWRlOCwgMHg3ODMzLCAweDAwMTAsIDB4MmMwMCwgMHg3ODM2LCAweDc4MWIsIDB4ODA4MCwKLQkweDAwZmUsIDB4MDAwNSwgMHgwODBjLCAweDE3YWQsIDB4NjAxYywgMHhjMGJkLCAweDYwMWUsIDB4MGMzOCwKLQkweDIwMDksIDB4MTgwZCwgMHgyMTBjLCAweGQxOGMsIDB4MTkwYywgMHg2Y2UwLCAweGQwYjQsIDB4MTkwYywKLQkweDFjOWMsIDB4MjAwMSwgMHg4MDA0LCAweDYwMDMsIDB4MDAwMiwgMHgwOGU4LCAweDgxZmYsIDB4MTExMCwKLQkweGI4OGIsIDB4MDAwMSwgMHgyOTA4LCAweGI4Y2MsIDB4YjljZSwgMHg5MDA1LCAweDExMTAsIDB4YjlkMiwKLQkweDAwMjAsIDB4MDA5NiwgMHgyMDQ4LCAweGE5MDIsIDB4MDA5ZSwgMHgwMDA1LCAweDAwYjYsIDB4MDEyNiwKLQkweDAwYzYsIDB4MDAyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjIxMCwgMHgyMjU4LCAweGJhMDAsIDB4OTAwNSwKLQkweDAxMTAsIDB4YzI4NSwgMHgwMDA4LCAweGMyODQsIDB4YmEwMiwgMHgwMDJlLCAweDAwY2UsIDB4MDEyZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAxMjYsIDB4MDBjNiwgMHgyMDkxLCAweDgwMDAsIDB4NjIxMCwKLQkweDIyNTgsIDB4YmEwNCwgMHgwMDA2LCAweDkwODYsIDB4MDAwNiwgMHgxMTcwLCAweGI4OWMsIDB4ZDBhYywKLQkweDAxNTgsIDB4MDgwYywgMHg2YzBkLCAweDAxNDAsIDB4OTI4NCwgMHhmZjAwLCAweDgwMDcsIDB4OTA4NiwKLQkweDAwMDcsIDB4MTExMCwgMHgyMDExLCAweDA2MDAsIDB4MDAwZSwgMHg5Mjk0LCAweGZmMDAsIDB4OTIxNSwKLQkweGJhMDYsIDB4MDAwNiwgMHg5MDg2LCAweDAwMDYsIDB4MTEyMCwgMHhiYTkwLCAweDgyZmYsIDB4MDkwYywKLQkweDBkODUsIDB4MDAwZSwgMHgwMGNlLCAweDAxMmUsIDB4MDBiZSwgMHgwMDA1LCAweDAwYjYsIDB4MDEyNiwKLQkweDAwYzYsIDB4MjA5MSwgMHg4MDAwLCAweDYyMTAsIDB4MjI1OCwgMHhiYTA0LCAweDAwMDYsIDB4OTA4NiwKLQkweDAwMDYsIDB4MTE2OCwgMHhiODljLCAweGQwYTQsIDB4MDE1MCwgMHgwODBjLCAweDZjMDksIDB4MTEzOCwKLQkweDkyODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDcsIDB4MTExMCwgMHgyMDExLCAweDAwMDYsIDB4MDAwZSwKLQkweDkyOTQsIDB4MDBmZiwgMHg4MDA3LCAweDkyMTUsIDB4YmEwNiwgMHgwMGNlLCAweDAxMmUsIDB4MDBiZSwKLQkweDAwMDUsIDB4OTE4MiwgMHgwODAwLCAweDAyMTgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDBkNiwKLQkweDAwMjYsIDB4OTE5MCwgMHgxMDAwLCAweDIyMDQsIDB4OTA1ZCwgMHgxMTg4LCAweDAwOTYsIDB4MDgwYywKLQkweDEwNTksIDB4Mjk1OCwgMHgwMDllLCAweDAxNjgsIDB4MmIwMCwgMHgyMDEyLCAweGI4NWMsIDB4YjhjYSwKLQkweGI4NjAsIDB4YjhjNiwgMHg5MDA2LCAweGI4YTYsIDB4YjhhZSwgMHgwODBjLCAweDYxYjcsIDB4OTAwNiwKLQkweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMmUsIDB4MDBkZSwgMHgwMDA1LCAweDAwYjYsIDB4MDA5NiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwMjYsIDB4OTE4MiwgMHgwODAwLCAweDAyMTgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDRhOCwgMHgwMGQ2LCAweDkxOTAsIDB4MTAwMCwgMHgyMjA0LCAweDkwNWQsIDB4MDU2OCwKLQkweDIwMTMsIDB4MDAwMCwgMHhiOGE0LCAweDkwNGQsIDB4MDExMCwgMHgwODBjLCAweDEwOGIsIDB4MDBkNiwKLQkweDAwYzYsIDB4YjhiYywgMHgyMDYwLCAweDhjZmYsIDB4MDE2OCwgMHg2MDBjLCAweDAwMDYsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxMTAsIDB4MDgwYywgMHgxMDBiLCAweDA4MGMsIDB4YjE2YywKLQkweDAwY2UsIDB4MGM4OCwgMHgwMGNlLCAweDAwZGUsIDB4MDBjNiwgMHhiOGFjLCAweDkwNjUsIDB4MDEyOCwKLQkweDYyMWMsIDB4ZDJjNCwgMHgwMTEwLCAweDA4MGMsIDB4OTI4ZCwgMHgwMGNlLCAweDJiNDgsIDB4YjhjOCwKLQkweGI4NWUsIDB4YjhjNCwgMHhiODYyLCAweDA4MGMsIDB4MTA5YiwgMHgwMGRlLCAweDkwMDYsIDB4MDAyZSwKLQkweDAxMmUsIDB4MDA5ZSwgMHgwMGJlLCAweDAwMDUsIDB4MDAxNiwgMHg5MTgyLCAweDA4MDAsIDB4MDIxOCwKLQkweDkwODUsIDB4MDAwMSwgMHgwMDMwLCAweDkxODgsIDB4MTAwMCwgMHgyMTA0LCAweDkwNWQsIDB4MGRjMCwKLQkweDkwMDYsIDB4MDAxZSwgMHgwMDA1LCAweDAwZDYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4OTAwNiwKLQkweGI4MGEsIDB4YjgwZSwgMHhiODAwLCAweGMwOGMsIDB4YjgwMiwgMHgwODBjLCAweDc3OWUsIDB4MTUxMCwKLQkweGI4YTAsIDB4OTA4NiwgMHgwMDdlLCAweDAxMjAsIDB4MDgwYywgMHhiMDk0LCAweDExZDgsIDB4MDA3OCwKLQkweDcwNDAsIDB4ZDBlNCwgMHgwMWI4LCAweDAwYzYsIDB4MjA2MSwgMHgxOTgyLCAweDcwNDgsIDB4MjA2MiwKLQkweDcwNGMsIDB4NjAwNiwgMHg3MDUwLCAweDYwMGEsIDB4NzA1NCwgMHg2MDBlLCAweDAwY2UsIDB4NzAzYywKLQkweDIwNjksIDB4MDE0MCwgMHg5MDA1LCAweDExMTAsIDB4MjAwMSwgMHgwMDAxLCAweDY4ODYsIDB4MjA2OSwKLQkweDE4MDAsIDB4NjhiNiwgMHg3MDQwLCAweGI4NWUsIDB4NzA0OCwgMHhiODYyLCAweDcwNGMsIDB4Yjg2NiwKLQkweDIwZTEsIDB4MDAwMCwgMHgyMDk5LCAweDAyNzYsIDB4YjhjNCwgMHgyMGU4LCAweGI4YzgsIDB4OTA4OCwKLQkweDAwMGEsIDB4MjFhMCwgMHgyMGE5LCAweDAwMDQsIDB4NDAwMywgMHgyMDk5LCAweDAyN2EsIDB4OTA4OCwKLQkweDAwMDYsIDB4MjFhMCwgMHgyMGE5LCAweDAwMDQsIDB4NDAwMywgMHgyMDY5LCAweDAyMDAsIDB4NjgxNywKLQkweDAwMDEsIDB4NzA0MCwgMHhiODZhLCAweDcxNDQsIDB4Yjk2ZSwgMHg3MDQ4LCAweGI4NzIsIDB4NzA1MCwKLQkweGI4NzYsIDB4MjA2OSwgMHgwMjAwLCAweDY4MTcsIDB4MDAwMCwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwKLQkweDExMTAsIDB4NzE0NCwgMHhiOTZlLCAweDkxODIsIDB4MDIxMSwgMHgxMjE4LCAweDIwMDksIDB4MDAwOCwKLQkweDA0MDAsIDB4OTE4MiwgMHgwMjU5LCAweDEyMTgsIDB4MjAwOSwgMHgwMDA3LCAweDAwZDAsIDB4OTE4MiwKLQkweDAyYzEsIDB4MTIxOCwgMHgyMDA5LCAweDAwMDYsIDB4MDBhMCwgMHg5MTgyLCAweDAzNDksIDB4MTIxOCwKLQkweDIwMDksIDB4MDAwNSwgMHgwMDcwLCAweDkxODIsIDB4MDQyMSwgMHgxMjE4LCAweDIwMDksIDB4MDAwNCwKLQkweDAwNDAsIDB4OTE4MiwgMHgwNTgxLCAweDEyMTgsIDB4MjAwOSwgMHgwMDAzLCAweDAwMTAsIDB4MjAwOSwKLQkweDAwMDIsIDB4Yjk5MiwgMHgwMTRlLCAweDAxM2UsIDB4MDE1ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDBlNiwgMHgyMDcxLCAweDAyNjAsIDB4NzAzNCwgMHhiODk2LCAweDcwM2MsIDB4Yjg5YSwKLQkweDcwNTQsIDB4Yjg5ZSwgMHgwMDM2LCAweGJiZDQsIDB4YzM4NCwgMHhiYTAwLCAweDIwMDksIDB4MTg2NywKLQkweDIxMGMsIDB4ZDBiYywgMHgwMTIwLCAweGQxZWMsIDB4MDExMCwgMHhjMmFkLCAweDAwMDgsIDB4YzJhYywKLQkweGQwYzQsIDB4MDE0OCwgMHhkMWU0LCAweDAxMzgsIDB4YzJiZCwgMHhkMGNjLCAweDAxMjgsIDB4ZDM4YywKLQkweDExMDgsIDB4YzM4NSwgMHgwMDA4LCAweGMyYmMsIDB4YmEwMiwgMHhiYmQ2LCAweDAwM2UsIDB4MDBlZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwOTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4YjhhNCwKLQkweDkwNGQsIDB4MDU3OCwgMHhhOTAwLCAweDgxZmYsIDB4MTVjMCwgMHhhYTA0LCAweDkyODIsIDB4MDAxMCwKLQkweDE2YzgsIDB4MDEzNiwgMHgwMTQ2LCAweDAxYzYsIDB4MDFkNiwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywKLQkweDkwOGMsIDB4MDAzZiwgMHgyMWUwLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMDQsIDB4MjA5OCwKLQkweDIwMDksIDB4MDAxMCwgMHgyMGE5LCAweDAwMDEsIDB4NDAwMiwgMHg5MDg2LCAweGZmZmYsIDB4MDEyMCwKLQkweDgxMDksIDB4MWRkMCwgMHgwODBjLCAweDBkODUsIDB4M2MwMCwgMHgyMGU4LCAweDMzMDAsIDB4ODAwMSwKLQkweDIwYTAsIDB4NDYwNCwgMHg4MjEwLCAweGFhMDYsIDB4MDFkZSwgMHgwMWNlLCAweDAxNGUsIDB4MDEzZSwKLQkweDAwNjAsIDB4MDgwYywgMHgxMDU5LCAweDAxNzAsIDB4MjkwMCwgMHhiOGE2LCAweGE4MDMsIDB4MDAwMCwKLQkweDA4MGMsIDB4NmE0YSwgMHhhODA3LCAweDAwMDEsIDB4YWUxMiwgMHg5MDg1LCAweDAwMDEsIDB4MDEyZSwKLQkweDAwOWUsIDB4MDAwNSwgMHg5MDA2LCAweDBjZDgsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDA5NiwKLQkweGI4YTQsIDB4OTA0ZCwgMHgwMTg4LCAweGE4MDAsIDB4OTAwNSwgMHgxMTUwLCAweDA4MGMsIDB4NmE1OSwKLQkweDExNTgsIDB4YTgwNCwgMHg5MDhhLCAweDAwMDIsIDB4MDIxOCwgMHg4MDAxLCAweGE4MDYsIDB4MDAyMCwKLQkweDA4MGMsIDB4MTA4YiwgMHhiOGE3LCAweDAwMDAsIDB4MDA5ZSwgMHgwMTJlLCAweDAwMDUsIDB4MDA5NiwKLQkweDAwYzYsIDB4Yjg4OCwgMHg5MDA1LCAweDE5MDQsIDB4NjkzZiwgMHhiOGQwLCAweDkwNGQsIDB4MDkwNCwKLQkweDY5M2YsIDB4MjAwMSwgMHgwMzgyLCAweDIwMDQsIDB4OTA4NCwgMHgwMDA3LCAweDkwODYsIDB4MDAwMSwKLQkweDE5MDQsIDB4NjkzZCwgMHgwODBjLCAweGIxNDMsIDB4MDkwNCwgMHg2OTNkLCAweDgyMTAsIDB4YmEzZSwKLQkweGE4MDAsIDB4YjhkMiwgMHg5MDA1LCAweDExMDgsIDB4YjhjZSwgMHgyYjAwLCAweDYwMTIsIDB4MjkwMCwKLQkweDYwMTYsIDB4NjAyMywgMHgwMDAzLCAweDYwMGIsIDB4ZmZmZiwgMHg2MDA3LCAweDAwNDAsIDB4YTg3OCwKLQkweDYwNWUsIDB4YTg4MCwgMHg5MDg0LCAweDAwZmYsIDB4NjA2NiwgMHhhODgzLCAweDAwMDAsIDB4YTg3YywKLQkweGQwYWMsIDB4MDFjOCwgMHhjMGRkLCAweGE4N2UsIDB4YTg4OCwgMHg4MDAxLCAweDE1NTgsIDB4YTgxNiwKLQkweGE4NjQsIDB4OTA5NCwgMHgwMGY3LCAweDkyOTYsIDB4MDAxMSwgMHgxNTIwLCAweDkwODQsIDB4MDBmZiwKLQkweGMwYmQsIDB4NjAxZSwgMHhhOGFjLCAweGFhYjAsIDB4YTgzNiwgMHhhYTNhLCAweDIwMDEsIDB4ODAwNCwKLQkweDYwMDMsIDB4MDAwNCwgMHgwMDMwLCAweDA4MGMsIDB4MWM5YywgMHgyMDAxLCAweDgwMDQsIDB4NjAwMywKLQkweDAwMDIsIDB4NjA0NiwgMHgyMDAxLCAweDAwMTAsIDB4MmMwOCwgMHgwODBjLCAweGFjZWQsIDB4YjgzOCwKLQkweGJhM2MsIDB4OTIwMiwgMHgwYTA0LCAweDY4ZTUsIDB4MDAxMCwgMHhiODhiLCAweDAwMDEsIDB4MDBjZSwKLQkweDAwOWUsIDB4MDAwNSwgMHgwODBjLCAweDE3YWQsIDB4NjAxYywgMHhjMGJkLCAweDYwMWUsIDB4MDhmMCwKLQkweDAwYjYsIDB4MDA5NiwgMHgwMDE2LCAweDIwYTksIDB4MDgwMCwgMHg5MDBlLCAweDAwMTYsIDB4MDgwYywKLQkweDY3YjQsIDB4MTE1OCwgMHhiOGQwLCAweDkwNGQsIDB4MDE0MCwgMHgzZTAwLCAweDkwODYsIDB4MDAwMiwKLQkweDExMTgsIDB4YjgwMCwgMHhkMGJjLCAweDExMDgsIDB4MDA0MSwgMHgwMDFlLCAweDgxMDgsIDB4MWYwNCwKLQkweDY5NGUsIDB4MDAxZSwgMHgwMGJlLCAweDAwOWUsIDB4MDAwNSwgMHgwMDk2LCAweDAwMTYsIDB4YjhkMCwKLQkweDkwNGQsIDB4MDE4OCwgMHhhODAwLCAweGI4ZDIsIDB4OTAwNSwgMHgxMTA4LCAweGI4Y2UsIDB4OTAwNiwKLQkweGE4MDIsIDB4YTg2NywgMHgwMTAzLCAweGFiN2EsIDB4YTg3NywgMHgwMDAwLCAweDA4MGMsIDB4ZDIyMCwKLQkweDA4MGMsIDB4NzAxMiwgMHgwYzYwLCAweDAwMWUsIDB4MDA5ZSwgMHgwMDA1LCAweDAwODYsIDB4OTA0NiwKLQkweGI4ZDAsIDB4OTA0ZCwgMHgwMWIwLCAweGE4NmMsIDB4OTQwNiwgMHgxMTE4LCAweGE4NzAsIDB4OTUwNiwKLQkweDAxMjgsIDB4Mjk0MCwgMHhhODAwLCAweDkwNGQsIDB4MDE2MCwgMHgwY2E4LCAweGE4MDAsIDB4ODhmZiwKLQkweDExMjgsIDB4YjhkMiwgMHg5MDA1LCAweDExMTgsIDB4YjhjZSwgMHgwMDA4LCAweGEwMDIsIDB4YTgwMywKLQkweDAwMDAsIDB4MDA4ZSwgMHgwMDA1LCAweDkwMWUsIDB4MDAxMCwgMHgyMDE5LCAweDAwMDEsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMGU2LCAweDAwOTYsIDB4MDBjNiwgMHgwMDg2LCAweDAwMjYsIDB4MjA3MSwKLQkweDE5ZTgsIDB4OTA0NiwgMHg3MDI4LCAweDkwNjUsIDB4MDFlOCwgMHg2MDE0LCAweDIwNjgsIDB4ODNmZiwKLQkweDAxMjAsIDB4NjA1YywgMHg5NjA2LCAweDAxNTgsIDB4MDAzMCwgMHhhODZjLCAweDk0MDYsIDB4MTExOCwKLQkweGE4NzAsIDB4OTUwNiwgMHgwMTIwLCAweDJjNDAsIDB4NjAwYywgMHgyMDYwLCAweDBjNjAsIDB4NjAwYywKLQkweDAwMDYsIDB4MDA2NiwgMHgyODMwLCAweDA4MGMsIDB4YTQyMCwgMHgwMDZlLCAweDAwMGUsIDB4ODNmZiwKLQkweDA1MDgsIDB4MGMwOCwgMHg5MDQ2LCAweGI4ZDAsIDB4OTA0ZCwgMHgwMWUwLCAweDgzZmYsIDB4MDEyMCwKLQkweGE4NzgsIDB4OTYwNiwgMHgwMTU4LCAweDAwMzAsIDB4YTg2YywgMHg5NDA2LCAweDExMTgsIDB4YTg3MCwKLQkweDk1MDYsIDB4MDEyMCwgMHgyOTQwLCAweGE4MDAsIDB4MjA0OCwgMHgwYzcwLCAweGI4ZDAsIDB4YWEwMCwKLQkweDAwMjYsIDB4OTkwNiwgMHgxMTEwLCAweGJhZDIsIDB4MDAwOCwgMHhhMjAyLCAweDAwMGUsIDB4ODNmZiwKLQkweDAxMDgsIDB4MGMxMCwgMHgwMDJlLCAweDAwOGUsIDB4MDBjZSwgMHgwMDllLCAweDAwZWUsIDB4MDEyZSwKLQkweDAwMDUsIDB4OTAxNiwgMHgwNDg5LCAweDExMTAsIDB4MjAxMSwgMHgwMDAxLCAweDAwMDUsIDB4MDgwYywKLQkweDZhYWUsIDB4MDEyOCwgMHgwODBjLCAweGNmZGMsIDB4MDAxMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDA4MGMsIDB4NmFhZSwgMHgwMTI4LCAweDA4MGMsIDB4Y2Y3ZCwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDgwYywgMHg2YWFlLCAweDAxMjgsIDB4MDgwYywgMHhjZmQ5LCAweDAwMTAsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHgwODBjLCAweDZhYWUsIDB4MDEyOCwgMHgwODBjLCAweGNmOWMsIDB4MDAxMCwKLQkweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDA4MGMsIDB4NmFhZSwgMHgwMTI4LCAweDA4MGMsIDB4ZDAxZiwKLQkweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4YjhhNCwgMHg5MDBkLCAweDExMTgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHgwMTM2LCAweDAxYzYsIDB4YTgwMCwgMHg5MDA1LCAweDExYjgsIDB4ODkwZSwKLQkweDgxMGUsIDB4ODEwZiwgMHg5MTg0LCAweDAwM2YsIDB4MjBlMCwgMHg5MTg0LCAweGZmYzAsIDB4OTA4MCwKLQkweDAwMDQsIDB4MjA5OCwgMHgyMGE5LCAweDAwMDEsIDB4MjAwOSwgMHgwMDEwLCAweDQwMDIsIDB4OTYwNiwKLQkweDAxMjgsIDB4ODEwOSwgMHgxZGQ4LCAweDkwODUsIDB4MDAwMSwgMHgwMDA4LCAweDkwMDYsIDB4MDFjZSwKLQkweDAxM2UsIDB4MDAwNSwgMHgwMTQ2LCAweDAxZDYsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwKLQkweDAwMDQsIDB4MjBhMCwgMHgyMGE5LCAweDAwMTAsIDB4MjAwOSwgMHhmZmZmLCAweDQxMDQsIDB4MDFkZSwKLQkweDAxNGUsIDB4MDEzNiwgMHgwMWM2LCAweGE4MDAsIDB4OTAwNSwgMHgxMWI4LCAweDg5MGUsIDB4ODEwZSwKLQkweDgxMGYsIDB4OTE4NCwgMHgwMDNmLCAweDIwZTAsIDB4OTE4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwNCwKLQkweDIwOTgsIDB4MjBhOSwgMHgwMDAxLCAweDIwMDksIDB4MDAxMCwgMHg0MDAyLCAweDk2MDYsIDB4MDEyOCwKLQkweDgxMDksIDB4MWRkOCwgMHg5MDg1LCAweDAwMDEsIDB4MDA2OCwgMHgwMTQ2LCAweDAxZDYsIDB4MzMwMCwKLQkweDgwMDEsIDB4MjBhMCwgMHgzYzAwLCAweDIwZTgsIDB4MjAwMSwgMHhmZmZmLCAweDQwMDQsIDB4MDFkZSwKLQkweDAxNGUsIDB4OTAwNiwgMHgwMWNlLCAweDAxM2UsIDB4MDAwNSwgMHgwMDk2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4YjhhNCwgMHg5MDRkLCAweDExMjgsIDB4MDgwYywgMHgxMDU5LCAweDAxNjgsIDB4MjkwMCwKLQkweGI4YTYsIDB4MDgwYywgMHg2YTRhLCAweGE4MDMsIDB4MDAwMSwgMHhhODA3LCAweDAwMDAsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMDllLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDAwOTYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHhiOGE0LCAweDkwNGQsIDB4MDEzMCwgMHhiOGE3LCAweDAwMDAsIDB4MDgwYywKLQkweDEwOGIsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDA5ZSwgMHgwMDA1LCAweGI4OWMsIDB4ZDBhNCwKLQkweDAwMDUsIDB4MDBiNiwgMHgwMGY2LCAweDA4MGMsIDB4Nzc5ZSwgMHgwMWIwLCAweDcxYzQsIDB4ODFmZiwKLQkweDExOTgsIDB4NzFkYywgMHhkMTljLCAweDAxODAsIDB4MjAwMSwgMHgwMDdlLCAweDkwODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA1ZCwgMHgwMTQ4LCAweGI4MDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwNiwKLQkweDExMTgsIDB4YjgwMCwgMHhjMGVkLCAweGI4MDIsIDB4MjA3OSwgMHgxODQ3LCAweDc4MDQsIDB4ZDBhNCwKLQkweDAxZDAsIDB4MDE1NiwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwgMHgwMDE2LCAweDA4MGMsIDB4NjdiNCwKLQkweDExNjgsIDB4YjgwNCwgMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHg5MDk2LCAweDAwMDQsIDB4MDExOCwKLQkweDkwODYsIDB4MDAwNiwgMHgxMTE4LCAweGI4MDAsIDB4YzBlZCwgMHhiODAyLCAweDAwMWUsIDB4ODEwOCwKLQkweDFmMDQsIDB4NmFkNSwgMHgwMTVlLCAweDA4MGMsIDB4NmJjZiwgMHgwMTIwLCAweDIwMDEsIDB4MTk4NSwKLQkweDIwMGMsIDB4MDA5OCwgMHgyMDc5LCAweDE4NDcsIDB4NzgwNCwgMHhkMGE0LCAweDAxOTAsIDB4MjAwOSwKLQkweDA3ZDAsIDB4MjAwMSwgMHgxODJjLCAweDIwMDQsIDB4OTAwNSwgMHgwMTM4LCAweDIwMDEsIDB4MTg2NywKLQkweDIwMDQsIDB4ZDBlNCwgMHgwMTEwLCAweDIwMDksIDB4NWRjMCwgMHgyMDExLCAweDZiMGMsIDB4MDgwYywKLQkweDhhNWQsIDB4MDBmZSwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwgMHgyMDExLCAweDZiMGMsIDB4MDgwYywKLQkweDg5OTMsIDB4MDgwYywgMHg2YmNmLCAweDAxZDgsIDB4MjAwMSwgMHgxMDdlLCAweDIwMDQsIDB4MjA1OCwKLQkweGI5MDAsIDB4YzFlYywgMHhiOTAyLCAweDA4MGMsIDB4NmMwZCwgMHgwMTMwLCAweDIwMDksIDB4MDdkMCwKLQkweDIwMTEsIDB4NmIwYywgMHgwODBjLCAweDhhNWQsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4OTAwNiwKLQkweDcwN2UsIDB4NzA2MCwgMHg3MDgyLCAweDA4MGMsIDB4MzBiZiwgMHgwMGVlLCAweDA0ZDAsIDB4MDE1NiwKLQkweDAwYzYsIDB4MjBhOSwgMHgwMDdmLCAweDkwMGUsIDB4MDAxNiwgMHgwODBjLCAweDY3YjQsIDB4MTU1OCwKLQkweGI4MDAsIDB4ZDBlYywgMHgwNTQwLCAweDAwNDYsIDB4YmFhMCwgMHgyMjIwLCAweDkwMDYsIDB4MjAwOSwKLQkweDAwMjksIDB4MDgwYywgMHhlYThkLCAweGI4MDAsIDB4YzBlNSwgMHhjMGVjLCAweGI4MDIsIDB4MDgwYywKLQkweDZjMDksIDB4MjAwMSwgMHgwNzA3LCAweDExMjgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NSwKLQkweDA3MDAsIDB4YjgwNiwgMHgwODBjLCAweGFjZmMsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4OTdiMCwKLQkweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweDk2NmQsIDB4OTAwZSwgMHgwODBjLCAweGU3NWQsIDB4MDA3ZSwKLQkweDAwNGUsIDB4MDgwYywgMHhhZDE4LCAweDAwMWUsIDB4ODEwOCwgMHgxZjA0LCAweDZiMzQsIDB4MDBjZSwKLQkweDAxNWUsIDB4MDBiZSwgMHgwMDA1LCAweDAwYjYsIDB4NjAxMCwgMHgyMDU4LCAweGI4MDAsIDB4YzBlYywKLQkweGI4MDIsIDB4MDBiZSwgMHgwMDA1LCAweDAwYjYsIDB4MDBjNiwgMHgwMDk2LCAweDA4MGMsIDB4MTA3MiwKLQkweDA5MGMsIDB4MGQ4NSwgMHgyOTU4LCAweDAwOWUsIDB4MjAwMSwgMHgxOTZiLCAweDJiMDIsIDB4OGIwNywKLQkweDgwMDYsIDB4ODAwNiwgMHg5MDhjLCAweDAwM2YsIDB4YjljNiwgMHg5MDhjLCAweGZmYzAsIDB4YjljYSwKLQkweGI4YWYsIDB4MDAwMCwgMHgyMDA5LCAweDAwZmYsIDB4MDgwYywgMHg2MWI3LCAweGI4MDcsIDB4MDAwNiwKLQkweGI4MTMsIDB4MDBmZiwgMHhiODE3LCAweGZmZmYsIDB4Yjg2ZiwgMHgwMjAwLCAweGI4NmMsIDB4Yjg5MywKLQkweDAwMDIsIDB4YjhiYiwgMHgwNTIwLCAweGI4YTMsIDB4MDBmZiwgMHhiOGFmLCAweDAwMDAsIDB4MDBjZSwKLQkweDAwYmUsIDB4MDAwNSwgMHg3ODEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsIDB4ZDBhYywKLQkweDAwMDUsIDB4NjAxMCwgMHgwMGI2LCAweDkwNWQsIDB4MDEwOCwgMHhiODAwLCAweDAwYmUsIDB4ZDBiYywKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4YjgwNCwgMHg5MDhjLCAweDAwZmYsIDB4OTE5NiwKLQkweDAwMDYsIDB4MDE4OCwgMHg5MTk2LCAweDAwMDQsIDB4MDE3MCwgMHg5MTk2LCAweDAwMDUsIDB4MDE1OCwKLQkweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxOTYsIDB4MDAwNiwgMHgwMTI4LCAweDkxOTYsIDB4MDAwNCwKLQkweDAxMTAsIDB4OTE5NiwgMHgwMDA1LCAweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDBiNiwKLQkweDAwZjYsIDB4MjAwMSwgMHgxMDdlLCAweDIwMDQsIDB4OTA1ZCwgMHgwMTEwLCAweGI4MDAsIDB4ZDBlYywKLQkweDAwZmUsIDB4MDBiZSwgMHgwMDA1LCAweDAxMjYsIDB4MDAyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDAwNiwKLQkweGJhYTAsIDB4OTI5MCwgMHgxMDAwLCAweDIyMDQsIDB4OWIwNiwgMHgxOTBjLCAweDBkODUsIDB4MDAwZSwKLQkweGJhMDAsIDB4OTAwNSwgMHgwMTEwLCAweGMyZmQsIDB4MDAwOCwgMHhjMmZjLCAweGJhMDIsIDB4MDAyZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgyMDExLCAweDE4MzcsIDB4MjIwNCwgMHhkMGNjLCAweDAxMzgsIDB4MjAwMSwKLQkweDE5ODMsIDB4MjAwYywgMHgyMDExLCAweDZiZmYsIDB4MDgwYywgMHg4YTVkLCAweDAwMDUsIDB4MjAxMSwKLQkweDZiZmYsIDB4MDgwYywgMHg4OTkzLCAweDIwMTEsIDB4MTgzNywgMHgyMjA0LCAweGMwY2MsIDB4MjAxMiwKLQkweDAwMDUsIDB4MDgwYywgMHg1ODQwLCAweGQwYWMsIDB4MDAwNSwgMHgwODBjLCAweDU4NDAsIDB4ZDBhNCwKLQkweDAwMDUsIDB4MDAxNiwgMHhiOTA0LCAweDkxODQsIDB4MDBmZiwgMHg5MDhlLCAweDAwMDYsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAxNiwgMHhiOTA0LCAweDkxODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwOGUsIDB4MDAwNiwKLQkweDAwMWUsIDB4MDAwNSwgMHgwMGI2LCAweDAwZjYsIDB4MDgwYywgMHhkNjQ1LCAweDAxNTgsIDB4NzBkYywKLQkweDkwODQsIDB4MDAyOCwgMHgwMTM4LCAweDIwMDEsIDB4MTA3ZiwgMHgyMDA0LCAweDkwNWQsIDB4MDExMCwKLQkweGI4ZDQsIDB4ZDA5NCwgMHgwMGZlLCAweDAwYmUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMTYsIDB4MDAzNiwKLQkweDAwNDYsIDB4MDA3NiwgMHgwMGI2LCAweDIwMDEsIDB4MTgxOCwgMHgyMDNjLCAweDk3ODAsIDB4MzQ4ZSwKLQkweDIwM2QsIDB4OTdiYywgMHhmZjAwLCAweDg3M2YsIDB4OTAwNiwgMHgyMDE4LCAweDIwMDgsIDB4OTI4NCwKLQkweDgwMDAsIDB4MDExMCwgMHgyMDE5LCAweDAwMDEsIDB4OTI5NCwgMHg3ZmZmLCAweDIxMDAsIDB4OTcwNiwKLQkweDAxOTAsIDB4OTFhMCwgMHgxMDAwLCAweDI0MDQsIDB4OTA1ZCwgMHgwMTY4LCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDA2LCAweDExMzgsIDB4ODNmZiwgMHgwMTE4LCAweGI4OWMsIDB4ZDBhNCwKLQkweDAxMTAsIDB4ODIxMSwgMHgwMTU4LCAweDgxMDgsIDB4ODNmZiwgMHgwMTIwLCAweDkxODIsIDB4MDgwMCwKLQkweDBlMjgsIDB4MDA2OCwgMHg5MTgyLCAweDAwN2UsIDB4MGUwOCwgMHgwMDQ4LCAweDAwYmUsIDB4MDA3ZSwKLQkweDAwNGUsIDB4MDAzZSwgMHgwMDFlLCAweDkwODUsIDB4MDAwMSwgMHgwMDBlLCAweDAwMDUsIDB4MDBiZSwKLQkweDAwN2UsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMWUsIDB4OTAwNiwgMHgwMDBlLCAweDAwMDUsIDB4MDA0NiwKLQkweDAwNTYsIDB4MDA3NiwgMHgwMGI2LCAweDIxMDAsIDB4OTA4NCwgMHg3ZmZmLCAweDkwODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA1ZCwgMHgwMTMwLCAweGI4MDQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwNiwKLQkweDA1NTAsIDB4OTE4NCwgMHg4MDAwLCAweDA1ODAsIDB4MjAwMSwgMHgxODE4LCAweDIwM2MsIDB4OTc4MCwKLQkweDM0OGUsIDB4MjAzZCwgMHg5N2JjLCAweGZmMDAsIDB4ODczZiwgMHg5MDA2LCAweDIwMjAsIDB4MjQwMCwKLQkweDk3MDYsIDB4MDFhMCwgMHg5NGE4LCAweDEwMDAsIDB4MjUwNCwgMHg5MDVkLCAweDAxNzgsIDB4YjgwNCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDYsIDB4MTE0OCwgMHhiODljLCAweGQwYTQsIDB4MDEzMCwKLQkweGI4MTQsIDB4OTIwNiwgMHgxMTE4LCAweGI4MTAsIDB4OTMwNiwgMHgwMTI4LCAweDg0MjAsIDB4OTQ4MiwKLQkweDA4MDAsIDB4MGUyOCwgMHgwMDQ4LCAweDkxOGMsIDB4N2ZmZiwgMHgwMGJlLCAweDAwN2UsIDB4MDA1ZSwKLQkweDAwNGUsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4OTE4YywgMHg3ZmZmLCAweDAwYmUsIDB4MDA3ZSwKLQkweDAwNWUsIDB4MDA0ZSwgMHg5MDA2LCAweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAwYTAsIDB4ODAwMSwKLQkweGEwMDEsIDB4YTAwMSwgMHhhMDAxLCAweDFkZDgsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwKLQkweDAwZjgsIDB4ODAwMSwgMHhhMDAxLCAweGEwMDEsIDB4YTAwMSwgMHgxZGQ4LCAweDAwMGUsIDB4MDAwNSwKLQkweDAwMDYsIDB4MjAwMSwgMHgwMGU4LCAweDgwMDEsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4MWRkOCwKLQkweDAwMGUsIDB4MDAwNSwgMHgyMDcxLCAweDE5MTAsIDB4NzAwMywgMHgwMDAxLCAweDcwMDcsIDB4MDAwMCwKLQkweDkwMDYsIDB4NzAxMiwgMHg3MDE2LCAweDcwMWEsIDB4NzAxZSwgMHg3MDBhLCAweDcwNDYsIDB4MjAwMSwKLQkweDE5MjIsIDB4MjAwMywgMHgwMDAwLCAweDAwMDUsIDB4MDAxNiwgMHgwMGU2LCAweDIwNzEsIDB4MTk0OCwKLQkweDkwMGUsIDB4NzEwYSwgMHgwODBjLCAweDU4NDAsIDB4ZDBmYywgMHgxMTQwLCAweDA4MGMsIDB4NTg0MCwKLQkweDkwMGUsIDB4ZDA5YywgMHgwMTA4LCAweDgxMDgsIDB4NzEwMiwgMHgwNDcwLCAweDIwMDEsIDB4MTg2NywKLQkweDIwMGMsIDB4OTE4NCwgMHgwMDA3LCAweDAwMDYsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywKLQkweDAwMGUsIDB4MDEwOCwgMHg5MDA2LCAweDAwMDIsIDB4NmQwNiwgMHg2ZDA2LCAweDZkMDYsIDB4NmQwNiwKLQkweDZkMDYsIDB4NmQyNCwgMHg2ZDM5LCAweDZkNDcsIDB4NzAwMywgMHgwMDAzLCAweDIwMDksIDB4MTg2OCwKLQkweDIxMGMsIDB4OTE4NCwgMHhmZjAwLCAweDkwOGUsIDB4ZmYwMCwgMHgwMTQwLCAweDgwMDcsIDB4OTAwNSwKLQkweDExMTAsIDB4MjAwMSwgMHgwMDAyLCAweDgwMDMsIDB4NzAwNiwgMHgwMDMwLCAweDcwMDcsIDB4MDAwMSwKLQkweDAwMTgsIDB4NzAwMywgMHgwMDA1LCAweDBjNTAsIDB4MjA3MSwgMHgxOTEwLCAweDcwNGYsIDB4MDAwMCwKLQkweDIwNzEsIDB4MTgwMCwgMHg3MGY3LCAweDAwMDEsIDB4MDBlZSwgMHgwMDFlLCAweDAwMDUsIDB4NzAwMywKLQkweDAwMDAsIDB4MjA3MSwgMHgxOTEwLCAweDIwMDksIDB4MTg2OCwgMHgyMTBjLCAweDkxODQsIDB4N2YwMCwKLQkweDgwMDcsIDB4OTA4YywgMHgwMDBmLCAweDAxNjAsIDB4NzE0ZSwgMHg4MDA0LCAweDgwMDQsIDB4ODAwNCwKLQkweDgwMDQsIDB4MjA3MSwgMHgxODAwLCAweDkwOGMsIDB4MDAwNywgMHgwMTI4LCAweDcwZjYsIDB4MGMyMCwKLQkweDcwNGYsIDB4MDAwZiwgMHgwYzkwLCAweDcwZjcsIDB4MDAwNSwgMHgwOGYwLCAweDAwZTYsIDB4MjA3MSwKLQkweDAwNTAsIDB4Njg0YywgMHg5MDA1LCAweDExNTAsIDB4MDBlNiwgMHgyMDcxLCAweDE5MTAsIDB4NzAyOCwKLQkweGMwODUsIDB4NzAyYSwgMHgwMGVlLCAweDkwODUsIDB4MDAwMSwgMHgwNDg4LCAweDY4NDQsIDB4OTAwNSwKLQkweDAxNTgsIDB4MDgwYywgMHg3YjI4LCAweDZhNjAsIDB4OTIwMCwgMHg3MDAyLCAweDY4NjQsIDB4OTEwMSwKLQkweDcwMDYsIDB4OTAwNiwgMHg3MDEyLCAweDcwMTYsIDB4Njg2MCwgMHg3MDAyLCAweDY4NjQsIDB4NzAwNiwKLQkweDY4NjgsIDB4NzAwYSwgMHg2ODZjLCAweDcwMGUsIDB4Njg0NCwgMHg5MDA1LCAweDExMTAsIDB4NzAxMiwKLQkweDcwMTYsIDB4Njg0YywgMHg3MDFhLCAweDcwMWMsIDB4OTA4NSwgMHgwMDQwLCAweDcwMWUsIDB4NzAzNywKLQkweDAwMTksIDB4NzAyYiwgMHgwMDAxLCAweDAwZTYsIDB4MjA3MSwgMHgxOTEwLCAweDcwMjgsIDB4YzA4NCwKLQkweDcwMmEsIDB4NzAwNywgMHgwMDAxLCAweDcwMGIsIDB4MDAwMCwgMHgwMGVlLCAweDkwMDYsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMDI2LCAweDIwNzEsIDB4MTk0OCwgMHg3MDAwLCAweDkwMTUsIDB4MDkwNCwKLQkweDcwMTcsIDB4OTI4NiwgMHgwMDAzLCAweDA5MDQsIDB4NmVhYywgMHg5Mjg2LCAweDAwMDUsIDB4MDkwNCwKLQkweDZlYWMsIDB4MjA3MSwgMHgxODc3LCAweGE4N2MsIDB4OTAwNSwgMHgwOTA0LCAweDZlMDcsIDB4NzE0MCwKLQkweGE4NjgsIDB4OTEwMiwgMHgwYTA0LCAweDcwMTcsIDB4YTg3OCwgMHhkMDg0LCAweDE1ZDgsIDB4YTg1MywKLQkweDAwMTksIDB4MjAwMSwgMHg4MDIzLCAweGE4NGUsIDB4MjA3MSwgMHgxOTEwLCAweDcwMWMsIDB4OTAwNSwKLQkweDE5MDQsIDB4NzFjNiwgMHgwZTA0LCAweDcyMzQsIDB4MjA3MSwgMHgwMDAwLCAweGE4NTAsIDB4NzAzMiwKLQkweGE4NGMsIDB4NzA4MiwgMHhhODcwLCAweDcwODYsIDB4YTg2YywgMHg3MDhhLCAweGE4ODAsIDB4NzA4ZSwKLQkweDcwMzYsIDB4MDE0NiwgMHgwMWQ2LCAweDAxMzYsIDB4MDFjNiwgMHgwMTU2LCAweDIwZTksIDB4MDAwMCwKLQkweDIwYTEsIDB4MDAyYSwgMHhhODY4LCAweDIwYTgsIDB4YTg2MCwgMHgyMGUwLCAweGE4NWMsIDB4OTA4MCwKLQkweDAwMjEsIDB4MjA5OCwgMHg0MDAzLCAweDAxNWUsIDB4MDFjZSwgMHgwMTNlLCAweDAxZGUsIDB4MDE0ZSwKLQkweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTIwMCwKLQkweDA4MDQsIDB4NmU4ZiwgMHhhODUzLCAweDAwMWIsIDB4MjAwMSwgMHg4MDI3LCAweDA4MjAsIDB4NzAwNCwKLQkweGQwOGMsIDB4MTkwNCwgMHg3MDE3LCAweGE4NTMsIDB4MDAxYSwgMHgyMDAxLCAweDgwMjQsIDB4MDgwNCwKLQkweDZkY2IsIDB4MDBlNiwgMHgwMDI2LCAweDIwNzEsIDB4MTk0OCwgMHg3MDAwLCAweDkwMTUsIDB4MDkwNCwKLQkweDcwMTcsIDB4OTI4NiwgMHgwMDAzLCAweDA5MDQsIDB4NmVhYywgMHg5Mjg2LCAweDAwMDUsIDB4MDkwNCwKLQkweDZlYWMsIDB4YTg0ZiwgMHg4MDIyLCAweGE4NTMsIDB4MDAxOCwgMHgwODA0LCAweDZlNzQsIDB4YTg2OCwKLQkweGQwZmMsIDB4MTUwOCwgMHgwMGU2LCAweDAwMjYsIDB4MjAwMSwgMHgxOTQ4LCAweDIwMDQsIDB4OTAxNSwKLQkweDA5MDQsIDB4NzAxNywgMHhhOTc4LCAweGE4NzQsIDB4OTEwNSwgMHgxOTA0LCAweDcwMTcsIDB4OTI4NiwKLQkweDAwMDMsIDB4MDkwNCwgMHg2ZWFjLCAweDkyODYsIDB4MDAwNSwgMHgwOTA0LCAweDZlYWMsIDB4YTg3YywKLQkweGQwYmMsIDB4MTkwNCwgMHg3MDE3LCAweDIyMDAsIDB4MDAwMiwgMHg3MDE3LCAweDZlNzAsIDB4NmVhYywKLQkweDZlYWMsIDB4NzAxNywgMHg2ZWFjLCAweDAwMDUsIDB4YTg2OCwgMHhkMGZjLCAweDE1MDAsIDB4MDBlNiwKLQkweDAwMjYsIDB4MjAwOSwgMHgxOTQ4LCAweDIxMGMsIDB4ODFmZiwgMHgwOTA0LCAweDcwMTcsIDB4YTg4MCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDEsIDB4MTkwNCwgMHg3MDE3LCAweDkxODYsIDB4MDAwMywKLQkweDA5MDQsIDB4NmVhYywgMHg5MTg2LCAweDAwMDUsIDB4MDkwNCwgMHg2ZWFjLCAweGE4N2MsIDB4ZDBjYywKLQkweDA5MDQsIDB4NzAxNywgMHhhODRmLCAweDgwMjEsIDB4YTg1MywgMHgwMDE3LCAweDAwMjgsIDB4MDAwNSwKLQkweGE4NGYsIDB4ODAyMCwgMHhhODUzLCAweDAwMTYsIDB4MjA3MSwgMHgxOTEwLCAweDcwMWMsIDB4OTAwNSwKLQkweDE5MDQsIDB4NzFjNiwgMHgwZTA0LCAweDcyMzQsIDB4MjA3MSwgMHgwMDAwLCAweGE4NGMsIDB4NzA4MiwKLQkweGE4NTAsIDB4NzAzMiwgMHhhODZjLCAweDcwODYsIDB4NzAzNiwgMHhhODcwLCAweDcwOGEsIDB4MjA5MSwKLQkweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwgMHgxOTBjLCAweDEyMDAsIDB4MjA3MSwKLQkweDE4MDAsIDB4MjAxMSwgMHgwMDAxLCAweGE4MDQsIDB4OTAwZCwgMHg3MDJjLCAweDExNTgsIDB4YTgwMiwKLQkweDI5MDAsIDB4NzAyZSwgMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg4OTksIDB4MDAyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMDk2LCAweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwKLQkweDgxZmYsIDB4MWRjOCwgMHgwMDllLCAweDBjNTgsIDB4YTg0ZiwgMHgwMDAwLCAweDAwZjYsIDB4MjA3OSwKLQkweDAwNTAsIDB4MjA3MSwgMHgxOTEwLCAweGE4MDMsIDB4MDAwMCwgMHg3MDEwLCAweDkwMDUsIDB4MTkwNCwKLQkweDZmOWQsIDB4NzgyYywgMHg5MDhjLCAweDA3ODAsIDB4MTkwYywgMHg3MzgyLCAweDgwMDQsIDB4ODAwNCwKLQkweDgwMDQsIDB4OTA4NCwgMHgwMDAzLCAweDAwMDIsIDB4NmVjYSwgMHg2ZjlkLCAweDZlZWUsIDB4NmYzYSwKLQkweDA4MGMsIDB4MGQ4NSwgMHgyMDcxLCAweDE4MDAsIDB4MjkwMCwgMHg3ODIyLCAweGE4MDQsIDB4OTAwZCwKLQkweDExNjgsIDB4MjA3MSwgMHgxYTA0LCAweDcwNDQsIDB4OTAwNSwgMHgxMzIwLCAweDIwMDEsIDB4MTk0OSwKLQkweDIwMDQsIDB4NzA0NiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDkwMTYsIDB4NzAyYywKLQkweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwgMHg4MWZmLCAweDFkYzgsIDB4NzAyZSwKLQkweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwgMHgwYzE4LCAweDIwNzEsIDB4MTgwMCwKLQkweDI5MDAsIDB4NzgyMiwgMHhhODA0LCAweDkwMGQsIDB4MTVhMCwgMHg3ODI0LCAweDAwZTYsIDB4MjA3MSwKLQkweDAwNDAsIDB4NzEyYywgMHhkMTljLCAweDExNzAsIDB4MjAwOSwgMHgxODMwLCAweDIxMGMsIDB4OTE4YSwKLQkweDAwMjAsIDB4MDI0MCwgMHg3MDIyLCAweDIwMDEsIDB4MWRjMCwgMHgyMDBjLCAweDgxMDgsIDB4MjEwMiwKLQkweDAwZWUsIDB4MDA1OCwgMHgwMGVlLCAweDIwNDgsIDB4NzAyYywgMHhhODAyLCAweDI5MDAsIDB4NzAyZSwKLQkweDcwYzAsIDB4ODAwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwKLQkweDE5MGMsIDB4NzM4MiwgMHhkMGE0LCAweDE5YzgsIDB4MjA3MSwgMHgxYTA0LCAweDcwNDQsIDB4OTAwNSwKLQkweDEzMjAsIDB4MjAwMSwgMHgxOTQ5LCAweDIwMDQsIDB4NzA0NiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwKLQkweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwKLQkweDA4MDQsIDB4NmVmNSwgMHgwMDk2LCAweDAwZTYsIDB4NzgyNCwgMHgyMDQ4LCAweDIwNzEsIDB4MTgwMCwKLQkweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwgMHg4MDAwLCAweDcwYzIsIDB4MDgwYywKLQkweDg4OTksIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MzgyLCAweGQwYTQsIDB4MWQ2MCwKLQkweDAwZWUsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MzgyLCAweGQwOWMsIDB4MTE5OCwKLQkweDAwOWUsIDB4MjkwMCwgMHg3ODIyLCAweGE4MDQsIDB4OTAwZCwgMHgxNTUwLCAweDIwNzEsIDB4MWEwNCwKLQkweDcwNDQsIDB4OTAwNSwgMHgxMzIwLCAweDIwMDEsIDB4MTk0OSwgMHgyMDA0LCAweDcwNDYsIDB4MDBmZSwKLQkweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDAwOWUsIDB4MjkwOCwgMHg3MDEwLCAweDgwMDAsIDB4NzAxMiwKLQkweDcwMTgsIDB4OTA0ZCwgMHg3MTFhLCAweDAxMTAsIDB4YTkwMiwgMHgwMDA4LCAweDcxMWUsIDB4MjE0OCwKLQkweGE4MDQsIDB4OTAwZCwgMHgxMTY4LCAweDIwNzEsIDB4MWEwNCwgMHg3MDQ0LCAweDkwMDUsIDB4MTMyMCwKLQkweDIwMDEsIDB4MTk0OSwgMHgyMDA0LCAweDcwNDYsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwKLQkweDIwNzEsIDB4MTgwMCwgMHg5MDE2LCAweDcwMmMsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwKLQkweDI5MDAsIDB4ODFmZiwgMHgxZGM4LCAweDcwMmUsIDB4NzBjMCwgMHg5MjAwLCAweDcwYzIsIDB4MDgwYywKLQkweDg4OTksIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgyOTA4LCAweDcwMTAsIDB4ODAwMCwKLQkweDcwMTIsIDB4NzAxOCwgMHg5MDRkLCAweDcxMWEsIDB4MDExMCwgMHhhOTAyLCAweDAwMDgsIDB4NzExZSwKLQkweDIxNDgsIDB4YTgwNCwgMHg5MDBkLCAweDE5MDQsIDB4NmZmMSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwKLQkweDE5MGMsIDB4NzM4MiwgMHhkMDljLCAweDExOTgsIDB4NzAxYywgMHg5MDRkLCAweDAxODAsIDB4NzAxMCwKLQkweDgwMDEsIDB4NzAxMiwgMHgxMTA4LCAweDcwMWEsIDB4YTgwMCwgMHg3MDFlLCAweDI5MDAsIDB4NzgyMiwKLQkweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzM4MiwgMHhkMDljLCAweDBkNjgsIDB4NzgyYywKLQkweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDBhNCwgMHgwMWIwLCAweDAwZTYsIDB4NzgyNCwKLQkweDIwNDgsIDB4MjA3MSwgMHgxODAwLCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwKLQkweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg4OTksIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywKLQkweDczODIsIDB4ZDBhNCwgMHgxZDYwLCAweDAwZWUsIDB4MjA3MSwgMHgxYTA0LCAweDcwNDQsIDB4OTAwNSwKLQkweDEzMjAsIDB4MjAwMSwgMHgxOTQ5LCAweDIwMDQsIDB4NzA0NiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwKLQkweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwKLQkweDcwYzIsIDB4MDgwYywgMHg4ODk5LCAweDAwZWUsIDB4MDgwNCwgMHg2ZmFkLCAweGE4NjgsIDB4ZDBmYywKLQkweDE1ZTAsIDB4MDA5NiwgMHhhODA0LCAweGE4MDcsIDB4MDAwMCwgMHg5MDRkLCAweDE5MGMsIDB4MTAwYiwKLQkweDAwOWUsIDB4MDAxOCwgMHhhODY4LCAweGQwZmMsIDB4MTU4MCwgMHgwMGU2LCAweDAwMjYsIDB4YTg0ZiwKLQkweDAwMDAsIDB4MDBmNiwgMHgyMDc5LCAweDAwNTAsIDB4MjA3MSwgMHgxOTEwLCAweGE4MDMsIDB4MDAwMCwKLQkweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwOGUsIDB4MDAxNiwgMHgwMWE4LCAweDcwMTAsIDB4OTAwNSwKLQkweDE5MDQsIDB4NzE0MiwgMHg3ODJjLCAweDkwOGMsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ODAwNCwKLQkweDgwMDQsIDB4ODAwNCwgMHg5MDg0LCAweDAwMDMsIDB4MDAwMiwgMHg3MDQ2LCAweDcxNDIsIDB4NzA2MSwKLQkweDcwZDMsIDB4MDgwYywgMHgwZDg1LCAweDIwMDksIDB4MTk0OCwgMHgyMTA0LCAweDAwMDIsIDB4NzAyNiwKLQkweDcwMjYsIDB4NzAyNiwgMHg2ZWI1LCAweDcwMjYsIDB4NmViNSwgMHgwMDA1LCAweDIwNzEsIDB4MTgwMCwKLQkweDI5MDAsIDB4NzgyMiwgMHhhODA0LCAweDkwMGQsIDB4MTEyMCwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwgMHhhODAyLCAweDgyMTAsIDB4MjkwMCwKLQkweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwKLQkweDBjNjAsIDB4MjA3MSwgMHgxODAwLCAweDI5MDAsIDB4NzgyMiwgMHhhODA0LCAweDkwMGQsIDB4MTkwNCwKLQkweDcwYzIsIDB4NzgzMCwgMHhkMGRjLCAweDExMjAsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwKLQkweDc4MjQsIDB4MDBlNiwgMHgyMDcxLCAweDAwNDAsIDB4NzEyYywgMHhkMTljLCAweDExNzAsIDB4MjAwOSwKLQkweDE4MzAsIDB4MjEwYywgMHg5MThhLCAweDAwMjAsIDB4MDI0MCwgMHg3MDIyLCAweDIwMDEsIDB4MWRjMCwKLQkweDIwMGMsIDB4ODEwOCwgMHgyMTAyLCAweDAwZWUsIDB4MDA1OCwgMHgwMGVlLCAweDIwNDgsIDB4NzAyYywKLQkweGE4MDIsIDB4MjkwMCwgMHg3MDJlLCAweDcwYzAsIDB4ODAwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwKLQkweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzM4MiwgMHhkMGE0LCAweDE5YzgsIDB4MGUwNCwKLQkweDcwYjksIDB4NzgzOCwgMHg3OTM4LCAweDkxMGUsIDB4MWRlMCwgMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwKLQkweDY4MzYsIDB4NjgzMywgMHgwMDEzLCAweDAwZGUsIDB4MjAwMSwgMHgxOTIxLCAweDIwMGMsIDB4YzE4NCwKLQkweDIxMDIsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywKLQkweDEyMDAsIDB4MjAwMSwgMHgxOTIyLCAweDIwMDMsIDB4MDAwMCwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgxOTIxLCAweDIwMGMsIDB4YzE4NSwgMHgyMTAyLCAweDAwZmUsIDB4MDAyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg5MDE2LCAweDcwMmMsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwKLQkweDI5MDAsIDB4ODFmZiwgMHgxZGM4LCAweDcwMmUsIDB4NzBjMCwgMHg5MjAwLCAweDcwYzIsIDB4MDgwYywKLQkweDg4OTksIDB4MDgwNCwgMHg3MDcwLCAweDAwOTYsIDB4MDBlNiwgMHg3ODI0LCAweDIwNDgsIDB4MjA3MSwKLQkweDE4MDAsIDB4NzAyYywgMHhhODAyLCAweDI5MDAsIDB4NzAyZSwgMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwKLQkweDA4MGMsIDB4ODg5OSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDBhNCwKLQkweDFkNjAsIDB4MDBlZSwgMHgwZTA0LCAweDcxMTUsIDB4NzgzOCwgMHg3OTM4LCAweDkxMGUsIDB4MWRlMCwKLQkweDAwZDYsIDB4MjA2OSwgMHgwMDAwLCAweDY4MzYsIDB4NjgzMywgMHgwMDEzLCAweDAwZGUsIDB4NzA0NCwKLQkweGMwODQsIDB4NzA0NiwgMHgyMDkxLCAweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwKLQkweDE5MGMsIDB4MTIwMCwgMHg3MDRiLCAweDAwMDAsIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywKLQkweDczODIsIDB4ZDA5YywgMHgxMTcwLCAweDAwOWUsIDB4MjkwMCwgMHg3ODIyLCAweGE4MDQsIDB4OTAwZCwKLQkweDExZTAsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHg3MDQ0LCAweGMwODUsIDB4NzA0NiwKLQkweDBjNTgsIDB4MDA5ZSwgMHgyOTA4LCAweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMTgsIDB4OTA0ZCwKLQkweDcxMWEsIDB4MDExMCwgMHhhOTAyLCAweDAwMDgsIDB4NzExZSwgMHgyMTQ4LCAweGE4MDQsIDB4OTAwZCwKLQkweDExMjAsIDB4MDBmZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDcxLCAweDE4MDAsIDB4OTAxNiwKLQkweDcwMmMsIDB4MjE0OCwgMHhhOTA0LCAweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsIDB4MWRjOCwKLQkweDcwMmUsIDB4NzBjMCwgMHg5MjAwLCAweDcwYzIsIDB4MDgwYywgMHg4ODk5LCAweDAwZmUsIDB4MDAyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyOTA4LCAweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMTgsIDB4OTA0ZCwKLQkweDcxMWEsIDB4MDExMCwgMHhhOTAyLCAweDAwMDgsIDB4NzExZSwgMHgyMTQ4LCAweGE4MDQsIDB4OTAwZCwKLQkweDE5MDQsIDB4NzFiMSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDA5YywKLQkweDExYjAsIDB4NzAxYywgMHg5MDRkLCAweDAxOTgsIDB4YTg0YywgMHg5MDA1LCAweDExODAsIDB4NzAxMCwKLQkweDgwMDEsIDB4NzAxMiwgMHgxMTA4LCAweDcwMWEsIDB4YTgwMCwgMHg3MDFlLCAweDI5MDAsIDB4NzgyMiwKLQkweDc4MmMsIDB4OTA5NCwgMHgwNzgwLCAweDE5MGMsIDB4NzM4MiwgMHhkMDljLCAweDBkNTAsIDB4NzgyYywKLQkweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDBhNCwgMHgwNWI4LCAweDAwZTYsIDB4NzgyNCwKLQkweDIwNDgsIDB4MjA3MSwgMHgxODAwLCAweDcwMmMsIDB4YTgwMiwgMHgyOTAwLCAweDcwMmUsIDB4NzBjMCwKLQkweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg4OTksIDB4NzgyYywgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywKLQkweDczODIsIDB4ZDBhNCwgMHgxZDYwLCAweDAwZWUsIDB4MGUwNCwgMHg3MWFhLCAweDc4MzgsIDB4NzkzOCwKLQkweDkxMGUsIDB4MWRlMCwgMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwgMHg2ODM2LCAweDY4MzMsIDB4MDAxMywKLQkweDAwZGUsIDB4NzA0NCwgMHhjMDg0LCAweDcwNDYsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwKLQkweDIwMDQsIDB4ZDA4NCwgMHgxOTBjLCAweDEyMDAsIDB4NzA0YiwgMHgwMDAwLCAweDAwZmUsIDB4MDAyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3MDQ0LCAweGMwODUsIDB4NzA0NiwgMHgwMGZlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwKLQkweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwKLQkweDcwYzIsIDB4MDgwYywgMHg4ODk5LCAweDAwZWUsIDB4MDgwNCwgMHg3MTUyLCAweDIwNzEsIDB4MTkxMCwKLQkweGE4MDMsIDB4MDAwMCwgMHgyOTA4LCAweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMTgsIDB4OTA0ZCwKLQkweDcxMWEsIDB4MDExMCwgMHhhOTAyLCAweDAwMDgsIDB4NzExZSwgMHgyMTQ4LCAweGE4MDQsIDB4OTAwZCwKLQkweDExMjgsIDB4MWUwNCwgMHg3MWYxLCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDIwNzEsIDB4MTgwMCwKLQkweDkwMTYsIDB4NzAyYywgMHgyMTQ4LCAweGE5MDQsIDB4YTgwMiwgMHg4MjEwLCAweDI5MDAsIDB4ODFmZiwKLQkweDFkYzgsIDB4NzAyZSwgMHg3MGMwLCAweDkyMDAsIDB4NzBjMiwgMHgwODBjLCAweDg4OTksIDB4MGUwNCwKLQkweDcxZGIsIDB4MjA3MSwgMHgxOTEwLCAweDcwMWMsIDB4MjA0OCwgMHhhODRjLCAweDkwMGQsIDB4MGQxOCwKLQkweDIwNzEsIDB4MDAwMCwgMHg3MTgyLCAweGE4NTAsIDB4NzAzMiwgMHhhODZjLCAweDcwODYsIDB4NzAzNiwKLQkweGE4NzAsIDB4NzA4YSwgMHhhODUwLCAweDkwODIsIDB4MDAxOSwgMHgxMjc4LCAweDIwOTEsIDB4NDA4MCwKLQkweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywgMHgxMjAwLCAweDIwNzEsIDB4MTkxMCwKLQkweDA4MGMsIDB4NzM2ZSwgMHgwMDJlLCAweDAwZWUsIDB4MDAwNSwgMHhhODUwLCAweDkwODIsIDB4MDAxYywKLQkweDFlNjgsIDB4YTg4MCwgMHg3MDhlLCAweDcwMzYsIDB4MDE0NiwgMHgwMWQ2LCAweDAxMzYsIDB4MDFjNiwKLQkweDAxNTYsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDAyYSwgMHhhODY4LCAweDIwYTgsIDB4YTg2MCwKLQkweDIwZTAsIDB4YTg1YywgMHg5MDgwLCAweDAwMjEsIDB4MjA5OCwgMHg0MDAzLCAweDAxNWUsIDB4MDFjZSwKLQkweDAxM2UsIDB4MDFkZSwgMHgwMTRlLCAweDA4OTAsIDB4MjA3MSwgMHgxOTEwLCAweGE4MDMsIDB4MDAwMCwKLQkweDI5MDgsIDB4NzAxMCwgMHg4MDAwLCAweDcwMTIsIDB4NzAxOCwgMHg5MDRkLCAweDcxMWEsIDB4MDExMCwKLQkweGE5MDIsIDB4MDAwOCwgMHg3MTFlLCAweDIxNDgsIDB4YTgwNCwgMHg5MDBkLCAweDExMTgsIDB4MDAyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDcxLCAweDE4MDAsIDB4OTAxNiwgMHg3MDJjLCAweDIxNDgsIDB4YTkwNCwKLQkweGE4MDIsIDB4ODIxMCwgMHgyOTAwLCAweDgxZmYsIDB4MWRjOCwgMHg3MDJlLCAweDcwYzAsIDB4OTIwMCwKLQkweDcwYzIsIDB4MDgwYywgMHg4ODk5LCAweDAwMmUsIDB4MDBlZSwgMHgwMDA1LCAweDAwMDYsIDB4YTg3YywKLQkweDAwMDYsIDB4YTg2NywgMHgwMTAzLCAweDIwYTksIDB4MDAxYywgMHhhODYwLCAweDIwZTgsIDB4YTg1YywKLQkweDkwODAsIDB4MDAxZCwgMHgyMGEwLCAweDkwMDYsIDB4NDAwNCwgMHgwMDBlLCAweDkwODQsIDB4MDBmZiwKLQkweGE4N2UsIDB4MDAwZSwgMHhhODdhLCAweGE5ODIsIDB4MDAwNSwgMHgyMDcxLCAweDE5MTAsIDB4NzAwNCwKLQkweDAwMDIsIDB4NzI4MSwgMHg3MjgyLCAweDczNmQsIDB4NzI4MiwgMHg3MjdmLCAweDczNmQsIDB4MDgwYywKLQkweDBkODUsIDB4MDAwNSwgMHgyMDAxLCAweDE5NDgsIDB4MjAwNCwgMHgwMDAyLCAweDcyOGMsIDB4NzI4YywKLQkweDczMDYsIDB4NzMwNywgMHg3MjhjLCAweDczMDcsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MWUwYywKLQkweDczOGQsIDB4NzAxYywgMHg5MDRkLCAweDA1MDgsIDB4YTg0YywgMHg5MDA1LCAweDA5MDQsIDB4NzJkNywKLQkweDBlMDQsIDB4NzJiNSwgMHhhOTRjLCAweDIwNzEsIDB4MDAwMCwgMHg3MTgyLCAweGE4NTAsIDB4NzAzMiwKLQkweGE4NmMsIDB4NzA4NiwgMHg3MDM2LCAweGE4NzAsIDB4NzA4YSwgMHhhODUwLCAweDkwODIsIDB4MDAxOSwKLQkweDEyNzgsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywKLQkweDEyMDAsIDB4MjA3MSwgMHgxOTEwLCAweDA4MGMsIDB4NzM2ZSwgMHgwMTJlLCAweDA4MDQsIDB4NzMwNSwKLQkweGE4NTAsIDB4OTA4MiwgMHgwMDFjLCAweDFlNjgsIDB4YTg4MCwgMHg3MDhlLCAweDcwMzYsIDB4MDE0NiwKLQkweDAxZDYsIDB4MDEzNiwgMHgwMWM2LCAweDAxNTYsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDAyYSwKLQkweGE4NjgsIDB4MjBhOCwgMHhhODYwLCAweDIwZTAsIDB4YTg1YywgMHg5MDgwLCAweDAwMjEsIDB4MjA5OCwKLQkweDQwMDMsIDB4MDE1ZSwgMHgwMWNlLCAweDAxM2UsIDB4MDFkZSwgMHgwMTRlLCAweDA4OTAsIDB4MjAwMSwKLQkweDAwNWIsIDB4MjAwNCwgMHg5MDk0LCAweDA3ODAsIDB4MTkwYywgMHg3MzgyLCAweGQwOWMsIDB4MjA3MSwKLQkweDE5MTAsIDB4MTUxMCwgMHgyMDcxLCAweDE5MTAsIDB4NzAwZiwgMHgwMDAxLCAweGE5NjQsIDB4OTE4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDAzLCAweDExMzAsIDB4ODEwZiwgMHg5MThjLCAweDAwZmYsIDB4ODEwMSwKLQkweDAxMDgsIDB4NzEwZSwgMHgyOTAwLCAweDAwZDYsIDB4MjA2OSwgMHgwMDUwLCAweDY4MjIsIDB4MDBkZSwKLQkweDIwNzEsIDB4MTkxMCwgMHg3MDFjLCAweDIwNDgsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsIDB4YTgwMCwKLQkweDcwMWUsIDB4OTAwNSwgMHgxMTA4LCAweDcwMWEsIDB4MDEyZSwgMHgwMDA1LCAweDAwMDUsIDB4MDBkNiwKLQkweDIwMDgsIDB4MjA2OSwgMHgxYTA0LCAweDY4NDQsIDB4OTAwNSwgMHgwNzYwLCAweDAxNTgsIDB4OTE4NiwKLQkweDAwMDMsIDB4MDU0MCwgMHgyMDAxLCAweDE4MTUsIDB4MjAwNCwgMHgyMDA5LCAweDFiNzMsIDB4MjEwYywKLQkweDkxMDIsIDB4MTUwMCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDY5LCAweDAwNTAsIDB4NjkzYywKLQkweDY4MzgsIDB4OTEwNiwgMHgwMTkwLCAweDBlMDQsIDB4NzMzOSwgMHgyMDY5LCAweDAwMDAsIDB4NjgzNywKLQkweDgwNDAsIDB4NjgzMywgMHgwMDEyLCAweDY4ODMsIDB4ODA0MCwgMHgyMDkxLCAweDQwODAsIDB4MjAwMSwKLQkweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTIwMCwgMHgyMDY5LCAweDFhMDQsIDB4Njg0NywKLQkweGZmZmYsIDB4MDEyZSwgMHgwMGRlLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDFlMGMsIDB4NzNmZCwKLQkweDcwMWMsIDB4OTA0ZCwgMHgwNTQwLCAweDIwMDEsIDB4MDA1YiwgMHgyMDA0LCAweDkwOTQsIDB4MDc4MCwKLQkweDE1YzksIDB4ZDA5YywgMHgxNTAwLCAweDIwNzEsIDB4MTkxMCwgMHg3MDBmLCAweDAwMDEsIDB4YTk2NCwKLQkweDkxODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDMsIDB4MTEzMCwgMHg4MTBmLCAweDkxOGMsIDB4MDBmZiwKLQkweDgxMDEsIDB4MDEwOCwgMHg3MTBlLCAweDI5MDAsIDB4MDBkNiwgMHgyMDY5LCAweDAwNTAsIDB4NjgyMiwKLQkweDAwZGUsIDB4NzAxYywgMHgyMDQ4LCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweGE4MDAsIDB4NzAxZSwKLQkweDkwMDUsIDB4MTEwOCwgMHg3MDFhLCAweDAxMmUsIDB4MDAwNSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAxYywgMHg5MDRkLCAweDAxNjAsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsIDB4YTgwMCwKLQkweDcwMWUsIDB4OTAwNSwgMHgxMTA4LCAweDcwMWEsIDB4MDEyZSwgMHgwODBjLCAweDEwOGIsIDB4MDAwNSwKLQkweDAxMmUsIDB4MDAwNSwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwgMHg3Mzg0LCAweDAwMDYsIDB4MDAxNiwKLQkweDIwMDEsIDB4ODAwNCwgMHgwMDA2LCAweDA4MDQsIDB4MGQ4ZSwgMHgwMDk2LCAweDAwZjYsIDB4MjA3OSwKLQkweDAwNTAsIDB4NzA0NCwgMHhkMDg0LCAweDAxZDAsIDB4YzA4NCwgMHg3MDQ2LCAweDc4MzgsIDB4NzkzOCwKLQkweDkxMGUsIDB4MWRlMCwgMHgwMGQ2LCAweDIwNjksIDB4MDAwMCwgMHg2ODM2LCAweDY4MzMsIDB4MDAxMywKLQkweDAwZGUsIDB4MjA5MSwgMHg0MDgwLCAweDIwMDEsIDB4MDA4OSwgMHgyMDA0LCAweGQwODQsIDB4MTkwYywKLQkweDEyMDAsIDB4NzA0YiwgMHgwMDAwLCAweDAwZmUsIDB4MDA5ZSwgMHgwMDA1LCAweDc4MmMsIDB4OTA5NCwKLQkweDA3ODAsIDB4MTk4MSwgMHhkMGE0LCAweDBkYjgsIDB4NzE0OCwgMHg3MDRjLCAweDgxMDgsIDB4NzE0YSwKLQkweDkxMDIsIDB4MGU4OCwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHg3ODI0LCAweDAwZTYsIDB4MjA3MSwKLQkweDAwNDAsIDB4NzEyYywgMHhkMTljLCAweDExNzAsIDB4MjAwOSwgMHgxODMwLCAweDIxMGMsIDB4OTE4YSwKLQkweDAwMjAsIDB4MDI0MCwgMHg3MDIyLCAweDIwMDEsIDB4MWRjMCwgMHgyMDBjLCAweDgxMDgsIDB4MjEwMiwKLQkweDAwZWUsIDB4MDA1OCwgMHgwMGVlLCAweDIwNDgsIDB4NzAyYywgMHhhODAyLCAweDI5MDAsIDB4NzAyZSwKLQkweDcwYzAsIDB4ODAwMCwgMHg3MGMyLCAweDA4MGMsIDB4ODg5OSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwKLQkweDE5MGMsIDB4NzM4MiwgMHhkMGE0LCAweDE5YzgsIDB4NzgzOCwgMHg3OTM4LCAweDkxMGUsIDB4MWRlMCwKLQkweDAwZDYsIDB4MjA2OSwgMHgwMDAwLCAweDY4MzYsIDB4NjgzMywgMHgwMDEzLCAweDAwZGUsIDB4MjA5MSwKLQkweDQwODAsIDB4MjAwMSwgMHgwMDg5LCAweDIwMDQsIDB4ZDA4NCwgMHgxOTBjLCAweDEyMDAsIDB4MDBlZSwKLQkweDcwNGIsIDB4MDAwMCwgMHgwMGZlLCAweDAwOWUsIDB4MDAwNSwgMHgwMGY2LCAweDIwNzksIDB4MDA1MCwKLQkweDcwNDQsIDB4ZDA4NCwgMHgwMWI4LCAweGMwODQsIDB4NzA0NiwgMHg3ODM4LCAweDc5MzgsIDB4OTEwZSwKLQkweDFkZTAsIDB4MDBkNiwgMHgyMDY5LCAweDAwMDAsIDB4NjgzNiwgMHg2ODMzLCAweDAwMTMsIDB4MDBkZSwKLQkweDIwOTEsIDB4NDA4MCwgMHgyMDAxLCAweDAwODksIDB4MjAwNCwgMHhkMDg0LCAweDE5MGMsIDB4MTIwMCwKLQkweDAwZmUsIDB4MDAwNSwgMHg3ODJjLCAweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDBhNCwKLQkweDBkYjgsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4NzgyNCwgMHgyMDQ4LCAweDcwMmMsIDB4YTgwMiwKLQkweDI5MDAsIDB4NzAyZSwgMHg3MGMwLCAweDgwMDAsIDB4NzBjMiwgMHgwODBjLCAweDg4OTksIDB4NzgyYywKLQkweDkwOTQsIDB4MDc4MCwgMHgxOTBjLCAweDczODIsIDB4ZDBhNCwgMHgxZDcwLCAweDAwZDYsIDB4MjA2OSwKLQkweDAwNTAsIDB4NjkzYywgMHgyMDY5LCAweDE5NDgsIDB4NjgwOCwgMHg2OTBhLCAweDIwNjksIDB4MWEwNCwKLQkweDkxMDIsIDB4MTExOCwgMHg2ODQ0LCAweDkwMDUsIDB4MTMyMCwgMHgyMDAxLCAweDE5NDksIDB4MjAwYywKLQkweDY5NDYsIDB4MDBkZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwgMHg3MDk4LCAweDkwOGEsIDB4MDAyYSwKLQkweDFhMGMsIDB4MGQ4NSwgMHg5MDgyLCAweDAwMWQsIDB4MDAzYiwgMHgwMDI2LCAweDIwMTEsIDB4MWUwMCwKLQkweDA4MGMsIDB4MmFkMywgMHgwMDJlLCAweDAwMDUsIDB4NzU0MiwgMHg3NGFmLCAweDc0Y2IsIDB4NzRmNSwKLQkweDc1MzEsIDB4NzU3MSwgMHg3NTgzLCAweDc0Y2IsIDB4NzU1OSwgMHg3NDZhLCAweDc0OTgsIDB4NzUxYiwKLQkweDc0NjksIDB4MDAwNSwgMHgwMGQ2LCAweDIwNjksIDB4MDIwMCwgMHg2ODA0LCAweDkwMDUsIDB4MTE4MCwKLQkweDY4MDgsIDB4OTAwNSwgMHgxNTE4LCAweDcwOWIsIDB4MDAyOSwgMHgyMDY5LCAweDE5OGYsIDB4MmQwNCwKLQkweDcwMDIsIDB4MDgwYywgMHg3OGU0LCAweDYwMjgsIDB4OTA4NSwgMHgwNjAwLCAweDYwMmEsIDB4MDBiMCwKLQkweDcwOWIsIDB4MDAyOSwgMHgyMDY5LCAweDE5OGYsIDB4MmQwNCwgMHg3MDAyLCAweDYwMjgsIDB4OTA4NSwKLQkweDA2MDAsIDB4NjAyYSwgMHgwMGU2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDIwNzEsIDB4MWE2ZSwKLQkweDA4MGMsIDB4MWIxZSwgMHgwMDVlLCAweDAwNGUsIDB4MDAzZSwgMHgwMGVlLCAweDAwZGUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MjA2OSwgMHgwMjAwLCAweDY4MDQsIDB4OTAwNSwgMHgxMTc4LCAweDY4MDgsIDB4OTAwNSwKLQkweDExNjAsIDB4NzA5YiwgMHgwMDI5LCAweDIwNjksIDB4MTk4ZiwgMHgyZDA0LCAweDcwMDIsIDB4MDgwYywKLQkweDc5OTAsIDB4NjAyOCwgMHg5MDg1LCAweDA2MDAsIDB4NjAyYSwgMHgwMGRlLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4MDA5MCwgMHgwODBjLCAweDJhOTksIDB4MDAwZSwgMHg2MTI0LCAweGQxZTQsIDB4MTE5MCwKLQkweDA4MGMsIDB4NzVmNCwgMHhkMWQ0LCAweDExNjAsIDB4ZDFkYywgMHgxMTM4LCAweGQxY2MsIDB4MDE1MCwKLQkweDcwOWIsIDB4MDAyMCwgMHgwODBjLCAweDc1ZjQsIDB4MDAyOCwgMHg3MDliLCAweDAwMWQsIDB4MDAxMCwKLQkweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDIwMDEsIDB4MDA4OCwgMHgwODBjLCAweDJhOTksIDB4NjEyNCwKLQkweGQxY2MsIDB4MTFlOCwgMHhkMWRjLCAweDExYzAsIDB4ZDFlNCwgMHgxMTk4LCAweDkxODQsIDB4MWUwMCwKLQkweDExZDgsIDB4MDgwYywgMHgxYjRiLCAweDYwZTMsIDB4MDAwMSwgMHg2MDBjLCAweGMwYjQsIDB4NjAwZSwKLQkweDA4MGMsIDB4NzdjYSwgMHgyMDAxLCAweDAwODAsIDB4MDgwYywgMHgyYTk5LCAweDcwOWIsIDB4MDAyOSwKLQkweDAwNTgsIDB4NzA5YiwgMHgwMDFlLCAweDAwNDAsIDB4NzA5YiwgMHgwMDFkLCAweDAwMjgsIDB4NzA5YiwKLQkweDAwMjAsIDB4MDAxMCwgMHg3MDliLCAweDAwMWYsIDB4MDAwNSwgMHgwODBjLCAweDFiNGIsIDB4NjBlMywKLQkweDAwMDEsIDB4NjAwYywgMHhjMGI0LCAweDYwMGUsIDB4MDgwYywgMHg3N2NhLCAweDIwMDEsIDB4MDA4MCwKLQkweDA4MGMsIDB4MmE5OSwgMHg2MTI0LCAweGQxZDQsIDB4MTE5OCwgMHhkMWRjLCAweDExNzAsIDB4ZDFlNCwKLQkweDExNDgsIDB4OTE4NCwgMHgxZTAwLCAweDExMTgsIDB4NzA5YiwgMHgwMDI5LCAweDAwNTgsIDB4NzA5YiwKLQkweDAwMjgsIDB4MDA0MCwgMHg3MDliLCAweDAwMWUsIDB4MDAyOCwgMHg3MDliLCAweDAwMWQsIDB4MDAxMCwKLQkweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDYxMjQsIDB4ZDFkNCwgMHgxMTgwLCAweGQxZGMsIDB4MTE1OCwKLQkweGQxZTQsIDB4MTEzMCwgMHg5MTg0LCAweDFlMDAsIDB4MTE1OCwgMHg3MDliLCAweDAwMjksIDB4MDA0MCwKLQkweDcwOWIsIDB4MDAxZSwgMHgwMDI4LCAweDcwOWIsIDB4MDAxZCwgMHgwMDEwLCAweDcwOWIsIDB4MDAxZiwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMGEwLCAweDA4MGMsIDB4MmE5OSwgMHg2MTI0LCAweGQxZGMsIDB4MTEzOCwKLQkweGQxZTQsIDB4MDEzOCwgMHgwODBjLCAweDFiNGIsIDB4NzA5YiwgMHgwMDFlLCAweDAwMTAsIDB4NzA5YiwKLQkweDAwMWQsIDB4MDAwNSwgMHgwODBjLCAweDc2N2QsIDB4NjEyNCwgMHhkMWRjLCAweDExODgsIDB4MDgwYywKLQkweDc1ZjQsIDB4MDAxNiwgMHgwODBjLCAweDFiNGIsIDB4MDAxZSwgMHhkMWQ0LCAweDExMjgsIDB4ZDFlNCwKLQkweDAxMzgsIDB4NzA5YiwgMHgwMDFlLCAweDAwMjAsIDB4NzA5YiwgMHgwMDFmLCAweDA4MGMsIDB4NzVmNCwKLQkweDAwMDUsIDB4MDAwNiwgMHgyMDAxLCAweDAwYTAsIDB4MDgwYywgMHgyYTk5LCAweDAwMGUsIDB4NjEyNCwKLQkweGQxZDQsIDB4MTE2MCwgMHhkMWNjLCAweDExNTAsIDB4ZDFkYywgMHgxMTI4LCAweGQxZTQsIDB4MDE0MCwKLQkweDcwOWIsIDB4MDAxZSwgMHgwMDI4LCAweDcwOWIsIDB4MDAxZCwgMHgwMDEwLCAweDcwOWIsIDB4MDAyMSwKLQkweDAwMDUsIDB4MDgwYywgMHg3NjdkLCAweDYxMjQsIDB4ZDFkNCwgMHgxMTUwLCAweGQxZGMsIDB4MTEyOCwKLQkweGQxZTQsIDB4MDE0MCwgMHg3MDliLCAweDAwMWUsIDB4MDAyOCwgMHg3MDliLCAweDAwMWQsIDB4MDAxMCwKLQkweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwgMHgwMDkwLCAweDA4MGMsIDB4MmE5OSwKLQkweDAwMGUsIDB4NjEyNCwgMHhkMWQ0LCAweDExNzgsIDB4ZDFjYywgMHgxMTUwLCAweGQxZGMsIDB4MTEyOCwKLQkweGQxZTQsIDB4MDE1OCwgMHg3MDliLCAweDAwMWUsIDB4MDA0MCwgMHg3MDliLCAweDAwMWQsIDB4MDAyOCwKLQkweDcwOWIsIDB4MDAyMCwgMHgwMDEwLCAweDcwOWIsIDB4MDAxZiwgMHgwMDA1LCAweDAwMTYsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAxNDAsIDB4MjA3MSwKLQkweDE4MDAsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4Nzc5ZSwgMHgxMWY4LCAweDIwMDEsIDB4MTgwYywKLQkweDIwMGMsIDB4ZDFiNCwgMHgwMWQwLCAweGMxYjQsIDB4MjEwMiwgMHgwMDI2LCAweDIwMTEsIDB4MDIwMCwKLQkweDA4MGMsIDB4MmFkMywgMHgwMDJlLCAweDA4MGMsIDB4MmE3ZiwgMHg2MDI0LCAweGQwY2MsIDB4MDE0OCwKLQkweDIwMDEsIDB4MDBhMCwgMHgwODBjLCAweDJhOTksIDB4MDgwYywgMHg3YWI2LCAweDA4MGMsIDB4NjE5ZCwKLQkweDA0MjgsIDB4NjAyOCwgMHhjMGNkLCAweDYwMmEsIDB4MDQwOCwgMHgwODBjLCAweDc3YjgsIDB4MDE1MCwKLQkweDA4MGMsIDB4NzdhZiwgMHgxMTM4LCAweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweDI2MzEsIDB4MDgwYywKLQkweDc3NzIsIDB4MDBhMCwgMHgwODBjLCAweDc2N2EsIDB4MDE3OCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDI2MzEsIDB4NzA5OCwgMHg5MDg2LCAweDAwMWUsIDB4MDEyMCwgMHg3MDk4LCAweDkwODYsIDB4MDAyMiwKLQkweDExMTgsIDB4NzA5YiwgMHgwMDI1LCAweDAwMTAsIDB4NzA5YiwgMHgwMDIxLCAweDAxMmUsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDBjZSwgMHgwMDFlLCAweDAwMDUsIDB4MDAyNiwgMHgyMDExLCAweDc2MDUsIDB4MDgwYywKLQkweDhhOWYsIDB4MDAyZSwgMHgwMDE2LCAweDAwMjYsIDB4MjAwOSwgMHgwMDY0LCAweDIwMTEsIDB4NzYwNSwKLQkweDA4MGMsIDB4OGE5NiwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZjYsIDB4MDAxNiwKLQkweDA4MGMsIDB4YTJhMCwgMHgyMDcxLCAweDE4MDAsIDB4MDgwYywgMHg3NTllLCAweDAwMWUsIDB4MDBmZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MDEyNiwgMHgyMDcxLCAweDE4MDAsIDB4MDgwYywgMHhhMmEwLCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNjksIDB4MDE0MCwgMHgyMDkxLCAweDgwMDAsIDB4NjAyOCwgMHhjMDljLCAweDYwMmEsIDB4MDgwYywKLQkweGFjZmMsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4YTYyYiwgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweGE2MzUsIDB4MDgwYywgMHhhNTE2LCAweDA4MGMsIDB4OGE0YiwgMHgwMDM2LCAweDkwMWUsIDB4MDgwYywKLQkweGE1OTYsIDB4MDAzZSwgMHgwODBjLCAweGFkMTgsIDB4NjBlMywgMHgwMDAwLCAweDA4MGMsIDB4ZWVkOSwKLQkweDA4MGMsIDB4ZWVmNCwgMHgyMDA5LCAweDAwMDQsIDB4MDgwYywgMHgyYTg1LCAweDA4MGMsIDB4Mjk5YiwKLQkweDIwMDEsIDB4MTgwMCwgMHgyMDAzLCAweDAwMDQsIDB4MjAxMSwgMHgwMDA4LCAweDA4MGMsIDB4MmFkMywKLQkweDIwMTEsIDB4NzYwNSwgMHgwODBjLCAweDhhOWYsIDB4MDgwYywgMHg3N2I4LCAweDAxMTgsIDB4OTAwNiwKLQkweDA4MGMsIDB4MmE5OSwgMHgwODBjLCAweDBiY2YsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4MjYzMSwKLQkweDAxMmUsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAyNiwgMHgwMGU2LCAweDIwMTEsIDB4NzYxMiwgMHgyMDcxLCAweDFhMDQsIDB4NzAxYywKLQkweDkyMDYsIDB4MTExOCwgMHg3MDE4LCAweDkwMDUsIDB4MDExMCwgMHg5MDg1LCAweDAwMDEsIDB4MDBlZSwKLQkweDAwMmUsIDB4MDAwNSwgMHg2MDIwLCAweGQwOWMsIDB4MDAwNSwgMHg2ODAwLCAweDkwODQsIDB4ZmZmZSwKLQkweDkwODYsIDB4MDBjMCwgMHgwMWI4LCAweDIwMDEsIDB4MDBjMCwgMHgwODBjLCAweDJhOTksIDB4MDE1NiwKLQkweDIwYTksIDB4MDAyZCwgMHgxZDA0LCAweDc2OGEsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NzY4YSwKLQkweDAxNWUsIDB4MDBkNiwgMHgyMDY5LCAweDE4MDAsIDB4Njg5YywgMHg4MDAxLCAweDAyMjAsIDB4MDExOCwKLQkweDY4OWUsIDB4MDBkZSwgMHgwMDA1LCAweDY4OWYsIDB4MDAxNCwgMHg2OGVjLCAweGQwZGMsIDB4MGRjOCwKLQkweDY4MDAsIDB4OTA4NiwgMHgwMDAxLCAweDFkYTgsIDB4MDgwYywgMHg4YWFiLCAweDBjOTAsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDIwNzEsIDB4MTgwMCwKLQkweDA4MGMsIDB4N2FjNSwgMHgyMDAxLCAweDE5NmQsIDB4MjAwMywgMHgwMDAwLCAweDkwMDYsIDB4NzA5YSwKLQkweDYwZTIsIDB4Njg4NiwgMHgwODBjLCAweDI3MDAsIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MDgwYywKLQkweDYwNTgsIDB4MDAyNiwgMHgyMDExLCAweGZmZmYsIDB4MDgwYywgMHgyYWQzLCAweDAwMmUsIDB4NjAyYiwKLQkweDE4MmMsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwKLQkweDIwNjEsIDB4MDEwMCwgMHgyMDY5LCAweDAxNDAsIDB4MjA3MSwgMHgxODAwLCAweDIwMDEsIDB4MTk3ZCwKLQkweDIwMGMsIDB4OTE4NiwgMHgwMDAwLCAweDAxNTgsIDB4OTE4NiwgMHgwMDAxLCAweDAxNTgsIDB4OTE4NiwKLQkweDAwMDIsIDB4MDE1OCwgMHg5MTg2LCAweDAwMDMsIDB4MDE1OCwgMHgwODA0LCAweDc3NjIsIDB4NzA5YiwKLQkweDAwMjIsIDB4MDA0MCwgMHg3MDliLCAweDAwMjEsIDB4MDAyOCwgMHg3MDliLCAweDAwMjMsIDB4MDAxMCwKLQkweDcwOWIsIDB4MDAyNCwgMHg2MGUzLCAweDAwMDAsIDB4Njg4NywgMHgwMDAxLCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MGMsIDB4MjcwMCwgMHgwODBjLCAweGFjZmMsIDB4MDAyNiwgMHgwODBjLCAweGFmZDIsIDB4MDgwYywKLQkweGIwOWIsIDB4MDAyZSwgMHgwODBjLCAweGFkMTgsIDB4NzAwMCwgMHg5MDhlLCAweDAwMDQsIDB4MDExOCwKLQkweDYwMmIsIDB4MDAyOCwgMHgwMDEwLCAweDYwMmIsIDB4MDAyMCwgMHgwMTU2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjBhOSwgMHgwMDA1LCAweDYwMjQsIDB4ZDBhYywgMHgwMTUwLCAweDAxMmUsIDB4MDE1ZSwKLQkweDA4MGMsIDB4ZDY0NSwgMHgwMTE4LCAweDkwMDYsIDB4MDgwYywgMHgyYWMzLCAweDA4MDQsIDB4Nzc2ZSwKLQkweDY4MDAsIDB4OTA4NCwgMHgwMGExLCAweGMwYmQsIDB4NjgwMiwgMHgwODBjLCAweDJhN2YsIDB4NjkwNCwKLQkweGQxZDQsIDB4MTE0MCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywgMHgyYTk5LCAweDFmMDQsIDB4NzcxMywKLQkweDA4MGMsIDB4NzdmMiwgMHgwMTJlLCAweDAxNWUsIDB4MDgwYywgMHg3N2FmLCAweDAxNzAsIDB4NjA0NCwKLQkweDkwMDUsIDB4MDEzMCwgMHgwODBjLCAweDc3ZjIsIDB4OTAwNiwgMHg4MDAxLCAweDFkZjAsIDB4MDAyOCwKLQkweDY4MDQsIDB4ZDBkNCwgMHgxMTEwLCAweDA4MGMsIDB4NzdmMiwgMHgwODBjLCAweGQ2NDUsIDB4MDExOCwKLQkweDkwMDYsIDB4MDgwYywgMHgyYWMzLCAweDAwMTYsIDB4MDAyNiwgMHg3MDAwLCAweDkwOGUsIDB4MDAwNCwKLQkweDAxMzAsIDB4MjAwOSwgMHgwMGM4LCAweDIwMTEsIDB4NzYxMiwgMHgwODBjLCAweDhhNWQsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDgwYywgMHg4ODkwLCAweDcwMzQsIDB4YzA4NSwgMHg3MDM2LCAweDIwMDEsIDB4MTk3ZCwKLQkweDIwMDMsIDB4MDAwNCwgMHgwODBjLCAweDc0NGQsIDB4MDgwYywgMHg3N2FmLCAweDAxMzgsIDB4NjgwNCwKLQkweGQwZDQsIDB4MTEyMCwgMHhkMGRjLCAweDExMDAsIDB4MDgwYywgMHg3YWJiLCAweDAwZWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDAwNSwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA2OSwKLQkweDAxNDAsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsIDB4ODhhNywgMHgwODBjLCAweDg4OTksIDB4MDgwYywKLQkweDdhYzUsIDB4MjAwMSwgMHgxOTZkLCAweDIwMDMsIDB4MDAwMCwgMHg5MDA2LCAweDcwOWEsIDB4NjBlMiwKLQkweDY4ODYsIDB4MDgwYywgMHgyNzAwLCAweDkwMDYsIDB4MDgwYywgMHgyYTk5LCAweDYwNDMsIDB4MDA5MCwKLQkweDYwNDMsIDB4MDAxMCwgMHgwMDI2LCAweDIwMTEsIDB4ZmZmZiwgMHgwODBjLCAweDJhZDMsIDB4MDAyZSwKLQkweDYwMmIsIDB4MTgyYywgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwKLQkweDE5N2MsIDB4MjAwNCwgMHg5MDg2LCAweGFhYWEsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDgwYywKLQkweDU4NDQsIDB4OTA4NCwgMHgwMDMwLCAweDkwODYsIDB4MDAwMCwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwKLQkweDA4MGMsIDB4NTg0NCwgMHg5MDg0LCAweDAwMzAsIDB4OTA4NiwgMHgwMDMwLCAweDAwMGUsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDgwYywgMHg1ODQ0LCAweDkwODQsIDB4MDAzMCwgMHg5MDg2LCAweDAwMTAsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwODBjLCAweDU4NDQsIDB4OTA4NCwgMHgwMDMwLCAweDkwODYsIDB4MDAyMCwKLQkweDAwMGUsIDB4MDAwNSwgMHgwMDM2LCAweDAwMTYsIDB4MjAwMSwgMHgxODBjLCAweDIwMDQsIDB4OTA4YywKLQkweDAwMTMsIDB4MDE2OCwgMHgwMDIwLCAweDA4MGMsIDB4MjcyMCwgMHg5MDBlLCAweDAwMTAsIDB4MjAwOSwKLQkweDAwMDIsIDB4MjAxOSwgMHgwMDI4LCAweDA4MGMsIDB4MzJkYSwgMHg5MDA2LCAweDAwMTksIDB4MDAxZSwKLQkweDAwM2UsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwYywgMHgyZTA0LCAweDAxMzAsIDB4MDgwYywKLQkweGQ2M2UsIDB4MTEyOCwgMHg5MDg1LCAweDAwMTAsIDB4MDAxMCwgMHg5MDg0LCAweGZmZWYsIDB4MjA3MiwKLQkweDAwZWUsIDB4MDAwNSwgMHg2MDUwLCAweDAwMDYsIDB4NjBlYywgMHgwMDA2LCAweDYwMGMsIDB4MDAwNiwKLQkweDYwMDQsIDB4MDAwNiwgMHg2MDI4LCAweDAwMDYsIDB4MDgwYywgMHgyYWY2LCAweDA4MGMsIDB4MmIyOSwKLQkweDYwMmYsIDB4MDEwMCwgMHg2MDJmLCAweDAwMDAsIDB4NjAyZiwgMHgwMDQwLCAweDYwMmYsIDB4MDAwMCwKLQkweDIwYTksIDB4MDAwMiwgMHgwODBjLCAweDJhNjAsIDB4MDAyNiwgMHgyMDExLCAweDAwNDAsIDB4MDgwYywKLQkweDJhZDMsIDB4MDAyZSwgMHgwMDBlLCAweDYwMmEsIDB4MDAwZSwgMHg2MDA2LCAweDAwMGUsIDB4NjAwZSwKLQkweDAwMGUsIDB4NjBlZSwgMHg2MGUzLCAweDAwMDAsIDB4Njg4NywgMHgwMDAxLCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MGMsIDB4MjcwMCwgMHgyMDAxLCAweDAwYTAsIDB4MDAwNiwgMHgwODBjLCAweGQ2NDUsIDB4MDAwZSwKLQkweDAxMzAsIDB4MDgwYywgMHgyYWI3LCAweDkwMDYsIDB4MDgwYywgMHgyYWMzLCAweDAwMTAsIDB4MDgwYywKLQkweDJhOTksIDB4MDAwZSwgMHg2MDUyLCAweDYwNTAsIDB4MDAwNiwgMHhjMGU1LCAweDYwNTIsIDB4MDBmNiwKLQkweDIwNzksIDB4MDEwMCwgMHgwODBjLCAweDJhMGMsIDB4MDBmZSwgMHgwMDBlLCAweDYwNTIsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA2OSwgMHgwMTQwLCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweGFkNWEsIDB4MDE1OCwKLQkweDIwMDEsIDB4MDM4NiwgMHgyMDA0LCAweGQwYjQsIDB4MTEzMCwgMHgyMDAxLCAweDAwMTYsIDB4MDgwYywKLQkweGFjZWQsIDB4MDgwNCwgMHg3OGQ2LCAweDIwMDEsIDB4MTgwYywgMHgyMDBjLCAweGMxYzQsIDB4MjEwMiwKLQkweDYwMjgsIDB4OTA4NCwgMHhlMWZmLCAweDYwMmEsIDB4MjAxMSwgMHgwMjAwLCAweDA4MGMsIDB4MmFkMywKLQkweDIwMDEsIDB4MDA5MCwgMHgwODBjLCAweDJhOTksIDB4MjBhOSwgMHgwMzY2LCAweDYwMjQsIDB4ZDBjYywKLQkweDE1NjAsIDB4MWQwNCwgMHg3ODZlLCAweDIwOTEsIDB4NjAwMCwgMHgxZjA0LCAweDc4NmUsIDB4MDgwYywKLQkweGFjZmMsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4YTYyYiwgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweGE2MzUsIDB4MDgwYywgMHhhNTE2LCAweDkwMWUsIDB4MDgwYywgMHhhNTk2LCAweDIwMDEsIDB4MDM4NiwKLQkweDIwMDMsIDB4NzAwMCwgMHgwODBjLCAweGFkMTgsIDB4MjAwMSwgMHgwMGEwLCAweDA4MGMsIDB4MmE5OSwKLQkweDA4MGMsIDB4N2FiNiwgMHgwODBjLCAweDYxOWQsIDB4MDgwYywgMHhkNjQ1LCAweDAxMTAsIDB4MDgwYywKLQkweDBjZjEsIDB4OTA4NSwgMHgwMDAxLCAweDA4MDQsIDB4NzhkYywgMHgwODBjLCAweDFiNGIsIDB4NjBlMywKLQkweDAwMDAsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywgMHgyMDAxLCAweDAwMDIsIDB4MTExOCwKLQkweDIwMDEsIDB4MTk2ZCwgMHgyMDA0LCAweDA4MGMsIDB4MjcwMCwgMHg2MGUyLCAweDIwMDEsIDB4MDA4MCwKLQkweDA4MGMsIDB4MmE5OSwgMHgyMGE5LCAweDAzNjYsIDB4MjAxMSwgMHgxZTAwLCAweDA4MGMsIDB4MmFkMywKLQkweDIwMDksIDB4MWUwMCwgMHgwODBjLCAweDJhN2YsIDB4NjAyNCwgMHg5MTBjLCAweDAxNDAsIDB4MWQwNCwKLQkweDc4YjQsIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NzhiNCwgMHgwODA0LCAweDc4NzcsIDB4MjAwMSwKLQkweDAzODYsIDB4MjAwMywgMHg3MDAwLCAweDYwMjgsIDB4OTA4NSwgMHgxZTAwLCAweDYwMmEsIDB4NzBiNCwKLQkweDkwMDUsIDB4MTExOCwgMHg2ODg3LCAweDAwMDEsIDB4MDAwOCwgMHg2ODg2LCAweDA4MGMsIDB4ZDY0NSwKLQkweDAxMTAsIDB4MDgwYywgMHgwY2YxLCAweDkwMDYsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMTVlLCAweDAwMDUsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNjEsIDB4MDEwMCwgMHgyMDcxLCAweDE4MDAsIDB4NzAwMCwKLQkweDkwODYsIDB4MDAwMywgMHgxMTY4LCAweDIwMDEsIDB4MDIwYiwgMHgyMDA0LCAweDkwODQsIDB4NTU0MCwKLQkweDkwODYsIDB4NTU0MCwgMHgxMTI4LCAweDIwNjksIDB4MWE3YiwgMHgyZDA0LCAweDgwMDAsIDB4MjA2YSwKLQkweDIwNjksIDB4MDE0MCwgMHg2MDIwLCAweDkwODQsIDB4MDBjMCwgMHgwMTIwLCAweDY4ODQsIDB4OTAwNSwKLQkweDE5MDQsIDB4Nzk0ZCwgMHgyMDAxLCAweDAwODgsIDB4MDgwYywgMHgyYTk5LCAweDkwMDYsIDB4NjBlMiwKLQkweDY4ODYsIDB4MDgwYywgMHgyNzAwLCAweDIwNjksIDB4MDIwMCwgMHg2ODA0LCAweDkwMDUsIDB4MTExOCwKLQkweDY4MDgsIDB4OTAwNSwgMHgwMWQwLCAweDYwMjgsIDB4OTA4NCwgMHhmYmZmLCAweDYwMmEsIDB4MjAxMSwKLQkweDA0MDAsIDB4MDgwYywgMHgyYWQzLCAweDIwNjksIDB4MTk4ZiwgMHg3MDAwLCAweDIwNmEsIDB4NzA5YiwKLQkweDAwMjYsIDB4NzAwMywgMHgwMDAxLCAweDIwYTksIDB4MDAwMiwgMHgxZDA0LCAweDc5MmQsIDB4MjA5MSwKLQkweDYwMDAsIDB4MWYwNCwgMHg3OTJkLCAweDA4MDQsIDB4Nzk4OCwgMHgyMDY5LCAweDAxNDAsIDB4MjBhOSwKLQkweDAzODQsIDB4MjAxMSwgMHgxZTAwLCAweDA4MGMsIDB4MmFkMywgMHgyMDA5LCAweDFlMDAsIDB4MDgwYywKLQkweDJhN2YsIDB4NjAyNCwgMHg5MTBjLCAweDA1MjgsIDB4OTA4NCwgMHgxYTAwLCAweDE1MTAsIDB4MWQwNCwKLQkweDc5MzksIDB4MjA5MSwgMHg2MDAwLCAweDFmMDQsIDB4NzkzOSwgMHgwODBjLCAweGFjZmMsIDB4MjAxMSwKLQkweDAwMDMsIDB4MDgwYywgMHhhNjJiLCAweDIwMTEsIDB4MDAwMiwgMHgwODBjLCAweGE2MzUsIDB4MDgwYywKLQkweGE1MTYsIDB4OTAxZSwgMHgwODBjLCAweGE1OTYsIDB4MDgwYywgMHhhZDE4LCAweDIwMDEsIDB4MDBhMCwKLQkweDA4MGMsIDB4MmE5OSwgMHgwODBjLCAweDdhYjYsIDB4MDgwYywgMHg2MTlkLCAweDkwODUsIDB4MDAwMSwKLQkweDAwZjgsIDB4MDgwYywgMHgxYjRiLCAweDIwMDEsIDB4MDA4MCwgMHgwODBjLCAweDJhOTksIDB4MjA2OSwKLQkweDAxNDAsIDB4NjBlMywgMHgwMDAwLCAweDcwYjQsIDB4OTAwNSwgMHgxMTE4LCAweDY4ODcsIDB4MDAwMSwKLQkweDAwMDgsIDB4Njg4NiwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDIwMDEsIDB4MDAwMiwKLQkweDExMTgsIDB4MjAwMSwgMHgxOTZkLCAweDIwMDQsIDB4MDgwYywgMHgyNzAwLCAweDYwZTIsIDB4OTAwNiwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAxNWUsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MjA2MSwKLQkweDAxMDAsIDB4MjA3MSwgMHgxODAwLCAweDYwMjAsIDB4OTA4NCwgMHgwMGMwLCAweDAxZTgsIDB4MDgwYywKLQkweGFjZmMsIDB4MjAxMSwgMHgwMDAzLCAweDA4MGMsIDB4YTYyYiwgMHgyMDExLCAweDAwMDIsIDB4MDgwYywKLQkweGE2MzUsIDB4MDgwYywgMHhhNTE2LCAweDkwMWUsIDB4MDgwYywgMHhhNTk2LCAweDA4MGMsIDB4YWQxOCwKLQkweDIwNjksIDB4MDE0MCwgMHgyMDAxLCAweDAwYTAsIDB4MDgwYywgMHgyYTk5LCAweDA4MGMsIDB4N2FiNiwKLQkweDA4MGMsIDB4NjE5ZCwgMHgwODA0LCAweDdhMzIsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsIDB4ZDFiNCwKLQkweDExNjAsIDB4YzFiNSwgMHgyMTAyLCAweDA4MGMsIDB4NzVmYSwgMHgyMDY5LCAweDAxNDAsIDB4MjAwMSwKLQkweDAwODAsIDB4MDgwYywgMHgyYTk5LCAweDYwZTMsIDB4MDAwMCwgMHgyMDY5LCAweDAyMDAsIDB4NjgwNCwKLQkweDkwMDUsIDB4MTExOCwgMHg2ODA4LCAweDkwMDUsIDB4MDE5MCwgMHg2MDI4LCAweDkwODQsIDB4ZmRmZiwKLQkweDYwMmEsIDB4MjAxMSwgMHgwMjAwLCAweDA4MGMsIDB4MmFkMywgMHgyMDY5LCAweDE5OGYsIDB4NzAwMCwKLQkweDIwNmEsIDB4NzA5YiwgMHgwMDI3LCAweDcwMDMsIDB4MDAwMSwgMHgwODA0LCAweDdhMzIsIDB4MjAxMSwKLQkweDFlMDAsIDB4MDgwYywgMHgyYWQzLCAweDIwMDksIDB4MWUwMCwgMHgwODBjLCAweDJhN2YsIDB4NjAyNCwKLQkweDkxMGMsIDB4MDFjOCwgMHg5MDg0LCAweDFjMDAsIDB4MTFiMCwgMHgxZDA0LCAweDc5ZTcsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDgwYywgMHg4OGU3LCAweDAwZWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDAxZSwgMHgwMDBlLCAweDAwZTYsIDB4MjA3MSwgMHgxYTA0LCAweDcwNzgsIDB4MDBlZSwKLQkweDkwMDUsIDB4MTllOCwgMHgwNDM4LCAweDAwMjYsIDB4MjAxMSwgMHg3NjEyLCAweDA4MGMsIDB4ODk5MywKLQkweDIwMTEsIDB4NzYwNSwgMHgwODBjLCAweDhhOWYsIDB4MDAyZSwgMHgyMDY5LCAweDAxNDAsIDB4NjBlMywKLQkweDAwMDAsIDB4NzBiNCwgMHg5MDA1LCAweDExMTgsIDB4Njg4NywgMHgwMDAxLCAweDAwMDgsIDB4Njg4NiwKLQkweDIwMDEsIDB4MTgwZCwgMHgyMDA0LCAweGQwOGMsIDB4MjAwMSwgMHgwMDAyLCAweDExMTgsIDB4MjAwMSwKLQkweDE5NmQsIDB4MjAwNCwgMHgwODBjLCAweDI3MDAsIDB4NjBlMiwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywKLQkweGMxYjQsIDB4MjEwMiwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAxNWUsIDB4MDAwNSwgMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsIDB4MDBjNiwKLQkweDAwZTYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweGQ2M2UsIDB4MTkwNCwKLQkweDdhYTAsIDB4NzEzMCwgMHhkMTg0LCAweDExNzAsIDB4MDgwYywgMHgzNDgyLCAweDAxMzgsIDB4YzE4ZCwKLQkweDcxMzIsIDB4MjAxMSwgMHgxODQ4LCAweDIyMTQsIDB4ZDJhYywgMHgxMTIwLCAweDcwMzAsIDB4ZDA4YywKLQkweDA5MDQsIDB4N2FhMCwgMHgyMDExLCAweDE4NDgsIDB4MjIwYywgMHhkMWE0LCAweDA1MzgsIDB4MDAxNiwKLQkweDIwMTksIDB4MDAwZSwgMHgwODBjLCAweGU5ZjksIDB4MDE1NiwgMHgwMGI2LCAweDIwYTksIDB4MDA3ZiwKLQkweDkwMGUsIDB4OTE4NiwgMHgwMDdlLCAweDAxYTAsIDB4OTE4NiwgMHgwMDgwLCAweDAxODgsIDB4MDgwYywKLQkweDY3YjQsIDB4MTE3MCwgMHgyMTIwLCAweDkwMDYsIDB4MDAxNiwgMHgyMDA5LCAweDAwMGUsIDB4MDgwYywKLQkweGVhOGQsIDB4MjAwOSwgMHgwMDAxLCAweDIwMTEsIDB4MDEwMCwgMHgwODBjLCAweDhjNDQsIDB4MDAxZSwKLQkweDgxMDgsIDB4MWYwNCwgMHg3YTY5LCAweDAwYmUsIDB4MDE1ZSwgMHgwMDFlLCAweGQxYWMsIDB4MTE0OCwKLQkweDAwMTYsIDB4MjAwOSwgMHgwMDAyLCAweDIwMTksIDB4MDAwNCwgMHgwODBjLCAweDMyZGEsIDB4MDAxZSwKLQkweDAwNzgsIDB4MDE1NiwgMHgwMGI2LCAweDIwYTksIDB4MDA3ZiwgMHg5MDBlLCAweDA4MGMsIDB4NjdiNCwKLQkweDExMTAsIDB4MDgwYywgMHg2MWI3LCAweDgxMDgsIDB4MWYwNCwgMHg3YTk2LCAweDAwYmUsIDB4MDE1ZSwKLQkweDA4MGMsIDB4MWI0YiwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywgMHhiMDliLCAweDA4MGMsIDB4YWQxOCwKLQkweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweDYxOWQsIDB4MDgwYywgMHg3NmNkLCAweDAwZWUsIDB4MDBjZSwKLQkweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDE1ZSwgMHgwMDA1LCAweDIwMDEsIDB4MTk3ZCwKLQkweDIwMDMsIDB4MDAwMSwgMHgwMDA1LCAweDIwMDEsIDB4MTk3ZCwgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwKLQkweDIwMDEsIDB4MTk3YywgMHgyMDAzLCAweGFhYWEsIDB4MDAwNSwgMHgyMDAxLCAweDE5N2MsIDB4MjAwMywKLQkweDAwMDAsIDB4MDAwNSwgMHgyMDcxLCAweDE4ZmEsIDB4NzAwMywgMHgwMDAwLCAweDcwMDcsIDB4MDAwMCwKLQkweDA4MGMsIDB4MTA3MiwgMHgwOTBjLCAweDBkODUsIDB4YThhYiwgMHhkY2IwLCAweDI5MDAsIDB4NzA0ZSwKLQkweDA4MGMsIDB4MTA3MiwgMHgwOTBjLCAweDBkODUsIDB4YThhYiwgMHhkY2IwLCAweDI5MDAsIDB4NzA1MiwKLQkweGE4NjcsIDB4MDAwMCwgMHhhODZiLCAweDAwMDEsIDB4YTg5ZiwgMHgwMDAwLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4MDA0MCwgMHg2ODQ4LCAweDkwMDUsIDB4MTExOCwgMHg5MDg1LCAweDAwMDEsIDB4MDRiMCwKLQkweDY4NDAsIDB4OTAwNSwgMHgwMTUwLCAweDA0YTEsIDB4NmE1MCwgMHg5MjAwLCAweDcwMDIsIDB4Njg1NCwKLQkweDkxMDEsIDB4NzAwNiwgMHg5MDA2LCAweDcwMTIsIDB4NzAxNiwgMHg2ODUwLCAweDcwMDIsIDB4Njg1NCwKLQkweDcwMDYsIDB4Njg1OCwgMHg3MDBhLCAweDY4NWMsIDB4NzAwZSwgMHg2ODQwLCAweDkwMDUsIDB4MTExMCwKLQkweDcwMTIsIDB4NzAxNiwgMHg2ODQ4LCAweDcwMWEsIDB4NzAxYywgMHg5MDg1LCAweDAwNDAsIDB4NzAxZSwKLQkweDIwMDEsIDB4MDAxOSwgMHg3MDM2LCAweDcwMmIsIDB4MDAwMSwgMHgyMDAxLCAweDAwMDQsIDB4MjAwYywKLQkweDkxOGMsIDB4ZmZmNywgMHg5MThkLCAweDgwMDAsIDB4MjEwMiwgMHgwMGQ2LCAweDIwNjksIDB4MThmYSwKLQkweDY4MDcsIDB4MDAwMSwgMHgwMGRlLCAweDA4MGMsIDB4ODEwMywgMHg5MDA2LCAweDAwZWUsIDB4MDAwNSwKLQkweDkwMGUsIDB4MDE1NiwgMHgyMGE5LCAweDAwMDYsIDB4ODAwMywgMHg4MThkLCAweDFmMDQsIDB4N2IyYywKLQkweDAxNWUsIDB4MDAwNSwgMHgyMDc5LCAweDAwNDAsIDB4MjA3MSwgMHgxOGZhLCAweDcwMDQsIDB4MDAwMiwKLQkweDdiNDIsIDB4N2I0MywgMHg3YjhmLCAweDdiZWEsIDB4N2Q0YSwgMHg3YjQwLCAweDdiNDAsIDB4N2Q3NCwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwMDA1LCAweDIwNzksIDB4MDA0MCwgMHgyMDAxLCAweDFkYzAsIDB4MjAwMywKLQkweDAwMDAsIDB4NzgyYywgMHg5MDhjLCAweDA3ODAsIDB4MTkwYywgMHg4MWU1LCAweGQwYTQsIDB4MDU3OCwKLQkweDIwMDEsIDB4MWRjMCwgMHgyMDA0LCAweDkwODIsIDB4MDA4MCwgMHgxNjQ4LCAweDFkMDQsIDB4N2I2MCwKLQkweDIwMDEsIDB4MWEwNywgMHgyMDBjLCAweDgxMDksIDB4MDUxMCwgMHgyMDkxLCAweDYwMDAsIDB4MjEwMiwKLQkweDc4MjQsIDB4MjA0OCwgMHg5MDA2LCAweGE4MDIsIDB4YTgwNiwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwKLQkweDkwOGEsIDB4MDA0MCwgMHgwNjEwLCAweDAwYzAsIDB4MjAwMSwgMHgxODAwLCAweDIwMGMsIDB4OTE4NiwKLQkweDAwMDMsIDB4MTE2OCwgMHg3MDA0LCAweDAwMDIsIDB4N2I3ZiwgMHg3YjQ5LCAweDdiN2YsIDB4N2I3ZCwKLQkweDdiN2YsIDB4N2I3ZiwgMHg3YjdmLCAweDdiN2YsIDB4N2I3ZiwgMHgwODBjLCAweDdiZWEsIDB4NzgyYywKLQkweGQwOWMsIDB4MDkwYywgMHg4MTAzLCAweDAwMDUsIDB4OTA4MiwgMHgwMDVhLCAweDEyMTgsIDB4MjEwMCwKLQkweDAwM2IsIDB4MGMxMCwgMHgwODBjLCAweDdjMjAsIDB4MGM5MCwgMHgwMGUzLCAweDA4ZTgsIDB4MDAwNSwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjNDIsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyYywgMHg3YzIwLCAweDdlNmEsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzQyLCAweDdjMjAsIDB4N2MyYywgMHg3ZWFiLCAweDdlZWMsIDB4N2YzMywKLQkweDdmNDcsIDB4N2MyMCwgMHg3YzIwLCAweDdjNDIsIDB4N2MyYywgMHg3YzU2LCAweDdjMjAsIDB4N2QxZSwKLQkweDdmZjIsIDB4ODAwZCwgMHg3YzIwLCAweDdjNDIsIDB4N2MyMCwgMHg3YzU2LCAweDdjMjAsIDB4N2MyMCwKLQkweDdkMTQsIDB4ODAwZCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjNmEsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwgMHg4MTg5LCAweDdjMjAsIDB4ODEzMywKLQkweDdjMjAsIDB4ODEzMywgMHg3YzIwLCAweDdjN2YsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyMCwKLQkweDdjMjAsIDB4N2MyMCwgMHgyMDc5LCAweDAwNDAsIDB4NzAwNCwgMHg5MDg2LCAweDAwMDMsIDB4MTE5OCwKLQkweDc4MmMsIDB4MDgwYywgMHg4MTJjLCAweGQwYTQsIDB4MDE3MCwgMHg3ODI0LCAweDIwNDgsIDB4OTAwNiwKLQkweGE4MDIsIDB4YTgwNiwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDhhLCAweDAwMWEsIDB4MTIxMCwKLQkweDAwMmIsIDB4MGM1MCwgMHgwMGU5LCAweDA4MGMsIDB4ODEwMywgMHgwMDA1LCAweDdjMjAsIDB4N2MyYywKLQkweDdlNTYsIDB4N2MyMCwgMHg3YzJjLCAweDdjMjAsIDB4N2MyYywgMHg3YzJjLCAweDdjMjAsIDB4N2MyYywKLQkweDdlNTYsIDB4N2MyYywgMHg3YzJjLCAweDdjMmMsIDB4N2MyYywgMHg3YzJjLCAweDdjMjAsIDB4N2MyYywKLQkweDdlNTYsIDB4N2MyMCwgMHg3YzIwLCAweDdjMmMsIDB4N2MyMCwgMHg3YzIwLCAweDdjMjAsIDB4N2MyYywKLQkweDAwZTYsIDB4MjA3MSwgMHgxOGZhLCAweDIwMDksIDB4MDQwMCwgMHgwMDcxLCAweDAwZWUsIDB4MDAwNSwKLQkweDIwMDksIDB4MTAwMCwgMHgwMDQ5LCAweDAwMDUsIDB4MjAwOSwgMHgyMDAwLCAweDAwMjksIDB4MDAwNSwKLQkweDIwMDksIDB4MDgwMCwgMHgwMDA5LCAweDAwMDUsIDB4NzAwNywgMHgwMDAxLCAweGE4NjgsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTEwNSwgMHhhODZhLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NzAxMiwKLQkweDAxMmUsIDB4MDAwNSwgMHhhODY0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDBkMDgsIDB4ODAwMSwKLQkweDExMjAsIDB4NzAwNywgMHgwMDAxLCAweDA4MDQsIDB4N2RmMywgMHg3MDA3LCAweDAwMDMsIDB4NzAxMiwKLQkweDI5MDAsIDB4NzAxNiwgMHg3MDFhLCAweDcwNGIsIDB4N2RmMywgMHgwMDA1LCAweGE4NjQsIDB4ODAwNywKLQkweDkwODQsIDB4MDBmZiwgMHgwOTY4LCAweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwKLQkweDdlMGUsIDB4NzAwNywgMHgwMDAzLCAweDcwMTIsIDB4MjkwMCwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwKLQkweDdlMGUsIDB4MDAwNSwgMHhhODY0LCAweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDA5MDQsIDB4N2MyOCwKLQkweDgwMDEsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwgMHg3ZTJhLCAweDcwMDcsIDB4MDAwMywKLQkweDcwMTIsIDB4MjkwMCwgMHg3MDE2LCAweDcwMWEsIDB4NzA0YiwgMHg3ZTJhLCAweDAwMDUsIDB4YTg2NCwKLQkweDgwMDcsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAwMSwgMHgxOTA0LCAweDdjMjgsIDB4NzAwNywKLQkweDAwMDEsIDB4MjAwOSwgMHgxODM0LCAweDIxMGMsIDB4ODFmZiwgMHgxOTA0LCAweDdjZWIsIDB4MjAwMSwKLQkweDE4MGQsIDB4MjAwNCwgMHhkMDhjLCAweDA5MDQsIDB4N2NkNiwgMHhhOTljLCAweDkxODYsIDB4MDBmZiwKLQkweDA1ZTgsIDB4YTk5NCwgMHg5MTg2LCAweDAwNmYsIDB4MDE4OCwgMHg5MTg2LCAweDAwNzQsIDB4MTViMCwKLQkweDAwMjYsIDB4MjAxMSwgMHgwMDEwLCAweDA4MGMsIDB4NmMzNSwgMHgwMDJlLCAweDA1NzgsIDB4MDAxNiwKLQkweGE5OTgsIDB4MDgwYywgMHg2YzdmLCAweDAwMWUsIDB4MTU0OCwgMHgwNDAwLCAweDA4MGMsIDB4Nzc5ZSwKLQkweDAxNDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAxNiwgMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwKLQkweDA0MzgsIDB4MDAyNiwgMHgyMDExLCAweDgwMDgsIDB4MDgwYywgMHg2YzM1LCAweDAwMmUsIDB4MDFiMCwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweGE5OTgsIDB4YWFhMCwgMHhhYjljLCAweDkxOGQsIDB4ODAwMCwKLQkweDA4MGMsIDB4NmM3ZiwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgxMTQwLCAweGE4OTcsIDB4NDAwNSwKLQkweGE4OWIsIDB4NDAwOSwgMHgyMDAxLCAweDAwMzAsIDB4OTAwZSwgMHgwMDUwLCAweGE4NjgsIDB4OTA4NCwKLQkweDAwZmYsIDB4YTg2YSwgMHhhODgzLCAweDAwMDAsIDB4MDgwYywgMHg2NDMwLCAweDExMDgsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweGE4NjcsIDB4MDEzOSwgMHhhODdhLCAweGE5ODIsIDB4MDgwYywKLQkweDcwMTIsIDB4MDEyZSwgMHgwY2EwLCAweGE5OTQsIDB4OTE4NiwgMHgwMDcxLCAweDA5MDQsIDB4N2M4ZiwKLQkweDkxODYsIDB4MDA2NCwgMHgwOTA0LCAweDdjOGYsIDB4OTE4NiwgMHgwMDdjLCAweDA5MDQsIDB4N2M4ZiwKLQkweDkxODYsIDB4MDAyOCwgMHgwOTA0LCAweDdjOGYsIDB4OTE4NiwgMHgwMDM4LCAweDA5MDQsIDB4N2M4ZiwKLQkweDkxODYsIDB4MDA3OCwgMHgwOTA0LCAweDdjOGYsIDB4OTE4NiwgMHgwMDVmLCAweDA5MDQsIDB4N2M4ZiwKLQkweDkxODYsIDB4MDA1NiwgMHgwOTA0LCAweDdjOGYsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAwMSwKLQkweDIwMDEsIDB4MDAzMCwgMHg5MDBlLCAweDA4NjAsIDB4YTg3YywgMHg5MDg0LCAweDAwYzAsIDB4OTA4NiwKLQkweDAwYzAsIDB4MTEyMCwgMHg3MDA3LCAweDAwMDEsIDB4MDgwNCwgMHg4MDI0LCAweDI5MDAsIDB4NzAxNiwKLQkweDcwMWEsIDB4MjBhOSwgMHgwMDA0LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsIDB4MDAzMCwKLQkweDIwOTgsIDB4NzA1MCwgMHgyMDQwLCAweGEwNjAsIDB4MjBlOCwgMHhhMDVjLCAweDkwODAsIDB4MDAyMywKLQkweDIwYTAsIDB4NDAwMywgMHhhODg4LCAweDcwMTIsIDB4OTA4MiwgMHgwNDAxLCAweDFhMDQsIDB4N2MzMCwKLQkweGFhYjQsIDB4OTI4YSwgMHgwMDAyLCAweDFhMDQsIDB4N2MzMCwgMHg4MmZmLCAweDExMzgsIDB4YThiOCwKLQkweGE5YmMsIDB4OTEwNSwgMHgwMTE4LCAweDIwMDEsIDB4N2RiMSwgMHgwMDE4LCAweDkyODAsIDB4N2RhNywKLQkweDIwMDUsIDB4NzA1NiwgMHg3MDEwLCAweDkwMTUsIDB4MDkwNCwgMHg3ZDkyLCAweDA4MGMsIDB4MTA3MiwKLQkweDExMTgsIDB4NzAwNywgMHgwMDA0LCAweDAwMDUsIDB4MjkwMCwgMHg3MDIyLCAweDcwNTQsIDB4MjA2MCwKLQkweGUwMDAsIDB4YTg2NiwgMHg3MDUwLCAweDIwNDAsIDB4YTk1YywgMHhlMDA0LCAweDkxMDAsIDB4YTA3NiwKLQkweGE4NjAsIDB4YTA3MiwgMHhlMDA4LCAweDkyMGEsIDB4MTIxMCwgMHg5MDBlLCAweDIyMDAsIDB4NzExMiwKLQkweGUyMGMsIDB4ODAwMywgMHg4MDBiLCAweDkyOTYsIDB4MDAwNCwgMHgwMTA4LCAweDkxMDgsIDB4YTE3YSwKLQkweDgxMGIsIDB4YTE3ZSwgMHgwODBjLCAweDExNGUsIDB4YTA2YywgMHg5MDhlLCAweDAxMDAsIDB4MDE3MCwKLQkweDkwODYsIDB4MDIwMCwgMHgwMTE4LCAweDcwMDcsIDB4MDAwNywgMHgwMDA1LCAweDcwMjAsIDB4MjA0OCwKLQkweDA4MGMsIDB4MTA4YiwgMHg3MDE0LCAweDIwNDgsIDB4MDgwNCwgMHg3YzMwLCAweDcwMjAsIDB4MjA0OCwKLQkweDcwMTgsIDB4YTgwMiwgMHhhODA3LCAweDAwMDAsIDB4MjkwOCwgMHgyMDQ4LCAweGE5MDYsIDB4NzExYSwKLQkweDA4MDQsIDB4N2Q0YSwgMHg3MDE0LCAweDIwNDgsIDB4NzAwNywgMHgwMDAxLCAweGE4YjQsIDB4OTAwNSwKLQkweDExMjgsIDB4YThiOCwgMHhhOWJjLCAweDkxMDUsIDB4MDEwOCwgMHgwMGI5LCAweGE4NjQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDFlLCAweDA5MDQsIDB4ODAyNCwgMHgwODA0LCAweDdkZjMsIDB4N2RhOSwKLQkweDdkYWQsIDB4MDAwMiwgMHgwMDFkLCAweDAwMDcsIDB4MDAwNCwgMHgwMDBhLCAweDAwMWIsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDAwYSwgMHgwMDFkLCAweDAwMDUsIDB4MDAwNCwgMHgwMDc2LCAweDAwNjYsIDB4YWZiOCwKLQkweGFlYmMsIDB4YTgwNCwgMHgyMDUwLCAweGIwYzAsIDB4YjBlMiwgMHhiMGJjLCAweGIwZGUsIDB4YjBiOCwKLQkweGIwZDIsIDB4YjBiNCwgMHhiMGNlLCAweGI2ZGEsIDB4YjdkNiwgMHhiMGIwLCAweGIwY2EsIDB4YjBhYywKLQkweGIwYzYsIDB4YjBhOCwgMHhiMGJhLCAweGIwYTQsIDB4YjBiNiwgMHhiNmMyLCAweGI3YmUsIDB4YjBhMCwKLQkweGIwYjIsIDB4YjA5YywgMHhiMGFlLCAweGIwOTgsIDB4YjBhMiwgMHhiMDk0LCAweGIwOWUsIDB4YjZhYSwKLQkweGI3YTYsIDB4YjA5MCwgMHhiMDlhLCAweGIwOGMsIDB4YjA5NiwgMHhiMDg4LCAweGIwOGEsIDB4YjA4NCwKLQkweGIwODYsIDB4YjY5MiwgMHhiNzhlLCAweGIwODAsIDB4YjA4MiwgMHhiMDdjLCAweGIwN2UsIDB4YjA3OCwKLQkweGIwNzIsIDB4YjA3NCwgMHhiMDZlLCAweGI2N2EsIDB4Yjc3NiwgMHhiMDA0LCAweDkwNTUsIDB4MTk1OCwKLQkweDAwNmUsIDB4MDA3ZSwgMHgwMDA1LCAweDIwMDksIDB4MTgzNCwgMHgyMTBjLCAweDgxZmYsIDB4MTE3OCwKLQkweDA4MGMsIDB4NjIyZiwgMHgxMTA4LCAweDAwMDUsIDB4MDgwYywgMHg3MjVlLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHhkMjIwLCAweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDBjYTAsIDB4MDgwYywKLQkweGQ2M2UsIDB4MWQ3MCwgMHgyMDAxLCAweDAwMjgsIDB4OTAwZSwgMHgwYzcwLCAweDIwMDksIDB4MTgzNCwKLQkweDIxMGMsIDB4ODFmZiwgMHgxMTg4LCAweGE4ODgsIDB4OTAwNSwgMHgwMTg4LCAweGE4ODMsIDB4MDAwMCwKLQkweDA4MGMsIDB4NjJiZCwgMHgxMTA4LCAweDAwMDUsIDB4YTg3YSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDBjYjgsIDB4MjAwMSwgMHgwMDI4LCAweDBjYTgsIDB4MjAwMSwKLQkweDAwMDAsIDB4MGM5MCwgMHgwNDE5LCAweDExZDgsIDB4YTg4OCwgMHg5MDA1LCAweDAxZTAsIDB4YTg4MywKLQkweDAwMDAsIDB4YTg3YywgMHhkMGY0LCAweDAxMjAsIDB4MDgwYywgMHg2MzkyLCAweDExMzgsIDB4MDAwNSwKLQkweDkwMDYsIDB4YTg3YSwgMHgwODBjLCAweDYzMGEsIDB4MTEwOCwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4YTg3YSwgMHhhOTgyLCAweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDBjYjAsIDB4MjAwMSwKLQkweDAwMjgsIDB4OTAwZSwgMHgwYzk4LCAweDIwMDEsIDB4MDAwMCwgMHgwYzgwLCAweDAwYzYsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjBkMCwgMHg5MDA1LCAweDAxMDAsIDB4MDBjZSwgMHgwMDA1LCAweDcwMTgsIDB4YTgwMiwKLQkweDI5MDgsIDB4MjA0OCwgMHhhOTA2LCAweDcxMWEsIDB4NzAxMCwgMHg4MDAxLCAweDcwMTIsIDB4MDExOCwKLQkweDcwMDcsIDB4MDAwMywgMHgwMDMwLCAweDcwMTQsIDB4MjA0OCwgMHg3MDA3LCAweDAwMDEsIDB4NzA0OCwKLQkweDA4MGYsIDB4MDAwNSwgMHgwMGI2LCAweDcwMDcsIDB4MDAwMSwgMHhhOTc0LCAweGE4NzgsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA5NiwgMHgwMDA0LCAweDA1NDAsIDB4MjBhOSwgMHgwMDAxLCAweDkwOTYsIDB4MDAwMSwKLQkweDAxOTAsIDB4OTAwZSwgMHgyMGE5LCAweDA4MDAsIDB4OTA5NiwgMHgwMDAyLCAweDAxNjAsIDB4OTAwNSwKLQkweDExZDgsIDB4YTk3NCwgMHgwODBjLCAweDY3YjQsIDB4MTFiOCwgMHgwMDY2LCAweGFlODAsIDB4MDgwYywKLQkweDY4YzQsIDB4MDA2ZSwgMHgwMDg4LCAweDAwNDYsIDB4MjAxMSwgMHgxODBjLCAweDIyMjQsIDB4YzQ4NCwKLQkweDI0MTIsIDB4MDA0ZSwgMHgwMGM2LCAweDA4MGMsIDB4NjdiNCwgMHgxMTEwLCAweDA4MGMsIDB4NmE5ZSwKLQkweDgxMDgsIDB4MWYwNCwgMHg3ZTkzLCAweDAwY2UsIDB4YTg3YywgMHhkMDg0LCAweDExMjAsIDB4MDgwYywKLQkweDEwOGIsIDB4MDBiZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NzAxMiwKLQkweDAxMmUsIDB4MDBiZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsIDB4MDAwMSwKLQkweDA4MGMsIDB4NmMwZCwgMHgwNTgwLCAweDIwNjEsIDB4MWE3MywgMHg2MTAwLCAweGQxODQsIDB4MDE3OCwKLQkweGE4ODgsIDB4OTA4NCwgMHgwMGZmLCAweDE1NTAsIDB4NjAwMCwgMHhkMDg0LCAweDA1MjAsIDB4NjAwNCwKLQkweDkwMDUsIDB4MTUzOCwgMHg2MDAzLCAweDAwMDAsIDB4NjAwYiwgMHgwMDAwLCAweDAwYzgsIDB4MjAxMSwKLQkweDAwMDEsIDB4YTg5MCwgMHg5MDA1LCAweDExMTAsIDB4MjAwMSwgMHgwMDFlLCAweDgwMDAsIDB4NjAxNiwKLQkweGE4ODgsIDB4OTA4NCwgMHgwMGZmLCAweDAxNzgsIDB4NjAwNiwgMHhhODg4LCAweDgwMDcsIDB4OTA4NCwKLQkweDAwZmYsIDB4MDE0OCwgMHg2MDBhLCAweGE4ODgsIDB4ODAwMCwgMHgxMTA4LCAweGMyOGQsIDB4NjIwMiwKLQkweDAxMmUsIDB4MDgwNCwgMHg4MGVkLCAweDAxMmUsIDB4MDgwNCwgMHg4MGU3LCAweDAxMmUsIDB4MDgwNCwKLQkweDgwZTEsIDB4MDEyZSwgMHgwODA0LCAweDgwZTQsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywKLQkweDAwMDEsIDB4MDgwYywgMHg2YzBkLCAweDA1ZTAsIDB4MjA2MSwgMHgxYTczLCAweDYwMDAsIDB4ZDA4NCwKLQkweDA1YjgsIDB4NjIwNCwgMHg2MzA4LCAweGQwOGMsIDB4MTUzMCwgMHhhYzc4LCAweDk0ODQsIDB4MDAwMywKLQkweDAxNzAsIDB4YTk4OCwgMHg5MThjLCAweDAwZmYsIDB4ODAwMSwgMHgxMTIwLCAweDIxMDAsIDB4OTIxMCwKLQkweDA2MjAsIDB4MDAyOCwgMHg4MDAxLCAweDE1MDgsIDB4MjEwMCwgMHg5MjEyLCAweDAyZjAsIDB4OTQ4NCwKLQkweDAwMGMsIDB4MDE4OCwgMHhhOTg4LCAweDgxMGYsIDB4OTE4YywgMHgwMGZmLCAweDkwODIsIDB4MDAwNCwKLQkweDExMjAsIDB4MjEwMCwgMHg5MzE4LCAweDAyODgsIDB4MDAzMCwgMHg5MDgyLCAweDAwMDQsIDB4MTE2OCwKLQkweDIxMDAsIDB4OTMxYSwgMHgwMjUwLCAweGE4OTAsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDAsIDB4NjAxNiwKLQkweDYyMDYsIDB4NjMwYSwgMHgwMTJlLCAweDA4MDQsIDB4ODBlZCwgMHgwMTJlLCAweDA4MDQsIDB4ODBlYSwKLQkweDAxMmUsIDB4MDgwNCwgMHg4MGU3LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMDcsIDB4MDAwMSwKLQkweDIwNjEsIDB4MWE3MywgMHg2MzAwLCAweGQzOGMsIDB4MTEyMCwgMHg2MzA4LCAweDgzMTgsIDB4MDIyMCwKLQkweDYzMGEsIDB4MDEyZSwgMHgwODA0LCAweDgwZmIsIDB4MDEyZSwgMHgwODA0LCAweDgwZWEsIDB4MDBiNiwKLQkweDAxMjYsIDB4MDBjNiwgMHgyMDkxLCAweDgwMDAsIDB4NzAwNywgMHgwMDAxLCAweGE4N2MsIDB4ZDBhYywKLQkweDAxNDgsIDB4MDBjNiwgMHgyMDYxLCAweDFhNzMsIDB4NjAwMCwgMHg5MDg0LCAweGZjZmYsIDB4NjAwMiwKLQkweDAwY2UsIDB4MDQ0MCwgMHhhODg4LCAweDkwMDUsIDB4MDVkOCwgMHhhODhjLCAweDkwNjUsIDB4MDU5OCwKLQkweDIwMDEsIDB4MTgzNCwgMHgyMDA0LCAweDkwMDUsIDB4MDExOCwgMHgwODBjLCAweGIxYTcsIDB4MDA2OCwKLQkweDYwMTcsIDB4ZjQwMCwgMHg2MDYzLCAweDAwMDAsIDB4YTk3YywgMHhkMWE0LCAweDAxMTAsIDB4YTk4MCwKLQkweDYxNjIsIDB4MjAwOSwgMHgwMDQxLCAweDA4MGMsIDB4YjIwYSwgMHhhOTg4LCAweDkxOGMsIDB4ZmYwMCwKLQkweDkxODYsIDB4MjAwMCwgMHgxMTM4LCAweDAwMjYsIDB4OTAwZSwgMHgyMDExLCAweGZkZmYsIDB4MDgwYywKLQkweDhjNDQsIDB4MDAyZSwgMHhhODdjLCAweGQwYzQsIDB4MDE0OCwgMHgyMDYxLCAweDFhNzMsIDB4NjAwMCwKLQkweGQwOGMsIDB4MTEyMCwgMHg2MDA4LCAweDgwMDAsIDB4MDIwOCwgMHg2MDBhLCAweDAwY2UsIDB4MDEyZSwKLQkweDAwYmUsIDB4MDgwNCwgMHg4MGVkLCAweDAwY2UsIDB4MDEyZSwgMHgwMGJlLCAweDA4MDQsIDB4ODBlNywKLQkweGE5ODQsIDB4OTE4NiwgMHgwMDJlLCAweDBkMzAsIDB4OTE4NiwgMHgwMDJkLCAweDBkMTgsIDB4OTE4NiwKLQkweDAwNDUsIDB4MDUxMCwgMHg5MTg2LCAweDAwMmEsIDB4MTEzMCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywKLQkweGMxOTQsIDB4MjEwMiwgMHgwOGI4LCAweDkxODYsIDB4MDAyMCwgMHgwMTU4LCAweDkxODYsIDB4MDAyOSwKLQkweDFkMTAsIDB4YTk3NCwgMHgwODBjLCAweDY3YjQsIDB4MTk2OCwgMHhiODAwLCAweGMwZTQsIDB4YjgwMiwKLQkweDA4NDgsIDB4YTg4YywgMHg5MDY1LCAweDA5YjgsIDB4NjAwNywgMHgwMDI0LCAweDIwMDEsIDB4MTk4NiwKLQkweDIwMDQsIDB4NjAxYSwgMHgwODA0LCAweDdmODIsIDB4YTg4YywgMHg5MDY1LCAweDA5NjAsIDB4MDBlNiwKLQkweGE4OTAsIDB4OTA3NSwgMHgyMDAxLCAweDE4MzQsIDB4MjAwNCwgMHg5MDA1LCAweDAxNTAsIDB4MDgwYywKLQkweGIxYTcsIDB4OGVmZiwgMHgwMTE4LCAweDJlNjAsIDB4MDgwYywgMHhiMWE3LCAweDAwZWUsIDB4MDgwNCwKLQkweDdmODIsIDB4NjAyNCwgMHhjMGRjLCAweGMwZDUsIDB4NjAyNiwgMHgyZTYwLCAweDYwMDcsIDB4MDAzYSwKLQkweGE4YTAsIDB4OTAwNSwgMHgwMTMwLCAweDYwMDcsIDB4MDAzYiwgMHhhOGE0LCAweDYwMmUsIDB4YThhOCwKLQkweDYwMTYsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk2MTcsIDB4MDBlZSwKLQkweDA4MDQsIDB4N2Y4MiwgMHgyMDYxLCAweDFhNzMsIDB4NjAwMCwgMHhkMDg0LCAweDAxOTAsIDB4ZDA4YywKLQkweDE5MDQsIDB4ODBmYiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHg2MjA0LCAweDgyMTAsIDB4MDIyMCwKLQkweDYyMDYsIDB4MDEyZSwgMHgwODA0LCAweDgwZmIsIDB4MDEyZSwgMHhhODgzLCAweDAwMTYsIDB4MDgwNCwKLQkweDgwZjQsIDB4YTg4MywgMHgwMDA3LCAweDA4MDQsIDB4ODBmNCwgMHhhODY0LCAweDgwMDcsIDB4OTA4NCwKLQkweDAwZmYsIDB4MDEzMCwgMHg4MDAxLCAweDExMzgsIDB4NzAwNywgMHgwMDAxLCAweDAwNjksIDB4MDAwNSwKLQkweDA4MGMsIDB4N2MyOCwgMHgwMDQwLCAweDcwMDcsIDB4MDAwMywgMHg3MDEyLCAweDI5MDAsIDB4NzAxNiwKLQkweDcwMWEsIDB4NzA0YiwgMHg4MDI0LCAweDAwMDUsIDB4MDBiNiwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4OTAzZSwgMHgyMDYxLCAweDE4MDAsIDB4NjFkMCwgMHg4MWZmLCAweDE5MDQsIDB4ODBhNiwKLQkweDYxMzAsIDB4ZDE5NCwgMHgxOTA0LCAweDgwZDAsIDB4YTg3OCwgMHgyMDcwLCAweDllODIsIDB4MWRkYywKLQkweDBhMDQsIDB4ODA5YSwgMHg2MDY4LCAweDllMDIsIDB4MWEwNCwgMHg4MDlhLCAweDcxMjAsIDB4OTE4NiwKLQkweDAwMDYsIDB4MTkwNCwgMHg4MDhjLCAweDcwMTAsIDB4OTA1ZCwgMHgwOTA0LCAweDgwYTYsIDB4YjgwMCwKLQkweGQwZTQsIDB4MTkwNCwgMHg4MGNhLCAweDIwNjEsIDB4MWE3MywgMHg2MTAwLCAweDkxODQsIDB4MDMwMSwKLQkweDkwODYsIDB4MDAwMSwgMHgxNWEwLCAweDcwMjQsIDB4ZDBkYywgMHgxOTA0LCAweDgwZDMsIDB4YTg4MywKLQkweDAwMDAsIDB4YTgwMywgMHgwMDAwLCAweDI5MDgsIDB4NzAxNCwgMHg5MDA1LCAweDExOTgsIDB4NzExNiwKLQkweGE4N2MsIDB4ZDBmNCwgMHgxOTA0LCAweDgwZDYsIDB4MDgwYywgMHg1ODQwLCAweGQwOWMsIDB4MTExOCwKLQkweGE4N2MsIDB4YzBjYywgMHhhODdlLCAweDJlNjAsIDB4MDgwYywgMHg4YjM0LCAweDAxMmUsIDB4MDBlZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgyMDQ4LCAweGE4MDAsIDB4OTAwNSwgMHgxZGUwLCAweGE5MDIsIDB4MjE0OCwKLQkweGE4N2MsIDB4ZDBmNCwgMHgxOTA0LCAweDgwZDYsIDB4MDEyZSwgMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwKLQkweDAxMmUsIDB4MDBlZSwgMHhhODgzLCAweDAwMDYsIDB4MDBiZSwgMHgwODA0LCAweDgwZjQsIDB4ZDE4NCwKLQkweDBkYjgsIDB4ZDFjNCwgMHgxMTkwLCAweDAwYTAsIDB4YTk3NCwgMHgwODBjLCAweDY3YjQsIDB4MTVkMCwKLQkweGI4MDAsIDB4ZDBlNCwgMHgxNWI4LCAweDcxMjAsIDB4OTE4NiwgMHgwMDA3LCAweDExMTgsIDB4YTg4MywKLQkweDAwMDIsIDB4MDQ5MCwgMHhhODgzLCAweDAwMDgsIDB4MDQ3OCwgMHhhODgzLCAweDAwMGUsIDB4MDQ2MCwKLQkweGE4ODMsIDB4MDAxNywgMHgwNDQ4LCAweGE4ODMsIDB4MDAzNSwgMHgwNDMwLCAweDA4MGMsIDB4NTg0NCwKLQkweGQwZmMsIDB4MDFlOCwgMHhhODc4LCAweDIwNzAsIDB4OWU4MiwgMHgxZGRjLCAweDAyYzAsIDB4NjA2OCwKLQkweDllMDIsIDB4MTJhOCwgMHg3MTIwLCAweDkxODYsIDB4MDAwNiwgMHgxMTg4LCAweDcwMTAsIDB4OTA1ZCwKLQkweDAxNzAsIDB4YjgwMCwgMHhkMGJjLCAweDAxNTgsIDB4MjAzOSwgMHgwMDAxLCAweDcwMDAsIDB4OTA4NiwKLQkweDAwMDcsIDB4MTkwNCwgMHg4MDMwLCAweDcwMDMsIDB4MDAwMiwgMHgwODA0LCAweDgwMzAsIDB4YTg4MywKLQkweDAwMjgsIDB4MDAxMCwgMHhhODgzLCAweDAwMjksIDB4MDEyZSwgMHgwMGVlLCAweDAwYmUsIDB4MDQyMCwKLQkweGE4ODMsIDB4MDAyYSwgMHgwY2M4LCAweGE4ODMsIDB4MDA0NSwgMHgwY2IwLCAweDJlNjAsIDB4MjAxOSwKLQkweDAwMDIsIDB4NjAxYiwgMHgwMDE0LCAweDA4MGMsIDB4ZTU4NiwgMHgwMTJlLCAweDAwZWUsIDB4MDBiZSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDNlLCAweDAwNTgsIDB4MjAwOSwgMHgwMDA0LCAweDAwNDAsIDB4MjAwOSwKLQkweDAwMDYsIDB4MDAyOCwgMHgyMDA5LCAweDAwMTYsIDB4MDAxMCwgMHgyMDA5LCAweDAwMDEsIDB4YTg4NCwKLQkweDkwODQsIDB4ZmYwMCwgMHg5MTA1LCAweGE4ODYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDcwMTIsIDB4MDEyZSwgMHgwMDA1LCAweDA4MGMsIDB4MTA4YiwgMHgwMDA1LCAweDAwZDYsIDB4MDgwYywKLQkweDhiMmIsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4MDA0MCwgMHg3MDJjLCAweGQwODQsIDB4MDFkOCwgMHg5MDhjLCAweDA3ODAsIDB4MTkwYywKLQkweDgxZTUsIDB4ZDA5YywgMHgxMWE4LCAweDIwNzEsIDB4MTgwMCwgMHg3MGMwLCAweDkwZWEsIDB4MDAyMCwKLQkweDAyNzgsIDB4ODAwMSwgMHg3MGMyLCAweDcwMmMsIDB4MjA0OCwgMHhhODAwLCAweDcwMmUsIDB4OTAwNiwKLQkweGE4MDIsIDB4YTgwNiwgMHgyMDcxLCAweDAwNDAsIDB4MjkwMCwgMHg3MDIyLCAweDcwMmMsIDB4MGMyOCwKLQkweDAxMmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwMDUsIDB4MDAwNiwgMHg5MDg0LCAweDA3ODAsIDB4MTkwYywKLQkweDgxZTUsIDB4MDAwZSwgMHgwMDA1LCAweGE4OTgsIDB4OTA4NCwgMHgwMDAzLCAweDA1YTgsIDB4MDgwYywKLQkweGIxMTYsIDB4MDVkOCwgMHgyOTAwLCAweDYwMTYsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwKLQkweDAwMzUsIDB4MTEzOCwgMHg2MDI4LCAweGMwZmQsIDB4NjAyYSwgMHgyMDAxLCAweDE5NmIsIDB4MjAwNCwKLQkweDAwOTgsIDB4YThhMCwgMHg5MDg0LCAweDAwZmYsIDB4YTk5YywgMHg5MThjLCAweGZmMDAsIDB4OTEwNSwKLQkweGE5OWMsIDB4OTE4YywgMHgwMGZmLCAweDA4MGMsIDB4MjY4YywgMHgxNTQwLCAweDAwYjYsIDB4MDgwYywKLQkweDY3YjQsIDB4MmIwMCwgMHgwMGJlLCAweDE1MTAsIDB4NjAxMiwgMHg2MDIzLCAweDAwMDEsIDB4MjAwOSwKLQkweDAwNDAsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDM1LCAweDAxMTAsIDB4MjAwOSwKLQkweDAwNDEsIDB4MDgwYywgMHhiMjBhLCAweDAwMDUsIDB4YTg3YiwgMHgwMTAxLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg3MDEyLCAweDAxMmUsIDB4MDAwNSwgMHhhODdiLCAweDAwMmMsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDEyZSwgMHgwMDA1LCAweGE4N2IsIDB4MDAyOCwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDA4MGMsIDB4YjE2YywKLQkweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDAwMzYsIDB4MDAyNiwgMHgwMDE2LCAweDAwYjYsIDB4NzAwNywKLQkweDAwMDEsIDB4YWE3NCwgMHg5MjgyLCAweDAwMDQsIDB4MWEwNCwgMHg4MWQ2LCAweGE5N2MsIDB4OTE4OCwKLQkweDEwMDAsIDB4MjEwNCwgMHg5MDVkLCAweGI4MDQsIDB4ZDI4NCwgMHgwMTQwLCAweDA1ZTgsIDB4ODAwNywKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg0LCAweDAwMDYsIDB4MTEwOCwgMHgwNGIwLCAweDJiMTAsIDB4MDgwYywKLQkweGIxMTYsIDB4MTExOCwgMHgwODBjLCAweGIxZGQsIDB4MDVhOCwgMHg2MjEyLCAweGE4NzQsIDB4MDAwMiwKLQkweDgxYjQsIDB4ODFiOSwgMHg4MWJjLCAweDgxYzIsIDB4MjAxOSwgMHgwMDAyLCAweDA4MGMsIDB4ZTlmOSwKLQkweDAwNjAsIDB4MDgwYywgMHhlOTg0LCAweDAwNDgsIDB4MjAxOSwgMHgwMDAyLCAweGE5ODAsIDB4MDgwYywKLQkweGU5YTMsIDB4MDAxOCwgMHhhOTgwLCAweDA4MGMsIDB4ZTk4NCwgMHgwODBjLCAweGIxNmMsIDB4YTg4NywKLQkweDAwMDAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg3MDEyLCAweDAxMmUsIDB4MDBiZSwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMDNlLCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweGE4ODcsIDB4MDAwNiwKLQkweDBjODAsIDB4YTg4NywgMHgwMDAyLCAweDBjNjgsIDB4YTg4NywgMHgwMDA1LCAweDBjNTAsIDB4YTg4NywKLQkweDAwMDQsIDB4MGMzOCwgMHhhODg3LCAweDAwMDcsIDB4MGMyMCwgMHgyMDkxLCAweDgwMDAsIDB4MGUwNCwKLQkweDgxZTcsIDB4MDAwNiwgMHgwMDE2LCAweDIwMDEsIDB4ODAwMywgMHgwMDA2LCAweDA4MDQsIDB4MGQ4ZSwKLQkweDIwMDEsIDB4MTgzNCwgMHgyMDA0LCAweDkwMDUsIDB4MDAwNSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwKLQkweDAzMDAsIDB4MjAwMSwgMHgwMjAwLCAweDIwMGMsIDB4YzFlNSwgMHhjMWRjLCAweDIxMDIsIDB4MjAwOSwKLQkweDAyMTgsIDB4MjEwYywgMHhkMWVjLCAweDExMjAsIDB4MDgwYywgMHgxNjQ4LCAweDAwZmUsIDB4MDAwNSwKLQkweDIwMDEsIDB4MDIwZCwgMHgyMDAzLCAweDAwMjAsIDB4NzgxZiwgMHgwMzAwLCAweDAwZmUsIDB4MDAwNSwKLQkweDc4MWMsIDB4ZDA4YywgMHgwOTA0LCAweDgyNjgsIDB4NjhjMCwgMHg5MGFhLCAweDAwMDUsIDB4MGEwNCwKLQkweDg4OTAsIDB4N2Q0NCwgMHg3YzQwLCAweGQ1OWMsIDB4MTkwYywgMHgwZDg1LCAweDk1ODQsIDB4MDBmNiwKLQkweDE1MDgsIDB4OTQ4NCwgMHg3MDAwLCAweDAxMzgsIDB4OTA4YSwgMHgyMDAwLCAweDEyNTgsIDB4OTU4NCwKLQkweDA3MDAsIDB4ODAwNywgMHgwNGYwLCAweDcwMDAsIDB4OTA4NCwgMHhmZjAwLCAweDkwODYsIDB4ODEwMCwKLQkweDBkYjAsIDB4MDBiMCwgMHg5NDg0LCAweDBmZmYsIDB4MTEzMCwgMHg3MDAwLCAweDkwODQsIDB4ZmYwMCwKLQkweDkwODYsIDB4ODEwMCwgMHgxMWMwLCAweDA4MGMsIDB4ZWViMSwgMHgwODBjLCAweDg3NzcsIDB4NzgxNywKLQkweDAxNDAsIDB4MDBhOCwgMHg5NTg0LCAweDAwNzYsIDB4MTExOCwgMHgwODBjLCAweDg3ZDMsIDB4MTljOCwKLQkweGQ1YTQsIDB4MDE0OCwgMHgwMDQ2LCAweDAwNTYsIDB4MDgwYywgMHg4MmI4LCAweDA4MGMsIDB4MjE4NSwKLQkweDAwNWUsIDB4MDA0ZSwgMHgwMDIwLCAweDA4MGMsIDB4ZWViMSwgMHg3ODE3LCAweDAxNDAsIDB4MDgwYywKLQkweDc3OWUsIDB4MDE2OCwgMHgyMDAxLCAweDAxMTEsIDB4MjAwNCwgMHhkMDhjLCAweDAxNDAsIDB4Njg5MywKLQkweDAwMDAsIDB4MjAwMSwgMHgwMTEwLCAweDIwMDMsIDB4MDAwOCwgMHgyMDAzLCAweDAwMDAsIDB4MDQ4OSwKLQkweDAwMDUsIDB4MDAwMiwgMHg4Mjc1LCAweDg1ODUsIDB4ODI3MiwgMHg4MjcyLCAweDgyNzIsIDB4ODI3MiwKLQkweDgyNzIsIDB4ODI3MiwgMHg3ODE3LCAweDAxNDAsIDB4MDAwNSwgMHg3MDAwLCAweDkwOGMsIDB4ZmYwMCwKLQkweDkxOTQsIDB4ZjAwMCwgMHg4MTBmLCAweDk0ODQsIDB4MGZmZiwgMHg2ODkyLCAweDkyODYsIDB4MjAwMCwKLQkweDExNTAsIDB4NjgwMCwgMHg5MDg2LCAweDAwMDEsIDB4MTExOCwgMHgwODBjLCAweDU4YWEsIDB4MDA3MCwKLQkweDA4MGMsIDB4ODJkOCwgMHgwMDU4LCAweDkyODYsIDB4MzAwMCwgMHgxMTE4LCAweDA4MGMsIDB4ODRiZiwKLQkweDAwMjgsIDB4OTI4NiwgMHg4MDAwLCAweDExMTAsIDB4MDgwYywgMHg4NmE0LCAweDc4MTcsIDB4MDE0MCwKLQkweDAwMDUsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsIDB4ZDA4YywgMHgwMTc4LCAweDIwMDEsIDB4MTgwMCwKLQkweDIwMDQsIDB4OTA4NiwgMHgwMDAzLCAweDExNDgsIDB4MDAyNiwgMHgwMDM2LCAweDIwMTEsIDB4ODA0OCwKLQkweDI1MTgsIDB4MDgwYywgMHg0Y2ExLCAweDAwM2UsIDB4MDAyZSwgMHgwMDA1LCAweDAwMzYsIDB4MDA0NiwKLQkweDAwNTYsIDB4MDBmNiwgMHgyMDc5LCAweDAyMDAsIDB4MjAxOSwgMHhmZmZlLCAweDdjMzAsIDB4MDA1MCwKLQkweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDdkNDQsIDB4N2M0MCwKLQkweDIwMTksIDB4ZmZmZiwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwgMHhkMDhjLCAweDAxNjAsIDB4MjAwMSwKLQkweDE4MDAsIDB4MjAwNCwgMHg5MDg2LCAweDAwMDMsIDB4MTEzMCwgMHgwMDI2LCAweDIwMTEsIDB4ODA0OCwKLQkweDA4MGMsIDB4NGNhMSwgMHgwMDJlLCAweDAwZmUsIDB4MDA1ZSwgMHgwMDRlLCAweDAwM2UsIDB4MDAwNSwKLQkweDAwYjYsIDB4MDBjNiwgMHg3MDEwLCAweDkwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwOTYsIDB4MDAwMSwKLQkweDAxMjAsIDB4OTA5NiwgMHgwMDIzLCAweDE5MDQsIDB4ODQ5MCwgMHg5MTg2LCAweDAwMjMsIDB4MTVjMCwKLQkweDA4MGMsIDB4ODc0MiwgMHgwOTA0LCAweDg0OTAsIDB4NjEyMCwgMHg5MTg2LCAweDAwMDEsIDB4MDE1MCwKLQkweDkxODYsIDB4MDAwNCwgMHgwMTM4LCAweDkxODYsIDB4MDAwOCwgMHgwMTIwLCAweDkxODYsIDB4MDAwYSwKLQkweDE5MDQsIDB4ODQ5MCwgMHg3MTI0LCAweDYxMGEsIDB4NzAzMCwgMHg5MDhlLCAweDAyMDAsIDB4MTEzMCwKLQkweDIwMDksIDB4MDAxNSwgMHgwODBjLCAweGIyMGEsIDB4MDgwNCwgMHg4NDkwLCAweDkwOGUsIDB4MDIxNCwKLQkweDAxMTgsIDB4OTA4ZSwgMHgwMjEwLCAweDExMzAsIDB4MjAwOSwgMHgwMDE1LCAweDA4MGMsIDB4YjIwYSwKLQkweDA4MDQsIDB4ODQ5MCwgMHg5MDhlLCAweDAxMDAsIDB4MTkwNCwgMHg4NDkwLCAweDcwMzQsIDB4OTAwNSwKLQkweDE5MDQsIDB4ODQ5MCwgMHgyMDA5LCAweDAwMTYsIDB4MDgwYywgMHhiMjBhLCAweDA4MDQsIDB4ODQ5MCwKLQkweDkxODYsIDB4MDAyMiwgMHgxOTA0LCAweDg0OTAsIDB4NzAzMCwgMHg5MDhlLCAweDAzMDAsIDB4MTU4MCwKLQkweDY4ZGMsIDB4ZDBhNCwgMHgwNTI4LCAweGMwYjUsIDB4NjhkZSwgMHg3MTAwLCAweDkxOGMsIDB4MDBmZiwKLQkweDY5N2UsIDB4NzAwNCwgMHg2ODgyLCAweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDc5ZTYsIDB4NzhlYSwKLQkweDAwMDYsIDB4OTA4NCwgMHgwMGZmLCAweDAwMTYsIDB4MjAwOCwgMHgwODBjLCAweDI2ZDUsIDB4NzkzMiwKLQkweDc5MzYsIDB4MDAxZSwgMHgwMDBlLCAweDAwZmUsIDB4MDgwYywgMHgyNjhjLCAweDY5NWUsIDB4NzAzYywKLQkweDAwZTYsIDB4MjA3MSwgMHgwMTQwLCAweDcwODYsIDB4MjA3MSwgMHgxODAwLCAweDcwYjYsIDB4MDBlZSwKLQkweDcwMzQsIDB4OTAwNSwgMHgxOTA0LCAweDg0OTAsIDB4MjAwOSwgMHgwMDE3LCAweDA4MDQsIDB4ODQ0MCwKLQkweDkwOGUsIDB4MDQwMCwgMHgxMTkwLCAweDcwMzQsIDB4OTAwNSwgMHgxOTA0LCAweDg0OTAsIDB4MDgwYywKLQkweDc3OWUsIDB4MDEyMCwgMHgyMDA5LCAweDAwMWQsIDB4MDgwNCwgMHg4NDQwLCAweDY4ZGMsIDB4YzBhNSwKLQkweDY4ZGUsIDB4MjAwOSwgMHgwMDMwLCAweDA4MDQsIDB4ODQ0MCwgMHg5MDhlLCAweDA1MDAsIDB4MTE0MCwKLQkweDcwMzQsIDB4OTAwNSwgMHgxOTA0LCAweDg0OTAsIDB4MjAwOSwgMHgwMDE4LCAweDA4MDQsIDB4ODQ0MCwKLQkweDkwOGUsIDB4MjAxMCwgMHgxMTIwLCAweDIwMDksIDB4MDAxOSwgMHgwODA0LCAweDg0NDAsIDB4OTA4ZSwKLQkweDIxMTAsIDB4MTEyMCwgMHgyMDA5LCAweDAwMWEsIDB4MDgwNCwgMHg4NDQwLCAweDkwOGUsIDB4NTIwMCwKLQkweDExNDAsIDB4NzAzNCwgMHg5MDA1LCAweDE5MDQsIDB4ODQ5MCwgMHgyMDA5LCAweDAwMWIsIDB4MDgwNCwKLQkweDg0NDAsIDB4OTA4ZSwgMHg1MDAwLCAweDExNDAsIDB4NzAzNCwgMHg5MDA1LCAweDE5MDQsIDB4ODQ5MCwKLQkweDIwMDksIDB4MDAxYywgMHgwODA0LCAweDg0NDAsIDB4OTA4ZSwgMHgxMzAwLCAweDExMjAsIDB4MjAwOSwKLQkweDAwMzQsIDB4MDgwNCwgMHg4NDQwLCAweDkwOGUsIDB4MTIwMCwgMHgxMTQwLCAweDcwMzQsIDB4OTAwNSwKLQkweDE5MDQsIDB4ODQ5MCwgMHgyMDA5LCAweDAwMjQsIDB4MDgwNCwgMHg4NDQwLCAweDkwOGMsIDB4ZmYwMCwKLQkweDkxOGUsIDB4MjQwMCwgMHgxMTcwLCAweDIwMDksIDB4MDAyZCwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwKLQkweGQwOWMsIDB4MDkwNCwgMHg4NDQwLCAweDA4MGMsIDB4ZGQ4ZCwgMHgxOTA0LCAweDg0OTAsIDB4MDgwNCwKLQkweDg0M2UsIDB4OTA4YywgMHhmZjAwLCAweDkxOGUsIDB4NTMwMCwgMHgxMTIwLCAweDIwMDksIDB4MDAyYSwKLQkweDA4MDQsIDB4ODQ0MCwgMHg5MDhlLCAweDBmMDAsIDB4MTEyMCwgMHgyMDA5LCAweDAwMjAsIDB4MDgwNCwKLQkweDg0NDAsIDB4OTA4ZSwgMHg2MTA0LCAweDE1MzAsIDB4MjAyOSwgMHgwMjA1LCAweDIwMTEsIDB4MDI2ZCwKLQkweDgyMDgsIDB4MjIwNCwgMHg5MDgyLCAweDAwMDQsIDB4ODAwNCwgMHg4MDA0LCAweDIwYTgsIDB4MjAxMSwKLQkweDgwMTUsIDB4MjExYywgMHg4MTA4LCAweDAwNDYsIDB4MjEyNCwgMHgwODBjLCAweDRjYTEsIDB4MDA0ZSwKLQkweDgxMDgsIDB4MGYwNCwgMHg4M2Y0LCAweDkxODYsIDB4MDI4MCwgMHgxZDg4LCAweDI1MDQsIDB4ODAwMCwKLQkweDIwMmEsIDB4MjAwOSwgMHgwMjYwLCAweDBjNTgsIDB4MjAyYiwgMHgwMDAwLCAweDIwMDksIDB4MDAyMywKLQkweDA4MDQsIDB4ODQ0MCwgMHg5MDhlLCAweDYwMDAsIDB4MTEyMCwgMHgyMDA5LCAweDAwM2YsIDB4MDgwNCwKLQkweDg0NDAsIDB4OTA4ZSwgMHg1NDAwLCAweDExMzgsIDB4MDgwYywgMHg4ODQwLCAweDE5MDQsIDB4ODQ5MCwKLQkweDIwMDksIDB4MDA0NiwgMHgwNGE4LCAweDkwOGUsIDB4NTUwMCwgMHgxMTQ4LCAweDA4MGMsIDB4ODg2OCwKLQkweDExMTgsIDB4MjAwOSwgMHgwMDQxLCAweDA0NjAsIDB4MjAwOSwgMHgwMDQyLCAweDA0NDgsIDB4OTA4ZSwKLQkweDc4MDAsIDB4MTExOCwgMHgyMDA5LCAweDAwNDUsIDB4MDQxOCwgMHg5MDhlLCAweDEwMDAsIDB4MTExOCwKLQkweDIwMDksIDB4MDA0ZSwgMHgwMGU4LCAweDkwOGUsIDB4NjMwMCwgMHgxMTE4LCAweDIwMDksIDB4MDA0YSwKLQkweDAwYjgsIDB4OTA4YywgMHhmZjAwLCAweDkxOGUsIDB4NTYwMCwgMHgxMTE4LCAweDIwMDksIDB4MDA0ZiwKLQkweDAwNzgsIDB4OTA4YywgMHhmZjAwLCAweDkxOGUsIDB4NTcwMCwgMHgxMTE4LCAweDIwMDksIDB4MDA1MCwKLQkweDAwMzgsIDB4MjAwOSwgMHgwMDFkLCAweDY4MzgsIDB4ZDBkNCwgMHgwMTEwLCAweDIwMDksIDB4MDA0YywKLQkweDAwMTYsIDB4MjAxMSwgMHgwMjYzLCAweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsIDB4MjY4YywKLQkweDE5MDQsIDB4ODQ5MywgMHgwODBjLCAweDY3NDksIDB4MTkwNCwgMHg4NDkzLCAweGJlMTIsIDB4YmQxNiwKLQkweDAwMWUsIDB4MDAxNiwgMHgwODBjLCAweDc3OWUsIDB4MDFjMCwgMHg2OGRjLCAweGQwOGMsIDB4MTE0OCwKLQkweDcwMDAsIDB4OTA4NCwgMHgwMGZmLCAweDExODgsIDB4NzAwNCwgMHg5MDg0LCAweGZmMDAsIDB4MTE2OCwKLQkweDAwNDAsIDB4Njg3YywgMHg5NjA2LCAweDExNDgsIDB4Njg4MCwgMHg5NTA2LCAweDkwODQsIDB4ZmYwMCwKLQkweDExMjAsIDB4OTU4NCwgMHgwMGZmLCAweGI4ODYsIDB4MDA4MCwgMHhiODg0LCAweDkwMDUsIDB4MTE2OCwKLQkweDkxODYsIDB4MDA0NiwgMHgxMTUwLCAweDY4N2MsIDB4OTYwNiwgMHgxMTM4LCAweDY4ODAsIDB4OTUwNiwKLQkweDkwODQsIDB4ZmYwMCwgMHgxMTEwLCAweDAwMWUsIDB4MDA5OCwgMHgwODBjLCAweGIxMTYsIDB4MDFhOCwKLQkweDJiMDgsIDB4NjExMiwgMHg2MDIzLCAweDAwMDQsIDB4NzEyMCwgMHg2MTBhLCAweDAwMWUsIDB4OTE4NiwKLQkweDAwNGMsIDB4MTExMCwgMHg2MDIzLCAweDAwMGEsIDB4MDAxNiwgMHgwMDFlLCAweDA4MGMsIDB4YjIwYSwKLQkweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweDAwMWUsIDB4MGNkOCwgMHgyMDAxLCAweDE4MGUsIDB4MjAwNCwKLQkweGQwZWMsIDB4MDEyMCwgMHgyMDExLCAweDgwNDksIDB4MDgwYywgMHg0Y2ExLCAweDA4MGMsIDB4YjFkZCwKLQkweDBkOTAsIDB4MmIwOCwgMHg2MTEyLCAweDYwMjMsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MDAxZSwKLQkweDAwMTYsIDB4OTE4NiwgMHgwMDE3LCAweDAxMTgsIDB4OTE4NiwgMHgwMDMwLCAweDExMjgsIDB4NjAwNywKLQkweDAwMDksIDB4NjAxNywgMHgyOTAwLCAweDAwMjAsIDB4NjAwNywgMHgwMDUxLCAweDYwMTcsIDB4MDAwMCwKLQkweDYwMmYsIDB4MDAwOSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4YTAsIDB4MDgwYywKLQkweDg4YWYsIDB4MTE1OCwgMHgwODBjLCAweDM0NGMsIDB4MTE0MCwgMHg3MDEwLCAweDkwODQsIDB4ZmYwMCwKLQkweDgwMDcsIDB4OTA4ZSwgMHgwMDA4LCAweDExMDgsIDB4MDAwOSwgMHgwMDA1LCAweDAwYjYsIDB4MDBjNiwKLQkweDAwNDYsIDB4NzAwMCwgMHg5MDhjLCAweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzMsIDB4MTFlOCwKLQkweDA4MGMsIDB4ODc0MiwgMHgwOTA0LCAweDg1MWQsIDB4NzEyNCwgMHg2MTBhLCAweDcwMzAsIDB4OTA4ZSwKLQkweDAyMDAsIDB4MTE0MCwgMHg3MDM0LCAweDkwMDUsIDB4MTVjMCwgMHgyMDA5LCAweDAwMTUsIDB4MDgwYywKLQkweGIyMGEsIDB4MDQ5OCwgMHg5MDhlLCAweDAxMDAsIDB4MTU4MCwgMHg3MDM0LCAweDkwMDUsIDB4MTU2OCwKLQkweDIwMDksIDB4MDAxNiwgMHgwODBjLCAweGIyMGEsIDB4MDQ0MCwgMHg5MTg2LCAweDAwMzIsIDB4MTUyOCwKLQkweDcwMzAsIDB4OTA4ZSwgMHgxNDAwLCAweDE1MDgsIDB4MjAwOSwgMHgwMDM4LCAweDAwMTYsIDB4MjAxMSwKLQkweDAyNjMsIDB4MjIwNCwgMHg4MjExLCAweDIyMGMsIDB4MDgwYywgMHgyNjhjLCAweDExYTgsIDB4MDgwYywKLQkweDY3NDksIDB4MTE5MCwgMHhiZTEyLCAweGJkMTYsIDB4MDgwYywgMHhiMTE2LCAweDAxNjgsIDB4MmIwOCwKLQkweDYxMTIsIDB4MDgwYywgMHhkM2I2LCAweDYwMjMsIDB4MDAwNCwgMHg3MTIwLCAweDYxMGEsIDB4MDAxZSwKLQkweDA4MGMsIDB4YjIwYSwgMHgwMDEwLCAweDAwY2UsIDB4MDAxZSwgMHgwMDRlLCAweDAwY2UsIDB4MDBiZSwKLQkweDAwMDUsIDB4MDBiNiwgMHgwMDQ2LCAweDAwZTYsIDB4MDBkNiwgMHgyMDI4LCAweDIxMzAsIDB4OTY5NiwKLQkweDAwZmYsIDB4MTFiOCwgMHg5NTkyLCAweGZmZmMsIDB4MDJhMCwgMHg5NTk2LCAweGZmZmQsIDB4MTEyMCwKLQkweDIwMDksIDB4MDA3ZiwgMHgwODA0LCAweDg1N2YsIDB4OTU5NiwgMHhmZmZlLCAweDExMjAsIDB4MjAwOSwKLQkweDAwN2UsIDB4MDgwNCwgMHg4NTdmLCAweDk1OTYsIDB4ZmZmYywgMHgxMTE4LCAweDIwMDksIDB4MDA4MCwKLQkweDA0ZjAsIDB4MjAxMSwgMHgwMDAwLCAweDIwMTksIDB4MTgzNywgMHgyMzFjLCAweGQzYWMsIDB4MDEzMCwKLQkweDkwMjYsIDB4MjBhOSwgMHgwODAwLCAweDIwNzEsIDB4MTAwMCwgMHgwMDMwLCAweDIwMjEsIDB4MDA4MSwKLQkweDIwYTksIDB4MDc3ZiwgMHgyMDcxLCAweDEwODEsIDB4MmUxYywgMHg5M2RkLCAweDAwMDAsIDB4MTE0MCwKLQkweDgyZmYsIDB4MTFkMCwgMHg5NDk2LCAweDAwZmYsIDB4MDFiOCwgMHgyNDEwLCAweGMyZmQsIDB4MDBhMCwKLQkweGJmMTAsIDB4MjYwMCwgMHg5NzA2LCAweGI4MTQsIDB4MTEyMCwgMHg5NTQ2LCAweDExMTAsIDB4MjQwOCwKLQkweDAwYjAsIDB4OTc0NSwgMHgxMTQ4LCAweDk0YzYsIDB4MDA3ZSwgMHgwMTMwLCAweDk0YzYsIDB4MDA3ZiwKLQkweDAxMTgsIDB4OTRjNiwgMHgwMDgwLCAweDFkMjAsIDB4ODQyMCwgMHg4ZTcwLCAweDFmMDQsIDB4ODU1NCwKLQkweDgyZmYsIDB4MTExOCwgMHg5MDg1LCAweDAwMDEsIDB4MDAxOCwgMHhjMmZjLCAweDIyMDgsIDB4OTAwNiwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMDRlLCAweDAwYmUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MzcsIDB4MjAwYywKLQkweDkxODQsIDB4MDA4MCwgMHgwMTEwLCAweGQxOGMsIDB4MDEzOCwgMHg3MDAwLCAweDkwOGMsIDB4ZmYwMCwKLQkweDgxMGYsIDB4OTE4NCwgMHgwMDBmLCAweDAwMWEsIDB4NzgxNywgMHgwMTQwLCAweDAwMDUsIDB4ODVhNywKLQkweDg1YTcsIDB4ODVhNywgMHg4NzU0LCAweDg1YTcsIDB4ODVhYSwgMHg4NWNmLCAweDg2NTgsIDB4ODVhNywKLQkweDg1YTcsIDB4ODVhNywgMHg4NWE3LCAweDg1YTcsIDB4ODVhNywgMHg4NWE3LCAweDg1YTcsIDB4NzgxNywKLQkweDAxNDAsIDB4MDAwNSwgMHgwMGI2LCAweDcxMTAsIDB4ZDFiYywgMHgwMWU4LCAweDcxMjAsIDB4MjE2MCwKLQkweDljOGMsIDB4MDAwMywgMHgxMWMwLCAweDljOGEsIDB4MWRkYywgMHgwMmE4LCAweDY4NjgsIDB4OWMwMiwKLQkweDEyOTAsIDB4NzAwOCwgMHg5MDg0LCAweDAwZmYsIDB4NjExMCwgMHgyMTU4LCAweGI5MTAsIDB4OTEwNiwKLQkweDExNTAsIDB4NzAwYywgMHhiOTE0LCAweDkxMDYsIDB4MTEzMCwgMHg3MTI0LCAweDYxMGEsIDB4MjAwOSwKLQkweDAwNDYsIDB4MDgwYywgMHhiMjBhLCAweDc4MTcsIDB4MDE0MCwgMHgwMGJlLCAweDAwMDUsIDB4MDBiNiwKLQkweDAwYzYsIDB4OTQ4NCwgMHgwZmZmLCAweDA5MDQsIDB4ODYzNCwgMHg3MTEwLCAweGQxYmMsIDB4MTkwNCwKLQkweDg2MzQsIDB4NzEwOCwgMHg3MDBjLCAweDIwMjgsIDB4OTE4YywgMHgwMGZmLCAweDIxMzAsIDB4OTA5NCwKLQkweGZmMDAsIDB4MTVjOCwgMHg4MWZmLCAweDE1YjgsIDB4OTA4MCwgMHgzNDhlLCAweDIwMGQsIDB4OTE4YywKLQkweGZmMDAsIDB4ODEwZiwgMHgyMDAxLCAweDAwODAsIDB4OTEwNiwgMHgwOTA0LCAweDg2MzQsIDB4OTE4MiwKLQkweDA4MDEsIDB4MWEwNCwgMHg4NjM0LCAweDkxOTAsIDB4MTAwMCwgMHgyMjA0LCAweDkwNWQsIDB4MDVlMCwKLQkweGJlMTIsIDB4YmQxNiwgMHhiODAwLCAweGQwZWMsIDB4MTViOCwgMHhiYTA0LCAweDkyOTQsIDB4ZmYwMCwKLQkweDkyODYsIDB4MDYwMCwgMHgxMTkwLCAweDA4MGMsIDB4YjExNiwgMHgwNTk4LCAweDJiMDgsIDB4NzAyOCwKLQkweDYwNGUsIDB4NzAyYywgMHg2MDUyLCAweDYxMTIsIDB4NjAyMywgMHgwMDA2LCAweDcxMjAsIDB4NjEwYSwKLQkweDcxMzAsIDB4NjE1ZSwgMHgwODBjLCAweGUwMDksIDB4MDBmOCwgMHgwODBjLCAweDZjMTEsIDB4MTEzOCwKLQkweGI4MDcsIDB4MDYwNiwgMHgwYzQwLCAweDE5MGMsIDB4ODUyMSwgMHgxMWIwLCAweDA4ODAsIDB4MDgwYywKLQkweGIxMTYsIDB4MmIwOCwgMHgwMTg4LCAweDYxMTIsIDB4NjAyMywgMHgwMDA0LCAweDcxMjAsIDB4NjEwYSwKLQkweDkyODYsIDB4MDQwMCwgMHgxMTE4LCAweDYwMDcsIDB4MDAwNSwgMHgwMDEwLCAweDYwMDcsIDB4MDAwMSwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4NzgxNywgMHgwMTQwLCAweDAwY2UsIDB4MDBiZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgxODBlLCAweDIwMDQsIDB4ZDBlYywgMHgwMTIwLCAweDIwMTEsIDB4ODA0OSwKLQkweDA4MGMsIDB4NGNhMSwgMHgwODBjLCAweGIxZGQsIDB4MGQ3OCwgMHgyYjA4LCAweDYxMTIsIDB4NjAyMywKLQkweDAwMDYsIDB4NzEyMCwgMHg2MTBhLCAweDcxMzAsIDB4NjE1ZSwgMHg2MDE3LCAweGYzMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDQxLCAweDIwMDksIDB4YTAyMiwgMHgwODBjLCAweDk2MTcsIDB4MDhlMCwKLQkweDAwYjYsIDB4NzExMCwgMHhkMWJjLCAweDA1ZDAsIDB4NzAyMCwgMHgyMDYwLCAweDljODQsIDB4MDAwMywKLQkweDE1YTgsIDB4OWM4MiwgMHgxZGRjLCAweDA2OTAsIDB4Njg2OCwgMHg5YzAyLCAweDE2NzgsIDB4OTQ4NCwKLQkweDBmZmYsIDB4OTA4MiwgMHgwMDBjLCAweDA2NTAsIDB4NzAwOCwgMHg5MDg0LCAweDAwZmYsIDB4NjExMCwKLQkweDIxNTgsIDB4YjkxMCwgMHg5MTA2LCAweDE1MTAsIDB4NzAwYywgMHhiOTE0LCAweDkxMDYsIDB4MTFmMCwKLQkweDcxMjQsIDB4NjEwYSwgMHg2MDFjLCAweGQwZmMsIDB4MTFjOCwgMHgyMDAxLCAweDAyNzEsIDB4MjAwNCwKLQkweDkwMDUsIDB4MTE4MCwgMHg5NDg0LCAweDBmZmYsIDB4OTA4MiwgMHgwMDBjLCAweDAxNTgsIDB4MDA2NiwKLQkweDIwMzEsIDB4MDEwMCwgMHhhMDAxLCAweGEwMDEsIDB4ODYzMSwgMHgxZGUwLCAweDAwNmUsIDB4NjAxYywKLQkweGQwZmMsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDUsIDB4MDgwYywgMHhiMjBhLCAweDc4MTcsIDB4MDE0MCwKLQkweDAwYmUsIDB4MDAwNSwgMHg2MTIwLCAweDkxODYsIDB4MDAwMiwgMHgwMTI4LCAweDkxODYsIDB4MDAwNSwKLQkweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDgwYywgMHg4OGFmLCAweDExODAsIDB4MDgwYywKLQkweDM0NGMsIDB4MTE2OCwgMHg3MDEwLCAweDkwODQsIDB4ZmYwMCwgMHg4MDA3LCAweDkwODYsIDB4MDAwMCwKLQkweDExMzAsIDB4OTE4NCwgMHgwMDBmLCAweDkwOGEsIDB4MDAwNiwgMHgxMjA4LCAweDAwMGIsIDB4MDAwNSwKLQkweDg2YmUsIDB4ODZiZiwgMHg4NmJlLCAweDg2YmUsIDB4ODcyNCwgMHg4NzMzLCAweDAwMDUsIDB4MDBiNiwKLQkweDcwMGMsIDB4NzEwOCwgMHgwODBjLCAweDI2OGMsIDB4MTkwNCwgMHg4NzIyLCAweDA4MGMsIDB4Njc0OSwKLQkweDE5MDQsIDB4ODcyMiwgMHhiZTEyLCAweGJkMTYsIDB4NzExMCwgMHhkMWJjLCAweDA1NDAsIDB4NzAyYywKLQkweGQwODQsIDB4MTEyMCwgMHhiODAwLCAweGQwYmMsIDB4MTkwNCwgMHg4NzIyLCAweDA4MGMsIDB4NmMxMSwKLQkweDAxNDgsIDB4OTA4NiwgMHgwMDA0LCAweDAxMzAsIDB4MDgwYywgMHg2YzE5LCAweDAxMTgsIDB4OTA4NiwKLQkweDAwMDQsIDB4MTU4OCwgMHgwMGM2LCAweDA4MGMsIDB4ODc0MiwgMHgwMGNlLCAweDA1ZDgsIDB4MDgwYywKLQkweGIxMTYsIDB4MmIwOCwgMHgwNWI4LCAweDYxMTIsIDB4MDgwYywgMHhkM2I2LCAweDYwMjMsIDB4MDAwMiwKLQkweDcxMjAsIDB4NjEwYSwgMHgyMDA5LCAweDAwODgsIDB4MDgwYywgMHhiMjBhLCAweDA0NTgsIDB4MDgwYywKLQkweDZjMTEsIDB4MDE0OCwgMHg5MDg2LCAweDAwMDQsIDB4MDEzMCwgMHgwODBjLCAweDZjMTksIDB4MDExOCwKLQkweDkwODYsIDB4MDAwNCwgMHgxMTgwLCAweDA4MGMsIDB4YjExNiwgMHgyYjA4LCAweDAxZDgsIDB4NjExMiwKLQkweDA4MGMsIDB4ZDNiNiwgMHg2MDIzLCAweDAwMDUsIDB4NzEyMCwgMHg2MTBhLCAweDIwMDksIDB4MDA4OCwKLQkweDA4MGMsIDB4YjIwYSwgMHgwMDc4LCAweDA4MGMsIDB4YjExNiwgMHgyYjA4LCAweDAxNTgsIDB4NjExMiwKLQkweDA4MGMsIDB4ZDNiNiwgMHg2MDIzLCAweDAwMDQsIDB4NzEyMCwgMHg2MTBhLCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4YjIwYSwgMHgwMGJlLCAweDAwMDUsIDB4NzExMCwgMHhkMWJjLCAweDAxNTgsIDB4MDBkMSwKLQkweDAxNDgsIDB4MDgwYywgMHg4NjlhLCAweDExMzAsIDB4NzEyNCwgMHg2MTBhLCAweDIwMDksIDB4MDA4OSwKLQkweDA4MGMsIDB4YjIwYSwgMHgwMDA1LCAweDcxMTAsIDB4ZDFiYywgMHgwMTU4LCAweDAwNTksIDB4MDE0OCwKLQkweDA4MGMsIDB4ODY5YSwgMHgxMTMwLCAweDcxMjQsIDB4NjEwYSwgMHgyMDA5LCAweDAwOGEsIDB4MDgwYywKLQkweGIyMGEsIDB4MDAwNSwgMHg3MDIwLCAweDIwNjAsIDB4OWM4NCwgMHgwMDAzLCAweDExNTgsIDB4OWM4MiwKLQkweDFkZGMsIDB4MDI0MCwgMHgyMDAxLCAweDE4MWEsIDB4MjAwNCwgMHg5YzAyLCAweDEyMTgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHg5MDA2LCAweDBjZTgsIDB4MDBiNiwgMHg3MTEwLCAweGQxYmMsIDB4MTFkOCwKLQkweDcwMjQsIDB4MjA2MCwgMHg5Yzg0LCAweDAwMDMsIDB4MTFiMCwgMHg5YzgyLCAweDFkZGMsIDB4MDI5OCwKLQkweDY4NjgsIDB4OWMwMiwgMHgxMjgwLCAweDcwMDgsIDB4OTA4NCwgMHgwMGZmLCAweDYxMTAsIDB4MjE1OCwKLQkweGI5MTAsIDB4OTEwNiwgMHgxMTQwLCAweDcwMGMsIDB4YjkxNCwgMHg5MTA2LCAweDExMjAsIDB4MjAwOSwKLQkweDAwNTEsIDB4MDgwYywgMHhiMjBhLCAweDc4MTcsIDB4MDE0MCwgMHgwMGJlLCAweDAwMDUsIDB4MjAzMSwKLQkweDAxMDUsIDB4MDA2OSwgMHgwMDA1LCAweDIwMzEsIDB4MDIwNiwgMHgwMDQ5LCAweDAwMDUsIDB4MjAzMSwKLQkweDAyMDcsIDB4MDAyOSwgMHgwMDA1LCAweDIwMzEsIDB4MDIxMywgMHgwMDA5LCAweDAwMDUsIDB4MDBjNiwKLQkweDAwOTYsIDB4MDBmNiwgMHg3MDAwLCAweDkwODQsIDB4ZjAwMCwgMHg5MDg2LCAweGMwMDAsIDB4MDVjMCwKLQkweDA4MGMsIDB4YjExNiwgMHgwNWE4LCAweDAwNjYsIDB4MDBjNiwgMHgwMDQ2LCAweDIwMTEsIDB4MDI2MywKLQkweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsIDB4MjY4YywgMHgxNTkwLCAweDA4MGMsIDB4Njc0OSwKLQkweDE1NzgsIDB4YmUxMiwgMHhiZDE2LCAweDJiMDAsIDB4MDA0ZSwgMHgwMGNlLCAweDYwMTIsIDB4MDgwYywKLQkweGQzYjYsIDB4MDgwYywgMHgxMDU5LCAweDA1MDAsIDB4MjkwMCwgMHg2MDYyLCAweDkwMDYsIDB4YTgwMiwKLQkweGE4NjYsIDB4YWM2YSwgMHhhODVjLCAweDkwZjgsIDB4MDAxYiwgMHgyMGE5LCAweDAwMGUsIDB4YTg2MCwKLQkweDIwZTgsIDB4MjBlMSwgMHgwMDAwLCAweDJmYTAsIDB4MmU5OCwgMHg0MDAzLCAweDAwNmUsIDB4NjYxNiwKLQkweDYwMDcsIDB4MDAzZSwgMHg2MDIzLCAweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTYxZSwKLQkweDAwZmUsIDB4MDA5ZSwgMHgwMGNlLCAweDAwMDUsIDB4MDgwYywgMHhiMTZjLCAweDAwNmUsIDB4MGNjMCwKLQkweDAwNGUsIDB4MDBjZSwgMHgwY2M4LCAweDAwYzYsIDB4NzAwMCwgMHg5MDhjLCAweGZmMDAsIDB4OTE4NCwKLQkweGYwMDAsIDB4ODEwZiwgMHg5MDg2LCAweDIwMDAsIDB4MTkwNCwgMHg4ODJhLCAweDkxODYsIDB4MDAyMiwKLQkweDE1ZjAsIDB4MjAwMSwgMHgwMTExLCAweDIwMDQsIDB4OTAwNSwgMHgxOTA0LCAweDg4MmMsIDB4NzAzMCwKLQkweDkwOGUsIDB4MDQwMCwgMHgwOTA0LCAweDg4MmMsIDB4OTA4ZSwgMHg2MDAwLCAweDA1ZTgsIDB4OTA4ZSwKLQkweDU0MDAsIDB4MDVkMCwgMHg5MDhlLCAweDAzMDAsIDB4MTFkOCwgMHgyMDA5LCAweDE4MzcsIDB4MjEwYywKLQkweGQxOGMsIDB4MTU5MCwgMHhkMWE0LCAweDE1ODAsIDB4MDgwYywgMHg2YmNmLCAweDA1ODgsIDB4NjhiMCwKLQkweDkwODQsIDB4MDBmZiwgMHg3MTAwLCAweDkxOGMsIDB4MDBmZiwgMHg5MTA2LCAweDE1MTgsIDB4Njg4MCwKLQkweDY5YjAsIDB4OTE4YywgMHhmZjAwLCAweDkxMDUsIDB4NzEwNCwgMHg5MTA2LCAweDExZDgsIDB4MDBlMCwKLQkweDIwMDksIDB4MDEwMywgMHgyMTBjLCAweGQxYjQsIDB4MTFhOCwgMHg5MDhlLCAweDUyMDAsIDB4MDllOCwKLQkweDkwOGUsIDB4MDUwMCwgMHgwOWQwLCAweDkwOGUsIDB4NTAwMCwgMHgwOWI4LCAweDAwNTgsIDB4OTE4NiwKLQkweDAwMjMsIDB4MTE0MCwgMHgwODBjLCAweDg3NDIsIDB4MDEyOCwgMHg2MDA0LCAweDkwODYsIDB4MDAwMiwKLQkweDAxMTgsIDB4MDAwMCwgMHg5MDA2LCAweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDAwNSwKLQkweDcwMzAsIDB4OTA4ZSwgMHgwMzAwLCAweDAxMTgsIDB4OTA4ZSwgMHg1MjAwLCAweDFkOTgsIDB4MjAwMSwKLQkweDE4MzcsIDB4MjAwNCwgMHg5MDg0LCAweDAwMDksIDB4OTA4NiwgMHgwMDA4LCAweDBkNjgsIDB4MGM1MCwKLQkweDAxNTYsIDB4MDA0NiwgMHgwMDE2LCAweDAwMzYsIDB4NzAzOCwgMHgyMDIwLCAweDg0MjcsIDB4OTRhNCwKLQkweDAwMDcsIDB4ZDQ4NCwgMHgwMTQ4LCAweDIwYTksIDB4MDAwNCwgMHgyMDE5LCAweDE4MDUsIDB4MjAxMSwKLQkweDAyN2EsIDB4MDgwYywgMHhjMjBlLCAweDExNzgsIDB4ZDQ4YywgMHgwMTQ4LCAweDIwYTksIDB4MDAwNCwKLQkweDIwMTksIDB4MTgwMSwgMHgyMDExLCAweDAyN2UsIDB4MDgwYywgMHhjMjBlLCAweDExMjAsIDB4ZDQ5NCwKLQkweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwM2UsIDB4MDAxZSwgMHgwMDRlLCAweDAxNWUsIDB4MDAwNSwKLQkweDAxNTYsIDB4MDA0NiwgMHgwMDE2LCAweDAwMzYsIDB4NzAzOCwgMHgyMDIwLCAweDg0MjcsIDB4OTRhNCwKLQkweDAwMDcsIDB4ZDQ4NCwgMHgwMTQ4LCAweDIwYTksIDB4MDAwNCwgMHgyMDE5LCAweDE4MDUsIDB4MjAxMSwKLQkweDAyNzIsIDB4MDgwYywgMHhjMjBlLCAweDExNzgsIDB4ZDQ4YywgMHgwMTQ4LCAweDIwYTksIDB4MDAwNCwKLQkweDIwMTksIDB4MTgwMSwgMHgyMDExLCAweDAyNzYsIDB4MDgwYywgMHhjMjBlLCAweDExMjAsIDB4ZDQ5NCwKLQkweDAxMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwM2UsIDB4MDAxZSwgMHgwMDRlLCAweDAxNWUsIDB4MDAwNSwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc4MDAsIDB4YzBlNSwgMHhjMGNjLCAweDc4MDIsIDB4MDBmZSwKLQkweDAwMDUsIDB4MDBmNiwgMHgyMDc5LCAweDE4MDAsIDB4NzgzNCwgMHhkMDg0LCAweDExMzAsIDB4MjA3OSwKLQkweDAyMDAsIDB4NzgwMCwgMHg5MDg1LCAweDEyMDAsIDB4NzgwMiwgMHgwMGZlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4MTgwMCwgMHg3MDM0LCAweGMwODQsIDB4NzAzNiwgMHgwMGVlLCAweDAwMDUsIDB4MDAxNiwKLQkweDIwMDEsIDB4MTgzNywgMHgyMDBjLCAweDkxODQsIDB4MDA4MCwgMHgwMTE4LCAweGQxOGMsIDB4MDExOCwKLQkweDkwMDYsIDB4MDAxZSwgMHgwMDA1LCAweDkwODUsIDB4MDAwMSwgMHgwY2Q4LCAweDIwNzEsIDB4MWEwNCwKLQkweDcwMDMsIDB4MDAwMywgMHg3MDBmLCAweDAzNjEsIDB4OTAwNiwgMHg3MDFhLCAweDcwN2EsIDB4NzAxMiwKLQkweDcwMTcsIDB4MWRkYywgMHg3MDA3LCAweDAwMDAsIDB4NzAyNiwgMHg3MDJiLCAweGEyYzAsIDB4NzAzMiwKLQkweDcwMzcsIDB4YTMzZCwgMHg3MDQ3LCAweGZmZmYsIDB4NzA0YSwgMHg3MDRmLCAweDU2YzQsIDB4NzA1MiwKLQkweDcwNjMsIDB4OGE2NiwgMHgwODBjLCAweDEwNzIsIDB4MDkwYywgMHgwZDg1LCAweDI5MDAsIDB4NzA0MiwKLQkweGE4NjcsIDB4MDAwMywgMHhhODZmLCAweDAxMDAsIDB4YThhYiwgMHhkY2IwLCAweDAwMDUsIDB4MjA3MSwKLQkweDFhMDQsIDB4MWQwNCwgMHg4OTgyLCAweDIwOTEsIDB4NjAwMCwgMHg3MDBjLCAweDgwMDEsIDB4NzAwZSwKLQkweDE1OTAsIDB4MjAwMSwgMHgwMTNjLCAweDIwMDQsIDB4OTAwNSwgMHgxOTBjLCAweDhiMTAsIDB4MjAwMSwKLQkweDE4NjksIDB4MjAwNCwgMHhkMGM0LCAweDAxNTgsIDB4M2EwMCwgMHhkMDhjLCAweDExNDAsIDB4MjBkMSwKLQkweDAwMDAsIDB4MjBkMSwgMHgwMDAxLCAweDIwZDEsIDB4MDAwMCwgMHgwODBjLCAweDBkODUsIDB4NzAwZiwKLQkweDAzNjEsIDB4NzAwNywgMHgwMDAxLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNjksIDB4MTgwMCwKLQkweDY5ZWMsIDB4ZDFlNCwgMHgxMTM4LCAweGQxZGMsIDB4MTExOCwgMHgwODBjLCAweDhhZDQsIDB4MDAxMCwKLQkweDA4MGMsIDB4OGFhYiwgMHg3MDQ4LCAweDkwMGQsIDB4MDE0OCwgMHg4MTA5LCAweDcxNGEsIDB4MTEzMCwKLQkweDcwNGMsIDB4MDgwZiwgMHgwMDE4LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMjQsIDB4OTAwZCwKLQkweDAxODgsIDB4NzAyMCwgMHg4MDAxLCAweDcwMjIsIDB4MTE2OCwgMHg3MDIzLCAweDAwMDksIDB4ODEwOSwKLQkweDcxMjYsIDB4OTE4NiwgMHgwM2U4LCAweDExMTAsIDB4NzAyOCwgMHgwODBmLCAweDgxZmYsIDB4MTExMCwKLQkweDcwMjgsIDB4MDgwZiwgMHg3MDMwLCAweDkwMGQsIDB4MDE4MCwgMHg3MDJjLCAweDgwMDEsIDB4NzAyZSwKLQkweDExNjAsIDB4NzAyZiwgMHgwMDA5LCAweDgxMDksIDB4NzEzMiwgMHgwMTI4LCAweDkxODQsIDB4MDA3ZiwKLQkweDA5MGMsIDB4YTNlYiwgMHgwMDEwLCAweDcwMzQsIDB4MDgwZiwgMHg3MDQ0LCAweDkwMDUsIDB4MDExOCwKLQkweDAzMTAsIDB4ODAwMSwgMHg3MDQ2LCAweDcwNTQsIDB4OTAwZCwgMHgwMTY4LCAweDcwNTAsIDB4ODAwMSwKLQkweDcwNTIsIDB4MTE0OCwgMHg3MDUzLCAweDAwMDksIDB4ODEwOSwgMHg3MTU2LCAweDExMjAsIDB4NzE1OCwKLQkweDcxNTYsIDB4NzA2MCwgMHgwODBmLCAweDcwMTgsIDB4OTAwZCwgMHgwMWQ4LCAweDAwMTYsIDB4NzA3OCwKLQkweDkwMGQsIDB4MDE1OCwgMHg3MDc0LCAweDgwMDEsIDB4NzA3NiwgMHgxMTM4LCAweDcwNzcsIDB4MDAwOSwKLQkweDgxMDksIDB4NzE3YSwgMHgxMTEwLCAweDcwN2MsIDB4MDgwZiwgMHgwMDFlLCAweDcwMDgsIDB4ODAwMSwKLQkweDcwMGEsIDB4MTEzOCwgMHg3MDBiLCAweDAwMDksIDB4ODEwOSwgMHg3MTFhLCAweDExMTAsIDB4NzAxYywKLQkweDA4MGYsIDB4MDEyZSwgMHg3MDA0LCAweDAwMDIsIDB4ODlhYSwgMHg4OWFiLCAweDg5ZDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4MWEwNCwgMHg3MDE4LCAweDkwMDUsIDB4MTEyMCwgMHg3MTFhLCAweDcyMWUsIDB4NzAwYiwKLQkweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDAwZTYsIDB4MDAwNiwgMHgyMDcxLCAweDFhMDQsIDB4NzAxYywKLQkweDkyMDYsIDB4MTEyMCwgMHg3MDFhLCAweDcwMWUsIDB4NzA3YSwgMHg3MDdlLCAweDAwMGUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweDFhMDQsIDB4Yjg4OCwgMHg5MTAyLCAweDAyMDgsIDB4Yjk4YSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMDA1LCAweDAwYjYsIDB4MjAzMSwgMHgwMDEwLCAweDcxMTAsIDB4MDgwYywKLQkweDY3YjQsIDB4MTFhOCwgMHhiODg4LCAweDgwMDEsIDB4MDI5MCwgMHhiODhhLCAweDExODAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwMDY2LCAweGI4ZDAsIDB4OTAwNSwgMHgwMTM4LCAweDAwMjYsIDB4YmEzYywKLQkweDAwMTYsIDB4MDgwYywgMHg2OGRmLCAweDAwMWUsIDB4MDAyZSwgMHgwMDZlLCAweDAxMmUsIDB4ODEwOCwKLQkweDkxODIsIDB4MDgwMCwgMHgxMjIwLCAweDg2MzEsIDB4MDEyOCwgMHg3MTEyLCAweDBjMDAsIDB4OTAwZSwKLQkweDcwMDcsIDB4MDAwMiwgMHg3MTEyLCAweDAwYmUsIDB4MDAwNSwgMHgyMDMxLCAweDAwMTAsIDB4NzAxNCwKLQkweDIwNjAsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjA0OCwgMHg5MDA1LCAweDAxMjgsIDB4ODAwMSwKLQkweDYwNGEsIDB4MTExMCwgMHgwODBjLCAweGQyMzcsIDB4NjAxOCwgMHg5MDA1LCAweDA5MDQsIDB4OGEyZCwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMzAwLCAweDc5MTgsIDB4ZDFiNCwgMHgxOTA0LCAweDhhNDAsIDB4NzgxYiwKLQkweDIwMjAsIDB4YTAwMSwgMHg3OTE4LCAweGQxYjQsIDB4MDEyMCwgMHg3ODFiLCAweDIwMDAsIDB4MDgwNCwKLQkweDhhNDAsIDB4ODAwMSwgMHg2MDFhLCAweDAxMDYsIDB4NzgxYiwgMHgyMDAwLCAweGEwMDEsIDB4NzkxOCwKLQkweGQxYWMsIDB4MWRkMCwgMHgwMTBlLCAweDAwZmUsIDB4MTU0MCwgMHg2MTIwLCAweDkxODYsIDB4MDAwMywKLQkweDAxNDgsIDB4OTE4NiwgMHgwMDA2LCAweDAxMzAsIDB4OTE4NiwgMHgwMDA5LCAweDExZTAsIDB4NjExYywKLQkweGQxYzQsIDB4MTEwMCwgMHgwODBjLCAweGNmMWIsIDB4MDFiMCwgMHg2MDE0LCAweDIwNDgsIDB4YTg4NCwKLQkweDkwOGEsIDB4MTk5YSwgMHgwMjgwLCAweDkwODIsIDB4MTk5OSwgMHhhODg2LCAweDkwOGEsIDB4MTk5YSwKLQkweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsIDB4ODAwYiwgMHg4MTBiLCAweDkxMDgsIDB4NjExYSwKLQkweDA4MGMsIDB4ZDY3MSwgMHgwMTEwLCAweDA4MGMsIDB4Y2JkOSwgMHgwMTJlLCAweDljODgsIDB4MDAxYywKLQkweDcxMTYsIDB4MjAwMSwgMHgxODFhLCAweDIwMDQsIDB4OTEwMiwgMHgxMjI4LCAweDg2MzEsIDB4MDEzOCwKLQkweDIxNjAsIDB4MDgwNCwgMHg4OWQ5LCAweDcwMTcsIDB4MWRkYywgMHg3MDA3LCAweDAwMDAsIDB4MDAwNSwKLQkweDAwZmUsIDB4MGM1OCwgMHgwMGU2LCAweDIwNzEsIDB4MWEwNCwgMHg3MDI3LCAweDA3ZDAsIDB4NzAyMywKLQkweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDIwMDEsIDB4MWEwZCwgMHgyMDAzLCAweDAwMDAsIDB4MDAwNSwKLQkweDAwZTYsIDB4MjA3MSwgMHgxYTA0LCAweDcxMzIsIDB4NzAyZiwgMHgwMDA5LCAweDAwZWUsIDB4MDAwNSwKLQkweDIwMTEsIDB4MWExMCwgMHgyMDEzLCAweDAwMDAsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MWEwNCwKLQkweDcxMWEsIDB4NzIxZSwgMHg3MDBiLCAweDAwMDksIDB4MDBlZSwgMHgwMDA1LCAweDAwODYsIDB4MDAyNiwKLQkweDcwNWMsIDB4ODAwMCwgMHg3MDVlLCAweDIwMDEsIDB4MWExNCwgMHgyMDQ0LCAweGEwNmMsIDB4OTA4NiwKLQkweDAwMDAsIDB4MDE1MCwgMHg3MDcwLCAweGEwOWEsIDB4NzA2YywgMHhhMDk2LCAweDcwNjgsIDB4YTA5MiwKLQkweDcwNjQsIDB4YTA4ZSwgMHgwODBjLCAweDExNGUsIDB4MDAyZSwgMHgwMDhlLCAweDAwMDUsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDA5NiwgMHgwMGE2LCAweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwKLQkweDAxNTYsIDB4MDgwYywgMHg4OGU3LCAweDAxNWUsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwYmUsIDB4MDBhZSwgMHgwMDllLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweDFhMDQsIDB4NzE3YSwgMHg3MjdlLCAweDcwNzcsIDB4MDAwOSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwKLQkweDAwMDYsIDB4MjA3MSwgMHgxYTA0LCAweDcwN2MsIDB4OTIwNiwgMHgxMTEwLCAweDcwN2EsIDB4NzA3ZSwKLQkweDAwMGUsIDB4MDBlZSwgMHgwMDA1LCAweDIwNjksIDB4MTgwMCwgMHg2OWVjLCAweGQxZTQsIDB4MTUxOCwKLQkweDAwMjYsIDB4ZDFlYywgMHgwMTQwLCAweDZhNTQsIDB4Njg3NCwgMHg5MjAyLCAweDAyODgsIDB4ODExNywKLQkweDkyOTQsIDB4MDBjMSwgMHgwMDg4LCAweDkxODQsIDB4MDAwNywgMHgwMWEwLCAweDgxMDksIDB4OTE4NCwKLQkweDAwMDcsIDB4MDExMCwgMHg2OWVlLCAweDAwNzAsIDB4ODEwNywgMHg5MDg0LCAweDAwMDcsIDB4OTEwZCwKLQkweDgxMDcsIDB4OTEwNiwgMHg5MDk0LCAweDAwYzEsIDB4OTE4NCwgMHhmZjNlLCAweDkyMDUsIDB4NjhlZSwKLQkweDA4MGMsIDB4MGYyNCwgMHgwMDJlLCAweDAwMDUsIDB4NjllOCwgMHg5MTg0LCAweDAwM2YsIDB4MDViOCwKLQkweDgxMDksIDB4OTE4NCwgMHgwMDNmLCAweDAxYTgsIDB4NmE1NCwgMHg2ODc0LCAweDkyMDIsIDB4MDIyMCwKLQkweGQxYmMsIDB4MDE2OCwgMHhjMWJjLCAweDAwMTgsIDB4ZDFiYywgMHgxMTQ4LCAweGMxYmQsIDB4MjExMCwKLQkweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsIDB4MGY0NiwgMHgwMGVlLCAweDA0MDAsIDB4NjllYSwKLQkweDAwZjAsIDB4MDAyNiwgMHg4MTA3LCAweDkwOTQsIDB4MDAwNywgMHgwMTI4LCAweDgwMDEsIDB4ODAwNywKLQkweDkwODUsIDB4MDAwNywgMHgwMDUwLCAweDIwMTAsIDB4ODAwNCwgMHg4MDA0LCAweDgwMDQsIDB4OTA4NCwKLQkweDAwMDcsIDB4OTIwNSwgMHg4MDA3LCAweDkwODUsIDB4MDAyOCwgMHg5MDg2LCAweDAwNDAsIDB4MjAxMCwKLQkweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDA4MGMsIDB4MGY0NiwgMHgwMGVlLCAweDAwMmUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBjNiwgMHgyMDA5LCAweGZmZjQsIDB4MjEwZCwgMHgyMDYxLCAweDAxMDAsIDB4NjBmMCwKLQkweDkxMDAsIDB4NjBmMywgMHgwMDAwLCAweDIwMDksIDB4ZmZmNCwgMHgyMDBmLCAweDEyMjAsIDB4ODEwOCwKLQkweDIxMDUsIDB4ODAwMCwgMHgyMDBmLCAweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDAwYzYsIDB4MjA2MSwKLQkweDFhNzMsIDB4MDBjZSwgMHgwMDA1LCAweDkxODQsIDB4MDAwZiwgMHg4MDAzLCAweDgwMDMsIDB4ODAwMywKLQkweDkwODAsIDB4MWE3MywgMHgyMDYwLCAweDAwMDUsIDB4YTg4NCwgMHg5MDhhLCAweDE5OWEsIDB4MTYzOCwKLQkweDkwMDUsIDB4MTE1MCwgMHgwMGM2LCAweDIwNjEsIDB4MWE3MywgMHg2MDE0LCAweDAwY2UsIDB4OTAwNSwKLQkweDExMzAsIDB4MjAwMSwgMHgwMDFlLCAweDAwMTgsIDB4OTA4ZSwgMHhmZmZmLCAweDAxYjAsIDB4ODAwMywKLQkweDgwMGIsIDB4ODEwYiwgMHg5MTA4LCAweDYxMWEsIDB4YTg3YywgMHg5MDhjLCAweDAwYzAsIDB4OTE4ZSwKLQkweDAwYzAsIDB4MDkwNCwgMHg4YmVlLCAweGQwYjQsIDB4MTE2OCwgMHhkMGJjLCAweDE5MDQsIDB4OGJjNywKLQkweDIwMDksIDB4MDAwNiwgMHgwODBjLCAweDhjMWIsIDB4MDAwNSwgMHg5MDBlLCAweDBjNjAsIDB4MjAwMSwKLQkweDE5OTksIDB4MDhiMCwgMHhkMGZjLCAweDA1ZTAsIDB4OTA4YywgMHgyMDIzLCAweDE1NjgsIDB4ODdmZiwKLQkweDE1NTgsIDB4YTlhOCwgMHg4MWZmLCAweDE1NDAsIDB4NjEyNCwgMHg5MThjLCAweDA1MDAsIDB4MTUyMCwKLQkweDYxMDAsIDB4OTE4ZSwgMHgwMDA3LCAweDE1MDAsIDB4MjAwOSwgMHgxODY5LCAweDIxMGMsIDB4ZDE4NCwKLQkweDExZDgsIDB4NjAwMywgMHgwMDAzLCAweDYwMDcsIDB4MDA0MywgMHg2MDQ3LCAweGIwMzUsIDB4MDgwYywKLQkweDFjNmYsIDB4YTg3YywgMHhjMGRkLCAweGE4N2UsIDB4NjAwZiwgMHgwMDAwLCAweDAwZjYsIDB4MjA3OSwKLQkweDAzODAsIDB4NzgxOCwgMHhkMGJjLCAweDFkZTgsIDB4NzgzMywgMHgwMDEzLCAweDJjMDAsIDB4NzgzNiwKLQkweDc4MWIsIDB4ODA4MCwgMHgwMGZlLCAweDAwMDUsIDB4OTA4YywgMHgwMDAzLCAweDAxMjAsIDB4OTE4ZSwKLQkweDAwMDMsIDB4MTkwNCwgMHg4YzE1LCAweDkwOGMsIDB4MjAyMCwgMHg5MThlLCAweDIwMjAsIDB4MDFhOCwKLQkweDYwMjQsIDB4ZDBkNCwgMHgxMWU4LCAweDIwMDksIDB4MTg2OSwgMHgyMTA0LCAweGQwODQsIDB4MTEzOCwKLQkweDg3ZmYsIDB4MTEyMCwgMHgyMDA5LCAweDAwNDMsIDB4MDgwNCwgMHhiMjBhLCAweDAwMDUsIDB4ODdmZiwKLQkweDFkZTgsIDB4MjAwOSwgMHgwMDQyLCAweDA4MDQsIDB4YjIwYSwgMHg2MTEwLCAweDAwYjYsIDB4MjE1OCwKLQkweGI5MDAsIDB4MDBiZSwgMHhkMWFjLCAweDBkMjAsIDB4NjAyNCwgMHhjMGNkLCAweDYwMjYsIDB4MGMwMCwKLQkweGMwZDQsIDB4NjAyNiwgMHhhODkwLCAweDYwMmUsIDB4YTg4YywgMHg2MDMyLCAweDA4ZTAsIDB4ZDBmYywKLQkweDAxNjAsIDB4OTA4YywgMHgwMDAzLCAweDAxMjAsIDB4OTE4ZSwgMHgwMDAzLCAweDE5MDQsIDB4OGMxNSwKLQkweDkwOGMsIDB4MjAyMCwgMHg5MThlLCAweDIwMjAsIDB4MDE3MCwgMHgwMDc2LCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4MTdhZCwgMHgwMGZlLCAweDAwN2UsIDB4ODdmZiwgMHgxMTIwLCAweDIwMDksIDB4MDA0MiwKLQkweDA4MGMsIDB4YjIwYSwgMHgwMDA1LCAweDYxMTAsIDB4MDBiNiwgMHgyMTU4LCAweGI5MDAsIDB4MDBiZSwKLQkweGQxYWMsIDB4MGQ1OCwgMHg2MTI0LCAweGMxY2QsIDB4NjEyNiwgMHgwYzM4LCAweGQwZmMsIDB4MDE4OCwKLQkweDkwOGMsIDB4MjAyMCwgMHg5MThlLCAweDIwMjAsIDB4MDFhOCwgMHg5MDg0LCAweDAwMDMsIDB4OTA4ZSwKLQkweDAwMDIsIDB4MDE0OCwgMHg4N2ZmLCAweDExMjAsIDB4MjAwOSwgMHgwMDQxLCAweDA4MGMsIDB4YjIwYSwKLQkweDAwMDUsIDB4MDBiOSwgMHgwY2U4LCAweDg3ZmYsIDB4MWRkOCwgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywKLQkweGIyMGEsIDB4MGNiMCwgMHg2MTEwLCAweDAwYjYsIDB4MjE1OCwgMHhiOTAwLCAweDAwYmUsIDB4ZDFhYywKLQkweDBkMjAsIDB4NjEyNCwgMHhjMWNkLCAweDYxMjYsIDB4MGMwMCwgMHgyMDA5LCAweDAwMDQsIDB4MDAxOSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMDAxLCAweDAwOTYsIDB4MDgwYywgMHhjZjFiLCAweDA1MTgsIDB4NjAxNCwKLQkweDIwNDgsIDB4YTk4MiwgMHhhODAwLCAweDYwMTYsIDB4OTE4NiwgMHgwMDAxLCAweDExODgsIDB4YTk3YywKLQkweDkxOGMsIDB4ODEwMCwgMHg5MThlLCAweDgxMDAsIDB4MTE1OCwgMHgwMGM2LCAweDIwNjEsIDB4MWE3MywKLQkweDYyMDAsIDB4ZDI4YywgMHgxMTIwLCAweDYyMDQsIDB4ODIxMCwgMHgwMjA4LCAweDYyMDYsIDB4MDBjZSwKLQkweDA4MGMsIDB4NmU0YywgMHg2MDE0LCAweDkwNGQsIDB4MDA3NiwgMHgyMDM5LCAweDAwMDAsIDB4MTkwYywKLQkweDhiMzQsIDB4MDA3ZSwgMHgwMDllLCAweDAwMDUsIDB4MDE1NiwgMHgwMGM2LCAweDIwNjEsIDB4MWE3MywKLQkweDYwMDAsIDB4ODFmZiwgMHgwMTEwLCAweDkyMDUsIDB4MDAwOCwgMHg5MjA0LCAweDYwMDIsIDB4MDBjZSwKLQkweDAxNWUsIDB4MDAwNSwgMHg2ODAwLCAweGQwOGMsIDB4MTEzOCwgMHg2ODA4LCAweDkwMDUsIDB4MDEyMCwKLQkweDgwMDEsIDB4NjgwYSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgyMDcxLCAweDE5MjQsIDB4NzAwMywKLQkweDAwMDYsIDB4NzAwNywgMHgwMDAwLCAweDcwMGYsIDB4MDAwMCwgMHg3MDEzLCAweDAwMDEsIDB4MDgwYywKLQkweDEwNzIsIDB4MDkwYywgMHgwZDg1LCAweGE4NjcsIDB4MDAwNiwgMHhhODZiLCAweDAwMDEsIDB4YThhYiwKLQkweGRjYjAsIDB4YTg5ZiwgMHgwMDAwLCAweDI5MDAsIDB4NzAyZSwgMHg3MDMzLCAweDAwMDAsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwOTYsIDB4MDBlNiwgMHgyMDcxLCAweDE5MjQsIDB4NzAyYywKLQkweDIwNDgsIDB4NmEyYywgMHg3MjFlLCAweDZiMzAsIDB4NzMyMiwgMHg2ODM0LCAweDcwMjYsIDB4YTg5NiwKLQkweDY4MzgsIDB4NzAyYSwgMHhhODlhLCAweDY4MjQsIDB4NzAxNiwgMHg2ODNjLCAweDcwMWEsIDB4MjAwOSwKLQkweDAwMjgsIDB4MjAwYSwgMHg5MDA1LCAweDAxNDgsIDB4OTAwZSwgMHg5MTg4LCAweDAwMGMsIDB4ODAwMSwKLQkweDFkZTAsIDB4MjEwMCwgMHg5MjEwLCAweDEyMDgsIDB4ODMxOCwgMHhhYThlLCAweGFiOTIsIDB4NzAxMCwKLQkweGQwODQsIDB4MDE2OCwgMHhjMDg0LCAweDcwMDcsIDB4MDAwMSwgMHg3MDBmLCAweDAwMDAsIDB4MDAwNiwKLQkweDIwMDksIDB4MWI3MywgMHgyMTA0LCAweDkwODIsIDB4MDAwNywgMHgyMDBhLCAweDAwMGUsIDB4YzA5NSwKLQkweDcwMTIsIDB4MjAwOCwgMHgyMDAxLCAweDAwM2IsIDB4MDgwYywgMHgxNmI5LCAweDkwMDYsIDB4MjA3MSwKLQkweDE5M2QsIDB4NzAwMiwgMHg3MDA2LCAweDcwMmEsIDB4MDBlZSwgMHgwMDllLCAweDAxMmUsIDB4MDAwNSwKLQkweDIwMDksIDB4MWI3MywgMHgyMTA0LCAweDkwODAsIDB4MDAwNywgMHgyMDBhLCAweDAwMDUsIDB4MDBlNiwKLQkweDAxMjYsIDB4MDE1NiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwgMHgxODAwLCAweDcxNTQsIDB4MjAwMSwKLQkweDAwMDgsIDB4OTEwYSwgMHgwNjM4LCAweDIwMDEsIDB4MTg3ZCwgMHgyMGFjLCAweDkwMDYsIDB4OTA4MCwKLQkweDAwMDgsIDB4MWYwNCwgMHg4Y2Q3LCAweDcxYzAsIDB4OTEwMiwgMHgwMmUwLCAweDIwNzEsIDB4MTg3NywKLQkweDIwYTksIDB4MDAwNywgMHgwMGM2LCAweDA4MGMsIDB4YjExNiwgMHg2MDIzLCAweDAwMDksIDB4NjAwMywKLQkweDAwMDQsIDB4NjAxZiwgMHgwMTAxLCAweDAwODksIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywKLQkweDhlNTgsIDB4MDEyZSwgMHgxZjA0LCAweDhjZTMsIDB4OTAwNiwgMHgwMGNlLCAweDAxNWUsIDB4MDEyZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsIDB4MGNjOCwgMHgwMGU2LCAweDAwYjYsIDB4MDA5NiwKLQkweDAwODYsIDB4MDA1NiwgMHgwMDQ2LCAweDAwMjYsIDB4NzExOCwgMHg3MjBjLCAweDc2MjAsIDB4NzAwNCwKLQkweGQwODQsIDB4MTEyOCwgMHgyMDIxLCAweDAwMjQsIDB4MjAyOSwgMHgwMDAyLCAweDAwMjAsIDB4MjAyMSwKLQkweDAwMmMsIDB4MjAyOSwgMHgwMDBhLCAweDA4MGMsIDB4MTA1OSwgMHgwOTBjLCAweDBkODUsIDB4MjkwMCwKLQkweDYwMTYsIDB4MjA1OCwgMHhhYzY2LCAweDkwMDYsIDB4YTgwMiwgMHhhODA2LCAweGE4NmEsIDB4YTg3YSwKLQkweGE4YWEsIDB4YTg4NywgMHgwMDA1LCAweGE4N2YsIDB4MDAyMCwgMHg3MDA4LCAweGE4OWEsIDB4NzAxMCwKLQkweGE4OWUsIDB4YWU4YSwgMHhhOGFmLCAweGZmZmYsIDB4YThiMywgMHgwMDAwLCAweDgxMDksIDB4MDE2MCwKLQkweDA4MGMsIDB4MTA1OSwgMHgwOTBjLCAweDBkODUsIDB4YWQ2NiwgMHgyYjAwLCAweGE4MDIsIDB4MjkwMCwKLQkweGI4MDYsIDB4MjA1OCwgMHg4MTA5LCAweDFkYTAsIDB4MDAyZSwgMHgwMDRlLCAweDAwNWUsIDB4MDA4ZSwKLQkweDAwOWUsIDB4MDBiZSwgMHgwMGVlLCAweDAwMDUsIDB4MjA3OSwgMHgwMDAwLCAweDIwNzEsIDB4MTkyNCwKLQkweDcwMDQsIDB4MDA0YiwgMHg3MDBjLCAweDAwMDIsIDB4OGQ0ZiwgMHg4ZDQ4LCAweDhkNDgsIDB4MDAwNSwKLQkweDhkNTksIDB4OGRhZiwgMHg4ZGFmLCAweDhkYWYsIDB4OGRiMCwgMHg4ZGMxLCAweDhkYzEsIDB4NzAwYywKLQkweDBjYmEsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NzhhMCwgMHg3OWEwLCAweDkxMDYsIDB4MTkwNCwKLQkweDhkYTEsIDB4NzgxNCwgMHhkMGJjLCAweDE5MDQsIDB4OGRhYSwgMHgwMTJlLCAweDcwMTgsIDB4OTEwYSwKLQkweDExMjgsIDB4NzAzMCwgMHg5MDA1LCAweDE5MDQsIDB4OGRmMywgMHgwMDA1LCAweDEyMTAsIDB4NzExNCwKLQkweDkxMGEsIDB4OTE5MiwgMHgwMDBhLCAweDAyMTAsIDB4MjAwOSwgMHgwMDBhLCAweDIwMDEsIDB4MTg4OCwKLQkweDIwMTQsIDB4MjAwMSwgMHgxOTM2LCAweDIwMDQsIDB4OTEwMCwgMHg5MjAyLCAweDBlNTAsIDB4MDgwYywKLQkweDhmNTMsIDB4MjIwMCwgMHg5MTAyLCAweDAyMDgsIDB4MjIwOCwgMHgwMDk2LCAweDcwMmMsIDB4MjA0OCwKLQkweGE4NzMsIDB4MDAwMSwgMHhhOTc2LCAweDA4MGMsIDB4OTA1YywgMHgyMTAwLCAweGE4N2UsIDB4YTg2ZiwKLQkweDAwMDAsIDB4MDA5ZSwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweDFhMjQsIDB4MjEwNCwKLQkweGMwODUsIDB4MjAwYSwgMHg3MDBmLCAweDAwMDIsIDB4MDEyZSwgMHgwODBjLCAweDExNmQsIDB4MWRlOCwKLQkweDAwMDUsIDB4NzhhMCwgMHg3OWEwLCAweDkxMDYsIDB4MDkwNCwgMHg4ZDYxLCAweDA4MGMsIDB4OGYyYiwKLQkweDAxMmUsIDB4MDAwNSwgMHg3ODEwLCAweGMwYzUsIDB4NzgxMiwgMHgwODA0LCAweDhkNjEsIDB4MDAwNSwKLQkweDcwMGMsIDB4MDAwMiwgMHg4ZGI1LCAweDhkYjgsIDB4OGRiNywgMHgwODBjLCAweDhkNTcsIDB4MDAwNSwKLQkweDgwMDEsIDB4NzAwZSwgMHgwMDk2LCAweDcwMmMsIDB4MjA0OCwgMHhhOTc0LCAweDAwOWUsIDB4MDAxMSwKLQkweDBjYTAsIDB4MDAwNSwgMHgwMDk2LCAweDcwMmMsIDB4MjA0OCwgMHg3MDE4LCAweDkxMDAsIDB4NzIxNCwKLQkweDkyMWEsIDB4MTEzMCwgMHg3MDFjLCAweGE4OGUsIDB4NzAyMCwgMHhhODkyLCAweDkwMDYsIDB4MDA2OCwKLQkweDAwMDYsIDB4MDgwYywgMHg5MDVjLCAweDIxMDAsIDB4YWE4YywgMHg5MjEwLCAweGFhOGUsIDB4MTIyMCwKLQkweGE4OTAsIDB4OTA4MSwgMHgwMDAwLCAweGE4OTIsIDB4MDAwZSwgMHgwMDllLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzhhMiwgMHg3MDFhLCAweDA4MGMsIDB4OGYyYiwgMHgwMTJlLCAweDAwMDUsIDB4MDBlNiwKLQkweDIwNzEsIDB4MTkyNCwgMHg3MDBjLCAweDAwMDIsIDB4OGRmMSwgMHg4ZGYxLCAweDhkZWYsIDB4NzAwZiwKLQkweDAwMDEsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDcwMzAsIDB4OTAwNSwKLQkweDA1MDgsIDB4MjA3OCwgMHg3ODE0LCAweDIwNDgsIDB4YWU4OCwgMHgwMGI2LCAweDIwNTksIDB4MDAwMCwKLQkweDA4MGMsIDB4OGU2MSwgMHgwMGJlLCAweDAxYjAsIDB4MDBlNiwgMHgyMDcxLCAweDE5M2QsIDB4MDgwYywKLQkweDhlYTgsIDB4MDBlZSwgMHgwMTc4LCAweDAwOTYsIDB4MDgwYywgMHgxMDcyLCAweDI5MDAsIDB4MDA5ZSwKLQkweDAxNDgsIDB4YThhYSwgMHgwNGQxLCAweDAwNDEsIDB4MjAwMSwgMHgxOTQ3LCAweDIwMDMsIDB4MDAwMCwKLQkweDAxMmUsIDB4MDhjOCwgMHgwMTJlLCAweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDAwODYsIDB4MDBhNiwKLQkweDI5NDAsIDB4MjY1MCwgMHgyNjAwLCAweDkwMDUsIDB4MDE4MCwgMHhhODY0LCAweDkwODQsIDB4MDAwZiwKLQkweDIwNjgsIDB4OWQ4OCwgMHgxZWMxLCAweDIxNjUsIDB4MDA1NiwgMHgyMDI5LCAweDAwMDAsIDB4MDgwYywKLQkweDhmZTEsIDB4MDgwYywgMHgxZTk3LCAweDFkZDgsIDB4MDA1ZSwgMHgwMGFlLCAweDIwMDEsIDB4MTg3ZiwKLQkweDIwMDQsIDB4YTg4YSwgMHgwMGM2LCAweDJmNjAsIDB4MDgwYywgMHgxN2FkLCAweDAwY2UsIDB4NzgxZiwKLQkweDAxMDEsIDB4NzgxMywgMHgwMDAwLCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4OGViNywKLQkweDAxMmUsIDB4MDA4ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHg3MDMwLCAweDkwMDUsIDB4MDEzOCwKLQkweDIwNzgsIDB4NzgwYywgMHg3MDMyLCAweDIwMDEsIDB4MTk0NywgMHgyMDAzLCAweDAwMDEsIDB4MDAwNSwKLQkweDAwZTYsIDB4MjA3MSwgMHgxOTI0LCAweDcwMzAsIDB4NjAwZSwgMHgyYzAwLCAweDcwMzIsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBkNiwgMHgwMGM2LCAweDAwMjYsIDB4OWI4MCwgMHg5MTJhLCAweDIwMDUsIDB4OTA2ZCwKLQkweDA5MGMsIDB4MGQ4NSwgMHg5YjgwLCAweDkxMjIsIDB4MjAwNSwgMHg5MDY1LCAweDA5MGMsIDB4MGQ4NSwKLQkweDYxMTQsIDB4MjYwMCwgMHg5MTAyLCAweDAyNDgsIDB4NjgyOCwgMHg5MTAyLCAweDAyZjAsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAyZSwgMHgwMGNlLCAweDAwZGUsIDB4MDAwNSwgMHg2ODA0LCAweGQwOTQsIDB4MDE0OCwKLQkweDY4NTQsIDB4ZDA4NCwgMHgxMTc4LCAweGMwODUsIDB4Njg1NiwgMHgyMDExLCAweDgwMjYsIDB4MDgwYywKLQkweDRjYTEsIDB4Njg0YywgMHgwMDk2LCAweDkwNGQsIDB4MDkwYywgMHgwZDg1LCAweGE4MDQsIDB4ODAwMCwKLQkweGE4MDYsIDB4MDA5ZSwgMHg5MDA2LCAweDIwMzAsIDB4MGMyMCwgMHg2ODU0LCAweGQwOGMsIDB4MWQwOCwKLQkweGMwOGQsIDB4Njg1NiwgMHgyMDExLCAweDgwMjUsIDB4MDgwYywgMHg0Y2ExLCAweDY4NGMsIDB4MDA5NiwKLQkweDkwNGQsIDB4MDkwYywgMHgwZDg1LCAweGE4MDAsIDB4ODAwMCwgMHhhODAyLCAweDAwOWUsIDB4MDg4OCwKLQkweDcwMDAsIDB4MjAxOSwgMHgwMDA4LCAweDgzMTksIDB4NzEwNCwgMHg5MTAyLCAweDExMTgsIDB4MjMwMCwKLQkweDkwMDUsIDB4MDAyMCwgMHgwMjEwLCAweDkzMDIsIDB4MDAwOCwgMHg4MDAyLCAweDAwMDUsIDB4MDBkNiwKLQkweDc4MTQsIDB4OTAwNSwgMHgwOTBjLCAweDBkODUsIDB4NzgxYywgMHg5MDg0LCAweDAxMDEsIDB4OTA4NiwKLQkweDAxMDEsIDB4MTkwYywgMHgwZDg1LCAweDc4MjcsIDB4MDAwMCwgMHgyMDY5LCAweDE5M2QsIDB4NjgwNCwKLQkweDkwODAsIDB4MTkzZiwgMHgyZjA4LCAweDIxMDIsIDB4NjkwNCwgMHg4MTA4LCAweDkxODIsIDB4MDAwOCwKLQkweDAyMDgsIDB4OTAwZSwgMHg2OTA2LCAweDkxODAsIDB4MTkzZiwgMHgyMDAzLCAweDAwMDAsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDA5NiwgMHgwMGM2LCAweDIwNjAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4YTgsIDB4MDA5NiwKLQkweDIwNDgsIDB4OTAwNSwgMHgxOTBjLCAweDEwOGIsIDB4MDA5ZSwgMHhhOGFiLCAweDAwMDAsIDB4MDgwYywKLQkweDEwMGIsIDB4MDgwYywgMHhiMTZjLCAweDAwY2UsIDB4MDA5ZSwgMHgwMDA1LCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDksIDB4MTEyOCwgMHg2MDFjLCAweGQwYzQsIDB4MDExMCwgMHg5MDA2LCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHg2MDAwLCAweDkwODYsIDB4MDAwMCwgMHgwMTc4LCAweDYwMTAsIDB4OTAwNSwKLQkweDAxNTAsIDB4MDBiNiwgMHgyMDU4LCAweDA4MGMsIDB4OTI1ZSwgMHgwMGJlLCAweDYwMTMsIDB4MDAwMCwKLQkweDYwMWIsIDB4MDAwMCwgMHgwMDEwLCAweDJjMDAsIDB4MDg2MSwgMHgwMDA1LCAweDIwMDksIDB4MTkyOCwKLQkweDIxMGMsIDB4ZDE5NCwgMHgwMDA1LCAweDIwMDksIDB4MTkyOCwgMHgyMTBjLCAweGQxYzQsIDB4MDAwNSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwZTYsIDB4MjA3MSwgMHgxOTI0LCAweDcxMTAsIDB4YzE5NCwKLQkweGMxODUsIDB4NzAwNywgMHgwMDAwLCAweDcxMTIsIDB4MjAwMSwgMHgwMDNiLCAweDA4MGMsIDB4MTZiOSwKLQkweDAwZWUsIDB4MDEyZSwgMHgwMDA1LCAweDc4MTQsIDB4ZDBiYywgMHgxMTA4LCAweDAwMDUsIDB4NzgxMCwKLQkweGMwYzUsIDB4NzgxMiwgMHgwY2MwLCAweDAwOTYsIDB4MDBkNiwgMHg5MDA2LCAweDcwMDYsIDB4NzAwZSwKLQkweDcwMWEsIDB4NzAxZSwgMHg3MDIyLCAweDcwMTYsIDB4NzAyYSwgMHg3MDI2LCAweDcwMmYsIDB4MDAwMCwKLQkweDA4MGMsIDB4OTBhYSwgMHgwMTcwLCAweDA4MGMsIDB4OTBkZiwgMHgwMTU4LCAweDI5MDAsIDB4NzAwMiwKLQkweDcwMGEsIDB4NzAxYSwgMHg3MDEzLCAweDAwMDEsIDB4NzAxZiwgMHgwMDBhLCAweDAwZGUsIDB4MDA5ZSwKLQkweDAwMDUsIDB4OTAwZSwgMHgwY2Q4LCAweDAwZTYsIDB4MDA5NiwgMHgwMDg2LCAweDAwZDYsIDB4MDBjNiwKLQkweDIwNzEsIDB4MTkzMSwgMHg3MjFjLCAweDIxMDAsIDB4OTIwMiwgMHgxNjE4LCAweDA4MGMsIDB4OTBkZiwKLQkweDA5MGMsIDB4MGQ4NSwgMHg3MDE4LCAweDkwMDUsIDB4MTE2MCwgMHgyOTAwLCAweDcwMDIsIDB4NzAwYSwKLQkweDcwMWEsIDB4OTAwNiwgMHg3MDA2LCAweDcwMGUsIDB4YTgwNiwgMHhhODAyLCAweDcwMTIsIDB4NzAxZSwKLQkweDAwMzgsIDB4MjA0MCwgMHhhODA2LCAweDI5MDAsIDB4YTAwMiwgMHg3MDFhLCAweGE4MDMsIDB4MDAwMCwKLQkweDcwMTAsIDB4ODAwMCwgMHg3MDEyLCAweDcwMWMsIDB4OTA4MCwgMHgwMDBhLCAweDcwMWUsIDB4NzIxYywKLQkweDA4ZDAsIDB4NzIxYywgMHgwMGNlLCAweDAwZGUsIDB4MDA4ZSwgMHgwMDllLCAweDAwZWUsIDB4MDAwNSwKLQkweDAwOTYsIDB4MDE1NiwgMHgwMTM2LCAweDAxNDYsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwNzEsIDB4MTkzMSwgMHg3MzAwLCAweDgzMWYsIDB4ODMxZSwgMHg4MzFlLCAweDkzODQsIDB4MDAzZiwKLQkweDIwZTgsIDB4OTM5YywgMHhmZmMwLCAweDkzOTgsIDB4MDAwMywgMHg3MTA0LCAweDA4MGMsIDB4OTA1YywKLQkweDgxMGMsIDB4MjEwMCwgMHg5MzE4LCAweDgwMDMsIDB4MjIyOCwgMHgyMDIxLCAweDAwNzgsIDB4OTQwMiwKLQkweDk1MzIsIDB4MDIwOCwgMHgyMDI4LCAweDI1MDAsIDB4ODAwNCwgMHgyMGE4LCAweDIzYTAsIDB4YTAwMSwKLQkweGEwMDEsIDB4NDAwNSwgMHgyNTA4LCAweDA4MGMsIDB4OTA2NSwgMHgyMTMwLCAweDcwMTQsIDB4OTYwMCwKLQkweDcwMTYsIDB4MjYwMCwgMHg3MTFjLCAweDkxMDIsIDB4NzAxZSwgMHg3MDA0LCAweDk2MDAsIDB4MjAwOCwKLQkweDkwODIsIDB4MDAwYSwgMHgxMTkwLCAweDcwMDAsIDB4MjA0OCwgMHhhODAwLCAweDkwMDUsIDB4MTE0OCwKLQkweDIwMDksIDB4MDAwMSwgMHgwMDI2LCAweDA4MGMsIDB4OGY1MywgMHgwMDJlLCAweDcwMDAsIDB4MjA0OCwKLQkweGE4MDAsIDB4NzAwMiwgMHg3MDA3LCAweDAwMDAsIDB4MDAwOCwgMHg3MTA2LCAweDI1MDAsIDB4OTIxMiwKLQkweDE5MDQsIDB4OGY5MiwgMHgwMTJlLCAweDAwZWUsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDA5ZSwKLQkweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwZTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4OTU4MCwKLQkweDkxMjIsIDB4MjAwNSwgMHg5MDc1LCAweDA5MGMsIDB4MGQ4NSwgMHgwODBjLCAweDkwMzcsIDB4MDEyZSwKLQkweDk1ODAsIDB4OTExZSwgMHgyMDA1LCAweDkwNzUsIDB4MDkwYywgMHgwZDg1LCAweDAxNTYsIDB4MDEzNiwKLQkweDAxYzYsIDB4MDE0NiwgMHgwMWQ2LCAweDgzMWYsIDB4ODMxZSwgMHg4MzFlLCAweDkzODQsIDB4MDAzZiwKLQkweDIwZTAsIDB4OTM4NCwgMHhmZmMwLCAweDkxMDAsIDB4MjA5OCwgMHhhODYwLCAweDIwZTgsIDB4YTk1YywKLQkweDJjMDUsIDB4OTEwMCwgMHgyMGEwLCAweDIwYTksIDB4MDAwMiwgMHg0MDAzLCAweDJlMGMsIDB4MmQwMCwKLQkweDAwMDIsIDB4OTAyMSwgMHg5MDIxLCAweDkwMjMsIDB4OTAyMSwgMHg5MDIzLCAweDkwMjEsIDB4OTAyMSwKLQkweDkwMjEsIDB4OTAyMSwgMHg5MDIxLCAweDkwMjksIDB4OTAyMSwgMHg5MDI5LCAweDkwMjEsIDB4OTAyMSwKLQkweDkwMjEsIDB4MDgwYywgMHgwZDg1LCAweDQxMDQsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDIsIDB4NDAwMywKLQkweDAwMjgsIDB4MjBhOSwgMHgwMDAyLCAweDQwMDMsIDB4NDEwNCwgMHg0MDAzLCAweDAxZGUsIDB4MDE0ZSwKLQkweDAxY2UsIDB4MDEzZSwgMHgwMTVlLCAweDAwZWUsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDA5NiwKLQkweDcwMTQsIDB4ODAwMSwgMHg3MDE2LCAweDcxMGMsIDB4MjExMCwgMHgwMGYxLCAweDgxMGMsIDB4OTE4OCwKLQkweDAwMDMsIDB4NzMwOCwgMHg4MjEwLCAweDkyODIsIDB4MDAwYSwgMHgxMTk4LCAweDcwMDgsIDB4MjA0OCwKLQkweGE4MDAsIDB4OTAwNSwgMHgwMTU4LCAweDAwMDYsIDB4MDgwYywgMHg5MGVlLCAweDAwOWUsIDB4YTgwNywKLQkweDAwMDAsIDB4MjkwMCwgMHg3MDBhLCAweDcwMTAsIDB4ODAwMSwgMHg3MDEyLCAweDcwMGYsIDB4MDAwMCwKLQkweDAwMDgsIDB4NzIwZSwgMHgwMDllLCAweDAwMDUsIDB4MDAwNiwgMHg4MTBiLCAweDgxMGIsIDB4MjEwMCwKLQkweDgxMGIsIDB4OTEwMCwgMHgyMDA4LCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwMjYsIDB4MjEwMCwKLQkweDkwMDUsIDB4MDE1OCwgMHg5MDkyLCAweDAwMGMsIDB4MDI0MCwgMHg5MDBlLCAweDgxMDgsIDB4OTA4MiwKLQkweDAwMGMsIDB4MWRlMCwgMHgwMDJlLCAweDAwMGUsIDB4MDAwNSwgMHg5MDBlLCAweDBjZDgsIDB4MmQwMCwKLQkweDkwYjgsIDB4MDAwOCwgMHgyMDMxLCAweDkwYTgsIDB4OTAxZSwgMHg2ODA4LCAweDkwMDUsIDB4MDEwOCwKLQkweDgzMTgsIDB4NjkwYywgMHg5MTBhLCAweDAyNDgsIDB4MDE0MCwgMHg4MzE4LCAweDY4MTAsIDB4OTExMiwKLQkweDAyMjAsIDB4MDExOCwgMHg4MzE4LCAweDIyMDgsIDB4MGNkMCwgMHgyMzNhLCAweDY4MDQsIDB4ZDA4NCwKLQkweDIzMDAsIDB4MjAyMSwgMHgwMDAxLCAweDExNTAsIDB4OTA4MiwgMHgwMDAzLCAweDA5NjcsIDB4MGE2NywKLQkweDg0MjAsIDB4OTA4MiwgMHgwMDA3LCAweDA5NjcsIDB4MGE2NywgMHgwY2QwLCAweDkwODIsIDB4MDAwMiwKLQkweDA5NjcsIDB4MGE2NywgMHg4NDIwLCAweDkwODIsIDB4MDAwNSwgMHgwOTY3LCAweDBhNjcsIDB4MGNkMCwKLQkweDZjMWEsIDB4MDAwNSwgMHgwMDk2LCAweDAwNDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MmIwMCwKLQkweDkwODAsIDB4OTEyNiwgMHgyMDA1LCAweDkwMDUsIDB4MDkwYywgMHgwZDg1LCAweDIwMDQsIDB4OTBhMCwKLQkweDAwMGEsIDB4MDgwYywgMHgxMDcyLCAweDAxZDAsIDB4MjkwMCwgMHg3MDI2LCAweGE4MDMsIDB4MDAwMCwKLQkweGE4MDcsIDB4MDAwMCwgMHgwODBjLCAweDEwNzIsIDB4MDE4OCwgMHg3MDI0LCAweGE4MDIsIDB4YTgwNywKLQkweDAwMDAsIDB4MjkwMCwgMHg3MDI2LCAweDk0YTIsIDB4MDAwYSwgMHgwMTEwLCAweDAyMDgsIDB4MGM5MCwKLQkweDkwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwNGUsIDB4MDA5ZSwgMHgwMDA1LCAweDcwMjQsIDB4OTAwNSwKLQkweDBkYzgsIDB4MjA0OCwgMHhhYzAwLCAweDA4MGMsIDB4MTA4YiwgMHgyNDAwLCAweDBjYzAsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHg3MDI0LCAweDIwNDgsIDB4OTAwNSwgMHgwMTMwLCAweGE4MDAsIDB4NzAyNiwKLQkweGE4MDMsIDB4MDAwMCwgMHhhODA3LCAweDAwMDAsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4NzAyNCwgMHhhODAyLCAweDI5MDAsIDB4NzAyNiwgMHgwMTJlLCAweDAwMDUsIDB4MDA5NiwKLQkweDllODAsIDB4MDAwOSwgMHgyMDA0LCAweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4MDAsIDB4MDAwNiwKLQkweDA4MGMsIDB4MTA4YiwgMHgwMDBlLCAweDBjYjgsIDB4MDA5ZSwgMHgwMDA1LCAweDAwOTYsIDB4NzAwOCwKLQkweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4MDAsIDB4MDAwNiwgMHgwODBjLCAweDEwOGIsIDB4MDAwZSwKLQkweDBjYjgsIDB4OTAwNiwgMHg3MDAyLCAweDcwMGEsIDB4NzAwNiwgMHg3MDBlLCAweDcwMWEsIDB4NzAxZSwKLQkweDcwMjIsIDB4NzAyYSwgMHg3MDI2LCAweDcwMmUsIDB4MDA5ZSwgMHgwMDA1LCAweDFhNzEsIDB4MDAwMCwKLQkweDAwMDAsIDB4MDAwMCwgMHgxOTMxLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDE4ODgsIDB4MDAwMCwKLQkweDAwMDAsIDB4MDAwMCwgMHgxODc3LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwZTYsIDB4MDBjNiwKLQkweDAwYjYsIDB4MDBhNiwgMHhhOGE4LCAweDIwNDAsIDB4MjA3MSwgMHgxODc3LCAweDA4MGMsIDB4OTI0YSwKLQkweGEwNjcsIDB4MDAyMywgMHg2MDEwLCAweDkwNWQsIDB4MDkwNCwgMHg5MjFmLCAweGI4MTQsIDB4YTA2ZSwKLQkweGI5MTAsIDB4YTE3MiwgMHhiOWEwLCAweGExNzYsIDB4MjAwMSwgMHgwMDAzLCAweGEwN2UsIDB4YTgzNCwKLQkweGEwODIsIDB4YTA3YiwgMHgwMDAwLCAweGE4OTgsIDB4OTAwNSwgMHgwMTE4LCAweGEwNzgsIDB4YzA4NSwKLQkweGEwN2EsIDB4Mjg1OCwgMHgyMDMxLCAweDAwMTgsIDB4YTA2OCwgMHg5MDhhLCAweDAwMTksIDB4MWEwYywKLQkweDBkODUsIDB4MjAyMCwgMHgyMDUwLCAweDI5NDAsIDB4YTg2NCwgMHg5MGJjLCAweDAwZmYsIDB4OTA4YywKLQkweDAwMGYsIDB4OTFlMCwgMHgxZWMxLCAweDJjNjUsIDB4OTc4NiwgMHgwMDI0LCAweDJjMDUsIDB4MTU5MCwKLQkweDkwOGEsIDB4MDAzNiwgMHgxYTBjLCAweDBkODUsIDB4OTA4MiwgMHgwMDFiLCAweDAwMDIsIDB4OTE4YSwKLQkweDkxOGEsIDB4OTE4YywgMHg5MThhLCAweDkxOGEsIDB4OTE4YSwgMHg5MThlLCAweDkxOGEsIDB4OTE4YSwKLQkweDkxOGEsIDB4OTE5MCwgMHg5MThhLCAweDkxOGEsIDB4OTE4YSwgMHg5MTkyLCAweDkxOGEsIDB4OTE4YSwKLQkweDkxOGEsIDB4OTE5NCwgMHg5MThhLCAweDkxOGEsIDB4OTE4YSwgMHg5MTk2LCAweDkxOGEsIDB4OTE4YSwKLQkweDkxOGEsIDB4OTE5OCwgMHgwODBjLCAweDBkODUsIDB4YTE4MCwgMHgwNGI4LCAweGExOTAsIDB4MDRhOCwKLQkweGExYTAsIDB4MDQ5OCwgMHhhMWIwLCAweDA0ODgsIDB4YTFjMCwgMHgwNDc4LCAweGExZDAsIDB4MDQ2OCwKLQkweGExZTAsIDB4MDQ1OCwgMHg5MDhhLCAweDAwMzQsIDB4MWEwYywgMHgwZDg1LCAweDkwODIsIDB4MDAxYiwKLQkweDAwMDIsIDB4OTFiYywgMHg5MWJhLCAweDkxYmEsIDB4OTFiYSwgMHg5MWJhLCAweDkxYmEsIDB4OTFiZSwKLQkweDkxYmEsIDB4OTFiYSwgMHg5MWJhLCAweDkxYmEsIDB4OTFiYSwgMHg5MWMwLCAweDkxYmEsIDB4OTFiYSwKLQkweDkxYmEsIDB4OTFiYSwgMHg5MWJhLCAweDkxYzIsIDB4OTFiYSwgMHg5MWJhLCAweDkxYmEsIDB4OTFiYSwKLQkweDkxYmEsIDB4OTFjNCwgMHgwODBjLCAweDBkODUsIDB4YTE4MCwgMHgwMDM4LCAweGExOTgsIDB4MDAyOCwKLQkweGExYjAsIDB4MDAxOCwgMHhhMWM4LCAweDAwMDgsIDB4YTFlMCwgMHgyNjAwLCAweDAwMDIsIDB4OTFlMCwKLQkweDkxZTIsIDB4OTFlNCwgMHg5MWU2LCAweDkxZTgsIDB4OTFlYSwgMHg5MWVjLCAweDkxZWUsIDB4OTFmMCwKLQkweDkxZjIsIDB4OTFmNCwgMHg5MWY2LCAweDkxZjgsIDB4OTFmYSwgMHg5MWZjLCAweDkxZmUsIDB4OTIwMCwKLQkweDkyMDIsIDB4OTIwNCwgMHg5MjA2LCAweDkyMDgsIDB4OTIwYSwgMHg5MjBjLCAweDkyMGUsIDB4OTIxMCwKLQkweDA4MGMsIDB4MGQ4NSwgMHhiOWUyLCAweDA0NjgsIDB4YjlkZSwgMHgwNDU4LCAweGI5ZGEsIDB4MDQ0OCwKLQkweGI5ZDYsIDB4MDQzOCwgMHhiOWQyLCAweDA0MjgsIDB4YjljZSwgMHgwNDE4LCAweGI5Y2EsIDB4MDQwOCwKLQkweGI5YzYsIDB4MDBmOCwgMHhiOWMyLCAweDAwZTgsIDB4YjliZSwgMHgwMGQ4LCAweGI5YmEsIDB4MDBjOCwKLQkweGI5YjYsIDB4MDBiOCwgMHhiOWIyLCAweDAwYTgsIDB4YjlhZSwgMHgwMDk4LCAweGI5YWEsIDB4MDA4OCwKLQkweGI5YTYsIDB4MDA3OCwgMHhiOWEyLCAweDAwNjgsIDB4Yjk5ZSwgMHgwMDU4LCAweGI5OWEsIDB4MDA0OCwKLQkweGI5OTYsIDB4MDAzOCwgMHhiOTkyLCAweDAwMjgsIDB4Yjk4ZSwgMHgwMDE4LCAweGI5OGEsIDB4MDAwOCwKLQkweGI5ODYsIDB4ODYzMSwgMHg4NDIxLCAweDAxMzAsIDB4MDgwYywgMHgxZTk3LCAweDA5MGMsIDB4MGQ4NSwKLQkweDA4MDQsIDB4OTE2NCwgMHgwMGFlLCAweDAwYmUsIDB4MDBjZSwgMHgwMGVlLCAweDAwMDUsIDB4YTg2YywKLQkweGEwNmUsIDB4YTg3MCwgMHhhMDcyLCAweGEwNzcsIDB4MDBmZiwgMHg5MDA2LCAweDA4MDQsIDB4OTE0NiwKLQkweDAwMDYsIDB4MDAxNiwgMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwgMHhiODEwLCAweDkwMDUsIDB4MDFiMCwKLQkweDIwMDEsIDB4MTkyNSwgMHgyMDA0LCAweDkwMDUsIDB4MDE4OCwgMHgyMDAxLCAweDE4MDAsIDB4MjAwNCwKLQkweDkwODYsIDB4MDAwMywgMHgxMTU4LCAweDAwMzYsIDB4MDA0NiwgMHhiYmEwLCAweDIwMjEsIDB4MDAwNCwKLQkweDIwMTEsIDB4ODAxNCwgMHgwODBjLCAweDRjYTEsIDB4MDA0ZSwgMHgwMDNlLCAweDAwYmUsIDB4MDAxZSwKLQkweDAwMGUsIDB4MDAwNSwgMHg5MDE2LCAweDcxMGMsIDB4YTgzNCwgMHg5MTBhLCAweGE5MzYsIDB4NzAwOCwKLQkweDkwMDUsIDB4MDEyMCwgMHg4MjEwLCAweDkxMGEsIDB4MDIzMCwgMHgwMTI4LCAweDcwMTAsIDB4ODIxMCwKLQkweDkxMGEsIDB4MDIwOCwgMHgxZGUwLCAweGFhOGEsIDB4YTI2YSwgMHgwMDA1LCAweDAwZjYsIDB4MDBkNiwKLQkweDAwMzYsIDB4MjA3OSwgMHgwMzAwLCAweDc4MWIsIDB4MDIwMCwgMHg3ODE4LCAweGQwOTQsIDB4MWRkOCwKLQkweDc4MWIsIDB4MDIwMiwgMHhhMDAxLCAweGEwMDEsIDB4NzgxOCwgMHhkMDk0LCAweDFkYTAsIDB4YjhhYywKLQkweDkwNmQsIDB4MDE5OCwgMHgyMDc5LCAweDAwMDAsIDB4OWMxZSwgMHgxMTE4LCAweDY4MGMsIDB4YjhhZSwKLQkweDAwNTAsIDB4OWMwNiwgMHgwMTMwLCAweDJkNzgsIDB4NjgwYywgMHg5MDZkLCAweDFkZDAsIDB4MDgwYywKLQkweDBkODUsIDB4NmIwYywgMHg3YjBlLCAweDYwMGYsIDB4MDAwMCwgMHgyMDc5LCAweDAzMDAsIDB4NzgxYiwKLQkweDAyMDAsIDB4MDAzZSwgMHgwMGRlLCAweDAwZmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZDYsIDB4MDA5NiwKLQkweDAwYzYsIDB4MDAzNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMTU2LCAweDIwYTksIDB4MDFmZiwKLQkweDIwNzEsIDB4MDMwMCwgMHg3MDFiLCAweDAyMDAsIDB4NzAxOCwgMHhkMDk0LCAweDAxMTAsIDB4MWYwNCwKLQkweDkyOWEsIDB4NzAxYiwgMHgwMjAyLCAweGEwMDEsIDB4YTAwMSwgMHg3MDE4LCAweGQwOTQsIDB4MWQ5MCwKLQkweGI4YWMsIDB4OTA2NSwgMHgwMWYwLCAweDYwMGMsIDB4YjhhZSwgMHg2MDI0LCAweGMwOGQsIDB4NjAyNiwKLQkweDYwMDMsIDB4MDAwNCwgMHg2MDFiLCAweDAwMDAsIDB4NjAxMywgMHgwMDAwLCAweDYwMWYsIDB4MDEwMSwKLQkweDYwMTQsIDB4OTA0ZCwgMHgwOTBjLCAweDBkODUsIDB4YTg4YiwgMHgwMDAwLCAweGE4YTgsIDB4YThhYiwKLQkweDAwMDAsIDB4OTA0ZCwgMHgwOTBjLCAweDBkODUsIDB4MDgwYywgMHgxMDhiLCAweDA4MGMsIDB4OGU1OCwKLQkweDA4ZjgsIDB4MjA3MSwgMHgwMzAwLCAweDcwMWIsIDB4MDIwMCwgMHgwMTVlLCAweDAxMmUsIDB4MDAzZSwKLQkweDAwY2UsIDB4MDA5ZSwgMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDAwYjYsIDB4MDAxNiwKLQkweDAwMDYsIDB4MDE1NiwgMHgwODBjLCAweDI2OGMsIDB4MDE1ZSwgMHgxMWIwLCAweDA4MGMsIDB4Njc0OSwKLQkweDE5MGMsIDB4MGQ4NSwgMHgwMDBlLCAweDAwMWUsIDB4YjkxMiwgMHhiODE2LCAweDA4MGMsIDB4YjExNiwKLQkweDAxNDAsIDB4MmIwMCwgMHg2MDEyLCAweDYwMjMsIDB4MDAwMSwgMHgyMDA5LCAweDAwMDEsIDB4MDgwYywKLQkweGIyMGEsIDB4MDBiZSwgMHgwMGNlLCAweDAwMDUsIDB4MDAwZSwgMHgwMDFlLCAweDBjZDAsIDB4MDA2NiwKLQkweDYwMDAsIDB4OTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwKLQkweDkzMTAsIDB4OTMxMCwgMHg5MzEwLCAweDkzMTIsIDB4OTM1YiwgMHg5MzEwLCAweDkzMTAsIDB4OTMxMCwKLQkweDkzZDUsIDB4OTMxMCwgMHg5NDBkLCAweDkzMTAsIDB4OTMxMCwgMHg5MzEwLCAweDkzMTAsIDB4OTMxMCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg5MTgyLCAweDAwNDAsIDB4MDAwMiwgMHg5MzI1LCAweDkzMjUsIDB4OTMyNSwKLQkweDkzMjUsIDB4OTMyNSwgMHg5MzI1LCAweDkzMjUsIDB4OTMyNSwgMHg5MzI1LCAweDkzMjcsIDB4OTMzOCwKLQkweDkzMjUsIDB4OTMyNSwgMHg5MzI1LCAweDkzMjUsIDB4OTM0OSwgMHgwODBjLCAweDBkODUsIDB4MDA5NiwKLQkweDYxMTQsIDB4MjE0OCwgMHhhODdiLCAweDAwMDAsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjhiYiwKLQkweDA1MDAsIDB4MDBiZSwgMHgwODBjLCAweDZlMTEsIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDAwNSwKLQkweDA4MGMsIDB4OWE0OCwgMHgwMGQ2LCAweDYxMTQsIDB4MDgwYywgMHhjZjFiLCAweDAxMzAsIDB4MDA5NiwKLQkweDYxMTQsIDB4MjE0OCwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwgMHgwMGRlLCAweDA4MGMsIDB4YjE2YywKLQkweDAwMDUsIDB4MDgwYywgMHg5YTQ4LCAweDA4MGMsIDB4MzMxNSwgMHg2MTE0LCAweDAwOTYsIDB4MjE0OCwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTIwLCAweGE4N2IsIDB4MDAyOSwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwKLQkweDA4MGMsIDB4YjE2YywgMHgwMDA1LCAweDYwMWIsIDB4MDAwMCwgMHg5MTgyLCAweDAwNDAsIDB4MDA5NiwKLQkweDAwMDIsIDB4OTM3NiwgMHg5Mzc2LCAweDkzNzYsIDB4OTM3NiwgMHg5Mzc2LCAweDkzNzYsIDB4OTM3NiwKLQkweDkzNzYsIDB4OTM3OCwgMHg5Mzc2LCAweDkzNzYsIDB4OTM3NiwgMHg5M2QxLCAweDkzNzYsIDB4OTM3NiwKLQkweDkzNzYsIDB4OTM3NiwgMHg5Mzc2LCAweDkzNzYsIDB4OTM3ZiwgMHg5Mzc2LCAweDA4MGMsIDB4MGQ4NSwKLQkweDYxMTQsIDB4MjE0OCwgMHhhOTM4LCAweDkxOGUsIDB4ZmZmZiwgMHgwOTA0LCAweDkzZDEsIDB4NjAyNCwKLQkweGQwOGMsIDB4MTVkOCwgMHgwODBjLCAweDhmMGUsIDB4MDVlMCwgMHgwMGU2LCAweDYxMTQsIDB4MjE0OCwKLQkweDA4MGMsIDB4OTEyZSwgMHgwMDk2LCAweGE4YTgsIDB4MjA0OCwgMHgwODBjLCAweDZkYTksIDB4MDA5ZSwKLQkweGE4YWIsIDB4MDAwMCwgMHg2MDEwLCAweDkwMDUsIDB4MDEyOCwgMHgwMGI2LCAweDIwNTgsIDB4MDgwYywKLQkweDkyNWUsIDB4MDBiZSwgMHhhZTg4LCAweDAwYjYsIDB4MjA1OSwgMHgwMDAwLCAweDA4MGMsIDB4OGU2MSwKLQkweDAwYmUsIDB4MDFlMCwgMHgyMDcxLCAweDE5M2QsIDB4MDgwYywgMHg4ZWE4LCAweDAxYjgsIDB4OTA4NiwKLQkweDAwMDEsIDB4MTEyOCwgMHgyMDAxLCAweDE5NDcsIDB4MjAwNCwgMHg5MDA1LCAweDExNzgsIDB4MDA5NiwKLQkweDA4MGMsIDB4MTA1OSwgMHgyOTAwLCAweDAwOWUsIDB4MDE0OCwgMHhhOGFhLCAweDAwZjYsIDB4MmM3OCwKLQkweDA4MGMsIDB4OGUxYywgMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwgMHgwMDA1LCAweDA4MGMsIDB4OGU1OCwKLQkweDBjZDAsIDB4MDgwYywgMHg4ZjEzLCAweDExNjAsIDB4NjAxMCwgMHg5MDA1LCAweDAxMzAsIDB4MjA1OCwKLQkweGI4YWMsIDB4OTAwNSwgMHgxOTBjLCAweDBkODUsIDB4NjAxMiwgMHgyYzAwLCAweDA4MGMsIDB4OGVkOSwKLQkweDAwMDUsIDB4MDgwYywgMHg5NDg5LCAweDAwOWUsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsIDB4MDA5NiwKLQkweDAwMDIsIDB4OTNlOSwgMHg5M2U5LCAweDkzZTksIDB4OTNlYiwgMHg5M2U5LCAweDkzZTksIDB4OTNlOSwKLQkweDk0MGIsIDB4OTNlOSwgMHg5M2U5LCAweDkzZTksIDB4OTNlOSwgMHg5M2U5LCAweDkzZTksIDB4OTNlOSwKLQkweDkzZTksIDB4MDgwYywgMHgwZDg1LCAweDYwMDMsIDB4MDAwMywgMHg2MTA2LCAweDYwMTQsIDB4MjA0OCwKLQkweGE4YWMsIDB4YTgzNiwgMHhhOGIwLCAweGE4M2EsIDB4YTg0NywgMHgwMDAwLCAweGE4NGIsIDB4MDAwMCwKLQkweGE4ODQsIDB4OTA5MiwgMHgxOTlhLCAweDAyMTAsIDB4MjAwMSwgMHgxOTk5LCAweDgwMDMsIDB4ODAxMywKLQkweDgyMTMsIDB4OTIxMCwgMHg2MjFhLCAweDA4MGMsIDB4MWMyNiwgMHgyMDA5LCAweDgwMzAsIDB4MDgwYywKLQkweDk2NWUsIDB4MDA5ZSwgMHgwMDA1LCAweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweDlhNDgsIDB4NjExNCwKLQkweDIxNDgsIDB4YTg3YiwgMHgwMDAwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YmIsIDB4MDUwMCwKLQkweDAwYmUsIDB4MDgwYywgMHg3MDEyLCAweDA4MGMsIDB4YjE2YywgMHgwMDllLCAweDAwMDUsIDB4MDgwYywKLQkweGFjZmMsIDB4NjE0NCwgMHhkMWZjLCAweDAxMjAsIDB4ZDFhYywgMHgxMTEwLCAweDYwMDMsIDB4MDAwMywKLQkweDYwMDAsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDk2LCAweDAwMjMsIDB4MDA5ZSwKLQkweDA4MGMsIDB4YWQxOCwgMHgwMDA1LCAweDk0NDMsIDB4OTQ0MywgMHg5NDQzLCAweDk0NDUsIDB4OTQ1NiwKLQkweDk0NDMsIDB4OTQ0MywgMHg5NDQzLCAweDk0NDMsIDB4OTQ0MywgMHg5NDQzLCAweDk0NDMsIDB4OTQ0MywKLQkweDk0NDMsIDB4OTQ0MywgMHg5NDQzLCAweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweGFlZTMsIDB4NjExNCwKLQkweDIxNDgsIDB4YTg3YiwgMHgwMDA2LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YmIsIDB4MDUwMCwKLQkweDAwYmUsIDB4MDgwYywgMHg3MDEyLCAweDA4MGMsIDB4YjE2YywgMHgwMDA1LCAweDA0OTEsIDB4MDAwNSwKLQkweDA4MGMsIDB4YWNmYywgMHg2MDAwLCAweDYxNDQsIDB4ZDFmYywgMHgwMTMwLCAweGQxYWMsIDB4MTEyMCwKLQkweDYwMDMsIDB4MDAwMywgMHgyMDA5LCAweDAwMDMsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwKLQkweDAwOTYsIDB4MDAzMywgMHgwMDllLCAweDAxMDYsIDB4MDgwYywgMHhhZDE4LCAweDAxMGUsIDB4MDAwNSwKLQkweDk0ODAsIDB4OTQ4MCwgMHg5NDgwLCAweDk0ODIsIDB4OTQ4OSwgMHg5NDgwLCAweDk0ODAsIDB4OTQ4MCwKLQkweDk0ODAsIDB4OTQ4MCwgMHg5NDgwLCAweDk0ODAsIDB4OTQ4MCwgMHg5NDgwLCAweDk0ODAsIDB4OTQ4MCwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwMDM2LCAweDAwZTYsIDB4MDgwYywgMHhhZWUzLCAweDAwZWUsIDB4MDAzZSwKLQkweDAwMDUsIDB4NjAyNCwgMHhkMDhjLCAweDExZjAsIDB4MDBmNiwgMHgwMGU2LCAweDYwMWIsIDB4MDAwMCwKLQkweDYwMTQsIDB4MjA0OCwgMHg2MDEwLCAweDkwMDUsIDB4MDEyOCwgMHgwMGI2LCAweDIwNTgsIDB4MDgwYywKLQkweDkyNWUsIDB4MDBiZSwgMHgyMDcxLCAweDE5M2QsIDB4MDgwYywgMHg4ZWE4LCAweDAxNjAsIDB4MjAwMSwKLQkweDE4N2YsIDB4MjAwNCwgMHhhODhhLCAweDIwMzEsIDB4MDAwMCwgMHgyYzc4LCAweDA4MGMsIDB4OGUxYywKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDAwOTYsIDB4YTg4YiwgMHgwMDAwLCAweGE4YTgsIDB4MjA0OCwKLQkweDA4MGMsIDB4MTA4YiwgMHgwMDllLCAweGE4YWIsIDB4MDAwMCwgMHgwODBjLCAweDhlNTgsIDB4MGM4MCwKLQkweDIwMDEsIDB4MTkyNSwgMHgyMDBjLCAweDkxOGUsIDB4MDAwMCwgMHgxOTBjLCAweDhmMGUsIDB4MDVjOCwKLQkweDAwZTYsIDB4MjA3MSwgMHgxOTI0LCAweDcxMTAsIDB4YzFjNSwgMHg3MTEyLCAweDA4MGMsIDB4OGYxOCwKLQkweDAwZjYsIDB4MDBjNiwgMHgyMDcxLCAweDEwMDAsIDB4MDBiNiwgMHgyZTA0LCAweDkwNWQsIDB4MDEzOCwKLQkweGI4YWMsIDB4OTA2NSwgMHgwMTIwLCAweDA4MGMsIDB4OGVlZSwgMHgwOTBjLCAweDkyOGQsIDB4OGU3MCwKLQkweDllODYsIDB4MTgwMCwgMHgxZDkwLCAweDAwYmUsIDB4MDBkNiwgMHgwMDk2LCAweDAwNDYsIDB4MjA2MSwKLQkweDFkZGMsIDB4MjAwMSwgMHgxODFhLCAweDIwMjQsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDAsIDB4MTE5MSwKLQkweDljZTAsIDB4MDAxYywgMHgyNDAwLCAweDljMDYsIDB4MWRiOCwgMHgwMDRlLCAweDAwOWUsIDB4MDBkZSwKLQkweDAwZDEsIDB4MDBjZSwgMHgwMGZlLCAweDIwNzEsIDB4MTkyNCwgMHg3MTEwLCAweGMxYzQsIDB4NzExMiwKLQkweDAwZWUsIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsIDB4MDAwOSwgMHgxMTYwLCAweDYxMDAsIDB4OTE4NiwKLQkweDAwMDQsIDB4MTEzOCwgMHg2MTEwLCAweDgxZmYsIDB4MTkwYywgMHgwZDg1LCAweDJjMDAsIDB4MDgwYywKLQkweDhlZDksIDB4OTAwNiwgMHgwMDA1LCAweDIwNzEsIDB4MTkzZiwgMHgyMDczLCAweDAwMDAsIDB4OGU3MCwKLQkweDllODYsIDB4MTk0NywgMHgxZGQwLCAweDIwNzEsIDB4MTkzZCwgMHg3MDA2LCAweDcwMDIsIDB4MjAwMSwKLQkweDE5MzAsIDB4MjA2NCwgMHg4Y2ZmLCAweDAxMzAsIDB4NjEyMCwgMHg5MThlLCAweDAwMDAsIDB4MTkwYywKLQkweDBkODUsIDB4MjEwMiwgMHgyMDAxLCAweDE4OGEsIDB4MjAwYywgMHg4MWZmLCAweDAxNDgsIDB4MDA5NiwKLQkweDIxNDgsIDB4MDgwYywgMHgxMDhiLCAweDAwOWUsIDB4MjAwMSwgMHgxODhhLCAweDIwMDMsIDB4MDAwMCwKLQkweDIwNzEsIDB4MTkzMSwgMHgwODBjLCAweDkwZjcsIDB4MDgwNCwgMHg5MTA2LCAweDAwMDAsIDB4MDAwMCwKLQkweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MTg3YSwKLQkweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDAzNiwgMHgwMDQ2LCAweDIwYTksIDB4MDAxMCwgMHg5MDA2LCAweDgwMDQsIDB4ODA4NiwKLQkweDgxOGUsIDB4MTIwOCwgMHg5MjAwLCAweDFmMDQsIDB4OTU0ZiwgMHg4MDg2LCAweDgxOGUsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDEyZSwgMHgwMDA1LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDAwNzYsIDB4MDE1NiwKLQkweDIwYTksIDB4MDAxMCwgMHg5MDA1LCAweDAxYzgsIDB4OTExYSwgMHgxMmI4LCAweDgyMTMsIDB4ODE4ZCwKLQkweDAyMjgsIDB4OTExYSwgMHgxMjIwLCAweDFmMDQsIDB4OTU2NiwgMHgwMDI4LCAweDkxMWEsIDB4MjMwOCwKLQkweDgyMTAsIDB4MWYwNCwgMHg5NTY2LCAweDAwMDYsIDB4MzIwMCwgMHg5MDg0LCAweGVmZmYsIDB4MjA4MCwKLQkweDAwMGUsIDB4MDE1ZSwgMHgwMDdlLCAweDAxMmUsIDB4MDAwNSwgMHgwMDA2LCAweDMyMDAsIDB4OTA4NSwKLQkweDEwMDAsIDB4MGNhOCwgMHgwMTI2LCAweDIwOTEsIDB4MjgwMCwgMHgyMDc5LCAweDE5ZTgsIDB4MDEyZSwKLQkweDAwZDYsIDB4MjA2OSwgMHgxOWU4LCAweDY4MDMsIDB4MDAwNSwgMHgwMTU2LCAweDAxNDYsIDB4MDFkNiwKLQkweDIwZTksIDB4MDAwMCwgMHgyMDY5LCAweDAyMDAsIDB4MDgwYywgMHhhYWYxLCAweDA0YzksIDB4MDgwYywKLQkweGFhZGMsIDB4MDRiMSwgMHgwODBjLCAweGFhZGYsIDB4MDQ5OSwgMHgwODBjLCAweGFhZTIsIDB4MDQ4MSwKLQkweDA4MGMsIDB4YWFlNSwgMHgwNDY5LCAweDA4MGMsIDB4YWFlOCwgMHgwNDUxLCAweDA4MGMsIDB4YWFlYiwKLQkweDA0MzksIDB4MDgwYywgMHhhYWVlLCAweDA0MjEsIDB4MDFkZSwgMHgwMTRlLCAweDAxNWUsIDB4Njg1NywKLQkweDAwMDAsIDB4MDBmNiwgMHgyMDc5LCAweDAzODAsIDB4MDQxOSwgMHg3ODA3LCAweDAwMDMsIDB4NzgwMywKLQkweDAwMDAsIDB4NzgwMywgMHgwMDAxLCAweDIwNjksIDB4MDAwNCwgMHgyZDA0LCAweDkwODQsIDB4ZmZmZSwKLQkweDkwODUsIDB4ODAwMCwgMHgyMDZhLCAweDIwNjksIDB4MDEwMCwgMHg2ODI4LCAweDkwODQsIDB4ZmZmYywKLQkweDY4MmEsIDB4MDBmZSwgMHgyMDAxLCAweDFiNWQsIDB4MjAwMywgMHgwMDAwLCAweDAwZGUsIDB4MDAwNSwKLQkweDIwYTksIDB4MDAyMCwgMHgyMGExLCAweDAyNDAsIDB4MjAwMSwgMHgwMDAwLCAweDQwMDQsIDB4MDAwNSwKLQkweDAwYzYsIDB4NzgwMywgMHgwMDAwLCAweDkwMDYsIDB4NzgyNywgMHgwMDMwLCAweDc4MmIsIDB4MDQwMCwKLQkweDc4MjcsIDB4MDAzMSwgMHg3ODJiLCAweDFhZjYsIDB4NzgxZiwgMHhmZjAwLCAweDc4MWIsIDB4ZmYwMCwKLQkweDIwNjEsIDB4MWFlYiwgMHg2MDJmLCAweDE5ZTgsIDB4NjAzMywgMHgxODAwLCAweDYwMzcsIDB4MWEwNCwKLQkweDYwM2IsIDB4MWVjMSwgMHg2MDNmLCAweDFlZDEsIDB4NjA0MiwgMHg2MDQ3LCAweDFhYzEsIDB4MDBjZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMzgyLCAweDIwMDQsIDB4OTA4NCwgMHgwMDA3LCAweDkwODYsIDB4MDAwMSwKLQkweDAxYjAsIDB4MDBjNiwgMHg2MTQ2LCAweDYwMGYsIDB4MDAwMCwgMHgyYzA4LCAweDIwNjEsIDB4MTllOCwKLQkweDYwMmMsIDB4ODAwMCwgMHg2MDJlLCAweDYwMWMsIDB4OTAwNSwgMHgwMTMwLCAweDkwODAsIDB4MDAwMywKLQkweDIxMDIsIDB4NjExZSwgMHgwMGNlLCAweDAwMDUsIDB4NjEyMiwgMHg2MTFlLCAweDBjZDgsIDB4NjE0NiwKLQkweDJjMDgsIDB4MjAwMSwgMHgwMDEyLCAweDA4MGMsIDB4YWNlZCwgMHgwMDA1LCAweDAwMTYsIDB4MjAwOSwKLQkweDgwMjAsIDB4NjE0NiwgMHgyYzA4LCAweDIwMDEsIDB4MDM4MiwgMHgyMDA0LCAweDkwODQsIDB4MDAwNywKLQkweDkwODYsIDB4MDAwMSwgMHgxMTI4LCAweDIwMDEsIDB4MDAxOSwgMHgwODBjLCAweGFjZWQsIDB4MDA4OCwKLQkweDAwYzYsIDB4MjA2MSwgMHgxOWU4LCAweDYwMmMsIDB4ODAwMCwgMHg2MDJlLCAweDYwMGMsIDB4OTAwNSwKLQkweDAxMjgsIDB4OTA4MCwgMHgwMDAzLCAweDIxMDIsIDB4NjEwZSwgMHgwMDEwLCAweDYxMTIsIDB4NjEwZSwKLQkweDAwY2UsIDB4MDAxZSwgMHgwMDA1LCAweDIwMDEsIDB4MDM4MiwgMHgyMDA0LCAweDkwODQsIDB4MDAwNywKLQkweDkwODYsIDB4MDAwMSwgMHgwMTk4LCAweDAwYzYsIDB4NjE0NiwgMHg2MDBmLCAweDAwMDAsIDB4MmMwOCwKLQkweDIwNjEsIDB4MTllOCwgMHg2MDQ0LCAweDkwMDUsIDB4MDEzMCwgMHg5MDgwLCAweDAwMDMsIDB4MjEwMiwKLQkweDYxNDYsIDB4MDBjZSwgMHgwMDA1LCAweDYxNGEsIDB4NjE0NiwgMHgwY2Q4LCAweDYxNDYsIDB4NjAwZiwKLQkweDAwMDAsIDB4MmMwOCwgMHgyMDAxLCAweDAwMTMsIDB4MDgwYywgMHhhY2VkLCAweDAwMDUsIDB4NjA0NCwKLQkweGQwZGMsIDB4MDExMCwgMHgwODBjLCAweGE3OGEsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4MDBiNiwgMHgwMDk2LCAweDAwNzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwMzYsIDB4MDAyNiwKLQkweDAwMTYsIDB4MDAwNiwgMHgwMTI2LCAweDkwMmUsIDB4MjA3MSwgMHgxOWU4LCAweDc2NDgsIDB4MjY2MCwKLQkweDI2NzgsIDB4MjA5MSwgMHg4MDAwLCAweDhjZmYsIDB4MDkwNCwgMHg5NmYxLCAweDljODYsIDB4MWI1NSwKLQkweDA5MDQsIDB4OTZlYywgMHg2MDEwLCAweDIwNTgsIDB4YjhhMCwgMHg5MjA2LCAweDE5MDQsIDB4OTZlYywKLQkweDg3ZmYsIDB4MDEyMCwgMHg2MDVjLCAweDkxMDYsIDB4MTkwNCwgMHg5NmVjLCAweDcwNGMsIDB4OWMwNiwKLQkweDExODgsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsIDB4MDgwYywgMHhhNTk2LCAweDcwM2YsIDB4MDAwMCwKLQkweDkwMDYsIDB4NzA0ZSwgMHg3MDZhLCAweDcwNTIsIDB4NzA2ZSwgMHgwODBjLCAweGFmZjQsIDB4MDAzZSwKLQkweDIwMjksIDB4MDAwMSwgMHgwODBjLCAweDk2NjcsIDB4NzA0OCwgMHg5YzM2LCAweDExMTAsIDB4NjYwYywKLQkweDc2NGEsIDB4NzA0NCwgMHg5YzM2LCAweDExNDAsIDB4MmMwMCwgMHg5ZjM2LCAweDAxMTgsIDB4MmYwMCwKLQkweDcwNDYsIDB4MDAxMCwgMHg3MDQ3LCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4OWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4Y2YxYiwKLQkweDAxZjAsIDB4NjAxNCwgMHgyMDQ4LCAweDYwMjAsIDB4OTA4NiwgMHgwMDAzLCAweDE1ODgsIDB4NjAwNCwKLQkweDkwODYsIDB4MDA0MCwgMHgwOTBjLCAweGE3OGEsIDB4YTg2NywgMHgwMTAzLCAweGFiN2EsIDB4YTg3NywKLQkweDAwMDAsIDB4MDAxNiwgMHgwMDM2LCAweDAwNzYsIDB4MDgwYywgMHhkMjIwLCAweDA4MGMsIDB4ZWRkZiwKLQkweDA4MGMsIDB4NzAxMiwgMHgwMDdlLCAweDAwM2UsIDB4MDAxZSwgMHgwODBjLCAweGQxMGMsIDB4MDgwYywKLQkweGIxYTcsIDB4MDBjZSwgMHgwODA0LCAweDk2ODMsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsIDB4MDgwNCwKLQkweDk2ODMsIDB4MDEyZSwgMHgwMDBlLCAweDAwMWUsIDB4MDAyZSwgMHgwMDNlLCAweDAwNWUsIDB4MDA2ZSwKLQkweDAwN2UsIDB4MDA5ZSwgMHgwMGJlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwZmUsIDB4MDAwNSwKLQkweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDExNTgsIDB4MDAxNiwgMHgwMDM2LCAweDAwNzYsIDB4MDgwYywKLQkweGVkZGYsIDB4MDgwYywgMHhlYTMwLCAweDAwN2UsIDB4MDAzZSwgMHgwMDFlLCAweDA4YzAsIDB4NjAyMCwKLQkweDkwODYsIDB4MDAwOSwgMHgxMTY4LCAweGE4N2IsIDB4MDAwNiwgMHgwMDE2LCAweDAwMzYsIDB4MDA3NiwKLQkweDA4MGMsIDB4NzAxMiwgMHgwODBjLCAweGIxNmMsIDB4MDA3ZSwgMHgwMDNlLCAweDAwMWUsIDB4MDg0OCwKLQkweDYwMjAsIDB4OTA4NiwgMHgwMDBhLCAweDA5MDQsIDB4OTZkNiwgMHgwODA0LCAweDk2Y2YsIDB4MDAwNiwKLQkweDAwNjYsIDB4MDA5NiwgMHgwMGM2LCAweDAwZDYsIDB4MDBmNiwgMHg5MDM2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3OSwgMHgxOWU4LCAweDc4NDgsIDB4OTA2NSwgMHgwOTA0LCAweDk3OTAsIDB4NjAwYywKLQkweDAwMDYsIDB4NjAwZiwgMHgwMDAwLCAweDc4NGMsIDB4OWMwNiwgMHgxMWIwLCAweDAwMzYsIDB4MjAxOSwKLQkweDAwMDEsIDB4MDgwYywgMHhhNTk2LCAweDc4M2YsIDB4MDAwMCwgMHg5MDFlLCAweDdiNGUsIDB4N2I2YSwKLQkweDdiNTIsIDB4N2I2ZSwgMHgwODBjLCAweGFmZjQsIDB4MDAzZSwgMHgwMDBlLCAweDkwMDUsIDB4MTExOCwKLQkweDYwMGMsIDB4NjAwZiwgMHgwMDAwLCAweDAwMDYsIDB4OWM4NiwgMHgxYjU1LCAweDA1YjAsIDB4MDBlNiwKLQkweDJmNzAsIDB4MDgwYywgMHg5NjY3LCAweDAwZWUsIDB4MDgwYywgMHhjZjFiLCAweDA1NDgsIDB4NjAxNCwKLQkweDIwNDgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDMsIDB4MTVhOCwgMHgzZTA4LCAweDkxOGUsIDB4MDAwMiwKLQkweDExODgsIDB4NjAxMCwgMHg5MDA1LCAweDAxNzAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwKLQkweGQwYmMsIDB4MDE0MCwgMHg2MDQ4LCAweDkwMDUsIDB4MTFjMCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwKLQkweDYwNGEsIDB4MDA5OCwgMHg2MDA0LCAweDkwODYsIDB4MDA0MCwgMHgwOTBjLCAweGE3OGEsIDB4YTg2NywKLQkweDAxMDMsIDB4YWI3YSwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywgMHg3MDA2LCAweDA4MGMsIDB4ZDEwYywKLQkweDYwNDQsIDB4YzBmYywgMHg2MDQ2LCAweDA4MGMsIDB4YjFhNywgMHgwMDBlLCAweDA4MDQsIDB4OTczNCwKLQkweDdlNGEsIDB4N2U0NiwgMHgwMTJlLCAweDAwZmUsIDB4MDBkZSwgMHgwMGNlLCAweDAwOWUsIDB4MDA2ZSwKLQkweDAwMGUsIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsIDB4MDAwNiwgMHgxMTE4LCAweDA4MGMsIDB4ZWEzMCwKLQkweDBjMzgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDksIDB4MTEzMCwgMHhhYjdhLCAweDA4MGMsIDB4NzAxMiwKLQkweDA4MGMsIDB4YjE2YywgMHgwYzEwLCAweDYwMjAsIDB4OTA4NiwgMHgwMDBhLCAweDA5OTAsIDB4MDg1MCwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMDg2LCAweDkwNDYsIDB4MDBhOSwgMHgwODBjLCAweDk4YTMsIDB4MDA4ZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZjYsIDB4MDEyNiwgMHgyMDc5LCAweDE5ZTgsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg5OGVjLCAweDA4MGMsIDB4OTk4MiwgMHgwODBjLCAweDY5NDgsIDB4MDEyZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwKLQkweDAwNjYsIDB4MDAxNiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4MTllOCwKLQkweDc2MjAsIDB4MjY2MCwgMHgyNjc4LCAweDhjZmYsIDB4MDkwNCwgMHg5ODY4LCAweDYwMTAsIDB4MjA1OCwKLQkweGI4YTAsIDB4OTIwNiwgMHgxOTA0LCAweDk4NjMsIDB4ODhmZiwgMHgwMTIwLCAweDYwNWMsIDB4OTEwNiwKLQkweDE5MDQsIDB4OTg2MywgMHg3MDMwLCAweDljMDYsIDB4MTU4MCwgMHgyMDY5LCAweDAxMDAsIDB4NjgyMCwKLQkweGQwYTQsIDB4MDExMCwgMHhkMGNjLCAweDE1MDgsIDB4MDgwYywgMHg4YTRiLCAweDA4MGMsIDB4YTJhMCwKLQkweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweGE3OGEsIDB4NzAzMywgMHgwMDAwLCAweDAwMzYsIDB4MjA2OSwKLQkweDAxNDAsIDB4NmIwNCwgMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywKLQkweDJhOTksIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4MDA0MCwgMHg3MDA4LCAweGMwYWQsIDB4NzAwYSwKLQkweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDA4MDQsIDB4OTg2MywgMHg3MDIwLCAweDljMzYsIDB4MTExMCwKLQkweDY2MGMsIDB4NzYyMiwgMHg3MDFjLCAweDljMzYsIDB4MTE0MCwgMHgyYzAwLCAweDlmMzYsIDB4MDExOCwKLQkweDJmMDAsIDB4NzAxZSwgMHgwMDEwLCAweDcwMWYsIDB4MDAwMCwgMHg2NjBjLCAweDAwNjYsIDB4MmMwMCwKLQkweDlmMDYsIDB4MDExMCwgMHg3ZTBlLCAweDAwMDgsIDB4MjY3OCwgMHg2MDBmLCAweDAwMDAsIDB4NjA0NCwKLQkweGMwZmMsIDB4NjA0NiwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxZTgsIDB4NjAyMCwKLQkweDkwODYsIDB4MDAwMywgMHgxNTgwLCAweDA4MGMsIDB4ZDEzMiwgMHgxMTE4LCAweDA4MGMsIDB4YmI1YywKLQkweDAwOTgsIDB4YTg2NywgMHgwMTAzLCAweGFiN2EsIDB4YTg3NywgMHgwMDAwLCAweDAwMTYsIDB4MDAzNiwKLQkweDAwODYsIDB4MDgwYywgMHhkMjIwLCAweDA4MGMsIDB4ZWRkZiwgMHgwODBjLCAweDcwMTIsIDB4MDA4ZSwKLQkweDAwM2UsIDB4MDAxZSwgMHgwODBjLCAweGQxMGMsIDB4MDgwYywgMHhiMWE3LCAweDA4MGMsIDB4YTY1ZCwKLQkweDAwY2UsIDB4MDgwNCwgMHg5N2RiLCAweDJjNzgsIDB4NjAwYywgMHgyMDYwLCAweDA4MDQsIDB4OTdkYiwKLQkweDAxMmUsIDB4MDAwZSwgMHgwMDFlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAwOWUsIDB4MDBiZSwgMHgwMDA1LCAweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDExNTgsIDB4MDAxNiwKLQkweDAwMzYsIDB4MDA4NiwgMHgwODBjLCAweGVkZGYsIDB4MDgwYywgMHhlYTMwLCAweDAwOGUsIDB4MDAzZSwKLQkweDAwMWUsIDB4MDhkMCwgMHgwODBjLCAweGJiNWMsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDIsIDB4MTE2MCwKLQkweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsIDB4MDAwZSwgMHgwOTA0LCAweDk4NDksIDB4OTA4NiwKLQkweDAwOGIsIDB4MDkwNCwgMHg5ODQ5LCAweDA4NDAsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDUsIDB4MTkyMCwKLQkweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsIDB4MDAwZSwgMHgwOWM4LCAweDkwODYsIDB4MDA4YiwKLQkweDA5YjAsIDB4MDgwNCwgMHg5ODVjLCAweDAwMDYsIDB4MDBmNiwgMHgwMGU2LCAweDAwOTYsIDB4MDBiNiwKLQkweDAwYzYsIDB4MDA2NiwgMHgwMDE2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDkyODAsIDB4MTAwMCwKLQkweDIwMDQsIDB4OTA1ZCwgMHgyMDc5LCAweDE5ZTgsIDB4OTAzNiwgMHg3ODI4LCAweDIwNjAsIDB4OGNmZiwKLQkweDA1MzgsIDB4NjAxMCwgMHg5YjA2LCAweDE1MDAsIDB4NjA0MywgMHhmZmZmLCAweDA4MGMsIDB4YWYyZSwKLQkweDAxZDgsIDB4NjEwYywgMHgwMDE2LCAweDA4MGMsIDB4YTQyMCwgMHg2MDE0LCAweDIwNDgsIDB4YTg2NywKLQkweDAxMDMsIDB4YWI3YSwgMHhhODc3LCAweDAwMDAsIDB4MDAxNiwgMHgwMDM2LCAweDAwODYsIDB4MDgwYywKLQkweGQyMjAsIDB4MDgwYywgMHhlZGRmLCAweDA4MGMsIDB4NzAxMiwgMHgwMDhlLCAweDAwM2UsIDB4MDAxZSwKLQkweDA4MGMsIDB4YjFhNywgMHgwMGNlLCAweDA4ZDgsIDB4MmMzMCwgMHg2MDBjLCAweDIwNjAsIDB4MDhiOCwKLQkweDA4MGMsIDB4Njk2NSwgMHgwMTJlLCAweDAwMWUsIDB4MDA2ZSwgMHgwMGNlLCAweDAwYmUsIDB4MDA5ZSwKLQkweDAwZWUsIDB4MDBmZSwgMHgwMDBlLCAweDAwMDUsIDB4MDA5NiwgMHgwMDA2LCAweDAwNjYsIDB4MDBjNiwKLQkweDAwZDYsIDB4OTAzNiwgMHg3ODIwLCAweDkwNjUsIDB4MDkwNCwgMHg5OTU1LCAweDYwMGMsIDB4MDAwNiwKLQkweDYwNDQsIDB4YzBmYywgMHg2MDQ2LCAweDYwMGYsIDB4MDAwMCwgMHg3ODMwLCAweDljMDYsIDB4MTU5OCwKLQkweDIwNjksIDB4MDEwMCwgMHg2ODIwLCAweGQwYTQsIDB4MDExMCwgMHhkMGNjLCAweDE1MDgsIDB4MDgwYywKLQkweDhhNGIsIDB4MDgwYywgMHhhMmEwLCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweGE3OGEsIDB4NzgzMywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwKLQkweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJhOTksIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjA2OSwKLQkweDAxMDAsIDB4NjgyNCwgMHhkMDg0LCAweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4MDA1OCwKLQkweDA4MGMsIDB4NmJhOSwgMHgxNTM4LCAweDYwMDMsIDB4MDAwOSwgMHg2MzBhLCAweDc4MDgsIDB4YzBhZCwKLQkweDc4MGEsIDB4MmMzMCwgMHgwMGY4LCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGNmMTksIDB4MDFiMCwKLQkweDYwMjAsIDB4OTA4NiwgMHgwMDAzLCAweDE1MDgsIDB4MDgwYywgMHhkMTMyLCAweDExMTgsIDB4MDgwYywKLQkweGJiNWMsIDB4MDA2MCwgMHgwODBjLCAweDZiYTksIDB4MTE2OCwgMHhhODY3LCAweDAxMDMsIDB4YWI3YSwKLQkweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDgwYywgMHhkMTBjLCAweDA4MGMsIDB4YjFhNywKLQkweDA4MGMsIDB4YTY1ZCwgMHgwMDBlLCAweDA4MDQsIDB4OThmMywgMHg3ZTIyLCAweDdlMWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDA2ZSwgMHgwMDBlLCAweDAwOWUsIDB4MDAwNSwgMHg2MDIwLCAweDkwODYsIDB4MDAwNiwKLQkweDExMTgsIDB4MDgwYywgMHhlYTMwLCAweDBjNTAsIDB4MDgwYywgMHhiYjVjLCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDIsIDB4MTE1MCwgMHg2MDA0LCAweDAwMDYsIDB4OTA4NiwgMHgwMDg1LCAweDAwMGUsIDB4MDk5MCwKLQkweDkwODYsIDB4MDA4YiwgMHgwOTc4LCAweDA4ZDAsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDUsIDB4MTliMCwKLQkweDYwMDQsIDB4MDAwNiwgMHg5MDg2LCAweDAwODUsIDB4MDAwZSwgMHgwZDE4LCAweDkwODYsIDB4MDA4YiwKLQkweDBkMDAsIDB4MDg2MCwgMHgwMDA2LCAweDAwOTYsIDB4MDBiNiwgMHgwMGM2LCAweDAwNjYsIDB4OTAzNiwKLQkweDc4MjgsIDB4OTA2NSwgMHgwNTEwLCAweDYwMTAsIDB4MjA1OCwgMHg2MDBjLCAweDAwMDYsIDB4M2UwOCwKLQkweDkxOGUsIDB4MDAwMiwgMHgxMTE4LCAweGI4MDAsIDB4ZDBiYywgMHgxMWE4LCAweDYwNDMsIDB4ZmZmZiwKLQkweDA4MGMsIDB4YWYyZSwgMHgwMTgwLCAweDYxMGMsIDB4MDgwYywgMHhhNDIwLCAweDYwMTQsIDB4MjA0OCwKLQkweGE4NjcsIDB4MDEwMywgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDgwYywKLQkweGIxYTcsIDB4MDAwZSwgMHgwOGYwLCAweDJjMzAsIDB4MGNlMCwgMHgwMDZlLCAweDAwY2UsIDB4MDBiZSwKLQkweDAwOWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBkNiwgMHgwMDk2LCAweDAwNjYsIDB4MDgwYywKLQkweDYyYWYsIDB4MTFiMCwgMHgyMDcxLCAweDE5ZTgsIDB4NzAzMCwgMHg5MDgwLCAweDAwMDUsIDB4MjAwNCwKLQkweDkwNGQsIDB4MDE3MCwgMHhhODc4LCAweDk2MDYsIDB4MTE1OCwgMHgyMDcxLCAweDE5ZTgsIDB4NzAzMCwKLQkweDkwMzUsIDB4MDEzMCwgMHg5MDgwLCAweDAwMDUsIDB4MjAwNCwgMHg5OTA2LCAweDExMDgsIDB4MDAyOSwKLQkweDAwNmUsIDB4MDA5ZSwgMHgwMGRlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDI2NjAsIDB4NjA0MywKLQkweGZmZmYsIDB4MDgwYywgMHhhZjJlLCAweDAxNzgsIDB4MDgwYywgMHhhNDIwLCAweDYwMTQsIDB4MjA0OCwKLQkweGE4NjcsIDB4MDEwMywgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweGQyMjAsIDB4MDgwYywKLQkweDcwMTIsIDB4MDgwYywgMHhiMWE3LCAweDAwY2UsIDB4MDAwNSwgMHgwMGI2LCAweDAwZTYsIDB4MDBjNiwKLQkweDA4MGMsIDB4YWNmYywgMHgwMTA2LCAweDIwNzEsIDB4MDEwMSwgMHgyZTA0LCAweGMwYzQsIDB4MjA3MiwKLQkweDYwNDQsIDB4ZDBmYywgMHgxMTM4LCAweDAxMGUsIDB4MDkwYywgMHhhZDE4LCAweDAwY2UsIDB4MDBlZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgyMDcxLCAweDE5ZTgsIDB4NzAzMCwgMHg5MDA1LCAweDBkYTAsIDB4OWMwNiwKLQkweDE5MGMsIDB4MGQ4NSwgMHg3MDM2LCAweDA4MGMsIDB4OGE0YiwgMHg3MDA0LCAweDkwODQsIDB4MDAwNywKLQkweDAwMDIsIDB4OWExYiwgMHg5YTFkLCAweDlhMjQsIDB4OWEyZSwgMHg5YTNjLCAweDlhMWIsIDB4OWEyOSwKLQkweDlhMTksIDB4MDgwYywgMHgwZDg1LCAweDA0MjgsIDB4MDAwNSwgMHgwODBjLCAweGFmMTksIDB4NzAwNywKLQkweDAwMDAsIDB4NzAzMywgMHgwMDAwLCAweDAwZTgsIDB4MDA2NiwgMHg5MDM2LCAweDA4MGMsIDB4YTQyMCwKLQkweDAwNmUsIDB4NzAwNywgMHgwMDAwLCAweDcwMzMsIDB4MDAwMCwgMHgwMDk4LCAweDA4MGMsIDB4YWYwNCwKLQkweDAxNDAsIDB4MDgwYywgMHhhZjE5LCAweDAxMjgsIDB4MDA2NiwgMHg5MDM2LCAweDA4MGMsIDB4YTQyMCwKLQkweDAwNmUsIDB4NzAzMywgMHgwMDAwLCAweDAwMjgsIDB4MDgwYywgMHhhZjA0LCAweDA4MGMsIDB4YTc4YSwKLQkweDAwMDAsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4MDBjZSwgMHgwMGVlLCAweDAwYmUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDBjNiwgMHgwODBjLCAweGFjZmMsIDB4MDEwNiwgMHg2MDQ0LCAweGQwZmMsIDB4MTEzMCwKLQkweDAxMGUsIDB4MDkwYywgMHhhZDE4LCAweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDIwNjksIDB4MTllOCwKLQkweDY4NGMsIDB4OTAwNSwgMHgwZGE4LCAweDljMDYsIDB4MTkwYywgMHgwZDg1LCAweDY4NTIsIDB4MDBlNiwKLQkweDJkNzAsIDB4MDgwYywgMHg5NjY3LCAweDAwZWUsIDB4MDgwYywgMHg4YTU4LCAweDAwMTYsIDB4MjAwOSwKLQkweDAwNDAsIDB4MDgwYywgMHgyMjIwLCAweDAwMWUsIDB4NjgzYywgMHg5MDg0LCAweDAwMDMsIDB4MDAwMiwKLQkweDlhNzYsIDB4OWE3NywgMHg5YTk2LCAweDlhNzQsIDB4MDgwYywgMHgwZDg1LCAweDA0OTAsIDB4Njg2OCwKLQkweDkwODYsIDB4MDAwMSwgMHgwMTk4LCAweDYwMGMsIDB4OTAxNSwgMHgwMTY4LCAweDZhNGEsIDB4NjAwZiwKLQkweDAwMDAsIDB4NjA0NCwgMHg5MDg0LCAweDdmN2YsIDB4NjA0NiwgMHg5MDA2LCAweDY4NDIsIDB4Njg0ZSwKLQkweDY4M2YsIDB4MDAwMCwgMHgwMGYwLCAweDY4NGEsIDB4Njg0NiwgMHgwYzk4LCAweDY4NmIsIDB4MDAwMCwKLQkweDY4NDgsIDB4OTA2NSwgMHgwZDcwLCAweDYwMDMsIDB4MDAwMiwgMHgwYzU4LCAweDYwNDQsIDB4OTA4NCwKLQkweDdmN2YsIDB4NjA0NiwgMHg5MDA2LCAweDY4NDIsIDB4Njg0ZSwgMHg2ODZhLCAweDY4NTIsIDB4Njg2ZSwKLQkweDYwMGMsIDB4OTAxNSwgMHgwMTIwLCAweDZhNGEsIDB4NjAwZiwgMHgwMDAwLCAweDAwMTAsIDB4Njg0YSwKLQkweDY4NDYsIDB4MDgwYywgMHhhZmY0LCAweDY4NGYsIDB4MDAwMCwgMHgwMTBlLCAweDA5MGMsIDB4YWQxOCwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMDA1LCAweDAwMDUsIDB4NjAyMCwgMHg5MDg0LCAweDAwMGYsIDB4MDAwYiwKLQkweDAwMDUsIDB4OWFjOSwgMHg5YWNjLCAweDlmODAsIDB4YTAxOSwgMHg5YWNjLCAweDlmODAsIDB4YTAxOSwKLQkweDlhYzksIDB4OWFjYywgMHg5YWM5LCAweDlhYzksIDB4OWFjOSwgMHg5YWM5LCAweDlhYzksIDB4OWFjOSwKLQkweDlhYzksIDB4MDgwYywgMHg5OWVkLCAweDAwMDUsIDB4MDBiNiwgMHgwMTU2LCAweDAxMzYsIDB4MDE0NiwKLQkweDAxYzYsIDB4MDFkNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDIwNjksIDB4MDIwMCwKLQkweDIwNzEsIDB4MDI0MCwgMHg2MDA0LCAweDkwOGEsIDB4MDA1MywgMHgxYTBjLCAweDBkODUsIDB4NjExMCwKLQkweDIxNTgsIDB4Yjk4NCwgMHgyYzc4LCAweDIwNjEsIDB4MDEwMCwgMHg2MTlhLCAweDkwOGEsIDB4MDA0MCwKLQkweDFhMDQsIDB4OWIzOCwgMHgwMDViLCAweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDFkZSwKLQkweDAxY2UsIDB4MDE0ZSwgMHgwMTNlLCAweDAxNWUsIDB4MDBiZSwgMHgwMDA1LCAweDljZTEsIDB4OWQxYywKLQkweDlkNDUsIDB4OWUwZiwgMHg5ZTMxLCAweDllMzcsIDB4OWU0NCwgMHg5ZTRjLCAweDllNTgsIDB4OWU1ZSwKLQkweDllNmYsIDB4OWU1ZSwgMHg5ZWM3LCAweDllNGMsIDB4OWVkMywgMHg5ZWQ5LCAweDllNTgsIDB4OWVkOSwKLQkweDllZTUsIDB4OWIzNiwgMHg5YjM2LCAweDliMzYsIDB4OWIzNiwgMHg5YjM2LCAweDliMzYsIDB4OWIzNiwKLQkweDliMzYsIDB4OWIzNiwgMHg5YjM2LCAweDliMzYsIDB4YTQ0MSwgMHhhNDY0LCAweGE0NzUsIDB4YTQ5NSwKLQkweGE0YzcsIDB4OWU0NCwgMHg5YjM2LCAweDllNDQsIDB4OWU1ZSwgMHg5YjM2LCAweDlkNDUsIDB4OWUwZiwKLQkweDliMzYsIDB4YTg4OCwgMHg5ZTVlLCAweDliMzYsIDB4YThhNCwgMHg5ZTVlLCAweDliMzYsIDB4OWU1OCwKLQkweDljZGIsIDB4OWI1OSwgMHg5YjM2LCAweGE4YzAsIDB4YTkyZCwgMHhhYTExLCAweDliMzYsIDB4YWExZSwKLQkweDllNDEsIDB4YWE0OSwgMHg5YjM2LCAweGE0ZDEsIDB4YWE1NSwgMHg5YjM2LCAweDA4MGMsIDB4MGQ4NSwKLQkweDIxMDAsIDB4MDA1YiwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGNlLCAweDAxZGUsIDB4MDFjZSwKLQkweDAxNGUsIDB4MDEzZSwgMHgwMTVlLCAweDAwYmUsIDB4MDAwNSwgMHhhYWY1LCAweGFiYTcsIDB4OWI1NywKLQkweDliOTEsIDB4OWMzZCwgMHg5YzQ4LCAweDliNTcsIDB4OWU0NCwgMHg5YjU3LCAweDljYTIsIDB4OWNhZSwKLQkweDliYWMsIDB4OWI1NywgMHg5YmM3LCAweDliZmIsIDB4YjAwOCwgMHhiMDRkLCAweDllNWUsIDB4MDgwYywKLQkweDBkODUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsIDB4OWVmOCwgMHgwMDI2LCAweDAwMzYsIDB4NzgxNCwKLQkweDIwNDgsIDB4YTk1OCwgMHhkMWNjLCAweDExMzgsIDB4MjAwOSwgMHgyNDE0LCAweDIwMTEsIDB4MDAxOCwKLQkweDIwMTksIDB4MDAxOCwgMHgwMDMwLCAweDIwMDksIDB4MjQxMCwgMHgyMDExLCAweDAwMTQsIDB4MjAxOSwKLQkweDAwMTQsIDB4NzEwMiwgMHg3MjA2LCAweDcwMGIsIDB4MDgwMCwgMHhhODNjLCAweDcwMGUsIDB4YTg1MCwKLQkweDcwMjIsIDB4YTg1NCwgMHg3MDI2LCAweDYzYzIsIDB4MDgwYywgMHhhMjcwLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwOWUsIDB4MDBkZSwgMHgwMDA1LCAweDc4MTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YTAsIDB4MDBiZSwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTE4LCAweDkwODQsIDB4ZmY4MCwgMHgwMTEwLCAweDkwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsIDB4OWVmOCwgMHg3MDAzLCAweDA1MDAsIDB4NzgxNCwKLQkweDIwNDgsIDB4YTg3NCwgMHg3MDBhLCAweGE4NzgsIDB4NzAwZSwgMHhhODdjLCAweDcwMTIsIDB4YTg4MCwKLQkweDcwMTYsIDB4YTg4NCwgMHg3MDFhLCAweGE4ODgsIDB4NzAxZSwgMHg2MGMzLCAweDAwMTAsIDB4MDgwYywKLQkweGEyNzAsIDB4MDA5ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwgMHgwMDk2LCAweDA4MGMsIDB4OWVmOCwKLQkweDcwMDMsIDB4MDUwMCwgMHg3ODE0LCAweDIwNDgsIDB4YThjYywgMHg3MDBhLCAweGE4ZDAsIDB4NzAwZSwKLQkweGE4ZDQsIDB4NzAxMiwgMHhhOGQ4LCAweDcwMTYsIDB4YThkYywgMHg3MDFhLCAweGE4ZTAsIDB4NzAxZSwKLQkweDYwYzMsIDB4MDAxMCwgMHgwODBjLCAweGEyNzAsIDB4MDA5ZSwgMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwKLQkweDAwOTYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHg5ZWY4LCAweDIwZTksIDB4MDAwMCwKLQkweDIwMDEsIDB4MTlhNCwgMHgyMDAzLCAweDAwMDAsIDB4NzgxNCwgMHgyMDQ4LCAweGE4MTQsIDB4ODAwMywKLQkweDYwYzIsIDB4YTgzMCwgMHgyMGE4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsIDB4MDAxYiwKLQkweDIwOTgsIDB4MjAwMSwgMHgxOWE0LCAweDAwMTYsIDB4MjAwYywgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDIyMDUsIDB4MDgwYywgMHhkY2VmLCAweDkwMDYsIDB4MDgwYywgMHgyMjA1LCAweDAwMWUsIDB4YTgwNCwKLQkweDkwMDUsIDB4MDExMCwgMHgyMDQ4LCAweDBjMjgsIDB4MDRkOSwgMHgwODBjLCAweGEyNzAsIDB4MDEyZSwKLQkweDAwOWUsIDB4MDBkZSwgMHgwMDA1LCAweDAwZDYsIDB4MDA5NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4OWY0MywgMHgyMGU5LCAweDAwMDAsIDB4MjAwMSwgMHgxOWE0LCAweDIwMDMsIDB4MDAwMCwKLQkweDc4MTQsIDB4MjA0OCwgMHhhODZmLCAweDAyMDAsIDB4YTg3MywgMHgwMDAwLCAweGE4MTQsIDB4ODAwMywKLQkweDYwYzIsIDB4YTgzMCwgMHgyMGE4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsIDB4MDAxYiwKLQkweDIwOTgsIDB4MjAwMSwgMHgxOWE0LCAweDAwMTYsIDB4MjAwYywgMHgwODBjLCAweGRjZWYsIDB4MDAxZSwKLQkweGE4MDQsIDB4OTAwNSwgMHgwMTEwLCAweDIwNDgsIDB4MGM2MCwgMHgwMDUxLCAweDc4MTQsIDB4MjA0OCwKLQkweDA4MGMsIDB4MTAwYiwgMHgwODBjLCAweGEyNzAsIDB4MDEyZSwgMHgwMDllLCAweDAwZGUsIDB4MDAwNSwKLQkweDYwYzAsIDB4ODAwNCwgMHg5MDg0LCAweDAwMDMsIDB4OTAwNSwgMHgwMTMwLCAweDkwODIsIDB4MDAwNCwKLQkweDIwYTMsIDB4MDAwMCwgMHg4MDAwLCAweDFkZTAsIDB4MDAwNSwgMHgwODBjLCAweDllZjgsIDB4NzAwMywKLQkweDc4MDAsIDB4NzgwOCwgMHg4MDA3LCAweDcwMGEsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTI3MCwKLQkweDAwZDYsIDB4MDBlNiwgMHgwODBjLCAweDlmNDMsIDB4NzgxNCwgMHg5MDg0LCAweGZmMDAsIDB4MjA3MywKLQkweDAyMDAsIDB4OGU3MCwgMHg4ZTcwLCAweDkwOTYsIDB4ZGYwMCwgMHgwMTM4LCAweDkwOTYsIDB4ZTAwMCwKLQkweDAxMjAsIDB4MjA3MywgMHgwMDEwLCAweDhlNzAsIDB4MDAzMCwgMHg5MDk1LCAweDAwMTAsIDB4MjI3MiwKLQkweDhlNzAsIDB4MjA3MywgMHgwMDM0LCAweDhlNzAsIDB4MjA2OSwgMHgxODA1LCAweDIwYTksIDB4MDAwNCwKLQkweDJkNzYsIDB4OGQ2OCwgMHg4ZTcwLCAweDFmMDQsIDB4OWM2OCwgMHgyMDY5LCAweDE4MDEsIDB4MjBhOSwKLQkweDAwMDQsIDB4MmQ3NiwgMHg4ZDY4LCAweDhlNzAsIDB4MWYwNCwgMHg5YzcxLCAweDkwOTYsIDB4ZGYwMCwKLQkweDAxMzAsIDB4OTA5NiwgMHhlMDAwLCAweDAxMTgsIDB4NjBjMywgMHgwMDE4LCAweDAwZjAsIDB4MjA2OSwKLQkweDE5YjQsIDB4OTA4NiwgMHhkZjAwLCAweDAxMTAsIDB4MjA2OSwgMHgxOWNlLCAweDIwYTksIDB4MDAxYSwKLQkweDllODYsIDB4MDI2MCwgMHgxMTQ4LCAweDAwYzYsIDB4MjA2MSwgMHgwMjAwLCAweDYwMTAsIDB4ODAwMCwKLQkweDYwMTIsIDB4MDBjZSwgMHgyMDcxLCAweDAyNDAsIDB4MmQwNCwgMHg4MDA3LCAweDIwNzIsIDB4OGQ2OCwKLQkweDhlNzAsIDB4MWYwNCwgMHg5Yzg4LCAweDYwYzMsIDB4MDA0YywgMHgwODBjLCAweGEyNzAsIDB4MDBlZSwKLQkweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweDllZjgsIDB4NzAwMywgMHg2MzAwLCAweDcwMDcsIDB4MDAyOCwKLQkweDc4MDgsIDB4NzAwZSwgMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwgMHhhMjcwLCAweDAwZDYsIDB4MDAyNiwKLQkweDAwMTYsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDIwMCwgMHg3ODE0LCAweDcwMGUsIDB4MDBlNiwKLQkweDllZjAsIDB4MDAwNCwgMHgyMDA5LCAweDAwMDEsIDB4MjAxMSwgMHgwMDBjLCAweDIwNjksIDB4MTkyNCwKLQkweDY4MTAsIDB4ZDA4NCwgMHgxMTQ4LCAweDIwNzMsIDB4MDUwMCwgMHg4ZTcwLCAweDIwNzMsIDB4MDAwMCwKLQkweDhlNzAsIDB4ODEwOCwgMHg5MjkwLCAweDAwMDQsIDB4MjA3MywgMHgwODAwLCAweDhlNzAsIDB4MjA3MywKLQkweDAwMDAsIDB4MDBlZSwgMHg3MjA2LCAweDcxMGEsIDB4NjJjMiwgMHgwODBjLCAweGEyNzAsIDB4MDAxZSwKLQkweDAwMmUsIDB4MDBkZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDYwOWEsIDB4MDgwNCwKLQkweGEyNzAsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4NTIwMCwgMHgyMDY5LCAweDE4NDcsIDB4NjgwNCwKLQkweGQwODQsIDB4MDEzMCwgMHg2ODI4LCAweDAwMTYsIDB4MDgwYywgMHgyNmJmLCAweDcxMGUsIDB4MDAxZSwKLQkweDIwYTksIDB4MDAwNCwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwgMHgxODA1LCAweDIwZTksIDB4MDAwMCwKLQkweDIwYTEsIDB4MDI1MCwgMHg0MDAzLCAweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweDE4MDEsIDB4MjBhMSwKLQkweDAyNTQsIDB4NDAwMywgMHgwODBjLCAweGIwOTQsIDB4MTEyMCwgMHhiOGEwLCAweDkwODIsIDB4MDA3ZiwKLQkweDAyNDgsIDB4MjAwMSwgMHgxODFmLCAweDIwMDQsIDB4NzAzMiwgMHgyMDAxLCAweDE4MjAsIDB4MjAwNCwKLQkweDcwMzYsIDB4MDAzMCwgMHgyMDAxLCAweDE4MTgsIDB4MjAwNCwgMHg5MDg0LCAweDAwZmYsIDB4NzAzNiwKLQkweDYwYzMsIDB4MDAxYywgMHgwODA0LCAweGEyNzAsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4MDUwMCwKLQkweDA4MGMsIDB4YjA5NCwgMHgxMTIwLCAweGI4YTAsIDB4OTA4MiwgMHgwMDdmLCAweDAyNDgsIDB4MjAwMSwKLQkweDE4MWYsIDB4MjAwNCwgMHg3MDBhLCAweDIwMDEsIDB4MTgyMCwgMHgyMDA0LCAweDcwMGUsIDB4MDAzMCwKLQkweDIwMDEsIDB4MTgxOCwgMHgyMDA0LCAweDkwODQsIDB4MDBmZiwgMHg3MDBlLCAweDIwYTksIDB4MDAwNCwKLQkweDIwZTEsIDB4MDAwMSwgMHgyMDk5LCAweDE4MDUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI1MCwKLQkweDQwMDMsIDB4NjBjMywgMHgwMDEwLCAweDA4MDQsIDB4YTI3MCwgMHgwODBjLCAweDllZjgsIDB4OTAwNiwKLQkweDA4MGMsIDB4NmJkYiwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwgMHgxMTcwLCAweDIwMTEsIDB4MDI0MCwKLQkweDIwMTMsIDB4MjJmZiwgMHgyMDExLCAweDAyNDEsIDB4MjAxMywgMHhmZmZlLCAweDcwMDMsIDB4MDQwMCwKLQkweDYyMGMsIDB4YzJiNCwgMHg2MjBlLCAweDAwNTgsIDB4NzgxNCwgMHgwMDk2LCAweDkwNGQsIDB4MDEyMCwKLQkweDkwMDYsIDB4YTg5YSwgMHhhOGE2LCAweGE4YWEsIDB4MDA5ZSwgMHg3MDAzLCAweDAzMDAsIDB4YjhhMCwKLQkweDkwODYsIDB4MDA3ZSwgMHgxOTA0LCAweDlkY2YsIDB4MDBkNiwgMHgyMDY5LCAweDE5NmMsIDB4MjAwMSwKLQkweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxODgsIDB4NjgwMCwgMHg3MDBhLCAweDY4MDgsIDB4OTA4NCwKLQkweDIwMDAsIDB4NzAxMiwgMHgwODBjLCAweGIwYWIsIDB4NjgwYywgMHg3MDE2LCAweDcwMWYsIDB4MjcxMCwKLQkweDY4MTgsIDB4NzAyMiwgMHg2ODFjLCAweDcwMjYsIDB4MDQyOCwgMHg2ODAwLCAweDcwMGEsIDB4NjgwNCwKLQkweDcwMGUsIDB4MjAwOSwgMHgxODBkLCAweDIxMGMsIDB4ZDE4YywgMHgwMTEwLCAweDIwMDEsIDB4MDAwMiwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDA4MGMsIDB4Nzc5ZSwgMHgxMTI4LCAweDc4ZTMsIDB4MDAwMCwKLQkweDA4MGMsIDB4MjcwMCwgMHg3OGUyLCAweDAwZmUsIDB4NjgwOCwgMHgwODBjLCAweDc3OWUsIDB4MTExOCwKLQkweDkwODQsIDB4MzdmZiwgMHgwMDEwLCAweDkwODQsIDB4M2ZmZiwgMHg3MDEyLCAweDA4MGMsIDB4YjBhYiwKLQkweDY4MGMsIDB4NzAxNiwgMHgwMGRlLCAweDIwYTksIDB4MDAwNCwgMHgyMGUxLCAweDAwMDEsIDB4MjA5OSwKLQkweDE4MDUsIDB4MjBlOSwgMHgwMDAwLCAweDIwYTEsIDB4MDI1NiwgMHg0MDAzLCAweDIwYTksIDB4MDAwNCwKLQkweDIwOTksIDB4MTgwMSwgMHgyMGExLCAweDAyNWEsIDB4NDAwMywgMHgwMGQ2LCAweDA4MGMsIDB4YWFkYywKLQkweDIwNjksIDB4MTk3NCwgMHgyMDcxLCAweDAyNGUsIDB4NjgwMCwgMHhjMGRkLCAweDcwMDIsIDB4MDgwYywKLQkweDU4NDQsIDB4ZDBlNCwgMHgwMTEwLCAweDY4MGMsIDB4NzAwZSwgMHgwMGRlLCAweDA0ZTAsIDB4MjAwMSwKLQkweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxYTgsIDB4MDAxNiwgMHgyMDAxLCAweDE4MGQsIDB4MjAwNCwKLQkweGQwOGMsIDB4MjAwOSwgMHgwMDAyLCAweDExMTgsIDB4MjAwMSwgMHgxOTZkLCAweDIwMGMsIDB4NjBlMCwKLQkweDkxMDYsIDB4MDEzMCwgMHgyMTAwLCAweDYwZTMsIDB4MDAwMCwgMHgwODBjLCAweDI3MDAsIDB4NjFlMiwKLQkweDAwMWUsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MTk2YywgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwKLQkweDAyNGUsIDB4MjBhOSwgMHgwMDA4LCAweDQwMDMsIDB4MjBhOSwgMHgwMDA0LCAweDIwOTksIDB4MTgwNSwKLQkweDIwYTEsIDB4MDI1NiwgMHg0MDAzLCAweDIwYTksIDB4MDAwNCwgMHgyMDk5LCAweDE4MDEsIDB4MjBhMSwKLQkweDAyNWEsIDB4NDAwMywgMHgwODBjLCAweGFhZGMsIDB4MjBhMSwgMHgwMjRlLCAweDIwYTksIDB4MDAwOCwKLQkweDIwOTksIDB4MTk3NCwgMHg0MDAzLCAweDYwYzMsIDB4MDA3NCwgMHgwODA0LCAweGEyNzAsIDB4MDgwYywKLQkweDllZjgsIDB4NzAwMywgMHgyMDEwLCAweDcwMDcsIDB4MDAxNCwgMHg3MDBiLCAweDA4MDAsIDB4NzAwZiwKLQkweDIwMDAsIDB4OTAwNiwgMHgwMGY2LCAweDIwNzksIDB4MTg0NywgMHg3OTA0LCAweDAwZmUsIDB4ZDFhYywKLQkweDExMTAsIDB4OTA4NSwgMHgwMDIwLCAweGQxYTQsIDB4MDExMCwgMHg5MDg1LCAweDAwMTAsIDB4OTA4NSwKLQkweDAwMDIsIDB4MDBkNiwgMHgwODA0LCAweDllYTgsIDB4NzAyNiwgMHg2MGMzLCAweDAwMTQsIDB4MDgwNCwKLQkweGEyNzAsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4NTAwMCwgMHgwODA0LCAweDlkNjcsIDB4MDgwYywKLQkweDllZjgsIDB4NzAwMywgMHgyMTEwLCAweDcwMDcsIDB4MDAxNCwgMHg2MGMzLCAweDAwMTQsIDB4MDgwNCwKLQkweGEyNzAsIDB4MDgwYywgMHg5ZjNhLCAweDAwMTAsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDIwMCwKLQkweDYwYzMsIDB4MDAwNCwgMHgwODA0LCAweGEyNzAsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDEwMCwKLQkweDcwMGIsIDB4MDAwMywgMHg3MDBmLCAweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTI3MCwKLQkweDA4MGMsIDB4OWY0MywgMHg3MDAzLCAweDAyMDAsIDB4MDgwNCwgMHg5ZDY3LCAweDA4MGMsIDB4OWY0MywKLQkweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDkwMDUsIDB4MDExMCwgMHg3MDBhLCAweDAwMTAsIDB4NzAwYiwKLQkweDAwMDMsIDB4NzgxNCwgMHg3MDBlLCAweDYwYzMsIDB4MDAwOCwgMHgwODA0LCAweGEyNzAsIDB4MDBkNiwKLQkweDA4MGMsIDB4OWY0MywgMHg3MDAzLCAweDAyMTAsIDB4NzAwNywgMHgwMDE0LCAweDcwMGIsIDB4MDgwMCwKLQkweGI4OTQsIDB4OTA4NiwgMHgwMDE0LCAweDExOTgsIDB4Yjk5YywgMHg5MTg0LCAweDAwMzAsIDB4MDE5MCwKLQkweGI5OTgsIDB4OTE4NCwgMHhjMDAwLCAweDExNDAsIDB4ZDFlYywgMHgwMTE4LCAweDcwMGYsIDB4MjEwMCwKLQkweDAwNTgsIDB4NzAwZiwgMHgwMTAwLCAweDAwNDAsIDB4NzAwZiwgMHgwNDAwLCAweDAwMjgsIDB4NzAwZiwKLQkweDA3MDAsIDB4MDAxMCwgMHg3MDBmLCAweDA4MDAsIDB4MDBmNiwgMHgyMDc5LCAweDE4NDcsIDB4NzkwNCwKLQkweDAwZmUsIDB4ZDFhYywgMHgxMTEwLCAweDkwODUsIDB4MDAyMCwgMHhkMWE0LCAweDAxMTAsIDB4OTA4NSwKLQkweDAwMTAsIDB4MjAwOSwgMHgxODY5LCAweDIxMGMsIDB4ZDE4NCwgMHgxMTEwLCAweDkwODUsIDB4MDAwMiwKLQkweDAwMjYsIDB4MjAwOSwgMHgxODY3LCAweDIxMGMsIDB4ZDFlNCwgMHgwMTUwLCAweGMwYzUsIDB4YmFkNCwKLQkweGQyOGMsIDB4MTEwOCwgMHhjMGNkLCAweDkwOTQsIDB4MDAzMCwgMHg5Mjk2LCAweDAwMTAsIDB4MDE0MCwKLQkweGQxZWMsIDB4MDEzMCwgMHg5MDk0LCAweDAwMzAsIDB4OTI5NiwgMHgwMDEwLCAweDAxMDgsIDB4YzBiZCwKLQkweDAwMmUsIDB4NzAyNiwgMHg2MGMzLCAweDAwMTQsIDB4MDBkZSwgMHgwODA0LCAweGEyNzAsIDB4MDgwYywKLQkweDlmNDMsIDB4NzAwMywgMHgwMjEwLCAweDcwMDcsIDB4MDAxNCwgMHg3MDBmLCAweDAxMDAsIDB4NjBjMywKLQkweDAwMTQsIDB4MDgwNCwgMHhhMjcwLCAweDA4MGMsIDB4OWY0MywgMHg3MDAzLCAweDAyMDAsIDB4MDgwNCwKLQkweDljZTUsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDEwMCwgMHg3MDBiLCAweDAwMDMsIDB4NzAwZiwKLQkweDJhMDAsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTI3MCwgMHgwODBjLCAweDlmNDMsIDB4NzAwMywKLQkweDAxMDAsIDB4NzAwYiwgMHgwMDBiLCAweDYwYzMsIDB4MDAwOCwgMHgwODA0LCAweGEyNzAsIDB4MDAyNiwKLQkweDAwZDYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksIDB4MzIwMCwgMHgyMDIxLCAweDA4MDAsIDB4MDA0MCwKLQkweDAwMjYsIDB4MDBkNiwgMHgwMDM2LCAweDAwNDYsIDB4MjAxOSwgMHgyMjAwLCAweDIwMjEsIDB4MDEwMCwKLQkweDA4MGMsIDB4YWFmMSwgMHhiODEwLCAweDkzMDUsIDB4NzAwMiwgMHhiODE0LCAweDcwMDYsIDB4MjA2OSwKLQkweDE4MDAsIDB4Njg3YywgMHg3MDBhLCAweDY4ODAsIDB4NzAwZSwgMHg5NDg1LCAweDAwMjksIDB4NzAxMiwKLQkweDAwNGUsIDB4MDAzZSwgMHgwMGRlLCAweDA4MGMsIDB4YTI2NCwgMHg3MjFhLCAweDlmOTUsIDB4MDAwMCwKLQkweDcyMjIsIDB4NzAyNywgMHhmZmZmLCAweDIwNzEsIDB4MDI0YywgMHgwMDJlLCAweDAwMDUsIDB4MDAyNiwKLQkweDA4MGMsIDB4YWFmMSwgMHg3MDAzLCAweDAyZmYsIDB4NzAwNywgMHhmZmZjLCAweDAwZDYsIDB4MjA2OSwKLQkweDE4MDAsIDB4Njg3YywgMHg3MDBhLCAweDY4ODAsIDB4NzAwZSwgMHgwMGRlLCAweDcwMTMsIDB4MjAyOSwKLQkweDBjMTAsIDB4NzAwMywgMHgwMTAwLCAweDcwMDcsIDB4MDAwMCwgMHg3MDBiLCAweGZjMDIsIDB4NzAwZiwKLQkweDAwMDAsIDB4MDAwNSwgMHgwMDI2LCAweDAwZDYsIDB4MDAzNiwgMHgwMDQ2LCAweDIwMTksIDB4MzMwMCwKLQkweDIwMjEsIDB4MDgwMCwgMHgwMDQwLCAweDAwMjYsIDB4MDBkNiwgMHgwMDM2LCAweDAwNDYsIDB4MjAxOSwKLQkweDIzMDAsIDB4MjAyMSwgMHgwMTAwLCAweDA4MGMsIDB4YWFmMSwgMHhiODEwLCAweDkzMDUsIDB4NzAwMiwKLQkweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsIDB4YjgxMCwgMHg5MDA1LCAweDExNDAsIDB4YjgxNCwKLQkweDkwMDUsIDB4MTEyOCwgMHg3MDBiLCAweDAwZmYsIDB4NzAwZiwgMHhmZmZlLCAweDAwMjAsIDB4Njg3YywKLQkweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDAwMDAsIDB4OTQ4NSwgMHgwMDk4LCAweDcwMTIsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDBkZSwgMHgwODBjLCAweGEyNjQsIDB4NzIxYSwgMHg3YTA4LCAweDcyMjIsIDB4MmYxMCwKLQkweDcyMjYsIDB4MjA3MSwgMHgwMjRjLCAweDAwMmUsIDB4MDAwNSwgMHgwODBjLCAweGEyNjQsIDB4NzIxYSwKLQkweDdhMDgsIDB4NzIyMiwgMHg3ODE0LCAweDcwMjYsIDB4MjA3MSwgMHgwMjRjLCAweDAwMmUsIDB4MDAwNSwKLQkweDAwYjYsIDB4MDBjNiwgMHgwMGQ2LCAweDAwZTYsIDB4MDBmNiwgMHgyMDY5LCAweDAyMDAsIDB4MjA3MSwKLQkweDAyNDAsIDB4NjAwNCwgMHg5MDhhLCAweDAwODUsIDB4MGEwYywgMHgwZDg1LCAweDkwOGEsIDB4MDA5MiwKLQkweDFhMGMsIDB4MGQ4NSwgMHg2MTEwLCAweDIxNTgsIDB4Yjk4NCwgMHgyYzc4LCAweDIwNjEsIDB4MDEwMCwKLQkweDYxOWEsIDB4OTA4MiwgMHgwMDg1LCAweDAwMzMsIDB4MDBmZSwgMHgwMGVlLCAweDAwZGUsIDB4MDBjZSwKLQkweDAwYmUsIDB4MDAwNSwgMHg5ZmIxLCAweDlmYzAsIDB4OWZjYiwgMHg5ZmFmLCAweDlmYWYsIDB4OWZhZiwKLQkweDlmYjEsIDB4OWZhZiwgMHg5ZmFmLCAweDlmYWYsIDB4OWZhZiwgMHg5ZmFmLCAweDlmYWYsIDB4MDgwYywKLQkweDBkODUsIDB4MDQxMSwgMHg2MGMzLCAweDAwMDAsIDB4MDAyNiwgMHgwODBjLCAweDJhMDQsIDB4MDIyOCwKLQkweDIwMTEsIDB4MDEwMSwgMHgyMjA0LCAweGMwYzUsIDB4MjAxMiwgMHgwMDJlLCAweDA4MDQsIDB4YTI3MCwKLQkweDA0MzEsIDB4NzgwOCwgMHg3MDBhLCAweDc4MTQsIDB4NzAwZSwgMHg3MDE3LCAweGZmZmYsIDB4NjBjMywKLQkweDAwMGMsIDB4MDgwNCwgMHhhMjcwLCAweDA0YTEsIDB4NzAwMywgMHgwMDAzLCAweDcwMDcsIDB4MDMwMCwKLQkweDYwYzMsIDB4MDAwNCwgMHgwODA0LCAweGEyNzAsIDB4MDAyNiwgMHgwODBjLCAweGFhZjEsIDB4YjgxMCwKLQkweDkwODUsIDB4ODEwMCwgMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwgMHgyMDY5LCAweDE4MDAsIDB4Njg3YywKLQkweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDcwMTMsIDB4MDAwOSwgMHgwODA0LCAweDlmMTMsIDB4MDAyNiwKLQkweDA4MGMsIDB4YWFmMSwgMHhiODEwLCAweDkwODUsIDB4ODQwMCwgMHg3MDAyLCAweGI4MTQsIDB4NzAwNiwKLQkweDIwNjksIDB4MTgwMCwgMHg2ODdjLCAweDcwMGEsIDB4Njg4MCwgMHg3MDBlLCAweDIwMDEsIDB4MDA5OSwKLQkweDdhMjAsIDB4OTI5NiwgMHgwMDA1LCAweDAxMDgsIDB4YzBiYywgMHg3MDEyLCAweDA4MDQsIDB4OWY3NSwKLQkweDAwMjYsIDB4MDgwYywgMHhhYWYxLCAweGI4MTAsIDB4OTA4NSwgMHg4NTAwLCAweDcwMDIsIDB4YjgxNCwKLQkweDcwMDYsIDB4MjA2OSwgMHgxODAwLCAweDY4N2MsIDB4NzAwYSwgMHg2ODgwLCAweDcwMGUsIDB4MjAwMSwKLQkweDAwOTksIDB4N2EyMCwgMHg5Mjk2LCAweDAwMDUsIDB4MDEwOCwgMHhjMGJjLCAweDcwMTIsIDB4MDgwNCwKLQkweDlmNzUsIDB4MDBiNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDJjNzgsIDB4MjA2OSwKLQkweDAyMDAsIDB4MjA3MSwgMHgwMjQwLCAweDc4MDQsIDB4OTA4YSwgMHgwMDQwLCAweDBhMGMsIDB4MGQ4NSwKLQkweDkwOGEsIDB4MDA1NywgMHgxYTBjLCAweDBkODUsIDB4NzkxMCwgMHgyMTU4LCAweGI5ODQsIDB4MjA2MSwKLQkweDAxMDAsIDB4NjE5YSwgMHg5MDgyLCAweDAwNDAsIDB4MDAzMywgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDBiZSwgMHgwMDA1LCAweGEwNGUsIDB4YTA0ZSwgMHhhMDRlLCAweGEwN2YsIDB4YTA0ZSwKLQkweGEwNGUsIDB4YTA0ZSwgMHhhMDRlLCAweGEwNGUsIDB4YTA0ZSwgMHhhMDRlLCAweGE2NDQsIDB4YTY0OSwKLQkweGE2NGUsIDB4YTY1MywgMHhhMDRlLCAweGEwNGUsIDB4YTA0ZSwgMHhhNjNmLCAweDA4MGMsIDB4MGQ4NSwKLQkweDY4MTMsIDB4MDAwOCwgMHhiYThjLCAweDgyMTAsIDB4YjhkNCwgMHhkMDg0LCAweDAxODAsIDB4MjAwMSwKLQkweDFiNzIsIDB4MjAwYywgMHg4MTA4LCAweDIxMDIsIDB4MjAwMSwgMHgxYjcxLCAweDIwMWMsIDB4MTIxOCwKLQkweDgzMTgsIDB4MjMwMiwgMHgwZWEwLCAweDc5NTIsIDB4NzEyZSwgMHg3YjRlLCAweDczMmEsIDB4OTI5NCwKLQkweDAwZmYsIDB4YmE4ZSwgMHg4MjE3LCAweDcyMWEsIDB4YmExMCwgMHg5Mjk1LCAweDA2MDAsIDB4NzIwMiwKLQkweGJhMTQsIDB4NzIwNiwgMHgyMDY5LCAweDE4MDAsIDB4NmE3YywgMHg3MjBhLCAweDZhODAsIDB4NzIwZSwKLQkweDcwMTMsIDB4MDgyOSwgMHgyZjEwLCAweDcyMjIsIDB4NzAyNywgMHhmZmZmLCAweDAwMDUsIDB4MDAxNiwKLQkweDc4MTQsIDB4OTA4NCwgMHgwNzAwLCAweDgwMDcsIDB4MDAxMywgMHgwMDFlLCAweDAwMDUsIDB4YTA4ZiwKLQkweGEwOGYsIDB4YTA5MSwgMHhhMDhmLCAweGEwOGYsIDB4YTA4ZiwgMHhhMGFiLCAweGEwOGYsIDB4MDgwYywKLQkweDBkODUsIDB4NzkxNCwgMHg5MThjLCAweDA4ZmYsIDB4OTE4ZCwgMHhmNjAwLCAweDc5MTYsIDB4MjAwOSwKLQkweDAwMDMsIDB4MDBiOSwgMHgyMDY5LCAweDE4NDcsIDB4NjgwNCwgMHhkMGJjLCAweDAxMzAsIDB4NjgyYywKLQkweDkwODQsIDB4MDBmZiwgMHg4MDA3LCAweDcwMzIsIDB4MDAxMCwgMHg3MDMzLCAweDNmMDAsIDB4NjBjMywKLQkweDAwMDEsIDB4MDgwNCwgMHhhMjcwLCAweDIwMDksIDB4MDAwMywgMHgwMDE5LCAweDcwMzMsIDB4N2YwMCwKLQkweDBjYjAsIDB4MDAxNiwgMHgwODBjLCAweGFhZjEsIDB4MDAxZSwgMHhiODEwLCAweDkwODUsIDB4MDEwMCwKLQkweDcwMDIsIDB4YjgxNCwgMHg3MDA2LCAweDIwNjksIDB4MTgwMCwgMHg2YTdjLCAweDcyMGEsIDB4NmE4MCwKLQkweDcyMGUsIDB4NzAxMywgMHgwODg4LCAweDkxOGQsIDB4MDAwOCwgMHg3MTE2LCAweDA4MGMsIDB4YTI2NCwKLQkweDcyMWEsIDB4N2EwOCwgMHg3MjIyLCAweDJmMTAsIDB4NzIyNiwgMHgwMDA1LCAweDAwYjYsIDB4MDBlNiwKLQkweDAwZDYsIDB4MDBjNiwgMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDM2LCAweDIwNjEsIDB4MDEwMCwKLQkweDIwNzEsIDB4MTgwMCwgMHg3MTYwLCAweDc4MTAsIDB4MjA1OCwgMHg3NmRjLCAweDk2YjQsIDB4MDAyOCwKLQkweDAxMTAsIDB4NzM3YywgMHg3NDgwLCAweDI1MDAsIDB4NzZkYywgMHg5NmI0LCAweDAwMjgsIDB4MDE0MCwKLQkweDIwMDEsIDB4MDRmZiwgMHg2MDYyLCAweDYwNjcsIDB4ZmZmZiwgMHg2MzZhLCAweDY0NmUsIDB4MDA1MCwKLQkweDIwMDEsIDB4MDBmZiwgMHg5MDg1LCAweDA0MDAsIDB4NjA2MiwgMHg2MDY3LCAweGZmZmYsIDB4NjA2YiwKLQkweDAwMDAsIDB4NjE2ZSwgMHhiOGI4LCAweDYwNzMsIDB4MDUzMCwgMHg2MDc3LCAweDAwMDgsIDB4Yjg4YywKLQkweDgwMDAsIDB4OTA4NCwgMHgwMGZmLCAweGI4OGUsIDB4ODAwNywgMHg5MDg1LCAweDAwMjAsIDB4NjA3YSwKLQkweDYwN2YsIDB4MDAwMCwgMHgyYjAwLCAweDYwODIsIDB4NjA4NywgMHhmZmZmLCAweDc4MTQsIDB4MDA5NiwKLQkweDIwNDgsIDB4YTg0OCwgMHg2MDhhLCAweGE4NDQsIDB4NjA4ZSwgMHhhODM4LCAweDYwYzYsIDB4YTgzNCwKLQkweDYwY2EsIDB4MDA5ZSwgMHhiODZjLCAweDYwY2UsIDB4NjBhYiwgMHgwMDM2LCAweDYwYWYsIDB4OTVkNSwKLQkweDYwZDcsIDB4MDAwMCwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHg5MDg0LCAweDAwMjgsIDB4MDEyOCwKLQkweDYwOWYsIDB4MDAwMCwgMHgyMDAxLCAweDAwOTIsIDB4MDA1OCwgMHg2MDI4LCAweGMwYmQsIDB4NjAyYSwKLQkweDYwOWYsIDB4MDBmZiwgMHgyMDExLCAweGZmZmYsIDB4MDgwYywgMHgyYWQzLCAweDIwMDEsIDB4MDBiMiwKLQkweDIwMTAsIDB4OTAwZSwgMHgwODBjLCAweDJhZTIsIDB4MjAwOSwgMHgwN2QwLCAweDA4MGMsIDB4OGE1MCwKLQkweDAwM2UsIDB4MDA0ZSwgMHgwMDVlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBiZSwKLQkweDAwMDUsIDB4MDBiNiwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwKLQkweDAwMzYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNzEsIDB4MTgwMCwgMHg3MTYwLCAweDc4MTAsIDB4MjA1OCwKLQkweGI4YTAsIDB4MjAyOCwgMHg3NmRjLCAweGQ2YWMsIDB4MTE2OCwgMHg5NTgyLCAweDAwN2UsIDB4MTI1MCwKLQkweDI1MDAsIDB4OTA5NCwgMHhmZjgwLCAweDExMzAsIDB4OTA4MCwgMHgzNDhlLCAweDIwMTUsIDB4OTI5NCwKLQkweDAwZmYsIDB4MDAyMCwgMHhiOTEwLCAweGJhMTQsIDB4NzM3YywgMHg3NDgwLCAweDcwZGMsIDB4ZDBhYywKLQkweDExMzAsIDB4OTU4MiwgMHgwMDdlLCAweDEyMTgsIDB4OTU4NCwgMHhmZjgwLCAweDAxMzgsIDB4OTE4NSwKLQkweDA0MDAsIDB4NjA2MiwgMHg2MjY2LCAweDYzNmEsIDB4NjQ2ZSwgMHgwMDMwLCAweDYwNjMsIDB4MDQwMCwKLQkweDYyNjYsIDB4NjA2YiwgMHgwMDAwLCAweDYxNmUsIDB4YjhiOCwgMHg2MDcyLCAweDYwNzcsIDB4MDAwMCwKLQkweGI4NjQsIDB4ZDBhNCwgMHgwMTEwLCAweDYwNzcsIDB4MDAwOCwgMHhiODhjLCAweDgwMDAsIDB4OTA4NCwKLQkweDAwZmYsIDB4Yjg4ZSwgMHg4MDA3LCAweDkwODUsIDB4MDAyMCwgMHg2MDdhLCAweDYwN2YsIDB4MDAwMCwKLQkweDJiMDAsIDB4NjA4MiwgMHg2MDg3LCAweGZmZmYsIDB4NzgxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTg0OCwKLQkweDYwOGEsIDB4YTg0NCwgMHg2MDhlLCAweGE4MzgsIDB4NjBjNiwgMHhhODM0LCAweDYwY2EsIDB4MDA5ZSwKLQkweGI4NmMsIDB4NjBjZSwgMHg2MGFiLCAweDAwMzYsIDB4NjBhZiwgMHg5NWQ1LCAweDYwZDcsIDB4MDAwMCwKLQkweGJhODQsIDB4NjI5ZSwgMHgwMGY2LCAweDIwNzksIDB4MDE0MCwgMHg3ODAzLCAweDAwMDAsIDB4MDBmZSwKLQkweDkwMGUsIDB4MjAxMSwgMHgwMDkyLCAweDA4MGMsIDB4MmFlMiwgMHgyMDA5LCAweDA3ZDAsIDB4MDgwYywKLQkweDhhNTAsIDB4MDAzZSwgMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA1NiwKLQkweDAwNDYsIDB4MDAzNiwgMHgyMDYxLCAweDAxMDAsIDB4MjA3MSwgMHgxODAwLCAweDc4MTAsIDB4MjA1OCwKLQkweGI4YTAsIDB4MjAyOCwgMHhiOTEwLCAweGJhMTQsIDB4NzM3YywgMHg3NDgwLCAweDc4MjAsIDB4MDAwMiwKLQkweGExZWYsIDB4YTFlZiwgMHhhMWVmLCAweGExZWYsIDB4YTFlZiwgMHhhMWVmLCAweGExZWYsIDB4YTFlZiwKLQkweGExZWYsIDB4YTFlZiwgMHhhMWYxLCAweGExZWYsIDB4YTFlZiwgMHhhMWVmLCAweGExZWYsIDB4MDgwYywKLQkweDBkODUsIDB4Yjg4NCwgMHg2MDllLCAweDc4MTQsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MDU1OCwKLQkweGFmOTAsIDB4OTc4NCwgMHhmZjAwLCAweDkxMDUsIDB4NjA2MiwgMHg4NzNmLCAweDk3ODQsIDB4ZmYwMCwKLQkweDAwMDYsIDB4NzgxNCwgMHgyMDQ4LCAweGE4NzgsIDB4YzBmYywgMHg5MDA1LCAweDAwMGUsIDB4MTE2MCwKLQkweGFmOTQsIDB4ODdmZiwgMHgwMTk4LCAweDIwMzksIDB4MDA5OCwgMHg5NzA1LCAweDYwNzIsIDB4NzgwOCwKLQkweDYwODIsIDB4MmYwMCwgMHg2MDg2LCAweDAwMzgsIDB4OTE4NSwgMHgyMjAwLCAweDYwNjIsIDB4NjA3MywKLQkweDAxMjksIDB4NjA3NywgMHgwMDAwLCAweGI4ODQsIDB4NjA5ZSwgMHgwMDUwLCAweDIwMzksIDB4MDAyOSwKLQkweDk3MDUsIDB4NjA3MiwgMHgwY2MwLCAweDkxODUsIDB4MDIwMCwgMHg2MDYyLCAweDYwNzMsIDB4MjAyOSwKLQkweGE4N2MsIDB4ZDBmYywgMHgwMTE4LCAweGFmOTQsIDB4ODdmZiwgMHgxMTIwLCAweDJmMDAsIDB4NjA4MiwKLQkweDc4MDgsIDB4NjA4NiwgMHg2MjY2LCAweDYzNmEsIDB4NjQ2ZSwgMHg2MDc3LCAweDAwMDAsIDB4Yjg4YywKLQkweDgwMDAsIDB4OTA4NCwgMHgwMGZmLCAweGI4OGUsIDB4ODAwNywgMHg2MDdhLCAweDYwN2YsIDB4MDAwMCwKLQkweGE4NDgsIDB4NjA4YSwgMHhhODQ0LCAweDYwOGUsIDB4YTgzOCwgMHg2MGM2LCAweGE4MzQsIDB4NjBjYSwKLQkweGI4NmMsIDB4NjBjZSwgMHg2MGFmLCAweDk1ZDUsIDB4NjBkNywgMHgwMDAwLCAweDA4MGMsIDB4YWFkMSwKLQkweDIwMDksIDB4MDdkMCwgMHg2MGM0LCAweDkwODQsIDB4ZmZmMCwgMHg5MDA1LCAweDAxMTAsIDB4MjAwOSwKLQkweDFiNTgsIDB4MDgwYywgMHg4YTUwLCAweDAwM2UsIDB4MDA0ZSwgMHgwMDVlLCAweDAwY2UsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDA5ZSwgMHgwMGJlLCAweDAwMDUsIDB4N2E0MCwgMHg5Mjk0LCAweDAwZmYsIDB4ODIxNywKLQkweDAwMDUsIDB4MDBkNiwgMHgyMDY5LCAweDE5ZTgsIDB4Njg2YiwgMHgwMDAxLCAweDAwZGUsIDB4MDAwNSwKLQkweDYwYTMsIDB4MDA1NiwgMHg2MGE3LCAweDk1NzUsIDB4MDBmMSwgMHgwODBjLCAweDhhNDIsIDB4MDAwNSwKLQkweDAwMTYsIDB4MjAwMSwgMHgxODBjLCAweDIwMGMsIDB4OTE4NCwgMHgwNjAwLCAweDkwODYsIDB4MDYwMCwKLQkweDAxMjgsIDB4MDA4OSwgMHgwODBjLCAweDhhNDIsIDB4MDAxZSwgMHgwMDA1LCAweGMxZTUsIDB4MjAwMSwKLQkweDE4MGMsIDB4MjEwMiwgMHgyMDAxLCAweDE5ZTksIDB4MjAwMywgMHgwMDAwLCAweDIwMDEsIDB4MTlmNCwKLQkweDIwMDMsIDB4MDAwMCwgMHgwYzg4LCAweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDIwMDksIDB4MTgwNCwKLQkweDIwMTEsIDB4MDAwOSwgMHgwODBjLCAweDJhZTIsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBjNiwgMHgwMDA2LCAweDA4MGMsIDB4YWNmYywgMHgwMTA2LCAweDIwNjEsIDB4MDEwMCwKLQkweDYxYTQsIDB4NjBhNywgMHg5NWY1LCAweDAwMTYsIDB4MDAyNiwgMHgyMDA5LCAweDE4MDQsIDB4MjAxMSwKLQkweDAwMDgsIDB4MDgwYywgMHgyYWUyLCAweDAwMmUsIDB4MDAxZSwgMHgwMTBlLCAweDA5MGMsIDB4YWQxOCwKLQkweDAwMGUsIDB4YTAwMSwgMHhhMDAxLCAweGEwMDEsIDB4NjFhNiwgMHgwMGNlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwYzYsIDB4MDBkNiwgMHgwMDE2LCAweDAwMjYsIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksIDB4MDE0MCwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgxNTEwLCAweDIwMDEsIDB4MWEwZCwgMHgyMDA0LCAweDkwMDUsIDB4MTkwNCwKLQkweGEzMWYsIDB4MDgwYywgMHg3ODQwLCAweDExYTgsIDB4MjA2OSwgMHgwMzgwLCAweDY4NDMsIDB4MDEwMSwKLQkweDY4NDQsIDB4ZDA4NCwgMHgxZGU4LCAweDIwNjEsIDB4MDEwMCwgMHg2MDIwLCAweGQwYjQsIDB4MTEyMCwKLQkweDYwMjQsIDB4ZDA4NCwgMHgwOTBjLCAweDBkODUsIDB4Njg0MywgMHgwMTAwLCAweDA4MGMsIDB4OGE0MiwKLQkweDA0YjAsIDB4MDBjNiwgMHgyMDYxLCAweDE5ZTgsIDB4MDBmMCwgMHg2OTA0LCAweDkxOTQsIDB4NDAwMCwKLQkweDA1OTgsIDB4MDgwYywgMHhhMmEwLCAweDA4MGMsIDB4MmFhOSwgMHgwMGM2LCAweDIwNjEsIDB4MTllOCwKLQkweDYxMzQsIDB4OTE5MiwgMHgwMDA4LCAweDEyNzgsIDB4ODEwOCwgMHg2MTM2LCAweDA4MGMsIDB4YWNmYywKLQkweDYxMzAsIDB4MDgwYywgMHhhZDE4LCAweDAwY2UsIDB4ODFmZiwgMHgwMWM4LCAweDA4MGMsIDB4OGE0MiwKLQkweDA4MGMsIDB4YTI5MywgMHgwMGEwLCAweDA4MGMsIDB4YWNmYywgMHg2MTMwLCAweDkxZTUsIDB4MDAwMCwKLQkweDAxNTAsIDB4MDgwYywgMHhlZWVlLCAweDA4MGMsIDB4OGE0YiwgMHg2MDAzLCAweDAwMDEsIDB4MjAwOSwKLQkweDAwMTQsIDB4MDgwYywgMHhiMjBhLCAweDA4MGMsIDB4YWQxOCwgMHgwMGNlLCAweDAwMDAsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDBkZSwgMHgwMGNlLCAweDAwMDUsIDB4MjAwMSwgMHgxYTBkLCAweDIwMDQsIDB4OTAwNSwKLQkweDFkYjAsIDB4MDBjNiwgMHgyMDYxLCAweDE5ZTgsIDB4NjEzNCwgMHg5MTkyLCAweDAwMDMsIDB4MWFkOCwKLQkweDgxMDgsIDB4NjEzNiwgMHgwMGNlLCAweDA4MGMsIDB4OGE0MiwgMHgwODBjLCAweDYwNTgsIDB4MjAwOSwKLQkweDE4NDYsIDB4MjExNCwgMHg4MjEwLCAweDIyMGEsIDB4MGMxMCwgMHgwMDk2LCAweDAwYzYsIDB4MDBkNiwKLQkweDAwZTYsIDB4MDAxNiwgMHgwMDI2LCAweDA4MGMsIDB4OGE1OCwgMHgwODBjLCAweGFjZmMsIDB4MjAwMSwKLQkweDAzODcsIDB4MjAwMywgMHgwMjAyLCAweDIwNzEsIDB4MTllOCwgMHg3MTRjLCAweDgxZmYsIDB4MDkwNCwKLQkweGEzZDksIDB4MjA2MSwgMHgwMTAwLCAweDIwNjksIDB4MDE0MCwgMHgwODBjLCAweDc3OWUsIDB4MTUxOCwKLQkweDAwMzYsIDB4MjAxOSwgMHgwMDAyLCAweDA4MGMsIDB4YTU5NiwgMHgwMDNlLCAweDA4MGMsIDB4ZWVlZSwKLQkweDcwNGMsIDB4OTA2NSwgMHgwMTgwLCAweDIwMDksIDB4MDA0YSwgMHg2MjIwLCAweDkyOTYsIDB4MDAwOSwKLQkweDExMzAsIDB4NjExNCwgMHgyMTQ4LCAweGE4N2IsIDB4MDAwNiwgMHgyMDA5LCAweDAwNGEsIDB4NjAwMywKLQkweDAwMDMsIDB4MDgwYywgMHhiMjBhLCAweDIwMDEsIDB4MDM4NiwgMHgyMDAzLCAweDUwNDAsIDB4MDgwYywKLQkweDc4NDAsIDB4MDgwNCwgMHhhM2Q5LCAweDY5MDQsIDB4ZDFmNCwgMHgwOTA0LCAweGEzZTYsIDB4MDgwYywKLQkweDJhYTksIDB4MDBjNiwgMHg3MDRjLCAweDkwNjUsIDB4MDkwYywgMHgwZDg1LCAweDYwMjAsIDB4MDBjZSwKLQkweDkwODYsIDB4MDAwNiwgMHgxNTIwLCAweDYxYzgsIDB4NjBjNCwgMHg5MTA1LCAweDE1MDAsIDB4NzE0YywKLQkweDkxODgsIDB4MDAxMSwgMHgyMTA0LCAweGQwZTQsIDB4MDFkMCwgMHg2MjE0LCAweDkyOTQsIDB4MTgwMCwKLQkweDExMjgsIDB4NjIyNCwgMHg5Mjk0LCAweDAwMDIsIDB4MTVlMCwgMHgwMDEwLCAweGMwZTQsIDB4MjAwYSwKLQkweDYwMTQsIDB4OTA4NCwgMHhlN2ZkLCAweDkwODUsIDB4MDAxMCwgMHg2MDE2LCAweDcwNGMsIDB4MjA2MCwKLQkweDA4MGMsIDB4OWE0OCwgMHgyMDA5LCAweDAwNDksIDB4MDgwYywgMHhiMjBhLCAweDA0NTAsIDB4MDgwYywKLQkweGVlZWUsIDB4NzA0YywgMHg5MDY1LCAweDkwODYsIDB4MWI1NSwgMHgxMTU4LCAweDA4MGMsIDB4YWZkMiwKLQkweDE1MDAsIDB4MjA2MSwgMHgxYjU1LCAweDYwNjQsIDB4ODAwMCwgMHg2MDY2LCAweDA4MGMsIDB4NjA1OCwKLQkweDAwYzAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsIDB4MDgwYywgMHhhNTk2LCAweDAwM2UsIDB4NzE0YywKLQkweDIxNjAsIDB4MjAwOSwgMHgwMDRhLCAweDYyMjAsIDB4OTI5NiwgMHgwMDA5LCAweDExMzAsIDB4NjExNCwKLQkweDIxNDgsIDB4YTg3YiwgMHgwMDA2LCAweDIwMDksIDB4MDA0YSwgMHg2MDAzLCAweDAwMDMsIDB4MDgwYywKLQkweGIyMGEsIDB4MjAwMSwgMHgwMzg3LCAweDIwMDMsIDB4MDIwMCwgMHgwODBjLCAweGFkMTgsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDA5ZSwgMHgwMDA1LCAweGQxZWMsIDB4MTkwNCwKLQkweGEzN2YsIDB4MDgwNCwgMHhhMzgxLCAweDAwMjYsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZTgsIDB4NzA2YywKLQkweGQwODQsIDB4MDFlOCwgMHhjMDg0LCAweDcwNmUsIDB4NzE0YywgMHg4MWZmLCAweDAxYzAsIDB4MjA3MSwKLQkweDAxMDAsIDB4OTE4OCwgMHgwMDA4LCAweDIxMTQsIDB4OTI4ZSwgMHgwMDA2LCAweDExMzgsIDB4MjAwOSwKLQkweDE5ODQsIDB4MjAxMSwgMHgwMDEyLCAweDA4MGMsIDB4MmFlMiwgMHgwMDQ4LCAweDkyOGUsIDB4MDAwOSwKLQkweDBkYjAsIDB4MjAwOSwgMHgxOTg0LCAweDIwMTEsIDB4MDAxNiwgMHgwODBjLCAweDJhZTIsIDB4MDBlZSwKLQkweDAwMmUsIDB4MDAwNSwgMHg5MDM2LCAweDIwMDEsIDB4MTlmMiwgMHgyMDA0LCAweDkwMDUsIDB4MDEyOCwKLQkweDljMDYsIDB4MDEyOCwgMHgyYzMwLCAweDYwMGMsIDB4MGNjOCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDAwZjYsIDB4MjA3OSwgMHgxOWU4LCAweDYxMGMsIDB4OTAwNiwgMHg2MDBlLCAweDYwNDQsIDB4YzBmYywKLQkweDYwNDYsIDB4ODZmZiwgMHgxMTQwLCAweDc4MjQsIDB4OWMwNiwgMHgxMTE4LCAweDc4MjYsIDB4NzgyYSwKLQkweDAwNTAsIDB4NzkyYSwgMHgwMDQwLCAweDAwYzYsIDB4MjY2MCwgMHg2MTBlLCAweDAwY2UsIDB4NzgyNCwKLQkweDljMDYsIDB4MTEwOCwgMHg3ZTI2LCAweDA4MGMsIDB4YTY1ZCwgMHgwODBjLCAweGQxMGMsIDB4MDBmZSwKLQkweDAwMDUsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4MTIwMCwgMHg3ODM4LCAweDcwMTIsIDB4NzgzYywKLQkweDcwMTYsIDB4MDBjNiwgMHg3ODIwLCAweDkwODYsIDB4MDAwNCwgMHgxMTQ4LCAweDc4MTAsIDB4OTAwNSwKLQkweDAxMzAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MTAsIDB4YjkxNCwgMHgwMGJlLCAweDAwMjAsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjA3YywgMHg2MTgwLCAweDkwODQsIDB4MDBmZiwgMHg3MDBhLCAweDcxMGUsIDB4MDBjZSwKLQkweDYwYzMsIDB4MDAyYywgMHgwODA0LCAweGEyNzAsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4MGYwMCwKLQkweDc4MDgsIDB4ZDA5YywgMHgwMTI4LCAweGI4MTAsIDB4OTA4NCwgMHgwMGZmLCAweDcwMGEsIDB4YjgxNCwKLQkweDcwMGUsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTI3MCwgMHgwMTU2LCAweDA4MGMsIDB4OWY0MywKLQkweDcwMDMsIDB4MDIwMCwgMHgwODBjLCAweDhiMTAsIDB4MjBhOSwgMHgwMDA2LCAweDIwMTEsIDB4ZmZlYywKLQkweDIwMTksIDB4ZmZlZCwgMHg5ZWYwLCAweDAwMDIsIDB4MjMwNSwgMHgyMDcyLCAweDhlNzAsIDB4MjIwNSwKLQkweDIwNzIsIDB4OGU3MCwgMHg5Mzk4LCAweDAwMDIsIDB4OTI5MCwgMHgwMDAyLCAweDFmMDQsIDB4YTQ4NCwKLQkweDYwYzMsIDB4MDAxYywgMHgwMTVlLCAweDA4MDQsIDB4YTI3MCwgMHgwMDE2LCAweDAwMjYsIDB4MDgwYywKLQkweDlmMWYsIDB4MDgwYywgMHg5ZjMxLCAweDllODAsIDB4MDAwNCwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMCwKLQkweDc4MTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4MDAsIDB4MjA0OCwgMHhhODYwLCAweDIwZTAsIDB4YTg1YywKLQkweDkwODAsIDB4MDAyMSwgMHgyMDk4LCAweDAwOWUsIDB4NzgwOCwgMHg5MDg4LCAweDAwMDIsIDB4MjFhOCwKLQkweDkxOTIsIDB4MDAxMCwgMHgxMjUwLCAweDQwMDMsIDB4OTA4MCwgMHgwMDA0LCAweDgwMDMsIDB4NjBjMiwKLQkweDA4MGMsIDB4YTI3MCwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgyMGE5LCAweDAwMTAsIDB4NDAwMywKLQkweDA4MGMsIDB4YWFkYywgMHgyMGExLCAweDAyNDAsIDB4MjJhOCwgMHg0MDAzLCAweDBjNjgsIDB4MDgwYywKLQkweDllZjgsIDB4NzAwMywgMHg2MjAwLCAweDc4MDgsIDB4NzAwZSwgMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwKLQkweGEyNzAsIDB4MDAxNiwgMHgwMDI2LCAweDA4MGMsIDB4OWVmOCwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwKLQkweDAyNGMsIDB4NzgxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTgwMCwgMHgyMDQ4LCAweGE4NjAsIDB4MjBlMCwKLQkweGE4NWMsIDB4OTA4MCwgMHgwMDIzLCAweDIwOTgsIDB4MDA5ZSwgMHg3ODA4LCAweDkwODgsIDB4MDAwMiwKLQkweDIxYTgsIDB4NDAwMywgMHg4MDAzLCAweDYwYzIsIDB4MDgwYywgMHhhMjcwLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMGM2LCAweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE5ZTgsIDB4NzAxMCwgMHgyMDYwLCAweDhjZmYsIDB4MDE4OCwgMHgwODBjLCAweGQxMzIsIDB4MTExMCwKLQkweDA4MGMsIDB4YmI1YywgMHg2MDBjLCAweDAwMDYsIDB4MDgwYywgMHhkM2FlLCAweDYwMGYsIDB4MDAwMCwKLQkweDA4MGMsIDB4YjE2YywgMHgwODBjLCAweGE2NWQsIDB4MDBjZSwgMHgwYzY4LCAweDJjMDAsIDB4NzAxMiwKLQkweDcwMGUsIDB4MDEyZSwgMHgwMDBlLCAweDAwY2UsIDB4MDBlZSwgMHgwMDA1LCAweDAxMjYsIDB4MDE1NiwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDI2LCAweDAwMTYsIDB4MDAwNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHg5MThjLCAweGU3ZmYsIDB4MjEwMiwKLQkweDIwNjksIDB4MDEwMCwgMHgyMDc5LCAweDAxNDAsIDB4MjA3MSwgMHgxOWU4LCAweDcwMzAsIDB4MjA2MCwKLQkweDhjZmYsIDB4MDU0OCwgMHgwODBjLCAweGEyYTAsIDB4NmFjMCwgMHg2OGMzLCAweDAwMDAsIDB4MDgwYywKLQkweDhhNGIsIDB4MDBjNiwgMHgyMDYxLCAweDAxMDAsIDB4MDgwYywgMHhhYzJkLCAweDAwY2UsIDB4MjBhOSwKLQkweDAxZjQsIDB4MDRiMSwgMHgwODBjLCAweDk5ZWQsIDB4NjA0NCwgMHhkMGFjLCAweDExMjgsIDB4MjAwMSwKLQkweDE5ODgsIDB4MjAwNCwgMHg2MDRhLCAweDAwMjAsIDB4MjAwOSwgMHgwMDEzLCAweDA4MGMsIDB4YjIwYSwKLQkweDAwMGUsIDB4MDAxZSwgMHgwMDJlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAxNWUsIDB4MDEyZSwgMHgwMDA1LCAweDIwMDEsIDB4MTgwMCwgMHgyMDA0LCAweDkwOTYsIDB4MDAwMSwKLQkweDBkNzgsIDB4OTA5NiwgMHgwMDA0LCAweDBkNjAsIDB4MDgwYywgMHg4YTRiLCAweDY4MTQsIDB4OTA4NCwKLQkweDAwMDEsIDB4MDExMCwgMHg2OGE3LCAweDk1ZjUsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwKLQkweDIwMTEsIDB4NjAwMiwgMHgwODBjLCAweDg5OTMsIDB4MjBhOSwgMHgwMWY0LCAweDAwMDksIDB4MDhjMCwKLQkweDY4MjQsIDB4ZDA5NCwgMHgwMTQwLCAweDY4MjcsIDB4MDAwNCwgMHg3ODA0LCAweDkwODQsIDB4NDAwMCwKLQkweDE5MGMsIDB4MmFhOSwgMHgwMDkwLCAweGQwODQsIDB4MDExOCwgMHg2ODI3LCAweDQwMDEsIDB4MDAxMCwKLQkweDFmMDQsIDB4YTU3OCwgMHg3ODA0LCAweDkwODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsIDB4MDEwMCwKLQkweDA4MGMsIDB4MmE5OSwgMHg5MDA2LCAweDA4MGMsIDB4MmE5OSwgMHgwMDA1LCAweDAxMjYsIDB4MDE1NiwKLQkweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDI2LCAweDAwMTYsIDB4MDAwNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywgMHg5MThjLCAweGRiZmYsIDB4MjEwMiwKLQkweDIwNjksIDB4MDEwMCwgMHgyMDc5LCAweDAxNDAsIDB4MjA3MSwgMHgwMzgwLCAweDcwMWMsIDB4MDAwNiwKLQkweDcwMWYsIDB4MDIwMiwgMHgyMDcxLCAweDE5ZTgsIDB4NzA0YywgMHgyMDYwLCAweDhjZmYsIDB4MDkwNCwKLQkweGE2MTksIDB4MDgwYywgMHhhZjg0LCAweDA5MDQsIDB4YTYxOSwgMHg5Mzg2LCAweDAwMDIsIDB4MTEyOCwKLQkweDY4MTQsIDB4OTA4NCwgMHgwMDAyLCAweDA5MDQsIDB4YTYxOSwgMHg2OGFmLCAweDk1ZjUsIDB4NjgxNywKLQkweDAwMTAsIDB4MjAwOSwgMHgwMGZhLCAweDgxMDksIDB4MWRmMCwgMHg2OWM2LCAweDY4Y2IsIDB4MDAwOCwKLQkweDA4MGMsIDB4OGE1OCwgMHgwODBjLCAweDFlNDQsIDB4MjAwMSwgMHgwMDMyLCAweDY5MjAsIDB4ZDFiYywKLQkweDAxMzAsIDB4ODAwMSwgMHgxZGQ4LCAweDY5MmMsIDB4OTE4ZCwgMHgwMDA4LCAweDY5MmUsIDB4MDAxNiwKLQkweDIwMDksIDB4MDA0MCwgMHgwODBjLCAweDIyMjAsIDB4MDAxZSwgMHgyMGE5LCAweDAzZTgsIDB4NjgyNCwKLQkweGQwOTQsIDB4MDE0MCwgMHg2ODI3LCAweDAwMDQsIDB4NzgwNCwgMHg5MDg0LCAweDQwMDAsIDB4MTkwYywKLQkweDJhYTksIDB4MDA5MCwgMHhkMDhjLCAweDAxMTgsIDB4NjgyNywgMHgwMDAyLCAweDAwMTAsIDB4MWYwNCwKLQkweGE1ZTcsIDB4NzgwNCwgMHg5MDg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywKLQkweDJhOTksIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4NjgyNywgMHg0MDAwLCAweDY4MjQsIDB4ODNmZiwKLQkweDExODAsIDB4MjAwOSwgMHgwMDQ5LCAweDYwMjAsIDB4OTA4NiwgMHgwMDA5LCAweDAxNTAsIDB4MDgwYywKLQkweDlhNDgsIDB4NjA0NCwgMHhkMGFjLCAweDExMTgsIDB4NjAwMywgMHgwMDAyLCAweDAwMTAsIDB4MDgwYywKLQkweGIyMGEsIDB4MDAwZSwgMHgyMDcxLCAweDAzODAsIDB4ZDA4YywgMHgxMTEwLCAweDcwMWYsIDB4MDIwMCwKLQkweDAwMGUsIDB4MDAxZSwgMHgwMDJlLCAweDAwNmUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAxNWUsIDB4MDEyZSwgMHgwMDA1LCAweDAwZDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA2OSwKLQkweDE5ZTgsIDB4NmEwNiwgMHgwMTJlLCAweDAwZGUsIDB4MDAwNSwgMHgwMGQ2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA2OSwgMHgxOWU4LCAweDZhM2UsIDB4MDEyZSwgMHgwMGRlLCAweDAwMDUsIDB4MDgwYywKLQkweGEwNTAsIDB4NzA0NywgMHgxMDAwLCAweDAwOTgsIDB4MDgwYywgMHhhMDUwLCAweDcwNDcsIDB4NDAwMCwKLQkweDAwNzAsIDB4MDgwYywgMHhhMDUwLCAweDcwNDcsIDB4MjAwMCwgMHgwMDQ4LCAweDA4MGMsIDB4YTA1MCwKLQkweDcwNDcsIDB4MDQwMCwgMHgwMDIwLCAweDA4MGMsIDB4YTA1MCwgMHg3MDQ3LCAweDAyMDAsIDB4Nzg1YywKLQkweDcwMzIsIDB4NjBjMywgMHgwMDIwLCAweDA4MDQsIDB4YTI3MCwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwKLQkweDcwMmMsIDB4OTAwNSwgMHgwMTEwLCAweDgwMDEsIDB4NzAyZSwgMHgwMGVlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwZTYsIDB4MDBkNiwgMHgwMGM2LCAweDAwNzYsIDB4MDA2NiwgMHgwMDA2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHgxOWU4LCAweDc2MjAsIDB4MjY2MCwgMHgyNjc4LCAweDIwMzksIDB4MDAwMSwKLQkweDg3ZmYsIDB4MDkwNCwgMHhhNzAyLCAweDhjZmYsIDB4MDkwNCwgMHhhNzAyLCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDYsIDB4MTkwNCwgMHhhNmZkLCAweDg4ZmYsIDB4MDEzOCwgMHgyODAwLCAweDljMDYsIDB4MTkwNCwKLQkweGE2ZmQsIDB4MjAzOSwgMHgwMDAwLCAweDAwNTAsIDB4NjAxMCwgMHg5YjA2LCAweDE5MDQsIDB4YTZmZCwKLQkweDg1ZmYsIDB4MDEyMCwgMHg2MDVjLCAweDkxMDYsIDB4MTkwNCwgMHhhNmZkLCAweDcwMzAsIDB4OWMwNiwKLQkweDE1YjAsIDB4MjA2OSwgMHgwMTAwLCAweDY4YzAsIDB4OTAwNSwgMHgxMTYwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxNDgsIDB4NjgyNywgMHgwMDAxLCAweDA4MGMsIDB4OGE0YiwgMHgwODBjLCAweGE3OGEsIDB4NzAzMywKLQkweDAwMDAsIDB4MDQyOCwgMHgwODBjLCAweDhhNGIsIDB4NjgyMCwgMHhkMGI0LCAweDAxMTAsIDB4NjhhNywKLQkweDk1ZjUsIDB4NjgxNywgMHgwMDA4LCAweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweGE3OGEsIDB4NzAzMywKLQkweDAwMDAsIDB4MDAzNiwgMHgyMDY5LCAweDAxNDAsIDB4NmIwNCwgMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwKLQkweDIwMDEsIDB4MDEwMCwgMHgwODBjLCAweDJhOTksIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjA2OSwKLQkweDAxMDAsIDB4NjgyNCwgMHhkMDg0LCAweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4NzAyMCwKLQkweDljMzYsIDB4MTExMCwgMHg2NjBjLCAweDc2MjIsIDB4NzAxYywgMHg5YzM2LCAweDExNDAsIDB4MmMwMCwKLQkweDlmMzYsIDB4MDExOCwgMHgyZjAwLCAweDcwMWUsIDB4MDAxMCwgMHg3MDFmLCAweDAwMDAsIDB4NjYwYywKLQkweDAwNjYsIDB4MmMwMCwgMHg5ZjA2LCAweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4ODlmZiwKLQkweDExNjgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweDA4MGMsIDB4Y2YxOSwKLQkweDAxMTAsIDB4MDgwYywgMHhlYTMwLCAweDAwOWUsIDB4MDgwYywgMHhiMWE3LCAweDA4MGMsIDB4YTY1ZCwKLQkweDg4ZmYsIDB4MTE5MCwgMHgwMGNlLCAweDA4MDQsIDB4YTY3OCwgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwKLQkweDA4MDQsIDB4YTY3OCwgMHg5MDA2LCAweDAxMmUsIDB4MDAwZSwgMHgwMDZlLCAweDAwN2UsIDB4MDBjZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAxYiwgMHgwMDAwLCAweDAwY2UsIDB4OThjNSwKLQkweDAwMDEsIDB4MGM4OCwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwgMHgwMDk2LCAweDAwYzYsIDB4MDA2NiwKLQkweDAwMjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE5ZTgsIDB4NzY0OCwKLQkweDI2NjAsIDB4MjY3OCwgMHg4Y2ZmLCAweDA5MDQsIDB4YTc3OSwgMHg2MDIwLCAweDkwODYsIDB4MDAwNiwKLQkweDE5MDQsIDB4YTc3NCwgMHg4N2ZmLCAweDAxMjgsIDB4MjcwMCwgMHg5YzA2LCAweDE5MDQsIDB4YTc3NCwKLQkweDAwNDgsIDB4NjAxMCwgMHg5YjA2LCAweDE5MDQsIDB4YTc3NCwgMHg4NWZmLCAweDAxMTgsIDB4NjA1YywKLQkweDkxMDYsIDB4MTVkMCwgMHg3MDRjLCAweDljMDYsIDB4MTE3OCwgMHgwMDM2LCAweDIwMTksIDB4MDAwMSwKLQkweDA4MGMsIDB4YTU5NiwgMHg3MDNmLCAweDAwMDAsIDB4OTAwNiwgMHg3MDRlLCAweDcwNmEsIDB4NzA1MiwKLQkweDcwNmUsIDB4MDgwYywgMHhhZmY0LCAweDAwM2UsIDB4NzA0OCwgMHg5YzM2LCAweDExMTAsIDB4NjYwYywKLQkweDc2NGEsIDB4NzA0NCwgMHg5YzM2LCAweDExNDAsIDB4MmMwMCwgMHg5ZjM2LCAweDAxMTgsIDB4MmYwMCwKLQkweDcwNDYsIDB4MDAxMCwgMHg3MDQ3LCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4OWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMTQsIDB4MjA0OCwKLQkweDA4MGMsIDB4Y2YxOSwgMHgwMTEwLCAweDA4MGMsIDB4ZWEzMCwgMHgwODBjLCAweGIxYTcsIDB4ODdmZiwKLQkweDExOTgsIDB4MDBjZSwgMHgwODA0LCAweGE3MjIsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsIDB4MDgwNCwKLQkweGE3MjIsIDB4OTAwNiwgMHgwMTJlLCAweDAwMGUsIDB4MDAyZSwgMHgwMDZlLCAweDAwY2UsIDB4MDA5ZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwMDUsIDB4NjAxYiwgMHgwMDAwLCAweDAwY2UsIDB4OTdiZCwKLQkweDAwMDEsIDB4MGM4MCwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwgMHg5MDA2LCAweDcwMzIsIDB4NzAwYSwKLQkweDcwMDQsIDB4OTA4NiwgMHgwMDAzLCAweDAxNTgsIDB4MjAwMSwgMHgxODAwLCAweDIwMDQsIDB4OTA4NiwKLQkweDAwMDIsIDB4MTExOCwgMHg3MDA3LCAweDAwMDUsIDB4MDAxMCwgMHg3MDA3LCAweDAwMDAsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBmNiwgMHgwMGU2LCAweDAwYzYsIDB4MDA2NiwgMHgwMDI2LCAweDAwMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE5ZTgsIDB4MmMxMCwgMHg3NjQ4LCAweDI2NjAsIDB4MjY3OCwKLQkweDhjZmYsIDB4MDU0MCwgMHgyMjAwLCAweDljMDYsIDB4MTUwOCwgMHg3MDQ4LCAweDljMzYsIDB4MTExMCwKLQkweDY2MGMsIDB4NzY0YSwgMHg3MDQ0LCAweDljMzYsIDB4MTE0MCwgMHgyYzAwLCAweDlmMzYsIDB4MDExOCwKLQkweDJmMDAsIDB4NzA0NiwgMHgwMDEwLCAweDcwNDcsIDB4MDAwMCwgMHg2NjBjLCAweDJjMDAsIDB4OWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDYwMDQsIDB4OTA4NiwKLQkweDAwNDAsIDB4MDkwYywgMHg5OWVkLCAweDkwODUsIDB4MDAwMSwgMHgwMDIwLCAweDJjNzgsIDB4NjAwYywKLQkweDIwNjAsIDB4MDhiMCwgMHgwMTJlLCAweDAwMGUsIDB4MDAyZSwgMHgwMDZlLCAweDAwY2UsIDB4MDBlZSwKLQkweDAwZmUsIDB4MDAwNSwgMHgwMDk2LCAweDAwZjYsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDA2NiwKLQkweDAwMjYsIDB4MDAwNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyMDcxLCAweDE5ZTgsIDB4NzYxMCwKLQkweDI2NjAsIDB4MjY3OCwgMHg4Y2ZmLCAweDA5MDQsIDB4YTg3NywgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwKLQkweGI4YTAsIDB4MDBiZSwgMHg5MjA2LCAweDE5MDQsIDB4YTg3MiwgMHg3MDMwLCAweDljMDYsIDB4MTUyMCwKLQkweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweDkwMDUsIDB4MDkwNCwgMHhhODQ5LCAweDA4MGMsIDB4YTJhMCwKLQkweDY4YzMsIDB4MDAwMCwgMHgwODBjLCAweGE3OGEsIDB4NzAzMywgMHgwMDAwLCAweDAwMzYsIDB4MjA2OSwKLQkweDAxNDAsIDB4NmIwNCwgMHg5Mzg0LCAweDEwMDAsIDB4MDEzOCwgMHgyMDAxLCAweDAxMDAsIDB4MDgwYywKLQkweDJhOTksIDB4OTAwNiwgMHgwODBjLCAweDJhOTksIDB4MjA2OSwgMHgwMTAwLCAweDY4MjQsIDB4ZDA4NCwKLQkweDAxMTAsIDB4NjgyNywgMHgwMDAxLCAweDAwM2UsIDB4NzAxMCwgMHg5YzM2LCAweDExMTAsIDB4NjYwYywKLQkweDc2MTIsIDB4NzAwYywgMHg5YzM2LCAweDExNDAsIDB4MmMwMCwgMHg5ZjM2LCAweDAxMTgsIDB4MmYwMCwKLQkweDcwMGUsIDB4MDAxMCwgMHg3MDBmLCAweDAwMDAsIDB4NjYwYywgMHgwMDY2LCAweDJjMDAsIDB4OWYwNiwKLQkweDAxMTAsIDB4N2UwZSwgMHgwMDA4LCAweDI2NzgsIDB4NjAwZiwgMHgwMDAwLCAweDA4MGMsIDB4ZDEyMSwKLQkweDExODAsIDB4MDgwYywgMHgzMzQ0LCAweDA4MGMsIDB4ZDEzMiwgMHgxNTE4LCAweDA4MGMsIDB4YmI1YywKLQkweDA0MDAsIDB4MDgwYywgMHhhNzhhLCAweDY4MjQsIDB4ZDA4NCwgMHgwOWIwLCAweDY4MjcsIDB4MDAwMSwKLQkweDA4OTgsIDB4MDgwYywgMHhkMTMyLCAweDExMTgsIDB4MDgwYywgMHhiYjVjLCAweDAwOTAsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjE5LCAweDAxNjgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDMsIDB4MTUwOCwKLQkweGE4NjcsIDB4MDEwMywgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDcwMDYsIDB4MDgwYywKLQkweGQxMGMsIDB4MDgwYywgMHhkM2FlLCAweDA4MGMsIDB4YjFhNywgMHgwODBjLCAweGE2NWQsIDB4MDBjZSwKLQkweDA4MDQsIDB4YTdmMiwgMHgyYzc4LCAweDYwMGMsIDB4MjA2MCwgMHgwODA0LCAweGE3ZjIsIDB4MDEyZSwKLQkweDAwMGUsIDB4MDAyZSwgMHgwMDZlLCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwZmUsIDB4MDA5ZSwKLQkweDAwMDUsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDYsIDB4MWQyMCwgMHgwODBjLCAweGVhMzAsIDB4MGMwOCwKLQkweDAwZDYsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDIwMCwgMHg3MDA3LCAweDAwMTQsIDB4NjBjMywKLQkweDAwMTQsIDB4MjBlMSwgMHgwMDAxLCAweDIwOTksIDB4MTk4OSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwKLQkweDAyNTAsIDB4MjBhOSwgMHgwMDA0LCAweDQwMDMsIDB4NzAyMywgMHgwMDA0LCAweDcwMjcsIDB4Nzg3OCwKLQkweDA4MGMsIDB4YTI3MCwgMHgwMGRlLCAweDAwMDUsIDB4MDgwYywgMHg5ZjQzLCAweDcwMGIsIDB4MDgwMCwKLQkweDc4MTQsIDB4OTA4NCwgMHhmZjAwLCAweDcwMGUsIDB4NzgxNCwgMHg5MDg0LCAweDAwZmYsIDB4NzAyMiwKLQkweDc4MmMsIDB4NzAyNiwgMHg3ODYwLCAweDkwODQsIDB4MDBmZiwgMHg5MDg1LCAweDAyMDAsIDB4NzAwMiwKLQkweDc4NjAsIDB4OTA4NCwgMHhmZjAwLCAweDgwMDcsIDB4NzAwNiwgMHg2MGMyLCAweDA4MDQsIDB4YTI3MCwKLQkweDAwYjYsIDB4MDBkNiwgMHgwMDE2LCAweDAwZDYsIDB4MmY2OCwgMHgyMDA5LCAweDAwMzUsIDB4MDgwYywKLQkweGQ1YmIsIDB4MDBkZSwgMHgxOTA0LCAweGE5MjUsIDB4MDgwYywgMHg5ZWY4LCAweDcwMDMsIDB4MTMwMCwKLQkweDc4MmMsIDB4MDgwYywgMHhhYTM0LCAweDIwNjgsIDB4NjgyMCwgMHg5MDg2LCAweDAwMDMsIDB4MDU2MCwKLQkweDc4MTAsIDB4MjA1OCwgMHhiYWEwLCAweDA4MGMsIDB4YjA5NCwgMHgxMWQ4LCAweDkyODYsIDB4MDA3ZSwKLQkweDExMjgsIDB4NzAwYiwgMHgwMGZmLCAweDcwMGYsIDB4ZmZmZSwgMHgwNDk4LCAweDkyODYsIDB4MDA3ZiwKLQkweDExMjgsIDB4NzAwYiwgMHgwMGZmLCAweDcwMGYsIDB4ZmZmZCwgMHgwNDU4LCAweDkyODQsIDB4ZmY4MCwKLQkweDAxODAsIDB4OTI4NiwgMHgwMDgwLCAweDExMjgsIDB4NzAwYiwgMHgwMGZmLCAweDcwMGYsIDB4ZmZmYywKLQkweDA0MDAsIDB4OTJkOCwgMHgxMDAwLCAweDJiNWMsIDB4YjgxMCwgMHg3MDBhLCAweGI4MTQsIDB4NzAwZSwKLQkweDAwYzAsIDB4Yjg4NCwgMHg3MDBlLCAweDAwYTgsIDB4MDgwYywgMHhiMDk0LCAweDExMzAsIDB4NzgxMCwKLQkweDIwNTgsIDB4YjhhMCwgMHg5MDgyLCAweDAwN2UsIDB4MDI1MCwgMHgwMGQ2LCAweDIwNjksIDB4MTgxZiwKLQkweDJkMDQsIDB4NzAwYSwgMHg4ZDY4LCAweDJkMDQsIDB4NzAwZSwgMHgwMGRlLCAweDAwMTAsIDB4NjAzNCwKLQkweDcwMGUsIDB4NzgzOCwgMHg3MDEyLCAweDc4M2MsIDB4NzAxNiwgMHg2MGMzLCAweDAwMGMsIDB4MDAxZSwKLQkweDAwZGUsIDB4MDgwYywgMHhhMjcwLCAweDAwYmUsIDB4MDAwNSwgMHg3ODFiLCAweDAwMDEsIDB4NzgwMywKLQkweDAwMDYsIDB4MDAxZSwgMHgwMGRlLCAweDAwYmUsIDB4MDAwNSwgMHg3OTJjLCAweDkxODAsIDB4MDAwOCwKLQkweDIwMGMsIDB4OTE4NiwgMHgwMDA2LCAweDAxYzAsIDB4OTE4NiwgMHgwMDAzLCAweDA5MDQsIDB4YTlhNCwKLQkweDkxODYsIDB4MDAwNSwgMHgwOTA0LCAweGE5OGMsIDB4OTE4NiwgMHgwMDA0LCAweDA1ZjAsIDB4OTE4NiwKLQkweDAwMDgsIDB4MDkwNCwgMHhhOTk1LCAweDc4MDcsIDB4MDAzNywgMHg3ODJmLCAweDAwMDMsIDB4NzgxNywKLQkweDE3MDAsIDB4MDgwYywgMHhhYTExLCAweDAwMDUsIDB4MDgwYywgMHhhOWQyLCAweDAwZDYsIDB4MDAyNiwKLQkweDc5MmMsIDB4MjE2OCwgMHgyMDA5LCAweDQwMDAsIDB4NjgwMCwgMHg2YTQ0LCAweGQyZmMsIDB4MTFmOCwKLQkweDAwMDIsIDB4YTk2YywgMHhhOTc3LCAweGE5NmUsIDB4YTk3NywgMHhhOTczLCAweGE5NmMsIDB4YTk2YywKLQkweGE5NzcsIDB4YTk3NywgMHhhOTc3LCAweGE5NzcsIDB4YTk2YywgMHhhOTZjLCAweGE5NmMsIDB4YTk2YywKLQkweGE5NmMsIDB4YTk3NywgMHhhOTZjLCAweGE5NzcsIDB4MDgwYywgMHgwZDg1LCAweDY4MjQsIDB4ZDBlNCwKLQkweDAxMTAsIDB4ZDBjYywgMHgwMTEwLCAweDkwMGUsIDB4MDAxMCwgMHgyMDA5LCAweDIwMDAsIDB4NjgyYywKLQkweDcwMjIsIDB4NjgzMCwgMHg3MDI2LCAweDA4MDQsIDB4YTljYiwgMHgwODBjLCAweGE5ZDIsIDB4MDBkNiwKLQkweDAwMjYsIDB4NzkyYywgMHgyMTY4LCAweDIwMDksIDB4NDAwMCwgMHg2YTAwLCAweDkyODYsIDB4MDAwMiwKLQkweDExMDgsIDB4OTAwZSwgMHgwODA0LCAweGE5Y2IsIDB4MDgwYywgMHhhOWQyLCAweDAwZDYsIDB4MDAyNiwKLQkweDc5MmMsIDB4MjE2OCwgMHgyMDA5LCAweDQwMDAsIDB4MDRiMCwgMHgwNGUxLCAweDAwZDYsIDB4MDAyNiwKLQkweDc5MmMsIDB4MjE2OCwgMHgyMDA5LCAweDQwMDAsIDB4OTI4NiwgMHgwMDA1LCAweDAxMTgsIDB4OTI4NiwKLQkweDAwMDIsIDB4MTEwOCwgMHg5MDBlLCAweDA0MzgsIDB4MDQ2OSwgMHgwMGQ2LCAweDAwMjYsIDB4NzkyYywKLQkweDIxNjgsIDB4NjgxNCwgMHg2OTI0LCAweGMxODUsIDB4NjkyNiwgMHgwMDk2LCAweDIwNDgsIDB4YTlhYywKLQkweGE4MzQsIDB4OTExMiwgMHhhOWIwLCAweGE4MzgsIDB4MDA5ZSwgMHg5MTAzLCAweDcwMjIsIDB4NzIyNiwKLQkweDc5MmMsIDB4OTE4MCwgMHgwMDExLCAweDIwMDQsIDB4ZDBmYywgMHgxMTQ4LCAweDkxODAsIDB4MDAwMCwKLQkweDIwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDAxMzAsIDB4OTA4ZSwgMHgwMDA0LCAweDAxMTgsIDB4MjAwOSwKLQkweDQwMDAsIDB4MDAwOCwgMHg5MDBlLCAweDcxMmEsIDB4NjBjMywgMHgwMDE4LCAweDAwMmUsIDB4MDBkZSwKLQkweDA4MDQsIDB4YTI3MCwgMHgwMGI2LCAweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNjYsIDB4MDgwYywKLQkweDlmNDMsIDB4OTAwNiwgMHg3MDAzLCAweDAyMDAsIDB4NzkzOCwgMHg3MTBhLCAweDc5M2MsIDB4NzEwZSwKLQkweDc4MTAsIDB4MjA1OCwgMHhiOGEwLCAweDA4MGMsIDB4YjA5NCwgMHgxMTE4LCAweDkwOTIsIDB4MDA3ZSwKLQkweDAyNjgsIDB4MDBkNiwgMHgyMDY5LCAweDE4MWYsIDB4MmQyYywgMHg4ZDY4LCAweDJkMzQsIDB4OTBkOCwKLQkweDEwMDAsIDB4MmI1YywgMHhiYjEwLCAweGJjMTQsIDB4MDBkZSwgMHgwMDI4LCAweDkwMWUsIDB4YmM4NCwKLQkweDIwMjksIDB4MDAwMCwgMHg2NjM0LCAweDc4MmMsIDB4OTA4MCwgMHgwMDA4LCAweDIwMDQsIDB4OTA4NiwKLQkweDAwMDMsIDB4MTEyOCwgMHg3NTEyLCAweDc2MTYsIDB4NzMxYSwgMHg3NDFlLCAweDAwMjAsIDB4NzMxMiwKLQkweDc0MTYsIDB4NzUxYSwgMHg3NjFlLCAweDAwNmUsIDB4MDA1ZSwgMHgwMDRlLCAweDAwM2UsIDB4MDBiZSwKLQkweDAwMDUsIDB4MDgwYywgMHg5ZjQzLCAweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDcwMGEsIDB4NzgxNCwKLQkweDcwMGUsIDB4NzAwZSwgMHg2MGMzLCAweDAwMDgsIDB4MDgwNCwgMHhhMjcwLCAweDA4MGMsIDB4OWVlZiwKLQkweDcwMDMsIDB4MTQwMCwgMHg3ODM4LCAweDcwMGEsIDB4MDA3OSwgMHg3ODNjLCAweDcwMGUsIDB4NzgyYywKLQkweDcwMTIsIDB4NzgzMCwgMHg3MDE2LCAweDc4MzQsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDcsIDB4NzAxYSwKLQkweDYwYzMsIDB4MDAxMCwgMHgwODA0LCAweGEyNzAsIDB4MDBlNiwgMHgyMDcxLCAweDAyNDAsIDB4MDAwNiwKLQkweDAwZjYsIDB4MjA3OCwgMHg3ODEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGQ0LCAweGQwODQsIDB4MDEyMCwKLQkweDc4NGMsIDB4NzAyYSwgMHg3ODUwLCAweDcwMmUsIDB4MDBiZSwgMHgwMGZlLCAweDAwMGUsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDgwYywgMHg5ZjNhLCAweDcwMDMsIDB4MDEwMCwgMHg3ODJjLCAweDcwMGEsIDB4NzgxNCwKLQkweDcwMGUsIDB4NjBjMywgMHgwMDA4LCAweDA4MDQsIDB4YTI3MCwgMHgwMGE5LCAweDc5MTQsIDB4NzEyYSwKLQkweDYwYzMsIDB4MDAwMCwgMHg2MGE3LCAweDk1NzUsIDB4MDAyNiwgMHgwODBjLCAweDJhMDQsIDB4MDIyOCwKLQkweDIwMTEsIDB4MDEwMSwgMHgyMjA0LCAweGMwYzUsIDB4MjAxMiwgMHgwMDJlLCAweDA4MGMsIDB4YTI5MywKLQkweDA4MGMsIDB4OGE0MiwgMHgwMDA1LCAweDAwMzYsIDB4MDA5NiwgMHgwMGQ2LCAweDAwZTYsIDB4Nzg2MCwKLQkweDIwNDgsIDB4YWE3YywgMHg5Mjk2LCAweDAwYzAsIDB4OTI5NCwgMHgwMGZkLCAweGFhN2UsIDB4YWE4MCwKLQkweDkyOTQsIDB4MDMwMCwgMHhhYTgyLCAweGE5NmMsIDB4OTE5NCwgMHgwMGZmLCAweGFiNzQsIDB4OTM4NCwKLQkweDAwZmYsIDB4OTA4ZCwgMHhjMjAwLCAweGE5NmUsIDB4OTM4NCwgMHhmZjAwLCAweDkyMTUsIDB4YWE3NiwKLQkweGE4NzAsIDB4YWE3OCwgMHhhODdhLCAweGFhNzIsIDB4MDBkNiwgMHgyMDY5LCAweDAyMDAsIDB4MDgwYywKLQkweGFhZjEsIDB4MDBkZSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjQwLCAweDIwYTksIDB4MDAwYSwKLQkweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsIDB4MDAxYiwgMHgyMDk4LCAweDQwMDMsIDB4NjBhMywKLQkweDAwMzUsIDB4YWE2OCwgMHg5Mjk0LCAweDcwMDAsIDB4OTI4NiwgMHgzMDAwLCAweDAxMTAsIDB4NjBhMywKLQkweDAwMzcsIDB4MDBlZSwgMHgwMGRlLCAweDAwOWUsIDB4MDAzZSwgMHgwMDA1LCAweDkwMGUsIDB4NzgxNCwKLQkweDAwOTYsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MDFjMCwgMHg5MDg0LCAweDAwMDMsIDB4MTFhOCwKLQkweDIwMDEsIDB4MTgwYywgMHgyMDA0LCAweGQwYmMsIDB4MDE4MCwgMHg3ODI0LCAweGQwY2MsIDB4MTE2OCwKLQkweGQwYzQsIDB4MTE1OCwgMHhhOGE4LCAweDkwMDUsIDB4MTE0MCwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywKLQkweGMxZDUsIDB4MjEwMiwgMHgyMDA5LCAweDE5YjMsIDB4MjEwYywgMHgwMDllLCAweDkxOGQsIDB4MDA5MiwKLQkweDAwMTAsIDB4MjAwOSwgMHgwMDk2LCAweDYwYWIsIDB4MDAzNiwgMHgwMDI2LCAweDIxMTAsIDB4OTAwZSwKLQkweDA4MGMsIDB4MmFlMiwgMHgwMDJlLCAweDAwMDUsIDB4MjAwOSwgMHgwMDA5LCAweDAwYTAsIDB4MjAwOSwKLQkweDAwMGEsIDB4MDA4OCwgMHgyMDA5LCAweDAwMGIsIDB4MDA3MCwgMHgyMDA5LCAweDAwMGMsIDB4MDA1OCwKLQkweDIwMDksIDB4MDAwZCwgMHgwMDQwLCAweDIwMDksIDB4MDAwZSwgMHgwMDI4LCAweDIwMDksIDB4MDAwZiwKLQkweDAwMTAsIDB4MjAwOSwgMHgwMDA4LCAweDY5MTIsIDB4MDAwNSwgMHgwODBjLCAweDllZjgsIDB4MDAxNiwKLQkweDAwMjYsIDB4MDA5NiwgMHgwMGQ2LCAweDc4MTQsIDB4MjA0OCwgMHg3MDEzLCAweDAxMzgsIDB4MjAwMSwKLQkweDE4MzcsIDB4MjAwNCwgMHg5MDg0LCAweDAwMjgsIDB4MTEzOCwgMHgyMDAxLCAweDE5N2MsIDB4MjAwNCwKLQkweDkwODYsIDB4YWFhYSwgMHgxOTA0LCAweGFiOTYsIDB4NzAwMywgMHg1NDAwLCAweDAwYzYsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjA3YywgMHg5MDg0LCAweDAwZmYsIDB4YTk5OCwgMHg4MTBmLCAweDkxOGMsIDB4ZmYwMCwKLQkweDkxMDUsIDB4NzAwYSwgMHg2MDgwLCAweDcwMGUsIDB4YTk5OCwgMHg5MThjLCAweGZmMDAsIDB4NzExMiwKLQkweDIwYTksIDB4MDAwNCwgMHgyMDA5LCAweDE4MDUsIDB4MmUxMCwgMHg5MjkwLCAweDAwMDYsIDB4MjEwNCwKLQkweDIwMTIsIDB4ODEwOCwgMHg4MjEwLCAweDFmMDQsIDB4YWIyNywgMHgyMGE5LCAweDAwMDQsIDB4MjAwOSwKLQkweDE4MDEsIDB4MjEwNCwgMHgyMDEyLCAweDgxMDgsIDB4ODIxMCwgMHgxZjA0LCAweGFiMzEsIDB4YTg2MCwKLQkweDIwZTAsIDB4YTg1YywgMHg5MDgwLCAweDAwMjksIDB4MjA5OCwgMHgyMDA5LCAweDAwMDYsIDB4MjBhOSwKLQkweDAwMDEsIDB4NDAwMiwgMHg4MDA3LCAweDIwMTIsIDB4ODIxMCwgMHg4MTA5LCAweDFkYzAsIDB4MDBkNiwKLQkweDIwNjksIDB4MDIwMCwgMHgwODBjLCAweGFhZGMsIDB4MDBkZSwgMHgyMDcxLCAweDAyNDAsIDB4MjAxMSwKLQkweDAyNDAsIDB4MjAwOSwgMHgwMDAyLCAweDIwYTksIDB4MDAwMSwgMHg0MDAyLCAweDgwMDcsIDB4MjAxMiwKLQkweDgyMTAsIDB4ODEwOSwgMHgxZGMwLCAweDIwMDksIDB4MDAwOCwgMHgyMGE5LCAweDAwMDEsIDB4NDAwMiwKLQkweDgwMDcsIDB4MjAxMiwgMHg4MjEwLCAweDgxMDksIDB4MWRjMCwgMHhhODVjLCAweDkwODAsIDB4MDAzMSwKLQkweDIwOTgsIDB4MjAwOSwgMHgwMDA4LCAweDIwYTksIDB4MDAwMSwgMHg0MDAyLCAweDgwMDcsIDB4MjAxMiwKLQkweDgyMTAsIDB4ODEwOSwgMHgxZGMwLCAweDAwY2UsIDB4NjBjMywgMHgwMDRjLCAweDYwYTMsIDB4MDA1NiwKLQkweDYwYTcsIDB4OTU3NSwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHg5MDg0LCAweDAwMjgsIDB4MTE2OCwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgwMTUwLCAweDYwMjgsIDB4YzBiZCwgMHg2MDJhLCAweDIwMDksIDB4MTgwNCwKLQkweDIwMTEsIDB4MDAyOSwgMHgwODBjLCAweDJhZTIsIDB4MDAxMCwgMHgwODBjLCAweGEyNzAsIDB4MDgwYywKLQkweDhhNDIsIDB4MDBkZSwgMHgwMDllLCAweDAwMmUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweDAyNDAsIDB4MjAwMSwgMHgyMjAwLCAweDkwODUsIDB4MDBmZiwgMHg3MDAyLCAweDcwMDcsIDB4ZmZmZiwKLQkweDIwNzEsIDB4MDEwMCwgMHg3MDliLCAweDAwZmYsIDB4MDBlZSwgMHgwODA0LCAweGFiMGMsIDB4MDgwYywKLQkweDllZjgsIDB4MDAxNiwgMHgwMDI2LCAweDAwOTYsIDB4MDBkNiwgMHg3ODE0LCAweDIwNDgsIDB4NzAxMywKLQkweDAxMzgsIDB4NzAwMywgMHg1NTAwLCAweDAwYzYsIDB4YTg5YywgMHg5MDg0LCAweDAwZmYsIDB4YTk5OCwKLQkweDgxMGYsIDB4OTE4YywgMHhmZjAwLCAweDkxMDUsIDB4NzAwYSwgMHhhOTljLCAweDkxOGMsIDB4ZmYwMCwKLQkweGE4YTAsIDB4OTA4NCwgMHgwMGZmLCAweDkxMDUsIDB4NzAwZSwgMHhhOTk4LCAweDkxOGMsIDB4ZmYwMCwKLQkweDIwNjEsIDB4MTgwMCwgMHg2MDdjLCAweDkwODQsIDB4MDBmZiwgMHg5MTBkLCAweDcxMTIsIDB4NjE4MCwKLQkweDcxMTYsIDB4MjAwOSwgMHgwMDA4LCAweGE4NjAsIDB4MjBlMCwgMHhhODVjLCAweDkwODAsIDB4MDAyOSwKLQkweDIwOTgsIDB4MmUxMCwgMHg5MjkwLCAweDAwMDYsIDB4MjBhOSwgMHgwMDAxLCAweDQwMDIsIDB4ODAwNywKLQkweDIwMTIsIDB4ODIxMCwgMHg4MTA5LCAweDFkYzAsIDB4MjBhOSwgMHgwMDA0LCAweDIwMDksIDB4MTgwNSwKLQkweDIxMDQsIDB4MjAxMiwgMHg4MTA4LCAweDgyMTAsIDB4MWYwNCwgMHhhYmU4LCAweDIwYTksIDB4MDAwMiwKLQkweDIwMDksIDB4MTgwMSwgMHgyMTA0LCAweDIwMTIsIDB4ODEwOCwgMHg4MjEwLCAweDFmMDQsIDB4YWJmMiwKLQkweDAwZDYsIDB4MDAxNiwgMHgyMDY5LCAweDAyMDAsIDB4MDgwYywgMHhhYWRjLCAweDAwMWUsIDB4MDBkZSwKLQkweDIwNzEsIDB4MDI0MCwgMHgyMGE5LCAweDAwMDIsIDB4MjAwOSwgMHgxODAzLCAweDIwMTEsIDB4MDI0MCwKLQkweDIxMDQsIDB4MjAxMiwgMHg4MTA4LCAweDgyMTAsIDB4MWYwNCwgMHhhYzA4LCAweDIwMDksIDB4MDAwOCwKLQkweDQwMDIsIDB4ODAwNywgMHgyMDEyLCAweDgyMTAsIDB4ODEwOSwgMHgxZGQwLCAweDkwMDYsIDB4MjBhOSwKLQkweDAwMDgsIDB4MjAxMiwgMHg4MjEwLCAweDFmMDQsIDB4YWMxOSwgMHgwMGNlLCAweDYwYzMsIDB4MDA0YywKLQkweDYwYTMsIDB4MDA1NiwgMHg2MGE3LCAweDk1NzUsIDB4MDgwYywgMHhhMjcwLCAweDA4MGMsIDB4OGE0MiwKLQkweDAwZGUsIDB4MDA5ZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwNSwgMHgwMGQ2LCAweDkyOTAsIDB4MDAxOCwKLQkweDgyMTQsIDB4MjBlOSwgMHgwMDAwLCAweDIwNjksIDB4MDIwMCwgMHg2ODEzLCAweDAwMDAsIDB4MjJhOCwKLQkweDkyODQsIDB4MDBlMCwgMHgwMTI4LCAweDIwYTksIDB4MDAyMCwgMHg5MjkyLCAweDAwMjAsIDB4MDAwOCwKLQkweDkwMTYsIDB4MjBhMSwgMHgwMjQwLCAweDkwMDYsIDB4NDAwNCwgMHg4MmZmLCAweDAxMjAsIDB4NjgxMCwKLQkweDgwMDAsIDB4NjgxMiwgMHgwYzYwLCAweDAwZGUsIDB4MDAwNSwgMHgwMGY2LCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4MDBhNiwgMHgwMDk2LCAweDAwNjYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE5ZTgsIDB4NzYxMCwgMHgyNjYwLCAweDI2NzgsIDB4OGNmZiwgMHgwOTA0LCAweGFjZDksIDB4NzAzMCwKLQkweDljMDYsIDB4MTUyMCwgMHgyMDY5LCAweDAxMDAsIDB4NjhjMCwgMHg5MDA1LCAweDA5MDQsIDB4YWNhYiwKLQkweDA4MGMsIDB4YTJhMCwgMHg2OGMzLCAweDAwMDAsIDB4MDgwYywgMHhhNzhhLCAweDcwMzMsIDB4MDAwMCwKLQkweDAwMzYsIDB4MjA2OSwgMHgwMTQwLCAweDZiMDQsIDB4OTM4NCwgMHgxMDAwLCAweDAxMzgsIDB4MjAwMSwKLQkweDAxMDAsIDB4MDgwYywgMHgyYTk5LCAweDkwMDYsIDB4MDgwYywgMHgyYTk5LCAweDIwNjksIDB4MDEwMCwKLQkweDY4MjQsIDB4ZDA4NCwgMHgwMTEwLCAweDY4MjcsIDB4MDAwMSwgMHgwMDNlLCAweDcwMTAsIDB4OWMzNiwKLQkweDExMTAsIDB4NjYwYywgMHg3NjEyLCAweDcwMGMsIDB4OWMzNiwgMHgxMTQwLCAweDJjMDAsIDB4OWYzNiwKLQkweDAxMTgsIDB4MmYwMCwgMHg3MDBlLCAweDAwMTAsIDB4NzAwZiwgMHgwMDAwLCAweDY2MGMsIDB4MDA2NiwKLQkweDJjMDAsIDB4OWYwNiwgMHgwMTEwLCAweDdlMGUsIDB4MDAwOCwgMHgyNjc4LCAweDYwMGYsIDB4MDAwMCwKLQkweDA4MGMsIDB4ZDEyMSwgMHgxMTgwLCAweDA4MGMsIDB4MzM0NCwgMHgwODBjLCAweGQxMzIsIDB4MTUxOCwKLQkweDA4MGMsIDB4YmI1YywgMHgwNDAwLCAweDA4MGMsIDB4YTc4YSwgMHg2ODI0LCAweGQwODQsIDB4MDliMCwKLQkweDY4MjcsIDB4MDAwMSwgMHgwODk4LCAweDA4MGMsIDB4ZDEzMiwgMHgxMTE4LCAweDA4MGMsIDB4YmI1YywKLQkweDAwOTAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4Y2YxOSwgMHgwMTY4LCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDMsIDB4MTUyMCwgMHhhODY3LCAweDAxMDMsIDB4YWI3YSwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywKLQkweDcwMTIsIDB4MDgwYywgMHhkMTBjLCAweDA4MGMsIDB4ZDNhZSwgMHgwODBjLCAweGIxYTcsIDB4MDgwYywKLQkweGE2NWQsIDB4MDBjZSwgMHgwODA0LCAweGFjNWMsIDB4MmM3OCwgMHg2MDBjLCAweDIwNjAsIDB4MDgwNCwKLQkweGFjNWMsIDB4NzAxMywgMHgwMDAwLCAweDcwMGYsIDB4MDAwMCwgMHgwMTJlLCAweDAwNmUsIDB4MDA5ZSwKLQkweDAwYWUsIDB4MDBjZSwgMHgwMGRlLCAweDAwZWUsIDB4MDBmZSwgMHgwMDA1LCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDYsIDB4MWQwOCwgMHgwODBjLCAweGVhMzAsIDB4MDhmMCwgMHgwMGY2LCAweDAwMzYsIDB4MjA3OSwKLQkweDAzODAsIDB4N2IxOCwgMHhkM2JjLCAweDFkZTgsIDB4NzgzMiwgMHg3OTM2LCAweDdhM2EsIDB4NzgxYiwKLQkweDgwODAsIDB4MDAzZSwgMHgwMGZlLCAweDAwMDUsIDB4MDAxNiwgMHgyMDAxLCAweDAzODIsIDB4MjAwNCwKLQkweDkwODQsIDB4MDAwNywgMHg5MDg2LCAweDAwMDEsIDB4MTE4OCwgMHgyMDAxLCAweDAwMTUsIDB4MGMyOSwKLQkweDIwMDksIDB4MTAwMCwgMHgyMDAxLCAweDAzODIsIDB4MjAwNCwgMHg5MDg0LCAweDAwMDcsIDB4OTA4NiwKLQkweDAwMDMsIDB4MDEyMCwgMHg4MTA5LCAweDFkYjAsIDB4MDgwYywgMHgwZDg1LCAweDAwMWUsIDB4MDAwNSwKLQkweDIwMDEsIDB4MDM4MiwgMHgyMDA0LCAweDkwODQsIDB4MDAwNywgMHg5MDg2LCAweDAwMDMsIDB4MTEyMCwKLQkweDIwMDEsIDB4MDM4MCwgMHgyMDAzLCAweDAwMDEsIDB4MDAwNSwgMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwZTYsIDB4OTAwZSwgMHgyMDcxLCAweDE5ZTgsIDB4MDQ2OSwgMHgwMTA2LCAweDAxOTAsIDB4NzAwNCwKLQkweDkwODYsIDB4MDAwMywgMHgwMTQ4LCAweDIwYTksIDB4MTAwMCwgMHg2MDQ0LCAweGQwZmMsIDB4MDFkOCwKLQkweDFmMDQsIDB4YWQzNSwgMHgwODBjLCAweDBkODUsIDB4MDgwYywgMHhhY2ZjLCAweDYwNDQsIDB4ZDBmYywKLQkweDAxOTAsIDB4NzAzMCwgMHg5YzA2LCAweDExNDgsIDB4MDgwYywgMHg5OWVkLCAweDYwNDQsIDB4ZDBkYywKLQkweDAxNTAsIDB4YzBkYywgMHg2MDQ2LCAweDcwMGEsIDB4NzA0MiwgMHg3MDRjLCAweDljMDYsIDB4MTkwYywKLQkweDBkODUsIDB4MDgwYywgMHg5YTQ4LCAweDAxMGUsIDB4MTkxOSwgMHgwMGVlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAxNWUsIDB4MDAwNSwgMHgyMDAxLCAweDAzODIsIDB4MjAwNCwgMHg5MDg0LCAweDAwMDcsIDB4OTA4NiwKLQkweDAwMDMsIDB4MDAwNSwgMHgwMTI2LCAweDIwOTEsIDB4MjQwMCwgMHg3ODA4LCAweGQwYTQsIDB4MTkwYywKLQkweDBkN2UsIDB4ZDA5YywgMHgwMTI4LCAweDc4MjAsIDB4OTA4YywgMHhmMDAwLCAweDExYjgsIDB4MDAxMiwKLQkweDAxMmUsIDB4MDAwNSwgMHhhZDgyLCAweGFkYzAsIDB4YWRlZiwgMHhhZTM3LCAweGFlNDcsIDB4YWU1OCwKLQkweGFlNjcsIDB4YWU3NSwgMHhhZWEyLCAweGFlYTYsIDB4YWQ4MiwgMHhhZDgyLCAweGFlYTksIDB4YWVjNSwKLQkweGFkODIsIDB4YWQ4MiwgMHgwODBjLCAweDBkODUsIDB4MDEyZSwgMHgwMDA1LCAweDIwNjAsIDB4NjA0NCwKLQkweGQwYmMsIDB4MDE0MCwgMHhjMGJjLCAweDYwNDYsIDB4NjAwMCwgMHg5MDhhLCAweDAwMTAsIDB4MWEwYywKLQkweDBkODUsIDB4MDAxMiwgMHgwMTJlLCAweDAwMDUsIDB4YWRhNywgMHhhZGE5LCAweGFkYTcsIDB4YWRhZiwKLQkweGFkYTcsIDB4YWRhNywgMHhhZGE3LCAweGFkYTcsIDB4YWRhNywgMHhhZGE5LCAweGFkYTcsIDB4YWRhOSwKLQkweGFkYTcsIDB4YWRhOSwgMHhhZGE3LCAweGFkYTcsIDB4YWRhNywgMHhhZGE5LCAweGFkYTcsIDB4MDgwYywKLQkweDBkODUsIDB4MjAwOSwgMHgwMDEzLCAweDA4MGMsIDB4YjIwYSwgMHgwMTJlLCAweDAwMDUsIDB4NjAxNCwKLQkweDIwNDgsIDB4YTg3YywgMHhkMGRjLCAweDAxMzAsIDB4MDgwYywgMHg4YzE5LCAweDA4MGMsIDB4YjE2YywKLQkweDAxMmUsIDB4MDAwNSwgMHgyMDA5LCAweDAwNDksIDB4MDgwYywgMHhiMjBhLCAweDAxMmUsIDB4MDAwNSwKLQkweDA4MGMsIDB4YWNmYywgMHgyMDAxLCAweDFhMGQsIDB4MjAwMywgMHgwMDAwLCAweDcwMzAsIDB4OTA2NSwKLQkweDExMzAsIDB4NzAwNCwgMHg5MDg2LCAweDAwMDMsIDB4MDFlMCwgMHgwODBjLCAweDBkODUsIDB4NzAzNCwKLQkweDkwOTIsIDB4YzM1MCwgMHgxMjU4LCAweDgwMDAsIDB4NzAzNiwgMHg3MDA0LCAweDkwODYsIDB4MDAwMywKLQkweDAxMTAsIDB4NzAwNywgMHgwMDAwLCAweDc4MWYsIDB4MDgwOCwgMHgwMDU4LCAweDA4MGMsIDB4YjBjMCwKLQkweDAxNDAsIDB4MDgwYywgMHhlZWVlLCAweDYwMDMsIDB4MDAwMSwgMHgyMDA5LCAweDAwMTQsIDB4MDgwYywKLQkweGIyMGEsIDB4NzgxZiwgMHgwMTAwLCAweDA4MGMsIDB4YWQxOCwgMHgwMTJlLCAweDAwMDUsIDB4MDgwYywKLQkweGFjZmMsIDB4NzE0YywgMHg4MWZmLCAweDExMjgsIDB4MjAxMSwgMHgxYTEwLCAweDIwMTMsIDB4MDAwMCwKLQkweDA0YzAsIDB4MjA2MSwgMHgwMTAwLCAweDcxNTAsIDB4OTE5MiwgMHg3NTMwLCAweDE2NzgsIDB4ODEwOCwKLQkweDcxNTIsIDB4NzE0YywgMHg5MTg2LCAweDFiNTUsIDB4MDEyMCwgMHgyMDAxLCAweDAzOTEsIDB4MjAwMywKLQkweDA0MDAsIDB4OTE4OCwgMHgwMDA4LCAweDIxMGMsIDB4OTE4ZSwgMHgwMDA2LCAweDExNjAsIDB4NjAxNCwKLQkweDkwODQsIDB4MTk4NCwgMHg5MDg1LCAweDAwMTIsIDB4NzE0YywgMHg5MThlLCAweDFiNTUsIDB4MTEwOCwKLQkweGMwZmQsIDB4NjAxNiwgMHgwMGIwLCAweDcxNGMsIDB4OTE4OCwgMHgwMDA4LCAweDIxMGMsIDB4OTE4ZSwKLQkweDAwMDksIDB4MGQ2OCwgMHg2MDE0LCAweDkwODQsIDB4MTk4NCwgMHg5MDg1LCAweDAwMTYsIDB4NzE0YywKLQkweDkxOGUsIDB4MWI1NSwgMHgxMTA4LCAweGMwZmQsIDB4NjAxNiwgMHgwMDE4LCAweDcwNmMsIDB4YzA4NSwKLQkweDcwNmUsIDB4NzgxZiwgMHgwMjAwLCAweDA4MGMsIDB4YWQxOCwgMHgwMTJlLCAweDAwMDUsIDB4MDgwYywKLQkweGFjZmMsIDB4NzE0YywgMHgyMTYwLCAweDYwMDMsIDB4MDAwMywgMHgyMDA5LCAweDAwNGEsIDB4MDgwYywKLQkweGIyMGEsIDB4NzgxZiwgMHgwMjAwLCAweDA4MGMsIDB4YWQxOCwgMHgwMTJlLCAweDAwMDUsIDB4NzgwOCwKLQkweGQwOWMsIDB4MGRlOCwgMHg3ODIwLCAweDIwNjAsIDB4NjAwMywgMHgwMDAzLCAweDA4MGMsIDB4YWNmYywKLQkweDA4MGMsIDB4MWRjYywgMHg3ODFmLCAweDA0MDAsIDB4MDgwYywgMHhhZDE4LCAweDAxMmUsIDB4MDAwNSwKLQkweDc4MDgsIDB4ZDA5YywgMHgwZGU4LCAweDc4MjAsIDB4MjA2MCwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywKLQkweDFlMTQsIDB4NzgxZiwgMHgwNDAwLCAweDA4MGMsIDB4YWQxOCwgMHgwMTJlLCAweDAwMDUsIDB4NzAzMCwKLQkweDkwNjUsIDB4MDE0OCwgMHg2MDQ0LCAweGMwYmMsIDB4NjA0NiwgMHg3MTA0LCAweDkxODYsIDB4MDAwMywKLQkweDAxMTAsIDB4MDgwYywgMHg5YWI0LCAweDAxMmUsIDB4MDAwNSwgMHgwMGY2LCAweDcwM2MsIDB4OTA4NiwKLQkweDAwMDIsIDB4MDUyOCwgMHg3MDRjLCAweDkwN2QsIDB4MDUxMCwgMHg3ODQ0LCAweGMwYmMsIDB4Nzg0NiwKLQkweDc4MjAsIDB4OTA4NiwgMHgwMDA5LCAweDAxMTgsIDB4MDgwYywgMHhhMWNhLCAweDAwYzAsIDB4NzgyOCwKLQkweGQwZmMsIDB4MTExOCwgMHgwODBjLCAweGExNDksIDB4MDA5MCwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwKLQkweDkwODQsIDB4MDAyOCwgMHgxMTMwLCAweDIwMDEsIDB4MTk3YywgMHgyMDA0LCAweDkwODYsIDB4YWFhYSwKLQkweDExMjAsIDB4MjAwMSwgMHgwMzg3LCAweDIwMDMsIDB4MTAwMCwgMHgwODBjLCAweGEwY2UsIDB4MDBmZSwKLQkweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweDc4NDAsIDB4MDEyZSwgMHgwMDA1LCAweDA4MGMsIDB4MGQ4NSwKLQkweDAwMDUsIDB4MjAwOSwgMHgxYjY2LCAweDIxMDQsIDB4ZDBiYywgMHgwMWE4LCAweGMwYmMsIDB4MjAwYSwKLQkweDIwMDksIDB4MDEwYiwgMHgyMTA0LCAweDkwODUsIDB4MDAwMiwgMHgyMDBhLCAweDIwMDksIDB4MDEwMSwKLQkweDIxMDQsIDB4YzBhYywgMHgyMDBhLCAweDIwMDksIDB4MDEwNSwgMHgyMTA0LCAweDkwODQsIDB4MTk4NCwKLQkweDkwODUsIDB4ODA5MiwgMHgyMDBhLCAweDAxMmUsIDB4MDAwNSwgMHgwODBjLCAweDhhNTgsIDB4MjAwOSwKLQkweDAxMGIsIDB4MjEwNCwgMHhkMDhjLCAweDAxYTgsIDB4YzA4YywgMHgyMDBhLCAweDIwMDEsIDB4MTg0OCwKLQkweDIwMDQsIDB4ZDA5NCwgMHgxMTMwLCAweDIwMDksIDB4MDEwMSwgMHgyMTA0LCAweDkwODUsIDB4MDAyMCwKLQkweDIwMGEsIDB4MjAwOSwgMHgxYjY2LCAweDIwMGIsIDB4MDAwMCwgMHgyMDAxLCAweDAwMWIsIDB4MDgwYywKLQkweGFjZWQsIDB4MDEyZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxOWU4LCAweDYwNDQsIDB4YzBiYywKLQkweDYwNDYsIDB4ZDBmYywgMHgwMWI4LCAweDcwNGMsIDB4OWMwNiwgMHgxMTkwLCAweDIwMTksIDB4MDAwMSwKLQkweDA4MGMsIDB4YTU5NiwgMHg3MDRmLCAweDAwMDAsIDB4MjAwMSwgMHgwMTA5LCAweDIwMDQsIDB4ZDA4YywKLQkweDExMzgsIDB4MjAwMSwgMHgwMTA4LCAweDIwMDQsIDB4ZDBiYywgMHgxMTEwLCAweDcwM2YsIDB4MDAwMCwKLQkweDA4MGMsIDB4YTdhMSwgMHgwMGVlLCAweDAwMDUsIDB4MDAyNiwgMHg3MDEwLCAweDljMDYsIDB4MTE3OCwKLQkweDA4MGMsIDB4YTY1ZCwgMHg2MDQ0LCAweGMwZmMsIDB4NjA0NiwgMHg2MDBjLCAweDkwMTUsIDB4MDEyMCwKLQkweDcyMTIsIDB4NjAwZiwgMHgwMDAwLCAweDAwMTAsIDB4NzIxMiwgMHg3MjBlLCAweDkwMDYsIDB4MDAyZSwKLQkweDAwMDUsIDB4MDAyNiwgMHg3MDIwLCAweDljMDYsIDB4MTE3OCwgMHgwODBjLCAweGE2NWQsIDB4NjA0NCwKLQkweGMwZmMsIDB4NjA0NiwgMHg2MDBjLCAweDkwMTUsIDB4MDEyMCwgMHg3MjIyLCAweDYwMGYsIDB4MDAwMCwKLQkweDAwMTAsIDB4NzIyMiwgMHg3MjFlLCAweDkwMDYsIDB4MDAyZSwgMHgwMDA1LCAweDAwZDYsIDB4MDAzNiwKLQkweDc4MzAsIDB4OWMwNiwgMHgxNTU4LCAweDIwNjksIDB4MDEwMCwgMHg2OGMwLCAweDkwMDUsIDB4MDFmOCwKLQkweDA4MGMsIDB4OGE0YiwgMHgwODBjLCAweGEyYTAsIDB4NjhjMywgMHgwMDAwLCAweDA4MGMsIDB4YTc4YSwKLQkweDIwNjksIDB4MDE0MCwgMHg2YjA0LCAweDkzODQsIDB4MTAwMCwgMHgwMTM4LCAweDIwMDEsIDB4MDEwMCwKLQkweDA4MGMsIDB4MmE5OSwgMHg5MDA2LCAweDA4MGMsIDB4MmE5OSwgMHgyMDY5LCAweDAxMDAsIDB4NjgyNCwKLQkweGQwODQsIDB4MDExMCwgMHg2ODI3LCAweDAwMDEsIDB4OTA4NSwgMHgwMDAxLCAweDAwMzgsIDB4NzgwOCwKLQkweGMwYWQsIDB4NzgwYSwgMHg2MDAzLCAweDAwMDksIDB4NjMwYSwgMHg5MDA2LCAweDAwM2UsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4NjEwMCwgMHgyMDE5LCAweDAxMDAsIDB4MjAwMSwKLQkweDAzODIsIDB4MjAwNCwgMHhkMDljLCAweDAxOTAsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4MjgwMCwKLQkweDAwMTYsIDB4MDAzNiwgMHgwODBjLCAweGFkNjIsIDB4MDAzZSwgMHgwMDFlLCAweDAxMmUsIDB4MDBjZSwKLQkweDYyMDAsIDB4MjIwMCwgMHg5MTA2LCAweDBkNTgsIDB4MjIwMCwgMHgwMDEwLCAweDgzMTksIDB4MWQzOCwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDgwYywKLQkweGFjZmMsIDB4MDEwNiwgMHgyMDcxLCAweDE5ZTgsIDB4MjA2OSwgMHgwMTAwLCAweDcwNGMsIDB4MjA2MCwKLQkweDkwODYsIDB4MWI1NSwgMHgxNWI4LCAweDY4MTQsIDB4ZDA4YywgMHgwMTg4LCAweDY4MTcsIDB4MDAxMCwKLQkweDIwMDksIDB4MDAxOSwgMHg4MTA5LCAweDFkZjAsIDB4MjAwMSwgMHgwMDMyLCAweDY5MjAsIDB4ZDFiYywKLQkweDAxMzAsIDB4ODAwMSwgMHgxZGQ4LCAweDY5MmMsIDB4OTE4ZCwgMHgwMDA4LCAweDY5MmUsIDB4NjgyNCwKLQkweGQwOGMsIDB4MDExMCwgMHg2ODI3LCAweDAwMDIsIDB4NjhkMCwgMHg5MDA1LCAweDAxMTgsIDB4OTA4MiwKLQkweDAwMDUsIDB4MDIzOCwgMHg2MDYwLCAweDgwMDAsIDB4NjA2MiwgMHgyMDAxLCAweDAzOTEsIDB4MjAwMywKLQkweDA0MDAsIDB4MDgwYywgMHg5YTQ4LCAweDY4MmMsIDB4OTA4NCwgMHhmZmZkLCAweDY4MmUsIDB4MjAwMSwKLQkweDE4NDgsIDB4MjAwNCwgMHhkMDk0LCAweDExMjAsIDB4NjgwNCwgMHg5MDg1LCAweDAwMjAsIDB4NjgwNiwKLQkweDIwNjksIDB4MDAwMCwgMHgwMTBlLCAweDA5MGMsIDB4YWQxOCwgMHg4ZGZmLCAweDAwY2UsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHgwODBjLCAweGFjZmMsIDB4MDEwNiwKLQkweDIwNzEsIDB4MTllOCwgMHgyMDY5LCAweDAxMDAsIDB4MDgwYywgMHhhZjg0LCAweDY4ZDAsIDB4OTAwNSwKLQkweDAxNTgsIDB4OTA4MiwgMHgwMDA1LCAweDEyNDAsIDB4MDgwYywgMHgyYjMzLCAweDIwMDEsIDB4MDM5MSwKLQkweDIwMDMsIDB4MDQwMCwgMHgyMDY5LCAweDAwMDAsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4OGRmZiwKLQkweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4MDAxNiwgMHgyMDAxLCAweDAxMzQsIDB4MjAwNCwKLQkweDkwMDUsIDB4MDE0MCwgMHg5MDgyLCAweDAwMDUsIDB4MTIyOCwgMHgyMDAxLCAweDAzOTEsIDB4MjAwMywKLQkweDA0MDQsIDB4MDAyMCwgMHgyMDAxLCAweDAzOTEsIDB4MjAwMywgMHgwNDAwLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDE1NiwgMHgwODBjLCAweDlmNDMsIDB4N2ExNCwgMHg4MmZmLCAweDAxMzgsIDB4NzAwMywKLQkweDAxMDAsIDB4NzAwYiwgMHgwMDAzLCAweDYwYzMsIDB4MDAwOCwgMHgwNDkwLCAweDcwMDMsIDB4MDIwMCwKLQkweDcwMDcsIDB4MDAwMCwgMHgyMDY5LCAweDE4MDAsIDB4OTAxZSwgMHg2ODAwLCAweDkwODYsIDB4MDAwNCwKLQkweDExMTAsIDB4YzM4ZCwgMHgwMDYwLCAweDA4MGMsIDB4Nzc5ZSwgMHgxMTEwLCAweGMzYWQsIDB4MDAwOCwKLQkweGMzYTUsIDB4NmFkYywgMHhkMjljLCAweDExMTAsIDB4ZDJhYywgMHgwMTA4LCAweGMzOWQsIDB4NzMwZSwKLQkweDA4MGMsIDB4OGIxMCwgMHgyMGE5LCAweDAwMDYsIDB4MjAxMSwgMHhmZmVjLCAweDIwMTksIDB4ZmZlZCwKLQkweDIwNzEsIDB4MDI1MCwgMHgyMzA1LCAweDIwNzIsIDB4OGU3MCwgMHgyMjA1LCAweDIwNzIsIDB4OGU3MCwKLQkweDkzOTgsIDB4MDAwMiwgMHg5MjkwLCAweDAwMDIsIDB4MWYwNCwgMHhiMDNhLCAweDYwYzMsIDB4MDAyMCwKLQkweDA4MGMsIDB4YTI3MCwgMHgwMTVlLCAweDAwZGUsIDB4MDAwNSwgMHgwMTU2LCAweDA4MGMsIDB4OWY0MywKLQkweDdhMTQsIDB4ODJmZiwgMHgwMTY4LCAweDkyODYsIDB4ZmZmZiwgMHgwMTE4LCAweDkyODIsIDB4MDAwZSwKLQkweDEyMzgsIDB4NzAwMywgMHgwMTAwLCAweDcwMGIsIDB4MDAwMywgMHg2MGMzLCAweDAwMDgsIDB4MDQ4OCwKLQkweDcwMDMsIDB4MDIwMCwgMHg3MDA3LCAweDAwMWMsIDB4NzAwZiwgMHgwMDAxLCAweDIwMTEsIDB4MTliZSwKLQkweDIyMDQsIDB4ODAwNywgMHg3MDFhLCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweDcwMWUsIDB4MDQyMSwKLQkweDExMjAsIDB4YjhhMCwgMHg5MDgyLCAweDAwN2YsIDB4MDI0OCwgMHgyMDAxLCAweDE4MWYsIDB4MjAwNCwKLQkweDcwMjIsIDB4MjAwMSwgMHgxODIwLCAweDIwMDQsIDB4NzAyNiwgMHgwMDMwLCAweDIwMDEsIDB4MTgxOCwKLQkweDIwMDQsIDB4OTA4NCwgMHgwMGZmLCAweDcwMjYsIDB4MjBhOSwgMHgwMDA0LCAweDIwZTEsIDB4MDAwMSwKLQkweDIwOTksIDB4MTgwNSwgMHgyMGU5LCAweDAwMDAsIDB4MjBhMSwgMHgwMjU2LCAweDQwMDMsIDB4NjBjMywKLQkweDAwMWMsIDB4MDE1ZSwgMHgwODA0LCAweGEyNzAsIDB4MDAwNiwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwKLQkweGQwYWMsIDB4MDAwZSwgMHgwMDA1LCAweDIwMTEsIDB4MDAwMywgMHgwODBjLCAweGE2MmIsIDB4MjAxMSwKLQkweDAwMDIsIDB4MDgwYywgMHhhNjM1LCAweDA4MGMsIDB4YTUxNiwgMHgwMDM2LCAweDkwMWUsIDB4MDgwYywKLQkweGE1OTYsIDB4MDAzZSwgMHgwMDA1LCAweDA4MGMsIDB4MzQ4NywgMHgwMTg4LCAweDAwMTYsIDB4MDBiNiwKLQkweDAwYzYsIDB4NzAxMCwgMHg5MDg1LCAweDAwMjAsIDB4NzAxMiwgMHgyMDA5LCAweDAwN2UsIDB4MDgwYywKLQkweDY3YjQsIDB4Yjg1YywgMHhjMGFjLCAweGI4NWUsIDB4MDBjZSwgMHgwMGJlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDBmNiwgMHg3MTA0LCAweDkxODYsIDB4MDAwNCwgMHgxMTMwLCAweDc0MTAsIDB4OWU5MCwKLQkweDAwMDQsIDB4OWU5OCwgMHgwMDAzLCAweDAwODgsIDB4OTE4NiwgMHgwMDAxLCAweDExMzAsIDB4NzQyMCwKLQkweDllOTAsIDB4MDAwOCwgMHg5ZTk4LCAweDAwMDcsIDB4MDA0MCwgMHg5MTg2LCAweDAwMDIsIDB4MTUzOCwKLQkweDc0MjgsIDB4OWU5MCwgMHgwMDBhLCAweDllOTgsIDB4MDAwOSwgMHg2MTEwLCAweDI0NjgsIDB4NjgwYywKLQkweDkwN2QsIDB4MDFlOCwgMHg3ODEwLCAweDkxMDYsIDB4MTEyOCwgMHgyZjY4LCAweDc4MGMsIDB4OTA3ZCwKLQkweDFkYzgsIDB4MDBhOCwgMHg3ODBjLCAweDY4MGUsIDB4N2MwZSwgMHgyZjEyLCAweDIzMDQsIDB4OWYwNiwKLQkweDExMDgsIDB4MmQxYSwgMHg5MDA2LCAweDcwMzIsIDB4NzAzNiwgMHg3MDA0LCAweDkwODYsIDB4MDAwMywKLQkweDAxMTAsIDB4NzAwNywgMHgwMDAwLCAweDkwMDYsIDB4MDBmZSwgMHgwMGRlLCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MGNkMCwgMHgyMDcxLCAweDE4OGQsIDB4NzAwMCwgMHg5MDA1LCAweDAxNDAsIDB4MjAwMSwKLQkweDA4MTIsIDB4MjA3MSwgMHgxODAwLCAweDcwNzYsIDB4NzA3YSwgMHg3MDZiLCAweGZmZDQsIDB4MjA3MSwKLQkweDE4MDAsIDB4NzA3NCwgMHg3MDU2LCAweDcwNWIsIDB4MWRkYywgMHgwMDA1LCAweDAwZTYsIDB4MDEyNiwKLQkweDIwNzEsIDB4MTgwMCwgMHgyMDkxLCAweDgwMDAsIDB4NzU1NCwgMHg5NTgyLCAweDAwMTAsIDB4MDYwOCwKLQkweDcwNTgsIDB4MjA2MCwgMHg2MDAwLCAweDkwODYsIDB4MDAwMCwgMHgwMTQ4LCAweDljZTAsIDB4MDAxYywKLQkweDcwNjgsIDB4OWMwMiwgMHgxMjA4LCAweDBjYjAsIDB4MjA2MSwgMHgxZGRjLCAweDBjOTgsIDB4NjAwMywKLQkweDAwMDgsIDB4ODUyOSwgMHg3NTU2LCAweDljYTgsIDB4MDAxYywgMHg3MDY4LCAweDk1MDIsIDB4MTIzMCwKLQkweDc1NWEsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweDcwNWIsIDB4MWRkYywKLQkweDBjYzAsIDB4OTAwNiwgMHgwY2MwLCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDc1NTQsIDB4OTU4MiwKLQkweDAwMTAsIDB4MDYwMCwgMHg3MDU4LCAweDIwNjAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MDE0OCwKLQkweDljZTAsIDB4MDAxYywgMHg3MDY4LCAweDljMDIsIDB4MTIwOCwgMHgwY2IwLCAweDIwNjEsIDB4MWRkYywKLQkweDBjOTgsIDB4NjAwMywgMHgwMDA4LCAweDg1MjksIDB4NzU1NiwgMHg5Y2E4LCAweDAwMWMsIDB4NzA2OCwKLQkweDk1MDIsIDB4MTIyOCwgMHg3NTVhLCAweDkwODUsIDB4MDAwMSwgMHgwMGVlLCAweDAwMDUsIDB4NzA1YiwKLQkweDFkZGMsIDB4MGNjOCwgMHg5MDA2LCAweDBjYzgsIDB4OWM4MiwgMHgxZGRjLCAweDBhMGMsIDB4MGQ4NSwKLQkweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsIDB4MWEwYywgMHgwZDg1LCAweDkwMDYsIDB4NjAwNiwKLQkweDYwMGEsIDB4NjAwZSwgMHg2MDE2LCAweDYwMWEsIDB4NjAxMiwgMHg2MDIzLCAweDAwMDAsIDB4NjAwMywKLQkweDAwMDAsIDB4NjAxZSwgMHg2MDVlLCAweDYwNjIsIDB4NjAyNiwgMHg2MDJhLCAweDYwMmUsIDB4NjAzMiwKLQkweDYwMzYsIDB4NjAzYSwgMHg2MDNlLCAweDYwNGEsIDB4NjAyYSwgMHg2MDQ2LCAweDYwNDIsIDB4MjA2MSwKLQkweDE4MDAsIDB4NjA1NCwgMHg4MDAwLCAweDYwNTYsIDB4MDAwNSwgMHg5MDA2LCAweDYwMGUsIDB4NjAxNiwKLQkweDYwMWEsIDB4NjAxMiwgMHg2MDIyLCAweDYwMDIsIDB4NjAxZSwgMHg2MDVlLCAweDYwNjIsIDB4NjA0YSwKLQkweDYwNDYsIDB4MjA2MSwgMHgxODAwLCAweDYwNTQsIDB4ODAwMCwgMHg2MDU2LCAweDAwMDUsIDB4MDAwNiwKLQkweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxZDgsIDB4NjAxYywgMHhkMDg0LCAweDE5MGMsIDB4MWFkMywKLQkweDYwMjMsIDB4MDAwNywgMHgyMDAxLCAweDE5ODYsIDB4MjAwNCwgMHgwMDA2LCAweDkwODIsIDB4MDA1MSwKLQkweDAwMGUsIDB4MDIwOCwgMHg4MDA0LCAweDYwMWEsIDB4MDgwYywgMHhlY2UxLCAweDYwNGIsIDB4MDAwMCwKLQkweDYwNDQsIDB4ZDBmYywgMHgxMTMxLCAweDkwMDYsIDB4NjA0NiwgMHg2MDE2LCAweDYwMTIsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDgwYywgMHhhY2ZjLCAweDAxMDYsIDB4MjAwMSwgMHgxOWZiLCAweDIwMDQsIDB4OWMwNiwKLQkweDExMzAsIDB4MDAzNiwgMHgyMDE5LCAweDAwMDEsIDB4MDgwYywgMHhhNTk2LCAweDAwM2UsIDB4MDgwYywKLQkweGE3YTEsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4MDAwNSwgMHgwMGU2LCAweDAxMjYsIDB4MjA3MSwKLQkweDE4MDAsIDB4MjA5MSwgMHg4MDAwLCAweDc1NTQsIDB4OTU4MiwgMHgwMDAxLCAweDA2MDgsIDB4NzA1OCwKLQkweDIwNjAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MDE0OCwgMHg5Y2UwLCAweDAwMWMsIDB4NzA2OCwKLQkweDljMDIsIDB4MTIwOCwgMHgwY2IwLCAweDIwNjEsIDB4MWRkYywgMHgwYzk4LCAweDYwMDMsIDB4MDAwOCwKLQkweDg1MjksIDB4NzU1NiwgMHg5Y2E4LCAweDAwMWMsIDB4NzA2OCwgMHg5NTAyLCAweDEyMzAsIDB4NzU1YSwKLQkweDkwODUsIDB4MDAwMSwgMHgwMTJlLCAweDAwZWUsIDB4MDAwNSwgMHg3MDViLCAweDFkZGMsIDB4MGNjMCwKLQkweDkwMDYsIDB4MGNjMCwgMHg2MDIwLCAweDkwODQsIDB4MDAwZiwgMHgwMDAyLCAweGIyMWUsIDB4YjIyOCwKLQkweGIyNDMsIDB4YjI1ZSwgMHhkNjlhLCAweGQ2YjcsIDB4ZDZkMiwgMHhiMjFlLCAweGIyMjgsIDB4OTJmNywKLQkweGIyNzcsIDB4YjIxZSwgMHhiMjFlLCAweGIyMWUsIDB4YjIxZSwgMHhiMjFlLCAweDkxODYsIDB4MDAxMywKLQkweDExMzAsIDB4NjA0NCwgMHhkMGZjLCAweDAxMTAsIDB4MDgwYywgMHg5OWVkLCAweDAwMDUsIDB4MDAwNSwKLQkweDAwNjYsIDB4NjAwMCwgMHg5MGIyLCAweDAwMTAsIDB4MWEwYywgMHgwZDg1LCAweDAwMTMsIDB4MDA2ZSwKLQkweDAwMDUsIDB4YjI0MSwgMHhiOWJjLCAweGJiYTMsIDB4YjI0MSwgMHhiYzM5LCAweGI1NDAsIDB4YjI0MSwKLQkweGIyNDEsIDB4YjkzZSwgMHhjMjVhLCAweGIyNDEsIDB4YjI0MSwgMHhiMjQxLCAweGIyNDEsIDB4YjI0MSwKLQkweGIyNDEsIDB4MDgwYywgMHgwZDg1LCAweDAwNjYsIDB4NjAwMCwgMHg5MGIyLCAweDAwMTAsIDB4MWEwYywKLQkweDBkODUsIDB4MDAxMywgMHgwMDZlLCAweDAwMDUsIDB4YjI1YywgMHhjODc1LCAweGIyNWMsIDB4YjI1YywKLQkweGIyNWMsIDB4YjI1YywgMHhiMjVjLCAweGIyNWMsIDB4YzgwYywgMHhjOWY4LCAweGIyNWMsIDB4YzhiMiwKLQkweGM5MzYsIDB4YzhiMiwgMHhjOTM2LCAweGIyNWMsIDB4MDgwYywgMHgwZDg1LCAweDYwMDAsIDB4OTA4MiwKLQkweDAwMTAsIDB4MWEwYywgMHgwZDg1LCAweDYwMDAsIDB4MDAwMiwgMHhiMjc1LCAweGMyYTQsIDB4YzMzZSwKLQkweGM0YzEsIDB4YzUzMCwgMHhiMjc1LCAweGIyNzUsIDB4YjI3NSwgMHhjMjczLCAweGM3OGQsIDB4Yzc5MCwKLQkweGIyNzUsIDB4YjI3NSwgMHhiMjc1LCAweGIyNzUsIDB4YzdjMCwgMHgwODBjLCAweDBkODUsIDB4MDA2NiwKLQkweDYwMDAsIDB4OTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwKLQkweGIyOTAsIDB4YjI5MCwgMHhiMmNlLCAweGIzNmQsIDB4YjNlZCwgMHhiMjkwLCAweGIyOTAsIDB4YjI5MCwKLQkweGIyOTIsIDB4YjI5MCwgMHhiMjkwLCAweGIyOTAsIDB4YjI5MCwgMHhiMjkwLCAweGIyOTAsIDB4YjI5MCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg5MTg2LCAweDAwNGMsIDB4MDU2MCwgMHg5MTg2LCAweDAwMDMsIDB4MTkwYywKLQkweDBkODUsIDB4MDA5NiwgMHg2MDFjLCAweGMwZWQsIDB4NjAxZSwgMHg2MDAzLCAweDAwMDMsIDB4NjEwNiwKLQkweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweDkwODQsIDB4YTAwMCwgMHhjMGI1LCAweGE4N2UsIDB4YThhYywKLQkweGE4MzYsIDB4YThiMCwgMHhhODNhLCAweDkwMDYsIDB4YTg0NiwgMHhhODRhLCAweGE4ODQsIDB4OTA5MiwKLQkweDE5OWEsIDB4MDIxMCwgMHgyMDAxLCAweDE5OTksIDB4ODAwMywgMHg4MDEzLCAweDgyMTMsIDB4OTIxMCwKLQkweDYyMWEsIDB4MDA5ZSwgMHgwODBjLCAweDFjMjYsIDB4MjAwOSwgMHg4MDMwLCAweDA4MGMsIDB4OTY1ZSwKLQkweDAwMDUsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YmNhMCwgMHgwMGJlLCAweDJjMDAsIDB4MDgwYywKLQkweGI0MGYsIDB4MDgwYywgMHhkNjVkLCAweDYwMDMsIDB4MDAwNywgMHgwMDA1LCAweDAwZDYsIDB4MDA5NiwKLQkweDAwZjYsIDB4MjA3OSwgMHgxODAwLCAweDdhOTAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBlYywKLQkweDExMTAsIDB4OTI5MCwgMHgwMDE4LCAweGFjNzgsIDB4YzRmYywgMHgwMDQ2LCAweGE4ZTAsIDB4OTAwNSwKLQkweDExNDAsIDB4YThkYywgMHg5MjFhLCAweDAxNDAsIDB4MDIyMCwgMHhhODdiLCAweDAwMDcsIDB4MjAxMCwKLQkweDAwMjgsIDB4YTg3YiwgMHgwMDE1LCAweDAwMTAsIDB4YTg3YiwgMHgwMDAwLCAweDgyMTQsIDB4YTg4MywKLQkweDAwMDAsIDB4YWEwMiwgMHgwMDA2LCAweDAwMTYsIDB4MDAyNiwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwKLQkweDAwZjYsIDB4MjQwMCwgMHg5MDA1LCAweDExMDgsIDB4MDA5YSwgMHgyMTAwLCAweDkwODYsIDB4MDAxNSwKLQkweDExMTgsIDB4MjAwMSwgMHgwMDAxLCAweDAwMzgsIDB4MjEwMCwgMHg5MDg2LCAweDAwMTYsIDB4MDExOCwKLQkweDIwMDEsIDB4MDAwMSwgMHgwMDJhLCAweDk0YTQsIDB4MDAwNywgMHg4NDIzLCAweDk0MDUsIDB4MDAwMiwKLQkweGIzMzUsIDB4YjMzNSwgMHhiMzMwLCAweGIzMzMsIDB4YjMzNSwgMHhiMzJkLCAweGIzMjAsIDB4YjMyMCwKLQkweGIzMjAsIDB4YjMyMCwgMHhiMzIwLCAweGIzMjAsIDB4YjMyMCwgMHhiMzIwLCAweGIzMjAsIDB4YjMyMCwKLQkweDAwZmUsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMGUsIDB4MDA0ZSwKLQkweDAwZmUsIDB4MDA5ZSwgMHgwMGRlLCAweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweGJlNTEsIDB4MDAyOCwKLQkweDA4MGMsIDB4YmY4ZiwgMHgwMDEwLCAweDA4MGMsIDB4YzA4NSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwKLQkweDAwY2UsIDB4MDAyZSwgMHgwMDFlLCAweDJjMDAsIDB4YTg5NiwgMHgwMDBlLCAweDA4MGMsIDB4YjRjZCwKLQkweDA1MzAsIDB4YTgwNCwgMHhhODBlLCAweDAwYTYsIDB4MjA1MCwgMHhiMTAwLCAweDAwYWUsIDB4ODAwNiwKLQkweDgwMDYsIDB4ODAwNywgMHg5MGJjLCAweDAwM2YsIDB4OTA4NCwgMHhmZmMwLCAweDkwODAsIDB4MDAwMiwKLQkweGFhY2MsIDB4YWJkMCwgMHhhY2Q0LCAweGFkZDgsIDB4MjAzMSwgMHgwMDAwLCAweDIwNDEsIDB4MTJjMiwKLQkweDA4MGMsIDB4YjY5MSwgMHgwMTYwLCAweDAwMGUsIDB4OTAwNSwgMHgwMTIwLCAweDAwZmUsIDB4MDA5ZSwKLQkweDAwZGUsIDB4MDAwNSwgMHgwMGZlLCAweDAwOWUsIDB4MDBkZSwgMHgwODA0LCAweGIxNmMsIDB4MjAwMSwKLQkweDAwMmMsIDB4OTAwZSwgMHgwODBjLCAweGI1MzMsIDB4MGM3MCwgMHg5MWI2LCAweDAwMTUsIDB4MDE3MCwKLQkweDkxYjYsIDB4MDAxNiwgMHgwMTU4LCAweDkxYjIsIDB4MDA0NywgMHgwYTBjLCAweDBkODUsIDB4OTFiMiwKLQkweDAwNTAsIDB4MWEwYywgMHgwZDg1LCAweDkxODIsIDB4MDA0NywgMHgwMDQyLCAweDA4MGMsIDB4YWY2MSwKLQkweDAxMjAsIDB4OTA4NiwgMHgwMDAyLCAweDA5MDQsIDB4YjJjZSwgMHgwMDA1LCAweGIzOGYsIDB4YjM4ZiwKLQkweGIzOTEsIDB4YjNjMywgMHhiMzhmLCAweGIzOGYsIDB4YjM4ZiwgMHhiMzhmLCAweGIzZDYsIDB4MDgwYywKLQkweDBkODUsIDB4MDBkNiwgMHgwMDE2LCAweDAwOTYsIDB4NjAwMywgMHgwMDA0LCAweDYxMTQsIDB4MjE0OCwKLQkweGE4N2MsIDB4ZDBmYywgMHgwMWMwLCAweGE4NzgsIDB4YzBmYywgMHg5MDA1LCAweDExNTgsIDB4YTg5NCwKLQkweDkwMDUsIDB4MDE0MCwgMHgyMDAxLCAweDAwMDAsIDB4OTAwZSwgMHgwODBjLCAweGI1MzMsIDB4MDgwYywKLQkweGIxNmMsIDB4MDBhOCwgMHg2MDAzLCAweDAwMDIsIDB4YThhNCwgMHhhOWE4LCAweDkxMDUsIDB4MTE3OCwKLQkweGE4YWUsIDB4YThiMiwgMHgwYzc4LCAweGE4N2YsIDB4MDAyMCwgMHhhODhjLCAweGE4OGEsIDB4YThhNCwKLQkweGE4YWUsIDB4YThhOCwgMHhhOGIyLCAweGE4YzcsIDB4MDAwMCwgMHhhOGNiLCAweDAwMDAsIDB4MDA5ZSwKLQkweDAwMWUsIDB4MDBkZSwgMHgwMDA1LCAweDA4MGMsIDB4OWE0OCwgMHgwMGQ2LCAweDAwOTYsIDB4NjExNCwKLQkweDIxNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxMjAsIDB4YTg3YiwgMHgwMDA2LCAweDA4MGMsIDB4NzAxMiwKLQkweDAwOWUsIDB4MDBkZSwgMHgwODBjLCAweGIxNmMsIDB4MDgwNCwgMHg5YWIzLCAweDA4MGMsIDB4OWE0OCwKLQkweDA4MGMsIDB4MzMxNSwgMHgwODBjLCAweGQ2NWEsIDB4MDBkNiwgMHgwMDk2LCAweDYxMTQsIDB4MjE0OCwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTIwLCAweGE4N2IsIDB4MDAyOSwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwKLQkweDAwZGUsIDB4MDgwYywgMHhiMTZjLCAweDA4MDQsIDB4OWFiMywgMHg5MTgyLCAweDAwNDcsIDB4MDAwMiwKLQkweGIzZmQsIDB4YjNmZiwgMHhiM2ZkLCAweGIzZmQsIDB4YjNmZCwgMHhiM2ZkLCAweGIzZmQsIDB4YjNmZCwKLQkweGIzZmQsIDB4YjNmZCwgMHhiM2ZkLCAweGIzZmQsIDB4YjNmZiwgMHgwODBjLCAweDBkODUsIDB4MDBkNiwKLQkweDAwOTYsIDB4NjAxZiwgMHgwMDAwLCAweDYxMTQsIDB4MjE0OCwgMHhhODdiLCAweDAwMDAsIDB4YTg4MywKLQkweDAwMDAsIDB4MDgwYywgMHg3MDEyLCAweDAwOWUsIDB4MDBkZSwgMHgwODA0LCAweGIxNmMsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA1NiwgMHgwMDY2LCAweDAwOTYsIDB4MDBhNiwgMHgwMGY2LCAweDAwMDYsIDB4MDgwYywKLQkweDEwNTksIDB4MDAwZSwgMHgwOTBjLCAweDBkODUsIDB4YTk2MCwgMHgyMWU4LCAweGE5NWMsIDB4OTE4OCwKLQkweDAwMTksIDB4MjFhMCwgMHg5MDBlLCAweDIwYTksIDB4MDAyMCwgMHg0MTA0LCAweGE4N2EsIDB4MjA3OSwKLQkweDE4MDAsIDB4Nzk5MCwgMHg5MTg4LCAweDAwMTgsIDB4OTE4YywgMHgwZmZmLCAweGE5NzIsIDB4YWM3NiwKLQkweDI5NTAsIDB4MDBhNiwgMHgyMDAxLCAweDAyMDUsIDB4MjAwMywgMHgwMDAwLCAweDkwMWUsIDB4MjAyOSwKLQkweDAwMDEsIDB4OTE4MiwgMHgwMDM1LCAweDEyMjgsIDB4MjAxMSwgMHgwMDFmLCAweDA4MGMsIDB4Y2E3YiwKLQkweDA0YzAsIDB4MjEzMCwgMHgyMDA5LCAweDAwMzQsIDB4MjAxMSwgMHgwMDFmLCAweDA4MGMsIDB4Y2E3YiwKLQkweDk2YjIsIDB4MDAzNCwgMHhiMDA0LCAweDkwNGQsIDB4MDExMCwgMHgwODBjLCAweDEwMGIsIDB4MDgwYywKLQkweDEwNTksIDB4MDFkMCwgMHg4NTI4LCAweGE4NjcsIDB4MDExMCwgMHhhODZiLCAweDAwMDAsIDB4MjkyMCwKLQkweGI0MDYsIDB4OTY4YSwgMHgwMDNkLCAweDEyMzAsIDB4MjYwOCwgMHgyMDExLCAweDAwMWIsIDB4MDgwYywKLQkweGNhN2IsIDB4MDBiOCwgMHg5NmIyLCAweDAwM2MsIDB4MjAwOSwgMHgwMDNjLCAweDI5NTAsIDB4MjAxMSwKLQkweDAwMWIsIDB4MDgwYywgMHhjYTdiLCAweDBjMTgsIDB4MjAwMSwgMHgwMjA1LCAweDIwMDMsIDB4MDAwMCwKLQkweDAwYWUsIDB4ODUyZiwgMHg5NWFkLCAweDAwNTAsIDB4YjU2NiwgMHhiMDcwLCAweGMwZmQsIDB4YjA3MiwKLQkweDAwNDgsIDB4MjAwMSwgMHgwMjA1LCAweDIwMDMsIDB4MDAwMCwgMHgwMGFlLCAweDg1MmYsIDB4OTVhZCwKLQkweDAwNTAsIDB4YjU2NiwgMHgyYTQ4LCAweGE4MDQsIDB4YTgwNywgMHgwMDAwLCAweDAwMDYsIDB4MDgwYywKLQkweDcwMTIsIDB4MDAwZSwgMHgyMDQ4LCAweDkwMDUsIDB4MWRiMCwgMHgwMGZlLCAweDAwYWUsIDB4MDA5ZSwKLQkweDAwNmUsIDB4MDA1ZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgwMGQ2LCAweDAwZjYsIDB4MDA5NiwKLQkweDAwMDYsIDB4MDgwYywgMHgxMDU5LCAweDAwMGUsIDB4MDkwYywgMHgwZDg1LCAweGE5NjAsIDB4MjFlOCwKLQkweGE5NWMsIDB4OTE4OCwgMHgwMDE5LCAweDIxYTAsIDB4OTAwZSwgMHgyMGE5LCAweDAwMjAsIDB4NDEwNCwKLQkweGFhNjYsIDB4YTg3YSwgMHgyMDc5LCAweDE4MDAsIDB4Nzk5MCwgMHg4MTBjLCAweDkxODgsIDB4MDAwYywKLQkweDkxODIsIDB4MDAxYSwgMHgwMjEwLCAweDIwMDksIDB4MDAxYSwgMHgyMWE4LCAweDgxMGIsIDB4YTk3MiwKLQkweGFjNzYsIDB4MmU5OCwgMHhhODVjLCAweDkwODAsIDB4MDAxZiwgMHgyMGEwLCAweDIwMDEsIDB4MDIwNSwKLQkweDIwMGMsIDB4OTE4ZCwgMHgwMDgwLCAweDIxMDIsIDB4NDAwMywgMHgyMDAzLCAweDAwMDAsIDB4MDgwYywKLQkweDcwMTIsIDB4MDA5ZSwgMHgwMGZlLCAweDAwZGUsIDB4MDAwNSwgMHgwMDE2LCAweDAwZDYsIDB4MDBmNiwKLQkweDAwOTYsIDB4MDAxNiwgMHgyMDAxLCAweDAyMDUsIDB4MjAwYywgMHg5MThkLCAweDAwODAsIDB4MjEwMiwKLQkweDAwMWUsIDB4MjA3OSwgMHgwMjAwLCAweDJlOTgsIDB4YTg3YywgMHhkMGVjLCAweDAxMTgsIDB4OWU4MCwKLQkweDAwMGMsIDB4MjA5OCwgMHgyMDIxLCAweDAwM2UsIDB4OTAxZSwgMHg5MjgyLCAweDAwMjAsIDB4MDIxOCwKLQkweDIwMTEsIDB4MDAyMCwgMHgyMDE4LCAweDk0ODYsIDB4MDAzZSwgMHgxMTcwLCAweDAwOTYsIDB4MDgwYywKLQkweDEwNTksIDB4MjkwMCwgMHgwMDllLCAweDA1YzAsIDB4YTgwNiwgMHgyMDQ4LCAweGE4NjAsIDB4MjBlOCwKLQkweGE4NWMsIDB4OTA4MCwgMHgwMDAyLCAweDIwYTAsIDB4MzMwMCwgMHg5MDhlLCAweDAyNjAsIDB4MDE0MCwKLQkweDIwMDksIDB4MDI4MCwgMHg5MTAyLCAweDkyMGEsIDB4MDIxOCwgMHgyMDEwLCAweDIxMDAsIDB4OTMxOCwKLQkweDIyMDAsIDB4OTQwMiwgMHgxMjI4LCAweDI0MDAsIDB4OTIwMiwgMHgyNDEwLCAweDkzMTgsIDB4OTAwNiwKLQkweDIwMjAsIDB4MjJhOCwgMHhhODAwLCAweDkyMDAsIDB4YTgwMiwgMHgyMGUxLCAweDAwMDAsIDB4NDAwMywKLQkweDgzZmYsIDB4MDE4MCwgMHgzMzAwLCAweDkwODYsIDB4MDI4MCwgMHgxMTMwLCAweDc4MTQsIDB4ODAwMCwKLQkweDkwODUsIDB4MDA4MCwgMHg3ODE2LCAweDJlOTgsIDB4MjMxMCwgMHg4NGZmLCAweDA5MDQsIDB4YjRlMiwKLQkweDA4MDQsIDB4YjRlNCwgMHg5MDg1LCAweDAwMDEsIDB4NzgxNywgMHgwMDAwLCAweDAwOWUsIDB4MDBmZSwKLQkweDAwZGUsIDB4MDAxZSwgMHgwMDA1LCAweDAwZDYsIDB4MDAzNiwgMHgwMDk2LCAweDYzMTQsIDB4MjM0OCwKLQkweGE4N2EsIDB4YTk4MiwgMHgwODBjLCAweDcwMDYsIDB4MDA5ZSwgMHgwMDNlLCAweDAwZGUsIDB4MDAwNSwKLQkweDkxYjYsIDB4MDAxNSwgMHgxMTE4LCAweDA4MGMsIDB4YjE2YywgMHgwMDMwLCAweDkxYjYsIDB4MDAxNiwKLQkweDE5MGMsIDB4MGQ4NSwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwgMHgyMGE5LCAweDAwMGUsIDB4MjBlMSwKLQkweDAwMDAsIDB4MmU5OCwgMHg2MDE0LCAweDAwOTYsIDB4MjA0OCwgMHhhODYwLCAweDIwZTgsIDB4YTg1YywKLQkweDIwYTAsIDB4MDA5ZSwgMHg0MDAzLCAweDkxOTYsIDB4MDAxNiwgMHgwMWYwLCAweDAxMzYsIDB4OTA4MCwKLQkweDAwMWIsIDB4MjBhMCwgMHgyMDExLCAweDAwMDYsIDB4MjBhOSwgMHgwMDAxLCAweDM0MTgsIDB4ODMxOCwKLQkweDIzYTAsIDB4NDAwMywgMHgzMzE4LCAweDgzMTgsIDB4MjM5OCwgMHg4MjExLCAweDFkYjgsIDB4MjAxMSwKLQkweDAwMDYsIDB4MDEzZSwgMHgyMGEwLCAweDMzMTgsIDB4ODMxOCwgMHgyMzk4LCAweDQwMDMsIDB4MzQxOCwKLQkweDgzMTgsIDB4MjNhMCwgMHg4MjExLCAweDFkYjgsIDB4MDA5NiwgMHgwODBjLCAweGNmMWIsIDB4MDEzMCwKLQkweDYwMTQsIDB4MjA0OCwgMHhhODA3LCAweDAwMDAsIDB4YTg2NywgMHgwMTAzLCAweDAwOWUsIDB4MDgwNCwKLQkweGIxNmMsIDB4MDA5NiwgMHgwMGQ2LCAweDAwMzYsIDB4NzMzMCwgMHg5Mzg2LCAweDAyMDAsIDB4MTFhOCwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4ZDcsIDB4MDAwMCwgMHgwMGJlLCAweDYwMTQsIDB4OTAwNSwKLQkweDAxMzAsIDB4MjA0OCwgMHhhODA3LCAweDAwMDAsIDB4YTg2NywgMHgwMTAzLCAweGFiMzIsIDB4MDgwYywKLQkweGIxNmMsIDB4MDAzZSwgMHgwMGRlLCAweDAwOWUsIDB4MDAwNSwgMHgwMDExLCAweDFkNDgsIDB4MGNjOCwKLQkweDAwMDYsIDB4MDAxNiwgMHgwODBjLCAweGQ2NDUsIDB4MDE4OCwgMHg2MDE0LCAweDkwMDUsIDB4MTE3MCwKLQkweDYwMGIsIDB4MDAwMywgMHg2MDFiLCAweDAwMDAsIDB4NjA0YiwgMHgwMDAwLCAweDIwMDksIDB4MDAyMiwKLQkweDA4MGMsIDB4Yjk5NCwgMHg5MDA2LCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDkwODUsIDB4MDAwMSwKLQkweDBjZDAsIDB4MDA5NiwgMHgwMDE2LCAweDIwYTksIDB4MDAxNCwgMHg5ZTgwLCAweDAwMGMsIDB4MjBlMSwKLQkweDAwMDAsIDB4MjA5OCwgMHg2MDE0LCAweDIwNDgsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwKLQkweDAwMDIsIDB4MjBhMCwgMHg0MDAzLCAweDIwMDEsIDB4MDIwNSwgMHgyMDAzLCAweDAwMDEsIDB4MjA5OSwKLQkweDAyNjAsIDB4MjBhOSwgMHgwMDE2LCAweDQwMDMsIDB4MjBhOSwgMHgwMDBhLCAweGE4MDQsIDB4MjA0OCwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAwMiwgMHgyMGEwLCAweDQwMDMsIDB4MjAwMSwKLQkweDAyMDUsIDB4MjAwMywgMHgwMDAyLCAweDIwOTksIDB4MDI2MCwgMHgyMGE5LCAweDAwMjAsIDB4NDAwMywKLQkweDIwMDMsIDB4MDAwMCwgMHg2MDE0LCAweDIwNDgsIDB4YTgwMCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywKLQkweDA4MGMsIDB4YjE2YywgMHgwMDFlLCAweDAwOWUsIDB4MDAwNSwgMHgwMDk2LCAweDAwMTYsIDB4OTAwZSwKLQkweDcwMzAsIDB4OTA4NiwgMHgwMTAwLCAweDAxNDAsIDB4NzAzOCwgMHg5MDg0LCAweDAwZmYsIDB4ODAwYywKLQkweDcwM2MsIDB4OTA4NCwgMHgwMGZmLCAweDgwMDQsIDB4OTA4MCwgMHgwMDA0LCAweDkxMDgsIDB4ODEwYiwKLQkweDIwMTEsIDB4MDAwMiwgMHgyMDE5LCAweDAwMGMsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4Y2E3YiwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTQwLCAweDYwMTQsIDB4MjA0OCwgMHhhODA3LCAweDAwMDAsIDB4YTg2NCwKLQkweGE4ZTIsIDB4YTg2NywgMHgwMTAzLCAweDA4MGMsIDB4YjE2YywgMHgwMDFlLCAweDAwOWUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MjAwOSwgMHgwMDAwLCAweDcwMzAsIDB4OTA4NiwgMHgwMjAwLCAweDAxMTAsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDA5NiwgMHg2MDE0LCAweDkwNGQsIDB4MDkwYywgMHgwZDg1LCAweGE5N2EsIDB4MDgwYywKLQkweDcwMTIsIDB4MDA5ZSwgMHgwODBjLCAweGIxNmMsIDB4MDAxZSwgMHgwMDA1LCAweDAwMTYsIDB4MDA5NiwKLQkweDcwMzAsIDB4OTA4NiwgMHgwMTAwLCAweDExMTgsIDB4MjAwOSwgMHgwMDA0LCAweDAwMTAsIDB4NzAzNCwKLQkweDgwMGMsIDB4ODEwYiwgMHgyMDExLCAweDAwMGMsIDB4MjAxOSwgMHgwMDBjLCAweDYwMTQsIDB4MjA0OCwKLQkweGE4MDQsIDB4MDA5NiwgMHg5MDA1LCAweDAxMDgsIDB4MjA0OCwgMHgwODBjLCAweGNhN2IsIDB4MDA5ZSwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTQ4LCAweGE4MDQsIDB4OTAwNSwgMHgxMTU4LCAweGE4MDcsIDB4MDAwMCwKLQkweGE4NjQsIDB4YThlMiwgMHhhODY3LCAweDAxMDMsIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDA4NiwgMHgyMDQwLCAweGEwMzAsIDB4ODAwNywgMHg5MDg2LCAweDAxMDAsIDB4MTExOCwKLQkweDA4MGMsIDB4YmI1YywgMHgwMGUwLCAweGEwMzQsIDB4ODAwNywgMHg4MDBjLCAweDg4MDYsIDB4ODAwNiwKLQkweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMGMsIDB4YTg3YiwKLQkweDAwMDAsIDB4YTg4MywgMHgwMDAwLCAweGE4OTcsIDB4NDAwMCwgMHhhYWEwLCAweGFiOWMsIDB4YWNhOCwKLQkweGFkYTQsIDB4MjAzMSwgMHgwMDAwLCAweDIwNDEsIDB4MTJhOCwgMHgwMDE5LCAweDBkMDgsIDB4MDA4ZSwKLQkweDA4OTgsIDB4MDA5NiwgMHgwMDA2LCAweDA4MGMsIDB4MTA1OSwgMHgwMDBlLCAweDAxYjAsIDB4YThhYiwKLQkweDBkY2IsIDB4YTg3NiwgMHgwMDBlLCAweGE4YTIsIDB4MDAwNiwgMHhhZTZhLCAweDI4MDAsIDB4YTg5ZSwKLQkweGE5N2EsIDB4YWY3MiwgMHhhYThlLCAweGFiOTIsIDB4YWM5NiwgMHhhZDlhLCAweDAwODYsIDB4Mjk0MCwKLQkweDA4MGMsIDB4MTE0ZSwgMHgwMDhlLCAweDkwODUsIDB4MDAwMSwgMHgwMDllLCAweDAwMDUsIDB4MDBlNiwKLQkweDAwZDYsIDB4MDAyNiwgMHg3MDA4LCAweDkwODQsIDB4MDBmZiwgMHg2MjEwLCAweDAwYjYsIDB4MjI1OCwKLQkweGJhMTAsIDB4MDBiZSwgMHg5MjA2LCAweDE1MjAsIDB4NzAwYywgMHg2MjEwLCAweDAwYjYsIDB4MjI1OCwKLQkweGJhMTQsIDB4MDBiZSwgMHg5MjA2LCAweDExZTAsIDB4NjA0YiwgMHgwMDAwLCAweDJjNjgsIDB4MDAxNiwKLQkweDIwMDksIDB4MDAzNSwgMHgwODBjLCAweGQ1YmIsIDB4MDAxZSwgMHgxMTU4LCAweDYyMmMsIDB4MjI2OCwKLQkweDIwNzEsIDB4MDI2YywgMHg2YjIwLCAweDkzODYsIDB4MDAwMywgMHgwMTMwLCAweDkzODYsIDB4MDAwNiwKLQkweDAxMjgsIDB4MDgwYywgMHhiMTZjLCAweDAwMjAsIDB4MDAzOSwgMHgwMDEwLCAweDA4MGMsIDB4YjdjNywKLQkweDAwMmUsIDB4MDBkZSwgMHgwMGVlLCAweDAwMDUsIDB4MDA5NiwgMHg2ODE0LCAweDIwNDgsIDB4OTE4NiwKLQkweDAwMTUsIDB4MDkwNCwgMHhiN2E2LCAweDkxOGUsIDB4MDAxNiwgMHgxOTA0LCAweGI3YzUsIDB4NzAwYywKLQkweDkwOGMsIDB4ZmYwMCwgMHg5MTg2LCAweDE3MDAsIDB4MDEyMCwgMHg5MTg2LCAweDAzMDAsIDB4MTkwNCwKLQkweGI3ODAsIDB4ODlmZiwgMHgxMTM4LCAweDY4MDAsIDB4OTA4NiwgMHgwMDBmLCAweDA5MDQsIDB4Yjc2MiwKLQkweDA4MDQsIDB4YjdjMywgMHg2ODA4LCAweDkwODYsIDB4ZmZmZiwgMHgxOTA0LCAweGI3YTgsIDB4YTg3YywKLQkweDkwODQsIDB4MDA2MCwgMHg5MDg2LCAweDAwMjAsIDB4MTE1MCwgMHhhOGFjLCAweGE5MzQsIDB4OTEwNiwKLQkweDE5MDQsIDB4YjdhOCwgMHhhOGIwLCAweGE5MzgsIDB4OTEwNiwgMHgxOTA0LCAweGI3YTgsIDB4NjgyNCwKLQkweGQwODQsIDB4MTkwNCwgMHhiN2E4LCAweGQwYjQsIDB4MDE1OCwgMHgwMDE2LCAweDIwMDEsIDB4MTk4NiwKLQkweDIwMGMsIDB4NjAxOCwgMHg5MTAyLCAweDkwODIsIDB4MDAwNSwgMHgwMDFlLCAweDFhMDQsIDB4YjdhOCwKLQkweDA4MGMsIDB4ZDEwYywgMHg2ODEwLCAweDAwOTYsIDB4MjA0OCwgMHhhOWEwLCAweDAwOWUsIDB4Njg1YywKLQkweGE4N2EsIDB4YTk3NiwgMHg2ODY0LCAweGE4ODIsIDB4YTg3YywgMHhjMGRjLCAweGMwZjQsIDB4YzBkNCwKLQkweGE4N2UsIDB4MDAyNiwgMHg5MDBlLCAweDZhMTgsIDB4MjAwMSwgMHgwMDBhLCAweDA4MGMsIDB4OTU1YiwKLQkweGE4ODQsIDB4OTIwYSwgMHgwMjA4LCAweDgwMTEsIDB4YWE4NiwgMHg4MmZmLCAweDAwMmUsIDB4MTEzOCwKLQkweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweGNjMDEsIDB4MDBjZSwgMHgwODA0LCAweGI3YzMsIDB4MDBjNiwKLQkweGE4NjgsIDB4ZDBmYywgMHgxMTE4LCAweDA4MGMsIDB4NjIyZiwgMHgwMDEwLCAweDA4MGMsIDB4NjYzYSwKLQkweDAwY2UsIDB4MTkwNCwgMHhiN2E4LCAweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweGIxNmMsIDB4MDBjZSwKLQkweDA4MDQsIDB4YjdjMywgMHgwMGM2LCAweDA4MGMsIDB4YjFkZCwgMHgwMTk4LCAweDYwMTcsIDB4MDAwMCwKLQkweDY4MTAsIDB4NjAxMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywgMHgwMDAzLCAweDY5MDQsIDB4MDBjNiwKLQkweDJkNjAsIDB4MDgwYywgMHhiMTZjLCAweDAwY2UsIDB4MDgwYywgMHhiMjBhLCAweDAwY2UsIDB4MDgwNCwKLQkweGI3YzMsIDB4MjAwMSwgMHgxOTg4LCAweDIwMDQsIDB4Njg0YSwgMHgwMGNlLCAweDA4MDQsIDB4YjdjMywKLQkweDcwMDgsIDB4OTA4NiwgMHgwMDBiLCAweDExYzgsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjkwMCwKLQkweGMxYmMsIDB4YjkwMiwgMHgwMGJlLCAweDAwYzYsIDB4MmQ2MCwgMHhhODdiLCAweDAwMDMsIDB4MDgwYywKLQkweGQ1ZmYsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDIzLCAweDAwMDIsIDB4MjAwOSwKLQkweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAwY2UsIDB4MDQzMCwgMHg3MDBjLCAweDkwODYsIDB4MmEwMCwKLQkweDExMzgsIDB4MjAwMSwgMHgxOTg4LCAweDIwMDQsIDB4Njg0YSwgMHgwMGU4LCAweDA0YzEsIDB4MDBlOCwKLQkweDg5ZmYsIDB4MDkwYywgMHgwZDg1LCAweDAwYzYsIDB4MDBkNiwgMHgyZDYwLCAweGE4NjcsIDB4MDEwMywKLQkweGE4N2IsIDB4MDAwMywgMHgwODBjLCAweDZlMjcsIDB4MDgwYywgMHhkMTBjLCAweDA4MGMsIDB4YjFhNywKLQkweDAwMjYsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YmEzYywgMHgwODBjLCAweDY4ZGYsIDB4MDBiZSwKLQkweDAwMmUsIDB4MDBkZSwgMHgwMGNlLCAweDA4MGMsIDB4YjE2YywgMHgwMDllLCAweDAwMDUsIDB4OTE4NiwKLQkweDAwMTUsIDB4MTEyOCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2ODRhLCAweDAwNjgsIDB4OTE4ZSwKLQkweDAwMTYsIDB4MTE2MCwgMHgwMGM2LCAweDJkMDAsIDB4MjA2MCwgMHgwODBjLCAweGVjZTEsIDB4MDgwYywKLQkweDhjMTksIDB4MDgwYywgMHhiMTZjLCAweDAwY2UsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA0NiwgMHg3MjI4LCAweGFjYjAsIDB4YWJhYywgMHhkMmY0LCAweDAxMzAsIDB4MjAwMSwKLQkweDE5ODgsIDB4MjAwNCwgMHg2ODRhLCAweDA4MDQsIDB4Yjg0MSwgMHgwMGM2LCAweDJkNjAsIDB4MDgwYywKLQkweGNhZGMsIDB4MDBjZSwgMHg2ODA0LCAweDkwODYsIDB4MDA1MCwgMHgxMTY4LCAweDAwYzYsIDB4MmQwMCwKLQkweDIwNjAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA1MCwgMHgyMDA5LCAweDgwMjMsIDB4MDgwYywKLQkweDk2MTcsIDB4MDBjZSwgMHgwNGYwLCAweDY4MDAsIDB4OTA4NiwgMHgwMDBmLCAweDAxYTgsIDB4ODlmZiwKLQkweDA5MGMsIDB4MGQ4NSwgMHg2ODAwLCAweDkwODYsIDB4MDAwNCwgMHgxMTkwLCAweGE4N2MsIDB4ZDBhYywKLQkweDAxNzgsIDB4YTg0MywgMHgwZmZmLCAweGE4M2YsIDB4MGZmZiwgMHhhODgwLCAweGMwZmMsIDB4YTg4MiwKLQkweDIwMDEsIDB4MDAwMSwgMHg2ODMyLCAweDA0MDAsIDB4MjAwMSwgMHgwMDA3LCAweDY4MzIsIDB4MDBlMCwKLQkweGE4N2MsIDB4ZDBiNCwgMHgxMTUwLCAweGQwYWMsIDB4MGRiOCwgMHg2ODI0LCAweGQwZjQsIDB4MWQ0OCwKLQkweGE4MzgsIDB4YTkzNCwgMHg5MTA1LCAweDBkODAsIDB4MGMyMCwgMHhkMmVjLCAweDFkNjgsIDB4NzAyNCwKLQkweDkzMDYsIDB4MTExOCwgMHg3MDIwLCAweDk0MDYsIDB4MGQzOCwgMHg3MDIwLCAweDY4M2UsIDB4NzAyNCwKLQkweDY4M2EsIDB4MjAwMSwgMHgwMDA1LCAweDY4MzIsIDB4MDgwYywgMHhkMmEwLCAweDA4MGMsIDB4OWFiMywKLQkweDAwMTAsIDB4MDgwYywgMHhiMTZjLCAweDAwNGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMDUsIDB4MDBlNiwKLQkweDAwZDYsIDB4MDAyNiwgMHg3MDA4LCAweDkwODQsIDB4MDBmZiwgMHg2MjEwLCAweDAwYjYsIDB4MjI1OCwKLQkweGJhMTAsIDB4MDBiZSwgMHg5MjA2LCAweDE5MDQsIDB4YjhhYywgMHg3MDBjLCAweDYyMTAsIDB4MDBiNiwKLQkweDIyNTgsIDB4YmExNCwgMHgwMGJlLCAweDkyMDYsIDB4MTkwNCwgMHhiOGFjLCAweDYwMzgsIDB4MjA2OCwKLQkweDY4MjQsIDB4YzBkYywgMHg2ODI2LCAweDZhMjAsIDB4OTI4NiwgMHgwMDA3LCAweDA5MDQsIDB4YjhhYywKLQkweDkyODYsIDB4MDAwMiwgMHgwOTA0LCAweGI4YWMsIDB4OTI4NiwgMHgwMDAwLCAweDA1ZTgsIDB4NjgwOCwKLQkweDYzM2MsIDB4OTMwNiwgMHgxNWM4LCAweDIwNzEsIDB4MDI2YywgMHg5MTg2LCAweDAwMTUsIDB4MDU3MCwKLQkweDkxOGUsIDB4MDAxNiwgMHgxMTAwLCAweDAwYzYsIDB4NjAzOCwgMHgyMDYwLCAweDYxMDQsIDB4OTE4NiwKLQkweDAwNGIsIDB4MDFjMCwgMHg5MTg2LCAweDAwNGMsIDB4MDFhOCwgMHg5MTg2LCAweDAwNGQsIDB4MDE5MCwKLQkweDkxODYsIDB4MDA0ZSwgMHgwMTc4LCAweDkxODYsIDB4MDA1MiwgMHgwMTYwLCAweDYwMTQsIDB4MDA5NiwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDA5MGMsIDB4MGQ4NSwgMHhhODdiLCAweDAwMDMsIDB4MDA5ZSwKLQkweDA4MGMsIDB4ZDVmZiwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsIDB4MDAwMiwKLQkweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk2MTcsIDB4MDBjZSwgMHgwMDMwLCAweDYwMzgsIDB4MjA3MCwKLQkweDIwMDEsIDB4MTk4OCwgMHgyMDA0LCAweDcwNGEsIDB4MDgwYywgMHhiMTZjLCAweDAwMmUsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsIDB4MDBmNiwgMHg2MDE0LCAweDIwNDgsIDB4NjAxMCwKLQkweDIwNTgsIDB4OTFiNiwgMHgwMDE1LCAweDAxMzAsIDB4YmEwOCwgMHhiYjBjLCAweGJjMDAsIDB4YzQ4YywKLQkweGJjMDIsIDB4MDQ3MCwgMHgwMDk2LCAweDAxNTYsIDB4MDAzNiwgMHgwMDI2LCAweDJiNDgsIDB4OWU5MCwKLQkweDAwMTAsIDB4MjAxOSwgMHgwMDBhLCAweDIwYTksIDB4MDAwNCwgMHgwODBjLCAweGMyMjIsIDB4MDAyZSwKLQkweDAwM2UsIDB4MDE1ZSwgMHgwMDllLCAweDE5MDQsIDB4YjkxZCwgMHgwMDk2LCAweDAxNTYsIDB4MDAzNiwKLQkweDAwMjYsIDB4MmI0OCwgMHg5ZTkwLCAweDAwMTQsIDB4MjAxOSwgMHgwMDA2LCAweDIwYTksIDB4MDAwNCwKLQkweDA4MGMsIDB4YzIyMiwgMHgwMDJlLCAweDAwM2UsIDB4MDE1ZSwgMHgwMDllLCAweDE1YjAsIDB4NzIzOCwKLQkweGJhMGEsIDB4NzMzYywgMHhiYjBlLCAweDgzZmYsIDB4MDExOCwgMHhiYzAwLCAweGM0OGQsIDB4YmMwMiwKLQkweGE4MDQsIDB4OTAwNSwgMHgxMTI4LCAweDAwZmUsIDB4MDA5ZSwgMHgwMGJlLCAweDA4MDQsIDB4YjU3YywKLQkweDAwOTYsIDB4MjA0OCwgMHhhYTEyLCAweGFiMTYsIDB4YWMwYSwgMHgwMDllLCAweDgwMDYsIDB4ODAwNiwKLQkweDgwMDcsIDB4OTBiYywgMHgwMDNmLCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMDIsIDB4MjAwOSwKLQkweDAwMmIsIDB4YWFhMCwgMHhhYjljLCAweGFjYTgsIDB4YWRhNCwgMHgyMDMxLCAweDAwMDAsIDB4MjA0MSwKLQkweDEyYTgsIDB4MDgwYywgMHhiNjkxLCAweDAxMzAsIDB4MDBmZSwgMHgwMDllLCAweDA4MGMsIDB4YjE2YywKLQkweDAwYmUsIDB4MDAwNSwgMHgwODBjLCAweGJiNWMsIDB4MGNiOCwgMHgyYjc4LCAweDAwZjYsIDB4MDgwYywKLQkweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDAwZmUsIDB4MDBjNiwgMHgwODBjLCAweGIxMTYsIDB4MmYwMCwKLQkweDYwMTIsIDB4NjAxNywgMHgwMDAwLCAweDYwMjMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsIDB4NjAwMywKLQkweDAwMDEsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjZmYSwgMHgwODBjLCAweDY3MjYsIDB4MDgwYywKLQkweDk2MWUsIDB4MDgwYywgMHg5YWIzLCAweDAwY2UsIDB4MDgwNCwgMHhiOGYwLCAweDIxMDAsIDB4OTFiMiwKLQkweDAwNTMsIDB4MWEwYywgMHgwZDg1LCAweDkxYjIsIDB4MDA0MCwgMHgxYTA0LCAweGI5YTYsIDB4MDAwMiwKLQkweGI5OTQsIDB4Yjk5NCwgMHhiOThhLCAweGI5OTQsIDB4Yjk5NCwgMHhiOTk0LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk5NCwKLQkweGI5ODgsIDB4Yjk5NCwgMHhiOTk0LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5OGEsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5ODgsIDB4Yjk4OCwgMHhiOTk0LCAweGI5OTQsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwKLQkweGI5ODgsIDB4Yjk4OCwgMHhiOTg4LCAweGI5ODgsIDB4Yjk4OCwgMHhiOTk0LCAweGI5ODgsIDB4Yjk4OCwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwMDY2LCAweDAwYjYsIDB4NjYxMCwgMHgyNjU4LCAweGI4ZDQsIDB4YzA4YywKLQkweGI4ZDYsIDB4MDBiZSwgMHgwMDZlLCAweDAwMDAsIDB4NjAwMywgMHgwMDAxLCAweDYxMDYsIDB4OTE4NiwKLQkweDAwMzIsIDB4MDExOCwgMHgwODBjLCAweDk2MWUsIDB4MDAxMCwgMHgwODBjLCAweDk2MTcsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDlhYjMsIDB4MDEyZSwgMHgwMDA1LCAweDI2MDAsIDB4MDAwMiwKLQkweGI5OTQsIDB4Yjk5NCwgMHhiOWJhLCAweGI5OTQsIDB4Yjk5NCwgMHhiOWJhLCAweGI5YmEsIDB4YjliYSwKLQkweGI5YmEsIDB4Yjk5NCwgMHhiOWJhLCAweGI5OTQsIDB4YjliYSwgMHhiOTk0LCAweGI5YmEsIDB4YjliYSwKLQkweGI5YmEsIDB4YjliYSwgMHgwODBjLCAweDBkODUsIDB4NjAwNCwgMHg5MGIyLCAweDAwNTMsIDB4MWEwYywKLQkweDBkODUsIDB4OTFiNiwgMHgwMDEzLCAweDA5MDQsIDB4YmE5MSwgMHg5MWI2LCAweDAwMjcsIDB4MTkwNCwKLQkweGJhM2QsIDB4MDgwYywgMHg5OWVkLCAweDYwMDQsIDB4MDgwYywgMHhkMTIxLCAweDAxYjAsIDB4MDgwYywKLQkweGQxMzIsIDB4MDFhOCwgMHg5MDhlLCAweDAwMjEsIDB4MDkwNCwgMHhiYTNhLCAweDkwOGUsIDB4MDAyMiwKLQkweDExMzAsIDB4MDgwYywgMHhiNWE4LCAweDA5MDQsIDB4YmEzNiwgMHgwODA0LCAweGJhMzcsIDB4OTA4ZSwKLQkweDAwM2QsIDB4MDkwNCwgMHhiYTNhLCAweDA4MDQsIDB4YmEzMCwgMHgwODBjLCAweDMzNDQsIDB4MjAwMSwKLQkweDAwMDcsIDB4MDgwYywgMHg2NmZhLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI5YTAsIDB4MDBiZSwKLQkweDA4MGMsIDB4YmI1YywgMHg5MTg2LCAweDAwN2UsIDB4MTE0OCwgMHgyMDAxLCAweDE4MzcsIDB4MjAxNCwKLQkweGMyODUsIDB4MDgwYywgMHg3NzllLCAweDExMDgsIDB4YzJhZCwgMHgyMjAyLCAweDA4MGMsIDB4YWNmYywKLQkweDAwMzYsIDB4MDAyNiwgMHgyMDE5LCAweDAwMjgsIDB4MjExMCwgMHgwODBjLCAweGVkZWUsIDB4MDAyZSwKLQkweDAwM2UsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MjExMCwgMHgyMDE5LCAweDAwMjgsIDB4MDgwYywKLQkweDk3YjAsIDB4MDA3NiwgMHg5MDNlLCAweDA4MGMsIDB4OTY2ZCwgMHg2MDEwLCAweDAwYjYsIDB4OTA1ZCwKLQkweDAxMDAsIDB4MDBiZSwgMHgyYzA4LCAweDA4MGMsIDB4ZTc1ZCwgMHgwMDdlLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwMWUsIDB4MDgwYywgMHhhZDE4LCAweDA4MGMsIDB4ZDY1YSwgMHgwMDE2LCAweDA4MGMsIDB4ZDNhZSwKLQkweDA4MGMsIDB4YjE2YywgMHgwMDFlLCAweDA4MGMsIDB4MzQxZSwgMHgwODBjLCAweDlhYjMsIDB4MDAzMCwKLQkweDA4MGMsIDB4ZDNhZSwgMHgwODBjLCAweGIxNmMsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4MDgwYywKLQkweGJiNWMsIDB4MGNiMCwgMHgwODBjLCAweGJiOTgsIDB4MGM5OCwgMHg5MTg2LCAweDAwMTUsIDB4MDExOCwKLQkweDkxODYsIDB4MDAxNiwgMHgxMTQwLCAweDA4MGMsIDB4YWY2MSwgMHgwZDgwLCAweDkwODYsIDB4MDAwMiwKLQkweDA5MDQsIDB4YmJhMywgMHgwYzU4LCAweDkxODYsIDB4MDAxNCwgMHgxZDQwLCAweDA4MGMsIDB4OTllZCwKLQkweDYwMDQsIDB4OTA4ZSwgMHgwMDIyLCAweDExMTgsIDB4MDgwYywgMHhiNWE4LCAweDA5ZjgsIDB4MDgwYywKLQkweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDA4MGMsIDB4ZDEyMSwgMHgxMTkwLCAweDA4MGMsIDB4MzM0NCwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI5YTAsIDB4MDBiZSwgMHgwODBjLCAweGJiNWMsIDB4OTE4NiwKLQkweDAwN2UsIDB4MTEyOCwgMHgyMDAxLCAweDE4MzcsIDB4MjAwYywgMHhjMTg1LCAweDIxMDIsIDB4MDgwMCwKLQkweDA4MGMsIDB4ZDEzMiwgMHgxMTIwLCAweDA4MGMsIDB4YmI1YywgMHgwODA0LCAweGJhMzAsIDB4NjAwNCwKLQkweDkwOGUsIDB4MDAzMiwgMHgxMTYwLCAweDAwZTYsIDB4MDBmNiwgMHgyMDcxLCAweDE4OWUsIDB4MjA3OSwKLQkweDAwMDAsIDB4MDgwYywgMHgzNmJmLCAweDAwZmUsIDB4MDBlZSwgMHgwODA0LCAweGJhMzAsIDB4NjAwNCwKLQkweDkwOGUsIDB4MDAyMSwgMHgwZDQwLCAweDkwOGUsIDB4MDAyMiwgMHgwOTBjLCAweGJiNWMsIDB4MDgwNCwKLQkweGJhMzAsIDB4OTBiMiwgMHgwMDQwLCAweDFhMDQsIDB4YmIzYywgMHgyMDA4LCAweDAwMDIsIDB4YmFkOSwKLQkweGJhZGEsIDB4YmFkZCwgMHhiYWUwLCAweGJhZTMsIDB4YmFmMCwgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywKLQkweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywKLQkweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywKLQkweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywgMHhiYWYzLCAweGJhZmUsIDB4YmFkNywKLQkweGJhZmYsIDB4YmFmZSwgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFmZSwKLQkweGJhZmUsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywKLQkweGJhZDcsIDB4YmIyNywgMHhiYWZlLCAweGJhZDcsIDB4YmFmYSwgMHhiYWQ3LCAweGJhZDcsIDB4YmFkNywKLQkweGJhZmIsIDB4YmFkNywgMHhiYWQ3LCAweGJhZDcsIDB4YmFmZSwgMHhiYjIyLCAweGJhZDcsIDB4MDgwYywKLQkweDBkODUsIDB4MDQyMCwgMHgyMDAxLCAweDAwMGIsIDB4MDQ0OCwgMHgyMDAxLCAweDAwMDMsIDB4MDQzMCwKLQkweDIwMDEsIDB4MDAwNSwgMHgwNDE4LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDQsIDB4MDBiZSwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDAsIDB4MTFkOCwgMHgyMDAxLCAweDAwMDEsIDB4MDBiMCwKLQkweDIwMDEsIDB4MDAwOSwgMHgwMDk4LCAweDYwMDMsIDB4MDAwNSwgMHgwODBjLCAweGQ2NWQsIDB4MDgwYywKLQkweDlhYjMsIDB4MDA1OCwgMHgwMDE4LCAweDAwMTAsIDB4MDgwYywgMHg2NmZhLCAweDA0YjgsIDB4MDgwYywKLQkweGQ2NWQsIDB4NjAwMywgMHgwMDA0LCAweDA4MGMsIDB4OWFiMywgMHgwMDA1LCAweDA4MGMsIDB4NjZmYSwKLQkweDYwMDMsIDB4MDAwMiwgMHgwMDM2LCAweDIwMTksIDB4MTg1MiwgMHgyMzA0LCAweDkwODQsIDB4ZmYwMCwKLQkweDExMjAsIDB4MjAwMSwgMHgxOTg2LCAweDIwMWMsIDB4MDA0MCwgMHg4MDA3LCAweDkwOWEsIDB4MDAwNCwKLQkweDBlYzAsIDB4ODAwMywgMHg4MDFiLCAweDgzMWIsIDB4OTMxOCwgMHg2MzFhLCAweDAwM2UsIDB4MDgwYywKLQkweDlhYjMsIDB4MGMxOCwgMHgwODBjLCAweGQzYWUsIDB4MDgwYywgMHhiMTZjLCAweDA4ZjAsIDB4MDBlNiwKLQkweDAwZjYsIDB4MjA3MSwgMHgxODllLCAweDIwNzksIDB4MDAwMCwgMHgwODBjLCAweDM2YmYsIDB4MDBmZSwKLQkweDAwZWUsIDB4MDgwYywgMHg5OWVkLCAweDA4MGMsIDB4YjE2YywgMHgwODc4LCAweDYwMDMsIDB4MDAwMiwKLQkweDA4MGMsIDB4ZDY1ZCwgMHgwODA0LCAweDlhYjMsIDB4MjYwMCwgMHgyMDA4LCAweDAwMDIsIDB4YmI1MywKLQkweGJiMzYsIDB4YmI1MSwgMHhiYjM2LCAweGJiMzYsIDB4YmI1MSwgMHhiYjUxLCAweGJiNTEsIDB4YmI1MSwKLQkweGJiMzYsIDB4YmI1MSwgMHhiYjM2LCAweGJiNTEsIDB4YmIzNiwgMHhiYjUxLCAweGJiNTEsIDB4YmI1MSwKLQkweGJiNTEsIDB4MDgwYywgMHgwZDg1LCAweDAwOTYsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4NzAxMiwKLQkweDAwOWUsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDBlNiwgMHgwMDk2LCAweDAwMjYsIDB4MDAxNiwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwNTY4LCAweDYwMTQsIDB4MjA0OCwgMHhhODY0LCAweDkwODYsIDB4MDEzOSwKLQkweDExYTgsIDB4YTg5NCwgMHg5MDg2LCAweDAwNTYsIDB4MTE0OCwgMHgwODBjLCAweDU1Y2MsIDB4MDEzMCwKLQkweDIwMDEsIDB4MDAwMCwgMHg5MDBlLCAweDIwMTEsIDB4NDAwMCwgMHgwMDI4LCAweDIwMDEsIDB4MDAzMCwKLQkweDkwMGUsIDB4MjAxMSwgMHg0MDA1LCAweDA4MGMsIDB4ZDUxZiwgMHgwMDkwLCAweGE4NjgsIDB4ZDBmYywKLQkweDAxNzgsIDB4YTgwNywgMHgwMDAwLCAweDAwMTYsIDB4NjAwNCwgMHg5MDhlLCAweDAwMjEsIDB4MDE2OCwKLQkweDkwOGUsIDB4MDAzZCwgMHgwMTUwLCAweDAwMWUsIDB4YTg2NywgMHgwMTAzLCAweGE4MzMsIDB4MDEwMCwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMDllLCAweDAwZWUsIDB4MDAwNSwgMHgwMDFlLCAweDAwMDksIDB4MGNjMCwKLQkweDAwOTYsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDAsIDB4MjA0OCwgMHhhODY3LCAweDAxMDMsIDB4YTgyMywKLQkweDgwMDEsIDB4MDA5ZSwgMHgwMDA1LCAweDAwYjYsIDB4NjYxMCwgMHgyNjU4LCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTBiMiwgMHgwMDBjLCAweDFhMGMsIDB4MGQ4NSwgMHg2NjA0LCAweDk2YjYsIDB4MDA0ZCwKLQkweDExMjAsIDB4MDgwYywgMHhkNDNlLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDA0MywKLQkweDExMjAsIDB4MDgwYywgMHhkNDg3LCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDA0YiwKLQkweDExMjAsIDB4MDgwYywgMHhkNGIzLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAzMywKLQkweDExMjAsIDB4MDgwYywgMHhkM2QwLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAyOCwKLQkweDExMjAsIDB4MDgwYywgMHhkMTcwLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAyOSwKLQkweDExMjAsIDB4MDgwYywgMHhkMWIxLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAxZiwKLQkweDExMjAsIDB4MDgwYywgMHhiNTRkLCAweDA4MDQsIDB4YmMyOCwgMHg2NjA0LCAweDk2YjYsIDB4MDAwMCwKLQkweDExMTgsIDB4MDgwYywgMHhiOGIyLCAweDA0ZTAsIDB4NjYwNCwgMHg5NmI2LCAweDAwMjIsIDB4MTExOCwKLQkweDA4MGMsIDB4YjU4OSwgMHgwNGE4LCAweDY2MDQsIDB4OTZiNiwgMHgwMDM1LCAweDExMTgsIDB4MDgwYywKLQkweGI2YWYsIDB4MDQ3MCwgMHg2NjA0LCAweDk2YjYsIDB4MDAzOSwgMHgxMTE4LCAweDA4MGMsIDB4Yjg0NywKLQkweDA0MzgsIDB4NjYwNCwgMHg5NmI2LCAweDAwM2QsIDB4MTExOCwgMHgwODBjLCAweGI1YzEsIDB4MDQwMCwKLQkweDY2MDQsIDB4OTZiNiwgMHgwMDQ0LCAweDExMTgsIDB4MDgwYywgMHhiNWZkLCAweDAwYzgsIDB4NjYwNCwKLQkweDk2YjYsIDB4MDA0OSwgMHgxMTE4LCAweDA4MGMsIDB4YjYzZSwgMHgwMDkwLCAweDY2MDQsIDB4OTZiNiwKLQkweDAwNDEsIDB4MTExOCwgMHgwODBjLCAweGI2MjgsIDB4MDA1OCwgMHg5MWI2LCAweDAwMTUsIDB4MTExMCwKLQkweDAwNjMsIDB4MDAzMCwgMHg5MWI2LCAweDAwMTYsIDB4MTEyOCwgMHgwMGJlLCAweDA4MDQsIDB4YmYzNCwKLQkweDAwYmUsIDB4MDAwNSwgMHgwODBjLCAweGIyMjcsIDB4MGNkOCwgMHhiYzQ1LCAweGJjNTMsIDB4YmM0NSwKLQkweGJjOWEsIDB4YmM0NSwgMHhiZTUxLCAweGJmNDEsIDB4YmM0NSwgMHhiYzQ1LCAweGJmMGEsIDB4YmM0NSwKLQkweGJmMjAsIDB4MDA5NiwgMHg2MDFmLCAweDAwMDAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDAsIDB4MjA0OCwKLQkweGE4NjcsIDB4MDEwMywgMHgwMDllLCAweDA4MDQsIDB4YjE2YywgMHhhMDAxLCAweGEwMDEsIDB4MDAwNSwKLQkweDY2MDQsIDB4OTZiNiwgMHgwMDA0LCAweDExMzAsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NjZlNiwKLQkweDA4MDQsIDB4YjE2YywgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgxODAwLCAweDcwOTAsIDB4OTA4NiwKLQkweDAwNzQsIDB4MTU0MCwgMHgwODBjLCAweGU3MmUsIDB4MTFiMCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwKLQkweDcwMzAsIDB4ZDA4YywgMHgwMTI4LCAweGI4MDAsIDB4ZDBiYywgMHgwMTEwLCAweGMwYzUsIDB4YjgwMiwKLQkweDAwZjksIDB4MDBiZSwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywgMHg2NmZhLCAweDA4MGMsIDB4MzM0NCwKLQkweDA4MGMsIDB4YjE2YywgMHgwMDk4LCAweDIwMDEsIDB4MDAwYSwgMHgwODBjLCAweDY2ZmEsIDB4MDgwYywKLQkweDMzNDQsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywKLQkweDlhYjMsIDB4MDAyMCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywgMHhiZTIxLCAweDAwZWUsIDB4MDAwNSwKLQkweDAwZDYsIDB4YjgwMCwgMHhkMDg0LCAweDAxNjAsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4MjA2OSwKLQkweDE4NDcsIDB4NjgwNCwgMHhkMGE0LCAweDAxMjAsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NjcyNiwKLQkweDAwZGUsIDB4MDAwNSwgMHgwMGI2LCAweDAwOTYsIDB4MDBkNiwgMHgyMDExLCAweDE4MjQsIDB4MjIwNCwKLQkweDkwODYsIDB4MDA3NCwgMHgxOTA0LCAweGJkZjYsIDB4NjAxMCwgMHgyMDU4LCAweGJhYTAsIDB4OTI4NiwKLQkweDAwN2UsIDB4MTEyMCwgMHgwODBjLCAweGMwOTAsIDB4MDgwNCwgMHhiZDYzLCAweDIwMDEsIDB4MTgwZCwKLQkweDIwMDQsIDB4ZDA4YywgMHgwOTA0LCAweGJkMDUsIDB4MDBkNiwgMHgwODBjLCAweDc3OWUsIDB4MDFhMCwKLQkweDAwMjYsIDB4MjAxMSwgMHgwMDEwLCAweDA4MGMsIDB4NmMzNSwgMHgwMDJlLCAweDA5MDQsIDB4YmQwNCwKLQkweDA4MGMsIDB4NTg1NCwgMHgxNTk4LCAweDYwMTQsIDB4MjA0OCwgMHhhODA3LCAweDAwMDAsIDB4YTg2NywKLQkweDAxMDMsIDB4YTgzMywgMHhkZWFkLCAweDA0NTAsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjkxMCwKLQkweDAwYmUsIDB4OTE4NiwgMHgwMGZmLCAweDA1ODAsIDB4MDAyNiwgMHgyMDExLCAweDgwMDgsIDB4MDgwYywKLQkweDZjMzUsIDB4MDAyZSwgMHgwNTQ4LCAweDYwMTQsIDB4OTAwNSwgMHgwOTBjLCAweDBkODUsIDB4MjA0OCwKLQkweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAzOSwgMHgxMTQwLCAweDIwMDEsIDB4MDAzMCwKLQkweDkwMGUsIDB4MjAxMSwgMHg0MDA5LCAweDA4MGMsIDB4ZDUxZiwgMHgwMDQwLCAweDYwMTQsIDB4MjA0OCwKLQkweGE4MDcsIDB4MDAwMCwgMHhhODY3LCAweDAxMDMsIDB4YTgzMywgMHhkZWFkLCAweDYwMTAsIDB4MjA1OCwKLQkweGI5YTAsIDB4MDAxNiwgMHgwODBjLCAweDMzNDQsIDB4MDgwYywgMHhiMTZjLCAweDAwMWUsIDB4MDgwYywKLQkweDM0MWUsIDB4MDBkZSwgMHgwODA0LCAweGJkZmIsIDB4MDBkZSwgMHgwODBjLCAweGMwODUsIDB4NjAxMCwKLQkweDIwNTgsIDB4YmFhMCwgMHg5Mjg2LCAweDAwODAsIDB4MTUxMCwgMHg2MDE0LCAweDkwMDUsIDB4MDFhOCwKLQkweDIwNDgsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwgMHgwMDM5LCAweDExNDAsIDB4MjAwMSwKLQkweDAwMDAsIDB4OTAwZSwgMHgyMDExLCAweDQwMDAsIDB4MDgwYywgMHhkNTFmLCAweDAwMzAsIDB4YTgwNywKLQkweDAwMDAsIDB4YTg2NywgMHgwMTAzLCAweGE4MzMsIDB4MDIwMCwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywKLQkweDY2ZmEsIDB4MDgwYywgMHgzMzQ0LCAweDA4MGMsIDB4YjE2YywgMHgwODA0LCAweGJkZmIsIDB4MDgwYywKLQkweGJlMDksIDB4NjAxNCwgMHg5MDA1LCAweDAxOTAsIDB4MjA0OCwgMHhhODY4LCAweGQwZjQsIDB4MDFlOCwKLQkweGE4NjQsIDB4OTA4NCwgMHgwMGZmLCAweDkwODYsIDB4MDAzOSwgMHgxZDA4LCAweDIwMDEsIDB4MDAwMCwKLQkweDkwMGUsIDB4MjAxMSwgMHg0MDAwLCAweDA4MGMsIDB4ZDUxZiwgMHgwOGY4LCAweDA4MGMsIDB4YmRmZiwKLQkweDAxNjAsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4MjAwMSwgMHgwMDA0LCAweDA4MGMsIDB4NjcyNiwKLQkweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2ZmEsIDB4MDhhMCwgMHgyMDAxLCAweDAwMDQsIDB4MDgwYywKLQkweDY2ZmEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMywgMHgwODBjLCAweDk2MWUsIDB4MDgwYywKLQkweDlhYjMsIDB4MDgwNCwgMHhiZGZiLCAweGI4NWMsIDB4ZDBlNCwgMHgwMTc4LCAweDA4MGMsIDB4ZDM0OCwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgwMTE4LCAweGQwZGMsIDB4MTkwNCwgMHhiZDI1LCAweDIwMTEsIDB4MTgzNywKLQkweDIyMDQsIDB4YzBhZCwgMHgyMDEyLCAweDA4MDQsIDB4YmQyNSwgMHgwODBjLCAweGQzODksIDB4MjAxMSwKLQkweDE4MzcsIDB4MjIwNCwgMHhjMGE1LCAweDIwMTIsIDB4MDAwNiwgMHgwODBjLCAweGU5MDUsIDB4MDAwZSwKLQkweDE5MDQsIDB4YmQyNSwgMHhjMGI1LCAweDIwMTIsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NjZmYSwKLQkweDkwMDYsIDB4MDgwYywgMHg2NmU2LCAweDAwYzYsIDB4MjAwMSwgMHgxODBmLCAweDIwMDQsIDB4ZDA5YywKLQkweDA1MjAsIDB4MDBmNiwgMHgyMDc5LCAweDAxMDAsIDB4MDBlNiwgMHgyMDcxLCAweDE4MDAsIDB4NzAwYywKLQkweDkwODQsIDB4MDBmZiwgMHg3OGU2LCAweDcwN2UsIDB4NzAxMCwgMHg3OGVhLCAweDcwODIsIDB4OTA4YywKLQkweDAwZmYsIDB4MDBlZSwgMHg3ODBjLCAweGMwYjUsIDB4NzgwZSwgMHgwMGZlLCAweDA4MGMsIDB4MjZkNSwKLQkweDAwZjYsIDB4MjEwMCwgMHg5MDBlLCAweDA4MGMsIDB4MjY4YywgMHg3OTVlLCAweDAwZmUsIDB4OTE4NiwKLQkweDAwODEsIDB4MDFmMCwgMHgyMDA5LCAweDAwODEsIDB4MDBlMCwgMHgyMDA5LCAweDAwZWYsIDB4MDBmNiwKLQkweDIwNzksIDB4MDEwMCwgMHg3OWVhLCAweDc4ZTcsIDB4MDAwMCwgMHg3OTMyLCAweDc5MzYsIDB4NzgwYywKLQkweGMwYjUsIDB4NzgwZSwgMHgwMGZlLCAweDA4MGMsIDB4MjZkNSwgMHgwMGY2LCAweDIwNzksIDB4MTgwMCwKLQkweDc5ODIsIDB4MjEwMCwgMHg5MDBlLCAweDc5N2UsIDB4MDgwYywgMHgyNjhjLCAweDc5NWUsIDB4MDBmZSwKLQkweDgxMDgsIDB4MDgwYywgMHg2NzQ5LCAweDJiMDAsIDB4MDBjZSwgMHgxOTA0LCAweGJkMjUsIDB4NjAxMiwKLQkweDIwMDksIDB4MTgwZiwgMHgyMTBjLCAweGQxOWMsIDB4MDE1MCwgMHgyMDA5LCAweDAyN2MsIDB4MjEwYywKLQkweDkxOGMsIDB4MDBmZiwgMHhiOTEyLCAweDIwMDksIDB4MDI3ZCwgMHgyMTBjLCAweGI5MTYsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDgwYywgMHg2NmZhLCAweDYwMjMsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMDI4LCAweDA4MGMsIDB4YmI1YywKLQkweDIwMDEsIDB4MDAwMSwgMHgwNDMxLCAweDAwZGUsIDB4MDA5ZSwgMHgwMGJlLCAweDAwMDUsIDB4MjAwMSwKLQkweDE4MTAsIDB4MjAwNCwgMHhkMGE0LCAweDAxMjAsIDB4MjAwMSwgMHgxODQ4LCAweDIwMDQsIDB4ZDBhYywKLQkweDAwMDUsIDB4MDBlNiwgMHgwODBjLCAweGVlNDcsIDB4MDE5MCwgMHgyMDcxLCAweDAyNjAsIDB4NzEwOCwKLQkweDcyMGMsIDB4OTE4YywgMHgwMGZmLCAweDExMTgsIDB4OTI4NCwgMHhmZjAwLCAweDAxNDAsIDB4NjAxMCwKLQkweDIwNTgsIDB4YjhhMCwgMHg5MDg0LCAweGZmODAsIDB4MTExMCwgMHhiOTEyLCAweGJhMTYsIDB4MDBlZSwKLQkweDAwMDUsIDB4MjAzMCwgMHg5MDA1LCAweDAxNTgsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjZmYSwKLQkweDA4MGMsIDB4NTg1NCwgMHgxMTIwLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY3MjYsIDB4MjYwMCwKLQkweDkwMDUsIDB4MTFiMCwgMHg2MDE0LCAweDAwOTYsIDB4MjA0OCwgMHhhODY4LCAweDAwOWUsIDB4ZDBmYywKLQkweDExNzgsIDB4MDAzNiwgMHgwMDQ2LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGJiYTAsIDB4MDBiZSwKLQkweDIwMjEsIDB4MDAwNCwgMHgyMDExLCAweDgwMTQsIDB4MDgwYywgMHg0Y2ExLCAweDAwNGUsIDB4MDAzZSwKLQkweDA4MGMsIDB4MzM0NCwgMHg2MDIwLCAweDkwODYsIDB4MDAwYSwgMHgxMTA4LCAweDAwMDUsIDB4MDgwNCwKLQkweGIxNmMsIDB4MDBiNiwgMHgwMGU2LCAweDAwMjYsIDB4MDAxNiwgMHgyMDcxLCAweDE4MDAsIDB4NzA5MCwKLQkweDkwODYsIDB4MDAxNCwgMHgxOTA0LCAweGJmMDAsIDB4MjAwMSwgMHgxODBkLCAweDIwMDQsIDB4ZDA4YywKLQkweDA5MDQsIDB4YmViMywgMHgwMGQ2LCAweDA4MGMsIDB4Nzc5ZSwgMHgwMWEwLCAweDAwMjYsIDB4MjAxMSwKLQkweDAwMTAsIDB4MDgwYywgMHg2YzM1LCAweDAwMmUsIDB4MDkwNCwgMHhiZWIyLCAweDA4MGMsIDB4NTg1NCwKLQkweDE1OTgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDcsIDB4MDAwMCwgMHhhODY3LCAweDAxMDMsIDB4YTgzMywKLQkweGRlYWQsIDB4MDQ1MCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOTEwLCAweDAwYmUsIDB4OTE4NiwKLQkweDAwZmYsIDB4MDU4MCwgMHgwMDI2LCAweDIwMTEsIDB4ODAwOCwgMHgwODBjLCAweDZjMzUsIDB4MDAyZSwKLQkweDA1NDgsIDB4NjAxNCwgMHg5MDA1LCAweDA5MGMsIDB4MGQ4NSwgMHgyMDQ4LCAweGE4NjQsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTA4NiwgMHgwMDM5LCAweDExNDAsIDB4MjAwMSwgMHgwMDMwLCAweDkwMGUsIDB4MjAxMSwKLQkweDQwMDksIDB4MDgwYywgMHhkNTFmLCAweDAwNDAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MDcsIDB4MDAwMCwKLQkweGE4NjcsIDB4MDEwMywgMHhhODMzLCAweGRlYWQsIDB4NjAxMCwgMHgyMDU4LCAweGI5YTAsIDB4MDAxNiwKLQkweDA4MGMsIDB4MzM0NCwgMHgwODBjLCAweGIxNmMsIDB4MDAxZSwgMHgwODBjLCAweDM0MWUsIDB4MDBkZSwKLQkweDA4MDQsIDB4YmYwNSwgMHgwMGRlLCAweDA4MGMsIDB4NTg1NCwgMHgxMTcwLCAweDYwMTQsIDB4OTAwNSwKLQkweDExNTgsIDB4MDAzNiwgMHgwMDQ2LCAweDYwMTAsIDB4MjA1OCwgMHhiYmEwLCAweDIwMjEsIDB4MDAwNiwKLQkweDA4MGMsIDB4NGU1OCwgMHgwMDRlLCAweDAwM2UsIDB4MDBkNiwgMHg2MDEwLCAweDIwNTgsIDB4MDgwYywKLQkweDY4NGYsIDB4MDgwYywgMHhiYzg4LCAweDAwZGUsIDB4MDgwYywgMHhjMTViLCAweDE1ODgsIDB4NjAxMCwKLQkweDIwNTgsIDB4Yjg5MCwgMHg5MDA1LCAweDA1NjAsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NjZmYSwKLQkweDAwOTYsIDB4NjAxNCwgMHg5MDRkLCAweDAxZDAsIDB4YTg2NCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwKLQkweDAwMzksIDB4MTE0MCwgMHgyMDAxLCAweDAwMDAsIDB4OTAwZSwgMHgyMDExLCAweDQwMDAsIDB4MDgwYywKLQkweGQ1MWYsIDB4MDA2MCwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMjksIDB4MDEzMCwKLQkweGE4MDcsIDB4MDAwMCwgMHhhODY3LCAweDAxMDMsIDB4YTgzMywgMHgwMjAwLCAweDAwOWUsIDB4MDgwYywKLQkweDMzNDQsIDB4NjAyMCwgMHg5MDg2LCAweDAwMGEsIDB4MDE0MCwgMHgwODBjLCAweGIxNmMsIDB4MDAyOCwKLQkweDA4MGMsIDB4YmI1YywgMHg5MDA2LCAweDA4MGMsIDB4YmUyMSwgMHgwMDFlLCAweDAwMmUsIDB4MDBlZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgyMDExLCAweDE4MjQsIDB4MjIwNCwgMHg5MDg2LCAweDAwMTQsIDB4MTE2MCwKLQkweDIwMDEsIDB4MDAwMiwgMHgwODBjLCAweDY2ZmEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMSwKLQkweDA4MGMsIDB4OTYxZSwgMHgwODA0LCAweDlhYjMsIDB4MjAwMSwgMHgwMDAxLCAweDA4MDQsIDB4YmUyMSwKLQkweDIwMzAsIDB4MjAxMSwgMHgxODI0LCAweDIyMDQsIDB4OTA4NiwgMHgwMDA0LCAweDExNDgsIDB4OTZiNiwKLQkweDAwMGIsIDB4MTEyMCwgMHgyMDAxLCAweDAwMDcsIDB4MDgwYywgMHg2NmZhLCAweDA4MDQsIDB4YjE2YywKLQkweDIwMDEsIDB4MDAwMSwgMHgwODA0LCAweGJlMjEsIDB4MDAwMiwgMHhiYzQ1LCAweGJmNGMsIDB4YmM0NSwKLQkweGJmOGYsIDB4YmM0NSwgMHhjMDNjLCAweGJmNDEsIDB4YmM0OCwgMHhiYzQ1LCAweGMwNTAsIDB4YmM0NSwKLQkweGMwNjIsIDB4NjYwNCwgMHg5Njg2LCAweDAwMDMsIDB4MDkwNCwgMHhiZTUxLCAweDk2YjYsIDB4MDAxZSwKLQkweDExMTAsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDBiNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDgwYywKLQkweGMwNzQsIDB4MTFhMCwgMHg5MDA2LCAweDA4MGMsIDB4NjZlNiwgMHgwODBjLCAweDMzMTUsIDB4MDgwYywKLQkweGQ2NWEsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NjZmYSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwNDI4LCAweDIwMDksIDB4MDI2ZSwKLQkweDIxMDQsIDB4OTA4NiwgMHgwMDA5LCAweDExNjAsIDB4NjAxMCwgMHgyMDU4LCAweGI4NDAsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTAwNSwgMHgwMTgwLCAweDgwMDEsIDB4Yjg0MiwgMHg2MDFiLCAweDAwMGEsIDB4MDA5OCwKLQkweDIwMDksIDB4MDI2ZiwgMHgyMTA0LCAweDkwODQsIDB4ZmYwMCwgMHg5MDhlLCAweDE5MDAsIDB4MDE1OCwKLQkweDkwOGUsIDB4MWUwMCwgMHgwOTkwLCAweDA4MGMsIDB4MzMxNSwgMHgwODBjLCAweGQ2NWEsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHhiZTIxLCAweDAwY2UsIDB4MDBkZSwgMHgwMGJlLCAweDAwMDUsIDB4MDA5NiwKLQkweDAwYjYsIDB4MDAyNiwgMHg5MDE2LCAweDA4MGMsIDB4YzA4MiwgMHgwMGQ2LCAweDIwNjksIDB4MTk3YywKLQkweDJkMDQsIDB4OTAwNSwgMHgwMTY4LCAweDYwMTAsIDB4MjA1OCwgMHhiOGEwLCAweDkwODYsIDB4MDA3ZSwKLQkweDExMzgsIDB4MjA2OSwgMHgxODIwLCAweDJkMDQsIDB4ODAwMCwgMHgyMDZhLCAweDAwZGUsIDB4MDAxMCwKLQkweDAwZGUsIDB4MDA4OCwgMHg5MDA2LCAweDA4MGMsIDB4NjZlNiwgMHgyMDAxLCAweDAwMDIsIDB4MDgwYywKLQkweDY2ZmEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMiwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywKLQkweDlhYjMsIDB4MDgwNCwgMHhjMDBjLCAweDA4MGMsIDB4Y2YxYiwgMHgwMWIwLCAweDYwMTQsIDB4MjA0OCwKLQkweGE4NjQsIDB4MjAxMCwgMHg5MDg2LCAweDAxMzksIDB4MTEzOCwgMHg2MDA3LCAweDAwMTYsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDgwYywgMHhkNTdjLCAweDAwYjAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjQsIDB4ZDBmYywKLQkweDAxMTgsIDB4MjAwMSwgMHgwMDAxLCAweDBjYTgsIDB4MjAwMSwgMHgxODBlLCAweDIwMDQsIDB4ZDBkYywKLQkweDAxNDgsIDB4NjAxMCwgMHgyMDU4LCAweGI4NDAsIDB4OTA4NCwgMHgwMGZmLCAweDkwMDUsIDB4MTExMCwKLQkweDkwMDYsIDB4MGMzOCwgMHgwODBjLCAweGJiNWMsIDB4MjAwOSwgMHgwMjZlLCAweDIxMzQsIDB4OTZiNCwKLQkweDAwZmYsIDB4OTY4NiwgMHgwMDA1LCAweDA1MjAsIDB4OTY4NiwgMHgwMDBiLCAweDAxYzgsIDB4MjAwOSwKLQkweDAyNmYsIDB4MjEwNCwgMHg5MDg0LCAweGZmMDAsIDB4MTExOCwgMHg5Njg2LCAweDAwMDksIDB4MDFjMCwKLQkweDkwODYsIDB4MTkwMCwgMHgxMTY4LCAweDk2ODYsIDB4MDAwOSwgMHgwMTkwLCAweDIwMDEsIDB4MDAwNCwKLQkweDA4MGMsIDB4NjZmYSwgMHgyMDAxLCAweDAwMjgsIDB4NjAxYSwgMHg2MDA3LCAweDAwNTIsIDB4MDAyMCwKLQkweDIwMDEsIDB4MDAwMSwgMHgwODBjLCAweGJlMjEsIDB4MDAyZSwgMHgwMGJlLCAweDAwOWUsIDB4MDAwNSwKLQkweDkyODYsIDB4MDEzOSwgMHgwMTYwLCAweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGNmMWIsIDB4MDE0MCwKLQkweGE4NjQsIDB4OTA4NiwgMHgwMTM5LCAweDAxMTgsIDB4YTg2OCwgMHhkMGZjLCAweDAxMDgsIDB4MGM0MCwKLQkweDYwMTAsIDB4MjA1OCwgMHhiODQwLCAweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDAxMzgsIDB4ODAwMSwKLQkweGI4NDIsIDB4NjAxYiwgMHgwMDBhLCAweDYwMDcsIDB4MDAxNiwgMHgwOGYwLCAweGI4YTAsIDB4OTA4NiwKLQkweDAwN2UsIDB4MTEzOCwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDYxMzAsIDB4MDBlZSwKLQkweDAwMTAsIDB4MDgwYywgMHgzMzE1LCAweDA4NjAsIDB4MjAwMSwgMHgwMDA0LCAweDA4MGMsIDB4NjZmYSwKLQkweDA4MGMsIDB4YzA4MiwgMHgxMTQwLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDMsIDB4MDgwYywKLQkweDk2MWUsIDB4MDgwNCwgMHg5YWIzLCAweDA4MGMsIDB4YmI1YywgMHg5MDA2LCAweDA4MDQsIDB4YmUyMSwKLQkweDA0ODksIDB4MTE2MCwgMHgyMDAxLCAweDAwMDgsIDB4MDgwYywgMHg2NmZhLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDAwNSwgMHgwODBjLCAweDk2MWUsIDB4MDgwNCwgMHg5YWIzLCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MDQsIDB4YmUyMSwgMHgwMGY5LCAweDExNjAsIDB4MjAwMSwgMHgwMDBhLCAweDA4MGMsIDB4NjZmYSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MDQsIDB4OWFiMywKLQkweDIwMDEsIDB4MDAwMSwgMHgwODA0LCAweGJlMjEsIDB4MjAwOSwgMHgwMjZlLCAweDIxMDQsIDB4OTA4NiwKLQkweDAwMDMsIDB4MTEzOCwgMHgyMDA5LCAweDAyNmYsIDB4MjEwNCwgMHg5MDg0LCAweGZmMDAsIDB4OTA4NiwKLQkweDJhMDAsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMGI2LCAweDAwYzYsIDB4MDAxNiwKLQkweDYxMTAsIDB4MjE1OCwgMHgwODBjLCAweDY3YzMsIDB4MDAxZSwgMHgwMGNlLCAweDAwYmUsIDB4MDAwNSwKLQkweDAwYjYsIDB4MDBmNiwgMHgwMGU2LCAweDAwZDYsIDB4MDAzNiwgMHgwMDE2LCAweDYwMTAsIDB4MjA1OCwKLQkweDIwMDksIDB4MTgzNywgMHgyMTA0LCAweDkwODUsIDB4MDAwMywgMHgyMDBhLCAweDA4MGMsIDB4YzEyZCwKLQkweDA1NjAsIDB4MjAwOSwgMHgxODM3LCAweDIxMDQsIDB4YzBjZCwgMHgyMDBhLCAweDA4MGMsIDB4NmMwZCwKLQkweDAxNTgsIDB4OTAwNiwgMHgyMDIwLCAweDIwMDksIDB4MDAyYSwgMHgwODBjLCAweGVhOGQsIDB4MjAwMSwKLQkweDE4MGMsIDB4MjAwYywgMHhjMTk1LCAweDIxMDIsIDB4MjAxOSwgMHgwMDJhLCAweDIwMDksIDB4MDAwMSwKLQkweDA4MGMsIDB4MzJkYSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDMwYmYsIDB4MDBlZSwKLQkweDAwYzYsIDB4MDE1NiwgMHgyMGE5LCAweDA3ODEsIDB4MjAwOSwgMHgwMDdmLCAweDA4MGMsIDB4MzQxZSwKLQkweDgxMDgsIDB4MWYwNCwgMHhjMGM2LCAweDAxNWUsIDB4MDBjZSwgMHgwODBjLCAweGMwODUsIDB4MjA3MSwKLQkweDAyNjAsIDB4MjA3OSwgMHgwMjAwLCAweDc4MTcsIDB4MDAwMSwgMHgyMDAxLCAweDE4MzcsIDB4MjAwYywKLQkweGMxYzUsIDB4NzAxOCwgMHhkMGZjLCAweDAxMTAsIDB4ZDBkYywgMHgwMTE4LCAweDcwMzgsIDB4ZDBkYywKLQkweDExMDgsIDB4YzFjNCwgMHg3ODE3LCAweDAwMDAsIDB4MjAwMSwgMHgxODM3LCAweDIxMDIsIDB4OTE4NCwKLQkweDAwNTAsIDB4OTA4NiwgMHgwMDUwLCAweDA1ZDAsIDB4MjA3OSwgMHgwMTAwLCAweDJlMDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4MjA2OSwgMHgxODFmLCAweDIwNmEsIDB4NzhlNiwgMHgwMDA2LCAweDhlNzAsIDB4MmUwNCwKLQkweDIwNjksIDB4MTgyMCwgMHgyMDZhLCAweDc4ZWEsIDB4NzgzMiwgMHg3ODM2LCAweDIwMTAsIDB4OTA4NCwKLQkweGZmMDAsIDB4MDAxZSwgMHg5MTA1LCAweDIwMDksIDB4MTgyYywgMHgyMDBhLCAweDIyMDAsIDB4OTA4NCwKLQkweDAwZmYsIDB4MjAwOCwgMHgwODBjLCAweDI2ZDUsIDB4MDgwYywgMHg3NzllLCAweDAxNzAsIDB4MjA3MSwKLQkweDAyNjAsIDB4MjA2OSwgMHgxOTgyLCAweDcwNDgsIDB4MjA2YSwgMHg3MDRjLCAweDY4MDYsIDB4NzA1MCwKLQkweDY4MGEsIDB4NzA1NCwgMHg2ODBlLCAweDA4MGMsIDB4ZDM0OCwgMHgwMDQwLCAweDIwMDEsIDB4MDAwNiwKLQkweDA4MGMsIDB4NjZmYSwgMHgwODBjLCAweDMzNDQsIDB4MDgwYywgMHhiMTZjLCAweDAwMWUsIDB4MDAzZSwKLQkweDAwZGUsIDB4MDBlZSwgMHgwMGZlLCAweDAwYmUsIDB4MDAwNSwgMHgwMDk2LCAweDAwMjYsIDB4MDAzNiwKLQkweDAwZTYsIDB4MDE1NiwgMHgyMDE5LCAweDE4MmMsIDB4MjMxYywgMHg4M2ZmLCAweDAxZjAsIDB4MjA3MSwKLQkweDAyNjAsIDB4NzIwMCwgMHg5Mjk0LCAweDAwZmYsIDB4NzAwNCwgMHg5MDg0LCAweGZmMDAsIDB4OTIwNSwKLQkweDkzMDYsIDB4MTE5OCwgMHgyMDExLCAweDAyNzYsIDB4MjBhOSwgMHgwMDA0LCAweDJiNDgsIDB4MjAxOSwKLQkweDAwMGEsIDB4MDgwYywgMHhjMjIyLCAweDExNDgsIDB4MjAxMSwgMHgwMjdhLCAweDIwYTksIDB4MDAwNCwKLQkweDIwMTksIDB4MDAwNiwgMHgwODBjLCAweGMyMjIsIDB4MTEwMCwgMHgwMTVlLCAweDAwZWUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDA5ZSwgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwgMHgwMjYwLCAweDcwMzQsIDB4OTA4NiwKLQkweDAwMTQsIDB4MTFhOCwgMHg3MDM4LCAweDkwODYsIDB4MDgwMCwgMHgxMTg4LCAweDcwM2MsIDB4ZDBlYywKLQkweDAxNjAsIDB4OTA4NCwgMHgwZjAwLCAweDkwODYsIDB4MDEwMCwgMHgxMTM4LCAweDcwNTQsIDB4ZDBhNCwKLQkweDExMTAsIDB4ZDBhYywgMHgwMTEwLCAweDkwMDYsIDB4MDAxMCwgMHg5MDg1LCAweDAwMDEsIDB4MDBlZSwKLQkweDAwMDUsIDB4MDBlNiwgMHgwMDk2LCAweDAwYzYsIDB4MDA3NiwgMHgwMDU2LCAweDAwNDYsIDB4MDAyNiwKLQkweDAwMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAyOSwgMHgxOWY0LCAweDI1MmMsIDB4MjAyMSwKLQkweDE5ZmIsIDB4MjQyNCwgMHgyMDYxLCAweDFkZGMsIDB4MjA3MSwgMHgxODAwLCAweDcyNTQsIDB4NzA3NCwKLQkweDkyMDIsIDB4MWEwNCwgMHhjMWVlLCAweDA4MGMsIDB4OGVlZSwgMHgwOTA0LCAweGMxZTcsIDB4MDgwYywKLQkweGVhYmUsIDB4MDkwNCwgMHhjMWU3LCAweDY3MjAsIDB4OTc4NiwgMHgwMDA3LCAweDA5MDQsIDB4YzFlNywKLQkweDI1MDAsIDB4OWMwNiwgMHgwOTA0LCAweGMxZTcsIDB4MjQwMCwgMHg5YzA2LCAweDA5MDQsIDB4YzFlNywKLQkweDNlMDgsIDB4OTE4NiwgMHgwMDAyLCAweDExNDgsIDB4NjAxMCwgMHg5MDA1LCAweDAxMzAsIDB4MDBiNiwKLQkweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsIDB4MTU5MCwgMHgwMGM2LCAweDYwNDMsIDB4ZmZmZiwKLQkweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExMTAsIDB4MDgwYywgMHgxYWQzLCAweDk3ODYsIDB4MDAwYSwKLQkweDAxNDgsIDB4MDgwYywgMHhkMTMyLCAweDExMzAsIDB4MDBjZSwgMHgwODBjLCAweGJiNWMsIDB4MDgwYywKLQkweGIxYTcsIDB4MDBlOCwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxYTgsIDB4OTc4NiwKLQkweDAwMDMsIDB4MTUzMCwgMHhhODY3LCAweDAxMDMsIDB4YTg3YywgMHhkMGNjLCAweDAxMzAsIDB4MDA5NiwKLQkweGE4NzgsIDB4MjA0OCwgMHgwODBjLCAweDEwMGIsIDB4MDA5ZSwgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwKLQkweDA4MGMsIDB4NzAwNiwgMHgwODBjLCAweGQxMGMsIDB4MDgwYywgMHhiMWE3LCAweDAwY2UsIDB4OWNlMCwKLQkweDAwMWMsIDB4NzA2OCwgMHg5YzAyLCAweDEyMTAsIDB4MDgwNCwgMHhjMThlLCAweDAxMmUsIDB4MDAwZSwKLQkweDAwMmUsIDB4MDA0ZSwgMHgwMDVlLCAweDAwN2UsIDB4MDBjZSwgMHgwMDllLCAweDAwZWUsIDB4MDAwNSwKLQkweDk3ODYsIDB4MDAwNiwgMHgxMTE4LCAweDA4MGMsIDB4ZWEzMCwgMHgwYzMwLCAweDk3ODYsIDB4MDAwOSwKLQkweDExNDgsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDQsIDB4MGQwOCwgMHgyMDA5LCAweDAwNGMsIDB4MDgwYywKLQkweGIyMGEsIDB4MDhlMCwgMHg5Nzg2LCAweDAwMGEsIDB4MDk4MCwgMHgwODIwLCAweDIyMGMsIDB4MjMwNCwKLQkweDkxMDYsIDB4MTEzMCwgMHg4MjEwLCAweDgzMTgsIDB4MWYwNCwgMHhjMjBlLCAweDkwMDYsIDB4MDAwNSwKLQkweDIzMDQsIDB4OTEwMiwgMHgwMjE4LCAweDIwMDEsIDB4MDAwMSwgMHgwMDA4LCAweDkwMDYsIDB4OTE4ZCwKLQkweDAwMDEsIDB4MDAwNSwgMHgwMTM2LCAweDAxYzYsIDB4MDAxNiwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywKLQkweDkwOGMsIDB4MDAzZiwgMHgyMWUwLCAweDkwODQsIDB4ZmZjMCwgMHg5MzAwLCAweDIwOTgsIDB4MzUxOCwKLQkweDIwYTksIDB4MDAwMSwgMHgyMjBjLCAweDQwMDIsIDB4OTEwZSwgMHgxMTQwLCAweDgyMTAsIDB4ODMxOSwKLQkweDFkYzgsIDB4OTAwNiwgMHgwMDFlLCAweDAxY2UsIDB4MDEzZSwgMHgwMDA1LCAweDIyMGMsIDB4OTEwMiwKLQkweDAyMTgsIDB4MjAwMSwgMHgwMDAxLCAweDAwMTAsIDB4MjAwMSwgMHgwMDAwLCAweDkxOGQsIDB4MDAwMSwKLQkweDAwMWUsIDB4MDFjZSwgMHgwMTNlLCAweDAwMDUsIDB4MjIwYywgMHg4MTBmLCAweDIzMDQsIDB4OTEwNiwKLQkweDExMzAsIDB4ODIxMCwgMHg4MzE4LCAweDFmMDQsIDB4YzI0YywgMHg5MDA2LCAweDAwMDUsIDB4OTE4ZCwKLQkweDAwMDEsIDB4MDAwNSwgMHg2MDA0LCAweDkwOGEsIDB4MDA1MywgMHgxYTBjLCAweDBkODUsIDB4MDgwYywKLQkweGQxMjEsIDB4MDEyMCwgMHgwODBjLCAweGQxMzIsIDB4MDE1OCwgMHgwMDI4LCAweDA4MGMsIDB4MzM0NCwKLQkweDA4MGMsIDB4ZDEzMiwgMHgwMTI4LCAweDA4MGMsIDB4OTllZCwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwKLQkweDA4MGMsIDB4YmI1YywgMHgwY2MwLCAweDkxODIsIDB4MDA1NywgMHgxMjIwLCAweDkxODIsIDB4MDA0MCwKLQkweDAyMDgsIDB4MDAwYSwgMHgwMDA1LCAweGMyOTIsIDB4YzI5MiwgMHhjMjkyLCAweGMyOTIsIDB4YzI5MiwKLQkweGMyOTIsIDB4YzI5MiwgMHhjMjkyLCAweGMyOTIsIDB4YzI5MiwgMHhjMjkyLCAweGMyOTQsIDB4YzI5NCwKLQkweGMyOTQsIDB4YzI5NCwgMHhjMjkyLCAweGMyOTIsIDB4YzI5MiwgMHhjMjk0LCAweGMyOTIsIDB4YzI5MiwKLQkweGMyOTIsIDB4YzI5MiwgMHgwODBjLCAweDBkODUsIDB4NjAwYiwgMHhmZmZmLCAweDYwMDMsIDB4MDAwZiwKLQkweDYxMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhkNjVkLCAweDIwMDksIDB4ODAwMCwKLQkweDA4MGMsIDB4OTYxNywgMHgwMTJlLCAweDAwMDUsIDB4OTE4NiwgMHgwMDEzLCAweDExMjgsIDB4NjAwNCwKLQkweDkwODIsIDB4MDA0MCwgMHgwODA0LCAweGMzMWMsIDB4OTE4NiwgMHgwMDI3LCAweDE1MjAsIDB4MDgwYywKLQkweDk5ZWQsIDB4MDgwYywgMHgzMzE1LCAweDA4MGMsIDB4ZDY1YSwgMHgwMDk2LCAweDYxMTQsIDB4MjE0OCwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTk4LCAweDA4MGMsIDB4ZDEzMiwgMHgxMTE4LCAweDA4MGMsIDB4YmI1YywKLQkweDAwNjgsIDB4YTg2NywgMHgwMTAzLCAweGE4N2IsIDB4MDAyOSwgMHhhODc3LCAweDAwMDAsIDB4YTk3YywKLQkweGMxYzUsIDB4YTk3ZSwgMHgwODBjLCAweDcwMTIsIDB4MDgwYywgMHhkMTBjLCAweDAwOWUsIDB4MDgwYywKLQkweGIxNmMsIDB4MDgwNCwgMHg5YWIzLCAweDkxODYsIDB4MDAxNCwgMHgxMTIwLCAweDYwMDQsIDB4OTA4MiwKLQkweDAwNDAsIDB4MDAzMCwgMHg5MTg2LCAweDAwNTMsIDB4MDExMCwgMHgwODBjLCAweDBkODUsIDB4MDAwNSwKLQkweDAwMDIsIDB4YzJmYSwgMHhjMmY4LCAweGMyZjgsIDB4YzJmOCwgMHhjMmY4LCAweGMyZjgsIDB4YzJmOCwKLQkweGMyZjgsIDB4YzJmOCwgMHhjMmY4LCAweGMyZjgsIDB4YzMxMywgMHhjMzEzLCAweGMzMTMsIDB4YzMxMywKLQkweGMyZjgsIDB4YzMxMywgMHhjMmY4LCAweGMzMTMsIDB4YzJmOCwgMHhjMmY4LCAweGMyZjgsIDB4YzJmOCwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweDk5ZWQsIDB4MDA5NiwgMHg2MTE0LCAweDIxNDgsIDB4MDgwYywKLQkweGNmMWIsIDB4MDE2OCwgMHhhODY3LCAweDAxMDMsIDB4YTg3YiwgMHgwMDA2LCAweGE4NzcsIDB4MDAwMCwKLQkweGE4ODAsIDB4YzBlYywgMHhhODgyLCAweDA4MGMsIDB4NzAxMiwgMHgwODBjLCAweGQxMGMsIDB4MDA5ZSwKLQkweDA4MGMsIDB4YjE2YywgMHgwMDA1LCAweDA4MGMsIDB4OTllZCwgMHgwODBjLCAweGQxMzIsIDB4MDkwYywKLQkweGJiNWMsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDAwMiwgMHhjMzM2LCAweGMzMzQsIDB4YzMzNCwKLQkweGMzMzQsIDB4YzMzNCwgMHhjMzM0LCAweGMzMzQsIDB4YzMzNCwgMHhjMzM0LCAweGMzMzQsIDB4YzMzNCwKLQkweGMzMzgsIDB4YzMzOCwgMHhjMzM4LCAweGMzMzgsIDB4YzMzNCwgMHhjMzNhLCAweGMzMzQsIDB4YzMzOCwKLQkweGMzMzQsIDB4YzMzNCwgMHhjMzM0LCAweGMzMzQsIDB4MDgwYywgMHgwZDg1LCAweDA4MGMsIDB4MGQ4NSwKLQkweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweGIxNmMsIDB4MDgwNCwgMHg5YWIzLCAweDkxODIsIDB4MDA1NywKLQkweDEyMjAsIDB4OTE4MiwgMHgwMDQwLCAweDAyMDgsIDB4MDAwYSwgMHgwMDA1LCAweGMzNWQsIDB4YzM1ZCwKLQkweGMzNWQsIDB4YzM1ZCwgMHhjMzVkLCAweGMzOTYsIDB4YzQ4OCwgMHhjMzVkLCAweGM0OTQsIDB4YzM1ZCwKLQkweGMzNWQsIDB4YzM1ZCwgMHhjMzVkLCAweGMzNWQsIDB4YzM1ZCwgMHhjMzVkLCAweGMzNWQsIDB4YzM1ZCwKLQkweGMzNWQsIDB4YzQ5NCwgMHhjMzVmLCAweGMzNWQsIDB4YzQ5MiwgMHgwODBjLCAweDBkODUsIDB4MDBiNiwKLQkweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweDYwMTAsIDB4MjA1OCwgMHhiODAwLCAweGQwYmMsIDB4MTUwOCwKLQkweGE4N2IsIDB4MDAwMCwgMHhhODY3LCAweDAxMDMsIDB4YTg3NywgMHgwMDAwLCAweGE4N2MsIDB4ZDBhYywKLQkweDAxMjgsIDB4YTgzNCwgMHhhOTM4LCAweDkxMTUsIDB4MTkwYywgMHhjNTE5LCAweDA4MGMsIDB4NmUyNywKLQkweDYyMTAsIDB4MjI1OCwgMHhiYTNjLCAweDgyZmYsIDB4MDExMCwgMHg4MjExLCAweGJhM2UsIDB4YjhkMCwKLQkweDkwMDUsIDB4MDExMCwgMHgwODBjLCAweDY4ZGYsIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDBiZSwKLQkweDAwMDUsIDB4YTg3YywgMHhkMGFjLCAweDA5ZTAsIDB4YTgzOCwgMHhhOTM0LCAweDkxMDUsIDB4MDljMCwKLQkweGE4ODAsIDB4ZDBiYywgMHgxOWE4LCAweDA4MGMsIDB4ZDI2NywgMHgwYzgwLCAweDAwYjYsIDB4MDA5NiwKLQkweDYxMTQsIDB4MjE0OCwgMHg2MDFjLCAweGQwZmMsIDB4MTExMCwgMHg3NjQ0LCAweDAwMDgsIDB4OTAzNiwKLQkweDk2YjQsIDB4MGZmZiwgMHg4NmZmLCAweDE1OTAsIDB4NjAxMCwgMHgyMDU4LCAweGI4MDAsIDB4ZDBiYywKLQkweDE5MDQsIDB4YzQ3NywgMHhhODdiLCAweDAwMDAsIDB4YTg2NywgMHgwMTAzLCAweGFlNzYsIDB4YTg3YywKLQkweGQwYWMsIDB4MDEyOCwgMHhhODM0LCAweGE5MzgsIDB4OTExNSwgMHgxOTBjLCAweGM1MTksIDB4MDgwYywKLQkweDZlMjcsIDB4NjIxMCwgMHgyMjU4LCAweGJhM2MsIDB4ODJmZiwgMHgwMTEwLCAweDgyMTEsIDB4YmEzZSwKLQkweGI4ZDAsIDB4OTAwNSwgMHgwMTEwLCAweDA4MGMsIDB4NjhkZiwgMHg2MDFjLCAweGQwZmMsIDB4MTE0OCwKLQkweDcwNDQsIDB4ZDBlNCwgMHgxOTA0LCAweGM0NTgsIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDBiZSwKLQkweDAwMDUsIDB4MjAwOSwgMHgwMjExLCAweDIxMGMsIDB4MDgwYywgMHgwZDg1LCAweDk2OGMsIDB4MGMwMCwKLQkweDAxNTAsIDB4NjAxMCwgMHgyMDU4LCAweGI4MDAsIDB4ZDBiYywgMHgxOTA0LCAweGM0NWMsIDB4NzM0OCwKLQkweGFiOTIsIDB4NzM0YywgMHhhYjhlLCAweDk2OGMsIDB4MDBmZiwgMHg5MTg2LCAweDAwMDIsIDB4MDUwOCwKLQkweDkxODYsIDB4MDAyOCwgMHgxMTE4LCAweGE4N2IsIDB4MDAxYywgMHgwMGU4LCAweGQ2ZGMsIDB4MDFhMCwKLQkweGE4N2IsIDB4MDAxNSwgMHhhODdjLCAweGQwYWMsIDB4MDE3MCwgMHhhOTM4LCAweGFhMzQsIDB4MjEwMCwKLQkweDkyMDUsIDB4MDE0OCwgMHg3MDQ4LCAweDkxMDYsIDB4MTExOCwgMHg3MDRjLCAweDkyMDYsIDB4MDExOCwKLQkweGE5OTIsIDB4YWE4ZSwgMHhjNmRjLCAweDAwMzgsIDB4ZDZkNCwgMHgwMTE4LCAweGE4N2IsIDB4MDAwNywKLQkweDAwMTAsIDB4YTg3YiwgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHhhZTc2LCAweDkwMWUsIDB4ZDZjNCwKLQkweDAxZDgsIDB4OTY4NiwgMHgwMTAwLCAweDExMzAsIDB4NzA2NCwgMHg5MDA1LCAweDExMTgsIDB4YzZjNCwKLQkweDA4MDQsIDB4YzNhMiwgMHg3MzVjLCAweGFiODYsIDB4ODNmZiwgMHgwMTcwLCAweDkzOGEsIDB4MDAwOSwKLQkweDAyMTAsIDB4MjAxOSwgMHgwMDA4LCAweDAwMzYsIDB4MjMwOCwgMHgyMDE5LCAweDAwMTgsIDB4MjAxMSwKLQkweDAwMjUsIDB4MDgwYywgMHhjYTdiLCAweDAwM2UsIDB4ZDZjYywgMHgwOTA0LCAweGMzYjcsIDB4NzE1NCwKLQkweGE5OGEsIDB4ODFmZiwgMHgwOTA0LCAweGMzYjcsIDB4OTE5MiwgMHgwMDIxLCAweDEyNzgsIDB4ODMwNCwKLQkweDkwOTgsIDB4MDAxOCwgMHgyMDExLCAweDAwMjksIDB4MDgwYywgMHhjYTdiLCAweDIwMTEsIDB4MDIwNSwKLQkweDIwMTMsIDB4MDAwMCwgMHgwODBjLCAweGQ1ZTgsIDB4MDgwNCwgMHhjM2I3LCAweGE4NjgsIDB4ZDBmYywKLQkweDAxMjAsIDB4MjAwOSwgMHgwMDIwLCAweGE5OGEsIDB4MGM1MCwgMHgwMGE2LCAweDI5NTAsIDB4MDgwYywKLQkweGNhMWEsIDB4MDBhZSwgMHgwODBjLCAweGQ1ZTgsIDB4MDgwYywgMHhjYTZiLCAweDA4MDQsIDB4YzNiOSwKLQkweDA4MGMsIDB4ZDIyYSwgMHgwODA0LCAweGMzY2UsIDB4YTg3YywgMHhkMGFjLCAweDA5MDQsIDB4YzNkZiwKLQkweGE4ODAsIDB4ZDBiYywgMHgxOTA0LCAweGMzZGYsIDB4OTY4NCwgMHgwNDAwLCAweDAxMzAsIDB4YTgzOCwKLQkweGFiMzQsIDB4OTMwNSwgMHgwOTA0LCAweGMzZGYsIDB4MDBiOCwgMHg3MzQ4LCAweGE4MzgsIDB4OTMwNiwKLQkweDExOTgsIDB4NzM0YywgMHhhODM0LCAweDkzMWUsIDB4MDkwNCwgMHhjM2RmLCAweDAwNjgsIDB4YTg3YywKLQkweGQwYWMsIDB4MDkwNCwgMHhjM2FhLCAweGE4MzgsIDB4YTkzNCwgMHg5MTA1LCAweDA5MDQsIDB4YzNhYSwKLQkweGE4ODAsIDB4ZDBiYywgMHgxOTA0LCAweGMzYWEsIDB4MDgwYywgMHhkMjY3LCAweDA4MDQsIDB4YzNjZSwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMjZjLCAweDdjMDQsIDB4N2IwMCwgMHg3ZTBjLCAweDdkMDgsIDB4MDBmZSwKLQkweDAwMjEsIDB4MDAwNSwgMHgwMDExLCAweDAwMDUsIDB4MDAwNSwgMHgwMDk2LCAweDYwMDMsIDB4MDAwMiwKLQkweDYwMDcsIDB4MDA0MywgMHg2MDE0LCAweDIwNDgsIDB4YTg3YywgMHhkMGFjLCAweDAxMjgsIDB4MDA5ZSwKLQkweDAwMDUsIDB4MjEzMCwgMHgyMjI4LCAweDAwNTgsIDB4MjQwMCwgMHhhOWFjLCAweDkxMGEsIDB4MjMwMCwKLQkweGFhYjAsIDB4OTIxMywgMHgyNjAwLCAweDkxMDIsIDB4MjUwMCwgMHg5MjAzLCAweDBlOTAsIDB4YWM0NiwKLQkweGFiNGEsIDB4YWUzNiwgMHhhZDNhLCAweDYwNDQsIDB4ZDBmYywgMHgxOTBjLCAweGFkMjUsIDB4NjA0YiwKLQkweDAwMDAsIDB4MDgwYywgMHgxYzljLCAweDExMTgsIDB4NjE0NCwgMHgwODBjLCAweDk2NDMsIDB4MDA5ZSwKLQkweDAwMDUsIDB4OTE4MiwgMHgwMDU3LCAweDEyMjAsIDB4OTE4MiwgMHgwMDQwLCAweDAyMDgsIDB4MDAwYSwKLQkweDAwMDUsIDB4YzRlMCwgMHhjNGUwLCAweGM0ZTAsIDB4YzRlMCwgMHhjNGUwLCAweGM0ZTAsIDB4YzRlMCwKLQkweGM0ZTAsIDB4YzRlMCwgMHhjNGUwLCAweGM0ZTIsIDB4YzRlMCwgMHhjNGUwLCAweGM0ZTAsIDB4YzRlMCwKLQkweGM0ZjMsIDB4YzRlMCwgMHhjNGUwLCAweGM0ZTAsIDB4YzRlMCwgMHhjNTE3LCAweGM0ZTAsIDB4YzRlMCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg2MDA0LCAweDkwODYsIDB4MDA0MCwgMHgxMTEwLCAweDA4MGMsIDB4OTllZCwKLQkweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweGE1OTYsIDB4NjAwMywgMHgwMDAyLCAweDA4MGMsIDB4ZDY2MiwKLQkweDA4MGMsIDB4OWE0OCwgMHgwMDA1LCAweDYwMDQsIDB4OTA4NiwgMHgwMDQwLCAweDExMTAsIDB4MDgwYywKLQkweDk5ZWQsIDB4MjAxOSwgMHgwMDAxLCAweDA4MGMsIDB4YTU5NiwgMHgwODBjLCAweDlhNDgsIDB4MDgwYywKLQkweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweDA4MGMsIDB4Y2YxYiwKLQkweDAxNTAsIDB4YTg2NywgMHgwMTAzLCAweGE4N2IsIDB4MDAyOSwgMHhhODc3LCAweDAwMDAsIDB4MDgwYywKLQkweDcwMTIsIDB4MDgwYywgMHhkMTBjLCAweDAwOWUsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDgwYywKLQkweDBkODUsIDB4YTg3YiwgMHgwMDE1LCAweGQxZmMsIDB4MDE4MCwgMHhhODdiLCAweDAwMDcsIDB4ODAwMiwKLQkweDgwMDAsIDB4ODEwYSwgMHg5MTg5LCAweDAwMDAsIDB4MDAwNiwgMHgwMDE2LCAweDIwMDksIDB4MWE3YywKLQkweDIxMDQsIDB4ODAwMCwgMHgyMDBhLCAweDAwMWUsIDB4MDAwZSwgMHhhOTkyLCAweGE4OGUsIDB4MDAwNSwKLQkweDkxODIsIDB4MDA1NywgMHgxMjIwLCAweDkxODIsIDB4MDA0MCwgMHgwMjA4LCAweDAwMGEsIDB4MDAwNSwKLQkweGM1NGYsIDB4YzU0ZiwgMHhjNTRmLCAweGM1NGYsIDB4YzU0ZiwgMHhjNTUxLCAweGM1NGYsIDB4YzU0ZiwKLQkweGM2MGUsIDB4YzU0ZiwgMHhjNTRmLCAweGM1NGYsIDB4YzU0ZiwgMHhjNTRmLCAweGM1NGYsIDB4YzU0ZiwKLQkweGM1NGYsIDB4YzU0ZiwgMHhjNTRmLCAweGM3NGUsIDB4YzU0ZiwgMHhjNzU4LCAweGM1NGYsIDB4MDgwYywKLQkweDBkODUsIDB4NjAxYywgMHhkMGJjLCAweDAxNzgsIDB4ZDA4NCwgMHgwMTY4LCAweGQwZjQsIDB4MDEyMCwKLQkweGMwODQsIDB4NjAxZSwgMHgwODA0LCAweGMzM2UsIDB4NjExNCwgMHgwMDk2LCAweDIxNDgsIDB4YTg3YywKLQkweGMwZTUsIDB4YTg3ZSwgMHgwMDllLCAweDAwNzYsIDB4MDBhNiwgMHgwMGU2LCAweDAwOTYsIDB4MjA3MSwKLQkweDAyNjAsIDB4NjExNCwgMHgyMTUwLCAweDYwMWMsIDB4ZDBmYywgMHgxMTEwLCAweDc2NDQsIDB4MDAwOCwKLQkweDkwMzYsIDB4YjY3NiwgMHg5NmI0LCAweDBmZmYsIDB4Yjc3YywgMHhjN2U1LCAweGI3N2UsIDB4NjIxMCwKLQkweDAwYjYsIDB4MjI1OCwgMHhiYTNjLCAweDgyZmYsIDB4MDExMCwgMHg4MjExLCAweGJhM2UsIDB4MDBiZSwKLQkweDg2ZmYsIDB4MDkwNCwgMHhjNjA3LCAweDk2OTQsIDB4ZmYwMCwgMHg5Mjg0LCAweDBjMDAsIDB4MDEyMCwKLQkweDcwNDgsIDB4YjA5MiwgMHg3MDRjLCAweGIwOGUsIDB4OTI4NCwgMHgwMzAwLCAweDA5MDQsIDB4YzYwNywKLQkweDk2ODYsIDB4MDEwMCwgMHgxMTMwLCAweDcwNjQsIDB4OTAwNSwgMHgxMTE4LCAweGM2YzQsIDB4YjY3NiwKLQkweDBjMzgsIDB4MDgwYywgMHgxMDU5LCAweDA5MGMsIDB4MGQ4NSwgMHgyOTAwLCAweGIwN2EsIDB4Yjc3YywKLQkweDk3YmQsIDB4MDIwMCwgMHhiNzdlLCAweGE4NjcsIDB4MDEwMywgMHhiMDY4LCAweGE4NmEsIDB4YjA2YywKLQkweGE4NmUsIDB4YjA3MCwgMHhhODcyLCAweDcwNDQsIDB4OTA4NCwgMHhmMDAwLCAweDk2MzUsIDB4YWU3NiwKLQkweDk2OGMsIDB4MGMwMCwgMHgwMTIwLCAweDczNDgsIDB4YWI5MiwgMHg3MzRjLCAweGFiOGUsIDB4OTY4YywKLQkweDAwZmYsIDB4OTE4NiwgMHgwMDAyLCAweDAxODAsIDB4OTE4NiwgMHgwMDI4LCAweDExMTgsIDB4YTg3YiwKLQkweDAwMWMsIDB4MDA2MCwgMHhkNmRjLCAweDAxMTgsIDB4YTg3YiwgMHgwMDE1LCAweDAwMzgsIDB4ZDZkNCwKLQkweDAxMTgsIDB4YTg3YiwgMHgwMDA3LCAweDAwMTAsIDB4YTg3YiwgMHgwMDAwLCAweGFmN2UsIDB4YjA4MCwKLQkweGE4ODIsIDB4YjA4NCwgMHhhODg2LCAweDkwMWUsIDB4ZDZjNCwgMHgwMTkwLCAweDczNWMsIDB4YWI4NiwKLQkweDgzZmYsIDB4MDE3MCwgMHg5MzhhLCAweDAwMDksIDB4MDIxMCwgMHgyMDE5LCAweDAwMDgsIDB4MDAzNiwKLQkweDIzMDgsIDB4MjAxOSwgMHgwMDE4LCAweDIwMTEsIDB4MDAyNSwgMHgwODBjLCAweGNhN2IsIDB4MDAzZSwKLQkweGQ2Y2MsIDB4MDFlOCwgMHg3MTU0LCAweGE5OGEsIDB4ODFmZiwgMHgwMWM4LCAweDkxOTIsIDB4MDAyMSwKLQkweDEyNjAsIDB4ODMwNCwgMHg5MDk4LCAweDAwMTgsIDB4MjAxMSwgMHgwMDI5LCAweDA4MGMsIDB4Y2E3YiwKLQkweDIwMTEsIDB4MDIwNSwgMHgyMDEzLCAweDAwMDAsIDB4MDA1MCwgMHhiMDY4LCAweGQwZmMsIDB4MDEyMCwKLQkweDIwMDksIDB4MDAyMCwgMHhhOThhLCAweDBjNjgsIDB4Mjk1MCwgMHgwODBjLCAweGNhMWEsIDB4MDgwYywKLQkweDFhOWYsIDB4MDA5ZSwgMHgwMGVlLCAweDAwYWUsIDB4MDA3ZSwgMHgwMDA1LCAweDIwMDEsIDB4MTk4OCwKLQkweDIwMDQsIDB4NjA0YSwgMHgwMDk2LCAweDYxMTQsIDB4MjE0OCwgMHhhODNjLCAweGE5NDAsIDB4OTEwNSwKLQkweDExMTgsIDB4YTg3YywgMHhjMGRjLCAweGE4N2UsIDB4NjAwMywgMHgwMDAyLCAweDA4MGMsIDB4ZDY2YiwKLQkweDA5MDQsIDB4Yzc0OSwgMHg2MDRiLCAweDAwMDAsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwKLQkweDAwYmUsIDB4ZDBiYywgMHgxNTAwLCAweGQxY2MsIDB4MDkwNCwgMHhjNzBkLCAweGE5NzgsIDB4YTg2OCwKLQkweGQwZmMsIDB4MDkwNCwgMHhjNmNlLCAweDAwMTYsIDB4YTg3YywgMHgwMDA2LCAweGE4ODAsIDB4MDAwNiwKLQkweDAwYTYsIDB4MjE1MCwgMHhiMTc0LCAweDkxODQsIDB4MDBmZiwgMHg5MGI2LCAweDAwMDIsIDB4MDkwNCwKLQkweGM2OWIsIDB4OTA4NiwgMHgwMDI4LCAweDE5MDQsIDB4YzY4NywgMHhhODdiLCAweDAwMWMsIDB4YjA3YiwKLQkweDAwMWMsIDB4MDgwNCwgMHhjNmEzLCAweDYwMjQsIDB4ZDBmNCwgMHgxMWQwLCAweGE4MzgsIDB4YWEzNCwKLQkweDkyMDUsIDB4MDljOCwgMHhhODM4LCAweGFhOTAsIDB4OTIwNiwgMHgxMTIwLCAweGE4OGMsIDB4YWEzNCwKLQkweDkyMDYsIDB4MDk4OCwgMHg2MDI0LCAweGQwZDQsIDB4MTE0OCwgMHhhOWFjLCAweGE4MzQsIDB4OTEwMiwKLQkweDYwM2EsIDB4YTliMCwgMHhhODM4LCAweDkxMDMsIDB4NjAzZSwgMHg2MDI0LCAweGMwZjUsIDB4NjAyNiwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4M2MsIDB4ODAwMCwgMHhiODNlLCAweDAwYmUsIDB4NjAxYywKLQkweGMwZmMsIDB4NjAxZSwgMHg5MDA2LCAweGE4NzYsIDB4YTg5MiwgMHhhODhlLCAweGE4N2MsIDB4YzBlNCwKLQkweGE4N2UsIDB4ZDBjYywgMHgwMTQwLCAweGMwY2MsIDB4YTg3ZSwgMHgwMDk2LCAweGE4NzgsIDB4MjA0OCwKLQkweDA4MGMsIDB4MTAwYiwgMHgwMDllLCAweDA4MGMsIDB4ZDI2NywgMHgwODA0LCAweGM3NDksIDB4ZDFkYywKLQkweDAxNTgsIDB4YTg3YiwgMHgwMDE1LCAweGIwN2IsIDB4MDAxNSwgMHgwODBjLCAweGQ1MDgsIDB4MDExOCwKLQkweGIxNzQsIDB4YzFkYywgMHhiMTc2LCAweDAwNzgsIDB4ZDFkNCwgMHgwMTI4LCAweGE4N2IsIDB4MDAwNywKLQkweGIwN2IsIDB4MDAwNywgMHgwMDQwLCAweGE4N2MsIDB4ZDBhYywgMHgwMTI4LCAweGE4MzQsIDB4YTkzOCwKLQkweDkxMTUsIDB4MTkwYywgMHhjNTE5LCAweGE4N2MsIDB4YjA3ZSwgMHhhODkwLCAweGIwOTIsIDB4YTg4YywKLQkweGIwOGUsIDB4YTg2MCwgMHgyMGU4LCAweGE4NWMsIDB4OTA4MCwgMHgwMDE5LCAweDIwYTAsIDB4MjBhOSwKLQkweDAwMjAsIDB4OGEwNiwgMHg4MDA2LCAweDgwMDcsIDB4OTA5NCwgMHgwMDNmLCAweDIyZTAsIDB4OTA4NCwKLQkweGZmYzAsIDB4OTA4MCwgMHgwMDE5LCAweDIwOTgsIDB4NDAwMywgMHgwMGFlLCAweDAwMGUsIDB4YTg4MiwKLQkweDAwMGUsIDB4YzBjYywgMHhhODdlLCAweDA4MGMsIDB4ZDVlOCwgMHgwMDFlLCAweGE4NzQsIDB4MDAwNiwKLQkweDIxNDgsIDB4MDgwYywgMHgxMDBiLCAweDAwMWUsIDB4MDgwNCwgMHhjNzNhLCAweDAwMTYsIDB4MDBhNiwKLQkweDIxNTAsIDB4YjE3NCwgMHg5MTg0LCAweDAwZmYsIDB4OTBiNiwgMHgwMDAyLCAweDAxZTAsIDB4OTA4NiwKLQkweDAwMjgsIDB4MTEyOCwgMHhhODdiLCAweDAwMWMsIDB4YjA3YiwgMHgwMDFjLCAweDAwZTAsIDB4ZDFkYywKLQkweDAxNTgsIDB4YTg3YiwgMHgwMDE1LCAweGIwN2IsIDB4MDAxNSwgMHgwODBjLCAweGQ1MDgsIDB4MDExOCwKLQkweGIxNzQsIDB4YzFkYywgMHhiMTc2LCAweDAwNzgsIDB4ZDFkNCwgMHgwMTI4LCAweGE4N2IsIDB4MDAwNywKLQkweGIwN2IsIDB4MDAwNywgMHgwMDQwLCAweGE4N2MsIDB4ZDBhYywgMHgwMTI4LCAweGE4MzQsIDB4YTkzOCwKLQkweDkxMTUsIDB4MTkwYywgMHhjNTE5LCAweGE4OTAsIDB4YjA5MiwgMHhhODhjLCAweGIwOGUsIDB4YTg3YywKLQkweGIwN2UsIDB4MDBhZSwgMHgwODBjLCAweDEwMGIsIDB4MDA5ZSwgMHgwODBjLCAweGQ1ZTgsIDB4YTk3NCwKLQkweDAwMTYsIDB4MDgwYywgMHhjYTZiLCAweDAwMWUsIDB4MDQ2OCwgMHhhODY3LCAweDAxMDMsIDB4YTk3NCwKLQkweDkxODQsIDB4MDBmZiwgMHg5MGI2LCAweDAwMDIsIDB4MDFiMCwgMHg5MDg2LCAweDAwMjgsIDB4MTExOCwKLQkweGE4N2IsIDB4MDAxYywgMHgwMGQwLCAweGQxZGMsIDB4MDE0OCwgMHhhODdiLCAweDAwMTUsIDB4MDgwYywKLQkweGQ1MDgsIDB4MDExOCwgMHhhOTc0LCAweGMxZGMsIDB4YTk3NiwgMHgwMDc4LCAweGQxZDQsIDB4MDExOCwKLQkweGE4N2IsIDB4MDAwNywgMHgwMDUwLCAweGE4N2IsIDB4MDAwMCwgMHhhODdjLCAweGQwYWMsIDB4MDEyOCwKLQkweGE4MzQsIDB4YTkzOCwgMHg5MTE1LCAweDE5MGMsIDB4YzUxOSwgMHhhOTc0LCAweDAwMTYsIDB4MDgwYywKLQkweDZlMjcsIDB4MDAxZSwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiYTNjLCAweGI4ZDAsIDB4MDAxNiwKLQkweDkwMDUsIDB4MTkwYywgMHg2OGRmLCAweDAwMWUsIDB4MDBiZSwgMHhkMWU0LCAweDExMjAsIDB4MDgwYywKLQkweGIxNmMsIDB4MDA5ZSwgMHgwMDA1LCAweDA4MGMsIDB4ZDIyYSwgMHgwY2Q4LCAweDYxMTQsIDB4MDA5NiwKLQkweDIxNDgsIDB4YTk3YywgMHgwODBjLCAweGQ2NmIsIDB4MTkwYywgMHgxYWJmLCAweDAwOWUsIDB4MDAwNSwKLQkweDAwOTYsIDB4NjExNCwgMHgyMTQ4LCAweGE4M2MsIDB4YTk0MCwgMHg5MTA1LCAweDAxZTgsIDB4YTg3NywKLQkweDAwMDAsIDB4YTg3YiwgMHgwMDAwLCAweGE4NjcsIDB4MDEwMywgMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwKLQkweGE4MzQsIDB4YTkzOCwgMHg5MTE1LCAweDExYTAsIDB4MDgwYywgMHg2ZTI3LCAweGJhM2MsIDB4ODIxMSwKLQkweDAyMDgsIDB4YmEzZSwgMHhiOGQwLCAweDkwMDUsIDB4MDExMCwgMHgwODBjLCAweDY4ZGYsIDB4MDgwYywKLQkweGIxNmMsIDB4MDBiZSwgMHgwMDllLCAweDAwMDUsIDB4YTg3YywgMHhjMGRjLCAweGE4N2UsIDB4MDhmOCwKLQkweGI4MDAsIDB4ZDBiYywgMHgxMTIwLCAweGE4MzQsIDB4MDgwYywgMHhjNTE5LCAweDBjMjgsIDB4YTg4MCwKLQkweGQwYmMsIDB4MWRjOCwgMHgwODBjLCAweGQyNjcsIDB4MGM2MCwgMHgwODBjLCAweDk5ZWQsIDB4MDAxMCwKLQkweDA4MGMsIDB4OWE0OCwgMHg2MDFjLCAweGQwODQsIDB4MDExMCwgMHgwODBjLCAweDFhZDMsIDB4MDgwYywKLQkweGNmMWIsIDB4MDFmMCwgMHgwMDk2LCAweDYxMTQsIDB4MjE0OCwgMHgwODBjLCAweGQxMzIsIDB4MTExOCwKLQkweDA4MGMsIDB4YmI1YywgMHgwMGEwLCAweGE4NjcsIDB4MDEwMywgMHgyMDA5LCAweDE4MGMsIDB4MjEwYywKLQkweGQxOGMsIDB4MTE5OCwgMHhkMTg0LCAweDExNzAsIDB4NjEwOCwgMHhhOTdhLCAweDkxOGUsIDB4MDAyOSwKLQkweDExMTAsIDB4MDgwYywgMHhlZGRmLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwKLQkweDA4MDQsIDB4YjFhNywgMHhhODdiLCAweDAwMDQsIDB4MGNiMCwgMHhhODdiLCAweDAwMDQsIDB4MGM5OCwKLQkweDkxODIsIDB4MDA1NywgMHgxMjIwLCAweDkxODIsIDB4MDA0MCwgMHgwMjA4LCAweDAwMGEsIDB4MDAwNSwKLQkweGM3ZGYsIDB4YzdkZiwgMHhjN2RmLCAweGM3ZGYsIDB4YzdkZiwgMHhjN2UxLCAweGM3ZGYsIDB4YzdkZiwKLQkweGM3ZGYsIDB4YzdkZiwgMHhjN2RmLCAweGM3ZGYsIDB4YzdkZiwgMHhjN2RmLCAweGM3ZGYsIDB4YzdkZiwKLQkweGM3ZGYsIDB4YzdkZiwgMHhjN2RmLCAweGM3ZGYsIDB4YzgwNSwgMHhjN2RmLCAweGM3ZGYsIDB4MDgwYywKLQkweDBkODUsIDB4MDgwYywgMHg1ODQ4LCAweDAxZjgsIDB4NjAxNCwgMHg3MTQ0LCAweDkxOGMsIDB4MGZmZiwKLQkweDkwMTYsIDB4ZDFjNCwgMHgwMTE4LCAweDcyNjQsIDB4OTI5NCwgMHgwMGZmLCAweDAwOTYsIDB4OTA0ZCwKLQkweDAxODgsIDB4YTg3YiwgMHgwMDAwLCAweGE4NjQsIDB4OTA4NiwgMHgwMTM5LCAweDAxMjgsIDB4YTg2NywKLQkweDAxMDMsIDB4YTk3NiwgMHhhYTk2LCAweDAwMzAsIDB4YTg5NywgMHg0MDAwLCAweGE5OWEsIDB4YWE5ZSwKLQkweDA4MGMsIDB4NzAxMiwgMHgwMDllLCAweDA4MDQsIDB4YjE2YywgMHgwODBjLCAweDU4NDgsIDB4MGRkOCwKLQkweDYwMTQsIDB4OTAwZSwgMHg5MDE2LCAweDBjMTAsIDB4OTE4MiwgMHgwMDg1LCAweDAwMDIsIDB4YzgxZSwKLQkweGM4MWMsIDB4YzgxYywgMHhjODJhLCAweGM4MWMsIDB4YzgxYywgMHhjODFjLCAweGM4MWMsIDB4YzgxYywKLQkweGM4MWMsIDB4YzgxYywgMHhjODFjLCAweGM4MWMsIDB4MDgwYywgMHgwZDg1LCAweDYwMDMsIDB4MDAwMSwKLQkweDYxMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywKLQkweDAxMmUsIDB4MDAwNSwgMHgwMDI2LCAweDAwNTYsIDB4MDBkNiwgMHgwMGU2LCAweDIwNzEsIDB4MDI2MCwKLQkweDcyMjQsIDB4NjIxNiwgMHg3MjIwLCAweDA4MGMsIDB4Y2YwOSwgMHgwMWY4LCAweDIyNjgsIDB4NjgwMCwKLQkweDkwODYsIDB4MDAwMCwgMHgwMWQwLCAweDYwMTAsIDB4NmQxMCwgMHg5NTJlLCAweDExYjAsIDB4MDBjNiwKLQkweDJkNjAsIDB4MDBkNiwgMHgwODBjLCAweGNhZGMsIDB4MDBkZSwgMHgwMGNlLCAweDAxNTgsIDB4NzAyYywKLQkweGQwODQsIDB4MTExOCwgMHgwODBjLCAweGNhYTYsIDB4MDAxMCwgMHg2ODAzLCAweDAwMDIsIDB4NjAwNywKLQkweDAwODYsIDB4MDAyOCwgMHgwODBjLCAweGNhYzgsIDB4MGQ5MCwgMHg2MDA3LCAweDAwODcsIDB4NjAwMywKLQkweDAwMDEsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywgMHg3MjIwLCAweDA4MGMsIDB4Y2YwOSwKLQkweDAxNzgsIDB4NjgxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwYmMsIDB4MDE0MCwKLQkweDY4MjQsIDB4ZDBlYywgMHgwMTI4LCAweDAwYzYsIDB4MmQ2MCwgMHgwODBjLCAweGQyNjcsIDB4MDBjZSwKLQkweDAwZWUsIDB4MDBkZSwgMHgwMDVlLCAweDAwMmUsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTMsIDB4MTE2MCwKLQkweDYwMDQsIDB4OTA4YSwgMHgwMDg1LCAweDBhMGMsIDB4MGQ4NSwgMHg5MDhhLCAweDAwOTIsIDB4MWEwYywKLQkweDBkODUsIDB4OTA4MiwgMHgwMDg1LCAweDAwZTIsIDB4OTE4NiwgMHgwMDI3LCAweDAxMjAsIDB4OTE4NiwKLQkweDAwMTQsIDB4MTkwYywgMHgwZDg1LCAweDA4MGMsIDB4OTllZCwgMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTQwLCAweGE4NjcsIDB4MDEwMywgMHhhODc3LCAweDAwMDAsIDB4YTg3YiwKLQkweDAwMjksIDB4MDgwYywgMHg3MDEyLCAweDAwOWUsIDB4MDgwYywgMHhiMWE3LCAweDA4MDQsIDB4OWFiMywKLQkweGM4YWQsIDB4YzhhZiwgMHhjOGFmLCAweGM4YWQsIDB4YzhhZCwgMHhjOGFkLCAweGM4YWQsIDB4YzhhZCwKLQkweGM4YWQsIDB4YzhhZCwgMHhjOGFkLCAweGM4YWQsIDB4YzhhZCwgMHgwODBjLCAweDBkODUsIDB4MDgwYywKLQkweGIxYTcsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTMsIDB4MTEzMCwgMHg2MDA0LCAweDkwODIsIDB4MDA4NSwKLQkweDIwMDgsIDB4MDgwNCwgMHhjOGZlLCAweDkxODYsIDB4MDAyNywgMHgxNTU4LCAweDA4MGMsIDB4OTllZCwKLQkweDA4MGMsIDB4MzMxNSwgMHgwODBjLCAweGQ2NWEsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywKLQkweGNmMWIsIDB4MDE1MCwgMHhhODY3LCAweDAxMDMsIDB4YTg3NywgMHgwMDAwLCAweGE4N2IsIDB4MDAyOSwKLQkweDA4MGMsIDB4NzAxMiwgMHgwODBjLCAweGQxMGMsIDB4MDA5ZSwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwKLQkweDkxODYsIDB4MDA4OSwgMHgwMTE4LCAweDkxODYsIDB4MDA4YSwgMHgxMTQwLCAweDA4MGMsIDB4YWY2MSwKLQkweDAxMjgsIDB4OTA4NiwgMHgwMDBjLCAweDA5MDQsIDB4YzkzNiwgMHgwMDAwLCAweDA4MGMsIDB4YjIyNywKLQkweDBjNzAsIDB4OTE4NiwgMHgwMDE0LCAweDFkNjAsIDB4MDgwYywgMHg5OWVkLCAweDAwOTYsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDBkMDAsIDB4YTg2NywgMHgwMTAzLCAweGE4NzcsIDB4MDAwMCwKLQkweGE4N2IsIDB4MDAwNiwgMHhhODgwLCAweGMwZWMsIDB4YTg4MiwgMHgwODkwLCAweDAwMDIsIDB4YzkwZSwKLQkweGM5MGMsIDB4YzkwYywgMHhjOTBjLCAweGM5MGMsIDB4YzkwYywgMHhjOTIyLCAweGM5MGMsIDB4YzkwYywKLQkweGM5MGMsIDB4YzkwYywgMHhjOTBjLCAweGM5MGMsIDB4MDgwYywgMHgwZDg1LCAweDYwMzQsIDB4OTA4YywKLQkweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzksIDB4MDExOCwgMHg5MTg2LCAweDAwMzUsIDB4MTExOCwKLQkweDIwMDEsIDB4MTk4NiwgMHgwMDEwLCAweDIwMDEsIDB4MTk4NywgMHgyMDA0LCAweDYwMWEsIDB4NjAwMywKLQkweDAwMGMsIDB4MDAwNSwgMHg2MDM0LCAweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsIDB4MDAzOSwKLQkweDAxMTgsIDB4OTE4NiwgMHgwMDM1LCAweDExMTgsIDB4MjAwMSwgMHgxOTg2LCAweDAwMTAsIDB4MjAwMSwKLQkweDE5ODcsIDB4MjAwNCwgMHg2MDFhLCAweDYwMDMsIDB4MDAwZSwgMHgwMDA1LCAweDkxODIsIDB4MDA5MiwKLQkweDEyMjAsIDB4OTE4MiwgMHgwMDg1LCAweDAyMDgsIDB4MDAxMiwgMHgwODA0LCAweGIyMjcsIDB4Yzk0YywKLQkweGM5NGMsIDB4Yzk0YywgMHhjOTRjLCAweGM5NGUsIDB4Yzk5YiwgMHhjOTRjLCAweGM5NGMsIDB4Yzk0YywKLQkweGM5NGMsIDB4Yzk0YywgMHhjOTRjLCAweGM5NGMsIDB4MDgwYywgMHgwZDg1LCAweDAwOTYsIDB4NjAxMCwKLQkweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsIDB4ZDBiYywgMHgwMTY4LCAweDYwMzQsIDB4OTA4YywKLQkweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzksIDB4MDExOCwgMHg5MTg2LCAweDAwMzUsIDB4MTExOCwKLQkweDAwOWUsIDB4MDgwNCwgMHhjOWFmLCAweDA4MGMsIDB4Y2YxYiwgMHgxMTE4LCAweDA4MGMsIDB4ZDEwYywKLQkweDAwNjgsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4ZDY3MSwgMHgxMTEwLCAweDA4MGMsIDB4ZDEwYywKLQkweGE4NjcsIDB4MDEwMywgMHgwODBjLCAweGQ2MjUsIDB4MDgwYywgMHg3MDEyLCAweDAwZDYsIDB4MmM2OCwKLQkweDA4MGMsIDB4YjExNiwgMHgwMWQwLCAweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMWUsIDB4NjAwYiwKLQkweGZmZmYsIDB4MjAwOSwgMHgwMjZlLCAweDIxMGMsIDB4NjEzYSwgMHgyMDA5LCAweDAyNmYsIDB4MjEwYywKLQkweDYxM2UsIDB4NjkxMCwgMHg2MTEyLCAweDA4MGMsIDB4ZDNiNiwgMHg2OTVjLCAweDYxNWUsIDB4NjAyMywKLQkweDAwMDEsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywgMHgyZDYwLCAweDAwZGUsIDB4MDgwYywKLQkweGIxNmMsIDB4MDA5ZSwgMHgwMDA1LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwKLQkweGQwYmMsIDB4MDVhMCwgMHg2MDM0LCAweDkwOGMsIDB4ZmYwMCwgMHg4MTBmLCAweDkxODYsIDB4MDAzNSwKLQkweDAxMzAsIDB4OTE4NiwgMHgwMDFlLCAweDAxMTgsIDB4OTE4NiwgMHgwMDM5LCAweDE1MzgsIDB4MDBkNiwKLQkweDJjNjgsIDB4MDgwYywgMHhkNWJiLCAweDExZjAsIDB4MDgwYywgMHhiMTE2LCAweDAxZDgsIDB4NjEwNiwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDIzLCAweDAwMDEsIDB4NjkxMCwgMHg2MTEyLCAweDY5MmMsIDB4NjEyZSwKLQkweDY5MzAsIDB4NjEzMiwgMHg2OTM0LCAweDkxOGMsIDB4MDBmZiwgMHg2MTM2LCAweDY5MzgsIDB4NjEzYSwKLQkweDY5M2MsIDB4NjEzZSwgMHg2OTVjLCAweDYxNWUsIDB4MDgwYywgMHhkM2I2LCAweDIwMDksIDB4ODAyMCwKLQkweDA4MGMsIDB4OTYxNywgMHgyZDYwLCAweDAwZGUsIDB4MDgwNCwgMHhiMTZjLCAweDAwOTYsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxYzgsIDB4YTg2NywgMHgwMTAzLCAweGE4ODAsIDB4ZDBiNCwKLQkweDAxMjgsIDB4YzBlYywgMHhhODgyLCAweGE4N2IsIDB4MDAwNiwgMHgwMDQ4LCAweGQwYmMsIDB4MDExOCwKLQkweGE4N2IsIDB4MDAwMiwgMHgwMDIwLCAweGE4N2IsIDB4MDAwNSwgMHgwODBjLCAweGQyMjYsIDB4YTg3NywKLQkweDAwMDAsIDB4MDgwYywgMHg3MDEyLCAweDA4MGMsIDB4ZDEwYywgMHgwMDllLCAweDA4MDQsIDB4YjE2YywKLQkweDAwMTYsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxNDAsIDB4YTg2NywKLQkweDAxMDMsIDB4YTg3YiwgMHgwMDI4LCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwKLQkweDAwMWUsIDB4OTE4NiwgMHgwMDEzLCAweDAxNTgsIDB4OTE4NiwgMHgwMDE0LCAweDAxMzAsIDB4OTE4NiwKLQkweDAwMjcsIDB4MDExOCwgMHgwODBjLCAweGIyMjcsIDB4MDAyMCwgMHgwODBjLCAweDk5ZWQsIDB4MDgwYywKLQkweGIxYTcsIDB4MDAwNSwgMHgwMDU2LCAweDAwNjYsIDB4MDA5NiwgMHgwMGE2LCAweDIwMjksIDB4MDAwMSwKLQkweDkxODIsIDB4MDEwMSwgMHgxMjA4LCAweDAwMTAsIDB4MjAwOSwgMHgwMTAwLCAweDIxMzAsIDB4ODMwNCwKLQkweDkwOTgsIDB4MDAxOCwgMHgyMDA5LCAweDAwMjAsIDB4MjAxMSwgMHgwMDI5LCAweDA4MGMsIDB4Y2E3YiwKLQkweDk2YjIsIDB4MDAyMCwgMHhiMDA0LCAweDkwNGQsIDB4MDExMCwgMHgwODBjLCAweDEwMGIsIDB4MDgwYywKLQkweDEwNTksIDB4MDUyMCwgMHg4NTI4LCAweGE4NjcsIDB4MDExMCwgMHhhODZiLCAweDAwMDAsIDB4MjkyMCwKLQkweGI0MDYsIDB4OTY4YSwgMHgwMDNkLCAweDEyMjgsIDB4MjYwOCwgMHgyMDExLCAweDAwMWIsIDB4MDQ5OSwKLQkweDAwYTgsIDB4OTZiMiwgMHgwMDNjLCAweDIwMDksIDB4MDAzYywgMHgyOTUwLCAweDIwMTEsIDB4MDAxYiwKLQkweDA0NTEsIDB4MGMyOCwgMHgyMDAxLCAweDAyMDUsIDB4MjAwMywgMHgwMDAwLCAweDAwYWUsIDB4ODUyZiwKLQkweDk1YWQsIDB4MDAwMywgMHhiNTY2LCAweDk1YWMsIDB4MDAwMCwgMHgwMDQ4LCAweDIwMDEsIDB4MDIwNSwKLQkweDIwMDMsIDB4MDAwMCwgMHgwMGFlLCAweDg1MmYsIDB4OTVhZCwgMHgwMDAzLCAweGI1NjYsIDB4MDA5ZSwKLQkweDAwNmUsIDB4MDA1ZSwgMHgwMDA1LCAweDAwYTYsIDB4ODlmZiwgMHgwMTU4LCAweGE4MDQsIDB4OTA1NSwKLQkweDAxMzAsIDB4YTgwNywgMHgwMDAwLCAweDA4MGMsIDB4NzAxMiwgMHgyYTQ4LCAweDBjYjgsIDB4MDgwYywKLQkweDcwMTIsIDB4MDBhZSwgMHgwMDA1LCAweDAwZjYsIDB4MjA3OSwgMHgwMjAwLCAweDc4MTQsIDB4OTA4NSwKLQkweDAwODAsIDB4NzgxNiwgMHhkMTg0LCAweDAxMDgsIDB4ODEwOCwgMHg4MTBjLCAweDIwYTksIDB4MDAwMSwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkyMDAsIDB4MjBhMCwgMHgyMGUxLCAweDAwMDAsIDB4MjMwMCwKLQkweDllMDAsIDB4MjA5OCwgMHg0MDAzLCAweDgzMTgsIDB4OTM4NiwgMHgwMDIwLCAweDExNDgsIDB4MjAxOCwKLQkweDIzMDAsIDB4OWUwMCwgMHgyMDk4LCAweDc4MTQsIDB4ODAwMCwgMHg5MDg1LCAweDAwODAsIDB4NzgxNiwKLQkweDgxMDksIDB4MWQ4MCwgMHg3ODE3LCAweDAwMDAsIDB4MDBmZSwgMHgwMDA1LCAweDY5MjAsIDB4OTE4NiwKLQkweDAwMDMsIDB4MDExOCwgMHg5MTg2LCAweDAwMDIsIDB4MTFkMCwgMHgwMGM2LCAweDAwZDYsIDB4MDBlNiwKLQkweDJkNjAsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxNTAsIDB4MjAwMSwKLQkweDAwMDYsIDB4YTk4MCwgMHhjMWQ1LCAweDA4MGMsIDB4NzI1ZSwgMHgwODBjLCAweDcwMDYsIDB4MDgwYywKLQkweGQxMGMsIDB4MDA5ZSwgMHgwODBjLCAweGIxYTcsIDB4MDBlZSwgMHgwMGRlLCAweDAwY2UsIDB4MDAwNSwKLQkweDAwYzYsIDB4NzAyYywgMHhkMDg0LCAweDExNzAsIDB4NjAwOCwgMHgyMDYwLCAweDYwMjAsIDB4OTA4NiwKLQkweDAwMDIsIDB4MTE0MCwgMHg2MTA0LCAweDkxODYsIDB4MDA4NSwgMHgwMTE4LCAweDkxODYsIDB4MDA4YiwKLQkweDExMDgsIDB4OTAwNiwgMHgwMGNlLCAweDAwMDUsIDB4MDA2NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDIwMzEsIDB4MDAwMSwgMHg2MDIwLCAweDkwODQsIDB4MDAwZiwgMHgwMDgzLCAweDAxMmUsIDB4MDA2ZSwKLQkweDAwMDUsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDA2NiwgMHgyMDMxLCAweDAwMDAsIDB4NjAyMCwKLQkweDkwODQsIDB4MDAwZiwgMHgwMDFiLCAweDAwNmUsIDB4MDEyZSwgMHgwMDA1LCAweGNiMmEsIDB4Y2IyYSwKLQkweGNiMjUsIDB4Y2I0ZSwgMHhjYjA2LCAweGNiMjUsIDB4Y2IwOCwgMHhjYjI1LCAweGNiMjUsIDB4OTQ1OCwKLQkweGNiMjUsIDB4Y2IyNSwgMHhjYjI1LCAweGNiMDYsIDB4Y2IwNiwgMHhjYjA2LCAweDA4MGMsIDB4MGQ4NSwKLQkweDYwMTAsIDB4OTA4MCwgMHgwMDAwLCAweDIwMDQsIDB4ZDBiYywgMHgxOTBjLCAweGNiNGUsIDB4MDAzNiwKLQkweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4ODAsIDB4MDA5ZSwgMHhkMGNjLCAweDAxMTgsIDB4MjAxOSwKLQkweDAwMGMsIDB4MDAzOCwgMHhkMDk0LCAweDAxMTgsIDB4MjAxOSwgMHgwMDBkLCAweDAwMTAsIDB4MjAxOSwKLQkweDAwMTAsIDB4MDgwYywgMHhlNTc4LCAweDAwM2UsIDB4MDAwNSwgMHg5MDA2LCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHgwMDk2LCAweDg2ZmYsIDB4MTFlOCwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywKLQkweGNmMWIsIDB4MDFkMCwgMHg2MDQzLCAweGZmZmYsIDB4YTg2NCwgMHg5MDg2LCAweDAxMzksIDB4MTEyOCwKLQkweGE4N2IsIDB4MDAwNSwgMHhhODgzLCAweDAwMDAsIDB4MDAyOCwgMHg5MDBlLCAweDIwMDEsIDB4MDAwNSwKLQkweDA4MGMsIDB4NzI1ZSwgMHgwODBjLCAweGQyMjYsIDB4MDgwYywgMHg3MDA2LCAweDA4MGMsIDB4YjFhNywKLQkweDkwODUsIDB4MDAwMSwgMHgwMDllLCAweDAwMDUsIDB4OTAwNiwgMHgwY2UwLCAweDA4MGMsIDB4YWNmYywKLQkweDA4MGMsIDB4ZDY3ZiwgMHg5MDhhLCAweDAwMTAsIDB4MWEwYywgMHgwZDg1LCAweDAwMmIsIDB4MDEwNiwKLQkweDA4MGMsIDB4YWQxOCwgMHgwMTBlLCAweDAwMDUsIDB4Y2I2YywgMHhjYjljLCAweGNiNmUsIDB4Y2JjMywKLQkweGNiOTcsIDB4Y2I2YywgMHhjYjI1LCAweGNiMmEsIDB4Y2IyYSwgMHhjYjI1LCAweGNiMjUsIDB4Y2IyNSwKLQkweGNiMjUsIDB4Y2IyNSwgMHhjYjI1LCAweGNiMjUsIDB4MDgwYywgMHgwZDg1LCAweDg2ZmYsIDB4MTUyMCwKLQkweDYwMjAsIDB4OTA4NiwgMHgwMDA2LCAweDA1MDAsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4MDgwYywKLQkweGNmMWIsIDB4MDE2OCwgMHhhODdjLCAweGQwY2MsIDB4MDE0MCwgMHgwMDk2LCAweGMwY2MsIDB4YTg3ZSwKLQkweGE4NzgsIDB4MjA0OCwgMHgwODBjLCAweDEwMGIsIDB4MDA5ZSwgMHgwODBjLCAweGQyMjYsIDB4MDA5ZSwKLQkweDA4MGMsIDB4ZDVmZiwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsIDB4MDAwMiwKLQkweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk1ZjksIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDA2NiwKLQkweDA4MGMsIDB4MWFkMywgMHgwMDZlLCAweDA4OTAsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZTgsIDB4NzAzMCwKLQkweDljMDYsIDB4MTEyMCwgMHgwODBjLCAweGE1MTYsIDB4MDBlZSwgMHgwODQwLCAweDYwMjAsIDB4OTA4NCwKLQkweDAwMGYsIDB4OTA4NiwgMHgwMDA2LCAweDExNTAsIDB4MDA4NiwgMHgwMDk2LCAweDIwNDksIDB4MDAwMSwKLQkweDJjNDAsIDB4MDgwYywgMHhhNjY3LCAweDAwOWUsIDB4MDA4ZSwgMHgwMDQwLCAweDAwNjYsIDB4MDgwYywKLQkweGE0MTIsIDB4MTkwYywgMHgwZDg1LCAweDA4MGMsIDB4YTQyMCwgMHgwMDZlLCAweDAwZWUsIDB4MTkwNCwKLQkweGNiNmUsIDB4MDgwNCwgMHhjYjI1LCAweDAwMzYsIDB4MDBlNiwgMHgyMDcxLCAweDE5ZTgsIDB4NzA0YywKLQkweDljMDYsIDB4MTEzOCwgMHg5MDFlLCAweDA4MGMsIDB4YTU5NiwgMHgwMGVlLCAweDAwM2UsIDB4MDgwNCwKLQkweGNiNmUsIDB4MDgwYywgMHhhN2ExLCAweDAwZWUsIDB4MDAzZSwgMHgxOTA0LCAweGNiNmUsIDB4MDgwNCwKLQkweGNiMjUsIDB4MDBjNiwgMHgwMDY2LCAweDYwMjAsIDB4OTA4NCwgMHgwMDBmLCAweDAwMWIsIDB4MDA2ZSwKLQkweDAwY2UsIDB4MDAwNSwgMHhjYmY5LCAweGNjZTIsIDB4Y2U1MCwgMHhjYzAxLCAweGIxYTcsIDB4Y2JmOSwKLQkweGU1NmUsIDB4ZDY2NywgMHhjY2UyLCAweDk0MWYsIDB4Y2VkYywgMHhjYmYyLCAweGNiZjIsIDB4Y2JmMiwKLQkweGNiZjIsIDB4Y2JmMiwgMHgwODBjLCAweDBkODUsIDB4MDgwYywgMHhkMTMyLCAweDExMTAsIDB4MDgwYywKLQkweGJiNWMsIDB4MDAwNSwgMHgwODBjLCAweDk5ZWQsIDB4MDgwNCwgMHhiMTZjLCAweDYwMWIsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDgwYywgMHhjZjFiLCAweDAxMzAsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4MmMwMCwKLQkweGE4OTYsIDB4MDA5ZSwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywgMHhkNjdmLCAweDkwOGEsIDB4MDAxMCwKLQkweDFhMGMsIDB4MGQ4NSwgMHgwMDEzLCAweDA4MDQsIDB4YWQxOCwgMHhjYzI1LCAweGNjMjcsIDB4Y2M1MSwKLQkweGNjNjUsIDB4Y2M5MiwgMHhjYzI1LCAweGNiZjksIDB4Y2JmOSwgMHhjYmY5LCAweGNjNmMsIDB4Y2M2YywKLQkweGNjMjUsIDB4Y2MyNSwgMHhjYzI1LCAweGNjMjUsIDB4Y2M3NiwgMHgwODBjLCAweDBkODUsIDB4MDBlNiwKLQkweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4ODAsIDB4YzBiNSwgMHhhODgyLCAweDAwOWUsIDB4MjA3MSwKLQkweDE5ZTgsIDB4NzAzMCwgMHg5YzA2LCAweDAxZDAsIDB4MDA2NiwgMHgwODBjLCAweGE0MTIsIDB4MTkwYywKLQkweDBkODUsIDB4MDgwYywgMHhhNDIwLCAweDAwNmUsIDB4MDgwYywgMHhkNWZmLCAweDYwMDcsIDB4MDA4NSwKLQkweDYwMDMsIDB4MDAwYiwgMHg2MDIzLCAweDAwMDIsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsIDB4NjAxYSwKLQkweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk1ZjksIDB4MDBlZSwgMHgwMDA1LCAweDYwMWIsIDB4MDAwMSwKLQkweDBjZDgsIDB4MDA5NiwgMHg2MDE0LCAweDIwNDgsIDB4YTg4MCwgMHhjMGI1LCAweGE4ODIsIDB4MDA5ZSwKLQkweDA4MGMsIDB4ZDVmZiwgMHg2MDA3LCAweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsIDB4MDAwMiwKLQkweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk1ZjksIDB4MDAwNSwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywKLQkweGFlZTMsIDB4MDgwYywgMHhhZDE4LCAweDBjMjgsIDB4MDA5NiwgMHg2MDFiLCAweDAwMDEsIDB4NjAxNCwKLQkweDIwNDgsIDB4YTg4MCwgMHhjMGI1LCAweGE4ODIsIDB4MDA5ZSwgMHgwMDA1LCAweDA4MGMsIDB4NTg0OCwKLQkweDAxYjgsIDB4NjAxNCwgMHgwMDk2LCAweDkwNGQsIDB4MDE5MCwgMHhhODY0LCAweGE4NjcsIDB4MDEwMywKLQkweGE4N2IsIDB4MDAwNiwgMHg5MDg2LCAweDAxMzksIDB4MTE1MCwgMHhhODY3LCAweDAxMzksIDB4YTg3YiwKLQkweDAwMzAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHgwODBjLCAweDcwMTIsIDB4MDA5ZSwKLQkweDA4MDQsIDB4YjE2YywgMHg2MDE0LCAweDAwOTYsIDB4OTA0ZCwgMHgwOTA0LCAweGNjZGQsIDB4YTk3YywKLQkweGQxZTQsIDB4MTE2MCwgMHg2MTFjLCAweGQxZmMsIDB4MDkwNCwgMHhjY2RkLCAweDYxMTAsIDB4MDBiNiwKLQkweDIxNTgsIDB4YjkzYywgMHg4MTA5LCAweDAyMDgsIDB4YjkzZSwgMHgwMGJlLCAweDA4MGMsIDB4YWQxOCwKLQkweDIwMDEsIDB4MTgwZiwgMHgyMDA0LCAweGQwYzQsIDB4MDExMCwgMHgwMDllLCAweDAwMDUsIDB4YTg4NCwKLQkweDAwOWUsIDB4ODAwMywgMHg4MDBiLCAweDgxMGIsIDB4OTEwOCwgMHg2MTFhLCAweDIwMDEsIDB4MDAzMCwKLQkweDJjMDgsIDB4MDgwYywgMHgxNmI5LCAweDIwMDEsIDB4MDMwYywgMHgyMDA0LCAweDkwODYsIDB4MDA0MSwKLQkweDExOTgsIDB4NjAxNCwgMHgwMDk2LCAweDkwNGQsIDB4MDkwYywgMHgwZDg1LCAweGE4ODAsIDB4ZDBmNCwKLQkweDExMzAsIDB4YzBmNSwgMHhhODgyLCAweDAwOWUsIDB4NjAxYiwgMHgwMDAyLCAweDAwNjgsIDB4MDA5ZSwKLQkweDAwYzYsIDB4MDgwYywgMHgyMTg1LCAweDAwY2UsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDQsIDB4MTEyMCwKLQkweDIwMDksIDB4MDA0OCwgMHgwODBjLCAweGIyMGEsIDB4MDAwNSwgMHgwMDllLCAweDA4MGMsIDB4MWFkMywKLQkweDA4MDQsIDB4Y2M1MSwgMHg2MDAwLCAweDkwOGEsIDB4MDAxMCwgMHgxYTBjLCAweDBkODUsIDB4MDAwYiwKLQkweDAwMDUsIDB4Y2NmOSwgMHhjYmZlLCAweGNjZmIsIDB4Y2NmOSwgMHhjY2ZiLCAweGNjZmIsIDB4Y2JmYSwKLQkweGNjZjksIDB4Y2JmNCwgMHhjYmY0LCAweGNjZjksIDB4Y2NmOSwgMHhjY2Y5LCAweGNjZjksIDB4Y2NmOSwKLQkweGNjZjksIDB4MDgwYywgMHgwZDg1LCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4MDBiZSwgMHg5MDhhLCAweDAwMGMsIDB4MWEwYywgMHgwZDg1LCAweDAwYjYsIDB4MDAxMywKLQkweDAwYmUsIDB4MDAwNSwgMHhjZDE2LCAweGNkZTcsIDB4Y2QxOCwgMHhjZDU4LCAweGNkMTgsIDB4Y2Q1OCwKLQkweGNkMTgsIDB4Y2QyNiwgMHhjZDE2LCAweGNkNTgsIDB4Y2QxNiwgMHhjZDQ3LCAweDA4MGMsIDB4MGQ4NSwKLQkweDYwMDQsIDB4OTA4ZSwgMHgwMDE2LCAweDA1YzAsIDB4OTA4ZSwgMHgwMDA0LCAweDA1YTgsIDB4OTA4ZSwKLQkweDAwMDIsIDB4MDU5MCwgMHg5MDhlLCAweDAwNTIsIDB4MDkwNCwgMHhjZGUzLCAweDYwMDQsIDB4MDgwYywKLQkweGQxMzIsIDB4MDkwNCwgMHhjZTAwLCAweDkwOGUsIDB4MDAwNCwgMHgxMTEwLCAweDA4MGMsIDB4MzM0NCwKLQkweDkwOGUsIDB4MDAyMSwgMHgwOTA0LCAweGNlMDQsIDB4OTA4ZSwgMHgwMDIyLCAweDA5MDQsIDB4Y2U0YiwKLQkweDkwOGUsIDB4MDAzZCwgMHgwOTA0LCAweGNlMDQsIDB4OTA4ZSwgMHgwMDM5LCAweDA5MDQsIDB4Y2UwOCwKLQkweDkwOGUsIDB4MDAzNSwgMHgwOTA0LCAweGNlMDgsIDB4OTA4ZSwgMHgwMDFlLCAweDAxNzgsIDB4OTA4ZSwKLQkweDAwMDEsIDB4MTE0MCwgMHg2MDEwLCAweDIwNTgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsIDB4OTA4NiwKLQkweDAwMDYsIDB4MDExMCwgMHgwODBjLCAweDMzMTUsIDB4MDgwYywgMHhiYjVjLCAweDA4MDQsIDB4YjFhNywKLQkweDAwYzYsIDB4MDBkNiwgMHg2MTA0LCAweDkxODYsIDB4MDAxNiwgMHgwOTA0LCAweGNkZDQsIDB4OTE4NiwKLQkweDAwMDIsIDB4MTkwNCwgMHhjZGE5LCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwOGMsIDB4MTFjOCwKLQkweDA4MGMsIDB4Nzc5ZSwgMHgxMWIwLCAweDA4MGMsIDB4ZDY0NSwgMHgwMTM4LCAweDA4MGMsIDB4NzdjMSwKLQkweDExMjAsIDB4MDgwYywgMHg3NmE3LCAweDA4MDQsIDB4Y2UzNCwgMHgyMDAxLCAweDE5N2QsIDB4MjAwMywKLQkweDAwMDEsIDB4MjAwMSwgMHgxODAwLCAweDIwMDMsIDB4MDAwMSwgMHgwODBjLCAweDc2Y2QsIDB4MDgwNCwKLQkweGNlMzQsIDB4NjAxMCwgMHgyMDU4LCAweGI4YTAsIDB4OTA4NiwgMHgwMDgwLCAweDAxMzAsIDB4MjAwMSwKLQkweDE4MzcsIDB4MjAwNCwgMHhkMGFjLCAweDE5MDQsIDB4Y2UzNCwgMHhiOGEwLCAweDkwODIsIDB4MDA4MSwKLQkweDFhMDQsIDB4Y2UzNCwgMHhiODQwLCAweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDAxOTAsIDB4ODAwMSwKLQkweGI4NDIsIDB4NjAxNywgMHgwMDAwLCAweDYwMjMsIDB4MDAwNywgMHg2MDFiLCAweDAzOTgsIDB4NjA0YiwKLQkweDAwMDAsIDB4MDgwYywgMHhiMTE2LCAweDAxMjgsIDB4MmIwMCwgMHg2MDEyLCAweDYwMjMsIDB4MDAwMSwKLQkweDA0NTgsIDB4MDBkZSwgMHgwMGNlLCAweDYwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDExYTAsIDB4NjAxMCwKLQkweDIwNTgsIDB4YjhhMCwgMHg5MDg2LCAweDAwN2UsIDB4MTE3MCwgMHgyMDA5LCAweDE4MzcsIDB4MjEwNCwKLQkweGMwODUsIDB4MjAwYSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwgMHgwODBjLCAweDYxMzAsIDB4MDBlZSwKLQkweDA4MGMsIDB4YmI1YywgMHgwMDMwLCAweDA4MGMsIDB4YmI1YywgMHgwODBjLCAweDMzMTUsIDB4MDgwYywKLQkweGQ2NWEsIDB4MDBlNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDMzNDQsIDB4MDEyZSwKLQkweDAwZWUsIDB4MDgwYywgMHhiMWE3LCAweDAwMDUsIDB4MjAwMSwgMHgwMDAyLCAweDA4MGMsIDB4NjZmYSwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDIsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywKLQkweDAwZGUsIDB4MDBjZSwgMHgwYzgwLCAweDA4MGMsIDB4MzM0NCwgMHgwODA0LCAweGNkNTQsIDB4MDBjNiwKLQkweDAwZDYsIDB4NjEwNCwgMHg5MTg2LCAweDAwMTYsIDB4MGQzOCwgMHg2MDEwLCAweDIwNTgsIDB4Yjg0MCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDA1LCAweDA5MDQsIDB4Y2RhOSwgMHg4MDAxLCAweGI4NDIsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMGRlLCAweDAwY2UsIDB4MDg5OCwKLQkweDA4MGMsIDB4YmI1YywgMHgwODA0LCAweGNkNTYsIDB4MDgwYywgMHhiYjk4LCAweDA4MDQsIDB4Y2Q1NiwKLQkweDAwZDYsIDB4MmM2OCwgMHg2MTA0LCAweDA4MGMsIDB4ZDViYiwgMHgwMGRlLCAweDAxMTgsIDB4MDgwYywKLQkweGIxNmMsIDB4MDQwOCwgMHg2MDA0LCAweDgwMDcsIDB4NjEzNCwgMHg5MThjLCAweDAwZmYsIDB4OTEwNSwKLQkweDYwMzYsIDB4NjAwNywgMHgwMDg1LCAweDYwMDMsIDB4MDAwYiwgMHg2MDIzLCAweDAwMDIsIDB4NjAzYywKLQkweDYwMGEsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsIDB4NjAxYSwgMHg2MDJjLCAweDJjMDgsIDB4MjA2MCwKLQkweDYwMjQsIDB4ZDBiNCwgMHgwMTA4LCAweGMwODUsIDB4YzBiNSwgMHg2MDI2LCAweDIxNjAsIDB4MjAwOSwKLQkweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAwMDUsIDB4MDBkZSwgMHgwMGNlLCAweDA4MGMsIDB4YmI1YywKLQkweDA4MGMsIDB4MzMxNSwgMHgwMGU2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4MzM0NCwKLQkweDYwMTcsIDB4MDAwMCwgMHg2MDIzLCAweDAwMDcsIDB4NjAxYiwgMHgwMzk4LCAweDYwNGIsIDB4MDAwMCwKLQkweDAxMmUsIDB4MDBlZSwgMHgwMDA1LCAweDA4MGMsIDB4YjVhOCwgMHgxOTA0LCAweGNlMDAsIDB4MDAwNSwKLQkweDYwMDAsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDk2LCAweDAwZDYsIDB4MDAxYiwKLQkweDAwZGUsIDB4MDA5ZSwgMHgwMDA1LCAweGNlNmIsIDB4Y2U2YiwgMHhjZTZiLCAweGNlNmIsIDB4Y2U2YiwKLQkweGNlNmIsIDB4Y2U2YiwgMHhjZTZiLCAweGNlNmIsIDB4Y2JmOSwgMHhjZTZiLCAweGNiZmUsIDB4Y2U2ZCwKLQkweGNiZmUsIDB4Y2U4NywgMHhjZTZiLCAweDA4MGMsIDB4MGQ4NSwgMHg2MDA0LCAweDkwODYsIDB4MDA4YiwKLQkweDAxYjAsIDB4NjAzNCwgMHg5MDhjLCAweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMzUsIDB4MTEzMCwKLQkweDYwMmMsIDB4OTA4MCwgMHgwMDA5LCAweDIwMGMsIDB4YzE4NSwgMHgyMTAyLCAweDYwMDcsIDB4MDA4YiwKLQkweDYwMDMsIDB4MDAwZCwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAwMDUsIDB4MDgwYywKLQkweGQ2MzksIDB4MDExOCwgMHgwODBjLCAweGQ2NGMsIDB4MDAxMCwgMHgwODBjLCAweGQ2NWEsIDB4MDgwYywKLQkweGQxMGMsIDB4MDgwYywgMHhjZjFiLCAweDA1NzAsIDB4MDgwYywgMHgzMzE1LCAweDA4MGMsIDB4Y2YxYiwKLQkweDAxNjgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywgMHhhODdiLCAweDAwMDYsIDB4YTg3NywKLQkweDAwMDAsIDB4YTg4MCwgMHhjMGVkLCAweGE4ODIsIDB4MDgwYywgMHg3MDEyLCAweDJjNjgsIDB4MDgwYywKLQkweGIxMTYsIDB4MDE1MCwgMHg2ODEwLCAweDYwMTIsIDB4MDgwYywgMHhkM2I2LCAweDAwYzYsIDB4MmQ2MCwKLQkweDA4MGMsIDB4YjFhNywgMHgwMGNlLCAweDAwMDgsIDB4MmQ2MCwgMHg2MDE3LCAweDAwMDAsIDB4NjAyMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywKLQkweDlhYjMsIDB4MDBjOCwgMHgwODBjLCAweGQ2MzksIDB4MDEzOCwgMHg2MDM0LCAweDkwODYsIDB4NDAwMCwKLQkweDExMTgsIDB4MDgwYywgMHgzMzE1LCAweDA4ZDAsIDB4NjAzNCwgMHg5MDhjLCAweGZmMDAsIDB4ODEwZiwKLQkweDkxODYsIDB4MDAzOSwgMHgwMTE4LCAweDkxODYsIDB4MDAzNSwgMHgxMTE4LCAweDA4MGMsIDB4MzMxNSwKLQkweDA4NjgsIDB4MDgwYywgMHhiMWE3LCAweDAwMDUsIDB4NjAwMCwgMHg5MDhhLCAweDAwMTAsIDB4MWEwYywKLQkweDBkODUsIDB4MDAwMiwgMHhjZWYyLCAweGNlZjIsIDB4Y2VmYSwgMHhjZWY0LCAweGNmMDQsIDB4Y2VmMiwKLQkweGNlZjIsIDB4YjFhNywgMHhjZWYyLCAweGNlZjIsIDB4Y2VmMiwgMHhjZWYyLCAweGNlZjIsIDB4Y2VmMiwKLQkweGNlZjIsIDB4Y2VmMiwgMHgwODBjLCAweDBkODUsIDB4MDgwYywgMHhhY2ZjLCAweDA4MGMsIDB4YWVlMywKLQkweDA4MGMsIDB4YWQxOCwgMHg2MTE0LCAweDAwOTYsIDB4MjE0OCwgMHhhODdiLCAweDAwMDYsIDB4MDgwYywKLQkweDcwMTIsIDB4MDA5ZSwgMHgwODA0LCAweGIxNmMsIDB4NjAxYywgMHhkMDg0LCAweDE5MGMsIDB4MWFkMywKLQkweDBjODgsIDB4OTI4NCwgMHgwMDAzLCAweDExNTgsIDB4OTI4MiwgMHgxZGRjLCAweDAyNDAsIDB4MjAwMSwKLQkweDE4MWEsIDB4MjAwNCwgMHg5MjAyLCAweDEyMTgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4OTAwNiwKLQkweDBjZTgsIDB4MDA5NiwgMHgwMDI4LCAweDAwOTYsIDB4MDAwNiwgMHg2MDE0LCAweDIwNDgsIDB4MDAwZSwKLQkweDAwMDYsIDB4OTk4NCwgMHhmMDAwLCAweDkwODYsIDB4ZjAwMCwgMHgwMTEwLCAweDA4MGMsIDB4MTEwNCwKLQkweDAwMGUsIDB4MDA5ZSwgMHgwMDA1LCAweDAwZTYsIDB4MDBjNiwgMHgwMDM2LCAweDAwMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDYxLCAweDFkZGMsIDB4MjA3MSwgMHgxODAwLCAweDczNTQsIDB4NzA3NCwKLQkweDkzMDIsIDB4MTY0MCwgMHg2MDIwLCAweDkyMDYsIDB4MTFmOCwgMHgwODBjLCAweGQ2NDUsIDB4MDE4MCwKLQkweDkyODYsIDB4MDAwMSwgMHgxMTY4LCAweDYwMDQsIDB4OTA4NiwgMHgwMDA0LCAweDExNDgsIDB4MDgwYywKLQkweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDAwYzYsIDB4MDgwYywgMHhiMWE3LCAweDAwY2UsIDB4MDA2MCwKLQkweDA4MGMsIDB4ZDMyOCwgMHgwMTQ4LCAweDA4MGMsIDB4ZDEzMiwgMHgxMTEwLCAweDA4MGMsIDB4YmI1YywKLQkweDAwYzYsIDB4MDgwYywgMHhiMTZjLCAweDAwY2UsIDB4OWNlMCwgMHgwMDFjLCAweDcwNjgsIDB4OWMwMiwKLQkweDEyMDgsIDB4MDhhMCwgMHgwMTJlLCAweDAwMGUsIDB4MDAzZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwKLQkweDAwZTYsIDB4MDBjNiwgMHgwMDE2LCAweDkxODgsIDB4MTAwMCwgMHgyMTBjLCAweDgxZmYsIDB4MDEyOCwKLQkweDIwNjEsIDB4MWIzOSwgMHg2MTEyLCAweDA4MGMsIDB4MzMxNSwgMHg5MDA2LCAweDAwMTAsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAxZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHhiMTE2LCAweDAxYjAsIDB4NjY1ZSwgMHgyYjAwLCAweDYwMTIsIDB4MDgwYywKLQkweDU4NDgsIDB4MDExOCwgMHgwODBjLCAweGQwNGUsIDB4MDE2OCwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywKLQkweDAwMDMsIDB4MjAwOSwgMHgwMDRiLCAweDA4MGMsIDB4YjIwYSwgMHg5MDg1LCAweDAwMDEsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDAwNSwgMHg5MDA2LCAweDBjZDgsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweGJhYTAsIDB4MDgwYywgMHhiMWRkLCAweDA1ODAsIDB4NjA1ZiwgMHgwMDAwLCAweDJiMDAsIDB4NjAxMiwKLQkweDA4MGMsIDB4ZDNiNiwgMHg2MDIzLCAweDAwMDMsIDB4MDAxNiwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywKLQkweDk3YjAsIDB4MDA3NiwgMHg5MDNlLCAweDA4MGMsIDB4OTY2ZCwgMHgyYzA4LCAweDA4MGMsIDB4ZTc1ZCwKLQkweDAwN2UsIDB4MDgwYywgMHhhZDE4LCAweDAwMWUsIDB4ZDE4NCwgMHgwMTI4LCAweDA4MGMsIDB4YjE2YywKLQkweDkwODUsIDB4MDAwMSwgMHgwMDcwLCAweDA4MGMsIDB4NTg0OCwgMHgwMTI4LCAweGQxOGMsIDB4MTE3MCwKLQkweDA4MGMsIDB4ZDA0ZSwgMHgwMTQ4LCAweDIwMDksIDB4MDA0YywgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDI5MDAsIDB4NjAxNiwKLQkweDBjOTAsIDB4MjAwOSwgMHgwMDRkLCAweDAwMTAsIDB4MjAwOSwgMHgwMDRlLCAweDAwZjYsIDB4MDBjNiwKLQkweDAwNDYsIDB4MDAxNiwgMHgwODBjLCAweGIxMTYsIDB4MmM3OCwgMHgwNWEwLCAweDdlNWUsIDB4MmIwMCwKLQkweDc4MTIsIDB4NzgyMywgMHgwMDAzLCAweDAwMTYsIDB4MjAyMSwgMHgwMDA1LCAweDA4MGMsIDB4ZDA2MCwKLQkweDAwMWUsIDB4OTE4NiwgMHgwMDRkLCAweDAxMTgsIDB4OTE4NiwgMHgwMDRlLCAweDAxNDgsIDB4MjAwMSwKLQkweDE5ODAsIDB4MjAwYywgMHhkMWZjLCAweDAxNjgsIDB4MmY2MCwgMHgwODBjLCAweGIxNmMsIDB4MDBkMCwKLQkweDIwMDEsIDB4MTk3ZiwgMHgyMDBjLCAweGQxZmMsIDB4MDEyMCwgMHgyZjYwLCAweDA4MGMsIDB4YjE2YywKLQkweDAwODgsIDB4MmY2MCwgMHgwODBjLCAweDU4NDgsIDB4MDEzOCwgMHhkMThjLCAweDExMTgsIDB4MDRmMSwKLQkweDAxNDgsIDB4MDAxMCwgMHgyOTAwLCAweDc4MTYsIDB4MDAxZSwgMHgwMDE2LCAweDA4MGMsIDB4YjIwYSwKLQkweDkwODUsIDB4MDAwMSwgMHgwMDFlLCAweDAwNGUsIDB4MDBjZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwYzYsIDB4MDA0NiwgMHgwODBjLCAweGIxMTYsIDB4MmM3OCwgMHgwNTA4LCAweDdlNWUsIDB4MmIwMCwKLQkweDc4MTIsIDB4NzgyMywgMHgwMDAzLCAweDAwOTYsIDB4MjAyMSwgMHgwMDA0LCAweDA0ODksIDB4MDA5ZSwKLQkweDIwMDEsIDB4MTk3ZSwgMHgyMDBjLCAweGQxZmMsIDB4MDEyMCwgMHgyZjYwLCAweDA4MGMsIDB4YjE2YywKLQkweDAwNjAsIDB4MmY2MCwgMHgwODBjLCAweDU4NDgsIDB4MDEyMCwgMHhkMThjLCAweDExNjAsIDB4MDA3MSwKLQkweDAxMzAsIDB4MjAwOSwgMHgwMDUyLCAweDA4MGMsIDB4YjIwYSwgMHg5MDg1LCAweDAwMDEsIDB4MDA0ZSwKLQkweDAwY2UsIDB4MDBmZSwgMHgwMDA1LCAweDI5MDAsIDB4NzgxNiwgMHgwYzk4LCAweDAwYzYsIDB4MDgwYywKLQkweDRjNDEsIDB4MDBjZSwgMHgxMTIwLCAweDA4MGMsIDB4YjE2YywgMHg5MDA2LCAweDAwMDUsIDB4YTg2NywKLQkweDAwMDAsIDB4YTg2YiwgMHg4MDAwLCAweDI5MDAsIDB4NjAxNiwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDAwOTYsIDB4MDA3NiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywKLQkweDY5OWQsIDB4MDE1OCwgMHgyMDAxLCAweGQwNjcsIDB4MDAwNiwgMHg5MDBlLCAweDI0MDAsIDB4MDgwYywKLQkweDcyNWUsIDB4MDgwYywgMHg3MDEyLCAweDAwMGUsIDB4MDgwNywgMHgyNDE4LCAweDA4MGMsIDB4OTliMywKLQkweGJhYTAsIDB4MDA4NiwgMHgyMDQxLCAweDAwMDEsIDB4MjAzOSwgMHgwMDAxLCAweDI2MDgsIDB4MDgwYywKLQkweDk3Y2EsIDB4MDA4ZSwgMHgwODBjLCAweDk2NmQsIDB4MmYwOCwgMHgyNjQ4LCAweDA4MGMsIDB4ZTc1ZCwKLQkweGI5M2MsIDB4ODFmZiwgMHgwOTBjLCAweDk4YTMsIDB4MDgwYywgMHhhZDE4LCAweDAxMmUsIDB4MDA3ZSwKLQkweDAwOWUsIDB4MDAwNSwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4YjExNiwKLQkweDAxOTAsIDB4NjYwYSwgMHgyYjA4LCAweDYxMTIsIDB4MDgwYywgMHhkM2I2LCAweDYwMjMsIDB4MDAwMSwKLQkweDI5MDAsIDB4NjAxNiwgMHgyMDA5LCAweDAwMWYsIDB4MDgwYywgMHhiMjBhLCAweDkwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwgMHgwMGM2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHhiMWRkLCAweDAxYjgsIDB4NjYwYSwgMHgyYjA4LCAweDYxMTIsIDB4MDgwYywKLQkweGQzYjYsIDB4NjAyMywgMHgwMDA4LCAweDI5MDAsIDB4NjAxNiwgMHgwMGY2LCAweDJjNzgsIDB4MDgwYywKLQkweDE3YWQsIDB4MDBmZSwgMHgyMDA5LCAweDAwMjEsIDB4MDgwYywgMHhiMjBhLCAweDkwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwgMHgyMDA5LCAweDAwM2QsIDB4MDBjNiwKLQkweDAxMjYsIDB4MDAxNiwgMHgyMDkxLCAweDgwMDAsIDB4MDgwYywgMHhiMTE2LCAweDAxOTgsIDB4NjYwYSwKLQkweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsIDB4NjAxNiwKLQkweDAwMWUsIDB4MDAxNiwgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAwMWUsIDB4MDEyZSwKLQkweDAwY2UsIDB4MDAwNSwgMHg5MDA2LCAweDBjZDAsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4YjFkZCwgMHgwMTg4LCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywKLQkweDAwMDEsIDB4MjkwMCwgMHg2MDE2LCAweDIwMDksIDB4MDAwMCwgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDEyZSwgMHgwMGNlLCAweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDIwMDksIDB4MDA0NCwKLQkweDA4MzAsIDB4MjAwOSwgMHgwMDQ5LCAweDA4MTgsIDB4MDAyNiwgMHgwMGI2LCAweDYyMTAsIDB4MjI1OCwKLQkweGJhM2MsIDB4ODJmZiwgMHgwMTE4LCAweDgyMTEsIDB4YmEzZSwgMHgxMTQwLCAweGI4ZDAsIDB4OTAwNSwKLQkweDAxMjgsIDB4Yjg4OCwgMHg5MDA1LCAweDExMTAsIDB4Yjg4YiwgMHgwMDAxLCAweDAwYmUsIDB4MDAyZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDYwMDQsIDB4OTA4ZSwgMHgwMDAyLCAweDAxNDAsIDB4OTA4ZSwKLQkweDAwMDMsIDB4MDEyOCwgMHg5MDhlLCAweDAwMDQsIDB4MDExMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAxZSwKLQkweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDAwODYsIDB4MDA5NiwgMHg2MDIwLCAweDkwODYsIDB4MDAwNCwKLQkweDAxYTgsIDB4NjAxNCwgMHg5MDRkLCAweDA4MGMsIDB4Y2YxYiwgMHgwMTgwLCAweGE4NjQsIDB4OTA4NiwKLQkweDAxMzksIDB4MDE3MCwgMHg2MDIwLCAweDkwYzYsIDB4MDAwMywgMHgwMTQwLCAweDkwYzYsIDB4MDAwMiwKLQkweDAxMjgsIDB4YTg2OCwgMHhkMGZjLCAweDAxMTAsIDB4OTAwNiwgMHgwMDEwLCAweDkwODUsIDB4MDAwMSwKLQkweDAwOWUsIDB4MDA4ZSwgMHgwMDBlLCAweDAwMDUsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4YjFkZCwgMHgwMTk4LCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywKLQkweDAwMDEsIDB4MjkwMCwgMHg2MDE2LCAweDA4MGMsIDB4MzMxNSwgMHgyMDA5LCAweDAwMjgsIDB4MDgwYywKLQkweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwKLQkweDkxODYsIDB4MDAxNSwgMHgxMWE4LCAweDIwMTEsIDB4MTgyNCwgMHgyMjA0LCAweDkwODYsIDB4MDA3NCwKLQkweDExNzgsIDB4MDBiNiwgMHgwODBjLCAweGJlMDksIDB4MDBiZSwgMHgwODBjLCAweGMwODUsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDI5LCAweDA4MGMsIDB4OTYxZSwgMHgwODBjLCAweDlhYjMsIDB4MDA3OCwKLQkweDYwMTQsIDB4MDA5NiwgMHgyMDQ4LCAweGE4NjgsIDB4MDA5ZSwgMHhkMGZjLCAweDAxNDgsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHhkNTdjLCAweDA4MGMsIDB4YmI1YywgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwKLQkweDAwOTYsIDB4NjAxNCwgMHg5MDRkLCAweDA5MGMsIDB4MGQ4NSwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywKLQkweDAwMDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHhhODY3LCAweDAxMzksIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDEyZSwgMHgwMDllLCAweDA4MGMsIDB4YjE2YywKLQkweDBjMzAsIDB4MDA5NiwgMHg5MTg2LCAweDAwMTYsIDB4MTEyOCwgMHgyMDAxLCAweDAwMDQsIDB4MDgwYywKLQkweDY2ZmEsIDB4MDBlOCwgMHg5MTg2LCAweDAwMTUsIDB4MTUxMCwgMHgyMDExLCAweDE4MjQsIDB4MjIwNCwKLQkweDkwODYsIDB4MDAxNCwgMHgxMWUwLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweDA4MGMsIDB4Njg0ZiwKLQkweDAwYmUsIDB4MDgwYywgMHhjMTViLCAweDExOTgsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4Yjg5MCwKLQkweDAwYmUsIDB4OTAwNSwgMHgwMTYwLCAweDIwMDEsIDB4MDAwNiwgMHgwODBjLCAweDY2ZmEsIDB4NjAxNCwKLQkweDIwNDgsIDB4YTg2OCwgMHhkMGZjLCAweDAxNzAsIDB4MDgwYywgMHhiNTdjLCAweDAwNDgsIDB4NjAxNCwKLQkweDIwNDgsIDB4YTg2OCwgMHhkMGZjLCAweDA1MjgsIDB4MDgwYywgMHhiYjVjLCAweDA4MGMsIDB4YjE2YywKLQkweDAwOWUsIDB4MDAwNSwgMHg2MDE0LCAweDYzMTAsIDB4MjM1OCwgMHg5MDRkLCAweDA5MGMsIDB4MGQ4NSwKLQkweGE4N2IsIDB4MDAwMCwgMHhhODgzLCAweDAwMDAsIDB4YTg5NywgMHg0MDAwLCAweDkwMGUsIDB4MDgwYywKLQkweDZhYWUsIDB4MTEwOCwgMHhjMTg1LCAweGI4MDAsIDB4ZDBiYywgMHgwMTA4LCAweGMxOGQsIDB4YTk5YSwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4NzAxMiwgMHgwMTJlLCAweDA4MGMsIDB4YjE2YywKLQkweDA4ZjgsIDB4NjAxNCwgMHg5MDRkLCAweDA5MGMsIDB4MGQ4NSwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywKLQkweDAwMDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHhhODY3LCAweDAxMzksIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweDcwMTIsIDB4MDEyZSwgMHgwODBjLCAweGIxNmMsIDB4MDg0MCwKLQkweGE4NzgsIDB4OTA4NiwgMHgwMDA1LCAweDExMDgsIDB4MDAwOSwgMHgwMDA1LCAweGE4ODAsIDB4YzBhZCwKLQkweGE4ODIsIDB4MDAwNSwgMHg2MDRiLCAweDAwMDAsIDB4NjAxNywgMHgwMDAwLCAweDYwMDMsIDB4MDAwMSwKLQkweDYwMDcsIDB4MDA1MCwgMHgyMDA5LCAweDgwMjMsIDB4MDgwYywgMHg5NjE3LCAweDAwMDUsIDB4MDBjNiwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDAxMzAsIDB4MDA2NiwKLQkweDYwMjAsIDB4OTA4NCwgMHgwMDBmLCAweDAwMWIsIDB4MDA2ZSwgMHgwMGNlLCAweDAwMDUsIDB4Y2JmOSwKLQkweGQyNTksIDB4ZDI1OSwgMHhkMjVjLCAweGVhZGMsIDB4ZWFmNywgMHhlYWZhLCAweGNiZjksIDB4Y2JmOSwKLQkweGNiZjksIDB4Y2JmOSwgMHhjYmY5LCAweGNiZjksIDB4Y2JmOSwgMHhjYmY5LCAweGNiZjksIDB4MDgwYywKLQkweDBkODUsIDB4YTAwMSwgMHhhMDAxLCAweDAwMDUsIDB4MDA5NiwgMHg2MDE0LCAweDkwNGQsIDB4MDExOCwKLQkweGE4N2MsIDB4ZDBlNCwgMHgxMTEwLCAweDAwOWUsIDB4MDAxMCwgMHgwMDllLCAweDAwMDUsIDB4NjAxMCwKLQkweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsIDB4ZDBiYywgMHgwNTUwLCAweDIwMDEsIDB4MTgzNCwKLQkweDIwMDQsIDB4OTAwNSwgMHgxNTQwLCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweGIxMTYsIDB4MDUwOCwKLQkweDc4MTAsIDB4NjAxMiwgMHgwODBjLCAweGQzYjYsIDB4NzgyMCwgMHg5MDg2LCAweDAwMDMsIDB4MDEyOCwKLQkweDc4MDgsIDB4NjAzYSwgMHgyZjAwLCAweDYwM2UsIDB4MDAyMCwgMHg3ODA4LCAweDYwM2UsIDB4MmYwMCwKLQkweDYwM2EsIDB4NjAyZSwgMHg2MDIzLCAweDAwMDEsIDB4NjAwNywgMHgwMDM1LCAweDYwMDMsIDB4MDAwMSwKLQkweDc5NWMsIDB4NjE1ZSwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDJmNjAsIDB4MDBmZSwKLQkweDAwMDUsIDB4MmY2MCwgMHgwMGZlLCAweDIwMDEsIDB4MTk4OCwgMHgyMDA0LCAweDYwNGEsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDA5NiwgMHg2ODE0LCAweDIwNDgsIDB4NjgxYywgMHhkMGZjLCAweGMwZmMsIDB4NjgxZSwKLQkweGE4N2MsIDB4MTEwOCwgMHhkMGU0LCAweDAxODAsIDB4YzBlNCwgMHhhODdlLCAweGE4NzcsIDB4MDAwMCwKLQkweGE4OTMsIDB4MDAwMCwgMHhhODhmLCAweDAwMDAsIDB4ZDBjYywgMHgwMTMwLCAweGMwY2MsIDB4YTg3ZSwKLQkweGE4NzgsIDB4MjA0OCwgMHgwODBjLCAweDEwMGIsIDB4NjgzMCwgMHg2MDM2LCAweDkwOGUsIDB4MDAwMSwKLQkweDAxNDgsIDB4NjgwMywgMHgwMDAyLCAweDkwODYsIDB4MDAwNSwgMHgwMTcwLCAweDkwMDYsIDB4NjAyZSwKLQkweDYwMzIsIDB4MDBkMCwgMHg2ODFjLCAweGMwODUsIDB4NjgxZSwgMHg2ODAzLCAweDAwMDQsIDB4NjgyNCwKLQkweGMwZjQsIDB4OTA4NSwgMHgwYzAwLCAweDY4MjYsIDB4NjgxNCwgMHgyMDQ4LCAweGE4YWMsIDB4NjkzOCwKLQkweDkxMDIsIDB4YThiMCwgMHg2OTNjLCAweDkxMDMsIDB4MWU0OCwgMHg2ODNjLCAweDYwMmUsIDB4NjgzOCwKLQkweDkwODQsIDB4ZmZmYywgMHg2ODNhLCAweDYwMzIsIDB4MmQwMCwgMHg2MDNhLCAweDY4MDgsIDB4NjAzZSwKLQkweDY5MTAsIDB4NjExMiwgMHg2OTVjLCAweDYxNWUsIDB4NjAyMywgMHgwMDAxLCAweDYwMDcsIDB4MDAzOSwKLQkweDYwMDMsIDB4MDAwMSwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAwOWUsIDB4MDAxZSwKLQkweDAwMDUsIDB4NjAyNCwgMHhkMGQ0LCAweDA1MTAsIDB4ZDBmNCwgMHgxMWY4LCAweDYwMzgsIDB4OTQwYSwKLQkweDYwM2MsIDB4OTMwMywgMHgwMjMwLCAweDkxMDUsIDB4MDEyMCwgMHg2MDI0LCAweGMwZDQsIDB4YzBmNSwKLQkweDAwOTgsIDB4NjQzYSwgMHg2MzNlLCAweGFjM2UsIDB4YWI0MiwgMHgwMDQ2LCAweDAwMzYsIDB4MjQwMCwKLQkweGFjYWMsIDB4OTQwMiwgMHhhODM2LCAweDIzMDAsIDB4YWJiMCwgMHg5MzAzLCAweGE4M2EsIDB4MDAzZSwKLQkweDAwNGUsIDB4NjAyNCwgMHhjMGQ0LCAweDAwMDAsIDB4NjAyNiwgMHgwMDA1LCAweGQwZjQsIDB4MTEzOCwKLQkweGE4M2MsIDB4NjAzYSwgMHhhODQwLCAweDYwM2UsIDB4NjAyNCwgMHhjMGY1LCAweDYwMjYsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDAxNiwgMHg2MDA0LCAweDkwOGUsIDB4MDAzNCwgMHgwMWI4LCAweDkwOGUsIDB4MDAzNSwKLQkweDAxYTAsIDB4OTA4ZSwgMHgwMDM2LCAweDAxODgsIDB4OTA4ZSwgMHgwMDM3LCAweDAxNzAsIDB4OTA4ZSwKLQkweDAwMzgsIDB4MDE1OCwgMHg5MDhlLCAweDAwMzksIDB4MDE0MCwgMHg5MDhlLCAweDAwM2EsIDB4MDEyOCwKLQkweDkwOGUsIDB4MDAzYiwgMHgwMTEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDFlLCAweDAwMGUsIDB4MDAwNSwKLQkweDAwMDYsIDB4MDAxNiwgMHgwMDI2LCAweDAwMzYsIDB4MDBlNiwgMHgyMDAxLCAweDE5ODIsIDB4MjAwYywKLQkweDgwMDAsIDB4MjAxNCwgMHgyMDAxLCAweDAwMzIsIDB4MDgwYywgMHg5NTViLCAweDIwMDEsIDB4MTk4NiwKLQkweDgyZmYsIDB4MTExMCwgMHgyMDExLCAweDAwMTQsIDB4MjIwMiwgMHgyMDAxLCAweDE5ODQsIDB4MjAwYywKLQkweDgwMDAsIDB4MjAxNCwgMHgyMDcxLCAweDE5NmMsIDB4NzExYSwgMHg3MjFlLCAweDIwMDEsIDB4MDA2NCwKLQkweDA4MGMsIDB4OTU1YiwgMHgyMDAxLCAweDE5ODcsIDB4ODJmZiwgMHgxMTEwLCAweDIwMTEsIDB4MDAxNCwKLQkweDIyMDIsIDB4MjAwMSwgMHgxOTg4LCAweDkyODgsIDB4MDAwYSwgMHgyMTAyLCAweDIwMDEsIDB4MDAxNywKLQkweDA4MGMsIDB4YWNlZCwgMHgyMDAxLCAweDFhOTAsIDB4MjEwMiwgMHgyMDAxLCAweDAwMzIsIDB4MDgwYywKLQkweDE2YjksIDB4MDgwYywgMHg2YmYyLCAweDAwZWUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwZTYsIDB4MjAwMSwgMHgxOTg2LCAweDIwMDMsIDB4MDAyOCwKLQkweDIwMDEsIDB4MTk4NywgMHgyMDAzLCAweDAwMTQsIDB4MjA3MSwgMHgxOTZjLCAweDcwMWIsIDB4MDAwMCwKLQkweDcwMWYsIDB4MDdkMCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwOSwgMHgwMDFlLCAweDIxMDIsIDB4MjAwMSwKLQkweDAwMTcsIDB4MDgwYywgMHhhY2VkLCAweDIwMDEsIDB4MWE5MCwgMHgyMTAyLCAweDIwMDEsIDB4MDAzMiwKLQkweDA4MGMsIDB4MTZiOSwgMHgwMGVlLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwOTYsIDB4NjA2MCwKLQkweDkwNGQsIDB4MDExMCwgMHgwODBjLCAweDEwOGIsIDB4MDA5ZSwgMHgwMDA1LCAweDAwMDUsIDB4MDBjNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDA4MGMsIDB4YjExNiwgMHgwMTgwLCAweDJiMDgsIDB4NjExMiwKLQkweDBjYTksIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsIDB4NjAxNiwgMHgyMDA5LCAweDAwMzMsIDB4MDgwYywKLQkweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDkwMDYsIDB4MGNkOCwKLQkweDAwOTYsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzEsIDB4MTgwMCwgMHg5MTg2LCAweDAwMTUsIDB4MTUyMCwKLQkweDcwOTAsIDB4OTA4NiwgMHgwMDE4LCAweDAxMjAsIDB4NzA5MCwgMHg5MDg2LCAweDAwMTQsIDB4MTFlMCwKLQkweDYwMTQsIDB4MjA0OCwgMHhhYTNjLCAweGQyZTQsIDB4MTE2MCwgMHgyYzc4LCAweDA4MGMsIDB4OWI4MywKLQkweDAxZDgsIDB4NzA3YywgMHhhYTUwLCAweDkyMDYsIDB4MTE2MCwgMHg3MDgwLCAweGFhNTQsIDB4OTIwNiwKLQkweDExNDAsIDB4NjIxMCwgMHgwMGI2LCAweDIyNTgsIDB4YmFhMCwgMHgwMGJlLCAweDkwMGUsIDB4MDgwYywKLQkweDMzNjQsIDB4MDgwYywgMHhiNTdjLCAweDAwMjAsIDB4MDgwYywgMHhiYjVjLCAweDA4MGMsIDB4YjE2YywKLQkweDAwZmUsIDB4MDBlZSwgMHgwMDllLCAweDAwMDUsIDB4NzA2MCwgMHhhYTU0LCAweDkyMDYsIDB4MGQ0OCwKLQkweDBjODAsIDB4MDBjNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGIxMTYsIDB4MDE4OCwKLQkweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywgMHgwMDAxLCAweDI5MDAsIDB4NjAxNiwKLQkweDIwMDksIDB4MDA0ZCwgMHgwODBjLCAweGIyMGEsIDB4OTA4NSwgMHgwMDAxLCAweDAxMmUsIDB4MDBjZSwKLQkweDAwMDUsIDB4OTAwNiwgMHgwY2Q4LCAweDAwYzYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MDAxNiwKLQkweDA4MGMsIDB4YjExNiwgMHgwMTgwLCAweDJiMDgsIDB4NjExMiwgMHgwODBjLCAweGQzYjYsIDB4NjAyMywKLQkweDAwMDEsIDB4MjkwMCwgMHg2MDE2LCAweDAwMWUsIDB4MDgwYywgMHhiMjBhLCAweDkwODUsIDB4MDAwMSwKLQkweDAxMmUsIDB4MDBjZSwgMHgwMDA1LCAweDAwMWUsIDB4OTAwNiwgMHgwY2QwLCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNjYsIDB4MDA5NiwgMHgwMGU2LCAweDAwZjYsIDB4MjA3MSwKLQkweDE4MDAsIDB4OTE4NiwgMHgwMDE1LCAweDE1NjgsIDB4NzE5MCwgMHg2MDE0LCAweDIwNDgsIDB4YTgxNCwKLQkweDgwMDMsIDB4OTEwNiwgMHgxNTMwLCAweDIwZTEsIDB4MDAwMCwgMHgyMDAxLCAweDE5YTEsIDB4MjAwMywKLQkweDAwMDAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4MzAsIDB4MjBhOCwgMHg4OTA2LCAweDgwMDYsIDB4ODAwNywKLQkweDkwOTQsIDB4MDAzZiwgMHgyMmU4LCAweDkwODQsIDB4ZmZjMCwgMHg5MDgwLCAweDAwMWIsIDB4MjBhMCwKLQkweDIwMDEsIDB4MTlhMSwgMHgwMDE2LCAweDIwMGMsIDB4MDgwYywgMHhkY2ExLCAweDAwMWUsIDB4YTgwNCwKLQkweDkwMDUsIDB4MDExMCwgMHgyMDQ4LCAweDBjMzgsIDB4NjAxNCwgMHgyMDQ4LCAweGE4NjcsIDB4MDEwMywKLQkweDAwMTAsIDB4MDgwYywgMHhiYjVjLCAweDA4MGMsIDB4YjE2YywgMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwKLQkweDAwNmUsIDB4MDA1ZSwgMHgwMDRlLCAweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDA5NiwKLQkweDAwZTYsIDB4MDBmNiwgMHgyMDcxLCAweDE4MDAsIDB4OTE4NiwgMHgwMDE1LCAweDExYjgsIDB4NzA5MCwKLQkweDkwODYsIDB4MDAwNCwgMHgxMTk4LCAweDYwMTQsIDB4MjA0OCwgMHgyYzc4LCAweDA4MGMsIDB4OWI4MywKLQkweDAxYTgsIDB4NzA3YywgMHhhYTc0LCAweDkyMDYsIDB4MTEzMCwgMHg3MDgwLCAweGFhNzgsIDB4OTIwNiwKLQkweDExMTAsIDB4MDgwYywgMHgzMzE1LCAweDA4MGMsIDB4YjU3YywgMHgwMDIwLCAweDA4MGMsIDB4YmI1YywKLQkweDA4MGMsIDB4YjE2YywgMHgwMGZlLCAweDAwZWUsIDB4MDA5ZSwgMHgwMDA1LCAweDcwNjAsIDB4YWE3OCwKLQkweDkyMDYsIDB4MGQ3OCwgMHgwYzgwLCAweDAwOTYsIDB4MDBlNiwgMHgwMGY2LCAweDIwNzEsIDB4MTgwMCwKLQkweDkxODYsIDB4MDAxNSwgMHgxNTUwLCAweDcwOTAsIDB4OTA4NiwgMHgwMDA0LCAweDE1MzAsIDB4NjAxNCwKLQkweDIwNDgsIDB4MmM3OCwgMHgwODBjLCAweDliODMsIDB4MDVmMCwgMHg3MDdjLCAweGFhY2MsIDB4OTIwNiwKLQkweDExODAsIDB4NzA4MCwgMHhhYWQwLCAweDkyMDYsIDB4MTE2MCwgMHgwODBjLCAweDMzMTUsIDB4MDAxNiwKLQkweGE5OTgsIDB4YWFiMCwgMHg5Mjg0LCAweDEwMDAsIDB4YzBmZCwgMHgwODBjLCAweDU3ZTksIDB4MDAxZSwKLQkweDAwMTAsIDB4MDgwYywgMHg1NWNjLCAweDA4MGMsIDB4Y2YxYiwgMHgwNTA4LCAweGE4N2IsIDB4MDAwMCwKLQkweGE4ODMsIDB4MDAwMCwgMHhhODk3LCAweDQwMDAsIDB4MDA4MCwgMHgwODBjLCAweGNmMWIsIDB4MDFiOCwKLQkweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweDU1Y2MsIDB4MWQ3MCwgMHhhODdiLCAweDAwMzAsIDB4YTg4MywKLQkweDAwMDAsIDB4YTg5NywgMHg0MDA1LCAweGE4OWIsIDB4MDAwNCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweGE4NjcsIDB4MDEzOSwgMHgwODBjLCAweDcwMTIsIDB4MDEyZSwgMHgwODBjLCAweGIxNmMsIDB4MDBmZSwKLQkweDAwZWUsIDB4MDA5ZSwgMHgwMDA1LCAweDcwNjAsIDB4YWFkMCwgMHg5MjA2LCAweDA5MzAsIDB4MDg4OCwKLQkweDAwMTYsIDB4MDAyNiwgMHhhODdjLCAweGQwYWMsIDB4MDE3OCwgMHhhOTM4LCAweGFhMzQsIDB4MjEwMCwKLQkweDkyMDUsIDB4MDE1MCwgMHhhODkwLCAweDkxMDYsIDB4MTExOCwgMHhhODhjLCAweDkyMDYsIDB4MDEyMCwKLQkweGE5OTIsIDB4YWE4ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDAyZSwgMHgwMDFlLCAweDAwMDUsIDB4MDBiNiwKLQkweDAwZDYsIDB4MDAzNiwgMHgwODBjLCAweGNmMWIsIDB4MDkwNCwgMHhkNTc4LCAweDAwOTYsIDB4NjMxNCwKLQkweDIzNDgsIDB4YTg3YSwgMHhhOTgyLCAweDkyOWUsIDB4NDAwMCwgMHgxNTgwLCAweDYzMTAsIDB4MDBjNiwKLQkweDIzNTgsIDB4MjAwOSwgMHgwMDAwLCAweGE4NjgsIDB4ZDBmNCwgMHgxMTQwLCAweDA4MGMsIDB4NmFhZSwKLQkweDExMDgsIDB4YzE4NSwgMHhiODAwLCAweGQwYmMsIDB4MDEwOCwgMHhjMThkLCAweGFhOTYsIDB4YTk5YSwKLQkweDIwYTksIDB4MDAwNCwgMHhhODYwLCAweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMzEsIDB4MjBhMCwKLQkweGI4YzQsIDB4MjBlMCwgMHhiOGM4LCAweDkwODAsIDB4MDAwNiwgMHgyMDk4LCAweDA4MGMsIDB4MGZkNiwKLQkweDIwYTksIDB4MDAwNCwgMHhhODVjLCAweDkwODAsIDB4MDAzNSwgMHgyMGEwLCAweGI4YzgsIDB4OTA4MCwKLQkweDAwMGEsIDB4MjA5OCwgMHgwODBjLCAweDBmZDYsIDB4MDBjZSwgMHgwMDkwLCAweGFhOTYsIDB4MzkxOCwKLQkweDkzOTgsIDB4MDAwNywgMHgyMzFjLCAweDYwMDQsIDB4OTA4NiwgMHgwMDE2LCAweDAxMTAsIDB4YTg5YiwKLQkweDAwMDQsIDB4YWJhMiwgMHg2MzEwLCAweDIzNTgsIDB4YjgwNCwgMHg5MDg0LCAweDAwZmYsIDB4YTg5ZSwKLQkweGE4NjgsIDB4YzBmNCwgMHhhODZhLCAweDA4MGMsIDB4NzAwNiwgMHg2MDE3LCAweDAwMDAsIDB4MDA5ZSwKLQkweDAwM2UsIDB4MDBkZSwgMHgwMGJlLCAweDAwMDUsIDB4MDAyNiwgMHgwMDM2LCAweDAwNDYsIDB4MDBiNiwKLQkweDAwOTYsIDB4MDBmNiwgMHg2MjE0LCAweDIyNDgsIDB4NjIxMCwgMHgyMjU4LCAweDIwNzksIDB4MDI2MCwKLQkweDkwOTYsIDB4MDAwMCwgMHgxMWEwLCAweGI4MTQsIDB4OTA4NCwgMHgwMGZmLCAweDkwMGUsIDB4MDgwYywKLQkweDI2OGMsIDB4MjExOCwgMHg4MzFmLCAweDkzOWMsIDB4ZmYwMCwgMHg3ODM4LCAweDkwODQsIDB4MDBmZiwKLQkweDkzMWQsIDB4N2MzYywgMHgyMDExLCAweDgwMTgsIDB4MDgwYywgMHg0Y2ExLCAweDAwYTgsIDB4OTA5NiwKLQkweDAwMDEsIDB4MTE0OCwgMHg4OWZmLCAweDAxODAsIDB4YTg5YiwgMHgwMDBkLCAweDc4MzgsIDB4YThhNiwKLQkweDc4M2MsIDB4YThhYSwgMHgwMDQ4LCAweDkwOTYsIDB4MDAwMiwgMHgxMTMwLCAweGE4OWIsIDB4MDAwZCwKLQkweDc4MzgsIDB4YThhNiwgMHg3ODNjLCAweGE4YWEsIDB4MDBmZSwgMHgwMDllLCAweDAwYmUsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDA1LCAweDAwYzYsIDB4MDAyNiwgMHgwMDE2LCAweDkxODYsIDB4MDAzNSwKLQkweDAxMTAsIDB4NmEzOCwgMHgwMDA4LCAweDZhMmMsIDB4MDgwYywgMHhjZjA5LCAweDAxZjAsIDB4MjI2MCwKLQkweDYxMjAsIDB4OTE4NiwgMHgwMDAzLCAweDAxMTgsIDB4OTE4NiwgMHgwMDA2LCAweDExOTAsIDB4NjgzOCwKLQkweDkyMDYsIDB4MDE0MCwgMHg2ODNjLCAweDkyMDYsIDB4MTE2MCwgMHg2MTA4LCAweDY4MzgsIDB4OTEwNiwKLQkweDExNDAsIDB4MDAyMCwgMHg2MDA4LCAweDY5M2MsIDB4OTEwNiwgMHgxMTE4LCAweDYwMTAsIDB4NjkxMCwKLQkweDkxMDYsIDB4MDAxZSwgMHgwMDJlLCAweDAwY2UsIDB4MDAwNSwgMHg5MDg1LCAweDAwMDEsIDB4MGNjOCwKLQkweGE5NzQsIDB4ZDFjYywgMHgwMTk4LCAweDkxOGMsIDB4MDBmZiwgMHg5MThlLCAweDAwMDIsIDB4MTE3MCwKLQkweGE5YTgsIDB4OTE4YywgMHgwMDBmLCAweDkxOGUsIDB4MDAwMSwgMHgxMTQwLCAweGE4N2MsIDB4ZDBhYywKLQkweDAxMjgsIDB4YTgzNCwgMHhhOTM4LCAweDkxMTUsIDB4MTkwYywgMHhjNTE5LCAweDAwMDUsIDB4MDAzNiwKLQkweDIwMTksIDB4MDAwMSwgMHgwMDEwLCAweDAwMzYsIDB4OTAxZSwgMHgwNDk5LCAweDAxZTAsIDB4MDgwYywKLQkweGNmMWIsIDB4MDFjOCwgMHgwODBjLCAweGQxMGMsIDB4NjAzNywgMHg0MDAwLCAweDYwMTQsIDB4NjAxNywKLQkweDAwMDAsIDB4MDA5NiwgMHgyMDQ4LCAweGE4N2MsIDB4MDgwYywgMHhkMTMyLCAweDExMTgsIDB4MDgwYywKLQkweGJiNWMsIDB4MDA0MCwgMHhhODY3LCAweDAxMDMsIDB4YTg3NywgMHgwMDAwLCAweDgzZmYsIDB4MTEyOSwKLQkweDA4MGMsIDB4NzAxMiwgMHgwMDllLCAweDAwM2UsIDB4MDAwNSwgMHhhODgwLCAweGQwYjQsIDB4MDEyOCwKLQkweGE4N2IsIDB4MDAwNiwgMHhjMGVjLCAweGE4ODIsIDB4MDA0OCwgMHhkMGJjLCAweDAxMTgsIDB4YTg3YiwKLQkweDAwMDIsIDB4MDAyMCwgMHhhODdiLCAweDAwMDUsIDB4MDgwYywgMHhkMjI2LCAweGE4NzcsIDB4MDAwMCwKLQkweDAwMDUsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsIDB4ZDBlYywgMHgwMDA1LCAweDAwMDYsIDB4MjAwMSwKLQkweDE4MTAsIDB4MjAwNCwgMHhkMGY0LCAweDAwMGUsIDB4MDAwNSwgMHgwMDA2LCAweDIwMDEsIDB4MTgxMCwKLQkweDIwMDQsIDB4ZDBlNCwgMHgwMDBlLCAweDAwMDUsIDB4MDAzNiwgMHgwMDQ2LCAweDYwMTAsIDB4MDBiNiwKLQkweDIwNTgsIDB4YmJhMCwgMHgwMGJlLCAweDIwMjEsIDB4MDAwNywgMHgwODBjLCAweDRlNTgsIDB4MDA0ZSwKLQkweDAwM2UsIDB4MDAwNSwgMHgwYzUxLCAweDFkODEsIDB4MDAwNSwgMHgyMDAxLCAweDE5ODYsIDB4MjAwNCwKLQkweDYwMWEsIDB4MDAwNSwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwgMHg2MDRhLCAweDAwMDUsIDB4MDgwYywKLQkweGIxNmMsIDB4MDgwNCwgMHg5YWIzLCAweDYxMWMsIDB4ZDFmYywgMHhhOTdjLCAweDExMDgsIDB4ZDFlNCwKLQkweDAwMDUsIDB4NjAxYywgMHhkMGZjLCAweGE4N2MsIDB4MTEwOCwgMHhkMGU0LCAweDAwMDUsIDB4NjAxYywKLQkweGQwZmMsIDB4YzBmYywgMHg2MDFlLCAweGE4N2MsIDB4MTEwOCwgMHhkMGU0LCAweDAwMDUsIDB4NjA0NCwKLQkweGQwZmMsIDB4MTEzOCwgMHhkMGJjLCAweDAxYTAsIDB4YzBiYywgMHg2MDQ2LCAweDIwMDEsIDB4MDAwMiwKLQkweDAwODAsIDB4ZDBhYywgMHgxMTY4LCAweGQwZGMsIDB4MTEyOCwgMHg5MDhjLCAweDAwMGYsIDB4OTE4NiwKLQkweDAwMDUsIDB4MTExOCwgMHgyMDAxLCAweDAwMDMsIDB4MDAyMCwgMHgyMDAxLCAweDAwMDEsIDB4MDAwOCwKLQkweDYwMDAsIDB4MDAwNSwgMHgwMGI2LCAweDAwNjYsIDB4NjAwMCwgMHg5MGIyLCAweDAwMTAsIDB4MWEwYywKLQkweDBkODUsIDB4MDAxYiwgMHgwMDZlLCAweDAwYmUsIDB4MDAwNSwgMHhkNmI1LCAweGRkZmUsIDB4ZGY2MiwKLQkweGQ2YjUsIDB4ZDZiNSwgMHhkNmI1LCAweGQ2YjUsIDB4ZDZiNSwgMHhkNmVjLCAweGRmZTYsIDB4ZDZiNSwKLQkweGQ2YjUsIDB4ZDZiNSwgMHhkNmI1LCAweGQ2YjUsIDB4ZDZiNSwgMHgwODBjLCAweDBkODUsIDB4MDA2NiwKLQkweDYwMDAsIDB4OTBiMiwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwgMHgwMDEzLCAweDAwNmUsIDB4MDAwNSwKLQkweGQ2ZDAsIDB4ZTUwYiwgMHhkNmQwLCAweGQ2ZDAsIDB4ZDZkMCwgMHhkNmQwLCAweGQ2ZDAsIDB4ZDZkMCwKLQkweGU0YmEsIDB4ZTU1ZCwgMHhkNmQwLCAweGVjMTAsIDB4ZWM0NCwgMHhlYzEwLCAweGVjNDQsIDB4ZDZkMCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg2MDAwLCAweDkwODIsIDB4MDAxMCwgMHgxYTBjLCAweDBkODUsIDB4NjAwMCwKLQkweDAwMGEsIDB4MDAwNSwgMHhkNmVhLCAweGUxYzMsIDB4ZTI4ZSwgMHhlMmIxLCAweGUzMmQsIDB4ZDZlYSwKLQkweGU0MmEsIDB4ZTNiNSwgMHhkZmYwLCAweGU0OTIsIDB4ZTRhNywgMHhkNmVhLCAweGQ2ZWEsIDB4ZDZlYSwKLQkweGQ2ZWEsIDB4ZDZlYSwgMHgwODBjLCAweDBkODUsIDB4OTFiMiwgMHgwMDUzLCAweDFhMGMsIDB4MGQ4NSwKLQkweDIxMDAsIDB4OTFiMiwgMHgwMDQwLCAweDFhMDQsIDB4ZGI3MCwgMHgwMDAyLCAweGQ3MzYsIDB4ZDkzZSwKLQkweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ5NDcsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwKLQkweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwKLQkweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwgMHhkNzM4LCAweGQ3OWYsIDB4ZDdhZSwKLQkweGQ4MTIsIDB4ZDgzZCwgMHhkOGI2LCAweGQ5MjksIDB4ZDczNiwgMHhkNzM2LCAweGQ5NGEsIDB4ZDczNiwKLQkweGQ3MzYsIDB4ZDk1ZiwgMHhkOTZjLCAweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwKLQkweGRhMTIsIDB4ZDczNiwgMHhkNzM2LCAweGRhMjYsIDB4ZDczNiwgMHhkNzM2LCAweGQ5ZTEsIDB4ZDczNiwKLQkweGQ3MzYsIDB4ZDczNiwgMHhkYTNlLCAweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGRhYmIsIDB4ZDczNiwKLQkweGQ3MzYsIDB4ZDczNiwgMHhkNzM2LCAweGQ3MzYsIDB4ZDczNiwgMHhkYjM4LCAweDA4MGMsIDB4MGQ4NSwKLQkweDA4MGMsIDB4NmJjZiwgMHgxMTUwLCAweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwY2MsIDB4MTEyOCwKLQkweDkwODQsIDB4MDAwOSwgMHg5MDg2LCAweDAwMDgsIDB4MTE0MCwgMHg2MDA3LCAweDAwMDksIDB4NjAyZiwKLQkweDAwMDksIDB4NjAxNywgMHgwMDAwLCAweDA4MDQsIDB4ZDkzNywgMHgwODBjLCAweDZiNmIsIDB4MDBlNiwKLQkweDAwYzYsIDB4MDAzNiwgMHgwMDI2LCAweDAwMTYsIDB4NjIxMCwgMHgyMjU4LCAweGJhYTAsIDB4MDAyNiwKLQkweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweGFjZmMsIDB4MDgwYywgMHg5N2IwLCAweDAwNzYsIDB4OTAzZSwKLQkweDA4MGMsIDB4OTY2ZCwgMHgyYzA4LCAweDA4MGMsIDB4ZTc1ZCwgMHgwMDdlLCAweDAwMWUsIDB4MDgwYywKLQkweGFkMTgsIDB4MDAxZSwgMHgwMDJlLCAweDAwM2UsIDB4MDBjZSwgMHgwMGVlLCAweDY2MTAsIDB4MjY1OCwKLQkweDA4MGMsIDB4NjdjMywgMHhiZTA0LCAweDk2ODQsIDB4MDBmZiwgMHg5MDgyLCAweDAwMDYsIDB4MTI2OCwKLQkweDAwMTYsIDB4MDAyNiwgMHg2MjEwLCAweDAwYjYsIDB4MjI1OCwgMHhiYWEwLCAweDAwYmUsIDB4MmMwOCwKLQkweDA4MGMsIDB4ZWU2ZiwgMHgwMDJlLCAweDAwMWUsIDB4MTE3OCwgMHgwODBjLCAweGU2OGIsIDB4MTkwNCwKLQkweGQ4MGEsIDB4MDgwYywgMHhlNjI3LCAweDExMjAsIDB4NjAwNywgMHgwMDA4LCAweDA4MDQsIDB4ZDkzNywKLQkweDYwMDcsIDB4MDAwOSwgMHgwODA0LCAweGQ5MzcsIDB4MDgwYywgMHhlOTA1LCAweDAxMjgsIDB4MDgwYywKLQkweGU2OGIsIDB4MGQ3OCwgMHgwODA0LCAweGQ4MGEsIDB4NjAxNywgMHgxOTAwLCAweDBjODgsIDB4MDgwYywKLQkweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDYxMDYsIDB4MDgwYywgMHhlNWM3LCAweDYwMDcsIDB4MDAwNiwKLQkweDA4MDQsIDB4ZDkzNywgMHg2MDA3LCAweDAwMDcsIDB4MDgwNCwgMHhkOTM3LCAweDA4MGMsIDB4ZWM4MCwKLQkweDE5MDQsIDB4ZGI2ZCwgMHgwODBjLCAweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDAwZDYsIDB4NjYxMCwKLQkweDI2NTgsIDB4YmUwNCwgMHg5Njg0LCAweDAwZmYsIDB4OTA4MiwgMHgwMDA2LCAweDEyMjAsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHg2NmU2LCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNiwKLQkweDAxODgsIDB4OTY4NiwgMHgwMDA0LCAweDAxNzAsIDB4YmUwNCwgMHg5NmI0LCAweDAwZmYsIDB4OTY4NiwKLQkweDAwMDYsIDB4MDE0MCwgMHg5Njg2LCAweDAwMDQsIDB4MDEyOCwgMHg5Njg2LCAweDAwMDUsIDB4MDExMCwKLQkweDAwZGUsIDB4MDQ4MCwgMHgwMGU2LCAweDIwNzEsIDB4MDI2MCwgMHg3MDM0LCAweDkwODQsIDB4MDAwMywKLQkweDExNDAsIDB4NzAzNCwgMHg5MDgyLCAweDAwMTQsIDB4MDIyMCwgMHg3MDMwLCAweDkwODQsIDB4MDAwMywKLQkweDAxMzAsIDB4MDBlZSwgMHg2MDE3LCAweDAwMDAsIDB4NjAyZiwgMHgwMDA3LCAweDAwYjAsIDB4MDBlZSwKLQkweDA4MGMsIDB4ZTZmMywgMHgxMTkwLCAweDk2ODYsIDB4MDAwNiwgMHgxMTQwLCAweDAwMjYsIDB4NjIxMCwKLQkweDIyNTgsIDB4YmFhMCwgMHg5MDBlLCAweDA4MGMsIDB4MzM2NCwgMHgwMDJlLCAweDA4MGMsIDB4Njg0ZiwKLQkweDYwMDcsIDB4MDAwYSwgMHgwMGRlLCAweDA4MDQsIDB4ZDkzNywgMHg2MDA3LCAweDAwMGIsIDB4MDBkZSwKLQkweDA4MDQsIDB4ZDkzNywgMHgwODBjLCAweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDYwMDcsIDB4MDAwMSwKLQkweDA4MDQsIDB4ZDkzNywgMHgwODBjLCAweGVjODAsIDB4MTkwNCwgMHhkYjZkLCAweDA4MGMsIDB4MzQ0YywKLQkweDE5MDQsIDB4ZGI2ZCwgMHgyMDcxLCAweDAyNjAsIDB4NzAzNCwgMHg5MGI0LCAweDAwMDMsIDB4MTk0OCwKLQkweDkwYjIsIDB4MDAxNCwgMHgwYTMwLCAweDcwMzAsIDB4OTA4NCwgMHgwMDAzLCAweDE5MTAsIDB4NjYxMCwKLQkweDI2NTgsIDB4YmUwNCwgMHg5Njg2LCAweDA3MDcsIDB4MDllOCwgMHgwMDI2LCAweDYyMTAsIDB4MjI1OCwKLQkweGJhYTAsIDB4OTAwZSwgMHgwODBjLCAweDMzNjQsIDB4MDAyZSwgMHg2MDA3LCAweDAwMGMsIDB4MjAwMSwKLQkweDAwMDEsIDB4MDgwYywgMHhlZTRlLCAweDA4MDQsIDB4ZDkzNywgMHgwODBjLCAweDZiY2YsIDB4MTE0MCwKLQkweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweDkwODQsIDB4MDAwOSwgMHg5MDg2LCAweDAwMDgsIDB4MTExMCwKLQkweDA4MDQsIDB4ZDc0NSwgMHgwODBjLCAweDZiNmIsIDB4NjYxMCwgMHgyNjU4LCAweGJlMDQsIDB4OTY4NCwKLQkweDAwZmYsIDB4OTA4MiwgMHgwMDA2LCAweDA2YzgsIDB4MTEzOCwgMHgwMDI2LCAweDIwMDEsIDB4MDAwNiwKLQkweDA4MGMsIDB4NjcyNiwgMHgwMDJlLCAweDAwNTAsIDB4OTZiNCwgMHhmZjAwLCAweDg2MzcsIDB4OTY4NiwKLQkweDAwMDQsIDB4MDEyMCwgMHg5Njg2LCAweDAwMDYsIDB4MTkwNCwgMHhkODBhLCAweDA4MGMsIDB4ZTcwMCwKLQkweDExMjAsIDB4NjAwNywgMHgwMDBlLCAweDA4MDQsIDB4ZDkzNywgMHgwMDQ2LCAweDY0MTAsIDB4MjQ1OCwKLQkweGJjYTAsIDB4MDA0NiwgMHgwODBjLCAweDMzMTUsIDB4MDgwYywgMHhkNjVhLCAweDAwNGUsIDB4MDAxNiwKLQkweDkwMDYsIDB4MjAwOSwgMHgxODQ4LCAweDIxMGMsIDB4ZDFhNCwgMHgwMTQ4LCAweDIwMDksIDB4MDAyOSwKLQkweDA4MGMsIDB4ZWE4ZCwgMHg2MDEwLCAweDIwNTgsIDB4YjgwMCwgMHhjMGU1LCAweGI4MDIsIDB4MDAxZSwKLQkweDAwNGUsIDB4NjAwNywgMHgwMDAxLCAweDA4MDQsIDB4ZDkzNywgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDY2ZTYsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgyMGE5LCAweDAwMDQsIDB4MjAxOSwKLQkweDE4MDUsIDB4MjAxMSwgMHgwMjcwLCAweDA4MGMsIDB4YzIwZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAxNWUsIDB4OTAwNSwgMHgwMTY4LCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODIsIDB4MDAwNCwKLQkweDBhMDQsIDB4ZDgwYSwgMHg5NjgyLCAweDAwMDcsIDB4MGEwNCwgMHhkODY2LCAweDA4MDQsIDB4ZDgwYSwKLQkweDYwMTcsIDB4MTkwMCwgMHg2MDA3LCAweDAwMDksIDB4MDgwNCwgMHhkOTM3LCAweDA4MGMsIDB4NmJjZiwKLQkweDExNDAsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsIDB4OTA4NCwgMHgwMDA5LCAweDkwODYsIDB4MDAwOCwKLQkweDExMTAsIDB4MDgwNCwgMHhkNzQ1LCAweDA4MGMsIDB4NmI2YiwgMHg2NjEwLCAweDI2NTgsIDB4YmUwNCwKLQkweDk2ODQsIDB4MDBmZiwgMHgwMDA2LCAweDAwMTYsIDB4OTA4ZSwgMHgwMDAxLCAweDAxMTgsIDB4OTA4ZSwKLQkweDAwMDAsIDB4MTExOCwgMHgwMDFlLCAweDAwMGUsIDB4MDA4MCwgMHgwMDFlLCAweDAwMGUsIDB4OTA4MiwKLQkweDAwMDYsIDB4MDZhMCwgMHgwMTUwLCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNCwKLQkweDAxMjAsIDB4OTY4NiwgMHgwMDA2LCAweDE5MDQsIDB4ZDgwYSwgMHgwODBjLCAweGU3MmUsIDB4MTEzOCwKLQkweDA4MGMsIDB4ZTYyNywgMHgxMTIwLCAweDYwMDcsIDB4MDAxMCwgMHgwODA0LCAweGQ5MzcsIDB4MDA0NiwKLQkweDY0MTAsIDB4MjQ1OCwgMHhiY2EwLCAweDAwNDYsIDB4MDgwYywgMHgzMzE1LCAweDA4MGMsIDB4ZDY1YSwKLQkweDAwNGUsIDB4MDAxNiwgMHg5MDA2LCAweDIwMDksIDB4MTg0OCwgMHgyMTBjLCAweGQxYTQsIDB4MDE0OCwKLQkweDIwMDksIDB4MDAyOSwgMHgwODBjLCAweGVhOGQsIDB4NjAxMCwgMHgyMDU4LCAweGI4MDAsIDB4YzBlNSwKLQkweGI4MDIsIDB4MDAxZSwgMHgwMDRlLCAweDYwMDcsIDB4MDAwMSwgMHgwNDQ4LCAweDA4MGMsIDB4ZTkwNSwKLQkweDAxOTgsIDB4MDAxNiwgMHg5NjhjLCAweDAwZmYsIDB4OTE4NiwgMHgwMDAyLCAweDAxNjAsIDB4OTE4NiwKLQkweDAwMDMsIDB4MDE0OCwgMHgwMDFlLCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNiwKLQkweDA5MjAsIDB4MDgwNCwgMHhkODBhLCAweDAwMWUsIDB4NjAxNywgMHgxOTAwLCAweDYwMDcsIDB4MDAwOSwKLQkweDAwNzAsIDB4MDgwYywgMHgzNDRjLCAweDE5MDQsIDB4ZGI2ZCwgMHgwODBjLCAweGVjODAsIDB4MTkwNCwKLQkweGRiNmQsIDB4MDgwYywgMHhkZDNlLCAweDE5MDQsIDB4ZDgwYSwgMHg2MDA3LCAweDAwMTIsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMDA1LCAweDYwMDcsIDB4MDAwMSwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywgMHg5YWIzLCAweDBjYjAsIDB4NjAwNywKLQkweDAwMDUsIDB4MGM2OCwgMHgwODBjLCAweGVjODAsIDB4MTkwNCwgMHhkYjZkLCAweDA4MGMsIDB4MzQ0YywKLQkweDE5MDQsIDB4ZGI2ZCwgMHgwODBjLCAweGRkM2UsIDB4MTkwNCwgMHhkODBhLCAweDYwMDcsIDB4MDAyMCwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4MDgwYywKLQkweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDYwMDcsIDB4MDAyMywgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDk2MWUsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4MDgwYywgMHhlYzgwLCAweDE5MDQsIDB4ZGI2ZCwKLQkweDA4MGMsIDB4MzQ0YywgMHgxOTA0LCAweGRiNmQsIDB4MDgwYywgMHhkZDNlLCAweDE5MDQsIDB4ZDgwYSwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMGU2LCAweDIwNzEsIDB4MDI2MCwgMHgyYzA4LCAweDIwMTEsIDB4MTgyMCwKLQkweDIyMTQsIDB4NzAzYywgMHg5MjA2LCAweDExZTAsIDB4MjAxMSwgMHgxODFmLCAweDIyMTQsIDB4NzAzOCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MjA2LCAweDExYTAsIDB4NzI0MCwgMHgwODBjLCAweGNmMDksIDB4MDU3MCwKLQkweDIyNjAsIDB4NjAwOCwgMHg5MDg2LCAweGZmZmYsIDB4MDEyMCwgMHg3MjQ0LCAweDYwMDgsIDB4OTIwNiwKLQkweDE1MjgsIDB4NjAyMCwgMHg5MDg2LCAweDAwMDcsIDB4MTUwOCwgMHgwODBjLCAweGIxNmMsIDB4MDRhMCwKLQkweDcyNDQsIDB4OTI4NiwgMHhmZmZmLCAweDAxODAsIDB4MmMwOCwgMHgwODBjLCAweGNmMDksIDB4MDFiMCwKLQkweDIyNjAsIDB4NzI0MCwgMHg2MDA4LCAweDkyMDYsIDB4MTE4OCwgMHg2MDEwLCAweDkxOTAsIDB4MDAwNCwKLQkweDIyMTQsIDB4OTIwNiwgMHgwMWI4LCAweDAwNTAsIDB4NzI0MCwgMHgyYzA4LCAweDkwMDYsIDB4MDgwYywKLQkweGVhNTcsIDB4MTE4MCwgMHg3MjQ0LCAweDkyODYsIDB4ZmZmZiwgMHgwMWIwLCAweDIxNjAsIDB4NjAwNywKLQkweDAwMjYsIDB4NjAxNywgMHgxNzAwLCAweDcyMTQsIDB4OTI5NiwgMHhmZmZmLCAweDExODAsIDB4NjAwNywKLQkweDAwMjUsIDB4MDA2OCwgMHg2MDIwLCAweDkwODYsIDB4MDAwNywgMHgxZDgwLCAweDYwMDQsIDB4OTA4NiwKLQkweDAwMjQsIDB4MTExMCwgMHgwODBjLCAweGIxNmMsIDB4MjE2MCwgMHg2MDA3LCAweDAwMjUsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMGVlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MjAwMSwgMHgwMDAxLCAweDA4MGMsIDB4NjZlNiwgMHgwMTU2LCAweDAwMTYsIDB4MDAyNiwKLQkweDAwMzYsIDB4MjBhOSwgMHgwMDA0LCAweDIwMTksIDB4MTgwNSwgMHgyMDExLCAweDAyNzYsIDB4MDgwYywKLQkweGMyMGUsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDE1ZSwgMHgwMTIwLCAweDYwMDcsIDB4MDAzMSwKLQkweDA4MDQsIDB4ZDkzNywgMHgwODBjLCAweGJlMjEsIDB4MDgwYywgMHg3NzllLCAweDExOTAsIDB4MDAwNiwKLQkweDAwMjYsIDB4MDAzNiwgMHgwODBjLCAweDc3YjgsIDB4MTEzOCwgMHgwODBjLCAweDdhYjYsIDB4MDgwYywKLQkweDYxOWQsIDB4MDgwYywgMHg3NmNkLCAweDAwMTAsIDB4MDgwYywgMHg3NzcyLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwMGUsIDB4MDAwNSwgMHgwODBjLCAweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDA4MGMsIDB4ZGQzZSwKLQkweDE5MDQsIDB4ZDgwYSwgMHg2MTA2LCAweDA4MGMsIDB4ZGQ1YSwgMHgxMTIwLCAweDYwMDcsIDB4MDAyYiwKLQkweDA4MDQsIDB4ZDkzNywgMHg2MDA3LCAweDAwMmMsIDB4MDgwNCwgMHhkOTM3LCAweDA4MGMsIDB4ZWM4MCwKLQkweDE5MDQsIDB4ZGI2ZCwgMHgwODBjLCAweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDA4MGMsIDB4ZGQzZSwKLQkweDE5MDQsIDB4ZDgwYSwgMHg2MTA2LCAweDA4MGMsIDB4ZGQ1ZiwgMHgxMTIwLCAweDYwMDcsIDB4MDAyZSwKLQkweDA4MDQsIDB4ZDkzNywgMHg2MDA3LCAweDAwMmYsIDB4MDgwNCwgMHhkOTM3LCAweDA4MGMsIDB4MzQ0YywKLQkweDE5MDQsIDB4ZGI2ZCwgMHgwMGU2LCAweDAwZDYsIDB4MDBjNiwgMHg2MDEwLCAweDIwNTgsIDB4YjkwNCwKLQkweDkxODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMDYsIDB4MDE1OCwgMHg5MTg0LCAweGZmMDAsIDB4ODAwNywKLQkweDkwODYsIDB4MDAwNiwgMHgwMTI4LCAweDAwY2UsIDB4MDBkZSwgMHgwMGVlLCAweDA4MDQsIDB4ZDkzZSwKLQkweDA4MGMsIDB4NTg0NCwgMHhkMGU0LCAweDA5MDQsIDB4ZGFiOCwgMHgyMDcxLCAweDAyNmMsIDB4NzAxMCwKLQkweDYwM2EsIDB4NzAxNCwgMHg2MDNlLCAweDcxMDgsIDB4NzIwYywgMHgwODBjLCAweDZjMGQsIDB4MDE0MCwKLQkweDYwMTAsIDB4MjA1OCwgMHhiODEwLCAweDkxMDYsIDB4MTExOCwgMHhiODE0LCAweDkyMDYsIDB4MDUxMCwKLQkweDA4MGMsIDB4NmMwOSwgMHgxNWI4LCAweDIwNjksIDB4MTgwMCwgMHg2ODgwLCAweDkyMDYsIDB4MTU5MCwKLQkweDY4N2MsIDB4OTEwNiwgMHgxNTc4LCAweDcyMTAsIDB4MDgwYywgMHhjZjA5LCAweDA1OTAsIDB4MDgwYywKLQkweGRjMmIsIDB4MDU3OCwgMHgwODBjLCAweGViMDksIDB4MDU2MCwgMHg2MjJlLCAweDYwMDcsIDB4MDAzNiwKLQkweDYwMDMsIDB4MDAwMSwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAwY2UsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHg3MjE0LCAweDkyODYsIDB4ZmZmZiwgMHgwMTUwLCAweDA4MGMsIDB4Y2YwOSwKLQkweDAxYzAsIDB4OTI4MCwgMHgwMDAyLCAweDIwMDQsIDB4NzExMCwgMHg5MTA2LCAweDExOTAsIDB4MDhlMCwKLQkweDcyMTAsIDB4MmMwOCwgMHg5MDg1LCAweDAwMDEsIDB4MDgwYywgMHhlYTU3LCAweDJjMTAsIDB4MjE2MCwKLQkweDAxNDAsIDB4MDg5MCwgMHg2MDA3LCAweDAwMzcsIDB4NjAyZiwgMHgwMDA5LCAweDYwMTcsIDB4MTUwMCwKLQkweDA4YjgsIDB4NjAwNywgMHgwMDM3LCAweDYwMmYsIDB4MDAwMywgMHg2MDE3LCAweDE3MDAsIDB4MDg4MCwKLQkweDYwMDcsIDB4MDAxMiwgMHgwODY4LCAweDA4MGMsIDB4MzQ0YywgMHgxOTA0LCAweGRiNmQsIDB4NjAxMCwKLQkweDIwNTgsIDB4YjgwNCwgMHg5MDg0LCAweGZmMDAsIDB4ODAwNywgMHg5MDg2LCAweDAwMDYsIDB4MTkwNCwKLQkweGQ5M2UsIDB4MDBlNiwgMHgwMGQ2LCAweDAwYzYsIDB4MDgwYywgMHg1ODQ0LCAweGQwZTQsIDB4MDkwNCwKLQkweGRiMzAsIDB4MjA2OSwgMHgxODAwLCAweDIwNzEsIDB4MDI2YywgMHg3MDA4LCAweDYwM2EsIDB4NzIwYywKLQkweDYyM2UsIDB4OTI4NiwgMHhmZmZmLCAweDExNTAsIDB4NzIwOCwgMHgwMGM2LCAweDJjMDgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDgwYywgMHhlYTU3LCAweDJjMTAsIDB4MDBjZSwgMHgwNWU4LCAweDA4MGMsIDB4Y2YwOSwKLQkweDA1ZDAsIDB4NzEwOCwgMHg5MjgwLCAweDAwMDIsIDB4MjAwNCwgMHg5MTA2LCAweDE1YTAsIDB4MDBjNiwKLQkweDAwMjYsIDB4MjI2MCwgMHgwODBjLCAweGNhZGMsIDB4MDAyZSwgMHgwMGNlLCAweDcxMTgsIDB4OTE4YywKLQkweGZmMDAsIDB4ODEwZiwgMHg5MTg2LCAweDAwMDEsIDB4MDE3OCwgMHg5MTg2LCAweDAwMDUsIDB4MDExOCwKLQkweDkxODYsIDB4MDAwNywgMHgxMTk4LCAweDkyODAsIDB4MDAwNSwgMHgyMDA0LCAweDkwMDUsIDB4MDE3MCwKLQkweDA4MGMsIDB4ZGMyYiwgMHgwOTA0LCAweGRhYjEsIDB4MDA1NiwgMHg3NTEwLCAweDc2MTQsIDB4MDgwYywKLQkweGViMjIsIDB4MDA1ZSwgMHgwMGNlLCAweDAwZGUsIDB4MDBlZSwgMHgwMDA1LCAweDYwMDcsIDB4MDAzYiwKLQkweDYwMmYsIDB4MDAwOSwgMHg2MDE3LCAweDJhMDAsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4ODAyMCwKLQkweDA4MGMsIDB4OTYxNywgMHgwYzc4LCAweDYwMDcsIDB4MDAzYiwgMHg2MDJmLCAweDAwMDMsIDB4NjAxNywKLQkweDAzMDAsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk2MTcsIDB4MGMxMCwKLQkweDYwMDcsIDB4MDAzYiwgMHg2MDJmLCAweDAwMGIsIDB4NjAxNywgMHgwMDAwLCAweDA4MDQsIDB4ZGE4OCwKLQkweDAwZTYsIDB4MDAyNiwgMHgwODBjLCAweDZiY2YsIDB4MDU1MCwgMHgwODBjLCAweDZiNmIsIDB4MDgwYywKLQkweGVjZjEsIDB4MTUxOCwgMHgyMDcxLCAweDE4MDAsIDB4NzBkYywgMHg5MDg1LCAweDAwMDMsIDB4NzBkZSwKLQkweDAwZjYsIDB4MjA3OSwgMHgwMTAwLCAweDcyYjAsIDB4OTI4NCwgMHgwMGZmLCAweDcwN2UsIDB4NzhlNiwKLQkweDkyODQsIDB4ZmYwMCwgMHg3MjgwLCAweDkyMDUsIDB4NzA4MiwgMHg3OGVhLCAweDAwZmUsIDB4NzBlNywKLQkweDAwMDAsIDB4MDgwYywgMHg2YzBkLCAweDAxMjAsIDB4MjAxMSwgMHgxYTBhLCAweDIwMTMsIDB4MDdkMCwKLQkweGQwYWMsIDB4MTEyOCwgMHgwODBjLCAweDMwYmYsIDB4MDAxMCwgMHgwODBjLCAweGVkMjUsIDB4MDAyZSwKLQkweDAwZWUsIDB4MDgwYywgMHhiMTZjLCAweDA4MDQsIDB4ZDkzZCwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwKLQkweDI2MDAsIDB4MDAwMiwgMHhkYjg0LCAweGRiYjIsIDB4ZGJjMywgMHhkYjg0LCAweGRiODQsIDB4ZGI4NiwKLQkweGRiZDQsIDB4ZGI4NCwgMHhkYjg0LCAweGRiODQsIDB4ZGJhMCwgMHhkYjg0LCAweGRiODQsIDB4ZGI4NCwKLQkweGRiZGYsIDB4ZGJmNSwgMHhkYzI2LCAweGRiODQsIDB4MDgwYywgMHgwZDg1LCAweDA4MGMsIDB4ZWM4MCwKLQkweDFkMjAsIDB4MDgwYywgMHgzNDRjLCAweDFkMDgsIDB4NzAzOCwgMHg2MDE2LCAweDYwMDcsIDB4MDA0NSwKLQkweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDAwNSwgMHgwODBjLCAweDMzMTUsIDB4MDgwYywKLQkweGQ2NWEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDAwNSwKLQkweDA4MGMsIDB4ZWM4MCwgMHgxOTUwLCAweDA4MGMsIDB4MzQ0YywgMHgxOTM4LCAweDA4MGMsIDB4ZGQzZSwKLQkweDFkNjAsIDB4NzAzYywgMHg2MDE2LCAweDYwMDcsIDB4MDA0YSwgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDk2MWUsIDB4MDAwNSwgMHgwODBjLCAweDM0NGMsIDB4MTkwNCwgMHhkYjZkLCAweDIwMDksIDB4MDA0MSwKLQkweDA4MGMsIDB4ZWQyZSwgMHg2MDA3LCAweDAwNDcsIDB4NjAwMywgMHgwMDAxLCAweDA4MGMsIDB4OTYxZSwKLQkweDA4MGMsIDB4OWFiMywgMHgwMDA1LCAweDA4MGMsIDB4MzQ0YywgMHgxOTA0LCAweGRiNmQsIDB4MjAwOSwKLQkweDAwNDIsIDB4MDgwYywgMHhlZDJlLCAweDYwMDcsIDB4MDA0NywgMHg2MDAzLCAweDAwMDEsIDB4MDgwYywKLQkweDk2MWUsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4MDgwYywgMHgzNDRjLCAweDE5MDQsIDB4ZGI2ZCwKLQkweDIwMDksIDB4MDA0NiwgMHgwODBjLCAweGVkMmUsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MjAwMSwKLQkweDE4MjQsIDB4MjAwNCwgMHg5MDgyLCAweDAwZTEsIDB4MTI2OCwgMHgwODBjLCAweGRjNDgsIDB4MDkwNCwKLQkweGRiNmQsIDB4NjAwNywgMHgwMDRlLCAweDYwMDMsIDB4MDAwMSwgMHgwODBjLCAweDk2MWUsIDB4MDgwYywKLQkweDlhYjMsIDB4MDAwNSwgMHg2MDA3LCAweDAwMTIsIDB4MGNiMCwgMHg2MDA3LCAweDAwNGYsIDB4NjAxNywKLQkweDAwMDAsIDB4NzEzNCwgMHg5MThjLCAweDAwZmYsIDB4ODFmZiwgMHgwNTA4LCAweDkxODYsIDB4MDAwMSwKLQkweDExNjAsIDB4NzE0MCwgMHgyMDAxLCAweDE5YmUsIDB4MjAwNCwgMHg5MTA2LCAweDExYjAsIDB4NzE0NCwKLQkweDIwMDEsIDB4MTliZiwgMHgyMDA0LCAweDkxMDYsIDB4MDE5MCwgMHg5MTg2LCAweDAwMDIsIDB4MTE2OCwKLQkweDIwMTEsIDB4MDI3NiwgMHgyMGE5LCAweDAwMDQsIDB4NjAxMCwgMHgwMDk2LCAweDIwNDgsIDB4MjAxOSwKLQkweDAwMGEsIDB4MDgwYywgMHhjMjIyLCAweDAwOWUsIDB4MDExMCwgMHg2MDE3LCAweDAwMDEsIDB4NjAwMywKLQkweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMDA1LCAweDYwMDcsIDB4MDA1MCwKLQkweDcwM2MsIDB4NjAxNiwgMHgwY2EwLCAweDAwMTYsIDB4MDBlNiwgMHgyMDcxLCAweDAyNjAsIDB4MDBiNiwKLQkweDAwYzYsIDB4MjI2MCwgMHg2MDEwLCAweDIwNTgsIDB4YjhkNCwgMHhkMDg0LCAweDAxNTAsIDB4NzEyOCwKLQkweDYwNGMsIDB4OTEwNiwgMHgxMTIwLCAweDcxMmMsIDB4NjA1MCwgMHg5MTA2LCAweDAxMTAsIDB4OTAwNiwKLQkweDAwMTAsIDB4OTA4NSwgMHgwMDAxLCAweDAwY2UsIDB4MDBiZSwgMHgwMGVlLCAweDAwMWUsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDA5NiwgMHgwMDg2LCAweDAwZTYsIDB4MDFjNiwgMHgwMWQ2LCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MjA3MSwgMHgxODAwLCAweDIwZTEsIDB4MDAwMCwgMHgyMDAxLCAweDE5YTEsIDB4MjAwMywKLQkweDAwMDAsIDB4MDgwYywgMHgxMDcyLCAweDA1YTAsIDB4MjkwMCwgMHg2MDE2LCAweDcwOTAsIDB4ODAwNCwKLQkweGE4MTYsIDB4OTA4YSwgMHgwMDFlLCAweDAyZDAsIDB4YTgzMywgMHgwMDFlLCAweDIwYTksIDB4MDAxZSwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAxYiwgMHgyMGEwLCAweDIwMDEsIDB4MTlhMSwKLQkweDAwMTYsIDB4MjAwYywgMHgwNDcxLCAweDAwMWUsIDB4ODFmZiwgMHgwMWI4LCAweDI5NDAsIDB4MDgwYywKLQkweDEwNzIsIDB4MDFiMCwgMHgyOTAwLCAweGEwMDYsIDB4MjEwMCwgMHgwYzE4LCAweGE4MzIsIDB4MjBhOCwKLQkweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAxYiwgMHgyMGEwLCAweDIwMDEsIDB4MTlhMSwKLQkweDAwMTYsIDB4MjAwYywgMHgwMGIxLCAweDAwMWUsIDB4MDAwMCwgMHg5MDg1LCAweDAwMDEsIDB4MDA0OCwKLQkweDIwNzEsIDB4MTgwMCwgMHg3MDkzLCAweDAwMDAsIDB4NjAxNCwgMHgyMDQ4LCAweDA4MGMsIDB4MTAwYiwKLQkweDkwMDYsIDB4MDEyZSwgMHgwMWRlLCAweDAxY2UsIDB4MDBlZSwgMHgwMDhlLCAweDAwOWUsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDAwNiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMGM2LCAweDkxOGMsIDB4ZmZmZiwKLQkweDExYjAsIDB4MDgwYywgMHgyMWY5LCAweDIwOTksIDB4MDI2YywgMHgyMDAxLCAweDAwMTQsIDB4MzUxOCwKLQkweDkzMTIsIDB4MDEwOCwgMHgxMjE4LCAweDIzYTgsIDB4NDAwMywgMHgwNDAwLCAweDIwYTgsIDB4NDAwMywKLQkweDIyYTgsIDB4ODEwOCwgMHgwODBjLCAweDIxZjksIDB4MjA5OSwgMHgwMjYwLCAweDBjYTgsIDB4MDgwYywKLQkweDIxZjksIDB4MjA2MSwgMHgxOWExLCAweDYwMDQsIDB4MjA5OCwgMHg2MDA4LCAweDM1MTgsIDB4OTMxMiwKLQkweDAxMDgsIDB4MTIxOCwgMHgyM2E4LCAweDQwMDMsIDB4MDA0OCwgMHgyMGE4LCAweDQwMDMsIDB4MjJhOCwKLQkweDgxMDgsIDB4MDgwYywgMHgyMWY5LCAweDIwOTksIDB4MDI2MCwgMHgwY2E4LCAweDIwNjEsIDB4MTlhMSwKLQkweDIwMTksIDB4MDI4MCwgMHgzMzAwLCAweDkzMWUsIDB4MDExMCwgMHg2MDA2LCAweDAwMjAsIDB4MjAwMSwKLQkweDAyNjAsIDB4NjAwNiwgMHg4MTA4LCAweDIxNjIsIDB4OTI5MiwgMHgwMDIxLCAweDkyOTYsIDB4ZmZmZiwKLQkweDYyMGEsIDB4MDBjZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwMDUsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAwYzYsIDB4ODFmZiwgMHgxMWI4LCAweDA4MGMsIDB4MjIxMSwKLQkweDIwYTEsIDB4MDI0YywgMHgyMDAxLCAweDAwMTQsIDB4MzUxOCwgMHg5MzEyLCAweDEyMTgsIDB4MjNhOCwKLQkweDQwMDMsIDB4MDQxOCwgMHgyMGE4LCAweDQwMDMsIDB4ODJmZiwgMHgwMWY4LCAweDIyYTgsIDB4ODEwOCwKLQkweDA4MGMsIDB4MjIxMSwgMHgyMGExLCAweDAyNDAsIDB4MGM5OCwgMHgwODBjLCAweDIyMTEsIDB4MjA2MSwKLQkweDE5YTQsIDB4NjAwNCwgMHgyMGEwLCAweDYwMDgsIDB4MzUxOCwgMHg5MzEyLCAweDEyMTgsIDB4MjNhOCwKLQkweDQwMDMsIDB4MDA1OCwgMHgyMGE4LCAweDQwMDMsIDB4ODJmZiwgMHgwMTM4LCAweDIyYTgsIDB4ODEwOCwKLQkweDA4MGMsIDB4MjIxMSwgMHgyMGExLCAweDAyNDAsIDB4MGM5OCwgMHgyMDYxLCAweDE5YTQsIDB4MjAxOSwKLQkweDAyNjAsIDB4MzQwMCwgMHg5MzFlLCAweDAxMTAsIDB4NjAwNiwgMHgwMDIwLCAweDIwMDEsIDB4MDI0MCwKLQkweDYwMDYsIDB4ODEwOCwgMHgyMTYyLCAweDkyOTIsIDB4MDAyMSwgMHg5Mjk2LCAweGZmZmYsIDB4NjIwYSwKLQkweDAwY2UsIDB4MDAzZSwgMHgwMDJlLCAweDAwMWUsIDB4MDAwZSwgMHgwMDA1LCAweDAwYjYsIDB4MDA2NiwKLQkweDY2MTAsIDB4MjY1OCwgMHhiZTA0LCAweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNiwKLQkweDAxNzAsIDB4OTY4NiwgMHgwMDA0LCAweDAxNTgsIDB4YmUwNCwgMHg5NmI0LCAweDAwZmYsIDB4OTY4NiwKLQkweDAwMDYsIDB4MDEyOCwgMHg5Njg2LCAweDAwMDQsIDB4MDExMCwgMHg5MDg1LCAweDAwMDEsIDB4MDA2ZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgwMGQ2LCAweDA4MGMsIDB4ZGRkNCwgMHgwMGRlLCAweDAwMDUsIDB4MDBkNiwKLQkweDA4MGMsIDB4ZGRlMSwgMHgxNTIwLCAweDY4MGMsIDB4OTA4YywgMHhmZjAwLCAweDY4MjAsIDB4OTA4NCwKLQkweDAwZmYsIDB4OTExNSwgMHg2MjE2LCAweDY4MjQsIDB4NjAyZSwgMHhkMWU0LCAweDAxMzAsIDB4OTAwNiwKLQkweDA4MGMsIDB4ZWU0ZSwgMHgyMDA5LCAweDAwMDEsIDB4MDA3OCwgMHhkMWVjLCAweDAxODAsIDB4NjkyMCwKLQkweDkxOGMsIDB4MDBmZiwgMHg2ODI0LCAweDA4MGMsIDB4MjY4YywgMHgxMTQ4LCAweDIwMDEsIDB4MDAwMSwKLQkweDA4MGMsIDB4ZWU0ZSwgMHgyMTEwLCAweDkwMGUsIDB4MDgwYywgMHgzMzY0LCAweDAwMTgsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwOCwgMHg5MDA2LCAweDAwZGUsIDB4MDAwNSwgMHgwMGI2LCAweDAwYzYsIDB4MDgwYywKLQkweGIxZGQsIDB4MDU5OCwgMHgwMDE2LCAweDAwMjYsIDB4MDBjNiwgMHgyMDExLCAweDAyNjMsIDB4MjIwNCwKLQkweDgyMTEsIDB4MjIwYywgMHgwODBjLCAweDI2OGMsIDB4MTU2OCwgMHgwODBjLCAweDY3NDksIDB4MTU1MCwKLQkweGJlMTIsIDB4YmQxNiwgMHgwMGNlLCAweDAwMmUsIDB4MDAxZSwgMHgyYjAwLCAweDYwMTIsIDB4MDgwYywKLQkweGVjODAsIDB4MTFjOCwgMHgwODBjLCAweDM0NGMsIDB4MTFiMCwgMHgwODBjLCAweGRkM2UsIDB4MDUwMCwKLQkweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY2ZmEsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjcyNiwKLQkweDYwMTcsIDB4MDAwMCwgMHg2MDIzLCAweDAwMDEsIDB4NjAwNywgMHgwMDAxLCAweDYwMDMsIDB4MDAwMSwKLQkweDA4MGMsIDB4OTYxZSwgMHgwMDEwLCAweDA4MGMsIDB4YjE2YywgMHg5MDg1LCAweDAwMDEsIDB4MDBjZSwKLQkweDAwYmUsIDB4MDAwNSwgMHgwODBjLCAweGIxNmMsIDB4MDBjZSwgMHgwMDJlLCAweDAwMWUsIDB4MGNhOCwKLQkweDA4MGMsIDB4YjE2YywgMHg5MDA2LCAweDBjOTgsIDB4MjA2OSwgMHgwMjZkLCAweDY4MDAsIDB4OTA4MiwKLQkweDAwMTAsIDB4MTIyOCwgMHg2MDE3LCAweDAwMDAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4OTAwNiwKLQkweDAwMDUsIDB4NjAxNywgMHgwMDAwLCAweDIwNjksIDB4MDI2YywgMHg2ODA4LCAweDkwODQsIDB4ZmYwMCwKLQkweDkwODYsIDB4MDgwMCwgMHgxMTkwLCAweDY5MDQsIDB4OTE4NiwgMHgwMDE4LCAweDAxMTgsIDB4OTE4NiwKLQkweDAwMTQsIDB4MTE1OCwgMHg4MTBmLCAweDY4MDAsIDB4OTA4NCwgMHgwMGZmLCAweDkxMGQsIDB4NjE2MiwKLQkweDkwOGUsIDB4MDAxNCwgMHgwMTEwLCAweDkwOGUsIDB4MDAxMCwgMHgwMDA1LCAweDYwMDQsIDB4OTBiMiwKLQkweDAwNTMsIDB4MWEwYywgMHgwZDg1LCAweDkxYjYsIDB4MDAxMywgMHgxMTMwLCAweDIwMDgsIDB4OTFiMiwKLQkweDAwNDAsIDB4MWEwNCwgMHhkZjM2LCAweDA0MDIsIDB4OTFiNiwgMHgwMDI3LCAweDAxOTAsIDB4OTE4NiwKLQkweDAwMTUsIDB4MDExOCwgMHg5MTg2LCAweDAwMTYsIDB4MTE0MCwgMHgwODBjLCAweGFmNjEsIDB4MDEyMCwKLQkweDkwODYsIDB4MDAwMiwgMHgwOTA0LCAweGJiYTMsIDB4MDAwNSwgMHg5MWI2LCAweDAwMTQsIDB4MTkwYywKLQkweDBkODUsIDB4MjAwMSwgMHgwMDA3LCAweDA4MGMsIDB4NjcyNiwgMHgwODBjLCAweDk5ZWQsIDB4MDgwYywKLQkweGIxYTcsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4ZGU2YywgMHhkZTZlLCAweGRlNmMsIDB4ZGU2YywKLQkweGRlNmMsIDB4ZGU2ZSwgMHhkZTdiLCAweGRmMzMsIDB4ZGViZCwgMHhkZjMzLCAweGRlZTEsIDB4ZGYzMywKLQkweGRlN2IsIDB4ZGYzMywgMHhkZjJiLCAweGRmMzMsIDB4ZGYyYiwgMHhkZjMzLCAweGRmMzMsIDB4ZGU2YywKLQkweGRlNmMsIDB4ZGU2YywgMHhkZTZjLCAweGRlNmMsIDB4ZGU2YywgMHhkZTZjLCAweGRlNmMsIDB4ZGU2YywKLQkweGRlNmMsIDB4ZGU2YywgMHhkZTZlLCAweGRlNmMsIDB4ZGYzMywgMHhkZTZjLCAweGRlNmMsIDB4ZGYzMywKLQkweGRlNmMsIDB4ZGYzMCwgMHhkZjMzLCAweGRlNmMsIDB4ZGU2YywgMHhkZTZjLCAweGRlNmMsIDB4ZGYzMywKLQkweGRmMzMsIDB4ZGU2YywgMHhkZjMzLCAweGRmMzMsIDB4ZGU2YywgMHhkZTc2LCAweGRlNmMsIDB4ZGU2YywKLQkweGRlNmMsIDB4ZGU2YywgMHhkZjJmLCAweGRmMzMsIDB4ZGU2YywgMHhkZTZjLCAweGRmMzMsIDB4ZGYzMywKLQkweGRlNmMsIDB4ZGU2YywgMHhkZTZjLCAweGRlNmMsIDB4MDgwYywgMHgwZDg1LCAweDA4MGMsIDB4ZDY1ZCwKLQkweDYwMDMsIDB4MDAwMiwgMHgwODBjLCAweDlhYjMsIDB4MDgwNCwgMHhkZjM1LCAweDkwMDYsIDB4MDgwYywKLQkweDY2ZTYsIDB4MDgwNCwgMHhkZjMzLCAweDA4MGMsIDB4NmMwOSwgMHgxOTA0LCAweGRmMzMsIDB4OTAwNiwKLQkweDA4MGMsIDB4NjZlNiwgMHg2MDEwLCAweDIwNTgsIDB4YjgxMCwgMHg5MDg2LCAweDAwZmYsIDB4MTE0MCwKLQkweDAwZjYsIDB4MjA3OSwgMHgxODAwLCAweDc4YTgsIDB4ODAwMCwgMHg3OGFhLCAweDAwZmUsIDB4MDBiOCwKLQkweDYwMTAsIDB4MjA1OCwgMHhiODg0LCAweDkwMDUsIDB4MDkwNCwgMHhkZjMzLCAweDA4MGMsIDB4MzQ3ZCwKLQkweDE5MDQsIDB4ZGYzMywgMHgyMDAxLCAweDE4MDAsIDB4MjAwNCwgMHg5MDg2LCAweDAwMDIsIDB4MTEzOCwKLQkweDAwZjYsIDB4MjA3OSwgMHgxODAwLCAweDc4YTgsIDB4ODAwMCwgMHg3OGFhLCAweDAwZmUsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDgwYywgMHg2NmZhLCAweDYwMjMsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHg2MTEwLCAweDIxNTgsIDB4MjAwOSwKLQkweDAwMDEsIDB4MDgwYywgMHg4OWExLCAweDA4MDQsIDB4ZGYzNSwgMHg2NjEwLCAweDI2NTgsIDB4YmUwNCwKLQkweDk2YjQsIDB4ZmYwMCwgMHg4NjM3LCAweDk2ODYsIDB4MDAwNiwgMHgwMTQ4LCAweDk2ODYsIDB4MDAwNCwKLQkweDAxMzAsIDB4MDgwYywgMHg5MjI4LCAweDIwMDEsIDB4MDAwNCwgMHgwODBjLCAweDY3MjYsIDB4MDgwYywKLQkweGVlOWQsIDB4MDkwNCwgMHhkZjMzLCAweDIwMDEsIDB4MDAwNCwgMHgwODBjLCAweDY2ZmEsIDB4NjAyMywKLQkweDAwMDEsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDAwMywgMHgwODBjLCAweDk2MWUsIDB4MDgwNCwKLQkweGRmMzUsIDB4MjAwMSwgMHgxODAwLCAweDIwMDQsIDB4OTA4NiwgMHgwMDAzLCAweDExNTgsIDB4MDAzNiwKLQkweDAwNDYsIDB4NjAxMCwgMHgyMDU4LCAweGJiYTAsIDB4MjAyMSwgMHgwMDA2LCAweDA4MGMsIDB4NGU1OCwKLQkweDAwNGUsIDB4MDAzZSwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywgMHhkZjRmLCAweDY2MTAsIDB4MjY1OCwKLQkweGJlMDQsIDB4MDA2NiwgMHg5NmI0LCAweGZmMDAsIDB4ODYzNywgMHg5Njg2LCAweDAwMDYsIDB4MDA2ZSwKLQkweDAxODAsIDB4MjAwMSwgMHgwMDA2LCAweDA4MGMsIDB4NjcyNiwgMHg5Mjg0LCAweDAwZmYsIDB4OTA4ZSwKLQkweDAwMDcsIDB4MDExOCwgMHg5MDhlLCAweDAwMDQsIDB4MTEyMCwgMHgyMDAxLCAweDAwMDYsIDB4MDgwYywKLQkweDY2ZmEsIDB4MDgwYywgMHg2YzA5LCAweDExZjgsIDB4MjAwMSwgMHgxODM3LCAweDIwMDQsIDB4ZDBhNCwKLQkweDAxZDAsIDB4YmUwNCwgMHg5NmI0LCAweDAwZmYsIDB4OTY4NiwgMHgwMDA2LCAweDAxYTAsIDB4MDBmNiwKLQkweDIwNzksIDB4MTgwMCwgMHg3OGE4LCAweDgwMDAsIDB4NzhhYSwgMHgwMGZlLCAweDA4MDQsIDB4ZGVhNywKLQkweDIwMDEsIDB4MDAwNCwgMHgwMDMwLCAweDIwMDEsIDB4MDAwNiwgMHgwNDA5LCAweDAwMjAsIDB4MDAxOCwKLQkweDAwMTAsIDB4MDgwYywgMHg2NzI2LCAweDA4MGMsIDB4YjE2YywgMHgwMDA1LCAweDI2MDAsIDB4MDAwMiwKLQkweGRmNGEsIDB4ZGY0YSwgMHhkZjRhLCAweGRmNGEsIDB4ZGY0YSwgMHhkZjRjLCAweGRmNGEsIDB4ZGY0YywKLQkweGRmNGEsIDB4ZGY0YSwgMHhkZjRjLCAweGRmNGEsIDB4ZGY0YSwgMHhkZjRhLCAweGRmNGMsIDB4ZGY0YywKLQkweGRmNGMsIDB4ZGY0YywgMHgwODBjLCAweDBkODUsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDAxNiwKLQkweDAwYjYsIDB4MDBkNiwgMHg2MTEwLCAweDIxNTgsIDB4YjkwMCwgMHhkMTg0LCAweDAxMzgsIDB4MDgwYywKLQkweDY2ZmEsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4MDgwYywgMHgzMzQ0LCAweDAwZGUsIDB4MDBiZSwKLQkweDAwMWUsIDB4MDAwNSwgMHg2NjEwLCAweDI2NTgsIDB4YjgwNCwgMHg5MDg0LCAweGZmMDAsIDB4ODAwNywKLQkweDkwYjIsIDB4MDAwYywgMHgxYTBjLCAweDBkODUsIDB4OTFiNiwgMHgwMDE1LCAweDExMTAsIDB4MDAzYiwKLQkweDAwMjgsIDB4OTFiNiwgMHgwMDE2LCAweDE5MGMsIDB4MGQ4NSwgMHgwMDZiLCAweDAwMDUsIDB4YmM0NSwKLQkweGJjNDUsIDB4YmM0NSwgMHhiYzQ1LCAweGRmZTQsIDB4YmM0NSwgMHhkZmNlLCAweGRmOGYsIDB4YmM0NSwKLQkweGJjNDUsIDB4YmM0NSwgMHhiYzQ1LCAweGJjNDUsIDB4YmM0NSwgMHhiYzQ1LCAweGJjNDUsIDB4ZGZlNCwKLQkweGJjNDUsIDB4ZGZjZSwgMHhkZmQ1LCAweGJjNDUsIDB4YmM0NSwgMHhiYzQ1LCAweGJjNDUsIDB4MDBmNiwKLQkweDA4MGMsIDB4NmMwOSwgMHgxMWQ4LCAweDA4MGMsIDB4ZDY0NSwgMHgxMWMwLCAweDYwMTAsIDB4OTA1ZCwKLQkweDAxYTgsIDB4Yjg4NCwgMHg5MDA1LCAweDAxOTAsIDB4OTAwNiwgMHgwODBjLCAweDY2ZTYsIDB4MjAwMSwKLQkweDAwMDIsIDB4MDgwYywgMHg2NmZhLCAweDYwMjMsIDB4MDAwMSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwMDIsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywgMHgwMGYwLCAweDIwMTEsIDB4MDI2MywKLQkweDIyMDQsIDB4ODIxMSwgMHgyMjBjLCAweDA4MGMsIDB4MjY4YywgMHgxMWIwLCAweDA4MGMsIDB4NjdiNCwKLQkweDAxMTgsIDB4MDgwYywgMHhiMTZjLCAweDAwODAsIDB4YjgxMCwgMHgwMDA2LCAweGI4MTQsIDB4MDAwNiwKLQkweGI4ODQsIDB4MDAwNiwgMHgwODBjLCAweDYxYjcsIDB4MDAwZSwgMHhiODg2LCAweDAwMGUsIDB4YjgxNiwKLQkweDAwMGUsIDB4YjgxMiwgMHgwODBjLCAweGIxNmMsIDB4MDBmZSwgMHgwMDA1LCAweDY2MDQsIDB4OTZiNiwKLQkweDAwMWUsIDB4MTExMCwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwgMHgwODBjLCAweGMwODIsIDB4MTE0OCwKLQkweDYwMDMsIDB4MDAwMSwgMHg2MDA3LCAweDAwMDEsIDB4MDgwYywgMHg5NjFlLCAweDA4MGMsIDB4OWFiMywKLQkweDAwMTAsIDB4MDgwYywgMHhiMTZjLCAweDAwMDUsIDB4MDgwNCwgMHhiMTZjLCAweDYwMDQsIDB4OTA4YSwKLQkweDAwNTMsIDB4MWEwYywgMHgwZDg1LCAweDA4MGMsIDB4OTllZCwgMHgwODBjLCAweGIxYTcsIDB4MDAwNSwKLQkweDkxODIsIDB4MDA0MCwgMHgwMDAyLCAweGUwMDcsIDB4ZTAwNywgMHhlMDA3LCAweGUwMDcsIDB4ZTAwOSwKLQkweGUwMDcsIDB4ZTAwNywgMHhlMDA3LCAweGUwMDcsIDB4ZTAwNywgMHhlMDA3LCAweGUwMDcsIDB4ZTAwNywKLQkweGUwMDcsIDB4ZTAwNywgMHhlMDA3LCAweGUwMDcsIDB4ZTAwNywgMHhlMDA3LCAweGUwMDcsIDB4MDgwYywKLQkweDBkODUsIDB4MDA5NiwgMHgwMGI2LCAweDAwZDYsIDB4MDBlNiwgMHgwMGY2LCAweDAwNDYsIDB4MDAyNiwKLQkweDYyMTAsIDB4MjI1OCwgMHhiOGJjLCAweDkwMDUsIDB4MTFiMCwgMHg2MDA3LCAweDAwNDQsIDB4MjA3MSwKLQkweDAyNjAsIDB4NzQ0NCwgMHg5NGE0LCAweGZmMDAsIDB4MDkwNCwgMHhlMDcwLCAweDA4MGMsIDB4ZWU0MiwKLQkweDExNzAsIDB4OTQ4NiwgMHgyMDAwLCAweDExNTgsIDB4MjAwOSwgMHgwMDAxLCAweDIwMTEsIDB4MDIwMCwKLQkweDA4MGMsIDB4OGM0NCwgMHgwMDIwLCAweDkwMjYsIDB4MDgwYywgMHhlY2M1LCAweDBjMzAsIDB4MDgwYywKLQkweDEwNTksIDB4MDkwYywgMHgwZDg1LCAweDYwMDMsIDB4MDAwNywgMHhhODY3LCAweDAxMGQsIDB4OTAwNiwKLQkweGE4MDIsIDB4YTg2YSwgMHhhYzhhLCAweDJjMDAsIDB4YTg4ZSwgMHg2MDA4LCAweGE4ZTIsIDB4NjAxMCwKLQkweDIwNTgsIDB4YjhhMCwgMHg3MTMwLCAweGE5N2EsIDB4MDAxNiwgMHhhODc2LCAweGE4N2YsIDB4MDAwMCwKLQkweGE4ODMsIDB4MDAwMCwgMHhhODg3LCAweDAwMzYsIDB4MDgwYywgMHg3MDEyLCAweDAwMWUsIDB4MDgwYywKLQkweGVlNDIsIDB4MTkwNCwgMHhlMGQwLCAweDk0ODYsIDB4MjAwMCwgMHgxMTMwLCAweDIwMTksIDB4MDAxNywKLQkweDA4MGMsIDB4ZTlmOSwgMHgwODA0LCAweGUwZDAsIDB4OTQ4NiwgMHgwMjAwLCAweDExMjAsIDB4MDgwYywKLQkweGU5ODQsIDB4MDgwNCwgMHhlMGQwLCAweDk0ODYsIDB4MDQwMCwgMHgwMTIwLCAweDk0ODYsIDB4MTAwMCwKLQkweDE5MDQsIDB4ZTBkMCwgMHgyMDE5LCAweDAwMDIsIDB4MDgwYywgMHhlOWEzLCAweDA4MDQsIDB4ZTBkMCwKLQkweDIwNjksIDB4MWE3MywgMHg2YTAwLCAweGQyODQsIDB4MDkwNCwgMHhlMTNhLCAweDkyODQsIDB4MDMwMCwKLQkweDE5MDQsIDB4ZTEzMywgMHg2ODA0LCAweDkwMDUsIDB4MDkwNCwgMHhlMTFiLCAweDJkNzgsIDB4NjAwMywKLQkweDAwMDcsIDB4MDgwYywgMHgxMDcyLCAweDA5MDQsIDB4ZTBkYywgMHg3ODAwLCAweGQwOGMsIDB4MTExOCwKLQkweDc4MDQsIDB4ODAwMSwgMHg3ODA2LCAweDYwMTcsIDB4MDAwMCwgMHgyMDAxLCAweDE4MGYsIDB4MjAwNCwKLQkweGQwODQsIDB4MTkwNCwgMHhlMTNlLCAweDkwMDYsIDB4YTgwMiwgMHhhODY3LCAweDAxMTYsIDB4YTg2YSwKLQkweDYwMDgsIDB4YThlMiwgMHgyYzAwLCAweGE4N2EsIDB4NjAxMCwgMHgyMDU4LCAweGI4YTAsIDB4NzEzMCwKLQkweGE5YjYsIDB4YTg3NiwgMHhiOTI4LCAweGE5YmEsIDB4YjkyYywgMHhhOWJlLCAweGI5MzAsIDB4YTljMiwKLQkweGI5MzQsIDB4YTljNiwgMHhhODgzLCAweDAwM2QsIDB4NzA0NCwgMHg5MDg0LCAweDAwMDMsIDB4OTA4MCwKLQkweGUwZDgsIDB4MjAwNSwgMHhhODdlLCAweDIwYTksIDB4MDAwYSwgMHgyMDAxLCAweDAyNzAsIDB4YWE1YywKLQkweDkyOTAsIDB4MDAyMSwgMHgyMDA5LCAweDAyMDUsIDB4MjAwYiwgMHgwMDgwLCAweDIwZTEsIDB4MDAwMCwKLQkweGFiNjAsIDB4MjNlOCwgMHgyMDk4LCAweDIyYTAsIDB4NDAwMywgMHgyMDBiLCAweDAwMDAsIDB4MjAwMSwKLQkweDAyN2EsIDB4MjAwYywgMHhhOWIyLCAweDgwMDAsIDB4MjAwYywgMHhhOWFlLCAweDA4MGMsIDB4NzAxNSwKLQkweDAwMmUsIDB4MDA0ZSwgMHgwMGZlLCAweDAwZWUsIDB4MDBkZSwgMHgwMGJlLCAweDAwOWUsIDB4MDAwNSwKLQkweDAwMDAsIDB4MDA4MCwgMHgwMDQwLCAweDAwMDAsIDB4MjAwMSwgMHgxODEwLCAweDIwMDQsIDB4ZDA4NCwKLQkweDAxMjAsIDB4MDgwYywgMHgxMDU5LCAweDE5MDQsIDB4ZTA4NSwgMHg2MDE3LCAweGYxMDAsIDB4NjAwMywKLQkweDAwMDEsIDB4NjAwNywgMHgwMDQxLCAweDIwMDksIDB4YTAyMiwgMHgwODBjLCAweDk2MTcsIDB4MGMwMCwKLQkweDIwNjksIDB4MDI2MCwgMHg2ODQ4LCAweDkwODQsIDB4ZmYwMCwgMHg5MDg2LCAweDEyMDAsIDB4MTE5OCwKLQkweDY4NmMsIDB4OTA4NCwgMHgwMGZmLCAweDAwMTYsIDB4NjExNCwgMHg5MThjLCAweGY3MDAsIDB4OTEwZCwKLQkweDYxMTYsIDB4MDAxZSwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDQzLCAweDIwMDksIDB4YTAyNSwKLQkweDA4MGMsIDB4OTYxNywgMHgwODI4LCAweDY4NjgsIDB4NjAyZSwgMHg2ODZjLCAweDYwMzIsIDB4NjAxNywKLQkweGYyMDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA0MSwgMHgyMDA5LCAweGEwMjIsIDB4MDgwYywKLQkweDk2MTcsIDB4MDgwNCwgMHhlMGQwLCAweDIwMDEsIDB4MTgwZSwgMHgyMDA0LCAweGQwZWMsIDB4MDEyMCwKLQkweDIwMTEsIDB4ODA0OSwgMHgwODBjLCAweDRjYTEsIDB4NjAxNywgMHhmMzAwLCAweDAwMTAsIDB4NjAxNywKLQkweGYxMDAsIDB4NjAwMywgMHgwMDAxLCAweDYwMDcsIDB4MDA0MSwgMHgyMDA5LCAweGEwMjIsIDB4MDgwYywKLQkweDk2MTcsIDB4MDgwNCwgMHhlMGQwLCAweDYwMTcsIDB4ZjUwMCwgMHgwYzk4LCAweDYwMTcsIDB4ZjYwMCwKLQkweDA4MDQsIDB4ZTBmMCwgMHg2MDE3LCAweGYyMDAsIDB4MDgwNCwgMHhlMGYwLCAweGE4NjcsIDB4MDE0NiwKLQkweGE4NmIsIDB4MDAwMCwgMHg2MDA4LCAweGE4ODYsIDB4MmMwMCwgMHhhODdhLCAweDcwNDQsIDB4OTA4NCwKLQkweDAwMDMsIDB4OTA4MCwgMHhlMGQ4LCAweDIwMDUsIDB4YTg3ZSwgMHgyOTI4LCAweDYwMTAsIDB4MjA1OCwKLQkweGI4YTAsIDB4YTg3NiwgMHhiODI4LCAweGE4OGEsIDB4YjgyYywgMHhhODhlLCAweGI4MzAsIDB4YTg5MiwKLQkweGI4MzQsIDB4YTg5NiwgMHhhODgzLCAweDAwM2QsIDB4MjAwOSwgMHgwMjA1LCAweDIxMDQsIDB4OTA4NSwKLQkweDAwODAsIDB4MjAwYSwgMHgyMGUxLCAweDAwMDAsIDB4MjAxMSwgMHgwMjEwLCAweDIyMTQsIDB4OTI5NCwKLQkweDBmZmYsIDB4YWFhMiwgMHg5MjgyLCAweDAxMTEsIDB4MWEwYywgMHgwZDg1LCAweDgyMTAsIDB4ODIxYywKLQkweDIwMDEsIDB4MDI2YywgMHgyMDk4LCAweGE4NjAsIDB4MjBlOCwgMHhhODVjLCAweDkwODAsIDB4MDAyOSwKLQkweDIwYTAsIDB4MjAxMSwgMHhlMWJhLCAweDIwNDEsIDB4MDAwMSwgMHgyMjNkLCAweDk3ODQsIDB4MDBmZiwKLQkweDkzMjIsIDB4MTIwOCwgMHgyMzAwLCAweDIwYTgsIDB4NDAwMywgMHg5MzFhLCAweDA1MzAsIDB4ODIxMCwKLQkweGQ3ZmMsIDB4MTEzMCwgMHg4ZDY4LCAweDJkMGEsIDB4MjAwMSwgMHgwMjYwLCAweDIwOTgsIDB4MGM2OCwKLQkweDI5NTAsIDB4MDgwYywgMHgxMDcyLCAweDAxNzAsIDB4MjkwMCwgMHhiMDAyLCAweGE4NjcsIDB4MDE0NywKLQkweGE4NmIsIDB4MDAwMCwgMHhhODYwLCAweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMWIsIDB4MjBhMCwKLQkweDg4NDAsIDB4MDhkOCwgMHgyNTQ4LCAweGE4MDAsIDB4OTAyZCwgMHgwMTE4LCAweDA4MGMsIDB4MTA4YiwKLQkweDBjYzgsIDB4MDgwYywgMHgxMDhiLCAweDA4MDQsIDB4ZTBkYywgMHgyNTQ4LCAweDg4NDcsIDB4OTg4NSwKLQkweDAwNDYsIDB4YTg2NiwgMHgyMDA5LCAweDAyMDUsIDB4MjAwYiwgMHgwMDAwLCAweDA4MGMsIDB4ZWEzMCwKLQkweDA4MDQsIDB4ZTBkMCwgMHg4MDEwLCAweDAwMDQsIDB4ODAxYSwgMHgwMDA2LCAweDgwMTgsIDB4MDAwOCwKLQkweDgwMTYsIDB4MDAwYSwgMHg4MDE0LCAweDkxODYsIDB4MDAxMywgMHgxMTYwLCAweDYwMDQsIDB4OTA4YSwKLQkweDAwNTcsIDB4MWEwYywgMHgwZDg1LCAweDkwODIsIDB4MDA0MCwgMHgwYTBjLCAweDBkODUsIDB4MjAwOCwKLQkweDA4MDQsIDB4ZTI0NiwgMHg5MTg2LCAweDAwNTEsIDB4MDEwOCwgMHgwMDQwLCAweDA4MGMsIDB4YWY2MSwKLQkweDAxZTgsIDB4OTA4NiwgMHgwMDAyLCAweDA5MDQsIDB4ZTI4ZSwgMHgwMGMwLCAweDkxODYsIDB4MDAyNywKLQkweDAxODAsIDB4OTE4NiwgMHgwMDQ4LCAweDAxMjgsIDB4OTE4NiwgMHgwMDE0LCAweDAxNTAsIDB4MTkwYywKLQkweDBkODUsIDB4MDgwYywgMHhhZjYxLCAweDAxNTAsIDB4OTA4NiwgMHgwMDA0LCAweDA5MDQsIDB4ZTMyZCwKLQkweDAwMjgsIDB4NjAwNCwgMHg5MDgyLCAweDAwNDAsIDB4MjAwOCwgMHgwMDFhLCAweDA4MGMsIDB4YjIyNywKLQkweDAwMDUsIDB4ZTIwZCwgMHhlMjBmLCAweGUyMGYsIDB4ZTIzNiwgMHhlMjBkLCAweGUyMGQsIDB4ZTIwZCwKLQkweGUyMGQsIDB4ZTIwZCwgMHhlMjBkLCAweGUyMGQsIDB4ZTIwZCwgMHhlMjBkLCAweGUyMGQsIDB4ZTIwZCwKLQkweGUyMGQsIDB4ZTIwZCwgMHhlMjBkLCAweGUyMGQsIDB4ZTIwZCwgMHgwODBjLCAweDBkODUsIDB4MDgwYywKLQkweDk5ZWQsIDB4MDgwYywgMHg5YWIzLCAweDAwMzYsIDB4MDA5NiwgMHg2MDE0LCAweDkwNGQsIDB4MDFkOCwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMWMwLCAweDYwMDMsIDB4MDAwMiwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwKLQkweGI4MDAsIDB4MDBiZSwgMHhkMGJjLCAweDExNzgsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4ZWEzMCwKLQkweDYwMTcsIDB4MDAwMCwgMHg2MDE4LCAweDkwMDUsIDB4MTEyMCwgMHgyMDAxLCAweDE5ODcsIDB4MjAwNCwKLQkweDYwMWEsIDB4NjAwMywgMHgwMDA3LCAweDAwOWUsIDB4MDAzZSwgMHgwMDA1LCAweDAwOTYsIDB4MDgwYywKLQkweDk5ZWQsIDB4MDgwYywgMHg5YWIzLCAweDA4MGMsIDB4Y2YxYiwgMHgwMTIwLCAweDYwMTQsIDB4MjA0OCwKLQkweDA4MGMsIDB4MTA4YiwgMHgwODBjLCAweGIxYTcsIDB4MDA5ZSwgMHgwMDA1LCAweDAwMDIsIDB4ZTI1YiwKLQkweGUyNzAsIDB4ZTI1ZCwgMHhlMjg1LCAweGUyNWIsIDB4ZTI1YiwgMHhlMjViLCAweGUyNWIsIDB4ZTI1YiwKLQkweGUyNWIsIDB4ZTI1YiwgMHhlMjViLCAweGUyNWIsIDB4ZTI1YiwgMHhlMjViLCAweGUyNWIsIDB4ZTI1YiwKLQkweGUyNWIsIDB4ZTI1YiwgMHhlMjViLCAweDA4MGMsIDB4MGQ4NSwgMHgwMDk2LCAweDYwMTQsIDB4MjA0OCwKLQkweGE4N2MsIDB4ZDBiNCwgMHgwMTM4LCAweDYwMDMsIDB4MDAwNywgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywKLQkweGIyMGEsIDB4MDAxMCwgMHg2MDAzLCAweDAwMDQsIDB4MDgwYywgMHg5YWIzLCAweDAwOWUsIDB4MDAwNSwKLQkweDA4MGMsIDB4Y2YxYiwgMHgwMTM4LCAweDYxMTQsIDB4MDA5NiwgMHgyMTQ4LCAweGE5N2MsIDB4MDA5ZSwKLQkweGQxZWMsIDB4MTEzOCwgMHgwODBjLCAweDhjMTksIDB4MDgwYywgMHhiMTZjLCAweDA4MGMsIDB4OWFiMywKLQkweDAwMDUsIDB4MDgwYywgMHhlYzg5LCAweDBkYjAsIDB4MGNjOCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywKLQkweDAwNDEsIDB4MjAwOSwgMHhhMDIyLCAweDA4MGMsIDB4OTYxNywgMHgwMDA1LCAweDkxODIsIDB4MDA0MCwKLQkweDAwMDIsIDB4ZTJhNSwgMHhlMmE3LCAweGUyYTUsIDB4ZTJhNSwgMHhlMmE1LCAweGUyYTUsIDB4ZTJhNSwKLQkweGUyYTUsIDB4ZTJhNSwgMHhlMmE1LCAweGUyYTUsIDB4ZTJhNSwgMHhlMmE1LCAweGUyYTUsIDB4ZTJhNSwKLQkweGUyYTUsIDB4ZTJhNSwgMHhlMmE4LCAweGUyYTUsIDB4ZTJhNSwgMHgwODBjLCAweDBkODUsIDB4MDAwNSwKLQkweDAwZDYsIDB4MDgwYywgMHg4YzE5LCAweDAwZGUsIDB4MDgwYywgMHhlY2UxLCAweDA4MGMsIDB4YjE2YywKLQkweDAwMDUsIDB4OTE4MiwgMHgwMDQwLCAweDAwMDIsIDB4ZTJjOCwgMHhlMmM4LCAweGUyYzgsIDB4ZTJjOCwKLQkweGUyYzgsIDB4ZTJjOCwgMHhlMmM4LCAweGUyYzgsIDB4ZTJjOCwgMHhlMmNhLCAweGUyZjUsIDB4ZTJjOCwKLQkweGUyYzgsIDB4ZTJjOCwgMHhlMmM4LCAweGUyZjUsIDB4ZTJjOCwgMHhlMmM4LCAweGUyYzgsIDB4ZTJjOCwKLQkweDA4MGMsIDB4MGQ4NSwgMHg2MDE0LCAweDAwOTYsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MDE2OCwKLQkweDkwOGMsIDB4MDAwMywgMHg5MThlLCAweDAwMDIsIDB4MDE4MCwgMHg2MTQ0LCAweGQxZTQsIDB4MTE2OCwKLQkweDIwMDksIDB4MDA0MSwgMHgwMDllLCAweDA4MDQsIDB4ZTNiNSwgMHg2MDAzLCAweDAwMDcsIDB4NjAxYiwKLQkweDAwMDAsIDB4MDgwYywgMHg4YzE5LCAweDAwOWUsIDB4MDAwNSwgMHg2MDE0LCAweDIwNDgsIDB4YTk3YywKLQkweGQxZWMsIDB4MTEzMCwgMHgwODBjLCAweDhjMTksIDB4MDgwYywgMHhiMTZjLCAweDAwOWUsIDB4MDAwNSwKLQkweDA4MGMsIDB4ZWM4OSwgMHgwZGI4LCAweDAwOWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MGMsIDB4MjAwYywKLQkweGMxZDQsIDB4MjEwMiwgMHgwMDM2LCAweDA4MGMsIDB4OWE0OCwgMHgwODBjLCAweDlhYjMsIDB4NjAxNCwKLQkweDAwOTYsIDB4MjA0OCwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiODAwLCAweDAwYmUsIDB4ZDBiYywKLQkweDAxODgsIDB4YTg3YywgMHg5MDg0LCAweDAwMDMsIDB4OTA4NiwgMHgwMDAyLCAweDAxNDAsIDB4YThhYywKLQkweDYzMzAsIDB4OTMxYSwgMHg2MzMyLCAweGE4YjAsIDB4NjMyYywgMHg5MzFiLCAweDYzMmUsIDB4NjAwMywKLQkweDAwMDIsIDB4MDA4MCwgMHgyMDE5LCAweDAwMDQsIDB4MDgwYywgMHhlYTMwLCAweDYwMTgsIDB4OTAwNSwKLQkweDExMjgsIDB4MjAwMSwgMHgxOTg3LCAweDIwMDQsIDB4ODAwMywgMHg2MDFhLCAweDYwMTcsIDB4MDAwMCwKLQkweDYwMDMsIDB4MDAwNywgMHgwMDllLCAweDAwM2UsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsIDB4MDAwMiwKLQkweGUzNDQsIDB4ZTM0NCwgMHhlMzQ0LCAweGUzNDQsIDB4ZTM0NCwgMHhlMzQ0LCAweGUzNDQsIDB4ZTM0NCwKLQkweGUzNDYsIDB4ZTM0NCwgMHhlMzQ0LCAweGUzNDQsIDB4ZTM0NCwgMHhlMzQ0LCAweGUzNDQsIDB4ZTM0NCwKLQkweGUzNDQsIDB4ZTM0NCwgMHhlMzQ0LCAweGUzOTEsIDB4MDgwYywgMHgwZDg1LCAweDYwMTQsIDB4MDA5NiwKLQkweDIwNDgsIDB4YTgzNCwgMHhhYTM4LCAweDYxMTAsIDB4MDBiNiwgMHgyMTU4LCAweGI5MDAsIDB4MDBiZSwKLQkweGQxYmMsIDB4MTE5MCwgMHg5MjBkLCAweDE1MTgsIDB4YTg3YywgMHhkMGZjLCAweDAxMjgsIDB4MjAwOSwKLQkweDAwNDEsIDB4MDA5ZSwgMHgwODA0LCAweGUzYjUsIDB4NjAwMywgMHgwMDA3LCAweDYwMWIsIDB4MDAwMCwKLQkweDA4MGMsIDB4OGMxOSwgMHgwMDllLCAweDAwMDUsIDB4NjEyNCwgMHhkMWY0LCAweDFkNTgsIDB4MDAwNiwKLQkweDAwNDYsIDB4YWNhYywgMHg5NDIyLCAweGE5YjAsIDB4MjIwMCwgMHg5MTBiLCAweDYwMzAsIDB4OTQyMCwKLQkweDY0MzIsIDB4NjAyYywgMHg5MTA5LCAweDYxMmUsIDB4MDA0ZSwgMHgwMDBlLCAweDA4ZDgsIDB4NjExMCwKLQkweDAwYjYsIDB4MjE1OCwgMHhiOTAwLCAweDAwYmUsIDB4ZDFiYywgMHgxMTc4LCAweDIwMDksIDB4MTgwZSwKLQkweDIxMGMsIDB4ZDE5YywgMHgwMTE4LCAweDYwMDMsIDB4MDAwNywgMHgwMDEwLCAweDYwMDMsIDB4MDAwNiwKLQkweDAwZTksIDB4MDgwYywgMHg4YzFiLCAweDAwOWUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDIsIDB4MDA5ZSwKLQkweDAwMDUsIDB4NjAyNCwgMHhkMGY0LCAweDAxMjgsIDB4MDgwYywgMHgxNmIwLCAweDE5MDQsIDB4ZTM0NiwKLQkweDAwMDUsIDB4NjAxNCwgMHgwMDk2LCAweDIwNDgsIDB4YTgzNCwgMHhhOTM4LCAweDAwOWUsIDB4OTEwNSwKLQkweDExMjAsIDB4MDgwYywgMHgxNmIwLCAweDE5MDQsIDB4ZTM0NiwgMHgwMDA1LCAweGQyZmMsIDB4MDE0MCwKLQkweDgwMDIsIDB4ODAwMCwgMHg4MjEyLCAweDkyOTEsIDB4MDAwMCwgMHgyMDA5LCAweDAwMDksIDB4MDAxMCwKLQkweDIwMDksIDB4MDAxNSwgMHhhYTlhLCAweGE4OTYsIDB4MDAwNSwgMHg5MTgyLCAweDAwNDAsIDB4MDIwOCwKLQkweDAwNjIsIDB4OTE4NiwgMHgwMDEzLCAweDAxMjAsIDB4OTE4NiwgMHgwMDE0LCAweDE5MGMsIDB4MGQ4NSwKLQkweDYwMjQsIDB4ZDBkYywgMHgwOTBjLCAweDBkODUsIDB4MDAwNSwgMHhlM2Q5LCAweGUzZTUsIDB4ZTNmMSwKLQkweGUzZmQsIDB4ZTNkOSwgMHhlM2Q5LCAweGUzZDksIDB4ZTNkOSwgMHhlM2UwLCAweGUzZGIsIDB4ZTNkYiwKLQkweGUzZDksIDB4ZTNkOSwgMHhlM2Q5LCAweGUzZDksIDB4ZTNkYiwgMHhlM2Q5LCAweGUzZGIsIDB4ZTNkOSwKLQkweGUzZTAsIDB4MDgwYywgMHgwZDg1LCAweDYwMjQsIDB4ZDBkYywgMHgwOTBjLCAweDBkODUsIDB4MDAwNSwKLQkweDYwMTQsIDB4OTAwNSwgMHgxOTBjLCAweDBkODUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDEsIDB4NjEwNiwKLQkweDAxMjYsIDB4MjA5MSwgMHg4MDAwLCAweDIwMDksIDB4YTAyMiwgMHgwODBjLCAweDk1ZjksIDB4MDEyZSwKLQkweDAwMDUsIDB4NjAwMywgMHgwMDA0LCAweDYxMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwOSwKLQkweGEwMDEsIDB4MDgwYywgMHg5NjE3LCAweDAxMmUsIDB4MDAwNSwgMHg2MDAzLCAweDAwMDMsIDB4NjEwNiwKLQkweDYwNDcsIDB4MDAwMCwgMHgwODBjLCAweDFjNmYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4NjAxNCwKLQkweDAwOTYsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MDE4OCwgMHg5MDg0LCAweDAwMDMsIDB4OTA4NiwKLQkweDAwMDIsIDB4MDFhMCwgMHg2MDI0LCAweGQwY2MsIDB4MTE0OCwgMHhkMGM0LCAweDExMzgsIDB4YThhOCwKLQkweDkwMDUsIDB4MTEyMCwgMHg2MTQ0LCAweDkxOGQsIDB4YjAzNSwgMHgwMDE4LCAweDYxNDQsIDB4OTE4ZCwKLQkweGEwMzUsIDB4MDA5ZSwgMHgwODBjLCAweDk2NWUsIDB4MDEyZSwgMHgwMDA1LCAweDYxNDQsIDB4OTE4ZCwKLQkweGEwMzIsIDB4MGNiOCwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgwMDM2LCAweDAwOTYsIDB4OTE4MiwKLQkweDAwNDAsIDB4MDAyMywgMHgwMDllLCAweDAwM2UsIDB4MDEyZSwgMHgwMDA1LCAweGU0NGEsIDB4ZTQ0YywKLQkweGU0NjEsIDB4ZTQ3YiwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwKLQkweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwgMHhlNDRhLCAweGU0NGEsIDB4ZTQ0YSwKLQkweGU0NGEsIDB4ZTQ0YSwgMHgwODBjLCAweDBkODUsIDB4NjAxNCwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBmYywKLQkweDA1MTAsIDB4OTA5YywgMHgwMDAzLCAweDkzOWUsIDB4MDAwMywgMHgwMWU4LCAweDYwMDMsIDB4MDAwMSwKLQkweDYxMDYsIDB4MDEyNiwgMHgyMDkxLCAweDgwMDAsIDB4MjAwOSwgMHhhMDIyLCAweDA4MGMsIDB4OTYxNywKLQkweDA0ODAsIDB4NjAxNCwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBmYywgMHgwMTY4LCAweDkwOWMsIDB4MDAwMywKLQkweDkzOWUsIDB4MDAwMywgMHgwMTQwLCAweDYwMDMsIDB4MDAwMSwgMHg2MTA2LCAweDIwMDksIDB4YTAwMSwKLQkweDA4MGMsIDB4OTYxNywgMHgwMGYwLCAweDkwMWUsIDB4NjMxNiwgMHg2MzFhLCAweDIwMTksIDB4MDAwNCwKLQkweDA4MGMsIDB4ZWEzMCwgMHgwMGIwLCAweDYwMTQsIDB4MjA0OCwgMHhhODdjLCAweGQwZmMsIDB4MGQ5OCwKLQkweDkwOWMsIDB4MDAwMywgMHg5MzllLCAweDAwMDMsIDB4MGQ3MCwgMHg2MDAzLCAweDAwMDMsIDB4NjEwNiwKLQkweDYwNDcsIDB4MDAwMCwgMHgwODBjLCAweDFjNmYsIDB4NjE0NCwgMHg5MThkLCAweGEwMzUsIDB4MDgwYywKLQkweDk2NWUsIDB4MDAwNSwgMHgwODBjLCAweDk5ZWQsIDB4NjExNCwgMHg4MWZmLCAweDAxNTgsIDB4MDA5NiwKLQkweDIxNDgsIDB4MDgwYywgMHhlZGRmLCAweDAwMzYsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4ZWEzMCwKLQkweDAwM2UsIDB4MDA5ZSwgMHgwODBjLCAweGIxYTcsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4MDgwYywKLQkweDlhNDgsIDB4NjExNCwgMHg4MWZmLCAweDAxNTgsIDB4MDA5NiwgMHgyMTQ4LCAweDA4MGMsIDB4ZWRkZiwKLQkweDAwMzYsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4ZWEzMCwgMHgwMDNlLCAweDAwOWUsIDB4MDgwYywKLQkweGIxYTcsIDB4MDAwNSwgMHg5MTgyLCAweDAwODUsIDB4MDAwMiwgMHhlNGNjLCAweGU0Y2EsIDB4ZTRjYSwKLQkweGU0ZDgsIDB4ZTRjYSwgMHhlNGNhLCAweGU0Y2EsIDB4ZTRjYSwgMHhlNGNhLCAweGU0Y2EsIDB4ZTRjYSwKLQkweGU0Y2EsIDB4ZTRjYSwgMHgwODBjLCAweDBkODUsIDB4NjAwMywgMHgwMDBiLCAweDYxMDYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywgMHg5NjE3LCAweDAxMmUsIDB4MDAwNSwKLQkweDAwMjYsIDB4MDBlNiwgMHgwODBjLCAweGVjODAsIDB4MDExOCwgMHgwODBjLCAweGIxNmMsIDB4MDQ0MCwKLQkweDIwNzEsIDB4MDI2MCwgMHg3MjI0LCAweDYyMTYsIDB4MjAwMSwgMHgxODBlLCAweDIwMDQsIDB4ZDBlNCwKLQkweDAxNTAsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YmNhMCwgMHgwMGJlLCAweDJjMDAsIDB4MjAxMSwKLQkweDAxNGUsIDB4MDgwYywgMHhiNDk1LCAweDcyMjAsIDB4MDgwYywgMHhlODc1LCAweDAxMTgsIDB4NjAwNywKLQkweDAwODYsIDB4MDA0MCwgMHg2MDA3LCAweDAwODcsIDB4NzIyNCwgMHg5Mjk2LCAweGZmZmYsIDB4MTExMCwKLQkweDYwMDcsIDB4MDA4NiwgMHg2MDAzLCAweDAwMDEsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywKLQkweDAwZWUsIDB4MDAyZSwgMHgwMDA1LCAweDkxODYsIDB4MDAxMywgMHgxMTYwLCAweDYwMDQsIDB4OTA4YSwKLQkweDAwODUsIDB4MGEwYywgMHgwZDg1LCAweDkwOGEsIDB4MDA5MiwgMHgxYTBjLCAweDBkODUsIDB4OTA4MiwKLQkweDAwODUsIDB4MDBhMiwgMHg5MTg2LCAweDAwMjcsIDB4MDEzMCwgMHg5MTg2LCAweDAwMTQsIDB4MDExOCwKLQkweDA4MGMsIDB4YjIyNywgMHgwMDUwLCAweDIwMDEsIDB4MDAwNywgMHgwODBjLCAweDY3MjYsIDB4MDgwYywKLQkweDk5ZWQsIDB4MDgwYywgMHhiMWE3LCAweDA4MGMsIDB4OWFiMywgMHgwMDA1LCAweGU1M2IsIDB4ZTUzZCwKLQkweGU1M2QsIDB4ZTUzYiwgMHhlNTNiLCAweGU1M2IsIDB4ZTUzYiwgMHhlNTNiLCAweGU1M2IsIDB4ZTUzYiwKLQkweGU1M2IsIDB4ZTUzYiwgMHhlNTNiLCAweDA4MGMsIDB4MGQ4NSwgMHgwODBjLCAweGIxYTcsIDB4MDgwYywKLQkweDlhYjMsIDB4MDAwNSwgMHg5MTgyLCAweDAwODUsIDB4MGEwYywgMHgwZDg1LCAweDkxODIsIDB4MDA5MiwKLQkweDFhMGMsIDB4MGQ4NSwgMHg5MTgyLCAweDAwODUsIDB4MDAwMiwgMHhlNTVhLCAweGU1NWEsIDB4ZTU1YSwKLQkweGU1NWMsIDB4ZTU1YSwgMHhlNTVhLCAweGU1NWEsIDB4ZTU1YSwgMHhlNTVhLCAweGU1NWEsIDB4ZTU1YSwKLQkweGU1NWEsIDB4ZTU1YSwgMHgwODBjLCAweDBkODUsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTMsIDB4MDE0OCwKLQkweDkxODYsIDB4MDAxNCwgMHgwMTMwLCAweDkxODYsIDB4MDAyNywgMHgwMTE4LCAweDA4MGMsIDB4YjIyNywKLQkweDAwMjAsIDB4MDgwYywgMHg5OWVkLCAweDA4MGMsIDB4YjFhNywgMHgwMDA1LCAweDAwMzYsIDB4MDgwYywKLQkweGVjZTEsIDB4NjA0YiwgMHgwMDAwLCAweDIwMTksIDB4MDAwYiwgMHgwMDExLCAweDAwM2UsIDB4MDAwNSwKLQkweDYwMTAsIDB4MDAwNiwgMHgwMDU5LCAweDAwMGUsIDB4NjAxMiwgMHg2MDIzLCAweDAwMDYsIDB4NjAwMywKLQkweDAwMDcsIDB4NjAxYiwgMHgwMDAwLCAweDYwNGIsIDB4MDAwMCwgMHgwMDA1LCAweDAxMjYsIDB4MDAzNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgwODBjLCAweGFjZmMsIDB4MDEwNiwgMHgwMDg2LCAweDJjNDAsIDB4MDA5NiwKLQkweDkwNGUsIDB4MDgwYywgMHhhNjY3LCAweDAwOWUsIDB4MDA4ZSwgMHgxNTU4LCAweDAwNzYsIDB4MmMzOCwKLQkweDA4MGMsIDB4YTcxMiwgMHgwMDdlLCAweDE1MjgsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDAsIDB4MDUwOCwKLQkweDYwMjAsIDB4OTA4NiwgMHgwMDA3LCAweDAxZTgsIDB4MDA5NiwgMHg2MDFjLCAweGQwODQsIDB4MDE0MCwKLQkweDA4MGMsIDB4ZWNlMSwgMHgwODBjLCAweGQ2NWQsIDB4MDgwYywgMHgxYWQzLCAweDYwMjMsIDB4MDAwNywKLQkweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGNmMWIsIDB4MDExMCwgMHgwODBjLCAweGVhMzAsIDB4MDA5ZSwKLQkweDkwMDYsIDB4NjA0NiwgMHg2MDE2LCAweDA4MGMsIDB4ZWNlMSwgMHg2MDIzLCAweDAwMDcsIDB4MDgwYywKLQkweGQ2NWQsIDB4MDEwZSwgMHgwOTBjLCAweGFkMTgsIDB4MDAzZSwgMHgwMTJlLCAweDAwMDUsIDB4MDBmNiwKLQkweDAwYzYsIDB4MDBiNiwgMHgwMDM2LCAweDAxNTYsIDB4MjA3OSwgMHgwMjYwLCAweDc5MzgsIDB4NzgzYywKLQkweDA4MGMsIDB4MjY4YywgMHgxOTA0LCAweGU2MjEsIDB4MDAxNiwgMHgwMGM2LCAweDA4MGMsIDB4NjdiNCwKLQkweDE5MDQsIDB4ZTYxZiwgMHgwMDFlLCAweDAwYzYsIDB4MDgwYywgMHhkNjQ1LCAweDExMzAsIDB4Yjg4NCwKLQkweDkwMDUsIDB4MDExOCwgMHgwODBjLCAweDM0N2QsIDB4MDE0OCwgMHgyYjEwLCAweDIxNjAsIDB4NjAxMCwKLQkweDAwMDYsIDB4NjIxMiwgMHgwODBjLCAweGQ2NGMsIDB4MDAwZSwgMHg2MDEyLCAweDAwY2UsIDB4MDAyZSwKLQkweDAwMjYsIDB4MDAxNiwgMHgwODBjLCAweGFjZmMsIDB4MjAxOSwgMHgwMDI5LCAweDA4MGMsIDB4YTdlMiwKLQkweDA4MGMsIDB4OTdiMCwgMHgwMDc2LCAweDkwM2UsIDB4MDgwYywgMHg5NjZkLCAweDAwN2UsIDB4MDAxZSwKLQkweDAwNzYsIDB4OTAzZSwgMHgwODBjLCAweGU3NWQsIDB4MDA3ZSwgMHgwODBjLCAweGFkMTgsIDB4MDAyNiwKLQkweGJhMDQsIDB4OTI5NCwgMHhmZjAwLCAweDgyMTcsIDB4OTI4NiwgMHgwMDA2LCAweDAxMTgsIDB4OTI4NiwKLQkweDAwMDQsIDB4MTExOCwgMHhiYWEwLCAweDA4MGMsIDB4MzNlMCwgMHgwMDJlLCAweGJjODQsIDB4MDAxZSwKLQkweDA4MGMsIDB4NjFiNywgMHhiZTEyLCAweGJkMTYsIDB4YmM4NiwgMHg5MDA2LCAweDAwMTAsIDB4MDBjZSwKLQkweDAwMWUsIDB4MDE1ZSwgMHgwMDNlLCAweDAwYmUsIDB4MDBjZSwgMHgwMGZlLCAweDAwMDUsIDB4MDBjNiwKLQkweDAwZDYsIDB4MDBiNiwgMHgwMDE2LCAweDIwMDksIDB4MTgyNCwgMHgyMTA0LCAweDkwODYsIDB4MDA3NCwKLQkweDE5MDQsIDB4ZTY4MCwgMHgyMDY5LCAweDAyNjAsIDB4Njk0NCwgMHg5MTgyLCAweDAxMDAsIDB4MDZlMCwKLQkweDY5NDAsIDB4OTE4NCwgMHg4MDAwLCAweDA5MDQsIDB4ZTY3ZCwgMHgyMDAxLCAweDE5N2MsIDB4MjAwNCwKLQkweDkwMDUsIDB4MTE0MCwgMHg2MDEwLCAweDIwNTgsIDB4Yjg4NCwgMHg5MDA1LCAweDAxMTgsIDB4OTE4NCwKLQkweDA4MDAsIDB4MDU5OCwgMHg2OTQ4LCAweDkxOGEsIDB4MDAwMSwgMHgwNjQ4LCAweDA4MGMsIDB4ZWU0NywKLQkweDAxMTgsIDB4Njk3OCwgMHhkMWZjLCAweDExYjgsIDB4MjAwOSwgMHgwMjA1LCAweDIwMGIsIDB4MDAwMSwKLQkweDY5M2MsIDB4ODFmZiwgMHgxMTk4LCAweDY5NDQsIDB4OTE4MiwgMHgwMTAwLCAweDAyYTgsIDB4Njk0MCwKLQkweDgxZmYsIDB4MTE3OCwgMHg2OTQ4LCAweDkxOGEsIDB4MDAwMSwgMHgwMjg4LCAweDY5NTAsIDB4OTE4YSwKLQkweDAwMDEsIDB4MDI5OCwgMHgwMGQwLCAweDYwMTcsIDB4MDEwMCwgMHgwMGEwLCAweDYwMTcsIDB4MDMwMCwKLQkweDAwODgsIDB4NjAxNywgMHgwNTAwLCAweDAwNzAsIDB4NjAxNywgMHgwNzAwLCAweDAwNTgsIDB4NjAxNywKLQkweDA5MDAsIDB4MDA0MCwgMHg2MDE3LCAweDBiMDAsIDB4MDAyOCwgMHg2MDE3LCAweDBmMDAsIDB4MDAxMCwKLQkweDYwMTcsIDB4MmQwMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwOCwgMHg5MDA2LCAweDAwMWUsIDB4MDBiZSwKLQkweDAwZGUsIDB4MDBjZSwgMHgwMDA1LCAweDAwYzYsIDB4MDBiNiwgMHgwMDI2LCAweDAwMzYsIDB4MDE1NiwKLQkweDYyMTAsIDB4MjI1OCwgMHhiYjA0LCAweDkzOTQsIDB4MDBmZiwgMHg5Mjg2LCAweDAwMDYsIDB4MDE4MCwKLQkweDkyODYsIDB4MDAwNCwgMHgwMTY4LCAweDkzOTQsIDB4ZmYwMCwgMHg4MjE3LCAweDkyODYsIDB4MDAwNiwKLQkweDAxMzgsIDB4OTI4NiwgMHgwMDA0LCAweDAxMjAsIDB4MDgwYywgMHg2N2MzLCAweDA4MDQsIDB4ZTZlYywKLQkweDIwMTEsIDB4MDI3NiwgMHgyMGE5LCAweDAwMDQsIDB4MDA5NiwgMHgyYjQ4LCAweDIwMTksIDB4MDAwYSwKLQkweDA4MGMsIDB4YzIyMiwgMHgwMDllLCAweDE1YzgsIDB4MjAxMSwgMHgwMjdhLCAweDIwYTksIDB4MDAwNCwKLQkweDAwOTYsIDB4MmI0OCwgMHgyMDE5LCAweDAwMDYsIDB4MDgwYywgMHhjMjIyLCAweDAwOWUsIDB4MTU2OCwKLQkweDAwNDYsIDB4MDAxNiwgMHhiYWEwLCAweDIyMjAsIDB4OTAwNiwgMHgyMDA5LCAweDE4NDgsIDB4MjEwYywKLQkweGQxYTQsIDB4MDEzOCwgMHgyMDA5LCAweDAwMjksIDB4MDgwYywgMHhlYThkLCAweGI4MDAsIDB4YzBlNSwKLQkweGI4MDIsIDB4MDgwYywgMHhhY2ZjLCAweDIwMTksIDB4MDAyOSwgMHgwODBjLCAweDk3YjAsIDB4MDA3NiwKLQkweDIwMzksIDB4MDAwMCwgMHgwODBjLCAweDk2NmQsIDB4MmMwOCwgMHgwODBjLCAweGU3NWQsIDB4MDA3ZSwKLQkweDA4MGMsIDB4YWQxOCwgMHgyMDAxLCAweDAwMDcsIDB4MDgwYywgMHg2NzI2LCAweDIwMDEsIDB4MDAwNywKLQkweDA4MGMsIDB4NjZmYSwgMHgwMDFlLCAweDAwNGUsIDB4OTAwNiwgMHgwMTVlLCAweDAwM2UsIDB4MDAyZSwKLQkweDAwYmUsIDB4MDBjZSwgMHgwMDA1LCAweDAwZDYsIDB4MjA2OSwgMHgwMjZlLCAweDY4MDAsIDB4OTA4NiwKLQkweDA4MDAsIDB4MDExOCwgMHg2MDE3LCAweDAwMDAsIDB4MDAwOCwgMHg5MDA2LCAweDAwZGUsIDB4MDAwNSwKLQkweDAwYjYsIDB4MDBmNiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgwMTU2LCAweDIwNzksIDB4MDI2YywKLQkweDc5MzAsIDB4NzgzNCwgMHgwODBjLCAweDI2OGMsIDB4MTFkMCwgMHgwODBjLCAweDY3YjQsIDB4MTFiOCwKLQkweDIwMTEsIDB4MDI3MCwgMHgyMGE5LCAweDAwMDQsIDB4MDA5NiwgMHgyYjQ4LCAweDIwMTksIDB4MDAwYSwKLQkweDA4MGMsIDB4YzIyMiwgMHgwMDllLCAweDExNTgsIDB4MjAxMSwgMHgwMjc0LCAweDIwYTksIDB4MDAwNCwKLQkweDAwOTYsIDB4MmI0OCwgMHgyMDE5LCAweDAwMDYsIDB4MDgwYywgMHhjMjIyLCAweDAwOWUsIDB4MDE1ZSwKLQkweDAwM2UsIDB4MDAyZSwgMHgwMDFlLCAweDAwZmUsIDB4MDBiZSwgMHgwMDA1LCAweDAwYjYsIDB4MDAwNiwKLQkweDAwMTYsIDB4MDAyNiwgMHgwMDM2LCAweDAxNTYsIDB4MjAxMSwgMHgwMjYzLCAweDIyMDQsIDB4ODIxMSwKLQkweDIyMGMsIDB4MDgwYywgMHgyNjhjLCAweDExZDAsIDB4MDgwYywgMHg2N2I0LCAweDExYjgsIDB4MjAxMSwKLQkweDAyNzYsIDB4MjBhOSwgMHgwMDA0LCAweDAwOTYsIDB4MmI0OCwgMHgyMDE5LCAweDAwMGEsIDB4MDgwYywKLQkweGMyMjIsIDB4MDA5ZSwgMHgxMTU4LCAweDIwMTEsIDB4MDI3YSwgMHgyMGE5LCAweDAwMDQsIDB4MDA5NiwKLQkweDJiNDgsIDB4MjAxOSwgMHgwMDA2LCAweDA4MGMsIDB4YzIyMiwgMHgwMDllLCAweDAxNWUsIDB4MDAzZSwKLQkweDAwMmUsIDB4MDAxZSwgMHgwMDBlLCAweDAwYmUsIDB4MDAwNSwgMHgwMGU2LCAweDAwYzYsIDB4MDA4NiwKLQkweDAwNzYsIDB4MDA2NiwgMHgwMDU2LCAweDAwNDYsIDB4MDAyNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwKLQkweDA4MGMsIDB4YWQ1YSwgMHgwMTA2LCAweDE5MGMsIDB4YWNmYywgMHgyNzQwLCAweDIwMjksIDB4MTlmNCwKLQkweDI1MmMsIDB4MjAyMSwgMHgxOWZiLCAweDI0MjQsIDB4MjA2MSwgMHgxZGRjLCAweDIwNzEsIDB4MTgwMCwKLQkweDc2NTQsIDB4NzA3NCwgMHg4MWZmLCAweDAxNTAsIDB4MDAwNiwgMHg5MTg2LCAweDFiMzksIDB4MDAwZSwKLQkweDAxMjgsIDB4ODAwMSwgMHg5NjAyLCAweDFhMDQsIDB4ZTgwMywgMHgwMDE4LCAweDk2MDYsIDB4MDkwNCwKLQkweGU4MDMsIDB4MDgwYywgMHg4ZWVlLCAweDA5MDQsIDB4ZTdmYSwgMHgyMTAwLCAweDljMDYsIDB4MDkwNCwKLQkweGU3ZmEsIDB4NjcyMCwgMHg5Nzg2LCAweDAwMDcsIDB4MDkwNCwgMHhlN2ZhLCAweDA4MGMsIDB4ZWFjZSwKLQkweDE5MDQsIDB4ZTdmYSwgMHgwODBjLCAweGVlNjUsIDB4MDkwNCwgMHhlN2ZhLCAweDA4MGMsIDB4ZWFiZSwKLQkweDA5MDQsIDB4ZTdmYSwgMHg2NzIwLCAweDk3ODYsIDB4MDAwMSwgMHgxMTQ4LCAweDA4MGMsIDB4MzQ3ZCwKLQkweDA5MDQsIDB4ZTg0NSwgMHg2MDA0LCAweDkwODYsIDB4MDAwMCwgMHgxOTA0LCAweGU4NDUsIDB4OTc4NiwKLQkweDAwMDQsIDB4MDkwNCwgMHhlODQ1LCAweDI1MDAsIDB4OWMwNiwgMHgwOTA0LCAweGU3ZmEsIDB4MjQwMCwKLQkweDljMDYsIDB4MDkwNCwgMHhlN2ZhLCAweDg4ZmYsIDB4MDExOCwgMHg2MDVjLCAweDk5MDYsIDB4MTVkMCwKLQkweDAwOTYsIDB4NjA0MywgMHhmZmZmLCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExMjAsIDB4MDAxNiwKLQkweDA4MGMsIDB4MWFkMywgMHgwMDFlLCAweDk3ODYsIDB4MDAwYSwgMHgwMTQ4LCAweDA4MGMsIDB4ZDEzMiwKLQkweDExMzAsIDB4MDgwYywgMHhiYjVjLCAweDAwOWUsIDB4MDgwYywgMHhiMWE3LCAweDA0MTgsIDB4NjAxNCwKLQkweDIwNDgsIDB4MDgwYywgMHhjZjFiLCAweDAxZDgsIDB4OTc4NiwgMHgwMDAzLCAweDE1ODgsIDB4YTg2NywKLQkweDAxMDMsIDB4YTg3YywgMHhkMGNjLCAweDAxMzAsIDB4MDA5NiwgMHhhODc4LCAweDIwNDgsIDB4MDgwYywKLQkweDEwMGIsIDB4MDA5ZSwgMHhhYjdhLCAweGE4NzcsIDB4MDAwMCwgMHgwODBjLCAweGVkZGYsIDB4MDAxNiwKLQkweDA4MGMsIDB4ZDIyMCwgMHgwODBjLCAweDcwMDYsIDB4MDAxZSwgMHgwODBjLCAweGQxMGMsIDB4MDA5ZSwKLQkweDA4MGMsIDB4YjFhNywgMHg5Y2UwLCAweDAwMWMsIDB4MjAwMSwgMHgxODFhLCAweDIwMDQsIDB4OWMwMiwKLQkweDEyMTAsIDB4MDgwNCwgMHhlNzc2LCAweDAxMGUsIDB4MTkwYywgMHhhZDE4LCAweDAxMmUsIDB4MDAyZSwKLQkweDAwNGUsIDB4MDA1ZSwgMHgwMDZlLCAweDAwN2UsIDB4MDA4ZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwKLQkweDk3ODYsIDB4MDAwNiwgMHgxMTUwLCAweDkzODYsIDB4MDAwNSwgMHgwMTI4LCAweDA4MGMsIDB4ZWRkZiwKLQkweDA4MGMsIDB4ZWEzMCwgMHgwOGUwLCAweDAwOWUsIDB4MDhlOCwgMHg5Nzg2LCAweDAwMDksIDB4MTFmOCwKLQkweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDAxYzAsIDB4NjAwMCwgMHg5MDg2LCAweDAwMDMsIDB4MTFhMCwKLQkweDA4MGMsIDB4OWE0OCwgMHgwMDk2LCAweDYxMTQsIDB4MjE0OCwgMHgwODBjLCAweGNmMWIsIDB4MDExOCwKLQkweDYwMTAsIDB4MDgwYywgMHg3MDEyLCAweDAwOWUsIDB4MDBjNiwgMHgwODBjLCAweGIxNmMsIDB4MDBjZSwKLQkweDAwMzYsIDB4MDgwYywgMHg5YWIzLCAweDAwM2UsIDB4MDA5ZSwgMHgwODA0LCAweGU3ZmEsIDB4OTc4NiwKLQkweDAwMGEsIDB4MDkwNCwgMHhlN2VhLCAweDA4MDQsIDB4ZTdkZiwgMHg4MWZmLCAweDA5MDQsIDB4ZTdmYSwKLQkweDkxODAsIDB4MDAwMSwgMHgyMDA0LCAweDkwODYsIDB4MDAxOCwgMHgwMTM4LCAweDkxODAsIDB4MDAwMSwKLQkweDIwMDQsIDB4OTA4NiwgMHgwMDJkLCAweDE5MDQsIDB4ZTdmYSwgMHg2MDAwLCAweDkwODYsIDB4MDAwMiwKLQkweDE5MDQsIDB4ZTdmYSwgMHgwODBjLCAweGQxMjEsIDB4MDEzOCwgMHgwODBjLCAweGQxMzIsIDB4MTkwNCwKLQkweGU3ZmEsIDB4MDgwYywgMHhiYjVjLCAweDAwMzgsIDB4MDgwYywgMHgzMzQ0LCAweDA4MGMsIDB4ZDEzMiwKLQkweDExMTAsIDB4MDgwYywgMHhiYjVjLCAweDA4MGMsIDB4YjFhNywgMHgwODA0LCAweGU3ZmEsIDB4YTg2NCwKLQkweDkwODQsIDB4MDBmZiwgMHg5MDg2LCAweDAwMzksIDB4MDAwNSwgMHgwMGM2LCAweDAwZTYsIDB4MDAxNiwKLQkweDJjMDgsIDB4MjE3MCwgMHg5MDA2LCAweDA4MGMsIDB4ZWE1NywgMHgwMDFlLCAweDAxMjAsIDB4NjAyMCwKLQkweDkwODQsIDB4MDAwZiwgMHgwMDFiLCAweDAwZWUsIDB4MDBjZSwgMHgwMDA1LCAweGU4OTQsIDB4ZTg5NCwKLQkweGU4OTQsIDB4ZTg5NCwgMHhlODk0LCAweGU4OTQsIDB4ZTg5NiwgMHhlODk0LCAweGU4OTQsIDB4ZTg5NCwKLQkweGU4YmYsIDB4YjFhNywgMHhiMWE3LCAweGU4OTQsIDB4OTAwNiwgMHgwMDA1LCAweDAwMzYsIDB4MDA0NiwKLQkweDAwMTYsIDB4NzAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YmNhMCwgMHgwMGJlLCAweDJjMDAsIDB4MjAwOSwKLQkweDAwMjAsIDB4MDgwYywgMHhlYThkLCAweDAwMWUsIDB4MDA0ZSwgMHgyMDE5LCAweDAwMDIsIDB4MDgwYywKLQkweGU1ODYsIDB4MDAzZSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMDk2LCAweDA4MGMsIDB4Y2YxYiwKLQkweDAxNDAsIDB4NjAxNCwgMHg5MDRkLCAweDA4MGMsIDB4Y2FlOSwgMHg2ODdiLCAweDAwMDUsIDB4MDgwYywKLQkweDcwMTIsIDB4MDA5ZSwgMHgwODBjLCAweGIxYTcsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4MDAxOSwKLQkweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDYwMDAsIDB4OTA4YSwgMHgwMDEwLCAweDFhMGMsIDB4MGQ4NSwKLQkweDAwMGIsIDB4MDAwNSwgMHhlOGRhLCAweGU4ZGEsIDB4ZThmMSwgMHhlOGUxLCAweGU5MDAsIDB4ZThkYSwKLQkweGU4ZGEsIDB4ZThkYywgMHhlOGRhLCAweGU4ZGEsIDB4ZThkYSwgMHhlOGRhLCAweGU4ZGEsIDB4ZThkYSwKLQkweGU4ZGEsIDB4ZThkYSwgMHgwODBjLCAweDBkODUsIDB4MDgwYywgMHhiMWE3LCAweDkwODUsIDB4MDAwMSwKLQkweDAwMDUsIDB4MDAzNiwgMHgwMGU2LCAweDIwNzEsIDB4MTllOCwgMHg3MDRjLCAweDljMDYsIDB4MTEyOCwKLQkweDIwMTksIDB4MDAwMSwgMHgwODBjLCAweGE1OTYsIDB4MDAxMCwgMHgwODBjLCAweGE3YTEsIDB4MDBlZSwKLQkweDAwM2UsIDB4MDA5NiwgMHgwMGQ2LCAweDYwMTQsIDB4MjA0OCwgMHhhODdiLCAweDAwMDUsIDB4MDgwYywKLQkweDcwMTIsIDB4MDgwYywgMHhiMWE3LCAweDAwZGUsIDB4MDA5ZSwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwKLQkweDYwMWMsIDB4ZDA4NCwgMHgxOTBjLCAweDFhZDMsIDB4MGM2MCwgMHgyMDAxLCAweDAwMDEsIDB4MDgwYywKLQkweDY2ZTYsIDB4MDE1NiwgMHgwMDE2LCAweDAwMjYsIDB4MDAzNiwgMHgyMGE5LCAweDAwMDQsIDB4MjAxOSwKLQkweDE4MDUsIDB4MjAxMSwgMHgwMjc2LCAweDA4MGMsIDB4YzIwZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAxZSwKLQkweDAxNWUsIDB4OTAwNSwgMHgwMDA1LCAweDAwZjYsIDB4MDBlNiwgMHgwMGM2LCAweDAwODYsIDB4MDA3NiwKLQkweDAwNjYsIDB4MDBiNiwgMHgwMTI2LCAweDIwOTEsIDB4ODAwMCwgMHgyNzQwLCAweDIwNjEsIDB4MWRkYywKLQkweDIwNzksIDB4MDAwMSwgMHg4ZmZmLCAweDA5MDQsIDB4ZTk3NywgMHgyMDcxLCAweDE4MDAsIDB4NzY1NCwKLQkweDcwNzQsIDB4ODAwMSwgMHg5NjAyLCAweDFhMDQsIDB4ZTk3NywgMHg4OGZmLCAweDAxMjAsIDB4MjgwMCwKLQkweDljMDYsIDB4MTVhMCwgMHgyMDc4LCAweDA4MGMsIDB4ZWFiZSwgMHgwNTgwLCAweDI0MDAsIDB4OWMwNiwKLQkweDA1NjgsIDB4NjcyMCwgMHg5Nzg2LCAweDAwMDYsIDB4MTU0OCwgMHg5Nzg2LCAweDAwMDcsIDB4MDUzMCwKLQkweDg4ZmYsIDB4MTE1MCwgMHhkNThjLCAweDExMTgsIDB4NjAxMCwgMHg5YjA2LCAweDExZjgsIDB4ZDU4NCwKLQkweDAxMTgsIDB4NjA1YywgMHg5MTA2LCAweDExZDAsIDB4MDA5NiwgMHg2MDFjLCAweGQwODQsIDB4MDE0MCwKLQkweDA4MGMsIDB4ZWNlMSwgMHgwODBjLCAweGQ2NWQsIDB4MDgwYywgMHgxYWQzLCAweDYwMjMsIDB4MDAwNywKLQkweDYwMTQsIDB4MjA0OCwgMHgwODBjLCAweGNmMWIsIDB4MDEyMCwgMHgwMDQ2LCAweDA4MGMsIDB4ZWEzMCwKLQkweDAwNGUsIDB4MDA5ZSwgMHgwODBjLCAweGIxYTcsIDB4ODhmZiwgMHgxMTk4LCAweDljZTAsIDB4MDAxYywKLQkweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsIDB4MTIxMCwgMHgwODA0LCAweGU5MmEsIDB4OTAwNiwKLQkweDAxMmUsIDB4MDBiZSwgMHgwMDZlLCAweDAwN2UsIDB4MDA4ZSwgMHgwMGNlLCAweDAwZWUsIDB4MDBmZSwKLQkweDAwMDUsIDB4OThjNSwgMHgwMDAxLCAweDBjYTAsIDB4MDgwYywgMHhhY2ZjLCAweDAwYjYsIDB4MDA3NiwKLQkweDAwNTYsIDB4MDA4NiwgMHg5MDQ2LCAweDIwMjksIDB4MDAwMSwgMHgyYzIwLCAweDIwMTksIDB4MDAwMiwKLQkweDYyMTAsIDB4MjI1OCwgMHgwMDk2LCAweDkwNGUsIDB4MDgwYywgMHhhNjY3LCAweDAwOWUsIDB4MDA4ZSwKLQkweDkwM2UsIDB4MDgwYywgMHhhNzEyLCAweDA4MGMsIDB4ZTkxYiwgMHgwMDVlLCAweDAwN2UsIDB4MDBiZSwKLQkweDA4MGMsIDB4YWQxOCwgMHgwMDA1LCAweDA4MGMsIDB4YWNmYywgMHgwMGI2LCAweDAwNDYsIDB4MDA1NiwKLQkweDAwNzYsIDB4MDBjNiwgMHgwMTU2LCAweDJjMjAsIDB4MjEyOCwgMHgyMGE5LCAweDAwN2YsIDB4OTAwZSwKLQkweDAwMTYsIDB4MDAzNiwgMHgwODBjLCAweDY3YjQsIDB4MTE4MCwgMHgwMDU2LCAweDAwODYsIDB4OTA0NiwKLQkweDI1MDgsIDB4MjAyOSwgMHgwMDAxLCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGE2NjcsIDB4MDA5ZSwKLQkweDAwOGUsIDB4OTAzZSwgMHgwODBjLCAweGE3MTIsIDB4MDA1ZSwgMHgwMDNlLCAweDAwMWUsIDB4ODEwOCwKLQkweDFmMDQsIDB4ZTliMCwgMHgwMDM2LCAweDI1MDgsIDB4MjAyOSwgMHgwMDAzLCAweDA4MGMsIDB4ZTkxYiwKLQkweDAwM2UsIDB4MDE1ZSwgMHgwMGNlLCAweDAwN2UsIDB4MDA1ZSwgMHgwMDRlLCAweDAwYmUsIDB4MDgwYywKLQkweGFkMTgsIDB4MDAwNSwgMHgwODBjLCAweGFjZmMsIDB4MDBiNiwgMHgwMDc2LCAweDAwNTYsIDB4NjIxMCwKLQkweDIyNTgsIDB4MDA4NiwgMHg5MDQ2LCAweDIwMjksIDB4MDAwMSwgMHgyMDE5LCAweDAwNDgsIDB4MDA5NiwKLQkweDkwNGUsIDB4MDgwYywgMHhhNjY3LCAweDAwOWUsIDB4MDA4ZSwgMHg5MDNlLCAweDA4MGMsIDB4YTcxMiwKLQkweDJjMjAsIDB4MDgwYywgMHhlOTFiLCAweDAwNWUsIDB4MDA3ZSwgMHgwMGJlLCAweDA4MGMsIDB4YWQxOCwKLQkweDAwMDUsIDB4MDgwYywgMHhhY2ZjLCAweDAwYjYsIDB4MDA0NiwgMHgwMDU2LCAweDAwNzYsIDB4MDBjNiwKLQkweDAxNTYsIDB4MmMyMCwgMHgyMGE5LCAweDA4MDAsIDB4OTAwZSwgMHgwMDE2LCAweDAwMzYsIDB4MDgwYywKLQkweDY3YjQsIDB4MTE5MCwgMHgwMDg2LCAweDkwNDYsIDB4MjgyOCwgMHgwMDQ2LCAweDIwMjEsIDB4MDAwMSwKLQkweDA4MGMsIDB4ZWNjNSwgMHgwMDRlLCAweDAwOTYsIDB4OTA0ZSwgMHgwODBjLCAweGE2NjcsIDB4MDA5ZSwKLQkweDAwOGUsIDB4OTAzZSwgMHgwODBjLCAweGE3MTIsIDB4MDAzZSwgMHgwMDFlLCAweDgxMDgsIDB4MWYwNCwKLQkweGVhMDUsIDB4MDAzNiwgMHgyMDI5LCAweDAwMDIsIDB4MDgwYywgMHhlOTFiLCAweDAwM2UsIDB4MDE1ZSwKLQkweDAwY2UsIDB4MDA3ZSwgMHgwMDVlLCAweDAwNGUsIDB4MDBiZSwgMHgwODBjLCAweGFkMTgsIDB4MDAwNSwKLQkweDAwMTYsIDB4MDBmNiwgMHgwODBjLCAweGNmMTksIDB4MDE5OCwgMHhhODY0LCAweDkwODQsIDB4MDBmZiwKLQkweDkwODYsIDB4MDA0NiwgMHgwMTgwLCAweGE4MDAsIDB4OTA3ZCwgMHgwMTM4LCAweGE4MDMsIDB4MDAwMCwKLQkweGFiODIsIDB4MDgwYywgMHg3MDEyLCAweDJmNDgsIDB4MGNiMCwgMHhhYjgyLCAweDA4MGMsIDB4NzAxMiwKLQkweDAwZmUsIDB4MDAxZSwgMHgwMDA1LCAweGE4MDAsIDB4OTA3ZCwgMHgwMTMwLCAweGE4MDMsIDB4MDAwMCwKLQkweDA4MGMsIDB4NzAxMiwgMHgyZjQ4LCAweDBjYjgsIDB4MDgwYywgMHg3MDEyLCAweDBjODgsIDB4MDBlNiwKLQkweDAwNDYsIDB4MDAzNiwgMHgyMDYxLCAweDFkZGMsIDB4OTAwNSwgMHgxMTM4LCAweDIwNzEsIDB4MTgwMCwKLQkweDc0NTQsIDB4NzA3NCwgMHg4MDAxLCAweDk0MDIsIDB4MTJmOCwgMHgyMTAwLCAweDljMDYsIDB4MDE4OCwKLQkweDYwMDAsIDB4OTA4NiwgMHgwMDAwLCAweDAxNjgsIDB4NjAwOCwgMHg5MjA2LCAweDExNTAsIDB4NjMyMCwKLQkweDkzODYsIDB4MDAwOSwgMHgwMWIwLCAweDYwMTAsIDB4OTFhMCwgMHgwMDA0LCAweDI0MjQsIDB4OTQwNiwKLQkweDAxNDAsIDB4OWNlMCwgMHgwMDFjLCAweDIwMDEsIDB4MTgxYSwgMHgyMDA0LCAweDljMDIsIDB4MTIyMCwKLQkweDBjMjAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4OTAwNiwgMHgwMDNlLCAweDAwNGUsIDB4MDBlZSwKLQkweDAwMDUsIDB4NjMxYywgMHhkM2M0LCAweDFkNjgsIDB4MGMzMCwgMHgwMDk2LCAweDAwMDYsIDB4MDgwYywKLQkweDEwNTksIDB4MDAwZSwgMHgwOTBjLCAweDBkODUsIDB4YWFlMiwgMHhhODY3LCAweDAxMGQsIDB4YTg4ZSwKLQkweDAwMjYsIDB4MjAxMCwgMHgwODBjLCAweGNmMDksIDB4MjAwMSwgMHgwMDAwLCAweDAxMjAsIDB4MjIwMCwKLQkweDkwODAsIDB4MDAxNywgMHgyMDA0LCAweDAwMmUsIDB4YTg3YSwgMHg5MTg2LCAweDAwMjAsIDB4MDExMCwKLQkweGE4ZTMsIDB4ZmZmZiwgMHhhOTg2LCAweGFjNzYsIDB4YTg3ZiwgMHgwMDAwLCAweDIwMDEsIDB4MTk4ZSwKLQkweDIwMDQsIDB4YTg4MiwgMHg5MDA2LCAweGE4MDIsIDB4YTg2YSwgMHhhODhhLCAweDAxMjYsIDB4MjA5MSwKLQkweDgwMDAsIDB4MDgwYywgMHg3MDEyLCAweDAxMmUsIDB4MDA5ZSwgMHgwMDA1LCAweDY3MDAsIDB4OTc4NiwKLQkweDAwMDAsIDB4MDE1OCwgMHg5Nzg2LCAweDAwMDEsIDB4MDE0MCwgMHg5Nzg2LCAweDAwMGEsIDB4MDEyOCwKLQkweDk3ODYsIDB4MDAwOSwgMHgwMTEwLCAweDkwODUsIDB4MDAwMSwgMHgwMDA1LCAweDAwZTYsIDB4NjAxMCwKLQkweDkwNzUsIDB4MDEzOCwgMHgwMGI2LCAweDIwNTgsIDB4YjhhMCwgMHgwMGJlLCAweDkyMDYsIDB4MDBlZSwKLQkweDAwMDUsIDB4OTA4NSwgMHgwMDAxLCAweDBjZDgsIDB4MDAxNiwgMHg2MDA0LCAweDkwOGUsIDB4MDAxZSwKLQkweDExYTAsIDB4ODAwNywgMHg2MTM0LCAweDkxOGMsIDB4MDBmZiwgMHg5MTA1LCAweDYwMzYsIDB4NjAwNywKLQkweDAwODUsIDB4NjAwMywgMHgwMDBiLCAweDYwMjMsIDB4MDAwNSwgMHgyMDAxLCAweDE5ODcsIDB4MjAwNCwKLQkweDYwMWEsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywgMHgwMDFlLCAweDAwMDUsIDB4YTAwMSwKLQkweGEwMDEsIDB4MDAwNSwgMHg2MDI0LCAweGQwZTQsIDB4MDE1OCwgMHhkMGNjLCAweDAxMTgsIDB4MDgwYywKLQkweGQyNjcsIDB4MDAzMCwgMHgwODBjLCAweGVjZTEsIDB4MDgwYywgMHg4YzE5LCAweDA4MGMsIDB4YjE2YywKLQkweDAwMDUsIDB4OTI4MCwgMHgwMDA4LCAweDIwMDQsIDB4OTA4NCwgMHgwMDBmLCAweDAwMDIsIDB4ZWIxZCwKLQkweGViMWQsIDB4ZWIxZCwgMHhlYjFmLCAweGViMWQsIDB4ZWIxZiwgMHhlYjFmLCAweGViMWQsIDB4ZWIxZiwKLQkweGViMWQsIDB4ZWIxZCwgMHhlYjFkLCAweGViMWQsIDB4ZWIxZCwgMHg5MDA2LCAweDAwMDUsIDB4OTA4NSwKLQkweDAwMDEsIDB4MDAwNSwgMHg5MjgwLCAweDAwMDgsIDB4MjAwNCwgMHg5MDg0LCAweDAwMGYsIDB4MDAwMiwKLQkweGViMzYsIDB4ZWIzNiwgMHhlYjM2LCAweGViMzYsIDB4ZWIzNiwgMHhlYjM2LCAweGViNDMsIDB4ZWIzNiwKLQkweGViMzYsIDB4ZWIzNiwgMHhlYjM2LCAweGViMzYsIDB4ZWIzNiwgMHhlYjM2LCAweDYwMDcsIDB4MDAzYiwKLQkweDYwMmYsIDB4MDAwOSwgMHg2MDE3LCAweDJhMDAsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4ODAyMCwKLQkweDA4MGMsIDB4OTYxNywgMHgwMDA1LCAweDAwOTYsIDB4MDBjNiwgMHgyMjYwLCAweDA4MGMsIDB4ZWNlMSwKLQkweDYwNGIsIDB4MDAwMCwgMHg2MDI0LCAweGMwZjQsIDB4YzBlNCwgMHg2MDI2LCAweDYwM2IsIDB4MDAwMCwKLQkweDAwY2UsIDB4MDBkNiwgMHgyMjY4LCAweDkxODYsIDB4MDAwNywgMHgxOTA0LCAweGViOWMsIDB4NjgxNCwKLQkweDkwMDUsIDB4MDEzOCwgMHgyMDQ4LCAweGE4N2MsIDB4ZDBmYywgMHgxMTE4LCAweDAwZGUsIDB4MDA5ZSwKLQkweDA4YTgsIDB4NjAwNywgMHgwMDNhLCAweDYwMDMsIDB4MDAwMSwgMHgyMDA5LCAweDgwMjAsIDB4MDgwYywKLQkweDk2MTcsIDB4MDBjNiwgMHgyZDYwLCAweDYxMDAsIDB4OTE4NiwgMHgwMDAyLCAweDE5MDQsIDB4ZWMwYywKLQkweDYwMTQsIDB4OTAwNSwgMHgxMTM4LCAweDYwMDAsIDB4OTA4NiwgMHgwMDA3LCAweDE5MGMsIDB4MGQ4NSwKLQkweDA4MDQsIDB4ZWMwYywgMHgyMDQ4LCAweDA4MGMsIDB4Y2YxYiwgMHgxMTMwLCAweDAwMjgsIDB4MjA0OCwKLQkweGE4MDAsIDB4OTAwNSwgMHgxZGUwLCAweDI5MDAsIDB4MjA0OCwgMHhhODdjLCAweDkwODQsIDB4MDAwMywKLQkweDkwODYsIDB4MDAwMiwgMHgxMTY4LCAweGE4N2MsIDB4YzBkYywgMHhjMGY0LCAweGE4N2UsIDB4YTg4MCwKLQkweGMwZmMsIDB4YTg4MiwgMHgyMDA5LCAweDAwNDMsIDB4MDgwYywgMHhlM2I1LCAweDA4MDQsIDB4ZWMwYywKLQkweDIwMDksIDB4MDA0MSwgMHgwODA0LCAweGVjMDYsIDB4OTE4NiwgMHgwMDA1LCAweDE1YTAsIDB4NjgxNCwKLQkweDIwNDgsIDB4YTg3YywgMHhkMGJjLCAweDExMjAsIDB4MDBkZSwgMHgwMDllLCAweDA4MDQsIDB4ZWIzNiwKLQkweGQwYjQsIDB4MDEyOCwgMHhkMGZjLCAweDA5MGMsIDB4MGQ4NSwgMHgwODA0LCAweGViNTcsIDB4NjAwNywKLQkweDAwM2EsIDB4NjAwMywgMHgwMDAxLCAweDIwMDksIDB4ODAyMCwgMHgwODBjLCAweDk2MTcsIDB4MDBjNiwKLQkweDJkNjAsIDB4NjEwMCwgMHg5MTg2LCAweDAwMDIsIDB4MDEyMCwgMHg5MTg2LCAweDAwMDQsIDB4MTkwNCwKLQkweGVjMGMsIDB4NjgxNCwgMHgyMDQ4LCAweGE5N2MsIDB4YzFmNCwgMHhjMWRjLCAweGE5N2UsIDB4YTk4MCwKLQkweGMxZmMsIDB4YzFiYywgMHhhOTgyLCAweDAwZjYsIDB4MmM3OCwgMHgwODBjLCAweDE3YWQsIDB4MDBmZSwKLQkweDIwMDksIDB4MDA0MiwgMHgwNDk4LCAweDAwMzYsIDB4MDgwYywgMHgxMDU5LCAweDA5MGMsIDB4MGQ4NSwKLQkweGE4NjcsIDB4MDEwZCwgMHg5MDA2LCAweGE4MDIsIDB4YTg2YSwgMHhhODhhLCAweDJkMTgsIDB4YWI4ZSwKLQkweGE4ODcsIDB4MDA0NSwgMHgyYzAwLCAweGE4OTIsIDB4NjAzOCwgMHhhOGEyLCAweDIzNjAsIDB4NjAyNCwKLQkweGMwZGQsIDB4NjAyNiwgMHg2MDEwLCAweDAwYjYsIDB4MjA1OCwgMHhiOGEwLCAweDAwYmUsIDB4MjAwNCwKLQkweDYzNWMsIDB4YWI3YSwgMHhhODc2LCAweDkwMDYsIDB4YTg3ZSwgMHhhODgyLCAweGFkOWEsIDB4YWU5NiwKLQkweGE4OWYsIDB4MDAwMSwgMHgwODBjLCAweDcwMTIsIDB4MjAxOSwgMHgwMDQ1LCAweDYwMDgsIDB4MjA2OCwKLQkweDA4MGMsIDB4ZTU3OCwgMHgyZDAwLCAweDYwMGEsIDB4MDAzZSwgMHgwMDM4LCAweDYwNGIsIDB4MDAwMCwKLQkweDYwMDMsIDB4MDAwNywgMHgwODBjLCAweGUzYjUsIDB4MDBjZSwgMHgwMGRlLCAweDAwOWUsIDB4MDAwNSwKLQkweDkxODYsIDB4MDAxMywgMHgxMTI4LCAweDYwMDQsIDB4OTA4MiwgMHgwMDg1LCAweDIwMDgsIDB4MDBjMiwKLQkweDkxODYsIDB4MDAyNywgMHgxMTc4LCAweDA4MGMsIDB4OTllZCwgMHgwMDM2LCAweDAwOTYsIDB4NjAxNCwKLQkweDIwNDgsIDB4MjAxOSwgMHgwMDA0LCAweDA4MGMsIDB4ZWEzMCwgMHgwMDllLCAweDAwM2UsIDB4MDgwYywKLQkweDlhYjMsIDB4MDAwNSwgMHg5MTg2LCAweDAwMTQsIDB4MGQ3MCwgMHgwODBjLCAweGIyMjcsIDB4MDAwNSwKLQkweGVjM2YsIDB4ZWMzZCwgMHhlYzNkLCAweGVjM2QsIDB4ZWMzZCwgMHhlYzNkLCAweGVjM2YsIDB4ZWMzZCwKLQkweGVjM2QsIDB4ZWMzZCwgMHhlYzNkLCAweGVjM2QsIDB4ZWMzZCwgMHgwODBjLCAweDBkODUsIDB4NjAwMywKLQkweDAwMGMsIDB4MDgwYywgMHg5YWIzLCAweDAwMDUsIDB4OTE4MiwgMHgwMDkyLCAweDEyMjAsIDB4OTE4MiwKLQkweDAwODUsIDB4MDIwOCwgMHgwMDFhLCAweDA4MGMsIDB4YjIyNywgMHgwMDA1LCAweGVjNWIsIDB4ZWM1YiwKLQkweGVjNWIsIDB4ZWM1YiwgMHhlYzVkLCAweGVjN2QsIDB4ZWM1YiwgMHhlYzViLCAweGVjNWIsIDB4ZWM1YiwKLQkweGVjNWIsIDB4ZWM1YiwgMHhlYzViLCAweDA4MGMsIDB4MGQ4NSwgMHgwMGQ2LCAweDJjNjgsIDB4MDgwYywKLQkweGIxMTYsIDB4MDFiMCwgMHg2MDAzLCAweDAwMDEsIDB4NjAwNywgMHgwMDFlLCAweDIwMDksIDB4MDI2ZSwKLQkweDIxMGMsIDB4NjEzYSwgMHgyMDA5LCAweDAyNmYsIDB4MjEwYywgMHg2MTNlLCAweDYwMGIsIDB4ZmZmZiwKLQkweDY5MTAsIDB4NjExMiwgMHg2MDIzLCAweDAwMDQsIDB4MjAwOSwgMHg4MDIwLCAweDA4MGMsIDB4OTYxNywKLQkweDJkNjAsIDB4MDgwYywgMHhiMTZjLCAweDAwZGUsIDB4MDAwNSwgMHgwODBjLCAweGIxNmMsIDB4MDAwNSwKLQkweDAwZTYsIDB4NjAxMCwgMHgwMGI2LCAweDIwNTgsIDB4YjgwMCwgMHgwMGJlLCAweGQwZWMsIDB4MDBlZSwKLQkweDAwMDUsIDB4MjAwOSwgMHgxODY3LCAweDIxMGMsIDB4ZDFlYywgMHgwNWIwLCAweDYwMDMsIDB4MDAwMiwKLQkweDYwMjQsIDB4YzBlNSwgMHg2MDI2LCAweGQwY2MsIDB4MDE1MCwgMHgyMDAxLCAweDE5ODgsIDB4MjAwNCwKLQkweDYwNGEsIDB4MjAwOSwgMHgxODY3LCAweDIxMGMsIDB4ZDFmNCwgMHgxNTIwLCAweDAwYTAsIDB4MjAwOSwKLQkweDE4NjcsIDB4MjEwYywgMHhkMWY0LCAweDAxMjgsIDB4NjAyNCwgMHhjMGU0LCAweDYwMjYsIDB4OTAwNiwKLQkweDAwZDgsIDB4MjAwMSwgMHgxOTg4LCAweDIwMGMsIDB4MjAwMSwgMHgxOTg2LCAweDIwMDQsIDB4OTEwMCwKLQkweDkwODAsIDB4MDAwYSwgMHg2MDRhLCAweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4YmMsIDB4MDBiZSwKLQkweDAwMDgsIDB4MjEwNCwgMHg5MDA1LCAweDAxMTgsIDB4OTA4OCwgMHgwMDAzLCAweDBjZDAsIDB4MmMwYSwKLQkweDYwMGYsIDB4MDAwMCwgMHg5MDg1LCAweDAwMDEsIDB4MDAwNSwgMHgwMDE2LCAweDAwYzYsIDB4MDBlNiwKLQkweDYxNWMsIDB4YjhiYywgMHgyMDYwLCAweDhjZmYsIDB4MDE4MCwgMHg4NGZmLCAweDExMTgsIDB4NjA1YywKLQkweDkxMDYsIDB4MTEzOCwgMHg2MDBjLCAweDIwNzIsIDB4MDgwYywgMHg4YzE5LCAweDA4MGMsIDB4YjE2YywKLQkweDAwMTAsIDB4OWNmMCwgMHgwMDAzLCAweDJlNjQsIDB4MGM3MCwgMHgwMGVlLCAweDAwY2UsIDB4MDAxZSwKLQkweDAwMDUsIDB4MDBkNiwgMHgwMGI2LCAweDYwMTAsIDB4MjA1OCwgMHhiOGJjLCAweDkwNmQsIDB4MDEzMCwKLQkweDljMDYsIDB4MDExMCwgMHg2ODBjLCAweDBjZDAsIDB4NjAwYywgMHg2ODBlLCAweDAwYmUsIDB4MDBkZSwKLQkweDAwMDUsIDB4MDAyNiwgMHgwMDM2LCAweDAxNTYsIDB4MjAxMSwgMHgxODJjLCAweDIyMDQsIDB4OTA4NCwKLQkweDAwZmYsIDB4MjAxOSwgMHgwMjZlLCAweDIzMzQsIDB4OTZiNCwgMHgwMGZmLCAweDk2MzYsIDB4MTUwOCwKLQkweDgzMTgsIDB4MjMzNCwgMHgyMjA0LCAweDkwODQsIDB4ZmYwMCwgMHg5NjM2LCAweDExZDAsIDB4MjAxMSwKLQkweDAyNzAsIDB4MjBhOSwgMHgwMDA0LCAweDYwMTAsIDB4MDA5NiwgMHgyMDQ4LCAweDIwMTksIDB4MDAwYSwKLQkweDA4MGMsIDB4YzIyMiwgMHgwMDllLCAweDExNjgsIDB4MjAxMSwgMHgwMjc0LCAweDIwYTksIDB4MDAwNCwKLQkweDYwMTAsIDB4MDA5NiwgMHgyMDQ4LCAweDIwMTksIDB4MDAwNiwgMHgwODBjLCAweGMyMjIsIDB4MDA5ZSwKLQkweDExMDAsIDB4MDE1ZSwgMHgwMDNlLCAweDAwMmUsIDB4MDAwNSwgMHgwMGU2LCAweDIwNzEsIDB4MTgwMCwKLQkweDA4MGMsIDB4NjEzMCwgMHgwODBjLCAweDMwYmYsIDB4MDBlZSwgMHgwMDA1LCAweDAwOTYsIDB4MDAyNiwKLQkweDA4MGMsIDB4MTA1OSwgMHgwOTBjLCAweDBkODUsIDB4YTg1YywgMHg5MDgwLCAweDAwMWEsIDB4MjBhMCwKLQkweDIwYTksIDB4MDAwYywgMHhhODYwLCAweDIwZTgsIDB4OTAwNiwgMHg0MDA0LCAweDkxODYsIDB4MDA0NiwKLQkweDExMTgsIDB4YTg2NywgMHgwMTM2LCAweDAwMzgsIDB4YTg2NywgMHgwMTM4LCAweDkxODYsIDB4MDA0MSwKLQkweDAxMTAsIDB4YTg3YiwgMHgwMDAxLCAweDcwMzgsIDB4OTA4NCwgMHhmZjAwLCAweDcyNDAsIDB4OTI5NCwKLQkweGZmMDAsIDB4ODAwNywgMHg5MjE1LCAweGFhOWEsIDB4OTE4NiwgMHgwMDQ2LCAweDExNjgsIDB4NzAzOCwKLQkweDkwODQsIDB4MDBmZiwgMHg3MjNjLCAweDkyOTQsIDB4ZmYwMCwgMHg5MjE1LCAweGFhOWUsIDB4NzIzYywKLQkweDkyOTQsIDB4MDBmZiwgMHhhYWEyLCAweDAwNjAsIDB4NzA0MCwgMHg5MDg0LCAweDAwZmYsIDB4NzI0NCwKLQkweDkyOTQsIDB4ZmYwMCwgMHg5MjE1LCAweGFhOWUsIDB4NzI0NCwgMHg5Mjk0LCAweDAwZmYsIDB4YWFhMiwKLQkweDkxODYsIDB4MDA0NiwgMHgxMTE4LCAweDllOTAsIDB4MDAxMiwgMHgwMDEwLCAweDllOTAsIDB4MDAxYSwKLQkweDIyMDQsIDB4ODAwNywgMHhhOGE2LCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YWEsIDB4ODIxMCwKLQkweDIyMDQsIDB4ODAwNywgMHhhOGFlLCAweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YjIsIDB4ODIxMCwKLQkweDkxODYsIDB4MDA0NiwgMHgxMWI4LCAweDllOTAsIDB4MDAxNiwgMHgyMjA0LCAweDgwMDcsIDB4YThiNiwKLQkweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YmEsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsIDB4YThiZSwKLQkweDgyMTAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YzIsIDB4ODIxMCwgMHgyMDExLCAweDAyMDUsIDB4MjAxMywKLQkweDAwMDEsIDB4MDBiMCwgMHg5ZTkwLCAweDAwMWUsIDB4MjIwNCwgMHg4MDA3LCAweGE4YjYsIDB4ODIxMCwKLQkweDIyMDQsIDB4ODAwNywgMHhhOGJhLCAweDIwMTEsIDB4MDIwNSwgMHgyMDEzLCAweDAwMDEsIDB4MjAxMSwKLQkweDAyNjAsIDB4MjIwNCwgMHg4MDA3LCAweGE4YmUsIDB4ODIxMCwgMHgyMjA0LCAweDgwMDcsIDB4YThjMiwKLQkweDkxODYsIDB4MDA0NiwgMHgxMTE4LCAweDIwMTEsIDB4MDI2MiwgMHgwMDEwLCAweDIwMTEsIDB4MDI2YSwKLQkweDAxNDYsIDB4MDFkNiwgMHgwMDM2LCAweDIwYTksIDB4MDAwMSwgMHgyMDE5LCAweDAwMDgsIDB4YTg2MCwKLQkweDIwZTgsIDB4YTg1YywgMHg5MDgwLCAweDAwMzEsIDB4MjBhMCwgMHgyMjA0LCAweDgwMDcsIDB4NDAwNCwKLQkweDgyMTAsIDB4ODMxOSwgMHgxZGQwLCAweDAwM2UsIDB4MDFjZSwgMHgwMTNlLCAweDIwMTEsIDB4MDIwNSwKLQkweDIwMTMsIDB4MDAwMCwgMHgwMDJlLCAweDA4MGMsIDB4NzAxMiwgMHgwMDllLCAweDAwMDUsIDB4MDBlNiwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGI4MDAsIDB4MDBiZSwgMHhkMGZjLCAweDAxMDgsIDB4MDAxMSwKLQkweDAwZWUsIDB4MDAwNSwgMHhhODgwLCAweGMwZTUsIDB4YTg4MiwgMHgwMDA1LCAweDAwZTYsIDB4MDBkNiwKLQkweDAwYzYsIDB4MDA3NiwgMHgwMDY2LCAweDAwNTYsIDB4MDA0NiwgMHgwMDI2LCAweDAwMTYsIDB4MDEyNiwKLQkweDIwOTEsIDB4ODAwMCwgMHgyMDI5LCAweDE5ZjQsIDB4MjUyYywgMHgyMDIxLCAweDE5ZmIsIDB4MjQyNCwKLQkweDIwNjEsIDB4MWRkYywgMHgyMDcxLCAweDE4MDAsIDB4NzY1NCwgMHg3MDc0LCAweDk2MDYsIDB4MDU3OCwKLQkweDY3MjAsIDB4OTc4NiwgMHgwMDAxLCAweDAxMTgsIDB4OTc4NiwgMHgwMDA4LCAweDE1MDAsIDB4MjUwMCwKLQkweDljMDYsIDB4MDFlOCwgMHgyNDAwLCAweDljMDYsIDB4MDFkMCwgMHgwODBjLCAweGVhYmUsIDB4MDFiOCwKLQkweDA4MGMsIDB4ZWFjZSwgMHgxMWEwLCAweDYwMDAsIDB4OTA4NiwgMHgwMDA0LCAweDExMjAsIDB4MDAxNiwKLQkweDA4MGMsIDB4MWFkMywgMHgwMDFlLCAweDA4MGMsIDB4ZDEyMSwgMHgxMTEwLCAweDA4MGMsIDB4MzM0NCwKLQkweDA4MGMsIDB4ZDEzMiwgMHgxMTEwLCAweDA4MGMsIDB4YmI1YywgMHgwODBjLCAweGIxYTcsIDB4OWNlMCwKLQkweDAwMWMsIDB4MjAwMSwgMHgxODFhLCAweDIwMDQsIDB4OWMwMiwgMHgxMjA4LCAweDA4NTgsIDB4MDEyZSwKLQkweDAwMWUsIDB4MDAyZSwgMHgwMDRlLCAweDAwNWUsIDB4MDA2ZSwgMHgwMDdlLCAweDAwY2UsIDB4MDBkZSwKLQkweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwgMHhkMGRjLCAweDAwMDUsIDB4MDAwNiwKLQkweDIwMDEsIDB4MTgzNywgMHgyMDA0LCAweGQwOWMsIDB4MDAwZSwgMHgwMDA1LCAweDAwMDYsIDB4MDAzNiwKLQkweDAwNDYsIDB4MDgwYywgMHhkNjQ1LCAweDAxNjgsIDB4MjAxOSwgMHhmZmZmLCAweDkwMDUsIDB4MDEyOCwKLQkweDYwMTAsIDB4MDBiNiwgMHgyMDU4LCAweGJiYTAsIDB4MDBiZSwgMHgyMDIxLCAweDAwMDQsIDB4MDgwYywKLQkweDRlNTgsIDB4MDA0ZSwgMHgwMDNlLCAweDAwMGUsIDB4MDAwNSwgMHg2MDA0LCAweDkwODYsIDB4MDAwMSwKLQkweDExMjgsIDB4MDgwYywgMHhhN2UyLCAweDA4MGMsIDB4YjFhNywgMHg5MDA2LCAweDAwMDUsIDB4MDBlNiwKLQkweDAwYzYsIDB4MDBiNiwgMHgwMDQ2LCAweDIwNjEsIDB4MWRkYywgMHgyMDcxLCAweDE4MDAsIDB4NzQ1NCwKLQkweDcwNzQsIDB4ODAwMSwgMHg5NDAyLCAweDEyZDgsIDB4MjEwMCwgMHg5YzA2LCAweDAxNjgsIDB4NjAwMCwKLQkweDkwODYsIDB4MDAwMCwgMHgwMTQ4LCAweDYwMTAsIDB4MjA1OCwgMHhiOGEwLCAweDkyMDYsIDB4MTEyMCwKLQkweDYwMDQsIDB4OTA4NiwgMHgwMDAyLCAweDAxNDAsIDB4OWNlMCwgMHgwMDFjLCAweDIwMDEsIDB4MTgxYSwKLQkweDIwMDQsIDB4OWMwMiwgMHgxMjIwLCAweDBjNDAsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDgsIDB4OTAwNiwKLQkweDAwNGUsIDB4MDBiZSwgMHgwMGNlLCAweDAwZWUsIDB4MDAwNSwgMHgyMDAxLCAweDE4MTAsIDB4MjAwNCwKLQkweGQwYTQsIDB4MDE2MCwgMHgyMDAxLCAweDE4MzcsIDB4MjAwNCwgMHhkMGE0LCAweDAxMzgsIDB4MjAwMSwKLQkweDE4NDgsIDB4MjAwNCwgMHhkMGE0LCAweDExMTgsIDB4OTA4NSwgMHgwMDAxLCAweDAwMDUsIDB4OTAwNiwKLQkweDBjZTgsIDB4MDEyNiwgMHgwMDA2LCAweDAwZTYsIDB4MDAxNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE4NDAsIDB4ZDVhNCwgMHgwMTE4LCAweDcwMDQsIDB4ODAwMCwgMHg3MDA2LCAweGQ1YjQsIDB4MDExOCwKLQkweDcwMDAsIDB4ODAwMCwgMHg3MDAyLCAweGQ1YWMsIDB4MDE3OCwgMHgyNTAwLCAweDkwODQsIDB4MDAwNywKLQkweDkwOGUsIDB4MDAwMywgMHgwMTQ4LCAweDkwOGUsIDB4MDAwNCwgMHgwMTMwLCAweDkwOGUsIDB4MDAwNSwKLQkweDAxMTgsIDB4MjA3MSwgMHhmZmY2LCAweDAwODksIDB4MDAxZSwgMHgwMGVlLCAweDAwMGUsIDB4MDEyZSwKLQkweDAwMDUsIDB4MDEyNiwgMHgwMDA2LCAweDAwZTYsIDB4MjA5MSwgMHg4MDAwLCAweDIwNzEsIDB4ZmZlZSwKLQkweDAwMjEsIDB4MDBlZSwgMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwgMHgyZTA1LCAweDgwMDAsIDB4MjA3NywKLQkweDEyMjAsIDB4OGU3MCwgMHgyZTA1LCAweDgwMDAsIDB4MjA3NywgMHgwMDA1LCAweDAwZTYsIDB4MjA3MSwKLQkweGZmZWMsIDB4MGM5OSwgMHgwMGVlLCAweDAwMDUsIDB4MDBlNiwgMHgyMDcxLCAweGZmZjAsIDB4MGM2OSwKLQkweDAwZWUsIDB4MDAwNSwgMHgwMTI2LCAweDAwMDYsIDB4MDBlNiwgMHgyMDkxLCAweDgwMDAsIDB4MjA3MSwKLQkweDE4NDAsIDB4NzAxNCwgMHg4MDAwLCAweDcwMTYsIDB4MDBlZSwgMHgwMDBlLCAweDAxMmUsIDB4MDAwNSwKLQkweDAwMDEsIDB4MDAwMiwgMHgwMDA0LCAweDAwMDgsIDB4MDAxMCwgMHgwMDIwLCAweDAwNDAsIDB4MDA4MCwKLQkweDAxMDAsIDB4MDIwMCwgMHgwNDAwLCAweDA4MDAsIDB4MTAwMCwgMHgyMDAwLCAweDQwMDAsIDB4ODAwMCwKLQkweGFhNmUKLX07Ci0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVuc2lnbmVkIHNob3J0IGZ3MjMyMmlweF9sZW5ndGgwMSA9IDB4ZTcxOTsKLSNlbHNlCi11bnNpZ25lZCBzaG9ydCByaXNjX2NvZGVfbGVuZ3RoMDEgPSAweGU3MTk7Ci0jZW5kaWYKLQotLyoKLSAqCi0gKi8KLQotdW5zaWduZWQgbG9uZyByc2VxaXB4X2NvZGVfYWRkcjAxID0gMHgwMDAxYzAwMCA7Ci11bnNpZ25lZCBzaG9ydCByc2VxaXB4X2NvZGUwMVtdID0geyAKLTB4MDAwYiwgMHgwMDAzLCAweDAwMDAsIDB4MGE0ZSwgMHgwMDAxLCAweGMwMDAsIDB4MDAwOCwgMHg4MDY0LAotCTB4MDAwMCwgMHgwMDEwLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDAxMDEsIDB4MDAwMywgMHhjMDA3LAotCTB4MDAwOCwgMHg4MGUwLCAweDAwMDgsIDB4ZmYwMCwgMHgwMDAwLCAweDgwZTIsIDB4MDAwOCwgMHhmZjAwLAotCTB4MDAwOCwgMHgwMTYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweGExMDEsIDB4MDAwYiwgMHhjMDBmLAotCTB4MDAwOCwgMHgwZDAyLCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwYiwgMHg2MGM2LAotCTB4MDAwOCwgMHg4MGUwLCAweDAwMDAsIDB4MDEwMCwgMHgwMDBiLCAweDU4MTksIDB4MDAwMywgMHg3YjA4LAotCTB4MDAwMywgMHg1MjQxLCAweDAwMGIsIDB4YzgxMywgMHgwMDA5LCAweGJhYzAsIDB4MDAwMCwgMHgwMDhhLAotCTB4MDAwMywgMHg4ODEzLCAweDAwMGEsIDB4NzA0MiwgMHgwMDAzLCAweDg4MTMsIDB4MDAwMCwgMHgxNWZjLAotCTB4MDAwYiwgMHhiMDEzLCAweDAwMDksIDB4YzRjMCwgMHgwMDAwLCAweDcwMDAsIDB4MDAwMSwgMHhmZmEwLAotCTB4MDAwMCwgMHgyMDAwLCAweDAwMDMsIDB4OTNjZCwgMHgwMDA4LCAweDgwOGMsIDB4MDAwMCwgMHgwMDAxLAotCTB4MDAwNywgMHgwMDAwLCAweDAwMDcsIDB4MDAwMCwgMHgwMDAwLCAweDQwZDQsIDB4MDAwYSwgMHg0MDQ3LAotCTB4MDAwOCwgMHg4MDhjLCAweDAwMDAsIDB4MDAwMiwgMHgwMDA3LCAweDAwMDAsIDB4MDAwYiwgMHgwODMyLAotCTB4MDAwMCwgMHg0MDIyLCAweDAwMDMsIDB4MDAzOCwgMHgwMDA4LCAweDQxMjIsIDB4MDAwOSwgMHhlYWMwLAotCTB4MDAwOCwgMHhmZjAwLCAweDAwMDksIDB4ZmZlMCwgMHgwMDA4LCAweDA1MDAsIDB4MDAwYiwgMHgwYmY0LAotCTB4MDAwMiwgMHg0NDQ3LCAweDAwMDMsIDB4OGJmMSwgMHgwMDA4LCAweDBiZmUsIDB4MDAwMSwgMHgxMWEwLAotCTB4MDAwYiwgMHgxM2QzLCAweDAwMDEsIDB4MGNhMCwgMHgwMDBiLCAweDEzZDMsIDB4MDAwMSwgMHg5MTgwLAotCTB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDAzLCAweGMwNDYsIDB4MDAwOCwgMHg4MDhjLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDgsIDB4MDA2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwMCwgMHgwMDA0LAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDAsIDB4MDQxMSwgMHgwMDBiLCAweGMwNGUsIDB4MDAwMCwgMHgwM2ZlLAotCTB4MDAwMSwgMHg0M2UwLCAweDAwMDMsIDB4OGJkMCwgMHgwMDA5LCAweGMyYzAsIDB4MDAwOCwgMHgwMGZmLAotCTB4MDAwMSwgMHgwMmUwLCAweDAwMDMsIDB4OGJkMCwgMHgwMDAxLCAweDkxODAsIDB4MDAwOCwgMHgwMDA1LAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgwMDE5LCAweDAwMDMsIDB4YzA1ZCwgMHgwMDAyLCAweDAyNDAsIDB4MDAwYiwgMHgwYmNkLAotCTB4MDAwOCwgMHgwMGZjLCAweDAwMDMsIDB4MzNkMCwgMHgwMDBhLCAweDAyNDQsIDB4MDAwMywgMHgwODZmLAotCTB4MDAwNCwgMHgwMjFhLCAweDAwMDEsIDB4OTE4MCwgMHgwMDAwLCAweDAwMDcsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAyLCAweDAyMzQsIDB4MDAwOCwgMHg3ZjA0LAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDAsIDB4MDQwYSwgMHgwMDAzLCAweGMwNmUsIDB4MDAwYSwgMHgwMjQ4LAotCTB4MDAwYiwgMHgwODc5LCAweDAwMDEsIDB4OTE4MCwgMHgwMDA4LCAweDAwMDYsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwOCwgMHg4MDAyLCAweDAwMDgsIDB4MDAwMywgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwMjBhLAotCTB4MDAwYiwgMHhjMDc4LCAweDAwMDAsIDB4MTEyYSwgMHgwMDA4LCAweDAwMmUsIDB4MDAwOCwgMHgwMjJjLAotCTB4MDAwMiwgMHgzYTQ0LCAweDAwMDMsIDB4ODgxMywgMHgwMDA4LCAweDgwOGMsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwOCwgMHgxNzYwLCAweDAwMDgsIDB4ODA2MiwgMHgwMDA4LCAweDAwMGYsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwMDExLCAweDAwMDMsIDB4YzA4NSwgMHgwMDA4LCAweDAxZmUsIDB4MDAwOSwgMHg0MmUwLAotCTB4MDAwYiwgMHg4YmMwLCAweDAwMDAsIDB4MDBmZSwgMHgwMDAxLCAweDQzZTAsIDB4MDAwYiwgMHg4YmMwLAotCTB4MDAwMCwgMHgxNzM0LCAweDAwMDAsIDB4MTUzMCwgMHgwMDA4LCAweDE2MzIsIDB4MDAwOCwgMHgwZDJhLAotCTB4MDAwMSwgMHg5ODgwLCAweDAwMDgsIDB4MDAxMiwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDFlMGEsIDB4MDAwMywgMHhjMDk3LAotCTB4MDAwOCwgMHg4MDhhLCAweDAwMDgsIDB4MDAwMywgMHgwMDAwLCAweDFhNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwMCwgMHgwMDAyLCAweDAwMGIsIDB4NTg5ZCwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgzNjc5LAotCTB4MDAwYiwgMHhjMGEwLCAweDAwMGIsIDB4NThhMSwgMHgwMDA4LCAweDgwNTQsIDB4MDAwOCwgMHgwMDExLAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDgsIDB4MTAxMCwgMHgwMDA4LCAweDFlZmMsIDB4MDAwMywgMHgzMDEzLAotCTB4MDAwNCwgMHgwMGFhLCAweDAwMDMsIDB4MDAxMywgMHgwMDAwLCAweDFjNjAsIDB4MDAwMCwgMHgxYjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDIzMSwgMHgwMDAzLCAweGMwYWUsIDB4MDAwMywgMHg1OGFmLAotCTB4MDAwOCwgMHgwMTQwLCAweDAwMDAsIDB4MDI0MiwgMHgwMDAyLCAweDFmNDMsIDB4MDAwMywgMHg4OGI5LAotCTB4MDAwMCwgMHgwZDQ0LCAweDAwMDgsIDB4MGQ0NiwgMHgwMDA4LCAweDAzNDgsIDB4MDAwOCwgMHgwNDRhLAotCTB4MDAwYiwgMHgwMGJkLCAweDAwMDgsIDB4MDM0NCwgMHgwMDA4LCAweDA0NDYsIDB4MDAwOCwgMHgwNTQ4LAotCTB4MDAwMCwgMHgwNjRhLCAweDAwMGEsIDB4MTk0OCwgMHgwMDAzLCAweDA4YzAsIDB4MDAwOCwgMHgwZDRhLAotCTB4MDAwMywgMHg1OGMwLCAweDAwMDgsIDB4ODA1NCwgMHgwMDAwLCAweDAwMDEsIDB4MDAwMCwgMHg4MDc0LAotCTB4MDAwOCwgMHgyMDIwLCAweDAwMGYsIDB4NDAwMCwgMHgwMDAyLCAweDcwNDMsIDB4MDAwMywgMHg4ODE2LAotCTB4MDAwMiwgMHg3MDQwLCAweDAwMGIsIDB4ODk0OSwgMHgwMDAwLCAweDQ4MjAsIDB4MDAwOCwgMHgwYmZlLAotCTB4MDAwOSwgMHgxMGEwLCAweDAwMDMsIDB4MTE0MCwgMHgwMDAxLCAweDBjYTAsIDB4MDAwMywgMHgxMTQwLAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA5LCAweDkwODAsIDB4MDAwMCwgMHgwMDA4LAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDAwMDksIDB4MDAwYiwgMHhjMGQ3LAotCTB4MDAwMSwgMHg4MGUwLCAweDAwMDgsIDB4MDAwMywgMHgwMDBiLCAweDg5NDAsIDB4MDAwMCwgMHg4MDYwLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMDksIDB4OTA4MCwgMHgwMDAwLCAweDAwMDQsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDBiLCAweGMwZTIsIDB4MDAwOCwgMHgwMDYwLAotCTB4MDAwOCwgMHg4MDYyLCAweDAwMDAsIDB4MDAwNCwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwNDExLAotCTB4MDAwYiwgMHhjMGU4LCAweDAwMDgsIDB4NGFmZSwgMHgwMDA5LCAweDAzZTAsIDB4MDAwYiwgMHg4OTQwLAotCTB4MDAwOSwgMHhjYmMwLCAweDAwMDgsIDB4MDBmZiwgMHgwMDAxLCAweDAyZTAsIDB4MDAwYiwgMHg4OTQwLAotCTB4MDAwMCwgMHg0OWI0LCAweDAwMDIsIDB4NGI0ZSwgMHgwMDBiLCAweDg5NTEsIDB4MDAwOCwgMHg4MDhhLAotCTB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4MThmZSwgMHgwMDAxLCAweDEwZTAsIDB4MDAwYiwgMHg4OGZhLAotCTB4MDAwMiwgMHgxOTJmLCAweDAwMDgsIDB4N2YzMiwgMHgwMDA4LCAweDE1ZmUsIDB4MDAwMSwgMHgxMGUwLAotCTB4MDAwYiwgMHg4OGZmLCAweDAwMDIsIDB4MTYyZiwgMHgwMDA4LCAweDdmMmMsIDB4MDAwMCwgMHg4MDYwLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMDksIDB4OTA4MCwgMHgwMDAwLCAweDAwMDcsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDAzLCAweGMxMDYsIDB4MDAwYSwgMHgwMDRmLAotCTB4MDAwYiwgMHg4OTM3LCAweDAwMGEsIDB4MDA0MCwgMHgwMDBiLCAweDA5MjEsIDB4MDAwMiwgMHgwMDRlLAotCTB4MDAwYiwgMHgwOTIxLCAweDAwMDIsIDB4MDAzMCwgMHgwMDAyLCAweDdmMmYsIDB4MDAwMCwgMHg3ZjAwLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwYSwgMHgwMDAzLCAweGMxMTIsIDB4MDAwOCwgMHgxMDEwLAotCTB4MDAwNCwgMHgwMjAxLCAweDAwMDMsIDB4YjExYSwgMHgwMDA0LCAweDAzODcsIDB4MDAwYywgMHgwMWViLAotCTB4MDAwMywgMHg3ODE2LCAweDAwMDMsIDB4MDAxMywgMHgwMDAwLCAweDA4MDYsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwMCwgMHgwMDFmLCAweDAwMDQsIDB4MDM4NywgMHgwMDAwLCAweDAzMTAsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwMywgMHgwMTE4LCAweDAwMGEsIDB4MDAyZiwgMHgwMDAwLCAweDdmMDAsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwMDBhLCAweDAwMGIsIDB4YzEyNSwgMHgwMDA0LCAweDAxYzQsIDB4MDAwYSwgMHgwMDQwLAotCTB4MDAwYiwgMHgwOTNhLCAweDAwMDQsIDB4MDIzMSwgMHgwMDAwLCAweDgwMDAsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA5LCAweDkwODAsIDB4MDAwOCwgMHgwMDA2LAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDAwMGEsIDB4MDAwMywgMHhjMTMzLAotCTB4MDAwMCwgMHg4MDcyLCAweDAwMDAsIDB4NDAwMCwgMHgwMDAzLCAweDAxMTgsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwOCwgMHgwMDFlLCAweDAwMDMsIDB4MDEzYywgMHgwMDA4LCAweDgwMTAsIDB4MDAwOCwgMHgwMDFkLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDgsIDB4MTAxMCwgMHgwMDA0LCAweDAzODcsIDB4MDAwMywgMHgwMDE2LAotCTB4MDAwMiwgMHg0YjRlLCAweDAwMDMsIDB4MDk0NiwgMHgwMDA4LCAweDgwOGEsIDB4MDAwMCwgMHgwMDA0LAotCTB4MDAwYiwgMHg2MTQ2LCAweDAwMGYsIDB4ODAwMCwgMHgwMDA4LCAweDgwOGEsIDB4MDAwMCwgMHgwMDA0LAotCTB4MDAwMywgMHgwMDE2LCAweDAwMDgsIDB4ODA4YSwgMHgwMDAwLCAweDAwMDQsIDB4MDAwNywgMHgwMDAwLAotCTB4MDAwNywgMHgwMDAwLCAweDAwMDgsIDB4ODBlMCwgMHgwMDA4LCAweDAyMDIsIDB4MDAwYiwgMHg2MTQ5LAotCTB4MDAwYiwgMHgwMDE0LCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOSwgMHg5MDgwLAotCTB4MDAwOCwgMHgwMDExLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwYiwgMHhjMTU4LCAweDAwMGEsIDB4MDA0ZiwgMHgwMDBiLCAweDg5YjUsIDB4MDAwMCwgMHg4MDYwLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMDksIDB4OTA4MCwgMHgwMDA4LCAweDAwMDUsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDBiLCAweGMxNjIsIDB4MDAwOCwgMHgwMDYwLAotCTB4MDAwOCwgMHg4MDYyLCAweDAwMDAsIDB4MDAxZiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwMjA5LAotCTB4MDAwYiwgMHhjMTY4LCAweDAwMGEsIDB4MDE0YiwgMHgwMDAzLCAweDA5YjUsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwOCwgMHgwMDBmLCAweDAwMDAsIDB4ODA2NiwgMHgwMDAwLCAweDAyMTEsIDB4MDAwMywgMHhjMTZmLAotCTB4MDAwOCwgMHgwMWZlLCAweDAwMDEsIDB4MDJkMCwgMHgwMDBiLCAweDg5YjUsIDB4MDAwNCwgMHgwMWNkLAotCTB4MDAwMywgMHgwOWI1LCAweDAwMDgsIDB4MDNhMCwgMHgwMDA4LCAweDgwMDQsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwMCwgMHg4MDA2LCAweDAwMDAsIDB4MDA0MywgMHgwMDA4LCAweDQ5MDgsIDB4MDAwOCwgMHg4MDhhLAotCTB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOSwgMHg5MDgwLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwOCwgMHgwNDFhLAotCTB4MDAwMywgMHhjMTg0LCAweDAwMDMsIDB4ZTE4NSwgMHgwMDA4LCAweDQ5MDgsIDB4MDAwOCwgMHg0ODBhLAotCTB4MDAwOCwgMHg4MDhhLCAweDAwMDAsIDB4MDAwNCwgMHgwMDA4LCAweDAwNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwOCwgMHgwMDJiLCAweDAwMDAsIDB4ODA2NiwgMHgwMDAwLCAweDA0MTEsIDB4MDAwYiwgMHhjMThmLAotCTB4MDAwOCwgMHgwNGZlLCAweDAwMDksIDB4MDJhMCwgMHgwMDAzLCAweDkxOTYsIDB4MDAwMiwgMHgwNTAwLAotCTB4MDAwYiwgMHgwOWIyLCAweDAwMGIsIDB4MDE5NywgMHgwMDAwLCAweDA1ZmUsIDB4MDAwMSwgMHgwM2EwLAotCTB4MDAwYiwgMHgxMWIyLCAweDAwMDAsIDB4MGQwYywgMHgwMDA4LCAweDBkMGUsIDB4MDAwOCwgMHgwZDEwLAotCTB4MDAwMCwgMHgwZDEyLCAweDAwMDgsIDB4MDA2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwMCwgMHgwMDBkLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDgzMiwgMHgwMDBiLCAweGMxYTIsIDB4MDAwMCwgMHg4MDBhLAotCTB4MDAwMCwgMHg4MDA1LCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOSwgMHg5MDgwLAotCTB4MDAwOCwgMHgwMDExLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwOCwgMHgwYTEyLAotCTB4MDAwMywgMHhjMWFjLCAweDAwMDgsIDB4NTAwNiwgMHgwMDA4LCAweDEwMGUsIDB4MDAwYywgMHgwMWQ4LAotCTB4MDAwMywgMHg3ODE2LCAweDAwMDMsIDB4MDAxMywgMHgwMDA4LCAweDAyMDgsIDB4MDAwOCwgMHgwMzBhLAotCTB4MDAwMywgMHgwMTk5LCAweDAwMDQsIDB4MDFjNCwgMHgwMDA4LCAweDgwOGEsIDB4MDAwMCwgMHgwMDA0LAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDgsIDB4MDAyMSwgMHgwMDA0LCAweDAzODcsIDB4MDAwOCwgMHgxMDEwLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDAsIDB4NDgxMCwgMHgwMDA0LCAweDAzODcsIDB4MDAwOCwgMHg0OTEwLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDgsIDB4ODA4YSwgMHgwMDAwLCAweDAwMDQsIDB4MDAwMywgMHgwMDE2LAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA5LCAweDkwODAsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweGI0MGEsIDB4MDAwYiwgMHhjMWNiLAotCTB4MDAwZiwgMHg0MDAwLCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMCwgMHgwYTYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDAsIDB4MDQxMSwgMHgwMDAzLCAweGMxZDIsIDB4MDAwMiwgMHgwMjEwLAotCTB4MDAwMSwgMHhmZmMwLCAweDAwMDAsIDB4MDAwNywgMHgwMDA5LCAweDAzZTAsIDB4MDAwZiwgMHg0MDAwLAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAxLCAweDgzODAsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwOSwgMHgwYTgwLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwZTBhLAotCTB4MDAwYiwgMHhjMWUwLCAweDAwMDIsIDB4MDMwMCwgMHgwMDAxLCAweGZmYzAsIDB4MDAwMCwgMHgwMDA3LAotCTB4MDAwMCwgMHg3ZjA2LCAweDAwMDIsIDB4MGEwMCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwNjBhLCAweDAwMGIsIDB4YzFlOSwgMHgwMDBmLCAweDQwMDAsIDB4MDAwMCwgMHgwZGEwLAotCTB4MDAwOCwgMHgwZGEyLCAweDAwMDgsIDB4MGRhNCwgMHgwMDA5LCAweDg4ODAsIDB4MDAwMCwgMHgwMDAxLAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHhhMDEyLCAweDAwMDAsIDB4MGRhNiwgMHgwMDA4LCAweDBkYTgsIDB4MDAwMCwgMHgwZGFhLAotCTB4MDAwMCwgMHgwZGFjLCAweDAwMDMsIDB4YzFmOSwgMHgwMDA5LCAweDg4ODAsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweGEwM2EsIDB4MDAwMywgMHhjMWZmLAotCTB4MDAwZiwgMHg0MDAwLCAweDAwMDksIDB4ODg4MCwgMHgwMDA4LCAweDAwMDUsIDB4MDAwMCwgMHg4MDYwLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwYiwgMHhjMjA4LCAweDAwMDgsIDB4MDA2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwMCwgMHgwMDBkLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAyMSwgMHgwMDBiLCAweGMyMGUsIDB4MDAwMCwgMHgwMGZlLAotCTB4MDAwMSwgMHgwMWQwLCAweDAwMDMsIDB4OGExNywgMHgwMDA4LCAweDAyZmUsIDB4MDAwOSwgMHgwM2QwLAotCTB4MDAwYiwgMHgwYTE3LCAweDAwMDAsIDB4MGQwNiwgMHgwMDBmLCAweDQwMDAsIDB4MDAwMCwgMHg4MDA2LAotCTB4MDAwMCwgMHgwMDAxLCAweDAwMGYsIDB4NDAwMCwgMHgwMDA4LCAweDAwNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwOCwgMHgwMDJiLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweGEwNDEsIDB4MDAwYiwgMHhjMjFmLAotCTB4MDAwMiwgMHgwMjQzLCAweDAwMGIsIDB4OGEyNiwgMHgwMDAwLCAweDU0YWMsIDB4MDAwMCwgMHg1NWFlLAotCTB4MDAwOCwgMHgwZGE4LCAweDAwMDAsIDB4MGRhYSwgMHgwMDAwLCAweDUwYjAsIDB4MDAwMCwgMHg1MWIyLAotCTB4MDAwMCwgMHgwZGI0LCAweDAwMDgsIDB4MGRiNiwgMHgwMDA4LCAweDAwNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwMCwgMHgwMDA3LCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweGE0NTIsIDB4MDAwYiwgMHhjMjJmLAotCTB4MDAwZiwgMHg0MDAwLCAweDAwMGEsIDB4Mzk0NSwgMHgwMDBiLCAweDhhM2IsIDB4MDAwMCwgMHg4MDcyLAotCTB4MDAwOCwgMHg0MDQwLCAweDAwMDcsIDB4MDAwMCwgMHgwMDBhLCAweDM5NDUsIDB4MDAwMywgMHg4YTM5LAotCTB4MDAwZiwgMHg0MDAwLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDQwMDAsIDB4MDAwNywgMHgwMDAwLAotCTB4MDAwNywgMHgwMDAwLCAweDAwMDcsIDB4MDAwMCwgMHgwMDBhLCAweDM5NDUsIDB4MDAwYiwgMHgwYTMzLAotCTB4MDAwYiwgMHgwMjNiLCAweDAwMGEsIDB4M2E0MCwgMHgwMDAzLCAweDg4MTksIDB4MDAwMSwgMHhhYmQwLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDAsIDB4N2YyNCwgMHgwMDAzLCAweDVhNDYsIDB4MDAwOCwgMHg4MDU0LAotCTB4MDAwMCwgMHgwMDAyLCAweDAwMDIsIDB4MTI0MiwgMHgwMDAzLCAweDBhOGMsIDB4MDAwYSwgMHgzYTQ1LAotCTB4MDAwYiwgMHgwYTdiLCAweDAwMGEsIDB4MWUxMCwgMHgwMDAwLCAweDdmM2MsIDB4MDAwYiwgMHgwYTc4LAotCTB4MDAwMiwgMHgxZDAwLCAweDAwMDAsIDB4N2YzYSwgMHgwMDAwLCAweDBkNjAsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDAzLCAweGMyNTYsIDB4MDAwOCwgMHgwMGZjLAotCTB4MDAwMywgMHhiMjc1LCAweDAwMDAsIDB4MWM2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwMCwgMHgwMDAxLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDAwOSwgMHgwMDBiLCAweGMyNWUsIDB4MDAwOCwgMHgwMGZjLAotCTB4MDAwYiwgMHgzM2E5LCAweDAwMDAsIDB4MDAzOCwgMHgwMDA4LCAweDAwNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwMCwgMHgwMDE5LCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDAwMDksIDB4MDAwYiwgMHhjMjY3LAotCTB4MDAwOSwgMHg4MGMwLCAweDAwMDgsIDB4MDBmZiwgMHgwMDA4LCAweDdmM2UsIDB4MDAwMCwgMHgwZDYwLAotCTB4MDAwOCwgMHgwZWZlLCAweDAwMDEsIDB4MWY4MCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwMDA5LCAweDAwMDMsIDB4YzI3MSwgMHgwMDA4LCAweDAwM2EsIDB4MDAwMCwgMHgxZGZlLAotCTB4MDAwYiwgMHgwMjUyLCAweDAwMDgsIDB4MDAzNiwgMHgwMDA0LCAweDAwYWEsIDB4MDAwYiwgMHgwMjhjLAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDAsIDB4MjAwMCwgMHgwMDBiLCAweDAyOGMsIDB4MDAwMiwgMHgzYTQ0LAotCTB4MDAwYiwgMHgwYmQ2LCAweDAwMDAsIDB4ODA3NCwgMHgwMDAwLCAweDEwMDAsIDB4MDAwMSwgMHhhZGQwLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDgsIDB4N2YwZSwgMHgwMDAzLCAweGIzYTYsIDB4MDAwMSwgMHhhN2QwLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDAsIDB4N2YwMCwgMHgwMDA5LCAweGE2ZDAsIDB4MDAwOCwgMHgwMDAwLAotCTB4MDAwOSwgMHgwMGQwLCAweDAwMDMsIDB4OGE5YywgMHgwMDAwLCAweDgwNzQsIDB4MDAwOCwgMHg0MDQwLAotCTB4MDAwMywgMHg1YThjLCAweDAwMDMsIDB4NTI0MSwgMHgwMDBhLCAweDNhNDYsIDB4MDAwMywgMHg4YTljLAotCTB4MDAwMiwgMHgzYTQ3LCAweDAwMDMsIDB4MGE5NywgMHgwMDA4LCAweDgwNTQsIDB4MDAwMCwgMHgwMDA0LAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDAsIDB4ODAwMCwgMHgwMDAzLCAweDAyZmMsIDB4MDAwOSwgMHg5MmMwLAotCTB4MDAwMCwgMHgwZmM4LCAweDAwMGIsIDB4MDgxMywgMHgwMDBhLCAweDEyNDYsIDB4MDAwYiwgMHg4YmEwLAotCTB4MDAwMCwgMHgxYTYwLCAweDAwMDgsIDB4ODA2MiwgMHgwMDAwLCAweDAwMDIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgzNjdhLCAweDAwMGIsIDB4YzJhMSwgMHgwMDA5LCAweDkyYzAsIDB4MDAwOCwgMHgwNzgwLAotCTB4MDAwMywgMHg4YmJhLCAweDAwMDIsIDB4MTI0YiwgMHgwMDBiLCAweDBhYWEsIDB4MDAwMiwgMHgyZTRkLAotCTB4MDAwMiwgMHgyZTRkLCAweDAwMDMsIDB4MGJhNiwgMHgwMDBhLCAweDNhNDYsIDB4MDAwYiwgMHg4YWJhLAotCTB4MDAwYiwgMHg1YWFjLCAweDAwMDgsIDB4ODA1NCwgMHgwMDAwLCAweDAwMDQsIDB4MDAwYSwgMHgxMjQzLAotCTB4MDAwYiwgMHgwYWZhLCAweDAwMDgsIDB4ODAxMCwgMHgwMDAwLCAweDAwMGQsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwYSwgMHgxOTQ4LCAweDAwMGIsIDB4MGFiNywgMHgwMDBjLCAweDAzN2MsIDB4MDAwMCwgMHgxODEwLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDMsIDB4MDJmYSwgMHgwMDBhLCAweDE5NDgsIDB4MDAwYiwgMHgwYWJlLAotCTB4MDAwYSwgMHgxMjQzLCAweDAwMDMsIDB4MGJhOSwgMHgwMDBhLCAweDE5NGQsIDB4MDAwMywgMHgwYWMyLAotCTB4MDAwYSwgMHgxMjQzLCAweDAwMGIsIDB4MGJiMCwgMHgwMDAzLCAweDVhYzIsIDB4MDAwOCwgMHg4MDU0LAotCTB4MDAwMCwgMHgwMDA0LCAweDAwMGEsIDB4MTkyZSwgMHgwMDA4LCAweDdmMzIsIDB4MDAwYSwgMHgxOTQ3LAotCTB4MDAwMywgMHgwYWY0LCAweDAwMDIsIDB4MTk0ZiwgMHgwMDBiLCAweDBhZDIsIDB4MDAwYywgMHgwMzdjLAotCTB4MDAwMCwgMHgxODEwLCAweDAwMDQsIDB4MDIwMSwgMHgwMDBiLCAweGIyZWQsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwYywgMHgwMWViLCAweDAwMDMsIDB4MDJmYSwgMHgwMDAwLCAweDFhNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwMCwgMHgwMDFmLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDAwMDksIDB4MDAwMywgMHhjMmQ3LAotCTB4MDAwYSwgMHgwMDRjLCAweDAwMGIsIDB4OGFmNCwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMSwgMHg5ODgwLCAweDAwMDAsIDB4MDAwNywgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgzMjBhLCAweDAwMDMsIDB4YzJlMSwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMSwgMHg5ODgwLCAweDAwMDgsIDB4MDAxMiwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgxZTBhLCAweDAwMGIsIDB4YzJlOSwgMHgwMDAwLCAweDE4MjYsIDB4MDAwMCwgMHgxOTI4LAotCTB4MDAwMywgMHgwMmZhLCAweDAwMDAsIDB4MDgwNiwgMHgwMDA4LCAweDgwMTAsIDB4MDAwMCwgMHgwMDFmLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDAsIDB4MDMxMCwgMHgwMDA0LCAweDAzODcsIDB4MDAwMywgMHgwMmZhLAotCTB4MDAwYywgMHgwMzdjLCAweDAwMDgsIDB4ODAxMCwgMHgwMDAwLCAweDAwMDEsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwMCwgMHgxODEwLCAweDAwMDQsIDB4MDM4NywgMHgwMDAwLCAweDgwNzQsIDB4MDAwOCwgMHhmMDAwLAotCTB4MDAwMCwgMHgwZDMwLCAweDAwMDIsIDB4M2E0MiwgMHgwMDAzLCAweDhiMDIsIDB4MDAwMCwgMHgxNWZjLAotCTB4MDAwMywgMHhiMDdlLCAweDAwMDMsIDB4MDAxMywgMHgwMDAwLCAweDgwNzQsIDB4MDAwMCwgMHgwNTAxLAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDgsIDB4MDAwYywgMHgwMDA0LCAweDAzODcsIDB4MDAwMywgMHgwMDEzLAotCTB4MDAwOSwgMHhiYmUwLCAweDAwMDgsIDB4MDAzMCwgMHgwMDBiLCAweDhiMWUsIDB4MDAwMCwgMHgxOGZlLAotCTB4MDAwOSwgMHgzY2UwLCAweDAwMDMsIDB4MGIxYiwgMHgwMDA4LCAweDE1ZmUsIDB4MDAwOSwgMHgzY2UwLAotCTB4MDAwMywgMHgwYjFiLCAweDAwMDgsIDB4MTNmZSwgMHgwMDA5LCAweDNjZTAsIDB4MDAwYiwgMHg4YjE3LAotCTB4MDAwYywgMHgwMzc1LCAweDAwMDgsIDB4MGQyNiwgMHgwMDBiLCAweDAzMTgsIDB4MDAwNCwgMHgwMzc3LAotCTB4MDAwOCwgMHg4MDc2LCAweDAwMDAsIDB4MDA0MCwgMHgwMDBiLCAweDAzNzIsIDB4MDAwOCwgMHg4MDc2LAotCTB4MDAwOCwgMHgwMDQxLCAweDAwMGIsIDB4MDM3MiwgMHgwMDA5LCAweGJiZTAsIDB4MDAwMCwgMHgwMDMyLAotCTB4MDAwMywgMHg4YjIzLCAweDAwMDgsIDB4M2MxZSwgMHgwMDBiLCAweDAzNzIsIDB4MDAwOSwgMHhiYmUwLAotCTB4MDAwMCwgMHgwMDNiLCAweDAwMGIsIDB4OGIyOCwgMHgwMDAwLCAweDNjZGMsIDB4MDAwYiwgMHgwMzcyLAotCTB4MDAwOSwgMHhiYmUwLCAweDAwMDgsIDB4MDAzNSwgMHgwMDBiLCAweDhiMmUsIDB4MDAwMCwgMHg4MDcyLAotCTB4MDAwMCwgMHg4MDAwLCAweDAwMGIsIDB4MDRlNSwgMHgwMDA5LCAweGJiZTAsIDB4MDAwOCwgMHgwMDM2LAotCTB4MDAwYiwgMHgwYzA2LCAweDAwMDksIDB4YmJlMCwgMHgwMDAwLCAweDAwMzcsIDB4MDAwYiwgMHg4YjUzLAotCTB4MDAwMCwgMHgxOGZlLCAweDAwMDksIDB4M2NlMCwgMHgwMDBiLCAweDhiMWIsIDB4MDAwOCwgMHg4MDc2LAotCTB4MDAwMCwgMHgwMDQwLCAweDAwMDAsIDB4MWE2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwMCwgMHgwMDBkLAotCTB4MDAwOSwgMHhhNmQwLCAweDAwMDgsIDB4MDAwMCwgMHgwMDA4LCAweDdmMDQsIDB4MDAwMSwgMHhhN2QwLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDAsIDB4N2YwNiwgMHgwMDAxLCAweGE4ZDAsIDB4MDAwOCwgMHgwMDAwLAotCTB4MDAwOCwgMHg3ZjA4LCAweDAwMDksIDB4YTlkMCwgMHgwMDA4LCAweDAwMDAsIDB4MDAwMCwgMHg3ZjBhLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDAsIDB4MDQyMiwgMHgwMDAzLCAweGMzNGEsIDB4MDAwYywgMHgwMzdjLAotCTB4MDAwOCwgMHg4MDU0LCAweDAwMDAsIDB4MDAwNCwgMHgwMDAwLCAweDgwNzQsIDB4MDAwOCwgMHhmMDAwLAotCTB4MDAwMCwgMHg4MDcyLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAzLCAweDAyZmMsIDB4MDAwOSwgMHhiYmUwLAotCTB4MDAwMCwgMHgwMDM4LCAweDAwMGIsIDB4OGI2NSwgMHgwMDAwLCAweDE4ZmUsIDB4MDAwOSwgMHgzY2UwLAotCTB4MDAwYiwgMHgwYjYyLCAweDAwMDgsIDB4MTVmZSwgMHgwMDA5LCAweDNjZTAsIDB4MDAwYiwgMHg4YjExLAotCTB4MDAwNCwgMHgwMzc3LCAweDAwMDgsIDB4ODA3NiwgMHgwMDAwLCAweDAwNDAsIDB4MDAwMCwgMHg4MDcyLAotCTB4MDAwMCwgMHg4MDAwLCAweDAwMDMsIDB4MDNjZCwgMHgwMDA4LCAweDgwNzYsIDB4MDAwOCwgMHgwMDQyLAotCTB4MDAwYiwgMHgwMzcyLCAweDAwMDksIDB4YmJlMCwgMHgwMDAwLCAweDAwMTYsIDB4MDAwYiwgMHg4YjcyLAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDgsIDB4MDgwOCwgMHgwMDAyLCAweDNhNDQsIDB4MDAwYiwgMHg4ODE4LAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDAsIDB4MDgwMCwgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHg4MDAwLAotCTB4MDAwZiwgMHg4MDAwLCAweDAwMDMsIDB4MDAxMywgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHg4MDAwLAotCTB4MDAwMywgMHgwMDEzLCAweDAwMDIsIDB4MTQzMCwgMHgwMDBiLCAweDAzNzgsIDB4MDAwYSwgMHgzZDMwLAotCTB4MDAwMCwgMHg3ZjAwLCAweDAwMDEsIDB4YmM4MCwgMHgwMDAwLCAweDAwMDcsIDB4MDAwMywgMHgwMzgwLAotCTB4MDAwYSwgMHgxOTMwLCAweDAwMDAsIDB4N2YwMCwgMHgwMDAxLCAweDk4ODAsIDB4MDAwMCwgMHgwMDA3LAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwMDBhLCAweDAwMDMsIDB4YzM4NSwgMHgwMDBmLCAweDQwMDAsIDB4MDAwYiwgMHgyMzhhLAotCTB4MDAwOCwgMHgwODcwLCAweDAwMGYsIDB4NDAwMCwgMHgwMDAyLCAweDcwNDAsIDB4MDAwMywgMHgwYjg3LAotCTB4MDAwYiwgMHhlMzk0LCAweDAwMDgsIDB4ODA4YSwgMHgwMDAwLCAweDAwMDQsIDB4MDAwNywgMHgwMDAwLAotCTB4MDAwNywgMHgwMDAwLCAweDAwMDgsIDB4ODBlMCwgMHgwMDA4LCAweDAyMDIsIDB4MDAwYiwgMHg2MzhkLAotCTB4MDAwOCwgMHg4MGUwLCAweDAwMDAsIDB4MDEwMCwgMHgwMDBiLCAweDAzODcsIDB4MDAwOSwgMHhiYWMwLAotCTB4MDAwOCwgMHgwMDkwLCAweDAwMGIsIDB4MGI5ZCwgMHgwMDAwLCAweDgwNzQsIDB4MDAwMCwgMHgwNzA2LAotCTB4MDAwYiwgMHgwMzlmLCAweDAwMDAsIDB4ODA3NCwgMHgwMDAwLCAweDA3MDMsIDB4MDAwZiwgMHg0MDAwLAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDAsIDB4MDAyMywgMHgwMDBiLCAweDAzZGIsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwMCwgMHgwMDA4LCAweDAwMGIsIDB4MDNkYiwgMHgwMDA4LCAweDgwMTAsIDB4MDAwOCwgMHgwMDIyLAotCTB4MDAwYiwgMHgwM2RiLCAweDAwMGMsIDB4MDM3YywgMHgwMDA4LCAweDgwMTAsIDB4MDAwMCwgMHgwMDA3LAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDAsIDB4MTgxMCwgMHgwMDA0LCAweDAzODcsIDB4MDAwMywgMHgwM2U1LAotCTB4MDAwYywgMHgwMzdjLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMWIsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwMCwgMHgxODEwLCAweDAwMDQsIDB4MDM4NywgMHgwMDAwLCAweDgwNzQsIDB4MDAwMCwgMHhmMDgwLAotCTB4MDAwMCwgMHgwZDMwLCAweDAwMDMsIDB4MDAxMywgMHgwMDA4LCAweDgwMTAsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwYiwgMHgwM2RiLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMDUsIDB4MDAwYiwgMHgwM2RiLAotCTB4MDAwYSwgMHgxNjQ4LCAweDAwMDMsIDB4ODg4YywgMHgwMDA4LCAweDgwOGMsIDB4MDAwMCwgMHgwMDAxLAotCTB4MDAwNywgMHgwMDAwLCAweDAwMDgsIDB4ODAxMCwgMHgwMDAwLCAweDAwMDQsIDB4MDAwYSwgMHg0MTQzLAotCTB4MDAwYiwgMHgwODhjLCAweDAwMDIsIDB4M2E0NCwgMHgwMDAzLCAweDg4MTMsIDB4MDAwOCwgMHgwZDJhLAotCTB4MDAwYiwgMHgwM2RiLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMDMsIDB4MDAwYiwgMHgwM2RkLAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDAsIDB4MDAwYiwgMHgwMDBiLCAweDAzZGQsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwMCwgMHgwMDAyLCAweDAwMGIsIDB4MDNkZCwgMHgwMDAyLCAweDNhNDcsIDB4MDAwYiwgMHg4YThjLAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDgsIDB4MDAwNiwgMHgwMDBiLCAweDAzZGQsIDB4MDAwMCwgMHg4MDc0LAotCTB4MDAwOCwgMHhmMDAwLCAweDAwMDQsIDB4MDM4NywgMHgwMDBjLCAweDAzOTcsIDB4MDAwYSwgMHgzYTQwLAotCTB4MDAwYiwgMHgwODEzLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMGMsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwMywgMHgwMDEzLCAweDAwMDAsIDB4ODA3NCwgMHgwMDAwLCAweGYwODAsIDB4MDAwMCwgMHgwZDMwLAotCTB4MDAwMiwgMHgyZTRkLCAweDAwMDIsIDB4MmU0ZCwgMHgwMDAzLCAweDBiZWUsIDB4MDAwOCwgMHg4MDU0LAotCTB4MDAwMCwgMHgwMDE5LCAweDAwMDMsIDB4MDAxMywgMHgwMDA4LCAweDgwNTQsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwMywgMHgwMDEzLCAweDAwMDIsIDB4M2E0NCwgMHgwMDAzLCAweDg4MTMsIDB4MDAwMywgMHgwM2QwLAotCTB4MDAwOCwgMHg4MDhjLCAweDAwMDgsIDB4MDAwMCwgMHgwMDAyLCAweDQ0NDcsIDB4MDAwMywgMHgwYzFhLAotCTB4MDAwMSwgMHhjMGMwLCAweDAwMDgsIDB4MDBmZiwgMHgwMDA5LCAweGZmZTAsIDB4MDAwOCwgMHgwMGZmLAotCTB4MDAwMywgMHg4YmYxLCAweDAwMDEsIDB4YzFlMCwgMHgwMDA4LCAweGZmZmYsIDB4MDAwMywgMHg4YmYxLAotCTB4MDAwOCwgMHg4MDEwLCAweDAwMDAsIDB4MDAxMywgMHgwMDA0LCAweDAzODcsIDB4MDAwMCwgMHg4MDc0LAotCTB4MDAwOCwgMHgwMjAyLCAweDAwMDMsIDB4MDAxMywgMHgwMDBhLCAweDNhNDAsIDB4MDAwMywgMHg4YzE3LAotCTB4MDAwMCwgMHg4MDc0LCAweDAwMDAsIDB4MDIwMCwgMHgwMDAwLCAweDNkMDAsIDB4MDAwMCwgMHgzY2ZlLAotCTB4MDAwMCwgMHg4MDcyLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAxLCAweDQzZTAsIDB4MDAwYiwgMHg4YzE1LAotCTB4MDAwMCwgMHg0MmZlLCAweDAwMDEsIDB4ZmZjMCwgMHgwMDA4LCAweDAwZmYsIDB4MDAwOSwgMHgwMGUwLAotCTB4MDAwYiwgMHgwYmYxLCAweDAwMDgsIDB4MGQwOCwgMHgwMDAzLCAweDA0NmEsIDB4MDAwMCwgMHg4MDcyLAotCTB4MDAwMCwgMHg4MDAwLCAweDAwMDMsIDB4MDAxMywgMHgwMDBjLCAweDA0ZWUsIDB4MDAwOCwgMHg4MDhjLAotCTB4MDAwMCwgMHgwMDAxLCAweDAwMDAsIDB4MDRmYywgMHgwMDAzLCAweDM0ZDEsIDB4MDAwMCwgMHgwNDYwLAotCTB4MDAwOCwgMHg4MDYyLCAweDAwMDAsIDB4MDAwMSwgMHgwMDAwLCAweDgwNjYsIDB4MDAwOCwgMHgwMDA5LAotCTB4MDAwMywgMHhjNDI0LCAweDAwMDAsIDB4MDAwNCwgMHgwMDA5LCAweDgwYzAsIDB4MDAwOCwgMHgwMGZmLAotCTB4MDAwMCwgMHg3ZjAwLCAweDAwMDEsIDB4ODBlMCwgMHgwMDAwLCAweDAwMDQsIDB4MDAwMywgMHgwYzNlLAotCTB4MDAwMSwgMHg4MGUwLCAweDAwMDgsIDB4MDAwNSwgMHgwMDAzLCAweDBjM2UsIDB4MDAwMSwgMHg4MGUwLAotCTB4MDAwOCwgMHgwMDA2LCAweDAwMDMsIDB4MGMzZSwgMHgwMDAxLCAweDgyYzAsIDB4MDAwOCwgMHhmZjAwLAotCTB4MDAwOCwgMHg3ZjA0LCAweDAwMDksIDB4ODJlMCwgMHgwMDA4LCAweDA2MDAsIDB4MDAwMywgMHgwYzNlLAotCTB4MDAwOSwgMHg4MmUwLCAweDAwMDgsIDB4MDUwMCwgMHgwMDAzLCAweDBjM2UsIDB4MDAwOSwgMHg4MmUwLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMDMsIDB4OGNkMSwgMHgwMDA5LCAweGM0YzAsIDB4MDAwMCwgMHg3MDAwLAotCTB4MDAwOSwgMHhmZmUwLCAweDAwMDAsIDB4MTAwMCwgMHgwMDBiLCAweDBjNmEsIDB4MDAwNCwgMHgwNGRmLAotCTB4MDAwMiwgMHgzOTQxLCAweDAwMDMsIDB4MGM0OSwgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMywgMHgwMDEzLCAweDAwMDAsIDB4MDQ2MCwgMHgwMDA4LCAweDgwZmUsIDB4MDAwOCwgMHgwMDJiLAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2NiwgMHgwMDA4LCAweDIyMDksIDB4MDAwYiwgMHhjNDRmLAotCTB4MDAwOCwgMHgxMWZjLCAweDAwMDMsIDB4MzQ2NSwgMHgwMDAxLCAweDkxODAsIDB4MDAwMCwgMHgwMDAyLAotCTB4MDAwMCwgMHg4MDYwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwNjA5LCAweDAwMDMsIDB4YzQ1OSwgMHgwMDAwLCAweDQyZmUsIDB4MDAwMSwgMHhmZmMwLAotCTB4MDAwOCwgMHhmZjAwLCAweDAwMDksIDB4MDNlMCwgMHgwMDBiLCAweDhjNjIsIDB4MDAwMCwgMHg4MDcyLAotCTB4MDAwMCwgMHgwNDAwLCAweDAwMGIsIDB4MDA1NiwgMHgwMDAxLCAweDkxODAsIDB4MDAwOCwgMHgwMDAzLAotCTB4MDAwYiwgMHgwNDRjLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwMCwgMHgwMDEwLCAweDAwMGIsIDB4MDRjNCwgMHgwMDA0LCAweDA0ZGYsIDB4MDAwMiwgMHgzOTQxLAotCTB4MDAwMywgMHgwYzcwLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMywgMHgwMDEzLAotCTB4MDAwYSwgMHg2ZTQyLCAweDAwMDMsIDB4MGM3NSwgMHgwMDBjLCAweDA0YTksIDB4MDAwOCwgMHgxMWZjLAotCTB4MDAwMywgMHhiNDdhLCAweDAwMDAsIDB4ODA3MiwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOCwgMHg4MDEwLAotCTB4MDAwMCwgMHgwMDBlLCAweDAwMGIsIDB4MDRjNCwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMCwgMHgwNGZjLCAweDAwMDMsIDB4YjQ4ZiwgMHgwMDA4LCAweDgwOGMsIDB4MDAwOCwgMHgwMDAwLAotCTB4MDAwMSwgMHg5MTgwLCAweDAwMDgsIDB4MDAwNSwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwMDA5LCAweDAwMGIsIDB4YzQ4NSwgMHgwMDA4LCAweDAwNjAsIDB4MDAwOCwgMHg4MDYyLAotCTB4MDAwOCwgMHgwMDFiLCAweDAwMDgsIDB4NDMwNCwgMHgwMDA4LCAweDQyMDYsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgwNDEyLCAweDAwMDMsIDB4YzQ4ZCwgMHgwMDAzLCAweDA0YTYsIDB4MDAwOCwgMHg4MDhjLAotCTB4MDAwMCwgMHgwMDAxLCAweDAwMDAsIDB4MDQ2MCwgMHgwMDA4LCAweDgwNjIsIDB4MDAwOCwgMHgwMDJiLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDYwOSwgMHgwMDAzLCAweGM0OTYsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgyMjBhLCAweDAwMDMsIDB4YzQ5OSwgMHgwMDAwLCAweDQyZmUsIDB4MDAwMSwgMHhmZmMwLAotCTB4MDAwOCwgMHhmZjAwLCAweDAwMDgsIDB4N2YwNCwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMSwgMHg5MTgwLCAweDAwMDAsIDB4MDAwMiwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwOCwgMHgwNDFhLCAweDAwMDMsIDB4YzRhNSwgMHgwMDAwLCAweDgwNzIsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwYiwgMHgwMDU2LCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwOCwgMHg2YjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDAsIDB4MDQxMSwgMHgwMDBiLCAweGM0YWUsIDB4MDAwOCwgMHgwMmZlLAotCTB4MDAwOSwgMHgwM2UwLCAweDAwMDMsIDB4OGNiNCwgMHgwMDAwLCAweDBkMjIsIDB4MDAwZiwgMHg0MDAwLAotCTB4MDAwOSwgMHg4MjgwLCAweDAwMDAsIDB4MDAwMiwgMHgwMDAxLCAweDZiODAsIDB4MDAwOCwgMHg3ZjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MjIwOSwgMHgwMDBiLCAweGM0YmEsIDB4MDAwYSwgMHgwMjAwLAotCTB4MDAwMSwgMHhmZmMwLCAweDAwMDAsIDB4MDAwNywgMHgwMDAwLCAweDdmMDYsIDB4MDAwOCwgMHg2YjYyLAotCTB4MDAwMCwgMHg4MDY2LCAweDAwMDgsIDB4MDYwYSwgMHgwMDBiLCAweGM0YzIsIDB4MDAwZiwgMHg0MDAwLAotCTB4MDAwMiwgMHgzYTQ0LCAweDAwMDMsIDB4ODgxMywgMHgwMDBhLCAweDJmNDQsIDB4MDAwYSwgMHgyZjQ0LAotCTB4MDAwMywgMHg4YmQwLCAweDAwMDgsIDB4ODA4YSwgMHgwMDA4LCAweDAwMDMsIDB4MDAwMCwgMHg4MDc0LAotCTB4MDAwMCwgMHhmMDgwLCAweDAwMDMsIDB4NWNjZCwgMHgwMDA4LCAweDgwNTQsIDB4MDAwMCwgMHgwMDE5LAotCTB4MDAwMywgMHgwMDEzLCAweDAwMDIsIDB4M2E0NCwgMHgwMDAzLCAweDg4MTMsIDB4MDAwOCwgMHg4MDhjLAotCTB4MDAwOCwgMHgwMDAwLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMTEsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwMCwgMHg0MmZlLCAweDAwMDEsIDB4ZmZjMCwgMHgwMDA4LCAweDAwZmYsIDB4MDAwOCwgMHg3ZjEwLAotCTB4MDAwNCwgMHgwMzg3LCAweDAwMDgsIDB4NDMxMCwgMHgwMDBiLCAweDAzZGQsIDB4MDAwMiwgMHgzOTQxLAotCTB4MDAwYiwgMHgwY2UyLCAweDAwMGYsIDB4NDAwMCwgMHgwMDAwLCAweDgwNzIsIDB4MDAwOCwgMHgwNDA0LAotCTB4MDAwZiwgMHg0MDAwLCAweDAwMDgsIDB4ODAxMCwgMHgwMDA4LCAweDAwMTIsIDB4MDAwNCwgMHgwMzg3LAotCTB4MDAwYywgMHgwNGE5LCAweDAwMDAsIDB4MTExMCwgMHgwMDA0LCAweDAzODcsIDB4MDAwOCwgMHgxMWZjLAotCTB4MDAwYiwgMHhiNGU4LCAweDAwMDMsIDB4MDAxMywgMHgwMDA5LCAweGMyYzAsIDB4MDAwOCwgMHgwMGZmLAotCTB4MDAwMCwgMHg3ZjAwLCAweDAwMDEsIDB4YzNjMCwgMHgwMDA4LCAweGZmMDAsIDB4MDAwOSwgMHgwMGQwLAotCTB4MDAwYiwgMHgwZDEzLCAweDAwMDAsIDB4MGQwYSwgMHgwMDAxLCAweDg1ODAsIDB4MDAwMCwgMHgxMDAwLAotCTB4MDAwOCwgMHg3ZjYyLCAweDAwMDAsIDB4ODA2MCwgMHgwMDAwLCAweDA0MDAsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgwODA5LCAweDAwMGIsIDB4YzRmZCwgMHgwMDAwLCAweDA0ZmMsIDB4MDAwYiwgMHgzNTBjLAotCTB4MDAwMCwgMHgwNDYwLCAweDAwMDgsIDB4ODA2MiwgMHgwMDAwLCAweDAwMDQsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgwMjExLCAweDAwMGIsIDB4YzUwNSwgMHgwMDA4LCAweDAxZmUsIDB4MDAwOSwgMHgwMGUwLAotCTB4MDAwYiwgMHg4ZDBjLCAweDAwMDgsIDB4MDJmZSwgMHgwMDAxLCAweDQzZTAsIDB4MDAwMywgMHgwZDEyLAotCTB4MDAwMiwgMHgwNTAwLCAweDAwMDAsIDB4N2YwYSwgMHgwMDA5LCAweGZmZTAsIDB4MDAwMCwgMHgwODAwLAotCTB4MDAwMywgMHg4Y2Y2LCAweDAwMDgsIDB4MGQwOCwgMHgwMDBmLCAweDQwMDAsIDB4MDAwOCwgMHg0M2ZlLAotCTB4MDAwMSwgMHgzZTgwLCAweDAwMDAsIDB4MGQ2MCwgMHgwMDA4LCAweDdmNjIsIDB4MDAwMCwgMHg4MDY2LAotCTB4MDAwMCwgMHgwODA5LCAweDAwMDMsIDB4YzUxOSwgMHgwMDAwLCAweDgwNjAsIDB4MDAwMCwgMHgwNDAwLAotCTB4MDAwMSwgMHg4NGMwLCAweDAwMDgsIDB4ZmYwMCwgMHgwMDAyLCAweDdmNzAsIDB4MDAwOSwgMHhmZjgwLAotCTB4MDAwMCwgMHgxMDAwLCAweDAwMDgsIDB4N2Y2MiwgMHgwMDAwLCAweDgwNjYsIDB4MDAwMCwgMHgwODA5LAotCTB4MDAwYiwgMHhjNTI0LCAweDAwMGYsIDB4NDAwMCwgMHhlNGE4LCAweGEzYjkKLX07Ci11bnNpZ25lZCBzaG9ydCByc2VxaXB4X2NvZGVfbGVuZ3RoMDEgPSAweDBhNGU7Ci0vKgotICoKLSAqLwotCi11bnNpZ25lZCBsb25nIHhzZXFpcHhfY29kZV9hZGRyMDEgPSAweDAwMDFlMDAwIDsKLXVuc2lnbmVkIHNob3J0IHhzZXFpcHhfY29kZTAxW10gPSB7IAotMHgwMDEzLCAweDAwMDMsIDB4MDAwMCwgMHgxMjUyLCAweDAwMDEsIDB4ZTAwMCwgMHgwMDA1LCAweDAwMzIsCi0JMHgwMDAwLCAweDAwMTAsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YmIzOSwgMHgwMDBiLCAweDgwMDcsCi0JMHgwMDA0LCAweDAxMTMsIDB4MDAwNCwgMHgwMTI1LCAweDAwMTAsIDB4YzAwMCwgMHgwMDAwLCAweGMwMDEsCi0JMHgwMDAwLCAweGMwYjAsIDB4MDAxMCwgMHhjMGIxLCAweDAwMTAsIDB4YzBiMiwgMHgwMDAwLCAweGMwYjMsCi0JMHgwMDEwLCAweGMwYjQsIDB4MDAwMCwgMHhjMGI1LCAweDAwMDAsIDB4YzBiNiwgMHgwMDEwLCAweGMwYjcsCi0JMHgwMDEwLCAweGMwYjgsIDB4MDAwMCwgMHhjMGI5LCAweDAwMDAsIDB4YzBiYSwgMHgwMDAwLCAweGMwYzIsCi0JMHgwMDEwLCAweGMwYzMsIDB4MDAwMCwgMHhjMGM0LCAweDAwMTAsIDB4YzBjNSwgMHgwMDEwLCAweGMwYzYsCi0JMHgwMDAwLCAweGMwYzcsIDB4MDAwMCwgMHhjMGM4LCAweDAwMTAsIDB4YzBjOSwgMHgwMDEwLCAweGMwY2EsCi0JMHgwMDAwLCAweGMwY2IsIDB4MDAxMCwgMHhjMGNjLCAweDAwMDAsIDB4YzBjZCwgMHgwMDAwLCAweGMwY2UsCi0JMHgwMDEwLCAweGMwY2YsIDB4MDAxNSwgMHgwMDM5LCAweDAwMTAsIDB4ZmYwMCwgMHgwMDE1LCAweDAwM2EsCi0JMHgwMDEwLCAweGZmMDAsIDB4MDAwNSwgMHgwMGQwLCAweDAwMTAsIDB4ZmYwMCwgMHgwMDE1LCAweDAwZDEsCi0JMHgwMDEwLCAweGZmMDAsIDB4MDAxMiwgMHgzYTQwLCAweDAwMGIsIDB4MTAzMSwgMHgwMDAyLCAweDc5NDAsCi0JMHgwMDFiLCAweDExMzcsIDB4MDAwMiwgMHgzYTQyLCAweDAwMWIsIDB4MTAzNSwgMHgwMDAzLCAweGIwMzUsCi0JMHgwMDAzLCAweGExZTIsIDB4MDAwMiwgMHgzYTQxLCAweDAwMWIsIDB4MTAzOSwgMHgwMDEyLCAweDc5NDEsCi0JMHgwMDFiLCAweDEzMTcsIDB4MDAxMywgMHhlMDU0LCAweDAwMDEsIDB4MGZlOCwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDEzLCAweDEwNTQsIDB4MDAwMCwgMHgwY2ZlLCAweDAwMTMsIDB4NjA0NywgMHgwMDAyLCAweDNhNDQsCi0JMHgwMDFiLCAweDEwNDcsIDB4MDAxMSwgMHgwMmU4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEzLCAweDEzY2QsCi0JMHgwMDExLCAweDAyZTgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMTMsIDB4MTQ1ZiwgMHgwMDEyLCAweDNhNDYsCi0JMHgwMDBiLCAweDEwNTQsIDB4MDAxMSwgMHgwMmU4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEzLCAweDEwNGYsCi0JMHgwMDExLCAweDAyZTgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMGIsIDB4MTA1NCwgMHgwMDAwLCAweDEyZmUsCi0JMHgwMDAzLCAweDYwNTQsIDB4MDAwMSwgMHgwZmU4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDAzLCAweDE2OTUsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTAsIDB4YzEzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIyMTEsIDB4MDAxYiwgMHg4MDU5LCAweDAwMTAsIDB4YjJmZiwgMHgwMDAxLCAweGIzZTAsCi0JMHgwMDFjLCAweDEwZDUsIDB4MDAwYiwgMHhmMDJkLCAweDAwMTEsIDB4M2JlOCwgMHgwMDAwLCAweDAwMTAsCi0JMHgwMDFiLCAweDEwNzEsIDB4MDAwMCwgMHgwYWZlLCAweDAwMGIsIDB4NjA2NSwgMHgwMDAwLCAweDNjMGIsCi0JMHgwMDAzLCAweDAwNmQsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAxLCAweDBhODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweDNjMGEsCi0JMHgwMDFiLCAweDgwNmMsIDB4MDAxMCwgMHgzYzBhLCAweDAwMDIsIDB4MGMwMCwgMHgwMDEwLCAweGZmMGMsCi0JMHgwMDEzLCAweDAwZDIsIDB4MDAxMSwgMHgzYmU4LCAweDAwMTAsIDB4MDAxMiwgMHgwMDFiLCAweDEwODQsCi0JMHgwMDEwLCAweDA4ZmUsIDB4MDAwYiwgMHg2MDc4LCAweDAwMTAsIDB4M2MwOSwgMHgwMDAzLCAweDAwODAsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTEsIDB4MDg4OCwgMHgwMDEwLCAweDAwMDMsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4M2MwYSwgMHgwMDBiLCAweDgwN2YsCi0JMHgwMDAwLCAweDNjMDgsIDB4MDAwMiwgMHgwYzAwLCAweDAwMTAsIDB4ZmYwYywgMHgwMDEzLCAweDAwZDIsCi0JMHgwMDExLCAweDNiZTgsIDB4MDAwMCwgMHgwMDEzLCAweDAwMGIsIDB4MTA4YSwgMHgwMDAwLCAweDNjYjAsCi0JMHgwMDE0LCAweDAwZTUsIDB4MDAxMywgMHgwMGQyLCAweDAwMTEsIDB4M2JlOCwgMHgwMDAwLCAweDAwMTksCi0JMHgwMDBiLCAweDEwOWQsIDB4MDAxMCwgMHgwNGZlLCAweDAwMWIsIDB4NjA5MSwgMHgwMDEwLCAweDNjMDUsCi0JMHgwMDEzLCAweDAwOTksIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDA0ODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweDNjMGEsCi0JMHgwMDBiLCAweDgwOTgsIDB4MDAwMCwgMHgzYzA0LCAweDAwMDIsIDB4MGMwMCwgMHgwMDEwLCAweGZmMGMsCi0JMHgwMDEzLCAweDAwZDIsIDB4MDAxMSwgMHgzYmU4LCAweDAwMTAsIDB4MDAxYiwgMHgwMDFiLCAweDEwYTYsCi0JMHgwMDEwLCAweGMwMTQsIDB4MDAwMCwgMHhjMDEzLCAweDAwMDAsIDB4YzAxMCwgMHgwMDE1LCAweDAwMGYsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAxMywgMHgwMGQyLCAweDAwMTEsIDB4M2JlOCwgMHgwMDAwLCAweDAwMTUsCi0JMHgwMDFiLCAweDEwYjIsIDB4MDAwNCwgMHgwMTFjLCAweDAwMTQsIDB4MDEyZSwgMHgwMDE1LCAweDAwMzksCi0JMHgwMDAwLCAweDgwMDAsIDB4MDAxNywgMHg4MDAwLCAweDAwMDQsIDB4MDExMywgMHgwMDA0LCAweDAxMjUsCi0JMHgwMDE0LCAweDAwZmUsIDB4MDAxMywgMHgwMDJkLCAweDAwMTEsIDB4M2JlOCwgMHgwMDAwLCAweDAwMTYsCi0JMHgwMDBiLCAweDEwYzQsIDB4MDAwMSwgMHgwZmU4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDAzLCAweDEwYmUsCi0JMHgwMDAxLCAweDBmZTgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMDMsIDB4MTBiZSwgMHgwMDE1LCAweDAwMzksCi0JMHgwMDEwLCAweDEwMTAsIDB4MDAxMywgMHgwMGQyLCAweDAwMTUsIDB4MDAzOSwgMHgwMDAwLCAweDUwNDAsCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAwMCwgMHgwMDA4LCAweDAwMTQsIDB4MDkyNSwgMHgwMDEzLCAweDAwZDIsCi0JMHgwMDExLCAweDNiZTgsIDB4MDAxMCwgMHgwMDE3LCAweDAwMWIsIDB4MTBjOSwgMHgwMDEwLCAweDNjYzMsCi0JMHgwMDEzLCAweDAwZDIsIDB4MDAxMSwgMHgzYmU4LCAweDAwMTAsIDB4MDAxOCwgMHgwMDBiLCAweDEwY2UsCi0JMHgwMDAwLCAweDNjYzIsIDB4MDAxMywgMHgwMGQyLCAweDAwMDUsIDB4MDBjZSwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDAwLCAweDNiY2YsIDB4MDAxNCwgMHgwOGU3LCAweDAwMTUsIDB4MDAzOSwgMHgwMDAwLCAweDgwMDAsCi0JMHgwMDEzLCAweDAwMmQsIDB4MDAwMSwgMHhiMjg4LCAweDAwMDAsIDB4MDAwMiwgMHgwMDAxLCAweGMxODAsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDgwZGIsCi0JMHgwMDAyLCAweGIyMDAsIDB4MDAxMSwgMHhmZmM4LCAweDAwMDAsIDB4MDAwNywgMHgwMDEwLCAweGZmYjIsCi0JMHgwMDEwLCAweGMxMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjIwYSwgMHgwMDAxLCAweGIwZDAsCi0JMHgwMDFiLCAweDgwZTQsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweGIwODgsCi0JMHgwMDAwLCAweDAwMTAsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGIxMDksCi0JMHgwMDBiLCAweDgwZWMsIDB4MDAwMSwgMHhiMWU4LCAweDAwMTAsIDB4ZmZmZiwgMHgwMDEzLCAweDEwZmQsCi0JMHgwMDAwLCAweDExZmUsIDB4MDAxYiwgMHg2MGY0LCAweDAwMDAsIDB4YjAxMiwgMHgwMDEzLCAweDAwZmMsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDEsIDB4MTE4OCwgMHgwMDEwLCAweDAwMDMsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwYSwgMHgwMDBiLCAweDgwZmIsCi0JMHgwMDAwLCAweGIwMTEsIDB4MDAxNywgMHg0MDAwLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweGJjODgsIDB4MDAwMCwgMHgwMDFmLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGM0MTEsIDB4MDAwYiwgMHg4MTA1LCAweDAwMTEsIDB4YmM4OCwgMHgwMDEwLCAweDAwMTgsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YzYwOSwgMHgwMDFiLCAweDgxMGIsCi0JMHgwMDExLCAweGJjODgsIDB4MDAwMCwgMHgwMDM3LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGM3MDksIDB4MDAwYiwgMHg4MTExLCAweDAwMTcsIDB4NDAwMCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAwMSwgMHhiYjg4LCAweDAwMDAsIDB4MDAwMSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHgwMjY5LCAweDAwMWIsIDB4ODExYSwgMHgwMDE3LCAweDQwMDAsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDEsIDB4YmI4OCwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4MDI2YSwgMHgwMDFiLCAweDgxMjMsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAxLCAweGJiODgsCi0JMHgwMDEwLCAweDAwMGYsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweDBmNTksCi0JMHgwMDFiLCAweDgxMmMsIDB4MDAxNywgMHg0MDAwLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDAxLCAweGJiODgsIDB4MDAxMCwgMHgwMDBmLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweDBmNWEsIDB4MDAwYiwgMHg4MTM1LCAweDAwMTcsIDB4NDAwMCwgMHgwMDAwLCAweGQwZmYsCi0JMHgwMDEyLCAweGZmNDAsIDB4MDAwYiwgMHgxMDMxLCAweDAwMTUsIDB4MDBkMSwgMHgwMDEwLCAweDAxMDEsCi0JMHgwMDAzLCAweDkxM2MsIDB4MDAwNSwgMHgwMDc5LCAweDAwMDAsIDB4MDAwMSwgMHgwMDAzLCAweDkxM2YsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwMTAwLCAweDAwMTEsIDB4MDJlOCwgMHgwMDAwLCAweDAwMDIsCi0JMHgwMDAzLCAweDExNjcsIDB4MDAxMSwgMHgwMmU4LCAweDAwMDAsIDB4MDAwMSwgMHgwMDAzLCAweDExN2YsCi0JMHgwMDExLCAweDAyZTgsIDB4MDAwMCwgMHgwMDA0LCAweDAwMDMsIDB4MTE5ZCwgMHgwMDExLCAweDAyZTgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMywgMHgxMWNlLCAweDAwMDUsIDB4MDAwMiwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGMwMGUsIDB4MDAwMCwgMHhjMDBkLCAweDAwMTAsIDB4YzAwMywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAwMSwgMHhiZDg4LCAweDAwMTAsIDB4MDAwOSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhjMDBhLCAweDAwMGIsIDB4ODE1YSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhjMDBhLCAweDAwMWIsIDB4ODE1ZSwgMHgwMDEyLCAweDNhNDUsCi0JMHgwMDEzLCAweDExNjYsIDB4MDAxNSwgMHgwMDNhLCAweDAwMDAsIDB4MjAwMCwgMHgwMDE1LCAweDAwM2EsCi0JMHgwMDEwLCAweDEwMTAsIDB4MDAwNCwgMHgwOTExLCAweDAwMDMsIDB4MDA0ZiwgMHgwMDEyLCAweDc4NDksCi0JMHgwMDAzLCAweDExZGMsIDB4MDAxMCwgMHgwZGZlLCAweDAwMDMsIDB4NjE1MCwgMHgwMDEyLCAweDBjMTAsCi0JMHgwMDEwLCAweGZmMGMsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDBkODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIzMDksCi0JMHgwMDBiLCAweDgxNzQsIDB4MDAxMCwgMHhiM2ZlLCAweDAwMTMsIDB4NjE3YywgMHgwMDEwLCAweGIzMGIsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhjMDBhLCAweDAwMWIsIDB4ODE3YSwgMHgwMDAzLCAweDAxZDEsCi0JMHgwMDAwLCAweGMwMGIsIDB4MDAxMCwgMHhjMDBhLCAweDAwMDMsIDB4MDFkMSwgMHgwMDAwLCAweDc4YjAsCi0JMHgwMDEyLCAweGIwNDQsIDB4MDAwMywgMHgxMWRjLCAweDAwMDIsIDB4YjA0OSwgMHgwMDAzLCAweDExZGMsCi0JMHgwMDEwLCAweDcxZmYsIDB4MDAxMiwgMHhmZjM4LCAweDAwMTAsIDB4ZmY3MSwgMHgwMDEwLCAweDBkZmUsCi0JMHgwMDAzLCAweDYxNGUsIDB4MDAxMiwgMHgwYzEwLCAweDAwMTAsIDB4ZmYwYywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMTAsIDB4MDAwMywgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMzA5LCAweDAwMWIsIDB4ODE5MiwgMHgwMDEwLCAweGIzZmUsCi0JMHgwMDAzLCAweDYxOWEsIDB4MDAwMCwgMHhiMzA5LCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGMwMGEsCi0JMHgwMDFiLCAweDgxOTgsIDB4MDAwMywgMHgwMWQxLCAweDAwMTAsIDB4YzAwOSwgMHgwMDAwLCAweGMwMDgsCi0JMHgwMDAzLCAweDAxZDEsIDB4MDAwMCwgMHg3OGIwLCAweDAwMTIsIDB4YjA0NCwgMHgwMDAzLCAweDExZGMsCi0JMHgwMDAyLCAweGIwNDksIDB4MDAwMywgMHgxMWRjLCAweDAwMTAsIDB4NzFmZiwgMHgwMDEyLCAweGZmMzgsCi0JMHgwMDEwLCAweGZmNzEsIDB4MDAxMCwgMHgwZGZlLCAweDAwMDMsIDB4NjE0ZSwgMHgwMDEyLCAweDBjMTAsCi0JMHgwMDEwLCAweGZmMGMsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDBkODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIzMDksCi0JMHgwMDFiLCAweDgxYjAsIDB4MDAxMCwgMHhiM2ZlLCAweDAwMDMsIDB4NjFiOCwgMHgwMDAwLCAweGIzMDUsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhjMDBhLCAweDAwMWIsIDB4ODFiNiwgMHgwMDEzLCAweDAxYmEsCi0JMHgwMDEwLCAweGMwMDUsIDB4MDAwMCwgMHhjMDA0LCAweDAwMDIsIDB4MDMzZiwgMHgwMDAyLCAweGZmMjcsCi0JMHgwMDAwLCAweDBkYjgsIDB4MDAxNCwgMHgwM2MyLCAweDAwMDAsIDB4MGRiOCwgMHgwMDE0LCAweDA5MjUsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTEsIDB4YmM4OCwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjMwOSwgMHgwMDFiLCAweDgxYzcsCi0JMHgwMDExLCAweGIzZTgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMGIsIDB4MTE0ZSwgMHgwMDA1LCAweDAwMDIsCi0JMHgwMDEwLCAweDAwMDUsIDB4MDAwMywgMHgwMTUwLCAweDAwMTIsIDB4Nzg0OSwgMHgwMDAzLCAweDExZGMsCi0JMHgwMDAzLCAweDAxNTAsIDB4MDAwMCwgMHgwZGI4LCAweDAwMTIsIDB4MDM0NSwgMHgwMDBiLCAweDExZDcsCi0JMHgwMDAyLCAweDAzM2YsIDB4MDAxNCwgMHgwM2MyLCAweDAwMDMsIDB4MDE0ZSwgMHgwMDAyLCAweDAzM2YsCi0JMHgwMDAyLCAweGZmMjcsIDB4MDAxNCwgMHgwM2MyLCAweDAwMTQsIDB4MDkyNSwgMHgwMDAzLCAweDAxNGUsCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAwMCwgMHgwMDAxLCAweDAwMTUsIDB4MDAzYSwgMHgwMDEwLCAweDAxMDEsCi0JMHgwMDE0LCAweDA5MjUsIDB4MDAwMywgMHgwMTVmLCAweDAwMDEsIDB4MmJkOCwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGZmYmEsIDB4MDAwMywgMHhiMWU1LCAweDAwMDUsIDB4MDAyYSwgMHgwMDAwLCAweDAwMDIsCi0JMHgwMDAxLCAweGJhYzgsIDB4MDAwMCwgMHgwNzAwLCAweDAwMGIsIDB4MTJkMiwgMHgwMDExLCAweDE1ZTgsCi0JMHgwMDAwLCAweDAwMDIsIDB4MDAxMywgMHgxMjQ4LCAweDAwMTEsIDB4MTVlOCwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDAzLCAweDExZjQsIDB4MDAwNSwgMHgwMDE1LCAweDAwMTAsIDB4MDAwMCwgMHgwMDAzLCAweDAyMmIsCi0JMHgwMDA1LCAweDAwMTUsIDB4MDAxMCwgMHgwMDAwLCAweDAwMDIsIDB4YmE0MywgMHgwMDAzLCAweDEyMmMsCi0JMHgwMDAzLCAweGIxZjgsIDB4MDAwNSwgMHgwMDJhLCAweDAwMDAsIDB4MDAwNCwgMHgwMDEyLCAweGJhNDIsCi0JMHgwMDAzLCAweDEyMzIsIDB4MDAxMiwgMHgxMDRiLCAweDAwMGIsIDB4MTIyYiwgMHgwMDAwLCAweDFhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweDFiMmEsCi0JMHgwMDFiLCAweDgyMDQsIDB4MDAxMSwgMHgyMGQ4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDAwLCAweGZmYjAsCi0JMHgwMDAxLCAweDIxZDgsIDB4MDAxMCwgMHgwMDAwLCAweDAwMTAsIDB4ZmZiMSwgMHgwMDAxLCAweDIyZDgsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAxMCwgMHhmZmIyLCAweDAwMTEsIDB4MjNkOCwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGZmYjMsIDB4MDAwMSwgMHgyNGQ4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEwLCAweGZmYjQsCi0JMHgwMDExLCAweDI1ZDgsIDB4MDAxMCwgMHgwMDAwLCAweDAwMDAsIDB4ZmZiNSwgMHgwMDAxLCAweDI4ZDgsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAxMCwgMHhmZmI4LCAweDAwMTEsIDB4MjlkOCwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGZmYjksIDB4MDAwMCwgMHgxYTMwLCAweDAwMDUsIDB4MDAzMSwgMHgwMDAwLCAweDAwMDcsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiMDMyLCAweDAwMGIsIDB4ODIyMiwgMHgwMDAwLCAweDFhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAxMCwgMHgwMDBmLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGI4MTIsCi0JMHgwMDBiLCAweDgyMjgsIDB4MDAwNSwgMHgwMDE1LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEzLCAweDAwMzUsCi0JMHgwMDAwLCAweDFlZmUsIDB4MDAxMywgMHg2MjQwLCAweDAwMTQsIDB4MDI3NywgMHgwMDAwLCAweDFlZmUsCi0JMHgwMDBjLCAweDYyNzcsIDB4MDAwMywgMHgwMjJiLCAweDAwMDAsIDB4MWEzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMjAsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDgyMzcsCi0JMHgwMDAyLCAweGIwMmYsIDB4MDAwMCwgMHhmZmIwLCAweDAwMDUsIDB4MDAzMSwgMHgwMDAwLCAweDAwMjAsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDBhLCAweDAwMWIsIDB4ODIzZSwgMHgwMDAzLCAweDAxZmYsCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMTQsIDB4MDkyNSwgMHgwMDAwLCAweDEzYjgsCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAxMCwgMHgwNDA0LCAweDAwMTQsIDB4MDkyNSwgMHgwMDAzLCAweDAyMmIsCi0JMHgwMDA1LCAweDAwMTUsIDB4MDAwMCwgMHgwMDAxLCAweDAwMTIsIDB4YmE0MiwgMHgwMDEzLCAweDEyNTYsCi0JMHgwMDAzLCAweGIyNGMsIDB4MDAwMSwgMHgyYmQ4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEyLCAweGZmNGYsCi0JMHgwMDBiLCAweDExZTIsIDB4MDAwMiwgMHhiYTQzLCAweDAwMWIsIDB4MTIzMiwgMHgwMDAwLCAweDFlZmUsCi0JMHgwMDBjLCAweDYyNzcsIDB4MDAwMywgMHgwMjJiLCAweDAwMDEsIDB4MjhkOCwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDEwLCAweGZmYjgsIDB4MDAxMSwgMHgyOWQ4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDAwLCAweGZmYjksCi0JMHgwMDE0LCAweDAyZTgsIDB4MDAwMiwgMHgzYTQyLCAweDAwMGIsIDB4MTIyYiwgMHgwMDAwLCAweDFjMzAsCi0JMHgwMDE1LCAweDAwZmYsIDB4MDAwMCwgMHgwMDAyLCAweDAwMDIsIDB4MWY0MywgMHgwMDFiLCAweDEyNjcsCi0JMHgwMDAxLCAweGZmODgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMDMsIDB4MDI2OSwgMHgwMDAxLCAweGZmODgsCi0JMHgwMDAwLCAweDAwMDQsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMTEsCi0JMHgwMDBiLCAweDgyNmMsIDB4MDAwMCwgMHhiMGZmLCAweDAwMTEsIDB4MTZhMCwgMHgwMDAwLCAweGZmMTYsCi0JMHgwMDFiLCAweDIyNzMsIDB4MDAwMiwgMHhiMTAwLCAweDAwMDMsIDB4MDI3NCwgMHgwMDEwLCAweGIxZmYsCi0JMHgwMDAxLCAweDE3YTAsIDB4MDAxMCwgMHhmZjE3LCAweDAwMTMsIDB4MDIzMiwgMHgwMDAwLCAweDE2ZmYsCi0JMHgwMDAxLCAweDE4YTAsIDB4MDAxMCwgMHhmZjAwLCAweDAwMGIsIDB4MjI3ZSwgMHgwMDAyLCAweDE3MDAsCi0JMHgwMDEzLCAweDEyZDEsIDB4MDAxMywgMHgwMjdmLCAweDAwMTAsIDB4MTdmZiwgMHgwMDExLCAweDE5YTAsCi0JMHgwMDEzLCAweDIyZDEsIDB4MDAxMSwgMHgwMGQwLCAweDAwMTMsIDB4MTJkMSwgMHgwMDAwLCAweDFjMzAsCi0JMHgwMDAwLCAweDFiMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjEzMSwgMHgwMDBiLCAweDgyODcsCi0JMHgwMDEzLCAweGIyODgsIDB4MDAwMCwgMHhiMTIwLCAweDAwMTAsIDB4YjIyMSwgMHgwMDAyLCAweDFmNDMsCi0JMHgwMDFiLCAweDEyOTQsIDB4MDAxMCwgMHhjMDIyLCAweDAwMDAsIDB4YzAyMywgMHgwMDAwLCAweGIzMjQsCi0JMHgwMDAwLCAweGI0MjUsIDB4MDAxMCwgMHhiM2I1LCAweDAwMDAsIDB4YjRiNiwgMHgwMDEzLCAweDAyOTgsCi0JMHgwMDAwLCAweGIzMjIsIDB4MDAwMCwgMHhiNDIzLCAweDAwMDAsIDB4YjUyNCwgMHgwMDEwLCAweGI2MjUsCi0JMHgwMDAzLCAweGIyOTgsIDB4MDAwNSwgMHgwMDJhLCAweDAwMDAsIDB4MDAwMSwgMHgwMDEyLCAweDE1MDAsCi0JMHgwMDAwLCAweGZmMTUsIDB4MDAwMCwgMHgxNmZmLCAweDAwMDEsIDB4YjU4MCwgMHgwMDAwLCAweGZmMTYsCi0JMHgwMDBiLCAweDIyYTMsIDB4MDAwMiwgMHgxNzAwLCAweDAwMTMsIDB4MDJhNCwgMHgwMDEwLCAweDE3ZmYsCi0JMHgwMDAxLCAweGI2ODAsIDB4MDAxMCwgMHhmZjE3LCAweDAwMTIsIDB4MWUxMCwgMHgwMDEwLCAweGZmMWUsCi0JMHgwMDAzLCAweDYyZDEsIDB4MDAwMiwgMHgxZDAwLCAweDAwMTAsIDB4ZmYxZCwgMHgwMDEwLCAweGMwMzAsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDBiLCAweDgyYWYsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAwYiwgMHg2MmQwLCAweDAwMDAsIDB4MWMzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMDEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDBiLCAweDgyYjcsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAxYiwgMHg2MmJkLCAweDAwMDUsIDB4MDBjZSwgMHgwMDEwLCAweDAwMDUsCi0JMHgwMDAzLCAweDA4ZTcsIDB4MDAxMCwgMHhiMDFjLCAweDAwMDAsIDB4MWMzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMTksIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDBiLCAweDgyYzMsCi0JMHgwMDAxLCAweGIwYzgsIDB4MDAxMCwgMHgwMGZmLCAweDAwMDAsIDB4ZmYxZiwgMHgwMDEwLCAweGMwMzAsCi0JMHgwMDExLCAweGJlODAsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDBiLCAweDgyY2MsIDB4MDAwMCwgMHhiMDFkLCAweDAwMTAsIDB4MWRmZiwgMHgwMDEzLCAweDAyYWIsCi0JMHgwMDAwLCAweGIwMWIsIDB4MDAxNywgMHg0MDAwLCAweDAwMDIsIDB4M2E0MSwgMHgwMDAzLCAweDEyZGEsCi0JMHgwMDEzLCAweGIyZDQsIDB4MDAwNSwgMHgwMDJhLCAweDAwMDAsIDB4MDAwNCwgMHgwMDA1LCAweDAwMTUsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAwMywgMHgwMjJiLCAweDAwMDAsIDB4MWEzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMDIsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4MWIyYSwgMHgwMDFiLCAweDgyZGYsCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAwMCwgMHgwMDA0LCAweDAwMTQsIDB4MDkyNSwgMHgwMDAwLCAweDEzYjgsCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAxMCwgMHgwNDA0LCAweDAwMTQsIDB4MDkyNSwgMHgwMDEzLCAweDAwMzksCi0JMHgwMDAyLCAweDFlMDAsIDB4MDAxMCwgMHhmZjFlLCAweDAwMTIsIDB4MWQxMCwgMHgwMDEwLCAweGZmMWQsCi0JMHgwMDEwLCAweGMwMzAsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDBiLCAweDgyZjAsIDB4MDAxMCwgMHhiMGZlLCAweDAwMWIsIDB4NjMxNSwgMHgwMDAwLCAweDFjZmYsCi0JMHgwMDAxLCAweDFhZTAsIDB4MDAxMywgMHgxMmZmLCAweDAwMDAsIDB4MWMzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDgyZmIsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAxYiwgMHg2MmZmLCAweDAwMDAsIDB4MWFmZiwgMHgwMDAwLCAweGZmMWMsCi0JMHgwMDAwLCAweDFjMzAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMDAsIDB4MDAxOSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAxYiwgMHg4MzA1LCAweDAwMDEsIDB4YjBjOCwgMHgwMDEwLCAweDAwMGYsCi0JMHgwMDAwLCAweGZmMWYsIDB4MDAwMSwgMHhiZjgwLCAweDAwMTAsIDB4ZmYxZCwgMHgwMDEwLCAweGMwMzAsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDgzMGYsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAxYiwgMHg2MzE1LCAweDAwMDUsIDB4MDBjZSwgMHgwMDEwLCAweDAwMDYsCi0JMHgwMDAzLCAweDA4ZTcsIDB4MDAwMCwgMHhiMDFiLCAweDAwMTcsIDB4NDAwMCwgMHgwMDEwLCAweDc5YjAsCi0JMHgwMDAwLCAweGQwZmYsIDB4MDAxMiwgMHhmZjQwLCAweDAwMWIsIDB4MTAzOSwgMHgwMDE1LCAweDAwZDEsCi0JMHgwMDEwLCAweDAxMDEsIDB4MDAxMywgMHg5MzFkLCAweDAwMDUsIDB4MDA3OSwgMHgwMDAwLCAweDAwMDIsCi0JMHgwMDAzLCAweDkzMjAsIDB4MDAxNSwgMHgwMGQxLCAweDAwMDAsIDB4MDEwMCwgMHgwMDEwLCAweDEzZmUsCi0JMHgwMDEzLCAweDYzNzEsIDB4MDAxMiwgMHhiMDRlLCAweDAwMWIsIDB4MTM5YSwgMHgwMDAwLCAweDc4YjAsCi0JMHgwMDAyLCAweGIwNDUsIDB4MDAwMywgMHgxM2EwLCAweDAwMTIsIDB4Nzg0YSwgMHgwMDAzLCAweDEzYTAsCi0JMHgwMDAwLCAweDc1ZmYsIDB4MDAxMSwgMHhmZmM4LCAweDAwMTAsIDB4MTgwMCwgMHgwMDFiLCAweDEzYTAsCi0JMHgwMDAxLCAweDBmZTgsIDB4MDAwMCwgMHgwMDAxLCAweDAwMWIsIDB4MTMzYywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgxMzg4LCAweDAwMDAsIDB4MDAwZSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHg4ZjBhLCAweDAwMWIsIDB4ODMzYSwgMHgwMDEzLCAweDAzYTYsCi0JMHgwMDAxLCAweDBmZTgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMWIsIDB4MTM0NywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMDAsIDB4MDAxYSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGMwMGEsIDB4MDAwYiwgMHg4MzQ1LCAweDAwMTMsIDB4MDNhNiwgMHgwMDAxLCAweDBmZTgsCi0JMHgwMDEwLCAweDAwMDAsIDB4MDAwMywgMHgxMzRlLCAweDAwMDUsIDB4MDBjZSwgMHgwMDAwLCAweDAwMDcsCi0JMHgwMDEwLCAweDBmY2YsIDB4MDAwMywgMHgwOGUxLCAweDAwMDIsIDB4ZDE0MiwgMHgwMDEzLCAweDEzNjcsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTEsIDB4MTNlOCwgMHgwMDAxLCAweDFiNTUsCi0JMHgwMDBiLCAweDEzNjcsIDB4MDAwNSwgMHgwMDMxLCAweDAwMTEsIDB4MWI2ZCwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGI0MDksIDB4MDAxYiwgMHg4MzU5LCAweDAwMDIsIDB4YjQwMCwgMHgwMDEwLCAweGZmYjQsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAxMSwgMHgxYjZkLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGI0MGEsCi0JMHgwMDFiLCAweDgzNjAsIDB4MDAxMiwgMHhkMDQyLCAweDAwMDMsIDB4MTM3MSwgMHgwMDE1LCAweDAwYjgsCi0JMHgwMDAwLCAweDAwMGQsIDB4MDAxNCwgMHgwOTI1LCAweDAwMDMsIDB4MDA1NCwgMHgwMDAwLCAweDEzYjgsCi0JMHgwMDAyLCAweDEwNDUsIDB4MDAwMywgMHgxMzZmLCAweDAwMTIsIDB4MTAzZiwgMHgwMDAyLCAweGZmMjcsCi0JMHgwMDE0LCAweDAzYzIsIDB4MDAxNCwgMHgwOTI1LCAweDAwMTMsIDB4MDM3MSwgMHgwMDEyLCAweDEwM2YsCi0JMHgwMDE0LCAweDAzYzIsIDB4MDAxNSwgMHgwMDBmLCAweDAwMTAsIDB4MDAwMCwgMHgwMDAyLCAweDM5NDQsCi0JMHgwMDEzLCAweDEzN2EsIDB4MDAxNSwgMHgwMDM5LCAweDAwMDAsIDB4NTA0MCwgMHgwMDE1LCAweDAwYjgsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAxNCwgMHgwOTI1LCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDAxLCAweGJkODgsIDB4MDAxMCwgMHgwMDBjLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGMwMGEsIDB4MDAxYiwgMHg4MzgxLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGMwMGEsIDB4MDAwYiwgMHg4Mzg1LCAweDAwMTAsIDB4YzAxNCwgMHgwMDAwLCAweGMwMTMsCi0JMHgwMDAwLCAweGMwMTAsIDB4MDAwMCwgMHhhNGZmLCAweDAwMDMsIDB4NjM5MiwgMHgwMDExLCAweGZmYTgsCi0JMHgwMDEwLCAweDAwMDUsIDB4MDAwYiwgMHgyMzkyLCAweDAwMTUsIDB4MDBkMSwgMHgwMDEwLCAweDA0MDQsCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAwMCwgMHg4MDAwLCAweDAwMDIsIDB4M2E0NywgMHgwMDAzLCAweDEzOTksCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAwMCwgMHg4MDAwLCAweDAwMTUsIDB4MDAzYSwgMHgwMDEwLCAweDQwNDAsCi0JMHgwMDA0LCAweDA4ZWMsIDB4MDAxMywgMHgwMDM5LCAweDAwMTUsIDB4MDBiOCwgMHgwMDEwLCAweDAwMDMsCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAxMCwgMHgwMjAyLCAweDAwMTQsIDB4MDkyNSwgMHgwMDAzLCAweDAzODksCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTUsIDB4MDAzYSwgMHgwMDEwLCAweDAyMDIsCi0JMHgwMDE0LCAweDA5MjUsIDB4MDAwMywgMHgwMzg5LCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAxMCwgMHgwMDAzLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAwYiwgMHg4M2FkLCAweDAwMTEsIDB4MTM4OCwgMHgwMDEwLCAweDAwMDMsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YzAwYSwgMHgwMDBiLCAweDgzYjMsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAxMywgMHg2M2I4LCAweDAwMDAsIDB4YjAxMiwgMHgwMDAzLCAweDAzYmEsCi0JMHgwMDEwLCAweGMwMTIsIDB4MDAxMCwgMHhjMDExLCAweDAwMTIsIDB4MTA0YiwgMHgwMDAzLCAweDEzNGUsCi0JMHgwMDAyLCAweDEwM2IsIDB4MDAxMCwgMHhmZjAzLCAweDAwMDUsIDB4MDAwMiwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGMwMGQsIDB4MDAxMywgMHgwMzRlLCAweDAwMDAsIDB4ZmZiMCwgMHgwMDEwLCAweGMzYjEsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDEsIDB4Yjg4OCwgMHgwMDEwLCAweDAwMTEsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAxMiwgMHgwMDBiLCAweDgzY2IsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAwMiwgMHhkMTQyLCAweDAwMWIsIDB4MTQ4NSwgMHgwMDEyLCAweDNhNDMsCi0JMHgwMDAzLCAweDEzZGUsIDB4MDAxNSwgMHgwMDNhLCAweDAwMDAsIDB4MDgwMCwgMHgwMDEwLCAweDBkYjAsCi0JMHgwMDEzLCAweDYzZGUsIDB4MDAwMCwgMHgwYmZmLCAweDAwMDEsIDB4YjBlMCwgMHgwMDAzLCAweDE0MDcsCi0JMHgwMDEwLCAweDA5ZmYsIDB4MDAwMSwgMHhiMGUwLCAweDAwMDMsIDB4MTNlYiwgMHgwMDEwLCAweDA1ZmYsCi0JMHgwMDAxLCAweGIwZTAsIDB4MDAwMywgMHgxM2UyLCAweDAwMDAsIDB4YzAwZSwgMHgwMDAwLCAweDA1ZmUsCi0JMHgwMDEzLCAweDYzZTgsIDB4MDAwMCwgMHgwNTBkLCAweDAwMDUsIDB4MDAwMiwgMHgwMDAwLCAweDAwMDQsCi0JMHgwMDE0LCAweDA0NmMsIDB4MDAwMiwgMHgzYTQ3LCAweDAwMWIsIDB4MTQ2YiwgMHgwMDEzLCAweDA0MDIsCi0JMHgwMDAwLCAweDA5ZmUsIDB4MDAxMywgMHg2NDA0LCAweDAwMDAsIDB4MDkwZCwgMHgwMDA1LCAweDAwMDIsCi0JMHgwMDAwLCAweDAwMDEsIDB4MDAxNCwgMHgwNDlhLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGJhMDksIDB4MDAxYiwgMHg4M2Y1LCAweDAwMTEsIDB4MDNjOCwgMHgwMDEwLCAweDAwMGYsCi0JMHgwMDAwLCAweGZmYjYsIDB4MDAxMSwgMHhiNmU4LCAweDAwMDAsIDB4MDAwMSwgMHgwMDAzLCAweDE1M2YsCi0JMHgwMDExLCAweGI2ZTgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTMsIDB4MTU2MSwgMHgwMDExLCAweGI2ZTgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMywgMHgxNjUzLCAweDAwMDQsIDB4MDhlYywgMHgwMDEzLCAweDA0NmIsCi0JMHgwMDEwLCAweDBiZmUsIDB4MDAxMywgMHg2NDZiLCAweDAwMTAsIDB4MGIwZCwgMHgwMDA1LCAweDAwMDIsCi0JMHgwMDAwLCAweDAwMDIsIDB4MDAxNCwgMHgwNDlhLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGJhMDksIDB4MDAwYiwgMHg4NDExLCAweDAwMDAsIDB4YjkzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDEwLCAweDAwMjEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDBiLCAweDg0MTcsCi0JMHgwMDAxLCAweGIwYTgsIDB4MDAwMCwgMHgxOTlhLCAweDAwMTMsIDB4MjQxZCwgMHgwMDA1LCAweDAwYjAsCi0JMHgwMDAwLCAweDE5OTksIDB4MDAxMiwgMHhiMDUwLCAweDAwMDAsIDB4ZmZiMCwgMHgwMDAyLCAweGZmNTAsCi0JMHgwMDAyLCAweGZmNTAsIDB4MDAwMSwgMHhiMDgwLCAweDAwMDAsIDB4ZmZiMCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMTAsIDB4MDAwNiwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDBhLCAweDAwMWIsIDB4ODQyYSwgMHgwMDAwLCAweGI5MzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDE5LCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDBiLCAweDg0MzAsIDB4MDAwMSwgMHhiMGM4LCAweDAwMTAsIDB4MDBmZiwgMHgwMDAxLCAweGZmZTgsCi0JMHgwMDEwLCAweDAwNDgsIDB4MDAwYiwgMHgxNGE5LCAweDAwMDUsIDB4MDAwMiwgMHgwMDEwLCAweDAwMDYsCi0JMHgwMDEyLCAweDBjMTAsIDB4MDAxMCwgMHhmZjBjLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAxMCwgMHgwMDAzLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIxMDksIDB4MDAwYiwgMHg4NDQxLCAweDAwMDAsIDB4YjEwYiwgMHgwMDBiLCAweDY0NDUsCi0JMHgwMDEwLCAweGIxMGEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YzAwYSwgMHgwMDBiLCAweDg0NDcsCi0JMHgwMDAyLCAweDAzMmIsIDB4MDAxMCwgMHhmZjAzLCAweDAwMTEsIDB4MGQ4OCwgMHgwMDEwLCAweDAwMTEsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4MDMwYSwgMHgwMDFiLCAweDg0NGYsCi0JMHgwMDAwLCAweDExZmUsIDB4MDAwYiwgMHg2NDU0LCAweDAwMDAsIDB4MGQxMiwgMHgwMDEzLCAweDA0NWQsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDEsIDB4MTE4OCwgMHgwMDEwLCAweDAwMDMsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxMCwgMHgwZGIwLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMGEsCi0JMHgwMDBiLCAweDg0NWMsIDB4MDAwMCwgMHgwZDExLCAweDAwMTMsIDB4MDQ2YiwgMHgwMDAyLCAweGQxNDIsCi0JMHgwMDAzLCAweDE0NjIsIDB4MDAxMywgMHgwNDg1LCAweDAwMDAsIDB4MDVmZSwgMHgwMDEzLCAweDY0NmIsCi0JMHgwMDA1LCAweDAwMDIsIDB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4MDUwZCwgMHgwMDE0LCAweDA0NmMsCi0JMHgwMDAyLCAweDNhNDcsIDB4MDAxYiwgMHgxNDZiLCAweDAwMDQsIDB4MDhlYywgMHgwMDEzLCAweDAwNDcsCi0JMHgwMDAxLCAweGM3YzgsIDB4MDAxMCwgMHgwMDI4LCAweDAwMGIsIDB4MTQ4NCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMTAsIDB4MDAwYSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMWIsIDB4ODQ3NiwgMHgwMDAyLCAweGIwNGYsCi0JMHgwMDEzLCAweDE0ODQsIDB4MDAwMSwgMHgwZmU4LCAweDAwMTAsIDB4MDAwMCwgMHgwMDEzLCAweDE0ODIsCi0JMHgwMDAxLCAweDBmZTgsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTMsIDB4MTQ4MiwgMHgwMDE1LCAweDAwM2EsCi0JMHgwMDEwLCAweDgwODAsIDB4MDAwMywgMHgwNDg0LCAweDAwMTUsIDB4MDAzYSwgMHgwMDEwLCAweDQwNDAsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAwMCwgMHgxMmZlLCAweDAwMWIsIDB4NjA0ZiwgMHgwMDE1LCAweDAwMTIsCi0JMHgwMDAxLCAweDFiNTUsIDB4MDAxNSwgMHgwMDExLCAweDAwMDEsIDB4MWI1NSwgMHgwMDAxLCAweDEyODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGMwMGEsCi0JMHgwMDBiLCAweDg0OTAsIDB4MDAwNSwgMHgwMGIwLCAweDAwMDAsIDB4ODAwMCwgMHgwMDAxLCAweDEyODgsCi0JMHgwMDEwLCAweDAwMTEsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMGEsCi0JMHgwMDFiLCAweDg0OTgsIDB4MDAwMywgMHgwMDRmLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAxMCwgMHgwMDExLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweDAzMDksIDB4MDAxYiwgMHg4NGExLCAweDAwMTEsIDB4MGQ4OCwgMHgwMDEwLCAweDAwMDUsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjkwOSwgMHgwMDFiLCAweDg0YTcsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAwNSwgMHgwMGI2LCAweDAwMTAsIDB4MDYwMCwgMHgwMDE0LCAweDA2ODMsCi0JMHgwMDA0LCAweDA1MWIsIDB4MDAwMCwgMHhiMDVhLCAweDAwMDAsIDB4YjE1YiwgMHgwMDA1LCAweDAwNTQsCi0JMHgwMDEwLCAweDA4MjksIDB4MDAxMCwgMHgwZDU4LCAweDAwMTUsIDB4MDA1OSwgMHgwMDEwLCAweGZmZmYsCi0JMHgwMDAwLCAweGI5MzAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMTAsIDB4MDAxZSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAxYiwgMHg4NGI5LCAweDAwMDAsIDB4YjA1YywgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMWYsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDg0YmYsCi0JMHgwMDAxLCAweGIwYzgsIDB4MDAxMCwgMHgwMDBmLCAweDAwMGIsIDB4MTRjNiwgMHgwMDE1LCAweDAwZmYsCi0JMHgwMDEwLCAweDAwMDUsIDB4MDAxMywgMHgwNGNlLCAweDAwMDIsIDB4YjA0MCwgMHgwMDAzLCAweDE0Y2IsCi0JMHgwMDE1LCAweDAwZmYsIDB4MDAwMCwgMHgwMDA0LCAweDAwMTMsIDB4MDRjZSwgMHgwMDAxLCAweGIwYzgsCi0JMHgwMDEwLCAweDAwMDYsIDB4MDAwMiwgMHhmZjYwLCAweDAwMTAsIDB4ZmZiMiwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMDAsIDB4MDAxOSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiMTA5LCAweDAwMWIsIDB4ODRkNiwgMHgwMDEyLCAweGIxNzAsCi0JMHgwMDExLCAweGZmYzgsIDB4MDAxMCwgMHhmZjAwLCAweDAwMTEsIDB4YjJkMCwgMHgwMDEwLCAweGZmNjAsCi0JMHgwMDAyLCAweGIwNDUsIDB4MDAxMywgMHgxNGUxLCAweDAwMTUsIDB4MDBiMiwgMHgwMDAwLCAweDAwMDIsCi0JMHgwMDAzLCAweDA0ZWIsIDB4MDAwMiwgMHhiMDQ2LCAweDAwMDMsIDB4MTRlNiwgMHgwMDE1LCAweDAwYjIsCi0JMHgwMDAwLCAweDAwMDEsIDB4MDAwMywgMHgwNGViLCAweDAwMTUsIDB4MDBiMiwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAwLCAweGMwYjAsIDB4MDAxMCwgMHhjMGIxLCAweDAwMTMsIDB4MDRmMSwgMHgwMDAwLCAweGI5MzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAxMCwgMHgwMDJiLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMTEsCi0JMHgwMDBiLCAweDg0ZjAsIDB4MDAxMCwgMHhiMTZhLCAweDAwMTAsIDB4YjA2YiwgMHgwMDAwLCAweGIyNjEsCi0JMHgwMDE1LCAweDAwNDQsIDB4MDAxMCwgMHgwMDE4LCAweDAwMDAsIDB4YjkzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMjMsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4NjI0MSwgMHgwMDFiLCAweDg0ZmIsCi0JMHgwMDAzLCAweDk0ZmMsIDB4MDAxNSwgMHgwMGEwLCAweDAwMDAsIDB4MDAyMCwgMHgwMDEyLCAweGQwNDEsCi0JMHgwMDBiLCAweDE0ZmYsIDB4MDAxNSwgMHgwMGQxLCAweDAwMTAsIDB4MDIwMiwgMHgwMDEzLCAweDk1MDMsCi0JMHgwMDAwLCAweDc1ZmYsIDB4MDAxMSwgMHhmZmM4LCAweDAwMDAsIDB4MTgwNCwgMHgwMDAxLCAweGZmZDgsCi0JMHgwMDEwLCAweDAwMDksIDB4MDAxMywgMHg5NTA5LCAweDAwMDAsIDB4ZmY3NSwgMHgwMDAzLCAweDk1MGIsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwMjAwLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDAxLCAweGJkODgsIDB4MDAwMCwgMHgwMDA4LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwYjEsCi0JMHgwMDEwLCAweDA3ZDAsIDB4MDAwNSwgMHgwMGIwLCAweDAwMTAsIDB4MDAwOSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMTIsIDB4MDAwYiwgMHg4NTE5LCAweDAwMTMsIDB4MDQ2YiwgMHgwMDAwLCAweGJhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAxMCwgMHgwMDM1LCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDBiLCAweDg1MjAsIDB4MDAwMiwgMHhiMDQwLCAweDAwMDMsIDB4MTUzYywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMDEsIDB4MWI3MSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMTEsIDB4MDAwYiwgMHg4NTI5LCAweDAwMDIsIDB4YjEwMCwgMHgwMDEwLCAweGZmYjEsCi0JMHgwMDFiLCAweDI1MzAsIDB4MDAxMiwgMHhiMDAwLCAweDAwMDAsIDB4ZmZiMCwgMHgwMDEzLCAweDI1MmEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDEyLCAweDAwMGIsIDB4ODUzMiwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMDAsIDB4MDAxMywgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDEyLCAweDAwMWIsIDB4ODUzYSwgMHgwMDAzLCAweDA1M2UsCi0JMHgwMDEwLCAweGMwYjEsIDB4MDAwMCwgMHhjMGIwLCAweDAwMTcsIDB4NDAwMCwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMDEwLCAweDA1MDAsIDB4MDAxNCwgMHgwNjgzLCAweDAwMDUsIDB4MDA1NCwgMHgwMDEwLCAweDA4ODksCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTEsIDB4MGQ4OCwgMHgwMDAwLCAweDAwMDIsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAwOSwgMHgwMDFiLCAweDg1NGIsCi0JMHgwMDEwLCAweGIwNTgsIDB4MDAwMCwgMHgwZDU5LCAweDAwMDAsIDB4YjkzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMjMsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAxMSwgMHgwMDFiLCAweDg1NTMsCi0JMHgwMDEwLCAweGIxNWMsIDB4MDAxMCwgMHhiMDVkLCAweDAwMDUsIDB4MDAzMSwgMHgwMDEwLCAweDAwMmIsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDExLCAweDAwMWIsIDB4ODU1YSwgMHgwMDAwLCAweGIxNWUsCi0JMHgwMDAwLCAweGIwNWYsIDB4MDAwMywgMHg5NTVkLCAweDAwMTUsIDB4MDBhMCwgMHgwMDEwLCAweDAwMGMsCi0JMHgwMDAzLCAweDA2NjgsIDB4MDAwNSwgMHgwMGI2LCAweDAwMDAsIDB4MDcwMCwgMHgwMDE0LCAweDA2ODMsCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTEsIDB4MGQ4OCwgMHgwMDEwLCAweDAwMDksCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjcwOSwgMHgwMDBiLCAweDg1NmIsCi0JMHgwMDEyLCAweGI3NDksIDB4MDAwMywgMHgxNTcxLCAweDAwMDUsIDB4MDA1NCwgMHgwMDEwLCAweDA4ODksCi0JMHgwMDAzLCAweDA1NzMsIDB4MDAwNSwgMHgwMDU0LCAweDAwMTAsIDB4MDg5OCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMDAsIDB4MDAwMiwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMGIsIDB4ODU3YSwgMHgwMDEwLCAweGIwNTgsCi0JMHgwMDAwLCAweDBkNTksIDB4MDAwMSwgMHhiOWM4LCAweDAwMTAsIDB4ZjAwMCwgMHgwMDAxLCAweGZmZTgsCi0JMHgwMDEwLCAweGYwMDAsIDB4MDAxYiwgMHgxNWEzLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAwYiwgMHg4NTg5LCAweDAwMDEsIDB4YjBjOCwgMHgwMDAwLCAweGY3MDAsCi0JMHgwMDAwLCAweGZmYjAsIDB4MDAxMSwgMHhiMGU4LCAweDAwMDAsIDB4ZjEwMCwgMHgwMDEzLCAweDE1ZWEsCi0JMHgwMDExLCAweGIwZTgsIDB4MDAwMCwgMHhmMjAwLCAweDAwMTMsIDB4MTVlZiwgMHgwMDExLCAweGIwZTgsCi0JMHgwMDEwLCAweGYzMDAsIDB4MDAwMywgMHgxNjE0LCAweDAwMTEsIDB4YjBlOCwgMHgwMDAwLCAweGY0MDAsCi0JMHgwMDEzLCAweDE2MTksIDB4MDAxMSwgMHhiMGU4LCAweDAwMTAsIDB4ZjUwMCwgMHgwMDEzLCAweDE1ZWEsCi0JMHgwMDExLCAweGIwZTgsIDB4MDAxMCwgMHhmNjAwLCAweDAwMDMsIDB4MTYyYiwgMHgwMDA1LCAweDAwY2UsCi0JMHgwMDEwLCAweDAwMDksIDB4MDAwMCwgMHhiMGNmLCAweDAwMDMsIDB4MDhlMSwgMHgwMDAwLCAweGI5MzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDI1LCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMzksCi0JMHgwMDBiLCAweDg1YTgsIDB4MDAxMiwgMHhiNzQ5LCAweDAwMTMsIDB4MTVhZCwgMHgwMDAyLCAweGI1MmMsCi0JMHgwMDAwLCAweGZmYjUsIDB4MDAwMCwgMHhiMTYyLCAweDAwMDAsIDB4YjA2MywgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMWYsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjMwOSwgMHgwMDBiLCAweDg1YjMsCi0JMHgwMDAxLCAweGIzYzgsIDB4MDAxMCwgMHgwMDAzLCAweDAwMDMsIDB4MTViYiwgMHgwMDEwLCAweGZmYjIsCi0JMHgwMDAxLCAweGZmZTgsIDB4MDAxMCwgMHgwMDAzLCAweDAwMWIsIDB4MTViZCwgMHgwMDAwLCAweGMyYjcsCi0JMHgwMDEzLCAweDA2NDcsIDB4MDAwMSwgMHhiMmU4LCAweDAwMDAsIDB4MDAwMSwgMHgwMDEzLCAweDE1YzQsCi0JMHgwMDA1LCAweDAwY2UsIDB4MDAxMCwgMHgwMDBhLCAweDAwMTAsIDB4YjJjZiwgMHgwMDAzLCAweDA4ZTEsCi0JMHgwMDEwLCAweGI0NjUsIDB4MDAxMCwgMHhiNjY3LCAweDAwMTUsIDB4MDBiNywgMHgwMDEwLCAweDAwMTgsCi0JMHgwMDAxLCAweGI1YzgsIDB4MDAxMCwgMHgwMzAwLCAweDAwMTMsIDB4MTVlOSwgMHgwMDEyLCAweGI1NDgsCi0JMHgwMDEzLCAweDE1ZDAsIDB4MDAwMCwgMHhiNmZmLCAweDAwMTEsIDB4Yjc4MCwgMHgwMDEwLCAweGZmYjcsCi0JMHgwMDAyLCAweGI1NDksIDB4MDAxMywgMHgxNWQ1LCAweDAwMTAsIDB4YjRmZiwgMHgwMDExLCAweGI3ODAsCi0JMHgwMDEwLCAweGZmYjcsIDB4MDAxNSwgMHgwMDQ0LCAweDAwMTAsIDB4MDAxOCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMmMsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4Njg0MSwgMHgwMDFiLCAweDg1ZGIsCi0JMHgwMDE1LCAweDAwNDQsIDB4MDAwMCwgMHgwMDE5LCAweDAwMDUsIDB4MDAzMSwgMHgwMDAwLCAweDAwMzQsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHg1MDI5LCAweDAwMWIsIDB4ODVlMiwgMHgwMDE1LCAweDAwNDQsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAxMSwgMHhiN2M4LCAweDAwMTAsIDB4MDAwMywgMHgwMDEzLCAweDE1ZTksCi0JMHgwMDEwLCAweGZmNTUsIDB4MDAxMywgMHgwNjQ3LCAweDAwMDUsIDB4MDBiNSwgMHgwMDAwLCAweDAwMDgsCi0JMHgwMDE1LCAweDAwYjcsIDB4MDAxMCwgMHgwMDE4LCAweDAwMTMsIDB4MDY0NywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMDAsIDB4MDAwYiwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDExLCAweDAwMWIsIDB4ODVmNiwgMHgwMDEwLCAweGIxZmYsCi0JMHgwMDAxLCAweGIwZDAsIDB4MDAwMywgMHgxNWZmLCAweDAwMDUsIDB4MDBiNSwgMHgwMDEwLCAweDBiMDIsCi0JMHgwMDEwLCAweGIwNjIsIDB4MDAxMCwgMHhiMTYzLCAweDAwMDMsIDB4MDYwMSwgMHgwMDA1LCAweDAwYjUsCi0JMHgwMDAwLCAweDAzMDIsIDB4MDAxNSwgMHgwMDY1LCAweDAwMTAsIDB4MDAxMiwgMHgwMDA1LCAweDAwNjcsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAxNSwgMHgwMDZjLCAweDAwMDAsIDB4NzAwMCwgMHgwMDA1LCAweDAwNmQsCi0JMHgwMDEwLCAweDA1MDAsIDB4MDAxNSwgMHgwMDZmLCAweDAwMTAsIDB4MDAwYSwgMHgwMDE1LCAweDAwNDQsCi0JMHgwMDAwLCAweDAwMDEsIDB4MDAwNSwgMHgwMDUyLCAweDAwMDAsIDB4MjUwMCwgMHgwMDE1LCAweDAwNDQsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAxNSwgMHgwMGI3LCAweDAwMDAsIDB4MDAzMiwgMHgwMDEzLCAweDA2NDcsCi0JMHgwMDA1LCAweDAwYjUsIDB4MDAxMCwgMHgwMDI4LCAweDAwMTUsIDB4MDBiNywgMHgwMDEwLCAweDAwMTgsCi0JMHgwMDEzLCAweDA2NDcsIDB4MDAwNSwgMHgwMGI1LCAweDAwMDAsIDB4MDEwMCwgMHgwMDA1LCAweDAwNjcsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDBkODgsCi0JMHgwMDEwLCAweDAwMTgsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDFiLCAweDg2MjQsIDB4MDAwMSwgMHhiMGM4LCAweDAwMTAsIDB4MDBmZiwgMHgwMDEwLCAweGZmNjksCi0JMHgwMDE1LCAweDAwYjcsIDB4MDAwMCwgMHgwMDIwLCAweDAwMTMsIDB4MDY0NywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMTAsIDB4MDAwNSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiNjA5LCAweDAwMGIsIDB4ODYzMiwgMHgwMDAxLCAweGI2YzgsCi0JMHgwMDEwLCAweGZmMDAsIDB4MDAwMCwgMHhmZmIwLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMGEsCi0JMHgwMDBiLCAweDg2MzgsIDB4MDAwMSwgMHhiNmM4LCAweDAwMTAsIDB4MDBmZiwgMHgwMDEyLCAweGZmMTAsCi0JMHgwMDFiLCAweDE2NDEsIDB4MDAwMCwgMHhmZmI1LCAweDAwMTUsIDB4MDBiNywgMHgwMDEwLCAweDAwMTgsCi0JMHgwMDEzLCAweDA2NDcsIDB4MDAxMCwgMHhmZjYzLCAweDAwMDUsIDB4MDBiNSwgMHgwMDAwLCAweDA4MDAsCi0JMHgwMDE1LCAweDAwYjcsIDB4MDAxMCwgMHgwMDE4LCAweDAwMTMsIDB4MDY0NywgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgwZDg4LCAweDAwMTAsIDB4MDAwOSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMWIsIDB4ODY0ZSwgMHgwMDEwLCAweGI1NjEsCi0JMHgwMDEzLCAweDk2NTAsIDB4MDAxMCwgMHhiN2EwLCAweDAwMDMsIDB4MDY2OCwgMHgwMDA1LCAweDAwYjYsCi0JMHgwMDEwLCAweDAzMDAsIDB4MDAxNCwgMHgwNjgzLCAweDAwMDUsIDB4MDA1NCwgMHgwMDEwLCAweDA4MTksCi0JMHgwMDEwLCAweDBkNTgsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDBkODgsCi0JMHgwMDAwLCAweDAwMDIsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDFiLCAweDg2NjAsIDB4MDAwMCwgMHhiMDU5LCAweDAwMDMsIDB4OTY2MiwgMHgwMDEwLCAweGMwYTAsCi0JMHgwMDEwLCAweDcxZmYsIDB4MDAwMiwgMHhmZjI4LCAweDAwMTAsIDB4ZmY3MSwgMHgwMDAzLCAweDA2NjgsCi0JMHgwMDEyLCAweGQwNDEsIDB4MDAwYiwgMHgxNjY4LCAweDAwMTUsIDB4MDBkMSwgMHgwMDEwLCAweDAyMDIsCi0JMHgwMDAwLCAweDc1ZmYsIDB4MDAxMSwgMHhmZmM4LCAweDAwMDAsIDB4MTgwNCwgMHgwMDAxLCAweGZmZDgsCi0JMHgwMDEwLCAweDAwMDksIDB4MDAxMywgMHg5NjcxLCAweDAwMDAsIDB4ZmY3NSwgMHgwMDAzLCAweDk2NzMsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwMjAwLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDAxLCAweGJkODgsIDB4MDAwMCwgMHgwMDA4LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDA1LCAweDAwYjAsCi0JMHgwMDEwLCAweDAwMDksIDB4MDAxNSwgMHgwMGIxLCAweDAwMTAsIDB4MDdkMCwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMTIsIDB4MDAxYiwgMHg4NjgxLCAweDAwMTMsIDB4MDQ2YiwgMHgwMDE1LCAweDAwNDQsCi0JMHgwMDAwLCAweDAwMDgsIDB4MDAwNSwgMHgwMDk4LCAweDAwMTAsIDB4MDA1NiwgMHgwMDE1LCAweDAwOTksCi0JMHgwMDAwLCAweDk1NzUsIDB4MDAwNCwgMHgwOGE4LCAweDAwMDAsIDB4YjA5NiwgMHgwMDEyLCAweGIyNzAsCi0JMHgwMDEwLCAweGZmNTYsIDB4MDAxNCwgMHgwOGNhLCAweDAwMTAsIDB4YjA1MiwgMHgwMDEwLCAweGIxNTMsCi0JMHgwMDAwLCAweGI2ZmYsIDB4MDAxMSwgMHhiMmQwLCAweDAwMTAsIDB4ZmY1MCwgMHgwMDEwLCAweGIzNTEsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAwMSwgMHgxMmU4LCAweDAwMDEsIDB4MWI1NSwgMHgwMDAzLCAweDE4NDUsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwNDAwLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDAxLCAweDEyODgsIDB4MDAxMCwgMHgwMDExLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweDEwMDksIDB4MDAwYiwgMHg4NmExLCAweDAwMTUsIDB4MDAwZiwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDEwLCAweGMwMTQsIDB4MDAwMCwgMHgxMjEzLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAwMCwgMHgwMDA0LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGJhMDksIDB4MDAwYiwgMHg4NmFkLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweDFhMDksIDB4MDAwYiwgMHg4NmI1LCAweDAwMTIsIDB4MTA0YiwgMHgwMDFiLCAweDE2YmUsCi0JMHgwMDAwLCAweDFhMzAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMDAsIDB4MDAwYiwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweDE2MjEsIDB4MDAxYiwgMHg4NmJkLCAweDAwMTAsIDB4MTVmZSwgMHgwMDBiLCAweDY2ZGQsCi0JMHgwMDA0LCAweDA3MDQsIDB4MDAwMiwgMHgzYTQyLCAweDAwMGIsIDB4MTcwMywgMHgwMDAxLCAweDEwYzgsCi0JMHgwMDEwLCAweDAwMGYsIDB4MDAwYiwgMHgxNzY2LCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAwMCwgMHgwMDA4LCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAwYiwgMHg4NmNkLCAweDAwMTEsIDB4YjBlOCwgMHgwMDEwLCAweDAwMDksCi0JMHgwMDAzLCAweDE2ZDQsIDB4MDAxMSwgMHhiMGU4LCAweDAwMDAsIDB4MDAwMSwgMHgwMDFiLCAweDE3MDIsCi0JMHgwMDExLCAweDEzODgsIDB4MDAxMCwgMHgwMDBhLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMDksIDB4MDAwYiwgMHg4NmQ5LCAweDAwMDIsIDB4YjA0ZiwgMHgwMDFiLCAweDE2ZjksCi0JMHgwMDEzLCAweDA3MDIsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDEzODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDFiLCAweDg2ZTQsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YzAwYSwgMHgwMDFiLCAweDg2ZTcsCi0JMHgwMDEwLCAweGIwZmUsIDB4MDAwMywgMHg2NmVjLCAweDAwMDAsIDB4YjAxMiwgMHgwMDEzLCAweDA2ZWUsCi0JMHgwMDEwLCAweGMwMTIsIDB4MDAxMCwgMHhjMDExLCAweDAwMTUsIDB4MDAwZiwgMHgwMDEwLCAweDAwMDAsCi0JMHgwMDAyLCAweDM5NDQsIDB4MDAxMywgMHgxNmY3LCAweDAwMTUsIDB4MDAzOSwgMHgwMDAwLCAweDUwNDAsCi0JMHgwMDE1LCAweDAwYjgsIDB4MDAwMCwgMHgwMDA4LCAweDAwMTQsIDB4MDkyNSwgMHgwMDAwLCAweGMwMTMsCi0JMHgwMDAzLCAweDA3MDMsIDB4MDAxMCwgMHgwMmZlLCAweDAwMDMsIDB4NjZmZSwgMHgwMDE1LCAweDAwM2EsCi0JMHgwMDEwLCAweDIwMjAsIDB4MDAwMywgMHgwNzAzLCAweDAwMTUsIDB4MDAzYSwgMHgwMDAwLCAweDIwMDAsCi0JMHgwMDE1LCAweDAwM2EsIDB4MDAxMCwgMHgxMDEwLCAweDAwMDQsIDB4MDkxMSwgMHgwMDAzLCAweDAwNTQsCi0JMHgwMDAzLCAweGI3MDQsIDB4MDAwNSwgMHgwMDJhLCAweDAwMDAsIDB4MDAwNCwgMHgwMDAwLCAweGJhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAxMCwgMHgwMDFiLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGIwMDksCi0JMHgwMDBiLCAweDg3MGMsIDB4MDAwMCwgMHhjMDJjLCAweDAwMDAsIDB4YjAyZCwgMHgwMDEyLCAweDEwNGIsCi0JMHgwMDEzLCAweDE3MjcsIDB4MDAwMCwgMHgxYTMwLCAweDAwMDUsIDB4MDAzMSwgMHgwMDAwLCAweDAwMjMsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMTI5LCAweDAwMWIsIDB4ODcxNiwgMHgwMDAwLCAweGIxMjAsCi0JMHgwMDEwLCAweGIyMjEsIDB4MDAwMCwgMHhiMzIyLCAweDAwMDAsIDB4YjQyMywgMHgwMDAwLCAweGI1MjQsCi0JMHgwMDAwLCAweGMwMjUsIDB4MDAxMCwgMHhiNTI2LCAweDAwMTAsIDB4YzAyNywgMHgwMDEwLCAweGI1MTYsCi0JMHgwMDEwLCAweGMwMTcsIDB4MDAwMCwgMHhiNTE4LCAweDAwMDAsIDB4YzAxOSwgMHgwMDEwLCAweGMwMjgsCi0JMHgwMDAwLCAweGMwMjksIDB4MDAxMCwgMHhjMDFlLCAweDAwMTMsIDB4MDc1ZCwgMHgwMDEyLCAweDEwNDQsCi0JMHgwMDAzLCAweDE3NTcsIDB4MDAwMiwgMHgxMDM0LCAweDAwMDAsIDB4ZmYxMCwgMHgwMDAwLCAweDFhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweDFiMjksCi0JMHgwMDBiLCAweDg3MzAsIDB4MDAwMCwgMHgxYzMwLCAweDAwMDAsIDB4MWIzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIxMzEsIDB4MDAwYiwgMHg4NzM1LCAweDAwMDIsIDB4MWY0MywgMHgwMDBiLCAweDE3M2MsCi0JMHgwMDEwLCAweGIzYjUsIDB4MDAwMCwgMHhiNGI2LCAweDAwMDAsIDB4YzBiMywgMHgwMDEwLCAweGMwYjQsCi0JMHgwMDAwLCAweGIxMjAsIDB4MDAxMCwgMHhiMjIxLCAweDAwMDAsIDB4YjMyMiwgMHgwMDAwLCAweGI0MjMsCi0JMHgwMDAwLCAweGI1MjQsIDB4MDAxMCwgMHhiNjI1LCAweDAwMTAsIDB4YjUxNiwgMHgwMDAwLCAweGI2MTcsCi0JMHgwMDAwLCAweDE4MjYsIDB4MDAwMCwgMHgxOTI3LCAweDAwMDAsIDB4MWEzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDEwLCAweDAwMGYsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAxMSwgMHgwMDBiLCAweDg3NGIsCi0JMHgwMDAwLCAweGIwMjgsIDB4MDAwMCwgMHhiMTI5LCAweDAwMTIsIDB4MWUxMCwgMHgwMDEwLCAweGZmMWUsCi0JMHgwMDEzLCAweDY3NWQsIDB4MDAwMiwgMHgxZDAwLCAweDAwMTAsIDB4ZmYxZCwgMHgwMDA0LCAweDAyYWIsCi0JMHgwMDAyLCAweDNhNDIsIDB4MDAwMywgMHgxNzVkLCAweDAwMDMsIDB4MDc2NSwgMHgwMDAwLCAweDFhMzAsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweDFiNzksCi0JMHgwMDBiLCAweDg3NWMsIDB4MDAwMywgMHhiNzVkLCAweDAwMDUsIDB4MDAyYSwgMHgwMDAwLCAweDAwMDEsCi0JMHgwMDA1LCAweDAwMTUsIDB4MDAwMCwgMHgwMDAxLCAweDAwMDAsIDB4MWVmZSwgMHgwMDAzLCAweDY3NjUsCi0JMHgwMDAzLCAweDAyNzcsIDB4MDAxNywgMHg0MDAwLCAweDAwMDAsIDB4YmEzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDEwLCAweDAwMWIsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjA1MSwgMHgwMDFiLCAweDg3NmIsCi0JMHgwMDAwLCAweGIwYTMsIDB4MDAxMCwgMHhiNjk3LCAweDAwMTAsIDB4Yjk0NiwgMHgwMDE1LCAweDAwYTUsCi0JMHgwMDAwLCAweDAwMTAsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDEzODgsCi0JMHgwMDAwLCAweDAwMDIsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGI1MDksCi0JMHgwMDBiLCAweDg3NzgsIDB4MDAxNCwgMHgwOGNhLCAweDAwMDQsIDB4MDhiOSwgMHgwMDEyLCAweGI0NzAsCi0JMHgwMDEwLCAweGZmYjQsIDB4MDAxMCwgMHhiNDhlLCAweDAwMTAsIDB4YjA4YSwgMHgwMDEwLCAweGIxOGIsCi0JMHgwMDEyLCAweDEwNGQsIDB4MDAwMywgMHgxNzgzLCAweDAwMTMsIDB4MDdiMCwgMHgwMDEyLCAweDEwNGIsCi0JMHgwMDEzLCAweDE3OTYsIDB4MDAwNSwgMHgwMDhjLCAweDAwMTAsIDB4MDgyOSwgMHgwMDEwLCAweGMwOGQsCi0JMHgwMDAxLCAweGIyZDgsIDB4MDAxMCwgMHgwNjAwLCAweDAwMTAsIDB4ZmY4OCwgMHgwMDEwLCAweGIzODksCi0JMHgwMDAwLCAweDEzOTAsIDB4MDAxMCwgMHhiNTkxLCAweDAwMDAsIDB4YzA4ZiwgMHgwMDEwLCAweDFhYjksCi0JMHgwMDA0LCAweDA1MWIsIDB4MDAxMywgMHg5NzkxLCAweDAwMTAsIDB4YjA5MiwgMHgwMDEwLCAweGIxOTMsCi0JMHgwMDEzLCAweDk3OTQsIDB4MDAxMywgMHgwN2FiLCAweDAwMDUsIDB4MDA4YywgMHgwMDAwLCAweDA4MDksCi0JMHgwMDE1LCAweDAwOGQsIDB4MDAwMCwgMHgwMDA4LCAweDAwMDEsIDB4YjJkOCwgMHgwMDAwLCAweDAxMDAsCi0JMHgwMDEwLCAweGZmODgsIDB4MDAxMCwgMHhiMzg5LCAweDAwMDAsIDB4MTM5MCwgMHgwMDEwLCAweGI1OTEsCi0JMHgwMDAwLCAweGMwOGYsIDB4MDAwMCwgMHgxYTMwLCAweDAwMDUsIDB4MDAzMSwgMHgwMDEwLCAweDAwMGYsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDExLCAweDAwMGIsIDB4ODdhNiwgMHgwMDEzLCAweDk3YTcsCi0JMHgwMDAwLCAweGIxOTIsIDB4MDAwMCwgMHhiMDkzLCAweDAwMDMsIDB4OTdhYSwgMHgwMDEwLCAweDE5YTEsCi0JMHgwMDAwLCAweDE4YTIsIDB4MDAxNSwgMHgwMGIxLCAweDAwMTAsIDB4MDA5NiwgMHgwMDAzLCAweDA4MjEsCi0JMHgwMDAwLCAweGI1OTAsIDB4MDAxMCwgMHgxMzkxLCAweDAwMDEsIDB4MTBjOCwgMHgwMDEwLCAweDAwMGYsCi0JMHgwMDAxLCAweGZmZTgsIDB4MDAxMCwgMHgwMDA1LCAweDAwMTMsIDB4MTdkNywgMHgwMDAxLCAweGIyZDgsCi0JMHgwMDAwLCAweDA3MDAsIDB4MDAxMCwgMHhmZjg4LCAweDAwMTAsIDB4YjM4OSwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgxMzg4LCAweDAwMTAsIDB4MDAwOSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMWIsIDB4ODdjMiwgMHgwMDAyLCAweGIwNDksCi0JMHgwMDEzLCAweDE3Y2EsIDB4MDAwNSwgMHgwMDhjLCAweDAwMTAsIDB4MDg4OSwgMHgwMDE1LCAweDAwYjEsCi0JMHgwMDEwLCAweDAwOTYsIDB4MDAxMywgMHgwN2NlLCAweDAwMDUsIDB4MDA4YywgMHgwMDEwLCAweDA4OTgsCi0JMHgwMDE1LCAweDAwYjEsIDB4MDAwMCwgMHgwMDkyLCAweDAwMTAsIDB4YzA4ZCwgMHgwMDAwLCAweGMwOGYsCi0JMHgwMDEzLCAweDk3ZDAsIDB4MDAwMCwgMHhjMDkyLCAweDAwMTAsIDB4YzA5MywgMHgwMDEzLCAweDk3ZDMsCi0JMHgwMDEwLCAweDE5YTEsIDB4MDAwMCwgMHgxOGEyLCAweDAwMDMsIDB4MDgyMSwgMHgwMDAxLCAweGIyZDgsCi0JMHgwMDAwLCAweDAxMDAsIDB4MDAxMCwgMHhmZjg4LCAweDAwMTAsIDB4YjM4OSwgMHgwMDA1LCAweDAwOGMsCi0JMHgwMDEwLCAweDA4ODAsIDB4MDAxNSwgMHgwMDhkLCAweDAwMDAsIDB4MDAwOCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgxMzg4LCAweDAwMDAsIDB4MDAwZSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMWIsIDB4ODdlNiwgMHgwMDEwLCAweGIwOGYsCi0JMHgwMDAwLCAweGI1OTAsIDB4MDAxMCwgMHgxMzkxLCAweDAwMDAsIDB4MWEzMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMGQsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAyMSwgMHgwMDFiLCAweDg3ZWYsCi0JMHgwMDAzLCAweDk3ZjAsIDB4MDAxMCwgMHhiMzkyLCAweDAwMTAsIDB4YjI5MywgMHgwMDAzLCAweDk3ZjMsCi0JMHgwMDAwLCAweGIxYTEsIDB4MDAxMCwgMHhiMGEyLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAwMCwgMHgwMDBiLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIyMTEsIDB4MDAxYiwgMHg4N2ZkLCAweDAwMDAsIDB4YjNmZiwgMHgwMDAxLCAweGIwODAsCi0JMHgwMDAwLCAweGZmYjMsIDB4MDAxYiwgMHgyODA0LCAweDAwMDIsIDB4YjIwMCwgMHgwMDAzLCAweDA4MDUsCi0JMHgwMDEwLCAweGIyZmYsIDB4MDAxMSwgMHhiMTgwLCAweDAwMTAsIDB4ZmZiMiwgMHgwMDExLCAweDEzODgsCi0JMHgwMDAwLCAweDAwMGIsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGIyMTIsCi0JMHgwMDBiLCAweDg4MGMsIDB4MDAxNSwgMHgwMGIxLCAweDAwMDAsIDB4MDA5MiwgMHgwMDAyLCAweDEwNGMsCi0JMHgwMDAzLCAweDE4MWYsIDB4MDAxMSwgMHhjMmU4LCAweDAwMTAsIDB4MDAwYywgMHgwMDBiLCAweDE4MTcsCi0JMHgwMDE1LCAweDAwZmYsIDB4MDAwMCwgMHgwODAwLCAweDAwMTMsIDB4MDgxZiwgMHgwMDExLCAweGMyZTgsCi0JMHgwMDAwLCAweDAwMjAsIDB4MDAwYiwgMHgxODFkLCAweDAwMTUsIDB4MDBmZiwgMHgwMDEwLCAweDE4MDAsCi0JMHgwMDEzLCAweDA4MWYsIDB4MDAxNSwgMHgwMGZmLCAweDAwMDAsIDB4MTAwMCwgMHgwMDExLCAweGIxZDAsCi0JMHgwMDEwLCAweGZmYjEsIDB4MDAxNSwgMHgwMDlhLCAweDAwMTAsIDB4MDAzNiwgMHgwMDA1LCAweDAwOWIsCi0JMHgwMDAwLCAweDk1ZDUsIDB4MDAxMiwgMHhkMDQxLCAweDAwMWIsIDB4MTgyNSwgMHgwMDE1LCAweDAwZDEsCi0JMHgwMDEwLCAweDAyMDIsIDB4MDAxMywgMHg5ODI5LCAweDAwMTIsIDB4MTA0ZSwgMHgwMDEzLCAweDE4MmUsCi0JMHgwMDEyLCAweGIxMmYsIDB4MDAxMCwgMHhmZmIxLCAweDAwMDAsIDB4YjE3NSwgMHgwMDEzLCAweDk4MmYsCi0JMHgwMDE1LCAweDAwZDEsIDB4MDAwMCwgMHgwMjAwLCAweDAwMDEsIDB4MTljOCwgMHgwMDEwLCAweGZmZjAsCi0JMHgwMDFiLCAweDE4MzgsIDB4MDAxNSwgMHgwMGIxLCAweDAwMTAsIDB4MDdkMCwgMHgwMDAzLCAweDA4M2EsCi0JMHgwMDE1LCAweDAwYjEsIDB4MDAwMCwgMHgxYjU4LCAweDAwMDUsIDB4MDBiMCwgMHgwMDEwLCAweDAwMDksCi0JMHgwMDE1LCAweDAwMzAsIDB4MDAwMCwgMHgwNDAwLCAweDAwMDEsIDB4YmQ4OCwgMHgwMDAwLCAweDAwMGIsCi0JMHgwMDAwLCAweGZmMzEsIDB4MDAxNSwgMHgwMDMzLCAweDAwMDAsIDB4YjAxMiwgMHgwMDFiLCAweDg4NDMsCi0JMHgwMDAzLCAweDA3MDMsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDAwLCAweGE0ZmYsCi0JMHgwMDAzLCAweDY4OTMsIDB4MDAxMSwgMHhmZmE4LCAweDAwMTAsIDB4MDAwNSwgMHgwMDBiLCAweDI4OTMsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMSwgMHgxYjZjLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGIyMTEsCi0JMHgwMDBiLCAweDg4NTAsIDB4MDAwMiwgMHhiMjAwLCAweDAwMTAsIDB4ZmZiMiwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAxLCAweDFiNmMsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjIwYSwgMHgwMDFiLCAweDg4NTcsCi0JMHgwMDE1LCAweDAwMGYsIDB4MDAwMCwgMHgwMDAxLCAweDAwMDAsIDB4MTIxMywgMHgwMDA1LCAweDAwMTAsCi0JMHgwMDAwLCAweDgwMDAsIDB4MDAxNSwgMHgwMGEzLCAweDAwMDAsIDB4MDIwMCwgMHgwMDAwLCAweGM2OTcsCi0JMHgwMDA1LCAweDAwNDYsIDB4MDAwMCwgMHgwMDAyLCAweDAwMTUsIDB4MDBhNSwgMHgwMDAwLCAweDAwMTAsCi0JMHgwMDExLCAweGM0ZDgsIDB4MDAwMCwgMHgzMjAwLCAweDAwMTAsIDB4ZmY4OCwgMHgwMDAwLCAweGM1ODksCi0JMHgwMDEwLCAweGM0OGEsIDB4MDAxMCwgMHhjNThiLCAweDAwMTAsIDB4YzA4ZSwgMHgwMDA1LCAweDAwOGMsCi0JMHgwMDEwLCAweGUxMDksIDB4MDAxMCwgMHhjMDhkLCAweDAwMTUsIDB4MDA5MCwgMHgwMDAxLCAweDFiNTUsCi0JMHgwMDA1LCAweDAwOTEsIDB4MDAxMCwgMHhmZmZmLCAweDAwMDAsIDB4YjI5MiwgMHgwMDAwLCAweGIzOTMsCi0JMHgwMDE1LCAweDAwOWEsIDB4MDAxMCwgMHgwMDU2LCAweDAwMDUsIDB4MDA5YiwgMHgwMDEwLCAweDk1ZjUsCi0JMHgwMDEyLCAweGQwNDIsIDB4MDAwMywgMHgxODg2LCAweDAwMDUsIDB4MDBiMCwgMHgwMDEwLCAweDgwODAsCi0JMHgwMDExLCAweDEzODgsIDB4MDAxMCwgMHgwMDExLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMGEsIDB4MDAwYiwgMHg4ODgxLCAweDAwMTUsIDB4MDBiOCwgMHgwMDEwLCAweDAwMGMsCi0JMHgwMDE0LCAweDA5MjUsIDB4MDAwMywgMHgwODg4LCAweDAwMDUsIDB4MDA3NSwgMHgwMDEwLCAweDgwOTIsCi0JMHgwMDE1LCAweDAwYjEsIDB4MDAxMCwgMHgwN2QwLCAweDAwMDUsIDB4MDBiMCwgMHgwMDEwLCAweDAwMDksCi0JMHgwMDAxLCAweGJkODgsIDB4MDAwMCwgMHgwMDBiLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDAwLCAweGIwMTIsIDB4MDAxYiwgMHg4ODkxLCAweDAwMDMsIDB4MDcwMywgMHgwMDE1LCAweDAwZDEsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAwMSwgMHgxMjg4LCAweDAwMTAsIDB4MDAwMywgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAwMCwgMHhiMDA5LCAweDAwMGIsIDB4ODg5YSwgMHgwMDAxLCAweDEyODgsCi0JMHgwMDEwLCAweDAwMDMsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGMwMGEsCi0JMHgwMDBiLCAweDg4YTAsIDB4MDAxMCwgMHhiMGZlLCAweDAwMDMsIDB4NjhhNSwgMHgwMDAwLCAweGIwMTIsCi0JMHgwMDAzLCAweDA3MDMsIDB4MDAxMCwgMHhjMDEyLCAweDAwMTAsIDB4YzAxMSwgMHgwMDAzLCAweDA3MDMsCi0JMHgwMDAwLCAweGJhMzAsIDB4MDAwNSwgMHgwMDMxLCAweDAwMTAsIDB4MDAyMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIwMTksIDB4MDAxYiwgMHg4OGFkLCAweDAwMDIsIDB4YjIwMCwgMHgwMDExLCAweGZmYzgsCi0JMHgwMDEwLCAweDAwZmYsIDB4MDAxMCwgMHhmZmIyLCAweDAwMTAsIDB4YjJiNywgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMjMsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjIwYSwgMHgwMDBiLCAweDg4YjcsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAwMCwgMHhiYTMwLCAweDAwMDUsIDB4MDAzMSwgMHgwMDAwLCAweDAwMjMsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiNDA5LCAweDAwMGIsIDB4ODhiZSwgMHgwMDAyLCAweGI0MDAsCi0JMHgwMDExLCAweGZmYzgsIDB4MDAxMCwgMHgwMGZmLCAweDAwMTAsIDB4ZmZiNCwgMHgwMDEwLCAweGI0YjcsCi0JMHgwMDA1LCAweDAwMzEsIDB4MDAwMCwgMHgwMDIzLCAweDAwMTUsIDB4MDAzMywgMHgwMDEwLCAweGI0MGEsCi0JMHgwMDFiLCAweDg4YzgsIDB4MDAxNywgMHg0MDAwLCAweDAwMDAsIDB4YmEzMCwgMHgwMDAxLCAweGM3YzgsCi0JMHgwMDAwLCAweDAwMjAsIDB4MDAxYiwgMHgxOGQ2LCAweDAwMDUsIDB4MDAzMSwgMHgwMDEwLCAweDAwMjgsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiMjA5LCAweDAwMGIsIDB4ODhkMiwgMHgwMDExLCAweGIyYzgsCi0JMHgwMDAwLCAweGZmODAsIDB4MDAwMywgMHgxOGQ5LCAweDAwMTAsIDB4YzRiMCwgMHgwMDEwLCAweGM1YjEsCi0JMHgwMDAzLCAweDA4ZGIsIDB4MDAxMCwgMHhjNmIxLCAweDAwMDAsIDB4YzBiMCwgMHgwMDA1LCAweDAwMzEsCi0JMHgwMDAwLCAweDAwMDQsIDB4MDAxNSwgMHgwMDMzLCAweDAwMTAsIDB4YjIxMSwgMHgwMDFiLCAweDg4ZGYsCi0JMHgwMDE3LCAweDQwMDAsIDB4MDAxNSwgMHgwMGI4LCAweDAwMTAsIDB4MDAwOSwgMHgwMDE1LCAweDAwM2EsCi0JMHgwMDEwLCAweDA3MDcsIDB4MDAxNCwgMHgwOTI1LCAweDAwMTMsIDB4MDAyZCwgMHgwMDE1LCAweDAwYjgsCi0JMHgwMDEwLCAweDAwMDksIDB4MDAxNSwgMHgwMDNhLCAweDAwMTAsIDB4MDcwNywgMHgwMDAzLCAweDA5MjUsCi0JMHgwMDA0LCAweDAxMWMsIDB4MDAxNSwgMHgwMDMwLCAweDAwMDAsIDB4MDQwMCwgMHgwMDExLCAweDBkODgsCi0JMHgwMDAwLCAweDAwMDQsIDB4MDAwMCwgMHhmZjMxLCAweDAwMTUsIDB4MDAzMywgMHgwMDAwLCAweGJhMDksCi0JMHgwMDFiLCAweDg4ZjQsIDB4MDAwNCwgMHgwOGE4LCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAwMCwgMHgwMDEwLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIyMGEsIDB4MDAxYiwgMHg4OGZkLCAweDAwMTUsIDB4MDAzMCwgMHgwMDAwLCAweDA0MDAsCi0JMHgwMDExLCAweDBkODgsIDB4MDAxMCwgMHgwMDExLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweDAzMDksIDB4MDAxYiwgMHg4OTA1LCAweDAwMDIsIDB4MDMyNywgMHgwMDEwLCAweGZmYjIsCi0JMHgwMDExLCAweDBkODgsIDB4MDAxMCwgMHgwMDExLCAweDAwMDAsIDB4ZmYzMSwgMHgwMDE1LCAweDAwMzMsCi0JMHgwMDEwLCAweGIyMGEsIDB4MDAwYiwgMHg4OTBkLCAweDAwMTUsIDB4MDBiOCwgMHgwMDEwLCAweDAwMDYsCi0JMHgwMDAzLCAweDA5MjUsIDB4MDAxNCwgMHgwMTJlLCAweDAwMDQsIDB4MDhhOCwgMHgwMDE1LCAweDAwMzAsCi0JMHgwMDAwLCAweDA0MDAsIDB4MDAxMSwgMHgxMzg4LCAweDAwMDAsIDB4MDAxMCwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiMjBhLCAweDAwMGIsIDB4ODkxYSwgMHgwMDEyLCAweDEwMjcsCi0JMHgwMDEwLCAweGZmYjIsIDB4MDAxMSwgMHgxMzg4LCAweDAwMTAsIDB4MDAxMSwgMHgwMDAwLCAweGZmMzEsCi0JMHgwMDE1LCAweDAwMzMsIDB4MDAxMCwgMHhiMjBhLCAweDAwMWIsIDB4ODkyMiwgMHgwMDE1LCAweDAwYjgsCi0JMHgwMDAwLCAweDAwMDcsIDB4MDAxMywgMHg0OTI1LCAweDAwMDAsIDB4YjgzOCwgMHgwMDE3LCAweDQwMDAsCi0JMHg5YThjLCAweGFmM2QKLX07Ci11bnNpZ25lZCBzaG9ydCB4c2VxaXB4X2NvZGVfbGVuZ3RoMDEgPSAweDEyNTI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbDI0MDAuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjQwMC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzkxNGZjLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjQwMC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiBRTG9naWMgRmlicmUgQ2hhbm5lbCBIQkEgRHJpdmVyCi0gKiBDb3B5cmlnaHQgKGMpICAyMDAzLTIwMDUgUUxvZ2ljIENvcnBvcmF0aW9uCi0gKgotICogU2VlIExJQ0VOU0UucWxhMnh4eCBmb3IgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgZGV0YWlscy4KLSAqLwotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLQotI2luY2x1ZGUgInFsYV9kZWYuaCIKLQotc3RhdGljIGNoYXIgcWxhX2RyaXZlcl9uYW1lW10gPSAicWxhMjQwMCI7Ci0KLWV4dGVybiB1aW50MzJfdCBmdzI0MDBfdmVyc2lvbl9zdHJbXTsKLWV4dGVybiB1aW50MzJfdCBmdzI0MDBfYWRkcjAxOwotZXh0ZXJuIHVpbnQzMl90IGZ3MjQwMF9jb2RlMDFbXTsKLWV4dGVybiB1aW50MzJfdCBmdzI0MDBfbGVuZ3RoMDE7Ci1leHRlcm4gdWludDMyX3QgZncyNDAwX2FkZHIwMjsKLWV4dGVybiB1aW50MzJfdCBmdzI0MDBfY29kZTAyW107Ci1leHRlcm4gdWludDMyX3QgZncyNDAwX2xlbmd0aDAyOwotCi1zdGF0aWMgc3RydWN0IHFsYV9md19pbmZvIHFsYV9md190YmxbXSA9IHsKLQl7Ci0JCS5hZGRyZXNzaW5nCT0gRldfSU5GT19BRERSX0VYVEVOREVELAotCQkuZndjb2RlCQk9ICh1bnNpZ25lZCBzaG9ydCAqKSZmdzI0MDBfY29kZTAxWzBdLAotCQkuZndsZW4JCT0gKHVuc2lnbmVkIHNob3J0ICopJmZ3MjQwMF9sZW5ndGgwMSwKLQkJLmxmd3N0YXJ0CT0gKHVuc2lnbmVkIGxvbmcgKikmZncyNDAwX2FkZHIwMSwKLQl9LAotCXsKLQkJLmFkZHJlc3NpbmcJPSBGV19JTkZPX0FERFJfRVhURU5ERUQsCi0JCS5md2NvZGUJCT0gKHVuc2lnbmVkIHNob3J0ICopJmZ3MjQwMF9jb2RlMDJbMF0sCi0JCS5md2xlbgkJPSAodW5zaWduZWQgc2hvcnQgKikmZncyNDAwX2xlbmd0aDAyLAotCQkubGZ3c3RhcnQJPSAodW5zaWduZWQgbG9uZyAqKSZmdzI0MDBfYWRkcjAyLAotCX0sCi0JeyBGV19JTkZPX0FERFJfTk9NT1JFLCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBxbGFfYm9hcmRfaW5mbyBxbGFfYm9hcmRfdGJsW10gPSB7Ci0JewotCQkuZHJ2X25hbWUJPSBxbGFfZHJpdmVyX25hbWUsCi0JCS5pc3BfbmFtZQk9ICJJU1AyNDIyIiwKLQkJLmZ3X2luZm8JPSBxbGFfZndfdGJsLAotCQkuZndfZm5hbWUJPSAicWwyNDAwX2Z3LmJpbiIsCi0JfSwKLQl7Ci0JCS5kcnZfbmFtZQk9IHFsYV9kcml2ZXJfbmFtZSwKLQkJLmlzcF9uYW1lCT0gIklTUDI0MzIiLAotCQkuZndfaW5mbwk9IHFsYV9md190YmwsCi0JCS5md19mbmFtZQk9ICJxbDI0MDBfZncuYmluIiwKLQl9LAotCXsKLQkJLmRydl9uYW1lCT0gcWxhX2RyaXZlcl9uYW1lLAotCQkuaXNwX25hbWUJPSAiSVNQNTQyMiIsCi0JCS5md19pbmZvCT0gcWxhX2Z3X3RibCwKLQkJLmZ3X2ZuYW1lCT0gInFsMjQwMF9mdy5iaW4iLAotCX0sCi0JewotCQkuZHJ2X25hbWUJPSBxbGFfZHJpdmVyX25hbWUsCi0JCS5pc3BfbmFtZQk9ICJJU1A1NDMyIiwKLQkJLmZ3X2luZm8JPSBxbGFfZndfdGJsLAotCQkuZndfZm5hbWUJPSAicWwyNDAwX2Z3LmJpbiIsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBxbGEyNHh4X3BjaV90YmxbXSA9IHsKLQl7Ci0JCS52ZW5kb3IJCT0gUENJX1ZFTkRPUl9JRF9RTE9HSUMsCi0JCS5kZXZpY2UJCT0gUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjQyMiwKLQkJLnN1YnZlbmRvcgk9IFBDSV9BTllfSUQsCi0JCS5zdWJkZXZpY2UJPSBQQ0lfQU5ZX0lELAotCQkuZHJpdmVyX2RhdGEJPSAodW5zaWduZWQgbG9uZykmcWxhX2JvYXJkX3RibFswXSwKLQl9LAotCXsKLQkJLnZlbmRvcgkJPSBQQ0lfVkVORE9SX0lEX1FMT0dJQywKLQkJLmRldmljZQkJPSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyNDMyLAotCQkuc3VidmVuZG9yCT0gUENJX0FOWV9JRCwKLQkJLnN1YmRldmljZQk9IFBDSV9BTllfSUQsCi0JCS5kcml2ZXJfZGF0YQk9ICh1bnNpZ25lZCBsb25nKSZxbGFfYm9hcmRfdGJsWzFdLAotCX0sCi0JewotCQkudmVuZG9yCQk9IFBDSV9WRU5ET1JfSURfUUxPR0lDLAotCQkuZGV2aWNlCQk9IFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDU0MjIsCi0JCS5zdWJ2ZW5kb3IJPSBQQ0lfQU5ZX0lELAotCQkuc3ViZGV2aWNlCT0gUENJX0FOWV9JRCwKLQkJLmRyaXZlcl9kYXRhCT0gKHVuc2lnbmVkIGxvbmcpJnFsYV9ib2FyZF90YmxbMl0sCi0JfSwKLQl7Ci0JCS52ZW5kb3IJCT0gUENJX1ZFTkRPUl9JRF9RTE9HSUMsCi0JCS5kZXZpY2UJCT0gUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNTQzMiwKLQkJLnN1YnZlbmRvcgk9IFBDSV9BTllfSUQsCi0JCS5zdWJkZXZpY2UJPSBQQ0lfQU5ZX0lELAotCQkuZHJpdmVyX2RhdGEJPSAodW5zaWduZWQgbG9uZykmcWxhX2JvYXJkX3RibFszXSwKLQl9LAotCi0JezAsIDB9LAotfTsKLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBxbGEyNHh4X3BjaV90YmwpOwotCi1zdGF0aWMgaW50IF9fZGV2aW5pdAotcWxhMjR4eF9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKLXsKLQlyZXR1cm4gcWxhMngwMF9wcm9iZV9vbmUocGRldiwKLQkgICAgKHN0cnVjdCBxbGFfYm9hcmRfaW5mbyAqKWlkLT5kcml2ZXJfZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZGV2ZXhpdAotcWxhMjR4eF9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQotewotCXFsYTJ4MDBfcmVtb3ZlX29uZShwZGV2KTsKLX0KLQotc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHFsYTI0eHhfcGNpX2RyaXZlciA9IHsKLQkubmFtZQkJPSAicWxhMjQwMCIsCi0JLmlkX3RhYmxlCT0gcWxhMjR4eF9wY2lfdGJsLAotCS5wcm9iZQkJPSBxbGEyNHh4X3Byb2JlX29uZSwKLQkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKHFsYTI0eHhfcmVtb3ZlX29uZSksCi19OwotCi1zdGF0aWMgaW50IF9faW5pdAotcWxhMjR4eF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIHBjaV9tb2R1bGVfaW5pdCgmcWxhMjR4eF9wY2lfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1xbGEyNHh4X2V4aXQodm9pZCkKLXsKLQlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJnFsYTI0eHhfcGNpX2RyaXZlcik7Ci19Ci0KLW1vZHVsZV9pbml0KHFsYTI0eHhfaW5pdCk7Ci1tb2R1bGVfZXhpdChxbGEyNHh4X2V4aXQpOwotCi1NT0RVTEVfQVVUSE9SKCJRTG9naWMgQ29ycG9yYXRpb24iKTsKLU1PRFVMRV9ERVNDUklQVElPTigiUUxvZ2ljIElTUDI0eHggRkMtU0NTSSBIb3N0IEJ1cyBBZGFwdGVyIGRyaXZlciIpOwotTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotTU9EVUxFX1ZFUlNJT04oUUxBMlhYWF9WRVJTSU9OKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsMjQwMF9mdy5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyNDAwX2Z3LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MmIyZDMuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWwyNDAwX2Z3LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjM0NiArMCwwIEBACi0vKgotICogUUxvZ2ljIEZpYnJlIENoYW5uZWwgSEJBIERyaXZlcgotICogQ29weXJpZ2h0IChjKSAgMjAwMy0yMDA1IFFMb2dpYyBDb3Jwb3JhdGlvbgotICoKLSAqIFNlZSBMSUNFTlNFLnFsYTJ4eHggZm9yIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGRldGFpbHMuCi0gKi8KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCi0vKgotICoJRmlybXdhcmUgVmVyc2lvbiA0LjAwLjE4ICgxNDo1MyBKYW4gMzAsIDIwMDYpCi0gKi8KLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11aW50MzJfdCBmdzI0MDBfdmVyc2lvbiA9IDQqMTAyNCswOwotI2Vsc2UKLXVpbnQzMl90IHJpc2NfY29kZV92ZXJzaW9uID0gNCoxMDI0KzA7Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi11aW50MzJfdCBmdzI0MDBfdmVyc2lvbl9zdHJbXSA9IHs0LCAwLDE4fTsKLSNlbHNlCi11aW50MzJfdCBmaXJtd2FyZV92ZXJzaW9uW10gPSB7NCwgMCwxOH07Ci0jZW5kaWYKLQotI2lmZGVmIFVOSVFVRV9GV19OQU1FCi0jZGVmaW5lIGZ3MjQwMF9WRVJTSU9OX1NUUklORyAiNC4wMC4xOCIKLSNlbHNlCi0jZGVmaW5lIEZXX1ZFUlNJT05fU1RSSU5HICI0LjAwLjE4IgotI2VuZGlmCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdWludDMyX3QgZncyNDAwX2FkZHIwMSA9IDB4MDAxMDAwMDAgOwotI2Vsc2UKLXVpbnQzMl90IHJpc2NfY29kZV9hZGRyMDEgPSAweDAwMTAwMDAwIDsKLSNlbmRpZgotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVpbnQzMl90IGZ3MjQwMF9jb2RlMDFbXSA9IHsKLSNlbHNlCi11aW50MzJfdCByaXNjX2NvZGUwMVtdID0gewotI2VuZGlmCi0JMHgwNDAxZjE3YywgMHgwMDEwZDAwMCwgMHgwMDEwMDAwMCwgMHgwMDAwYTk3MSwKLQkweDAwMDAwMDA0LCAweDAwMDAwMDAwLCAweDAwMDAwMDEyLCAweDAwMDAwMDAyLAotCTB4MDAwMDAwMDMsIDB4MDAwMDAwMDAsIDB4MjA0MzRmNTAsIDB4NTk1MjQ5NDcsCi0JMHg0ODU0MjAzMiwgMHgzMDMwMzUyMCwgMHg1MTRjNGY0NywgMHg0OTQzMjA0MywKLQkweDRmNTI1MDRmLCAweDUyNDE1NDQ5LCAweDRmNGUyMDIwLCAweDIwNDk1MzUwLAotCTB4MzIzNDc4NzgsIDB4MjA0NjY5NzIsIDB4NmQ3NzYxNzIsIDB4NjUyMDIwMjAsCi0JMHg1NjY1NzI3MywgMHg2OTZmNmUyMCwgMHgzNDJlMzAyZSwgMHgzMTM4MjAyMCwKLQkweDIwMjAyMDI0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLQkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0JMHg0MjAwMTgwMCwgMHgwMDEwMDE0ZiwgMHg0MjAwMjAwMCwgMHgwMDEwYjZmZCwKLQkweDUwMGMwODAwLCAweDgwMGMxODAwLCAweDUwMGMxMDAwLCAweDgwMGMxODAwLAotCTB4NTQwNDIwMDAsIDB4ODAxMDIwMDAsIDB4ODAwNDA4MDAsIDB4ODAwODEwNDAsCi0JMHgwNDAyMDdmYywgMHg1MDBjMDgwMCwgMHg4MDA0MDljMCwgMHgwNDAyMDdmNiwKLQkweDQ0MDAyMDAwLCAweDgwMTAyMDAwLCAweDQwMTAwMDAwLCAweDQ0MDQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQwODAwMDAsIDB4ODAwMDAwMDAsIDB4NDQwYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDEwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NDE0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0MTgwMDAwLCAweDgwMDAwMDAwLCAweDQ0MWMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQyMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDQyNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDI4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NDJjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0MzAwMDAwLCAweDgwMDAwMDAwLCAweDQ0MzQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQzODAwMDAsIDB4ODAwMDAwMDAsIDB4NDQzYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDQwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NDQ0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0NDgwMDAwLCAweDgwMDAwMDAwLCAweDQ0NGMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQ1MDAwMDAsIDB4ODAwMDAwMDAsIDB4NDQ1NDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDU4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NDVjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0NjAwMDAwLCAweDgwMDAwMDAwLCAweDQ0NjQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQ2ODAwMDAsIDB4ODAwMDAwMDAsIDB4NDQ2YzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDcwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NDc0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0NzgwMDAwLCAweDgwMDAwMDAwLCAweDQ0N2MwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQ4MDAwMDAsIDB4ODAwMDAwMDAsIDB4NDQ4NDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NDg4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NDhjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0OTAwMDAwLCAweDgwMDAwMDAwLCAweDQ0OTQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDQ5ODAwMDAsIDB4ODAwMDAwMDAsIDB4NDQ5YzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NGEwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NGE0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0YTgwMDAwLCAweDgwMDAwMDAwLCAweDQ0YWMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDRiMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDRiNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NGI4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NGJjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0YzAwMDAwLCAweDgwMDAwMDAwLCAweDQ0YzQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDRjODAwMDAsIDB4ODAwMDAwMDAsIDB4NDRjYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NGQwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NGQ4MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0ZDQwMDAwLCAweDgwMDAwMDAwLCAweDQ0ZGMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDRlMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDRlNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NGU4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NGVjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ0ZjAwMDAwLCAweDgwMDAwMDAwLCAweDQ0ZjQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDRmODAwMDAsIDB4ODAwMDAwMDAsIDB4NDRmYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTAwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NTA0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1MDgwMDAwLCAweDgwMDAwMDAwLCAweDQ1MGMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDUxMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDUxNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTE4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NTFjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1MjAwMDAwLCAweDgwMDAwMDAwLCAweDQ1MjQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDUyODAwMDAsIDB4ODAwMDAwMDAsIDB4NDUyYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTMwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NTM0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1MzgwMDAwLCAweDgwMDAwMDAwLCAweDQ1M2MwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDU0MDAwMDAsIDB4ODAwMDAwMDAsIDB4NDU0NDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTQ4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NTRjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1NTAwMDAwLCAweDgwMDAwMDAwLCAweDQ1NTQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDU1ODAwMDAsIDB4ODAwMDAwMDAsIDB4NDU1YzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTYwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NTY0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1NjgwMDAwLCAweDgwMDAwMDAwLCAweDQ1NmMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDU3MDAwMDAsIDB4ODAwMDAwMDAsIDB4NDU3NDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTc4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NTdjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1ODAwMDAwLCAweDgwMDAwMDAwLCAweDQ1ODQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDU4ODAwMDAsIDB4ODAwMDAwMDAsIDB4NDU4YzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NTkwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NTk0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1OTgwMDAwLCAweDgwMDAwMDAwLCAweDQ1OWMwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDVhMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDVhNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NWE4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NWFjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1YjAwMDAwLCAweDgwMDAwMDAwLCAweDQ1YjQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDViODAwMDAsIDB4ODAwMDAwMDAsIDB4NDViYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NWMwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NWM0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1YzgwMDAwLCAweDgwMDAwMDAwLCAweDQ1Y2MwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDVkMDAwMDAsIDB4ODAwMDAwMDAsIDB4NDVkNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NWQ4MDAwMCwgMHg4MDAwMDAwMCwgMHg0NWRjMDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1ZTAwMDAwLCAweDgwMDAwMDAwLCAweDQ1ZTQwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDVlODAwMDAsIDB4ODAwMDAwMDAsIDB4NDVlYzAwMDAsCi0JMHg4MDAwMDAwMCwgMHg0NWYwMDAwMCwgMHg4MDAwMDAwMCwgMHg0NWY0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1ZjgwMDAwLCAweDgwMDAwMDAwLCAweDQ1ZmMwMDAwLAotCTB4NGEwM2MwMjAsIDB4MDAwMDQwMDAsIDB4NGEwM2MwMTEsIDB4NDAwMDAwMTAsCi0JMHgwNDAwNjAwMCwgMHg0MjAzZTAwMCwgMHg0MDAwMDAwMCwgMHg1OWUwMDAxNywKLQkweDhjMDAwNTA4LCAweDA0MDAwMDAzLCAweDRhMDNjMDE3LCAweDAwMDAwMDAwLAotCTB4NDIwM2UwMDAsIDB4MzAwMDAwMDEsIDB4MDQwMWYwMDAsIDB4MDAwMGJmMDAsCi0JMHgwMDAwMDA4MCwgMHgwMDAwYmZlMCwgMHgwMDAwMDAyMCwgMHgwMDAwZmYwMCwKLQkweDAwMDAwMDgwLCAweDAwMDBmZmQwLCAweDAwMDAwMDMwLCAweDAwMDA3MTAwLAotCTB4MDAwMDAwMTAsIDB4MDAwMDcyMDAsIDB4MDAwMDAwMDgsIDB4MDAwMDcyMDksCi0JMHgwMDAwMDAwNywgMHgwMDAwNzMwMCwgMHgwMDAwMDAwOCwgMHgwMDAwNzMwOSwKLQkweDAwMDAwMDA3LCAweDAwMDA3NDAwLCAweDAwMDAwMDA4LCAweDAwMDA3NDA5LAotCTB4MDAwMDAwMDcsIDB4MDAwMDc2MDAsIDB4MDAwMDAwYjAsIDB4MDAwMDc3MDAsCi0JMHgwMDAwMDA0MCwgMHgwMDAwMzAwMCwgMHgwMDAwMDA3MCwgMHgwMDAwNDAwMCwKLQkweDAwMDAwMGMwLCAweDAwMDA2MDAwLCAweDAwMDAwMDUwLCAweDAwMDA2MTAwLAotCTB4MDAwMDAwMTAsIDB4MDAwMDYxMzAsIDB4MDAwMDAwMTAsIDB4MDAwMDYxNTAsCi0JMHgwMDAwMDAxMCwgMHgwMDAwNjE3MCwgMHgwMDAwMDAxMCwgMHgwMDAwNjE5MCwKLQkweDAwMDAwMDEwLCAweDAwMDA2MWIwLCAweDAwMDAwMDEwLCAweDAwMDAwMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAxMDAsIDB4NDIwMmYwMDAsIDB4MDAwMDAwMDAsCi0JMHg0MjAwMDgwMCwgMHgwMDAyMWYwMCwgMHg0NTc4MDgwMCwgMHg4MDA0MDgwMCwKLQkweDgwMDAwMDQwLCAweDA0MDIwN2ZkLCAweDQyMDNmMDAwLCAweDAwMDIxZmZmLAotCTB4NDAwMDAwMDAsIDB4NDIwM2UwMDAsIDB4OTAwMDAxMDAsIDB4NDAwMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDc0MywgMHg0MjAwMDAwMCwgMHgwMDAwMTAwMCwKLQkweDUwMDAwMDAwLCAweDgyMDAwNDgwLCAweDI0MzIwMDAyLCAweDA0MDIwMDE1LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNjQsIDB4ODAwNDA4NDAsIDB4MDQwMDAwMDcsCi0JMHg0YTAzMDAwMCwgMHgwMDAwMDAwMSwgMHg0MDAwMDAwMCwgMHg1OTgwMDAwMCwKLQkweDhjMDAwNTAwLCAweDA0MDAwN2Y5LCAweDA0MDAwMDA4LCAweDQyMDAwODAwLAotCTB4MDAwMDdhMTcsIDB4NTAwNDAwMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMDMsCi0JMHg4NDAwMDU0ZSwgMHg0NDAwMDgwMCwgMHg0YTAzMDAwMCwgMHgwMDAwMDAwMCwKLQkweDRhMDNjMDIwLCAweDAwMDAwMDA0LCAweDQyMDNlMDAwLCAweDYwMDAwMDBmLAotCTB4NTllMDAwMjMsIDB4OGMwMDA1MDAsIDB4MDQwMjAwMzksIDB4NDIwMDAwMDAsCi0JMHgwMDEwMDAwMSwgMHg1MDAwMDgwMCwgMHg4MjA0MGMwMCwgMHgwMDAwMDAwNCwKLQkweDU4MDQyMDAzLCAweDQyMDAxMDAwLCAweGZmZmZmZmZmLCAweDAyMDFmODAwLAotCTB4MDAxMDA3M2EsIDB4MDQwMjAwNGUsIDB4NTgwNDIwMDMsIDB4NDIwMDEwMDAsCi0JMHhmZmZmZmZmZiwgMHgwMjAxZjgwMCwgMHgwMDEwMDczYSwgMHgwNDAyMDA0OCwKLQkweDU4MDQyMDAzLCAweDQyMDAxMDAwLCAweDAwZmZmZmZmLCAweDAyMDFmODAwLAotCTB4MDAxMDA3M2EsIDB4MDQwMjAwNDIsIDB4NTgwNDIwMDMsIDB4NDIwMDEwMDAsCi0JMHgwMGZmZmZmZiwgMHgwMjAxZjgwMCwgMHgwMDEwMDczYSwgMHgwNDAyMDAzYywKLQkweDQyMDAwMDAwLCAweDAwMTAwMDAxLCAweDUwMDBhMDAwLCAweDgyNTBhNDAwLAotCTB4MDAwMDAwMDQsIDB4NDIwMGE4MDAsIDB4MDAwMjAwMDAsIDB4NTg1MGIwMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg4MjUwYTQwMCwgMHgwMDAwMDAwNSwKLQkweDRhMDM3MGU4LCAweDAwMDAwMDAzLCAweDQyMDBhODAwLCAweDAwMDBjMDAwLAotCTB4NTg1MGIwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NGEwMzc4ZTgsCi0JMHgwMDAwMDAwMywgMHg0MjAwYTgwMCwgMHgwMDAwODAwMCwgMHg1ODUwYjAwMywKLQkweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDA0MDFmMDJiLCAweDQyMDAwODAwLAotCTB4MDAwMjAwMDAsIDB4NTgwNDIwMDMsIDB4NDIwMDEwMDAsIDB4ZmZmZmZmZmYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDczYSwgMHgwNDAyMDAxOSwgMHg0YTAzNzBlOCwKLQkweDAwMDAwMDAzLCAweDQyMDAwODAwLCAweDAwMDBjMDAwLCAweDU4MDQyMDAzLAotCTB4ODIxMDI1MDAsIDB4MDBmZmZmZmYsIDB4NDIwMDEwMDAsIDB4MDBmZmZmZmYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDczYSwgMHgwNDAyMDAwZCwgMHg0YTAzNzhlOCwKLQkweDAwMDAwMDAzLCAweDQyMDAwODAwLCAweDAwMDA4MDAwLCAweDU4MDQyMDAzLAotCTB4ODIxMDI1MDAsIDB4MDBmZmZmZmYsIDB4NDIwMDEwMDAsIDB4MDBmZmZmZmYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDczYSwgMHgwNDAwMDAwYiwgMHg0YTAzYzAyMCwKLQkweDAwMDA0MDEwLCAweDRhMDNjMDExLCAweDQwMTAwMDExLCAweDA0MDA2MDAwLAotCTB4NDIwM2UwMDAsIDB4NDAwMDAwMDAsIDB4NDIwM2UwMDAsIDB4MzAwMDAwMDEsCi0JMHgwNDAxZjAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDdkNywgMHg0MjAwMTAwMCwKLQkweDAwMTBhOTcxLCAweDQwMDgwMDAwLCAweDgwMTQwNDgwLCAweDgyMDAxZDAwLAotCTB4ZmZmZmZmMDAsIDB4MDQwMjAwMDMsIDB4NDAwMDE4MDAsIDB4MDQwMWYwMDMsCi0JMHg0MjAwMTgwMCwgMHgwMDAwMDBmZiwgMHg0ODBiYzg0MCwgMHg0ODBmYzg0MiwKLQkweDA0MDExMDAwLCAweDQwMGMwMDAwLCAweDgwMDgxNDAwLCAweDQwMTQwMDAwLAotCTB4ODAwODA1ODAsIDB4MDQwMjA3ZjAsIDB4NDgxNzUwMGQsIDB4NDU3ODI4MDAsCi0JMHg1OWM0MDAwMCwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MDAwMDEyMCwKLQkweDgyMDAwNTgwLCAweDAwMDAyNDIyLCAweDA0MDIwMDA1LCAweDU5YTgwMDZmLAotCTB4ODQwMDA1NDAsIDB4NDgwMzUwNmYsIDB4MDQwMWYwMGEsIDB4NTllMDAwMDMsCi0JMHg4MjAwMDUwMCwgMHgwMDAzMDAwMCwgMHg4MjAwMDU4MCwgMHgwMDAxMDAwMCwKLQkweDA0MDIwMDA0LCAweDU5YTgwMDZmLCAweDg0MDAwNTQyLCAweDQ4MDM1MDZmLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNDAsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsCi0JMHgwNDAyMDAwZSwgMHg0MjAwMDgwMCwgMHgwMDAwMTAwMCwgMHg4MjE0MTQ4MCwKLQkweDAwMTdmZmZmLCAweDA0MDIxMDA5LCAweDgwMDQwOTAyLCAweDgyMTQxNDgwLAotCTB4MDAxM2ZmZmYsIDB4MDQwMjEwMDUsIDB4ODAwNDA5MDIsIDB4ODIxNDE0ODAsCi0JMHgwMDExZmZmZiwgMHgwNDAwMWJjOCwgMHg0ODA3NTAwZSwgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDI0LCAweDAyMDFmODAwLCAweDAwMTA2M2NmLCAweDgyMDQwYzAwLAotCTB4MDAxMGNmYzAsIDB4NDgwNzUwMGIsIDB4NGEwM2M4MTAsIDB4MDAxMDAwMDAsCi0JMHg0YTAzYzgxMSwgMHgwMDEwYTk3MSwgMHg0YTAzYzgyOSwgMHgwMDAwMDAwNCwKLQkweDU5ZTQwMDAxLCAweDgyMDAwNTQwLCAweDAwMDMwMDFkLCAweDQ4MDNjODAxLAotCTB4NGEwM2MwMTQsIDB4MDAxYzAwMWMsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMWMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDcyOCwgMHg0MjAyYzAwMCwgMHgwMDEwY2ZjMCwKLQkweDU5YWFiMDBiLCAweDU5YWFhMDBiLCAweDU5YWFhODBiLCAweDU5YWFjODBlLAotCTB4NDk2NzUwNjksIDB4NTlhODAwMGIsIDB4NDgwMzUwMGMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDZhMywgMHgwMjAxZjgwMCwgMHgwMDEwNzY4YSwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODA0LCAweDAyMDFmODAwLCAweDAwMTAwODRkLCAweDAyMDFmODAwLAotCTB4MDAxMDFhNjAsIDB4MDIwMWY4MDAsIDB4MDAxMDEzYTQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDliNiwgMHgwMjAxZjgwMCwgMHgwMDEwMTNhNCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwZjlhLCAweDAyMDFmODAwLCAweDAwMTA2NDBmLCAweDA0MDFmYjU0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDFmYjUsIDB4MDIwMWY4MDAsIDB4MDAxMDUwOGIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGIzNiwgMHgwMjAxZjgwMCwgMHgwMDEwNWVjZCwKLQkweDAyMDFmODAwLCAweDAwMTA1YzYxLCAweDAyMDFmODAwLCAweDAwMTAxNDNkLAotCTB4MDIwMWY4MDAsIDB4MDAxMDEyYmYsIDB4NDIwM2UwMDAsIDB4ZjAwMDAwMDEsCi0JMHg0YTAzNTA3MCwgMHgwMDAwMDAxNCwgMHg0YTAzNTA3MSwgMHgwMDAwMDAwYiwKLQkweDRhMDM1MDcyLCAweDAwMDAwMDAxLCAweDRhMDM1MDczLCAweDAwMDAwMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsCi0JMHgyNDIyMDAwMSwgMHgwNDAwMDA0YSwgMHg1OWUwMDAwMiwgMHg4YzAwMDUxZSwKLQkweDQyMDAwMDAwLCAweDdmZmUwMGZlLCAweDA0MDAwMDAzLCAweDQyMDAwMDAwLAotCTB4N2ZmZTAxZmUsIDB4NTAwMDA4MDAsIDB4NDgwNzUwNTgsIDB4ODAwNDA5MjAsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDEzZSwgMHgwNDAyMDAwYiwgMHg1OWE4MDA2ZiwKLQkweDg0MDAwNTQ4LCAweDQ4MDM1MDZmLCAweDRhMDM1MDcwLCAweDAwMDAwMDU1LAotCTB4NGEwMzUwNzEsIDB4MDAwMDAwNTEsIDB4NGEwMzUwNzMsIDB4MDAwMDAwMGYsCi0JMHgwNDAxZjAzMywgMHg4MjA0MDU4MCwgMHgwMDAwMDEzZiwgMHgwNDAyMDAwYiwKLQkweDU5YTgwMDZmLCAweDg0MDAwNTRhLCAweDQ4MDM1MDZmLCAweDRhMDM1MDcwLAotCTB4MDAwMDAwNTUsIDB4NGEwMzUwNzEsIDB4MDAwMDAwNTEsIDB4NGEwMzUwNzMsCi0JMHgwMDAwMDAwZiwgMHgwNDAxZjAyNiwgMHg1OWUwMDAwMywgMHg4MjAwMDUwMCwKLQkweDAwMDMwMDAwLCAweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDA0MDIwMDIwLAotCTB4ODIwNDA1ODAsIDB4MDAwMDAxNDcsIDB4MDQwMDAwMTAsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDE0NSwgMHgwNDAyMDAxYSwgMHg1OWE4MDA2ZiwgMHg4NDAwMDU0NiwKLQkweDQ4MDM1MDZmLCAweDRhMDM1MDcwLCAweDAwMDAwMDMzLCAweDRhMDM1MDcxLAotCTB4MDAwMDAwMzAsIDB4NGEwMzUwNzIsIDB4MDAwMDAwMjAsIDB4NGEwMzUwNzMsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwYywgMHg1OWE4MDA2ZiwgMHg4NDAwMDU0NCwKLQkweDQ4MDM1MDZmLCAweDRhMDM1MDcwLCAweDAwMDAwMDMzLCAweDRhMDM1MDcxLAotCTB4MDAwMDAwMzAsIDB4NGEwMzUwNzIsIDB4MDAwMDAwMjAsIDB4NGEwMzUwNzMsCi0JMHgwMDAwMDAwMSwgMHg0YTAzNzhlNCwgMHgwMDBjMDAwMCwgMHg1OWE4MDA2ZiwKLQkweDhjMDAwNTAyLCAweDA0MDAwMDA0LCAweDgyMDAwNTAwLCAweDAwMDAwMDMwLAotCTB4MDQwMDBiMjUsIDB4NGEwM2MwMTgsIDB4MDAwMDAwMGYsIDB4NDIwM2UwMDAsCi0JMHgyMDAwMDUxMSwgMHg0MjAzZTAwMCwgMHg1MDAxMDAwMCwgMHg0YTAzYzAyMCwKLQkweDAwMDAwMDAwLCAweDA0MDI3MDEzLCAweDU5ZTAwMDIwLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDIsIDB4MDQwMjAwMGYsIDB4NGEwM2MwMjAsIDB4MDAwMDQwMDAsCi0JMHg0YTAzYzAxMSwgMHg0MDAwMDAxMCwgMHgwNDAwNjAwMCwgMHg0MjAzZTAwMCwKLQkweDQwMDAwMDAwLCAweDU5ZTAwMDE3LCAweDhjMDAwNTA4LCAweDA0MDAwMDAzLAotCTB4NGEwM2MwMTcsIDB4MDAwMDAwMDAsIDB4NDIwM2UwMDAsIDB4MzAwMDAwMDEsCi0JMHg0MjAyZDgwMCwgMHgwMDAwMDAwMCwgMHg0MjAzZTAwMCwgMHhiMDYwMDAwMCwKLQkweDU5YTgwODczLCAweDQwMDdmODAwLCAweDAyMDFmMDAwLCAweDAwMDIwMDA0LAotCTB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsIDB4NDE2YzAwMDAsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwOCwgMHgwNDAyMWFmYiwgMHgwYzAxZjgwNCwKLQkweDVjMDNlMDAwLCAweDAyMDFmMDAwLCAweDAwMDIwMDA4LCAweDAwMTAwMzI4LAotCTB4MDAxMDAzM2IsIDB4MDAxMDA0MTEsIDB4MDAxMDAzMjcsIDB4MDAxMDA0OGMsCi0JMHgwMDEwMDMyNywgMHgwMDEwMDMyNywgMHgwMDEwMDVkMCwgMHgwNDAxZmFlZSwKLQkweDQyMDAwODAwLCAweDAwMTBiMmEwLCAweDU4MDQwMDFkLCAweDQ4MDNjODU3LAotCTB4OGMwMDA1MDAsIDB4MDQwMDAwMGQsIDB4ODQwMDA1MDAsIDB4NDgwMDA4MWQsCi0JMHg0MjAyZDgwMCwgMHgwMDAwMDAwNCwgMHgwNDAxZmJlOCwgMHg0OWYzYzg1NywKLQkweDVjMDAwODAwLCAweDVjMDAwMDAwLCAweDgyMDAwNTQwLCAweDAwMDAzZTAwLAotCTB4NGMwMDAwMDAsIDB4NGMwNDAwMDAsIDB4MWMwMWYwMDAsIDB4MDQwMWZiZDIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAwMDAxMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTIzLCAweDA0MDIwMDM1LCAweDU5OTQwMDIzLCAweDgyMDAwNTgwLAotCTB4MDAxMDQwMWIsIDB4MDQwMjAwMDQsIDB4NTk5NDAwMjIsIDB4ODAwMDAxYzAsCi0JMHgwNDAyMDAyZSwgMHg1OWM0MDAwNiwgMHg4MjAwMDU0MCwgMHgwMDAwMDBjMCwKLQkweDQ4MDM4ODA2LCAweDA0MDFmMDI5LCAweDAyMDFmODAwLCAweDAwMTA0ZDc2LAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMjAwYmUsIDB4NTlhODAwMTcsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwOSwgMHgwNDAyMDBiYSwgMHg0OTdiNTAxMCwKLQkweDRhMDM4ODkzLCAweDAwMDAwMDAxLCAweDQyMDAxMDAwLCAweDAwMDAwMGYwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE5YWEsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMWIsCi0JMHg1OWM0MTAwNiwgMHgwNDAyMDAwNiwgMHg4MjA4MTU0MCwgMHgwMDAwMDBmMSwKLQkweDgyMDgxNTAwLCAweGJiZmZmZmZmLCAweDA0MDFmMDAzLCAweDgyMDgxNTQwLAotCTB4NDQwMDAwZjEsIDB4NDgwYjg4MDYsIDB4MDIwMWY4MDAsIDB4MDAxMDVkZTIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjliOCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzOCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQyMDAxMDAwLCAweDAwMDA4MDMwLAotCTB4NDk3YjUwMTMsIDB4MDQwMWYwMzcsIDB4MDIwMWY4MDAsIDB4MDAxMDM5NTEsCi0JMHg1OWM0MDBhNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDQ4MCwKLQkweDAwMDAwMDA3LCAweDA0MDIxMDkzLCAweDAyMDFmODAwLCAweDAwMTA1ZGUyLAotCTB4NTljNDAwYTMsIDB4ODIwMDA1MDAsIDB4ZmZlZmZmZmYsIDB4NDgwMzg4YTMsCi0JMHg1OWE4MDA0YiwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTAzZjUzLCAweDA0MDFmMDg3LCAweDU5YTgwMDE1LCAweDg0MDAwNTQ2LAotCTB4NDgwMzUwMTUsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMTMsIDB4NTljNDEwMDYsCi0JMHgwNDAyMDAwNiwgMHg4MjA4MTU0MCwgMHg0NDAwMDAwMSwgMHg4MjA4MTUwMCwKLQkweGZmZmZmZjBmLCAweDA0MDFmMDAzLCAweDgyMDgxNTQwLCAweDQ0MDAwMGYxLAotCTB4NDgwYjg4MDYsIDB4NDk3YjkwMDUsIDB4NGEwMzg4MDIsIDB4MDAwMGZmZmYsCi0JMHg0YTAzNzhlNCwgMHgwMDAwMzAwMCwgMHg0YTAzNzhlNCwgMHgwMDBjMDAwMCwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjBhLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NTlhODEwMTAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjlhZiwgMHg0MjAwMTAwMCwgMHgwMDAwODAxMCwgMHg1OWE4MTgwYSwKLQkweDAyMDFmODAwLCAweDAwMTAzODU3LCAweDAyMDFmODAwLCAweDAwMTAxODg2LAotCTB4NTlhODA4MDUsIDB4ODIwNDBkMDAsIDB4ZmZmZmZmZGYsIDB4NDgwNzUwMDUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDY4YiwgMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwKLQkweDA0MDAwMDBhLCAweDAyMDFmODAwLCAweDAwMTAzZjU4LCAweDA0MDAwMDA3LAotCTB4NGEwMzUwMTMsIDB4MDAwMDAwMDEsIDB4NDk3YjUwMjEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwM2E5ZiwgMHgwNDAxZjA0ZiwgMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwKLQkweDA0MDAwMDA1LCAweDU5YzQxMDAyLCAweDg0MDgxNTBjLCAweDQ4MGI4ODAyLAotCTB4MDQwMWYwMTIsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4MDQwMjAwMDYsCi0JMHg1OWE4MDAxZCwgMHg4MDAwMDU0MCwgMHgwMjAwMDgwMCwgMHgwMDEwOTBkNSwKLQkweDA0MDFmMDBhLCAweDAyMDFmODAwLCAweDAwMTA5MGQ1LCAweDU5YTgwMDI2LAotCTB4OGMwMDA1MDYsIDB4MDQwMjAwMDUsIDB4NTlhODAwMWQsIDB4ODAwMDA1NDAsCi0JMHgwMjAyMDgwMCwgMHgwMDEwNDA3NSwgMHg0OTdiNTAyOCwgMHg0OTdiNTAyNywKLQkweDQ5N2I1MDE4LCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLCAweDU5YTgxMDI2LAotCTB4MDQwMjAwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDE2OTQsIDB4ODAwMDE1ODAsCi0JMHg1OWE4MDAyYSwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MDA0MGQ0MCwKLQkweDQ4MDc1MDJhLCAweDA0MDFmMDA1LCAweDU5YTgwMDJhLCAweDgyMDAwNTAwLAotCTB4ZmZmZjAwMDAsIDB4NDgwMzUwMmEsIDB4NTk5YzAwMTcsIDB4OGMwMDA1MGEsCi0JMHgwNDAwMDAwMiwgMHg4NDA4MTU0NCwgMHg0ODBiNTAyNiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTBkLCAweDA0MDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTAxNjk0LAotCTB4NDgwNzg4ODAsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmUwNywgMHg0OTdiNTAyOCwgMHg0OTdiNTAxYiwgMHg0YTAzNTAxYywKLQkweDAwMDBmZmZmLCAweDRhMDM3OGU0LCAweDAwMDAwMGMwLCAweDQyMDJkODAwLAotCTB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4MDQwMDAwMDcsCi0JMHg1OWE4MDAyNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwYywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA0LCAweDA0MDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTAxYmYwLAotCTB4MWMwMWYwMDAsIDB4NTlhODAwMWMsIDB4ODIwMDA1ODAsIDB4MDAwMGZmZmYsCi0JMHgwNDAwMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwMWJmMCwgMHgwNDAxZjA3NCwKLQkweDU5YTgwMDI2LCAweDhjMDAwNTBhLCAweDA0MDIwMDAzLCAweDhjMDAwNTA2LAotCTB4MDQwMDAwMWMsIDB4OGMwMDA1MDAsIDB4MDQwMDAwMWEsIDB4NGEwMzg4MDIsCi0JMHgwMDAwZmZiZiwgMHg4YzAwMDUwMiwgMHgwNDAwMDAxNiwgMHg1OTljMDAxOCwKLQkweDhjMDAwNTE2LCAweDA0MDIwMDEwLCAweDU5YTgwMDI3LCAweDgyMDAwNTgwLAotCTB4MDAwMGZmZmYsIDB4MDQwMDAwMGMsIDB4MDIwMWY4MDAsIDB4MDAxMDFkNDUsCi0JMHg1OWE4MDAyNiwgMHg4YzAwMDUwNCwgMHgwNDAyMDA1ZCwgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDAzLCAweDQxN2E1ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZDZhLAotCTB4MDQwMWYwNTcsIDB4NTlhODAwMjgsIDB4ODAwMDA1NDAsIDB4MDQwMjAwNTQsCi0JMHg1OWE4MDAyNiwgMHg4YzAwMDUwOCwgMHgwNDAyMDAwNSwgMHg1OWE4MDAxYiwKLQkweDgwMDAwNTQwLCAweDA0MDIwMDRlLCAweDA0MDFmMDAzLCAweDhjMDAwNTE2LAotCTB4MDQwMDAwNGIsIDB4MDIwMWY4MDAsIDB4MDAxMDQ3M2IsIDB4MDQwMjAwNDgsCi0JMHg1OTljMDAxOCwgMHg4YzAwMDUxNiwgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0YWJlLCAweDA0MDIwMDQyLCAweDU5OWMwMDE3LCAweDhjMDAwNTBhLAotCTB4MDQwMDAwMGQsIDB4NDIwMGIwMDAsIDB4MDAwMDA3ZjAsIDB4NDE3YTg4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAwNCwgMHg1OTM0MDIwMCwKLQkweDhjMDAwNTFhLCAweDA0MDIwMDM2LCAweDgxNDY4ODAwLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZjgsIDB4NGEwMzg4MDIsIDB4MDAwMGZmZmYsIDB4NDIwMDE4MDAsCi0JMHgwMDEwYjJlNywgMHgwNDAxZmI5OCwgMHg0MjAwMTgwMCwgMHgwMDEwYjJmNCwKLQkweDA0MDFmYjk1LCAweDU5YTgwMDA1LCAweDg0MDAwNTAyLCAweDQ4MDM1MDA1LAotCTB4NGEwMzc4ZTQsIDB4MDAwMDAwODAsIDB4NDIwMmQ4MDAsIDB4MDAwMDAwMDMsCi0JMHg0YTAzNTAxYywgMHgwMDAwZmZmZiwgMHgwNDAxZmE4YiwgMHg4MDAwMDU4MCwKLQkweDAyMDFmODAwLCAweDAwMTAxNWZhLCAweDU5OWMwMDE4LCAweDhjMDAwNTE2LAotCTB4MDQwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDM5MjksIDB4MDQwMWYwMDksCi0JMHg0MjAwMTgwMCwgMHgwMDAwZmZmZiwgMHg0MjAwMjAwMCwgMHgwMDAwMDAwNiwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAzOGM3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRlMjMsIDB4MDQwMDAwMGIsIDB4NTljNDAwMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAwMDAwNCwgMHg4MjAwMDUwMCwKLQkweGZmZmZmZjBmLCAweDA0MDFmMDAzLCAweDgyMDAwNTAwLCAweGZiZmZmZmZmLAotCTB4NDgwMzg4MDYsIDB4MDIwMWY4MDAsIDB4MDAxMDZjOGEsIDB4MWMwMWYwMDAsCi0JMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHg0YzEwMDAwMCwgMHg1OWE4MDAzZSwKLQkweDgyMDAwYzgwLCAweDAwMDAwMDA0LCAweDA0MDIxOTgzLCAweDBjMDFmODA1LAotCTB4NWMwMDIwMDAsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwMDQ5YywgMHgwMDEwMDUyNywgMHgwMDEwMDU1MywgMHgwMDEwMDViNCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTAxNWZhLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZTIsIDB4NTljNDA4YTMsIDB4ODIwNDBkMDAsCi0JMHhmZmZmZmZmNywgMHg0ODA3ODhhMywgMHgwMjAxZjgwMCwgMHgwMDEwNGUxMywKLQkweDA0MDAwMDBlLCAweDAyMDFmODAwLCAweDAwMTA0ZTIzLCAweDA0MDAwMDBiLAotCTB4MDIwMWY4MDAsIDB4MDAxMDRlMWIsIDB4MDQwMjA5NjcsIDB4NTljNDAwYTMsCi0JMHg4NDAwMDUzMiwgMHg4NDAwMDU3MCwgMHg0ODAzODhhMywgMHg0YTAzODgwOCwKLQkweDAwMDAwMDA4LCAweDA0MDFmMDEzLCAweDU5YzQwMGEzLCAweDg0MDAwNTMwLAotCTB4ODIwMDA1MDAsIDB4YmY3ZmZmZmYsIDB4NDgwMzg4YTMsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDBmOCwgMHgwMjAxZjgwMCwgMHgwMDEwNDAzMCwgMHg1OWM0MDBhMywKLQkweDgyMDAwNTQwLCAweDAwMDE4MDAwLCAweDg0MDAwNTFjLCAweDQ4MDM4OGEzLAotCTB4ODIwMDA1MDAsIDB4ZmZmZWZmZmYsIDB4NDgwMzg4YTMsIDB4NDk3Yjg4MDgsCi0JMHg1OWM0MDAwNiwgMHg4MjAwMDUwMCwgMHhmYmZmZmYwZSwgMHg0ODAzODgwNiwKLQkweDQ5N2IyODIyLCAweDQ5N2IyODIzLCAweDQyMDAwODAwLCAweDAwMDAwMWY0LAotCTB4NDIwMDEwMDAsIDB4MDAxMDA1Y2UsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYmMsCi0JMHg1OWM0MDgwNSwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwKLQkweDAwMTAxOWFhLCAweDAyMDFmODAwLCAweDAwMTAxNmFjLCAweDA0MDIwMDBhLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDE4ZmEsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMTg5MiwKLQkweDA0MDFmMDIyLCAweDAyMDFmODAwLCAweDAwMTAxNmIzLCAweDA0MDIwMDA4LAotCTB4NDE3ODAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE4ZmEsIDB4NDE3ODAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTg5MiwgMHgwNDAxZjAxOCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxNmJhLCAweDA0MDIwMDBhLCAweDQyMDAwMDAwLCAweDAwMDAwMDAyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE4ZmEsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTg5MiwgMHgwNDAxZjAwYywgMHgwMjAxZjgwMCwKLQkweDAwMTAxNmMxLCAweDA0MDIwOTE4LCAweDU5YTgwMDQ5LCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDE2YzcsIDB4NGEwMzUwM2UsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAyMSwgMHgwMjAxZjgwMCwgMHgwMDEwMTk5NCwKLQkweDRhMDM1MDNlLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTA0ZTEzLAotCTB4MDQwMDAwMGMsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMjMsIDB4MDQwMDAwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUxYiwgMHgwNDAyMDkwMywgMHg0YTAzNTAzMywKLQkweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTA0ZDc2LCAweDA0MDFmMDBmLAotCTB4NTljNDAwYTQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwOCwgMHgwNDAwMDAwMywgMHg0YTAzODgwNSwgMHgwNDAwMDAwMCwKLQkweDU5YzQwMGEzLCAweDgyMDAwNTQwLCAweDAwMDFjMDAwLCAweDQ4MDM4OGEzLAotCTB4ODQwMDA1MjAsIDB4NDgwMzg4YTMsIDB4MWMwMWYwMDAsIDB4MDQwMWY4YTMsCi0JMHgwNDAyMDAwNCwgMHg0YTAzNTAzZSwgMHgwMDAwMDAwMywgMHgwNDAxZjAyNywKLQkweDAyMDFmODAwLCAweDAwMTAxNmMxLCAweDA0MDIwMDExLCAweDU5YTgwMDQ5LAotCTB4ODAwMDAxYzAsIDB4MDQwMDAwMGUsIDB4MDIwMWY4MDAsIDB4MDAxMDE2YzcsCi0JMHg1OWE4MDA0OCwgMHg4YzAwMDUxZSwgMHgwNDAwMDAxYywgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTFiLCAweDA0MDIwMDA5LCAweDRhMDM1MDMzLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDRkNzYsIDB4MDQwMWYwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTk0MSwgMHgwNDAyMDAxMSwgMHgwMjAxZjgwMCwgMHgwMDEwMTg4NiwKLQkweDRhMDM1MDNlLCAweDAwMDAwMDAyLCAweDQ5N2I1MDQ5LCAweDU5YzQwMGEzLAotCTB4ODQwMDA1MjAsIDB4NDgwMzg4YTMsIDB4NDk3YjI4MjIsIDB4NDk3YjI4MjMsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAyZCwgMHg0MjAwMTAwMCwgMHgwMDEwMDVjZSwKLQkweDAyMDFmODAwLCAweDAwMTA1Y2JjLCAweDFjMDFmMDAwLCAweDA0MDFmODc3LAotCTB4MDQwMjAwMDQsIDB4NGEwMzUwM2UsIDB4MDAwMDAwMDMsIDB4MDQwMWYwNWIsCi0JMHg0YTAzODgwNSwgMHgwMDAwMDBmMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTk0MSwKLQkweDA0MDIwMDUwLCAweDAyMDFmODAwLCAweDAwMTA0ZTFiLCAweDA0MDAwMDQ0LAotCTB4NTljNDAwYTQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwOCwgMHgwNDAwMDAyMCwgMHg1OWM0MDAwNSwgMHg4YzAwMDUzNCwKLQkweDA0MDIwMDFkLCAweDU5OTQwMDIyLCAweDgyMDAwNTgwLCAweDAwMDAwMDAxLAotCTB4MDQwMjAwNDYsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMjMsIDB4MDQwMjAwNDMsCi0JMHg0YTAzODgwNSwgMHgwMDAwMDBmMCwgMHgwMjAxZjgwMCwgMHgwMDEwNGU2NywKLQkweDRhMDM1MDMyLCAweDAwMDBhYWFhLCAweDRhMDM1MDMzLCAweDAwMDAwMDAwLAotCTB4NTljNDA4YTMsIDB4ODIwNDBkNDAsIDB4MDAwMDAwMDgsIDB4NDgwNzg4YTMsCi0JMHg0MjAyZDgwMCwgMHgwMDAwMDAwMSwgMHg0YTAzNTAzZSwgMHgwMDAwMDAwMCwKLQkweDRhMDM4ODA1LCAweDAwMDAwMDAxLCAweDQ5N2IyODIyLCAweDQ5N2IyODIzLAotCTB4MDQwMWYwMWYsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMjMsIDB4MDQwMjAwMDcsCi0JMHg1OWE4MDAzMiwgMHg4MjAwMDU4MCwgMHgwMDAwYWFhYSwgMHgwNDAyMDAwMywKLQkweDRhMDM1MDEwLCAweDAwZmZmZmZmLCAweDQ5N2I1MDMyLCAweDU5YzQwMDA2LAotCTB4ODIwMDA1NDAsIDB4MDQwMDAwMDEsIDB4NDgwMzg4MDYsIDB4NTlhODA4MDUsCi0JMHg4YzA0MGQwNiwgMHgwNDAyMDAwNSwgMHg1OWM0MDhhMywgMHg4MjA0MGQ0MCwKLQkweDAwMDAwMDA4LCAweDQ4MDc4OGEzLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLAotCTB4NGEwMzUwM2UsIDB4MDAwMDAwMDAsIDB4NGEwMzg4MDUsIDB4MDAwMDAwMDEsCi0JMHg0OTdiMjgyMiwgMHg0OTdiMjgyMywgMHgwNDAxZjAxMCwgMHg1OWM0MDAwNSwKLQkweDgyMDAwNTAwLCAweDAwMDAwMGMwLCAweDA0MDAwMDBjLCAweDU5YzQwMDA2LAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwZjEsIDB4NDgwMzg4MDYsIDB4MDQwMWY3ZWYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTZjMSwgMHgwNDAyMDAwNCwgMHg1OWE4MDA0OSwKLQkweDgwMDAwMWMwLCAweDA0MDIwN2E0LCAweDQ5N2I4ODg1LCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTVmYSwgMHg0YTAzNTAzZSwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxNmMxLCAweDA0MDIwMDBiLCAweDU5YTgwMDUyLCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMDQsIDB4ODAwMDAwNDAsIDB4NDgwMzUwNTIsIDB4MDQwMjAwMDUsCi0JMHg0YTAzNTA1MiwgMHgwMDAwMDAwYSwgMHg0YTAzNTA0OSwgMHgwMDAwMDAwMSwKLQkweDQ5N2I4ODg1LCAweDA0MDFmMGY2LCAweDU5OTQwMDIyLCAweDU5OTQwODIzLAotCTB4ODAwNDA1NDAsIDB4MWMwMWYwMDAsIDB4NDk3YjI4MjMsIDB4MWMwMWYwMDAsCi0JMHg0YzA4MDAwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDBmMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxOWFhLCAweDVjMDAxMDAwLCAweDFjMDFmMDAwLCAweDRhMDM1MDVjLAotCTB4MDAwMDAwMDQsIDB4NGEwMzUwNWQsIDB4MDAwMDAwMDAsIDB4NGEwMzUwNWUsCi0JMHgwMDAwMDAxMiwgMHg0YTAzNTA1ZiwgMHgwMDAwMDAwMiwgMHg0YTAzNTAxMCwKLQkweDAwZmZmZmZmLCAweDAyMDFmODAwLCAweDAwMTA5MGQ1LCAweDRhMDM1MDJhLAotCTB4MjAyMDAwMDAsIDB4NGEwMzUwMmIsIDB4ODgwMDAyMDAsIDB4NGEwMzUwMmMsCi0JMHgwMGZmMDAxZiwgMHg0YTAzNTAyZCwgMHgwMDAwMDdkMCwgMHg0YTAzNTAyZSwKLQkweDgwMDAwMDAwLCAweDRhMDM1MDJmLCAweDAwMDAwMjAwLCAweDRhMDM1MDMwLAotCTB4MDBmZjAwMDAsIDB4NGEwMzUwMzEsIDB4MDAwMTAwMDAsIDB4NGEwMzUwM2EsCi0JMHg1MTRjNGY0NywgMHg0YTAzNTAzYiwgMHg0OTQzMjAyMCwgMHgxYzAxZjAwMCwKLQkweDRkNDQwMDAwLCAweDQxN2E4ODAwLCAweDQxNzgwODAwLCAweDAyMDFmODAwLAotCTB4MDAwMjAyNjcsIDB4MDQwMjAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4MzYsCi0JMHgwNDAyMDAwMiwgMHg4MDA0MDgwMCwgMHg4MTQ2ODgwMCwgMHg4MzQ0MDU4MCwKLQkweDAwMDAwN2YwLCAweDA0MDIwN2Y2LCAweDVjMDI4ODAwLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTcsIDB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsCi0JMHgwNDAxZjgwOSwgMHg0ODVmYzg1NywgMHg0MjAzZTAwMCwgMHg1MDAwMDAwMCwKLQkweDVjMDAwMDAwLCAweDRkNzgwMDAwLCAweDQyMDBiODAwLCAweDAwMDA4MDAyLAotCTB4MDQwMWYwMDYsIDB4NDg1ZmM4NTcsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsCi0JMHg0MjAwYjgwMCwgMHgwMDAwODAwMiwgMHgwNDAwNjAwMCwgMHg0YzAwMDAwMCwKLQkweDRjMDQwMDAwLCAweDU5YmMwMGVhLCAweDgyMDAwNTAwLCAweDAwMDAwMDA3LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMjAwMDUsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjlhMywgMHg1YzAwMDgwMCwKLQkweDQ4MDdjMDI1LCAweDgwMDQwOTIwLCAweDQ4MDdjMDI2LCAweDVjMDAwMDAwLAotCTB4NDgwM2MwMjMsIDB4ODAwMDAxMjAsIDB4NDgwM2MwMjQsIDB4NWMwMDAwMDAsCi0JMHg0ODAzYzg1NywgMHg0ODAzYzAyMSwgMHg4MDAwMDEyMCwgMHg0ODAzYzAyMiwKLQkweDQxZjgwMDAwLCAweDQ4MDNjMDI3LCAweDgwMDAwMTIwLCAweDQ4MDNjMDI4LAotCTB4NDIwMDAwMDAsIDB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsCi0JMHgyNDMyMDAwMSwgMHg0ODAzYzg1NywgMHgwNDAwMTA1MywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDY0LCAweDgwMDQwODQwLCAweDA0MDAwMDA3LCAweDRhMDMwMDAwLAotCTB4MDAwMDAwMDEsIDB4NDAwMDAwMDAsIDB4NTk4MDAwMDAsIDB4OGMwMDA1MDAsCi0JMHgwNDAwMDdmOSwgMHgwNDAwMDA0NiwgMHg0MjAwMDgwMCwgMHgwMDEwYmZhMiwKLQkweDQ2MDAwODAwLCAweGZhY2VmYWNlLCAweDgwMDQwODAwLCAweDRjMDgwMDAwLAotCTB4NGMwYzAwMDAsIDB4NDIwMDEwMDAsIDB4MDAwMDdhMDAsIDB4NTgwODAwMTMsCi0JMHg0NDAwMDgwMCwgMHg4MDA0MDgwMCwgMHg1ODA4MDAxOSwgMHg0NDAwMDgwMCwKLQkweDgwMDQwODAwLCAweDU4MDgwMDFhLCAweDQ0MDAwODAwLCAweDgwMDQwODAwLAotCTB4NTgwODAwMWIsIDB4NDQwMDA4MDAsIDB4ODAwNDA4MDAsIDB4NTgwODAwMWMsCi0JMHg0NDAwMDgwMCwgMHg4MDA0MDgwMCwgMHg1ODA4MDAxZiwgMHg0NDAwMDgwMCwKLQkweDgwMDQwODAwLCAweDQyMDAxMDAwLCAweDAwMDA3YTQwLCAweDQyMDAxODAwLAotCTB4MDAwMDAwMGIsIDB4NTAwODAwMDAsIDB4NDQwMDA4MDAsIDB4ODAwODEwMDAsCi0JMHg4MDA0MDgwMCwgMHg4MDBjMTg0MCwgMHgwNDAyMDdmYiwgMHg0MjAwMTgwMCwKLQkweDAwMDAwMDAzLCAweDQyMDAxMDAwLCAweDAwMDA3YjAwLCAweDQ4MGMxMDAzLAotCTB4NTgwODAwMDUsIDB4NDQwMDA4MDAsIDB4ODAwNDA4MDAsIDB4ODAwYzE4NDAsCi0JMHgwNDAyMTdmYiwgMHg0MjAwMTAwMCwgMHgwMDAwN2MwMCwgMHg1ODA4MDAwMiwKLQkweDQ0MDAwODAwLCAweDgwMDQwODAwLCAweDU4MDgwMDAzLCAweDQ0MDAwODAwLAotCTB4ODAwNDA4MDAsIDB4NTgwODAwMjAsIDB4NDQwMDA4MDAsIDB4ODAwNDA4MDAsCi0JMHg1ODA4MDAyMSwgMHg0NDAwMDgwMCwgMHg4MDA0MDgwMCwgMHg1ODA4MDAyMiwKLQkweDQ0MDAwODAwLCAweDgwMDQwODAwLCAweDU4MDgwMDIzLCAweDQ0MDAwODAwLAotCTB4ODAwNDA4MDAsIDB4NWMwMDE4MDAsIDB4NWMwMDEwMDAsIDB4NGEwMzAwMDAsCi0JMHgwMDAwMDAwMCwgMHg0ODVmYzAyMCwgMHg5MDVjYjljMCwgMHg4MjVjYmQ0MCwKLQkweDAwMDAwMDEyLCAweDQ4NWZjMDExLCAweDQyMDNlMDAwLCAweDQwMDAwMDAwLAotCTB4NDIwMmQ4MDAsIDB4MDAwMDAwMDUsIDB4NTllMDAwMTcsIDB4OGMwMDA1MDgsCi0JMHgwNDAwMDAwMywgMHg0YTAzYzAxNywgMHgwMDAwMDAwMiwgMHg0MjAzZTAwMCwKLQkweDMwMDAwMDAxLCAweDA0MDFmODFmLCAweDA0MDFmN2ZmLCAweDRhMDNjODUwLAotCTB4MDAxMGJmYmUsIDB4NGEwM2M4NTEsIDB4MDAxMGNmYmQsIDB4NGEwM2M4NTMsCi0JMHgwMDAwMDgwMCwgMHg0YTAzYzg1NSwgMHgwMDAxZWI1YSwgMHg1OWU0MDAwMSwKLQkweDgyMDAwNTQwLCAweDAwMDAzZjAwLCAweDQ4MDNjODAxLCAweDRhMDNiMTA0LAotCTB4NzAwMDAwMDIsIDB4NGEwM2E4MDQsIDB4NzAwMDAwMDIsIDB4NGEwM2IwMDQsCi0JMHg3MDAwMDAwMiwgMHg0MjAwMDAwMCwgMHgwMDEwYjZlYiwgMHg0OTc4MDAwMSwKLQkweDQ5NzgwMDAyLCAweDFjMDFmMDAwLCAweDVjMDM2MDAwLCAweDRkYjAwMDAwLAotCTB4NDliM2M4NTcsIDB4NDgwM2M4NTcsIDB4MWMwMWYwMDAsIDB4MWMwMWYwMDAsCi0JMHg1OWE4MDA2YiwgMHg4YzAwMDUzMCwgMHgwNDAyMDdmZSwgMHg0YzA4MDAwMCwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDA0LCAweDA0MDFmODYyLCAweDVjMDAxMDAwLAotCTB4NDIwMWQwMDAsIDB4MDAwMjhiMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsCi0JMHg0YzA4MDAwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwOCwgMHgwNDAxZjg1OSwKLQkweDVjMDAxMDAwLCAweDQyMDFkMDAwLCAweDAwMDI4YjBhLCAweDAyMDFmODAwLAotCTB4MDAxMDVkZDIsIDB4NGMwODAwMDAsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsCi0JMHgwNDAxZjg1MCwgMHg1YzAwMTAwMCwgMHg0MjAxZDAwMCwgMHgwMDAyOGIwYSwKLQkweDAyMDFmODAwLCAweDAwMTA1ZGQyLCAweDA0MDFmN2UyLCAweDhjMDAwNTBjLAotCTB4NTlhODA4NmIsIDB4MDQwMjAwMDMsIDB4ODQwNDBkMzAsIDB4MDQwMWYwMDYsCi0JMHg4NDA0MGQ3MCwgMHg0ODA3NTA2YiwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwMCwKLQkweDA0MDFmMDQwLCAweDQ4MDc1MDZiLCAweDgzNmMwNTAwLCAweDAwMDAwMDA3LAotCTB4MGMwMWYwMDEsIDB4MDAxMDA3MjcsIDB4MDAxMDA3MGQsIDB4MDAxMDA3MGQsCi0JMHgwMDEwMDZmNSwgMHgwMDEwMDcxYSwgMHgwMDEwMDcwZCwgMHgwMDEwMDcwZCwKLQkweDAwMTAwNzFhLCAweDU5YTgwMDZmLCAweDhjMDAwNTAyLCAweDA0MDIwMDEzLAotCTB4NTljNDA4MDEsIDB4ODIwNDBkMDAsIDB4MDAwMTgwMDAsIDB4ODIwNDA1ODAsCi0JMHgwMDAxMDAwMCwgMHgwNDAwMDAwYSwgMHg4MjA0MDU4MCwgMHgwMDAwODAwMCwKLQkweDA0MDAwMDA0LCAweDQyMDAxMDAwLCAweDQyMDA0MDAwLCAweDA0MDFmMDA2LAotCTB4NDIwMDEwMDAsIDB4MjIwMDIwMDAsIDB4MDQwMWYwMDMsIDB4NDIwMDEwMDAsCi0JMHgxMjAwMTAwMCwgMHgwNDAxZjAyNSwgMHg0MjAwMTAwMCwgMHgwMDAwMTAwNCwKLQkweDA0MDFmMDIyLCAweDU5YTgwMDZmLCAweDhjMDAwNTAyLCAweDA0MDIwMDA4LAotCTB4NTlhODAwNmIsIDB4OGMwMDA1MzQsIDB4MDQwMjAwMDQsIDB4NDIwMDEwMDAsCi0JMHg3NDA1NzAwNSwgMHgwNDAxZjgxOSwgMHgxYzAxZjAwMCwgMHg0MjAwMTAwMCwKLQkweDAwMDAyMDA4LCAweDA0MDFmN2ZjLCAweDU5YTgwMDZiLCAweDhjMDAwNTM0LAotCTB4MDQwMjAwMGEsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsIDB4MDQwMDAwMDQsCi0JMHg0MjAwMTAwMCwgMHgyNDA1MjAwNSwgMHgwNDAxZjAwYywgMHg0MjAwMTAwMCwKLQkweDc0MDU3MDA1LCAweDA0MDFmMDA5LCAweDFjMDFmMDAwLCAweDFjMDFmMDAwLAotCTB4ODIwODE1MDAsIDB4MDAwMDAwMWMsIDB4ODIwODE1NDAsIDB4MDAxYzAwMDAsCi0JMHg0ODBiYzAxMywgMHgxYzAxZjAwMCwgMHg1OWE4MDA2YiwgMHg4YzAwMDUzMCwKLQkweDA0MDAwMDAyLCAweDg0MDgxNTcwLCAweDQ4MGI1MDZiLCAweDhjMDAwNTMwLAotCTB4MDQwMjAwMDUsIDB4ODIwODE1MDAsIDB4MDAwMDcwMDAsIDB4ODAwODExMTQsCi0JMHgwNDAxZmZmMCwgMHgxYzAxZjAwMCwgMHg0MTc4MDAwMCwgMHg1MDA0MTgwMCwKLQkweDgwMGMwNDAwLCAweDgwMDQwODAwLCAweDgwMTAyMDQwLCAweDA0MDIwN2ZjLAotCTB4ODAwODA1MDAsIDB4ODAwMDA1NDAsIDB4MWMwMWYwMDAsIDB4NDIwMmYwMDAsCi0JMHgwMDAwMDAwMCwgMHg0MTc4MDAwMCwgMHg0MTc4MDgwMCwgMHg0MTc4MTAwMCwKLQkweDQxNzgxODAwLCAweDQxNzgyMDAwLCAweDQxNzgyODAwLCAweDQxNzgzMDAwLAotCTB4NDE3ODM4MDAsIDB4NDE3ODQwMDAsIDB4NDE3ODQ4MDAsIDB4NDE3ODUwMDAsCi0JMHg0MTc4NTgwMCwgMHg0MTc4NjAwMCwgMHg0MTc4NjgwMCwgMHg0MTc4NzAwMCwKLQkweDQxNzg3ODAwLCAweDQxNzg4MDAwLCAweDQxNzg4ODAwLCAweDQxNzg5MDAwLAotCTB4NDE3ODk4MDAsIDB4NDE3OGEwMDAsIDB4NDE3OGE4MDAsIDB4NDE3OGIwMDAsCi0JMHg0MTc4YjgwMCwgMHg0MTc4YzAwMCwgMHg0MTc4YzgwMCwgMHg0MTc4ZDAwMCwKLQkweDQxNzhkODAwLCAweDQxNzhlMDAwLCAweDQxNzhlODAwLCAweDQxNzhmMDAwLAotCTB4NDE3OGY4MDAsIDB4NDE3OTAwMDAsIDB4NDE3OTA4MDAsIDB4NDE3OTEwMDAsCi0JMHg0MTc5MTgwMCwgMHg0MTc5MjAwMCwgMHg0MTc5MjgwMCwgMHg0MTc5MzAwMCwKLQkweDQxNzkzODAwLCAweDQxNzk0MDAwLCAweDQxNzk0ODAwLCAweDQxNzk1MDAwLAotCTB4NDE3OTU4MDAsIDB4NDE3OTYwMDAsIDB4NDE3OTY4MDAsIDB4NDE3OTcwMDAsCi0JMHg0MTc5NzgwMCwgMHg0MTc5ODAwMCwgMHg0MTc5ODgwMCwgMHg0MjAxOTAwMCwKLQkweDAwMTBiMzMzLCAweDQyMDE5ODAwLCAweDAwMTBiMzBhLCAweDQxNzlhMDAwLAotCTB4NDE3OWE4MDAsIDB4NDE3OWIwMDAsIDB4NDE3OWI4MDAsIDB4NDE3OWM4MDAsCi0JMHg0MTc5YzAwMCwgMHg0MTc5ZDAwMCwgMHg0MTc5ZDgwMCwgMHg0MTc5ZTAwMCwKLQkweDQxNzllODAwLCAweDQxNzlmMDAwLCAweDQxNzlmODAwLCAweDQxN2EwMDAwLAotCTB4NDE3YTA4MDAsIDB4NDE3YTEwMDAsIDB4NDE3YTE4MDAsIDB4NDE3YTIwMDAsCi0JMHg0MjAyMjgwMCwgMHgwMDAwNjEwMCwgMHg0MTdhMzAwMCwgMHg0MTdhMzgwMCwKLQkweDQxN2E0MDAwLCAweDQxN2E0ODAwLCAweDQxN2E1MDAwLCAweDQxN2E1ODAwLAotCTB4NDE3YTYwMDAsIDB4NDE3YTY4MDAsIDB4NDE3YTcwMDAsIDB4NDE3YTc4MDAsCi0JMHg0MTdhODAwMCwgMHg0MTdhODgwMCwgMHg0MTdhOTAwMCwgMHg0MTdhOTgwMCwKLQkweDQxN2FlODAwLCAweDQxN2FmODAwLCAweDQyMDMwMDAwLCAweDAwMDA3YzAwLAotCTB4NDIwMzEwMDAsIDB4MDAxMGI2MDQsIDB4NDIwMzE4MDAsIDB4MDAwMGJmMWQsCi0JMHg0MjAzMjAwMCwgMHgwMDAwYmYzMiwgMHg0MjAzMjgwMCwgMHgwMDEwYjVjYywKLQkweDQyMDMzMDAwLCAweDAwMTBiMjc0LCAweDQyMDM0MDAwLCAweDAwMTBiMmEwLAotCTB4NDIwMzM4MDAsIDB4MDAxMGIyYmYsIDB4NDIwMzQ4MDAsIDB4MDAxMGIzNDIsCi0JMHg0MjAzNTAwMCwgMHgwMDEwYjIwMCwgMHg0MjAzNTgwMCwgMHgwMDEwYWEwMCwKLQkweDQyMDMwODAwLCAweDAwMTBiMzAxLCAweDQxN2I2MDAwLCAweDQyMDM2ODAwLAotCTB4MDAwMDZmMDAsIDB4NDIwM2M4MDAsIDB4MDAwMDMwMDAsIDB4NDIwMzcwMDAsCi0JMHgwMDAwZmYwMCwgMHg0MjAzNzgwMCwgMHgwMDAwYmYwMCwgMHg0MjAzODAwMCwKLQkweDAwMDA3NzAwLCAweDQyMDM4ODAwLCAweDAwMDA0MDAwLCAweDQyMDM5MDAwLAotCTB4MDAwMDYwMDAsIDB4NDIwMzk4MDAsIDB4MDAxMGJjZGEsIDB4NDIwM2EwMDAsCi0JMHgwMDAwNzYwMCwgMHg0MjAzYTgwMCwgMHgwMDAwNzQwMCwgMHg0MjAzYjAwMCwKLQkweDAwMDA3MjAwLCAweDQyMDNiODAwLCAweDAwMDA3MTAwLCAweDQyMDNjMDAwLAotCTB4MDAwMDcwMDAsIDB4NDIwM2QwMDAsIDB4MDAwMDAwMDAsIDB4NDIwM2U4MDAsCi0JMHgwMDAyMDBmOSwgMHg0MTdiZDgwMCwgMHgxYzAxZjAwMCwgMHg0MjAwMDgwMCwKLQkweDAwMTAwMDAwLCAweDUwMDQwMDAwLCAweDRjMDAwMDAwLCAweDQyMDAwMDAwLAotCTB4MDAwMGFhYWEsIDB4NDQwMDA4MDAsIDB4NDIwMDE4MDAsIDB4MDAwMDU1NTUsCi0JMHg0MTc4MjAwMCwgMHg4MjEwMjQwMCwgMHgwMDAxMDAwMCwgMHg0MDEwMDAwMCwKLQkweDgwMDQyYzAwLCAweDQ0MGMyODAwLCAweDQyMDAzMDAwLCAweDAwMDAwMDBhLAotCTB4ODAxODMwNDAsIDB4MDQwMjA3ZmYsIDB4NTAxNDAwMDAsIDB4ODAwYzA1ODAsCi0JMHgwNDAyMDAwNCwgMHg1MDA0MDAwMCwgMHg4MDBjMDU4MCwgMHgwNDAyMDdmMiwKLQkweDVjMDAwMDAwLCAweDQ0MDAwODAwLCAweDgwMTQyODQwLCAweDQ4MTdjODYxLAotCTB4MWMwMWYwMDAsIDB4NTlhODA4MWYsIDB4ODAwNDA5YzAsIDB4MDQwMjAwMDksCi0JMHg0OTc4MWMwYywgMHg0YTAwMWEwYywgMHgwMDAwMDIwMCwgMHg0YTAwMTgwNCwKLQkweDA3MDAwMDAwLCAweDU5YTgwMDEwLCAweDljMDAwMWMwLCAweDQ4MDAxODA1LAotCTB4MDQwMWZkZjgsIDB4OWMwNDA5YzAsIDB4NDgwNDE4MDYsIDB4MWMwMWYwMDAsCi0JMHg1OWE4MDgwYywgMHg0MDA2ZDAwMCwgMHg0MjAyYjgwMCwgMHgwMDAwMDAwMSwKLQkweDU5YTgxODBkLCAweDQ4MGZjODU3LCAweDgyMDQxNDAwLCAweDAwMDAwMDE0LAotCTB4ODIwODI0MDAsIDB4MDAwMDAwMTQsIDB4NDAxMDAwMDAsIDB4ODAwYzA0ODAsCi0JMHgwNDAwMTAwNiwgMHg0NDA4MDgwMCwgMHg0MDA4MDgwMCwgMHg0MDEwMTAwMCwKLQkweDgxNWViODAwLCAweDA0MDFmN2Y3LCAweDQ1NzgwODAwLCAweDQ5NWY1MDIwLAotCTB4MWMwMWYwMDAsIDB4ODM1YzA0ODAsIDB4MDAwMDAwMjAsIDB4MDQwMDEwMDksCi0JMHg0OTZiYzg1NywgMHg4MTVlYjg0MCwgMHg0MTZhNTgwMCwgMHg1OTJlZDAwMCwKLQkweDQ5N2E1ODAwLCAweDQ5N2E1ODAxLCAweDgxMmU1OWMwLCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NTIsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg0MTdhNTgwMCwgMHgwNDAxZjdmOSwgMHg4MTVlYjg0MCwgMHgwNDAwMTAwOCwKLQkweDQxNmE1ODAwLCAweDQ5MmZjODU3LCAweDU5MmVkMDAwLCAweDQ5N2E1ODAwLAotCTB4NDk3YTU4MDEsIDB4ODEyZTU5YzAsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY1MiwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg0MTdhYjgwMCwKLQkweDQxN2E1ODAwLCAweDA0MDFmN2Y4LCAweDQ5MmZjODU3LCAweDQ5NmE1ODAwLAotCTB4NDEyZWQwMDAsIDB4ODE1ZWI4MDAsIDB4NTljODAwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMTIwMCwgMHg0ODAzOTAwMCwgMHgxYzAxZjAwMCwgMHg0OTJmYzg1NywKLQkweDgxMmU1OWMwLCAweDA0MDAwMDA3LCAweDU5MmMwMDAxLCAweDQ5N2E1ODAxLAotCTB4NGMwMDAwMDAsIDB4MDQwMWZmZjEsIDB4NWMwMjU4MDAsIDB4MDQwMWY3ZjksCi0JMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwgMHg0MjAwNzAwMCwgMHgwMDEwYjVmNiwKLQkweDRhMDA3MDAxLCAweDAwMDAwMDAwLCAweDU5ZTAwMDAzLCAweDgyMDAwNTQwLAotCTB4MDAwMDgwODAsIDB4NDgwM2MwMDMsIDB4NGEwM2I4MDUsIDB4OTAwMDAwMDEsCi0JMHg1OWRjMDAwNiwgMHg0YTAzYjgwNSwgMHg3MDAwMDAwMCwgMHg1OWRjMDAwNiwKLQkweDRhMDNiODA1LCAweDMwMDAwMDAwLCAweDU5ZGMwMDA2LCAweDRhMDNiODA1LAotCTB4ODAwMDAwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMjAsIDB4NDk3YmI4MDcsCi0JMHg4MDU4YjA0MCwgMHgwNDAyMDdmZSwgMHg0YTAzYjgwNSwgMHgzMDAwMDAwMCwKLQkweDU5ZGMwMDA2LCAweDRhMDNiODA1LCAweDYwMDAwMDAxLCAweDU5ZGMwMDA2LAotCTB4NGEwM2I4MDUsIDB4NzAwMDAwMDEsIDB4NTlkYzAwMDYsIDB4NGEwM2I4MDUsCi0JMHgzMDAwMDAwMiwgMHg0MjAwYjAwMCwgMHgwMDAwMDAyMCwgMHg0OTdiYjgwNywKLQkweDgwNThiMDQwLCAweDA0MDIwN2ZlLCAweDRhMDNiODA1LCAweDMwMDAwMDAwLAotCTB4NTlkYzAwMDYsIDB4NGEwM2I4MDUsIDB4NjAwMDAwMDEsIDB4MDQwMWZmOWUsCi0JMHgwNDAwMGQ5OSwgMHg0MjAwMTAwMCwgMHgwMDEwYjVmNCwgMHg0NTJjMTAwMCwKLQkweDRhMDI1ODAxLCAweDAwMDAwMDAxLCAweDRhMDI1ODAyLCAweDAwMDAwMTAwLAotCTB4NGEwMjU4MDksIDB4MDAxMDZlYWMsIDB4NDk3YTU4MGEsIDB4NDk3YTU4MGIsCi0JMHg0OTdhNTgwYywgMHgwNDAxZmY5MCwgMHgwNDAwMGQ4YiwgMHg0MjAwMTAwMCwKLQkweDAwMTBiNWY1LCAweDQ1MmMxMDAwLCAweDRhMDI1ODAxLCAweDAwMDAwMDAwLAotCTB4NGEwMjU4MDIsIDB4MDAwMDAxMDAsIDB4NGEwMjU4MDksIDB4MDAxMDEyMGMsCi0JMHg0OTdhNTgwMywgMHg0OTdhNTgwNywgMHg0OTdhNTgwOCwgMHg0OTdhNTgwYSwKLQkweDU5YTgwMDZmLCAweDhjMDAwNTAwLCAweDA0MDAwMDA2LCAweDRhMDNiODA1LAotCTB4ZTAwMDAwMDEsIDB4NTlkYzAwMDYsIDB4OGMwMDA1MjIsIDB4MDQwMDA3ZmMsCi0JMHgxYzAxZjAwMCwgMHg0ZGYwMDAwMCwgMHg0MjAzZTAwMCwgMHg1MDAwMDAwMCwKLQkweDRjMzgwMDAwLCAweDQwMDg3MDAwLCAweDRhMDA3MDAyLCAweDAwMDAwMDAwLAotCTB4NDIwMDcwMDAsIDB4MDAxMGI1ZjYsIDB4ODIwODA0MDAsIDB4MDAwMDAwMDAsCi0JMHg0NTc4MDAwMCwgMHg1ODM4MDAwNSwgMHg0ODA4NzAwNSwgMHg4MDAwMDU0MCwKLQkweDA0MDAwMDA2LCAweDQ4MGJjODU3LCAweDgyMDAwNDAwLCAweDAwMDAwMDAwLAotCTB4NDQwODAwMDAsIDB4MDQwMWYwMDMsIDB4NDgwYmM4NTcsIDB4NDgwODcwMDYsCi0JMHg1ODM4MDAwMSwgMHg4MDAwMDU0MCwgMHgwNDAwMDgwYywgMHg1YzAwNzAwMCwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDRjMzgwMDAwLCAweDQyMDA3MDAwLAotCTB4MDAxMGI1ZjYsIDB4NTgzODAwMDEsIDB4ODAwMDA1NDAsIDB4MDQwMDA4MDMsCi0JMHg1YzAwNzAwMCwgMHgxYzAxZjAwMCwgMHg0MjAwNzAwMCwgMHgwMDEwYjVmNiwKLQkweDU4MzgwMDAxLCAweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDA0MDIwMDEyLAotCTB4NTgzODAwMDAsIDB4MGMwMWYwMDEsIDB4MDAxMDA4ZDcsIDB4MDAxMDA4ZDYsCi0JMHgwMDEwMDhkNiwgMHgwMDEwMDhkNiwgMHgwMDEwMDhkNiwgMHgwMDEwMDhkNiwKLQkweDAwMTAwOGQ2LCAweDAwMTAwOGQ2LCAweDA0MDFmZDNmLCAweDU4MzgwODA4LAotCTB4ODAwNDA5YzAsIDB4MDQwMjAwMjcsIDB4NTgzODAwMDYsIDB4ODAwMDA1NDAsCi0JMHgwNDAyMDAwMiwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NywgMHg0ODAwNzAwMiwKLQkweDQwMDA2ODAwLCAweDU4MzQwMDAwLCAweDgwMDAwNTQwLCAweDA0MDIwMDAyLAotCTB4NDgwMDcwMDUsIDB4NDgwMDcwMDYsIDB4NGEwM2I4MDUsIDB4MjAwMDAwMDAsCi0JMHg1OWRjMDAwNiwgMHg0YTAzYjgwNSwgMHgzMDAwMDAwMCwgMHg1ODM0MDAwNywKLQkweDQ4MDNiODAwLCAweDQ4MDNjODU3LCAweDU4MzQwMDA4LCAweDQ4MDNiODAxLAotCTB4NDgwM2M4NTcsIDB4NTgzNDAwMDQsIDB4NDgwMDcwMDMsIDB4NTgzNDAwMDMsCi0JMHg0ODAwNzAwNCwgMHg0ODAzYjgwMywgMHg0ODAzYzg1NywgMHg1ODM0MDAwMSwKLQkweDhjMDAwNTAwLCAweDA0MDAwMDA0LCAweDRhMDA3MDAxLCAweDAwMDAwMDAxLAotCTB4MDQwMWYwMjgsIDB4NGEwMDcwMDEsIDB4MDAwMDAwMDIsIDB4MDQwMWYwM2UsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTFiMywgMHgwMjAxZjgwMCwgMHgwMDEwYTRiOCwKLQkweDA0MDAwMDE3LCAweDRhMDNiODA1LCAweDIwMDAwMDAwLCAweDU5ZGMwMDA2LAotCTB4NGEwM2I4MDUsIDB4MzAwMDAwMDAsIDB4NDgwN2I4MDAsIDB4NDgwYmI4MDEsCi0JMHg0YTAwNzAwMywgMHgwMDAwMDAxMCwgMHg0ODBjNzAwOSwgMHg0MjAwMTAwMCwKLQkweDAwMTAwOGJlLCAweDAyMDFmODAwLCAweDAwMTA1Y2QzLCAweDU4MzgwMDA4LAotCTB4ODIwMDA0MDAsIDB4MDAwMDAwMDQsIDB4NDgwMDcwMDQsIDB4NDgwM2I4MDMsCi0JMHg0YTAwNzAwMSwgMHgwMDAwMDAwNywgMHgwNDAxZjAyMywgMHgwMjAxZjgwMCwKLQkweDAwMTA5MWNiLCAweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDQyMDAxMDAwLAotCTB4MDAxMDA4YmUsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYWYsIDB4MDQwMWY3YjcsCi0JMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHg1ODM4MDgwMywgMHg0MjAwMTAwMCwKLQkweDAwMDAzZmZmLCAweDgyMDQwNDgwLCAweDAwMDAzZmZmLCAweDA0MDIxMDAzLAotCTB4NDAwNDEwMDAsIDB4ODAwMDA1ODAsIDB4NDgwMDcwMDMsIDB4NDgwM2M4NTcsCi0JMHg4MDA4MDBjNCwgMHg0ODAzYjgwMiwgMHg0YTAzYjgwNSwgMHgzMDAwMDAwMiwKLQkweDU5ZGMwMDA2LCAweDRhMDNiODA1LCAweDcwMDAwMDAxLCAweDU5ZGMwMDA2LAotCTB4NGEwM2I4MDUsIDB4MTAwMDAwMDAsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsCi0JMHgxYzAxZjAwMCwgMHg0ODNiYzg1NywgMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwKLQkweDU4MzgwODAzLCAweDQyMDAxMDAwLCAweDAwMDAzZmZmLCAweDgyMDQwNDgwLAotCTB4MDAwMDNmZmYsIDB4MDQwMjEwMDMsIDB4NDAwNDEwMDAsIDB4ODAwMDA1ODAsCi0JMHg0ODAwNzAwMywgMHg4MDA4MDBjNCwgMHg0ODAzYjgwMiwgMHg0ODAzYzg1NywKLQkweDRhMDNiODA1LCAweDEwMDAwMDAyLCAweDVjMDAxMDAwLCAweDVjMDAwODAwLAotCTB4MWMwMWYwMDAsIDB4NGMwNDAwMDAsIDB4NGMzODAwMDAsIDB4NDIwMDcwMDAsCi0JMHgwMDEwYjVmNiwgMHg1OWRjMDgwNiwgMHg0ODA3Yzg1NywgMHg0YTAzYjgwNSwKLQkweDIwMDAwMDAwLCAweDhjMDQwZDNlLCAweDA0MDAwMDA3LCAweDhjMDQwZDA4LAotCTB4MDQwMjBjYjksIDB4NTgzODAwMDEsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDcsCi0JMHgwYzAxZjgwNCwgMHg1YzAwNzAwMCwgMHg1YzAwMDgwMCwgMHgxYzAxZjAwMCwKLQkweDAwMTAwOGM2LCAweDAwMTAwOTZjLCAweDAwMTAwOTdjLCAweDAwMTAwNjE1LAotCTB4MDAxMDA2MTUsIDB4MDAxMDA2MTUsIDB4MDAxMDA2MTUsIDB4MDAxMDEyM2EsCi0JMHg0ODA3Yzg1NiwgMHg4MjA0MGQwMCwgMHg0MzAwMGY4MCwgMHgwNDAyMDAwOSwKLQkweDU4MzgwMDAzLCAweDgwMDAwNTQwLCAweDA0MDAwMDFjLCAweDU5ZGMwMDAwLAotCTB4NDgwM2I4MDAsIDB4NTlkYzAwMDEsIDB4NDgwM2I4MDEsIDB4MDQwMWY3YWQsCi0JMHg1ODM4MDgwMiwgMHg0YTAwMDgwMiwgMHgwMDAwMDIwMCwgMHgwNDAxZjAxZCwKLQkweDQ4MDdjODU2LCAweDgyMDQwZDAwLCAweDQzMDAwZjgwLCAweDA0MDIwMDA5LAotCTB4NTgzODAwMDMsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMGMsIDB4NTlkYzAwMDAsCi0JMHg0ODAzYjgwMCwgMHg1OWRjMDAwMSwgMHg0ODAzYjgwMSwgMHgwNDAxZjdiNiwKLQkweDU4MzgwMDAyLCAweDgyMDAwNDAwLCAweDAwMDAwMDAyLCAweDQ2MDAwMDAwLAotCTB4MDAwMDAyMDAsIDB4MDQwMWYwMGIsIDB4NGMzNDAwMDAsIDB4NTgzODY4MDIsCi0JMHg1OWRjMDAwMCwgMHg0ODAzYzg1NywgMHg0ODAwNjgwNywgMHg1OWRjMDAwMSwKLQkweDQ4MDA2ODA4LCAweDRhMDA2ODAyLCAweDAwMDAwMTAwLCAweDVjMDA2ODAwLAotCTB4NGEwMDcwMDEsIDB4MDAwMDAwMDAsIDB4NGMzMDAwMDAsIDB4NTgzODYwMDIsCi0JMHg0ODMzYzg1NywgMHgwNDAxZjgwYywgMHgwNDAwMDAwOSwgMHg1ODMwMDAwOSwKLQkweDgyMDAwYzgwLCAweDAwMTBhOTcxLCAweDA0MDIxYzczLCAweDgyMDAwYzgwLAotCTB4MDAwMjAwMDAsIDB4MDQwMDFjNzAsIDB4MDgwMWY4MDAsIDB4NWMwMDYwMDAsCi0JMHgwNDAxZjcxZSwgMHg4MDMwNjFjMCwgMHgwNDAwMDAwOSwgMHg1OWE4MDAwYywKLQkweDgwMzAwNDgwLCAweDA0MDAxMDA3LCAweDU5YTgwMDBkLCAweDgwMzAwNDgwLAotCTB4MDQwMjEwMDQsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsCi0JMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0ZGMwMDAwMCwKLQkweDQyMDA3MDAwLCAweDAwMTBiNjAxLCAweDRhMDA3NDAwLCAweDAwMDAwMDAwLAotCTB4NDk3ODcwMDEsIDB4NDIwMzgwMDAsIDB4MDAwMDc3MjAsIDB4NGEwMzgwMDYsCi0JMHg2MDAwMDAwMSwgMHg0YTAzODAwOSwgMHhmNGY2MDAwMCwgMHg0MjAzODAwMCwKLQkweDAwMDA3NzAwLCAweDRhMDM4MDA2LCAweDYwMDAwMDAxLCAweDRhMDM4MDA5LAotCTB4ZjRmNjAwMDAsIDB4NGEwM2M4MjIsIDB4MDAwMDAwMTAsIDB4NGEwMzcwZTgsCi0JMHgwMDAwMDAwMCwgMHgwNDAxZjgwOSwgMHg0YTAzNzBlOSwgMHgwMDAwM2EwZiwKLQkweDRhMDM3MGU4LCAweDAwMDAwMDAwLCAweDRhMDM3MGU4LCAweDAwMDAwMDAxLAotCTB4NWMwMzgwMDAsIDB4MWMwMWYwMDAsIDB4NGM1YzAwMDAsIDB4NDE3OGI4MDAsCi0JMHgwNDAxZjgwYSwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDRjNWMwMDAwLCAweDgyNWNiZDQwLCAweDAwMDAwMDAxLCAweDA0MDFmODAzLAotCTB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGRjMDAwMDAsCi0JMHg0YzUwMDAwMCwgMHg0YzU4MDAwMCwgMHg0YzU0MDAwMCwgMHg0YTAzNzBlOCwKLQkweDAwMDAwMDAwLCAweDgwNWNiOWMwLCAweDA0MDAwMDA5LCAweDRhMDM4ODA3LAotCTB4MDAwMDAwMDQsIDB4NTliODAwZWEsIDB4OGMwMDA1MTAsIDB4MDQwMDAwMDQsCi0JMHg1OWI4MDBlMCwgMHgwNDAxZjg3YiwgMHgwNDAxZjdmYiwgMHg0MjAzODAwMCwKLQkweDAwMDA3NzIwLCAweDAyMDFmODAwLCAweDAwMTAwZjBmLCAweDU5YzAwMDA3LAotCTB4NGEwMzgwMDYsIDB4MjAwMDAwMDAsIDB4NTljMDAwMDcsIDB4NGEwMzgwMDYsCi0JMHg4MDAwMDAwYSwgMHg1OWMwMDAwNywgMHg0YTAzODAwNiwgMHg4MDAwMDAwYiwKLQkweDU5YzAwMDA3LCAweDRhMDM4MDA2LCAweDQwMDAwMDAxLCAweDgzYzAwNTgwLAotCTB4MDAwMDc3MDAsIDB4MDQwMDAwMDQsIDB4NDIwMzgwMDAsIDB4MDAwMDc3MDAsCi0JMHgwNDAxZjdlZCwgMHg0MjAzODAwMCwgMHgwMDAwNzcyMCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwODAwLCAweDU5YzAwMDA3LCAweDhjMDAwNTFlLCAweDA0MDAwMDA2LAotCTB4NGEwMzgwMDYsIDB4OTAwMDAwMDEsIDB4ODAwNDA4NDAsIDB4MDQwMjA3ZmEsCi0JMHgwNDAxZmMwMSwgMHg4M2MwMDU4MCwgMHgwMDAwNzcwMCwgMHgwNDAwMDAwNCwKLQkweDQyMDM4MDAwLCAweDAwMDA3NzAwLCAweDA0MDFmN2YxLCAweDgwNWNiOWMwLAotCTB4MDQwMjAwMWQsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMjAsIDB4ODNiOGFjMDAsCi0JMHgwMDAwMDAyMCwgMHgwMjAxZjgwMCwgMHgwMDEwYTk0NywgMHg0YTAzNzBmYiwKLQkweDAwMDAwMDAxLCAweDRhMDM3MDIwLCAweDAwMTAxMTBkLCAweDU5YTgwMDM5LAotCTB4ODIwMDA1MDAsIDB4MDAwMGZmZmYsIDB4NDgwMzcwMjEsIDB4NGEwMzcwMzUsCi0JMHgwMDEwYmJkYSwgMHg0YTAzNzAzMCwgMHgwMDEwYjIxMCwgMHg0YTAzNzAzMSwKLQkweDAwMTBhYTAwLCAweDRhMDM3MDMyLCAweDAwMTBiMzE1LCAweDRhMDM3MDM2LAotCTB4MDAxMGIzMjAsIDB4NTk4NDAwMDIsIDB4NDgwMzcwMzQsIDB4NGEwMzcwMzgsCi0JMHgwMDEwMTEwNCwgMHg0YTAzNzBmYiwgMHgwMDAwMDAwMSwgMHg0MTc4YTAwMCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDIwLCAweDgzYjhhYzAwLCAweDAwMDAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5NDcsIDB4NDIwMGIwMDAsIDB4MDAwMDAwNDAsCi0JMHg4M2I4YWMwMCwgMHgwMDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDEwYTk0NywKLQkweDgwNWNiOWMwLCAweDA0MDIwMDA0LCAweDRhMDM3MGU0LCAweGFhYWFhYWFhLAotCTB4MDQwMWYwMDMsIDB4NGEwMzcwZTQsIDB4YTJhYWFhODIsIDB4NGEwMzcwZTUsCi0JMHhhYWFhYWFhYSwgMHg0YTAzNzBlNiwgMHhhYWFhYWFhYSwgMHg0YTAzNzBmYiwKLQkweDAwMDAwMDAwLCAweDRhMDM3MGU2LCAweGFhYWFhYWFhLCAweDQyMDM4MDAwLAotCTB4MDAwMDc3MjAsIDB4NGEwMzgwMDYsIDB4OTAwMDAwMDAsIDB4NTljMDAwMDcsCi0JMHg4YzAwMDUxZSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg0MjAzODAwMCwKLQkweDAwMDA3NzAwLCAweDRhMDM4MDA2LCAweDkwMDAwMDAwLCAweDU5YzAwMDA3LAotCTB4OGMwMDA1MWUsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NWMwMGE4MDAsCi0JMHg1YzAwYjAwMCwgMHg1YzAwYTAwMCwgMHg1YzAzODAwMCwgMHgxYzAxZjAwMCwKLQkweDRkMzAwMDAwLCAweDRkMzgwMDAwLCAweDQwMDI2MDAwLCAweDgyMDAwNTAwLAotCTB4N2YwMDAwMDAsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMGYsCi0JMHg4MzMyNjUwMCwgMHgwMGZmZmZmZiwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA0LCAweDA0MDIwMDA5LCAweDU5MzAwYzA2LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDksIDB4MDQwMjAwMDUsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDcsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwgMHg1YzAyNjAwMCwKLQkweDFjMDFmMDAwLCAweDRkMzAwMDAwLCAweDRkMmMwMDAwLCAweDRkMzQwMDAwLAotCTB4NGQ0MDAwMDAsIDB4NGNmYzAwMDAsIDB4NGQzODAwMDAsIDB4NGQzYzAwMDAsCi0JMHg0ZDQ0MDAwMCwgMHg0ZDRjMDAwMCwgMHg0ZDQ4MDAwMCwgMHg0YzVjMDAwMCwKLQkweDRjNjAwMDAwLCAweDRjNjQwMDAwLCAweDRkMDQwMDAwLCAweDRjYzgwMDAwLAotCTB4NGNjYzAwMDAsIDB4NGNmNDAwMDAsIDB4NGNmODAwMDAsIDB4NGNmYzAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDAxNiwgMHg1YzAxZjgwMCwgMHg1YzAxZjAwMCwKLQkweDVjMDFlODAwLCAweDVjMDE5ODAwLCAweDVjMDE5MDAwLCAweDVjMDIwODAwLAotCTB4NWMwMGM4MDAsIDB4NWMwMGMwMDAsIDB4NWMwMGI4MDAsIDB4NWMwMjkwMDAsCi0JMHg1YzAyOTgwMCwgMHg1YzAyODgwMCwgMHg1YzAyNzgwMCwgMHg1YzAyNzAwMCwKLQkweDVjMDFmODAwLCAweDVjMDI4MDAwLCAweDVjMDI2ODAwLCAweDVjMDI1ODAwLAotCTB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NDkzYmM4NTcsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDA0NSwgMHg4MzMwMDUwMCwgMHgxZjAwMDAwMCwgMHgwNDAwMDAwOCwKLQkweDgxMzI2NTgwLCAweDgwMDAwMTMwLCAweDgyMDAwYzgwLCAweDAwMDAwMDE0LAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4MGMwMWYwMTMsIDB4ODMzMDA1MDAsCi0JMHgwMDAwMDBmZiwgMHg4MjAwMGM4MCwgMHgwMDAwMDAwNywgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDBjMDFmMDI1LCAweDFjMDFmMDAwLCAweDgyMDAwZDAwLAotCTB4YzAwMDAwMzgsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MGQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHgwMDAwMDAwMCwgMHgwMDAwMDA0OCwgMHgwMDAwMDA1NCwKLQkweDAwMDAwMDUzLCAweDAwMTAwYWU0LCAweDAwMTAwYjA4LCAweDAwMTAwYjAzLAotCTB4MDAxMDBiMjgsIDB4MDAxMDBhZWYsIDB4MDAxMDBhZmIsIDB4MDAxMDBhZTQsCi0JMHgwMDEwMGIyMywgMHgwMDEwMGI2NCwgMHgwMDEwMGFlNCwgMHgwMDEwMGFlNCwKLQkweDAwMTAwYWU0LCAweDAwMTAwYWU0LCAweDAwMTAwYjY3LCAweDAwMTAwYjZkLAotCTB4MDAxMDBiN2UsIDB4MDAxMDBiOGYsIDB4MDAxMDBhZTQsIDB4MDAxMDBiOTgsCi0JMHgwMDEwMGJhNCwgMHgwMDEwMGFlNCwgMHgwMDEwMGFlNCwgMHgwMDEwMGFlNCwKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDAwMTAwYWVkLCAweDAwMTAwYzNmLAotCTB4MDAxMDBiMzUsIDB4MDAxMDBiNTksIDB4MDAxMDBhZWQsIDB4MDAxMDBhZWQsCi0JMHgwMDEwMGFlZCwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzYzg1NiwKLQkweDU5MzAwMDA0LCAweDhjMDAwNTNlLCAweDA0MDIwMDA1LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNTUsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmNiNCwgMHgwNDAwMDdmYSwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDA0MDFmOGFhLCAweDQwMDAyODAwLCAweDQxNzgyMDAwLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNTYsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4NDgwM2M4NTYsCi0JMHg0MjAyNzAwMCwgMHgwMDAwMDA1NywgMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwKLQkweDQ4MDNjODU2LCAweDU5MzAwMDA3LCAweDhjMDAwNTFhLCAweDA0MDIwMDEwLAotCTB4NTkzMjU4MDgsIDB4ODEyZTU5YzAsIDB4MDQwMDAwMTQsIDB4NTkyYzA0MDgsCi0JMHg4YzAwMDUxYywgMHgwNDAyMDAwMywgMHg0YTAyNjAxMSwgMHhmZmZmZmZmZiwKLQkweDU5MzAwMDA0LCAweDhjMDAwNTNlLCAweDA0MDIwMDA5LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNDgsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4NTkzMjU4MDgsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwNywgMHgwNDAxZjdmNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA2Y2I0LCAweDA0MDAwN2Y2LCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4ODMzMDA1MDAsIDB4MDBmZmZmZmYsIDB4MDIwMWYwMDAsIDB4MDAxMDYyMGYsCi0JMHgxYzAxZjAwMCwgMHg0YzA0MDAwMCwgMHg1OWI4MDhlYSwgMHg4MjA0MGQwMCwKLQkweDAwMDAwMDA3LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA0LAotCTB4NDIwMDAwMDAsIDB4NjAwMDAwMDAsIDB4MDQwMWY4YWMsIDB4NWMwMDA4MDAsCi0JMHgxYzAxZjAwMCwgMHgwNDAxZjhmYSwgMHgwNDAwMDAxYiwgMHg1OTMyNTgwOCwKLQkweDgxMmU1OWMwLCAweDA0MDAwMDE4LCAweDU5MmMwMjA0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4ODIwMDBkODAsIDB4MDAwMDAwMjksIDB4MDQwMjAwMTIsCi0JMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAwYiwKLQkweDU5MzAwODA3LCAweDg0MDQwZDI2LCAweDQ4MDY2MDA3LCAweDAyMDFmODAwLAotCTB4MDAwMjAwODcsIDB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsIDB4NGEwMzcwZTUsCi0JMHgwMDAwMDAwOCwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNmNiNCwKLQkweDA0MDAwN2Y0LCAweDU5ODgwMDUzLCAweDgwMDAwMDAwLCAweDQ4MDMxMDUzLAotCTB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsIDB4NDIwMDAwMDAsIDB4YzAwMDAwMDAsCi0JMHgwNDAxZjA1YSwgMHg0MjAwNzgwMCwgMHgwMDEwYmJlMSwgMHg0MjAwMjAwMCwKLQkweDAwMDAzMDAwLCAweDQyMDAzMDAwLCAweDAwMDAwMTA1LCAweDAyMDFmODAwLAotCTB4MDAxMDViM2QsIDB4NGEwMzcwZTQsIDB4MDIwMDAwMDAsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHg0MTMwMDgwMCwKLQkweDgwMDQwOWMwLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MGQsIDB4NDkzM2M4NTcsIDB4ODEzMjYxYzAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHgwNDAxZjgzNSwgMHg0MDAwMjgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhN2MzLCAweDA0MDFmOGFlLCAweDA0MDAwMDA3LCAweDU5MzI2ODA5LAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4NTkzMDA0MTQsIDB4MDIwMjA4MDAsCi0JMHgwMDEwOTA5NCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg4MTMyNjFjMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDA0MDFmOGExLCAweDA0MDAwMDBiLAotCTB4NTkzMjU4MDgsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDQwMDAwMDcsCi0JMHg1OTJjMDIwOCwgMHg4NDAwMDU0ZSwgMHg0ODAyNWEwOCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA4OTk3LCAweDFjMDFmMDAwLCAweDQ4NWZjODU3LAotCTB4NWMwMDAwMDAsIDB4NGQ3ODAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsCi0JMHg0MjAwYjgwMCwgMHgwMDAwODAwNSwgMHgwMjAxZjAwMCwgMHgwMDEwMDYxYSwKLQkweDQ5MzNjODU3LCAweDgzMzAwNDgwLCAweDAwMDAwMDIwLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4ODMzMDBjMDAsIDB4MDAxMGI2Y2IsIDB4NTAwNDAwMDAsCi0JMHg4MDAwMDAwMCwgMHgwNDAwMTAwMiwgMHg0NDAwMDgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDA0MDFmN2Y0LCAweDQ4MDdjODU2LCAweDU5YjgwMGVhLAotCTB4OGMwMDA1MTAsIDB4MDQwMDA3ZmQsIDB4NTliODAwZTAsIDB4NDgwM2M4NTcsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0MjAwMDAwMCwgMHgxMDAwMDAwMCwKLQkweDQxMzAwODAwLCAweDA0MDFmMDJkLCAweDgyMDAwNTAwLCAweGYwMDAwMDAwLAotCTB4ODIwNDBkMDAsIDB4MGZmZmZmZmYsIDB4ODAwNDBkNDAsIDB4NDgwN2M4NTcsCi0JMHg1OWI4MDBlYSwgMHg4YzAwMDUxNiwgMHgwNDAyMDAwMywgMHg0ODA3NzBlMSwKLQkweDFjMDFmMDAwLCAweDhjMDAwNTEwLCAweDA0MDAwN2ZhLCAweDRjMDQwMDAwLAotCTB4MDQwMWY4MDksIDB4NWMwMDA4MDAsIDB4ODIxMDA0ODAsIDB4MDAwMDAwMDgsCi0JMHgwNDAwMTdmNCwgMHg0YzA0MDAwMCwgMHgwNDAxZmViZiwgMHg1YzAwMDgwMCwKLQkweDA0MDFmN2YwLCAweDU5YjgwMGUyLCAweDU5YjgyMGUyLCAweDgwMTAwNTgwLAotCTB4MDQwMjA3ZmQsIDB4ODAxMDIxMTQsIDB4MDQwMWYwMDYsIDB4NTliODAwZTIsCi0JMHg1OWI4MjBlMiwgMHg4MDEwMDU4MCwgMHgwNDAyMDdmZCwgMHgwNDAxZjAwMSwKLQkweDQwMTAxODAwLCAweDgwMGMxOTBhLCAweDgyMTAwNTAwLCAweDAwMDAwMDFmLAotCTB4ODIwYzFkMDAsIDB4MDAwMDAwMWYsIDB4ODAwYzI0ODAsIDB4ODIxMDI1MDAsCi0JMHgwMDAwMDAxZiwgMHgxYzAxZjAwMCwgMHg4MjAwMDUwMCwgMHhmMDAwMDAwMCwKLQkweDgyMDQwZDAwLCAweDBmZmZmZmZmLCAweDgwMDQwZDQwLCAweDQ4MDdjODU3LAotCTB4NDIwMDEwMDAsIDB4MDAxMGI2MDIsIDB4NTAwODAwMDAsIDB4ODAwMDA1NDAsCi0JMHgwNDAyMDAwNSwgMHg0YTAzNzBlNSwgMHgwMDAwMDAwMywgMHg0YTAzNzBlNCwKLQkweDAwMDAwMzAwLCAweDgwMDAwMDAwLCAweDQ0MDAxMDAwLCAweDQyMDAxMDAwLAotCTB4MDAwMDA0MDAsIDB4NTliODAwZWEsIDB4OGMwMDA1MTAsIDB4MDQwMDAwMGMsCi0JMHgwNDAxZmZkNSwgMHg4MjEwMDQ4MCwgMHgwMDAwMDAwOCwgMHgwNDAwMTAwNywKLQkweDRjMDQwMDAwLCAweDRjMDgwMDAwLCAweDA0MDFmZThiLCAweDVjMDAxMDAwLAotCTB4NWMwMDA4MDAsIDB4MDQwMWYwMjAsIDB4NTliODAwZWEsIDB4OGMwMDA1MTYsCi0JMHgwNDAyMDAxZCwgMHg0YTAzNzBlNCwgMHgwMDMwMDAwMCwgMHg0ODA3NzBlMSwKLQkweDQyMDAxMDAwLCAweDAwMDBmZjAwLCAweDgwMDgxMDQwLCAweDA0MDAwMDEyLAotCTB4NTliODA4ZTQsIDB4OGMwNDBkMjgsIDB4MDQwMjA3ZmMsIDB4NDIwMDEwMDAsCi0JMHgwMDEwYjYwMiwgMHg1MDA4MDAwMCwgMHg4MDAwMDA0MCwgMHgwNDAyMDAwNSwKLQkweDRhMDM3MGU1LCAweDAwMDAwMDAyLCAweDRhMDM3MGU0LCAweDAwMDAwMjAwLAotCTB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsIDB4NDQwMDEwMDAsIDB4OGMwNDBkMmMsCi0JMHgxYzAxZjAwMCwgMHg0MWY4MDAwMCwgMHg1MDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDgwMDgxMDQwLCAweDA0MDIwN2QzLCAweDQxZjgwMDAwLAotCTB4NTAwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NGQzODAwMDAsCi0JMHg1OTMwMGMwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwOSwgMHgwNDAyMDAwNiwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDQ3LCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LAotCTB4ODAwMDA1ODAsIDB4NWMwMjcwMDAsIDB4MWMwMWYwMDAsIDB4NGM1MDAwMDAsCi0JMHg0YTAzOTAwZCwgMHgwMDAwMDAwMSwgMHg1OWM4YTAyMCwgMHg0YTAzOTAwZCwKLQkweDAwMDAwMDAyLCAweDU5YzgwODIwLCAweDhjNTBhNTJlLCAweDA0MDAwMDAyLAotCTB4OTAwNDA5YzAsIDB4ODIwNDBkMDAsIDB4MDAwMGZmZmYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWIwZiwgMHg1YzAwYTAwMCwgMHgxYzAxZjAwMCwgMHgwNDAxZmZmMCwKLQkweDA0MDAwMDQ1LCAweDQ5MzNjODU3LCAweDU5MzAwNDA2LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwNDAsIDB4NTljODIwMjEsIDB4NGEwMzkwMGQsCi0JMHgwMDAwMDAwMSwgMHg1OWM4MjgyMSwgMHg4MjE0MmQwMCwgMHgwMDAwZmZmZiwKLQkweDU5MzI1ODA4LCAweDgxMmU1OWMwLCAweDA0MDAwMDM3LCAweDU5MzI2ODA5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ3MjgsIDB4MDIwMjA4MDAsIDB4MDAxMDkwN2MsCi0JMHg1OTljMDAxOSwgMHg4YzAwMDUwYywgMHgwNDAyMDAxOCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0NzI4LCAweDA0MDIwMDE1LCAweDU5MzAwODExLCAweDQ4MDdjODU3LAotCTB4NTkyYzA0MDgsIDB4OGMwMDA1MWMsIDB4MDQwMjAwMGUsIDB4ODQwMDA1NWMsCi0JMHg0ODAyNWMwOCwgMHg1OTJjMGEwNCwgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDQ4LCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMTgsIDB4MDQwMjAwMDMsIDB4NTkzMDA4MTEsIDB4NDgwNjU4MDMsCi0JMHg0YTAyNjAxMSwgMHg3ZmZmZmZmZiwgMHg0ODE2NjAxMywgMHgwMjAxZjgwMCwKLQkweDAwMTAxMTJkLCAweDA0MDIwMDE0LCAweDA0MDFmYTA3LCAweDQwMjgwMDAwLAotCTB4NDgwMjYwMGQsIDB4MDQwMDAwMDUsIDB4NDgzMjYwMGIsIDB4NTAyMDAwMDAsCi0JMHg0ODAyNjAwYSwgMHg0ODIyNjAwYywgMHg1OTMwMDQxNCwgMHg4YzAwMDUxYywKLQkweDA0MDIwMDA0LCAweDU5OWMwMDE5LCAweDhjMDAwNTBjLCAweDA0MDIwODZlLAotCTB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsIDB4NGEwMzcwZTUsIDB4MDAwMDAwMDgsCi0JMHgxYzAxZjAwMCwgMHg1OTg4MDA1MywgMHg4MDAwMDAwMCwgMHg0ODAzMTA1MywKLQkweDRhMDM5MDBkLCAweDAwMDAwMDQwLCAweDQyMDAwMDAwLCAweGMwMDAwMDAwLAotCTB4MDQwMWY3MjYsIDB4NGNmODAwMDAsIDB4NThmNDAwMDAsIDB4ODAwMWY1NDAsCi0JMHgwNDAxZjgyMCwgMHg0MTc4MTgwMCwgMHgwNDAxZjhlNywgMHgwNDAyMDAxNCwKLQkweDQ0MTQwODAwLCAweDA0MDFmODJhLCAweDA0MDAwMDExLCAweDQwMDQzODAwLAotCTB4NDIwMDE4MDAsIDB4MDAwMDAwMDEsIDB4NDAxNDIwMDAsIDB4MDQwMWY4ZGUsCi0JMHgwNDAyMDAwYiwgMHg4MDFjMzgwMCwgMHg1MDFjMDAwMCwgMHg0NDAwMDgwMCwKLQkweDA0MDFmODEwLCAweDgwMWMwNTgwLCAweDA0MDAwMDA0LCAweDQ0MTAzODAwLAotCTB4ODAxYzM4NDAsIDB4NDQxNDM4MDAsIDB4MDQwMWY4MTksIDB4NWMwMWYwMDAsCi0JMHgxYzAxZjAwMCwgMHg4MGY5ZjFjMCwgMHgwNDAyMDAwMywgMHg1OGY0MTIwMiwKLQkweDA0MDFmMDAzLCAweDQyMDAxMDAwLCAweDAwMDAwMDA3LCAweDFjMDFmMDAwLAotCTB4ODBmOWYxYzAsIDB4MDQwMjAwMDYsIDB4NThmNDA0MDEsIDB4ODIwMDA0ODAsCi0JMHgwMDAwMDAwMiwgMHg4MGY0MDQwMCwgMHgwNDAxZjAwNSwgMHg1OGY4MDQwMSwKLQkweDgyMDAwNDgwLCAweDAwMDAwMDAyLCAweDgwZjgwNDAwLCAweDUwMDAyODAwLAotCTB4ODAwMDAwMDAsIDB4NTAwMDIwMDAsIDB4MWMwMWYwMDAsIDB4ODBmOWYxYzAsCi0JMHgwNDAyMDAwOCwgMHg1OGY0MDQwMSwgMHg4MjAwMDQ4MCwgMHgwMDAwMDAwMiwKLQkweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDQ4MDFlYzAxLCAweDA0MDFmMDBiLAotCTB4NThmODA0MDEsIDB4ODIwMDA0ODAsIDB4MDAwMDAwMDIsIDB4MDIwMDE4MDAsCi0JMHgwMDEwMDYxNSwgMHg0ODAxZjQwMSwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwKLQkweDA0MDIwMDAyLCAweDA0MDFmODA5LCAweDU4ZjQwMjAyLCAweDgwMDAwMDQwLAotCTB4NDgwMWVhMDIsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg0ZDJjMDAwMCwgMHg0MGZhNTgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAwODNhLCAweDQ5NzllODAwLCAweDQxNzlmMDAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4ODBmNWU5YzAsIDB4MDQwMDAwMDksCi0JMHg4MGY5ZjFjMCwgMHgwNDAyMGZmNSwgMHg0ZDJjMDAwMCwgMHg0MGY2NTgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAwODNhLCAweDQxNzllODAwLCAweDVjMDI1ODAwLAotCTB4MWMwMWYwMDAsIDB4NGNmNDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQ3MjgsCi0JMHgwNDAyMDAzNiwgMHg1OTMwMDgwNywgMHg4MjA0MDUwMCwgMHgwMDAwMzEwMCwKLQkweDA0MDIwMDMyLCAweDhjMDQwZDIyLCAweDA0MDAwMDMyLCAweDU5MzAwMDFmLAotCTB4ODAwMWVkNDAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4ODIwMDA1ODAsCi0JMHhmZmZmZmZmZiwgMHgwNDAwMDAyOSwgMHg1OGY0MDIwMSwgMHg4MjAwMDU4MCwKLQkweDAwMDBkY2IzLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU4ZjQwYTAyLAotCTB4ODIwNDA1MDAsIDB4MDAwMGZmZmUsIDB4MDQwMDAwMDMsIDB4MDQwMWZmODYsCi0JMHg1OGY0MGEwMiwgMHg4MjA0MDQ4MCwgMHgwMDAwMDAwZiwgMHgwNDAyMTA1OSwKLQkweDgwMDQwODAwLCAweDQ4MDVlYTAyLCAweDgyMDQwNTgwLCAweDAwMDAwMDA4LAotCTB4MDQwMDAwNWQsIDB4ODIwNDA0ODAsIDB4MDAwMDAwMDgsIDB4MDQwMDEwMGEsCi0JMHg1OGY0MDAwMCwgMHg4MDAxZWQ0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU4ZjQwMjAxLCAweDgyMDAwNTgwLCAweDAwMDBkZGI5LCAweDAyMDIwODAwLAotCTB4MDAxMDA2MTUsIDB4NThmNDA0MDEsIDB4ODIwMDBjMDAsIDB4MDAwMDAwMDIsCi0JMHg0ODA1ZWMwMSwgMHg4MGY0MDQwMCwgMHg1OTMwMDgxMiwgMHg0NDA0MDAwMCwKLQkweDgwMDAwMDAwLCAweDQ1NzgwMDAwLCAweDVjMDFlODAwLCAweDFjMDFmMDAwLAotCTB4NDIwMDEwMDAsIDB4MDAwMDA0MDAsIDB4NTliODAwZTQsIDB4OGMwMDA1MjQsCi0JMHgwNDAyMDAyMywgMHg0YTAzNzBlNCwgMHgwMDAzMDAwMCwgMHg0MDAwMDAwMCwKLQkweDU5YjgwMGU0LCAweDhjMDAwNTI0LCAweDA0MDIwMDFiLCAweDU5MzAwODA3LAotCTB4ODQwNDBkNjIsIDB4NDgwNjYwMDcsIDB4NGEwMzcwZTQsIDB4MDAwMjAwMDAsCi0JMHg0ZDJjMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgxOSwgMHgwNDAwMDAyNSwKLQkweDQ5MmU2MDFmLCAweDRhMDI1YTAxLCAweDAwMDBkY2IzLCAweDU5MzAwMDA4LAotCTB4ODAwMDFkNDAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTgwYzA4MGYsCi0JMHg0ODA2NTgwMywgMHg1OTMwMTgxMSwgMHg0MDA0MDAwMCwgMHg4MDBjMDU4MCwKLQkweDA0MDIwMDBkLCAweDQ5N2E1YTAyLCAweDRhMDI1YzAxLCAweDAwMDAwMDA0LAotCTB4MDQwMWYwMTEsIDB4NGEwMzcwZTQsIDB4MDAwMjAwMDAsIDB4NDAwMDAwMDAsCi0JMHg0MDAwMDAwMCwgMHg4MDA4MTA0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDA0MDFmN2Q2LCAweDRhMDI1YTAyLCAweDAwMDAwMDAxLCAweDRhMDI1YzAxLAotCTB4MDAwMDAwMDYsIDB4NDk3YTU4MDQsIDB4NDAwYzAwMDAsIDB4ODAwNDA0ODAsCi0JMHg0ODAyNTgwNSwgMHg0MTJkZTgwMCwgMHg1YzAyNTgwMCwgMHgwNDAxZjdhOSwKLQkweDVjMDI1ODAwLCAweDRhMDI2MDFmLCAweGZmZmZmZmZmLCAweDA0MDFmN2MzLAotCTB4NGQyYzAwMDAsIDB4NThmNjU4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4M2EsCi0JMHg0MGY2NTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgzYSwgMHg1YzAyNTgwMCwKLQkweDA0MDFmN2Y1LCAweDRkMmMwMDAwLCAweDAyMDFmODAwLCAweDAwMTAwODE5LAotCTB4MDQwMDA3ZjgsIDB4NGEwMjVhMDEsIDB4MDAwMGRkYjksIDB4NGEwMjVjMDEsCi0JMHgwMDAwMDAwMiwgMHg0OTJkZTgwMCwgMHg0MTJkZTgwMCwgMHg1YzAyNTgwMCwKLQkweDA0MDFmN2E1LCAweDA0MDFmZjMwLCAweDgyZjQwNDAwLCAweDAwMDAwMDA0LAotCTB4ODAwYzA0MDAsIDB4NDAwMDA4MDAsIDB4NTAwNDAwMDAsIDB4ODAxMDA1ODAsCi0JMHgwNDAwMDAxNiwgMHg4MjA0MGMwMCwgMHgwMDAwMDAwMiwgMHg4MDA4MTA0MCwKLQkweDA0MDIwN2ZhLCAweDgwZjlmMWMwLCAweDA0MDAwMDExLCAweDU4ZjQxMjAyLAotCTB4ODIwODE0ODAsIDB4MDAwMDAwMDcsIDB4ODJmODA0MDAsIDB4MDAwMDAwMDIsCi0JMHg4MDBjMDQwMCwgMHg0MDAwMDgwMCwgMHg1MDA0MDAwMCwgMHg4MDEwMDU4MCwKLQkweDA0MDAwMDA2LCAweDgyMDQwYzAwLCAweDAwMDAwMDAyLCAweDgwMDgxMDQwLAotCTB4MDQwMjA3ZmEsIDB4MDQwMWYwMDIsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjdmZCwgMHg0Y2Y0MDAwMCwgMHg0Y2Y4MDAwMCwKLQkweDQwMDFlODAwLCAweDU5MmMwYTA2LCAweDgwMDQwOWMwLCAweDA0MDIwMDIxLAotCTB4ODJmNDA1ODAsIDB4ZmZmZmZmZmYsIDB4MDQwMDAwMWIsIDB4NThmNDAyMDEsCi0JMHg4MjAwMDU4MCwgMHgwMDAwZGNiMywgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU4ZjQwMDAwLCAweDgwMDFmNTQwLCAweDA0MDAwMDA2LCAweDU4ZjgwMjAxLAotCTB4ODIwMDA1ODAsIDB4MDAwMGRkYjksIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHg0MTc4MzgwMCwgMHg1OGY0NDAwMywgMHgwNDAxZjgzZCwgMHgwNDAyMDAwOSwKLQkweDA0MDFmZjJlLCAweDQ5N2E2MDFmLCAweDU5MzAwODA3LCAweDg0MDQwZDIyLAotCTB4NDgwNjYwMDcsIDB4NWMwMWYwMDAsIDB4NWMwMWU4MDAsIDB4MWMwMWYwMDAsCi0JMHgwNDAxZmYyNiwgMHg0YTAyNWEwNiwgMHgwMDAwMDAxMSwgMHgwNDAxZjdmNiwKLQkweDgyZjQwNTgwLCAweGZmZmZmZmZmLCAweDA0MDIwZjIwLCAweDA0MDFmN2YyLAotCTB4NGNmNDAwMDAsIDB4NGNmODAwMDAsIDB4NDAwMWU4MDAsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDAwMSwgMHgwNDAyMDAyMCwgMHg4MmY0MDU4MCwgMHhmZmZmZmZmZiwKLQkweDA0MDAwMDFhLCAweDU4ZjQwMjAxLCAweDgyMDAwNTgwLCAweDAwMDBkY2IzLAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NThmNDAwMDAsIDB4ODAwMWY1NDAsCi0JMHgwNDAwMDAwNiwgMHg1OGY4MDIwMSwgMHg4MjAwMDU4MCwgMHgwMDAwZGRiOSwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDQxNzgzODAwLCAweDU4ZjQ0MDAzLAotCTB4MDQwMWY4MTMsIDB4MDQwMjAwMDgsIDB4MDQwMWZmMDQsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMSwgMHg0OTdhNjAxZiwgMHg1YzAxZjAwMCwgMHg1YzAxZTgwMCwKLQkweDFjMDFmMDAwLCAweDA0MDFmZWZkLCAweDQyMDAwODAwLCAweDAwMDAwMDExLAotCTB4MDQwMWY3ZjksIDB4NGMwNDAwMDAsIDB4ODJmNDA1ODAsIDB4ZmZmZmZmZmYsCi0JMHgwNDAyMGVmNiwgMHg1YzAwMDgwMCwgMHgwNDAxZjdmMywgMHg0ODAzYzg1NiwKLQkweDQwMWMyMDAwLCAweDQxNzgxODAwLCAweDRjMjAwMDAwLCAweDA0MDFmZjg2LAotCTB4NWMwMDQwMDAsIDB4MDQwMjAwMmMsIDB4NDAyMDIwMDAsIDB4NDIwMDE4MDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZmY4MCwgMHgwNDAyMDAyNywgMHgwNDAxZmVhZSwKLQkweDQwMDgyODAwLCAweDgyZjQwNDAwLCAweDAwMDAwMDA0LCAweDQwMDAzMDAwLAotCTB4NTAxODIwMDAsIDB4NDAxMDAwMDAsIDB4ODAxYzA1ODAsIDB4MDQwMDAwMDUsCi0JMHg0MjAwMTgwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZmY3MywgMHgwNDAyMDAxYSwKLQkweDgyMTgzNDAwLCAweDAwMDAwMDAyLCAweDgwMTQyODQwLCAweDA0MDIwN2Y1LAotCTB4ODBmOWYxYzAsIDB4MDQwMDAwMTMsIDB4NThmNDJhMDIsIDB4ODIxNDJjODAsCi0JMHgwMDAwMDAwNywgMHg4MmY4MDQwMCwgMHgwMDAwMDAwMywgMHg0MDAwMzAwMCwKLQkweDUwMTgyMDAwLCAweDQwMTAwMDAwLCAweDgwMWMwNTgwLCAweDA0MDAwMDA1LAotCTB4NDIwMDE4MDAsIDB4MDAwMDAwMDEsIDB4MDQwMWZmNWYsIDB4MDQwMjAwMDYsCi0JMHg4MjE4MzQwMCwgMHgwMDAwMDAwMiwgMHg4MDE0Mjg0MCwgMHgwNDAyMDdmNSwKLQkweDFjMDFmMDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDA0MDFmN2ZkLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NTgzODAyMDcsIDB4OGMwMDA1MDIsCi0JMHgwNDAwMDdmYywgMHg1MDIwMDAwMCwgMHg4MDM4N2MwMCwgMHg1ODNjMjgwMCwKLQkweDU4M2MyMDAxLCAweDU4MzgwNDA0LCAweDgwMDAxNTQwLCAweDA0MDIwMDAyLAotCTB4NTgzODE0MDcsIDB4NThjODM0MDEsIDB4NTgzODBjMDgsIDB4NTkzMDM4MDcsCi0JMHg0OTdhNjAxMiwgMHg0OTdhNjAxMywgMHgwMjAxZjAwMCwgMHgwMDAyMDBiZiwKLQkweDU5MmMwNDA4LCAweDhjMDAwNTAyLCAweDA0MDAwN2VhLCAweDU5MmMwNDA5LAotCTB4ODAwMDA1NDAsIDB4MDQwMDA3ZTcsIDB4ODIwMDBjODAsIDB4MDAwMDAwMDIsCi0JMHgwNDAwMTAxMSwgMHg1ODM4MDAwMSwgMHg4MDAwNzU0MCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDU4MzgwMjA0LCAweDgyMDAwNTAwLCAweDAwMDAwMDBmLAotCTB4ODIwMDA0MDAsIDB4MDAxMDExMGQsIDB4NTAwMDQwMDAsIDB4NDAwNDAwMDAsCi0JMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg4MjA0MGM4MCwgMHgwMDAwMDAwNSwKLQkweDA0MDIxN2YxLCAweDgwMjA0NDAwLCAweDUwMjAwMDAwLCAweDgwMzg3YzAwLAotCTB4NTgzYzI4MDAsIDB4NTgzYzIwMDEsIDB4NTgzYzEwMDIsIDB4NTkyYzBhMDcsCi0JMHg1OTJjNGMwOCwgMHg1OTJjMzAwZCwgMHg1OTMwMzgwNywgMHg0OTdhNjAxMiwKLQkweDQ5N2E2MDEzLCAweDQ4MTY2MDBlLCAweDQ4MTI2MDBmLCAweDQ4MGE2MDEwLAotCTB4NDgxYTYwMTEsIDB4ODAwNDA4NDAsIDB4NDgwNjYwMGQsIDB4MDIwMDAwMDAsCi0JMHgwMDAyMDBjNywgMHg4MDIwNDAwMCwgMHg1MDIwMTgwMCwgMHg4MDBjMTljMCwKLQkweDA0MDIwMDBjLCAweDU4MzgwMDAxLCAweDgwMDA3NTQwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTgzODAyMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMGYsCi0JMHg4MjAwMDQwMCwgMHgwMDEwMTEwZCwgMHg1MDAwNDAwMCwgMHg1MDIwMTgwMCwKLQkweDQ4M2E2MDBiLCAweDQ4MGU2MDBhLCAweDQ4MjI2MDBjLCAweDAyMDFmMDAwLAotCTB4MDAwMjAwYzcsIDB4NDgwM2M4NTYsIDB4NTkyYzAyMDgsIDB4OGMwMDA1MWUsCi0JMHgwNDAyMDAxNywgMHg1MDIwMDAwMCwgMHg4MDMwNmMwMCwgMHg0MDI0MDAwMCwKLQkweDBjMDFmMDAxLCAweDAwMTAwZTkxLCAweDAwMTAwZTkxLCAweDAwMTAwZTlhLAotCTB4MDAxMDBlOTEsIDB4MDAxMDBlOTEsIDB4MDAxMDBlOTEsIDB4MDAxMDBlOTEsCi0JMHgwMDEwMGU5MSwgMHgwMDEwMGU5YSwgMHgwMDEwMGU5MSwgMHgwMDEwMGU5YSwKLQkweDAwMTAwZTkxLCAweDAwMTAwZTkxLCAweDAwMTAwZTlhLCAweDAwMTAwZTkxLAotCTB4MDAxMDBlOTEsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4ODQwMDA1MWUsCi0JMHg0ODAyNWEwOCwgMHg1MDIwMDAwMCwgMHg4MDMwNmMwMCwgMHg1ODM0MzgwMSwKLQkweDQ4MWU2MDBmLCAweDA0MDFmMDA3LCAweDU4MzQxODAyLCAweDU4MzQyODAwLAotCTB4NTgzNDM4MDEsIDB4NDgwZTYwMTAsIDB4NDgxNjYwMGUsIDB4NDgxZTYwMGYsCi0JMHgwNDAxZjI0YiwgMHg0OTMzYzg1NywgMHg1OTMxZjgwOCwgMHg1OTMwMGEwNiwKLQkweDgwMDQwOWMwLCAweDA0MDAwMDA1LCAweDgwMDQwOTA2LCAweDA0MDIwMDAyLAotCTB4ODAwNDA4MDAsIDB4NDgwNWZjMDYsIDB4NGEwMjYyMDYsIDB4MDAwMDAwMDIsCi0JMHg1OTJjMDQwOSwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwOCwgMHgwNDAwMDAwYiwKLQkweDA0MDFmODM0LCAweDU5MzAwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDA0LAotCTB4MDQwMjAwMDUsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDgsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDhkOCwgMHgxYzAxZjAwMCwgMHg0Y2ZjMDAwMCwgMHg1OGZjMDIwNCwKLQkweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAwNTgwLCAweDAwMDAwMDQ4LAotCTB4MDQwMjAwMGMsIDB4NThmYzAwMGIsIDB4ODAwMDAxYzAsIDB4MDQwMDAwMDksCi0JMHg1OGZjMDQwNywgMHg4MDAwMDFjMCwgMHgwNDAwMDAwNiwgMHg1OGZjMDgwYiwKLQkweDhjMDQwZDE2LCAweDA0MDAwMDE3LCAweDU4ZmMwMDA3LCAweDA0MDFmMDBhLAotCTB4NThmYzA0MDgsIDB4OGMwMDA1MTIsIDB4MDQwMjAwMTQsIDB4NThmYzBjMDksCi0JMHg4YzA0MGQxNiwgMHgwNDAyMDAwMywgMHg1YzAxZjgwMCwgMHgxYzAxZjAwMCwKLQkweDU4ZmMwMDBhLCAweDU5MzAwODExLCAweDgwMDQwNTgwLCAweDA0MDIwMDA5LAotCTB4NTkzMDAwMDcsIDB4ODQwMDA1MDAsIDB4NDgwMjYwMDcsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDA0OCwgMHg1YzAxZjgwMCwgMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwKLQkweDVjMDFmODAwLCAweDFjMDFmMDAwLCAweDU4ZmRmODA5LCAweDA0MDFmN2VjLAotCTB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsIDB4NDkzM2M4NTcsCi0JMHg1OWI4MDhlYSwgMHg4MjA0MGQwMCwgMHgwMDAwMDAwNywgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAwLCAweDA0MDAwMDFlLCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMDAwMWIsIDB4NTkzMDA0MDYsIDB4NGMwMDAwMDAsIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwMCwgMHg0MjAwMzAwMCwgMHgwMDAwMDA0MSwgMHg0MjAwMDAwMCwKLQkweDUwMDAwMDAwLCAweDQxMzAwODAwLCAweDRjMTgwMDAwLCAweDA0MDFmY2UzLAotCTB4NWMwMDMwMDAsIDB4MDQwMDAwMGIsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMWUsCi0JMHg4MDAwMDA0MCwgMHgwNDAyMDdmZiwgMHg4MDE4MzA0MCwgMHgwNDAyMDdmNCwKLQkweDQyMDAwMDAwLCAweDQwMDAwMDAwLCAweDQxMzAwODAwLCAweDA0MDFmY2Q3LAotCTB4NWMwMDAwMDAsIDB4NDgwMjY0MDYsIDB4MWMwMWYwMDAsIDB4NTkzMDAwMDcsCi0JMHg4NDAwMDUwMCwgMHg0ODAyNjAwNywgMHgwNDAxZjdmYywgMHg1OWMwMDAwNywKLQkweDRhMDM4MDA2LCAweDMwMDAwMDAwLCAweDQwMDAwMDAwLCAweDU5YzAwMDA3LAotCTB4OGMwMDA1MGEsIDB4MDQwMjA3ZmUsIDB4MWMwMWYwMDAsIDB4NWMwMDAwMDAsCi0JMHg0YzAwMDAwMCwgMHg0ODAzYzg1NywgMHg0ZGMwMDAwMCwgMHg0YTAzNzBlOCwKLQkweDAwMDAwMDAwLCAweDQyMDM4MDAwLCAweDAwMDA3NzIwLCAweDA0MDFmZmYwLAotCTB4NDIwMzgwMDAsIDB4MDAwMDc3MDAsIDB4MDQwMWZmZWQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGUwZCwgMHgwNDAyMDAxMywgMHg0YTAzODg5MSwgMHgwMDAwZmZmZiwKLQkweDQ5N2I4ODgwLCAweDQ5N2I4ODkyLCAweDQyMDAxMDAwLCAweDAwMDAwMTkwLAotCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4ODAwODEwNDAsIDB4MDQwMjA3ZmQsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjZhNSwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDA0MDFmODBlLCAweDVjMDM4MDAwLCAweDAyMDFmMDAwLCAweDAwMTA0ZjI5LAotCTB4MDQwMWY4MmQsIDB4NDIwMDAwMDAsIDB4MDAxMGI2YTYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHgwNDAxZjgwNSwgMHg0ODE3ODg5MiwgMHg0ODBiODg4MCwKLQkweDVjMDM4MDAwLCAweDFjMDFmMDAwLCAweDQ5NmZjODU3LCAweDgzNmMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMGIsIDB4NGMwODAwMDAsIDB4NGMwYzAwMDAsCi0JMHg0MjAwMTAwMCwgMHgwMDAwODA0OCwgMHg0MjAwMTgwMCwgMHgwMDAwZmZmZiwKLQkweDAyMDFmODAwLCAweDAwMTAzODU3LCAweDVjMDAxODAwLCAweDVjMDAxMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwM2MsIDB4MDIwMWY4MDAsIDB4MDAxMDEzOTUsCi0JMHg1OWE4MDA2YywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwNiwgMHg1OWE4MTA2ZCwKLQkweDgwMDgxMWMwLCAweDA0MDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTAxYjBhLAotCTB4NGEwMzg4OTEsIDB4MDAwMGZmZmYsIDB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDlkYiwgMHg0YTAzNzBlOCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDVjMDAwMDAwLCAweDRjMDAwMDAwLCAweDQ4MDNjODU3LAotCTB4NTljNDEwODAsIDB4NDk3Yjg4ODAsIDB4NTljNDI4OTIsIDB4NDk3Yjg4OTIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAyMDAwMiwgMHgxYzAxZjAwMCwKLQkweDQyMDAyMDAwLCAweDAwMDAwMjYwLCAweDU5YzQxOGE0LCAweDgyMGMxZDAwLAotCTB4MDAwMDAwMGYsIDB4ODIwYzA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMDAwMTAsCi0JMHg1OWM0MTgwNSwgMHg4MjBjMWQwMCwgMHgwMDAwMDAwMSwgMHgwNDAyMDAwZSwKLQkweDU5YzQxOGE0LCAweDgyMGMxZDAwLCAweDAwMDAwMDBmLCAweDgyMGMwNDgwLAotCTB4MDAwMDAwMDcsIDB4MDQwMDEwMDQsIDB4ODIwYzA0ODAsIDB4MDAwMDAwMGMsCi0JMHgwNDAwMTAwMywgMHg4MDEwMjA0MCwgMHgwNDAyMDdlYywgMHg0OTdiODg5MSwKLQkweDFjMDFmMDAwLCAweDRjMTAwMDAwLCAweDQyMDAyMDAwLCAweDAwMDAwMDE5LAotCTB4NDYwMDAwMDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YTQsCi0JMHg1MDAwMTgwMCwgMHg4MjBjMWQwMCwgMHgwMDAwMDAwMSwgMHgwNDAwMDAwNSwKLQkweDgwMTAyMDQwLCAweDA0MDIwN2Y3LCAweDVjMDAyMDAwLCAweDA0MDFmN2YwLAotCTB4NWMwMDIwMDAsIDB4MDQwMWY3ZWMsIDB4NDgwM2M4NTYsIDB4MWMwMWYwMDAsCi0JMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwgMHg1OTJjMGEwNCwgMHg0ODA3Yzg1NywKLQkweDgyMDQwZDAwLCAweDAwMDAwMGZmLCAweDgyMDQwNTAwLCAweDAwMDAwMDBmLAotCTB4MGMwMWYwMDEsIDB4MDAxMDBmYjUsIDB4MDAxMDBmYjUsIDB4MDAxMDBmYjUsCi0JMHgwMDEwMGZjZCwgMHgwMDEwMGZiNSwgMHgwMDEwMGZiNSwgMHgwMDEwMGZiNSwKLQkweDAwMTAwZmI1LCAweDAwMTAwZmI1LCAweDAwMTAwZmNkLCAweDAwMTAwZmI1LAotCTB4MDAxMDBmYjcsIDB4MDAxMDBmYjUsIDB4MDAxMDBmYjUsIDB4MDAxMDBmYjUsCi0JMHgwMDEwMGZiNSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDNiLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU5MmMwMjBhLAotCTB4OGMwMDA1MDAsIDB4MDQwMDAwNWYsIDB4NTkyYzFhMDcsIDB4ODIwNDA1MDAsCi0JMHgwMDAwMDAwZiwgMHg4MjAwMDQwMCwgMHgwMDEwMTEwZCwgMHg1MDAwMTAwMCwKLQkweDUwMDgwMDAwLCAweDU5MzAyMDEzLCAweDQ4MDI2MDBhLCAweDQ5MmU2MDBiLAotCTB4NDgwYTYwMGMsIDB4NDgwZTYwMGQsIDB4NDgxMjYwMTIsIDB4NWMwMjU4MDAsCi0JMHgxYzAxZjAwMCwgMHg4MjA0MDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDQwMCwKLQkweDAwMTAxMTBkLCAweDUwMDAxMDAwLCAweDUwMDgwMDAwLCAweDU5MmMxYTA3LAotCTB4NDgwMjYwMGEsIDB4NDkyZTYwMGIsIDB4NDgwYTYwMGMsIDB4NDgwZTYwMGQsCi0JMHg0OTdhNjAxMiwgMHgwNDAxZjdmMiwgMHg4YzA0MGQwMCwgMHgwNDAyMDA0MSwKLQkweDgyMDQwZDAwLCAweDAwMDAwMDgwLCAweDA0MDAwMDNlLCAweDAyMDFmMDAwLAotCTB4MDAwMjAwZDAsIDB4NTkzMDAwMTMsIDB4NTkzMDEwMTIsIDB4ODAwODA1ODAsCi0JMHgwNDAyMDAwYywgMHg0MjAwNzgwMCwgMHg4MDAwMDAwNSwgMHg1OTJjMTIwOCwKLQkweDgyMDgwNTAwLCAweGZmZmY3ZmZmLCAweDQ4MDI1YTA4LCAweDhjMDgxNTFlLAotCTB4MDQwMjAwMmQsIDB4ODIzYzdkNDAsIDB4MDAwMDAwMjAsIDB4MDQwMWYwMmEsCi0JMHg0ODBiYzg1NywgMHg0MjAwMDAwMCwgMHgwMDEwYjY0ZiwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDU5MzAwNDE0LCAweDQ4MDNjODU3LCAweDhjMDAwNTE0LAotCTB4MDQwMjAwMDcsIDB4NTk5YzE4MTksIDB4OGMwYzFkMTIsIDB4MDQwMjAwMDQsCi0JMHg4MjBjMWQ0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAxZCwgMHg1OTMwMjAxMywKLQkweDA0MDFmOTJkLCAweDA0MDIwMDFhLCAweDQyMDA3ODAwLCAweDgwMDAwMDA1LAotCTB4NTkzMDUwMGQsIDB4NTkyYzAyMDgsIDB4NDgwM2M4NTcsIDB4OGMwMDA1MWUsCi0JMHgwNDAyMDAwNSwgMHg4MjNjN2Q0MCwgMHgwMDAwMDAyMCwgMHg1OTMwNDAwYywKLQkweDA0MDFmMDA0LCAweDg0MDAwNTFlLCAweDQ4MDI1YTA4LCAweDA0MDFmOGRjLAotCTB4NTAyMDE4MDAsIDB4NDgwZTYwMGEsIDB4NDgzMjYwMGIsIDB4NDgyMjYwMGMsCi0JMHg0ODJhNjAwZCwgMHg0ODBmYzg1NywgMHg0ODMzYzg1NywgMHg0ODIzYzg1NywKLQkweDQ4MmJjODU3LCAweDgwMDAwNTgwLCAweDQ4M2U2MDA0LCAweDFjMDFmMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDkzM2M4NTcsIDB4NGQyYzAwMDAsCi0JMHg1OTkwMDAwNCwgMHg4MTMwMDU4MCwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4NTkzMjU4MDgsIDB4NGQzYzAwMDAsIDB4NGQ0MDAwMDAsIDB4NTkzMDAwMDQsCi0JMHg0ODAzYzg1NywgMHg0YzAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNmIxMywKLQkweDAyMDFmODAwLCAweDAwMTA2OGMxLCAweDVjMDAwMDAwLCAweDhjMDAwNTE2LAotCTB4MDQwMDAwMTAsIDB4NTkyYzAwMGYsIDB4NDgwM2M4NTcsIDB4NDgwMjU4MDcsCi0JMHg0MTc4MDgwMCwgMHg0MjAyODAwMCwgMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0YmVlLCAweDRhMDI1YzA2LCAweDAwMDBmZmZmLCAweDAyMDFmODAwLAotCTB4MDAwMjAzODEsIDB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsIDB4MDQwMWYwMTUsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMiwgMHg1OTJjMDIwOCwgMHg4NDAwMDU0ZSwKLQkweDQ4MDI1YTA4LCAweDU5MzAwNDA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDA2LAotCTB4MDQwMjAwMDksIDB4ODExODAwY2EsIDB4ODFjODBjMDAsIDB4NTgwNDA5MzksCi0JMHg1OTJjMDAwZCwgMHg4MDA0MDQ4MCwgMHg1OTJjMDgwZiwgMHg4MDA0MDQ4MCwKLQkweDQ4MDI1ODBiLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTA4OTk3LAotCTB4NWMwMjgwMDAsIDB4NWMwMjc4MDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg0ZDJjMDAwMCwgMHg1OTkwMDAwNCwgMHg4MTMwMDU4MCwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMjU4MDgsIDB4NTkyYzAyMDgsCi0JMHg4NDAwMDU0MCwgMHg0ODAyNWEwOCwgMHgwNDAxZjdiZiwgMHg0OTFiYzg1NywKLQkweDQ5ZDNjODU3LCAweDRkZDAwMDAwLCAweDQxNzgwODAwLCAweDgwMDdhMGNhLAotCTB4ODNkM2E0MDAsIDB4MDAwMDc2MDAsIDB4NGEwM2EwMDUsIDB4ODAwMDAwMDIsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMTAwMCwgMHg1MDAwMDAwMCwgMHg4MjAwMDQ4MCwKLQkweDI0MjIwMDAxLCAweDA0MDIwMDI5LCAweDU5ZDAxMDA2LCAweDgyMDgwNTAwLAotCTB4MDAwMDYwMDAsIDB4ODIwMDA1ODAsIDB4MDAwMDYwMDAsIDB4MDQwMDAwMzEsCi0JMHg4MjA4MDUwMCwgMHg0MDAwODAwMCwgMHgwNDAwMDdmOCwgMHg4MDA0MDljMCwKLQkweDA0MDIwMDJjLCAweDgxMWEzMWMwLCAweDA0MDAwMDJhLCAweDQyMDAwMDAwLAotCTB4MDAwMDEwMDIsIDB4NTAwMDEwMDAsIDB4NDYwMDAwMDAsIDB4MDAwMDA1MTIsCi0JMHg0MjAwMTgwMCwgMHgwMDAwMDAwYSwgMHg1OWUwMDAwMCwgMHg4YzAwMDUxYSwKLQkweDA0MDIwN2ZjLCAweDgwMGMxODQwLCAweDA0MDIwN2ZjLCAweDQyMDAwMDAwLAotCTB4MDAwMDEwMDIsIDB4NDYwMDAwMDAsIDB4MDAwMDA1MTQsIDB4NDIwMDE4MDAsCi0JMHgwMDAwMDAwYSwgMHg1OWUwMDAwMCwgMHg4YzAwMDUzYSwgMHgwNDAyMDdmYywKLQkweDgwMGMxODQwLCAweDA0MDIwN2ZjLCAweDQyMDAwMDAwLCAweDAwMDAxMDAyLAotCTB4NDQwODAwMDAsIDB4MDQwMWYwMGYsIDB4MDIwMDQ4MDAsIDB4MDAwMjA3YzgsCi0JMHg1OWQwMTAwNiwgMHg4MjA4MDUwMCwgMHgwMDAwNjAwMCwgMHg4MjAwMDU4MCwKLQkweDAwMDA2MDAwLCAweDA0MDAwMDA3LCAweDhjMDgxNTFlLCAweDA0MDAwN2Y3LAotCTB4NTlkMDEwMDYsIDB4ODIwODA1MDAsIDB4MDAwMDYwMDAsIDB4MDQwMjA3ZjMsCi0JMHg4M2QzYTQwMCwgMHgwMDAwMDAyMCwgMHg4MDA0MDgwMCwgMHg4MjA0MDQ4MCwKLQkweDAwMDAwMDA1LCAweDA0MDAxN2JkLCAweDVjMDNhMDAwLCAweDFjMDFmMDAwLAotCTB4NDkxYmM4NTcsIDB4NDlkM2M4NTcsIDB4NGRkMDAwMDAsIDB4NDE3ODA4MDAsCi0JMHg4MDA3YTBjYSwgMHg4M2QzYTQwMCwgMHgwMDAwNzYwMCwgMHg0YTAzYTAwNSwKLQkweDgwMDAwMDAxLCAweDU5ZDAwMDA2LCAweDgzZDNhNDAwLCAweDAwMDAwMDIwLAotCTB4ODAwNDA4MDAsIDB4ODIwNDA0ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDE3ZjgsCi0JMHg1YzAzYTAwMCwgMHgxYzAxZjAwMCwgMHg1OWQwMDAwNiwgMHg4YzAwMDUzZSwKLQkweDA0MDAwMDFlLCAweDU5OTAyODA0LCAweDQ4MTdjODU3LCAweDgwMTQyOWMwLAotCTB4MDQwMDAwMTMsIDB4NTk5MDAwMGEsIDB4NTk5MDA4MGIsIDB4NTk5MDEwMGMsCi0JMHg1OTkwMTgwZCwgMHg0ODAwMjgwYSwgMHg0ODA0MjgwYiwgMHg0ODA4MjgwYywKLQkweDQ4MGMyODBkLCAweDU5ZDAwMDAwLCAweDU5ZDAwODAxLCAweDU5ZDAxMDAyLAotCTB4NTlkMDE4MDMsIDB4NTlkMDIwMDQsIDB4NDgwMDI4MGUsIDB4NDgwNDI4MGYsCi0JMHg0ODA4MjgxMCwgMHg0ODBjMjgxMSwgMHg0ODEwMjgxMiwgMHg1OTkwMDAwNiwKLQkweDgyMDAwNTAwLCAweGZmZmYwMDAwLCAweDQ4MDMyMDA2LCAweDRhMDNhMDA1LAotCTB4MzAwMDAwMDAsIDB4NTlkMDAwMDYsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg4MDIwNDAwMCwgMHg1MDIwMDAwMCwgMHg4MDAwMDU0MCwgMHgwNDAwMDAwMywKLQkweDgwMjg1MDQwLCAweDFjMDFmMDAwLCAweDU4MzAwMDAxLCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMGUsIDB4NDgwMjYwMGIsIDB4NDAwMDYwMDAsIDB4NTgzMDAyMDQsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDQwMCwgMHgwMDEwMTEwZCwKLQkweDUwMDA0MDAwLCAweDgwMjA0MWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4ODAyODUwNDAsIDB4MWMwMWYwMDAsIDB4NDAwMDUwMDAsIDB4MWMwMWYwMDAsCi0JMHgwMDAwMDAwNSwgMHgwMDAwMDAwOCwgMHgwMDAwMDAwYiwgMHgwMDAwMDAwZSwKLQkweDAwMDAwMDExLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDBiLAotCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAxMDExMDgsCi0JMHgwMDEwMTEwNywgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLQkweDAwMDAwMDAwLCAweDAwMTAxMTA4LCAweDAwMTAxMTA3LCAweDAwMTAxMTA0LAotCTB4MDAxMDExMDgsIDB4MDAxMDExMDcsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDEwMTEwOCwKLQkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotCTB4MDAwMDAwMDAsIDB4MDAxMDExMDgsIDB4MDAxMDExMDgsIDB4MDAxMDExMDgsCi0JMHgwMDAwMDAwMCwgMHgwMDEwMTEwOCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLQkweDAwMDAwMDAwLCAweDQ4MTNjODU3LCAweDQ5MmZjODU3LCAweDQ5MzNjODU3LAotCTB4NDgxMjYwMTIsIDB4NTkyYzUyMDcsIDB4ODAyODUxYzAsIDB4MDQwMDAwNGEsCi0JMHg0MTJjNjAwMCwgMHgwNDAxZjg0YiwgMHgwNDAwMDAwOSwgMHg4MjI0MDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDIwMDAzLCAweDU4MzAwMDBkLCAweDgwMTAyNDgwLAotCTB4NTAyMDAwMDAsIDB4ODAwMDQ1NDAsIDB4MDQwMDAwM2YsIDB4NTAyMDAwMDAsCi0JMHg4MDAwMDU0MCwgMHgwNDAwMDAwYiwgMHg4MDMwMTQwMCwgMHg1ODA4MDAwMiwKLQkweDgwMTAyNDgwLCAweDA0MDAxMDFlLCAweDgwMTAyMWMwLCAweDA0MDAwMDA5LAotCTB4ODAyODUwNDAsIDB4MDQwMDAwMzQsIDB4ODAyMDQwMDAsIDB4MDQwMWY3ZjQsCi0JMHg1ODMwMDAwMSwgMHg4MDAwNjU0MCwgMHgwNDAwMDAyZiwgMHgwNDAxZjdlNiwKLQkweDgwMjg1MDQwLCAweDA0MDAwMDJjLCAweDgwMjA0MDAwLCAweDUwMjAwMDAwLAotCTB4ODAwMDA1NDAsIDB4MDQwMjAwMGEsIDB4NTgzMDAwMDEsIDB4ODAwMDY1NDAsCi0JMHgwNDAwMDAyNSwgMHg1ODMwMDIwNCwgMHg4MjAwNGQwMCwgMHgwMDAwMDAwZiwKLQkweDgyMjQ0NDAwLCAweDAwMTAxMTBkLCAweDUwMjA0MDAwLCAweDU5MmMwMjA4LAotCTB4ODQwMDA1MWUsIDB4NDgwMjVhMDgsIDB4MDQwMWYwMTMsIDB4ODAxMDIwODAsCi0JMHg4MDEwMjAwMCwgMHg0ODEyNjAxMCwgMHg0ODEzYzg1NywgMHg1ODA4MDgwMiwKLQkweDQwMTAwMDAwLCAweDgwMDQyNDgwLCAweDAyMDAxODAwLCAweDAwMTAwNjE1LAotCTB4NTgwODAwMDAsIDB4NTgwODE4MDEsIDB4ODAxMDI0MDAsIDB4NDgxMjYwMGUsCi0JMHg0ODBlNjAwZiwgMHg0ODEzYzg1NywgMHg1OTJjMDIwOCwgMHg4NDAwMDU1ZSwKLQkweDQ4MDI1YTA4LCAweDQ4MzNjODU3LCAweDQ4MjNjODU3LCAweDQ4MmJjODU3LAotCTB4NDgzMjYwMGIsIDB4NDgyMjYwMGMsIDB4NDgyYTYwMGQsIDB4ODAwMDA1ODAsCi0JMHgwNDAxZjAwMywgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDU4MzAwMjA0LCAweDgyMDA0ZDAwLCAweDAwMDAwMDBmLCAweDgyMjQ0NDAwLAotCTB4MDAxMDExMGQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAyOSwgMHgwNDAyMDAxYiwgMHg1MDIwNDAwMCwgMHg1OTJjMDQwOSwKLQkweDgwMDAwNTQwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDgyMDAwYzgwLAotCTB4MDAwMDAwMDIsIDB4MDQwMDEwMTEsIDB4NTgzMDAwMDEsIDB4ODAwMDY1NDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1ODMwMDIwNCwgMHg4MjAwMDUwMCwKLQkweDAwMDAwMDBmLCAweDgyMDAwNDAwLCAweDAwMTAxMTBkLCAweDUwMDA0MDAwLAotCTB4NDAwNDAwMDAsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMDYsIDB4ODIwNDBjODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAyMTdmMSwgMHg4MDIwNDQwMCwgMHg4MDAwMDU4MCwKLQkweDFjMDFmMDAwLCAweDU5ZTAwMDA0LCAweDhjMDAwNTBlLCAweDAyMDIwMDAwLAotCTB4MDAxMDA5NTEsIDB4MWMwMWYwMDAsIDB4NGM1YzAwMDAsIDB4NTllNGI4MDAsCi0JMHg0ODVmYzg1NywgMHg4MjVjMDUwMCwgMHgwMDAwMDAxZiwgMHgwNDAwMDAwNCwKLQkweDU5ZTQwODYyLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDgyNWMwNTAwLAotCTB4MDAwMDAwZTAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4OGM1Y2JkMGUsCi0JMHgwNDAyMDgwNywgMHg4YzVjYmQwYywgMHgwNDAyMDgwOSwgMHg4YzVjYmQwYSwKLQkweDA0MDIwODc4LCAweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGEwM2M4MDAsIDB4MDAwMDAwODAsIDB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsCi0JMHg0MjAwNzgwMCwgMHgwMDEwYjZlYiwgMHg1ODNjMDAwMSwgMHg1ODNjMDgwMiwKLQkweDgwMDQwNTQwLCAweDA0MDAwMDNmLCAweDQyMDAwODAwLCAweDAwMTBiNWY1LAotCTB4NTAwNjU4MDAsIDB4NTkyYzAwMDIsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDAsCi0JMHgwNDAwMDAwZSwgMHg1OWU0MDg1MCwgMHg1OWU0MTg1MywgMHg0MDBjMDAwMCwKLQkweDgwMDQwNDAwLCAweDU5ZTQwODUyLCAweDQ4MDdjODU3LCAweDgwMDQxNDgwLAotCTB4MDQwMjEwMDgsIDB4NDAwMDEwMDAsIDB4NDgwYmM4NTcsIDB4NGEwMDc4MDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwNiwgMHg0ODAzYzg1NywgMHgwNDAxZjAyOSwKLQkweDU5ZTQxMDUwLCAweDQ4MGJjODU3LCAweDQ5Nzg3ODAwLCAweDQ4MGJjODU3LAotCTB4NDgwZmM4NTcsIDB4NTkyYzAwMDMsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMDYsCi0JMHg4MDA4MDU4MCwgMHgwNDAyMDAwNCwgMHg1OTJjMDAwMywgMHg0ODAzYzg1NywKLQkweDQ4MGJjODU3LCAweDQ4MGE1ODAzLCAweDU5MmMwMDA3LCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMDcsIDB4NTkyYzEwMDcsIDB4NDgwYmM4NTcsIDB4NTgzYzAwMDMsCi0JMHg0ODAzYzg1NywgMHg4MDA4MDQ4MCwgMHgwNDAwMTAwMywgMHg1ODNjMTAwMSwKLQkweDQ4MGJjODU3LCAweDU4M2MwODAyLCAweDQ4MGJjODU3LCAweDQ4MDdjODU3LAotCTB4NGEwMjU4MDEsIDB4MDAwMDAwMDAsIDB4NGEwMjU4MDksIDB4MDAxMDEyMGMsCi0JMHg0ODBhNTgwNywgMHg0ODA2NTgwOCwgMHg1OWU0MDA1MywgMHg0ODAyNTgwNCwKLQkweDQxMmMxMDAwLCAweDQ5MmZjODU3LCAweDAyMDFmODAwLCAweDAwMTAwOGExLAotCTB4NWMwMjU4MDAsIDB4NGEwM2M4MDAsIDB4MDAwMDAwNDAsIDB4MWMwMWYwMDAsCi0JMHg0MjAwNzgwMCwgMHgwMDEwYjVmNSwgMHg1MDNjNzgwMCwgMHg0YTAwNzgwMiwKLQkweDAwMDAwMTAwLCAweDQyMDA3ODAwLCAweDAwMTBiNmViLCAweDU4M2MwMDAwLAotCTB4NDgwM2M4NTcsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDEsIDB4MDQwMDAwMDQsCi0JMHg4MDAwMDAwMCwgMHg0ODAwNzgwMCwgMHgwNDAxZjAxOSwgMHg0OTc4NzgwMCwKLQkweDU4M2MxODA2LCAweDU4M2MwMDA1LCAweDgwMGMxODAwLCAweDQ4MGM3ODA2LAotCTB4ODAwYzA1ODAsIDB4MDQwMjAwMDIsIDB4NDk3ODc4MDYsIDB4NTgzYzA4MDcsCi0JMHg4MDA0MDljMCwgMHgwNDAwMDAwZSwgMHg1ODNjMDAwOCwgMHg4MDAwMDAwMCwKLQkweDQ4MDA3ODA4LCAweDgwMDQwNTgwLCAweDA0MDIwMDA5LCAweDQ5Nzg3ODA4LAotCTB4NTgzYzIwMDYsIDB4NDIwMDE4MDAsIDB4MDAwMDAwMDEsIDB4NDIwMDEwMDAsCi0JMHgwMDAwODAyOCwgMHgwMjAxZjgwMCwgMHgwMDEwMzg1NywgMHgxYzAxZjAwMCwKLQkweDRhMDNjODAwLCAweDAwMDAwMDIwLCAweDAyMDFmODAwLCAweDAwMTBhODY3LAotCTB4NTllNDAwMDAsIDB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsIDB4NGEwMDcwMDEsCi0JMHgwMDAwMDAwMCwgMHg4MjA0MGQwMCwgMHg0MzAwMGY4MCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDU4MzgwMDA5LCAweDQ4MDNjMDBmLCAweDAyMDFmODAwLAotCTB4MDAxMDkxY2IsIDB4NTgzYTU4MDgsIDB4NTkyYzAwMDAsIDB4NDgwMDcwMDgsCi0JMHg4MDAwMDFjMCwgMHgwNDAyMDAwMiwgMHg0OTc4NzAwNywgMHgwMjAxZjgwMCwKLQkweDAwMTAwODNhLCAweDVjMDI1ODAwLCAweDAyMDFmMDAwLCAweDAwMTAwOGM2LAotCTB4NDgwM2M4NTYsIDB4NGMzYzAwMDAsIDB4NGQyYzAwMDAsIDB4NGQzMDAwMDAsCi0JMHg1ODMwMDAwYSwgMHg4MDAyNWQ0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MmU2MDA4LCAweDRjMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA5MWUzLAotCTB4NWMwMDYwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTgzMDAwMDIsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDEwMCwgMHgwNDAyMDAxMCwgMHg1OTMwNzgwYiwKLQkweDU4M2MwMDAxLCAweDgwMDAwNTQwLCAweDA0MDAwMDBlLCAweDQ4MDI2MDBiLAotCTB4NDAwMDc4MDAsIDB4ODIwMDA0MDAsIDB4MDAwMDAwMDIsIDB4NDgwMDYwMDMsCi0JMHg1ODNjMDAwMCwgMHg0ODAwNjAwNCwgMHg0MDMwMTAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwOGExLCAweDA0MDFmMDBjLCAweDRhMDI1YTA2LCAweDAwMDAwMDAyLAotCTB4NGMzMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4NWMwMDYwMDAsCi0JMHg0MDMyNTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgzYSwgMHgwMjAxZjgwMCwKLQkweDAwMDIwOGI0LCAweDVjMDI2MDAwLCAweDVjMDI1ODAwLCAweDVjMDA3ODAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGQyYzAwMDAsIDB4NGQzMDAwMDAsCi0JMHg0MjAwNzAwMCwgMHgwMDEwYjVmNiwgMHg1ODM4MDgwMSwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDIwMDExLCAweDU4Mzg2MDAyLCAweDU4MzAwMDBhLAotCTB4ODEyYzA1ODAsIDB4MDQwMjAwMGQsIDB4NTllMDAwMDQsIDB4OGMwMDA1MGUsCi0JMHgwNDAwMDdmZSwgMHg1OWRjMDAwNiwgMHg0ODAzYzg1NywgMHg0YTAzYjgwNSwKLQkweDIwMDAwMDAwLCAweDhjMDAwNTNlLCAweDA0MDAwN2Y4LCAweDRhMDA3MDAxLAotCTB4MDAwMDAwMDAsIDB4MDQwMWYwMTksIDB4NTgzODYwMDYsIDB4NDAzMDUwMDAsCi0JMHg4MDMwNjFjMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1ODMwMDAwYSwKLQkweDgxMmMwNTgwLCAweDA0MDAwMDA0LCAweDQwMzA1MDAwLCAweDU4MzA2MDAwLAotCTB4MDQwMWY3ZjgsIDB4NDAyODAwMDAsIDB4ODAzMDA1ODAsIDB4NTgzMDAwMDAsCi0JMHgwNDAwMDAwNiwgMHg0ODAwNTAwMCwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwNywKLQkweDQ4Mjg3MDA1LCAweDA0MDFmMDA1LCAweDgwMDAwMWMwLCAweDA0MDIwMDAyLAotCTB4NDgwMDcwMDUsIDB4NDgwMDcwMDYsIDB4NDAzMjU4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDgzYSwgMHg0MjAwNzAwMCwgMHgwMDEwYjVmNiwgMHg1ODM4MDAwMSwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDAyMDAwODAwLCAweDAwMTAwOGM2LAotCTB4NWMwMjYwMDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAzYywgMHg0ODA3OTAwMCwgMHg1OWM4MDAwMCwKLQkweDgwMDQwNTAwLCAweDA0MDIwN2ZlLCAweDQ5N2I5MDA1LCAweDRhMDM5MDM1LAotCTB4MDA4ODAyMDAsIDB4NTlhODAwMGUsIDB4ODAwMDAwZTAsIDB4NDgwMzkwMGUsCi0JMHg0YTAzOTAxMSwgMHgwMDAwMDAyNCwgMHg0YTAzOTAwZiwgMHgwMDEwY2ZjMCwKLQkweDRhMDM5MDEwLCAweDAwMTBjZmMwLCAweDRhMDM5MDE1LCAweDAwMDAwMDdmLAotCTB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsIDB4NGEwMzkwMDAsIDB4MDAwMDE2MDAsCi0JMHgxYzAxZjAwMCwgMHg1OWM4MDAwNywgMHg4YzAwMDUwOCwgMHgwNDAyMDhiNywKLQkweDU5YzgwODAwLCAweDhjMDQwZDE2LCAweDA0MDIwMDA0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMDYsIDB4MGMwMWYwMDUsIDB4NDgwN2M4NTcsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwZSwgMHgwYzAxZjAwMSwgMHgwMDEwMTJmOCwgMHgwMDEwMTJmNiwKLQkweDAwMTA1NjdkLCAweDAwMTAxMmY2LCAweDAwMTAxMmZhLCAweDAwMTAxMmY2LAotCTB4MDAxMDEyZmEsIDB4MDAxMDEyZmEsIDB4MDAxMDEyZjYsIDB4MDAxMDEyZjYsCi0JMHgwMDEwMTJmNiwgMHgwMDEwMTJmNiwgMHgwMDEwMTJmYSwgMHgwMDEwMTJmNiwKLQkweDAwMTAxMmZhLCAweDAwMTAxMmY2LCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4NDgwM2M4NTcsIDB4MWMwMWYwMDAsIDB4NTljODA4MGMsIDB4NDgwN2M4NTcsCi0JMHg4MjA0MDUwMCwgMHgwMDAwNjAwMCwgMHgwNDAwMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODJhLCAweDA0MDFmMDA2LCAweDgyMDQwNTAwLCAweDAwN2YwMDAwLAotCTB4MDQwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMGE3ZmMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmMwNywgMHgwNDAxZjAyYiwgMHg4MjA0MDUwMCwgMHgwMDAwMDAxNCwKLQkweDA0MDAwMDE0LCAweDAyMDFmODAwLCAweDAwMTBhODU5LCAweDgzNmMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMDAwMGQsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHgwNDAwMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwM2YzNywgMHgwNDAxZjAwNywKLQkweDRhMDM1MDMzLCAweDAwMDAwMDAxLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDRkNzYsIDB4MDQwMWY4MTcsIDB4MDQwMWYwMTUsCi0JMHg4MjA0MDUwMCwgMHgwMDAwMWMwMCwgMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODM4LCAweDA0MDFmODEwLCAweDA0MDFmMDBlLCAweDgyMDQwNTAwLAotCTB4MDAwMDAxNDAsIDB4MDQwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NGIsCi0JMHgwNDAxZjgwOSwgMHgwNDAxZjAwNywgMHg4MjA0MDUwMCwgMHgwMDAwODAwMCwKLQkweDA0MDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTBhODIzLCAweDA0MDFmODAyLAotCTB4MWMwMWYwMDAsIDB4NGMwYzAwMDAsIDB4NGMxMDAwMDAsIDB4NGMxNDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGYxNywgMHg1YzAwMjgwMCwgMHg1YzAwMjAwMCwKLQkweDVjMDAxODAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDU5YTgwODA0LAotCTB4NTlhODAwMmIsIDB4ODIwMDA1MDAsIDB4ZmZmZmYwMDAsIDB4ODAwNDA1NDAsCi0JMHg0ODAzNTAyYiwgMHg1OWE4MDAyZiwgMHg4MjAwMDUwMCwgMHhmZmZmZjAwMCwKLQkweDgwMDQwNTQwLCAweDQ4MDM1MDJmLCAweDQ4MDc4ODgyLCAweDgyMDQxYzAwLAotCTB4MDAwMDAwMGYsIDB4ODAwYzE5MDgsIDB4ODIwYzFjMDAsIDB4MDAwMDAwMDQsCi0JMHg0MDBjMjAwMCwgMHg5MDEwMjljMCwgMHg4MjA0MDQ4MCwgMHgwMDAwMDFlNCwKLQkweDA0MDIxMDA1LCAweDQyMDAxMDAwLCAweDAwMDAwMDA4LCAweDgwMTAyMGM2LAotCTB4MDQwMWYwMzEsIDB4ODIwNDA0ODAsIDB4MDAwMDAyMzAsIDB4MDQwMjEwMDksCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAwNywgMHg4MDEwMDBjMiwgMHg4MDAwMDBjMiwKLQkweDgwMTAwNDAwLCAweDgwMTAwNDAwLCAweDgwMTAyNDAwLCAweDA0MDFmMDI2LAotCTB4ODIwNDA0ODAsIDB4MDAwMDAyOTgsIDB4MDQwMjEwMDgsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAwNiwgMHg4MDEwMDBjMiwgMHg4MDAwMDBjMiwgMHg4MDEwMDQwMCwKLQkweDgwMTAyNDAwLCAweDA0MDFmMDFjLCAweDgyMDQwNDgwLCAweDAwMDAwMzI4LAotCTB4MDQwMjEwMDcsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDUsIDB4ODAxMDAwYzIsCi0JMHg4MDAwMDBjMiwgMHg4MDEwMjQwMCwgMHgwNDAxZjAxMywgMHg4MjA0MDQ4MCwKLQkweDAwMDAwNDA0LCAweDA0MDIxMDA1LCAweDQyMDAxMDAwLCAweDAwMDAwMDA0LAotCTB4ODAxMDIwYzQsIDB4MDQwMWYwMGMsIDB4ODIwNDA0ODAsIDB4MDAwMDA1NmMsCi0JMHgwNDAyMTAwNiwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwMywgMHg4MDEwMDBjMiwKLQkweDgwMTAyNDAwLCAweDA0MDFmMDA0LCAweDQyMDAxMDAwLCAweDAwMDAwMDAyLAotCTB4ODAxMDIwYzIsIDB4ODIxMDA0ODAsIDB4MDAwMDAxMTAsIDB4ODAwMDAwODAsCi0JMHg4MDAwMjAwMCwgMHg4MDA4MDBkMCwgMHg4MDE0MDU0MCwgMHg4MDEwMDU0MCwKLQkweDQ4MDM5MDM1LCAweDFjMDFmMDAwLCAweDU5YzgwODE1LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MGQsIDB4ODIwNDBkMDAsIDB4MDAwMDAwN2MsIDB4NDgwNzkwMDAsCi0JMHg1OWM4MDAwMCwgMHg4MDA0MDUwMCwgMHgwNDAyMDdmZSwgMHg4YzA0MGQwNCwKLQkweDA0MDAwMDAzLCAweDU5YzgwMDM1LCAweDQ4MDM5MDM1LCAweDU5YzgwMDAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDEyMDAsIDB4NDgwMzkwMDAsIDB4MWMwMWYwMDAsCi0JMHg0ODAzYzg1NiwgMHg0OTdiODhhOSwgMHg0YTAzODgwNywgMHgwMDAwMDAwMSwKLQkweDQ5N2I4ODA3LCAweDU5YzQwMDA1LCAweDQ4MDM4ODA1LCAweDAyMDFmODAwLAotCTB4MDAxMDE4ODYsIDB4NDIwMWQwMDAsIDB4MDAwMDAxZjQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWRkMiwgMHg0OTdiODgwZSwgMHg0MjAwYjAwMCwgMHgwMDAwMDFmNCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDQyMDAwODAwLCAweDAwMDAwMDE0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMTQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywgMHg4YzA0MGQwMCwgMHgwNDAwMDAwNSwKLQkweDgwNThiMDQwLCAweDA0MDIwN2YzLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMzIsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDBiNCwgMHgwMjAxZjgwMCwgMHgwMDEwMTliMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMGI0LCAweDAyMDFmODAwLCAweDAwMTAxOWFjLAotCTB4OGMwNDBkMDAsIDB4MDQwMDAwMDUsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OWM0MDAwNSwgMHg0ODAzODgwNSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDg5LCAweDgwMDAwOGQwLCAweDQ4MDc1MDU0LAotCTB4NDgwNzUwNTUsIDB4NDgwNzUwNTYsIDB4NDIwMDA4MDAsIDB4MDAwMDAwZTAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTliMSwgMHg0MjAwMDgwMCwgMHgwMDAwMDBmNCwKLQkweDAyMDFmODAwLCAweDAwMTAxOWFjLCAweDgyMDQwNTAwLCAweGZmZmZmZmQxLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDIsIDB4NDIwMDA4MDAsIDB4MDAwMDAwZjQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTliMSwgMHg0MjAwMDgwMCwgMHgwMDAwMDBhMCwKLQkweDAyMDFmODAwLCAweDAwMTAxOWFjLCAweDgyMDQwNTQwLCAweDAwMDAwMDAxLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwYTAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywKLQkweDgyMDQwNTQwLCAweDAwMDAwMDAxLCAweDQyMDAwODAwLCAweDAwMDAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NDIwMWQwMDAsIDB4MDAwMWQ0YzAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWRkMiwgMHgwNDAxZmE0NSwgMHg0YTAzODhhNywKLQkweDAwMDBmN2Y3LCAweDRhMDM4OGEzLCAweDgwMDA0MDNjLCAweDRhMDM4OGFlLAotCTB4MDAwMDYxYTgsIDB4NGEwMzg4MDEsIDB4MDAwMzIwNjMsIDB4NGEwMzg4MTAsCi0JMHgwMDQxMDEwOCwgMHg0YTAzODgxMSwgMHgwMDUyMDYwOCwgMHg0YTAzODgxMiwKLQkweDAwNDUwMzIwLCAweDRhMDM4ODEzLCAweDAwNDQwNDA1LCAweDRhMDM4ODFjLAotCTB4MDA0MTMyZTEsIDB4NGEwMzg4NTAsIDB4ODAwMDAxMDgsIDB4NGEwMzg4NjAsCi0JMHgwMDAwMDAwOCwgMHg0YTAzODg3MCwgMHgwMDAwMDAwOCwgMHg0YTAzODg1MSwKLQkweDgwMDAwNTA4LCAweDRhMDM4ODYxLCAweDAwODAwMDAwLCAweDRhMDM4ODcxLAotCTB4MDA4MDAwMDAsIDB4NGEwMzg4NTIsIDB4ODAwMDA3MDgsIDB4NGEwMzg4NjIsCi0JMHgwMDgwMDAwMCwgMHg0YTAzODg3MiwgMHgwMDgwMDAwMCwgMHg0YTAzODg1MywKLQkweDgwMDAwNjA4LCAweDQ5N2I4ODYzLCAweDRhMDM4ODczLCAweDAwODAwMDAwLAotCTB4NGEwMzg4ODIsIDB4MDAwMDA4NDAsIDB4NGEwMzg4YTUsIDB4MDAwMDAwMWUsCi0JMHg0YTAzODhhNiwgMHgwMDAwMDAxZSwgMHg0YTAzODhiMCwgMHgwMDAwNzUzMCwKLQkweDRhMDM4ODAyLCAweDAwMDBmZmZmLCAweDRhMDM4ODA2LCAweGMwZTAwODAwLAotCTB4MWMwMWYwMDAsIDB4NDk3YjUwMjIsIDB4NGEwMzUwMjEsIDB4MDAwMDAwMDEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywKLQkweDgyMDQwNTAwLCAweGZmZmZmZmFmLCAweDgyMDAwNTQwLCAweDAwMDAwMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDBmNCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywKLQkweDRjMDQwMDAwLCAweDQwMDQwMDAwLCAweDg0MDAwNTQ4LCAweDQyMDAwODAwLAotCTB4MDAwMDAwZjQsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywgMHg4MjA0MDUwMCwKLQkweGZmZmZmZmMxLCAweDgyMDAwNTQwLCAweDAwMDAwMDM4LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NWMwMDAwMDAsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDBmNCwgMHgwMjAxZjAwMCwgMHgwMDEwMTliMSwKLQkweDU5YzQwODA1LCAweDU5YzQwMDA2LCAweDgwMDQwZDAwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4ODIwNDA1MDAsIDB4MDBlMDA4MDAsIDB4MDQwMjAwMDQsCi0JMHg4YzA0MGQzZSwgMHgwNDAyMDhkZiwgMHgwNDAxZjAwNywgMHg4MjA0MDUwMCwKLQkweDAwODAwODAwLCAweDAyMDIwODAwLCAweDAwMTAwNjBkLCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NGM1YzAwMDAsIDB4NGM2MDAwMDAsIDB4NTljNGI4MDUsCi0JMHg1OWM0MDAwNiwgMHg4YzAwMDUwMCwgMHgwNDAwMDAwMywgMHg4YzVjYmQwMCwKLQkweDA0MDIwMDk1LCAweDQ4NWZjODU3LCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLAotCTB4MDQwMDAwMWUsIDB4NTljNDAwMDUsIDB4ODIwMDA1MDAsIDB4MDAwMDAwYzAsCi0JMHgwNDAwMDA0YiwgMHgwMjAxZjgwMCwgMHgwMDEwNGUyMywgMHgwNDAyMDA0OCwKLQkweDU5YzQwMDA2LCAweDgyMDAwNTAwLCAweDAwMDAwMGYwLCAweDA0MDIwMDA0LAotCTB4NGEwMzg4MDUsIDB4MDAwMDAwYzAsIDB4MDQwMWYwNDEsIDB4NTlhODAwMTUsCi0JMHg4NDAwMDUwNiwgMHg0ODAzNTAxNSwgMHg0MjAwNjAwMCwgMHhmZjIwM2ZmZiwKLQkweDQyMDA2ODAwLCAweDQwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMTAsIDB4NDIwMDEwMDAsIDB4MDAxMDQwMjAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWRjNywgMHg4YzVjYmQzNCwgMHgwNDAyMDAzMCwKLQkweDRhMDM1MDMyLCAweDAwMDBhYWFhLCAweDU5YzQwMDA1LCAweDhjMDAwNTBjLAotCTB4MDQwMjAwMTIsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMWMsIDB4OGMwMDA1MGEsCi0JMHgwNDAyMDAxZCwgMHg4YzAwMDUwOCwgMHgwNDAwMDAwYiwgMHg1OWE4MDAxNywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDA5LCAweDA0MDIwMDA3LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NDIsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGZlOSwgMHgwNDAxZjA1YSwgMHgwMjAxZjgwMCwgMHgwMDEwNGUyMywKLQkweDA0MDIwMDA3LCAweDQyMDAwODAwLCAweDAwMDAwMDBmLCAweDQyMDAxMDAwLAotCTB4MDAxMDNmMzcsIDB4MDIwMWY4MDAsIDB4MDAxMDVkYTcsIDB4NGEwMzUwMzMsCi0JMHgwMDAwMDAwMCwgMHgwNDAxZjAwYiwgMHg0YTAzNTAzMywgMHgwMDAwMDAwMiwKLQkweDA0MDFmMDA4LCAweDQyMDAwMDAwLCAweDAwMTBiNjQ0LCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsIDB4MDAxMDRmOTMsIDB4MDQwMWYwNDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNTA0OSwgMHgwNDAxZjA0MSwgMHg4YzVjYmQzNCwKLQkweDA0MDAwMDNkLCAweDU5YzQwMDA1LCAweDhjMDAwNTNhLCAweDA0MDIwMDA1LAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MTYsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg0YTAzODgwNSwgMHgwMjAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwKLQkweDA0MDIwMDEwLCAweDRhMDM4ODA1LCAweDA0MDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDRlMWIsIDB4MDQwMjAwMDgsIDB4NGEwMzUwMzMsIDB4MDAwMDAwMDEsCi0JMHg0MjAyZDgwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNGQ3NiwKLQkweDA0MDFmMDYxLCAweDQxNzgwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0ZGU1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDFhNTksIDB4NDAwMGMwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTlkMCwgMHg4MzZjMTU4MCwgMHgwMDAwMDAwNCwgMHgwNDAyMDAwZCwKLQkweDhjNWNiZDAwLCAweDA0MDIwMDE4LCAweDU5YTgxMDA1LCAweDhjMDgxNTA2LAotCTB4MDQwMjAwMDUsIDB4NTljNDEwYTMsIDB4ODIwODE1NDAsIDB4MDAwMDAwMDgsCi0JMHg0ODBiODhhMywgMHg1OWM0MTAwNiwgMHg4NDA4MTU0MCwgMHg0ODBiODgwNiwKLQkweDRhMDM4ODA1LCAweDA0MDAwMDAwLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLAotCTB4NDk3YjUwMTQsIDB4NTlhODAwMDUsIDB4OGMwMDA1MTgsIDB4MDQwMjAwMDQsCi0JMHgwNDAxZjk1YywgMHgwMjAxZjgwMCwgMHgwMDEwM2Y1YywgMHgwMjAxZjgwMCwKLQkweDAwMTAzOTUxLCAweDhjNWNiZDNjLCAweDA0MDIwODU4LCAweDhjNWNiZDAwLAotCTB4MDQwMDAwMzYsIDB4NDIwMDAwMDAsIDB4MDAxMGI2YzksIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg0YTAzODgwNSwgMHgwMDAwMDAwMSwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMzUyLCAweDQyMDFkMDAwLCAweDAwMDAwMDY0LCAweDRjNTgwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4MDIwMWY4MDAsIDB4MDAxMDE5NDEsCi0JMHg1YzAwYjAwMCwgMHgwNDAwMDAwNCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmNiwKLQkweDA0MDFmMDA0LCAweDRhMDM4ODA1LCAweDAwMDAwMDAxLCAweDA0MDFmMDFmLAotCTB4NTljNDAwMDYsIDB4ODQwMDA1MDAsIDB4NDgwMzg4MDYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmMzMiwgMHg0OTdiODg4MCwgMHgwMjAxZjgwMCwgMHgwMDEwYTdlNywKLQkweDU5YzQwMDBkLCAweDhjMDAwNTAwLCAweDAyMDIwODAwLCAweDAwMTBhN2Y1LAotCTB4NTljNDAwYTMsIDB4ODIwMDA1MDAsIDB4ZmNmOGZmZmYsIDB4NDgwMzg4YTMsCi0JMHg0YTAzNTA0YywgMHgwMDAwMDAwMiwgMHg0MjAyZDgwMCwgMHgwMDAwMDAwNCwKLQkweDRhMDM4ODA1LCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTAwNzFhLAotCTB4MDQwMWZiNDIsIDB4NDk3YjUwNTIsIDB4NGEwMzUwNDksIDB4MDAwMDAwMDEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDQ4YywgMHg4MjVjYmQwMCwgMHhiYmZmZmZmZSwKLQkweDQ4NWY4ODA1LCAweDVjMDBjMDAwLCAweDVjMDBiODAwLCAweDFjMDFmMDAwLAotCTB4NTljNDEwMDQsIDB4NDgwYmM4NTcsIDB4OGMwODE1MDAsIDB4MDQwMDAwMDYsCi0JMHg0ODAzYzg1NiwgMHg0OTdiMjgwNywgMHgwMjAxZjgwMCwgMHgwMDEwNmNmOSwKLQkweDA0MDFmMDBhLCAweDgyMDgwNTAwLCAweDAwMDAwMWYwLCAweDA0MDAwMDA3LAotCTB4NDgwM2M4NTYsIDB4NDE3YTMwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDVkOWIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNmQxYiwgMHg0YTAzODgwNSwgMHg4MDAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDU5YzQwOGEzLCAweDQ4MDdjODU3LCAweDg0MDQwZDQwLAotCTB4NDgwNzg4YTMsIDB4MWMwMWYwMDAsIDB4NGQ5MDAwMDAsIDB4NGRkMDAwMDAsCi0JMHg0ZGE0MDAwMCwgMHg0ZDE0MDAwMCwgMHg0YTAzODgwNSwgMHg0MDAwMDAwMCwKLQkweDQyMDAwMDAwLCAweDAwMTBiNmM1LCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4NTljNDEwMDQsIDB4OGMwODE1MDAsCi0JMHgwNDAwMDA1NCwgMHg1OThlNjAwZCwgMHg0OTdiMjgwNywgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDMyLCAweDU5MzAwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDMyLAotCTB4MDQwMjAwMmUsIDB4NTkzMDAwMWMsIDB4NDgwMzg4MzMsIDB4NGEwMzg4MDcsCi0JMHgwMDAxODAwMCwgMHg0MjAxZDAwMCwgMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwKLQkweDAwMTA1ZGQyLCAweDQ5N2I4ODA3LCAweDQyMDFkMDAwLCAweDAwMDAwMDAyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4MDIwMWY4MDAsIDB4MDAxMDZiNzEsCi0JMHg0MjAxZDAwMCwgMHgwMDAwNzUzMCwgMHgwMjAxZjgwMCwgMHgwMDEwNWRkMiwKLQkweDU5YzQwOGE0LCAweDgyMDQwZDAwLCAweDAwMDAwMDBmLCAweDgyMDQwZDgwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMDUsIDB4NDIwMDAwMDAsIDB4MDAyMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTliNiwgMHgwMjAxZjgwMCwgMHgwMDEwNjhmNiwKLQkweDU5MzAwMDA4LCAweDgwMDAwNTQwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4NDAwMjU4MDAsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsIDB4NTkzMWQ4MjEsCi0JMHg1OGVmNDAwYiwgMHg1OGVjMDAwOSwgMHgwODAxZjgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwOGI0LCAweDA0MDFmMDQ3LCAweDU5OGMwMDBmLCAweDgyMDAxYzgwLAotCTB4MDAwMDAwYzgsIDB4MDQwMjEwMGYsIDB4ODAwMDAwMDAsIDB4NDgwMzE4MGYsCi0JMHg1OWM0MDBhNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDIwMDA0LCAweDQyMDAwMDAwLCAweDAwMjAwMDAwLAotCTB4MDQwMWZiZmEsIDB4MDIwMWY4MDAsIDB4MDAxMDVkODYsIDB4MDQwMWYwMzUsCi0JMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNmI3MSwgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDMwLCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMjcsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4MDQwMWYwMjksCi0JMHg4YzA4MTUwOCwgMHgwNDAwMDAyNywgMHg0MTdhMzAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA2ZTJmLCAweDQyMDMyMDAwLCAweDAwMDBiZjMyLCAweDAyMDFmODAwLAotCTB4MDAxMDVkOWIsIDB4NTk5MjYwMDQsIDB4ODEzMjYxYzAsIDB4MDQwMDAwMTIsCi0JMHg0MjAwMTgwMCwgMHgwMDAwMDBjOCwgMHgwMjAxZjgwMCwgMHgwMDEwNmRmYiwKLQkweDA0MDIwMDBkLCAweDU5YzQwMGE0LCAweDgyMDAwNTAwLCAweDAwMDAwMDBmLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMDQsIDB4NDIwMDAwMDAsCi0JMHgwMDIwMDAwMCwgMHgwNDAxZmJkMSwgMHgwMjAxZjgwMCwgMHgwMDEwNWQ4YiwKLQkweDA0MDFmMDBjLCAweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2YjEzLAotCTB4ODEzMjYxYzAsIDB4MDQwMDAwMDcsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNGYsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwKLQkweDVjMDIyODAwLCAweDVjMDM0ODAwLCAweDVjMDNhMDAwLCAweDVjMDMyMDAwLAotCTB4MDIwMWYwMDAsIDB4MDAxMDY5ODIsIDB4NDgwM2M4NTcsIDB4NTlhODA4MjEsCi0JMHg0ODAzNTAyMSwgMHg4MDA0MTU4MCwgMHgwNDAwMDA0NSwgMHg4MDA0MDljMCwKLQkweDA0MDAwMDIzLCAweDQ5N2I1MDRjLCAweDQyMDAwMDAwLCAweDAwMTBiNjBiLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsIDB4MDAxMGE5MjAsCi0JMHg0MjAwMTAwMCwgMHgwMDAwODAxMSwgMHg1OWM0MDAwMSwgMHg4MjAwMDUwMCwKLQkweDAwMDE4MDAwLCAweDgyMDAxZDgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDA5LAotCTB4ODIwMDFkODAsIDB4MDAwMDgwMDAsIDB4MDQwMDAwMDksIDB4ODIwMDFkODAsCi0JMHgwMDAxMDAwMCwgMHgwNDAwMDAwOSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwKLQkweDQyMDAxODAwLCAweDAwMDAwMDAwLCAweDA0MDFmMDA2LCAweDQyMDAxODAwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMDMsIDB4NDIwMDE4MDAsIDB4MDAwMDAwMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzg1NywgMHgwNDAxZjAyMSwgMHg1OWE4MDg0YywKLQkweDgwMDQwOWMwLCAweDA0MDIwMDA3LCAweDU5YzQwMDBkLCAweDhjMDAwNTIwLAotCTB4MDQwMDAwMDQsIDB4NDIwMDE4MDAsIDB4MDAwMDAwMDMsIDB4MDQwMWYwMDIsCi0JMHg0MDA0MTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwYTkwNCwgMHg0MjAwMTAwMCwKLQkweDAwMDA4MDEyLCAweDAyMDFmODAwLCAweDAwMTAzODU3LCAweDAyMDFmODAwLAotCTB4MDAxMDA3MWEsIDB4MDIwMWY4MDAsIDB4MDAxMGE5NWEsIDB4MDQwMjAwMGMsCi0JMHgwNDAxZjg1MywgMHg0ZDQwMDAwMCwgMHg0ZDNjMDAwMCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDI4LCAweDQyMDI3ODAwLCAweDAwMDAwMDA4LCAweDAyMDFmODAwLAotCTB4MDAxMDFkOTAsIDB4NWMwMjc4MDAsIDB4NWMwMjgwMDAsIDB4MWMwMWYwMDAsCi0JMHg0ODAzYzg1NywgMHg4MjAwMDQwMCwgMHgwMDEwMWViNSwgMHg1MDAwMDgwMCwKLQkweDgyMDQwZDAwLCAweDAwMDAwMGZmLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMTAsIDB4NDk3Yjg4YWMsCi0JMHg0OTdiODhhZCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmZSwgMHg1YzAwYjAwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDdjODU3LCAweDQ4MDc1MDEwLCAweDgwMDQxMTA4LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMTAsIDB4NDk3Yjg4YWMsIDB4ODAwMDA1ODAsCi0JMHg4MDA4MTFjMCwgMHgwNDAyMDAwNiwgMHg4MjA0MDUwMCwgMHgwMDAwMDAwZiwKLQkweDgyMDAwNDAwLCAweDAwMTBhOTVmLCAweDUwMDAwMDAwLCAweDQ4MDM4OGFkLAotCTB4ODAwODEwNDAsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjUsIDB4MWMwMWYwMDAsCi0JMHg1OWE4MDAwNSwgMHgwNDAwMDAwMywgMHg4NDAwMDU0NiwgMHgwNDAxZjAwMiwKLQkweDg0MDAwNTA2LCAweDQ4MDM1MDA1LCAweDQ4MDNjODU3LCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTcsIDB4NGMwODAwMDAsIDB4NGMwNDAwMDAsIDB4NGMwMDAwMDAsCi0JMHg1OWM0MDg5MiwgMHg0ODA3Yzg1NywgMHg4MDA0MTU4MCwgMHgwNDAwMDAxMCwKLQkweDgwMDQxNDgwLCAweDA0MDIxMDA3LCAweDgwMDgxMDgwLCAweDgwMDgxMDAwLAotCTB4NDAwOGIwMDAsIDB4NDIwMDAwMDAsIDB4MDAwMDAyMDEsIDB4MDQwMWYwMDQsCi0JMHg0MDA4YjAwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMDIxMCwgMHg0ODAzODg4NiwKLQkweDgwNThiMDQwLCAweDA0MDIwN2ZlLCAweDQ5N2I4ODg2LCAweDVjMDAwMDAwLAotCTB4NWMwMDA4MDAsIDB4NWMwMDEwMDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwgMHgwNDAwMDAwNSwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDJlLCAweDAyMDFmMDAwLCAweDAwMTBhMjViLCAweDFjMDFmMDAwLAotCTB4NTlhODA4NmYsIDB4ODIwNDA1MDAsIDB4MDAwMDAwMTAsIDB4MDQwMDAwMDQsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMiwgMHgwNDAxZjAxMCwgMHg4MjA0MDUwMCwKLQkweDAwMDAwMDIwLCAweDQyMDAwODAwLCAweDAwMDAwMDAyLCAweDA0MDIwMDBiLAotCTB4NTljODA4MzUsIDB4ODIwNDBkMDAsIDB4MDAwMDFmMDAsIDB4ODAwNDA5MTAsCi0JMHg4MDA0MDgwMCwgMHg1OWE4MDA2YywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwMywKLQkweDQyMDAwODAwLCAweDAwMDAwMjVhLCAweDQ4MDdjODU3LCAweDFjMDFmMDAwLAotCTB4NGMwMDAwMDAsIDB4NTlhODAwNTMsIDB4NDgwM2M4NTcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMCwgMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHg0YzAwMDAwMCwKLQkweDU5YTgwMDUzLCAweDQ4MDNjODU3LCAweDgyMDAwNTgwLCAweDAwMDAwMDAxLAotCTB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsIDB4NTlhODAwNTMsCi0JMHg0ODAzYzg1NywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMywgMHg1YzAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDRjMDAwMDAwLCAweDU5YTgwMDUzLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDIsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsCi0JMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHg0YzM4MDAwMCwgMHg1OWE4MDA0MCwKLQkweDgyMDAwYzgwLCAweDAwMDAwMDA3LCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4MGMwMWY4MDYsIDB4NWMwMDcwMDAsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsCi0JMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHgwMDEwMTZkZCwgMHgwMDEwMTZmMCwKLQkweDAwMTAxNzA0LCAweDAwMTAxNzA2LCAweDAwMTAxNzJkLCAweDAwMTAxNzJmLAotCTB4MDAxMDE3MzEsIDB4NDgwM2M4NTYsIDB4NGEwMzUwNDIsIDB4MDAwMDAwMDAsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMiwgMHgwNDAxZmExOCwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDAyLCAweDA0MDFmOWFkLCAweDA0MDFmYWFlLCAweDQ4MDNjODU2LAotCTB4NGEwMzUwNDAsIDB4MDAwMDAwMDYsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMWUsCi0JMHg0MjAwMTAwMCwgMHgwMDEwMTczMiwgMHgwMjAxZjAwMCwgMHgwMDEwNWRhNywKLQkweDQ5N2I1MDQ1LCAweDRhMDM1MDUwLCAweDAwMDAwMDM2LCAweDRhMDM1MDRmLAotCTB4MDAwMDAwMmEsIDB4NDgwM2M4NTYsIDB4NGEwMzUwNDIsIDB4MDAwMDAwMDEsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMiwgMHgwNDAxZjk5OCwgMHg0ODAzYzg1NiwKLQkweDRhMDM1MDQwLCAweDAwMDAwMDA2LCAweDQyMDAwODAwLCAweDAwMDAwMDFlLAotCTB4NDIwMDEwMDAsIDB4MDAxMDE3MzIsIDB4MDIwMWYwMDAsIDB4MDAxMDVkYTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0YTAzNTA1MCwgMHgwMDAwMDAzNiwKLQkweDQ4MDNjODU2LCAweDRhMDM1MDQyLCAweDAwMDAwMDAzLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDAsIDB4MDQwMWZhOWYsIDB4ODIwNDBkMDAsIDB4MDAwMDAwOTAsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDA5MCwgMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDEwLCAweDA0MDAwMDA5LCAweDgyMDQwNTgwLCAweDAwMDAwMDAwLAotCTB4MDQwMDAwMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwNSwgMHg0MTc4MDAwMCwgMHgwNDAxZjAwMywKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAyLCAweDA0MDFmOTcwLCAweDQ5N2I1MDQ2LAotCTB4NDgwM2M4NTYsIDB4NGEwMzUwNDAsIDB4MDAwMDAwMDYsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAxZSwgMHg0MjAwMTAwMCwgMHgwMDEwMTczMiwgMHgwMjAxZjAwMCwKLQkweDAwMTA1ZGE3LCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsIDB4NGMwNDAwMDAsCi0JMHg0YzA4MDAwMCwgMHg0YzM4MDAwMCwgMHg1OWE4MDA0MiwgMHg4MjAwMGM4MCwKLQkweDAwMDAwMDA3LCAweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmODA2LAotCTB4NWMwMDcwMDAsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsIDB4NWMwMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHgwMDEwMTc0OCwgMHgwMDEwMTc2NywgMHgwMDEwMTdiYiwKLQkweDAwMTAxN2QyLCAweDAwMTAxN2U5LCAweDAwMTAxN2YyLCAweDAwMTAxN2Y0LAotCTB4MDQwMWY5ZjksIDB4MDQwMjAwMWIsIDB4NTlhODEwNDgsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHgwNDAxZmE1ZiwgMHg4MjA0MGQwMCwgMHgwMDAwMDA5MCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDkwLCAweDA0MDAwMDA5LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMTAsIDB4MDQwMDAwMDgsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDAsCi0JMHgwNDAwMDAwNywgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg4NDA4MTU0MCwKLQkweDA0MDFmMDA0LCAweDg0MDgxNTQyLCAweDA0MDFmMDAyLCAweDg0MDgxNTQ0LAotCTB4NDgwYjUwNDgsIDB4NGEwMzUwNDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDMsCi0JMHgwNDAxZjhjYiwgMHgwNDAxZmY4MiwgMHgxYzAxZjAwMCwgMHgwNDAxZjg4ZiwKLQkweDA0MDAwMDUyLCAweDA0MDFmOWQ4LCAweDA0MDIwMDJhLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDAsIDB4MDQwMWZhM2YsIDB4ODIwNDBkMDAsIDB4MDAwMDAwOTAsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDA0NCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDEwLCAweDA0MDAwMDA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDkwLAotCTB4MDQwMDAwMDksIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NTljNDA4MDEsCi0JMHg4MjA0MGQwMCwgMHgwMDAxODAwMCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDAwMDM2LCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmYTI5LAotCTB4ODIwNDBkMDAsIDB4MDAwMDAwOTAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMTAsCi0JMHgwNDAwMDAwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDA5MCwgMHgwNDAwMDAwNiwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU5YTgwMDQ4LCAweDg0MDAwNTQyLAotCTB4MDQwMWYwMDMsIDB4NTlhODAwNDgsIDB4ODQwMDA1NDAsIDB4NDgwMzUwNDgsCi0JMHg1OWE4MDA0NSwgMHg4MDAwMDAwMCwgMHg0ODAzNTA0NSwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA1LCAweDA0MDAwMDAzLCAweDA0MDFmODYxLCAweDA0MDFmMDFlLAotCTB4NDk3YjUwNDUsIDB4NTljNDA4MDEsIDB4ODIwNDBkMDAsIDB4MDAwMTgwMDAsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwKLQkweDAwMDA4MDAwLCAweDA0MDAwMDA5LCAweDgyMDQwNTgwLCAweDAwMDEwMDAwLAotCTB4MDQwMDAwMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwNSwgMHg0MTc4MDAwMCwgMHgwNDAxZjAwMywKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAyLCAweDA0MDFmOTQ4LCAweDRhMDM1MDQyLAotCTB4MDAwMDAwMDIsIDB4MDQwMWYwMDQsIDB4NGEwMzUwNDAsIDB4MDAwMDAwMDMsCi0JMHgwNDAxZjAwMiwgMHgwNDAxZmY0MiwgMHgxYzAxZjAwMCwgMHgwNDAxZjgzYiwKLQkweDA0MDAwMDE1LCAweDU5YTgwMDRmLCAweDgwMDAwMDQwLCAweDQ4MDM1MDRmLAotCTB4MDQwMWY5ODEsIDB4MDQwMjAwMDUsIDB4NGEwMzUwNDAsIDB4MDAwMDAwMDMsCi0JMHg0OTdiNTA0MSwgMHgwNDAxZjAwYywgMHg1OWE4MDA0ZiwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDAzLCAweDA0MDFmODllLCAweDA0MDFmMDAyLCAweDA0MDFmODRiLAotCTB4MDQwMWY4MmYsIDB4NDk3YjUwNDUsIDB4NGEwMzUwNDIsIDB4MDAwMDAwMDEsCi0JMHgwNDAxZmYyYiwgMHgxYzAxZjAwMCwgMHgwNDAxZjgyNCwgMHgwNDAwMDAxNSwKLQkweDA0MDFmOTZkLCAweDA0MDIwMDBmLCAweDU5YTgwMDQ2LCAweDgwMDAwMDAwLAotCTB4NDgwMzUwNDYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDcsIDB4MDQwMjAwMGMsCi0JMHg0YTAzNTA1MiwgMHgwMDAwMDAwYSwgMHg0OTdiNTA0OSwgMHg1OWE4MDA0OCwKLQkweDg0MDAwNTVlLCAweDQ4MDM1MDQ4LCAweDQ4MDNjODU3LCAweDA0MDFmMDA1LAotCTB4MDQwMWY4MTcsIDB4NGEwMzUwNDIsIDB4MDAwMDAwMDQsIDB4MDQwMWZmM2QsCi0JMHgxYzAxZjAwMCwgMHgwNDAxZjgwZCwgMHgwNDAwMDAwNywgMHgwNDAxZjk1NiwKLQkweDA0MDIwMDAzLCAweDA0MDFmZjFiLCAweDA0MDFmMDAzLCAweDA0MDFmODBjLAotCTB4MDQwMWZmMzQsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OWE4MDA1MCwgMHg4MDAwMDA0MCwKLQkweDQ4MDM1MDUwLCAweDA0MDAwODhkLCAweDFjMDFmMDAwLCAweDRjMDQwMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsIDB4MDQwMWY5YWUsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDA5MCwgMHg4MjA0MDU4MCwgMHgwMDAwMDA5MCwgMHgwNDAwMDAwOSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDEwLCAweDA0MDAwMDA5LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMDksIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMiwgMHgwNDAxZjAwNSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmMDAyLCAweDQxNzgwMDAwLCAweDA0MDFmOGU3LAotCTB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NGMwNDAwMDAsIDB4NTljNDA4MDEsCi0JMHg4MjA0MGQwMCwgMHgwMDAxODAwMCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDAwMDA5LCAweDgyMDQwNTgwLCAweDAwMDA4MDAwLCAweDA0MDAwMDA5LAotCTB4ODIwNDA1ODAsIDB4MDAwMTAwMDAsIDB4MDQwMDAwMDksIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwMiwgMHgwNDAxZjAwNSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDA0MDFmMDAyLCAweDQxNzgwMDAwLAotCTB4MDQwMWY4NjYsIDB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NGMwNDAwMDAsCi0JMHg1OWE4MDA0NSwgMHg4MDAwMDAwMCwgMHg0ODAzNTA0NSwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA1LCAweDA0MDIwMDE4LCAweDQ5N2I1MDQ1LCAweDU5YzQwODAxLAotCTB4ODIwNDBkMDAsIDB4MDAwMTgwMDAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDAsCi0JMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwgMHgwMDAwODAwMCwgMHgwNDAwMDAwOSwKLQkweDgyMDQwNTgwLCAweDAwMDEwMDAwLCAweDA0MDAwMDA5LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWYwMDUsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAwMiwgMHg0MTc4MDAwMCwKLQkweDA0MDFmODQ2LCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmOTVkLAotCTB4ODIwNDBkMDAsIDB4MDAwMDAwOTAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwOTAsCi0JMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwgMHgwMDAwMDAxMCwgMHgwNDAwMDAwOSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDA5LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWYwMDUsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAwMiwgMHg0MTc4MDAwMCwKLQkweDA0MDFmODk2LCAweDVjMDAwODAwLCAweDFjMDFmMDAwLCAweDRjMjAwMDAwLAotCTB4NTlhODAwNDgsIDB4ODIwMDA1MDAsIDB4MDAwMDdmZmYsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OWE4NDA0NywgMHg4MDIwNDEwMiwgMHgwMjAwMTgwMCwKLQkweDAwMTAwNjE1LCAweDQ4MjM1MDQ3LCAweDgwMjA0NTAwLCAweDA0MDAwN2ZhLAotCTB4OGMwMDA1MDQsIDB4MDQwMjAwMDcsIDB4OGMwMDA1MDIsIDB4MDQwMjAwMDgsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDAwOCwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAyLCAweDA0MDFmMDA1LCAweDQxNzgwMDAwLAotCTB4MDQwMWYwMDMsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsIDB4MDQwMWY4MGYsCi0JMHg1YzAwNDAwMCwgMHgxYzAxZjAwMCwgMHgwNDAxMTAwMCwgMHg0YTAzYzg0MCwKLQkweDAwMTBiMjQwLCAweDRhMDNjODQyLCAweDAwMDAwMDA5LCAweDQwMDAwMDAwLAotCTB4MDQwMTE3ZmYsIDB4NGEwMzUwNDcsIDB4MDAwMDAwMDQsIDB4NGEwMzUwM2UsCi0JMHgwMDAwMDAwMCwgMHgxYzAxZjAwMCwgMHg1OWE4MDg1OCwgMHg4MjA0MGQ4MCwKLQkweDAxMzkxMDc3LCAweDA0MDIwMDA4LCAweDU5ZTAwODEzLCAweDhjMDQwZDAwLAotCTB4MDQwMDAwMDUsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMDIsCi0JMHg0MTc4MDAwMCwgMHg4MDAwMDFjMCwgMHgwNDAwMDA0MCwgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDAxLCAweDA0MDIwMDFkLCAweDQyMDAwODAwLCAweDAwMDAwMGEwLAotCTB4MDQwMWY5MDgsIDB4ODIwNDA1NDAsIDB4MDAwMDAwMDQsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDBhMCwgMHgwNDAxZjkwOCwgMHg0MjAwMDgwMCwgMHgwMDAwMDBjMCwKLQkweDA0MDFmOTAwLCAweDgyMDQwNTQwLCAweDAwMDAwMDIwLCAweDQyMDAwODAwLAotCTB4MDAwMDAwYzAsIDB4MDQwMWY5MDAsIDB4NTljNDAwMDEsIDB4ODIwMDA1MDAsCi0JMHhmZmZlN2ZmZiwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMCwgMHg0ODAzODgwMSwKLQkweDU5YTgwMDU0LCAweDgwMDAwMTEwLCAweDQyMDAwODAwLCAweDAwMDAwMGUwLAotCTB4MDQwMWY4ZjUsIDB4MDQwMWYwM2MsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDIsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg0MjAwMDgwMCwgMHgwMDAwMDBhMCwKLQkweDA0MDFmOGU4LCAweDgyMDQwNTAwLCAweGZmZmZmZmZiLCAweDQyMDAwODAwLAotCTB4MDAwMDAwYTAsIDB4MDQwMWY4ZTgsIDB4NDIwMDA4MDAsIDB4MDAwMDAwYzAsCi0JMHgwNDAxZjhlMCwgMHg4MjA0MDUwMCwgMHhmZmZmZmZkZiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMGMwLCAweDA0MDFmOGUwLCAweDU5YzQwMDAxLCAweDgyMDAwNTAwLAotCTB4ZmZmZTdmZmYsIDB4ODIwMDA1NDAsIDB4MDAwMTAwMDAsIDB4NDgwMzg4MDEsCi0JMHg1OWE4MDA1NiwgMHg4MDAwMDExMCwgMHg0MjAwMDgwMCwgMHgwMDAwMDBlMCwKLQkweDA0MDFmOGQ1LCAweDA0MDFmMDFjLCAweDQyMDAwODAwLCAweDAwMDAwMGEwLAotCTB4MDQwMWY4Y2MsIDB4ODIwNDA1NDAsIDB4MDAwMDAwMDQsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDBhMCwgMHgwNDAxZjhjYywgMHg0MjAwMDgwMCwgMHgwMDAwMDBjMCwKLQkweDA0MDFmOGM0LCAweDgyMDQwNTAwLCAweGZmZmZmZmRmLCAweDQyMDAwODAwLAotCTB4MDAwMDAwYzAsIDB4MDQwMWY4YzQsIDB4NTljNDAwMDEsIDB4ODIwMDA1MDAsCi0JMHhmZmZlN2ZmZiwgMHg4MjAwMDU0MCwgMHgwMDAwODAwMCwgMHg0ODAzODgwMSwKLQkweDU5YTgwMDU1LCAweDgwMDAwMTEwLCAweDQyMDAwODAwLCAweDAwMDAwMGUwLAotCTB4MDQwMWY4YjksIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTcsIDB4NTlhODA4NTgsCi0JMHg4MjA0MGQ4MCwgMHgwMTM5MTA3NywgMHgwNDAyMDAwOCwgMHg1OWUwMDgxMywKLQkweDhjMDQwZDAwLCAweDA0MDAwMDA1LCAweDgyMDAwZDgwLCAweDAwMDAwMDAyLAotCTB4MDQwMjAwMDIsIDB4NDE3ODAwMDAsIDB4NGMwMDAwMDAsIDB4MDQwMWY5NDIsCi0JMHg1YzAwMDAwMCwgMHg4MDAwMDFjMCwgMHgwNDAwMDAyNiwgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDAxLCAweDA0MDIwMDEwLCAweDU5YTgwMDZjLCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMDQsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDAsIDB4MDQwMWY5ZjcsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMCwgMHgwNDAxZjg5NiwgMHg4MjA0MDU0MCwKLQkweDAwMDAwMDkwLCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmODk2LAotCTB4MDQwMWYwMjQsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDIsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OWE4MDA2YywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwNCwKLQkweDQyMDAxMDAwLCAweDAwMDEwMDAwLCAweDA0MDFmOWU0LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDAsIDB4MDQwMWY4ODMsIDB4ODIwNDA1MDAsIDB4ZmZmZmZmNmYsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMCwgMHgwNDAxZjg4MywgMHgwNDAxZjAxMSwKLQkweDU5YTgwMDZjLCAweDgwMDAwNTQwLCAweDA0MDAwMDA0LCAweDQyMDAxMDAwLAotCTB4MDAwMDgwMDAsIDB4MDQwMWY5ZDUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsCi0JMHgwNDAxZjg3NCwgMHg4MjA0MDUwMCwgMHhmZmZmZmY2ZiwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDEwLCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmODcyLAotCTB4MDQwMWYxMTEsIDB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMTQsCi0JMHg4MDU4YjA0MCwgMHgwNDAwMDA0MiwgMHg1OWM0MDAwZCwgMHg4YzAwMDUyMCwKLQkweDA0MDIwN2ZjLCAweDA0MDFmODViLCAweDU5YzQwMDBkLCAweDhjMDAwNTIwLAotCTB4MDQwMjA3ZjgsIDB4NTljNDA4MDgsIDB4ODQwNDBkNTAsIDB4NDgwNzg4MDgsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDBjOCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmZiwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDE0LCAweDgwNThiMDQwLCAweDA0MDAwMDMwLAotCTB4NTljNDAwMGQsIDB4OGMwMDA1MjAsIDB4MDQwMjAwMmQsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMTAwMCwgMHg1MDA0MDgwMCwgMHg4MjA0MGM4MCwgMHgyNDIyMDAwMSwKLQkweDA0MDIwMDAzLCAweDhjMDAwNTA0LCAweDA0MDAwN2Y0LCAweDA0MDFmODQxLAotCTB4NTljNDAwMGQsIDB4OGMwMDA1MjAsIDB4MDQwMjAwMjEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMTAwMCwgMHg1MDA0MDgwMCwgMHg4MjA0MGM4MCwgMHgyNDIyMDAwMSwKLQkweDA0MDIwMDAzLCAweDhjMDAwNTA0LCAweDA0MDAwN2U4LCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMGEsIDB4ODA1OGIwNDAsIDB4MDQwMDAwMDMsIDB4MDQwMWY4MzEsCi0JMHgwNDAxZjdmZCwgMHg0MjAwYjAwMCwgMHgwMDAwMDA2NCwgMHg1OWM0MDAwZCwKLQkweDhjMDAwNTFlLCAweDA0MDAwMDBlLCAweDgwNThiMDQwLCAweDA0MDIwN2ZjLAotCTB4NDIwMDAwMDAsIDB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsCi0JMHgyNDIyMDAwMSwgMHgwNDAyMDAwNCwgMHg1OWM0MDgwOCwgMHg4NDA0MGQxMCwKLQkweDQ4MDc4ODA4LCAweDgwMDAwNTgwLCAweDA0MDFmMDBjLCAweDQyMDAwMDAwLAotCTB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsIDB4MjQyMjAwMDEsCi0JMHgwNDAyMDAwNCwgMHg1OWM0MDgwOCwgMHg4NDA0MGQxMCwgMHg0ODA3ODgwOCwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwYTAsIDB4MDQwMWY4MTYsIDB4ODIwNDA1MDAsCi0JMHhmZmZmZmZmZSwgMHg0MjAwMDgwMCwgMHgwMDAwMDBhMCwgMHgwNDAxZjgxNiwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmODBlLCAweDgyMDQwNTAwLAotCTB4ZmZmZmZmZmUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsIDB4MDQwMWYwMGUsCi0JMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwKLQkweDQwMDAwMDAwLCAweDFjMDFmMDAwLCAweDQ4MGI4ODA1LCAweDFjMDFmMDAwLAotCTB4NDgwNzg4MGUsIDB4NTljNDA4MGYsIDB4ODIwNDBkMDAsIDB4MDAwMDAwZmYsCi0JMHgxYzAxZjAwMCwgMHg5MDAwMDFjMCwgMHg4MDA0MGQ0MCwgMHg4NDA0MGQ0MCwKLQkweDQ4MDc4ODBlLCAweDFjMDFmMDAwLCAweDgyMDAwZDgwLCAweDAwMjAwMDAwLAotCTB4MDQwMDAwMDksIDB4ODIwMDBkODAsIDB4MDIwMDAwMDAsIDB4MDQwMDAwMDYsCi0JMHg4MjAwMGQ4MCwgMHgwMTAwMDAwMCwgMHgwNDAwMDAwNiwgMHg1OWM0MDhhMywKLQkweDA0MDFmMDA2LCAweDU5YzQwOGEzLCAweDg0MDQwZDMwLCAweDA0MDFmMDAzLAotCTB4NTljNDA4YTMsIDB4ODQwNDBkMzIsIDB4ODAwNDA1NDAsIDB4NDgwMzg4YTMsCi0JMHg0ODA3ODhhMywgMHgxYzAxZjAwMCwgMHg1OWM0MDBhMywgMHg4NDAwMDU1NiwKLQkweDQ4MDM4OGEzLCAweDg0MDAwNTE2LCAweDQ4MDM4OGEzLCAweDFjMDFmMDAwLAotCTB4NDg1ZmM4NTcsIDB4NDg2M2M4NTcsIDB4NGM2NDAwMDAsIDB4NGQzYzAwMDAsCi0JMHg0ZDQwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNmMzMiwgMHg0ODYzNTAwYSwKLQkweDAyMDFmODAwLCAweDAwMTBhOTVhLCAweDA0MDIwMDZhLCAweDgyNjAwZDAwLAotCTB4MDAwMGZmMDAsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMGMsIDB4NDIwMGM4MDAsCi0JMHgwMDAwMDAwMSwgMHg1OWE4MDAxMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDgwMDQxMTEwLCAweDgwMDgxNTgwLCAweDA0MDAwMDIxLCAweDgyMDQxNTgwLAotCTB4MDAwMGZmMDAsIDB4MDQwMDAwMGEsIDB4NTljNDEwYTMsIDB4ODIwODE1MDAsCi0JMHgwMDAwODAwMCwgMHgwNDAwMDAwOSwgMHg1OWM0MTBhNywgMHg4MjA4MTUwMCwKLQkweDAwMDBmZjAwLCAweDgyMDgxNTgwLCAweDAwMDBmZjAwLCAweDQyMDBjODAwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMTIsIDB4NTlhODAwMDUsIDB4OGMwMDA1MDIsCi0JMHgwNDAyMDAwOCwgMHg4YzAwMDUwMCwgMHgwNDAyMDAwZCwgMHg1OTljMTAxNywKLQkweDhjMDgxNTFhLCAweDA0MDAwMDNjLCAweDg0MDAwNTQyLCAweDQ4MDM1MDA1LAotCTB4NDIwMGM4MDAsIDB4MDAwMDAwMDIsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDQsCi0JMHg0MjAyNzgwMCwgMHgwMDAwMDAwOCwgMHgwNDAxZjAwNywgMHg1OWE4MDgwNSwKLQkweDg0MDQwZDQwLCAweDQ4MDc1MDA1LCAweDQyMDI4MDAwLCAweDAwMDAwMDA0LAotCTB4NDE3YTc4MDAsIDB4NTlhODAwMDYsIDB4OGMwMDA1MDIsIDB4MDQwMjAwMDYsCi0JMHg1OWE4MDgwNSwgMHg4YzA0MGQwYSwgMHgwNDAyMDAzMiwgMHg4NDA0MGQ0YSwKLQkweDQ4MDc1MDA1LCAweDQyMDAwMDAwLCAweDAwMTBiNjEwLCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4NTlhODE4MGEsIDB4NDIwMDEwMDAsIDB4MDAwMDgwMTMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDE1LCAweDRkNDAwMDAwLCAweDgyNjAwNTAwLCAweDAwMDAwMGZmLAotCTB4NDIwMjg4MDAsIDB4MDAwMGZmZmYsIDB4NDA2NDMwMDAsIDB4NDIwMjgwMDAsCi0JMHgwMDAwMDAwZSwgMHgwMjAxZjgwMCwgMHgwMDEwYTI1OCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAxLCAweDQyMDAxMDAwLCAweDAwMDAwMTAwLCAweDAyMDFmODAwLAotCTB4MDAxMDVlYzQsIDB4NWMwMjgwMDAsIDB4NTk5YzA4MTcsIDB4OGMwNDBkMGEsCi0JMHgwNDAyMDAxMCwgMHg0OTNmYzg1NywgMHg0OTQzYzg1NywgMHgwNDAxZmI1OSwKLQkweDA0MDFmMDBjLCAweDAyMDFmODAwLCAweDAwMTAzOTNlLCAweDA0MDAwMDA5LAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMGYsIDB4NDIwMjg4MDAsIDB4MDAwMGZmZmYsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwYTI1YiwKLQkweDQ5N2I4ODgwLCAweDVjMDI4MDAwLCAweDVjMDI3ODAwLCAweDVjMDBjODAwLAotCTB4MWMwMWYwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsIDB4MDQwMWZmNjEsCi0JMHg4MjA0MDU0MCwgMHgwMDAwMDAwMiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMCwKLQkweDA0MDFmNzYxLCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDA0MDFmZjU5LAotCTB4ODIwNDA1MDAsIDB4ZmZmZmZmZmQsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsCi0JMHgwNDAxZjc1OSwgMHg1OWM0MDhhOCwgMHgwNDAxZmY0YSwgMHgwNDAxZmY0OSwKLQkweDU5YzQwMGE4LCAweDgwMDQwZDgwLCAweDA0MDIwN2ZiLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NGEwMzg4MDcsIDB4MDAwMDAwMDEsIDB4NDk3Yjg4MDcsCi0JMHg1OWM0MDAwNSwgMHg0ODAzODgwNSwgMHg0OTdiNTA2YywgMHg0OTdiNTA2ZCwKLQkweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDAxLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMDMsIDB4MDQwMWY4MjQsIDB4MDQwMWY4MmYsIDB4NDA0MDAwMDAsCi0JMHg0ODAzYzg1NywgMHg4MjQwODU4MCwgMHgwMDAwMDAwMCwgMHgwNDAyMDAxZCwKLQkweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMTQsIDB4MDQwMWY4MTgsIDB4MDQwMWY4MjMsIDB4NDA0MDAwMDAsCi0JMHg0ODAzYzg1NywgMHg4MjQwODU4MCwgMHgwMDAwMDgwMCwgMHgwNDAyMDAxMSwKLQkweDQyMDA1ODAwLCAweDAwMDAwMDAxLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLAotCTB4NDIwMDY4MDAsIDB4MDAwMDAwMTQsIDB4MDQwMWY4MGIsIDB4MDQwMWY4MTYsCi0JMHg0MDQwMDAwMCwgMHg0ODAzYzg1NywgMHg4MjQwODU4MCwgMHgwMDAwZmZmZiwKLQkweDA0MDIwMDA0LCAweDRhMDM1MDZjLCAweDAwMDAwMDAxLCAweDQ4MDNjODU2LAotCTB4MWMwMWYwMDAsIDB4NDE3ODUwMDAsIDB4MDQwMWY4MTIsIDB4MDQwMWY4MzgsCi0JMHg0MDM0NzAwMCwgMHg0MDM0MDgwMCwgMHgwNDAxZjAzZCwgMHg0MjAwNTAwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmODBiLCAweDA0MDFmODMxLCAweDQwMzQwODAwLAotCTB4MDQwMWYwMzcsIDB4NDIwMDUwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWY4MDUsCi0JMHgwNDAxZjgxZCwgMHgwNDAxZjgzNSwgMHg0MDA0ODAwMCwgMHgxYzAxZjAwMCwKLQkweDA0MDFmODA4LCAweDA0MDFmODE0LCAweDQwMjgwODAwLCAweDA0MDFmODI2LAotCTB4NDAyYzA4MDAsIDB4MDQwMWY4MjcsIDB4NDAzMDA4MDAsIDB4MDQwMWYwMjUsCi0JMHg0MjAwMDgwMCwgMHgwMDAwZmZmZiwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmODI5LCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDA0MDFmODI2LAotCTB4NDIwMDA4MDAsIDB4MDAwMGZmZmYsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsCi0JMHgwNDAxZjAyMSwgMHg0MTc4MDgwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwMiwKLQkweDA0MDFmMDFkLCAweDA0MDFmOTJlLCAweDRhMDNkMDAwLCAweDAwMDUwMDA0LAotCTB4MDQwMWY5MmIsIDB4NGEwM2QwMDAsIDB4MDAwNTAwMDUsIDB4MDQwMWY5MjgsCi0JMHg0YTAzZDAwMCwgMHgwMDA1MDAwNCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMSwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDAxLCAweDA0MDFmMDBmLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDIsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWYwMGEsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjAwNywgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDEwLCAweDA0MDFmMDA0LCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLAotCTB4MDQwMWYwMWIsIDB4MDQwMWY5MTIsIDB4ODIwODJjMDAsIDB4MDAxMGE5NWYsCi0JMHg1MDE0MjgwMCwgMHg4MjA4MTUwMCwgMHhmZmZmZmZmZiwgMHgwNDAwMDAxMywKLQkweDA0MDFmOTBiLCAweDgwMDgxMDQwLCAweDgwMTQyOTAyLCAweDQwMDQwMDAwLAotCTB4ODAxNDA1MDAsIDB4MDQwMDAwMDcsIDB4NGEwM2QwMDAsIDB4MDAwNzAwMDYsCi0JMHgwNDAxZjkwMywgMHg0YTAzZDAwMCwgMHgwMDA3MDAwNywgMHgwNDAxZjAwNiwKLQkweDRhMDNkMDAwLCAweDAwMDcwMDA0LCAweDA0MDFmOGZkLCAweDRhMDNkMDAwLAotCTB4MDAwNzAwMDUsIDB4MDQwMWY3ZWMsIDB4MWMwMWYwMDAsIDB4NDE3ODA4MDAsCi0JMHg4MjA4MmMwMCwgMHgwMDEwYTk1ZiwgMHg1MDE0MjgwMCwgMHg4MjA4MTUwMCwKLQkweGZmZmZmZmZmLCAweDA0MDAwMDEwLCAweDA0MDFmOGYxLCAweDRhMDNkMDAwLAotCTB4MDAwNTAwMDEsIDB4MDQwMWY4ZWUsIDB4NTllODE4MDAsIDB4ODAwODEwNDAsCi0JMHg4MDE0MjkwMiwgMHg4YzBjMWQwNiwgMHgwNDAwMDAwNCwgMHg0MDE0MDAwMCwKLQkweDgwMDQwZDQwLCAweDA0MDFmOGU2LCAweDRhMDNkMDAwLCAweDAwMDcwMDAwLAotCTB4MDQwMWY3ZWYsIDB4MWMwMWYwMDAsIDB4NDgwYmM4NTcsIDB4NDgwYjUwNmQsCi0JMHg1OWM0MDAwMSwgMHg4MjAwMDUwMCwgMHhmZmZmZWZmZiwgMHg0ODAzODgwMSwKLQkweDQxNzgxODAwLCAweDA0MDFmOGM0LCAweDQxNzg1ODAwLCAweDQyMDA2MDAwLAotCTB4MDAwMDAwMWUsIDB4NDIwMDY4MDAsIDB4MDAwMDAwMDQsIDB4MDQwMWZmN2EsCi0JMHg0MjAwNjgwMCwgMHgwMDAwMDAzYywgMHgwNDAxZmY3ZCwgMHg0MTc4NTgwMCwKLQkweDQyMDA2MDAwLCAweDAwMDAwMDFlLCAweDQyMDA2ODAwLCAweDAwMDAwMDA0LAotCTB4MDQwMWZmNzEsIDB4NDE3ODY4MDAsIDB4MDQwMWZmNzUsIDB4NDE3ODU4MDAsCi0JMHg0MjAwNjAwMCwgMHgwMDAwMDAxZSwgMHg0MTc4NjgwMCwgMHgwNDAxZmY2YSwKLQkweDQyMDA2ODAwLCAweDAwMDAwMDAyLCAweDA0MDFmZjZkLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWZmNjQsIDB4NDIwMDY4MDAsIDB4MDAwMDAwZjUsCi0JMHgwNDAxZmY2NywgMHg0MTc4NTgwMCwgMHg0MjAwNjAwMCwgMHgwMDAwMDAxZSwKLQkweDQyMDA2ODAwLCAweDAwMDAwMDA0LCAweDA0MDFmZjViLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMjAsIDB4MDQwMWZmNWUsIDB4NTlhODEwNmQsIDB4MDQwMWY4NjUsCi0JMHg0MjAwMTgwMCwgMHgwMDAyMDBmNSwgMHgwNDAxZjg5NywgMHg1OWE4MTA2ZCwKLQkweDA0MDFmODc5LCAweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLAotCTB4NDIwMDY4MDAsIDB4MDAwMDAwMDQsIDB4MDQwMWZmNGIsIDB4NDE3ODY4MDAsCi0JMHgwNDAxZmY0ZiwgMHg1OWM0MDAwMSwgMHg4MjAwMDU0MCwgMHgwMDAwMTAwMCwKLQkweDQ4MDM4ODAxLCAweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLAotCTB4NDIwMDY4MDAsIDB4MDAwMDAwMTUsIDB4MDQwMWZmM2YsIDB4MDQwMWZmNGEsCi0JMHg0MDQwMDAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMiwgMHg0YzAwMDAwMCwKLQkweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMTUsIDB4MDQwMWZmMzQsIDB4NWMwMDAwMDAsIDB4NDAwMDY4MDAsCi0JMHgwNDAxZmYzNywgMHg0MTc4NTgwMCwgMHg0MjAwNjAwMCwgMHgwMDAwMDAxZSwKLQkweDQyMDA2ODAwLCAweDAwMDAwMDE1LCAweDA0MDFmZjJiLCAweDA0MDFmZjM2LAotCTB4NDA0MDAwMDAsIDB4ODIwMDA1MDAsIDB4MDAwMGZmZmQsIDB4NGMwMDAwMDAsCi0JMHg0MTc4NTgwMCwgMHg0MjAwNjAwMCwgMHgwMDAwMDAxZSwgMHg0MjAwNjgwMCwKLQkweDAwMDAwMDE1LCAweDA0MDFmZjIwLCAweDVjMDAwMDAwLCAweDQwMDA2ODAwLAotCTB4MDQwMWZmMjMsIDB4NDE3ODU4MDAsIDB4NDIwMDYwMDAsIDB4MDAwMDAwMWUsCi0JMHg0MjAwNjgwMCwgMHgwMDAwMDAxNCwgMHgwNDAxZmYxNywgMHgwNDAxZmYyMiwKLQkweDQwNDAwMDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDQwLCAweDRjMDAwMDAwLAotCTB4NDE3ODU4MDAsIDB4NDIwMDYwMDAsIDB4MDAwMDAwMWUsIDB4NDIwMDY4MDAsCi0JMHgwMDAwMDAxNCwgMHgwNDAxZmYwYywgMHg1YzAwMDAwMCwgMHg0MDAwNjgwMCwKLQkweDA0MDFmZjBmLCAweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLAotCTB4NDIwMDY4MDAsIDB4MDAwMDAwMTQsIDB4MDQwMWZmMDMsIDB4MDQwMWZmMGUsCi0JMHg0MDQwMDAwMCwgMHg4MjAwMDUwMCwgMHgwMDAwZmZiZiwgMHg0YzAwMDAwMCwKLQkweDQxNzg1ODAwLCAweDQyMDA2MDAwLCAweDAwMDAwMDFlLCAweDQyMDA2ODAwLAotCTB4MDAwMDAwMTQsIDB4MDQwMWZlZjgsIDB4NWMwMDAwMDAsIDB4NDAwMDY4MDAsCi0JMHgwNDAxZmVmYiwgMHg0YTAzODg4NiwgMHgwMDAwMjAyMCwgMHgwNDAxZjA0YywKLQkweDQ4MGJjODU3LCAweDgyMDgwNTgwLCAweDAwMDEwMDAwLCAweDA0MDIwMDA3LAotCTB4ODIwNDBkNDAsIDB4MDAwMTAwMDAsIDB4NDIwMDE4MDAsIDB4MDAwMDAwMDEsCi0JMHgwNDAxZjgyZCwgMHgwNDAxZjAwZiwgMHg4MjA4MDU4MCwgMHgwMDAwODAwMCwKLQkweDA0MDAwMDA3LCAweDgyMDQwZDQwLCAweDAwMDAwMDAwLCAweDQyMDAxODAwLAotCTB4MDA5MDAwMDEsIDB4MDQwMWY4MjQsIDB4MDQwMWYwMDYsIDB4ODIwNDBkNDAsCi0JMHgwMDAwODAwMCwgMHg0MjAwMTgwMCwgMHgwMDEwMDAwMSwgMHgwNDAxZjgxZSwKLQkweDFjMDFmMDAwLCAweDQ4MGJjODU3LCAweDgyMDgwNTgwLCAweDAwMDEwMDAwLAotCTB4MDQwMjAwMDgsIDB4NDIwMDE4MDAsIDB4MDAwMDAwYTEsIDB4MDQwMWY4MTYsCi0JMHg0MjAwMTgwMCwgMHgwMDAwMDBjMSwgMHgwNDAxZjgxMywgMHgwNDAxZjAxMSwKLQkweDgyMDgwNTgwLCAweDAwMDA4MDAwLCAweDA0MDAwMDA4LCAweDQyMDAxODAwLAotCTB4MDAwNDAwYTEsIDB4MDQwMWY4MGMsIDB4NDIwMDE4MDAsIDB4MDAyMDAwYzEsCi0JMHgwNDAxZjgwOSwgMHgwNDAxZjAwNywgMHg0MjAwMTgwMCwgMHgwMDA0MDBhMSwKLQkweDA0MDFmODA1LCAweDQyMDAxODAwLCAweDAwMDAwMGMxLCAweDA0MDFmODAyLAotCTB4MWMwMWYwMDAsIDB4NDgwZmM4NTcsIDB4NDE3ODU4MDAsIDB4NDIwMDYwMDAsCi0JMHgwMDAwMDAxZSwgMHg0MTc4NjgwMCwgMHgwNDAxZmViNywgMHg0MDBjNjgwMCwKLQkweDgwMzQ2OTYwLCAweDA0MDFmZWJhLCAweDQyMDA2ODAwLCAweDAwMDAwMDAxLAotCTB4MDQwMWZlYjEsIDB4NDAwYzY4MDAsIDB4MDQwMWZlYjUsIDB4NDIwMDY4MDAsCi0JMHgwMDAwMDAwMywgMHgwNDAxZmVhYywgMHgwNDAxZmViNywgMHg0MDQwMDAwMCwKLQkweDhjMDAwNTA0LCAweDA0MDIwN2ZjLCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwNjQsIDB4ODAwMDAwNDAsIDB4MDQwMjA3ZmYsIDB4MWMwMWYwMDAsCi0JMHg0YzVjMDAwMCwgMHg0YzYwMDAwMCwgMHg0MTc4YjgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0NzNiLCAweDA0MDIwMGZkLCAweDU5YThjMDI2LCAweDAyMDFmODAwLAotCTB4MDAxMDRlMGQsIDB4MDQwMDAwMDMsIDB4OGM2MGM1MDYsIDB4MDQwMDAwMGUsCi0JMHg4YzYwYzUwMCwgMHgwNDAyMDAwNCwgMHg4YzYwYzUwZSwgMHgwNDAwMDhmNiwKLQkweDA0MDFmMGYyLCAweDA0MDFmYWFmLCAweDA0MDIwMGYwLCAweDAyMDFmODAwLAotCTB4MDAxMDRlMGQsIDB4MDQwMjAwMDQsIDB4NGEwMzUwMWMsIDB4MDAwMGZmZmYsCi0JMHgwNDAxZjBlYSwgMHg4YzYwYzUwNCwgMHgwNDAwMDAwNCwgMHg0YTAzNTAxYywKLQkweDAwMDBmZmZmLCAweDA0MDFmMGU1LCAweDU5YThjMDEwLCAweDgyNjBjNTAwLAotCTB4MDAwMDAwZmYsIDB4NTlhODEwMTMsIDB4OGMwODE1MDAsIDB4MDQwMDAwNWQsCi0JMHg4YzA4MTUwMiwgMHgwNDAyMDA1YiwgMHg1OWE4YjgxYywgMHg4MjVjMGQ4MCwKLQkweDAwMDBmZmZmLCAweDA0MDIwMDAzLCAweDQyMDBiODAwLCAweDAwMDAwMDAxLAotCTB4ODA1YzExMDQsIDB4ODIwODY0MDAsIDB4MDAxMGJjMjAsIDB4NTAzMDA4MDAsCi0JMHg4MjVjMDUwMCwgMHgwMDAwMDAwMywgMHgwYzAxZjAwMSwgMHgwMDEwMWMyYywKLQkweDAwMTAxYzI3LCAweDAwMTAxYzJiLCAweDAwMTAxYzI5LCAweDgwMDQwOTEwLAotCTB4MDQwMWYwMDQsIDB4ODAwNDA5MzAsIDB4MDQwMWYwMDIsIDB4ODAwNDA5MjAsCi0JMHg4MjA0MDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMGQ4MCwgMHgwMDAwMDBmZiwKLQkweDA0MDAwMDBmLCAweDRjMDAwMDAwLCAweDgyMDAwNDAwLCAweDAwMTAxZWI1LAotCTB4NTAwMDA4MDAsIDB4ODAwNDA5MTAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwODAsCi0JMHg1YzAwMDAwMCwgMHgwNDAwMDAzMCwgMHg4MDYwMGQ4MCwgMHgwNDAwMDAyZSwKLQkweDgwMDAwNTQwLCAweDA0MDAwMDJjLCAweDA0MDFmMDBiLCAweDU5YTgxMDA1LAotCTB4ODIwODE1MDAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMmIsIDB4NTlhODEwMTMsCi0JMHg4NDA4MTU0MiwgMHg0ODBiNTAxMywgMHg0YTAzNTAxYywgMHgwMDAwZmZmZiwKLQkweDA0MDFmMDI4LCAweDRjMDAwMDAwLCAweDU5YTgwMDZmLCAweDhjMDAwNTAyLAotCTB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsIDB4MDIwMjA4MDAsIDB4MDAxMDRhZGEsCi0JMHg1YzAwMDAwMCwgMHgwNDAyMDAxYywgMHg0MTdhODgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA1OWI5LCAweDA0MDIwMDE2LCAweDAyMDFmODAwLCAweDAwMTA0NDNiLAotCTB4MDQwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDRhY2YsIDB4MDQwMWY4YjEsCi0JMHgwNDAwMDAwZiwgMHgwNDAxZjAwYywgMHg1OTljMDAxOSwgMHg4YzAwMDUwZSwKLQkweDA0MDIwMDA5LCAweDAyMDFmODAwLCAweDAwMTA0M2ZjLCAweDA0MDIwMDA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRhY2YsIDB4MDQwMWY5ZGQsIDB4MDQwMWY4YmUsCi0JMHgwNDAwMDAwMywgMHg4MDVjYjgwMCwgMHgwNDAxZjdiMiwgMHg0ODVmNTAxYywKLQkweDA0MDFmMDg2LCAweDRhMDM1MDFjLCAweDAwMDBmZmZmLCAweDA0MDFmMDgzLAotCTB4NDIwMDMwMDAsIDB4MDAwMDAwN2UsIDB4NTlhODAwMWMsIDB4ODIwMDE1ODAsCi0JMHgwMDAwZmZmZiwgMHgwNDAyMDAwNSwgMHg4MDAwMGQ4MCwgMHg0MDE4YjAwMCwKLQkweDQ4MDNjODU2LCAweDA0MDFmMDA5LCAweDgwMThiNDgwLCAweDA0MDAxMDA0LAotCTB4NDAwMDA4MDAsIDB4NDgwM2M4NTYsIDB4MDQwMWYwMDQsIDB4NGEwMzUwMWMsCi0JMHgwMDAwZmZmZiwgMHgwNDAxZjA3MSwgMHg0YzA0MDAwMCwgMHg0YzU4MDAwMCwKLQkweDgyMDQwNDAwLCAweDAwMTAxZWI1LCAweDUwMDAwMDAwLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4ODA2MDQ1ODAsIDB4MDQwMDAwNWMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNTliYSwgMHgwNDAyMDA2MSwgMHg1OWE4MDA2ZiwgMHg4YzAwMDUwMiwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDAyMDIwODAwLCAweDAwMTA0YWRhLAotCTB4NWMwMGIwMDAsIDB4NWMwMDA4MDAsIDB4MDQwMjA3ZDcsIDB4NGMwNDAwMDAsCi0JMHg0YzU4MDAwMCwgMHg4NDVjYmQwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywKLQkweDA0MDAwMDA4LCAweDU5OWMwMDE5LCAweDhjMDAwNTBlLCAweDA0MDIwMDQ3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ0MDEsIDB4MDQwMjAwNGMsIDB4MDQwMWYwMDIsCi0JMHg4NDVjYmQ0MCwgMHgwMjAxZjgwMCwgMHgwMDEwNGFjZiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODM2LCAweDA0MDIwMDA3LCAweDU5YTgwMDA1LCAweDhjMDAwNTAyLAotCTB4MDQwMDAwMzMsIDB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMzAsCi0JMHg1OWE4MTAxMywgMHg4YzA4MTUwMiwgMHgwNDAwMDAyNSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODU4LCAweDA0MDAwMDMxLCAweDhjNWNiZDAwLCAweDA0MDIwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ0NTUsIDB4MDQwMWYwMmMsIDB4MDQwMWY5YzgsCi0JMHgwNDAwMDAyYSwgMHg0MjAyNjAwMCwgMHgwMDEwYmJlOCwgMHg0OTM2NjAwOSwKLQkweDQ5N2E2MDA4LCAweDQxN2E3ODAwLCAweDA0MDFmOTIwLCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzkzZSwgMHgwNDAwMDAxZCwgMHg0MTc4MjgwMCwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDA4LCAweDRkNDAwMDAwLCAweDRkNDQwMDAwLCAweDU5MzY4YzAzLAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMjksIDB4MDIwMWY4MDAsIDB4MDAxMGEyNTgsCi0JMHg1YzAyODgwMCwgMHg1YzAyODAwMCwgMHgwNDAxZjAxMCwgMHg0OTM3Yzg1NywKLQkweDU5OWMwMDE5LCAweDhjMDAwNTBlLCAweDA0MDIwMDBjLCAweDA0MDFmOTY4LAotCTB4MDQwMWY4NDksIDB4MDQwMDAwMTEsIDB4MDQwMWYwMDgsIDB4NTlhODAwMTMsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAwMywgMHgwNDAxZjlhMSwgMHgwNDAwMDAwMywKLQkweDA0MDFmODI4LCAweDA0MDAwMDA5LCAweDVjMDBiMDAwLCAweDVjMDAwODAwLAotCTB4ODAwNDA4MDAsIDB4ODA1OGIwNDAsIDB4MDQwMjA3OTgsIDB4NGEwMzUwMWMsCi0JMHgwMDAwZmZmZiwgMHgwNDAxZjAwNSwgMHg0OTM3Yzg1NywgMHg1YzAwYjAwMCwKLQkweDVjMDAwODAwLCAweDQ4MDc1MDFjLCAweDVjMDBjMDAwLCAweDVjMDBiODAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGEwMzUwMWMsIDB4MDAwMDAwMDEsCi0JMHg0MjAyODgwMCwgMHgwMDAwMDdmZSwgMHg0MjAwMzAwMCwgMHgwMGZmZmZmZSwKLQkweDAyMDFmODAwLCAweDAwMTA0M2ZjLCAweDA0MDIwMDBjLCAweDA0MDFmOTQ0LAotCTB4MDQwMWY4MjUsIDB4MDQwMDAwMDksIDB4NTlhODAwMjYsIDB4ODQwMDA1NGUsCi0JMHg0ODAzNTAyNiwgMHgwMjAxZjgwMCwgMHgwMDEwOTBkNSwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDFjMDFmMDAwLCAweDgwMDAwNTgwLCAweDA0MDFmN2ZlLAotCTB4NDkzN2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDc2YzksIDB4MDQwMDAwMTUsCi0JMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDU5YTgwMDFiLCAweDgwMDAwMDAwLAotCTB4NDgwMzUwMWIsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMDQsIDB4NTk5YzAwMTksCi0JMHg4YzAwMDUwZSwgMHgwNDAwMDAwMywgMHg0MjAyNzAwMCwgMHgwMDAwMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NDkzN2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDc2YzksCi0JMHgwNDAwMDAxYywgMHg0OTM2NjAwOSwgMHg1OTM0MDQwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwN2ZlLCAweDA0MDAwMDA1LCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLAotCTB4MDQwMWY4YjIsIDB4NWMwMjc4MDAsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDNiZCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDU5YTgwMDFiLAotCTB4ODAwMDAwMDAsIDB4NDgwMzUwMWIsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMDIsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDQyMDI4ODAwLCAweDAwMDAwN2ZjLAotCTB4NDIwMDMwMDAsIDB4MDBmZmZmZmMsIDB4MDIwMWY4MDAsIDB4MDAxMDQzZmMsCi0JMHgwNDAyMDAwNSwgMHgwNDAxZjgwNSwgMHgwNDAwMDAwMywgMHg0YTAzNTAyNywKLQkweDAwMDBmZmZmLCAweDFjMDFmMDAwLCAweDQ5MzdjODU3LCAweDAyMDFmODAwLAotCTB4MDAxMDc2YzksIDB4MDQwMDAwMTQsIDB4NDkzNjYwMDksIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwMSwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDNiZCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4NTlhODAwMjgsIDB4ODAwMDAwMDAsIDB4NDgwMzUwMjgsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDFjMDFmMDAwLCAweDQ4MGJjODU3LCAweDQ5MmZjODU3LAotCTB4NGM1YzAwMDAsIDB4NDAwOGI4MDAsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZmQsCi0JMHg0MjAwMzAwMCwgMHgwMGZmZmZmZCwgMHgwMjAxZjgwMCwgMHgwMDEwNDNmYywKLQkweDA0MDIwMDFhLCAweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDA0MDAwMDE3LAotCTB4NDkzNjYwMDksIDB4NTkzNDAwMGEsIDB4ODQwMDA1NDQsIDB4NDgwMjY4MGEsCi0JMHg4MTJlNTljMCwgMHgwNDAwMDAwNSwgMHg1OTJjMDQwNCwgMHg4YzAwMDUxZSwKLQkweDA0MDAwMDAyLCAweDQ4ZWU2MDIxLCAweDQ5MmU2MDA4LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDEsIDB4NDg1ZTYwMWMsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMjIsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDgwMDAwNTgwLCAweDA0MDFmN2ZkLAotCTB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsIDB4NDk0M2M4NTcsCi0JMHg0OTNmYzg1NywgMHg0ZDM0MDAwMCwgMHg0ZDQ0MDAwMCwgMHg0YzU4MDAwMCwKLQkweDRkMmMwMDAwLCAweDRjNWMwMDAwLCAweDAyMDFmODAwLCAweDAwMTA2OThjLAotCTB4NGRmMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY3M2EsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjdlZSwgMHgwMjAxZjgwMCwgMHgwMDEwNjQ3ZiwgMHgwMjAxZjgwMCwKLQkweDAwMTA4MjJiLCAweDVjMDNlMDAwLCAweDAyMDAwODAwLCAweDAwMTA2OTgyLAotCTB4NDIwMGIwMDAsIDB4MDAwMDA3ZjAsIDB4NDE3YTg4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDI2NywgMHgwNDAyMDAxYSwgMHg4ZDNlN2QwNiwgMHgwNDAwMDAwNCwKLQkweDU5MzQwMjAwLCAweDhjMDAwNTBlLCAweDA0MDIwMDE1LCAweDhkM2U3ZDE4LAotCTB4MDQwMDAwMTAsIDB4NTkzNGI4MGYsIDB4ODA1Y2I5YzAsIDB4MDQwMDAwMDksCi0JMHg0OTQyNWEwNiwgMHg1OTJjYjgwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDgwNWNiOWMwLCAweDA0MDIwN2ZiLCAweDQ5N2E2ODBmLCAweDQ5N2E2ODEwLAotCTB4NDkzN2M4NTcsIDB4NGEwMjZjMDAsIDB4MDAwMDA3MDcsIDB4MDQwMWYwMDQsCi0JMHg0OTM3Yzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNDBlNCwgMHg4MTQ2ODgwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2UyLCAweDhkM2U3ZDAyLCAweDA0MDAwMDExLAotCTB4NDk3YjUwMWQsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZjAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAxMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAwNiwKLQkweDQ5MzdjODU3LCAweDRhMDI2YzAwLCAweDAwMDAwNzA3LCAweDAyMDFmODAwLAotCTB4MDAxMDQwZTQsIDB4ODE0Njg4MDAsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjYsCi0JMHg1YzAwYjgwMCwgMHg1YzAyNTgwMCwgMHg1YzAwYjAwMCwgMHg1YzAyODgwMCwKLQkweDVjMDI2ODAwLCAweDFjMDFmMDAwLCAweDVjMDAwMDAwLCAweDRjMDAwMDAwLAotCTB4NDgwM2M4NTcsIDB4NDkzM2M4NTcsIDB4NDkzZmM4NTcsIDB4NGQzNDAwMDAsCi0JMHg0ZDQwMDAwMCwgMHg0ZDQ0MDAwMCwgMHg0ZDJjMDAwMCwgMHg0YzVjMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTA2OThjLCAweDRkZjAwMDAwLCAweDU5MzI2ODA5LAotCTB4ODEzNjY5YzAsIDB4MDQwMDAwMjEsIDB4NTkzNjhjMDMsIDB4NDIwMjgwMDAsCi0JMHgwMDAwMDAyOSwgMHgwMjAxZjgwMCwgMHgwMDEwNjc5YiwgMHgwMjAxZjgwMCwKLQkweDAwMTA2N2Y2LCAweDAyMDFmODAwLCAweDAwMTA2NTQzLCAweDAyMDFmODAwLAotCTB4MDAxMGEwZGEsIDB4NDkzN2M4NTcsIDB4OGQzZTdkMTgsIDB4MDQwMDAwMTEsCi0JMHg1OTM0YjgwZiwgMHg4MDVjYjljMCwgMHgwNDAwMDAwYSwgMHg0MDVlNTgwMCwKLQkweDQ5NDI1YTA2LCAweDU5MmNiODAwLCAweDAyMDFmODAwLCAweDAwMDIwMzgxLAotCTB4ODA1Y2I5YzAsIDB4MDQwMjA3ZmEsIDB4NDk3YTY4MGYsIDB4NDk3YTY4MTAsCi0JMHg0OTM3Yzg1NywgMHg0YTAyNmMwMCwgMHgwMDAwMDcwNywgMHgwNDAxZjAwMywKLQkweDAyMDFmODAwLCAweDAwMTA0MGU0LCAweDVjMDNlMDAwLCAweDAyMDAwODAwLAotCTB4MDAxMDY5ODIsIDB4NWMwMGI4MDAsIDB4NWMwMjU4MDAsIDB4NWMwMjg4MDAsCi0JMHg1YzAyODAwMCwgMHg1YzAyNjgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDU5YTgwMDI2LCAweDhjMDAwNTA4LCAweDA0MDIwMDEyLCAweDU5MzA1MDA5LAotCTB4NDgyYmM4NTcsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMGQsCi0JMHgwNDAxZjgxMywgMHgwNDAyMDAwYiwgMHg1ODI4MDQwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwN2ZjLCAweDA0MDAwMDA4LCAweDU5YTgwMDFiLCAweDgwMDAwMDQwLAotCTB4NDgwM2M4NTcsIDB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsIDB4NDgwMzUwMWIsCi0JMHgxYzAxZjAwMCwgMHg1OWE4MDAyOCwgMHg4MDAwMDA0MCwgMHg0ODAzYzg1NywKLQkweDA0MDAxN2ZjLCAweDQ4MDM1MDI4LCAweDFjMDFmMDAwLCAweDU5MzAwMDA4LAotCTB4ODAwMDAxYzAsIDB4MDQwMjAwMDksIDB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMSwgMHgwNDAyMDAwNCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmMDAyLCAweDgwMDAwNTgwLCAweDFjMDFmMDAwLCAweDQ5MzdjODU3LAotCTB4NTkzNDAyMDAsIDB4ODQwMDA1MDIsIDB4NDgwMjZhMDAsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg0OTNmYzg1NywgMHg0OTQ3Yzg1NywgMHg0ZDQwMDAwMCwKLQkweDRkMzQwMDAwLCAweDRkNDQwMDAwLCAweDRjNTgwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsIDB4ODA2MGMxYzAsIDB4MDQwMjAwMDQsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAwNCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwN2YwLCAweDQxN2E4ODAwLCAweDQxNDQwMDAwLCAweDgxYWMwNDAwLAotCTB4NTAwMDAwMDAsIDB4ODAwMjZkNDAsIDB4MDQwMDAwMWEsIDB4NGQzYzAwMDAsCi0JMHg0MjAyNzgwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNDc0NSwKLQkweDVjMDI3ODAwLCAweDQyMDI4MDAwLCAweDAwMDAwMDI5LCAweDAyMDFmODAwLAotCTB4MDAxMDY3OWIsIDB4MDIwMWY4MDAsIDB4MDAxMDY3ZjYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjU0MywgMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDAwNSwKLQkweDQ5MzdjODU3LCAweDRhMDI2YzAwLCAweDAwMDAwNDA0LCAweDA0MDFmMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGEwZGEsCi0JMHg4MTQ2ODgwMCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdlMCwgMHg1YzAzZTAwMCwKLQkweDAyMDAwODAwLCAweDAwMTA2OTgyLCAweDVjMDBiMDAwLCAweDVjMDI4ODAwLAotCTB4NWMwMjY4MDAsIDB4NWMwMjgwMDAsIDB4MWMwMWYwMDAsIDB4NDkzN2M4NTcsCi0JMHg0OTQ3Yzg1NywgMHg0YzVjMDAwMCwgMHg0YzYwMDAwMCwgMHg0YzY0MDAwMCwKLQkweDU5YTgwMDEzLCAweDhjMDAwNTAwLCAweDA0MDAwMDFmLCAweDU5OWMwMDE3LAotCTB4OGMwMDA1MGEsIDB4MDQwMjAwMWMsIDB4NTkzNGJhMDIsIDB4ODI1Y2JkMDAsCi0JMHgwMDAwMDBmZiwgMHg0ODVmYzg1NywgMHg0MTc4YzAwMCwgMHg0MTc4YzgwMCwKLQkweDgyNjAwNDAwLCAweDAwMTBiYzIwLCAweDUwMDAyMDAwLCAweDgwNjBjMWMwLAotCTB4MDQwMDAwMDgsIDB4ODIxMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODIwMDJkODAsCi0JMHgwMDAwMDBmZiwgMHgwNDAwMDAwYywgMHg4MDVjMDU4MCwgMHgwNDAwMDAwZCwKLQkweDgwMTAyMTEwLCAweDgwNjRjODAwLCAweDgyNjQwNTgwLCAweDAwMDAwMDA0LAotCTB4MDQwMjA3ZjUsIDB4ODA2MGMwMDAsIDB4ODI2MDA1ODAsIDB4MDAwMDAwMjAsCi0JMHgwNDAyMDdlYiwgMHg0ODEzYzg1NywgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDVjMDBjODAwLCAweDVjMDBjMDAwLCAweDVjMDBiODAwLCAweDFjMDFmMDAwLAotCTB4NTlhODAwMjYsIDB4OGMwMDA1MTIsIDB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsCi0JMHgxYzAxZjAwMCwgMHgwMDAwN2VlZiwgMHgwMDAwN2RlOCwgMHgwMDAwN2NlNCwKLQkweDAwMDA4MGUyLCAweDAwMDA3YmUxLCAweDAwMDA4MGUwLCAweDAwMDA4MGRjLAotCTB4MDAwMDgwZGEsIDB4MDAwMDdhZDksIDB4MDAwMDgwZDYsIDB4MDAwMDgwZDUsCi0JMHgwMDAwODBkNCwgMHgwMDAwODBkMywgMHgwMDAwODBkMiwgMHgwMDAwODBkMSwKLQkweDAwMDA3OWNlLCAweDAwMDA3OGNkLCAweDAwMDA4MGNjLCAweDAwMDA4MGNiLAotCTB4MDAwMDgwY2EsIDB4MDAwMDgwYzksIDB4MDAwMDgwYzcsIDB4MDAwMDgwYzYsCi0JMHgwMDAwNzdjNSwgMHgwMDAwNzZjMywgMHgwMDAwODBiYywgMHgwMDAwODBiYSwKLQkweDAwMDA3NWI5LCAweDAwMDA4MGI2LCAweDAwMDA3NGI1LCAweDAwMDA3M2I0LAotCTB4MDAwMDcyYjMsIDB4MDAwMDgwYjIsIDB4MDAwMDgwYjEsIDB4MDAwMDgwYWUsCi0JMHgwMDAwNzFhZCwgMHgwMDAwODBhYywgMHgwMDAwNzBhYiwgMHgwMDAwNmZhYSwKLQkweDAwMDA2ZWE5LCAweDAwMDA4MGE3LCAweDAwMDA2ZGE2LCAweDAwMDA2Y2E1LAotCTB4MDAwMDZiYTMsIDB4MDAwMDZhOWYsIDB4MDAwMDY5OWUsIDB4MDAwMDY4OWQsCi0JMHgwMDAwODA5YiwgMHgwMDAwODA5OCwgMHgwMDAwNjc5NywgMHgwMDAwNjY5MCwKLQkweDAwMDA2NThmLCAweDAwMDA2NDg4LCAweDAwMDA2Mzg0LCAweDAwMDA2MjgyLAotCTB4MDAwMDgwODEsIDB4MDAwMDgwODAsIDB4MDAwMDYxN2MsIDB4MDAwMDYwN2EsCi0JMHgwMDAwODA3OSwgMHgwMDAwNWY3NiwgMHgwMDAwODA3NSwgMHgwMDAwODA3NCwKLQkweDAwMDA4MDczLCAweDAwMDA4MDcyLCAweDAwMDA4MDcxLCAweDAwMDA4MDZlLAotCTB4MDAwMDVlNmQsIDB4MDAwMDgwNmMsIDB4MDAwMDVkNmIsIDB4MDAwMDVjNmEsCi0JMHgwMDAwNWI2OSwgMHgwMDAwODA2NywgMHgwMDAwNWE2NiwgMHgwMDAwNTk2NSwKLQkweDAwMDA1ODYzLCAweDAwMDA1NzVjLCAweDAwMDA1NjVhLCAweDAwMDA1NTU5LAotCTB4MDAwMDgwNTYsIDB4MDAwMDgwNTUsIDB4MDAwMDU0NTQsIDB4MDAwMDUzNTMsCi0JMHgwMDAwNTI1MiwgMHgwMDAwNTE1MSwgMHgwMDAwNTA0ZSwgMHgwMDAwNGY0ZCwKLQkweDAwMDA4MDRjLCAweDAwMDA4MDRiLCAweDAwMDA0ZTRhLCAweDAwMDA0ZDQ5LAotCTB4MDAwMDgwNDcsIDB4MDAwMDRjNDYsIDB4MDAwMDgwNDUsIDB4MDAwMDgwNDMsCi0JMHgwMDAwODAzYywgMHgwMDAwODAzYSwgMHgwMDAwODAzOSwgMHgwMDAwODAzNiwKLQkweDAwMDA0YjM1LCAweDAwMDA4MDM0LCAweDAwMDA0YTMzLCAweDAwMDA0OTMyLAotCTB4MDAwMDQ4MzEsIDB4MDAwMDgwMmUsIDB4MDAwMDQ3MmQsIDB4MDAwMDQ2MmMsCi0JMHgwMDAwNDUyYiwgMHgwMDAwNDQyYSwgMHgwMDAwNDMyOSwgMHgwMDAwNDIyNywKLQkweDAwMDA4MDI2LCAweDAwMDA4MDI1LCAweDAwMDA0MTIzLCAweDAwMDA0MDFmLAotCTB4MDAwMDNmMWUsIDB4MDAwMDNlMWQsIDB4MDAwMDNkMWIsIDB4MDAwMDNjMTgsCi0JMHgwMDAwODAxNywgMHgwMDAwODAxMCwgMHgwMDAwM2IwZiwgMHgwMDAwM2EwOCwKLQkweDAwMDA4MDA0LCAweDAwMDAzOTAyLCAweDAwMDA4MDAxLCAweDAwMDA4MDAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDM4MDAsIDB4MDAwMDM3MDAsIDB4MDAwMDM2MDAsCi0JMHgwMDAwODAwMCwgMHgwMDAwMzUwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDA4MDAwLCAweDAwMDAzNDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsCi0JMHgwMDAwMzMwMCwgMHgwMDAwMzIwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDMxMDAsIDB4MDAwMDMwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsCi0JMHgwMDAwMmYwMCwgMHgwMDAwODAwMCwgMHgwMDAwMmUwMCwgMHgwMDAwMmQwMCwKLQkweDAwMDAyYzAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDJiMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDJhMDAsIDB4MDAwMDI5MDAsCi0JMHgwMDAwMjgwMCwgMHgwMDAwODAwMCwgMHgwMDAwMjcwMCwgMHgwMDAwMjYwMCwKLQkweDAwMDAyNTAwLCAweDAwMDAyNDAwLCAweDAwMDAyMzAwLCAweDAwMDAyMjAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDIxMDAsIDB4MDAwMDIwMDAsCi0JMHgwMDAwMWYwMCwgMHgwMDAwMWUwMCwgMHgwMDAwMWQwMCwgMHgwMDAwMWMwMCwKLQkweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDAxYjAwLCAweDAwMDAxYTAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDE5MDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsCi0JMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDAxODAwLCAweDAwMDA4MDAwLCAweDAwMDAxNzAwLCAweDAwMDAxNjAwLAotCTB4MDAwMDE1MDAsIDB4MDAwMDgwMDAsIDB4MDAwMDE0MDAsIDB4MDAwMDEzMDAsCi0JMHgwMDAwMTIwMCwgMHgwMDAwMTEwMCwgMHgwMDAwMTAwMCwgMHgwMDAwMGYwMCwKLQkweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDAwZTAwLCAweDAwMDAwZDAwLAotCTB4MDAwMDBjMDAsIDB4MDAwMDBiMDAsIDB4MDAwMDBhMDAsIDB4MDAwMDA5MDAsCi0JMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwMDgwMCwgMHgwMDAwMDcwMCwKLQkweDAwMDA4MDAwLCAweDAwMDAwNjAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDA1MDAsIDB4MDAwMDA0MDAsIDB4MDAwMDAzMDAsCi0JMHgwMDAwODAwMCwgMHgwMDAwMDIwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDA4MDAwLCAweDAwMDAwMTAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMDA4MDAwLAotCTB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsIDB4MDAwMDgwMDAsCi0JMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwgMHgwMDAwODAwMCwKLQkweDAwMDA4MDAwLCAweDAyMDFmODAwLCAweDAwMTAwODE5LCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NDkyZjQwMTYsIDB4MWMwMWYwMDAsIDB4ODNhMGFjMDAsCi0JMHgwMDAwMDAwNiwgMHg4M2EwMDU4MCwgMHgwMDEwYjJhMCwgMHgwNDAwMDAwYywKLQkweDQ5MmZjODU3LCAweDgxMmU1OWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4ODMyY2E0MDAsIDB4MDAwMDAwMDYsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMGQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHgwNDAxZjAwZiwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDEwLCAweDgzZTBhNDAwLCAweDAwMDAwMDIwLCAweDUwNTAwMDAwLAotCTB4ODA1MGEwMDAsIDB4NTA1MDA4MDAsIDB4OTAwNDA5YzAsIDB4ODAwNDA1NDAsCi0JMHg0NDAwYTgwMCwgMHg4MDUwYTAwMCwgMHg4MDU0YTgwMCwgMHg4MDU4YjA0MCwKLQkweDA0MDIwN2Y3LCAweDFjMDFmMDAwLCAweDU5YTAwMjA2LCAweDgyMDAwYzgwLAotCTB4MDAwMDAwN2YsIDB4MDQwMjEwYzksIDB4NTlhODA4MjEsIDB4MGMwMWYwMDEsCi0JMHgwMDEwMjA2NiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBmMCwKLQkweDAwMTAyMTEyLCAweDAwMTAyMGE2LCAweDAwMTAyMDY2LCAweDAwMTAyMTM0LAotCTB4MDAxMDIxNDUsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIxNTIsCi0JMHgwMDEwMjE2YSwgMHgwMDEwMjE4MiwgMHgwMDEwMjBhNiwgMHgwMDEwMjFiMSwKLQkweDAwMTAyMWUzLCAweDAwMTAyMGE2LCAweDAwMTAyMjBjLCAweDAwMTAyMGE2LAotCTB4MDAxMDIyNjksIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMjI4MCwgMHgwMDEwMjJiOSwgMHgwMDEwMjBhNiwKLQkweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LAotCTB4MDAxMDIyZWUsIDB4MDAxMDIwYTYsIDB4MDAxMDIzNDAsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjM0NSwKLQkweDAwMTAyM2JlLCAweDAwMTAyMGE2LCAweDAwMTAyM2M1LCAweDAwMTAyMGE2LAotCTB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMjNjNywgMHgwMDEwMjQ0NSwgMHgwMDEwMjU4NSwgMHgwMDEwMjBhNiwKLQkweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LAotCTB4MDAxMDI1OTQsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwKLQkweDAwMTAyNWIxLCAweDAwMTAyNjA0LCAweDAwMTAyNjYwLCAweDAwMTAyNjc0LAotCTB4MDAxMDI2OTYsIDB4MDAxMDI4ZDEsIDB4MDAxMDJjNjAsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwKLQkweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LAotCTB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDIwYTYsIDB4MDAxMDJkOWYsCi0JMHgwMDEwMmUxMywgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwgMHgwMDEwMmU4MSwKLQkweDAwMTAyMGE2LCAweDAwMTAyZjFmLCAweDAwMTAyZmQxLCAweDAwMTAyMGE2LAotCTB4MDAxMDIwYTYsIDB4MDAxMDMwMDgsIDB4MDAxMDMwNjQsIDB4MDAxMDIwYTYsCi0JMHgwMDEwMzBiYywgMHgwMDEwMzIyMCwgMHgwMDEwMjBhNiwgMHgwMDEwMzIzNCwKLQkweDAwMTAzMmJmLCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LCAweDAwMTAyMGE2LAotCTB4MDAxMDIwYTYsIDB4MDAxMDMzMmYsIDB4MDAxMDMzMzMsIDB4MDAxMDMzNTIsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMzNmNCwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwKLQkweDAwMTAzNDIxLCAweDAwMTAyMGE2LCAweDAwMTAzNDRmLCAweDAwMTAyMGE2LAotCTB4MDAxMDIwYTYsIDB4MDAxMDM0YjYsIDB4MDAxMDM1YzMsIDB4MDAxMDM2MjAsCi0JMHgwMDEwMjBhNiwgMHgwMDEwMzY4NiwgMHgwMDEwMjBhNiwgMHgwMDEwMjBhNiwKLQkweDAwMTAzNmRiLCAweDAwMTAzNzNlLCAweDAwMTAyMGE2LCAweDQ4ZWZjODU3LAotCTB4NDAzMWQ4MDAsIDB4NThlZjQwMGIsIDB4NThlYzAwMDIsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDIwMCwgMHgwNDAwMDA0NSwgMHg0OGVmYzg1NywgMHg0YTAzNDIwNiwKLQkweDAwMDA0MDAwLCAweDAyMDFmODAwLCAweDAwMTAzODJmLCAweDgzYTAwNTgwLAotCTB4MDAxMGIyYTAsIDB4MDQwMDAwMGQsIDB4NThlZTU4MGEsIDB4NGQyYzAwMDAsCi0JMHgwNDAxZjg1NiwgMHg0MWEyNTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgzYSwKLQkweDQwZWU1ODAwLCAweDAyMDFmODAwLCAweDAwMTAwODNhLCAweDVjMDI1ODAwLAotCTB4MDIwMWYwMDAsIDB4MDAwMjAzODEsIDB4MDQwMjYwMDcsIDB4NTlhMDAwMWQsCi0JMHg4NDAwMDU0MiwgMHg0ODAzNDAxZCwgMHg0YTAxZDgwOSwgMHgwMDEwMjA3YSwKLQkweDFjMDFmMDAwLCAweDU5YTAwMjA2LCAweDgyMDAwZDgwLCAweDAwMDA0MDAwLAotCTB4MDQwMDAwMDYsIDB4OTAwMDAxYzAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMTEsCi0JMHg0ODAzYzAxMSwgMHgwNDAxZjAwNSwgMHg5MDAwMDFjMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDEwLCAweDQ4MDNjMDExLCAweDA0MDFmODQ0LCAweDU5ZTAwMDE3LAotCTB4OGMwMDA1MDgsIDB4MDQwMjAwMGMsIDB4NDIwM2UwMDAsIDB4MzAwMDAwMDEsCi0JMHg0MjAzZTAwMCwgMHg0MDAwMDAwMCwgMHg0MGVlNTgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODNhLCAweDU5YTAwMDFkLCAweDg0MDAwNTA0LCAweDQ4MDM0MDFkLAotCTB4MWMwMWYwMDAsIDB4NGEwM2MwMTcsIDB4MDAwMDAwMDAsIDB4NTlhMDAyMDYsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwNDAwMCwgMHgwNDAwMDdmMCwgMHg0YTAzYzAxNywKLQkweDAwMDAwMDAxLCAweDA0MDFmN2VkLCAweDQ4MDNjODU2LCAweDRhMDM0MjA2LAotCTB4MDAwMDQwMDEsIDB4MDQwMWY3YzAsIDB4NDgwM2M4NTYsIDB4NGEwMzQyMDYsCi0JMHgwMDAwNDAwMiwgMHgwNDAxZjdiYywgMHg0ODAzYzg1NiwgMHg0YTAzNDIwNiwKLQkweDAwMDA0MDAzLCAweDA0MDFmN2I4LCAweDQ4MDNjODU2LCAweDRhMDM0MjA2LAotCTB4MDAwMDQwMDUsIDB4MDQwMWY3YjQsIDB4NDgwM2M4NTYsIDB4NGEwMzQyMDYsCi0JMHgwMDAwNDAwNiwgMHgwNDAxZjdiMCwgMHg0ODAzYzg1NiwgMHg0YTAzNDIwNiwKLQkweDAwMDA0MDBiLCAweDA0MDFmN2FjLCAweDQ4MDNjODU2LCAweDRhMDM0MjA2LAotCTB4MDAwMDQwMGMsIDB4MDQwMWY3YTgsIDB4NDgwM2M4NTYsIDB4NGEwMzQyMDYsCi0JMHgwMDAwNDAwYywgMHgwNDAxZjdhNCwgMHg1OGVjYTgwYSwgMHg4MDU0YTljMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDgzYTBhNDAwLCAweDAwMDAwMDA2LAotCTB4ODI1NGFjMDAsIDB4MDAwMDAwMDYsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMGQsCi0JMHgwMjAxZjAwMCwgMHgwMDEwYTkzZSwgMHg1OWEwMDIwNiwgMHg0ODAzYzg1NywKLQkweDU5YTAwNDA2LCAweDQ4MDNjODU3LCAweDU5YTAwMjA3LCAweDQ4MDNjODU3LAotCTB4NTlhMDA0MDcsIDB4NDgwM2M4NTcsIDB4NTlhMDAyMDgsIDB4NDgwM2M4NTcsCi0JMHg1OWEwMDQwOCwgMHg0ODAzYzg1NywgMHg1OWEwMDIwOSwgMHg0ODAzYzg1NywKLQkweDgzZTBhYzAwLCAweDAwMDAwMDIwLCAweDgzYTBhNDAwLCAweDAwMDAwMDA2LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMTAsIDB4NTA1MDAwMDAsIDB4NDQwMGE4MDAsCi0JMHg4MDU0YTgwMCwgMHg5MDAwMDFjMCwgMHg0NDAwYTgwMCwgMHg4MDU0YTgwMCwKLQkweDgwNTBhMDAwLCAweDgwNThiMDQwLCAweDA0MDIwN2Y4LCAweDFjMDFmMDAwLAotCTB4NTlhMDA0MDYsIDB4ODAwMDAwYzIsIDB4NTlhMDBhMDcsIDB4OTAwNDA5YzAsCi0JMHg4MDA0MDU0MCwgMHg4NDAwMDU0MCwgMHg1OWEwMGMwNywgMHg4YzA0MGQwMCwKLQkweDA0MDAwMDE4LCAweDU5YTgwODZmLCAweDhjMDQwZDAwLCAweDA0MDIwN2JiLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNjQsIDB4ODAwNDA4NDAsIDB4MDQwMDAwMDcsCi0JMHg0YTAzMDAwMCwgMHgwMDAwMDAwMSwgMHg0MDAwMDAwMCwgMHg1OTgwMTAwMCwKLQkweDhjMDgxNTAwLCAweDA0MDAwN2Y5LCAweDA0MDAwMDA1LCAweDQ4MDMwMDA0LAotCTB4NGEwMzAwMDAsIDB4MDAwMDAwMDAsIDB4MDQwMWY3NWMsIDB4NGEwMzAwMDAsCi0JMHgwMDAwMDAwMCwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwNCwgMHgwNDAwMDdhMywKLQkweDQ4MDM4ODBlLCAweDA0MDFmNzU1LCAweDU5YTAwNDA2LCAweDgwMDAwMGMyLAotCTB4NTlhMDBjMDcsIDB4OGMwNDBkMDAsIDB4MDQwMDAwMWEsIDB4NTlhODA4NmYsCi0JMHg4YzA0MGQwMCwgMHgwNDAyMDc5ZCwgMHg0MjAwMDgwMCwgMHgwMDAwMDA2NCwKLQkweDgwMDQwODQwLCAweDA0MDAwMDA3LCAweDRhMDMwMDAwLCAweDAwMDAwMDAxLAotCTB4NDAwMDAwMDAsIDB4NTk4MDEwMDAsIDB4OGMwODE1MDAsIDB4MDQwMDA3ZjksCi0JMHgwNDAwMDAwNywgMHg0ODAzMDAwNCwgMHg1OTgwMDgwNSwgMHg0ODA3NDQwNiwKLQkweDRhMDMwMDAwLCAweDAwMDAwMDAwLCAweDA0MDFmNzNjLCAweDRhMDMwMDAwLAotCTB4MDAwMDAwMDAsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsIDB4MDQwMDA3ODMsCi0JMHg0ODAzODgwZSwgMHg1OWM0MDgwZiwgMHg0ODA3NDQwNiwgMHgwNDAxZjczMywKLQkweDU5YTAxYzA2LCAweDU5YTAwMjA3LCAweDkwMGMxOWMwLCAweDgwMGMxZDQwLAotCTB4NTgwYzA4MDMsIDB4ODAwMDA1ODAsIDB4NTAwYzEwMDAsIDB4ODAwODA0MDAsCi0JMHg4MDBjMTgwMCwgMHg4MDA0MDg0MCwgMHgwNDAyMDdmYywgMHg0ODAzNDQwNiwKLQkweDkwMDAwMWMwLCAweDQ4MDM0MjA3LCAweDgwMDAwMWMwLCAweDA0MDAwNzIzLAotCTB4MDQwMWY3NmEsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsIDB4NGEwMzQyMDcsCi0JMHgwMDAwMDAwMCwgMHg0YTAzNDQwNywgMHgwMDAwMDAxMiwgMHg1OWE4MDAwZCwKLQkweDQ4MDM0MjA4LCAweDkwMDAwMWMwLCAweDQ4MDM0NDA4LCAweDRhMDM0MjA5LAotCTB4MDAwMDAwMDIsIDB4MDQwMWY3MTUsIDB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsCi0JMHg5MDA4MTFjMCwgMHg4MDA4MTU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDU5YTAwYTA4LCAweDU5YTAwNDA4LAotCTB4OTAwNDA5YzAsIDB4ODAwNDBkNDAsIDB4NTlhMDAyMGEsIDB4ODIwMDI0ODAsCi0JMHgwMDAwMDAxMCwgMHgwNDAwMTc1NSwgMHg1OWEwMjQwNiwgMHg5MDAwMDFjMCwKLQkweDgwMTAwNTQwLCAweDU5YTgyODBkLCAweDgwMTQyNDgwLCAweDA0MDAxNzRmLAotCTB4MDIwMWYwMDAsIDB4MDAxMDM4M2UsIDB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsCi0JMHg5MDA4MTFjMCwgMHg4MDA4MTU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDU5YTAwYTA4LCAweDU5YTAwNDA4LAotCTB4OTAwNDA5YzAsIDB4ODAwNDBkNDAsIDB4NTlhMDAyMGEsIDB4ODIwMDI0ODAsCi0JMHgwMDAwMDAxMCwgMHgwNDAwMTczZCwgMHg1OWEwMjQwNiwgMHg5MDAwMDFjMCwKLQkweDgwMTAwNTQwLCAweDU5YTgyODBkLCAweDgwMTQyNDgwLCAweDA0MDAxNzM3LAotCTB4MDIwMWYwMDAsIDB4MDAxMDM4NDEsIDB4NTlhMDI0MDcsIDB4NTlhMDAyMDcsCi0JMHg5MDEwMjFjMCwgMHg4MDEwMjU0MCwgMHg1OWEwMWEwYSwgMHg1OWEwMDQwNiwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDQxNzgxMDAwLCAweDQyMDAwMDAwLAotCTB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsIDB4MjQzMjAwMDEsCi0JMHgwNDAwMTAxNiwgMHg4MjBjMDU4MCwgMHgwMDAwN2MwMCwgMHgwNDAwMDAxMywKLQkweDgyMGMwNDgwLCAweDAwMDA3YTAwLCAweDA0MDAxMDEwLCAweDgyMGMwNDgwLAotCTB4MDAwMDdjZmYsIDB4MDQwMjEwMGQsIDB4NDIwMDA4MDAsIDB4MDAwMDAwNjQsCi0JMHg4MDA0MDg0MCwgMHgwNDAwMDAwNywgMHg0YTAzMDAwMCwgMHgwMDAwMDAwMSwKLQkweDQwMDAwMDAwLCAweDU5ODAwMDAwLCAweDhjMDAwNTAwLCAweDA0MDAwN2Y5LAotCTB4MDQwMDAwMDgsIDB4ODAwODEwMDAsIDB4NDQxMDE4MDAsIDB4ODAwODExYzAsCi0JMHgwNDAwMDZiZSwgMHg0YTAzMDAwMCwgMHgwMDAwMDAwMCwgMHgwNDAxZjZiYiwKLQkweDRhMDMwMDAwLCAweDAwMDAwMDAwLCAweDRhMDM0NDA2LCAweDAwMDAwMDA0LAotCTB4MDQwMWY3MDIsIDB4NTlhMDFhMGEsIDB4NTlhMDA0MDYsIDB4OTAwYzE5YzAsCi0JMHg4MDBjMWQ0MCwgMHg0MTc4MTAwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMTAwMCwKLQkweDUwMDAwMDAwLCAweDgyMDAwNDgwLCAweDI0MzIwMDAxLCAweDA0MDAxMDE2LAotCTB4ODIwYzA1ODAsIDB4MDAwMDdjMDAsIDB4MDQwMDAwMTMsIDB4ODIwYzA0ODAsCi0JMHgwMDAwN2EwMCwgMHgwNDAwMTAxMCwgMHg4MjBjMDQ4MCwgMHgwMDAwN2NmZiwKLQkweDA0MDIxMDBkLCAweDQyMDAwODAwLCAweDAwMDAwMDY0LCAweDgwMDQwODQwLAotCTB4MDQwMDAwMDcsIDB4NGEwMzAwMDAsIDB4MDAwMDAwMDEsIDB4NDAwMDAwMDAsCi0JMHg1OTgwMDAwMCwgMHg4YzAwMDUwMCwgMHgwNDAwMDdmOSwgMHgwNDAwMDAwZiwKLQkweDgwMDgxMDAwLCAweDUwMGMwMDAwLCAweDgyMDAwZDAwLCAweDAwMDBmZmZmLAotCTB4NDgwNzQyMDcsIDB4ODIwMDBkMDAsIDB4ZmZmZjAwMDAsIDB4OTAwNDA5YzAsCi0JMHg0ODA3NDQwNywgMHg4MDA4MTFjMCwgMHgwNDAwMDY4YywgMHg0YTAzMDAwMCwKLQkweDAwMDAwMDAwLCAweDA0MDFmNjg5LCAweDRhMDMwMDAwLCAweDAwMDAwMDAwLAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsIDB4MDQwMWY2ZDAsIDB4NTlhMDA0MDYsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAyMCwgMHg1OWEwMTIwNywgMHg1OWEwMWMwNywKLQkweDU5YTAyMjA4LCAweDQ4MGI1MDU0LCAweDQ4MGY1MDU1LCAweDQ4MTM1MDU2LAotCTB4NTljNDA4MDEsIDB4ODIwNDBkMDAsIDB4MDAwMTgwMDAsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDAwMCwgMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwgMHgwMDAwODAwMCwKLQkweDA0MDAwMDA4LCAweDgyMDQwNTgwLCAweDAwMDEwMDAwLCAweDA0MDAwMDA3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDAwODAwMDAsIDB4MDQwMWYwMDQsCi0JMHg0MDBjMDAwMCwgMHgwNDAxZjAwMiwgMHg0MDEwMDAwMCwgMHg4MDAwMDExMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMGUwLCAweDAyMDFmODAwLCAweDAwMTAxOWIxLAotCTB4MDQwMWYwMDcsIDB4NTlhODEwNTQsIDB4NTlhODE4NTUsIDB4NTlhODIwNTYsCi0JMHg0ODBiNDIwNywgMHg0ODBmNDQwNywgMHg0ODEzNDIwOCwgMHgwNDAxZjY1YiwKLQkweDRkMmMwMDAwLCAweDRkMzQwMDAwLCAweDRkMzAwMDAwLCAweDRkNDQwMDAwLAotCTB4NTlhMjhjMDYsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDQwMDAwMDYsCi0JMHg1YzAyODgwMCwgMHg1YzAyNjAwMCwgMHg1YzAyNjgwMCwgMHg1YzAyNTgwMCwKLQkweDA0MDFmNjllLCAweDU5YTA0NDA3LCAweDU5YTAwMjA3LCAweDkwMDAwMWMwLAotCTB4ODAyMDQ1NDAsIDB4MDQwMWY4MWUsIDB4MDQwMDAwMDksIDB4NGEwMzQyMDgsCi0JMHgwMDAwMDAwMSwgMHg0YTAzNDQwNiwgMHgwMDAwZmZmZiwgMHg0YTAzNDIwNywKLQkweDAwMDBmZmZmLCAweDQ5N2I0NDA3LCAweDA0MDFmMDBiLCAweDA0MDFmODIyLAotCTB4MDQwMDAwMGUsIDB4NGEwMzQyMDgsIDB4MDAwMDAwMDIsIDB4NTkzMDA0MDIsCi0JMHg0ODAzNDQwNiwgMHg1OTMwMDIwMiwgMHg0ODAzNDIwNywgMHg1OTMwMDIwNiwKLQkweDQ4MDM0NDA3LCAweDVjMDI4ODAwLCAweDVjMDI2MDAwLCAweDVjMDI2ODAwLAotCTB4NWMwMjU4MDAsIDB4MDQwMWY2MzEsIDB4NWMwMjg4MDAsIDB4NWMwMjYwMDAsCi0JMHg1YzAyNjgwMCwgMHg1YzAyNTgwMCwgMHgwNDAxZjY3OCwgMHg0OTM3Yzg1NiwKLQkweDQ4MjNjODU2LCAweDRkMmMwMDAwLCAweDU5MzQwMDBmLCAweDgwMDI1ZDQwLAotCTB4MDQwMDAwMDcsIDB4NTkyYzAwMDUsIDB4ODAyMDA1ODAsIDB4NTkyYzAwMDAsCi0JMHgwNDAyMDdmYiwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAyNTgwMCwKLQkweDFjMDFmMDAwLCAweDQ4MjNjODU3LCAweDRkMmMwMDAwLCAweDRkMzAwMDAwLAotCTB4NDIwMjYwMDAsIDB4MDAxMGNmYzAsIDB4NTkzMDA0MDYsIDB4ODIwMDBkODAsCi0JMHgwMDAwMDAwMywgMHgwNDAwMDAwNCwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwNiwKLQkweDA0MDIwMDA3LCAweDU5MzI1ODA4LCAweDgxMmU1OWMwLCAweDA0MDAwMDA0LAotCTB4NTkyYzAwMDUsIDB4ODAyMDA1ODAsIDB4MDQwMDAwMGEsIDB4ODMzMjY0MDAsCi0JMHgwMDAwMDAyNCwgMHg0MTU4MDAwMCwgMHg4MTMwMDQ4MCwgMHgwNDAwMTdlZiwKLQkweDgwMDAwNTgwLCAweDVjMDI2MDAwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4NWMwMjYwMDAsIDB4NWMwMjU4MDAsCi0JMHgxYzAxZjAwMCwgMHg4M2EwMDU4MCwgMHgwMDEwYjJhMCwgMHgwNDAyMDYzYiwKLQkweDU5YTgwMDZmLCAweDhjMDAwNTAwLCAweDA0MDIwMDAzLCAweDRhMDMwMDAwLAotCTB4MDAwMDAwMDAsIDB4NGEwMzQyMDYsIDB4MDAwMDQwMDAsIDB4NGEwM2MwMTEsCi0JMHg0MDAwMDAxMCwgMHgwNDAxZmU1ZCwgMHg1OWUwMDAxNywgMHg4YzAwMDUwOCwKLQkweDA0MDAwMDAzLCAweDRhMDNjMDE3LCAweDAwMDAwMDAwLCAweDQyMDNlMDAwLAotCTB4MzAwMDAwMDEsIDB4NDIwM2UwMDAsIDB4NDAwMDAwMDAsIDB4MDQwMWYwMDAsCi0JMHg1OWEwMGMwNiwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNywgMHg4MzZjMDU4MCwKLQkweDAwMDAwMDAwLCAweDA0MDAwMDA0LCAweDRhMDM0NDA2LCAweDAwMDAwMDFhLAotCTB4MDQwMWY2MmEsIDB4NDIwMDcwMDAsIDB4MDAxMGIzM2YsIDB4NTgzODFjMDEsCi0JMHg1ODM4MjIwMiwgMHg4YzA0MGQwMCwgMHgwNDAwMDAwYiwgMHg1OWEwMTIwNywKLQkweDgyMDgwNTAwLCAweDAwMDBmMDAzLCAweDA0MDIwNjI0LCAweDgyMDgwNDgwLAotCTB4MDAwMDA4NDEsIDB4MDQwMjE2MjEsIDB4ODIwODA0ODAsIDB4MDAwMDAxMDAsCi0JMHgwNDAwMTYxZSwgMHg4YzA0MGQwNiwgMHgwNDAwMDAwMywgMHg0YTAzNzhlNCwKLQkweDAwMGMwMDAwLCAweDhjMDQwZDA0LCAweDA0MDAwMDBjLCAweDQyMDAwMDAwLAotCTB4MDAwMDEwMDAsIDB4NTAwMDAwMDAsIDB4ODIwMDA0ODAsIDB4MjQyMjAwMDEsCi0JMHgwNDAyMDAwMywgMHg4NDA0MGQwNCwgMHgwNDAxZjAwNCwgMHg1OWUwMDAwMiwKLQkweDg0MDAwNTQ4LCAweDQ4MDNjMDAyLCAweDhjMDQwZDAyLCAweDA0MDAwMDA1LAotCTB4NDIwMDI4MDAsIDB4MDAwMDc2MDAsIDB4NGEwMDI4MDUsIDB4ZDAwMDAwMDAsCi0JMHg0MDA0MDAwMCwgMHg4MDBjMDU0MCwgMHg0ODAwNzQwMSwgMHg4YzA0MGQwMCwKLQkweDA0MDAwMDAyLCAweDQ4MDg3MjAyLCAweDQ4MGY0NDA2LCAweDQ4MTM0MjA3LAotCTB4MDQwMWY1YWUsIDB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsIDB4NTlhMjhjMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODQyLCAweDA0MDAwMDA5LCAweDRhMDM0NDA2LCAweDAwMDAwMDA5LAotCTB4NWMwMjY4MDAsIDB4NWMwMjg4MDAsIDB4MDQwMWY1ZWMsIDB4NWMwMjY4MDAsCi0JMHg1YzAyODgwMCwgMHgwNDAxZjVlZCwgMHg1OWEwMTIwNywgMHg1OWEwMWMwNywKLQkweDU5MzQ0MDBhLCAweDgyMjAzZDAwLCAweDAwMDBlMDAwLCAweDgwMWMzOTFhLAotCTB4OGMwODE1MDAsIDB4MDQwMDAwMTksIDB4ODIwYzBkMDAsIDB4MDAwMDAwMDcsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAwNywgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAxLCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMjA3ZWIsIDB4ODIyMDQ1MDAsIDB4ZmZmZjFmZmYsIDB4ODAwNDAwZGEsCi0JMHg4MDIwMDU0MCwgMHg0ODAyNjgwYSwgMHg0YzFjMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA2OThjLCAweDAyMDFmODAwLCAweDAwMTA0YWZkLCAweDAyMDFmODAwLAotCTB4MDAxMDY5ODIsIDB4NWMwMDM4MDAsIDB4NDgxZjQ0MDcsIDB4NWMwMjY4MDAsCi0JMHg1YzAyODgwMCwgMHgwNDAxZjU3OSwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNCwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAxLCAweDA0MDFmNWMwLCAweDgzNmMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMTAsIDB4NTlhODAwMTAsIDB4NDk3YjQ0MDYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAwMDAwZiwgMHg4MjAwMGQwMCwKLQkweDAwZmZmZjAwLCAweDA0MDIwMDBjLCAweDgyMDAwYzAwLCAweDAwMTAxZWI1LAotCTB4NTAwNDA4MDAsIDB4ODAwNDA5MTAsIDB4ODIwNDE1ODAsIDB4MDAwMDAwODAsCi0JMHgwNDAyMDAwNCwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwNywgMHgwNDAxZjVhYiwKLQkweDQ4MDc0NDA2LCAweDgyMDAwZDAwLCAweDAwMDBmZmZmLCAweDQ4MDc0MjA3LAotCTB4ODAwMDAxMjAsIDB4NDgwMzQ0MDcsIDB4NTlhODAwMjYsIDB4ODIwMDE1MDAsCi0JMHgwMDAwMDEwMCwgMHg0ODBiNDQwOSwgMHg4YzAwMDUwMiwgMHgwNDAwMDAxZiwKLQkweDhjMDAwNTA2LCAweDA0MDAwMDA5LCAweDgyMDAwZDAwLCAweDAwMDAwMDBhLAotCTB4ODIwNDBkODAsIDB4MDAwMDAwMGEsIDB4MDQwMjAwMDQsIDB4NGEwMzQyMDksCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAyMiwgMHg4YzAwMDUwYSwgMHgwNDAwMDAwOSwKLQkweDgyMDAwZDAwLCAweDAwMDAwMDIyLCAweDgyMDQwZDgwLCAweDAwMDAwMDIyLAotCTB4MDQwMjAwMDQsIDB4NGEwMzQyMDksIDB4MDAwMDAwMDMsIDB4MDQwMWYwMTgsCi0JMHg4YzAwMDUwOCwgMHgwNDAwMDAwOSwgMHg4MjAwMGQwMCwgMHgwMDAwMDAxMiwKLQkweDgyMDQwZDgwLCAweDAwMDAwMDEyLCAweDA0MDIwMDA0LCAweDRhMDM0MjA5LAotCTB4MDAwMDAwMDIsIDB4MDQwMWYwMGUsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHgwNDAyMDAwNCwgMHg0YTAzNDIwOSwgMHgwMDAwMDAwNCwgMHgwNDAxZjUyZiwKLQkweDhjMDAwNTA2LCAweDA0MDAwMDA0LCAweDRhMDM0NDA2LCAweDAwMDAwMDA1LAotCTB4MDQwMWY1NzYsIDB4NGEwMzQyMDksIDB4MDAwMDAwMDAsIDB4MDQwMWY1MjcsCi0JMHg1OWE4MDAzNywgMHg0ODAzNDQwNywgMHg1OWE4MDAzOCwgMHg0ODAzNDIwOSwKLQkweDA0MDFmNTIyLCAweDQyMDA3ODAwLCAweDAwMTBiNmViLCAweDU5YTAwNDA2LAotCTB4NDgwM2M4NTcsIDB4ODIwMDBjODAsIDB4MDAwMDAwMDcsIDB4MDQwMjE1NmIsCi0JMHgwYzAxZjAwMSwgMHgwMDEwMjM1NCwgMHgwMDEwMjM1NSwgMHgwMDEwMjM2MywKLQkweDAwMTAyMzc2LCAweDAwMTAyMzk3LCAweDAwMTAyMzU0LCAweDAwMTAyMzU0LAotCTB4MDQwMWY1NjIsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMDA1NWIsCi0JMHg1OWEwMGEwNywgMHg1OWEwMDQwNywgMHg5MDAwMDFjMCwgMHg4MDA0MGQ0MCwKLQkweDQ4MDdjODU3LCAweDU5YTAwYTA4LCAweDU5YTAwNDA4LCAweDkwMDAwMWMwLAotCTB4ODAwNDBkNDAsIDB4NDgwN2M4NTcsIDB4MDQwMWYwNTYsIDB4ODM2YzA1ODAsCi0JMHgwMDAwMDAwMCwgMHgwNDAwMDU0ZCwgMHg1OWEwMDQwNywgMHg1OWEwMTIwNywKLQkweDkwMDAwMWMwLCAweDgwMDgxNTQwLCAweDU5YTAwNDA4LCAweDU5YTAxYTA4LAotCTB4OTAwMDAxYzAsIDB4ODAwYzFkNDAsIDB4NDIwMDAwMDAsIDB4MDAxMGJmYmUsCi0JMHg0ODBmYzg1NywgMHg0ODBiYzg1NywgMHg0MjAwMDgwMCwgMHgwMDAwMTAwMCwKLQkweDAyMDFmMDAwLCAweDAwMTAzODQxLCAweDU5YTAwYTA3LCAweDU5YTAwNDA3LAotCTB4OTAwMDAxYzAsIDB4ODAwNDFkNDAsIDB4ODIwYzBjODAsIDB4MDAxMGE5NzEsCi0JMHgwNDAyMTUzYSwgMHg4MjBjMGM4MCwgMHgwMDEwMDAwMCwgMHgwNDAwMTUzNywKLQkweDQ4MGZjODU3LCAweDgyM2M3YzAwLCAweDAwMDAwMDA5LCAweDUwM2MwODAwLAotCTB4ODAwNDA5YzAsIDB4MDQwMDAwMDYsIDB4ODIzYzA1ODAsIDB4MDAwMDAwMGQsCi0JMHgwNDAwMDUyZSwgMHg4MDNjNzgwMCwgMHgwNDAxZjdmOSwgMHg1OWU0MTAwMSwKLQkweDgyMDgwZDAwLCAweGZmZmVmZmNmLCAweDQ4MDdjODAxLCAweDQ0MGM3ODAwLAotCTB4NDYwMDE4MDAsIDB4MDIwMWY4MDAsIDB4ODAwYzE4MDAsIDB4NDYwMDE4MDAsCi0JMHgwMDEwMDYwOCwgMHg0ODBiYzgwMSwgMHgwNDAxZjAyMiwgMHg1OWEwMWEwNywKLQkweDU5YTAwNDA3LCAweDkwMDAwMWMwLCAweDgwMGMxZDQwLCAweDQ4MGM3ODAxLAotCTB4NTlhMDIyMDgsIDB4NTlhMDA0MDgsIDB4OTAwMDAxYzAsIDB4ODAxMDI1NDAsCi0JMHg0ODEwNzgwMiwgMHg1OWEwMDIwOSwgMHg4MDAwMDA0MCwgMHgwNDAwMTUxMywKLQkweDQ4MDA3ODA2LCAweDgwMDAwMDAwLCAweDQ4MDA3ODA1LCAweDQyMDAwODAwLAotCTB4MDAwMDQwMDAsIDB4NDAwMDEwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDYzY2YsCi0JMHg4MDAwMDU0MCwgMHgwNDAwMDAwMywgMHg0OTc4NzgwMSwgMHgwNDAxZjUwNywKLQkweDQwMDQwMDAwLCAweDgwMGMxYzAwLCAweDA0MDAxNTA0LCAweDQ4MGM3ODAzLAotCTB4NDgxMDc4MDQsIDB4NDk3ODc4MDgsIDB4NTlhMDA0MDksIDB4NDgwMDc4MDcsCi0JMHg1OWU0MDAwMSwgMHg0ODAzYzg1NywgMHg4MjAwMDU0MCwgMHgwMDA0MDAwMCwKLQkweDQ4MDNjODAxLCAweDA0MDFmNGE5LCAweDU5YTgwMDA2LCAweDQ4MDM0NDA2LAotCTB4NTlhODAwMDcsIDB4NDgwMzQyMDcsIDB4NTlhODAwMDgsIDB4NDgwMzQ0MDcsCi0JMHgwNDAxZjRhMiwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzYzg1NiwKLQkweDRhMDNjMDEzLCAweDAzODAwMzAwLCAweDRhMDNjMDE0LCAweDAzODAwMzgwLAotCTB4NTlhMDBjMDYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwYTAsIDB4MDQwMDAwMDQsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDBhMiwgMHgwNDAyMDAyOCwgMHg1OWEwMTQwYSwKLQkweDgyMDgwNDgwLCAweDAwMDAwMTAwLCAweDA0MDIxMDI0LCAweDU5YTAwMjBiLAotCTB4OGMwMDA1MDAsIDB4MDQwMjAwMmIsIDB4NTlhMDBhMGEsIDB4ODAwNDA5YzAsCi0JMHgwNDAwMDAxZSwgMHg4MjA0MDQ4MCwgMHgwMDAwMDA0MSwgMHgwNDAyMTAxYiwKLQkweDgyMDQwYzAwLCAweDAwMDAwMDAzLCAweDgyMDQwZDAwLCAweDAwMDAwMGZjLAotCTB4ODAwNDA5MDQsIDB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsIDB4OTAwODExYzAsCi0JMHg4MDA4MTU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwgMHg5MDBjMTljMCwKLQkweDgwMGMxZDQwLCAweDAyMDFmODAwLCAweDAwMTAzODFhLCAweDA0MDIwMDA2LAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4NGEwM2MwMTQsIDB4MDM4MDAwMDAsCi0JMHgwNDAxZjRiZSwgMHgwMjAxZjgwMCwgMHgwMDEwMzgzZSwgMHg0YTAxZDgwOSwKLQkweDAwMTAyM2ZkLCAweDFjMDFmMDAwLCAweDRhMDNjMDE0LCAweDAzODAwMDAwLAotCTB4MDQwMWY0YmEsIDB4NDAzMWQ4MDAsIDB4NThlZjQwMGIsIDB4NThlZTU4MGQsCi0JMHg1OGVjMDAwMiwgMHg4MjAwMDU4MCwgMHgwMDAwMDIwMCwgMHgwNDAwMDRhNywKLQkweDU5YTAwYzA2LCAweDU5YTAxNDBhLCAweDU5YTAwMjBiLCAweDhjMDAwNTAwLAotCTB4MDQwMjAwMzEsIDB4ODMyZTVjMDAsIDB4MDAwMDAwMDQsIDB4NDE3ODM4MDAsCi0JMHg1OWEwNGEwYSwgMHg0MDFjMDAwMCwgMHg4MTJjMDQwMCwgMHg1MDAwNDAwMCwKLQkweDgyMjAxZDAwLCAweDAwMDAwMGZmLCAweDRjMDQwMDAwLCAweDA0MDFmOGFmLAotCTB4NWMwMDA4MDAsIDB4MDQwMDAwMmQsIDB4ODAyNDQ4NDAsIDB4MDQwMDAwMjgsCi0JMHg4MDA4MTAwMCwgMHg4MjIwMWQwMCwgMHgwMDAwZmYwMCwgMHg4MDBjMTkxMCwKLQkweDRjMDQwMDAwLCAweDA0MDFmOGE1LCAweDVjMDAwODAwLCAweDA0MDAwMDIzLAotCTB4ODAyNDQ4NDAsIDB4MDQwMDAwMWUsIDB4ODAwODEwMDAsIDB4ODIyMDFkMDAsCi0JMHgwMGZmMDAwMCwgMHg4MDBjMTkyMCwgMHg0YzA0MDAwMCwgMHgwNDAxZjg5YiwKLQkweDVjMDAwODAwLCAweDA0MDAwMDE5LCAweDgwMjQ0ODQwLCAweDA0MDAwMDE0LAotCTB4ODAwODEwMDAsIDB4ODIyMDFkMDAsIDB4ZmYwMDAwMDAsIDB4ODAwYzE5MzAsCi0JMHg0YzA0MDAwMCwgMHgwNDAxZjg5MSwgMHg1YzAwMDgwMCwgMHgwNDAwMDAwZiwKLQkweDgwMjQ0ODQwLCAweDA0MDAwMDBhLCAweDgwMDgxMDAwLCAweDgwMWMzODAwLAotCTB4MDQwMWY3ZDUsIDB4NTlhMDAyMGEsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsCi0JMHg0MDAwMTgwMCwgMHgwNDAxZjg4NSwgMHgwNDAwMDAwNCwgMHg0YTAzYzAxNCwKLQkweDAzODAwMDAwLCAweDA0MDFmNDI1LCAweDRhMDNjMDE0LCAweDAzODAwMDAwLAotCTB4MDQwMWY0NmUsIDB4NDgwM2M4NTYsIDB4NGEwM2MwMTMsIDB4MDM4MDAzMDAsCi0JMHg0YTAzYzAxNCwgMHgwMzgwMDM4MCwgMHg1OWEwMGMwNiwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMGEwLCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLCAweDAwMDAwMGEyLAotCTB4MDQwMjAwNmUsIDB4NTlhMDE0MGEsIDB4ODIwODA0ODAsIDB4MDAwMDAxMDAsCi0JMHgwNDAyMTA2YSwgMHg1OWEwMDIwYiwgMHg4YzAwMDUwMCwgMHgwNDAyMDA1YywKLQkweDU5YTAxYTBhLCAweDgwMGMxOWMwLCAweDA0MDAwMDY0LCAweDgyMGMwNDgwLAotCTB4MDAwMDAwNDEsIDB4MDQwMjEwNjEsIDB4MDIwMWY4MDAsIDB4MDAxMDM4MWEsCi0JMHgwNDAyMDAwNiwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMiwgMHg0YTAzYzAxNCwKLQkweDAzODAwMDAwLCAweDA0MDFmNDRkLCAweDgzMmU1YzAwLCAweDAwMDAwMDA0LAotCTB4NDE3ODM4MDAsIDB4NTlhMDRhMGEsIDB4NDAxYzAwMDAsIDB4ODEyYzA0MDAsCi0JMHg0MDAwNDAwMCwgMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHgwNDAxZjg3NywKLQkweDVjMDAxMDAwLCAweDVjMDAwODAwLCAweDA0MDAwMDQ4LCAweDQ0MTQ0MDAwLAotCTB4ODAyNDQ4NDAsIDB4MDQwMDAwMmIsIDB4ODAwODEwMDAsIDB4NGMwNDAwMDAsCi0JMHg0YzA4MDAwMCwgMHgwNDAxZjg2ZCwgMHg1YzAwMTAwMCwgMHg1YzAwMDgwMCwKLQkweDA0MDAwMDNlLCAweDUwMjAwMDAwLCAweDgwMTQyOGQwLCAweDgwMTQwNTQwLAotCTB4NDQwMDQwMDAsIDB4ODAyNDQ4NDAsIDB4MDQwMDAwMWUsIDB4ODAwODEwMDAsCi0JMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHgwNDAxZjg2MCwgMHg1YzAwMTAwMCwKLQkweDVjMDAwODAwLCAweDA0MDAwMDMxLCAweDUwMjAwMDAwLCAweDgwMTQyOGUwLAotCTB4ODAxNDA1NDAsIDB4NDQwMDQwMDAsIDB4ODAyNDQ4NDAsIDB4MDQwMDAwMTEsCi0JMHg4MDA4MTAwMCwgMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHgwNDAxZjg1MywKLQkweDVjMDAxMDAwLCAweDVjMDAwODAwLCAweDA0MDAwMDI0LCAweDUwMjAwMDAwLAotCTB4ODAxNDI4ZjAsIDB4ODAxNDA1NDAsIDB4NDQwMDQwMDAsIDB4ODAyNDQ4NDAsCi0JMHgwNDAwMDAwNCwgMHg4MDA4MTAwMCwgMHg4MDFjMzgwMCwgMHgwNDAxZjdjYiwKLQkweDU5YTAwYTBhLCAweDgyMDQwYzAwLCAweDAwMDAwMDAzLCAweDgyMDQwZDAwLAotCTB4MDAwMDAwZmMsIDB4ODAwNDA5MDQsIDB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsCi0JMHg5MDA4MTFjMCwgMHg4MDA4MTU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDRhMDNjMDE0LCAweDAzODAwMDAwLAotCTB4NDEyYzAwMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDM4NDEsIDB4MDQwMWY4MzMsCi0JMHgwNDAwMDAwNiwgMHg0ODE3NDQwNiwgMHg0YTAzYzAxNCwgMHgwMzgwMDAwMCwKLQkweDAyMDFmMDAwLCAweDAwMTAyMDY2LCAweDRhMDNjMDE0LCAweDAzODAwMDAwLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NGEwM2MwMTQsIDB4MDM4MDAwMDAsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiNiwgMHgwNDAxZjgzNiwgMHgwNDAwMDAxMCwKLQkweDA0MDFmODYyLCAweDA0MDIwMDBmLCAweDQwMDgwODAwLCAweDA0MDFmODVmLAotCTB4MDQwMjAwMGMsIDB4NDAwYzA4MDAsIDB4MDQwMWY4NWMsIDB4MDQwMjAwMDksCi0JMHgwNDAxZjg0YiwgMHg0MjAwMDAwMCwgMHgwMDAzMGQ0MCwgMHg4MDAwMDA0MCwKLQkweDA0MDIwN2ZmLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLAotCTB4MDQwMWY4NDMsIDB4ODAwMDA1ODAsIDB4MDQwMWY3ZmQsIDB4MDQwMWY4MjEsCi0JMHgwNDAwMDAwYSwgMHg4MjA0MGQ0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjg0YiwKLQkweDA0MDIwMDA3LCAweDA0MDFmODdlLCAweDA0MDFmODk4LCAweDA0MDFmODM4LAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4MDQwMWY4MzQsCi0JMHg4MDAwMDU4MCwgMHgwNDAxZjdmZCwgMHg0MDA0MTgwMCwgMHgwNDAxZjgxMSwKLQkweDA0MDAwMDBjLCAweDA0MDFmODNkLCAweDA0MDIwMDBiLCAweDQwMDgwODAwLAotCTB4MDQwMWY4M2EsIDB4MDQwMjAwMDgsIDB4NDAwYzA4MDAsIDB4MDQwMWZmZTgsCi0JMHgwNDAwMDAwNCwgMHgwNDAxZjgyNiwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDA0MDFmODIyLCAweDgwMDAwNTgwLCAweDA0MDFmN2ZkLAotCTB4NGMwNDAwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwNjQsIDB4NGEwM2MwMTMsCi0JMHgwMzgwMDMwMCwgMHg4MDA0MDg0MCwgMHgwNDAwMDAxNiwgMHg1OWUwMDAxMywKLQkweDgyMDAwNTAwLCAweDAwMDAwMzAwLCAweDgyMDAwNTgwLCAweDAwMDAwMzAwLAotCTB4MDQwMjA3ZjcsIDB4NDIwMDAwMDAsIDB4MDAwMDAwNjQsIDB4ODAwMDAwNDAsCi0JMHgwNDAyMDdmZiwgMHg0YTAzYzAxMywgMHgwMTAwMDAwMCwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDY0LCAweDgwMDAwMDQwLCAweDA0MDIwN2ZmLCAweDRhMDNjMDEzLAotCTB4MDIwMDAwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDIsCi0JMHg4MDAwMDU4MCwgMHg1YzAwMDgwMCwgMHgxYzAxZjAwMCwgMHg0YTAzYzAxMywKLQkweDAxMDAwMDAwLCAweDQyMDAwMDAwLCAweDAwMDAwMDY0LCAweDgwMDAwMDQwLAotCTB4MDQwMjA3ZmYsIDB4NGEwM2MwMTMsIDB4MDIwMDAyMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDA2NCwgMHg4MDAwMDA0MCwgMHgwNDAyMDdmZiwgMHg0YTAzYzAxMywKLQkweDAxMDAwMTAwLCAweDFjMDFmMDAwLCAweDQyMDAyMDAwLCAweDAwMDAwMDA4LAotCTB4ODIwNDA1MDAsIDB4MDAwMDAwODAsIDB4ODAwMDAwYzIsIDB4ODIwMDA1NDAsCi0JMHgwMTAwMDAwMCwgMHg0ODAzYzAxMywgMHg0MjAwMDAwMCwgMHgwMDAwMDA2NCwKLQkweDgwMDAwMDQwLCAweDA0MDIwN2ZmLCAweDRhMDNjMDEzLCAweDAyMDAwMjAwLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwNjQsIDB4ODAwMDAwNDAsIDB4MDQwMjA3ZmYsCi0JMHg0YTAzYzAxMywgMHgwMjAwMDAwMCwgMHg4MDA0MDhjMiwgMHg4MDEwMjA0MCwKLQkweDA0MDIwN2VjLCAweDRhMDNjMDEzLCAweDAxMDAwMTAwLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwNjQsIDB4ODAwMDAwNDAsIDB4MDQwMjA3ZmYsIDB4NGEwM2MwMTMsCi0JMHgwMjAwMDIwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMDA2NCwgMHg4MDAwMDA0MCwKLQkweDA0MDIwN2ZmLCAweDU5ZTAwMDEzLCAweDgyMDAwNTAwLCAweDAwMDAwMTAwLAotCTB4NGEwM2MwMTMsIDB4MDIwMDAwMDAsIDB4NGMwNDAwMDAsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDA2NCwgMHg1OWUwMDAxMywgMHg4MjAwMDUwMCwgMHgwMDAwMDEwMCwKLQkweDgwMDQwODQwLCAweDA0MDAwMDAzLCAweDgwMDAwNTQwLCAweDA0MDIwN2ZhLAotCTB4ODAwMDA1NDAsIDB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NGEwM2MwMTMsCi0JMHgwMTAwMDEwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwOCwgMHg4MDAwMGQ4MCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDY0LCAweDgwMDAwMDQwLCAweDA0MDIwN2ZmLAotCTB4NGEwM2MwMTMsIDB4MDIwMDAyMDAsIDB4NDIwMDAwMDAsIDB4MDAwMDAwNjQsCi0JMHg4MDAwMDA0MCwgMHgwNDAyMDdmZiwgMHg1OWUwMDAxMywgMHg4MjAwMDUwMCwKLQkweDAwMDAwMTAwLCAweDgwMDAwMTEwLCAweDgwMDQwOGMyLCAweDgwMDQwZDQwLAotCTB4NGEwM2MwMTMsIDB4MDIwMDAwMDAsIDB4ODAwODEwNDAsIDB4MDQwMjA3ZWQsCi0JMHg0MDA0MjgwMCwgMHgxYzAxZjAwMCwgMHg0YTAzYzAxMywgMHgwMTAwMDEwMCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDY0LCAweDgwMDAwMDQwLCAweDA0MDIwN2ZmLAotCTB4NGEwM2MwMTMsIDB4MDIwMDAyMDAsIDB4NDIwMDAwMDAsIDB4MDAwMDAwNjQsCi0JMHg4MDAwMDA0MCwgMHgwNDAyMDdmZiwgMHg0YTAzYzAxMywgMHgwMjAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDU5YTAwNDA3LCAweDU5YTgwODM3LCAweDQ4MDM1MDM3LAotCTB4NDgwNzQ0MDcsIDB4NTlhMDBhMDksIDB4ODIwNDA0ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAyMTAwMywgMHg0MjAwMDgwMCwgMHgwMDAwMDdkMCwgMHg1OWE4MDAzOCwKLQkweDQ4MDc1MDM4LCAweDQ4MDM0MjA5LCAweDAyMDFmMDAwLCAweDAwMTAyMDY2LAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMDAwMGUsIDB4NTlhODAwMDYsCi0JMHg1OWEwMGMwNiwgMHg4MDA0MTU4MCwgMHg4MjA4MTUwMCwgMHgwMDAwMDA0MCwKLQkweDAyMDAwMDAwLCAweDAwMTAyMDY2LCAweDgwMDgwNTgwLCAweDQ4MDM1MDA2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2ZGYsIDB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsCi0JMHg1OWEwMDQwNiwgMHg1OWE4MDgwNiwgMHg0ODAzNTAwNiwgMHg4MDA0MGQ4MCwKLQkweDhjMDQwZDBjLCAweDAyMDIwODAwLCAweDAwMTAwNmRmLCAweDU5YTAwMjA3LAotCTB4NDgwMzUwMDcsIDB4NTlhMDA0MDcsIDB4NDgwMzUwMDgsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDAyMDFmODAwLAotCTB4MDAxMDRlMGQsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMTYsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg4MzZjMDU4MCwgMHgwMDAwMDAwMywKLQkweDA0MDAwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDA3LCAweDAyMDFmMDAwLAotCTB4MDAxMDIwYjIsIDB4NTlhMDBjMDYsIDB4ODIwNDA1MDAsIDB4ZmZmZmZmMDAsCi0JMHgwMjAyMDAwMCwgMHgwMDEwMjBiNiwgMHg4MjA0MTU4MCwgMHgwMDAwMDBmZiwKLQkweDA0MDIwMDA3LCAweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4ODIwMDE1NDAsIDB4MDAwMGZmMDAsIDB4MDQwMWYwMTEsIDB4ODIwNDA0MDAsCi0JMHgwMDEwMWViNSwgMHg1MDAwMDAwMCwgMHg4MDAwMDExMCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDgwLCAweDAyMDAwMDAwLCAweDAwMTAyMGI2LCAweDU5YTgwMDEwLAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODAwNDE1ODAsIDB4MDIwMDAwMDAsCi0JMHgwMDEwMjBiNiwgMHg4NDA0MDljMCwgMHg4MDA0MTU0MCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODkyLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAzLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NDhlZTYwMjEsIDB4NDgwYTYyMWMsCi0JMHg0YTAyNjQxYywgMHgwMDAwYmMwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwKLQkweDAyMDFmODAwLCAweDAwMTAzODFhLCAweDA0MDIwMDA3LCAweDAyMDFmODAwLAotCTB4MDAwMjA4YjQsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg0OTdhNWEwNCwgMHg0OTdhNTgwNSwgMHg0YTAyNWMwNCwKLQkweDAwMDA4MDAwLCAweDRhMDFkODA5LCAweDAwMTAyNjU3LCAweDQ5MmU2MDA4LAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwMzIsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsCi0JMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMSwKLQkweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMTYsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg4MzZjMDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDA3LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NTlhMDBjMDYsIDB4ODIwNDA1MDAsIDB4ZmZmZmZmMDAsIDB4MDIwMjAwMDAsCi0JMHgwMDEwMjBiNiwgMHg4MjA0MTU4MCwgMHgwMDAwMDBmZiwgMHgwNDAyMDAwNywKLQkweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAxNTQwLAotCTB4MDAwMGZmMDAsIDB4MDQwMWYwMTEsIDB4ODIwNDA0MDAsIDB4MDAxMDFlYjUsCi0JMHg1MDAwMDAwMCwgMHg4MDAwMDExMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDA4MCwKLQkweDAyMDAwMDAwLCAweDAwMTAyMGI2LCAweDU5YTgwMDEwLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4ODAwNDE1ODAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYjYsCi0JMHg4NDA0MDljMCwgMHg4MDA0MTU0MCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwKLQkweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAzLCAweDAyMDFmMDAwLAotCTB4MDAxMDIwYjIsIDB4NDhlZTYwMjEsIDB4NDgwYTYyMWMsIDB4NGEwMjY0MWMsCi0JMHgwMDAwYmMwNSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwKLQkweDAwMTAzODFhLCAweDA0MDIwMDA3LCAweDAyMDFmODAwLCAweDAwMDIwOGI0LAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsCi0JMHg0OTdhNWEwNCwgMHg0OTdhNTgwNSwgMHg0YTAyNWMwNCwgMHgwMDAwODAwMCwKLQkweDRhMDFkODA5LCAweDAwMTAyNjU3LCAweDQ5MmU2MDA4LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMzIsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4NTkyYzAwMDUsCi0JMHg4MjAwMDU4MCwgMHgwMTAwMDAwMCwgMHgwMjAyMDAwMCwgMHgwMDEwMjA2NiwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDA0LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NDk3YjQ0MDYsIDB4NDk3YjQyMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDM5M2UsCi0JMHgwNDAwMDAwOCwgMHg1OWE4MDA2NiwgMHg1OWE4MDg2YSwgMHg4MDA0MDQ4MCwKLQkweDU5YTgwODY3LCAweDQ4MDc0NDA2LCAweDgwMDQxNDgwLCAweDQ4MGI0MjA3LAotCTB4NDk2NzQ0MDcsIDB4NTlhODAwMGUsIDB4NDgwMzQyMDksIDB4NDk1ZjQ0MDksCi0JMHg1OWE4MDAyMCwgMHg0ODAzNDIwYiwgMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwKLQkweDgwMDQwOWMwLCAweDA0MDAwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAxLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhMDA0MDYsIDB4OGMwMDA1MDAsCi0JMHgwNDAyMDAwZiwgMHg1OWE4MDA2OSwgMHg4MTY0MDQ4MCwgMHgwNDAwMTAwOCwKLQkweDU5YTgwMDBiLCAweDgxNTAwNTgwLCAweDA0MDAwMDA5LCAweDU5YTgwMDZhLAotCTB4NTlhODEwNjYsIDB4ODAwODA1ODAsIDB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAxOCwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWE4MDAwNSwKLQkweDg0MDAwNTU4LCAweDQ4MDM1MDA1LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE2NjgsIDB4MDIwMWY4MDAsIDB4MDAxMDNhOWYsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwgMHg0ODAzYzg1NiwgMHg4MDA0MDljMCwKLQkweDAyMDIwMDAwLCAweDAwMTAyMGJhLCAweDU5YTAwNDA2LCAweDhjMDAwNTFlLAotCTB4MDQwMDAwMDgsIDB4NDgwM2M4NTYsIDB4NTlhMDAyMGIsIDB4ODIwMDA0ODAsCi0JMHgwMDAwMDgwMCwgMHgwNDAwMTAxNSwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiNiwKLQkweDQ4MDNjODU2LCAweDU5YTAwMjBiLCAweDU5OWMwYTAxLCAweDgwMDQwNDgwLAotCTB4MDQwMjEwMDMsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjYsIDB4NTlhODAwMGUsCi0JMHg4MTY0MDU4MCwgMHgwNDAwMDAwOSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAxOCwKLQkweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDRhMDM0NDA2LCAweDAwMDAwMDA1LAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhODAwMjYsIDB4OGMwMDA1MGEsCi0JMHgwNDAwMDdmYSwgMHg1OWEwMDQwNiwgMHg4YzAwMDUxZSwgMHgwNDAwMDAzNiwKLQkweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDA0MDAwN2Y0LCAweDAyMDFmODAwLAotCTB4MDAxMDM4MWEsIDB4MDQwMDA3ZjEsIDB4NDk3YTVhMDQsIDB4NTlhMDA0MDYsCi0JMHg0ODAyNjIwYSwgMHg1OWEwMDIwOSwgMHg0ODAyNjQwYSwgMHg1OWEwMDQwOSwKLQkweDQ4MDI2MjBiLCAweDU5YTAwMjBkLCAweDQ4MDI2MjBjLCAweDU5YTAwNDBkLAotCTB4NDgwMjY0MGMsIDB4NTlhMDAyMGUsIDB4NDgwMjYyMGQsIDB4NTlhMDA0MGUsCi0JMHg0ODAyNjQwZCwgMHg1OWEwMDIxMCwgMHg0ODAyNjIwZSwgMHg1OWEwMDQxMCwKLQkweDQ4MDI2NDBlLCAweDU5YTAwMjBiLCAweDgyMDAwNTAwLCAweDAwMDBmZmZjLAotCTB4ODAwMDAxMDQsIDB4NDgwMjY0MGIsIDB4MDQwMWY5ZDksIDB4MDQwMDA3ZDcsCi0JMHg0OGVlNjAyMSwgMHg1OGVlNTgwZCwgMHg1OTMwMDIwZSwgMHg1OTMwMWMwZSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDU5MzAwMjBjLCAweDU5MzAxNDBjLAotCTB4OTAwODExYzAsIDB4ODAwODE1NDAsIDB4NTkyYzBhMDUsIDB4ODMyYzA0MDAsCi0JMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwMzgzZSwgMHg0YTAxZDgwOSwKLQkweDAwMTAyODQ2LCAweDRhMDM0MDAwLCAweDAwMDAwMDAxLCAweDQ5MzM0MDAxLAotCTB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGIyOSwgMHgwNDAxZjg2ZCwgMHg0OTdiNTA1NywgMHg0MjAxZDAwMCwKLQkweDAwMDAyNzEwLCAweDAyMDFmODAwLCAweDAwMTA1ZTA2LCAweDU5YzQwODgwLAotCTB4NGMwNDAwMDAsIDB4NTljNDA4YTMsIDB4NGMwNDAwMDAsIDB4NDk3YjQwMDIsCi0JMHgwNDAxZjg3NiwgMHgwNDAxZjg5MywgMHg0YTAzYTAwNSwgMHgxMDAwMDAwMCwKLQkweDA0MDFmOGI0LCAweDA0MDFmOTAxLCAweDA0MDAwMDQ4LCAweDU5YzgwMDAxLAotCTB4ODAwMDAxYzAsIDB4MDQwMDA3ZmMsIDB4NTljODAwMTgsIDB4ODIwMDA1MDAsCi0JMHhmMDAwMDAwMCwgMHg1OWMwMDgwOCwgMHg4MjA0MGQwMCwgMHgwZmZmZmZmZiwKLQkweDgwMDQwNTQwLCAweDQ4MDM4MDA4LCAweDAyMDFmODAwLCAweDAwMTAwZjBmLAotCTB4NTljMDAwMDYsIDB4NGEwMzgwMDYsIDB4MTAwMDAwMDAsIDB4NTljMDAwMDksCi0JMHg4MjAwMGQwMCwgMHgwMGUwMDAwMCwgMHgwNDAyMDAyNCwgMHg0YTAzOTAwZCwKLQkweDAwMDAwMDAwLCAweDU5YzgwMDIwLCAweDgyMDAwNTAwLCAweGZmMDAwMDAwLAotCTB4ODIwMDA1ODAsIDB4MzIwMDAwMDAsIDB4MDQwMjAwMWMsIDB4NGEwMzkwMGQsCi0JMHgwMDAwMDAwMSwgMHg1OWM4MDAyMCwgMHg4MjAwMDUwMCwgMHhmZjAwMDAwMCwKLQkweDgyMDAwNTgwLCAweGUxMDAwMDAwLCAweDA0MDIwMDE0LCAweDRhMDM5MDBkLAotCTB4MDAwMDAwMDAsIDB4NTljODAwMjAsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsCi0JMHg0YTAzOTAwZCwgMHgwMDAwMDAwMCwgMHg1OWM4MDgyMSwgMHg4MjA0MGQwMCwKLQkweDAwZmZmZmZmLCAweDgwMDQwNTgwLCAweDA0MDIwMDA4LCAweDU5YTgwMDEwLAotCTB4ODAwNDA1ODAsIDB4MDQwMjAwMDUsIDB4NTljNDAwMDUsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDBmMCwgMHgwNDAwMDAwNiwgMHg0ODAzYzg1NiwgMHgwNDAxZjhkNywKLQkweDRhMDM1MDU3LCAweDAwMDAwMDAxLCAweDA0MDFmMDAyLCAweDA0MDFmOGUxLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwNjQsIDB4ODAwMDAwNDAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OWMwMDgwNywgMHg4MjA0MGQwMCwgMHgwMDAwMDAwYywKLQkweDA0MDAwN2ZhLCAweDA0MDFmMDAzLCAweDRhMDM1MDU3LCAweDAwMDAwMDAxLAotCTB4MDQwMWY4ZGEsIDB4MDIwMWY4MDAsIDB4MDAxMDZjOGEsIDB4MDQwMWY4MTgsCi0JMHg0MjAxZDAwMCwgMHgwMDAxODZhMCwgMHgwMjAxZjgwMCwgMHgwMDEwNWUwNiwKLQkweDVjMDAwODAwLCAweDQ4MDc4OGEzLCAweDVjMDAwODAwLCAweDQ4MDc4ODgwLAotCTB4NTlhODAwNTcsIDB4ODAwMDAxYzAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwNjYsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiZSwgMHg1OTljMDIwMSwgMHg0ODAzNTA1OSwKLQkweDQxNzgwODAwLCAweDQyMDAxMDAwLCAweDAwMDAzYjEwLCAweDAyMDFmODAwLAotCTB4MDAxMDYzZWUsIDB4NDgwYjUwNWEsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4MiwgMHg1OWI4MDBlYSwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwNywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAzLCAweDA0MDIwMDAzLCAweDRhMDM3MGU4LAotCTB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NDIwMzgwMDAsIDB4MDAwMDc3MDAsCi0JMHg0YTAzODAwNiwgMHgzMDAwMDAwMCwgMHg1OWMwMDAwNywgMHg4YzAwMDUwYSwKLQkweDA0MDIwN2ZlLCAweDU5YzAwMDA2LCAweDU5YTAwMjA5LCAweDU5YTAwYzA5LAotCTB4OTAwNDA5YzAsIDB4ODAwNDBkNDAsIDB4NDgwNzgwMDEsIDB4NTlhMDAyMGUsCi0JMHg1OWEwMGMwZSwgMHg5MDA0MDljMCwgMHg4MDA0MGQ0MCwgMHg0ODA3ODAwMCwKLQkweDU5YTAwMjBiLCAweDgyMDAwNTAwLCAweDAwMDBmZmZjLCAweDQ4MDM4MDAyLAotCTB4NDgwMzgwMDMsIDB4NDgwMzgwMDUsIDB4NDk3YjkwMDksIDB4NTllMDAwMDMsCi0JMHg4MjAwMDU0MCwgMHgwMDAwODA2MCwgMHg0ODAzYzAwMywgMHgxYzAxZjAwMCwKLQkweDQxNzgwODAwLCAweDgwMDdhMGNhLCAweDgzZDNhNDAwLCAweDAwMDA3NjAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNDAsIDB4MDIwMWY4MDAsIDB4MDAxMDEzOTUsCi0JMHg0YTAzYTAwYSwgMHgwMDAwMDAwMSwgMHg0YTAzYTAwNSwgMHgyMDAwMDAwMCwKLQkweDU5ZDAwMDA2LCAweDRhMDNhMDA1LCAweDMwMDAwMDAwLCAweDU5ZDAwMDA2LAotCTB4OGMwMDA1MGEsIDB4MDQwMjA3ZmUsIDB4NTlkMDAwMDUsIDB4NTlhMDAyMTAsCi0JMHg1OWEwMGMxMCwgMHg5MDA0MDljMCwgMHg4MDA0MGQ0MCwgMHg0ODA3YTAwMSwKLQkweDU5YTAwMjBkLCAweDU5YTAwYzBkLCAweDkwMDQwOWMwLCAweDgwMDQwZDQwLAotCTB4NDgwN2EwMDAsIDB4NTlhMDAyMGIsIDB4ODIwMDA1MDAsIDB4MDAwMGZmZmMsCi0JMHg0ODAzYTAwMywgMHg0ODAzYTAwMiwgMHg0ODAzYTAwOCwgMHgxYzAxZjAwMCwKLQkweDU5YTAwMDAyLCAweDQ4MDNjODU3LCAweDgwMDAwMWMwLCAweDA0MDIwMDRhLAotCTB4NTlhODAwNWEsIDB4NDgwMzg4ODAsIDB4NTljNDAwYTMsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMjAwOCwgMHg4NDAwMDUzYSwgMHg0ODAzODhhMywgMHg1OWM0MDAwOCwKLQkweDg0MDAwNTRlLCAweDgyMDAwNTAwLCAweGZmZmZmZmUxLCAweDQ4MDM4ODA4LAotCTB4NTljODAwNDAsIDB4ODQwMDA1MzQsIDB4NDgwMzkwNDAsIDB4MDQwMWY5MDIsCi0JMHgwNDAyMDAxMywgMHg1OWE4MDAxMCwgMHg4MDAwMDBkMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDExLCAweDQ4MDM5MTIwLCAweDU5YTgwMDEwLCAweDgyMDAwNTAwLAotCTB4MDBmZmZmZmYsIDB4ODIwMDA1NDAsIDB4MzIwMDAwMDAsIDB4NDgwMzkxMjEsCi0JMHg0YTAzOTEyMywgMHhlMTI5MDAwOCwgMHg1OWE4MDAxMCwgMHg4MjAwMDUwMCwKLQkweDAwZmZmZmZmLCAweDQ4MDM5MTIyLCAweDA0MDFmMDE2LCAweDU5YTgwMDEwLAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4OTAwMDA5YzAsIDB4ODQwMDAxYzAsCi0JMHg4MDA0MDU0MCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMCwgMHg0ODAzOTEyMCwKLQkweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAwNTQwLAotCTB4MDEwMDAwMDAsIDB4NDgwMzkxMjEsIDB4NGEwMzkxMjMsIDB4MDgyMTAwMDgsCi0JMHg1OWE4MDAxMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg0ODAzOTEyMiwKLQkweDQ5N2I5MTI0LCAweDU5YTgwYzViLCAweDgwMDQwODAwLCAweDQ4MDc1NDViLAotCTB4OTAwNDA5YzAsIDB4ODIwNDA1NDAsIDB4MDAwMGFhYWEsIDB4NDgwMzkxMjUsCi0JMHg0OTdiOTEyNiwgMHg0OTdiOTEyNywgMHgwNDAxZjhjZiwgMHgwNDAyMDAwNCwKLQkweDRhMDM5MTAwLCAweDAwMDBlOTgwLCAweDA0MDFmMDAzLCAweDRhMDM5MTAwLAotCTB4MDAwMGU5YTAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgwNDAyNTAwZCwgMHg0MjAzZTAwMCwgMHg4MDAwMDAwMCwgMHg0MGU4MTAwMCwKLQkweDQxNzgwODAwLCAweDQyMDAwMDAwLCAweDAwMDAwMDY0LCAweDAyMDFmODAwLAotCTB4MDAxMDYzZWUsIDB4NTk5NDAwMjQsIDB4ODAwODA0MDAsIDB4NDgwMzI4MjQsCi0JMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg0ZDkwMDAwMCwgMHg0ZGQwMDAwMCwKLQkweDRkYTQwMDAwLCAweDRkMTQwMDAwLCAweDQxN2EzMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDZlMmYsIDB4MDIwMWY4MDAsIDB4MDAxMDZiMTMsIDB4NWMwMjI4MDAsCi0JMHg1YzAzNDgwMCwgMHg1YzAzYTAwMCwgMHg1YzAzMjAwMCwgMHgxYzAxZjAwMCwKLQkweDU5YzgwMDA3LCAweDhjMDAwNTAwLCAweDA0MDAwMDAzLCAweDRhMDM5MDBkLAotCTB4MDAwMDAwMzAsIDB4MWMwMWYwMDAsIDB4NGEwMzg4MDUsIDB4MDAwMjAwMDAsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAzYywgMHgwMjAxZjgwMCwgMHgwMDEwMTM5NSwKLQkweDRhMDM4ODkxLCAweDAwMDBmZmZmLCAweDU5YzgwMDM1LCAweDQ4MDM5MDM1LAotCTB4NGEwMzkwMGQsIDB4MDAwMDAwNDAsIDB4NDIwMzgwMDAsIDB4MDAwMDc3MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGYwZiwgMHg0MjAzODAwMCwgMHgwMDAwNzcyMCwKLQkweDAyMDFmODAwLCAweDAwMTAwZjBmLCAweDRhMDNhMDA1LCAweDIwMDAwMDAwLAotCTB4NGEwM2EwMDUsIDB4MzAwMDAwMDAsIDB4NTlkMDA4MDYsIDB4OGMwNDBkMGEsCi0JMHgwNDAyMDdmZSwgMHgxYzAxZjAwMCwgMHg0ZDMwMDAwMCwgMHg0MDMxZDgwMCwKLQkweDU4ZWY0MDBiLCAweDU4ZWU1ODBkLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLAotCTB4MDAwMDAyMDAsIDB4NWMwMjYwMDAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsCi0JMHg0ZDMwMDAwMCwgMHg1OWEyNjAwMSwgMHg1OWEwMDAwMCwgMHg0MDAwYjAwMCwKLQkweDgwMDAwMDAwLCAweDQ4MDM0MDAwLCAweDU5MmMwMDAxLCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMWUsIDB4NDAwMjU4MDAsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZmIsCi0JMHg1OGVjMTAwNywgMHg1OGVjMTgwOCwgMHg1OTJjMGEwNSwgMHg0ZDJjMDAwMCwKLQkweDU4ZWMwMDBkLCAweDQwMDI1ODAwLCAweDU5MmMwMjA0LCAweDVjMDI1ODAwLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAxMDMsIDB4MDQwMDAwMDgsIDB4ODMyYzA0MDAsCi0JMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwMzgzZSwgMHg0YTAxZDgwOSwKLQkweDAwMTAyODQ2LCAweDA0MDFmMDA3LCAweDgzMmMwNDAwLCAweDAwMDAwMDA2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDM4NDEsIDB4NGEwMWQ4MDksIDB4MDAxMDI4NDYsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg1OGVjMDAwZCwgMHg0MDAyNTgwMCwKLQkweDU5MmMwMjA0LCAweDgyMDAwNTgwLCAweDAwMDAwMTAzLCAweDA0MDIwMDA2LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NWMwMjYwMDAsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHg1OGVjMDAwZCwgMHg0MDAyNTgwMCwgMHg1OTJjMDQwNCwKLQkweDg0MDAwNTVlLCAweDQ4MDI1YzA0LCAweDQyMDI4ODAwLCAweDAwMDAwN2ZkLAotCTB4NDIwMDMwMDAsIDB4MDBmZmZmZmQsIDB4MDIwMWY4MDAsIDB4MDAxMDQzZmMsCi0JMHgwNDAwMDAwMywgMHg4MDAwMDU4MCwgMHgwNDAxZjAwNCwgMHg1OWEyNjAwMSwKLQkweDAyMDFmODAwLCAweDAwMTA5MTQ2LCAweDVjMDI2MDAwLCAweDAyMDAwMDAwLAotCTB4MDAxMDIwYjIsIDB4NGQzMDAwMDAsIDB4NGEwMWQ4MDksIDB4MDAxMDI4OTksCi0JMHgwNDAxZjdkYywgMHg1OTJjMDAwNSwgMHg4MjAwMDU4MCwgMHgwMTAwMDAwMCwKLQkweDAyMDAwMDAwLCAweDAwMTAyMGJlLCAweDRkMzAwMDAwLCAweDU5YTI2MDAxLAotCTB4NTkzMDAyMGIsIDB4NTkzMDFjMGEsIDB4OTAwMDAxYzAsIDB4ODAwYzFkNDAsCi0JMHg1OTMwMDQwZCwgMHg1OTMwMTIwZCwgMHg5MDAwMDFjMCwgMHg4MDA4MTU0MCwKLQkweDU5MmMwYTA1LCAweDgzMmMwNDAwLCAweDAwMDAwMDA2LCAweDAyMDFmODAwLAotCTB4MDAxMDM4NDEsIDB4NGEwMWQ4MDksIDB4MDAxMDI4NDYsIDB4NGEwMzQwMDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDRjMzAwMDAwLCAweDU5MzAwNDBiLCAweDgyMDAwYzgwLCAweDAwMDAwMDBlLAotCTB4MDQwMDEwMDQsIDB4NGEwMjVhMDUsIDB4MDAwMDAwMGUsIDB4MDQwMWYwMDMsCi0JMHg0ODAyNWEwNSwgMHgwNDAxZjAwYywgMHg4MDA0MDljMCwgMHgwNDAwMDAwYSwKLQkweDRjMDQwMDAwLCAweDAyMDFmODAwLCAweDAwMTAzODFhLCAweDVjMDAwODAwLAotCTB4MDQwMDAwMDMsIDB4NDAwNDAwMDAsIDB4MDQwMWY3ZjAsIDB4ODAwMDA1ODAsCi0JMHgwNDAxZjAwMywgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAwNjAwMCwKLQkweDFjMDFmMDAwLCAweDU5YTAwMjA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDQ0LAotCTB4MWMwMWYwMDAsIDB4NDgwN2M4NTcsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMGMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTZjMSwgMHgwNDAyMDAwOSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDAyLCAweDAyMDFmODAwLCAweDAwMTAxOGZhLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsIDB4MDAxMDE4OTIsIDB4NTlhMDA0MDYsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDAwNywgMHgwYzAxZjAwMSwgMHgwMDEwMjhlZCwKLQkweDAwMTAyOTAyLCAweDAwMTAyOTE4LCAweDAwMTAyOGViLCAweDAwMTAyOGViLAotCTB4MDAxMDI4ZWIsIDB4MDAxMDI4ZWIsIDB4MDAxMDI4ZWIsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiNiwgMHg0MjAwMDgwMCwgMHgwMDAwMDBjMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxOWFjLCAweDgyMDQwNTQwLCAweDAwMDAwMDAyLCAweDQyMDAwODAwLAotCTB4MDAwMDAwYzAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywgMHg4MjA0MDU0MCwKLQkweDAwMDAwMDA4LCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDE5YjEsIDB4MDQwMWYwMGIsIDB4NDIwMDA4MDAsIDB4MDAwMDAwYzAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywgMHg4MjA0MDU0MCwgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMGMwLCAweDAyMDFmODAwLCAweDAwMTAxOWIxLAotCTB4NTljODAwNDAsIDB4NGMwMDAwMDAsIDB4NTlhODAwMTAsIDB4NGMwMDAwMDAsCi0JMHg1OWM0MDBhMywgMHg0YzAwMDAwMCwgMHg1OWM0MDAwOCwgMHg0YzAwMDAwMCwKLQkweDA0MDFmOTExLCAweDA0MDAwMDIxLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4NTlhODA4MjEsIDB4ODAwNDA5YzAsIDB4MDIwMjAwMDAsIDB4MDAxMDIwYmEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAyMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDE2LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDgzNmMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDIwMjAwMDAsIDB4MDAxMDIwYmEsIDB4NTljNDA4YTQsCi0JMHg4MjA0MGQwMCwgMHgwMDAwMDAwZiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMCwKLQkweDAyMDIwMDAwLCAweDAwMTAyMGJhLCAweDU5YzgwMDQwLCAweDRjMDAwMDAwLAotCTB4NTlhODAwMTAsIDB4NGMwMDAwMDAsIDB4NTljNDAwYTMsIDB4NGMwMDAwMDAsCi0JMHg1OWM0MDAwOCwgMHg0YzAwMDAwMCwgMHg1OWM0MDA4MCwgMHg0YzAwMDAwMCwKLQkweDU5YTAwMjBmLCAweDU5YTBiYzBmLCAweDkwNWNiOWMwLCAweDgwNWNiZDQwLAotCTB4NDE3ODQ4MDAsIDB4NDE3ODUwMDAsIDB4NDE3ODU4MDAsIDB4NDE3ODkwMDAsCi0JMHg0MTc4OTgwMCwgMHgwNDAxZmUyMSwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywKLQkweDAyMDFmODAwLCAweDAwMTAwYjI5LCAweDQxNzhjMDAwLCAweDQ5N2I0MDAyLAotCTB4MDQwMWY5NWMsIDB4MDQwMWY5YWEsIDB4NTlhMDAyMGMsIDB4NTlhMDBjMGMsCi0JMHg4MDA0MGQ0MCwgMHgwNDAwMDAwMiwgMHgwNDAxZjlmYiwgMHgwNDAxZjlmYSwKLQkweDA0MDFmZTY4LCAweDgwNjBjMWMwLCAweDA0MDIwMDE0LCAweDA0MDFmYTk4LAotCTB4MDQwMWZlYjIsIDB4MDQwMjAwMGUsIDB4MDIwMWY4MDAsIDB4MDAxMDE5NDEsCi0JMHgwNDAyMDAwOCwgMHg0YTAzNDQwNiwgMHgwMDAwMDAxNywgMHgwMjAxZjgwMCwKLQkweDAwMTAyMGIyLCAweDQyMDNlMDAwLCAweDUwMDAwMDAwLCAweDA0MDFmMDAwLAotCTB4NDIwMDU4MDAsIDB4MDAwMGFhYWEsIDB4MDQwMWYwNTgsIDB4NTljODAwMDEsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDdlZSwgMHg1OWM4MDgwMSwgMHg4MDA0MDljMCwKLQkweDA0MDAwMDA2LCAweDA0MDFmYTcwLCAweDQwMjQwMDAwLCAweDgwMjgwNTQwLAotCTB4ODAyYzA1NDAsIDB4MDQwMjAwNGQsIDB4NTlhMDAwMDIsIDB4ODIwMDA1ODAsCi0JMHhmZWVkYmVlZiwgMHgwNDAwMDAwNCwgMHg0MjAwODgwMCwgMHgxMDAwMDAwMCwKLQkweDA0MDFmMDAzLCAweDQyMDA4ODAwLCAweDEwMDAwMDA0LCAweDA0MDFmYTE5LAotCTB4NGEwMzQwMDIsIDB4ZmVlZGJlZWYsIDB4MDQwMWZhNzEsIDB4MDQwMWZhOTcsCi0JMHgwNDAxZmVhOCwgMHg1OWM0MDAwNSwgMHg4YzAwMDUzNCwgMHgwNDAwMDAwNCwKLQkweDQyMDA1ODAwLCAweDAwMDBiYmJiLCAweDA0MDFmMDM4LCAweDA0MDFmZTgzLAotCTB4MDQwMjAwMDcsIDB4NDIwMDU4MDAsIDB4MDAwMGNjY2MsIDB4NDg1ZjQyMGYsCi0JMHg5MDVjYjljMCwgMHg0ODVmNDQwZiwgMHgwNDAxZjAzMCwgMHg1OWEwMDQwYywKLQkweDgwMDAwMWMwLCAweDA0MDAwMDBlLCAweDU5YTI2MDAwLCAweDU5MzAwMDBkLAotCTB4ODAwMDAxYzAsIDB4MDQwMjA3YmUsIDB4NTlhMjYwMDEsIDB4NTkzMDA4MGQsCi0JMHg4MDA0MDljMCwgMHgwNDAyMDdiYSwgMHg4MDQ4OTFjMCwgMHgwNDAyMDdiOCwKLQkweDgwNGM5OWMwLCAweDA0MDIwN2I2LCAweDA0MDFmODdhLCAweDgwNWNiODQwLAotCTB4MDQwMDAwMDUsIDB4NDAyNDAwMDAsIDB4ODAyODA1NDAsIDB4ODAyYzA1NDAsCi0JMHgwNDAyMDAxYSwgMHg0MjAwMDAwMCwgMHgwMDAzMGQ0MCwgMHg4MDAwMDA0MCwKLQkweDA0MDIwMDEyLCAweDU5YzAwMDA3LCAweDgyMDAwNTAwLCAweDAwMDUwMWMwLAotCTB4MDQwMjAwMGIsIDB4MDIwMWY4MDAsIDB4MDAxMDE5NDEsIDB4MDQwMjAwMDgsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAxNywgMHgwMjAxZjgwMCwgMHgwMDEwMjBiMiwKLQkweDQyMDNlMDAwLCAweDUwMDAwMDAwLCAweDA0MDFmMDAwLCAweDQyMDA1ODAwLAotCTB4MDAwMGRkZGQsIDB4MDQwMWYwMDUsIDB4NTljMDA4MDcsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDAwYywgMHgwNDAwMDdlYSwgMHgwNDAxZmU1YywgMHg1OWEwMDQwYywKLQkweDgwMDAwMWMwLCAweDA0MDAwMDAyLCAweDA0MDFmODU2LCAweDA0MDFmZTZiLAotCTB4NDAyNDAwMDAsIDB4ODAyODA1NDAsIDB4ODAyYzA1NDAsIDB4MDQwMjAwMDMsCi0JMHg4MDVjYjljMCwgMHgwNDAyMDc4MSwgMHgwMjAxZjgwMCwgMHgwMDEwNmM4YSwKLQkweDA0MDFmZGEzLCAweDQyMDFkMDAwLCAweDAwMDE4NmEwLCAweDAyMDFmODAwLAotCTB4MDAxMDVlMDYsIDB4NWMwMDA4MDAsIDB4NDgwNzg4ODAsIDB4NWMwMDA4MDAsCi0JMHg0ODA3ODgwOCwgMHg1YzAwMDgwMCwgMHg0ODA3ODhhMywgMHg1YzAwMDgwMCwKLQkweDQ4MDc1MDEwLCAweDVjMDAwODAwLCAweDQ4MDc5MDQwLCAweDAyMDFmODAwLAotCTB4MDAxMDA5YjYsIDB4NTlhMDA0MDYsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDMsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAyYywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMGMwLCAweDAyMDFmODAwLCAweDAwMTAxOWFjLCAweDgyMDQwNTAwLAotCTB4ZmZmZmZmZmMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwYzAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTliMSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxOWFjLCAweDgyMDQwNTAwLCAweGZmZmZmZmY3LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYywgMHg4MjA0MDUwMCwKLQkweGZmZmZmZmZiLCAweDQyMDAwODAwLCAweDAwMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDE5YjEsIDB4NGEwMzg4YTcsIDB4MDAwMGY3ZjcsIDB4NDIwMDYwMDAsCi0JMHhiZWZmZmZmZiwgMHg0MjAwNjgwMCwgMHg4MDAxODAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0MGFkLCAweDQyMDA2MDAwLCAweGZmZmVmZmZmLCAweDQxNzg2ODAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQwYWQsIDB4NDAyYzAwMDAsIDB4ODAyODA1NDAsCi0JMHg4MDI0MDU0MCwgMHgwMjAwMDAwMCwgMHgwMDEwMjA2NiwgMHg0ODI3NDQwNiwKLQkweDQ4MmI0MjA3LCAweDQ4MmY0NDA3LCAweDAyMDFmMDAwLCAweDAwMTAyMGMyLAotCTB4NTlhMjYwMDAsIDB4ODEzMjYxYzAsIDB4MDQwMDAwMGUsIDB4NTkzMjU4MDgsCi0JMHg4MTJlNTljMCwgMHgwNDAwMDAwYiwgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDAyMDFmODAwLCAweDAwMTAwODQzLCAweDU5YTI2MDAxLCAweDU5MzI1ODA4LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDA4NDMsCi0JMHgxYzAxZjAwMCwgMHg0MjAwMDgwMCwgMHgwMDAwMDBlZiwgMHgwMjAxZjgwMCwKLQkweDAwMTAxNjU1LCAweDU5YzQwMGEzLCAweDg0MDAwNTVhLCAweDg0MDAwNTNhLAotCTB4NDgwMzg4YTMsIDB4MDIwMWY4MDAsIDB4MDAxMDE2YWMsIDB4MDQwMjAwMGEsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMThmYSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTAxODkyLAotCTB4MDQwMWYwMTMsIDB4MDIwMWY4MDAsIDB4MDAxMDE2YjMsIDB4MDQwMjAwMDgsCi0JMHg0MTc4MDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMThmYSwgMHg0MTc4MDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxODkyLCAweDA0MDFmMDA5LCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsIDB4MDAxMDE4ZmEsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDEwMTg5MiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAxOWFjLCAweDgyMDQwNTQwLAotCTB4MDAwMDAwMDQsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTliMSwgMHg0MjAxZDAwMCwgMHgwMDAwMDAxNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA1ZGQyLCAweDU5YzQwMDA4LCAweDg0MDAwNTRlLCAweDgyMDAwNTAwLAotCTB4ZmZmZmZmZTEsIDB4NDgwMzg4MDgsIDB4NGEwMzg4YTcsIDB4MDAwMGY3ZjcsCi0JMHg0MjAwMTAwMCwgMHgwNDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYSwKLQkweDQyMDA2MDAwLCAweGJlMjBiZmZmLCAweDQyMDA2ODAwLCAweDgwMDE4MDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQwYWQsIDB4NDIwMDYwMDAsIDB4ZmZmZWZmZmYsCi0JMHg0MTc4NjgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDBhZCwgMHg0MjAwYjAwMCwKLQkweDAwMDAxMzg4LCAweDQyMDFkMDAwLCAweDAwMDAwMDE0LCAweDRjNTgwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4MDIwMWY4MDAsIDB4MDAxMDE5NDEsCi0JMHg1YzAwYjAwMCwgMHgwNDAwMDAwNCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmNiwKLQkweDA0MDFmMDI1LCAweDU5YzQwMDA1LCAweDhjMDAwNTM0LCAweDA0MDIwMDA3LAotCTB4NTljNDAwYTQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwOCwgMHgwNDAyMDAxYywgMHg0MjAwNjAwMCwgMHgwMDAyMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0MGIyLCAweDQyMDFkMDAwLCAweDAwMDAwMDY0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4NDIwMDYwMDAsIDB4ZmVmZmZmZmYsCi0JMHg0MjAwNjgwMCwgMHgwMjAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDBhZCwKLQkweDQyMDA2MDAwLCAweGZkZmZmZmZmLCAweDQxNzg2ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDQwYWQsIDB4NGEwMzg4MDUsIDB4MDQwMDAwMDEsIDB4NTljNDAwYTQsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDAwMDAzLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NDIwMzgwMDAsIDB4MDAwMDc3MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGYwZiwgMHg1OWMwMDAwNiwgMHg1OWEwMDQwYywgMHg4MDAwMDFjMCwKLQkweDA0MDAwMDNmLCAweDU5YTAzYzBjLCAweDU5YTAwMjA5LCAweDU5YTAxYzA5LAotCTB4OTAwYzE5YzAsIDB4ODAwYzFkNDAsIDB4NTlhMDAyMGUsIDB4NTlhMDI0MGUsCi0JMHg5MDEwMjFjMCwgMHg4MDEwMjU0MCwgMHg1OWEwMDIwYiwgMHg4MjAwMDUwMCwKLQkweDAwMDBmZmZjLCAweDU5YTAxNDBiLCAweDkwMDgxMWMwLCAweDgwMDgxNTQwLAotCTB4NDgwYjgwMDMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0OTMzNDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwKLQkweDRhMDI1YTA0LCAweDAwMDAwMDE4LCAweDRhMDI1ODA1LCAweDAwYWJjZGVmLAotCTB4NDkyZTYwMDgsIDB4NDkyZTYwMGIsIDB4NDgxZTYwMGQsIDB4NGEwMjYwMGMsCi0JMHgwMDAwMDAwNCwgMHg4MzJjMDQwMCwgMHgwMDAwMDAxMSwgMHg0ODAyNjAwYSwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDBjLCAweDgyMWMwZDgwLCAweDAwMDAwMDAxLAotCTB4MDQwMDAwMDQsIDB4ODAxYzM4NDAsIDB4MDQwMWY5NjMsIDB4MDQwMWYwMDQsCi0JMHg0MTc4MzgwMCwgMHgwNDAxZjk2MCwgMHgwNDAxZjAxMSwgMHg4MjFjMGM4MCwKLQkweDAwMDAwMDA1LCAweDA0MDAxMDA1LCAweDQwMDQzODAwLCAweDQyMDAxMDAwLAotCTB4MDAwMDAwM2MsIDB4MDQwMWYwMDYsIDB4ODAwMDE1ODAsIDB4ODIwODE0MDAsCi0JMHgwMDAwMDAwYywgMHg4MDFjMzg0MCwgMHgwNDAyMDdmZCwgMHg4MzJjMDQwMCwKLQkweDAwMDAwMDA1LCAweDA0MDFmOTUwLCAweDA0MDIwN2YxLCAweDQ5N2I5MDA5LAotCTB4NTllMDAwMDMsIDB4ODIwMDA1NDAsIDB4MDAwMDgwNjAsIDB4NDgwM2MwMDMsCi0JMHg0YTAzODAwOSwgMHgwMGUwMDAwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDQxNzgwODAwLCAweDgwMDdhMGNhLCAweDgzZDNhNDAwLCAweDAwMDA3NjAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwNDAsIDB4MDIwMWY4MDAsIDB4MDAxMDEzOTUsCi0JMHg0YTAzYTAwYSwgMHgwMDAwMDAwMSwgMHg0YTAzYTAwNSwgMHgyMDAwMDAwMCwKLQkweDU5ZDAwMDA2LCAweDRhMDNhMDA1LCAweDMwMDAwMDAwLCAweDU5ZDAwMDA2LAotCTB4OGMwMDA1MGEsIDB4MDQwMjA3ZmUsIDB4NTlkMDAwMDUsIDB4NTlhMDAyMGMsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDAzZiwgMHg1OWEwM2EwYywgMHg1OWEwMDIxMCwKLQkweDU5YTAxYzEwLCAweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDU5YTAwMjBkLAotCTB4NTlhMDI0MGQsIDB4OTAxMDIxYzAsIDB4ODAxMDI1NDAsIDB4NTlhMDEyMGIsCi0JMHg4MjA4MTUwMCwgMHgwMDAwZmZmYywgMHg1OWEwMDQwYiwgMHg5MDAwMDFjMCwKLQkweDgwMDgxNTQwLCAweDQ4MGJhMDAzLCAweDAyMDFmODAwLCAweDAwMDIwODkyLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NDkzMzQwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDgyYSwgMHg0YTAyNWEwNCwgMHgwMDAwMDAxOCwgMHg0YTAyNTgwNSwKLQkweDAwYWJjZGVmLCAweDQ5MmU2MDA4LCAweDQ5MmU2MDBiLCAweDQ4MWU2MDBkLAotCTB4NGEwMjYwMGMsIDB4MDAwMDAwMDQsIDB4ODMyYzA0MDAsIDB4MDAwMDAwMTEsCi0JMHg0ODAyNjAwYSwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwYywgMHg4MjFjMGQ4MCwKLQkweDAwMDAwMDAxLCAweDA0MDAwMDA0LCAweDgwMWMzODQwLCAweDA0MDFmOTA2LAotCTB4MDQwMWYwMDQsIDB4NDE3ODM4MDAsIDB4MDQwMWY5MDMsIDB4MDQwMWYwMTEsCi0JMHg4MjFjMGM4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMTAwNSwgMHg0MDA0MzgwMCwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDNjLCAweDA0MDFmMDA2LCAweDgwMDAxNTgwLAotCTB4ODIwODE0MDAsIDB4MDAwMDAwMGMsIDB4ODAxYzM4NDAsIDB4MDQwMjA3ZmQsCi0JMHg4MzJjMDQwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjhmMywgMHgwNDAyMDdmMSwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDU5YTAwMjBjLCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMjQsIDB4ODI0YzA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMDAwNDAsCi0JMHg1OWEyNjAwMSwgMHg1OTMwMzgwZCwgMHg4MDFjMzljMCwgMHgwNDAwMDAzYywKLQkweDgwMWMzODQwLCAweDQ4MWU2MDBkLCAweDU5MzI1ODBiLCAweDU5MzAwODBhLAotCTB4NTAwNDIwMDAsIDB4NTgwNDE4MDEsIDB4NTgwNDEwMDIsIDB4ODIwODE1MDAsCi0JMHhmZmZmZmZmYywgMHg1OTMwMDAwYywgMHg4MDAwMDAwMCwgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDA1LCAweDA0MDIwMDA5LCAweDQ5N2E2MDBjLCAweDU5MmU1ODAxLAotCTB4ODEyZTU5YzAsIDB4MDQwMDAwMWEsIDB4NDkyZTYwMGIsIDB4ODMyYzBjMDAsCi0JMHgwMDAwMDAwNSwgMHgwNDAxZjAwNSwgMHg0ODAyNjAwYywgMHg1OTMwMDgwYSwKLQkweDgyMDQwYzAwLCAweDAwMDAwMDAzLCAweDQ4MDY2MDBhLCAweDA0MDFmMDEwLAotCTB4NTlhMDEyMGIsIDB4ODIwODE1MDAsIDB4MDAwMGZmZmMsIDB4NTlhMDA0MGIsCi0JMHg5MDAwMDFjMCwgMHg4MDA4MTU0MCwgMHg0ODBiYTAwMywgMHg1OWEwMDIwZCwKLQkweDU5YTAyNDBkLCAweDkwMTAyMWMwLCAweDgwMTAyNTQwLCAweDU5YTAwMjEwLAotCTB4NTlhMDFjMTAsIDB4OTAwYzE5YzAsIDB4ODAwYzFkNDAsIDB4NDIwMWQwMDAsCi0JMHgwMDAwM2E5OCwgMHgwMjAxZjgwMCwgMHgwMDEwNWUwNiwgMHg0ODBiYTAwMiwKLQkweDU5YTgwMDU5LCAweDQ4MDNhMDA4LCAweDQ4MTNhMDAwLCAweDQ4MGZhMDAxLAotCTB4NGEwM2EwMDUsIDB4MTAwMDAwMDAsIDB4MDIwMDU4MDAsIDB4MDAxMDA2MTUsCi0JMHg4MDRjOTgwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDQ4NDdjODU3LCAweDU5YTAwNDBjLCAweDgwMDAwMWMwLCAweDA0MDAwMDI0LAotCTB4ODI0ODA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMDAwNDIsIDB4NTlhMjYwMDAsCi0JMHg1OTMwMzgwZCwgMHg4MDFjMzljMCwgMHgwNDAwMDAzZSwgMHg4MDFjMzg0MCwKLQkweDQ4MWU2MDBkLCAweDU5MzI1ODBiLCAweDU5MzAwODBhLCAweDUwMDQyMDAwLAotCTB4NTgwNDE4MDEsIDB4NTgwNDEwMDIsIDB4ODIwODE1MDAsIDB4ZmZmZmZmZmMsCi0JMHg1OTMwMDAwYywgMHg4MDAwMDAwMCwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwNSwKLQkweDA0MDIwMDA5LCAweDQ5N2E2MDBjLCAweDU5MmU1ODAxLCAweDgxMmU1OWMwLAotCTB4MDQwMDAwMWQsIDB4NDkyZTYwMGIsIDB4ODMyYzBjMDAsIDB4MDAwMDAwMDUsCi0JMHgwNDAxZjAwNSwgMHg0ODAyNjAwYywgMHg1OTMwMDgwYSwgMHg4MjA0MGMwMCwKLQkweDAwMDAwMDAzLCAweDQ4MDY2MDBhLCAweDA0MDFmMDEzLCAweDgyNDQwNTgwLAotCTB4MTAwMDAwMDAsIDB4MDQwMjAwMWYsIDB4NTlhMDAyMGUsIDB4NTlhMDI0MGUsCi0JMHg5MDEwMjFjMCwgMHg4MDEwMjU0MCwgMHg1OWEwMDIwOSwgMHg1OWEwMWMwOSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDU5YTAwMjBiLCAweDgyMDAwNTAwLAotCTB4MDAwMGZmZmMsIDB4NTlhMDE0MGIsIDB4OTAwODExYzAsIDB4ODAwODE1NDAsCi0JMHg0ODBiODAwMywgMHg0ODEzODAwMCwgMHg0ODBmODAwMSwgMHg0ODBiODAwMiwKLQkweDU5YzgwMDE4LCAweDgyMDAwNTAwLCAweGYwMDAwMDAwLCAweDU5YzAyMDA4LAotCTB4ODIxMDI1MDAsIDB4MGZmZmZmZmYsIDB4ODAxMDA1NDAsIDB4NDgwMzgwMDgsCi0JMHg0ODQ3ODAwNiwgMHg4MDQ4OTAwMCwgMHg4MjYwYzU0MCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDU5YzAwMDA5LCAweDQ4MDNjODU3LCAweDgyMDAwZDAwLAotCTB4MDBlMDAwMDAsIDB4MDQwMDAwMGQsIDB4NDg1ZjQyMGYsIDB4OTA1Y2I5YzAsCi0JMHg0ODVmNDQwZiwgMHg4YzAwMDUyZSwgMHgwNDAwMDAwMiwgMHg4MDI4NTAwMCwKLQkweDhjMDAwNTJjLCAweDA0MDAwMDAyLCAweDgwMjQ0ODAwLCAweDhjMDAwNTJhLAotCTB4MDQwMDAwMDIsIDB4ODAyYzU4MDAsIDB4MWMwMWYwMDAsIDB4NTlhMDAyMGMsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDAyNCwgMHg1OWQwMDgwNiwgMHg0ODA3Yzg1NywKLQkweDhjMDQwZDNlLCAweDA0MDAwMDIwLCAweDRhMDNhMDA1LCAweDIwMDAwMDAwLAotCTB4NGEwM2EwMDUsIDB4MzAwMDAwMDAsIDB4NTlkMDA4MDYsIDB4OGMwNDBkMGEsCi0JMHgwNDAyMDdmZSwgMHg4MjRjMDQ4MCwgMHgwMDAwMDAwMywgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDQwNGMwMDAwLCAweDBjMDFmMDAxLCAweDAwMTAyYzAyLAotCTB4MDAxMDJjMDQsIDB4MDAxMDJjMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg4MDAwMDA0MCwgMHg0MDAwOTgwMCwgMHgwNDAxZmY0MywgMHgwNDAwMDAwYSwKLQkweDA0MDFmZjQxLCAweDA0MDFmMDA4LCAweDgwMDAwMDQwLCAweDQwMDA5ODAwLAotCTB4NTlkMDA4MDYsIDB4NDgwN2M4NTcsIDB4OGMwNDBkM2UsIDB4MDQwMjA3ZTMsCi0JMHgwNDAxZmYzOSwgMHgxYzAxZjAwMCwgMHg1OWEwMDQwYywgMHg4MDAwMDFjMCwKLQkweDA0MDAwMDI0LCAweDU5YzAwODA3LCAweDQ4MDdjODU3LCAweDhjMDQwZDNlLAotCTB4MDQwMDAwMjAsIDB4NTljMDA4MDcsIDB4NGEwMzgwMDYsIDB4MjAwMDAwMDAsCi0JMHg4MjQ4MDQ4MCwgMHgwMDAwMDAwMywgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDQwNDgwMDAwLCAweDBjMDFmMDAxLCAweDAwMTAyYzI1LCAweDAwMTAyYzI3LAotCTB4MDAxMDJjMmYsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4ODAwMDAwNDAsCi0JMHg0MDAwOTAwMCwgMHg0MjAwODgwMCwgMHgxMDAwMDAwNCwgMHgwNDAxZmY2NSwKLQkweDA0MDAwMDBjLCAweDA0MDFmZjYzLCAweDA0MDFmMDBhLCAweDgwMDAwMDQwLAotCTB4NDAwMDkwMDAsIDB4NTljMDA4MDcsIDB4NDgwN2M4NTcsIDB4OGMwNDBkM2UsCi0JMHgwNDAyMDdlNSwgMHg0MjAwODgwMCwgMHgxMDAwMDAwNCwgMHgwNDAxZmY1OSwKLQkweDFjMDFmMDAwLCAweDQ5MmZjODU3LCAweDQwMDBhODAwLCAweDRhMDNiODA1LAotCTB4MjAwMDAwMDAsIDB4NTlkYzAwMDYsIDB4NGEwM2I4MDUsIDB4MzAwMDAwMDAsCi0JMHg0ODEzYjgwMCwgMHg0ODBmYjgwMSwgMHg0ODBiYjgwMiwgMHg0ODU3YjgwMywKLQkweDRhMDNiODA1LCAweDMwMDAwMDAyLCAweDU5ZGMwMDA2LCAweDRhMDNiODA1LAotCTB4NzAwMDAwMDEsIDB4NTlkYzAwMDYsIDB4NGEwM2I4MDUsIDB4MTAwMDAwMDAsCi0JMHg1OWRjMDAwNiwgMHg4YzAwMDUzZSwgMHgwNDAwMDdmZSwgMHg0YTAzYjgwNSwKLQkweDIwMDAwMDAwLCAweDU5ZGMwMDA2LCAweDU5ZGMyMDAwLCAweDU5ZGMxODAxLAotCTB4ODAxYzM5YzAsIDB4MDQwMDAwMGEsIDB4NGQyYzAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDgyYSwgMHg1YzAwMDgwMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDRhMDI1YTA0LCAweDAwMDAwMDBhLCAweDQ5MmMwODAxLCAweDFjMDFmMDAwLAotCTB4NDIwMDYwMDAsIDB4MDAxMDJkOWQsIDB4NDIwMDA4MDAsIDB4MDAwMDAwN2MsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTM5NSwgMHg0YTAzOTAyYywgMHgwMDIwMDAwMCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMWY0LCAweDU5YzgwMDJjLCAweDhjMDAwNTJjLAotCTB4MDQwMDAwMDcsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZmMsIDB4NDIwMDAwMDAsCi0JMHgwMDAwNDAwMywgMHg0MTc4MTAwMCwgMHgwNDAxZjExZSwgMHg1MDMwMTAwMCwKLQkweDQxNzg0ODAwLCAweDRhMDM5MDJkLCAweDAwMDA4MDAwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAxZjQsIDB4NTljODAwMmMsIDB4OGMwMDA1MzQsIDB4MDQwMDAwMDcsCi0JMHg4MDU4YjA0MCwgMHgwNDAyMDdmYywgMHg0MjAwMDAwMCwgMHgwMDAwNDAwMywKLQkweDQxNzgxMDAwLCAweDA0MDFmMTBmLCAweDA0MDFmODk1LCAweDgwMjQ0ODAwLAotCTB4ODIyNDA1ODAsIDB4MDAwMDAzYjEsIDB4MDQwMjA3ZmMsIDB4MDQwMWY5MTEsCi0JMHg0MTc4NDgwMCwgMHgwNDAxZjhiYiwgMHg4MDI0NDgwMCwgMHg4MjI0MDU4MCwKLQkweDAwMDAwM2IxLCAweDA0MDIwN2ZjLCAweDgwMzA2MDAwLCAweDgyMzAwNTgwLAotCTB4MDAxMDJkOWYsIDB4MDQwMjA3ZTIsIDB4NTlhODA4NjMsIDB4ODAwNDA5YzAsCi0JMHgwNDAwMDAwNywgMHg0MjAwMDAwMCwgMHgwMDAwNDAwNCwgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDAyLCAweDU5YTgxODYyLCAweDA0MDFmMGY2LCAweDQyMDA2MDAwLAotCTB4MDAxMDJkOWQsIDB4NTAzMDEwMDAsIDB4NDE3ODQ4MDAsIDB4NGEwMzkwMmQsCi0JMHgwMDAwMDgwMCwgMHgwNDAxZjg3NiwgMHg4MDI0NDgwMCwgMHg4MjI0MDU4MCwKLQkweDAwMDAwMDE4LCAweDA0MDIwN2ZjLCAweDA0MDFmOGYyLCAweDQxNzg0ODAwLAotCTB4MDQwMWY4OWMsIDB4ODAyNDQ4MDAsIDB4ODIyNDA1ODAsIDB4MDAwMDAwMTgsCi0JMHgwNDAyMDdmYywgMHg4MDMwNjAwMCwgMHg4MjMwMDU4MCwgMHgwMDEwMmQ5ZiwKLQkweDA0MDIwN2VkLCAweDU5YTgwODYzLCAweDgwMDQwOWMwLCAweDA0MDAwMDA3LAotCTB4NDIwMDAwMDAsIDB4MDAwMDQwMDQsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsCi0JMHg1OWE4MTg2MiwgMHgwNDAxZjBkNywgMHg0MjAwNjAwMCwgMHgwMDEwMmQ5ZCwKLQkweDUwMzAxMDAwLCAweDQxNzg0ODAwLCAweDRhMDM5MDJkLCAweDAwMDAwNDAwLAotCTB4MDQwMWY4NTcsIDB4ODAyNDQ4MDAsIDB4ODIyNDA1ODAsIDB4MDAwMDAwODgsCi0JMHgwNDAyMDdmYywgMHgwNDAxZjhkMywgMHg0MTc4NDgwMCwgMHgwNDAxZjg3ZCwKLQkweDgwMjQ0ODAwLCAweDgyMjQwNTgwLCAweDAwMDAwMDg4LCAweDA0MDIwN2ZjLAotCTB4ODAzMDYwMDAsIDB4ODIzMDA1ODAsIDB4MDAxMDJkOWYsIDB4MDQwMjA3ZWQsCi0JMHg1OWE4MDg2MywgMHg4MDA0MDljMCwgMHgwNDAwMDAwNywgMHg0MjAwMDAwMCwKLQkweDAwMDA0MDA0LCAweDQyMDAxMDAwLCAweDAwMDAwMDA4LCAweDU5YTgxODYyLAotCTB4MDQwMWYwYjgsIDB4NDIwMDYwMDAsIDB4MDAxMDJkOWQsIDB4NTAzMDEwMDAsCi0JMHg0MTc4NDgwMCwgMHg0YTAzOTAyZCwgMHgwMDAwMjAwMCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMWY0LCAweDU5YzgwMDJjLCAweDhjMDAwNTMwLCAweDA0MDAwMDA3LAotCTB4ODA1OGIwNDAsIDB4MDQwMjA3ZmMsIDB4NDIwMDAwMDAsIDB4MDAwMDQwMDMsCi0JMHg0MTc4MTAwMCwgMHgwNDAxZjBhNywgMHg1OWM4MDAyYywgMHg4MjAwMDUwMCwKLQkweGZmZTBmZmZmLCAweDgyMDgwZDAwLCAweDAwMWYwMDAwLCAweDgwMDQwNTQwLAotCTB4NDgwMzkwMmMsIDB4MDQwMWY4MjYsIDB4ODAyNDQ4MDAsIDB4ODIyNDA1ODAsCi0JMHgwMDAwMDExMCwgMHgwNDAyMDdmYywgMHgwNDAxZjhhMiwgMHg0MTc4NDgwMCwKLQkweDA0MDFmODRjLCAweDU5YzgwMDM0LCAweDgyMDgwZDAwLCAweDAwMWYwMDAwLAotCTB4ODIwMDA1MDAsIDB4MDAxZjAwMDAsIDB4ODAwNDA1ODAsIDB4MDQwMDAwMDYsCi0JMHg1OWE4MDA2MywgMHg4MDAwMDAwMCwgMHg0ODAzNTA2MywgMHg0MDI0MDAwMCwKLQkweDQ4MDM1MDYyLCAweDgwMjQ0ODAwLCAweDgyMjQwNTgwLCAweDAwMDAwMTEwLAotCTB4MDQwMjA3ZjAsIDB4ODAzMDYwMDAsIDB4ODIzMDA1ODAsIDB4MDAxMDJkOWYsCi0JMHgwNDAyMDdjZiwgMHg1OWE4MDg2MywgMHg4MDA0MDljMCwgMHgwNDAwMDAwNiwKLQkweDQyMDAwMDAwLCAweDAwMDA0MDA0LCAweDQyMDAxMDAwLCAweDAwMDAwMDIwLAotCTB4NTlhODE4NjIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsIDB4NTljODAwMmMsCi0JMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MjA4MGQwMCwgMHgwMDAwZmZmZiwKLQkweDgwMDQwNTQwLCAweDQ4MDM5MDJjLCAweDQ4MGI5MDI4LCAweDQ4MGI5MDI5LAotCTB4NTlhODAwNjQsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMDAwMDMsCi0JMHg0ODBiOTAyYSwgMHg0ODBiOTAyYiwgMHg1OWM4MDAyZCwgMHg4MjAwMDUwMCwKLQkweGZmZmZmYzAwLCAweDgwMjQwNTQwLCAweDQ4MDM5MDJkLCAweDQyMDBiMDAwLAotCTB4MDAwMDAxZjQsIDB4NTljODAwMmMsIDB4ODIwMDA1MDAsIDB4MTgwMDAwMDAsCi0JMHgwNDAwMDAwNywgMHg4MDU4YjA0MCwgMHgwNDAyMDdmYiwgMHg0MjAwMDAwMCwKLQkweDAwMDA0MDAzLCAweDQxNzgxMDAwLCAweDA0MDFmMDVhLCAweDRhMDM5MDJlLAotCTB4MDAwMDAwMDEsIDB4NDIwMGIwMDAsIDB4MDAwMDAxZjQsIDB4NTljODAwMmUsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAwNiwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmYywKLQkweDQyMDAwMDAwLCAweDAwMDA0MDAzLCAweDA0MDFmMDRlLCAweDFjMDFmMDAwLAotCTB4NDE3ODM4MDAsIDB4NTljODAwMmQsIDB4ODIwMDA1MDAsIDB4ZmZmZmZjMDAsCi0JMHg4MDI0MGQ0MCwgMHg0ODA3OTAyZCwgMHg0MjAwYjAwMCwgMHgwMDAwMDFmNCwKLQkweDU5YzgwMDJjLCAweDgyMDAwNTAwLCAweDE4MDAwMDAwLCAweDA0MDAwMDA3LAotCTB4ODA1OGIwNDAsIDB4MDQwMjA3ZmIsIDB4NDIwMDAwMDAsIDB4MDAwMDQwMDMsCi0JMHg0MTc4MTAwMCwgMHgwNDAxZjAzYiwgMHg1OWM4MTgzMCwgMHg1OWM4MDAzMCwKLQkweDgwMGMwZDgwLCAweDA0MDIwN2ZkLCAweDgwMDgwZDgwLCAweDA0MDAwMDAyLAotCTB4ODAxYzM4MDAsIDB4NTljODIwMzEsIDB4NTljODAwMzEsIDB4ODAxMDBkODAsCi0JMHgwNDAyMDdmZCwgMHg4MDA4MGQ4MCwgMHgwNDAwMDAwMiwgMHg4MDFjMzgwMCwKLQkweDU5YTgwMDY0LCAweDgyMDAwNTgwLCAweDAwMDAwMDA0LCAweDA0MDAwMDE5LAotCTB4NTljODI4MzIsIDB4NTljODAwMzIsIDB4ODAxNDBkODAsIDB4MDQwMjA3ZmQsCi0JMHg4MDA4MGQ4MCwgMHgwNDAwMDAwMiwgMHg4MDFjMzgwMCwgMHg1OWM4MzAzMywKLQkweDU5YzgwMDMzLCAweDgwMTgwZDgwLCAweDA0MDIwN2ZkLCAweDgwMDgwZDgwLAotCTB4MDQwMDAwMDIsIDB4ODAxYzM4MDAsIDB4NTljODAwMzQsIDB4NTljODA4MzQsCi0JMHg4MDA0MGQ4MCwgMHgwNDAyMDdmZCwgMHg4MDA4MGQ4MCwgMHg4MjA0MGQwMCwKLQkweDAwMDBmZmZmLCAweDA0MDAwMDBjLCAweDgwMWMzODAwLCAweDA0MDFmMDBhLAotCTB4NTljODAwMzQsIDB4NTljODA4MzQsIDB4ODAwNDBkODAsIDB4MDQwMjA3ZmQsCi0JMHg4MDA4MGQ4MCwgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwgMHgwNDAwMDAwMiwKLQkweDgwMWMzODAwLCAweDgwMWMzOWMwLCAweDA0MDAwMDA1LCAweDU5YTgwMDYzLAotCTB4ODAxYzA0MDAsIDB4NDgwMzUwNjMsIDB4NDgyNzUwNjIsIDB4MWMwMWYwMDAsCi0JMHg0ODAzNDIwNiwgMHg0ODA3NDQwNiwgMHg0ODBiNDIwNywgMHg0ODBmNDQwNywKLQkweDQ4MTM0MjA4LCAweDQ4MTc0NDA4LCAweDAyMDFmMDAwLCAweDAwMTAyMDY5LAotCTB4NDIwMDAwMDAsIDB4MDA2MDAwMDAsIDB4ODAwMDAwNDAsIDB4MDQwMjA3ZmYsCi0JMHgxYzAxZjAwMCwgMHg1YTVhNWE1YSwgMHhhNWE1YTVhNSwgMHg1OWEwMGMwYSwKLQkweDgwMDQwOWMwLCAweDAyMDAwMDAwLCAweDAwMTAyMGI2LCAweDgyMDQwNDgwLAotCTB4MDAwMDAwMjEsIDB4MDIwMjEwMDAsIDB4MDAxMDIwYjYsIDB4ODIwNDA0ODAsCi0JMHgwMDAwMDAxMSwgMHgwNDAwMTAwMywgMHg0MjAwMDgwMCwgMHgwMDAwMDAxMCwKLQkweDU5YTAwMjA4LCAweDU5YTAxNDA3LCAweDkwMDgxMWMwLCAweDgwMDgxNTQwLAotCTB4NTlhMDAyMDcsIDB4NTlhMDFjMDYsIDB4OTAwYzE5YzAsIDB4ODAwYzFkNDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwgMHgwNDAwMDAwNiwgMHgwMjAxZjgwMCwKLQkweDAwMTAzODNlLCAweDRhMDFkODA5LCAweDAwMTAyZGMwLCAweDFjMDFmMDAwLAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsCi0JMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwgMHg1OGVjMDAwMiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMjAwLCAweDAyMDAwMDAwLCAweDAwMTAyMGFhLCAweDU5YTAwYzBhLAotCTB4ODIwNDA0ODAsIDB4MDAwMDAwMTEsIDB4MDQwMDEwMDMsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAxMCwgMHg1OWEwMDQwYiwgMHg1OWEwMTIwYiwgMHg5MDA4MTFjMCwKLQkweDgwMDgxNTQwLCAweDU5YTAwMjA5LCAweDU5YTAxYzA4LCAweDkwMGMxOWMwLAotCTB4ODAwYzFkNDAsIDB4NThlYzAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDM4NDEsCi0JMHg0YTAxZDgwOSwgMHgwMDEwMmRkYiwgMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwKLQkweDU4ZWY0MDBiLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLAotCTB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsIDB4NTlhMDBjMGEsIDB4ODIwNDA0ODAsCi0JMHgwMDAwMDAxMSwgMHgwMjAwMTAwMCwgMHgwMDEwMjA2NiwgMHg4MjA0MGM4MCwKLQkweDAwMDAwMDEwLCAweDU5YTAwMjA4LCAweDU5YTAxNDA3LCAweDkwMDgxMWMwLAotCTB4ODAwODE1NDAsIDB4NTlhMDAyMDcsIDB4NTlhMDFjMDYsIDB4OTAwYzE5YzAsCi0JMHg4MDBjMWQ0MCwgMHg4MjA4MTQwMCwgMHgwMDAwMDA0MCwgMHg1OGVjMDAwMywKLQkweDAyMDFmODAwLCAweDAwMTAzODNlLCAweDRhMDFkODA5LCAweDAwMTAyZGY5LAotCTB4MWMwMWYwMDAsIDB4NDAzMWQ4MDAsIDB4NThlZjQwMGIsIDB4NThlYzAwMDIsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwKLQkweDU5YTAwNDBhLCAweDgyMDAwYzgwLCAweDAwMDAwMDEwLCAweDU5YTAwNDBiLAotCTB4NTlhMDEyMGIsIDB4OTAwODExYzAsIDB4ODAwODE1NDAsIDB4NTlhMDAyMDksCi0JMHg1OWEwMWMwOCwgMHg5MDBjMTljMCwgMHg4MDBjMWQ0MCwgMHg4MjA4MTQwMCwKLQkweDAwMDAwMDQwLCAweDU4ZWMwMDAzLCAweDAyMDFmODAwLCAweDAwMTAzODQxLAotCTB4NGEwMWQ4MDksIDB4MDAxMDIwNWYsIDB4MWMwMWYwMDAsIDB4NDhlZmM4NTcsCi0JMHg1OWEwMDIwNywgMHg1OWEwMTQwNywgMHg5MDAwMDFjMCwgMHg4MDA4MTU0MCwKLQkweDU5YTAwMjA5LCAweDU5YTAxYzA5LCAweDkwMDAwMWMwLCAweDgwMGMxZDQwLAotCTB4NTlhMDA0MDYsIDB4NDgwMzQwMDAsIDB4NDgwYjQwMDEsIDB4NDgwZjQwMDIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwgMHgwNDAyMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDAyLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMTAsIDB4MDIwMWY4MDAsIDB4MDAxMDM4M2UsIDB4NGEwMWQ4MDksCi0JMHgwMDEwMmUyZSwgMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwKLQkweDU4ZWU1ODBkLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLAotCTB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsIDB4NDhlZmM4NTcsIDB4NDlhM2M4NTcsCi0JMHg0OTJmYzg1NywgMHg1OTJjMGEwNCwgMHg4MDA0MDkxMCwgMHgwNDAyMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDE5LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NDgwNWQ4MGMsIDB4MDQwMWYwMGEsIDB4NDAzMWQ4MDAsIDB4NThlZjQwMGIsCi0JMHg1OGVjMDAwMiwgMHg4MjAwMDU4MCwgMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwKLQkweDAwMTAyMGFhLCAweDQ4ZWZjODU3LCAweDQ5YTNjODU3LCAweDQ4ZWZjODU3LAotCTB4NDlhM2M4NTcsIDB4NThlYzAwMGMsIDB4ODAwMDAwNDAsIDB4MDQwMDAwMTIsCi0JMHg0ODAxZDgwYywgMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwgMHgwNDAyMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAyLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMTAsIDB4NThlYzEwMDcsIDB4NThlYzE4MDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzgzZSwgMHg0YTAxZDgwOSwgMHgwMDEwMmU0MiwKLQkweDFjMDFmMDAwLCAweDU4ZWU1ODBkLCAweDQ4ZWZjODU3LCAweDQ5YTNjODU3LAotCTB4NDkyZmM4NTcsIDB4NDkyZjMwMDYsIDB4NTkyYzA0MDQsIDB4ODQwMDA1NWUsCi0JMHg0ODAyNWMwNCwgMHg0YTAxZDgwOSwgMHgwMDEwMmU2YywgMHgxYzAxZjAwMCwKLQkweDRkMmMwMDAwLCAweDU4ZWU1ODBkLCAweDQ4ZWZjODU3LCAweDQ5YTNjODU3LAotCTB4NDkyZmM4NTcsIDB4NTkyYzA0MDQsIDB4ODQwMDA1MWUsIDB4NDgwMjVjMDQsCi0JMHg1OWEwMDAwMCwgMHg1OWEwMTAwMSwgMHg1OWEwMTgwMiwgMHg4MDA4MTQwMCwKLQkweDgyMGMxYzQwLCAweDAwMDAwMDAwLCAweDgzMmMwNDAwLCAweDAwMDAwMDA0LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMTAsIDB4NWMwMjU4MDAsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMzg0MSwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDgzNmMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDcsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWEwMzIwYiwgMHg4MjE4MzUwMCwKLQkweDAwMDAwMGZmLCAweDU5YTI4YzA2LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LAotCTB4MDIwMjAwMDAsIDB4MDAxMDIwYjYsIDB4ODM0NDA1ODAsIDB4MDAwMDA3ZmQsCi0JMHgwNDAwMDAwOCwgMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAwMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDA5LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDM4MWEsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg4MDE4MzFjMCwKLQkweDA0MDAwMDBhLCAweDQxMmMwODAwLCAweDAyMDFmODAwLCAweDAwMTAzODFhLAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg0MDA2NTgwMCwgMHg0YTAyNWMwNCwgMHgwMDAwODAwMCwKLQkweDQ5N2E1YTA0LCAweDAyMDFmODAwLCAweDAwMTA4ZWJkLCAweDA0MDIwMDA1LAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDMsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsCi0JMHg0YTAxZDgwOSwgMHgwMDEwMmViZiwgMHgxYzAxZjAwMCwgMHg1OTJjMDAwNSwKLQkweDgyMDAwNTgwLCAweDAxMDAwMDAwLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LAotCTB4MDAwMDAwMDQsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTkyYzA0MDYsCi0JMHg4MjAwMmQwMCwgMHgwMDAwZmYwMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDgwMDAwOTA0LCAweDgwMDQwODAwLCAweDgyMDQwNDgwLCAweDAwMDAwMDA2LAotCTB4MDQwMDEwMDMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4NGM1MDAwMDAsCi0JMHg0YzU0MDAwMCwgMHg0YzU4MDAwMCwgMHg4MzJjYTQwMCwgMHgwMDAwMDAwNiwKLQkweDQwNTBhODAwLCAweDQwMDRiMDAwLCAweDAyMDFmODAwLCAweDAwMTBhOTRmLAotCTB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsIDB4OTAwODExYzAsIDB4ODAwODE1NDAsCi0JMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwgMHg5MDBjMTljMCwgMHg4MDBjMWQ0MCwKLQkweDgzMmMwNDAwLCAweDAwMDAwMDA2LCAweDRjMTQwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDM4NDEsIDB4NWMwMDI4MDAsIDB4ODAxNDI5YzAsIDB4MDQwMDAwMDMsCi0JMHg0YTAxZDgwOSwgMHgwMDEwMmVmMiwgMHg1YzAwYjAwMCwgMHg1YzAwYTgwMCwKLQkweDVjMDBhMDAwLCAweDFjMDFmMDAwLCAweDQwMzFkODAwLCAweDU4ZWY0MDBiLAotCTB4NThlZTU4MGQsIDB4NThlYzAwMDIsIDB4ODIwMDA1ODAsIDB4MDAwMDAyMDAsCi0JMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwgMHg4MTJlNTljMCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDU5MmMwMDA2LCAweDgyMDAwNTAwLCAweGZmMDAwMDAwLAotCTB4ODAwMDA5MDQsIDB4ODAwNDA5YzAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsCi0JMHg4MjA0MDQ4MCwgMHgwMDAwMDAwZSwgMHgwNDAwMTAwMywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDBkLCAweDU5MmU1ODAxLCAweDgxMmU1OWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsCi0JMHg4MzJjYTQwMCwgMHgwMDAwMDAwNSwgMHg0MDUwYTgwMCwgMHg0MDA0YjAwMCwKLQkweDAyMDFmODAwLCAweDAwMTBhOTRmLCAweDVjMDBiMDAwLCAweDVjMDBhODAwLAotCTB4NWMwMGEwMDAsIDB4NThlYzEwMDcsIDB4NThlYzE4MDgsIDB4ODMyYzA0MDAsCi0JMHgwMDAwMDAwNSwgMHgwMjAxZjAwMCwgMHgwMDEwMzg0MSwgMHgwMjAxZjgwMCwKLQkweDAwMTAzODFhLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAyLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhMDBjMDYsIDB4ODIwNDA1MDAsCi0JMHgwMDAwZmYwMCwgMHg4NDAwMDFjMCwgMHg4MjAwMTQ4MCwgMHgwMDAwMDAwNywKLQkweDAyMDIxMDAwLCAweDAwMTAyMGI2LCAweDBjMDFmMDAxLCAweDAwMTAyZjM2LAotCTB4MDAxMDJmM2QsIDB4MDAxMDJmNDQsIDB4MDAxMDJmNDQsIDB4MDAxMDJmNDQsCi0JMHgwMDEwMmY0NiwgMHgwMDEwMmY0YiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwZCwKLQkweDQyMDAzODAwLCAweDAwMTAyZjVmLCAweDRhMDM0MDAwLCAweDAwMTBiMmU3LAotCTB4MDQwMWYwMTMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMGQsIDB4NDIwMDM4MDAsCi0JMHgwMDEwMmY1ZiwgMHg0YTAzNDAwMCwgMHgwMDEwYjJmNCwgMHgwNDAxZjAwYywKLQkweDAyMDFmMDAwLCAweDAwMTAyMGI2LCAweDQyMDAwODAwLCAweDAwMDAwMDA4LAotCTB4NDIwMDM4MDAsIDB4MDAxMDJmNzIsIDB4MDQwMWYwMDUsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNCwgMHg0MjAwMzgwMCwgMHgwMDEwMmZiYywgMHg1OWEwMDIwNywKLQkweDU5YTAxNDA3LCAweDkwMDAwMWMwLCAweDgwMDgxNTQwLCAweDU5YTAwMjA5LAotCTB4NTlhMDFjMDksIDB4OTAwMDAxYzAsIDB4ODAwYzFkNDAsIDB4ODMyYzA0MDAsCi0JMHgwMDAwMDAwNSwgMHg0YzFjMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMzgzZSwKLQkweDVjMDAzODAwLCAweDQ4MWRkODA5LCAweDFjMDFmMDAwLCAweDQwMzFkODAwLAotCTB4NThlZjQwMGIsIDB4NThlZTU4MGQsIDB4NThlYzAwMDIsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwgMHg0YTAzNTAxZiwKLQkweDAwMDAwMDAxLCAweDQyMDBiMDAwLCAweDAwMDAwMDBkLCAweDU5YTBhODAwLAotCTB4ODMyY2E0MDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwKLQkweDU4ZWU1ODBkLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLAotCTB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsIDB4ODMyY2E0MDAsIDB4MDAwMDAwMDUsCi0JMHg1MDUwMDAwMCwgMHg4MjAwMTUwMCwgMHgwMDBjMDAxNiwgMHgwMjAyMDAwMCwKLQkweDAwMTAyMGI2LCAweDgyNTAwYzAwLCAweDAwMDAwMDAzLCAweDUwMDQwMDAwLAotCTB4ODIwMDE1MDAsIDB4MDAwMDAwMDEsIDB4MDIwMjAwMDAsIDB4MDAxMDIwYjYsCi0JMHg1MDUwMDAwMCwgMHg4MjAwMTUwMCwgMHgwMDAwMDAyOCwgMHgwNDAwMDAxZCwKLQkweDgyMDgxNTgwLCAweDAwMDAwMDI4LCAweDAyMDIwMDAwLCAweDAwMTAyMGI2LAotCTB4ODA1MDA4MDAsIDB4NTAwNDAwMDAsIDB4ODIwMDE1MDAsIDB4MDAwMDAwMTMsCi0JMHg4MjA4MTU4MCwgMHgwMDAwMDAxMywgMHgwMjAyMDAwMCwgMHgwMDEwMjBiNiwKLQkweDgwMDQwODAwLCAweDUwMDQwMDAwLCAweDgyMDAxNTAwLCAweDAwMDEwMDAwLAotCTB4ODIwODE1ODAsIDB4MDAwMTAwMDAsIDB4MDIwMjAwMDAsIDB4MDAxMDIwYjYsCi0JMHg4MzZjMDU4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAxMiwgMHg1OTljMDAxOSwKLQkweDhjMDAwNTBlLCAweDA0MDIwMDBmLCAweDAyMDFmMDAwLCAweDAwMTAyMGI2LAotCTB4ODA1MDA4MDAsIDB4NTAwNDAwMDAsIDB4ODIwMDE1MDAsIDB4MDAwMDAwMTMsCi0JMHgwMjAyMDAwMCwgMHgwMDEwMjBiNiwgMHg4MDA0MDgwMCwgMHg1MDA0MDAwMCwKLQkweDgyMDAxNTAwLCAweDAwMDEwMDAwLCAweDAyMDIwMDAwLCAweDAwMTAyMGI2LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMDgsIDB4NDIwMGE4MDAsIDB4MDAxMGIyZGYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwKLQkweDQwMzFkODAwLCAweDU4ZWY0MDBiLCAweDU4ZWU1ODBkLCAweDU4ZWMwMDAyLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAyMDAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwNCwgMHg0MjAwYTgwMCwgMHgwMDEwYjZmOSwKLQkweDgzMmNhNDAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4NTlhODAwMDUsIDB4ODQwMDA1NTAsIDB4NDgwMzUwMDUsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwgMHgwNDAyMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAyLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NTlhMDBjMDYsIDB4ODIwNDA1MDAsIDB4MDAwMGZmMDAsIDB4ODQwMDAxYzAsCi0JMHg4MjAwMTQ4MCwgMHgwMDAwMDAwNiwgMHgwMjAyMTAwMCwgMHgwMDEwMjBiNiwKLQkweDBjMDFmMDAxLCAweDAwMTAyZmU3LCAweDAwMTAyZmVjLCAweDAwMTAyZmYxLAotCTB4MDAxMDJmZjEsIDB4MDAxMDJmZjEsIDB4MDAxMDJmZjMsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwZCwgMHg0MjAwYTAwMCwgMHgwMDEwYjJlNywgMHgwNDAxZjAwYywKLQkweDQyMDAwODAwLCAweDAwMDAwMDBkLCAweDQyMDBhMDAwLCAweDAwMTBiMmY0LAotCTB4MDQwMWYwMDcsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjYsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwOCwgMHg0MjAwYTAwMCwgMHgwMDEwYjJkZiwgMHg0MDA0YjAwMCwKLQkweDgzMmNhYzAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4NTlhMDAyMDcsIDB4NTlhMDE0MDcsIDB4OTAwMDAxYzAsIDB4ODAwODE1NDAsCi0JMHg1OWEwMDIwOSwgMHg1OWEwMWMwOSwgMHg5MDAwMDFjMCwgMHg4MDBjMWQ0MCwKLQkweDgzMmMwNDAwLCAweDAwMDAwMDA1LCAweDAyMDFmMDAwLCAweDAwMTAzODQxLAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwNywgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWEwMTQwNiwKLQkweDgwMDgxMWMwLCAweDA0MDIwMDE3LCAweDU5YzQwODAxLCAweDgyMDQwZDAwLAotCTB4MDAwMTgwMDAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMjAwMDQsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwMCwgMHgwNDAxZjA0OCwgMHg4MjA0MDU4MCwKLQkweDAwMDA4MDAwLCAweDA0MDIwMDA0LCAweDRhMDM0NDA2LCAweDAwMDAwMDAxLAotCTB4MDQwMWYwNDIsIDB4ODIwNDA1ODAsIDB4MDAwMTAwMDAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMywgMHgwNDAxZjAzYiwKLQkweDU5YTgwMDZmLCAweDhjMDAwNTA4LCAweDA0MDAwMDA1LCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDEsIDB4NDAwMDA4MDAsIDB4MDQwMWYwMDMsIDB4NTlhMDAyMDcsCi0JMHg1OWE4MDg1MywgMHg0ODAzNTA1MywgMHgwMjAxZjgwMCwgMHgwMDEwMTZhYywKLQkweDA0MDAwMDBkLCAweDAyMDFmODAwLCAweDAwMTAxNmIzLCAweDA0MDAwMDBhLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE2YmEsIDB4MDQwMDAwMDcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTZjMSwgMHgwNDAwMDAwNCwgMHg0ODA3NTA1MywgMHgwMjAxZjAwMCwKLQkweDAwMTAyMGI2LCAweDgyMDgwNTgwLCAweDAwMDAwMDAyLCAweDA0MDIwMDFmLAotCTB4NTljNDAwMDYsIDB4ODQwMDA1MDAsIDB4NDgwMzg4MDYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmMzMiwgMHg0OTdiODg4MCwgMHgwMjAxZjgwMCwgMHgwMDEwYTdlNywKLQkweDAyMDFmODAwLCAweDAwMTBhN2Y1LCAweDQyMDAwMDAwLCAweDAwMTBiNmM5LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGU1ZCwgMHg0YTAzODgwOCwgMHgwMDAwMDAwMCwKLQkweDQyMDJkODAwLCAweDAwMDAwMDA0LCAweDQyMDAxMDAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE5YWEsIDB4NGEwMzUwNDksIDB4MDAwMDAwMDEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDcxYSwgMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwKLQkweDgwMDQwOWMwLCAweDA0MDAwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAxLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwNywgMHgwMjAxZjAwMCwKLQkweDAwMTAyMGIyLCAweDU5YTI4YzA2LCAweDU5YTAzMjBiLCAweDgyMTgzNTAwLAotCTB4MDAwMDAwZmYsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDIwMjAwMDAsCi0JMHgwMDEwMjBiNiwgMHg4MzQ0MDU4MCwgMHgwMDAwMDdmZCwgMHgwNDAwMDAwOCwKLQkweDAyMDFmODAwLCAweDAwMTA0ODM2LCAweDA0MDAwMDA1LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDksIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzgxYSwgMHgwNDAyMDAwNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMiwKLQkweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDQ5N2E1YTA0LCAweDRhMDI1YzA0LAotCTB4MDAwMDgwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDhlZDIsIDB4MDQwMjAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwMywgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDRhMDFkODA5LCAweDAwMTAzMDk3LCAweDFjMDFmMDAwLCAweDU5MmMwMDA1LAotCTB4ODIwMDBkMDAsIDB4MDAwMGZmZmYsIDB4ODIwMDA1MDAsIDB4ZmZmZjAwMDAsCi0JMHg4MjAwMDU4MCwgMHgwMTAwMDAwMCwgMHgwNDAyMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDA0LCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDgwMDQwOTA0LAotCTB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsIDB4ODMyY2E0MDAsCi0JMHgwMDAwMDAwNSwgMHg0MDUwYTgwMCwgMHg0MDA0YjAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhOTRmLCAweDVjMDBiMDAwLCAweDVjMDBhODAwLCAweDVjMDBhMDAwLAotCTB4NTlhMDAyMDcsIDB4NTlhMDE0MDcsIDB4OTAwMDAxYzAsIDB4ODAwODE1NDAsCi0JMHg1OWEwMDIwOSwgMHg1OWEwMWMwOSwgMHg5MDAwMDFjMCwgMHg4MDBjMWQ0MCwKLQkweDgzMmMwNDAwLCAweDAwMDAwMDA1LCAweDAyMDFmMDAwLCAweDAwMTAzODQxLAotCTB4NDk2ZmM4NTcsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMDAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAxYSwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDAyMDFmODAwLCAweDAwMTA0ZTBkLCAweDAyMDIwODAwLCAweDAwMTAzZjVjLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMjAsIDB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsCi0JMHg5MDA4MTFjMCwgMHg4MDA4MTU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwKLQkweDkwMGMxOWMwLCAweDgwMGMxZDQwLCAweDQxOWMwMDAwLCAweDQ5YTNjODU3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDM4M2UsIDB4NGEwMWQ4MDksIDB4MDAxMDMwZDksCi0JMHgxYzAxZjAwMCwgMHg0ODMzYzg1NywgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwKLQkweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLCAweDAyMDAwMDAwLAotCTB4MDAxMDIwYWEsIDB4NTk5YzAyMDAsIDB4ODAwMDAxYzAsIDB4MDIwMDAwMDAsCi0JMHgwMDEwMjBiNiwgMHg1OWE4MDA2ZiwgMHg4YzAwMDUwNCwgMHgwNDAyMDAwMywKLQkweDhjMDAwNTA2LCAweDA0MDAwMDA0LCAweDU5OWMwMDE5LCAweDg0MDAwNTBjLAotCTB4NDgwMzM4MTksIDB4MDIwMWY4MDAsIDB4MDAxMDk1YTMsIDB4NTlhODAwNmYsCi0JMHg4YzAwMDUwMiwgMHgwNDAwMDAwNCwgMHg1OTljMDAxNywgMHg4NDAwMDUwOCwKLQkweDQ4MDMzODE3LCAweDAyMDFmODAwLCAweDAwMTAzOTNlLCAweDA0MDIwMDA0LAotCTB4OGMwMDA1MGEsIDB4MDIwMjAwMDAsIDB4MDAxMDIwYjYsIDB4NDgwM2M4NTcsCi0JMHg4YzAwMDUwNCwgMHgwNDAyMDAwNCwgMHg1OWM0MDhhMywgMHg4NDA0MGQ3YSwKLQkweDQ4MDc4OGEzLCAweDhjMDAwNTAyLCAweDA0MDIwMDA0LCAweDU5YzQwOGEzLAotCTB4ODQwNDBkMDgsIDB4NDgwNzg4YTMsIDB4NTk5YzBjMDIsIDB4OGMwMDA1MDAsCi0JMHgwNDAyMDAwNCwgMHg4YzAwMDUxNiwgMHgwNDAwMDAxMiwgMHgwNDAxZjAwMSwKLQkweDgyMDQxNDgwLCAweDAwMDAwMDdmLCAweDAyMDIxMDAwLCAweDAwMTAyMGI2LAotCTB4ODIwNDE0MDAsIDB4MDAxMDFlYjUsIDB4NTAwODEwMDAsIDB4ODIwODE1MDAsCi0JMHgwMDAwMDBmZiwgMHg4YzAwMDUwMCwgMHgwNDAyMDAwNiwgMHg0ODBiNTAxMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTA2OWFmLAotCTB4NTk5YzAwMTksIDB4OGMwMDA1MDYsIDB4MDQwMDAwMDMsIDB4NGEwM2I4MDUsCi0JMHg5MDAwMDAwMCwgMHg4YzAwMDUwZSwgMHgwNDAyMDAwYiwgMHg1OWE4MDgwNiwKLQkweDhjMDQwZDE0LCAweDA0MDAwMDA4LCAweDQyMDAwODAwLCAweDAwMTBiMmRmLAotCTB4NTAwNDA4MDAsIDB4ODIwNDBkMDAsIDB4MDAwMDAwMjgsIDB4MDIwMjAwMDAsCi0JMHgwMDEwMjBiNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAzMCwgMHgwNDAwMDAwMywKLQkweDgwMDAwMTA4LCAweDA0MDFmMDAzLCAweDQyMDAwMDAwLCAweDAwMDAwMDAyLAotCTB4NDgwMzkwNDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDIsIDB4ODIwMDA0MDAsCi0JMHgwMDEwMzIxYywgMHg1MDAwMTAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjlhZiwKLQkweDU5OWMwMjAxLCAweDgyMDAwYzgwLCAweDAwMDAwMTAwLCAweDAyMDAxMDAwLAotCTB4MDAxMDIwYjYsIDB4ODIwMDBjODAsIDB4MDAwMDA4NDEsIDB4MDIwMjEwMDAsCi0JMHgwMDEwMjBiNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwNywgMHgwMjAyMDAwMCwKLQkweDAwMTAyMGI2LCAweDU5OWMwNDAxLCAweDgwMDAwNTQwLCAweDAyMDAwMDAwLAotCTB4MDAxMDIwYjYsIDB4NTk5YzA0MDksIDB4NTk5YzBjMDcsIDB4ODAwNDBjODAsCi0JMHgwMjAyMTAwMCwgMHgwMDEwMjBiNiwgMHg4MDAwMDA0MCwgMHgwMjAwMDAwMCwKLQkweDAwMTAyMGI2LCAweDU5OWMwMjA5LCAweDU5OWMwYTA3LCAweDgwMDQwYzgwLAotCTB4MDIwMjEwMDAsIDB4MDAxMDIwYjYsIDB4ODAwMDAwNDAsIDB4MDIwMDAwMDAsCi0JMHgwMDEwMjBiNiwgMHgwMjAxZjgwMCwgMHgwMDEwNTA5ZCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0YjUzLCAweDU5OWMwMjAxLCAweDQ4MDM1MDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDEzM2UsIDB4NTk5YzAyMGEsIDB4ODAwMDAxYzAsIDB4MDQwMDAwMDMsCi0JMHg0ODAzNTA0ZCwgMHgwNDAxZjAwMywgMHg0YTAzNTA0ZCwgMHgwMDAwMDBjOCwKLQkweDAyMDFmODAwLCAweDAwMTAzOTNlLCAweDA0MDAwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDVlMTgsIDB4NDE3YTUwMDAsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDAsCi0JMHgwNDAyMDA5YSwgMHg1OTljMDAwMywgMHg1OTljMDgwNCwgMHg5YzAwMDFjMCwKLQkweDljMDQwOWMwLCAweDQ4MDM1MDAyLCAweDQ4MDc1MDAzLCAweDU5OWMxMDE3LAotCTB4OGMwODE1MWMsIDB4MDQwMDAwMDYsIDB4NTk5YzAwMDUsIDB4NTk5YzA4MDYsCi0JMHg5YzAwMDFjMCwgMHg5YzA0MDljMCwgMHgwNDAxZjAwMywgMHg4MjAwMDUwMCwKLQkweGYwZmZmZmZmLCAweDQ4MDM1MDAwLCAweDQ4MDc1MDAxLCAweDQyMDAxMDAwLAotCTB4MDAxMGIyZTcsIDB4NDgwMDEwMDAsIDB4NDgwNDEwMDEsIDB4NDIwMDEwMDAsCi0JMHgwMDEwYjJmNCwgMHg0ODAwMTAwMCwgMHg0ODA0MTAwMSwgMHg1OWE4MDA2ZiwKLQkweDhjMDAwNTA4LCAweDA0MDIwMDE3LCAweDhjMDAwNTBhLCAweDA0MDIwMDIxLAotCTB4NTk5YzEwMTksIDB4ODIwODE1MDAsIDB4MDAwMGUwMDAsIDB4ODIwODA1ODAsCi0JMHgwMDAwMDAwMCwgMHgwNDAyMDAwYywgMHg0YTAzNTA1MywgMHgwMDAwMDAwMCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTAxOGZhLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDE4OTIsCi0JMHgwNDAxZjAyYiwgMHg4MjA4MDU4MCwgMHgwMDAwMjAwMCwgMHgwNDAyMDAwYSwKLQkweDRhMDM1MDUzLCAweDAwMDAwMDAxLCAweDQxNzgwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDE4ZmEsIDB4NDE3ODAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE4OTIsCi0JMHgwNDAxZjAxZiwgMHg4MjA4MDU4MCwgMHgwMDAwNDAwMCwgMHgwNDAyMDAwNiwKLQkweDRhMDM1MDUzLCAweDAwMDAwMDAyLCAweDRhMDM1MDQ5LCAweDAwMDAwMDAxLAotCTB4MDQwMWYwMTcsIDB4ODIwODA1ODAsIDB4MDAwMDYwMDAsIDB4MDIwMjAwMDAsCi0JMHgwMDEwMjBiNiwgMHg1OWE4MDg1OCwgMHg4MjA0MGQ4MCwgMHgwMTM5MTA3NywKLQkweDA0MDIwMDA1LCAweDU5ZTAwODEzLCAweDhjMDQwZDAwLCAweDAyMDIwMDAwLAotCTB4MDAxMDIwYjYsIDB4NGEwMzUwNTMsIDB4MDAwMDAwMDMsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDEwMThmYSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDAyLCAweDAyMDFmODAwLCAweDAwMTAxODkyLCAweDU5OWMwMDE5LAotCTB4OGMwMDA1MjAsIDB4MDQwMDAwMGQsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDQsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDEwMTliMSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDEwLCAweDQyMDAwODAwLCAweDAwMDAwMGMwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE5YjEsIDB4NGEwMzUwMzIsIDB4MDAwMGFhYWEsCi0JMHg1OTljMTAxOCwgMHg4MjA4MTUwMCwgMHgwMDAwMDAzMCwgMHg1OWE4MDA2YywKLQkweDgwMDAwNTQwLCAweDA0MDAwMDBjLCAweDgyMDgwNTgwLCAweDAwMDAwMDAwLAotCTB4MDIwMDAwMDAsIDB4MDAxMDIwYjYsIDB4NTk5YzEwMTgsIDB4ODIwODE1MDAsCi0JMHhmZmZmZmZjZiwgMHg4MjA4MTU0MCwgMHgwMDAwMDAxMCwgMHg0ODBiMzgxOCwKLQkweDA0MDFmMDEwLCAweDgyMDgwZDgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDA3LAotCTB4ODIwODBkODAsIDB4MDAwMDAwMTAsIDB4MDQwMDAwMGEsIDB4ODIwODBkODAsCi0JMHgwMDAwMDAyMCwgMHgwNDAyMDAwMiwgMHg0ODA3NTAzMiwgMHgwMjAxZjgwMCwKLQkweDAwMTAzOGQzLCAweDA0MDAwMDA4LCAweDAyMDFmODAwLCAweDAwMTAxNjY4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDE2OTQsIDB4NTlhODAwMmEsIDB4ODAwNDA1NDAsCi0JMHg0ODAzNTAyYSwgMHg0OWYzYzg1NywgMHg0MjAwMTAwMCwgMHgwMDEwNGQzOSwKLQkweDAyMDFmODAwLCAweDAwMTA1Y2M5LCAweDQyMDAxMDAwLCAweDAwMTA0ZDJjLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkYmQsIDB4NGEwMzg4MDUsIDB4ZmZmZmZmZmYsCi0JMHg0YTAzYzAxNCwgMHgwMDQwMDA0MCwgMHg0YTAzYzAxMywgMHgwMDQwMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0NzE3LCAweDU5YTAwMDFkLCAweDg0MDAwNTQwLAotCTB4NDgwMzQwMWQsIDB4NDlmM2M4NTcsIDB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsCi0JMHgwMDAwMDAxOCwgMHgwMDAwMDAwYywgMHgwMDAwMDAxOCwgMHgwMDAwMDAyMCwKLQkweDgzNmMwNTgwLCAweDAwMDAwMDAwLCAweDA0MDIwMDA1LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDcsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAyMCwgMHg1OWEwMDQwNywgMHg1OWEwMTIwNywgMHg5MDA4MTFjMCwKLQkweDgwMDgxNTQwLCAweDU5YTAwNDA5LCAweDU5YTAxYTA5LCAweDkwMGMxOWMwLAotCTB4ODAwYzFkNDAsIDB4NDE5YzAwMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDM4NDEsCi0JMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMSwKLQkweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMTYsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg1OWE4MDAxMywgMHg4YzAwMDUwMCwgMHgwNDAwMDAxMSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAwLCAweDQyMDAwODAwLCAweDAwMDAwMDIwLAotCTB4NTlhMDA0MDcsIDB4NTlhMDEyMDcsIDB4OTAwODExYzAsIDB4ODAwODE1NDAsCi0JMHg1OWEwMDQwOSwgMHg1OWEwMWEwOSwgMHg5MDBjMTljMCwgMHg4MDBjMWQ0MCwKLQkweDQyMDAwMDAwLCAweDAwMTBiYzIwLCAweDAyMDFmMDAwLCAweDAwMTAzODQxLAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDEsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMjAsCi0JMHg0MjAwYTgwMCwgMHgwMDEwYmMyMCwgMHg0MjAwYTAwMCwgMHhmZmZmZmZmZiwKLQkweDQ0NTBhODAwLCAweDgwNTRhODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2ZkLAotCTB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsIDB4NDIwMjg4MDAsIDB4ZmZmZmZmZmYsCi0JMHg0MjAwMjAwMCwgMHhmZmZmZmZmZiwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwMSwKLQkweDQyMDAzODAwLCAweDAwMDAwMDAxLCAweDQyMDAxODAwLCAweDAwMTBiYzIwLAotCTB4NTlhODEwMTAsIDB4ODIwODE1MDAsIDB4MDAwMDAwZmYsIDB4NDAxODAwMDAsCi0JMHgwYzAxZjAwMSwgMHgwMDEwMzI3NSwgMHgwMDEwMzI3OCwgMHgwMDEwMzI3YywKLQkweDAwMTAzMjgwLCAweDgyMTAyNTAwLCAweGZmZmZmZjAwLCAweDA0MDFmMDE0LAotCTB4ODIxMDI1MDAsIDB4ZmZmZjAwZmYsIDB4ODQwODExYzAsIDB4MDQwMWYwMTAsCi0JMHg4MjEwMjUwMCwgMHhmZjAwZmZmZiwgMHg5MDA4MTFjMCwgMHgwNDAxZjAwYywKLQkweDgyMTAyNTAwLCAweDAwZmZmZmZmLCAweDljMDgwMWMwLCAweDgwMTAyNTQwLAotCTB4NDQxMDE4MDAsIDB4NDIwMDMwMDAsIDB4ZmZmZmZmZmYsIDB4NDIwMDIwMDAsCi0JMHhmZmZmZmZmZiwgMHg4MDBjMTgwMCwgMHgwNDAxZjAwMywgMHg0MDA4MDAwMCwKLQkweDgwMTAyNTQwLCAweDgxNDY4ODAwLCAweDgzNDQyYzgwLCAweDAwMDAwMDdmLAotCTB4MDQwMjEwMTQsIDB4NGMwODAwMDAsIDB4NGMwYzAwMDAsIDB4NGMxODAwMDAsCi0JMHg0YzFjMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHg1YzAwMzgwMCwKLQkweDVjMDAzMDAwLCAweDVjMDAxODAwLCAweDVjMDAxMDAwLCAweDA0MDIwN2YyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NDIsIDB4MDQwMjA3ZWYsIDB4ODAxODMwMDAsCi0JMHg4MDFjMzgwMCwgMHg1OTM0MTIwMiwgMHg0MDE4MDAwMCwgMHgwYzAxZjdjZSwKLQkweDgyMTAwNTgwLCAweGZmZmZmZmZmLCAweDA0MDAwMDAyLCAweDQ0MTAxODAwLAotCTB4NDIwMDE4MDAsIDB4MDAxMGJjMjAsIDB4NTAwYzAwMDAsIDB4ODIwMDA1MDAsCi0JMHhmZmZmZmYwMCwgMHg4MDFjMDU0MCwgMHg0NDAwMTgwMCwgMHg1YzAyNjgwMCwKLQkweDVjMDI4ODAwLCAweDQyMDAwODAwLCAweDAwMDAwMDIwLCAweDU5YTAwNDA3LAotCTB4NTlhMDEyMDcsIDB4OTAwODExYzAsIDB4ODAwODE1NDAsIDB4NTlhMDA0MDksCi0JMHg1OWEwMWEwOSwgMHg5MDBjMTljMCwgMHg4MDBjMWQ0MCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiYzIwLCAweDAyMDFmMDAwLCAweDAwMTAzODQxLCAweDU5YTI4YzA2LAotCTB4NTlhMDAyMGIsIDB4OGMwMDA1MDAsIDB4MDQwMDAwMGUsIDB4NTlhMDEyMDgsCi0JMHg1OWEwMDQwOCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg5MDAwMDFjMCwKLQkweDgwMDgxNTQwLCAweDQxNzg0MDAwLCAweDAyMDFmODAwLCAweDAwMTA0NzY4LAotCTB4MDQwMDAwMDgsIDB4NDgwMzQ0MDYsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwMjAyMDAwMCwgMHgwMDEwMjBiNiwKLQkweDAyMDFmODAwLCAweDAwMTAzODFhLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LAotCTB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhMDAyMGIsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwNDg0MiwKLQkweDAyMDIwMDAwLCAweDAwMTAzOGRkLCAweDU5YTAwMjBiLCAweDhjMDAwNTAyLAotCTB4MDQwMDAwMTksIDB4ODM0NDA0ODAsIDB4MDAwMDA3ZjAsIDB4MDQwMjEwMTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDg0YiwgMHgwNDAyMDAxMywgMHg0OTdhNWEwNCwKLQkweDRhMDI1YzA0LCAweDAwMDA4MDAwLCAweDAyMDFmODAwLCAweDAwMTA4ZWEzLAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDMsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg0YTAxZDgwOSwgMHgwMDEwMzJmOCwgMHgxYzAxZjAwMCwKLQkweDU5YTI4YzA2LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDAyMDIwMDAwLAotCTB4MDAxMDIwYjYsIDB4NGM1ODAwMDAsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwYSwgMHg0MTM0YTAwMCwgMHg4MzJlNWMwMCwKLQkweDAwMDAwMDAyLCAweDQxMmNhODAwLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4ODMyY2FjMDAsIDB4MDAwMDAwMDYsIDB4NDA1NGEwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwYTk0ZiwgMHg1YzAwYTgwMCwKLQkweDVjMDBhMDAwLCAweDVjMDBiMDAwLCAweDU5MmMwODAyLCAweDgyMDQwNTAwLAotCTB4MDBmZjAwZmYsIDB4OTAwMDAxYzAsIDB4ODIwNDE1MDAsIDB4ZmYwMGZmMDAsCi0JMHg4MDA4MDU0MCwgMHg0ODAyNTgwMiwgMHg1OTJjMDgwMSwgMHg4MjA0MDUwMCwKLQkweDAwZmYwMGZmLCAweDkwMDAwMWMwLCAweDgyMDQxNTAwLCAweGZmMDBmZjAwLAotCTB4ODAwODA1NDAsIDB4NDgwMjU4MDEsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMGEsCi0JMHg1OWEwMDQwNywgMHg1OWEwMTIwNywgMHg5MDA4MTFjMCwgMHg4MDA4MTU0MCwKLQkweDU5YTAwNDA5LCAweDU5YTAxYTA5LCAweDkwMGMxOWMwLCAweDgwMGMxZDQwLAotCTB4NDEyYzAwMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDM4NDEsIDB4NDk2ZmM4NTcsCi0JMHg0OTZmNDQwNiwgMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwgMHg1OWEyOGMwNiwKLQkweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDAyMDIwMDAwLCAweDAwMTAyMGI2LAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwNywgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg4MzM0MGMwMCwKLQkweDAwMDAwMDA2LCAweDU5YTAwMjBiLCAweDhjMDAwNTAwLCAweDA0MDAwMDAzLAotCTB4ODMzNDBjMDAsIDB4MDAwMDAwMDgsIDB4NTgwNDAwMDEsIDB4NDgwMzQ0MDksCi0JMHg5MDAwMDFjMCwgMHg0ODAzNDIwOSwgMHg1MDA0MDAwMCwgMHg0ODAzNDQwNywKLQkweDkwMDAwMWMwLCAweDQ4MDM0MjA3LCAweDU5MzQwMjAwLCAweDQ4MDM0NDA2LAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDU5YTAyMjBiLCAweDhjMTAyNTAwLCAweDA0MDIwMDJlLCAweDhjMTAyNTA2LAotCTB4MDQwMjAwMDYsIDB4NTlhMDMyMDgsIDB4ODIxODA0ODAsIDB4MDAwMDAwMDMsCi0JMHgwMjAyMTAwMCwgMHgwMDEwMjBiNiwgMHg1OWEyOGMwNiwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMjY3LCAweDAyMDIwMDAwLCAweDAwMTAyMGI2LCAweDAyMDFmODAwLAotCTB4MDAxMDQ4MzYsIDB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDksCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwKLQkweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAyLCAweDAyMDFmMDAwLAotCTB4MDAxMDIwYjIsIDB4NTlhMDIyMGIsIDB4OGMxMDI1MDYsIDB4MDQwMDAwMDQsCi0JMHg1OTM0MzAwMiwgMHg4MjE4MzUwMCwgMHgwMGZmZmZmZiwgMHg0OTdhNWEwNCwKLQkweDRhMDI1YzA0LCAweDAwMDA4MDAwLCAweDAyMDFmODAwLCAweDAwMTA4ZTY1LAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDMsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg0YTAxZDgwOSwgMHgwMDEwMzNkZSwgMHgxYzAxZjAwMCwKLQkweDU5YTI4YzA2LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDAyMDIwMDAwLAotCTB4MDAxMDIwYjYsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4MzYsIDB4MDQwMDAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwOSwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDAyMDFmODAwLCAweDAwMTAzODFhLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LAotCTB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NDk3YTVhMDQsCi0JMHg0YTAyNWMwNCwgMHgwMDAwODAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMzgxYSwKLQkweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAyLCAweDAyMDFmMDAwLAotCTB4MDAxMDIwYjIsIDB4NTkyZTU4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDhlN2EsCi0JMHgwNDAyMDAwNSwgMHg0YTAzNDQwNiwgMHgwMDAwMDAwMywgMHgwMjAxZjAwMCwKLQkweDAwMTAyMGIyLCAweDRhMDFkODA5LCAweDAwMTAzM2IwLCAweDFjMDFmMDAwLAotCTB4NTkyYzI4MDUsIDB4ODIxNDBkODAsIDB4MDEwMDAwMDAsIDB4MDQwMjAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwNCwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDQyMDAwODAwLCAweDAwMDAwMDA4LCAweDU5YTAwMjA3LCAweDU5YTAxNDA3LAotCTB4OTAwMDAxYzAsIDB4ODAwODE1NDAsIDB4NTlhMDAyMDksIDB4NTlhMDFjMDksCi0JMHg5MDAwMDFjMCwgMHg4MDBjMWQ0MCwgMHg4MzJjMDQwMCwgMHgwMDAwMDAwNSwKLQkweDAyMDFmODAwLCAweDAwMTAzODQxLCAweDhjMTQyZDAwLCAweDA0MDAwMDAzLAotCTB4NGEwMWQ4MDksIDB4MDAxMDMzY2IsIDB4MWMwMWYwMDAsIDB4NDAzMWQ4MDAsCi0JMHg1OGVmNDAwYiwgMHg1OGVlNTgwZSwgMHg1OGVjMDAwMiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMjAwLCAweDAyMDAwMDAwLCAweDAwMTAyMGFhLCAweDgxMmU1OWMwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDgsCi0JMHg4MzJjMDQwMCwgMHgwMDAwMDAwNSwgMHg1OGVjMTAwNywgMHg1OGVjMTgwOCwKLQkweDAyMDFmMDAwLCAweDAwMTAzODQxLCAweDU5MmMwMDA1LCAweDgyMDAwNTgwLAotCTB4MDEwMDAwMDAsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWEwMDIwNywgMHg1OWEwMTQwNywKLQkweDkwMDAwMWMwLCAweDgwMDgxNTQwLCAweDU5YTAwMjA5LCAweDU5YTAxYzA5LAotCTB4OTAwMDAxYzAsIDB4ODAwYzFkNDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDYsCi0JMHg4MzJjMDQwMCwgMHgwMDAwMDAwNiwgMHgwMjAxZjAwMCwgMHgwMDEwMzg0MSwKLQkweDU5YTAwYTBhLCAweDgwMDQwOWMwLCAweDAyMDAwMDAwLCAweDAwMTAyMGI2LAotCTB4ODIwNDA0ODAsIDB4MDAwMDAwZTgsIDB4MDQwMDEwMDMsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDBlNywgMHg1OWEwMDIwNywgMHg1OWEwMTQwNywgMHg5MDAwMDFjMCwKLQkweDgwMDgxNTQwLCAweDU5YTAwMjA5LCAweDU5YTAxYzA5LCAweDkwMDAwMWMwLAotCTB4ODAwYzFkNDAsIDB4ODM4ODA0MDAsIDB4MDAwMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzg0MSwgMHg0YTAxZDgwOSwgMHgwMDEwMzQwYywgMHgxYzAxZjAwMCwKLQkweDQwMzFkODAwLCAweDU4ZWY0MDBiLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLAotCTB4MDAwMDAyMDAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsIDB4NTlhMDAyMGIsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAwOCwgMHg4Mzg4MDQwMCwgMHgwMDAwMDAwMCwKLQkweDQ4MDNjODQwLCAweDRhMDNjODQyLCAweDAwMDAwMDA2LCAweDA0MDExMDAwLAotCTB4NDk3Yjg4ODUsIDB4NGEwMzQyMDcsIDB4MDAwMDAwZTcsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwgMHg0YTAzNDQwNiwKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLCAweDA0MDFmYmYzLAotCTB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg0OTdhNWEwNCwgMHg0YTAyNWMwNCwgMHgwMDAwODAwMCwKLQkweDU5YTAwNDA2LCAweDgwMDAwMWMwLCAweDAyMDAwMDAwLCAweDAwMTAyMGI2LAotCTB4ODIwMDE1ODAsIDB4MDAwMDAwZmYsIDB4MDQwMDAwMDUsIDB4ODIwMDE0ODAsCi0JMHgwMDAwMDAwNCwgMHgwMjAyMTAwMCwgMHgwMDEwMjBiNiwgMHg0MDAwMTAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxZDZhLCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LAotCTB4MDAwMDAwMDMsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NGEwMWQ4MDksCi0JMHgwMDEwMzQ0NiwgMHgxYzAxZjAwMCwgMHg1OTJjMDAwNSwgMHg4MjAwMDU4MCwKLQkweDAxMDAwMDAwLCAweDAyMDIwMDAwLCAweDAwMTAyMDY2LCAweDRhMDM0NDA2LAotCTB4MDAwMDAwMDQsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhMDE0MDYsCi0JMHg4YzA4MTUwOCwgMHgwNDAyMDAwNywgMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4NTlhMDFjMDcsIDB4ODIwYzA0ODAsIDB4MDAwMDEwMDAsIDB4MDIwMjEwMDAsCi0JMHgwMDEwMjBiNiwgMHg0OTdiMjgwNCwgMHg0OTdiMjgwNSwgMHg0OTdiMjgxYywKLQkweDQ5N2IyODFkLCAweDQ5N2IyODFmLCAweDQ5N2IyODIwLCAweDQ5N2IyODIyLAotCTB4NDk3YjI4MjMsIDB4ODAwMDA1ODAsIDB4MDIwMWY4MDAsIDB4MDAxMDE2NjgsCi0JMHg1OWE4MDgwNSwgMHg4YzA4MTUwMCwgMHgwNDAwMDAwNCwgMHg4MjA0MGQ0MCwKLQkweDAwMDAwMDExLCAweDA0MDFmMDA0LCAweDhjMDgxNTA2LCAweDA0MDAwMDAyLAotCTB4ODQwNDBkNDIsIDB4ODQwNDBkMGEsIDB4NDgwNzUwMDUsIDB4NDIwMmQ4MDAsCi0JMHgwMDAwMDAwMSwgMHg4MjA4MTUwMCwgMHgwMDAwMDBlMCwgMHg4MDA4MDEwYSwKLQkweDBjMDIwMDM2LCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLCAweDA0MDIwMDA5LAotCTB4NGEwMzUwMzMsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDRkNzYsCi0JMHgwNDAxZjAxZiwgMHg0YTAzNTAzMywgMHgwMDAwMDAwMCwgMHgwNDAxZjdmYiwKLQkweDQ5N2I1MDMyLCAweDAyMDFmODAwLCAweDAwMTAzZjVjLCAweDAyMDFmODAwLAotCTB4MDAxMDY5OGMsIDB4MDIwMWY4MDAsIDB4MDAxMDZjMzIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4MiwgMHg1OWEwMGEwNywgMHg0ODA3ODhhNywgMHg1OWM0MDBhMywKLQkweDgyMDAwNTAwLCAweGZlZmZmZmZmLCAweDgyMDAwNTQwLCAweDgwMDE4MDAwLAotCTB4NDAwMDA4MDAsIDB4ODQwNDBkMjAsIDB4NDgwMzg4YTMsIDB4NDgwNzg4YTMsCi0JMHg0OTdiNTA0ZSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAyZCwgMHg0MjAwMTAwMCwKLQkweDAwMTAzZmU0LCAweDAyMDFmODAwLCAweDAwMTA1Y2EyLCAweDU5YTAwNDA3LAotCTB4ODAwMDAwYzIsIDB4ODAwMDA4YzQsIDB4ODAwNWQ0MDAsIDB4NDIwMDAwMDAsCi0JMHgwMDAwZmZmZiwgMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAwMDAwMywKLQkweDU5YTAwMjA3LCAweDgwMDAwMTEwLCAweDAyMDFmODAwLCAweDAwMTAzOTE1LAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsIDB4MDAxMDM0NzksIDB4MDAxMDM0N2MsCi0JMHgwMDEwMzQ4NCwgMHgwMDEwMjBiNiwgMHgwMDEwMzQ4MSwgMHgwMDEwMjBiNiwKLQkweDAwMTAyMGI2LCAweDAwMTAyMGI2LCAweDgzNmMwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDcsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjBiMiwgMHg1OWEwM2MwNiwgMHg1OWEwMDQwNywgMHg1OWEwNGEwNywKLQkweDkwMjQ0OWMwLCAweDgwMjQ0ZDQwLCAweDU5YTAwNDA5LCAweDU5YTA1MjA5LAotCTB4OTAyODUxYzAsIDB4ODAyODU1NDAsIDB4MDQwMWZiNTQsIDB4MDQwMjAwMDUsCi0JMHg0YTAzNDQwNiwgMHgwMDAwMDAwMiwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwKLQkweDQxN2E4ODAwLCAweDQxNzgzMDAwLCAweDQ5N2I0MDAxLCAweDQ5N2I0MDA0LAotCTB4ODMyYzQ0MDAsIDB4MDAwMDAwMDUsIDB4NDgyMzQwMDIsIDB4OGMxYzNkMDQsCi0JMHgwNDAyMDA3OCwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAyYSwKLQkweDAyMDFmODAwLCAweDAwMTA0ODM2LCAweDA0MDAwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDQ3MzIsIDB4MDQwMjAwMjQsIDB4OGMxYzNkMDAsIDB4MDQwMDAwMDgsCi0JMHg1OTM0MDAwOSwgMHg0NDAwNDAwMCwgMHg1OTM0MDAwOCwgMHg4MDIwNDAwMCwKLQkweDQ0MDA0MDAwLCAweDgwMjA0MDAwLCAweDA0MDFmMDA3LCAweDU5MzQwMDA3LAotCTB4NDQwMDQwMDAsIDB4NTkzNDAwMDYsIDB4ODAyMDQwMDAsIDB4NDQwMDQwMDAsCi0JMHg4MDIwNDAwMCwgMHg4MzQ0MDU4MCwgMHgwMDAwMDdmZSwgMHgwNDAwMDAwZCwKLQkweDgzNDQwNTgwLCAweDAwMDAwN2ZjLCAweDA0MDAwMDBhLCAweDAyMDFmODAwLAotCTB4MDAxMDQ4NDIsIDB4MDQwMDAwMDMsIDB4ODU0NjhkNWUsIDB4MDQwMWYwMDUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDY4NiwgMHgwNDAyMDAwMiwgMHg4NTQ2OGQ1ZSwKLQkweDQ1NDQ0MDAwLCAweDg1NDY4ZDFlLCAweDgwMjA0MDAwLCAweDgyMTgzNDAwLAotCTB4MDAwMDAwMDMsIDB4ODE0Njg4MDAsIDB4ODM0NDA0ODAsIDB4MDAwMDA3ZjAsCi0JMHgwNDAwMTAwZSwgMHg4YzFjM2QwNiwgMHgwNDAwMDAxMCwgMHg4MzQ0MDU4MCwKLQkweDAwMDAwN2YwLCAweDA0MDIwMDA0LCAweDQyMDI4ODAwLCAweDAwMDAwN2ZlLAotCTB4MDQwMWYwMDYsIDB4ODM0NDA1ODAsIDB4MDAwMDA3ZmYsIDB4MDQwMjAwMDcsCi0JMHg0MjAyODgwMCwgMHgwMDAwMDdmYywgMHg4MjE4MDU4MCwgMHgwMDAwMDAwZiwKLQkweDA0MDAwMDBiLCAweDA0MDFmN2MwLCAweDgwMTgzMWMwLCAweDA0MDIwMDA2LAotCTB4NTlhMDA4MDEsIDB4ODAwNDA4YzQsIDB4NDgwNzQ0MDYsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHg0YTAzNDAwNCwgMHgwMDAwMDAwMSwgMHg0OTQ3NDAwMCwKLQkweDU5YTAwMDAxLCAweDgwMTgwNDAwLCAweDQ4MDM0MDAxLCAweDQ4MWY0MDAzLAotCTB4NGEwMWQ4MDEsIDB4MDAwMDAwMDAsIDB4NDgxOWQ4MDQsIDB4NTlhMDAwMDIsCi0JMHg0ODAxZDgwMywgMHg0ODI1ZDgwNywgMHg0ODI5ZDgwOCwgMHg0MDAwYTgwMCwKLQkweDQwMDBhMDAwLCAweDQwMThiMDAwLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4NDBlYzEwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4YTEsIDB4NGEwMWQ4MDksCi0JMHgwMDEwMzUzNiwgMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwKLQkweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLCAweDAyMDAwMDAwLAotCTB4MDAxMDIwYWEsIDB4NTlhMDAwMDQsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDgsCi0JMHg1OWEyODgwMCwgMHg1OWEwNDAwMiwgMHg1OWEwMzgwMywgMHg0MTc4MzAwMCwKLQkweDU4ZWM0ODA3LCAweDU4ZWM1MDA4LCAweDA0MDFmNzhmLCAweDU5YTAwODAxLAotCTB4ODAwNDA4YzQsIDB4NDgwNzQ0MDYsIDB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAyZiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODM2LCAweDA0MDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTA0NzMyLAotCTB4MDQwMjAwMjksIDB4ODM0NDA1ODAsIDB4MDAwMDA3ZmUsIDB4MDQwMDAwMTEsCi0JMHg4MzQ0MDU4MCwgMHgwMDAwMDdmYywgMHgwNDAwMDAwZSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODQyLCAweDA0MDAwMDA1LCAweDU5MzQwNDAzLCAweDg0MDAwNTVlLAotCTB4NDgwMjZjMDMsIDB4MDQwMWYwMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDQ2ODYsCi0JMHgwNDAyMDAwNCwgMHg1OTM0MDQwMywgMHg4NDAwMDU1ZSwgMHg0ODAyNmMwMywKLQkweDQxMzRhMDAwLCAweDQwMjBhODAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDA2LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NTkzNDAwMDcsIDB4NDQwMGE4MDAsCi0JMHg1OTM0MDAwNiwgMHg0ODAwYTgwMSwgMHg1OTM0MDAwOSwgMHg0ODAwYTgwMiwKLQkweDU5MzQwMDA4LCAweDQ4MDBhODAzLCAweDU5MzQwNDAzLCAweDg0MDAwNTFlLAotCTB4NDgwMjZjMDMsIDB4ODIyMDQ0MDAsIDB4MDAwMDAwMGEsIDB4ODIxODM0MDAsCi0JMHgwMDAwMDAwYSwgMHg4MTQ2ODgwMCwgMHg4MzQ0MDQ4MCwgMHgwMDAwMDdmMCwKLQkweDA0MDAxMDBlLCAweDhjMWMzZDA2LCAweDA0MDAwMDEwLCAweDgzNDQwNTgwLAotCTB4MDAwMDA3ZjAsIDB4MDQwMjAwMDQsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZmUsCi0JMHgwNDAxZjAwNiwgMHg4MzQ0MDU4MCwgMHgwMDAwMDdmZiwgMHgwNDAyMDAwNywKLQkweDQyMDI4ODAwLCAweDAwMDAwN2ZjLCAweDgyMTgwNTgwLCAweDAwMDAwMDBhLAotCTB4MDQwMDAwMGIsIDB4MDQwMWY3YmIsIDB4ODAxODMxYzAsIDB4MDQwMjAwMDYsCi0JMHg1OWEwMDgwMSwgMHg4MDA0MDhjNCwgMHg0ODA3NDQwNiwgMHgwMjAxZjAwMCwKLQkweDAwMTAyMDY2LCAweDRhMDM0MDA0LCAweDAwMDAwMDAxLCAweDQ5NDc0MDAwLAotCTB4NTlhMDAwMDEsIDB4ODAxODA0MDAsIDB4NDgwMzQwMDEsIDB4NDgxZjQwMDMsCi0JMHg0YTAxZDgwMSwgMHgwMDAwMDAwMCwgMHg0ODE5ZDgwNCwgMHg1OWEwMDAwMiwKLQkweDQ4MDFkODAzLCAweDQ4MjVkODA3LCAweDQ4MjlkODA4LCAweDQwZWMxMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4YTEsIDB4NGEwMWQ4MDksIDB4MDAxMDM1YWQsCi0JMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwgMHg1OGVjMDAwMiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMjAwLCAweDAyMDAwMDAwLCAweDAwMTAyMGFhLAotCTB4NTlhMDAwMDQsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDgsIDB4NTlhMjg4MDAsCi0JMHg1OWEwNDAwMiwgMHg1OWEwMzgwMywgMHg0MTc4MzAwMCwgMHg1OGVjNDgwNywKLQkweDU4ZWM1MDA4LCAweDA0MDFmNzhmLCAweDU5YTAwODAxLCAweDgwMDQwOGM0LAotCTB4NDgwNzQ0MDYsIDB4MDIwMWYwMDAsIDB4MDAxMDIwNjYsIDB4NDIwMDI4MDAsCi0JMHgwMDAwMDA3ZSwgMHg1OWEwMGMwNiwgMHg1OWEwMTIwNywgMHg1OWEwMWMwNywKLQkweDU5YTAyMjA5LCAweDgyMDQwNTAwLCAweDAwMDBmZjAwLCAweDg0MDAwMWMwLAotCTB4ODIwMDM0ODAsIDB4MDAwMDAwMjAsIDB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsCi0JMHg4MDE0MDQ4MCwgMHgwMjAwMTAwMCwgMHgwMDEwMjBiNiwgMHg4MjA0MDUwMCwKLQkweDAwMDAwMGZmLCAweDgyMDAzNDgwLCAweDAwMDAwMDIwLCAweDAyMDAxMDAwLAotCTB4MDAxMDIwYjYsIDB4ODAxNDA0ODAsIDB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsCi0JMHg4MjA4MDUwMCwgMHgwMDAwZmYwMCwgMHg4NDAwMDFjMCwgMHg4MjAwMzQ4MCwKLQkweDAwMDAwMDIwLCAweDAyMDAxMDAwLCAweDAwMTAyMGI2LCAweDgwMTQwNDgwLAotCTB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsIDB4ODIwODA1MDAsIDB4MDAwMDAwZmYsCi0JMHg4MjAwMzQ4MCwgMHgwMDAwMDAyMCwgMHgwMjAwMTAwMCwgMHgwMDEwMjBiNiwKLQkweDgwMTQwNDgwLCAweDAyMDAxMDAwLCAweDAwMTAyMGI2LCAweDgyMGMwNTAwLAotCTB4MDAwMGZmMDAsIDB4ODQwMDAxYzAsIDB4ODIwMDM0ODAsIDB4MDAwMDAwMjAsCi0JMHgwMjAwMTAwMCwgMHgwMDEwMjBiNiwgMHg4MDE0MDQ4MCwgMHgwMjAwMTAwMCwKLQkweDAwMTAyMGI2LCAweDgyMGMwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAzNDgwLAotCTB4MDAwMDAwMjAsIDB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsIDB4ODAxNDA0ODAsCi0JMHgwMjAwMTAwMCwgMHgwMDEwMjBiNiwgMHg4MjEwMDUwMCwgMHgwMDAwZmYwMCwKLQkweDg0MDAwMWMwLCAweDgyMDAzNDgwLCAweDAwMDAwMDIwLCAweDAyMDAxMDAwLAotCTB4MDAxMDIwYjYsIDB4ODAxNDA0ODAsIDB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsCi0JMHg4MjEwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMzQ4MCwgMHgwMDAwMDAyMCwKLQkweDAyMDAxMDAwLCAweDAwMTAyMGI2LCAweDgwMTQwNDgwLCAweDAyMDAxMDAwLAotCTB4MDAxMDIwYjYsIDB4OTAwNDAxYzAsIDB4ODAwODBkNDAsIDB4OTAwYzAxYzAsCi0JMHg4MDEwMWQ0MCwgMHg4M2E4MzQwMCwgMHgwMDAwMDAzYSwgMHg0NDA0MzAwMCwKLQkweDgwMTgzMDAwLCAweDQ0MGMzMDAwLCAweDAyMDFmMDAwLCAweDAwMTAyMDY2LAotCTB4MDQwMWY5ZmEsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwYywKLQkweDA0MDFmODUzLCAweDRhMDFkODA5LCAweDAwMTAzNjJjLCAweDFjMDFmMDAwLAotCTB4NDAzMWQ4MDAsIDB4NThlZTU4MGQsIDB4NThlZjQwMGIsIDB4NThlYzAwMDIsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwKLQkweDgzMmNhNDAwLCAweDAwMDAwMDA0LCAweDQyMDBiMDAwLCAweDAwMDAwMDBjLAotCTB4NDBjOGE4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NThjODAyMDAsCi0JMHg4MDAwMDU0MCwgMHgwNDAwMDAzNCwgMHg1OGM4MDQwMCwgMHg4MjAwMDUwMCwKLQkweGZmZmZmZmZiLCAweDA0MDIwMDMwLCAweDU4YzgwNDAxLCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMmQsIDB4ODIwMDA0ODAsIDB4MDAwMGZmMDEsIDB4MDQwMjEwMmEsCi0JMHg1OGM4MDIwMiwgMHg4MjAwMDQ4MCwgMHgwMDAwMDA1YywgMHgwNDAwMTAyNiwKLQkweDAyMDFmODAwLCAweDAwMTA2MGRiLCAweDU4YzgwYzA4LCAweDU4YzgwMjA0LAotCTB4ODAwNDA0ODAsIDB4MDQwMDEwMjAsIDB4NThjODAyMDQsIDB4ODIwMDA0ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAyMTAxYywgMHg1OGM4MDIwNSwgMHg1OGM4MGMwOCwKLQkweDgwMDQwOTAyLCAweDgwMDQwNDgwLCAweDA0MDAxMDE3LCAweDU4YzgwYzA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDYwMmEsIDB4MDQwMDAwMWIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWVmMiwgMHgwNDAyMDAxMiwgMHg0OTc5OTQwYiwgMHg1OWM0MDhhMywKLQkweDgyMDQwZDQwLCAweDAwMDAwMDAyLCAweDQ4MDc4OGEzLCAweDRhMDM4ODMwLAotCTB4MDAwMDAwMDEsIDB4NGEwMzg4MzIsIDB4MDFmZmZmZmYsIDB4NThjODAyMDIsCi0JMHg0ODAzMDgwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNWVkNCwgMHgwMjAxZjAwMCwKLQkweDAwMTAyMDY2LCAweDAyMDFmMDAwLCAweDAwMTAyMGI2LCAweDAyMDFmODAwLAotCTB4MDAxMDYxMmQsIDB4MDIwMWY4MDAsIDB4MDAxMDYxM2EsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjAxZCwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg0YzAwMDAwMCwKLQkweDU5YTAxMjA3LCAweDU5YTAwNDA3LCAweDkwMDgxMWMwLCAweDgwMDgxNTQwLAotCTB4NTlhMDFhMDksIDB4NTlhMDA0MDksIDB4OTAwYzE5YzAsIDB4ODAwYzFkNDAsCi0JMHg1YzAwMDAwMCwgMHgwNDAxZjFiOSwgMHg1OTg0MDAwMCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAwLCAweDA0MDAwMDUwLCAweDU5ODQwMDAyLCAweDhjMDAwNTA0LAotCTB4MDQwMDAwNGQsIDB4ODQwMDA1NDYsIDB4NDgwMzA4MDIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjAxZCwgMHg1OWM0MDhhMywgMHg4MjA0MGQwMCwgMHhmZmZmZmZmZCwKLQkweDQ4MDc4OGEzLCAweDRjNWMwMDAwLCAweDQyMDBiODAwLCAweDAwMTBhYTAwLAotCTB4NTA1ZTY4MDAsIDB4ODEzNjY5YzAsIDB4MDQwMDAwMDgsIDB4NTkzNjYwMGUsCi0JMHg4MTMyNjFjMCwgMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwNjAwZSwKLQkweDAyMDAwODAwLCAweDAwMTA2MWU1LCAweDgwNWNiODAwLCAweDgyNWMwNTgwLAotCTB4MDAxMGIxZjAsIDB4MDQwMjA3ZjMsIDB4NTk4NjYwMDMsIDB4ODEzMjYxYzAsCi0JMHgwNDAwMDAwYiwgMHg1OTMwMDQwNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwOSwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU5MzBiODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDVmZmEsIDB4NDA1ZTYwMDAsIDB4MDQwMWY3ZjUsIDB4NDk3YjA4MDMsCi0JMHg0MjAwYjgwMCwgMHgwMDEwYjMxNywgMHg1MDVlNjAwMCwgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDExLCAweDU5MzAwNDA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDA5LAotCTB4MDQwMjAwMGQsIDB4NTkzMDAyMDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsCi0JMHgwNDAyMDAwOSwgMHg1OTMyNjgwOSwgMHg4MTM2NjljMCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDAyMDFmODAwLCAweDAwMTAwZWU0LCAweDAyMDFmODAwLAotCTB4MDAxMDVmZmEsIDB4NDU3OGI4MDAsIDB4ODA1Y2I4MDAsIDB4ODI1YzA1ODAsCi0JMHgwMDEwYjMxZiwgMHgwNDAyMDdlOSwgMHg0MjAwMDgwMCwgMHgwMDEwYjMxNSwKLQkweDQ5NzgwODAxLCAweDQ5NzgwODAwLCAweDAyMDFmODAwLCAweDAwMTA2MTJkLAotCTB4MDIwMWY4MDAsIDB4MDAxMDYxM2EsIDB4NWMwMGI4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWVlZCwgMHgwMjAxZjAwMCwgMHgwMDEwMjA2NiwgMHg4MzZjMDU4MCwKLQkweDAwMDAwMDAzLCAweDA0MDAwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDA3LAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTlhMDA0MDcsIDB4NTlhMDIyMDcsCi0JMHg5MDEwMjFjMCwgMHg4MDEwMjU0MCwgMHg1OWEwMDQwOSwgMHg1OWEwMmEwOSwKLQkweDkwMTQyOWMwLCAweDgwMTQyZDQwLCAweDA0MDFmOTMwLCAweDA0MDIwMDA1LAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsCi0JMHg0MTdhODgwMCwgMHg0MTc4MTgwMCwgMHg0OTdiNDAwMSwgMHg0OTdiNDAwMywKLQkweDgzMmMzNDAwLCAweDAwMDAwMDA0LCAweDQ4MWI0MDAyLCAweDQxNDQwMDAwLAotCTB4ODFhYzA0MDAsIDB4NTAwMjY4MDAsIDB4ODEzNjY5YzAsIDB4MDQwMDAwMGIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDAwOCwgMHg1OTM0MDAwMiwKLQkweDQ4MDAzMDAwLCAweDQ5NDQzMDAxLCAweDgyMTgzNDAwLCAweDAwMDAwMDAyLAotCTB4ODIwYzFjMDAsIDB4MDAwMDAwMDIsIDB4ODE0Njg4MDAsIDB4ODM0NDA0ODAsCi0JMHgwMDAwMDgwMCwgMHgwNDAwMDAwNSwgMHg4MjBjMDQ4MCwgMHgwMDAwMDAxMCwKLQkweDA0MDIxMDBiLCAweDA0MDFmN2VhLCAweDgwMGMxOWMwLCAweDA0MDIwMDA2LAotCTB4NTlhMDA4MDEsIDB4ODAwNDA5MDIsIDB4NDgwNzQ0MDYsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMjA2NiwgMHg0YTAzNDAwMywgMHgwMDAwMDAwMSwgMHg0OTQ3NDAwMCwKLQkweDU5YTAwMDAxLCAweDgwMGMwNDAwLCAweDQ4MDM0MDAxLCAweDQwZWMxMDAwLAotCTB4NGEwMDEwMDEsIDB4MDAwMDAwMDAsIDB4NDgwYzEwMDQsIDB4NTlhMDAwMDIsCi0JMHg0ODAwMTAwMywgMHg0ODEwMTAwNywgMHg0ODE0MTAwOCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwOGExLCAweDRhMDFkODA5LCAweDAwMTAzNzI4LCAweDFjMDFmMDAwLAotCTB4NDAzMWQ4MDAsIDB4NThlZjQwMGIsIDB4NThlYzAwMDIsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwgMHg1OWEwMDAwMywKLQkweDgwMDAwNTQwLCAweDA0MDIwMDA4LCAweDU5YTI4ODAwLCAweDU5YTAzMDAyLAotCTB4NDE3ODE4MDAsIDB4NDBlYzEwMDAsIDB4NTgwODIwMDcsIDB4NTgwODI4MDgsCi0JMHgwNDAxZjdiZiwgMHg1OWEwMDgwMSwgMHg4MDA0MDkwMiwgMHg0ODA3NDQwNiwKLQkweDAyMDFmMDAwLCAweDAwMTAyMDY2LCAweDgwMDQwOWMwLCAweDA0MDAwMDA1LAotCTB4NGEwMzQ0MDYsIDB4MDAwMDAwMDEsIDB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsCi0JMHg1OWE4MDAyNiwgMHg4YzAwMDUwYSwgMHgwNDAyMDAwNywgMHg4YzAwMDUwNiwKLQkweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDE2LCAweDAyMDFmMDAwLAotCTB4MDAxMDIwYjIsIDB4MDQwMWY4Y2QsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWEwMGMwNiwKLQkweDgwMDQwOTAyLCAweDU5YTAwNDA3LCAweDU5YTAxMjA3LCAweDkwMDgxMWMwLAotCTB4ODAwODE1NDAsIDB4NTlhMDA0MDksIDB4NTlhMDFhMDksIDB4OTAwYzE5YzAsCi0JMHg4MDBjMWQ0MCwgMHg4MzJjMDQwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjhkZiwKLQkweDRhMDFkODA5LCAweDAwMTAzNzYzLCAweDFjMDFmMDAwLCAweDQwMzFkODAwLAotCTB4NThlZjQwMGIsIDB4NThlZTU4MGQsIDB4NThlYzAwMDIsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDIwMCwgMHgwMjAwMDAwMCwgMHgwMDEwMjBhYSwgMHg1OTJjMDAwOSwKLQkweDAyMDFmODAwLCAweDAwMTA1OWI5LCAweDAyMDAwODAwLCAweDAwMTA0M2ZjLAotCTB4MDIwMjAwMDAsIDB4MDAxMDIwYjYsIDB4NDk0NzQwMDEsIDB4NDgxYTY4MDIsCi0JMHg1OTJjMDAwYSwgMHg4MjAwMWQ4MCwgMHg3MDAwMDAwMCwgMHgwNDAyMDAwNywKLQkweDA0MDFmOGEyLCAweDA0MDIwMDExLCAweDRhMDM0NDA2LCAweDAwMDAwMDAyLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4ODIwMDFkODAsIDB4NzIwMDAwMDAsCi0JMHgwMjAyMDAwMCwgMHgwMDEwMjBiNiwgMHgwNDAxZjg5OCwgMHgwNDAyMDg5NywKLQkweDA0MDIwODk2LCAweDA0MDIwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDAyLAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NThlZTU4MGQsIDB4NGEwMjVjMDQsCi0JMHgwMDAwODAwMCwgMHg0OTdhNWEwNCwgMHg1OTJjMzIwOCwgMHg4MDE4MzEwMiwKLQkweDU5MmMxODAxLCAweDRhMDAxODA1LCAweDAxMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDhlOGUsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDMsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg0YTAxZDgwOSwgMHgwMDEwMzc5ZCwKLQkweDFjMDFmMDAwLCAweDU5MmM0MDAwLCAweDU5MmMwMDA1LCAweDgyMDAwNTgwLAotCTB4MDEwMDAwMDAsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg0YzU4MDAwMCwgMHg0YzUwMDAwMCwKLQkweDRjNTQwMDAwLCAweDgzMmMzYzAwLCAweDAwMDAwMDA1LCAweDQwMWNhMDAwLAotCTB4NDAxY2E4MDAsIDB4NTgyMDI4MGEsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsCi0JMHg4MjE0MzU4MCwgMHg3MDAwMDAwMCwgMHgwNDAwMDAwMywgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDBmLCAweDAyMDFmODAwLCAweDAwMTBhOTRmLCAweDVjMDBhODAwLAotCTB4NWMwMGEwMDAsIDB4NWMwMGIwMDAsIDB4NDAxYzAwMDAsIDB4NTgyMDEwMDYsCi0JMHg1ODIwMTgwNywgMHg1ODIwMjIwNSwgMHg4MDEwMjEwMiwgMHg4MjE0MzU4MCwKLQkweDcwMDAwMDAwLCAweDA0MDIwMDA4LCAweDgyMTAzNDgwLCAweDAwMDAwMDAyLAotCTB4MDIwMDEwMDAsIDB4MDAxMDIwYjYsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDIsCi0JMHgwNDAxZjA3OSwgMHg4MjE0MzU4MCwgMHg3MjAwMDAwMCwgMHgwMjAyMDAwMCwKLQkweDAwMTAyMGI2LCAweDgyMTAzNDgwLCAweDAwMDAwMDJhLCAweDAyMDAxMDAwLAotCTB4MDAxMDIwYjYsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMGYsIDB4MDQwMWY4NmUsCi0JMHg0YTAxZDgwOSwgMHgwMDEwMzdkNywgMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwKLQkweDU4ZWY0MDBiLCAweDU4ZWU1ODBlLCAweDU4ZWMwMDAyLCAweDgyMDAwNTgwLAotCTB4MDAwMDAyMDAsIDB4MDIwMDAwMDAsIDB4MDAxMDIwYWEsIDB4NTkyZTU4MDAsCi0JMHg4MzJjMGMwMCwgMHgwMDAwMDAwNSwgMHg0YzU4MDAwMCwgMHg0YzUwMDAwMCwKLQkweDRjNTQwMDAwLCAweDQwMDRhMDAwLCAweDQwMDRhODAwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMGYsIDB4MDIwMWY4MDAsIDB4MDAxMGE5NGYsIDB4NWMwMGE4MDAsCi0JMHg1YzAwYTAwMCwgMHg1YzAwYjAwMCwgMHg0MGVjMTAwMCwgMHg0YTAwMTAwMSwKLQkweDAwMDAwMDAwLCAweDRhMDAxMDA0LCAweDAwMDAwMDBmLCAweDQ4MDQxMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4YTEsIDB4NGEwMWQ4MDksIDB4MDAxMDM3ZjksCi0JMHgxYzAxZjAwMCwgMHg0MDMxZDgwMCwgMHg1OGVmNDAwYiwgMHg1OGVlNTgwZSwKLQkweDU4ZWMwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMjAwLCAweDAyMDAwMDAwLAotCTB4MDAxMDIwYWEsIDB4ODMyYzBjMDAsIDB4MDAwMDAwMDUsIDB4NGM1ODAwMDAsCi0JMHg0YzUwMDAwMCwgMHg0YzU0MDAwMCwgMHg0MDA0YTAwMCwgMHg0MDA0YTgwMCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDBjLCAweDAyMDFmODAwLCAweDAwMTBhOTRmLAotCTB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NWMwMGIwMDAsIDB4NDBlYzEwMDAsCi0JMHg0YTAwMTAwMSwgMHgwMDAwMDAwMCwgMHg0YTAwMTAwNCwgMHgwMDAwMDAwYywKLQkweDQ4MDQxMDAzLCAweDAyMDFmODAwLCAweDAwMTAwOGExLCAweDRhMDFkODA5LAotCTB4MDAxMDIwNWYsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsCi0JMHgwNDAwMDAxMCwgMHg0OTdhNTgwMCwgMHg1OGVjMDAwZCwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDA0LCAweDQ5MmRkODBkLCAweDQ5MmRkODBlLCAweDA0MDFmMDA3LAotCTB4NThlYzAwMGUsIDB4NDgwMjU4MDAsIDB4ODIwMDA0MDAsIDB4MDAwMDAwMDEsCi0JMHg0NTJjMDAwMCwgMHg0OTJkZDgwZSwgMHg4MzJjMDQwMCwgMHgwMDAwMDAwNCwKLQkweDQ5MmZjODU3LCAweDQ4MDNjODU3LCAweDFjMDFmMDAwLCAweDRkMmMwMDAwLAotCTB4NThlYzQwMGQsIDB4ODAyMDQxYzAsIDB4MDQwMDAwMDgsIDB4NDgyM2M4NTcsCi0JMHg0MDIyNTgwMCwgMHg1OTJjNDAwMSwgMHg0OTdhNTgwMSwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODNhLCAweDA0MDFmN2Y4LCAweDQ5NzlkODBkLCAweDQ5NzlkODBlLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDEsCi0JMHgwNDAxZjAwMywgMHg0MjAwMzAwMCwgMHgwMDAwMDAwMCwgMHg0ODAzYzg1NywKLQkweDQ4MDdjODU3LCAweDQ4MGJjODU3LCAweDQ4MGZjODU3LCAweDQ4MWJjODU3LAotCTB4NDhlZmM4NTcsIDB4NDgxOWQ4MDEsIDB4ODAwNDA5YzAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0ODA1ZDgwNCwgMHg0ODAxZDgwMywgMHg0ODA5ZDgwNywKLQkweDQ4MGRkODA4LCAweDQwZWMxMDAwLCAweDAyMDFmODAwLCAweDAwMTAwOGExLAotCTB4NGEwMWQ4MDksIDB4MDAxMDIwNWYsIDB4MWMwMWYwMDAsIDB4ODAwMDJkODAsCi0JMHg0ODBiYzg1NywgMHg0ODBmYzg1NywgMHg0ODEzYzg1NywgMHg0ODE3Yzg1NywKLQkweDRkMmMwMDAwLCAweDRkYTAwMDAwLCAweDQyMDM0MDAwLCAweDAwMTBiMmEwLAotCTB4NTlhMDAwMTcsIDB4ODAwMDAxYzAsIDB4MDQwMjAwMTMsIDB4MDQwMDYwMTIsCi0JMHg0ODBiYzAyMCwgMHg0ODBmYzAyMSwgMHg0ODEzYzAyMiwgMHg0ODE3YzAyMywKLQkweDkwMDgxMWMwLCAweDgyMDgxNTQwLCAweDAwMDAwMDEyLCAweDQ4MGJjMDExLAotCTB4NTllMDAwMTcsIDB4OGMwMDA1MDgsIDB4MDQwMjAwMDQsIDB4NDIwM2UwMDAsCi0JMHgzMDAwMDAwMSwgMHgwNDAxZjA1MywgMHg0YTAzYzAxNywgMHgwMDAwMDAwMiwKLQkweDA0MDFmN2ZiLCAweDRjMDQwMDAwLCAweDRjMWMwMDAwLCAweDgwMDAwODAwLAotCTB4NDgwNzQwMTcsIDB4NTlhMDM4MWEsIDB4NDgxZmM4NTcsIDB4ODAxYzM5YzAsCi0JMHgwNDAyMDAyNywgMHg4MjAwMDQ4MCwgMHgwMDAwMDAwYSwgMHgwNDAyMTAxMCwKLQkweDU5YTAwMDE4LCAweDgwMDAwMDAwLCAweDQ4MDM0MDE4LCAweDU5YTAwMjE5LAotCTB4ODIwMDA0MDAsIDB4MDAwMDAwMDIsIDB4ODIwMDBjODAsIDB4MDAwMDAwMTMsCi0JMHg0ODAzNDIxOSwgMHgwNDAwMTAwMywgMHg0OTdiNDIxOSwgMHg0MTc4MDAwMCwKLQkweDU5YTAzODE2LCAweDgwMWMzYzAwLCAweDA0MDFmMDMwLCAweDQ4MDNjODU2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsIDB4MDQwMDAwMDcsIDB4NDkyZjQwMWEsCi0JMHg0OTJmNDAxYiwgMHg0MTJjMzgwMCwgMHg0OTdiNDIxYywgMHg0OTdhNTgxMywKLQkweDA0MDFmMDI2LCAweDU5ODgwMDUyLCAweDgwMDAwMDAwLCAweDQ4MDMxMDUyLAotCTB4NTlhMDAwMTcsIDB4ODAwMDAwNDAsIDB4NDgwMzQwMTcsIDB4NTlhMDAyMTksCi0JMHg1OWEwMzgxNiwgMHg4MDFjM2MwMCwgMHgwNDAxZjAxYywgMHg1OWEwMDIxYywKLQkweDgyMDAwNDAwLCAweDAwMDAwMDAyLCAweDgyMDAwYzgwLCAweDAwMDAwMDEyLAotCTB4MDQwMjEwMDQsIDB4NDgwMzQyMWMsIDB4ODAxYzNjMDAsIDB4MDQwMWYwMTMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwgMHgwNDAyMDAwYiwgMHg1OTg4MDA1MiwKLQkweDgwMDAwMDAwLCAweDQ4MDMxMDUyLCAweDU5YTAwMDE3LCAweDgwMDAwMDQwLAotCTB4NDgwMzQwMTcsIDB4NDgwM2M4NTYsIDB4NTlhMDAyMWMsIDB4ODAxYzNjMDAsCi0JMHgwNDAxZjAwNiwgMHg0OTJmNDAxYSwgMHg0OTJjMzgxMywgMHg0MTJjMzgwMCwKLQkweDQ5N2I0MjFjLCAweDQ5N2E1ODEzLCAweDQ4MDgzYzAwLCAweDQ4MGMzYTAwLAotCTB4NDgxMDNjMDEsIDB4NDgxNDNhMDEsIDB4NWMwMDM4MDAsIDB4NWMwMDA4MDAsCi0JMHg1YzAzNDAwMCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0ODBmYzg1NywKLQkweDQ4MTNjODU3LCAweDQ4MWJjODU3LCAweDQyMDAwMDAwLCAweDAwMTBiNjExLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4ODAxODAwZDAsIDB4NDAwMDI4MDAsCi0JMHg0MjAwMTAwMCwgMHgwMDAwODAxNCwgMHgwNDAxZjc4NiwgMHg0YzAwMDAwMCwKLQkweDU5OWMwMDE3LCAweDhjMDAwNTEyLCAweDVjMDAwMDAwLCAweDFjMDFmMDAwLAotCTB4NGMwMDAwMDAsIDB4NTk5YzAwMTgsIDB4OGMwMDA1MGUsIDB4NWMwMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHg1OWE4MDgyMSwgMHg4MDA0MDljMCwgMHgwNDAwMDAwNSwKLQkweDRhMDM0NDA2LCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTAyMGIyLAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwNywgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OTljMDAxNywKLQkweDhjMDAwNTBhLCAweDA0MDAwMDA1LCAweDRhMDM0NDA2LCAweDAwMDAwMDA4LAotCTB4MDIwMWYwMDAsIDB4MDAxMDIwYjIsIDB4NTkzNDA0MDUsIDB4OGMwMDA1MDgsCi0JMHgwNDAyMDAwNCwgMHg4YzAwMDUwYSwgMHgwMjAyMDAwMCwgMHgwMDEwMzJlMiwKLQkweDQ5N2E1YTA0LCAweDQ5N2E1ODA1LCAweDRhMDI1YzA0LCAweDAwMDA4MDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDhmMmQsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsCi0JMHgwMDAwMDAwMywgMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg0YTAxZDgwOSwKLQkweDAwMTAzOTA2LCAweDFjMDFmMDAwLCAweDU5MmMwMDA1LCAweDgyMDAwNTgwLAotCTB4MDEwMDAwMDAsIDB4MDQwMjAwMDUsIDB4NGEwMzQ0MDYsIDB4MDAwMDAwMDQsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMjBiMiwgMHg1OWEyOGMwNiwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMjY3LCAweDAyMDIwMDAwLCAweDAwMTAyMGI2LCAweDAyMDFmMDAwLAotCTB4MDAxMDMyZTIsIDB4ODIwMDE1ODAsIDB4MDAwMGZmZmYsIDB4MDQwMDAwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwNTliOSwgMHgwMjAwMDgwMCwgMHgwMDAyMDI2NywKLQkweDA0MDIwMDBjLCAweDAyMDFmODAwLCAweDAwMTA1Y2U3LCAweDA0MDFmMDA5LAotCTB4NDIwMjg4MDAsIDB4MDAwMDA3ZWYsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNWNlNywgMHg4MTQ2ODg0MCwgMHgwNDAyMTdmYiwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRjMGMwMDAwLCAweDRkMzQwMDAwLAotCTB4NGQ0NDAwMDAsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZmUsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDI2NywgMHgwNDAyMDAwOSwgMHg1OTM0MTgwYSwgMHg4MjBjMWQwMCwKLQkweDAwMDAwMDAxLCAweDgyMGMxZDgwLCAweDAwMDAwMDAxLCAweDQyMDAxMDAwLAotCTB4MDAwMDgwMWIsIDB4MDQwMWZmMWUsIDB4NWMwMjg4MDAsIDB4NWMwMjY4MDAsCi0JMHg1YzAwMTgwMCwgMHgxYzAxZjAwMCwgMHg1OTljMDAxNywgMHg4YzAwMDUwOCwKLQkweDFjMDFmMDAwLCAweDQ4ZWZjODU3LCAweDA0MDExMDAwLCAweDQ4ZWZjODQwLAotCTB4NGEwM2M4NDIsIDB4MDAwMDAwMTEsIDB4NDAwMDAwMDAsIDB4MDQwMTE3ZmYsCi0JMHg0YTAxZDgwZiwgMHhiZWVmYmVlZiwgMHgxYzAxZjAwMCwgMHg0OTdiNDAwMCwKLQkweDQ5N2I0MDAxLCAweDQ5N2I0MDAyLCAweDQ5N2I0MDAzLCAweDQ5N2I0MDA0LAotCTB4MWMwMWYwMDAsIDB4NTljNDAwYTQsIDB4NGM1ODAwMDAsIDB4NGM1MDAwMDAsCi0JMHg0YzU0MDAwMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDQ4MCwKLQkweDAwMDAwMDA3LCAweDA0MDAxMDBhLCAweDgyMDA2YzgwLCAweDAwMDAwMDA3LAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4MGMwMWY4MDcsIDB4NWMwMGE4MDAsCi0JMHg1YzAwYTAwMCwgMHg1YzAwYjAwMCwgMHgxYzAxZjAwMCwgMHgwNDAxZjkwYywKLQkweDA0MDFmN2ZiLCAweDAwMTAzOTZjLCAweDAwMTAzOTcyLCAweDAwMTAzOTk3LAotCTB4MDAxMDM5YjksIDB4MDAxMDNhNzgsIDB4MDAxMDM5NmIsIDB4MWMwMWYwMDAsCi0JMHg1OWM0MDgwNiwgMHg4YzA0MGQwMCwgMHgwNDAyMDAwMywgMHg4NDA0MGQ0MCwKLQkweDQ4MDc4ODA2LCAweDFjMDFmMDAwLCAweDU5YzQwMDA1LCAweDhjMDAwNTM0LAotCTB4MDIwMjAwMDAsIDB4MDAxMDQwY2UsIDB4NGEwMzg4MDUsIDB4ZmZmZmZmZmYsCi0JMHg0MjAwNjAwMCwgMHgwMDAyMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDBiMiwKLQkweDU5YTgwMDE1LCAweDgyMDAwNTAwLCAweGZmZmZmZmZhLCAweDg0MDAwNTQyLAotCTB4NDgwMzUwMTUsIDB4NDk3YjUwMjYsIDB4NDIwMDA4MDAsIDB4MDAxMGJjMjAsCi0JMHg0NTc4MDgwMCwgMHg0OTdiNTAxMywgMHg0MjAwNjAwMCwgMHhmZmVmZmZmZiwKLQkweDQyMDA2ODAwLCAweDQwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLAotCTB4NTljNDAwMDYsIDB4ODIwMDA1MDAsIDB4ZmZmZmZmMGYsIDB4NDgwMzg4MDYsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAxMCwgMHg0MjAwMTAwMCwgMHgwMDEwNDAxYiwKLQkweDAyMDFmODAwLCAweDAwMTA1Y2JjLCAweDA0MDFmMDAxLCAweDQyMDA2MDAwLAotCTB4ZmZmZmZmZmYsIDB4NDIwMDY4MDAsIDB4MDA4MDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDBhZCwgMHg0MjAwYjAwMCwgMHgwMDAwMDBjOCwgMHg1OWM0MDBhNCwKLQkweDgyMDAwNTAwLCAweDAwMDAwMDBmLCAweDgyMDAwNTgwLCAweDAwMDAwMDBhLAotCTB4MDQwMDAwMGYsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjksIDB4NDk3YjUwMTQsCi0JMHg0MjAwNjAwMCwgMHhiZjdmZmZmZiwgMHg0MjAwNjgwMCwgMHgwMDAxODAwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0MGFkLCAweDQyMDA2MDAwLCAweGZmZmVmZmZmLAotCTB4NDE3ODY4MDAsIDB4MDIwMWYwMDAsIDB4MDAxMDQwYWQsIDB4NDk3YjUwMTQsCi0JMHg0YTAzNTAxMiwgMHgwMDAwMDAwMCwgMHg4MDAwMDU4MCwgMHgwMjAxZjAwMCwKLQkweDAwMTA0MGI5LCAweDRhMDM4ODA1LCAweGZmZmZmZmZmLCAweDU5YTgwMDEyLAotCTB4ODIwMDBjODAsIDB4MDAwMDAwMDQsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsCi0JMHgwYzAxZjAwMSwgMHgwMDEwMzljNCwgMHgwMDEwMzlmMSwgMHgwMDEwM2E2ZSwKLQkweDQ4MDNjODU2LCAweDU5YzQwMGEzLCAweDg0MDAwNTFlLCAweDQ4MDM4OGEzLAotCTB4NGEwMzUwMTIsIDB4MDAwMDAwMDEsIDB4NTljNDAwMDgsIDB4ODQwMDA1NGUsCi0JMHg0ODAzODgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwNDA5MywgMHg0MjAwNzgwMCwKLQkweDAwMTBiMzRhLCAweDRhMDA3ODA2LCAweDExMDEwMDAwLCAweDQyMDBhMDAwLAotCTB4MDAxMGIyMDIsIDB4NDIwMGE4MDAsIDB4MDAxMGIzNTEsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg0OTdiODgwMiwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDQ5N2I1MDRhLCAweDAyMDFmODAwLAotCTB4MDAxMDNmOGUsIDB4NGEwMzUwNGEsIDB4MDAwMDAwMDEsIDB4NDk3YjUwMTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDBjMCwgMHg0MjAwNjAwMCwgMHhmZmZmZmZmZiwKLQkweDQyMDA2ODAwLCAweDAwMDgwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLAotCTB4NDIwMDYwMDAsIDB4ZmZmN2ZmZmYsIDB4NDE3ODY4MDAsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNDBhZCwgMHg1OWE4MDAxNiwgMHg0OTdiNTAxNiwgMHg4MDAwMjU0MCwKLQkweDA0MDAwMDZhLCAweDU5YzQwMDA0LCAweDgyMDAwNTAwLCAweDAwMDAwMDAzLAotCTB4MDQwMjAwNzUsIDB4NTlhODA4MTUsIDB4OGMwNDBkMDIsIDB4MDQwMDAwNGYsCi0JMHg4MjEwMDU4MCwgMHgwMDAwMDAwYywgMHgwNDAyMDA1MywgMHg4MjEwMDQwMCwKLQkweDAwMDAwMDE4LCAweDgwMDBiMTA0LCAweDQxY2MxMDAwLCAweDQyMDAxODAwLAotCTB4MDAxMGIzNGEsIDB4NTAwODA4MDAsIDB4NTAwYzAwMDAsIDB4ODAwNDA1ODAsCi0JMHgwNDAyMDAxZSwgMHg4MDA4MTAwMCwgMHg4MDBjMTgwMCwgMHg4MDU4YjA0MCwKLQkweDA0MDIwN2Y5LCAweDAyMDFmODAwLCAweDAwMTA0MGMwLCAweDQyMDA2MDAwLAotCTB4ZmZmZmZmZmYsIDB4NDIwMDY4MDAsIDB4MDA1MDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDBhZCwgMHg0YTAzNTAxMiwgMHgwMDAwMDAwMiwgMHg0YTAzNTAxNCwKLQkweDAwMDAwMDAyLCAweDAyMDFmODAwLCAweDAwMTAxNjRiLCAweDQyMDAwODAwLAotCTB4MDAwMDA3ZDAsIDB4NDIwMDEwMDAsIDB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWRhNywgMHg1OWE4MDAxNSwgMHg4NDAwMDUwNiwgMHg0ODAzNTAxNSwKLQkweDAyMDFmMDAwLCAweDAwMTA0MDkzLCAweDU5Y2MwODA2LCAweDgyMDQwZDgwLAotCTB4MTEwMTAwMDAsIDB4MDQwMjAwMjgsIDB4NTljYzA4MDAsIDB4ODIwNDA1MDAsCi0JMHgwMGZmZmZmZiwgMHgwNDAwMDAxYSwgMHg4MjAwMDU4MCwgMHgwMDAwMDBlZiwKLQkweDA0MDIwMDE3LCAweDU5Y2MwODAxLCAweDgyMDQwNTAwLCAweDAwZmZmZmZmLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwZWYsIDB4MDQwMjAwMTEsIDB4ODNjY2E0MDAsCi0JMHgwMDAwMDAwNywgMHg0MjAwYTgwMCwgMHgwMDEwYjIwMiwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDAyLCAweDUwNTAwODAwLCAweDUwNTQwMDAwLCAweDgwMDQwNDgwLAotCTB4MDQwMDEwMDcsIDB4MDQwMjAwMTAsIDB4ODA1MGEwMDAsIDB4ODA1NGE4MDAsCi0JMHg4MDU4YjA0MCwgMHgwNDAyMDdmOCwgMHgwNDAxZjAwYiwgMHg1OWE4MDAxNSwKLQkweDg0MDAwNTAyLCAweDQ4MDM1MDE1LCAweDQxY2NhMDAwLCAweDQyMDBhODAwLAotCTB4MDAxMGIzNGEsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDksIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHgwMjAxZjgwMCwgMHgwMDEwNDBjMCwgMHg0MjAwNjAwMCwKLQkweGZmZmZmZmZmLCAweDQyMDA2ODAwLCAweDAwMDgwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDQwYWQsIDB4NDIwMDYwMDAsIDB4ZmZmN2ZmZmYsIDB4NDE3ODY4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDBhZCwgMHg0MjAwNjAwMCwgMHhmZmZmZmZmZiwKLQkweDQyMDA2ODAwLCAweDAwMDA0MDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLAotCTB4NTljNDAwMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMDYsCi0JMHg0OTdiNTAxNiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywgMHgwMjAxZjAwMCwKLQkweDAwMTAzZjhlLCAweDFjMDFmMDAwLCAweDFjMDFmMDAwLCAweDU5YTgwMDE0LAotCTB4ODIwMDZkODAsIDB4MDAwMDAwMGYsIDB4MDQwMDAwMDUsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAxYiwgMHgwMjAyMDgwMCwgMHgwMDEwM2Y1MywgMHgxYzAxZjAwMCwKLQkweDU5YTgwMDE1LCAweDg0MDAwNTA2LCAweDQ4MDM1MDE1LCAweDQ5N2I1MDRhLAotCTB4NTlhODAwMTQsIDB4ODIwMDBjODAsIDB4MDAwMDAwMWUsIDB4MDIwMjE4MDAsCi0JMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwM2FiNiwgMHgwMDEwM2FjZCwKLQkweDAwMTAzYWY2LCAweDAwMTAzYjExLCAweDAwMTAzYjM0LCAweDAwMTAzYjY1LAotCTB4MDAxMDNiODcsIDB4MDAxMDNiYmEsIDB4MDAxMDNiZGMsIDB4MDAxMDNjMDAsCi0JMHgwMDEwM2MzYywgMHgwMDEwM2M2MywgMHgwMDEwM2M3OSwgMHgwMDEwM2M4YiwKLQkweDAwMTAzY2EzLCAweDAwMTAzY2JhLCAweDAwMTAzY2JmLCAweDAwMTAzY2U3LAotCTB4MDAxMDNkMGEsIDB4MDAxMDNkMzAsIDB4MDAxMDNkNTMsIDB4MDAxMDNkODYsCi0JMHgwMDEwM2RjOCwgMHgwMDEwM2RmMiwgMHgwMDEwM2UwYSwgMHgwMDEwM2U0YSwKLQkweDAwMTAzZTYzLCAweDAwMTAzZTc2LCAweDAwMTAzZTc3LCAweDQ4MDNjODU2LAotCTB4NDIwMmQ4MDAsIDB4MDAwMDAwMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHgwNDAwMDAwNywgMHg0MjAwNjAwMCwgMHhmZmZmZmZkNywgMHg0MTc4NjgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0MGFkLCAweDA0MDFmMDBiLCAweDU5YzQwMDA2LAotCTB4ODIwMDA1MDAsIDB4ZmZmZmZmMGYsIDB4NDgwMzg4MDYsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDBmMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhYSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZDZjLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDQyMDA2MDAwLAotCTB4YmY3ZmZmZmYsIDB4NDIwMDY4MDAsIDB4MDA0MDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDBhZCwgMHgwMjAxZjgwMCwgMHgwMDEwMTY0YiwgMHg0YTAzNTAxNCwKLQkweDAwMDAwMDAxLCAweDQyMDAxMDAwLCAweDAwMTA0MDFiLCAweDAyMDFmODAwLAotCTB4MDAxMDVjZGQsIDB4MDIwMWY4MDAsIDB4MDAxMDQwMjQsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDdkMCwgMHg0MjAwMTAwMCwgMHgwMDEwM2Y2MiwgMHgwMjAxZjAwMCwKLQkweDAwMTA1ZGE3LCAweDU5YTgwMDE2LCAweDgyMDAwNTgwLCAweDAwMDAwMDE0LAotCTB4MDQwMjAwMjMsIDB4NDgwM2M4NTcsIDB4NDIwMDYwMDAsIDB4ZmZiZmZmZmYsCi0JMHg0MTc4NjgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDBhZCwgMHg1OWM0MDAwNCwKLQkweDgyMDAwNTAwLCAweDAwMDAwMDAzLCAweDA0MDIwMDE5LCAweDQyMDAxMDAwLAotCTB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYzksIDB4NTljYzEwMDYsCi0JMHg4MjA4MTU4MCwgMHgxMTAyMDAwMCwgMHgwNDAyMDAxMiwgMHg1OWNjMTAwNywKLQkweDhjMDgxNTNlLCAweDA0MDAwMDBiLCAweDU5YTgwMDE1LCAweDhjMDAwNTA0LAotCTB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsIDB4MDAxMGI2M2QsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwgMHg4NDAwMDU0NCwgMHg0ODAzNTAxNSwKLQkweDRhMDM1MDE0LCAweDAwMDAwMDEwLCAweDA0MDFmMWNkLCAweDFjMDFmMDAwLAotCTB4MDIwMWYwMDAsIDB4MDAxMDNmNTMsIDB4NDgwM2M4NTYsIDB4NGEwMzUwMTQsCi0JMHgwMDAwMDAwMywgMHg0MjAwNjAwMCwgMHhiZjNmZmZmZiwgMHg0MjAwNjgwMCwKLQkweDAwMTAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLCAweDQyMDAxMDAwLAotCTB4MDAxMDQwMWIsIDB4MDIwMWY4MDAsIDB4MDAxMDVjZGQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDAyNCwgMHg0MjAwMTAwMCwgMHgwMDEwM2Y2MiwgMHgwMjAxZjgwMCwKLQkweDAwMTA1Y2M5LCAweDQyMDA3ODAwLCAweDAwMTBiMzUwLCAweDQ2MDA3ODAwLAotCTB4MTEwMjAwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4MDIwMWYwMDAsCi0JMHgwMDEwM2Y4ZSwgMHg1OWE4MDAxNiwgMHg4MDAwMDU0MCwgMHgwNDAwMDAxZSwKLQkweDQ4MDNjODU3LCAweDQyMDAxMDAwLCAweDAwMTAzZjYyLCAweDAyMDFmODAwLAotCTB4MDAxMDVjYzksIDB4NTlhODAwMTYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAyMDAxNiwgMHg1OWNjMTAwNiwgMHg4MjA4MTU4MCwgMHgxMTAyMDAwMCwKLQkweDA0MDIwMDEyLCAweDU5Y2MxMDA3LCAweDhjMDgxNTNlLCAweDA0MDAwMDBiLAotCTB4NTlhODAwMTUsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwKLQkweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LCAweDRhMDM1MDE0LCAweDAwMDAwMDA0LAotCTB4MDQwMWYwMDQsIDB4MWMwMWYwMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDNmNTMsCi0JMHg0ODAzYzg1NiwgMHg0YTAzNTAxNCwgMHgwMDAwMDAwNSwgMHg4M2NjYTQwMCwKLQkweDAwMDAwMDA2LCAweDQyMDBhODAwLCAweDAwMTBiMzUwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NDIwMDc4MDAsCi0JMHgwMDEwYjM1MCwgMHg0NjAwNzgwMCwgMHgxMTAzMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAzZjU4LCAweDA0MDIwMDE0LCAweDU5YTgwMDE1LCAweDhjMDAwNTAwLAotCTB4MDQwMjAwMTEsIDB4NTlhODA4MTAsIDB4ODIwNDA1ODAsIDB4MDBmZmZmZmYsCi0JMHgwNDAwMDAwZCwgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwgMHg4MjA0MDQwMCwKLQkweDAwMTAxZWI1LCAweDUwMDAwODAwLCAweDgwMDQwOTEwLCAweDQyMDAxMDAwLAotCTB4MDAwMDAwMDQsIDB4MDQwMWZiOTUsIDB4MDQwMDAwMGIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDAzZCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwNCwgMHg4M2NjYTQwMCwKLQkweDAwMDAwMDA3LCAweDQyMDBhODAwLCAweDAwMTBiMzUxLCAweDAyMDFmODAwLAotCTB4MDAxMGE5M2UsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4MDIwMWYwMDAsCi0JMHgwMDEwM2Y4ZSwgMHg1OWE4MDAxNiwgMHg4MDAwMDU0MCwgMHgwNDAwMDAxZSwKLQkweDQ4MDNjODU3LCAweDQyMDAxMDAwLCAweDAwMTAzZjYyLCAweDAyMDFmODAwLAotCTB4MDAxMDVjYzksIDB4NTlhODAwMTYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAyMDAxNiwgMHg1OWNjMTAwNiwgMHg4MjA4MTU4MCwgMHgxMTAzMDAwMCwKLQkweDA0MDIwMDEyLCAweDU5Y2MxMDA3LCAweDhjMDgxNTNlLCAweDA0MDAwMDBiLAotCTB4NTlhODAwMTUsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwKLQkweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LCAweDRhMDM1MDE0LCAweDAwMDAwMDA2LAotCTB4MDQwMWYwMDMsIDB4MWMwMWYwMDAsIDB4MDQwMWYzY2QsIDB4NDgwM2M4NTYsCi0JMHg0YTAzNTAxNCwgMHgwMDAwMDAwNywgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwKLQkweDQyMDBhODAwLCAweDAwMTBiMzUwLCAweDQyMDBiMDAwLCAweDAwMDAwMDA1LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NDIwMDc4MDAsIDB4MDAxMGIzNTAsCi0JMHg0NjAwNzgwMCwgMHgxMTA0MDAwMCwgMHgwNDAxZmJjMiwgMHgwNDAyMDAyMCwKLQkweDU5YTgwMDE1LCAweDhjMDAwNTAwLCAweDA0MDIwMDFkLCAweDU5OWMwMDE3LAotCTB4OGMwMDA1MDAsIDB4MDQwMDAwMWEsIDB4NTk5YzE0MDIsIDB4ODIwODA0ODAsCi0JMHgwMDAwMDA3ZiwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg0YzA4MDAwMCwKLQkweDgyMDgxNDAwLCAweDAwMTAxZWI1LCAweDUwMDgxMDAwLCAweDgyMDgxNTAwLAotCTB4MDAwMDAwZmYsIDB4NDgwYjUwMTAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjlhZiwgMHg1YzAwMDgwMCwgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDA0LCAweDA0MDFmYjM5LCAweDA0MDAwMDA1LCAweDA0MDFmZDI1LAotCTB4MDQwMDAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDE2NjgsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNSwgMHgwNDAxZjNkNSwgMHg1OWE4MDAxNiwgMHg4MDAwMDU0MCwKLQkweDA0MDAwMDFlLCAweDQ4MDNjODU3LCAweDQyMDAxMDAwLCAweDAwMTAzZjYyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDVjYzksIDB4NTlhODAwMTYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAxNCwgMHgwNDAyMDAxNiwgMHg1OWNjMTAwNiwgMHg4MjA4MTU4MCwKLQkweDExMDQwMDAwLCAweDA0MDIwMDEyLCAweDU5Y2MxMDA3LCAweDhjMDgxNTNlLAotCTB4MDQwMDAwMGIsIDB4NTlhODAwMTUsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMDgsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDU5YTgwMDE1LCAweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LCAweDRhMDM1MDE0LAotCTB4MDAwMDAwMDgsIDB4MDQwMWYwMDMsIDB4MWMwMWYwMDAsIDB4MDQwMWYzNzgsCi0JMHg0ODAzYzg1NiwgMHg0YTAzNTAxNCwgMHgwMDAwMDAwOSwgMHg4M2NjYTQwMCwKLQkweDAwMDAwMDA2LCAweDQyMDBhODAwLCAweDAwMTBiMzUwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NDIwMDc4MDAsCi0JMHgwMDEwYjM1MCwgMHg0NjAwNzgwMCwgMHgxMTA1MDEwMCwgMHgwNDAxZmI2ZCwKLQkweDA0MDIwMDBhLCAweDU5YTgwMDE1LCAweDhjMDAwNTAwLCAweDA0MDIwMDA3LAotCTB4MDQwMWZhODgsIDB4MDQwMjAwMDUsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTY2OCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwKLQkweDA0MDFmYjk2LCAweDRkM2MwMDAwLCAweDQyMDI3ODAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDk2NDAsIDB4NWMwMjc4MDAsIDB4MWMwMWYwMDAsCi0JMHg1OWE4MDAxNiwgMHg4MDAwMDU0MCwgMHgwNDAwMDAzOCwgMHg0ODAzYzg1NywKLQkweDQyMDAxMDAwLCAweDAwMTAzZjYyLCAweDAyMDFmODAwLCAweDAwMTA1Y2M5LAotCTB4NTlhODAwMTYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMTQsIDB4MDQwMjAwMzAsCi0JMHg1OWNjMTAwNiwgMHg4MjA4MDUwMCwgMHgxMTA1MDAwMCwgMHg4MjAwMDU4MCwKLQkweDExMDUwMDAwLCAweDA0MDIwMDJhLCAweDhjMDgxNTEwLCAweDA0MDAwMDE0LAotCTB4NTljYzEwMDcsIDB4OGMwODE1M2UsIDB4MDQwMDAwMGIsIDB4NTlhODAwMTUsCi0JMHg4YzAwMDUwNCwgMHgwNDAyMDAwOCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzZCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDU5YTgwMDE1LCAweDg0MDAwNTQ0LAotCTB4NDgwMzUwMTUsIDB4NGEwMzUwMTMsIDB4MDAwMDAwMDEsIDB4NGEwMzUwMTQsCi0JMHgwMDAwMDAwYSwgMHgwNDAxZjgxNywgMHgwNDAxZjAxNCwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDEzLCAweDU5Y2MxMDA3LCAweDhjMDgxNTNlLCAweDA0MDAwMDBiLAotCTB4NTlhODAwMTUsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwKLQkweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LCAweDQ5N2I1MDEzLCAweDRhMDM1MDE0LAotCTB4MDAwMDAwMGUsIDB4MDQwMWYwNmEsIDB4MWMwMWYwMDAsIDB4MDQwMWYzMTgsCi0JMHg0ODAzYzg1NiwgMHg0YTAzNTAxNCwgMHgwMDAwMDAwYiwgMHg0MjAwMTAwMCwKLQkweDAwMTBiMzUxLCAweDQwMDhhODAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDIwLAotCTB4NDYwMGE4MDAsIDB4ZmZmZmZmZmYsIDB4ODA1NGE4MDAsIDB4ODA1OGIwNDAsCi0JMHgwNDAyMDdmYywgMHg0MjAwNzgwMCwgMHgwMDEwYjM1MCwgMHg0NjAwNzgwMCwKLQkweDExMDYwMDAwLCAweDQyMDAxMDAwLCAweDAwMTBiMzUxLCAweDA0MDFmYjA5LAotCTB4MDQwMDAwMDUsIDB4NTAwODAwMDAsIDB4NDYwMDEwMDAsIDB4MDBmZmZmZmYsCi0JMHgwNDAxZjAwYywgMHg1MDA4MDgwMCwgMHg4MjA0MGQwMCwgMHgwMDAwZmZmZiwKLQkweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAwNTQwLAotCTB4MDAwMDAxMDAsIDB4ODAwMDAwZTAsIDB4ODAwNDBkNDAsIDB4NDQwNDEwMDAsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAyMSwgMHgwNDAxZjMyYywgMHg1OWE4MDAxNiwKLQkweDgwMDAwNTQwLCAweDA0MDAwMDEyLCAweDQ4MDNjODU3LCAweDU5YTgwMDE2LAotCTB4NDIwMDEwMDAsIDB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYzksCi0JMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDA4NCwgMHgwNDAyMDAwOSwKLQkweDU5Y2MxMDA2LCAweDgyMDgxNTgwLCAweDExMDYwMDAwLCAweDA0MDIwMDA1LAotCTB4NGEwMzUwMTQsIDB4MDAwMDAwMGMsIDB4MDQwMWYwMDMsIDB4MWMwMWYwMDAsCi0JMHgwNDAxZjJkYiwgMHg0ODAzYzg1NiwgMHg0YTAzNTAxNCwgMHgwMDAwMDAwZCwKLQkweDgzY2NhNDAwLCAweDAwMDAwMDA2LCAweDQyMDBhODAwLCAweDAwMTBiMzUwLAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMjEsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsCi0JMHg0MjAwNzgwMCwgMHgwMDEwYjM1MCwgMHg0NjAwNzgwMCwgMHgxMTA3MDAwMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDIxLCAweDA0MDFmMzA0LCAweDU5YTgwMDE2LAotCTB4ODAwMDA1NDAsIDB4MDQwMDAwMTQsIDB4NDgwM2M4NTcsIDB4NTlhODAwMTYsCi0JMHg0MjAwMTAwMCwgMHgwMDEwM2Y2MiwgMHgwMjAxZjgwMCwgMHgwMDEwNWNjOSwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDg0LCAweDA0MDIwMDBjLCAweDU5Y2MxMDA2LAotCTB4ODIwODE1ODAsIDB4MTEwNzAwMDAsIDB4MDQwMjAwMDgsIDB4NGEwMzUwMTMsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZmE5MSwgMHg0YTAzNTAxNCwgMHgwMDAwMDAwZSwKLQkweDA0MDFmMDAzLCAweDFjMDFmMDAwLCAweDA0MDFmMmIxLCAweDQ4MDNjODU2LAotCTB4ODIwNDBkNDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDQwYjksCi0JMHg0YTAzNTAxNCwgMHgwMDAwMDAwZiwgMHg0OTdiNTAxNiwgMHg0MjAwNjAwMCwKLQkweGZmZmZmZmZmLCAweDQyMDA2ODAwLCAweDAwMzAwMDAwLCAweDA0MDFmYmZlLAotCTB4NDIwMDYwMDAsIDB4ZmZkZmZmZmYsIDB4NDE3ODY4MDAsIDB4MDQwMWZiZmEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDdkMCwgMHg0MjAwMTAwMCwgMHgwMDEwM2Y2MiwKLQkweDAyMDFmMDAwLCAweDAwMTA1Y2EyLCAweDQ4MDNjODU2LCAweDU5YTgwMDE2LAotCTB4ODAwMDA1NDAsIDB4MDQwMjAyOTYsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg0YTAzNTAxNCwgMHgwMDAwMDAxMSwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwKLQkweDQyMDBhODAwLCAweDAwMTBiMzUwLCAweDQyMDBiMDAwLCAweDAwMDAwMDA1LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NDIwMGE4MDAsIDB4MDAxMGIzNTAsCi0JMHg0NjAwYTgwMCwgMHgxMTAyMDAwMCwgMHgwNDAxZmE4YSwgMHgwNDAyMDAxNSwKLQkweDU5YTgwMDEwLCAweDgyMDAwZDAwLCAweGZmZmYwMDAwLCAweDA0MDAwMDExLAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4MDQwMDAwMGUsIDB4ODIwMDBjMDAsCi0JMHgwMDEwMWViNSwgMHg1MDA0MDgwMCwgMHg4MDA0MDkxMCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDdlLCAweDA0MDAwMDA3LCAweDgyMDQwNTgwLCAweDAwMDAwMDgwLAotCTB4MDQwMDAwMDQsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDQsIDB4MDQwMWZhMDcsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjJhOCwgMHg1OWE4MDAxNiwKLQkweDgwMDAwNTQwLCAweDA0MDAwMDIwLCAweDQ4MDNjODU3LCAweDQyMDAxMDAwLAotCTB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYzksIDB4NTlhODAwMTYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAxNCwgMHgwNDAyMDAxNiwgMHg1OWNjMTAwNiwKLQkweDgyMDgxNTgwLCAweDExMDMwMDAwLCAweDA0MDIwMDEyLCAweDU5Y2MxMDA3LAotCTB4OGMwODE1M2UsIDB4MDQwMDAwMGIsIDB4NTlhODAwMTUsIDB4OGMwMDA1MDQsCi0JMHgwNDAyMDAwOCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDU5YTgwMDE1LCAweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LAotCTB4NGEwMzUwMTQsIDB4MDAwMDAwMTIsIDB4MDQwMWY4MDQsIDB4MDQwMWYwMDIsCi0JMHgwNDAxZmE0YiwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0YTAzNTAxNCwKLQkweDAwMDAwMDEzLCAweDgzY2NhNDAwLCAweDAwMDAwMDA2LCAweDQyMDBhODAwLAotCTB4MDAxMGIzNTAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHg0MjAwYTgwMCwgMHgwMDEwYjM1MCwgMHg0NjAwYTgwMCwKLQkweDExMDMwMDAwLCAweDA0MDFmYTNmLCAweDA0MDIwMDEzLCAweDU5YTgwMDE1LAotCTB4OGMwMDA1MDAsIDB4MDQwMjAwMTAsIDB4NTlhODA4MTAsIDB4ODIwNDA1ODAsCi0JMHgwMGZmZmZmZiwgMHgwNDAwMDAwYywgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDQwNDAwLCAweDAwMTAxZWI1LCAweDUwMDAwODAwLCAweDgwMDQwOTEwLAotCTB4NDIwMDEwMDAsIDB4MDAwMDAwMDQsIDB4MDQwMWY5YzAsIDB4MDQwMDAwMDIsCi0JMHgwNDAxZmIxMSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjI1ZiwKLQkweDU5YTgwMDE2LCAweDgwMDAwNTQwLCAweDA0MDAwMDIwLCAweDQ4MDNjODU3LAotCTB4NDIwMDEwMDAsIDB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYzksCi0JMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxNCwgMHgwNDAyMDAxNiwKLQkweDU5Y2MxMDA2LCAweDgyMDgxNTgwLCAweDExMDQwMDAwLCAweDA0MDIwMDEyLAotCTB4NTljYzEwMDcsIDB4OGMwODE1M2UsIDB4MDQwMDAwMGIsIDB4NTlhODAwMTUsCi0JMHg4YzAwMDUwNCwgMHgwNDAyMDAwOCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzZCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDU5YTgwMDE1LCAweDg0MDAwNTQ0LAotCTB4NDgwMzUwMTUsIDB4NGEwMzUwMTQsIDB4MDAwMDAwMTQsIDB4MDQwMWY4MDQsCi0JMHgwNDAxZjAwMiwgMHgwNDAxZmEwMiwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDRhMDM1MDE0LCAweDAwMDAwMDE1LCAweDgzY2NhNDAwLCAweDAwMDAwMDA2LAotCTB4NDIwMGE4MDAsIDB4MDAxMGIzNTAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg0MjAwYTgwMCwgMHgwMDEwYjM1MCwKLQkweDQ2MDBhODAwLCAweDExMDQwMDAwLCAweDA0MDFmOWY2LCAweDA0MDIwMDIwLAotCTB4NTlhODAwMTUsIDB4OGMwMDA1MDAsIDB4MDQwMjAwMWQsIDB4NTk5YzAwMTcsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAxYSwgMHg1OTljMTQwMiwgMHg4MjA4MDQ4MCwKLQkweDAwMDAwMDdmLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDRjMDgwMDAwLAotCTB4ODIwODE0MDAsIDB4MDAxMDFlYjUsIDB4NTAwODEwMDAsIDB4ODIwODE1MDAsCi0JMHgwMDAwMDBmZiwgMHg0ODBiNTAxMCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywKLQkweDAyMDFmODAwLCAweDAwMTA2OWFmLCAweDVjMDAwODAwLCAweDQyMDAxMDAwLAotCTB4MDAwMDAwMDQsIDB4MDQwMWY5NmQsIDB4MDQwMDAwMDUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzhkOCwgMHgwMjAyMDgwMCwgMHgwMDEwMTY2OCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA1LCAweDA0MDFmMjA5LCAweDU5YTgwMDE2LCAweDgwMDAwNTQwLAotCTB4MDQwMDAwM2YsIDB4NDgwM2M4NTcsIDB4NDIwMDEwMDAsIDB4MDAxMDNmNjIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWNjOSwgMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDE0LCAweDA0MDIwMDM1LCAweDU5Y2MxMDA2LCAweDgyMDgwNTAwLAotCTB4MTEwNTAwMDAsIDB4ODIwMDA1ODAsIDB4MTEwNTAwMDAsIDB4MDQwMjAwMmYsCi0JMHg4YzA4MTUxMCwgMHgwNDAwMDAxMCwgMHgwNDAxZmIxZiwgMHg1OWNjMTAwNywKLQkweDhjMDgxNTNlLCAweDA0MDAwMDBiLCAweDU5YTgwMDE1LCAweDhjMDAwNTA0LAotCTB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsIDB4MDAxMGI2M2QsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwgMHg4NDAwMDU0NCwgMHg0ODAzNTAxNSwKLQkweDA0MDFmMDEzLCAweDU5Y2MxMDA3LCAweDhjMDgxNTNlLCAweDA0MDAwMDBiLAotCTB4NTlhODAwMTUsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMDgsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYzZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OWE4MDAxNSwKLQkweDg0MDAwNTQ0LCAweDQ4MDM1MDE1LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MDQwMWZiMDEsIDB4NDk3YjUwMTMsIDB4MDQwMWYwMDMsIDB4NGEwMzUwMTMsCi0JMHgwMDAwMDAwMSwgMHg1OWNjMTAwNywgMHg4YzA4MTUzYywgMHgwNDAwMDAwMywKLQkweDRhMDM1MDI2LCAweDAwMDAwMDA4LCAweDRhMDM1MDE0LCAweDAwMDAwMDE2LAotCTB4MDQwMWY4MDQsIDB4MDQwMWYwMDIsIDB4MDQwMWY5OGQsIDB4MWMwMWYwMDAsCi0JMHg0ODAzYzg1NiwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwgMHg0MjAwYTgwMCwKLQkweDAwMTBiMzUwLCAweDQyMDBiMDAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLAotCTB4MDAxMGE5M2UsIDB4NGEwMzUwMTQsIDB4MDAwMDAwMTcsIDB4NTlhODAwMTMsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDAwNiwgMHg0MjAwMTAwMCwgMHgwMDEwYjM1MCwKLQkweDQ2MDAxMDAwLCAweDExMDUwMTAwLCAweDA0MDFmMDAzLCAweDRhMDM1MDE0LAotCTB4MDAwMDAwMWIsIDB4MDQwMWY5N2IsIDB4MDQwMjAwMGEsIDB4NTlhODAwMTUsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDAwNywgMHgwNDAxZjg5NiwgMHgwNDAyMDAwNSwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTAxNjY4LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4MDQwMWY5YTQsIDB4NGQzYzAwMDAsCi0JMHg0MjAyNzgwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwOTY0MCwKLQkweDVjMDI3ODAwLCAweDFjMDFmMDAwLCAweDU5YTgwMDE2LCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMTUsIDB4NDgwM2M4NTcsIDB4NDIwMDEwMDAsIDB4MDAxMDNmNjIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWNjOSwgMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDg0LCAweDA0MDIwMDBiLCAweDU5Y2MxMDA2LCAweDgyMDgxNTgwLAotCTB4MTEwNjAwMDAsIDB4MDQwMjAwMDcsIDB4ODAwMDA1ODAsIDB4MDQwMWZhYjYsCi0JMHg0YTAzNTAxNCwgMHgwMDAwMDAxOCwgMHgwNDAxZjgwNCwgMHgwNDAxZjAwMiwKLQkweDA0MDFmOTRiLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRhMDM1MDE0LAotCTB4MDAwMDAwMTksIDB4ODNjY2E0MDAsIDB4MDAwMDAwMDYsIDB4NDIwMGE4MDAsCi0JMHgwMDEwYjM1MCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAyMSwgMHgwMjAxZjgwMCwKLQkweDAwMTBhOTNlLCAweDQyMDAzODAwLCAweDAwMTBiMzUxLCAweDA0MDFmOTQxLAotCTB4MDQwMjAwMTgsIDB4NDAxYzI4MDAsIDB4NTAxNDEwMDAsIDB4ODAwODAxMzAsCi0JMHg4MDAwMDAwMCwgMHg0MDAwMTgwMCwgMHg4MjA4MTUwMCwgMHgwMGZmZmZmZiwKLQkweDgwMDAwMGYwLCAweDgwMDgwNTQwLCAweDQ0MDAyODAwLCAweDU5YTgwODEwLAotCTB4ODIwNDBkMDAsIDB4MDAwMDAwZmYsIDB4NDAwYzEwMDAsIDB4ODAwODExMDQsCi0JMHg4MjA4MjQwMCwgMHgwMDEwYjM1MSwgMHg1MDEwMTAwMCwgMHg4MjBjMDUwMCwKLQkweDAwMDAwMDAzLCAweDBjMDFmODA2LCAweDgwMDgxNTQwLCAweDQ0MDgyMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMjEsIDB4MDQwMWYxNWMsIDB4MDAxMDNlMzcsCi0JMHgwMDEwM2UzYywgMHgwMDEwM2U0MSwgMHgwMDEwM2U0NiwgMHg4MDA0MDhmMCwKLQkweDQwMDQwMDAwLCAweDgyMDgxNTAwLCAweDAwZmZmZmZmLCAweDFjMDFmMDAwLAotCTB4ODAwNDA4ZTAsIDB4NDAwNDAwMDAsIDB4ODIwODE1MDAsIDB4ZmYwMGZmZmYsCi0JMHgxYzAxZjAwMCwgMHg4MDA0MDhkMCwgMHg0MDA0MDAwMCwgMHg4MjA4MTUwMCwKLQkweGZmZmYwMGZmLCAweDFjMDFmMDAwLCAweDQwMDQwMDAwLCAweDgyMDgxNTAwLAotCTB4ZmZmZmZmMDAsIDB4MWMwMWYwMDAsIDB4NTlhODAwMTYsIDB4ODAwMDA1NDAsCi0JMHgwNDAwMDAxNiwgMHg0ODAzYzg1NywgMHg0MjAwMTAwMCwgMHgwMDEwM2Y2MiwKLQkweDAyMDFmODAwLCAweDAwMTA1Y2M5LCAweDU5YTgwMDE2LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwODQsIDB4MDQwMjAwMGMsIDB4NTljYzEwMDYsIDB4ODIwODE1ODAsCi0JMHgxMTA3MDAwMCwgMHgwNDAyMDAwOCwgMHg0YTAzNTAxMywgMHgwMDAwMDAwMSwKLQkweDA0MDFmOGQyLCAweDRhMDM1MDE0LCAweDAwMDAwMDFhLCAweDA0MDFmODA0LAotCTB4MDQwMWYwMDIsIDB4MDQwMWY4ZjIsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZmE1NCwgMHg0YTAzNTAxNCwgMHgwMDAwMDAxYiwKLQkweDgzY2NhNDAwLCAweDAwMDAwMDA2LCAweDQyMDBhODAwLCAweDAwMTBiMzUwLAotCTB4NTlhODIwMTYsIDB4NDAxMDAwMDAsIDB4ODAwMGIxMDQsIDB4NDA1ODA4MDAsCi0JMHg1NDUwYTgwMCwgMHg4MDUwYTAwMCwgMHg4MDU0YTgwMCwgMHg4MDU4YjA0MCwKLQkweDA0MDIwN2ZjLCAweDA0MDFmMTE5LCAweDFjMDFmMDAwLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDQsIDB4NDIwMDQwMDAsCi0JMHgwMDEwYjM1MSwgMHg1OTljMjgxNywgMHg4YzE0MmQxNCwgMHgwNDAyMDAxZiwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDAzLCAweDQwMjAwMDAwLCAweDgwMDgwNDAwLAotCTB4NTAwMDA4MDAsIDB4ODIwNDI1ODAsIDB4ZmZmZmZmZmYsIDB4MDQwMjAwMDUsCi0JMHg4MDA4MTA0MCwgMHg4MDE4MzA0MCwgMHgwNDAyMDdmOCwgMHgwNDAxZjA1ZSwKLQkweDgwMDgxMWMwLCAweDA0MDIwMDA2LCAweDgyMDQyNTgwLCAweDNmZmZmZmZmLAotCTB4MDQwMDAwNTgsIDB4ODIwNDBkNDAsIDB4YzAwMDAwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAyMCwgMHg0MjAwMTgwMCwgMHgwMDAwMDAwMSwgMHg0MDA0MjAwMCwKLQkweDgwMTAyMTAyLCAweDA0MDIxMDIxLCAweDgwMGMxOGMyLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZmMsIDB4MDQwMWYwNGIsIDB4NDE3ODEwMDAsIDB4NDAyMDAwMDAsCi0JMHg4MDA4MDQwMCwgMHg1MDAwMDgwMCwgMHg4MjA0MjU4MCwgMHhmZmZmZmZmZiwKLQkweDA0MDIwMDA1LCAweDgwMDgxMDAwLCAweDgwMTgzMDQwLCAweDA0MDIwN2Y4LAotCTB4MDQwMWYwNDAsIDB4ODAwODExYzAsIDB4MDQwMjAwMDMsIDB4ODIwNDBkNDAsCi0JMHhjMDAwMDAwMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMSwgMHg0MjAwMTgwMCwKLQkweDgwMDAwMDAwLCAweDQwMDQyMDAwLCAweDgwMTAyMGMyLCAweDA0MDIxMDA3LAotCTB4ODAwYzE5MDIsIDB4ODA1OGIwMDAsIDB4ODI1ODA0ODAsIDB4MDAwMDAwMjEsCi0JMHgwNDAwMTdmYSwgMHgwNDAxZjAyZiwgMHg0MDIwMDAwMCwgMHg4MDA4MjQwMCwKLQkweDUwMTAwMDAwLCAweDgwMGMwNTQwLCAweDQ0MDAyMDAwLCAweDU5YTgwMDE1LAotCTB4ODQwMDA1NDAsIDB4NDgwMzUwMTUsIDB4NDA1ODAwMDAsIDB4NDIwMDI4MDAsCi0JMHgwMDAwMDAyMCwgMHg4MDE0MmM4MCwgMHg0MDA4MDAwMCwgMHg0MjAwMzgwMCwKLQkweDAwMDAwMDAzLCAweDgwMWMwNDgwLCAweDgwMDAwMGNhLCAweDgwMTQyZDQwLAotCTB4ODIxNDRjMDAsIDB4MDAxMDFlYjUsIDB4NTAyNDI4MDAsIDB4ODIxNDJkMDAsCi0JMHgwMDAwMDBmZiwgMHg0ODE3NTAxMCwgMHg0YzA0MDAwMCwgMHg0MDE0MDgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxNjU1LCAweDVjMDAwODAwLCAweDQwMDAxODAwLAotCTB4NTAwYzAwMDAsIDB4ODAxMDA1NDAsIDB4NDQwMDE4MDAsIDB4NTlhODAwMTUsCi0JMHg4NDAwMDU0MCwgMHg0ODAzNTAxNSwgMHg0MjAwYTgwMCwgMHgwMDEwYjM1MSwKLQkweDQwMjBhMDAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMGE5M2UsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDIsCi0JMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NywgMHg0ODBiYzg1NywKLQkweDQwMDhiMDAwLCAweDgzY2NhNDAwLCAweDAwMDAwMDA3LCAweDQyMDBhODAwLAotCTB4MDAxMGIzNTEsIDB4NDA1NDEwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsCi0JMHg0MDA0MTgwMCwgMHg0MTc4MjAwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwMywKLQkweDgyMGMxYzgwLCAweDAwMDAwMDIwLCAweDA0MDAxMDA0LCAweDgwMTAyMDAwLAotCTB4ODAwMDAwNDAsIDB4MDQwMWY3ZmIsIDB4NDAwNDE4MDAsIDB4ODAxMDIxYzAsCi0JMHgwNDAwMDAwNSwgMHg4MjBjMWM4MCwgMHgwMDAwMDAyMCwgMHg4MDEwMjA0MCwKLQkweDA0MDIwN2ZkLCAweDQyMDAyMDAwLCAweDAwMDAwMDAxLCAweDgwMGMxOWMwLAotCTB4MDQwMDAwMDQsIDB4ODAxMDIwYzIsIDB4ODAwYzE4NDAsIDB4MDQwMjA3ZmUsCi0JMHg4MDA4M2MwMCwgMHg4M2NjMmMwMCwgMHgwMDAwMDAwNywgMHg4MDE0MmMwMCwKLQkweDUwMTQwMDAwLCAweDgwMTAyZDAwLCAweDA0MDIwMDEyLCAweDgwMTAwNTQwLAotCTB4NDQwMDM4MDAsIDB4ODIwNDI0MDAsIDB4MDAxMDFlYjUsIDB4NTAxMDI4MDAsCi0JMHg4MjE0MmQwMCwgMHgwMDAwMDBmZiwgMHg0ODE3NTAxMCwgMHg0YzA0MDAwMCwKLQkweDQwMTQwODAwLCAweDAyMDFmODAwLCAweDAwMTAxNjU1LCAweDVjMDAwODAwLAotCTB4NTlhODAwMTUsIDB4ODQwMDA1NDAsIDB4NDgwMzUwMTUsIDB4ODAwMDA1ODAsCi0JMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwgMHg0MjAwMTAwMCwgMHgwMDAwODAxNywKLQkweDU5YTgxODRlLCAweDAyMDFmODAwLCAweDAwMTBhODc2LCAweDAyMDFmODAwLAotCTB4MDAxMDM4NTcsIDB4MWMwMWYwMDAsIDB4NDgwN2M4NTYsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAyMCwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNywgMHg0MjAwYTgwMCwKLQkweDAwMTBiYzIwLCAweDAyMDFmMDAwLCAweDAwMTBhOTRmLCAweDQ4MDdjODU2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDZjMzIsIDB4NDIwMDA4MDAsIDB4MDAwMDAwZjcsCi0JMHgwNDAxZjhmNCwgMHg0OTdiMjgwNCwgMHg0OTdiMjgwNSwgMHg0OTdiMjgxYywKLQkweDQ5N2IyODFkLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLCAweDQyMDA2MDAwLAotCTB4YmY3ZmZmZmYsIDB4NDIwMDY4MDAsIDB4MDAwMTgwMDAsIDB4MDQwMWY5NjYsCi0JMHg0MjAwNjAwMCwgMHhmZmZlZmZmZiwgMHg0MTc4NjgwMCwgMHgwNDAxZjk2MiwKLQkweDQ5N2I1MDRlLCAweDQyMDAwODAwLCAweDAwMDAwMDJkLCAweDQyMDAxMDAwLAotCTB4MDAxMDNmZTQsIDB4MDIwMWYwMDAsIDB4MDAxMDVjYTIsIDB4NDgwN2M4NTYsCi0JMHgwNDAxZmZlMywgMHg0OTdiNTAxNCwgMHg0OTdiNTAxNiwgMHgxYzAxZjAwMCwKLQkweDQ4MDdjODU2LCAweDU5YTgwMDA1LCAweDhjMDAwNTA2LCAweDFjMDFmMDAwLAotCTB4NDgwN2M4NTYsIDB4NDIwMDYwMDAsIDB4ZmZmZmZmZmYsIDB4NDIwMDY4MDAsCi0JMHgwMDAwMDAyOCwgMHgwNDAxZjE0YywgMHg0ODA3Yzg1NiwgMHgwNDAxZmZjMiwKLQkweDAyMDFmODAwLCAweDAwMTA2OThjLCAweDRkZjAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDZiNzEsIDB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsCi0JMHg1OWM0MDBhNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDIwMDBhLCAweDQyMDA2MDAwLCAweGZmZmZmZmZmLAotCTB4NDIwMDY4MDAsIDB4MDAyMDAwMDAsIDB4MDQwMWY5MzcsIDB4NDIwMDYwMDAsCi0JMHhmZmRmZmZmZiwgMHg0MTc4NjgwMCwgMHgwNDAxZjkzMywgMHg0OTdiNTAxNCwKLQkweDQyMDAwODAwLCAweDAwMDAwMGY3LCAweDA0MDFmOGIyLCAweDU5YzQwMGEzLAotCTB4ODIwMDA1MDAsIDB4YmYyMGJmZmYsIDB4ODIwMDA1NDAsIDB4MDAwMWMwMDAsCi0JMHg0ODAzODhhMywgMHg4NDAwMDUyMCwgMHg0ODAzODhhMywgMHg0OTdiNTA0ZSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDJkLCAweDQyMDAxMDAwLCAweDAwMTAzZmU0LAotCTB4MDIwMWYwMDAsIDB4MDAxMDVjYTIsIDB4NDk3YjUwMTYsIDB4NTliNDAwZjUsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDAwNCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDQ4MDM2OGY1LCAweDgwMDQwMGM0LCAweDgyMDAwNDAwLCAweDAwMDAyMDAwLAotCTB4NDgwMzkxMGEsIDB4NTliNDAwZjYsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMTgsCi0JMHgwNDAyMDdmZCwgMHg0YTAzNjhmMCwgMHgwMDEwYjM0OSwgMHg0MjAwMDAwMCwKLQkweDAwMTBiMzUwLCAweDRjMDQwMDAwLCAweDUwMDAwODAwLCAweDgyMDQwZDgwLAotCTB4MTEwMTAwMDAsIDB4MDQwMDAwMDMsIDB4NTAwMDA4MDAsIDB4NDgwN2M4NTcsCi0JMHg1YzAwMDgwMCwgMHg0ODAzNjhmMSwgMHg4MjA0MDQwMCwgMHgwMDAwZGMwMCwKLQkweDQ4MDM2OGYzLCAweDU5YzQwMGE0LCAweDgyMDAwNTAwLCAweDAwMDAwMDBmLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDgsIDB4MDQwMjAwMTcsIDB4NGM1YzAwMDAsCi0JMHg0YzYwMDAwMCwgMHg1OWM0YjgwNSwgMHg4YzVjYmQzYSwgMHgwNDAyMDAwNSwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjE2LCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NGEwMzg4MDUsIDB4MDIwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFhNTksCi0JMHg0MDAwYzAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlkMCwgMHg0MjAyZDgwMCwKLQkweDAwMDAwMDAxLCAweDQ5N2I1MDE0LCAweDVjMDBjMDAwLCAweDVjMDBiODAwLAotCTB4MWMwMWYwMDAsIDB4NTljODAxMGIsIDB4OGMwMDA1MDIsIDB4MDQwMDA3ZTIsCi0JMHg1OWM0MDhhNCwgMHg4MjA0MGQwMCwgMHgwMDAwMDAwZiwgMHg4MjA0MGQ4MCwKLQkweDAwMDAwMDBiLCAweDA0MDIwMDA1LCAweDU5YTgwODE0LCAweDgyMDQwZDQwLAotCTB4MDAwMDIwMDAsIDB4MDQwMWYwMDQsIDB4NTlhODA4MTIsIDB4ODIwNDBkNDAsCi0JMHgwMDAwMTAwMCwgMHg0ODA3NTA0ZSwgMHg1OWE4MDg0YSwgMHg4MDA0MDljMCwKLQkweDA0MDIwMDA3LCAweDQyMDAwODAwLCAweDAwMDAwN2QwLCAweDQyMDAxMDAwLAotCTB4MDAxMDNmNjIsIDB4MDIwMWY4MDAsIDB4MDAxMDVkYTcsIDB4MWMwMWYwMDAsCi0JMHg0ODA3Yzg1NiwgMHgwNDAxZmY0MCwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywKLQkweDRkZjAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA2YjcxLCAweDVjMDNlMDAwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4NTljNDAwYTQsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAyMDAwYSwKLQkweDQyMDA2MDAwLCAweGZmZmZmZmZmLCAweDQyMDA2ODAwLCAweDAwMjAwMDAwLAotCTB4MDQwMWY4YjUsIDB4NDIwMDYwMDAsIDB4ZmZkZmZmZmYsIDB4NDE3ODY4MDAsCi0JMHgwNDAxZjhiMSwgMHgwMjAxZjgwMCwgMHgwMDEwNGUxMywgMHgwNDAwMDAxNCwKLQkweDAyMDFmODAwLCAweDAwMTA0ZTIzLCAweDA0MDIwMDExLCAweDRhMDM1MDMyLAotCTB4MDAwMGFhYWEsIDB4NGMwNDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE2OTQsCi0JMHg1OWE4MDAyYSwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MDA0MDU0MCwKLQkweDQ4MDM1MDJhLCAweDVjMDAwODAwLCAweDRhMDM1MDMzLCAweDAwMDAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDRkNzYsIDB4MDQwMWYwMDgsIDB4NGEwMzUwNGMsCi0JMHgwMDAwMDAwNSwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwKLQkweDAwMTAxNWZhLCAweDA0MDFmZjFlLCAweDFjMDFmMDAwLCAweDA0MDFmODA5LAotCTB4NDIwMDYwMDAsIDB4YmY3ZjdmZmYsIDB4NDE3ODY4MDAsIDB4MDQwMWYwOGUsCi0JMHg0MjAwNjAwMCwgMHhiZjdmN2ZmZiwgMHg0MTc4NjgwMCwgMHgwNDAxZjA4YSwKLQkweDAyMDFmODAwLCAweDAwMTA0ZTIzLCAweDA0MDIwMDA5LCAweDU5YzQwMDA2LAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwZjAsIDB4NDgwMzg4MDYsIDB4NDIwMDYwMDAsCi0JMHhiZmZmZmZmZiwgMHg0MTc4NjgwMCwgMHgwNDAxZjg3ZiwgMHgxYzAxZjAwMCwKLQkweDgwMDQwOGQwLCAweDU5YTgwMDE1LCAweDhjMDAwNTA2LCAweDA0MDAwMDA2LAotCTB4NTlhODAwMTAsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODAwNDA1NDAsCi0JMHgwNDAxZjAwMywgMHg4MjA0MDU0MCwgMHgwMDAwMDBmNywgMHg0ODAzODhhNywKLQkweDFjMDFmMDAwLCAweDQ4MDdjODU2LCAweDQyMDAwMDAwLCAweDAwMTBiNjM5LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDUsCi0JMHg0ZDNjMDAwMCwgMHg0YzE4MDAwMCwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwZCwKLQkweDQyMDI3ODAwLCAweDAwMDAwMDAyLCAweDA0MDFmMDM4LCAweDQ4MDdjODU2LAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NmEsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAwMCwgMHg0ZDNjMDAwMCwgMHg0YzE4MDAwMCwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDBmLCAweDQyMDI3ODAwLCAweDAwMDAwMDAyLAotCTB4MDQwMWYwMmEsIDB4NDgwN2M4NTYsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjksCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwMywKLQkweDRkM2MwMDAwLCAweDRjMTgwMDAwLCAweDQyMDAzMDAwLCAweDAwMDAwMDBlLAotCTB4NDIwMjc4MDAsIDB4MDAwMDAyMDIsIDB4MDQwMWYwMWMsIDB4NDgwN2M4NTYsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY2OCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDA0LCAweDRkM2MwMDAwLCAweDRjMTgwMDAwLAotCTB4NDIwMDMwMDAsIDB4MDAwMDAwMTAsIDB4NDIwMjc4MDAsIDB4MDAwMDAyMDIsCi0JMHgwNDAxZjAwZSwgMHg0ODA3Yzg1NiwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzYywKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQyMDAzMDAwLCAweDAwMDAwMDAxLAotCTB4NGQzYzAwMDAsIDB4NGMxODAwMDAsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMGMsCi0JMHg0MjAyNzgwMCwgMHgwMDAwMDIwMiwgMHg0MjAwMTgwMCwgMHgwMDAwZmZmZiwKLQkweDQyMDAyMDAwLCAweDAwMDAwMDA3LCAweDAyMDFmODAwLCAweDAwMTAzOGM3LAotCTB4NWMwMDMwMDAsIDB4NGQ0MDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMGE3ODQsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAyYSwgMHgwMjAxZjgwMCwgMHgwMDEwMWQ5MCwKLQkweDVjMDI4MDAwLCAweDVjMDI3ODAwLCAweDFjMDFmMDAwLCAweDQ4MDdjODU2LAotCTB4MDQwMTEwMDAsIDB4NGEwM2M4NDAsIDB4MDAxMGIzNDksIDB4NGEwM2M4NDIsCi0JMHgwMDAwMDA0MCwgMHg0MDAwMDAwMCwgMHgwNDAxMTdmZiwgMHg0MjAwNzgwMCwKLQkweDAwMTBiMzQ5LCAweDQ2MDA3ODAwLCAweDAwMDAwMDExLCAweDgwM2M3ODAwLAotCTB4NGEwMDc4MDAsIDB4MjIwMDAwZWYsIDB4NGEwMDc4MDEsIDB4MDAwMDAwZWYsCi0JMHg0YTAwNzgwMiwgMHgwMTM4MDAwMCwgMHg0YTAwNzgwMywgMHgwMDAwMDAwMCwKLQkweDRhMDA3ODA0LCAweGZmZmZmZmZmLCAweDRhMDA3ODA1LCAweDAwMDAwMDAwLAotCTB4MWMwMWYwMDAsIDB4NTljNDAwYTMsIDB4ODAzMDA1MDAsIDB4ODAzNDA1NDAsCi0JMHg0ODAzODhhMywgMHgxYzAxZjAwMCwgMHg0ODMzYzg1NywgMHg1OWM0MDBhMywKLQkweDgwMzAwNTQwLCAweDQ4MDM4OGEzLCAweDgwMzAwNTgwLCAweDQ4MDM4OGEzLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4MDQwMDAwMDQsIDB4NGEwMzUwNGIsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwMiwgMHg0OTdiNTA0YiwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDU5YzgwMDAyLCAweDgwMDAwNTQwLCAweDA0MDAwMDBhLAotCTB4ODAwMDAwNDAsIDB4MDQwMDAwMDgsIDB4NGEwMzkwMDUsIDB4MDAwMDAxNDAsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwNiwgMHg4MDAwMDA0MCwgMHgwNDAyMDdmZiwKLQkweDA0MDFmN2Y0LCAweDFjMDFmMDAwLCAweDRjNWMwMDAwLCAweDRjNjAwMDAwLAotCTB4NTljNGI4MDUsIDB4NDg1ZmM4NTYsIDB4OGM1Y2JkM2EsIDB4MDQwMjAwMDUsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjYxNiwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDRhMDM4ODA1LCAweDAyMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAxYTU5LAotCTB4NDAwMGMwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5ZDAsIDB4NGEwMzg4MDUsCi0JMHgwNDAwMDAwMCwgMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5N2E2YTAwLCAweDRhMDI2YzAwLCAweDAwMDAwNzA3LCAweDQ5N2E2ODAxLAotCTB4NDk3YTY4MDgsIDB4NDk3YTY4MDksIDB4NDk3YTY4MDYsIDB4NDk3YTY4MDcsCi0JMHg0OTdhNmMwYiwgMHg0OTdhNjgwYywgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDIwMDA2LCAweDU5MzQwODBmLCAweDU5MzQwMDEwLCAweDgwMDQwNTQwLAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NGEwMjZhMDQsIDB4MDAwMDAxMDAsCi0JMHg0OTdhNmEwMywgMHg1OTM0MDQwMiwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDQ4MDI2YzAyLCAweDQ5N2E2YzA0LCAweDQ5N2E2YTA1LCAweDQ5N2E2YzA1LAotCTB4NDk3YTY4MTEsIDB4NGQyYzAwMDAsIDB4NTkzNDAwMGQsIDB4NDk0NjZjMDMsCi0JMHg4MDAyNWQ0MCwgMHgwNDAwMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywKLQkweDQ5N2E2ODBkLCAweDVjMDI1ODAwLCAweDU5OWMwNDAxLCAweDQ4MDI2YTBiLAotCTB4NTk5YzAyMDgsIDB4NDgwMjZjMTIsIDB4NGEwMjY4MGEsIDB4MDAwMDYwMDAsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNGFjZiwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwNSwKLQkweDgwMDAwZDgwLCAweDA0MDFmMDJkLCAweDAyMDFmODAwLCAweDAwMTA0ODU4LAotCTB4MDQwMjAwMTcsIDB4NTlhODAwMjYsIDB4OGMwMDA1MGEsIDB4MDQwMjAwMTAsCi0JMHg1OTM0MDIxMiwgMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwgMHg0ODAzYzg1NywKLQkweDA0MDAwMDBiLCAweDU5MzQwYTAwLCAweDhjMDQwZDFlLCAweDAyMDAwMDAwLAotCTB4MDAwMjAxZjgsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMjksIDB4NDIwMDA4MDAsCi0JMHgwMDAwMTAwMCwgMHg0OTJmYzg1NywgMHgwNDAxZjAxOCwgMHg0OTJmYzg1NywKLQkweDQyMDAwMDAwLCAweDAwMDAwMDI4LCAweDA0MDFmMDEyLCAweDU5YTgwODA1LAotCTB4OGMwNDBkMDIsIDB4MDQwMjAwMDMsIDB4OGMwNDBkMDAsIDB4MDQwMDAwMDQsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwNCwgMHgwNDAxZjAwYSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDI5LCAweDU5MzQwYTAwLCAweDhjMDQwZDFlLCAweDA0MDAwMDA1LAotCTB4NDkyZmM4NTcsIDB4NDIwMDA4MDAsIDB4MDAwMDEwMDAsIDB4MDQwMWYwMDMsCi0JMHg0OTJmYzg1NywgMHg4MDAwMGQ4MCwgMHg0ODAzYzg1NywgMHg4MDAyODU0MCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU3LCAweDU5YTgwMDA1LCAweDhjMDAwNTAwLAotCTB4MDQwMjA3ZWMsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4MzYsIDB4MDQwMjA3ZTQsCi0JMHg1OTM0MDIwMCwgMHg4YzAwMDUwZSwgMHgwNDAwMDdlMSwgMHgwMjAxZjAwMCwKLQkweDAwMDIwMWY4LCAweDAyMDFmODAwLCAweDAwMTA0NjM5LCAweDA0MDAwN2JmLAotCTB4MDIwMWYwMDAsIDB4MDAwMjAxZmMsIDB4NTkyYzAyMDYsIDB4NDkyZmM4NTcsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDdmZiwgMHgwNDAyMDAwNiwgMHg0YTAyNWMwYSwKLQkweDAwMDAwMDMwLCAweDQyMDI2ODAwLCAweDAwMTBiMzIwLCAweDA0MDFmMDIxLAotCTB4ODIwMDBjODAsIDB4MDAwMDA3ZjAsIDB4MDQwMjEwNDYsIDB4ODFhYzA0MDAsCi0JMHg1MDAwMDAwMCwgMHg4MDAyNmQ0MCwgMHgwNDAwMDAzOCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0NzMyLCAweDA0MDIwMDM4LCAweDU5MmMwNDBhLCAweDhjMDAwNTBhLAotCTB4MDQwMjAwMTQsIDB4NTkyZTYwMDksIDB4ODMzMDA0ODAsIDB4MDAxMGNmYzAsCi0JMHgwNDAwMTAzYiwgMHg0MTU4MDAwMCwgMHg4MTMwMDQ4MCwgMHgwNDAyMTAzOCwKLQkweDU5MzAwYzA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDA5LCAweDA0MDIwMDM3LAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMDAsIDB4NDk3YTU4MDAsIDB4NTkzMDAwMDgsCi0JMHg4MDAwMDU0MCwgMHgwNDAyMDAxOCwgMHg0OTJlNjAwOCwgMHgwNDAxZjAxMCwKLQkweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDA0MDAwMDE5LCAweDU5MmMwMjA2LAotCTB4NDkzNjYwMDksIDB4NDkyZTYwMDgsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDksCi0JMHg0OTdhNjAxNSwgMHg0OTMyNTgwOSwgMHg4MjAwMGQ4MCwgMHgwMDAwMDdmZiwKLQkweDA0MDIwMDAzLCAweDRhMDI2MDE1LCAweDAwMDA4MDAwLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNDMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4ODAwMDA1ODAsCi0JMHgwNDAxZjAyMCwgMHg0MDAwMDgwMCwgMHg1ODA0MDAwMCwgMHg4MDAwMGQ0MCwKLQkweDA0MDIwN2ZkLCAweDQ5MmMwODAwLCAweDA0MDFmMDFhLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMmMsIDB4MDQwMWYwMTYsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMjgsCi0JMHgwNDAxZjAxMywgMHg1OWE4MDgwNSwgMHg4MjA0MDUwMCwgMHgwMDAwMDAwMywKLQkweDA0MDAwMDA0LCAweDQyMDAwMDAwLCAweDAwMDAwMDA0LCAweDA0MDFmMDBjLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMjksIDB4MDQwMWYwMDksIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwOCwgMHgwNDAxZjAwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNywKLQkweDA0MDIwN2ZiLCAweDQyMDAwMDAwLCAweDAwMDAwMDA1LCAweDgwMDAwNTQwLAotCTB4MWMwMWYwMDAsIDB4NDkyZmM4NTcsIDB4NTkyZThjMDYsIDB4ODM0NDBkODAsCi0JMHgwMDAwMDdmYywgMHgwNDAwMDAwNCwgMHg4MzQ0MDQ4MCwgMHgwMDAwMDdmMCwKLQkweDA0MDIxMDE0LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMDExLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NDIsIDB4MDQwMjAwMTEsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDg5MiwgMHgwNDAwMDAxYywgMHg0OTM2NjAwOSwgMHg0OTJlNjAwOCwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDBhLCAweDQyMDI3MDAwLCAweDAwMDAwMDQwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4ODAwMDA1ODAsIDB4MDQwMWYwMTEsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAyOCwgMHgwNDAxZjAwZCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODU4LCAweDA0MDAwN2ZiLCAweDU5YTgwODA1LCAweDgyMDQwZDAwLAotCTB4MDAwMDAwMDMsIDB4MDQwMDAwMDQsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDQsCi0JMHgwNDAxZjAwMywgMHg0MjAwMDAwMCwgMHgwMDAwMDAyOSwgMHg4MDAwMDU0MCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMDAwMDJjLCAweDA0MDFmN2ZjLAotCTB4NDkyZmM4NTcsIDB4NTkyZThjMDYsIDB4NDk0N2M4NTcsIDB4ODM0NDBjODAsCi0JMHgwMDAwMDgwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwYSwgMHgwNDAyMTE5YywKLQkweDU5MmM0MjA3LCAweDQ4MjNjODU3LCAweDgyMjAwNTAwLCAweDAwMDAwMDBmLAotCTB4MGMwMWYwMDEsIDB4MDAxMDQyMDUsIDB4MDAxMDQyOGQsIDB4MDAxMDQyZGQsCi0JMHgwMDEwNDJlOCwgMHgwMDEwNDJmMywgMHgwMDEwNDIwMSwgMHgwMDEwNDIwMSwKLQkweDAwMTA0MjAxLCAweDAwMTA0MzAzLCAweDAwMTA0MzYxLCAweDAwMTA0Mzg2LAotCTB4MDAxMDQyMDEsIDB4MDAxMDQyMDEsIDB4MDAxMDQyMDEsIDB4MDAxMDQyMDEsCi0JMHgwMDEwNDIwMSwgMHg0ODAzYzg1NywgMHg0MjAwMDAwMCwgMHgwMDAwMDAwYywKLQkweDA0MDFmMTgzLCAweDU5MmMxMDA4LCAweDgyMDgxNTAwLCAweDAwZmZmZmZmLAotCTB4NTlhODAwMTAsIDB4ODAwODRkODAsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMTAsCi0JMHgwNDAwMDE3YiwgMHgwMjAxZjgwMCwgMHgwMDEwNDc2OCwgMHgwNDAwMDAzNiwKLQkweDQ4MDNjODU3LCAweDgyMDA0ZDgwLCAweDAwMDAwMDFkLCAweDA0MDIwMDFhLAotCTB4MDIwMWY4MDAsIDB4MDAxMDU0MzksIDB4NTkzNDA0MDUsIDB4NGMwMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHg1YzAwMDAwMCwgMHgwNDAwMDAwNCwKLQkweDhjMjA0NTBhLCAweDA0MDAwMDI4LCAweDgwMDAwNTgwLCAweDQ0MDAyODAwLAotCTB4NTkzNDAwMDgsIDB4NDgwMDI4MDIsIDB4NTkzNDAwMDksIDB4NDgwMDI4MDEsCi0JMHg1OTM0MDAwNiwgMHg0ODAwMjgwNCwgMHg1OTM0MDAwNywgMHg0ODAwMjgwMywKLQkweDQyMDBiMDAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLCAweDAwMTA5MzI4LAotCTB4MDQwMWYxOGMsIDB4NDgwM2M4NTcsIDB4ODIwMDRkODAsIDB4MDAwMDAwMWEsCi0JMHgwNDAyMDAwMywgMHg0MDEwMTAwMCwgMHgwNDAxZjE1YywgMHg0ODAzYzg1NywKLQkweDgyMDA0ZDgwLCAweDAwMDAwMDFiLCAweDA0MDIwMDAzLCAweDQwMTgxMDAwLAotCTB4MDQwMWYxNTYsIDB4NDgwM2M4NTcsIDB4ODIwMDRkODAsIDB4MDAwMDAwMWMsCi0JMHgwNDAwMDE1NywgMHg4MjAwNGQ4MCwgMHgwMDAwMDAxOSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDBhLCAweDA0MDAwMTQ2LCAweDQyMDAwMDAwLCAweDAwMDAwMDBhLAotCTB4MDQwMjAxNWQsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsIDB4MDQwMDAwMWIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAwMDAxOCwgMHg1OTM0MDIxMiwKLQkweDgyMDAwNTAwLCAweDAwMDBmZjAwLCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLAotCTB4MDQwMjAwMGMsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDgsIDB4NTlhODAwMjYsCi0JMHg4YzAwMDUwNiwgMHgwNDAyMDAwOSwgMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwKLQkweDAwZmYwMDAwLCAweDgyMDAwNTgwLCAweDAwZmYwMDAwLCAweDA0MDAwMDA3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRhZGEsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMWMsCi0JMHg0MDE4MTAwMCwgMHgwNDAyMDEyZCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwKLQkweDA0MDAwMTM3LCAweDQ5MzY2MDA5LCAweDQ5MmU2MDA4LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDEsIDB4OGMyMDQ1MGEsIDB4MDQwMDAwMDQsIDB4NTkyYzA0MDQsCi0JMHg4NDAwMDU1YywgMHg0ODAyNWMwNCwgMHg0YzIwMDAwMCwgMHg0ZDNjMDAwMCwKLQkweDQyMDI3ODAwLCAweDAwMDAxODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLAotCTB4NWMwMjc4MDAsIDB4NWMwMDQwMDAsIDB4OGMyMDQ1MTIsIDB4MDQwMDAwMGIsCi0JMHg1OTljMDAxOCwgMHg4YzAwMDUxOCwgMHgwNDAwMDAwOCwgMHg1OTJjMDAwOSwKLQkweDgyMDAwNTAwLCAweDAwMDAwMzgwLCAweDU5MzQwODBhLCAweDgwMDQwZDQwLAotCTB4ODQwNDBkNTQsIDB4NDgwNjY4MGEsIDB4NDE3YTc4MDAsIDB4MDQwMWY5M2EsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywgMHgwNDAxZjk0MSwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDAyLCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDgwMDAwNTgwLAotCTB4MDQwMWYxMzAsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDQwMjAxMTIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgzYywgMHgwNDAwMDAwYywgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODM2LCAweDA0MDIwMTEyLCAweDRjNjAwMDAwLCAweDQxNzhjMDAwLAotCTB4NDIwMjc4MDAsIDB4MDAwMDE4MDAsIDB4NDE3YTYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWU0OCwgMHg1YzAwYzAwMCwgMHg1OWE4MDA2ZiwgMHg4YzAwMDUwMiwKLQkweDA0MDAwMDFiLCAweDAyMDFmODAwLCAweDAwMTA0ODM2LCAweDA0MDAwMDE4LAotCTB4NTkzNDAyMTIsIDB4ODIwMDA1MDAsIDB4MDAwMGZmMDAsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAxMCwgMHgwNDAyMDAwYywgMHg0MjAwMTAwMCwgMHgwMDAwMDAwOCwKLQkweDU5YTgwMDI2LCAweDhjMDAwNTA2LCAweDA0MDIwMDA5LCAweDU5MzQwMDAyLAotCTB4ODIwMDA1MDAsIDB4MDBmZjAwMDAsIDB4ODIwMDA1ODAsIDB4MDBmZjAwMDAsCi0JMHgwNDAwMDAwNywgMHgwMjAxZjgwMCwgMHgwMDEwNGFkYSwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDFjLCAweDQwMTgxMDAwLCAweDA0MDIwMGQ0LCAweDAyMDFmODAwLAotCTB4MDAwMjA4OTIsIDB4MDQwMDAwZGUsIDB4NTkzNDA4MGEsIDB4OGMyMDQ1MTIsCi0JMHgwNDAwMDAwYywgMHg1OTljMDAxOCwgMHg4YzAwMDUxOCwgMHgwNDAwMDAwOSwKLQkweDU5MmMwMDA5LCAweDgyMDAwNTAwLCAweDAwMDAwMzgwLCAweDgyMDQxNTAwLAotCTB4ZmZmZmZjN2YsIDB4ODAwODBkNDAsIDB4ODQwNDBkNTQsIDB4MDQwMWYwMDIsCi0JMHg4NDA0MGQxNCwgMHg0ODA2NjgwYSwgMHg0OTM2NjAwOSwgMHg0OTJlNjAwOCwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDAxLCAweDQxN2E3ODAwLCAweDA0MDFmOGVhLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4MDQwMWY4ZjEsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg4MDAwMDU4MCwKLQkweDA0MDFmMGUwLCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMGMyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NGIsIDB4MDQwMjAwYzUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOTJlMCwgMHgwNDAwMDBiNiwgMHg4MDAwMDU4MCwgMHgwNDAxZjBkNSwKLQkweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMGI3LCAweDAyMDFmODAwLAotCTB4MDAxMDQ4NGIsIDB4MDQwMjAwYmEsIDB4MDIwMWY4MDAsIDB4MDAxMDhlYTMsCi0JMHgwNDAwMDBhYiwgMHg4MDAwMDU4MCwgMHgwNDAxZjBjYSwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMjY3LCAweDA0MDIwMGFjLCAweDgzNDQ0ZDgwLCAweDAwMDAwN2ZlLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMGEsIDB4MDQwMjAwOGQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDgzNiwgMHgwNDAyMDBhYSwgMHgwMjAxZjgwMCwgMHgwMDEwOTJmOCwKLQkweDA0MDAwMDliLCAweDgwMDAwNTgwLCAweDA0MDFmMGJhLCAweDgyMjAwNTAwLAotCTB4MDAwMDAwNzAsIDB4MDQwMjAwMDUsIDB4OGMyMDQ1MGUsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwYywgMHgwNDAyMDA3ZSwgMHg4YzIwNDUwYSwgMHgwNDAwMDAwZCwKLQkweDRkM2MwMDAwLCAweDQyMDI3ODAwLCAweDAwMDAxMDAwLCAweDhjMjA0NTBlLAotCTB4MDQwMjAwMDIsIDB4ODUzZTdkNTYsIDB4ODIyMDA1MDAsIDB4MDAwMDAwYTAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgyMiwgMHg1YzAyNzgwMCwgMHgwNDAxZjBhMSwKLQkweDhjMjA0NTA4LCAweDA0MDIwMDI0LCAweDU5MmMxMDA4LCAweDgyMDgxNTAwLAotCTB4MDBmZmZmZmYsIDB4NTlhODAwMTAsIDB4ODAwODRkODAsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAxMCwgMHgwNDAwMDA2NiwgMHgwMjAxZjgwMCwgMHgwMDEwNDc2OCwKLQkweDA0MDAwMDJiLCAweDQ4MDNjODU3LCAweDgyMDA0ZDgwLCAweDAwMDAwMDFhLAotCTB4MDQwMjAwMDMsIDB4NDAxMDEwMDAsIDB4MDQwMWYwNjQsIDB4NDgwM2M4NTcsCi0JMHg4MjAwNGQ4MCwgMHgwMDAwMDAxYiwgMHgwNDAyMDAwMywgMHg0MDE4MTAwMCwKLQkweDA0MDFmMDVlLCAweDQ4MDNjODU3LCAweDgyMDA0ZDgwLCAweDAwMDAwMDFjLAotCTB4MDQwMDAwNWYsIDB4ODIwMDRkODAsIDB4MDAwMDAwMTksIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwYSwgMHgwNDAwMDA0ZSwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwYSwKLQkweDA0MDFmMDY1LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMDYyLAotCTB4NGQzYzAwMDAsIDB4NDIwMjc4MDAsIDB4MDAwMDEwMDAsIDB4OGMyMDQ1MGUsCi0JMHgwNDAyMDAwMiwgMHg4NTNlN2Q1NiwgMHg4MjIwMDUwMCwgMHgwMDAwMDA5MCwKLQkweDAyMDFmODAwLCAweDAwMTA0ODBhLCAweDVjMDI3ODAwLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMGEsIDB4MDQwMjAwM2EsIDB4MDQwMWYwNmEsIDB4ODM2YzA1ODAsCi0JMHgwMDAwMDAwMywgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNywgMHgwNDAyMDAwNiwKLQkweDAyMDFmODAwLCAweDAwMTA5MjhlLCAweDA0MDAwMDA3LCAweDgwMDAwNTgwLAotCTB4MDQwMWYwNjQsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4NzEsIDB4MDQwMDAwNTksCi0JMHgwNDAxZjA1YywgMHgwMjAxZjgwMCwgMHgwMDEwNDg3MSwgMHgwNDAwMDAzYywKLQkweDA0MDFmMDU4LCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMDNlLAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwNDgsIDB4OGMyMDQ1MDgsCi0JMHgwNDAwMDAwYSwgMHg0YzYwMDAwMCwgMHg0MTc4YzAwMCwgMHg0MjAyNzgwMCwKLQkweDAwMDAxODAwLCAweDQxN2E2MDAwLCAweDAyMDFmODAwLCAweDAwMTAxZTQ4LAotCTB4NWMwMGMwMDAsIDB4MDQwMWYwNDcsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4M2MsCi0JMHgwNDAwMDAwYywgMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDAzMCwKLQkweDRjNjAwMDAwLCAweDQxNzhjMDAwLCAweDQyMDI3ODAwLCAweDAwMDAxODAwLAotCTB4NDE3YTYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFlNDgsIDB4NWMwMGMwMDAsCi0JMHg0ODBiYzg1NiwgMHgwMjAxZjgwMCwgMHgwMDEwOTBmOCwgMHgwNDAwMDAxOCwKLQkweDgwMDAwNTgwLCAweDA0MDFmMDM3LCAweDA0MDFmN2RiLCAweDQ4MGJjODU3LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMTksIDB4NDAwMDEwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwMiwgMHgwNDAxZjAwYSwgMHg0ODBiYzg1NywgMHg0MDAwMDgwMCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDA0MDFmMDA1LCAweDQ4MGJjODU3LAotCTB4NDAwMDA4MDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDEsIDB4NDgwYmM4NTcsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAzMSwgMHgwNDAxZjAyMCwgMHg0ODBiYzg1NywKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDQyMDBiMDAwLCAweDAwMDAwMDAxLAotCTB4MDQwMWY3ZjcsIDB4NDgwYmM4NTcsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMGEsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdmMSwgMHg0ODBiYzg1NywKLQkweDQyMDAwODAwLCAweDAwMDAwMDA5LCAweDQwMDAxMDAwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDIsIDB4MDQwMWY3ZWEsIDB4NDgwYmM4NTcsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNywgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdlNCwKLQkweDQ4MGJjODU3LCAweDQyMDBiMDAwLCAweDAwMDAwMDAxLCAweDA0MDFmN2UwLAotCTB4ODAwMjg1ODAsIDB4NDE3OGIwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgxYzAxZjAwMCwgMHg0OTM3Yzg1NywgMHg1OTMyNjgwOSwgMHg1OTM0MTIwMCwKLQkweDgxM2U3OWMwLCAweDA0MDAwMDAzLCAweDg0MDgxNTQwLCAweDA0MDFmMDAyLAotCTB4ODQwODE1MDAsIDB4NDgwYTZhMDAsIDB4MWMwMWYwMDAsIDB4NTkzMjY4MDksCi0JMHg1YzAwMDAwMCwgMHg0YzAwMDAwMCwgMHg0ODAzYzg1NywgMHg0OTM3Yzg1NywKLQkweDgyMDQwNTgwLCAweDAwMDAwMDA2LCAweDA0MDIwMDA0LCAweDQyMDAwMDAwLAotCTB4MDAwMDA2MDYsIDB4MDQwMWYwMjEsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDQsCi0JMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDAwMDQwNCwgMHgwNDAxZjAxYiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDA3LCAweDQyMDAwMDAwLCAweDAwMDAwNzA3LAotCTB4MDQwMDAwMTYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDMsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDcwMywgMHgwNDAwMDAxMSwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNSwKLQkweDQyMDAwMDAwLCAweDAwMDAwNDA1LCAweDA0MDAwMDBjLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDksIDB4NDIwMDAwMDAsIDB4MDAwMDA0MDksIDB4MDQwMDAwMDcsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwYiwgMHg0MjAwMDAwMCwgMHgwMDAwMDcwYiwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDQ4MDNjODU3LCAweDQ4MDI2YzAwLAotCTB4ODIwNDBkODAsIDB4MDAwMDAwMDYsIDB4MDQwMjAwMDUsIDB4NTkzNDE0MDQsCi0JMHg4MDA4MTFjMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHgxYzAxZjAwMCwKLQkweDVjMDAwMDAwLCAweDRjMDAwMDAwLCAweDQ4MDNjODU3LCAweDQ5NDdjODU3LAotCTB4NDgxYmM4NTcsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMjEwMzQsCi0JMHg4MzQ0MTQwMCwgMHgwMDEwYWEwMCwgMHg1MDA4MDAwMCwgMHg4MDAyNmQ0MCwKLQkweDA0MDIwMDExLCAweDRjMTgwMDAwLCAweDRkMmMwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA4MTksIDB4NDEyZTY4MDAsIDB4NWMwMjU4MDAsIDB4NWMwMDMwMDAsCi0JMHgwNDAwMDAyNywgMHg0NTM0MTAwMCwgMHg0OTdhNjgwZCwgMHg0OTdhNjgxMCwKLQkweDQ5N2E2ODBmLCAweDQ5N2E2ODBlLCAweDRjMTgwMDAwLCAweDA0MDFmY2NkLAotCTB4NWMwMDMwMDAsIDB4NTkzNDBhMTIsIDB4NGMwNDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGUwZCwgMHg1YzAwMDgwMCwgMHgwNDAwMDAwOSwgMHg4MjE4MDUwMCwKLQkweDAwZmZmZjAwLCAweDA0MDAwMDA4LCAweDU5YTgxMDEwLCAweDgyMDgxNTAwLAotCTB4MDBmZmZmMDAsIDB4ODAwODA1ODAsIDB4MDQwMDAwMDMsIDB4ODAwMDA1ODAsCi0JMHgwNDAxZjAwNCwgMHg4MjE4MDUwMCwgMHgwMDAwMDBmZiwgMHg4MDAwMDBkMCwKLQkweDgwMDQwZDgwLCAweDA0MDAwMDAzLCAweDQ4MDNjODU3LCAweDQ4MDI2YTEyLAotCTB4NTkzNDAwMDIsIDB4ODAxODA1ODAsIDB4MDQwMDAwMDMsIDB4NDgxYmM4NTcsCi0JMHg0ODFhNjgwMiwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDA0MDFmN2ZjLCAweDQ5NDdjODU3LAotCTB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMjEwMTEsIDB4ODM0NDE0MDAsCi0JMHgwMDEwYWEwMCwgMHg1MDA4MDAwMCwgMHg4MDAyNmQ0MCwgMHgwNDAwMDAwYiwKLQkweDA0MDFmYmYyLCAweDA0MDIwMDBhLCAweDU5YTgwMDA1LCAweDhjMDAwNTAyLAotCTB4MDQwMDAwMDQsIDB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMDAwMDQsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg4MDAwMDU4MCwKLQkweDA0MDFmN2ZlLCAweDVjMDAwMDAwLCAweDRjMDAwMDAwLCAweDQ4MDNjODU3LAotCTB4NDk0N2M4NTcsIDB4NGQyYzAwMDAsIDB4NGQzMDAwMDAsIDB4ODM0NDA0ODAsCi0JMHgwMDAwMDgwMCwgMHgwNDAyMTAyNCwgMHg4MzQ0MTQwMCwgMHgwMDEwYWEwMCwKLQkweDUwMDgwMDAwLCAweDgwMDI2ZDQwLCAweDA0MDAwMDFiLCAweDQ1NzgxMDAwLAotCTB4NTkzNDAwMGQsIDB4ODAwMjVkNDAsIDB4MDIwMjA4MDAsIDB4MDAxMDA4NDMsCi0JMHg1OTM2NjAxMSwgMHg4MTMyNjFjMCwgMHgwNDAwMDAwZSwgMHg0YzY0MDAwMCwKLQkweDU5MzBjODAwLCAweDU5MzI1ODA4LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LAotCTB4MDIwMjA4MDAsIDB4MDAxMDA4NDMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHg4MjY2NjU0MCwgMHgwMDAwMDAwMCwgMHgwNDAyMDdmNiwgMHg1YzAwYzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0YWNmLCAweDQxMzY1ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA4M2IsIDB4ODAwMDA1ODAsIDB4NWMwMjYwMDAsIDB4NWMwMjU4MDAsCi0JMHgxYzAxZjAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdmYiwKLQkweDQ5MzdjODU3LCAweDRjNTgwMDAwLCAweDU5Y2MwMDAxLCAweDgyMDAwNTAwLAotCTB4MDBmZmZmZmYsIDB4NDgwMjY4MDIsIDB4NDk3YTZjMDEsIDB4NDk3YTZhMDEsCi0JMHg1OTM0MDIwMCwgMHg4NDAwMDUwMiwgMHg0ODAyNmEwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTBkLCAweDA0MDIwMDE3LCAweDU5MzQwNDAzLCAweDgyMDAwNTgwLAotCTB4MDAwMDA3ZmUsIDB4MDQwMDAwMDUsIDB4NTlhODAwMjYsIDB4OGMwMDA1MGEsCi0JMHgwNDAyMDAxMCwgMHgwNDAxZjAwOCwgMHg1OWNjMDQwOCwgMHg4YzAwMDUxOCwKLQkweDA0MDAwMDBjLCAweDU5Y2MwMDA5LCAweDQ4MDM1MDM1LCAweDU5Y2MwMDBhLAotCTB4NDgwMzUwMzYsIDB4NTljYzAyMDcsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDMsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHg0ODAzODg5MywgMHg0ODAzNTAxZSwKLQkweDU5Y2MwYTA5LCAweDgyMDQwZDAwLCAweDAwMDAwMDEwLCAweDU5Y2MwNDA4LAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwMjAsIDB4MDQwMDAwMDIsIDB4ODQwNDBkNDAsCi0JMHg1OTM0MDAwYSwgMHg4MjAwMDUwMCwgMHhmZmZmZmZlZSwgMHg4MDA0MDU0MCwKLQkweDQ4MDI2ODBhLCAweDgzY2NhNDAwLCAweDAwMDAwMDBiLCAweDgzMzRhYzAwLAotCTB4MDAwMDAwMDYsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwZCwgMHg4MzM0YWMwMCwKLQkweDAwMDAwMDA4LCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDAyMDFmODAwLAotCTB4MDAxMGE5M2UsIDB4NTljYzBhMTgsIDB4ODIwNDA0ODAsIDB4MDAwMDA4MDAsCi0JMHgwNDAyMTAwYywgMHg4MjA0MDQ4MCwgMHgwMDAwMDQwMCwgMHgwNDAwMTAwNCwKLQkweDQyMDAwODAwLCAweDAwMDAwNDAwLCAweDA0MDFmMDA2LCAweDgyMDQwNDgwLAotCTB4MDAwMDAyMDAsIDB4MDQwMDEwMDMsIDB4NDIwMDA4MDAsIDB4MDAwMDAyMDAsCi0JMHg0MjAwMTAwMCwgMHgwMDEwYjMzZiwgMHg1ODA4MDIwMiwgMHg4MDA0MTQ4MCwKLQkweDA0MDAxMDAyLCAweDQwMDAwODAwLCAweDQ4MDY2YTA0LCAweDU5MzQwNDAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDA3ZmUsIDB4MDQwMjAwMDMsIDB4NTljYzBhMDgsCi0JMHg0ODA2NmEwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNGFmZCwgMHg1YzAwYjAwMCwKLQkweDFjMDFmMDAwLCAweDQ5MzdjODU3LCAweDU5YTgwMDI2LCAweDhjMDAwNTA4LAotCTB4MDQwMDAwMDQsIDB4ODQwMDA1NTYsIDB4NDgwM2M4NTcsIDB4NDgwMzUwMjYsCi0JMHg1OWNjMDIwNywgMHg0ODAzYzg1NywgMHg0ODAyNmEwNSwgMHg1OWNjMDIwYSwKLQkweDQ4MDNjODU3LCAweDQ4MDI2YzA1LCAweDU5MzQxMjAwLCAweDU5OWMwODE4LAotCTB4NTkzNDE4MGEsIDB4NDgwN2M4NTcsIDB4NDgwYmM4NTcsIDB4NDgwZmM4NTcsCi0JMHg1OWNjMjAwNiwgMHg4MjEwMjUwMCwgMHhmZjAwMDAwMCwgMHg4MjEwMjU4MCwKLQkweDAyMDAwMDAwLCAweDA0MDAwMDA3LCAweDhjMDAwNTBlLCAweDA0MDAwMDA5LAotCTB4OGMwYzFkMTQsIDB4MDQwMDAwMDMsIDB4OGMwYzFkMGUsIDB4MDQwMDAwMDUsCi0JMHg4YzA0MGQxOCwgMHgwNDAwMDAwMywgMHg4NDA4MTU0YSwgMHgwNDAxZjAwMiwKLQkweDg0MDgxNTBhLCAweDhjMDAwNTEwLCAweDA0MDAwMDA5LCAweDhjMGMxZDE0LAotCTB4MDQwMDAwMDMsIDB4OGMwYzFkMTAsIDB4MDQwMDAwMDUsIDB4OGMwNDBkMTgsCi0JMHgwNDAwMDAwMywgMHg4NDA4MTU0ZSwgMHgwNDAxZjAwMiwgMHg4NDA4MTUwZSwKLQkweDhjMDAwNTEyLCAweDA0MDAwMDA5LCAweDhjMGMxZDE0LCAweDA0MDAwMDAzLAotCTB4OGMwYzFkMTIsIDB4MDQwMDAwMDUsIDB4OGMwNDBkMTgsIDB4MDQwMDAwMDMsCi0JMHg4NDA4MTU1YywgMHgwNDAxZjAwMiwgMHg4NDA4MTUxYywgMHg0ODBhNmEwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRjNWMwMDAwLCAweDRkMmMwMDAwLAotCTB4NGM1ODAwMDAsIDB4NTkzNDAwMGQsIDB4ODAwMjVkNDAsIDB4MDQwMDAwMjksCi0JMHg1OTJjMDAwMywgMHg4MjAwMDQ4MCwgMHgwMDAwMDAwOCwgMHgwNDAwMTAwYiwKLQkweDQxMmNiODAwLCAweDU5MmMwMDAxLCAweDgwMDI1ZDQwLCAweDA0MDIwN2Y5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsIDB4MDQwMDAwMzcsIDB4NDkyZmM4NTcsCi0JMHg0OTJjYjgwMSwgMHgwNDAxZjAyMCwgMHg4MzJjMGMwMCwgMHgwMDAwMDAwNCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDA4LCAweDUwMDQwMDAwLCAweDgyMDAwNTgwLAotCTB4ZmZmZmZmZmYsIDB4MDQwMjAwMDYsIDB4ODAwNDEwMDAsIDB4NTAwODAwMDAsCi0JMHg4MjAwMDU4MCwgMHhmZmZmZmZmZiwgMHgwNDAwMDAwNywgMHg4MjA0MGMwMCwKLQkweDAwMDAwMDAyLCAweDgwNThiMDQwLCAweDA0MDIwN2Y0LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NDU0ODA4MDAsIDB4NDU0YzEwMDAsIDB4NTkyYzE4MDMsCi0JMHg4MDBjMTgwMCwgMHg0ODBlNTgwMywgMHg0ODBmYzg1NywgMHgwNDAxZjAxNCwKLQkweDAyMDFmODAwLCAweDAwMTAwODJhLCAweDA0MDAwMDE3LCAweDQ5MmZjODU3LAotCTB4NDkyZTY4MGQsIDB4NDk3YTU4MDIsIDB4NGEwMjU4MDMsIDB4MDAwMDAwMDEsCi0JMHg0OTRhNTgwNCwgMHg0OTRlNTgwNSwgMHg4MzJjMGMwMCwgMHgwMDAwMDAwNiwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDBlLCAweDQ2MDAwODAwLCAweGZmZmZmZmZmLAotCTB4ODAwNDA4MDAsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZmMsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAwYjAwMCwgMHg1YzAyNTgwMCwgMHg1YzAwYjgwMCwKLQkweDFjMDFmMDAwLCAweDgwMDAwNTgwLCAweDA0MDFmN2ZiLCAweDQ4MDNjODU2LAotCTB4NGQzYzAwMDAsIDB4NGQyYzAwMDAsIDB4NTkzNDAwMGQsIDB4ODAwMjVkNDAsCi0JMHgwNDAwMDAxZiwgMHg1OTJjMDAwMiwgMHg4MDAwMDU0MCwgMHgwNDAyMDAxZiwKLQkweDQxMmU3ODAwLCAweDA0MDFmOGM4LCAweDA0MDIwMDFjLCAweDQ2MDAwODAwLAotCTB4ZmZmZmZmZmYsIDB4NDYwMDEwMDAsIDB4ZmZmZmZmZmYsIDB4NDgxM2M4NTcsCi0JMHg0ODBmYzg1NywgMHg1ODBjMDAwMywgMHg4MjAwMGM4MCwgMHgwMDAwMDAwMiwKLQkweDA0MDIxMDE0LCAweDQ4MGZjODU3LCAweDQwMGMwMDAwLCAweDgxMmMwNTgwLAotCTB4MDQwMjAwMDQsIDB4NTgwYzAwMDEsIDB4NDgwMjY4MGQsIDB4MDQwMWYwMDMsCi0JMHg1ODBjMDAwMSwgMHg0ODAwMjAwMSwgMHg0MDBlNTgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODNhLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDI1ODAwLAotCTB4NWMwMjc4MDAsIDB4MWMwMWYwMDAsIDB4ODAwMDA1ODAsIDB4MDQwMWY3ZmMsCi0JMHg4MDAwMDA0MCwgMHg0ODAwMTgwMywgMHg0ODAzYzg1NywgMHgwNDAxZjdmNiwKLQkweDAyMDFmODAwLCAweDAwMDIwMDg3LCAweDU5MzAwMDA3LCAweDg0MDAwNTRlLAotCTB4NDgwMjYwMDcsIDB4NTkyYzFhMDQsIDB4ODIwYzFkMDAsIDB4MDAwMDAwZmYsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMDA0OCwgMHgwNDAwMDAxMywgMHgwMjAxZjAwMCwKLQkweDAwMDIwMmIwLCAweDhjMDAwNTAwLCAweDAyMDIwODAwLCAweDAwMDIwMGU2LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDIsIDB4NTkyYzFhMDQsIDB4ODIwYzFkMDAsCi0JMHgwMDAwMDBmZiwgMHg4MjBjMDU4MCwgMHgwMDAwMDAxOCwgMHgwMjAwMDAwMCwKLQkweDAwMDIwMmIwLCAweDgyMGMwNTgwLCAweDAwMDAwMDQ4LCAweDAyMDIwMDAwLAotCTB4MDAwMjAyYjAsIDB4NDIwMDA4MDAsIDB4ODAwMDA4MDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjQ2NiwgMHgwMjAxZjAwMCwgMHgwMDAyMDJiOSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDA4LCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDRhMDI1YTA2LAotCTB4MDAwMDAwMjksIDB4MDIwMWYwMDAsIDB4MDAwMjAzODEsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAyYSwgMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDI4LCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDQ5NDNjODU3LAotCTB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsIDB4NGQyYzAwMDAsIDB4NGM1ODAwMDAsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDdmMCwgMHg0MTdhODgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMjY3LCAweDA0MDIwMDA3LCAweDhkM2U3ZDA2LCAweDA0MDAwMDA0LAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMDIsIDB4MDQwMWY4MTMsCi0JMHg4MTQ2ODgwMCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmNSwgMHg4MzQ0MDQ4MCwKLQkweDAwMDAwODAwLCAweDA0MDIxMDA4LCAweDhkM2U3ZDAyLCAweDA0MDAwMDA2LAotCTB4NDIwMjg4MDAsIDB4MDAwMDA3ZjAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMTAsCi0JMHgwNDAxZjdlYiwgMHg1YzAwYjAwMCwgMHg1YzAyNTgwMCwgMHg1YzAyNjgwMCwKLQkweDVjMDI4ODAwLCAweDFjMDFmMDAwLCAweDRkMmMwMDAwLCAweDQxNzgzMDAwLAotCTB4NTkzNjU4MGYsIDB4ODEyZTU5YzAsIDB4MDQwMDAwMjksIDB4NTkyYzAyMDQsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxMiwKLQkweDA0MDAwMDIwLCAweDhkM2U3ZDAwLCAweDA0MDAwMDAzLCAweDA0MDFmODNjLAotCTB4MDQwMjAwMWMsIDB4NTkyYzIwMDAsIDB4NDk3YTU4MDAsIDB4ODAxODMxYzAsCi0JMHgwNDAyMDAwOSwgMHg1OTM0MDAxMCwgMHg4MTJjMDU4MCwgMHgwNDAyMDAwNCwKLQkweDQ5N2E2ODBmLCAweDQ5N2E2ODEwLCAweDA0MDFmMDA4LCAweDQ4MTI2ODBmLAotCTB4MDQwMWYwMDYsIDB4NDgxMDMwMDAsIDB4NTkzNDAwMTAsIDB4ODEyYzA1ODAsCi0JMHgwNDAyMDAwMiwgMHg0ODFhNjgxMCwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywKLQkweDQ5NDI1YTA2LCAweDQ5N2E1YzA5LCAweDAyMDFmODAwLCAweDAwMTA4ZjdkLAotCTB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4NDAxMjU4MDAsIDB4MDQwMWY3ZGEsCi0JMHg0MTJjMzAwMCwgMHg1OTJlNTgwMCwgMHgwNDAxZjdkNywgMHg1YzAyNTgwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDQxNzgxODAwLCAweDU5MzQwMDBmLAotCTB4ODAwMjVkNDAsIDB4MDQwMDAwMTAsIDB4NTkyYzAwMDUsIDB4ODAyMDA1ODAsCi0JMHg1OTJjMDAwMCwgMHgwNDAwMDAwMywgMHg0MTJjMTgwMCwgMHgwNDAxZjdmOSwKLQkweDQ5N2E1ODAwLCAweDgwMGMxOWMwLCAweDA0MDAwMDA4LCAweDQ4MDAxODAwLAotCTB4ODAwMDA1NDAsIDB4MDQwMjAwMDQsIDB4NDgwZTY4MTAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg0ODAyNjgwZiwgMHg4MDAwMDU0MCwKLQkweDA0MDIwN2ZkLCAweDQ5N2E2ODEwLCAweDA0MDFmN2Y5LCAweDU5MmMwMDA4LAotCTB4ODE0ODA1ODAsIDB4MDQwMjAwMDMsIDB4NTkyYzAwMDksIDB4ODE0YzA1ODAsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0YzU4MDAwMCwgMHg0MTNjMTgwMCwKLQkweDQwMGMyMDAwLCAweDU5M2MwMDAyLCAweDgwMDAwNTQwLCAweDA0MDIwMDE4LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMDgsIDB4ODIwYzBjMDAsIDB4MDAwMDAwMDQsCi0JMHg1MDA0MDAwMCwgMHg4MTQ4MDU4MCwgMHgwNDAyMDAwNSwgMHg4MDA0MTAwMCwKLQkweDUwMDgwMDAwLCAweDgxNGMwNTgwLCAweDA0MDAwMDBkLCAweDgyMDQwYzAwLAotCTB4MDAwMDAwMDIsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjYsIDB4NDAwYzIwMDAsCi0JMHg1ODBjMDAwMSwgMHg4MDAwMWQ0MCwgMHgwNDAyMDdlZSwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDgwMDAwNTgwLAotCTB4MDQwMWY3ZmQsIDB4NDkzN2M4NTcsIDB4NGM1ODAwMDAsIDB4NGQyYzAwMDAsCi0JMHg1OTM0MDAwZCwgMHg4MDAyNWQ0MCwgMHgwNDAyMDAxNiwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODJhLCAweDA0MDAwMDEwLCAweDQ5MmU2ODBkLCAweDRhMDI1ODAyLAotCTB4MDAwMDAwMDEsIDB4NDk3YTU4MDMsIDB4ODMyYzBjMDAsIDB4MDAwMDAwMDQsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAxMCwgMHg0NjAwMDgwMCwgMHhmZmZmZmZmZiwKLQkweDgwMDQwODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2ZjLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4NWMwMjU4MDAsIDB4NWMwMGIwMDAsIDB4MWMwMWYwMDAsCi0JMHg0ZDJjMDAwMCwgMHg1OTJlNTgwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywKLQkweDVjMDI1ODAwLCAweDA0MDFmN2VhLCAweDRkMmMwMDAwLCAweDU5MzY1ODBkLAotCTB4ODEyZTU5YzAsIDB4MDQwMDAwMDcsIDB4NDkzN2M4NTcsIDB4NDk3YTY4MGQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDVjMDI1ODAwLCAweDFjMDFmMDAwLCAweDU5MzQwNDA1LCAweDQ5MzdjODU3LAotCTB4NDgwM2M4NTcsIDB4OGMwMDA1MDgsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAwMDAxMSwgMHg1OWE4MDgxNSwKLQkweDhjMDQwZDA0LCAweDA0MDIwMDBlLCAweDU5YTgwODI2LCAweDhjMDQwZDA2LAotCTB4MDQwMDAwMGIsIDB4ODNhYzA0MDAsIDB4MDAwMDA3ZmUsIDB4NTAwMDAwMDAsCi0JMHg4MDAyNmQ0MCwgMHgwNDAwMDAwNiwgMHgwNDAxZjlhOCwgMHgwNDAyMDAwNCwKLQkweDU5MzQwMjAwLCAweDg0MDAwNTVhLCAweDQ4MDI2YTAwLCAweDU5OWMwMDE3LAotCTB4OGMwMDA1MDgsIDB4MDQwMDAwMTUsIDB4NDIwMGIwMDAsIDB4MDAwMDA3ZjAsCi0JMHg0MTdhODgwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAwYywKLQkweDA0MDFmOTlhLCAweDA0MDIwMDBhLCAweDU5YTgwMDEwLCAweDU5MzQwODAyLAotCTB4ODAwNDA1ODAsIDB4ODIwMDA1MDAsIDB4MDBmZmZmMDAsIDB4MDQwMjAwMDQsCi0JMHg1OTM0MDIwMCwgMHg4NDAwMDU1YSwgMHg0ODAyNmEwMCwgMHg4MTQ2ODgwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2YwLCAweDA0MDFmODg1LCAweDA0MDAwMDAzLAotCTB4NTlhODA4MzYsIDB4MDQwMWYwMDYsIDB4NTk5YzAwMTcsIDB4OGMwMDA1MDgsCi0JMHgwNDAwMDAwNywgMHg0MjAwMDgwMCwgMHgwMDAwMDdkMCwgMHg0MjAwMTAwMCwKLQkweDAwMTA0NmM0LCAweDAyMDFmODAwLCAweDAwMTA1ZGE3LCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NGQzMDAwMDAsIDB4NGQzNDAwMDAsIDB4NGQ0NDAwMDAsCi0JMHg0ZDNjMDAwMCwgMHg0YzU4MDAwMCwgMHg0MjAwMTAwMCwgMHgwMDEwNDZjNCwKLQkweDAyMDFmODAwLCAweDAwMTA1Y2M5LCAweDU5YTgwODI2LCAweDhjMDQwZDA2LAotCTB4MDQwMDAwMTUsIDB4MDQwMWY4NmEsIDB4MDQwMDAwMTMsIDB4ODNhZTZjMDAsCi0JMHgwMDAwMDdmZSwgMHg1MTM2NjgwMCwgMHg1OTM0MDIwMCwgMHg4NDAwMDUxYSwKLQkweDQ4MDI2YTAwLCAweDU5OWMwMDE3LCAweDhjMDAwNTA4LCAweDA0MDAwMDA3LAotCTB4NDIwMDA4MDAsIDB4MDAwMDA3ZDAsIDB4NDIwMDEwMDAsIDB4MDAxMDQ2YzQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWRhNywgMHgwMjAxZjgwMCwgMHgwMDEwMWJmMCwKLQkweDA0MDFmMDI3LCAweDQyMDBiMDAwLCAweDAwMDAwN2YwLCAweDgwMDI4ZDgwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDQwMjAwMWUsIDB4NTkzNDAyMDAsCi0JMHg4YzAwMDUxYSwgMHgwNDAwMDAxYiwgMHg1OTM2OGMwMywgMHg0MTdhNzgwMCwKLQkweDQyMDI4MDAwLCAweDAwMDAwMDI5LCAweDQxNzgzMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMGEyNTgsIDB4NTkzNDAyMDAsIDB4ODQwMDA1NTgsIDB4ODQwMDA1MWEsCi0JMHg0ODAyNmEwMCwgMHg0OTM3Yzg1NywgMHg0YTAyNmMwMCwgMHgwMDAwMDcwNywKLQkweDQyMDI4MDAwLCAweDAwMDAwMDI5LCAweDAyMDFmODAwLCAweDAwMTA2N2Y2LAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY1NDMsIDB4NDE3YTYwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTBkYSwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4MiwKLQkweDgxNDY4ODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2RlLCAweDVjMDBiMDAwLAotCTB4NWMwMjc4MDAsIDB4NWMwMjg4MDAsIDB4NWMwMjY4MDAsIDB4NWMwMjYwMDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg1OTMwMzgwOSwgMHg1ODFjMDIwMCwKLQkweDg0MDAwNTFhLCAweDQ4MDAzYTAwLCAweDFjMDFmMDAwLCAweDQyMDI2ODAwLAotCTB4MDAxMGIzMjAsIDB4NDk3YTY4MGUsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZmYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDBlNCwgMHg0OTM3Yzg1NywgMHg0YTAyNmMwMCwKLQkweDAwMDAwNjA2LCAweDRhMDI2ODAyLCAweDAwZmZmZmZmLCAweDRhMDI2YTA0LAotCTB4MDAwMDAyMDAsIDB4NGEwMjZjMDQsIDB4MDAwMDAwMDIsIDB4MWMwMWYwMDAsCi0JMHg1OTMwMDAwOSwgMHg1MDAwMDAwMCwgMHg0OTMzYzg1NywgMHg0ODAzYzg1NywKLQkweDhjMDAwNTBlLCAweDFjMDFmMDAwLCAweDU5MzAwMDA5LCAweDUwMDAwMDAwLAotCTB4OGMwMDA1MGEsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTYsIDB4MDQwMWY5MGYsCi0JMHgwNDAwMDAwNiwgMHg1OTM0MDQwMCwgMHg4MjAwMGQwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDQxNTgwLCAweDAwMDAwMDA1LCAweDFjMDFmMDAwLCAweDRkMzQwMDAwLAotCTB4ODNhYzA0MDAsIDB4MDAwMDA3ZmUsIDB4NTAwMDAwMDAsIDB4ODAwMjZkNDAsCi0JMHgwNDAwMDAwMywgMHg1OTM0MDIwMCwgMHg4YzAwMDUxYSwgMHg1YzAyNjgwMCwKLQkweDFjMDFmMDAwLCAweDQ5MzdjODU3LCAweDQ5M2ZjODU3LCAweDU5MzQwNDAzLAotCTB4ODFhYzA0MDAsIDB4NTAwMDAwMDAsIDB4ODEzNDA1ODAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OTM0MTIwMCwgMHg4MTNlNzljMCwgMHgwNDAwMDAwMywKLQkweDg0MDgxNTVlLCAweDA0MDFmMDAyLCAweDg0MDgxNTFlLCAweDQ4MGE2YTAwLAotCTB4MWMwMWYwMDAsIDB4NDkzN2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsCi0JMHgwNDAwMDAwNiwgMHg1OWE4MDgzNSwgMHg0MjAwMTAwMCwgMHgwMDEwNDc1ZiwKLQkweDAyMDFmODAwLCAweDAwMTA1ZGE3LCAweDFjMDFmMDAwLCAweDQ5MzdjODU3LAotCTB4NDIwMDEwMDAsIDB4MDAxMDQ3NWYsIDB4MDIwMWY4MDAsIDB4MDAxMDVjYzksCi0JMHg1OWE4MTAyNiwgMHg4NDA4MTUxMiwgMHg0ODBiNTAyNiwgMHgxYzAxZjAwMCwKLQkweDRjMzgwMDAwLCAweDRjMzQwMDAwLCAweDRjMjQwMDAwLCAweDRjNjAwMDAwLAotCTB4NDAwOGMwMDAsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMjEwNDUsCi0JMHg4MDAwMmQ4MCwgMHg0MTQ0MjAwMCwgMHg4MzQ0NzQwMCwgMHgwMDEwYWEwMCwKLQkweDQyMDBiMDAwLCAweDAwMDAwN2YwLCAweDgzNDQ0YzgwLCAweDAwMDAwN2YwLAotCTB4MDQwMDEwMDMsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMTAsIDB4NTAzODAwMDAsCi0JMHg4MDAwMDU0MCwgMHgwNDAyMDAxZSwgMHg0MTQ0MDAwMCwgMHg4MDEwMDU4MCwKLQkweDA0MDIwMDQzLCAweDQwMTAyODAwLCAweDgyMTA0YzgwLCAweDAwMDAwN2YwLAotCTB4MDQwMDEwMTUsIDB4ODIxMDRkODAsIDB4MDAwMDA3ZmMsIDB4MDQwMjAwMDUsCi0JMHg4MjYwNGQ4MCwgMHgwMGZmZmZmYywgMHgwNDAyMDAyYSwgMHgwNDAxZjAwZSwKLQkweDgyMTA0ZDgwLCAweDAwMDAwN2ZkLCAweDA0MDIwMDA1LCAweDgyNjA0ZDgwLAotCTB4MDBmZmZmZmQsIDB4MDQwMjAwMjMsIDB4MDQwMWYwMDcsIDB4ODIxMDRkODAsCi0JMHgwMDAwMDdmZiwgMHgwNDAyMDAxZiwgMHg4MjYwNGQ4MCwgMHgwMGZmZmZmZiwKLQkweDA0MDIwMDFjLCAweDg0MTQyZDVlLCAweDA0MDFmMDI5LCAweDQwMDA2ODAwLAotCTB4NTgzNDMwMDIsIDB4ODIxODM1MDAsIDB4MDBmZmZmZmYsIDB4NDAxODAwMDAsCi0JMHg4MDYwMDU4MCwgMHgwNDAyMDAxOSwgMHg0MDEwMDAwMCwgMHg4MTQ0MDU4MCwKLQkweDA0MDIwMDBhLCAweDQwMzY2ODAwLCAweDhjMjA0NTA4LCAweDA0MDAwMDUzLAotCTB4MDQwMWZmOGEsIDB4MDQwMjAwNTEsIDB4NDk0N2M4NTcsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAxZCwgMHgwNDAxZjA0ZSwgMHg0OTQ3Yzg1NywgMHg0ODBiYzg1NywKLQkweDQ4MjNjODU3LCAweDQyMDAwMDAwLCAweDAwMDAwMDFhLCAweDA0MDFmMDQ4LAotCTB4NDk0N2M4NTcsIDB4NDg2M2M4NTcsIDB4NDgxM2M4NTcsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAxOSwgMHgwNDAxZjA0MiwgMHg0MDEwMDAwMCwgMHg4MTQ0MDU4MCwKLQkweDA0MDIwMDA3LCAweDU4MzQzMDAyLCAweDQ5NDdjODU3LCAweDQ4MWJjODU3LAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMWIsIDB4MDQwMWYwMzksIDB4ODAxMDIwMDAsCi0JMHg4MDM4NzAwMCwgMHg4MzQ0NGM4MCwgMHgwMDAwMDdmMCwgMHgwNDAwMTAwOSwKLQkweDgyMTA0ZDgwLCAweDAwMDAwODAwLCAweDA0MDIwMDBjLCAweDQyMDAyMDAwLAotCTB4MDAwMDA3ZjAsIDB4NDIwMDcwMDAsIDB4MDAxMGIxZjAsIDB4MDQwMWYwMDcsCi0JMHg4MjEwNGQ4MCwgMHgwMDAwMDdmMCwgMHgwNDAyMDAwNCwgMHg0MTc4MjAwMCwKLQkweDQyMDA3MDAwLCAweDAwMTBhYTAwLCAweDgwNThiMDQwLCAweDA0MDIwN2E0LAotCTB4ODAxNDI5YzAsIDB4MDQwMjAwMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0OTQ3Yzg1NywgMHg0MjAwMDAwMCwgMHgwMDAwMDAwYSwgMHgwNDAxZjAxYywKLQkweDRkMmMwMDAwLCAweDRjMTgwMDAwLCAweDQwNjAzMDAwLCAweDA0MDFmYzE5LAotCTB4NDk0N2M4NTcsIDB4NDkzN2M4NTcsIDB4NWMwMDMwMDAsIDB4NWMwMjU4MDAsCi0JMHgwNDAyMDdmNCwgMHg0OTdhNmExMiwgMHg1OWE4MDAyNiwgMHg4YzAwMDUwYSwKLQkweDA0MDIwMDBkLCAweDgyNjAwNTAwLCAweDAwZmZmZjAwLCAweDA0MDAwMDA2LAotCTB4NTlhODQ4MTAsIDB4ODIyNDRkMDAsIDB4MDBmZmZmMDAsIDB4ODAyNDA1ODAsCi0JMHgwNDAyMDAwNSwgMHg4MjYwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MDAwMDBkMCwKLQkweDQ4MDI2YTEyLCAweDQ4NjI2ODAyLCAweDgwMDAwNTgwLCAweDgwMDAwNTQwLAotCTB4NWMwMGMwMDAsIDB4NWMwMDQ4MDAsIDB4NWMwMDY4MDAsIDB4NWMwMDcwMDAsCi0JMHgxYzAxZjAwMCwgMHg1OTM0MDAwZiwgMHg1OTM0MTQwYiwgMHg4MDA4MTA0MCwKLQkweDA0MDAxMDAyLCAweDQ4MGE2YzBiLCAweDgwMDAwNTQwLCAweDAyMDIwODAwLAotCTB4MDAwMjAyNzUsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTcsIDB4NDk0N2M4NTcsCi0JMHg0YzMwMDAwMCwgMHg4MjAwNjUwMCwgMHgwMDAwMDAzMCwgMHgwNDAwMDAwNiwKLQkweDRjMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA5MWYzLCAweDVjMDAwMDAwLAotCTB4MDQwMjAwMGIsIDB4OGMwMDA1MGUsIDB4MDQwMDAwMDYsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDI2NywgMHgwNDAyMDAwNiwgMHg0OTM3Yzg1NywgMHgwNDAxZmMzNiwKLQkweDgwMDAwNTgwLCAweDVjMDA2MDAwLCAweDFjMDFmMDAwLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWY3ZmMsIDB4NDgwM2M4NTcsIDB4NGM1ODAwMDAsCi0JMHg0ZDQ0MDAwMCwgMHg0MDAwMTAwMCwgMHg4MDAwMGQ4MCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwN2YwLCAweDRjMDQwMDAwLCAweDQwMDY4ODAwLCAweDRjMDgwMDAwLAotCTB4NDAwODAwMDAsIDB4MDQwMWZmZGQsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsCi0JMHg4MDA0MDgwMCwgMHg4MDU4YjA0MCwgMHgwNDAyMDdmNywgMHg1YzAyODgwMCwKLQkweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDRjNWMwMDAwLCAweDU5MzQwNDAwLAotCTB4ODIwMGJkODAsIDB4MDAwMDA2MDYsIDB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsCi0JMHg0YzVjMDAwMCwgMHg1OTM0MDQwMCwgMHg4MjAwYmQ4MCwgMHgwMDAwMDQwNCwKLQkweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDRjNWMwMDAwLCAweDU5MzQwNDAwLAotCTB4ODIwMGJkODAsIDB4MDAwMDA0MDQsIDB4MDQwMDAwMDMsIDB4ODIwMGJkODAsCi0JMHgwMDAwMDYwNiwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg0YzVjMDAwMCwKLQkweDRjNjAwMDAwLCAweDU5MzQwNDAwLCAweDgyMDBiZDAwLCAweDAwMDBmZjAwLAotCTB4ODI1Y2M1ODAsIDB4MDAwMDA0MDAsIDB4MDQwMDAwMDMsIDB4ODI1Y2M1ODAsCi0JMHgwMDAwMDYwMCwgMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwKLQkweDRjNWMwMDAwLCAweDU5MzQwNDAwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4ODIwMGJkODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDMsIDB4ODIwMGJkODAsCi0JMHgwMDAwMDAwNSwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg1YzAwMDAwMCwKLQkweDRjMDAwMDAwLCAweDQ4MDNjODU3LCAweDRjNWMwMDAwLCAweDU5MzQwNDAwLAotCTB4ODIwMDA1MDAsIDB4MDAwMGZmMDAsIDB4ODQwMGI5YzAsIDB4ODA1YzA1ODAsCi0JMHg0OTM3Yzg1NywgMHg0ODAzYzg1NywgMHg0ODAyNmMwMCwgMHg1YzAwYjgwMCwKLQkweDFjMDFmMDAwLCAweDRjMDQwMDAwLCAweDRjMDgwMDAwLCAweDU5MmMwMjA3LAotCTB4OGMwMDA1MGMsIDB4MDQwMDAwMGYsIDB4NTkyZThjMDYsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDA4MCwgMHg4NDAwMDU0OCwgMHg0ZDNjMDAwMCwgMHg0MjAyNzgwMCwKLQkweDAwMDAxMDAwLCAweDA0MDFmZjhkLCAweDVjMDI3ODAwLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsCi0JMHg4MDAwMDU4MCwgMHgwNDAxZjdmYywgMHg1OTJjMDQwYiwgMHg4MjAwMDUwMCwKLQkweDAwMDBlMDAwLCAweDgyMDAwNTgwLCAweDAwMDA2MDAwLCAweDA0MDAwMDE5LAotCTB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMTYsIDB4ODM2YzA1ODAsCi0JMHgwMDAwMDAwMiwgMHgwNDAyMDEwNiwgMHg1OWE4MDAyNiwgMHg4MjAwMGQwMCwKLQkweDAwMDAwMDM4LCAweDA0MDIwMDA1LCAweDU5YTgwODMyLCAweDgwMDQwOWMwLAotCTB4MDQwMDAwMGMsIDB4MDQwMWYwZmUsIDB4ODIwMDBkMDAsIDB4MDAwMDAwMDMsCi0JMHg4MjA0MGQ4MCwgMHgwMDAwMDAwMywgMHgwNDAyMDBmOSwgMHg4MjAwMGQwMCwKLQkweDAwMDAwMDI4LCAweDA0MDIwMDAzLCAweDhjMDAwNTBjLCAweDA0MDAwMGY0LAotCTB4NTkyYzEwMGEsIDB4ODIwODA1MDAsIDB4ZmYwMDAwMDAsIDB4MDQwMjAwZDIsCi0JMHg1OWE4MDAxMCwgMHg4MDA4MDU4MCwgMHgwNDAwMDBjYywgMHg1OTJjMGMwYiwKLQkweDgyMDQwZDAwLCAweDAwMDBlMDAwLCAweDgyMDQwNDgwLCAweDAwMDA4MDAwLAotCTB4MDQwMjEwY2MsIDB4NTkyZThjMDYsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsCi0JMHgwNDAwMTAwNywgMHg4MzQ0MDU4MCwgMHgwMDAwZmZmZiwgMHgwNDAyMDBiMywKLQkweDgwMDQwOWMwLCAweDA0MDIwMGZlLCAweDA0MDFmMGIwLCAweDgwMDQwOWMwLAotCTB4MDQwMjAwZmIsIDB4NDE3ODQwMDAsIDB4MDQwMWZlYWEsIDB4MDQwMjAwZTIsCi0JMHg1OTM0MjIwNCwgMHg1OTJjMDAwZCwgMHg4MDEwMDQ4MCwgMHgwNDAwMTBiYywKLQkweDQyMDI3MDAwLCAweDAwMDAwMDUzLCAweDU5MmMyNDA5LCAweDgyMTAwNTAwLAotCTB4ZmZmZmZmMDAsIDB4MDQwMjAwYWEsIDB4NDgxM2M4NTcsIDB4NTkyYzAwMGMsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDA4MywgMHg4MjEwMDU4MCwgMHgwMDAwMDAwNCwKLQkweDA0MDAwMGEwLCAweDgyMTAwNTgwLCAweDAwMDAwMDUxLCAweDA0MDAwMDlkLAotCTB4ODIxMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMTYsIDB4ODIxMDA1ODAsCi0JMHgwMDAwMDAyMCwgMHgwNDAwMDA0YiwgMHg4MjEwMDU4MCwgMHgwMDAwMDAyNCwKLQkweDA0MDAwMDQyLCAweDgyMTAwNTgwLCAweDAwMDAwMDIxLCAweDA0MDAwMDQyLAotCTB4ODIxMDA1ODAsIDB4MDAwMDAwNTAsIDB4MDQwMDAwMzcsIDB4ODIxMDA1ODAsCi0JMHgwMDAwMDA1MiwgMHgwNDAwMDAzMSwgMHg4MjEwMDU4MCwgMHgwMDAwMDAwNSwKLQkweDA0MDIwMDZiLCAweDQyMDI3MDAwLCAweDAwMDAwMDAxLCAweDA0MDFmMDFiLAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwMDIsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsCi0JMHgwNDAwMDAxNiwgMHgwNDAxZmY0NSwgMHgwNDAwMDAxNCwgMHg1OTM0MDIxMiwKLQkweDgyMDAwNTAwLCAweDAwMDBmZjAwLCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLAotCTB4MDQwMjAwMGMsIDB4NTlhODAwMjYsIDB4OGMwMDA1MDYsIDB4MDQwMjAwNmYsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAwOCwgMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwKLQkweDAwZmYwMDAwLCAweDgyMDAwNTgwLCAweDAwZmYwMDAwLCAweDA0MDAwMDAzLAotCTB4MDQwMWY5ZDYsIDB4MDQwMjAwNjUsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsCi0JMHgwNDAwMDA4MSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAxMCwgMHg0OTM2NjAwOSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDgzMzgwNTgwLCAweDAwMDAwMDAyLAotCTB4MDQwMDAwMDMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMGIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNjNywgMHgwNDAxZjA0NCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAwMCwKLQkweDA0MDFmMDAzLCAweDQyMDI3MDAwLCAweDAwMDAwMDA0LCAweDA0MDFmZjMwLAotCTB4MDQwMjAwNzQsIDB4MDQwMWYwMzYsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMzMsCi0JMHgwNDAxZjAwNiwgMHg0MjAyNzAwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjAwMywKLQkweDQyMDI3MDAwLCAweDAwMDAwMDAzLCAweDA0MDFmZjFjLCAweDA0MDIwMDY5LAotCTB4NTlhODAwNmYsIDB4OGMwMDA1MDIsIDB4MDQwMDAwMTYsIDB4MDQwMWZmMGIsCi0JMHgwNDAwMDAxNCwgMHg1OTM0MDIxMiwgMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDA0MDIwMDBjLCAweDU5YTgwMDI2LAotCTB4OGMwMDA1MDYsIDB4MDQwMjAwMzUsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDgsCi0JMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwgMHgwMGZmMDAwMCwgMHg4MjAwMDU4MCwKLQkweDAwZmYwMDAwLCAweDA0MDAwMDAzLCAweDA0MDFmOTljLCAweDA0MDIwMDJiLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDAwNDcsIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAxMCwgMHg0OTM2NjAwOSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDAzLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDksIDB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4MDQwMWYwMGEsCi0JMHg4MjEwMjU4MCwgMHgwMDAwMDAxMSwgMHgwNDAyMDAzMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODkyLCAweDA0MDAwMDM0LCAweDRhMDI2NDA2LCAweDAwMDAwMDEwLAotCTB4NDkzNjYwMDksIDB4NDkyZTYwMDgsIDB4NDkzMjU4MDgsIDB4ODEzNjY5YzAsCi0JMHgwNDAwMDAwNywgMHg1OTJjMGMwYiwgMHg4YzA0MGQxOCwgMHgwNDAwMDAwNCwKLQkweDU5MzQwMjAwLCAweDg0MDAwNTE0LCAweDQ4MDI2YTAwLCAweDAyMDFmODAwLAotCTB4MDAwMjA4ZDgsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjdmZCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwYSwKLQkweDA0MDFmMDE4LCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDA0MDFmMDE1LAotCTB4NDIwMDEwMDAsIDB4MDAwMDAwMTYsIDB4MDQwMWYwMTIsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAxNywgMHgwNDAxZjAwZiwgMHg0MjAwMTAwMCwgMHgwMDAwMDAxOCwKLQkweDA0MDFmMDBjLCAweDQyMDAxMDAwLCAweDAwMDAwMDFiLCAweDA0MDFmMDA5LAotCTB4NDIwMDEwMDAsIDB4MDAwMDAwMWUsIDB4MDQwMWYwMDYsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAyNCwgMHgwNDAxZjAwMywgMHg0MjAwMTAwMCwgMHgwMDAwMDAyMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDE5LCAweDQyMDI4MDAwLCAweDAwMDAwMDMxLAotCTB4MDQwMWY3ZGYsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsIDB4MDQwMWYwMDMsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwYSwgMHg0MTc4MTAwMCwgMHgwNDAxZjdmNywKLQkweDQyMDAwODAwLCAweDAwMDAwMDA5LCAweDU5MzQxNDAwLCAweDA0MDFmN2YzLAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMDgsIDB4MDQwMWYwMDUsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNywgMHg0MTZjMTAwMCwgMHgwNDAxZjdlYywgMHg0MTc4MDgwMCwKLQkweDQxNzgxMDAwLCAweDA0MDFmN2NhLCAweDQyMDI4MDAwLCAweDAwMDAwMDAwLAotCTB4MDQwMWY3ZmIsIDB4ODIwMDRkODAsIDB4MDAwMDAwMWQsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg4MjAwNGQ4MCwgMHgwMDAwMDAxYSwgMHgwNDAyMDAwNCwKLQkweDQwMTAxMDAwLCAweDQwMDAwODAwLCAweDA0MDFmN2RjLCAweDgyMDA0ZDgwLAotCTB4MDAwMDAwMWIsIDB4MDQwMjAwMDMsIDB4NDAxODEwMDAsIDB4MDQwMWY3ZmEsCi0JMHg4MjAwNGQ4MCwgMHgwMDAwMDAxYywgMHgwNDAwMDdmNywgMHg4MjAwNGQ4MCwKLQkweDAwMDAwMDE5LCAweDA0MDAwN2I1LCAweDA0MDFmN2Q2LCAweDU5MmU2MDA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDkxZTMsIDB4MDQwMDA3YjMsIDB4NTkzMDBjMDYsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAxMSwgMHgwNDAyMDdkNiwgMHg4MzQ0MDU4MCwKLQkweDAwMDBmZmZmLCAweDA0MDIwMDA1LCAweDU5MzI2ODA5LCAweDgxMzY2OWMwLAotCTB4MDQwMDAwMGUsIDB4MDQwMWY3Y2YsIDB4NTkyYzEwMGEsIDB4ODIwODE1MDAsCi0JMHgwMGZmZmZmZiwgMHg0MTc4NDAwMCwgMHgwNDAxZmQ5ZSwgMHgwNDAyMDdkNiwKLQkweDU5MzAwMDA5LCAweDgwMDAwMWMwLCAweDA0MDAwMDAzLCAweDgxMzQwNTgwLAotCTB4MDQwMjA3YzQsIDB4NDkzNjYwMDksIDB4NTkyYzBjMGIsIDB4ODIwNDE1MDAsCi0JMHgwMDAwZTAwMCwgMHg4MjA4MDU4MCwgMHgwMDAwNjAwMCwgMHgwNDAwMDAxMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMTAwLCAweDgxMzY2OWMwLCAweDA0MDAwMDAyLAotCTB4NTkzNDBhMDQsIDB4NTkyYzAwMGQsIDB4ODAwNDA0ODAsIDB4MDQwMDE3YTAsCi0JMHg1OTMwMGEwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNywgMHgwNDAyMDdiMSwKLQkweDQ5MmU2MDA4LCAweDQyMDI3MDAwLCAweDAwMDAwMDU0LCAweDA0MDFmNzc0LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE2ZTYsIDB4MDQwMDA3YjQsIDB4MDQwMWY3YTksCi0JMHg0OTJmYzg1NywgMHg1OTJlNjAwOCwgMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwKLQkweDAwMTA5MWUzLCAweDA0MDAwMDQ3LCAweDU5MzAxNDA2LCAweDgyMDgwNTgwLAotCTB4MDAwMDAwMDUsIDB4MDQwMjAwNjEsIDB4NTkyYzAyMDcsIDB4OGMwMDA1MDAsCi0JMHgwNDAyMDA4NSwgMHg1OWE4MDAyMSwgMHg4MDAwMDFjMCwgMHgwNDAyMDA2YSwKLQkweDU5MzAxMjAzLCAweDgyMDgwNTgwLCAweDAwMDAwMDA3LCAweDA0MDIwMDU3LAotCTB4NTkyZThjMDYsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMjEwMzIsCi0JMHg0MTc4NDAwMCwgMHg1OTJjMTAwOSwgMHg4MjA4MTUwMCwgMHgwMGZmZmZmZiwKLQkweDA0MDFmZDYwLCAweDA0MDIwMDVmLCAweDU5MzAwMDA5LCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMDMsIDB4ODEzNDA1ODAsIDB4MDQwMjAwNDgsIDB4NGQzMDAwMDAsCi0JMHg1OTJlNjAxMywgMHg0OTMzYzg1NywgMHg4MzMwMDU4MCwgMHhmZmZmZmZmZiwKLQkweDA0MDAwMDBkLCAweDAyMDFmODAwLCAweDAwMTA5MWUzLCAweDVjMDI2MDAwLAotCTB4MDQwMDAwMjksIDB4NTkxYzE0MDYsIDB4ODIwODA1ODAsIDB4MDAwMDAwMDYsCi0JMHgwNDAwMDA0NiwgMHg4MjA4MDU4MCwgMHgwMDAwMDAxMSwgMHgwNDAwMDA0MywKLQkweDA0MDFmMDAyLCAweDVjMDI2MDAwLCAweDU5YTgwMDEwLCAweDU5MmMxMDBhLAotCTB4ODIwODE1MDAsIDB4MDBmZmZmZmYsIDB4ODAwODE1ODAsIDB4MDQwMjAwMTcsCi0JMHg1OTJjMTAwOSwgMHg4MjA4MTUwMCwgMHgwMGZmZmZmZiwgMHg4MDA4MTU4MCwKLQkweDA0MDAwMDBmLCAweDQ5MzY2MDA5LCAweDQ5MmU2MDA4LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwOTIsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4ODAwMDA1ODAsCi0JMHgxYzAxZjAwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwYSwgMHgwNDAxZjAwYywKLQkweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDA0MDFmMDA5LCAweDQyMDAxMDAwLAotCTB4MDAwMDAwMTQsIDB4MDQwMWYwMDYsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTgsCi0JMHgwNDAxZjAwMywgMHg0MjAwMTAwMCwgMHgwMDAwMDAzYywgMHg0OTJmYzg1NywKLQkweDQ4MGJjODU3LCAweDQyMDAwODAwLCAweDAwMDAwMDE5LCAweDQyMDI4MDAwLAotCTB4MDAwMDAwMzEsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWY3ZTksCi0JMHg0OTJmYzg1NywgMHg0ODAzYzg1NywgMHg0ODBiYzg1NywgMHg0MDAwMDgwMCwKLQkweDA0MDFmN2Y3LCAweDQ5MmZjODU3LCAweDQyMDAwODAwLCAweDAwMDAwMDBhLAotCTB4NDE3ODEwMDAsIDB4MDQwMWY3ZjIsIDB4NDkzM2M4NTcsIDB4NTkzMDA0MDYsCi0JMHg0ODAzYzg1NywgMHg1OTMwMDIwMywgMHg0ODAzYzg1NywgMHg1OTMwMDAwOSwKLQkweDQ4MDNjODU3LCAweDQyMDI4MDAwLCAweDAwMDAwMDA4LCAweDQxNzgwODAwLAotCTB4NDE3ODEwMDAsIDB4MDQwMWY3ZTgsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMWUsCi0JMHgwNDAxZjdmMCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdlZCwKLQkweDgyMDA0ZDgwLCAweDAwMDAwMDFkLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4ODIwMDRkODAsIDB4MDAwMDAwMWEsIDB4MDQwMjAwMDMsIDB4NDAxMDEwMDAsCi0JMHgwNDAxZjdkYywgMHg4MjAwNGQ4MCwgMHgwMDAwMDAxYiwgMHgwNDAyMDAwMywKLQkweDQwMTgxMDAwLCAweDA0MDFmN2Q3LCAweDgyMDA0ZDgwLCAweDAwMDAwMDFjLAotCTB4MDQwMDA3ZDQsIDB4ODIwMDRkODAsIDB4MDAwMDAwMTksIDB4MDQwMDA3ZDEsCi0JMHgwNDAxZjdkNSwgMHgwMjAxZjgwMCwgMHgwMDEwYTZlNiwgMHgwNDAyMDdkNywKLQkweDQyMDI4MDAwLCAweDAwMDAwMDAwLCAweDA0MDFmN2RkLCAweDVjMDAwMDAwLAotCTB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsIDB4NTkzMDIwMDksIDB4ODAxMDIxYzAsCi0JMHgwNDAwMDAzNSwgMHg1ODEwMTQwMCwgMHg0ODEzYzg1NywgMHg0ODBiYzg1NywKLQkweDgyMDgxZDAwLCAweDAwMDAwMGZmLCAweDU5MzAwYzAzLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDgsIDB4MDQwMDAwMjIsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMGEsCi0JMHgwNDAwMDAxNywgMHg4MjA0MDU4MCwgMHgwMDAwMDAwYywgMHgwNDAwMDAxMCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDAyLCAweDA0MDAwMDE5LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDAwMTIsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDAwYiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDAwNCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDMzLCAweDA0MDIwMDE3LCAweDgyMGMwNTgwLAotCTB4MDAwMDAwMDksIDB4MDQwMDAwMGQsIDB4MDQwMWYwMTMsIDB4ODIwYzA1ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAwMDAwOSwgMHgwNDAxZjAwZiwgMHg4MjBjMDU4MCwKLQkweDAwMDAwMDBiLCAweDA0MDAwMDA1LCAweDA0MDFmMDBiLCAweDgyMGMwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMDgsIDB4ODIwODFkMDAsIDB4ZmZmZmZmMDAsCi0JMHg4NDBjMDFjMCwgMHg4MDBjMDU0MCwgMHg0ODA3Yzg1NywgMHg0ODAzYzg1NywKLQkweDQ4MDAyNDAwLCAweDFjMDFmMDAwLCAweDU5OWMwMDE3LCAweDhjMDAwNTBhLAotCTB4MDQwMDAwMDMsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4NTlhODAwMjYsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDAyOCwgMHgwNDAwMDAwOCwgMHg0MjAyODgwMCwKLQkweDAwMDAwN2ZkLCAweDAyMDFmODAwLCAweDAwMDIwMjY3LCAweDA0MDIwMDAzLAotCTB4NTkzNDAwMGEsIDB4OGMwMDA1MDQsIDB4MWMwMWYwMDAsIDB4NGQzMDAwMDAsCi0JMHg1OTM0MDAwZSwgMHg4MDAyNjU0MCwgMHgwNDAwMDAwNiwgMHgwMjAxZjgwMCwKLQkweDAwMTA2MDBlLCAweDAyMDAwODAwLCAweDAwMTA2MWU1LCAweDQ5N2E2ODBlLAotCTB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsCi0JMHg4MDAwMDU4MCwgMHg0MDAwMTgwMCwgMHg0MDAyODgwMCwgMHg4MjA4MDU4MCwKLQkweDAwMDAwMDA4LCAweDA0MDIwMDAzLCAweDQyMDAxODAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDQwMjAwMGEsIDB4MDQwMWZkNGYsCi0JMHgwNDAyMDAwOCwgMHg4MDBjMTljMCwgMHgwNDAwMDAwNCwgMHg1OTM0MDQwNSwKLQkweDhjMDAwNTA4LCAweDA0MDAwMDAzLCAweDgwMDgxMDQwLCAweDA0MDAwMDA5LAotCTB4ODE0Njg4MDAsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMDE3ZjEsCi0JMHg4MDAwMDU4MCwgMHg1YzAyNjgwMCwgMHg1YzAyODgwMCwgMHgxYzAxZjAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDI2ODAwLCAweDVjMDI4ODAwLAotCTB4MWMwMWYwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDEsIDB4MDQwMWZiMGUsCi0JMHgwNDAyMDAzNCwgMHg1OWE4MDAyNiwgMHg4YzAwMDUwOCwgMHgwNDAyMDAzMSwKLQkweDU5MzQxMDBhLCAweDgyMDgxNTAwLCAweDAwMDBlMDAwLCAweDQyMDA3MDAwLAotCTB4MDAxMGIzM2YsIDB4NTgzODA0MDEsIDB4OGMwMDA1MDQsIDB4MDQwMjAwMWMsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMSwgMHg4MjA4MDU4MCwgMHgwMDAwNjAwMCwKLQkweDA0MDAwMDI0LCAweDU5MzQxYTA0LCAweDgyMGMwNDgwLCAweDAwMDAwODAwLAotCTB4MDQwMDEwMDQsIDB4NDIwMDA4MDAsIDB4MDAwMDBhMDAsIDB4MDQwMWYwMDksCi0JMHg4MjBjMDQ4MCwgMHgwMDAwMDQwMCwgMHgwNDAwMTAwNCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwNTAwLCAweDA0MDFmMDAzLCAweDQyMDAwODAwLCAweDAwMDAwMjAwLAotCTB4ODIwODA1ODAsIDB4MDAwMDIwMDAsIDB4MDQwMDAwMDIsIDB4ODAwNDA4YzIsCi0JMHg4MjA0MGQ0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAwZSwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA4LCAweDgyMDgwNTgwLCAweDAwMDAyMDAwLCAweDA0MDIwMDA0LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsIDB4MDQwMWYwMDYsIDB4ODIwODA1ODAsCi0JMHgwMDAwMDAwMCwgMHgwNDAyMDAwMywgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMiwKLQkweDQ4MDY2YzA0LCAweDFjMDFmMDAwLCAweDRhMDMzMDIwLCAweDAwMDAwMDAwLAotCTB4NGEwM2IxMDQsIDB4ODAwMDAwMDAsIDB4NDk3YjMwMjYsIDB4NDk3YjMwMjcsCi0JMHg0OTdiMzAyOCwgMHg0OTdiMzAyOSwgMHg0OTdiMzAyYiwgMHg0OTdiMzAyMSwKLQkweDRhMDNiMTA0LCAweDYwMDAwMDAxLCAweDFjMDFmMDAwLCAweDU5OWMwMDE4LAotCTB4NDgwM2M4NTYsIDB4NDk3YjMwMjQsIDB4NDk3YjMwMjUsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwZiwgMHg0ODAzMzAyMiwgMHgwNDAwMDAwOCwgMHg1OTljMDIxNiwKLQkweDgyMDAwNTAwLCAweDAwMDBmZmZmLCAweDA0MDIwMDAzLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDIsIDB4NDgwMzMwMjMsIDB4MWMwMWYwMDAsIDB4MDQwMWZmZjAsCi0JMHg0YTAzYzgyNiwgMHgwMDAwMDAwNCwgMHg1OTljMDIwOSwgMHg4MDAwMDU0MCwKLQkweDA0MDAwMDFmLCAweDU5OWMwMjA3LCAweDgwMDAwNTQwLCAweDA0MDAwMDA3LAotCTB4ODAwMDAwY2MsIDB4NTk5YzA4MGQsIDB4ODAwNDA0MDAsIDB4NDgwM2IxMDAsCi0JMHg0OTdiYjEwMiwgMHg1OWQ4MDEwMSwgMHg1OTljMDAwZCwgMHg0ODAzYjEwMCwKLQkweDU5OWMwMDBlLCAweDQ4MDNiMTAxLCAweDU5OWMwMjA3LCAweDgwMDAwNTQwLAotCTB4MDQwMjAwMDIsIDB4NDk3YmIxMDIsIDB4NTk5YzBhMDksIDB4ODIwNDA1NDAsCi0JMHgwMDQwMDAwMCwgMHg1OTk4MDgyMiwgMHg0ODAzYjEwMywgMHg0YTAzYjEwOSwKLQkweDAwMDAwMDA0LCAweDRhMDNiMTA0LCAweDEwMDAwMDAxLCAweDgwMDQwOWMwLAotCTB4MDQwMjAwMDQsIDB4NGEwMzMwMjAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsCi0JMHg0YTAzMzAyMCwgMHgwMDAwMDAwMiwgMHgwNDAxZjdmZCwgMHg1OTJjMDIwNCwKLQkweDQ5MmZjODU3LCAweDgwMDAwNTQwLCAweDA0MDAwMDA4LCAweDQyMDM0MDAwLAotCTB4MDAxMGIyYTAsIDB4NTlhMWQ4MWUsIDB4ODBlZGQ5YzAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHgwNDAxZjAwMywgMHg1OTMxZDgyMSwgMHg1OGVmNDAwYiwKLQkweDU4ZWMwMDA5LCAweDgwMDAwMWMwLCAweDA4MDIwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NTk5ODAwMmIsIDB4ODQwMDA1NDAsIDB4NDgwMzMwMmIsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDQwMywgMHg0MjAwMDAwMCwgMHgwMDEwYjY1NCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQ5MmZjODU3LCAweDU5OTgwMDI2LAotCTB4NTk5ODA4MjgsIDB4ODAwMDAwMDAsIDB4NDgwMzMwMjYsIDB4ODAwNDA5YzAsCi0JMHg0OTJmMzAyOCwgMHgwNDAwMDAwMywgMHg0OTJjMDgwMCwgMHgwNDAxZjAwMiwKLQkweDQ5MmYzMDI5LCAweDU5MmMwMDAxLCAweDgwMDAwZDQwLCAweDAyMDIwMDAwLAotCTB4MDAwMjAyZmIsIDB4MWMwMWYwMDAsIDB4NTk5ODAwMjYsIDB4NTk5ODA4MjgsCi0JMHg4MDAwMDAwMCwgMHg0ODAzMzAyNiwgMHg0OTJmYzg1NywgMHg4MDA0MDljMCwKLQkweDQ5MmYzMDI4LCAweDA0MDAwMDAzLCAweDQ5MmMwODAwLCAweDA0MDFmMDAyLAotCTB4NDkyZjMwMjksIDB4NTkyYzAwMDEsIDB4ODAwMDBkNDAsIDB4MDIwMjA4MDAsCi0JMHgwMDAyMDJmYiwgMHgwNDAyZDAwZSwgMHg1OTk4MDAyOSwgMHg4MDAyNWQ0MCwKLQkweDA0MDAwMDBmLCAweDU5OTgwMDI2LCAweDgwMDAwMDQwLCAweDQ4MDMzMDI2LAotCTB4MDQwMjAwMDIsIDB4NDgwMzMwMjgsIDB4NTkyYzAwMDAsIDB4NDgwMzMwMjksCi0JMHg0OTJmYzg1NywgMHg0OTJmYjEwNywgMHgwNDAwZDdmNCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjU0LCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDA0MDJlMDFkLAotCTB4NTlkYTU5MDgsIDB4NDk2YTU4MDAsIDB4NDEyZWQwMDAsIDB4ODE1ZWI4MDAsCi0JMHgwNDAwZTdmYywgMHg1OWM4MDAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMTIwMCwKLQkweDQ4MDM5MDAwLCAweDA0MDA2MDE5LCAweDU5ZDgwMTBhLCAweDU5ZDgwOTBhLAotCTB4ODAwNDBkODAsIDB4MDQwMjA3ZmQsIDB4OTAwMDAxYzAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAxMywgMHg0ODAzYzAxMSwgMHg1OTk4MDAyYiwgMHg4NDAwMDUwMCwKLQkweDQ4MDMzMDJiLCAweDU5ZTAwMDE3LCAweDhjMDAwNTA4LCAweDA0MDAwMDAzLAotCTB4NGEwM2MwMTcsIDB4MDAwMDAwMDMsIDB4NDIwM2UwMDAsIDB4MzAwMDAwMDEsCi0JMHg1OWQ4MDEwNSwgMHg4MjAwMDUwMCwgMHgwMDAxODc4MCwgMHgwMjAyMDAwMCwKLQkweDAwMDIwNDgyLCAweDFjMDFmMDAwLCAweDU5OTgwMDJiLCAweDg0MDAwNTQwLAotCTB4NDgwMzMwMmIsIDB4MDQwMWY3ZjcsIDB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsCi0JMHg0ODAzYzg1NywgMHg0OTJmYzg1NywgMHg0OTQzYzg1NywgMHg0ODA3Yzg1NywKLQkweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDQ5NDI1YTA2LCAweDQ4MDY1YTA4LAotCTB4NGEwMjVjMDYsIDB4MDAwMGZmZmYsIDB4ODEzMjYxYzAsIDB4MDQwMDAwMDMsCi0JMHg1OTMwMDQwMiwgMHg0ODAyNWMwNiwgMHg4MzJjMDQwMCwgMHgwMDAwMDAwOSwKLQkweDA0MDExMDAwLCAweDQ4MDNjODQwLCAweDRhMDNjODQyLCAweDAwMDAwMDBiLAotCTB4MDQwMTEwMDAsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NTQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHgwMjAxZjAwMCwgMHgwMDAyMDQ2NCwKLQkweDU5YTgwMDE3LCAweDgyMDAwYzgwLCAweDAwMDAwMDBhLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4MGMwMWY4MDksIDB4NGEwMzg4MDUsIDB4MDAwMDAwZjAsCi0JMHg1OWM0MDBhMywgMHg4MjAwMDUwMCwgMHgwMjg3MDAwMCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDFjMDFmMDAwLCAweDAwMTA0Yzk5LCAweDAwMTA0YzI1LAotCTB4MDAxMDRjNDAsIDB4MDAxMDRjNjksIDB4MDAxMDRjOGMsIDB4MDAxMDRjYzYsCi0JMHgwMDEwNGNkOCwgMHgwMDEwNGM0MCwgMHgwMDEwNGNhYSwgMHgwMDEwNGMyNCwKLQkweDFjMDFmMDAwLCAweDRhMDM4ODA4LCAweDAwMDAwMDA0LCAweDA0MDFmOGY5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDUwN2IsIDB4NTljNDA4MDUsIDB4OGMwNDBkMGUsCi0JMHgwNDAyMDAxMywgMHg4YzA0MGQwYSwgMHgwNDAyMDAwYiwgMHg4YzA0MGQwYywKLQkweDA0MDIwMDA2LCAweDhjMDQwZDA4LCAweDA0MDAwMDBkLCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDMsIDB4MDQwMWYwMGEsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDAsCi0JMHgwNDAxZjAwNywgMHg0MjAwMDAwMCwgMHgwMDEwYjY0MiwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDRhMDM1MDE3LCAweDAwMDAwMDAyLCAweDFjMDFmMDAwLAotCTB4NGEwMzg4MDgsIDB4MDAwMDAwMDIsIDB4MDQwMWY4ZGUsIDB4NTljNDA4MDUsCi0JMHg4YzA0MGQwOCwgMHgwNDAyMDAyMSwgMHg4YzA0MGQwYywgMHgwNDAyMDAxYywKLQkweDhjMDQwZDBlLCAweDA0MDIwMDE3LCAweDgyMDQwNTAwLCAweDAwMDAwMGYwLAotCTB4MDQwMjAwMWMsIDB4MDIwMWY4MDAsIDB4MDAxMDUwN2IsIDB4NGEwMzg4MDgsCi0JMHgwMDAwMDA4MCwgMHg1OWM0MDAwMiwgMHg4NDAwMDUwYywgMHg0ODAzODgwMiwKLQkweDA0MDFmOWQ3LCAweDRkM2MwMDAwLCAweDQyMDI3ODAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDk2NDAsIDB4NWMwMjc4MDAsIDB4NGEwMzg4MDgsCi0JMHgwMDAwMDA4MCwgMHg0YTAzNTAxNywgMHgwMDAwMDAwOSwgMHgwNDAxZjAwOSwKLQkweDRhMDM1MDE3LCAweDAwMDAwMDAxLCAweDA0MDFmMDA2LCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDAsIDB4MDQwMWYwMDMsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDMsCi0JMHgxYzAxZjAwMCwgMHgwNDAxZjhiNywgMHg0YTAzODgwOCwgMHgwMDAwMDA4MCwKLQkweDU5YzQwODA1LCAweDhjMDQwZDBhLCAweDA0MDIwMDFiLCAweDhjMDQwZDBjLAotCTB4MDQwMjAwMTYsIDB4OGMwNDBkMGUsIDB4MDQwMjAwMTEsIDB4ODIwNDA1MDAsCi0JMHgwMDAwMDBmMCwgMHgwNDAyMDAxNiwgMHg1OWM0MDAwMiwgMHg4NDAwMDUwYywKLQkweDQ4MDM4ODAyLCAweDA0MDFmOWIyLCAweDRkM2MwMDAwLCAweDQyMDI3ODAwLAotCTB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDk2NDAsIDB4NWMwMjc4MDAsCi0JMHg0YTAzNTAxNywgMHgwMDAwMDAwOSwgMHgwNDAxZjAwOSwgMHg0YTAzNTAxNywKLQkweDAwMDAwMDAxLCAweDA0MDFmMDA2LCAweDRhMDM1MDE3LCAweDAwMDAwMDAwLAotCTB4MDQwMWYwMDMsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDIsIDB4MWMwMWYwMDAsCi0JMHg0YTAzODgwOCwgMHgwMDAwMDAwOCwgMHg1OWM0MDgwNSwgMHg4YzA0MGQwYywKLQkweDA0MDIwMDA2LCAweDhjMDQwZDBlLCAweDA0MDAwMDA2LCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMDMsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHgwNDAxZjhkMywgMHg1OWM0MDgwNSwgMHg4YzA0MGQwYywKLQkweDA0MDIwMDBkLCAweDRjMDQwMDAwLCAweDA0MDFmODgyLCAweDVjMDAwODAwLAotCTB4OGMwNDBkMGEsIDB4MDQwMjAwMDYsIDB4OGMwNDBkMGUsIDB4MDQwMDAwMDYsCi0JMHg0YTAzNTAxNywgMHgwMDAwMDAwMSwgMHgwNDAxZjAwMywgMHg0YTAzNTAxNywKLQkweDAwMDAwMDAyLCAweDFjMDFmMDAwLCAweDRhMDM4ODA4LCAweDAwMDAwMDA4LAotCTB4NDIwMDEwMDAsIDB4MDAxMDRkMmMsIDB4MDIwMWY4MDAsIDB4MDAxMDVkYmQsCi0JMHg1OWM0MDgwNSwgMHg4YzA0MGQwYSwgMHgwNDAyMDAwZCwgMHg4YzA0MGQwOCwKLQkweDA0MDIwMDBiLCAweDhjMDQwZDBjLCAweDA0MDIwMDA2LCAweDhjMDQwZDBlLAotCTB4MDQwMDAwMGQsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMGEsCi0JMHg0YTAzNTAxNywgMHgwMDAwMDAwMCwgMHgwNDAxZjAwNywgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjQyLCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDQsIDB4MWMwMWYwMDAsIDB4MDQwMWY4YTYsIDB4MDQwMWY4NTksCi0JMHg1OWM0MDgwNSwgMHg4YzA0MGQwYSwgMHgwNDAyMDAwYiwgMHg4YzA0MGQwYywKLQkweDA0MDIwMDA2LCAweDhjMDQwZDBlLCAweDA0MDAwMDA5LCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMDYsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDAsCi0JMHgwNDAxZjAwMywgMHg0YTAzNTAxNywgMHgwMDAwMDAwMiwgMHgxYzAxZjAwMCwKLQkweDRhMDM4ODA4LCAweDAwMDAwMDA0LCAweDA0MDFmODQ2LCAweDU5YzQwODA1LAotCTB4OGMwNDBkMGEsIDB4MDQwMjAwMTAsIDB4OGMwNDBkMDgsIDB4MDQwMjAwMGIsCi0JMHg4YzA0MGQwYywgMHgwNDAyMDAwNiwgMHg4YzA0MGQwZSwgMHgwNDAwMDAwYywKLQkweDRhMDM1MDE3LCAweDAwMDAwMDAxLCAweDA0MDFmMDA5LCAweDRhMDM1MDE3LAotCTB4MDAwMDAwMDAsIDB4MDQwMWYwMDYsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDMsCi0JMHgwNDAxZjAwMywgMHg0YTAzNTAxNywgMHgwMDAwMDAwMiwgMHgxYzAxZjAwMCwKLQkweDA0MDFmOTFkLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU5YTgwODA1LAotCTB4OGMwNDBkMGMsIDB4MDQwMDAwMTUsIDB4ODQwNDBkMGMsIDB4NDgwNzUwMDUsCi0JMHg0YTAzODgwNSwgMHgwMDAwMDAxMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhNCwKLQkweDU5YzQwMDA1LCAweDhjMDAwNTA4LCAweDA0MDAwMDA4LCAweDRhMDM4ODA4LAotCTB4MDAwMDAwMDgsIDB4NGEwMzUwMzMsIDB4MDAwMDAwMDEsIDB4NDIwMmQ4MDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAxYSwgMHg1OWM0MDAwNiwgMHg4NDAwMDU0OCwKLQkweDQ4MDM4ODA2LCAweDA0MDFmMDE2LCAweDU5YTgwMDE3LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDAwMGMsIDB4NTlhODAwMTcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAyMDAwYywgMHg0MjAwMDAwMCwgMHgwMDEwYjY0MiwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDRhMDM1MDE3LCAweDAwMDAwMDA4LAotCTB4MDQwMWYwMDcsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NDIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg0YTAzNTAxNywgMHgwMDAwMDAwNCwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDRjMDQwMDAwLCAweDRjMDgwMDAwLCAweDQyMDAwODAwLAotCTB4MDAwMDAwNjQsIDB4NDIwMDEwMDAsIDB4MDAxMDRkMmMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWRiMiwgMHg1YzAwMTAwMCwgMHg1YzAwMDgwMCwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDRjMDQwMDAwLCAweDAyMDFmODAwLCAweDAwMTA2OThjLAotCTB4NGRmMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDZiNzEsIDB4NWMwM2UwMDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwgMHgwNDAxZmZiYSwgMHg1YzAwMDgwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRjMDQwMDAwLCAweDRjMDgwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmI3MSwgMHg1YzAzZTAwMCwgMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwKLQkweDU5YzQwMDA2LCAweDg0MDAwNTAwLCAweDQ4MDM4ODA2LCAweDAyMDFmODAwLAotCTB4MDAxMDZjMzIsIDB4NDk3Yjg4ODAsIDB4MDIwMWY4MDAsIDB4MDAxMGE3ZTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTdmNSwgMHgwMjAxZjgwMCwgMHgwMDEwMTg4NiwKLQkweDRhMDM1MDRjLCAweDAwMDAwMDA0LCAweDQyMDJkODAwLCAweDAwMDAwMDA0LAotCTB4NGEwMzg4MDUsIDB4MDAwMDAwMDEsIDB4NDIwMDEwMDAsIDB4MDAxMDRkMmMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWRiZCwgMHgwMjAxZjgwMCwgMHgwMDEwMDcxYSwKLQkweDA0MDFmOGJmLCAweDA0MDAwMDA2LCAweDQyMDA2MDAwLCAweGZlZmZmZmZmLAotCTB4NDE3ODY4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQwYWQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDQ4YywgMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwKLQkweDAwMTAxNWZhLCAweDVjMDAxMDAwLCAweDVjMDAwODAwLCAweDFjMDFmMDAwLAotCTB4NTljNDAwMDgsIDB4OGMwMDA1MDgsIDB4MDQwMjAwMDcsIDB4NGEwMzg4MDgsCi0JMHgwMDAwMDAxMCwgMHg0MjAxZDAwMCwgMHgwMDAwMTM4OCwgMHgwMjAxZjgwMCwKLQkweDAwMTA1ZGQyLCAweDFjMDFmMDAwLCAweDRjMDQwMDAwLCAweDU5YTgwODMzLAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDAsIDB4MDQwMDAwMGIsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDAwMSwgMHgwNDAwMDAwYiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMiwKLQkweDA0MDAwMDBiLCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDBiLAotCTB4MDQwMWYwNTUsIDB4NGEwMzUwMTcsIDB4MDAwMDAwMDAsIDB4MDQwMWYwMDksCi0JMHg0YTAzNTAxNywgMHgwMDAwMDAwNCwgMHgwNDAxZjAwNiwgMHg0YTAzNTAxNywKLQkweDAwMDAwMDAxLCAweDA0MDFmMDAzLCAweDRhMDM1MDE3LCAweDAwMDAwMDA3LAotCTB4NDk3Yjg4ODAsIDB4NGEwMzg4OTMsIDB4MDAwMDAwMDEsIDB4NDE3ODAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTY3MCwgMHgwMjAxZjgwMCwgMHgwMDEwNmMzMiwKLQkweDgzNmMwZDgwLCAweDAwMDAwMDA0LCAweDA0MDAwMDA4LCAweDU5YzQwMDA2LAotCTB4ODIwMDA1MDAsIDB4ZmZmZmZmMGYsIDB4ODIwMDA1NDAsIDB4MDQwMDAwMDEsCi0JMHg0ODAzODgwNiwgMHgwNDAxZjAwNywgMHg1OWM0MDAwNiwgMHg4MjAwMDUwMCwKLQkweGZmZmZmZjBmLCAweDgyMDAwNTQwLCAweDA0MDAwMDAwLCAweDQ4MDM4ODA2LAotCTB4MDQwMWY4NzMsIDB4MDQwMjAwMDUsIDB4NTljNDA4MDYsIDB4ODIwNDBkMDAsCi0JMHhmYmZmZmYwZiwgMHg0ODA3ODgwNiwgMHg1OWM0MDAwNSwgMHg4YzAwMDUzNCwKLQkweDA0MDIwMDMzLCAweDQyMDA2MDAwLCAweGZjMThmZmZmLCAweDQyMDA2ODAwLAotCTB4MDEwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQwYWQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTlhNCwgMHg1OWM0MDhhNCwgMHg4MjA0MGQwMCwgMHgwMDAwMDAwZiwKLQkweDgyMDQwZDgwLCAweDAwMDAwMDBjLCAweDA0MDIwOGE5LCAweDA0MDFmODVjLAotCTB4MDQwMDAwMDYsIDB4NDIwMDYwMDAsIDB4ZmVmZmZmZmYsIDB4NDE3ODY4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDBhZCwgMHg4MzZjMGQ4MCwgMHgwMDAwMDAwNCwKLQkweDA0MDAwMDBmLCAweDA0MDFmODVhLCAweDA0MDIwMDA4LCAweDU5OTQwMDA1LAotCTB4ODIwMDA1ODAsIDB4MDAxMDNmMzcsIDB4MDQwMjAwMDQsIDB4NTk5NDAwMDQsCi0JMHg4MDAwMDFjMCwgMHgwNDAyMDAwNiwgMHg1OWE4MDg0ZCwgMHg0MjAwMTAwMCwKLQkweDAwMTA0ZDM5LCAweDAyMDFmODAwLCAweDAwMTA1ZGE3LCAweDRhMDM1MDMzLAotCTB4MDAwMDAwMDQsIDB4MDQwMWZlMzMsIDB4MDQwMWY4NDEsIDB4MDQwMjAwMDgsCi0JMHg1OWM0MDhhNCwgMHg4MjA0MGQwMCwgMHgwMDAwMDAwZiwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDBjLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDVjMDAwODAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGMwMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWRlMiwgMHg0YTAzNTAxMCwgMHgwMGZmZmZmZiwgMHg0OTdiNTAzMiwKLQkweDU5YTgwMDJhLCAweDgyMDAwNTAwLCAweGZmZmYwMDAwLCAweDQ4MDM1MDJhLAotCTB4NDk3Yjg4ODAsIDB4NDk3Yjg4OTMsIDB4NDE3ODAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMTY3MCwgMHg1OWM0MDAwMSwgMHg4MjAwMDUwMCwgMHhmZmZmZmNmZiwKLQkweDQ4MDM4ODAxLCAweDQyMDA2MDAwLCAweGZjMThmZmZmLCAweDQxNzg2ODAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQwYWQsIDB4NGEwMzg4MDgsIDB4MDAwMDAwMDAsCi0JMHg1YzAwMDAwMCwgMHg4MDAwMDFjMCwgMHgwMjAyMDgwMCwgMHgwMDEwM2YzNywKLQkweDRhMDM4ODA1LCAweDA0MDAwMGYwLCAweDU5YzQwMDA2LCAweDgyMDAwNTAwLAotCTB4ZmZmZmZmY2YsIDB4ODIwMDA1NDAsIDB4NDQwMDAwYzEsIDB4NDgwMzg4MDYsCi0JMHgxYzAxZjAwMCwgMHg0YzVjMDAwMCwgMHg1OWE4YjgzMiwgMHg4MjVjYmQ4MCwKLQkweDAwMDBhYWFhLCAweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDRjNWMwMDAwLAotCTB4NTk5Y2I4MTgsIDB4ODI1Y2JkMDAsIDB4MDAwMDAwMzAsIDB4ODI1Y2JkODAsCi0JMHgwMDAwMDAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg0YzVjMDAwMCwKLQkweDU5OWNiODE4LCAweDgyNWNiZDAwLCAweDAwMDAwMDMwLCAweDgyNWNiZDgwLAotCTB4MDAwMDAwMTAsIDB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsIDB4NGM1YzAwMDAsCi0JMHg1OTljYjgxOCwgMHg4MjVjYmQwMCwgMHgwMDAwMDAzMCwgMHg4MjVjYmQ4MCwKLQkweDAwMDAwMDIwLCAweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDU5YTgwMDA1LAotCTB4NDgwM2M4NTcsIDB4ODIwMDBkMDAsIDB4MDAwMDAwMTMsIDB4MDQwMDAwMjQsCi0JMHg1OTljMTAxNywgMHg0ZDNjMDAwMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAxMSwKLQkweDA0MDAwMDA2LCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAzOTNlLAotCTB4MDQwMjAwMGEsIDB4MDQwMWYwMTIsIDB4NDIwMjc4MDAsIDB4MDAwMDAwMDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwgMHgwNDAwMDAwZCwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDAzLCAweDA0MDFmMDAzLCAweDQyMDAzMDAwLCAweDAwMDAwMDA0LAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMGUsIDB4MDIwMWY4MDAsIDB4MDAxMGEyNWIsCi0JMHg1OTljMTAxNywgMHg4YzA4MTUwYSwgMHgwNDAyMDAwNywgMHg0MjAyODAwMCwKLQkweDAwMDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTAxZDkwLCAweDgwMDAwNTgwLAotCTB4MDQwMWY4MGQsIDB4NWMwMjc4MDAsIDB4MDQwMWYwMGEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzkzZSwgMHgwNDAwMDAwNywgMHg0MjAyODAwMCwgMHgwMDAwMDAwZiwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTBhMjViLAotCTB4MWMwMWYwMDAsIDB4NTlhODAwMDUsIDB4MDQwMDAwMDQsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAxMCwgMHgwNDAxZjAwMywgMHg4MjAwMDUwMCwgMHhmZmZmZmZlZiwKLQkweDQ4MDM1MDA1LCAweDQ4MDNjODU3LCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGM1ODAwMDAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2Y2EsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg0MjAwMDgwMCwgMHgwMDEwYmVmMCwgMHg1OWM0MDAwMywKLQkweDQ0MDAwODAwLCAweDU5YzQwMDA0LCAweDQ4MDAwODAxLCAweDU5YzQwMDBiLAotCTB4NDgwMDA4MDIsIDB4NTljNDAwOGUsIDB4NDgwMDA4MDMsIDB4NTljNDAwOGYsCi0JMHg0ODAwMDgwNCwgMHg1OWM0MDA5MCwgMHg0ODAwMDgwNSwgMHg1OWM0MDA5MSwKLQkweDQ4MDAwODA2LCAweDU5YzQwMDkyLCAweDQ4MDAwODA3LCAweDU5YzQwMDkzLAotCTB4NDgwMDA4MDgsIDB4NTljNDAwOTksIDB4NDgwMDA4MDksIDB4NTljNDAwOWUsCi0JMHg0ODAwMDgwYSwgMHg1OWM0MDBhYSwgMHg0ODAwMDgwYiwgMHg1OWM0MDBhZiwKLQkweDQ4MDAwODBjLCAweDU5YzQwMGIyLCAweDQ4MDAwODBkLCAweDU5YzQwMGIxLAotCTB4NDgwMDA4MGUsIDB4ODIwNDBjMDAsIDB4MDAwMDAwMGYsIDB4NDFjNDE4MDAsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAzMCwgMHg1ODBjMDA1MCwgMHg0NDAwMDgwMCwKLQkweDgwMDQwODAwLCAweDgwMGMxODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2ZiLAotCTB4NDFjNDE4MDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMjAsIDB4NTgwYzAwMTAsCi0JMHg0NDAwMDgwMCwgMHg4MDA0MDgwMCwgMHg4MDBjMTgwMCwgMHg4MDU4YjA0MCwKLQkweDA0MDIwN2ZiLCAweDQ5N2I4ODMwLCAweDQyMDBiMDAwLCAweDAwMDAwMDQwLAotCTB4NTljNDAwMzEsIDB4NDQwMDA4MDAsIDB4ODAwNDA4MDAsIDB4ODA1OGIwNDAsCi0JMHgwNDAyMDdmYywgMHg0OTdiODhhYywgMHg0MjAwYjAwMCwgMHgwMDAwMDAxMCwKLQkweDU5YzQwMGFkLCAweDQ0MDAwODAwLCAweDgwMDQwODAwLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZmMsIDB4NTljNDEwMDEsIDB4NGMwODAwMDAsIDB4ODQwODE1MGMsCi0JMHg0ODBiODgwMSwgMHg0YTAzNzBlNCwgMHgwMDAwMDMwMCwgMHg0YTAzNzBlNSwKLQkweGIwMDAwMDAwLCAweDQyMDAwODAwLCAweDAwMDAwODAwLCAweDgwMDQwODQwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTliODAwZTUsIDB4OGMwMDA1MzgsCi0JMHgwNDAyMDdmYiwgMHg0YTAzNzBlNCwgMHgwMDAwMDIwMCwgMHg0MjAwNjAwMCwKLQkweGZmZmZmZmZmLCAweDQyMDA2ODAwLCAweDgwMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDQwYWQsIDB4NGEwMzg4MDcsIDB4MDAwMDAwMDEsIDB4NDk3Yjg4MDcsCi0JMHg0YTAzODgwOCwgMHgwMDAwMDAxMCwgMHg0MjAwNjAwMCwgMHhmY2Y4ZmZmZiwKLQkweDQyMDA2ODAwLCAweDAxMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA0MGFkLAotCTB4NWMwMDEwMDAsIDB4NDgwYjg4MDEsIDB4NDIwMDA4MDAsIDB4MDAxMGJlZjAsCi0JMHg1MDA0MDAwMCwgMHg0ODAzODgwMywgMHg1ODA0MDAwMSwgMHg0ODAzODgwNCwKLQkweDU4MDQwMDAyLCAweDQ4MDM4ODBiLCAweDU4MDQwMDAzLCAweDQ4MDM4ODhlLAotCTB4NTgwNDAwMDQsIDB4NDgwMzg4OGYsIDB4NTgwNDAwMDUsIDB4NDgwMzg4OTAsCi0JMHg1ODA0MDAwNiwgMHg0ODAzODg5MSwgMHg1ODA0MDAwNywgMHg0ODAzODg5MiwKLQkweDU4MDQwMDA4LCAweDQ4MDM4ODkzLCAweDU4MDQwMDA5LCAweDQ4MDM4ODk5LAotCTB4NTgwNDAwMGEsIDB4NDgwMzg4OWUsIDB4NTgwNDAwMGIsIDB4NDgwMzg4YWEsCi0JMHg1ODA0MDAwYywgMHg0ODAzODhhZiwgMHg1ODA0MDAwZCwgMHg0ODAzODhiMiwKLQkweDU4MDQwMDBlLCAweDQ4MDM4OGIxLCAweDgyMDQwYzAwLCAweDAwMDAwMDBmLAotCTB4NDFjNDE4MDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMzAsIDB4NTAwNDAwMDAsCi0JMHg0ODAwMTg1MCwgMHg4MDA0MDgwMCwgMHg4MDBjMTgwMCwgMHg4MDU4YjA0MCwKLQkweDA0MDIwN2ZiLCAweDQxYzQxODAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDIwLAotCTB4NTAwNDAwMDAsIDB4NDgwMDE4MTAsIDB4ODAwNDA4MDAsIDB4ODAwYzE4MDAsCi0JMHg4MDU4YjA0MCwgMHgwNDAyMDdmYiwgMHg0OTdiODgzMCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDQwLCAweDUwMDQwMDAwLCAweDQ4MDM4ODMxLCAweDgwMDQwODAwLAotCTB4ODA1OGIwNDAsIDB4MDQwMjA3ZmMsIDB4NDk3Yjg4YWMsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAxMCwgMHg1MDA0MDAwMCwgMHg0ODAzODhhZCwgMHg4MDA0MDgwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2ZjLCAweDQ5N2I4ODgwLCAweDQxNzgwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDE2NzAsIDB4NTljNDA4YTQsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDAwZiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwYywgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDRhMDM4ODA1LCAweDA0MDAwMDAwLCAweDVjMDBiMDAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGM1ODAwMDAsIDB4NGNlODAwMDAsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY0MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDU5YzQxMDA4LCAweDRjMDgwMDAwLCAweDgyMDgwNTAwLCAweGZmZmZmZjdmLAotCTB4NDgwMzg4MDgsIDB4NTljNDAwMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDNlMDIsCi0JMHgwNDAwMDAwNSwgMHg0MjAxZDAwMCwgMHgwMDAwMDAxNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA1ZGQyLCAweDU5YzQwMDA2LCAweDgyMDAwNTAwLCAweGZmZmZmZjBmLAotCTB4NDgwMzg4MDYsIDB4NGEwMzg4MDUsIDB4MDAwMDAwMTAsIDB4NGEwMzg4MDgsCi0JMHgwMDAwMDAwNCwgMHg0MjAwYjAwMCwgMHgwMDAwMDA2NSwgMHg1OWM0MDAwNSwKLQkweDhjMDAwNTA4LCAweDA0MDIwMDEyLCAweDQyMDFkMDAwLCAweDAwMDAwM2U4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNmMzMiwgMHg0YTAzODgwOCwgMHgwMDAwMDAwOCwKLQkweDRhMDM1MDMzLCAweDAwMDAwMDAxLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMzAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGIyOSwgMHg0MjAwMDAwMCwgMHgwMDEwYjZhNywgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDAyMDFmODAwLCAweDAwMTAwZjQyLCAweDQ5N2I4ODgwLAotCTB4NTlhODAwMmEsIDB4ODIwMDA1MDAsIDB4MDAwMGZmZmYsIDB4NGMwMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTY3MCwgMHg1YzAwMDAwMCwgMHg0ODAzODg4MCwKLQkweDRhMDM4ODA4LCAweDAwMDAwMDAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDY1LAotCTB4NGEwMzg4MDUsIDB4MDAwMDAwZjAsIDB4MDIwMWY4MDAsIDB4MDAxMDE5YTQsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDBmMCwgMHg1OWM0MDAwNSwgMHg4MDA0MGQwMCwKLQkweDA0MDAwMDA4LCAweDQyMDFkMDAwLCAweDAwMDAwM2U4LCAweDAyMDFmODAwLAotCTB4MDAxMDVkZDIsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZjIsIDB4MDQwMWY3ZDEsCi0JMHg1OWM0MDAwNiwgMHg4MjAwMDU0MCwgMHgwMDAwMDBmMCwgMHg0ODAzODgwNiwKLQkweDU5YTgwMDFlLCAweDgwMDAwNTQwLCAweDA0MDIwMDAyLCAweDgwMDAwMDAwLAotCTB4NDgwMzg4OTMsIDB4ODAwMDA1ODAsIDB4NWMwMDEwMDAsIDB4NGRmMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTljYSwgMHg1YzAzZTAwMCwgMHg0ODBiODgwOCwKLQkweDVjMDFkMDAwLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGM1ODAwMDAsIDB4NGNlODAwMDAsIDB4NTljNDEwMDgsIDB4ODIwODA1MDAsCi0JMHhmZmZmZmY3ZiwgMHg0ODAzODgwOCwgMHg0YzA4MDAwMCwgMHg1OWM0MDAwNCwKLQkweDgyMDAwNTAwLCAweDAwMDAzZTAyLCAweDA0MDAwMDA1LCAweDQyMDFkMDAwLAotCTB4MDAwMDAwMTQsIDB4MDIwMWY4MDAsIDB4MDAxMDVkZDIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGIyOSwgMHg0MjAwMDAwMCwgMHgwMDEwYjZhOCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDAyMDFmODAwLCAweDAwMTAwZjQyLCAweDRhMDM4ODA4LAotCTB4MDAwMDAwMDIsIDB4ODAwMDA1ODAsIDB4NDgwMzg4ODAsIDB4NDgwMzg4OTMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMTY3MCwgMHg0MjAwYjAwMCwgMHgwMDAwMDM4NCwKLQkweDRhMDM4ODA1LCAweDAwMDAwMGYwLCAweDAyMDFmODAwLCAweDAwMTAxOWE0LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwZjAsIDB4NTljNDAwMDUsIDB4ODAwNDBkMDAsCi0JMHgwNDAwMDAxNSwgMHg4MjAwMDUwMCwgMHgwMDAwMDBkMCwgMHgwNDAyMDAxMiwKLQkweDQyMDFkMDAwLCAweDAwMDAwMDY3LCAweDAyMDFmODAwLCAweDAwMTA1ZGQyLAotCTB4ODA1OGIwNDAsIDB4MDQwMjA3ZWYsIDB4MDIwMWY4MDAsIDB4MDAxMDZjMzIsCi0JMHg0YTAzODgwOCwgMHgwMDAwMDAwOCwgMHg0YTAzNTAzMywgMHgwMDAwMDAwMSwKLQkweDQyMDJkODAwLCAweDAwMDAwMDAxLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MDQwMWYwMTAsIDB4NDk3Yjg4ODAsIDB4NTlhODAwMWUsIDB4ODAwMDA1NDAsCi0JMHgwNDAyMDAwMiwgMHg4MDAwMDAwMCwgMHg0ODAzODg5MywgMHg1OWE4MDAyYSwKLQkweDgyMDAwNTAwLCAweDAwMDBmZmZmLCAweDRjMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDE2NzAsIDB4NWMwMDAwMDAsIDB4NDgwMzg4ODAsIDB4ODAwMDA1ODAsCi0JMHg1YzAwMTAwMCwgMHg0ZGYwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTljYSwKLQkweDVjMDNlMDAwLCAweDQ4MGI4ODA4LCAweDVjMDFkMDAwLCAweDVjMDBiMDAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NTljNDAwMDQsIDB4ODIwMDA1MDAsCi0JMHgwMDAwM2UwMiwgMHgwNDAwMDAwYSwgMHgwMjAxZjgwMCwgMHgwMDEwNmMzMiwKLQkweDRhMDM4ODA4LCAweDAwMDAwMDA4LCAweDRhMDM1MDMzLCAweDAwMDAwMDAxLAotCTB4NDIwMmQ4MDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwNTIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGIyOSwgMHg0MjAwMDAwMCwgMHgwMDEwYjZhOSwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDAyMDFmODAwLCAweDAwMTAwZjQyLCAweDU5YzQwMDA2LAotCTB4ODQwMDA1MDgsIDB4NDgwMzg4MDYsIDB4NGEwMzg4MDUsIDB4MDAwMDAwMTAsCi0JMHg1OWE4MDgwNSwgMHg4NDA0MGQ0YywgMHg0ODA3NTAwNSwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDY0LCAweDQyMDAxMDAwLCAweDAwMTA0ZDJjLCAweDAyMDFmODAwLAotCTB4MDAxMDVkYTcsIDB4NGEwMzg4MDgsIDB4MDAwMDAwMDAsIDB4NDk3Yjg4ODAsCi0JMHg0YTAzODgwNSwgMHgwMDAwMDBmMCwgMHgwMjAxZjgwMCwgMHgwMDEwMTlhNCwKLQkweDQyMDAwODAwLCAweDAwMDAwMGYwLCAweDU5YzQwMDA1LCAweDgwMDQwZDAwLAotCTB4MDQwMDAwMGUsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZTAsIDB4MDQwMjAwMGIsCi0JMHg0MjAxZDAwMCwgMHgwMDAwMDNlOCwgMHgwMjAxZjgwMCwgMHgwMDEwNWRkMiwKLQkweDAyMDFmODAwLCAweDAwMTA1YzgxLCAweDU5OTQwMDA0LCAweDgwMDAwNTQwLAotCTB4MDQwMjA3ZWMsIDB4MDQwMWYwMjMsIDB4NGMwODAwMDAsIDB4NDIwMDEwMDAsCi0JMHgwMDEwNGQzOSwgMHgwMjAxZjgwMCwgMHgwMDEwNWNjOSwgMHg0MjAwMTAwMCwKLQkweDAwMTA0ZDJjLCAweDAyMDFmODAwLCAweDAwMTA1ZGJkLCAweDVjMDAxMDAwLAotCTB4NDk3Yjg4ODAsIDB4NTlhODAwMWUsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDIsCi0JMHg4MDAwMDAwMCwgMHg0ODAzODg5MywgMHg1OWE4MDAyYSwgMHg4MjAwMDUwMCwKLQkweDAwMDBmZmZmLCAweDRjMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAxNjcwLAotCTB4NWMwMDAwMDAsIDB4NDgwMzg4ODAsIDB4NTlhODA4MDUsIDB4ODQwNDBkMGMsCi0JMHg0ODA3NTAwNSwgMHg1OWM0MDAwNiwgMHg4NDAwMDU0OCwgMHg0ODAzODgwNiwKLQkweDAyMDFmODAwLCAweDAwMTAxOWNhLCAweDRhMDM4ODA4LCAweDAwMDAwMDgwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGQ0MDAwMDAsIDB4NGQzYzAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNmMzMiwgMHgwMjAxZjgwMCwgMHgwMDEwYTk1YSwKLQkweDA0MDIwMDI0LCAweDU5OWMxMDE3LCAweDU5YTgwODA1LCAweDhjMDQwZDAwLAotCTB4MDQwMjAwMGMsIDB4OGMwODE1MWEsIDB4MDQwMDAwMWUsIDB4ODQwNDBkNDIsCi0JMHg0ODA3NTAwNSwgMHg0MjAyODAwMCwgMHgwMDAwMDAwNCwgMHg0MjAyNzgwMCwKLQkweDAwMDAwMDA4LCAweDhjMDgxNTA4LCAweDA0MDIwMDA3LCAweDA0MDFmMDExLAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMDQsIDB4NDE3YTc4MDAsIDB4OGMwODE1MDgsCi0JMHgwNDAwMDAwYywgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwgMHgwMDAwMDAwZSwKLQkweDQyMDI4ODAwLCAweDAwMDBmZmZmLCAweDAyMDFmODAwLCAweDAwMTBhMjU4LAotCTB4NWMwMjgwMDAsIDB4NTk5YzA4MTcsIDB4OGMwNDBkMGEsIDB4MDQwMjAwMDUsCi0JMHg0OTQzYzg1NywgMHg0OTNmYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwMWQ5MCwKLQkweDQ5N2I4ODgwLCAweDQyMDJkODAwLCAweDAwMDAwMDAxLCAweDA0MDFmY2ZmLAotCTB4NWMwMjc4MDAsIDB4NWMwMjgwMDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGIyOSwgMHg0MjAwMDAwMCwgMHgwMDEwYjZhYSwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDAyMDFmODAwLCAweDAwMTAwZjQyLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDE2NzAsIDB4NGEwMzg4ODAsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwMTljYSwgMHg0MjAyZTAwMCwKLQkweDAwMDAwMDAwLCAweDRhMDMzMDE1LCAweDAwMDAwMDAxLCAweDQ5N2IzMDFkLAotCTB4NDk3YjMwMDYsIDB4NGEwM2IwMDQsIDB4NjAwMDAwMDEsIDB4NTlkODAwMDUsCi0JMHg0YTAzYjAwNCwgMHg5MDAwMDAwMSwgMHg0YTAzYTgwNCwgMHg2MDAwMDAwMSwKLQkweDU5ZDQwMDA1LCAweDRhMDNhODA0LCAweDkwMDAwMDAxLCAweDAyMDFmMDAwLAotCTB4MDAxMDU2NjcsIDB4NGEwM2M4MjUsIDB4MDAwMDAwMDQsIDB4NGEwM2M4MjcsCi0JMHgwMDAwMDAwNCwgMHg1OTljMDQwOSwgMHg4MDAwMGQ0MCwgMHgwNDAwMDAyMCwKLQkweDU5OWMwNDA3LCAweDgwMDAwNTQwLCAweDA0MDAwMDA3LCAweDgwMDAwMGNjLAotCTB4NTk5YzEwMGIsIDB4ODAwODA0MDAsIDB4NDgwM2IwMDAsIDB4NDk3YmIwMDIsCi0JMHg1OWQ4MDAwMSwgMHg1OTljMDAwYiwgMHg0ODAzYjAwMCwgMHg1OTljMDAwYywKLQkweDQ4MDNiMDAxLCAweDU5OWMwNDA3LCAweDgwMDAwNTQwLCAweDA0MDIwMDAyLAotCTB4NDk3YmIwMDIsIDB4NTk5YzBjMDksIDB4ODIwNDA1NDAsIDB4MDA0MDAwMDAsCi0JMHg0ODAzYjAwMywgMHg0YTAzYjAwOSwgMHgwMDAwMDAwNCwgMHg0YTAzYjAwNCwKLQkweDEwMDAwMDAxLCAweDU5ZTAwODAzLCAweDgyMDQwZDAwLCAweGZmZmZmZWZmLAotCTB4ODIwNDBkNDAsIDB4MDAwMDgwMDAsIDB4NDgwN2MwMDMsIDB4NTk5YzA0MGEsCi0JMHg4MDAwMDU0MCwgMHgwNDAwMDAyMCwgMHg1OTljMDQwOCwgMHg4MDAwMDU0MCwKLQkweDA0MDAwMDA3LCAweDgwMDAwMGNjLCAweDU5OWMxMDBmLCAweDgwMDgwNDAwLAotCTB4NDgwM2E4MDAsIDB4NDk3YmE4MDIsIDB4NTlkNDAwMDEsIDB4NTk5YzAwMGYsCi0JMHg0ODAzYTgwMCwgMHg1OTljMDAxMCwgMHg0ODAzYTgwMSwgMHg1OTljMDQwOCwKLQkweDgwMDAwNTQwLCAweDA0MDIwMDAyLCAweDQ5N2JhODAyLCAweDU5OWMwYzBhLAotCTB4ODIwNDA1NDAsIDB4MDA0MDAwMDAsIDB4NDgwM2E4MDMsIDB4NGEwM2E4MDksCi0JMHgwMDAwMDAwNCwgMHg0YTAzYTgwNCwgMHgxMDAwMDAwMSwgMHg1OWUwMDgwMywKLQkweDgyMDQwZDAwLCAweGZmZmZmYmZmLCAweDgyMDQwZDQwLCAweDAwMDA4MDAwLAotCTB4NDgwN2MwMDMsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMDcsIDB4NDIwMmUwMDAsCi0JMHgwMDAwMDAwMSwgMHgwMjAwYjgwMCwgMHgwMDAyMDY4NSwgMHgwMjAwZjAwMCwKLQkweDAwMDIwNjlhLCAweDFjMDFmMDAwLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4MWMwMWYwMDAsIDB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsCi0JMHg1OTk4MTAwNSwgMHg4MDA4MTFjMCwgMHgwNDAwMDAxZSwgMHg1ODA4MDAwNSwKLQkweDgyMDAwZDAwLCAweDQzMDE4NzgwLCAweDAyMDIwMDAwLCAweDAwMTA1NTJhLAotCTB4OGMwMDA1MDgsIDB4MDQwMDAwMTUsIDB4NTgwYTU4MDgsIDB4NTkyYzAyMDQsCi0JMHg0OTdhNTgwMCwgMHg0OTdhNTgwMSwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDAwYzgwLCAweDAwMDAwMDRiLCAweDA0MDIxMDBiLCAweDBjMDFmODBmLAotCTB4NWMwM2UwMDAsIDB4ODM3MDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDA3ZTYsCi0JMHgwMjAwZjgwMCwgMHgwMDAyMDY5YSwgMHgwMjAwYjAwMCwgMHgwMDAyMDY4NSwKLQkweDFjMDFmMDAwLCAweDA0MDFmODUwLCAweDVjMDNlMDAwLCAweDA0MDFmN2Y5LAotCTB4MDQwMWY4ZWUsIDB4MDQwMWY3ZmQsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE3MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxZjksIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNzEsCi0JMHgwMDEwNTE3MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHg0OTJmYzg1NywgMHg0MjAwMDAwMCwgMHgwMDEwYjY1ZCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQyMDAwMDAwLCAweDAwMDAwNDAwLAotCTB4MDQwMWYwMTksIDB4NDkyZmM4NTcsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NWMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg0MjAwMDAwMCwgMHgwMDAwMTAwMCwKLQkweDA0MDFmMDExLCAweDQ5MmZjODU3LCAweDQyMDAwMDAwLCAweDAwMTBiNjViLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NDIwMDAwMDAsIDB4MDAwMDIwMDAsCi0JMHgwNDAxZjAwOSwgMHg0OTJmYzg1NywgMHg0MjAwMDAwMCwgMHgwMDEwYjY1ZSwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQyMDAwMDAwLCAweDAwMDAwODAwLAotCTB4MDQwMWYwMDEsIDB4NDgwM2M4NTcsIDB4NDIwMmUwMDAsIDB4MDAwMDAwMDEsCi0JMHg1OTJjMGMwNCwgMHg4MjA0MGQwMCwgMHhmZmZmODBmZiwgMHg4MDA0MDU0MCwKLQkweDQ4MDI1YzA0LCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDU5MmMwMjA0LAotCTB4NDkyZmM4NTcsIDB4ODAwMDAxMTAsIDB4MDQwMDA3ZGIsIDB4ODAwMDAwNDAsCi0JMHgwNDAwMDAzNSwgMHg0ODAzMzAwMiwgMHg0OTJmMzAwMywgMHg0OTJmMzAwNCwKLQkweDRhMDMzMDA4LCAweDAwMTA1MWM1LCAweDQyMDJlMDAwLCAweDAwMDAwMDAzLAotCTB4MWMwMWYwMDAsIDB4NTkyYzAyMDQsIDB4NDkyZmM4NTcsIDB4ODAwMDAxMTAsCi0JMHgwNDAwMDdjZCwgMHg4MDAwMDA0MCwgMHgwNDAwMDA0MywgMHg0ODAzMzAwMiwKLQkweDQ5MmYzMDAzLCAweDQ5MmYzMDA0LCAweDRhMDMzMDA4LCAweDAwMTA1MWUxLAotCTB4NDIwMmUwMDAsIDB4MDAwMDAwMDMsIDB4MWMwMWYwMDAsIDB4NDkyZmM4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTk1YSwgMHgwMjAyMDAwMCwgMHgwMDAyMDYwYywKLQkweDQ5MmZjODU3LCAweDU5MmU4YTA2LCAweDgzNDQwYzgwLCAweDAwMDAwN2YwLAotCTB4MDQwMjEwMGIsIDB4ODM0NDA0MDAsIDB4MDAxMGFhMDAsIDB4NTAwMDAwMDAsCi0JMHg4MDAyNmQ0MCwgMHgwNDAwMDAwNiwgMHg0OTM3Yzg1NywgMHg1OTM0MDIwMCwKLQkweDhjMDAwNTBlLCAweDAyMDIwMDAwLCAweDAwMDIwNjBjLCAweDQyMDI4MDAwLAotCTB4MDAwMDAwMjgsIDB4NDE3ODA4MDAsIDB4NDE3YTYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGJlZSwgMHgwMjAxZjgwMCwgMHgwMDEwOGY3ZCwgMHgwMjAxZjAwMCwKLQkweDAwMDIwMzgxLCAweDU5MmMwYTBhLCAweDhjMDQwZDAyLCAweDA0MDIwMDE2LAotCTB4NTlhODAwMjEsIDB4NDkyZmM4NTcsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMGYsCi0JMHg1OTJjMDIwNywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0MTU2LCAweDA0MDIwMDA0LCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDAsIDB4NTkyYzBhMDYsIDB4NDgwNjVjMDYsIDB4NDgwMjVhMDYsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0MjAwMDAwMCwgMHgwMDAwMDAyOCwKLQkweDA0MDFmN2Y5LCAweDQyMDAwODAwLCAweDAwMDAwMDA5LCAweDAyMDFmMDAwLAotCTB4MDAxMDYzYTksIDB4NTkyYzAyMDgsIDB4NDkyZmM4NTcsIDB4ODIwMDBjODAsCi0JMHgwMDAwMTk5YSwgMHgwNDAyMTc5NCwgMHg1OTJjMDQwOCwgMHg4MDAwMDU0MCwKLQkweDA0MDIwNzkxLCAweDU5YTgwODIxLCAweDgwMDQwOWMwLCAweDA0MDIwMDA5LAotCTB4NTkyYzAyMDcsIDB4ODAwMDA1NDAsIDB4MDQwMDA3OGIsIDB4NDk3YTVhMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDFiNSwgMHgwNDAyMDAwNCwgMHgxYzAxZjAwMCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDI4LCAweDQ4MDI1YTA2LCAweDAyMDFmMDAwLAotCTB4MDAwMjAzODEsIDB4NTk5ODA4MDQsIDB4NTk5ODAwMDIsIDB4NDgwNjU4MDAsCi0JMHg0OTJjMDgwMSwgMHg0OTJmMzAwNCwgMHg4MDAwMDA0MCwgMHg0ODAzMzAwMiwKLQkweDA0MDAwMDAyLCAweDFjMDFmMDAwLCAweDU5OWE1ODAzLCAweDU5OTgwMDA4LAotCTB4NDIwMmUwMDAsIDB4MDAwMDAwMDEsIDB4MDgwMWYwMDAsIDB4NTkyZThhMDYsCi0JMHg1OTJjMDQwNiwgMHg0ODAzYzg1NiwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDQyMDBiODAwLCAweDAwMDAwMDAxLCAweDgyMDAwZDgwLCAweDAwMDAwMDAxLAotCTB4MDQwMDAwMTUsIDB4NDE3YTg4MDAsIDB4NDIwMGI4MDAsIDB4MDAwMDA3ZjAsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAwZiwgMHg4MDAwMDU0MCwKLQkweDAyMDIwMDAwLCAweDAwMDIwMzgxLCAweDU5MmU4YTA2LCAweDAyMDFmODAwLAotCTB4MDAwMjAyNjcsIDB4MDIwMjAwMDAsIDB4MDAwMjAzODEsIDB4NTkyZTkwMDgsCi0JMHg1OTJlOTgwOSwgMHgwMjAxZjgwMCwgMHgwMDEwNDU2NywgMHgwMjAxZjAwMCwKLQkweDAwMDIwMzgxLCAweDU5YTgwODA1LCAweDg0MDQwZDAwLCAweDQ4MDc1MDA1LAotCTB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDIwMDA4MDAsIDB4MDAxMDQ2N2EsCi0JMHg4MTQ2ODgwMCwgMHg4MDVjYjg0MCwgMHgwNDAyMDdmYSwgMHgwMjAxZjAwMCwKLQkweDAwMDIwMzgxLCAweDU5MmMwYTA4LCAweDQ4MDdjODU3LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMGUsIDB4MDQwMDAwNDUsIDB4ODIwNDA1ODAsIDB4MDAwMDAwNDYsCi0JMHgwNDAwMDA0NiwgMHg4MjA0MDU4MCwgMHgwMDAwMDA0NSwgMHgwNDAwMDAyMCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDI5LCAweDA0MDAwMDEwLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMmEsIDB4MDQwMDAwMDksIDB4ODIwNDA1ODAsIDB4MDAwMDAwMGYsCi0JMHgwNDAwMDIwMCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAyZSwgMHgwNDAwMDFmZCwKLQkweDQ4MDdjODU2LCAweDA0MDFmMWY2LCAweDU5YTgwODA1LCAweDg0MDQwZDA0LAotCTB4NDgwNzUwMDUsIDB4MDQwMWYxZjcsIDB4NTkyZThhMDYsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDI2NywgMHgwNDAyMDFmMywgMHg1OTM0MDIwMCwgMHg4NDAwMDUxOCwKLQkweDQ4MDI2YTAwLCAweDU5MmU2MDA5LCAweDQ5MzNjODU3LCAweDgzMzAwNTgwLAotCTB4ZmZmZmZmZmYsIDB4MDQwMjAwMmEsIDB4MDQwMWYxZWEsIDB4NTkyYzE0MDcsCi0JMHg0ODBiYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwOTFkOSwgMHg0MTFlNjAwMCwKLQkweDA0MDIwMDAzLCAweDQ4MDNjODU2LCAweDA0MDFmMWRkLCAweDU5MmUzODA5LAotCTB4NTkxYzE0MTQsIDB4ODQwODE1MTYsIDB4ODQwODE1NTQsIDB4NDgwYTNjMTQsCi0JMHg0YTAyNjQwMywgMHgwMDAwMDAzYSwgMHg1OTJjMDQwYiwgMHg4MDAwMDU0MCwKLQkweDA0MDAwMDA3LCAweDRhMDI2NDAzLCAweDAwMDAwMDNiLCAweDU5MmMwMjBjLAotCTB4NDgwMjY0MWEsIDB4NTkyYzA0MGMsIDB4NDgwMjYyMWEsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwMSwgMHg0MjAwMDgwMCwgMHg4MDAwMDA0MCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODU1LCAweDA0MDFmMWNiLCAweDU5YTgwMDY4LCAweDg0MDAwNTEwLAotCTB4NDgwMzUwNjgsIDB4MDQwMWYxYzcsIDB4NTkyYzEyMDcsIDB4OGMwODE1MDAsCi0JMHgwNDAyMDFjNCwgMHg1OTJlOGEwNiwgMHg1OTJlNjAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA5MWUzLCAweDA0MDIwMDAzLCAweDQ4MDNjODU2LCAweDA0MDFmMWI4LAotCTB4NTkzMDBjMDYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMDAwMDMsCi0JMHg0ODAzYzg1NiwgMHgwNDAxZjFiMiwgMHg1OTMwMGEwMywgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDA3LCAweDA0MDAwMDAzLCAweDQ4MDNjODU2LCAweDA0MDFmMWFjLAotCTB4NTkzMDBjMDMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMDAwMjUsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAxYSwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDA2LCAweDA0MDAwMDI0LCAweDgyMDQwNTgwLCAweDAwMDAwMDA4LAotCTB4MDQwMDAwMTksIDB4ODIwNDA1ODAsIDB4MDAwMDAwMGEsIDB4MDQwMDAwMGEsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwYywgMHgwNDAwMDAwNCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDJlLCAweDA0MDIwMDFjLCAweDQyMDAwODAwLCAweDAwMDAwMDA5LAotCTB4MDQwMWYwMTcsIDB4NTkzMjY4MDksIDB4MDIwMWY4MDAsIDB4MDAxMDQ4NGIsCi0JMHgwNDAyMDAxNSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwgMHgwNDAxZjAxMCwKLQkweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDEsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsIDB4MDQwMWYwMDgsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg0YTAyNjQwNiwKLQkweDAwMDAwMDAxLCAweDQyMDAwODAwLCAweDAwMDAwMDBiLCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjQ3MCwgMHgwNDAxZjE3YiwgMHg0MDAwMDgwMCwgMHg1ODA0MDAwMCwKLQkweDgwMDAwNTQwLCAweDA0MDIwN2ZkLCAweDQ5MmMwODAwLCAweDFjMDFmMDAwLAotCTB4NDkyZmM4NTcsIDB4NTkzMDBjMDYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDYsCi0JMHgwNDAyMDA5NCwgMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDAwNSwKLQkweDU5MzQwMjAwLCAweDhjMDAwNTFhLCAweDAyMDAwMDAwLCAweDAwMDIwNjY3LAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMDAwOGEsIDB4NTkzMDAyMDMsCi0JMHg0MjAyNzgwMCwgMHgwMDAwMDAwMSwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNywKLQkweDAyMDIwMDAwLCAweDAwMDIwNjY3LCAweDRhMDI2MjAzLCAweDAwMDAwMDAyLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA2NjcsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDIsCi0JMHg0YTAyNjIwNiwgMHgwMDAwMDAxNCwgMHg0ZDJjMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA5ZmMwLCAweDVjMDI1ODAwLCAweDU5MzAwYzA2LCAweDQ4MDdjODU3LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDcsIDB4MDQwMjAwNjMsIDB4NDkyZmM4NTcsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwKLQkweDU5MmMyNDBhLCAweDQ5MmZjODU3LCAweDQ4MTNjODU3LCAweDhjMTAyNTFjLAotCTB4MDQwMjAwMTYsIDB4OGMxMDI1MWEsIDB4MDQwMDAwMDMsIDB4OGMxMDI1MGEsCi0JMHgwNDAwMDA2OSwgMHg1OTM0MGEwMCwgMHg4YzA0MGQwZSwgMHgwNDAwMDAwMywKLQkweDhjMTAyNTFlLCAweDA0MDAwMDY0LCAweDAyMDFmODAwLCAweDAwMDIwODkyLAotCTB4MDQwMDAwNmIsIDB4NTkyYzI0MGEsIDB4NDkzNjYwMDksIDB4NDkzMjU4MDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwNiwgMHg0YTAyNjIwMywgMHgwMDAwMDAwNywKLQkweDAyMDFmMDAwLCAweDAwMDIwNjYzLCAweDU5MmMwYTBjLCAweDU5MzQwMDBmLAotCTB4NDE3ODQwMDAsIDB4ODAwMDE1NDAsIDB4MDQwMDAwNmQsIDB4NTgwODAyMDQsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxMiwKLQkweDA0MDIwMDA0LCAweDU4MDgwMjBjLCAweDgwMDQwNTgwLCAweDA0MDAwMDA0LAotCTB4NTgwODAwMDAsIDB4NDAwODQwMDAsIDB4MDQwMWY3ZjMsIDB4NTgwODAwMDAsCi0JMHg0OTc4MTAwMCwgMHg4MDIwNDFjMCwgMHgwNDAwMDAwNiwgMHg0ODAwNDAwMCwKLQkweDgwMDAwNTQwLCAweDA0MDIwMDA3LCAweDQ4MjI2ODEwLCAweDA0MDFmMDA1LAotCTB4NDgwMjY4MGYsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDIsIDB4NDk3YTY4MTAsCi0JMHg0ZDJjMDAwMCwgMHg0MDBhNTgwMCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwMiwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDVjMDI1ODAwLCAweDA0MDFmN2JjLAotCTB4NTkyYzA0MGEsIDB4OGMwMDA1MWMsIDB4MDQwMDAwMTYsIDB4NTkyYzAyMDYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwZmZmZiwgMHgwNDAyMDAxMiwgMHg1OTJlNjAwOSwKLQkweDgzMzAwNTgwLCAweGZmZmZmZmZmLCAweDA0MDAwN2IxLCAweDgzMzAwNDgwLAotCTB4MDAxMGNmYzAsIDB4MDQwMDEwMTAsIDB4NTlhODAwMGIsIDB4ODEzMDA0ODAsCi0JMHgwNDAyMTAwZCwgMHg1OTMwMDAwOCwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwNSwKLQkweDU5MzAwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDA3LCAweDA0MDAwNzk3LAotCTB4NDkyZmM4NTcsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMjksIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDM4MSwgMHg0OTJmYzg1NywgMHg0YTAyNWEwNiwgMHgwMDAwMDAwOCwKLQkweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDQ5MmZjODU3LCAweDRhMDI1YTA2LAotCTB4MDAwMDAwNDUsIDB4MDIwMWYwMDAsIDB4MDAwMjAzODEsIDB4NDkyZmM4NTcsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAyYSwgMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwKLQkweDQ5MmZjODU3LCAweDRhMDI1YTA2LCAweDAwMDAwMDI4LCAweDAyMDFmMDAwLAotCTB4MDAwMjAzODEsIDB4NDkyZmM4NTcsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMDYsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0OTJmYzg1NywgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDBlLCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDU5MzQwMDEwLAotCTB4NDkyZTY4MTAsIDB4NDkyZmM4NTcsIDB4ODAwMDBkNDAsIDB4MDQwMDAwMDMsCi0JMHg0OTJjMDgwMCwgMHgxYzAxZjAwMCwgMHg1OTM0MDQwYiwgMHg0OTJlNjgwZiwKLQkweDQ5MmZjODU3LCAweDQ4MDNjODU3LCAweDgwMDAwNTQwLCAweDA0MDIwMDAzLAotCTB4NGEwMjZhMDMsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NTlhODAwMGUsCi0JMHg4MTY0MDQ4MCwgMHgwNDAyMTc2ZSwgMHg0MjAyNjAwMCwgMHgwMDEwY2ZjMCwKLQkweDU5MzAwMDA5LCAweDgxMzQwNTgwLCAweDA0MDIwMDA0LCAweDU5MzAwMjAyLAotCTB4ODAwNDA1ODAsIDB4MDQwMDA3NTksIDB4ODMzMjY0MDAsIDB4MDAwMDAwMjQsCi0JMHg0MTU4MDAwMCwgMHg4MTMwMDQ4MCwgMHgwNDAwMTdmNiwgMHgwNDAxZjc2MCwKLQkweDQ5MmZjODU3LCAweDU5MmMwNDA3LCAweDgyMDAwYzgwLCAweDAwMDAxOTlhLAotCTB4MDQwMjE1ZGQsIDB4NTkyYzAyMDQsIDB4ODAwMDAxMTIsIDB4MDQwMjA1Y2EsCi0JMHg1OTJlOGEwNiwgMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDA1OSwKLQkweDAyMDFmODAwLCAweDAwMTA0ODM2LCAweDA0MDIwMDU5LCAweDU5MmU3ODBhLAotCTB4NDkzZmM4NTcsIDB4OGQzZTdkM2UsIDB4MDQwMjAwMDcsIDB4NTlhODAwMjEsCi0JMHg4MDAwMDU0MCwgMHgwNDAyMDA0ZiwgMHgwMjAxZjgwMCwgMHgwMDEwNDY4NiwKLQkweDA0MDAwNWM5LCAweDgzM2MxZDAwLCAweDAwMDAwMDFmLCAweDA0MDAwNWM2LAotCTB4NTkyYzAyMDcsIDB4ODIwMDBjODAsIDB4MDAwMDEwMDAsIDB4MDQwMjE1YzIsCi0JMHg4MDAwMDBjMiwgMHg4MDAwMDhjNCwgMHg4MDA1ZDQwMCwgMHg1OTJlOTAwOCwKLQkweDU5MmU5ODA5LCAweDU5MzQwODBkLCAweDgwMDQwOWMwLCAweDA0MDIwMDJlLAotCTB4ODMzYzFkMDAsIDB4MDAwMDAwMWYsIDB4ODE3ODAwNDAsIDB4ODAwMDAwMDAsCi0JMHg4MDBjMTkwMiwgMHgwNDAyMTdmZSwgMHgwNDAyMDViMywgMHgwYzAxZjAwMSwKLQkweDAwMTA1M2NkLCAweDAwMTA1M2QwLCAweDAwMTA1M2RkLCAweDAwMTA1M2UwLAotCTB4MDAxMDUzZTMsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZmIsIDB4MDQwMWYwMWEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDY1OSwgMHgwNDAwMDAyNywgMHg4MGU5ZDFjMCwKLQkweDAyMDIwODAwLCAweDAwMTA1Y2U3LCAweDQyMDI4MDAwLCAweDAwMDAwMDA1LAotCTB4NDE3YTkwMDAsIDB4NDE3YTk4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDhlMGIsCi0JMHgwNDAxZjAwZCwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0ZCwgMHgwNDAxZjAwNiwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDRlLCAweDA0MDFmMDAzLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNTIsIDB4MDIwMWY4MDAsIDB4MDAxMDQ1MWQsIDB4MDIwMjA4MDAsCi0JMHgwMDEwOGUzYiwgMHgwNDAwMDAxMCwgMHg4ZDNlN2QzZSwgMHgwNDAyMDAxNywKLQkweDFjMDFmMDAwLCAweDU4MDQwMDAyLCAweDgwMDAwNTQwLCAweDA0MDIwMDA3LAotCTB4NGQzYzAwMDAsIDB4NDAwNjc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQ2MzksCi0JMHg1YzAyNzgwMCwgMHgwNDAyMDdjYiwgMHg0YTAyNWEwNiwgMHgwMDAwMDAzMCwKLQkweDA0MDFmMDBkLCAweDRhMDI1YTA2LCAweDAwMDAwMDJjLCAweDA0MDFmMDBhLAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMjgsIDB4MDQwMWYwMDcsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAyOSwgMHgwNDAxZjAwNCwgMHg0OTdhNWMwOSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDAwLCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDAyMDFmMDAwLAotCTB4MDAwMjAzODEsIDB4NDkyZmM4NTcsIDB4NTkyYzAyMDQsIDB4ODAwMDAxMTAsCi0JMHg4MDAwMDA0MCwgMHgwNDAwMDAwMiwgMHgwNDAxZjU1YiwgMHg1OTJjMDIwNywKLQkweDgyMDAwNTAwLCAweDAwMDAwM2ZmLCAweDQ4MDI1YTA3LCAweDhjMDAwNTA2LAotCTB4MDQwMDAwMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwNzAsIDB4MDQwMjAwMDQsCi0JMHg1OWE4MDgyMSwgMHg4MDA0MDljMCwgMHgwNDAyMDAxOCwgMHg0YTAyNWEwNiwKLQkweDAwMDBkZWFkLCAweDU5MmMwNDA4LCAweDgyMDAwNTAwLCAweDAwMDBmMGZmLAotCTB4NDgwMjVjMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDQxZTQsIDB4MDQwMjAwMDIsCi0JMHgxYzAxZjAwMCwgMHg0OTQyNWEwNiwgMHg4MDU4YjFjMCwgMHgwNDAwMDAwOSwKLQkweDAyMDFmODAwLCAweDAwMTA5MzI4LCAweDA0MDFmODBmLCAweDQ0MDQyODAwLAotCTB4ODI1ODA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMDIsIDB4NDgwODI4MDEsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0MjAyODAwMCwgMHgwMDAwMDAzMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDQyMDBiMDAwLCAweDAwMDAwMDAxLAotCTB4MDQwMWY3ZWQsIDB4NTkyYzA0MDgsIDB4ODAwMDAxMTgsIDB4ODMyYzJjMDAsCi0JMHgwMDAwMDAwOSwgMHg4MDE0MmMwMCwgMHgxYzAxZjAwMCwgMHg0OTJmYzg1NywKLQkweDRhMDI1YTA4LCAweDAwMDAwMDA2LCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLAotCTB4NDkyZmM4NTcsIDB4NGEwMjVhMDgsIDB4MDAwMDAwMDEsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDM4MSwgMHg0OTJmYzg1NywgMHg1OTJjMDQwYSwgMHg4MjAwMDUwMCwKLQkweDAwMDAwMDAzLCAweDA0MDAwMDIwLCAweDAyMDFmODAwLCAweDAwMDIwODkyLAotCTB4MDQwMDAwMjEsIDB4NTkyYzAyMDQsIDB4NDkyZTYwMDgsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDA0NSwgMHgwNDAwMDAwZSwKLQkweDU5MmMwMDBiLCAweDAyMDFmODAwLCAweDAwMTA1OWI5LCAweDAyMDAwODAwLAotCTB4MDAwMjAyNjcsIDB4MDQwMjAwMTgsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDEsCi0JMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwKLQkweDAwMDIwOGQ4LCAweDU5MzAwMDE1LCAweDg0MDAwNTVlLCAweDQ4MDI2MDE1LAotCTB4NDIwMjY4MDAsIDB4MDAxMGIzMjAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDAsCi0JMHgwNDAxZjdmNCwgMHg0YTAyNWEwNiwgMHgwMDAwMDEwMSwgMHgwMjAxZjAwMCwKLQkweDAwMDIwMzgxLCAweDRhMDI1YTA2LCAweDAwMDAwMDJjLCAweDAyMDFmMDAwLAotCTB4MDAwMjAzODEsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMjgsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDM4MSwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHg0OTJmYzg1NywKLQkweDAyMDFmODAwLCAweDAwMTA2MDFhLCAweDA0MDAwMDBiLCAweDU5MmMwMjA0LAotCTB4ODAwMDAxMTAsIDB4ODAwMDAwNDAsIDB4MDQwMjA0ZTcsIDB4NTkyYzBjMDYsCi0JMHg4MDA0MDljMCwgMHgwNDAwMDAwOSwgMHg0MjAwMDAwMCwgMHgwMDAwMDEwMiwKLQkweDA0MDFmMDAzLCAweDQyMDAwMDAwLCAweDAwMDAwMTA0LCAweDQ4MDI1YTA2LAotCTB4MDIwMWYwMDAsIDB4MDAwMjAzODEsIDB4NTkyYzBjMDcsIDB4ODAwNDA5YzAsCi0JMHgwNDAwMDAyNCwgMHg4MjA0MDQ4MCwgMHgwMDAwMDAwNSwgMHgwNDAyMTAyMSwKLQkweDRjMDQwMDAwLCAweDgwMDQwODAwLCAweDAyMDFmODAwLCAweDAwMTA2MDNmLAotCTB4NWMwMDEwMDAsIDB4MDQwMjAwMTgsIDB4ODMyYzA0MDAsIDB4MDAwMDAwMDgsCi0JMHg0MDAwYTAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjA2OCwgMHgwNDAyMDAxMiwKLQkweDU5MmMxMjA3LCAweDgyY2MwNTgwLCAweDAwMTBiMzBhLCAweDA0MDIwMDA5LAotCTB4NThjODBjMGIsIDB4ODQwNDBkMDAsIDB4ODQwNDBkMDIsIDB4OGMwODE1MDAsCi0JMHgwNDAwMDAwMiwgMHg4NDA0MGQ1ZSwgMHg0ODA1OTQwYiwgMHgwNDAxZjAwMSwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAwLCAweDQ4MDI1YTA2LCAweDAyMDFmMDAwLAotCTB4MDAwMjAzODEsIDB4NDIwMDAwMDAsIDB4MDAwMDAxMDMsIDB4MDQwMWY3ZmIsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDEwMiwgMHgwNDAxZjdmOCwgMHg0OTJmYzg1NywKLQkweDU5MmU3YzA2LCAweDgzM2MwNTAwLCAweGZmZmZmZmZlLCAweDA0MDIwMDQzLAotCTB4NTkyYzQwMDcsIDB4NDIwMjYwMDAsIDB4MDAxMGNmYzAsIDB4NDE1ODE4MDAsCi0JMHg0MDBjMDAwMCwgMHg4MTMwMDQ4MCwgMHgwNDAyMTAyMywgMHg1OTMwMDIwMywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDA3LCAweDU5MzAwMDA4LAotCTB4ODAwMDBkNDAsIDB4MDQwMDAwMDQsIDB4NTgwNDAwMDUsIDB4ODAyMDA1ODAsCi0JMHgwNDAwMDAwNCwgMHg4MzMyNjQwMCwgMHgwMDAwMDAyNCwgMHgwNDAxZjdmMSwKLQkweDU4MDQwMjA0LCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDgyMDAwZDgwLAotCTB4MDAwMDAwNTMsIDB4MDQwMDAwMDcsIDB4ODIwMDBkODAsIDB4MDAwMDAwNDgsCi0JMHgwNDAwMDAwNCwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxOCwgMHgwNDAyMDAyMywKLQkweDRkMmMwMDAwLCAweDAyMDFmODAwLCAweDAwMTA4OTk3LCAweDVjMDI1ODAwLAotCTB4MDQwMDAwMWUsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMDAsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDM4MSwgMHg1OTJlOGEwNiwgMHg4MzQ0MDQ4MCwgMHgwMDAwMDdmMCwKLQkweDA0MDIxMDE2LCAweDgzNDQwNDAwLCAweDAwMTBhYTAwLCAweDUwMDAwMDAwLAotCTB4ODAwMjZkNDAsIDB4MDQwMDAwMTEsIDB4NGQyYzAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDYxOSwgMHgwNDAwMDAwYywgMHg0MjAyODAwMCwgMHgwMDAwMDAwNSwKLQkweDU5MmMwYTA4LCAweDAyMDFmODAwLCAweDAwMTA0YmVlLCAweDAyMDFmODAwLAotCTB4MDAxMDhmODMsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4NWMwMjU4MDAsCi0JMHgwNDAxZjdlNSwgMHg1YzAyNTgwMCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAzMSwKLQkweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDQ5MmZjODU3LCAweDRkMmMwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsIDB4MDQwMDAwMTYsIDB4NDkyZmM4NTcsCi0JMHg0MTJmNDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwgMHgwNDAwMDAwZSwKLQkweDQ5MmZjODU3LCAweDQxMmRkODAwLCAweDAyMDFmODAwLCAweDAwMTAzOTQxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDM5NGIsIDB4NDlhMWQ4MGIsIDB4NWMwMjU4MDAsCi0JMHg0OTJkZDgwYSwgMHgwMjAxZjgwMCwgMHgwMDEwMWZiYiwgMHgwMjAxZjAwMCwKLQkweDAwMTAxZmRhLCAweDQxYTI1ODAwLCAweDAyMDFmODAwLCAweDAwMTAwODNhLAotCTB4NWMwMjU4MDAsIDB4NGEwMjVhMDYsIDB4MDAwMDQwMDUsIDB4NGEwMjVjMDYsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0ODA3Yzg1NywKLQkweDQ4NWZjODU3LCAweDQyMDBiODAwLCAweDAwMDAwMDAxLCAweDVjMDAwODAwLAotCTB4NGM1YzAwMDAsIDB4MDQwMWYwMDUsIDB4NDgwN2M4NTcsIDB4NDg1ZmM4NTcsCi0JMHg1YzAwMDgwMCwgMHg0ZDc4MDAwMCwgMHg0ODAzYzg1NywgMHg0OTJmYzg1NywKLQkweDhjMDAwNTBlLCAweDAyMDIwODAwLCAweDAwMTAwNjBkLCAweDQyMDNlMDAwLAotCTB4NTAwMDAwMDAsIDB4NDIwMGI4MDAsIDB4MDAwMDgwMDMsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMDYxYSwgMHg1OTJjMDIwNCwgMHg4MDAwMDExMCwgMHg4MDAwMDA0MCwKLQkweDA0MDIwNDJkLCAweDAyMDFmODAwLCAweDAwMTA0ODg2LCAweDA0MDIwMDAyLAotCTB4MWMwMWYwMDAsIDB4NDk0MjVhMDYsIDB4NDgwNjU4MGQsIDB4NDgwYTU4MGUsCi0JMHg0OTQzYzg1NywgMHg0ODA3Yzg1NywgMHg0ODBiYzg1NywgMHgwMjAxZjAwMCwKLQkweDAwMDIwMzgxLCAweDU5MmMwMjA0LCAweDgwMDAwMTEwLCAweDgwMDAwMDQwLAotCTB4MDQwMjA0MWQsIDB4MDIwMWY4MDAsIDB4MDAxMDQ5ZWMsIDB4MDQwMjAwMDIsCi0JMHgxYzAxZjAwMCwgMHg0OTQyNWEwNiwgMHg0ODA2NTgxMSwgMHg0ODBhNTgxMiwKLQkweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDU5MmMwMjA0LCAweDgwMDAwMTEwLAotCTB4MDQwMDA0MTEsIDB4ODAwMDAwNDAsIDB4MDQwMjAwMGMsIDB4NDIwMmUwMDAsCi0JMHgwMDAwMDAwMSwgMHg1OTJjMDIwYSwgMHg4YzAwMDUwNCwgMHgwMjAwMDAwMCwKLQkweDAwMDIwNjAzLCAweDU5MmMwMjA3LCAweDgyMDAwYzgwLCAweDAwMDAxMDAxLAotCTB4MDQwMjE0MTUsIDB4MDQwMWYwMDksIDB4NDIwMmUwMDAsIDB4MDAwMDAwMDMsCi0JMHg0ODAzMzAwMiwgMHg0OTJmMzAwMywgMHg0OTJmMzAwNCwgMHg0YTAzMzAwOCwKLQkweDAwMDIwNjAzLCAweDFjMDFmMDAwLCAweDQyMDJlMDAwLCAweDAwMDAwMDAyLAotCTB4NDIwMDAwMDAsIDB4MDAxMGJjZDksIDB4NTAwMDcwMDAsIDB4NDkyYzcwMGIsCi0JMHg0OTc4NzAwZSwgMHg0OTc4NzAwYywgMHg1OTJjMDAxMSwgMHg1OTJjMDgxMiwKLQkweDQ4MDA3MDA3LCAweDQ4MDQ3MDA4LCAweDU5MmMxMDEzLCAweDgyMDgwNTAwLAotCTB4ZmZmZjAwMDAsIDB4MDQwMDAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0OTc4NzAwZCwgMHg4MjA4MDQ4MCwgMHgwMDAwMDE4MCwgMHg0ODAzYzg1NywKLQkweDA0MDAxMDA3LCAweDQ4MDA3MDBmLCAweDRhMDA3MDA1LCAweDAwMDAwMTgwLAotCTB4NGEwMDcwMDQsIDB4MDAwMDAwNjAsIDB4MDQwMWYwMDUsIDB4NDk3ODcwMGYsCi0JMHg0ODA4NzAwNSwgMHg4MDA4MTEwNCwgMHg0ODA4NzAwNCwgMHg1ODM4MDAwYSwKLQkweDQ4MDA3MDAzLCAweDQwMzgxMDAwLCAweDAyMDFmMDAwLCAweDAwMTAwOGExLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4MTksIDB4MDQwMDAwMDMsIDB4NTk5ODAwMDcsCi0JMHgwODAxZjAwMCwgMHgxYzAxZjAwMCwgMHg0MDMwNzAwMCwgMHg1ODM4MDAwYiwKLQkweDgwMDI1ZDQwLCAweDA0MDAwMDFiLCAweDU4MzgwMDAyLCAweDgyMDAwNTgwLAotCTB4MDAwMDAxMDAsIDB4MDQwMDAwMWQsIDB4NGMzODAwMDAsIDB4NTkyYzAyMDQsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxMiwKLQkweDA0MDAwMDBiLCAweDU5MmMwMjA4LCAweDg0MDAwNTRlLCAweDQ4MDI1YTA4LAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMDIsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwNDAxZjAwNSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDEwLCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDVjMDA3MDAwLAotCTB4NDIwMmUwMDAsIDB4MDAwMDAwMDEsIDB4NGEwMDcwMDIsIDB4MDAwMDAxMDAsCi0JMHg0OTc4NzAxMCwgMHgxYzAxZjAwMCwgMHg1ODM4MDAwNCwgMHg4MjAwMDQ4MCwKLQkweDAwMDAwMDAzLCAweDA0MDAwMDg3LCAweDU4MzgwMDEwLCAweDhjMDAwNTAwLAotCTB4MDQwMjAwMTksIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDMsIDB4ODMyY2FjMDAsCi0JMHgwMDAwMDAxMSwgMHg1ODM4MDAwYSwgMHg1ODM4MTAwZCwgMHg4MDA4YTQwMCwKLQkweDRjMzgwMDAwLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDVjMDA3MDAwLAotCTB4NTgzODAwMGQsIDB4ODIwMDA0MDAsIDB4MDAwMDAwMDMsIDB4NDgwMDcwMGQsCi0JMHg0YTAwNzAxMCwgMHgwMDAwMDAwMSwgMHg1ODM4MDAwNCwgMHg4MjAwMDQ4MCwKLQkweDAwMDAwMDAzLCAweDQ4MDA3MDA0LCAweDgyMDAwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMDAwNmMsIDB4NTgzODAwMGUsIDB4ODAwMDFkNDAsIDB4MDQwMjAwMjAsCi0JMHg0YzM4MDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgxOSwgMHg1YzAwNzAwMCwKLQkweDA0MDAwMDEwLCAweDRhMDI1YTA0LCAweDAwMDAwMTBhLCAweDQyMDAxODAwLAotCTB4MDAwMDAwMDUsIDB4NDgwYzcwMGUsIDB4NTgzODAwMGMsIDB4ODAwMDA1NDAsCi0JMHgwNDAyMDAwMiwgMHg1ODM4MDAwYiwgMHg0MDAwMDgwMCwgMHg0OTJjMDgwMSwKLQkweDQ5MmM3MDBjLCAweDQyMDAwODAwLCAweDAwMDAwMDBmLCAweDA0MDFmMDExLAotCTB4NDIwMmUwMDAsIDB4MDAwMDAwMDgsIDB4NGEwMzMwMDcsIDB4MDAxMDU1ZjksCi0JMHgxYzAxZjAwMCwgMHg0MjAyZTAwMCwgMHgwMDAwMDAwMiwgMHg0MjAwMDAwMCwKLQkweDAwMTBiY2Q5LCAweDUwMDA3MDAwLCAweDA0MDFmN2U3LCAweDU4M2E1ODBjLAotCTB4NDAwYzAwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMTQsIDB4ODAwNDBjODAsCi0JMHg1ODM4MTAwNCwgMHg1ODM4MDAwZiwgMHg0MTc4MzAwMCwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDA1LCAweDg0MTgzNTQwLCAweDgyMDgxNDgwLCAweDAwMDAwMDAzLAotCTB4MDQwMDAwM2MsIDB4NDAwODAwMDAsIDB4ODAwNDA0ODAsIDB4MDQwMDEwMDIsCi0JMHg0MDA4MDgwMCwgMHg0MDA0YjAwMCwgMHg0MTJjMDAwMCwgMHg4MDBjMDQwMCwKLQkweDQwMDBhODAwLCAweDU4MzgwMDBhLCAweDU4MzgxMDBkLCAweDgwMDhhNDAwLAotCTB4NGMwODAwMDAsIDB4NGMwNDAwMDAsIDB4NGMwYzAwMDAsIDB4NGMzODAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg1YzAwNzAwMCwgMHg1YzAwMTgwMCwKLQkweDVjMDAwODAwLCAweDQwMDQwMDAwLCAweDU4MzgxMDA0LCAweDgwMDgwNDgwLAotCTB4NDgwMDcwMDQsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDIsCi0JMHg4NDE4MzUwMCwgMHg1YzAwMDAwMCwgMHg4MDA0MTQwMCwgMHg4MjA4MDQ4MCwKLQkweDAwMDAwMDYwLCAweDA0MDIwMDAzLCAweDg0MTgzNTQyLCAweDQxNzgxMDAwLAotCTB4NDAwYzAwMDAsIDB4ODAwNDFjMDAsIDB4ODIwYzA0ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAyMDAwMywgMHg4NDE4MzU0NCwgMHg0MDAwMTgwMCwgMHg0MDA4MDgwMCwKLQkweDQ4MDQ3MDBkLCAweDQ4MGM3MDBlLCAweDQwMTgwMDAwLCAweDBjMDFmMDAxLAotCTB4MDAxMDU2NDQsIDB4MDAxMDU2NDgsIDB4MDAxMDU2NDYsIDB4MDAxMDU2NDQsCi0JMHgwMDEwNTVlMCwgMHgwMDEwNTY0OCwgMHgwMDEwNTY0NiwgMHgwMDEwNTY0NCwKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDU4MzgxMDBmLCAweDA0MDFmNzM5LAotCTB4NTgzODA4MGQsIDB4ODIwNDA0MDAsIDB4MDAwMDAwMDIsIDB4NTgzODEwMGEsCi0JMHg4MDA4MDQwMCwgMHg1MDAwMTAwMCwgMHg4MDA4MTFjMCwgMHgwNDAyMDAwZiwKLQkweDQyMDJlMDAwLCAweDAwMDAwMDAxLCAweDU4M2E1ODBiLCAweDQ5Nzg3MDBiLAotCTB4NDk3ODcwMTAsIDB4NTkyYzAyMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAxMiwgMHgwMjAwMDAwMCwgMHgwMDAyMDYzYiwKLQkweDAyMDFmMDAwLCAweDAwMDIwNjAzLCAweDU4MzgwMDBhLCAweDgwMDQwYzAwLAotCTB4ODIzODFjMDAsIDB4MDAwMDAwMDcsIDB4NTQwNDE4MDAsIDB4ODAwNDA4MDAsCi0JMHg4MDBjMTgwMCwgMHg1NDA0MTgwMCwgMHgwNDAxZjcxYSwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODE5LCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDRhMDI1ODBhLAotCTB4MDAxMGJjNzgsIDB4NDIwMDA4MDAsIDB4MDAxMGJjZDksIDB4NDUyYzA4MDAsCi0JMHg0OTdhNTgwYiwgMHg0OTdhNTgwYywgMHg0OTdhNTgwZCwgMHg0OTdhNTgwZSwKLQkweDQ5N2E1ODBmLCAweDRhMDI1ODA5LCAweDAwMTA1NTlhLCAweDQ5N2E1ODEwLAotCTB4NGEwMjU4MDIsIDB4MDAwMDAxMDAsIDB4NGEwMjU4MDEsIDB4MDAwMDAwMDEsCi0JMHgxYzAxZjAwMCwgMHg1OWM4MDAwNywgMHg4YzAwMDUwMiwgMHgwNDAwMDA3MSwKLQkweDgzNWMyYzgwLCAweDAwMDAwMDA1LCAweDAyMDAxMDAwLCAweDAwMTA1YzVjLAotCTB4NTljODI4MTcsIDB4NDgxNzUwNmUsIDB4NDk3YjkwMDUsIDB4ODIxNDA1MDAsCi0JMHgwMGUwMDAwMCwgMHgwNDAyMDA0ZiwgMHg4MjE0MDUwMCwgMHgwMDAwMDNmZiwKLQkweDgyMDAxYzAwLCAweDAwMDAwMDA2LCAweDQxY2MyMDAwLCAweDQyMDAzMDAwLAotCTB4MDAwMDYwODAsIDB4ODIwYzA0ODAsIDB4MDAwMDAwNDAsIDB4MDQwMDEwMDYsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDA0MCwgMHg4MjBjMWM4MCwgMHgwMDAwMDA0MCwKLQkweDA0MDFmMDAzLCAweDQwMGMxMDAwLCAweDQxNzgxODAwLCAweDU0MTgyMDAwLAotCTB4ODAxMDIwMDAsIDB4ODAxODMwMDAsIDB4ODAwODEwNDAsIDB4MDQwMjA3ZmMsCi0JMHg4MDBjMTljMCwgMHgwNDAwMDAwNSwgMHg1OWM4MDAwNSwgMHg4MDAwMDAwMCwKLQkweDQ4MDM5MDA1LCAweDA0MDFmN2VhLCAweDgyMTQwNTAwLCAweDAxZjYwMDAwLAotCTB4MDQwMjAwMjksIDB4ODIxNDA1MDAsIDB4MDAwMGYwMDAsIDB4MDQwMDAwMGIsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMjAwMCwgMHgwNDAyMTAwZiwgMHg0YTAzOTAwNSwKLQkweDAwMDAwMTQwLCAweDgyMTQwNTAwLCAweDBlMDAwMDAwLCAweDgwMDAwMTMyLAotCTB4MGMwMWY4M2UsIDB4MWMwMWYwMDAsIDB4NTljYzA0MDAsIDB4ODIwMDA1MDAsCi0JMHgwMDAwZmYwMCwgMHg4MjAwMDU4MCwgMHgwMDAwODEwMCwgMHgwNDAwMDdmNCwKLQkweDA0MDFmMDFjLCAweDQ4MTdjODU3LCAweDgyMTQwNTAwLCAweDAwMDAwM2ZmLAotCTB4MDQwMjAwMDcsIDB4NTljYzA0MDAsIDB4ODIwMDA1MDAsIDB4MDAwMGZmMDAsCi0JMHg4MjAwMDU4MCwgMHgwMDAwODEwMCwgMHgwNDAyMDAxMiwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNmJjLCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDAyMDFmODAwLAotCTB4MDAxMDViMzIsIDB4NDgwM2M4NTYsIDB4NGEwMzkwMDUsIDB4MDAwMDAxNDAsCi0JMHgwNDAxZjAyMCwgMHg0ODE3Yzg1NywgMHg4MjE0MDUwMCwgMHgwMGY2MDAwMCwKLQkweDA0MDIwMDA0LCAweDAyMDFmODAwLCAweDAwMTA1YjZlLCAweDA0MDIwN2QyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4MDQwMDAwMTAsIDB4NTljNDAwYTQsCi0JMHg0ODAzYzg1NywgMHg4MjAwMDUwMCwgMHgwMDAwMDAwZiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDBhLCAweDA0MDIwMDA5LCAweDQ5N2I1MDE2LCAweDU5YzQwMGEzLAotCTB4ODIwMDA1NDAsIDB4MDAwODAwMDAsIDB4NDgwMzg4YTMsIDB4ODIwMDA1MDAsCi0JMHhmZmY3ZmZmZiwgMHg0ODAzODhhMywgMHg0ODE3Yzg1NiwgMHgwMjAxZjgwMCwKLQkweDAwMTBhNzlmLCAweDRhMDM5MDA1LCAweDAwMDAwMTQwLCAweDA0MDFmODQyLAotCTB4NDgwM2M4NTYsIDB4MWMwMWYwMDAsIDB4MDAxMDU3MDIsIDB4MDAxMDVhMTMsCi0JMHgwMDEwNTZmYSwgMHgwMDEwNTZmYSwgMHgwMDEwNTZmYSwgMHgwMDEwNTZmYSwKLQkweDAwMTA1NmZhLCAweDAwMTA1NmZhLCAweDQ4MDNjODU3LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NTksIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NGEwMzkwMDUsCi0JMHgwMDAwMDE0MCwgMHgxYzAxZjAwMCwgMHg1OWNjMDQwMCwgMHg4MjAwMGQwMCwKLQkweDAwMDBmZjAwLCAweDgyMDQxNTAwLCAweDAwMDBmMDAwLCAweDg0MDQwOWMwLAotCTB4ODIxNDA1MDAsIDB4MDAwMDAzZmYsIDB4ODAwMDE4YzQsIDB4OGMxNDJkMTQsCi0JMHgwNDAwMDAwNSwgMHg1OWNjMDAwMiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwMywKLQkweDgwMGMxYzgwLCAweDQ4MGY1MDE2LCAweDgyMDgwNTgwLCAweDAwMDAyMDAwLAotCTB4MDQwMjAwMTMsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMjAwMGUsCi0JMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHhmZjAwMDAwMCwgMHg4MjAwMDU4MCwKLQkweDExMDAwMDAwLCAweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMDExLAotCTB4MDIwMWY4MDAsIDB4MDAxMDM5NTEsIDB4MDIwMWY4MDAsIDB4MDAxMDVjODEsCi0JMHgwNDAxZjAwYywgMHgwNDAxZjgxZiwgMHgwNDAxZjAwYSwgMHg4MjA4MDU4MCwKLQkweDAwMDAzMDAwLCAweDA0MDIwMDAzLCAweDA0MDFmYTQwLCAweDA0MDFmMDA1LAotCTB4ODIwODA1ODAsIDB4MDAwMDgwMDAsIDB4MDQwMjAwMDIsIDB4MDQwMWZiMzYsCi0JMHgxYzAxZjAwMCwgMHg0ODE3Yzg1NywgMHg0MjAwMDAwMCwgMHgwMDEwYjY1OCwKLQkweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDgzNmMwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMjAwMGIsIDB4NGMwODAwMDAsIDB4NGMwYzAwMDAsIDB4NDIwMDEwMDAsCi0JMHgwMDAwODA0OCwgMHg0MDE0MTgwMCwgMHg4MDE0MjEyMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAzODU3LCAweDVjMDAxODAwLCAweDVjMDAxMDAwLCAweDFjMDFmMDAwLAotCTB4NTljYzAwMDIsIDB4ODIwMDA1MDAsIDB4ZmYwMDAwMDAsIDB4ODIwMDE1ODAsCi0JMHgwMTAwMDAwMCwgMHgwNDAwMDAwNiwgMHg4MjAwMTU4MCwgMHgyMzAwMDAwMCwKLQkweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMWM5LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMjMsIDB4MDQwMjAwNTUsIDB4NTljYzAwMDQsIDB4NDgwM2M4NTcsCi0JMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHhmZjAwMDAwMCwgMHg1OWNjMDgwMSwKLQkweDgyMDQwZDAwLCAweDAwZmZmZmZmLCAweDgwMDQwNTQwLCAweDQ4MDNjODU3LAotCTB4MDQwMWZiYjIsIDB4MDIwMDA4MDAsIDB4MDAxMDA2YmEsIDB4MDQwMDAxYjgsCi0JMHg1OTMwMGMwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAxMCwgMHgwNDAwMDAxMiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDExLCAweDA0MDAwMDBmLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDAwMGMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDQsCi0JMHgwNDAwMDAwOSwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwOCwgMHgwNDAwMDAwNiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDBhLCAweDAyMDIwODAwLCAweDAwMTAwNmJhLAotCTB4MDQwMjAxYTMsIDB4NTkzMDAwMDQsIDB4ODIwMDA1MDAsIDB4ODAwMTAwMDAsCi0JMHgwNDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwNmNiNCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNmJhLCAweDA0MDIwMTlhLCAweDU5Y2MwYTA0LCAweDQ4MDY2MjAyLAotCTB4NTlhODAwMTYsIDB4ODAwMDAxYzAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2YmEsCi0JMHgwNDAwMDE5MywgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwKLQkweDgyMDAwZDgwLCAweDAyMDAwMDAwLCAweDA0MDIwMDA1LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMTUsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4ODIwMDBkODAsCi0JMHgwMjE0MDAwMCwgMHgwNDAwMDdmYSwgMHg4MjAwMGQ4MCwgMHgwMjEwMDAwMCwKLQkweDA0MDAwN2Y3LCAweDgyMDAwZDgwLCAweDAyMTAwMDAwLCAweDA0MDAwN2Y0LAotCTB4ODIwMDBkODAsIDB4MDEwMDAwMDAsIDB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsCi0JMHgwNDAyMDE3YiwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHgwMDAwZmZmZiwKLQkweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMTc1LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMTYsIDB4MDQwMWY3ZTgsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMjIsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDZiYSwgMHgwNDAyMDE2ZCwgMHg1OWNjMDAwNCwKLQkweDQ4MDNjODU3LCAweDU5Y2MwMDA2LCAweDQ4MDNjODU3LCAweDU5Y2MwMDAxLAotCTB4NDgwM2M4NTcsIDB4NTlhODAwMTYsIDB4ODAwMDAxYzAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDZiYSwgMHgwNDAwMDE2MiwgMHg1OWE4MDgwNiwgMHg4YzA0MGQxNCwKLQkweDA0MDAwMDExLCAweDA0MDFmOTdkLCAweDA0MDIwMDBmLCAweDA0MDFmOTkzLAotCTB4MDQwMDAwMGQsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNGMsIDB4NTljYzAwMDEsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHgwMjAxZjgwMCwgMHgwMDEwNWMyNSwKLQkweDA0MDAwMTNlLCAweDQyMDI4ODAwLCAweDAwMDBmZmZmLCAweDQxN2E2ODAwLAotCTB4MDQwMWYxM2EsIDB4NTljYzAwMDYsIDB4ODIwMDA1MDAsIDB4ZmZmZjAwMDAsCi0JMHg4MjAwMGQ4MCwgMHgwMzAwMDAwMCwgMHgwNDAyMDAyMywgMHg1OWE4MDAyNiwKLQkweDhjMDAwNTA4LCAweDA0MDAwMDE3LCAweDg0MDAwNTRjLCAweDQ4MDM1MDI2LAotCTB4NTljYzA4MDAsIDB4ODIwNDBkMDAsIDB4MDBmZmZmZmYsIDB4NDgwNzUwMTAsCi0JMHg0OTdiODgzMCwgMHg4NDA0MGQ3MCwgMHg0ODA3ODgzMiwgMHg1OWM0MDgwMiwKLQkweDg0MDQwZDRjLCAweDQ4MDc4ODAyLCAweDU5Y2MwMDA3LCAweDgyMDAwNTAwLAotCTB4MDAwMGZmZmYsIDB4NDgwMzg4OTMsIDB4NDgwMzUwMWUsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMywgMHg1OWE4MTAxMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjlhZiwKLQkweDU5Y2MwMDA2LCAweDgyMDAwNTAwLCAweDAwMDBmZmZmLCAweDAyMDIwODAwLAotCTB4MDAxMDA2YmEsIDB4MDQwMjAxMmEsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMTcsCi0JMHgwNDAxZjBlNSwgMHg4MjAwMGQ4MCwgMHgwNDAwMDAwMCwgMHgwNDAyMDAxMywKLQkweDU5Y2MwMDA2LCAweDgyMDAwNTAwLCAweDAwMDBmZmZmLCAweDAyMDIwODAwLAotCTB4MDAxMDA2YmEsIDB4MDQwMjAxMWUsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHgwNDAwMDAwNCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAxZCwgMHgwNDAxZjBkNiwKLQkweDU5YTgwMDI2LCAweDg0MDAwNTQ4LCAweDQ4MDM1MDI2LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMzAsIDB4MDQwMWYwZDAsIDB4ODIwMDBkODAsIDB4MDUwMDAwMDAsCi0JMHgwNDAyMDAwYSwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHgwMDAwZmZmZiwKLQkweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMTA5LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMTgsIDB4MDQwMWYwYzQsIDB4ODIwMDBkODAsIDB4MjAxMDAwMDAsCi0JMHgwNDAyMDAwNCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAxOSwgMHgwNDAxZjBiZSwKLQkweDgyMDAwZDgwLCAweDIxMTAwMDAwLCAweDA0MDIwMDA0LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMWEsIDB4MDQwMWYwYjgsIDB4ODIwMDBkODAsIDB4NTIwMDAwMDAsCi0JMHgwNDAyMDAwYSwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHgwMDAwZmZmZiwKLQkweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMGYxLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMWIsIDB4MDQwMWYwYWMsIDB4ODIwMDBkODAsIDB4NTAwMDAwMDAsCi0JMHgwNDAyMDAwYSwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHgwMDAwZmZmZiwKLQkweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMGU1LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMWMsIDB4MDQwMWYwYTAsIDB4ODIwMDBkODAsIDB4MTMwMDAwMDAsCi0JMHgwNDAyMDAwNCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAzNCwgMHgwNDAxZjA5YSwKLQkweDgyMDAwZDgwLCAweDEyMDAwMDAwLCAweDA0MDIwMDBhLCAweDU5Y2MwMDA2LAotCTB4ODIwMDA1MDAsIDB4MDAwMGZmZmYsIDB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsCi0JMHgwNDAyMDBkMywgMHg0MjAyNzAwMCwgMHgwMDAwMDAyNCwgMHgwNDAxZjA4ZSwKLQkweDgyMDAwZDAwLCAweGZmMDAwMDAwLCAweDgyMDQwZDgwLCAweDI0MDAwMDAwLAotCTB4MDQwMjAwMDQsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMmQsIDB4MDQwMWYwODYsCi0JMHg4MjAwMGQwMCwgMHhmZjAwMDAwMCwgMHg4MjA0MGQ4MCwgMHg1MzAwMDAwMCwKLQkweDA0MDIwMDA0LCAweDQyMDI3MDAwLCAweDAwMDAwMDJhLCAweDA0MDFmMDdlLAotCTB4ODIwMDBkODAsIDB4MGYwMDAwMDAsIDB4MDQwMjAwMDQsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDAyMCwgMHgwNDAxZjA3OCwgMHg4MjAwMGQ4MCwgMHg2MTA0MDAwMCwKLQkweDA0MDIwMDM2LCAweDgzY2MxNDAwLCAweDAwMDAwMDA2LCAweDgwMDgwODAwLAotCTB4NTAwODAwMDAsIDB4ODIwMDA1MDAsIDB4MDAwMGZmZmYsIDB4ODIwMDA0ODAsCi0JMHgwMDAwMDAwNCwgMHg0YzU4MDAwMCwgMHg4MDAwYjEwNCwgMHg4MDU4YjFjMCwKLQkweDA0MDAwMDI2LCAweDRjMTAwMDAwLCAweDUwMDQxODAwLCAweDgyMGMxNTAwLAotCTB4MDMwMDAwMDAsIDB4ODAwODExMzAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2MTUsCi0JMHg4MjA4MjU4MCwgMHgwMDAwMDAwMCwgMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjEyLCAweDA0MDFmMDBjLCAweDgyMDgyNTgwLCAweDAwMDAwMDAxLAotCTB4MDQwMjAwMDQsIDB4NDIwMDAwMDAsIDB4MDAxMGI2MTMsIDB4MDQwMWYwMDYsCi0JMHg4MjA4MjU4MCwgMHgwMDAwMDAwMiwgMHgwNDAyMDAwMywgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjE0LCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDQyMDAxMDAwLAotCTB4MDAwMDgwMTUsIDB4ODIwYzI1MDAsIDB4MDAwMGZmZmYsIDB4ODAwYzE5MjAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMzg1NywgMHg1YzAwMjAwMCwgMHg4MDA0MDgwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2RhLCAweDVjMDBiMDAwLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMjMsIDB4MDQwMWYwNDAsIDB4ODIwMDBkODAsIDB4NjAwMDAwMDAsCi0JMHgwNDAyMDAwNCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAzZiwgMHgwNDAxZjAzYSwKLQkweDgyMDAwZDgwLCAweDU0MDAwMDAwLCAweDA0MDIwMDA4LCAweDA0MDFmYjM2LAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsIDB4MDQwMjAwNzUsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDA0NiwgMHgwNDAxZjAzMCwgMHg4MjAwMGQ4MCwgMHg1NTAwMDAwMCwKLQkweDA0MDIwMDA5LCAweDA0MDFmYjU0LCAweDA0MDIwMDA0LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNDEsIDB4MDQwMWYwMjgsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDIsCi0JMHgwNDAxZjAyNSwgMHg4MjAwMGQ4MCwgMHg3ODAwMDAwMCwgMHgwNDAyMDAwNCwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDQ1LCAweDA0MDFmMDFmLCAweDgyMDAwZDgwLAotCTB4MTAwMDAwMDAsIDB4MDQwMjAwMDQsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNGUsCi0JMHgwNDAxZjAxOSwgMHg4MjAwMGQ4MCwgMHg2MzAwMDAwMCwgMHgwNDAyMDAwNCwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDRhLCAweDA0MDFmMDEzLCAweDgyMDAwZDAwLAotCTB4ZmYwMDAwMDAsIDB4ODIwNDBkODAsIDB4NTYwMDAwMDAsIDB4MDQwMjAwMDQsCi0JMHg0MjAyNzAwMCwgMHgwMDAwMDA0ZiwgMHgwNDAxZjAwYiwgMHg4MjAwMGQwMCwKLQkweGZmMDAwMDAwLCAweDgyMDQwZDgwLCAweDU3MDAwMDAwLCAweDA0MDIwMDA0LAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwNTAsIDB4MDQwMWYwMDMsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDAxZCwgMHg1OWNjMzgwMCwgMHg4MjFjM2QwMCwgMHgwMGZmZmZmZiwKLQkweDgyMWMwNTgwLCAweDAwZmZmZmZlLCAweDU5Y2MwMDAxLCAweDA0MDIwMDA1LAotCTB4NDAwMDMwMDAsIDB4NDIwMjg4MDAsIDB4MDAwMDA3ZmUsIDB4MDQwMWYwMDUsCi0JMHgwNDAxZjhkYSwgMHgwMjAyMDgwMCwgMHgwMDEwMDZiYSwgMHgwNDAyMDAzNCwKLQkweDAyMDFmODAwLCAweDAwMTA0NDAxLCAweDAyMDIwODAwLCAweDAwMTAwNmJhLAotCTB4MDQwMjAwMmYsIDB4ODMzODA1ODAsIDB4MDAwMDAwNDYsIDB4MDQwMjAwMDYsCi0JMHg1OWE4MDAxMCwgMHg4MDE4MDU4MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDZiYSwKLQkweDA0MDAwMDI3LCAweDU5MzQwMjAwLCAweDhjMDAwNTE0LCAweDA0MDAwMDBmLAotCTB4ODMzODA1ODAsIDB4MDAwMDAwMzAsIDB4MDQwMDAwMGMsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAzZiwgMHgwNDAwMDAwOSwgMHg4MzM4MDU4MCwgMHgwMDAwMDAzNCwKLQkweDA0MDAwMDA2LCAweDgzMzgwNTgwLCAweDAwMDAwMDI0LCAweDA0MDAwMDAzLAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwNGMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsCi0JMHgwNDAwMDAxOCwgMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwNCwKLQkweDU5Y2MwYzA0LCAweDQ4MDY2MjAyLCAweDgzMzgwNTgwLCAweDAwMDAwMDRjLAotCTB4MDQwMjAwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMTEsIDB4ODEzNjY5YzAsCi0JMHgwNDAyMDAwNSwgMHg1OWNjMDAwMSwgMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwKLQkweDQ4MDI2MDFlLCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LCAweDU5ODgwMDUzLAotCTB4NDgwM2M4NTcsIDB4ODAwMDAwMDAsIDB4NDgwMzEwNTMsIDB4MWMwMWYwMDAsCi0JMHg0MjAwMTAwMCwgMHgwMDAwODA0OSwgMHg1OWNjMTgwNiwgMHg4MDBjMTkzMCwKLQkweDAyMDFmODAwLCAweDAwMTAzODU3LCAweDAyMDFmODAwLCAweDAwMTA3NmM5LAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2YmEsIDB4MDQwMDA3ZjEsIDB4NDkzNjYwMDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwNCwgMHg1OWNjMGMwNCwgMHg0ODA2NjIwMiwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDA5LCAweDRhMDI2NDFhLCAweDAwMDAwMDA5LAotCTB4NGEwMjYyMWEsIDB4MDAwMDI5MDAsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHg1OWE4MDAyNiwgMHg0ODAzYzg1NywKLQkweDhjMDAwNTA4LCAweDA0MDAwMDEwLCAweDU5Y2MwMDA2LCAweDgyMDAwNTAwLAotCTB4ZmYwMDAwMDAsIDB4ODIwMDBkODAsIDB4MDMwMDAwMDAsIDB4MDQwMDAwMGMsCi0JMHg4MjAwMGQ4MCwgMHgyMDAwMDAwMCwgMHgwNDAwMDAwOSwgMHg4MjAwMGQ4MCwKLQkweDA1MDAwMDAwLCAweDA0MDAwMDA2LCAweDgyMDAwZDgwLCAweDIxMDAwMDAwLAotCTB4MDQwMDAwMDMsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjdmZCwgMHg1OWNjMjAwNiwgMHg4MjEwMjUwMCwKLQkweGZmMDAwMDAwLCAweDljMTAyMWMwLCAweDA0MDFmODA3LCAweDgyMGMxYzAwLAotCTB4MDAxMGIyZGYsIDB4NTAwYzE4MDAsIDB4ODAwYzA1MDAsIDB4NDgwM2M4NTcsCi0JMHgxYzAxZjAwMCwgMHg0MDEwMDgwMCwgMHg0MTc4MTgwMCwgMHg4MjA0MDQ4MCwKLQkweDAwMDAwMDIwLCAweDA0MDAxMDA0LCAweDgwMGMxODAwLCAweDQwMDAwODAwLAotCTB4MDQwMWY3ZmIsIDB4ODIwNDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDA0MDAsCi0JMHgwMDEwYTk1ZiwgMHg1MDAwMDAwMCwgMHg4YzA0MGQwOCwgMHgwNDAwMDAwMiwKLQkweDkwMDAwMWMwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDA0MDFmYWRkLAotCTB4MDQwMjAwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAwMDcsCi0JMHg1OWNjMDAwMiwgMHg4MjAwMDUwMCwgMHhmZjAwMDAwMCwgMHg4MjAwMGQ4MCwKLQkweDA4MDAwMDAwLCAweDA0MDAwODAyLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NTljYzA0MDAsIDB4ODIwMDBkMDAsIDB4MDAwMGZmMDAsIDB4ODQwNDA5YzAsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAzMywgMHgwNDAyMDAxZiwgMHgwNDAxZjk4ZiwKLQkweDA0MDAwMDM4LCAweDU5Y2MwYTA0LCAweDQ4MDY2MjAyLCAweDU5Y2MwMDA2LAotCTB4NDgwM2M4NTcsIDB4ODIwMDA1MDAsIDB4ZmZmZjAwMDAsIDB4ODIwMDBkODAsCi0JMHgwMjAwMDAwMCwgMHgwNDAyMDAwOSwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwKLQkweDAwMDBmZmZmLCAweDA0MDIwMDJiLCAweDQyMDI3MDAwLCAweDAwMDAwMDE1LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsIDB4ODIwMDBkODAsIDB4MDEwMDAwMDAsCi0JMHgwNDAyMDAyNCwgMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHgwMDAwZmZmZiwKLQkweDA0MDIwMDIwLCAweDQyMDI3MDAwLCAweDAwMDAwMDE2LCAweDAyMDFmMDAwLAotCTB4MDAwMjA4ZDgsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMzIsIDB4MDQwMjAwMTksCi0JMHg1OWNjMDAwNiwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MjAwMGQ4MCwKLQkweDE0MDAwMDAwLCAweDA0MDIwMDEzLCAweDQyMDI3MDAwLCAweDAwMDAwMDM4LAotCTB4NTljYzAwMDEsIDB4MDQwMWY4MTAsIDB4MDQwMjAwMGUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNmYywgMHgwNDAyMDAwYiwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwKLQkweDA0MDAwMDA4LCAweDQ5MzY2MDA5LCAweDRhMDI2NDA2LCAweDAwMDAwMDA0LAotCTB4NTljYzBjMDQsIDB4NDgwNjYyMDIsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NywgMHg0YzU4MDAwMCwgMHg0YzEwMDAwMCwKLQkweDRjMzgwMDAwLCAweDRjMzQwMDAwLCAweDgyMDAzNTAwLCAweDAwZmZmZmZmLAotCTB4ODIxODE1MDAsIDB4MDBmZjAwMDAsIDB4ODIwODE1ODAsIDB4MDBmZjAwMDAsCi0JMHgwNDAyMDAxNiwgMHg4MjE4MTQ4MCwgMHgwMGZmZmZmYywgMHgwNDAwMTAxMywKLQkweDgyMTgxNTgwLCAweDAwZmZmZmZkLCAweDA0MDIwMDA0LCAweDQyMDI4ODAwLAotCTB4MDAwMDA3ZmQsIDB4MDQwMWYwNDAsIDB4ODIxODE1ODAsIDB4MDBmZmZmZmUsCi0JMHgwNDAyMDAwNCwgMHg0MjAyODgwMCwgMHgwMDAwMDdmZSwgMHgwNDAxZjAzYSwKLQkweDgyMTgxNTgwLCAweDAwZmZmZmZjLCAweDA0MDIwMDA0LCAweDQyMDI4ODAwLAotCTB4MDAwMDA3ZmMsIDB4MDQwMWYwMzQsIDB4NDE3ODEwMDAsIDB4NDIwMDIwMDAsCi0JMHgwMDAwMDAwMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDdmMCwgMHg0MWFjNzAwMCwKLQkweDUwMzgwMDAwLCAweDgwMDA2ZDQwLCAweDA0MDIwMDA1LCAweDgwMDgxMWMwLAotCTB4MDQwMjAwMWUsIDB4ODQxMDE1NWUsIDB4MDQwMWYwMWMsIDB4NTgzNDAyMTIsCi0JMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwgMHgwNDAwMDAxMSwgMHg1OWE4NDAxMCwKLQkweDgyMjA0NTAwLCAweDAwZmZmZjAwLCAweDgyMTgwNTAwLCAweDAwZmZmZjAwLAotCTB4MDQwMDAwMDIsIDB4ODAyMDA1ODAsIDB4NTgzNDAwMDIsIDB4MDQwMjAwMGYsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjE4NDUwMCwgMHgwMDAwMDBmZiwKLQkweDgwMjA0NTgwLCAweDA0MDIwMDA5LCAweDA0MDFmMDA2LCAweDU4MzQwMDAyLAotCTB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4ODAxODQ1ODAsIDB4MDQwMjAwMDMsCi0JMHg0MDEyODgwMCwgMHgwNDAxZjAwYywgMHg4MDEwMjAwMCwgMHg4MDM4NzAwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2RiLCAweDgwMDgxMWMwLCAweDA0MDIwMDA1LAotCTB4NDgxYmM4NTcsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDMsCi0JMHg4NDBhOGQxZSwgMHg4MDAwMDU4MCwgMHg1YzAwNjgwMCwgMHg1YzAwNzAwMCwKLQkweDVjMDAyMDAwLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDU5YTgwMDI2LAotCTB4OGMwMDA1MGUsIDB4MDQwMDAwMDMsIDB4OGMwMDA1MDIsIDB4MDQwMDAwMDYsCi0JMHg1OWNjMGMwMCwgMHg4MDA0MDkxMCwgMHg4MjA0MDUwMCwgMHgwMDAwMDAwZiwKLQkweDBjMDFmMDAyLCAweDFjMDFmMDAwLCAweDAwMTA1YTJlLCAweDAwMTA1YTJlLAotCTB4MDAxMDVhMmUsIDB4MDAxMDViMWQsIDB4MDAxMDVhMmUsIDB4MDAxMDVhMzAsCi0JMHgwMDEwNWE0OCwgMHgwMDEwNWE0YiwgMHgwMDEwNWEyZSwgMHgwMDEwNWEyZSwKLQkweDAwMTA1YTJlLCAweDAwMTA1YTJlLCAweDAwMTA1YTJlLCAweDAwMTA1YTJlLAotCTB4MDAxMDVhMmUsIDB4MDAxMDVhMmUsIDB4NDgwM2M4NTYsIDB4MWMwMWYwMDAsCi0JMHgwNDAxZjhkZSwgMHgwNDAwMDAxNCwgMHg4MjE0MDUwMCwgMHgwMDAwMDNmZiwKLQkweDgwMDAwMGM0LCAweDgyMDAwNDgwLCAweDAwMDAwMDA4LCAweDA0MDAxMDBlLAotCTB4NTljYzAwMDEsIDB4NTkzMjY4MDksIDB4NTkzNDA4MDIsIDB4ODAwNDA1ODAsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHgwNDAyMDAwNywgMHg1OWNjMGEwNCwKLQkweDQ4MDY2MjAyLCAweDQyMDI3MDAwLCAweDAwMDAwMDQ2LCAweDAyMDFmMDAwLAotCTB4MDAwMjA4ZDgsIDB4NTljYzAwMDQsIDB4NDgwM2M4NTcsIDB4MWMwMWYwMDAsCi0JMHg1OWNjMDAwNCwgMHg0ODAzYzg1NywgMHgxYzAxZjAwMCwgMHgwNDAxZjhjMywKLQkweDA0MDAwMDE2LCAweDgyMTQwNTAwLCAweDAwMDAwM2ZmLCAweDgwMDAwMGM0LAotCTB4ODIwMDA0ODAsIDB4MDAwMDAwMGMsIDB4MDQwMDEwMTAsIDB4NTljYzAwMDEsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHg1OTMyNjgwOSwgMHg1OTM0MDgwMiwKLQkweDgyMDQwZDAwLCAweDAwZmZmZmZmLCAweDgwMDQwNTgwLCAweDA0MDIwMDA3LAotCTB4NTljYzBhMDQsIDB4NDgwNjYyMDIsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDUsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwgMHg1OWNjMDAwNCwgMHg0ODAzYzg1NywKLQkweDFjMDFmMDAwLCAweDU5Y2MwMDA0LCAweDQ4MDNjODU3LCAweDU5Y2MwMDAwLAotCTB4ODIwMDA1MDAsIDB4ZmYwMDAwMDAsIDB4NTljYzEwMDEsIDB4ODIwODE1MDAsCi0JMHgwMGZmZmZmZiwgMHg4MDA4MDU0MCwgMHg0ODAzYzg1NywgMHg0ODE3Yzg1NywKLQkweDA0MDFmOWQ4LCAweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwMDE2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsCi0JMHgwNDAyMDAxMSwgMHg1OWNjMDAwMiwgMHg4MjAwMDUwMCwgMHhmZjAwMDAwMCwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDAyMDIwODAwLCAweDAwMTAwNmJhLAotCTB4MDQwMjAwMDksIDB4ODIwNDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDAwNiwgMHgwMjAyMTgwMCwgMHgwMDEwMDZiYSwgMHgwNDAyMTAwMiwKLQkweDBjMDFmMDAzLCAweDQ4MDNjODU2LCAweDFjMDFmMDAwLCAweDAwMTA1YTkxLAotCTB4MDAxMDVhOTMsIDB4MDAxMDVhOTEsIDB4MDAxMDVhOTEsIDB4MDAxMDVhZWMsCi0JMHgwMDEwNWFmYiwgMHg0ODAzYzg1NiwgMHgxYzAxZjAwMCwgMHg1OWE4MDAxNiwKLQkweDgwMDAwMWMwLCAweDAyMDIwODAwLCAweDAwMTAwNmJhLCAweDA0MDIwN2ZhLAotCTB4NTljYzA4MDIsIDB4NDgwN2M4NTYsIDB4OGMwNDBkMmUsIDB4MDQwMjAwMWQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNzZjOSwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5Y2MwMDAxLCAweDA0MDFmZjE4LCAweDA0MDIwMDBkLCAweDAyMDFmODAwLAotCTB4MDAwMjAyNjcsIDB4MDQwMjAwMGEsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDUsCi0JMHg0OTM2NjAwOSwgMHg1OWNjMDgwNCwgMHg0ODA2NjAxYywgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDg4LCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LCAweDQ4MDNjODU3LAotCTB4NDIwMjg4MDAsIDB4MDAwMGZmZmYsIDB4NDE3YTY4MDAsIDB4NTljYzAwMDEsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHg0ODAyNjAxZSwgMHgwNDAxZjdlZiwKLQkweDU5Y2MwMDAxLCAweDQ4MDNjODU3LCAweDA0MDFmZWZmLCAweDAyMDIwODAwLAotCTB4MDAxMDA2YmEsIDB4MDQwMjA3ZDQsIDB4MDIwMWY4MDAsIDB4MDAxMDQzZmMsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDZiYSwgMHgwNDAyMDdjZiwgMHg1OWNjMDAwNSwKLQkweDhjMDAwNTAwLCAweDA0MDIwMDA2LCAweDU5MzQwMjAwLCAweDhjMDAwNTBlLAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2YmEsIDB4MDQwMjA3YzcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDg0MiwgMHgwNDAyMDAxMywgMHgwNDAxZjg0MCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNmJhLCAweDA0MDAwN2MwLCAweDAyMDFmODAwLCAweDAwMDIwODkyLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2YmEsIDB4MDQwMDA3YmIsIDB4NDkzNjYwMDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMiwgMHg1OWNjMDgwNCwgMHg0ODA2NjAxYywKLQkweDQyMDI3MDAwLCAweDAwMDAwMDg4LCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDA3YWYsIDB4NDkzNjYwMDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwNCwgMHg1OWNjMGMwNCwgMHg0ODA2NjIwMiwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LAotCTB4NTljYzA4MDIsIDB4OGMwNDBkMmUsIDB4MDQwMDAwMGIsIDB4MDQwMWY4MWYsCi0JMHgwNDAwMDAwOSwgMHgwNDAxZjk2MSwgMHgwNDAyMDAwNywgMHg1OWNjMGEwNCwKLQkweDQ4MDY2MjAyLCAweDQyMDI3MDAwLCAweDAwMDAwMDg5LCAweDAyMDFmMDAwLAotCTB4MDAwMjA4ZDgsIDB4NDkzM2M4NTcsIDB4MWMwMWYwMDAsIDB4NTljYzAwMDQsCi0JMHg0ODAzYzg1NywgMHg1OWNjMDgwMiwgMHg4YzA0MGQyZSwgMHgwNDAwMDAwYiwKLQkweDA0MDFmODBlLCAweDA0MDAwMDA5LCAweDA0MDFmOTUwLCAweDA0MDIwMDA3LAotCTB4NTljYzBhMDQsIDB4NDgwNjYyMDIsIDB4NDIwMjcwMDAsIDB4MDAwMDAwOGEsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwgMHg0OTMzYzg1NywgMHgxYzAxZjAwMCwKLQkweDU5Y2MwYTA0LCAweDA0MDFmMDAyLCAweDU5Y2MwYzA0LCAweDU5YTgwMDBlLAotCTB4NTlhODEwNjcsIDB4ODAwODA0MDAsIDB4ODAwNDA0ODAsIDB4MDQwMjEwMDgsCi0JMHg0MDA0MDAwMCwgMHg4MDAwMDBjNCwgMHg4MDA0MDhjYSwgMHg4MDA0MGMwMCwKLQkweDgyMDY2NDAwLCAweDAwMTBjZmMwLCAweDFjMDFmMDAwLCAweDgwMDAwNTgwLAotCTB4MDQwMWY3ZmUsIDB4NTljYzA4MDIsIDB4OGMwNDBkMmUsIDB4MDQwMjAwMTAsCi0JMHgwNDAxZmZlYywgMHgwNDAwMDAwZSwgMHg1OWNjMDAwMSwgMHg4MjAwMDUwMCwKLQkweDAwZmZmZmZmLCAweDU5MzI2ODA5LCAweDU5MzQwODAyLCAweDgyMDQwZDAwLAotCTB4MDBmZmZmZmYsIDB4ODAwNDA1ODAsIDB4MDQwMjAwMDUsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDA1MSwgMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwgMHg1OWNjMDAwNCwKLQkweDQ4MDNjODU3LCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDQyMDAzMDAwLAotCTB4MDAwMDAxMDUsIDB4MDQwMWYwMDEsIDB4NDgwM2M4NTYsIDB4NGMzYzAwMDAsCi0JMHg0MWNjNzgwMCwgMHg0MDE0MjAwMCwgMHgwNDAxZjgwMywgMHg1YzAwNzgwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRjNTgwMDAwLCAweDU4M2MwNDAwLAotCTB4ODIwMDA1MDAsIDB4MDAwMGYwMDAsIDB4ODIwMDA1ODAsIDB4MDAwMGMwMDAsCi0JMHgwNDAwMDAyNCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwgMHgwNDAwMDAyMSwKLQkweDRjMTgwMDAwLCAweDU4M2MwMDAxLCAweDA0MDFmZTZmLCAweDA0MDIwMDFmLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzZmMsIDB4MDQwMjAwMWMsIDB4NDkzNjYwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwgMHgwNDAwMDAxOCwgMHg0OTJlNjAxNywKLQkweDQ5N2E1ODAwLCAweDQ5N2E1YTA0LCAweDQ4MTI1YzA0LCAweDgzMmNhYzAwLAotCTB4MDAwMDAwMDUsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDcsIDB4NDAzY2EwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg1YzAwMzAwMCwgMHg0ODFhNjQxYSwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDNlLCAweDRhMDI2NDA2LCAweDAwMDAwMDAxLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDY0NzAsCi0JMHg1YzAwYjAwMCwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDVjMDAzMDAwLCAweDA0MDFmN2ZiLCAweDQ4MDNjODU2LCAweDU5Y2MwNDAwLAotCTB4ODIwMDBkMDAsIDB4MDAwMGZmMDAsIDB4ODIwNDA1MDAsIDB4MDAwMGYwMDAsCi0JMHg4NDA0MDljMCwgMHg4MjAwMDU4MCwgMHgwMDAwMjAwMCwgMHgwNDAyMDA0OSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDIyLCAweDA0MDIwMDNhLCAweDU5YzQwMGE0LAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwMGYsIDB4ODIwMDBjODAsIDB4MDAwMDAwMDcsCi0JMHgwNDAwMTAwNCwgMHg4MjAwMDQ4MCwgMHgwMDAwMDAwYywgMHgwNDAwMTAzZiwKLQkweDU5Y2MwMDA2LCAweDgyMDAwNTAwLCAweGZmZmYwMDAwLCAweDgyMDAwZDgwLAotCTB4MDQwMDAwMDAsIDB4MDQwMDAwMzksIDB4ODIwMDBkODAsIDB4NjAwMDAwMDAsCi0JMHgwNDAwMDAzNiwgMHg4MjAwMGQ4MCwgMHg1NDAwMDAwMCwgMHgwNDAwMDAzMywKLQkweDgyMDAwZDgwLCAweDAzMDAwMDAwLCAweDA0MDIwMDE1LCAweDU5YTgwODI2LAotCTB4OGMwNDBkMDIsIDB4MDQwMjAwMmQsIDB4OGMwNDBkMDgsIDB4MDQwMjAwMmIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwgMHgwNDAwMDAyYiwgMHg1OWE4MDAxZCwKLQkweDgwMDAwMGQwLCAweDU5YTgwODEwLCAweDgyMDQwZDAwLCAweDAwMDAwMGZmLAotCTB4ODAwNDA1NDAsIDB4NTljYzA4MDAsIDB4ODIwNDBkMDAsIDB4MDBmZmZmZmYsCi0JMHg4MDA0MDU4MCwgMHgwNDAyMDAxYiwgMHgwNDAxZjAxYywgMHg1OWM0MDgwMiwKLQkweDhjMDQwZDBjLCAweDA0MDIwMDE3LCAweDgyMDAwZDgwLCAweDUyMDAwMDAwLAotCTB4MDQwMDA3ZWMsIDB4ODIwMDBkODAsIDB4MDUwMDAwMDAsIDB4MDQwMDA3ZTksCi0JMHg4MjAwMGQ4MCwgMHg1MDAwMDAwMCwgMHgwNDAwMDdlNiwgMHgwNDAxZjAwZCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDIzLCAweDA0MDIwMDBhLCAweDA0MDFmZjU3LAotCTB4MDQwMDAwMDgsIDB4NTkzMDBjMDMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDIsCi0JMHgwNDAwMDAwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDA1MSwgMHgwNDAwMDAwMywKLQkweDgwMDAwNTgwLCAweDA0MDFmMDAzLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NTljYzAwMDYsIDB4ODIwMDA1MDAsIDB4ZmZmZjAwMDAsCi0JMHg4MjAwMGQ4MCwgMHgwMzAwMDAwMCwgMHgwNDAwMDAwNCwgMHg4MjAwMGQ4MCwKLQkweDUyMDAwMDAwLCAweDA0MDIwN2YzLCAweDU5YTgwMDI2LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMDksIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDgsIDB4MDQwMDA3ZWYsCi0JMHgwNDAxZjdlYywgMHg0ODAzYzg1NiwgMHg0YzVjMDAwMCwgMHg0YzU4MDAwMCwKLQkweDU5YTgwMDE2LCAweDgyMDAwNTgwLCAweDAwMDAwMDRjLCAweDA0MDIwMDFmLAotCTB4NTljY2I4MDcsIDB4OWM1Y2I5YzAsIDB4ODI1Y2JkMDAsIDB4MDAwMDAwMDcsCi0JMHg4YzVjYmQwMCwgMHgwNDAwMDAwYSwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwKLQkweDgzYTgxYzAwLCAweDAwMDAwMDAyLCAweDgzY2MxNDAwLCAweDAwMDAwMDBkLAotCTB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsIDB4MDQwMjAwMTAsIDB4OGM1Y2JkMDIsCi0JMHgwNDAwMDAwYSwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwgMHg4M2E4MWMwMCwKLQkweDAwMDAwMDAwLCAweDgzY2MxNDAwLCAweDAwMDAwMDBmLCAweDAyMDFmODAwLAotCTB4MDAxMDgyZmYsIDB4MDQwMjAwMDUsIDB4OGM1Y2JkMDQsIDB4MDQwMDAwMDMsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAwYjAwMCwgMHg1YzAwYjgwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRjNWMwMDAwLCAweDRjNTgwMDAwLAotCTB4NTlhODAwMTYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNGMsIDB4MDQwMjAwMWYsCi0JMHg1OWNjYjgwNywgMHg5YzVjYjljMCwgMHg4MjVjYmQwMCwgMHgwMDAwMDAwNywKLQkweDhjNWNiZDAwLCAweDA0MDAwMDBhLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLAotCTB4ODNhODFjMDAsIDB4MDAwMDAwMDIsIDB4ODNjYzE0MDAsIDB4MDAwMDAwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwODJmZiwgMHgwNDAyMDAxMCwgMHg4YzVjYmQwMiwKLQkweDA0MDAwMDBhLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDgzYTgxYzAwLAotCTB4MDAwMDAwMDAsIDB4ODNjYzE0MDAsIDB4MDAwMDAwMGIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwODJmZiwgMHgwNDAyMDAwNSwgMHg4YzVjYmQwNCwgMHgwNDAwMDAwMywKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDBiMDAwLCAweDVjMDBiODAwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTcsIDB4NGM1ODAwMDAsIDB4NDAwMDMwMDAsCi0JMHg0MjAwMjAwMCwgMHgwMDAwMDdmMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAxMCwKLQkweDgzYWM3NDAwLCAweDAwMDAwN2YwLCAweDUwMzgwMDAwLCAweDgwMDI2ZDQwLAotCTB4MDQwMDAwMDYsIDB4NTkzNDAwMDIsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsCi0JMHg4MDE4MDU4MCwgMHgwNDAwMDAxMCwgMHg4MDEwMjAwMCwgMHg4MDM4NzAwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2Y1LCAweDgyMTAwNDgwLCAweDAwMDAwODAwLAotCTB4NDIwMDIwMDAsIDB4MDAwMDAwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDA3ZjAsCi0JMHg0MWFjNzAwMCwgMHgwNDAyMTdlZCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmMDAyLCAweDQwMTI4ODAwLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLAotCTB4NTlhODAwMjYsIDB4OGMwMDA1MGUsIDB4MDQwMDAwMDQsIDB4OGMwMDA1MDIsCi0JMHgwNDAwMDAwMywgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDA0MDFmN2ZkLCAweDU5MzAwYzA2LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDIsIDB4MDQwMDAwMDYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDUsCi0JMHgwNDAwMDAwMywgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDU5YzgwMDAwLCAweDg0MDAwNTU4LCAweDg0MDAwNTEyLCAweDQ4MDM5MDAwLAotCTB4MWMwMWYwMDAsIDB4NGEwMzI4MWEsIDB4MDAwMDAzZTgsIDB4NGEwMzI4MDIsCi0JMHgwMDEwY2ZjMCwgMHg0YTAzMjgwMCwgMHgwMDAwMDAwMCwgMHg0YTAzMjgwOCwKLQkweDAwMTA2ZDlmLCAweDQyMDAwMDAwLCAweDAwMDAwMDA1LCAweDgzOTQ3YzAwLAotCTB4MDAwMDAwMDksIDB4NDk3ODc4MDEsIDB4NGEwMDc4MDIsIDB4MDAxMDZkNTQsCi0JMHg4MjNjN2MwMCwgMHgwMDAwMDAwMywgMHg4MDAwMDA0MCwgMHgwNDAyMDdmYSwKLQkweDRhMDMyODE5LCAweGZmZmYwMDAwLCAweDQyMDFkMDAwLCAweDAwMDAwMDY0LAotCTB4MDQwMWY5N2MsIDB4NDIwMWQwMDAsIDB4MDAwMTg2YTAsIDB4MDQwMWYxOGIsCi0JMHgwMDAwMDAwMCwgMHgwMDAwMDAwMywgMHgwMDAwMDAwNiwgMHgwMDAwMDAwOSwKLQkweDAwMDAwMDBjLCAweDRkMzAwMDAwLCAweDRkMmMwMDAwLCAweDRkMzQwMDAwLAotCTB4NGQ0MDAwMDAsIDB4NGNmYzAwMDAsIDB4NGQzODAwMDAsIDB4NGQzYzAwMDAsCi0JMHg0ZDQ0MDAwMCwgMHg0ZDRjMDAwMCwgMHg0ZDQ4MDAwMCwgMHg0YzVjMDAwMCwKLQkweDRjNjAwMDAwLCAweDRjNjQwMDAwLCAweDRjYzgwMDAwLCAweDRjY2MwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA2YWYsIDB4NWMwMTk4MDAsIDB4NWMwMTkwMDAsCi0JMHg1YzAwYzgwMCwgMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHg1YzAyOTAwMCwKLQkweDVjMDI5ODAwLCAweDVjMDI4ODAwLCAweDVjMDI3ODAwLCAweDVjMDI3MDAwLAotCTB4NWMwMWY4MDAsIDB4NWMwMjgwMDAsIDB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg1OTk0MDAwNCwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDBhLCAweDU5OTQwMDI1LCAweDgwMDQwNDAwLCAweDAyMDAxODAwLAotCTB4MDAxMDA2MTUsIDB4NDgwMzI4MDQsIDB4NDgwYjI4MDUsIDB4NGEwMzI4MDMsCi0JMHgwMDAwMDAwYSwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg1OTk0MDAxZiwKLQkweDgwMDAwNTQwLCAweDA0MDIwMDBhLCAweDU5OTQwMDI1LCAweDgwMDQwNDAwLAotCTB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsIDB4NDgwMzI4MWYsIDB4NDgwYjI4MjAsCi0JMHg0YTAzMjgxZSwgMHgwMDAwMDAwMSwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwKLQkweDU5OTQwMDIyLCAweDgwMDAwNTQwLCAweDA0MDIwMDBhLCAweDU5OTQwMDI1LAotCTB4ODAwNDA0MDAsIDB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsIDB4NDgwMzI4MjIsCi0JMHg0ODBiMjgyMywgMHg0YTAzMjgyMSwgMHgwMDAwMDAwYSwgMHg4MDAwMDU4MCwKLQkweDFjMDFmMDAwLCAweDRjMDAwMDAwLCAweDU5OTQwMDA1LCAweDQ4MDNjODU3LAotCTB4NDgwYmM4NTcsIDB4ODAwODA1ODAsIDB4MDQwMjAwMDMsIDB4NDk3YjI4MDQsCi0JMHg0OTdiMjgwNSwgMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHg0YzAwMDAwMCwKLQkweDU5OTQwMDIwLCAweDQ4MDNjODU3LCAweDQ4MGJjODU3LCAweDgwMDgwNTgwLAotCTB4MDQwMjAwMDMsIDB4NDk3YjI4MWYsIDB4NDk3YjI4MjAsIDB4NWMwMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHg0YzAwMDAwMCwgMHg1OTk0MDAyMywgMHg0ODAzYzg1NywKLQkweDQ4MGJjODU3LCAweDgwMDgwNTgwLCAweDA0MDIwMDAzLCAweDQ5N2IyODIyLAotCTB4NDk3YjI4MjMsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDkzN2M4NTcsCi0JMHg0OGViYzg1NywgMHg1OTM0MDIwMywgMHg4MGU4MDQ4MCwgMHgwNDAwMTAwMiwKLQkweDQ4ZWE2YTAzLCAweDFjMDFmMDAwLCAweDVjMDNlMDAwLCAweDFjMDFmMDAwLAotCTB4NGQ0NDAwMDAsIDB4NDIwMDc4MDAsIDB4MDAwMDAwMTAsIDB4NTk5Njg4MDEsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDI2NywgMHgwNDAyMDAxMiwgMHg1OTM0MWEwMywKLQkweDgwMGMxODQwLCAweDA0MDAxMDBmLCAweDU5OTQwMDI3LCAweDgwMGMwNDgwLAotCTB4MDQwMDAwMDMsIDB4NDgwMjZhMDMsIDB4MDQwMjEwMGEsIDB4NTkzNDAwMGYsCi0JMHg0OTdhNmEwMywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwNiwgMHg0YzNjMDAwMCwKLQkweDU5MzQxNDBiLCAweDAyMDFmODAwLCAweDAwMDIwMjc1LCAweDVjMDA3ODAwLAotCTB4ODE0Njg4MDAsIDB4ODM0NDA0ODAsIDB4MDAwMDA4MDAsIDB4MDQwMjEwMDcsCi0JMHg4MDNjNzg0MCwgMHgwNDAyMDdlNywgMHg0OTQ3MjgwMSwgMHg1YzAyODgwMCwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDRhMDMyODAwLCAweDAwMDAwMDAyLAotCTB4NDk3YjI4MDEsIDB4MDQwMWY3ZmEsIDB4NDIwMDc4MDAsIDB4MDAwMDAwMTAsCi0JMHg1OTk2NjAwMiwgMHg1OTMwMDIwNSwgMHg4MDAwMGQ0MCwgMHgwNDAwMDAwNiwKLQkweDU5OTQwMDI3LCAweDgwMDQwNDgwLCAweDQ4MDI2MjA1LCAweDA0MDAxMDJkLAotCTB4MDQwMDAwMmMsIDB4NTkzMDAyMDYsIDB4ODAwMDBkNDAsIDB4MDQwMDAwMTQsCi0JMHg1OWI4MDBlNCwgMHg4YzAwMDUyNCwgMHgwNDAyMDAxMSwgMHg0YTAzNzBlNCwKLQkweDAwMDMwMDAwLCAweDQwMDAwMDAwLCAweDU5YjgwMGU0LCAweDhjMDAwNTI0LAotCTB4MDQwMDAwMDQsIDB4NGEwMzcwZTQsIDB4MDAwMjAwMDAsIDB4MDQwMWYwMDgsCi0JMHg1OTk0MDAyNywgMHg4MDA0MDQ4MCwgMHg0ODAyNjIwNiwgMHg0YTAzNzBlNCwKLQkweDAwMDIwMDAwLCAweDA0MDAxMDFjLCAweDA0MDAwMDFiLCAweDgzMzI2NDAwLAotCTB4MDAwMDAwMjQsIDB4NDkzMzI4MDIsIDB4NDE1NDAwMDAsIDB4ODEzMDA0ODAsCi0JMHgwNDAyMTAwNSwgMHg4MDNjNzg0MCwgMHgwNDAyMDdkYiwgMHg1YzAzZTAwMCwKLQkweDFjMDFmMDAwLCAweDU5OTQwMDI2LCAweDQ4MDMyODI3LCAweDRhMDMyODAyLAotCTB4MDAxMGNmYzAsIDB4NDk3YjI4MjYsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMGYsCi0JMHg0YTAzMjgwMCwgMHgwMDAwMDAwMSwgMHg1YzAzZTAwMCwgMHgxYzAxZjAwMCwKLQkweDRjM2MwMDAwLCAweDAyMDFmODAwLCAweDAwMTA4ZjkyLCAweDVjMDA3ODAwLAotCTB4MDQwMWY3ZDEsIDB4NGMzYzAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDhiMTEsCi0JMHg1YzAwNzgwMCwgMHgwNDAxZjdlMiwgMHg0YTAzMjgwMCwgMHgwMDAwMDAwMCwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDU5YTgwODZiLCAweDhjMDQwZDMwLAotCTB4MDQwMjAwMjksIDB4OGMwNDBkMzIsIDB4MDQwMDAwMGYsIDB4NTlhODAwNjksCi0JMHg4MTY0MDQ4MCwgMHgwNDAwMTAxOSwgMHg1OWE4MDAwYiwgMHg4MTUwMDU4MCwKLQkweDA0MDAwMDA1LCAweDU5YTgwMDZhLCAweDU5YTgxMDY2LCAweDgwMDgwNTgwLAotCTB4MDQwMjAwMTIsIDB4OTAwNDExYzAsIDB4ODIwODE1MDAsIDB4MDAwMDcwMDAsCi0JMHgwNDAxZjAxMiwgMHg4MjA0MDUwMCwgMHgwMDAwMDAxZiwgMHgwNDAwMDAxNiwKLQkweDgwMDQwODQwLCAweDgyMDQwNTAwLCAweDAwMDAwMDFmLCAweDA0MDAwMDAzLAotCTB4NDgwNzUwNmIsIDB4MDQwMWYwMTAsIDB4OTAwNDAxYzAsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAxZiwgMHg4MDA0MGQ0MCwgMHg5MDA0MDFjMCwgMHg4MDA0MDU4MCwKLQkweDgyMDAxNTAwLCAweDAwMDA3MDAwLCAweDgyMDQwNTAwLCAweGZmZmY4ZmZmLAotCTB4ODAwODA1NDAsIDB4NDgwMzUwNmIsIDB4ODAwODExMTQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDcyOCwgMHgxYzAxZjAwMCwgMHg0YTAzMjgwNywgMHgwMDAwMDdkMCwKLQkweDRhMDMyODA2LCAweDAwMDAwMDBhLCAweDFjMDFmMDAwLCAweDQyMDAwODAwLAotCTB4MDAwMDA3ZDAsIDB4ODMxODA0ODAsIDB4MDAwMDAwMDUsIDB4MDIwMjE4MDAsCi0JMHgwMDEwMDYxNSwgMHg4Mzk0N2MwMCwgMHgwMDAwMDAwOSwgMHg4MzE4MDQwMCwKLQkweDAwMTA1YzdjLCAweDUwMDAwMDAwLCAweDgwM2M3YzAwLCAweDQ4MDQ3ODAxLAotCTB4NGEwMDc4MDAsIDB4MDAwMDAwMGEsIDB4MWMwMWYwMDAsIDB4ODMxODA0ODAsCi0JMHgwMDAwMDAwNSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4Mzk0N2MwMCwKLQkweDAwMDAwMDA5LCAweDgzMTgwNDAwLCAweDAwMTA1YzdjLCAweDUwMDAwMDAwLAotCTB4ODAzYzdjMDAsIDB4NDk3ODc4MDEsIDB4MWMwMWYwMDAsIDB4NDgwN2M4NTcsCi0JMHg0ODBiYzg1NywgMHg1OTk0MDAyNSwgMHg4MDA0MDQwMCwgMHgwMjAwMTgwMCwKLQkweDAwMTAwNjE1LCAweDQ4MDMyODA0LCAweDQ4MGIyODA1LCAweDRhMDMyODAzLAotCTB4MDAwMDAwMGEsIDB4MWMwMWYwMDAsIDB4NDgwN2M4NTcsIDB4NDgwYmM4NTcsCi0JMHg1OTk0MDAyNSwgMHg4MDA0MDQwMCwgMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwKLQkweDQ4MDMyODFjLCAweDQ4MGIyODFkLCAweDRhMDMyODFiLCAweDAwMDAwMDBhLAotCTB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsIDB4NTk5NDAwMWQsIDB4NDgwM2M4NTcsCi0JMHg0ODBiYzg1NywgMHg4MDA4MDU4MCwgMHgwNDAyMDAwMywgMHg0ODAzMjgxYywKLQkweDQ4MDMyODFkLCAweDVjMDAwMDAwLCAweDFjMDFmMDAwLCAweDQ4MDdjODU3LAotCTB4NDgwYmM4NTcsIDB4NTk5NDAwMjUsIDB4ODAwNDA0MDAsIDB4MDIwMDE4MDAsCi0JMHgwMDEwMDYxNSwgMHg0ODAzMjgyMiwgMHg0ODBiMjgyMywgMHg0YTAzMjgyMSwKLQkweDAwMDAwMDBhLCAweDFjMDFmMDAwLCAweDgwZTlkMWMwLCAweDA0MDAwMDBlLAotCTB4MDQwMWY4MzIsIDB4MDQwMjUwMDAsIDB4NDIwM2UwMDAsIDB4ODAwMDAwMDAsCi0JMHg0MGU4MTAwMCwgMHg0MTc4MDgwMCwgMHg0MjAwMDAwMCwgMHgwMDAwMDA2NCwKLQkweDAyMDFmODAwLCAweDAwMTA2M2VlLCAweDU5OTQwMDI0LCAweDgwMDgwNDAwLAotCTB4NDgwMzI4MjQsIDB4MWMwMWYwMDAsIDB4NDIwMDEwMDAsIDB4MDAxMDRkMzksCi0JMHgwNDAxZmVlNSwgMHg0MjAwMTAwMCwgMHgwMDEwNGQyYywgMHgwNDAxZmZkNiwKLQkweDQyMDAxMDAwLCAweDAwMTAzZjYyLCAweDA0MDFmZWRmLCAweDQyMDAxMDAwLAotCTB4MDAxMDNmZTQsIDB4MDQwMWZlZGMsIDB4NDIwMDEwMDAsIDB4MDAxMDNmMzcsCi0JMHgwNDAxZmVkOSwgMHg0MjAwMTAwMCwgMHgwMDEwNDAxYiwgMHgwNDAxZjZlYSwKLQkweDQyMDNlMDAwLCAweDcwMDAwMDAwLCAweDQyMDNlMDAwLCAweGIwMzAwMDAwLAotCTB4NDBlYmY4MDAsIDB4NDIwMDAwMDAsIDB4MDAwMDAwM2MsIDB4MDQwMDQwMDQsCi0JMHg4MDAwMDA0MCwgMHgwNDAyMDdmZSwgMHgwNDAxZjAwNywgMHg0MjAzZTAwMCwKLQkweDcwMDAwMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjdkLCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4MWMwMWYwMDAsIDB4NDIwM2UwMDAsIDB4ODAwMDAwMDAsCi0JMHg0MjAzZTAwMCwgMHhiMDQwMDAwMCwgMHg0MGViZjgwMCwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDNjLCAweDA0MDA1MDA0LCAweDgwMDAwMDQwLCAweDA0MDIwN2ZlLAotCTB4MDQwMWYwMDcsIDB4NDIwM2UwMDAsIDB4ODAwMDAwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY3ZSwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHgxYzAxZjAwMCwKLQkweDU5YTgwMDBlLCAweDgyMDAwNDgwLCAweDAwMDAwMTAwLCAweDU5OWMwYTAyLAotCTB4ODAwNDA5YzAsIDB4MDQwMjAwMDIsIDB4ODAwNDA4MDAsIDB4ODAwNDE0ODAsCi0JMHgwNDAwMTAwMiwgMHg0MDAwMDgwMCwgMHg0ODA3NTA2NywgMHg1OWE4MTAwZSwKLQkweDQwMDQwMDAwLCAweDgwMGFjYzgwLCAweDQ5Njc1MDBlLCAweDQ5Njc1MDY5LAotCTB4NTlhYWE4MGIsIDB4NDE2NDA4MDAsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMjQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjNjZiwgMHg4MjA2YTQwMCwgMHgwMDEwY2ZjMCwKLQkweDQ5NTM1MDY1LCAweDQxNTJiMDAwLCAweDQyMDA2MDAwLCAweDAwMTBiYzY0LAotCTB4NGEwMDYwMDQsIDB4MDAwMDAxMmMsIDB4NGEwMDYwMDUsIDB4ZGExMGRhMTAsCi0JMHg0YTAwNjAwOCwgMHgwMDAwMDAxMSwgMHg0YTAwNjAwOSwgMHgwMDEwYmM2NCwKLQkweDRhMDA2MDBhLCAweDAwMTAxMTA4LCAweDU5OWMwMDE0LCAweDQ4MDA2MDExLAotCTB4NTk5YzAwMTUsIDB4NDgwMDYwMTIsIDB4NDIwMDYwMDAsIDB4MDAxMGJjNDAsCi0JMHg0YTAwNjIwMywgMHgwMDAwMDAwOCwgMHg0YTAwNjQwNiwgMHgwMDAwMDAwNiwKLQkweDRhMDA2MDAyLCAweGZmZmYwMDAwLCAweDRhMDA2MDA4LCAweDAwMTBiYzY0LAotCTB4NGEwMDYwMTQsIDB4MDAxMGJjNjQsIDB4NTk5YzAwMTQsIDB4NDgwMDYwMTUsCi0JMHg1OTljMDAxNSwgMHg0ODAwNjAxNiwgMHg1OTljMDQxMywgMHg0ODAwNjAxNywKLQkweDQ5NTA2MDE4LCAweDQ5NTQ2MDE5LCAweDU5YTgwMDY3LCAweDQ4MDA2MDFhLAotCTB4NGEwMDYwMWIsIDB4MDAxMGIyNjUsIDB4NGEwMDYwMWMsIDB4MDAxMGIyNjYsCi0JMHg0YTAwNjAxZCwgMHgwMDEwYjI2YSwgMHg0MjAwMDAwMCwgMHhiMDAwMDAwMCwKLQkweDQyMDAwODAwLCAweDAwMTBiYzQwLCAweDAyMDFmODAwLCAweDAwMTAwYmIyLAotCTB4MWMwMWYwMDAsIDB4ODIwMDBkMDAsIDB4MDAwMDAwYzAsIDB4MDQwMDAwMDQsCi0JMHg4MjA0MGQ4MCwgMHgwMDAwMDBjMCwgMHgwNDAyMDA1NSwgMHg4MjAwMGQwMCwKLQkweDAwMDAyMDIwLCAweDU5MzAwNDE0LCAweDg0MDAwNTEyLCAweDgyMDQwZDgwLAotCTB4MDAwMDIwMjAsIDB4MDQwMDAwMGIsIDB4OGMwMDA1MTQsIDB4MDQwMjAwMGYsCi0JMHg0ODAyNjQxNCwgMHg4MTNlNzljMCwgMHgwMjAyMDAwMCwgMHgwMDAyMDgwNCwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDQzLCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LAotCTB4NTkzMjY4MDksIDB4NTkzNDBhMDAsIDB4OGMwNDBkMGEsIDB4MDQwMDA3ZjMsCi0JMHg4NDAwMDU1MiwgMHgwNDAxZjdmMSwgMHg4NDAwMDUxNCwgMHg1OTJjMDgwZCwKLQkweDQ4MDY2MDE1LCAweDA0MDFmN2VmLCAweDU5MzI2ODA5LCAweDU5MzQwYTAwLAotCTB4OGMwNDBkMGEsIDB4MDIwMDAwMDAsIDB4MDAwMjA4MTcsIDB4NTkzMDBjMTQsCi0JMHg4NDA0MGQ1MiwgMHg0ODA2NjQxNCwgMHgwMjAxZjAwMCwgMHgwMDAyMDgxNywKLQkweDAyMDFmODAwLCAweDAwMDIwMDg3LCAweDgxM2U3OWMwLCAweDAyMDIwMDAwLAotCTB4MDAwMjA4MDQsIDB4MDIwMWYwMDAsIDB4MDAwMjA4MjUsIDB4OGMwMDA1MWUsCi0JMHgwMjAwMDAwMCwgMHgwMDAyMDgzMSwgMHg4MjAwMGQwMCwgMHgwMDAwMjAyMCwKLQkweDgyMDQwZDgwLCAweDAwMDAyMDIwLCAweDA0MDAwMDE0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwYzAsIDB4ODIwMDBkODAsIDB4MDAwMDAwODAsIDB4MDQwMDAwMDgsCi0JMHg4MTNlNzljMCwgMHgwMjAyMDAwMCwgMHgwMDAyMDgwNCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDQxLCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LCAweDgxM2U3OWMwLAotCTB4MDIwMjAwMDAsIDB4MDAwMjA4MDQsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDMsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhkOCwgMHg1OTMyNjgwOSwgMHg1OTM0MGEwMCwKLQkweDhjMDQwZDBhLCAweDA0MDAwN2VhLCAweDU5MzAwYzE0LCAweDg0MDQwZDUyLAotCTB4NDgwNjY0MTQsIDB4MDQwMWY3ZTYsIDB4NDkyZmM4NTcsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNiwgMHgwMjAxZjAwMCwgMHgwMDAyMDgyYywgMHg0OTJmYzg1NywKLQkweDQyMDAwODAwLCAweDAwMDAwMDA0LCAweDAyMDFmMDAwLCAweDAwMDIwODJjLAotCTB4NDgwN2M4NTYsIDB4NTlhODAwNjgsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMDMsCi0JMHg4MDA4MDU0MCwgMHgwNDAxZjAwMiwgMHg4MDA4MDUwMCwgMHg0ODAzNTA2OCwKLQkweDFjMDFmMDAwLCAweDRhMDMwODAwLCAweDAwMDAwMDAwLCAweDRhMDMwODAyLAotCTB4MDAwMDAwMDEsIDB4NDk3YjA4MDMsIDB4NDk3YjA4MDQsIDB4MWMwMWYwMDAsCi0JMHg1OTg0MDAwMiwgMHg4YzAwMDUwMCwgMHgwNDAwMDAwNCwgMHg4NDAwMDUwMCwKLQkweDRhMDMwODAwLCAweDAwMDAwMDAxLCAweDg0MDAwNTQ0LCAweDg0MDAwNTA2LAotCTB4NDgwMzA4MDIsIDB4ODIwMDBkMDAsIDB4MGZmZmZmZmYsIDB4NDIwMDAwMDAsCi0JMHg5MDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMGJkZSwgMHg1OWE4MDA2OSwKLQkweDgyMDAwNDgwLCAweDAwMDAwMDA3LCAweDQ4MDM1MDY5LCAweDgwMDAwNTgwLAotCTB4NDIwMDA4MDAsIDB4MDAxMGIzMTUsIDB4NDgwMDA4MDAsIDB4NDgwMDA4MDEsCi0JMHgxYzAxZjAwMCwgMHg1OWE4MDA2OSwgMHg4MjAwMDQwMCwgMHgwMDAwMDAwNywKLQkweDQ4MDM1MDY5LCAweDFjMDFmMDAwLCAweDgzNjQwNDgwLCAweDAwMDAwMDA4LAotCTB4MDQwMDEwMWIsIDB4NThjODBhMDMsIDB4ODAwMDA1ODAsIDB4ODIwMDA0MDAsCi0JMHgwMDAwMDAwOCwgMHg4MDA0MDg0MCwgMHgwNDAyMDdmZCwgMHg4MTVjMDQ4MCwKLQkweDA0MDAxMDEzLCAweDQyMDBiMDAwLCAweDAwMDAwMDA3LCAweDAyMDFmODAwLAotCTB4MDAwMjA4OTIsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDQsIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwOSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwNCwgMHg0YTAyNjAwNywKLQkweDAwMDAwMTAxLCAweDA0MDFmODA5LCAweDA0MDFmODgwLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZjMsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjdmZCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwKLQkweDQ5MmU2MDA4LCAweDU4YzgwYTAzLCAweDRhMDI1YTA0LCAweDAwMDAwMDJjLAotCTB4NDk3YTU4MDAsIDB4NDk3YTU4MDEsIDB4NDk3YTVjMDQsIDB4NDk3YTVjMDYsCi0JMHg0OTdhNTgwNSwgMHg0YTAyNWEwOCwgMHgwMDAwMDAwNSwgMHg0YTAyNWEwNywKLQkweDAwMDAwMDAyLCAweDU4YzgwMjAxLCAweDQ4MDI1YzA0LCAweDU4YzgwMjAyLAotCTB4NDgwMjVjMDcsIDB4NThjODAyMDQsIDB4NDgwMjVjMDgsIDB4NGEwMjU4MGQsCi0JMHgwMDAwZmZmZiwgMHg4MDA0MDg0MCwgMHgwNDAwMDAwYywgMHg0MTJjMjAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAwODJhLCAweDRhMDI1YTA0LCAweDAwMDAwMDBhLAotCTB4NDk3YTVjMDQsIDB4NDgxMjU4MDAsIDB4NDkyYzIwMDEsIDB4NDEyYzIwMDAsCi0JMHg4MDA0MDg0MCwgMHgwNDAyMDdmNywgMHgxYzAxZjAwMCwgMHg0ZDdjMDAwMCwKLQkweDQyMDJmODAwLCAweDAwMDAwMDEwLCAweDRkZjAwMDAwLCAweDQyMDNlMDAwLAotCTB4NTAwMDAwMDAsIDB4NTk4NDc4MDMsIDB4ODAzYzc5YzAsIDB4MDQwMDAwMWUsCi0JMHg0YzVjMDAwMCwgMHg1ODNjYjgwOCwgMHg1ODVjMzQwOCwgMHg4MDE4MzFjMCwKLQkweDA0MDAwMDBiLCAweDA0MDFmODRhLCAweDA0MDAwMDE2LCAweDQyMDAxMDAwLAotCTB4MDAxMGIzMTUsIDB4MDQwMWY4N2YsIDB4MDQwMDAwMTIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDgxOSwgMHgwNDAwMDAwZiwgMHg0OTJjYjgwNSwgMHg1ODVjMDAwNSwKLQkweDgwMDAwNTQwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDA0MDFmODMwLAotCTB4NTg1YzU0MDgsIDB4MDQwMWY4MGIsIDB4NWMwMGI4MDAsIDB4NWMwM2UwMDAsCi0JMHg4MTdlZjg0MCwgMHgwNDAyMDdlMSwgMHg1YzAyZjgwMCwgMHgxYzAxZjAwMCwKLQkweDVjMDBiODAwLCAweDVjMDNlMDAwLCAweDVjMDJmODAwLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NDA1YzYwMDAsIDB4ODAyODUxYzAsIDB4MDQwMDAwMTgsCi0JMHg1ODVjMDIwNCwgMHg4MjAwMGQwMCwgMHgwMDAwMDAwZiwgMHg4MjA0MGMwMCwKLQkweDAwMTAxMTBkLCAweDUwMDQ0MDAwLCAweDRjNjAwMDAwLCAweDRjNjQwMDAwLAotCTB4NGQwNDAwMDAsIDB4NDAyMGMwMDAsIDB4NDAzMjA4MDAsIDB4NTk4NGM4MDQsCi0JMHg0YzI4MDAwMCwgMHgwNDAxZjkzNCwgMHg1YzAwNTAwMCwgMHg0MDYwNDAwMCwKLQkweDQxMDQ2MDAwLCAweDAyMDFmODAwLCAweDAwMTAxMGViLCAweDA0MDIwN2Y2LAotCTB4NWMwMjA4MDAsIDB4NWMwMGM4MDAsIDB4NWMwMGMwMDAsIDB4NThjODAyMDQsCi0JMHg0ODAwYmMwOCwgMHgwMjAxZjgwMCwgMHgwMDAyMDA4NywgMHg0YTAyNjAwNywKLQkweDAwMDAwMTAxLCAweDQ5N2E2MDA5LCAweDA0MDFmMDU1LCAweDQ4MDNjODU2LAotCTB4NTk4NDAwMDMsIDB4ODAwMjY1NDAsIDB4MDQwMDAwMDMsIDB4NTkzMDAwMDAsCi0JMHg0ODAzMDgwMywgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg1OTg0MDAwMywKLQkweDQ4MDI2MDAwLCAweDQ5MzMwODAzLCAweDFjMDFmMDAwLCAweDU4Y2MwODA1LAotCTB4NDAxODAwMDAsIDB4ODAwNDA0ODAsIDB4MDQwMDEwMGQsIDB4ODJjYzA1ODAsCi0JMHgwMDEwYjMwYSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OGM4MDIwNSwKLQkweDgwMDQwNDgwLCAweDA0MDAxMDFkLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4ODAwMDM1ODAsIDB4MDQwMWY3ZmUsIDB4ODJjYzA1ODAsCi0JMHgwMDEwYjMwYSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OGM4MDQwMCwKLQkweDhjMDAwNTA0LCAweDA0MDAwN2Y4LCAweDU4YzgwNDBiLCAweDhjMDAwNTFlLAotCTB4MDQwMDA3ZjUsIDB4OGMwMDA1MDAsIDB4MDQwMjA3ZjMsIDB4ODQwMDA1NDAsCi0JMHg0ODAxOTQwYiwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzNywgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDQyMDAxMDAwLCAweDAwMDA4MDI2LCAweDAyMDFmODAwLAotCTB4MDAxMDM4NTcsIDB4MDQwMWY3ZTgsIDB4NThjODA0MGIsIDB4OGMwMDA1MWUsCi0JMHgwNDAwMDdlMiwgMHg4YzAwMDUwMiwgMHgwNDAyMDdlMCwgMHg4NDAwMDU0MiwKLQkweDQ4MDE5NDBiLCAweDQyMDAwMDAwLCAweDAwMTBiNjM2LCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4NDIwMDEwMDAsIDB4MDAwMDgwMjUsIDB4NDIwMDE4MDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMzg1NywgMHgwNDAxZjdkMywKLQkweDQ4MDNjODU2LCAweDU4MDgwMDAwLCAweDQyMDAxODAwLCAweDAwMDAwMDA3LAotCTB4NTgwODA4MDEsIDB4ODAwNDA0ODAsIDB4MDQwMjAwMDQsIDB4NDAwYzAwMDAsCi0JMHg4MDAwMDU0MCwgMHgwNDAxZjAwNSwgMHgwNDAwMTAwMywgMHg4MDBjMDQ4MCwKLQkweDA0MDFmMDAyLCAweDgwMDAwMDgwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NTkzMDAwMDgsIDB4ODAwMDBkNDAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsCi0JMHg1ODA0MDAwNSwgMHg4MDAwMDU0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MzAwMDA3LCAweDgyMDAwNTAwLCAweDAwMDAwMTAxLCAweDgyMDAwNTgwLAotCTB4MDAwMDAxMDEsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NDIwMDEwMDAsCi0JMHgwMDEwYjMxNSwgMHg1ODA4MDgwMSwgMHg4MjA0MDQwMCwgMHgwMDEwYjMxNywKLQkweDQ5N2E2NDE0LCAweDRhMDI2MDE1LCAweDAwMDBmZmZmLCAweDQ1MzAwMDAwLAotCTB4ODAwNDA4MDAsIDB4ODIwNDA0ODAsIDB4MDAwMDAwMDgsIDB4MDQwMDEwMDIsCi0JMHg4MDAwMGQ4MCwgMHg0ODA0MTAwMSwgMHg4MjA0MDQwMCwgMHgwMDEwYjMxNywKLQkweDQ1NzgwMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDU5MzAwODA4LAotCTB4ODAwNDA5YzAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NGQyYzAwMDAsCi0JMHg1ODA2NTgwNSwgMHg4MTJlNTljMCwgMHgwMjAyMDgwMCwgMHgwMDEwMDgzYSwKLQkweDQ5NzgwODA1LCAweDQwMDY1ODAwLCAweDAyMDFmODAwLCAweDAwMTAwODQzLAotCTB4NWMwMjU4MDAsIDB4NGQzMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg1OTMwMDQwNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA5LCAweDA0MDIwMDA2LCAweDU5MzAwMDA3LCAweDhjMDAwNTEwLAotCTB4MDQwMDAwMDMsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg1OTg0MDgwMiwgMHg4YzA0MGQwNCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDU5ODQwODAyLCAweDg0MDQwZDA0LAotCTB4ODQwNDBkNDAsIDB4NGEwMzA4MDAsIDB4MDAwMDAwMDAsIDB4NDgwNzA4MDIsCi0JMHg4MjA0MGQwMCwgMHgwZmZmZmZmZiwgMHg0MjAwMDAwMCwgMHg5MDAwMDAwMCwKLQkweDAyMDFmMDAwLCAweDAwMTAwYmRlLCAweDQ4MDdjODU3LCAweDQ4MDU5ODBhLAotCTB4NDk3OTk4MDEsIDB4NDk3OTk4MDMsIDB4NDk3OTk4MDYsIDB4NDk3OTk4MDcsCi0JMHg0OTc5OTgwOCwgMHg0OTc5OTgwNSwgMHg0OTc5OTgwOSwgMHgwNDAxZjhjOCwKLQkweDA0MDAwMDBhLCAweDA0MDFmOGVhLCAweDA0MDAwMDA4LCAweDQ4MzU5ODAwLAotCTB4NDgzNTk4MDIsIDB4NDgzNTk4MDYsIDB4NGEwMTk4MDQsIDB4MDAwMDAwMDEsCi0JMHg0YTAxOTgwNywgMHgwMDAwMDAwNSwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NywKLQkweDU4Y2MxMDA3LCAweDQwMDQwMDAwLCAweDgwMDgwNDgwLCAweDA0MDIxMDIwLAotCTB4NGMwNDAwMDAsIDB4NGMwODAwMDAsIDB4MDQwMWY4ZDksIDB4NWMwMDEwMDAsCi0JMHg1YzAwMDgwMCwgMHgwNDAwMDAxYywgMHg1OGNjMDAwNiwgMHg4MDAwNjU0MCwKLQkweDA0MDIwMDBiLCAweDQ4MzU5ODAwLCAweDQ4MzU5ODAyLCAweDQ4MzU5ODA2LAotCTB4NDk3OTk4MDEsIDB4NDk3OTk4MDMsIDB4NDk3ODY4MDEsIDB4NDk3ODY4MDAsCi0JMHg0OTc5OTgwNCwgMHg0OTc5OTgwNywgMHgwNDAxZjAwNSwgMHg0ODMwNjgwMSwKLQkweDQ4MzQ2MDAwLCAweDQ4MzU5ODA2LCAweDQ5Nzg2ODAwLCAweDU4Y2MwMDA0LAotCTB4NThjYzEwMDcsIDB4ODAwMDAwMDAsIDB4ODIwODE0MDAsIDB4MDAwMDAwMDUsCi0JMHg0ODAxOTgwNCwgMHg0ODA5OTgwNywgMHgwNDAxZjdkZiwgMHg4MDAwMDU4MCwKLQkweDFjMDFmMDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLAotCTB4NDgwYmM4NTcsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsCi0JMHg0MDA4MzAwMCwgMHg1OGNjMDgwMSwgMHg4MjA0MDQ4MCwgMHgwMDAwMDAwNSwKLQkweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDgyMDQwNDAwLCAweDAwMTA2MTUwLAotCTB4NTAwMDAwMDAsIDB4NThjY2E4MDAsIDB4ODA1NGFjMDAsIDB4NDIwMDE4MDAsCi0JMHgwMDAwMDAwNSwgMHg0MDA0MDAwMCwgMHg4MDBjMDQ4MCwgMHg4MDA4MjQ4MCwKLQkweDA0MDIxMDAyLCAweDQwMDgwMDAwLCAweDgwMDBiMGMyLCAweDgwNThiNDAwLAotCTB4NTQ1MGE4MDAsIDB4ODA1MGEwMDAsIDB4ODA1NGE4MDAsIDB4ODA1OGIwNDAsCi0JMHgwNDAyMDdmYywgMHg0MDAwMTAwMCwgMHg1OGNjMjgwNSwgMHg1OGNjMDgwNywKLQkweDU4Y2MyMDAxLCAweDgwMTQyYzAwLCAweDgwMDQwYzgwLCAweDgwMTAyNDAwLAotCTB4NDgxNTk4MDUsIDB4NDgwNTk4MDcsIDB4NDgxMTk4MDEsIDB4ODIxMDA1ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAwMDAwYywgMHg0ODExOTgwMSwgMHg0MDA4MDAwMCwKLQkweDgwMTgxNDgwLCAweDQwMDgzMDAwLCAweDA0MDAwMDAzLCAweDA0MDIxN2Q2LAotCTB4ODAwMDA1ODAsIDB4NWMwMGIwMDAsIDB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsCi0JMHgxYzAxZjAwMCwgMHg1OGNjMDgwMCwgMHg4MDA0MDljMCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDU4MDQwODAwLCAweDQ4MDU5ODAwLCAweDQxNzgyMDAwLAotCTB4MDQwMWY3ZWUsIDB4MDQwMWY4MTIsIDB4NTA2MDAwMDAsIDB4ODEwNDFjMDAsCi0JMHg1ODVjMDIwNCwgMHg0ODAzYzg1NywgMHg4MjAwMDU4MCwgMHgwMDAwMDAyYywKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU4MDQwMjAyLCAweDgwMDAwMGUwLAotCTB4ODA2NDA1NDAsIDB4NDgwMDE4MDIsIDB4NTgwNDAwMDAsIDB4NDgwMDE4MDAsCi0JMHg1ODA0MDAwMSwgMHg0ODAwMTgwMSwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwKLQkweDU4Y2MwMDA1LCAweDgwMDAwMDQwLCAweDAyMDAxODAwLCAweDAwMTAwNjE1LAotCTB4NDgwMTk4MDUsIDB4NThjYzEwMDMsIDB4ODIwODA0ODAsIDB4MDAwMDAwMDUsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4MjA4MDQwMCwgMHgwMDEwNjE1MCwKLQkweDUwMDAwMDAwLCAweDU4Y2MwODAyLCAweDgwMDQwYzAwLCAweDgwMDgxMDAwLAotCTB4ODIwODA0ODAsIDB4MDAwMDAwMDUsIDB4MDQwMjAwMGYsIDB4NThjYzIwMDIsCi0JMHg1ODEwMDAwMCwgMHg4MDAwNmQ0MCwgMHgwNDAwMDAwOSwgMHg0YzM0MDAwMCwKLQkweDA0MDFmODU4LCAweDVjMDA2ODAwLCAweDQ5Nzg2ODAxLCAweDQ4MzU5ODAyLAotCTB4NThjYzAwMDQsIDB4ODAwMDAwNDAsIDB4NDgwMTk4MDQsIDB4NDk3OTk4MDMsCi0JMHgwNDAxZjAwMiwgMHg0ODA5OTgwMywgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwKLQkweDQxNzgxODAwLCAweDU4YzgwMjAxLCAweDgwMDAwNTQwLCAweDA0MDAwMDAyLAotCTB4ODAwYzE4MDAsIDB4NThjODBjMDEsIDB4ODAwNDBjODAsIDB4MDQwMDEwMGEsCi0JMHgwNDAwMDAwOSwgMHg4MDBjMTgwMCwgMHg1OGM4MDIwMiwgMHg4MDA0MTQ4MCwKLQkweDA0MDAxMDA1LCAweDA0MDAwMDA0LCAweDgwMGMxODAwLCAweDQwMDgwODAwLAotCTB4MDQwMWY3ZmIsIDB4NDgwZDkyMDQsIDB4NDAwYzAwMDAsIDB4NDIwMDIwMDAsCi0JMHgwMDAwMDAwMSwgMHg4MDAwMDA0MCwgMHgwNDAwMDAwNywgMHgwNDAwMTAwNiwKLQkweDgwMTAyMDAwLCAweDgyMDAwNDgwLCAweDAwMDAwMDA1LCAweDA0MDAwMDAyLAotCTB4MDQwMjE3ZmMsIDB4NDgxMTkyMDMsIDB4MWMwMWYwMDAsIDB4NDgwN2M4NTYsCi0JMHg0ZDJjMDAwMCwgMHg1OGNjMDAwYSwgMHg4MDAwMDU0MCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDgyMDAyNDAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLAotCTB4MDAxMDA4MTksIDB4MDQwMDAwMTIsIDB4NDkyZDk4MDksIDB4NDk3YTU4MDAsCi0JMHg0OTdhNTgwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMDgxOSwgMHgwNDAwMDAwYywKLQkweDU4Y2MwMDA5LCAweDQ4MDI1ODAwLCAweDQ5N2E1ODAxLCAweDQ5MmQ5ODA5LAotCTB4ODIxMDI0ODAsIDB4MDAwMDAwMDUsIDB4MDQwMjE3ZjcsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg1OGNjMDAwOSwKLQkweDgwMDI1ZDQwLCAweDA0MDAwN2ZjLCAweDU5MmMyMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA4M2EsIDB4NDAxMDAwMDAsIDB4MDQwMWY3ZmEsIDB4NThjYzAwMDksCi0JMHg0OGNmYzg1NywgMHg4MDAwNmQ0MCwgMHgwNDAwMDAwNSwgMHg1MDM0MDAwMCwKLQkweDQ4MDE5ODA5LCAweDQ5Nzg2ODAwLCAweDQ5Nzg2ODAxLCAweDFjMDFmMDAwLAotCTB4NDgxM2M4NTcsIDB4NThjYzAwMDksIDB4NDgwMDIwMDAsIDB4NDgxMTk4MDksCi0JMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwgMHg0ZDJjMDAwMCwgMHg1OGNjMDAwOSwKLQkweDgwMDI1ZDQwLCAweDA0MDAwMDA3LCAweDU5MmMwMDAwLCAweDRjMDAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4M2EsIDB4NWMwMDAwMDAsIDB4MDQwMWY3ZjksCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NiwgMHg0ZDJjMDAwMCwKLQkweDU4Y2MwMDAyLCAweDgwMDI1ZDQwLCAweDA0MDAwMDA3LCAweDU5MmMwMDAwLAotCTB4NGMwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4M2EsIDB4NWMwMDAwMDAsCi0JMHgwNDAxZjdmOSwgMHg0OTc5OTgwMCwgMHg0OTc5OTgwMiwgMHg0OTc5OTgwMSwKLQkweDQ5Nzk5ODAzLCAweDQ5Nzk5ODA2LCAweDQ5Nzk5ODA3LCAweDQ5Nzk5ODA4LAotCTB4NDk3OTk4MDksIDB4NDk3OTk4MGEsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDAwMDAwMywgMHgwMDAwMDAwNiwgMHgwMDAwMDAwOSwgMHgwMDAwMDAwYywKLQkweDAwMDAwMDBmLCAweDAwMDAwMDEyLCAweDQ4MDNjODU2LCAweDA0MDFmODU3LAotCTB4NGEwMGMyMDQsIDB4MDAwMDAwM2MsIDB4NTkzMDEwMDksIDB4ODIwODA1ODAsCi0JMHgwMDEwYjMyMCwgMHgwNDAwMDAxMywgMHg1ODA4MDgwMiwgMHg4MjA0MGQwMCwKLQkweDAwZmZmZmZmLCAweDU4MDgwNDAzLCAweDQ4MDRjMDA1LCAweDQ4MDBjNDA2LAotCTB4NGEwMGMyMDcsIDB4MDAwMDAwMDMsIDB4NTkzMDA4MTEsIDB4NTg1YzA0MDQsCi0JMHg0OTc4YzIwNiwgMHg0ODA0YzQwNywgMHg4MDAwMDU0MCwgMHgwNDAwMDAwZCwKLQkweDU4NjAwMjA2LCAweDg0MDAwNTQwLCAweDQ4MDBjMjA2LCAweDA0MDFmMDA5LAotCTB4NTg1YzA4MGEsIDB4ODIwNDBkMDAsIDB4MDBmZmZmZmYsIDB4NDgwNGMwMDUsCi0JMHg0YTAwYzQwNiwgMHgwMDAwMDdmZiwgMHg0OTc4YzIwNywgMHgwNDAxZjdlZiwKLQkweDgyNjAzYzAwLCAweDAwMDAwMDA4LCAweDU4NjA1NDA0LCAweDQwMjgyMDAwLAotCTB4NDA1YzYwMDAsIDB4NTg1YzBhMDQsIDB4ODIwNDBkMDAsIDB4MDAwMDAwMGYsCi0JMHg4MjA0MGMwMCwgMHgwMDEwMTEwZCwgMHg1MDA0NDAwMCwgMHg4MDAwNGQ4MCwKLQkweDUwMjAwMDAwLCAweDgwMzA3NDAwLCAweDU4MzgwNDAyLCAweDhjMjQ0ZDAwLAotCTB4MDQwMjAwMDMsIDB4NDgwMDNhMDAsIDB4MDQwMWYwMDMsIDB4NDgwMDNjMDAsCi0JMHg4MDFjMzgwMCwgMHg4MDI0NDgwMCwgMHg4MDEwMjA0MCwgMHgwNDAwMDAwNiwKLQkweDAyMDFmODAwLCAweDAwMTAxMGViLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4MDQwMWY3ZjAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGQzNDAwMDAsCi0JMHg1OTMwMDAwOSwgMHg4MDAyNmQ0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MzQwNDAxLCAweDgwMDAwNTQwLCAweDA0MDAwMDBlLCAweDU5ODQwMDAwLAotCTB4ODAwMDA1NDAsIDB4MDQwMDAwMGIsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAyMDAwOCwgMHg1OTM0MWMwMywgMHg0MjAwMjAwMCwgMHgwMDAwMDAwNCwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTAzOGM3LAotCTB4NWMwMjY4MDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4ODAwMDE1ODAsCi0JMHg1OGM4MGMwMSwgMHg1OTMwMDAxMSwgMHg4MDA0MGM4MCwgMHg0ODA2NjAxMSwKLQkweDU4YzgwMjAxLCAweDgwMDAwNTQwLCAweDA0MDAwMDA1LCAweDgwMDgxMDAwLAotCTB4ODAwNDBjODAsIDB4MDQwMDEwMDcsIDB4MDQwMDAwMDYsIDB4NThjODAyMDIsCi0JMHg4MDA4MTAwMCwgMHg4MDA0MGM4MCwgMHgwNDAwMTAwMiwgMHgwNDAyMDdmZCwKLQkweDQ4MDhiYzA4LCAweDQ4MDhjNDA0LCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGEwMzcwZTUsIDB4MDAwMjAwMDAsIDB4NTliODAwZTUsIDB4OGMwMDA1MjQsCi0JMHgwNDAyMDdmYywgMHg0YTAzNzBlNSwgMHgwMDAzMDAwMCwgMHg0MDAwMDAwMCwKLQkweDQwMDAwMDAwLCAweDU5YjgwMGU1LCAweDhjMDAwNTI0LCAweDA0MDIwN2Y1LAotCTB4NTkzNDAwMGUsIDB4ODAwMDZkNDAsIDB4MDQwMDAwMTAsIDB4ODEzMDA1ODAsCi0JMHgwNDAyMDAwNCwgMHg1ODM0MDAwMCwgMHg0ODAyNjgwZSwgMHgwNDAxZjAwYSwKLQkweDQwMzQ3ODAwLCAweDU4MzQwMDAwLCAweDgwMDA2ZDQwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4ODEzMDA1ODAsIDB4MDQwMjA3ZmEsIDB4NTgzNDAwMDAsCi0JMHg0ODAwNzgwMCwgMHg0OTdhNjAwMCwgMHg0YTAzNzBlNSwgMHgwMDAyMDAwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRkMzAwMDAwLCAweDRkMmMwMDAwLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAzZmYsIDB4NGEwMzcwZTUsIDB4MDAwMjAwMDAsCi0JMHg1OWI4MDBlNSwgMHg4YzAwMDUyNCwgMHgwNDAwMDAwNSwgMHg4MDA0MDg0MCwKLQkweDA0MDIwN2ZhLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDRhMDM3MGU1LAotCTB4MDAwMzAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NTliODAwZTUsCi0JMHg4YzAwMDUyNCwgMHgwNDAyMDdmMSwgMHg1OTM0MDAwZSwgMHg4MDAyNjU0MCwKLQkweDA0MDAwMDBlLCAweDQ5MzNjODU3LCAweDU5MzAwMDAwLCAweDQ4MDI2ODBlLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDQsIDB4NDk3YTYyMDYsIDB4NDk3YTYwMDksCi0JMHg0YTAyNjAwNywgMHgwMDAwMDEwMSwgMHg1OTMyNTgwOCwgMHg0OTdhNWMwOCwKLQkweDA0MDFmZDgyLCAweDA0MDFmN2YxLCAweDRhMDM3MGU1LCAweDAwMDIwMDAwLAotCTB4NWMwMjU4MDAsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg0YzAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNTliOSwgMHgwNDAyMDAxMSwKLQkweDAyMDFmODAwLCAweDAwMTA0M2ZjLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NWMwMDAwMDAsIDB4NDgwMjY4MDIsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsCi0JMHgwNDAwMDAwOSwgMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMDIwOGQ4LAotCTB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NTkzMDAyMDMsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzYzg1NywKLQkweDBjMDFmMDAxLCAweDAwMTA2MjNiLCAweDAwMTA2MjNiLCAweDAwMTA2MjNiLAotCTB4MDAxMDYyM2QsIDB4MDAxMDYyOWQsIDB4MDAxMDYyM2IsIDB4MDAxMDYyM2IsCi0JMHgwMDEwNjJlZiwgMHgwMDEwNjJmMCwgMHgwMDEwNjIzYiwgMHgwMDEwNjIzYiwKLQkweDAwMTA2MjNiLCAweDAwMTA2MjNiLCAweDAwMTA2MjNiLCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NDkzYmM4NTcsIDB4ODMzODA0ODAsIDB4MDAwMDAwNTAsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4MzM4MDQ4MCwgMHgwMDAwMDA0OSwKLQkweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmMDAxLCAweDAwMTA2MjUwLAotCTB4MDAxMDYyNzIsIDB4MDAxMDYyNGUsIDB4MDAxMDYyNGUsIDB4MDAxMDYyNGUsCi0JMHgwMDEwNjI0ZSwgMHgwMDEwNjI4MSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwKLQkweDRkMmMwMDAwLCAweDU5MzI1ODA4LCAweDU5MmMwMjA2LCAweDQ4MDI1YzA2LAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMDAsIDB4NGM1YzAwMDAsIDB4NTkyY2JjMGEsCi0JMHg1OTJjMDAwMCwgMHg0ODAyNjAwOCwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4NSwKLQkweDU5MzAwMDA4LCAweDgwMDAwNTQwLCAweDA0MDAwMDA4LCAweDRhMDI2MjAzLAotCTB4MDAwMDAwMDcsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDMsIDB4NWMwMGI4MDAsCi0JMHg1YzAyNTgwMCwgMHgwNDAxZjA4YSwgMHg4YzVjYmQwOCwgMHgwNDAyMDAwNiwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDA3LCAweDQ5N2E2MjA2LCAweDQ5N2E2MDA4LAotCTB4MDQwMWYwMDMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NWMwMGI4MDAsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjhjMSwKLQkweDRkMmMwMDAwLCAweDU5MzI1ODA4LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LAotCTB4MDQwMDAwMDYsIDB4NGQ0MDAwMDAsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDEsCi0JMHgwNDAxZjkwZSwgMHg1YzAyODAwMCwgMHg1YzAyNTgwMCwgMHgwMjAxZjAwMCwKLQkweDAwMDIwOGI0LCAweDAyMDFmODAwLCAweDAwMTA2OGMxLCAweDRkM2MwMDAwLAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NWMwMjc4MDAsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAxNCwgMHgwMjAxZjgwMCwgMHgwMDEwYTc2NiwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjYzLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NGQyYzAwMDAsIDB4NTkzMjU4MDgsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsCi0JMHgwNDAwMDAwNiwgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwKLQkweDA0MDFmOGYyLCAweDVjMDI4MDAwLCAweDVjMDI1ODAwLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NDkzYmM4NTcsIDB4NDk3YTYyMDYsIDB4ODMzODA0ODAsCi0JMHgwMDAwMDA1NCwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4MzM4MDQ4MCwKLQkweDAwMDAwMDQ3LCAweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmMDAxLAotCTB4MDAxMDYyZWUsIDB4MDAxMDYyYjcsIDB4MDAxMDYyYjUsIDB4MDAxMDYyYjUsCi0JMHgwMDEwNjJiNSwgMHgwMDEwNjJiNSwgMHgwMDEwNjJiNSwgMHgwMDEwNjJiNSwKLQkweDAwMTA2MmI1LCAweDAwMTA2MmI1LCAweDAwMTA2MmI1LCAweDAwMTA2MmI1LAotCTB4MDAxMDYyYmIsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMDAwMTEsCi0JMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHgwNDAyMDAzNCwgMHg1OTg0MDgwMiwKLQkweDhjMDQwZDA0LCAweDA0MDAwMDI1LCAweDU5MzAwMDA5LCAweDgwMDI2ZDQwLAotCTB4MDQwMDAwMWYsIDB4NGM1YzAwMDAsIDB4NGM2MDAwMDAsIDB4NDk3YTYyMDYsCi0JMHg1OTMwYjgwOCwgMHg1ODVjMDAwNSwgMHg4MDAwYzU0MCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDA0MDFmZThkLCAweDQwNjI1ODAwLCAweDAyMDFmODAwLAotCTB4MDAwMjAzODUsIDB4NDk3OGI4MDUsIDB4MDQwMWZlZjUsIDB4NDk3YTYwMDksCi0JMHg1ODVjMzQwOCwgMHgwNDAxZmNiZSwgMHgwNDAwMDAwZSwgMHg0MjAwMTAwMCwKLQkweDAwMTBiMzE1LCAweDA0MDFmY2YzLCAweDA0MDAwMDBhLCAweDAyMDFmODAwLAotCTB4MDAxMDA4MmEsIDB4MDQwMDAwMDcsIDB4NDkyY2I4MDUsIDB4NTg1YzU0MDgsCi0JMHgwNDAxZmM4NCwgMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwKLQkweDA0MDFmY2FhLCAweDA0MDFmN2ZjLCAweDhjMDQwZDA2LCAweDA0MDIwN2ZjLAotCTB4NTkzMDAwMDksIDB4ODAwMjZkNDAsIDB4MDQwMDAwMDYsIDB4NTkzNDAwMGUsCi0JMHg4MDAwMDU0MCwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg0OTdhNjAwOSwKLQkweDA0MDFmZDBlLCAweDA0MDFmN2YyLCAweDA0MDFmMDg1LCAweDQ4MDNjODU2LAotCTB4NDgwM2M4NTYsIDB4ODMzODA1ODAsIDB4MDAwMDAwNDMsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMywgMHg0OTNhNjQwMywKLQkweDU5MzI1ODA4LCAweDU5MmMwMDBmLCAweDQ4MDI2MDExLCAweDQ5N2E2MDEzLAotCTB4NTkyYzA0MDYsIDB4ODAwMDAwYzIsIDB4ODAwMDEwYzQsIDB4ODAwODE0MDAsCi0JMHg0ODBhNjIwNiwgMHgwMjAxZjgwMCwgMHgwMDEwMGY5YywgMHg0MjAwMDgwMCwKLQkweDgwMDAwMDYwLCAweDA0MDFmMTYxLCAweDQyMDAwMDAwLCAweDAwMTBiNjc0LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NTkzMDAyMDMsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzYzg1NywKLQkweDgyMDAwZDgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA2LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDQsIDB4MDQwMDAwNWIsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywgMHg1OTMwMDAwNCwgMHg4YzAwMDUzZSwKLQkweDA0MDIwMDA3LCAweDAyMDFmODAwLCAweDAwMTA2OGEzLCAweDAyMDIwODAwLAotCTB4MDAxMDA2MTUsIDB4MDIwMWYwMDAsIDB4MDAxMDY5ODIsIDB4MDQwMWY5ZDMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjk4MiwgMHg1OTMyNTgwOCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDA2LCAweDA0MDFmODYxLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LAotCTB4NDgwM2M4NTYsIDB4NTkzMDAyMDMsIDB4ODIwMDBjODAsIDB4MDAwMDAwMGUsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMiwKLQkweDA0MDAwMDA5LCAweDgyMDAwZDgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDE5LAotCTB4ODIwMDBkODAsIDB4MDAwMDAwMDQsIDB4MDQwMDAwMzYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg0OTMzYzg1NywgMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwKLQkweDgxMmU1OWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDU5MmMxYTA4LAotCTB4OGMwYzFkMGUsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NGQ0MDAwMDAsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjg0MCwgMHgwMjAxZjgwMCwKLQkweDAwMTA3Njk4LCAweDVjMDI4MDAwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsCi0JMHg1OTMwMDAwNCwgMHg4YzAwMDUzZSwgMHgwNDAyMDAwNiwgMHgwMjAxZjgwMCwKLQkweDAwMTA2Y2I0LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDA0MDFmMDEwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDhhOGEsIDB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmJiMiwgMHgwNDAyMDAwYSwgMHgwNDAxZjk5NCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDVjMDNlMDAwLCAweDAyMDAwODAwLCAweDAwMTA2OTgyLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NWMwM2UwMDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTAwZWU0LCAweDQ5MzNjODU3LAotCTB4NGM1YzAwMDAsIDB4NGQzNDAwMDAsIDB4NDk3YTYyMDYsIDB4NTkzMGI4MDgsCi0JMHg1OTMwMDAwOSwgMHg4MDAyNmQ0MCwgMHgwNDAyMGU0OSwgMHg0MjAwMTAwMCwKLQkweDAwMTBiMzE1LCAweDA0MDFmYzRiLCAweDA0MDAwMDA5LCAweDU4YzgwMjA0LAotCTB4NDgwMGJjMDgsIDB4NDE3ODUwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDVmNjAsCi0JMHg1YzAyNjgwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg0OTc4YmMwOCwKLQkweDA0MDFmYzAyLCAweDA0MDFmN2ZiLCAweDQ4MDNjODU2LCAweDAyMDFmODAwLAotCTB4MDAxMDhkZjQsIDB4MDQwMDAwMGYsIDB4NTkyYzAwMDAsIDB4ODAwMDBkNDAsCi0JMHgwNDAwMDAwOSwgMHg0OTdhNTgwMCwgMHg0OTQyNWEwNiwgMHg0YzA0MDAwMCwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDVjMDAwODAwLCAweDQwMDY1ODAwLAotCTB4MDQwMWY3ZjYsIDB4NDk0MjVhMDYsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg1OTMwMGMwNiwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDBlLCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLCAweDAwMDAwMDA5LAotCTB4MDQwMjAwMDQsIDB4MDQwMWZmZTUsIDB4NDk3YTYwMDgsIDB4ODAwMDA1ODAsCi0JMHgxYzAxZjAwMCwgMHg1OTJlNjAwOSwgMHg4MzMwMDQ4MCwgMHgwMDEwY2ZjMCwKLQkweDA0MDAxMDE2LCAweDQxNTgwMDAwLCAweDgxMzAwNDgwLCAweDA0MDIxMDEzLAotCTB4NDAwNDAwMDAsIDB4NTkzMDBjMDYsIDB4ODAwNDA1ODAsIDB4MDQwMjAwMTIsCi0JMHg1OTMwMGEwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNywgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDU5MzAwMDA4LCAweDgwMDAwNTQwLCAweDAyMDIwODAwLAotCTB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMCwgMHgwNDAxZjAwOSwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwOCwKLQkweDA0MDFmMDA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDA3LCAweDA0MDIwN2ZiLAotCTB4NDIwMDAwMDAsIDB4MDAwMDAwMDUsIDB4NTkyYzBhMDYsIDB4NDgwNjVjMDYsCi0JMHg0ODAyNWEwNiwgMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0YzBjMDAwMCwKLQkweDRjMTAwMDAwLCAweDRjMTQwMDAwLCAweDRjMTgwMDAwLCAweDgwMDAxZDgwLAotCTB4ODAwMDI1ODAsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMjAsIDB4ODIwNDA1MDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAwMDAwMywgMHg0MDA4MDAwMCwgMHg4MDBjMWMwMCwKLQkweDQwMGMyODAwLCAweDgwMGMxOTAyLCAweDgwMTAyMTAyLCAweDgyMTQwNTAwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDAwMDMsIDB4ODIxMDI1NDAsIDB4ODAwMDAwMDAsCi0JMHg4MDA0MDkwMiwgMHg4MDE4MzA0MCwgMHgwNDAyMDdmMSwgMHg0MDEwMDgwMCwKLQkweDQwMGMwMDAwLCAweDVjMDAzMDAwLCAweDVjMDAyODAwLCAweDVjMDAyMDAwLAotCTB4NWMwMDE4MDAsIDB4MWMwMWYwMDAsIDB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAyMCwgMHg4MDAwMDU0MCwgMHgwNDAwMDAxOCwgMHg4MDA0MWM4MCwKLQkweDA0MDIxMDE2LCAweDgwMDgxMGMyLCAweDgwMDQwOTgyLCAweDA0MDAxMDA2LAotCTB4ODAwNDFjODAsIDB4MDQwMjEwMDUsIDB4ODA1OGIwNDAsIDB4MDQwMjA3ZmEsCi0JMHgwNDAxZjAwNiwgMHg4MDA0MWM4MCwgMHg0MDBjMDgwMCwgMHg4MDA4MTAwMCwKLQkweDgwNThiMDQwLCAweDA0MDIwN2Y0LCAweDRjMDAwMDAwLCAweDQxZjAwMDAwLAotCTB4ODIwMDA1MDAsIDB4ZjdmZmZmZmYsIDB4NDAwM2UwMDAsIDB4NWMwMDAwMDAsCi0JMHg1YzAwYjAwMCwgMHgxYzAxZjAwMCwgMHg0YzAwMDAwMCwgMHg0MWYwMDAwMCwKLQkweDgyMDAwNTQwLCAweDA4MDAwMDAwLCAweDA0MDFmN2Y4LCAweDQyMDA3MDAwLAotCTB4MDAxMGIzM2YsIDB4NGEwMDcwMDAsIDB4MDAwMDAwMDUsIDB4NGEwMDc0MDEsCi0JMHgwMDAwMDAwMCwgMHg0YTAwNzIwMiwgMHgwMDAwMDg0MCwgMHg0YTAzNzhlOCwKLQkweDAwMDAwMDAwLCAweDRhMDNjODIxLCAweDAwMDAwMDEwLCAweDRhMDNjODIzLAotCTB4MDAwMDAwMDQsIDB4MDQwMWY4MWQsIDB4NGEwMzc4ZTksIDB4MDAwMDNhMGQsCi0JMHg0YTAzNzhlOCwgMHgwMDAwMDAwMSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNSwKLQkweDQyMDNhMDAwLCAweDAwMDA3NjAwLCAweDRhMDNhMDA1LCAweGQwMDAwMDAxLAotCTB4NTlkMDAwMDYsIDB4NGEwM2EwMDUsIDB4OTAwMDAwMDEsIDB4ODNkM2E0MDAsCi0JMHgwMDAwMDAyMCwgMHg4MDA0MDg0MCwgMHgwNDAyMDdmYSwgMHg1OWUwMDAwMywKLQkweDgyMDAwNTAwLCAweGZmZmZmZmUwLCAweDgyMDAwNTQwLCAweDAwMDA4MDAwLAotCTB4NDgwM2MwMDMsIDB4NTljNDAwMDYsIDB4ODIwMDA1MDAsIDB4ZmZmY2ZmZmYsCi0JMHg0ODAzODgwNiwgMHgxYzAxZjAwMCwgMHg0ZDkwMDAwMCwgMHg0ZDE4MDAwMCwKLQkweDRhMDM3OGU3LCAweGFhYWFhYWFhLCAweDRhMDM3OGU2LCAweGFhYWFhYWFhLAotCTB4NGEwMzc4ZTUsIDB4YWFhYWFhYWEsIDB4NGEwMzc4ZTQsIDB4YWFhYWFhYWEsCi0JMHg0YTAzNzgxYSwgMHgwMDEwYjVkMiwgMHg0YTAzNzgxYiwgMHgwMDEwMTEwZCwKLQkweDRhMDM3ODFjLCAweDAwMTAxMTFkLCAweDRhMDMxODAwLCAweDAwMDAwMDAwLAotCTB4NGEwMzE4MDEsIDB4MDAxMGIzNDIsIDB4NGEwMzE4MDIsIDB4MDAxMGIzNDksCi0JMHg0MjAwMDgwMCwgMHgwMDEwYjVkNSwgMHg0MTdhMzAwMCwgMHg4MTFiMjBjOCwKLQkweDgzOTMyNDAwLCAweDAwMDBiZjMyLCAweDQ4MDcyMDAwLCAweDRhMDMyMDAxLAotCTB4MDAwMDAwMDAsIDB4ODMxODA0MDAsIDB4MDAxMDZlNDEsIDB4NTAwMDAwMDAsCi0JMHg0ODAzMjAwMiwgMHg4MjA0MGMwMCwgMHgwMDAwMDAwMywgMHg4MTFhMzAwMCwKLQkweDgzMTgwNDgwLCAweDAwMDAwMDA1LCAweDA0MDAxN2YxLCAweDVjMDIzMDAwLAotCTB4NWMwMzIwMDAsIDB4MWMwMWYwMDAsIDB4NDgwNjYwMDQsIDB4NDk3YTYwMDAsCi0JMHg0OTdhNjAwMSwgMHg1OWJjMDBlYSwgMHg4YzAwMDUxNiwgMHgwNDAyMDdmZSwKLQkweDgzMzAwNDAwLCAweGEwMDAwMDAwLCAweDQ4MDM3OGUxLCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4NTkzMDA4MDQsIDB4ODIwNDBkMDAsIDB4MDAwMDAxMDAsCi0JMHg4MjA0MGQ0MCwgMHg4MDAwMDA0MCwgMHg0ODA2NjAwNCwgMHg0OTdhNjAwMCwKLQkweDU5YmMwMGVhLCAweDhjMDAwNTE2LCAweDA0MDIwN2ZlLCAweDgzMzAwNDAwLAotCTB4NjAwMDAwMDAsIDB4NDgwMzc4ZTEsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4YywgMHg0ZGYwMDAwMCwgMHg0ZDMwMDAwMCwgMHg0ZDM0MDAwMCwKLQkweDRkMmMwMDAwLCAweDRkMTgwMDAwLCAweDRjNWMwMDAwLCAweDRjNjAwMDAwLAotCTB4NGQ5MDAwMDAsIDB4NGRkMDAwMDAsIDB4NGRhNDAwMDAsIDB4NGQxNDAwMDAsCi0JMHg0MjAwMzAwMCwgMHgwMDAwYmYyZSwgMHg1ODFhNjAwMSwgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDJjLCAweDQxMzAyODAwLCAweDQxNzhjMDAwLCAweDU5MzAwMDAwLAotCTB4NGMwMDAwMDAsIDB4NTkzMjY4MDksIDB4NTkzMGI4MDEsIDB4NTkzMDA0MDYsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAwNiwgMHgwNDAyMDAwMywgMHg4ZDNlN2QxOCwKLQkweDA0MDAwMDEwLCAweDhkM2U3ZDA2LCAweDA0MDAwMDA3LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMDQsIDB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsCi0JMHgwNDAyMDAwOCwgMHgwNDAxZjkyZCwgMHg0YzBjMDAwMCwgMHg0YzE0MDAwMCwKLQkweDA0MDFmYjU5LCAweDVjMDAyODAwLCAweDVjMDAxODAwLCAweDA0MDFmMDA1LAotCTB4NDEzMDE4MDAsIDB4ODA2MGMxYzAsIDB4MDQwMjAwMDIsIDB4NDAwY2MwMDAsCi0JMHg4MDVjYjljMCwgMHgwNDAwMDAwMywgMHg0MDVlNjAwMCwgMHgwNDAxZjdlMywKLQkweDVjMDI2MDAwLCAweDgxMzI2MWMwLCAweDA0MDAwMDA2LCAweDgwNjBjMWMwLAotCTB4MDQwMDAwMDIsIDB4NDA2MDI4MDAsIDB4NDE3OGMwMDAsIDB4MDQwMWY3ZDgsCi0JMHg0MTdhMzAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNmUyZiwgMHg1OTkyNjAwNCwKLQkweDgxMzI2MWMwLCAweDA0MDAwMDIzLCAweDU5MzI2ODA5LCAweDQxMzBjMDAwLAotCTB4NTkzMDAwMDEsIDB4ODAwMGJkNDAsIDB4MDQwMDAwMTYsIDB4NDAwMjYwMDAsCi0JMHg0MDYwMjgwMCwgMHg1OTMwYjgwMSwgMHg1OTMwMDQwNiwgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDA2LCAweDA0MDAwMDBlLCAweDhkM2U3ZDA2LCAweDA0MDAwMDA3LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMDQsIDB4NTkzNDAyMDAsCi0JMHg4YzAwMDUwZSwgMHgwNDAyMDAwNiwgMHgwNDAxZjhkYSwgMHg0YzE0MDAwMCwKLQkweDA0MDFmYjI5LCAweDVjMDAyODAwLCAweDA0MDFmMDAyLCAweDQxMzAyODAwLAotCTB4NDA1ZTYwMDAsIDB4ODEzMjYxYzAsIDB4MDQwMjA3ZWIsIDB4ODA2MGMxYzAsCi0JMHgwNDAwMDAwNCwgMHg0MDYyNjAwMCwgMHg0MTc4YzAwMCwgMHgwNDAxZjdlNywKLQkweDgxMWEzMDAwLCAweDgzMTgwNDgwLCAweDAwMDAwMDA1LCAweDA0MDAxN2Q2LAotCTB4NWMwMjI4MDAsIDB4NWMwMzQ4MDAsIDB4NWMwM2EwMDAsIDB4NWMwMzIwMDAsCi0JMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHg1YzAyMzAwMCwgMHg1YzAyNTgwMCwKLQkweDVjMDI2ODAwLCAweDVjMDI2MDAwLCAweDVjMDNlMDAwLCAweDAyMDAwODAwLAotCTB4MDAxMDY5ODIsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4YywgMHg0ZGYwMDAwMCwgMHg0ZDM0MDAwMCwgMHg0ZDE4MDAwMCwKLQkweDRkOTAwMDAwLCAweDQyMDAzMDAwLCAweDAwMDBiZjJlLCAweDU5MzI2ODA5LAotCTB4NTgxODIwMDEsIDB4NDAxMDI4MDAsIDB4ODAxMDIxYzAsIDB4MDQwMDAwMTYsCi0JMHg0MTMwMDAwMCwgMHg4MDEwMDU4MCwgMHgwNDAwMDAxMSwgMHg1ODEwMDAwOSwKLQkweDgxMzQwNTgwLCAweDA0MDIwMDBiLCAweDQwMTAxODAwLCAweDU4MTAyMDAxLAotCTB4NDEzMDAwMDAsIDB4ODAxMDIxYzAsIDB4MDQwMDAwMGIsIDB4ODAxMDBkODAsCi0JMHgwNDAwMDAwNywgMHg0MDEwMTgwMCwgMHg1ODEwMjAwMSwgMHgwNDAxZjdmYSwKLQkweDQwMTAyODAwLCAweDU4MTAyMDAwLCAweDA0MDFmN2VjLCAweDA0MDFmOGJiLAotCTB4MDQwMWYwMWEsIDB4NDIwMzIwMDAsIDB4MDAwMGJmMzIsIDB4NDE3YTMwMDAsCi0JMHg1OTkwMjAwNCwgMHg0MDEwMjgwMCwgMHg4MDEwMjFjMCwgMHgwNDAwMDAwYiwKLQkweDU4MTAwMDA5LCAweDgxMzQwNTgwLCAweDA0MDIwMDA4LCAweDQxMzAwMDAwLAotCTB4ODAxMDA1ODAsIDB4MDQwMDAwMGMsIDB4NDAxMDI4MDAsIDB4NTgxMDIwMDEsCi0JMHg4MDEwMjFjMCwgMHgwNDAyMDdmYSwgMHg4MTFhMzAwMCwgMHg4MzE4MDQ4MCwKLQkweDAwMDAwMDA1LCAweDA0MDIxMDBkLCAweDgzOTMyNDAwLCAweDAwMDAwMDEwLAotCTB4MDQwMWY3ZWMsIDB4MDQwMWY4N2YsIDB4NWMwMzIwMDAsIDB4NWMwMjMwMDAsCi0JMHg1YzAyNjgwMCwgMHg1YzAzZTAwMCwgMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwKLQkweDgwMDAwNTgwLCAweDFjMDFmMDAwLCAweDVjMDMyMDAwLCAweDVjMDIzMDAwLAotCTB4NWMwMjY4MDAsIDB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA2OThjLCAweDRkZjAwMDAwLCAweDRkMzAwMDAwLCAweDRkMzQwMDAwLAotCTB4NGQxODAwMDAsIDB4NGQyYzAwMDAsIDB4NGM1YzAwMDAsIDB4NGM2MDAwMDAsCi0JMHg0ZDkwMDAwMCwgMHg0ZGQwMDAwMCwgMHg0ZGE0MDAwMCwgMHg0ZDE0MDAwMCwKLQkweDQyMDAzMDAwLCAweDAwMDBiZjJlLCAweDU4MWE2MDAxLCAweDgxMzI2MWMwLAotCTB4MDQwMDAwMjMsIDB4NDEzMDI4MDAsIDB4NTkzMGI4MDAsIDB4NTkzMjY4MDksCi0JMHg1OTM0MDQwMywgMHg4MTQ0MDU4MCwgMHgwNDAwMDAwNiwgMHg4MDVjYjljMCwKLQkweDA0MDAwMDFiLCAweDQxMzAyODAwLCAweDQwNWU2MDAwLCAweDA0MDFmN2Y3LAotCTB4NTkzMGI4MDEsIDB4OGQzZTdkMDAsIDB4MDQwMDAwMDMsIDB4MDQwMWZiNTgsCi0JMHgwNDAyMDAwZSwgMHg1OTMwMDQwNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNiwKLQkweDA0MDIwMDAzLCAweDhkM2U3ZDE4LCAweDA0MDAwMDA4LCAweDA0MDFmODY3LAotCTB4NGMwYzAwMDAsIDB4NGMxNDAwMDAsIDB4MDQwMWZhOTMsIDB4NWMwMDI4MDAsCi0JMHg1YzAwMTgwMCwgMHgwNDAxZjAwMiwgMHg0MTMwMTgwMCwgMHg0MDVlNjAwMCwKLQkweDgxMzI2MWMwLCAweDA0MDIwN2ViLCAweDA0MDFmMDJkLCAweDQxN2EzMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDZlMmYsIDB4NTk5MjYwMDQsIDB4ODEzMjYxYzAsCi0JMHgwNDAwMDAwNSwgMHg1OTMyNjgwOSwgMHg1OTM0MDQwMywgMHg4MTQ0MDU4MCwKLQkweDA0MDAwMDA2LCAweDgxMWEzMDAwLCAweDgzMTgwNDgwLCAweDAwMDAwMDA1LAotCTB4MDQwMDE3ZjQsIDB4MDQwMWYwMWUsIDB4NDEzMGMwMDAsIDB4NTkzMDAwMDEsCi0JMHg4MDAwYmQ0MCwgMHgwNDAwMDAxMiwgMHg0MDAyNjAwMCwgMHg0MDYwMjgwMCwKLQkweDU5MzBiODAxLCAweDhkM2U3ZDAwLCAweDA0MDAwMDAzLCAweDA0MDFmYjJjLAotCTB4MDQwMjAwMGEsIDB4NTkzMDA0MDYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDYsCi0JMHgwNDAwMDAwNiwgMHgwNDAxZjgxYiwgMHg0YzE0MDAwMCwgMHgwNDAxZmE2YSwKLQkweDVjMDAyODAwLCAweDA0MDFmMDAyLCAweDQxMzAyODAwLCAweDQwNWU2MDAwLAotCTB4ODEzMjYxYzAsIDB4MDQwMjA3ZWYsIDB4ODA2MGMxYzAsIDB4MDQwMDAwMDQsCi0JMHg0MDYyNjAwMCwgMHg0MTc4YzAwMCwgMHgwNDAxZjdlYiwgMHg1YzAyMjgwMCwKLQkweDVjMDM0ODAwLCAweDVjMDNhMDAwLCAweDVjMDMyMDAwLCAweDVjMDBjMDAwLAotCTB4NWMwMGI4MDAsIDB4NWMwMjU4MDAsIDB4NWMwMjMwMDAsIDB4NWMwMjY4MDAsCi0JMHg1YzAyNjAwMCwgMHg1YzAzZTAwMCwgMHgwNDAwMGJkNCwgMHgxYzAxZjAwMCwKLQkweDA0MDFmYmI5LCAweDU5OTAwMDA0LCAweDgxMzAwNTgwLCAweDA0MDIwMDE4LAotCTB4NGMxNDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDZiMTMsIDB4MDQwMWZiYTksCi0JMHg1YzAwMjgwMCwgMHg1OTMwMDAwMSwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwMywKLQkweDQ5N2E2ODBjLCAweDFjMDFmMDAwLCAweDQyMDAzMDAwLCAweDAwMDBiZjJlLAotCTB4NDk3YTYwMDEsIDB4NTgxODA4MDEsIDB4ODAwNDA5YzAsIDB4MDQwMjAwMDQsCi0JMHg0ODAwMzAwMCwgMHg0ODAwMzAwMSwgMHgxYzAxZjAwMCwgMHg1ODE4MDgwMCwKLQkweDQ4MDAwODAwLCAweDQ4MDAzMDAwLCAweDFjMDFmMDAwLCAweDU5MzAwMDAxLAotCTB4NDgwMDI4MDEsIDB4ODAwMDAxYzAsIDB4MDQwMjAwMDIsIDB4NDgxNjY4MGMsCi0JMHg0OTdhNjAwMSwgMHgxYzAxZjAwMCwgMHgwNDAxZmI5NywgMHg0MjAwMzAwMCwKLQkweDAwMDBiZjJlLCAweDU4MTgwMDAxLCAweDgxMzAwNTgwLCAweDA0MDIwMDFjLAotCTB4NTkzMDA4MDEsIDB4ODAwNDA5YzAsIDB4MDQwMDAwMGUsIDB4NTkzMDAwMDAsCi0JMHg4MDAwMDFjMCwgMHgwNDAyMDAwNSwgMHg0ODA0MzAwMSwgMHg0ODA0MzAwMCwKLQkweDQ5N2E2MDAxLCAweDFjMDFmMDAwLCAweDU5MzAwMDAwLCAweDQ4MDAwODAwLAotCTB4NDgwNDMwMDEsIDB4NDk3YTYwMDAsIDB4NDk3YTYwMDEsIDB4MWMwMWYwMDAsCi0JMHg1OTMwMDgwMCwgMHg4MDA0MDljMCwgMHgwNDAyMDAwNSwgMHg0OTc4MzAwMSwKLQkweDQ5NzgzMDAwLCAweDQ5N2E2ODBjLCAweDFjMDFmMDAwLCAweDQ4MDQzMDAxLAotCTB4NDk3YTYwMDAsIDB4NDk3YTY4MGMsIDB4MWMwMWYwMDAsIDB4NTgxODAwMDAsCi0JMHg4MTMwMDU4MCwgMHgwNDAyMDAwYywgMHg1OTMwMDAwMSwgMHg4MDAwMDFjMCwKLQkweDA0MDIwMDA1LCAweDQ4MTQzMDAwLCAweDQ5NzgyODAwLCAweDQ5N2E2ODBjLAotCTB4MWMwMWYwMDAsIDB4NDgwMDMwMDAsIDB4NDgwMDI4MDAsIDB4NDk3YTYwMDEsCi0JMHgxYzAxZjAwMCwgMHg1OTMwMDAwMCwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwOCwKLQkweDU5MzAwMDAxLCAweDQ4MDAxODAxLCAweDgwMDAwMWMwLCAweDA0MDIwMDAyLAotCTB4NDgwZTY4MGMsIDB4NDk3YTYwMDEsIDB4MWMwMWYwMDAsIDB4NTkzMDA4MDEsCi0JMHg4MDA0MDljMCwgMHgwNDAyMDAwNiwgMHg1OTMwMDgwMCwgMHg0ODA0MjgwMCwKLQkweDQ5N2E2MDAwLCAweDQ5N2E2ODBjLCAweDFjMDFmMDAwLCAweDU5MzAwMDAwLAotCTB4NDgwMDA4MDAsIDB4NDgwNDI4MDAsIDB4NDk3YTYwMDAsIDB4NDk3YTYwMDEsCi0JMHgxYzAxZjAwMCwgMHgwNDAxZmI3MywgMHg0ZGYwMDAwMCwgMHgwNDAxZjgzYSwKLQkweDA0MDIwOGM3LCAweDA0MDIwOTRhLCAweDA0MDIwMDA1LCAweDVjMDNlMDAwLAotCTB4MDQwMDBiNjIsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4NWMwM2UwMDAsCi0JMHgwNDAwMGI1ZSwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDRkMmMwMDAwLCAweDRkMzQwMDAwLCAweDRkMzAwMDAwLCAweDQxNzgzMDAwLAotCTB4NTk4ZTYwMDksIDB4ODEzMjYxYzAsIDB4MDQwMDAwMjMsIDB4NTkzMDA0MDYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwNiwgMHgwNDAyMDAwNCwgMHg4ZDNlN2QxOCwKLQkweDA0MDIwMDBjLCAweDA0MDFmMDE5LCAweDgyMDQwNTgwLCAweDAwMDAwMDA1LAotCTB4MDQwMjAwMDgsIDB4OGQzZTdkMTgsIDB4MDQwMDAwMDMsIDB4OGQzZTdkMTYsCi0JMHgwNDAwMDAwNCwgMHg1OTMwMDQyMCwgMHg4YzAwMDUwMCwgMHgwNDAyMDAwZiwKLQkweDA0MDFmYTQ5LCAweDU5MzAwMDAwLCAweDRjMDAwMDAwLCAweDhkM2U3ZDA2LAotCTB4MDQwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDkwOWQsIDB4MDQwMDAwMDUsCi0JMHgwNDAxZjg2OSwgMHg0YzE4MDAwMCwgMHgwNDAxZjliNywgMHg1YzAwMzAwMCwKLQkweDVjMDI2MDAwLCAweDA0MDFmN2UwLCAweDQxMzAzMDAwLCAweDU5MzI2MDAwLAotCTB4MDQwMWY3ZGQsIDB4NWMwMjYwMDAsIDB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg0YzVjMDAwMCwgMHg4MTMyNjFjMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDQxMzAwMDAwLCAweDU5OGNiODA5LAotCTB4NDE3ODMwMDAsIDB4ODA1Y2I5YzAsIDB4MDQwMDAwMTMsIDB4ODA1YzBkODAsCi0JMHgwNDAwMDAwNCwgMHg0MDVjMzAwMCwgMHg1ODE4YjgwMCwgMHgwNDAxZjdmYSwKLQkweDA0MDFmODRkLCAweDU5OGMwMDBkLCAweDgxMzAwNTgwLCAweDAyMDAwODAwLAotCTB4MDAxMDZlMTAsIDB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNDIsCi0JMHgwNDAyMDAwMiwgMHg0OTdhNjAwNywgMHg4MDAwMDU4MCwgMHg1YzAwYjgwMCwKLQkweDFjMDFmMDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDBiODAwLAotCTB4MWMwMWYwMDAsIDB4MDQwMWZiMTcsIDB4NGRmMDAwMDAsIDB4NGQyYzAwMDAsCi0JMHg0ZDM0MDAwMCwgMHg0ZDMwMDAwMCwgMHg0MTc4MzAwMCwgMHg1OThlNjAwOSwKLQkweDgxMzI2MWMwLCAweDA0MDAwMDJlLCAweDU5MzAwYzA2LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDYsIDB4MDQwMjAwMDQsIDB4OGQzZTdkMTgsIDB4MDQwMjAwMGMsCi0JMHgwNDAxZjAyNCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAyMDAwOCwKLQkweDhkM2U3ZDE4LCAweDA0MDAwMDAzLCAweDhkM2U3ZDE2LCAweDA0MDAwMDA0LAotCTB4NTkzMDA0MjAsIDB4OGMwMDA1MDAsIDB4MDQwMjAwMWEsIDB4NTkzMjY4MDksCi0JMHg1OTM0MDQwMywgMHg4MTQ0MDU4MCwgMHgwNDAyMDAxNiwgMHg4ZDNlN2QwMCwKLQkweDA0MDAwMDA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLCAweDA0MDIwMDExLAotCTB4MDQwMWZhMjMsIDB4MDQwMjAwMGYsIDB4MDQwMWY5ZWYsIDB4NTkzMDAwMDAsCi0JMHg0YzAwMDAwMCwgMHg4ZDNlN2QwNiwgMHgwNDAwMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA5MDlkLCAweDA0MDAwMDA1LCAweDA0MDFmODBmLCAweDRjMTgwMDAwLAotCTB4MDQwMWY5NWQsIDB4NWMwMDMwMDAsIDB4NWMwMjYwMDAsIDB4MDQwMWY3ZDUsCi0JMHg0MTMwMzAwMCwgMHg1OTMyNjAwMCwgMHgwNDAxZjdkMiwgMHg1YzAyNjAwMCwKLQkweDVjMDI2ODAwLCAweDVjMDI1ODAwLCAweDVjMDNlMDAwLCAweDA0MDAwYWQzLAotCTB4MWMwMWYwMDAsIDB4NTkzMDA4MDAsIDB4NDk3YTYwMDAsIDB4MDQwMWZhYjYsCi0JMHg4MDE4MzFjMCwgMHgwNDAyMDAwOSwgMHg1OThjMDAwOCwgMHg4MTMwMDU4MCwKLQkweDA0MDIwMDA0LCAweDQ4MDMxODA4LCAweDQ4MDMxODA5LCAweDA0MDFmMDA4LAotCTB4NDgwNzE4MDksIDB4MDQwMWYwMDYsIDB4NDgwNDMwMDAsIDB4NTk4YzAwMDgsCi0JMHg4MTMwMDU4MCwgMHgwNDAyMDAwMiwgMHg0ODFiMTgwOCwgMHgwNDAxZjJiOCwKLQkweDRkMmMwMDAwLCAweDRkMzAwMDAwLCAweDRkMzQwMDAwLCAweDQxNzgzMDAwLAotCTB4NTk4ZTYwMGIsIDB4ODEzMjYxYzAsIDB4MDQwMDAwMTMsIDB4OGQzZTdkMDYsCi0JMHgwNDAwMDAwNSwgMHg1OTMyNjgwOSwgMHg1OTM0MDIwMCwgMHg4YzAwMDUwZSwKLQkweDA0MDIwMDBhLCAweDA0MDFmOWI4LCAweDU5MzAwMDAwLCAweDRjMDAwMDAwLAotCTB4MDQwMWY4NTMsIDB4NGMxODAwMDAsIDB4MDQwMWY5MmIsIDB4NWMwMDMwMDAsCi0JMHg1YzAyNjAwMCwgMHgwNDAxZjdmMCwgMHg0MTMwMzAwMCwgMHg1OTMyNjAwMCwKLQkweDA0MDFmN2VkLCAweDAyMDFmODAwLCAweDAwMTA0NWM3LCAweDVjMDI2ODAwLAotCTB4NWMwMjYwMDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0YzVjMDAwMCwgMHg4MTMyNjFjMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDQxMzAwMDAwLCAweDU5OGNiODBiLCAweDQxNzgzMDAwLCAweDgwNWNiOWMwLAotCTB4MDQwMDAwMGYsIDB4ODA1YzBkODAsIDB4MDQwMDAwMDQsIDB4NDA1YzMwMDAsCi0JMHg1ODE4YjgwMCwgMHgwNDAxZjdmYSwgMHgwNDAxZjgzNSwgMHg1OThjMDAwZCwKLQkweDgxMzAwNTgwLCAweDAyMDAwODAwLCAweDAwMTA2ZTEwLCAweDQ5N2E2MDA3LAotCTB4ODAwMDA1ODAsIDB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHgwNDAxZmE4ZCwKLQkweDRkZjAwMDAwLCAweDRkMzQwMDAwLCAweDRkMzAwMDAwLCAweDRkMmMwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHg0MTc4MzAwMCwgMHg1OThlNjAwYiwgMHg4MTMyNjFjMCwgMHgwNDAwMDAxNCwKLQkweDU5MzAwMDA5LCAweDgxMzQwNTgwLCAweDA0MDIwMDBlLCAweDhkM2U3ZDAwLAotCTB4MDQwMDAwMDMsIDB4MDQwMWY5YWEsIDB4MDQwMjAwMGEsIDB4MDQwMWY5NzYsCi0JMHg1OTMwMDAwMCwgMHg0YzAwMDAwMCwgMHgwNDAxZjgxMSwgMHg0YzE4MDAwMCwKLQkweDA0MDFmOGU5LCAweDVjMDAzMDAwLCAweDVjMDI2MDAwLCAweDA0MDFmN2VmLAotCTB4NDEzMDMwMDAsIDB4NTkzMjYwMDAsIDB4MDQwMWY3ZWMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDVlYSwgMHg1YzAyNTgwMCwgMHg1YzAyNjAwMCwgMHg1YzAyNjgwMCwKLQkweDVjMDNlMDAwLCAweDA0MDAwYTVkLCAweDFjMDFmMDAwLCAweDU5MzAwODAwLAotCTB4NDk3YTYwMDAsIDB4MDQwMWZhNDAsIDB4ODAxODMxYzAsIDB4MDQwMjAwMDksCi0JMHg1OThjMDAwYSwgMHg4MTMwMDU4MCwgMHgwNDAyMDAwNCwgMHg0ODAzMTgwYSwKLQkweDQ4MDMxODBiLCAweDA0MDFmMDA4LCAweDQ4MDcxODBiLCAweDA0MDFmMDA2LAotCTB4NDgwNDMwMDAsIDB4NTk4YzAwMGEsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMDIsCi0JMHg0ODFiMTgwYSwgMHgwNDAxZjI0MiwgMHgwNDAxZmE1MiwgMHg0ZGYwMDAwMCwKLQkweDRkMzAwMDAwLCAweDRjNWMwMDAwLCAweDQxNzhiODAwLCAweDhkM2U3ZDE4LAotCTB4MDQwMDAwMDQsIDB4OGQzZTdkMTYsIDB4MDQwMjAwMDIsIDB4ODA1Y2I4MDAsCi0JMHg1OThlNjAwNSwgMHg4MTMyNjFjMCwgMHgwNDAwMDAxYSwgMHg1OTMwMDAwMCwKLQkweDRjMDAwMDAwLCAweDgwNWNiOWMwLCAweDA0MDIwMDBiLCAweDU5MzAwYzA2LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMTEsIDB4MDQwMDAwMTAsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDAwNCwgMHgwNDAyMDAwNCwgMHg1OTMwMDQyMCwgMHg4YzAwMDUwMCwKLQkweDA0MDIwMDBhLCAweDAyMDFmODAwLCAweDAwMTA4ZjA1LCAweDAyMDAwODAwLAotCTB4MDAxMDdkYTYsIDB4MDIwMWY4MDAsIDB4MDAxMDkwZWMsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDhiNCwgMHgwNDAxZmExZSwgMHg1YzAyNjAwMCwgMHgwNDAxZjdlNiwKLQkweDQ5N2IxODA1LCAweDQ5N2IxODA0LCAweDVjMDBiODAwLCAweDVjMDI2MDAwLAotCTB4NWMwM2UwMDAsIDB4MDQwMDBhMWQsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0YzVjMDAwMCwgMHg0YzYwMDAwMCwgMHg4MTMyNjFjMCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDQxMzAwMDAwLCAweDU5OGNiODA1LCAweDQwNWNjMDAwLAotCTB4ODA1Y2I5YzAsIDB4MDQwMDAwMjUsIDB4ODA1YzBkODAsIDB4MDQwMDAwMDQsCi0JMHg0MDVjYzAwMCwgMHg1ODYwYjgwMCwgMHgwNDAxZjdmYSwgMHg1OThjMDAwZCwKLQkweDgxMzAwNTgwLCAweDAyMDAwODAwLCAweDAwMTA2ZTEwLCAweDA0MDFmOWVlLAotCTB4NTk4YzAwMDUsIDB4ODA1YzA1ODAsIDB4MDQwMjAwMDksIDB4NTg1YzAwMDAsCi0JMHg0ODAzMTgwNSwgMHg0OTc4YjgwMCwgMHg1OThjMDAwNCwgMHg4MDVjMDU4MCwKLQkweDA0MDIwMDBkLCAweDQ5N2IxODA0LCAweDA0MDFmMDBiLCAweDU5OGMwMDA0LAotCTB4ODA1YzA1ODAsIDB4MDQwMjAwMDUsIDB4NDg2MzE4MDQsIDB4NDk3OGI4MDAsCi0JMHg0OTc4YzAwMCwgMHgwNDAxZjAwNCwgMHg1ODVjMDAwMCwgMHg0ODAwYzAwMCwKLQkweDQ5NzhiODAwLCAweDA0MDFmOWVhLCAweDgwMDAwNTgwLCAweDVjMDBjMDAwLAotCTB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDA0MDFmOWYwLCAweDRkZjAwMDAwLCAweDRkMmMwMDAwLCAweDRkMzQwMDAwLAotCTB4NGQzMDAwMDAsIDB4NGM1YzAwMDAsIDB4NDE3OGI4MDAsIDB4OGQzZTdkMTgsCi0JMHgwNDAwMDAwNCwgMHg4ZDNlN2QxNiwgMHgwNDAyMDAwMiwgMHg4MDVjYjgwMCwKLQkweDQxNzgzMDAwLCAweDU5OGU2MDA1LCAweDgxMzI2MWMwLCAweDA0MDAwMDI5LAotCTB4NTkzMjY4MDksIDB4ODEzNjY5YzAsIDB4MDQwMDAwMjMsIDB4NTkzNDA0MDMsCi0JMHg4MTQ0MDU4MCwgMHgwNDAyMDAyMCwgMHg4MDVjYjljMCwgMHgwNDAyMDAwYiwKLQkweDU5MzAwYzA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDExLCAweDA0MDAwMDFhLAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMjAwMDQsIDB4NTkzMDA0MjAsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDAxNCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDA4LCAweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDA1LAotCTB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNDMsIDB4MDQwMDAwMGEsCi0JMHgwNDAxZjhjMSwgMHg1OTMwMDAwMCwgMHg0YzAwMDAwMCwgMHgwNDAxZjgxMCwKLQkweDRjMTgwMDAwLCAweDA0MDFmODM0LCAweDVjMDAzMDAwLCAweDVjMDI2MDAwLAotCTB4MDQwMWY3ZGEsIDB4NDEzMDMwMDAsIDB4NTkzMjYwMDAsIDB4MDQwMWY3ZDcsCi0JMHg1YzAwYjgwMCwgMHg1YzAyNjAwMCwgMHg1YzAyNjgwMCwgMHg1YzAyNTgwMCwKLQkweDVjMDNlMDAwLCAweDA0MDAwOWE5LCAweDFjMDFmMDAwLCAweDU5MzAwODAwLAotCTB4NDk3YTYwMDAsIDB4MDQwMWY5OGMsIDB4ODAxODMxYzAsIDB4MDQwMjAwMDksCi0JMHg1OThjMDAwNCwgMHg4MTMwMDU4MCwgMHgwNDAyMDAwNCwgMHg0ODAzMTgwNCwKLQkweDQ4MDMxODA1LCAweDA0MDFmMDA4LCAweDQ4MDcxODA1LCAweDA0MDFmMDA2LAotCTB4NDgwNDMwMDAsIDB4NTk4YzAwMDQsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMDIsCi0JMHg0ODFiMTgwNCwgMHgwNDAxZjE4ZSwgMHg0OTQzYzg1NywgMHgwNDAxZjk5ZCwKLQkweDRkZjAwMDAwLCAweDA0MDFmZTM3LCAweDA0MDFmZWQyLCAweDVjMDNlMDAwLAotCTB4MDQwMDA5OGUsIDB4MWMwMWYwMDAsIDB4NDk0N2M4NTcsIDB4MDQwMWY5OTUsCi0JMHg0ZGYwMDAwMCwgMHg0ZDNjMDAwMCwgMHg4NTNlN2QwMCwgMHgwNDAxZmU3YSwKLQkweDA0MDFmZjAzLCAweDVjMDI3ODAwLCAweDVjMDNlMDAwLCAweDA0MDAwOTgzLAotCTB4MWMwMWYwMDAsIDB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsCi0JMHg0ZDM0MDAwMCwgMHg0ZDJjMDAwMCwgMHg1OTMyNjgwOSwgMHg1OTMyNTgwOCwKLQkweDU5MzAwNDA2LCAweDgyMDAwYzgwLCAweDAwMDAwMDEyLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4NDkzM2M4NTcsIDB4NDk0M2M4NTcsIDB4NDkzZmM4NTcsCi0JMHg0ODAzYzg1NywgMHgwYzAxZjgwNCwgMHg1YzAyNTgwMCwgMHg1YzAyNjgwMCwKLQkweDFjMDFmMDAwLCAweDAwMTA2ODI3LCAweDAwMTA2ODI5LCAweDAwMTA2ODMzLAotCTB4MDAxMDY4NGQsIDB4MDAxMDY4MjksIDB4MDAxMDY4M2QsIDB4MDAxMDY4NjUsCi0JMHgwMDEwNjgyNywgMHgwMDEwNjgyNywgMHgwMDEwNjg3OCwgMHgwMDEwNjg2ZiwKLQkweDAwMTA2ODI3LCAweDAwMTA2ODI3LCAweDAwMTA2ODI3LCAweDAwMTA2ODI3LAotCTB4MDAxMDY4MjcsIDB4MDAxMDY4N2UsIDB4MDAxMDY4N2UsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHgwMjAxZjgwMCwgMHgwMDEwOGVmMSwgMHgwMjAwMDgwMCwKLQkweDAwMTAxZTFiLCAweDAyMDFmODAwLCAweDAwMTA5MGVjLCAweDAyMDFmODAwLAotCTB4MDAxMDdkYTYsIDB4MDIwMWYwMDAsIDB4MDAxMDc2OTgsIDB4ODEyZTU5YzAsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDIxZCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAzLCAweDAyMDAwODAwLCAweDAwMTA4ZWU3LCAweDAyMDFmMDAwLAotCTB4MDAxMDc2OTgsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDIwMDAwMDAsCi0JMHgwMDEwNzY5OCwgMHg1OTJjMTIwNCwgMHg4MjA4MTUwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDgwNTgwLCAweDAwMDAwMDU1LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NDk0MjVhMDYsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNzY5OCwgMHg1OTMwMDAwNCwgMHg4NDAwMDU1YywgMHg0ODAyNjAwNCwKLQkweDU5MzAwMDA3LCAweDhjMDAwNTAwLCAweDAyMDIwODAwLCAweDAwMTAwZWU0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDQwMDAwMGQsIDB4NGEwMjVhMDQsCi0JMHgwMDAwMDEwMywgMHg0OTQyNWEwNiwgMHg0OTdhNWMwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA4ZjdkLCAweDAyMDFmODAwLCAweDAwMTBhNGFlLCAweDAyMDFmODAwLAotCTB4MDAwMjAzODEsIDB4MDIwMWY4MDAsIDB4MDAxMDhlZTcsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNzY5OCwgMHg1OTMwMDAwNywgMHg4YzAwMDUwMCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwZWU0LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDAyMDIwODAwLAotCTB4MDAxMGEyMDEsIDB4MDIwMWYwMDAsIDB4MDAxMDc2OTgsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGRmNCwgMHgwNDAwMDAwNSwgMHg0OTQyNWEwNiwgMHg0OTdhNWMwOSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmMDAwLCAweDAwMTA3Njk4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDIwMjA4MDAsIDB4MDAxMDYzOWQsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNzY5OCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDA0LCAweDQ5NDI1YTA2LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLAotCTB4NTkzMjU4MTcsIDB4MDIwMWY4MDAsIDB4MDAxMDA4NDMsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNzY5OCwgMHg1OThjMDAwZCwgMHg4MTMwMDU4MCwgMHgwNDAwMDAwMywKLQkweDQ5N2E2MDA3LCAweDFjMDFmMDAwLCAweDU5YzQwMDA0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMGMsIDB4MDQwMDAwMDUsIDB4NGEwMzg4MDQsIDB4MDAwMDAwMGMsCi0JMHg0OTdiMjgwNywgMHgwNDAxZjAwYSwgMHgwNDAxZmFkYiwgMHg1OTMwMDQwMywKLQkweDgyMDAwZDgwLCAweDAwMDAwMDQwLCAweDA0MDAwMDA0LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwNDIsIDB4MDQwMjAwMDIsIDB4NDk3YTYwMDcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmUxMCwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg1OTMwMDgwNCwKLQkweDhjMDQwZDIwLCAweDA0MDIwMDA0LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NGQzODAwMDAsIDB4NTkzMDA4MDQsCi0JMHg4NDA0MGQyMCwgMHg0ODA2NjAwNCwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0OSwKLQkweDU5MzAwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDAzLAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwMTMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsCi0JMHg4MDAwMDU4MCwgMHg1YzAyNzAwMCwgMHgxYzAxZjAwMCwgMHg1OTMwMDAxNywKLQkweDgxNDgwNTgwLCAweDA0MDIwMDAzLCAweDU5MzAwMDE4LCAweDgxNGMwNTgwLAotCTB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsIDB4NGQzMDAwMDAsIDB4MDQwMWY4YzksCi0JMHg0ZGYwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNWQ5YiwgMHg1OTkwMDAwMSwKLQkweDgyMDAwNTAwLCAweDAwMDAwMDAzLCAweDBjMDFmMDAxLCAweDAwMTA2OGYxLAotCTB4MDAxMDY4ZDEsIDB4MDAxMDY4Y2YsIDB4MDAxMDY4Y2YsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OTkyNjAwNCwgMHgwNDAxZjg4ZSwgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDFkLCAweDU5MzAwMDA0LCAweDhjMDAwNTE2LCAweDA0MDAwMDA0LAotCTB4NTkzMjU4MDgsIDB4NDk3YTU4MDgsIDB4NDk3YTU4MDksIDB4MDQwMWY4OGUsCi0JMHg1OTMwMDAwMSwgMHg4MDAwMDFjMCwgMHgwNDAwMDAwZSwgMHg0OTdhNjAwMSwKLQkweDQyMDAzMDAwLCAweDAwMDBiZjJlLCAweDU4MTgwODAxLCAweDgwMDQwOWMwLAotCTB4MDQwMjAwMDQsIDB4NDgwMDMwMDEsIDB4NDgwMDMwMDAsIDB4MDQwMWYwMGEsCi0JMHg1ODE4MDgwMCwgMHg0ODAwMDgwMCwgMHg0ODAwMzAwMCwgMHgwNDAxZjAwNiwKLQkweDU5MzAwODA5LCAweDgwMDQwOWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4NDk3ODA4MGMsIDB4NWMwM2UwMDAsIDB4MDQwMDA4OTAsIDB4NWMwMjYwMDAsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0ZDMwMDAwMCwgMHg0OTdiMjgwNywKLQkweDA0MDFmODk0LCAweDRkZjAwMDAwLCAweDU5OGMwMDAwLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMDcsIDB4NDgwM2M4NTcsIDB4MGMwMWYwMDEsIDB4MDAxMDY5MjYsCi0JMHgwMDEwNjkwOSwgMHgwMDEwNjkxMiwgMHgwMDEwNjkxNiwgMHgwMDEwNjkyMSwKLQkweDAwMTA2OTI2LCAweDAwMTA2OTA3LCAweDAwMTA2OTA3LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NTk4YzAwMGQsIDB4ODAwMjY1NDAsIDB4MDQwMDAwMDQsCi0JMHgwNDAxZjgxZSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHgwMjAxZjgwMCwKLQkweDAwMTA2ZTEwLCAweDA0MDFmMDE1LCAweDA0MDFmODI3LCAweDAyMDFmODAwLAotCTB4MDAxMDZlMTAsIDB4MDQwMWYwMTEsIDB4NTk4YzAwMGQsIDB4ODAwMjY1NDAsCi0JMHgwNDAwMDAwZSwgMHgwNDAxZjgzOCwgMHgwNDAwMDAwNCwgMHgwNDAxZjgwZiwKLQkweDA0MDAwMDAyLCAweDA0MDFmODFjLCAweDAyMDFmODAwLCAweDAwMTA2ZTEwLAotCTB4MDQwMWYwMDYsIDB4MDQwMWY4MzAsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNmUxMCwgMHg1YzAzZTAwMCwgMHgwNDAwMDg1YiwKLQkweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDU5OGMwMDA5LCAweDgxMzAwNTgwLAotCTB4MDQwMjAwMGMsIDB4MDQwMWY4NGUsIDB4MDQwMWY4M2IsIDB4NTkzMDAwMDAsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDAwNCwgMHg0ODAzMTgwOSwgMHg0OTdhNjAwMCwKLQkweDA0MDFmMDAzLCAweDQ5N2IxODA5LCAweDQ5N2IxODA4LCAweDgwMDAwNTgwLAotCTB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsIDB4NTkzMDA0MDYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMywgMHgwNDAyMDAxMiwgMHg1OThjMDAwYiwgMHg4MTMwMDU4MCwKLQkweDA0MDIwMDBmLCAweDA0MDFmODNhLCAweDU5MzI1ODA4LCAweDQ5N2E1ODA4LAotCTB4NDk3YTU4MDksIDB4MDQwMWY4MjQsIDB4NTkzMDAwMDAsIDB4ODAwMDAxYzAsCi0JMHgwNDAwMDAwNCwgMHg0ODAzMTgwYiwgMHg0OTdhNjAwMCwgMHgwNDAxZjAwMywKLQkweDQ5N2IxODBhLCAweDQ5N2IxODBiLCAweDgwMDAwNTgwLCAweDVjMDI1ODAwLAotCTB4MWMwMWYwMDAsIDB4NTk4YzAwMDUsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMGMsCi0JMHgwNDAxZjgyNywgMHgwNDAxZjgxNCwgMHg1OTMwMDAwMCwgMHg4MDAwMDFjMCwKLQkweDA0MDAwMDA0LCAweDQ4MDMxODA1LCAweDQ5N2E2MDAwLCAweDA0MDFmMDAzLAotCTB4NDk3YjE4MDUsIDB4NDk3YjE4MDQsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsCi0JMHg0YTAzMjAwMSwgMHgwMDAwMDAwMCwgMHg0OTdiMjAwNCwgMHg0OTdiMjAwNSwKLQkweDU5OTAwMDA2LCAweDgyMDAwNTAwLCAweDAwMDBmZmZmLCAweDQ4MDMyMDA2LAotCTB4MWMwMWYwMDAsIDB4NGMwNDAwMDAsIDB4NTkzMDAwMDQsIDB4ODIwMDA1MDAsCi0JMHg3ZmZlZmZmZiwgMHg0ODAyNjAwNCwgMHg1OWJjMDBlNCwgMHg4YzAwMDUxNCwKLQkweDA0MDAwMDA5LCAweDQyMDAwODAwLCAweDAwMDBiZjAwLCAweDU4MDQwMDEyLAotCTB4ODEzMDA1ODAsIDB4MDQwMjAwMDQsIDB4NDk3ODA4MTIsIDB4NGEwMzc4ZTQsCi0JMHgwMDAwMDgwMCwgMHg1YzAwMDgwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDU5OGMwMDBjLCAweDgwMDAwNTQwLCAweDA0MDAwMDAzLCAweDgwMDAwMDQwLAotCTB4NDgwMzE4MGMsIDB4MWMwMWYwMDAsIDB4NTliYzAwZWEsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwNywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMywgMHgwNDAyMDAwNCwKLQkweDQ4MDNjODU2LCAweDRhMDM3OGU4LCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLAotCTB4NTliYzAwZWEsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMSwgMHgwNDAyMDAxMSwgMHg0ODAzYzg1NiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAwLCAweDA0MDFmODBlLCAweDQyMDAwODAwLCAweDAwMDAxMDAwLAotCTB4NTliYzAwZWEsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMywgMHgwNDAwMDAwNSwgMHg4MDA0MDg0MCwgMHgwNDAyMDdmOSwKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDFjMDFmMDAwLCAweDU5YmMwMGVhLAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwMDcsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDEsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OWJjMDBlYSwgMHg4YzAwMDUxNiwKLQkweDA0MDIwN2ZlLCAweDQ4MDc3OGUxLCAweDFjMDFmMDAwLCAweDU5YmMwMGVhLAotCTB4OGMwMDA1MTYsIDB4MDQwMjA3ZmUsIDB4NDgwNzc4ZTEsIDB4NTliYzAwZWEsCi0JMHg4YzAwMDUxNiwgMHgwNDAyMDdmZSwgMHg0ODBiNzhlMSwgMHgxYzAxZjAwMCwKLQkweDRhMDM3OGU0LCAweDAwMDAyMDAwLCAweDU5YTgwMDZmLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMGMsIDB4MDQwMjAwMDgsIDB4NDIwMDcwMDAsIDB4MDAxMGIzM2YsCi0JMHg1ODM4MDQwMSwgMHg4YzAwMDUwNiwgMHgwNDAyMDAwMywgMHg0YTAzNzhlNCwKLQkweDAwMDgwMDAwLCAweDFjMDFmMDAwLCAweDgyMDAwZDAwLCAweDgwMDAwMDE4LAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2MGQsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMDEwNjlkYywgMHgwMDEwNmE4MSwgMHgwMDEwNmE5YiwgMHgwMDEwNjlkYywKLQkweDAwMTA2OWRlLCAweDAwMTA2OWZmLCAweDAwMTA2YTFlLCAweDAwMTA2YTUzLAotCTB4MDAxMDY5ZGMsIDB4MDAxMDZhN2YsIDB4MDAxMDY5ZGMsIDB4MDAxMDY5ZGMsCi0JMHgwMDEwNjlkYywgMHgwMDEwNjlkYywgMHgwMDEwNjlkYywgMHgwMDEwNjlkYywKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDRkMzAwMDAwLCAweDRkOTAwMDAwLAotCTB4NGRkMDAwMDAsIDB4NGRhNDAwMDAsIDB4NGQxNDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmUyZiwgMHg1OWJjMDBlYSwgMHg4YzAwMDUxMCwgMHgwNDAwMDdmZSwKLQkweDU5YmU2MGUwLCAweDU5MzAwMDA0LCAweDhjMDAwNTIwLCAweDA0MDAwMDExLAotCTB4ODIwMDA1MDAsIDB4ZmZmZWZlZmYsIDB4NDgwMjYwMDQsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwMywgMHgwNDAxZmY5YiwgMHgwMjAxZjgwMCwgMHgwMDEwMTAxZSwKLQkweDVjMDIyODAwLCAweDVjMDM0ODAwLCAweDVjMDNhMDAwLCAweDVjMDMyMDAwLAotCTB4NWMwMjYwMDAsIDB4NGEwMzc4ZTQsIDB4MDAwMDAwMDgsIDB4MDQwMWY3ODcsCi0JMHg4NDAwMDUxMCwgMHg0ODAyNjAwNCwgMHgwNDAxZjdmNiwgMHg0ZDMwMDAwMCwKLQkweDRkOTAwMDAwLCAweDRkZDAwMDAwLCAweDRkYTQwMDAwLCAweDRkMTQwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDZlMmYsIDB4NTliYzAwZWEsIDB4OGMwMDA1MTAsCi0JMHgwNDAwMDdmZSwgMHg1OWJlNjBlMCwgMHg1OTMwMDAwNCwgMHg4YzAwMDUyMCwKLQkweDA0MDAwMDBmLCAweDgyMDAwNTAwLCAweGZmZmVmZWZmLCAweDQ4MDI2MDA0LAotCTB4MDQwMWZmN2MsIDB4MDIwMWY4MDAsIDB4MDAxMDEwNWMsIDB4NWMwMjI4MDAsCi0JMHg1YzAzNDgwMCwgMHg1YzAzYTAwMCwgMHg1YzAzMjAwMCwgMHg1YzAyNjAwMCwKLQkweDRhMDM3OGU0LCAweDAwMDAwMDA4LCAweDA0MDFmNzY4LCAweDg0MDAwNTEwLAotCTB4NDgwMjYwMDQsIDB4MDQwMWY3ZjYsIDB4NGQzMDAwMDAsIDB4NGQyYzAwMDAsCi0JMHg0ZDM0MDAwMCwgMHg0ZGE0MDAwMCwgMHg0Y2QwMDAwMCwgMHg1OWJjMDBlYSwKLQkweDhjMDAwNTEwLCAweDA0MDAwN2ZlLCAweDU5YmU2MGUwLCAweDgxMzI2MWMwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMDAwMDQsIDB4OGMwMDA1MjAsCi0JMHgwNDAwMDAxZSwgMHg4MjAwMDUwMCwgMHhmZmZlZmVmZiwgMHg0ODAyNjAwNCwKLQkweDU5MzI2ODA5LCAweDQyMDM0ODAwLCAweDAwMTBiMzQyLCAweDA0MDExMDAwLAotCTB4NGEwM2M4NDAsIDB4MDAxMGIzNDksIDB4NGEwM2M4NDIsIDB4MDAwMDAwMTIsCi0JMHgwNDAxMTAwMCwgMHg0YTAzYzg0MCwgMHgwMDEwYjM1YiwgMHg0YTAzYzg0MiwKLQkweDAwMDAwMGZmLCAweDA0MDExMDAwLCAweDRhMDNjODQwLCAweDAwMTBiNDVhLAotCTB4NGEwM2M4NDIsIDB4MDAwMDAwZmYsIDB4MDIwMWY4MDAsIDB4MDAxMDZlNDYsCi0JMHg1YzAxYTAwMCwgMHg1YzAzNDgwMCwgMHg1YzAyNjgwMCwgMHg1YzAyNTgwMCwKLQkweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDg0MDAwNTEwLCAweDQ4MDI2MDA0LAotCTB4NWMwMWEwMDAsIDB4NWMwMzQ4MDAsIDB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHgxYzAxZjAwMCwgMHg0ZDMwMDAwMCwKLQkweDRkMmMwMDAwLCAweDRkMzQwMDAwLCAweDRjZDAwMDAwLCAweDRkOTAwMDAwLAotCTB4NGRkMDAwMDAsIDB4NGRhNDAwMDAsIDB4NGQxNDAwMDAsIDB4MDQwMWZiZDQsCi0JMHg1OWJjMDBlYSwgMHg4YzAwMDUxMCwgMHgwNDAwMDdmZSwgMHg1OWJlNjBlMCwKLQkweDgxMzI2MWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDU5MzAwMDA0LAotCTB4OGMwMDA1MjAsIDB4MDQwMDAwMGYsIDB4ODIwMDA1MDAsIDB4ZmZmZWZlZmYsCi0JMHg0ODAyNjAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNzViOSwgMHg1YzAyMjgwMCwKLQkweDVjMDM0ODAwLCAweDVjMDNhMDAwLCAweDVjMDMyMDAwLCAweDVjMDFhMDAwLAotCTB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsCi0JMHg4NDAwMDUxMCwgMHg0ODAyNjAwNCwgMHg1YzAyMjgwMCwgMHg1YzAzNDgwMCwKLQkweDVjMDNhMDAwLCAweDVjMDMyMDAwLCAweDVjMDFhMDAwLCAweDVjMDI2ODAwLAotCTB4NWMwMjU4MDAsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg0ZDMwMDAwMCwgMHg0ZDM4MDAwMCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNmMzLCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDA0MDFmZjA1LAotCTB4NTk4ZTYwMGQsIDB4NTljNDAwMDQsIDB4OGMwMDA1MDYsIDB4MDQwMDAwMDQsCi0JMHgwNDAxZjhlNSwgMHg0YTAzODgwNCwgMHgwMDAwMDAwOCwgMHg4MTMyNjFjMCwKLQkweDA0MDAwMDA2LCAweDA0MDFmYjk4LCAweDQyMDI3MDAwLCAweDAwMDAwMDE0LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4NGEwMzc4ZTQsIDB4MDAwMDAwMDIsCi0JMHg1YzAyNzAwMCwgMHg1YzAyNjAwMCwgMHgwNDAxZjZlOCwgMHg0ZDE4MDAwMCwKLQkweDRkMzAwMDAwLCAweDRkMzgwMDAwLCAweDRkOTAwMDAwLCAweDRkZDAwMDAwLAotCTB4NGRhNDAwMDAsIDB4NGQxNDAwMDAsIDB4MDQwMWZlZWEsIDB4NDE3YTMwMDAsCi0JMHg1OWM0MDgwNCwgMHg4MzE4MDQwMCwgMHgwMDEwNmRmNiwgMHg1MDAwMDAwMCwKLQkweDgwMDQwNTAwLCAweDA0MDAwMDFiLCAweDQyMDAwMDAwLCAweDAwMTBiNmM0LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDQwMWZiODEsIDB4NTk5MjYwMDQsCi0JMHgwNDAxZjg2MywgMHg4MzE4MDQwMCwgMHgwMDEwNmRmNiwgMHg1MDAwMDAwMCwKLQkweDQ4MDM4ODA0LCAweDgxMzI2MWMwLCAweDA0MDAwMDBhLCAweDU5MzAwMDA0LAotCTB4OGMwMDA1MGMsIDB4MDQwMjAwMDMsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDMsCi0JMHg0MjAyNzAwMCwgMHgwMDAwMDA0YSwgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwKLQkweDU5YzQwMDA0LCAweDgyMDAwNTAwLCAweDAwZjgwMDAwLCAweDA0MDAwMDA1LAotCTB4ODExYTMwMDAsIDB4ODMxODA0ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDE3ZGQsCi0JMHg0YTAzNzhlNCwgMHgwMDAwMDAwOCwgMHg1YzAyMjgwMCwgMHg1YzAzNDgwMCwKLQkweDVjMDNhMDAwLCAweDVjMDMyMDAwLCAweDVjMDI3MDAwLCAweDVjMDI2MDAwLAotCTB4NWMwMjMwMDAsIDB4MDQwMWY2YjEsIDB4NGQyYzAwMDAsIDB4NGQzNDAwMDAsCi0JMHg1OTMyNjgwOSwgMHg1OThjMDgwMCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwNCwKLQkweDA0MDIwMDA2LCAweDgzOGMxNDAwLCAweDAwMDAwMDA1LCAweDgzOGMxYzAwLAotCTB4MDAwMDAwMDQsIDB4MDQwMWYwMTAsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDEsCi0JMHgwNDAyMDAwNiwgMHg4MzhjMTQwMCwgMHgwMDAwMDAwOSwgMHg4MzhjMWMwMCwKLQkweDAwMDAwMDA4LCAweDA0MDFmMDA4LCAweDgyMDQwNTgwLCAweDAwMDAwMDAyLAotCTB4MDQwMjAwMjgsIDB4ODM4YzE0MDAsIDB4MDAwMDAwMGIsIDB4ODM4YzFjMDAsCi0JMHgwMDAwMDAwYSwgMHg0MTMwNjgwMCwgMHg1ODM0MDAwMCwgMHg4MDAwN2Q0MCwKLQkweDA0MDAwMDIwLCAweDU4M2MwMDA5LCAweDgxMzQwNTgwLCAweDA0MDIwMDA2LAotCTB4NDAzYzY4MDAsIDB4NTgzYzAwMDAsIDB4ODAwMDdkNDAsIDB4MDQwMjA3ZmEsCi0JMHgwNDAxZjAxOCwgMHg0OTMzYzg1NywgMHg0ODNmYzg1NywgMHg1ODNjMDAwMCwKLQkweDQ4MDA2ODAwLCAweDQ5MzA3ODAwLCAweDQ0M2MxMDAwLCAweDUwMGMwMDAwLAotCTB4ODAzYzA1ODAsIDB4MDQwMjAwMDIsIDB4NDQzNDE4MDAsIDB4ODAwMDA1ODAsCi0JMHg0ODAzMTgwZCwgMHg0ODAzMTgwZiwgMHg1OThjMDAwMCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAzLCAweDA0MDAwMDAzLCAweDRhMDMxODAwLCAweDAwMDAwMDAwLAotCTB4ODAwMDA1ODAsIDB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdmYiwgMHg0OTFiYzg1NywKLQkweDU5YzgwODQwLCAweDgyMDQwNTQwLCAweDAwMDAwMDEwLCAweDQ4MDM5MDQwLAotCTB4NTljNDEwMDgsIDB4ODIwODA1MDAsIDB4ZmZmZmZmN2YsIDB4NDgwMzg4MDgsCi0JMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHgwNDAxZmFjMiwgMHgwNDAyMDAwNywKLQkweDA0MDFmYWM2LCAweDA0MDAwMDIyLCAweDQ4MDM4ODA0LCAweDAyMDFmODAwLAotCTB4MDAxMDEwY2EsIDB4MDQwMWYwNDIsIDB4NGEwMzg4MDMsIDB4MDAwMDAwMDgsCi0JMHg1OWM0MDAwMywgMHg4MjAwMDUwMCwgMHgwMDAwMDAwMywgMHgwNDAwMDdmZCwKLQkweDhjMDAwNTAyLCAweDA0MDIwMDA3LCAweDA0MDFmYWI4LCAweDA0MDAwMDE0LAotCTB4NDgwMzg4MDQsIDB4MDIwMWY4MDAsIDB4MDAxMDEwY2EsIDB4MDQwMWYwMzQsCi0JMHg1OWM4MDA0MCwgMHg4NDAwMDU2YSwgMHg0ODAzOTA0MCwgMHg1OWM4MDA0MCwKLQkweDhjMDAwNTJhLCAweDA0MDIwN2ZlLCAweDU5YzQwMDA1LCAweDgyMDAwNTAwLAotCTB4YzAwMDAwMDAsIDB4MDQwMDAwMDYsIDB4NTljNDAwYTMsIDB4ODQwMDA1NDAsCi0JMHg0ODAzODhhMywgMHg0YTAzODgwNSwgMHhjMDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxMDZiLCAweDRhMDNhMDA1LCAweDMwMDAwMDAwLCAweDU5ZDAwMDA2LAotCTB4NGEwM2EwMDUsIDB4MzAwMDAwMDAsIDB4NTk5MDAwMDYsIDB4ODIwMDA1MDAsCi0JMHhmZmZmMDAwMCwgMHg0ODAzMjAwNiwgMHg1OWQwMDAwNSwgMHg4YzAwMDUwNCwKLQkweDA0MDIwN2ZlLCAweDQyMDAwODAwLCAweDAwMDA3NjAwLCAweDgzMTgwNTQwLAotCTB4NjAwMDAwMDAsIDB4NDgwMDA4YTEsIDB4ODExODAwZGMsIDB4NTljODA4NDAsCi0JMHg4MDA0MDU0MCwgMHg0ODAzOTA0MCwgMHg4MjAwMDU0MCwgMHgwMDAwMzAwMCwKLQkweDQ4MDM5MDQwLCAweDU5YzgwMDQwLCAweDgyMDAwNTAwLCAweDAwMDAzMDAwLAotCTB4MDQwMjA3ZmQsIDB4MDIwMWY4MDAsIDB4MDAxMDEwYjgsIDB4ODMxODA0MDAsCi0JMHgwMDEwNmRmNiwgMHg1MDAwMDAwMCwgMHg0ODAzODgwNCwgMHg4MDAwMDU4MCwKLQkweDRkZjAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA1ZDliLCAweDVjMDNlMDAwLAotCTB4NWMwMDEwMDAsIDB4NWMwMDA4MDAsIDB4NDgwYjg4MDgsIDB4NDgwNzkwNDAsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg1OWM4MDg0MCwgMHg4MjA0MDU0MCwKLQkweDAwMDAwMDEwLCAweDQ4MDM5MDQwLCAweDU5YzQxMDA4LCAweDgyMDgwNTAwLAotCTB4ZmZmZmZmN2YsIDB4NDgwMzg4MDgsIDB4NGMwNDAwMDAsIDB4NGMwODAwMDAsCi0JMHg1OWM0MDAwNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwMywgMHgwNDAyMDAxMCwKLQkweDU5YzQwMDA0LCAweDgyMDAwNTAwLCAweDAwMDAwMDBjLCAweDA0MDAwMDA1LAotCTB4NGEwMzg4MDQsIDB4MDAwMDAwMGMsIDB4OGMwMDA1MDQsIDB4MDQwMWYwMjUsCi0JMHg1OWM4MDA0MCwgMHg4NDAwMDU2ZSwgMHg0ODAzOTA0MCwgMHg1OWM4MDA0MCwKLQkweDhjMDAwNTJlLCAweDA0MDIwN2ZlLCAweDA0MDFmMDFlLCAweDRhMDM4ODAzLAotCTB4MDAwMDAwMDgsIDB4NTljNDAwMDMsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDdmZCwgMHg4YzAwMDUwMiwgMHgwNDAyMDAwNiwgMHg1OWM0MDAwNCwKLQkweDRhMDM4ODA0LCAweDAwMDAwMDBjLCAweDhjMDAwNTA0LCAweDA0MDFmMDExLAotCTB4NTljODAwNDAsIDB4ODQwMDA1NmEsIDB4NDgwMzkwNDAsIDB4NTljODAwNDAsCi0JMHg4YzAwMDUyYSwgMHgwNDAyMDdmZSwgMHg1OWM0MDAwNSwgMHg4MjAwMDUwMCwKLQkweGMwMDAwMDAwLCAweDA0MDAwMDA3LCAweDU5YzQwMGEzLCAweDg0MDAwNTQwLAotCTB4NDgwMzg4YTMsIDB4NGEwMzg4MDUsIDB4YzAwMDAwMDAsIDB4ODAwMDA1ODAsCi0JMHg0OTdiMjgwNywgMHg1YzAwMTAwMCwgMHg1YzAwMDgwMCwgMHg0ODBiODgwOCwKLQkweDQ4MDc5MDQwLCAweDFjMDFmMDAwLCAweDVjMDAwMDAwLCAweDRjMDAwMDAwLAotCTB4NDgwM2M4NTcsIDB4NDkxYmM4NTcsIDB4NDkzM2M4NTcsIDB4NGQ5MDAwMDAsCi0JMHg0ZGQwMDAwMCwgMHg0ZGE0MDAwMCwgMHg0ZDE0MDAwMCwgMHgwNDAxZmRkMSwKLQkweDRkZjAwMDAwLCAweDA0MDFmYTcyLCAweDU5OTAwMDA0LCAweDgwMDAwMWMwLAotCTB4MDQwMDAwMTEsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMGYsIDB4NTkzMDAwMDQsCi0JMHg4NDAwMDUyMCwgMHg0ODAyNjAwNCwgMHgwNDAxZmY0ZCwgMHgwNDAyMDAwOSwKLQkweDVjMDNlMDAwLCAweDA0MDAwZGI5LCAweDgwMDAwNTgwLCAweDVjMDIyODAwLAotCTB4NWMwMzQ4MDAsIDB4NWMwM2EwMDAsIDB4NWMwMzIwMDAsIDB4MWMwMWYwMDAsCi0JMHgwNDAxZmNmMSwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0OSwgMHg1OTMwMDAwNCwKLQkweDg0MDAwNTIwLCAweDQ4MDI2MDA0LCAweDhjMDAwNTBjLCAweDAyMDIwODAwLAotCTB4MDAwMjA4ZDgsIDB4NWMwM2UwMDAsIDB4MDQwMDBkYTgsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAyMjgwMCwgMHg1YzAzNDgwMCwgMHg1YzAzYTAwMCwKLQkweDVjMDMyMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDA0MDFmZGE5LAotCTB4NGRmMDAwMDAsIDB4NTk4YzAwMGQsIDB4ODAwMjY1NDAsIDB4MDQwMDAwMTIsCi0JMHg1OTMwMDAwNCwgMHg4NDAwMDUyMCwgMHg0ODAyNjAwNCwgMHgwNDAxZmY4NiwKLQkweDA0MDAwMDE3LCAweDA0MDFmZDA5LCAweDQyMDI3MDAwLCAweDAwMDAwMDEzLAotCTB4NTkzMDAwMDQsIDB4OGMwMDA1MGMsIDB4MDIwMjA4MDAsIDB4MDAwMjA4ZDgsCi0JMHg1YzAzZTAwMCwgMHgwNDAwMGQ4ZCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDgzNmMxNTgwLCAweDAwMDAwMDAxLCAweDA0MDAwN2Y5LAotCTB4ODM2YzE1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMDA3ZjYsIDB4NDIwMDEwMDAsCi0JMHgwMDEwM2Y2MiwgMHgwMjAxZjgwMCwgMHgwMDEwNWNjOSwgMHg1YzAzZTAwMCwKLQkweDA0MDAwZDdlLCAweDgwMDAwNTgwLCAweDFjMDFmMDAwLCAweDRkMzAwMDAwLAotCTB4NGQxODAwMDAsIDB4NGQzYzAwMDAsIDB4MDQwMWZkODIsIDB4NGRmMDAwMDAsCi0JMHg0YTAzNzhlNCwgMHgwMDAwMDAwZiwgMHgwNDAxZmEwMiwgMHg0MTdhMzAwMCwKLQkweDU5OTI2MDA0LCAweDgxMzI2MWMwLCAweDA0MDAwMDEwLCAweDQxN2E3ODAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ3MjgsIDB4MDQwMDAwMGEsIDB4NTkzMDBjMDYsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAwNCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDA2LCAweDA0MDIwMDAzLCAweDQyMDI3ODAwLCAweDAwMDAwMDAyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDg5OTcsIDB4ODExYTMwMDAsIDB4ODMxODA0ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAwMTdlYiwgMHg0MjAwMDgwMCwgMHgwMDAwMDA0MCwKLQkweDAyMDFmODAwLCAweDAwMTAxMzk1LCAweDRhMDM3OGU0LCAweDAwMDAwMDBhLAotCTB4NWMwM2UwMDAsIDB4MDQwMDBkNTUsIDB4NWMwMjc4MDAsIDB4NWMwMjMwMDAsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0ZDMwMDAwMCwKLQkweDA0MDFmZDU4LCAweDRkZjAwMDAwLCAweDU5YzgwODQwLCAweDgyMDQwNTQwLAotCTB4MDAwMDAwMTAsIDB4NDgwMzkwNDAsIDB4NTljNDEwMDgsIDB4ODIwODA1MDAsCi0JMHhmZmZmZmY3ZiwgMHg0ODAzODgwOCwgMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDAzLCAweDA0MDFmOWM1LCAweDU5OGU2MDBkLAotCTB4ODEzMjYxYzAsIDB4MDQwMjBmOWQsIDB4MDQwMDA5Y2EsIDB4NDk3YjI4MDcsCi0JMHgwNDAxZjgwYSwgMHg1YzAwMTAwMCwgMHg1YzAwMDgwMCwgMHg0ODBiODgwOCwKLQkweDg0MDQwZDc0LCAweDQ4MDc5MDQwLCAweDVjMDNlMDAwLCAweDA0MDAwZDMzLAotCTB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NGQzODAwMDAsIDB4NGQxODAwMDAsCi0JMHg0ZDMwMDAwMCwgMHg0ZDkwMDAwMCwgMHg0ZGQwMDAwMCwgMHg0ZGE0MDAwMCwKLQkweDRkMTQwMDAwLCAweDU5YzQxMDA0LCAweDQ4MGJjODU3LCAweDgyMDgwNTAwLAotCTB4MDAwMDNmZjAsIDB4MDQwMDAwMjUsIDB4NDE3YTMwMDAsIDB4NGMwODAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWQ5YiwgMHg1YzAwMTAwMCwgMHg4MjA4MDUwMCwKLQkweDAwMDAwMjEwLCAweDA0MDIwMDA0LCAweDgxMWEzMDAwLCAweDgwMDgxMTAyLAotCTB4MDQwMWY3ZjcsIDB4MDQwMWY5YzYsIDB4NTk5MjYwMDQsIDB4NDkzM2M4NTcsCi0JMHg4MTMyNjFjMCwgMHgwNDAyMDAwNSwgMHg1OWM0MDBhMywgMHg4YzAwMDUxYSwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDA0MDFmZWExLCAweDA0MDAwMDA5LAotCTB4MDQwMWZjNGQsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDksIDB4NTkzMDAwMDQsCi0JMHg4YzAwMDUwYywgMHgwMjAyMDgwMCwgMHgwMDAyMDhkOCwgMHgwNDAxZjAwNywKLQkweDQyMDI3MDAwLCAweDAwMDAwMDRhLCAweDRhMDI2MjAzLCAweDAwMDAwMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4NWMwMjI4MDAsIDB4NWMwMzQ4MDAsCi0JMHg1YzAzYTAwMCwgMHg1YzAzMjAwMCwgMHg1YzAyNjAwMCwgMHg1YzAyMzAwMCwKLQkweDVjMDI3MDAwLCAweDFjMDFmMDAwLCAweDRkMzAwMDAwLCAweDRkMTgwMDAwLAotCTB4NGQ5MDAwMDAsIDB4MDQwMWZjZmYsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDAsCi0JMHg1OThjMDAwMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDk3NCwKLQkweDQxN2EzMDAwLCAweDgxMWIyMGM4LCAweDgzOTMyNDAwLCAweDAwMDBiZjMyLAotCTB4NTk5MDAwMDEsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMjAwMGQsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDdkMCwgMHg1OTkyNjAwNCwgMHg1OTMwMDAxMSwKLQkweDgyMDAwNTAwLCAweGZmZjAwMDAwLCAweDgwMDAwNTQwLCAweDA0MDAwMDAzLAotCTB4NDIwMDA4MDAsIDB4MDAwMDFiNTgsIDB4MDIwMWY4MDAsIDB4MDAxMDVkOGQsCi0JMHg4MTFhMzAwMCwgMHg4MzE4MDQ4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMTdlYSwKLQkweDU5YzgxMDQwLCAweDg0MDgxNTM0LCAweDQ4MGI5MDQwLCAweDA0MDFmY2QzLAotCTB4NWMwMzIwMDAsIDB4NWMwMjMwMDAsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg0ZDkwMDAwMCwgMHg0ZGQwMDAwMCwgMHg0ZGE0MDAwMCwKLQkweDRkMTQwMDAwLCAweDRkMzgwMDAwLCAweDA0MDFmY2QyLCAweDRkZjAwMDAwLAotCTB4NTkzMDAwMDQsIDB4OGMwMDA1M2UsIDB4MDQwMjAwMDcsIDB4OGMwMDA1MjAsCi0JMHgwNDAwMDAyNiwgMHgwMjAxZjgwMCwgMHgwMDEwNjhhMywgMHgwNDAwMDAyMywKLQkweDA0MDFmMDJiLCAweDU5OGMwMDBkLCAweDgxMzAwNTgwLCAweDA0MDAwMDEyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDhhOGEsIDB4MDQwMjAwMjUsIDB4MDQwMWY5MWIsCi0JMHgwNDAwMDAyMywgMHg0ODAzODgwNCwgMHgwNDAxZjk2MSwgMHgwMjAxZjgwMCwKLQkweDAwMTAxMGNhLCAweDAyMDFmODAwLCAweDAwMTA2OGMxLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNDksIDB4NTkzMDAwMDQsIDB4OGMwMDA1MGMsIDB4MDQwMjAwMGQsCi0JMHgwNDAxZjAwZSwgMHg1OWM0MDAwNCwgMHg4YzAwMDUwNCwgMHgwNDAwMDAxNCwKLQkweDRhMDM4ODA0LCAweDAwMDAwMDA0LCAweDA0MDFmYzE4LCAweDQyMDI3MDAwLAotCTB4MDAwMDAwMTMsIDB4NTkzMDAwMDQsIDB4OGMwMDA1MGMsIDB4MDQwMDAwMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg1YzAzZTAwMCwgMHgwNDAwMGM5YiwKLQkweDVjMDI3MDAwLCAweDVjMDIyODAwLCAweDVjMDM0ODAwLCAweDVjMDNhMDAwLAotCTB4NWMwMzIwMDAsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4NWMwM2UwMDAsCi0JMHgwNDAwMGM5MiwgMHg1YzAyNzAwMCwgMHg1YzAyMjgwMCwgMHg1YzAzNDgwMCwKLQkweDVjMDNhMDAwLCAweDVjMDMyMDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NDk3YjI4MDcsIDB4MDQwMWZjOTIsIDB4NTljNDAwYWYsCi0JMHg4MDAwMDFjMCwgMHgwNDAyMDAwNCwgMHgwNDAxZmM4NCwgMHgwMjAxZjAwMCwKLQkweDAwMTAxNTY1LCAweDU5OGMwMDBmLCAweDgyMDAxNDgwLCAweDAwMDAwMDAyLAotCTB4MDQwMjEwMDcsIDB4ODAwMDAwMDAsIDB4NDgwMzE4MGYsIDB4ODAwMDA1ODAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWQ4NiwgMHgwNDAwMDAwZSwgMHgwNDAxZmVkNywKLQkweDA0MDIwMDBjLCAweDA0MDFmZGM1LCAweDA0MDAwMDBhLCAweDAyMDFmODAwLAotCTB4MDAxMGE3ZWUsIDB4MDQwMWY5MTgsIDB4NGQzODAwMDAsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDAxNCwgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwKLQkweDA0MDFmYzZhLCAweDAyMDFmMDAwLCAweDAwMTAxNTY1LCAweDRkOTAwMDAwLAotCTB4NGRkMDAwMDAsIDB4NGRhNDAwMDAsIDB4NGQxNDAwMDAsIDB4NGQzMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNWQ5YiwgMHgwNDAxZmM2YSwgMHg1OWM0MDBhZiwKLQkweDgwMDAwMWMwLCAweDA0MDAwMDI3LCAweDA0MDFmOTA5LCAweDU5OTI2MDA0LAotCTB4NDkzM2M4NTcsIDB4NTkzMDAwMDQsIDB4OGMwMDA1MTYsIDB4MDQwMDAwMGIsCi0JMHgwNDAxZmU4NiwgMHgwNDAyMDAxZiwgMHgwMjAxZjgwMCwgMHgwMDEwNjhjMSwKLQkweDA0MDFmYzUyLCAweDQyMDAwODAwLCAweDgwMDAwODA0LCAweDAyMDFmODAwLAotCTB4MDAxMDY0NjYsIDB4MDQwMWYwMTcsIDB4NDIwMDE4MDAsIDB4MDAwMDc1MzAsCi0JMHgwNDAxZjhjMywgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNWQ4YiwKLQkweDA0MDFmMDEwLCAweDA0MDFmZTc1LCAweDA0MDIwMDBlLCAweDAyMDFmODAwLAotCTB4MDAxMGE3ZWUsIDB4NTkzMDAwMDQsIDB4OGMwMDA1MGMsIDB4MDQwMjAwMDMsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMywgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDRhLCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDVjMDI3MDAwLAotCTB4MDQwMWZjMzYsIDB4NWMwMjYwMDAsIDB4NWMwMjI4MDAsIDB4NWMwMzQ4MDAsCi0JMHg1YzAzYTAwMCwgMHg1YzAzMjAwMCwgMHgwMjAxZjAwMCwgMHgwMDEwMTU2NSwKLQkweDRkOTAwMDAwLCAweDRkZDAwMDAwLCAweDRkYTQwMDAwLCAweDRkMTQwMDAwLAotCTB4NGQzMDAwMDAsIDB4NGQyYzAwMDAsIDB4MDQwMWZjMzIsIDB4MDQwMWY4ZDQsCi0JMHg1OTkyNjAwNCwgMHg0OTMzYzg1NywgMHgwNDAxZjg4MiwgMHgwNDAwMDAxNiwKLQkweDAyMDFmODAwLCAweDAwMTA1ZDliLCAweDgxMzI2MWMwLCAweDA0MDAwMDM0LAotCTB4NTkzMjU4MDgsIDB4ODEyZTU5YzAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwgMHgwNDAyMDAxZCwgMHg1OTJjMDIwOCwKLQkweDg0MDAwNTUwLCAweDQ4MDI1YTA4LCAweDAyMDFmODAwLCAweDAwMTA0ZjI5LAotCTB4MDQwMjAwMjcsIDB4NTkyYzAyMDgsIDB4ODQwMDA1MTAsIDB4NDgwMjVhMDgsCi0JMHgwNDAxZjAyMywgMHgwMjAxZjgwMCwgMHgwMDEwNWQ4YiwgMHgwNDAxZjAyMCwKLQkweDAyMDFmODAwLCAweDAwMTBhN2VlLCAweDA0MDFmZDk5LCAweDU5MmMwMjA4LAotCTB4ODQwMDA1NTAsIDB4NDgwMjVhMDgsIDB4NGQzODAwMDAsIDB4NDIwMjcwMDAsCi0JMHgwMDAwMDA0YSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwKLQkweDAwMDIwOGQ4LCAweDVjMDI3MDAwLCAweDA0MDFmMDExLCAweDU5OTAwMDA2LAotCTB4ODIwMDA1MDAsIDB4ZmZmZjAwMDAsIDB4MDQwMjA3ZWUsIDB4NTljNDA4YWYsCi0JMHg4MjA0MDQ4MCwgMHgwMDAwMDNlOCwgMHgwNDAyMTdlYSwgMHg1OTkwMDAwNiwKLQkweDgyMDAwNDAwLCAweDAwMDEwMDAwLCAweDQ4MDMyMDA2LCAweDAyMDFmODAwLAotCTB4MDAxMDVkOGIsIDB4MDIwMWY4MDAsIDB4MDAxMDNmMzcsIDB4NWMwMjU4MDAsCi0JMHg1YzAyNjAwMCwgMHg1YzAyMjgwMCwgMHg1YzAzNDgwMCwgMHg1YzAzYTAwMCwKLQkweDVjMDMyMDAwLCAweDAyMDFmMDAwLCAweDAwMTA2OTgyLCAweDRkMzAwMDAwLAotCTB4NGQyYzAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4NTk4ZTYwMGQsCi0JMHg0OTMzYzg1NywgMHg1OWM0MTAwNCwgMHg4YzA4MTUwMCwgMHgwNDAwMDAwNywKLQkweDAyMDFmODAwLCAweDAwMTA0ZTBkLCAweDA0MDIwMDA3LCAweDAyMDFmODAwLAotCTB4MDAxMDRmMjksIDB4MDQwMjAwMmYsIDB4MDIwMWY4MDAsIDB4MDAxMDVkODYsCi0JMHgwNDAxZjAyYywgMHg1OThjMDAwZiwgMHg4MDAwMDU0MCwgMHgwNDAyMDAxMSwKLQkweDU5YzQwOGFmLCAweDgyMDQwNDgwLCAweDAwMDAwM2U4LCAweDA0MDIxMDBkLAotCTB4NTk4YzA4MGYsIDB4ODAwNDA4MDAsIDB4NDgwNzE4MGYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWQ4NiwgMHg0MjAwMDAwMCwgMHgwMDEwYjY1MCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDAyMDFmODAwLCAweDAwMTAzZjM3LCAweDA0MDFmMDE5LAotCTB4MDQwMWZkYWQsIDB4ODEzMjYxYzAsIDB4MDQwMjAwMDMsIDB4MDQwMWY4NDksCi0JMHgwNDAxZjAxNCwgMHgwMjAxZjgwMCwgMHgwMDEwYTdlZSwgMHg1OTMwMDQwNiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAzLCAweDA0MDIwMDA3LCAweDU5MzI1ODA4LAotCTB4ODEyZTU5YzAsIDB4MDQwMDAwMDQsIDB4NTkyYzAyMDgsIDB4ODQwMDA1NTAsCi0JMHg0ODAyNWEwOCwgMHgwNDAxZjg1NCwgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDE0LCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDVjMDI3MDAwLAotCTB4NWMwMjU4MDAsIDB4NWMwMjYwMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDY5ODIsCi0JMHg1OWM0MDgwNCwgMHg4MzE4MDQwMCwgMHgwMDEwNmRlYywgMHg1MDAwMDAwMCwKLQkweDgwMDQwNTAwLCAweDFjMDFmMDAwLCAweDU5YzQwODA0LCAweDgzMTgwNDAwLAotCTB4MDAxMDZkZjEsIDB4NTAwMDAwMDAsIDB4ODAwNDA1MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDAwMDIxMCwgMHgwMDAwMDQyMCwgMHgwMDAwMDg0MCwgMHgwMDAwMTA4MCwKLQkweDAwMDAyMTAwLCAweDAwMDA0MDAwLCAweDAwMDA4MDAwLCAweDAwMDEwMDAwLAotCTB4MDAwMjAwMDAsIDB4MDAwNDAwMDAsIDB4MDAwODAwMDAsIDB4MDAxMDAwMDAsCi0JMHgwMDIwMDAwMCwgMHgwMDQwMDAwMCwgMHgwMDgwMDAwMCwgMHg1OTkwMDgwNiwKLQkweDgwMDQwMTIwLCAweDgwMGMwNDgwLCAweDA0MDIxMDA0LCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMDUsIDB4ODIwNDBjMDAsIDB4MDAwMTAwMDAsCi0JMHg0ODA3MjAwNiwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg0ODBiYzg1NywKLQkweDAyMDFmODAwLCAweDAwMTA2OThjLCAweDRkZjAwMDAwLCAweDQ4MGIxODAwLAotCTB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4MWMwMWYwMDAsCi0JMHg0ODAzYzg1NiwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywgMHg0ZGYwMDAwMCwKLQkweDQ5N2IxODBkLCAweDQ5N2IxODAzLCAweDQ5N2IxODBlLCAweDQ5N2IxODBmLAotCTB4NDk3YjE4MTAsIDB4NTk4YzAwMDAsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDAwOSwgMHg4MzZjMDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAyMDAwNCwKLQkweDRhMDMxODAwLCAweDAwMDAwMDA1LCAweDA0MDFmMDAzLCAweDRhMDMxODAwLAotCTB4MDAwMDAwMDAsIDB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsCi0JMHgxYzAxZjAwMCwgMHg1OTMwMDAwNCwgMHg4YzAwMDUwYywgMHgwNDAyMDAwMywKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLCAweDgzMTgwNDgwLAotCTB4MDAwMDAwMDUsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4NDkxYmM4NTcsCi0JMHg4MTFiMjBjOCwgMHg4MzkzMjQwMCwgMHgwMDAwYmYzMiwgMHg4MTFiYTBjYSwKLQkweDgzZDNhNDAwLCAweDAwMDA3NjAwLCAweDgzMTgwNDAwLCAweDAwMTA2ZTQxLAotCTB4NTAwMzQ4MDAsIDB4ODExYTI4YzIsIDB4ODMxNjJjMDAsIDB4MDAwMDYxMDAsCi0JMHgxYzAxZjAwMCwgMHgwMDEwYjU1OSwgMHgwMDEwYjU3MCwgMHgwMDEwYjU4NywKLQkweDAwMTBiNTllLCAweDAwMTBiNWI1LCAweDQ5MzNjODU3LCAweDU5MzAwNDA2LAotCTB4ODIwMDBjODAsIDB4MDAwMDAwMTIsIDB4MDQwMjEwMTYsIDB4NDgwM2M4NTcsCi0JMHgwNDAxMTAwMCwgMHgwYzAxZjAwMSwgMHgwMDEwNmU2MCwgMHgwMDEwNmYwMywKLQkweDAwMTA3MjQ5LCAweDAwMTA3MmNmLCAweDAwMTA2ZjAzLCAweDAwMTA3MjQ5LAotCTB4MDAxMDcyY2YsIDB4MDAxMDZlNjAsIDB4MDAxMDZmMDMsIDB4MDAxMDZlNjAsCi0JMHgwMDEwNmU2MCwgMHgwMDEwNmU2MCwgMHgwMDEwNmU2MCwgMHgwMDEwNmU2MCwKLQkweDAwMTA2ZTYwLCAweDAwMTA2ZTYwLCAweDAwMTA2ZTY2LCAweDAwMTA2ZTY2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNjk4MiwgMHg0MjAwMTAwMCwgMHgwMDEwYjVmNCwKLQkweDUwMDgxMDAwLCAweDQ5MzAxMDBjLCAweDU4MDgwMDAyLCAweDgyMDAwNTgwLAotCTB4MDAwMDAxMDAsIDB4MDQwMjAwM2UsIDB4NTkzMjU4MDgsIDB4ODEyZTU5YzAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTMyNjgwOSwgMHg4MTM2NjljMCwKLQkweDA0MDAwMDI1LCAweDU5MmMwNDBiLCAweDgyMDAwNTAwLCAweDAwMDBlMDAwLAotCTB4MDQwMDAwMDMsIDB4MDQwMWZiYzksIDB4MDQwMWYwMDIsIDB4MDQwMWZiYjksCi0JMHg1OTJjMDAwZCwgMHg4MjAwMDUwMCwgMHgwMDAwMDAwMywgMHgwNDAwMDAwNywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAzLCAweDgwMDAwMDAwLCAweDU4ZDAwODAyLAotCTB4ODAwNDA1NDAsIDB4NDgwMWEwMDIsIDB4NDIwMDEwMDAsIDB4MDAxMGI1ZjQsCi0JMHg1MDA4MTAwMCwgMHg0OTMwMTAwYiwgMHg0OTJjMTAwYSwgMHg4MmQwMDQwMCwKLQkweDAwMDAwMDA2LCAweDQ4MDAxMDAzLCAweDU5MmMwMDBkLCAweDgyMDAwNDAwLAotCTB4MDAwMDAwMDMsIDB4ODAwMDAxMDQsIDB4NDgwMDEwMDQsIDB4NTkyYzAwMGUsCi0JMHg0ODAwMTAwNywgMHg1OTJjMDAwZiwgMHg0ODAwMTAwOCwgMHgwMjAxZjAwMCwKLQkweDAwMTAwOGExLCAweDQyMDI2ODAwLCAweDAwMTBiYzBjLCAweDU5MmMwODBhLAotCTB4NDgwNjY4MDIsIDB4ODIwNDA1MDAsIDB4MDBmZmZmMDAsIDB4MDQwMDAwMDcsCi0JMHg0OTdhNmExMiwgMHg1OWE4MTAxMCwgMHg4MjA4MTUwMCwgMHgwMGZmZmYwMCwKLQkweDgwMDgwNTgwLCAweDA0MDIwN2QwLCAweDgyMDQwZDAwLCAweDAwMDAwMGZmLAotCTB4ODAwNDA4ZDAsIDB4NDgwNjZhMTIsIDB4MDQwMWY3Y2IsIDB4MWMwMWYwMDAsCi0JMHg0ZDJjMDAwMCwgMHg0ZDMwMDAwMCwgMHg0YzU4MDAwMCwgMHg0YzU0MDAwMCwKLQkweDRjNTAwMDAwLCAweDU4MzI1ODBhLCAweDgxMmU1OWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTgzMDAwMDIsIDB4NGEwMDYwMDIsIDB4MDAwMDAxMDAsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDEwMCwgMHgwNDAyMDAyMCwgMHg1ODMwMDAwYiwKLQkweDU4MzI2MDBjLCAweDgxMzAwNTgwLCAweDA0MDIwMDEyLCAweDA0MDFmODJmLAotCTB4MDQwMjAwMTQsIDB4NTkyYzA4MGQsIDB4ODIwNDBjMDAsIDB4MDAwMDAwMDMsCi0JMHg4MDA0MDkwNCwgMHg0MDA0YjAwMCwgMHg0MjAwYTAwMCwgMHgwMDEwYjM0OSwKLQkweDQwNTBhODAwLCAweDAyMDFmODAwLCAweDAwMTBhOTRmLCAweDQyMDAxMDAwLAotCTB4MDAwMGRjMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDc2M2IsIDB4MDQwMWYwMDUsCi0JMHg0ODAzYzg1NywgMHg0OTMzYzg1NywgMHgwNDAxZjgxYywgMHgwNDAwMGY5MywKLQkweDVjMDBhMDAwLCAweDVjMDBhODAwLCAweDVjMDBiMDAwLCAweDVjMDI2MDAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NTgzMDAwMGIsIDB4NTgzMjYwMGMsCi0JMHg0ODAzYzg1NywgMHg0OTMzYzg1NywgMHg4MTMwMDU4MCwgMHgwNDAyMDdmMSwKLQkweDA0MDFmODBlLCAweDA0MDIwN2YzLCAweDQ4MDNjODU3LCAweDAyMDFmODAwLAotCTB4MDAxMDY2MTksIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwKLQkweDAwMTA3Njk4LCAweDA0MDFmN2U3LCAweDAyMDFmODAwLCAweDAwMTA2OThjLAotCTB4NGRmMDAwMDAsIDB4NTk4YzAwMGQsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMDksCi0JMHg1OThjMDAwNSwgMHg4MTMwMDU4MCwgMHgwNDAyMDAwNiwgMHg1YzAzZTAwMCwKLQkweDAyMDAwODAwLCAweDAwMTA2OTgyLCAweDgwMDAwNTgwLCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTcsIDB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg1OTMwMDQwMywKLQkweDgyMDAwYzgwLCAweDAwMDAwMDU2LCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4NDgwM2M4NTcsIDB4MGMwMWYwMDEsIDB4MDAxMDcwN2EsIDB4MDAxMDcwOTUsCi0JMHgwMDEwNzBhNiwgMHgwMDEwNzFhOSwgMHgwMDEwNzE2OSwgMHgwMDEwNzE2ZCwKLQkweDAwMTA3MTdlLCAweDAwMTA3MTkyLCAweDAwMTA3MTg3LCAweDAwMTA3MTkyLAotCTB4MDAxMDcxY2QsIDB4MDAxMDcxOTIsIDB4MDAxMDcyMGYsIDB4MDAxMDcxOTIsCi0JMHgwMDEwNzIxZCwgMHgwMDEwNzE5MiwgMHgwMDEwNzE4NywgMHgwMDEwNzE5MiwKLQkweDAwMTA3MjIxLCAweDAwMTA2ZjYwLCAweDAwMTA2ZjYwLCAweDAwMTA2ZjYwLAotCTB4MDAxMDZmNjAsIDB4MDAxMDZmNjAsIDB4MDAxMDZmNjAsIDB4MDAxMDZmNjAsCi0JMHgwMDEwNmY2MCwgMHgwMDEwNmY2MCwgMHgwMDEwNmY2MCwgMHgwMDEwNmY2MCwKLQkweDAwMTA3MmVkLCAweDAwMTA3MzBjLCAweDAwMTA3MzE2LCAweDAwMTA2ZjYwLAotCTB4MDAxMDczMmMsIDB4MDAxMDcxN2UsIDB4MDAxMDZmNjAsIDB4MDAxMDcxN2UsCi0JMHgwMDEwNzE5MiwgMHgwMDEwNmY2MCwgMHgwMDEwNzBhNiwgMHgwMDEwNzFhOSwKLQkweDAwMTA2ZjYwLCAweDAwMTA3MzdjLCAweDAwMTA3MTkyLCAweDAwMTA2ZjYwLAotCTB4MDAxMDczOGMsIDB4MDAxMDcxOTIsIDB4MDAxMDZmNjAsIDB4MDAxMDcxODcsCi0JMHgwMDEwNzA2YiwgMHgwMDEwNmY2MiwgMHgwMDEwNmY2MCwgMHgwMDEwNzNhMywKLQkweDAwMTA3M2RjLCAweDAwMTA3NDU2LCAweDAwMTA2ZjYwLCAweDAwMTA3NDY2LAotCTB4MDAxMDcxN2MsIDB4MDAxMDc0NTksIDB4MDAxMDZmNjAsIDB4MDAxMDczMzgsCi0JMHgwMDEwNzQ3ZiwgMHgwMDEwNmY2MCwgMHgwMDEwNzRiNCwgMHgwMDEwNzUwNywKLQkweDAwMTA2ZjYwLCAweDAwMTA2Zjc3LCAweDAwMTA2ZmRkLCAweDAwMTA2ZmVhLAotCTB4MDAxMDZmNjAsIDB4MDAxMDcxN2UsIDB4MDAxMDZmNjAsIDB4MDAxMDcwMzEsCi0JMHgwMDEwNzAzYywgMHgwMDEwNmY2MCwgMHgwMDEwNmY2MCwgMHgwMDEwNmY4YiwKLQkweDAwMTA2ZmIwLCAweDAwMTA3NTQ2LCAweDAwMTA3NTg3LCAweDAwMTA3NWFkLAotCTB4MDAxMDZmNjAsIDB4MDAxMDZmNjAsIDB4MDAxMDZmNjAsIDB4MDAxMDc1N2IsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHgwNDAxZmFkMiwgMHg1OTMyNTgwOCwKLQkweDU5MmMwMDA5LCAweDQ4MDFhMDA2LCAweDU5MmMwMDBhLCAweDQ4MDFhMDA3LAotCTB4NTkyYzAwMGIsIDB4NDgwMWEwMDgsIDB4NTkyYzAwMGMsIDB4NDgwMWEwMDksCi0JMHg1OTJjMDAwZCwgMHg0ODAxYTAwYSwgMHg0OTc5YTAwYiwgMHg1OTJjMDgwOSwKLQkweDgyMDQwZDAwLCAweDAwMDAwZmZmLCAweDgwMDQwOTA0LCAweDQyMDAxMDAwLAotCTB4MDAwMGRjMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDc2M2IsIDB4NGEwMjYyMDIsCi0JMHgwMDAwZmZmZiwgMHgwNDAxZmFiYiwgMHg0ZDJjMDAwMCwgMHg0YTAxYTAwNiwKLQkweDA1MDAwMDAwLCAweDU5MzI1ODA4LCAweDU5MmMwMDA5LCAweDQ4MDFhMDA3LAotCTB4NTkyYzAwMGEsIDB4NDgwMWEwMDgsIDB4NTkyYzAwMGIsIDB4NDgwMWEwMDksCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNCwgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwKLQkweDVjMDI1ODAwLCAweDAyMDFmMDAwLCAweDAwMTA3NjNiLCAweDRjNTgwMDAwLAotCTB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGQyYzAwMDAsIDB4MDQwMWZhYTUsCi0JMHg1OTMyNTgwOCwgMHg1OTMwMDQwYiwgMHg4MDAwMDBjMiwgMHg0MjAwYTgwMCwKLQkweDAwMTBiMzQ5LCAweDU5MmNiMjA1LCAweDgzMmNhNDAwLCAweDAwMDAwMDA2LAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NDA1ODAwMDAsIDB4ODA1NGFjMDAsCi0JMHg1OTJjMDAwMSwgMHg4MDAwMDU0MCwgMHgwNDAwMDAwMywgMHg0MDAyNTgwMCwKLQkweDA0MDFmN2Y1LCAweDQyMDBhMDAwLCAweDAwMTBiMzQ5LCAweDQwNTBhODAwLAotCTB4NTkzMGI0MGIsIDB4MDIwMWY4MDAsIDB4MDAxMGE5NGYsIDB4NTkzMDBjMGIsCi0JMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHg1YzAyNTgwMCwgMHg1YzAwYTgwMCwKLQkweDVjMDBiMDAwLCAweDVjMDBhMDAwLCAweDAyMDFmMDAwLCAweDAwMTA3NjNiLAotCTB4NGM1ODAwMDAsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGQyYzAwMDAsCi0JMHg0MjAzNDgwMCwgMHgwMDEwYjM0MiwgMHgwNDAxZmE4YywgMHg1OTMyNTgwOCwKLQkweDU5MmMwODAyLCAweDQ4MDdjODU3LCAweDQwMDQxMDAwLCAweDgwMDQwOTA0LAotCTB4ODIwODE1MDAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDgsIDB4ODAwNDA4MDAsCi0JMHg4MjA4MTU4MCwgMHgwMDAwMDAwMywgMHg4MDA4MTAwMCwgMHg1OGQwMDAwMiwKLQkweDgwMDgwNTQwLCAweDQ4MDFhMDAyLCAweDRhMDI1ODA1LCAweDAyMDAwMDAwLAotCTB4ODJkMGFjMDAsIDB4MDAwMDAwMDYsIDB4NTkyY2IwMTEsIDB4ODMyY2E0MDAsCi0JMHgwMDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg0MDU4MDAwMCwKLQkweDgwNTRhYzAwLCAweDU5MmU1ODAxLCAweDQxNzgwMDAwLCAweDgxMmU1ZDQwLAotCTB4MDQwMjA3ZjYsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4NWMwMjU4MDAsCi0JMHg1YzAwYTgwMCwgMHg1YzAwYjAwMCwgMHg1YzAwYTAwMCwgMHgwMjAxZjAwMCwKLQkweDAwMTA3NjNiLCAweDA0MDFmYTU3LCAweDRhMDFhMDA2LCAweDc4MDAwMDAwLAotCTB4NTkzMDAwMWMsIDB4ODQwMDAxYzAsIDB4NDgwMWE0MDcsIDB4NDk3OWEyMDcsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwMiwgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwKLQkweDAyMDFmMDAwLCAweDAwMTA3NjNiLCAweDRjNTgwMDAwLCAweDRjNTQwMDAwLAotCTB4NGM1MDAwMDAsIDB4MDQwMWZhNTUsIDB4NGEwMWEwMDYsIDB4MDIwMDAwMDAsCi0JMHg1OWE4MDAwMiwgMHg0ODAxYTAwOCwgMHg1OWE4MDAwMywgMHg0ODAxYTAwOSwKLQkweDU5YTgwMDAwLCAweDQ4MDFhMDBhLCAweDU5YTgwMDAxLCAweDQ4MDFhMDBiLAotCTB4NTkzMDAwMWMsIDB4ODIwMDBkODAsIDB4MDAwMGUwMDAsIDB4MDQwMDAwMTYsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwZGYwMCwgMHgwNDAwMDAwNiwgMHg0YTAxYTQwNywKLQkweDAwMDAwMDEwLCAweDQyMDAwODAwLCAweDAwMDAwMDA2LCAweDA0MDFmMDI3LAotCTB4NGEwM2M4NDAsIDB4MDAxMGIyZTcsIDB4NGEwM2M4NDIsIDB4MDAwMDAwMGQsCi0JMHg0MjAwMTgwMCwgMHgwMDEwYjJlNywgMHgwMjAxZjgwMCwgMHgwMDEwMDdmNSwKLQkweDQyMDAwMDAwLCAweDAwMDBkZjAwLCAweDQyMDBhMDAwLCAweDAwMTBiMmU3LAotCTB4MDQwMWYwMGQsIDB4NGEwM2M4NDAsIDB4MDAxMGIyZjQsIDB4NGEwM2M4NDIsCi0JMHgwMDAwMDAwZCwgMHg0MjAwMTgwMCwgMHgwMDEwYjJmNCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwN2Y1LCAweDQyMDAwMDAwLCAweDAwMDBlMDAwLCAweDQyMDBhMDAwLAotCTB4MDAxMGIyZjQsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMTAsIDB4NDgwMWE0MDcsCi0JMHg0YTAxYTIwNywgMHgwMDAwMDAzNCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwZCwKLQkweDgyZDBhYzAwLCAweDAwMDAwMDBjLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMTMsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsCi0JMHg1YzAwYTAwMCwgMHg1YzAwYTgwMCwgMHg1YzAwYjAwMCwgMHgwMjAxZjAwMCwKLQkweDAwMTA3NjNiLCAweDA0MDFmYTAzLCAweDRhMDFhMDA2LCAweDYzMDAwMDI4LAotCTB4NTkzMDAwMWMsIDB4NDgwMWEwMDcsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDIsCi0JMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwMjAxZjAwMCwgMHgwMDEwNzYzYiwKLQkweDA0MDFmYTA2LCAweDQxNzgwMDAwLCAweDQxNzgwODAwLCAweDQyMDAyMDAwLAotCTB4MDAwODAwMDAsIDB4MGMwMWY4MWIsIDB4ODAwMDAwMDAsIDB4ODAwNDA4MDAsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAwYywgMHg1OTg0MTgwMiwgMHg4YzBjMWQwMCwKLQkweDA0MDIwMDA4LCAweDQyMDAyMDAwLCAweDAwMDUwMDAwLCAweDBjMDFmODExLAotCTB4ODAwMDAwMDAsIDB4ODAwNDA4MDAsIDB4ODIwODE0MDAsIDB4MDAwMDAwMDQsCi0JMHg4MjA4MDU0MCwgMHgwMjAwMDAwMCwgMHg0ODAxYTAwNiwgMHg4MDA0MDhlMCwKLQkweDU5MzAwMDFjLCAweDgwMDQwNTQwLCAweDQ4MDFhMDA3LCAweDgwMDgwOTA0LAotCTB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDc2M2IsCi0JMHgwMDEwNzA2MSwgMHgwMDEwNzA2MywgMHgwMDEwNzA2NSwgMHgwMDEwNzA2NywKLQkweDAwMTA3MDY5LCAweDQ4MTFhMDA4LCAweDFjMDFmMDAwLCAweDQ4MTFhMDA5LAotCTB4MWMwMWYwMDAsIDB4NDgxMWEwMGEsIDB4MWMwMWYwMDAsIDB4NDgxMWEwMGIsCi0JMHgxYzAxZjAwMCwgMHg0ODExYTAwYywgMHgxYzAxZjAwMCwgMHg0YTAyNjAwOSwKLQkweDAwMTBiYzBjLCAweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4ODAwMDAwZDAsIDB4NDIwMjY4MDAsIDB4MDAxMGJjMGMsIDB4NDgwMjZhMTIsCi0JMHgwNDAxZmEzYywgMHg0MTc4MDgwMCwgMHg0MjAwMTAwMCwgMHgwMDAwNWMwMCwKLQkweDAyMDFmMDAwLCAweDAwMTA3NjNiLCAweDA0MDFmOWJhLCAweDRhMDFhMDA2LAotCTB4NTIwMDAwMDAsIDB4NDk3OWEwMDcsIDB4NTk5YzAwMTcsIDB4OGMwMDA1MDAsCi0JMHgwNDAwMDAwNSwgMHg1OTljMDQwMiwgMHgwMjAxZjgwMCwgMHgwMDEwMTY0NCwKLQkweDQ4MDVhMDA3LCAweDU5YTgwMDAyLCAweDQ4MDFhMDA4LCAweDU5YTgwMDAzLAotCTB4NDgwMWEwMDksIDB4NTlhODAwMDAsIDB4NDgwMWEwMGEsIDB4NTlhODAwMDEsCi0JMHg0ODAxYTAwYiwgMHg1OWE4MDAxMCwgMHg0ODAxYTAwYywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA3LCAweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDc2M2IsIDB4NGEwMjYyMDIsIDB4MDAwMGZmZmYsIDB4MDQwMWY5OWQsCi0JMHg0YTAxYTAwNiwgMHgwNTAwMDAwMCwgMHg1OWE4MDAxMCwgMHg0ODAxYTAwNywKLQkweDU5YTgwMDAyLCAweDU5YTgwODAzLCAweDQ4MDFhMDA4LCAweDQ4MDVhMDA5LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNzYzYiwgMHg0YTAyNjIwMiwgMHgwMDAwZmZmZiwKLQkweDA0MDFmOThjLCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDQ3NDUsIDB4NWMwMjc4MDAsIDB4NGEwMWEwMDYsIDB4MDMwMDAwMDAsCi0JMHg1OTM0MDQwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDdmZSwgMHgwNDAyMDA2ZSwKLQkweDRhMDFhMDA2LCAweDA0MDAwMDAwLCAweDgxYTQwODAwLCAweDRhMDAwODAwLAotCTB4MjJmZmZmZmUsIDB4NTkzNDAwMGEsIDB4ODQwMDA1MDAsIDB4NDgwMjY4MGEsCi0JMHg1OWM0MTAwMiwgMHg4NDA4MTUwYywgMHg0ODBiODgwMiwgMHg1OWE4MDAyNiwKLQkweDhjMDAwNTA4LCAweDA0MDAwMDEwLCAweDU5YTgwMDJhLCAweDQ4MDFhMDA3LAotCTB4NTlhODAwMmIsIDB4ODIwMDA1MDAsIDB4ZmZmZjIwMDAsIDB4NTk5YzA4MTgsCi0JMHg4YzA0MGQxNiwgMHgwNDAwMDAwMiwgMHg4NDAwMDU2YSwgMHg0ODAxYTAwOCwKLQkweDRhMDFhMDA5LCAweDAwMDAyNzEwLCAweDU5YTgwMDJkLCAweDQ4MDFhMDBhLAotCTB4MDQwMWYwMzksIDB4NTlhODAwMmEsIDB4NDgwMWEwMDcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGUwZCwgMHgwNDAyMDAwOSwgMHg0OTdiODg4MCwgMHg4MjAwMDUwMCwKLQkweDAwMDBmZmZmLCAweDRjMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAxNjcwLAotCTB4NWMwMDAwMDAsIDB4NDgwMzg4ODAsIDB4NTlhODAwMmIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGUwZCwgMHgwNDAyMDAwNCwgMHg4MjAwMDUwMCwgMHgzN2ZmZmZmZiwKLQkweDA0MDFmMDAzLCAweDgyMDAwNTAwLCAweDNmZmZmZmZmLCAweDU5OWMwODE4LAotCTB4OGMwNDBkMTYsIDB4MDQwMDAwMDIsIDB4ODQwMDA1NmEsIDB4NTlhODA4MDUsCi0JMHg4YzA0MGQxMCwgMHgwNDAwMDAxOSwgMHg1OTMwMGMwMywgMHg4MjA0MTU4MCwKLQkweDAwMDAwMDUxLCAweDA0MDAwMDE1LCAweDgyMDQxNTgwLCAweDAwMDAwMDMxLAotCTB4MDQwMDAwMTIsIDB4NGM1ODAwMDAsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwNCwgMHg0MjAwYTAwMCwgMHgwMDEwYjZmOSwKLQkweDgyZDBhYzAwLCAweDAwMDAwMDFmLCAweDRjMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMGE5M2UsIDB4NWMwMDAwMDAsIDB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsCi0JMHg1YzAwYjAwMCwgMHg4NDAwMDU3YSwgMHg0ODAxYTAwOCwgMHg0OTc5YTAwOSwKLQkweDQ5NzlhMDBhLCAweDU5YTgwMDAyLCAweDU5YTgwODAzLCAweDQ4MDFhMDBiLAotCTB4NDgwNWEwMGMsIDB4NTlhODAwMDAsIDB4NTlhODA4MDEsIDB4NDgwMWEwMGQsCi0JMHg0ODA1YTAwZSwgMHg0OTc5YTAwZiwgMHg0OTc5YTAxMCwgMHg0OTc5YTAxMSwKLQkweDQ5NzlhMDEyLCAweDQ5NzlhMDEzLCAweDQ5NzlhMDE0LCAweDQ5NzlhMDE1LAotCTB4NDk3OWEwMTYsIDB4NTlhODAwMmUsIDB4ODQwMDA1NzYsIDB4NDgwMWEwMTcsCi0JMHg1OWE4MDAyZiwgMHg0ODAxYTAxOCwgMHg0OTc5YTAxOSwgMHg0OTc5YTAxYSwKLQkweDA0MDFmMDQzLCAweDU5YTgwMDI2LCAweDhjMDAwNTA4LCAweDA0MDAwMDBkLAotCTB4NTlhODAwMmEsIDB4ODIwMDA1MDAsIDB4MDAwMGZmZmYsIDB4NTljNDA4ODAsCi0JMHg4MDA0MGQ4MCwgMHgwNDAwMDAwNywgMHg0OTdiODg4MCwgMHg0YzAwMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxNjcwLCAweDVjMDAwMDAwLCAweDQ4MDM4ODgwLAotCTB4NTlhODAwMmEsIDB4NDgwMWEwMDcsIDB4NGM2NDAwMDAsIDB4NGQyYzAwMDAsCi0JMHg1OWE4YzgyYiwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAwZCwKLQkweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDBhLCAweDU5MmMwMjA3LAotCTB4OGMwMDA1MGUsIDB4MDQwMDAwMDcsIDB4ODI2NGNkMDAsIDB4MDAwMGZmZmYsCi0JMHg1OTJjMDAwOSwgMHg4MjAwMDUwMCwgMHhmZmZmMDAwMCwgMHg4MDY0Y2Q0MCwKLQkweDQ4NjVhMDA4LCAweDVjMDI1ODAwLCAweDVjMDBjODAwLCAweDU5YTgwMDJjLAotCTB4NDgwMWEwMDksIDB4NTlhODAwMmQsIDB4NDgwMWEwMGEsIDB4NTlhODAwMDIsCi0JMHg1OWE4MDgwMywgMHg0ODAxYTAwYiwgMHg0ODA1YTAwYywgMHg1OWE4MDAwMCwKLQkweDU5YTgwODAxLCAweDQ4MDFhMDBkLCAweDQ4MDVhMDBlLCAweDQ5NzlhMDBmLAotCTB4NDk3OWEwMTAsIDB4NDk3OWEwMTEsIDB4NDk3OWEwMTIsIDB4NDk3OWEwMTMsCi0JMHg0OTc5YTAxNCwgMHg0OTc5YTAxNSwgMHg0OTc5YTAxNiwgMHg1OWE4MDAyZSwKLQkweDQ4MDFhMDE3LCAweDU5YTgwMDJmLCAweDQ4MDFhMDE4LCAweDU5YTgwMDMwLAotCTB4NDgwMWEwMTksIDB4NTlhODAwMzEsIDB4NDgwMWEwMWEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAxZCwgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwMjAxZjAwMCwKLQkweDAwMTA3NjNiLCAweDA0MDFmOGNiLCAweDRhMDFhMDA2LCAweDUwMDAwMDAwLAotCTB4MDQwMWY3YjUsIDB4MDQwMWY4YzcsIDB4NGEwMWE0MDYsIDB4MjEwMDAwMTAsCi0JMHg0YTAxYTIwNiwgMHgwMDAwMDAxNCwgMHg0OTc5YTAwNywgMHg0OTc5YTAwOCwKLQkweDQ5NzlhMDA5LCAweDQ5NzlhMDBhLCAweDQyMDAwODAwLCAweDAwMDAwMDA1LAotCTB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDc2M2IsCi0JMHgwNDAxZjhiZiwgMHgwNDAxZjAwMiwgMHgwNDAxZjhjNCwgMHg0YTAxYTAwNiwKLQkweDAyMDAwMDAwLCAweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDQyMDAxMDAwLAotCTB4MDAwMGRjMDAsIDB4MDIwMWYwMDAsIDB4MDAxMDc2M2IsIDB4MDQwMWY4YmIsCi0JMHg0YTAxYTAwNiwgMHgwMjAwMDAwMCwgMHg1OTMwMDQwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDMxLCAweDA0MDIwNzk0LCAweDgxYTQwODAwLCAweDRhMDAwODAxLAotCTB4MDBmZmZmZmUsIDB4MDQwMWY3MmIsIDB4MDQwMWY4YjAsIDB4NGEwMWEwMDYsCi0JMHgwMTAwMDAwMCwgMHg1OTMwMDQxYSwgMHg4MDAwMDU0MCwgMHgwNDAwMDAwMywKLQkweDQ4MDFhNDA3LCAweDA0MDFmMDAzLCAweDRhMDFhNDA3LCAweDAwMDAwMDAzLAotCTB4NTkzMDAyMWEsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMDMsIDB4NDgwMWEyMDcsCi0JMHgwNDAxZjAwMywgMHg0YTAxYTIwNywgMHgwMDAwMmEwMCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAyLCAweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDc2M2IsIDB4NGEwMjYyMDIsIDB4MDAwMGZmZmYsIDB4MDQwMWY4ODksCi0JMHg0YTAxYTQwNiwgMHgwMDAwMjAxMCwgMHg0YTAxYTIwNiwgMHgwMDAwMDAxNCwKLQkweDRhMDFhNDA3LCAweDAwMDAwODAwLCAweDRhMDFhMjA3LCAweDAwMDAyMDAwLAotCTB4ODAwMDA1ODAsIDB4NTk5YzA4MTcsIDB4OGMwNDBkMGEsIDB4MDQwMjAwMDMsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAyMCwgMHg4YzA0MGQwOCwgMHgwNDAwMDAwMywKLQkweDgyMDAwNTQwLCAweDAwMDAwMDEwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAyLAotCTB4NTkzNDA4MGEsIDB4OGMwNDBkMTQsIDB4MDQwMDAwMDUsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDM4MCwgMHg4MDA0MDU0MCwgMHgwNDAxZjAwNiwgMHg1OTljMDgxOCwKLQkweDhjMDQwZDE4LCAweDA0MDAwMDAzLCAweDgyMDAwNTQwLCAweDAwMDAwMzgwLAotCTB4MDQwMWYwM2MsIDB4MDQwMWY4NzUsIDB4NGEwMWE0MDYsIDB4MDAwMDAyMTAsCi0JMHg0YTAxYTIwNiwgMHgwMDAwMDAxNCwgMHg0YTAxYTQwNywgMHgwMDAwMDgwMCwKLQkweDU5MzQwMDBhLCAweDhjMDAwNTE2LCAweDA0MDAwMDE0LCAweDU5MzQwYzA1LAotCTB4ODIwNDA1MDAsIDB4MDAwMDAwMzAsIDB4MDQwMDAwMTMsIDB4NTkzNDBhMDUsCi0JMHg4MjA0MDUwMCwgMHgwMDAwYzAwMCwgMHgwNDAyMDAwOSwgMHg4YzA0MGQxYSwKLQkweDA0MDAwMDA0LCAweDRhMDFhMjA3LCAweDAwMDAyMTAwLCAweDA0MDFmMDBjLAotCTB4NGEwMWEyMDcsIDB4MDAwMDAxMDAsIDB4MDQwMWYwMDksIDB4NGEwMWEyMDcsCi0JMHgwMDAwMDQwMCwgMHgwNDAxZjAwNiwgMHg0YTAxYTIwNywgMHgwMDAwMDcwMCwKLQkweDA0MDFmMDAzLCAweDRhMDFhMjA3LCAweDAwMDAwODAwLCAweDgwMDAwNTgwLAotCTB4NTk5YzA4MTcsIDB4OGMwNDBkMGEsIDB4MDQwMjAwMDMsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAyMCwgMHg4YzA0MGQwOCwgMHgwNDAwMDAwMywgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDEwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAyLCAweDU5MzQwYTAwLAotCTB4OGMwNDBkMGUsIDB4MDQwMDAwMGIsIDB4ODQwMDA1NTAsIDB4NTk5YzEwMTcsCi0JMHg4YzA4MTUwYSwgMHgwNDAyMDAwNCwgMHg4YzA0MGQwYSwgMHgwNDAwMDAwMiwKLQkweDg0MDAwNTRlLCAweDhjMDQwZDFjLCAweDA0MDAwMDAyLCAweDg0MDAwNTUyLAotCTB4NDgwMWEyMGEsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsIDB4NDIwMDEwMDAsCi0JMHgwMDAwZGMwMCwgMHgwMjAxZjAwMCwgMHgwMDEwNzYzYiwgMHgwNDAxZjgzMywKLQkweDRhMDFhMDA2LCAweDAyMTAwMDE0LCAweDRhMDFhMDA3LCAweDAxMDAwMDAwLAotCTB4NDk3OWEwMDgsIDB4NDk3OWEwMDksIDB4NDk3OWEwMGEsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNSwgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwMjAxZjAwMCwKLQkweDAwMTA3NjNiLCAweDA0MDFmODI1LCAweDRhMDFhMDA2LCAweDAyMDAwMDAwLAotCTB4MDQwMWY2NWQsIDB4NDkzM2M4NTcsIDB4MDQwMWY4MjAsIDB4NGEwMWEwMDYsCi0JMHgwMTAwMDAwMCwgMHg0YTAxYTQwNywgMHgwMDAwMDAwYiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAyLCAweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDc2M2IsIDB4NDIwMDUwMDAsIDB4MzIwMDAwMDAsIDB4NDIwMDYwMDAsCi0JMHgwODI5MDAwMCwgMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjNlNiwKLQkweDQyMDA1MDAwLCAweDIyMDAwMDAwLCAweDQyMDA2MDAwLCAweDAxMjkwMDAwLAotCTB4NDE3ODY4MDAsIDB4NDE3ODc4MDAsIDB4MDQwMWYzZGYsIDB4NDIwMDUwMDAsCi0JMHgzMzAwMDAwMCwgMHg0MjAwNjAwMCwgMHgwODk4MDAwMCwgMHg0MTc4NjgwMCwKLQkweDQxNzg3ODAwLCAweDA0MDFmM2Q4LCAweDQyMDA1MDAwLCAweDIzMDAwMDAwLAotCTB4NDIwMDYwMDAsIDB4MDE5ODAwMDAsIDB4NDE3ODY4MDAsIDB4NDE3ODc4MDAsCi0JMHgwNDAxZjNkMSwgMHg1OTMwMDQwMywgMHg4MjAwMGM4MCwgMHgwMDAwMDA4NSwKLQkweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDgyMDAwYzgwLCAweDAwMDAwMDkzLAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4ODIwMDA0ODAsIDB4MDAwMDAwODUsCi0JMHgwYzAxZjAwMSwgMHgwMDEwNzI2MywgMHgwMDEwNzI2NSwgMHgwMDEwNzI3MiwKLQkweDAwMTA3MjYzLCAweDAwMTA3MjYzLCAweDAwMTA3MjYzLCAweDAwMTA3MjYzLAotCTB4MDAxMDcyNjMsIDB4MDAxMDcyNjMsIDB4MDAxMDcyNjMsIDB4MDAxMDcyNjMsCi0JMHgwMDEwNzI2MywgMHgwMDEwNzI2MywgMHgwMDEwNzI3ZiwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDQ5MzNjODU3LCAweDA0MDFmODUxLCAweDU5MzAwMDFjLAotCTB4NDgwMWEwMDQsIDB4NDgwMWEwMDcsIDB4NDk3OWE0MDgsIDB4NGEwMWEyMDgsCi0JMHgwMDAwZmZmZiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywgMHg0MjAwMTAwMCwKLQkweDAwMDBkYzAwLCAweDA0MDFmM2NhLCAweDQ5MzNjODU3LCAweDA0MDFmODUwLAotCTB4NTkzMDAwMWMsIDB4NDgwMWEwMDQsIDB4NGEwMWE0MDYsIDB4MDAwMDAwMDMsCi0JMHg0YTAxYTIwNiwgMHgwMDAwMDMwMCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMSwKLQkweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDA0MDFmM2JkLCAweDRkMmMwMDAwLAotCTB4NTkzMjU4MDgsIDB4NDkzM2M4NTcsIDB4NDkyZmM4NTcsIDB4ODEyZTU5YzAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTM0MGExMiwgMHg4MjA0MGQwMCwKLQkweDAwMDBmZjAwLCAweDU5MmMwMDBhLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4OTAwMDAxYzAsIDB4ODAwNDA1NDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMTEsCi0JMHg0NDAzNDgwMCwgMHg4MWE1YTAwMCwgMHg0MjAwMTAwMCwgMHgwMDAwMDAwOSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDU5MmMwMDA5LCAweDgyMDAwNTAwLAotCTB4ZmYwMDAwMDAsIDB4ODIwMDFkODAsIDB4ODQwMDAwMDAsIDB4MDQwMDAwMDksCi0JMHg4MjAwMWQ4MCwgMHg4NTAwMDAwMCwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDQyMDAxMDAwLCAweDAwMDAwMDA3LCAweDQyMDAwODAwLCAweDAwMDAwMDAxLAotCTB4ODMyYzFjMDAsIDB4MDAwMDAwMDksIDB4NTAwYzAwMDAsIDB4NDQwMWEwMDAsCi0JMHg4MDBjMTgwMCwgMHg4MGQxYTAwMCwgMHg4MDA4MTA0MCwgMHgwNDAyMDdmYiwKLQkweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDVjMDI1ODAwLCAweDA0MDFmMzhjLAotCTB4NDIwMDUwMDAsIDB4ODEwMDAwMDAsIDB4NDIwMDYwMDAsIDB4MDAwOTAwMDAsCi0JMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjM2MywgMHg0MjAwNTAwMCwKLQkweDg0MDAwMDAwLCAweDQyMDA2MDAwLCAweDAwOTkwMDAwLCAweDU5MzAwNDA2LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDAwMDIsIDB4ODQzMDY1MmUsCi0JMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjM1NywgMHg0MjAwNTAwMCwKLQkweDg1MDAwMDAwLCAweDQyMDA2MDAwLCAweDAwOTkwMDAwLCAweDU5MzAwNDA2LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDAwMDIsIDB4ODQzMDY1MmUsCi0JMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjM0YiwgMHg1OTMwMDQwMywKLQkweDgyMDAwYzgwLCAweDAwMDAwMDUzLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4ODIwMDA0ODAsIDB4MDAwMDAwNGIsIDB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsCi0JMHg1OTMyNjgwOSwgMHg1OTM2OGMwMywgMHg0ODAzYzg1NywgMHgwYzAxZjAwMSwKLQkweDAwMTA3MzUzLCAweDAwMTA3MzViLCAweDAwMTA3MzYzLCAweDAwMTA3MzZiLAotCTB4MDAxMDcyZTQsIDB4MDAxMDcyZTQsIDB4MDAxMDcyZTQsIDB4MDAxMDczNGIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0MjAwNTAwMCwgMHgwNjAwMDAwMCwKLQkweDQyMDA2MDAwLCAweDA4MjkwMDAwLCAweDQxNzg2ODAwLCAweDQxNzg3ODAwLAotCTB4MDQwMWYzMmQsIDB4NDkzM2M4NTcsIDB4MDQwMWZmNDYsIDB4NGEwMWEwMDYsCi0JMHgxMjAwMDAwMCwgMHg1OTMwMDQwNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNCwKLQkweDA0MDIwMDAzLCAweDU5MzQwMDAyLCAweDA0MDFmMDAyLCAweDU5YTgwMDEwLAotCTB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4NDgwMWEwMDcsIDB4NTkzMDA0MTksCi0JMHg0ODAxYTQwOCwgMHg1OTMwMDIxOSwgMHg0ODAxYTIwOCwgMHg0OTc5YTAwOSwKLQkweDQ5NzlhMDBhLCAweDQ5NzlhMDBiLCAweDQ5NzlhMDBjLCAweDQ5NzlhMDBkLAotCTB4NDk3OWEwMGUsIDB4NDk3OWEwMGYsIDB4NDk3OWEwMTAsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwYiwgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwNDAxZjMzMCwKLQkweDA0MDFmZjI4LCAweDRhMDFhMDA2LCAweDBmMDAwMDAwLCAweDU5MzAwMDFjLAotCTB4NDgwMWEwMDcsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDIsIDB4NDIwMDEwMDAsCi0JMHgwMDAwZGMwMCwgMHgwNDAxZjMyNiwgMHgwNDAxZmYyYywgMHg0YTAxYTAwNiwKLQkweDAyMDAwMDAwLCAweDU5YzQwMDg1LCAweDQ4MDMxMDA0LCAweDU5ODgwMDAwLAotCTB4NDgwMWEwMDcsIDB4NTk4ODAwMDEsIDB4NDgwMWEwMDgsIDB4NTk4ODAwMDIsCi0JMHg0ODAxYTAwOSwgMHg1OTg4MDAwMywgMHg0ODAxYTAwYSwgMHg1OTg4MDAwNCwKLQkweDQ4MDFhMDBiLCAweDU5ODgwMDA1LCAweDQ4MDFhMDBjLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDcsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDQwMWYzMTAsCi0JMHg0YTAyNjIwMiwgMHgwMDAwZmZmZiwgMHgwNDAxZmYwNiwgMHg0YTAxYTAwNiwKLQkweDYyMDAwMDAwLCAweDU5MzAwMDFjLCAweDQ4MDFhMDA3LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDIsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDQwMWYzMDQsCi0JMHgwNDAxZmVmYywgMHg1OTMwMDgwOCwgMHg0YzUwMDAwMCwgMHg0YzU0MDAwMCwKLQkweDRjNTgwMDAwLCAweDgyMDRhNDAwLCAweDAwMDAwMDBhLCAweDU5MzBiMDFjLAotCTB4ODJkMGFjMDAsIDB4MDAwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsCi0JMHg1OTMwMDgxYywgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHg1YzAwYjAwMCwKLQkweDVjMDBhODAwLCAweDVjMDBhMDAwLCAweDA0MDFmMmYxLCAweDA0MDFmZjliLAotCTB4NTkzMDAwMTcsIDB4NDgwMWEwMDYsIDB4NTkzMDAwMTgsIDB4NDgwMWEwMDcsCi0JMHg0YTAxYTAwOCwgMHgwMDAwMTAwMCwgMHgwNDAxZjAyMCwgMHgwNDAxZmY5MywKLQkweDU5MzAwMDE3LCAweDQ4MDFhMDA2LCAweDU5MzAwMDE4LCAweDQ4MDFhMDA3LAotCTB4NGEwMWEwMDgsIDB4MDAwMDQwMDAsIDB4MDQwMWYwMTgsIDB4MDQwMWZmOGIsCi0JMHg1OTMwMDAxNywgMHg0ODAxYTAwNiwgMHg1OTMwMDAxOCwgMHg0ODAxYTAwNywKLQkweDRhMDFhMDA4LCAweDAwMDAyMDAwLCAweDA0MDFmMDEwLCAweDA0MDFmZjgzLAotCTB4NTkzMDAwMTcsIDB4NDgwMWEwMDYsIDB4NTkzMDAwMTgsIDB4NDgwMWEwMDcsCi0JMHg0YTAxYTAwOCwgMHgwMDAwMDQwMCwgMHgwNDAxZjAwOCwgMHgwNDAxZmY3YiwKLQkweDU5MzAwMDE3LCAweDQ4MDFhMDA2LCAweDU5MzAwMDE4LCAweDQ4MDFhMDA3LAotCTB4NGEwMWEwMDgsIDB4MDAwMDAyMDAsIDB4NDk3OWEwMDksIDB4NDk3OWEwMGEsCi0JMHg0OTc5YTAwYiwgMHg0OTc5YTAwYywgMHg0OTc5YTAwZCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA4LCAweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDA0MDFmMmMwLAotCTB4MDQwMWZlYzYsIDB4NGEwMWEwMDYsIDB4MDIwMDAwMTQsIDB4NDk3OWE0MDcsCi0JMHg0OTc5YTIwNywgMHg1OWE4MDAzYSwgMHg0ODAxYTAwOCwgMHg1OWE4MDAzYiwKLQkweDQ4MDFhMDA5LCAweDRhMDFhMDBhLCAweDAwMDQ3ODc4LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDUsIDB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDQwMWYyYjAsCi0JMHgwNDAxZmViNiwgMHg0YTAxYTAwNiwgMHgwMjE0MDAxOCwgMHg0YTAxYTQwNywKLQkweDAwMDAwODAwLCAweDU5MzAwMDFjLCAweDgyMDAwZDAwLCAweGZmMDAwMDAwLAotCTB4OTAwNDA5YzAsIDB4NDgwNWEyMDcsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsCi0JMHg0ODAxYTAwYSwgMHg0OTc5YTQwOCwgMHg0OTc5YTIwOCwgMHg0OTc5YTQwOSwKLQkweDQ5NzlhMjA5LCAweDQ5NzlhMDBiLCAweDQyMDAwODAwLCAweDAwMDAwMDA2LAotCTB4NDIwMDEwMDAsIDB4MDAwMGRjMDAsIDB4MDQwMWYyOTksIDB4NDkzM2M4NTcsCi0JMHg0OTM3Yzg1NywgMHg0ZDM4MDAwMCwgMHg0ZDFjMDAwMCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDM1LCAweDAyMDFmODAwLCAweDAwMTA5MTgzLCAweDA0MDIwMDIyLAotCTB4MDQwMWZlODgsIDB4NGEwMWEwMDYsIDB4MTMwMDAwMDAsIDB4NTkzMjM4MWUsCi0JMHg1OTFjMDQxNCwgMHg4YzAwMDUwMiwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MWMwMDE5LCAweDQ4MDFhMDA1LCAweDU5MWMwNDA2LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMDAwMDcsIDB4NTkzMDA4MDksIDB4NTgwNDAwMDIsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHg0ODAxYTAwNywgMHgwNDAxZjAwMywKLQkweDU5YTgwMDEwLCAweDQ4MDFhMDA3LCAweDU5MzAwNDE5LCAweDQ4MDFhNDA4LAotCTB4NTkzMDAyMTksIDB4NDgwMWEyMDgsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsCi0JMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHg1YzAyMzgwMCwgMHg1YzAyNzAwMCwKLQkweDA0MDFmMjZmLCAweDQ4MDNjODU2LCAweDAyMDFmODAwLCAweDAwMTA2OThjLAotCTB4NTk4YzAwMGQsIDB4ODEzMDA1ODAsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjhmNiwgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDVjMDIzODAwLCAweDVjMDI3MDAwLCAweDAyMDFmMDAwLCAweDAwMTA2OTgyLAotCTB4NDgwM2M4NTYsIDB4NGQyYzAwMDAsIDB4NGQxYzAwMDAsIDB4NTkzMjM4MWUsCi0JMHg4MTFlMzljMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTFjMGMwNiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDA2LCAweDA0MDAwMDBkLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMDAwMzYsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMzcsCi0JMHg0YTAyNjQxYSwgMHgwMDAwMDAwMywgMHg0YTAyNjIxYSwgMHgwMDAwMTcwMCwKLQkweDVjMDIzODAwLCAweDVjMDI1ODAwLCAweDA0MDFmMDY0LCAweDA0MDFmODRiLAotCTB4NDIwMDEwMDAsIDB4NDAwMDAwMDAsIDB4NTkxYzAyMDMsIDB4NTkxYzA4MDQsCi0JMHg4YzA0MGQzZSwgMHgwNDAyMDAyMywgMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwKLQkweDBjMDAxMDAzLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDAwMTA3NDEwLAotCTB4MDAxMDc0MWMsIDB4MDAxMDc0MTIsIDB4MDAxMDc0MWMsIDB4MDAxMDc0MTgsCi0JMHgwMDEwNzQxMCwgMHgwMDEwNzQxMCwgMHgwMDEwNzQxYywgMHgwMDEwNzQxYywKLQkweDAwMTA3NDEwLCAweDAwMTA3NDEwLCAweDAwMTA3NDEwLCAweDAwMTA3NDEwLAotCTB4MDAxMDc0MTAsIDB4MDAxMDc0MWMsIDB4MDAxMDc0MTAsIDB4MDAxMDc0MWMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTFjMDQxNCwgMHg0ODAzYzg1NywKLQkweDhjMDAwNTE4LCAweDA0MDAwMDAzLCAweDhjMDAwNTEyLCAweDA0MDAwMDAzLAotCTB4ODAwMDE1ODAsIDB4MDQwMWYwMDMsIDB4NDIwMDEwMDAsIDB4MjAwMDAwMDAsCi0JMHg1OTFjMDAxNSwgMHg0ODAxYTAwYSwgMHgwNDAxZjAxOCwgMHgwNDAxZjgxZiwKLQkweDU5MWU1ODA4LCAweDgxMmU1OWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4NTkyYzEwMGYsIDB4NTkxYzAwMTEsIDB4ODAwODA0ODAsIDB4NDgwMWEwMGEsCi0JMHg1OTFjMDIwMywgMHg1OTFjMDgwNCwgMHg4YzA0MGQzZSwgMHgwNDAyMDAwNywKLQkweDgyMDAwZDgwLCAweDAwMDAwMDAyLCAweDA0MDAwMDA3LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDQsIDB4MDQwMDAwMDQsIDB4NDIwMDEwMDAsIDB4NDAwMDAwMDAsCi0JMHgwNDAxZjAwMiwgMHg4MDAwMTU4MCwgMHg0ODA5YTAwYiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA2LCAweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDVjMDIzODAwLAotCTB4NWMwMjU4MDAsIDB4MDQwMWYxZmUsIDB4NDgwM2M4NTYsIDB4MDQwMWZlMDMsCi0JMHg0YTAxYTAwNiwgMHgwMjAwMDAwMCwgMHg1OTMwMGMxOSwgMHg0ODA1YTQwNywKLQkweDU5MzAwYTE5LCAweDQ4MDVhMjA3LCAweDU5YTgxMDEwLCAweDU5MzAwODA5LAotCTB4NTgwNDE4MDIsIDB4ODIwYzFkMDAsIDB4MDBmZmZmZmYsIDB4NTkzMDA4MWUsCi0JMHg1ODA0MDQwNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMywgMHgwNDAyMDAwNCwKLQkweDQ4MDlhMDA4LCAweDQ4MGRhMDA5LCAweDA0MDFmMDAzLCAweDQ4MGRhMDA4LAotCTB4NDgwOWEwMDksIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4MDQwMWZkZWIsCi0JMHgwNDAxZjAwMywgMHg0ODAzYzg1NiwgMHgwNDAxZmRlMSwgMHg0YTAxYTAwNiwKLQkweDAxMDAwMDAwLCAweDU5MzAwNDFhLCAweDQ4MDFhNDA3LCAweDU5MzAwMjFhLAotCTB4NDgwMWEyMDcsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDIsIDB4NDIwMDEwMDAsCi0JMHgwMDAwZGMwMCwgMHgwNDAxZjFkNiwgMHg0ODAzYzg1NiwgMHg0ZDFjMDAwMCwKLQkweDA0MDFmZGM1LCAweDRhMDFhMDA2LCAweDE0MDAwMDAwLCAweDU5MzIzODFlLAotCTB4NTkxYzAwMTksIDB4NDgwMWEwMDUsIDB4NTkzMDA0MTksIDB4NDgwMWE0MDcsCi0JMHg1OTMwMDIxOSwgMHg0ODAxYTIwNywgMHg1OTMwMDAxNSwgMHg0ODAxYTAwOCwKLQkweDU5MzAwMjE2LCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDg0MDAwMWMwLAotCTB4NDgwMWE0MDksIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsIDB4NDIwMDEwMDAsCi0JMHgwMDAwZGMwMCwgMHg1YzAyMzgwMCwgMHgwNDAxZjFiZCwgMHg0ODAzYzg1NiwKLQkweDA0MDFmODBiLCAweDU5MzAwNDFhLCAweDkwMDAwMWMwLCAweDQ4MDFhMDA1LAotCTB4MDQwMWY5ZjQsIDB4NDE3ODA4MDAsIDB4NDIwMDEwMDAsIDB4MDAwMDVjMDAsCi0JMHgwNDAxZjliMywgMHgwMjAxZjAwMCwgMHgwMDEwNWQ4NiwgMHg0ODAzYzg1NiwKLQkweDU5MzAwODE3LCAweDgyMDQxYzAwLCAweDAwMDAwMDA1LCAweDQ2MDM0ODAwLAotCTB4MDAwMDAwMjEsIDB4NTgwNDA0MDQsIDB4ODIwMDA1MDAsIDB4MDAwMGYwMDAsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMzAwMCwgMHgwNDAwMDAwMywgMHg0NjAzNDgwMCwKLQkweDAwMDAwMDQxLCAweDgxYTVhMDAwLCAweDU4MGMwMDAxLCAweDgyMDAwZDAwLAotCTB4MDBmZmZmZmYsIDB4ODIwNDBkNDAsIDB4YzIwMDAwMDAsIDB4NDgwNWEwMDAsCi0JMHg1ODBjMDgwMCwgMHg4MjA0MTUwMCwgMHgwMGZmZmZmZiwgMHg4MjAwMDUwMCwKLQkweGZmMDAwMDAwLCAweDgwMDgwNTQwLCAweDQ4MDFhMDAxLCAweDU4MGMwMDAyLAotCTB4ODIwMDA1ODAsIDB4MDBjMDAwMDAsIDB4ODIwMDA1MDAsIDB4MDBmZDAzMDAsCi0JMHg0ODAxYTAwMiwgMHg1ODBjMDAwMywgMHg0ODAxYTAwMywgMHg1ODBjMDQwNCwKLQkweDQ4MDFhNDA0LCAweDU4MGMwMjA0LCAweDQ4MDFhMjA0LCAweDFjMDFmMDAwLAotCTB4NDgwM2M4NTYsIDB4NTlhODAwMjYsIDB4ODIwMDA1MDAsIDB4MDAwMDAwMjgsCi0JMHgwNDAyMDAwOSwgMHg1OWE4MDAyNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAyOCwKLQkweDA0MDAwMDAzLCAweDQ5N2E2YTEyLCAweDA0MDFmMDAzLCAweDRhMDI2YTEyLAotCTB4MDAwMGZmMDAsIDB4NDIwMDUwMDAsIDB4MjIwMDAwMDAsIDB4NDIwMDYwMDAsCi0JMHgwMTM4MDAwMCwgMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjk1MiwKLQkweDU5MzAxMDA4LCAweDRhMDFhMDA2LCAweDU0MDAwMDAwLCAweDU5YTgwMDEwLAotCTB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4NTgwODBjMGEsIDB4ODAwNDA4ZjAsCi0JMHg4MDA0MDU0MCwgMHg0ODAxYTAwNywgMHg1ODA4MDAwYSwgMHg4MjAwMDUwMCwKLQkweGZmMDAwMDAwLCAweDQ4MDFhMDA4LCAweDU5YTgwMDAyLCAweDQ4MDFhMDA5LAotCTB4NTlhODAwMDMsIDB4NDgwMWEwMGEsIDB4NTlhODAwMDAsIDB4NDgwMWEwMGIsCi0JMHg1OWE4MDAwMSwgMHg0ODAxYTAwYywgMHg1ODA4MDAwYywgMHg5YzAwMDFjMCwKLQkweDQ4MDFhMDBkLCAweDU4MDgwMDBkLCAweDljMDAwMWMwLCAweDQ4MDFhMDBlLAotCTB4NTgwODAwMGUsIDB4OWMwMDAxYzAsIDB4NDgwMWEwMGYsIDB4NTgwODAwMGYsCi0JMHg5YzAwMDFjMCwgMHg0ODAxYTAxMCwgMHg1ODA4MDAxMCwgMHg5YzAwMDFjMCwKLQkweDQ4MDFhMDExLCAweDU4MDgwMDExLCAweDljMDAwMWMwLCAweDQ4MDFhMDEyLAotCTB4NTgwODAwMTIsIDB4OWMwMDAxYzAsIDB4NDgwMWEwMTMsIDB4NTgwODAwMTMsCi0JMHg5YzAwMDFjMCwgMHg0ODAxYTAxNCwgMHg1ODA4MDAxMCwgMHg5YzAwMDFjMCwKLQkweDQ4MDFhMDE1LCAweDU4MDgwMDExLCAweDljMDAwMWMwLCAweDQ4MDFhMDE2LAotCTB4NTgwODAwMTIsIDB4OWMwMDAxYzAsIDB4NDgwMWEwMTcsIDB4NTgwODAwMTMsCi0JMHg5YzAwMDFjMCwgMHg0ODAxYTAxOCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAxMywKLQkweDQyMDAxMDAwLCAweDAwMDBkYzAwLCAweDA0MDFmMTM1LCAweDQ4MDNjODU2LAotCTB4NDIwMDUwMDAsIDB4MjIwMDAwMDAsIDB4NDIwMDYwMDAsIDB4MDEyOTAwMDAsCi0JMHg0MTc4NjgwMCwgMHg0MTc4NzgwMCwgMHgwNDAxZjkwYiwgMHg1OTMwMTAwOCwKLQkweDRhMDFhMDA2LCAweDU1MDAwMDAwLCAweDU4MDgwMDBiLCAweDgyMDAwNTAwLAotCTB4MDBmZmZmZmYsIDB4NTgwODBjMGEsIDB4ODAwNDA4ZjAsIDB4ODAwNDA1NDAsCi0JMHg0ODAxYTAwNywgMHg1ODA4MDgwYSwgMHg4MjA0MGQwMCwgMHhmZjAwMDAwMCwKLQkweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwZmZmZmZmLCAweDgwMDQwNTQwLAotCTB4NDgwMWEwMDgsIDB4NTgwODAwMGMsIDB4OWMwMDAxYzAsIDB4NDgwMWEwMDksCi0JMHg1ODA4MDAwZCwgMHg5YzAwMDFjMCwgMHg0ODAxYTAwYSwgMHg1ODA4MDAwZSwKLQkweDljMDAwMWMwLCAweDQ4MDFhMDBiLCAweDU4MDgwMDBmLCAweDljMDAwMWMwLAotCTB4NDgwMWEwMGMsIDB4NTlhODAwMDIsIDB4NDgwMWEwMGQsIDB4NTlhODAwMDMsCi0JMHg0ODAxYTAwZSwgMHg1OWE4MDAwMCwgMHg0ODAxYTAwZiwgMHg1OWE4MDAwMSwKLQkweDQ4MDFhMDEwLCAweDU4MDgwMDEwLCAweDQ4MDFhMDExLCAweDU4MDgwMDExLAotCTB4NDgwMWEwMTIsIDB4NTgwODAwMTIsIDB4NDgwMWEwMTMsIDB4NTgwODAwMTMsCi0JMHg0ODAxYTAxNCwgMHg0OTc5YTAxNSwgMHg0OTc5YTAxNiwgMHg0OTc5YTAxNywKLQkweDQ5NzlhMDE4LCAweDQyMDAwODAwLCAweDAwMDAwMDEzLCAweDQyMDAxMDAwLAotCTB4MDAwMGRjMDAsIDB4MDQwMWYwZjYsIDB4MDQwMWZjZmMsIDB4NTkzMDAwMWMsCi0JMHg4MDAwMDFjMCwgMHgwNDAwMDAwOCwgMHg0YTAxYTAwNiwgMHgwMTAwMDAwMCwKLQkweDRhMDFhNDA3LCAweDAwMDAwMDAzLCAweDQyMDAwODAwLCAweDAwMDAwMDAyLAotCTB4MDQwMWYwMjgsIDB4NGEwMWEwMDYsIDB4MDIwMDAwMDAsIDB4NDE3ODA4MDAsCi0JMHg4MzZjMDU4MCwgMHgwMDAwMDAwNCwgMHgwNDAyMDAwMywgMHg4NDA0MGQ0MiwKLQkweDA0MDFmMDBkLCAweDAyMDFmODAwLCAweDAwMTA0ZTBkLCAweDA0MDIwMDAzLAotCTB4ODQwNDBkNGEsIDB4MDQwMWYwMDIsIDB4ODQwNDBkNDgsIDB4NTlhODAwMjYsCi0JMHg4YzAwMDUwNiwgMHgwNDAyMDAwMywgMHg4YzAwMDUwYSwgMHgwNDAwMDAwMiwKLQkweDg0MDQwZDQ2LCAweDQ4MDVhMjA3LCAweDU5YzQwMDg1LCAweDQ4MDMxMDA0LAotCTB4NGM1ODAwMDAsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwNiwgMHg4Mzg4YTQwMCwgMHgwMDAwMDAwMCwgMHg4MmQwYWMwMCwKLQkweDAwMDAwMDA4LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDVjMDBhODAwLAotCTB4NWMwMGEwMDAsIDB4NWMwMGIwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDgsCi0JMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwNDAxZjBjMSwgMHgwNDAxZmNiOSwKLQkweDRhMDFhMDA2LCAweDU2MDAwMDAwLCAweDU5MzQwMDA2LCAweDQ4MDFhMDA3LAotCTB4NTkzNDAwMDcsIDB4NDgwMWEwMDgsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsCi0JMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwgMHgwNDAxZjBiNSwgMHg0ODAzYzg1NiwKLQkweDA0MDFmY2JhLCAweDU5MzAwODFjLCAweDgwMDQwOWMwLCAweDA0MDAwMDBlLAotCTB4ODIwNDA1ODAsIDB4MDAwMGZmZmYsIDB4MDQwMDAwMDQsIDB4ODIwNDA0ODAsCi0JMHgwMDAwMDAwNywgMHgwNDAyMTAwOCwgMHg0YTAxYTAwNiwgMHgwMTAwMDAwMCwKLQkweDRhMDFhNDA3LCAweDAwMDAwMDAzLCAweDQyMDAwODAwLCAweDAwMDAwMDAyLAotCTB4MDQwMWYwMTIsIDB4NGEwMWEwMDYsIDB4MDIwMDAwMWMsIDB4NGEwMWEwMDcsCi0JMHgwMDAwMDAwMSwgMHg0MjAwMTAwMCwgMHgwMDEwYjJlYywgMHg1MDA4MDAwMCwKLQkweDljMDAwMWMwLCAweDQ4MDFhMDA5LCAweDU5YTgwMDEwLCAweDQ4MDFhMDBhLAotCTB4NTlhODAwMDIsIDB4NTlhODA4MDMsIDB4NDgwMWEwMGIsIDB4NDgwNWEwMGMsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNywgMHg0MjAwMTAwMCwgMHgwMDAwZGMwMCwKLQkweDA0MDFmMDhmLCAweDRkMmMwMDAwLCAweDA0MDFmYzg2LCAweDU5MzI1ODA4LAotCTB4NTkyYzAwMDgsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4NDgwMWEwMDEsCi0JMHg0YTAxYTAwNiwgMHg1MTAwMDAwMCwgMHg1YzAyNTgwMCwgMHgwMjAxZjAwMCwKLQkweDAwMTA3MGJjLCAweDQ4MDNjODU2LCAweDU5YTgwODEwLCAweDgyMDQwZDAwLAotCTB4MDAwMDAwZmYsIDB4NTkzMjU4MDgsIDB4NTkzMjY4MDksIDB4NTlhODMwMjYsCi0JMHg4YzE4MzUwYSwgMHgwNDAyMDAwOCwgMHg4YzAwMDUwZSwgMHgwNDAyMDAwNiwKLQkweDgwMDAxZDgwLCAweDU5YTgyMDEwLCAweDgyMTAyNTAwLCAweDAwMDAwMGZmLAotCTB4MDQwMWYwMDEsIDB4NTkzMDA0MDYsIDB4NDgwM2M4NTcsIDB4ODIwMDBkODAsCi0JMHgwMDAwMDAwOSwgMHgwNDAwMDAwNiwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwYSwKLQkweDA0MDAwMDJlLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDU5MzAwMDE1LAotCTB4OGMwMDA1MWUsIDB4MDQwMjAwMjAsIDB4NDIwMDUwMDAsIDB4MDQwMDAwMDAsCi0JMHg0MjAwNjAwMCwgMHgwNTAwMDAwMCwgMHg1OTJjMDQwYSwgMHg4MjAwMDUwMCwKLQkweDAwMDAwMDMwLCAweDgwMDAwMGUwLCAweDgwMzA2NTQwLCAweDU5MzQwMDBhLAotCTB4OGMwMDA1MDgsIDB4MDQwMDAwMDIsIDB4ODQzMDY1NDYsIDB4NDE3ODY4MDAsCi0JMHg0MTc4NzgwMCwgMHgwNDAxZjgzMSwgMHg1OTMwMGMxNCwgMHg4MDA0MDAwMCwKLQkweDQ4MDI2NDE0LCAweDQwMDQwMDAwLCAweDgwMDAwMGQwLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMjAsIDB4NDgwMWE0MDMsIDB4ODMxODBkNDAsIDB4MDAwMDAwMzgsCi0JMHg0MjAwMTAwMCwgMHgwMDAwYzkyMCwgMHgwNDAxZjg2OCwgMHgwMjAxZjAwMCwKLQkweDAwMTA1ZDhiLCAweDU5YTgwMDI2LCAweDgyMDAwNTAwLCAweDAwMDAwMDI4LAotCTB4MDQwMDAwMDMsIDB4NDk3YTZhMTIsIDB4MDQwMWY3ZGMsIDB4NGEwMjZhMTIsCi0JMHgwMDAwZmYwMCwgMHgwNDAxZjdkOSwgMHg0MjAwNTAwMCwgMHgwMjAwMDAwMCwKLQkweDQyMDA2MDAwLCAweDIwMjkwMDAwLCAweDQxNzg2ODAwLCAweDQxNzg3ODAwLAotCTB4MDQwMWY4MTIsIDB4ODMxODBkNDAsIDB4MDAwMDAwMzgsIDB4NDIwMDEwMDAsCi0JMHgwMDAwYzlhMCwgMHgwNDAxZjg1MSwgMHg0MjAwMDgwMCwgMHgwMDAwMDdkMCwKLQkweDU5MzAwMDExLCAweDgyMDAwNTAwLCAweGZmZjAwMDAwLCAweDgwMDAwNTQwLAotCTB4MDQwMDAwMDMsIDB4NDIwMDA4MDAsIDB4MDAwMDFiNTgsIDB4NDE3ODEwMDAsCi0JMHgwMjAxZjAwMCwgMHgwMDEwNWQ4ZCwgMHg0MjAxYTAwMCwgMHgwMDAwMDAwMCwKLQkweDA0MDFmMDAzLCAweDQyMDFhMDAwLCAweDAwMDAwMDExLCAweDU5MzQwYTEyLAotCTB4ODIwNDBkMDAsIDB4MDAwMGZmMDAsIDB4NTlhODAwMTAsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDBmZiwgMHg5MDAwMDFjMCwgMHg4MDA0MDU0MCwgMHg4MGQwMDU0MCwKLQkweDQ0MDM0ODAwLCAweDgxYTVhMDAwLCAweDU5MzQwMDAyLCAweDgyMDAwNTAwLAotCTB4MDBmZmZmZmYsIDB4ODAyODA1NDAsIDB4NDgwMWEwMDAsIDB4NTlhODAwMTAsCi0JMHg0ODAxYTAwMSwgMHg0ODMxYTAwMiwgMHg4MjM0MDU0MCwgMHgwMDAwMDAwMCwKLQkweDQ4MDFhMDAzLCAweDU5MzAwNDAyLCAweDQ4MDFhNDA0LCAweDU5MzAwYTAyLAotCTB4NDgwNWEyMDQsIDB4OGMzMDY1MmUsIDB4MDQwMDAwMDMsIDB4NDgwNWE0MDQsCi0JMHg0ODAxYTIwNCwgMHg0ODNkYTAwNSwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NywKLQkweDRjMDQwMDAwLCAweDA0MDFmODJhLCAweDVjMDAwODAwLCAweDQwMDQwMDAwLAotCTB4ODAwODE1NDAsIDB4ODAwMDAwYzQsIDB4ODIwMDA1NDAsIDB4MDAwMDIwMDAsCi0JMHg0ODAzOTEwYSwgMHg1OWI0MDBmNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAxOCwKLQkweDA0MDIwN2ZkLCAweDRhMDM2OGYwLCAweDAwMTBiMzQyLCAweDQyMDAxODAwLAotCTB4MDAxMGIzNDMsIDB4NTgwYzAwMDAsIDB4NDgwM2M4NTcsIDB4NTgwYzAwMDIsCi0JMHg0ODAzYzg1NywgMHg1ODBjMDAwNCwgMHg0ODAzYzg1NywgMHg0YTAzNjhmMSwKLQkweDAwMTBiMzQ5LCAweDQ4MGI2OGYzLCAweDRhMDM3OGU0LCAweDAwMDA4MDAwLAotCTB4MDIwMWYwMDAsIDB4MDAxMDVkODYsIDB4NDgwN2M4NTcsIDB4NDgwYTI4MDAsCi0JMHg0YzA0MDAwMCwgMHgwNDAxZjgwYSwgMHg1YzAwMDgwMCwgMHg1OWI0MDBmNiwKLQkweDhjMDAwNTBhLCAweDA0MDIwN2ZlLCAweDQ5YTc2OGYyLCAweDQ4MDc2OGY0LAotCTB4NGEwMzc4ZTQsIDB4MDAwMDgwMDAsIDB4MWMwMWYwMDAsIDB4NGEwMzc4ZTQsCi0JMHgwMDAwYzAwMCwgMHg1OWJjMDBlNCwgMHg4YzAwMDUyMCwgMHgwNDAwMDAwYywKLQkweDRhMDM3OGU0LCAweDAwMDA4MDAwLCAweDQyMDA3MDAwLCAweDAwMDAwM2U4LAotCTB4NTliYzAwZTQsIDB4OGMwMDA1MjAsIDB4MDQwMDA3ZjUsIDB4ODAzODcwNDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHgwNDAxZjdmYSwgMHgxYzAxZjAwMCwKLQkweDgyMDAwNTAwLCAweGZmZmYwMDAwLCAweDgyMDAwNTgwLCAweDAxMDUwMDAwLAotCTB4MDQwMjAwMGQsIDB4NTk5YzA4MTgsIDB4OGMwNDBkMTAsIDB4MDQwMDAwMGEsCi0JMHg1OWE4MDgwNywgMHg4YzA0MGQwYSwgMHgwNDAwMDAwNywgMHg0MjAwMTAwMCwKLQkweDAwMDA4MDRmLCAweDQxNzgxODAwLCAweDQxNzgyMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDM4NTcsIDB4MWMwMWYwMDAsIDB4NDE3ODEwMDAsIDB4NDIwMjYwMDAsCi0JMHgwMDEwY2ZjMCwgMHg1OWE4MTgwZSwgMHg0ODBhNjQwMiwgMHg0YTAyNjIwMiwKLQkweDAwMDBmZmZmLCAweDgwMDgxMDAwLCAweDgwMGMxODQwLCAweDA0MDAwMDA0LAotCTB4ODMzMjY0MDAsIDB4MDAwMDAwMjQsIDB4MDQwMWY3ZjgsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDAwMDJjLCAweDU5MzAwNDA2LCAweDQ4MDNjODU3LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDQsIDB4MDQwMDAwMTEsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDEsCi0JMHgwNDAwMDAwZSwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAwNiwKLQkweDgyMDAwZDgwLCAweDAwMDAwMDA2LCAweDA0MDIwMDExLCAweDAyMDFmODAwLAotCTB4MDAxMGEzZmEsIDB4NTkzMDAwMWMsIDB4ODAwMDAxYzAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwOTYxYSwgMHgwNDAxZjAwYSwgMHg1OTMwMDgxZSwgMHg0ODA3Yzg1NywKLQkweDgwMDQwOWMwLCAweDA0MDAwMDA2LCAweDU4MDQwMDFjLCAweDQ4MDNjODU3LAotCTB4ODEzMDA1ODAsIDB4MDQwMjAwMDIsIDB4NDk3ODA4MWMsIDB4NDk3YTYwMDgsCi0JMHg0YTAyNjAwNCwgMHgwMDAwNDAwMCwgMHg1OWE4MDAzNywgMHg4MjAwMGM4MCwKLQkweDAwMDAwMDUxLCAweDA0MDAxMDAyLCAweDgwMDAwMTAyLCAweDQ4MDI2MjA2LAotCTB4NDk3YTYyMDUsIDB4NDk3YTYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDcsCi0JMHgxYzAxZjAwMCwgMHg4MTY2YzljMCwgMHgwNDAwMDAxYywgMHg0MTYyNjAwMCwKLQkweDQxNTgwMDAwLCAweDU5MzAwYTAzLCAweDgyMDQwZDgwLCAweDAwMDAwMDAwLAotCTB4MDQwMDAwMDgsIDB4ODMzMjY0MDAsIDB4MDAwMDAwMjQsIDB4ODEzMDBjODAsCi0JMHgwNDAwMTdmOSwgMHg0MjAyNjAwMCwgMHgwMDEwY2ZjMCwgMHgwNDAxZjdmNiwKLQkweDQ5MzNjODU3LCAweDgxNjZjODQwLCAweDgzMzAwYzAwLCAweDAwMDAwMDI0LAotCTB4ODAwNDA0ODAsIDB4MDQwMjEwMDYsIDB4NDAwNmMwMDAsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwOCwgMHg4MTMyNjFjMCwgMHgxYzAxZjAwMCwgMHg0MjAyYzAwMCwKLQkweDAwMTBjZmMwLCAweDA0MDFmN2ZhLCAweDQyMDAwMDAwLCAweDAwMTBiNjUzLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NDkzM2M4NTYsIDB4NDE3YTYwMDAsCi0JMHgwNDAxZjdmNSwgMHg0OTMzYzg1NywgMHg4MzM4MDU4MCwgMHgwMDAwMDAxMywKLQkweDA0MDIwMDBiLCAweDU5MzAwMDA0LCAweDhjMDAwNTNlLCAweDA0MDAwMDA3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjk4MiwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDU5ODgwMDUzLCAweDgwMDAwMDAwLCAweDQ4MDMxMDUzLCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4NTkzMDAyMDMsIDB4ODIwMDM0ODAsIDB4MDAwMDAwMGUsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg0ZDJjMDAwMCwgMHgwYzAxZjgwMywKLQkweDVjMDI1ODAwLCAweDFjMDFmMDAwLCAweDAwMTA3NzE4LCAweDAwMTA3Yzg0LAotCTB4MDAxMDdkZDQsIDB4MDAxMDc3MTgsIDB4MDAxMDdlM2EsIDB4MDAxMDc4N2MsCi0JMHgwMDEwNzcxOCwgMHgwMDEwNzcxOCwgMHgwMDEwN2MxYSwgMHgwMDEwNzcxOCwKLQkweDAwMTA3NzE4LCAweDAwMTA3NzE4LCAweDAwMTA3NzE4LCAweDAwMTA3NzE4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDkzM2M4NTcsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMzQ4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmMDAxLCAweDAwMTA3NzJmLCAweDAwMTA4N2YwLCAweDAwMTA3NzJmLAotCTB4MDAxMDc3MmYsIDB4MDAxMDc3MmYsIDB4MDAxMDc3MmYsIDB4MDAxMDc3MmYsCi0JMHgwMDEwNzcyZiwgMHgwMDEwODc5YSwgMHgwMDEwODgwYywgMHgwMDEwODg3YSwKLQkweDAwMTA4ODBjLCAweDAwMTA4ODdhLCAweDAwMTA3NzJmLCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDkzM2M4NTcsCi0JMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwgMHg1OTMwMDIwMywgMHg4MjAwMzQ4MCwKLQkweDAwMDAwMDBlLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmODAzLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4MDAxMDc3NGMsIDB4MDAxMDc3NGMsCi0JMHgwMDEwNzc0YywgMHgwMDEwNzc2OCwgMHgwMDEwNzdiNCwgMHgwMDEwNzc0YywKLQkweDAwMTA3NzRjLCAweDAwMTA3NzRjLCAweDAwMTA3NzRlLCAweDAwMTA3NzRjLAotCTB4MDAxMDc3NGMsIDB4MDAxMDc3NGMsIDB4MDAxMDc3NGMsIDB4MDAxMDc3NGMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0OTMzYzg1NywgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDQwLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDRhMDI2MDA3LAotCTB4MDAwODIwMDAsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDMsIDB4NDkzYTY0MDMsCi0JMHg0YTAyNWMwOCwgMHgwMDAwMDAwMSwgMHg1OTJjMDAwZCwgMHg0ODAyNjAxMSwKLQkweDQ5N2E2MDEzLCAweDU5MmMwMjA4LCAweDgwMDAwMGMyLCAweDgwMDAxMGM0LAotCTB4ODAwODE0MDAsIDB4NDgwYTYyMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDBmOWMsCi0JMHg0MjAwMDgwMCwgMHg4MDAwMDA2MCwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ2NiwKLQkweDQ5MzNjODU3LCAweDgzMzgwNDgwLCAweDAwMDAwMDUwLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4ODMzODA0ODAsIDB4MDAwMDAwNDksIDB4MDIwMDE4MDAsCi0JMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwNzc3YiwgMHgwMDEwNzc4NiwKLQkweDAwMTA3Nzc5LCAweDAwMTA3Nzc5LCAweDAwMTA3Nzc5LCAweDAwMTA3Nzc5LAotCTB4MDAxMDc3OTEsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwNCwgMHg0YTAyNWMwOCwgMHgwMDAwMDAwMiwgMHg1OTJjMDIwNywKLQkweDQ4MDI1YzA5LCAweDU5MmMwMjA5LCAweDQ4MDI1YTA3LCAweDU5MmMwMDBjLAotCTB4NDgwMjU4MGQsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY4YzEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAwNSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDY4YzEsIDB4NGQzYzAwMDAsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg1YzAyNzgwMCwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDE0LCAweDQxNzgyODAwLCAweDQyMDAyMDAwLAotCTB4MDAwMDAwMDIsIDB4NGQ0MDAwMDAsIDB4NGQ0NDAwMDAsIDB4NTkzNjhjMDMsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHgwMjAxZjgwMCwgMHgwMDEwOTYyYSwKLQkweDVjMDI4ODAwLCAweDVjMDI4MDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjYzLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsCi0JMHgwMjAwMDAwMCwgMHgwMDAyMDhiNCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAyOSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LAotCTB4NDkzM2M4NTcsIDB4ODMzODA1ODAsIDB4MDAwMDAwNDgsIDB4MDQwMDAwMDUsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDA1MywgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MmMwMjA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDA3LCAweDA0MDAwMDA5LAotCTB4NTkzMDAwMTEsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMDYsIDB4NTkyYzA4MGMsCi0JMHg4MDA0MDQ4MCwgMHg0ODAyNTgwYywgMHg0YTAyNWEwNiwgMHgwMDAwMDAxNSwKLQkweDU5MmMwMjA2LCAweDgwMDAwNTQwLCAweDA0MDIwMDAzLCAweDRhMDI1YTA2LAotCTB4MDAwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHg0OTMzYzg1NywgMHg0ZDJjMDAwMCwgMHg0YzUwMDAwMCwKLQkweDRjNTQwMDAwLCAweDRjNTgwMDAwLCAweDAyMDFmODAwLCAweDAwMTAwODJhLAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NDk3YTVhMDYsIDB4NTlhODAwNmUsCi0JMHg4MjAwMDUwMCwgMHgwMDAwZjAwMCwgMHg0ODAyNWMwNywgMHg1OWE4MDgxNiwKLQkweDgyMDQwYzAwLCAweDAwMDAwMDE4LCAweDQ4MDY1YTA3LCAweDQxMmM3ODAwLAotCTB4NGQyYzAwMDAsIDB4NDFjY2EwMDAsIDB4NDIwMDI4MDAsIDB4MDAwMDAwMDEsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAyYywgMHg4MjA0MDQ4MCwgMHgwMDAwMDAyZCwKLQkweDA0MDIxMDA2LCAweDgzMmNhYzAwLCAweDAwMDAwMDA5LCAweDAyMDFmODAwLAotCTB4MDAxMDg5NGEsIDB4MDQwMWYwMmUsIDB4NDAwNDMwMDAsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAyYywgMHg4MzJjYWMwMCwgMHgwMDAwMDAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA4OTRhLCAweDgyMTgzNDgwLCAweDAwMDAwMDJjLCAweDAyMDFmODAwLAotCTB4MDAxMDA4MmEsIDB4MDQwMDAwMWEsIDB4ODAxNDI4MDAsIDB4NGEwMjU4MDQsCi0JMHgwMDAwMDExMCwgMHg0OTJjNzgwMSwgMHg4MjE4MGM4MCwgMHgwMDAwMDAzZCwKLQkweDA0MDIxMDA3LCAweDQwMTgwODAwLCAweDgzMmNhYzAwLCAweDAwMDAwMDA1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDg5NGEsIDB4MDQwMWYwMTUsIDB4ODIwODE0MDAsCi0JMHgwMDAwMDAzYywgMHg4MjE4MzQ4MCwgMHgwMDAwMDAzYywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDNjLCAweDQxMmM3ODAwLCAweDgzMmNhYzAwLCAweDAwMDAwMDA1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDg5NGEsIDB4MDQwMWY3ZTUsIDB4NWMwMjU4MDAsCi0JMHg1OTJjMDIwNiwgMHg4NDAwMDU1ZSwgMHg0ODAyNWEwNiwgMHg1OTJjMDQwNywKLQkweDgwMDgwNTQwLCAweDQ4MDI1YzA3LCAweDA0MDFmMDAyLCAweDVjMDI1ODAwLAotCTB4ODEzNjY5YzAsIDB4MDQwMDAwMDMsIDB4NTkzNDM0MDMsIDB4MDQwMWYwMDMsCi0JMHg0MjAwMzAwMCwgMHgwMDAwZmZmZiwgMHg0OTMyNTgwOCwgMHg0ODFhNWMwNiwKLQkweDgyMTAwNTgwLCAweDAwMDAwMDU0LCAweDA0MDIwMDAyLCAweDQ5MWU1ODEzLAotCTB4ODQxNDAxYzAsIDB4ODAxMDA1NDAsIDB4NDgwMjU4MDQsIDB4NTkyYzAwMDEsCi0JMHg0OTdhNTgwMSwgMHg0YzAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDVjMDI1ODAwLCAweDgxMmU1OWMwLCAweDA0MDIwN2Y5LCAweDVjMDBiMDAwLAotCTB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHg0ODAzYzg1NiwgMHg0YzVjMDAwMCwgMHg0ZDJjMDAwMCwgMHg0YzUwMDAwMCwKLQkweDRjNTQwMDAwLCAweDRjNTgwMDAwLCAweDQxMmNiODAwLCAweDU5MmMwNDBiLAotCTB4OGMwMDA1MTYsIDB4MDQwMDAwMDMsIDB4NDFjY2EwMDAsIDB4MDQwMWYwMDMsCi0JMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwgMHg0MDA4YjAwMCwgMHg0MTc4MTAwMCwKLQkweDgyNTgwNDgwLCAweDAwMDAwMDEyLCAweDA0MDAxMDA0LCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMTIsIDB4NDAwMDEwMDAsIDB4NGMwODAwMDAsIDB4NGQyYzAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwgMHgwNDAwMDAyMywgMHg1YzAwMTgwMCwKLQkweDQ5MmMxODAxLCAweDQ4NWE1ODAwLCAweDgzMmNhYzAwLCAweDAwMDAwMDAyLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5NGYsIDB4NTg1YzA0MGIsIDB4OGMwMDA1MDAsCi0JMHgwNDAwMDAwZSwgMHg4MzJjMTQwMCwgMHgwMDAwMDAwMiwgMHg4YzAwMDUxNiwKLQkweDA0MDAwMDAzLCAweDgyMDgxNDAwLCAweDAwMDAwMDA2LCAweDQ2MDAxMDAwLAotCTB4MDAwMDAwMDEsIDB4ODAwODEwMDAsIDB4NDYwMDEwMDAsIDB4MDAwMDA5MDAsCi0JMHg4NDAwMDUwMCwgMHg0ODAwYmMwYiwgMHg1YzAwMTAwMCwgMHg4MDA4MTFjMCwKLQkweDA0MDIwN2RhLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDBiMDAwLAotCTB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NWMwMjU4MDAsIDB4NWMwMGI4MDAsCi0JMHgxYzAxZjAwMCwgMHg1YzAyNTgwMCwgMHg1YzAwMTAwMCwgMHgwNDAxZjdmOCwKLQkweDQ5MzNjODU3LCAweDgzMzgwZDgwLCAweDAwMDAwMDE1LCAweDA0MDIwMDAzLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4ODMzODBkODAsIDB4MDAwMDAwMTYsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDQ5MzNjODU3LCAweDRkMmMwMDAwLCAweDRjNTAwMDAwLCAweDRjNTQwMDAwLAotCTB4NGM1ODAwMDAsIDB4NTkzMjU4MDgsIDB4ODNjY2E0MDAsIDB4MDAwMDAwMDYsCi0JMHg1OWNjMTgwNiwgMHg4MjBjMDU4MCwgMHgwMTAwMDAwMCwgMHgwNDAyMDAwNCwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDA0MDFmMDBmLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDgsIDB4ODMyY2FjMDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHg4YzBjMWQwMCwgMHgwNDAwMDAwYiwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDA4LCAweDU5MmU1ODAxLCAweDgxMmU1OWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4ODMyY2FjMDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHgwNDAxZjgxNiwgMHg1YzAwYjAwMCwgMHg1YzAwYTgwMCwKLQkweDVjMDBhMDAwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsIDB4ODNjY2E0MDAsCi0JMHgwMDAwMDAwNiwgMHg1OTMwYTgwOCwgMHg4MjU0YWMwMCwgMHgwMDAwMDAwNSwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDA3LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4NWMwMGIwMDAsIDB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NDkzM2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwMjAwMDAwMCwgMHgwMDAyMDhiNCwKLQkweDRkMmMwMDAwLCAweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDBiLAotCTB4NDE3ODA4MDAsIDB4NGQ0MDAwMDAsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTIwNCwgMHg1YzAyODAwMCwgMHg1YzAyNTgwMCwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDU5MzFkODIxLCAweDU4ZWY0MDBiLAotCTB4NThlZTU4MGQsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsIDB4NThlYzAwMDksCi0JMHgwODAxZjgwMCwgMHg1YzAyNTgwMCwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDQ5MzNjODU3LCAweDU5Y2MxODA2LCAweDgyMGMwNTgwLCAweDAyMDAwMDAwLAotCTB4MDQwMjAwMTQsIDB4NGEwMjY4MDIsIDB4MDBmZmZmZmQsIDB4NTkzNDAwMGEsCi0JMHg4NDAwMDUwNCwgMHg0ODAyNjgwYSwgMHg1OTMwMDgwOCwgMHg4MDA0MDljMCwKLQkweDAyMDAwMDAwLCAweDAwMDIwOGI0LCAweDRhMDAwYTA0LCAweDAwMDAwMTAzLAotCTB4NDgwYzA4MDUsIDB4NTkzMWQ4MjEsIDB4NThlZjQwMGIsIDB4NThlZTU4MGQsCi0JMHg1OGVjMDAwOSwgMHgwODAxZjgwMCwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjZiLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NGMwYzAwMDAsIDB4MDQwMWY4MDQsIDB4NWMwMDE4MDAsIDB4MDQwMjA3ZWIsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwKLQkweDgxMmU1OWMwLCAweDA0MDIwMDA5LCAweDQ5N2E2MjA2LCAweDQ5N2E2MjA1LAotCTB4NGQzODAwMDAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMjIsIDB4MDQwMWZiNzcsCi0JMHg1YzAyNzAwMCwgMHg4MDAwMDU4MCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDRkMmMwMDAwLCAweDRjNTAwMDAwLCAweDRjNTQwMDAwLAotCTB4NGM1ODAwMDAsIDB4NTkzMjU4MDgsIDB4NTkyZTU4MDEsIDB4ODMyY2FjMDAsCi0JMHgwMDAwMDAwNSwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwgMHg1OWE4MDg2ZSwKLQkweDgyMDQwZDAwLCAweDAwMDAwM2ZmLCAweDgyMDQxNDgwLCAweDAwMDAwMDBmLAotCTB4MDQwMDEwMWIsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMGYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHg1OTJlNTgwMSwgMHg4MzJjYWMwMCwgMHgwMDAwMDAwNSwKLQkweDgyMDgwYzgwLCAweDAwMDAwMDBmLCAweDA0MDAxMDBkLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMGYsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4NTkyZTU4MDEsCi0JMHg4MzJjYWMwMCwgMHgwMDAwMDAwNSwgMHg4MjA0MTQ4MCwgMHgwMDAwMDAwZiwKLQkweDA0MDAxMDA3LCAweDQyMDAxMDAwLCAweDAwMDAwMDBmLCAweDQwMDhiMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsIDB4MDQwMWYwMDQsIDB4NDAwNGIwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg1OTMxZDgyMSwgMHg1OGVmNDAwYiwKLQkweDU4ZWU1ODBkLCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDU5MmU1ODAxLAotCTB4NThlYzAwMDksIDB4MDgwMWY4MDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHg1YzAwYjAwMCwgMHg1YzAwYTgwMCwgMHg1YzAwYTAwMCwgMHg1YzAyNTgwMCwKLQkweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDRkMmMwMDAwLCAweDRjNTAwMDAwLAotCTB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsIDB4NTljYzAwMDYsIDB4ODIwMDBkODAsCi0JMHgwMTAwMDAwMCwgMHgwNDAwMDAyYywgMHg1OWNjMDAwNywgMHg5MDAwYjFjMCwKLQkweDgyNThiNTAwLCAweDAwMDAwMGZmLCAweDgwNThiMTA0LCAweDgyNThiNDAwLAotCTB4MDAwMDAwMDIsIDB4ODI1ODBjODAsIDB4MDAwMDAwMDcsIDB4MDQwMDEwMDMsCi0JMHg0MjAwYjAwMCwgMHgwMDAwMDAwNiwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwKLQkweDU5MzAxMDA4LCAweDgwMDgxMWMwLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4ODIwOGFjMDAsIDB4MDAwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMGE5M2UsCi0JMHg4MjAwMGQwMCwgMHhmZjAwMDAwMCwgMHg4MDA0MDljMCwgMHgwNDAwMDAxOSwKLQkweDgyMDBiNTAwLCAweDAwMDAwMGZmLCAweDgwNThiMTA0LCAweDgyNTgwYzgwLAotCTB4MDAwMDAwMGUsIDB4MDQwMDEwMDMsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMGQsCi0JMHg1ODA4MTAwMSwgMHg4MDA4MTFjMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDgyMDhhYzAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLAotCTB4MDQwMWYwMDgsIDB4NTkzMDEwMDgsIDB4ODAwODExYzAsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0ODAwMTAwNSwgMHg1OWNjMDAwNywgMHg0ODAwMTAwNiwKLQkweDA0MDFmZjNiLCAweDVjMDBiMDAwLCAweDVjMDBhODAwLCAweDVjMDBhMDAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwMCwgMHg1OWNjMDAwNiwgMHg4MjAwMDU4MCwgMHgwMjAwMDAwMCwKLQkweDA0MDAwMDAzLCAweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDRkMmMwMDAwLAotCTB4NTkzMjU4MDgsIDB4ODEyZTU5YzAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsCi0JMHg0ODA2NWEwNiwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHg1YzAyNTgwMCwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDQ5MzNjODU3LCAweDRkMmMwMDAwLAotCTB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwMiwgMHg1OWNjMDgwNiwgMHg4MjA0MDU4MCwgMHgwMTAwMDAwMCwKLQkweDA0MDAwMDA0LCAweDgyMDRiNTAwLCAweDAwMDBmZmZmLCAweDgwNThiMTA0LAotCTB4ODNjY2E0MDAsIDB4MDAwMDAwMDYsIDB4NTkzMDAwMDgsIDB4ODIwMGFjMDAsCi0JMHgwMDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHgwNDAxZmYwYywKLQkweDVjMDBiMDAwLCAweDVjMDBhODAwLCAweDVjMDBhMDAwLCAweDVjMDI1ODAwLAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NDgwM2M4NTcsIDB4NDgwN2M4NTcsCi0JMHg0ODBiYzg1NywgMHg0ODBmYzg1NywgMHg0ODEzYzg1NywgMHg0ODFiYzg1NywKLQkweDQ5MmZjODU3LCAweDRkMmMwMDAwLCAweDRjMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA4MTksIDB4NWMwMDAwMDAsIDB4MDQwMDAwMGYsIDB4NDgwMjU4MDMsCi0JMHg1YzAwMDAwMCwgMHg0ODAyNTgwYSwgMHg0YzAwMDAwMCwgMHg0ODFhNTgwMSwKLQkweDQ4MTI1ODA5LCAweDQ4MDY1ODA0LCAweDQ4MGE1ODA3LCAweDQ4MGU1ODA4LAotCTB4NDEyYzEwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4YTEsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDRkMWMwMDAwLCAweDU5Y2MwMDAxLCAweDgyMDAwNTAwLCAweDAwZmZmZmZmLAotCTB4NTkzNDEwMDIsIDB4ODIwODE1MDAsIDB4MDBmZmZmZmYsIDB4ODAwODA1ODAsCi0JMHgwNDAyMDAxZiwgMHg0OTdhNjIwNSwgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDM1LCAweDAyMDFmODAwLCAweDAwMTA5MTgzLCAweDVjMDI3MDAwLAotCTB4MDQwMjAwMTIsIDB4NTkxYzAwMWMsIDB4ODAwMDAxYzAsIDB4MDQwMDAwMGYsCi0JMHg0OTdhMzgxYywgMHg1OTFjMDQxNCwgMHg4YzAwMDUwMiwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDg0MDAwNTAyLCAweDQ4MDIzYzE0LCAweDU5MWMxNDA2LAotCTB4ODIwODA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMDYsIDB4ODIwODA1ODAsCi0JMHgwMDAwMDAwNiwgMHgwNDAwMDAwNSwgMHgwNDAxZmM5ZSwgMHgwNDAxZjAwNCwKLQkweDA0MDFmODA1LCAweDA0MDFmMDAyLCAweDA0MDFmOGMwLCAweDVjMDIzODAwLAotCTB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsIDB4NTkxZTU4MDgsIDB4NDkzM2M4NTcsCi0JMHg0OTFmYzg1NywgMHg0OTNiYzg1NywgMHg0OTJmYzg1NywgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDE1LCAweDA0MDAwMGIzLCAweDgzMzgwNTgwLCAweDAwMDAwMDE2LAotCTB4MDQwMjAwYWUsIDB4NGQzMDAwMDAsIDB4NDExZTYwMDAsIDB4NTljYzAyMDcsCi0JMHg0ODAzYzg1NywgMHg4MjAwMGQwMCwgMHgwMDAwZmYwMCwgMHg4MjA0MDU4MCwKLQkweDAwMDAxNzAwLCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLCAweDAwMDAwMzAwLAotCTB4MDQwMjAwNWIsIDB4NTkxYzAyMDMsIDB4NDgwM2M4NTcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwZCwgMHgwNDAwMDAzZiwgMHg4MTJlNTljMCwgMHgwNDAwMDA5YSwKLQkweDU5MWMwMjAyLCAweDQ4MDNjODU3LCAweDgyMDAwNTgwLCAweDAwMDBmZmZmLAotCTB4MDQwMjAwN2UsIDB4NTkyYzAyMGEsIDB4NDgwM2M4NTcsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAyMDAwNywKLQkweDU5MmMwODBmLCAweDU5MWMwMDExLCAweDQ4MDNjODU3LCAweDQ4MDdjODU3LAotCTB4ODAwNDA1ODAsIDB4MDQwMjAwNzEsIDB4NTkxYzA0MTQsIDB4NDgwM2M4NTcsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDA2ZCwgMHg0MTc4MDgwMCwgMHg1OTFjMTIwNiwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDBhLCAweDAyMDFmODAwLCAweDAwMTA2M2VlLAotCTB4NTkyYzA0MDYsIDB4NDgwM2M4NTcsIDB4ODAwMDAxYzAsIDB4MDQwMDAwMGMsCi0JMHg4MDA4MGM4MCwgMHgwNDAwMTAwNCwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDgwMDAxMDQwLCAweDQ4MGE1YzA2LCAweDgwMDgxMWMwLCAweDA0MDIwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDhiM2MsIDB4MDQwMWYwNmIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGVlNywgMHg1OTFjMDgxNywgMHg1OTFjMDAxOCwgMHg0ODA2NTgwOCwKLQkweDQ4MDI1ODA5LCAweDU5MzAwMDA3LCAweDhjMDAwNTAwLCAweDAyMDIwODAwLAotCTB4MDAxMDBlZTQsIDB4NDk3YTM4MDgsIDB4MDIwMWY4MDAsIDB4MDAwMjAxZWUsCi0JMHgwNDAyMDA0YSwgMHg0MTFlNjAwMCwgMHgwNDAxZmMzZSwgMHgwNDAxZjA1YSwKLQkweDA0MDFmYzZkLCAweDA0MDAwMDEzLCAweDQ5MzY2MDA5LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDMsIDB4NDkyZTYwMDgsIDB4NTkxYzA4MTcsIDB4NTkxYzEwMTgsCi0JMHg0ODA2NjAxNywgMHg0ODBhNjAxOCwgMHg0ZDM4MDAwMCwgMHg1OTFlNzQwMywKLQkweDRkMzAwMDAwLCAweDQxMWU2MDAwLCAweDA0MDFmYzJlLCAweDVjMDI2MDAwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4NWMwMjcwMDAsIDB4MDQwMWYwNDYsCi0JMHg1OWE4MDAzOSwgMHg0ODAyM2EwNSwgMHgwNDAxZjA0MywgMHg1OWNjMDQwNywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDBiLCAweDA0MDIwMDI1LCAweDU5MzQwYTAwLAotCTB4ODQwNDBkMGUsIDB4NDgwNjZhMDAsIDB4NTkyYzBhMDQsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDBmZiwgMHg4MjA0MGQ4MCwgMHgwMDAwMDAxNCwgMHgwNDAwMDAwMywKLQkweDRhMDI2MjFkLCAweDAwMDAwMDAzLCAweDU5MzAwMDA3LCAweDhjMDAwNTAwLAotCTB4MDIwMjA4MDAsIDB4MDAxMDBlZTQsIDB4NGQ0MDAwMDAsIDB4NDIwMjgwMDAsCi0JMHgwMDAwMDAwMywgMHg1OTJjMGEwOCwgMHgwMjAxZjgwMCwgMHgwMDEwNGJlZSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDVjMDI4MDAwLCAweDQ5N2E2MDA4LAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwODUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMiwgMHg0MjAwMDgwMCwgMHg4MDAwNDA0YiwKLQkweDAyMDFmODAwLCAweDAwMDIwODU1LCAweDA0MDFmMDFiLCAweDU5Y2MwMjA3LAotCTB4ODIwMDA1ODAsIDB4MDAwMDJhMDAsIDB4MDQwMjAwMDQsIDB4NTlhODAwMzksCi0JMHg0ODAyM2EwNSwgMHgwNDAxZjAxNCwgMHg4MTJlNTljMCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDU5MWMwMDA3LAotCTB4OGMwMDA1MDAsIDB4MDIwMjA4MDAsIDB4MDAxMDBlZTQsIDB4NTkxYzA0MDIsCi0JMHg0ODAyNWMwNiwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LCAweDAyMDFmODAwLAotCTB4MDAxMDQ4MDEsIDB4NWMwMjYwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHgwNDAxZjAwMiwgMHg1YzAyNjAwMCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwKLQkweDA0MDFmODE5LCAweDA0MDFmN2ZkLCAweDQ5MzNjODU3LCAweDgzMzgwNTgwLAotCTB4MDAwMDAwMTUsIDB4MDQwMjAwMDQsIDB4NTlhODAwMzksIDB4NDgwMjNhMDUsCi0JMHgwNDAxZjAwZCwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxNiwgMHgwNDAyMDAwZCwKLQkweDRkMzAwMDAwLCAweDQxMWU2MDAwLCAweDAyMDFmODAwLCAweDAwMTBhM2ZhLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4MzEsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHg1YzAyNjAwMCwgMHg0OTdhMzgxYywgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDFjMDFmMDAwLCAweDU5MWMwNDE0LCAweDg0MDAwNTQwLCAweDQ4MDIzYzE0LAotCTB4NTljYzEwMGIsIDB4NDkzM2M4NTcsIDB4NDkxZmM4NTcsIDB4NDkyZmM4NTcsCi0JMHg0ODAzYzg1NywgMHg0ODBiYzg1NywgMHg4YzA4MTUzYywgMHgwNDAwMDAwNiwKLQkweDU5YTgwMDM5LCAweDQ4MDIzYTA1LCAweDQ5N2EzODFjLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NGQzMDAwMDAsIDB4NDExZTYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwODk4YiwgMHg1YzAyNjAwMCwgMHg1OTFjMDQwNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAwLCAweDAyMDAwMDAwLCAweDAwMDIwOGI0LCAweDU5MWMwNDAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwNTAsIDB4MDQwMjAwMGQsIDB4NGQzMDAwMDAsCi0JMHg0MTFlNjAwMCwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0MjAwMDgwMCwKLQkweDgwMDAwMDQzLCAweDAyMDFmODAwLCAweDAwMDIwODU1LCAweDVjMDI2MDAwLAotCTB4NDk3YTM4MWMsIDB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4NTkxYzAyMDMsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwZCwgMHgwNDAwMDAxNCwgMHg4MTJlNTljMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDU5MWMwMjAzLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDQsIDB4MDQwMjAwMTEsIDB4NTkyYzAyMGEsIDB4OGMwMDA1MDIsCi0JMHgwNDAwMDAwZSwgMHg0YTAyMzgxMiwgMHgwZmZmZmZmZiwgMHg1OTJjMDIwOCwKLQkweDg0MDAwNTFlLCAweDQ4MDI1YTA4LCAweDQyMDAwMDAwLCAweDAwMDAwMDAxLAotCTB4NDgwMjNhMTQsIDB4MDQwMWYwMjEsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDcsCi0JMHg0ODAyM2ExNCwgMHgwNDAxZjAxZCwgMHg1OTJjMDIwYSwgMHg0ODAzYzg1NywKLQkweDhjMDAwNTAwLCAweDA0MDIwMDBiLCAweDhjMDAwNTAyLCAweDA0MDAwN2Y3LAotCTB4NTkxYzA0MTQsIDB4OGMwMDA1MWMsIDB4MDQwMjA3ZWIsIDB4NTkxYzAwMTEsCi0JMHg0ODAzYzg1NywgMHg4MDAwMDFjMCwgMHgwNDAwMDdmMCwgMHgwNDAxZjdlNiwKLQkweDhjMDgxNTNhLCAweDA0MDIwN2VkLCAweDU5Y2MwMDBhLCAweDU5MmMxODBmLAotCTB4NDgwM2M4NTcsIDB4NDgwZmM4NTcsIDB4ODAwYzA1ODAsIDB4MDQwMDA3ZTcsCi0JMHg1OWNjMDAwYSwgMHg0ODAzYzg1NywgMHg0ODAyMzgxNiwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDA1LCAweDQ4MDIzYTE0LCAweDAyMDFmMDAwLCAweDAwMTA5MDFiLAotCTB4NDkzM2M4NTcsIDB4NGQxYzAwMDAsIDB4NTljYzAwMDEsIDB4NTkzNDEwMDIsCi0JMHg4MDA4MDU4MCwgMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHgwNDAyMDA0MSwKLQkweDU5MzAxNDE5LCAweDAyMDFmODAwLCAweDAwMTA5MWQ5LCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTkxYzE0MDYsIDB4ODIwODA1ODAsIDB4MDAwMDAwMDcsCi0JMHgwNDAwMDAzOCwgMHg4MjA4MDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAzNSwKLQkweDgyMDgwNTgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDMyLCAweDU5MWMwMjAyLAotCTB4ODIwMDBkODAsIDB4MDAwMGZmZmYsIDB4MDQwMDAwMDQsIDB4NTkzMDFhMTksCi0JMHg4MDBjMDU4MCwgMHgwNDAyMDAyYiwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxNSwKLQkweDA0MDAwMDI2LCAweDRkMzAwMDAwLCAweDRkMmMwMDAwLCAweDQxMWU2MDAwLAotCTB4NTkzMjU4MDgsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OTJjMDIwNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDE0LCAweDA0MDAwMDAzLCAweDRhMDI2MjFkLAotCTB4MDAwMDAwMDMsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDMsIDB4NTkyYzBhMDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGJlZSwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDVjMDI1ODAwLCAweDQ5N2E2MDA4LCAweDRhMDI2NDAzLCAweDAwMDAwMDg1LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDIsCi0JMHg0MjAwMDgwMCwgMHg4MDAwNDA0YiwgMHgwMjAxZjgwMCwgMHgwMDAyMDg1NSwKLQkweDVjMDI2MDAwLCAweDA0MDFmMDAzLCAweDU5YTgwMDM5LCAweDQ4MDIzYTA1LAotCTB4NDk3YTM4MWMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NWMwMjM4MDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg0YzU4MDAwMCwgMHg0ZDJjMDAwMCwKLQkweDU5MzI1ODA4LCAweDgzMzgzNTgwLCAweDAwMDAwMDE1LCAweDA0MDAwMDEwLAotCTB4NTkzNDIyMDAsIDB4ODQxMDI1MDIsIDB4NDgxMjZhMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGRmNCwgMHgwNDAwMDA2NiwgMHgwMjAxZjgwMCwgMHgwMDEwOTM2MCwKLQkweDA0MDIwMDA1LCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDAyMDFmODAwLAotCTB4MDAxMDkzNDYsIDB4MDQwMWZhMGQsIDB4MDQwMWYwNzksIDB4ODNjYzE0MDAsCi0JMHgwMDAwMDAwOCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwgMHg4MzM0MWMwMCwKLQkweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTA4MmZmLCAweDA0MDIwMDE1LAotCTB4ODNjYzE0MDAsIDB4MDAwMDAwMGEsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsCi0JMHg4MzM0MWMwMCwgMHgwMDAwMDAwOCwgMHgwMjAxZjgwMCwgMHgwMDEwODJmZiwKLQkweDA0MDIwMDBjLCAweDAyMDFmODAwLCAweDAwMTAxZTFiLCAweDU5MzQyMjAwLAotCTB4NTljYzEwMDcsIDB4ODAwODExYzAsIDB4MDQwMDAwMDMsIDB4NDgwYTY4MDEsCi0JMHg4NDEwMjU0MiwgMHg4NDEwMjUxYSwgMHg0ODEyNmEwMCwgMHgwNDAxZjA1ZiwKLQkweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLAotCTB4NWMwMjc4MDAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg1OTM0MDIwMCwgMHg4NDAwMDU1OCwgMHg0ODAyNmEwMCwKLQkweDRkMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NDkzNjYwMDksIDB4NDk3YTYwMDgsIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywgMHgwMDAwMDAwMSwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTBhNzY2LCAweDAyMDFmODAwLAotCTB4MDAxMDM5M2UsIDB4MDQwMDAwMTEsIDB4NDE3ODI4MDAsIDB4NDIwMDMwMDAsCi0JMHgwMDAwMDAwMSwgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwKLQkweDAyMDFmODAwLCAweDAwMTBhMjUwLCAweDVjMDI4MDAwLCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDQsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NGEwMjY0MjAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwOSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDBiLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY0NzAsIDB4NWMwMjYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGRmNCwgMHgwNDAwMDAyMiwgMHgwMjAxZjgwMCwgMHgwMDEwOTM2MCwKLQkweDA0MDIwMDIyLCAweDA0MDFmOWIxLCAweDA0MDFmMDFkLCAweDRkM2MwMDAwLAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OTM0MDIwMCwKLQkweDg0MDAwNTU4LCAweDQ4MDI2YTAwLCAweDQyMDAzMDAwLCAweDAwMDAwMDAzLAotCTB4NDE3ODI4MDAsIDB4NDIwMDIwMDAsIDB4MDAwMDAwMDUsIDB4NGQ0MDAwMDAsCi0JMHg0ZDQ0MDAwMCwgMHg1OTM2OGMwMywgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwKLQkweDAyMDFmODAwLCAweDAwMTA5NjJhLCAweDVjMDI4ODAwLCAweDVjMDI4MDAwLAotCTB4NWMwMjc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFlMWIsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDhiNCwgMHgwNDAxZjAwMiwgMHgwNDAxZmNhOSwgMHg1YzAyNTgwMCwKLQkweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDQxMzgwMDAwLAotCTB4ODMzODM0ODAsIDB4MDAwMDAwNTYsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsCi0JMHgwYzAxZjAwMSwgMHgwMDEwN2M3ZSwgMHgwMDEwN2M3OSwgMHgwMDEwN2M3ZSwKLQkweDAwMTA3YzdlLCAweDAwMTA3YzdlLCAweDAwMTA3YzdlLCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywKLQkweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywKLQkweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjN2UsIDB4MDAxMDdjNzcsIDB4MDAxMDdjN2UsIDB4MDAxMDdjN2UsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywKLQkweDAwMTA3Yzc3LCAweDAwMTA3YzdlLCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3ZSwKLQkweDAwMTA3YzdlLCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3ZSwgMHgwMDEwN2M3NywKLQkweDAwMTA3Yzc3LCAweDAwMTA3YzdlLCAweDAwMTA3YzdlLCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjN2UsIDB4MDAxMDdjN2UsIDB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3ZSwgMHgwMDEwN2M3NywKLQkweDAwMTA3Yzc3LCAweDAwMTA3Yzc3LCAweDAwMTA3YzdlLCAweDAwMTA3Yzc3LAotCTB4MDAxMDdjNzcsIDB4MDAxMDdjNzcsIDB4MDAxMDdjN2UsIDB4MDAxMDdjNzcsCi0JMHgwMDEwN2M3NywgMHgwMDEwN2M3NywgMHgwMDEwN2M3ZSwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDQ5M2E2NDAzLAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4NDkzM2M4NTcsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwMSwgMHg0OTNhNjQwMywgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwKLQkweDU5MzAwNDAzLCAweDgyMDAzNDgwLCAweDAwMDAwMDU2LCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4ODMzODM1ODAsIDB4MDAwMDAwMTMsIDB4MDQwMDAwOTYsCi0JMHg4MzM4MzU4MCwgMHgwMDAwMDAyNywgMHgwNDAyMDA0YywgMHg0OTMzYzg1NywKLQkweDAyMDFmODAwLCAweDAwMTA2OGY2LCAweDAyMDFmODAwLCAweDAwMTA4ZWYxLAotCTB4MDQwMDAwMGIsIDB4MDIwMWY4MDAsIDB4MDAxMDhmMDUsIDB4MDQwMDAwNDEsCi0JMHg1OTMwMDQwMywgMHg4MjAwMGQ4MCwgMHgwMDAwMDAyMiwgMHgwNDAyMDAzOCwKLQkweDA0MDFmYzYxLCAweDA0MDAwMDNhLCAweDA0MDFmMDNhLCAweDAyMDFmODAwLAotCTB4MDAxMDFlMWIsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNjNywgMHgwNDAxZjkwMSwgMHg0ZDQ0MDAwMCwgMHg1OTM2OGMwMywKLQkweDgzNDQwNTgwLCAweDAwMDAwN2ZlLCAweDA0MDIwMDA4LCAweDU5YTgxMDI2LAotCTB4ODQwODE1NDAsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4MDQwMjAwMDIsCi0JMHg4NDA4MTU0YSwgMHg0ODBiNTAyNiwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwKLQkweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLAotCTB4NWMwMjc4MDAsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMDAwMGMsCi0JMHg1OTMyNjgwOSwgMHg1OTM0MDAwOCwgMHg4MDAwMDFjMCwgMHgwNDAyMDAwOCwKLQkweDU5MzY4YzAzLCAweDQ5MzNjODU3LCAweDQ5MzdjODU3LCAweDQ5NDdjODU3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ0NTEsIDB4MDQwMWYwMGMsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDE1LCAweDQxNzgyODAwLCAweDQyMDAyMDAwLCAweDAwMDAwMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMDk2MmEsIDB4NWMwMjg4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOTBlYywgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHgxYzAxZjAwMCwKLQkweDA0MDFmOGNlLCAweDA0MDFmN2ZhLCAweDgzMzgwNTgwLCAweDAwMDAwMDE0LAotCTB4MDQwMDAwMGMsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsCi0JMHgwMjAyMDAwMCwgMHgwMDEwNzZmYiwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDAwMGVmLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsIDB4NGQzYzAwMDAsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg1YzAyNzgwMCwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDE2LCAweDQxNzgyODAwLCAweDRkNDAwMDAwLAotCTB4NGQ0NDAwMDAsIDB4NTkzNjhjMDMsIDB4NDIwMDIwMDAsIDB4MDAwMDAwMDksCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHgwMjAxZjgwMCwgMHgwMDEwOTYyYSwKLQkweDVjMDI4ODAwLCAweDVjMDI4MDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjYzLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsIDB4MDAxMDhlZjEsCi0JMHgwNDAyMDAwYywgMHgwMjAxZjgwMCwgMHgwMDEwMWUxYiwgMHgwNDAxZjg5ZiwKLQkweDU5MzQwYzAzLCAweDgyMDQwNTgwLCAweDAwMDAwN2ZlLCAweDA0MDIwN2M4LAotCTB4NTlhODA4MjYsIDB4ODQwNDBkNDAsIDB4NDgwNzUwMjYsIDB4MDQwMWY3YzQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGYwNSwgMHgwNDAyMDAwMywgMHgwNDAxZjg5MywKLQkweDA0MDFmN2JmLCAweDU5MzAwNDAzLCAweDgyMDAwZDgwLCAweDAwMDAwMDMyLAotCTB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDIwYjIsIDB4MDQwMWY3YjgsCi0JMHg1OTMwMDQwMywgMHg4MjAwMGQ4MCwgMHgwMDAwMDAyMiwgMHgwNDAwMDg4NywKLQkweDA0MDFmN2IzLCAweDQ5MzNjODU3LCAweDQ4MDNjODU3LCAweDBjMDFmMDAxLAotCTB4MDAxMDdkYTAsIDB4MDAxMDdkYTAsIDB4MDAxMDdkYTAsIDB4MDAxMDdkYTAsCi0JMHgwMDEwN2RhMCwgMHgwMDEwN2RhMCwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsCi0JMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsCi0JMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q4MywgMHgwMDEwN2RhMCwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZGEwLCAweDAwMTA3ZGEwLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsCi0JMHgwMDEwN2RhMCwgMHgwMDEwN2RhMCwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsIDB4MDAxMDdkOTEsIDB4MDAxMDdkYTAsCi0JMHgwMDEwN2Q3YSwgMHgwMDEwN2Q4YSwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZDhhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkYTAsIDB4MDAxMDdkOGQsIDB4MDAxMDdkN2EsCi0JMHgwMDEwN2Q3YywgMHgwMDEwN2RhMCwgMHgwMDEwN2Q3YSwgMHgwMDEwN2RhMCwKLQkweDAwMTA3ZGEwLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkYTAsIDB4MDAxMDdkN2EsIDB4MDAxMDdkN2EsCi0JMHgwMDEwN2Q3YSwgMHgwMDEwN2RhMCwgMHgwMDEwN2Q3YSwgMHgwMDEwN2Q3YSwKLQkweDAwMTA3ZDdhLCAweDAwMTA3ZGEwLCAweDAwMTA3ZDdhLCAweDAwMTA3ZDdhLAotCTB4MDAxMDdkN2EsIDB4MDAxMDdkYTAsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDVjMDI1ODAwLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDRhMDI2MjAzLAotCTB4MDAwMDAwMDUsIDB4NTlhODAwMzksIDB4NDgwMjYyMDUsIDB4NTlhODAwMzcsCi0JMHg0ODAyNjIwNiwgMHgxYzAxZjAwMCwgMHg1OTMwMDgxZSwgMHg0OTc4MGEwNSwKLQkweDA0MDFmMDE0LCAweDAyMDFmODAwLCAweDAwMTA5MGVjLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDIwYjIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4YywgMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwNjhmNiwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDAyMDFmODAwLCAweDAwMTA2OGY2LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4MDIwMWYwMDAsIDB4MDAxMDY5ODIsCi0JMHg0OTMzYzg1NywgMHg0YTAyNjIwMywgMHgwMDAwMDAwMiwgMHg1OWE4MDAzNywKLQkweDQ4MDI2MjA2LCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDAyMDFmODAwLAotCTB4MDAxMDhkZjQsIDB4MDQwMDAwMmEsIDB4NGQyYzAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOTM2MCwgMHgwNDAyMDAwYSwgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDMxLCAweDQyMDAwODAwLCAweDAwMDAwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDkyMDQsIDB4NWMwMjgwMDAsIDB4MDQwMWYwMWMsIDB4NTkzMDBjMDYsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAxMCwgMHgwNDAwMDAwNCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDExLCAweDA0MDIwMDBhLCAweDRhMDI1YTA2LCAweDAwMDAwMDMxLAotCTB4NGEwMjU4MGQsIDB4MDAwMDAwMDQsIDB4NGEwMjU4MGUsIDB4MDAwMDAwZmYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwNDAxZjAwYywgMHg1OTJjMDQwNCwKLQkweDhjMDAwNTFlLCAweDA0MDAwMDA5LCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLAotCTB4NGEwMjU4MDUsIDB4MDEwMDAwMDAsIDB4NTkzMWQ4MjEsIDB4NThlZjQwMGIsCi0JMHg1OGVjMDAwOSwgMHgwODAxZjgwMCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDU5MzQwNDAwLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4ODIwMDM0ODAsIDB4MDAwMDAwMGMsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsCi0JMHg1OTMwMzQwMywgMHg4MjE4MGQ4MCwgMHgwMDAwMDA0ZCwgMHgwMjAwMDAwMCwKLQkweDAwMTA5MTU0LCAweDgyMTgwZDgwLCAweDAwMDAwMDMzLCAweDAyMDAwMDAwLAotCTB4MDAxMDkxMGYsIDB4ODIxODBkODAsIDB4MDAwMDAwMjgsIDB4MDIwMDAwMDAsCi0JMHgwMDEwOGY0NiwgMHg4MjE4MGQ4MCwgMHgwMDAwMDAyOSwgMHgwMjAwMDAwMCwKLQkweDAwMTA4ZjVhLCAweDgyMTgwZDgwLCAweDAwMDAwMDFmLCAweDAyMDAwMDAwLAotCTB4MDAxMDc4YWYsIDB4ODIxODBkODAsIDB4MDAwMDAwNTUsIDB4MDIwMDAwMDAsCi0JMHgwMDEwNzg4OCwgMHg4MjE4MGQ4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDU4ZSwKLQkweDgyMTgwZDgwLCAweDAwMDAwMDIyLCAweDAyMDAwMDAwLCAweDAwMTA3OGRjLAotCTB4ODIxODBkODAsIDB4MDAwMDAwMzUsIDB4MDIwMDAwMDAsIDB4MDAxMDc5ZDcsCi0JMHg4MjE4MGQ4MCwgMHgwMDAwMDAzOSwgMHgwNDAwMDUzNiwgMHg4MjE4MGQ4MCwKLQkweDAwMDAwMDNkLCAweDAyMDAwMDAwLCAweDAwMTA3OTBjLCAweDgyMTgwZDgwLAotCTB4MDAwMDAwNDQsIDB4MDIwMDAwMDAsIDB4MDAxMDc5NDksIDB4ODIxODBkODAsCi0JMHgwMDAwMDA0OSwgMHgwMjAwMDAwMCwgMHgwMDEwNzk5ZSwgMHg4MjE4MGQ4MCwKLQkweDAwMDAwMDQxLCAweDAyMDAwMDAwLCAweDAwMTA3OThhLCAweDgyMTgwZDgwLAotCTB4MDAwMDAwNDMsIDB4MDIwMDAwMDAsIDB4MDAxMDkyYTUsIDB4ODIxODBkODAsCi0JMHgwMDAwMDA1MSwgMHgwMjAwMDAwMCwgMHgwMDEwOTMwYiwgMHg4MjE4MGQ4MCwKLQkweDAwMDAwMDA0LCAweDA0MDIwMDAzLCAweDQyMDAwMDAwLCAweDAwMDAwMDAxLAotCTB4ODMzODBkODAsIDB4MDAwMDAwMTUsIDB4MDQwMDAwMDYsIDB4ODMzODBkODAsCi0JMHgwMDAwMDAxNiwgMHgwMjAyMDAwMCwgMHgwMDEwNzZmYiwgMHgwNDAxZjIyNiwKLQkweDRkMmMwMDAwLCAweDRkM2MwMDAwLCAweDBjMDFmODA0LCAweDVjMDI3ODAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4MDAxMDdlNDIsIDB4MDAxMDdlNDYsCi0JMHgwMDEwN2U0MiwgMHgwMDEwN2ViYiwgMHgwMDEwN2U0MiwgMHgwMDEwN2ZjNywKLQkweDAwMTA4MDYwLCAweDAwMTA3ZTQyLCAweDAwMTA3ZTQyLCAweDAwMTA4MDI5LAotCTB4MDAxMDdlNDIsIDB4MDAxMDgwM2IsIDB4NDkzM2M4NTcsIDB4NDk3YTYwMDcsCi0JMHg1OTMwMDgwOCwgMHg1ODA0MDAwMCwgMHg0YTAwMGEwNCwgMHgwMDAwMDEwMywKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDQ5MzNjODU3LCAweDQwMDAwMDAwLAotCTB4NDAwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NTlhODAwMTYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDA3NCwgMHgwNDAyMDA1YywgMHgwMjAxZjgwMCwKLQkweDAwMTBhMGIxLCAweDA0MDIwMDE2LCAweDA0MDFmODVjLCAweDAyMDFmODAwLAotCTB4MDAxMDhkZjQsIDB4MDQwMDAwMGMsIDB4MDIwMWY4MDAsIDB4MDAxMDkzNjAsCi0JMHgwNDAyMDAwOSwgMHg0MTc4MDgwMCwgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA5MjA0LCAweDVjMDI4MDAwLAotCTB4MDQwMWYwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDFlMWIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDcxMSwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA4ZGY0LCAweDA0MDAwMDA3LCAweDAyMDFmODAwLCAweDAwMTA5MzYwLAotCTB4MDQwMjAwMDQsIDB4MDQwMWZmM2QsIDB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjYzLCAweDAyMDFmODAwLCAweDAwMTBhODZlLCAweDU5MzQwMjAwLAotCTB4ODQwMDA1NTgsIDB4NDgwMjZhMDAsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTc2NiwgMHg0ZDMwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODkyLCAweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDQ5MzY2MDA5LAotCTB4NDk3YTYwMDgsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwgMHgwNDAwMDAxMSwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDA0LCAweDRhMDI2MjAzLCAweDAwMDAwMDA3LAotCTB4NGEwMjY0MjAsIDB4MDAwMDAwMDEsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDEsCi0JMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHg0MTc4MjgwMCwKLQkweDAyMDFmODAwLCAweDAwMTBhMjUwLCAweDVjMDI4MDAwLCAweDA0MDFmMDA5LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAwMGIsIDB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNjQ3MCwKLQkweDVjMDI2MDAwLCAweDA0MDFmZjA1LCAweDAyMDFmODAwLCAweDAwMTAxZTFiLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4MDQwMWZmMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjBkZSwgMHg0OTMzYzg1NywgMHg1OTM0MDIwMCwKLQkweDhjMDAwNTAwLCAweDA0MDAwMDBkLCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzYmQsIDB4NWMwMjc4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzkzZSwgMHgwNDAwMDAwNSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNiwKLQkweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NTlhODA4MTYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwNzQsIDB4MDQwMDAwMGUsCi0JMHg0ODA3Yzg1NywgMHg4MjA0MDU4MCwgMHgwMDAwMDEwMCwgMHgwNDAyMDBiNywKLQkweDU5Y2MwNDA4LCAweDQ4MDNjODU3LCAweDhjMDAwNTAwLCAweDA0MDAwMGIzLAotCTB4NTkzNDE0MDMsIDB4ODIwODA1ODAsIDB4MDAwMDA3ZmUsIDB4MDQwMDAwMDYsCi0JMHgwNDAxZjBhZSwgMHg1OTM0MTQwMywgMHg4MjA4MDU4MCwgMHgwMDAwMDdmZSwKLQkweDA0MDIwMDFhLCAweDU5YTgwMDI2LCAweDhjMDAwNTA2LCAweDA0MDAwMDE1LAotCTB4NTljYzAwMDAsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4NTlhODA4MTAsCi0JMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwgMHg4MDA0MDU4MCwgMHgwNDAwMDAwZCwKLQkweDAyMDFmODAwLCAweDAwMTAxZTFiLCAweDAyMDFmODAwLCAweDAwMDIwOGI0LAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NTEsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg0MjAyZDgwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwM2YzNywKLQkweDA0MDFmYTljLCAweDA0MDFmMDRjLCAweDAyMDFmODAwLCAweDAwMTA0NDgwLAotCTB4NTkzNDE0MDMsIDB4ODIwODA1ODAsIDB4MDAwMDA3ZmMsIDB4MDQwMjAwMWYsCi0JMHg0YTAyNjgwMiwgMHgwMGZmZmZmYywgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDEyLCAweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDBmLAotCTB4MDQwMWY4YTksIDB4NDE3ODA4MDAsIDB4NGQ0MDAwMDAsIDB4NDIwMjgwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwOTIwNCwgMHg1YzAyODAwMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHgwMjAxZjgwMCwgMHgwMDEwMWUxYiwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDU5YTgwMDZmLCAweDhjMDAwNTAyLAotCTB4MDQwMDAwMTEsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAxMCwgMHgwNDAyMDAwOSwgMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwKLQkweDAwZmYwMDAwLCAweDgyMDAwNTgwLCAweDAwZmYwMDAwLCAweDA0MDAwMDA2LAotCTB4NDIwMDEwMDAsIDB4MDAwMDAwMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDRhZGEsCi0JMHgwNDAyMDA1YSwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDA1YiwKLQkweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDA1LCAweDU5MmMwNDA0LAotCTB4OGMwMDA1MWMsIDB4MDQwMjA3YzksIDB4MDQwMWY4NzcsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDRhMDI2NDAzLCAweDAwMDAwMDAzLCAweDAyMDFmMDAwLAotCTB4MDAxMDY0NzAsIDB4NTljYzA0MDgsIDB4OGMwMDA1MTgsIDB4MDQwMDAwMTAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTBhYiwgMHgwMjAxZjgwMCwgMHgwMDEwNGUwZCwKLQkweDA0MDAwMDA0LCAweDU5Y2MwNDA4LCAweDhjMDAwNTE2LCAweDA0MDIwN2IzLAotCTB4NTlhODAwMjYsIDB4ODQwMDA1NGEsIDB4NDgwMzUwMjYsIDB4NTlhODAwMTAsCi0JMHg4NDAwMDU3MCwgMHg0ODAzODgzMiwgMHgwNDAxZjdhYywgMHg0MjAwMTAwMCwKLQkweDAwMDAwMGVmLCAweDQ4MGI1MDEwLCAweDQ5N2I4ODMwLCAweDg0MDgxNTcwLAotCTB4NDgwYjg4MzIsIDB4NTljNDA4MDIsIDB4ODQwNDBkNGMsIDB4NDgwNzg4MDIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTBkNSwgMHg1OWE4MDAyNiwgMHg4NDAwMDU0OCwKLQkweDQ4MDM1MDI2LCAweDAyMDFmODAwLCAweDAwMTBhMWVjLCAweDA0MDIwNzliLAotCTB4NTlhODAwMjYsIDB4ODQwMDA1NGMsIDB4NDgwMzUwMjYsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDQyMDAwMDAwLCAweDAwMDAwMGU4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDU5YjksIDB4MDIwMDA4MDAsIDB4MDAxMDQzZmMsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg0OTM2NjAwOSwgMHg1OTM0MDIwMCwKLQkweDg0MDAwNTFhLCAweDQ4MDI2YTAwLCAweDQyMDAwODAwLCAweDAwMDAwMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywgMHgwMDAwMDAwMiwKLQkweDAyMDFmMDAwLCAweDAwMTA2NDcwLCAweDA0MDFmZTJjLCAweDQyMDAwMDAwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMGEsIDB4NTk5YzAwMTcsIDB4OGMwMDA1MGEsCi0JMHgwNDAwMDdhYiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDQ5MzNjODU3LAotCTB4ODAwMDM1NDAsIDB4MDQwMDAwMDUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg4MDE4MzFjMCwgMHgwNDAyMDAwZSwKLQkweDU5MzAyMDA4LCAweDgwMTAyMWMwLCAweDA0MDAwMDA0LCAweDU4MTAwNDA0LAotCTB4OGMwMDA1MWUsIDB4MDQwMjAwMDgsIDB4NTkzNDFjMDMsIDB4NDIwMDIwMDAsCi0JMHgwMDAwMDAwNCwgMHg0MjAwMzAwMCwgMHgwMDAwMDAxMiwgMHgwMjAxZjgwMCwKLQkweDAwMTAzOGM3LCAweDAyMDFmODAwLCAweDAwMTAxZTFiLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NGM1YzAwMDAsIDB4NGQyYzAwMDAsIDB4NTkzMjU4MDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNTQzOSwgMHg1YzAyNTgwMCwgMHg1OWNjMDAwOCwKLQkweDQ4MDAyODA1LCAweDU5Y2MwMDA5LCAweDQ4MDAyODA2LCAweDQ5NzgyODA3LAotCTB4NDk3ODI4MDgsIDB4NDk3ODI4MDksIDB4NDk3ODI4MGEsIDB4NTljYzAwMTMsCi0JMHg4YzAwMDUzZSwgMHgwNDAwMDAwOSwgMHg1OWNjMDQxNCwgMHg5MDAwMDFjMCwKLQkweDU5Y2NiYzE1LCAweDgwNWMwNTQwLCAweDQ4MDAyODA3LCAweDU5Y2MwNDE2LAotCTB4OTAwMDAxYzAsIDB4NDgwMDI4MDgsIDB4NTljYzAwMTcsIDB4OGMwMDA1M2UsCi0JMHgwNDAwMDAwOSwgMHg1OWNjMDQxOCwgMHg5MDAwMDFjMCwgMHg1OWNjYmMxOSwKLQkweDgwNWMwNTQwLCAweDQ4MDAyODA5LCAweDU5Y2MwNDFhLCAweDkwMDAwMWMwLAotCTB4NDgwMDI4MGEsIDB4NWMwMGI4MDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxNCwgMHgwNDAyMDA0OCwKLQkweDU5YTgwMDZmLCAweDhjMDAwNTAyLCAweDA0MDAwMDE1LCAweDAyMDFmODAwLAotCTB4MDAxMDRlMGQsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsIDB4MDQwMjAwMDksCi0JMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwgMHgwMGZmMDAwMCwgMHg4MjAwMDU4MCwKLQkweDAwZmYwMDAwLCAweDA0MDAwMDBhLCAweDQyMDAxMDAwLCAweDAwMDAwMDA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRhZGEsIDB4MDQwMDAwMDUsIDB4NTlhODAwNmYsCi0JMHg4NDAwMDU0YywgMHg0ODAzNTA2ZiwgMHgwNDAxZjAzMSwgMHg4MzZjMDU4MCwKLQkweDAwMDAwMDAzLCAweDA0MDIwMDBiLCAweDU5MzAwMDA4LCAweDgwMDAwNTQwLAotCTB4MDQwMjAwMDgsIDB4NTkzNDFjMDMsIDB4NDIwMDIwMDAsIDB4MDAwMDAwMDYsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAxMywgMHgwMjAxZjgwMCwgMHgwMDEwMzhjNywKLQkweDAyMDFmODAwLCAweDAwMTA0NGUxLCAweDA0MDFmZWI4LCAweDA0MDFmYTFkLAotCTB4MDQwMjAwMWYsIDB4NTkzNDA0MDQsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMWMsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywKLQkweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDAwMDExLCAweDAyMDFmODAwLAotCTB4MDAxMDkzNjAsIDB4MDQwMjAwMGEsIDB4NDE3ODA4MDAsIDB4NGQ0MDAwMDAsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwOTIwNCwKLQkweDVjMDI4MDAwLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDRhMDI1YTA0LAotCTB4MDAwMDAxMDMsIDB4NGEwMjU4MDUsIDB4MDIwMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWUxYiwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0YTgzLCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDAwMDA3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDkzNjAsIDB4MDQwMjAwMDQsIDB4MDQwMWZkOGIsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHgwNDAxZmQ4OCwgMHg4MDAwMDU4MCwKLQkweDU5YTgwMDZmLCAweDhjMDAwNTBjLCAweDA0MDAwMDA1LCAweDg0MDAwNTBjLAotCTB4NDgwMzUwNmYsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWZmNjAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg1OWE4MDAxNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDE0LCAweDA0MDIwMDBiLCAweDQyMDAwODAwLCAweDAwMDAwMDBiLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsCi0JMHg0YTAyNjQwMywgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDA0MDFmNzRkLCAweDQ5MzNjODU3LAotCTB4NDAwMDMwMDAsIDB4NTlhODAwMTYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsCi0JMHgwNDAyMDAwYSwgMHg4MjE4MzU4MCwgMHgwMDAwMDAwYiwgMHgwNDAyMDAwNSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDA3LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDEsCi0JMHgwNDAxZjczYiwgMHg0ODAzYzg1NywgMHg0ZDJjMDAwMCwgMHg0ZDNjMDAwMCwKLQkweDBjMDFmODA0LCAweDVjMDI3ODAwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4MDAxMDdlNDIsIDB4MDAxMDgwNmYsIDB4MDAxMDdlNDIsIDB4MDAxMDgwYzQsCi0JMHgwMDEwN2U0MiwgMHgwMDEwODEzMiwgMHgwMDEwODA2MCwgMHgwMDEwN2U0MiwKLQkweDAwMTA3ZTQyLCAweDAwMTA4MTUyLCAweDAwMTA3ZTQyLCAweDAwMTA4MTYyLAotCTB4NDkzM2M4NTcsIDB4NGQxYzAwMDAsIDB4NTkzMDE0MDMsIDB4ODIwODA1ODAsCi0JMHgwMDAwMDAwMywgMHgwNDAwMDAwOCwgMHg4MjA4MTU4MCwgMHgwMDAwMDAxZSwKLQkweDA0MDIwMDAzLCAweDAyMDFmODAwLCAweDAwMDIwOGI0LCAweDVjMDIzODAwLAotCTB4MWMwMWYwMDAsIDB4MDQwMWZmNWEsIDB4MDQwMWY3ZmQsIDB4NDkzM2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAwYiwgMHgwMjAxZjgwMCwKLQkweDAwMTA5MzYwLCAweDA0MDIwMDA4LCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLAotCTB4MDIwMWY4MDAsIDB4MDAxMDkzNDYsIDB4MDQwMWZkMmMsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHgwNDAxZjhmNSwgMHgwNDAyMDAzMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDFkZTIsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg1OTM0MDIwMCwgMHg4NDAwMDU1OCwgMHg0ODAyNmEwMCwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDAyLCAweDQyMDAzMDAwLCAweDAwMDAwMDAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE3NjYsIDB4MDIwMWY4MDAsIDB4MDAxMDM5M2UsCi0JMHgwNDAwMDAxMSwgMHg0ZDQwMDAwMCwgMHg0MTc4MjgwMCwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDA1LCAweDQyMDI4MDAwLCAweDAwMDAwMDI5LCAweDAyMDFmODAwLAotCTB4MDAxMGEyNTAsIDB4NWMwMjgwMDAsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwNCwgMHg0YTAyNjQyMCwgMHgwMDAwMDAwMSwKLQkweDFjMDFmMDAwLCAweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjQ3MCwgMHgwNDAxZjdmNywgMHg1OWNjMDQwNywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA5LCAweDA0MDIwMDBhLCAweDU5MzQwNDEyLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4MDQwMDAwMGMsIDB4ODAwMDAwNDAsIDB4NDgwMjZjMTIsCi0JMHg0YTAyNjIwNiwgMHgwMDAwMDAwYSwgMHgwNDAxZjdlYSwgMHg1OWNjMDIwNywKLQkweDgyMDAwNTAwLCAweDAwMDBmZjAwLCAweDgyMDAwNTgwLCAweDAwMDAxOTAwLAotCTB4MDQwMDA3YzIsIDB4MDQwMWZjZTUsIDB4ODAwMDA1ODAsIDB4MDQwMWY2YzQsCi0JMHg0OTMzYzg1NywgMHg1OWE4MDAzMiwgMHg4MDAwMDU0MCwgMHgwNDAwMDAxNSwKLQkweDU5MzQwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwN2ZlLCAweDA0MDIwMDExLAotCTB4NTlhODAwMTAsIDB4ODAwMDAwMDAsIDB4NDgwMzUwMTAsIDB4NDE3YTc4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDNiZCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywKLQkweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMDIsIDB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAxMSwgMHgwMjAxZjgwMCwKLQkweDAwMTA5MzYwLCAweDA0MDIwMDBlLCAweDRjNTgwMDAwLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsIDB4MDAxMDkzNDYsIDB4NWMwMGIwMDAsCi0JMHgwNDAxZmNiZSwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNywgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDA0MDFmY2I3LAotCTB4NTljYzM0MDcsIDB4ODIxODM1MDAsIDB4MDAwMDAwZmYsIDB4ODIxODA1ODAsCi0JMHgwMDAwMDAwNSwgMHgwNDAwMDAxYywgMHg4MjE4MDU4MCwgMHgwMDAwMDAwYiwKLQkweDA0MDAwMDE2LCAweDU5Y2MwMjA3LCAweDgyMDAwNTAwLCAweDAwMDBmZjAwLAotCTB4MDQwMjAwMDQsIDB4ODIxODA1ODAsIDB4MDAwMDAwMDksIDB4MDQwMDAwMTIsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMTkwMCwgMHgwNDAyMDAwYywgMHg4MjE4MDU4MCwKLQkweDAwMDAwMDA5LCAweDA0MDAwMDBjLCAweDQyMDAwODAwLCAweDAwMDAwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4MDIwMWY4MDAsIDB4MDAxMDFlMWIsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmNjc3LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDU5MzI1ODA4LAotCTB4MDQwMDAwMDgsIDB4NTkyYzAyMDQsIDB4ODIwMDA1ODAsIDB4MDAwMDAxMzksCi0JMHgwNDAwMDdmNiwgMHg1OTJjMDQwNCwgMHg4YzAwMDUxZSwgMHgwNDAyMDdmMywKLQkweDU5MzQwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwN2ZlLCAweDA0MDIwMDA3LAotCTB4NTlhODAwMjYsIDB4ODQwMDA1NDAsIDB4NDgwMzUwMjYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDA1OSwgMHgwNDAxZjdlOSwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxZGUyLCAweDQyMDAzMDAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLAotCTB4MDAxMGE3NjYsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHgwNDAxZjdkZCwgMHg0OTMzYzg1NywgMHgwNDAxZjg0ZCwKLQkweDA0MDIwMDBiLCAweDQyMDAwODAwLCAweDAwMDAwMDA1LCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMywgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDAyMDFmODAwLAotCTB4MDAxMDkzNjAsIDB4MDQwMjAwMGEsIDB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDEwOTM0NiwgMHg1YzAwYjAwMCwKLQkweDA0MDFmYzVhLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDA0MDFmYzU3LAotCTB4ODAwMDA1ODAsIDB4MDQwMWY2MzYsIDB4NDkzM2M4NTcsIDB4MDQwMWY4MmQsCi0JMHgwNDAyMDAwYiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwMDUsIDB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjYyNiwgMHg0OTMzYzg1NywgMHgwNDAxZjgxZCwKLQkweDA0MDIwMDBiLCAweDQyMDAwODAwLCAweDAwMDAwMDBiLCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHg0MjAwMDAwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmNjE2LCAweDQ5MzNjODU3LCAweDU5Y2MwNDA3LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMDksIDB4NTljYzAyMDcsCi0JMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwgMHg4MjAwMGQ4MCwgMHgwMDAwMmEwMCwKLQkweDA0MDAwMDAzLCAweDgyMDAwZDgwLCAweDAwMDAxZTAwLCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg0ZDQwMDAwMCwgMHg0YzU4MDAwMCwgMHg1OWE4MDAyNiwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAzLCAweDQ4MDM1MDI2LCAweDA0MDFmODVjLAotCTB4MDQwMDAwMzgsIDB4NGQzNDAwMDAsIDB4NGQ0NDAwMDAsIDB4NTlhODAwMjYsCi0JMHg4NDAwMDU1MiwgMHg0ODAzNTAyNiwgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDBjLCAweDQyMDI4MDAwLCAweDAwMDAwMDJhLCAweDQyMDI4ODAwLAotCTB4MDAwMGZmZmYsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTI1OCwgMHg1OWE4MDgwNSwgMHg4NDA0MGQ0NCwgMHg0ODA3NTAwNSwKLQkweDQyMDI4MDAwLCAweDAwMDAwMDJhLCAweDRkM2MwMDAwLCAweDQyMDI3ODAwLAotCTB4MDAwMDAyMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkOTAsIDB4NWMwMjc4MDAsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDAyMDFmODAwLCAweDAwMTAxYmYwLCAweDQyMDBiMDAwLCAweDAwMDAwMDEwLAotCTB4NDIwMjg4MDAsIDB4MDAwMDA3ZjAsIDB4NGQyYzAwMDAsIDB4ODM0NDA1ODAsCi0JMHgwMDAwMDdmZSwgMHgwNDAwMDAwMywgMHgwMjAxZjgwMCwgMHgwMDEwNDQ1MSwKLQkweDgxNDY4ODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2Y5LCAweDVjMDI1ODAwLAotCTB4NTljYzA0MDgsIDB4OGMwMDA1MWUsIDB4MDQwMDAwMDQsIDB4NTlhODAwMjYsCi0JMHg4NDAwMDUxMiwgMHg0ODAzNTAyNiwgMHg1YzAyODgwMCwgMHg1YzAyNjgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0NDgwLCAweDRhMDI2ODAyLCAweDAwZmZmZmZlLAotCTB4NTlhODA4MjYsIDB4ODQwNDBkNTAsIDB4NTljYzAwMTMsIDB4OGMwMDA1M2UsCi0JMHgwNDAwMDAwMywgMHg4YzAwMDUzNiwgMHgwNDAwMDAwNCwgMHg1OWNjMDAxNywKLQkweDhjMDAwNTM2LCAweDA0MDIwMDAyLCAweDg0MDQwZDEwLCAweDQ4MDc1MDI2LAotCTB4NTljYzA4MDAsIDB4ODIwNDBkMDAsIDB4MDBmZmZmZmYsIDB4NDgwNzUwMTAsCi0JMHg4MDA0MDExMCwgMHg0ODAzNTAxZCwgMHg0ODAzODg4MSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTBkLCAweDA0MDAwMDA3LCAweDU5Y2MwMDA5LCAweDQ4MDM1MDM1LAotCTB4NTljYzAwMGEsIDB4NDgwMzUwMzYsIDB4MDIwMWY4MDAsIDB4MDAxMDkwYWIsCi0JMHg1YzAwYjAwMCwgMHg1YzAyODAwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDRjNTgwMDAwLCAweDU5YTgwMDEwLCAweDgyMDAwNTAwLCAweDAwZmZmZjAwLAotCTB4MDQwMDAwMjIsIDB4NTljYzEwMDAsIDB4ODIwODE1MDAsIDB4MDBmZmZmMDAsCi0JMHg4MDA4MDU4MCwgMHgwNDAwMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzOSwKLQkweDA0MDFmMDE2LCAweDgzY2MxNDAwLCAweDAwMDAwMDBiLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMDIsIDB4ODMzNDFjMDAsIDB4MDAwMDAwMDYsIDB4MDQwMWY5MDQsCi0JMHgwNDAwMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzYSwgMHgwNDAxZjAwYiwKLQkweDgzY2MxNDAwLCAweDAwMDAwMDBkLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLAotCTB4ODMzNDFjMDAsIDB4MDAwMDAwMDgsIDB4MDQwMWY4ZjksIDB4MDQwMDAwMDcsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjYzYiwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4NTljYzAyMDYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAyMDAxNiwgMHg1OWNjMDQwNywgMHg4MjAwMDU4MCwgMHgwMDAwMDgwMCwKLQkweDA0MDIwMDEyLCAweDU5Y2MwMjA3LCAweDhjMDAwNTFhLCAweDA0MDAwMDBkLAotCTB4ODIwMDA1MDAsIDB4MDAwMDBmMDAsIDB4ODIwMDA1ODAsIDB4MDAwMDAxMDAsCi0JMHgwNDAyMDAwOCwgMHg1OWNjMDIwYSwgMHg4YzAwMDUwOCwgMHgwNDAyMDAwMywKLQkweDhjMDAwNTBhLCAweDA0MDAwMDAzLCAweDgwMDAwNTgwLCAweDFjMDFmMDAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0OTQzYzg1NywgMHg0OTNmYzg1NywgMHg0YzVjMDAwMCwgMHg0ZDMwMDAwMCwKLQkweDRkMzQwMDAwLCAweDRkMmMwMDAwLCAweDRkMzgwMDAwLCAweDQxMzBiODAwLAotCTB4NDIwMjYwMDAsIDB4MDAxMGNmYzAsIDB4NTlhODAwMGUsIDB4ODE2NDA0ODAsCi0JMHgwNDAyMTBjMSwgMHg4ZDNlN2QxMiwgMHgwNDAwMDAwNCwgMHg0MDVjMDAwMCwKLQkweDgxMzAwNTgwLCAweDA0MDAwMGI3LCAweDU5MzAwNDA2LCAweDgyMDAwYzgwLAotCTB4MDAwMDAwMTIsIDB4MDQwMjEwMTUsIDB4NTkzMjY4MDksIDB4MGMwMWYwMDEsCi0JMHgwMDEwODJmNCwgMHgwMDEwODI1ZiwgMHgwMDEwODI3OCwgMHgwMDEwODI4MywKLQkweDAwMTA4MjU4LCAweDAwMTA4MjcxLCAweDAwMTA4MmFjLCAweDAwMTA4MmY0LAotCTB4MDAxMDgyNTYsIDB4MDAxMDgyYzAsIDB4MDAxMDgyY2YsIDB4MDAxMDgyNTYsCi0JMHgwMDEwODI1NiwgMHgwMDEwODI1NiwgMHgwMDEwODI1NiwgMHgwMDEwODJmNCwKLQkweDAwMTA4MmU1LCAweDAwMTA4MmRkLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4OGQzZTdkMTgsIDB4MDQwMDAwMDMsIDB4OGQzZTdkMTYsIDB4MDQwMDAwMDQsCi0JMHg1OTMwMDQyMCwgMHg4YzAwMDUwMCwgMHgwNDAyMDA5NiwgMHg1OTMwMDQwMywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDQzLCAweDA0MDAwMDkyLCAweDAyMDFmODAwLAotCTB4MDAxMDhlZjEsIDB4MDIwMDA4MDAsIDB4MDAxMDFlMWIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGYwNSwgMHgwMjAwMDgwMCwgMHgwMDEwN2RhNiwgMHg4ZDNlN2QwNiwKLQkweDA0MDAwMDg2LCAweDAyMDFmODAwLCAweDAwMTA5MDlkLCAweDA0MDAwMDg1LAotCTB4MDQwMWYwODIsIDB4OGQzZTdkMTgsIDB4MDQwMDAwMDMsIDB4OGQzZTdkMTYsCi0JMHgwNDAwMDAwNCwgMHg1OTMwMDQyMCwgMHg4YzAwMDUwMCwgMHgwNDAyMDA3ZCwKLQkweDU5MzI1ODA4LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDAwMDc3LAotCTB4NDk0MjVhMDYsIDB4NDk3YTVjMDksIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGVlNywgMHgwNDAxZjA3MCwgMHg4MTM2NjljMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDhkM2U3ZDA2LCAweDA0MDAwMDA0LAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwNmEsIDB4NTkzMDAwMDQsCi0JMHg4NDAwMDU1YywgMHg0ODAyNjAwNCwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA0LCAweDAyMDAwODAwLCAweDAwMTAwZWU0LCAweDU5MzI1ODA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDQwMDAwNWMsIDB4NGEwMjVhMDQsCi0JMHgwMDAwMDEwMywgMHg1OTMwMDQwMiwgMHg0ODAyNWMwNiwgMHg1OTJjMDQwOCwKLQkweDhjMDAwNTEyLCAweDA0MDAwMDA2LCAweDRkMmMwMDAwLCAweDU5MmU1ODA5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4NDMsIDB4NWMwMjU4MDAsIDB4NDk0MjVhMDYsCi0JMHg0OTdhNWMwOSwgMHgwMjAxZjgwMCwgMHgwMDEwOTM2NSwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA4ZWU3LCAweDA0MDFmMDQ3LAotCTB4OGMwMDA1MTgsIDB4MDQwMDAwNDcsIDB4NTkzMDAyMDMsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwNCwgMHgwMjAwMDgwMCwgMHgwMDEwMGVlNCwgMHg1OTMyNTgwOCwKLQkweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDAwMDNjLCAweDQ5NDI1YTA2LAotCTB4NDk3YTVjMDksIDB4MDIwMWY4MDAsIDB4MDAxMGE0YWUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOTM2NSwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwNDAxZjAzMywKLQkweDAyMDFmODAwLCAweDAwMTA2MDBlLCAweDA0MDAwMDMyLCAweDU5MzAwMjAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGVlNCwgMHgwNDAxZjAyYiwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0NywKLQkweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDA0MDFmMDI2LCAweDU5MzAwMjAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDIwMDA4MDAsIDB4MDAxMDBlZTQsCi0JMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAxYiwKLQkweDQ5NDI1YTA2LCAweDQ5N2E1YzA5LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLAotCTB4MDQwMWYwMTYsIDB4ODMzYzA1MDAsIDB4MDAwMDE4MDAsIDB4MDQwMDAwMTUsCi0JMHg4ZDNlN2QxNiwgMHgwNDAyMDAxMywgMHg1OTMyNTgxNywgMHgwMjAxZjgwMCwKLQkweDAwMTAwODQzLCAweDU5MzAwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDA0LAotCTB4MDIwMDA4MDAsIDB4MDAxMDBlZTQsIDB4NTkzMjU4MDgsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGRmNCwgMHgwNDAwMDAwNSwgMHg0OTQyNWEwNiwgMHg0OTdhNWMwOSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LAotCTB4ODMzMjY0MDAsIDB4MDAwMDAwMjQsIDB4NDE1ODAwMDAsIDB4ODEzMDA0ODAsCi0JMHgwNDAwMTczZSwgMHg1YzAyNzAwMCwgMHg1YzAyNTgwMCwgMHg1YzAyNjgwMCwKLQkweDVjMDI2MDAwLCAweDVjMDBiODAwLCAweDFjMDFmMDAwLCAweDVjMDAwMDAwLAotCTB4NGMwMDAwMDAsIDB4NDgwM2M4NTcsIDB4NDgwYmM4NTcsIDB4NDgwZmM4NTcsCi0JMHg0ODViYzg1NywgMHg1MDA4MDgwMCwgMHg1MDBjMDAwMCwgMHg4MDA0MjU4MCwKLQkweDA0MDIwMDA3LCAweDgwMDgxMDAwLCAweDgwMGMxODAwLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZjksIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTcsCi0JMHg0ODA3Yzg1NywgMHg0ODBiYzg1NywgMHg0ODBmYzg1NywgMHg4MDA0MDQ4MCwKLQkweDA0MDAxMDA2LCAweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDgyMDQwZDQwLAotCTB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NDE3ODAwMDAsIDB4MDQwMWY3ZmMsCi0JMHg4MzM4MDQ4MCwgMHgwMDAwMDA1MywgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDgzMzgwNDgwLCAweDAwMDAwMDRiLCAweDAyMDAxODAwLCAweDAwMTAwNjE1LAotCTB4MGMwMWYwMDEsIDB4MDAxMDgzMmYsIDB4MDAxMDgzMmYsIDB4MDAxMDgzMmYsCi0JMHgwMDEwODMyZiwgMHgwMDEwODMyZCwgMHgwMDEwODMyZCwgMHgwMDEwODMyZCwKLQkweDAwMTA4MzJmLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDQ5M2JjODU3LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMGQsIDB4NDkzYTY0MDMsIDB4NDIwMDA4MDAsCi0JMHg4MDAwMDAwMCwgMHgwMjAxZjAwMCwgMHgwMDAyMDg1NSwgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDEzLCAweDA0MDIwMDA4LCAweDU5MzAwNDAzLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwNTAsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHg0OTMzYzg1NywgMHg4MzM4MDU4MCwgMHgwMDAwMDAyNywKLQkweDA0MDIwMDMwLCAweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OGY2LAotCTB4NGQzYzAwMDAsIDB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsCi0JMHg1YzAyNzgwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwKLQkweDAwMTBhODZlLCAweDRkMmMwMDAwLCAweDU5MzI1ODA4LCAweDAyMDFmODAwLAotCTB4MDAxMDhkZjQsIDB4NDkyZmM4NTcsIDB4MDQwMDAwMGQsIDB4NGEwMjVhMDQsCi0JMHgwMDAwMDEwMywgMHg1OTMwMGMwMiwgMHg0ODA2NWMwNiwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDI5LCAweDQ5N2E1YzA5LCAweDU5MmMwYzA4LCAweDg0MDQwZDUwLAotCTB4NDgwNjVjMDgsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4NWMwMjU4MDAsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAxNSwgMHg0MTc4MjgwMCwgMHg0MjAwMjAwMCwKLQkweDAwMDAwMDAzLCAweDRkNDAwMDAwLCAweDRkNDQwMDAwLCAweDU5MzY4YzAzLAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMjksIDB4MDIwMWY4MDAsIDB4MDAxMDk2MmEsCi0JMHg1YzAyODgwMCwgMHg1YzAyODAwMCwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDE0LCAweDA0MDIwMDBkLCAweDU5MzAwNDAzLAotCTB4ODIwMDBjODAsIDB4MDAwMDAwNTMsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsCi0JMHg4MjAwMDQ4MCwgMHgwMDAwMDA0MCwgMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwKLQkweDQ5MzNjODU3LCAweDQ4MDNjODU3LCAweDBjMDFmMDBlLCAweDgzMzgwNTgwLAotCTB4MDAwMDAwNTMsIDB4MDQwMDAwMGEsIDB4ODMzODA1ODAsIDB4MDAwMDAwNDgsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDQwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDUwLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDFjMDFmMDAwLAotCTB4MDAxMDgzYTUsIDB4MDAxMDgzYTMsIDB4MDAxMDgzYTMsIDB4MDAxMDgzYTMsCi0JMHgwMDEwODNhMywgMHgwMDEwODNhMywgMHgwMDEwODNhMywgMHgwMDEwODNhMywKLQkweDAwMTA4M2EzLCAweDAwMTA4M2EzLCAweDAwMTA4M2EzLCAweDAwMTA4M2JjLAotCTB4MDAxMDgzYmMsIDB4MDAxMDgzYmMsIDB4MDAxMDgzYmMsIDB4MDAxMDgzYTMsCi0JMHgwMDEwODNiYywgMHgwMDEwODNhMywgMHgwMDEwODNiYywgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OGY2LAotCTB4MDIwMWY4MDAsIDB4MDAxMDhkZjQsIDB4MDIwMDAwMDAsIDB4MDAwMjA4YjQsCi0JMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywKLQkweDU5MzAwNDAyLCAweDQ4MDI1YzA2LCAweDRhMDI1YTA2LCAweDAwMDAwMDA2LAotCTB4NDk3YTVjMDksIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4NWMwMjU4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGVlNywgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OGY2LCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMDAwMWMsCi0JMHg4MDAwMDFjMCwgMHgwMjAyMDgwMCwgMHgwMDEwOTYxYSwgMHg1OTMwMDAwNCwKLQkweDhjMDAwNTNlLCAweDA0MDIwMDI5LCAweDU5MzI1ODA4LCAweDU5MmMwYzA4LAotCTB4NTljYzJhMDgsIDB4ODIxNDFkMDAsIDB4MDAwMDBjMDAsIDB4MDQwMDAwMDIsCi0JMHg1OWNjMTgwOSwgMHg4NDA0MGQ1OCwgMHg0ODA2NWMwOCwgMHg4MjE0MzUwMCwKLQkweDAwMDAwZmZmLCAweDA0MDIwMDI3LCAweDU5MzQwMjAwLCAweDhjMDAwNTBlLAotCTB4MDQwMjAwODAsIDB4MDIwMWY4MDAsIDB4MDAwMjA5NjIsIDB4MDQwMjAwMDYsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHg1OTMwMDgxMSwgMHg4MDA0MDljMCwKLQkweDA0MDIwOTUxLCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDQ4MDY1ODA3LAotCTB4NDgwZTU4MGEsIDB4NDgxNjVjMDksIDB4NTkzMDBjMDIsIDB4NDgwNjVjMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwgMHgwMDEwNDgwMSwKLQkweDU5Y2MwMjA4LCAweDhjMDAwNTE4LCAweDAyMDIwMDAwLCAweDAwMTA4Zjg4LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsCi0JMHgwNDAwMDdkNiwgMHg0ZDNjMDAwMCwgMHg0MjAyNzgwMCwgMHgwMDAwMDAwMiwKLQkweDAyMDFmODAwLCAweDAwMTA4OTk3LCAweDVjMDI3ODAwLCAweDA0MDFmN2NmLAotCTB4NDgxN2M4NTcsIDB4NDgwZmM4NTcsIDB4ODIxODA1MDAsIDB4MDAwMDAwZmYsCi0JMHgwNDAwMDAwZSwgMHg1OTJjMDIwNCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDQ4LCAweDA0MDIwMDA4LCAweDU5MmMwNDA3LAotCTB4ODAwMDAxYzAsIDB4MDQwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMDk1MGIsCi0JMHgwMjAxZjAwMCwgMHgwMDEwOTU1MywgMHg4MjE4MGQwMCwgMHgwMDAwMGMwMCwKLQkweDA0MDAwMDA0LCAweDU5MzQwMjAwLCAweDhjMDAwNTBlLCAweDA0MDIwMDMyLAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMDAsIDB4NDE3ODIwMDAsIDB4OGMxODM1MTAsCi0JMHgwNDAwMDAwNywgMHg1OWNjMDAwYywgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwKLQkweDA0MDAwMDAyLCAweDQ4MDNjODU3LCAweDU5Y2MyMDBiLCAweDQ4MTI1ODBjLAotCTB4NDE3ODAwMDAsIDB4OGMxODM1MTIsIDB4MDQwMDAwMDIsIDB4NTljYzAwMGEsCi0JMHg0ODAyNTgwYiwgMHg4MDEwMGMwMCwgMHgwNDAwMDdiOCwgMHg4MjA0MTQ4MCwKLQkweDAwMDAwMDFkLCAweDA0MDAxMDA2LCAweDU5MmMwNDA0LCAweDhjMDAwNTFlLAotCTB4MDQwMDAwMGUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMWMsIDB4NGM1MDAwMDAsCi0JMHg0YzU0MDAwMCwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwYywgMHg4MzJjYWMwMCwKLQkweDAwMDAwMDBkLCAweDAyMDFmODAwLCAweDAwMTA4OTUzLCAweDVjMDBhODAwLAotCTB4NWMwMGEwMDAsIDB4MDQwMWY3YTUsIDB4NTkzMDAwMTEsIDB4NTkzMDE0MDIsCi0JMHg0ODBhNWMwNiwgMHg0ODAyNTgwNywgMHg0ODBlNTgwYSwgMHg0ODE2NWMwOSwKLQkweDAyMDFmODAwLCAweDAwMTA4OGZjLCAweDAyMDFmODAwLCAweDAwMTA4OTM4LAotCTB4MDQwMWY3YTYsIDB4NTkyYzAyMGEsIDB4OGMwMDA1MDIsIDB4MDQwMDA3Y2QsCi0JMHg1OTJjMDIwOCwgMHg4YzAwMDUwZSwgMHgwNDAyMDdjYSwgMHg1OTMwMDAxMSwKLQkweDgwMGMwZDgwLCAweDA0MDAwN2M3LCAweDQ4MDNjODU3LCAweDQ4MGZjODU3LAotCTB4OGMxODM1MTQsIDB4MDIwMDAwMDAsIDB4MDAxMDhmYzYsIDB4ODAwMDA1NDAsCi0JMHgwNDAwMDdjMCwgMHg0ODA3Yzg1NiwgMHgwMjAxZjAwMCwgMHgwMDEwOGZjNiwKLQkweDU5MmMwMjBhLCAweDhjMDAwNTAyLCAweDA0MDAwNzgyLCAweDU5MzAwMDExLAotCTB4ODAwMDAxYzAsIDB4MDQwMDA3N2YsIDB4NTkyYzAyMDgsIDB4OGMwMDA1MGUsCi0JMHgwNDAyMDc3YywgMHgwMjAxZjAwMCwgMHgwMDEwOGZjNiwgMHg1OWNjMjAwNiwKLQkweDU5Y2MyODA3LCAweDA0MDFmMDM3LCAweDA0MDFmMDM2LCAweDFjMDFmMDAwLAotCTB4NDkzM2M4NTcsIDB4NTkzMDAwMWMsIDB4ODAwMDAxYzAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwOTYxYSwgMHg1OTMyNTgwOCwgMHg1OTJjMGMwOCwgMHg0MTc4MjgwMCwKLQkweDQxNzgxODAwLCAweDg0MDQwZDU4LCAweDQ4MDY1YzA4LCAweDQxNzgzMDAwLAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMWEsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDk2MiwgMHgwNDAyMDAwNywgMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwKLQkweDU5MzAwODExLCAweDQ4MDdjODU3LCAweDgwMDQwOWMwLCAweDA0MDIwOGIyLAotCTB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsIDB4NDgwNjU4MDcsIDB4NDgwZTU4MGEsCi0JMHg0ODE2NWMwOSwgMHg0OTMzYzg1NywgMHg1OTMwMGMwMiwgMHg0ODA2NWMwNiwKLQkweDAyMDFmODAwLCAweDAwMTA5MzY1LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4MDEsIDB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsCi0JMHg1OTJjMDIwYSwgMHg4YzAwMDUwMiwgMHgwNDAwMDdlOCwgMHg1OTMwMDAxMSwKLQkweDQ4MDNjODU3LCAweDgwMDAwMWMwLCAweDA0MDAwN2U0LCAweDU5MmMwMjA4LAotCTB4OGMwMDA1MGUsIDB4MDQwMjA3ZTEsIDB4MDIwMWYwMDAsIDB4MDAxMDhmYzYsCi0JMHg1OTMwMDAxYywgMHg4MDAwMDFjMCwgMHg0YzEwMDAwMCwgMHg0YzE0MDAwMCwKLQkweDAyMDIwODAwLCAweDAwMTA5NjFhLCAweDVjMDAyODAwLCAweDVjMDAyMDAwLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDIsIDB4NGEwMjY0MDMsIDB4MDAwMDAwNDMsCi0JMHg1OTMyNTgwOCwgMHg1OTJjMDIwYSwgMHg4YzAwMDUwMiwgMHgwNDAyMDAxYywKLQkweDQwMTAwMDAwLCAweDU5MmMwODBmLCAweDgwMDQwYzgwLCAweDQwMTQwMDAwLAotCTB4ODAwNDA0ODAsIDB4MDQwMDEwMTgsIDB4NTkzMDAwMDQsIDB4OGMwMDA1M2UsCi0JMHgwNDAyMDAwYSwgMHg0ODEyNjAxMywgMHg0ODE2NjAxMSwgMHg0OTdhNjIwNSwKLQkweDAyMDFmODAwLCAweDAwMTAwZmUxLCAweDA0MDIwMDBkLCAweDU5MzAwODA0LAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NjYsIDB4NGMxMDAwMDAsIDB4NGMxNDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNmNiNCwgMHg1YzAwMjgwMCwgMHg1YzAwMjAwMCwKLQkweDA0MDAwN2YxLCAweDAyMDFmMDAwLCAweDAwMTA3NmZiLCAweDQ5MzNjODU3LAotCTB4MWMwMWYwMDAsIDB4NDgwN2M4NTcsIDB4NDAwNDI4MDAsIDB4MDQwMWY3ZTcsCi0JMHg4MzM4MDQ4MCwgMHgwMDAwMDA1OCwgMHgwNDAyMTAwNSwgMHg4MzM4MDQ4MCwKLQkweDAwMDAwMDQwLCAweDA0MDAxMDAyLCAweDBjMDFmMDAyLCAweDFjMDFmMDAwLAotCTB4MDAxMDg0ZWMsIDB4MDAxMDg0ZWMsIDB4MDAxMDg0ZWMsIDB4MDAxMDg0ZWMsCi0JMHgwMDEwODRlYywgMHgwMDEwODRlYywgMHgwMDEwODRlYywgMHgwMDEwODRlYywKLQkweDAwMTA4NGVjLCAweDAwMTA4NGVjLCAweDAwMTA4NGVlLCAweDAwMTA4NGVjLAotCTB4MDAxMDg0ZWMsIDB4MDAxMDg0ZWMsIDB4MDAxMDg0ZWMsIDB4MDAxMDg0ZmIsCi0JMHgwMDEwODRlYywgMHgwMDEwODRlYywgMHgwMDEwODRlYywgMHgwMDEwODRlYywKLQkweDAwMTA4NTI5LCAweDAwMTA4NGVjLCAweDAwMTA4NGVjLCAweDAwMTA4NGVjLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmIxMywgMHg0YTAyNjIwMywgMHgwMDAwMDAwMiwgMHg1OWE4MDAzOSwKLQkweDQ4MDI2MjA1LCAweDU5MzAwMDExLCAweDU5MzAwODE1LCAweDgwMDQwYzgwLAotCTB4NDgwNjYwMTUsIDB4MDIwMWYwMDAsIDB4MDAxMDY4YzEsIDB4NDkzM2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjhjMSwgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDVjMDI3ODAwLCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGRmNCwgMHgwNDAwMDAxMCwgMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwKLQkweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDU5MzAwNDAyLCAweDQ4MDI1YzA2LAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMjksIDB4NDk3YTVjMDksIDB4NTkyYzBjMDgsCi0JMHg4NDA0MGQ1MCwgMHg0ODA2NWMwOCwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDVjMDI1ODAwLCAweDQyMDAzMDAwLCAweDAwMDAwMDE0LCAweDQxNzgyODAwLAotCTB4NGQ0MDAwMDAsIDB4NGQ0NDAwMDAsIDB4NTkzNjhjMDMsIDB4NDIwMDIwMDAsCi0JMHgwMDAwMDAwMiwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA5NjJhLCAweDVjMDI4ODAwLCAweDVjMDI4MDAwLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NDkzM2M4NTcsIDB4NTkzMDA4MDgsIDB4NDk3ODBjMDksCi0JMHg0OTc4MDgwYSwgMHg1ODA0MTQwOCwgMHg4NDA4MTU1OCwgMHg0ODA4MGMwOCwKLQkweDFjMDFmMDAwLCAweDQ4MDdjODU3LCAweDhjMDQwZDNlLCAweDA0MDIwMDI0LAotCTB4NDk3YTVhMDYsIDB4NTkzMDAwMWYsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMTgsCi0JMHg0OTdhNWEwNiwgMHg0YzA0MDAwMCwgMHg0YzA4MDAwMCwgMHg0YzBjMDAwMCwKLQkweDRjMTAwMDAwLCAweDRjMTQwMDAwLCAweDQwMDAyODAwLCAweDU4MTQxMDAzLAotCTB4NDAwNDAwMDAsIDB4ODAwODE0ODAsIDB4NDgwODI4MDMsIDB4NDAxNDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGQ5YSwgMHg1YzAwMjgwMCwgMHg1YzAwMjAwMCwKLQkweDVjMDAxODAwLCAweDVjMDAxMDAwLCAweDVjMDAwODAwLCAweDU5MmMwMjA2LAotCTB4ODAwMDA1NDAsIDB4MDQwMjAwMDksIDB4MDQwMWYwMDUsIDB4NTkyYzA0MDgsCi0JMHg4YzAwMDUxYywgMHgwNDAwMDAwMiwgMHg1OTJjMDgwMywgMHg0ODA3Yzg1NywKLQkweDRhMDI1YTA2LCAweDAwMDAwMDE1LCAweDFjMDFmMDAwLCAweDU5MzAwMDFmLAotCTB4ODAwMDA1NDAsIDB4MDQwMDAwMDksIDB4NGEwMjVhMDYsIDB4MDAwMDAwMTEsCi0JMHg1OTMwMDAxZiwgMHg0YzA0MDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMGQ5YSwKLQkweDVjMDAwODAwLCAweDA0MDFmN2Y1LCAweDQ4MDdjODU2LCAweDRhMDI1YTA2LAotCTB4MDAwMDAwMDcsIDB4MWMwMWYwMDAsIDB4ODMzODA0ODAsIDB4MDAwMDAwNTgsCi0JMHgwNDAyMTAwNywgMHg4MzM4MDQ4MCwgMHgwMDAwMDA0MCwgMHgwNDAwMTAwNCwKLQkweDRkMmMwMDAwLCAweDBjMDFmODAzLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsCi0JMHgwMDEwODU4OCwgMHgwMDEwODU4YSwgMHgwMDEwODU4OCwgMHgwMDEwODU4OCwKLQkweDAwMTA4NjBkLCAweDAwMTA4NTg4LCAweDAwMTA4NTg4LCAweDAwMTA4NTg4LAotCTB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsIDB4MDAxMDg1ODgsCi0JMHgwMDEwODU4OCwgMHgwMDEwODU4OCwgMHgwMDEwODU4OCwgMHgwMDEwODZjNSwKLQkweDAwMTA4NmVlLCAweDAwMTA4NmNkLCAweDAwMTA4NTg4LCAweDAwMTA4NmZhLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMDAwMWMsIDB4ODAwMDAxYzAsCi0JMHgwMjAyMDgwMCwgMHgwMDEwOTYxYSwgMHg1OTMwMDAwNywgMHg4YzAwMDUwZSwKLQkweDA0MDAwMDdjLCAweDhjMDAwNTAwLCAweDA0MDAwMDZlLCAweDhjMDAwNTFjLAotCTB4MDQwMDAwMDksIDB4ODQwMDA1MDAsIDB4NDgwMjYwMDcsIDB4NTkzMjU4MDgsCi0JMHg1OTJjM2MwOCwgMHg4NDFjM2Q1OCwgMHg0ODFlNWMwOCwgMHgwMjAxZjAwMCwKLQkweDAwMDIwOTE0LCAweDU5MzI1ODA4LCAweDU5MmMzYzA4LCAweDg0MWMzZDU4LAotCTB4NTkzMDAwMDcsIDB4OGMwMDA1MWMsIDB4MDQwMjA3ZjMsIDB4NDgxZTVjMDgsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwNSwgMHg0MDAwMDAwMCwgMHg4MDAwMDA0MCwKLQkweDA0MDIwN2ZlLCAweDU5MzAwMDA3LCAweDhjMDAwNTFjLCAweDA0MDIwN2VhLAotCTB4NTljYzBhMDgsIDB4NTkyYzAyMDQsIDB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDA0OCwgMHgwNDAyMDAwYywgMHg0OTdhNTgwYiwKLQkweDgyMDQwNTAwLCAweDAwMDAwMGZmLCAweDA0MDAwMDA4LCAweDU5MmMwNDA3LAotCTB4ODAwMDAxYzAsIDB4MDQwMDAwMDUsIDB4MDIwMWY4MDAsIDB4MDAxMDk1MGIsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMGVhMSwgMHg0ODA2NWMwOSwgMHg0MTc4MjAwMCwKLQkweDgyMDQwNTAwLCAweDAwMDAwYzAwLCAweDA0MDAwMDAyLCAweDU5Y2MyMDA5LAotCTB4ODIwNDM1MDAsIDB4MDAwMDBmZmYsIDB4MDQwMjAwMjcsIDB4NDgxZTVjMDgsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHg4MDE4MzFjMCwgMHgwMjAwMDAwMCwKLQkweDAwMTAwZWExLCAweDQxNzgyMDAwLCAweDhjMTgzNTEwLCAweDA0MDAwMDAyLAotCTB4NTljYzIwMGIsIDB4NDgxMjU4MGMsIDB4NDE3ODAwMDAsIDB4OGMxODM1MTIsCi0JMHgwNDAwMDAwMiwgMHg1OWNjMDAwYSwgMHg0ODAyNTgwYiwgMHg4MDEwMGMwMCwKLQkweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDAyMDAwMDAwLCAweDAwMTAwZWExLAotCTB4ODIwNDE0ODAsIDB4MDAwMDAwMWQsIDB4MDQwMjEwMGMsIDB4NGM1MDAwMDAsCi0JMHg0YzU0MDAwMCwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwYywgMHg4MzJjYWMwMCwKLQkweDAwMDAwMDBkLCAweDA0MDFmYjZlLCAweDVjMDBhODAwLCAweDVjMDBhMDAwLAotCTB4MDIwMWYwMDAsIDB4MDAxMDBlYTEsIDB4MDQwMWZiMTIsIDB4MDIwMWYwMDAsCi0JMHgwMDEwMGVhMSwgMHg0MTJjNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDQ5MmM3ODA5LCAweDg0MWMzZDUyLAotCTB4NDgxYzdjMDgsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsIDB4NDgxMjU4MGEsCi0JMHg0ODA2NWMwOSwgMHg1ODNjMDQwNCwgMHg1ODNjMTAwNSwgMHg1ODNjMjIwOCwKLQkweDQ4MDI1YzA0LCAweDQ4MGE1ODA1LCAweDQ4MTI1YTA4LCAweDA0MDFmN2M4LAotCTB4OGMwMDA1MjQsIDB4MDQwMDA3OTQsIDB4NTkzMjU4MDgsIDB4NGMwMDAwMDAsCi0JMHg1OTJjMDQwOCwgMHg4YzAwMDUxYywgMHg1YzAwMDAwMCwgMHgwNDAyMDAwMywKLQkweDRhMDI2MDExLCAweGZmZmZmZmZmLCAweDg0MDAwNTI0LCAweDA0MDFmNzhhLAotCTB4MWMwMWYwMDAsIDB4NTlhODAwMzksIDB4NDgwMjYyMDUsIDB4NTkzMjU4MDgsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMiwgMHg1OTJjMjQwOCwgMHg1OTMwMDgwNywKLQkweDQ5MzNjODU3LCAweDQ4MDdjODU3LCAweDU5MmMwMjA0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNDgsIDB4MDQwMjAwMDQsCi0JMHg4YzEwMjUwMCwgMHgwMjAyMDAwMCwgMHgwMDEwOTU1MywgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDAwLCAweDhjMDQwZDFlLCAweDA0MDAwMDI3LCAweDQxNzgwODAwLAotCTB4NDk3YTVjMDksIDB4NTkyYzFjMDksIDB4NTkzMDAwMTEsIDB4NTkzNDEyMDAsCi0JMHg0OTdhNjIwNSwgMHg4YzA4MTUwZSwgMHgwNDAyMDA2ZSwgMHg0ODA3Yzg1NywKLQkweDQ4MDY1ODBhLCAweDgwMDAwZDQwLCAweDA0MDIwZjAzLCAweDU5MzAwNDAyLAotCTB4NDgwMjVjMDYsIDB4NDgwNjU4MDcsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsCi0JMHg0YzA0MDAwMCwgMHg0YzBjMDAwMCwgMHg0YzEwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA5MzY1LCAweDVjMDAyMDAwLCAweDVjMDAxODAwLCAweDVjMDAwODAwLAotCTB4OGMxMDI1MTIsIDB4MDQwMjAwMWEsIDB4NGMwYzAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwgMHgwMDEwNDgwMSwgMHg1YzAwMTgwMCwKLQkweDhjMGMxZDE4LCAweDAyMDAwMDAwLCAweDAwMDIwOGI0LCAweDAyMDFmMDAwLAotCTB4MDAxMDhmODgsIDB4NDgxM2M4NTcsIDB4OGMxMDI1MTgsIDB4MDQwMDAwNGIsCi0JMHg0MTc4MDgwMCwgMHg1OTJjMWMwOSwgMHg4MjBjMDU4MCwgMHgwMDAwMTAwMCwKLQkweDA0MDAwN2Q2LCAweDhjMTAyNTEyLCAweDA0MDAwN2Q0LCAweDU5MmM3ODA5LAotCTB4NTgzYzA4MGEsIDB4NTgzYzFjMDksIDB4MDQwMWY3ZDAsIDB4NDgwN2M4NTcsCi0JMHg1OTJjNzgwOSwgMHg1OTMwMDQwMiwgMHg1OTJjMTQwNCwgMHg4YzA4MTUxZSwKLQkweDA0MDIwMDBkLCAweDU5MmMxMjA2LCAweDQ4MDA3YzA2LCAweDQ4MDQ3ODA3LAotCTB4NDgwODdhMDYsIDB4ODQxMDI1MTIsIDB4NDgxMDdjMDgsIDB4NGMwYzAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHg0MDNlNTgwMCwgMHgwNDAxZmFkMSwKLQkweDA0MDFmN2Q5LCAweDQ4MDI1YzA2LCAweDQ4MDY1ODA3LCAweDU4M2MwODBjLAotCTB4NTgzYzAwMGIsIDB4ODAwNDBjMDAsIDB4ODIwNDE0ODAsIDB4MDAwMDAwMWQsCi0JMHgwNDAwMTAwNiwgMHg1ODNjMTAwMSwgMHg0ODBhNTgwMSwgMHg0OTc4NzgwMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDFjLCAweDgyMDQwYzAwLCAweDAwMDAwMDE0LAotCTB4NGMwYzAwMDAsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4ODIzY2E0MDAsCi0JMHgwMDAwMDAwOCwgMHg4MzJjYWMwMCwgMHgwMDAwMDAwOCwgMHg0YzEwMDAwMCwKLQkweDRjM2MwMDAwLCAweDA0MDFmYWQyLCAweDVjMDA3ODAwLCAweDVjMDAyMDAwLAotCTB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4ODQxMDI1MTIsIDB4NDgxMjVjMDgsCi0JMHg0MDNlNTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHg0MjAzNDAwMCwKLQkweDAwMTBiMmEwLCAweDU5YTFkODFlLCAweDgwZWRkOWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NDhlZmM4NTcsIDB4NThlYzAwMDksIDB4NDgwM2M4NTcsCi0JMHgwODAxZjgwMCwgMHgwNDAxZjdhYywgMHg0OTMzYzg1NywgMHgxYzAxZjAwMCwKLQkweDU5MzAxNDE0LCAweDQ4MGJjODU3LCAweDhjMDgxNTFjLCAweDA0MDIwMDBlLAotCTB4ODAwMDA1NDAsIDB4NDgwM2M4NTcsIDB4MDQwMDA3OGQsIDB4ODAwNDJjODAsCi0JMHgwNDAyMTc4YiwgMHg4YzA4MTUxNCwgMHgwNDAyMDAwNSwgMHg1OTJjMDgwZiwKLQkweDQ4MDdjODU3LCAweDgwMDQwNDgwLCAweDQ4MDI2MDE2LCAweDg0MDgxNTVjLAotCTB4NDgwYTY0MTQsIDB4NTkzMDEwMDcsIDB4ODQwODE1MWUsIDB4NDgwYTYwMDcsCi0JMHg0YzEwMDAwMCwgMHg0YzNjMDAwMCwgMHg0ZDQwMDAwMCwgMHg1OTJlODIwNiwKLQkweDRhMDI1YTA2LCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTA5MzY1LAotCTB4NDk0MjVhMDYsIDB4NWMwMjgwMDAsIDB4NWMwMDc4MDAsIDB4NWMwMDIwMDAsCi0JMHg0OTdhNWMwOSwgMHg4YzEwMjUxMiwgMHgwNDAwMDAwNiwgMHg0ZDJjMDAwMCwKLQkweDQwM2U1ODAwLCAweDAyMDFmODAwLCAweDAwMTAwODQzLCAweDVjMDI1ODAwLAotCTB4ODIxMDI1MDAsIDB4ZmZmZmVkZmYsIDB4NDgxMjVjMDgsIDB4MDIwMWYwMDAsCi0JMHgwMDEwOGZjNiwgMHg1OTMyNTgwOCwgMHg1OTJjMDQwOCwgMHg4YzAwMDUxOCwKLQkweDA0MDAwMDA0LCAweDQxMmRmODAwLCAweDAyMDFmMDAwLCAweDAwMTAwZWJhLAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NTkzMjU4MDgsIDB4NDk3YTVjMDksCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywKLQkweDU5MzAwODExLCAweDQ4MDdjODU3LCAweDgwMDQwOWMwLCAweDA0MDIwMDBhLAotCTB4NDgwNjU4MDcsIDB4NTkzMDBjMDIsIDB4NDgwNjVjMDYsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwgMHgwMDEwNDgwMSwgMHgwMjAxZjAwMCwKLQkweDAwMDIwOGI0LCAweDU5MzQwMjAwLCAweDhjMDAwNTBlLCAweDA0MDIwMDA1LAotCTB4NTkzMDA4MTEsIDB4MDQwMWZlNGMsIDB4NDgwNjU4MDcsIDB4MDQwMWY3ZjIsCi0JMHg1OTJjMDIwOCwgMHg4YzAwMDUwZSwgMHgwNDAyMDdmYSwgMHg0OTMzYzg1NywKLQkweDAyMDFmMDAwLCAweDAwMTA4ZmM2LCAweDQ5MzNjODU3LCAweDU5MzI1ODA4LAotCTB4ODEyZTU5YzAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTkyYzAyMGEsCi0JMHg4YzAwMDUwMiwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg0YTAyNjIwNiwKLQkweDAwMDAwMDAyLCAweDFjMDFmMDAwLCAweDU5MzAwMDFjLCAweDgwMDAwMWMwLAotCTB4MDIwMjA4MDAsIDB4MDAxMDk2MWEsIDB4NTkzMDAwMDcsIDB4NDkzM2M4NTcsCi0JMHg0ODAzYzg1NywgMHg4YzAwMDUwZSwgMHgwNDAwMDAzNywgMHg4YzAwMDUwMCwKLQkweDA0MDAwMDI5LCAweDhjMDAwNTFjLCAweDA0MDAwMDBhLCAweDg0MDAwNTAwLAotCTB4NDgwMjYwMDcsIDB4NTkzMjU4MDgsIDB4NTkyYzNjMDgsIDB4NDgxZmM4NTcsCi0JMHg4NDFjM2Q1OCwgMHg0ODFlNWMwOCwgMHgwMjAxZjAwMCwgMHgwMDAyMDkxNCwKLQkweDU5MzI1ODA4LCAweDU5MmMzYzA4LCAweDg0MWMzZDU4LCAweDU5MzAwMDA3LAotCTB4OGMwMDA1MWMsIDB4MDQwMjA3ZjIsIDB4NDgxZTVjMDgsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwNSwgMHg0MDAwMDAwMCwgMHg4MDAwMDA0MCwgMHgwNDAyMDdmZSwKLQkweDU5MzAwMDA3LCAweDhjMDAwNTFjLCAweDA0MDIwN2U5LCAweDU5MmMwMjA0LAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNDgsCi0JMHgwNDAyMDAwMywgMHg0OTdhNTgwYiwgMHgwNDAxZjAwMiwgMHg0OTdhNWMwOSwKLQkweDQ4MWU1YzA4LCAweDRhMDI1YTA2LCAweDAwMDAwMDAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDBlYTEsIDB4OGMwMDA1MjQsIDB4MDQwMDA3ZDksIDB4NTkzMjU4MDgsCi0JMHg0YzAwMDAwMCwgMHg1OTJjMDQwOCwgMHg4YzAwMDUxYywgMHg1YzAwMDAwMCwKLQkweDA0MDIwMDAzLCAweDRhMDI2MDExLCAweGZmZmZmZmZmLCAweDg0MDAwNTI0LAotCTB4MDQwMWY3Y2YsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NDE3ODA4MDAsCi0JMHg4MzM4MDQ4MCwgMHgwMDAwMDA1OCwgMHgwNDAyMTAwYiwgMHg4MzM4MDQ4MCwKLQkweDAwMDAwMDQwLCAweDA0MDAxMDA4LCAweDRkMmMwMDAwLCAweDU5MzI1ODA4LAotCTB4ODEyZTU5YzAsIDB4MGMwMjA4MDYsIDB4NWMwMjU4MDAsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHg0OTNiYzg1NywgMHgxYzAxZjAwMCwgMHgwMDEwODc2MywKLQkweDAwMTA4NzYzLCAweDAwMTA4NzYzLCAweDAwMTA4NzYzLCAweDAwMTA4NzYzLAotCTB4MDAxMDg3NjUsIDB4MDAxMDg3NjMsIDB4MDAxMDg3NjMsIDB4MDAxMDg3NjMsCi0JMHgwMDEwODc2MywgMHgwMDEwODc2MywgMHgwMDEwODc2MywgMHgwMDEwODc2MywKLQkweDAwMTA4NzYzLCAweDAwMTA4NzYzLCAweDAwMTA4NzYzLCAweDAwMTA4NzYzLAotCTB4MDAxMDg3NjMsIDB4MDAxMDg3NjMsIDB4MDAxMDg3NjMsIDB4MDAxMDg3NmEsCi0JMHgwMDEwODc2MywgMHgwMDEwODc2MywgMHgwMDEwODc2MywgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDU5Y2MwYTA4LCAweDQ5N2E1ODA3LCAweDQ4MDdjODU3LAotCTB4ODIwNDBkMDAsIDB4MDAwMDBmZmYsIDB4NTkzMDA0MDIsIDB4NDgwMjVjMDYsCi0JMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywgMHg0ODA2NWMwOSwgMHg0YTAyNWEwNiwKLQkweDAwMDAwMDAwLCAweDgwMDQwOWMwLCAweDAyMDAwMDAwLCAweDAwMDIwMzgxLAotCTB4NTljYzAwMDksIDB4NDgwMjU4MGEsIDB4ODIwNDI1MDAsIDB4MDAwMDAxMDAsCi0JMHgwNDAwMDAwMiwgMHg1OWNjMjAwYiwgMHg0ODEyNTgwYywgMHg4MjA0MDUwMCwKLQkweDAwMDAwMjAwLCAweDA0MDAwMDAyLCAweDU5Y2MwMDBhLCAweDQ4MDI1ODBiLAotCTB4ODAxMDBjMDAsIDB4MDIwMDE4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMDAwMDAsCi0JMHgwMDAyMDM4MSwgMHg4MjA0MTQ4MCwgMHgwMDAwMDAxZCwgMHgwNDAwMTAwNiwKLQkweDU5MmMwNDA0LCAweDhjMDAwNTFlLCAweDA0MDAwMDBlLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMWMsIDB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4ODNjY2E0MDAsCi0JMHgwMDAwMDAwYywgMHg4MzJjYWMwMCwgMHgwMDAwMDAwZCwgMHgwNDAxZjljMCwKLQkweDVjMDBhODAwLCAweDVjMDBhMDAwLCAweDAyMDFmMDAwLCAweDAwMDIwMzgxLAotCTB4MDQwMWY5NjQsIDB4MDQwMWYxOWYsIDB4ODMzODA0ODAsIDB4MDAwMDAwOTMsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg4MzM4MDQ4MCwgMHgwMDAwMDA4NSwKLQkweDAyMDAxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmMDAxLCAweDAwMTA4N2IyLAotCTB4MDAxMDg3YjAsIDB4MDAxMDg3YjAsIDB4MDAxMDg3YjksIDB4MDAxMDg3YjAsCi0JMHgwMDEwODdiMCwgMHgwMDEwODdiMCwgMHgwMDEwODdiMCwgMHgwMDEwODdiMCwKLQkweDAwMTA4N2IwLCAweDAwMTA4N2IwLCAweDAwMTA4N2IwLCAweDAwMTA4N2IwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsCi0JMHg0OTNhNjQwMywgMHg0MjAwMDgwMCwgMHg4MDAwMDA0MCwgMHgwMjAxZjAwMCwKLQkweDAwMDIwODU1LCAweDQ5MzNjODU3LCAweDU5Y2MxNDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDkxZDksIDB4MDQwMDAwMWIsIDB4NTkxYzAyMDMsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMCwgMHgwNDAwMDAxNywgMHg1OTFjMDAwOSwgMHg4MTM0MDU4MCwKLQkweDA0MDIwMDE0LCAweDRkMzAwMDAwLCAweDRkMWMwMDAwLCAweDQxMWU2MDAwLAotCTB4MDQwMWY5YzMsIDB4NWMwMjM4MDAsIDB4NWMwMjYwMDAsIDB4MDQwMDAwMGIsCi0JMHg1OWNjMDAwNSwgMHg4YzAwMDUwMCwgMHgwNDAyMDAwMywgMHgwNDAxZjk4ZCwKLQkweDA0MDFmMDAzLCAweDRhMDIzYTAzLCAweDAwMDAwMDAyLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwODYsIDB4MDQwMWYwMDUsIDB4MDQwMWY5YTcsIDB4MDQwMDA3ZjUsCi0JMHg0YTAyNjQwMywgMHgwMDAwMDA4NywgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDgwMDAwMDQwLCAweDAyMDFmODAwLCAweDAwMDIwODU1LAotCTB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMDAwMGQsIDB4NTljYzE0MDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTFkOSwgMHgwNDAwMDAwOSwgMHg1OTFjMDQxNCwKLQkweDhjMDAwNTFhLCAweDA0MDAwMDA2LCAweDRkMzAwMDAwLCAweDQxMWU2MDAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDhmZGIsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDAxMywgMHgwNDAyMDAwYiwgMHg1OTMwMDQwMywKLQkweDQ4MDNjODU3LCAweDgyMDAwZDgwLCAweDAwMDAwMDg2LCAweDA0MDAwMDEyLAotCTB4ODIwMDBkODAsIDB4MDAwMDAwODcsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwNDAxZjAwZCwgMHg4MzM4MDU4MCwgMHgwMDAwMDAyNywgMHgwNDAwMDAwNSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDE0LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NDkzYmM4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNzY5OCwgMHg0OTMzYzg1NywgMHgwMjAxZjAwMCwgMHgwMDEwNzY5OCwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDEzLCAweDA0MDIwMDA1LCAweDU5MzAwNDAzLAotCTB4ODIwMDA0ODAsIDB4MDAwMDAwODUsIDB4MGMwMWYwNGQsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAyNywgMHgwNDAyMDA0MSwgMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwKLQkweDAwMTA2OGY2LCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDFkZTIsIDB4NWMwMjc4MDAsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMTUsCi0JMHg0MTc4MjgwMCwgMHg0MjAwMjAwMCwgMHgwMDAwMDAwMywgMHg0MjAyODAwMCwKLQkweDAwMDAwMDI5LCAweDRkNDAwMDAwLCAweDRkNDQwMDAwLCAweDU5MzY4YzAzLAotCTB4MDIwMWY4MDAsIDB4MDAxMDk2MmEsIDB4NWMwMjg4MDAsIDB4NWMwMjgwMDAsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDAwMDBjLCAweDRkMmMwMDAwLAotCTB4NTkzMjU4MDgsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsIDB4NTkzMDA0MDIsCi0JMHg0ODAyNWMwNiwgMHg0OTdhNWMwOSwgMHg0OTQyNWEwNiwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDVjMDI1ODAwLCAweDAyMDFmODAwLCAweDAwMTA4ZWU3LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4ODMzODA1ODAsIDB4MDAwMDAwODksCi0JMHgwNDAwMDAwNSwgMHg4MzM4MDU4MCwgMHgwMDAwMDA4YSwgMHgwMjAyMDAwMCwKLQkweDAwMTA3NmZiLCAweDAyMDFmODAwLCAweDAwMTA2Y2I0LCAweDAyMDIwMDAwLAotCTB4MDAxMDc2ZmIsIDB4NTkzMDBhMDMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMGEsCi0JMHgwNDAwMDAyYSwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwYywgMHgwNDAwMDAyNywKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDgzMzgwNTgwLCAweDAwMDAwMDE0LAotCTB4MDQwMjA3ZWEsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAwNiwgMHgwNDAxZjdkMiwgMHgwMDEwODg2ZSwKLQkweDAwMTA4ODZjLCAweDAwMTA4ODZjLCAweDAwMTA4ODZjLCAweDAwMTA4ODZjLAotCTB4MDAxMDg4NmMsIDB4MDAxMDg4NzQsIDB4MDAxMDg4NmMsIDB4MDAxMDg4NmMsCi0JMHgwMDEwODg2YywgMHgwMDEwODg2YywgMHgwMDEwODg2YywgMHgwMDEwODg2YywKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDQ5MzNjODU3LCAweDU5YTgwMDM3LAotCTB4NDgwMjYyMDYsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMGEsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg1OWE4MDAzNywgMHg0ODAyNjIwNiwgMHg0YTAyNjIwMywKLQkweDAwMDAwMDBjLCAweDFjMDFmMDAwLCAweDgzMzgwNTgwLCAweDAwMDAwMDg5LAotCTB4MDQwMDAwMDgsIDB4ODMzODA1ODAsIDB4MDAwMDAwOGEsIDB4MDQwMDAwMzIsCi0JMHg0OTMzYzg1NywgMHg0OTNiYzg1NywgMHgwMjAxZjAwMCwgMHgwMDEwNzZmYiwKLQkweDQ5MzNjODU3LCAweDU5MzI1ODA4LCAweDU5MzAwYTFkLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4MDEsCi0JMHgwNDAxZjAwYywgMHg1OTMwMDIxZCwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMSwKLQkweDA0MDIwMDA4LCAweDU5MzAwYzE2LCAweDgyMDQwNTgwLCAweDAwMDAwMDM5LAotCTB4MDQwMDAwMmMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMzUsIDB4MDQwMDAwMjksCi0JMHg0YzVjMDAwMCwgMHg0MTMwYjgwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwKLQkweDA0MDAwMDEwLCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwMWUsIDB4NTljYzBjMDcsIDB4NDgwNjY0MTksIDB4NTljYzBhMDcsCi0JMHg0ODA2NjIxOSwgMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDgwMDAwMDQwLCAweDAyMDFmODAwLCAweDAwMDIwODU1LAotCTB4NDA1ZTYwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NWMwMGI4MDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg1OTMwMDIxZCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAxLCAweDA0MDIwMDQwLCAweDU5MzAwYzE2LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMzUsIDB4MDQwMDAwMDcsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMWUsCi0JMHgwNDAwMDAwNCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAzOSwgMHgwNDAyMDAzNiwKLQkweDQ5MzNjODU3LCAweDRjNTAwMDAwLCAweDRkMWMwMDAwLCAweDQxMzBhMDAwLAotCTB4NDAwNjcwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDkxODMsIDB4MDQwMjAwMjksCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwgMHgwNDAwMDAyNiwgMHg0OTFmYzg1NywKLQkweDQ5MzNjODU3LCAweDgzMzgwNTgwLCAweDAwMDAwMDM1LCAweDA0MDAwMDA0LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwMzksIDB4MDQwMjAwMDIsIDB4NDkzMjM4MWMsCi0JMHg0OTNhNjQwMywgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0YTAyNjQwNiwKLQkweDAwMDAwMDAxLCAweDU4NTAwODA5LCAweDQ4MDdjODU3LCAweDQ4MDY2MDA5LAotCTB4NTg1MDBjMTUsIDB4NDgwN2M4NTcsIDB4NDgwNjY0MTUsIDB4NTg1MDBhMTUsCi0JMHg0ODA3Yzg1NywgMHg0ODA2NjIxNSwgMHg1ODUwMGExNiwgMHg0ODA3Yzg1NywKLQkweDQ4MDY2MjE2LCAweDU4NTAwYzE5LCAweDQ4MDdjODU3LCAweDQ4MDY2NDE5LAotCTB4NTg1MDBhMTksIDB4NDgwN2M4NTcsIDB4NDgwNjYyMTksIDB4NDkxZTYwMWUsCi0JMHg0MjAwMDgwMCwgMHg4MDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg1NSwKLQkweDQwNTI2MDAwLCAweDVjMDIzODAwLCAweDVjMDBhMDAwLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NTkzMDAyMWQsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNDgwMSwgMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwKLQkweDQ4MDNjODU2LCAweDRjNTAwMDAwLCAweDRjNTQwMDAwLCAweDQxMmM3ODAwLAotCTB4NGMzYzAwMDAsIDB4NDIwMDI4MDAsIDB4MDAwMDAwMDEsIDB4ODIwNDA0ODAsCi0JMHgwMDAwMDEwMSwgMHgwNDAwMTAwMywgMHg0MjAwMDgwMCwgMHgwMDAwMDEwMCwKLQkweDQwMDQzMDAwLCAweDQyMDAwODAwLCAweDAwMDAwMDFjLCAweDgzY2NhNDAwLAotCTB4MDAwMDAwMGMsIDB4ODMyY2FjMDAsIDB4MDAwMDAwMGQsIDB4MDQwMWY4NDQsCi0JMHg4MjE4MzQ4MCwgMHgwMDAwMDAxYywgMHg1OTJlNTgwMSwgMHg4MTJlNTljMCwKLQkweDAyMDIwODAwLCAweDAwMTAwODQzLCAweDAyMDFmODAwLCAweDAwMTAwODJhLAotCTB4MDQwMDAwMTcsIDB4ODAxNDI4MDAsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMTAsCi0JMHg0OTdhNWMwNCwgMHg0OTJjNzgwMSwgMHg4MjE4MGM4MCwgMHgwMDAwMDAzZCwKLQkweDA0MDIxMDA2LCAweDQwMTgwODAwLCAweDgzMmNhYzAwLCAweDAwMDAwMDA1LAotCTB4MDQwMWY4MmYsIDB4MDQwMWYwMGEsIDB4ODIxODM0ODAsIDB4MDAwMDAwM2MsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAzYywgMHg0MTJjNzgwMCwgMHg4MzJjYWMwMCwKLQkweDAwMDAwMDA1LCAweDA0MDFmODI2LCAweDA0MDFmN2U4LCAweDVjMDA3ODAwLAotCTB4ODQxNDI5YzAsIDB4ODIxNDJkNDAsIDB4MDAwMDAwMDMsIDB4NDgxNDdhMDQsCi0JMHg0MDNlNTgwMCwgMHg1YzAwYTgwMCwgMHg1YzAwYTAwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MmZjODU3LCAweDgxMmU1OWMwLCAweDA0MDAwMDBmLCAweDRkMmMwMDAwLAotCTB4NGMzYzAwMDAsIDB4NTkyYzc4MDEsIDB4ODAzYzc5YzAsIDB4MDQwMDAwMDYsCi0JMHg0OTdhNTgwMSwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHg0MDNlNTgwMCwKLQkweDA0MDFmN2Y5LCAweDVjMDA3ODAwLCAweDAyMDFmODAwLCAweDAwMDIwMzgxLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGM1ODAwMDAsCi0JMHg4MjA0MGMwMCwgMHgwMDAwMDAwMywgMHg4MDA0YjEwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhOTNlLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NGM1ODAwMDAsIDB4ODIwNDBjMDAsIDB4MDAwMDAwMDMsIDB4ODAwNGIxMDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTkzZSwgMHg1YzAwYjAwMCwgMHgxYzAxZjAwMCwKLQkweDU5MWMwYzA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA0LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMWEsIDB4NGQzMDAwMDAsCi0JMHg0ZDJjMDAwMCwgMHg0MTFlNjAwMCwgMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwKLQkweDAwMTA4ZGY0LCAweDA0MDAwMDBmLCAweDRkNDAwMDAwLCAweDQyMDI4MDAwLAotCTB4MDAwMDAwMTMsIDB4NTkyYzBhMDgsIDB4ODQwNDBkNTQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGJlZSwgMHg1YzAyODAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwOTM2NSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA4ZWU3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsIDB4NWMwMjU4MDAsIDB4NWMwMjYwMDAsCi0JMHgxYzAxZjAwMCwgMHg1OWNjMDAwNSwgMHg4YzAwMDUwMCwgMHgwNDAyMDAwYiwKLQkweDU5MWMwNDA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDAyLCAweDA0MDIwMDA3LAotCTB4NTkxYzBjMDMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwODUsIDB4MDQwMDAwMDMsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDA4YiwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDRkM2MwMDAwLCAweDQyMDI3ODAwLCAweDAwMDAwMDAyLCAweDU5MzAwNDA2LAotCTB4ODIwMDBjODAsIDB4MDAwMDAwMTIsIDB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsCi0JMHgwYzAxZjgwYSwgMHg1YzAyNzgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDU5MzAwNDA2LCAweDgyMDAwYzgwLCAweDAwMDAwMDEyLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4MGMwMWYwMDEsIDB4MDAxMDg5YjUsIDB4MDAxMDg5YjIsCi0JMHgwMDEwODliMiwgMHgwMDEwODlkZCwgMHgwMDEwODliMCwgMHgwMDEwODliMiwKLQkweDAwMTA4OWNlLCAweDAwMTA4OWIyLCAweDAwMTA4OWIwLCAweDAwMTA2MzJjLAotCTB4MDAxMDg5YjIsIDB4MDAxMDg5YjIsIDB4MDAxMDg5YjIsIDB4MDAxMDg5YjAsCi0JMHgwMDEwODliMCwgMHgwMDEwODliMCwgMHgwMDEwOGFhZCwgMHgwMDEwODliMiwKLQkweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDQ4MDNjODU2LCAweDgwMDAwNTgwLAotCTB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4OGQzZTdkMDIsIDB4MDQwMjAwMTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAwZiwgMHg1OTMyNTgwOCwKLQkweDQxNzgwODAwLCAweDRkNDAwMDAwLCAweDQyMDI4MDAwLCAweDAwMDAwMDA1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRiZWUsIDB4NWMwMjgwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOTM2NSwgMHgwMjAxZjgwMCwgMHgwMDEwOGY4MywgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDcyOCwgMHgwNDAyMDAwYywgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDEwLCAweDAyMDFmODAwLCAweDAwMTA5ZmMwLCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDYsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NWMwMjgwMDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywKLQkweDRkZjAwMDAwLCAweDA0MDFmOGI4LCAweDgyMDAwYzgwLCAweDAwMDAwMDBlLAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4MGMwMWYwMDEsIDB4MDAxMDg5ZjcsCi0JMHgwMDEwOGE2NCwgMHgwMDEwOGEwZSwgMHgwMDEwOGE3NywgMHgwMDEwOGE1ZiwKLQkweDAwMTA4OWY1LCAweDAwMTA4OWY3LCAweDAwMTA4OWY3LCAweDAwMTA4OWZiLAotCTB4MDAxMDg5ZjcsIDB4MDAxMDg5ZjcsIDB4MDAxMDg5ZjcsIDB4MDAxMDg5ZjcsCi0JMHgwMDEwOGEwZSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1YzAzZTAwMCwKLQkweDAyMDAwODAwLCAweDAwMTA2OTgyLCAweDA0MDFmN2I4LCAweDVjMDNlMDAwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4NTkzMDA0MDYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAwMywgMHgwNDAyMDdiNCwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDBkLCAweDA0MDAwN2IwLCAweDhkM2U3ZDAyLCAweDA0MDIwN2FlLAotCTB4NGQzNDAwMDAsIDB4NTkzMjY4MDksIDB4MDIwMWY4MDAsIDB4MDAxMDQ4MDEsCi0JMHg1YzAyNjgwMCwgMHgwNDAxZjdhOCwgMHg1OTMwMDAwNCwgMHg4NDAwMDU1YywKLQkweDQ4MDI2MDA0LCAweDAyMDFmODAwLCAweDAwMTA2OTgyLCAweDU5MzAwNDA2LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDYsIDB4MDQwMDAwNDMsIDB4OGQzZTdkMDIsCi0JMHgwNDAyMDA0MSwgMHg0OTdhNjIxZCwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDBkLCAweDA0MDAwMDAzLCAweDRhMDI2MjFkLCAweDAwMDAwMDAzLAotCTB4MDQwMWZiZDQsIDB4MDQwMDAwMjQsIDB4NGQyYzAwMDAsIDB4NGQ0MDAwMDAsCi0JMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwOGY4MywgMHg1OTJjMDQwOCwKLQkweDhjMDAwNTEyLCAweDA0MDAwMDA5LCAweDRkMmMwMDAwLCAweDg0MDAwNTEyLAotCTB4NDgwMjVjMDgsIDB4NTkyYzA4MDksIDB4NDAwNjU4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDg0MywgMHg1YzAyNTgwMCwgMHg0ZDQwMDAwMCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDA1LCAweDU5MmMwYTA4LCAweDhjMDQwZDBlLCAweDA0MDAwMDA0LAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWYwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGJlZSwgMHg1YzAyODAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwOTM2NSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDQ5N2E2MDA4LCAweDVjMDI4MDAwLAotCTB4NWMwMjU4MDAsIDB4OGQzZTdkMDAsIDB4MDQwMDAwMDksIDB4NGQzNDAwMDAsCi0JMHg1OTMyNjgwOSwgMHgwMjAxZjgwMCwgMHgwMDEwNDgwMSwgMHg1YzAyNjgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA3Njk4LCAweDA0MDFmMDBiLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwODUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDksIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwMiwgMHg0MjAwMDgwMCwgMHg4MDAwNDA0YiwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODU1LCAweDVjMDNlMDAwLCAweDAyMDIwODAwLCAweDAwMTA2OThjLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4MiwgMHgwMjAxZjgwMCwgMHgwMDEwMGVlNCwgMHgwNDAxZjdhYiwKLQkweDU5OGMwMDBkLCAweDgxMzAwNTgwLCAweDA0MDIwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDZiZTIsIDB4MDQwMjAwMWIsIDB4MDIwMWY4MDAsIDB4MDAxMDY2MTksCi0JMHgwNDAyMDAwNiwgMHg1OTMwMGMwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDA0MCwKLQkweDA0MDAwNzhiLCAweDA0MDFmNzlkLCAweDAyMDFmODAwLCAweDAwMTA2OGEzLAotCTB4MDQwMDAwMTAsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDQwMWY4MTMsCi0JMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNmJiMiwgMHgwNDAyMDAwOSwKLQkweDAyMDFmODAwLCAweDAwMTA2NGY2LCAweDA0MDIwN2Y0LCAweDU5MzAwYzAzLAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwNDAsIDB4MDQwMDA3NzksIDB4MDQwMWY3OGIsCi0JMHg1OTMwMDIwMywgMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDBjMDFmNzVlLCAweDQxN2EzMDAwLCAweDQyMDMyMDAwLAotCTB4MDAwMGJmMzIsIDB4NTk5MDAwMDQsIDB4ODEzMDA1ODAsIDB4MDQwMDAwMDksCi0JMHg4MzkzMjQwMCwgMHgwMDAwMDAxMCwgMHg4MTFhMzAwMCwgMHg4MzE4MDQ4MCwKLQkweDAwMDAwMDA1LCAweDA0MDAxN2Y4LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NTkzMDAwMDQsIDB4OGMwMDA1M2UsIDB4MDQwMDAwMTAsCi0JMHg4YzAwMDUwYywgMHgwNDAyMDAwZSwgMHg4YzAwMDUxNiwgMHgwNDAyMDAwNiwKLQkweDgyMDAwZDAwLCAweDAwMDAwMDFmLCAweDgyMDQwNTgwLCAweDAwMDAwMDA1LAotCTB4MDQwMjAwMDQsIDB4NDIwMDAwMDAsIDB4MDAwMDAwMDMsIDB4MDQwMWYwMDUsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwNDAxZjAwMiwgMHg1OTMwMDIwMywKLQkweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OThjLAotCTB4NGRmMDAwMDAsIDB4NTkzMDAyMDMsIDB4ODIwMDBjODAsIDB4MDAwMDAwMGUsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwOGFjNywKLQkweDAwMTA4YWU0LCAweDAwMTA4YWNiLCAweDAwMTA4YWM1LCAweDAwMTA4YWM1LAotCTB4MDAxMDhhYzUsIDB4MDAxMDhhYzUsIDB4MDAxMDhhYzUsIDB4MDAxMDhhYzUsCi0JMHgwMDEwOGFjNSwgMHgwMDEwOGFjNSwgMHgwMDEwOGFjNSwgMHgwMDEwOGFjNSwKLQkweDAwMTA4YWM1LCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDVjMDNlMDAwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4MDQwMWY2ZTgsIDB4NWMwM2UwMDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwgMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwKLQkweDU5MzAwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDUyLCAweDAyMDAwODAwLAotCTB4MDAxMDEyODEsIDB4MDQwMWZiMWYsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDAyMDFmODAwLCAweDAwMTA0YTgzLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LAotCTB4NWMwMjU4MDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsCi0JMHg1OThjMDAwZCwgMHg4MTMwMDU4MCwgMHgwNDAyMDAxYSwgMHg1OTMwMDAwNCwKLQkweDhjMDAwNTIwLCAweDA0MDAwMDA0LCAweDg0MDAwNTIwLCAweDQ4MDI2MDA0LAotCTB4MDQwMWYwMWEsIDB4NDIwMDEwMDAsIDB4MDAxMGI1ZjQsIDB4NTAwODEwMDAsCi0JMHg1ODA4MDAwMiwgMHg4MjAwMDU4MCwgMHgwMDAwMDEwMCwgMHgwNDAwMDAwYSwKLQkweDU4MDgwMDBjLCAweDgxMzAwNTgwLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY2MTksIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwNDAxZjdjZiwgMHgwMjAxZjgwMCwgMHgwMDEwNmJlMiwgMHgwNDAyMDAwYywKLQkweDU5MzAwMDA0LCAweDhjMDAwNTIwLCAweDA0MDAwMDA0LCAweDg0MDAwNTIwLAotCTB4NDgwMjYwMDQsIDB4MDQwMWY3YzYsIDB4MDIwMWY4MDAsIDB4MDAxMDY2MTksCi0JMHgwNDAwMDdjMywgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDIwMywKLQkweDgyMDAwYzgwLCAweDAwMDAwMDBlLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4MGMwMWY3YTcsIDB4NTkzMDA0MDYsIDB4NDkzM2M4NTcsIDB4NDgwM2M4NTcsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAxMiwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmMDAxLCAweDAwMTA4YjMwLCAweDAwMTA4YmZlLCAweDAwMTA4ZDM2LAotCTB4MDAxMDhiM2MsIDB4MDAxMDc2OTgsIDB4MDAxMDhiMzAsIDB4MDAxMDlmYWYsCi0JMHgwMDAyMDhiNCwgMHgwMDEwOGJmZSwgMHgwMDEwNjMwNiwgMHgwMDEwOGQ5NywKLQkweDAwMTA4YjJiLCAweDAwMTA4YjJiLCAweDAwMTA4YjJiLCAweDAwMTA4YjJiLAotCTB4MDAxMDhiMmIsIDB4MDAxMDk0YjcsIDB4MDAxMDk0YjcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHgwNDAxZmJkOCwgMHgwMjAwMDAwMCwgMHgwMDEwN2RhNiwKLQkweDFjMDFmMDAwLCAweDAyMDFmODAwLCAweDAwMTA2OThjLCAweDAyMDFmODAwLAotCTB4MDAxMDY4ZjYsIDB4MDIwMWY4MDAsIDB4MDAxMDY5ODIsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHg0YTAyNjIwNiwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjcxLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NGQyYzAwMDAsIDB4NGQ0MDAwMDAsIDB4NDE3YTU4MDAsIDB4MDQwMWZhYjEsCi0JMHgwNDAwMDAwNywgMHg1OTMyNTgwOCwgMHg1OTJjMDIwOCwgMHg4NDAwMDU0YywKLQkweDQ4MDI1YTA4LCAweDQyMDI4MDAwLCAweDAwMDAwMDA2LCAweDAyMDFmODAwLAotCTB4MDAxMDY5OGMsIDB4MDQwMWZmNGMsIDB4NDgwM2M4NTcsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHgwYzAxZjgwNiwKLQkweDAyMDFmODAwLCAweDAwMTA2OTgyLCAweDVjMDI4MDAwLCAweDVjMDI1ODAwLAotCTB4MWMwMWYwMDAsIDB4MDAxMDhiZmQsIDB4MDAxMDhiNjksIDB4MDAxMDhiNzksCi0JMHgwMDEwOGJhMCwgMHgwMDEwOGJjZSwgMHgwMDEwOGI2NywgMHgwMDEwOGIzMCwKLQkweDAwMTA4YjMwLCAweDAwMTA4YjMwLCAweDAwMTA4YjY3LCAweDAwMTA4YjY3LAotCTB4MDAxMDhiNjcsIDB4MDAxMDhiNjcsIDB4MDAxMDhiNzksIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OThjMDAwZCwgMHg0ODAzYzg1NywgMHg4MTMwMDU4MCwKLQkweDA0MDIwMDA0LCAweDAyMDFmODAwLCAweDAwMTA2YmUyLCAweDA0MDIwMDNmLAotCTB4MDIwMWY4MDAsIDB4MDAxMDY2MTksIDB4MDQwMDAwNDMsIDB4NDgwM2M4NTYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjhhMywgMHgwNDAwMDAzOCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDQ5N2E2MjFkLCAweDgxMmU1OWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTkyYzAyMDQsIDB4NDgwM2M4NTcsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxNCwgMHgwNDAwMDAwMywKLQkweDRhMDI2MjFkLCAweDAwMDAwMDAzLCAweDU5MmMwYTA4LCAweDAyMDFmODAwLAotCTB4MDAxMDRiZWUsIDB4MDIwMWY4MDAsIDB4MDAxMDkzNjUsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDM4MSwgMHg0OTdhNjAwOCwgMHg0YTAyNjQwMywgMHgwMDAwMDA4NSwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDA5LCAweDRhMDI2NDA2LCAweDAwMDAwMDAyLAotCTB4NTkzMDA4MDQsIDB4ODIwNDBkMDAsIDB4MDAwMDAxMDAsIDB4ODIwNDBkNDAsCi0JMHg4MDAwNDA0YiwgMHg0ODA2NjAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4MiwKLQkweDQyMDAwODAwLCAweDgwMDA0MDRiLCAweDAyMDFmMDAwLCAweDAwMDIwODU1LAotCTB4MDQwMWZlZWEsIDB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDZiYjIsCi0JMHgwNDAyMDAwYSwgMHgwMjAxZjgwMCwgMHgwMDEwNjRmNiwgMHgwNDAyMDdjYywKLQkweDU5MzAwYzAzLCAweDQ4MDdjODU3LCAweDgyMDQwNTgwLCAweDAwMDAwMDQwLAotCTB4MDQwMDAwMDksIDB4MDQwMWY3Y2MsIDB4NTkzMDAyMDMsIDB4NDgwM2M4NTcsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmN2E1LCAweDAyMDFmODAwLCAweDAwMTA2OTgyLCAweDgxMmU1OWMwLAotCTB4MDQwMDAwMTMsIDB4NTkyYzBhMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDRiZWUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTM2NSwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDU5MzAwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDBkLCAweDA0MDAwMDA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5ODIsIDB4NGQzNDAwMDAsIDB4NTkzMjY4MDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgwMSwgMHg1YzAyNjgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA3Njk4LCAweDA0MDFmMDMwLCAweDgxMmU1OWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDkxZDMsIDB4MDQwMjAwMDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGVlNCwgMHgwNDAxZjdhMywgMHgwMjAxZjgwMCwKLQkweDAwMTA2OTgyLCAweDU5MmMwMjA4LCAweDg0MDAwNTBjLCAweDQ4MDI1YTA4LAotCTB4NTkyYzA0MDYsIDB4ODAwMDAwYzIsIDB4ODAwMDA4YzQsIDB4ODAwNDBjMDAsCi0JMHg0ODA2NjIwNiwgMHg0MjAwMDAwMCwgMHgxMDAwMDAwMCwgMHg0MTMwMDgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAwYmRlLCAweDA0MDAwMDBkLCAweDU5MmMwMjA4LAotCTB4OGMwMDA1MWMsIDB4MDQwMjAwMDYsIDB4ODQwMDA1NWMsIDB4NDgwMjVhMDgsCi0JMHg0YTAyNjIwNiwgMHgwMDAwMDAwMiwgMHgwNDAxZjAwZiwgMHg0ZDMwMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxMzM1LCAweDVjMDI2MDAwLCAweDU5MzAwMjAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMjAwMDcsIDB4NGQzODAwMDAsCi0JMHg0MjAyNzAwMCwgMHgwMDAwMDA0OCwgMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwKLQkweDVjMDI3MDAwLCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjZkLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NTkzMDAyMDMsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzYzg1NywKLQkweDBjMDFmMDAxLCAweDAwMTA4YzE3LCAweDAwMTA4YjM5LCAweDAwMTA4YzE5LAotCTB4MDAxMDhjMTcsIDB4MDAxMDhjMTksIDB4MDAxMDhjMTksIDB4MDAxMDhiMzEsCi0JMHgwMDEwOGMxNywgMHgwMDEwOGIyZCwgMHgwMDEwOGMxNywgMHgwMDEwOGMxNywKLQkweDAwMTA4YzE3LCAweDAwMTA4YzE3LCAweDAwMTA4YzE3LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NGQzNDAwMDAsIDB4NGQyYzAwMDAsIDB4NTkzMjY4MDksCi0JMHg1OTM0MDQwMCwgMHg4MjAwMDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMGM4MCwKLQkweDAwMDAwMDBjLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDU5MzAzNDAzLAotCTB4ODIxODBkODAsIDB4MDAwMDAwMDQsIDB4MDQwMjAwMDQsIDB4NDIwMDAwMDAsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZjAwNiwgMHg4MjE4MGQ4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDIwMDAzLCAweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDQ4MDNjODU3LAotCTB4MGMwMWY4MDQsIDB4NWMwMjU4MDAsIDB4NWMwMjY4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwOGM0MCwgMHgwMDEwOGNkZiwgMHgwMDEwOGM0MiwgMHgwMDEwOGM3NywKLQkweDAwMTA4YzQyLCAweDAwMTA4Y2ZjLCAweDAwMTA4YzQyLCAweDAwMTA4YzRjLAotCTB4MDAxMDhjNDAsIDB4MDAxMDhjZmMsIDB4MDAxMDhjNDAsIDB4MDAxMDhjNWIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDQwMywgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDE2LCAweDA0MDAwMDJlLCAweDgyMDAwZDgwLCAweDAwMDAwMDA0LAotCTB4MDQwMDAwMmIsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDIsIDB4MDQwMDAwMjgsCi0JMHgwNDAxZmFiOSwgMHgwNDAwMDA3OSwgMHg1OTMwMDQwMywgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDIyLCAweDA0MDAwMGFlLCAweDgyMDAwZDgwLCAweDAwMDAwMDM5LAotCTB4MDQwMDAwYjMsIDB4ODIwMDBkODAsIDB4MDAwMDAwMzUsIDB4MDQwMDAwYjAsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAxZSwgMHgwNDAwMDAxYiwgMHgwNDAxZjk5OSwKLQkweDA0MDAwMDA3LCAweDAyMDFmODAwLCAweDAwMTA5MzYwLCAweDA0MDIwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NjMsIDB4MDQwMWYwMTEsIDB4NTkzMDA0MDMsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMSwgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODM2LCAweDA0MDAwMDBhLCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NWMwMjc4MDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHgwMjAxZjgwMCwKLQkweDAwMTA3ZGE2LCAweDAyMDFmMDAwLCAweDAwMTA3Njk4LCAweDA0MDFmOTdkLAotCTB4MDQwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMDkzNjAsIDB4MDQwMDAwYTksCi0JMHg1OTMwMGMwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDAxNiwgMHgwNDAwMDA1NiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDAyLCAweDA0MDIwMDM0LCAweDU5YTgwMDI2LAotCTB4OGMwMDA1MDIsIDB4MDQwMjAwMTMsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHgwNDAyMDAxMCwgMHgwMjAxZjgwMCwgMHgwMDEwNGUyMywgMHgwNDAyMDAwNiwKLQkweDQyMDAwMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTA0ZGU1LAotCTB4MDQwMWYwOTQsIDB4NGEwMzUwMzMsIDB4MDAwMDAwMDEsIDB4NDIwMmQ4MDAsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNGQ3NiwgMHgwNDAxZjA4ZCwKLQkweDU5MzQwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwN2ZjLCAweDA0MDAwMDA4LAotCTB4NTlhODAwMjYsIDB4OGMwMDA1MGEsIDB4MDQwMjAwODQsIDB4NTkzNDAyMTIsCi0JMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwgMHgwNDAwMDA4MiwgMHg1OTM0MDQxMiwKLQkweDgyMDAwNTAwLCAweDAwMDAwMGZmLCAweDA0MDAwMDEwLCAweDgwMDAwMDQwLAotCTB4NDgwMjZjMTIsIDB4NDk3YTYwMDgsIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDcsCi0JMHg0YTAyNjIwNiwgMHgwMDAwMDM5OCwgMHg0OTdhNjIwNSwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODkyLCAweDA0MDAwMDA1LCAweDQ5MzY2MDA5LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMjAsIDB4NTkzMDA0MDMsIDB4ODIwMDBkODAsCi0JMHgwMDAwMDAwMiwgMHgwNDAyMDAwZCwgMHg1OTM0MDQwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwN2ZlLCAweDA0MDIwMDA5LCAweDU5YTgwMDI2LCAweDg0MDAwNTQwLAotCTB4NDgwMzUwMjYsIDB4MDIwMWY4MDAsIDB4MDAxMDQwNjcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwN2RhNiwgMHgwNDAxZjAwYywgMHgwMjAxZjgwMCwgMHgwMDEwN2RhNiwKLQkweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLAotCTB4NWMwMjc4MDAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHgwMjAxZjgwMCwgMHgwMDEwMWUxYiwgMHgwMjAxZjAwMCwKLQkweDAwMTA3Njk4LCAweDQyMDAwODAwLCAweDAwMDAwMDAzLCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHgwNDAxZjkxNSwKLQkweDA0MDIwNzkzLCAweDAyMDFmODAwLCAweDAwMTAxZTFiLCAweDRkM2MwMDAwLAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NWMwMjc4MDAsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDQyMDAzMDAwLCAweDAwMDAwMDE4LCAweDQxNzgyODAwLCAweDQyMDAyMDAwLAotCTB4MDAwMDAwMDAsIDB4NGQ0MDAwMDAsIDB4NGQ0NDAwMDAsIDB4NTkzNjhjMDMsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHgwMjAxZjgwMCwgMHgwMDEwOTYyYSwKLQkweDVjMDI4ODAwLCAweDVjMDI4MDAwLCAweDAyMDFmMDAwLCAweDAwMTA3Njk4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NjMsIDB4MDQwMWY3YzgsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY2YywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHgwMjAxZjgwMCwKLQkweDAwMTA3OGZkLCAweDA0MDIwN2MxLCAweDFjMDFmMDAwLCAweDRkMzgwMDAwLAotCTB4NTkzMjc0MDMsIDB4MDIwMWY4MDAsIDB4MDAxMDkxODMsIDB4NWMwMjcwMDAsCi0JMHgwMjAyMDAwMCwgMHgwMDAyMDhiNCwgMHg4MzZjMDU4MCwgMHgwMDAwMDAwMywKLQkweDA0MDAwMDA0LCAweDRhMDI2MjA2LCAweDAwMDAwMDAyLCAweDFjMDFmMDAwLAotCTB4NTkzMDA0MDMsIDB4NDgwMjY0MTYsIDB4NGEwMjYyMWQsIDB4MDAwMDAwMDEsCi0JMHg0YTAyNjQwMywgMHgwMDAwMDA4NSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwOSwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDAyLCAweDQyMDAwODAwLCAweDgwMDAwMDRiLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4NTUsIDB4MDIwMWY4MDAsIDB4MDAxMDFlMWIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwN2RhNiwgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDVjMDI3ODAwLCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NDk3YTYwMDgsCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwNywgMHg0YTAyNjIwNiwgMHgwMDAwMDM5OCwKLQkweDQ5N2E2MjA1LCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjZmLAotCTB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NGQzNDAwMDAsIDB4NTkzMjY4MDksCi0JMHg1OTMwMDIwMywgMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDQ4MDNjODU3LCAweDBjMDFmODAzLCAweDVjMDI2ODAwLAotCTB4MWMwMWYwMDAsIDB4MDAxMDhkNTMsIDB4MDAxMDhiMzksIDB4MDAxMDhkNTMsCi0JMHgwMDEwOGQ1MywgMHgwMDEwOGQ1MywgMHgwMDEwOGQ1MywgMHgwMDEwOGQ1MywKLQkweDAwMTA4ZDUzLCAweDAwMTA4ZDUzLCAweDAwMTA4YjM5LCAweDAwMTA4ZDU1LAotCTB4MDAxMDhiMzksIDB4MDAxMDhkNWQsIDB4MDAxMDhkNTMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg0YTAyNjQwMywgMHgwMDAwMDA4YiwgMHg0YTAyNjIwMywKLQkweDAwMDAwMDBiLCAweDQyMDAwODAwLCAweDgwMDA0MDRiLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4NTUsIDB4NTkzMDBhMWQsIDB4NGQzYzAwMDAsIDB4NDE3YTc4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg1YzAyNzgwMCwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDExLCAweDAyMDFmODAwLCAweDAwMTBhNzY2LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NDEzMDY4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwgMHgwNDAwMDAwOCwgMHg0OTM2NjAwOSwKLQkweDRkMzAwMDAwLCAweDQwMzY2MDAwLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LAotCTB4NWMwMjYwMDAsIDB4MDQwMWYwMDIsIDB4NDAzNjYwMDAsIDB4NDk3YTYwMDgsCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywgMHgwMDAwMDAwMSwKLQkweDAyMDFmODAwLCAweDAwMTAzOTNlLCAweDA0MDAwMDExLCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDQsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NGEwMjY0MjAsCi0JMHgwMDAwMDAwMSwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwNCwgMHg0ZDQwMDAwMCwKLQkweDQyMDI4MDAwLCAweDAwMDAwMDI5LCAweDQxNzgyODAwLCAweDAyMDFmODAwLAotCTB4MDAxMGEyNTAsIDB4NWMwMjgwMDAsIDB4MWMwMWYwMDAsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwYiwgMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLCAweDQyMDAwMDAwLAotCTB4MDAxMGI2NzUsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDQ4MDNjODU3LCAweDBjMDFmMDAxLCAweDAwMTA4ZGM4LCAweDAwMTA4ZGIwLAotCTB4MDAxMDhkYjQsIDB4MDAxMDhkYzksIDB4MDAxMDhkYjIsIDB4MDAxMDhkYjAsCi0JMHgwMDEwOGRiMCwgMHgwMDEwOGRiMCwgMHgwMDEwOGRiMCwgMHgwMDEwOGRiMCwKLQkweDAwMTA4ZGIwLCAweDAwMTA4ZGIwLCAweDAwMTA4ZGIwLCAweDAwMTA4ZGIwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDBlZTQsCi0JMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwNiwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDVjMDI1ODAwLCAweDQ5N2E2MDA4LAotCTB4NGEwMjYyMWQsIDB4MDAwMDAwMGEsIDB4NGEwMjY0MDMsIDB4MDAwMDAwODUsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMiwKLQkweDQyMDAwODAwLCAweDgwMDA0MDRiLCAweDAyMDFmMDAwLCAweDAwMDIwODU1LAotCTB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsCi0JMHgwNDAxZmNiZSwgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNmJiMiwKLQkweDA0MDIwMDBjLCAweDAyMDFmODAwLCAweDAwMTA2NGY2LCAweDA0MDIwMDA1LAotCTB4NWMwM2UwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5ODIsIDB4MDQwMWY3ZGQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjhhMywgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDVjMDNlMDAwLCAweDAyMDFmODAwLCAweDAwMTA2OTgyLCAweDU5MzAwMjAzLAotCTB4ODIwMDBkODAsIDB4MDAwMDAwMDMsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmN2JhLCAweDQ4MDNjODU2LCAweDU5YTgwMDBlLCAweDU5YTgwODY3LAotCTB4ODAwNDA0MDAsIDB4ODAwODA0ODAsIDB4MDQwMjEwMDQsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDRjMDgwMDAwLCAweDU5MzAxMDA4LCAweDgyMDgxNTAwLAotCTB4ZmZmMDAwMDAsIDB4NWMwMDEwMDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg0ZDMwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwgMHgwNDAwMDAwYSwKLQkweDA0MDFmODJmLCAweDRkMzgwMDAwLCAweDQyMDI3MDAwLCAweDAwMDAwMDRiLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4NWMwMjcwMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDRkMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA3NmM5LCAweDA0MDAwMDFiLAotCTB4MDQwMWY4MWYsIDB4NGQzMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsCi0JMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjdmNiwKLQkweDAyMDFmODAwLCAweDAwMTA2NTQzLCAweDVjMDI3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMGEwZGEsIDB4MDIwMWY4MDAsIDB4MDAxMDY5ODIsIDB4NWMwMjYwMDAsCi0JMHg4ZDNlN2QzZSwgMHgwNDAyMDAwYiwgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwKLQkweDAwMDAwMDRjLCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDVjMDI3MDAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwgMHgwNDAxZjdmYSwgMHg1OTJjMDQwNywKLQkweDQ5NGE2MDE3LCAweDQ5NGU2MDE4LCAweDQ5MzY2MDA5LCAweDQ5MmU2MDA4LAotCTB4NGEwMjY0MDYsIDB4MDAwMDAwMDMsIDB4ODAwMDAwYzIsIDB4ODAwMDA4YzQsCi0JMHg4MDA0MDQwMCwgMHg0ODAyNjIwNiwgMHgxYzAxZjAwMCwgMHg0OTNiYzg1NywKLQkweDRkMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDA0MDAwMDBkLAotCTB4MDQwMWZmZWYsIDB4NGQ0MDAwMDAsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMDUsCi0JMHgwNDAxZjgwZCwgMHg1YzAyODAwMCwgMHg4ZDNlN2QzZSwgMHgwNDAyMDAwNywKLQkweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsCi0JMHgwNDAxZjdmYSwgMHg0ODAzYzg1NiwgMHgwMjAxZjgwMCwgMHgwMDEwNjk4YywKLQkweDRkM2MwMDAwLCAweDRkNDQwMDAwLCAweDU5MzY4YzAzLCAweDQyMDI3ODAwLAotCTB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDY2ZmYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjY3NSwgMHgwMjAxZjgwMCwgMHgwMDEwNjU0MywgMHgwMjAxZjgwMCwKLQkweDAwMTBhMGRhLCAweDVjMDI4ODAwLCAweDVjMDI3ODAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDY5ODIsIDB4NDgwM2M4NTYsIDB4NGQzMDAwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDg5MiwgMHgwNDAwMDAwZiwgMHg0ODFhNjAxYywgMHg0OGVlNjAyMSwKLQkweDQ5MzY2MDA5LCAweDRhMDI2NDA2LCAweDAwMDAwMDAxLCAweDQ5MmU2MDA4LAotCTB4NGQzODAwMDAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMWYsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRkMzAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDAwMGUsIDB4NDhlZTYwMjEsCi0JMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0OTJlNjAwOCwKLQkweDRkMzgwMDAwLCAweDQyMDI3MDAwLCAweDAwMDAwMDU1LCAweDAyMDFmODAwLAotCTB4MDAwMjA4ZDgsIDB4NWMwMjcwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0ZDMwMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMDIwODkyLCAweDA0MDAwMDBmLCAweDQ4MWE2MDFjLAotCTB4NDhlZTYwMjEsIDB4NDkzNjYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsCi0JMHg0OTJlNjAwOCwgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwgMHgwMDAwMDAzZCwKLQkweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDVjMDI3MDAwLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsCi0JMHg0ZDMwMDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNzZjOSwgMHgwNDAwMDAxNCwKLQkweDQ5MzY2MDA5LCAweDQ5MmZjODU3LCAweDQ5MzNjODU3LCAweDU5MmMwNDA0LAotCTB4OGMwMDA1MWUsIDB4MDQwMDAwMDMsIDB4NDhlZmM4NTcsIDB4NDhlZTYwMjEsCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0OTJlNjAwOCwgMHg0ZDM4MDAwMCwKLQkweDQyMDI3MDAwLCAweDAwMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMDIwOGQ4LAotCTB4NWMwMjcwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4NWMwMjYwMDAsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0ZDMwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODkyLCAweDA0MDAwMDBmLCAweDQ4ZWU2MDIxLCAweDQ4MWE2MDFjLAotCTB4NDkzNjYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsIDB4NDkyZTYwMDgsCi0JMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0NCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwOGQ4LCAweDVjMDI3MDAwLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NDgwM2M4NTYsIDB4NGQzMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDg5MiwgMHgwNDAwMDAwZiwgMHg0ODFhNjAxYywKLQkweDQ4ZWU2MDIxLCAweDQ5MzY2MDA5LCAweDRhMDI2NDA2LCAweDAwMDAwMDAxLAotCTB4NDkyZTYwMDgsIDB4NGQzODAwMDAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDksCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDU5MzAwMDA5LAotCTB4ODAwMDE1NDAsIDB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4NTgwODA0MGIsCi0JMHg0ODAzYzg1NiwgMHg4MDAwMDA0MCwgMHgwNDAwMTAwMiwgMHg0ODAwMTQwYiwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDU5MzAwNDAzLCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDIsIDB4MDQwMDAwMGYsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDAwYywgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwNCwgMHgwNDAwMDAwOSwKLQkweDU5OWMwODE5LCAweDhjMDQwZDBlLCAweDA0MDAwMDA0LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMDMsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwgMHg0YzAwMDAwMCwgMHg0ZDJjMDAwMCwKLQkweDU5MzAwNDA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDA0LCAweDA0MDAwMDFkLAotCTB4NTkzMDAwMDgsIDB4ODAwMjVkNDAsIDB4ODAwMDAxYzAsIDB4MDQwMDAwMTksCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTM2MCwgMHgwNDAwMDAxNCwgMHg1OTMwMDQwNiwKLQkweDgyMDA0NTgwLCAweDAwMDAwMDEwLCAweDA0MDAwMDEwLCAweDgyMDA0NTgwLAotCTB4MDAwMDAwMTEsIDB4MDQwMDAwMGQsIDB4ODIwMDQ1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAwMDAwYywgMHg4MjAwNDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAwOSwKLQkweDgyMDA0NTgwLCAweDAwMDAwMDBhLCAweDA0MDAwMDA2LCAweDU5MmMwNDA0LAotCTB4OGMwMDA1MWUsIDB4MDQwMDAwMDMsIDB4ODAwMDA1ODAsIDB4MDQwMWYwMDMsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAyNTgwMCwgMHg1YzAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDRkMzAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDc2YzksIDB4MDQwMDAwMTMsIDB4NDkzNjYwMDksIDB4NDhlZTYwMjEsCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0OTJlNjAwOCwgMHg0ZDNjMDAwMCwKLQkweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDVjMDI3ODAwLAotCTB4NGQzODAwMDAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMjgsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LCAweDgzMzgwNTgwLAotCTB4MDAwMDAwMTUsIDB4MDQwMjAwMGQsIDB4NTlhODAwMTYsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDA3NCwgMHgwNDAyMDAwOSwgMHgwMjAxZjgwMCwgMHgwMDEwNDQ4MCwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLCAweDAwMDAwMDI5LAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4MDIwMWY4MDAsIDB4MDAxMDdkYTYsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHg0ODAzYzg1NiwgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDE2LCAweDA0MDIwMDA3LCAweDQyMDAwODAwLCAweDAwMDAwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4MDIwMWYwMDAsIDB4MDAxMDc4YmYsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDAxNSwgMHgwNDAyMDAxMywgMHg1OWE4MDAxNiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDE0LCAweDA0MDIwMDBmLCAweDAyMDFmODAwLAotCTB4MDAxMDQ0ZTEsIDB4MDIwMWY4MDAsIDB4MDAxMDgyMTAsIDB4MDQwMjAwMGEsCi0JMHg1OTM0MDQwNCwgMHg4MDAwMDU0MCwgMHgwNDAwMDAwNywgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDAyMDFmMDAwLAotCTB4MDAxMDc4YmYsIDB4MDIwMWY4MDAsIDB4MDAxMDdkYTYsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDhiNCwgMHg0ODAzYzg1NiwgMHg1OTJjMDIwNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA1LCAweDA0MDAwMDAyLCAweDFjMDFmMDAwLCAweDQ4MDNjODU2LAotCTB4NTkyYzAyMDgsIDB4ODQwMDA1NGEsIDB4NDgwMjVhMDgsIDB4MWMwMWYwMDAsCi0JMHg0OTdhNjIwNSwgMHg0OTdhNjAwOCwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDUwLCAweDQyMDAwODAwLCAweDgwMDAwMDQzLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4NTUsIDB4NDkzM2M4NTcsIDB4NGQzNDAwMDAsCi0JMHg1OTMyNjgwOSwgMHg1OTM0MDIwMCwgMHg4YzAwMDUwZSwgMHgwNDAwMDAwNiwKLQkweDU5MzAwNDA2LCAweDgyMDAwYzgwLCAweDAwMDAwMDEyLCAweDA0MDIxMDA0LAotCTB4MGMwMWY4MDYsIDB4NWMwMjY4MDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGIzMCwgMHgwNDAxZjdmYywgMHgwMDEwOGIzMCwgMHgwMDEwOGZiNCwKLQkweDAwMTA4ZmI4LCAweDAwMTA4ZmJiLCAweDAwMTBhMmI5LCAweDAwMTBhMmQ2LAotCTB4MDAxMGEyZGEsIDB4MDAxMDhiMzAsIDB4MDAxMDhiMzAsIDB4MDAxMDhiMzAsCi0JMHgwMDEwOGIzMCwgMHgwMDEwOGIzMCwgMHgwMDEwOGIzMCwgMHgwMDEwOGIzMCwKLQkweDAwMTA4YjMwLCAweDAwMTA4YjMwLCAweDAwMTA4YjMwLCAweDAwMTA4YjMwLAotCTB4NDgwM2M4NTYsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MWMwMWYwMDAsCi0JMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgxYzAxZjAwMCwgMHg1OTMwMDAxYywKLQkweDQ4MDNjODU3LCAweDU5MzAwNDE0LCAweDQ5MzNjODU3LCAweDQ4MDNjODU3LAotCTB4OGMwMDA1MDIsIDB4MDQwMDAwMDUsIDB4NDgwM2M4NTcsIDB4ODQwMDA1NDAsCi0JMHg0ODAyNjQxNCwgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHhkMDAwMDAwMCwKLQkweDQxMzAwODAwLCAweDAyMDFmODAwLCAweDAwMTAwYmRlLCAweDA0MDFmODEwLAotCTB4MDQwMjAwMGUsIDB4NTkzMDBjMTQsIDB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDA0MCwgMHgwNDAwMDAwMywgMHg4NDA0MGQ0MCwgMHgwNDAxZjAwNSwKLQkweDU5YTgwMDM3LCAweDgyMDAwNDAwLCAweDAwMDAwMDBhLCAweDQ4MDI2MjA1LAotCTB4ODQwNDBkNDIsIDB4NDgwNjY0MTQsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0ZDM0MDAwMCwgMHg1OTMyNjgwOSwgMHg1OTM0MDIwMCwgMHg4YzAwMDUwZSwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDU5MzAwMDFjLCAweDgwMDAwNTQwLAotCTB4MDQwMjAwMzQsIDB4NTkzMDA0MDMsIDB4NDgwM2M4NTcsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDA0MCwgMHgwNDAwMDAwNCwgMHg1OWE4MDAyMSwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDJhLCAweDRkMWMwMDAwLCAweDQxMzIzODAwLCAweDAyMDFmODAwLAotCTB4MDAwMjA4OTIsIDB4MDQwMDAwMjMsIDB4NDkzMjM4MWMsIDB4NTkxYzA0MTQsCi0JMHg4NDAwMDU0MiwgMHg0ODAyM2MxNCwgMHg0OTM2NjAwOSwgMHg1OTFjMDQwNiwKLQkweDgyMDAwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA2LCAweDU5MWMwMjAyLAotCTB4NDgwMjY0MTksIDB4NTkxYzA0MDIsIDB4NDgwMjYyMTksIDB4MDQwMWYwMDUsCi0JMHg1OTFjMDIwMiwgMHg0ODAyNjIxOSwgMHg1OTFjMDQwMiwgMHg0ODAyNjQxOSwKLQkweDQ5MWU2MDFlLCAweDRhMDI2NDA2LCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwMzUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NDIwMDA4MDAsCi0JMHg4MDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg1NSwgMHg0MTFlNjAwMCwKLQkweDVjMDIzODAwLCAweDgwMDAwNTgwLCAweDVjMDI2ODAwLCAweDFjMDFmMDAwLAotCTB4NDExZTYwMDAsIDB4NWMwMjM4MDAsIDB4NTlhODAwMzksIDB4NDgwMjYyMDUsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdmOCwgMHg0OTMzYzg1NywKLQkweDRkMmMwMDAwLCAweDQ5MzIzODFjLCAweDRhMDI2MjAyLCAweDAwMDBmZmZmLAotCTB4NTkxZTU4MDgsIDB4NTkxYzAwMDcsIDB4OGMwMDA1MWUsIDB4MDQwMDAwMDUsCi0JMHg4NDAwMDUxZSwgMHg0ODAyMzgwNywgMHg0OTdhNWMwOSwgMHgwNDAxZjAxOCwKLQkweDU5MmMwNDA4LCAweDhjMDAwNTE4LCAweDA0MDAwMDE1LCAweDg0MDAwNTE4LAotCTB4NDgwMjVjMDgsIDB4NGQ0MDAwMDAsIDB4NTkyZTgyMDYsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAwMSwgMHgwNDAxZmIzNCwgMHg0OTQyNWEwNiwgMHg1YzAyODAwMCwKLQkweDQ5N2E1YzA5LCAweDU5MmMwNDA4LCAweDhjMDAwNTEyLCAweDA0MDAwMDA4LAotCTB4NGQyYzAwMDAsIDB4ODQwMDA1MTIsIDB4NDgwMjVjMDgsIDB4NTkyZTU4MDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHg1YzAyNTgwMCwgMHg1OWE4MDAzOSwKLQkweDQ4MDI2MjA1LCAweDU5MWMwMjE0LCAweDQ4MDI2MjE2LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDAwMDgsIDB4NGEwMjNhMDMsIDB4MDAwMDAwMDIsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDAwOCwgMHg0OTdhNjAxNSwKLQkweDA0MDFmMDFlLCAweDU5MWMwMDA3LCAweDg0MDAwNTQwLCAweDQ4MDIzODA3LAotCTB4NGEwMjNhMDMsIDB4MDAwMDAwMDQsIDB4NTkxYzA0MTQsIDB4NDgwM2M4NTcsCi0JMHg4NDAwMDUxYywgMHg4NDAwMDU1NCwgMHg0ODAyM2MxNCwgMHg1OTJjMDAwZiwKLQkweDQwMDAxMDAwLCAweDU5MWMwODE2LCAweDgwMDQwNDgwLCAweDA0MDIxN2YwLAotCTB4NTkxYzAwMTYsIDB4ODIwMDA1MDAsIDB4ZmZmZmZmZmMsIDB4NDgwMjYwMTUsCi0JMHg0ODAyMzgxNiwgMHg1OTFjMGExNCwgMHg0ODA3Yzg1NywgMHg4MjA0MGQ4MCwKLQkweDAwMDAwMDA1LCAweDA0MDIwMDA1LCAweDQ4MGJjODU3LCAweDQ4MDNjODU3LAotCTB4NGEwMjM4MTIsIDB4ZmZmZmZmZmYsIDB4NTkxYzA0MDIsIDB4NDgwMjY0MTksCi0JMHg1OTFjMDIwMiwgMHg0ODAyNjIxOSwgMHg1OTFlNjgwOSwgMHg0OTM2NjAwOSwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLCAweDAwMDAwMDM5LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NDIwMDA4MDAsIDB4ODAwMDAwNDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDg1NSwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDU5MzAwNDE0LCAweDhjMDAwNTE0LCAweDA0MDAwMDE1LAotCTB4OGMwMDA1MWMsIDB4MDQwMjAwMTIsIDB4NTkzMDAwMTYsIDB4ODAxMDA0ODAsCi0JMHgwNDAwMTAwNiwgMHgwNDAwMDAwNSwgMHg1OTMwMDQxNCwgMHg4NDAwMDUxNCwKLQkweDg0MDAwNTVjLCAweDA0MDFmMDA5LCAweDQ4MTI2MDE2LCAweDQ4MTI2MDEyLAotCTB4NDAxMDAwMDAsIDB4NTkyYzE4MGYsIDB4ODAwYzA0ODAsIDB4NDgwMjYwMTEsCi0JMHg1OTMwMDQxNCwgMHg4NDAwMDUxNCwgMHg0ODAyNjQxNCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDhjMDAwNTFjLCAweDA0MDIwMDA2LCAweDU5MzAwMDEyLAotCTB4NDgwMjYwMTYsIDB4NTkzMDA0MTQsIDB4ODQwMDA1NWMsIDB4NDgwMjY0MTQsCi0JMHgxYzAxZjAwMCwgMHg1OTMwMGMwMywgMHg0OTMzYzg1NywgMHg0ODA3Yzg1NywKLQkweDgyMDQwNDgwLCAweDAwMDAwMDM0LCAweDA0MDAxMDA2LCAweDgyMDQwNDgwLAotCTB4MDAwMDAwM2MsIDB4MDQwMjEwMDMsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgwNDAxZjdmZCwgMHg0MTc4MDgwMCwKLQkweDU5YTgxMDM1LCAweDQyMDAwMDAwLCAweDAwMDAwMDMyLCAweDAyMDFmODAwLAotCTB4MDAxMDYzZWUsIDB4ODAwODExYzAsIDB4MDQwMjAwMDMsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAxNCwgMHg0ODBiNTAzNywgMHg1OWE4MTAzNiwgMHg0ODBiNTAyZCwKLQkweDQxNzgwODAwLCAweDQyMDAwMDAwLCAweDAwMDAwMDY0LCAweDAyMDFmODAwLAotCTB4MDAxMDYzZWUsIDB4ODAwODExYzAsIDB4MDQwMjAwMDMsIDB4NDIwMDEwMDAsCi0JMHgwMDAwMDAxNCwgMHg0ODBiNTAzOCwgMHg4MjA4MTQwMCwgMHgwMDAwMDAwYSwKLQkweDQ4MGI1MDM5LCAweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLAotCTB4MDAxMDY5YWYsIDB4NDIwMDAwMDAsIDB4MzAwMDAwMDAsIDB4NDAwODA4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGJiMiwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywKLQkweDU5YTgxMDEwLCAweDAyMDFmODAwLCAweDAwMTA2OWFmLCAweDAyMDFmMDAwLAotCTB4MDAxMDQ3NTUsIDB4NGEwMzUwMzcsIDB4MDAwMDAwMjgsIDB4NGEwMzUwMzgsCi0JMHgwMDAwMDAxNCwgMHg0YTAzNTAyZCwgMHgwMDAwMDdkMCwgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDFlLCAweDQ4MGI1MDM5LCAweDQyMDAwODAwLCAweDAwMDAwMDAxLAotCTB4MDIwMWY4MDAsIDB4MDAxMDY5YWYsIDB4NDIwMDAwMDAsIDB4MzAwMDAwMDAsCi0JMHg0MDA4MDgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMGJiMiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAzLCAweDU5YTgxMDEwLCAweDAyMDFmMDAwLCAweDAwMTA2OWFmLAotCTB4NDkzM2M4NTcsIDB4NGQyYzAwMDAsIDB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDAzZSwgMHgwNDAyMDAwNSwgMHg1OTMyNTgxNywgMHg4MTJlNTljMCwKLQkweDAyMDIwODAwLCAweDAwMTAwODNhLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4NDkzN2M4NTcsIDB4NGQzMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsCi0JMHgwNDAwMDAxMSwgMHg0OTM2NjAwOSwgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwKLQkweDQ5MmU2MDA4LCAweDQyMDAwODAwLCAweDAwMDAwMDA5LCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4NGQzODAwMDAsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMzMsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhkOCwgMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAwMDAxLCAweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NGQyYzAwMDAsIDB4NGM1ODAwMDAsIDB4NGQzYzAwMDAsIDB4NTkzMjU4MDgsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDAxNSwgMHgwNDAyMDAyNSwgMHg1OWE4YjAxNiwKLQkweDgyNTgwYzgwLCAweDAwMDAwMDE5LCAweDA0MDAxMDAzLCAweDQyMDBiMDAwLAotCTB4MDAwMDAwMTgsIDB4ODA1OGIxMDQsIDB4MDQwMWZhMGEsIDB4ODAwMDA1ODAsCi0JMHgwNDAxZmExYSwgMHg4MzJjYWMwMCwgMHgwMDAwMDAwOSwgMHg4M2NjYTQwMCwKLQkweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDRjNjAwMDAwLAotCTB4NDIwMGMwMDAsIDB4MDAwMDAwMDEsIDB4NTkyYzEwMGEsIDB4OGMwODE1MTgsCi0JMHgwNDAyMDAwNiwgMHg1OWE4MDAxMCwgMHg1OTJjMTAwZCwgMHg4MDA4MDU4MCwKLQkweDA0MDIwMDA3LCAweDQxNzhjMDAwLCAweDU5MzAxMDA5LCAweDU4MDgxNDAzLAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFlNDgsIDB4NWMwMGMwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNzhiZiwgMHgwNDAxZjAwOCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDAyLCAweDA0MDFmYTA5LCAweDAyMDFmODAwLCAweDAwMTA3ZGE2LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NWMwMjc4MDAsIDB4NWMwMGIwMDAsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NiwgMHg0OTM2NjAwOSwKLQkweDRhMDI2NDA2LCAweDAwMDAwMDAxLCAweDQ5MmU2MDA4LCAweDRkMzgwMDAwLAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwNGQsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsCi0JMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDRkMmMwMDAwLCAweDgzMzgwNTgwLCAweDAwMDAwMDE1LAotCTB4MDQwMjAwMjcsIDB4NTlhODA4MTYsIDB4NTkzMjU4MDgsIDB4NTkzMDA0MGIsCi0JMHg4MDAwMDBjNCwgMHg4MDA0MDU4MCwgMHgwNDAyMDAyMSwgMHg0YzUwMDAwMCwKLQkweDRjNTQwMDAwLCAweDRjNTgwMDAwLCAweDgzY2NhNDAwLCAweDAwMDAwMDA2LAotCTB4NDA1MGE4MDAsIDB4NTkzMGI0MGIsIDB4MDIwMWY4MDAsIDB4MDAxMGE5NGYsCi0JMHg4M2NjYTQwMCwgMHgwMDAwMDAwNiwgMHg1OTJjYjIwNSwgMHg4MzJjYWMwMCwKLQkweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDU5MmU1ODAxLAotCTB4ODEyZTU5YzAsIDB4MDQwMjA3ZjksIDB4NTkzMWQ4MjEsIDB4NThlZjQwMGIsCi0JMHg1OGVlNTgwZCwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywgMHg1OGVjMDAwOSwKLQkweDA4MDFmODAwLCAweDU5MzAwNDAyLCAweDVjMDBiMDAwLCAweDVjMDBhODAwLAotCTB4NWMwMGEwMDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwN2RhNiwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywKLQkweDgzMzgwNTgwLCAweDAwMDAwMDM1LCAweDA0MDAwMDA1LCAweDU5MzAxNDE5LAotCTB4MDQwMWY4NTEsIDB4MDQwMDAwMjcsIDB4MDQwMWYwMDYsIDB4NGQzMDAwMDAsCi0JMHg1OTMyNjAxZSwgMHgwNDAxZjg1NiwgMHg1YzAyNjAwMCwgMHgwNDAwMDAyMCwKLQkweDU5MWMwYzA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA0LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDYsIDB4MDQwMjAwMWMsIDB4NTkxYzBjMDIsCi0JMHg1OTMwMDQxOSwgMHg4MDA0MDU4MCwgMHgwNDAwMDAwOSwgMHg1OTMwMDIxOSwKLQkweDgwMDQwNTgwLCAweDA0MDIwMDE1LCAweDU5MWMwYTAyLCAweDU5MzAwNDE5LAotCTB4ODAwNDA1ODAsIDB4MDQwMjAwMTEsIDB4MDQwMWYwMDksIDB4NTkzMDBhMTksCi0JMHg4MjA0MDU4MCwgMHgwMDAwZmZmZiwgMHgwNDAwMDAwNSwgMHg1OTFjMDIwMiwKLQkweDU5MzAwYTE5LCAweDgwMDQwNTgwLCAweDA0MDIwMDA4LCAweDU5MWMwMDA5LAotCTB4NTkzMDA4MDksIDB4ODAwNDA1ODAsIDB4MWMwMWYwMDAsIDB4NDE3YTM4MDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDU5YjgwMGU0LCAweDhjMDAwNTM4LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NDIwMDA4MDAsIDB4MDAwMDAxMmMsIDB4NGEwMzcwZTQsIDB4MjAwMDAwMDAsCi0JMHg1OWI4MDBlNCwgMHg4MDA0MDg0MCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDhjMDAwNTNjLCAweDA0MDIwN2Y5LCAweDRhMDM3MGU0LCAweDMwMDAwMDAwLAotCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NTliODAwZTQsCi0JMHg4YzAwMDUzYywgMHgwNDAyMDdmMSwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NiwKLQkweDRhMDM3MGU0LCAweDIwMDAwMDAwLCAweDQwMDAwMDAwLCAweDU5YjgwMGU0LAotCTB4OGMwMDA1MzgsIDB4MDQwMjA3ZmIsIDB4MWMwMWYwMDAsIDB4NTkzMDA4MDcsCi0JMHg4YzA0MGQxZSwgMHg1OTJjMGMwOCwgMHgwNDAyMDAwMiwgMHg4YzA0MGQxOCwKLQkweDFjMDFmMDAwLCAweDA0MDFmYzEwLCAweDA0MDAwMDA4LCAweDQyMDAwODAwLAotCTB4MDAwMDAwMjQsIDB4MDIwMWY4MDAsIDB4MDAxMDYzY2YsIDB4ODIwNjNjMDAsCi0JMHgwMDEwY2ZjMCwgMHg0OTFmYzg1NywgMHgxYzAxZjAwMCwgMHg4MzMwMDQ4MCwKLQkweDAwMTBjZmMwLCAweDA0MDAxMDBhLCAweDU5YTgwMDBiLCAweDgxMzAwNDgwLAotCTB4MDQwMjEwMDcsIDB4NTkzMDE0MDIsIDB4MDQwMWZmZWYsIDB4MDQwMDAwMDcsCi0JMHg0MTFjMDAwMCwgMHg4MTMwMDU4MCwgMHgwNDAwMDAwMywgMHg4MTc4MDUwMCwKLQkweDA0MDFmMDAyLCAweDgxMzAwNTQwLCAweDFjMDFmMDAwLCAweDQ5NDdjODU3LAotCTB4NGQzMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsIDB4MDQwMjAwMGEsCi0JMHg0MjAyNjAwMCwgMHgwMDEwYmJlOCwgMHg0OTM2NjAwOSwgMHg0OTJlNjAwOCwKLQkweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDgwMDAwNTgwLCAweDVjMDI2MDAwLAotCTB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWY3ZmMsCi0JMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwMjAwMDgwMCwKLQkweDAwMTAwNjE1LCAweDRkMmMwMDAwLCAweDRkMzQwMDAwLCAweDRkNDQwMDAwLAotCTB4NGM1ODAwMDAsIDB4NTkzMjU4MDgsIDB4NTkzMjY4MDksIDB4NDk0MjVhMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNTQzOSwgMHg1OTJlOGMwNiwgMHg1OTJjNDIwNywKLQkweDgyMjAwNTAwLCAweDAwMDAwMDBmLCAweDBjMDFmODA2LCAweDVjMDBiMDAwLAotCTB4NWMwMjg4MDAsIDB4NWMwMjY4MDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwOTIyZiwgMHgwMDEwOTI1MSwgMHgwMDEwOTI1OCwgMHgwMDEwOTI1YywKLQkweDAwMTA5MjY1LCAweDAwMTA5MjJjLCAweDAwMTA5MjJjLCAweDAwMTA5MjJjLAotCTB4MDAxMDkyNjksIDB4MDAxMDkyNzUsIDB4MDAxMDkyNzUsIDB4MDAxMDkyMmMsCi0JMHgwMDEwOTIyYywgMHgwMDEwOTIyYywgMHgwMDEwOTIyYywgMHgwMDEwOTIyYywKLQkweDQ4MDNjODU3LCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDgxNDI4MWMwLAotCTB4MDQwMjAwMTIsIDB4NDE3ODU4MDAsIDB4NTkyYzA0MDQsIDB4OGMwMDA1MWMsCi0JMHgwNDAyMDAwMiwgMHg1OTM0NWMwNSwgMHg0NDJjMjgwMCwgMHg1OTM0MDAwOCwKLQkweDQ4MDAyODAyLCAweDU5MzQwMDA5LCAweDQ4MDAyODAxLCAweDU5MzQwMDA2LAotCTB4NDgwMDI4MDQsIDB4NTkzNDAwMDcsIDB4NDgwMDI4MDMsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwYiwgMHgwNDAxZjAzNywgMHg1OTJjMDIwNywgMHg4YzAwMDUxZSwKLQkweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDA0MDIwMDMyLCAweDgyMDRiNTQwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMmYsIDB4NDQwNDI4MDAsIDB4NTkzMjY4MDksCi0JMHg1OTM0MDQwMCwgMHg0ODAwMjgwMSwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwKLQkweDA0MDFmMDI4LCAweDgxNDI4MWMwLCAweDA0MDIwMDMwLCAweDU5MzQ1YzA1LAotCTB4NDQyYzI4MDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMjEsCi0JMHg4MzQwYjU0MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAxZSwgMHgwNDAxZjAyNywKLQkweDgxNDI4MWMwLCAweDA0MDIwMDI1LCAweDU5MzQwMjAwLCAweDQ0MDAyODAwLAotCTB4NTkzNDAwMDEsIDB4NDgwMDI4MDEsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsCi0JMHgwNDAxZjAxNCwgMHg4MzQwYjU0MCwgMHgwMDAwMDAwMCwgMHgwNDAyMDAxYiwKLQkweDA0MDFmMDEwLCAweDgzNDBiNTQwLCAweDAwMDAwMDAwLCAweDA0MDAwMDBkLAotCTB4MDIwMWY4MDAsIDB4MDAxMDQ4NzEsIDB4MDQwMDAwMTQsIDB4OGMyMDQ1MGUsCi0JMHgwNDAwMDAwMiwgMHg0OTdhNjAwOSwgMHg0MTc4YjAwMCwgMHg0OTdhNWEwNiwKLQkweDA0MDFmMDA0LCAweDgzNDBiNTQwLCAweDAwMDAwMDAwLCAweDA0MDIwMDBiLAotCTB4NTkyYzA0MDQsIDB4ODQwMDA1MWMsIDB4NDgwMjVjMDQsIDB4NTkyYzAyMDcsCi0JMHg4NDAwMDUxZSwgMHg0ODAyNWEwNywgMHgwNDAxZjhhYSwgMHg0OTdhNjAwOCwKLQkweDAyMDFmMDAwLCAweDAwMDIwMzgxLCAweDU5MmMwMjA3LCAweDhjMDAwNTFlLAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMjA3ZjIsIDB4ODIwNGI1NDAsCi0JMHgwMDAwMDAwMCwgMHgwNDAwMDdlZiwgMHg0NDA0MjgwMCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmN2ViLCAweDQ5MzdjODU3LCAweDRkMzAwMDAwLAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDAwMTEsIDB4NDkzNjYwMDksCi0JMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwgMHg0OTJlNjAwOCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDBiLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDRkMzgwMDAwLAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwNDMsIDB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsCi0JMHg1YzAyNzAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAyNjAwMCwKLQkweDFjMDFmMDAwLCAweDQ5MzdjODU3LCAweDRkMmMwMDAwLCAweDU5MzI1ODA4LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwMTUsIDB4MDQwMjAwMjUsIDB4NTlhODAwMTYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwNCwgMHgwNDAyMDAyMSwgMHg1OWE4MDAxMCwKLQkweDU5MmMxMDA5LCAweDgwMDgwNTgwLCAweDA0MDIwMDEwLCAweDRkNDQwMDAwLAotCTB4NTkyZThjMDYsIDB4NTkyYzAyMDcsIDB4NDgwM2M4NTYsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDA4MCwgMHg4NDAwMDU0OCwgMHg0ZDNjMDAwMCwgMHg0MjAyNzgwMCwKLQkweDAwMDAxMDAwLCAweDAyMDFmODAwLCAweDAwMTA0ODBhLCAweDVjMDI3ODAwLAotCTB4NWMwMjg4MDAsIDB4MDQwMWYwMDQsIDB4NDgwM2M4NTYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDg3MSwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAxNywKLQkweDRkNDAwMDAwLCAweDQyMDI4MDAwLCAweDAwMDAwMDAwLCAweDQxNzgwODAwLAotCTB4MDQwMWZmMzgsIDB4NWMwMjgwMDAsIDB4MDQwMWYwMGUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDg3MSwgMHgwNDAyMDdmNCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDBhLCAweDRjNTgwMDAwLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLAotCTB4MDQwMWY4NmUsIDB4NWMwMGIwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDdkYTYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzdjODU3LCAweDRkMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMDIwODkyLAotCTB4MDQwMDAwMTIsIDB4NDkzNjYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsCi0JMHg0ZDNjMDAwMCwgMHg0ZDM4MDAwMCwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2JkLCAweDQ5MmU2MDA4LCAweDQyMDI3MDAwLCAweDAwMDAwMDA0LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4ZDgsIDB4NWMwMjcwMDAsIDB4NWMwMjc4MDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzdjODU3LCAweDRkMzAwMDAwLCAweDAyMDFmODAwLCAweDAwMTA3NmM5LAotCTB4MDQwMDAwMGQsIDB4NDkzNjYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDEsCi0JMHg0OTJlNjAwOCwgMHg0ZDM4MDAwMCwgMHg0MjAyNzAwMCwgMHgwMDAwMDA1MSwKLQkweDAyMDFmODAwLCAweDAwMDIwOGQ4LCAweDVjMDI3MDAwLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4NWMwMjYwMDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0YzU4MDAwMCwgMHg1OTMyNTgwOCwgMHg4MzM4MzU4MCwgMHgwMDAwMDAxNSwKLQkweDA0MDIwMDExLCAweDU5MmMwMDA4LCAweDgyMDAwNTAwLCAweDAwZmZmZmZmLAotCTB4MDQwMjAwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDU0MzksIDB4NTljYzAwMDAsCi0JMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHg0NDAwMjgwMCwgMHg0MjAwYjAwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmODBiLCAweDAyMDFmODAwLCAweDAwMTA3OGJmLAotCTB4MDQwMWYwMDYsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsIDB4MDQwMWY4MjMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwN2RhNiwgMHg1YzAwYjAwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MmZjODU3LCAweDRjNTgwMDAwLCAweDRjMDAwMDAwLCAweDgwNThiMWMwLAotCTB4MDQwMDAwMGIsIDB4ODI1ODA1MDAsIDB4ZmZmZmZmZjAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg4MDU4YjBkMCwgMHg1OTJjMDQwOCwgMHg4MjAwMDUwMCwKLQkweGZmZmZmMGZmLCAweDgwNTgwNTQwLCAweDQ4MDI1YzA4LCAweDVjMDAwMDAwLAotCTB4NWMwMGIwMDAsIDB4MWMwMWYwMDAsIDB4NDkyZmM4NTcsIDB4NGMwMDAwMDAsCi0JMHg0YzA0MDAwMCwgMHg4MDAwMDBkOCwgMHg1OTJjMGMwOCwgMHg4MjA0MGQwMCwKLQkweGZmZmYwZmZmLCAweDgwMDQwNTQwLCAweDQ4MDI1YzA4LCAweDVjMDAwODAwLAotCTB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NGQyYzAwMDAsCi0JMHg1OTMyNTgwOCwgMHg1OTJjMDIwNywgMHg4NDAwMDU1ZSwgMHg0ODAyNWEwNywKLQkweDRjNTAwMDAwLCAweDRjNTQwMDAwLCAweDRjNTgwMDAwLCAweDA0MDFmZmQ5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDU0MzksIDB4NDYwMDI4MDAsIDB4MDAwMDAwMTgsCi0JMHg4MDE0MjgwMCwgMHg4MDU4YjA0MCwgMHg4M2NjYTQwMCwgMHgwMDAwMDAwNywKLQkweDQwMTRhODAwLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDVjMDBiMDAwLAotCTB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHg1OTMyNTgwOCwgMHg1OTJjMDIwNCwgMHg4MjAwMDU4MCwgMHgwMDAwMDE1MiwKLQkweDFjMDFmMDAwLCAweDU5MzAwMDFmLCAweDgwMDAwNTQwLCAweDAyMDIwODAwLAotCTB4MDAxMDBkOWEsIDB4MWMwMWYwMDAsIDB4NGQyYzAwMDAsIDB4NTkzMjU4MDgsCi0JMHg1OTMwMDIwMywgMHg0OTMzYzg1NywgMHg0OTJmYzg1NywgMHg0OTNiYzg1NywKLQkweDQ4MDNjODU3LCAweDgyMDAzNDgwLCAweDAwMDAwMDBlLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4MGMwMWY4MDMsIDB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwOTM4NiwgMHgwMDEwOTM5MSwgMHgwMDEwOTNjZiwgMHgwMDEwOTM4NiwKLQkweDAwMTA5Mzg2LCAweDAwMTA5Mzg2LCAweDAwMTA5Mzg2LCAweDAwMTA5Mzg2LAotCTB4MDAxMDkzODgsIDB4MDAxMDkzODYsIDB4MDAxMDkzODYsIDB4MDAxMDkzODYsCi0JMHgwMDEwOTM4NiwgMHgwMDEwOTM4NiwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwKLQkweDgzMzgzNDgwLCAweDAwMDAwMDU2LCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4NDkzYTY0MDMsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNjQ3MCwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxMywgMHgwNDAyMDAxMCwKLQkweDQ5MzdjODU3LCAweDU5MmMwMDBjLCAweDgwMDAwMWMwLCAweDA0MDAwMDA2LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDIsIDB4NTlhODAwMzcsIDB4NDgwMjYyMDYsCi0JMHgxYzAxZjAwMCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDgzMzgwNTgwLAotCTB4MDAwMDAwMjcsIDB4MDQwMDAwMWIsIDB4ODMzODA1ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAwMDAxMiwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxNSwgMHgwNDAwMDAwNSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDE2LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsIDB4MDIwMjAwMDAsIDB4MDAxMDc2ZmIsCi0JMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDA0MDFmMDE2LCAweDQ5MzdjODU3LCAweDAyMDFmODAwLAotCTB4MDAxMDY4ZjYsIDB4NGEwMjU4MGUsIDB4MDAwMDAwMTEsIDB4MDQwMWYwMDYsCi0JMHg0OTM3Yzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNjhmNiwgMHg0YTAyNTgwZSwKLQkweDAwMDAwMDEwLCAweDRhMDI1YTA2LCAweDAwMDAwMDMxLCAweDRhMDI1ODBkLAotCTB4MDAwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGE4MywgMHgwMjAxZjAwMCwgMHgwMDEwNzY5OCwgMHg1OTM0MTQwMCwKLQkweDgyMDgxZDAwLCAweDAwMDAwMGZmLCAweDU5MzAwYzAzLCAweDQ4MGJjODU3LAotCTB4NDgwN2M4NTcsIDB4ODIwNDA1ODAsIDB4MDAwMDAwNTMsIDB4MDQwMDAwMmUsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAxNiwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAxLCAweDA0MDAwMDE3LCAweDgyMDQwNTgwLCAweDAwMDAwMDAzLAotCTB4MDQwMDAwMWMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDAwMWQsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAzMywgMHgwNDAwMDAxYSwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAwLCAweDA0MDAwMDFiLCAweDgyMDQwNTgwLCAweDAwMDAwMDA0LAotCTB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4MDQwMWY4YTEsIDB4MDQwMWYwMTYsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDg0YywgMHgwNDAxZjAxMiwKLQkweDgyMGMwNTgwLCAweDAwMDAwMDBiLCAweDA0MDIwMDBmLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4MDQwMWYwMGEsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDg2NCwgMHgwNDAxZjAwNiwKLQkweDgyMGMwNTgwLCAweDAwMDAwMDA5LCAweDA0MDAwODg5LCAweDA0MDFmMDAyLAotCTB4MDQwMWY4OTMsIDB4NGEwMjY0MDMsIDB4MDAwMDAwNTIsIDB4NTlhODEwMTYsCi0JMHg1OTJjMDQwYiwgMHg4YzAwMDUwMCwgMHgwNDAwMDAwMywgMHg0MjAwMTAwMCwKLQkweDAwMDAwMDA4LCAweDU5MmMwNDBiLCAweDhjMDAwNTE2LCAweDA0MDAwMDAzLAotCTB4ODIwODE0MDAsIDB4MDAwMDAwMTgsIDB4NTkyYzAwMGMsIDB4NDk3YTU4MGQsCi0JMHg0OTdhNTgwZSwgMHg4MDA4MGM4MCwgMHgwNDAwMDAwOSwgMHgwNDAwMTAwNSwKLQkweDRhMDI1YTA2LCAweDAwMDAwMDA3LCAweDQwMDAxMDAwLCAweDA0MDFmMDA2LAotCTB4NGEwMjVhMDYsIDB4MDAwMDAwMTUsIDB4MDQwMWYwMDMsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAwMCwgMHg0ODBhNTgwYywgMHg4MjA4MTQwMCwgMHgwMDAwMDAwMywKLQkweDgwMDgxMTA0LCAweDAyMDFmODAwLCAweDAwMTA3ODNjLCAweDA0MDAwMDEwLAotCTB4NTkyYzEwMDEsIDB4NDgwYTYwMGIsIDB4NTgwODA4MDAsIDB4ODIwODA0MDAsCi0JMHgwMDAwMDAwMiwgMHg1OTJjMTAxMSwgMHg1OTJjMTgxMiwgMHg0MjAwMzAwMCwKLQkweDAwMDAwMDAwLCAweDQyMDAyMDAwLCAweDAwMTAxMjUwLCAweDAyMDFmODAwLAotCTB4MDAxMDc5YjksIDB4MDQwMDAwMDIsIDB4MWMwMWYwMDAsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAyYywgMHg0OTdhNTgwYywgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDgzMzgwNTgwLCAweDAwMDAwMDE1LAotCTB4MDQwMjAwMGEsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsIDB4MDQwMjAwMGIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDQ4MCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNCwKLQkweDAyMDFmMDAwLCAweDAwMTA0M2M3LCAweDQyMDAwODAwLCAweDAwMDAwMDA3LAotCTB4MDIwMWYwMDAsIDB4MDAxMDQzYzcsIDB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAxMCwgMHgwNDAyMDAwOSwgMHg1OTM0MDAwMiwKLQkweDgyMDAwNTAwLCAweDAwZmYwMDAwLCAweDgyMDAwNTgwLCAweDAwZmYwMDAwLAotCTB4MDQwMDA3ZWMsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMDgsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGFkYSwgMHgwNDAwMDdlNywgMHg1OTJjMDQwYiwgMHg4NDAwMDU0MCwKLQkweDQ4MDI1YzBiLCAweDA0MDFmN2U5LCAweDgzMzgwNTgwLCAweDAwMDAwMDE1LAotCTB4MDQwMjAwMGYsIDB4NTlhODAwNmYsIDB4OGMwMDA1MDIsIDB4MDQwMjAwMTAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDRlMSwgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDVjMDI3ODAwLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDYsIDB4MDIwMWYwMDAsIDB4MDAxMDQzYzcsIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNCwgMHgwMjAxZjAwMCwgMHgwMDEwNDNjNywgMHgwMjAxZjgwMCwKLQkweDAwMTA0ZTBkLCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDA0MDIwMDA5LAotCTB4NTkzNDAwMDIsIDB4ODIwMDA1MDAsIDB4MDBmZjAwMDAsIDB4ODIwMDA1ODAsCi0JMHgwMGZmMDAwMCwgMHgwNDAwMDdlNywgMHg0MjAwMTAwMCwgMHgwMDAwMDAwOCwKLQkweDAyMDFmODAwLCAweDAwMTA0YWRhLCAweDA0MDAwN2UyLCAweDU5MmMwNDBiLAotCTB4ODQwMDA1NDAsIDB4NDgwMjVjMGIsIDB4MDQwMWY3ZTksIDB4NDIwMDA4MDAsCi0JMHgwMDAwMDAwNCwgMHgwMjAxZjAwMCwgMHgwMDEwNDNjNywgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDE1LCAweDA0MDIwMDA1LCAweDAyMDFmODAwLCAweDAwMTBhMGIxLAotCTB4MDIwMDA4MDAsIDB4MDAxMDQ3MTEsIDB4MWMwMWYwMDAsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAxNSwgMHgwNDAyMDAxZCwgMHg0YzU4MDAwMCwgMHg4M2NjMTQwMCwKLQkweDAwMDAwMDA4LCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDgzMzQxYzAwLAotCTB4MDAwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsIDB4MDQwMjAwMTIsCi0JMHg4M2NjMTQwMCwgMHgwMDAwMDAwYSwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwKLQkweDgzMzQxYzAwLCAweDAwMDAwMDA4LCAweDAyMDFmODAwLCAweDAwMTA4MmZmLAotCTB4MDQwMjAwMDksIDB4NTkzNDIyMDAsIDB4NTljYzEwMDcsIDB4ODAwODExYzAsCi0JMHgwNDAwMDAwMywgMHg0ODBhNjgwMSwgMHg4NDEwMjU0MiwgMHg4NDEwMjUxYSwKLQkweDQ4MTI2YTAwLCAweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLAotCTB4MDAxMGI2N2EsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjk4YywgMHg1OTMwMDIwMywgMHg0OTMzYzg1NywgMHg0ODAzYzg1NywKLQkweDgyMDAwYzgwLCAweDAwMDAwMDBlLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LAotCTB4MGMwMWY4MDMsIDB4MDIwMWYwMDAsIDB4MDAxMDY5ODIsIDB4MDAxMDk0ZDcsCi0JMHgwMDEwOTRlNiwgMHgwMDEwOTRkOCwgMHgwMDEwOTRkNSwgMHgwMDEwOTRkNSwKLQkweDAwMTA5NGQ1LCAweDAwMTA5NGQ1LCAweDAwMTA5NGQ1LCAweDAwMTA5NGQ1LAotCTB4MDAxMDk0ZDUsIDB4MDAxMDk0ZDUsIDB4MDAxMDk0ZDUsIDB4MDAxMDk0ZDUsCi0JMHgwMDEwOTRkNSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHgxYzAxZjAwMCwKLQkweDU5MzAwNDAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDUyLCAweDAyMDAwMDAwLAotCTB4MDAxMDhiMzksIDB4MDIwMWY4MDAsIDB4MDAxMDRhODMsIDB4NTkzMjU4MDgsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwKLQkweDAyMDFmMDAwLCAweDAwMTA3Njk4LCAweDU5MzAxODA0LCAweDg0MGMwNTIwLAotCTB4NDgwMjYwMDQsIDB4NTk4YzAwMGQsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMTAsCi0JMHg4YzBjMWQyMCwgMHgwNDAyMDAxMCwgMHg0MjAwMTAwMCwgMHgwMDEwYjVmNCwKLQkweDUwMDgxMDAwLCAweDU4MDgwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMTAwLAotCTB4MDQwMDAwMGUsIDB4NTgwODAwMGMsIDB4ODEzMDA1ODAsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0OTc4MTAwYywgMHgwNDAxZjAwMywgMHg4YzBjMWQyMCwKLQkweDA0MDIwN2RjLCAweDAyMDFmODAwLCAweDAwMTA2NjE5LCAweDA0MDAwN2Q5LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDZiZTIsCi0JMHgwNDAwMDdmOSwgMHg1OTMwMDIwMywgMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwKLQkweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDBjMDFmN2JkLCAweDQ5MzNjODU3LAotCTB4NGM1MDAwMDAsIDB4NGM1NDAwMDAsIDB4NGM1ODAwMDAsIDB4NTkyYzBjMDcsCi0JMHg0ODA2NTgwYSwgMHg1OWNjMDgwOSwgMHg0ODA2NTgwNywgMHg1OWNjMGEwOCwKLQkweDQ4MDY1ODBiLCAweDU5YTgwODZlLCAweDgyMDQwNTAwLCAweDAwMDAwM2ZmLAotCTB4ODAwMDEwYzQsIDB4OGMwNDBkMTQsIDB4MDQwMDAwMDUsIDB4NTljYzAwMDIsCi0JMHg4MjAwMDUwMCwgMHgwMDAwMDAwMywgMHg4MDA4MTQ4MCwgMHg4MjA4MDQ4MCwKLQkweDAwMDAwMGYxLCAweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDQ4MGE2MjFhLAotCTB4NDEyYzA4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4MTksIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0OTJjMDgwOSwgMHg1ODA0MDQwOCwgMHg4NDAwMDU1MiwKLQkweDg0MDAwNTQwLCAweDQ4MDAwYzA4LCAweDgyMDgxNDAwLCAweDAwMDAwMDAzLAotCTB4ODAwODExMDQsIDB4ODNjY2E0MDAsIDB4MDAwMDAwMDYsIDB4ODMyY2FjMDAsCi0JMHgwMDAwMDAwNCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAxMCwgMHg4MjA4MDQ4MCwKLQkweDAwMDAwMDEwLCAweDA0MDIxMDAzLCAweDQwMDgwODAwLCAweDgwMDAwNTgwLAotCTB4NDAwNGIwMDAsIDB4NGMwMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMGE5NGYsCi0JMHg1YzAwMDAwMCwgMHg4MDAwMDFjMCwgMHgwNDAwMDAwZCwgMHg0MTJjMTAwMCwKLQkweDRjMDAwMDAwLCAweDAyMDFmODAwLCAweDAwMTAwODE5LCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NDkyYzEwMDEsIDB4ODMyY2FjMDAsIDB4MDAwMDAwMDQsCi0JMHg1YzAwMDAwMCwgMHg0MDAwMTAwMCwgMHgwNDAxZjdlOSwgMHg1YzAwYjAwMCwKLQkweDVjMDBhODAwLCAweDVjMDBhMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NGQyYzAwMDAsIDB4NGMzODAwMDAsIDB4NTkzMjU4MDgsIDB4NTkzMDAyMWEsCi0JMHg0ODAyNWEwOCwgMHg1OTMwMTAxMSwgMHg4MDA4MTFjMCwgMHgwNDAyMDAwOCwKLQkweDRhMDI1YTA2LCAweDAwMDAwMDAwLCAweDU5MmMwMDBiLCAweDgyMDAwNTAwLAotCTB4MDAwMDBjMDAsIDB4MDQwMDAwMGIsIDB4MDQwMWYwMGIsIDB4OGMwODE1M2UsCi0JMHgwNDAwMDAwNiwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwNywgMHg4MDA4MTA4MCwKLQkweDgwMDgxMDAwLCAweDA0MDFmMDAzLCAweDRhMDI1YTA2LCAweDAwMDAwMDE1LAotCTB4NDgwYTU4MDcsIDB4NDIwMDAwMDAsIDB4MDAxMGJjZDgsIDB4NTAwMDcwMDAsCi0JMHg1ODM4MDAwYiwgMHg4MDAwMDU0MCwgMHgwNDAyMDAwOCwgMHg0OTMwNzAwYywKLQkweDQ5MzA3MDBiLCAweDU4MzgwMDAyLCAweDgyMDAwNTgwLCAweDAwMDAwMDAwLAotCTB4MDQwMjA4MDksIDB4MDQwMWYwMDUsIDB4ODIwMDE0MDAsIDB4MDAwMDAwMDAsCi0JMHg0NTMwMTAwMCwgMHg0OTMwNzAwYiwgMHg1YzAwNzAwMCwgMHg1YzAyNTgwMCwKLQkweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDU5MmMwMDA5LCAweDQwMDAxMDAwLAotCTB4NDgwMDcwMGEsIDB4ODIwODA0MDAsIDB4MDAwMDAwMDQsIDB4NDgwMDcwMDMsCi0JMHg1OTJjMDAwZCwgMHg1OTJjMTAwZSwgMHg0ODAwNzAwNywgMHg0ODA4NzAwOCwKLQkweDU5MmMwMDBhLCAweDU5MmMxMjA4LCAweDgwMDgwYzgwLCAweDA0MDAxMDAyLAotCTB4NDAwMDEwMDAsIDB4ODIwODE0MDAsIDB4MDAwMDAwMDMsIDB4ODAwODExMDQsCi0JMHg4MjA4MDQ4MCwgMHgwMDAwMDAxMCwgMHgwNDAyMTAwMywgMHg4MDAwMDU4MCwKLQkweDA0MDFmMDAzLCAweDQyMDAxMDAwLCAweDAwMDAwMDEwLCAweDQ4MDA3MDBkLAotCTB4NDgwODcwMDQsIDB4ODAwODEwYzQsIDB4NDgwODcwMDUsIDB4NDAzODEwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDhhMSwgMHgxYzAxZjAwMCwgMHg0ZDJjMDAwMCwKLQkweDAyMDFmODAwLCAweDAwMTAwODE5LCAweDAyMDAwODAwLCAweDAwMTAwNjE1LAotCTB4NDIwMDA4MDAsIDB4MDAxMGJjZDgsIDB4NDUyYzA4MDAsIDB4NDk3YTU4MGIsCi0JMHg0OTdhNTgwYywgMHg0OTdhNTgwZCwgMHg0YTAyNTgwOSwgMHgwMDEwOTViNiwKLQkweDRhMDI1ODAyLCAweDAwMDAwMTAwLCAweDRhMDI1ODAxLCAweDAwMDAwMDAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4NDgzM2M4NTcsIDB4NGQzMDAwMDAsCi0JMHg0ZDJjMDAwMCwgMHg0YzVjMDAwMCwgMHg0MDMwYjgwMCwgMHg1ODVjMDAwYSwKLQkweDgwMDI1ZDQwLCAweDA0MDIwMDA0LCAweDU4NWMwMDBjLCAweDRjMDAwMDAwLAotCTB4MDQwMWYwNDQsIDB4NTg1YzAwMDIsIDB4ODIwMDA1ODAsIDB4MDAwMDAxMDAsCi0JMHgwNDAyMDAyMiwgMHg1OTJjMDgwMSwgMHg0YzA0MDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODNhLCAweDVjMDAwODAwLCAweDgwMDQwOWMwLCAweDA0MDAwMDFjLAotCTB4NDgwNGI4MGEsIDB4NTg1YzEwMGQsIDB4ODAwODExYzAsIDB4MDQwMjAwMDUsCi0JMHg0MDA2NTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHgwNDAxZjAxNCwKLQkweDgyMDgwNDgwLCAweDAwMDAwMDEwLCAweDA0MDIxMDAzLCAweDgwMDAwNTgwLAotCTB4MDQwMWYwMDMsIDB4NDIwMDEwMDAsIDB4MDAwMDAwMTAsIDB4NDgwMGI4MGQsCi0JMHg0ODA4YjgwNCwgMHg4MDA4MTBjNCwgMHg0ODA4YjgwNSwgMHg4MjA0MDQwMCwKLQkweDAwMDAwMDA0LCAweDQ4MDBiODAzLCAweDQwNWMxMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDA4YTEsIDB4MDQwMWYwMjUsIDB4MDQwMWY4MjgsIDB4NTg1YzAwMGMsCi0JMHg4MDAyNjU0MCwgMHg1OTMwMDAwMCwgMHg4MDAwMGQ0MCwgMHgwNDAyMDAwMiwKLQkweDQ4MDBiODBiLCAweDQ4MDBiODBjLCAweDQ5N2E2MDAwLCAweDRjMDAwMDAwLAotCTB4NDk3OGI4MGEsIDB4NTkzMjU4MDgsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsCi0JMHg1OTMwMDQwMiwgMHg0ODAyNWMwNiwgMHg1OTJjMTAwYiwgMHg0YzA4MDAwMCwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA4ZWU3LAotCTB4NWMwMDEwMDAsIDB4OGMwODE1MTgsIDB4MDQwMDAwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGY4OCwgMHgwNDAxZjAwMywgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDQwNWM3MDAwLCAweDVjMDAwMDAwLCAweDgwMDI2NTQwLCAweDA0MDAwMDAzLAotCTB4NTkzMjU4MDgsIDB4MDQwMWZmNzgsIDB4NWMwMGI4MDAsIDB4NWMwMjU4MDAsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0ODNiYzg1NywgMHg1ODM4MDAwYSwKLQkweDQwMDI1ODAwLCAweDAyMDFmODAwLCAweDAwMTAwODQzLCAweDU4MzgwMDBjLAotCTB4ODAwMjY1NDAsIDB4NTkzMDAwMDgsIDB4ODAwMjVkNDAsIDB4NGEwMjVhMDYsCi0JMHgwMDAwMDAwMiwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NywgMHg0ZDFjMDAwMCwKLQkweDQ5N2E2MDFjLCAweDQxMzIzODAwLCAweDQwMDI2MDAwLCAweDRkM2MwMDAwLAotCTB4NDIwMjc4MDAsIDB4MDAwMDAwMDUsIDB4MDQwMWY4NDAsIDB4NWMwMjc4MDAsCi0JMHg0MTFlNjAwMCwgMHg1OTMwMDQxNCwgMHg4NDAwMDUwMiwgMHg0ODAyNjQxNCwKLQkweDVjMDIzODAwLCAweDFjMDFmMDAwLCAweDQ4MWJjODU3LCAweDQ5MzNjODU3LAotCTB4NGM1YzAwMDAsIDB4NGM2MDAwMDAsIDB4NDAxMGI4MDAsIDB4NDAxNGMwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTc2NiwgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDA4LCAweDQwNjAyODAwLCAweDQwNWMzMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMGEyNTgsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDIsCi0JMHg4MDAwMDU4MCwgMHg1YzAwYzAwMCwgMHg1YzAwYjgwMCwgMHgxYzAxZjAwMCwKLQkweDQ4MDNjODU2LCAweDRkMzAwMDAwLCAweDQyMDI2MDAwLCAweDAwMTBjZmMwLAotCTB4NTlhODAwMGUsIDB4ODE2NDA1ODAsIDB4MDQwMDAwMWEsIDB4NTkzMDBjMDYsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwMSwgMHgwNDAwMDAwZCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDA0LCAweDA0MDAwMDA2LCAweDgyMDQwNTgwLCAweDAwMDAwMDEwLAotCTB4MDIwMDA4MDAsIDB4MDAxMDhhYWQsIDB4MDQwMWYwMDksIDB4NTkzMDAyMDMsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAwNywgMHgwNDAwMDAwNSwgMHg0ODA3Yzg1NywKLQkweDAyMDFmODAwLCAweDAwMTA5MDlkLCAweDA0MDIwODA4LCAweDgzMzI2NDAwLAotCTB4MDAwMDAwMjQsIDB4NDE1ODAwMDAsIDB4ODEzMDA0ODAsIDB4MDQwMDE3ZTUsCi0JMHg1YzAyNjAwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg1OTMwMDQwMywKLQkweDQ4MDNjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OThjLCAweDRkZjAwMDAwLAotCTB4NTkzMDA0MDYsIDB4NDgwM2M4NTcsIDB4ODIwMDBkODAsIDB4MDAwMDAwMDIsCi0JMHgwNDAwMDAxOCwgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMSwgMHgwNDAwMDAwOSwKLQkweDgyMDAwZDgwLCAweDAwMDAwMDA0LCAweDA0MDAwMDA2LCAweDQ5MzNjODU2LAotCTB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4MDQwMWYwM2MsCi0JMHg1OTMwMDIwMywgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMSwgMHgwNDAwMDAxOCwKLQkweDgyMDAwZDgwLCAweDAwMDAwMDAyLCAweDA0MDAwMDI2LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMDUsIDB4MDQwMDAwMjMsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg1OTMwMDIwMywgMHg4MjAwMGQ4MCwgMHgwMDAwMDAwOSwgMHgwNDAwMDAwYywKLQkweDgyMDAwZDgwLCAweDAwMDAwMDBiLCAweDA0MDAwMDA5LCAweDgyMDAwZDgwLAotCTB4MDAwMDAwMGEsIDB4MDQwMDAwMTcsIDB4ODIwMDBkODAsIDB4MDAwMDAwMGMsCi0JMHgwNDAwMDAxNCwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OThjMDAwZCwKLQkweDgxMzAwNTgwLCAweDA0MDIwMDA0LCAweDAyMDFmODAwLCAweDAwMTA2YmUyLAotCTB4MDQwMjAwMGMsIDB4NTkzMDAwMDQsIDB4NDgwM2M4NTcsIDB4OGMwMDA1MjAsCi0JMHgwNDAwMDAwNCwgMHg4NDAwMDUyMCwgMHg0ODAyNjAwNCwgMHgwNDAxZjAwNSwKLQkweDAyMDFmODAwLCAweDAwMTA2NjE5LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsIDB4NTkzMDA0MDYsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0YTgzLCAweDAyMDFmODAwLCAweDAwMTA4ZjA1LCAweDAyMDAwODAwLAotCTB4MDAxMDdkYTYsIDB4OGQzZTdkMDAsIDB4MDQwMDAwMDMsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNzY5OCwgMHg0YTAyNjIxZCwgMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywKLQkweDAwMDAwMDg1LCAweDRhMDI2MjAzLCAweDAwMDAwMDA5LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDIsIDB4NDIwMDA4MDAsIDB4ODAwMDAwNGIsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDg1NSwgMHg0OTMzYzg1NywgMHg1OTM2OGMwMywgMHg0YzE4MDAwMCwKLQkweDU5MzAwMjAzLCAweDgyMDAzNDgwLCAweDAwMDAwMDBlLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4MGMwMWY4MDMsIDB4NWMwMDMwMDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwOTZkYSwgMHgwMDEwOWJiOSwgMHgwMDEwOWNiZCwgMHgwMDEwOTZkYSwKLQkweDAwMTA5NmRhLCAweDAwMTA5NmRhLCAweDAwMTA5NmRhLCAweDAwMTA5NmRhLAotCTB4MDAxMDk2ZmQsIDB4MDAxMDk2ZGEsIDB4MDAxMDk2ZGEsIDB4MDAxMDk2ZGEsCi0JMHgwMDEwOTZkYSwgMHgwMDEwOTZkYSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwKLQkweDQ5MzNjODU3LCAweDQyMDI4ODAwLCAweDAwMDBmZmZmLCAweDgxMzY2OWMwLAotCTB4MDQwMDAwMDIsIDB4NTkzNjhjMDMsIDB4NGMxODAwMDAsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMzQ4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmODAzLCAweDVjMDAzMDAwLCAweDFjMDFmMDAwLCAweDAwMTA5NmY5LAotCTB4MDAxMDlmNzAsIDB4MDAxMDk2ZjksIDB4MDAxMDk2ZjksIDB4MDAxMDk2ZjksCi0JMHgwMDEwOTZmOSwgMHgwMDEwOTZmOSwgMHgwMDEwYTc3OSwgMHgwMDEwOWVkZCwKLQkweDAwMTBhMzRhLCAweDAwMTBhMzgwLCAweDAwMTBhMzRhLCAweDAwMTBhMzgwLAotCTB4MDAxMDk2ZjksIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg4MzM4MzQ4MCwgMHgwMDAwMDA1MSwgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDQxMzgwMDAwLCAweDQ5M2JjODU3LCAweDRkMWMwMDAwLAotCTB4NGQ0MDAwMDAsIDB4MGMwMWY4MDQsIDB4NWMwMjgwMDAsIDB4NWMwMjM4MDAsCi0JMHgxYzAxZjAwMCwgMHgwMDEwOTc1YSwgMHgwMDEwOTkzZCwgMHgwMDEwOTc1YSwKLQkweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5OTQ4LCAweDAwMTA5NzVhLAotCTB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsCi0JMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwKLQkweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5NzVhLAotCTB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsCi0JMHgwMDEwOTc3YywgMHgwMDEwOTdiYSwgMHgwMDEwOTdkMSwgMHgwMDEwOTgyZCwKLQkweDAwMTA5ODk0LCAweDAwMTA5OGQyLCAweDAwMTA5OTAyLCAweDAwMTA5NzVhLAotCTB4MDAxMDk3NWEsIDB4MDAxMDk5NTAsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsCi0JMHgwMDEwOTk1ZSwgMHgwMDEwOTk2NywgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwKLQkweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5OWU5LAotCTB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk4NjgsIDB4MDAxMDk3NWEsCi0JMHgwMDEwOTc1YSwgMHgwMDEwOTljMCwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwKLQkweDAwMTA5NzVhLCAweDAwMTA5OWY3LCAweDAwMTA5NzVhLCAweDAwMTA5NzVhLAotCTB4MDAxMDk3NWEsIDB4MDAxMDlhNDAsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsCi0JMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwKLQkweDAwMTA5YThkLCAweDAwMTA5NzVhLCAweDAwMTA5YWI5LCAweDAwMTA5YWM0LAotCTB4MDAxMDk3NWEsIDB4MDAxMDk3NWEsIDB4MDAxMDk3NWMsIDB4MDAxMDlhY2YsCi0JMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc1YSwgMHgwMDEwOTc2YiwKLQkweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5NzVhLCAweDAwMTA5YWQ2LAotCTB4MDAxMDlhZGUsIDB4MDAxMDlhZmMsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwYTNiMCwgMHgwNDAyMDNhOCwKLQkweDAyMDFmODAwLCAweDAwMTAxZWIwLCAweDA0MDIwM2E1LCAweDU5Y2MwNDA3LAotCTB4NDgwMjYwMWMsIDB4NGEwMjY0MDMsIDB4MDAwMDAwNDUsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHg0OTMzYzg1NywKLQkweDAyMDFmODAwLCAweDAwMTBhM2IwLCAweDA0MDIwMzk5LCAweDAyMDFmODAwLAotCTB4MDAxMDFlYjAsIDB4MDQwMjAzOTYsIDB4MDQwMWZiZDYsIDB4MDQwMjAxOWUsCi0JMHg1OWNjMDAwNywgMHg0ODAyNjAxYywgMHg0YTAyNjQwMywgMHgwMDAwMDA0YSwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLAotCTB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwgMHgwNDAyMDAwNiwgMHg4MjAwMDUwMCwKLQkweDAwMDAwMDA5LCAweDgyMDAwNTgwLCAweDAwMDAwMDA4LCAweDA0MDIwMDA4LAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMDksIDB4NGEwMjY0MWEsIDB4MDAwMDAwMDksCi0JMHg0YTAyNjIxYSwgMHgwMDAwMDAwMCwgMHgwNDAxZjFiNiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0ODU4LCAweDA0MDAwMDE4LCAweDAyMDFmODAwLCAweDAwMTBhMDQxLAotCTB4MDQwMjAwMWYsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMjksIDB4NGQzYzAwMDAsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWRlMiwgMHg1YzAyNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0NDgwLCAweDRhMDI2NDAzLCAweDAwMDAwMDA4LAotCTB4NDIwMDMwMDAsIDB4MDAwMDAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDM5M2UsCi0JMHgwNDAwMDFhMCwgMHg0YTAyNjIwMywgMHgwMDAwMDAwNywgMHg0MTc4MjgwMCwKLQkweDA0MDFmMThiLCAweDAyMDFmODAwLCAweDAwMTBhMWVjLCAweDA0MDIwN2U3LAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMDksIDB4NGEwMjY0MWEsIDB4MDAwMDAwMGUsCi0JMHg0YTAyNjIxYSwgMHgwMDAwMTkwMCwgMHgwNDAxZjE5MiwgMHg0YTAyNjQwMywKLQkweDAwMDAwMDA5LCAweDRhMDI2NDFhLCAweDAwMDAwMDAzLCAweDRhMDI2MjFhLAotCTB4MDAwMDBmMDAsIDB4MDQwMWYxOGIsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWViMCwgMHgwNDAyMDM0YSwgMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwKLQkweDA0MDIwMzQ3LCAweDQ5M2E2NDAzLCAweDAyMDFmODAwLCAweDAwMTBhMDFjLAotCTB4MDQwMjAwMDYsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDUsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwNiwgMHgwNDAxZjdkOSwgMHg0YTAyNjQwMywgMHgwMDAwMDAwNywKLQkweDRhMDI2NDFhLCAweDAwMDAwMDA5LCAweDRhMDI2MjFhLCAweDAwMDAwMDAwLAotCTB4MDQwMWYxNzQsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDQ3M2IsCi0JMHgwNDAyMDMzMywgMHgwMjAxZjgwMCwgMHgwMDEwYTNiMCwgMHgwMjAwMDgwMCwKLQkweDAwMTAxZWIwLCAweDA0MDIwMzJlLCAweDAyMDFmODAwLCAweDAwMTA0ODU4LAotCTB4MDQwMjAwMDUsIDB4NDIwMjc4MDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNiZCwgMHgwMjAxZjgwMCwgMHgwMDEwNDg0YiwgMHgwNDAyMDAzMSwKLQkweDU5Y2MwMjA2LCAweDgyMDAzNTAwLCAweDAwMDAwMDAzLCAweDA0MDIwMDM0LAotCTB4ODIwMDM0ODAsIDB4MDAwMDAwMTQsIDB4MDQwMDEwMzEsIDB4NTkzNDMwMGEsCi0JMHg4NDE4MzUxNiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxNCwgMHgwNDAyMDAwMiwKLQkweDg0MTgzNTU2LCAweDQ4MWE2ODBhLCAweDU5Y2MwNDA2LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMDMsIDB4MDQwMjAwMjYsIDB4MDIwMWY4MDAsIDB4MDAxMGEwOGUsCi0JMHgwNDAyMDAyZSwgMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDAwNywKLQkweDRjNjAwMDAwLCAweDQxNzhjMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMDFlNDgsIDB4NWMwMGMwMDAsIDB4ODM2YzA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAyMDAwOSwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwNiwgMHgwMjAxZjgwMCwKLQkweDAwMTBhNzVlLCAweDQyMDAwMDAwLCAweDAwMTBiNjY0LCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4MDIwMWY4MDAsIDB4MDAxMDQ0ZTEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwYSwgMHg0MjAwMzAwMCwgMHgwMDAwMDAyMCwgMHgwNDAxZjc4ZiwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDBiLCAweDRhMDI2NDFhLCAweDAwMDAwMDA5LAotCTB4NGEwMjYyMWEsIDB4MDAwMDFlMDAsIDB4MDQwMWYxMmEsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY1ZiwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg0YTAyNjQwMywKLQkweDAwMDAwMDBiLCAweDRhMDI2NDFhLCAweDAwMDAwMDA3LCAweDRhMDI2MjFhLAotCTB4MDAwMDAwMDAsIDB4MDQwMWYxMWYsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMGIsCi0JMHg0YTAyNjQxYSwgMHgwMDAwMDAwMywgMHg0YTAyNjIxYSwgMHgwMDAwMDAwMCwKLQkweDA0MDFmMTE4LCAweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA0NzNiLAotCTB4MDQwMjAyZDcsIDB4MDIwMWY4MDAsIDB4MDAxMGEzYjAsIDB4MDQwMjAyZDQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMWViMCwgMHgwNDAyMDJkMSwgMHg1OWNjMDIwNiwKLQkweDgyMDAzNTAwLCAweDAwMDAwMDAzLCAweDA0MDIwMDIwLCAweDgyMDAzNDgwLAotCTB4MDAwMDAwMTQsIDB4MDQwMDEwMWQsIDB4NTljYzA0MDYsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwMywgMHgwNDAyMDAxOSwgMHg1OTM0MDQwMCwgMHg4MjAwMDU4MCwKLQkweDAwMDAwNzA3LCAweDA0MDAwMDFjLCAweDQxN2E3ODAwLCAweDRjNjAwMDAwLAotCTB4NDE3OGMwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFlNDgsIDB4NWMwMGMwMDAsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAwYSwgMHgwMjAxZjgwMCwgMHgwMDEwYTc1ZSwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjYxLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMGMsIDB4NDE3ODI4MDAsIDB4NDIwMDMwMDAsCi0JMHgwMDAwMDAyMSwgMHgwNDAxZjc0OSwgMHg0YTAyNjQwMywgMHgwMDAwMDAwZCwKLQkweDRhMDI2NDFhLCAweDAwMDAwMDA3LCAweDRhMDI2MjFhLCAweDAwMDAwMDAwLAotCTB4MDQwMWYwZTQsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMGQsIDB4NGEwMjY0MWEsCi0JMHgwMDAwMDAwOSwgMHg0YTAyNjIxYSwgMHgwMDAwMWUwMCwgMHgwNDAxZjBkZCwKLQkweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA0NzNiLCAweDA0MDIwMjljLAotCTB4MDIwMWY4MDAsIDB4MDAxMGEzYjAsIDB4MDQwMjAyOTksIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWViMCwgMHgwNDAyMDI5NiwgMHgwNDAxZmFkNiwgMHgwNDAyMDAxYSwKLQkweDQ5M2E2NDAzLCAweDRjNWMwMDAwLCAweDA0MDFmYWRjLCAweDA0MDIwMDBlLAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMmUsIDB4NDAxNGI4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMzkzZSwgMHgwNDAwMDAwZSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwNywKLQkweDQwNWMyODAwLCAweDQyMDAzMDAwLCAweDAwMDAwMDI0LCAweDVjMDBiODAwLAotCTB4MDQwMWYwYWYsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMGQsIDB4NGEwMjY0MWEsCi0JMHgwMDAwMDAwNywgMHg0YTAyNjIxYSwgMHgwMDAwMDAwMCwgMHg1YzAwYjgwMCwKLQkweDA0MDFmMGI4LCAweDRhMDI2NDAzLCAweDAwMDAwMDBkLCAweDRhMDI2NDFhLAotCTB4MDAwMDAwMDksIDB4NGEwMjYyMWEsIDB4MDAwMDFlMDAsIDB4MDQwMWYwYjEsCi0JMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwgMHgwNDAyMDZmMSwKLQkweDU5YTgwMDI2LCAweDgyMDAwNTAwLCAweDAwMDAwMDA5LCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDgsIDB4MDQwMDA2ZWIsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4NGIsCi0JMHgwNDAyMDAyZCwgMHgwMjAxZjgwMCwgMHgwMDEwYTA5NiwgMHgwNDAyMDAwNywKLQkweDRhMDI2NDAzLCAweDAwMDAwMDBlLCAweDQxNzgyODAwLCAweDQyMDAzMDAwLAotCTB4MDAwMDAwNTIsIDB4MDQwMWY2ZjksIDB4NDkzM2M4NTcsIDB4NDIwMDMwMDAsCi0JMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwgMHgwMDEwYTc2NiwgMHg0ZDNjMDAwMCwKLQkweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDVjMDI3ODAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NjMsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg1OTM0MDIwMCwgMHg4NDAwMDU1OCwgMHg0ODAyNmEwMCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDBiLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDAyMDFmODAwLAotCTB4MDAxMDM5M2UsIDB4MDQwMDAwN2MsIDB4NDIwMDMwMDAsIDB4MDAwMDAwMDcsCi0JMHgwNDAxZjA2MSwgMHg0OTMzYzg1NywgMHg0YTAyNjQwMywgMHgwMDAwMDAwZiwKLQkweDRhMDI2NDFhLCAweDAwMDAwMDAzLCAweDRhMDI2MjFhLCAweDAwMDAxZTAwLAotCTB4MDQwMWYwNzgsIDB4NTkzNDA0MDAsIDB4ODIwMDA1ODAsIDB4MDAwMDA3MDMsCi0JMHgwNDAwMDdmNSwgMHgwNDAxZjA0MCwgMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwKLQkweDAwMTA0NzNiLCAweDA0MDIwMjMyLCAweDU5YTgwMDI2LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMDksIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDgsIDB4MDQwMDAyMmMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDg0MiwgMHgwNDAyMDAyZiwgMHgwMjAxZjgwMCwKLQkweDAwMTBhMGIxLCAweDAyMDAwODAwLCAweDAwMTBhMDQxLCAweDA0MDIwMDA3LAotCTB4NGEwMjY0MDMsIDB4MDAwMDAwMTAsIDB4NDE3ODI4MDAsIDB4NDIwMDMwMDAsCi0JMHgwMDAwMDA1MCwgMHgwNDAxZjZiOSwgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTAxZGUyLCAweDVjMDI3ODAwLCAweDQyMDAzMDAwLAotCTB4MDAwMDAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMGE3NjYsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjY2MywgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1OTM0MDIwMCwKLQkweDg0MDAwNTU4LCAweDQ4MDI2YTAwLCAweDA0MDFmN2M1LCAweDRhMDI2NDAzLAotCTB4MDAwMDAwMTEsIDB4NGEwMjY0MWEsIDB4MDAwMDAwMDMsIDB4NGEwMjYyMWEsCi0JMHgwMDAwMWUwMCwgMHgwNDAxZjA0MywgMHg0OTMzYzg1NywgMHgwMjAxZjgwMCwKLQkweDAwMTAxZWIwLCAweDAyMDAwODAwLCAweDAwMTBhM2IwLCAweDA0MDIwMjAwLAotCTB4MDQwMWZhNDAsIDB4MDQwMjAwMDgsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMTIsCi0JMHgwNDAxZjAzOCwgMHg1OTM0MDQwMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDcwMywKLQkweDA0MDAwN2ViLCAweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDQyMDI4MDAwLAotCTB4MDAwMDAwMjksIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NWMwMjc4MDAsCi0JMHg0MjAwMzAwMCwgMHgwMDAwMDAxNywgMHgwMjAxZjgwMCwgMHgwMDEwYTc2NiwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjYzLCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4MDIwMWY4MDAsIDB4MDAxMDM5M2UsIDB4MDQwMDAwMWIsIDB4NDIwMDMwMDAsCi0JMHgwMDAwMDAwNiwgMHg0MjAyODAwMCwgMHgwMDAwMDAyOSwgMHg0OTMzYzg1NywKLQkweDRhMDI2NDAzLCAweDAwMDAwMDAxLCAweDRhMDI2MjAzLCAweDAwMDAwMDA3LAotCTB4NGMxODAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMGE3OWIsIDB4NWMwMDMwMDAsCi0JMHg0MTc4MjgwMCwgMHgwMjAxZjAwMCwgMHgwMDEwYTI1MCwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDQ2LCAweDRjMTQwMDAwLCAweDRjMTgwMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMGE3OWIsIDB4NWMwMDMwMDAsIDB4NWMwMDI4MDAsIDB4MDIwMWYwMDAsCi0JMHgwMDEwYTI1MCwgMHg0OTMzYzg1NywgMHg0YTAyNjQwMywgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDBiLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsCi0JMHg0OTMzYzg1NywgMHg0MjAwMDgwMCwgMHgwMDAwMDAwOSwgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDRhMDI2NDAzLCAweDAwMDAwMDA1LCAweDA0MDFmN2Y1LAotCTB4MDIwMWY4MDAsIDB4MDAxMGEzYjAsIDB4MDQwMjAxYjUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWViMCwgMHgwNDAyMDFiMiwgMHgwNDAxZjlmMiwgMHgwNDAyMDdiYSwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDIwLCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsCi0JMHgwNDAyMDFhNywgMHg0YTAyNjQwMywgMHgwMDAwMDAyMywgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLCAweDAyMDFmODAwLAotCTB4MDAxMGEzYjAsIDB4MDIwMDA4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAxOWMsCi0JMHgwNDAxZjlkYywgMHgwNDAyMDdhNCwgMHg0MDMwMDgwMCwgMHg1OWE4MTAxMCwKLQkweDU5Y2MwMDA3LCAweDgyMDAwNTAwLCAweDAwZmZmZmZmLCAweDgwMDgwNTgwLAotCTB4MDQwMDAwMTksIDB4NTljYzE0MDgsIDB4MDIwMWY4MDAsIDB4MDAxMDhkZTksCi0JMHgwNDAwMDAyZCwgMHg1OWNjMGMwOCwgMHg0ZDMwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA1YjBmLCAweDQxMzIzODAwLCAweDVjMDI2MDAwLCAweDA0MDAwMDI2LAotCTB4NTkxYzAyMDIsIDB4ODIwMDA1ODAsIDB4MDAwMGZmZmYsIDB4MDQwMDAwMDUsCi0JMHg1OWNjMTIwOCwgMHg1OTFjMDIwMiwgMHg4MDA4MDU4MCwgMHgwNDAyMDAxZSwKLQkweDU5MWMwNDA2LCAweDgyMDAwNTgwLCAweDAwMDAwMDA3LCAweDA0MDIwMDFhLAotCTB4MDQwMWYwMmMsIDB4NTljYzEyMDgsIDB4ODIwODA1ODAsIDB4MDAwMGZmZmYsCi0JMHgwNDAwMDAwYywgMHgwMjAxZjgwMCwgMHgwMDEwOTFkOSwgMHgwNDAwMDAxMiwKLQkweDU5Y2MxNDA4LCAweDU5MWMwMjAyLCAweDgwMDgwNTgwLCAweDA0MDIwMDBlLAotCTB4NTkxYzAwMDksIDB4ODEzNDA1ODAsIDB4MDQwMDAwMTYsIDB4MDQwMWYwMGEsCi0JMHg1OWNjMTQwOCwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwYTIxNywKLQkweDA0MDIwMDEwLCAweDU5Y2MxMjA4LCAweDgyMDgwNTgwLCAweDAwMDBmZmZmLAotCTB4MDQwMDAwMTksIDB4NGEwMjY0MDMsIDB4MDAwMDAwMjYsIDB4NGEwMjYyMWEsCi0JMHgwMDAwMTcwMCwgMHg1OWNjMTIwNCwgMHg4MjA4MTU4MCwgMHgwMDAwZmZmZiwKLQkweDA0MDIwNzk4LCAweDRhMDI2NDAzLCAweDAwMDAwMDI1LCAweDA0MDFmNzk1LAotCTB4NTkxYzA0MDYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDcsIDB4MDQwMjA3ZjIsCi0JMHg1OTFjMDQwMywgMHg4MjAwMDU4MCwgMHgwMDAwMDAyNCwgMHgwNDAyMDAwNiwKLQkweDRkMzAwMDAwLCAweDQxMWU2MDAwLCAweDAyMDFmODAwLCAweDAwMDIwOGI0LAotCTB4NWMwMjYwMDAsIDB4NGEwMjY0MDMsIDB4MDAwMDAwMjUsIDB4MDQwMWY3ODUsCi0JMHg0OTMzYzg1NywgMHg0ZDNjMDAwMCwgMHg0MjAyNzgwMCwgMHgwMDAwMDAwMSwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDVjMDI3ODAwLCAweDRjNTgwMDAwLAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsIDB4ODNhODFjMDAsIDB4MDAwMDAwMDIsCi0JMHg4M2NjMTQwMCwgMHgwMDAwMDAwYiwgMHgwMjAxZjgwMCwgMHgwMDEwODJmZiwKLQkweDVjMDBiMDAwLCAweDA0MDAwMDA0LCAweDRhMDI2NDAzLCAweDAwMDAwMDMxLAotCTB4MDQwMWY3NzAsIDB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNGUwZCwgMHgwNDAyMDAwZiwgMHgwMjAxZjgwMCwgMHgwMDEwNGUxYiwKLQkweDA0MDIwMDA4LCAweDRhMDM1MDMzLCAweDAwMDAwMDAxLCAweDQyMDJkODAwLAotCTB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDRkNzYsIDB4MDQwMWYwMDUsCi0JMHg0MjAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNGRlNSwKLQkweDFjMDFmMDAwLCAweDAyMDFmODAwLCAweDAwMTAxZWIwLCAweDA0MDIwMTFjLAotCTB4MDQwMWY5NWMsIDB4MDQwMjA3MjQsIDB4NDkzYTY0MDMsIDB4MDQwMWY5YWMsCi0JMHgwNDAyMDAwNCwgMHg0YTAyNjQwMywgMHgwMDAwMDAyYiwgMHgwNDAxZjc1MSwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDJjLCAweDA0MDFmNzRlLCAweDQ5MzNjODU3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAxMGQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDgzNiwgMHgwNDAyMDc0MCwgMHgwMjAxZjgwMCwgMHgwMDEwNDcyOCwKLQkweDA0MDAwMDNjLCAweDU5Y2MwNDA4LCAweDQ4MDI2NDE5LCAweDU5Y2MwMjA4LAotCTB4NDgwMjYyMTksIDB4NTljYzA4MDcsIDB4NTkzNDAwMDIsIDB4ODIwMDA1MDAsCi0JMHgwMGZmZmZmZiwgMHg4MDA0MDU4MCwgMHgwNDAwMDAxMiwgMHg1OWE4MDAxMCwKLQkweDgwMDQwNTgwLCAweDA0MDIwMDIxLCAweDU5Y2MxNDA4LCAweDAyMDFmODAwLAotCTB4MDAxMDkxZDksIDB4MDQwMDAwMjMsIDB4MDIwMWY4MDAsIDB4MDAxMGEyZTgsCi0JMHgwNDAwMDAyMCwgMHgwMjAxZjgwMCwgMHgwMDEwYTc0NSwgMHgwNDAwMDAxZCwKLQkweDQ5MWU2MDFlLCAweDRhMDI2NDAzLCAweDAwMDAwMDM2LCAweDA0MDFmMGU2LAotCTB4NTljYzEyMDgsIDB4ODIwODA1ODAsIDB4MDAwMGZmZmYsIDB4MDQwMDAwMDksCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTFkOSwgMHgwNDAwMDAxMiwgMHg1OTFjMDIwMiwKLQkweDU5Y2MwYzA4LCAweDgwMDQwNTgwLCAweDA0MDIwMDBlLCAweDA0MDFmN2ViLAotCTB4NTljYzE0MDgsIDB4NDEzMjc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMGEyMTcsCi0JMHgwNDAwMDAwOCwgMHgwNDAxZjdlNSwgMHg0ODAzYzg1NiwgMHg0YTAyNjQxYSwKLQkweDAwMDAwMDA5LCAweDRhMDI2MjFhLCAweDAwMDAxNTAwLCAweDA0MDFmMDA2LAotCTB4NDgwM2M4NTYsIDB4NGEwMjY0MWEsIDB4MDAwMDAwMDMsIDB4NGEwMjYyMWEsCi0JMHgwMDAwMTcwMCwgMHg0YTAyNjQwMywgMHgwMDAwMDAzNywgMHgwNDAxZjBjNiwKLQkweDQ4MDNjODU2LCAweDRhMDI2NDAzLCAweDAwMDAwMDEyLCAweDA0MDFmMGMyLAotCTB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAwYzQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDgzNiwgMHgwNDAyMDZmNywgMHgwMjAxZjgwMCwKLQkweDAwMTA0NzI4LCAweDA0MDAwMDNlLCAweDU5Y2MwNDA3LCAweDQ4MDI2NDE5LAotCTB4NTljYzEyMDcsIDB4NDgwYTYyMTksIDB4ODIwODA1ODAsIDB4MDAwMGZmZmYsCi0JMHgwNDAwMDAwNSwgMHgwMjAxZjgwMCwgMHgwMDEwOTFkOSwgMHgwNDAwMDAyYywKLQkweDA0MDFmMDA2LCAweDU5Y2MxNDA3LCAweDQxMzI3ODAwLCAweDAyMDFmODAwLAotCTB4MDAxMGEyMTcsIDB4MDQwMDAwMjYsIDB4NTljYzBjMDcsIDB4NTkxYzAyMDIsCi0JMHg4MDA0MDU4MCwgMHgwNDAyMDAyMiwgMHg0ZDMwMDAwMCwgMHg0MTFlNjAwMCwKLQkweDAyMDFmODAwLCAweDAwMTA4OThiLCAweDVjMDI2MDAwLCAweDU5Y2MwYzA5LAotCTB4ODIwNDBkMDAsIDB4MDAwMGZmMDAsIDB4ODQwNDA5YzAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTc0NSwgMHgwNDAwMDAxNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMSwKLQkweDA0MDAwMDBhLCAweDgyMDQwNTgwLCAweDAwMDAwMDA1LCAweDA0MDAwMDA0LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDcsIDB4MDQwMjAwMDcsIDB4NTkxYzAwMDgsCi0JMHg4MDAwMDU0MCwgMHgwNDAwMDAwNCwgMHg1OWNjMjgwOCwgMHgwMjAxZjAwMCwKLQkweDAwMTBhMmZjLCAweDQ4MDNjODU2LCAweDRhMDI2NDFhLCAweDAwMDAwMDA5LAotCTB4NGEwMjYyMWEsIDB4MDAwMDJhMDAsIDB4MDQwMWYwMDYsIDB4NDgwM2M4NTYsCi0JMHg0YTAyNjQxYSwgMHgwMDAwMDAwMywgMHg0YTAyNjIxYSwgMHgwMDAwMDMwMCwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDNiLCAweDA0MDFmMDdiLCAweDQ4MDNjODU2LAotCTB4NGEwMjY0MWEsIDB4MDAwMDAwMGIsIDB4NGEwMjYyMWEsIDB4MDAwMDAwMDAsCi0JMHgwNDAxZjdmOCwgMHg0YzA4MDAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNDczYiwKLQkweDA0MDAwMDI2LCAweDAyMDFmODAwLCAweDAwMTA0NzExLCAweDAyMDFmODAwLAotCTB4MDAxMGE0MWMsIDB4MDQwMjAwMWUsIDB4NTlhODAwMjYsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMywgMHg0ODAzNTAyNiwgMHg1OWE4MDAxZCwgMHg4MDAwMDBkMCwKLQkweDU5YTgwODEwLCAweDgyMDQwZDAwLCAweDAwMDAwMGZmLCAweDgwMDQxNTQwLAotCTB4NDgwYjUwMTAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjlhZiwgMHg0OTdiNTAyOCwgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDAzLCAweDRhMDMyODA0LCAweDAwMDAwN2QwLCAweDhjMDAwNTBhLAotCTB4MDQwMjAwMGEsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMWJmMCwgMHg1YzAwMTAwMCwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhNDNlLCAweDA0MDFmN2ZjLCAweDVjMDAxMDAwLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAwNGMsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTQ0MywgMHg0YTAyNjQwMywgMHgwMDAwMDA0NywKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDFlYjAsIDB4MDQwMjAwNDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTQ0MywgMHg0YTAyNjQwMywgMHgwMDAwMDA0NywgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLCAweDAyMDFmODAwLAotCTB4MDAxMDFlYjAsIDB4MDQwMjAwMzYsIDB4MDIwMWY4MDAsIDB4MDAxMGE0NDMsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHgwNDAxZjgzNCwgMHgwNDAwMDAzMCwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDRlLCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4NGEwMjY0MDMsIDB4MDAwMDAwNGYsCi0JMHg0OTdhNjAxYywgMHg1OWNjMGEwNiwgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwKLQkweDgwMDQwOWMwLCAweDA0MDAwNjVmLCAweDgyMDQwNTgwLCAweDAwMDAwMDAxLAotCTB4MDQwMjAwMDUsIDB4NTljYzA4MDgsIDB4NTlhODAwMDUsIDB4ODAwNDA1ODAsCi0JMHgwNDAwMDY1OCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAyMDAwYSwKLQkweDgzY2MxNDAwLCAweDAwMDAwMDBiLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLAotCTB4ODMzNDFjMDAsIDB4MDAwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsCi0JMHgwNDAwMDY0YywgMHg0YTAyNjAxYywgMHgwMDAwMDAwMSwgMHgwNDAxZjY0OSwKLQkweDRhMDI2NDAzLCAweDAwMDAwMDUwLCAweDU5Y2MwMjA3LCAweDQ4MDI2MDFjLAotCTB4MDQwMWY2NDQsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NDIwMDA4MDAsCi0JMHg4MDAwMDA0MCwgMHgwMjAxZjAwMCwgMHgwMDAyMDg1NSwgMHg0ODAzYzg1NywKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDRkMmMwMDAwLCAweDRjNTAwMDAwLAotCTB4NGM1ODAwMDAsIDB4NGM1NDAwMDAsIDB4NTlhODAwMTYsIDB4ODIwMDBjODAsCi0JMHgwMDAwMDg0MSwgMHgwNDAyMTAyZCwgMHgwMjAxZjgwMCwgMHgwMDEwMDgxOSwKLQkweDA0MDAwMDJhLCAweDQ5MmU2MDA4LCAweDU5YTgwMDE2LCAweDQ4MDI1ODAyLAotCTB4ODIwMDA0MDAsIDB4MDAwMDAwMDMsIDB4ODAwMDAxMDQsIDB4ODNjY2E0MDAsCi0JMHgwMDAwMDAwNiwgMHg4MjAwMGM4MCwgMHgwMDAwMDAwYiwgMHgwNDAwMTAxNSwKLQkweDRhMDI1ODExLCAweDAwMDAwMDBiLCAweDQyMDBiMDAwLCAweDAwMDAwMDBiLAotCTB4ODMyYzA0MDAsIDB4MDAwMDAwMDUsIDB4NDAwMGE4MDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTkzZSwgMHg0MTJjNzAwMCwgMHg4MDA0MDljMCwgMHgwNDAyMDAwMywKLQkweDQ5Nzg3MDAxLCAweDA0MDFmMDBlLCAweDAyMDFmODAwLCAweDAwMTAwODE5LAotCTB4MDQwMDAwMGUsIDB4NDkyYzcwMDEsIDB4NDAwNDAwMDAsIDB4MDQwMWY3ZWEsCi0JMHg0ODAyNTgxMSwgMHg0MDAwYjAwMCwgMHg4MzJjMDQwMCwgMHgwMDAwMDAwNSwKLQkweDQwMDBhODAwLCAweDAyMDFmODAwLCAweDAwMTBhOTNlLCAweDgyMDAwNTQwLAotCTB4MDAwMDAwMDEsIDB4MDQwMWYwMDYsIDB4NDk3YjUwMTYsIDB4NTkzMjU4MDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywgMHg4MDAwMDU4MCwgMHg1YzAwYTgwMCwKLQkweDVjMDBiMDAwLCAweDVjMDBhMDAwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4NGQzNDAwMDAsIDB4NTkzMjY4MDksIDB4NTkzNDM0MDAsIDB4NDkzM2M4NTcsCi0JMHg0OTM3Yzg1NywgMHg0ODFiYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwNDg0MiwKLQkweDVjMDI2ODAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDRjNjAwMDAwLAotCTB4NGM1YzAwMDAsIDB4NGQzYzAwMDAsIDB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsCi0JMHgwNDAxZjg0ZiwgMHgwNDAyMDAzNywgMHg1OWNjMDIwNywgMHg4MjAwMGQwMCwKLQkweDAwMDBmZjAwLCAweDkwMDQxMWMwLCAweDU5Y2MwMDBhLCAweDgyMDAwNTAwLAotCTB4MDBmZmZmZmYsIDB4ODAwODE1NDAsIDB4NDgwYTYwMWMsIDB4OGMwNDBkMTgsCi0JMHgwNDAwMDAxMSwgMHg0MjAwMzAwMCwgMHgwMDAwMDAwOCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhNzU2LCAweDQyMDAwMDAwLCAweDAwMTBiNjYyLCAweDAyMDFmODAwLAotCTB4MDAxMGE4NmUsIDB4NDIwMGI4MDAsIDB4MDAwMDAwMDIsIDB4NDIwMGMwMDAsCi0JMHgwMDAwMDAwMSwgMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMWU0OCwKLQkweDA0MDFmMDFmLCAweDQxNzhiODAwLCAweDhjMDQwZDFhLCAweDA0MDAwMDE5LAotCTB4NTljYzAwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDU5YjksIDB4MDIwMDA4MDAsCi0JMHgwMDAyMDI2NywgMHgwNDAyMDAxMywgMHg1OTMwMDAwOSwgMHg0YzAwMDAwMCwKLQkweDQ5MzY2MDA5LCAweDQyMDAzMDAwLCAweDAwMDAwMDA5LCAweDAyMDFmODAwLAotCTB4MDAxMGE3NWUsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NjIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg0MTdhNzgwMCwgMHg0MTc4YzAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTAxZTQ4LCAweDVjMDAwMDAwLCAweDQ4MDI2MDA5LCAweDA0MDFmMDA0LAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDMsIDB4NDA1YzI4MDAsCi0JMHg4MDAwMDU4MCwgMHg1YzAyNjgwMCwgMHg1YzAyODgwMCwgMHg1YzAyNzgwMCwKLQkweDVjMDBiODAwLCAweDVjMDBjMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NTljYzAyMDYsIDB4ODIwMDA0ODAsIDB4MDAwMDAwMTAsIDB4MDQwMjEwMDYsCi0JMHg0YTAyNjIxYSwgMHgwMDAwMDAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmMDAyLCAweDgwMDAwNTgwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LAotCTB4NGEwMjYyMWEsIDB4MDAwMDAwMDAsIDB4NTljYzA0MDcsIDB4ODIwMDA1MDAsCi0JMHgwMDAwZmYwMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDgwMCwgMHgwNDAyMDAwOSwKLQkweDU5Y2MwMDA2LCAweDgyMDAwNTAwLCAweDAwZmYwMDAwLCAweDgyMDAwZDgwLAotCTB4MDAxNDAwMDAsIDB4MDQwMDAwMDMsIDB4ODIwMDBkODAsIDB4MDAxMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHg1OTMwMDQwMywgMHg4MjAwMzQ4MCwgMHgwMDAwMDA1MSwKLQkweDAyMDIxODAwLCAweDAwMTAwNjE1LCAweDgzMzgzNTgwLCAweDAwMDAwMDEzLAotCTB4MDQwMjAwMDMsIDB4NDgwM2M4NTcsIDB4MGMwMWYwMTYsIDB4NDkzM2M4NTcsCi0JMHg0OTNiYzg1NywgMHg4MzM4MzU4MCwgMHgwMDAwMDAyNywgMHgwNDAwMDAwNSwKLQkweDgzMzgzNTgwLCAweDAwMDAwMDE0LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LAotCTB4NDkzYmM4NTcsIDB4NDkzN2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDQ3MTEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNywgMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywKLQkweDAyMDFmODAwLCAweDAwMTA2OGY2LCAweDAyMDFmMDAwLCAweDAwMTA3Njk4LAotCTB4MDAxMDljMjksIDB4MDAxMDljMzIsIDB4MDAxMDljMjksIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMzMiwgMHgwMDEwOWMzZCwgMHgwMDEwOWNiMCwKLQkweDAwMTA5YzgyLCAweDAwMTA5Y2IwLCAweDAwMTA5YzlhLCAweDAwMTA5Y2IwLAotCTB4MDAxMDljYTEsIDB4MDAxMDljYjAsIDB4MDAxMDljYTksIDB4MDAxMDljYjAsCi0JMHgwMDEwOWNhOSwgMHgwMDEwOWNiMCwgMHgwMDEwOWNiMCwgMHgwMDEwOWMyOSwKLQkweDAwMTA5YzI5LCAweDAwMTA5YzI5LCAweDAwMTA5YzI5LCAweDAwMTA5YzI5LAotCTB4MDAxMDljMjksIDB4MDAxMDljMjksIDB4MDAxMDljMjksIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWMzMiwgMHgwMDEwOWMyOSwKLQkweDAwMTA5Y2IwLCAweDAwMTA5YzI5LCAweDAwMTA5YzI5LCAweDAwMTA5Y2IwLAotCTB4MDAxMDljMjksIDB4MDAxMDljYWQsIDB4MDAxMDljYjAsIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWNiMCwKLQkweDAwMTA5Y2IwLCAweDAwMTA5YzI5LCAweDAwMTA5Y2E2LCAweDAwMTA5Y2IwLAotCTB4MDAxMDljMjksIDB4MDAxMDljMzcsIDB4MDAxMDljMjksIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWNhYywgMHgwMDEwOWNiMCwKLQkweDAwMTA5YzI5LCAweDAwMTA5YzI5LCAweDAwMTA5Y2IwLCAweDAwMTA5Y2IwLAotCTB4MDAxMDljMjksIDB4MDAxMDljMjksIDB4MDAxMDljMjksIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwKLQkweDAwMTA5YzI5LCAweDAwMTA5YzJiLCAweDAwMTA5YzI5LCAweDAwMTA5YzJiLAotCTB4MDAxMDljMjksIDB4MDAxMDljMjksIDB4MDAxMDljMmIsIDB4MDAxMDljMjksCi0JMHgwMDEwOWMyOSwgMHgwMDEwOWMyOSwgMHgwMDEwOWMyYiwgMHgwMDEwOWMyYiwKLQkweDAwMTA5YzJiLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LCAweDRkMmMwMDAwLAotCTB4NTkzMjU4MDgsIDB4MDIwMWY4MDAsIDB4MDAxMDA4NDMsIDB4NWMwMjU4MDAsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDhiNCwgMHg1OWE4MDAzNywgMHg0ODAyNjIwNiwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAyLCAweDFjMDFmMDAwLCAweDRkM2MwMDAwLAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQzYmQsIDB4NWMwMjc4MDAsCi0JMHgwNDAxZjA3NCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNywgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDU5YTgwMDI2LCAweDhjMDAwNTA4LCAweDA0MDAwMDEyLAotCTB4NTkzMjY4MDksIDB4NGM1ODAwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsCi0JMHg4M2E4MWMwMCwgMHgwMDAwMDAwMiwgMHg4MzM0MTQwMCwgMHgwMDAwMDAwNiwKLQkweDAyMDFmODAwLCAweDAwMTA4MmZmLCAweDgwMDAwNTQwLCAweDVjMDBiMDAwLAotCTB4MDQwMjAwNjAsIDB4NTkzNDAyMDAsIDB4ODQwMDA1MWEsIDB4NDgwMjZhMDAsCi0JMHgwNDAxZjAxYiwgMHg1OTljMDAxNywgMHg4YzAwMDUwYSwgMHgwNDAyMDA1OSwKLQkweDRkM2MwMDAwLCAweDQxN2E3ODAwLCAweDAyMDFmODAwLCAweDAwMTA0M2JkLAotCTB4NWMwMjc4MDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDcsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNjNywgMHg1OTM0MDIxMiwgMHg4MjAwMDUwMCwgMHgwMDAwZmYwMCwKLQkweDA0MDAwMDRjLCAweDU5OWMwMDE5LCAweDhjMDAwNTBlLCAweDA0MDIwMDQ5LAotCTB4NDE2YzAwMDAsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDIsIDB4MDQwMjAwMDQsCi0JMHg1OWE4MDAxYiwgMHg4MDAwMDAwMCwgMHg0ODAzNTAxYiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDAzLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDRhMDI2NDA2LAotCTB4MDAwMDAwMDEsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMiwgMHgwMjAxZjgwMCwgMHgwMDEwNjQ3MCwgMHg0Y2U4MDAwMCwKLQkweDQyMDFkMDAwLCAweDAwMDAwMDAxLCAweDAyMDFmODAwLCAweDAwMTA1Y2U3LAotCTB4NWMwMWQwMDAsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4NDIsCi0JMHgwNDAwMDAyYywgMHgwMjAxZjgwMCwgMHgwMDEwNjE5NiwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDAyMDFmODAwLAotCTB4MDAxMGE3OTEsIDB4MDQwMjAwMjMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg0YTAyNjQwNiwgMHgwMDAwMDAwMSwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDRhMDI2NDAzLCAweDAwMDAwMDAzLAotCTB4MDIwMWYwMDAsIDB4MDAxMDY0NzAsIDB4MDIwMWY4MDAsIDB4MDAxMDQ4NGIsCi0JMHgwNDAyMDAxNCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwNiwgMHgwNDAxZjgxMywKLQkweDA0MDFmMDEwLCAweDQyMDAwODAwLCAweDAwMDAwMDA0LCAweDAyMDFmODAwLAotCTB4MDAxMDQzYzcsIDB4MDQwMWY3OWMsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsCi0JMHgwNDAxZjAwNiwgMHgwMjAxZjgwMCwgMHgwMDEwNDcxMSwgMHgwNDAxZjAwNSwKLQkweDA0MDFmMDA0LCAweDA0MDFmMDAzLCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsIDB4NDkzM2M4NTcsIDB4NDgwN2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDNjNywgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDVjMDI3ODAwLCAweDAyMDFmMDAwLAotCTB4MDAxMDQ3MTEsIDB4NTkzNDA0MDAsIDB4NDgwM2M4NTcsIDB4ODAwMDAxMTAsCi0JMHg4MjAwMzQ4MCwgMHgwMDAwMDAwYywgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDgzMzgzNTgwLCAweDAwMDAwMDE1LCAweDA0MDIwMDAyLCAweDBjMDFmMDA2LAotCTB4ODMzODM1ODAsIDB4MDAwMDAwMTYsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHgwYzAxZjAwZCwgMHgwMDEwN2U0MiwgMHgwMDEwN2U0MiwgMHgwMDEwN2U0MiwKLQkweDAwMTA3ZTQyLCAweDAwMTA3ZTQyLCAweDAwMTA3ZTQyLCAweDAwMTA5ZDExLAotCTB4MDAxMDljZTUsIDB4MDAxMDdlNDIsIDB4MDAxMDdlNDIsIDB4MDAxMDdlNDIsCi0JMHgwMDEwN2U0MiwgMHgwMDEwN2U0MiwgMHgwMDEwN2U0MiwgMHgwMDEwN2U0MiwKLQkweDAwMTA3ZTQyLCAweDAwMTA3ZTQyLCAweDAwMTA3ZTQyLCAweDAwMTA5ZDExLAotCTB4MDAxMDlkMTgsIDB4MDAxMDdlNDIsIDB4MDAxMDdlNDIsIDB4MDAxMDdlNDIsCi0JMHgwMDEwN2U0MiwgMHg0OTMzYzg1NywgMHg1OTljMDAxNywgMHg4YzAwMDUwYSwKLQkweDA0MDIwMDFiLCAweDgxMzY2OWMwLCAweDA0MDAwMDE5LCAweDU5MzQwMjEyLAotCTB4ODIwMDA1MDAsIDB4MDAwMGZmMDAsIDB4MDQwMDAwMTUsIDB4NTk5YzAwMTksCi0JMHg4YzAwMDUwZSwgMHgwNDAyMDAxMiwgMHg0ZDNjMDAwMCwgMHg0MTdhNzgwMCwKLQkweDAyMDFmODAwLCAweDAwMTA0M2JkLCAweDVjMDI3ODAwLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMDMsIDB4MDIwMWY4MDAsIDB4MDAxMDQzYzcsIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwMSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywKLQkweDAwMDAwMDAyLCAweDAyMDFmMDAwLCAweDAwMTA2NDcwLCAweDU5Y2MwMDAxLAotCTB4NTkzNDA4MDIsIDB4ODAwNDA1ODAsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsCi0JMHgwMjAyMDAwMCwgMHgwMDAyMDhiNCwgMHg1OTM0NTAwMiwgMHgwMjAxZjgwMCwKLQkweDAwMTA0MGU0LCAweDQ4MmE2ODAyLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NTkzMDM0MDMsIDB4ODIxODM1ODAsCi0JMHgwMDAwMDAxZSwgMHgwMjAwMDAwMCwgMHgwMDAyMDhiNCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDAyMDFmODAwLCAweDAwMTA4MTgwLCAweDAyMDIwMDAwLAotCTB4MDAwMjA4YjQsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ3MCwgMHg0OTNiYzg1NywKLQkweDgzMzgwNTgwLCAweDAwMDAwMDUxLCAweDA0MDIwMDBiLCAweDAyMDFmODAwLAotCTB4MDAxMDZjYjQsIDB4MDIwMjAwMDAsIDB4MDAxMDc2ZmIsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDA2ZSwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDgzMzgwNTgwLCAweDAwMDAwMDI3LCAweDA0MDAwMDE0LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwNDgsIDB4MDQwMDAwMDYsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAxNCwgMHgwNDAwMDAwZSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDAyMDFmODAwLCAweDAwMTA2Y2I0LCAweDAyMDIwMDAwLCAweDAwMTA3NmZiLAotCTB4NTkzMDAyMDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDIwMDAwMDAsCi0JMHgwMDAyMDlhNSwgMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0OTMzYzg1NywKLQkweDU5MzAwNDAzLCAweDgyMDAwYzgwLCAweDAwMDAwMDQ0LCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4ODIwMDA0ODAsIDB4MDAwMDAwNDAsIDB4MDIwMDE4MDAsCi0JMHgwMDEwMDYxNSwgMHg0MDAyNzAwMCwgMHg0ODAzYzg1NywgMHgwYzAxZjAwMSwKLQkweDAwMTA5ZDU4LCAweDAwMTA5ZDVhLCAweDAwMTA5ZDVhLCAweDAwMTA5ZDc1LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsCi0JMHg1OTMyNTgwOCwgMHg4MTJlNTljMCwgMHgwNDAwMDAxNiwgMHg4MzJjMDUwMCwKLQkweDAwZmYwMDAwLCAweDA0MDAwMDEzLCAweDRhMDI2MjAzLCAweDAwMDAwMDAyLAotCTB4NTkzMjY4MDksIDB4NTkzNDAyMDAsIDB4OGMwMDA1MGUsIDB4MDQwMjAwMGQsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwYTIwMSwKLQkweDQ5N2E2MDA4LCAweDU5MzAwMjA2LCAweDgwMDAwNTQwLCAweDA0MDIwMDAzLAotCTB4NTlhODAwMzgsIDB4NDgwMjYyMDYsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsCi0JMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjhmNiwgMHgwMjAxZjgwMCwKLQkweDAwMTA4ZGY0LCAweDAyMDAwMDAwLCAweDAwMTA3Njk4LCAweDU5MzI1ODA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4M2EsIDB4MDIwMWYwMDAsIDB4MDAxMDc2OTgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTMyNTgwOCwgMHg1OTJjMDQwYSwKLQkweDhjMDAwNTAyLCAweDA0MDAwMDA3LCAweDRhMDI2MjAzLCAweDAwMDAwMDA3LAotCTB4NDIwMjcwMDAsIDB4MDAwMDAwNDMsIDB4MDIwMWYwMDAsIDB4MDAwMjA4ZDgsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwNCwgMHgxYzAxZjAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTBhM2I2LCAweDAyMDAwMDAwLCAweDAwMDIwOWEzLCAweDFjMDFmMDAwLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDEsIDB4NGEwMjY0MDMsIDB4MDAwMDAwNDEsCi0JMHg0MjAyNzgwMCwgMHg4MDAwMjA0MiwgMHgwMjAxZjAwMCwgMHgwMDAyMDg1NSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDUxLCAweDA0MDAwMDA2LCAweDgzMzgwNTgwLAotCTB4MDAwMDAwNDEsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4MWMwMWYwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDgzMSwgMHgwMjAxZjgwMCwgMHgwMDEwYTNmYSwKLQkweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDgzMzgwNDgwLCAweDAwMDAwMDUyLAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4ODMzODA0ODAsIDB4MDAwMDAwNDksCi0JMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwOWRiZSwKLQkweDAwMTA5ZGRmLCAweDAwMTA5ZGJjLCAweDAwMTA5ZGJjLCAweDAwMTA5ZGJjLAotCTB4MDAxMDlkYmMsIDB4MDAxMDlkZGYsIDB4MDAxMDlkYmMsIDB4MDAxMDllMDEsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTMyNTgwOCwgMHg1OTJjMDQwYSwKLQkweDhjMDAwNTFlLCAweDA0MDAwMDBkLCAweDgyMDAwZDAwLCAweDAwMDAwMGMwLAotCTB4ODIwNDBkODAsIDB4MDAwMDAwODAsIDB4MDQwMDAwMGQsIDB4NTkzMDA4MDQsCi0JMHg4YzA0MGQxOCwgMHgwNDAyMDAwYSwgMHg0MjAyNzAwMCwgMHgwMDAwMDA0MSwKLQkweDAyMDFmMDAwLCAweDAwMDIwOWM0LCAweDRhMDI2MjAzLCAweDAwMDAwMDA3LAotCTB4NDk3YTYyMDYsIDB4MDIwMWYwMDAsIDB4MDAwMjA4MzEsIDB4NTkzMjU4MDgsCi0JMHg1OTJjMGMwYSwgMHg4YzA0MGQxYSwgMHgwNDAyMDAwNSwgMHgwMjAxZjgwMCwKLQkweDAwMDIwODMxLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDAyMDFmODAwLAotCTB4MDAxMGEzYjYsIDB4MDQwMDA3ZmEsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjhjMSwgMHg1OTMyNTgwOCwgMHg1OTMyNjgwOSwgMHg1OTM0MDIwMCwKLQkweDhjMDAwNTBlLCAweDA0MDAwMDBlLCAweDU5MmMwNDBhLCAweDgyMDAwNTAwLAotCTB4MDAwMDAwYzAsIDB4ODIwMDA1ODAsIDB4MDAwMDAwODAsIDB4MDQwMDAwMDUsCi0JMHg1OTJjMDAwZiwgMHg1OTMwMTgxNSwgMHg4MDBjMWM4MCwgMHg0ODBlNjAxNSwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAyLCAweDA0MDFmMDBlLCAweDQyMDI4MDAwLAotCTB4MDAwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMGEyMDEsIDB4NTkzMDAyMDYsCi0JMHg4MDAwMDU0MCwgMHgwNDAyMDAwNCwgMHg1OWE4MDAzOCwgMHg4MDAwMDBjMiwKLQkweDQ4MDI2MjA2LCAweDQ5N2E2MDA4LCAweDRhMDI2MjAzLCAweDAwMDAwMDA3LAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDIwMywgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDAyLCAweDA0MDAwNzkzLCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NDk3YTYyMDYsIDB4MDIwMWYwMDAsCi0JMHgwMDAyMDgzMSwgMHg0YTAyNjIwMywgMHgwMDAwMDAwNywgMHg0OTdhNjIwNiwKLQkweDAyMDFmMDAwLCAweDAwMDIwODJjLCAweDU5MzAwNDE0LCAweDhjMDAwNTFjLAotCTB4MDIwMjAwMDAsIDB4MDAwMjA5YjUsIDB4NTkzMjU4MDgsIDB4NTkyYzIwMGYsCi0JMHg0MDA4MDAwMCwgMHg4MDEwMjQ4MCwgMHg1OTMwMDAxNSwgMHg4MDEwMjQwMCwKLQkweDQ4MTI2MDE1LCAweDAyMDFmMDAwLCAweDAwMDIwOWI1LCAweDhjMDQwZDBlLAotCTB4MDQwMjAwMGEsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDYsIDB4MDQwMWY4MjMsCi0JMHg1OTMwMDAxZiwgMHg4MDAwMDU0MCwgMHgwMjAyMDgwMCwgMHgwMDEwMGRjNCwKLQkweDAyMDFmMDAwLCAweDAwMDIwODJjLCAweDRhMDI2MjAzLCAweDAwMDAwMDAyLAotCTB4MWMwMWYwMDAsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMGRjNCwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMSwgMHgwMjAwMDAwMCwKLQkweDAwMDIwOWJjLCAweDA0MDFmN2Q4LCAweDU5MzAwNDE0LCAweDhjMDAwNTFjLAotCTB4MDQwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDBiYWQsIDB4MDIwMDAwMDAsCi0JMHgwMDAyMDlhZSwgMHgxYzAxZjAwMCwgMHg1OTMwMDAxMSwgMHg4MDAwMDU0MCwKLQkweDA0MDIwMDA1LCAweDAyMDFmODAwLCAweDAwMTAwYmFkLCAweDAyMDAwMDAwLAotCTB4MDAwMjA5YWUsIDB4MWMwMWYwMDAsIDB4NDkyZmM4NTcsIDB4NDgwYmM4NTcsCi0JMHg4YzA4MTUzZSwgMHgwNDAwMDAwNiwgMHg4MDA4MTA4MCwgMHg4MDA4MTAwMCwKLQkweDQyMDAwODAwLCAweDAwMDAwMDA5LCAweDA0MDFmMDAzLCAweDQyMDAwODAwLAotCTB4MDAwMDAwMTUsIDB4NDgwYTU4MGIsIDB4MWMwMWYwMDAsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAxMywgMHgwNDAwMDAwNSwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxNCwKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDU5MzAwNDE0LCAweDhjMDAwNTE2LAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg1OTMwMDAwOCwgMHg4MDAwMDU0MCwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNjE1LCAweDFjMDFmMDAwLCAweDU5MzAwNDE0LCAweDhjMDAwNTE2LAotCTB4MDIwMDA4MDAsIDB4MDAxMDA2MTUsIDB4MWMwMWYwMDAsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwNCwgMHg0OTNhNjQwMywgMHg0MjAwMDgwMCwgMHg4MDAwMjAwMSwKLQkweDAyMDFmMDAwLCAweDAwMDIwODU1LCAweDRhMDI2MjAzLCAweDAwMDAwMDAzLAotCTB4NDkzYTY0MDMsIDB4MDIwMWY4MDAsIDB4MDAwMjAwY2EsIDB4NTkzMjU4MDgsCi0JMHg1OTJjMDQwYSwgMHg4YzAwMDUxZSwgMHgwNDAwMDAxMiwgMHg4MjAwMDUwMCwKLQkweDAwMDAwMGMwLCAweDgyMDAwNTgwLCAweDAwMDAwMDgwLCAweDA0MDAwMDExLAotCTB4NTkzMDA0MTQsIDB4OGMwMDA1MTIsIDB4MDQwMjAwMGEsIDB4OGMwMDA1MTAsCi0JMHgwNDAyMDAwOCwgMHg1OTJjMDQwYywgMHg4MDAwMDU0MCwgMHgwNDAyMDAwNSwKLQkweDgyMDgwZDQwLCAweDgwMDAzMDY1LCAweDAyMDFmMDAwLCAweDAwMTA2NDY2LAotCTB4ODIwODBkNDAsIDB4ODAwMDIwNjUsIDB4MDIwMWYwMDAsIDB4MDAxMDY0NjYsCi0JMHg4MjA4MGQ0MCwgMHg4MDAwMjA0MiwgMHgwMjAxZjAwMCwgMHgwMDEwNjQ2NiwKLQkweDQ5MzNjODU3LCAweDQ5M2JjODU3LCAweDgzMzgwNDgwLCAweDAwMDAwMDQ0LAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4ODMzODA0ODAsIDB4MDAwMDAwNDEsCi0JMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwOWVhNiwKLQkweDAwMTA5ZWI2LCAweDAwMTA5ZWNiLCAweDU5MzI1ODA4LCAweDU5MmMwNDBhLAotCTB4OGMwMDA1MWUsIDB4MDQwMDAwMWQsIDB4ODIwMDFkMDAsIDB4MDAwMDAwYzAsCi0JMHg4MjBjMWQ4MCwgMHgwMDAwMDBjMCwgMHgwNDAwMDAxOCwgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDQ5M2E2NDAzLCAweDQyMDAwODAwLCAweDgwMDAyMDQyLAotCTB4MDIwMWYwMDAsIDB4MDAwMjA4NTUsIDB4NTkzMjU4MDgsIDB4NTkyYzA0MGEsCi0JMHg4YzAwMDUxZSwgMHgwNDAwMDAwZCwgMHg4MjAwMWQwMCwgMHgwMDAwMDBjMCwKLQkweDgyMGMxZDgwLCAweDAwMDAwMGMwLCAweDA0MDAwMDA4LCAweDRhMDI2MjAzLAotCTB4MDAwMDAwMDEsIDB4NDkzYTY0MDMsIDB4NDIwMDA4MDAsIDB4ODAwMDIwMDEsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDg1NSwgMHg0OTdhNjAwOCwgMHg0OTdhNjIwNiwKLQkweDQyMDI4MDAwLCAweDAwMDAwMDA0LCAweDA0MDFmMzM3LCAweDU5MzI1ODA4LAotCTB4NTkyYzA0MGEsIDB4OGMwMDA1MWUsIDB4MDQwMDA3ZjgsIDB4ODIwMDFkMDAsCi0JMHgwMDAwMDBjMCwgMHg4MjBjMWQ4MCwgMHgwMDAwMDBjMCwgMHgwNDAwMDdmMywKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAzLCAweDQ5M2E2NDAzLCAweDAyMDFmODAwLAotCTB4MDAwMjAwY2EsIDB4ODIwODBkNDAsIDB4ODAwMDIwNjUsIDB4MDIwMWYwMDAsCi0JMHgwMDEwNjQ2NiwgMHg0OTMzYzg1NywgMHg0OTNiYzg1NywgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDg1LCAweDA0MDAwMDA2LCAweDgzMzgwNTgwLCAweDAwMDAwMDg4LAotCTB4MDQwMDAwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwOSwgMHg0OTNhNjQwMywgMHg0MjAwMDgwMCwgMHg4MDAwMDA0YiwKLQkweDAyMDFmMDAwLCAweDAwMDIwODU1LCAweDRkMWMwMDAwLCAweDgxMzY2OWMwLAotCTB4MDQwMDAwMDQsIDB4MDIwMWY4MDAsIDB4MDAxMGEzYjAsIDB4MDQwMjAwNDQsCi0JMHg1OWNjMTQwNCwgMHgwNDAxZjg0NiwgMHgwNDAwMDAxOCwgMHg1OTFjMDQwNiwKLQkweDgyMDAwNTAwLCAweDAwMDAwMDFmLCAweDgyMDAyNTgwLCAweDAwMDAwMDA2LAotCTB4MDQwMDAwMDcsIDB4ODIwMDI1ODAsIDB4MDAwMDAwMDQsIDB4MDQwMDAwMmUsCi0JMHg4MjAwMjU4MCwgMHgwMDAwMDAxMSwgMHgwNDAyMDAwYywgMHg0OTdhM2EwNSwKLQkweDQyMDAyMDAwLCAweDAwMDAwMDU0LCAweDAyMDFmODAwLCAweDAwMTA3N2QxLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NDkzYTY0MDMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTc5YiwgMHgwNDAxZjAyYywgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDA0LCAweDQyMDIzODAwLCAweGZmZmZmZmZmLCAweDA0MDFmN2YxLAotCTB4ODEzNjY5YzAsIDB4MDQwMjAwMDksIDB4NTljYzAwMDEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNTliOSwgMHgwNDAyMDAxZSwgMHgwMjAxZjgwMCwgMHgwMDEwNDNmYywKLQkweDA0MDIwMDFiLCAweDQ5MzY2MDA5LCAweDRhMDI2NDAzLCAweDAwMDAwMDg3LAotCTB4NTljYzEyMDQsIDB4ODIwODE1ODAsIDB4MDAwMGZmZmYsIDB4MDQwMjAwMDMsCi0JMHg0YTAyNjQwMywgMHgwMDAwMDA4NiwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwKLQkweDQyMDAwODAwLCAweDgwMDAwMDQwLCAweDAyMDFmODAwLCAweDAwMDIwODU1LAotCTB4MDQwMWYwMGQsIDB4NTkxYzAyMDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDcsCi0JMHgwNDAyMDdkZSwgMHg0ZDMwMDAwMCwgMHg0MTFlNjAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMTA3Njk4LCAweDVjMDI2MDAwLCAweDA0MDFmN2Q4LCAweDAyMDFmODAwLAotCTB4MDAxMDc2OTgsIDB4NWMwMjM4MDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsCi0JMHg0ODBiYzg1NywgMHg0MjAwMjgwMCwgMHgwMDEwY2ZjMCwgMHg0MTMwMDAwMCwKLQkweDgwMTQwNTgwLCAweDA0MDAwMDE3LCAweDU4MTQwMjAzLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDAsIDB4MDQwMDAwMTMsIDB4NTgxNDAyMDIsIDB4ODAwODA1ODAsCi0JMHgwNDAyMDAxMCwgMHg1ODE0MWMwNiwgMHg4MjBjMDU4MCwgMHgwMDAwMDAwNSwKLQkweDA0MDAwMDBjLCAweDgyMGMwNTgwLCAweDAwMDAwMDA5LCAweDA0MDAwMDFkLAotCTB4NTkzMDIwMDksIDB4NTgxNDAwMDksIDB4ODAwMDAxYzAsIDB4MDQwMDAwMGIsCi0JMHg4MDEwMjFjMCwgMHgwNDAwMDAwMywgMHg4MDEwMDU4MCwgMHgwNDAwMDAxMCwKLQkweDgyMTQyYzAwLCAweDAwMDAwMDI0LCAweDQxNTQwMDAwLCAweDgwMTQwNDgwLAotCTB4MDQwMjEwMGUsIDB4MDQwMWY3ZTIsIDB4NTgxNDAwMWUsIDB4ODAxMDIxYzAsCi0JMHgwNDAwMDAwNSwgMHg1ODEwMjAwMiwgMHg4MjEwMjUwMCwgMHgwMGZmZmZmZiwKLQkweDA0MDFmN2YyLCAweDU4MTAyMDFlLCAweDA0MDFmN2YwLCAweDQwMTYzODAwLAotCTB4ODEzMDA1NDAsIDB4MDQwMWYwMDIsIDB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsCi0JMHg1ODE0MTgwNywgMHg4YzBjMWQxMCwgMHgwNDAyMDdlYSwgMHgwNDAxZjdlMSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDEzLCAweDA0MDIwMDBlLCAweDU5MzAwNDAzLAotCTB4NDgwM2M4NTcsIDB4ODIwMDBjODAsIDB4MDAwMDAwODUsIDB4MDIwMDE4MDAsCi0JMHgwMDEwMDYxNSwgMHg4MjAwMGM4MCwgMHgwMDAwMDA5MywgMHgwMjAyMTgwMCwKLQkweDAwMTAwNjE1LCAweDgyMDAwNDgwLCAweDAwMDAwMDg1LCAweDBjMDFmMDE5LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwMjcsIDB4MDQwMDAwMDUsIDB4ODMzODA1ODAsCi0JMHgwMDAwMDAxNCwgMHgwMjAyMDAwMCwgMHgwMDEwNzZmYiwgMHg0OTNiYzg1NywKLQkweDAyMDFmODAwLCAweDAwMTA2OGY2LCAweDU5MzI1ODA4LCAweDgxMmU1OWMwLAotCTB4MDIwMDAwMDAsIDB4MDAxMDc2OTgsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMzEsCi0JMHg0YTAyNTgxMSwgMHgwMDAwMDAwNCwgMHg0YTAyNTgxMiwgMHgwMDAwMDBmZiwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmMDAwLCAweDAwMTA3Njk4LAotCTB4MDAxMDlmYTYsIDB4MDAxMDlmYWQsIDB4MDAxMDlmYWQsIDB4MDAxMDlmYTYsCi0JMHgwMDEwOWZhNiwgMHgwMDEwOWZhNiwgMHgwMDEwOWZhNiwgMHgwMDEwOWZhNiwKLQkweDAwMTA5ZmE2LCAweDAwMTA5ZmE2LCAweDAwMTA5ZmE2LCAweDAwMTA5ZmE2LAotCTB4MDAxMDlmYTYsIDB4MDAxMDlmYTgsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg1OTMyNTgwOCwgMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDAyMDFmMDAwLCAweDAwMDIwOGI0LCAweDQ5MzNjODU3LAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NzIsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTNmYSwgMHg0OTdhNjIwNSwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDBiLCAweDA0MDFmODA3LCAweDRhMDI2NDA2LCAweDAwMDAwMDA2LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDcsIDB4NDk3YTYyMDYsIDB4MWMwMWYwMDAsCi0JMHg0OTMzYzg1NywgMHg0OTQzYzg1NywgMHg1OTMwMDQwNiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA3LCAweDA0MDIwMDAyLCAweDFjMDFmMDAwLCAweDAyMDFmODAwLAotCTB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDhhOTksCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmMDAxLCAweDAwMTA5ZmY0LCAweDAwMTA5ZmY4LCAweDAwMTA5ZmRmLAotCTB4MDAxMGEwMDYsIDB4MDAxMGEwMTksIDB4MDAxMDlmZGYsIDB4MDAxMDlmZGYsCi0JMHgwMDEwOWZkZiwgMHgwMDEwOWZkZiwgMHgwMDEwOWZkZiwgMHgwMDEwOWZkZiwKLQkweDAwMTA5ZmRmLCAweDAwMTA5ZmRmLCAweDAwMTA5ZmRmLCAweDRkNDAwMDAwLAotCTB4NTkzMDAwMWYsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMDUsIDB4NDE0MDA4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMGRjNCwgMHg0MDA2ODAwMCwgMHg0ZDJjMDAwMCwKLQkweDU5MzI1ODA4LCAweDAyMDFmODAwLCAweDAwMTA4ZGY0LCAweDA0MDIwYTE2LAotCTB4NGM1YzAwMDAsIDB4NTkzMGI4MDksIDB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsCi0JMHg0ODVlNjAwOSwgMHg1YzAwYjgwMCwgMHg1YzAyNTgwMCwgMHg1YzAyODAwMCwKLQkweDVjMDNlMDAwLCAweDAyMDAwMDAwLCAweDAwMTA2OTgyLCAweDFjMDFmMDAwLAotCTB4NTk4YzAwMGQsIDB4ODEzMDA1ODAsIDB4MDQwMjAwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNmJlMiwgMHgwNDAyMDAxNiwgMHgwMjAxZjgwMCwgMHgwMDEwNjYxOSwKLQkweDA0MDAwN2RmLCAweDAyMDFmODAwLCAweDAwMTA2OGEzLCAweDA0MDAwMDEwLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsIDB4MDIwMWY4MDAsIDB4MDAxMDhhOGEsCi0JMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwgMHgwMDEwNmJiMiwgMHgwNDAyMDAwOCwKLQkweDAyMDFmODAwLCAweDAwMTA2NGY2LCAweDA0MDAwN2QxLCAweDAyMDFmODAwLAotCTB4MDAxMDY4YTMsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAwZSwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmN2I5LCAweDAyMDFmODAwLCAweDAwMTAwZWU0LCAweDA0MDFmN2M0LAotCTB4NDkzM2M4NTcsIDB4NGQ0NDAwMDAsIDB4NGQzNDAwMDAsIDB4NTljYzAwMDcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNTliOSwgMHgwMjAwMDgwMCwgMHgwMDAyMDI2NywKLQkweDA0MDIwMDFhLCAweDU5MzAwMDA5LCAweDRjMDAwMDAwLCAweDQ5MzY2MDA5LAotCTB4NDIwMDMwMDAsIDB4MDAwMDAwMGIsIDB4MDIwMWY4MDAsIDB4MDAxMGE3NjYsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjY2MCwgMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwKLQkweDRkM2MwMDAwLCAweDRkNDAwMDAwLCAweDQyMDI4MDAwLCAweDAwMDAwMDI5LAotCTB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsIDB4NWMwMjgwMDAsCi0JMHg1YzAyNzgwMCwgMHg1YzAwMDAwMCwgMHg0ODAyNjAwOSwgMHg1OWNjMDAwNywKLQkweDQ4MDI2ODAyLCAweDgwMDAwNTgwLCAweDVjMDI2ODAwLCAweDVjMDI4ODAwLAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NGMwNDAwMDAsIDB4NTlhODAwMTYsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDA3NCwgMHgwNDAyMDA0MCwgMHg1OWNjMGEwOCwKLQkweDgyMDQwNDgwLCAweDAwMDAwMTAwLCAweDA0MDAxMDMzLCAweDU5Y2MwYzA4LAotCTB4ODIwNDA1MDAsIDB4MDAwMDgwMDAsIDB4MDQwMDAwMzUsIDB4NTlhODAwMzIsCi0JMHg4MDAwMDU0MCwgMHgwNDAyMDAwOSwgMHg1OTMwMTAwOSwgMHg1ODA4MDIxMiwKLQkweDgyMDAwNTAwLCAweDAwMDBmZjAwLCAweDA0MDAwMDA0LCAweDgyMDQwNTAwLAotCTB4MDAwMDA4MDAsIDB4MDQwMDAwMmEsIDB4NTljYzBjMDksIDB4ODAwNDA4NDAsCi0JMHgwNDAwMTAyNCwgMHg1OWE4MDgyNiwgMHg4YzA0MGQwNiwgMHgwNDAwMDAwNCwKLQkweDU5Y2MwYzBmLCAweDhjMDQwZDFlLCAweDA0MDIwMDEyLCAweDU5Y2MwYTE3LAotCTB4ODAwNDA5YzAsIDB4MDQwMjAwMTIsIDB4NTljYzBhMTgsIDB4ODIwNDA0ODAsCi0JMHgwMDAwMDEwMCwgMHgwNDAwMTAxNCwgMHg1OWNjMGMxOCwgMHg4MDA0MDljMCwKLQkweDA0MDIwMDBlLCAweDU5Y2MwYzE5LCAweDgwMDQwODQwLCAweDA0MDAxMDExLAotCTB4NTljYzBjMWEsIDB4ODAwNDA4NDAsIDB4MDQwMDEwMTEsIDB4MDQwMWYwMTgsCi0JMHg0YTAyNjIxYSwgMHgwMDAwMDEwMCwgMHgwNDAxZjAxMiwgMHg0YTAyNjIxYSwKLQkweDAwMDAwMzAwLCAweDA0MDFmMDBmLCAweDRhMDI2MjFhLCAweDAwMDAwNTAwLAotCTB4MDQwMWYwMGMsIDB4NGEwMjYyMWEsIDB4MDAwMDA3MDAsIDB4MDQwMWYwMDksCi0JMHg0YTAyNjIxYSwgMHgwMDAwMDkwMCwgMHgwNDAxZjAwNiwgMHg0YTAyNjIxYSwKLQkweDAwMDAwZjAwLCAweDA0MDFmMDAzLCAweDRhMDI2MjFhLCAweDAwMDAyZDAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MDQwMWYwMDIsIDB4ODAwMDA1ODAsCi0JMHg1YzAwMDgwMCwgMHgxYzAxZjAwMCwgMHg1OWNjMDQwNywgMHg0ODAzYzg1NywKLQkweDgyMDAwNTgwLCAweDAwMDAwODAwLCAweDA0MDAwMDAzLCAweDRhMDI2MjFhLAotCTB4MDAwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NGM1ODAwMDAsCi0JMHg1OWNjMDAwYywgMHg1OTM0MDgwMiwgMHg4MjA0MGQwMCwgMHgwMGZmZmZmZiwKLQkweDgwMDQwNTgwLCAweDA0MDIwMDEyLCAweDgzY2MxNDAwLCAweDAwMDAwMDA4LAotCTB4NDIwMGIwMDAsIDB4MDAwMDAwMDIsIDB4ODMzNDFjMDAsIDB4MDAwMDAwMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDEwODJmZiwgMHgwNDAyMDAwOSwgMHg4M2NjMTQwMCwKLQkweDAwMDAwMDBhLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDgzMzQxYzAwLAotCTB4MDAwMDAwMDgsIDB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsIDB4NWMwMGIwMDAsCi0JMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg0YzU4MDAwMCwgMHg4M2NjMTQwMCwKLQkweDAwMDAwMDBiLCAweDQyMDBiMDAwLCAweDAwMDAwMDAyLCAweDgzMzQxYzAwLAotCTB4MDAwMDAwMDYsIDB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsIDB4MDQwMjAwMGMsCi0JMHg4M2NjMTQwMCwgMHgwMDAwMDAwZCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwKLQkweDgzMzQxYzAwLCAweDAwMDAwMDA4LCAweDAyMDFmODAwLCAweDAwMTA4MmZmLAotCTB4MDQwMDAwMTQsIDB4NDkzM2M4NTYsIDB4NDkzM2M4NTYsIDB4NDkzM2M4NTcsCi0JMHg1OTM0MDAwOSwgMHg0ODAzYzg1NywgMHg1OTM0MDAwZSwgMHg0ODAzYzg1NywKLQkweDU5MzQwMDA4LCAweDQ4MDNjODU3LCAweDU5MzQwMDBkLCAweDQ4MDNjODU3LAotCTB4NTkzNDAwMDcsIDB4NDgwM2M4NTcsIDB4NTkzNDAwMGMsIDB4NDgwM2M4NTcsCi0JMHg1OTM0MDAwNiwgMHg0ODAzYzg1NywgMHg1OTM0MDAwYiwgMHg0ODAzYzg1NywKLQkweDVjMDBiMDAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDQ5NDdjODU3LAotCTB4NDk0M2M4NTcsIDB4NGM2MDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDY5OGMsCi0JMHg0ZGYwMDAwMCwgMHg0ZDJjMDAwMCwgMHg0ZDMwMDAwMCwgMHg0ZDM0MDAwMCwKLQkweDA0MDFmOGQ4LCAweDQxMzBjMDAwLCAweDQyMDI2MDAwLCAweDAwMTBjZmMwLAotCTB4NTlhODAwMGUsIDB4ODA2MGMxYzAsIDB4MDQwMDAwMDUsIDB4ODI2MDE1ODAsCi0JMHgwMDEwYmJlOCwgMHgwNDAwMDAwMiwgMHg4MDAwMDA0MCwgMHg4MTY0MDQ4MCwKLQkweDA0MDIxMGM0LCAweDQwNjAwMDAwLCAweDgxMzAwNTgwLCAweDA0MDAwMGJjLAotCTB4MDQwMWY5YmMsIDB4MDQwMjAwYmEsIDB4NTkzMjY4MDksIDB4NTkzMDA0MDYsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMDAxMiwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDBjMDFmMDAxLCAweDAwMTBhMWFmLCAweDAwMTBhMTE4LCAweDAwMTBhMTMzLAotCTB4MDAxMGExM2UsIDB4MDAxMGExMTEsIDB4MDAxMGExMmMsIDB4MDAxMGExNjksCi0JMHgwMDEwYTFhZiwgMHgwMDEwYTEwZiwgMHgwMDEwYTE3YywgMHgwMDEwYTE5MCwKLQkweDAwMTBhMTBmLCAweDAwMTBhMTBmLCAweDAwMTBhMTBmLCAweDAwMTBhMTBmLAotCTB4MDAxMGExYWYsIDB4MDAxMGExYTYsIDB4MDAxMGExOWUsIDB4MDIwMWY4MDAsCi0JMHgwMDEwMDYxNSwgMHg4ZDNlN2QxOCwgMHgwNDAwMDAwMywgMHg4ZDNlN2QxNiwKLQkweDA0MDAwMDA0LCAweDU5MzAwNDIwLCAweDhjMDAwNTAwLCAweDA0MDIwMDk4LAotCTB4NTkzMDA0MDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwNDMsIDB4MDQwMDAwOTQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGVmMSwgMHgwNDAwMDAwNywgMHgwMjAxZjgwMCwKLQkweDAwMTA4ZjA1LCAweDA0MDIwMDhjLCAweDAyMDFmODAwLCAweDAwMTA3ZGE2LAotCTB4MDQwMWYwODksIDB4MDIwMWY4MDAsIDB4MDAxMDFlMWIsIDB4MDIwMWY4MDAsCi0JMHgwMDEwOGYwNSwgMHgwMjAwMDgwMCwgMHgwMDEwN2RhNiwgMHgwNDAxZjA4MiwKLQkweDhkM2U3ZDE4LCAweDA0MDAwMDAzLCAweDhkM2U3ZDE2LCAweDA0MDAwMDA0LAotCTB4NTkzMDA0MjAsIDB4OGMwMDA1MDAsIDB4MDQwMjAwN2QsIDB4NTkzMjU4MDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDA3NywgMHg0OTQyNWEwNiwKLQkweDQ5N2E1YzA5LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLAotCTB4MDAxMDhlZTcsIDB4MDQwMWYwNzAsIDB4OGQzZTdkMDAsIDB4MDQwMDAwMDcsCi0JMHg1OTMwMDAxNywgMHg4MTQ4MDU4MCwgMHgwNDAyMDA2ZCwgMHg1OTMwMDAxOCwKLQkweDgxNGMwNTgwLCAweDA0MDIwMDZhLCAweDU5MzAwMjAzLCAweDgyMDAwNTgwLAotCTB4MDAwMDAwMDQsIDB4MDIwMDA4MDAsIDB4MDAxMDBlZTQsIDB4NTkzMjU4MDgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDA1ZiwgMHg0YTAyNWEwNCwKLQkweDAwMDAwMTAzLCAweDU5MzAwMDA0LCAweDg0MDAwNTVjLCAweDQ4MDI2MDA0LAotCTB4NTkyYzA0MDgsIDB4OGMwMDA1MTIsIDB4MDQwMDAwMDcsIDB4NGQyYzAwMDAsCi0JMHg1OTJjMDAwOSwgMHg0MDAyNTgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwMDg0MywKLQkweDVjMDI1ODAwLCAweDQ5NDI1YTA2LCAweDQ5N2E1YzA5LCAweDA0MDFmYjRmLAotCTB4MDIwMWY4MDAsIDB4MDAxMDkzNjUsIDB4MDIwMWY4MDAsIDB4MDAxMDhmN2QsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwgMHgwMDEwOGVlNywKLQkweDA0MDFmMDQ1LCAweDhkM2U3ZDE4LCAweDA0MDAwMDQ1LCAweDU5MzAwMjAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDIwMDA4MDAsIDB4MDAxMDBlZTQsCi0JMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwNDAwMDAzYSwKLQkweDQ5NDI1YTA2LCAweDQ5N2E1YzA5LCAweDA0MDFmYjM4LCAweDAyMDFmODAwLAotCTB4MDAxMDkzNjUsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsIDB4MDQwMWYwMzIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNjAwZSwgMHgwNDAwMDAzMSwgMHg1OTMwMDIwMywKLQkweDgyMDAwNTgwLCAweDAwMDAwMDA0LCAweDA0MDAwMDJkLCAweDU5MzAwMjAzLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMjksIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjhjMSwgMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDIxLCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDA0MDFmMDFlLAotCTB4NTkzMDAyMDMsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDQsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMGVlNCwgMHg1OTMyNTgwOCwgMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwKLQkweDA0MDAwMDE1LCAweDQ5NDI1YTA2LCAweDQ5N2E1YzA5LCAweDAyMDFmODAwLAotCTB4MDAwMjAzODEsIDB4MDQwMWYwMTAsIDB4ODMzYzA1MDAsIDB4MDAwMDE4MDAsCi0JMHgwNDAwMDAwZiwgMHg4ZDNlN2QxNiwgMHgwNDAyMDAwZCwgMHg1OTMyNTgxNywKLQkweDAyMDFmODAwLCAweDAwMTAwODQzLCAweDU5MzI1ODA4LCAweDAyMDFmODAwLAotCTB4MDAxMDhkZjQsIDB4MDQwMDAwMDQsIDB4NDk0MjVhMDYsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDM4MSwgMHgwMjAxZjgwMCwgMHgwMDEwNzY5OCwgMHg4MzMyNjQwMCwKLQkweDAwMDAwMDI0LCAweDQxNTgwMDAwLCAweDgxMzAwNDgwLCAweDA0MDAxNzM1LAotCTB4NWMwMjY4MDAsIDB4NWMwMjYwMDAsIDB4NWMwMjU4MDAsIDB4NWMwM2UwMDAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwNjk4MiwgMHg1YzAwYzAwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MzNjODU3LCAweDgxMzI2MWMwLCAweDA0MDAwMDJkLCAweDgzMzAwZDgwLAotCTB4MDAxMGJiZTgsIDB4MDQwMDAwMmEsIDB4OGQzZTdkMDYsIDB4MDQwMjAwMjgsCi0JMHg1OTMwMGMwNiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMSwgMHgwNDAwMDAwYSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDAyLCAweDA0MDIwMDIxLCAweDU5MzAwMjFkLAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDEsIDB4MDQwMjAwMWQsIDB4NTkzMDBjMTYsCi0JMHgwNDAxZjAwMiwgMHg1OTMwMGMwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDAzOSwKLQkweDA0MDAwMDA0LCAweDgyMDQwNTgwLCAweDAwMDAwMDM1LCAweDA0MDIwMDE0LAotCTB4NGQzMDAwMDAsIDB4NGQxYzAwMDAsIDB4NTkzMjYwMWUsIDB4NDkzM2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOTFlMywgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MWMwMDFjLCAweDQ5N2EzODFjLCAweDU5MWMwYzE0LCAweDg0MDQwZDAyLAotCTB4NDgwNjNjMTQsIDB4NWMwMjM4MDAsIDB4NWMwMjYwMDAsIDB4ODEzMDA1ODAsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg0OTdhNjAxZSwgMHgxYzAxZjAwMCwKLQkweDVjMDAwMDAwLCAweDRjMDAwMDAwLCAweDQ4MDNjODU3LCAweDRkM2MwMDAwLAotCTB4NDIwMjc4MDAsIDB4MDAwMDAwMDEsIDB4MDIwMWY4MDAsIDB4MDAxMDQzYmQsCi0JMHg1YzAyNzgwMCwgMHg0YzU4MDAwMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwKLQkweDgzYTgxYzAwLCAweDAwMDAwMDAyLCAweDgzY2MxNDAwLCAweDAwMDAwMDBiLAotCTB4MDIwMWY4MDAsIDB4MDAxMDgyZmYsIDB4NWMwMGIwMDAsIDB4ODAwMDA1NDAsCi0JMHgxYzAxZjAwMCwgMHg0OTJmYzg1NywgMHg0OTQzYzg1NywgMHg1OWE4MDAwYywKLQkweDgxMmMwNDgwLCAweDA0MDAxMDExLCAweDU5YTgwMDBkLCAweDgxMmMwNDgwLAotCTB4MDQwMjEwMGUsIDB4NTkyYzAwMDAsIDB4ODAwMDVkNDAsIDB4MDQwMDAwMDgsCi0JMHg0OTdhNTgwMCwgMHg0OTQyNWEwNiwgMHg0YzJjMDAwMCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwMzgxLCAweDVjMDI1ODAwLCAweDA0MDFmN2Y3LCAweDQ5NDI1YTA2LAotCTB4MDIwMWYwMDAsIDB4MDAwMjAzODEsIDB4MWMwMWYwMDAsIDB4NDkzZmM4NTcsCi0JMHg0OTMzYzg1NywgMHg0ODBiYzg1NywgMHgwMjAxZjgwMCwgMHgwMDEwMzkzZSwKLQkweDA0MDAwMDJlLCAweDQxNTAyODAwLCAweDgxM2U3OWMwLCAweDA0MDIwMDA2LAotCTB4NTlhODAwNjYsIDB4ODAwMDAwMDAsIDB4NTlhODA4NmEsIDB4ODAwNDA1ODAsCi0JMHgwNDAwMDAyNiwgMHg0MTMwMDAwMCwgMHg4MDE0MDU4MCwgMHgwNDAwMDAxYSwKLQkweDU4MTQwMjAzLCAweDgyMDAwNTgwLCAweDAwMDAwMDAwLCAweDA0MDAwMDE2LAotCTB4NTgxNDAyMDIsIDB4ODAwODA1ODAsIDB4MDQwMjAwMTMsIDB4NTgxNDFjMDYsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDAwZiwgMHg4MjBjMDU4MCwKLQkweDAwMDAwMDA5LCAweDA0MDAwMDE3LCAweDU5MzAwMDA5LCAweDU4MTQyMDA5LAotCTB4ODAxMDIxYzAsIDB4MDQwMjAwMDYsIDB4NTgxNDIwMWUsIDB4NTkzMDE4MDksCi0JMHg1ODBjMDAwMiwgMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwgMHg4MDEwMDU4MCwKLQkweDA0MDAwMDA3LCAweDgyMTQyYzAwLCAweDAwMDAwMDI0LCAweDQxNTQwMDAwLAotCTB4ODAxNDA0ODAsIDB4MDQwMjEwMDUsIDB4MDQwMWY3ZGYsIDB4NDAxNjM4MDAsCi0JMHg4MTMwMDU0MCwgMHgwNDAxZjAwMiwgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwKLQkweDU4MTQxODA3LCAweDhjMGMxZDEwLCAweDA0MDIwN2YzLCAweDA0MDFmN2U3LAotCTB4NDIwMDIwMDAsIDB4MDAwMGZmZmYsIDB4NTkzMDEwMDksIDB4ODAwODExYzAsCi0JMHgwNDAwMDAwMiwgMHg1ODA4MjQwMywgMHg0MTMwMTAwMCwgMHgwNDAxZjAwNywKLQkweDQxNzgxMDAwLCAweDQxNDQyMDAwLCAweDA0MDFmMDA0LCAweDQxNzgxMDAwLAotCTB4NDIwMDIwMDAsIDB4MDAwMGZmZmYsIDB4NWMwMDAwMDAsIDB4NGMwMDAwMDAsCi0JMHg0ODAzYzg1NywgMHg0ODBiYzg1NywgMHg0ODEzYzg1NywgMHg0OTJmYzg1NywKLQkweDQ5NDNjODU3LCAweDRkMmMwMDAwLCAweDRjMDgwMDAwLCAweDRjMTAwMDAwLAotCTB4NGMxNDAwMDAsIDB4NGMxODAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1YzAwMzAwMCwgMHg1YzAwMjgwMCwKLQkweDVjMDAyMDAwLCAweDVjMDAxMDAwLCAweDRhMDI1YTA0LCAweDAwMDAwMTBkLAotCTB4ODAwODExYzAsIDB4MDQwMDAwMTcsIDB4ODM0MDA1ODAsIDB4MDAwMDAwMjksCi0JMHgwNDAyMDAxMCwgMHg4MjE4MDU4MCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAwYSwKLQkweDgyMTgwNTgwLCAweDAwMDAwMDAzLCAweDA0MDAwMDA3LCAweDgyMTgwNTgwLAotCTB4MDAwMDAwMDgsIDB4MDQwMDAwMDQsIDB4ODIxODA1ODAsIDB4MDAwMDAwMDksCi0JMHgwNDAyMDAwNCwgMHg0YTAyNTgwOSwgMHhmZmZmZmZmZiwgMHgwNDAxZjAwMiwKLQkweDQ4MGE1ODA5LCAweDU4MDgwMjAyLCAweDQ4MDI1YzEzLCAweDA0MDFmMDA1LAotCTB4NGEwMjU4MDksIDB4ZmZmZmZmZmYsIDB4NGEwMjVjMTMsIDB4MDAwMGZmZmYsCi0JMHg0OTQyNWEwOCwgMHg0ODEyNWEwNiwgMHg4MjEwMDU4MCwgMHgwMDAwZmZmZiwKLQkweDA0MDAwMDEyLCAweDRjMTQwMDAwLCAweDRjMTgwMDAwLCAweDRkNDQwMDAwLAotCTB4NGQzNDAwMDAsIDB4NDAxMjg4MDAsIDB4MDIwMWY4MDAsIDB4MDAwMjAyNjcsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwgMHg1OTM0MDAwMiwgMHg4MjAwMDUwMCwKLQkweDAwZmZmZmZmLCAweDQ4MDI1ODEyLCAweDVjMDI2ODAwLCAweDVjMDI4ODAwLAotCTB4NWMwMDMwMDAsIDB4NWMwMDI4MDAsIDB4NDk3YTU4MDAsIDB4NDk3YTVjMDQsCi0JMHg4MzQwMDU4MCwgMHgwMDAwMDA0NiwgMHgwNDAyMDAwMiwgMHg0ODE2NWEwNywKLQkweDQ4MWE1YzA4LCAweDA0MDFmYmUwLCAweDVjMDI1ODAwLCAweDFjMDFmMDAwLAotCTB4NTkzMDA4MDksIDB4ODAwNDA5YzAsIDB4MDQwMDAwMDQsIDB4NTgwNDA0MDMsCi0JMHg4MTQ0MDU4MCwgMHgxYzAxZjAwMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwKLQkweDA0MDFmN2ZkLCAweDQ5MzNjODU3LCAweDRjMDQwMDAwLCAweDU5MzAwNDAzLAotCTB4ODIwMDBkODAsIDB4MDAwMDAwMWUsIDB4MDQwMjAwMTYsIDB4ODAwMDAwZDAsCi0JMHg1OTMwMGExNiwgMHg4MjA0MGQwMCwgMHgwMDAwMDBmZiwgMHg4MDA0MDU0MCwKLQkweDQ4MDNjODU3LCAweDQ4MDI2NDE2LCAweDRhMDI2NDAzLCAweDAwMDAwMDg1LAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDUsCi0JMHg0YTAyNjIxZCwgMHgwMDAwMDAwNCwgMHg1OWE4MDAzOCwgMHg0ODAyNjIwNiwKLQkweDQyMDAwODAwLCAweDgwMDAwMDRiLCAweDAyMDFmODAwLCAweDAwMDIwODU1LAotCTB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4NDAwMDAwMDAsCi0JMHg0MDAwMDAwMCwgMHgxYzAxZjAwMCwgMHg1OTMwMDQxNCwgMHg0OTMzYzg1NywKLQkweDQ4MDNjODU3LCAweDhjMDAwNTE4LCAweDA0MDAwMDA5LCAweDhjMDAwNTEyLAotCTB4MDIwMjAwMDAsIDB4MDAxMDhmZGIsIDB4MDQwMWY5MTgsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDgzMSwgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwgMHgxYzAxZjAwMCwKLQkweDU5MWMwNDA2LCAweDQ4MDNjODU3LCAweDgyMDAwYzgwLCAweDAwMDAwMDA5LAotCTB4MDQwMjEwMGIsIDB4MGMwMWYwMDEsIDB4MDAxMGEyZjcsIDB4MDAxMGEyZjcsCi0JMHgwMDEwYTJmNywgMHgwMDEwYTJmOSwgMHgwMDEwYTJmNywgMHgwMDEwYTJmOSwKLQkweDAwMTBhMmY5LCAweDAwMTBhMmY3LCAweDAwMTBhMmY5LCAweDgwMDAwNTgwLAotCTB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4MWMwMWYwMDAsCi0JMHg1OTFjMDQwNiwgMHg4MjAwMDUwMCwgMHgwMDAwMDAxZiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA2LCAweDA0MDAwMDBlLCAweDQ4MDNjODU3LCAweDRhMDI2NDAzLAotCTB4MDAwMDAwM2IsIDB4NGEwMjY0MWEsIDB4MDAwMDAwMDksIDB4NGEwMjYyMWEsCi0JMHgwMDAwMmEwMCwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0MjAwMDgwMCwKLQkweDgwMDAwMDQwLCAweDAyMDFmMDAwLCAweDAwMDIwODU1LCAweDQ4MDNjODU2LAotCTB4NGMwNDAwMDAsIDB4NGMxNDAwMDAsIDB4NGQzMDAwMDAsIDB4NDExZTYwMDAsCi0JMHgwNDAxZjhlNiwgMHg0OTdhNjIwNSwgMHg1OTMwMDQxNCwgMHg0ODAzYzg1NywKLQkweDgyMDAwNTAwLCAweGZmZmZhZGZmLCAweDQ4MDI2NDE0LCAweDQ5N2E2NDA1LAotCTB4NWMwMjYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsIDB4MDIwMDA4MDAsCi0JMHgwMDEwMDYxNSwgMHg1YzAwMjgwMCwgMHg1YzAwMDgwMCwgMHg0YTAyNWEwNCwKLQkweDAwMDAwMTBkLCAweDQ5N2E1ODAwLCAweDQ5N2E1YzA0LCAweDRhMDI1YTA4LAotCTB4MDAwMDAwNDUsIDB4NDkxZTU4MDksIDB4NTkzMDA0MDIsIDB4NDgwMjVjMDcsCi0JMHg1OTMwMDQxOSwgMHg0ODAyNWMwYiwgMHg1OTFjMDQxNCwgMHg4NDAwMDU1NiwKLQkweDQ4MDIzYzE0LCAweDU5MWMxODA5LCAweDU4MGMwNDAzLCAweDQ4MDI1YTA2LAotCTB4NDgxNjU4MGEsIDB4NDgwNjVhMGIsIDB4MDQwMWZiNTcsIDB4NGQ0MDAwMDAsCi0JMHg0MjAyODAwMCwgMHgwMDAwMDA0NSwgMHg1OTFjMDIwMiwgMHg0YzAwMDAwMCwKLQkweDRkMzAwMDAwLCAweDQxMWU2MDAwLCAweDA0MDFmYzgyLCAweDVjMDI2MDAwLAotCTB4NWMwMDAwMDAsIDB4NDgwMjNhMDIsIDB4NWMwMjgwMDAsIDB4NGEwMjNjMDYsCi0JMHgwMDAwMDAwNiwgMHg0YTAyM2EwMywgMHgwMDAwMDAwNywgMHg0OTdhM2EwNiwKLQkweDQ5N2EzYTA1LCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDgzMzgwNTgwLAotCTB4MDAwMDAwMTMsIDB4MDQwMjAwMGIsIDB4NTkzMDA0MDMsIDB4NDgwM2M4NTcsCi0JMHg4MjAwMGQ4MCwgMHgwMDAwMDA4NSwgMHgwNDAwMDAyYiwgMHg4MjAwMGQ4MCwKLQkweDAwMDAwMDhiLCAweDA0MDAwMDI4LCAweDAyMDFmODAwLCAweDAwMTAwNjE1LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwMjcsIDB4MDQwMjAwMGMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNjhmNiwgMHg0ZDJjMDAwMCwgMHg0ZDQwMDAwMCwgMHg1OTMyNTgwOCwKLQkweDQyMDI4MDAwLCAweDAwMDAwMDA0LCAweDA0MDFmZTlmLCAweDVjMDI4MDAwLAotCTB4NWMwMjU4MDAsIDB4MWMwMWYwMDAsIDB4ODMzODA1ODAsIDB4MDAwMDAwMTQsCi0JMHgwNDAwMDdmMywgMHg4MzM4MDU4MCwgMHgwMDAwMDA4OSwgMHgwNDAwMDAwNSwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDhhLCAweDAyMDIwMDAwLCAweDAwMTA3NmZiLAotCTB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsIDB4MDIwMjAwMDAsIDB4MDAxMDc2ZmIsCi0JMHg1OTMwMGEwMywgMHg4MjA0MDU4MCwgMHgwMDAwMDAwYSwgMHgwNDAwMDAwOSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDBjLCAweDA0MDAwMDA2LCAweDAyMDFmODAwLAotCTB4MDAxMDA2MTUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMGEsIDB4MWMwMWYwMDAsCi0JMHg4MzM4MDQ4MCwgMHgwMDAwMDA5MywgMHgwNDAyMTAwYywgMHg4MzM4MDQ4MCwKLQkweDAwMDAwMDg1LCAweDA0MDAxMDA5LCAweDgzMzgwNTgwLCAweDAwMDAwMDg5LAotCTB4MDQwMDAwMGEsIDB4ODMzODA1ODAsIDB4MDAwMDAwOGEsIDB4MDQwMDAwMjIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg0OTNiYzg1NywgMHg0OTMzYzg1NywKLQkweDAyMDFmMDAwLCAweDAwMTA3NmZiLCAweDQ5MzNjODU3LCAweDRjMzQwMDAwLAotCTB4NDEzMDY4MDAsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDAwMTEsCi0JMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHg0YTAyNjQwMywgMHgwMDAwMDAxZSwKLQkweDU5Y2MwYzA3LCAweDQ4MDY2NDE5LCAweDU5Y2MwYTA3LCAweDQ4MDY2MjE5LAotCTB4NTgzNDA4MDksIDB4NDgwNjYwMDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDQsCi0JMHg0MjAwMDgwMCwgMHg4MDAwMDA0MCwgMHgwMjAxZjgwMCwgMHgwMDAyMDg1NSwKLQkweDQwMzY2MDAwLCAweDAyMDFmODAwLCAweDAwMDIwOGI0LCAweDVjMDA2ODAwLAotCTB4MWMwMWYwMDAsIDB4NDkzM2M4NTcsIDB4MDIwMWYwMDAsIDB4MDAwMjA4YjQsCi0JMHg1OTMwMDgwOSwgMHg1ODA0MDIwMCwgMHg4YzAwMDUxYSwgMHgwMjAyMDgwMCwKLQkweDAwMTAwNmJhLCAweDFjMDFmMDAwLCAweDAyMDFmODAwLCAweDAwMTA0NzJlLAotCTB4MDQwMDAwMWUsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDIsIDB4NTkzMDA0MTQsCi0JMHg4NDAwMDU1OCwgMHg0ODAyNjQxNCwgMHg4YzAwMDUxMiwgMHgwNDAwMDAwNCwKLQkweDU5YTgwMDM5LCAweDQ4MDI2MjA1LCAweDA0MDFmMDA3LCAweDU5YTgwODM5LAotCTB4NTlhODAwMzcsIDB4ODAwNDA0MDAsIDB4ODIwMDA0MDAsIDB4MDAwMDAwMWUsCi0JMHg0ODAyNjIwNSwgMHg1OTMwMDAwOSwgMHg4MjAwMGMwMCwgMHgwMDAwMDAxMSwKLQkweDUwMDQwMDAwLCAweDgwMDAwNTQwLCAweDA0MDAwMDA0LCAweDgyMDAwYzAwLAotCTB4MDAwMDAwMDAsIDB4MDQwMWY3ZmIsIDB4NDUzMDA4MDAsIDB4NDk3YTYwMDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMDAwMSwgMHgxYzAxZjAwMCwgMHg4MjEwMDUwMCwKLQkweGZmZmZmZWVmLCAweDA0MDIwMDFjLCAweDRkMmMwMDAwLCAweDQ5MzdjODU3LAotCTB4NTkzNDA4MTEsIDB4ODMzNDE0MDAsIDB4MDAwMDAwMTEsIDB4ODAwNDA5YzAsCi0JMHgwNDAwMDAwZSwgMHg0MDA0MDAwMCwgMHg4MTMwMDU4MCwgMHgwNDAwMDAwNSwKLQkweDU4MDQwODAwLCAweDgyMDQxNDAwLCAweDAwMDAwMDAwLCAweDA0MDFmN2Y4LAotCTB4NTkzMDA4MDAsIDB4NDk3YTYwMDAsIDB4NDQwNDEwMDAsIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDgzMSwgMHgwNDAxZjAwMiwgMHg0OTMzYzg1NywgMHg1YzAyNTgwMCwKLQkweDQ5MmU2MDA4LCAweDAyMDFmODAwLCAweDAwMDIwODMxLCAweDAyMDFmMDAwLAotCTB4MDAwMjA4YjQsIDB4NDkyZmM4NTcsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMDYsCi0JMHgwMjAxZjAwMCwgMHgwMDAyMDM4MSwgMHg0YzM0MDAwMCwgMHg1OTMwMDAwOSwKLQkweDgwMDAwMWMwLCAweDA0MDAwMDEwLCAweDgyMDA2YzAwLCAweDAwMDAwMDExLAotCTB4NTAzNDAwMDAsIDB4ODAwMDA1NDAsIDB4MDQwMDAwMDksIDB4ODEzMDA1ODAsCi0JMHgwNDAwMDAwNSwgMHg1MDM0MDAwMCwgMHg4MjAwNmMwMCwgMHgwMDAwMDAwMCwKLQkweDA0MDFmN2Y4LCAweDU5MzAwMDAwLCAweDQ0MDA2ODAwLCAweDVjMDA2ODAwLAotCTB4MWMwMWYwMDAsIDB4NTkzMDBjMDYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDUsCi0JMHgwNDAwMDdmYiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAxMSwgMHgwNDAwMDdmOCwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDA2LCAweDA0MDAwN2Y1LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMDEsIDB4MDQwMDA3ZjIsIDB4MDIwMWY4MDAsIDB4MDAxMDA2MTUsCi0JMHg0OTMzYzg1NywgMHg0YzA4MDAwMCwgMHg0YzBjMDAwMCwgMHg0YzU4MDAwMCwKLQkweDU5YTgxMDFkLCAweDU5Y2MxODA3LCAweDgyMGMxZDAwLCAweDAwZmZmZmZmLAotCTB4ODAwYzAxMTAsIDB4ODAwODM1ODAsIDB4MDQwMjAwMTQsIDB4ODNjYzE0MDAsCi0JMHgwMDAwMDAwOCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwMiwgMHg1OTMwMDAwOSwKLQkweDgyMDAxYzAwLCAweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTA4MmZmLAotCTB4MDQwMjAwMGEsIDB4ODNjYzE0MDAsIDB4MDAwMDAwMGEsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwMiwgMHg1OTMwMDAwOSwgMHg4MjAwMWMwMCwgMHgwMDAwMDAwOCwKLQkweDAyMDFmODAwLCAweDAwMTA4MmZmLCAweDVjMDBiMDAwLCAweDVjMDAxODAwLAotCTB4NWMwMDEwMDAsIDB4MWMwMWYwMDAsIDB4NDkzM2M4NTYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDA0YiwgMHgwMjAxZjAwMCwgMHgwMDEwMWJmMCwgMHg0OTNiYzg1NywKLQkweDRkMmMwMDAwLCAweDAyMDFmODAwLCAweDAwMTAwODJhLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4ODMyY2FjMDAsIDB4MDAwMDAwMDUsIDB4NGM1ODAwMDAsCi0JMHg0YzU0MDAwMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwNiwgMHg0NTc4YTgwMCwKLQkweDgwNTRhODAwLCAweDgwNThiMDQwLCAweDA0MDIwN2ZkLCAweDgzMzgwNTgwLAotCTB4MDAwMDAwNDYsIDB4MDQwMjAwMDQsIDB4NGEwMjVhMDQsIDB4MDAwMDAxNDQsCi0JMHgwNDAxZjAwOCwgMHg0YTAyNWEwNCwgMHgwMDAwMDE0NiwgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDQxLCAweDA0MDAwMDAzLCAweDRhMDI1YTA2LCAweDAwMDAwMDAxLAotCTB4NTljYzAwMDcsIDB4ODIwMDA1MDAsIDB4ZmYwMDAwMDAsIDB4ODAwMDAxMTAsCi0JMHg1OWNjMTAwOCwgMHg4MjA4MTUwMCwgMHhmZjAwMDAwMCwgMHg4MDA4MTU0MCwKLQkweDQ4MGE1ODBhLCAweDgzMzgwNTgwLCAweDAwMDAwMDQ2LCAweDA0MDIwMDA2LAotCTB4NTljYzAwMDcsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4NDgwMjU4MGIsCi0JMHgwNDAxZjAwNSwgMHg1OWNjMDAwOCwgMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwKLQkweDQ4MDI1ODBiLCAweDgzMzgwNTgwLCAweDAwMDAwMDQ2LCAweDA0MDIwMDA0LAotCTB4ODNjYzE0MDAsIDB4MDAwMDAwMDksIDB4MDQwMWYwMDMsIDB4ODNjYzE0MDAsCi0JMHgwMDAwMDAwZCwgMHg1MDA4MDAwMCwgMHg5YzAwMDFjMCwgMHg0ODAyNTgwYywKLQkweDgwMDgxMDAwLCAweDUwMDgwMDAwLCAweDljMDAwMWMwLCAweDQ4MDI1ODBkLAotCTB4ODMzODA1ODAsIDB4MDAwMDAwNDYsIDB4MDQwMjAwMDgsIDB4NTljYzAwMGIsCi0JMHg5YzAwMDFjMCwgMHg0ODAyNTgwZSwgMHg1OWNjMDAwYywgMHg5YzAwMDFjMCwKLQkweDQ4MDI1ODBmLCAweDA0MDFmMDA3LCAweDU5Y2MwMDBmLCAweDljMDAwMWMwLAotCTB4NDgwMjU4MGUsIDB4NTljYzAwMTAsIDB4OWMwMDAxYzAsIDB4NDgwMjU4MGYsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDA0NiwgMHgwNDAyMDAwNCwgMHg4M2NjMTQwMCwKLQkweDAwMDAwMDExLCAweDA0MDFmMDAzLCAweDgzY2MxNDAwLCAweDAwMDAwMDE1LAotCTB4NDEyYzMwMDAsIDB4ODIxODM0MDAsIDB4MDAwMDAwMTAsIDB4NDIwMGIwMDAsCi0JMHgwMDAwMDAwNCwgMHg1MDA4MDAwMCwgMHg5YzAwMDFjMCwgMHg0NDAwMzAwMCwKLQkweDgwMDgxMDAwLCAweDgwMTgzMDAwLCAweDgwNThiMDQwLCAweDA0MDIwN2ZhLAotCTB4NWMwMGE4MDAsIDB4NWMwMGIwMDAsIDB4MDIwMWY4MDAsIDB4MDAwMjAzODEsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0OTMzYzg1NywgMHg0OTJmYzg1NywKLQkweDU5MzAwODA5LCAweDU4MDQwMjAwLCAweDhjMDAwNTFlLCAweDA0MDAwMDA0LAotCTB4NTkyYzAyMDgsIDB4ODQwMDA1NTgsIDB4NDgwMjVhMDgsIDB4MWMwMWYwMDAsCi0JMHg1OWUwMTgwZiwgMHg1OTljMDQxMywgMHg4MDBjMTAwMCwgMHg4MDA4MDU4MCwKLQkweDA0MDIwMDAyLCAweDQxNzgxMDAwLCAweDU5ZTAwMDEwLCAweDU5ZTAwODEwLAotCTB4ODAwNDBkODAsIDB4MDQwMjA3ZmQsIDB4ODAwODA1ODAsIDB4MDQwMDAwMGIsCi0JMHg0YzA4MDAwMCwgMHg1OTljMDgxNCwgMHg1OTljMTAxNSwgMHg4MDBjMDBjYywKLQkweDgwMDQwYzAwLCAweDgyMDgxNDQwLCAweDAwMDAwMDAwLCAweDVjMDAxODAwLAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsIDB4NDgwM2M4NTcsIDB4MWMwMWYwMDAsCi0JMHg1OTMwMDIwMywgMHg0OTMzYzg1NywgMHg0OTM3Yzg1NywgMHg0OTNiYzg1NywKLQkweDQ4MDNjODU3LCAweDgyMDAzNDgwLCAweDAwMDAwMDBlLCAweDAyMDIxODAwLAotCTB4MDAxMDA2MTUsIDB4MGMwMWYwMDEsIDB4MDAxMGE0ZTgsIDB4MDAxMGE2M2EsCi0JMHgwMDEwYTRlOCwgMHgwMDEwYTRlOCwgMHgwMDEwYTRlOCwgMHgwMDEwYTRlOCwKLQkweDAwMTBhNGU4LCAweDAwMTBhNTlmLCAweDAwMTBhNGVhLCAweDAwMTBhNGU4LAotCTB4MDAxMGE0ZTgsIDB4MDAxMGE0ZTgsIDB4MDAxMGE0ZTgsIDB4MDAxMGE0ZTgsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg4MzM4MDU4MCwgMHgwMDAwMDA0YywKLQkweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDAyMDFmODAwLCAweDAwMTA0NzNiLAotCTB4MDQwMjAwMjAsIDB4NTlhODA4MjYsIDB4ODIwNDA1MDAsIDB4MDAwMDAwMDksCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwOCwgMHgwNDAwMDAxYSwgMHg4YzA0MGQxMiwKLQkweDA0MDAwMDNkLCAweDU5Y2MwODA2LCAweDgyMDQwZDAwLCAweGZmMDAwMDAwLAotCTB4ODIwNDA1ODAsIDB4MDMwMDAwMDAsIDB4MDQwMDAwMWYsIDB4ODIwNDA1ODAsCi0JMHg1MDAwMDAwMCwgMHgwNDAwMDAwNSwgMHg4MjA0MDU4MCwgMHg1MjAwMDAwMCwKLQkweDAyMDIwMDAwLCAweDAwMDIwOGI0LCAweDgxMzY2OWMwLCAweDA0MDAwMDA2LAotCTB4NGQzYzAwMDAsIDB4NDE3YTc4MDAsIDB4MDIwMWY4MDAsIDB4MDAxMDFkZTIsCi0JMHg1YzAyNzgwMCwgMHg0YTAyNjQwMywgMHgwMDAwMDAwMSwgMHgwNDAxZjAxNCwKLQkweDU5Y2MwODA2LCAweDgyMDQwZDAwLCAweGZmMDAwMDAwLCAweDgyMDQwNTgwLAotCTB4MDMwMDAwMDAsIDB4MDQwMDAwMDgsIDB4ODIwNDA1ODAsIDB4NTAwMDAwMDAsCi0JMHgwNDAwMDAwNSwgMHg4MjA0MDU4MCwgMHg1MjAwMDAwMCwgMHgwMjAyMDAwMCwKLQkweDAwMDIwOGI0LCAweDRhMDI2NDAzLCAweDAwMDAwMDA5LCAweDRhMDI2NDFhLAotCTB4MDAwMDAwMDksIDB4NGEwMjYyMWEsIDB4MDAwMDAwMDAsIDB4ODEzNjY5YzAsCi0JMHgwNDAyMDAwYiwgMHg1OWNjMDAwMSwgMHgwMjAxZjgwMCwgMHgwMDEwNTliOSwKLQkweDAyMDIwMDAwLCAweDAwMDIwOGI0LCAweDAyMDFmODAwLCAweDAwMTA0M2ZjLAotCTB4MDIwMjAwMDAsIDB4MDAwMjA4YjQsIDB4NDkzNjYwMDksIDB4NGEwMjY0MDYsCi0JMHgwMDAwMDAwNCwgMHg0YTAyNjIwMywgMHgwMDAwMDAwMSwgMHgwMjAxZjAwMCwKLQkweDAwMTA2NDcwLCAweDAyMDFmODAwLCAweDAwMTAzOTNlLCAweDA0MDAwMDIzLAotCTB4NTljYzA4MDYsIDB4NDgwN2M4NTcsIDB4ODIwNDBkMDAsIDB4ZmYwMDAwMDAsCi0JMHg4MjA0MDU4MCwgMHgwMzAwMDAwMCwgMHgwNDAwMDAzMywgMHg4MjA0MDU4MCwKLQkweDIwMDAwMDAwLCAweDA0MDAwMDQxLCAweDgyMDQwNTgwLCAweDIxMDAwMDAwLAotCTB4MDQwMDAwNTIsIDB4ODIwNDA1ODAsIDB4MjQwMDAwMDAsIDB4MDQwMDAwNGYsCi0JMHg4MjA0MDU4MCwgMHg1MDAwMDAwMCwgMHgwNDAwMDA0YywgMHg4MjA0MDU4MCwKLQkweDUyMDAwMDAwLCAweDA0MDAwMDQ5LCAweDgyMDQwNTgwLCAweDA1MDAwMDAwLAotCTB4MDQwMjAwMGQsIDB4NTljYzA4MDYsIDB4ODIwNDBkMDAsIDB4ZmYwMDAwMDAsCi0JMHg5YzA0MzFjMCwgMHg0MjAyODAwMCwgMHgwMDAwMDA0NiwgMHg0MjAwMjgwMCwKLQkweDAwMDAwMDAxLCAweDA0MDFmY2Y3LCAweDA0MDFmOTQwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NDIwMDIwMDAsIDB4MDAwMDAwNTEsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNzdkMSwgMHg1OWNjMDAwMCwgMHg4MjAwMDUwMCwgMHgwMGZmZmZmZiwKLQkweDgyMDAwNTgwLCAweDAwZmZmZmZmLCAweDA0MDAwMDA1LCAweDRhMDI2MjAzLAotCTB4MDAwMDAwMDcsIDB4NDkzYTY0MDMsIDB4MWMwMWYwMDAsIDB4NTkzMjU4MTcsCi0JMHg4MTJlNTljMCwgMHgwMjAyMDgwMCwgMHgwMDEwMDg0MywgMHgwMjAxZjAwMCwKLQkweDAwMDIwOGI0LCAweDgxMzY2OWMwLCAweDA0MDAwN2RmLCAweDU5MzQwNDAwLAotCTB4ODIwMDA1MDAsIDB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAyMDdkOSwgMHgwNDAxZmM3MywgMHgwNDAyMDdkNywgMHg0YTAyNjQwMywKLQkweDAwMDAwMDA5LCAweDRhMDI2NDFhLCAweDAwMDAwMDBlLCAweDRhMDI2MjFhLAotCTB4MDAwMDE5MDAsIDB4MDQwMWY3YTIsIDB4ODEzNjY5YzAsIDB4MDQwMDAwMGMsCi0JMHg1OTM0MGMwMCwgMHg4MjA0MDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwKLQkweDAwMDAwMDA5LCAweDA0MDAwNzk0LCAweDgyMDQwNTAwLCAweDAwMDBmZjAwLAotCTB4ODIwMDA1ODAsIDB4MDAwMDA3MDAsIDB4MDQwMjA3YzMsIDB4NGEwMjY0MDMsCi0JMHgwMDAwMDAwOSwgMHg0YTAyNjQxYSwgMHgwMDAwMDAwOSwgMHg0YTAyNjIxYSwKLQkweDAwMDAxZTAwLCAweDA0MDFmNzhlLCAweDgxMzY2OWMwLCAweDA0MDAwN2Y4LAotCTB4NTkzNDBjMDAsIDB4ODIwNDA1MDAsIDB4MDAwMGZmMDAsIDB4ODIwMDA1ODAsCi0JMHgwMDAwMDcwMCwgMHgwNDAwMDdmMiwgMHgwNDAxZjdiMywgMHg0ZDJjMDAwMCwKLQkweDRjNTgwMDAwLCAweDRjNTAwMDAwLCAweDRjNTQwMDAwLCAweDQxMzg1MDAwLAotCTB4ODMzODA1ODAsIDB4MDAwMDAwNTQsIDB4MDIwMjA4MDAsIDB4MDAxMDA2MTUsCi0JMHg1OTMyNTgwOCwgMHg1OTJjMGMwYiwgMHg4MjA0MGQwMCwgMHgwMDAwZTAwMCwKLQkweDgyMDQwNTgwLCAweDAwMDAyMDAwLCAweDA0MDIwMDc2LCAweDU5MzAwODE3LAotCTB4ODAwNDA5YzAsIDB4MDQwMDAwMTQsIDB4NTgwNDE0MDQsIDB4NDFjY2E4MDAsCi0JMHg4MjA0YTQwMCwgMHgwMDAwMDAwNSwgMHg4MjA4MDQ4MCwgMHgwMDAwMDAxMCwKLQkweDA0MDIxMDA0LCAweDQwMDhiMDAwLCAweDA0MDFmYjg0LCAweDA0MDFmMDBhLAotCTB4NDAwMDEwMDAsIDB4NDIwMGIwMDAsIDB4MDAwMDAwMGYsIDB4MDQwMWZiN2YsCi0JMHg1ODA0MDgwMSwgMHg4MDA0MDljMCwgMHgwNDAyMDdmMiwgMHgwMjAxZjgwMCwKLQkweDAwMTAwNjE1LCAweDgxMzY2OWMwLCAweDA0MDAwMDVlLCAweDU5MzQ0YzAwLAotCTB4NTkyYzBjMDksIDB4NDgwN2M4NTcsIDB4NDgyN2M4NTcsIDB4ODIwNDBkMDAsCi0JMHgwMDAwMDBmZiwgMHg4MjA0MDU4MCwgMHgwMDAwMDAwMywgMHgwNDAwMDAyYSwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDA1LCAweDA0MDAwMDMyLCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMjAsIDB4MDQwMDAwMzYsIDB4ODIwNDA1ODAsIDB4MDAwMDAwNTIsCi0JMHgwNDAwMDA0MiwgMHg4MjA0MDU4MCwgMHgwMDAwMDA1MCwgMHgwNDAwMDA0MiwKLQkweDgyMDQwNTgwLCAweDAwMDAwMDIxLCAweDA0MDAwMDA0LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMjQsIDB4MDQwMjAwNDMsIDB4ODIyNDA1MDAsIDB4MDAwMGZmMDAsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwNywgMHgwNDAwMDAwOCwgMHg0MjAwMDgwMCwKLQkweDAwMDAwMDA5LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LCAweDQyMDA1MDAwLAotCTB4MDAwMDAwMGMsIDB4MDQwMWYwMzcsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMzEsCi0JMHg0YTAyNTgwZCwgMHgwMDAwMDAwOSwgMHg1OTM0MDQwMCwgMHg0ODAyNTgwZSwKLQkweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLCAweDAwMTA3Njk4LAotCTB4MDQwMWYwM2QsIDB4MDIwMWY4MDAsIDB4MDAxMDQwZTQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDQ4MCwgMHg0MjAwMDgwMCwgMHgwMDAwMDAwMywgMHgwMjAxZjgwMCwKLQkweDAwMTA0M2M3LCAweDQyMDA1MDAwLCAweDAwMDAwMDA4LCAweDA0MDFmMDIxLAotCTB4NTljYzAwMDcsIDB4MDIwMWY4MDAsIDB4MDAxMDVjMjUsIDB4MDQwMjAwMWQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNDBlNCwgMHgwNDAxZjAxYSwgMHg4MjI0MDUwMCwKLQkweDAwMDBmZjAwLCAweDgyMDAwNTgwLCAweDAwMDAwMDA3LCAweDA0MDAwN2RmLAotCTB4ODIyNDA1MDAsIDB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMDksCi0JMHgwNDAwMDdkYSwgMHgwMjAxZjgwMCwgMHgwMDEwNDRlMSwgMHg0MjAwNTAwMCwKLQkweDAwMDAwMDBhLCAweDA0MDFmMDBiLCAweDQyMDA1MDAwLCAweDAwMDAwMDBlLAotCTB4MDQwMWYwMDMsIDB4NDIwMDUwMDAsIDB4MDAwMDAwMTAsIDB4ODIyNDA1MDAsCi0JMHgwMDAwZmYwMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNywgMHgwNDAwMDdjYiwKLQkweDQ4MmE2NDAzLCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDU5MmMwMDBkLAotCTB4NDgwMjYwMTEsIDB4NDk3YTYwMTMsIDB4NTlhODAwMzgsIDB4NDgwMjYyMDYsCi0JMHg0MTdhNzgwMCwgMHgwMjAxZjgwMCwgMHgwMDEwNjQ3MCwgMHg1OTMyNTgxNywKLQkweDgxMmU1OWMwLCAweDA0MDAwMDA0LCAweDAyMDFmODAwLCAweDAwMTAwODQzLAotCTB4NDk3YTYwMTcsIDB4NWMwMGE4MDAsIDB4NWMwMGEwMDAsIDB4NWMwMGIwMDAsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg0ZDJjMDAwMCwgMHg1OTMyNTgwOCwKLQkweDgzMzgwNTgwLCAweDAwMDAwMDEzLCAweDA0MDIwMDJhLCAweDQ5MmZjODU3LAotCTB4NTkzMDBjMDMsIDB4ODIwNDA1ODAsIDB4MDAwMDAwNTQsIDB4MDQwMDAwMWUsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAxMCwgMHgwNDAwMDAxOCwgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDBlLCAweDA0MDAwMDE1LCAweDgyMDQwNTgwLCAweDAwMDAwMDA4LAotCTB4MDQwMDAwMGQsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMGMsIDB4MDQwMDAwMGEsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwYSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYxNSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDA2LCAweDAyMDFmODAwLCAweDAwMTA0M2M3LAotCTB4MDQwMWYwMDksIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNDNjNywgMHgwNDAxZjAwNCwgMHg1OTM0MDIwMCwgMHg4NDAwMDUxYSwKLQkweDQ4MDI2YTAwLCAweDRhMDI1YTA2LCAweDAwMDAwMDAwLCAweDAyMDFmODAwLAotCTB4MDAwMjAzODEsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4MDQwMWYwMjQsCi0JMHg4MzM4MDU4MCwgMHgwMDAwMDAyNywgMHgwNDAwMDAwZiwgMHg4MzM4MDU4MCwKLQkweDAwMDAwMDE0LCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDQ5MmZjODU3LAotCTB4MDIwMWY4MDAsIDB4MDAxMDY4ZjYsIDB4NDIwMjgwMDAsIDB4MDAwMDAwMzEsCi0JMHg0MjAwMDgwMCwgMHgwMDAwMDAwNCwgMHg0MjAwMTAwMCwgMHgwMDAwMDBmZiwKLQkweDA0MDFmMDBhLCAweDQ5MmZjODU3LCAweDAyMDFmODAwLCAweDAwMTA2OGY2LAotCTB4NDIwMjgwMDAsIDB4MDAwMDAwMzEsIDB4NDIwMDA4MDAsIDB4MDAwMDAwMDQsCi0JMHg0MjAwMTAwMCwgMHgwMDAwMDAxMCwgMHg0OTQyNWEwNiwgMHg0ODA2NTgwZCwKLQkweDQ4MGE1ODBlLCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDAyMDFmODAwLAotCTB4MDAxMDRhODMsIDB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsIDB4NWMwMjU4MDAsCi0JMHgxYzAxZjAwMCwgMHg0OTJmYzg1NywgMHg0MjAwNzAwMCwgMHgwMDEwYjVmNiwKLQkweDU4MzgwODA3LCAweDgwMDQwOWMwLCAweDA0MDIwMDA1LCAweDQ5MmM3MDA4LAotCTB4NDkyYzcwMDcsIDB4MDIwMWYwMDAsIDB4MDAxMDA4YmUsIDB4NDkyYzA4MDAsCi0JMHg0OTJjNzAwNywgMHgxYzAxZjAwMCwgMHg0ZDJjMDAwMCwgMHg0YzU4MDAwMCwKLQkweDRjNTAwMDAwLCAweDRjNTQwMDAwLCAweDQ5MzNjODU3LCAweDQ5MzdjODU3LAotCTB4NTljYzA4MDYsIDB4NDgwN2M4NTcsIDB4ODIwNDBkMDAsIDB4ZmYwMDAwMDAsCi0JMHg4MjA0MDU4MCwgMHgwMzAwMDAwMCwgMHgwNDAwMDAwZCwgMHg4MjA0MDU4MCwKLQkweDA1MDAwMDAwLCAweDA0MDAwMDBhLCAweDgyMDQwNTgwLCAweDIxMDAwMDAwLAotCTB4MDQwMDAwMzAsIDB4ODIwNDA1ODAsIDB4MjQwMDAwMDAsIDB4MDQwMDAwMmQsCi0JMHg4MjA0MDU4MCwgMHgyMDAwMDAwMCwgMHgwNDAyMDAyZiwgMHgwMjAxZjgwMCwKLQkweDAwMTAwODJhLCAweDA0MDAwMDJjLCAweDQ5MmZjODU3LCAweDQ5MmU2MDE3LAotCTB4NTlhOGIwMTYsIDB4ODI1OGI0MDAsIDB4MDAwMDAwMWIsIDB4ODI1OGI1MDAsCi0JMHhmZmZmZmZmYywgMHg4MDU4YjEwNCwgMHg0ODVhNWMwNCwgMHg0MTJjNzgwMCwKLQkweDQxY2NhMDAwLCAweDgyNTgwNDgwLCAweDAwMDAwMDEwLCAweDA0MDIxMDA1LAotCTB4ODMyY2FjMDAsIDB4MDAwMDAwMDUsIDB4MDQwMWZhNzgsIDB4MDQwMWYwMTUsCi0JMHg0MDU4MDgwMCwgMHg0MjAwYjAwMCwgMHgwMDAwMDAwZiwgMHg4MzJjYWMwMCwKLQkweDAwMDAwMDA1LCAweDA0MDFmYTcxLCAweDgyMDRiNDgwLCAweDAwMDAwMDBmLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4MmEsIDB4MDQwMDAwMDQsIDB4NDkyYzc4MDEsCi0JMHg0MTJjNzgwMCwgMHgwNDAxZjdlYywgMHg1OTMyNTgxNywgMHgwMjAxZjgwMCwKLQkweDAwMTAwODQzLCAweDQ5N2E2MDE3LCAweDgwMDAwNTgwLCAweDA0MDFmMDA2LAotCTB4NTkzNDAyMDAsIDB4ODQwMDA1NTQsIDB4NDgwMjZhMDAsIDB4ODIwMDA1NDAsCi0JMHgwMDAwMDAwMSwgMHg1YzAwYTgwMCwgMHg1YzAwYTAwMCwgMHg1YzAwYjAwMCwKLQkweDVjMDI1ODAwLCAweDFjMDFmMDAwLCAweDQ5MzNjODU3LCAweDQ5MmZjODU3LAotCTB4NGQyYzAwMDAsIDB4NGM1YzAwMDAsIDB4NTkzMGJjMDYsIDB4NTkzMDBhMDMsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwNywgMHgwNDAwMDAzYywgMHg4MjA0MDU4MCwKLQkweDAwMDAwMDAxLCAweDAyMDIwODAwLCAweDAwMTAwNjE1LCAweDAyMDFmODAwLAotCTB4MDAxMDY5OGMsIDB4NGRmMDAwMDAsIDB4NTk4YzAwMGQsIDB4ODEzMDA1ODAsCi0JMHgwNDAyMDAxOSwgMHg1OTMwMDAwNCwgMHg4YzAwMDUyMCwgMHgwNDAwMDAwNCwKLQkweDg0MDAwNTIwLCAweDQ4MDI2MDA0LCAweDA0MDFmMDE5LCAweDgyNWMwNTgwLAotCTB4MDAwMDAwMTEsIDB4MDQwMjAwMGQsIDB4NDIwMDEwMDAsIDB4MDAxMGI1ZjQsCi0JMHg1MDA4MTAwMCwgMHg1ODA4MDAwMiwgMHg4MjAwMDU4MCwgMHgwMDAwMDEwMCwKLQkweDA0MDAwMDA2LCAweDU4MDgwMDBjLCAweDgxMzAwNTgwLCAweDAyMDIwODAwLAotCTB4MDAxMDA2MTUsIDB4MDQwMWYwMGEsIDB4MDIwMWY4MDAsIDB4MDAxMDZiZTIsCi0JMHgwNDAyMDAyNywgMHg1OTMwMDAwNCwgMHg4YzAwMDUyMCwgMHgwNDAwMDAwNCwKLQkweDg0MDAwNTIwLCAweDQ4MDI2MDA0LCAweDA0MDFmMDAzLCAweDAyMDFmODAwLAotCTB4MDAxMDY2MTksIDB4NWMwM2UwMDAsIDB4MDIwMDA4MDAsIDB4MDAxMDY5ODIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwOGRmNCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDU5MzI1ODA4LCAweDRhMDI1YTA2LCAweDAwMDAwMDA1LCAweDAyMDFmODAwLAotCTB4MDAwMjAzODEsIDB4ODI1YzA1ODAsIDB4MDAwMDAwMDUsIDB4MDQwMDAwMWIsCi0JMHgwMjAxZjgwMCwgMHgwMDEwNGE4MywgMHg4MjVjMDU4MCwgMHgwMDAwMDAwNSwKLQkweDA0MDAwMDE2LCAweDU5MzI1ODE3LCAweDgxMmU1OWMwLCAweDAyMDIwODAwLAotCTB4MDAxMDA4NDMsIDB4MDIwMWY4MDAsIDB4MDAxMDc2OTgsIDB4ODAwMDA1ODAsCi0JMHg1YzAwYjgwMCwgMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHg1YzAzZTAwMCwKLQkweDAyMDAwODAwLCAweDAwMTA2OTgyLCAweDU5MzAwYzA2LCAweDgyMDQwNTgwLAotCTB4MDAwMDAwMTEsIDB4MDQwMDA3YWUsIDB4ODIwNDA1ODAsIDB4MDAwMDAwMDUsCi0JMHgwNDAwMDdhYiwgMHgwNDAxZjdmMywgMHgwMjAxZjgwMCwgMHgwMDAyMDhiNCwKLQkweDA0MDFmN2VmLCAweDRjMDQwMDAwLCAweDU5MzQwMjAwLCAweDQ4MDNjODU3LAotCTB4OGMwMDA1MWMsIDB4MDQwMDAwMDksIDB4NTljYzA4MDUsIDB4NTkxYzAwMTksCi0JMHg0ODAzYzg1NywgMHg4MDA0MDU4MCwgMHgwNDAwMDAwNCwgMHg4MDAwMDU4MCwKLQkweDQ4MDNjODU2LCAweDA0MDFmMDAzLCAweDgyMDAwNTQwLCAweDAwMDAwMDAxLAotCTB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsIDB4NGMwYzAwMDAsCi0JMHg0YzEwMDAwMCwgMHg0MjAwMTgwMCwgMHgwMDAwZmZmZiwgMHg0MjAwMjAwMCwKLQkweDAwMDAwMDA0LCAweDA0MDFmMDEzLCAweDRjMDAwMDAwLCAweDRjMGMwMDAwLAotCTB4NGMxMDAwMDAsIDB4NTkzMDIwMDksIDB4NTgxMDFjMDMsIDB4NDIwMDIwMDAsCi0JMHgwMDAwMDAwNCwgMHgwNDAxZjAwYiwgMHg0YzAwMDAwMCwgMHg0YzBjMDAwMCwKLQkweDRjMTAwMDAwLCAweDU5MzAyMDA5LCAweDgwMTAyMWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTgxMDFjMDMsIDB4NDIwMDIwMDAsIDB4MDAwMDAwMDcsCi0JMHg0ODBmYzg1NywgMHg0ODEzYzg1NywgMHg0ODFiYzg1NywgMHgwMjAxZjgwMCwKLQkweDAwMTAzOGM3LCAweDVjMDAyMDAwLCAweDVjMDAxODAwLCAweDVjMDAwMDAwLAotCTB4MWMwMWYwMDAsIDB4ODMzODA1ODAsIDB4MDAwMDAwOTIsIDB4MDIwMjA4MDAsCi0JMHgwMDEwMDYxNSwgMHg0MjAwMDgwMCwgMHg4MDAwMDA0MCwgMHg0YTAyNjIwMywKLQkweDAwMDAwMDAxLCAweDQ5M2E2NDAzLCAweDAyMDFmMDAwLCAweDAwMDIwODU1LAotCTB4NGQ0MDAwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDM5M2UsIDB4MDQwMDAwMDgsCi0JMHg1OWE4MDAwNSwgMHg4NDAwMDU0NCwgMHg0ODAzNTAwNSwgMHg0MjAyODAwMCwKLQkweDAwMDAwMDJhLCAweDAyMDFmODAwLCAweDAwMTBhMjViLCAweDVjMDI4MDAwLAotCTB4MWMwMWYwMDAsIDB4NTlhODAwMjYsIDB4OGMwMDA1MDgsIDB4MDQwMDAwMDUsCi0JMHg1OTljMDAxNywgMHg4YzAwMDUwYSwgMHgwNDAyMDAwMiwgMHgxYzAxZjAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAwMDAxLCAweDFjMDFmMDAwLCAweDU5MzAwNDIwLAotCTB4ODQwMDA1NDAsIDB4NDgwMjY0MjAsIDB4MWMwMWYwMDAsIDB4NDgxN2M4NTcsCi0JMHg0YzAwMDAwMCwgMHg0YzA0MDAwMCwgMHg4YzE0MmQyYSwgMHgwNDAwMDAwNCwKLQkweDU5ODgwMGI5LCAweDgwMDAwMDAwLCAweDQ4MDMxMGI5LCAweDhjMTQyZDJlLAotCTB4MDQwMDAwMDQsIDB4NTk4ODAwYmEsIDB4ODAwMDAwMDAsIDB4NDgwMzEwYmEsCi0JMHg4YzE0MmQyYywgMHgwNDAwMDAxMywgMHg0MDE0MDAwMCwgMHg4MjAwMDUwMCwKLQkweDAwMDcwMDAwLCAweDgyMDAwZDgwLCAweDAwMDMwMDAwLCAweDA0MDAwMDBkLAotCTB4ODIwMDBkODAsIDB4MDAwNDAwMDAsIDB4MDQwMDAwMGEsIDB4ODIwMDBkODAsCi0JMHgwMDA1MDAwMCwgMHgwNDAwMDAwNywgMHg1OTg4MDAwNSwgMHg4MDAwMDAwMCwKLQkweDQ4MDMxMDA1LCAweDU5ODgwMGJiLCAweDgwMDAwMDAwLCAweDQ4MDMxMGJiLAotCTB4NWMwMDA4MDAsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDgxN2M4NTcsCi0JMHg0YzAwMDAwMCwgMHg0YzA0MDAwMCwgMHg4YzE0MmQyYSwgMHgwNDAwMDAwNCwKLQkweDU5ODgwMGJjLCAweDgwMDAwMDAwLCAweDQ4MDMxMGJjLCAweDhjMTQyZDJlLAotCTB4MDQwMDAwMDQsIDB4NTk4ODAwYmQsIDB4ODAwMDAwMDAsIDB4NDgwMzEwYmQsCi0JMHg4YzE0MmQyYywgMHgwNDAwMDAxMywgMHg0MDE0MDAwMCwgMHg4MjAwMDUwMCwKLQkweDAwMDcwMDAwLCAweDgyMDAwZDgwLCAweDAwMDMwMDAwLCAweDA0MDAwMDBkLAotCTB4ODIwMDBkODAsIDB4MDAwNDAwMDAsIDB4MDQwMDAwMGEsIDB4ODIwMDBkODAsCi0JMHgwMDA1MDAwMCwgMHgwNDAwMDAwNywgMHg1OTg4MDAwNSwgMHg4MDAwMDAwMCwKLQkweDQ4MDMxMDA1LCAweDU5ODgwMGJlLCAweDgwMDAwMDAwLCAweDQ4MDMxMGJlLAotCTB4NWMwMDA4MDAsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsCi0JMHg1OTg4MDAwMSwgMHg4MDAwMDAwMCwgMHg0ODAzYzg1NywgMHg0ODAzMTAwMSwKLQkweDVjMDAwMDAwLCAweDFjMDFmMDAwLCAweDRjMDAwMDAwLCAweDU5ODgwMDAwLAotCTB4ODAwMDAwMDAsIDB4NDgwM2M4NTcsIDB4NDgwMzEwMDAsIDB4NWMwMDAwMDAsCi0JMHgxYzAxZjAwMCwgMHg0YzAwMDAwMCwgMHg1OTg4MDAwMiwgMHg4MDAwMDAwMCwKLQkweDQ4MDNjODU3LCAweDQ4MDMxMDAyLCAweDVjMDAwMDAwLCAweDFjMDFmMDAwLAotCTB4NDgwN2M4NTcsIDB4NGMwMDAwMDAsIDB4OGMwNDBkMmMsIDB4MDQwMDAwMDQsCi0JMHg1OTg4MDBhNywgMHg4MDAwMDAwMCwgMHg0ODAzMTBhNywgMHg4YzA0MGQyYSwKLQkweDA0MDAwMDA0LCAweDU5ODgwMGE4LCAweDgwMDAwMDAwLCAweDQ4MDMxMGE4LAotCTB4OGMwNDBkMjgsIDB4MDQwMDAwMDQsIDB4NTk4ODAwYTksIDB4ODAwMDAwMDAsCi0JMHg0ODAzMTBhOSwgMHg4YzA0MGQyNiwgMHgwNDAwMDAwNCwgMHg1OTg4MDBhYSwKLQkweDgwMDAwMDAwLCAweDQ4MDMxMGFhLCAweDhjMDQwZDI0LCAweDA0MDAwMDA0LAotCTB4NTk4ODAwYWIsIDB4ODAwMDAwMDAsIDB4NDgwMzEwYWIsIDB4OGMwNDBkMjIsCi0JMHgwNDAwMDAwNCwgMHg1OTg4MDBhYywgMHg4MDAwMDAwMCwgMHg0ODAzMTBhYywKLQkweDhjMDQwZDIwLCAweDA0MDAwMDA0LCAweDU5ODgwMGFkLCAweDgwMDAwMDAwLAotCTB4NDgwMzEwYWQsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsIDB4NDgwN2M4NTcsCi0JMHg0YzAwMDAwMCwgMHg1OTg4MDBhZSwgMHg4MDAwMDAwMCwgMHg0ODAzMTBhZSwKLQkweDVjMDAwMDAwLCAweDFjMDFmMDAwLCAweDQ4MDdjODU3LCAweDRjMDAwMDAwLAotCTB4OGMwNDBkMWMsIDB4MDQwMDAwMDQsIDB4NTk4ODAwYWYsIDB4ODAwMDAwMDAsCi0JMHg0ODAzMTBhZiwgMHg4YzA0MGQxYSwgMHgwNDAwMDAwNCwgMHg1OTg4MDBiMCwKLQkweDgwMDAwMDAwLCAweDQ4MDMxMGIwLCAweDVjMDAwMDAwLCAweDFjMDFmMDAwLAotCTB4NDgwN2M4NTcsIDB4NGMwMDAwMDAsIDB4OGMwNDBkMTgsIDB4MDQwMDAwMDQsCi0JMHg1OTg4MDBiMSwgMHg4MDAwMDAwMCwgMHg0ODAzMTBiMSwgMHg4YzA0MGQxNiwKLQkweDA0MDAwMDA0LCAweDU5ODgwMGIyLCAweDgwMDAwMDAwLCAweDQ4MDMxMGIyLAotCTB4OGMwNDBkMTQsIDB4MDQwMDAwMDQsIDB4NTk4ODAwYjMsIDB4ODAwMDAwMDAsCi0JMHg0ODAzMTBiMywgMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHg0ODA3Yzg1NywKLQkweDRjMDAwMDAwLCAweDhjMDQwZDEwLCAweDA0MDAwMDA0LCAweDU5ODgwMGI0LAotCTB4ODAwMDAwMDAsIDB4NDgwMzEwYjQsIDB4OGMwNDBkMGMsIDB4MDQwMDAwMDQsCi0JMHg1OTg4MDBiNSwgMHg4MDAwMDAwMCwgMHg0ODAzMTBiNSwgMHg1YzAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDQ4MDdjODU3LCAweDRjMDAwMDAwLCAweDhjMDQwZDA4LAotCTB4MDQwMDAwMDQsIDB4NTk4ODAwYjYsIDB4ODAwMDAwMDAsIDB4NDgwMzEwYjYsCi0JMHg4YzA0MGQwNCwgMHgwNDAwMDAwNCwgMHg1OTg4MDBiNywgMHg4MDAwMDAwMCwKLQkweDQ4MDMxMGI3LCAweDVjMDAwMDAwLCAweDFjMDFmMDAwLCAweDQ4MDdjODU2LAotCTB4NGMwMDAwMDAsIDB4NTk4ODAwODAsIDB4ODAwMDAwMDAsIDB4NDgwMzEwODAsCi0JMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHg0ODAzYzg1NywgMHg0YzA0MDAwMCwKLQkweDUwMDAwODAwLCAweDgwMDQwODAwLCAweDQ4MDdjODU3LCAweDQ0MDQwMDAwLAotCTB4NWMwMDA4MDAsIDB4MWMwMWYwMDAsIDB4NDgwZmM4NTcsIDB4NGMwMDAwMDAsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMDAwMCwgMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjE3LCAweDA0MDFmMDE0LCAweDgyMGMwNTgwLCAweDAwMDAxMDAxLAotCTB4MDQwMjAwMDQsIDB4NDIwMDAwMDAsIDB4MDAxMGI2MTgsIDB4MDQwMWYwMGUsCi0JMHg4MjBjMDU4MCwgMHgwMDAwMTAwMiwgMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwKLQkweDAwMTBiNjE5LCAweDA0MDFmMDA4LCAweDgyMGMwYzgwLCAweDAwMDAyMDFjLAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4ODIwYzA1MDAsIDB4MDAwMDAwMWYsCi0JMHgwYzAxZjgwNCwgMHgwNDAxZmZkZCwgMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwKLQkweDAwMTBhOGIwLCAweDAwMTBhOGIzLCAweDAwMTBhOGI2LCAweDAwMTBhOGI5LAotCTB4MDAxMGE4YmMsIDB4MDAxMGE4YmYsIDB4MDAxMGE4YzIsIDB4MDAxMGE4YzUsCi0JMHgwMDEwYThjOCwgMHgwMDEwYThjYiwgMHgwMDEwYThjZSwgMHgwMDEwYThkMSwKLQkweDAwMTBhOGQ0LCAweDAwMTBhOGQ3LCAweDAwMTBhOGRhLCAweDAwMTBhOGRkLAotCTB4MDAxMGE4ZTAsIDB4MDAxMGE4ZTMsIDB4MDAxMGE4ZTYsIDB4MDAxMGE4ZTksCi0JMHgwMDEwYThlYywgMHgwMDEwYThlZiwgMHgwMDEwYThmMiwgMHgwMDEwYThmNSwKLQkweDAwMTBhOGY4LCAweDAwMTBhOGZiLCAweDAwMTBhOGZlLCAweDAwMTBhOTAxLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MWEsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYxYiwgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYxYywKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjFkLCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MWUsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYxZiwgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYyMCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjIxLCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MjIsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYyMywgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYyNCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjI1LCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MjYsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYyNywgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYyOCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjI5LCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MmEsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYyYiwgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYyYywKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjJkLCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MmUsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYyZiwgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzMCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjMxLCAweDFjMDFmMDAwLAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2MzIsIDB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjYzMywgMHgxYzAxZjAwMCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYzNCwKLQkweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiNjM1LCAweDFjMDFmMDAwLAotCTB4NDgwZmM4NTcsIDB4NGMwMDAwMDAsIDB4ODIwYzA1ODAsIDB4MDAwMDAwMDEsCi0JMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYwYywgMHgwNDAxZjAxMiwKLQkweDgyMGMwNTgwLCAweDAwMDAwMDAyLCAweDA0MDIwMDA0LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2MGQsIDB4MDQwMWYwMGMsIDB4ODIwYzA1ODAsIDB4MDAwMDAwMDMsCi0JMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDEwYjYwZSwgMHgwNDAxZjAwNiwKLQkweDgyMGMwNTgwLCAweDAwMDAwMDA0LCAweDA0MDIwMDA0LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2MGYsIDB4MDQwMWZmNTEsIDB4NWMwMDAwMDAsIDB4MWMwMWYwMDAsCi0JMHg0YzAwMDAwMCwgMHg1OWE4MDAyNiwgMHg0ODAzYzg1NywgMHg4YzAwMDUwMiwKLQkweDA0MDAwMDEwLCAweDhjMDAwNTA2LCAweDA0MDAwMDA0LCAweDQyMDAwMDAwLAotCTB4MDAxMGI2M2YsIDB4MDQwMWYwMTIsIDB4OGMwMDA1MGEsIDB4MDQwMDAwMDQsCi0JMHg0MjAwMDAwMCwgMHgwMDEwYjYzZSwgMHgwNDAxZjAwZCwgMHg4YzAwMDUwOCwKLQkweDA0MDAwMDA0LCAweDQyMDAwMDAwLCAweDAwMTBiNjQxLCAweDA0MDFmMDA4LAotCTB4MDIwMWY4MDAsIDB4MDAxMDRlMGQsIDB4MDQwMDAwMDYsIDB4OGMwMDA1MDYsCi0JMHgwNDAyMDAwNCwgMHg0MjAwMDAwMCwgMHgwMDEwYjY0MCwgMHgwNDAxZmYzMywKLQkweDVjMDAwMDAwLCAweDFjMDFmMDAwLCAweDgwNThiMWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTQ1MGE4MDAsIDB4ODA1MGEwMDAsIDB4ODA1NGE4MDAsCi0JMHg4MDU4YjA0MCwgMHgwNDAyMDdmYywgMHgxYzAxZjAwMCwgMHg4MDU4YjFjMCwKLQkweDAyMDAwODAwLCAweDAwMTAwNjE1LCAweDQ0NTBhODAwLCAweDgwNTRhODAwLAotCTB4ODA1OGIwNDAsIDB4MDQwMjA3ZmQsIDB4MWMwMWYwMDAsIDB4ODA1OGIxYzAsCi0JMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwgMHg1MDUwMDAwMCwgMHg5YzAwMDFjMCwKLQkweDQ0MDBhODAwLCAweDgwNTBhMDAwLCAweDgwNTRhODAwLCAweDgwNThiMDQwLAotCTB4MDQwMjA3ZmEsIDB4MWMwMWYwMDAsIDB4NGMwMDAwMDAsIDB4NTlhODAwMDgsCi0JMHg4YzAwMDUxYywgMHg1YzAwMDAwMCwgMHgxYzAxZjAwMCwgMHgwMDAwMDAwMSwKLQkweDAwMDAwMDAyLCAweDAwMDAwMDA0LCAweDAwMDAwMDA4LCAweDAwMDAwMDEwLAotCTB4MDAwMDAwMjAsIDB4MDAwMDAwNDAsIDB4MDAwMDAwODAsIDB4MDAwMDAxMDAsCi0JMHgwMDAwMDIwMCwgMHgwMDAwMDQwMCwgMHgwMDAwMDgwMCwgMHgwMDAwMTAwMCwKLQkweDAwMDAyMDAwLCAweDAwMDA0MDAwLCAweDAwMDA4MDAwLCAweDAwMDEwMDAwLAotCTB4ZDI3NjRlMTQKLX07Ci0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdWludDMyX3QgZncyNDAwX2xlbmd0aDAxID0gMHgwMDAwYTk3MSA7Ci0jZWxzZQotdWludDMyX3QgcmlzY19jb2RlX2xlbmd0aDAxID0gMHgwMDAwYTk3MSA7Ci0jZW5kaWYKLQotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVpbnQzMl90IGZ3MjQwMF9hZGRyMDIgPSAweDAwMTBkMDAwICA7Ci0jZWxzZQotdWludDMyX3QgcmlzY19jb2RlX2FkZHIwMiA9IDB4MDAxMGQwMDAgOwotI2VuZGlmCi0KLSNpZmRlZiBVTklRVUVfRldfTkFNRQotdWludDMyX3QgZncyNDAwX2NvZGUwMltdID0gewotI2Vsc2UKLXVpbnQzMl90IHJpc2NfY29kZTAyW10gPSB7Ci0jZW5kaWYKLQkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMTBkMDAwLCAweDAwMDAxNjVlLAotCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMjAwMDAsIDB4MDAwMDA5ZjcsCi0JMHg4MzZjMDU4MCwgMHgwMDAwMDAwMywgMHgwMjAyMDAwMCwgMHgwMDEwMDMxNCwKLQkweDQyMDAwMDAwLCAweDAwMTBiMmI3LCAweDUwMDAwMDAwLCAweDgwMDAwMWMwLAotCTB4MDQwMjA5OGEsIDB4MDQwMWY5NGQsIDB4MDIwMWY4MDAsIDB4MDAwMjA1MjQsCi0JMHgwNDAxZmJmZSwgMHgwMjAxZjgwMCwgMHgwMDAyMDg0YywgMHgwMjAxZjgwMCwKLQkweDAwMDIwNmFmLCAweDA0MDFmN2VmLCAweDU5YjgwMGVhLCAweDgyMDAwZDAwLAotCTB4ZjAwMDAwMzgsIDB4MDIwMjAwMDAsIDB4MDAxMDBhYzMsIDB4OGMwMDA1MTAsCi0JMHgwMjAwMDAwMCwgMHgwMDEwMGFjMiwgMHg1OWJhNjBlMCwgMHg4MTMwMDE4MiwKLQkweDA0MDIxMDRlLCAweDA0MDAyMDMwLCAweDg1MzI2NTNlLCAweDU5MzAwNDA2LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMjgsIDB4NTkzMDAyMDMsCi0JMHg4MjAwMDU4MCwgMHgwMDAwMDAwNCwgMHgwNDAyMDAyNCwgMHg1OTMyNTgwOCwKLQkweDU5MzAwNDAyLCAweDRhMDI1YTA0LCAweDAwMDAwMTAzLCAweDkwMDAwMWMwLAotCTB4NDgwMjU4MDYsIDB4NDk3YTU4MDcsIDB4NDk3YTVjMDksIDB4NTkzMDAwMWYsCi0JMHg4MDAwMDU0MCwgMHgwMjAyMDgwMCwgMHgwMDEwMGQ5YSwgMHg1OTMwMDAwNCwKLQkweDhjMDAwNTNlLCAweDA0MDIwMDEwLCAweDA0MDFmYjQ3LCAweDU5MzI2ODA5LAotCTB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NTkzNDAwMGYsIDB4NTkzNDE0MGIsCi0JMHg4MDA4MTA0MCwgMHgwNDAwMTAwMiwgMHg0ODBhNmMwYiwgMHg4MDAwMDU0MCwKLQkweDA0MDIwYTMxLCAweDU5YjgwMGVhLCAweDhjMDAwNTEwLCAweDA0MDIwN2Q3LAotCTB4MWMwMWYwMDAsIDB4MDIwMWY4MDAsIDB4MDAxMDZjYjQsIDB4MDQwMDA3ZWYsCi0JMHgwMjAxZjAwMCwgMHgwMDEwMGFhZSwgMHg0MjAyNzAwMCwgMHgwMDAwMDA1NSwKLQkweDA0MDFmMDI3LCAweDgzMzI2NTAwLCAweDNmZmZmZmZmLCAweDU5MzAwNDA2LAotCTB4ODIwMDA1ODAsIDB4MDAwMDAwMDMsIDB4MDQwMjAwMTUsIDB4NTkzMjU4MDgsCi0JMHg1OTMyNjgwOSwgMHg1OTMwMTQwMiwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywKLQkweDkwMDgxMWMwLCAweDQ4MGE1ODA2LCAweDQ5N2E1YzA5LCAweDQ5N2E1ODA3LAotCTB4MDQwMWZiMjEsIDB4MDIwMWY4MDAsIDB4MDAwMjA4YjQsIDB4NTkzNDAwMGYsCi0JMHg1OTM0MTQwYiwgMHg4MDA4MTA0MCwgMHgwNDAwMTAwMiwgMHg0ODBhNmMwYiwKLQkweDgwMDAwNTQwLCAweDA0MDIwYTBjLCAweDA0MDFmN2RiLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNTQsIDB4MDQwMWYwMGEsIDB4ODMzMDA1MDAsIDB4NjAwMDAwMDAsCi0JMHgwMjAwMDAwMCwgMHgwMDEwMGFiMSwgMHg4MTMyNjU4MCwgMHg4MDAwMDEzYSwKLQkweDgyMDAwNDAwLCAweDAwMTAwYWM5LCAweDUwMDI3MDAwLCAweDU5MzAwYzA2LAotCTB4ODIwNDA1ODAsIDB4MDAwMDAwMDIsIDB4MDIwMDAwMDAsIDB4MDAxMDBhYWUsCi0JMHg1OTMwMDAwNCwgMHg4YzAwMDUzZSwgMHgwNDAyMDAwNCwgMHgwMjAxZjgwMCwKLQkweDAwMDIwOGQ4LCAweDA0MDFmN2M0LCAweDAyMDFmODAwLCAweDAwMTA2Y2I0LAotCTB4MDQwMDA3ZmIsIDB4MDIwMWYwMDAsIDB4MDAxMDBhYWUsIDB4NTkzMjU4MDgsCi0JMHg0MTJjNzAwMCwgMHg1ODM4MGEwNCwgMHg4MjA0MDUwMCwgMHgwMDAwMDAwZiwKLQkweDgyMDAwYzAwLCAweDAwMTAxMTBkLCAweDUwMDQ0MDAwLCAweDBjMDFmMDAxLAotCTB4MDAxMDBlMjQsIDB4MDAxMDBlMjQsIDB4MDAwMjAwYTAsIDB4MDAxMDBlMjQsCi0JMHgwMDEwMGUyNCwgMHgwMDEwMGUyNCwgMHgwMDEwMGUyNCwgMHgwMDEwMGUyNCwKLQkweDAwMDIwMGIwLCAweDAwMTAwZTM4LCAweDAwMTAwZTI0LCAweDAwMTAwZTI0LAotCTB4MDAxMDBlMjYsIDB4MDAxMDBlMjQsIDB4MDAxMDBlMjQsIDB4MDAxMDBlMjQsCi0JMHg1ODM4MDQwYSwgMHg4YzAwMDUwMCwgMHgwMjAwMDgwMCwgMHgwMDEwMDYxNSwKLQkweDUwMjAwMDAwLCAweDgwMzg3YzAwLCAweDU4M2MxMDAyLCAweDU4M2MyODAwLAotCTB4NTgzYzIwMDEsIDB4NTgzODBhMDcsIDB4NTgzODMwMGYsIDB4NTkzMDM4MDcsCi0JMHg1ODM4NGMwOCwgMHg1ODM4MDAwZCwgMHg0ODAyNjAxMiwgMHgwNDAxZjAxMCwKLQkweDU4MzgwMjBhLCAweDhjMDAwNTAyLCAweDAyMDAwMDAwLCAweDAwMTAwZTI0LAotCTB4NTAyMDAwMDAsIDB4ODAzODdjMDAsIDB4NTgzYzI4MDAsIDB4NTgzYzIwMDEsCi0JMHg1ODNjMTAwMiwgMHg1OTJjMGEwNywgMHg1OTJjNGMwOCwgMHg1OTJjMzAwZiwKLQkweDU5MzAzODA3LCAweDQ5N2E2MDEyLCAweDQ5N2E2MDEzLCAweDQ4MTY2MDBlLAotCTB4NDgxMjYwMGYsIDB4NDgwYTYwMTAsIDB4NDgxYTYwMTEsIDB4ODAwNDA4NDAsCi0JMHg0ODA2NjAwZCwgMHgwMjAyMDAwMCwgMHgwMDEwMGU2NSwgMHg4NDFjM2Q0MCwKLQkweDQ4MWU2MDA3LCAweDFjMDFmMDAwLCAweDQxNzg3ODAwLCAweDU5MzI1ODA4LAotCTB4NTkyYzBjMGEsIDB4OGMwNDBkMDIsIDB4MDIwMDAwMDAsIDB4MDAxMDBmZGEsCi0JMHg1OTJjMDAwZCwgMHg1OTJjMTAwZiwgMHg1OTJjMGEwNCwgMHg0ODBhNjAxMSwKLQkweDQ4MDI2MDEyLCAweDQ4MDI2MDEzLCAweDQxMmMzMDAwLCAweDgyMDQwNTAwLAotCTB4MDAwMDAwMGYsIDB4ODIwMDA0MDAsIDB4MDAxMDExMGQsIDB4NTAwMDM4MDAsCi0JMHg1MDFjMDAwMCwgMHg0MDFjMTAwMCwgMHg1OTJjMWEwNywgMHg0ODAyNjAwYSwKLQkweDQ4MWE2MDBiLCAweDQ4MGE2MDBjLCAweDQ4MGU2MDBkLCAweDg0M2M3ZDRhLAotCTB4NDAzYzEwMDAsIDB4MWMwMWYwMDAsIDB4NDE3ODc4MDAsIDB4NDk3YTYwMTIsCi0JMHg1OTJjMGEwNCwgMHg0MTJjMzAwMCwgMHg1OTJjMWEwNywgMHg4MjA0MDUwMCwKLQkweDAwMDAwMDBmLCAweDgyMDAwNDAwLCAweDAwMTAxMTBkLCAweDUwMDA0MDAwLAotCTB4NTAyMDAwMDAsIDB4NDAyMDEwMDAsIDB4NDgwMjYwMGEsIDB4NDgxYTYwMGIsCi0JMHg0ODBhNjAwYywgMHg0ODBlNjAwZCwgMHg4MDAwMDU4MCwgMHg0ODNlNjAwNCwKLQkweDFjMDFmMDAwLCAweDAwMDIwMTRjLCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksCi0JMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwKLQkweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksCi0JMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwKLQkweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksCi0JMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwKLQkweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksCi0JMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwKLQkweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksIDB4MDAwMjAxMzksCi0JMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwgMHgwMDAyMDEzOSwKLQkweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LCAweDAwMDIwMTM5LAotCTB4MDAwMjAxMzksIDB4NGMwMDAwMDAsIDB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsCi0JMHhiMDEwMDAwMCwgMHg0MWYwMDAwMCwgMHg4MWZlMTUwMCwgMHg4ZDBhMTUxMiwKLQkweDAyMDIwODAwLCAweDAwMTAxNDY4LCAweDhkMGExNTE4LCAweDAyMDIwODAwLAotCTB4MDAwMjA4NjEsIDB4OGQwYTE1MWEsIDB4MDQwMjBlZDAsIDB4ODMwODA1MDAsCi0JMHgwMDAwMGQwMCwgMHgwNDAyMDgwNCwgMHg1YzAzZTAwMCwgMHg1YzAwMDAwMCwKLQkweDE4MDFmMDAwLCAweDhkMGExNTE2LCAweDAyMDIwODAwLCAweDAwMTAxMmQ5LAotCTB4OGQwYTE1MTQsIDB4MDIwMjA4MDAsIDB4MDAxMDExYTUsIDB4OGQwYTE1MDgsCi0JMHgwMjAyMDgwMCwgMHgwMDEwMTFhYSwgMHg4ZDBhMTUwMCwgMHgwMjAyMDAwMCwKLQkweDAwMDIwN2M4LCAweDFjMDFmMDAwLCAweDQyMDAwMDAwLCAweDAwMTBiMmJkLAotCTB4NTAwMDAwMDAsIDB4OGMwMDA1MDQsIDB4MDQwMDAwMTQsIDB4NDIwMDAwMDAsCi0JMHgwMDEwYjJiZCwgMHg1MDAwMDAwMCwgMHg4YzAwMDUwMiwgMHgwNDAyMDAwMiwKLQkweDFjMDFmMDAwLCAweDRkZjAwMDAwLCAweDQyMDNlMDAwLCAweDUwMDAwMDAwLAotCTB4NDIwMzQwMDAsIDB4MDAxMGIyYTAsIDB4NTlhMDAwMWQsIDB4NTlhMWQ4MWUsCi0JMHg4NDAwMDUwMiwgMHg0ODAzNDAxZCwgMHg1OGVjMDAwOSwgMHgwODAxZjgwMCwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDA0MDI3MDAyLCAweDA0MDI2MDAyLAotCTB4MWMwMWYwMDAsIDB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDgyYSwgMHgwNDAwMDAxYSwgMHg0MTJkZDgwMCwKLQkweDQ4ZWZjODU3LCAweDAyMDFmODAwLCAweDAwMTAzOTQxLCAweDQyMDM0MDAwLAotCTB4MDAxMGIyYTAsIDB4NDlhMWQ4MGIsIDB4NDhlZjQwMWUsIDB4NTlhMDAwMWQsCi0JMHg4NDAwMDU0NCwgMHg0ODAzNDAxZCwgMHg1OWUwMDAyMCwgMHg0ODAzYzg1NywKLQkweDU5ZTAwMDIxLCAweDQ4MDNjODU3LCAweDU5ZTAwMDIyLCAweDQ4MDNjODU3LAotCTB4NTllMDAwMjMsIDB4NDgwM2M4NTcsIDB4NTllMDAwMjQsIDB4NDgwM2M4NTcsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMWZiYiwgMHgwMjAxZjgwMCwgMHgwMDEwMWZkYSwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDRkYTAwMDAwLCAweDRkZjAwMDAwLAotCTB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsIDB4MDQwMDYwNTEsIDB4NDIwMzQwMDAsCi0JMHgwMDEwYjJhMCwgMHg1OWEwMTAxNywgMHg1OWEwMTgxOCwgMHg4MDBjMTljMCwKLQkweDA0MDIwMDA4LCAweDU5YTAzODFiLCAweDgwMWMzOWMwLCAweDAyMDAwODAwLAotCTB4MDAxMDA2MTUsIDB4NTlhMDA0MWMsIDB4ODAxYzNjMDAsIDB4MDQwMWYwMGMsCi0JMHg1OWEwMDQxOSwgMHg4MjAwMDQwMCwgMHgwMDAwMDAwMiwgMHg0ODAzNDQxOSwKLQkweDgyMDAwYzgwLCAweDAwMDAwMDEzLCAweDA0MDAxMDAzLCAweDQ5N2I0NDE5LAotCTB4NDE3ODAwMDAsIDB4NTlhMDM4MTYsIDB4ODAxYzNjMDAsIDB4ODAwODEwNDAsCi0JMHg0ODBiNDAxNywgMHg1ODFjMDIwMCwgMHg0ODAzYzAyMSwgMHg1ODFjMDQwMSwKLQkweDQ4MDNjMDIyLCAweDU4MWMwMjAxLCAweDQ4MDNjMDIzLCAweDU4MWMwNDAwLAotCTB4NDgwM2MwMjAsIDB4OTAwMDAxYzAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMTIsCi0JMHg0ODAzYzAxMSwgMHg1OWUwMDAxNywgMHg4YzAwMDUwOCwgMHgwNDAwMDAwMywKLQkweDRhMDNjMDE3LCAweDAwMDAwMDAyLCAweDQyMDNlMDAwLCAweDMwMDAwMDAxLAotCTB4ODAwYzE5YzAsIDB4MDQwMDAwMDcsIDB4ODAwYzE4NDAsIDB4NDgwZjQwMTgsCi0JMHgwNDAyMDAxZiwgMHg0OTdiNDQxOSwgMHg0OTdiNDIxOSwgMHgwNDAxZjAxYywKLQkweDgwMDgxMWMwLCAweDA0MDIwMDBiLCAweDRkMmMwMDAwLCAweDU5YTI1ODFiLAotCTB4MDIwMWY4MDAsIDB4MDAxMDA4M2EsIDB4NWMwMjU4MDAsIDB4NDk3YjQwMWIsCi0JMHg0OTdiNDAxYSwgMHg0OTdiNDQxYywgMHg0OTdiNDIxYywgMHgwNDAxZjAxMCwKLQkweDU5YTAwNDFjLCAweDgyMDAwNDAwLCAweDAwMDAwMDAyLCAweDgyMDAwYzgwLAotCTB4MDAwMDAwMTIsIDB4NDgwMzQ0MWMsIDB4MDQwMDEwMDksIDB4NGQyYzAwMDAsCi0JMHg1OWEyNTgxYiwgMHg1OTJjMzgxMywgMHg0ODFmNDAxYiwgMHg0OTdiNDQxYywKLQkweDAyMDFmODAwLCAweDAwMTAwODNhLCAweDVjMDI1ODAwLCAweDVjMDNlMDAwLAotCTB4NWMwMzQwMDAsIDB4MWMwMWYwMDAsIDB4NTlhODAwMDUsIDB4ODIwMDA1MDAsCi0JMHgwMDAwMDAwMywgMHgwMjAyMDAwMCwgMHgwMDEwNDE0NSwgMHg1OTM0MDQwMCwKLQkweDgyMDAwNTgwLCAweDAwMDAwNjA2LCAweDAyMDIwMDAwLCAweDAwMTA0MTE2LAotCTB4NTkzNDAwMGQsIDB4ODAwMjdkNDAsIDB4MDIwMjAwMDAsIDB4MDAxMDQxNTEsCi0JMHgwNDAxZjgwMywgMHg4MDAwMDU4MCwgMHgxYzAxZjAwMCwgMHg1OTM0MDAwZiwKLQkweDU5MzQxMjAzLCAweDgwMDgwNTQwLCAweDA0MDIwMDVkLCAweDU5MzQwMjBiLAotCTB4NTkzNDE0MGIsIDB4ODAwODA0ODAsIDB4MDQwMjEwNTksIDB4MDIwMWY4MDAsCi0JMHgwMDAyMDg5MiwgMHgwNDAwMDA1MiwgMHg1OTJjMDQwNiwgMHg0OTM2NjAwOSwKLQkweDQ5MmU2MDA4LCAweDRhMDI2NDA2LCAweDAwMDAwMDAzLCAweDRhMDI2NDAzLAotCTB4MDAwMDAwNDAsIDB4ODAwODEwMDAsIDB4NDgwYTZjMGIsIDB4ODAwMDAwYzIsCi0JMHg4MDAwMThjNCwgMHg4MDBjMDQwMCwgMHg0ODAyNjIwNiwgMHg1OTJjMDgwOCwKLQkweDU5MmMxODA5LCAweDU5MmMwMjBhLCAweDQ4MDY2MDE3LCAweDQ4MGU2MDE4LAotCTB4OGMwMDA1MDIsIDB4MDQwMDAwMmEsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDQsCi0JMHg1OTJjMDIwNywgMHg4MDAwMDA0MCwgMHgwNDAyMDAxYSwgMHg1OWE4MDA3MCwKLQkweDgwMDAwMDQwLCAweDA0MDIwN2ZmLCAweDU5MmMwMjA0LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwZmYsIDB4ODIwMDA1ODAsIDB4MDAwMDAwMTgsIDB4MDQwMjAwMTEsCi0JMHg1OTJjMTgwZiwgMHg1OTMwMDAwNywgMHg4MjAwMDU0MCwgMHgwMDAwMDA5MSwKLQkweDQ4MGU2MDExLCAweDQ4MDI2MDA3LCAweDQyMDAwMDAwLCAweDgwMDAwMDA0LAotCTB4NDgwMjYwMDQsIDB4NTliYzAwZWEsIDB4OGMwMDA1MTYsIDB4MDQwMjA3ZmUsCi0JMHg4MzMwMDQwMCwgMHgyMDAwMDAwMCwgMHg0ODAzNzhlMSwgMHgxYzAxZjAwMCwKLQkweDA0MDFmZTRiLCAweDU5MzAwMDA3LCAweDg0MDAwNTRlLCAweDQ4MDI2MDA3LAotCTB4NTkyYzFhMDQsIDB4ODIwYzFkMDAsIDB4MDAwMDAwZmYsIDB4ODIwYzA1ODAsCi0JMHgwMDAwMDA0OCwgMHgwNDAwMDAxMiwgMHgwNDAxZjdlYywgMHg4YzAwMDUwMCwKLQkweDA0MDIwZTllLCAweDRhMDI2MjAzLCAweDAwMDAwMDAyLCAweDU5YTgwMDcxLAotCTB4ODAwMDAwNDAsIDB4MDQwMjA3ZmYsIDB4NTkyYzFhMDQsIDB4ODIwYzFkMDAsCi0JMHgwMDAwMDBmZiwgMHg4MjBjMDU4MCwgMHgwMDAwMDAxOCwgMHgwNDAwMDdkZiwKLQkweDgyMGMwNTgwLCAweDAwMDAwMDQ4LCAweDA0MDIwN2RjLCAweDQyMDAwODAwLAotCTB4ODAwMDA4MDQsIDB4MDIwMWYwMDAsIDB4MDAxMDY0NjYsIDB4ODAwODExYzAsCi0JMHgwNDAyMDAwMywgMHg0YTAyNmEwMywgMHgwMDAwMDAwMSwgMHg1OTM0MDAxMCwKLQkweDQ5MmU2ODEwLCAweDgwMDAwZDQwLCAweDA0MDIwMDAzLCAweDQ5MmU2ODBmLAotCTB4MWMwMWYwMDAsIDB4NDkyYzA4MDAsIDB4MWMwMWYwMDAsIDB4ODM0NDBjODAsCi0JMHgwMDAwMDgwMCwgMHgwNDAyMTAwOSwgMHg4MzQ0MDQwMCwgMHgwMDEwYWEwMCwKLQkweDUwMDAwMDAwLCAweDgwMDAwNTQwLCAweDA0MDAwMDA0LCAweDQwMDI2ODAwLAotCTB4ODAwMDA1ODAsIDB4MWMwMWYwMDAsIDB4ODIwMDA1NDAsIDB4MDAwMDAwMDEsCi0JMHgxYzAxZjAwMCwgMHg1OTM0MDIwMywgMHg4MDAwMDU0MCwgMHgwNDAyMDA0YiwKLQkweDRkMzAwMDAwLCAweDRkMmMwMDAwLCAweDU5MzQwMDBmLCAweDgwMDI1ZDQwLAotCTB4MDQwMDAwNDQsIDB4MDIwMWY4MDAsIDB4MDAwMjA4OTIsIDB4MDQwMDAwM2YsCi0JMHg1OTJjMDAwMCwgMHg0ODAyNjgwZiwgMHg4MDAwMDU0MCwgMHgwNDAyMDAwMiwKLQkweDQ4MDI2ODEwLCAweDU5MmMyYTA0LCAweDgwMDgxMDAwLCAweDQ4MGE2YzBiLAotCTB4NDkzNjYwMDksIDB4NDkyZTYwMDgsIDB4ODIxNDJkMDAsIDB4MDAwMDAwZmYsCi0JMHg4MjE0MDU4MCwgMHgwMDAwMDAxMiwgMHgwNDAwMDAzNSwgMHg0YTAyNjQwNiwKLQkweDAwMDAwMDAzLCAweDRhMDI2NDAzLCAweDAwMDAwMDQwLCAweDU5MmMwNDA2LAotCTB4ODAwMDAwYzIsIDB4ODAwMDE4YzQsIDB4ODAwYzA0MDAsIDB4NDgwMjYyMDYsCi0JMHg1OTJjMDgwOCwgMHg1OTJjMTgwOSwgMHg1OTJjMDIwYSwgMHg0ODA2NjAxNywKLQkweDQ4MGU2MDE4LCAweDhjMDAwNTAyLCAweDAyMDAwMDAwLCAweDAwMTA0NWExLAotCTB4NGEwMjYyMDMsIDB4MDAwMDAwMDQsIDB4NTkyYzAyMDcsIDB4ODAwMDAwNDAsCi0JMHgwMjAyMDAwMCwgMHgwMDEwNDU5NCwgMHg4MjE0MDU4MCwgMHgwMDAwMDAxOCwKLQkweDAyMDIwMDAwLCAweDAwMTA0NTk0LCAweDU5MmMxODBmLCAweDU5MzAwMDA3LAotCTB4ODIwMDA1NDAsIDB4MDAwMDAwOTEsIDB4NDgwZTYwMTEsIDB4NDgwMjYwMDcsCi0JMHg0MjAwMDAwMCwgMHg4MDAwMDAwNCwgMHg0ODAyNjAwNCwgMHg1OWJjMDBlYSwKLQkweDhjMDAwNTE2LCAweDA0MDIwN2ZlLCAweDgzMzAwNDAwLCAweDIwMDAwMDAwLAotCTB4NDgwMzc4ZTEsIDB4NTkzNDAyMGIsIDB4NTkzNDE0MGIsIDB4ODAwODA0ODAsCi0JMHgwNDAwMTdiZSwgMHgwNDAxZjAwMywgMHg0YTAyNmEwMywgMHgwMDAwMDAwMSwKLQkweDVjMDI1ODAwLCAweDVjMDI2MDAwLCAweDFjMDFmMDAwLCAweDQ5N2E1ODAwLAotCTB4NDkzMjU4MDksIDB4NGEwMjY0MDYsIDB4MDAwMDAwMDYsIDB4NGEwMjYyMDMsCi0JMHgwMDAwMDAwNywgMHgwNDAxZjgwMiwgMHgwNDAxZjdlZiwgMHg1OWE4MDAyMSwKLQkweDgwMDAwMWMwLCAweDAyMDIwMDAwLCAweDAwMTA0NWMzLCAweDU5YTgwMDA1LAotCTB4OGMwMDA1MDQsIDB4MDIwMjAwMDAsIDB4MDAxMDQ1YmYsIDB4NTkzNDAyMDAsCi0JMHg4YzAwMDUxOCwgMHgwMjAyMDAwMCwgMHgwMDEwNDViYiwgMHg1OTJjMGEwYywKLQkweDQ4MDY2MjAyLCAweDRhMDI1YTA2LCAweDAwMDAwMDAwLCAweDhjMDAwNTA4LAotCTB4MDIwMjAwMDAsIDB4MDAxMDQ1YjcsIDB4NGQzYzAwMDAsIDB4NDE3YTc4MDAsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDdjZSwgMHg1YzAyNzgwMCwgMHgxYzAxZjAwMCwKLQkweDU5OTgwMDI2LCAweDQ5N2E1ODAwLCAweDgwMDAwNTQwLCAweDA0MDIwMDY3LAotCTB4NTlkODAxMDUsIDB4ODIwMDBkMDAsIDB4MDAwMTg3ODAsIDB4MDQwMjAxOTcsCi0JMHg4MDAwMDBmNiwgMHg4MDAwMDEzYywgMHgwYzAxZjAwMSwgMHgwMDAyMDJmMywKLQkweDAwMDIwMzRlLCAweDAwMDIwMzA4LCAweDAwMDIwMzI2LCAweDU5MmMwMDAxLAotCTB4NDkyZmIxMDcsIDB4ODAwMDBkNDAsIDB4MDQwMjA4MDUsIDB4NTk5NDAwMTksCi0JMHg4MDAwMDU0MCwgMHgwNDAwMjA4NSwgMHgxYzAxZjAwMCwgMHg0OTdhNTgwMSwKLQkweDQwMDY1ODAwLCAweDU5MmMwMDAxLCAweDQ5NmE1ODAwLCAweDgxNWViODAwLAotCTB4NDEyZWQwMDAsIDB4ODAwMDBkNDAsIDB4MDQwMjA3ZjksIDB4NTljODAwMDAsCi0JMHg4MjAwMDU0MCwgMHgwMDAwMTIwMCwgMHg0ODAzOTAwMCwgMHgxYzAxZjAwMCwKLQkweDQ5MmZiMTA3LCAweDU5MmMwMDAxLCAweDgwMDAwZDQwLCAweDA0MDIwZmYwLAotCTB4NTlkYTU5MDgsIDB4ODM1YzA0ODAsIDB4MDAwMDAwMjAsIDB4MDQwMDEwMGQsCi0JMHgwNDAyYjAwYiwgMHg0OTJmYjAwNywgMHgwNDAwZTdmYSwgMHg1OWQ4MDEwNSwKLQkweDgyMDAwNTAwLCAweDAwMDE4NzgwLCAweDA0MDIwMTZjLCAweDU5OTQwMDE5LAotCTB4ODAwMDA1NDAsIDB4MDQwMDIwNjUsIDB4MWMwMWYwMDAsIDB4MDQwMGYwMDksCi0JMHg0OTZhNTgwMCwgMHg0MTJlZDAwMCwgMHg4MTVlYjgwMCwgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDA0MDFmN2VmLAotCTB4NDkyZmE4MDcsIDB4MDQwMWY3ZWQsIDB4NTlkODExMDgsIDB4NDU2ODEwMDAsCi0JMHg0MDBhZDAwMCwgMHg4MTVlYjgwMCwgMHgwNDAwZTdmYywgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDA0MDJkMDA5LAotCTB4NTkyYzAwMDEsIDB4NDkyZmIxMDcsIDB4ODAwMDBkNDAsIDB4MDQwMjBmYzgsCi0JMHg1OTk0MDAxOSwgMHg4MDAwMDU0MCwgMHgwNDAwMjA0OCwgMHgxYzAxZjAwMCwKLQkweDU5ZDgwMTA1LCAweDgyMDAwNTAwLCAweDAwMDE4NzgwLCAweDA0MDIwMTQ3LAotCTB4NDIwMDAwMDAsIDB4MDAxMGI2NTQsIDB4MDIwMWY4MDAsIDB4MDAxMGE4NmUsCi0JMHg1OTk4MDAyNiwgMHg1OTk4MDgyOCwgMHg4MDAwMDAwMCwgMHg0ODAzMzAyNiwKLQkweDQ5MmYzMDI4LCAweDgwMDQwOWMwLCAweDA0MDAwMDAzLCAweDQ5MmMwODAwLAotCTB4MDQwMWYwMDIsIDB4NDkyZjMwMjksIDB4NTkyYzAwMDEsIDB4ODAwMDBkNDAsCi0JMHgwNDAyMGZhZiwgMHgwNDAxZjdlNywgMHg1OTk4MDAyNiwgMHg1OTk4MDgyOCwKLQkweDgwMDAwMDAwLCAweDQ4MDMzMDI2LCAweDQ5MmYzMDI4LCAweDgwMDQwOWMwLAotCTB4MDQwMDAwMDMsIDB4NDkyYzA4MDAsIDB4MDQwMWYwMDIsIDB4NDkyZjMwMjksCi0JMHg1OTJjMDAwMSwgMHg4MDAwMGQ0MCwgMHgwNDAyMGZhMSwgMHgwNDAyZDAwZCwKLQkweDU5OTgwMDI5LCAweDgwMDI1ZDQwLCAweDA0MDAwMDBlLCAweDU5OTgwMDI2LAotCTB4ODAwMDAwNDAsIDB4NDgwMzMwMjYsIDB4MDQwMjAwMDIsIDB4NDgwMzMwMjgsCi0JMHg1OTJjMDAwMCwgMHg0ODAzMzAyOSwgMHg0OTJmYjEwNywgMHgwNDAwZDdmNSwKLQkweDQyMDAwMDAwLCAweDAwMTBiNjU0LCAweDAyMDFmODAwLCAweDAwMTBhODZlLAotCTB4MDQwMmUwMGEsIDB4NTlkYTU5MDgsIDB4NDk2YTU4MDAsIDB4NDEyZWQwMDAsCi0JMHg4MTVlYjgwMCwgMHgwNDAwZTdmYywgMHg1OWM4MDAwMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDU5ZDgwMTA1LCAweDgyMDAwNTAwLAotCTB4MDAwMTg3ODAsIDB4MDQwMjAxMDksIDB4NTk5NDAwMTksIDB4ODAwMDA1NDAsCi0JMHgwNDAwMjAwMiwgMHgxYzAxZjAwMCwgMHg1OTk4MDAyMywgMHg0ODAzMjgxOSwKLQkweDFjMDFmMDAwLCAweDU5MmMwNDA0LCAweDhjMDAwNTFlLCAweDAyMDIwMDAwLAotCTB4MDAxMDRiN2IsIDB4NTk5ODAwMjIsIDB4ODAwMDA1NDAsIDB4MDQwMjA3NWQsCi0JMHg1OTk4MDAyNiwgMHg0OTdhNTgwMCwgMHg4MDAwMDU0MCwgMHgwMjAyMDAwMCwKLQkweDAwMTA0YmE2LCAweDU5ZDgwMTA1LCAweDgyMDAwZDAwLCAweDAwMDE4NzgwLAotCTB4MDQwMjAwZjIsIDB4ODAwMDAwZjYsIDB4ODAwMDAxM2MsIDB4MGMwMWYwMDEsCi0JMHgwMDAyMDM5OCwgMHgwMDEwNGJhNiwgMHgwMDAyMDM5ZCwgMHgwMDAyMDNlNiwKLQkweDU5MmMwMDAxLCAweDQ5MmZiMTA3LCAweDgwMDAwZDQwLCAweDA0MDIwNzYwLAotCTB4MWMwMWYwMDAsIDB4NTkyYzAwMDEsIDB4NDkyZmIxMDcsIDB4ODAwMDBkNDAsCi0JMHgwNDAyMGY1YiwgMHg1OWRhNTkwOCwgMHg4MzVjMDQ4MCwgMHgwMDAwMDAyMCwKLQkweDA0MDAxMDJiLCAweDA0MDJiMDMzLCAweDQ5MmZiMDA3LCAweDA0MDBlN2ZhLAotCTB4NTlkODAxMDUsIDB4ODIwMDA1MDAsIDB4MDAwMTg3ODAsIDB4MDQwMjAwZDcsCi0JMHgwNDAwNjAxZiwgMHg1OWQ4MDEwYSwgMHg1OWQ4MDkwYSwgMHg4MDA0MDU4MCwKLQkweDA0MDIwN2ZkLCAweDgwMDQwOGUwLCAweDU5OWMxMDE3LCAweDhjMDgxNTA4LAotCTB4MDQwMjAwMjgsIDB4ODIwNDBkNDAsIDB4MDAwMDAwMTMsIDB4NTk5ODAwMmIsCi0JMHg0ODA3YzAxMSwgMHg4NDAwMDUwMCwgMHg0ODAzMzAyYiwgMHg1OWUwMDAxNywKLQkweDhjMDAwNTA4LCAweDA0MDIwMDA0LCAweDQyMDNlMDAwLCAweDMwMDAwMDAxLAotCTB4MWMwMWYwMDAsIDB4NGEwM2MwMTcsIDB4MDAwMDAwMDMsIDB4ODIwNDA1MDAsCi0JMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxZCwgMHgwNDAyMDdmNywKLQkweDRhMDNjMDE3LCAweDAwMDAwMDBkLCAweDA0MDFmN2Y0LCAweDU5OTgwODJiLAotCTB4ODQwNDBkNDAsIDB4NDgwNzMwMmIsIDB4MWMwMWYwMDAsIDB4NDk2YTU4MDAsCi0JMHg0MTJlZDAwMCwgMHg4MTVlYjgwMCwgMHg1OWM4MDAwMCwgMHg4MjAwMDU0MCwKLQkweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDA0MDBlN2NiLCAweDA0MDFmN2QxLAotCTB4MDQwMmY3ZjcsIDB4NDkyZmE4MDcsIDB4MDQwMGU3YzcsIDB4MDQwMWY3Y2QsCi0JMHg1OWUwMDAwZiwgMHg1OWUwMTAwZiwgMHg4MDA4MTU4MCwgMHgwNDAyMDdmZCwKLQkweDgxMjgxNTgwLCAweDA0MDAwN2Q0LCAweDQwMDI1MDAwLCAweDgyMDQwZDQwLAotCTB4MDAwMDAwMWQsIDB4MDQwMWY3ZDIsIDB4NTlkODA5MDgsIDB4NDU2ODA4MDAsCi0JMHg0MDA2ZDAwMCwgMHg4MTVlYjgwMCwgMHgwNDAwZTdmYywgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDAyMDA2MDAwLAotCTB4MDAxMDRiOGQsIDB4NTlkODAxMGEsIDB4NTlkODA5MGEsIDB4ODAwNDBkODAsCi0JMHgwNDAyMDdmZCwgMHg5MDAwMDFjMCwgMHg4MjAwMDU0MCwgMHgwMDAwMDAxMywKLQkweDQ4MDNjMDExLCAweDU5OTgwMDJiLCAweDg0MDAwNTAwLCAweDQ4MDMzMDJiLAotCTB4NTllMDAwMTcsIDB4OGMwMDA1MDgsIDB4MDQwMDAwMDMsIDB4NGEwM2MwMTcsCi0JMHgwMDAwMDAwMywgMHg0MjAzZTAwMCwgMHgzMDAwMDAwMSwgMHg1OWQ4MDEwNSwKLQkweDgyMDAwNTAwLCAweDAwMDE4NzgwLCAweDA0MDIwMDdjLCAweDAyMDJkMDAwLAotCTB4MDAxMDRiOTIsIDB4NTkyYzAwMDEsIDB4NDkyZmIxMDcsIDB4ODAwMDBkNDAsCi0JMHgwNDAyMDZlZiwgMHgxYzAxZjAwMCwgMHg1OTk4MDAyMCwgMHgwYzAxZjAwMSwKLQkweDAwMDIwNDEzLCAweDAwMDIwNDE0LCAweDAwMDIwNDM0LCAweDFjMDFmMDAwLAotCTB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsIDB4MDQwMjY4NzYsCi0JMHgwNDAwNjAwNCwgMHg1OTljMDAxNywgMHg4YzAwMDUwOCwgMHgwNDAyMDhmNSwKLQkweDU5OTgwMDI5LCAweDgwMDI1ZDQwLCAweDA0MDAwMDBhLCAweDA0MDJkMDBiLAotCTB4NTk5ODAwMjYsIDB4ODAwMDAwNDAsIDB4NDgwMzMwMjYsIDB4NTkyYzAwMDAsCi0JMHg0OTJmYjEwNywgMHg0ODAzMzAyOSwgMHgwNDAyMDAwMiwgMHg0ODAzMzAyOCwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDU5ZDgwMTA1LCAweDgyMDAwNTAwLAotCTB4MDAwMTg3ODAsIDB4MDQwMjAwNTUsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NTQsCi0JMHgwMjAxZjgwMCwgMHgwMDEwYTg2ZSwgMHg1YzAzZTAwMCwgMHgxYzAxZjAwMCwKLQkweDRkZjAwMDAwLCAweDQyMDNlMDAwLCAweDUwMDAwMDAwLCAweDU5OWNiODE3LAotCTB4NTk5NDAwMTksIDB4ODAwMDA1NDAsIDB4MDQwMDIwMjMsIDB4MDQwMDAwMGUsCi0JMHg1OTk4MDAyMiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwNSwgMHgwNDAwMDAxZSwKLQkweDU5YTgwMDY5LCAweDgxNjQwNTgwLCAweDA0MDIwMDFiLCAweDhjNWNiZDA4LAotCTB4MDQwMDAwMDcsIDB4NTlhODAwNmEsIDB4NTlhODA4NjYsIDB4ODAwNDA1ODAsCi0JMHgwNDAyMDAxNSwgMHg4YzVjYmQwOCwgMHgwNDAyMDAyYiwgMHg1OWQ4MDkwYiwKLQkweDU5ZDgwMTBhLCAweDgwMDQwNTgwLCAweDA0MDAwMDBkLCAweDA0MDA2MDBlLAotCTB4NGEwM2MwMTEsIDB4ODA0MDAwMTIsIDB4NGEwM2MwMjAsIDB4MDAwMDgwNDAsCi0JMHg1OWUwMDAxNywgMHg4YzAwMDUwOCwgMHgwNDAwMDAwMywgMHg0YTAzYzAxNywKLQkweDAwMDAwMDAyLCAweDQyMDNlMDAwLCAweDMwMDAwMDAxLCAweDRhMDMyODE5LAotCTB4ZmZmZjAwMDAsIDB4MDQwMGU4NzksIDB4MDQwMDYwMDMsIDB4OGM1Y2JkMDgsCi0JMHgwNDAyMDg4ZSwgMHg1OTk4MDAyOSwgMHg4MDAyNWQ0MCwgMHgwNDAyMDAwMywKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDU5ZDgwMTA1LCAweDgyMDAwNTAwLAotCTB4MDAwMTg3ODAsIDB4MDQwMjAwMTksIDB4MDIwMmQwMDAsIDB4MDAxMDRjMDYsCi0JMHg1OTk4MDgyNiwgMHg1OTJjMDAwMCwgMHg4MDA0MDg0MCwgMHg0ODA3MzAyNiwKLQkweDQ5MmZiMTA3LCAweDQ4MDMzMDI5LCAweDA0MDIwN2YyLCAweDQ4MDMzMDI4LAotCTB4MDQwMWY3ZjAsIDB4NTllMDAwMGYsIDB4NTllMDA4MGYsIDB4ODAwNDA1ODAsCi0JMHgwNDAyMDdmZCwgMHg1OWUwMDAxMCwgMHg1OWUwMTAxMCwgMHg4MDA4MTU4MCwKLQkweDA0MDIwN2ZkLCAweDQwMDY1MDAwLCAweDgwMDQxNTgwLCAweDA0MDAwN2NjLAotCTB4MDQwMDY3ZTEsIDB4MDQwMWY3Y2YsIDB4NDgwM2M4NTcsIDB4NDg1ZmM4NTcsCi0JMHg4YzAwMDUwZSwgMHgwMjAyMDgwMCwgMHgwMDEwMDYwZCwgMHg0MjAzZTAwMCwKLQkweDUwMDAwMDAwLCAweDQyMDBiODAwLCAweDAwMDA4MDA0LCAweDAyMDFmMDAwLAotCTB4MDAxMDA2MWEsIDB4NTk5ODAwMmIsIDB4OGMwMDA1MDAsIDB4MDQwMjAwMzksCi0JMHgwNDAwZTAwNiwgMHg1OWQ4MDEwNSwgMHg4MjAwMDUwMCwgMHgwMDAxODc4MCwKLQkweDA0MDIwN2VlLCAweDFjMDFmMDAwLCAweDU5ZGE1OTA4LCAweDgzNWMwYzgwLAotCTB4MDAwMDAwMjAsIDB4MDQwMDEwMDMsIDB4MDQwMGIwMjgsIDB4MDQwMGYwMmEsCi0JMHg0OTZhNTgwMCwgMHg0MTJlZDAwMCwgMHg4MTVlYjgwMCwgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDA0MDBlN2YzLAotCTB4NTlkODAxMGEsIDB4NTlkODA5MGEsIDB4ODAwNDA1ODAsIDB4MDQwMjA3ZmQsCi0JMHg4MDA0MDhlMCwgMHg1OTljMTAxNywgMHg4YzA4MTUwOCwgMHgwNDAyMDAyMSwKLQkweDgyMDQwZDQwLCAweDAwMDAwMDEzLCAweDQ4MDdjMDExLCAweDU5ZTAwMDE3LAotCTB4OGMwMDA1MDgsIDB4MDQwMDAwMGEsIDB4NGEwM2MwMTcsIDB4MDAwMDAwMDMsCi0JMHg4MjA0MDUwMCwgMHgwMDAwMDBmZiwgMHg4MjAwMDU4MCwgMHgwMDAwMDAxZCwKLQkweDA0MDIwMDAzLCAweDRhMDNjMDE3LCAweDAwMDAwMDBkLCAweDQyMDNlMDAwLAotCTB4MzAwMDAwMDEsIDB4NTlkODAxMDUsIDB4ODIwMDA1MDAsIDB4MDAwMTg3ODAsCi0JMHgwNDAyMDdjMiwgMHgxYzAxZjAwMCwgMHg0OTJmYjAwNywgMHgwNDAwZTdkMywKLQkweDA0MDFmN2UwLCAweDQ5MmZhODA3LCAweDA0MDBlN2QwLCAweDA0MDFmN2RkLAotCTB4ODQwMDA1MDAsIDB4NDgwMzMwMmIsIDB4MDQwMGU3Y2MsIDB4MDQwMWY3ZDksCi0JMHg1OWUwMDAwZiwgMHg1OWUwMTAwZiwgMHg4MDA4MTU4MCwgMHgwNDAyMDdmZCwKLQkweDgxMjgxNTgwLCAweDA0MDAwN2RiLCAweDQwMDI1MDAwLCAweDgyMDQwZDQwLAotCTB4MDAwMDAwMWQsIDB4MDQwMWY3ZDksIDB4NTlkYTU5MDgsIDB4NDk2YTU4MDAsCi0JMHg0MTJlZDAwMCwgMHg4MTVlYjgwMCwgMHgwNDAwZTdmYywgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDU5ZDgwOTBiLAotCTB4NTk5ODAwMjQsIDB4NDgwNzMwMjQsIDB4ODAwNDA0ODAsIDB4MDQwMjAwMDQsCi0JMHg1OTk0MDAxOSwgMHg4MDAwMDU0MCwgMHgwNDAyMjAwMywgMHg1OTk4MDgyMywKLQkweDQ4MDcyODE5LCAweDU5ZDgwMTA1LCAweDgyMDAwNTAwLCAweDAwMDE4NzgwLAotCTB4MDQwMjA3OTYsIDB4MWMwMWYwMDAsIDB4NTk5ODEwMjUsIDB4NTllMDAwMTAsCi0JMHg1OWUwMDgxMCwgMHg4MDA0MWQ4MCwgMHgwNDAyMDdmZCwgMHg4MDA4MDU4MCwKLQkweDA0MDAwMDExLCAweDQ4MDczMDI1LCAweDU5ZTAwMDBmLCAweDU5ZTAxMDBmLAotCTB4ODAwODFkODAsIDB4MDQwMjA3ZmQsIDB4ODEyODA1ODAsIDB4MDQwMDAwMDYsCi0JMHg0MDBhNTAwMCwgMHg0MDA4MDAwMCwgMHg4MDA0MDU4MCwgMHgwNDAyMDY3ZiwKLQkweDFjMDFmMDAwLCAweDU5OTQwMDE5LCAweDgwMDAwNTQwLCAweDA0MDIyN2ZhLAotCTB4MWMwMWYwMDAsIDB4NTllMDAwMGYsIDB4NTllMDEwMGYsIDB4ODAwODFkODAsCi0JMHgwNDAyMDdmZCwgMHg4MTI4MDU4MCwgMHgwNDAwMDdmNiwgMHg0MDBhNTAwMCwKLQkweDU5OTQwMDE5LCAweDgwMDAwNTQwLCAweDA0MDAyN2VmLCAweDFjMDFmMDAwLAotCTB4NTllMDAwMGYsIDB4NTllMDEwMGYsIDB4ODAwODBkODAsIDB4MDQwMjA3ZmQsCi0JMHg4MTI4MDU4MCwgMHgwNDAyMDAwMiwgMHgxYzAxZjAwMCwgMHg0MDBhNTAwMCwKLQkweDkwMDgxMWMwLCAweDgyMDgxNTQwLCAweDAwMDAwMDFjLCAweDQ4MGJjMDExLAotCTB4NTllMDAwMTcsIDB4OGMwMDA1MDgsIDB4MDQwMDAwMDMsIDB4NGEwM2MwMTcsCi0JMHgwMDAwMDAwYywgMHg0MjAzZTAwMCwgMHgzMDAwMDAwMSwgMHgxYzAxZjAwMCwKLQkweDQxNzAwMDAwLCAweDBjMDFmMDAxLCAweDAwMTA1MGYwLCAweDAwMDIwNTJmLAotCTB4MDAxMDUwZjAsIDB4MDAxMDUwZjEsIDB4MDAxMDUwZWUsIDB4MDAxMDUwZWUsCi0JMHgwMDEwNTBlZSwgMHgwMDEwNTBlZSwgMHgwMDEwNTU5NCwgMHgwNDAxMDAzNywKLQkweDU5OTgwMDA2LCAweDgwMDAwNTQwLCAweDA0MDIwMDNjLCAweDA0MDJjMDFjLAotCTB4NDIwMmY4MDAsIDB4MDAwMDAwMTAsIDB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsCi0JMHg1MDAwMDAwMCwgMHg0OWRiMzAwNSwgMHg1OWRhNTgwOCwgMHg1OTJjMDIwNCwKLQkweDQ5N2E1ODAwLCAweDQ5N2E1ODAxLCAweDgyMDAwNTAwLCAweDAwMDAwMGZmLAotCTB4ODIwMDBjODAsIDB4MDAwMDAwNzksIDB4MDQwMjEwMzYsIDB4MGMwMWY4MzksCi0JMHg1YzAzZTAwMCwgMHg4MTdlZjg0MCwgMHgwNDAwMDAwOSwgMHg4MzZjMDU4MCwKLQkweDAwMDAwMDAzLCAweDA0MDIwMDA2LCAweDgzNzAwNTgwLCAweDAwMDAwMDAxLAotCTB4MDQwMjAwMTAsIDB4MDQwMTAwMWIsIDB4MDQwMGM3ZTgsIDB4MDQwMGY5NGIsCi0JMHgwNDAwYjEzNSwgMHg1OWQ0MDAwNSwgMHg4MjAwMDUwMCwgMHg0MzAxODc4MCwKLQkweDAyMDIwMDAwLCAweDAwMTA1NTIzLCAweDU5ZDgwMDA1LCAweDgyMDAwNTAwLAotCTB4NDMwMTg3ODAsIDB4MDIwMjAwMDAsIDB4MDAxMDU1MmEsIDB4MWMwMWYwMDAsCi0JMHg4MzcwMDU4MCwgMHgwMDAwMDAwMywgMHgwMjAwMDgwMCwgMHgwMDEwNTBmMSwKLQkweDgzNzAwNTgwLCAweDAwMDAwMDAxLCAweDA0MDIwN2VkLCAweDA0MDEwMDA1LAotCTB4MDQwMGM3ZDIsIDB4MDQwMWY3ZWEsIDB4NDIwMmY4MDAsIDB4MDAwMDAwMTAsCi0JMHg0ZGYwMDAwMCwgMHg0MjAzZTAwMCwgMHg1MDAwMDAwMCwgMHg0OWQ3MzAwNSwKLQkweDU5ZDY1ODA4LCAweDA0MDFmN2NlLCAweDRkZjAwMDAwLCAweDQyMDNlMDAwLAotCTB4NTAwMDAwMDAsIDB4NDAwMjU4MDAsIDB4NTkyYzAyMDQsIDB4NDk3YjMwMDUsCi0JMHg0OTdiMzAwNiwgMHg0MjAyZjgwMCwgMHgwMDAwMDAxMCwgMHgwNDAxZjdjNywKLQkweDAyMDFmODAwLCAweDAwMTA1MTYxLCAweDVjMDNlMDAwLCAweDA0MDFmN2Q0LAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTIwNywgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTcxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUyMzEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDAyMDYyMywgMHgwMDEwNTE2MSwKLQkweDAwMTA1Mzk4LCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAwMjA1ZjUsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE5OSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDU0YjcsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1NTAyLCAweDAwMTA1MTYxLCAweDAwMTA1MThiLAotCTB4MDAxMDUxNjEsIDB4MDAxMDU0N2IsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1NDQ5LCAweDAwMTA1MTYxLCAweDAwMTA1NDQ5LAotCTB4MDAxMDU1NTYsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1NDA5LCAweDAwMTA1NTM5LAotCTB4MDAxMDUxNjEsIDB4MDAxMDU1NDksIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsIDB4MDAxMDUxNjEsCi0JMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwgMHgwMDEwNTE2MSwKLQkweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLCAweDAwMTA1MTYxLAotCTB4MDAxMDUxNjEsIDB4NTkyYzAyMDQsIDB4ODAwMDAxMTAsIDB4ODAwMDAwNDAsCi0JMHgwNDAwMDAwYiwgMHgwMjAwMTAwMCwgMHgwMDEwNTE2OSwgMHg0ODAzMzAwMiwKLQkweDQ5MmYzMDAzLCAweDQ5MmYzMDA0LCAweDRhMDMzMDA4LCAweDAwMDIwNjAzLAotCTB4NDIwMmUwMDAsIDB4MDAwMDAwMDMsIDB4MWMwMWYwMDAsIDB4NTkyYzA0MDYsCi0JMHg4MjAwMGM4MCwgMHgwMDAwMTk5YSwgMHgwMjAyMTAwMCwgMHgwMDEwNTE3OSwKLQkweDU5YTgwMDIxLCAweDgwMDAwNTQwLCAweDAyMDIwMDAwLCAweDAwMTA1MWE3LAotCTB4NTkyZThhMDYsIDB4ODM0NDBjODAsIDB4MDAwMDA3ZjAsIDB4MDIwMjEwMDAsCi0JMHgwMDEwNTE3OSwgMHg4MzQ0MDQwMCwgMHgwMDEwYWEwMCwgMHg1MDAwMDAwMCwKLQkweDgwMDI2ZDQwLCAweDAyMDAwMDAwLCAweDAwMTA1MWJiLCAweDU5MzQwMDAyLAotCTB4NTkyYzA4MTAsIDB4ODAwNDA1ODAsIDB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsCi0JMHgwMjAyMDAwMCwgMHgwMDEwNTE3OSwgMHgwMjAxZjgwMCwgMHgwMDAyMDFlZSwKLQkweDAyMDIwMDAwLCAweDAwMTA1MWJlLCAweDFjMDFmMDAwLCAweDU5MmMwMjA0LAotCTB4ODAwMDAxMTAsIDB4MDIwMDAwMDAsIDB4MDAxMDUxNjksIDB4ODAwMDAwNDAsCi0JMHgwNDAyMDAwYiwgMHg1OTJjMDQwYSwgMHg4YzAwMDUwNCwgMHgwNDAwMDAxMCwKLQkweDU5MmMwMjA3LCAweDgyMDAwYzgwLCAweDAwMDAxMDAxLCAweDAyMDIxMDAwLAotCTB4MDAxMDUxNzksIDB4MDIwMWYwMDAsIDB4MDAxMDU1NmUsIDB4NDgwMzMwMDIsCi0JMHg0OTJmMzAwMywgMHg0OTJmMzAwNCwgMHg0YTAzMzAwOCwgMHgwMDAyMDYzYiwKLQkweDQyMDJlMDAwLCAweDAwMDAwMDAzLCAweDFjMDFmMDAwLCAweDU5MmMwNDA2LAotCTB4ODIwMDBjODAsIDB4MDAwMDE5OWEsIDB4MDIwMjEwMDAsIDB4MDAxMDUxNzksCi0JMHg1OTJlOGEwNiwgMHg0MTdhNzgwMCwgMHgwNDAxZmMyNSwgMHgwMjAyMDAwMCwKLQkweDAwMTA1MzNjLCAweDU5MzQwMDAyLCAweDU5MmMwODA4LCAweDgwMDQwNTgwLAotCTB4ODIwMDA1MDAsIDB4MDBmZmZmZmYsIDB4MDIwMjAwMDAsIDB4MDAxMDUxNzksCi0JMHg0OTdhNTgwOCwgMHg1OTJlNjAwOSwgMHg4MzMwMDU4MCwgMHhmZmZmZmZmZiwKLQkweDAyMDAwMDAwLCAweDAwMTA1MmZjLCAweDgzMzAwNDgwLCAweDAwMTBjZmMwLAotCTB4MDIwMDEwMDAsIDB4MDAxMDUzNTksIDB4NTlhODAwMGIsIDB4ODEzMDA0ODAsCi0JMHgwMjAyMTAwMCwgMHgwMDEwNTM1OSwgMHg1OTJjMjQwYSwgMHg0OTM2NjAwOSwKLQkweDhjMTAyNTFjLCAweDAyMDIwMDAwLCAweDAwMTA1MmVhLCAweDU5YTgwMDY4LAotCTB4OGMwMDA1MTAsIDB4MDIwMjAwMDAsIDB4MDAxMDUzNzIsIDB4NTlhODA4MjEsCi0JMHg4MDA0MDljMCwgMHgwMjAyMDAwMCwgMHgwMDEwNTJkMCwgMHg1OWE4MDgwNSwKLQkweDhjMDQwZDA0LCAweDAyMDIwMDAwLCAweDAwMTA1MzYzLCAweDU5MzQwMjAwLAotCTB4OGMwMDA1MTgsIDB4MDIwMjAwMDAsIDB4MDAxMDUzNTQsIDB4NTkzMDBjMDYsCi0JMHg4MjA0MDU4MCwgMHgwMDAwMDAwNiwgMHgwMjAyMDAwMCwgMHgwMDEwNTJmNCwKLQkweDU5MzAwNDE0LCAweDhjMDAwNTE2LCAweDAyMDIwMDAwLCAweDAwMTA1MzVlLAotCTB4OGMxMDI1MDgsIDB4MDIwMjAwMDAsIDB4MDAxMGEzZDcsIDB4NTkzMDA4MDgsCi0JMHg0YTAyNWEwNiwgMHgwMDAwMDAwMCwgMHg4MDA0MDljMCwgMHgwMjAyMDAwMCwKLQkweDAwMTA1MmNiLCAweDU5MmMwYTBjLCAweDQ4MDY2MjAyLCAweDQ5MmU2MDA4LAotCTB4MDQwMWYxNGEsIDB4NGRmMDAwMDAsIDB4NDIwM2UwMDAsIDB4NTAwMDAwMDAsCi0JMHgwNDAyYjAwYiwgMHg4MzVjMDQ4MCwgMHgwMDAwMDAyMCwgMHgwNDAwMTAwZCwKLQkweDgxNWViODQwLCAweDQxNmE1ODAwLCAweDU5MmVkMDAwLCAweDQ5MmZiMDA3LAotCTB4NDk3YTU4MDAsIDB4NDk3YTU4MDEsIDB4MDQwMGI3ZjcsIDB4NTlkODAwMDUsCi0JMHg4MjAwMDUwMCwgMHg0MzAxODc4MCwgMHgwMjAyMDAwMCwgMHgwMDEwNTUyYSwKLQkweDVjMDNlMDAwLCAweDFjMDFmMDAwLCAweDRkZjAwMDAwLCAweDQyMDNlMDAwLAotCTB4NTAwMDAwMDAsIDB4MDQwMmYwMGIsIDB4ODM1YzA0ODAsIDB4MDAwMDAwMjAsCi0JMHgwNDAwMTAwZCwgMHg4MTVlYjg0MCwgMHg0MTZhNTgwMCwgMHg1OTJlZDAwMCwKLQkweDQ5MmZhODA3LCAweDQ5N2E1ODAwLCAweDQ5N2E1ODAxLCAweDA0MDBmN2Y3LAotCTB4NTlkNDAwMDUsIDB4ODIwMDA1MDAsIDB4NDMwMTg3ODAsIDB4MDIwMjAwMDAsCi0JMHgwMDEwNTUyMywgMHg1YzAzZTAwMCwgMHgxYzAxZjAwMCwgMHg0ZGYwMDAwMCwKLQkweDQyMDNlMDAwLCAweDUwMDAwMDAwLCAweDU5OTQwMDI0LCAweDgwMDAwNTQwLAotCTB4MDQwMDAxMGYsIDB4NGMwMDAwMDAsIDB4NDIwMDAwMDAsIDB4MDAwMDEwMDAsCi0JMHg1MDAwMDAwMCwgMHg4MjAwMDQ4MCwgMHgyNDMyMDAwMSwgMHgwNDAyMDAxNSwKLQkweDQyMDAwODAwLCAweDAwMDAwMDY0LCAweDgwMDQwODQwLCAweDA0MDAwMDA3LAotCTB4NGEwMzAwMDAsIDB4MDAwMDAwMDEsIDB4NDAwMDAwMDAsIDB4NTk4MDAwMDAsCi0JMHg4YzAwMDUwMCwgMHgwNDAwMDdmOSwgMHgwNDAwMDAwOCwgMHg0MjAwMDgwMCwKLQkweDAwMDA3YTAxLCAweDUwMDQwMDAwLCAweDhjMDAwNTEwLCAweDA0MDAwMDAzLAotCTB4ODQwMDA1MTAsIDB4NDQwMDA4MDAsIDB4NGEwMzAwMDAsIDB4MDAwMDAwMDAsCi0JMHg1OWUwMDAwMiwgMHg4YzAwMDUxZSwgMHgwNDAyMDAxYiwgMHg0MjAwMDAwMCwKLQkweDAwMDAxMDAwLCAweDUwMDAwMDAwLCAweDgyMDAwNDgwLCAweDI0MzIwMDAyLAotCTB4MDQwMjAwMTUsIDB4NDIwMDA4MDAsIDB4MDAwMDAwNjQsIDB4ODAwNDA4NDAsCi0JMHgwNDAwMDAwNywgMHg0YTAzMDAwMCwgMHgwMDAwMDAwMSwgMHg0MDAwMDAwMCwKLQkweDU5ODAwMDAwLCAweDhjMDAwNTAwLCAweDA0MDAwN2Y5LCAweDA0MDAwMDA4LAotCTB4NDIwMDA4MDAsIDB4MDAwMDdhMTcsIDB4NTAwNDAwMDAsIDB4OGMwMDA1MGUsCi0JMHgwNDAyMDAwMywgMHg4NDAwMDU0ZSwgMHg0NDAwMDgwMCwgMHg0YTAzMDAwMCwKLQkweDAwMDAwMDAwLCAweDVjMDAwMDAwLCAweDU5OTQ3ODFhLCAweDQ4MDMyODI1LAotCTB4ODAzYzA0ODAsIDB4MDQwMDEwMDQsIDB4MDQwMDAwMDMsIDB4NDgwMzI4MWEsCi0JMHgwNDAxZjAyMiwgMHg0MTc4NzgwMCwgMHg4MDNjNzgwMCwgMHg4MjAwMDQwMCwKLQkweDAwMDAwM2U4LCAweDA0MDAyN2ZkLCAweDQ4MDMyODFhLCAweDU5YTgwMDI0LAotCTB4ODAzYzE0MDAsIDB4NDgwYjUwMjQsIDB4ODAzYzAwNDAsIDB4MDQwMDAwMDIsCi0JMHg0ODNmYzg1NywgMHg1OWU0MDg1MiwgMHg1OWE4MDAyNSwgMHg4MDA0MDU4MCwKLQkweDA0MDAwMDA0LCAweDQ4MGJjODU3LCAweDU5ZTQwMDUyLCAweDQ4MDM1MDI1LAotCTB4NTk5NDAwMjYsIDB4ODAzYzA0MDAsIDB4NDgwMzI4MjYsIDB4MDIwMWY4MDAsCi0JMHgwMDEwNWQ1YSwgMHg1OTk0MDAwMCwgMHg4MjAwMDU4MCwgMHgwMDAwMDAwMCwKLQkweDA0MDIwMDA2LCAweDU5OTQwMDI2LCAweDQ4MDMyODI3LCAweDQ5N2IyODI2LAotCTB4NGEwMzI4MDAsIDB4MDAwMDAwMDEsIDB4NGMwYzAwMDAsIDB4NTk5NDAwMDcsCi0JMHg4MDAwMGQ0MCwgMHgwNDAwMDAxZCwgMHg1OTk0MTAwNiwgMHg1OTk0MDAyNSwKLQkweDgwMDgxYzgwLCAweDA0MDAxMDA0LCAweDA0MDAwMDAzLCAweDQ4MGYyODA2LAotCTB4MDQwMWYwMTYsIDB4ODAwNDA4NDAsIDB4NDgwNzI4MDcsIDB4ODIwNDA1ODAsCi0JMHgwMDAwMDNlOCwgMHgwNDAyMDAwNywgMHg0YzA0MDAwMCwgMHg0YzBjMDAwMCwKLQkweDU5OTQwMDA4LCAweDA4MDFmODAwLCAweDVjMDAxODAwLCAweDVjMDAwODAwLAotCTB4ODAwNDA5YzAsIDB4MDQwMjAwMDQsIDB4NTk5NDAwMDgsIDB4MDgwMWY4MDAsCi0JMHgwNDAxZjAwNiwgMHg0MDBjMDAwMCwgMHg4MjBjMWMwMCwgMHgwMDAwMDAwYSwKLQkweDA0MDAyN2VkLCAweDQ4MGYyODA2LCAweDVjMDAxODAwLCAweDRkMTgwMDAwLAotCTB4NTljNDAwMDgsIDB4OGMwMDA1MzQsIDB4MDQwMjAwMjUsIDB4NDE3YTMwMDAsCi0JMHg4Mzk0N2MwMCwgMHgwMDAwMDAwOSwgMHg1ODNjMDAwMSwgMHg4MDAwMGQ0MCwKLQkweDA0MDIwMDA4LCAweDgyM2M3YzAwLCAweDAwMDAwMDAzLCAweDgxMWEzMDAwLAotCTB4ODMxODA1ODAsIDB4MDAwMDAwMDUsIDB4MDQwMjA3ZjgsIDB4MDQwMWYwMTgsCi0JMHg1ODNjMTAwMCwgMHg1OTk0MDAyNSwgMHg4MDA4MDQ4MCwgMHgwNDAwMTAwNSwKLQkweDA0MDAwMDA0LCAweDQ4MDA3ODAwLCAweDgwMDAwMDQwLCAweDA0MDIxMDEwLAotCTB4ODAwNDA4NDAsIDB4NDgwNDc4MDEsIDB4MDQwMDAwMDgsIDB4ODIwMDA0MDAsCi0JMHgwMDAwMDAwYSwgMHg0ODAwNzgwMCwgMHgwNDAwMjdmYSwgMHg4MjA0MDUwMCwKLQkweDAwMDAwMDdmLCAweDA0MDFmN2U4LCAweDU4M2MwMDAyLCAweDRjM2MwMDAwLAotCTB4MDgwMWY4MDAsIDB4NWMwMDc4MDAsIDB4MDQwMWY3ZTMsIDB4NWMwMjMwMDAsCi0JMHg1OTk0MDAxOSwgMHg4MDAwMTU0MCwgMHgwNDAwMDAwNywgMHgwNDAwMjAwNiwKLQkweDU5OTQwMDI1LCAweDgwMDgwNDgwLCAweDA0MDIxMDAyLCAweDgwMDAwNTgwLAotCTB4NDgwMzI4MTksIDB4NTk5NDAwMWMsIDB4ODAwMDBkNDAsIDB4MDQwMDAwMTMsCi0JMHg1OTk0MTAxYiwgMHg1OTk0MDAyNSwgMHg4MDA4MDQ4MCwgMHgwNDAwMTAwNSwKLQkweDA0MDAwMDA0LCAweDQ4MDMyODFiLCAweDgwMDAwMDQwLCAweDA0MDIxMDBiLAotCTB4ODAwNDA4NDAsIDB4NDgwNzI4MWMsIDB4MDQwMjAwMDQsIDB4NTk5NDAwMWQsCi0JMHgwODAxZjgwMCwgMHgwNDAxZjAwNSwgMHg4MjAwMDQwMCwgMHgwMDAwMDAwYSwKLQkweDQ4MDMyODFiLCAweDA0MDAyN2Y3LCAweDU5OTQwMDA0LCAweDgwMDAwZDQwLAotCTB4MDQwMDAwMTMsIDB4NTk5NDEwMDMsIDB4NTk5NDAwMjUsIDB4ODAwODA0ODAsCi0JMHgwNDAwMTAwNSwgMHgwNDAwMDAwNCwgMHg0ODAzMjgwMywgMHg4MDAwMDA0MCwKLQkweDA0MDIxMDBiLCAweDgwMDQwODQwLCAweDQ4MDcyODA0LCAweDA0MDIwMDA0LAotCTB4NTk5NDAwMDUsIDB4MDgwMWY4MDAsIDB4MDQwMWYwMDUsIDB4ODIwMDA0MDAsCi0JMHgwMDAwMDAwYSwgMHg0ODAzMjgwMywgMHgwNDAwMjdmNywgMHg1OTk0MDAxZiwKLQkweDgwMDAwZDQwLCAweDA0MDAwMDEzLCAweDU5OTQxMDFlLCAweDU5OTQwMDI1LAotCTB4ODAwODA0ODAsIDB4MDQwMDEwMDUsIDB4MDQwMDAwMDQsIDB4NDgwMzI4MWUsCi0JMHg4MDAwMDA0MCwgMHgwNDAyMTAwYiwgMHg4MDA0MDg0MCwgMHg0ODA3MjgxZiwKLQkweDA0MDIwMDA0LCAweDU5OTQwMDIwLCAweDA4MDFmODAwLCAweDA0MDFmMDA1LAotCTB4ODIwMDA0MDAsIDB4MDAwMDAwMDEsIDB4NDgwMzI4MWUsIDB4MDQwMDI3ZjcsCi0JMHg1OTk0MDAyMiwgMHg4MDAwMGQ0MCwgMHgwNDAwMDAxMywgMHg1OTk0MTAyMSwKLQkweDU5OTQwMDI1LCAweDgwMDgwNDgwLCAweDA0MDAxMDA1LCAweDA0MDAwMDA0LAotCTB4NDgwMzI4MjEsIDB4ODAwMDAwNDAsIDB4MDQwMjEwMGIsIDB4ODAwNDA4NDAsCi0JMHg0ODA3MjgyMiwgMHgwNDAyMDAwNCwgMHg1OTk0MDAyMywgMHgwODAxZjgwMCwKLQkweDA0MDFmMDA1LCAweDgyMDAwNDAwLCAweDAwMDAwMDBhLCAweDQ4MDMyODIxLAotCTB4MDQwMDI3ZjcsIDB4NTk5NDA4MjQsIDB4NTk5NDAwMjUsIDB4ODAwNDA0ODAsCi0JMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwgMHg0ODAzMjgyNCwgMHg1OTk0MDAwMCwKLQkweDBjMDFmMDAxLCAweDAwMTA1Y2VlLCAweDAwMTA1Y2YwLCAweDAwMTA1ZDE2LAotCTB4NTk5NDAwMjQsIDB4ODAwMDAwMDAsIDB4NDgwMzI4MjQsIDB4NDIwM2UwMDAsCi0JMHg3MDAwMDAwMCwgMHgxYzAxZjAwMCwgMHg1OTJjMDQwNiwgMHg4MDAwMDBjMiwKLQkweDgwMDAwOGM0LCAweDgwMDQwYzAwLCAweDU5MmMwNDBhLCAweDQ4MDY2MjA2LAotCTB4ODIwMDBkMDAsIDB4MDAwMDAwMDMsIDB4MDIwMDAwMDAsIDB4MDAxMDVlOTcsCi0JMHg4YzAwMDUwMCwgMHgwNDAyMDAyYywgMHg1OWE4MDg3MiwgMHg4MDA0MDg0MCwKLQkweDA0MDIwN2ZmLCAweDhjMDAwNTFlLCAweDAyMDAwMDAwLCAweDAwMTA1ZTcyLAotCTB4ODIwMDBkMDAsIDB4MDAwMDAwYzAsIDB4MDIwMjAwMDAsIDB4MDAxMDVlNjgsCi0JMHg4MjAwMGQwMCwgMHgwMDAwMjAyMCwgMHgwMjAyMDAwMCwgMHgwMDEwNWU2NSwKLQkweDgxM2U3OWMwLCAweDAyMDIwMDAwLCAweDAwMTA1ZTY1LCAweDU5MmMwYzBjLAotCTB4ODAwNDA5YzAsIDB4MDIwMjAwMDAsIDB4MDAxMDVlNjUsIDB4NTkzMDBhMDMsCi0JMHg4MjA0MGQ4MCwgMHgwMDAwMDAwNywgMHgwMjAyMDAwMCwgMHgwMDEwNWU2NSwKLQkweDRhMDI2MjAzLCAweDAwMDAwMDAzLCAweDRhMDI2NDAzLCAweDAwMDAwMDQzLAotCTB4MDIwMWY4MDAsIDB4MDAwMjAwY2EsIDB4ODIwODBkNDAsIDB4ODAwMDM0NjUsCi0JMHg0ODA2NjAwNCwgMHg0OTdhNjAwMCwgMHg1OWJjMDBlYSwgMHg4YzAwMDUxNiwKLQkweDA0MDIwN2ZlLCAweDgzMzAwNDAwLCAweGEwMDAwMDAwLCAweDQ4MDM3OGUxLAotCTB4MWMwMWYwMDAsIDB4OGMwMDA1MDIsIDB4MDIwMjAwMDAsIDB4MDAxMDVlYmEsCi0JMHg4YzAwMDUxZSwgMHgwNDAwMDAwZSwgMHg4MjAwMGQwMCwgMHgwMDAwMDBjMCwKLQkweDA0MDAwMDA1LCAweDgyMDQwZDgwLCAweDAwMDAwMGMwLCAweDAyMDIwMDAwLAotCTB4MDAxMDVlYmYsIDB4ODIwMDBkMDAsIDB4MDAwMDIwMjAsIDB4ODIwNDBkODAsCi0JMHgwMDAwMjAyMCwgMHgwMjAwMDAwMCwgMHgwMDEwNWU4NiwgMHg1OTJjMDIwNywKLQkweDgwMDAwMDQwLCAweDAyMDIwMDAwLCAweDAwMTA1ZTkwLCAweDU5MmMxODBkLAotCTB4ODAwYzE5YzAsIDB4MDIwMjAwMDAsIDB4MDAxMDVlOTAsIDB4NTkyYzE4MGYsCi0JMHg1OTMwMDAwNywgMHg4MjAwMDU0MCwgMHgwMDAwMDAxMSwgMHg0ODBlNjAxMSwKLQkweDQ4MDI2MDA3LCAweDRhMDI2MjAzLCAweDAwMDAwMDA0LCAweDRhMDI2NDAzLAotCTB4MDAwMDAwNDIsIDB4NDIwMDA4MDAsIDB4ODAwMDIwMDEsIDB4MDQwMWYwMmEsCi0JMHg1YzAwMDAwMCwgMHg0YzAwMDAwMCwgMHg0ODAzYzg1NywgMHg0ODA3Yzg1NywKLQkweDA0MDFmMDAzLCAweDQyMDAwODAwLCAweDAwMDAwMDAxLCAweDU5MzI1ODA4LAotCTB4ODMyYzA1MDAsIDB4MDBmZjAwMDAsIDB4MDQwMDAwMGQsIDB4NTkyYzAwMDAsCi0JMHg0ODA2NWEwNiwgMHg0ODAyNjAwOCwgMHg1OTJjMDQwYSwgMHg4YzAwMDUxMCwKLQkweDA0MDIwMDA4LCAweDAyMDFmODAwLCAweDAwMDIwMzgxLCAweDQxN2E3ODAwLAotCTB4NTkzMDAwMDgsIDB4ODAwMjVkNDAsIDB4MDQwMjA3OGMsIDB4MWMwMWYwMDAsCi0JMHg0NTZhNTgwMCwgMHg0MTJlZDAwMCwgMHg4MTVlYjgwMCwgMHg1OWM4MDAwMCwKLQkweDgyMDAwNTQwLCAweDAwMDAxMjAwLCAweDQ4MDM5MDAwLCAweDA0MDFmN2Y0LAotCTB4NTk4NDAwMDAsIDB4ODAwMDA1NDAsIDB4MDQwMjAwMDIsIDB4MWMwMWYwMDAsCi0JMHg1OTg0MDAwMywgMHg4MDAwMDU0MCwgMHgwMjAyMDAwMCwgMHgwMDEwNWYzNywKLQkweDFjMDFmMDAwLCAweDU5MzAwMDA0LCAweDgyMDAwNTAwLCAweDAwMDAwMTAwLAotCTB4ODAwNDBkNDAsIDB4NDgwNjYwMDQsIDB4NTliYzAwZWEsIDB4OGMwMDA1MTYsCi0JMHgwNDAyMDdmZSwgMHg4MzMwMDQwMCwgMHg0MDAwMDAwMCwgMHg0ODAzNzhlMSwKLQkweDFjMDFmMDAwLCAweDU5YmMwMGVhLCAweDgyMDAxNTAwLCAweGIwMDAwMDE4LAotCTB4MDIwMjAwMDAsIDB4MDAxMDY5YzYsIDB4OGMwMDA1MTAsIDB4MDQwMDAwMmEsCi0JMHg1OWJjMTBlMCwgMHg4MjA4MDUwMCwgMHhmZmZmZjAwMCwgMHgwNDAyMDAwYSwKLQkweDgwMDgwMTA4LCAweDgyMGEzNTAwLCAweDAwMDAwMDBmLCAweDQ4MDNjODU3LAotCTB4MTIwMWYwMDAsIDB4MDAxMDY5Y2MsIDB4ODQwMDA1MTAsIDB4NDgwMjYwMDQsCi0JMHgwNDAxZjAxNiwgMHg4NDBhNjUzZSwgMHg1OTMwMDAwNCwgMHg4YzAwMDUyMCwKLQkweDA0MDAwN2ZhLCAweDgyMDAwNTAwLCAweGZmZmVmZWZmLCAweDQ4MDI2MDA0LAotCTB4OGMwODE1M2UsIDB4MDQwMjAwMDUsIDB4NDIwMjcwMDAsIDB4MDAwMDAwMTMsCi0JMHgwNDAxZjg1OCwgMHgwNDAxZjAwOSwgMHg1OTMwMDAwNCwgMHg4YzAwMDUxNCwKLQkweDA0MDAwMDAzLCAweDA0MDFmZmFjLCAweDA0MDFmMDJlLCAweDQyMDI3MDAwLAotCTB4MDAwMDAwNDksIDB4MDQwMWY4NGYsIDB4NTliYzAwZWEsIDB4ODIwMDE1MDAsCi0JMHhiMDAwMDAxOCwgMHgwMjAyMDAwMCwgMHgwMDEwNjljNiwgMHg4YzAwMDUxMCwKLQkweDA0MDIwN2Q4LCAweDFjMDFmMDAwLCAweDgzNjQwNDgwLCAweDAwMDAwMDEwLAotCTB4MDQwMDEwMTksIDB4NDE2MjYwMDAsIDB4NDE1ODAwMDAsIDB4NTkzMDBhMDMsCi0JMHg4MjA0MGQ4MCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAwOCwgMHg4MzMyNjQwMCwKLQkweDAwMDAwMDI0LCAweDgxMzAwYzgwLCAweDA0MDAxN2Y5LCAweDQyMDI2MDAwLAotCTB4MDAxMGNmYzAsIDB4MDQwMWY3ZjYsIDB4NGEwMjYyMDMsIDB4MDAwMDAwMDgsCi0JMHg4MTY2Yzg0MCwgMHg4MzMyYzQwMCwgMHgwMDAwMDAyNCwgMHg4MTYwMDQ4MCwKLQkweDA0MDIxMDAyLCAweDFjMDFmMDAwLCAweDgzN2FjNTQwLCAweDAwMTBjZmMwLAotCTB4MWMwMWYwMDAsIDB4NDIwMDAwMDAsIDB4MDAxMGI2NTMsIDB4MDIwMWY4MDAsCi0JMHgwMDEwYTg2ZSwgMHg0OTY3Yzg1NywgMHg4MDAyNjU4MCwgMHgxYzAxZjAwMCwKLQkweDgzMzAwNDgwLCAweDAwMTBjZmMwLCAweDAyMDAxODAwLCAweDAwMTAwNjE1LAotCTB4NDE1ODAwMDAsIDB4ODEzMDA0ODAsIDB4MDQwMjEwMGMsIDB4MDQwMTEwMDAsCi0JMHg0NTdhNjAwMCwgMHg0YTAyNjIwMiwgMHgwMDAwZmZmZiwgMHg4MzMwMDQwMCwKLQkweDAwMDAwMDAzLCAweDQ4MDNjODQwLCAweDRhMDNjODQyLCAweDAwMDAwMDIxLAotCTB4ODE2NmM4MDAsIDB4MWMwMWYwMDAsIDB4NDE1NDAwMDAsIDB4ODEzMDA0ODAsCi0JMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwgMHgwNDAxMTAwMCwgMHg0NTdhNjAwMCwKLQkweDRhMDI2MjAyLCAweDAwMDBmZmZmLCAweDgzMzAwNDAwLCAweDAwMDAwMDAzLAotCTB4NDgwM2M4NDAsIDB4NGEwM2M4NDIsIDB4MDAwMDAwMjEsIDB4NTlhODAwNjYsCi0JMHg0OTMzNTA2NSwgMHg4MDAwMDAwMCwgMHg0ODAzNTA2NiwgMHgxYzAxZjAwMCwKLQkweDRkMzQwMDAwLCAweDU5MzI2ODA5LCAweDU5MzAwNDA2LCAweDgyMDAwNTAwLAotCTB4MDAwMDAwMWYsIDB4MGMwMWY4MDMsIDB4NWMwMjY4MDAsIDB4MWMwMWYwMDAsCi0JMHgwMDEwNzZlZCwgMHgwMDEwNzcwMCwgMHgwMDEwNzcxYSwgMHgwMDAyMDkwMCwKLQkweDAwMTA5NmMxLCAweDAwMTA5NmRjLCAweDAwMDIwOTc1LCAweDAwMTA3NmVkLAotCTB4MDAxMDc3MDAsIDB4MDAxMDYyMjYsIDB4MDAxMDc3MzMsIDB4MDAxMDc2ZWQsCi0JMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwKLQkweDAwMTA5MzZhLCAweDAwMTBhNGQwLCAweDAwMTA3NmVkLCAweDAwMTA3NmVkLAotCTB4MDAxMDc2ZWQsIDB4MDAxMDc2ZWQsIDB4MDAxMDc2ZWQsIDB4MDAxMDc2ZWQsCi0JMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwgMHgwMDEwNzZlZCwKLQkweDAwMTA3NmVkLCAweDAwMTA3NmVkLCAweDAwMTA3NmVkLCAweDAwMTA3NmVkLAotCTB4NTkzMDAyMDMsIDB4ODIwMDBjODAsIDB4MDAwMDAwMGUsIDB4MDIwMjE4MDAsCi0JMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwNzczMSwgMHgwMDEwODMzNywKLQkweDAwMDIwOTE0LCAweDAwMTA4NGNjLCAweDAwMTA4NTY2LCAweDAwMTA3NzMxLAotCTB4MDAxMDc3MzEsIDB4MDAxMDc3MzEsIDB4MDAxMDgzMWMsIDB4MDAxMDc3MzEsCi0JMHgwMDEwNzczMSwgMHgwMDEwNzczMSwgMHgwMDEwNzczMSwgMHgwMDEwODczYSwKLQkweDgzMzgwNDgwLCAweDAwMDAwMDU4LCAweDA0MDIxMDA3LCAweDgzMzgwNDgwLAotCTB4MDAwMDAwNDAsIDB4MDQwMDEwMDQsIDB4NGQyYzAwMDAsIDB4MGMwMWY4MDMsCi0JMHg1YzAyNTgwMCwgMHgxYzAxZjAwMCwgMHgwMDEwODNjMSwgMHgwMDEwODNjMSwKLQkweDAwMTA4M2MxLCAweDAwMTA4M2MxLCAweDAwMTA4M2MxLCAweDAwMTA4M2MzLAotCTB4MDAxMDg0NjMsIDB4MDAxMDgzYzEsIDB4MDAxMDgzYzEsIDB4MDAxMDgzYzEsCi0JMHgwMDEwODNjMSwgMHgwMDEwODNjMSwgMHgwMDEwODNjMSwgMHgwMDEwODNjMSwKLQkweDAwMTA4M2MxLCAweDAwMTA4M2MxLCAweDAwMTA4M2MxLCAweDAwMTA4M2MxLAotCTB4MDAxMDgzYzEsIDB4MDAxMDg0NjcsIDB4MDAwMjA5MzYsIDB4MDAxMDgzYzEsCi0JMHgwMDEwODQ2NiwgMHgwMDEwODQ2OCwgMHg1OTMyNTgwOCwgMHg1OTMwMDgxMSwKLQkweDU5MzAxNDAyLCAweDU5MzQwMjAwLCAweDhjMDAwNTBlLCAweDA0MDIwMDFjLAotCTB4MDQwMWY4MjYsIDB4MDQwMDAwMDUsIDB4NGEwMjVhMDQsIDB4MDAwMDAxMDMsCi0JMHg0OTdhNWMwOSwgMHgwNDAxZjAwOSwgMHg0YTAyNWEwNCwgMHgwMDAwMDEwMywKLQkweDRhMDI1YTA2LCAweDAwMDAwMDAwLCAweDQ5N2E1YzA5LCAweDgwMDQwOWMwLAotCTB4MDIwMjA4MDAsIDB4MDAxMDg1MzEsIDB4NDgwNjU4MDcsIDB4NDgwYTVjMDYsCi0JMHgwMjAxZjgwMCwgMHgwMDAyMDM4MSwgMHg1OTM0MDAwZiwgMHg1OTM0MTQwYiwKLQkweDgwMDgxMDQwLCAweDA0MDAxMDAyLCAweDQ4MGE2YzBiLCAweDgwMDAwNTQwLAotCTB4MDIwMjA4MDAsIDB4MDAwMjAyNzUsIDB4MDQwMWY3NWUsIDB4NTkyYzAyMGEsCi0JMHg4YzAwMDUwMiwgMHgwNDAwMDdlOSwgMHg4MDA0MDljMCwgMHgwNDAwMDdlNywKLQkweDU5MmMwMjA4LCAweDhjMDAwNTBlLCAweDA0MDIwN2U0LCAweDQ5MzNjODU3LAotCTB4MDIwMWYwMDAsIDB4MDAxMDhmYzYsIDB4NTkyYzAyMGEsIDB4OGMwMDA1MDAsCi0JMHgwNDAwMDAxMCwgMHg1OTMwMDAxNSwgMHg1OTJjMzgwZiwgMHg4MDFjM2M4MCwKLQkweDA0MDAwMDBjLCAweDRhMDI1YTA2LCAweDAwMDAwMDE1LCAweDhjMWMzZDNlLAotCTB4MDQwMDAwMDUsIDB4NGEwMjVhMDYsIDB4MDAwMDAwMDcsIDB4ODAxYzM4ODAsCi0JMHg4MDFjMzgwMCwgMHg0ODFmYzg1NywgMHg4MjFjMGQ0MCwgMHgwMDAwMDAwMCwKLQkweDFjMDFmMDAwLCAweDU5MzAwMjAzLCAweDgyMDAzNDgwLCAweDAwMDAwMDBlLAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4MGMwMWYwMDEsIDB4MDAxMDk2ZmIsCi0JMHgwMDAyMDk4OSwgMHgwMDEwOWQ5YywgMHgwMDEwOWRhYSwgMHgwMDAyMDlhNSwKLQkweDAwMTA5NmZiLCAweDAwMTA5ZTk4LCAweDAwMDIwOWM0LCAweDAwMTA5NmZiLAotCTB4MDAxMDk2ZmIsIDB4MDAxMDk2ZmIsIDB4MDAxMDk2ZmIsIDB4MDAxMDk2ZmIsCi0JMHgwMDEwOTZmYiwgMHg4MzM4MDU4MCwgMHgwMDAwMDAxMywgMHgwMjAyMDAwMCwKLQkweDAwMTA5ZDIzLCAweDU5MzAwNDAzLCAweDgyMDI3NDgwLCAweDAwMDAwMDQ0LAotCTB4MDIwMjE4MDAsIDB4MDAxMDA2MTUsIDB4ODIwMDA0ODAsIDB4MDAwMDAwNDAsCi0JMHgwMjAwMTgwMCwgMHgwMDEwMDYxNSwgMHgwYzAxZjAwMSwgMHgwMDEwOWQ4MCwKLQkweDAwMDIwOTliLCAweDAwMTA5ZDgyLCAweDAwMTA5ZDk0LCAweDU5MzI1ODA4LAotCTB4ODMyYzA1MDAsIDB4MDBmZjAwMDAsIDB4MDQwMDAwMDUsIDB4NTkyYzBjMGEsCi0JMHg4YzA0MGQxYSwgMHgwMjAyMDAwMCwgMHgwMDEwOWQ4ZiwgMHgwNDAxZmU4ZSwKLQkweDA0MDFmNzEwLCAweDgzMzgwNTgwLCAweDAwMDAwMDQ4LCAweDA0MDAwMDA3LAotCTB4ODMzODA1ODAsIDB4MDAwMDAwNTMsIDB4MDIwMDAwMDAsIDB4MDAxMDllM2EsCi0JMHgwMjAxZjgwMCwgMHgwMDEwMDYxNSwgMHg1OTMwMDAxZiwgMHg1OTMwMTAxMSwKLQkweDU5MzAwODA5LCAweDU4MDQwYTAwLCAweDhjMDQwZDBlLCAweDAyMDIwMDAwLAotCTB4MDAxMDllMTYsIDB4ODAwODExYzAsIDB4MDIwMjAwMDAsIDB4MDAxMDllMjMsCi0JMHg1OTMwMDAxZiwgMHg4MDAwMDU0MCwgMHgwMjAyMDAwMCwgMHgwMDEwOWUzMSwKLQkweDU5MzI1ODA4LCAweDU5MmMwNDBhLCAweDhjMDAwNTFlLCAweDAyMDAwMDAwLAotCTB4MDAxMDllMGMsIDB4NDIwMjcwMDAsIDB4MDAwMDAwNDEsIDB4MDQwMWYwMDEsCi0JMHg4MzM4MDQ4MCwgMHgwMDAwMDA1NCwgMHgwMjAyMTgwMCwgMHgwMDEwMDYxNSwKLQkweDgzMzgwNDgwLCAweDAwMDAwMDQwLCAweDAyMDAxMDAwLCAweDAwMTA5ZTU3LAotCTB4MGMwMWYwMDEsIDB4MDAxMDllNjMsIDB4MDAwMjA5ZTEsIDB4MDAxMDllNmYsCi0JMHgwMDEwOWU3NiwgMHgwMDEwOWU2MywgMHgwMDEwOWU2MywgMHgwMDEwOWU2MywKLQkweDAwMTA5ZTYzLCAweDAwMTA5ZTY1LCAweDAwMTA5ZTZhLCAweDAwMTA5ZTZhLAotCTB4MDAxMDllNjMsIDB4MDAxMDllNjMsIDB4MDAxMDllNjMsIDB4MDAxMDllNjMsCi0JMHgwMDEwOWU2YSwgMHgwMDEwOWU2MywgMHgwMDEwOWU2YSwgMHgwMDEwOWU2MywKLQkweDAwMTA5ZTY1LCAweDRhMDI2MjAzLCAweDAwMDAwMDAxLCAweDQ5M2E2NDAzLAotCTB4NDIwMDA4MDAsIDB4ODAwMDIwNDIsIDB4MDQwMWY2NmYsIDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwKLQkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLAotCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHhhMzZlYzQ0MSwgMHgwMDAwMDAwMCwKLQkweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDA1LCAweGZmZmZmZmZiLAotCTB4MDI4MDAwMDQsIDB4MDAwMDAwMDAsIDB4MDAwMGMwMDAsIDB4MDAwMDA3MWIsCi0JMHgwNzNmY2E1YSwgMHgwNzA1YTVhNSwgMHgwMTkyODAwOSwgMHgwNzBmZjBlMSwKLQkweDAzODAwMDA2LCAweDA0OTU4MDEwLCAweDA1MzA4MDAwLCAweDA1MDA4MDAwLAotCTB4MDYwMDkwMmYsIDB4MDRhMDA0ZGMsIDB4MDIwMmYwNTEsIDB4MDQyZTQwMjAsCi0JMHgwMThmMDIxYiwgMHgwMzNlNTAwMCwgMHgwMzAyMDAwMCwgMHgwNzhkMDAxOCwKLQkweDA0OTMwNDFhLCAweDAwOTIwNDFjLCAweDAzOGEwMzA1LCAweDA3OGIwMzAzLAotCTB4MDQ4ZTgwMTAsIDB4MDY3OGFhZTUsIDB4MDYwMDAwMDEsIDB4MDc4MTgxNzQsCi0JMHgwNDAwMTBlNiwgMHgwNDQ4ZTBlNiwgMHgwNDgxODAxMCwgMHgwMDJmYjAwOCwKLQkweDA0NDhlMGU2LCAweDA0ODE4MDEwLCAweDA2MGZmMGU2LCAweDAwNTgwNDAxLAotCTB4MDU0ODgwZmYsIDB4MDQ4MTgwMTAsIDB4MDIyYTUwMDEsIDB4MDMwNDMwZDQsCi0JMHgwNjc4MDA0MywgMHgwMzBlMDAwMCwgMHgwMzA0NTBmZiwgMHgwNjc4MDA0MywKLQkweDAzMDE5MDAwLCAweDA0ODE4NWM0LCAweDAyN2MwMDQ1LCAweDAzMDIwMDAwLAotCTB4MDY4MTAwMzcsIDB4MDI3YzAwNDUsIDB4MDMwNDAwMDAsIDB4MDY4MTAwYzcsCi0JMHgwMjdjMDA0NSwgMHgwMzA4MDAwMCwgMHgwNjgxMDYxYywgMHgwNDkwODAzNywKLQkweDAyOTEwNWMyLCAweDAxMDQxMGE2LCAweDAzNzlmZjQxLCAweDAzN2ZmZmZmLAotCTB4MDcyZDYwMDAsIDB4MDc2MDEyNDEsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMDksCi0JMHgwNTYwMDQwMCwgMHgwNTBmODBmZiwgMHgwNTZjMDRmZiwgMHgwNjgxMDVkYSwKLQkweDA3M2ZhMDA5LCAweDA2MDAwMDAxLCAweDAyNzlmZjAyLCAweDA3MDBmZmZmLAotCTB4MDcwZmYwZDEsIDB4MDE3OWZlZmYsIDB4MDcwMGZmZmYsIDB4MDQ1YzA0MDIsCi0JMHgwNDgxODVkYSwgMHgwNjBmZjBkMCwgMHgwMTc5ZmVmZiwgMHgwNzAwZmZmZiwKLQkweDA1N2RmZWZmLCAweDA3MDBmZmZmLCAweDA2ODEwNWJjLCAweDA1NjAwZTQxLAotCTB4MDUwZjgwZmYsIDB4MDMyZmEwNjksIDB4MDc0ODAwMDAsIDB4MDY4MTA1Y2UsCi0JMHgwNjc4MDA0MywgMHgwNzAwMDBmMCwgMHgwNzgxMDA1ZiwgMHgwMzdjMDBmZiwKLQkweDA2MDAwMDEwLCAweDA3ODEwMDVmLCAweDAzODAwNWNhLCAweDAzNzlmZjAwLAotCTB4MDcwZmZmZmYsIDB4MDY3ODAwNDMsIDB4MDdmMDAwMDAsIDB4MDc1YTAwMDAsCi0JMHgwMjBlZjAwMSwgMHgwMzg2MDVjYywgMHgwNTQ4NDAwMCwgMHgwMmExODE5ZSwKLQkweDA2MmQ2MDAxLCAweDAwMmZiMDAxLCAweDA3MGZmMDY5LCAweDAxODY4MDcyLAotCTB4MDYwZmYwNzksIDB4MDU1YzA0NDEsIDB4MDY4MTAwMTAsIDB4MDEyZmIwMDAsCi0JMHgwNjA1NjBmYiwgMHgwMzgwMDA3OCwgMHgwNjBmZjA3OSwgMHgwMjg2ODE5OCwKLQkweDA3MGZmMDY5LCAweDA1NWMwNDQxLCAweDA2ODEwMDEwLCAweDA2MDU2MGZiLAotCTB4MDQwMGQwZDAsIDB4MDYyZDYwMDIsIDB4MDY0ODMwMGQsIDB4MDY4MTAwODYsCi0JMHgwNzBmZjBkMSwgMHgwNjJkNjAwMSwgMHgwNDVjMDQwYiwgMHgwNjgxMDA4OSwKLQkweDA1NDg4MDAwLCAweDA0ODE4MDg2LCAweDA3MmU1MDBjLCAweDAwMjA4MDAxLAotCTB4MDVhMDA0ZTEsIDB4MDI4MDAwMTAsIDB4MDYyZDYwMDEsIDB4MDdmMDAwMDAsCi0JMHgwN2YwMDAwMCwgMHgwNzBmZjBkMSwgMHgwMTc5ZmVmZiwgMHgwNzAwMDBmZiwKLQkweDA1NWMwNDBjLCAweDA1ODE4MGJiLCAweDAwMDdiMDAxLCAweDAzMDc5MDQxLAotCTB4MDMwN2EwMDAsIDB4MDY2MDBhNzksIDB4MDUwZjgwZmYsIDB4MDUzZmE4MGEsCi0JMHgwNjAwMDAxMCwgMHgwNzJkNTAwMywgMHgwNzhkMDA5NiwgMHgwMzA3YzAwMywKLQkweDAwMDdkMDA0LCAweDAxMDdlMDA1LCAweDAzMDdmMDA2LCAweDAyMDgwMDA3LAotCTB4MDAwODEwMDgsIDB4MDEwODIwMDksIDB4MDMwODMwMGEsIDB4MDAwODQwMGIsCi0JMHgwMzA4NTAwYywgMHgwNjhkMDBhMSwgMHgwNjc4MDA3YSwgMHgwN2YwMDAwMCwKLQkweDAxMDg4MGZmLCAweDAzMzg2MDAwLCAweDAzMDEwMDAwLCAweDA3MmU2MzAwLAotCTB4MDIwZWYwN2YsIDB4MDI4NjAwMTAsIDB4MDcwZmYwN2QsIDB4MDQ1MDA0N2MsCi0JMHgwNTBmODBmZiwgMHgwMDJmYTgxOSwgMHgwNjhkMDBhZSwgMHgwMjA4MDAwMSwKLQkweDAwMDgxMDAyLCAweDA0NDg4MDdhLCAweDA2ODEwMGI1LCAweDAzNzlmZjAzLAotCTB4MDcwMDAwZmYsIDB4MDEwODIwMDMsIDB4MDY4ZDAwYjYsIDB4MDIzODYwMDQsCi0JMHgwMzAxMDAwMCwgMHgwNzJlNmMwMCwgMHgwMjgwMDAxMCwgMHgwNjc4MDA0MywKLQkweDA3MDAwMGYwLCAweDA2ODEwNWQ1LCAweDA1MDAyMGZmLCAweDAyN2MwMDAyLAotCTB4MDYwMDAwMTAsIDB4MDc4MTAwYzMsIDB4MDI4MDA1ZDUsIDB4MDcwMGMwZDEsCi0JMHgwMzc5ZmYwYywgMHgwNzAwMDBmZiwgMHgwMzgwMDA4ZSwgMHgwMjA0YTA1MSwKLQkweDA2NzgwMDQzLCAweDA3MDAwMGYwLCAweDAzN2MwMGZmLCAweDA2MDAwMDEwLAotCTB4MDc4MTgxNmEsIDB4MDcyZDYwMDAsIDB4MDE5NDg1YmUsIDB4MDUwZmIwNTYsCi0JMHgwNDQ4ODBlNiwgMHgwNDgxODAxMCwgMHgwNjBmZjBkMCwgMHgwMTc5ZmVmZiwKLQkweDA3MDBmZmZmLCAweDA1N2RmZWZmLCAweDA3MDBmZmZmLCAweDA2ODEwNWJjLAotCTB4MDVhMDAyMTIsIDB4MDM0OWMwZTQsIDB4MDc4MTgxMWQsIDB4MDcwZmYwOTMsCi0JMHgwNTAwMTBmZiwgMHgwNzBmZjA5MywgMHgwNDVjMDQwMSwgMHgwNTgxODBkYiwKLQkweDAyMDQ2MDkyLCAweDA0MDAyMDQ2LCAweDA0NjAwMjAyLCAweDAwNTQwNDAxLAotCTB4MDQ4MjgwZTYsIDB4MDQ1MDA0MjUsIDB4MDcwMDYwZmYsIDB4MDczMGZmZmYsCi0JMHgwNzAwMDAwZiwgMHgwNzQyMDAwZiwgMHgwNTgxMDE5MCwgMHgwNmEwMDVhNCwKLQkweDA2NDhhMDAyLCAweDA0ODE4MGU5LCAweDAwMDQ3MDg5LCAweDA3MGZmMDQ3LAotCTB4MDQ1YzA0NDMsIDB4MDc3ODAwZmYsIDB4MDdmMDAwMDAsIDB4MDc4MTgxOGUsCi0JMHgwNzc4MDA0NywgMHgwNTAwZTAwMCwgMHgwNDgxODVhYiwgMHgwNzBmZjAwNiwKLQkweDAxODYwMTE3LCAweDAxNzlmZTQ3LCAweDA3MDAwMDBmLCAweDAxMDQ4MGZmLAotCTB4MDU2YzcwNDgsIDB4MDY4MTgxMDIsIDB4MDA3YTBkNGEsIDB4MDQwMDM4MDEsCi0JMHgwMjIwZjAwMSwgMHgwMTgwMDEwZiwgMHgwNzYwOGU0OCwgMHgwMzRhNjBmZiwKLQkweDA3MDBmMGZmLCAweDA3NGI4OGZmLCAweDAzNzAwMGZmLCAweDA3MDAwNjAwLAotCTB4MDU1MDA0NDgsIDB4MDc0ZDAwZmYsIDB4MDQ1YTA0NGEsIDB4MDMwNGEwZmYsCi0JMHgwNzBmZjAwZiwgMHgwMTU0MDQwNiwgMHgwNTgyMDExNywgMHgwNDk1MDEyMCwKLQkweDA1YTAwMWJkLCAweDAyODY4MTIzLCAweDAxMzRiZmZmLCAweDA3MGZmZmZmLAotCTB4MDEwNDEwMmUsIDB4MDUwZmQwNDEsIDB4MDA4MDAxMjYsIDB4MDU5NTAxMWQsCi0JMHgwNWEwMDFiZCwgMHgwMTg2MDExZCwgMHgwMjAyZjAwZSwgMHgwNTJlNDAzMCwKLQkweDA0MGZkMDJmLCAweDA3MGZjMGZmLCAweDA1YTAwMjE4LCAweDAyODAwMDEwLAotCTB4MDQwMGUwMmYsIDB4MDQyZTQwMjAsIDB4MDIwMmYwNTEsIDB4MDAwNDEwMGUsCi0JMHgwMDA0YjAwZSwgMHgwNTBmZDA0MSwgMHgwMjRhNmM0NiwgMHgwNDUwMDQyMywKLQkweDA1MDA3MGZmLCAweDAzNjIwMDI0LCAweDA1MDA4MGZmLCAweDA0MDA0MDQ2LAotCTB4MDcwMDUwMGYsIDB4MDMyMDYwMDAsIDB4MDU2MDEwNDgsIDB4MDcwMGEwZmYsCi0JMHgwNzAwOTAwYSwgMHgwNzBmZjAwNSwgMHgwNDUwMDQ0NiwgMHgwMDU0MDQyNSwKLQkweDA0ODIwMTU3LCAweDA1NjAxNjIyLCAweDA1MGY4MGZmLCAweDA2M2ZhMDMyLAotCTB4MDYwMDAwMDIsIDB4MDMyMDMwMDAsIDB4MDEyMDQwMDAsIDB4MDMyMDUwMDAsCi0JMHgwMTIwYjAwMCwgMHgwMzIwYzAwMCwgMHgwNzYwMTQ0MSwgMHgwNTBmODBmZiwKLQkweDA0M2ZhODUyLCAweDA2MDAwMDAxLCAweDA3MGZmMDU2LCAweDA1NmMwMmZmLAotCTB4MDUwZmIwZmYsIDB4MDcwNTYwZmYsIDB4MDMwNzkwNDEsIDB4MDU2MDBlNDEsCi0JMHgwNTBmODBmZiwgMHgwNzNmYTAxMSwgMHgwNjAwMDAzZCwgMHgwNjc4MDA0MywKLQkweDA3ZjAwMDAwLCAweDA2NWEwMDdhLCAweDAxMDg4MGZmLCAweDA0YTAwMWI2LAotCTB4MDU4ZDAxNTAsIDB4MDIwOGEwNGEsIDB4MDEwOGIwNGIsIDB4MDIzODYwMDEsCi0JMHgwMzAxMDAwMCwgMHgwNzJlNjMwMCwgMHgwMjgwMDBhOCwgMHgwNTAwZDAwYSwKLQkweDA1NTAwNDA1LCAweDAxNGE2OGZmLCAweDA3MDA5MGZmLCAweDAxNTQwNDBhLAotCTB4MDcwMGMwZmYsIDB4MDYwMGEwMjMsIDB4MDUwMGIwMjQsIDB4MDIyMDYwMDEsCi0JMHgwNTYwMTYyMiwgMHgwNTBmODBmZiwgMHgwNjNmYTA0YSwgMHgwNjAwMDAwMiwKLQkweDA1NjAxMDIyLCAweDA1MGY4MGZmLCAweDA0M2ZhODE5LCAweDA2MDAwMDAxLAotCTB4MDYwMGEwMGQsIDB4MDE4MDAxM2MsIDB4MDY3ODAwNDMsIDB4MDcwMDAwZjAsCi0JMHgwNTAwMTBmZiwgMHgwMjdjMDAwMSwgMHgwNzAwMDAzMCwgMHgwNzgxMDViMiwKLQkweDAyN2MwMDAxLCAweDA2MDAwMDIwLCAweDA3ODEwNWIyLCAweDAzODAwNWNhLAotCTB4MDU0ODgwZmYsIDB4MDY4MTAwMTAsIDB4MDcwZmYwNTYsIDB4MDUwZmIwZmYsCi0JMHgwNDQ4ODBlNSwgMHgwNTgxMDE3ZCwgMHgwNDQ4ODBlNiwgMHgwNDgxODAxMCwKLQkweDAwODAwMTgzLCAweDA1NmMwMmZmLCAweDA1MGZiMGZmLCAweDA3MDU2MGZmLAotCTB4MDcyZTUzMDAsIDB4MDQ0ODgwZTYsIDB4MDQ4MTgwMTAsIDB4MDcyZDUwMDMsCi0JMHgwNjc4MDA0MywgMHgwN2YwMDAwMCwgMHgwMTA4ODBmZiwgMHgwNThkMDE4NywKLQkweDAzMzg2MDA1LCAweDAzMDEwMDAwLCAweDAzM2U2MDAwLCAweDA3MDAwMDBjLAotCTB4MDUyZTUyMDAsIDB4MDI4MDAwMTAsIDB4MDEyMDkxOGUsIDB4MDE4MDA0ZTQsCi0JMHgwMTIwOTE5MCwgMHgwMTgwMDRlNCwgMHgwMDIwOTE5MiwgMHgwMTgwMDRlNCwKLQkweDAzMjA5MDAwLCAweDAxODAwNGU0LCAweDAxMjA5MTk2LCAweDAxODAwNGU0LAotCTB4MDAyMDkxOTgsIDB4MDE4MDA0ZTQsIDB4MDI0OTMwNzUsIDB4MDY4MTA1MGIsCi0JMHgwMTIwOTE5YSwgMHgwMTgwMDRlNCwgMHgwNjYwMWUwMSwgMHgwNTBmODBmZiwKLQkweDA2M2ZhMDI5LCAweDA2MDAwMDA4LCAweDAyMDE1MDEwLCAweDAyMDE2MDUxLAotCTB4MDAwMTcwNTEsIDB4MDAwMTEwNTEsIDB4MDU2MDFhNDEsIDB4MDUwZjgwZmYsCi0JMHgwNTNmYTgzYSwgMHgwNjAwMDAwOCwgMHgwNTYwMGU0MSwgMHgwNTBmODBmZiwKLQkweDAxNDY0MDAwLCAweDAzMmZhMDBhLCAweDA3MDA2MDExLCAweDA1MDA3MDEyLAotCTB4MDQwMDgwMTMsIDB4MDcwMDkwMTQsIDB4MDYwMGEwMTUsIDB4MDQwMGIwMTYsCi0JMHgwNzAwYzAxNywgMHgwN2MwMDAwMCwgMHgwNzJkNTAwMywgMHgwNjYwMTQ3OSwKLQkweDA1MGY4MGZmLCAweDA0OGQwMWI5LCAweDA2M2ZhMDUxLCAweDA2MDAwMDNlLAotCTB4MDdjMDAwMDAsIDB4MDYwMDUwNTEsIDB4MDQwMGUwMmMsIDB4MDY2MDA2MGUsCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwgMHgwMzc5ZmYwMCwgMHgwNzAwMDBmZiwKLQkweDA3NmMwMDAwLCAweDA1ODEwMWRkLCAweDA2NjA0ODBlLCAweDA1MDBlMGZmLAotCTB4MDM0MDAwZmYsIDB4MDE1NDA0MjcsIDB4MDU4MjAyMGEsIDB4MDM0MDAwMDUsCi0JMHgwNzBmZjAwNSwgMHgwNTVjMDQyOCwgMHgwNDgxMDIwZSwgMHgwMTY4MGUwNSwKLQkweDA1NmMwNDA1LCAweDA2ODE4MWJmLCAweDA0MGY4MDI5LCAweDA1M2ZhODA5LAotCTB4MDcwMDAwMjQsIDB4MDY2MDA2NDksIDB4MDUwZjgwZmYsIDB4MDMyZmEwMDksCi0JMHgwMzc5ZmYwMCwgMHgwNzAwMDBmZiwgMHgwNzZjMDAwMCwgMHgwNjgxODFiZiwKLQkweDA0MDBlMDQ5LCAweDAzNDAwMDJkLCAweDA1MGY4MDJiLCAweDA1M2ZhODBhLAotCTB4MDYwMDAwMTYsIDB4MDY2MDQ4MGUsIDB4MDMwMmMwZmYsIDB4MDM0MDAwZmYsCi0JMHgwMTU0MDQyNywgMHgwNTgyMDIwYywgMHgwNzJkNjAwMCwgMHgwNDYwMDQwZSwKLQkweDA1MGY4MGZmLCAweDAxMDRlMGQxLCAweDAzNzlmZjRlLCAweDA3MDBmZmZmLAotCTB4MDYyZDYwMDIsIDB4MDMyZmEwMDksIDB4MDAwNGQwZDAsIDB4MDc0YjAwNGQsCi0JMHgwNzc4MDAwMCwgMHgwN2ZmZmYwMCwgMHgwNTVhMDQ0ZCwgMHgwNzAwMDBmZiwKLQkweDAwMjAxMDA4LCAweDA0MDAyMDUxLCAweDA2MDAzMDUxLCAweDA1MzA0MDAwLAotCTB4MDcwMDAwNjAsIDB4MDMyMDUwMDksIDB4MDcwMDYwMjIsIDB4MDQ2MDA0MGUsCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAzYSwgMHgwNjYwM2MwZSwgMHgwNTBmODBmZiwKLQkweDA3M2ZhMDBhLCAweDA3MDAwMDI3LCAweDA1MDAxMGQxLCAweDA0NjAzMjBlLAotCTB4MDUwZjgwZmYsIDB4MDEyZmE4MGEsIDB4MDYwZmYwMGUsIDB4MDU1YzA0MmUsCi0JMHgwNDgxMDIxMCwgMHgwN2MwMDAwMCwgMHgwNDAwZTAyNiwgMHgwMDgwMDFjYiwKLQkweDAyMDJjMDI2LCAweDAwODAwMWU2LCAweDA1MDBlMDJlLCAweDAwODAwMWU2LAotCTB4MDQwMGUwNTEsIDB4MDE4MDAyMDksIDB4MDM0OWMwZTQsIDB4MDQ4MTAyMTUsCi0JMHgwN2MwMDAwMCwgMHgwMTNlNDAwMCwgMHgwNzBjMDAwMCwgMHgwN2MwMDAwMCwKLQkweDAxM2U0MDAwLCAweDAzMDgwMDAwLCAweDA3YzAwMDAwLCAweDAwOTcwMmY0LAotCTB4MDIyYTUwMDIsIDB4MDc5MDgyMWQsIDB4MDA5MTAyOTEsIDB4MDMwNDAwYTYsCi0JMHgwNjc4YWFlNSwgMHgwNjAwMDAwMSwgMHgwMWExODYwYywgMHgwNjYwMGM0MCwKLQkweDA1MGY4MGZmLCAweDAzMmZhMDIxLCAweDA3NGIwMDAwLCAweDA3NmMwNjAwLAotCTB4MDc4MTgyOTMsIDB4MDU2MDA0MDMsIDB4MDUwZjgwZmYsIDB4MDczZmEwMDksCi0JMHgwNjAwMDAwMiwgMHgwMjc5ZmYwNCwgMHgwNzAwZmZmZiwgMHgwMTA0NDBkNywKLQkweDAxNzlmZTQ0LCAweDA3MDBmZmZmLCAweDA0NWMwNDA0LCAweDA3ODE4Mjk1LAotCTB4MDM0OWYwNDQsIDB4MDY4MTgyOWUsIDB4MDI0OTUwMDEsIDB4MDY4MTgyOTcsCi0JMHgwNjBmZjA3OSwgMHgwNDVjMDQ0MCwgMHgwNzgxODIzYywgMHgwNjQ0ZjA3YSwKLQkweDAwMmZiMDA4LCAweDA2MGZmMDc5LCAweDA0NWMwNDQwLCAweDA3ODE4MjQxLAotCTB4MDY0NGYwN2EsIDB4MDAyZmIwMDgsIDB4MDY0OGYwMDEsIDB4MDc4MTgyODgsCi0JMHgwNDYwMGU0MCwgMHgwNTBmODBmZiwgMHgwNjQ4MDAwMSwgMHgwNDgxMDI1NywKLQkweDA0NDhlMDAxLCAweDA0ODEwMjczLCAweDAyNDYwMDAxLCAweDA2NDRmMDAxLAotCTB4MDEyZmE4MGEsIDB4MDQwMDgwNDAsIDB4MDVhMDA0ZWUsIDB4MDI4NjgyOGMsCi0JMHgwNWEwMDRkOCwgMHgwNjJkYTAwMSwgMHgwMTNlNDAwMCwgMHgwNjAwMDA4MCwKLQkweDA2OTMwMDEzLCAweDAyOTIwMDEzLCAweDAyODAwMDEwLCAweDA2NDRmMDAxLAotCTB4MDEyZmE4MGEsIDB4MDIwZWYwMDIsIDB4MDA4NjAyNzUsIDB4MDQ2MDA4NDAsCi0JMHgwNTBmODBmZiwgMHgwNTNmYTgwOSwgMHgwNjAwMDAwMiwgMHgwNTc4MDEwNSwKLQkweDAwODAwNDQwLCAweDAxN2MwMTA1LCAweDA1MDAwNDAwLCAweDA2ODE4Mjc1LAotCTB4MDY2MDFlMDIsIDB4MDUwZjgwZmYsIDB4MDUzZmE4MDksIDB4MDYwMDAwMDIsCi0JMHgwNDYwMmE0MCwgMHgwNTBmODBmZiwgMHgwNzBmZjAwNSwgMHgwNTNmYTgwOSwKLQkweDA2MDAwMDAyLCAweDA1NWMwNDA1LCAweDA2ODE4Mjc1LCAweDA0MDA4MDQwLAotCTB4MDA0NWUwMDgsIDB4MDVhMDA0ZDgsIDB4MDA4MDAyNTEsIDB4MDY0NGYwMDEsCi0JMHgwMTJmYTgwYSwgMHgwNTAwMjBkOCwgMHgwNDYwMDQ0MCwgMHgwNTBmODBmZiwKLQkweDA3M2ZhMDBhLCAweDA2MDAwMDAxLCAweDA2NDgwMDAxLCAweDA3ODE4MjgxLAotCTB4MDUzMDgwMDAsIDB4MDMwNDAwMDAsIDB4MDYwMDkwNDAsIDB4MDRhMDA0ZGMsCi0JMHgwMDgwMDI1MSwgMHgwN2EwMDYwYywgMHgwNTRiMDgwMCwgMHgwNTZhMDcwMCwKLQkweDA2NjAwYzQwLCAweDA1MGY4MGZmLCAweDAzMmZhMDBhLCAweDAwODAwMjUxLAotCTB4MDEzZTQwMDAsIDB4MDYwMDAwODAsIDB4MDEyMDkyODgsIDB4MDE4MDA0ZTQsCi0JMHgwNjAwOTAwOCwgMHgwNTMwODAwMCwgMHgwNTAwNDAwMCwgMHgwNGEwMDRkYywKLQkweDAwODAwMjUxLCAweDAyMjA5MDAyLCAweDAwODAwMmU1LCAweDAzMjA5MDAwLAotCTB4MDA4MDAyZTUsIDB4MDIyMDkwMDQsIDB4MDA4MDAyZTUsIDB4MDRhMDAyZmQsCi0JMHgwNjJkYTAwMSwgMHgwNTMwODAwMCwgMHgwNTAwMjAwMCwgMHgwNjAwOTA0MCwKLQkweDA0YTAwNGRjLCAweDAwODAwMjUyLCAweDAxM2U0MDAwLCAweDA2MDAwMDgwLAotCTB4MDI0OTUwMDEsIDB4MDc4MTgyZGIsIDB4MDQ2MDA4NDAsIDB4MDUwZjgwZmYsCi0JMHgwNTNmYTgwOSwgMHgwNjAwMDAwMSwgMHgwNzIxZjAwMCwgMHgwMzQ5ZjAwMywKLQkweDA1ODEwMmFhLCAweDAyNDVmMDFmLCAweDA2MDAwMDAyLCAweDAxODYwMmRiLAotCTB4MDc2MDE0MDAsIDB4MDUwZjgwZmYsIDB4MDEyZmE4MDksIDB4MDY0ODAwMDEsCi0JMHgwNTgxMDJkYiwgMHgwNjYwMjQ0MCwgMHgwNTBmODBmZiwgMHgwMTJmYTgwOSwKLQkweDAyMGVmMDAxLCAweDAzODY4MmRiLCAweDAxOWIwMmRiLCAweDA1MDAyMGQ4LAotCTB4MDYyZGEwMDEsIDB4MDYzMDMwMDIsIDB4MDUwMDA0MzAsIDB4MDQ2MDA0NDAsCi0JMHgwNTBmODBmZiwgMHgwNzNmYTAxMiwgMHgwNjAwMDAwMSwgMHgwMjhmODJiZiwKLQkweDA1MDA0MGQ4LCAweDA2MmRhMDAxLCAweDA3NjAxZTAwLCAweDA1MGY4MGZmLAotCTB4MDczZmEwMDksIDB4MDYwMDAwMDEsIDB4MDYwZmYwMDQsIDB4MDA1NDA0MDIsCi0JMHgwNDgyMDJkOSwgMHgwNjAwNTA1MSwgMHgwNjAwNjA1MSwgMHgwNjYwMjI0MCwKLQkweDA1MGY4MGZmLCAweDA2M2ZhMDFhLCAweDA2MDAwMDAyLCAweDA2NjAwYTQwLAotCTB4MDUwZjgwZmYsIDB4MDczZmEwMGEsIDB4MDcwMDAwMDMsIDB4MDYwZmYwNDAsCi0JMHgwNDVhMDQxZiwgMHgwMTBlYjBmZiwgMHgwNjkzMDAxMywgMHgwMjkyMDAxMywKLQkweDAyODAwMDEwLCAweDA0MDA0MDAyLCAweDAxODAwMmM5LCAweDA0YTAwMmZkLAotCTB4MDYyZGEwMDEsIDB4MDUzMDgwMDAsIDB4MDcwMDUwMDAsIDB4MDYwMDkwNDAsCi0JMHgwNGEwMDRkYywgMHgwNTAwODBkOCwgMHgwNWEwMDRlMSwgMHgwNjJkYTAwMSwKLQkweDAyODAwMDEzLCAweDA1MGZkMDA5LCAweDA1MGZkMDQxLCAweDAxM2U0MDAwLAotCTB4MDYwMDAwODAsIDB4MDUzMDgwMDAsIDB4MDMwMTMwMDAsIDB4MDRhMDA0ZGMsCi0JMHgwMTA0NDBkNywgMHgwMzQ5ZjA0NCwgMHgwNDgxMDJmMiwgMHgwNjJkYTAwMSwKLQkweDAwOGYwMmYyLCAweDAzZTAwMDAwLCAweDA2MmRhMDAxLCAweDAyODAwMDEzLAotCTB4MDI0OWMwZTUsIDB4MDY4MTAwMTMsIDB4MDYyZGEwMDEsIDB4MDdmMDAwMDAsCi0JMHgwN2YwMDAwMCwgMHgwMzNlNTAwMCwgMHgwNzBjMDAwMCwgMHgwMThmMDJmNiwKLQkweDAzODAwMDExLCAweDA1MDAyMGQ4LCAweDA0NjAwNDQwLCAweDA1MGY4MGZmLAotCTB4MDczZmEwMGEsIDB4MDYwMDAwMDEsIDB4MDdjMDAwMDAsIDB4MDAyZmIwMDEsCi0JMHgwMzgwMDMwNiwgMHgwMTJmYjAwMCwgMHgwMzA3NTA4NywgMHgwNjhkMDMwNywKLQkweDAzMzg2MDAwLCAweDAzMDIwMDAwLCAweDA0NDgyMDc1LCAweDA2ODEwMzUyLAotCTB4MDY0OGEwZTYsIDB4MDc4MTAzNDcsIDB4MDY0MjAwN2YsIDB4MDY4MTAzNDUsCi0JMHgwMzQwMDA3ZSwgMHgwNjBmZjAzOCwgMHgwMTU0MDQ3ZSwgMHgwMmQwMDMzNCwKLQkweDA1NjAwMjdkLCAweDA1MGY4MGZmLCAweDAzMmZhMDA5LCAweDAzMGVmMDAwLAotCTB4MDI4NjA1MDQsIDB4MDEwN2QwMDAsIDB4MDU2MDA4MDAsIDB4MDUwZjgwZmYsCi0JMHgwMzJmYTAwOSwgMHgwMzY4MWUwMCwgMHgwNDUwMDQyMCwgMHgwNTBmODBmZiwKLQkweDA3M2ZhMDA5LCAweDA3MDAwMDNmLCAweDAzODAwMzExLCAweDA3MGZmMDdkLAotCTB4MDQ1MDA0N2MsIDB4MDUwZjgwZmYsIDB4MDAyZmE4MTksIDB4MDc4ZDAzMjcsCi0JMHgwMjA4MDAwMSwgMHgwMDA4MTAwMiwgMHgwNDQ4ODA3YSwgMHgwNzgxMDMyZSwKLQkweDAzNzlmZjAzLCAweDA3MDAwMGZmLCAweDAxMDgyMDAzLCAweDA2OGQwMzJmLAotCTB4MDIzODYwMDQsIDB4MDMwMTAwMDAsIDB4MDcyZTZjMDAsIDB4MDI4MDAzNTIsCi0JMHgwMzgwMDMzYSwgMHgwMzgwMDMzYywgMHgwMjgwMDMzZSwgMHgwMjgwMDM0MCwKLQkweDAzODAwMzQyLCAweDAzODAwMzQ0LCAweDA3MjdjMDA1LCAweDAyODAwMzIzLAotCTB4MDYyN2MwMDgsIDB4MDI4MDAzMjMsIDB4MDYyN2MwMGIsIDB4MDI4MDAzMjMsCi0JMHgwNjI3YzAwZSwgMHgwMjgwMDMyMywgMHgwNzI3YzAxMSwgMHgwMjgwMDMyMywKLQkweDAzODAwMzE0LCAweDA1MmU2ODAwLCAweDAyODAwMzUyLCAweDA0NDg4MGU2LAotCTB4MDY4MTA1MzEsIDB4MDUyZTYyMDAsIDB4MDcwZmYwODgsIDB4MDE3OWZlZmYsCi0JMHgwNzBmZmZmZiwgMHgwNDgxODUwMSwgMHgwNjBmZjA4MywgMHgwMDg2ODM2ZCwKLQkweDAzM2U2MDAwLCAweDA3MDAwMDAzLCAweDA2OGQwMzUyLCAweDA3Mjg2MDAwLAotCTB4MDdmMDAwMDAsIDB4MDc4ZDAzNTUsIDB4MDM4YzAzMDYsIDB4MDY0OGMwZTYsCi0JMHgwNTgxODM3MiwgMHgwNDQ4ZTBlNiwgMHgwNzgxMDM2YSwgMHgwMDQ5MjBlNiwKLQkweDA3ODEwMzY1LCAweDA2YTAwNTZkLCAweDA1MDAxMDg4LCAweDAwNzAwMTAxLAotCTB4MDMxMDAwMDAsIDB4MDAwODgwMDEsIDB4MDMzZTYwMDAsIDB4MDcwMDAwODgsCi0JMHgwMjgwMDU1ZSwgMHgwMjM4NjAwMSwgMHgwNzAzMDAwMCwgMHgwMzNlNjAwMCwKLQkweDA2MDAwMDA4LCAweDAyODAwM2YxLCAweDAyNzk5MDc1LCAweDA1MDAwNDBmLAotCTB4MDY4MTAwMTAsIDB4MDY2MDE0NzksIDB4MDUwMDgwZmYsIDB4MDYzMDkwNTIsCi0JMHgwNjAwMDAzZSwgMHgwMjgwMDM3NiwgMHgwNjYwMjI3OSwgMHgwNTAwODBmZiwKLQkweDA1MzA5ODEyLCAweDA3MDAwMDQxLCAweDA2NDgwMDdhLCAweDA3ODEwMzdlLAotCTB4MDQ0ODgwNzUsIDB4MDU4MTgzN2UsIDB4MDQwZjgwMDgsIDB4MDcwZmEwMDksCi0JMHgwMDQ5MTA3YSwgMHgwMWExODNmMywgMHgwMDc5ODA3NSwgMHgwNjAwMDUwNywKLQkweDA0ODE4NTFjLCAweDA0NDhiMDc1LCAweDA2ODEwMzg1LCAweDAyNDkzMDc1LAotCTB4MDc4MTA1MDksIDB4MDI0OWMwZTYsIDB4MDQ4MTgzZTAsIDB4MDY0OGMwZTYsCi0JMHgwNTgxODM5YSwgMHgwNjhkMDM4OSwgMHgwMjM4NjAwMSwgMHgwNzAzMDAwMCwKLQkweDAwNDkxMDdhLCAweDA3ODEwMzkwLCAweDAyMGVmMDgzLCAweDAzODYwMzlhLAotCTB4MDY0ODMwNzUsIDB4MDY4MTAzZWYsIDB4MDY3ODAwN2EsIDB4MDcwMDAwMzUsCi0JMHgwM2ExODRjZiwgMHgwNTMwODAwMCwgMHgwNzA2MDAwMCwgMHgwNjAwOTA3OSwKLQkweDA0YTAwNGRjLCAweDAyODAwM2VmLCAweDA0NDg4MDdhLCAweDA2ODEwMzllLAotCTB4MDY0ODMwNzUsIDB4MDU4MTA0ZjksIDB4MDQ0OGQwN2EsIDB4MDY4MTAzYTIsCi0JMHgwNjQ4MzA3NSwgMHgwNTgxMDRmOSwgMHgwNjhkMDNhMiwgMHgwMjM4NjAwMSwKLQkweDA3MDMwMDAwLCAweDA0NDRlMDdhLCAweDA2NDgzMDdhLCAweDA0ODE4M2M3LAotCTB4MDQ0ODcwN2EsIDB4MDY4MTAzZWEsIDB4MDY0OGYwN2EsIDB4MDc4MTAzYjIsCi0JMHgwNWEwMDRjZiwgMHgwNDAwODA3OSwgMHgwNWEwMDRlZSwgMHgwMDg2ODNjMiwKLQkweDA1YTAwNGQ4LCAweDAyODAwM2VmLCAweDA1NjAxMDdiLCAweDA1MGY4MGZmLAotCTB4MDMyZmEwMDksIDB4MDM0OWMwMDAsIDB4MDU4MTgzYzAsIDB4MDQ2MDBlNzksCi0JMHgwNTBmODBmZiwgMHgwNzNmYTAwYSwgMHgwNjAwMDAzZCwgMHgwNjYwMGE3OSwKLQkweDA1MGY4MGZmLCAweDA1M2ZhODBhLCAweDA2MDAwMDEwLCAweDAyODAwM2VmLAotCTB4MDA0NmUwN2EsIDB4MDI4MDAzZWEsIDB4MDYwMDkwMDgsIDB4MDUzMDgwMDAsCi0JMHgwNTAwNDAwMCwgMHgwNGEwMDRkYywgMHgwMjgwMDNlZiwgMHgwNTYwMTY3YiwKLQkweDA1MGY4MGZmLCAweDAzMmZhMDExLCAweDA3MGZmMDAwLCAweDA0NTAwNDAxLAotCTB4MDMwNDYwZmYsIDB4MDYwZmYwMjUsIDB4MDA1NDA0NDYsIDB4MDc4MjAzZDEsCi0JMHgwMzA0NjBmZiwgMHgwNDA5MjA0NiwgMHgwNWEwMDIxOCwgMHgwNjYwMDY3OSwKLQkweDA1MGY4MGZmLCAweDAwMjAxMDA3LCAweDAxMmZhODBhLCAweDAwNDYwNDdhLAotCTB4MDM0NjMwZmYsIDB4MDUwMDIwZmYsIDB4MDYwMDMwNTEsIDB4MDQ2MDBlNzksCi0JMHgwNTBmODBmZiwgMHgwNzNmYTAxMiwgMHgwNjAwMDAwMSwgMHgwMjgwMDNlZiwKLQkweDAzM2U2YTAwLCAweDAyMDIwMDBlLCAweDAyMDc5MDUxLCAweDA3MDAwMDg4LAotCTB4MDc4ZDAzZTQsIDB4MDc0NGMwMDAsIDB4MDEwODgwMDAsIDB4MDMzODYwMDYsCi0JMHgwMzAxMDAwMCwgMHgwMjgwMDAxMCwgMHgwNWEwMDRjZiwgMHgwNTMwODAwMCwKLQkweDAzMDIwMDAwLCAweDA2MDA5MDc5LCAweDA0YTAwNGRjLCAweDAzM2U2YTAwLAotCTB4MDMwMjAwMGEsIDB4MDIwNzkwNTEsIDB4MDI4MDAwMTAsIDB4MDQ2MDNlNzksCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwgMHgwNzBmZjAwMCwgMHgwMTg2MDQwYywKLQkweDA1N2RmZWZmLCAweDA3ZmZmZmZmLCAweDA1ODEwNDBjLCAweDA1MGY4MDAwLAotCTB4MDEyZmE4MTEsIDB4MDA3OWZlMDIsIDB4MDcwMDAwZmYsIDB4MDc3ZDY2ZmYsCi0JMHgwNjAwMDBkYywgMHgwNzgxODQwYywgMHgwNjBmZjAwMSwgMHgwMjg2ODQwZCwKLQkweDA2NGIwMDAyLCAweDA2NDIwMDAyLCAweDA2MGZmMDAyLCAweDA1NTAwNDAwLAotCTB4MDUwZjgwZmYsIDB4MDUwMDQwODQsIDB4MDczZmEwMGEsIDB4MDYwMDAwMDIsCi0JMHgwN2MwMDAwMCwgMHgwNDYwMDIwMSwgMHgwNTBmODBmZiwgMHgwNzNmYTAwOSwKLQkweDA2MDAwMDAxLCAweDAwNzlmZTAyLCAweDA3MDAwMGZmLCAweDA3N2Q3MmZmLAotCTB4MDcwMDAwZGQsIDB4MDc4MTg0MGMsIDB4MDY0YjAwMDIsIDB4MDY0MjAwMDIsCi0JMHgwNjAwMDAwMSwgMHgwMTgwMDQwNiwgMHgwNjA1MDA0YywgMHgwMTgwMDQxZSwKLQkweDA0OTMwNDFhLCAweDA0YTAwNGQ1LCAweDA1NGJjNDUwLCAweDA1ODEwNDIxLAotCTB4MDFkMDA0MjIsIDB4MDE4MDA0MjEsIDB4MDA4MDA0MzIsIDB4MDA4MDA0MzQsCi0JMHgwMDgwMDQzMiwgMHgwMDgwMDRhNywgMHgwMTgwMDQzZiwgMHgwMDgwMDQzNCwKLQkweDAxODAwNDcxLCAweDAwODAwNDMyLCAweDAwODAwNDMyLCAweDAwODAwNGFiLAotCTB4MDA4MDA0MzIsIDB4MDE4MDA0YWYsIDB4MDA4MDA0YzQsIDB4MDE4MDA0ODgsCi0JMHgwMDgwMDQzMiwgMHgwMDgwMDQzMiwgMHgwMDIwOTQzMiwgMHgwMTgwMDRlNCwKLQkweDAzNzlmZjUwLCAweDA3MGZmZmZmLCAweDA2MGZmMDc5LCAweDA1NWMwNDUwLAotCTB4MDQ4MTA0YTQsIDB4MDAyZmIwMDgsIDB4MDYwZmYwNzksIDB4MDU1YzA0NTAsCi0JMHgwNTgxMDRhMywgMHgwNGEwMDRjNywgMHgwMTgwMDQ5YywgMHgwMTc5ZmU1MCwKLQkweDA3MGZmZmZmLCAweDA3MDA1MGZmLCAweDA2MGZmMDc5LCAweDA1NWMwNDA1LAotCTB4MDQ4MTA0NDksIDB4MDAyZmIwMDgsIDB4MDYwZmYwNzksIDB4MDU1YzA0MDUsCi0JMHgwNzgxODRhMCwgMHgwNzBmZjA4NywgMHgwMTc5ODBmZiwgMHgwNjAwMDUwNywKLQkweDA2ODE4NDUxLCAweDAyMjAzMDQwLCAweDA1MDAyMDg3LCAweDAwNDlkMDAyLAotCTB4MDQ4MTA0NmIsIDB4MDQ5MzA0NTgsIDB4MDEyNTcwMDAsIDB4MDczYzNmZmYsCi0JMHgwNzAwMDAwZiwgMHgwNTJlNDAwMywgMHgwNzJlNTAzMCwgMHgwMzA0YzA1MCwKLQkweDAyNDAwMDU3LCAweDA2NzQwMDU3LCAweDA2MDAwMDAyLCAweDA2ODIwMDE2LAotCTB4MDQwMDIwODMsIDB4MDcwMDMwODQsIDB4MDQwMDQwODUsIDB4MDY2MDIyNzksCi0JMHgwNTBmODBmZiwgMHgwNjNmYTAxYSwgMHgwNjAwMDAwMSwgMHgwNWEwMDRjZiwKLQkweDA2YTAwNTc2LCAweDAzM2U2YTAwLCAweDAzMDIwMDBhLCAweDA2MmU1MDIwLAotCTB4MDAzZTQwMDIsIDB4MDcwMDBhMDAsIDB4MDI4MDAzZjEsIDB4MDc0MjAwMDMsCi0JMHgwNzgxODQ0ZSwgMHgwMDc5ODAwMiwgMHgwNjAwMDUwNywgMHgwNjgxODQ1MSwKLQkweDAxODAwNDVjLCAweDA1OTMwNDc4LCAweDAxMjU3MDAwLCAweDA3M2MzZmZmLAotCTB4MDcwMDAwMGYsIDB4MDUyZTQwMDMsIDB4MDcyZTUwMzAsIDB4MDMwNGMwNTAsCi0JMHgwNjc4MDBlNiwgMHgwNzAwMDA0MSwgMHgwNTgxMDQ3ZCwgMHgwNmEwMDU3ZiwKLQkweDA0ODE4MDE2LCAweDAwMmZiMDA4LCAweDA2NzgwMGU2LCAweDA3MDAwMDQxLAotCTB4MDQ4MTA0ODMsIDB4MDZhMDA1N2YsIDB4MDQ4MTgwMTYsIDB4MDYyZTUwMjAsCi0JMHgwMDNlNDAwMiwgMHgwNzAwMGEwMCwgMHgwM2UwMDAwMCwgMHgwMjgwMDAxMCwKLQkweDAzNzlmZjUwLCAweDA3MGZmZmZmLCAweDA2MGZmMDc5LCAweDA1NWMwNDUwLAotCTB4MDc4MTg0OGUsIDB4MDI0NTUwN2EsIDB4MDAyZmIwMDgsIDB4MDYwZmYwNzksCi0JMHgwNTVjMDQ1MCwgMHgwNzgxODQ5MywgMHgwMjQ1NTA3YSwgMHgwMDJmYjAwOCwKLQkweDA1NjAwZTUwLCAweDA1MGY4MGZmLCAweDAxMmZhODA5LCAweDAyNDU1MDAxLAotCTB4MDU2MDBlNTAsIDB4MDUwZjgwZmYsIDB4MDEyZmE4MGEsIDB4MDA4MDA0OWQsCi0JMHgwMDJmYjAwOCwgMHgwMDNlNDAwMiwgMHgwNzAwMGEwMCwgMHgwMjgwMDAxNiwKLQkweDA3OTM4NGEzLCAweDA2MmU1MDIwLCAweDA0MmU0MDAyLCAweDAwMmZiMDA4LAotCTB4MDEzZTQwMDAsIDB4MDUwMDBlMDAsIDB4MDI4MDAwMTYsIDB4MDE3OWZlNTAsCi0JMHgwNzBmZmZmZiwgMHgwMTAyMTBmZiwgMHgwMjgwMDAxNiwgMHgwMTc5ZmU1MCwKLQkweDA3MGZmZmZmLCAweDA1MDM0MGZmLCAweDAwODAwNDlkLCAweDAxNzlmZTUwLAotCTB4MDcwZmZmZmYsIDB4MDEwMmUwZmYsIDB4MDc2MDI4MmUsIDB4MDUwZjgwZmYsCi0JMHgwNTIyMjAwMCwgMHgwNzIyMzAwMCwgMHgwNTIyNDAwMCwgMHgwNzIyNTAwMCwKLQkweDA3MjI2MDAwLCAweDA1MjI3MDAwLCAweDA1MjI4MDAwLCAweDA3MjI5MDAwLAotCTB4MDcyMmEwMDAsIDB4MDUyMmIwMDAsIDB4MDYzZmEwNTEsIDB4MDcwMDAwMTEsCi0JMHgwMjAyYzAyNiwgMHgwNTIyZDAwMCwgMHgwNTJlNDAwYywgMHgwMjgwMDAxNiwKLQkweDAzMDQzMGQ0LCAweDA2MmU1MDA4LCAweDAwODAwMTc2LCAweDA1NjAwZTUwLAotCTB4MDUwZjgwZmYsIDB4MDMyZmEwMDksIDB4MDM0NjAwMDAsIDB4MDE4MDA0ZDIsCi0JMHgwMjQ2MDA3YSwgMHgwMDQ1MjA3YSwgMHgwMDgwMDRkMCwgMHgwMjQ2MDA3YSwKLQkweDA2MDAwMDdhLCAweDA0NjAwZTc5LCAweDA1MGY4MGZmLCAweDAzMmZhMDBhLAotCTB4MDdjMDAwMDAsIDB4MDI5Mjg0ZDUsIDB4MDcwNTAwZTEsIDB4MDdjMDAwMDAsCi0JMHgwMjQ1ZjAwOCwgMHgwNDg0MDRkOSwgMHgwMjBlMDAwOCwgMHgwN2MwMDAwMCwKLQkweDA3MGZmMDA5LCAweDA2NWEwMDA4LCAweDA1ODQwNGRlLCAweDAyMGUwMDA4LAotCTB4MDdjMDAwMDAsIDB4MDU4NDA0ZTEsIDB4MDIwZTAwMDgsIDB4MDdjMDAwMDAsCi0JMHgwNTMwODAwMCwgMHgwNTAwZDAwMCwgMHgwNGEwMDRkYywgMHgwNGEwMDRlOSwKLQkweDAyODAwMDEwLCAweDA1MmU0MzAwLCAweDA3MmU1MDBjLCAweDA3M2MzZmZmLAotCTB4MDcwMDAwMGYsIDB4MDdjMDAwMDAsIDB4MDY2MDIyMDgsIDB4MDUwZjgwZmYsCi0JMHgwMzJmYTAxMSwgMHgwNzZhMDAwMCwgMHgwNjgxODRmNywgMHgwNjZhMDAwMSwKLQkweDA0ODEwNGY3LCAweDA0MDAyMDUxLCAweDA3YzAwMDAwLCAweDAwMjAyMDAxLAotCTB4MDdjMDAwMDAsIDB4MDY0ODMwN2EsIDB4MDFhMTg2MDYsIDB4MDVhMDA0Y2MsCi0JMHgwNTMwODAwMCwgMHgwNTAwMTAwMCwgMHgwNjAwOTA3OSwgMHgwNGEwMDRkYywKLQkweDAyODAwNTVlLCAweDAyNDljMGU2LCAweDA1ODEwNGY5LCAweDAyODAwMzZkLAotCTB4MDY0ODMwN2EsIDB4MDc4MTgxOTYsIDB4MDVhMDA0Y2YsIDB4MDIyMDk1MDQsCi0JMHgwMTgwMDRlNCwgMHgwMjQ5MDA3NSwgMHgwNjgxMDUxOSwgMHgwNDAwMjA4OSwKLQkweDA0NzgwMTAyLCAweDA3ZjAwMDAwLCAweDA1MDAxMDg4LCAweDA2YTAwNTZkLAotCTB4MDQ3NDAxMDEsIDB4MDMxMDAwMDAsIDB4MDYwZmYwMDIsIDB4MDQ1YzA0MDEsCi0JMHgwNDgxODUxYSwgMHgwMDA4ODAwMSwgMHgwMzNlNjAwMCwgMHgwNzAwMDBjMCwKLQkweDAzODAwNTVhLCAweDA3ZjAwMDAwLCAweDAyMjA5NTFhLCAweDAxODAwNGU0LAotCTB4MDQwZmQwNzUsIDB4MDQwZmQwN2EsIDB4MDQwZmQwNzksIDB4MDY0ODMwN2EsCi0JMHgwNjgxMDUyNSwgMHgwNjc4MDA3NSwgMHgwNjAwMDAwNywgMHgwNDgxODUyYywKLQkweDA3YTAwNjA2LCAweDA2NDg2MDc1LCAweDA2ODE4MTk0LCAweDAyNDkwMDc1LAotCTB4MDc4MTgxOWEsIDB4MDQ0ODcwNzUsIDB4MDQ4MTg1MzQsIDB4MDI4MDA1M2IsCi0JMHgwNTMwODAwMCwgMHgwMzAxMDAwMCwgMHgwNjAwOTA3OSwgMHgwNGEwMDRkYywKLQkweDAyODAwMDEwLCAweDA0NDhlMGU2LCAweDA0ODE4MzUyLCAweDAwODAwMTkyLAotCTB4MDUzMDgwMDAsIDB4MDUwMGUwMDAsIDB4MDYwMDkwNzksIDB4MDRhMDA0ZGMsCi0JMHgwNDAwODA4OSwgMHgwNWEwMDRlMSwgMHgwMzgwMDU1YSwgMHgwNWEwMDRjYywKLQkweDA1MzA4MDAwLCAweDA3MDBmMDAwLCAweDA2MDA5MDc5LCAweDA3MDAwMDg4LAotCTB4MDZhMDA1NDMsIDB4MDRhMDA0ZGMsIDB4MDI4MDAwMTAsIDB4MDMzODYwMDAsCi0JMHgwNzAzMDAwMCwgMHgwN2YwMDAwMCwgMHgwNjhkMDU0NiwgMHgwMzNlNmEwMCwKLQkweDAyMDIwMDBlLCAweDAyMDc5MDUxLCAweDA0NDhiMDc1LCAweDA2ODEwNTUxLAotCTB4MDI0OTMwNzUsIDB4MDY4MTA1NTEsIDB4MDUzMDEwMDUsIDB4MDMwMTAwMDAsCi0JMHgwMzgwMDU1MywgMHgwNTMwMTAwNiwgMHgwMzAxMDAwMCwgMHgwNTAwMjA4NywKLQkweDA2NDg1MDAyLCAweDA1ODE4NTUzLCAweDA3NDRjMDAwLCAweDAxMDg4MDAwLAotCTB4MDIwODYwMDEsIDB4MDdjMDAwMDAsIDB4MDUwMDEwODgsIDB4MDZhMDA1NmQsCi0JMHgwNjQ0YzAwMSwgMHgwMDA4ODAwMSwgMHgwMzNlNmEwMCwgMHgwMjAyMDAwZSwKLQkweDAwNDkyMGU2LCAweDA1ODE4NTYzLCAweDAyMDc5MDUxLCAweDA3OGQwNTYzLAotCTB4MDYwZmYwODksIDB4MDM0OTkwZmYsIDB4MDc4MTA1NmEsIDB4MDMzODYwMDUsCi0JMHgwMzAxMDAwMCwgMHgwMjgwMDAxMCwgMHgwMzM4NjAwNiwgMHgwMzAxMDAwMCwKLQkweDAyODAwMDEwLCAweDA2OGQwNTZkLCAweDAzMzg2MDAwLCAweDA3MDMwMDAwLAotCTB4MDdmMDAwMDAsIDB4MDc4ZDA1NzEsIDB4MDcwZmYwODcsIDB4MDc0ODUwZmYsCi0JMHgwNTgxODU3MiwgMHgwN2MwMDAwMCwgMHgwNjhkMDU3NiwgMHgwMjM4NjAwMSwKLQkweDA3MDMwMDAwLCAweDA3ZjAwMDAwLCAweDA2OGQwNTdhLCAweDA3MGZmMDg3LAotCTB4MDc0ODUwZmYsIDB4MDU4MTg1N2IsIDB4MDdjMDAwMDAsIDB4MDUwMDIwODcsCi0JMHgwMDQ5ZDAwMiwgMHgwNTgxODU4ZSwgMHgwMDJmYjAwOCwgMHgwNjc4MDBlNiwKLQkweDA3MDAwMDQxLCAweDAwMmZiMDA4LCAweDA1ODE4NThlLCAweDA2YTAwNWE0LAotCTB4MDQ0OGUwMDIsIDB4MDY4MTA1OTEsIDB4MDY0OGEwMDIsIDB4MDQ4MTg1OWIsCi0JMHgwNjQ4NjAwMiwgMHgwNzgxMDU5NSwgMHgwMjQwMDA1NywgMHgwNTZhMDJmZiwKLQkweDA3YzAwMDAwLCAweDA2YTAwNWE0LCAweDA2Nzg4MTAyLCAweDA2MDAwMDA0LAotCTB4MDU4MTg1OGUsIDB4MDQwMDIwODksIDB4MDcwZmYwZDQsIDB4MDQ1YzA0MDIsCi0JMHgwNzc4MDBmZiwgMHgwN2YwMDAwMCwgMHgwNTgxODU4ZSwgMHgwMDIwMjAxMCwKLQkweDAzOGMwNThlLCAweDA3ZjAwMDAwLCAweDA2NDIwMDAyLCAweDA1ODE4NTljLAotCTB4MDZhMDA1NzYsIDB4MDMzZTZhMDAsIDB4MDMwMjAwMGEsIDB4MDdjMDAwMDAsCi0JMHgwN2YwMDAwMCwgMHgwNjBmZjBhMiwgMHgwNTAwMjBmZiwgMHgwNjBmZjBhMiwKLQkweDA0NWMwNDAyLCAweDA1ODE4NWE1LCAweDA3YzAwMDAwLCAweDA1YTAwMjE4LAotCTB4MDM0OTUwNDcsIDB4MDY4MTA1YjAsIDB4MDMyMDkwMWQsIDB4MDI4MDA2MDIsCi0JMHgwMjIwOTAxZiwgMHgwMjgwMDYwMiwgMHgwMTQ5ODBlNCwgMHgwNDgxODAxMCwKLQkweDAxM2U0MDAwLCAweDA3MDAzMDAwLCAweDA1NjAwZTM1LCAweDA1MGY4MGZmLAotCTB4MDdhMDA2ZmEsIDB4MDEyMDgwMDMsIDB4MDVhMDA0ZTEsIDB4MDM4MDA1Y2EsCi0JMHgwMzIwOTAwOSwgMHgwMjgwMDYwMiwgMHgwMzIwOTAxMSwgMHgwMjgwMDYwMiwKLQkweDAyMjA5MDA3LCAweDAyODAwNjAyLCAweDAzMjA5MDAzLCAweDAyODAwNjAyLAotCTB4MDA0OTgwNDMsIDB4MDQ4MTg1YmMsIDB4MDA0OTcwNDMsIDB4MDU4MTg1YzAsCi0JMHgwMjIwOTAwMSwgMHgwMjgwMDYwMiwgMHgwMjIwOTAwZCwgMHgwMjgwMDYwMiwKLQkweDAzMjA5MDBmLCAweDAyODAwNjAyLCAweDAzNDkzMDAwLCAweDA2ODEwNWQzLAotCTB4MDI3YzAwNDUsIDB4MDcwYTAwMDAsIDB4MDY4MTA1ZGMsIDB4MDIyMDkwMGIsCi0JMHgwMjgwMDYwMiwgMHgwMjIwOTAxMywgMHgwNTMwODAwMCwgMHgwMTAxMjAwMCwKLQkweDA0YTAwNGRjLCAweDAwODAwMTgzLCAweDAzMjA5MDA1LCAweDAyODAwNjAyLAotCTB4MDcyZTUwMGMsIDB4MDAyMDgwMDIsIDB4MDVhMDA0ZTEsIDB4MDI4MDAwMTAsCi0JMHgwMjIwOTAxNSwgMHgwMjgwMDYwMiwgMHgwNzJkNjAwMCwgMHgwNTMwODAwMCwKLQkweDA1MDA3MDAwLCAweDA3ZjAwMDAwLCAweDA3MDA5MGQxLCAweDAzNzlmZjA5LAotCTB4MDcwMGZmZmYsIDB4MDRhMDA0ZGMsIDB4MDMyMDkwMTcsIDB4MDI4MDA2MDIsCi0JMHgwMzNlNTAwMCwgMHgwNjAwMDA4MCwgMHgwMjIwOTAxOSwgMHgwMjgwMDYwMiwKLQkweDA3MmQ2MDAwLCAweDAzM2U1MDAwLCAweDA2MDAwMDgwLCAweDA3ZjAwMDAwLAotCTB4MDYwZmYwZDAsIDB4MDE3OWZlZmYsIDB4MDcwMGZmZmYsIDB4MDU3ZGZlZmYsCi0JMHgwNzAwZmZmZiwgMHgwNDgxODAxMCwgMHgwMjQwMDA1OCwgMHgwMDY0MjA1OCwKLQkweDA2ODIwMDEwLCAweDAzM2U1MDAwLCAweDA2MDAwMDgwLCAweDA0MDU4MDUxLAotCTB4MDMyMDkwMWIsIDB4MDI4MDA2MDIsIDB4MDUzMDgwMDAsIDB4MDEwMTIwMDAsCi0JMHgwNGEwMDRkYywgMHgwMDgwMDE3NiwgMHgwNWEwMDIxOCwgMHgwNTMwODAwMCwKLQkweDA1MDA4MDAwLCAweDA2MDA5MDc5LCAweDA0YTAwNGRjLCAweDA3YzAwMDAwLAotCTB4MDM0OTAwZTQsIDB4MDQ4MTg2MTYsIDB4MDEzZTQwMDAsIDB4MDcwMDAwYzAsCi0JMHgwN2YwMDAwMCwgMHgwMzQ5MDBlNCwgMHgwNTgxODYxNCwgMHgwN2MwMDAwMCwKLQkweDAxM2U0MDAwLCAweDA2MDAwMDgwLCAweDA3ZjAwMDAwLCAweDA3ZjAwMDAwLAotCTB4MDdmMDAwMDAsIDB4MDM0OTAwZTQsIDB4MDY4MTA2MGUsIDB4MDI4MDA2MTYsCi0JMHgwNzJkNjAwMCwgMHgwMDQ5ODA0MywgMHgwNzgxMDYzMCwgMHgwNjBmZjBkMCwKLQkweDAxNzlmZWZmLCAweDA3MDBmZmZmLCAweDA1N2RmZWZmLCAweDA3MDBmZmZmLAotCTB4MDQ4MTg1ZTAsIDB4MDUwZjgwMzAsIDB4MDMyZmEwMDksIDB4MDM3OWZmMDAsCi0JMHgwNzAwZmZmZiwgMHgwNzBmZjBkMSwgMHgwMTc5ZmVmZiwgMHgwNzAwZmZmZiwKLQkweDA1NWMwNDAwLCAweDA2ODEwNWUwLCAweDA0MDA0MDUxLCAweDAzODAwNjc4LAotCTB4MDZhMDA2ZGEsIDB4MDYyZDYwMDEsIDB4MDIwZWYwMDQsIDB4MDM4NjA1ZTIsCi0JMHgwNjYwMDAwNCwgMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwgMHgwNzRiMDAwMCwKLQkweDA1MDAyMDAwLCAweDA3NjlmZjAwLCAweDAxNjQwODAwLCAweDA3ODIwNWUyLAotCTB4MDE2NDBlMDAsIDB4MDU4Mjg1ZTIsIDB4MDcwZmYwMzYsIDB4MDQ1YzA0MDQsCi0JMHgwNTgxODY0YiwgMHgwNzJkNjAwMCwgMHgwNTBmODAzMCwgMHgwMzJmYTAwOSwKLQkweDAzNzlmZjAwLCAweDA3MDBmZmZmLCAweDA3MGZmMGQxLCAweDAxNzlmZWZmLAotCTB4MDcwMGZmZmYsIDB4MDU1YzA0MDAsIDB4MDY4MTA1ZTAsIDB4MDQ0ODIwMzQsCi0JMHgwNjgxMDVmZCwgMHgwNjQ4MzAzNCwgMHgwNDgxODVmZCwgMHgwNzBmZjBkNCwKLQkweDA3NzgwMGZmLCAweDA3MDAwMGYwLCAweDAzN2MwMGZmLCAweDA2MDAwMDEwLAotCTB4MDc4MTA2NzgsIDB4MDdhMDA2ZDQsIDB4MDI0OTAwZTUsIDB4MDY4MTA2NWIsCi0JMHgwMzNlNTAwMCwgMHgwNjAwMDA4MCwgMHgwMjgwMDAxMCwgMHgwNDYwMWMwNCwKLQkweDA1MGY4MGZmLCAweDA1M2ZhODA5LCAweDA2MDAwMDIwLCAweDAzMGVmMDQxLAotCTB4MDI4NjA1ZWMsIDB4MDYyZDYwMDIsIDB4MDU2MDJhNDEsIDB4MDUwZjgwZmYsCi0JMHgwMTJmYTgwOSwgMHgwNjBmZjBkMCwgMHgwNzRiMDBmZiwgMHgwNDVjMDQwMSwKLQkweDA0ODE4Njc2LCAweDA2MmQ2MDAxLCAweDA3NjAyODQxLCAweDA1MGY4MGZmLAotCTB4MDUzZmE4MDksIDB4MDYwMDAwMDEsIDB4MDcwZmYwZDEsIDB4MDU0YjgwZmYsCi0JMHgwNzRiMDAwMywgMHgwNTVjMDQwMywgMHgwNDgxODY3NiwgMHgwMzNlNTAwMCwKLQkweDA2MDAwMDgwLCAweDAxODAwNzBjLCAweDA3NjAwMDQxLCAweDAzODAwNjVjLAotCTB4MDdhMDA2ZDQsIDB4MDI0OTAwZTUsIDB4MDc4MTA2N2UsIDB4MDMzZTUwMDAsCi0JMHgwNjAwMDA4MCwgMHgwMjgwMDAxMCwgMHgwN2EwMDZjMCwgMHgwMzBlZjA0MSwKLQkweDAzODYwNWYwLCAweDA0MDU4MDUxLCAweDA3MmQ2MDAwLCAweDA1NjAxMDQxLAotCTB4MDUwZjgwZmYsIDB4MDEyZmE4MDksIDB4MDYwMGEwZDAsIDB4MDUwMGIwZDEsCi0JMHgwNjJkNjAwMSwgMHgwN2YwMDAwMCwgMHgwN2YwMDAwMCwgMHgwNjAwYzBkMCwKLQkweDA1MDBkMGQxLCAweDA2MmQ2MDAyLCAweDAyNzlmZjBkLCAweDA3ZmYwMDAwLAotCTB4MDQ0ZDgwMGQsIDB4MDYwZmYwZDAsIDB4MDc0YjAwZmYsIDB4MDY1YTAwMGQsCi0JMHgwNjYwMTIwMSwgMHgwNTBmODBmZiwgMHgwNzNmYTAyMiwgMHgwNzAwMDAwNSwKLQkweDAwNzlmZTBkLCAweDA3MDAwMGZmLCAweDA1MDAyMGZmLCAweDA1NjAyYTQxLAotCTB4MDUwZjgwZmYsIDB4MDczZmEwMGEsIDB4MDYwMDAwMDEsIDB4MDIwZWYwMDQsCi0JMHgwMzg2MDZiZCwgMHgwNDYwMWMwNCwgMHgwNTBmODBmZiwgMHgwNTNmYTgwOSwKLQkweDA2MDAwMDAxLCAweDA1MGY4MGZmLCAweDA1M2ZhODBhLCAweDA2MDAwMDIwLAotCTB4MDc2MDI4NDEsIDB4MDUwZjgwZmYsIDB4MDczZmEwMDksIDB4MDYwMDAwMDEsCi0JMHgwMjc5ZmYwMiwgMHgwNzAwMDBmZiwgMHgwNjc4MDAwZCwgMHgwNzAwZmYwMCwKLQkweDA2NWEwMDAyLCAweDA3NjAyODQxLCAweDA1MGY4MGZmLCAweDA3M2ZhMDBhLAotCTB4MDYwMDAwMDEsIDB4MDc2MDAwNDEsIDB4MDUwZjgwZmYsIDB4MDUzZmE4MGEsCi0JMHgwNjAwMDAwMSwgMHgwNzYwMTI0MSwgMHgwNTBmODBmZiwgMHgwNzNmYTAwYSwKLQkweDA2MDAwMDAyLCAweDAzM2U1MDAwLCAweDA2MDAwMDgwLCAweDAxODAwNzBjLAotCTB4MDQwZjgwMzIsIDB4MDczZmEwMTEsIDB4MDYwMDAwMDEsIDB4MDYwZmYwMDIsCi0JMHgwNTVjMDQwMywgMHgwNDgxODZjOCwgMHgwMDA0MTA1MSwgMHgwN2MwMDAwMCwKLQkweDA0NjAwNDAyLCAweDA0NTAwNDMyLCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LAotCTB4MDYwMDAwMjAsIDB4MDA0MDA0MDIsIDB4MDE2ODBlZmYsIDB4MDcwMDMwZmYsCi0JMHgwNDBmODAzMiwgMHgwNTNmYTgwYSwgMHgwNjAwMDAwMSwgMHgwN2MwMDAwMCwKLQkweDAyNDkwMGU1LCAweDA3ODEwNmQ3LCAweDA3YzAwMDAwLCAweDAzM2U1MDAwLAotCTB4MDcwMDAwYzAsIDB4MDdjMDAwMDAsIDB4MDUwMDQwMzYsIDB4MDYwMDAwZDAsCi0JMHgwMTc5ZmUwMCwgMHgwNzAwZmZmZiwgMHgwNTdkZmVmZiwgMHgwNzAwZmZmZiwKLQkweDA3ODEwNmY5LCAweDA3MDAwMGQxLCAweDAzNzlmZjAwLCAweDA3MDBmZmZmLAotCTB4MDYwMDUwNTEsIDB4MDYwZmYwMzEsIDB4MDU1MDA0MDUsIDB4MDUwZjgwZmYsCi0JMHgwNzNmYTAwOSwgMHgwNjAwMDAwMiwgMHgwMjBlZjAwNCwgMHgwMzg2MDZmMywKLQkweDA0NjAwNDA0LCAweDA1MGY4MGZmLCAweDAxMmZhODA5LCAweDAwNzlmZTAxLAotCTB4MDcwMGZmZmYsIDB4MDU1YzA0MDAsIDB4MDc4MTA2ZjksIDB4MDE0MDA0MDUsCi0JMHgwNzAwNTBmZiwgMHgwNTdkZTBmZiwgMHgwNjAwMDAwNywgMHgwNDgxODZlNSwKLQkweDA0MDA0MDUxLCAweDA3YzAwMDAwLCAweDA3MmQ2MDAwLCAweDA3ZjAwMDAwLAotCTB4MDdmMDAwMDAsIDB4MDAwMTEwZDAsIDB4MDEwMTIwZDEsIDB4MDYyZDYwMDEsCi0JMHgwN2YwMDAwMCwgMHgwN2YwMDAwMCwgMHgwMjAxMzBkMCwgMHgwMTAxNDBkMSwKLQkweDA2MmQ2MDAyLCAweDAxMDE3MGQ0LCAweDA3ZjAwMDAwLCAweDAyMDE1MGQwLAotCTB4MDMwMTYwZDEsIDB4MDUzZmE4M2EsIDB4MDYwMDAwMDgsIDB4MDdjMDAwMDAsCi0JMHgwNzYwMGM0MSwgMHgwNTBmODBmZiwgMHgwNzNmYTAwOSwgMHgwNjAwMDAwMSwKLQkweDA0NzgwMTAyLCAweDA3ZmZmZjAwLCAweDA0NmEwNzAyLCAweDA1MGY4MGZmLAotCTB4MDczZmEwMGEsIDB4MDYwMDAwMDEsIDB4MDU2MDBlNDEsIDB4MDUwZjgwZmYsCi0JMHgwMzJmYTA2OSwgMHgwMzgwMDA1MywgMHhkYjRlZTllMiwgMHgwMjgwMDAwNCwKLQkweDAwMDAwMDAwLCAweDAwMDA4MDAwLCAweDAwMDAwNTQyLCAweDA0MGY4MDFmLAotCTB4MDEyZmE4YzksIDB4MDQwZjgwMWYsIDB4MDczZmEwODEsIDB4MDYwMDAwMTAsCi0JMHgwMzIwMDAwNSwgMHgwNzQyMDAwMCwgMHgwNTBmYjAwMCwgMHgwNDBmODAxZiwKLQkweDA3M2ZhMDExLCAweDA2MDAwMDM4LCAweDA0MGY4MDFmLCAweDA1M2ZhODU5LAotCTB4MDcwMDAwM2EsIDB4MDUwZmUwMDAsIDB4MDU4MTgwMGEsIDB4MDc4NDAwM2MsCi0JMHgwNDk1ODAxOSwgMHgwMzBlMDAxMSwgMHgwNzJlNDIwMCwgMHgwMzgwMDAxNCwKLQkweDAyOTEwMDFmLCAweDA1MDAxMGMwLCAweDA0NDgyMDAxLCAweDA1ODE4MGZhLAotCTB4MDY0ODMwMDEsIDB4MDY4MTgxNWQsIDB4MDI5MjAwMjksIDB4MDY4YjAwMjksCi0JMHgwMDhhMDE2MiwgMHgwNTAwMTBjMCwgMHgwNjc4MDAwMSwgMHgwNTAwMDdjMCwKLQkweDA2ODE4MjQwLCAweDA2NzgwMDAxLCAweDA1MDBmODAwLCAweDA2ODE4MjgwLAotCTB4MDM5MTAwMzAsIDB4MDQwZmUwMjksIDB4MDM4NjAwMzAsIDB4MDc2YzAwMWQsCi0JMHgwNTgxMDJiMSwgMHgwNzZjMGExZCwgMHgwNDgxMDJkYSwgMHgwMjkyMDBhYiwKLQkweDA0MGZlMDJmLCAweDAzODYwMDNjLCAweDA2MDAwMDEzLCAweDA1MGZiMDAwLAotCTB4MDY2YzAwNzMsIDB4MDY4MTAzZWMsIDB4MDE0OTIwZTQsIDB4MDU4MTgwM2MsCi0JMHgwMzQwMDAwMCwgMHgwNzZjMGEwMCwgMHgwNDgxODAzNCwgMHgwNjk2MDAzZSwKLQkweDAzYjkwMGNhLCAweDA1OTA4MDE0LCAweDAxMDE3MGUxLCAweDA3NzgwMDE3LAotCTB4MDNlMDAwMDAsIDB4MDY4MTAwOTEsIDB4MDUwMDEwZmYsIDB4MDE3OWZlMTcsCi0JMHgwMzFmZmZmZiwgMHgwNzAwMDBmZiwgMHgwNTYwMDgwMCwgMHgwNTBmODBmZiwKLQkweDA3M2ZhMDA5LCAweDA2MDAwMDAxLCAweDA2NzgwMDAyLCAweDAyODAwMDQwLAotCTB4MDM3YzAwZmYsIDB4MDM4MDAwMDAsIDB4MDY4MTAwNWQsIDB4MDI0OWYwMDIsCi0JMHgwNzgxMDBhYSwgMHgwNDQ4ZTAwMiwgMHgwNjgxMDA1ZCwgMHgwNzYwMGMwMCwKLQkweDA1MGY4MGZmLCAweDA3M2ZhMDA5LCAweDA2MDAwMDAxLCAweDA2NzgwMDAyLAotCTB4MDdmZmZmMDAsIDB4MDM3YzAwZmYsIDB4MDUwMDAyMDAsIDB4MDU4MTgwYWEsCi0JMHgwNjRiZDQwMSwgMHgwM2QwMDA1ZiwgMHgwMjgwMDBhOCwgMHgwMjgwMDA2NywKLQkweDAzODAwMDcxLCAweDAzODAwMDdiLCAweDAyODAwMDg1LCAweDAyODAwMDhmLAotCTB4MDI4MDAwYTgsIDB4MDI4MDAwYTgsIDB4MDUwZmUwMjcsIDB4MDA4NjgwNmIsCi0JMHgwMTAyODAwMCwgMHgwMjgwMDA2ZSwgMHgwNzYwMDAyNywgMHgwNTBmODBmZiwKLQkweDAzMmZhMDBhLCAweDAxMDI3MDAwLCAweDAyNDAwMDI5LCAweDAzODAwMGFhLAotCTB4MDQwZmUwMjUsIDB4MDA4NjgwNzUsIDB4MDMwMjYwMDAsIDB4MDM4MDAwNzgsCi0JMHgwNjYwMDAyNSwgMHgwNTBmODBmZiwgMHgwMzJmYTAwYSwgMHgwMzAyNTAwMCwKLQkweDAyNDAwMDI5LCAweDAzODAwMGFhLCAweDA1MGZlMDIxLCAweDAwODY4MDdmLAotCTB4MDEwMjIwMDAsIDB4MDM4MDAwODIsIDB4MDc2MDAwMjEsIDB4MDUwZjgwZmYsCi0JMHgwMzJmYTAwYSwgMHgwMTAyMTAwMCwgMHgwMjQwMDAyOSwgMHgwMzgwMDBhYSwKLQkweDA0MGZlMDIzLCAweDAwODY4MDg5LCAweDAxMDI0MDAwLCAweDAyODAwMDhjLAotCTB4MDY2MDAwMjMsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMGEsIDB4MDMwMjMwMDAsCi0JMHgwMjQwMDAyOSwgMHgwMzgwMDBhYSwgMHgwNmEwMDBkYSwgMHgwMzgwMDBhYSwKLQkweDAxNjQwODE3LCAweDA0ODI4MGE4LCAweDA3MGZmMDE3LCAweDAzZDAwMDk1LAotCTB4MDI4MDAwOWQsIDB4MDM4MDAwOWYsIDB4MDI4MDAwYTIsIDB4MDM4MDAwYTUsCi0JMHgwMjgwMDBhOCwgMHgwMjgwMDBhOCwgMHgwMjgwMDBhOCwgMHgwMjgwMDBhOCwKLQkweDAzZTAwMDAwLCAweDAzODAwMDE0LCAweDA1OTA4MDlmLCAweDAzMDE2MGUxLAotCTB4MDM4MDAwYWEsIDB4MDQ5MDgwYTIsIDB4MDMwMTUwZTEsIDB4MDM4MDAwYWEsCi0JMHgwNTkwODBhNSwgMHgwMTAxNDBlMSwgMHgwMzgwMDBhYSwgMHgwNjBmYzAxMywKLQkweDA3YTAwNTNhLCAweDAzODAwMDE0LCAweDAxNDk0MGU0LCAweDAwYTE4MGFlLAotCTB4MDM4MDAwM2MsIDB4MDI2ODFlMGQsIDB4MDUwZmIwZmYsIDB4MDQ2MDA4NzYsCi0JMHgwNTBmODBmZiwgMHgwNTNmYTgwOSwgMHgwNjAwMDAwMSwgMHgwNTQ4ODAwMywKLQkweDA1ODE4MGJkLCAweDA0MDA4MDBkLCAweDAxMjBkMDAwLCAweDAxM2U0MDAwLAotCTB4MDUwMDAyMDAsIDB4MDYwMDkwNzYsIDB4MDQwMDIwNzUsIDB4MDZhMDA1MjYsCi0JMHgwN2MwMDAwMCwgMHgwNzJlNDgwMCwgMHgwNzAwMDAxMiwgMHgwMjgwMDBjZCwKLQkweDA3NDdmMDAwLCAweDA1NjAwODAwLCAweDA1MGY4MGZmLCAweDAxMmZhODA5LAotCTB4MDI0OWYwMDEsIDB4MDY4MTAwY2QsIDB4MDEwMTIwMDAsIDB4MDUyZTRjMDAsCi0JMHgwN2MwMDAwMCwgMHgwNzAwMDBlYiwgMHgwMzQ5ZjAwMCwgMHgwNDgxODBjMSwKLQkweDA1NjAwODAwLCAweDA1MGY4MGZmLCAweDAxMmZhODA5LCAweDA0NDhlMDAxLAotCTB4MDY4MTAwZDMsIDB4MDdjMDAwMDAsIDB4MDA3OWMxMDEsIDB4MDdmZmZmZmYsCi0JMHgwMjdhNGIwMSwgMHgwMzgwMDAwMCwgMHgwNTYwMDgwMCwgMHgwNTBmODBmZiwKLQkweDAxMmZhODBhLCAweDA3NjAwYzAwLCAweDA1MGY4MGZmLCAweDAxMmZhODIxLAotCTB4MDY3ODAwMDEsIDB4MDdmZmZmMDAsIDB4MDM3YzAwZmYsIDB4MDUwMDA3MDAsCi0JMHgwNjgxMDBlZiwgMHgwNjYwMTgwNCwgMHgwNzAwMzBmZiwgMHgwNTBmODBmZiwKLQkweDAxMmZhODA5LCAweDA1MDAyMDAwLCAweDA1MGY4MDAzLCAweDA3M2ZhMDBhLAotCTB4MDYwMDAwMDEsIDB4MDQwZmUwMDEsIDB4MDM4NjAwZjAsIDB4MDQ2MDAyMDEsCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAwYSwgMHgwN2MwMDAwMCwgMHgwNTBmZTAyZSwKLQkweDAxODY4MGY1LCAweDAxMDJlMDAwLCAweDAzMDJmMDAwLCAweDAzODAwMGY5LAotCTB4MDc2MDAwMmUsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMGEsIDB4MDEwMmUwMDAsCi0JMHgwN2MwMDAwMCwgMHgwMjJjMDAwNCwgMHgwNTZjMDQxZCwgMHgwNDgxMDEwZSwKLQkweDA1NmMwMjFkLCAweDA0ODEwMTI1LCAweDA1NmMwODFkLCAweDA0ODEwMTM3LAotCTB4MDc2YzA2MWQsIDB4MDQ4MTAxNTEsIDB4MDUyMWQwMDAsIDB4MDIwMmMwMTMsCi0JMHgwMjAyYTAxMywgMHgwMjAyMDAxMywgMHgwNDYwMDIxYSwgMHgwNTBmODBmZiwKLQkweDA1M2ZhODBhLCAweDA3MDAwMDA5LCAweDAzYjYwMGJlLCAweDA0ODQ4MDFmLAotCTB4MDM4MDAwM2MsIDB4MDQwZmUwMmEsIDB4MDA4NjAxMDQsIDB4MDYwMDAwMTMsCi0JMHgwNDAwMTAxMywgMHgwNTYwMTAyYiwgMHgwNTBmODBmZiwgMHgwMzJmYTAxMiwKLQkweDA2NDIwMDI5LCAweDA2NjAwMDJhLCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LAotCTB4MDYwMDAwMDEsIDB4MDUwZmUwMDMsIDB4MDE4NjAxMjIsIDB4MDEwMjgwMDMsCi0JMHgwNjYwMDAyYSwgMHgwNTBmODBmZiwgMHgwNTNmYTgwYSwgMHgwNzAwMDAwOSwKLQkweDAwODAwMTUyLCAweDAwMDI4MDEzLCAweDAwMDI3MDEzLCAweDAwODAwMTUyLAotCTB4MDQwZmUwMmEsIDB4MDE4NjAxMDMsIDB4MDY0MjAwMjksIDB4MDY2MDAwMmEsCi0JMHgwNTBmODBmZiwgMHgwNTNmYTgwOSwgMHgwNjAwMDAwMSwgMHgwNTBmZTAwMywKLQkweDAwODYwMTM0LCAweDAzMDI2MDAzLCAweDA2NjAwMDJhLCAweDA1MGY4MGZmLAotCTB4MDUzZmE4MGEsIDB4MDcwMDAwMDksIDB4MDA4MDAxNTIsIDB4MDIwMjYwMTMsCi0JMHgwMjAyNTAxMywgMHgwMDgwMDE1MiwgMHgwNDBmZTAyYSwgMHgwMTg2MDEwMywKLQkweDA2NDIwMDI5LCAweDA2NjAwMDJhLCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LAotCTB4MDYwMDAwMDEsIDB4MDUwZmUwMDMsIDB4MDA4NjAxNDYsIDB4MDEwMjIwMDMsCi0JMHgwNjYwMDAyYSwgMHgwNTBmODBmZiwgMHgwNTNmYTgwYSwgMHgwNzAwMDAwOSwKLQkweDAxODAwMTQ4LCAweDAwMDIyMDEzLCAweDAwMDIxMDEzLCAweDA2NDdmMDIwLAotCTB4MDA3YTAxMjAsIDB4MDQwMDAxMDEsIDB4MDRhMDAyYTIsIDB4MDQwMDgwMmEsCi0JMHgwNmEwMDUxZiwgMHgwMzk0ODEwMywgMHgwNTIxZDAwNSwgMHgwMDgwMDEwNCwKLQkweDAxODAwMTBjLCAweDA2NDdmMDIwLCAweDA2NDg2MDIwLCAweDA2ODE4MTU3LAotCTB4MDRhMDAyYTIsIDB4MDE4MDAxMDMsIDB4MDA3YTAxMjAsIDB4MDQwMDAxMDEsCi0JMHgwNGEwMDJhMiwgMHgwNDAwODAyYSwgMHgwNmEwMDUxZiwgMHgwMTgwMDEwMywKLQkweDA0MGZkMDJhLCAweDA1MmU0MDAzLCAweDAwMjA4MDEwLCAweDA2YTAwNTFmLAotCTB4MDE4MDAxMGMsIDB4MDAwMTgwOTgsIDB4MDc0ODAwMTgsIDB4MDY4MTgxNzMsCi0JMHgwNTQ4MTAxOCwgMHgwNzgxODE3MSwgMHgwNTQ4MjAxOCwgMHgwNzgxODE2ZiwKLQkweDA3NDgzMDE4LCAweDA2ODE4MTZkLCAweDAwMmZiMDA0LCAweDAxODAwMTc0LAotCTB4MDEyZmIwMDMsIDB4MDE4MDAxNzQsIDB4MDAyZmIwMDIsIDB4MDE4MDAxNzQsCi0JMHgwMDJmYjAwMSwgMHgwMTgwMDE3NCwgMHgwMTJmYjAwMCwgMHgwMTc5ZmU3OCwKLQkweDA3MDAwMGZmLCAweDAzMDE5MGZmLCAweDAwMDE3MDg2LCAweDA1OGIwMTc4LAotCTB4MDMzODUwMDAsIDB4MDMwMjAwMDAsIDB4MDc3ODAwMTcsIDB4MDA0MzA0MDcsCi0JMHgwNzgxODIwMCwgMHgwNDZjMDQxOSwgMHgwNTgxMDFiNCwgMHgwNDZjMDIxOSwKLQkweDA1ODEwMTg0LCAweDA3MjE5MDAwLCAweDAwODAwMTk4LCAweDA3MjE5MDAwLAotCTB4MDc0ODMwMTcsIDB4MDQ4MTAxOWUsIDB4MDU0ODIwMTcsIDB4MDU4MTAxYTUsCi0JMHgwNDQ4YjA3NSwgMHgwNjgxODE5OCwgMHgwNjYwMTQ3NiwgMHgwNTBmODBmZiwKLQkweDA3M2ZhMDIyLCAweDA2MDAwMDNlLCAweDA2MDAwMDgwLCAweDA1MDAxMDgxLAotCTB4MDUwMDIwODIsIDB4MDYwMDMwODMsIDB4MDUwMDQwODQsIDB4MDQ2MDFjNzYsCi0JMHgwNTBmODBmZiwgMHgwMjJmYTAyYSwgMHgwNzIxOTAwMCwgMHgwNzc4MDA3OCwKLQkweDA3ZmZmZjAwLCAweDA0NWEwNDE5LCAweDAxMDc4MGZmLCAweDA0ODQ4MDFmLAotCTB4MDM4MDAwM2MsIDB4MDQwZmUwN2YsIDB4MDA4NjAxYWQsIDB4MDRhMDAxY2QsCi0JMHgwMDkyMDE5OCwgMHgwNDBmZTA3ZiwgMHgwNmE2ODFjZCwgMHgwMDgwMDE5OCwKLQkweDA1NjAxMDdiLCAweDA1MGY4MGZmLCAweDAzMmZhMDA5LCAweDA3NDRmMDAwLAotCTB4MDU2MDEwN2IsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMGEsIDB4MDE4MDAxOGIsCi0JMHgwNTJlNDAwYywgMHgwNDAwODBmYiwgMHgwNDZhYTEwOCwgMHgwNjAwOTA3NiwKLQkweDA0MDAyMDc1LCAweDA2YTAwNTI2LCAweDAwODAwMTk4LCAweDA2MjE5MDAxLAotCTB4MDU0ODIwMTcsIDB4MDQ4MTAxYzEsIDB4MDU4YjAxYjcsIDB4MDYwZmYwODYsCi0JMHgwMzQ5ZjBmZiwgMHgwNzgxODE3NywgMHgwNzQ4MzAxNywgMHgwNTgxMDFiZSwKLQkweDA1MGZkMGZmLCAweDA0MGZlMDdmLCAweDA2YTY4MWNkLCAweDAwODAwMTk4LAotCTB4MDUwMDQwODQsIDB4MDVhMDAyMjIsIDB4MDA5MjAxOTgsIDB4MDcwZmYwN2QsCi0JMHgwNDUwMDQ3YywgMHgwNTYwMDRmZiwgMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwKLQkweDA3MGZmMDAwLCAweDAwNTQwNDc5LCAweDAzMDc5MGZmLCAweDAxODAwMWE1LAotCTB4MDYwZmYwNzksIDB4MDA1NDA0N2EsIDB4MDU4MjAxZjksIDB4MDU4MTAxZjksCi0JMHgwNzBmZjA3ZCwgMHgwNDUwMDQ3YywgMHgwNTBmODBmZiwgMHgwMDJmYTgxOSwKLQkweDA0OGIwMWQ1LCAweDAyMDgwMDAxLCAweDAwMDgxMDAyLCAweDAxMDgyMDAzLAotCTB4MDQ4YjAxZDksIDB4MDMzODUwMDAsIDB4MDMwMTAwMDAsIDB4MDI0MDAwMTksCi0JMHgwNzBmZjAwMywgMHgwNDUwMDQ3OSwgMHgwMzA3OTBmZiwgMHgwMzQwMDA3ZSwKLQkweDA2NDIwMDdmLCAweDA1ODEwMWY5LCAweDA3MGZmMDdlLCAweDA1MGY4MGZmLAotCTB4MDMyZmEwMDksIDB4MDUwZmUwMDAsIDB4MDI4NjgxZjgsIDB4MDcwZmYwN2QsCi0JMHgwNTYwMDJmZiwgMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwgMHgwMTA3ZDAwMCwKLQkweDAxODYwMWZhLCAweDA1NjAwODdkLCAweDA1MGY4MGZmLCAweDAzMmZhMDA5LAotCTB4MDM2ODFlMDAsIDB4MDU1MDA0MWIsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMDksCi0JMHgwMTA3ZTAwMCwgMHgwNzBmZjA3ZSwgMHgwMTgwMDFlNCwgMHgwMzA3YzAwMCwKLQkweDA3YzAwMDAwLCAweDA1MmU0MDBjLCAweDA0MDA4MGZiLCAweDA0NmFhMTA4LAotCTB4MDYwMDkwNzYsIDB4MDQwMDIwNzUsIDB4MDI4MDA1MjYsIDB4MDQwZmQwNzYsCi0JMHgwNTBmZDAxNywgMHgwNjBmZjA4NiwgMHgwNzc4MDBmZiwgMHgwNzAwMDA2MCwKLQkweDAzN2MwMGZmLCAweDA3MDAwMDYwLCAweDA2ODE4MjAyLCAweDA3NzgwMDc4LAotCTB4MDdmZmZmMDAsIDB4MDQ1YTA0MTksIDB4MDEwNzgwZmYsIDB4MDY2MDE0NzYsCi0JMHgwNTBmODBmZiwgMHgwNzNmYTAyMiwgMHgwNjAwMDAzZSwgMHgwNTJlNDAwYywKLQkweDA0NjAwODc2LCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LCAweDA2MDAwMDAxLAotCTB4MDU0ODgwMDMsIDB4MDQ4MTAyMWMsIDB4MDQwMGQwZmIsIDB4MDY2YTgxMGQsCi0JMHgwMTNlNDAwMCwgMHgwNzAwMDMwMCwgMHgwMjgwMDAyOSwgMHgwNDAwODBmYiwKLQkweDA2NmE4MTA4LCAweDA2MDA5MDc2LCAweDA0MDAyMDc1LCAweDA2YTAwNTI2LAotCTB4MDI4MDAwMjksIDB4MDI0MDAwN2YsIDB4MDc0MjAwN2UsIDB4MDUwZjgwN2UsCi0JMHgwMzJmYTAwOSwgMHgwNTBmZTAwMCwgMHgwMzg2ODIzYywgMHgwNzBmZjA3ZCwKLQkweDA1NWMwNDdiLCAweDA0ODEwMjMxLCAweDA3NjAwMDdkLCAweDA1MGY4MGZmLAotCTB4MDMyZmEwMDksIDB4MDUwZmUwMDAsIDB4MDI4NjgyMzEsIDB4MDcwZmYwN2IsCi0JMHgwMTA3ZDBmZiwgMHgwNTYwMDg3ZCwgMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwKLQkweDAzNjgxZTAwLCAweDA0NTAwNDFjLCAweDAxMDdlMGZmLCAweDA1MGY4MGZmLAotCTB4MDMyZmEwMDksIDB4MDUwZmUwMDAsIDB4MDA4NjAyM2UsIDB4MDMwN2MwMDAsCi0JMHgwN2MwMDAwMCwgMHgwNDBmZDA3NiwgMHgwMzgwMDUzYSwgMHgwMTAxODBjMCwKLQkweDA1NDhlMDE4LCAweDA3ODE4MjU5LCAweDA3NDhmMDE4LCAweDA3ODE4MjU1LAotCTB4MDM0OTAwMTgsIDB4MDY4MTgyNTEsIDB4MDE0OTEwMTgsIDB4MDc4MTgyNGQsCi0JMHgwNzNjMDAwMCwgMHgwNjAwMDA0MCwgMHgwMjIwMDAwNCwgMHgwMTgwMDI1YywKLQkweDA3M2MwMDAwLCAweDA2MDAwMDIwLCAweDAzMjAwMDAzLCAweDAxODAwMjVjLAotCTB4MDczYzAwMDAsIDB4MDYwMDAwMTAsIDB4MDIyMDAwMDIsIDB4MDE4MDAyNWMsCi0JMHgwNzNjMDAwMCwgMHgwNjAwMDAwOCwgMHgwMjIwMDAwMSwgMHgwMTgwMDI1YywKLQkweDA3M2MwMDAwLCAweDA2MDAwMDA0LCAweDA2MDAwMDEzLCAweDA1MGZiMDAwLAotCTB4MDQwZmUwNzYsIDB4MDA4NjAyNzUsIDB4MDQ2YzAyNzMsIDB4MDQ4MTAyODUsCi0JMHgwNjZjMDA3MywgMHgwNTgxMDI2NiwgMHgwNDBmZDA3NiwgMHgwN2EwMDUzYSwKLQkweDAzODAwMDE0LCAweDA0MGZkMDc2LCAweDAxODAwMjY5LCAweDAwNDUyMDc1LAotCTB4MDAwNzcwMTMsIDB4MDY0N2YwNzUsIDB4MDY0ODYwNzUsIDB4MDc4MTgyNmYsCi0JMHgwNGEwMDJhOCwgMHgwMDgwMDI3NSwgMHgwMDdhMDE3NSwgMHgwNDAwMDEwMSwKLQkweDA0YTAwMmE4LCAweDA0MDA4MDc2LCAweDAyNDVmMDA4LCAweDA2YTAwNTFmLAotCTB4MDcyNzMwMDAsIDB4MDU2MDAyNzIsIDB4MDUwZjgwZmYsIDB4MDUzZmE4MGEsCi0JMHgwNzAwMDAwOSwgMHgwMzc5ZmY3OCwgMHgwNzAwMDBmZiwgMHgwMjA3NjAxMywKLQkweDAyMDc1MDEzLCAweDA0ODQ4MDFmLCAweDAzODAwMDNjLCAweDA3MGZjMGZmLAotCTB4MDUyZTQwMGMsIDB4MDAyMDgwMjAsIDB4MDZhMDA1MWYsIDB4MDE4MDAyN2UsCi0JMHgwNDYwMDI3NiwgMHgwNTAwMTBmZiwgMHgwNDBmODAwMSwgMHgwMzJmYTAwOSwKLQkweDA0MGY4MDAxLCAweDA1M2ZhODBhLCAweDA3MDAwMDA5LCAweDA3MGZmMDAwLAotCTB4MDI4NjgyOTcsIDB4MDY2MDEyNzYsIDB4MDUwZjgwZmYsIDB4MDczZmEwMDksCi0JMHgwNzAwMDAwYywgMHgwNzYwMTgxOCwgMHgwNTBmODBmZiwgMHgwNTNmYTgwYSwKLQkweDA3MDAwMDA5LCAweDAwODAwMjk4LCAweDA3YTAwMGYwLCAweDA0NDhiMDc1LAotCTB4MDQ4MTAyNjgsIDB4MDYwMDAwMTMsIDB4MDQwMDEwMTMsIDB4MDU2MDEwN2IsCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAxMiwgMHgwMDQ2YjA3NSwgMHgwM2I2MDBiZSwKLQkweDAxODAwMjY5LCAweDA2MDAwMDIwLCAweDA0MDAxMDE2LCAweDA0NjAwODJhLAotCTB4MDUwZjgwZmYsIDB4MDMyZmEwMTIsIDB4MDdjMDAwMDAsIDB4MDYwMDAwNzUsCi0JMHgwNDAwMTBhMiwgMHgwNDRiMDgwMSwgMHgwNjBmZjAxNiwgMHgwNjVhMDAwMSwKLQkweDA0NjAwODc2LCAweDA1MGY4MGZmLCAweDAzMmZhMDEyLCAweDA3YzAwMDAwLAotCTB4MDUwZmUwMjIsIDB4MDA4NjAyYmMsIDB4MDQyMWQwMDQsIDB4MDMwMmEwMjIsCi0JMHgwNGEwMDJlOSwgMHgwNDQ4ODAyMCwgMHgwNDgxMDJjZSwgMHgwNDBmZDAyYSwKLQkweDA1MjFkMDAwLCAweDAyMDJhMDEzLCAweDAyMDIwMDEzLCAweDA0MGZlMDI2LAotCTB4MDE4NjAyZDQsIDB4MDQyMWQwMDEsIDB4MDIwMmEwMjYsIDB4MDRhMDAyZTksCi0JMHgwMjAyYzAxMywgMHgwMDY4M2UyMCwgMHgwNzAwNjBmZiwgMHgwNTZjMDIwNiwKLQkweDA2ODEwMzFjLCAweDA1NmMwNDA2LCAweDA2ODEwMzMyLCAweDA3NmMwNjA2LAotCTB4MDc4MTAzYTMsIDB4MDQ0ODgwMjAsIDB4MDY4MTgyZDAsIDB4MDU2YzE2MDYsCi0JMHgwNzgxMDNiMSwgMHgwNmEwMDUxNiwgMHgwMTgwMDJlMiwgMHgwNDBmZDAyYSwKLQkweDA1MjFkMDAwLCAweDAyMDJhMDEzLCAweDAyMDIwMDEzLCAweDA1MGZlMDI4LAotCTB4MDE4NjAyZTIsIDB4MDMwMmEwMjgsIDB4MDQyMWQwMDIsIDB4MDRhMDAyZTksCi0JMHgwMTgwMDJmMCwgMHgwNTBmZTAyMiwgMHgwMTg2MDJlMiwgMHgwNDIxZDAwNCwKLQkweDAzMDJhMDIyLCAweDA0YTAwMmU5LCAweDA0NDg4MDIwLCAweDA3ODE4MmU0LAotCTB4MDZhMDA1MTYsIDB4MDU4NDgwMzAsIDB4MDM4MDAwM2MsIDB4MDQwZmQwMmEsCi0JMHgwNTIxZDAwMCwgMHgwMjAyYTAxMywgMHgwMjAyMDAxMywgMHgwMTgwMDJlMiwKLQkweDA0NjAwODJhLCAweDA1MGY4MGZmLCAweDAyMmZhMDMxLCAweDAzMDIwMDAwLAotCTB4MDAwMmIwMDQsIDB4MDEwMTgwMDUsIDB4MDdjMDAwMDAsIDB4MDQwMDcwMmEsCi0JMHgwN2EwMDNlNCwgMHgwMDdhMDEwMSwgMHgwNzA2MDAwMCwgMHgwNzMwMzAwMCwKLQkweDA3MDA4MjkwLCAweDA3NjAwMDE4LCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LAotCTB4MDcwMDAwMDMsIDB4MDQ0OGUwMDcsIDB4MDY4MTgyZmUsIDB4MDYwMDYwMTMsCi0JMHgwMzgwMDMwNSwgMHgwMjQwMDAxMCwgMHgwNDgxMDJmZSwgMHgwNjAwNjAxMCwKLQkweDA0NjAzMjJhLCAweDA1MGY4MGZmLCAweDA3M2ZhMDBhLCAweDA3MDAwMDAzLAotCTB4MDUwZjgwMWUsIDB4MDMyZmEwM2EsIDB4MDYzYWEwMjAsIDB4MDYwMDAwMDIsCi0JMHgwMTNlNDAwMCwgMHgwNzAwMDAzMCwgMHgwMjk4MDMwYiwgMHgwNzBmZjBmNiwKLQkweDAzNjgzMGZmLCAweDA1ODE4MzBjLCAweDA3MGYwMDFlLCAweDA1NjAxMDJiLAotCTB4MDUwZjEwZmYsIDB4MDYzZjNjMDgsIDB4MDYwMDAwMGQsIDB4MDEzZTQwMDAsCi0JMHgwNjAwMDAyMCwgMHgwNDBmODAxYSwgMHgwMzIwMDAwYSwgMHgwMjIwMTdkMCwKLQkweDAzMmZhMDEyLCAweDAyMDJjMDEzLCAweDAxODAwMmUyLCAweDA0MDA3MDEzLAotCTB4MDdhMDAzZTQsIDB4MDA3YTAxMDEsIDB4MDcwNTAwMDAsIDB4MDczMDMwMDAsCi0JMHgwNzAwODg5MCwgMHgwNzRkMDAwNSwgMHgwNjAwNjAxMywgMHgwNTBmODAxZSwKLQkweDAzMmZhMDNhLCAweDA1NjAxYTJiLCAweDA1MGY4MGZmLCAweDAyMmZhMDE5LAotCTB4MDQwMDEwMDIsIDB4MDQwMDIwMTMsIDB4MDQwZjgwMWYsIDB4MDIyZmEwMWEsCi0JMHgwNzNhYTAwYywgMHgwNjAwMDAwMiwgMHgwNzMwMGMwMywgMHgwNjAwMDAwZCwKLQkweDAzODAwM2QxLCAweDA0MDA3MDEzLCAweDA3YTAwM2U0LCAweDAwN2EwMTAxLAotCTB4MDMwNzAwMDAsIDB4MDY2MDI4MmEsIDB4MDUwZjgwZmYsIDB4MDczZmEwMDksCi0JMHgwNjAwMDAwNCwgMHgwMjQ5OTAwOCwgMHgwNzgxMDMzZiwgMHgwNzMwMzAwMCwKLQkweDA3MDA4ODkwLCAweDAzODAwMzQxLCAweDA3MzAzMDAwLCAweDA0MDA4OTgwLAotCTB4MDUwMDcwMDMsIDB4MDc0ZDAwMDUsIDB4MDYwMDYwMTMsIDB4MDUwZjgwMWUsCi0JMHgwMzJmYTAzYSwgMHgwNzYwMTQyYiwgMHgwNTBmODBmZiwgMHgwMzJmYTAyMSwKLQkweDA2NGIwMDAyLCAweDAyNDk5MDA4LCAweDA3ODEwMzRkLCAweDA2NDRjMDAyLAotCTB4MDU0YjA0MDAsIDB4MDUwMDQwZmYsIDB4MDY2OTgxMDQsIDB4MDQ4MTgzNjIsCi0JMHgwNjAwMDAxMywgMHgwNDAwMTAxMywgMHgwNDc4MDEwMiwgMHgwNjAwMDAxMCwKLQkweDA2MDAzMDEzLCAweDA0MDA0MDEzLCAweDA2MDA1MDEzLCAweDA2MDA2MDEzLAotCTB4MDQwMDcwMTMsIDB4MDA2NDQwMTUsIDB4MDY4MjAzNWUsIDB4MDQ0NDgwMDIsCi0JMHgwMjIwNTAwOCwgMHgwNDBmODAxZiwgMHgwMzJmYTA0MiwgMHgwNDAwODAxNSwKLQkweDAyODAwMzliLCAweDA0NmM4MDA0LCAweDA0ODE4MzcwLCAweDAxMjA4MDE4LAotCTB4MDY3ODAwMDIsIDB4MDcwMDAwMDMsIDB4MDQ4MTgzNzMsIDB4MDYwMDMwMDEsCi0JMHgwNjAwMDAxMywgMHgwNDAwMTAxMywgMHgwNDAwNDAxMywgMHgwNjAwNTAxMywKLQkweDA0MGY4MDFmLCAweDAyMmZhMDMyLCAweDAyODAwMzliLCAweDA0MGZkMDJhLAotCTB4MDdhMDA1M2EsIDB4MDM4MDAwMTQsIDB4MDM3OWZmMDMsIDB4MDcwMDAwZmYsCi0JMHgwNDQ4ODAwMiwgMHgwNjgxMDM3YSwgMHgwNzBmZjAwMywgMHgwNDUwMDQwOCwKLQkweDA1MDA4MGZmLCAweDAzNzlmZjAwLCAweDA3MDAwMGZmLCAweDA2NDg5MDAyLAotCTB4MDc4MTAzODEsIDB4MDcwZmYwMDAsIDB4MDQ1MDA0MDgsIDB4MDUwMDgwZmYsCi0JMHgwNzAwNTAwMywgMHgwNTAwNDAwMCwgMHgwNjAwMzAwMSwgMHgwNjAwMDAxMywKLQkweDA0MDAxMDEzLCAweDA0MGY4MDFmLCAweDAyMmZhMDMyLCAweDA1NjAxYzJiLAotCTB4MDUwZjgwZmYsIDB4MDIyZmEwMzEsIDB4MDY2MDBjMWYsIDB4MDUwZjgwZmYsCi0JMHgwMjJmYTAzMiwgMHgwMjY4MDYwOCwgMHgwNjgxMDM5YiwgMHgwMTY0MDhmZiwKLQkweDA1N2RmZWZmLCAweDA3ZmZmZmZmLCAweDAzNDAwMGZmLCAweDA0NWEwNDA3LAotCTB4MDcwMDAwZmYsIDB4MDc2MDA2MWUsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMGEsCi0JMHgwNjYwMDkwOCwgMHgwNjY5ZjkwOCwgMHgwMjdhMDAwOCwgMHgwNjAwMDAyMCwKLQkweDA3MGFhMGZmLCAweDAxNGEyMGZmLCAweDAzN2EwMGZmLCAweDA2MDAwMGRjLAotCTB4MDcwMDAwZmYsIDB4MDM4MDAzZDEsIDB4MDQwMDcwMTMsIDB4MDdhMDAzZTQsCi0JMHgwMDdhMDEwMSwgMHgwNzAzMDAwMCwgMHgwNzMwMzAwMCwgMHgwNzAwODE5MCwKLQkweDA2MDA2MDEzLCAweDA1MGY4MDFlLCAweDAzMmZhMDNhLCAweDA3M2FhMDAwLAotCTB4MDYwMDAwMDIsIDB4MDczMDBjMDAsIDB4MDcwMDAwMDUsIDB4MDM4MDAzZDEsCi0JMHgwNDAwNzAxMywgMHgwN2EwMDNlNCwgMHgwMDdhMDEwMSwgMHgwNzgxMDAwMCwKLQkweDA3MzAzMDAwLCAweDA3MDAwMDkwLCAweDA2MDA2MDEzLCAweDA2NjAwYzJhLAotCTB4MDUwZjgwZmYsIDB4MDUzZmE4MDksIDB4MDcwMDAwMDMsIDB4MDQ3ODAxMDcsCi0JMHgwN2ZmZmYwMCwgMHgwMDdjMDEwNywgMHgwNzAwMDUwMCwgMHgwNDgxODNjNCwKLQkweDA3MzAzMDAwLCAweDA1MDAwODkwLCAweDA3NGQwMDA1LCAweDA2NjAyODJhLAotCTB4MDUwZjgwZmYsIDB4MDUzZmE4MDksIDB4MDcwMDAwMDMsIDB4MDA0OWQwMDcsCi0JMHgwNjgxMDNjYiwgMHgwMjIwNjAwMSwgMHgwNTBmODAxZSwgMHgwMzJmYTAzYSwKLQkweDA3M2FhMDAwLCAweDA2MDAwMDAyLCAweDA3MzAwYzAwLCAweDA3MDAwMDA1LAotCTB4MDEzZTQwMDAsIDB4MDcwMDAwMzAsIDB4MDI5ODAzZDMsIDB4MDcwZmYwZjYsCi0JMHgwMzY4MzBmZiwgMHgwNTgxODNkNCwgMHgwNzBmMDAxZSwgMHgwNDBmMTAxZiwKLQkweDA3MGYzMDAwLCAweDAxM2U0MDAwLCAweDA2MDAwMDIwLCAweDA0MGY4MDFhLAotCTB4MDMyMDAwMGEsIDB4MDIyMDE3ZDAsIDB4MDMyZmEwMTIsIDB4MDE4MDAyZTIsCi0JMHgwMzIwMDAwMCwgMHgwNjAwNjA3NiwgMHgwMjgwMDNlNiwgMHgwMzIwMDAxMSwKLQkweDA2MDA2MDJhLCAweDA0YTAwNDZiLCAweDA1NjAwNDA2LCAweDA1MGY4MGZmLAotCTB4MDUzZmE4MDksIDB4MDYwMDAwMDIsIDB4MDdjMDAwMDAsIDB4MDIwNzYwMmYsCi0JMHgwNDYwMDg3NiwgMHgwNTBmODBmZiwgMHgwMjJmYTAzMSwgMHgwMzA3NTAwMCwKLQkweDAwMDdiMDA0LCAweDAxMDE4MDA1LCAweDA2NjAwMDc2LCAweDA1MDAyMGZmLAotCTB4MDUwZjgwZmYsIDB4MDEyZmE4MDksIDB4MDIwMmYwMDEsIDB4MDE4NjgzZmEsCi0JMHgwMDAyZTAxMywgMHgwNDBmODAwMiwgMHgwNTNmYTgwYSwgMHgwNzAwMDAwOSwKLQkweDA2MjczMDAxLCAweDA0NDhiMDc1LCAweDA2ODE4NDA0LCAweDA0NjAyMDc2LAotCTB4MDUwZjgwZmYsIDB4MDUzZmE4MTEsIDB4MDcwMDAwM2MsIDB4MDE3OWZlNzgsCi0JMHgwNzAwMDBmZiwgMHgwMzAxOTBmZiwgMHgwMzg2ODQwYywgMHgwNGEwMDQyMCwKLQkweDAwMDc4MDE5LCAweDAwOTIwNDFmLCAweDAwODAwNDY0LCAweDA0MGZkMDc2LAotCTB4MDQwZmQwMTksIDB4MDQ2MDAyNzYsIDB4MDUwMDIwZmYsIDB4MDUwZjgwZmYsCi0JMHgwMzJmYTAwOSwgMHgwNDBmODAwMiwgMHgwNTNmYTgwYSwgMHgwNzAwMDAwOSwKLQkweDA1MGZlMDAwLCAweDAyODY4NDFjLCAweDA3NjAxODE4LCAweDA1MGY4MGZmLAotCTB4MDUzZmE4MGEsIDB4MDcwMDAwMDksIDB4MDE4MDA0MWQsIDB4MDdhMDAwZjAsCi0JMHgwNzI3MzAwMCwgMHgwMjA3NjAxMywgMHgwMzgwMDAzYywgMHgwNDhiMDQyMCwKLQkweDAzMzg1MDAwLCAweDA3MDMwMDAwLCAweDA1NjAwODE4LCAweDA1MGY4MGZmLAotCTB4MDMyZmEwMDksIDB4MDU0YjA0MDAsIDB4MDMwOGEwZmYsIDB4MDE3OWZlMDAsCi0JMHgwNzAwMDBmZiwgMHgwMTA4ODBmZiwgMHgwNDQ4YjA3NSwgMHgwNTgxMDQzYSwKLQkweDA3NjAxNDdiLCAweDA1MGY4MGZmLCAweDAwMmZhODE5LCAweDA2NGIwMDAxLAotCTB4MDIwODAwMDIsIDB4MDEwODEwMDMsIDB4MDAwODIwMDEsIDB4MDIwODMwMDEsCi0JMHgwMjA3OTAwMSwgMHgwMjA3YTAwMSwgMHgwMDA4NDAxMywgMHgwMjA3ZjAxMywKLQkweDAxODAwNDVjLCAweDA2NDg1MDc1LCAweDA0ODEwNDUyLCAweDAyNDY1MDc1LAotCTB4MDY2MDE0NzYsIDB4MDUwZjgwZmYsIDB4MDczZmEwMjEsIDB4MDYwMDAwM2UsCi0JMHgwNzBmZjA3ZCwgMHgwNDUwMDQ3YywgMHgwNTBmODBmZiwgMHgwMDJmYTgxOSwKLQkweDA0OGIwNDQ1LCAweDAyMDgwMDAxLCAweDAwMDgxMDAyLCAweDAxMDgyMDAzLAotCTB4MDMwNzkwMDMsIDB4MDIwODMwN2EsIDB4MDM0MDAwN2UsIDB4MDY0MjAwN2YsCi0JMHgwNDgxMDQ1NywgMHgwNzBmZjA3ZSwgMHgwNWEwMDFlNCwgMHgwMjkyODQ1NywKLQkweDAxODAwNDYzLCAweDA0OGIwNDUyLCAweDA2NjAxNDc2LCAweDA1MGY4MGZmLAotCTB4MDczZmEwNDEsIDB4MDYwMDAwM2UsIDB4MDY2MDI0NzYsIDB4MDUwZjgwZmYsCi0JMHgwNzNmYTAwOSwgMHgwNjAwMDAwNywgMHgwMDA4NDAwZSwgMHgwNThiMDQ1YywKLQkweDAzMzg1MDAwLCAweDAzMDEwMDAwLCAweDA2MjE5MDAxLCAweDA0MGZlMDdmLAotCTB4MDE4NjA0NjMsIDB4MDA4MDAxY2QsIDB4MDdjMDAwMDAsIDB4MDA2ODNlNzUsCi0JMHgwNTgxMDQ2OSwgMHgwNDQ4ZDA3NSwgMHgwNDgxMDQ4ZiwgMHgwMTgwMDRiZCwKLQkweDA2YTAwNTFhLCAweDAwODAwNDFmLCAweDAyOTc4NDc2LCAweDA3NjAyNDE4LAotCTB4MDUwZjgwZmYsIDB4MDEyZmE4MDksIDB4MDY3ODAwMDEsIDB4MDcwMDAwZmYsCi0JMHgwNzVhMDAwMCwgMHgwNzBmZjAxNCwgMHgwNTY5ZmVmZiwgMHgwNTRiMDhmZiwKLQkweDA3NWEwMDAwLCAweDA1NjAwNDE4LCAweDA1MGY4MGZmLCAweDAxMmZhODA5LAotCTB4MDQwZmUwMDcsIDB4MDM4Njg0N2QsIDB4MDEyMDQwMDAsIDB4MDE4MDA0OGIsCi0JMHgwMDcwMDEwMSwgMHgwMzAxMDAwMCwgMHgwNjc4MDAwMSwgMHgwN2ZmMDAwMCwKLQkweDA3NmMwMGZmLCAweDA2ODE4NDg1LCAweDAwNzAwMTAxLCAweDAzMDEwMDAwLAotCTB4MDU2MDA0MTgsIDB4MDUwZjgwZmYsIDB4MDEyZmE4MGEsIDB4MDY3ODAwMDEsCi0JMHgwN2ZmMDAwMCwgMHgwNTAwNDBmZiwgMHgwMjc5ZmYwMSwgMHgwNzAwZmZmZiwKLQkweDA1MDAyMDE0LCAweDA3YzAwMDAwLCAweDA0MDA3MDc2LCAweDA0NDhiMDc1LAotCTB4MDU4MTA0YTksIDB4MDMyMDAwMTEsIDB4MDYwMDYwNzYsIDB4MDZhMDAzZTYsCi0JMHgwMDdhMDEwMSwgMHgwNzA2MDAwMCwgMHgwNzMwMzAwMCwgMHgwNzAwODI5MCwKLQkweDA3NjAwMDE4LCAweDA1MGY4MGZmLCAweDA1M2ZhODA5LCAweDA3MDAwMDAzLAotCTB4MDQ0OGUwMDcsIDB4MDY4MTg0YTEsIDB4MDYwMDYwMTMsIDB4MDE4MDA0YjgsCi0JMHgwMjQwMDAxMCwgMHgwNDgxMDRhMSwgMHgwNjAwNjAxMCwgMHgwNDYwMzI3NiwKLQkweDA1MGY4MGZmLCAweDA3M2ZhMDBhLCAweDA3MDAwMDAzLCAweDAxODAwNGI4LAotCTB4MDQ2MDJhNzYsIDB4MDUwZjgwZmYsIDB4MDMyZmEwMDksIDB4MDYwZmYwN2EsCi0JMHgwNTUwMDQwMCwgMHgwNzAwMDBmZiwgMHgwNDYwMmE3NiwgMHgwNTBmODBmZiwKLQkweDAzMmZhMDBhLCAweDA3YTAwM2UxLCAweDAwN2EwMTAxLCAweDAzMDEwMDAwLAotCTB4MDYzMDMwMDgsIDB4MDUwMDgwMDAsIDB4MDYwMDYwMGUsIDB4MDUwZjgwNzQsCi0JMHgwMzJmYTAzYSwgMHgwNTMwNzlhMCwgMHgwNzAwMDAwYywgMHgwMDgwMDRmZCwKLQkweDAwNjgzZTc1LCAweDA3NmMwYWZmLCAweDA0ODEwNGRjLCAweDA0MDA3MDEzLAotCTB4MDMyMDAwMTEsIDB4MDYwMDYwNzYsIDB4MDZhMDAzZTYsIDB4MDA3YTAxMDEsCi0JMHgwMzA3MDAwMCwgMHgwNjYwMjg3NiwgMHgwNTBmODBmZiwgMHgwNTNmYTgwOSwKLQkweDA2MDAwMDAxLCAweDAzNDk5MDAzLCAweDA1ODEwNGQxLCAweDA3MzAzMDAwLAotCTB4MDcwMDg4OTAsIDB4MDUzMDc5YTAsIDB4MDcwMDAwMGMsIDB4MDA4MDA0ZDUsCi0JMHgwNzMwMzAwMCwgMHgwNDAwODk4MCwgMHgwNDMwNzkyMCwgMHgwNzAwMDAwYywKLQkweDA3NGQwMDA1LCAweDA2MDA2MDEzLCAweDA1MGY4MDc0LCAweDAzMmZhMDNhLAotCTB4MDQzMDc5MjAsIDB4MDcwMDAwMGMsIDB4MDA4MDA0ZmQsIDB4MDQ2MDJhNzYsCi0JMHgwNTBmODBmZiwgMHgwMzJmYTAwOSwgMHgwNjBmZjA3YSwgMHgwNTUwMDQwMCwKLQkweDA3MDAwMGZmLCAweDA0NjAyYTc2LCAweDA1MGY4MGZmLCAweDAzMmZhMDBhLAotCTB4MDQwMDcwNzYsIDB4MDdhMDAzZTEsIDB4MDA3YTAxMDEsIDB4MDMwMTAwMDAsCi0JMHgwNjMwMzAwOCwgMHgwNzAwODgwMCwgMHgwNzRkMDAwNSwgMHgwNjYwMGE3NiwKLQkweDA1MGY4MGZmLCAweDA3M2ZhMDA5LCAweDA3MDAwMDAzLCAweDA1NGIwNDA2LAotCTB4MDQ1YTA0MDQsIDB4MDUwMDQwZmYsIDB4MDYwMDYwMGUsIDB4MDUwZjgwNzQsCi0JMHgwMzJmYTAzYSwgMHgwNjQ4YzA3NSwgMHgwNDgxMDRmYiwgMHgwNjMwN2QyMCwKLQkweDA3MDAwMDBjLCAweDAwODAwNGZkLCAweDA0MzA3OTIwLCAweDA3MDAwMDBjLAotCTB4MDEzZTQwMDAsIDB4MDcwMDAwMzAsIDB4MDE5ODA0ZmYsIDB4MDcwZmYwZjYsCi0JMHgwNzQ4NTBmZiwgMHgwNTgxODUwMCwgMHgwNTBmMjA3NCwgMHgwNjBhMDAwNywKLQkweDA0MDA3MGZiLCAweDA0NmE3MDA3LCAweDA1MGY0MGZmLCAweDAxM2U0MDAwLAotCTB4MDYwMDAwMjAsIDB4MDY3ODAwN2EsIDB4MDdmZmYwMDAsIDB4MDQ4MTg1MTAsCi0JMHgwMzIwMDAwYSwgMHgwMjIwMTdkMCwgMHgwMjgwMDUxMywgMHgwMzIwMDAwYSwKLQkweDA2MzAxYjU4LCAweDA2MDAwMDAxLCAweDA1MGY4MDcyLCAweDAzMmZhMDEyLAotCTB4MDA4MDA0MWYsIDB4MDEyMDgwNjAsIDB4MDYwMDkwMmEsIDB4MDQwMDIwMjAsCi0JMHgwMjgwMDUyNiwgMHgwNDAwODBmYiwgMHgwNjZhZTEwOCwgMHgwNjAwOTA3NiwKLQkweDA0MDAyMDc1LCAweDAyODAwNTI2LCAweDAzMjAxMTAwLCAweDA1ODQ4NTI0LAotCTB4MDY0MjAwMDEsIDB4MDQ4MTg1MjAsIDB4MDI4MDA1M2QsIDB4MDIwZTAwMDgsCi0JMHgwN2MwMDAwMCwgMHgwNTBmZDAwOSwgMHgwNDBmZDAwOCwgMHgwMzIwMTEwMCwKLQkweDA1ODQ4NTJkLCAweDA2NDIwMDAxLCAweDA0ODE4NTI5LCAweDAyODAwNTNkLAotCTB4MDA3YTAxMDIsIDB4MDQwMDAxMDEsIDB4MDU2MDA4MDksIDB4MDUwZjgwZmYsCi0JMHgwNzNmYTAwYSwgMHgwNjAwMDAwMSwgMHgwMjBlMDAwOCwgMHgwNjg0MDUzNywKLQkweDAzMGUwMDA5LCAweDA3YzAwMDAwLCAweDAxMDExMDA5LCAweDA1MmU0MzAwLAotCTB4MDdjMDAwMDAsIDB4MDUyZTQwMGYsIDB4MDEyMDgwOTAsIDB4MDI4MDA1MWYsCi0JMHgwNzBmYzBmZiwgMHgwNDBmODAxMywgMHgwMzJmYTAwOSwgMHgwMjgwMDU0MCwKLQkweDYzMjFkOTJlLCAweGZmZWYxOWEyCi19OwotCi0jaWZkZWYgVU5JUVVFX0ZXX05BTUUKLXVpbnQzMl90IGZ3MjQwMF9sZW5ndGgwMiA9IDB4MDAwMDE2NWUgOwotI2Vsc2UKLXVpbnQzMl90IHJpc2NfY29kZV9sZW5ndGgwMiA9IDB4MDAwMDE2NWUgOwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9hdHRyLmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfYXR0ci5jCmluZGV4IGZlZTBjNDkuLmU5NmQ1OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9hdHRyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2F0dHIuYwpAQCAtNDYsMjIgKzQ2LDE2IEBACiAJY2FzZSAwOgogCQlpZiAoaGEtPmZ3X2R1bXBfcmVhZGluZyA9PSAxKSB7CiAJCQlxbGFfcHJpbnRrKEtFUk5fSU5GTywgaGEsCi0JCQkgICAgIkZpcm13YXJlIGR1bXAgY2xlYXJlZCBvbiAoJWxkKS5cbiIsCi0JCQkgICAgaGEtPmhvc3Rfbm8pOworCQkJICAgICJGaXJtd2FyZSBkdW1wIGNsZWFyZWQgb24gKCVsZCkuXG4iLCBoYS0+aG9zdF9ubyk7CiAKIAkJCXZmcmVlKGhhLT5md19kdW1wX2J1ZmZlcik7Ci0JCQlpZiAoIUlTX1FMQTI0WFgoaGEpICYmICFJU19RTEE1NFhYKGhhKSkKLQkJCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWhhLT5md19kdW1wLAotCQkJCSAgICBoYS0+ZndfZHVtcF9vcmRlcik7Ci0KLQkJCWhhLT5md19kdW1wX3JlYWRpbmcgPSAwOwogCQkJaGEtPmZ3X2R1bXBfYnVmZmVyID0gTlVMTDsKLQkJCWhhLT5md19kdW1wID0gTlVMTDsKKwkJCWhhLT5md19kdW1wX3JlYWRpbmcgPSAwOwogCQkJaGEtPmZ3X2R1bXBlZCA9IDA7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSAxOgotCQlpZiAoKGhhLT5md19kdW1wIHx8IGhhLT5md19kdW1wZWQpICYmICFoYS0+ZndfZHVtcF9yZWFkaW5nKSB7CisJCWlmIChoYS0+ZndfZHVtcGVkICYmICFoYS0+ZndfZHVtcF9yZWFkaW5nKSB7CiAJCQloYS0+ZndfZHVtcF9yZWFkaW5nID0gMTsKIAogCQkJaWYgKElTX1FMQTI0WFgoaGEpIHx8IElTX1FMQTU0WFgoaGEpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RiZy5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RiZy5jCmluZGV4IDJkOWIxMmYuLjc0ZTU0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kYmcuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGJnLmMKQEAgLTI4LDcgKzI4LDcgQEAKIAl1aW50MTZfdCBfX2lvbWVtICpkbXBfcmVnOwogCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CiAJc3RydWN0IHFsYTIzMDBfZndfZHVtcAkqZnc7Ci0JdWludDMyX3QJZHVtcF9zaXplLCBkYXRhX3JhbV9jbnQ7CisJdWludDMyX3QJZGF0YV9yYW1fY250OwogCiAJcmlzY19hZGRyZXNzID0gZGF0YV9yYW1fY250ID0gMDsKIAltYjAgPSBtYjIgPSAwOwpAQCAtMzcsMjMgKzM3LDE2IEBACiAJaWYgKCFoYXJkd2FyZV9sb2NrZWQpCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwogCi0JaWYgKGhhLT5md19kdW1wICE9IE5VTEwpIHsKKwlpZiAoIWhhLT5md19kdW1wKSB7CiAJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKLQkJICAgICJGaXJtd2FyZSBoYXMgYmVlbiBwcmV2aW91c2x5IGR1bXBlZCAoJXApIC0tIGlnbm9yaW5nICIKLQkJICAgICJyZXF1ZXN0Li4uXG4iLCBoYS0+ZndfZHVtcCk7CisJCSAgICAiTm8gYnVmZmVyIGF2YWlsYWJsZSBmb3IgZHVtcCEhIVxuIik7CiAJCWdvdG8gcWxhMjMwMF9md19kdW1wX2ZhaWxlZDsKIAl9CiAKLQkvKiBBbGxvY2F0ZSAobGFyZ2UpIGR1bXAgYnVmZmVyLiAqLwotCWR1bXBfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcWxhMjMwMF9md19kdW1wKTsKLQlkdW1wX3NpemUgKz0gKGhhLT5md19tZW1vcnlfc2l6ZSAtIDB4MTEwMDApICogc2l6ZW9mKHVpbnQxNl90KTsKLQloYS0+ZndfZHVtcF9vcmRlciA9IGdldF9vcmRlcihkdW1wX3NpemUpOwotCWhhLT5md19kdW1wID0gKHN0cnVjdCBxbGEyMzAwX2Z3X2R1bXAgKikgX19nZXRfZnJlZV9wYWdlcyhHRlBfQVRPTUlDLAotCSAgICBoYS0+ZndfZHVtcF9vcmRlcik7Ci0JaWYgKGhhLT5md19kdW1wID09IE5VTEwpIHsKKwlpZiAoaGEtPmZ3X2R1bXBlZCkgewogCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCi0JCSAgICAiVW5hYmxlIHRvIGFsbG9jYXRlZCBtZW1vcnkgZm9yIGZpcm13YXJlIGR1bXAgKCVkLyVkKS5cbiIsCi0JCSAgICBoYS0+ZndfZHVtcF9vcmRlciwgZHVtcF9zaXplKTsKKwkJICAgICJGaXJtd2FyZSBoYXMgYmVlbiBwcmV2aW91c2x5IGR1bXBlZCAoJXApIC0tIGlnbm9yaW5nICIKKwkJICAgICJyZXF1ZXN0Li4uXG4iLCBoYS0+ZndfZHVtcCk7CiAJCWdvdG8gcWxhMjMwMF9md19kdW1wX2ZhaWxlZDsKIAl9CiAJZncgPSBoYS0+ZndfZHVtcDsKQEAgLTM1OCwxNyArMzUxLDE2IEBACiAJCX0KIAl9CiAKLQogCWlmIChydmFsICE9IFFMQV9TVUNDRVNTKSB7CiAJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKIAkJICAgICJGYWlsZWQgdG8gZHVtcCBmaXJtd2FyZSAoJXgpISEhXG4iLCBydmFsKTsKKwkJaGEtPmZ3X2R1bXBlZCA9IDA7CiAKLQkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyloYS0+ZndfZHVtcCwgaGEtPmZ3X2R1bXBfb3JkZXIpOwotCQloYS0+ZndfZHVtcCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJcWxhX3ByaW50ayhLRVJOX0lORk8sIGhhLAogCQkgICAgIkZpcm13YXJlIGR1bXAgc2F2ZWQgdG8gdGVtcCBidWZmZXIgKCVsZC8lcCkuXG4iLAogCQkgICAgaGEtPmhvc3Rfbm8sIGhhLT5md19kdW1wKTsKKwkJaGEtPmZ3X2R1bXBlZCA9IDE7CiAJfQogCiBxbGEyMzAwX2Z3X2R1bXBfZmFpbGVkOgpAQCAtNTg3LDIxICs1NzksMTYgQEAKIAlpZiAoIWhhcmR3YXJlX2xvY2tlZCkKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5oYXJkd2FyZV9sb2NrLCBmbGFncyk7CiAKLQlpZiAoaGEtPmZ3X2R1bXAgIT0gTlVMTCkgeworCWlmICghaGEtPmZ3X2R1bXApIHsKIAkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkgICAgIkZpcm13YXJlIGhhcyBiZWVuIHByZXZpb3VzbHkgZHVtcGVkICglcCkgLS0gaWdub3JpbmcgIgotCQkgICAgInJlcXVlc3QuLi5cbiIsIGhhLT5md19kdW1wKTsKKwkJICAgICJObyBidWZmZXIgYXZhaWxhYmxlIGZvciBkdW1wISEhXG4iKTsKIAkJZ290byBxbGEyMTAwX2Z3X2R1bXBfZmFpbGVkOwogCX0KIAotCS8qIEFsbG9jYXRlIChsYXJnZSkgZHVtcCBidWZmZXIuICovCi0JaGEtPmZ3X2R1bXBfb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZW9mKHN0cnVjdCBxbGEyMTAwX2Z3X2R1bXApKTsKLQloYS0+ZndfZHVtcCA9IChzdHJ1Y3QgcWxhMjEwMF9md19kdW1wICopIF9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0FUT01JQywKLQkgICAgaGEtPmZ3X2R1bXBfb3JkZXIpOwotCWlmIChoYS0+ZndfZHVtcCA9PSBOVUxMKSB7CisJaWYgKGhhLT5md19kdW1wZWQpIHsKIAkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkgICAgIlVuYWJsZSB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciBmaXJtd2FyZSBkdW1wICglZC8lWmQpLlxuIiwKLQkJICAgIGhhLT5md19kdW1wX29yZGVyLCBzaXplb2Yoc3RydWN0IHFsYTIxMDBfZndfZHVtcCkpOworCQkgICAgIkZpcm13YXJlIGhhcyBiZWVuIHByZXZpb3VzbHkgZHVtcGVkICglcCkgLS0gaWdub3JpbmcgIgorCQkgICAgInJlcXVlc3QuLi5cbiIsIGhhLT5md19kdW1wKTsKIAkJZ290byBxbGEyMTAwX2Z3X2R1bXBfZmFpbGVkOwogCX0KIAlmdyA9IGhhLT5md19kdW1wOwpAQCAtNzc3LDEzICs3NjQsMTMgQEAKIAlpZiAocnZhbCAhPSBRTEFfU1VDQ0VTUykgewogCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCiAJCSAgICAiRmFpbGVkIHRvIGR1bXAgZmlybXdhcmUgKCV4KSEhIVxuIiwgcnZhbCk7CisJCWhhLT5md19kdW1wZWQgPSAwOwogCi0JCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpaGEtPmZ3X2R1bXAsIGhhLT5md19kdW1wX29yZGVyKTsKLQkJaGEtPmZ3X2R1bXAgPSBOVUxMOwogCX0gZWxzZSB7CiAJCXFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwKIAkJICAgICJGaXJtd2FyZSBkdW1wIHNhdmVkIHRvIHRlbXAgYnVmZmVyICglbGQvJXApLlxuIiwKIAkJICAgIGhhLT5ob3N0X25vLCBoYS0+ZndfZHVtcCk7CisJCWhhLT5md19kdW1wZWQgPSAxOwogCX0KIAogcWxhMjEwMF9md19kdW1wX2ZhaWxlZDoKQEAgLTk4OCw3ICs5NzUsNyBAQAogCWlmICghaGFyZHdhcmVfbG9ja2VkKQogCQlzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKIAotCWlmICghaGEtPmZ3X2R1bXAyNCkgeworCWlmICghaGEtPmZ3X2R1bXApIHsKIAkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAogCQkgICAgIk5vIGJ1ZmZlciBhdmFpbGFibGUgZm9yIGR1bXAhISFcbiIpOwogCQlnb3RvIHFsYTI0eHhfZndfZHVtcF9mYWlsZWQ7CkBAIC05OTcsMTAgKzk4NCwxMCBAQAogCWlmIChoYS0+ZndfZHVtcGVkKSB7CiAJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKIAkJICAgICJGaXJtd2FyZSBoYXMgYmVlbiBwcmV2aW91c2x5IGR1bXBlZCAoJXApIC0tIGlnbm9yaW5nICIKLQkJICAgICJyZXF1ZXN0Li4uXG4iLCBoYS0+ZndfZHVtcDI0KTsKKwkJICAgICJyZXF1ZXN0Li4uXG4iLCBoYS0+ZndfZHVtcCk7CiAJCWdvdG8gcWxhMjR4eF9md19kdW1wX2ZhaWxlZDsKIAl9Ci0JZncgPSAoc3RydWN0IHFsYTI0eHhfZndfZHVtcCAqKSBoYS0+ZndfZHVtcDI0OworCWZ3ID0gaGEtPmZ3X2R1bXA7CiAKIAlydmFsID0gUUxBX1NVQ0NFU1M7CiAJZnctPmhvc3Rfc3RhdHVzID0gUkRfUkVHX0RXT1JEKCZyZWctPmhvc3Rfc3RhdHVzKTsKQEAgLTE2NTQsNyArMTY0MSw3IEBACiAJfSBlbHNlIHsKIAkJcWxhX3ByaW50ayhLRVJOX0lORk8sIGhhLAogCQkgICAgIkZpcm13YXJlIGR1bXAgc2F2ZWQgdG8gdGVtcCBidWZmZXIgKCVsZC8lcCkuXG4iLAotCQkgICAgaGEtPmhvc3Rfbm8sIGhhLT5md19kdW1wMjQpOworCQkgICAgaGEtPmhvc3Rfbm8sIGhhLT5md19kdW1wKTsKIAkJaGEtPmZ3X2R1bXBlZCA9IDE7CiAJfQogCkBAIC0xNjcyLDcgKzE2NTksNyBAQAogCXVpbnQzMl90IGV4dF9tZW1fY250OwogCiAJdWl0ZXIgPSBoYS0+ZndfZHVtcF9idWZmZXI7Ci0JZncgPSBoYS0+ZndfZHVtcDI0OworCWZ3ID0gaGEtPmZ3X2R1bXA7CiAKIAlxbGFfdXByaW50ZigmdWl0ZXIsICJJU1AgRlcgVmVyc2lvbiAlZC4lMDJkLiUwMmQgQXR0cmlidXRlcyAlMDR4XG4iLAogCSAgICBoYS0+ZndfbWFqb3JfdmVyc2lvbiwgaGEtPmZ3X21pbm9yX3ZlcnNpb24sCkBAIC0xOTk1LDcgKzE5ODIsNiBAQAogCQlyZXR1cm47CiAKIAlwcmludGsoIiAgc3AgZmxhZ3M9MHgleFxuIiwgc3AtPmZsYWdzKTsKLQlwcmludGsoIiAgc3RhdGU9JWRcbiIsIHNwLT5zdGF0ZSk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaCBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaAppbmRleCA1MzUwOGYzLi5kNmY2NTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGVmLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmg+CiAKKyNkZWZpbmUgUUxBMlhYWF9EUklWRVJfTkFNRSAgInFsYTJ4eHgiCisKIC8qCiAgKiBXZSBoYXZlIE1BSUxCT1hfUkVHSVNURVJfQ09VTlQgc2l6ZWQgYXJyYXlzIGluIGEgZmV3IHBsYWNlcywKICAqIGJ1dCB0aGF0J3MgZmluZSBhcyB3ZSBkb24ndCBsb29rIGF0IHRoZSBsYXN0IDI0IG9uZXMgZm9yCkBAIC0xODksMjIgKzE5MSwxMyBAQAogCiAJc3RydWN0IHNjc2lfY21uZCAqY21kOwkJLyogTGludXggU0NTSSBjb21tYW5kIHBrdCAqLwogCi0Jc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CS8qIENvbW1hbmQgdGltZXIgKi8KLQlhdG9taWNfdCByZWZfY291bnQ7CS8qIFJlZmVyZW5jZSBjb3VudCBmb3IgdGhpcyBzdHJ1Y3R1cmUgKi8KIAl1aW50MTZfdCBmbGFnczsKIAotCS8qIFJlcXVlc3Qgc3RhdGUgKi8KLQl1aW50MTZfdCBzdGF0ZTsKLQogCS8qIFNpbmdsZSB0cmFuc2ZlciBETUEgY29udGV4dCAqLwogCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTsKIAogCXVpbnQzMl90IHJlcXVlc3Rfc2Vuc2VfbGVuZ3RoOwogCXVpbnQ4X3QgKnJlcXVlc3Rfc2Vuc2VfcHRyOwotCi0JLyogU1JCIG1hZ2ljIG51bWJlciAqLwotCXVpbnQxNl90IG1hZ2ljOwotI2RlZmluZSBTUkJfTUFHSUMgICAgICAgMHgxMENCCiB9IHNyYl90OwogCiAvKgpAQCAtMjI2LDIxICsyMTksNiBAQAogI2RlZmluZSBTUkJfVEFQRQkJQklUXzExCS8qIEZDUDIgKFRhcGUpIGNvbW1hbmQuICovCiAKIC8qCi0gKiBTUkIgc3RhdGUgZGVmaW5pdGlvbnMKLSAqLwotI2RlZmluZSBTUkJfRlJFRV9TVEFURQkJMAkvKiAgIHJldHVybmVkIGJhY2sgKi8KLSNkZWZpbmUgU1JCX1BFTkRJTkdfU1RBVEUJMQkvKiAgIHF1ZXVlZCBpbiBMVU4gUSAqLwotI2RlZmluZSBTUkJfQUNUSVZFX1NUQVRFCTIJLyogICBpbiBBY3RpdmUgQXJyYXkgKi8KLSNkZWZpbmUgU1JCX0RPTkVfU1RBVEUJCTMJLyogICBxdWV1ZWQgaW4gRG9uZSBRdWV1ZSAqLwotI2RlZmluZSBTUkJfUkVUUllfU1RBVEUJCTQJLyogICBpbiBSZXRyeSBRdWV1ZSAqLwotI2RlZmluZSBTUkJfU1VTUEVOREVEX1NUQVRFCTUJLyogICBpbiBzdXNwZW5kZWQgc3RhdGUgKi8KLSNkZWZpbmUgU1JCX05PX1FVRVVFX1NUQVRFCTYJLyogICBpcyBpbiBiZXR3ZWVuIHN0YXRlcyAqLwotI2RlZmluZSBTUkJfQUNUSVZFX1RJTUVPVVRfU1RBVEUgNwkvKiAgIGluIEFjdGl2ZSBBcnJheSBidXQgdGltZWQgb3V0ICovCi0jZGVmaW5lIFNSQl9GQUlMT1ZFUl9TVEFURQk4CS8qICAgaW4gRmFpbG92ZXIgUXVldWUgKi8KLSNkZWZpbmUgU1JCX1NDU0lfUkVUUllfU1RBVEUJOQkvKiAgIGluIFNjc2kgUmV0cnkgUXVldWUgKi8KLQotCi0vKgogICogSVNQIEkvTyBSZWdpc3RlciBTZXQgc3RydWN0dXJlIGRlZmluaXRpb25zLgogICovCiBzdHJ1Y3QgZGV2aWNlX3JlZ18yeHh4IHsKQEAgLTI3MCw2ICsyNDgsOCBAQAogI2RlZmluZSBOVlJfU0VMRUNUCQlCSVRfMQogI2RlZmluZSBOVlJfQ0xPQ0sJCUJJVF8wCiAKKyNkZWZpbmUgTlZSX1dBSVRfQ05UCQkyMDAwMAorCiAJdW5pb24gewogCQlzdHJ1Y3QgewogCQkJdWludDE2X3QgbWFpbGJveDA7CkBAIC0xNTE0LDYyICsxNDk0LDYgQEAKIH0gc3dfaW5mb190OwogCiAvKgotICogSW5xdWlyeSBjb21tYW5kIHN0cnVjdHVyZS4KLSAqLwotI2RlZmluZSBJTlFfREFUQV9TSVpFCTM2Ci0KLS8qCi0gKiBJbnF1aXJ5IG1haWxib3ggSU9DQiBwYWNrZXQgZGVmaW5pdGlvbi4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotCXVuaW9uIHsKLQkJY21kX2E2NF9lbnRyeV90IGNtZDsKLQkJc3RzX2VudHJ5X3QgcnNwOwotCQlzdHJ1Y3QgY21kX3R5cGVfNyBjbWQyNDsKLQkJc3RydWN0IHN0c19lbnRyeV8yNHh4IHJzcDI0OwotCX0gcDsKLQl1aW50OF90IGlucVtJTlFfREFUQV9TSVpFXTsKLX0gaW5xX2NtZF9yc3BfdDsKLQotLyoKLSAqIFJlcG9ydCBMVU4gY29tbWFuZCBzdHJ1Y3R1cmUuCi0gKi8KLSNkZWZpbmUgQ0hBUl9UT19TSE9SVChhLCBiKQkodWludDE2X3QpKCh1aW50OF90KWIgPDwgOCB8ICh1aW50OF90KWEpCi0KLXR5cGVkZWYgc3RydWN0IHsKLQl1aW50MzJfdCBsZW47Ci0JdWludDMyX3QgcnNydjsKLX0gcnB0X2hkcl90OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0Jc3RydWN0IHsKLQkJdWludDhfdCBiIDogNjsKLQkJdWludDhfdCBhZGRyZXNzX21ldGhvZCA6IDI7Ci0JfSBtc2I7Ci0JdWludDhfdCBsc2I7Ci0JdWludDhfdCB1bnVzZWRbNl07Ci19IHJwdF9sdW5fdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotCXJwdF9oZHJfdCBoZHI7Ci0JcnB0X2x1bl90IGxzdFtNQVhfTFVOU107Ci19IHJwdF9sdW5fbHN0X3Q7Ci0KLS8qCi0gKiBSZXBvcnQgTHVuIG1haWxib3ggSU9DQiBwYWNrZXQgZGVmaW5pdGlvbi4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotCXVuaW9uIHsKLQkJY21kX2E2NF9lbnRyeV90IGNtZDsKLQkJc3RzX2VudHJ5X3QgcnNwOwotCQlzdHJ1Y3QgY21kX3R5cGVfNyBjbWQyNDsKLQkJc3RydWN0IHN0c19lbnRyeV8yNHh4IHJzcDI0OwotCX0gcDsKLQlycHRfbHVuX2xzdF90IGxpc3Q7Ci19IHJwdF9sdW5fY21kX3JzcF90OwotCi0KLS8qCiAgKiBGaWJyZSBjaGFubmVsIHBvcnQgdHlwZS4KICAqLwogIHR5cGVkZWYgZW51bSB7CkBAIC0xNTg3LDcgKzE1MTEsNiBAQAogdHlwZWRlZiBzdHJ1Y3QgZmNfcG9ydCB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXN0cnVjdCBzY3NpX3FsYV9ob3N0ICpoYTsKLQlzdHJ1Y3Qgc2NzaV9xbGFfaG9zdCAqdmlzX2hhOwkvKiBvbmx5IHVzZWQgd2hlbiBzdXNwZW5kaW5nIGx1biAqLwogCiAJdWludDhfdCBub2RlX25hbWVbV1dOX1NJWkVdOwogCXVpbnQ4X3QgcG9ydF9uYW1lW1dXTl9TSVpFXTsKQEAgLTE2MDIsMjMgKzE1MjUsMTMgQEAKIAogCXVuc2lnbmVkIGludCBvc190YXJnZXRfaWQ7CiAKLQl1aW50MTZfdCBpb2Rlc2NfaWR4X3NlbnQ7Ci0KIAlpbnQgcG9ydF9sb2dpbl9yZXRyeV9jb3VudDsKIAlpbnQgbG9naW5fcmV0cnk7CiAJYXRvbWljX3QgcG9ydF9kb3duX3RpbWVyOwogCi0JdWludDhfdCBkZXZpY2VfdHlwZTsKLQl1aW50OF90IHVudXNlZDsKLQotCXVpbnQ4X3QgbXBfYnl0ZTsJCS8qIG11bHRpLXBhdGggYnl0ZSAobm90IHVzZWQpICovCi0gICAgCXVpbnQ4X3QgY3VyX3BhdGg7CQkvKiBjdXJyZW50IHBhdGggaWQgKi8KLQogCXNwaW5sb2NrX3QgcnBvcnRfbG9jazsKIAlzdHJ1Y3QgZmNfcnBvcnQgKnJwb3J0LCAqZHJwb3J0OwogCXUzMiBzdXBwb3J0ZWRfY2xhc3NlczsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnBvcnRfYWRkX3dvcms7Ci0Jc3RydWN0IHdvcmtfc3RydWN0IHJwb3J0X2RlbF93b3JrOwogfSBmY19wb3J0X3Q7CiAKIC8qCkBAIC0yMDI3LDU0ICsxOTQwLDYgQEAKIAl9IHA7CiB9OwogCi0vKiBJTyBkZXNjcmlwdG9ycyAqLwotI2RlZmluZSBNQVhfSU9fREVTQ1JJUFRPUlMJMzIKLQotI2RlZmluZSBBQk9SVF9JT0NCX0NCCQkwCi0jZGVmaW5lIEFESVNDX1BPUlRfSU9DQl9DQgkxCi0jZGVmaW5lIExPR09VVF9QT1JUX0lPQ0JfQ0IJMgotI2RlZmluZSBMT0dJTl9QT1JUX0lPQ0JfQ0IJMwotI2RlZmluZSBMQVNUX0lPQ0JfQ0IJCTQKLQotI2RlZmluZSBJT0RFU0NfSU5WQUxJRF9JTkRFWAkweEZGRkYKLSNkZWZpbmUgSU9ERVNDX0FESVNDX05FRURFRAkweEZGRkUKLSNkZWZpbmUgSU9ERVNDX0xPR0lOX05FRURFRAkweEZGRkQKLQotc3RydWN0IGlvX2Rlc2NyaXB0b3IgewotCXVpbnQxNl90IHVzZWQ6MTsKLQl1aW50MTZfdCBpZHg6MTE7Ci0JdWludDE2X3QgY2JfaWR4OjQ7Ci0KLQlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKLQotCXN0cnVjdCBzY3NpX3FsYV9ob3N0ICpoYTsKLQotCXBvcnRfaWRfdCBkX2lkOwotCWZjX3BvcnRfdCAqcmVtb3RlX2ZjcG9ydDsKLQotCXVpbnQzMl90IHNpZ25hdHVyZTsKLX07Ci0KLXN0cnVjdCBxbGFfZndfaW5mbyB7Ci0JdW5zaWduZWQgc2hvcnQgYWRkcmVzc2luZzsJLyogYWRkcmVzc2luZyBtZXRob2QgdXNlZCB0byBsb2FkIGZ3ICovCi0jZGVmaW5lIEZXX0lORk9fQUREUl9OT1JNQUwJMAotI2RlZmluZSBGV19JTkZPX0FERFJfRVhURU5ERUQJMQotI2RlZmluZSBGV19JTkZPX0FERFJfTk9NT1JFCTB4ZmZmZgotCXVuc2lnbmVkIHNob3J0ICpmd2NvZGU7CQkvKiBwb2ludGVyIHRvIEZXIGFycmF5ICovCi0JdW5zaWduZWQgc2hvcnQgKmZ3bGVuOwkJLyogbnVtYmVyIG9mIHdvcmRzIGluIGFycmF5ICovCi0JdW5zaWduZWQgc2hvcnQgKmZ3c3RhcnQ7CS8qIHN0YXJ0IGFkZHJlc3MgZm9yIEYvVyAqLwotCXVuc2lnbmVkIGxvbmcgKmxmd3N0YXJ0OwkvKiBzdGFydCBhZGRyZXNzIChsb25nKSBmb3IgRi9XICovCi19OwotCi1zdHJ1Y3QgcWxhX2JvYXJkX2luZm8gewotCWNoYXIgKmRydl9uYW1lOwotCi0JY2hhciBpc3BfbmFtZVs4XTsKLQlzdHJ1Y3QgcWxhX2Z3X2luZm8gKmZ3X2luZm87Ci0JY2hhciAqZndfZm5hbWU7Ci0Jc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSAqc2h0OwotfTsKLQogc3RydWN0IGZ3X2Jsb2IgewogCWNoYXIgKm5hbWU7CiAJdWludDMyX3Qgc2Vnc1s0XTsKQEAgLTIzMDMsOSArMjE2OCw2IEBACiAJdWludDMyX3QJY3VycmVudF9vdXRzdGFuZGluZ19jbWQ7CiAJc3JiX3QJCSpzdGF0dXNfc3JiOwkvKiBTdGF0dXMgY29udGludWF0aW9uIGVudHJ5LiAqLwogCi0JdWludDE2X3QgICAgICAgICAgIHJldmlzaW9uOwotCXVpbnQ4X3QgICAgICAgICAgIHBvcnRzOwotCiAJLyogSVNQIGNvbmZpZ3VyYXRpb24gZGF0YS4gKi8KIAl1aW50MTZfdAlsb29wX2lkOwkJLyogSG9zdCBhZGFwdGVyIGxvb3AgaWQgKi8KIAl1aW50MTZfdAlmYl9yZXY7CkBAIC0yMzYxLDEwICsyMjIzLDYgQEAKIAogCS8qIEZpYnJlIENoYW5uZWwgRGV2aWNlIExpc3QuICovCiAJc3RydWN0IGxpc3RfaGVhZAlmY3BvcnRzOwotCXN0cnVjdCBsaXN0X2hlYWQJcnNjbl9mY3BvcnRzOwotCi0Jc3RydWN0IGlvX2Rlc2NyaXB0b3IJaW9fZGVzY3JpcHRvcnNbTUFYX0lPX0RFU0NSSVBUT1JTXTsKLQl1aW50MTZfdAkJaW9kZXNjX3NpZ25hdHVyZTsKIAogCS8qIFJTQ04gcXVldWUuICovCiAJdWludDMyX3QgcnNjbl9xdWV1ZVtNQVhfUlNDTl9DT1VOVF07CkBAIC0yMzk1LDkgKzIyNTMsNiBAQAogCXN0cnVjdCBnaWRfbGlzdF9pbmZvICpnaWRfbGlzdDsKIAlpbnQJCWdpZF9saXN0X2luZm9fc2l6ZTsKIAotCWRtYV9hZGRyX3QJcmxjX3JzcF9kbWE7Ci0JcnB0X2x1bl9jbWRfcnNwX3QgKnJsY19yc3A7Ci0KIAkvKiBTbWFsbCBETUEgcG9vbCBhbGxvY2F0aW9ucyAtLSBtYXhpbXVtIDI1NiBieXRlcyBpbiBsZW5ndGguICovCiAjZGVmaW5lIERNQV9QT09MX1NJWkUJMjU2CiAJc3RydWN0IGRtYV9wb29sICpzX2RtYV9wb29sOwpAQCAtMjQwNiw5ICsyMjYxLDYgQEAKIAlpbml0X2NiX3QJKmluaXRfY2I7CiAJaW50CQlpbml0X2NiX3NpemU7CiAKLQlkbWFfYWRkcl90CWlvZGVzY19wZF9kbWE7Ci0JcG9ydF9kYXRhYmFzZV90ICppb2Rlc2NfcGQ7Ci0KIAkvKiBUaGVzZSBhcmUgdXNlZCBieSBtYWlsYm94IG9wZXJhdGlvbnMuICovCiAJdm9sYXRpbGUgdWludDE2X3QgbWFpbGJveF9vdXRbTUFJTEJPWF9SRUdJU1RFUl9DT1VOVF07CiAKQEAgLTI0MzUsMTMgKzIyODcsMTYgQEAKIAltYnhfY21kX3QgCW1jOwogCiAJLyogQmFzaWMgZmlybXdhcmUgcmVsYXRlZCBpbmZvcm1hdGlvbi4gKi8KLQlzdHJ1Y3QgcWxhX2JvYXJkX2luZm8JKmJyZF9pbmZvOwogCXVpbnQxNl90CWZ3X21ham9yX3ZlcnNpb247CiAJdWludDE2X3QJZndfbWlub3JfdmVyc2lvbjsKIAl1aW50MTZfdAlmd19zdWJtaW5vcl92ZXJzaW9uOwogCXVpbnQxNl90CWZ3X2F0dHJpYnV0ZXM7CiAJdWludDMyX3QJZndfbWVtb3J5X3NpemU7CiAJdWludDMyX3QJZndfdHJhbnNmZXJfc2l6ZTsKKwl1aW50MzJfdAlmd19zcmlzY19hZGRyZXNzOworI2RlZmluZSBSSVNDX1NUQVJUX0FERFJFU1NfMjEwMCAweDEwMDAKKyNkZWZpbmUgUklTQ19TVEFSVF9BRERSRVNTXzIzMDAgMHg4MDAKKyNkZWZpbmUgUklTQ19TVEFSVF9BRERSRVNTXzI0MDAgMHgxMDAwMDAKIAogCXVpbnQxNl90CWZ3X29wdGlvbnNbMTZdOwkJLyogc2xvdHM6IDEsMiwzLDEwLDExICovCiAJdWludDhfdAkJZndfc2VyaWFsbGlua19vcHRpb25zWzRdOwpAQCAtMjQ0OSwxNSArMjMwNCwxMSBAQAogCiAJLyogRmlybXdhcmUgZHVtcCBpbmZvcm1hdGlvbi4gKi8KIAl2b2lkCQkqZndfZHVtcDsKLQlpbnQJCWZ3X2R1bXBfb3JkZXI7CisJaW50CQlmd19kdW1wZWQ7CiAJaW50CQlmd19kdW1wX3JlYWRpbmc7CiAJY2hhcgkJKmZ3X2R1bXBfYnVmZmVyOwogCWludAkJZndfZHVtcF9idWZmZXJfbGVuOwogCi0JaW50CQlmd19kdW1wZWQ7Ci0Jdm9pZAkJKmZ3X2R1bXAyNDsKLQlpbnQJCWZ3X2R1bXAyNF9sZW47Ci0KIAl1aW50OF90CQlob3N0X3N0clsxNl07CiAJdWludDMyX3QJcGNpX2F0dHI7CiAKQEAgLTI1MDMsOCArMjM1NCw2IEBACiAJIHRlc3RfYml0KExPT1BfUkVTWU5DX05FRURFRCwgJmhhLT5kcGNfZmxhZ3MpIHx8IFwKIAkgYXRvbWljX3JlYWQoJmhhLT5sb29wX3N0YXRlKSA9PSBMT09QX0RPV04pCiAKLSNkZWZpbmUgVEdUX1EoaGEsIHQpIChoYS0+b3RndFt0XSkKLQogI2RlZmluZSB0b19xbGFfaG9zdCh4KQkJKChzY3NpX3FsYV9ob3N0X3QgKikgKHgpLT5ob3N0ZGF0YSkKIAogI2RlZmluZSBxbGFfcHJpbnRrKGxldmVsLCBoYSwgZm9ybWF0LCBhcmcuLi4pIFwKQEAgLTI1MzcsMTkgKzIzODYsNiBAQAogI2RlZmluZSBRTEFfUlNDTlNfSEFORExFRAkJMHgxMDgKICNkZWZpbmUgUUxBX0FMUkVBRFlfUkVHSVNURVJFRAkJMHgxMDkKIAotLyoKLSogU3RhdCBpbmZvIGZvciBhbGwgYWRwYXRlcnMKLSovCi1zdHJ1Y3QgX3FsYTJ4MDBzdGF0cyAgewotICAgICAgICB1bnNpZ25lZCBsb25nICAgbWJveHRvdXQ7ICAgICAgICAgICAgLyogbWFpbGJveCB0aW1lb3V0cyAqLwotICAgICAgICB1bnNpZ25lZCBsb25nICAgbWJveGVycjsgICAgICAgICAgICAgLyogbWFpbGJveCBlcnJvcnMgKi8KLSAgICAgICAgdW5zaWduZWQgbG9uZyAgIGlzcEFib3J0OyAgICAgICAgICAgIC8qIElTUCBhYm9ydHMgKi8KLSAgICAgICAgdW5zaWduZWQgbG9uZyAgIGRlYnVnTm87Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgICBsb29wX3Jlc3luYzsKLSAgICAgICAgdW5zaWduZWQgbG9uZyAgIG91dGFycmF5X2Z1bGw7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgICByZXRyeV9xX2NudDsKLX07Ci0KICNkZWZpbmUgTlZSQU1fREVMQVkoKQkJdWRlbGF5KDEwKQogCiAjZGVmaW5lIElOVkFMSURfSEFORExFCShNQVhfT1VUU1RBTkRJTkdfQ09NTUFORFMrMSkKQEAgLTI1NjUsMTIgKzI0MDEsNiBAQAogI2luY2x1ZGUgInFsYV9kYmcuaCIKICNpbmNsdWRlICJxbGFfaW5saW5lLmgiCiAKLS8qCi0qIFN0cmluZyBhcnJheXMKLSovCi0jZGVmaW5lIExJTkVTSVpFICAgIDI1NgotI2RlZmluZSBNQVhBUkdTICAgICAgMjYKLQogI2RlZmluZSBDTURfU1AoQ21uZCkJCSgoQ21uZCktPlNDcC5wdHIpCiAjZGVmaW5lIENNRF9DT01QTF9TVEFUVVMoQ21uZCkgICgoQ21uZCktPlNDcC50aGlzX3Jlc2lkdWFsKQogI2RlZmluZSBDTURfUkVTSURfTEVOKENtbmQpCSgoQ21uZCktPlNDcC5idWZmZXJzX3Jlc2lkdWFsKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2Z3LmggYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaAppbmRleCAxZWU1OGFkLi4zYWY0Nzg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaAorKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaApAQCAtNyw3ICs3LDYgQEAKICNpZm5kZWYgX19RTEFfRldfSAogI2RlZmluZSBfX1FMQV9GV19ICiAKLSNkZWZpbmUgUklTQ19TQUREUkVTUwkJMHgxMDAwMDAKICNkZWZpbmUgTUJTX0NIRUNLU1VNX0VSUk9SCTB4NDAxMAogCiAvKgpAQCAtNDYzLDcgKzQ2Miw3IEBACiAJdWludDE2X3QgY29tcF9zdGF0dXM7CQkvKiBDb21wbGV0aW9uIHN0YXR1cy4gKi8KIAl1aW50MTZfdCBveF9pZDsJCQkvKiBPWF9JRCB1c2VkIGJ5IHRoZSBmaXJtd2FyZS4gKi8KIAotCXVpbnQzMl90IHJlc2lkdWFsX2xlbjsJCS8qIFJlc2lkdWFsIHRyYW5zZmVyIGxlbmd0aC4gKi8KKwl1aW50MzJfdCByZXNpZHVhbF9sZW47CQkvKiBGVyBjYWxjIHJlc2lkdWFsIHRyYW5zZmVyIGxlbmd0aC4gKi8KIAogCXVpbnQxNl90IHJlc2VydmVkXzE7CiAJdWludDE2X3Qgc3RhdGVfZmxhZ3M7CQkvKiBTdGF0ZSBmbGFncy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9nYmwuaCBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9nYmwuaAppbmRleCA5MWU4M2UyLi4xNjRkNTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZ2JsLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2dibC5oCkBAIC05LDkgKzksNiBAQAogCiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAKLWV4dGVybiB2b2lkIHFsYTJ4MDBfcmVtb3ZlX29uZShzdHJ1Y3QgcGNpX2RldiAqKTsKLWV4dGVybiBpbnQgcWxhMngwMF9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0IHFsYV9ib2FyZF9pbmZvICopOwotCiAvKgogICogR2xvYmFsIEZ1bmN0aW9uIFByb3RvdHlwZXMgaW4gcWxhX2luaXQuYyBzb3VyY2UgZmlsZS4KICAqLwpAQCAtNjQsMTQgKzYxLDExIEBACiBleHRlcm4gaW50IHFsMnhwbG9naWFic2VudGRldmljZTsKIGV4dGVybiBpbnQgcWwyeGxvZ2lucmV0cnljb3VudDsKIGV4dGVybiBpbnQgcWwyeGZkbWllbmFibGU7Ci1leHRlcm4gaW50IHFsMnhwcm9jZXNzcnNjbjsKIAogZXh0ZXJuIHZvaWQgcWxhMngwMF9zcF9jb21wbChzY3NpX3FsYV9ob3N0X3QgKiwgc3JiX3QgKik7CiAKIGV4dGVybiBjaGFyICpxbGEyeDAwX2dldF9md192ZXJzaW9uX3N0cihzdHJ1Y3Qgc2NzaV9xbGFfaG9zdCAqLCBjaGFyICopOwogCi1leHRlcm4gdm9pZCBxbGEyeDAwX2NtZF90aW1lb3V0KHNyYl90ICopOwotCiBleHRlcm4gdm9pZCBxbGEyeDAwX21hcmtfZGV2aWNlX2xvc3Qoc2NzaV9xbGFfaG9zdF90ICosIGZjX3BvcnRfdCAqLCBpbnQsIGludCk7CiBleHRlcm4gdm9pZCBxbGEyeDAwX21hcmtfYWxsX2RldmljZXNfbG9zdChzY3NpX3FsYV9ob3N0X3QgKiwgaW50KTsKIApAQCAtMjg2LDE1ICsyODAsNiBAQAogZXh0ZXJuIGludCBxbGEyeDAwX2ZkbWlfcmVnaXN0ZXIoc2NzaV9xbGFfaG9zdF90ICopOwogCiAvKgotICogR2xvYmFsIEZ1bmN0aW9uIFByb3RvdHlwZXMgaW4gcWxhX3JzY24uYyBzb3VyY2UgZmlsZS4KLSAqLwotZXh0ZXJuIGZjX3BvcnRfdCAqcWxhMngwMF9hbGxvY19yc2NuX2ZjcG9ydChzY3NpX3FsYV9ob3N0X3QgKiwgZ2ZwX3QpOwotZXh0ZXJuIGludCBxbGEyeDAwX2hhbmRsZV9wb3J0X3JzY24oc2NzaV9xbGFfaG9zdF90ICosIHVpbnQzMl90LCBmY19wb3J0X3QgKiwKLSAgICBpbnQpOwotZXh0ZXJuIHZvaWQgcWxhMngwMF9wcm9jZXNzX2lvZGVzYyhzY3NpX3FsYV9ob3N0X3QgKiwgc3RydWN0IG1ieF9lbnRyeSAqKTsKLWV4dGVybiB2b2lkIHFsYTJ4MDBfY2FuY2VsX2lvX2Rlc2NyaXB0b3JzKHNjc2lfcWxhX2hvc3RfdCAqKTsKLQotLyoKICAqIEdsb2JhbCBGdW5jdGlvbiBQcm90b3R5cGVzIGluIHFsYV94aW9jdGwuYyBzb3VyY2UgZmlsZS4KICAqLwogI2RlZmluZSBxbGEyeDAwX2VucXVldWVfYWVuKGhhLCBjbWQsIG1vZGUpCWRvIHsgfSB3aGlsZSAoMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pbml0LmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaW5pdC5jCmluZGV4IDg5YTNmYzAuLmFlZjA5M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pbml0LmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2luaXQuYwpAQCAtMTk0LDcgKzE5NCw2IEBACiAJbXdpID0gMDsKIAlpZiAocGNpX3NldF9td2koaGEtPnBkZXYpKQogCQltd2kgPSBQQ0lfQ09NTUFORF9JTlZBTElEQVRFOwotCXBjaV9yZWFkX2NvbmZpZ193b3JkKGhhLT5wZGV2LCBQQ0lfUkVWSVNJT05fSUQsICZoYS0+cmV2aXNpb24pOwogCiAJcGNpX3JlYWRfY29uZmlnX3dvcmQoaGEtPnBkZXYsIFBDSV9DT01NQU5ELCAmdyk7CiAJdyB8PSBtd2kgfCAoUENJX0NPTU1BTkRfUEFSSVRZIHwgUENJX0NPTU1BTkRfU0VSUik7CkBAIC0yMzIsNyArMjMxLDYgQEAKIAltd2kgPSAwOwogCWlmIChwY2lfc2V0X213aShoYS0+cGRldikpCiAJCW13aSA9IFBDSV9DT01NQU5EX0lOVkFMSURBVEU7Ci0JcGNpX3JlYWRfY29uZmlnX3dvcmQoaGEtPnBkZXYsIFBDSV9SRVZJU0lPTl9JRCwgJmhhLT5yZXZpc2lvbik7CiAKIAlwY2lfcmVhZF9jb25maWdfd29yZChoYS0+cGRldiwgUENJX0NPTU1BTkQsICZ3KTsKIAl3IHw9IG13aSB8IChQQ0lfQ09NTUFORF9QQVJJVFkgfCBQQ0lfQ09NTUFORF9TRVJSKTsKQEAgLTMyMCw3ICszMTgsNiBAQAogCW13aSA9IDA7CiAJaWYgKHBjaV9zZXRfbXdpKGhhLT5wZGV2KSkKIAkJbXdpID0gUENJX0NPTU1BTkRfSU5WQUxJREFURTsKLQlwY2lfcmVhZF9jb25maWdfd29yZChoYS0+cGRldiwgUENJX1JFVklTSU9OX0lELCAmaGEtPnJldmlzaW9uKTsKIAogCXBjaV9yZWFkX2NvbmZpZ193b3JkKGhhLT5wZGV2LCBQQ0lfQ09NTUFORCwgJncpOwogCXcgfD0gbXdpIHwgKFBDSV9DT01NQU5EX1BBUklUWSB8IFBDSV9DT01NQU5EX1NFUlIpOwpAQCAtMzg2LDkgKzM4Myw3IEBACiAJCXFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwgIlJJU0MgQ09ERSBOT1QgbG9hZGVkXG4iKTsKIAogCQkvKiBWZXJpZnkgY2hlY2tzdW0gb2YgbG9hZGVkIFJJU0MgY29kZS4gKi8KLQkJcnZhbCA9IHFsYTJ4MDBfdmVyaWZ5X2NoZWNrc3VtKGhhLAotCQkgICAgSVNfUUxBMjRYWChoYSkgfHwgSVNfUUxBNTRYWChoYSkgPyBSSVNDX1NBRERSRVNTIDoKLQkJICAgICpoYS0+YnJkX2luZm8tPmZ3X2luZm9bMF0uZndzdGFydCk7CisJCXJ2YWwgPSBxbGEyeDAwX3ZlcmlmeV9jaGVja3N1bShoYSwgaGEtPmZ3X3NyaXNjX2FkZHJlc3MpOwogCX0KIAogCWlmIChydmFsKSB7CkBAIC00MTEsNyArNDA2LDYgQEAKIAl1bnNpZ25lZCBsb25nICAgZmxhZ3MgPSAwOwogCXN0cnVjdCBkZXZpY2VfcmVnXzJ4eHggX19pb21lbSAqcmVnID0gJmhhLT5pb2Jhc2UtPmlzcDsKIAl1aW50MzJfdAljbnQ7Ci0JdW5zaWduZWQgbG9uZwltYnhfZmxhZ3MgPSAwOwogCXVpbnQxNl90CWNtZDsKIAogCWhhLT5pc3Bfb3BzLmRpc2FibGVfaW50cnMoaGEpOwpAQCAtNTE5LDIwICs1MTMsOCBAQAogCiAJaWYgKElTX1FMQTIxMDAoaGEpIHx8IElTX1FMQTIyMDAoaGEpIHx8IElTX1FMQTIzMDAoaGEpKSB7CiAJCWZvciAoY250ID0gMDsgY250IDwgMzAwMDA7IGNudCsrKSB7Ci0JCQlpZiAoISh0ZXN0X2JpdChBQk9SVF9JU1BfQUNUSVZFLCAmaGEtPmRwY19mbGFncykpKQotCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+bWJ4X3JlZ19sb2NrLCBtYnhfZmxhZ3MpOwotCi0JCQlpZiAoUkRfTUFJTEJPWF9SRUcoaGEsIHJlZywgMCkgIT0gTUJTX0JVU1kpIHsKLQkJCQlpZiAoISh0ZXN0X2JpdChBQk9SVF9JU1BfQUNUSVZFLAotCQkJCSAgICAmaGEtPmRwY19mbGFncykpKQotCQkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKAotCQkJCQkgICAgJmhhLT5tYnhfcmVnX2xvY2ssIG1ieF9mbGFncyk7CisJCQlpZiAoUkRfTUFJTEJPWF9SRUcoaGEsIHJlZywgMCkgIT0gTUJTX0JVU1kpCiAJCQkJYnJlYWs7Ci0JCQl9Ci0KLQkJCWlmICghKHRlc3RfYml0KEFCT1JUX0lTUF9BQ1RJVkUsICZoYS0+ZHBjX2ZsYWdzKSkpCi0JCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPm1ieF9yZWdfbG9jaywKLQkJCQkgICAgbWJ4X2ZsYWdzKTsKIAogCQkJdWRlbGF5KDEwMCk7CiAJCX0KQEAgLTc5MSwxNiArNzczLDI2IEBACiBzdGF0aWMgdm9pZAogcWxhMngwMF9hbGxvY19md19kdW1wKHNjc2lfcWxhX2hvc3RfdCAqaGEpCiB7CisJdWludDMyX3QgZHVtcF9zaXplID0gMDsKKwogCWhhLT5md19kdW1wZWQgPSAwOwotCWhhLT5md19kdW1wMjRfbGVuID0gc2l6ZW9mKHN0cnVjdCBxbGEyNHh4X2Z3X2R1bXApOwotCWhhLT5md19kdW1wMjRfbGVuICs9IChoYS0+ZndfbWVtb3J5X3NpemUgLSAweDEwMDAwMCkgKiBzaXplb2YodWludDMyX3QpOwotCWhhLT5md19kdW1wMjQgPSB2bWFsbG9jKGhhLT5md19kdW1wMjRfbGVuKTsKLQlpZiAoaGEtPmZ3X2R1bXAyNCkKKwlpZiAoSVNfUUxBMjEwMChoYSkgfHwgSVNfUUxBMjIwMChoYSkpIHsKKwkJZHVtcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBxbGEyMTAwX2Z3X2R1bXApOworCX0gZWxzZSBpZiAoSVNfUUxBMjNYWChoYSkpIHsKKwkJZHVtcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBxbGEyMzAwX2Z3X2R1bXApOworCQlkdW1wX3NpemUgKz0gKGhhLT5md19tZW1vcnlfc2l6ZSAtIDB4MTEwMDApICogc2l6ZW9mKHVpbnQxNl90KTsKKyAgICAgICAgfSBlbHNlIGlmIChJU19RTEEyNFhYKGhhKSB8fCBJU19RTEE1NFhYKGhhKSkgeworCQlkdW1wX3NpemUgPSBzaXplb2Yoc3RydWN0IHFsYTI0eHhfZndfZHVtcCk7CisJCWR1bXBfc2l6ZSArPSAoaGEtPmZ3X21lbW9yeV9zaXplIC0gMHgxMDAwMDApICogc2l6ZW9mKHVpbnQzMl90KTsKKwl9CisKKwloYS0+ZndfZHVtcCA9IHZtYWxsb2MoZHVtcF9zaXplKTsKKwlpZiAoaGEtPmZ3X2R1bXApCiAJCXFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwgIkFsbG9jYXRlZCAoJWQgS0IpIGZvciBmaXJtd2FyZSAiCi0JCSAgICAiZHVtcC4uLlxuIiwgaGEtPmZ3X2R1bXAyNF9sZW4gLyAxMDI0KTsKKwkJICAgICJkdW1wLi4uXG4iLCBkdW1wX3NpemUgLyAxMDI0KTsKIAllbHNlCiAJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwgIlVuYWJsZSB0byBhbGxvY2F0ZSAoJWQgS0IpIGZvciAiCi0JCSAgICAiZmlybXdhcmUgZHVtcCEhIVxuIiwgaGEtPmZ3X2R1bXAyNF9sZW4gLyAxMDI0KTsKKwkJICAgICJmaXJtd2FyZSBkdW1wISEhXG4iLCBkdW1wX3NpemUgLyAxMDI0KTsKIH0KIAogLyoqCkBAIC04MTgsMTMgKzgxMCwxMiBAQAogCWRtYV9hZGRyX3QgcmVxdWVzdF9kbWE7CiAJcmVxdWVzdF90ICpyZXF1ZXN0X3Jpbmc7CiAKKwlxbGEyeDAwX2FsbG9jX2Z3X2R1bXAoaGEpOworCiAJLyogVmFsaWQgb25seSBvbiByZWNlbnQgSVNQcy4gKi8KIAlpZiAoSVNfUUxBMjEwMChoYSkgfHwgSVNfUUxBMjIwMChoYSkpCiAJCXJldHVybjsKIAotCWlmIChJU19RTEEyNFhYKGhhKSB8fCBJU19RTEE1NFhYKGhhKSkKLQkJcWxhMngwMF9hbGxvY19md19kdW1wKGhhKTsKLQogCS8qIFJldHJpZXZlIElPQ0IgY291bnRzIGF2YWlsYWJsZSB0byB0aGUgZmlybXdhcmUuICovCiAJcnZhbCA9IHFsYTJ4MDBfZ2V0X3Jlc291cmNlX2NudHMoaGEsIE5VTEwsIE5VTEwsIE5VTEwsICZmd19pb2NiX2NudCk7CiAJaWYgKHJ2YWwpCkBAIC0xNTQ1LDYgKzE1MzYsMTIgQEAKIAl3aGlsZSAoY250LS0pCiAJCSpkcHRyMSsrID0gKmRwdHIyKys7CiAKKwkvKiBVc2UgYWx0ZXJuYXRlIFdXTj8gKi8KKwlpZiAobnYtPmhvc3RfcFsxXSAmIEJJVF83KSB7CisJCW1lbWNweShpY2ItPm5vZGVfbmFtZSwgbnYtPmFsdGVybmF0ZV9ub2RlX25hbWUsIFdXTl9TSVpFKTsKKwkJbWVtY3B5KGljYi0+cG9ydF9uYW1lLCBudi0+YWx0ZXJuYXRlX3BvcnRfbmFtZSwgV1dOX1NJWkUpOworCX0KKwogCS8qIFByZXBhcmUgbm9kZW5hbWUgKi8KIAlpZiAoKGljYi0+ZmlybXdhcmVfb3B0aW9uc1sxXSAmIEJJVF82KSA9PSAwKSB7CiAJCS8qCkBAIC0xNjgyLDE0ICsxNjc5LDYgQEAKIH0KIAogc3RhdGljIHZvaWQKLXFsYTJ4MDBfcnBvcnRfYWRkKHZvaWQgKmRhdGEpCi17Ci0JZmNfcG9ydF90ICpmY3BvcnQgPSBkYXRhOwotCi0JcWxhMngwMF9yZWdfcmVtb3RlX3BvcnQoZmNwb3J0LT5oYSwgZmNwb3J0KTsKLX0KLQotc3RhdGljIHZvaWQKIHFsYTJ4MDBfcnBvcnRfZGVsKHZvaWQgKmRhdGEpCiB7CiAJZmNfcG9ydF90ICpmY3BvcnQgPSBkYXRhOwpAQCAtMTcyNiwxMyArMTcxNSwxMCBAQAogCWZjcG9ydC0+aGEgPSBoYTsKIAlmY3BvcnQtPnBvcnRfdHlwZSA9IEZDVF9VTktOT1dOOwogCWZjcG9ydC0+bG9vcF9pZCA9IEZDX05PX0xPT1BfSUQ7Ci0JZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBJT0RFU0NfSU5WQUxJRF9JTkRFWDsKIAlhdG9taWNfc2V0KCZmY3BvcnQtPnN0YXRlLCBGQ1NfVU5DT05GSUdVUkVEKTsKIAlmY3BvcnQtPmZsYWdzID0gRkNGX1JMQ19TVVBQT1JUOwogCWZjcG9ydC0+c3VwcG9ydGVkX2NsYXNzZXMgPSBGQ19DT1NfVU5TUEVDSUZJRUQ7CiAJc3Bpbl9sb2NrX2luaXQoJmZjcG9ydC0+cnBvcnRfbG9jayk7Ci0JSU5JVF9XT1JLKCZmY3BvcnQtPnJwb3J0X2FkZF93b3JrLCBxbGEyeDAwX3Jwb3J0X2FkZCwgZmNwb3J0KTsKLQlJTklUX1dPUksoJmZjcG9ydC0+cnBvcnRfZGVsX3dvcmssIHFsYTJ4MDBfcnBvcnRfZGVsLCBmY3BvcnQpOwogCiAJcmV0dXJuIChmY3BvcnQpOwogfQpAQCAtMTc5Miw2ICsxNzc4LDkgQEAKIAkJc2V0X2JpdChSU0NOX1VQREFURSwgJmZsYWdzKTsKIAkJY2xlYXJfYml0KExPQ0FMX0xPT1BfVVBEQVRFLCAmZmxhZ3MpOwogCisJfSBlbHNlIGlmIChoYS0+Y3VycmVudF90b3BvbG9neSA9PSBJU1BfQ0ZHX04pIHsKKwkJY2xlYXJfYml0KFJTQ05fVVBEQVRFLCAmZmxhZ3MpOworCiAJfSBlbHNlIGlmICghaGEtPmZsYWdzLm9ubGluZSB8fAogCSAgICAodGVzdF9iaXQoQUJPUlRfSVNQX0FDVElWRSwgJmZsYWdzKSkpIHsKIApAQCAtMjA1NSwxMCArMjA0NCw2IEBACiAJICAgIFBPUlRfUkVUUllfVElNRSk7CiAJZmNwb3J0LT5mbGFncyAmPSB+RkNGX0xPR0lOX05FRURFRDsKIAotCWlmIChmY3BvcnQtPnBvcnRfdHlwZSA9PSBGQ1RfSU5JVElBVE9SIHx8Ci0JICAgIGZjcG9ydC0+cG9ydF90eXBlID09IEZDVF9CUk9BRENBU1QpCi0JCWZjcG9ydC0+ZGV2aWNlX3R5cGUgPSBUWVBFX1BST0NFU1NPUjsKLQogCWF0b21pY19zZXQoJmZjcG9ydC0+c3RhdGUsIEZDU19PTkxJTkUpOwogCiAJaWYgKGhhLT5mbGFncy5pbml0X2RvbmUpCkBAIC0yNTg3LDcgKzI1NzIsNiBAQAogcWxhMngwMF9kZXZpY2VfcmVzeW5jKHNjc2lfcWxhX2hvc3RfdCAqaGEpCiB7CiAJaW50CXJ2YWw7Ci0JaW50CXJ2YWwyOwogCXVpbnQzMl90IG1hc2s7CiAJZmNfcG9ydF90ICpmY3BvcnQ7CiAJdWludDMyX3QgcnNjbl9lbnRyeTsKQEAgLTI2NDMsMTcgKzI2MjcsNiBAQAogCiAJCXN3aXRjaCAoZm9ybWF0KSB7CiAJCWNhc2UgMDoKLQkJCWlmIChxbDJ4cHJvY2Vzc3JzY24gJiYKLQkJCSAgICAhSVNfUUxBMjEwMChoYSkgJiYgIUlTX1FMQTIyMDAoaGEpICYmCi0JCQkgICAgIUlTX1FMQTYzMTIoaGEpICYmICFJU19RTEE2MzIyKGhhKSAmJgotCQkJICAgICFJU19RTEEyNFhYKGhhKSAmJiAhSVNfUUxBNTRYWChoYSkgJiYKLQkJCSAgICBoYS0+ZmxhZ3MuaW5pdF9kb25lKSB7Ci0JCQkJLyogSGFuZGxlIHBvcnQgUlNDTiB2aWEgYXN5bmNyb25vdXMgSU9DQnMgKi8KLQkJCQlydmFsMiA9IHFsYTJ4MDBfaGFuZGxlX3BvcnRfcnNjbihoYSwgcnNjbl9lbnRyeSwKLQkJCQkgICAgTlVMTCwgMCk7Ci0JCQkJaWYgKHJ2YWwyID09IFFMQV9TVUNDRVNTKQotCQkJCQljb250aW51ZTsKLQkJCX0KIAkJCW1hc2sgPSAweGZmZmZmZjsKIAkJCWJyZWFrOwogCQljYXNlIDE6CkBAIC0yNjcxLDEwICsyNjQ0LDYgQEAKIAogCQlydmFsID0gUUxBX1NVQ0NFU1M7CiAKLQkJLyogQWJvcnQgYW55IG91dHN0YW5kaW5nIElPIGRlc2NyaXB0b3JzLiAqLwotCQlpZiAoIUlTX1FMQTIxMDAoaGEpICYmICFJU19RTEEyMjAwKGhhKSkKLQkJCXFsYTJ4MDBfY2FuY2VsX2lvX2Rlc2NyaXB0b3JzKGhhKTsKLQogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZjcG9ydCwgJmhhLT5mY3BvcnRzLCBsaXN0KSB7CiAJCQlpZiAoKGZjcG9ydC0+ZmxhZ3MgJiBGQ0ZfRkFCUklDX0RFVklDRSkgPT0gMCB8fAogCQkJICAgIChmY3BvcnQtPmRfaWQuYjI0ICYgbWFzaykgIT0gZF9pZC5iMjQgfHwKQEAgLTMzODMsOCArMzM1MiwxNCBAQAogCX0gZWxzZQogCQlzdHJjcHkoaGEtPm1vZGVsX251bWJlciwgIlFMQTI0NjIiKTsKIAorCS8qIFVzZSBhbHRlcm5hdGUgV1dOPyAqLworCWlmIChudi0+aG9zdF9wICYgX19jb25zdGFudF9jcHVfdG9fbGUzMihCSVRfMTUpKSB7CisJCW1lbWNweShpY2ItPm5vZGVfbmFtZSwgbnYtPmFsdGVybmF0ZV9ub2RlX25hbWUsIFdXTl9TSVpFKTsKKwkJbWVtY3B5KGljYi0+cG9ydF9uYW1lLCBudi0+YWx0ZXJuYXRlX3BvcnRfbmFtZSwgV1dOX1NJWkUpOworCX0KKwogCS8qIFByZXBhcmUgbm9kZW5hbWUgKi8KLQlpZiAoKGljYi0+ZmlybXdhcmVfb3B0aW9uc18xICYgQklUXzE0KSA9PSAwKSB7CisJaWYgKChpY2ItPmZpcm13YXJlX29wdGlvbnNfMSAmIF9fY29uc3RhbnRfY3B1X3RvX2xlMzIoQklUXzE0KSkgPT0gMCkgewogCQkvKgogCQkgKiBGaXJtd2FyZSB3aWxsIGFwcGx5IHRoZSBmb2xsb3dpbmcgbWFzayBpZiB0aGUgbm9kZW5hbWUgd2FzCiAJCSAqIG5vdCBwcm92aWRlZC4KQEAgLTM0MDAsOCArMzM3NSw4IEBACiAJaGEtPmZsYWdzLmVuYWJsZV90YXJnZXRfcmVzZXQgPSAxOwogCWhhLT5mbGFncy5lbmFibGVfbGVkX3NjaGVtZSA9IDA7CiAKLQloYS0+b3BlcmF0aW5nX21vZGUgPQotCSAgICAoaWNiLT5maXJtd2FyZV9vcHRpb25zXzIgJiAoQklUXzYgfCBCSVRfNSB8IEJJVF80KSkgPj4gNDsKKwloYS0+b3BlcmF0aW5nX21vZGUgPSAobGUzMl90b19jcHUoaWNiLT5maXJtd2FyZV9vcHRpb25zXzIpICYKKwkgICAgKEJJVF82IHwgQklUXzUgfCBCSVRfNCkpID4+IDQ7CiAKIAltZW1jcHkoaGEtPmZ3X3NlcmlhbGxpbmtfb3B0aW9uczI0LCBudi0+c2VyaWFsbGlua19vcHRpb25zLAogCSAgICBzaXplb2YoaGEtPmZ3X3NlcmlhbGxpbmtfb3B0aW9uczI0KSk7CkBAIC0zNDk4LDEzMyArMzQ3Myw2IEBACiAJcmV0dXJuIChydmFsKTsKIH0KIAotI2lmIGRlZmluZWQoQ09ORklHX1NDU0lfUUxBMlhYWF9FTUJFRERFRF9GSVJNV0FSRSkKLQotaW50Ci1xbGEyeDAwX2xvYWRfcmlzYyhzY3NpX3FsYV9ob3N0X3QgKmhhLCB1aW50MzJfdCAqc3Jpc2NfYWRkcikKLXsKLQlpbnQJcnZhbCwgbnVtLCBpOwotCXVpbnQzMl90IGNudDsKLQl1aW50MTZfdCAqcmlzY19jb2RlOwotCXVpbnQzMl90IHJpc2NfYWRkciwgcmlzY19zaXplOwotCXVpbnQxNl90ICpyZXFfcmluZzsKLQlzdHJ1Y3QgcWxhX2Z3X2luZm8gKmZ3X2l0ZXI7Ci0KLQlydmFsID0gUUxBX1NVQ0NFU1M7Ci0KLQkvKiBMb2FkIGZpcm13YXJlIHNlcXVlbmNlcyAqLwotCWZ3X2l0ZXIgPSBoYS0+YnJkX2luZm8tPmZ3X2luZm87Ci0JKnNyaXNjX2FkZHIgPSAqaGEtPmJyZF9pbmZvLT5md19pbmZvLT5md3N0YXJ0OwotCXdoaWxlIChmd19pdGVyLT5hZGRyZXNzaW5nICE9IEZXX0lORk9fQUREUl9OT01PUkUpIHsKLQkJcmlzY19jb2RlID0gZndfaXRlci0+Zndjb2RlOwotCQlyaXNjX3NpemUgPSAqZndfaXRlci0+ZndsZW47Ci0JCWlmIChmd19pdGVyLT5hZGRyZXNzaW5nID09IEZXX0lORk9fQUREUl9OT1JNQUwpCi0JCQlyaXNjX2FkZHIgPSAqZndfaXRlci0+ZndzdGFydDsKLQkJZWxzZQotCQkJcmlzY19hZGRyID0gKmZ3X2l0ZXItPmxmd3N0YXJ0OwotCi0JCW51bSA9IDA7Ci0JCXJ2YWwgPSAwOwotCQl3aGlsZSAocmlzY19zaXplID4gMCAmJiAhcnZhbCkgewotCQkJY250ID0gKHVpbnQxNl90KShoYS0+ZndfdHJhbnNmZXJfc2l6ZSA+PiAxKTsKLQkJCWlmIChjbnQgPiByaXNjX3NpemUpCi0JCQkJY250ID0gcmlzY19zaXplOwotCi0JCQlERUJVRzcocHJpbnRrKCJzY3NpKCVsZCk6IExvYWRpbmcgcmlzYyBzZWdtZW50QCAiCi0JCQkgICAgImFkZHIgJXAsIG51bWJlciBvZiBieXRlcyAweCV4LCBvZmZzZXQgMHglbHguXG4iLAotCQkJICAgIGhhLT5ob3N0X25vLCByaXNjX2NvZGUsIGNudCwgcmlzY19hZGRyKSk7Ci0KLQkJCXJlcV9yaW5nID0gKHVpbnQxNl90ICopaGEtPnJlcXVlc3RfcmluZzsKLQkJCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKLQkJCQlyZXFfcmluZ1tpXSA9IGNwdV90b19sZTE2KHJpc2NfY29kZVtpXSk7Ci0KLQkJCXJ2YWwgPSBxbGEyeDAwX2xvYWRfcmFtKGhhLCBoYS0+cmVxdWVzdF9kbWEsIHJpc2NfYWRkciwKLQkJCSAgICBjbnQpOwotCQkJaWYgKHJ2YWwpIHsKLQkJCQlERUJVRyhwcmludGsoInNjc2koJWxkKTogW0VSUk9SXSBGYWlsZWQgdG8gIgotCQkJCSAgICAibG9hZCBzZWdtZW50ICVkIG9mIGZpcm13YXJlXG4iLAotCQkJCSAgICBoYS0+aG9zdF9ubywgbnVtKSk7Ci0JCQkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkJCSAgICAiW0VSUk9SXSBGYWlsZWQgdG8gbG9hZCBzZWdtZW50ICVkIG9mICIKLQkJCQkgICAgImZpcm13YXJlXG4iLCBudW0pOwotCi0JCQkJcWxhMngwMF9kdW1wX3JlZ3MoaGEpOwotCQkJCWJyZWFrOwotCQkJfQotCi0JCQlyaXNjX2NvZGUgKz0gY250OwotCQkJcmlzY19hZGRyICs9IGNudDsKLQkJCXJpc2Nfc2l6ZSAtPSBjbnQ7Ci0JCQludW0rKzsKLQkJfQotCi0JCS8qIE5leHQgZmlybXdhcmUgc2VxdWVuY2UgKi8KLQkJZndfaXRlcisrOwotCX0KLQlyZXR1cm4gcnZhbDsKLX0KLQotaW50Ci1xbGEyNHh4X2xvYWRfcmlzYyhzY3NpX3FsYV9ob3N0X3QgKmhhLCB1aW50MzJfdCAqc3Jpc2NfYWRkcikKLXsKLQlpbnQJcnZhbCwgbnVtLCBpOwotCXVpbnQzMl90IGNudDsKLQl1aW50MzJfdCAqcmlzY19jb2RlOwotCXVpbnQzMl90IHJpc2NfYWRkciwgcmlzY19zaXplOwotCXVpbnQzMl90ICpyZXFfcmluZzsKLQlzdHJ1Y3QgcWxhX2Z3X2luZm8gKmZ3X2l0ZXI7Ci0KLQlydmFsID0gUUxBX1NVQ0NFU1M7Ci0KLQkvKiBMb2FkIGZpcm13YXJlIHNlcXVlbmNlcyAqLwotCWZ3X2l0ZXIgPSBoYS0+YnJkX2luZm8tPmZ3X2luZm87Ci0JKnNyaXNjX2FkZHIgPSAqKCh1aW50MzJfdCAqKWZ3X2l0ZXItPmxmd3N0YXJ0KTsKLQl3aGlsZSAoZndfaXRlci0+YWRkcmVzc2luZyAhPSBGV19JTkZPX0FERFJfTk9NT1JFKSB7Ci0JCXJpc2NfY29kZSA9ICh1aW50MzJfdCAqKWZ3X2l0ZXItPmZ3Y29kZTsKLQkJcmlzY19zaXplID0gKigodWludDMyX3QgKilmd19pdGVyLT5md2xlbik7Ci0JCXJpc2NfYWRkciA9ICooKHVpbnQzMl90ICopZndfaXRlci0+bGZ3c3RhcnQpOwotCi0JCW51bSA9IDA7Ci0JCXJ2YWwgPSAwOwotCQl3aGlsZSAocmlzY19zaXplID4gMCAmJiAhcnZhbCkgewotCQkJY250ID0gKHVpbnQzMl90KShoYS0+ZndfdHJhbnNmZXJfc2l6ZSA+PiAyKTsKLQkJCWlmIChjbnQgPiByaXNjX3NpemUpCi0JCQkJY250ID0gcmlzY19zaXplOwotCi0JCQlERUJVRzcocHJpbnRrKCJzY3NpKCVsZCk6IExvYWRpbmcgcmlzYyBzZWdtZW50QCAiCi0JCQkgICAgImFkZHIgJXAsIG51bWJlciBvZiBieXRlcyAweCV4LCBvZmZzZXQgMHglbHguXG4iLAotCQkJICAgIGhhLT5ob3N0X25vLCByaXNjX2NvZGUsIGNudCwgcmlzY19hZGRyKSk7Ci0KLQkJCXJlcV9yaW5nID0gKHVpbnQzMl90ICopaGEtPnJlcXVlc3RfcmluZzsKLQkJCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKLQkJCQlyZXFfcmluZ1tpXSA9IGNwdV90b19sZTMyKHJpc2NfY29kZVtpXSk7Ci0KLQkJCXJ2YWwgPSBxbGEyeDAwX2xvYWRfcmFtKGhhLCBoYS0+cmVxdWVzdF9kbWEsIHJpc2NfYWRkciwKLQkJCSAgICBjbnQpOwotCQkJaWYgKHJ2YWwpIHsKLQkJCQlERUJVRyhwcmludGsoInNjc2koJWxkKTogW0VSUk9SXSBGYWlsZWQgdG8gIgotCQkJCSAgICAibG9hZCBzZWdtZW50ICVkIG9mIGZpcm13YXJlXG4iLAotCQkJCSAgICBoYS0+aG9zdF9ubywgbnVtKSk7Ci0JCQkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkJCSAgICAiW0VSUk9SXSBGYWlsZWQgdG8gbG9hZCBzZWdtZW50ICVkIG9mICIKLQkJCQkgICAgImZpcm13YXJlXG4iLCBudW0pOwotCi0JCQkJcWxhMngwMF9kdW1wX3JlZ3MoaGEpOwotCQkJCWJyZWFrOwotCQkJfQotCi0JCQlyaXNjX2NvZGUgKz0gY250OwotCQkJcmlzY19hZGRyICs9IGNudDsKLQkJCXJpc2Nfc2l6ZSAtPSBjbnQ7Ci0JCQludW0rKzsKLQkJfQotCi0JCS8qIE5leHQgZmlybXdhcmUgc2VxdWVuY2UgKi8KLQkJZndfaXRlcisrOwotCX0KLQlyZXR1cm4gcnZhbDsKLX0KLQogaW50CiBxbGEyNHh4X2xvYWRfcmlzY19mbGFzaChzY3NpX3FsYV9ob3N0X3QgKmhhLCB1aW50MzJfdCAqc3Jpc2NfYWRkcikKIHsKQEAgLTM3MDcsNyArMzU1NSw3IEBACiAJcmV0dXJuIHJ2YWw7CiB9CiAKLSNlbHNlCS8qICFkZWZpbmVkKENPTkZJR19TQ1NJX1FMQTJYWFhfRU1CRURERURfRklSTVdBUkUpICovCisjZGVmaW5lIFFMQV9GV19VUkwgImZ0cDovL2Z0cC5xbG9naWMuY29tL291dGdvaW5nL2xpbnV4L2Zpcm13YXJlLyIKIAogaW50CiBxbGEyeDAwX2xvYWRfcmlzYyhzY3NpX3FsYV9ob3N0X3QgKmhhLCB1aW50MzJfdCAqc3Jpc2NfYWRkcikKQEAgLTM3MjIsNiArMzU3MCw4IEBACiAJYmxvYiA9IHFsYTJ4MDBfcmVxdWVzdF9maXJtd2FyZShoYSk7CiAJaWYgKCFibG9iKSB7CiAJCXFsYV9wcmludGsoS0VSTl9FUlIsIGhhLCAiRmlybXdhcmUgaW1hZ2UgdW5hdmFpbGFibGUuXG4iKTsKKwkJcWxhX3ByaW50ayhLRVJOX0VSUiwgaGEsICJGaXJtd2FyZSBpbWFnZXMgY2FuIGJlIHJldHJpZXZlZCAiCisJCSAgICAiZnJvbTogIiBRTEFfRldfVVJMICIuXG4iKTsKIAkJcmV0dXJuIFFMQV9GVU5DVElPTl9GQUlMRUQ7CiAJfQogCkBAIC0zODIzLDcgKzM2NzMsMTMgQEAKIAlibG9iID0gcWxhMngwMF9yZXF1ZXN0X2Zpcm13YXJlKGhhKTsKIAlpZiAoIWJsb2IpIHsKIAkJcWxhX3ByaW50ayhLRVJOX0VSUiwgaGEsICJGaXJtd2FyZSBpbWFnZSB1bmF2YWlsYWJsZS5cbiIpOwotCQlyZXR1cm4gUUxBX0ZVTkNUSU9OX0ZBSUxFRDsKKwkJcWxhX3ByaW50ayhLRVJOX0VSUiwgaGEsICJGaXJtd2FyZSBpbWFnZXMgY2FuIGJlIHJldHJpZXZlZCAiCisJCSAgICAiZnJvbTogIiBRTEFfRldfVVJMICIuXG4iKTsKKworCQkvKiBUcnkgdG8gbG9hZCBSSVNDIGNvZGUgZnJvbSBmbGFzaC4gKi8KKwkJcWxhX3ByaW50ayhLRVJOX0VSUiwgaGEsICJBdHRlbXB0aW5nIHRvIGxvYWQgKHBvdGVudGlhbGx5ICIKKwkJICAgICJvdXRkYXRlZCkgZmlybXdhcmUgZnJvbSBmbGFzaC5cbiIpOworCQlyZXR1cm4gcWxhMjR4eF9sb2FkX3Jpc2NfZmxhc2goaGEsIHNyaXNjX2FkZHIpOwogCX0KIAogCXJ2YWwgPSBRTEFfU1VDQ0VTUzsKQEAgLTM5MDksNCArMzc2NSwzIEBACiBmYWlsX2Z3X2ludGVncml0eToKIAlyZXR1cm4gUUxBX0ZVTkNUSU9OX0ZBSUxFRDsKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lvY2IuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pb2NiLmMKaW5kZXggOGYwZjRhMi4uOGM3NjljZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lvY2IuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaW9jYi5jCkBAIC00MDgsNyArNDA4LDYgQEAKIAkJaGEtPnJlcXVlc3RfcmluZ19wdHIrKzsKIAogCXNwLT5mbGFncyB8PSBTUkJfRE1BX1ZBTElEOwotCXNwLT5zdGF0ZSA9IFNSQl9BQ1RJVkVfU1RBVEU7CiAKIAkvKiBTZXQgY2hpcCBuZXcgcmluZyBpbmRleC4gKi8KIAlXUlRfUkVHX1dPUkQoSVNQX1JFUV9RX0lOKGhhLCByZWcpLCBoYS0+cmVxX3JpbmdfaW5kZXgpOwpAQCAtODM4LDcgKzgzNyw2IEBACiAJCWhhLT5yZXF1ZXN0X3JpbmdfcHRyKys7CiAKIAlzcC0+ZmxhZ3MgfD0gU1JCX0RNQV9WQUxJRDsKLQlzcC0+c3RhdGUgPSBTUkJfQUNUSVZFX1NUQVRFOwogCiAJLyogU2V0IGNoaXAgbmV3IHJpbmcgaW5kZXguICovCiAJV1JUX1JFR19EV09SRCgmcmVnLT5yZXFfcV9pbiwgaGEtPnJlcV9yaW5nX2luZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYwppbmRleCAyMDAzZGJiLi5iMjhhYzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jCkBAIC01MTUsNDcgKzUxNSw2IEBACiAKIAljYXNlIE1CQV9QT1JUX1VQREFURToJCS8qIFBvcnQgZGF0YWJhc2UgdXBkYXRlICovCiAJCS8qCi0JCSAqIElmIGEgc2luZ2xlIHJlbW90ZSBwb3J0IGp1c3QgbG9nZ2VkIGludG8gKG9yIGxvZ2dlZCBvdXQgb2YpCi0JCSAqIHVzLCBjcmVhdGUgYSBuZXcgZW50cnkgaW4gb3VyIHJzY24gZmNwb3J0cyBsaXN0IGFuZCBoYW5kbGUKLQkJICogdGhlIGV2ZW50IGxpa2UgYW4gUlNDTi4KLQkJICovCi0JCWlmIChxbDJ4cHJvY2Vzc3JzY24gJiYKLQkJICAgICFJU19RTEEyMTAwKGhhKSAmJiAhSVNfUUxBMjIwMChoYSkgJiYgIUlTX1FMQTYzMTIoaGEpICYmCi0JCSAgICAhSVNfUUxBNjMyMihoYSkgJiYgIUlTX1FMQTI0WFgoaGEpICYmICFJU19RTEE1NFhYKGhhKSAmJgotCQkgICAgaGEtPmZsYWdzLmluaXRfZG9uZSAmJiBtYlsxXSAhPSAweGZmZmYgJiYKLQkJICAgICgoaGEtPm9wZXJhdGluZ19tb2RlID09IFAyUCAmJiBtYlsxXSAhPSAwKSB8fAotCQkgICAgKGhhLT5vcGVyYXRpbmdfbW9kZSAhPSBQMlAgJiYgbWJbMV0gIT0KLQkJCVNOU19GSVJTVF9MT09QX0lEKSkgJiYgKG1iWzJdID09IDYgfHwgbWJbMl0gPT0gNykpIHsKLQkJCWludCBydmFsOwotCQkJZmNfcG9ydF90ICpyc2NuX2ZjcG9ydDsKLQotCQkJLyogQ3JlYXRlIG5ldyBmY3BvcnQgZm9yIGxvZ2luLiAqLwotCQkJcnNjbl9mY3BvcnQgPSBxbGEyeDAwX2FsbG9jX3JzY25fZmNwb3J0KGhhLCBHRlBfQVRPTUlDKTsKLQkJCWlmIChyc2NuX2ZjcG9ydCkgewotCQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IFBvcnQgVXBkYXRlIC0tICIKLQkJCQkgICAgImNyZWF0aW5nIFJTQ04gZmNwb3J0ICVwIGZvciAleC8leC8leC5cbiIsCi0JCQkJICAgIGhhLT5ob3N0X25vLCByc2NuX2ZjcG9ydCwgbWJbMV0sIG1iWzJdLAotCQkJCSAgICBtYlszXSkpOwotCi0JCQkJcnNjbl9mY3BvcnQtPmxvb3BfaWQgPSBtYlsxXTsKLQkJCQlyc2NuX2ZjcG9ydC0+ZF9pZC5iMjQgPSBJTlZBTElEX1BPUlRfSUQ7Ci0JCQkJYXRvbWljX3NldCgmcnNjbl9mY3BvcnQtPnN0YXRlLAotCQkJCSAgICBGQ1NfREVWSUNFX0xPU1QpOwotCQkJCWxpc3RfYWRkX3RhaWwoJnJzY25fZmNwb3J0LT5saXN0LAotCQkJCSAgICAmaGEtPnJzY25fZmNwb3J0cyk7Ci0KLQkJCQlydmFsID0gcWxhMngwMF9oYW5kbGVfcG9ydF9yc2NuKGhhLCAwLAotCQkJCSAgICByc2NuX2ZjcG9ydCwgMSk7Ci0JCQkJaWYgKHJ2YWwgPT0gUUxBX1NVQ0NFU1MpCi0JCQkJCWJyZWFrOwotCQkJfSBlbHNlIHsKLQkJCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBQb3J0IFVwZGF0ZSAtLSAiCi0JCQkJICAgICItLSB1bmFibGUgdG8gYWxsb2NhdGUgUlNDTiBmY3BvcnQgIgotCQkJCSAgICAibG9naW4uXG4iLCBoYS0+aG9zdF9ubykpOwotCQkJfQotCQl9Ci0KLQkJLyoKIAkJICogSWYgUE9SVCBVUERBVEUgaXMgZ2xvYmFsIChyZWNpZXZlZCBMSVBfT0NDVVJFRC9MSVBfUkVTRVQKIAkJICogZXZlbnQgZXRjLiBlYXJsaWVyIGluZGljYXRpbmcgbG9vcCBpcyBkb3duKSB0aGVuIHByb2Nlc3MKIAkJICogaXQuICBPdGhlcndpc2UgaWdub3JlIGl0IGFuZCBXYWl0IGZvciBSU0NOIHRvIGNvbWUgaW4uCkBAIC03NTMsMjUgKzcxMiw2IEBACiAJCWNhc2UgTVNfSU9DQl9UWVBFOgogCQkJcWxhMngwMF9tc19lbnRyeShoYSwgKG1zX2lvY2JfZW50cnlfdCAqKXBrdCk7CiAJCQlicmVhazsKLQkJY2FzZSBNQlhfSU9DQl9UWVBFOgotCQkJaWYgKCFJU19RTEEyMTAwKGhhKSAmJiAhSVNfUUxBMjIwMChoYSkgJiYKLQkJCSAgICAhSVNfUUxBNjMxMihoYSkgJiYgIUlTX1FMQTYzMjIoaGEpKSB7Ci0JCQkJaWYgKHBrdC0+c3lzX2RlZmluZSA9PSBTT1VSQ0VfQVNZTkNfSU9DQikgewotCQkJCQlxbGEyeDAwX3Byb2Nlc3NfaW9kZXNjKGhhLAotCQkJCQkgICAgKHN0cnVjdCBtYnhfZW50cnkgKilwa3QpOwotCQkJCX0gZWxzZSB7Ci0JCQkJCS8qIE1CWCBJT0NCIFR5cGUgTm90IFN1cHBvcnRlZC4gKi8KLQkJCQkJREVCVUc0KHByaW50ayhLRVJOX1dBUk5JTkcKLQkJCQkJICAgICJzY3NpKCVsZCk6IFJlY2VpdmVkIHVua25vd24gTUJYICIKLQkJCQkJICAgICJJT0NCIHJlc3BvbnNlIHBrdCB0eXBlPSV4ICIKLQkJCQkJICAgICJzb3VyY2U9JXggZW50cnkgc3RhdHVzPSV4LlxuIiwKLQkJCQkJICAgIGhhLT5ob3N0X25vLCBwa3QtPmVudHJ5X3R5cGUsCi0JCQkJCSAgICBwa3QtPnN5c19kZWZpbmUsCi0JCQkJCSAgICBwa3QtPmVudHJ5X3N0YXR1cykpOwotCQkJCX0KLQkJCQlicmVhazsKLQkJCX0KLQkJCS8qIEZhbGx0aHJvdWdoLiAqLwogCQlkZWZhdWx0OgogCQkJLyogVHlwZSBOb3QgU3VwcG9ydGVkLiAqLwogCQkJREVCVUc0KHByaW50ayhLRVJOX1dBUk5JTkcKQEAgLTgwNSw3ICs3NDUsNyBAQAogCXVpbnQxNl90CXNjc2lfc3RhdHVzOwogCXVpbnQ4X3QJCWxzY3NpX3N0YXR1czsKIAlpbnQzMl90CQlyZXNpZDsKLQl1aW50MzJfdAlzZW5zZV9sZW4sIHJzcF9pbmZvX2xlbiwgcmVzaWRfbGVuOworCXVpbnQzMl90CXNlbnNlX2xlbiwgcnNwX2luZm9fbGVuLCByZXNpZF9sZW4sIGZ3X3Jlc2lkX2xlbjsKIAl1aW50OF90CQkqcnNwX2luZm8sICpzZW5zZV9kYXRhOwogCiAJc3RzID0gKHN0c19lbnRyeV90ICopIHBrdDsKQEAgLTg0NCw4ICs3ODQsNyBAQAogCWNwID0gc3AtPmNtZDsKIAlpZiAoY3AgPT0gTlVMTCkgewogCQlERUJVRzIocHJpbnRrKCJzY3NpKCVsZCk6IENvbW1hbmQgYWxyZWFkeSByZXR1cm5lZCBiYWNrIHRvIE9TICIKLQkJICAgICJwa3QtPmhhbmRsZT0lZCBzcD0lcCBzcC0+c3RhdGU6JWRcbiIsCi0JCSAgICBoYS0+aG9zdF9ubywgc3RzLT5oYW5kbGUsIHNwLCBzcC0+c3RhdGUpKTsKKwkJICAgICJwa3QtPmhhbmRsZT0lZCBzcD0lcC5cbiIsIGhhLT5ob3N0X25vLCBzdHMtPmhhbmRsZSwgc3ApKTsKIAkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAogCQkgICAgIkNvbW1hbmQgaXMgTlVMTDogYWxyZWFkeSByZXR1cm5lZCB0byBPUyAoc3A9JXApXG4iLCBzcCk7CiAKQEAgLTg1OSwxMSArNzk4LDEyIEBACiAKIAlmY3BvcnQgPSBzcC0+ZmNwb3J0OwogCi0Jc2Vuc2VfbGVuID0gcnNwX2luZm9fbGVuID0gcmVzaWRfbGVuID0gMDsKKwlzZW5zZV9sZW4gPSByc3BfaW5mb19sZW4gPSByZXNpZF9sZW4gPSBmd19yZXNpZF9sZW4gPSAwOwogCWlmIChJU19RTEEyNFhYKGhhKSB8fCBJU19RTEE1NFhYKGhhKSkgewogCQlzZW5zZV9sZW4gPSBsZTMyX3RvX2NwdShzdHMyNC0+c2Vuc2VfbGVuKTsKIAkJcnNwX2luZm9fbGVuID0gbGUzMl90b19jcHUoc3RzMjQtPnJzcF9kYXRhX2xlbik7CiAJCXJlc2lkX2xlbiA9IGxlMzJfdG9fY3B1KHN0czI0LT5yc3BfcmVzaWR1YWxfY291bnQpOworCQlmd19yZXNpZF9sZW4gPSBsZTMyX3RvX2NwdShzdHMyNC0+cmVzaWR1YWxfbGVuKTsKIAkJcnNwX2luZm8gPSBzdHMyNC0+ZGF0YTsKIAkJc2Vuc2VfZGF0YSA9IHN0czI0LT5kYXRhOwogCQlob3N0X3RvX2ZjcF9zd2FwKHN0czI0LT5kYXRhLCBzaXplb2Yoc3RzMjQtPmRhdGEpKTsKQEAgLTk2MywxNCArOTAzLDIxIEBACiAKIAljYXNlIENTX0RBVEFfVU5ERVJSVU46CiAJCXJlc2lkID0gcmVzaWRfbGVuOworCQkvKiBVc2UgRi9XIGNhbGN1bGF0ZWQgcmVzaWR1YWwgbGVuZ3RoLiAqLworCQlpZiAoSVNfUUxBMjRYWChoYSkgfHwgSVNfUUxBNTRYWChoYSkpCisJCQlyZXNpZCA9IGZ3X3Jlc2lkX2xlbjsKKwogCQlpZiAoc2NzaV9zdGF0dXMgJiBTU19SRVNJRFVBTF9VTkRFUikgewogCQkJY3AtPnJlc2lkID0gcmVzaWQ7CiAJCQlDTURfUkVTSURfTEVOKGNwKSA9IHJlc2lkOwogCQl9IGVsc2UgewogCQkJREVCVUcyKHByaW50ayhLRVJOX0lORk8KIAkJCSAgICAic2NzaSglbGQ6JWQ6JWQpIFVOREVSUlVOIHN0YXR1cyBkZXRlY3RlZCAiCi0JCQkgICAgIjB4JXgtMHgleC5cbiIsIGhhLT5ob3N0X25vLCBjcC0+ZGV2aWNlLT5pZCwKLQkJCSAgICBjcC0+ZGV2aWNlLT5sdW4sIGNvbXBfc3RhdHVzLCBzY3NpX3N0YXR1cykpOworCQkJICAgICIweCV4LTB4JXguIHJlc2lkPTB4JXggZndfcmVzaWQ9MHgleCBjZGI9MHgleCAiCisJCQkgICAgIm9zX3VuZGVyZmxvdz0weCV4XG4iLCBoYS0+aG9zdF9ubywKKwkJCSAgICBjcC0+ZGV2aWNlLT5pZCwgY3AtPmRldmljZS0+bHVuLCBjb21wX3N0YXR1cywKKwkJCSAgICBzY3NpX3N0YXR1cywgcmVzaWRfbGVuLCByZXNpZCwgY3AtPmNtbmRbMF0sCisJCQkgICAgY3AtPnVuZGVyZmxvdykpOwogCiAJCX0KIApAQCAtMTE4MSw3ICsxMTI4LDcgQEAKIAkJY3AgPSBzcC0+Y21kOwogCQlpZiAoY3AgPT0gTlVMTCkgewogCQkJREVCVUcyKHByaW50aygiJXMoKTogQ21kIGFscmVhZHkgcmV0dXJuZWQgYmFjayB0byBPUyAiCi0JCQkgICAgInNwPSVwIHNwLT5zdGF0ZTolZFxuIiwgX19mdW5jX18sIHNwLCBzcC0+c3RhdGUpKTsKKwkJCSAgICAic3A9JXAuXG4iLCBfX2Z1bmNfXywgc3ApKTsKIAkJCXFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwKIAkJCSAgICAiY21kIGlzIE5VTEw6IGFscmVhZHkgcmV0dXJuZWQgdG8gT1MgKHNwPSVwKVxuIiwKIAkJCSAgICBzcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCmluZGV4IDU4NGZlNWQuLmNjYWFkMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCkBAIC01NCwxMyArNTQsNiBAQAogTU9EVUxFX1BBUk1fREVTQyhxbDJ4bG9naW5yZXRyeWNvdW50LAogCQkiU3BlY2lmeSBhbiBhbHRlcm5hdGUgdmFsdWUgZm9yIHRoZSBOVlJBTSBsb2dpbiByZXRyeSBjb3VudC4iKTsKIAotI2lmIGRlZmluZWQoQ09ORklHX1NDU0lfUUxBMlhYWF9FTUJFRERFRF9GSVJNV0FSRSkKLWludCBxbDJ4Zndsb2FkZmxhc2g7Ci1tb2R1bGVfcGFyYW0ocWwyeGZ3bG9hZGZsYXNoLCBpbnQsIFNfSVJVR098U19JUlVTUik7Ci1NT0RVTEVfUEFSTV9ERVNDKHFsMnhmd2xvYWRmbGFzaCwKLQkJIkxvYWQgSVNQMjR4eCBmaXJtd2FyZSBpbWFnZSBmcm9tIEZMQVNIIChvbmJvYXJkIG1lbW9yeSkuIik7Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgcWxhMngwMF9mcmVlX2RldmljZShzY3NpX3FsYV9ob3N0X3QgKik7CiAKIHN0YXRpYyB2b2lkIHFsYTJ4MDBfY29uZmlnX2RtYV9hZGRyZXNzaW5nKHNjc2lfcWxhX2hvc3RfdCAqaGEpOwpAQCAtNzEsMTIgKzY0LDYgQEAKIAkJIkVuYWJsZXMgRkRNSSByZWdpc3RyYXRvbnMgIgogCQkiRGVmYXVsdCBpcyAwIC0gbm8gRkRNSS4gMSAtIHBlcmZvbSBGRE1JLiIpOwogCi1pbnQgcWwyeHByb2Nlc3Nyc2NuOwotbW9kdWxlX3BhcmFtKHFsMnhwcm9jZXNzcnNjbiwgaW50LCBTX0lSVUdPfFNfSVJVU1IpOwotTU9EVUxFX1BBUk1fREVTQyhxbDJ4cHJvY2Vzc3JzY24sCi0JCSJPcHRpb24gdG8gZW5hYmxlIHBvcnQgUlNDTiBoYW5kbGluZyB2aWEgYSBzZXJpZXMgb2YgbGVzcyIKLQkJImZhYnJpYyBpbnRydXNpdmUgQURJU0NzIGFuZCBQTE9HSXMuIik7Ci0KIC8qCiAgKiBTQ1NJIGhvc3QgdGVtcGxhdGUgZW50cnkgcG9pbnRzCiAgKi8KQEAgLTk5LDcgKzg2LDcgQEAKIAogc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgcWxhMngwMF9kcml2ZXJfdGVtcGxhdGUgPSB7CiAJLm1vZHVsZQkJCT0gVEhJU19NT0RVTEUsCi0JLm5hbWUJCQk9ICJxbGEyeHh4IiwKKwkubmFtZQkJCT0gUUxBMlhYWF9EUklWRVJfTkFNRSwKIAkucXVldWVjb21tYW5kCQk9IHFsYTJ4MDBfcXVldWVjb21tYW5kLAogCiAJLmVoX2Fib3J0X2hhbmRsZXIJPSBxbGEyeHh4X2VoX2Fib3J0LApAQCAtMTI4LDcgKzExNSw3IEBACiAKIHN0YXRpYyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIHFsYTI0eHhfZHJpdmVyX3RlbXBsYXRlID0gewogCS5tb2R1bGUJCQk9IFRISVNfTU9EVUxFLAotCS5uYW1lCQkJPSAicWxhMnh4eCIsCisJLm5hbWUJCQk9IFFMQTJYWFhfRFJJVkVSX05BTUUsCiAJLnF1ZXVlY29tbWFuZAkJPSBxbGEyNHh4X3F1ZXVlY29tbWFuZCwKIAogCS5laF9hYm9ydF9oYW5kbGVyCT0gcWxhMnh4eF9laF9hYm9ydCwKQEAgLTM0MCw3ICszMjcsNiBAQAogCWlmICghc3ApCiAJCXJldHVybiBzcDsKIAotCWF0b21pY19zZXQoJnNwLT5yZWZfY291bnQsIDEpOwogCXNwLT5oYSA9IGhhOwogCXNwLT5mY3BvcnQgPSBmY3BvcnQ7CiAJc3AtPmNtZCA9IGNtZDsKQEAgLTU3Nyw2ICs1NjMsMTAgQEAKIAl3aGlsZSAoKCFhdG9taWNfcmVhZCgmaGEtPmxvb3BfZG93bl90aW1lcikgJiYKIAkgICAgYXRvbWljX3JlYWQoJmhhLT5sb29wX3N0YXRlKSA9PSBMT09QX0RPV04pIHx8CiAJICAgIGF0b21pY19yZWFkKCZoYS0+bG9vcF9zdGF0ZSkgIT0gTE9PUF9SRUFEWSkgeworCQlpZiAoYXRvbWljX3JlYWQoJmhhLT5sb29wX3N0YXRlKSA9PSBMT09QX0RFQUQpIHsKKwkJCXJldHVybl9zdGF0dXMgPSBRTEFfRlVOQ1RJT05fRkFJTEVEOworCQkJYnJlYWs7CisJCX0KIAkJbXNsZWVwKDEwMDApOwogCQlpZiAodGltZV9hZnRlcl9lcShqaWZmaWVzLCBsb29wX3RpbWVvdXQpKSB7CiAJCQlyZXR1cm5fc3RhdHVzID0gUUxBX0ZVTkNUSU9OX0ZBSUxFRDsKQEAgLTYzMiw5ICs2MjIsOCBAQAogCQlpZiAoc3AtPmNtZCAhPSBjbWQpCiAJCQljb250aW51ZTsKIAotCQlERUJVRzIocHJpbnRrKCIlcyglbGQpOiBhYm9ydGluZyBzcCAlcCBmcm9tIFJJU0MuIHBpZD0lbGQgIgotCQkgICAgInNwLT5zdGF0ZT0leFxuIiwgX19mdW5jX18sIGhhLT5ob3N0X25vLCBzcCwgc2VyaWFsLAotCQkgICAgc3AtPnN0YXRlKSk7CisJCURFQlVHMihwcmludGsoIiVzKCVsZCk6IGFib3J0aW5nIHNwICVwIGZyb20gUklTQy4gcGlkPSVsZC5cbiIsCisJCSAgICBfX2Z1bmNfXywgaGEtPmhvc3Rfbm8sIHNwLCBzZXJpYWwpKTsKIAkJREVCVUczKHFsYTJ4MDBfcHJpbnRfc2NzaV9jbWQoY21kKTspCiAKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKQEAgLTExNTcsMTggKzExNDYsMjIgQEAKIAljYXNlIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIxMDA6CiAJCWhhLT5kZXZpY2VfdHlwZSB8PSBEVF9JU1AyMTAwOwogCQloYS0+ZGV2aWNlX3R5cGUgJj0gfkRUX0VYVEVOREVEX0lEUzsKKwkJaGEtPmZ3X3NyaXNjX2FkZHJlc3MgPSBSSVNDX1NUQVJUX0FERFJFU1NfMjEwMDsKIAkJYnJlYWs7CiAJY2FzZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMjAwOgogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfSVNQMjIwMDsKIAkJaGEtPmRldmljZV90eXBlICY9IH5EVF9FWFRFTkRFRF9JRFM7CisJCWhhLT5md19zcmlzY19hZGRyZXNzID0gUklTQ19TVEFSVF9BRERSRVNTXzIxMDA7CiAJCWJyZWFrOwogCWNhc2UgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjMwMDoKIAkJaGEtPmRldmljZV90eXBlIHw9IERUX0lTUDIzMDA7CiAJCWhhLT5kZXZpY2VfdHlwZSB8PSBEVF9aSU9fU1VQUE9SVEVEOworCQloYS0+Zndfc3Jpc2NfYWRkcmVzcyA9IFJJU0NfU1RBUlRfQUREUkVTU18yMzAwOwogCQlicmVhazsKIAljYXNlIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIzMTI6CiAJCWhhLT5kZXZpY2VfdHlwZSB8PSBEVF9JU1AyMzEyOwogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfWklPX1NVUFBPUlRFRDsKKwkJaGEtPmZ3X3NyaXNjX2FkZHJlc3MgPSBSSVNDX1NUQVJUX0FERFJFU1NfMjMwMDsKIAkJYnJlYWs7CiAJY2FzZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMzIyOgogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfSVNQMjMyMjsKQEAgLTExNzYsMjYgKzExNjksMzMgQEAKIAkJaWYgKGhhLT5wZGV2LT5zdWJzeXN0ZW1fdmVuZG9yID09IDB4MTAyOCAmJgogCQkgICAgaGEtPnBkZXYtPnN1YnN5c3RlbV9kZXZpY2UgPT0gMHgwMTcwKQogCQkJaGEtPmRldmljZV90eXBlIHw9IERUX09FTV8wMDE7CisJCWhhLT5md19zcmlzY19hZGRyZXNzID0gUklTQ19TVEFSVF9BRERSRVNTXzIzMDA7CiAJCWJyZWFrOwogCWNhc2UgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNjMxMjoKIAkJaGEtPmRldmljZV90eXBlIHw9IERUX0lTUDYzMTI7CisJCWhhLT5md19zcmlzY19hZGRyZXNzID0gUklTQ19TVEFSVF9BRERSRVNTXzIzMDA7CiAJCWJyZWFrOwogCWNhc2UgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNjMyMjoKIAkJaGEtPmRldmljZV90eXBlIHw9IERUX0lTUDYzMjI7CisJCWhhLT5md19zcmlzY19hZGRyZXNzID0gUklTQ19TVEFSVF9BRERSRVNTXzIzMDA7CiAJCWJyZWFrOwogCWNhc2UgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjQyMjoKIAkJaGEtPmRldmljZV90eXBlIHw9IERUX0lTUDI0MjI7CiAJCWhhLT5kZXZpY2VfdHlwZSB8PSBEVF9aSU9fU1VQUE9SVEVEOworCQloYS0+Zndfc3Jpc2NfYWRkcmVzcyA9IFJJU0NfU1RBUlRfQUREUkVTU18yNDAwOwogCQlicmVhazsKIAljYXNlIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDI0MzI6CiAJCWhhLT5kZXZpY2VfdHlwZSB8PSBEVF9JU1AyNDMyOwogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfWklPX1NVUFBPUlRFRDsKKwkJaGEtPmZ3X3NyaXNjX2FkZHJlc3MgPSBSSVNDX1NUQVJUX0FERFJFU1NfMjQwMDsKIAkJYnJlYWs7CiAJY2FzZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1A1NDIyOgogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfSVNQNTQyMjsKKwkJaGEtPmZ3X3NyaXNjX2FkZHJlc3MgPSBSSVNDX1NUQVJUX0FERFJFU1NfMjQwMDsKIAkJYnJlYWs7CiAJY2FzZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1A1NDMyOgogCQloYS0+ZGV2aWNlX3R5cGUgfD0gRFRfSVNQNTQzMjsKKwkJaGEtPmZ3X3NyaXNjX2FkZHJlc3MgPSBSSVNDX1NUQVJUX0FERFJFU1NfMjQwMDsKIAkJYnJlYWs7CiAJfQogfQpAQCAtMTI0Miw3ICsxMjQyLDcgQEAKIAkJZ290byBpb3NwYWNlX2Vycm9yX2V4aXQ7CiAJfQogCi0JaWYgKHBjaV9yZXF1ZXN0X3JlZ2lvbnMoaGEtPnBkZXYsIGhhLT5icmRfaW5mby0+ZHJ2X25hbWUpKSB7CisJaWYgKHBjaV9yZXF1ZXN0X3JlZ2lvbnMoaGEtPnBkZXYsIFFMQTJYWFhfRFJJVkVSX05BTUUpKSB7CiAJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKIAkJICAgICJGYWlsZWQgdG8gcmVzZXJ2ZSBQSU8vTU1JTyByZWdpb25zICglcylcbiIsCiAJCSAgICBwY2lfbmFtZShoYS0+cGRldikpOwpAQCAtMTMyNCw3ICsxMzI0LDcgQEAKIC8qCiAgKiBQQ0kgZHJpdmVyIGludGVyZmFjZQogICovCi1pbnQgcWxhMngwMF9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBxbGFfYm9hcmRfaW5mbyAqYnJkX2luZm8pCitzdGF0aWMgaW50IHFsYTJ4MDBfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogewogCWludAlyZXQgPSAtRU5PREVWOwogCWRldmljZV9yZWdfdCBfX2lvbWVtICpyZWc7CkBAIC0xMzU4LDggKzEzNTgsNyBAQAogCWhhLT5wZGV2ID0gcGRldjsKIAloYS0+aG9zdCA9IGhvc3Q7CiAJaGEtPmhvc3Rfbm8gPSBob3N0LT5ob3N0X25vOwotCWhhLT5icmRfaW5mbyA9IGJyZF9pbmZvOwotCXNwcmludGYoaGEtPmhvc3Rfc3RyLCAiJXNfJWxkIiwgaGEtPmJyZF9pbmZvLT5kcnZfbmFtZSwgaGEtPmhvc3Rfbm8pOworCXNwcmludGYoaGEtPmhvc3Rfc3RyLCAiJXNfJWxkIiwgUUxBMlhYWF9EUklWRVJfTkFNRSwgaGEtPmhvc3Rfbm8pOwogCiAJLyogU2V0IElTUC10eXBlIGluZm9ybWF0aW9uLiAqLwogCXFsYTJ4MDBfc2V0X2lzcF9mbGFncyhoYSk7CkBAIC0xMzc2LDcgKzEzNzUsNiBAQAogCXNwaW5fbG9ja19pbml0KCZoYS0+aGFyZHdhcmVfbG9jayk7CiAKIAloYS0+cHJldl90b3BvbG9neSA9IDA7Ci0JaGEtPnBvcnRzID0gTUFYX0JVU0VTOwogCWhhLT5pbml0X2NiX3NpemUgPSBzaXplb2YoaW5pdF9jYl90KTsKIAloYS0+bWdtdF9zdnJfbG9vcF9pZCA9IE1BTkFHRU1FTlRfU0VSVkVSOwogCWhhLT5saW5rX2RhdGFfcmF0ZSA9IExEUl9VTktOT1dOOwpAQCAtMTQ1NywxMCArMTQ1NSw2IEBACiAJCWhhLT5pc3Bfb3BzLm52cmFtX2NvbmZpZyA9IHFsYTI0eHhfbnZyYW1fY29uZmlnOwogCQloYS0+aXNwX29wcy51cGRhdGVfZndfb3B0aW9ucyA9IHFsYTI0eHhfdXBkYXRlX2Z3X29wdGlvbnM7CiAJCWhhLT5pc3Bfb3BzLmxvYWRfcmlzYyA9IHFsYTI0eHhfbG9hZF9yaXNjOwotI2lmIGRlZmluZWQoQ09ORklHX1NDU0lfUUxBMlhYWF9FTUJFRERFRF9GSVJNV0FSRSkKLQkJaWYgKHFsMnhmd2xvYWRmbGFzaCkKLQkJCWhhLT5pc3Bfb3BzLmxvYWRfcmlzYyA9IHFsYTI0eHhfbG9hZF9yaXNjX2ZsYXNoOwotI2VuZGlmCiAJCWhhLT5pc3Bfb3BzLnBjaV9pbmZvX3N0ciA9IHFsYTI0eHhfcGNpX2luZm9fc3RyOwogCQloYS0+aXNwX29wcy5md192ZXJzaW9uX3N0ciA9IHFsYTI0eHhfZndfdmVyc2lvbl9zdHI7CiAJCWhhLT5pc3Bfb3BzLmludHJfaGFuZGxlciA9IHFsYTI0eHhfaW50cl9oYW5kbGVyOwpAQCAtMTQ5NCw3ICsxNDg4LDYgQEAKIAogCUlOSVRfTElTVF9IRUFEKCZoYS0+bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmhhLT5mY3BvcnRzKTsKLQlJTklUX0xJU1RfSEVBRCgmaGEtPnJzY25fZmNwb3J0cyk7CiAKIAkvKgogCSAqIFRoZXNlIGxvY2tzIGFyZSB1c2VkIHRvIHByZXZlbnQgbW9yZSB0aGFuIG9uZSBDUFUKQEAgLTE1NDMsMTIgKzE1MzYsMTIgQEAKIAlob3N0LT5jbWRfcGVyX2x1biA9IDM7CiAJaG9zdC0+dW5pcXVlX2lkID0gaGEtPmluc3RhbmNlOwogCWhvc3QtPm1heF9jbWRfbGVuID0gTUFYX0NNRFNaOwotCWhvc3QtPm1heF9jaGFubmVsID0gaGEtPnBvcnRzIC0gMTsKKwlob3N0LT5tYXhfY2hhbm5lbCA9IE1BWF9CVVNFUyAtIDE7CiAJaG9zdC0+bWF4X2x1biA9IE1BWF9MVU5TOwogCWhvc3QtPnRyYW5zcG9ydHQgPSBxbGEyeHh4X3RyYW5zcG9ydF90ZW1wbGF0ZTsKIAogCXJldCA9IHJlcXVlc3RfaXJxKHBkZXYtPmlycSwgaGEtPmlzcF9vcHMuaW50cl9oYW5kbGVyLAotCSAgICBTQV9JTlRFUlJVUFR8U0FfU0hJUlEsIGhhLT5icmRfaW5mby0+ZHJ2X25hbWUsIGhhKTsKKwkgICAgU0FfSU5URVJSVVBUfFNBX1NISVJRLCBRTEEyWFhYX0RSSVZFUl9OQU1FLCBoYSk7CiAJaWYgKHJldCkgewogCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCiAJCSAgICAiRmFpbGVkIHRvIHJlc2VydmUgaW50ZXJydXB0ICVkIGFscmVhZHkgaW4gdXNlLlxuIiwKQEAgLTE2NDYsOSArMTYzOSw4IEBACiBwcm9iZV9vdXQ6CiAJcmV0dXJuIHJldDsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKHFsYTJ4MDBfcHJvYmVfb25lKTsKIAotdm9pZCBxbGEyeDAwX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCitzdGF0aWMgdm9pZCBxbGEyeDAwX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiB7CiAJc2NzaV9xbGFfaG9zdF90ICpoYTsKIApAQCAtMTY2NiwxNSArMTY1OCwxMCBAQAogCiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwogfQotRVhQT1JUX1NZTUJPTF9HUEwocWxhMngwMF9yZW1vdmVfb25lKTsKIAogc3RhdGljIHZvaWQKIHFsYTJ4MDBfZnJlZV9kZXZpY2Uoc2NzaV9xbGFfaG9zdF90ICpoYSkKIHsKLQkvKiBBYm9ydCBhbnkgb3V0c3RhbmRpbmcgSU8gZGVzY3JpcHRvcnMuICovCi0JaWYgKCFJU19RTEEyMTAwKGhhKSAmJiAhSVNfUUxBMjIwMChoYSkpCi0JCXFsYTJ4MDBfY2FuY2VsX2lvX2Rlc2NyaXB0b3JzKGhhKTsKLQogCS8qIERpc2FibGUgdGltZXIgKi8KIAlpZiAoaGEtPnRpbWVyX2FjdGl2ZSkKIAkJcWxhMngwMF9zdG9wX3RpbWVyKGhhKTsKQEAgLTE4ODQsMTkgKzE4NzEsOCBAQAogCQkJY29udGludWU7CiAJCX0KIAotCQloYS0+cmxjX3JzcCA9IGRtYV9hbGxvY19jb2hlcmVudCgmaGEtPnBkZXYtPmRldiwKLQkJICAgIHNpemVvZihycHRfbHVuX2NtZF9yc3BfdCksICZoYS0+cmxjX3JzcF9kbWEsIEdGUF9LRVJORUwpOwotCQlpZiAoaGEtPnJsY19yc3AgPT0gTlVMTCkgewotCQkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkJCSJNZW1vcnkgQWxsb2NhdGlvbiBmYWlsZWQgLSBybGMiKTsKLQotCQkJcWxhMngwMF9tZW1fZnJlZShoYSk7Ci0JCQltc2xlZXAoMTAwKTsKLQotCQkJY29udGludWU7Ci0JCX0KLQotCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICJxbGEyeHh4XyVsZCIsIGhhLT5ob3N0X25vKTsKKwkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXNfJWxkIiwgUUxBMlhYWF9EUklWRVJfTkFNRSwKKwkJICAgIGhhLT5ob3N0X25vKTsKIAkJaGEtPnNfZG1hX3Bvb2wgPSBkbWFfcG9vbF9jcmVhdGUobmFtZSwgJmhhLT5wZGV2LT5kZXYsCiAJCSAgICBETUFfUE9PTF9TSVpFLCA4LCAwKTsKIAkJaWYgKGhhLT5zX2RtYV9wb29sID09IE5VTEwpIHsKQEAgLTE5MjMsMjEgKzE4OTksNiBAQAogCQl9CiAJCW1lbXNldChoYS0+aW5pdF9jYiwgMCwgaGEtPmluaXRfY2Jfc2l6ZSk7CiAKLQkJLyogR2V0IGNvbnNpc3RlbnQgbWVtb3J5IGFsbG9jYXRlZCBmb3IgR2V0IFBvcnQgRGF0YWJhc2UgY21kICovCi0JCWhhLT5pb2Rlc2NfcGQgPSBkbWFfcG9vbF9hbGxvYyhoYS0+c19kbWFfcG9vbCwgR0ZQX0tFUk5FTCwKLQkJICAgICZoYS0+aW9kZXNjX3BkX2RtYSk7Ci0JCWlmIChoYS0+aW9kZXNjX3BkID09IE5VTEwpIHsKLQkJCS8qIGVycm9yICovCi0JCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCi0JCQkgICAgIk1lbW9yeSBBbGxvY2F0aW9uIGZhaWxlZCAtIGlvZGVzY19wZFxuIik7Ci0KLQkJCXFsYTJ4MDBfbWVtX2ZyZWUoaGEpOwotCQkJbXNsZWVwKDEwMCk7Ci0KLQkJCWNvbnRpbnVlOwotCQl9Ci0JCW1lbXNldChoYS0+aW9kZXNjX3BkLCAwLCBQT1JUX0RBVEFCQVNFX1NJWkUpOwotCiAJCS8qIEFsbG9jYXRlIGlvY3RsIHJlbGF0ZWQgbWVtb3J5LiAqLwogCQlpZiAocWxhMngwMF9hbGxvY19pb2N0bF9tZW0oaGEpKSB7CiAJCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCkBAIC0yMDYyLDIwICsyMDIzLDEyIEBACiAJaWYgKGhhLT5tc19pb2NiKQogCQlkbWFfcG9vbF9mcmVlKGhhLT5zX2RtYV9wb29sLCBoYS0+bXNfaW9jYiwgaGEtPm1zX2lvY2JfZG1hKTsKIAotCWlmIChoYS0+aW9kZXNjX3BkKQotCQlkbWFfcG9vbF9mcmVlKGhhLT5zX2RtYV9wb29sLCBoYS0+aW9kZXNjX3BkLCBoYS0+aW9kZXNjX3BkX2RtYSk7Ci0KIAlpZiAoaGEtPmluaXRfY2IpCiAJCWRtYV9wb29sX2ZyZWUoaGEtPnNfZG1hX3Bvb2wsIGhhLT5pbml0X2NiLCBoYS0+aW5pdF9jYl9kbWEpOwogCiAJaWYgKGhhLT5zX2RtYV9wb29sKQogCQlkbWFfcG9vbF9kZXN0cm95KGhhLT5zX2RtYV9wb29sKTsKIAotCWlmIChoYS0+cmxjX3JzcCkKLQkJZG1hX2ZyZWVfY29oZXJlbnQoJmhhLT5wZGV2LT5kZXYsCi0JCSAgICBzaXplb2YocnB0X2x1bl9jbWRfcnNwX3QpLCBoYS0+cmxjX3JzcCwKLQkJICAgIGhhLT5ybGNfcnNwX2RtYSk7Ci0KIAlpZiAoaGEtPmdpZF9saXN0KQogCQlkbWFfZnJlZV9jb2hlcmVudCgmaGEtPnBkZXYtPmRldiwgR0lEX0xJU1RfU0laRSwgaGEtPmdpZF9saXN0LAogCQkgICAgaGEtPmdpZF9saXN0X2RtYSk7CkBAIC0yMDk2LDE1ICsyMDQ5LDExIEBACiAJaGEtPmN0X3Nuc19kbWEgPSAwOwogCWhhLT5tc19pb2NiID0gTlVMTDsKIAloYS0+bXNfaW9jYl9kbWEgPSAwOwotCWhhLT5pb2Rlc2NfcGQgPSBOVUxMOwotCWhhLT5pb2Rlc2NfcGRfZG1hID0gMDsKIAloYS0+aW5pdF9jYiA9IE5VTEw7CiAJaGEtPmluaXRfY2JfZG1hID0gMDsKIAogCWhhLT5zX2RtYV9wb29sID0gTlVMTDsKIAotCWhhLT5ybGNfcnNwID0gTlVMTDsKLQloYS0+cmxjX3JzcF9kbWEgPSAwOwogCWhhLT5naWRfbGlzdCA9IE5VTEw7CiAJaGEtPmdpZF9saXN0X2RtYSA9IDA7CiAKQEAgLTIxMjIsMTUgKzIwNzEsMTAgQEAKIAl9CiAJSU5JVF9MSVNUX0hFQUQoJmhhLT5mY3BvcnRzKTsKIAotCWlmIChoYS0+ZndfZHVtcCkKLQkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyloYS0+ZndfZHVtcCwgaGEtPmZ3X2R1bXBfb3JkZXIpOwotCi0JdmZyZWUoaGEtPmZ3X2R1bXAyNCk7Ci0KKwl2ZnJlZShoYS0+ZndfZHVtcCk7CiAJdmZyZWUoaGEtPmZ3X2R1bXBfYnVmZmVyKTsKIAogCWhhLT5md19kdW1wID0gTlVMTDsKLQloYS0+ZndfZHVtcDI0ID0gTlVMTDsKIAloYS0+ZndfZHVtcGVkID0gMDsKIAloYS0+ZndfZHVtcF9yZWFkaW5nID0gMDsKIAloYS0+ZndfZHVtcF9idWZmZXIgPSBOVUxMOwpAQCAtMjE0OCw4ICsyMDkyLDYgQEAKICAqCiAgKiBDb250ZXh0OgogICogICAgICBLZXJuZWwgY29udGV4dC4KLSAqCi0gKiBOb3RlOiBTZXRzIHRoZSByZWZfY291bnQgZm9yIG5vbiBOdWxsIHNwIHRvIG9uZS4KICAqLwogc3RhdGljIGludAogcWxhMngwMF9hbGxvY2F0ZV9zcF9wb29sKHNjc2lfcWxhX2hvc3RfdCAqaGEpCkBAIC0yNTkzLDE0ICsyNTM1LDYgQEAKIAlyZXR1cm4gLUVUSU1FRE9VVDsKIH0KIAotI2lmIGRlZmluZWQoQ09ORklHX1NDU0lfUUxBMlhYWF9FTUJFRERFRF9GSVJNV0FSRSkKLQotI2RlZmluZSBxbGEyeDAwX3JlbGVhc2VfZmlybXdhcmUoKQlkbyB7IH0gd2hpbGUgKDApCi0jZGVmaW5lIHFsYTJ4MDBfcGNpX21vZHVsZV9pbml0KCkJKDApCi0jZGVmaW5lIHFsYTJ4MDBfcGNpX21vZHVsZV9leGl0KCkJZG8geyB9IHdoaWxlICgwKQotCi0jZWxzZQkvKiAhZGVmaW5lZChDT05GSUdfU0NTSV9RTEEyWFhYX0VNQkVEREVEX0ZJUk1XQVJFKSAqLwotCiAvKiBGaXJtd2FyZSBpbnRlcmZhY2Ugcm91dGluZXMuICovCiAKICNkZWZpbmUgRldfQkxPQlMJNQpAQCAtMjY2NywzMyArMjYwMSwxOCBAQAogCXVwKCZxbGFfZndfbG9jayk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgcWxhX2JvYXJkX2luZm8gcWxhX2JvYXJkX3RibCA9IHsKLQkuZHJ2X25hbWUgICAgICAgPSAicWxhMnh4eCIsCi19OwotCiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcWxhMnh4eF9wY2lfdGJsW10gPSB7Ci0JeyBQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjEwMCwKLQkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSwKLQl7IFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMjAwLAotCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAotCXsgUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIzMDAsCi0JCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCi0JeyBQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjMxMiwKLQkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSwKLQl7IFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMzIyLAotCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAotCXsgUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDYzMTIsCi0JCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCi0JeyBQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNjMyMiwKLQkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSwKLQl7IFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyNDIyLAotCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAotCXsgUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDI0MzIsCi0JCVBDSV9BTllfSUQsIFBDSV9BTllfSUQsIH0sCi0JeyBQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNTQyMiwKLQkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSwKLQl7IFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1A1NDMyLAotCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LAorCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjEwMCkgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIyMDApIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyMzAwKSB9LAorCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjMxMikgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDIzMjIpIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1A2MzEyKSB9LAorCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNjMyMikgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDI0MjIpIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUxPR0lDLCBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AyNDMyKSB9LAorCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1FMT0dJQywgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQNTQyMikgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9RTE9HSUMsIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDU0MzIpIH0sCiAJeyAwIH0sCiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHFsYTJ4eHhfcGNpX3RibCk7CkBAIC0yNzAxLDcgKzI2MjAsNyBAQAogc3RhdGljIGludCBfX2RldmluaXQKIHFsYTJ4eHhfcHJvYmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCiB7Ci0JcmV0dXJuIHFsYTJ4MDBfcHJvYmVfb25lKHBkZXYsICZxbGFfYm9hcmRfdGJsKTsKKwlyZXR1cm4gcWxhMngwMF9wcm9iZV9vbmUocGRldik7CiB9CiAKIHN0YXRpYyB2b2lkIF9fZGV2ZXhpdApAQCAtMjcxMSw3ICsyNjMwLDcgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHFsYTJ4eHhfcGNpX2RyaXZlciA9IHsKLQkubmFtZQkJPSAicWxhMnh4eCIsCisJLm5hbWUJCT0gUUxBMlhYWF9EUklWRVJfTkFNRSwKIAkuZHJpdmVyCQk9IHsKIAkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCkBAIC0yNzMyLDggKzI2NTEsNiBAQAogCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmcWxhMnh4eF9wY2lfZHJpdmVyKTsKIH0KIAotI2VuZGlmCi0KIC8qKgogICogcWxhMngwMF9tb2R1bGVfaW5pdCAtIE1vZHVsZSBpbml0aWFsaXphdGlvbi4KICAqKi8KQEAgLTI3NTMsOSArMjY3MCw2IEBACiAKIAkvKiBEZXJpdmUgdmVyc2lvbiBzdHJpbmcuICovCiAJc3RyY3B5KHFsYTJ4MDBfdmVyc2lvbl9zdHIsIFFMQTJYWFhfVkVSU0lPTik7Ci0jaWYgZGVmaW5lZChDT05GSUdfU0NTSV9RTEEyWFhYX0VNQkVEREVEX0ZJUk1XQVJFKQotCXN0cmNhdChxbGEyeDAwX3ZlcnNpb25fc3RyLCAiLWZ3Iik7Ci0jZW5kaWYKICNpZiBERUJVR19RTEEyMTAwCiAJc3RyY2F0KHFsYTJ4MDBfdmVyc2lvbl9zdHIsICItZGVidWciKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX3JzY24uYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9yc2NuLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MGJlYmUuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX3JzY24uYworKysgL2Rldi9udWxsCkBAIC0xLDE0MjYgKzAsMCBAQAotLyoKLSAqIFFMb2dpYyBGaWJyZSBDaGFubmVsIEhCQSBEcml2ZXIKLSAqIENvcHlyaWdodCAoYykgIDIwMDMtMjAwNSBRTG9naWMgQ29ycG9yYXRpb24KLSAqCi0gKiBTZWUgTElDRU5TRS5xbGEyeHh4IGZvciBjb3B5cmlnaHQgYW5kIGxpY2Vuc2luZyBkZXRhaWxzLgotICovCi0jaW5jbHVkZSAicWxhX2RlZi5oIgotCi0vKioKLSAqIElPIGRlc2NyaXB0b3IgaGFuZGxlIGRlZmluaXRpb25zLgotICoKLSAqIFNpZ25hdHVyZSBmb3JtOgotICoKLSAqCXwzMS0tLS0tLTI4fDI3LS0tLS0tLS0tLS0tLS0tLS0tLTEyfDExLS0tLS0tLTB8Ci0gKgl8ICAgVHlwZSAgIHwgICBSb2xsaW5nIFNpZ25hdHVyZSAgIHwgICBJbmRleCAgfAotICoJfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKLSAqCi0gKiovCi0KLSNkZWZpbmUgSERMX1RZUEVfU0NTSQkJMAotI2RlZmluZSBIRExfVFlQRV9BU1lOQ19JT0NCCTB4MEEKLQotI2RlZmluZSBIRExfSU5ERVhfQklUUwkxMgotI2RlZmluZSBIRExfSVRFUl9CSVRTCTE2Ci0jZGVmaW5lIEhETF9UWVBFX0JJVFMJNAotCi0jZGVmaW5lIEhETF9JTkRFWF9NQVNLCSgoMVVMIDw8IEhETF9JTkRFWF9CSVRTKSAtIDEpCi0jZGVmaW5lIEhETF9JVEVSX01BU0sJKCgxVUwgPDwgSERMX0lURVJfQklUUykgLSAxKQotI2RlZmluZSBIRExfVFlQRV9NQVNLCSgoMVVMIDw8IEhETF9UWVBFX0JJVFMpIC0gMSkKLQotI2RlZmluZSBIRExfSU5ERVhfU0hJRlQJMAotI2RlZmluZSBIRExfSVRFUl9TSElGVAkoSERMX0lOREVYX1NISUZUICsgSERMX0lOREVYX0JJVFMpCi0jZGVmaW5lIEhETF9UWVBFX1NISUZUCShIRExfSVRFUl9TSElGVCArIEhETF9JVEVSX0JJVFMpCi0KLS8qIExvY2FsIFByb3RvdHlwZXMuICovCi1zdGF0aWMgaW5saW5lIHVpbnQzMl90IHFsYTJ4MDBfdG9faGFuZGxlKHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QpOwotc3RhdGljIGlubGluZSB1aW50MTZfdCBxbGEyeDAwX2hhbmRsZV90b19pZHgodWludDMyX3QpOwotc3RhdGljIGlubGluZSB1aW50MzJfdCBxbGEyeDAwX2lvZGVzY190b19oYW5kbGUoc3RydWN0IGlvX2Rlc2NyaXB0b3IgKik7Ci1zdGF0aWMgaW5saW5lIHN0cnVjdCBpb19kZXNjcmlwdG9yICpxbGEyeDAwX2hhbmRsZV90b19pb2Rlc2Moc2NzaV9xbGFfaG9zdF90ICosCi0gICAgdWludDMyX3QpOwotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBpb19kZXNjcmlwdG9yICpxbGEyeDAwX2FsbG9jX2lvZGVzYyhzY3NpX3FsYV9ob3N0X3QgKik7Ci1zdGF0aWMgaW5saW5lIHZvaWQgcWxhMngwMF9mcmVlX2lvZGVzYyhzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBxbGEyeDAwX2luaXRfaW9fZGVzY3JpcHRvcnMoc2NzaV9xbGFfaG9zdF90ICopOwotCi1zdGF0aWMgdm9pZCBxbGEyeDAwX2lvZGVzY190aW1lb3V0KHVuc2lnbmVkIGxvbmcpOwotc3RhdGljIGlubGluZSB2b2lkIHFsYTJ4MDBfYWRkX2lvZGVzY190aW1lcihzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBxbGEyeDAwX3JlbW92ZV9pb2Rlc2NfdGltZXIoc3RydWN0IGlvX2Rlc2NyaXB0b3IgKik7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBxbGEyeDAwX3VwZGF0ZV9sb2dpbl9mY3BvcnQoc2NzaV9xbGFfaG9zdF90ICosCi0gICAgc3RydWN0IG1ieF9lbnRyeSAqLCBmY19wb3J0X3QgKik7Ci0KLXN0YXRpYyBpbnQgcWxhMngwMF9zZW5kX2Fib3J0X2lvY2Ioc2NzaV9xbGFfaG9zdF90ICosIHN0cnVjdCBpb19kZXNjcmlwdG9yICosCi0gICAgdWludDMyX3QsIGludCk7Ci1zdGF0aWMgaW50IHFsYTJ4MDBfc2VuZF9hYm9ydF9pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqLCBzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqLAotICAgIHN0cnVjdCBtYnhfZW50cnkgKik7Ci0KLXN0YXRpYyBpbnQgcWxhMngwMF9zZW5kX2FkaXNjX2lvY2Ioc2NzaV9xbGFfaG9zdF90ICosIHN0cnVjdCBpb19kZXNjcmlwdG9yICosCi0gICAgaW50KTsKLXN0YXRpYyBpbnQgcWxhMngwMF9zZW5kX2FkaXNjX2lvY2JfY2Ioc2NzaV9xbGFfaG9zdF90ICosIHN0cnVjdCBpb19kZXNjcmlwdG9yICosCi0gICAgc3RydWN0IG1ieF9lbnRyeSAqKTsKLQotc3RhdGljIGludCBxbGEyeDAwX3NlbmRfbG9nb3V0X2lvY2Ioc2NzaV9xbGFfaG9zdF90ICosIHN0cnVjdCBpb19kZXNjcmlwdG9yICosCi0gICAgaW50KTsKLXN0YXRpYyBpbnQgcWxhMngwMF9zZW5kX2xvZ291dF9pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqLAotICAgIHN0cnVjdCBpb19kZXNjcmlwdG9yICosIHN0cnVjdCBtYnhfZW50cnkgKik7Ci0KLXN0YXRpYyBpbnQgcWxhMngwMF9zZW5kX2xvZ2luX2lvY2Ioc2NzaV9xbGFfaG9zdF90ICosIHN0cnVjdCBpb19kZXNjcmlwdG9yICosCi0gICAgcG9ydF9pZF90ICosIGludCk7Ci1zdGF0aWMgaW50IHFsYTJ4MDBfc2VuZF9sb2dpbl9pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqLCBzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqLAotICAgIHN0cnVjdCBtYnhfZW50cnkgKik7Ci0KLS8qKgotICogTWFpbGJveCBJT0NCIGNhbGxiYWNrIGFycmF5LgotICoqLwotc3RhdGljIGludCAoKmlvY2JfZnVuY3Rpb25fY2JfbGlzdFtMQVNUX0lPQ0JfQ0JdKQotCShzY3NpX3FsYV9ob3N0X3QgKiwgc3RydWN0IGlvX2Rlc2NyaXB0b3IgKiwgc3RydWN0IG1ieF9lbnRyeSAqKSA9IHsKLQotCXFsYTJ4MDBfc2VuZF9hYm9ydF9pb2NiX2NiLAotCXFsYTJ4MDBfc2VuZF9hZGlzY19pb2NiX2NiLAotCXFsYTJ4MDBfc2VuZF9sb2dvdXRfaW9jYl9jYiwKLQlxbGEyeDAwX3NlbmRfbG9naW5faW9jYl9jYiwKLX07Ci0KLQotLyoqCi0gKiBHZW5lcmljIElPIGRlc2NyaXB0b3IgaGFuZGxlIHJvdXRpbmVzLgotICoqLwotCi0vKioKLSAqIHFsYTJ4MDBfdG9faGFuZGxlKCkgLSBDcmVhdGUgYSBkZXNjcmlwdG9yIGhhbmRsZS4KLSAqIEB0eXBlOiBkZXNjcmlwdG9yIHR5cGUKLSAqIEBpdGVyOiBkZXNjcmlwdG9yIHJvbGxpbmcgc2lnbmF0dXJlCi0gKiBAaWR4OiBpbmRleCB0byB0aGUgZGVzY3JpcHRvciBhcnJheQotICoKLSAqIFJldHVybnMgYSBjb21wb3NpdGUgaGFuZGxlIGJhc2VkIGluIHRoZSBAdHlwZSwgQGl0ZXIsIGFuZCBAaWR4LgotICovCi1zdGF0aWMgaW5saW5lIHVpbnQzMl90Ci1xbGEyeDAwX3RvX2hhbmRsZSh1aW50MTZfdCB0eXBlLCB1aW50MTZfdCBpdGVyLCB1aW50MTZfdCBpZHgpCi17Ci0JcmV0dXJuICgodWludDMyX3QpKCgodWludDMyX3QpdHlwZSA8PCBIRExfVFlQRV9TSElGVCkgfAotCSAgICAoKHVpbnQzMl90KWl0ZXIgPDwgSERMX0lURVJfU0hJRlQpIHwKLQkgICAgKCh1aW50MzJfdClpZHggPDwgSERMX0lOREVYX1NISUZUKSkpOwotfQotCi0vKioKLSAqIHFsYTJ4MDBfaGFuZGxlX3RvX2lkeCgpIC0gUmV0cml2ZSB0aGUgaW5kZXggZm9yIGEgZ2l2ZW4gaGFuZGxlLgotICogQGhhbmRsZTogZGVzY3JpcHRvciBoYW5kbGUKLSAqCi0gKiBSZXR1cm5zIHRoZSBpbmRleCBzcGVjaWZpZWQgYnkgdGhlIEBoYW5kbGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdWludDE2X3QKLXFsYTJ4MDBfaGFuZGxlX3RvX2lkeCh1aW50MzJfdCBoYW5kbGUpCi17Ci0JcmV0dXJuICgodWludDE2X3QpKCgoaGFuZGxlKSA+PiBIRExfSU5ERVhfU0hJRlQpICYgSERMX0lOREVYX01BU0spKTsKLX0KLQotLyoqCi0gKiBxbGEyeDAwX2lvZGVzY190b19oYW5kbGUoKSAtIENvbnZlcnQgYW4gSU8gZGVzY3JpcHRvciB0byBhIHVuaXF1ZSBoYW5kbGUuCi0gKiBAaW9kZXNjOiBpbyBkZXNjcmlwdG9yCi0gKgotICogUmV0dXJucyBhIHVuaXF1ZSBoYW5kbGUgZm9yIEBpb2Rlc2MuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QKLXFsYTJ4MDBfaW9kZXNjX3RvX2hhbmRsZShzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqaW9kZXNjKQotewotCXVpbnQzMl90IGhhbmRsZTsKLQotCWhhbmRsZSA9IHFsYTJ4MDBfdG9faGFuZGxlKEhETF9UWVBFX0FTWU5DX0lPQ0IsCi0JICAgICsraW9kZXNjLT5oYS0+aW9kZXNjX3NpZ25hdHVyZSwgaW9kZXNjLT5pZHgpOwotCWlvZGVzYy0+c2lnbmF0dXJlID0gaGFuZGxlOwotCi0JcmV0dXJuIChoYW5kbGUpOwotfQotCi0vKioKLSAqIHFsYTJ4MDBfaGFuZGxlX3RvX2lvZGVzYygpIC0gUmV0cmlldmUgYW4gSU8gZGVzY3JpcHRvciBnaXZlbiBhIHVuaXF1ZSBoYW5kbGUuCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBoYW5kbGU6IGhhbmRsZSB0byBpbyBkZXNjcmlwdG9yCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGlvIGRlc2NyaXB0b3IsIG9yIE5VTEwsIGlmIHRoZSBpbyBkZXNjcmlwdG9yIGRvZXMKLSAqIG5vdCBleGlzdCBvciB0aGUgaW8gZGVzY3JpcHRvcnMgc2lnbmF0dXJlIGRvZXMgbm90IEBoYW5kbGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGlvX2Rlc2NyaXB0b3IgKgotcWxhMngwMF9oYW5kbGVfdG9faW9kZXNjKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHVpbnQzMl90IGhhbmRsZSkKLXsKLQl1aW50MTZfdCBpZHg7Ci0Jc3RydWN0IGlvX2Rlc2NyaXB0b3IgKmlvZGVzYzsKLQotCWlkeCA9IHFsYTJ4MDBfaGFuZGxlX3RvX2lkeChoYW5kbGUpOwotCWlvZGVzYyA9ICZoYS0+aW9fZGVzY3JpcHRvcnNbaWR4XTsKLQlpZiAoaW9kZXNjKQotCQlpZiAoaW9kZXNjLT5zaWduYXR1cmUgIT0gaGFuZGxlKQotCQkJaW9kZXNjID0gTlVMTDsKLQotCXJldHVybiAoaW9kZXNjKTsKLX0KLQotCi0vKioKLSAqIElPIGRlc2NyaXB0b3IgYWxsb2NhdGlvbiByb3V0aW5lcy4KLSAqKi8KLQotLyoqCi0gKiBxbGEyeDAwX2FsbG9jX2lvZGVzYygpIC0gQWxsb2NhdGUgYW4gSU8gZGVzY3JpcHRvciBmcm9tIHRoZSBwb29sLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBpbyBkZXNjcmlwdG9yLCBvciBOVUxMLCBpZiBub25lIGF2YWlsYWJsZS4KLSAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqCi1xbGEyeDAwX2FsbG9jX2lvZGVzYyhzY3NpX3FsYV9ob3N0X3QgKmhhKQotewotCXVpbnQxNl90IGl0ZXI7Ci0Jc3RydWN0IGlvX2Rlc2NyaXB0b3IgKmlvZGVzYzsKLQotCWlvZGVzYyA9IE5VTEw7Ci0JZm9yIChpdGVyID0gMDsgaXRlciA8IE1BWF9JT19ERVNDUklQVE9SUzsgaXRlcisrKSB7Ci0JCWlmIChoYS0+aW9fZGVzY3JpcHRvcnNbaXRlcl0udXNlZCkKLQkJCWNvbnRpbnVlOwotCi0JCWlvZGVzYyA9ICZoYS0+aW9fZGVzY3JpcHRvcnNbaXRlcl07Ci0JCWlvZGVzYy0+dXNlZCA9IDE7Ci0JCWlvZGVzYy0+aWR4ID0gaXRlcjsKLQkJaW5pdF90aW1lcigmaW9kZXNjLT50aW1lcik7Ci0JCWlvZGVzYy0+aGEgPSBoYTsKLQkJaW9kZXNjLT5zaWduYXR1cmUgPSBxbGEyeDAwX2lvZGVzY190b19oYW5kbGUoaW9kZXNjKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJuIChpb2Rlc2MpOwotfQotCi0vKioKLSAqIHFsYTJ4MDBfZnJlZV9pb2Rlc2MoKSAtIEZyZWUgYW4gSU8gZGVzY3JpcHRvci4KLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqCi0gKiBOT1RFOiBUaGUgaW8gZGVzY3JpcHRvcnMgdGltZXIgKm11c3QqIGJlIHN0b3BwZWQgYmVmb3JlIGl0IGNhbiBiZSBmcmVlJ2QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotcWxhMngwMF9mcmVlX2lvZGVzYyhzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqaW9kZXNjKQotewotCWlvZGVzYy0+dXNlZCA9IDA7Ci0JaW9kZXNjLT5zaWduYXR1cmUgPSAwOwotfQotCi0vKioKLSAqIHFsYTJ4MDBfcmVtb3ZlX2lvZGVzY190aW1lcigpIC0gUmVtb3ZlIGFuIGFjdGl2ZSB0aW1lciBmcm9tIGFuIElPIGRlc2NyaXB0b3IuCi0gKiBAaW9kZXNjOiBpbyBkZXNjcmlwdG9yCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotcWxhMngwMF9yZW1vdmVfaW9kZXNjX3RpbWVyKHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MpCi17Ci0JaWYgKGlvZGVzYy0+dGltZXIuZnVuY3Rpb24gIT0gTlVMTCkgewotCQlkZWxfdGltZXJfc3luYygmaW9kZXNjLT50aW1lcik7Ci0JCWlvZGVzYy0+dGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBOVUxMOwotCQlpb2Rlc2MtPnRpbWVyLmZ1bmN0aW9uID0gTlVMTDsKLQl9Ci19Ci0KLS8qKgotICogcWxhMngwMF9pbml0X2lvX2Rlc2NyaXB0b3JzKCkgLSBJbml0aWFsaXplIHRoZSBwb29sIG9mIElPIGRlc2NyaXB0b3JzLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotcWxhMngwMF9pbml0X2lvX2Rlc2NyaXB0b3JzKHNjc2lfcWxhX2hvc3RfdCAqaGEpCi17Ci0JdWludDE2X3QgaXRlcjsKLQotCWZvciAoaXRlciA9IDA7IGl0ZXIgPCBNQVhfSU9fREVTQ1JJUFRPUlM7IGl0ZXIrKykgewotCQlpZiAoIWhhLT5pb19kZXNjcmlwdG9yc1tpdGVyXS51c2VkKQotCQkJY29udGludWU7Ci0KLQkJcWxhMngwMF9yZW1vdmVfaW9kZXNjX3RpbWVyKCZoYS0+aW9fZGVzY3JpcHRvcnNbaXRlcl0pOwotCQlxbGEyeDAwX2ZyZWVfaW9kZXNjKCZoYS0+aW9fZGVzY3JpcHRvcnNbaXRlcl0pOwotCX0KLX0KLQotCi0vKioKLSAqIElPIGRlc2NyaXB0b3IgdGltZXIgcm91dGluZXMuCi0gKiovCi0KLS8qKgotICogcWxhMngwMF9pb2Rlc2NfdGltZW91dCgpIC0gVGltZW91dCBJTyBkZXNjcmlwdG9yIGhhbmRsZXIuCi0gKiBAZGF0YTogaW8gZGVzY3JpcHRvcgotICovCi1zdGF0aWMgdm9pZAotcWxhMngwMF9pb2Rlc2NfdGltZW91dCh1bnNpZ25lZCBsb25nIGRhdGEpCi17Ci0Jc3RydWN0IGlvX2Rlc2NyaXB0b3IgKmlvZGVzYzsKLQotCWlvZGVzYyA9IChzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqKSBkYXRhOwotCi0JREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSU8gZGVzY3JpcHRvciB0aW1lb3V0LCBpbmRleD0leCAiCi0JICAgICJzaWduYXR1cmU9JTA4eCwgc2NoZWR1bGluZyBJU1AgYWJvcnQuXG4iLCBpb2Rlc2MtPmhhLT5ob3N0X25vLAotCSAgICBpb2Rlc2MtPmlkeCwgaW9kZXNjLT5zaWduYXR1cmUpKTsKLQotCXFsYTJ4MDBfZnJlZV9pb2Rlc2MoaW9kZXNjKTsKLQotCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBpb2Rlc2MtPmhhLAotCSAgICAiSU8gZGVzY3JpcHRvciB0aW1lb3V0LiBTY2hlZHVsaW5nIElTUCBhYm9ydC5cbiIpOwotCXNldF9iaXQoSVNQX0FCT1JUX05FRURFRCwgJmlvZGVzYy0+aGEtPmRwY19mbGFncyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9hZGRfaW9kZXNjX3RpbWVyKCkgLSBBZGQgYW5kIHN0YXJ0IGEgdGltZXIgZm9yIGFuIElPIGRlc2NyaXB0b3IuCi0gKiBAaW9kZXNjOiBpbyBkZXNjcmlwdG9yCi0gKgotICogTk9URToKLSAqIFRoZSBmaXJtd2FyZSBzaGFsbCB0aW1lb3V0IGFuIG91dHN0YW5kaW5nIG1haWxib3ggSU9DQiBpbiAyICogUl9BX1RPViAoaW4KLSAqIHRlbnRocyBvZiBhIHNlY29uZCkgYWZ0ZXIgaXQgaGl0cyB0aGUgd2lyZS4gIEJ1dCwgaWYgdGhlcmUgYXJlIGFueSByZXF1ZXN0Ci0gKiByZXNvdXJjZSBjb250cmFpbnRzIChpLmUuIGR1cmluZyBoZWF2eSBJL08pLCBleGNoYW5nZXMgY2FuIGJlIGhlbGQgb2ZmIGZvcgotICogYXQgbW9zdCBSX0FfVE9WLiAgVGhlcmVmb3JlLCB0aGUgZHJpdmVyIHdpbGwgd2FpdCA0ICogUl9BX1RPViBiZWZvcmUKLSAqIHNjaGVkdWxpbmcgYSByZWNvdmVyeSAoYmlnIGhhbW1lcikuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotcWxhMngwMF9hZGRfaW9kZXNjX3RpbWVyKHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MpCi17Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0OwotCi0JdGltZW91dCA9IChpb2Rlc2MtPmhhLT5yX2FfdG92ICogNCkgLyAxMDsKLQlpbml0X3RpbWVyKCZpb2Rlc2MtPnRpbWVyKTsKLQlpb2Rlc2MtPnRpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZykgaW9kZXNjOwotCWlvZGVzYy0+dGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyAodGltZW91dCAqIEhaKTsKLQlpb2Rlc2MtPnRpbWVyLmZ1bmN0aW9uID0KLQkgICAgKHZvaWQgKCopICh1bnNpZ25lZCBsb25nKSkgcWxhMngwMF9pb2Rlc2NfdGltZW91dDsKLQlhZGRfdGltZXIoJmlvZGVzYy0+dGltZXIpOwotfQotCi0vKioKLSAqIElPIGRlc2NyaXB0b3Igc3VwcG9ydCByb3V0aW5lcy4KLSAqKi8KLQotLyoqCi0gKiBxbGEyeDAwX3VwZGF0ZV9sb2dpbl9mY3BvcnQoKSAtIFVwZGF0ZSBmY3BvcnQgZGF0YSBhZnRlciBsb2dpbiBwcm9jZXNzaW5nLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKiBAbWJ4c3RhdDogTWFpbGJveCBjb21tYW5kIHN0YXR1cyBJT0NCCi0gKiBAZmNwb3J0OiBwb3J0IHRvIHVwZGF0ZQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQKLXFsYTJ4MDBfdXBkYXRlX2xvZ2luX2ZjcG9ydChzY3NpX3FsYV9ob3N0X3QgKmhhLCBzdHJ1Y3QgbWJ4X2VudHJ5ICptYnhzdGF0LAotICAgIGZjX3BvcnRfdCAqZmNwb3J0KQotewotCWlmIChsZTE2X3RvX2NwdShtYnhzdGF0LT5tYjEpICYgQklUXzApIHsKLQkJZmNwb3J0LT5wb3J0X3R5cGUgPSBGQ1RfSU5JVElBVE9SOwotCX0gZWxzZSB7Ci0JCWZjcG9ydC0+cG9ydF90eXBlID0gRkNUX1RBUkdFVDsKLQkJaWYgKGxlMTZfdG9fY3B1KG1ieHN0YXQtPm1iMSkgJiBCSVRfMSkgewotCQkJZmNwb3J0LT5mbGFncyB8PSBGQ0ZfVEFQRV9QUkVTRU5UOwotCQl9Ci0JfQotCWZjcG9ydC0+bG9naW5fcmV0cnkgPSAwOwotCWZjcG9ydC0+cG9ydF9sb2dpbl9yZXRyeV9jb3VudCA9IGhhLT5wb3J0X2Rvd25fcmV0cnlfY291bnQgKgotCSAgICBQT1JUX1JFVFJZX1RJTUU7Ci0JYXRvbWljX3NldCgmZmNwb3J0LT5wb3J0X2Rvd25fdGltZXIsIGhhLT5wb3J0X2Rvd25fcmV0cnlfY291bnQgKgotCSAgICBQT1JUX1JFVFJZX1RJTUUpOwotCWZjcG9ydC0+ZmxhZ3MgfD0gRkNGX0ZBQlJJQ19ERVZJQ0U7Ci0JZmNwb3J0LT5mbGFncyAmPSB+RkNGX0ZBSUxPVkVSX05FRURFRDsKLQlmY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9IElPREVTQ19JTlZBTElEX0lOREVYOwotCWF0b21pY19zZXQoJmZjcG9ydC0+c3RhdGUsIEZDU19PTkxJTkUpOwotCXNjaGVkdWxlX3dvcmsoJmZjcG9ydC0+cnBvcnRfYWRkX3dvcmspOwotfQotCi0KLS8qKgotICogTWFpbGJveCBJT0NCIGNvbW1hbmRzLgotICoqLwotCi0vKioKLSAqIHFsYTJ4MDBfZ2V0X21ieF9pb2NiX2VudHJ5KCkgLSBSZXRyaWV2ZSBhbiBJT0NCIGZyb20gdGhlIHJlcXVlc3QgcXVldWUuCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBoYW5kbGU6IGhhbmRsZSB0byBpbyBkZXNjcmlwdG9yCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlcWVzdCBlbnRyeSwgb3IgTlVMTCwgaWYgbm9uZSB3ZXJlIGF2YWlsYWJsZS4KLSAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgbWJ4X2VudHJ5ICoKLXFsYTJ4MDBfZ2V0X21ieF9pb2NiX2VudHJ5KHNjc2lfcWxhX2hvc3RfdCAqaGEsIHVpbnQzMl90IGhhbmRsZSkKLXsKLQl1aW50MTZfdCBjbnQ7Ci0Jc3RydWN0IGRldmljZV9yZWdfMnh4eCBfX2lvbWVtICpyZWcgPSAmaGEtPmlvYmFzZS0+aXNwOwotCXN0cnVjdCBtYnhfZW50cnkgKm1ieGVudHJ5OwotCi0JbWJ4ZW50cnkgPSBOVUxMOwotCi0JaWYgKGhhLT5yZXFfcV9jbnQgPCAzKSB7Ci0JCWNudCA9IHFsYTJ4MDBfZGVib3VuY2VfcmVnaXN0ZXIoSVNQX1JFUV9RX09VVChoYSwgcmVnKSk7Ci0JCWlmICAoaGEtPnJlcV9yaW5nX2luZGV4IDwgY250KQotCQkJaGEtPnJlcV9xX2NudCA9IGNudCAtIGhhLT5yZXFfcmluZ19pbmRleDsKLQkJZWxzZQotCQkJaGEtPnJlcV9xX2NudCA9IGhhLT5yZXF1ZXN0X3FfbGVuZ3RoIC0KLQkJCSAgICAoaGEtPnJlcV9yaW5nX2luZGV4IC0gY250KTsKLQl9Ci0JaWYgKGhhLT5yZXFfcV9jbnQgPj0gMykgewotCQltYnhlbnRyeSA9IChzdHJ1Y3QgbWJ4X2VudHJ5ICopaGEtPnJlcXVlc3RfcmluZ19wdHI7Ci0KLQkJbWVtc2V0KG1ieGVudHJ5LCAwLCBzaXplb2Yoc3RydWN0IG1ieF9lbnRyeSkpOwotCQltYnhlbnRyeS0+ZW50cnlfdHlwZSA9IE1CWF9JT0NCX1RZUEU7Ci0JCW1ieGVudHJ5LT5lbnRyeV9jb3VudCA9IDE7Ci0JCW1ieGVudHJ5LT5zeXNfZGVmaW5lMSA9IFNPVVJDRV9BU1lOQ19JT0NCOwotCQltYnhlbnRyeS0+aGFuZGxlID0gaGFuZGxlOwotCX0KLQlyZXR1cm4gKG1ieGVudHJ5KTsKLX0KLQotLyoqCi0gKiBxbGEyeDAwX3NlbmRfYWJvcnRfaW9jYigpIC0gSXNzdWUgYW4gYWJvcnQgSU9DQiB0byB0aGUgZmlybXdhcmUuCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqIEBoYW5kbGVfdG9fYWJvcnQ6IGZpcm13YXJlIGhhbmRsZSB0byBhYm9ydAotICogQGhhX2xvY2tlZDogaXMgZnVuY3Rpb24gY2FsbGVkIHdpdGggdGhlIGhhcmR3YXJlIGxvY2sKLSAqCi0gKiBSZXR1cm5zIFFMQV9TVUNDRVNTIGlmIHRoZSBJT0NCIHdhcyBpc3N1ZWQuCi0gKi8KLXN0YXRpYyBpbnQKLXFsYTJ4MDBfc2VuZF9hYm9ydF9pb2NiKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MsCi0gICAgdWludDMyX3QgaGFuZGxlX3RvX2Fib3J0LCBpbnQgaGFfbG9ja2VkKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwotCXN0cnVjdCBtYnhfZW50cnkgKm1ieGVudHJ5OwotCi0JLyogU2VuZCBtYXJrZXIgaWYgcmVxdWlyZWQuICovCi0JaWYgKHFsYTJ4MDBfaXNzdWVfbWFya2VyKGhhLCBoYV9sb2NrZWQpICE9IFFMQV9TVUNDRVNTKQotCQlyZXR1cm4gKFFMQV9GVU5DVElPTl9GQUlMRUQpOwotCi0JaWYgKCFoYV9sb2NrZWQpCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JLyogQnVpbGQgYWJvcnQgbWFpbGJveCBJT0NCLiAqLwotCW1ieGVudHJ5ID0gcWxhMngwMF9nZXRfbWJ4X2lvY2JfZW50cnkoaGEsIGlvZGVzYy0+c2lnbmF0dXJlKTsKLQlpZiAobWJ4ZW50cnkgPT0gTlVMTCkgewotCQlpZiAoIWhhX2xvY2tlZCkKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5oYXJkd2FyZV9sb2NrLCBmbGFncyk7Ci0KLQkJcmV0dXJuIChRTEFfRlVOQ1RJT05fRkFJTEVEKTsKLQl9Ci0JbWJ4ZW50cnktPm1iMCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoTUJDX0FCT1JUX0NPTU1BTkQpOwotCW1ieGVudHJ5LT5tYjEgPSBtYnhlbnRyeS0+bG9vcF9pZC5leHRlbmRlZCA9Ci0JICAgIGNwdV90b19sZTE2KGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCk7Ci0JbWJ4ZW50cnktPm1iMiA9IExTVyhoYW5kbGVfdG9fYWJvcnQpOwotCW1ieGVudHJ5LT5tYjMgPSBNU1coaGFuZGxlX3RvX2Fib3J0KTsKLQl3bWIoKTsKLQotCXFsYTJ4MDBfYWRkX2lvZGVzY190aW1lcihpb2Rlc2MpOwotCi0JLyogSXNzdWUgY29tbWFuZCB0byBJU1AuICovCi0JcWxhMngwMF9pc3BfY21kKGhhKTsKLQotCWlmICghaGFfbG9ja2VkKQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JREVCVUcxNChwcmludGsoInNjc2koJWxkKTogU2VuZGluZyBBYm9ydCBJT0NCICglMDh4KSB0byBbJXhdLCBhYm9ydGluZyAiCi0JICAgICIlMDh4LlxuIiwgaGEtPmhvc3Rfbm8sIGlvZGVzYy0+c2lnbmF0dXJlLAotCSAgICBpb2Rlc2MtPnJlbW90ZV9mY3BvcnQtPmxvb3BfaWQsIGhhbmRsZV90b19hYm9ydCkpOwotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9zZW5kX2Fib3J0X2lvY2JfY2IoKSAtIEFib3J0IElPQ0IgY2FsbGJhY2suCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqIEBtYnhzdGF0OiBtYWlsYm94IHN0YXR1cyBJT0NCCi0gKgotICogUmV0dXJucyBRTEFfU1VDQ0VTUyBpZiBAaW9kZXNjIGNhbiBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBlbHNlLCBAaW9kZXNjCi0gKiB3aWxsIGJlIHVzZWQgZm9yIGEgcmV0cnkuCi0gKi8KLXN0YXRpYyBpbnQKLXFsYTJ4MDBfc2VuZF9hYm9ydF9pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MsCi0gICAgc3RydWN0IG1ieF9lbnRyeSAqbWJ4c3RhdCkKLXsKLQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBBYm9ydCBJT0NCIC0tIHNlbnQgdG8gWyV4LyUwMnglMDJ4JTAyeF0sICIKLQkgICAgInN0YXR1cz0leCBtYjA9JXguXG4iLCBoYS0+aG9zdF9ubywgaW9kZXNjLT5yZW1vdGVfZmNwb3J0LT5sb29wX2lkLAotCSAgICBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsIGlvZGVzYy0+ZF9pZC5iLmFsX3BhLAotCSAgICBsZTE2X3RvX2NwdShtYnhzdGF0LT5zdGF0dXMpLCBsZTE2X3RvX2NwdShtYnhzdGF0LT5tYjApKSk7Ci0KLQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLX0KLQotCi0vKioKLSAqIHFsYTJ4MDBfc2VuZF9hZGlzY19pb2NiKCkgLSBJc3N1ZSBhIEdldCBQb3J0IERhdGFiYXNlIElPQ0IgdG8gdGhlIGZpcm13YXJlLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKiBAaW9kZXNjOiBpbyBkZXNjcmlwdG9yCi0gKiBAaGFfbG9ja2VkOiBpcyBmdW5jdGlvbiBjYWxsZWQgd2l0aCB0aGUgaGFyZHdhcmUgbG9jawotICoKLSAqIFJldHVybnMgUUxBX1NVQ0NFU1MgaWYgdGhlIElPQ0Igd2FzIGlzc3VlZC4KLSAqLwotc3RhdGljIGludAotcWxhMngwMF9zZW5kX2FkaXNjX2lvY2Ioc2NzaV9xbGFfaG9zdF90ICpoYSwgc3RydWN0IGlvX2Rlc2NyaXB0b3IgKmlvZGVzYywKLSAgICBpbnQgaGFfbG9ja2VkKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwotCXN0cnVjdCBtYnhfZW50cnkgKm1ieGVudHJ5OwotCi0JLyogU2VuZCBtYXJrZXIgaWYgcmVxdWlyZWQuICovCi0JaWYgKHFsYTJ4MDBfaXNzdWVfbWFya2VyKGhhLCBoYV9sb2NrZWQpICE9IFFMQV9TVUNDRVNTKQotCQlyZXR1cm4gKFFMQV9GVU5DVElPTl9GQUlMRUQpOwotCi0JaWYgKCFoYV9sb2NrZWQpCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JLyogQnVpbGQgR2V0IFBvcnQgRGF0YWJhc2UgSU9DQi4gKi8KLQltYnhlbnRyeSA9IHFsYTJ4MDBfZ2V0X21ieF9pb2NiX2VudHJ5KGhhLCBpb2Rlc2MtPnNpZ25hdHVyZSk7Ci0JaWYgKG1ieGVudHJ5ID09IE5VTEwpIHsKLQkJaWYgKCFoYV9sb2NrZWQpCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JCXJldHVybiAoUUxBX0ZVTkNUSU9OX0ZBSUxFRCk7Ci0JfQotCW1ieGVudHJ5LT5tYjAgPSBfX2NvbnN0YW50X2NwdV90b19sZTE2KE1CQ19HRVRfUE9SVF9EQVRBQkFTRSk7Ci0JbWJ4ZW50cnktPm1iMSA9IG1ieGVudHJ5LT5sb29wX2lkLmV4dGVuZGVkID0KLQkgICAgY3B1X3RvX2xlMTYoaW9kZXNjLT5yZW1vdGVfZmNwb3J0LT5sb29wX2lkKTsKLQltYnhlbnRyeS0+bWIyID0gY3B1X3RvX2xlMTYoTVNXKExTRChoYS0+aW9kZXNjX3BkX2RtYSkpKTsKLQltYnhlbnRyeS0+bWIzID0gY3B1X3RvX2xlMTYoTFNXKExTRChoYS0+aW9kZXNjX3BkX2RtYSkpKTsKLQltYnhlbnRyeS0+bWI2ID0gY3B1X3RvX2xlMTYoTVNXKE1TRChoYS0+aW9kZXNjX3BkX2RtYSkpKTsKLQltYnhlbnRyeS0+bWI3ID0gY3B1X3RvX2xlMTYoTFNXKE1TRChoYS0+aW9kZXNjX3BkX2RtYSkpKTsKLQltYnhlbnRyeS0+bWIxMCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoQklUXzApOwotCXdtYigpOwotCi0JcWxhMngwMF9hZGRfaW9kZXNjX3RpbWVyKGlvZGVzYyk7Ci0KLQkvKiBJc3N1ZSBjb21tYW5kIHRvIElTUC4gKi8KLQlxbGEyeDAwX2lzcF9jbWQoaGEpOwotCi0JaWYgKCFoYV9sb2NrZWQpCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5oYXJkd2FyZV9sb2NrLCBmbGFncyk7Ci0KLQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBTZW5kaW5nIEFkaXNjIElPQ0IgKCUwOHgpIHRvIFsleF0uXG4iLAotCSAgICBoYS0+aG9zdF9ubywgaW9kZXNjLT5zaWduYXR1cmUsIGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCkpOwotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9zZW5kX2FkaXNjX2lvY2JfY2IoKSAtIEdldCBQb3J0IERhdGFiYXNlIElPQ0IgY2FsbGJhY2suCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqIEBtYnhzdGF0OiBtYWlsYm94IHN0YXR1cyBJT0NCCi0gKgotICogUmV0dXJucyBRTEFfU1VDQ0VTUyBpZiBAaW9kZXNjIGNhbiBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBlbHNlLCBAaW9kZXNjCi0gKiB3aWxsIGJlIHVzZWQgZm9yIGEgcmV0cnkuCi0gKi8KLXN0YXRpYyBpbnQKLXFsYTJ4MDBfc2VuZF9hZGlzY19pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MsCi0gICAgc3RydWN0IG1ieF9lbnRyeSAqbWJ4c3RhdCkKLXsKLQlmY19wb3J0X3QgKnJlbW90ZV9mY3BvcnQ7Ci0KLQlyZW1vdGVfZmNwb3J0ID0gaW9kZXNjLT5yZW1vdGVfZmNwb3J0OwotCi0JLyogRW5zdXJlIHRoZSBwb3J0IElEcyBhcmUgY29uc2lzdGVudC4gKi8KLQlpZiAocmVtb3RlX2ZjcG9ydC0+ZF9pZC5iMjQgIT0gaW9kZXNjLT5kX2lkLmIyNCkgewotCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBBZGlzYyBJT0NCIC0tIGlnbm9yaW5nLCByZW1vdGUgcG9ydCAiCi0JCSAgICAiaWQgY2hhbmdlZCBmcm9tIFslMDJ4JTAyeCUwMnhdIHRvIFslMDJ4JTAyeCUwMnhdLlxuIiwKLQkJICAgIGhhLT5ob3N0X25vLCByZW1vdGVfZmNwb3J0LT5kX2lkLmIuZG9tYWluLAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hbF9wYSwKLQkJICAgIGlvZGVzYy0+ZF9pZC5iLmRvbWFpbiwgaW9kZXNjLT5kX2lkLmIuYXJlYSwKLQkJICAgIGlvZGVzYy0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci0JfQotCi0JLyogT25seSBwcm9jZXNzIHRoZSBsYXN0IGNvbW1hbmQuICovCi0JaWYgKHJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCAhPSBpb2Rlc2MtPmlkeCkgewotCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBBZGlzYyBJT0NCIC0tIGlnbm9yaW5nLCBzZW50IHRvICIKLQkJICAgICJbJTAyeCUwMnglMDJ4XSwgZXhwZWN0ZWQgJXgsIHJlY2VpdmVkICV4LlxuIiwgaGEtPmhvc3Rfbm8sCi0JCSAgICBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsCi0JCSAgICBpb2Rlc2MtPmRfaWQuYi5hbF9wYSwgcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50LAotCQkgICAgaW9kZXNjLT5pZHgpKTsKLQotCQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLQl9Ci0KLQlpZiAobGUxNl90b19jcHUobWJ4c3RhdC0+c3RhdHVzKSA9PSBDU19DT01QTEVURSkgewotCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBBZGlzYyBJT0NCIC0tIG1hcmtpbmcgIgotCQkgICAgIlsleC8lMDJ4JTAyeCUwMnhdIG9ubGluZS5cbiIsIGhhLT5ob3N0X25vLAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hcmVhLCByZW1vdGVfZmNwb3J0LT5kX2lkLmIuYWxfcGEpKTsKLQotCQlhdG9taWNfc2V0KCZyZW1vdGVfZmNwb3J0LT5zdGF0ZSwgRkNTX09OTElORSk7Ci0JfSBlbHNlIHsKLQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogQWRpc2MgSU9DQiAtLSBtYXJraW5nICIKLQkJICAgICJbJXgvJTAyeCUwMnglMDJ4XSBsb3N0LCBzdGF0dXM9JXggbWIwPSV4LlxuIiwgaGEtPmhvc3Rfbm8sCi0JCSAgICByZW1vdGVfZmNwb3J0LT5sb29wX2lkLCByZW1vdGVfZmNwb3J0LT5kX2lkLmIuZG9tYWluLAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hbF9wYSwKLQkJICAgIGxlMTZfdG9fY3B1KG1ieHN0YXQtPnN0YXR1cyksIGxlMTZfdG9fY3B1KG1ieHN0YXQtPm1iMCkpKTsKLQotCQlpZiAoYXRvbWljX3JlYWQoJnJlbW90ZV9mY3BvcnQtPnN0YXRlKSAhPSBGQ1NfREVWSUNFX0RFQUQpCi0JCQlhdG9taWNfc2V0KCZyZW1vdGVfZmNwb3J0LT5zdGF0ZSwgRkNTX0RFVklDRV9MT1NUKTsKLQl9Ci0JcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID0gSU9ERVNDX0lOVkFMSURfSU5ERVg7Ci0KLQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLX0KLQotCi0vKioKLSAqIHFsYTJ4MDBfc2VuZF9sb2dvdXRfaW9jYigpIC0gSXNzdWUgYSBmYWJyaWMgcG9ydCBsb2dvdXQgSU9DQiB0byB0aGUgZmlybXdhcmUuCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqIEBoYV9sb2NrZWQ6IGlzIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIHRoZSBoYXJkd2FyZSBsb2NrCi0gKgotICogUmV0dXJucyBRTEFfU1VDQ0VTUyBpZiB0aGUgSU9DQiB3YXMgaXNzdWVkLgotICovCi1zdGF0aWMgaW50Ci1xbGEyeDAwX3NlbmRfbG9nb3V0X2lvY2Ioc2NzaV9xbGFfaG9zdF90ICpoYSwgc3RydWN0IGlvX2Rlc2NyaXB0b3IgKmlvZGVzYywKLSAgICBpbnQgaGFfbG9ja2VkKQotewotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwotCXN0cnVjdCBtYnhfZW50cnkgKm1ieGVudHJ5OwotCi0JLyogU2VuZCBtYXJrZXIgaWYgcmVxdWlyZWQuICovCi0JaWYgKHFsYTJ4MDBfaXNzdWVfbWFya2VyKGhhLCBoYV9sb2NrZWQpICE9IFFMQV9TVUNDRVNTKQotCQlyZXR1cm4gKFFMQV9GVU5DVElPTl9GQUlMRUQpOwotCi0JaWYgKCFoYV9sb2NrZWQpCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JLyogQnVpbGQgZmFicmljIHBvcnQgbG9nb3V0IG1haWxib3ggSU9DQi4gKi8KLQltYnhlbnRyeSA9IHFsYTJ4MDBfZ2V0X21ieF9pb2NiX2VudHJ5KGhhLCBpb2Rlc2MtPnNpZ25hdHVyZSk7Ci0JaWYgKG1ieGVudHJ5ID09IE5VTEwpIHsKLQkJaWYgKCFoYV9sb2NrZWQpCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JCXJldHVybiAoUUxBX0ZVTkNUSU9OX0ZBSUxFRCk7Ci0JfQotCW1ieGVudHJ5LT5tYjAgPSBfX2NvbnN0YW50X2NwdV90b19sZTE2KE1CQ19MT0dPVVRfRkFCUklDX1BPUlQpOwotCW1ieGVudHJ5LT5tYjEgPSBtYnhlbnRyeS0+bG9vcF9pZC5leHRlbmRlZCA9Ci0JICAgIGNwdV90b19sZTE2KGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCk7Ci0Jd21iKCk7Ci0KLQlxbGEyeDAwX2FkZF9pb2Rlc2NfdGltZXIoaW9kZXNjKTsKLQotCS8qIElzc3VlIGNvbW1hbmQgdG8gSVNQLiAqLwotCXFsYTJ4MDBfaXNwX2NtZChoYSk7Ci0KLQlpZiAoIWhhX2xvY2tlZCkKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKLQotCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IFNlbmRpbmcgTG9nb3V0IElPQ0IgKCUwOHgpIHRvIFsleF0uXG4iLAotCSAgICBoYS0+aG9zdF9ubywgaW9kZXNjLT5zaWduYXR1cmUsIGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCkpOwotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9zZW5kX2xvZ291dF9pb2NiX2NiKCkgLSBGYWJyaWMgcG9ydCBsb2dvdXQgSU9DQiBjYWxsYmFjay4KLSAqIEBoYTogSEEgY29udGV4dAotICogQGlvZGVzYzogaW8gZGVzY3JpcHRvcgotICogQG1ieHN0YXQ6IG1haWxib3ggc3RhdHVzIElPQ0IKLSAqCi0gKiBSZXR1cm5zIFFMQV9TVUNDRVNTIGlmIEBpb2Rlc2MgY2FuIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIsIGVsc2UsIEBpb2Rlc2MKLSAqIHdpbGwgYmUgdXNlZCBmb3IgYSByZXRyeS4KLSAqLwotc3RhdGljIGludAotcWxhMngwMF9zZW5kX2xvZ291dF9pb2NiX2NiKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2MsCi0gICAgc3RydWN0IG1ieF9lbnRyeSAqbWJ4c3RhdCkKLXsKLQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dvdXQgSU9DQiAtLSBzZW50IHRvIFsleC8lMDJ4JTAyeCUwMnhdLCAiCi0JICAgICJzdGF0dXM9JXggbWIwPSV4IG1iMT0leC5cbiIsIGhhLT5ob3N0X25vLAotCSAgICBpb2Rlc2MtPnJlbW90ZV9mY3BvcnQtPmxvb3BfaWQsCi0JICAgIGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkgICAgaW9kZXNjLT5yZW1vdGVfZmNwb3J0LT5kX2lkLmIuYXJlYSwKLQkgICAgaW9kZXNjLT5yZW1vdGVfZmNwb3J0LT5kX2lkLmIuYWxfcGEsIGxlMTZfdG9fY3B1KG1ieHN0YXQtPnN0YXR1cyksCi0JICAgIGxlMTZfdG9fY3B1KG1ieHN0YXQtPm1iMCksIGxlMTZfdG9fY3B1KG1ieHN0YXQtPm1iMSkpKTsKLQotCXJldHVybiAoUUxBX1NVQ0NFU1MpOwotfQotCi0KLS8qKgotICogcWxhMngwMF9zZW5kX2xvZ2luX2lvY2IoKSAtIElzc3VlIGEgZmFicmljIHBvcnQgbG9naW4gSU9DQiB0byB0aGUgZmlybXdhcmUuCi0gKiBAaGE6IEhBIGNvbnRleHQKLSAqIEBpb2Rlc2M6IGlvIGRlc2NyaXB0b3IKLSAqIEBkX2lkOiBwb3J0IGlkIGZvciBkZXZpY2UKLSAqIEBoYV9sb2NrZWQ6IGlzIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIHRoZSBoYXJkd2FyZSBsb2NrCi0gKgotICogUmV0dXJucyBRTEFfU1VDQ0VTUyBpZiB0aGUgSU9DQiB3YXMgaXNzdWVkLgotICovCi1zdGF0aWMgaW50Ci1xbGEyeDAwX3NlbmRfbG9naW5faW9jYihzY3NpX3FsYV9ob3N0X3QgKmhhLCBzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqaW9kZXNjLAotICAgIHBvcnRfaWRfdCAqZF9pZCwgaW50IGhhX2xvY2tlZCkKLXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKLQlzdHJ1Y3QgbWJ4X2VudHJ5ICptYnhlbnRyeTsKLQotCS8qIFNlbmQgbWFya2VyIGlmIHJlcXVpcmVkLiAqLwotCWlmIChxbGEyeDAwX2lzc3VlX21hcmtlcihoYSwgaGFfbG9ja2VkKSAhPSBRTEFfU1VDQ0VTUykKLQkJcmV0dXJuIChRTEFfRlVOQ1RJT05fRkFJTEVEKTsKLQotCWlmICghaGFfbG9ja2VkKQotCQlzcGluX2xvY2tfaXJxc2F2ZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKLQotCS8qIEJ1aWxkIGZhYnJpYyBwb3J0IGxvZ2luIG1haWxib3ggSU9DQi4gKi8KLQltYnhlbnRyeSA9IHFsYTJ4MDBfZ2V0X21ieF9pb2NiX2VudHJ5KGhhLCBpb2Rlc2MtPnNpZ25hdHVyZSk7Ci0JaWYgKG1ieGVudHJ5ID09IE5VTEwpIHsKLQkJaWYgKCFoYV9sb2NrZWQpCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOwotCi0JCXJldHVybiAoUUxBX0ZVTkNUSU9OX0ZBSUxFRCk7Ci0JfQotCW1ieGVudHJ5LT5tYjAgPSBfX2NvbnN0YW50X2NwdV90b19sZTE2KE1CQ19MT0dJTl9GQUJSSUNfUE9SVCk7Ci0JbWJ4ZW50cnktPm1iMSA9IG1ieGVudHJ5LT5sb29wX2lkLmV4dGVuZGVkID0KLQkgICAgY3B1X3RvX2xlMTYoaW9kZXNjLT5yZW1vdGVfZmNwb3J0LT5sb29wX2lkKTsKLQltYnhlbnRyeS0+bWIyID0gY3B1X3RvX2xlMTYoZF9pZC0+Yi5kb21haW4pOwotCW1ieGVudHJ5LT5tYjMgPSBjcHVfdG9fbGUxNihkX2lkLT5iLmFyZWEgPDwgOCB8IGRfaWQtPmIuYWxfcGEpOwotCW1ieGVudHJ5LT5tYjEwID0gX19jb25zdGFudF9jcHVfdG9fbGUxNihCSVRfMCk7Ci0Jd21iKCk7Ci0KLQlxbGEyeDAwX2FkZF9pb2Rlc2NfdGltZXIoaW9kZXNjKTsKLQotCS8qIElzc3VlIGNvbW1hbmQgdG8gSVNQLiAqLwotCXFsYTJ4MDBfaXNwX2NtZChoYSk7Ci0KLQlpZiAoIWhhX2xvY2tlZCkKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKLQotCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IFNlbmRpbmcgTG9naW4gSU9DQiAoJTA4eCkgdG8gIgotCSAgICAiWyV4LyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywgaW9kZXNjLT5zaWduYXR1cmUsCi0JICAgIGlvZGVzYy0+cmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwgZF9pZC0+Yi5kb21haW4sIGRfaWQtPmIuYXJlYSwKLQkgICAgZF9pZC0+Yi5hbF9wYSkpOwotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9zZW5kX2xvZ2luX2lvY2JfY2IoKSAtIEZhYnJpYyBwb3J0IGxvZ291dCBJT0NCIGNhbGxiYWNrLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKiBAaW9kZXNjOiBpbyBkZXNjcmlwdG9yCi0gKiBAbWJ4c3RhdDogbWFpbGJveCBzdGF0dXMgSU9DQgotICoKLSAqIFJldHVybnMgUUxBX1NVQ0NFU1MgaWYgQGlvZGVzYyBjYW4gYmUgZnJlZWQgYnkgdGhlIGNhbGxlciwgZWxzZSwgQGlvZGVzYwotICogd2lsbCBiZSB1c2VkIGZvciBhIHJldHJ5LgotICovCi1zdGF0aWMgaW50Ci1xbGEyeDAwX3NlbmRfbG9naW5faW9jYl9jYihzY3NpX3FsYV9ob3N0X3QgKmhhLCBzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqaW9kZXNjLAotICAgIHN0cnVjdCBtYnhfZW50cnkgKm1ieHN0YXQpCi17Ci0JaW50IHJ2YWw7Ci0JZmNfcG9ydF90ICpmY3BvcnQsICpyZW1vdGVfZmNwb3J0LCAqZXhpc3RfZmNwb3J0OwotCXN0cnVjdCBpb19kZXNjcmlwdG9yICphYm9ydF9pb2Rlc2MsICpsb2dpbl9pb2Rlc2M7Ci0JdWludDE2X3Qgc3RhdHVzLCBtYls4XTsKLQl1aW50MTZfdCByZXVzZTsKLQl1aW50MTZfdCByZW1vdGVfbG9vcGlkOwotCXBvcnRfaWRfdCByZW1vdGVfZGlkLCBpbnVzZV9kaWQ7Ci0KLQlyZW1vdGVfZmNwb3J0ID0gaW9kZXNjLT5yZW1vdGVfZmNwb3J0OwotCi0JLyogT25seSBwcm9jZXNzIHRoZSBsYXN0IGNvbW1hbmQuICovCi0JaWYgKHJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCAhPSBpb2Rlc2MtPmlkeCkgewotCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dpbiBJT0NCIC0tIGlnbm9yaW5nLCBzZW50IHRvICIKLQkJICAgICJbJTAyeCUwMnglMDJ4XSwgZXhwZWN0ZWQgJXgsIHJlY2VpdmVkICV4LlxuIiwKLQkJICAgIGhhLT5ob3N0X25vLCBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsCi0JCSAgICBpb2Rlc2MtPmRfaWQuYi5hbF9wYSwgcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50LAotCQkgICAgaW9kZXNjLT5pZHgpKTsKLQotCQkvKiBGcmVlIFJTQ04gZmNwb3J0IHJlc291cmNlcy4gKi8KLQkJaWYgKHJlbW90ZV9mY3BvcnQtPnBvcnRfdHlwZSA9PSBGQ1RfUlNDTikgewotCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSBGcmVlaW5nIFJTQ04gIgotCQkJICAgICJmY3BvcnQgJXAgWyV4LyUwMnglMDJ4JTAyeF0gZ2l2ZW4gaWdub3JlZCBMb2dpbiAiCi0JCQkgICAgIklPQ0IuXG4iLCBoYS0+aG9zdF9ubywgcmVtb3RlX2ZjcG9ydCwKLQkJCSAgICByZW1vdGVfZmNwb3J0LT5sb29wX2lkLAotCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5kb21haW4sCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJCWxpc3RfZGVsKCZyZW1vdGVfZmNwb3J0LT5saXN0KTsKLQkJCWtmcmVlKHJlbW90ZV9mY3BvcnQpOwotCQl9Ci0JCXJldHVybiAoUUxBX1NVQ0NFU1MpOwotCX0KLQotCXN0YXR1cyA9IGxlMTZfdG9fY3B1KG1ieHN0YXQtPnN0YXR1cyk7Ci0JbWJbMF0gPSBsZTE2X3RvX2NwdShtYnhzdGF0LT5tYjApOwotCW1iWzFdID0gbGUxNl90b19jcHUobWJ4c3RhdC0+bWIxKTsKLQltYlsyXSA9IGxlMTZfdG9fY3B1KG1ieHN0YXQtPm1iMik7Ci0JbWJbNl0gPSBsZTE2X3RvX2NwdShtYnhzdGF0LT5tYjYpOwotCW1iWzddID0gbGUxNl90b19jcHUobWJ4c3RhdC0+bWI3KTsKLQotCS8qIEdvb2Qgc3RhdHVzPyAqLwotCWlmICgoc3RhdHVzID09IENTX0NPTVBMRVRFIHx8IHN0YXR1cyA9PSBDU19DT01QTEVURV9DSEtDT05EKSAmJgotCSAgICBtYlswXSA9PSBNQlNfQ09NTUFORF9DT01QTEVURSkgewotCi0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgLS0gc3RhdHVzPSV4IG1iMT0leCBwbj0iCi0JCSAgICAiJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnguXG4iLCBoYS0+aG9zdF9ubywgc3RhdHVzLAotCQkgICAgbWJbMV0sIG1ieHN0YXQtPnBvcnRfbmFtZVswXSwgbWJ4c3RhdC0+cG9ydF9uYW1lWzFdLAotCQkgICAgbWJ4c3RhdC0+cG9ydF9uYW1lWzJdLCBtYnhzdGF0LT5wb3J0X25hbWVbM10sCi0JCSAgICBtYnhzdGF0LT5wb3J0X25hbWVbNF0sIG1ieHN0YXQtPnBvcnRfbmFtZVs1XSwKLQkJICAgIG1ieHN0YXQtPnBvcnRfbmFtZVs2XSwgbWJ4c3RhdC0+cG9ydF9uYW1lWzddKSk7Ci0KLQkJbWVtY3B5KHJlbW90ZV9mY3BvcnQtPm5vZGVfbmFtZSwgbWJ4c3RhdC0+bm9kZV9uYW1lLCBXV05fU0laRSk7Ci0JCW1lbWNweShyZW1vdGVfZmNwb3J0LT5wb3J0X25hbWUsIG1ieHN0YXQtPnBvcnRfbmFtZSwgV1dOX1NJWkUpOwotCi0JCS8qIElzIHRoZSBkZXZpY2UgYWxyZWFkeSBpbiBvdXIgZmNwb3J0cyBsaXN0PyAqLwotCQlpZiAocmVtb3RlX2ZjcG9ydC0+cG9ydF90eXBlICE9IEZDVF9SU0NOKSB7Ci0JCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dpbiBJT0NCIC0tIG1hcmtpbmcgIgotCQkJICAgICJbJXgvJTAyeCUwMnglMDJ4XSBvbmxpbmUuXG4iLCBoYS0+aG9zdF9ubywKLQkJCSAgICByZW1vdGVfZmNwb3J0LT5sb29wX2lkLAotCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5kb21haW4sCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJCXFsYTJ4MDBfdXBkYXRlX2xvZ2luX2ZjcG9ydChoYSwgbWJ4c3RhdCwgcmVtb3RlX2ZjcG9ydCk7Ci0KLQkJCXJldHVybiAoUUxBX1NVQ0NFU1MpOwotCQl9Ci0KLQkJLyogRG9lcyB0aGUgUlNDTiBwb3J0bmFtZSBhbHJlYWR5IGV4aXN0IGluIG91ciBmY3BvcnRzIGxpc3Q/ICovCi0JCWV4aXN0X2ZjcG9ydCA9IE5VTEw7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkoZmNwb3J0LCAmaGEtPmZjcG9ydHMsIGxpc3QpIHsKLQkJCWlmIChtZW1jbXAocmVtb3RlX2ZjcG9ydC0+cG9ydF9uYW1lLCBmY3BvcnQtPnBvcnRfbmFtZSwKLQkJCSAgICBXV05fU0laRSkgPT0gMCkgewotCQkJCWV4aXN0X2ZjcG9ydCA9IGZjcG9ydDsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQlpZiAoZXhpc3RfZmNwb3J0ICE9IE5VTEwpIHsKLQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgLS0gZm91bmQgUlNDTiAiCi0JCQkgICAgImZjcG9ydCBpbiBmY3BvcnRzIGxpc3QgWyVwXS5cbiIsIGhhLT5ob3N0X25vLAotCQkJICAgIGV4aXN0X2ZjcG9ydCkpOwotCi0JCQkvKiBBYm9ydCBhbnkgQURJU0MgdGhhdCBjb3VsZCBoYXZlIGJlZW4gc2VudC4gKi8KLQkJCWlmIChleGlzdF9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCAhPSBpb2Rlc2MtPmlkeCAmJgotCQkJICAgIGV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50IDwKLQkJCSAgICBNQVhfSU9fREVTQ1JJUFRPUlMgJiYKLQkJCSAgICBoYS0+aW9fZGVzY3JpcHRvcnNbZXhpc3RfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnRdLgotCQkJICAgIGNiX2lkeCA9PSBBRElTQ19QT1JUX0lPQ0JfQ0IpIHsKLQotCQkJCWFib3J0X2lvZGVzYyA9IHFsYTJ4MDBfYWxsb2NfaW9kZXNjKGhhKTsKLQkJCQlpZiAoYWJvcnRfaW9kZXNjKSB7Ci0JCQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgIgotCQkJCQkgICAgIi0tIGlzc3VpbmcgYWJvcnQgdG8gb3V0c3RhbmRpbmcgIgotCQkJCQkgICAgIkFkaXNjIFsleC8lMDJ4JTAyeCUwMnhdLlxuIiwKLQkJCQkJICAgIGhhLT5ob3N0X25vLCByZW1vdGVfZmNwb3J0LT5sb29wX2lkLAotCQkJCQkgICAgZXhpc3RfZmNwb3J0LT5kX2lkLmIuZG9tYWluLAotCQkJCQkgICAgZXhpc3RfZmNwb3J0LT5kX2lkLmIuYXJlYSwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJCQkJYWJvcnRfaW9kZXNjLT5jYl9pZHggPSBBQk9SVF9JT0NCX0NCOwotCQkJCQlhYm9ydF9pb2Rlc2MtPmRfaWQuYjI0ID0KLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iMjQ7Ci0JCQkJCWFib3J0X2lvZGVzYy0+cmVtb3RlX2ZjcG9ydCA9Ci0JCQkJCSAgICBleGlzdF9mY3BvcnQ7Ci0JCQkJCWV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID0KLQkJCQkJICAgIGFib3J0X2lvZGVzYy0+aWR4OwotCQkJCQlxbGEyeDAwX3NlbmRfYWJvcnRfaW9jYihoYSwKLQkJCQkJICAgIGFib3J0X2lvZGVzYywgaGEtPmlvX2Rlc2NyaXB0b3JzWwotCQkJCQkgICAgIGV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50XS4KLQkJCQkJICAgICAgc2lnbmF0dXJlLCAxKTsKLQkJCQl9IGVsc2UgewotCQkJCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dpbiBJT0NCICIKLQkJCQkJICAgICItLSB1bmFibGUgdG8gYWJvcnQgb3V0c3RhbmRpbmcgIgotCQkJCQkgICAgIkFkaXNjIFsleC8lMDJ4JTAyeCUwMnhdLlxuIiwKLQkJCQkJICAgIGhhLT5ob3N0X25vLCByZW1vdGVfZmNwb3J0LT5sb29wX2lkLAotCQkJCQkgICAgZXhpc3RfZmNwb3J0LT5kX2lkLmIuZG9tYWluLAotCQkJCQkgICAgZXhpc3RfZmNwb3J0LT5kX2lkLmIuYXJlYSwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0JCQkJfQotCQkJfQotCi0JCQkvKgotCQkJICogSWYgdGhlIGV4aXN0aW5nIGZjcG9ydCBpcyB3YWl0aW5nIHRvIHNlbmQgYW4gQURJU0MKLQkJCSAqIG9yIExPR0lOLCB0aGVuIHJldXNlIHJlbW90ZSBmY3BvcnQgKFJTQ04pIHRvCi0JCQkgKiBjb250aW51ZSB3YWl0aW5nLgotCQkJICovCi0JCQlyZXVzZSA9IDA7Ci0JCQlyZW1vdGVfbG9vcGlkID0gcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZDsKLQkJCXJlbW90ZV9kaWQuYjI0ID0gcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iMjQ7Ci0JCQlpZiAoZXhpc3RfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPT0KLQkJCSAgICBJT0RFU0NfQURJU0NfTkVFREVEIHx8Ci0JCQkgICAgZXhpc3RfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPT0KLQkJCSAgICBJT0RFU0NfTE9HSU5fTkVFREVEKSB7Ci0JCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSAiCi0JCQkJICAgICJleGlzdGluZyBmY3BvcnQgWyV4LyUwMnglMDJ4JTAyeF0gIgotCQkJCSAgICAid2FpdGluZyBmb3IgSU8gZGVzY3JpcHRvciwgcmV1c2UgUlNDTiAiCi0JCQkJICAgICJmY3BvcnQuXG4iLCBoYS0+aG9zdF9ubywKLQkJCQkgICAgZXhpc3RfZmNwb3J0LT5sb29wX2lkLAotCQkJCSAgICBleGlzdF9mY3BvcnQtPmRfaWQuYi5kb21haW4sCi0JCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJCQlyZXVzZSsrOwotCQkJCXJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9Ci0JCQkJICAgIGV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50OwotCQkJCWV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID0KLQkJCQkgICAgSU9ERVNDX0lOVkFMSURfSU5ERVg7Ci0JCQkJcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCA9IGV4aXN0X2ZjcG9ydC0+bG9vcF9pZDsKLQkJCQlyZW1vdGVfZmNwb3J0LT5kX2lkLmIyNCA9Ci0JCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iMjQ7Ci0JCQl9Ci0KLQkJCS8qIExvZ291dCB0aGUgb2xkIGxvb3BpZC4gKi8KLQkJCWlmICghcmV1c2UgJiYKLQkJCSAgICBleGlzdF9mY3BvcnQtPmxvb3BfaWQgIT0gcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCAmJgotCQkJICAgIGV4aXN0X2ZjcG9ydC0+bG9vcF9pZCAhPSBGQ19OT19MT09QX0lEKSB7Ci0JCQkJbG9naW5faW9kZXNjID0gcWxhMngwMF9hbGxvY19pb2Rlc2MoaGEpOwotCQkJCWlmIChsb2dpbl9pb2Rlc2MpIHsKLQkJCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAiCi0JCQkJCSAgICAiLS0gaXNzdWluZyBsb2dvdXQgdG8gZnJlZSBvbGQgIgotCQkJCQkgICAgImxvb3AgaWQgWyV4LyUwMnglMDJ4JTAyeF0uXG4iLAotCQkJCQkgICAgaGEtPmhvc3Rfbm8sIGV4aXN0X2ZjcG9ydC0+bG9vcF9pZCwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkJCSAgICBleGlzdF9mY3BvcnQtPmRfaWQuYi5hbF9wYSkpOwotCi0JCQkJCWxvZ2luX2lvZGVzYy0+Y2JfaWR4ID0KLQkJCQkJICAgIExPR09VVF9QT1JUX0lPQ0JfQ0I7Ci0JCQkJCWxvZ2luX2lvZGVzYy0+ZF9pZC5iMjQgPQotCQkJCQkgICAgZXhpc3RfZmNwb3J0LT5kX2lkLmIyNDsKLQkJCQkJbG9naW5faW9kZXNjLT5yZW1vdGVfZmNwb3J0ID0KLQkJCQkJICAgIGV4aXN0X2ZjcG9ydDsKLQkJCQkJZXhpc3RfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPQotCQkJCQkgICAgbG9naW5faW9kZXNjLT5pZHg7Ci0JCQkJCXFsYTJ4MDBfc2VuZF9sb2dvdXRfaW9jYihoYSwKLQkJCQkJICAgIGxvZ2luX2lvZGVzYywgMSk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJLyogUmFuIG91dCBvZiBJTyBkZXNjcmlwdGlvcnMuICovCi0JCQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgIgotCQkJCQkgICAgIi0tIHVuYWJsZSB0byBsb2dvdXQgdG8gZnJlZSBvbGQgIgotCQkJCQkgICAgImxvb3AgaWQgWyV4LyUwMnglMDJ4JTAyeF0uXG4iLAotCQkJCQkgICAgaGEtPmhvc3Rfbm8sIGV4aXN0X2ZjcG9ydC0+bG9vcF9pZCwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkJCQkJICAgIGV4aXN0X2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkJCSAgICBleGlzdF9mY3BvcnQtPmRfaWQuYi5hbF9wYSkpOwotCi0JCQkJCWV4aXN0X2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID0KLQkJCQkJICAgIElPREVTQ19JTlZBTElEX0lOREVYOwotCQkJCX0KLQotCQkJfQotCi0JCQkvKiBVcGRhdGUgZXhpc3RpbmcgZmNwb3J0IHdpdGggcmVtb3RlIGZjcG9ydCBpbmZvLiAqLwotCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSBtYXJraW5nICIKLQkJCSAgICAiZXhpc3RpbmcgZmNwb3J0IFsleC8lMDJ4JTAyeCUwMnhdIG9ubGluZS5cbiIsCi0JCQkgICAgaGEtPmhvc3Rfbm8sIHJlbW90ZV9sb29waWQsIHJlbW90ZV9kaWQuYi5kb21haW4sCi0JCQkgICAgcmVtb3RlX2RpZC5iLmFyZWEsIHJlbW90ZV9kaWQuYi5hbF9wYSkpOwotCi0JCQltZW1jcHkoZXhpc3RfZmNwb3J0LT5ub2RlX25hbWUsCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+bm9kZV9uYW1lLCBXV05fU0laRSk7Ci0JCQlleGlzdF9mY3BvcnQtPmxvb3BfaWQgPSByZW1vdGVfbG9vcGlkOwotCQkJZXhpc3RfZmNwb3J0LT5kX2lkLmIyNCA9IHJlbW90ZV9kaWQuYjI0OwotCQkJcWxhMngwMF91cGRhdGVfbG9naW5fZmNwb3J0KGhhLCBtYnhzdGF0LCBleGlzdF9mY3BvcnQpOwotCi0JCQkvKiBGaW5hbGx5LCBmcmVlIHRoZSByZW1vdGUgKFJTQ04pIGZjcG9ydC4gKi8KLQkJCWlmICghcmV1c2UpIHsKLQkJCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dpbiBJT0NCIC0tICIKLQkJCQkgICAgIkZyZWVpbmcgUlNDTiBmY3BvcnQgJXAgIgotCQkJCSAgICAiWyV4LyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydCwgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hbF9wYSkpOwotCi0JCQkJbGlzdF9kZWwoJnJlbW90ZV9mY3BvcnQtPmxpc3QpOwotCQkJCWtmcmVlKHJlbW90ZV9mY3BvcnQpOwotCQkJfQotCi0JCQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLQkJfQotCi0JCS8qCi0JCSAqIEEgbmV3IGRldmljZSBoYXMgYmVlbiBhZGRlZCwgbW92ZSB0aGUgUlNDTiBmY3BvcnQgdG8gb3VyCi0JCSAqIGZjcG9ydHMgbGlzdC4KLQkJICovCi0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgLS0gYWRkaW5nIFJTQ04gZmNwb3J0ICIKLQkJICAgICJbJXgvJTAyeCUwMnglMDJ4XSB0byBmY3BvcnRzIGxpc3QuXG4iLCBoYS0+aG9zdF9ubywKLQkJICAgIHJlbW90ZV9mY3BvcnQtPmxvb3BfaWQsIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5kb21haW4sCi0JCSAgICByZW1vdGVfZmNwb3J0LT5kX2lkLmIuYXJlYSwgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJbGlzdF9kZWwoJnJlbW90ZV9mY3BvcnQtPmxpc3QpOwotCQlyZW1vdGVfZmNwb3J0LT5mbGFncyA9IChGQ0ZfUkxDX1NVUFBPUlQgfCBGQ0ZfUkVTQ0FOX05FRURFRCk7Ci0JCXFsYTJ4MDBfdXBkYXRlX2xvZ2luX2ZjcG9ydChoYSwgbWJ4c3RhdCwgcmVtb3RlX2ZjcG9ydCk7Ci0JCWxpc3RfYWRkX3RhaWwoJnJlbW90ZV9mY3BvcnQtPmxpc3QsICZoYS0+ZmNwb3J0cyk7Ci0JCXNldF9iaXQoRkNQT1JUX1JFU0NBTl9ORUVERUQsICZoYS0+ZHBjX2ZsYWdzKTsKLQl9IGVsc2UgewotCQkvKiBIYW5kbGUgbG9naW4gZmFpbHVyZS4gKi8KLQkJaWYgKHJlbW90ZV9mY3BvcnQtPmxvZ2luX3JldHJ5ICE9IDApIHsKLQkJCWlmIChtYlswXSA9PSBNQlNfTE9PUF9JRF9VU0VEKSB7Ci0JCQkJaW51c2VfZGlkLmIuZG9tYWluID0gTFNCKG1iWzFdKTsKLQkJCQlpbnVzZV9kaWQuYi5hcmVhID0gTVNCKG1iWzJdKTsKLQkJCQlpbnVzZV9kaWQuYi5hbF9wYSA9IExTQihtYlsyXSk7Ci0KLQkJCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBMb2dpbiBJT0NCIC0tIGxvb3AgIgotCQkJCSAgICAiaWQgWyV4XSB1c2VkIGJ5IHBvcnQgaWQgWyUwMnglMDJ4JTAyeF0uXG4iLAotCQkJCSAgICBoYS0+aG9zdF9ubywgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCQkgICAgaW51c2VfZGlkLmIuZG9tYWluLCBpbnVzZV9kaWQuYi5hcmVhLAotCQkJCSAgICBpbnVzZV9kaWQuYi5hbF9wYSkpOwotCi0JCQkJaWYgKHJlbW90ZV9mY3BvcnQtPmRfaWQuYjI0ID09Ci0JCQkJICAgIElOVkFMSURfUE9SVF9JRCkgewotCQkJCQkvKgotCQkJCQkgKiBJbnZhbGlkIHBvcnQgaWQgbWVhbnMgd2UgYXJlIHRyeWluZwotCQkJCQkgKiB0byBsb2dpbiB0byBhIHJlbW90ZSBwb3J0IHdpdGgganVzdAotCQkJCQkgKiBhIGxvb3AgaWQgd2l0aG91dCBrbm93aW5nIGFib3V0IHRoZQotCQkJCQkgKiBwb3J0IGlkLiAgQ29weSB0aGUgcG9ydCBpZCBhbmQgdHJ5Ci0JCQkJCSAqIGFnYWluLgotCQkJCQkgKi8KLQkJCQkJcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iMjQgPSBpbnVzZV9kaWQuYjI0OwotCQkJCQlpb2Rlc2MtPmRfaWQuYjI0ID0gaW51c2VfZGlkLmIyNDsKLQkJCQl9IGVsc2UgewotCQkJCQlyZW1vdGVfZmNwb3J0LT5sb29wX2lkKys7Ci0JCQkJCXJ2YWwgPSBxbGEyeDAwX2ZpbmRfbmV3X2xvb3BfaWQoaGEsCi0JCQkJCSAgICByZW1vdGVfZmNwb3J0KTsKLQkJCQkJaWYgKHJ2YWwgPT0gUUxBX0ZVTkNUSU9OX0ZBSUxFRCkgewotCQkJCQkJLyogTm8gbW9yZSBsb29wIGlkcy4gKi8KLQkJCQkJCXJldHVybiAoUUxBX1NVQ0NFU1MpOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBlbHNlIGlmIChtYlswXSA9PSBNQlNfUE9SVF9JRF9VU0VEKSB7Ci0JCQkJLyoKLQkJCQkgKiBEZXZpY2UgaGFzIGFub3RoZXIgbG9vcCBJRC4gIFRoZSBmaXJtd2FyZQotCQkJCSAqIGdyb3VwIHJlY29tbWVuZHMgdGhlIGRyaXZlciBwZXJmb3JtIGFuCi0JCQkJICogaW1wbGljaXQgbG9naW4gd2l0aCB0aGUgc3BlY2lmaWVkIElELgotCQkJCSAqLwotCQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgLS0gcG9ydCAiCi0JCQkJICAgICJpZCBbJTAyeCUwMnglMDJ4XSBhbHJlYWR5IGFzc2lnbmVkIHRvICIKLQkJCQkgICAgImxvb3AgaWQgWyV4XS5cbiIsIGhhLT5ob3N0X25vLAotCQkJCSAgICBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsCi0JCQkJICAgIGlvZGVzYy0+ZF9pZC5iLmFsX3BhLCBtYlsxXSkpOwotCi0JCQkJcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCA9IG1iWzFdOwotCi0JCQl9IGVsc2UgewotCQkJCS8qIFVuYWJsZSB0byBwZXJmb3JtIGxvZ2luLCB0cnkgYWdhaW4uICovCi0JCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSAiCi0JCQkJICAgICJmYWlsZWQgbG9naW4gWyV4LyUwMnglMDJ4JTAyeF0sIHN0YXR1cz0leCAiCi0JCQkJICAgICJtYjA9JXggbWIxPSV4IG1iMj0leCBtYjY9JXggbWI3PSV4LlxuIiwKLQkJCQkgICAgaGEtPmhvc3Rfbm8sIHJlbW90ZV9mY3BvcnQtPmxvb3BfaWQsCi0JCQkJICAgIGlvZGVzYy0+ZF9pZC5iLmRvbWFpbiwgaW9kZXNjLT5kX2lkLmIuYXJlYSwKLQkJCQkgICAgaW9kZXNjLT5kX2lkLmIuYWxfcGEsIHN0YXR1cywgbWJbMF0sIG1iWzFdLAotCQkJCSAgICBtYlsyXSwgbWJbNl0sIG1iWzddKSk7Ci0JCQl9Ci0KLQkJCS8qIFJlaXNzdWUgTG9naW4gd2l0aCB0aGUgc2FtZSBJTyBkZXNjcmlwdG9yLiAqLwotCQkJaW9kZXNjLT5zaWduYXR1cmUgPQotCQkJICAgIHFsYTJ4MDBfaW9kZXNjX3RvX2hhbmRsZShpb2Rlc2MpOwotCQkJaW9kZXNjLT5jYl9pZHggPSBMT0dJTl9QT1JUX0lPQ0JfQ0I7Ci0JCQlpb2Rlc2MtPmRfaWQuYjI0ID0gcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iMjQ7Ci0JCQlyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBpb2Rlc2MtPmlkeDsKLQkJCXJlbW90ZV9mY3BvcnQtPmxvZ2luX3JldHJ5LS07Ci0KLQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IExvZ2luIElPQ0IgLS0gcmV0cnlpbmcgIgotCQkJICAgICJsb2dpbiB0byBbJXgvJTAyeCUwMnglMDJ4XSAoJWQpLlxuIiwgaGEtPmhvc3Rfbm8sCi0JCQkgICAgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCSAgICByZW1vdGVfZmNwb3J0LT5kX2lkLmIuZG9tYWluLAotCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hcmVhLAotCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hbF9wYSwKLQkJCSAgICByZW1vdGVfZmNwb3J0LT5sb2dpbl9yZXRyeSkpOwotCi0JCQlxbGEyeDAwX3NlbmRfbG9naW5faW9jYihoYSwgaW9kZXNjLAotCQkJICAgICZyZW1vdGVfZmNwb3J0LT5kX2lkLCAxKTsKLQotCQkJcmV0dXJuIChRTEFfRlVOQ1RJT05fRkFJTEVEKTsKLQkJfSBlbHNlIHsKLQkJCS8qIE5vIG1vcmUgbG9naW5zLCBtYXJrIGRldmljZSBkZWFkLiAqLwotCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSBmYWlsZWQgIgotCQkJICAgICJsb2dpbiBbJXgvJTAyeCUwMnglMDJ4XSBhZnRlciByZXRyaWVzLCBzdGF0dXM9JXggIgotCQkJICAgICJtYjA9JXggbWIxPSV4IG1iMj0leCBtYjY9JXggbWI3PSV4LlxuIiwKLQkJCSAgICBoYS0+aG9zdF9ubywgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCSAgICBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsCi0JCQkgICAgaW9kZXNjLT5kX2lkLmIuYWxfcGEsIHN0YXR1cywgbWJbMF0sIG1iWzFdLAotCQkJICAgIG1iWzJdLCBtYls2XSwgbWJbN10pKTsKLQotCQkJYXRvbWljX3NldCgmcmVtb3RlX2ZjcG9ydC0+c3RhdGUsIEZDU19ERVZJQ0VfREVBRCk7Ci0JCQlpZiAocmVtb3RlX2ZjcG9ydC0+cG9ydF90eXBlID09IEZDVF9SU0NOKSB7Ci0JCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogTG9naW4gSU9DQiAtLSAiCi0JCQkJICAgICJGcmVlaW5nIGRlYWQgUlNDTiBmY3BvcnQgJXAgIgotCQkJCSAgICAiWyV4LyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydCwgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwKLQkJCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCQkJICAgIHJlbW90ZV9mY3BvcnQtPmRfaWQuYi5hbF9wYSkpOwotCi0JCQkJbGlzdF9kZWwoJnJlbW90ZV9mY3BvcnQtPmxpc3QpOwotCQkJCWtmcmVlKHJlbW90ZV9mY3BvcnQpOwotCQkJfQotCQl9Ci0JfQotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLQotLyoqCi0gKiBJTyBkZXNjcmlwdG9yIHByb2Nlc3Npbmcgcm91dGluZXMuCi0gKiovCi0KLS8qKgotICogcWxhMngwMF9hbGxvY19yc2NuX2ZjcG9ydCgpIC0gQWxsb2NhdGUgYW4gUlNDTiB0eXBlIGZjcG9ydC4KLSAqIEBoYTogSEEgY29udGV4dAotICogQGZsYWdzOiBhbGxvY2F0aW9uIGZsYWdzCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBSU0NOIGZjcG9ydCwgb3IgTlVMTCwgaWYgbm9uZSBhdmFpbGFibGUuCi0gKi8KLWZjX3BvcnRfdCAqCi1xbGEyeDAwX2FsbG9jX3JzY25fZmNwb3J0KHNjc2lfcWxhX2hvc3RfdCAqaGEsIGdmcF90IGZsYWdzKQotewotCWZjX3BvcnRfdCAqZmNwb3J0OwotCi0JZmNwb3J0ID0gcWxhMngwMF9hbGxvY19mY3BvcnQoaGEsIGZsYWdzKTsKLQlpZiAoZmNwb3J0ID09IE5VTEwpCi0JCXJldHVybiAoZmNwb3J0KTsKLQotCS8qIFNldHVwIFJTQ04gZmNwb3J0IHN0cnVjdHVyZS4gKi8KLQlmY3BvcnQtPnBvcnRfdHlwZSA9IEZDVF9SU0NOOwotCi0JcmV0dXJuIChmY3BvcnQpOwotfQotCi0vKioKLSAqIHFsYTJ4MDBfaGFuZGxlX3BvcnRfcnNjbigpIC0gSGFuZGxlIHBvcnQgUlNDTi4KLSAqIEBoYTogSEEgY29udGV4dAotICogQHJzY25fZW50cnk6IFJTQ04gZW50cnkKLSAqIEBmY3BvcnQ6IGZjcG9ydCBlbnRyeSB0byB1cGRhdGVkCi0gKgotICogUmV0dXJucyBRTEFfU1VDQ0VTUyBpZiB0aGUgcG9ydCBSU0NOIHdhcyBoYW5kbGVkLgotICovCi1pbnQKLXFsYTJ4MDBfaGFuZGxlX3BvcnRfcnNjbihzY3NpX3FsYV9ob3N0X3QgKmhhLCB1aW50MzJfdCByc2NuX2VudHJ5LAotICAgIGZjX3BvcnRfdCAqa25vd25fZmNwb3J0LCBpbnQgaGFfbG9ja2VkKQotewotCWludAlydmFsOwotCXBvcnRfaWRfdCByc2NuX3BpZDsKLQlmY19wb3J0X3QgKmZjcG9ydCwgKnJlbW90ZV9mY3BvcnQsICpyc2NuX2ZjcG9ydDsKLQlzdHJ1Y3QgaW9fZGVzY3JpcHRvciAqaW9kZXNjOwotCi0JcmVtb3RlX2ZjcG9ydCA9IE5VTEw7Ci0JcnNjbl9mY3BvcnQgPSBOVUxMOwotCi0JLyogUHJlcGFyZSBwb3J0IGlkIGJhc2VkIG9uIGluY29taW5nIGVudHJpZXMuICovCi0JaWYgKGtub3duX2ZjcG9ydCkgewotCQlyc2NuX3BpZC5iMjQgPSBrbm93bl9mY3BvcnQtPmRfaWQuYjI0OwotCQlyZW1vdGVfZmNwb3J0ID0ga25vd25fZmNwb3J0OwotCi0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IEhhbmRsZSBSU0NOIC0tIHByb2Nlc3MgUlNDTiBmb3IgIgotCQkgICAgImZjcG9ydCBbJTAyeCUwMnglMDJ4XS5cbiIsIGhhLT5ob3N0X25vLAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmRvbWFpbiwgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCSAgICByZW1vdGVfZmNwb3J0LT5kX2lkLmIuYWxfcGEpKTsKLQl9IGVsc2UgewotCQlyc2NuX3BpZC5iLmRvbWFpbiA9IExTQihNU1cocnNjbl9lbnRyeSkpOwotCQlyc2NuX3BpZC5iLmFyZWEgPSBNU0IoTFNXKHJzY25fZW50cnkpKTsKLQkJcnNjbl9waWQuYi5hbF9wYSA9IExTQihMU1cocnNjbl9lbnRyeSkpOwotCi0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IEhhbmRsZSBSU0NOIC0tIHByb2Nlc3MgUlNDTiBmb3IgIgotCQkgICAgInBvcnQgaWQgWyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywKLQkJICAgIHJzY25fcGlkLmIuZG9tYWluLCByc2NuX3BpZC5iLmFyZWEsIHJzY25fcGlkLmIuYWxfcGEpKTsKLQotCQkvKgotCQkgKiBTZWFyY2ggZmNwb3J0IGxpc3RzIGZvciBhIGtub3duIGVudHJ5IGF0IHRoZSBzcGVjaWZpZWQgcG9ydAotCQkgKiBJRC4KLQkJICovCi0JCWxpc3RfZm9yX2VhY2hfZW50cnkoZmNwb3J0LCAmaGEtPmZjcG9ydHMsIGxpc3QpIHsKLQkJICAgIGlmIChyc2NuX3BpZC5iMjQgPT0gZmNwb3J0LT5kX2lkLmIyNCkgewotCQkJICAgIHJlbW90ZV9mY3BvcnQgPSBmY3BvcnQ7Ci0JCQkgICAgYnJlYWs7Ci0JCSAgICB9Ci0JCX0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShmY3BvcnQsICZoYS0+cnNjbl9mY3BvcnRzLCBsaXN0KSB7Ci0JCSAgICBpZiAocnNjbl9waWQuYjI0ID09IGZjcG9ydC0+ZF9pZC5iMjQpIHsKLQkJCSAgICByc2NuX2ZjcG9ydCA9IGZjcG9ydDsKLQkJCSAgICBicmVhazsKLQkJICAgIH0KLQkJfQotCQlpZiAocmVtb3RlX2ZjcG9ydCA9PSBOVUxMKQotCQkgICAgcmVtb3RlX2ZjcG9ydCA9IHJzY25fZmNwb3J0OwotCX0KLQotCS8qCi0JICogSWYgdGhlIHBvcnQgaXMgYWxyZWFkeSBpbiBvdXIgZmNwb3J0IGxpc3QgYW5kIG9ubGluZSwgc2VuZCBhbiBBRElTQwotCSAqIHRvIHNlZSBpZiBpdCdzIHN0aWxsIGFsaXZlLiAgSXNzdWUgbG9naW4gaWYgYSBuZXcgZmNwb3J0IG9yIHRoZSBrbm93bgotCSAqIGZjcG9ydCBpcyBjdXJyZW50bHkgb2ZmbGluZS4KLQkgKi8KLQlpZiAocmVtb3RlX2ZjcG9ydCkgewotCQkvKgotCQkgKiBObyBuZWVkIHRvIHNlbmQgcmVxdWVzdCBpZiB0aGUgcmVtb3RlIGZjcG9ydCBpcyBjdXJyZW50bHkKLQkJICogd2FpdGluZyBmb3IgYW4gYXZhaWxhYmxlIGlvIGRlc2NyaXB0b3IuCi0JCSAqLwotCQlpZiAoa25vd25fZmNwb3J0ID09IE5VTEwgJiYKLQkJICAgIChyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPT0gSU9ERVNDX0FESVNDX05FRURFRCB8fAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID09IElPREVTQ19MT0dJTl9ORUVERUQpKSB7Ci0JCQkvKgotCQkJICogSWYgcHJldmlvdXMgd2FpdGluZyBpbyBkZXNjcmlwdG9yIGlzIGFuIEFESVNDLCB0aGVuCi0JCQkgKiB0aGUgbmV3IFJTQ04gbWF5IGNvbWUgZnJvbSBhIG5ldyByZW1vdGUgZmNwb3J0IGJlaW5nCi0JCQkgKiBwbHVnZ2VkIGludG8gdGhlIHNhbWUgbG9jYXRpb24uCi0JCQkgKi8KLQkJCWlmIChyZW1vdGVfZmNwb3J0LT5wb3J0X3R5cGUgPT0gRkNUX1JTQ04pIHsKLQkJCSAgICByZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPQotCQkJCUlPREVTQ19MT0dJTl9ORUVERUQ7Ci0JCQl9IGVsc2UgaWYgKHJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9PQotCQkJICAgIElPREVTQ19BRElTQ19ORUVERUQpIHsKLQkJCQlmY19wb3J0X3QgKm5ld19mY3BvcnQ7Ci0KLQkJCQlyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPQotCQkJCSAgICBJT0RFU0NfSU5WQUxJRF9JTkRFWDsKLQotCQkJCS8qIENyZWF0ZSBuZXcgZmNwb3J0IGZvciBsYXRlciBsb2dpbi4gKi8KLQkJCQluZXdfZmNwb3J0ID0gcWxhMngwMF9hbGxvY19yc2NuX2ZjcG9ydChoYSwKLQkJCQkgICAgaGFfbG9ja2VkID8gR0ZQX0FUT01JQzogR0ZQX0tFUk5FTCk7Ci0JCQkJaWYgKG5ld19mY3BvcnQpIHsKLQkJCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSGFuZGxlIFJTQ04gIgotCQkJCQkgICAgIi0tIGNyZWF0aW5nIFJTQ04gZmNwb3J0ICVwIGZvciAiCi0JCQkJCSAgICAiZnV0dXJlIGxvZ2luLlxuIiwgaGEtPmhvc3Rfbm8sCi0JCQkJCSAgICBuZXdfZmNwb3J0KSk7Ci0KLQkJCQkJbmV3X2ZjcG9ydC0+ZF9pZC5iMjQgPQotCQkJCQkgICAgcmVtb3RlX2ZjcG9ydC0+ZF9pZC5iMjQ7Ci0JCQkJCW5ld19mY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9Ci0JCQkJCSAgICBJT0RFU0NfTE9HSU5fTkVFREVEOwotCi0JCQkJCWxpc3RfYWRkX3RhaWwoJm5ld19mY3BvcnQtPmxpc3QsCi0JCQkJCSAgICAmaGEtPnJzY25fZmNwb3J0cyk7Ci0JCQkJCXNldF9iaXQoSU9ERVNDX1BST0NFU1NfTkVFREVELAotCQkJCQkgICAgJmhhLT5kcGNfZmxhZ3MpOwotCQkJCX0gZWxzZSB7Ci0JCQkJCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IEhhbmRsZSBSU0NOICIKLQkJCQkJICAgICItLSB1bmFibGUgdG8gYWxsb2NhdGUgUlNDTiBmY3BvcnQgIgotCQkJCQkgICAgImZvciBmdXR1cmUgbG9naW4uXG4iLAotCQkJCQkgICAgaGEtPmhvc3Rfbm8pKTsKLQkJCQl9Ci0JCQl9Ci0JCQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLQkJfQotCi0JCS8qIFNlbmQgQURJU0MgaWYgdGhlIGZjcG9ydCBpcyBvbmxpbmUgKi8KLQkJaWYgKGF0b21pY19yZWFkKCZyZW1vdGVfZmNwb3J0LT5zdGF0ZSkgPT0gRkNTX09OTElORSB8fAotCQkgICAgcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID09IElPREVTQ19BRElTQ19ORUVERUQpIHsKLQotCQkJYXRvbWljX3NldCgmcmVtb3RlX2ZjcG9ydC0+c3RhdGUsIEZDU19ERVZJQ0VfTE9TVCk7Ci0KLQkJCWlvZGVzYyA9IHFsYTJ4MDBfYWxsb2NfaW9kZXNjKGhhKTsKLQkJCWlmIChpb2Rlc2MgPT0gTlVMTCkgewotCQkJCS8qIE1hcmsgZmNwb3J0IGZvciBsYXRlciBhZGlzYyBwcm9jZXNzaW5nICovCi0JCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSGFuZGxlIFJTQ04gLS0gbm90ICIKLQkJCQkgICAgImVub3VnaCBJTyBkZXNjcmlwdG9ycyBmb3IgQWRpc2MsIGZsYWcgIgotCQkJCSAgICAiZm9yIGxhdGVyIHByb2Nlc3NpbmcuXG4iLCBoYS0+aG9zdF9ubykpOwotCi0JCQkJcmVtb3RlX2ZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID0KLQkJCQkgICAgSU9ERVNDX0FESVNDX05FRURFRDsKLQkJCQlzZXRfYml0KElPREVTQ19QUk9DRVNTX05FRURFRCwgJmhhLT5kcGNfZmxhZ3MpOwotCi0JCQkJcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci0JCQl9Ci0KLQkJCWlvZGVzYy0+Y2JfaWR4ID0gQURJU0NfUE9SVF9JT0NCX0NCOwotCQkJaW9kZXNjLT5kX2lkLmIyNCA9IHJzY25fcGlkLmIyNDsKLQkJCWlvZGVzYy0+cmVtb3RlX2ZjcG9ydCA9IHJlbW90ZV9mY3BvcnQ7Ci0JCQlyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBpb2Rlc2MtPmlkeDsKLQkJCXFsYTJ4MDBfc2VuZF9hZGlzY19pb2NiKGhhLCBpb2Rlc2MsIGhhX2xvY2tlZCk7Ci0KLQkJCXJldHVybiAoUUxBX1NVQ0NFU1MpOwotCQl9IGVsc2UgaWYgKHJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCA8Ci0JCSAgICBNQVhfSU9fREVTQ1JJUFRPUlMgJiYKLQkJICAgIGhhLT5pb19kZXNjcmlwdG9yc1tyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnRdLmNiX2lkeCA9PQotCQkgICAgQURJU0NfUE9SVF9JT0NCX0NCKSB7Ci0JCQkvKgotCQkJICogUmVjZWl2aW5nIGFub3RoZXIgUlNDTiB3aGlsZSBhbiBBRElTQyBpcyBwZW5kaW5nLAotCQkJICogYWJvcnQgdGhlIElPQ0IuICBVc2UgdGhlIHNhbWUgZGVzY3JpcHRvciBmb3IgdGhlCi0JCQkgKiBhYm9ydC4KLQkJCSAqLwotCQkJdWludDMyX3QgaGFuZGxlX3RvX2Fib3J0OwotCi0JCQlpb2Rlc2MgPSAmaGEtPmlvX2Rlc2NyaXB0b3JzWwotCQkJCXJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudF07Ci0JCQlxbGEyeDAwX3JlbW92ZV9pb2Rlc2NfdGltZXIoaW9kZXNjKTsKLQkJCWhhbmRsZV90b19hYm9ydCA9IGlvZGVzYy0+c2lnbmF0dXJlOwotCQkJaW9kZXNjLT5zaWduYXR1cmUgPSBxbGEyeDAwX2lvZGVzY190b19oYW5kbGUoaW9kZXNjKTsKLQkJCWlvZGVzYy0+Y2JfaWR4ID0gQUJPUlRfSU9DQl9DQjsKLQkJCWlvZGVzYy0+ZF9pZC5iMjQgPSByZW1vdGVfZmNwb3J0LT5kX2lkLmIyNDsKLQkJCWlvZGVzYy0+cmVtb3RlX2ZjcG9ydCA9IHJlbW90ZV9mY3BvcnQ7Ci0JCQlyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBpb2Rlc2MtPmlkeDsKLQotCQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSGFuZGxlIFJTQ04gLS0gaXNzdWluZyAiCi0JCQkgICAgImFib3J0IHRvIG91dHN0YW5kaW5nIEFkaXNjIFsleC8lMDJ4JTAyeCUwMnhdLlxuIiwKLQkJCSAgICBoYS0+aG9zdF9ubywgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkJCSAgICBpb2Rlc2MtPmRfaWQuYi5kb21haW4sIGlvZGVzYy0+ZF9pZC5iLmFyZWEsCi0JCQkgICAgaW9kZXNjLT5kX2lkLmIuYWxfcGEpKTsKLQotCQkJcWxhMngwMF9zZW5kX2Fib3J0X2lvY2IoaGEsIGlvZGVzYywgaGFuZGxlX3RvX2Fib3J0LAotCQkJICAgIGhhX2xvY2tlZCk7Ci0JCX0KLQl9Ci0KLQkvKiBXZSBuZWVkIHRvIGxvZ2luIHRvIHRoZSByZW1vdGUgcG9ydCwgZmluZCBpdC4gKi8KLQlpZiAoa25vd25fZmNwb3J0KSB7Ci0JCXJlbW90ZV9mY3BvcnQgPSBrbm93bl9mY3BvcnQ7Ci0JfSBlbHNlIGlmIChyc2NuX2ZjcG9ydCAmJiByc2NuX2ZjcG9ydC0+ZF9pZC5iMjQgIT0gSU5WQUxJRF9QT1JUX0lEICYmCi0JICAgIHJzY25fZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPCBNQVhfSU9fREVTQ1JJUFRPUlMgJiYKLQkgICAgaGEtPmlvX2Rlc2NyaXB0b3JzW3JzY25fZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnRdLmNiX2lkeCA9PQotCSAgICBMT0dJTl9QT1JUX0lPQ0JfQ0IpIHsKLQkJLyoKLQkJICogSWdub3JlIGR1cGxpY2F0ZSBSU0NOIG9uIGZjcG9ydCB3aGljaCBoYXMgYWxyZWFkeQotCQkgKiBpbml0aWF0ZWQgYSBsb2dpbiBJT0NCLgotCQkgKi8KLQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSGFuZGxlIFJTQ04gLS0gaWdub3JpbmcsIGxvZ2luICIKLQkJICAgICJhbHJlYWR5IHNlbnQgdG8gWyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywKLQkJICAgIHJzY25fZmNwb3J0LT5kX2lkLmIuZG9tYWluLCByc2NuX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCSAgICByc2NuX2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci0JfSBlbHNlIGlmIChyc2NuX2ZjcG9ydCAmJiByc2NuX2ZjcG9ydC0+ZF9pZC5iMjQgIT0gSU5WQUxJRF9QT1JUX0lEICYmCi0JICAgIHJzY25fZmNwb3J0ICE9IHJlbW90ZV9mY3BvcnQpIHsKLQkJLyogUmV1c2Ugc2FtZSByc2NuIGZjcG9ydC4gKi8KLQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogSGFuZGxlIFJTQ04gLS0gcmV1c2luZyBSU0NOIGZjcG9ydCAiCi0JCSAgICAiWyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywKLQkJICAgIHJzY25fZmNwb3J0LT5kX2lkLmIuZG9tYWluLCByc2NuX2ZjcG9ydC0+ZF9pZC5iLmFyZWEsCi0JCSAgICByc2NuX2ZjcG9ydC0+ZF9pZC5iLmFsX3BhKSk7Ci0KLQkJcmVtb3RlX2ZjcG9ydCA9IHJzY25fZmNwb3J0OwotCX0gZWxzZSB7Ci0JCS8qIENyZWF0ZSBuZXcgZmNwb3J0IGZvciBsYXRlciBsb2dpbi4gKi8KLQkJcmVtb3RlX2ZjcG9ydCA9IHFsYTJ4MDBfYWxsb2NfcnNjbl9mY3BvcnQoaGEsCi0JCSAgICBoYV9sb2NrZWQgPyBHRlBfQVRPTUlDOiBHRlBfS0VSTkVMKTsKLQkJbGlzdF9hZGRfdGFpbCgmcmVtb3RlX2ZjcG9ydC0+bGlzdCwgJmhhLT5yc2NuX2ZjcG9ydHMpOwotCX0KLQlpZiAocmVtb3RlX2ZjcG9ydCA9PSBOVUxMKQotCQlyZXR1cm4gKFFMQV9TVUNDRVNTKTsKLQotCS8qIFByZXBhcmUgZmNwb3J0IGZvciBsb2dpbi4gKi8KLQlhdG9taWNfc2V0KCZyZW1vdGVfZmNwb3J0LT5zdGF0ZSwgRkNTX0RFVklDRV9MT1NUKTsKLQlyZW1vdGVfZmNwb3J0LT5sb2dpbl9yZXRyeSA9IDM7IC8qIGhhLT5sb2dpbl9yZXRyeV9jb3VudDsgKi8KLQlyZW1vdGVfZmNwb3J0LT5kX2lkLmIyNCA9IHJzY25fcGlkLmIyNDsKLQotCWlvZGVzYyA9IHFsYTJ4MDBfYWxsb2NfaW9kZXNjKGhhKTsKLQlpZiAoaW9kZXNjID09IE5VTEwpIHsKLQkJLyogTWFyayBmY3BvcnQgZm9yIGxhdGVyIGFkaXNjIHByb2Nlc3NpbmcuICovCi0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IEhhbmRsZSBSU0NOIC0tIG5vdCBlbm91Z2ggSU8gIgotCQkgICAgImRlc2NyaXB0b3JzIGZvciBMb2dpbiwgZmxhZyBmb3IgbGF0ZXIgcHJvY2Vzc2luZy5cbiIsCi0JCSAgICBoYS0+aG9zdF9ubykpOwotCi0JCXJlbW90ZV9mY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9IElPREVTQ19MT0dJTl9ORUVERUQ7Ci0JCXNldF9iaXQoSU9ERVNDX1BST0NFU1NfTkVFREVELCAmaGEtPmRwY19mbGFncyk7Ci0KLQkJcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci0JfQotCi0JaWYgKGtub3duX2ZjcG9ydCA9PSBOVUxMIHx8IHJzY25fcGlkLmIyNCAhPSBJTlZBTElEX1BPUlRfSUQpIHsKLQkJcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCA9IGhhLT5taW5fZXh0ZXJuYWxfbG9vcGlkOwotCi0JCXJ2YWwgPSBxbGEyeDAwX2ZpbmRfbmV3X2xvb3BfaWQoaGEsIHJlbW90ZV9mY3BvcnQpOwotCQlpZiAocnZhbCA9PSBRTEFfRlVOQ1RJT05fRkFJTEVEKSB7Ci0JCQkvKiBObyBtb3JlIGxvb3AgaWRzLCBmYWlsZWQuICovCi0JCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBIYW5kbGUgUlNDTiAtLSBubyBhdmFpbGFibGUgIgotCQkJICAgICJsb29wIGlkIHRvIHBlcmZvcm0gTG9naW4sIGZhaWxlZC5cbiIsCi0JCQkgICAgaGEtPmhvc3Rfbm8pKTsKLQotCQkJcmV0dXJuIChydmFsKTsKLQkJfQotCX0KLQotCWlvZGVzYy0+Y2JfaWR4ID0gTE9HSU5fUE9SVF9JT0NCX0NCOwotCWlvZGVzYy0+ZF9pZC5iMjQgPSByc2NuX3BpZC5iMjQ7Ci0JaW9kZXNjLT5yZW1vdGVfZmNwb3J0ID0gcmVtb3RlX2ZjcG9ydDsKLQlyZW1vdGVfZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBpb2Rlc2MtPmlkeDsKLQotCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IEhhbmRsZSBSU0NOIC0tIGF0dGVtcHRpbmcgbG9naW4gdG8gIgotCSAgICAiWyV4LyUwMnglMDJ4JTAyeF0uXG4iLCBoYS0+aG9zdF9ubywgcmVtb3RlX2ZjcG9ydC0+bG9vcF9pZCwKLQkgICAgaW9kZXNjLT5kX2lkLmIuZG9tYWluLCBpb2Rlc2MtPmRfaWQuYi5hcmVhLCBpb2Rlc2MtPmRfaWQuYi5hbF9wYSkpOwotCi0JcWxhMngwMF9zZW5kX2xvZ2luX2lvY2IoaGEsIGlvZGVzYywgJnJzY25fcGlkLCBoYV9sb2NrZWQpOwotCi0JcmV0dXJuIChRTEFfU1VDQ0VTUyk7Ci19Ci0KLS8qKgotICogcWxhMngwMF9wcm9jZXNzX2lvZGVzYygpIC0gQ29tcGxldGUgSU8gZGVzY3JpcHRvciBwcm9jZXNzaW5nLgotICogQGhhOiBIQSBjb250ZXh0Ci0gKiBAbWJ4c3RhdDogTWFpbGJveCBJT0NCIHN0YXR1cwotICovCi12b2lkCi1xbGEyeDAwX3Byb2Nlc3NfaW9kZXNjKHNjc2lfcWxhX2hvc3RfdCAqaGEsIHN0cnVjdCBtYnhfZW50cnkgKm1ieHN0YXQpCi17Ci0JaW50IHJ2YWw7Ci0JdWludDMyX3Qgc2lnbmF0dXJlOwotCWZjX3BvcnRfdCAqZmNwb3J0OwotCXN0cnVjdCBpb19kZXNjcmlwdG9yICppb2Rlc2M7Ci0KLQlzaWduYXR1cmUgPSBtYnhzdGF0LT5oYW5kbGU7Ci0KLQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBQcm9jZXNzIElPRGVzYyAtLSBwcm9jZXNzaW5nICUwOHguXG4iLAotCSAgICBoYS0+aG9zdF9ubywgc2lnbmF0dXJlKSk7Ci0KLQkvKiBSZXRyaWV2ZSBwcm9wZXIgSU8gZGVzY3JpcHRvci4gKi8KLQlpb2Rlc2MgPSBxbGEyeDAwX2hhbmRsZV90b19pb2Rlc2MoaGEsIHNpZ25hdHVyZSk7Ci0JaWYgKGlvZGVzYyA9PSBOVUxMKSB7Ci0JCURFQlVHMTQocHJpbnRrKCJzY3NpKCVsZCk6IFByb2Nlc3MgSU9EZXNjIC0tIGlnbm9yaW5nLCAiCi0JCSAgICAiaW5jb3JyZWN0IHNpZ25hdHVyZSAlMDh4LlxuIiwgaGEtPmhvc3Rfbm8sIHNpZ25hdHVyZSkpOwotCi0JCXJldHVybjsKLQl9Ci0KLQkvKiBTdG9wIElPIGRlc2NyaXB0b3IgdGltZXIuICovCi0JcWxhMngwMF9yZW1vdmVfaW9kZXNjX3RpbWVyKGlvZGVzYyk7Ci0KLQkvKiBWZXJpZnkgc2lnbmF0dXJlIG1hdGNoLiAqLwotCWlmIChpb2Rlc2MtPnNpZ25hdHVyZSAhPSBzaWduYXR1cmUpIHsKLQkJREVCVUcxNChwcmludGsoInNjc2koJWxkKTogUHJvY2VzcyBJT0Rlc2MgLS0gaWdub3JpbmcsICIKLQkJICAgICJzaWduYXR1cmUgbWlzbWF0Y2gsIHNlbnQgJTA4eCwgcmVjZWl2ZWQgJTA4eC5cbiIsCi0JCSAgICBoYS0+aG9zdF9ubywgaW9kZXNjLT5zaWduYXR1cmUsIHNpZ25hdHVyZSkpOwotCi0JCXJldHVybjsKLQl9Ci0KLQkvKiBHbyB3aXRoIElPQ0IgY2FsbGJhY2suICovCi0JcnZhbCA9IGlvY2JfZnVuY3Rpb25fY2JfbGlzdFtpb2Rlc2MtPmNiX2lkeF0oaGEsIGlvZGVzYywgbWJ4c3RhdCk7Ci0JaWYgKHJ2YWwgIT0gUUxBX1NVQ0NFU1MpIHsKLQkJLyogSU8gZGVzY3JpcHRvciByZXVzZWQgYnkgY2FsbGJhY2suICovCi0JCXJldHVybjsKLQl9Ci0KLQlxbGEyeDAwX2ZyZWVfaW9kZXNjKGlvZGVzYyk7Ci0KLQlpZiAodGVzdF9iaXQoSU9ERVNDX1BST0NFU1NfTkVFREVELCAmaGEtPmRwY19mbGFncykpIHsKLQkJLyogU2NhbiBvdXIgZmNwb3J0cyBsaXN0IGZvciBhbnkgUlNDTiByZXF1ZXN0cy4gKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShmY3BvcnQsICZoYS0+ZmNwb3J0cywgbGlzdCkgewotCQkJaWYgKGZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID09IElPREVTQ19BRElTQ19ORUVERUQgfHwKLQkJCSAgICBmY3BvcnQtPmlvZGVzY19pZHhfc2VudCA9PSBJT0RFU0NfTE9HSU5fTkVFREVEKSB7Ci0JCQkJcWxhMngwMF9oYW5kbGVfcG9ydF9yc2NuKGhhLCAwLCBmY3BvcnQsIDEpOwotCQkJCXJldHVybjsKLQkJCX0KLQkJfQotCi0JCS8qIFNjYW4gb3VyIFJTQ04gZmNwb3J0cyBsaXN0IGZvciBhbnkgUlNDTiByZXF1ZXN0cy4gKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShmY3BvcnQsICZoYS0+cnNjbl9mY3BvcnRzLCBsaXN0KSB7Ci0JCQlpZiAoZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPT0gSU9ERVNDX0FESVNDX05FRURFRCB8fAotCQkJICAgIGZjcG9ydC0+aW9kZXNjX2lkeF9zZW50ID09IElPREVTQ19MT0dJTl9ORUVERUQpIHsKLQkJCQlxbGEyeDAwX2hhbmRsZV9wb3J0X3JzY24oaGEsIDAsIGZjcG9ydCwgMSk7Ci0JCQkJcmV0dXJuOwotCQkJfQotCQl9Ci0JfQotCWNsZWFyX2JpdChJT0RFU0NfUFJPQ0VTU19ORUVERUQsICZoYS0+ZHBjX2ZsYWdzKTsKLX0KLQotLyoqCi0gKiBxbGEyeDAwX2NhbmNlbF9pb19kZXNjcmlwdG9ycygpIC0gQ2FuY2VsIGFsbCBvdXRzdGFuZGluZyBpbyBkZXNjcmlwdG9ycy4KLSAqIEBoYTogSEEgY29udGV4dAotICoKLSAqIFRoaXMgcm91dGluZSB3aWxsIGFsc28gZGVsZXRlIGFueSBSU0NOIGVudHJpZXMgcmVsYXRlZCB0byB0aGUgb3V0c3RhbmRpbmcKLSAqIElPIGRlc2NyaXB0b3JzLgotICovCi12b2lkCi1xbGEyeDAwX2NhbmNlbF9pb19kZXNjcmlwdG9ycyhzY3NpX3FsYV9ob3N0X3QgKmhhKQotewotCWZjX3BvcnRfdCAqZmNwb3J0LCAqZmNwdGVtcDsKLQotCWNsZWFyX2JpdChJT0RFU0NfUFJPQ0VTU19ORUVERUQsICZoYS0+ZHBjX2ZsYWdzKTsKLQotCS8qIEFib3J0IGFsbCBJTyBkZXNjcmlwdG9ycy4gKi8KLQlxbGEyeDAwX2luaXRfaW9fZGVzY3JpcHRvcnMoaGEpOwotCi0JLyogUmVzZXQgYWxsIHBlbmRpbmcgSU8gZGVzY3JpcHRvcnMgaW4gZmNwb3J0cyBsaXN0LiAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkoZmNwb3J0LCAmaGEtPmZjcG9ydHMsIGxpc3QpIHsKLQkJZmNwb3J0LT5pb2Rlc2NfaWR4X3NlbnQgPSBJT0RFU0NfSU5WQUxJRF9JTkRFWDsKLQl9Ci0KLQkvKiBSZXNldCBhbGwgcGVuZGluZyBJTyBkZXNjcmlwdG9ycyBpbiByc2NuIGZjcG9ydHMgbGlzdC4gKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZmNwb3J0LCBmY3B0ZW1wLCAmaGEtPnJzY25fZmNwb3J0cywgbGlzdCkgewotCQlERUJVRzE0KHByaW50aygic2NzaSglbGQpOiBDYW5jZWwgSU9zIC0tIEZyZWVpbmcgUlNDTiBmY3BvcnQgIgotCQkgICAgIiVwIFsleC8lMDJ4JTAyeCUwMnhdLlxuIiwgaGEtPmhvc3Rfbm8sIGZjcG9ydCwKLQkJICAgIGZjcG9ydC0+bG9vcF9pZCwgZmNwb3J0LT5kX2lkLmIuZG9tYWluLCBmY3BvcnQtPmRfaWQuYi5hcmVhLAotCQkgICAgZmNwb3J0LT5kX2lkLmIuYWxfcGEpKTsKLQotCQlsaXN0X2RlbCgmZmNwb3J0LT5saXN0KTsKLQkJa2ZyZWUoZmNwb3J0KTsKLQl9Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfc2V0dGluZ3MuaCBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9zZXR0aW5ncy5oCmluZGV4IDM2MzIwNWMuLjI0OWU0ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9zZXR0aW5ncy5oCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9zZXR0aW5ncy5oCkBAIC0xNiw3ICsxNiw2IEBACiAKIC8qIE1heCB0aW1lIHRvIHdhaXQgZm9yIHRoZSBsb29wIHRvIGJlIGluIExPT1BfUkVBRFkgc3RhdGUgKi8KICNkZWZpbmUgTUFYX0xPT1BfVElNRU9VVAkoNjAgKiA1KQotI2RlZmluZSBFSF9BQ1RJVkUJCTEJLyogRXJyb3IgaGFuZGxlciBhY3RpdmUgKi8KIAogLyoKICAqIFNvbWUgdmVuZG9yIHN1YnN5c3RlbXMgZG8gbm90IHJlY292ZXIgcHJvcGVybHkgYWZ0ZXIgYSBkZXZpY2UgcmVzZXQuICBEZWZpbmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9zdXAuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9zdXAuYwppbmRleCA4YjAxMjFkLi5jNzFkYmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfc3VwLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX3N1cC5jCkBAIC05Nyw3ICs5Nyw3IEBACiB7CiAJaW50IGNvdW50OwogCXVpbnQxNl90IHdvcmQ7Ci0JdWludDMyX3QgbnZfY21kOworCXVpbnQzMl90IG52X2NtZCwgd2FpdF9jbnQ7CiAJc3RydWN0IGRldmljZV9yZWdfMnh4eCBfX2lvbWVtICpyZWcgPSAmaGEtPmlvYmFzZS0+aXNwOwogCiAJcWxhMngwMF9udl93cml0ZShoYSwgTlZSX0RBVEFfT1VUKTsKQEAgLTEyNyw3ICsxMjcsMTMgQEAKIAkvKiBXYWl0IGZvciBOVlJBTSB0byBiZWNvbWUgcmVhZHkgKi8KIAlXUlRfUkVHX1dPUkQoJnJlZy0+bnZyYW0sIE5WUl9TRUxFQ1QpOwogCVJEX1JFR19XT1JEKCZyZWctPm52cmFtKTsJCS8qIFBDSSBQb3N0aW5nLiAqLworCXdhaXRfY250ID0gTlZSX1dBSVRfQ05UOwogCWRvIHsKKwkJaWYgKCEtLXdhaXRfY250KSB7CisJCQlERUJVRzlfMTAocHJpbnRrKCIlcyglbGQpOiBOVlJBTSBkaWRuJ3QgZ28gcmVhZHkuLi5cbiIsCisJCQkgICAgX19mdW5jX18sIGhhLT5ob3N0X25vKSk7CisJCQlicmVhazsKKwkJfQogCQlOVlJBTV9ERUxBWSgpOwogCQl3b3JkID0gUkRfUkVHX1dPUkQoJnJlZy0+bnZyYW0pOwogCX0gd2hpbGUgKCh3b3JkICYgTlZSX0RBVEFfSU4pID09IDApOwpAQCAtMzAxLDE2ICszMDcsMTcgQEAKIHsKIAlpbnQgcmV0LCBzdGF0OwogCXN0cnVjdCBkZXZpY2VfcmVnXzJ4eHggX19pb21lbSAqcmVnID0gJmhhLT5pb2Jhc2UtPmlzcDsKLQl1aW50MzJfdCB3b3JkOworCXVpbnQzMl90IHdvcmQsIHdhaXRfY250OwogCXVpbnQxNl90IHdwcm90LCB3cHJvdF9vbGQ7CiAKIAkvKiBDbGVhciBOVlJBTSB3cml0ZSBwcm90ZWN0aW9uLiAqLwogCXJldCA9IFFMQV9GVU5DVElPTl9GQUlMRUQ7Ci0Jd3Byb3Rfb2xkID0gY3B1X3RvX2xlMTYocWxhMngwMF9nZXRfbnZyYW1fd29yZChoYSwgMCkpOwotCXN0YXQgPSBxbGEyeDAwX3dyaXRlX252cmFtX3dvcmRfdG1vKGhhLCAwLAorCisJd3Byb3Rfb2xkID0gY3B1X3RvX2xlMTYocWxhMngwMF9nZXRfbnZyYW1fd29yZChoYSwgaGEtPm52cmFtX2Jhc2UpKTsKKwlzdGF0ID0gcWxhMngwMF93cml0ZV9udnJhbV93b3JkX3RtbyhoYSwgaGEtPm52cmFtX2Jhc2UsCiAJICAgIF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoMHgxMjM0KSwgMTAwMDAwKTsKLQl3cHJvdCA9IGNwdV90b19sZTE2KHFsYTJ4MDBfZ2V0X252cmFtX3dvcmQoaGEsIDApKTsKLQlpZiAoc3RhdCAhPSBRTEFfU1VDQ0VTUyB8fCB3cHJvdCAhPSBfX2NvbnN0YW50X2NwdV90b19sZTE2KDB4MTIzNCkpIHsKKwl3cHJvdCA9IGNwdV90b19sZTE2KHFsYTJ4MDBfZ2V0X252cmFtX3dvcmQoaGEsIGhhLT5udnJhbV9iYXNlKSk7CisJaWYgKHN0YXQgIT0gUUxBX1NVQ0NFU1MgfHwgd3Byb3QgIT0gMHgxMjM0KSB7CiAJCS8qIFdyaXRlIGVuYWJsZS4gKi8KIAkJcWxhMngwMF9udl93cml0ZShoYSwgTlZSX0RBVEFfT1VUKTsKIAkJcWxhMngwMF9udl93cml0ZShoYSwgMCk7CkBAIC0zNDEsMTQgKzM0OCwyMiBAQAogCQkvKiBXYWl0IGZvciBOVlJBTSB0byBiZWNvbWUgcmVhZHkuICovCiAJCVdSVF9SRUdfV09SRCgmcmVnLT5udnJhbSwgTlZSX1NFTEVDVCk7CiAJCVJEX1JFR19XT1JEKCZyZWctPm52cmFtKTsJLyogUENJIFBvc3RpbmcuICovCisJCXdhaXRfY250ID0gTlZSX1dBSVRfQ05UOwogCQlkbyB7CisJCQlpZiAoIS0td2FpdF9jbnQpIHsKKwkJCQlERUJVRzlfMTAocHJpbnRrKCIlcyglbGQpOiBOVlJBTSBkaWRuJ3QgZ28gIgorCQkJCSAgICAicmVhZHkuLi5cbiIsIF9fZnVuY19fLAorCQkJCSAgICBoYS0+aG9zdF9ubykpOworCQkJCWJyZWFrOworCQkJfQogCQkJTlZSQU1fREVMQVkoKTsKIAkJCXdvcmQgPSBSRF9SRUdfV09SRCgmcmVnLT5udnJhbSk7CiAJCX0gd2hpbGUgKCh3b3JkICYgTlZSX0RBVEFfSU4pID09IDApOwogCi0JCXJldCA9IFFMQV9TVUNDRVNTOworCQlpZiAod2FpdF9jbnQpCisJCQlyZXQgPSBRTEFfU1VDQ0VTUzsKIAl9IGVsc2UKLQkJcWxhMngwMF93cml0ZV9udnJhbV93b3JkKGhhLCAwLCB3cHJvdF9vbGQpOworCQlxbGEyeDAwX3dyaXRlX252cmFtX3dvcmQoaGEsIGhhLT5udnJhbV9iYXNlLCB3cHJvdF9vbGQpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTM1Nyw3ICszNzIsNyBAQAogcWxhMngwMF9zZXRfbnZyYW1fcHJvdGVjdGlvbihzY3NpX3FsYV9ob3N0X3QgKmhhLCBpbnQgc3RhdCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX3JlZ18yeHh4IF9faW9tZW0gKnJlZyA9ICZoYS0+aW9iYXNlLT5pc3A7Ci0JdWludDMyX3Qgd29yZDsKKwl1aW50MzJfdCB3b3JkLCB3YWl0X2NudDsKIAogCWlmIChzdGF0ICE9IFFMQV9TVUNDRVNTKQogCQlyZXR1cm47CkBAIC0zOTMsNyArNDA4LDEzIEBACiAJLyogV2FpdCBmb3IgTlZSQU0gdG8gYmVjb21lIHJlYWR5LiAqLwogCVdSVF9SRUdfV09SRCgmcmVnLT5udnJhbSwgTlZSX1NFTEVDVCk7CiAJUkRfUkVHX1dPUkQoJnJlZy0+bnZyYW0pOwkJLyogUENJIFBvc3RpbmcuICovCisJd2FpdF9jbnQgPSBOVlJfV0FJVF9DTlQ7CiAJZG8geworCQlpZiAoIS0td2FpdF9jbnQpIHsKKwkJCURFQlVHOV8xMChwcmludGsoIiVzKCVsZCk6IE5WUkFNIGRpZG4ndCBnbyByZWFkeS4uLlxuIiwKKwkJCSAgICBfX2Z1bmNfXywgaGEtPmhvc3Rfbm8pKTsKKwkJCWJyZWFrOworCQl9CiAJCU5WUkFNX0RFTEFZKCk7CiAJCXdvcmQgPSBSRF9SRUdfV09SRCgmcmVnLT5udnJhbSk7CiAJfSB3aGlsZSAoKHdvcmQgJiBOVlJfREFUQV9JTikgPT0gMCk7CkBAIC01MDAsNiArNTIxLDIwIEBACiAJaWRzID0gcWxhMjR4eF9yZWFkX2ZsYXNoX2R3b3JkKGhhLCBmbGFzaF9kYXRhX3RvX2FjY2Vzc19hZGRyKDB4ZDAzYWIpKTsKIAkqbWFuX2lkID0gTFNCKGlkcyk7CiAJKmZsYXNoX2lkID0gTVNCKGlkcyk7CisKKwkvKiBDaGVjayBpZiBtYW5faWQgYW5kIGZsYXNoX2lkIGFyZSB2YWxpZC4gKi8KKwlpZiAoaWRzICE9IDB4REVBRERFQUQgJiYgKCptYW5faWQgPT0gMCB8fCAqZmxhc2hfaWQgPT0gMCkpIHsKKwkJLyogUmVhZCBpbmZvcm1hdGlvbiB1c2luZyAweDlmIG9wY29kZQorCQkgKiBEZXZpY2UgSUQsIE1mZyBJRCB3b3VsZCBiZSByZWFkIGluIHRoZSBmb3JtYXQ6CisJCSAqICAgPEV4dCBEZXYgSW5mbz48RGV2aWNlIElEIFBhcnQyPjxEZXZpY2UgSUQgUGFydCAxPjxNZmcgSUQ+CisJCSAqIEV4YW1wbGU6IEFUTUVMIDB4MDAgMDEgNDUgMUYKKwkJICogRXh0cmFjdCBNRkcgYW5kIERldiBJRCBmcm9tIGxhc3QgdHdvIGJ5dGVzLgorCQkgKi8KKwkJaWRzID0gcWxhMjR4eF9yZWFkX2ZsYXNoX2R3b3JkKGhhLAorCQkgICAgZmxhc2hfZGF0YV90b19hY2Nlc3NfYWRkcigweGQwMDlmKSk7CisJCSptYW5faWQgPSBMU0IoaWRzKTsKKwkJKmZsYXNoX2lkID0gTVNCKGlkcyk7CisJfQogfQogCiBpbnQKQEAgLTUwOCw4ICs1NDMsOCBAQAogewogCWludCByZXQ7CiAJdWludDMyX3QgbGl0ZXI7Ci0JdWludDMyX3Qgc2VjX21hc2ssIHJlc3RfYWRkciwgY29uZl9hZGRyOwotCXVpbnQzMl90IGZkYXRhOworCXVpbnQzMl90IHNlY19tYXNrLCByZXN0X2FkZHIsIGNvbmZfYWRkciwgc2VjX2VuZF9tYXNrOworCXVpbnQzMl90IGZkYXRhLCBmaW5kZXggOwogCXVpbnQ4X3QJbWFuX2lkLCBmbGFzaF9pZDsKIAlzdHJ1Y3QgZGV2aWNlX3JlZ18yNHh4IF9faW9tZW0gKnJlZyA9ICZoYS0+aW9iYXNlLT5pc3AyNDsKIApAQCAtNTE5LDYgKzU1NCw3IEBACiAJREVCVUc5KHByaW50aygiJXMoJWxkKTogRmxhc2ggbWFuX2lkPSVkIGZsYXNoX2lkPSVkXG4iLCBfX2Z1bmNfXywKIAkgICAgaGEtPmhvc3Rfbm8sIG1hbl9pZCwgZmxhc2hfaWQpKTsKIAorCXNlY19lbmRfbWFzayA9IDA7CiAJY29uZl9hZGRyID0gZmxhc2hfY29uZl90b19hY2Nlc3NfYWRkcigweDAzZDgpOwogCXN3aXRjaCAobWFuX2lkKSB7CiAJY2FzZSAweGJmOiAvKiBTVFQgZmxhc2guICovCkBAIC01MzEsNiArNTY3LDEyIEBACiAJCXJlc3RfYWRkciA9IDB4M2ZmZjsKIAkJc2VjX21hc2sgPSAweDNjMDAwOwogCQlicmVhazsKKwljYXNlIDB4MWY6IC8vIEF0bWVsIDI2REYwODFBCisJCXJlc3RfYWRkciA9IDB4MGZmZjsKKwkJc2VjX21hc2sgPSAweGZmMDAwOworCQlzZWNfZW5kX21hc2sgPSAweDAwM2ZmOworCQljb25mX2FkZHIgPSBmbGFzaF9jb25mX3RvX2FjY2Vzc19hZGRyKDB4MDMyMCk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIERlZmF1bHQgdG8gNjQga2Igc2VjdG9yIHNpemUuICovCiAJCXJlc3RfYWRkciA9IDB4M2ZmZjsKQEAgLTU0NSwxMSArNTg3LDMwIEBACiAKIAkvKiBEaXNhYmxlIGZsYXNoIHdyaXRlLXByb3RlY3Rpb24uICovCiAJcWxhMjR4eF93cml0ZV9mbGFzaF9kd29yZChoYSwgZmxhc2hfY29uZl90b19hY2Nlc3NfYWRkcigweDEwMSksIDApOworCS8qIFNvbWUgZmxhc2ggcGFydHMgbmVlZCBhbiBhZGRpdGlvbmFsIHplcm8td3JpdGUgdG8gY2xlYXIgYml0cy4qLworCXFsYTI0eHhfd3JpdGVfZmxhc2hfZHdvcmQoaGEsIGZsYXNoX2NvbmZfdG9fYWNjZXNzX2FkZHIoMHgxMDEpLCAwKTsKIAogCWRvIHsgICAgLyogTG9vcCBvbmNlIHRvIHByb3ZpZGUgcXVpY2sgZXJyb3IgZXhpdC4gKi8KIAkJZm9yIChsaXRlciA9IDA7IGxpdGVyIDwgZHdvcmRzOyBsaXRlcisrLCBmYWRkcisrLCBkd3B0cisrKSB7CisJCQlpZiAobWFuX2lkID09IDB4MWYpIHsKKwkJCQlmaW5kZXggPSBmYWRkciA8PCAyOworCQkJCWZkYXRhID0gZmluZGV4ICYgc2VjX21hc2s7CisJCQl9IGVsc2UgeworCQkJCWZpbmRleCA9IGZhZGRyOworCQkJCWZkYXRhID0gKGZpbmRleCAmIHNlY19tYXNrKSA8PCAyOworCQkJfQorCiAJCQkvKiBBcmUgd2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlY3Rvcj8gKi8KLQkJCWlmICgoZmFkZHIgJiByZXN0X2FkZHIpID09IDApIHsKKwkJCWlmICgoZmluZGV4ICYgcmVzdF9hZGRyKSA9PSAwKSB7CisJCQkJLyoKKwkJCQkgKiBEbyBzZWN0b3IgdW5wcm90ZWN0IGF0IDRLIGJvdW5kcnkgZm9yIEF0bWVsCisJCQkJICogcGFydC4KKwkJCQkgKi8KKwkJCQlpZiAobWFuX2lkID09IDB4MWYpCisJCQkJCXFsYTI0eHhfd3JpdGVfZmxhc2hfZHdvcmQoaGEsCisJCQkJCSAgICBmbGFzaF9jb25mX3RvX2FjY2Vzc19hZGRyKDB4MDMzOSksCisJCQkJCSAgICAoZmRhdGEgJiAweGZmMDApIHwgKChmZGF0YSA8PCAxNikgJgorCQkJCQkgICAgMHhmZjAwMDApIHwgKChmZGF0YSA+PiAxNikgJiAweGZmKSk7CiAJCQkJZmRhdGEgPSAoZmFkZHIgJiBzZWNfbWFzaykgPDwgMjsKIAkJCQlyZXQgPSBxbGEyNHh4X3dyaXRlX2ZsYXNoX2R3b3JkKGhhLCBjb25mX2FkZHIsCiAJCQkJICAgIChmZGF0YSAmIDB4ZmYwMCkgfCgoZmRhdGEgPDwgMTYpICYKQEAgLTU3MCw2ICs2MzEsMTQgQEAKIAkJCQkgICAgaGEtPmhvc3Rfbm8sIGZhZGRyLCAqZHdwdHIpKTsKIAkJCQlicmVhazsKIAkJCX0KKworCQkJLyogRG8gc2VjdG9yIHByb3RlY3QgYXQgNEsgYm91bmRyeSBmb3IgQXRtZWwgcGFydC4gKi8KKwkJCWlmIChtYW5faWQgPT0gMHgxZiAmJgorCQkJICAgICgoZmFkZHIgJiBzZWNfZW5kX21hc2spID09IDB4M2ZmKSkKKwkJCQlxbGEyNHh4X3dyaXRlX2ZsYXNoX2R3b3JkKGhhLAorCQkJCSAgICBmbGFzaF9jb25mX3RvX2FjY2Vzc19hZGRyKDB4MDMzNiksCisJCQkJICAgIChmZGF0YSAmIDB4ZmYwMCkgfCAoKGZkYXRhIDw8IDE2KSAmCisJCQkJICAgIDB4ZmYwMDAwKSB8ICgoZmRhdGEgPj4gMTYpICYgMHhmZikpOwogCQl9CiAJfSB3aGlsZSAoMCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV92ZXJzaW9uLmggYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfdmVyc2lvbi5oCmluZGV4IGQ1MzcxOTIuLjZiMzE1NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV92ZXJzaW9uLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX3ZlcnNpb24uaApAQCAtNyw5ICs3LDkgQEAKIC8qCiAgKiBEcml2ZXIgdmVyc2lvbgogICovCi0jZGVmaW5lIFFMQTJYWFhfVkVSU0lPTiAgICAgICI4LjAxLjA0LWsiCisjZGVmaW5lIFFMQTJYWFhfVkVSU0lPTiAgICAgICI4LjAxLjA1LWsyIgogCiAjZGVmaW5lIFFMQV9EUklWRVJfTUFKT1JfVkVSCTgKICNkZWZpbmUgUUxBX0RSSVZFUl9NSU5PUl9WRVIJMQotI2RlZmluZSBRTEFfRFJJVkVSX1BBVENIX1ZFUgk0CisjZGVmaW5lIFFMQV9EUklWRVJfUEFUQ0hfVkVSCTUKICNkZWZpbmUgUUxBX0RSSVZFUl9CRVRBX1ZFUgkwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxvZ2ljcHRpLmMgYi9kcml2ZXJzL3Njc2kvcWxvZ2ljcHRpLmMKaW5kZXggYzdlNzhkYy4uMjIwMzEwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Fsb2dpY3B0aS5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbG9naWNwdGkuYwpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9yZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RjcS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CiAKQEAgLTEzMiw3ICsxMzEsNyBAQAogCVBBQ0tCKDAsIDApCS8qIDB4MDA0MiAqLwogfTsKIAotI2RlZmluZSBNQVhfTUJPWF9DT01NQU5ECShzaXplb2YobWJveF9wYXJhbSkvc2l6ZW9mKHVfc2hvcnQpKQorI2RlZmluZSBNQVhfTUJPWF9DT01NQU5ECUFSUkFZX1NJWkUobWJveF9wYXJhbSkKIAogLyogcXVldWUgbGVuZ3RoJ3MgX211c3RfIGJlIHBvd2VyIG9mIHR3bzogKi8KICNkZWZpbmUgUVVFVUVfREVQVEgoaW4sIG91dCwgcWwpCSgoaW4gLSBvdXQpICYgKHFsKSkKQEAgLTcyNSw3ICs3MjQsNyBAQAogCQkJU0FfU0hJUlEsICJRbG9naWMvUFRJIiwgcXB0aSkpCiAJCWdvdG8gZmFpbDsKIAotCXByaW50aygicXB0aSVkOiBJUlEgJXMgIiwgcXB0aS0+cXB0aV9pZCwgX19pcnFfaXRvYShxcHRpLT5pcnEpKTsKKwlwcmludGsoInFwdGklZDogSVJRICVkICIsIHFwdGktPnFwdGlfaWQsIHFwdGktPmlycSk7CiAKIAlyZXR1cm4gMDsKIApAQCAtOTg4LDggKzk4Nyw4IEBACiAJc3RhdGljIGNoYXIgYnVmWzgwXTsKIAlzdHJ1Y3QgcWxvZ2ljcHRpICpxcHRpID0gKHN0cnVjdCBxbG9naWNwdGkgKikgaG9zdC0+aG9zdGRhdGE7CiAKLQlzcHJpbnRmKGJ1ZiwgIlBUSSBRbG9naWMsSVNQIFNCVVMgU0NTSSBpcnEgJXMgcmVncyBhdCAlcCIsCi0JCV9faXJxX2l0b2EocXB0aS0+cWhvc3QtPmlycSksIHFwdGktPnFyZWdzKTsKKwlzcHJpbnRmKGJ1ZiwgIlBUSSBRbG9naWMsSVNQIFNCVVMgU0NTSSBpcnEgJWQgcmVncyBhdCAlcCIsCisJCXFwdGktPnFob3N0LT5pcnEsIHFwdGktPnFyZWdzKTsKIAlyZXR1cm4gYnVmOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcmFpZF9jbGFzcy5jIGIvZHJpdmVycy9zY3NpL3JhaWRfY2xhc3MuYwppbmRleCA1MGMzOThhLi4zMjdiMzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcmFpZF9jbGFzcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9yYWlkX2NsYXNzLmMKQEAgLTEzMSw3ICsxMzEsNyBAQAogCWludCBpOwogCWNoYXIgKm5hbWUgPSBOVUxMOwogCi0JZm9yIChpID0gMDsgaSA8IHNpemVvZihyYWlkX3N0YXRlcykvc2l6ZW9mKHJhaWRfc3RhdGVzWzBdKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocmFpZF9zdGF0ZXMpOyBpKyspIHsKIAkJaWYgKHJhaWRfc3RhdGVzW2ldLnZhbHVlID09IHN0YXRlKSB7CiAJCQluYW1lID0gcmFpZF9zdGF0ZXNbaV0ubmFtZTsKIAkJCWJyZWFrOwpAQCAtMTYxLDcgKzE2MSw3IEBACiAJaW50IGk7CiAJY2hhciAqbmFtZSA9IE5VTEw7CiAKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHJhaWRfbGV2ZWxzKS9zaXplb2YocmFpZF9sZXZlbHNbMF0pOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShyYWlkX2xldmVscyk7IGkrKykgewogCQlpZiAocmFpZF9sZXZlbHNbaV0udmFsdWUgPT0gbGV2ZWwpIHsKIAkJCW5hbWUgPSByYWlkX2xldmVsc1tpXS5uYW1lOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV9tdi5jIGIvZHJpdmVycy9zY3NpL3NhdGFfbXYuYwppbmRleCBmMTZmOTJhLi40YTcxNTc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2F0YV9tdi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX212LmMKQEAgLTkzLDcgKzkzLDcgQEAKIAlNVl9GTEFHX0lSUV9DT0FMRVNDRQk9ICgxIDw8IDI5KSwgIC8qIElSUSBjb2FsZXNjaW5nIGNhcGFiaWxpdHkgKi8KIAlNVl9DT01NT05fRkxBR1MJCT0gKEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAogCQkJCSAgIEFUQV9GTEFHX1NBVEFfUkVTRVQgfCBBVEFfRkxBR19NTUlPIHwKLQkJCQkgICBBVEFfRkxBR19OT19BVEFQSSksCisJCQkJICAgQVRBX0ZMQUdfTk9fQVRBUEkgfCBBVEFfRkxBR19QSU9fUE9MTElORyksCiAJTVZfNlhYWF9GTEFHUwkJPSBNVl9GTEFHX0lSUV9DT0FMRVNDRSwKIAogCUNSUUJfRkxBR19SRUFECQk9ICgxIDw8IDApLApAQCAtMjcyLDMzICsyNzIsMzMgQEAKIAogLyogQ29tbWFuZCBSZVF1ZXN0IEJsb2NrOiAzMkIgKi8KIHN0cnVjdCBtdl9jcnFiIHsKLQl1MzIJCQlzZ19hZGRyOwotCXUzMgkJCXNnX2FkZHJfaGk7Ci0JdTE2CQkJY3RybF9mbGFnczsKLQl1MTYJCQlhdGFfY21kWzExXTsKKwlfX2xlMzIJCQlzZ19hZGRyOworCV9fbGUzMgkJCXNnX2FkZHJfaGk7CisJX19sZTE2CQkJY3RybF9mbGFnczsKKwlfX2xlMTYJCQlhdGFfY21kWzExXTsKIH07CiAKIHN0cnVjdCBtdl9jcnFiX2lpZSB7Ci0JdTMyCQkJYWRkcjsKLQl1MzIJCQlhZGRyX2hpOwotCXUzMgkJCWZsYWdzOwotCXUzMgkJCWxlbjsKLQl1MzIJCQlhdGFfY21kWzRdOworCV9fbGUzMgkJCWFkZHI7CisJX19sZTMyCQkJYWRkcl9oaTsKKwlfX2xlMzIJCQlmbGFnczsKKwlfX2xlMzIJCQlsZW47CisJX19sZTMyCQkJYXRhX2NtZFs0XTsKIH07CiAKIC8qIENvbW1hbmQgUmVzUG9uc2UgQmxvY2s6IDhCICovCiBzdHJ1Y3QgbXZfY3JwYiB7Ci0JdTE2CQkJaWQ7Ci0JdTE2CQkJZmxhZ3M7Ci0JdTMyCQkJdG1zdG1wOworCV9fbGUxNgkJCWlkOworCV9fbGUxNgkJCWZsYWdzOworCV9fbGUzMgkJCXRtc3RtcDsKIH07CiAKIC8qIEVETUEgUGh5c2ljYWwgUmVnaW9uIERlc2NyaXB0b3IgKGVQUkQpOyBBLksuQS4gU0cgKi8KIHN0cnVjdCBtdl9zZyB7Ci0JdTMyCQkJYWRkcjsKLQl1MzIJCQlmbGFnc19zaXplOwotCXUzMgkJCWFkZHJfaGk7Ci0JdTMyCQkJcmVzZXJ2ZWQ7CisJX19sZTMyCQkJYWRkcjsKKwlfX2xlMzIJCQlmbGFnc19zaXplOworCV9fbGUzMgkJCWFkZHJfaGk7CisJX19sZTMyCQkJcmVzZXJ2ZWQ7CiB9OwogCiBzdHJ1Y3QgbXZfcG9ydF9wcml2IHsKQEAgLTM5MCw2ICszOTAsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBNVl9ETUFfQk9VTkRBUlksCiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKKwkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKIH07CiAKQEAgLTQwNiw2ICs0MDcsNyBAQAogCiAJLnFjX3ByZXAJCT0gbXZfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gbXZfcWNfaXNzdWUsCisJLmRhdGFfeGZlcgkJPSBhdGFfbW1pb19kYXRhX3hmZXIsCiAKIAkuZW5nX3RpbWVvdXQJCT0gbXZfZW5nX3RpbWVvdXQsCiAKQEAgLTQzMyw2ICs0MzUsNyBAQAogCiAJLnFjX3ByZXAJCT0gbXZfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gbXZfcWNfaXNzdWUsCisJLmRhdGFfeGZlcgkJPSBhdGFfbW1pb19kYXRhX3hmZXIsCiAKIAkuZW5nX3RpbWVvdXQJCT0gbXZfZW5nX3RpbWVvdXQsCiAKQEAgLTY4Myw3ICs2ODYsNyBAQAogCX0KIAogCWlmIChFRE1BX0VOICYgcmVnKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IFVuYWJsZSB0byBzdG9wIGVETUFcbiIsIGFwLT5pZCk7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJVbmFibGUgdG8gc3RvcCBlRE1BXG4iKTsKIAkJLyogRklYTUU6IENvbnNpZGVyIGRvaW5nIGEgcmVzZXQgaGVyZSB0byByZWNvdmVyICovCiAJfQogfQpAQCAtMTAyOCw3ICsxMDMxLDcgQEAKIAlyZXR1cm4gKGluZGV4ICsgMSkgJiBNVl9NQVhfUV9ERVBUSF9NQVNLOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbXZfY3JxYl9wYWNrX2NtZCh1MTYgKmNtZHcsIHU4IGRhdGEsIHU4IGFkZHIsIHVuc2lnbmVkIGxhc3QpCitzdGF0aWMgaW5saW5lIHZvaWQgbXZfY3JxYl9wYWNrX2NtZChfX2xlMTYgKmNtZHcsIHU4IGRhdGEsIHU4IGFkZHIsIHVuc2lnbmVkIGxhc3QpCiB7CiAJdTE2IHRtcCA9IGRhdGEgfCAoYWRkciA8PCBDUlFCX0NNRF9BRERSX1NISUZUKSB8IENSUUJfQ01EX0NTIHwKIAkJKGxhc3QgPyBDUlFCX0NNRF9MQVNUIDogMCk7CkBAIC0xMDUxLDcgKzEwNTQsNyBAQAogewogCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CiAJc3RydWN0IG12X3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwotCXUxNiAqY3c7CisJX19sZTE2ICpjdzsKIAlzdHJ1Y3QgYXRhX3Rhc2tmaWxlICp0ZjsKIAl1MTYgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGluX2luZGV4OwpAQCAtMTMwNyw4ICsxMzEwLDggQEAKIAllZG1hX2Vycl9jYXVzZSA9IHJlYWRsKHBvcnRfbW1pbyArIEVETUFfRVJSX0lSUV9DQVVTRV9PRlMpOwogCiAJaWYgKEVETUFfRVJSX1NFUlIgJiBlZG1hX2Vycl9jYXVzZSkgewotCQlzZXJyID0gc2NyX3JlYWQoYXAsIFNDUl9FUlJPUik7Ci0JCXNjcl93cml0ZV9mbHVzaChhcCwgU0NSX0VSUk9SLCBzZXJyKTsKKwkJc2F0YV9zY3JfcmVhZChhcCwgU0NSX0VSUk9SLCAmc2Vycik7CisJCXNhdGFfc2NyX3dyaXRlX2ZsdXNoKGFwLCBTQ1JfRVJST1IsIHNlcnIpOwogCX0KIAlpZiAoRURNQV9FUlJfU0VMRl9ESVMgJiBlZG1hX2Vycl9jYXVzZSkgewogCQlzdHJ1Y3QgbXZfcG9ydF9wcml2ICpwcAk9IGFwLT5wcml2YXRlX2RhdGE7CkBAIC0xMzc3LDcgKzEzODAsNyBAQAogCQkvKiBOb3RlIHRoYXQgREVWX0lSUSBtaWdodCBoYXBwZW4gc3B1cmlvdXNseSBkdXJpbmcgRURNQSwKIAkJICogYW5kIHNob3VsZCBiZSBpZ25vcmVkIGluIHN1Y2ggY2FzZXMuCiAJCSAqIFRoZSBjYXVzZSBvZiB0aGlzIGlzIHN0aWxsIHVuZGVyIGludmVzdGlnYXRpb24uCi0JCSAqLyAKKwkJICovCiAJCWlmIChwcC0+cHBfZmxhZ3MgJiBNVl9QUF9GTEFHX0VETUFfRU4pIHsKIAkJCS8qIEVETUE6IGNoZWNrIGZvciByZXNwb25zZSBxdWV1ZSBpbnRlcnJ1cHQgKi8KIAkJCWlmICgoQ1JQQl9ETUFfRE9ORSA8PCBoYXJkX3BvcnQpICYgaGNfaXJxX2NhdXNlKSB7CkBAIC0xMzk4LDcgKzE0MDEsNyBAQAogCQkJfQogCQl9CiAKLQkJaWYgKGFwLT5mbGFncyAmIChBVEFfRkxBR19QT1JUX0RJU0FCTEVEIHwgQVRBX0ZMQUdfTk9JTlRSKSkKKwkJaWYgKGFwICYmIChhcC0+ZmxhZ3MgJiBBVEFfRkxBR19ESVNBQkxFRCkpCiAJCQljb250aW51ZTsKIAogCQllcnJfbWFzayA9IGFjX2Vycl9tYXNrKGF0YV9zdGF0dXMpOwpAQCAtMTQxOSw3ICsxNDIyLDcgQEAKIAkJCQlWUFJJTlRLKCJwb3J0ICV1IElSUSBmb3VuZCBmb3IgcWMsICIKIAkJCQkJImF0YV9zdGF0dXMgMHgleFxuIiwgcG9ydCxhdGFfc3RhdHVzKTsKIAkJCQkvKiBtYXJrIHFjIHN0YXR1cyBhcHByb3ByaWF0ZWx5ICovCi0JCQkJaWYgKCEocWMtPnRmLmN0bCAmIEFUQV9OSUVOKSkgeworCQkJCWlmICghKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKSkgewogCQkJCQlxYy0+ZXJyX21hc2sgfD0gZXJyX21hc2s7CiAJCQkJCWF0YV9xY19jb21wbGV0ZShxYyk7CiAJCQkJfQpAQCAtMTk0OSwxNSArMTk1MiwxNiBAQAogCiAJLyogSXNzdWUgQ09NUkVTRVQgdmlhIFNDb250cm9sICovCiBjb21yZXNldF9yZXRyeToKLQlzY3Jfd3JpdGVfZmx1c2goYXAsIFNDUl9DT05UUk9MLCAweDMwMSk7CisJc2F0YV9zY3Jfd3JpdGVfZmx1c2goYXAsIFNDUl9DT05UUk9MLCAweDMwMSk7CiAJX19tc2xlZXAoMSwgY2FuX3NsZWVwKTsKIAotCXNjcl93cml0ZV9mbHVzaChhcCwgU0NSX0NPTlRST0wsIDB4MzAwKTsKKwlzYXRhX3Njcl93cml0ZV9mbHVzaChhcCwgU0NSX0NPTlRST0wsIDB4MzAwKTsKIAlfX21zbGVlcCgyMCwgY2FuX3NsZWVwKTsKIAogCXRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcygyMDApOwogCWRvIHsKLQkJc3N0YXR1cyA9IHNjcl9yZWFkKGFwLCBTQ1JfU1RBVFVTKSAmIDB4MzsKKwkJc2F0YV9zY3JfcmVhZChhcCwgU0NSX1NUQVRVUywgJnNzdGF0dXMpOworCQlzc3RhdHVzICY9IDB4MzsKIAkJaWYgKChzc3RhdHVzID09IDMpIHx8IChzc3RhdHVzID09IDApKQogCQkJYnJlYWs7CiAKQEAgLTE5NzQsMTEgKzE5NzgsMTIgQEAKIAkJIlNDdHJsIDB4JTA4eFxuIiwgbXZfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMpLAogCQltdl9zY3JfcmVhZChhcCwgU0NSX0VSUk9SKSwgbXZfc2NyX3JlYWQoYXAsIFNDUl9DT05UUk9MKSk7CiAKLQlpZiAoc2F0YV9kZXZfcHJlc2VudChhcCkpIHsKKwlpZiAoYXRhX3BvcnRfb25saW5lKGFwKSkgewogCQlhdGFfcG9ydF9wcm9iZShhcCk7CiAJfSBlbHNlIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiYXRhJXU6IG5vIGRldmljZSBmb3VuZCAocGh5IHN0YXQgJTA4eClcbiIsCi0JCSAgICAgICBhcC0+aWQsIHNjcl9yZWFkKGFwLCBTQ1JfU1RBVFVTKSk7CisJCXNhdGFfc2NyX3JlYWQoYXAsIFNDUl9TVEFUVVMsICZzc3RhdHVzKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0lORk8sCisJCQkJIm5vIGRldmljZSBmb3VuZCAocGh5IHN0YXQgJTA4eClcbiIsIHNzdGF0dXMpOwogCQlhdGFfcG9ydF9kaXNhYmxlKGFwKTsKIAkJcmV0dXJuOwogCX0KQEAgLTIwMDUsNyArMjAxMCw3IEBACiAJdGYubnNlY3QgPSByZWFkYigodm9pZCBfX2lvbWVtICopIGFwLT5pb2FkZHIubnNlY3RfYWRkcik7CiAKIAlkZXYtPmNsYXNzID0gYXRhX2Rldl9jbGFzc2lmeSgmdGYpOwotCWlmICghYXRhX2Rldl9wcmVzZW50KGRldikpIHsKKwlpZiAoIWF0YV9kZXZfZW5hYmxlZChkZXYpKSB7CiAJCVZQUklOVEsoIlBvcnQgZGlzYWJsZWQgcG9zdC1zaWc6IE5vIGRldmljZSBwcmVzZW50LlxuIik7CiAJCWF0YV9wb3J0X2Rpc2FibGUoYXApOwogCX0KQEAgLTIwMzcsNyArMjA0Miw3IEBACiAJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JcHJpbnRrKEtFUk5fRVJSICJhdGEldTogRW50ZXJpbmcgbXZfZW5nX3RpbWVvdXRcbiIsYXAtPmlkKTsKKwlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLCAiRW50ZXJpbmcgbXZfZW5nX3RpbWVvdXRcbiIpOwogCURQUklOVEsoIkFsbCByZWdzIEAgc3RhcnQgb2YgZW5nX3RpbWVvdXRcbiIpOwogCW12X2R1bXBfYWxsX3JlZ3MoYXAtPmhvc3Rfc2V0LT5tbWlvX2Jhc2UsIGFwLT5wb3J0X25vLAogCQkJIHRvX3BjaV9kZXYoYXAtPmhvc3Rfc2V0LT5kZXYpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zYXRhX252LmMgYi9kcml2ZXJzL3Njc2kvc2F0YV9udi5jCmluZGV4IDlmNTUzMDguLmQxOGU3ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zYXRhX252LmMKKysrIGIvZHJpdmVycy9zY3NpL3NhdGFfbnYuYwpAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpYmF0YS5oPgogCiAjZGVmaW5lIERSVl9OQU1FCQkJInNhdGFfbnYiCi0jZGVmaW5lIERSVl9WRVJTSU9OCQkJIjAuOCIKKyNkZWZpbmUgRFJWX1ZFUlNJT04JCQkiMC45IgogCiBlbnVtIHsKIAlOVl9QT1JUUwkJCT0gMiwKQEAgLTU0LDQwICs1NCwyNSBAQAogCU5WX1BPUlQwX1NDUl9SRUdfT0ZGU0VUCQk9IDB4MDAsCiAJTlZfUE9SVDFfU0NSX1JFR19PRkZTRVQJCT0gMHg0MCwKIAorCS8qIElOVF9TVEFUVVMvRU5BQkxFICovCiAJTlZfSU5UX1NUQVRVUwkJCT0gMHgxMCwKLQlOVl9JTlRfU1RBVFVTX0NLODA0CQk9IDB4NDQwLAotCU5WX0lOVF9TVEFUVVNfUERFVl9JTlQJCT0gMHgwMSwKLQlOVl9JTlRfU1RBVFVTX1BERVZfUE0JCT0gMHgwMiwKLQlOVl9JTlRfU1RBVFVTX1BERVZfQURERUQJPSAweDA0LAotCU5WX0lOVF9TVEFUVVNfUERFVl9SRU1PVkVECT0gMHgwOCwKLQlOVl9JTlRfU1RBVFVTX1NERVZfSU5UCQk9IDB4MTAsCi0JTlZfSU5UX1NUQVRVU19TREVWX1BNCQk9IDB4MjAsCi0JTlZfSU5UX1NUQVRVU19TREVWX0FEREVECT0gMHg0MCwKLQlOVl9JTlRfU1RBVFVTX1NERVZfUkVNT1ZFRAk9IDB4ODAsCi0JTlZfSU5UX1NUQVRVU19QREVWX0hPVFBMVUcJPSAoTlZfSU5UX1NUQVRVU19QREVWX0FEREVEIHwKLQkJCQkJICAgTlZfSU5UX1NUQVRVU19QREVWX1JFTU9WRUQpLAotCU5WX0lOVF9TVEFUVVNfU0RFVl9IT1RQTFVHCT0gKE5WX0lOVF9TVEFUVVNfU0RFVl9BRERFRCB8Ci0JCQkJCSAgIE5WX0lOVF9TVEFUVVNfU0RFVl9SRU1PVkVEKSwKLQlOVl9JTlRfU1RBVFVTX0hPVFBMVUcJCT0gKE5WX0lOVF9TVEFUVVNfUERFVl9IT1RQTFVHIHwKLQkJCQkJICAgTlZfSU5UX1NUQVRVU19TREVWX0hPVFBMVUcpLAotCiAJTlZfSU5UX0VOQUJMRQkJCT0gMHgxMSwKKwlOVl9JTlRfU1RBVFVTX0NLODA0CQk9IDB4NDQwLAogCU5WX0lOVF9FTkFCTEVfQ0s4MDQJCT0gMHg0NDEsCi0JTlZfSU5UX0VOQUJMRV9QREVWX01BU0sJCT0gMHgwMSwKLQlOVl9JTlRfRU5BQkxFX1BERVZfUE0JCT0gMHgwMiwKLQlOVl9JTlRfRU5BQkxFX1BERVZfQURERUQJPSAweDA0LAotCU5WX0lOVF9FTkFCTEVfUERFVl9SRU1PVkVECT0gMHgwOCwKLQlOVl9JTlRfRU5BQkxFX1NERVZfTUFTSwkJPSAweDEwLAotCU5WX0lOVF9FTkFCTEVfU0RFVl9QTQkJPSAweDIwLAotCU5WX0lOVF9FTkFCTEVfU0RFVl9BRERFRAk9IDB4NDAsCi0JTlZfSU5UX0VOQUJMRV9TREVWX1JFTU9WRUQJPSAweDgwLAotCU5WX0lOVF9FTkFCTEVfUERFVl9IT1RQTFVHCT0gKE5WX0lOVF9FTkFCTEVfUERFVl9BRERFRCB8Ci0JCQkJCSAgIE5WX0lOVF9FTkFCTEVfUERFVl9SRU1PVkVEKSwKLQlOVl9JTlRfRU5BQkxFX1NERVZfSE9UUExVRwk9IChOVl9JTlRfRU5BQkxFX1NERVZfQURERUQgfAotCQkJCQkgICBOVl9JTlRfRU5BQkxFX1NERVZfUkVNT1ZFRCksCi0JTlZfSU5UX0VOQUJMRV9IT1RQTFVHCQk9IChOVl9JTlRfRU5BQkxFX1BERVZfSE9UUExVRyB8Ci0JCQkJCSAgIE5WX0lOVF9FTkFCTEVfU0RFVl9IT1RQTFVHKSwKIAorCS8qIElOVF9TVEFUVVMvRU5BQkxFIGJpdHMgKi8KKwlOVl9JTlRfREVWCQkJPSAweDAxLAorCU5WX0lOVF9QTQkJCT0gMHgwMiwKKwlOVl9JTlRfQURERUQJCQk9IDB4MDQsCisJTlZfSU5UX1JFTU9WRUQJCQk9IDB4MDgsCisKKwlOVl9JTlRfUE9SVF9TSElGVAkJPSA0LAkvKiBlYWNoIHBvcnQgb2NjdXBpZXMgNCBiaXRzICovCisKKwlOVl9JTlRfQUxMCQkJPSAweDBmLAorCU5WX0lOVF9NQVNLCQkJPSBOVl9JTlRfREVWIHwKKwkJCQkJICBOVl9JTlRfQURERUQgfCBOVl9JTlRfUkVNT1ZFRCwKKworCS8qIElOVF9DT05GSUcgKi8KIAlOVl9JTlRfQ09ORklHCQkJPSAweDEyLAogCU5WX0lOVF9DT05GSUdfTUVUSEQJCT0gMHgwMSwgLy8gMCA9IElOVCwgMSA9IFNNSQogCkBAIC05NywyMyArODIsMjcgQEAKIH07CiAKIHN0YXRpYyBpbnQgbnZfaW5pdF9vbmUgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KTsKLXN0YXRpYyBpcnFyZXR1cm5fdCBudl9pbnRlcnJ1cHQgKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSwKLQkJCQkgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworc3RhdGljIHZvaWQgbnZfY2s4MDRfaG9zdF9zdG9wKHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0KTsKK3N0YXRpYyBpcnFyZXR1cm5fdCBudl9nZW5lcmljX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCisJCQkJCXN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK3N0YXRpYyBpcnFyZXR1cm5fdCBudl9uZjJfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSwKKwkJCQkgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworc3RhdGljIGlycXJldHVybl90IG52X2NrODA0X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCisJCQkJICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwogc3RhdGljIHUzMiBudl9zY3JfcmVhZCAoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50IHNjX3JlZyk7CiBzdGF0aWMgdm9pZCBudl9zY3Jfd3JpdGUgKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCBzY19yZWcsIHUzMiB2YWwpOwotc3RhdGljIHZvaWQgbnZfaG9zdF9zdG9wIChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7Ci1zdGF0aWMgdm9pZCBudl9lbmFibGVfaG90cGx1ZyhzdHJ1Y3QgYXRhX3Byb2JlX2VudCAqcHJvYmVfZW50KTsKLXN0YXRpYyB2b2lkIG52X2Rpc2FibGVfaG90cGx1ZyhzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7Ci1zdGF0aWMgaW50IG52X2NoZWNrX2hvdHBsdWcoc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQpOwotc3RhdGljIHZvaWQgbnZfZW5hYmxlX2hvdHBsdWdfY2s4MDQoc3RydWN0IGF0YV9wcm9iZV9lbnQgKnByb2JlX2VudCk7Ci1zdGF0aWMgdm9pZCBudl9kaXNhYmxlX2hvdHBsdWdfY2s4MDQoc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQpOwotc3RhdGljIGludCBudl9jaGVja19ob3RwbHVnX2NrODA0KHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0KTsKKworc3RhdGljIHZvaWQgbnZfbmYyX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIG52X25mMl90aGF3KHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgbnZfY2s4MDRfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgbnZfY2s4MDRfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIG52X2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCk7CiAKIGVudW0gbnZfaG9zdF90eXBlCiB7CiAJR0VORVJJQywKIAlORk9SQ0UyLAotCU5GT1JDRTMsCisJTkZPUkNFMyA9IE5GT1JDRTIsCS8qIE5GMiA9PSBORjMgYXMgZmFyIGFzIHNhdGFfbnYgaXMgY29uY2VybmVkICovCiAJQ0s4MDQKIH07CiAKQEAgLTE0MCw2ICsxMjksMTYgQEAKIAkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgR0VORVJJQyB9LAogCXsgUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A1NV9TQVRBMiwKIAkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgR0VORVJJQyB9LAorCXsgUENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A2MV9TQVRBLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX1NBVEEyLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX1NBVEEzLAorCQlQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwNDVjLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwNDVkLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwNDVlLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgwNDVmLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBHRU5FUklDIH0sCiAJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgUENJX0FOWV9JRCwKIAkJUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKIAkJUENJX0NMQVNTX1NUT1JBR0VfSURFPDw4LCAweGZmZmYwMCwgR0VORVJJQyB9LApAQCAtMTQ5LDQ2ICsxNDgsNiBAQAogCXsgMCwgfSAvKiB0ZXJtaW5hdGUgbGlzdCAqLwogfTsKIAotc3RydWN0IG52X2hvc3RfZGVzYwotewotCWVudW0gbnZfaG9zdF90eXBlCWhvc3RfdHlwZTsKLQl2b2lkCQkJKCplbmFibGVfaG90cGx1Zykoc3RydWN0IGF0YV9wcm9iZV9lbnQgKnByb2JlX2VudCk7Ci0Jdm9pZAkJCSgqZGlzYWJsZV9ob3RwbHVnKShzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7Ci0JaW50CQkJKCpjaGVja19ob3RwbHVnKShzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7Ci0KLX07Ci1zdGF0aWMgc3RydWN0IG52X2hvc3RfZGVzYyBudl9kZXZpY2VfdGJsW10gPSB7Ci0JewotCQkuaG9zdF90eXBlCT0gR0VORVJJQywKLQkJLmVuYWJsZV9ob3RwbHVnCT0gTlVMTCwKLQkJLmRpc2FibGVfaG90cGx1Zz0gTlVMTCwKLQkJLmNoZWNrX2hvdHBsdWcJPSBOVUxMLAotCX0sCi0JewotCQkuaG9zdF90eXBlCT0gTkZPUkNFMiwKLQkJLmVuYWJsZV9ob3RwbHVnCT0gbnZfZW5hYmxlX2hvdHBsdWcsCi0JCS5kaXNhYmxlX2hvdHBsdWc9IG52X2Rpc2FibGVfaG90cGx1ZywKLQkJLmNoZWNrX2hvdHBsdWcJPSBudl9jaGVja19ob3RwbHVnLAotCX0sCi0JewotCQkuaG9zdF90eXBlCT0gTkZPUkNFMywKLQkJLmVuYWJsZV9ob3RwbHVnCT0gbnZfZW5hYmxlX2hvdHBsdWcsCi0JCS5kaXNhYmxlX2hvdHBsdWc9IG52X2Rpc2FibGVfaG90cGx1ZywKLQkJLmNoZWNrX2hvdHBsdWcJPSBudl9jaGVja19ob3RwbHVnLAotCX0sCi0JewkuaG9zdF90eXBlCT0gQ0s4MDQsCi0JCS5lbmFibGVfaG90cGx1Zwk9IG52X2VuYWJsZV9ob3RwbHVnX2NrODA0LAotCQkuZGlzYWJsZV9ob3RwbHVnPSBudl9kaXNhYmxlX2hvdHBsdWdfY2s4MDQsCi0JCS5jaGVja19ob3RwbHVnCT0gbnZfY2hlY2tfaG90cGx1Z19jazgwNCwKLQl9LAotfTsKLQotc3RydWN0IG52X2hvc3QKLXsKLQlzdHJ1Y3QgbnZfaG9zdF9kZXNjCSpob3N0X2Rlc2M7Ci0JdW5zaWduZWQgbG9uZwkJaG9zdF9mbGFnczsKLX07Ci0KIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBudl9wY2lfZHJpdmVyID0gewogCS5uYW1lCQkJPSBEUlZfTkFNRSwKIAkuaWRfdGFibGUJCT0gbnZfcGNpX3RibCwKQEAgLTIxMCw1MSArMTY5LDExOSBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgbnZfb3BzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIG52X2dlbmVyaWNfb3BzID0gewogCS5wb3J0X2Rpc2FibGUJCT0gYXRhX3BvcnRfZGlzYWJsZSwKIAkudGZfbG9hZAkJPSBhdGFfdGZfbG9hZCwKIAkudGZfcmVhZAkJPSBhdGFfdGZfcmVhZCwKIAkuZXhlY19jb21tYW5kCQk9IGF0YV9leGVjX2NvbW1hbmQsCiAJLmNoZWNrX3N0YXR1cwkJPSBhdGFfY2hlY2tfc3RhdHVzLAogCS5kZXZfc2VsZWN0CQk9IGF0YV9zdGRfZGV2X3NlbGVjdCwKLQkucGh5X3Jlc2V0CQk9IHNhdGFfcGh5X3Jlc2V0LAogCS5ibWRtYV9zZXR1cAkJPSBhdGFfYm1kbWFfc2V0dXAsCiAJLmJtZG1hX3N0YXJ0CQk9IGF0YV9ibWRtYV9zdGFydCwKIAkuYm1kbWFfc3RvcAkJPSBhdGFfYm1kbWFfc3RvcCwKIAkuYm1kbWFfc3RhdHVzCQk9IGF0YV9ibWRtYV9zdGF0dXMsCiAJLnFjX3ByZXAJCT0gYXRhX3FjX3ByZXAsCiAJLnFjX2lzc3VlCQk9IGF0YV9xY19pc3N1ZV9wcm90LAotCS5lbmdfdGltZW91dAkJPSBhdGFfZW5nX3RpbWVvdXQsCi0JLmlycV9oYW5kbGVyCQk9IG52X2ludGVycnVwdCwKKwkuZnJlZXplCQkJPSBhdGFfYm1kbWFfZnJlZXplLAorCS50aGF3CQkJPSBhdGFfYm1kbWFfdGhhdywKKwkuZXJyb3JfaGFuZGxlcgkJPSBudl9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9waW9fZGF0YV94ZmVyLAorCS5pcnFfaGFuZGxlcgkJPSBudl9nZW5lcmljX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCiAJLnNjcl9yZWFkCQk9IG52X3Njcl9yZWFkLAogCS5zY3Jfd3JpdGUJCT0gbnZfc2NyX3dyaXRlLAogCS5wb3J0X3N0YXJ0CQk9IGF0YV9wb3J0X3N0YXJ0LAogCS5wb3J0X3N0b3AJCT0gYXRhX3BvcnRfc3RvcCwKLQkuaG9zdF9zdG9wCQk9IG52X2hvc3Rfc3RvcCwKKwkuaG9zdF9zdG9wCQk9IGF0YV9wY2lfaG9zdF9zdG9wLAogfTsKIAotLyogRklYTUU6IFRoZSBoYXJkd2FyZSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IFNBVEEgUEhZIGNvbnRyb2xzCi0gKiB0byBzdXBwb3J0IEFUQV9GTEFHX1NBVEFfUkVTRVQuICBIb3dldmVyLCBpdCBpcyBjdXJyZW50bHkKLSAqIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHRoYXQgZmxhZywgdG8gc29sdmUgbWlzZGV0ZWN0aW9uIHByb2JsZW1zLgotICogU2VlIGh0dHA6Ly9idWdtZS5vc2RsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM1MiBmb3IgbW9yZSBpbmZvLgotICoKLSAqIFRoaXMgcHJvYmxlbSByZWFsbHkgbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkIGZ1cnRoZXIuICBCdXQgaW4gdGhlCi0gKiBtZWFudGltZSwgd2UgYXZvaWQgQVRBX0ZMQUdfU0FUQV9SRVNFVCB0byBnZXQgcGVvcGxlIHdvcmtpbmcuCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfaW5mbyBudl9wb3J0X2luZm8gPSB7Ci0JLnNodAkJPSAmbnZfc2h0LAotCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8Ci0JCQkgIC8qIEFUQV9GTEFHX1NBVEFfUkVTRVQgfCAqLwotCQkJICBBVEFfRkxBR19TUlNUIHwKLQkJCSAgQVRBX0ZMQUdfTk9fTEVHQUNZLAotCS5waW9fbWFzawk9IE5WX1BJT19NQVNLLAotCS5td2RtYV9tYXNrCT0gTlZfTVdETUFfTUFTSywKLQkudWRtYV9tYXNrCT0gTlZfVURNQV9NQVNLLAotCS5wb3J0X29wcwk9ICZudl9vcHMsCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgbnZfbmYyX29wcyA9IHsKKwkucG9ydF9kaXNhYmxlCQk9IGF0YV9wb3J0X2Rpc2FibGUsCisJLnRmX2xvYWQJCT0gYXRhX3RmX2xvYWQsCisJLnRmX3JlYWQJCT0gYXRhX3RmX3JlYWQsCisJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAorCS5jaGVja19zdGF0dXMJCT0gYXRhX2NoZWNrX3N0YXR1cywKKwkuZGV2X3NlbGVjdAkJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCisJLmJtZG1hX3NldHVwCQk9IGF0YV9ibWRtYV9zZXR1cCwKKwkuYm1kbWFfc3RhcnQJCT0gYXRhX2JtZG1hX3N0YXJ0LAorCS5ibWRtYV9zdG9wCQk9IGF0YV9ibWRtYV9zdG9wLAorCS5ibWRtYV9zdGF0dXMJCT0gYXRhX2JtZG1hX3N0YXR1cywKKwkucWNfcHJlcAkJPSBhdGFfcWNfcHJlcCwKKwkucWNfaXNzdWUJCT0gYXRhX3FjX2lzc3VlX3Byb3QsCisJLmZyZWV6ZQkJCT0gbnZfbmYyX2ZyZWV6ZSwKKwkudGhhdwkJCT0gbnZfbmYyX3RoYXcsCisJLmVycm9yX2hhbmRsZXIJCT0gbnZfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQsCisJLmRhdGFfeGZlcgkJPSBhdGFfcGlvX2RhdGFfeGZlciwKKwkuaXJxX2hhbmRsZXIJCT0gbnZfbmYyX2ludGVycnVwdCwKKwkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCisJLnNjcl9yZWFkCQk9IG52X3Njcl9yZWFkLAorCS5zY3Jfd3JpdGUJCT0gbnZfc2NyX3dyaXRlLAorCS5wb3J0X3N0YXJ0CQk9IGF0YV9wb3J0X3N0YXJ0LAorCS5wb3J0X3N0b3AJCT0gYXRhX3BvcnRfc3RvcCwKKwkuaG9zdF9zdG9wCQk9IGF0YV9wY2lfaG9zdF9zdG9wLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIG52X2NrODA0X29wcyA9IHsKKwkucG9ydF9kaXNhYmxlCQk9IGF0YV9wb3J0X2Rpc2FibGUsCisJLnRmX2xvYWQJCT0gYXRhX3RmX2xvYWQsCisJLnRmX3JlYWQJCT0gYXRhX3RmX3JlYWQsCisJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAorCS5jaGVja19zdGF0dXMJCT0gYXRhX2NoZWNrX3N0YXR1cywKKwkuZGV2X3NlbGVjdAkJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCisJLmJtZG1hX3NldHVwCQk9IGF0YV9ibWRtYV9zZXR1cCwKKwkuYm1kbWFfc3RhcnQJCT0gYXRhX2JtZG1hX3N0YXJ0LAorCS5ibWRtYV9zdG9wCQk9IGF0YV9ibWRtYV9zdG9wLAorCS5ibWRtYV9zdGF0dXMJCT0gYXRhX2JtZG1hX3N0YXR1cywKKwkucWNfcHJlcAkJPSBhdGFfcWNfcHJlcCwKKwkucWNfaXNzdWUJCT0gYXRhX3FjX2lzc3VlX3Byb3QsCisJLmZyZWV6ZQkJCT0gbnZfY2s4MDRfZnJlZXplLAorCS50aGF3CQkJPSBudl9jazgwNF90aGF3LAorCS5lcnJvcl9oYW5kbGVyCQk9IG52X2Vycm9yX2hhbmRsZXIsCisJLnBvc3RfaW50ZXJuYWxfY21kCT0gYXRhX2JtZG1hX3Bvc3RfaW50ZXJuYWxfY21kLAorCS5kYXRhX3hmZXIJCT0gYXRhX3Bpb19kYXRhX3hmZXIsCisJLmlycV9oYW5kbGVyCQk9IG52X2NrODA0X2ludGVycnVwdCwKKwkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCisJLnNjcl9yZWFkCQk9IG52X3Njcl9yZWFkLAorCS5zY3Jfd3JpdGUJCT0gbnZfc2NyX3dyaXRlLAorCS5wb3J0X3N0YXJ0CQk9IGF0YV9wb3J0X3N0YXJ0LAorCS5wb3J0X3N0b3AJCT0gYXRhX3BvcnRfc3RvcCwKKwkuaG9zdF9zdG9wCQk9IG52X2NrODA0X2hvc3Rfc3RvcCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXRhX3BvcnRfaW5mbyBudl9wb3J0X2luZm9bXSA9IHsKKwkvKiBnZW5lcmljICovCisJeworCQkuc2h0CQk9ICZudl9zaHQsCisJCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSwKKwkJLnBpb19tYXNrCT0gTlZfUElPX01BU0ssCisJCS5td2RtYV9tYXNrCT0gTlZfTVdETUFfTUFTSywKKwkJLnVkbWFfbWFzawk9IE5WX1VETUFfTUFTSywKKwkJLnBvcnRfb3BzCT0gJm52X2dlbmVyaWNfb3BzLAorCX0sCisJLyogbmZvcmNlMi8zICovCisJeworCQkuc2h0CQk9ICZudl9zaHQsCisJCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSwKKwkJLnBpb19tYXNrCT0gTlZfUElPX01BU0ssCisJCS5td2RtYV9tYXNrCT0gTlZfTVdETUFfTUFTSywKKwkJLnVkbWFfbWFzawk9IE5WX1VETUFfTUFTSywKKwkJLnBvcnRfb3BzCT0gJm52X25mMl9vcHMsCisJfSwKKwkvKiBjazgwNCAqLworCXsKKwkJLnNodAkJPSAmbnZfc2h0LAorCQkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1ksCisJCS5waW9fbWFzawk9IE5WX1BJT19NQVNLLAorCQkubXdkbWFfbWFzawk9IE5WX01XRE1BX01BU0ssCisJCS51ZG1hX21hc2sJPSBOVl9VRE1BX01BU0ssCisJCS5wb3J0X29wcwk9ICZudl9jazgwNF9vcHMsCisJfSwKIH07CiAKIE1PRFVMRV9BVVRIT1IoIk5WSURJQSIpOwpAQCAtMjYzLDExICsyOTAsMTAgQEAKIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBudl9wY2lfdGJsKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9WRVJTSU9OKTsKIAotc3RhdGljIGlycXJldHVybl90IG52X2ludGVycnVwdCAoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLAotCQkJCSBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3N0YXRpYyBpcnFyZXR1cm5fdCBudl9nZW5lcmljX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCisJCQkJCXN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2luc3RhbmNlOwotCXN0cnVjdCBudl9ob3N0ICpob3N0ID0gaG9zdF9zZXQtPnByaXZhdGVfZGF0YTsKIAl1bnNpZ25lZCBpbnQgaTsKIAl1bnNpZ25lZCBpbnQgaGFuZGxlZCA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTI3OSwxMSArMzA1LDExIEBACiAKIAkJYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CiAJCWlmIChhcCAmJgotCQkgICAgIShhcC0+ZmxhZ3MgJiAoQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCB8IEFUQV9GTEFHX05PSU5UUikpKSB7CisJCSAgICAhKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKSkgewogCQkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKIAogCQkJcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKLQkJCWlmIChxYyAmJiAoIShxYy0+dGYuY3RsICYgQVRBX05JRU4pKSkKKwkJCWlmIChxYyAmJiAoIShxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykpKQogCQkJCWhhbmRsZWQgKz0gYXRhX2hvc3RfaW50cihhcCwgcWMpOwogCQkJZWxzZQogCQkJCS8vIE5vIHJlcXVlc3QgcGVuZGluZz8gIENsZWFyIGludGVycnVwdCBzdGF0dXMKQEAgLTI5MywxNCArMzE5LDg4IEBACiAKIAl9CiAKLQlpZiAoaG9zdC0+aG9zdF9kZXNjLT5jaGVja19ob3RwbHVnKQotCQloYW5kbGVkICs9IGhvc3QtPmhvc3RfZGVzYy0+Y2hlY2tfaG90cGx1Zyhob3N0X3NldCk7Ci0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZob3N0X3NldC0+bG9jaywgZmxhZ3MpOwogCiAJcmV0dXJuIElSUV9SRVRWQUwoaGFuZGxlZCk7CiB9CiAKK3N0YXRpYyBpbnQgbnZfaG9zdF9pbnRyKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHU4IGlycV9zdGF0KQoreworCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKKwlpbnQgaGFuZGxlZDsKKworCS8qIGZyZWV6ZSBpZiBob3RwbHVnZ2VkICovCisJaWYgKHVubGlrZWx5KGlycV9zdGF0ICYgKE5WX0lOVF9BRERFRCB8IE5WX0lOVF9SRU1PVkVEKSkpIHsKKwkJYXRhX3BvcnRfZnJlZXplKGFwKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogYmFpbCBvdXQgaWYgbm90IG91ciBpbnRlcnJ1cHQgKi8KKwlpZiAoIShpcnFfc3RhdCAmIE5WX0lOVF9ERVYpKQorCQlyZXR1cm4gMDsKKworCS8qIERFViBpbnRlcnJ1cHQgdy8gbm8gYWN0aXZlIHFjPyAqLworCWlmICh1bmxpa2VseSghcWMgfHwgKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKSkpIHsKKwkJYXRhX2NoZWNrX3N0YXR1cyhhcCk7CisJCXJldHVybiAxOworCX0KKworCS8qIGhhbmRsZSBpbnRlcnJ1cHQgKi8KKwloYW5kbGVkID0gYXRhX2hvc3RfaW50cihhcCwgcWMpOworCWlmICh1bmxpa2VseSghaGFuZGxlZCkpIHsKKwkJLyogc3B1cmlvdXMsIGNsZWFyIGl0ICovCisJCWF0YV9jaGVja19zdGF0dXMoYXApOworCX0KKworCXJldHVybiAxOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgbnZfZG9faW50ZXJydXB0KHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0LCB1OCBpcnFfc3RhdCkKK3sKKwlpbnQgaSwgaGFuZGxlZCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgaG9zdF9zZXQtPm5fcG9ydHM7IGkrKykgeworCQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gaG9zdF9zZXQtPnBvcnRzW2ldOworCisJCWlmIChhcCAmJiAhKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKSkKKwkJCWhhbmRsZWQgKz0gbnZfaG9zdF9pbnRyKGFwLCBpcnFfc3RhdCk7CisKKwkJaXJxX3N0YXQgPj49IE5WX0lOVF9QT1JUX1NISUZUOworCX0KKworCXJldHVybiBJUlFfUkVUVkFMKGhhbmRsZWQpOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgbnZfbmYyX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCisJCQkJICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2luc3RhbmNlOworCXU4IGlycV9zdGF0OworCWlycXJldHVybl90IHJldDsKKworCXNwaW5fbG9jaygmaG9zdF9zZXQtPmxvY2spOworCWlycV9zdGF0ID0gaW5iKGhvc3Rfc2V0LT5wb3J0c1swXS0+aW9hZGRyLnNjcl9hZGRyICsgTlZfSU5UX1NUQVRVUyk7CisJcmV0ID0gbnZfZG9faW50ZXJydXB0KGhvc3Rfc2V0LCBpcnFfc3RhdCk7CisJc3Bpbl91bmxvY2soJmhvc3Rfc2V0LT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBudl9jazgwNF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLAorCQkJCSAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2luc3RhbmNlOworCXU4IGlycV9zdGF0OworCWlycXJldHVybl90IHJldDsKKworCXNwaW5fbG9jaygmaG9zdF9zZXQtPmxvY2spOworCWlycV9zdGF0ID0gcmVhZGIoaG9zdF9zZXQtPm1taW9fYmFzZSArIE5WX0lOVF9TVEFUVVNfQ0s4MDQpOworCXJldCA9IG52X2RvX2ludGVycnVwdChob3N0X3NldCwgaXJxX3N0YXQpOworCXNwaW5fdW5sb2NrKCZob3N0X3NldC0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdTMyIG52X3Njcl9yZWFkIChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgc2NfcmVnKQogewogCWlmIChzY19yZWcgPiBTQ1JfQ09OVFJPTCkKQEAgLTMxNywyMyArNDE3LDc0IEBACiAJaW93cml0ZTMyKHZhbCwgKHZvaWQgX19pb21lbSAqKWFwLT5pb2FkZHIuc2NyX2FkZHIgKyAoc2NfcmVnICogNCkpOwogfQogCi1zdGF0aWMgdm9pZCBudl9ob3N0X3N0b3AgKHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0KQorc3RhdGljIHZvaWQgbnZfbmYyX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewotCXN0cnVjdCBudl9ob3N0ICpob3N0ID0gaG9zdF9zZXQtPnByaXZhdGVfZGF0YTsKKwl1bnNpZ25lZCBsb25nIHNjcl9hZGRyID0gYXAtPmhvc3Rfc2V0LT5wb3J0c1swXS0+aW9hZGRyLnNjcl9hZGRyOworCWludCBzaGlmdCA9IGFwLT5wb3J0X25vICogTlZfSU5UX1BPUlRfU0hJRlQ7CisJdTggbWFzazsKIAotCS8vIERpc2FibGUgaG90cGx1ZyBldmVudCBpbnRlcnJ1cHRzLgotCWlmIChob3N0LT5ob3N0X2Rlc2MtPmRpc2FibGVfaG90cGx1ZykKLQkJaG9zdC0+aG9zdF9kZXNjLT5kaXNhYmxlX2hvdHBsdWcoaG9zdF9zZXQpOworCW1hc2sgPSBpbmIoc2NyX2FkZHIgKyBOVl9JTlRfRU5BQkxFKTsKKwltYXNrICY9IH4oTlZfSU5UX0FMTCA8PCBzaGlmdCk7CisJb3V0YihtYXNrLCBzY3JfYWRkciArIE5WX0lOVF9FTkFCTEUpOworfQogCi0Ja2ZyZWUoaG9zdCk7CitzdGF0aWMgdm9pZCBudl9uZjJfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXVuc2lnbmVkIGxvbmcgc2NyX2FkZHIgPSBhcC0+aG9zdF9zZXQtPnBvcnRzWzBdLT5pb2FkZHIuc2NyX2FkZHI7CisJaW50IHNoaWZ0ID0gYXAtPnBvcnRfbm8gKiBOVl9JTlRfUE9SVF9TSElGVDsKKwl1OCBtYXNrOwogCi0JYXRhX3BjaV9ob3N0X3N0b3AoaG9zdF9zZXQpOworCW91dGIoTlZfSU5UX0FMTCA8PCBzaGlmdCwgc2NyX2FkZHIgKyBOVl9JTlRfU1RBVFVTKTsKKworCW1hc2sgPSBpbmIoc2NyX2FkZHIgKyBOVl9JTlRfRU5BQkxFKTsKKwltYXNrIHw9IChOVl9JTlRfTUFTSyA8PCBzaGlmdCk7CisJb3V0YihtYXNrLCBzY3JfYWRkciArIE5WX0lOVF9FTkFCTEUpOworfQorCitzdGF0aWMgdm9pZCBudl9jazgwNF9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl2b2lkIF9faW9tZW0gKm1taW9fYmFzZSA9IGFwLT5ob3N0X3NldC0+bW1pb19iYXNlOworCWludCBzaGlmdCA9IGFwLT5wb3J0X25vICogTlZfSU5UX1BPUlRfU0hJRlQ7CisJdTggbWFzazsKKworCW1hc2sgPSByZWFkYihtbWlvX2Jhc2UgKyBOVl9JTlRfRU5BQkxFX0NLODA0KTsKKwltYXNrICY9IH4oTlZfSU5UX0FMTCA8PCBzaGlmdCk7CisJd3JpdGViKG1hc2ssIG1taW9fYmFzZSArIE5WX0lOVF9FTkFCTEVfQ0s4MDQpOworfQorCitzdGF0aWMgdm9pZCBudl9jazgwNF90aGF3KHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJdm9pZCBfX2lvbWVtICptbWlvX2Jhc2UgPSBhcC0+aG9zdF9zZXQtPm1taW9fYmFzZTsKKwlpbnQgc2hpZnQgPSBhcC0+cG9ydF9ubyAqIE5WX0lOVF9QT1JUX1NISUZUOworCXU4IG1hc2s7CisKKwl3cml0ZWIoTlZfSU5UX0FMTCA8PCBzaGlmdCwgbW1pb19iYXNlICsgTlZfSU5UX1NUQVRVU19DSzgwNCk7CisKKwltYXNrID0gcmVhZGIobW1pb19iYXNlICsgTlZfSU5UX0VOQUJMRV9DSzgwNCk7CisJbWFzayB8PSAoTlZfSU5UX01BU0sgPDwgc2hpZnQpOworCXdyaXRlYihtYXNrLCBtbWlvX2Jhc2UgKyBOVl9JTlRfRU5BQkxFX0NLODA0KTsKK30KKworc3RhdGljIGludCBudl9oYXJkcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzcykKK3sKKwl1bnNpZ25lZCBpbnQgZHVtbXk7CisKKwkvKiBTQVRBIGhhcmRyZXNldCBmYWlscyB0byByZXRyaWV2ZSBwcm9wZXIgZGV2aWNlIHNpZ25hdHVyZSBvbgorCSAqIHNvbWUgY29udHJvbGxlcnMuICBEb24ndCBjbGFzc2lmeSBvbiBoYXJkcmVzZXQuICBGb3IgbW9yZQorCSAqIGluZm8sIHNlZSBodHRwOi8vYnVnbWUub3NkbC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNTIKKwkgKi8KKwlyZXR1cm4gc2F0YV9zdGRfaGFyZHJlc2V0KGFwLCAmZHVtbXkpOworfQorCitzdGF0aWMgdm9pZCBudl9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJYXRhX2JtZG1hX2RyaXZlX2VoKGFwLCBhdGFfc3RkX3ByZXJlc2V0LCBhdGFfc3RkX3NvZnRyZXNldCwKKwkJCSAgIG52X2hhcmRyZXNldCwgYXRhX3N0ZF9wb3N0cmVzZXQpOwogfQogCiBzdGF0aWMgaW50IG52X2luaXRfb25lIChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIHsKIAlzdGF0aWMgaW50IHByaW50ZWRfdmVyc2lvbiA9IDA7Ci0Jc3RydWN0IG52X2hvc3QgKmhvc3Q7CiAJc3RydWN0IGF0YV9wb3J0X2luZm8gKnBwaTsKIAlzdHJ1Y3QgYXRhX3Byb2JlX2VudCAqcHJvYmVfZW50OwogCWludCBwY2lfZGV2X2J1c3kgPSAwOwpAQCAtMzcwLDI0ICs1MjEsMTUgQEAKIAogCXJjID0gLUVOT01FTTsKIAotCXBwaSA9ICZudl9wb3J0X2luZm87CisJcHBpID0gJm52X3BvcnRfaW5mb1tlbnQtPmRyaXZlcl9kYXRhXTsKIAlwcm9iZV9lbnQgPSBhdGFfcGNpX2luaXRfbmF0aXZlX21vZGUocGRldiwgJnBwaSwgQVRBX1BPUlRfUFJJTUFSWSB8IEFUQV9QT1JUX1NFQ09OREFSWSk7CiAJaWYgKCFwcm9iZV9lbnQpCiAJCWdvdG8gZXJyX291dF9yZWdpb25zOwogCi0JaG9zdCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBudl9ob3N0KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFob3N0KQotCQlnb3RvIGVycl9vdXRfZnJlZV9lbnQ7Ci0KLQltZW1zZXQoaG9zdCwgMCwgc2l6ZW9mKHN0cnVjdCBudl9ob3N0KSk7Ci0JaG9zdC0+aG9zdF9kZXNjID0gJm52X2RldmljZV90YmxbZW50LT5kcml2ZXJfZGF0YV07Ci0KLQlwcm9iZV9lbnQtPnByaXZhdGVfZGF0YSA9IGhvc3Q7Ci0KIAlwcm9iZV9lbnQtPm1taW9fYmFzZSA9IHBjaV9pb21hcChwZGV2LCA1LCAwKTsKIAlpZiAoIXByb2JlX2VudC0+bW1pb19iYXNlKSB7CiAJCXJjID0gLUVJTzsKLQkJZ290byBlcnJfb3V0X2ZyZWVfaG9zdDsKKwkJZ290byBlcnJfb3V0X2ZyZWVfZW50OwogCX0KIAogCWJhc2UgPSAodW5zaWduZWQgbG9uZylwcm9iZV9lbnQtPm1taW9fYmFzZTsKQEAgLTM5NSwyNCArNTM3LDI3IEBACiAJcHJvYmVfZW50LT5wb3J0WzBdLnNjcl9hZGRyID0gYmFzZSArIE5WX1BPUlQwX1NDUl9SRUdfT0ZGU0VUOwogCXByb2JlX2VudC0+cG9ydFsxXS5zY3JfYWRkciA9IGJhc2UgKyBOVl9QT1JUMV9TQ1JfUkVHX09GRlNFVDsKIAorCS8qIGVuYWJsZSBTQVRBIHNwYWNlIGZvciBDSzgwNCAqLworCWlmIChlbnQtPmRyaXZlcl9kYXRhID09IENLODA0KSB7CisJCXU4IHJlZ3ZhbDsKKworCQlwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCBOVl9NQ1BfU0FUQV9DRkdfMjAsICZyZWd2YWwpOworCQlyZWd2YWwgfD0gTlZfTUNQX1NBVEFfQ0ZHXzIwX1NBVEFfU1BBQ0VfRU47CisJCXBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBOVl9NQ1BfU0FUQV9DRkdfMjAsIHJlZ3ZhbCk7CisJfQorCiAJcGNpX3NldF9tYXN0ZXIocGRldik7CiAKIAlyYyA9IGF0YV9kZXZpY2VfYWRkKHByb2JlX2VudCk7CiAJaWYgKHJjICE9IE5WX1BPUlRTKQogCQlnb3RvIGVycl9vdXRfaW91bm1hcDsKIAotCS8vIEVuYWJsZSBob3RwbHVnIGV2ZW50IGludGVycnVwdHMuCi0JaWYgKGhvc3QtPmhvc3RfZGVzYy0+ZW5hYmxlX2hvdHBsdWcpCi0JCWhvc3QtPmhvc3RfZGVzYy0+ZW5hYmxlX2hvdHBsdWcocHJvYmVfZW50KTsKLQogCWtmcmVlKHByb2JlX2VudCk7CiAKIAlyZXR1cm4gMDsKIAogZXJyX291dF9pb3VubWFwOgogCXBjaV9pb3VubWFwKHBkZXYsIHByb2JlX2VudC0+bW1pb19iYXNlKTsKLWVycl9vdXRfZnJlZV9ob3N0OgotCWtmcmVlKGhvc3QpOwogZXJyX291dF9mcmVlX2VudDoKIAlrZnJlZShwcm9iZV9lbnQpOwogZXJyX291dF9yZWdpb25zOgpAQCAtNDI0LDEyNyArNTY5LDE3IEBACiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBudl9lbmFibGVfaG90cGx1ZyhzdHJ1Y3QgYXRhX3Byb2JlX2VudCAqcHJvYmVfZW50KQotewotCXU4IGludHJfbWFzazsKLQotCW91dGIoTlZfSU5UX1NUQVRVU19IT1RQTFVHLAotCQlwcm9iZV9lbnQtPnBvcnRbMF0uc2NyX2FkZHIgKyBOVl9JTlRfU1RBVFVTKTsKLQotCWludHJfbWFzayA9IGluYihwcm9iZV9lbnQtPnBvcnRbMF0uc2NyX2FkZHIgKyBOVl9JTlRfRU5BQkxFKTsKLQlpbnRyX21hc2sgfD0gTlZfSU5UX0VOQUJMRV9IT1RQTFVHOwotCi0Jb3V0YihpbnRyX21hc2ssIHByb2JlX2VudC0+cG9ydFswXS5zY3JfYWRkciArIE5WX0lOVF9FTkFCTEUpOwotfQotCi1zdGF0aWMgdm9pZCBudl9kaXNhYmxlX2hvdHBsdWcoc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQpCi17Ci0JdTggaW50cl9tYXNrOwotCi0JaW50cl9tYXNrID0gaW5iKGhvc3Rfc2V0LT5wb3J0c1swXS0+aW9hZGRyLnNjcl9hZGRyICsgTlZfSU5UX0VOQUJMRSk7Ci0KLQlpbnRyX21hc2sgJj0gfihOVl9JTlRfRU5BQkxFX0hPVFBMVUcpOwotCi0Jb3V0YihpbnRyX21hc2ssIGhvc3Rfc2V0LT5wb3J0c1swXS0+aW9hZGRyLnNjcl9hZGRyICsgTlZfSU5UX0VOQUJMRSk7Ci19Ci0KLXN0YXRpYyBpbnQgbnZfY2hlY2tfaG90cGx1ZyhzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCkKLXsKLQl1OCBpbnRyX3N0YXR1czsKLQotCWludHJfc3RhdHVzID0gaW5iKGhvc3Rfc2V0LT5wb3J0c1swXS0+aW9hZGRyLnNjcl9hZGRyICsgTlZfSU5UX1NUQVRVUyk7Ci0KLQkvLyBDbGVhciBpbnRlcnJ1cHQgc3RhdHVzLgotCW91dGIoMHhmZiwgaG9zdF9zZXQtPnBvcnRzWzBdLT5pb2FkZHIuc2NyX2FkZHIgKyBOVl9JTlRfU1RBVFVTKTsKLQotCWlmIChpbnRyX3N0YXR1cyAmIE5WX0lOVF9TVEFUVVNfSE9UUExVRykgewotCQlpZiAoaW50cl9zdGF0dXMgJiBOVl9JTlRfU1RBVFVTX1BERVZfQURERUQpCi0JCQlwcmludGsoS0VSTl9XQVJOSU5HICJudl9zYXRhOiAiCi0JCQkJIlByaW1hcnkgZGV2aWNlIGFkZGVkXG4iKTsKLQotCQlpZiAoaW50cl9zdGF0dXMgJiBOVl9JTlRfU1RBVFVTX1BERVZfUkVNT1ZFRCkKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIm52X3NhdGE6ICIKLQkJCQkiUHJpbWFyeSBkZXZpY2UgcmVtb3ZlZFxuIik7Ci0KLQkJaWYgKGludHJfc3RhdHVzICYgTlZfSU5UX1NUQVRVU19TREVWX0FEREVEKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAibnZfc2F0YTogIgotCQkJCSJTZWNvbmRhcnkgZGV2aWNlIGFkZGVkXG4iKTsKLQotCQlpZiAoaW50cl9zdGF0dXMgJiBOVl9JTlRfU1RBVFVTX1NERVZfUkVNT1ZFRCkKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIm52X3NhdGE6ICIKLQkJCQkiU2Vjb25kYXJ5IGRldmljZSByZW1vdmVkXG4iKTsKLQotCQlyZXR1cm4gMTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgbnZfZW5hYmxlX2hvdHBsdWdfY2s4MDQoc3RydWN0IGF0YV9wcm9iZV9lbnQgKnByb2JlX2VudCkKLXsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYocHJvYmVfZW50LT5kZXYpOwotCXU4IGludHJfbWFzazsKLQl1OCByZWd2YWw7Ci0KLQlwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCBOVl9NQ1BfU0FUQV9DRkdfMjAsICZyZWd2YWwpOwotCXJlZ3ZhbCB8PSBOVl9NQ1BfU0FUQV9DRkdfMjBfU0FUQV9TUEFDRV9FTjsKLQlwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgTlZfTUNQX1NBVEFfQ0ZHXzIwLCByZWd2YWwpOwotCi0Jd3JpdGViKE5WX0lOVF9TVEFUVVNfSE9UUExVRywgcHJvYmVfZW50LT5tbWlvX2Jhc2UgKyBOVl9JTlRfU1RBVFVTX0NLODA0KTsKLQotCWludHJfbWFzayA9IHJlYWRiKHByb2JlX2VudC0+bW1pb19iYXNlICsgTlZfSU5UX0VOQUJMRV9DSzgwNCk7Ci0JaW50cl9tYXNrIHw9IE5WX0lOVF9FTkFCTEVfSE9UUExVRzsKLQotCXdyaXRlYihpbnRyX21hc2ssIHByb2JlX2VudC0+bW1pb19iYXNlICsgTlZfSU5UX0VOQUJMRV9DSzgwNCk7Ci19Ci0KLXN0YXRpYyB2b2lkIG52X2Rpc2FibGVfaG90cGx1Z19jazgwNChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCkKK3N0YXRpYyB2b2lkIG52X2NrODA0X2hvc3Rfc3RvcChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCkKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoaG9zdF9zZXQtPmRldik7Ci0JdTggaW50cl9tYXNrOwogCXU4IHJlZ3ZhbDsKIAotCWludHJfbWFzayA9IHJlYWRiKGhvc3Rfc2V0LT5tbWlvX2Jhc2UgKyBOVl9JTlRfRU5BQkxFX0NLODA0KTsKLQotCWludHJfbWFzayAmPSB+KE5WX0lOVF9FTkFCTEVfSE9UUExVRyk7Ci0KLQl3cml0ZWIoaW50cl9tYXNrLCBob3N0X3NldC0+bW1pb19iYXNlICsgTlZfSU5UX0VOQUJMRV9DSzgwNCk7Ci0KKwkvKiBkaXNhYmxlIFNBVEEgc3BhY2UgZm9yIENLODA0ICovCiAJcGNpX3JlYWRfY29uZmlnX2J5dGUocGRldiwgTlZfTUNQX1NBVEFfQ0ZHXzIwLCAmcmVndmFsKTsKIAlyZWd2YWwgJj0gfk5WX01DUF9TQVRBX0NGR18yMF9TQVRBX1NQQUNFX0VOOwogCXBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBOVl9NQ1BfU0FUQV9DRkdfMjAsIHJlZ3ZhbCk7Ci19CiAKLXN0YXRpYyBpbnQgbnZfY2hlY2tfaG90cGx1Z19jazgwNChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCkKLXsKLQl1OCBpbnRyX3N0YXR1czsKLQotCWludHJfc3RhdHVzID0gcmVhZGIoaG9zdF9zZXQtPm1taW9fYmFzZSArIE5WX0lOVF9TVEFUVVNfQ0s4MDQpOwotCi0JLy8gQ2xlYXIgaW50ZXJydXB0IHN0YXR1cy4KLQl3cml0ZWIoMHhmZiwgaG9zdF9zZXQtPm1taW9fYmFzZSArIE5WX0lOVF9TVEFUVVNfQ0s4MDQpOwotCi0JaWYgKGludHJfc3RhdHVzICYgTlZfSU5UX1NUQVRVU19IT1RQTFVHKSB7Ci0JCWlmIChpbnRyX3N0YXR1cyAmIE5WX0lOVF9TVEFUVVNfUERFVl9BRERFRCkKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIm52X3NhdGE6ICIKLQkJCQkiUHJpbWFyeSBkZXZpY2UgYWRkZWRcbiIpOwotCi0JCWlmIChpbnRyX3N0YXR1cyAmIE5WX0lOVF9TVEFUVVNfUERFVl9SRU1PVkVEKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAibnZfc2F0YTogIgotCQkJCSJQcmltYXJ5IGRldmljZSByZW1vdmVkXG4iKTsKLQotCQlpZiAoaW50cl9zdGF0dXMgJiBOVl9JTlRfU1RBVFVTX1NERVZfQURERUQpCi0JCQlwcmludGsoS0VSTl9XQVJOSU5HICJudl9zYXRhOiAiCi0JCQkJIlNlY29uZGFyeSBkZXZpY2UgYWRkZWRcbiIpOwotCi0JCWlmIChpbnRyX3N0YXR1cyAmIE5WX0lOVF9TVEFUVVNfU0RFVl9SRU1PVkVEKQotCQkJcHJpbnRrKEtFUk5fV0FSTklORyAibnZfc2F0YTogIgotCQkJCSJTZWNvbmRhcnkgZGV2aWNlIHJlbW92ZWRcbiIpOwotCi0JCXJldHVybiAxOwotCX0KLQotCXJldHVybiAwOworCWF0YV9wY2lfaG9zdF9zdG9wKGhvc3Rfc2V0KTsKIH0KIAogc3RhdGljIGludCBfX2luaXQgbnZfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NhdGFfcHJvbWlzZS5jIGIvZHJpdmVycy9zY3NpL3NhdGFfcHJvbWlzZS5jCmluZGV4IDdlYjY3YTYuLmIyYjZlZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zYXRhX3Byb21pc2UuYworKysgYi9kcml2ZXJzL3Njc2kvc2F0YV9wcm9taXNlLmMKQEAgLTc2LDcgKzc2LDggQEAKIAlQRENfUkVTRVQJCT0gKDEgPDwgMTEpLCAvKiBIRE1BIHJlc2V0ICovCiAKIAlQRENfQ09NTU9OX0ZMQUdTCT0gQVRBX0ZMQUdfTk9fTEVHQUNZIHwgQVRBX0ZMQUdfU1JTVCB8Ci0JCQkJICBBVEFfRkxBR19NTUlPIHwgQVRBX0ZMQUdfTk9fQVRBUEksCisJCQkJICBBVEFfRkxBR19NTUlPIHwgQVRBX0ZMQUdfTk9fQVRBUEkgfAorCQkJCSAgQVRBX0ZMQUdfUElPX1BPTExJTkcsCiB9OwogCiAKQEAgLTEyMCw2ICsxMjEsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiB9OwogCkBAIC0xMzYsNiArMTM4LDcgQEAKIAkucWNfcHJlcAkJPSBwZGNfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gcGRjX3FjX2lzc3VlX3Byb3QsCiAJLmVuZ190aW1lb3V0CQk9IHBkY19lbmdfdGltZW91dCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9tbWlvX2RhdGFfeGZlciwKIAkuaXJxX2hhbmRsZXIJCT0gcGRjX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IHBkY19pcnFfY2xlYXIsCiAKQEAgLTE1OCw2ICsxNjEsNyBAQAogCiAJLnFjX3ByZXAJCT0gcGRjX3FjX3ByZXAsCiAJLnFjX2lzc3VlCQk9IHBkY19xY19pc3N1ZV9wcm90LAorCS5kYXRhX3hmZXIJCT0gYXRhX21taW9fZGF0YV94ZmVyLAogCS5lbmdfdGltZW91dAkJPSBwZGNfZW5nX3RpbWVvdXQsCiAJLmlycV9oYW5kbGVyCQk9IHBkY19pbnRlcnJ1cHQsCiAJLmlycV9jbGVhcgkJPSBwZGNfaXJxX2NsZWFyLApAQCAtMzYzLDEyICszNjcsMjMgQEAKIAlzYXRhX3BoeV9yZXNldChhcCk7CiB9CiAKK3N0YXRpYyB2b2lkIHBkY19wYXRhX2NibF9kZXRlY3Qoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl1OCB0bXA7CisJdm9pZCBfX2lvbWVtICptbWlvID0gKHZvaWQgKikgYXAtPmlvYWRkci5jbWRfYWRkciArIFBEQ19DVExTVEFUICsgMHgwMzsKKworCXRtcCA9IHJlYWRiKG1taW8pOworCisJaWYgKHRtcCAmIDB4MDEpIHsKKwkJYXAtPmNibCA9IEFUQV9DQkxfUEFUQTQwOworCQlhcC0+dWRtYV9tYXNrICY9IEFUQV9VRE1BX01BU0tfNDBDOworCX0gZWxzZQorCQlhcC0+Y2JsID0gQVRBX0NCTF9QQVRBODA7Cit9CisKIHN0YXRpYyB2b2lkIHBkY19wYXRhX3BoeV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQogewotCS8qIEZJWE1FOiBhZGQgY2FibGUgZGV0ZWN0LiAgRG9uJ3QgYXNzdW1lIDQwLXBpbiBjYWJsZSAqLwotCWFwLT5jYmwgPSBBVEFfQ0JMX1BBVEE0MDsKLQlhcC0+dWRtYV9tYXNrICY9IEFUQV9VRE1BX01BU0tfNDBDOwotCisJcGRjX3BhdGFfY2JsX2RldGVjdChhcCk7CiAJcGRjX3Jlc2V0X3BvcnQoYXApOwogCWF0YV9wb3J0X3Byb2JlKGFwKTsKIAlhdGFfYnVzX3Jlc2V0KGFwKTsKQEAgLTQzNSw3ICs0NTAsNyBAQAogCXN3aXRjaCAocWMtPnRmLnByb3RvY29sKSB7CiAJY2FzZSBBVEFfUFJPVF9ETUE6CiAJY2FzZSBBVEFfUFJPVF9OT0RBVEE6Ci0JCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IGNvbW1hbmQgdGltZW91dFxuIiwgYXAtPmlkKTsKKwkJYXRhX3BvcnRfcHJpbnRrKGFwLCBLRVJOX0VSUiwgImNvbW1hbmQgdGltZW91dFxuIik7CiAJCWRydl9zdGF0ID0gYXRhX3dhaXRfaWRsZShhcCk7CiAJCXFjLT5lcnJfbWFzayB8PSBfX2FjX2Vycl9tYXNrKGRydl9zdGF0KTsKIAkJYnJlYWs7CkBAIC00NDMsOCArNDU4LDkgQEAKIAlkZWZhdWx0OgogCQlkcnZfc3RhdCA9IGF0YV9idXN5X3dhaXQoYXAsIEFUQV9CVVNZIHwgQVRBX0RSUSwgMTAwMCk7CiAKLQkJcHJpbnRrKEtFUk5fRVJSICJhdGEldTogdW5rbm93biB0aW1lb3V0LCBjbWQgMHgleCBzdGF0IDB4JXhcbiIsCi0JCSAgICAgICBhcC0+aWQsIHFjLT50Zi5jb21tYW5kLCBkcnZfc3RhdCk7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsCisJCQkJInVua25vd24gdGltZW91dCwgY21kIDB4JXggc3RhdCAweCV4XG4iLAorCQkJCXFjLT50Zi5jb21tYW5kLCBkcnZfc3RhdCk7CiAKIAkJcWMtPmVycl9tYXNrIHw9IGFjX2Vycl9tYXNrKGRydl9zdGF0KTsKIAkJYnJlYWs7CkBAIC01MzMsMTEgKzU0OSwxMSBAQAogCQlhcCA9IGhvc3Rfc2V0LT5wb3J0c1tpXTsKIAkJdG1wID0gbWFzayAmICgxIDw8IChpICsgMSkpOwogCQlpZiAodG1wICYmIGFwICYmCi0JCSAgICAhKGFwLT5mbGFncyAmIChBVEFfRkxBR19QT1JUX0RJU0FCTEVEIHwgQVRBX0ZMQUdfTk9JTlRSKSkpIHsKKwkJICAgICEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpKSB7CiAJCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCiAJCQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCQkJaWYgKHFjICYmICghKHFjLT50Zi5jdGwgJiBBVEFfTklFTikpKQorCQkJaWYgKHFjICYmICghKHFjLT50Zi5mbGFncyAmIEFUQV9URkxBR19QT0xMSU5HKSkpCiAJCQkJaGFuZGxlZCArPSBwZGNfaG9zdF9pbnRyKGFwLCBxYyk7CiAJCX0KIAl9CkBAIC02NzYsMTAgKzY5Miw2IEBACiAJaWYgKCFwcmludGVkX3ZlcnNpb24rKykKIAkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAidmVyc2lvbiAiIERSVl9WRVJTSU9OICJcbiIpOwogCi0JLyoKLQkgKiBJZiB0aGlzIGRyaXZlciBoYXBwZW5zIHRvIG9ubHkgYmUgdXNlZnVsIG9uIEFwcGxlJ3MgSzIsIHRoZW4KLQkgKiB3ZSBzaG91bGQgY2hlY2sgdGhhdCBoZXJlIGFzIGl0IGhhcyBhIG5vcm1hbCBTZXJ2ZXJ3b3JrcyBJRAotCSAqLwogCXJjID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV9xc3Rvci5jIGIvZHJpdmVycy9zY3NpL3NhdGFfcXN0b3IuYwppbmRleCA4ODZmMzQ0Li45OGRkYzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2F0YV9xc3Rvci5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX3FzdG9yLmMKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9saWJhdGEuaD4KIAogI2RlZmluZSBEUlZfTkFNRQkic2F0YV9xc3RvciIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuMDUiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIwLjA2IgogCiBlbnVtIHsKIAlRU19QT1JUUwkJPSA0LApAQCAtMTQyLDYgKzE0Miw3IEBACiAJLnByb2NfbmFtZQkJPSBEUlZfTkFNRSwKIAkuZG1hX2JvdW5kYXJ5CQk9IFFTX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAorCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAogfTsKIApAQCAtMTU2LDYgKzE1Nyw3IEBACiAJLnBoeV9yZXNldAkJPSBxc19waHlfcmVzZXQsCiAJLnFjX3ByZXAJCT0gcXNfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gcXNfcWNfaXNzdWUsCisJLmRhdGFfeGZlcgkJPSBhdGFfbW1pb19kYXRhX3hmZXIsCiAJLmVuZ190aW1lb3V0CQk9IHFzX2VuZ190aW1lb3V0LAogCS5pcnFfaGFuZGxlcgkJPSBxc19pbnRyLAogCS5pcnFfY2xlYXIJCT0gcXNfaXJxX2NsZWFyLApAQCAtMTc1LDcgKzE3Nyw3IEBACiAJCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSB8CiAJCQkJICBBVEFfRkxBR19TQVRBX1JFU0VUIHwKIAkJCQkgIC8vRklYTUUgQVRBX0ZMQUdfU1JTVCB8Ci0JCQkJICBBVEFfRkxBR19NTUlPLAorCQkJCSAgQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19QT0xMSU5HLAogCQkucGlvX21hc2sJPSAweDEwLCAvKiBwaW80ICovCiAJCS51ZG1hX21hc2sJPSAweDdmLCAvKiB1ZG1hMC02ICovCiAJCS5wb3J0X29wcwk9ICZxc19hdGFfb3BzLApAQCAtMzk0LDE0ICszOTYsMTMgQEAKIAkJCURQUklOVEsoIlNGRj0lMDh4JTA4eDogc0NIQU49JXUgc0hTVD0lZCBzRFNUPSUwMnhcbiIsCiAJCQkJCXNmZjEsIHNmZjAsIHBvcnRfbm8sIHNIU1QsIHNEU1QpOwogCQkJaGFuZGxlZCA9IDE7Ci0JCQlpZiAoYXAgJiYgIShhcC0+ZmxhZ3MgJgotCQkJCSAgICAoQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRHxBVEFfRkxBR19OT0lOVFIpKSkgeworCQkJaWYgKGFwICYmICEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpKSB7CiAJCQkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKIAkJCQlzdHJ1Y3QgcXNfcG9ydF9wcml2ICpwcCA9IGFwLT5wcml2YXRlX2RhdGE7CiAJCQkJaWYgKCFwcCB8fCBwcC0+c3RhdGUgIT0gcXNfc3RhdGVfcGt0KQogCQkJCQljb250aW51ZTsKIAkJCQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCQkJCWlmIChxYyAmJiAoIShxYy0+dGYuY3RsICYgQVRBX05JRU4pKSkgeworCQkJCWlmIChxYyAmJiAoIShxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykpKSB7CiAJCQkJCXN3aXRjaCAoc0hTVCkgewogCQkJCQljYXNlIDA6IC8qIHN1Y2Nlc3NmdWwgQ1BCICovCiAJCQkJCWNhc2UgMzogLyogZGV2aWNlIGVycm9yICovCkBAIC00MjgsMTMgKzQyOSwxMyBAQAogCQlzdHJ1Y3QgYXRhX3BvcnQgKmFwOwogCQlhcCA9IGhvc3Rfc2V0LT5wb3J0c1twb3J0X25vXTsKIAkJaWYgKGFwICYmCi0JCSAgICAhKGFwLT5mbGFncyAmIChBVEFfRkxBR19QT1JUX0RJU0FCTEVEIHwgQVRBX0ZMQUdfTk9JTlRSKSkpIHsKKwkJICAgICEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRElTQUJMRUQpKSB7CiAJCQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjOwogCQkJc3RydWN0IHFzX3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwogCQkJaWYgKCFwcCB8fCBwcC0+c3RhdGUgIT0gcXNfc3RhdGVfbW1pbykKIAkJCQljb250aW51ZTsKIAkJCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JCQlpZiAocWMgJiYgKCEocWMtPnRmLmN0bCAmIEFUQV9OSUVOKSkpIHsKKwkJCWlmIChxYyAmJiAoIShxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykpKSB7CiAKIAkJCQkvKiBjaGVjayBtYWluIHN0YXR1cywgY2xlYXJpbmcgSU5UUlEgKi8KIAkJCQl1OCBzdGF0dXMgPSBhdGFfY2hlY2tfc3RhdHVzKGFwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zYXRhX3NpbC5jIGIvZHJpdmVycy9zY3NpL3NhdGFfc2lsLmMKaW5kZXggMTA2NjI3Mi4uYmM5ZjkxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NhdGFfc2lsLmMKKysrIGIvZHJpdmVycy9zY3NpL3NhdGFfc2lsLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9saWJhdGEuaD4KIAogI2RlZmluZSBEUlZfTkFNRQkic2F0YV9zaWwiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSIwLjkiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjAiCiAKIGVudW0gewogCS8qCkBAIC01NCw4ICs1NCw5IEBACiAJICovCiAJU0lMX0ZMQUdfUkVSUl9PTl9ETUFfQUNUID0gKDEgPDwgMjkpLAogCVNJTF9GTEFHX01PRDE1V1JJVEUJPSAoMSA8PCAzMCksCisKIAlTSUxfREZMX0hPU1RfRkxBR1MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfTk9fTEVHQUNZIHwKLQkJCQkgIEFUQV9GTEFHX01NSU8sCisJCQkJICBBVEFfRkxBR19NTUlPIHwgQVRBX0ZMQUdfSFJTVF9UT19SRVNVTUUsCiAKIAkvKgogCSAqIENvbnRyb2xsZXIgSURzCkBAIC04NCw2ICs4NSwyMCBAQAogCS8qIEJNRE1BL0JNRE1BMiAqLwogCVNJTF9JTlRSX1NURUVSSU5HCT0gKDEgPDwgMSksCiAKKwlTSUxfRE1BX0VOQUJMRQkJPSAoMSA8PCAwKSwgIC8qIERNQSBydW4gc3dpdGNoICovCisJU0lMX0RNQV9SRFdSCQk9ICgxIDw8IDMpLCAgLyogRE1BIFJkLVdyICovCisJU0lMX0RNQV9TQVRBX0lSUQk9ICgxIDw8IDQpLCAgLyogT1Igb2YgYWxsIFNBVEEgSVJRcyAqLworCVNJTF9ETUFfQUNUSVZFCQk9ICgxIDw8IDE2KSwgLyogRE1BIHJ1bm5pbmcgKi8KKwlTSUxfRE1BX0VSUk9SCQk9ICgxIDw8IDE3KSwgLyogUENJIGJ1cyBlcnJvciAqLworCVNJTF9ETUFfQ09NUExFVEUJPSAoMSA8PCAxOCksIC8qIGNtZCBjb21wbGV0ZSAvIElSUSBwZW5kaW5nICovCisJU0lMX0RNQV9OX1NBVEFfSVJRCT0gKDEgPDwgNiksICAvKiBTQVRBX0lSUSBmb3IgdGhlIG5leHQgY2hhbm5lbCAqLworCVNJTF9ETUFfTl9BQ1RJVkUJPSAoMSA8PCAyNCksIC8qIEFDVElWRSBmb3IgdGhlIG5leHQgY2hhbm5lbCAqLworCVNJTF9ETUFfTl9FUlJPUgkJPSAoMSA8PCAyNSksIC8qIEVSUk9SIGZvciB0aGUgbmV4dCBjaGFubmVsICovCisJU0lMX0RNQV9OX0NPTVBMRVRFCT0gKDEgPDwgMjYpLCAvKiBDT01QTEVURSBmb3IgdGhlIG5leHQgY2hhbm5lbCAqLworCisJLyogU0lFTiAqLworCVNJTF9TSUVOX04JCT0gKDEgPDwgMTYpLCAvKiB0cmlnZ2VyZWQgYnkgU0Vycm9yLk4gKi8KKwogCS8qCiAJICogT3RoZXJzCiAJICovCkBAIC05Niw2ICsxMTEsMTAgQEAKIHN0YXRpYyB1MzIgc2lsX3Njcl9yZWFkIChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgc2NfcmVnKTsKIHN0YXRpYyB2b2lkIHNpbF9zY3Jfd3JpdGUgKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCBzY19yZWcsIHUzMiB2YWwpOwogc3RhdGljIHZvaWQgc2lsX3Bvc3Rfc2V0X21vZGUgKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIGlycXJldHVybl90IHNpbF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLAorCQkJCSBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitzdGF0aWMgdm9pZCBzaWxfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgc2lsX3RoYXcoc3RydWN0IGF0YV9wb3J0ICphcCk7CiAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHNpbF9wY2lfdGJsW10gPSB7CkBAIC0xNTUsNiArMTc0LDcgQEAKIAkucHJvY19uYW1lCQk9IERSVl9OQU1FLAogCS5kbWFfYm91bmRhcnkJCT0gQVRBX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAorCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAogfTsKIApAQCAtMTY2LDcgKzE4Niw2IEBACiAJLmNoZWNrX3N0YXR1cwkJPSBhdGFfY2hlY2tfc3RhdHVzLAogCS5leGVjX2NvbW1hbmQJCT0gYXRhX2V4ZWNfY29tbWFuZCwKIAkuZGV2X3NlbGVjdAkJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCi0JLnByb2JlX3Jlc2V0CQk9IGF0YV9zdGRfcHJvYmVfcmVzZXQsCiAJLnBvc3Rfc2V0X21vZGUJCT0gc2lsX3Bvc3Rfc2V0X21vZGUsCiAJLmJtZG1hX3NldHVwICAgICAgICAgICAgPSBhdGFfYm1kbWFfc2V0dXAsCiAJLmJtZG1hX3N0YXJ0ICAgICAgICAgICAgPSBhdGFfYm1kbWFfc3RhcnQsCkBAIC0xNzQsOCArMTkzLDEyIEBACiAJLmJtZG1hX3N0YXR1cwkJPSBhdGFfYm1kbWFfc3RhdHVzLAogCS5xY19wcmVwCQk9IGF0YV9xY19wcmVwLAogCS5xY19pc3N1ZQkJPSBhdGFfcWNfaXNzdWVfcHJvdCwKLQkuZW5nX3RpbWVvdXQJCT0gYXRhX2VuZ190aW1lb3V0LAotCS5pcnFfaGFuZGxlcgkJPSBhdGFfaW50ZXJydXB0LAorCS5kYXRhX3hmZXIJCT0gYXRhX21taW9fZGF0YV94ZmVyLAorCS5mcmVlemUJCQk9IHNpbF9mcmVlemUsCisJLnRoYXcJCQk9IHNpbF90aGF3LAorCS5lcnJvcl9oYW5kbGVyCQk9IGF0YV9ibWRtYV9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCwKKwkuaXJxX2hhbmRsZXIJCT0gc2lsX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCiAJLnNjcl9yZWFkCQk9IHNpbF9zY3JfcmVhZCwKIAkuc2NyX3dyaXRlCQk9IHNpbF9zY3Jfd3JpdGUsCkBAIC0yMjAsNiArMjQzLDcgQEAKIAl1bnNpZ25lZCBsb25nIHRmOwkvKiBBVEEgdGFza2ZpbGUgcmVnaXN0ZXIgYmxvY2sgKi8KIAl1bnNpZ25lZCBsb25nIGN0bDsJLyogQVRBIGNvbnRyb2wvYWx0c3RhdHVzIHJlZ2lzdGVyIGJsb2NrICovCiAJdW5zaWduZWQgbG9uZyBibWRtYTsJLyogRE1BIHJlZ2lzdGVyIGJsb2NrICovCisJdW5zaWduZWQgbG9uZyBibWRtYTI7CS8qIERNQSByZWdpc3RlciBibG9jayAjMiAqLwogCXVuc2lnbmVkIGxvbmcgZmlmb19jZmc7CS8qIEZJRk8gVmFsaWQgQnl0ZSBDb3VudCBhbmQgQ29udHJvbCAqLwogCXVuc2lnbmVkIGxvbmcgc2NyOwkvKiBTQVRBIGNvbnRyb2wgcmVnaXN0ZXIgYmxvY2sgKi8KIAl1bnNpZ25lZCBsb25nIHNpZW47CS8qIFNBVEEgSW50ZXJydXB0IEVuYWJsZSByZWdpc3RlciAqLwpAQCAtMjI3LDEwICsyNTEsMTAgQEAKIAl1bnNpZ25lZCBsb25nIHNmaXNfY2ZnOwkvKiBTQVRBIEZJUyByZWNlcHRpb24gY29uZmlnIHJlZ2lzdGVyICovCiB9IHNpbF9wb3J0W10gPSB7CiAJLyogcG9ydCAwIC4uLiAqLwotCXsgMHg4MCwgMHg4QSwgMHgwMCwgMHg0MCwgMHgxMDAsIDB4MTQ4LCAweGI0LCAweDE0YyB9LAotCXsgMHhDMCwgMHhDQSwgMHgwOCwgMHg0NCwgMHgxODAsIDB4MWM4LCAweGY0LCAweDFjYyB9LAotCXsgMHgyODAsIDB4MjhBLCAweDIwMCwgMHgyNDAsIDB4MzAwLCAweDM0OCwgMHgyYjQsIDB4MzRjIH0sCi0JeyAweDJDMCwgMHgyQ0EsIDB4MjA4LCAweDI0NCwgMHgzODAsIDB4M2M4LCAweDJmNCwgMHgzY2MgfSwKKwl7IDB4ODAsIDB4OEEsIDB4MDAsIDB4MTAsIDB4NDAsIDB4MTAwLCAweDE0OCwgMHhiNCwgMHgxNGMgfSwKKwl7IDB4QzAsIDB4Q0EsIDB4MDgsIDB4MTgsIDB4NDQsIDB4MTgwLCAweDFjOCwgMHhmNCwgMHgxY2MgfSwKKwl7IDB4MjgwLCAweDI4QSwgMHgyMDAsIDB4MjEwLCAweDI0MCwgMHgzMDAsIDB4MzQ4LCAweDJiNCwgMHgzNGMgfSwKKwl7IDB4MkMwLCAweDJDQSwgMHgyMDgsIDB4MjE4LCAweDI0NCwgMHgzODAsIDB4M2M4LCAweDJmNCwgMHgzY2MgfSwKIAkvKiAuLi4gcG9ydCAzICovCiB9OwogCkBAIC0yNjMsNyArMjg3LDcgQEAKIAogCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKIAkJZGV2ID0gJmFwLT5kZXZpY2VbaV07Ci0JCWlmICghYXRhX2Rldl9wcmVzZW50KGRldikpCisJCWlmICghYXRhX2Rldl9lbmFibGVkKGRldikpCiAJCQlkZXZfbW9kZVtpXSA9IDA7CS8qIFBJTzAvMS8yICovCiAJCWVsc2UgaWYgKGRldi0+ZmxhZ3MgJiBBVEFfREZMQUdfUElPKQogCQkJZGV2X21vZGVbaV0gPSAxOwkvKiBQSU8zLzQgKi8KQEAgLTMxNCw2ICszMzgsMTUxIEBACiAJCXdyaXRlbCh2YWwsIG1taW8pOwogfQogCitzdGF0aWMgdm9pZCBzaWxfaG9zdF9pbnRyKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHUzMiBibWRtYTIpCit7CisJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOworCXU4IHN0YXR1czsKKworCWlmICh1bmxpa2VseShibWRtYTIgJiBTSUxfRE1BX1NBVEFfSVJRKSkgeworCQl1MzIgc2Vycm9yOworCisJCS8qIFNJRU4gZG9lc24ndCBtYXNrIFNBVEEgSVJRcyBvbiBzb21lIDMxMTJzLiAgVGhvc2UKKwkJICogY29udHJvbGxlcnMgY29udGludWUgdG8gYXNzZXJ0IElSUSBhcyBsb25nIGFzCisJCSAqIFNFcnJvciBiaXRzIGFyZSBwZW5kaW5nLiAgQ2xlYXIgU0Vycm9yIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJc2Vycm9yID0gc2lsX3Njcl9yZWFkKGFwLCBTQ1JfRVJST1IpOworCQlzaWxfc2NyX3dyaXRlKGFwLCBTQ1JfRVJST1IsIHNlcnJvcik7CisKKwkJLyogVHJpZ2dlciBob3RwbHVnIGFuZCBhY2N1bXVsYXRlIFNFcnJvciBvbmx5IGlmIHRoZQorCQkgKiBwb3J0IGlzbid0IGFscmVhZHkgZnJvemVuLiAgT3RoZXJ3aXNlLCBQSFkgZXZlbnRzCisJCSAqIGR1cmluZyBoYXJkcmVzZXQgbWFrZXMgY29udHJvbGxlcnMgd2l0aCBicm9rZW4gU0lFTgorCQkgKiByZXBlYXQgcHJvYmluZyBuZWVkbGVzc2x5LgorCQkgKi8KKwkJaWYgKCEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfRlJPWkVOKSkgeworCQkJYXRhX2VoaV9ob3RwbHVnZ2VkKCZhcC0+ZWhfaW5mbyk7CisJCQlhcC0+ZWhfaW5mby5zZXJyb3IgfD0gc2Vycm9yOworCQl9CisKKwkJZ290byBmcmVlemU7CisJfQorCisJaWYgKHVubGlrZWx5KCFxYyB8fCBxYy0+dGYuY3RsICYgQVRBX05JRU4pKQorCQlnb3RvIGZyZWV6ZTsKKworCS8qIENoZWNrIHdoZXRoZXIgd2UgYXJlIGV4cGVjdGluZyBpbnRlcnJ1cHQgaW4gdGhpcyBzdGF0ZSAqLworCXN3aXRjaCAoYXAtPmhzbV90YXNrX3N0YXRlKSB7CisJY2FzZSBIU01fU1RfRklSU1Q6CisJCS8qIFNvbWUgcHJlLUFUQVBJLTQgZGV2aWNlcyBhc3NlcnQgSU5UUlEKKwkJICogYXQgdGhpcyBzdGF0ZSB3aGVuIHJlYWR5IHRvIHJlY2VpdmUgQ0RCLgorCQkgKi8KKworCQkvKiBDaGVjayB0aGUgQVRBX0RGTEFHX0NEQl9JTlRSIGZsYWcgaXMgZW5vdWdoIGhlcmUuCisJCSAqIFRoZSBmbGFnIHdhcyB0dXJuZWQgb24gb25seSBmb3IgYXRhcGkgZGV2aWNlcy4KKwkJICogTm8gbmVlZCB0byBjaGVjayBpc19hdGFwaV90YXNrZmlsZSgmcWMtPnRmKSBhZ2Fpbi4KKwkJICovCisJCWlmICghKHFjLT5kZXYtPmZsYWdzICYgQVRBX0RGTEFHX0NEQl9JTlRSKSkKKwkJCWdvdG8gZXJyX2hzbTsKKwkJYnJlYWs7CisJY2FzZSBIU01fU1RfTEFTVDoKKwkJaWYgKHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9ETUEgfHwKKwkJICAgIHFjLT50Zi5wcm90b2NvbCA9PSBBVEFfUFJPVF9BVEFQSV9ETUEpIHsKKwkJCS8qIGNsZWFyIERNQS1TdGFydCBiaXQgKi8KKwkJCWFwLT5vcHMtPmJtZG1hX3N0b3AocWMpOworCisJCQlpZiAoYm1kbWEyICYgU0lMX0RNQV9FUlJPUikgeworCQkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSE9TVF9CVVM7CisJCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKKwkJCX0KKwkJfQorCQlicmVhazsKKwljYXNlIEhTTV9TVDoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZ290byBlcnJfaHNtOworCX0KKworCS8qIGNoZWNrIG1haW4gc3RhdHVzLCBjbGVhcmluZyBJTlRSUSAqLworCXN0YXR1cyA9IGF0YV9jaGtfc3RhdHVzKGFwKTsKKwlpZiAodW5saWtlbHkoc3RhdHVzICYgQVRBX0JVU1kpKQorCQlnb3RvIGVycl9oc207CisKKwkvKiBhY2sgYm1kbWEgaXJxIGV2ZW50cyAqLworCWF0YV9ibWRtYV9pcnFfY2xlYXIoYXApOworCisJLyoga2ljayBIU00gaW4gdGhlIGFzcyAqLworCWF0YV9oc21fbW92ZShhcCwgcWMsIHN0YXR1cywgMCk7CisKKwlyZXR1cm47CisKKyBlcnJfaHNtOgorCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSFNNOworIGZyZWV6ZToKKwlhdGFfcG9ydF9mcmVlemUoYXApOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3Qgc2lsX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCisJCQkJIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0ID0gZGV2X2luc3RhbmNlOworCXZvaWQgX19pb21lbSAqbW1pb19iYXNlID0gaG9zdF9zZXQtPm1taW9fYmFzZTsKKwlpbnQgaGFuZGxlZCA9IDA7CisJaW50IGk7CisKKwlzcGluX2xvY2soJmhvc3Rfc2V0LT5sb2NrKTsKKworCWZvciAoaSA9IDA7IGkgPCBob3N0X3NldC0+bl9wb3J0czsgaSsrKSB7CisJCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBob3N0X3NldC0+cG9ydHNbaV07CisJCXUzMiBibWRtYTIgPSByZWFkbChtbWlvX2Jhc2UgKyBzaWxfcG9ydFthcC0+cG9ydF9ub10uYm1kbWEyKTsKKworCQlpZiAodW5saWtlbHkoIWFwIHx8IGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChibWRtYTIgPT0gMHhmZmZmZmZmZiB8fAorCQkgICAgIShibWRtYTIgJiAoU0lMX0RNQV9DT01QTEVURSB8IFNJTF9ETUFfU0FUQV9JUlEpKSkKKwkJCWNvbnRpbnVlOworCisJCXNpbF9ob3N0X2ludHIoYXAsIGJtZG1hMik7CisJCWhhbmRsZWQgPSAxOworCX0KKworCXNwaW5fdW5sb2NrKCZob3N0X3NldC0+bG9jayk7CisKKwlyZXR1cm4gSVJRX1JFVFZBTChoYW5kbGVkKTsKK30KKworc3RhdGljIHZvaWQgc2lsX2ZyZWV6ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXZvaWQgX19pb21lbSAqbW1pb19iYXNlID0gYXAtPmhvc3Rfc2V0LT5tbWlvX2Jhc2U7CisJdTMyIHRtcDsKKworCS8qIGdsb2JhbCBJUlEgbWFzayBkb2Vzbid0IGJsb2NrIFNBVEEgSVJRLCB0dXJuIG9mZiBleHBsaWNpdGx5ICovCisJd3JpdGVsKDAsIG1taW9fYmFzZSArIHNpbF9wb3J0W2FwLT5wb3J0X25vXS5zaWVuKTsKKworCS8qIHBsdWcgSVJRICovCisJdG1wID0gcmVhZGwobW1pb19iYXNlICsgU0lMX1NZU0NGRyk7CisJdG1wIHw9IFNJTF9NQVNLX0lERTBfSU5UIDw8IGFwLT5wb3J0X25vOworCXdyaXRlbCh0bXAsIG1taW9fYmFzZSArIFNJTF9TWVNDRkcpOworCXJlYWRsKG1taW9fYmFzZSArIFNJTF9TWVNDRkcpOwkvKiBmbHVzaCAqLworfQorCitzdGF0aWMgdm9pZCBzaWxfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXZvaWQgX19pb21lbSAqbW1pb19iYXNlID0gYXAtPmhvc3Rfc2V0LT5tbWlvX2Jhc2U7CisJdTMyIHRtcDsKKworCS8qIGNsZWFyIElSUSAqLworCWF0YV9jaGtfc3RhdHVzKGFwKTsKKwlhdGFfYm1kbWFfaXJxX2NsZWFyKGFwKTsKKworCS8qIHR1cm4gb24gU0FUQSBJUlEgKi8KKwl3cml0ZWwoU0lMX1NJRU5fTiwgbW1pb19iYXNlICsgc2lsX3BvcnRbYXAtPnBvcnRfbm9dLnNpZW4pOworCisJLyogdHVybiBvbiBJUlEgKi8KKwl0bXAgPSByZWFkbChtbWlvX2Jhc2UgKyBTSUxfU1lTQ0ZHKTsKKwl0bXAgJj0gfihTSUxfTUFTS19JREUwX0lOVCA8PCBhcC0+cG9ydF9ubyk7CisJd3JpdGVsKHRtcCwgbW1pb19iYXNlICsgU0lMX1NZU0NGRyk7Cit9CisKIC8qKgogICoJc2lsX2Rldl9jb25maWcgLSBBcHBseSBkZXZpY2UvaG9zdC1zcGVjaWZpYyBlcnJhdGEgZml4dXBzCiAgKglAYXA6IFBvcnQgY29udGFpbmluZyBkZXZpY2UgdG8gYmUgZXhhbWluZWQKQEAgLTM2MCwxNiArNTI5LDE2IEBACiAJaWYgKHNsb3dfZG93biB8fAogCSAgICAoKGFwLT5mbGFncyAmIFNJTF9GTEFHX01PRDE1V1JJVEUpICYmCiAJICAgICAocXVpcmtzICYgU0lMX1FVSVJLX01PRDE1V1JJVEUpKSkgewotCQlwcmludGsoS0VSTl9JTkZPICJhdGEldSgldSk6IGFwcGx5aW5nIFNlYWdhdGUgZXJyYXRhIGZpeCAobW9kMTV3cml0ZSB3b3JrYXJvdW5kKVxuIiwKLQkJICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubyk7CisJCWF0YV9kZXZfcHJpbnRrKGRldiwgS0VSTl9JTkZPLCAiYXBwbHlpbmcgU2VhZ2F0ZSBlcnJhdGEgZml4ICIKKwkJCSAgICAgICAiKG1vZDE1d3JpdGUgd29ya2Fyb3VuZClcbiIpOwogCQlkZXYtPm1heF9zZWN0b3JzID0gMTU7CiAJCXJldHVybjsKIAl9CiAKIAkvKiBsaW1pdCB0byB1ZG1hNSAqLwogCWlmIChxdWlya3MgJiBTSUxfUVVJUktfVURNQTVNQVgpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAiYXRhJXUoJXUpOiBhcHBseWluZyBNYXh0b3IgZXJyYXRhIGZpeCAlc1xuIiwKLQkJICAgICAgIGFwLT5pZCwgZGV2LT5kZXZubywgbW9kZWxfbnVtKTsKKwkJYXRhX2Rldl9wcmludGsoZGV2LCBLRVJOX0lORk8sCisJCQkgICAgICAgImFwcGx5aW5nIE1heHRvciBlcnJhdGEgZml4ICVzXG4iLCBtb2RlbF9udW0pOwogCQlkZXYtPnVkbWFfbWFzayAmPSBBVEFfVURNQTU7CiAJCXJldHVybjsKIAl9CkBAIC0zODQsMTYgKzU1MywxMiBAQAogCWludCByYzsKIAl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgcGNpX2Rldl9idXN5ID0gMDsKLQl1MzIgdG1wLCBpcnFfbWFzazsKKwl1MzIgdG1wOwogCXU4IGNsczsKIAogCWlmICghcHJpbnRlZF92ZXJzaW9uKyspCiAJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgInZlcnNpb24gIiBEUlZfVkVSU0lPTiAiXG4iKTsKIAotCS8qCi0JICogSWYgdGhpcyBkcml2ZXIgaGFwcGVucyB0byBvbmx5IGJlIHVzZWZ1bCBvbiBBcHBsZSdzIEsyLCB0aGVuCi0JICogd2Ugc2hvdWxkIGNoZWNrIHRoYXQgaGVyZSBhcyBpdCBoYXMgYSBub3JtYWwgU2VydmVyd29ya3MgSUQKLQkgKi8KIAlyYyA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpOwogCWlmIChyYykKIAkJcmV0dXJuIHJjOwpAQCAtNDc4LDMxICs2NDMsMTMgQEAKIAl9CiAKIAlpZiAoZW50LT5kcml2ZXJfZGF0YSA9PSBzaWxfMzExNCkgewotCQlpcnFfbWFzayA9IFNJTF9NQVNLXzRQT1JUOwotCiAJCS8qIGZsaXAgdGhlIG1hZ2ljICJtYWtlIDQgcG9ydHMgd29yayIgYml0ICovCiAJCXRtcCA9IHJlYWRsKG1taW9fYmFzZSArIHNpbF9wb3J0WzJdLmJtZG1hKTsKIAkJaWYgKCh0bXAgJiBTSUxfSU5UUl9TVEVFUklORykgPT0gMCkKIAkJCXdyaXRlbCh0bXAgfCBTSUxfSU5UUl9TVEVFUklORywKIAkJCSAgICAgICBtbWlvX2Jhc2UgKyBzaWxfcG9ydFsyXS5ibWRtYSk7Ci0KLQl9IGVsc2UgewotCQlpcnFfbWFzayA9IFNJTF9NQVNLXzJQT1JUOwogCX0KIAotCS8qIG1ha2Ugc3VyZSBJREUwLzEvMi8zIGludGVycnVwdHMgYXJlIG5vdCBtYXNrZWQgKi8KLQl0bXAgPSByZWFkbChtbWlvX2Jhc2UgKyBTSUxfU1lTQ0ZHKTsKLQlpZiAodG1wICYgaXJxX21hc2spIHsKLQkJdG1wICY9IH5pcnFfbWFzazsKLQkJd3JpdGVsKHRtcCwgbW1pb19iYXNlICsgU0lMX1NZU0NGRyk7Ci0JCXJlYWRsKG1taW9fYmFzZSArIFNJTF9TWVNDRkcpOwkvKiBmbHVzaCAqLwotCX0KLQotCS8qIG1hc2sgYWxsIFNBVEEgcGh5LXJlbGF0ZWQgaW50ZXJydXB0cyAqLwotCS8qIFRPRE86IHVubWFzayBiaXQgNiAoU0Vycm9yIE4gYml0KSBmb3IgaG90cGx1ZyAqLwotCWZvciAoaSA9IDA7IGkgPCBwcm9iZV9lbnQtPm5fcG9ydHM7IGkrKykKLQkJd3JpdGVsKDAsIG1taW9fYmFzZSArIHNpbF9wb3J0W2ldLnNpZW4pOwotCiAJcGNpX3NldF9tYXN0ZXIocGRldik7CiAKIAkvKiBGSVhNRTogY2hlY2sgYXRhX2RldmljZV9hZGQgcmV0dXJuIHZhbHVlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV9zaWwyNC5jIGIvZHJpdmVycy9zY3NpL3NhdGFfc2lsMjQuYwppbmRleCBjYjkwODJmLi5jOGI0NzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2F0YV9zaWwyNC5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX3NpbDI0LmMKQEAgLTMxLDE1ICszMSwxNSBAQAogI2luY2x1ZGUgPGFzbS9pby5oPgogCiAjZGVmaW5lIERSVl9OQU1FCSJzYXRhX3NpbDI0IgotI2RlZmluZSBEUlZfVkVSU0lPTgkiMC4yMyIKKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuMjQiCiAKIC8qCiAgKiBQb3J0IHJlcXVlc3QgYmxvY2sgKFBSQikgMzIgYnl0ZXMKICAqLwogc3RydWN0IHNpbDI0X3ByYiB7Ci0JdTE2CWN0cmw7Ci0JdTE2CXByb3Q7Ci0JdTMyCXJ4X2NudDsKKwlfX2xlMTYJY3RybDsKKwlfX2xlMTYJcHJvdDsKKwlfX2xlMzIJcnhfY250OwogCXU4CWZpc1s2ICogNF07CiB9OwogCkBAIC00NywxNyArNDcsMTcgQEAKICAqIFNjYXR0ZXIgZ2F0aGVyIGVudHJ5IChTR0UpIDE2IGJ5dGVzCiAgKi8KIHN0cnVjdCBzaWwyNF9zZ2UgewotCXU2NAlhZGRyOwotCXUzMgljbnQ7Ci0JdTMyCWZsYWdzOworCV9fbGU2NAlhZGRyOworCV9fbGUzMgljbnQ7CisJX19sZTMyCWZsYWdzOwogfTsKIAogLyoKICAqIFBvcnQgbXVsdGlwbGllcgogICovCiBzdHJ1Y3Qgc2lsMjRfcG9ydF9tdWx0aXBsaWVyIHsKLQl1MzIJZGlhZzsKLQl1MzIJc2FjdGl2ZTsKKwlfX2xlMzIJZGlhZzsKKwlfX2xlMzIJc2FjdGl2ZTsKIH07CiAKIGVudW0gewpAQCAtODYsMTIgKzg2LDIxIEBACiAJLyogSE9TVF9TTE9UX1NUQVQgYml0cyAqLwogCUhPU1RfU1NUQVRfQVRUTgkJPSAoMSA8PCAzMSksCiAKKwkvKiBIT1NUX0NUUkwgYml0cyAqLworCUhPU1RfQ1RSTF9NNjZFTgkJPSAoMSA8PCAxNiksIC8qIE02NkVOIFBDSSBidXMgc2lnbmFsICovCisJSE9TVF9DVFJMX1RSRFkJCT0gKDEgPDwgMTcpLCAvKiBsYXRjaGVkIFBDSSBUUkRZICovCisJSE9TVF9DVFJMX1NUT1AJCT0gKDEgPDwgMTgpLCAvKiBsYXRjaGVkIFBDSSBTVE9QICovCisJSE9TVF9DVFJMX0RFVlNFTAk9ICgxIDw8IDE5KSwgLyogbGF0Y2hlZCBQQ0kgREVWU0VMICovCisJSE9TVF9DVFJMX1JFUTY0CQk9ICgxIDw8IDIwKSwgLyogbGF0Y2hlZCBQQ0kgUkVRNjQgKi8KKwogCS8qCiAJICogUG9ydCByZWdpc3RlcnMKIAkgKiAoODE5MiBieXRlcyBAICsweDAwMDAsICsweDIwMDAsICsweDQwMDAgYW5kICsweDYwMDAgQCBCQVIyKQogCSAqLwogCVBPUlRfUkVHU19TSVpFCQk9IDB4MjAwMCwKLQlQT1JUX1BSQgkJPSAweDAwMDAsIC8qICgzMiBieXRlcyBQUkIgKyAxNiBieXRlcyBTR0VzICogNikgKiAzMSAoMzk2OCBieXRlcykgKi8KKworCVBPUlRfTFJBTQkJPSAweDAwMDAsIC8qIDMxIExSQU0gc2xvdHMgYW5kIFBNIHJlZ3MgKi8KKwlQT1JUX0xSQU1fU0xPVF9TWgk9IDB4MDA4MCwgLyogMzIgYnl0ZXMgUFJCICsgMiBTR0UsIEFDVC4uLiAqLwogCiAJUE9SVF9QTQkJCT0gMHgwZjgwLCAvKiA4IGJ5dGVzIFBNICogMTYgKDEyOCBieXRlcykgKi8KIAkJLyogMzIgYml0IHJlZ3MgKi8KQEAgLTE0Miw4ICsxNTEsMTYgQEAKIAlQT1JUX0lSUV9QV1JfQ0hHCT0gKDEgPDwgMyksIC8qIHBvd2VyIG1hbmFnZW1lbnQgY2hhbmdlICovCiAJUE9SVF9JUlFfUEhZUkRZX0NIRwk9ICgxIDw8IDQpLCAvKiBQSFkgcmVhZHkgY2hhbmdlICovCiAJUE9SVF9JUlFfQ09NV0FLRQk9ICgxIDw8IDUpLCAvKiBDT01XQUtFIHJlY2VpdmVkICovCi0JUE9SVF9JUlFfVU5LX0ZJUwk9ICgxIDw8IDYpLCAvKiBVbmtub3duIEZJUyByZWNlaXZlZCAqLwotCVBPUlRfSVJRX1NEQl9GSVMJPSAoMSA8PCAxMSksIC8qIFNEQiBGSVMgcmVjZWl2ZWQgKi8KKwlQT1JUX0lSUV9VTktfRklTCT0gKDEgPDwgNiksIC8qIHVua25vd24gRklTIHJlY2VpdmVkICovCisJUE9SVF9JUlFfREVWX1hDSEcJPSAoMSA8PCA3KSwgLyogZGV2aWNlIGV4Y2hhbmdlZCAqLworCVBPUlRfSVJRXzhCMTBCCQk9ICgxIDw8IDgpLCAvKiA4Yi8xMGIgZGVjb2RlIGVycm9yIHRocmVzaG9sZCAqLworCVBPUlRfSVJRX0NSQwkJPSAoMSA8PCA5KSwgLyogQ1JDIGVycm9yIHRocmVzaG9sZCAqLworCVBPUlRfSVJRX0hBTkRTSEFLRQk9ICgxIDw8IDEwKSwgLyogaGFuZHNoYWtlIGVycm9yIHRocmVzaG9sZCAqLworCVBPUlRfSVJRX1NEQl9OT1RJRlkJPSAoMSA8PCAxMSksIC8qIFNEQiBub3RpZnkgcmVjZWl2ZWQgKi8KKworCURFRl9QT1JUX0lSUQkJPSBQT1JUX0lSUV9DT01QTEVURSB8IFBPUlRfSVJRX0VSUk9SIHwKKwkJCQkgIFBPUlRfSVJRX1BIWVJEWV9DSEcgfCBQT1JUX0lSUV9ERVZfWENIRyB8CisJCQkJICBQT1JUX0lSUV9VTktfRklTLAogCiAJLyogYml0c1syNzoxNl0gYXJlIHVubWFza2VkIChyYXcpICovCiAJUE9SVF9JUlFfUkFXX1NISUZUCT0gMTYsCkBAIC0xNzQsNyArMTkxLDcgQEAKIAlQT1JUX0NFUlJfQ01EX1BDSVBFUlIJPSAyNywgLyogY3RybFsxNToxM10gMTEwIC0gUENJIHBhcml0eSBlcnIgd2hpbGUgZmV0Y2hpbmcgUFJCICovCiAJUE9SVF9DRVJSX1hGUl9VTkRFRgk9IDMyLCAvKiBQU0QgZWNvZGUgMDAgLSB1bmRlZmluZWQgKi8KIAlQT1JUX0NFUlJfWEZSX1RHVEFCUlQJPSAzMywgLyogUFNEIGVjb2RlIDAxIC0gdGFyZ2V0IGFib3J0ICovCi0JUE9SVF9DRVJSX1hGUl9NU0dBQlJUCT0gMzQsIC8qIFBTRCBlY29kZSAxMCAtIG1hc3RlciBhYm9ydCAqLworCVBPUlRfQ0VSUl9YRlJfTVNUQUJSVAk9IDM0LCAvKiBQU0QgZWNvZGUgMTAgLSBtYXN0ZXIgYWJvcnQgKi8KIAlQT1JUX0NFUlJfWEZSX1BDSVBFUlIJPSAzNSwgLyogUFNEIGVjb2RlIDExIC0gUENJIHByaXR5IGVyciBkdXJpbmcgdHJhbnNmZXIgKi8KIAlQT1JUX0NFUlJfU0VORFNFUlZJQ0UJPSAzNiwgLyogRklTIHJlY2VpdmVkIHdoaWxlIHNlbmRpbmcgc2VydmljZSAqLwogCkBAIC0yMDIsMTEgKzIxOSwxOSBAQAogCVNHRV9EUkQJCQk9ICgxIDw8IDI5KSwgLyogZGlzY2FyZCBkYXRhIHJlYWQgKC9kZXYvbnVsbCkKIAkJCQkJCWRhdGEgYWRkcmVzcyBpZ25vcmVkICovCiAKKwlTSUwyNF9NQVhfQ01EUwkJPSAzMSwKKwogCS8qIGJvYXJkIGlkICovCiAJQklEX1NJTDMxMjQJCT0gMCwKIAlCSURfU0lMMzEzMgkJPSAxLAogCUJJRF9TSUwzMTMxCQk9IDIsCiAKKwkvKiBob3N0IGZsYWdzICovCisJU0lMMjRfQ09NTU9OX0ZMQUdTCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSB8CisJCQkJICBBVEFfRkxBR19NTUlPIHwgQVRBX0ZMQUdfUElPX0RNQSB8CisJCQkJICBBVEFfRkxBR19OQ1EgfCBBVEFfRkxBR19TS0lQX0QySF9CU1ksCisJU0lMMjRfRkxBR19QQ0lYX0lSUV9XT0MJPSAoMSA8PCAyNCksIC8qIElSUSBsb3NzIGVycmF0YSBvbiBQQ0ktWCAqLworCiAJSVJRX1NUQVRfNFBPUlRTCQk9IDB4ZiwKIH07CiAKQEAgLTIyNiw2ICsyNTEsNTggQEAKIAlzdHJ1Y3Qgc2lsMjRfYXRhcGlfYmxvY2sgYXRhcGk7CiB9OwogCitzdGF0aWMgc3RydWN0IHNpbDI0X2NlcnJfaW5mbyB7CisJdW5zaWduZWQgaW50IGVycl9tYXNrLCBhY3Rpb247CisJY29uc3QgY2hhciAqZGVzYzsKK30gc2lsMjRfY2Vycl9kYltdID0geworCVswXQkJCT0geyBBQ19FUlJfREVWLCBBVEFfRUhfUkVWQUxJREFURSwKKwkJCQkgICAgImRldmljZSBlcnJvciIgfSwKKwlbUE9SVF9DRVJSX0RFVl0JCT0geyBBQ19FUlJfREVWLCBBVEFfRUhfUkVWQUxJREFURSwKKwkJCQkgICAgImRldmljZSBlcnJvciB2aWEgRDJIIEZJUyIgfSwKKwlbUE9SVF9DRVJSX1NEQl0JCT0geyBBQ19FUlJfREVWLCBBVEFfRUhfUkVWQUxJREFURSwKKwkJCQkgICAgImRldmljZSBlcnJvciB2aWEgU0RCIEZJUyIgfSwKKwlbUE9SVF9DRVJSX0RBVEFdCT0geyBBQ19FUlJfQVRBX0JVUywgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgImVycm9yIGluIGRhdGEgRklTIiB9LAorCVtQT1JUX0NFUlJfU0VORF0JPSB7IEFDX0VSUl9BVEFfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiZmFpbGVkIHRvIHRyYW5zbWl0IGNvbW1hbmQgRklTIiB9LAorCVtQT1JUX0NFUlJfSU5DT05TSVNURU5UXSA9IHsgQUNfRVJSX0hTTSwgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgICJwcm90b2NvbCBtaXNtYXRjaCIgfSwKKwlbUE9SVF9DRVJSX0RJUkVDVElPTl0JPSB7IEFDX0VSUl9IU00sIEFUQV9FSF9TT0ZUUkVTRVQsCisJCQkJICAgICJkYXRhIGRpcmVjdG9uIG1pc21hdGNoIiB9LAorCVtQT1JUX0NFUlJfVU5ERVJSVU5dCT0geyBBQ19FUlJfSFNNLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAicmFuIG91dCBvZiBTR0VzIHdoaWxlIHdyaXRpbmciIH0sCisJW1BPUlRfQ0VSUl9PVkVSUlVOXQk9IHsgQUNfRVJSX0hTTSwgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgInJhbiBvdXQgb2YgU0dFcyB3aGlsZSByZWFkaW5nIiB9LAorCVtQT1JUX0NFUlJfUEtUX1BST1RdCT0geyBBQ19FUlJfSFNNLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiaW52YWxpZCBkYXRhIGRpcmVjdG9uIGZvciBBVEFQSSBDREIiIH0sCisJW1BPUlRfQ0VSUl9TR1RfQk9VTkRBUlldID0geyBBQ19FUlJfU1lTVEVNLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAgIlNHVCBubyBvbiBxd29yZCBib3VuZGFyeSIgfSwKKwlbUE9SVF9DRVJSX1NHVF9UR1RBQlJUXQk9IHsgQUNfRVJSX0hPU1RfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiUENJIHRhcmdldCBhYm9ydCB3aGlsZSBmZXRjaGluZyBTR1QiIH0sCisJW1BPUlRfQ0VSUl9TR1RfTVNUQUJSVF0JPSB7IEFDX0VSUl9IT1NUX0JVUywgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgIlBDSSBtYXN0ZXIgYWJvcnQgd2hpbGUgZmV0Y2hpbmcgU0dUIiB9LAorCVtQT1JUX0NFUlJfU0dUX1BDSVBFUlJdCT0geyBBQ19FUlJfSE9TVF9CVVMsIEFUQV9FSF9TT0ZUUkVTRVQsCisJCQkJICAgICJQQ0kgcGFyaXR5IGVycm9yIHdoaWxlIGZldGNoaW5nIFNHVCIgfSwKKwlbUE9SVF9DRVJSX0NNRF9CT1VOREFSWV0gPSB7IEFDX0VSUl9TWVNURU0sIEFUQV9FSF9TT0ZUUkVTRVQsCisJCQkJICAgICAiUFJCIG5vdCBvbiBxd29yZCBib3VuZGFyeSIgfSwKKwlbUE9SVF9DRVJSX0NNRF9UR1RBQlJUXQk9IHsgQUNfRVJSX0hPU1RfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiUENJIHRhcmdldCBhYm9ydCB3aGlsZSBmZXRjaGluZyBQUkIiIH0sCisJW1BPUlRfQ0VSUl9DTURfTVNUQUJSVF0JPSB7IEFDX0VSUl9IT1NUX0JVUywgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgIlBDSSBtYXN0ZXIgYWJvcnQgd2hpbGUgZmV0Y2hpbmcgUFJCIiB9LAorCVtQT1JUX0NFUlJfQ01EX1BDSVBFUlJdCT0geyBBQ19FUlJfSE9TVF9CVVMsIEFUQV9FSF9TT0ZUUkVTRVQsCisJCQkJICAgICJQQ0kgcGFyaXR5IGVycm9yIHdoaWxlIGZldGNoaW5nIFBSQiIgfSwKKwlbUE9SVF9DRVJSX1hGUl9VTkRFRl0JPSB7IEFDX0VSUl9IT1NUX0JVUywgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgInVuZGVmaW5lZCBlcnJvciB3aGlsZSB0cmFuc2ZlcnJpbmcgZGF0YSIgfSwKKwlbUE9SVF9DRVJSX1hGUl9UR1RBQlJUXQk9IHsgQUNfRVJSX0hPU1RfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiUENJIHRhcmdldCBhYm9ydCB3aGlsZSB0cmFuc2ZlcnJpbmcgZGF0YSIgfSwKKwlbUE9SVF9DRVJSX1hGUl9NU1RBQlJUXQk9IHsgQUNfRVJSX0hPU1RfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiUENJIG1hc3RlciBhYm9ydCB3aGlsZSB0cmFuc2ZlcnJpbmcgZGF0YSIgfSwKKwlbUE9SVF9DRVJSX1hGUl9QQ0lQRVJSXQk9IHsgQUNfRVJSX0hPU1RfQlVTLCBBVEFfRUhfU09GVFJFU0VULAorCQkJCSAgICAiUENJIHBhcml0eSBlcnJvciB3aGlsZSB0cmFuc2ZlcnJpbmcgZGF0YSIgfSwKKwlbUE9SVF9DRVJSX1NFTkRTRVJWSUNFXQk9IHsgQUNfRVJSX0hTTSwgQVRBX0VIX1NPRlRSRVNFVCwKKwkJCQkgICAgIkZJUyByZWNlaXZlZCB3aGlsZSBzZW5kaW5nIHNlcnZpY2UgRklTIiB9LAorfTsKKwogLyoKICAqIGFwLT5wcml2YXRlX2RhdGEKICAqCkBAIC0yNDksMTIgKzMyNiwxNCBAQAogc3RhdGljIHUzMiBzaWwyNF9zY3JfcmVhZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBzY19yZWcpOwogc3RhdGljIHZvaWQgc2lsMjRfc2NyX3dyaXRlKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIHNjX3JlZywgdTMyIHZhbCk7CiBzdGF0aWMgdm9pZCBzaWwyNF90Zl9yZWFkKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKLXN0YXRpYyBpbnQgc2lsMjRfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKTsKIHN0YXRpYyB2b2lkIHNpbDI0X3FjX3ByZXAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiBzdGF0aWMgdW5zaWduZWQgaW50IHNpbDI0X3FjX2lzc3VlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwogc3RhdGljIHZvaWQgc2lsMjRfaXJxX2NsZWFyKHN0cnVjdCBhdGFfcG9ydCAqYXApOwotc3RhdGljIHZvaWQgc2lsMjRfZW5nX3RpbWVvdXQoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBzdGF0aWMgaXJxcmV0dXJuX3Qgc2lsMjRfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworc3RhdGljIHZvaWQgc2lsMjRfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApOworc3RhdGljIHZvaWQgc2lsMjRfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3N0YXRpYyB2b2lkIHNpbDI0X2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCk7CitzdGF0aWMgdm9pZCBzaWwyNF9wb3N0X2ludGVybmFsX2NtZChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIHN0YXRpYyBpbnQgc2lsMjRfcG9ydF9zdGFydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHN0YXRpYyB2b2lkIHNpbDI0X3BvcnRfc3RvcChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIHN0YXRpYyB2b2lkIHNpbDI0X2hvc3Rfc3RvcChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7CkBAIC0yODEsNyArMzYwLDggQEAKIAkubmFtZQkJCT0gRFJWX05BTUUsCiAJLmlvY3RsCQkJPSBhdGFfc2NzaV9pb2N0bCwKIAkucXVldWVjb21tYW5kCQk9IGF0YV9zY3NpX3F1ZXVlY21kLAotCS5jYW5fcXVldWUJCT0gQVRBX0RFRl9RVUVVRSwKKwkuY2hhbmdlX3F1ZXVlX2RlcHRoCT0gYXRhX3Njc2lfY2hhbmdlX3F1ZXVlX2RlcHRoLAorCS5jYW5fcXVldWUJCT0gU0lMMjRfTUFYX0NNRFMsCiAJLnRoaXNfaWQJCT0gQVRBX1NIVF9USElTX0lELAogCS5zZ190YWJsZXNpemUJCT0gTElCQVRBX01BWF9QUkQsCiAJLmNtZF9wZXJfbHVuCQk9IEFUQV9TSFRfQ01EX1BFUl9MVU4sCkBAIC0yOTAsNiArMzcwLDcgQEAKIAkucHJvY19uYW1lCQk9IERSVl9OQU1FLAogCS5kbWFfYm91bmRhcnkJCT0gQVRBX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAorCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAogfTsKIApAQCAtMzA0LDE5ICszODUsMjAgQEAKIAogCS50Zl9yZWFkCQk9IHNpbDI0X3RmX3JlYWQsCiAKLQkucHJvYmVfcmVzZXQJCT0gc2lsMjRfcHJvYmVfcmVzZXQsCi0KIAkucWNfcHJlcAkJPSBzaWwyNF9xY19wcmVwLAogCS5xY19pc3N1ZQkJPSBzaWwyNF9xY19pc3N1ZSwKIAotCS5lbmdfdGltZW91dAkJPSBzaWwyNF9lbmdfdGltZW91dCwKLQogCS5pcnFfaGFuZGxlcgkJPSBzaWwyNF9pbnRlcnJ1cHQsCiAJLmlycV9jbGVhcgkJPSBzaWwyNF9pcnFfY2xlYXIsCiAKIAkuc2NyX3JlYWQJCT0gc2lsMjRfc2NyX3JlYWQsCiAJLnNjcl93cml0ZQkJPSBzaWwyNF9zY3Jfd3JpdGUsCiAKKwkuZnJlZXplCQkJPSBzaWwyNF9mcmVlemUsCisJLnRoYXcJCQk9IHNpbDI0X3RoYXcsCisJLmVycm9yX2hhbmRsZXIJCT0gc2lsMjRfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBzaWwyNF9wb3N0X2ludGVybmFsX2NtZCwKKwogCS5wb3J0X3N0YXJ0CQk9IHNpbDI0X3BvcnRfc3RhcnQsCiAJLnBvcnRfc3RvcAkJPSBzaWwyNF9wb3J0X3N0b3AsCiAJLmhvc3Rfc3RvcAkJPSBzaWwyNF9ob3N0X3N0b3AsCkBAIC0zMzMsOSArNDE1LDggQEAKIAkvKiBzaWxfMzEyNCAqLwogCXsKIAkJLnNodAkJPSAmc2lsMjRfc2h0LAotCQkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAotCQkJCSAgQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19ETUEgfAotCQkJCSAgU0lMMjRfTlBPUlRTMkZMQUcoNCksCisJCS5ob3N0X2ZsYWdzCT0gU0lMMjRfQ09NTU9OX0ZMQUdTIHwgU0lMMjRfTlBPUlRTMkZMQUcoNCkgfAorCQkJCSAgU0lMMjRfRkxBR19QQ0lYX0lSUV9XT0MsCiAJCS5waW9fbWFzawk9IDB4MWYsCQkJLyogcGlvMC00ICovCiAJCS5td2RtYV9tYXNrCT0gMHgwNywJCQkvKiBtd2RtYTAtMiAqLwogCQkudWRtYV9tYXNrCT0gMHgzZiwJCQkvKiB1ZG1hMC01ICovCkBAIC0zNDQsOSArNDI1LDcgQEAKIAkvKiBzaWxfMzEzMiAqLwogCXsKIAkJLnNodAkJPSAmc2lsMjRfc2h0LAotCQkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAotCQkJCSAgQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19ETUEgfAotCQkJCSAgU0lMMjRfTlBPUlRTMkZMQUcoMiksCisJCS5ob3N0X2ZsYWdzCT0gU0lMMjRfQ09NTU9OX0ZMQUdTIHwgU0lMMjRfTlBPUlRTMkZMQUcoMiksCiAJCS5waW9fbWFzawk9IDB4MWYsCQkJLyogcGlvMC00ICovCiAJCS5td2RtYV9tYXNrCT0gMHgwNywJCQkvKiBtd2RtYTAtMiAqLwogCQkudWRtYV9tYXNrCT0gMHgzZiwJCQkvKiB1ZG1hMC01ICovCkBAIC0zNTUsOSArNDM0LDcgQEAKIAkvKiBzaWxfMzEzMS9zaWxfMzUzMSAqLwogCXsKIAkJLnNodAkJPSAmc2lsMjRfc2h0LAotCQkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAotCQkJCSAgQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1BJT19ETUEgfAotCQkJCSAgU0lMMjRfTlBPUlRTMkZMQUcoMSksCisJCS5ob3N0X2ZsYWdzCT0gU0lMMjRfQ09NTU9OX0ZMQUdTIHwgU0lMMjRfTlBPUlRTMkZMQUcoMSksCiAJCS5waW9fbWFzawk9IDB4MWYsCQkJLyogcGlvMC00ICovCiAJCS5td2RtYV9tYXNrCT0gMHgwNywJCQkvKiBtd2RtYTAtMiAqLwogCQkudWRtYV9tYXNrCT0gMHgzZiwJCQkvKiB1ZG1hMC01ICovCkBAIC0zNjUsNiArNDQyLDEzIEBACiAJfSwKIH07CiAKK3N0YXRpYyBpbnQgc2lsMjRfdGFnKGludCB0YWcpCit7CisJaWYgKHVubGlrZWx5KGF0YV90YWdfaW50ZXJuYWwodGFnKSkpCisJCXJldHVybiAwOworCXJldHVybiB0YWc7Cit9CisKIHN0YXRpYyB2b2lkIHNpbDI0X2Rldl9jb25maWcoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldikKIHsKIAl2b2lkIF9faW9tZW0gKnBvcnQgPSAodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcjsKQEAgLTQyNiw1NiArNTEwLDY1IEBACiAJKnRmID0gcHAtPnRmOwogfQogCi1zdGF0aWMgaW50IHNpbDI0X3NvZnRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgdmVyYm9zZSwKLQkJCSAgIHVuc2lnbmVkIGludCAqY2xhc3MpCitzdGF0aWMgaW50IHNpbDI0X2luaXRfcG9ydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQoreworCXZvaWQgX19pb21lbSAqcG9ydCA9ICh2b2lkIF9faW9tZW0gKilhcC0+aW9hZGRyLmNtZF9hZGRyOworCXUzMiB0bXA7CisKKwl3cml0ZWwoUE9SVF9DU19JTklULCBwb3J0ICsgUE9SVF9DVFJMX1NUQVQpOworCWF0YV93YWl0X3JlZ2lzdGVyKHBvcnQgKyBQT1JUX0NUUkxfU1RBVCwKKwkJCSAgUE9SVF9DU19JTklULCBQT1JUX0NTX0lOSVQsIDEwLCAxMDApOworCXRtcCA9IGF0YV93YWl0X3JlZ2lzdGVyKHBvcnQgKyBQT1JUX0NUUkxfU1RBVCwKKwkJCQlQT1JUX0NTX1JEWSwgMCwgMTAsIDEwMCk7CisKKwlpZiAoKHRtcCAmIChQT1JUX0NTX0lOSVQgfCBQT1JUX0NTX1JEWSkpICE9IFBPUlRfQ1NfUkRZKQorCQlyZXR1cm4gLUVJTzsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzaWwyNF9zb2Z0cmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzcykKIHsKIAl2b2lkIF9faW9tZW0gKnBvcnQgPSAodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcjsKIAlzdHJ1Y3Qgc2lsMjRfcG9ydF9wcml2ICpwcCA9IGFwLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IHNpbDI0X3ByYiAqcHJiID0gJnBwLT5jbWRfYmxvY2tbMF0uYXRhLnByYjsKIAlkbWFfYWRkcl90IHBhZGRyID0gcHAtPmNtZF9ibG9ja19kbWE7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIEFUQV9UTU9VVF9CT09UICogSFo7Ci0JdTMyIGlycV9lbmFibGUsIGlycV9zdGF0OworCXUzMiBtYXNrLCBpcnFfc3RhdDsKKwljb25zdCBjaGFyICpyZWFzb247CiAKIAlEUFJJTlRLKCJFTlRFUlxuIik7CiAKLQlpZiAoIXNhdGFfZGV2X3ByZXNlbnQoYXApKSB7CisJaWYgKGF0YV9wb3J0X29mZmxpbmUoYXApKSB7CiAJCURQUklOVEsoIlBIWSByZXBvcnRzIG5vIGRldmljZVxuIik7CiAJCSpjbGFzcyA9IEFUQV9ERVZfTk9ORTsKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogdGVtcG9yYXJpbHkgdHVybiBvZmYgSVJRcyBkdXJpbmcgU1JTVCAqLwotCWlycV9lbmFibGUgPSByZWFkbChwb3J0ICsgUE9SVF9JUlFfRU5BQkxFX1NFVCk7Ci0Jd3JpdGVsKGlycV9lbmFibGUsIHBvcnQgKyBQT1JUX0lSUV9FTkFCTEVfQ0xSKTsKKwkvKiBwdXQgdGhlIHBvcnQgaW50byBrbm93biBzdGF0ZSAqLworCWlmIChzaWwyNF9pbml0X3BvcnQoYXApKSB7CisJCXJlYXNvbiA9InBvcnQgbm90IHJlYWR5IjsKKwkJZ290byBlcnI7CisJfQogCi0JLyoKLQkgKiBYWFg6IE5vdCBzdXJlIHdoZXRoZXIgdGhlIGZvbGxvd2luZyBzbGVlcCBpcyBuZWVkZWQgb3Igbm90LgotCSAqIFRoZSBvcmlnaW5hbCBkcml2ZXIgaGFkIGl0LiAgU28uLi4uCi0JICovCi0JbXNsZWVwKDEwKTsKLQorCS8qIGRvIFNSU1QgKi8KIAlwcmItPmN0cmwgPSBjcHVfdG9fbGUxNihQUkJfQ1RSTF9TUlNUKTsKIAlwcmItPmZpc1sxXSA9IDA7IC8qIG5vIFBNIHlldCAqLwogCiAJd3JpdGVsKCh1MzIpcGFkZHIsIHBvcnQgKyBQT1JUX0NNRF9BQ1RJVkFURSk7CisJd3JpdGVsKCh1NjQpcGFkZHIgPj4gMzIsIHBvcnQgKyBQT1JUX0NNRF9BQ1RJVkFURSArIDQpOwogCi0JZG8gewotCQlpcnFfc3RhdCA9IHJlYWRsKHBvcnQgKyBQT1JUX0lSUV9TVEFUKTsKLQkJd3JpdGVsKGlycV9zdGF0LCBwb3J0ICsgUE9SVF9JUlFfU1RBVCk7CQkvKiBjbGVhciBpcnEgKi8KKwltYXNrID0gKFBPUlRfSVJRX0NPTVBMRVRFIHwgUE9SVF9JUlFfRVJST1IpIDw8IFBPUlRfSVJRX1JBV19TSElGVDsKKwlpcnFfc3RhdCA9IGF0YV93YWl0X3JlZ2lzdGVyKHBvcnQgKyBQT1JUX0lSUV9TVEFULCBtYXNrLCAweDAsCisJCQkJICAgICAxMDAsIEFUQV9UTU9VVF9CT09UIC8gSFogKiAxMDAwKTsKIAotCQlpcnFfc3RhdCA+Pj0gUE9SVF9JUlFfUkFXX1NISUZUOwotCQlpZiAoaXJxX3N0YXQgJiAoUE9SVF9JUlFfQ09NUExFVEUgfCBQT1JUX0lSUV9FUlJPUikpCi0JCQlicmVhazsKLQotCQltc2xlZXAoMTAwKTsKLQl9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7Ci0KLQkvKiByZXN0b3JlIElSUXMgKi8KLQl3cml0ZWwoaXJxX2VuYWJsZSwgcG9ydCArIFBPUlRfSVJRX0VOQUJMRV9TRVQpOworCXdyaXRlbChpcnFfc3RhdCwgcG9ydCArIFBPUlRfSVJRX1NUQVQpOyAvKiBjbGVhciBJUlFzICovCisJaXJxX3N0YXQgPj49IFBPUlRfSVJRX1JBV19TSElGVDsKIAogCWlmICghKGlycV9zdGF0ICYgUE9SVF9JUlFfQ09NUExFVEUpKSB7Ci0JCURQUklOVEsoIkVYSVQsIHNyc3QgZmFpbGVkXG4iKTsKLQkJcmV0dXJuIC1FSU87CisJCWlmIChpcnFfc3RhdCAmIFBPUlRfSVJRX0VSUk9SKQorCQkJcmVhc29uID0gIlNSU1QgY29tbWFuZCBlcnJvciI7CisJCWVsc2UKKwkJCXJlYXNvbiA9ICJ0aW1lb3V0IjsKKwkJZ290byBlcnI7CiAJfQogCiAJc2lsMjRfdXBkYXRlX3RmKGFwKTsKQEAgLTQ4NywyMiArNTgwLDU3IEBACiAgb3V0OgogCURQUklOVEsoIkVYSVQsIGNsYXNzPSV1XG4iLCAqY2xhc3MpOwogCXJldHVybiAwOworCisgZXJyOgorCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJzb2Z0cmVzZXQgZmFpbGVkICglcylcbiIsIHJlYXNvbik7CisJcmV0dXJuIC1FSU87CiB9CiAKLXN0YXRpYyBpbnQgc2lsMjRfaGFyZHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCB2ZXJib3NlLAotCQkJICAgdW5zaWduZWQgaW50ICpjbGFzcykKK3N0YXRpYyBpbnQgc2lsMjRfaGFyZHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCAqY2xhc3MpCiB7Ci0JdW5zaWduZWQgaW50IGR1bW15X2NsYXNzOworCXZvaWQgX19pb21lbSAqcG9ydCA9ICh2b2lkIF9faW9tZW0gKilhcC0+aW9hZGRyLmNtZF9hZGRyOworCWNvbnN0IGNoYXIgKnJlYXNvbjsKKwlpbnQgdG91dF9tc2VjLCByYzsKKwl1MzIgdG1wOwogCi0JLyogc2lsMjQgZG9lc24ndCByZXBvcnQgZGV2aWNlIHNpZ25hdHVyZSBhZnRlciBoYXJkIHJlc2V0ICovCi0JcmV0dXJuIHNhdGFfc3RkX2hhcmRyZXNldChhcCwgdmVyYm9zZSwgJmR1bW15X2NsYXNzKTsKLX0KKwkvKiBzaWwyNCBkb2VzIHRoZSByaWdodCB0aGluZyh0bSkgd2l0aG91dCBhbnkgcHJvdGVjdGlvbiAqLworCXNhdGFfc2V0X3NwZChhcCk7CiAKLXN0YXRpYyBpbnQgc2lsMjRfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKQotewotCXJldHVybiBhdGFfZHJpdmVfcHJvYmVfcmVzZXQoYXAsIGF0YV9zdGRfcHJvYmVpbml0LAotCQkJCSAgICAgc2lsMjRfc29mdHJlc2V0LCBzaWwyNF9oYXJkcmVzZXQsCi0JCQkJICAgICBhdGFfc3RkX3Bvc3RyZXNldCwgY2xhc3Nlcyk7CisJdG91dF9tc2VjID0gMTAwOworCWlmIChhdGFfcG9ydF9vbmxpbmUoYXApKQorCQl0b3V0X21zZWMgPSA1MDAwOworCisJd3JpdGVsKFBPUlRfQ1NfREVWX1JTVCwgcG9ydCArIFBPUlRfQ1RSTF9TVEFUKTsKKwl0bXAgPSBhdGFfd2FpdF9yZWdpc3Rlcihwb3J0ICsgUE9SVF9DVFJMX1NUQVQsCisJCQkJUE9SVF9DU19ERVZfUlNULCBQT1JUX0NTX0RFVl9SU1QsIDEwLCB0b3V0X21zZWMpOworCisJLyogU1N0YXR1cyBvc2NpbGxhdGVzIGJldHdlZW4gemVybyBhbmQgdmFsaWQgc3RhdHVzIGFmdGVyCisJICogREVWX1JTVCwgZGVib3VuY2UgaXQuCisJICovCisJcmMgPSBzYXRhX3BoeV9kZWJvdW5jZShhcCwgc2F0YV9kZWJfdGltaW5nX2JlZm9yZV9mc3JzdCk7CisJaWYgKHJjKSB7CisJCXJlYXNvbiA9ICJQSFkgZGVib3VuY2luZyBmYWlsZWQiOworCQlnb3RvIGVycjsKKwl9CisKKwlpZiAodG1wICYgUE9SVF9DU19ERVZfUlNUKSB7CisJCWlmIChhdGFfcG9ydF9vZmZsaW5lKGFwKSkKKwkJCXJldHVybiAwOworCQlyZWFzb24gPSAibGluayBub3QgcmVhZHkiOworCQlnb3RvIGVycjsKKwl9CisKKwkvKiBTaWwyNCBkb2Vzbid0IHN0b3JlIHNpZ25hdHVyZSBGSVMgYWZ0ZXIgaGFyZHJlc2V0LCBzbyB3ZQorCSAqIGNhbid0IHdhaXQgZm9yIEJTWSB0byBjbGVhci4gIFNvbWUgZGV2aWNlcyB0YWtlIGEgbG9uZyB0aW1lCisJICogdG8gZ2V0IHJlYWR5IGFuZCB0aG9zZSBkZXZpY2VzIHdpbGwgY2hva2UgaWYgd2UgZG9uJ3Qgd2FpdAorCSAqIGZvciBCU1kgY2xlYXJhbmNlIGhlcmUuICBUZWxsIGxpYmF0YSB0byBwZXJmb3JtIGZvbGxvdy11cAorCSAqIHNvZnRyZXNldC4KKwkgKi8KKwlyZXR1cm4gLUVBR0FJTjsKKworIGVycjoKKwlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLCAiaGFyZHJlc2V0IGZhaWxlZCAoJXMpXG4iLCByZWFzb24pOworCXJldHVybiAtRUlPOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2lsMjRfZmlsbF9zZyhzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLApAQCAtNTI4LDE3ICs2NTYsMjAgQEAKIHsKIAlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gcWMtPmFwOwogCXN0cnVjdCBzaWwyNF9wb3J0X3ByaXYgKnBwID0gYXAtPnByaXZhdGVfZGF0YTsKLQl1bmlvbiBzaWwyNF9jbWRfYmxvY2sgKmNiID0gcHAtPmNtZF9ibG9jayArIHFjLT50YWc7CisJdW5pb24gc2lsMjRfY21kX2Jsb2NrICpjYjsKIAlzdHJ1Y3Qgc2lsMjRfcHJiICpwcmI7CiAJc3RydWN0IHNpbDI0X3NnZSAqc2dlOworCXUxNiBjdHJsID0gMDsKKworCWNiID0gJnBwLT5jbWRfYmxvY2tbc2lsMjRfdGFnKHFjLT50YWcpXTsKIAogCXN3aXRjaCAocWMtPnRmLnByb3RvY29sKSB7CiAJY2FzZSBBVEFfUFJPVF9QSU86CiAJY2FzZSBBVEFfUFJPVF9ETUE6CisJY2FzZSBBVEFfUFJPVF9OQ1E6CiAJY2FzZSBBVEFfUFJPVF9OT0RBVEE6CiAJCXByYiA9ICZjYi0+YXRhLnByYjsKIAkJc2dlID0gY2ItPmF0YS5zZ2U7Ci0JCXByYi0+Y3RybCA9IDA7CiAJCWJyZWFrOwogCiAJY2FzZSBBVEFfUFJPVF9BVEFQSToKQEAgLTU1MSwxMiArNjgyLDEwIEBACiAKIAkJaWYgKHFjLT50Zi5wcm90b2NvbCAhPSBBVEFfUFJPVF9BVEFQSV9OT0RBVEEpIHsKIAkJCWlmIChxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfV1JJVEUpCi0JCQkJcHJiLT5jdHJsID0gY3B1X3RvX2xlMTYoUFJCX0NUUkxfUEFDS0VUX1dSSVRFKTsKKwkJCQljdHJsID0gUFJCX0NUUkxfUEFDS0VUX1dSSVRFOwogCQkJZWxzZQotCQkJCXByYi0+Y3RybCA9IGNwdV90b19sZTE2KFBSQl9DVFJMX1BBQ0tFVF9SRUFEKTsKLQkJfSBlbHNlCi0JCQlwcmItPmN0cmwgPSAwOwotCisJCQkJY3RybCA9IFBSQl9DVFJMX1BBQ0tFVF9SRUFEOworCQl9CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKQEAgLTU2NSw2ICs2OTQsNyBAQAogCQlCVUcoKTsKIAl9CiAKKwlwcmItPmN0cmwgPSBjcHVfdG9fbGUxNihjdHJsKTsKIAlhdGFfdGZfdG9fZmlzKCZxYy0+dGYsIHByYi0+ZmlzLCAwKTsKIAogCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX0RNQU1BUCkKQEAgLTU3NCwxMSArNzA0LDE4IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IHNpbDI0X3FjX2lzc3VlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCiB7CiAJc3RydWN0IGF0YV9wb3J0ICphcCA9IHFjLT5hcDsKLQl2b2lkIF9faW9tZW0gKnBvcnQgPSAodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcjsKIAlzdHJ1Y3Qgc2lsMjRfcG9ydF9wcml2ICpwcCA9IGFwLT5wcml2YXRlX2RhdGE7Ci0JZG1hX2FkZHJfdCBwYWRkciA9IHBwLT5jbWRfYmxvY2tfZG1hICsgcWMtPnRhZyAqIHNpemVvZigqcHAtPmNtZF9ibG9jayk7CisJdm9pZCBfX2lvbWVtICpwb3J0ID0gKHZvaWQgX19pb21lbSAqKWFwLT5pb2FkZHIuY21kX2FkZHI7CisJdW5zaWduZWQgaW50IHRhZyA9IHNpbDI0X3RhZyhxYy0+dGFnKTsKKwlkbWFfYWRkcl90IHBhZGRyOworCXZvaWQgX19pb21lbSAqYWN0aXZhdGU7CiAKLQl3cml0ZWwoKHUzMilwYWRkciwgcG9ydCArIFBPUlRfQ01EX0FDVElWQVRFKTsKKwlwYWRkciA9IHBwLT5jbWRfYmxvY2tfZG1hICsgdGFnICogc2l6ZW9mKCpwcC0+Y21kX2Jsb2NrKTsKKwlhY3RpdmF0ZSA9IHBvcnQgKyBQT1JUX0NNRF9BQ1RJVkFURSArIHRhZyAqIDg7CisKKwl3cml0ZWwoKHUzMilwYWRkciwgYWN0aXZhdGUpOworCXdyaXRlbCgodTY0KXBhZGRyID4+IDMyLCBhY3RpdmF0ZSArIDQpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTU4NywxNjIgKzcyNCwxMzkgQEAKIAkvKiB1bnVzZWQgKi8KIH0KIAotc3RhdGljIGludCBfX3NpbDI0X3Jlc3RhcnRfY29udHJvbGxlcih2b2lkIF9faW9tZW0gKnBvcnQpCitzdGF0aWMgdm9pZCBzaWwyNF9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKLQl1MzIgdG1wOwotCWludCBjbnQ7Ci0KLQl3cml0ZWwoUE9SVF9DU19JTklULCBwb3J0ICsgUE9SVF9DVFJMX1NUQVQpOwotCi0JLyogTWF4IH4xMG1zICovCi0JZm9yIChjbnQgPSAwOyBjbnQgPCAxMDAwMDsgY250KyspIHsKLQkJdG1wID0gcmVhZGwocG9ydCArIFBPUlRfQ1RSTF9TVEFUKTsKLQkJaWYgKHRtcCAmIFBPUlRfQ1NfUkRZKQotCQkJcmV0dXJuIDA7Ci0JCXVkZWxheSgxKTsKLQl9Ci0KLQlyZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkIHNpbDI0X3Jlc3RhcnRfY29udHJvbGxlcihzdHJ1Y3QgYXRhX3BvcnQgKmFwKQotewotCWlmIChfX3NpbDI0X3Jlc3RhcnRfY29udHJvbGxlcigodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcikpCi0JCXByaW50ayhLRVJOX0VSUiBEUlZfTkFNRQotCQkgICAgICAgIiBhdGEldTogZmFpbGVkIHRvIHJlc3RhcnQgY29udHJvbGxlclxuIiwgYXAtPmlkKTsKLX0KLQotc3RhdGljIGludCBfX3NpbDI0X3Jlc2V0X2NvbnRyb2xsZXIodm9pZCBfX2lvbWVtICpwb3J0KQotewotCWludCBjbnQ7Ci0JdTMyIHRtcDsKLQotCS8qIFJlc2V0IGNvbnRyb2xsZXIgc3RhdGUuICBJcyB0aGlzIGNvcnJlY3Q/ICovCi0Jd3JpdGVsKFBPUlRfQ1NfREVWX1JTVCwgcG9ydCArIFBPUlRfQ1RSTF9TVEFUKTsKLQlyZWFkbChwb3J0ICsgUE9SVF9DVFJMX1NUQVQpOwkvKiBzeW5jICovCi0KLQkvKiBNYXggfjEwMG1zICovCi0JZm9yIChjbnQgPSAwOyBjbnQgPCAxMDAwOyBjbnQrKykgewotCQl1ZGVsYXkoMTAwKTsKLQkJdG1wID0gcmVhZGwocG9ydCArIFBPUlRfQ1RSTF9TVEFUKTsKLQkJaWYgKCEodG1wICYgUE9SVF9DU19ERVZfUlNUKSkKLQkJCWJyZWFrOwotCX0KLQotCWlmICh0bXAgJiBQT1JUX0NTX0RFVl9SU1QpCi0JCXJldHVybiAtMTsKLQotCWlmICh0bXAgJiBQT1JUX0NTX1JEWSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1cm4gX19zaWwyNF9yZXN0YXJ0X2NvbnRyb2xsZXIocG9ydCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNpbDI0X3Jlc2V0X2NvbnRyb2xsZXIoc3RydWN0IGF0YV9wb3J0ICphcCkKLXsKLQlwcmludGsoS0VSTl9OT1RJQ0UgRFJWX05BTUUKLQkgICAgICAgIiBhdGEldTogcmVzZXR0aW5nIGNvbnRyb2xsZXIuLi5cbiIsIGFwLT5pZCk7Ci0JaWYgKF9fc2lsMjRfcmVzZXRfY29udHJvbGxlcigodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcikpCi0gICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSIERSVl9OQU1FCi0gICAgICAgICAgICAgICAgICAgICAgICIgYXRhJXU6IGZhaWxlZCB0byByZXNldCBjb250cm9sbGVyXG4iLCBhcC0+aWQpOwotfQotCi1zdGF0aWMgdm9pZCBzaWwyNF9lbmdfdGltZW91dChzdHJ1Y3QgYXRhX3BvcnQgKmFwKQotewotCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7Ci0KLQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCi0JcHJpbnRrKEtFUk5fRVJSICJhdGEldTogY29tbWFuZCB0aW1lb3V0XG4iLCBhcC0+aWQpOwotCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfVElNRU9VVDsKLQlhdGFfZWhfcWNfY29tcGxldGUocWMpOwotCi0Jc2lsMjRfcmVzZXRfY29udHJvbGxlcihhcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNpbDI0X2Vycm9yX2ludHIoc3RydWN0IGF0YV9wb3J0ICphcCwgdTMyIHNsb3Rfc3RhdCkKLXsKLQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0Jc3RydWN0IHNpbDI0X3BvcnRfcHJpdiAqcHAgPSBhcC0+cHJpdmF0ZV9kYXRhOwogCXZvaWQgX19pb21lbSAqcG9ydCA9ICh2b2lkIF9faW9tZW0gKilhcC0+aW9hZGRyLmNtZF9hZGRyOwotCXUzMiBpcnFfc3RhdCwgY21kX2Vyciwgc3N0YXR1cywgc2Vycm9yOwotCXVuc2lnbmVkIGludCBlcnJfbWFzazsKIAotCWlycV9zdGF0ID0gcmVhZGwocG9ydCArIFBPUlRfSVJRX1NUQVQpOwotCXdyaXRlbChpcnFfc3RhdCwgcG9ydCArIFBPUlRfSVJRX1NUQVQpOwkJLyogY2xlYXIgaXJxICovCi0KLQlpZiAoIShpcnFfc3RhdCAmIFBPUlRfSVJRX0VSUk9SKSkgewotCQkvKiBpZ25vcmUgbm9uLWNvbXBsZXRpb24sIG5vbi1lcnJvciBpcnFzIGZvciBub3cgKi8KLQkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQotCQkgICAgICAgImF0YSV1OiBub24tZXJyb3IgZXhjZXB0aW9uIGlycSAoaXJxX3N0YXQgJXgpXG4iLAotCQkgICAgICAgYXAtPmlkLCBpcnFfc3RhdCk7Ci0JCXJldHVybjsKLQl9Ci0KLQljbWRfZXJyID0gcmVhZGwocG9ydCArIFBPUlRfQ01EX0VSUik7Ci0Jc3N0YXR1cyA9IHJlYWRsKHBvcnQgKyBQT1JUX1NTVEFUVVMpOwotCXNlcnJvciA9IHJlYWRsKHBvcnQgKyBQT1JUX1NFUlJPUik7Ci0JaWYgKHNlcnJvcikKLQkJd3JpdGVsKHNlcnJvciwgcG9ydCArIFBPUlRfU0VSUk9SKTsKLQotCS8qCi0JICogRG9uJ3QgbG9nIEFUQVBJIGRldmljZSBlcnJvcnMuICBUaGV5J3JlIHN1cHBvc2VkIHRvIGhhcHBlbgotCSAqIGFuZCBhbnkgc2VyaW91cyBlcnJvcnMgd2lsbCBiZSBsb2dnZWQgdXNpbmcgc2Vuc2UgZGF0YSBieQotCSAqIHRoZSBTQ1NJIGxheWVyLgorCS8qIFBvcnQtd2lkZSBJUlEgbWFzayBpbiBIT1NUX0NUUkwgZG9lc24ndCByZWFsbHkgd29yaywgY2xlYXIKKwkgKiBQT1JUX0lSUV9FTkFCTEUgaW5zdGVhZC4KIAkgKi8KLQlpZiAoYXAtPmRldmljZVswXS5jbGFzcyAhPSBBVEFfREVWX0FUQVBJIHx8IGNtZF9lcnIgPiBQT1JUX0NFUlJfU0RCKQotCQlwcmludGsoImF0YSV1OiBlcnJvciBpbnRlcnJ1cHQgb24gcG9ydCVkXG4iCi0JCSAgICAgICAiICBzdGF0PTB4JXggaXJxPTB4JXggY21kX2Vycj0lZCBzc3RhdHVzPTB4JXggc2Vycm9yPTB4JXhcbiIsCi0JCSAgICAgICBhcC0+aWQsIGFwLT5wb3J0X25vLCBzbG90X3N0YXQsIGlycV9zdGF0LCBjbWRfZXJyLCBzc3RhdHVzLCBzZXJyb3IpOworCXdyaXRlbCgweGZmZmYsIHBvcnQgKyBQT1JUX0lSUV9FTkFCTEVfQ0xSKTsKK30KIAotCWlmIChjbWRfZXJyID09IFBPUlRfQ0VSUl9ERVYgfHwgY21kX2VyciA9PSBQT1JUX0NFUlJfU0RCKSB7Ci0JCS8qCi0JCSAqIERldmljZSBpcyByZXBvcnRpbmcgZXJyb3IsIHRmIHJlZ2lzdGVycyBhcmUgdmFsaWQuCi0JCSAqLwotCQlzaWwyNF91cGRhdGVfdGYoYXApOwotCQllcnJfbWFzayA9IGFjX2Vycl9tYXNrKHBwLT50Zi5jb21tYW5kKTsKLQkJc2lsMjRfcmVzdGFydF9jb250cm9sbGVyKGFwKTsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBPdGhlciBlcnJvcnMuICBsaWJhdGEgY3VycmVudGx5IGRvZXNuJ3QgaGF2ZSBhbnkKLQkJICogbWVjaGFuaXNtIHRvIHJlcG9ydCB0aGVzZSBlcnJvcnMuICBKdXN0IHR1cm4gb24KLQkJICogQVRBX0VSUi4KLQkJICovCi0JCWVycl9tYXNrID0gQUNfRVJSX09USEVSOwotCQlzaWwyNF9yZXNldF9jb250cm9sbGVyKGFwKTsKK3N0YXRpYyB2b2lkIHNpbDI0X3RoYXcoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl2b2lkIF9faW9tZW0gKnBvcnQgPSAodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcjsKKwl1MzIgdG1wOworCisJLyogY2xlYXIgSVJRICovCisJdG1wID0gcmVhZGwocG9ydCArIFBPUlRfSVJRX1NUQVQpOworCXdyaXRlbCh0bXAsIHBvcnQgKyBQT1JUX0lSUV9TVEFUKTsKKworCS8qIHR1cm4gSVJRIGJhY2sgb24gKi8KKwl3cml0ZWwoREVGX1BPUlRfSVJRLCBwb3J0ICsgUE9SVF9JUlFfRU5BQkxFX1NFVCk7Cit9CisKK3N0YXRpYyB2b2lkIHNpbDI0X2Vycm9yX2ludHIoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwl2b2lkIF9faW9tZW0gKnBvcnQgPSAodm9pZCBfX2lvbWVtICopYXAtPmlvYWRkci5jbWRfYWRkcjsKKwlzdHJ1Y3QgYXRhX2VoX2luZm8gKmVoaSA9ICZhcC0+ZWhfaW5mbzsKKwlpbnQgZnJlZXplID0gMDsKKwl1MzIgaXJxX3N0YXQ7CisKKwkvKiBvbiBlcnJvciwgd2UgbmVlZCB0byBjbGVhciBJUlEgZXhwbGljaXRseSAqLworCWlycV9zdGF0ID0gcmVhZGwocG9ydCArIFBPUlRfSVJRX1NUQVQpOworCXdyaXRlbChpcnFfc3RhdCwgcG9ydCArIFBPUlRfSVJRX1NUQVQpOworCisJLyogZmlyc3QsIGFuYWx5emUgYW5kIHJlY29yZCBob3N0IHBvcnQgZXZlbnRzICovCisJYXRhX2VoaV9jbGVhcl9kZXNjKGVoaSk7CisKKwlhdGFfZWhpX3B1c2hfZGVzYyhlaGksICJpcnFfc3RhdCAweCUwOHgiLCBpcnFfc3RhdCk7CisKKwlpZiAoaXJxX3N0YXQgJiAoUE9SVF9JUlFfUEhZUkRZX0NIRyB8IFBPUlRfSVJRX0RFVl9YQ0hHKSkgeworCQlhdGFfZWhpX2hvdHBsdWdnZWQoZWhpKTsKKwkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiLCAlcyIsCisJCQkgICAgICAgaXJxX3N0YXQgJiBQT1JUX0lSUV9QSFlSRFlfQ0hHID8KKwkJCSAgICAgICAiUEhZIFJEWSBjaGFuZ2VkIiA6ICJkZXZpY2UgZXhjaGFuZ2VkIik7CisJCWZyZWV6ZSA9IDE7CiAJfQogCi0JaWYgKHFjKSB7Ci0JCXFjLT5lcnJfbWFzayB8PSBlcnJfbWFzazsKLQkJYXRhX3FjX2NvbXBsZXRlKHFjKTsKKwlpZiAoaXJxX3N0YXQgJiBQT1JUX0lSUV9VTktfRklTKSB7CisJCWVoaS0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKKwkJZWhpLT5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpICwgIiwgdW5rbm93biBGSVMiKTsKKwkJZnJlZXplID0gMTsKIAl9CisKKwkvKiBkZWFsIHdpdGggY29tbWFuZCBlcnJvciAqLworCWlmIChpcnFfc3RhdCAmIFBPUlRfSVJRX0VSUk9SKSB7CisJCXN0cnVjdCBzaWwyNF9jZXJyX2luZm8gKmNpID0gTlVMTDsKKwkJdW5zaWduZWQgaW50IGVycl9tYXNrID0gMCwgYWN0aW9uID0gMDsKKwkJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYzsKKwkJdTMyIGNlcnI7CisKKwkJLyogYW5hbHl6ZSBDTURfRVJSICovCisJCWNlcnIgPSByZWFkbChwb3J0ICsgUE9SVF9DTURfRVJSKTsKKwkJaWYgKGNlcnIgPCBBUlJBWV9TSVpFKHNpbDI0X2NlcnJfZGIpKQorCQkJY2kgPSAmc2lsMjRfY2Vycl9kYltjZXJyXTsKKworCQlpZiAoY2kgJiYgY2ktPmRlc2MpIHsKKwkJCWVycl9tYXNrIHw9IGNpLT5lcnJfbWFzazsKKwkJCWFjdGlvbiB8PSBjaS0+YWN0aW9uOworCQkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiLCAlcyIsIGNpLT5kZXNjKTsKKwkJfSBlbHNlIHsKKwkJCWVycl9tYXNrIHw9IEFDX0VSUl9PVEhFUjsKKwkJCWFjdGlvbiB8PSBBVEFfRUhfU09GVFJFU0VUOworCQkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiLCB1bmtub3duIGNvbW1hbmQgZXJyb3IgJWQiLAorCQkJCQkgIGNlcnIpOworCQl9CisKKwkJLyogcmVjb3JkIGVycm9yIGluZm8gKi8KKwkJcWMgPSBhdGFfcWNfZnJvbV90YWcoYXAsIGFwLT5hY3RpdmVfdGFnKTsKKwkJaWYgKHFjKSB7CisJCQlzaWwyNF91cGRhdGVfdGYoYXApOworCQkJcWMtPmVycl9tYXNrIHw9IGVycl9tYXNrOworCQl9IGVsc2UKKwkJCWVoaS0+ZXJyX21hc2sgfD0gZXJyX21hc2s7CisKKwkJZWhpLT5hY3Rpb24gfD0gYWN0aW9uOworCX0KKworCS8qIGZyZWV6ZSBvciBhYm9ydCAqLworCWlmIChmcmVlemUpCisJCWF0YV9wb3J0X2ZyZWV6ZShhcCk7CisJZWxzZQorCQlhdGFfcG9ydF9hYm9ydChhcCk7Cit9CisKK3N0YXRpYyB2b2lkIHNpbDI0X2ZpbmlzaF9xYyhzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCWlmIChxYy0+ZmxhZ3MgJiBBVEFfUUNGTEFHX1JFU1VMVF9URikKKwkJc2lsMjRfdXBkYXRlX3RmKHFjLT5hcCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaWwyNF9ob3N0X2ludHIoc3RydWN0IGF0YV9wb3J0ICphcCkKIHsKLQlzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7CiAJdm9pZCBfX2lvbWVtICpwb3J0ID0gKHZvaWQgX19pb21lbSAqKWFwLT5pb2FkZHIuY21kX2FkZHI7Ci0JdTMyIHNsb3Rfc3RhdDsKKwl1MzIgc2xvdF9zdGF0LCBxY19hY3RpdmU7CisJaW50IHJjOwogCiAJc2xvdF9zdGF0ID0gcmVhZGwocG9ydCArIFBPUlRfU0xPVF9TVEFUKTsKLQlpZiAoIShzbG90X3N0YXQgJiBIT1NUX1NTVEFUX0FUVE4pKSB7Ci0JCXN0cnVjdCBzaWwyNF9wb3J0X3ByaXYgKnBwID0gYXAtPnByaXZhdGVfZGF0YTsKLQkJLyoKLQkJICogIUhPU1RfU1NBVF9BVFROIGd1YXJhbnRlZXMgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAotCQkgKiBzbyByZWFkaW5nIGJhY2sgdGYgcmVnaXN0ZXJzIGlzIHVubmVjZXNzYXJ5IGZvcgotCQkgKiBtb3N0IGNvbW1hbmRzLiAgVE9ETzogcmVhZCB0ZiByZWdpc3RlcnMgZm9yCi0JCSAqIGNvbW1hbmRzIHdoaWNoIHJlcXVpcmUgdGhlc2UgdmFsdWVzIG9uIHN1Y2Nlc3NmdWwKLQkJICogY29tcGxldGlvbiAoRVhFQ1VURSBERVZJQ0UgRElBR05PU1RJQywgQ0hFQ0sgUE9XRVIsCi0JCSAqIERFVklDRSBSRVNFVCBhbmQgUkVBRCBQT1JUIE1VTFRJUExJRVIgKGFueSBtb3JlPykuCi0JCSAqLwotCQlzaWwyNF91cGRhdGVfdGYoYXApOwogCi0JCWlmIChxYykgewotCQkJcWMtPmVycl9tYXNrIHw9IGFjX2Vycl9tYXNrKHBwLT50Zi5jb21tYW5kKTsKLQkJCWF0YV9xY19jb21wbGV0ZShxYyk7Ci0JCX0KLQl9IGVsc2UKLQkJc2lsMjRfZXJyb3JfaW50cihhcCwgc2xvdF9zdGF0KTsKKwlpZiAodW5saWtlbHkoc2xvdF9zdGF0ICYgSE9TVF9TU1RBVF9BVFROKSkgeworCQlzaWwyNF9lcnJvcl9pbnRyKGFwKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChhcC0+ZmxhZ3MgJiBTSUwyNF9GTEFHX1BDSVhfSVJRX1dPQykKKwkJd3JpdGVsKFBPUlRfSVJRX0NPTVBMRVRFLCBwb3J0ICsgUE9SVF9JUlFfU1RBVCk7CisKKwlxY19hY3RpdmUgPSBzbG90X3N0YXQgJiB+SE9TVF9TU1RBVF9BVFROOworCXJjID0gYXRhX3FjX2NvbXBsZXRlX211bHRpcGxlKGFwLCBxY19hY3RpdmUsIHNpbDI0X2ZpbmlzaF9xYyk7CisJaWYgKHJjID4gMCkKKwkJcmV0dXJuOworCWlmIChyYyA8IDApIHsKKwkJc3RydWN0IGF0YV9laF9pbmZvICplaGkgPSAmYXAtPmVoX2luZm87CisJCWVoaS0+ZXJyX21hc2sgfD0gQUNfRVJSX0hTTTsKKwkJZWhpLT5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwkJYXRhX3BvcnRfZnJlZXplKGFwKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChhdGFfcmF0ZWxpbWl0KCkpCisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9JTkZPLCAic3B1cmlvdXMgaW50ZXJydXB0ICIKKwkJCSIoc2xvdF9zdGF0IDB4JXggYWN0aXZlX3RhZyAlZCBzYWN0aXZlIDB4JXgpXG4iLAorCQkJc2xvdF9zdGF0LCBhcC0+YWN0aXZlX3RhZywgYXAtPnNhY3RpdmUpOwogfQogCiBzdGF0aWMgaXJxcmV0dXJuX3Qgc2lsMjRfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCkBAIC03NjksNyArODgzLDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgaG9zdF9zZXQtPm5fcG9ydHM7IGkrKykKIAkJaWYgKHN0YXR1cyAmICgxIDw8IGkpKSB7CiAJCQlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gaG9zdF9zZXQtPnBvcnRzW2ldOwotCQkJaWYgKGFwICYmICEoYXAtPmZsYWdzICYgQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRCkpIHsKKwkJCWlmIChhcCAmJiAhKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKSkgewogCQkJCXNpbDI0X2hvc3RfaW50cihob3N0X3NldC0+cG9ydHNbaV0pOwogCQkJCWhhbmRsZWQrKzsKIAkJCX0gZWxzZQpAQCAtNzgyLDkgKzg5NiwzNSBAQAogCXJldHVybiBJUlFfUkVUVkFMKGhhbmRsZWQpOwogfQogCitzdGF0aWMgdm9pZCBzaWwyNF9lcnJvcl9oYW5kbGVyKHN0cnVjdCBhdGFfcG9ydCAqYXApCit7CisJc3RydWN0IGF0YV9laF9jb250ZXh0ICplaGMgPSAmYXAtPmVoX2NvbnRleHQ7CisKKwlpZiAoc2lsMjRfaW5pdF9wb3J0KGFwKSkgeworCQlhdGFfZWhfZnJlZXplX3BvcnQoYXApOworCQllaGMtPmkuYWN0aW9uIHw9IEFUQV9FSF9IQVJEUkVTRVQ7CisJfQorCisJLyogcGVyZm9ybSByZWNvdmVyeSAqLworCWF0YV9kb19laChhcCwgYXRhX3N0ZF9wcmVyZXNldCwgc2lsMjRfc29mdHJlc2V0LCBzaWwyNF9oYXJkcmVzZXQsCisJCSAgYXRhX3N0ZF9wb3N0cmVzZXQpOworfQorCitzdGF0aWMgdm9pZCBzaWwyNF9wb3N0X2ludGVybmFsX2NtZChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQoreworCXN0cnVjdCBhdGFfcG9ydCAqYXAgPSBxYy0+YXA7CisKKwlpZiAocWMtPmZsYWdzICYgQVRBX1FDRkxBR19GQUlMRUQpCisJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfT1RIRVI7CisKKwkvKiBtYWtlIERNQSBlbmdpbmUgZm9yZ2V0IGFib3V0IHRoZSBmYWlsZWQgY29tbWFuZCAqLworCWlmIChxYy0+ZXJyX21hc2spCisJCXNpbDI0X2luaXRfcG9ydChhcCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaWwyNF9jYmxrX2ZyZWUoc3RydWN0IHNpbDI0X3BvcnRfcHJpdiAqcHAsIHN0cnVjdCBkZXZpY2UgKmRldikKIHsKLQljb25zdCBzaXplX3QgY2Jfc2l6ZSA9IHNpemVvZigqcHAtPmNtZF9ibG9jayk7CisJY29uc3Qgc2l6ZV90IGNiX3NpemUgPSBzaXplb2YoKnBwLT5jbWRfYmxvY2spICogU0lMMjRfTUFYX0NNRFM7CiAKIAlkbWFfZnJlZV9jb2hlcmVudChkZXYsIGNiX3NpemUsIHBwLT5jbWRfYmxvY2ssIHBwLT5jbWRfYmxvY2tfZG1hKTsKIH0KQEAgLTc5NCw3ICs5MzQsNyBAQAogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGFwLT5ob3N0X3NldC0+ZGV2OwogCXN0cnVjdCBzaWwyNF9wb3J0X3ByaXYgKnBwOwogCXVuaW9uIHNpbDI0X2NtZF9ibG9jayAqY2I7Ci0Jc2l6ZV90IGNiX3NpemUgPSBzaXplb2YoKmNiKTsKKwlzaXplX3QgY2Jfc2l6ZSA9IHNpemVvZigqY2IpICogU0lMMjRfTUFYX0NNRFM7CiAJZG1hX2FkZHJfdCBjYl9kbWE7CiAJaW50IHJjID0gLUVOT01FTTsKIApAQCAtODU4LDYgKzk5OCw3IEBACiAJdm9pZCBfX2lvbWVtICpob3N0X2Jhc2UgPSBOVUxMOwogCXZvaWQgX19pb21lbSAqcG9ydF9iYXNlID0gTlVMTDsKIAlpbnQgaSwgcmM7CisJdTMyIHRtcDsKIAogCWlmICghcHJpbnRlZF92ZXJzaW9uKyspCiAJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgInZlcnNpb24gIiBEUlZfVkVSU0lPTiAiXG4iKTsKQEAgLTkxMCwzNyArMTA1MSw1MyBAQAogCS8qCiAJICogQ29uZmlndXJlIHRoZSBkZXZpY2UKIAkgKi8KLQkvKgotCSAqIEZJWE1FOiBUaGlzIGRldmljZSBpcyBjZXJ0YWlubHkgNjQtYml0IGNhcGFibGUuICBXZSBqdXN0Ci0JICogZG9uJ3Qga25vdyBob3cgdG8gdXNlIGl0LiAgQWZ0ZXIgZml4aW5nIDMyYml0IGFjdGl2YXRpb24gaW4KLQkgKiB0aGlzIGZ1bmN0aW9uLCBlbmFibGUgNjRiaXQgbWFza3MgaGVyZS4KLQkgKi8KLQlyYyA9IHBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spOwotCWlmIChyYykgewotCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmcGRldi0+ZGV2LAotCQkJICAgIjMyLWJpdCBETUEgZW5hYmxlIGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0X2ZyZWU7Ci0JfQotCXJjID0gcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsIERNQV8zMkJJVF9NQVNLKTsKLQlpZiAocmMpIHsKLQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJnBkZXYtPmRldiwKLQkJCSAgICIzMi1iaXQgY29uc2lzdGVudCBETUEgZW5hYmxlIGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0X2ZyZWU7CisJaWYgKCFwY2lfc2V0X2RtYV9tYXNrKHBkZXYsIERNQV82NEJJVF9NQVNLKSkgeworCQlyYyA9IHBjaV9zZXRfY29uc2lzdGVudF9kbWFfbWFzayhwZGV2LCBETUFfNjRCSVRfTUFTSyk7CisJCWlmIChyYykgeworCQkJcmMgPSBwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spOworCQkJaWYgKHJjKSB7CisJCQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJnBkZXYtPmRldiwKKwkJCQkJICAgIjY0LWJpdCBETUEgZW5hYmxlIGZhaWxlZFxuIik7CisJCQkJZ290byBvdXRfZnJlZTsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCXJjID0gcGNpX3NldF9kbWFfbWFzayhwZGV2LCBETUFfMzJCSVRfTUFTSyk7CisJCWlmIChyYykgeworCQkJZGV2X3ByaW50ayhLRVJOX0VSUiwgJnBkZXYtPmRldiwKKwkJCQkgICAiMzItYml0IERNQSBlbmFibGUgZmFpbGVkXG4iKTsKKwkJCWdvdG8gb3V0X2ZyZWU7CisJCX0KKwkJcmMgPSBwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGRldiwgRE1BXzMyQklUX01BU0spOworCQlpZiAocmMpIHsKKwkJCWRldl9wcmludGsoS0VSTl9FUlIsICZwZGV2LT5kZXYsCisJCQkJICAgIjMyLWJpdCBjb25zaXN0ZW50IERNQSBlbmFibGUgZmFpbGVkXG4iKTsKKwkJCWdvdG8gb3V0X2ZyZWU7CisJCX0KIAl9CiAKIAkvKiBHUElPIG9mZiAqLwogCXdyaXRlbCgwLCBob3N0X2Jhc2UgKyBIT1NUX0ZMQVNIX0NNRCk7CiAKLQkvKiBNYXNrIGludGVycnVwdHMgZHVyaW5nIGluaXRpYWxpemF0aW9uICovCisJLyogQXBwbHkgd29ya2Fyb3VuZCBmb3IgY29tcGxldGlvbiBJUlEgbG9zcyBvbiBQQ0ktWCBlcnJhdGEgKi8KKwlpZiAocHJvYmVfZW50LT5ob3N0X2ZsYWdzICYgU0lMMjRfRkxBR19QQ0lYX0lSUV9XT0MpIHsKKwkJdG1wID0gcmVhZGwoaG9zdF9iYXNlICsgSE9TVF9DVFJMKTsKKwkJaWYgKHRtcCAmIChIT1NUX0NUUkxfVFJEWSB8IEhPU1RfQ1RSTF9TVE9QIHwgSE9TVF9DVFJMX0RFVlNFTCkpCisJCQlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJnBkZXYtPmRldiwKKwkJCQkgICAiQXBwbHlpbmcgY29tcGxldGlvbiBJUlEgbG9zcyBvbiBQQ0ktWCAiCisJCQkJICAgImVycmF0YSBmaXhcbiIpOworCQllbHNlCisJCQlwcm9iZV9lbnQtPmhvc3RfZmxhZ3MgJj0gflNJTDI0X0ZMQUdfUENJWF9JUlFfV09DOworCX0KKworCS8qIGNsZWFyIGdsb2JhbCByZXNldCAmIG1hc2sgaW50ZXJydXB0cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gKi8KIAl3cml0ZWwoMCwgaG9zdF9iYXNlICsgSE9TVF9DVFJMKTsKIAogCWZvciAoaSA9IDA7IGkgPCBwcm9iZV9lbnQtPm5fcG9ydHM7IGkrKykgewogCQl2b2lkIF9faW9tZW0gKnBvcnQgPSBwb3J0X2Jhc2UgKyBpICogUE9SVF9SRUdTX1NJWkU7CiAJCXVuc2lnbmVkIGxvbmcgcG9ydHUgPSAodW5zaWduZWQgbG9uZylwb3J0OwotCQl1MzIgdG1wOwotCQlpbnQgY250OwogCi0JCXByb2JlX2VudC0+cG9ydFtpXS5jbWRfYWRkciA9IHBvcnR1ICsgUE9SVF9QUkI7CisJCXByb2JlX2VudC0+cG9ydFtpXS5jbWRfYWRkciA9IHBvcnR1OwogCQlwcm9iZV9lbnQtPnBvcnRbaV0uc2NyX2FkZHIgPSBwb3J0dSArIFBPUlRfU0NPTlRST0w7CiAKIAkJYXRhX3N0ZF9wb3J0cygmcHJvYmVfZW50LT5wb3J0W2ldKTsKQEAgLTk1MiwxOCArMTEwOSwyMCBAQAogCQl0bXAgPSByZWFkbChwb3J0ICsgUE9SVF9DVFJMX1NUQVQpOwogCQlpZiAodG1wICYgUE9SVF9DU19QT1JUX1JTVCkgewogCQkJd3JpdGVsKFBPUlRfQ1NfUE9SVF9SU1QsIHBvcnQgKyBQT1JUX0NUUkxfQ0xSKTsKLQkJCXJlYWRsKHBvcnQgKyBQT1JUX0NUUkxfU1RBVCk7CS8qIHN5bmMgKi8KLQkJCWZvciAoY250ID0gMDsgY250IDwgMTA7IGNudCsrKSB7Ci0JCQkJbXNsZWVwKDEwKTsKLQkJCQl0bXAgPSByZWFkbChwb3J0ICsgUE9SVF9DVFJMX1NUQVQpOwotCQkJCWlmICghKHRtcCAmIFBPUlRfQ1NfUE9SVF9SU1QpKQotCQkJCQlicmVhazsKLQkJCX0KKwkJCXRtcCA9IGF0YV93YWl0X3JlZ2lzdGVyKHBvcnQgKyBQT1JUX0NUUkxfU1RBVCwKKwkJCQkJCVBPUlRfQ1NfUE9SVF9SU1QsCisJCQkJCQlQT1JUX0NTX1BPUlRfUlNULCAxMCwgMTAwKTsKIAkJCWlmICh0bXAgJiBQT1JUX0NTX1BPUlRfUlNUKQogCQkJCWRldl9wcmludGsoS0VSTl9FUlIsICZwZGV2LT5kZXYsCiAJCQkJICAgICAgICAgICAiZmFpbGVkIHRvIGNsZWFyIHBvcnQgUlNUXG4iKTsKIAkJfQogCisJCS8qIENvbmZpZ3VyZSBJUlEgV29DICovCisJCWlmIChwcm9iZV9lbnQtPmhvc3RfZmxhZ3MgJiBTSUwyNF9GTEFHX1BDSVhfSVJRX1dPQykKKwkJCXdyaXRlbChQT1JUX0NTX0lSUV9XT0MsIHBvcnQgKyBQT1JUX0NUUkxfU1RBVCk7CisJCWVsc2UKKwkJCXdyaXRlbChQT1JUX0NTX0lSUV9XT0MsIHBvcnQgKyBQT1JUX0NUUkxfQ0xSKTsKKwogCQkvKiBaZXJvIGVycm9yIGNvdW50ZXJzLiAqLwogCQl3cml0ZWwoMHg4MDAwLCBwb3J0ICsgUE9SVF9ERUNPREVfRVJSX1RIUkVTSCk7CiAJCXdyaXRlbCgweDgwMDAsIHBvcnQgKyBQT1JUX0NSQ19FUlJfVEhSRVNIKTsKQEAgLTk3MiwyNiArMTEzMSwxMSBAQAogCQl3cml0ZWwoMHgwMDAwLCBwb3J0ICsgUE9SVF9DUkNfRVJSX0NOVCk7CiAJCXdyaXRlbCgweDAwMDAsIHBvcnQgKyBQT1JUX0hTSEtfRVJSX0NOVCk7CiAKLQkJLyogRklYTUU6IDMyYml0IGFjdGl2YXRpb24/ICovCi0JCXdyaXRlbCgwLCBwb3J0ICsgUE9SVF9BQ1RJVkFURV9VUFBFUl9BRERSKTsKLQkJd3JpdGVsKFBPUlRfQ1NfMzJCSVRfQUNUViwgcG9ydCArIFBPUlRfQ1RSTF9TVEFUKTsKLQotCQkvKiBDb25maWd1cmUgaW50ZXJydXB0cyAqLwotCQl3cml0ZWwoMHhmZmZmLCBwb3J0ICsgUE9SVF9JUlFfRU5BQkxFX0NMUik7Ci0JCXdyaXRlbChQT1JUX0lSUV9DT01QTEVURSB8IFBPUlRfSVJRX0VSUk9SIHwgUE9SVF9JUlFfU0RCX0ZJUywKLQkJICAgICAgIHBvcnQgKyBQT1JUX0lSUV9FTkFCTEVfU0VUKTsKLQotCQkvKiBDbGVhciBpbnRlcnJ1cHRzICovCi0JCXdyaXRlbCgweDBmZmYwZmZmLCBwb3J0ICsgUE9SVF9JUlFfU1RBVCk7Ci0JCXdyaXRlbChQT1JUX0NTX0lSUV9XT0MsIHBvcnQgKyBQT1JUX0NUUkxfQ0xSKTsKKwkJLyogQWx3YXlzIHVzZSA2NGJpdCBhY3RpdmF0aW9uICovCisJCXdyaXRlbChQT1JUX0NTXzMyQklUX0FDVFYsIHBvcnQgKyBQT1JUX0NUUkxfQ0xSKTsKIAogCQkvKiBDbGVhciBwb3J0IG11bHRpcGxpZXIgZW5hYmxlIGFuZCByZXN1bWUgYml0cyAqLwogCQl3cml0ZWwoUE9SVF9DU19QTV9FTiB8IFBPUlRfQ1NfUkVTVU1FLCBwb3J0ICsgUE9SVF9DVFJMX0NMUik7Ci0KLQkJLyogUmVzZXQgaXRzZWxmICovCi0JCWlmIChfX3NpbDI0X3Jlc2V0X2NvbnRyb2xsZXIocG9ydCkpCi0JCQlkZXZfcHJpbnRrKEtFUk5fRVJSLCAmcGRldi0+ZGV2LAotCQkJICAgICAgICAgICAiZmFpbGVkIHRvIHJlc2V0IGNvbnRyb2xsZXJcbiIpOwogCX0KIAogCS8qIFR1cm4gb24gaW50ZXJydXB0cyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NhdGFfc2lzLmMgYi9kcml2ZXJzL3Njc2kvc2F0YV9zaXMuYwppbmRleCA3Mjg1MzBkLi44MDlkMzM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2F0YV9zaXMuYworKysgYi9kcml2ZXJzL3Njc2kvc2F0YV9zaXMuYwpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpYmF0YS5oPgogCiAjZGVmaW5lIERSVl9OQU1FCSJzYXRhX3NpcyIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuNSIKKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuNiIKIAogZW51bSB7CiAJc2lzXzE4MAkJCT0gMCwKQEAgLTk2LDYgKzk2LDcgQEAKIAkucHJvY19uYW1lCQk9IERSVl9OQU1FLAogCS5kbWFfYm91bmRhcnkJCT0gQVRBX0RNQV9CT1VOREFSWSwKIAkuc2xhdmVfY29uZmlndXJlCT0gYXRhX3Njc2lfc2xhdmVfY29uZmlnLAorCS5zbGF2ZV9kZXN0cm95CQk9IGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3ksCiAJLmJpb3NfcGFyYW0JCT0gYXRhX3N0ZF9iaW9zX3BhcmFtLAogfTsKIApAQCAtMTA2LDE0ICsxMDcsMTcgQEAKIAkuY2hlY2tfc3RhdHVzCQk9IGF0YV9jaGVja19zdGF0dXMsCiAJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAogCS5kZXZfc2VsZWN0CQk9IGF0YV9zdGRfZGV2X3NlbGVjdCwKLQkucGh5X3Jlc2V0CQk9IHNhdGFfcGh5X3Jlc2V0LAogCS5ibWRtYV9zZXR1cCAgICAgICAgICAgID0gYXRhX2JtZG1hX3NldHVwLAogCS5ibWRtYV9zdGFydCAgICAgICAgICAgID0gYXRhX2JtZG1hX3N0YXJ0LAogCS5ibWRtYV9zdG9wCQk9IGF0YV9ibWRtYV9zdG9wLAogCS5ibWRtYV9zdGF0dXMJCT0gYXRhX2JtZG1hX3N0YXR1cywKIAkucWNfcHJlcAkJPSBhdGFfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gYXRhX3FjX2lzc3VlX3Byb3QsCi0JLmVuZ190aW1lb3V0CQk9IGF0YV9lbmdfdGltZW91dCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9waW9fZGF0YV94ZmVyLAorCS5mcmVlemUJCQk9IGF0YV9ibWRtYV9mcmVlemUsCisJLnRoYXcJCQk9IGF0YV9ibWRtYV90aGF3LAorCS5lcnJvcl9oYW5kbGVyCQk9IGF0YV9ibWRtYV9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCwKIAkuaXJxX2hhbmRsZXIJCT0gYXRhX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCiAJLnNjcl9yZWFkCQk9IHNpc19zY3JfcmVhZCwKQEAgLTEyNSw4ICsxMjksNyBAQAogCiBzdGF0aWMgc3RydWN0IGF0YV9wb3J0X2luZm8gc2lzX3BvcnRfaW5mbyA9IHsKIAkuc2h0CQk9ICZzaXNfc2h0LAotCS5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX1NBVEFfUkVTRVQgfAotCQkJICBBVEFfRkxBR19OT19MRUdBQ1ksCisJLmhvc3RfZmxhZ3MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfTk9fTEVHQUNZLAogCS5waW9fbWFzawk9IDB4MWYsCiAJLm13ZG1hX21hc2sJPSAweDcsCiAJLnVkbWFfbWFzawk9IDB4N2YsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV9zdncuYyBiL2RyaXZlcnMvc2NzaS9zYXRhX3N2dy5jCmluZGV4IDUzYjBkNWMuLmM5NGI4NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zYXRhX3N2dy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX3N2dy5jCkBAIC01NCw3ICs1NCw3IEBACiAjZW5kaWYgLyogQ09ORklHX1BQQ19PRiAqLwogCiAjZGVmaW5lIERSVl9OQU1FCSJzYXRhX3N2dyIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjEuMDciCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjgiCiAKIGVudW0gewogCS8qIFRhc2tmaWxlIHJlZ2lzdGVycyBvZmZzZXRzICovCkBAIC0yNTcsNyArMjU3LDcgQEAKIAlpbnQgbGVuLCBpbmRleDsKIAogCS8qIEZpbmQgIHRoZSBhdGFfcG9ydCAqLwotCWFwID0gKHN0cnVjdCBhdGFfcG9ydCAqKSAmc2hvc3QtPmhvc3RkYXRhWzBdOworCWFwID0gYXRhX3Nob3N0X3RvX3BvcnQoc2hvc3QpOwogCWlmIChhcCA9PSBOVUxMKQogCQlyZXR1cm4gMDsKIApAQCAtMjk5LDYgKzI5OSw3IEBACiAJLnByb2NfbmFtZQkJPSBEUlZfTkFNRSwKIAkuZG1hX2JvdW5kYXJ5CQk9IEFUQV9ETUFfQk9VTkRBUlksCiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKKwkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogI2lmZGVmIENPTkZJR19QUENfT0YKIAkucHJvY19pbmZvCQk9IGsyX3NhdGFfcHJvY19pbmZvLAogI2VuZGlmCkBAIC0zMTMsMTQgKzMxNCwxNyBAQAogCS5jaGVja19zdGF0dXMJCT0gazJfc3RhdF9jaGVja19zdGF0dXMsCiAJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAogCS5kZXZfc2VsZWN0CQk9IGF0YV9zdGRfZGV2X3NlbGVjdCwKLQkucGh5X3Jlc2V0CQk9IHNhdGFfcGh5X3Jlc2V0LAogCS5ibWRtYV9zZXR1cAkJPSBrMl9ibWRtYV9zZXR1cF9tbWlvLAogCS5ibWRtYV9zdGFydAkJPSBrMl9ibWRtYV9zdGFydF9tbWlvLAogCS5ibWRtYV9zdG9wCQk9IGF0YV9ibWRtYV9zdG9wLAogCS5ibWRtYV9zdGF0dXMJCT0gYXRhX2JtZG1hX3N0YXR1cywKIAkucWNfcHJlcAkJPSBhdGFfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gYXRhX3FjX2lzc3VlX3Byb3QsCi0JLmVuZ190aW1lb3V0CQk9IGF0YV9lbmdfdGltZW91dCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9tbWlvX2RhdGFfeGZlciwKKwkuZnJlZXplCQkJPSBhdGFfYm1kbWFfZnJlZXplLAorCS50aGF3CQkJPSBhdGFfYm1kbWFfdGhhdywKKwkuZXJyb3JfaGFuZGxlcgkJPSBhdGFfYm1kbWFfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQsCiAJLmlycV9oYW5kbGVyCQk9IGF0YV9pbnRlcnJ1cHQsCiAJLmlycV9jbGVhcgkJPSBhdGFfYm1kbWFfaXJxX2NsZWFyLAogCS5zY3JfcmVhZAkJPSBrMl9zYXRhX3Njcl9yZWFkLApAQCAtNDIwLDggKzQyNCw4IEBACiAJd3JpdGVsKDB4MCwgbW1pb19iYXNlICsgSzJfU0FUQV9TSU1fT0ZGU0VUKTsKIAogCXByb2JlX2VudC0+c2h0ID0gJmsyX3NhdGFfc2h0OwotCXByb2JlX2VudC0+aG9zdF9mbGFncyA9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19TQVRBX1JFU0VUIHwKLQkJCQlBVEFfRkxBR19OT19MRUdBQ1kgfCBBVEFfRkxBR19NTUlPOworCXByb2JlX2VudC0+aG9zdF9mbGFncyA9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAorCQkJCUFUQV9GTEFHX01NSU87CiAJcHJvYmVfZW50LT5wb3J0X29wcyA9ICZrMl9zYXRhX29wczsKIAlwcm9iZV9lbnQtPm5fcG9ydHMgPSA0OwogCXByb2JlX2VudC0+aXJxID0gcGRldi0+aXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NhdGFfc3g0LmMgYi9kcml2ZXJzL3Njc2kvc2F0YV9zeDQuYwppbmRleCA0MTM5YWQ0Li43Zjg2NDQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2F0YV9zeDQuYworKysgYi9kcml2ZXJzL3Njc2kvc2F0YV9zeDQuYwpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgInNhdGFfcHJvbWlzZS5oIgogCiAjZGVmaW5lIERSVl9OQU1FCSJzYXRhX3N4NCIKLSNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuOCIKKyNkZWZpbmUgRFJWX1ZFUlNJT04JIjAuOSIKIAogCiBlbnVtIHsKQEAgLTE5MSw2ICsxOTEsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiB9OwogCkBAIC0yMDQsNiArMjA1LDcgQEAKIAkucGh5X3Jlc2V0CQk9IHBkY18yMDYyMV9waHlfcmVzZXQsCiAJLnFjX3ByZXAJCT0gcGRjMjA2MjFfcWNfcHJlcCwKIAkucWNfaXNzdWUJCT0gcGRjMjA2MjFfcWNfaXNzdWVfcHJvdCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9tbWlvX2RhdGFfeGZlciwKIAkuZW5nX3RpbWVvdXQJCT0gcGRjX2VuZ190aW1lb3V0LAogCS5pcnFfaGFuZGxlcgkJPSBwZGMyMDYyMV9pbnRlcnJ1cHQsCiAJLmlycV9jbGVhcgkJPSBwZGMyMDYyMV9pcnFfY2xlYXIsCkBAIC0yMTgsNyArMjIwLDcgQEAKIAkJLnNodAkJPSAmcGRjX3NhdGFfc2h0LAogCQkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1kgfAogCQkJCSAgQVRBX0ZMQUdfU1JTVCB8IEFUQV9GTEFHX01NSU8gfAotCQkJCSAgQVRBX0ZMQUdfTk9fQVRBUEksCisJCQkJICBBVEFfRkxBR19OT19BVEFQSSB8IEFUQV9GTEFHX1BJT19QT0xMSU5HLAogCQkucGlvX21hc2sJPSAweDFmLCAvKiBwaW8wLTQgKi8KIAkJLm13ZG1hX21hc2sJPSAweDA3LCAvKiBtd2RtYTAtMiAqLwogCQkudWRtYV9tYXNrCT0gMHg3ZiwgLyogdWRtYTAtNiA7IEZJWE1FICovCkBAIC04MzMsMTEgKzgzNSwxMSBAQAogCQl0bXAgPSBtYXNrICYgKDEgPDwgaSk7CiAJCVZQUklOVEsoInNlcSAldSwgcG9ydF9ubyAldSwgYXAgJXAsIHRtcCAleFxuIiwgaSwgcG9ydF9ubywgYXAsIHRtcCk7CiAJCWlmICh0bXAgJiYgYXAgJiYKLQkJICAgICEoYXAtPmZsYWdzICYgKEFUQV9GTEFHX1BPUlRfRElTQUJMRUQgfCBBVEFfRkxBR19OT0lOVFIpKSkgeworCQkgICAgIShhcC0+ZmxhZ3MgJiBBVEFfRkxBR19ESVNBQkxFRCkpIHsKIAkJCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7CiAKIAkJCXFjID0gYXRhX3FjX2Zyb21fdGFnKGFwLCBhcC0+YWN0aXZlX3RhZyk7Ci0JCQlpZiAocWMgJiYgKCEocWMtPnRmLmN0bCAmIEFUQV9OSUVOKSkpCisJCQlpZiAocWMgJiYgKCEocWMtPnRmLmZsYWdzICYgQVRBX1RGTEFHX1BPTExJTkcpKSkKIAkJCQloYW5kbGVkICs9IHBkYzIwNjIxX2hvc3RfaW50cihhcCwgcWMsIChpID4gNCksCiAJCQkJCQkJICAgICAgbW1pb19iYXNlKTsKIAkJfQpAQCAtODY4LDE1ICs4NzAsMTYgQEAKIAlzd2l0Y2ggKHFjLT50Zi5wcm90b2NvbCkgewogCWNhc2UgQVRBX1BST1RfRE1BOgogCWNhc2UgQVRBX1BST1RfTk9EQVRBOgotCQlwcmludGsoS0VSTl9FUlIgImF0YSV1OiBjb21tYW5kIHRpbWVvdXRcbiIsIGFwLT5pZCk7CisJCWF0YV9wb3J0X3ByaW50ayhhcCwgS0VSTl9FUlIsICJjb21tYW5kIHRpbWVvdXRcbiIpOwogCQlxYy0+ZXJyX21hc2sgfD0gX19hY19lcnJfbWFzayhhdGFfd2FpdF9pZGxlKGFwKSk7CiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKIAkJZHJ2X3N0YXQgPSBhdGFfYnVzeV93YWl0KGFwLCBBVEFfQlVTWSB8IEFUQV9EUlEsIDEwMDApOwogCi0JCXByaW50ayhLRVJOX0VSUiAiYXRhJXU6IHVua25vd24gdGltZW91dCwgY21kIDB4JXggc3RhdCAweCV4XG4iLAotCQkgICAgICAgYXAtPmlkLCBxYy0+dGYuY29tbWFuZCwgZHJ2X3N0YXQpOworCQlhdGFfcG9ydF9wcmludGsoYXAsIEtFUk5fRVJSLAorCQkJCSJ1bmtub3duIHRpbWVvdXQsIGNtZCAweCV4IHN0YXQgMHgleFxuIiwKKwkJCQlxYy0+dGYuY29tbWFuZCwgZHJ2X3N0YXQpOwogCiAJCXFjLT5lcnJfbWFzayB8PSBhY19lcnJfbWFzayhkcnZfc3RhdCk7CiAJCWJyZWFrOwpAQCAtMTM3NSwxMCArMTM3OCw2IEBACiAJaWYgKCFwcmludGVkX3ZlcnNpb24rKykKIAkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAidmVyc2lvbiAiIERSVl9WRVJTSU9OICJcbiIpOwogCi0JLyoKLQkgKiBJZiB0aGlzIGRyaXZlciBoYXBwZW5zIHRvIG9ubHkgYmUgdXNlZnVsIG9uIEFwcGxlJ3MgSzIsIHRoZW4KLQkgKiB3ZSBzaG91bGQgY2hlY2sgdGhhdCBoZXJlIGFzIGl0IGhhcyBhIG5vcm1hbCBTZXJ2ZXJ3b3JrcyBJRAotCSAqLwogCXJjID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV91bGkuYyBiL2RyaXZlcnMvc2NzaS9zYXRhX3VsaS5jCmluZGV4IDM4YjUyYmQuLmY2NjhjOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zYXRhX3VsaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX3VsaS5jCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8bGludXgvbGliYXRhLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJInNhdGFfdWxpIgotI2RlZmluZSBEUlZfVkVSU0lPTgkiMC41IgorI2RlZmluZSBEUlZfVkVSU0lPTgkiMC42IgogCiBlbnVtIHsKIAl1bGlfNTI4OQkJPSAwLApAQCAtOTAsNiArOTAsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiB9OwogCkBAIC0xMDIsMTYgKzEwMywxOCBAQAogCS5leGVjX2NvbW1hbmQJCT0gYXRhX2V4ZWNfY29tbWFuZCwKIAkuZGV2X3NlbGVjdAkJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCiAKLQkucGh5X3Jlc2V0CQk9IHNhdGFfcGh5X3Jlc2V0LAotCiAJLmJtZG1hX3NldHVwICAgICAgICAgICAgPSBhdGFfYm1kbWFfc2V0dXAsCiAJLmJtZG1hX3N0YXJ0ICAgICAgICAgICAgPSBhdGFfYm1kbWFfc3RhcnQsCiAJLmJtZG1hX3N0b3AJCT0gYXRhX2JtZG1hX3N0b3AsCiAJLmJtZG1hX3N0YXR1cwkJPSBhdGFfYm1kbWFfc3RhdHVzLAogCS5xY19wcmVwCQk9IGF0YV9xY19wcmVwLAogCS5xY19pc3N1ZQkJPSBhdGFfcWNfaXNzdWVfcHJvdCwKKwkuZGF0YV94ZmVyCQk9IGF0YV9waW9fZGF0YV94ZmVyLAogCi0JLmVuZ190aW1lb3V0CQk9IGF0YV9lbmdfdGltZW91dCwKKwkuZnJlZXplCQkJPSBhdGFfYm1kbWFfZnJlZXplLAorCS50aGF3CQkJPSBhdGFfYm1kbWFfdGhhdywKKwkuZXJyb3JfaGFuZGxlcgkJPSBhdGFfYm1kbWFfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQsCiAKIAkuaXJxX2hhbmRsZXIJCT0gYXRhX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCkBAIC0xMjYsOCArMTI5LDcgQEAKIAogc3RhdGljIHN0cnVjdCBhdGFfcG9ydF9pbmZvIHVsaV9wb3J0X2luZm8gPSB7CiAJLnNodCAgICAgICAgICAgID0gJnVsaV9zaHQsCi0JLmhvc3RfZmxhZ3MgICAgID0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX1NBVEFfUkVTRVQgfAotCQkJICBBVEFfRkxBR19OT19MRUdBQ1ksCisJLmhvc3RfZmxhZ3MgICAgID0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSwKIAkucGlvX21hc2sgICAgICAgPSAweDFmLAkJLyogcGlvMC00ICovCiAJLnVkbWFfbWFzayAgICAgID0gMHg3ZiwJCS8qIHVkbWEwLTYgKi8KIAkucG9ydF9vcHMgICAgICAgPSAmdWxpX29wcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zYXRhX3ZpYS5jIGIvZHJpdmVycy9zY3NpL3NhdGFfdmlhLmMKaW5kZXggOWU3YWU0ZS4uMzIyODkwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NhdGFfdmlhLmMKKysrIGIvZHJpdmVycy9zY3NpL3NhdGFfdmlhLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2RlZmluZSBEUlZfTkFNRQkic2F0YV92aWEiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSIxLjEiCisjZGVmaW5lIERSVl9WRVJTSU9OCSIxLjIiCiAKIGVudW0gYm9hcmRfaWRzX2VudW0gewogCXZ0NjQyMCwKQEAgLTEwMyw2ICsxMDMsNyBAQAogCS5wcm9jX25hbWUJCT0gRFJWX05BTUUsCiAJLmRtYV9ib3VuZGFyeQkJPSBBVEFfRE1BX0JPVU5EQVJZLAogCS5zbGF2ZV9jb25maWd1cmUJPSBhdGFfc2NzaV9zbGF2ZV9jb25maWcsCisJLnNsYXZlX2Rlc3Ryb3kJCT0gYXRhX3Njc2lfc2xhdmVfZGVzdHJveSwKIAkuYmlvc19wYXJhbQkJPSBhdGFfc3RkX2Jpb3NfcGFyYW0sCiB9OwogCkBAIC0xMTUsOCArMTE2LDYgQEAKIAkuZXhlY19jb21tYW5kCQk9IGF0YV9leGVjX2NvbW1hbmQsCiAJLmRldl9zZWxlY3QJCT0gYXRhX3N0ZF9kZXZfc2VsZWN0LAogCi0JLnBoeV9yZXNldAkJPSBzYXRhX3BoeV9yZXNldCwKLQogCS5ibWRtYV9zZXR1cCAgICAgICAgICAgID0gYXRhX2JtZG1hX3NldHVwLAogCS5ibWRtYV9zdGFydCAgICAgICAgICAgID0gYXRhX2JtZG1hX3N0YXJ0LAogCS5ibWRtYV9zdG9wCQk9IGF0YV9ibWRtYV9zdG9wLApAQCAtMTI0LDggKzEyMywxMiBAQAogCiAJLnFjX3ByZXAJCT0gYXRhX3FjX3ByZXAsCiAJLnFjX2lzc3VlCQk9IGF0YV9xY19pc3N1ZV9wcm90LAorCS5kYXRhX3hmZXIJCT0gYXRhX3Bpb19kYXRhX3hmZXIsCiAKLQkuZW5nX3RpbWVvdXQJCT0gYXRhX2VuZ190aW1lb3V0LAorCS5mcmVlemUJCQk9IGF0YV9ibWRtYV9mcmVlemUsCisJLnRoYXcJCQk9IGF0YV9ibWRtYV90aGF3LAorCS5lcnJvcl9oYW5kbGVyCQk9IGF0YV9ibWRtYV9lcnJvcl9oYW5kbGVyLAorCS5wb3N0X2ludGVybmFsX2NtZAk9IGF0YV9ibWRtYV9wb3N0X2ludGVybmFsX2NtZCwKIAogCS5pcnFfaGFuZGxlcgkJPSBhdGFfaW50ZXJydXB0LAogCS5pcnFfY2xlYXIJCT0gYXRhX2JtZG1hX2lycV9jbGVhciwKQEAgLTE0MCw3ICsxNDMsNyBAQAogCiBzdGF0aWMgc3RydWN0IGF0YV9wb3J0X2luZm8gc3ZpYV9wb3J0X2luZm8gPSB7CiAJLnNodAkJPSAmc3ZpYV9zaHQsCi0JLmhvc3RfZmxhZ3MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfU1JTVCB8IEFUQV9GTEFHX05PX0xFR0FDWSwKKwkuaG9zdF9mbGFncwk9IEFUQV9GTEFHX1NBVEEgfCBBVEFfRkxBR19OT19MRUdBQ1ksCiAJLnBpb19tYXNrCT0gMHgxZiwKIAkubXdkbWFfbWFzawk9IDB4MDcsCiAJLnVkbWFfbWFzawk9IDB4N2YsCkBAIC0yMzUsOCArMjM4LDcgQEAKIAlJTklUX0xJU1RfSEVBRCgmcHJvYmVfZW50LT5ub2RlKTsKIAogCXByb2JlX2VudC0+c2h0CQk9ICZzdmlhX3NodDsKLQlwcm9iZV9lbnQtPmhvc3RfZmxhZ3MJPSBBVEFfRkxBR19TQVRBIHwgQVRBX0ZMQUdfU0FUQV9SRVNFVCB8Ci0JCQkJICBBVEFfRkxBR19OT19MRUdBQ1k7CisJcHJvYmVfZW50LT5ob3N0X2ZsYWdzCT0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWTsKIAlwcm9iZV9lbnQtPnBvcnRfb3BzCT0gJnN2aWFfc2F0YV9vcHM7CiAJcHJvYmVfZW50LT5uX3BvcnRzCT0gTl9QT1JUUzsKIAlwcm9iZV9lbnQtPmlycQkJPSBwZGV2LT5pcnE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2F0YV92c2MuYyBiL2RyaXZlcnMvc2NzaS9zYXRhX3ZzYy5jCmluZGV4IDhhMjljZTMuLjZkMGM0ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zYXRhX3ZzYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zYXRhX3ZzYy5jCkBAIC0yMjEsMTQgKzIyMSwyMSBAQAogCiAJCQlhcCA9IGhvc3Rfc2V0LT5wb3J0c1tpXTsKIAotCQkJaWYgKGFwICYmICEoYXAtPmZsYWdzICYKLQkJCQkgICAgKEFUQV9GTEFHX1BPUlRfRElTQUJMRUR8QVRBX0ZMQUdfTk9JTlRSKSkpIHsKKwkJCWlmIChpc192c2Nfc2F0YV9pbnRfZXJyKGksIGludF9zdGF0dXMpKSB7CisJCQkJdTMyIGVycl9zdGF0dXM7CisJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBpZ25vcmluZyBpbnRlcnJ1cHQocylcbiIsIF9fRlVOQ1RJT05fXyk7CisJCQkJZXJyX3N0YXR1cyA9IGFwID8gdnNjX3NhdGFfc2NyX3JlYWQoYXAsIFNDUl9FUlJPUikgOiAwOworCQkJCXZzY19zYXRhX3Njcl93cml0ZShhcCwgU0NSX0VSUk9SLCBlcnJfc3RhdHVzKTsKKwkJCQloYW5kbGVkKys7CisJCQl9CisKKwkJCWlmIChhcCAmJiAhKGFwLT5mbGFncyAmIEFUQV9GTEFHX0RJU0FCTEVEKSkgewogCQkJCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWM7CiAKIAkJCQlxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAtPmFjdGl2ZV90YWcpOwotCQkJCWlmIChxYyAmJiAoIShxYy0+dGYuY3RsICYgQVRBX05JRU4pKSkgeworCQkJCWlmIChxYyAmJiAoIShxYy0+dGYuZmxhZ3MgJiBBVEFfVEZMQUdfUE9MTElORykpKQogCQkJCQloYW5kbGVkICs9IGF0YV9ob3N0X2ludHIoYXAsIHFjKTsKLQkJCQl9IGVsc2UgaWYgKGlzX3ZzY19zYXRhX2ludF9lcnIoaSwgaW50X3N0YXR1cykpIHsKKwkJCQllbHNlIGlmIChpc192c2Nfc2F0YV9pbnRfZXJyKGksIGludF9zdGF0dXMpKSB7CiAJCQkJCS8qCiAJCQkJCSAqIE9uIHNvbWUgY2hpcHMgKGkuZS4gSW50ZWwgMzEyNDQpLCBhbiBlcnJvcgogCQkJCQkgKiBpbnRlcnJ1cHQgd2lsbCBzbmVhayBpbiBhdCBpbml0aWFsaXphdGlvbgpAQCAtMjcyLDYgKzI3OSw3IEBACiAJLnByb2NfbmFtZQkJPSBEUlZfTkFNRSwKIAkuZG1hX2JvdW5kYXJ5CQk9IEFUQV9ETUFfQk9VTkRBUlksCiAJLnNsYXZlX2NvbmZpZ3VyZQk9IGF0YV9zY3NpX3NsYXZlX2NvbmZpZywKKwkuc2xhdmVfZGVzdHJveQkJPSBhdGFfc2NzaV9zbGF2ZV9kZXN0cm95LAogCS5iaW9zX3BhcmFtCQk9IGF0YV9zdGRfYmlvc19wYXJhbSwKIH07CiAKQEAgLTI4MywxNCArMjkxLDE3IEBACiAJLmV4ZWNfY29tbWFuZAkJPSBhdGFfZXhlY19jb21tYW5kLAogCS5jaGVja19zdGF0dXMJCT0gYXRhX2NoZWNrX3N0YXR1cywKIAkuZGV2X3NlbGVjdAkJPSBhdGFfc3RkX2Rldl9zZWxlY3QsCi0JLnBoeV9yZXNldAkJPSBzYXRhX3BoeV9yZXNldCwKIAkuYm1kbWFfc2V0dXAgICAgICAgICAgICA9IGF0YV9ibWRtYV9zZXR1cCwKIAkuYm1kbWFfc3RhcnQgICAgICAgICAgICA9IGF0YV9ibWRtYV9zdGFydCwKIAkuYm1kbWFfc3RvcAkJPSBhdGFfYm1kbWFfc3RvcCwKIAkuYm1kbWFfc3RhdHVzCQk9IGF0YV9ibWRtYV9zdGF0dXMsCiAJLnFjX3ByZXAJCT0gYXRhX3FjX3ByZXAsCiAJLnFjX2lzc3VlCQk9IGF0YV9xY19pc3N1ZV9wcm90LAotCS5lbmdfdGltZW91dAkJPSBhdGFfZW5nX3RpbWVvdXQsCisJLmRhdGFfeGZlcgkJPSBhdGFfcGlvX2RhdGFfeGZlciwKKwkuZnJlZXplCQkJPSBhdGFfYm1kbWFfZnJlZXplLAorCS50aGF3CQkJPSBhdGFfYm1kbWFfdGhhdywKKwkuZXJyb3JfaGFuZGxlcgkJPSBhdGFfYm1kbWFfZXJyb3JfaGFuZGxlciwKKwkucG9zdF9pbnRlcm5hbF9jbWQJPSBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQsCiAJLmlycV9oYW5kbGVyCQk9IHZzY19zYXRhX2ludGVycnVwdCwKIAkuaXJxX2NsZWFyCQk9IGF0YV9ibWRtYV9pcnFfY2xlYXIsCiAJLnNjcl9yZWFkCQk9IHZzY19zYXRhX3Njcl9yZWFkLApAQCAtMzg1LDcgKzM5Niw3IEBACiAKIAlwcm9iZV9lbnQtPnNodCA9ICZ2c2Nfc2F0YV9zaHQ7CiAJcHJvYmVfZW50LT5ob3N0X2ZsYWdzID0gQVRBX0ZMQUdfU0FUQSB8IEFUQV9GTEFHX05PX0xFR0FDWSB8Ci0JCQkJQVRBX0ZMQUdfTU1JTyB8IEFUQV9GTEFHX1NBVEFfUkVTRVQ7CisJCQkJQVRBX0ZMQUdfTU1JTzsKIAlwcm9iZV9lbnQtPnBvcnRfb3BzID0gJnZzY19zYXRhX29wczsKIAlwcm9iZV9lbnQtPm5fcG9ydHMgPSA0OwogCXByb2JlX2VudC0+aXJxID0gcGRldi0+aXJxOwpAQCAtNDMzLDEzICs0NDQsMTQgQEAKIAogCiAvKgotICogMHgxNzI1LzB4NzE3NCBpcyB0aGUgVml0ZXNzZSBWU0MtNzE3NAotICogMHg4MDg2LzB4MzIwMCBpcyB0aGUgSW50ZWwgMzEyNDQsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIGlkZW50aWNhbAotICogY29tcGF0aWJpbGl0eSBpcyB1bnRlc3RlZCBhcyBvZiB5ZXQKKyAqIEludGVsIDMxMjQ0IGlzIHN1cHBvc2VkIHRvIGJlIGlkZW50aWNhbC4KKyAqIENvbXBhdGliaWxpdHkgaXMgdW50ZXN0ZWQgYXMgb2YgeWV0LgogICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdnNjX3NhdGFfcGNpX3RibFtdID0gewotCXsgMHgxNzI1LCAweDcxNzQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDB4MTA2MDAsIDB4RkZGRkZGLCAwIH0sCi0JeyAweDgwODYsIDB4MzIwMCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMHgxMDYwMCwgMHhGRkZGRkYsIDAgfSwKKwl7IFBDSV9WRU5ET1JfSURfVklURVNTRSwgUENJX0RFVklDRV9JRF9WSVRFU1NFX1ZTQzcxNzQsCisJICBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAweDEwNjAwLCAweEZGRkZGRiwgMCB9LAorCXsgUENJX1ZFTkRPUl9JRF9JTlRFTCwgUENJX0RFVklDRV9JRF9JTlRFTF9HRDMxMjQ0LAorCSAgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMHgxMDYwMCwgMHhGRkZGRkYsIDAgfSwKIAl7IH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpLmMgYi9kcml2ZXJzL3Njc2kvc2NzaS5jCmluZGV4IDczOTk0ZTIuLjJhYjdkZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2kuYwpAQCAtNjMsNyArNjMsNiBAQAogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RjcS5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9yZXF1ZXN0Lmg+CiAKICNpbmNsdWRlICJzY3NpX3ByaXYuaCIKICNpbmNsdWRlICJzY3NpX2xvZ2dpbmcuaCIKQEAgLTExNiw3OSArMTE1LDYgQEAKIH07CiBFWFBPUlRfU1lNQk9MKHNjc2lfZGV2aWNlX3R5cGVzKTsKIAotLyoKLSAqIEZ1bmN0aW9uOiAgICBzY3NpX2FsbG9jYXRlX3JlcXVlc3QKLSAqCi0gKiBQdXJwb3NlOiAgICAgQWxsb2NhdGUgYSByZXF1ZXN0IGRlc2NyaXB0b3IuCi0gKgotICogQXJndW1lbnRzOiAgIGRldmljZQkJLSBkZXZpY2UgZm9yIHdoaWNoIHdlIHdhbnQgYSByZXF1ZXN0Ci0gKgkJZ2ZwX21hc2sJLSBhbGxvY2F0aW9uIGZsYWdzIHBhc3NlZCB0byBrbWFsbG9jCi0gKgotICogTG9jayBzdGF0dXM6IE5vIGxvY2tzIGFzc3VtZWQgdG8gYmUgaGVsZC4gIFRoaXMgZnVuY3Rpb24gaXMgU01QLXNhZmUuCi0gKgotICogUmV0dXJuczogICAgIFBvaW50ZXIgdG8gcmVxdWVzdCBibG9jay4KLSAqLwotc3RydWN0IHNjc2lfcmVxdWVzdCAqc2NzaV9hbGxvY2F0ZV9yZXF1ZXN0KHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwKLQkJCQkJICAgZ2ZwX3QgZ2ZwX21hc2spCi17Ci0JY29uc3QgaW50IG9mZnNldCA9IEFMSUdOKHNpemVvZihzdHJ1Y3Qgc2NzaV9yZXF1ZXN0KSwgNCk7Ci0JY29uc3QgaW50IHNpemUgPSBvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHJlcXVlc3QpOwotCXN0cnVjdCBzY3NpX3JlcXVlc3QgKnNyZXE7Ci0gIAotCXNyZXEgPSBremFsbG9jKHNpemUsIGdmcF9tYXNrKTsKLQlpZiAobGlrZWx5KHNyZXEgIT0gTlVMTCkpIHsKLQkJc3JlcS0+c3JfcmVxdWVzdCA9IChzdHJ1Y3QgcmVxdWVzdCAqKSgoKGNoYXIgKilzcmVxKSArIG9mZnNldCk7Ci0JCXNyZXEtPnNyX2RldmljZSA9IHNkZXY7Ci0JCXNyZXEtPnNyX2hvc3QgPSBzZGV2LT5ob3N0OwotCQlzcmVxLT5zcl9tYWdpYyA9IFNDU0lfUkVRX01BR0lDOwotCQlzcmVxLT5zcl9kYXRhX2RpcmVjdGlvbiA9IERNQV9CSURJUkVDVElPTkFMOwotCX0KLQotCXJldHVybiBzcmVxOwotfQotRVhQT1JUX1NZTUJPTChzY3NpX2FsbG9jYXRlX3JlcXVlc3QpOwotCi12b2lkIF9fc2NzaV9yZWxlYXNlX3JlcXVlc3Qoc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcSkKLXsKLQlzdHJ1Y3QgcmVxdWVzdCAqcmVxID0gc3JlcS0+c3JfcmVxdWVzdDsKLQotCS8qIHVubGlrZWx5IGJlY2F1c2UgdGhlIHRhZyB3YXMgdXN1YWxseSBlbmRlZCBlYXJsaWVyIGJ5IHRoZQotCSAqIG1pZC1sYXllci4gSG93ZXZlciwgZm9yIGxheWVyaW5nIHJlYXNvbnMgVUxEJ3MgZG9uJ3QgZW5kCi0JICogdGhlIHRhZyBvZiBjb21tYW5kcyB0aGV5IGdlbmVyYXRlLiAqLwotCWlmICh1bmxpa2VseShibGtfcnFfdGFnZ2VkKHJlcSkpKSB7Ci0JCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gcmVxLT5xOwotCi0JCXNwaW5fbG9ja19pcnFzYXZlKHEtPnF1ZXVlX2xvY2ssIGZsYWdzKTsKLQkJYmxrX3F1ZXVlX2VuZF90YWcocSwgcmVxKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShxLT5xdWV1ZV9sb2NrLCBmbGFncyk7Ci0JfQotCi0KLQlpZiAobGlrZWx5KHNyZXEtPnNyX2NvbW1hbmQgIT0gTlVMTCkpIHsKLQkJc3RydWN0IHNjc2lfY21uZCAqY21kID0gc3JlcS0+c3JfY29tbWFuZDsKLQotCQlzcmVxLT5zcl9jb21tYW5kID0gTlVMTDsKLQkJc2NzaV9uZXh0X2NvbW1hbmQoY21kKTsKLQl9Ci19Ci0KLS8qCi0gKiBGdW5jdGlvbjogICAgc2NzaV9yZWxlYXNlX3JlcXVlc3QKLSAqCi0gKiBQdXJwb3NlOiAgICAgUmVsZWFzZSBhIHJlcXVlc3QgZGVzY3JpcHRvci4KLSAqCi0gKiBBcmd1bWVudHM6ICAgc3JlcSAgICAtIHJlcXVlc3QgdG8gcmVsZWFzZQotICoKLSAqIExvY2sgc3RhdHVzOiBObyBsb2NrcyBhc3N1bWVkIHRvIGJlIGhlbGQuICBUaGlzIGZ1bmN0aW9uIGlzIFNNUC1zYWZlLgotICovCi12b2lkIHNjc2lfcmVsZWFzZV9yZXF1ZXN0KHN0cnVjdCBzY3NpX3JlcXVlc3QgKnNyZXEpCi17Ci0JX19zY3NpX3JlbGVhc2VfcmVxdWVzdChzcmVxKTsKLQlrZnJlZShzcmVxKTsKLX0KLUVYUE9SVF9TWU1CT0woc2NzaV9yZWxlYXNlX3JlcXVlc3QpOwotCiBzdHJ1Y3Qgc2NzaV9ob3N0X2NtZF9wb29sIHsKIAlrbWVtX2NhY2hlX3QJKnNsYWI7CiAJdW5zaWduZWQgaW50CXVzZXJzOwpAQCAtNjQ2LDczICs1NzIsNiBAQAogCXJldHVybiBydG47CiB9CiAKLS8qCi0gKiBGdW5jdGlvbjogICAgc2NzaV9pbml0X2NtZF9mcm9tX3JlcQotICoKLSAqIFB1cnBvc2U6ICAgICBRdWV1ZSBhIFNDU0kgY29tbWFuZAotICogUHVycG9zZTogICAgIEluaXRpYWxpemUgYSBzdHJ1Y3Qgc2NzaV9jbW5kIGZyb20gYSBzdHJ1Y3Qgc2NzaV9yZXF1ZXN0Ci0gKgotICogQXJndW1lbnRzOiAgIGNtZCAgICAgICAtIGNvbW1hbmQgZGVzY3JpcHRvci4KLSAqICAgICAgICAgICAgICBzcmVxICAgICAgLSBSZXF1ZXN0IGZyb20gdGhlIHF1ZXVlLgotICoKLSAqIExvY2sgc3RhdHVzOiBOb25lIG5lZWRlZC4KLSAqCi0gKiBSZXR1cm5zOiAgICAgTm90aGluZy4KLSAqCi0gKiBOb3RlczogICAgICAgTWFpbmx5IHRyYW5zZmVyIGRhdGEgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgdG8gdGhlCi0gKiAgICAgICAgICAgICAgY29tbWFuZCBzdHJ1Y3R1cmUuICBUaGUgcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCi0gKiAgICAgICAgICAgICAgdXNpbmcgdGhlIG5vcm1hbCBtZW1vcnkgYWxsb2NhdG9yLCBhbmQgcmVxdWVzdHMgY2FuIHBpbGUKLSAqICAgICAgICAgICAgICB1cCB0byBtb3JlIG9yIGxlc3MgYW55IGRlcHRoLiAgVGhlIGNvbW1hbmQgc3RydWN0dXJlIHJlcHJlc2VudHMKLSAqICAgICAgICAgICAgICBhIGNvbnN1bWFibGUgcmVzb3VyY2UsIGFzIHRoZXNlIGFyZSBhbGxvY2F0ZWQgaW50byBhIHBvb2wKLSAqICAgICAgICAgICAgICB3aGVuIHRoZSBTQ1NJIHN1YnN5c3RlbSBpbml0aWFsaXplcy4gIFRoZSBwcmVhbGxvY2F0aW9uIGlzCi0gKiAgICAgICAgICAgICAgcmVxdWlyZWQgc28gdGhhdCBpbiBsb3ctbWVtb3J5IHNpdHVhdGlvbnMgYSBkaXNrIEkvTyByZXF1ZXN0Ci0gKiAgICAgICAgICAgICAgd29uJ3QgY2F1c2UgdGhlIG1lbW9yeSBtYW5hZ2VyIHRvIHRyeSBhbmQgd3JpdGUgb3V0IGEgcGFnZS4KLSAqICAgICAgICAgICAgICBUaGUgcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZ2VuZXJhbGx5IHVzZWQgYnkgaW9jdGxzIGFuZCBjaGFyYWN0ZXIKLSAqICAgICAgICAgICAgICBkZXZpY2VzLgotICovCi12b2lkIHNjc2lfaW5pdF9jbWRfZnJvbV9yZXEoc3RydWN0IHNjc2lfY21uZCAqY21kLCBzdHJ1Y3Qgc2NzaV9yZXF1ZXN0ICpzcmVxKQotewotCXNyZXEtPnNyX2NvbW1hbmQgPSBjbWQ7Ci0KLQljbWQtPmNtZF9sZW4gPSBzcmVxLT5zcl9jbWRfbGVuOwotCWNtZC0+dXNlX3NnID0gc3JlcS0+c3JfdXNlX3NnOwotCi0JY21kLT5yZXF1ZXN0ID0gc3JlcS0+c3JfcmVxdWVzdDsKLQltZW1jcHkoY21kLT5kYXRhX2NtbmQsIHNyZXEtPnNyX2NtbmQsIHNpemVvZihjbWQtPmRhdGFfY21uZCkpOwotCWNtZC0+c2VyaWFsX251bWJlciA9IDA7Ci0JY21kLT5idWZmbGVuID0gc3JlcS0+c3JfYnVmZmxlbjsKLQljbWQtPmJ1ZmZlciA9IHNyZXEtPnNyX2J1ZmZlcjsKLQljbWQtPnJldHJpZXMgPSAwOwotCWNtZC0+YWxsb3dlZCA9IHNyZXEtPnNyX2FsbG93ZWQ7Ci0JY21kLT5kb25lID0gc3JlcS0+c3JfZG9uZTsKLQljbWQtPnRpbWVvdXRfcGVyX2NvbW1hbmQgPSBzcmVxLT5zcl90aW1lb3V0X3Blcl9jb21tYW5kOwotCWNtZC0+c2NfZGF0YV9kaXJlY3Rpb24gPSBzcmVxLT5zcl9kYXRhX2RpcmVjdGlvbjsKLQljbWQtPnNnbGlzdF9sZW4gPSBzcmVxLT5zcl9zZ2xpc3RfbGVuOwotCWNtZC0+dW5kZXJmbG93ID0gc3JlcS0+c3JfdW5kZXJmbG93OwotCWNtZC0+c2NfcmVxdWVzdCA9IHNyZXE7Ci0JbWVtY3B5KGNtZC0+Y21uZCwgc3JlcS0+c3JfY21uZCwgc2l6ZW9mKHNyZXEtPnNyX2NtbmQpKTsKLQotCS8qCi0JICogWmVybyB0aGUgc2Vuc2UgYnVmZmVyLiAgU29tZSBob3N0IGFkYXB0ZXJzIGF1dG9tYXRpY2FsbHkgcmVxdWVzdAotCSAqIHNlbnNlIG9uIGVycm9yLiAgMCBpcyBub3QgYSB2YWxpZCBzZW5zZSBjb2RlLgotCSAqLwotCW1lbXNldChjbWQtPnNlbnNlX2J1ZmZlciwgMCwgc2l6ZW9mKHNyZXEtPnNyX3NlbnNlX2J1ZmZlcikpOwotCWNtZC0+cmVxdWVzdF9idWZmZXIgPSBzcmVxLT5zcl9idWZmZXI7Ci0JY21kLT5yZXF1ZXN0X2J1ZmZsZW4gPSBzcmVxLT5zcl9idWZmbGVuOwotCWNtZC0+b2xkX3VzZV9zZyA9IGNtZC0+dXNlX3NnOwotCWlmIChjbWQtPmNtZF9sZW4gPT0gMCkKLQkJY21kLT5jbWRfbGVuID0gQ09NTUFORF9TSVpFKGNtZC0+Y21uZFswXSk7Ci0JY21kLT5vbGRfY21kX2xlbiA9IGNtZC0+Y21kX2xlbjsKLQljbWQtPnNjX29sZF9kYXRhX2RpcmVjdGlvbiA9IGNtZC0+c2NfZGF0YV9kaXJlY3Rpb247Ci0JY21kLT5vbGRfdW5kZXJmbG93ID0gY21kLT51bmRlcmZsb3c7Ci0KLQkvKgotCSAqIFN0YXJ0IHRoZSB0aW1lciB0aWNraW5nLgotCSAqLwotCWNtZC0+cmVzdWx0ID0gMDsKLQotCVNDU0lfTE9HX01MUVVFVUUoMywgcHJpbnRrKCJMZWF2aW5nIHNjc2lfaW5pdF9jbWRfZnJvbV9yZXEoKVxuIikpOwotfQogCiAvKgogICogUGVyLUNQVSBJL08gY29tcGxldGlvbiBxdWV1ZS4KQEAgLTcyMCw2ICs1NzksMjQgQEAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgbGlzdF9oZWFkLCBzY3NpX2RvbmVfcSk7CiAKIC8qKgorICogc2NzaV9yZXFfYWJvcnRfY21kIC0tIFJlcXVlc3QgY29tbWFuZCByZWNvdmVyeSBmb3IgdGhlIHNwZWNpZmllZCBjb21tYW5kCisgKiBjbWQ6IHBvaW50ZXIgdG8gdGhlIFNDU0kgY29tbWFuZCBvZiBpbnRlcmVzdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmVxdWVzdHMgdGhhdCBTQ1NJIENvcmUgc3RhcnQgcmVjb3ZlcnkgZm9yIHRoZQorICogY29tbWFuZCBieSBkZWxldGluZyB0aGUgdGltZXIgYW5kIGFkZGluZyB0aGUgY29tbWFuZCB0byB0aGUgZWgKKyAqIHF1ZXVlLiAgSXQgY2FuIGJlIGNhbGxlZCBieSBlaXRoZXIgTExERHMgb3IgU0NTSSBDb3JlLiAgTExERHMgd2hvCisgKiBpbXBsZW1lbnQgdGhlaXIgb3duIGVycm9yIHJlY292ZXJ5IE1BWSBpZ25vcmUgdGhlIHRpbWVvdXQgZXZlbnQgaWYKKyAqIHRoZXkgZ2VuZXJhdGVkIHNjc2lfcmVxX2Fib3J0X2NtZC4KKyAqLwordm9pZCBzY3NpX3JlcV9hYm9ydF9jbWQoc3RydWN0IHNjc2lfY21uZCAqY21kKQoreworCWlmICghc2NzaV9kZWxldGVfdGltZXIoY21kKSkKKwkJcmV0dXJuOworCXNjc2lfdGltZXNfb3V0KGNtZCk7Cit9CitFWFBPUlRfU1lNQk9MKHNjc2lfcmVxX2Fib3J0X2NtZCk7CisKKy8qKgogICogc2NzaV9kb25lIC0gRW5xdWV1ZSB0aGUgZmluaXNoZWQgU0NTSSBjb21tYW5kIGludG8gdGhlIGRvbmUgcXVldWUuCiAgKiBAY21kOiBUaGUgU0NTSSBDb21tYW5kIGZvciB3aGljaCBhIGxvdy1sZXZlbCBkZXZpY2UgZHJpdmVyIChMTEREKSBnaXZlcwogICogb3duZXJzaGlwIGJhY2sgdG8gU0NTSSBDb3JlIC0tIGkuZS4gdGhlIExMREQgaGFzIGZpbmlzaGVkIHdpdGggaXQuCkBAIC04MDksNyArNjg2LDYgQEAKIHsKIAlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYgPSBjbWQtPmRldmljZTsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHNkZXYtPmhvc3Q7Ci0Jc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcTsKIAogCXNjc2lfZGV2aWNlX3VuYnVzeShzZGV2KTsKIApAQCAtODM5LDIxICs3MTUsNiBAQAogCSAqIFdlIGNhbiBnZXQgaGVyZSB3aXRoIHVzZV9zZz0wLCBjYXVzaW5nIGEgcGFuaWMgaW4gdGhlIHVwcGVyIGxldmVsCiAJICovCiAJY21kLT51c2Vfc2cgPSBjbWQtPm9sZF91c2Vfc2c7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQgcmVxdWVzdCBzdHJ1Y3R1cmUsIGNvcHkgdGhlIGRhdGEgb3ZlcgotCSAqIGJlZm9yZSB3ZSBjYWxsIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9uLgotCSAqLwotCXNyZXEgPSBjbWQtPnNjX3JlcXVlc3Q7Ci0JaWYgKHNyZXEpIHsKLQkgICAgICAgc3JlcS0+c3JfcmVzdWx0ID0gc3JlcS0+c3JfY29tbWFuZC0+cmVzdWx0OwotCSAgICAgICBpZiAoc3JlcS0+c3JfcmVzdWx0KSB7Ci0JCSAgICAgICBtZW1jcHkoc3JlcS0+c3Jfc2Vuc2VfYnVmZmVyLAotCQkJICAgICAgc3JlcS0+c3JfY29tbWFuZC0+c2Vuc2VfYnVmZmVyLAotCQkJICAgICAgc2l6ZW9mKHNyZXEtPnNyX3NlbnNlX2J1ZmZlcikpOwotCSAgICAgICB9Ci0JfQotCiAJY21kLT5kb25lKGNtZCk7CiB9CiBFWFBPUlRfU1lNQk9MKHNjc2lfZmluaXNoX2NvbW1hbmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2kuaCBiL2RyaXZlcnMvc2NzaS9zY3NpLmgKaW5kZXggNWVlNWQ4MC4uZjUxZTQ2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2kuaAorKysgYi9kcml2ZXJzL3Njc2kvc2NzaS5oCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNlLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfdGNxLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpLmg+CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2RldmluZm8uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2RldmluZm8uYwppbmRleCA2MmY4Y2I3Li5mYjVjYjRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9kZXZpbmZvLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfZGV2aW5mby5jCkBAIC0xNTksNiArMTU5LDggQEAKIAl7IkhJVEFDSEkiLCAiREY0MDAiLCAiKiIsIEJMSVNUX1NQQVJTRUxVTn0sCiAJeyJISVRBQ0hJIiwgIkRGNTAwIiwgIioiLCBCTElTVF9TUEFSU0VMVU59LAogCXsiSElUQUNISSIsICJERjYwMCIsICIqIiwgQkxJU1RfU1BBUlNFTFVOfSwKKwl7IkhJVEFDSEkiLCAiRElTSy1TVUJTWVNURU0iLCAiKiIsIEJMSVNUX0FUVEFDSF9QUTMgfCBCTElTVF9TUEFSU0VMVU4gfCBCTElTVF9MQVJHRUxVTn0sCisJeyJISVRBQ0hJIiwgIk9QRU4tRSIsICIqIiwgQkxJU1RfQVRUQUNIX1BRMyB8IEJMSVNUX1NQQVJTRUxVTiB8IEJMSVNUX0xBUkdFTFVOfSwKIAl7IkhQIiwgIkE2MTg5QSIsIE5VTEwsIEJMSVNUX1NQQVJTRUxVTiB8IEJMSVNUX0xBUkdFTFVOfSwJLyogSFAgVkE3NDAwICovCiAJeyJIUCIsICJPUEVOLSIsICIqIiwgQkxJU1RfU1BBUlNFTFVOIHwgQkxJU1RfTEFSR0VMVU59LCAvKiBIUCBYUCBBcnJheXMgKi8KIAl7IkhQIiwgIk5ldFJBSUQtNE0iLCBOVUxMLCBCTElTVF9GT1JDRUxVTn0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9lcnJvci5jIGIvZHJpdmVycy9zY3NpL3Njc2lfZXJyb3IuYwppbmRleCAxYzc1NjQ2Li42YTdhNjBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9lcnJvci5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2Vycm9yLmMKQEAgLTI2LDEzICsyNiwxMyBAQAogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAKICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9kYmcuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNlLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2lvY3RsLmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KIAogI2luY2x1ZGUgInNjc2lfcHJpdi5oIgogI2luY2x1ZGUgInNjc2lfbG9nZ2luZy5oIgpAQCAtNTgsNiArNTgsMjggQEAKIH0KIAogLyoqCisgKiBzY3NpX3NjaGVkdWxlX2VoIC0gc2NoZWR1bGUgRUggZm9yIFNDU0kgaG9zdAorICogQHNob3N0OglTQ1NJIGhvc3QgdG8gaW52b2tlIGVycm9yIGhhbmRsaW5nIG9uLgorICoKKyAqIFNjaGVkdWxlIFNDU0kgRUggd2l0aG91dCBzY21kLgorICoqLwordm9pZCBzY3NpX3NjaGVkdWxlX2VoKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CisKKwlpZiAoc2NzaV9ob3N0X3NldF9zdGF0ZShzaG9zdCwgU0hPU1RfUkVDT1ZFUlkpID09IDAgfHwKKwkgICAgc2NzaV9ob3N0X3NldF9zdGF0ZShzaG9zdCwgU0hPU1RfQ0FOQ0VMX1JFQ09WRVJZKSA9PSAwKSB7CisJCXNob3N0LT5ob3N0X2VoX3NjaGVkdWxlZCsrOworCQlzY3NpX2VoX3dha2V1cChzaG9zdCk7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChzY3NpX3NjaGVkdWxlX2VoKTsKKworLyoqCiAgKiBzY3NpX2VoX3NjbWRfYWRkIC0gYWRkIHNjc2kgY21kIHRvIGVycm9yIGhhbmRsaW5nLgogICogQHNjbWQ6CXNjbWQgdG8gcnVuIGVoIG9uLgogICogQGVoX2ZsYWc6CW9wdGlvbmFsIFNDU0lfRUggZmxhZy4KQEAgLTQ1Miw3ICs0NzQsNiBAQAogCQkJKHNkZXYtPmx1biA8PCA1ICYgMHhlMCk7CiAKIAlzaG9zdC0+ZWhfYWN0aW9uID0gJmRvbmU7Ci0Jc2NtZC0+cmVxdWVzdC0+cnFfc3RhdHVzID0gUlFfU0NTSV9CVVNZOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCXNjc2lfbG9nX3NlbmQoc2NtZCk7CkBAIC00NjEsNyArNDgyLDYgQEAKIAogCXRpbWVsZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZkb25lLCB0aW1lb3V0KTsKIAotCXNjbWQtPnJlcXVlc3QtPnJxX3N0YXR1cyA9IFJRX1NDU0lfRE9ORTsKIAlzaG9zdC0+ZWhfYWN0aW9uID0gTlVMTDsKIAogCXNjc2lfbG9nX2NvbXBsZXRpb24oc2NtZCwgU1VDQ0VTUyk7CkBAIC0xNTE3LDcgKzE1MzcsNyBAQAogCSAqLwogCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CiAJd2hpbGUgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpIHsKLQkJaWYgKHNob3N0LT5ob3N0X2ZhaWxlZCA9PSAwIHx8CisJCWlmICgoc2hvc3QtPmhvc3RfZmFpbGVkID09IDAgJiYgc2hvc3QtPmhvc3RfZWhfc2NoZWR1bGVkID09IDApIHx8CiAJCSAgICBzaG9zdC0+aG9zdF9mYWlsZWQgIT0gc2hvc3QtPmhvc3RfYnVzeSkgewogCQkJU0NTSV9MT0dfRVJST1JfUkVDT1ZFUlkoMSwKIAkJCQlwcmludGsoIkVycm9yIGhhbmRsZXIgc2NzaV9laF8lZCBzbGVlcGluZ1xuIiwKQEAgLTE2NTcsNyArMTY3Nyw2IEBACiAKIAlzY21kLT5yZXF1ZXN0ID0gJnJlcTsKIAltZW1zZXQoJnNjbWQtPmVoX3RpbWVvdXQsIDAsIHNpemVvZihzY21kLT5laF90aW1lb3V0KSk7Ci0Jc2NtZC0+cmVxdWVzdC0+cnFfc3RhdHVzICAgICAgCT0gUlFfU0NTSV9CVVNZOwogCiAJbWVtc2V0KCZzY21kLT5jbW5kLCAnXDAnLCBzaXplb2Yoc2NtZC0+Y21uZCkpOwogICAgIApAQCAtMTY3MSw4ICsxNjkwLDYgQEAKIAlzY21kLT5jbWRfbGVuCQkJPSAwOwogCiAJc2NtZC0+c2NfZGF0YV9kaXJlY3Rpb24JCT0gRE1BX0JJRElSRUNUSU9OQUw7Ci0Jc2NtZC0+c2NfcmVxdWVzdAkJPSBOVUxMOwotCXNjbWQtPnNjX21hZ2ljCQkJPSBTQ1NJX0NNTkRfTUFHSUM7CiAKIAlpbml0X3RpbWVyKCZzY21kLT5laF90aW1lb3V0KTsKIApAQCAtMTc2OSwxNCArMTc4Niw2IEBACiB9CiBFWFBPUlRfU1lNQk9MKHNjc2lfbm9ybWFsaXplX3NlbnNlKTsKIAotaW50IHNjc2lfcmVxdWVzdF9ub3JtYWxpemVfc2Vuc2Uoc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcSwKLQkJCQkgc3RydWN0IHNjc2lfc2Vuc2VfaGRyICpzc2hkcikKLXsKLQlyZXR1cm4gc2NzaV9ub3JtYWxpemVfc2Vuc2Uoc3JlcS0+c3Jfc2Vuc2VfYnVmZmVyLAotCQkJc2l6ZW9mKHNyZXEtPnNyX3NlbnNlX2J1ZmZlciksIHNzaGRyKTsKLX0KLUVYUE9SVF9TWU1CT0woc2NzaV9yZXF1ZXN0X25vcm1hbGl6ZV9zZW5zZSk7Ci0KIGludCBzY3NpX2NvbW1hbmRfbm9ybWFsaXplX3NlbnNlKHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKIAkJCQkgc3RydWN0IHNjc2lfc2Vuc2VfaGRyICpzc2hkcikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2lvY3RsLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9pb2N0bC5jCmluZGV4IGE4OWFmZjYuLmE4OWM0MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2lvY3RsLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfaW9jdGwuYwpAQCAtMTUsMTEgKzE1LDExIEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KIAogI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2lvY3RsLmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KICNpbmNsdWRlIDxzY3NpL3NnLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RiZy5oPgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9saWIuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCmluZGV4IGZhZWU0NzUuLjNkMDRhOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCkBAIC0xOSwxOCArMTksMTggQEAKICNpbmNsdWRlIDxsaW51eC9oYXJkaXJxLmg+CiAKICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9kYmcuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNlLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RyaXZlci5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+Ci0jaW5jbHVkZSA8c2NzaS9zY3NpX3JlcXVlc3QuaD4KIAogI2luY2x1ZGUgInNjc2lfcHJpdi5oIgogI2luY2x1ZGUgInNjc2lfbG9nZ2luZy5oIgogCiAKLSNkZWZpbmUgU0dfTUVNUE9PTF9OUgkJKHNpemVvZihzY3NpX3NnX3Bvb2xzKS9zaXplb2Yoc3RydWN0IHNjc2lfaG9zdF9zZ19wb29sKSkKKyNkZWZpbmUgU0dfTUVNUE9PTF9OUgkJQVJSQVlfU0laRShzY3NpX3NnX3Bvb2xzKQogI2RlZmluZSBTR19NRU1QT09MX1NJWkUJCTMyCiAKIHN0cnVjdCBzY3NpX2hvc3Rfc2dfcG9vbCB7CkBAIC04Myw3ICs4Myw3IEBACiAJc3RydWN0IHNjc2lfY21uZCAqY21kID0gcmVxLT5zcGVjaWFsOwogCiAJcmVxLT5mbGFncyAmPSB+UkVRX0RPTlRQUkVQOwotCXJlcS0+c3BlY2lhbCA9IChyZXEtPmZsYWdzICYgUkVRX1NQRUNJQUwpID8gY21kLT5zY19yZXF1ZXN0IDogTlVMTDsKKwlyZXEtPnNwZWNpYWwgPSBOVUxMOwogCiAJc2NzaV9wdXRfY29tbWFuZChjbWQpOwogfQpAQCAtMTYxLDcyICsxNjEsNiBAQAogCXJldHVybiAwOwogfQogCi0vKgotICogRnVuY3Rpb246ICAgIHNjc2lfZG9fcmVxCi0gKgotICogUHVycG9zZTogICAgIFF1ZXVlIGEgU0NTSSByZXF1ZXN0Ci0gKgotICogQXJndW1lbnRzOiAgIHNyZXEJICAtIGNvbW1hbmQgZGVzY3JpcHRvci4KLSAqICAgICAgICAgICAgICBjbW5kICAgICAgLSBhY3R1YWwgU0NTSSBjb21tYW5kIHRvIGJlIHBlcmZvcm1lZC4KLSAqICAgICAgICAgICAgICBidWZmZXIgICAgLSBkYXRhIGJ1ZmZlci4KLSAqICAgICAgICAgICAgICBidWZmbGVuICAgLSBzaXplIG9mIGRhdGEgYnVmZmVyLgotICogICAgICAgICAgICAgIGRvbmUgICAgICAtIGNvbXBsZXRpb24gZnVuY3Rpb24gdG8gYmUgcnVuLgotICogICAgICAgICAgICAgIHRpbWVvdXQgICAtIGhvdyBsb25nIHRvIGxldCBpdCBydW4gYmVmb3JlIHRpbWVvdXQuCi0gKiAgICAgICAgICAgICAgcmV0cmllcyAgIC0gbnVtYmVyIG9mIHJldHJpZXMgd2UgYWxsb3cuCi0gKgotICogTG9jayBzdGF0dXM6IE5vIGxvY2tzIGhlbGQgdXBvbiBlbnRyeS4KLSAqCi0gKiBSZXR1cm5zOiAgICAgTm90aGluZy4KLSAqCi0gKiBOb3RlczoJVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgZm9yIHF1ZXVlaW5nIHJlcXVlc3RzIGZvciB0aGluZ3MKLSAqCQlsaWtlIGlvY3RscyBhbmQgY2hhcmFjdGVyIGRldmljZSByZXF1ZXN0cyAtIHRoaXMgaXMgYmVjYXVzZQotICoJCXdlIGVzc2VudGlhbGx5IGp1c3QgaW5qZWN0IGEgcmVxdWVzdCBpbnRvIHRoZSBxdWV1ZSBmb3IgdGhlCi0gKgkJZGV2aWNlLgotICoKLSAqCQlJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzY3NpX2RldmljZV9xdWllc2NlIGZ1bmN0aW9uLCB3ZQotICoJCW5vdyBpbmplY3QgcmVxdWVzdHMgb24gdGhlICpoZWFkKiBvZiB0aGUgZGV2aWNlIHF1ZXVlCi0gKgkJcmF0aGVyIHRoYW4gdGhlIHRhaWwuCi0gKi8KLXZvaWQgc2NzaV9kb19yZXEoc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcSwgY29uc3Qgdm9pZCAqY21uZCwKLQkJIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgYnVmZmxlbiwKLQkJIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopLAotCQkgaW50IHRpbWVvdXQsIGludCByZXRyaWVzKQotewotCS8qCi0JICogSWYgdGhlIHVwcGVyIGxldmVsIGRyaXZlciBpcyByZXVzaW5nIHRoZXNlIHRoaW5ncywgdGhlbgotCSAqIHdlIHNob3VsZCByZWxlYXNlIHRoZSBsb3ctbGV2ZWwgYmxvY2sgbm93LiAgQW5vdGhlciBvbmUgd2lsbAotCSAqIGJlIGFsbG9jYXRlZCBsYXRlciB3aGVuIHRoaXMgcmVxdWVzdCBpcyBnZXR0aW5nIHF1ZXVlZC4KLQkgKi8KLQlfX3Njc2lfcmVsZWFzZV9yZXF1ZXN0KHNyZXEpOwotCi0JLyoKLQkgKiBPdXIgb3duIGZ1bmN0aW9uIHNjc2lfZG9uZSAod2hpY2ggbWFya3MgdGhlIGhvc3QgYXMgbm90IGJ1c3ksCi0JICogZGlzYWJsZXMgdGhlIHRpbWVvdXQgY291bnRlciwgZXRjKSB3aWxsIGJlIGNhbGxlZCBieSB1cyBvciBieSB0aGUKLQkgKiBzY3NpX2hvc3RzW2hvc3RdLnF1ZXVlY29tbWFuZCgpIGZ1bmN0aW9uIG5lZWRzIHRvIGFsc28gY2FsbAotCSAqIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9uIGZvciB0aGUgaGlnaCBsZXZlbCBkcml2ZXIuCi0JICovCi0JbWVtY3B5KHNyZXEtPnNyX2NtbmQsIGNtbmQsIHNpemVvZihzcmVxLT5zcl9jbW5kKSk7Ci0Jc3JlcS0+c3JfYnVmZmxlbiA9IGJ1ZmZsZW47Ci0Jc3JlcS0+c3JfYnVmZmVyID0gYnVmZmVyOwotCXNyZXEtPnNyX2FsbG93ZWQgPSByZXRyaWVzOwotCXNyZXEtPnNyX2RvbmUgPSBkb25lOwotCXNyZXEtPnNyX3RpbWVvdXRfcGVyX2NvbW1hbmQgPSB0aW1lb3V0OwotCi0JaWYgKHNyZXEtPnNyX2NtZF9sZW4gPT0gMCkKLQkJc3JlcS0+c3JfY21kX2xlbiA9IENPTU1BTkRfU0laRShzcmVxLT5zcl9jbW5kWzBdKTsKLQotCS8qCi0JICogaGVhZCBpbmplY3Rpb24gKnJlcXVpcmVkKiBoZXJlIG90aGVyd2lzZSBxdWllc2NlIHdvbid0IHdvcmsKLQkgKgotCSAqIEJlY2F1c2UgdXNlcnMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgYXB0IHRvIHJldXNlIHJlcXVlc3RzIHdpdGggbm8KLQkgKiBtb2RpZmljYXRpb24sIHdlIGhhdmUgdG8gc2FuaXRpc2UgdGhlIHJlcXVlc3QgZmxhZ3MgaGVyZQotCSAqLwotCXNyZXEtPnNyX3JlcXVlc3QtPmZsYWdzICY9IH5SRVFfRE9OVFBSRVA7Ci0JYmxrX2luc2VydF9yZXF1ZXN0KHNyZXEtPnNyX2RldmljZS0+cmVxdWVzdF9xdWV1ZSwgc3JlcS0+c3JfcmVxdWVzdCwKLQkJICAgICAgIAkgICAxLCBzcmVxKTsKLX0KLUVYUE9SVF9TWU1CT0woc2NzaV9kb19yZXEpOwotCiAvKioKICAqIHNjc2lfZXhlY3V0ZSAtIGluc2VydCByZXF1ZXN0IGFuZCB3YWl0IGZvciB0aGUgcmVzdWx0CiAgKiBAc2RldjoJc2NzaSBkZXZpY2UKQEAgLTU2Niw3ICs1MDAsNyBAQAogCXNwaW5fbG9ja19pcnFzYXZlKHNob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAlzaG9zdC0+aG9zdF9idXN5LS07CiAJaWYgKHVubGlrZWx5KHNjc2lfaG9zdF9pbl9yZWNvdmVyeShzaG9zdCkgJiYKLQkJICAgICBzaG9zdC0+aG9zdF9mYWlsZWQpKQorCQkgICAgIChzaG9zdC0+aG9zdF9mYWlsZWQgfHwgc2hvc3QtPmhvc3RfZWhfc2NoZWR1bGVkKSkpCiAJCXNjc2lfZWhfd2FrZXVwKHNob3N0KTsKIAlzcGluX3VubG9jayhzaG9zdC0+aG9zdF9sb2NrKTsKIAlzcGluX2xvY2soc2Rldi0+cmVxdWVzdF9xdWV1ZS0+cXVldWVfbG9jayk7CkBAIC0xMzAwLDE1ICsxMjM0LDcgQEAKIAkgKiBhdCByZXF1ZXN0LT5jbWQsIGFzIHRoaXMgdGVsbHMgdXMgdGhlIHJlYWwgc3RvcnkuCiAJICovCiAJaWYgKHJlcS0+ZmxhZ3MgJiBSRVFfU1BFQ0lBTCAmJiByZXEtPnNwZWNpYWwpIHsKLQkJc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcSA9IHJlcS0+c3BlY2lhbDsKLQotCQlpZiAoc3JlcS0+c3JfbWFnaWMgPT0gU0NTSV9SRVFfTUFHSUMpIHsKLQkJCWNtZCA9IHNjc2lfZ2V0X2NvbW1hbmQoc3JlcS0+c3JfZGV2aWNlLCBHRlBfQVRPTUlDKTsKLQkJCWlmICh1bmxpa2VseSghY21kKSkKLQkJCQlnb3RvIGRlZmVyOwotCQkJc2NzaV9pbml0X2NtZF9mcm9tX3JlcShjbWQsIHNyZXEpOwotCQl9IGVsc2UKLQkJCWNtZCA9IHJlcS0+c3BlY2lhbDsKKwkJY21kID0gcmVxLT5zcGVjaWFsOwogCX0gZWxzZSBpZiAocmVxLT5mbGFncyAmIChSRVFfQ01EIHwgUkVRX0JMT0NLX1BDKSkgewogCiAJCWlmKHVubGlrZWx5KHNwZWNpYWxzX29ubHkpICYmICEocmVxLT5mbGFncyAmIFJFUV9TUEVDSUFMKSkgewpAQCAtMjM2MywzICsyMjg5LDYxIEBACiAJCWRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIHRhcmdldF91bmJsb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNjc2lfdGFyZ2V0X3VuYmxvY2spOworCisvKioKKyAqIHNjc2lfa21hcF9hdG9taWNfc2cgLSBmaW5kIGFuZCBhdG9taWNhbGx5IG1hcCBhbiBzZy1lbGVtbnQKKyAqIEBzZzoJCXNjYXR0ZXItZ2F0aGVyIGxpc3QKKyAqIEBzZ19jb3VudDoJbnVtYmVyIG9mIHNlZ21lbnRzIGluIHNnCisgKiBAb2Zmc2V0OglvZmZzZXQgaW4gYnl0ZXMgaW50byBzZywgb24gcmV0dXJuIG9mZnNldCBpbnRvIHRoZSBtYXBwZWQgYXJlYQorICogQGxlbjoJYnl0ZXMgdG8gbWFwLCBvbiByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIG1hcHBlZAorICoKKyAqIFJldHVybnMgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBzdGFydCBvZiB0aGUgbWFwcGVkIHBhZ2UKKyAqLwordm9pZCAqc2NzaV9rbWFwX2F0b21pY19zZyhzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgc2dfY291bnQsCisJCQkgIHNpemVfdCAqb2Zmc2V0LCBzaXplX3QgKmxlbikKK3sKKwlpbnQgaTsKKwlzaXplX3Qgc2dfbGVuID0gMCwgbGVuX2NvbXBsZXRlID0gMDsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKworCWZvciAoaSA9IDA7IGkgPCBzZ19jb3VudDsgaSsrKSB7CisJCWxlbl9jb21wbGV0ZSA9IHNnX2xlbjsgLyogQ29tcGxldGUgc2ctZW50cmllcyAqLworCQlzZ19sZW4gKz0gc2dbaV0ubGVuZ3RoOworCQlpZiAoc2dfbGVuID4gKm9mZnNldCkKKwkJCWJyZWFrOworCX0KKworCWlmICh1bmxpa2VseShpID09IHNnX2NvdW50KSkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBCeXRlcyBpbiBzZzogJXp1LCByZXF1ZXN0ZWQgb2Zmc2V0ICV6dSwgIgorCQkJImVsZW1lbnRzICVkXG4iLAorCQkgICAgICAgX19GVU5DVElPTl9fLCBzZ19sZW4sICpvZmZzZXQsIHNnX2NvdW50KTsKKwkJV0FSTl9PTigxKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogT2Zmc2V0IHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZyBvZiBmaXJzdCBwYWdlIGluIHRoaXMgc2ctZW50cnkgKi8KKwkqb2Zmc2V0ID0gKm9mZnNldCAtIGxlbl9jb21wbGV0ZSArIHNnW2ldLm9mZnNldDsKKworCS8qIEFzc3VtcHRpb246IGNvbnRpZ3VvdXMgcGFnZXMgY2FuIGJlIGFjY2Vzc2VkIGFzICJwYWdlICsgaSIgKi8KKwlwYWdlID0gbnRoX3BhZ2Uoc2dbaV0ucGFnZSwgKCpvZmZzZXQgPj4gUEFHRV9TSElGVCkpOworCSpvZmZzZXQgJj0gflBBR0VfTUFTSzsKKworCS8qIEJ5dGVzIGluIHRoaXMgc2ctZW50cnkgZnJvbSAqb2Zmc2V0IHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UgKi8KKwlzZ19sZW4gPSBQQUdFX1NJWkUgLSAqb2Zmc2V0OworCWlmICgqbGVuID4gc2dfbGVuKQorCQkqbGVuID0gc2dfbGVuOworCisJcmV0dXJuIGttYXBfYXRvbWljKHBhZ2UsIEtNX0JJT19TUkNfSVJRKTsKK30KK0VYUE9SVF9TWU1CT0woc2NzaV9rbWFwX2F0b21pY19zZyk7CisKKy8qKgorICogc2NzaV9rdW5tYXBfYXRvbWljX3NnIC0gYXRvbWljYWxseSB1bm1hcCBhIHZpcnR1YWwgYWRkcmVzcywgcHJldmlvdXNseQorICoJCQkgICBtYXBwZWQgd2l0aCBzY3NpX2ttYXBfYXRvbWljX3NnCisgKiBAdmlydDoJdmlydHVhbCBhZGRyZXNzIHRvIGJlIHVubWFwcGVkCisgKi8KK3ZvaWQgc2NzaV9rdW5tYXBfYXRvbWljX3NnKHZvaWQgKnZpcnQpCit7CisJa3VubWFwX2F0b21pYyh2aXJ0LCBLTV9CSU9fU1JDX0lSUSk7Cit9CitFWFBPUlRfU1lNQk9MKHNjc2lfa3VubWFwX2F0b21pY19zZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9sb2dnaW5nLmggYi9kcml2ZXJzL3Njc2kvc2NzaV9sb2dnaW5nLmgKaW5kZXggZTE3MjJiYS4uYTNlMmFmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfbG9nZ2luZy5oCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2xvZ2dpbmcuaApAQCAtNDUsMTAgKzQ1LDEyIEBACiAgICAgICAgICgoc2NzaV9sb2dnaW5nX2xldmVsID4+IChTSElGVCkpICYgKCgxIDw8IChCSVRTKSkgLSAxKSkKIAogI2RlZmluZSBTQ1NJX0NIRUNLX0xPR0dJTkcoU0hJRlQsIEJJVFMsIExFVkVMLCBDTUQpCQlcCi17CQkJCQkJCQlcCitkbyB7CQkJCQkJCQlcCiAgICAgICAgIGlmICh1bmxpa2VseSgoU0NTSV9MT0dfTEVWRUwoU0hJRlQsIEJJVFMpKSA+IChMRVZFTCkpKQlcCi0JCShDTUQpOwkJCQkJCVwKLX0KKwkJZG8gewkJCQkJCVwKKwkJCUNNRDsJCQkJCVwKKwkJfSB3aGlsZSAoMCk7CQkJCQlcCit9IHdoaWxlICgwKQogI2Vsc2UKICNkZWZpbmUgU0NTSV9DSEVDS19MT0dHSU5HKFNISUZULCBCSVRTLCBMRVZFTCwgQ01EKQogI2VuZGlmIC8qIENPTkZJR19TQ1NJX0xPR0dJTkcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3ByaXYuaCBiL2RyaXZlcnMvc2NzaS9zY3NpX3ByaXYuaAppbmRleCAyN2M0ODI3Li5hMTcyN2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9wcml2LmgKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfcHJpdi5oCkBAIC04LDE3ICs4LDEwIEBACiBzdHJ1Y3Qgc2NzaV9jbW5kOwogc3RydWN0IHNjc2lfZGV2aWNlOwogc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZTsKLXN0cnVjdCBzY3NpX3JlcXVlc3Q7CiBzdHJ1Y3QgU2NzaV9Ib3N0OwogCiAKIC8qCi0gKiBNYWdpYyB2YWx1ZXMgZm9yIGNlcnRhaW4gc2NzaSBzdHJ1Y3RzLiBTaG91bGRuJ3QgZXZlciBiZSB1c2VkLgotICovCi0jZGVmaW5lIFNDU0lfQ01ORF9NQUdJQwkJMHhFMjVDMjNBNQotI2RlZmluZSBTQ1NJX1JFUV9NQUdJQwkJMHg3NUY2RDM1NAotCi0vKgogICogU2NzaSBFcnJvciBIYW5kbGVyIEZsYWdzCiAgKi8KICNkZWZpbmUgU0NTSV9FSF9DQU5DRUxfQ01ECTB4MDAwMQkvKiBDYW5jZWwgdGhpcyBjbWQgKi8KQEAgLTM0LDkgKzI3LDYgQEAKIGV4dGVybiBpbnQgc2NzaV9kaXNwYXRjaF9jbWQoc3RydWN0IHNjc2lfY21uZCAqY21kKTsKIGV4dGVybiBpbnQgc2NzaV9zZXR1cF9jb21tYW5kX2ZyZWVsaXN0KHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KTsKIGV4dGVybiB2b2lkIHNjc2lfZGVzdHJveV9jb21tYW5kX2ZyZWVsaXN0KHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KTsKLWV4dGVybiB2b2lkIHNjc2lfaW5pdF9jbWRfZnJvbV9yZXEoc3RydWN0IHNjc2lfY21uZCAqY21kLAotCQlzdHJ1Y3Qgc2NzaV9yZXF1ZXN0ICpzcmVxKTsKLWV4dGVybiB2b2lkIF9fc2NzaV9yZWxlYXNlX3JlcXVlc3Qoc3RydWN0IHNjc2lfcmVxdWVzdCAqc3JlcSk7CiBleHRlcm4gdm9pZCBfX3Njc2lfZG9uZShzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpOwogZXh0ZXJuIGludCBzY3NpX3JldHJ5X2NvbW1hbmQoc3RydWN0IHNjc2lfY21uZCAqY21kKTsKICNpZmRlZiBDT05GSUdfU0NTSV9MT0dHSU5HCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9wcm9jLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9wcm9jLmMKaW5kZXggMDdiZTYyYi4uNTUyMDBlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfcHJvYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3Byb2MuYwpAQCAtMjY2LDggKzI2Niw2IEBACiAJCWx1biA9IHNpbXBsZV9zdHJ0b3VsKHAgKyAxLCAmcCwgMCk7CiAKIAkJZXJyID0gc2NzaV9hZGRfc2luZ2xlX2RldmljZShob3N0LCBjaGFubmVsLCBpZCwgbHVuKTsKLQkJaWYgKGVyciA+PSAwKQotCQkJZXJyID0gbGVuZ3RoOwogCiAJLyoKIAkgKiBVc2FnZTogZWNobyAic2NzaSByZW1vdmUtc2luZ2xlLWRldmljZSAwIDEgMiAzIiA+L3Byb2Mvc2NzaS9zY3NpCkBAIC0yODQsNiArMjgyLDEzIEBACiAJCWVyciA9IHNjc2lfcmVtb3ZlX3NpbmdsZV9kZXZpY2UoaG9zdCwgY2hhbm5lbCwgaWQsIGx1bik7CiAJfQogCisJLyoKKwkgKiBjb252ZXJ0IHN1Y2Nlc3MgcmV0dXJucyBzbyB0aGF0IHdlIHJldHVybiB0aGUgCisJICogbnVtYmVyIG9mIGJ5dGVzIGNvbnN1bWVkLgorCSAqLworCWlmICghZXJyKQorCQllcnIgPSBsZW5ndGg7CisKICBvdXQ6CiAJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWJ1ZmZlcik7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYwppbmRleCAxYTU0NzRiLi4wZjdlNmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CiAKICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfZHJpdmVyLmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmluZm8uaD4KICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgotI2luY2x1ZGUgPHNjc2kvc2NzaV9yZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaV9laC5oPgogCkBAIC04MTYsNiArODE2LDMyIEBACiAJcHV0X2RldmljZSgmc2Rldi0+c2Rldl9nZW5kZXYpOwogfQogCisjaWZkZWYgQ09ORklHX1NDU0lfTE9HR0lORworLyoqIAorICogc2NzaV9pbnFfc3RyIC0gcHJpbnQgSU5RVUlSWSBkYXRhIGZyb20gbWluIHRvIG1heCBpbmRleCwKKyAqIHN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAqIEBidWY6ICAgT3V0cHV0IGJ1ZmZlciB3aXRoIGF0IGxlYXN0IGVuZC1maXJzdCsxIGJ5dGVzIG9mIHNwYWNlCisgKiBAaW5xOiAgIElucXVpcnkgYnVmZmVyIChpbnB1dCkKKyAqIEBmaXJzdDogT2Zmc2V0IG9mIHN0cmluZyBpbnRvIGlucQorICogQGVuZDogICBJbmRleCBhZnRlciBsYXN0IGNoYXJhY3RlciBpbiBpbnEKKyAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgKnNjc2lfaW5xX3N0cih1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGNoYXIgKmlucSwKKwkJCQkgICB1bnNpZ25lZCBmaXJzdCwgdW5zaWduZWQgZW5kKQoreworCXVuc2lnbmVkIHRlcm0gPSAwLCBpZHg7CisKKwlmb3IgKGlkeCA9IDA7IGlkeCArIGZpcnN0IDwgZW5kICYmIGlkeCArIGZpcnN0IDwgaW5xWzRdICsgNTsgaWR4KyspIHsKKwkJaWYgKGlucVtpZHgrZmlyc3RdID4gJyAnKSB7CisJCQlidWZbaWR4XSA9IGlucVtpZHgrZmlyc3RdOworCQkJdGVybSA9IGlkeCsxOworCQl9IGVsc2UgeworCQkJYnVmW2lkeF0gPSAnICc7CisJCX0KKwl9CisJYnVmW3Rlcm1dID0gMDsKKwlyZXR1cm4gYnVmOworfQorI2VuZGlmCiAKIC8qKgogICogc2NzaV9wcm9iZV9hbmRfYWRkX2x1biAtIHByb2JlIGEgTFVOLCBpZiBhIExVTiBpcyBmb3VuZCBhZGQgaXQKQEAgLTg4MCwxMCArOTA2LDEyIEBACiAJaWYgKHNjc2lfcHJvYmVfbHVuKHNkZXYsIHJlc3VsdCwgcmVzdWx0X2xlbiwgJmJmbGFncykpCiAJCWdvdG8gb3V0X2ZyZWVfcmVzdWx0OwogCisJaWYgKGJmbGFnc3ApCisJCSpiZmxhZ3NwID0gYmZsYWdzOwogCS8qCiAJICogcmVzdWx0IGNvbnRhaW5zIHZhbGlkIFNDU0kgSU5RVUlSWSBkYXRhLgogCSAqLwotCWlmICgocmVzdWx0WzBdID4+IDUpID09IDMpIHsKKwlpZiAoKChyZXN1bHRbMF0gPj4gNSkgPT0gMykgJiYgIShiZmxhZ3MgJiBCTElTVF9BVFRBQ0hfUFEzKSkgewogCQkvKgogCQkgKiBGb3IgYSBQZXJpcGhlcmFsIHF1YWxpZmllciAzICgwMTFiKSwgdGhlIFNDU0kKIAkJICogc3BlYyBzYXlzOiBUaGUgZGV2aWNlIHNlcnZlciBpcyBub3QgY2FwYWJsZSBvZgpAQCAtODk0LDkgKzkyMiwyMiBAQAogCQkgKiBsb2dpY2FsIGRpc2sgY29uZmlndXJlZCBhdCBzZGV2LT5sdW4sIGJ1dCB0aGVyZQogCQkgKiBpcyBhIHRhcmdldCBpZCByZXNwb25kaW5nLgogCQkgKi8KLQkJU0NTSV9MT0dfU0NBTl9CVVMoMywgcHJpbnRrKEtFUk5fSU5GTwotCQkJCQkic2NzaSBzY2FuOiBwZXJpcGhlcmFsIHF1YWxpZmllciBvZiAzLCIKLQkJCQkJIiBubyBkZXZpY2UgYWRkZWRcbiIpKTsKKwkJU0NTSV9MT0dfU0NBTl9CVVMoMiwgc2Rldl9wcmludGsoS0VSTl9JTkZPLCBzZGV2LCAic2NzaSBzY2FuOiIKKwkJCQkgICAiIHBlcmlwaGVyYWwgcXVhbGlmaWVyIG9mIDMsIGRldmljZSBub3QiCisJCQkJICAgIiBhZGRlZFxuIikpCisJCWlmIChsdW4gPT0gMCkgeworCQkJU0NTSV9MT0dfU0NBTl9CVVMoMSwgeworCQkJCXVuc2lnbmVkIGNoYXIgdmVuZFs5XTsKKwkJCQl1bnNpZ25lZCBjaGFyIG1vZFsxN107CisKKwkJCQlzZGV2X3ByaW50ayhLRVJOX0lORk8sIHNkZXYsCisJCQkJCSJzY3NpIHNjYW46IGNvbnNpZGVyIHBhc3Npbmcgc2NzaV9tb2QuIgorCQkJCQkiZGV2X2ZsYWdzPSVzOiVzOjB4MjQwIG9yIDB4ODAwMjQwXG4iLAorCQkJCQlzY3NpX2lucV9zdHIodmVuZCwgcmVzdWx0LCA4LCAxNiksCisJCQkJCXNjc2lfaW5xX3N0cihtb2QsIHJlc3VsdCwgMTYsIDMyKSk7CisJCQl9KTsKKwkJfQorCQkKIAkJcmVzID0gU0NTSV9TQ0FOX1RBUkdFVF9QUkVTRU5UOwogCQlnb3RvIG91dF9mcmVlX3Jlc3VsdDsKIAl9CkBAIC05MjAsOCArOTYxLDYgQEAKIAkJCXNkZXYtPmxvY2thYmxlID0gMDsKIAkJCXNjc2lfdW5sb2NrX2Zsb3B0aWNhbChzZGV2LCByZXN1bHQpOwogCQl9Ci0JCWlmIChiZmxhZ3NwKQotCQkJKmJmbGFnc3AgPSBiZmxhZ3M7CiAJfQogCiAgb3V0X2ZyZWVfcmVzdWx0OgpAQCAtOTQ2LDcgKzk4NSw2IEBACiAgKiBzY3NpX3NlcXVlbnRpYWxfbHVuX3NjYW4gLSBzZXF1ZW50aWFsbHkgc2NhbiBhIFNDU0kgdGFyZ2V0CiAgKiBAc3RhcmdldDoJcG9pbnRlciB0byB0YXJnZXQgc3RydWN0dXJlIHRvIHNjYW4KICAqIEBiZmxhZ3M6CWJsYWNrL3doaXRlIGxpc3QgZmxhZyBmb3IgTFVOIDAKLSAqIEBsdW4wX3JlczoJcmVzdWx0IG9mIHNjYW5uaW5nIExVTiAwCiAgKgogICogRGVzY3JpcHRpb246CiAgKiAgICAgR2VuZXJhbGx5LCBzY2FuIGZyb20gTFVOIDEgKExVTiAwIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBoYXZlIGJlZW4KQEAgLTk1Niw4ICs5OTQsNyBAQAogICogICAgIE1vZGlmaWVzIHNkZXZzY2FuLT5sdW4uCiAgKiovCiBzdGF0aWMgdm9pZCBzY3NpX3NlcXVlbnRpYWxfbHVuX3NjYW4oc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0LAotCQkJCSAgICAgaW50IGJmbGFncywgaW50IGx1bjBfcmVzLCBpbnQgc2NzaV9sZXZlbCwKLQkJCQkgICAgIGludCByZXNjYW4pCisJCQkJICAgICBpbnQgYmZsYWdzLCBpbnQgc2NzaV9sZXZlbCwgaW50IHJlc2NhbikKIHsKIAl1bnNpZ25lZCBpbnQgc3BhcnNlX2x1biwgbHVuLCBtYXhfZGV2X2x1bjsKIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGRldl90b19zaG9zdChzdGFyZ2V0LT5kZXYucGFyZW50KTsKQEAgLTk3OCwxMyArMTAxNSw2IEBACiAJCXNwYXJzZV9sdW4gPSAwOwogCiAJLyoKLQkgKiBJZiBub3Qgc3BhcnNlIGx1biBhbmQgbm8gZGV2aWNlIGF0dGFjaGVkIGF0IExVTiAwIGRvIG5vdCBzY2FuCi0JICogYW55IGZ1cnRoZXIuCi0JICovCi0JaWYgKCFzcGFyc2VfbHVuICYmIChsdW4wX3JlcyAhPSBTQ1NJX1NDQU5fTFVOX1BSRVNFTlQpKQotCQlyZXR1cm47Ci0KLQkvKgogCSAqIElmIGxlc3MgdGhhbiBTQ1NJXzFfQ1NTLCBhbmQgbm8gc3BlY2lhbCBsdW4gc2NhbmluZywgc3RvcAogCSAqIHNjYW5uaW5nOyB0aGlzIG1hdGNoZXMgMi40IGJlaGF2aW91ciwgYnV0IGNvdWxkIGp1c3QgYmUgYSBidWcKIAkgKiAodG8gY29udGludWUgc2Nhbm5pbmcgYSBTQ1NJXzFfQ1NTIGRldmljZSkuCkBAIC0xMzk1LDcgKzE0MjUsNyBAQAogCQkJICogZG8gYSBzZXF1ZW50aWFsIHNjYW4uCiAJCQkgKi8KIAkJCXNjc2lfc2VxdWVudGlhbF9sdW5fc2NhbihzdGFyZ2V0LCBiZmxhZ3MsCi0JCQkJICAgICAgIAlyZXMsIHN0YXJnZXQtPnNjc2lfbGV2ZWwsIHJlc2Nhbik7CisJCQkJCQkgc3RhcmdldC0+c2NzaV9sZXZlbCwgcmVzY2FuKTsKIAl9CiAKICBvdXRfcmVhcDoKQEAgLTE0NzMsNyArMTUwMyw3IEBACiAJCV9fRlVOQ1RJT05fXywgY2hhbm5lbCwgaWQsIGx1bikpOwogCiAJaWYgKCgoY2hhbm5lbCAhPSBTQ0FOX1dJTERfQ0FSRCkgJiYgKGNoYW5uZWwgPiBzaG9zdC0+bWF4X2NoYW5uZWwpKSB8fAotCSAgICAoKGlkICE9IFNDQU5fV0lMRF9DQVJEKSAmJiAoaWQgPiBzaG9zdC0+bWF4X2lkKSkgfHwKKwkgICAgKChpZCAhPSBTQ0FOX1dJTERfQ0FSRCkgJiYgKGlkID49IHNob3N0LT5tYXhfaWQpKSB8fAogCSAgICAoKGx1biAhPSBTQ0FOX1dJTERfQ0FSRCkgJiYgKGx1biA+IHNob3N0LT5tYXhfbHVuKSkpCiAJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYwppbmRleCBhNmZkZTUyLi41ZWM3YTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3N5c2ZzLmMKQEAgLTM5LDcgKzM5LDcgQEAKIAlpbnQgaTsKIAljaGFyICpuYW1lID0gTlVMTDsKIAotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2Rldl9zdGF0ZXMpL3NpemVvZihzZGV2X3N0YXRlc1swXSk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNkZXZfc3RhdGVzKTsgaSsrKSB7CiAJCWlmIChzZGV2X3N0YXRlc1tpXS52YWx1ZSA9PSBzdGF0ZSkgewogCQkJbmFtZSA9IHNkZXZfc3RhdGVzW2ldLm5hbWU7CiAJCQlicmVhazsKQEAgLTY1LDcgKzY1LDcgQEAKIAlpbnQgaTsKIAljaGFyICpuYW1lID0gTlVMTDsKIAotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2hvc3Rfc3RhdGVzKS9zaXplb2Yoc2hvc3Rfc3RhdGVzWzBdKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2hvc3Rfc3RhdGVzKTsgaSsrKSB7CiAJCWlmIChzaG9zdF9zdGF0ZXNbaV0udmFsdWUgPT0gc3RhdGUpIHsKIAkJCW5hbWUgPSBzaG9zdF9zdGF0ZXNbaV0ubmFtZTsKIAkJCWJyZWFrOwpAQCAtMTYwLDcgKzE2MCw3IEBACiAJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBjbGFzc190b19zaG9zdChjbGFzc19kZXYpOwogCWVudW0gc2NzaV9ob3N0X3N0YXRlIHN0YXRlID0gMDsKIAotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2hvc3Rfc3RhdGVzKS9zaXplb2Yoc2hvc3Rfc3RhdGVzWzBdKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2hvc3Rfc3RhdGVzKTsgaSsrKSB7CiAJCWNvbnN0IGludCBsZW4gPSBzdHJsZW4oc2hvc3Rfc3RhdGVzW2ldLm5hbWUpOwogCQlpZiAoc3RybmNtcChzaG9zdF9zdGF0ZXNbaV0ubmFtZSwgYnVmLCBsZW4pID09IDAgJiYKIAkJICAgYnVmW2xlbl0gPT0gJ1xuJykgewpAQCAtNDY2LDcgKzQ2Niw3IEBACiAJc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2ID0gdG9fc2NzaV9kZXZpY2UoZGV2KTsKIAllbnVtIHNjc2lfZGV2aWNlX3N0YXRlIHN0YXRlID0gMDsKIAotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2Rldl9zdGF0ZXMpL3NpemVvZihzZGV2X3N0YXRlc1swXSk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNkZXZfc3RhdGVzKTsgaSsrKSB7CiAJCWNvbnN0IGludCBsZW4gPSBzdHJsZW4oc2Rldl9zdGF0ZXNbaV0ubmFtZSk7CiAJCWlmIChzdHJuY21wKHNkZXZfc3RhdGVzW2ldLm5hbWUsIGJ1ZiwgbGVuKSA9PSAwICYmCiAJCSAgIGJ1ZltsZW5dID09ICdcbicpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9hcGkuaCBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzRmMGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2FwaS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBfU0NTSV9UUkFOU1BPUlRfQVBJX0gKKyNkZWZpbmUgX1NDU0lfVFJBTlNQT1JUX0FQSV9ICisKK3ZvaWQgc2NzaV9zY2hlZHVsZV9laChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCk7CisKKyNlbmRpZiAvKiBfU0NTSV9UUkFOU1BPUlRfQVBJX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKaW5kZXggOTVjNTQ3OC4uZjJkYjdhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKQEAgLTUwLDcgKzUwLDcgQEAKIAlpbnQgaTsJCQkJCQkJCVwKIAljaGFyICpuYW1lID0gTlVMTDsJCQkJCQlcCiAJCQkJCQkJCQlcCi0JZm9yIChpID0gMDsgaSA8IHNpemVvZih0YWJsZSkvc2l6ZW9mKHRhYmxlWzBdKTsgaSsrKSB7CQlcCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGFibGUpOyBpKyspIHsJCQlcCiAJCWlmICh0YWJsZVtpXS52YWx1ZSA9PSB0YWJsZV9rZXkpIHsJCQlcCiAJCQluYW1lID0gdGFibGVbaV0ubmFtZTsJCQkJXAogCQkJYnJlYWs7CQkJCQkJXApAQCAtNjUsNyArNjUsNyBAQAogewkJCQkJCQkJCVwKIAlpbnQgaTsJCQkJCQkJCVwKIAkJCQkJCQkJCVwKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRhYmxlKS9zaXplb2YodGFibGVbMF0pOyBpKyspIHsJCVwKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0YWJsZSk7IGkrKykgewkJCVwKIAkJaWYgKHN0cm5jbXAodGFibGVfa2V5LCB0YWJsZVtpXS5uYW1lLAkJCVwKIAkJCQl0YWJsZVtpXS5tYXRjaGxlbikgPT0gMCkgewkJXAogCQkJKnZhbHVlID0gdGFibGVbaV0udmFsdWU7CQkJXApAQCAtMTQwLDcgKzE0MCw3IEBACiAJc3NpemVfdCBsZW4gPSAwOwkJCQkJXAogCWludCBpOwkJCQkJCQlcCiAJCQkJCQkJCVwKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRhYmxlKS9zaXplb2YodGFibGVbMF0pOyBpKyspIHsJXAorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRhYmxlKTsgaSsrKSB7CQlcCiAJCWlmICh0YWJsZVtpXS52YWx1ZSAmIHRhYmxlX2tleSkgewkJXAogCQkJbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAiJXMlcyIsCVwKIAkJCQlwcmVmaXgsIHRhYmxlW2ldLm5hbWUpOwkJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2lzY3NpLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYwppbmRleCAyNzMwZDUwLi41NTY5ZmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYwpAQCAtMzEsMzEgKzMxLDI2IEBACiAjaW5jbHVkZSA8c2NzaS9zY3NpX3RyYW5zcG9ydF9pc2NzaS5oPgogI2luY2x1ZGUgPHNjc2kvaXNjc2lfaWYuaD4KIAotI2RlZmluZSBJU0NTSV9TRVNTSU9OX0FUVFJTIDgKLSNkZWZpbmUgSVNDU0lfQ09OTl9BVFRSUyA2CisjZGVmaW5lIElTQ1NJX1NFU1NJT05fQVRUUlMgMTEKKyNkZWZpbmUgSVNDU0lfQ09OTl9BVFRSUyAxMQorI2RlZmluZSBJU0NTSV9IT1NUX0FUVFJTIDAKIAogc3RydWN0IGlzY3NpX2ludGVybmFsIHsKKwlpbnQgZGFlbW9uX3BpZDsKIAlzdHJ1Y3Qgc2NzaV90cmFuc3BvcnRfdGVtcGxhdGUgdDsKIAlzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICppc2NzaV90cmFuc3BvcnQ7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwotCS8qCi0JICogYmFzZWQgb24gdHJhbnNwb3J0IGNhcGFiaWxpdGllcywgYXQgcmVnaXN0ZXIgdGltZSB3ZSBzZXQgdGhlc2UKLQkgKiBiaXRzIHRvIHRlbGwgdGhlIHRyYW5zcG9ydCBjbGFzcyBpdCB3YW50cyBhdHRyaWJ1dGVzIGRpc3BsYXllZAotCSAqIGluIHN5c2ZzIG9yIHRoYXQgaXQgY2FuIHN1cHBvcnQgZGlmZmVyZW50IGlTQ1NJIERhdGEtUGF0aAotCSAqIGNhcGFiaWxpdGllcwotCSAqLwotCXVpbnQzMl90IHBhcmFtX21hc2s7Ci0KIAlzdHJ1Y3QgY2xhc3NfZGV2aWNlIGNkZXY7Ci0JLyoKLQkgKiBXZSBkbyBub3QgaGF2ZSBhbnkgcHJpdmF0ZSBvciBvdGhlciBhdHRycy4KLQkgKi8KKworCXN0cnVjdCBjbGFzc19kZXZpY2VfYXR0cmlidXRlICpob3N0X2F0dHJzW0lTQ1NJX0hPU1RfQVRUUlMgKyAxXTsKIAlzdHJ1Y3QgdHJhbnNwb3J0X2NvbnRhaW5lciBjb25uX2NvbnQ7CiAJc3RydWN0IGNsYXNzX2RldmljZV9hdHRyaWJ1dGUgKmNvbm5fYXR0cnNbSVNDU0lfQ09OTl9BVFRSUyArIDFdOwogCXN0cnVjdCB0cmFuc3BvcnRfY29udGFpbmVyIHNlc3Npb25fY29udDsKIAlzdHJ1Y3QgY2xhc3NfZGV2aWNlX2F0dHJpYnV0ZSAqc2Vzc2lvbl9hdHRyc1tJU0NTSV9TRVNTSU9OX0FUVFJTICsgMV07CiB9OwogCitzdGF0aWMgaW50IGlzY3NpX3Nlc3Npb25fbnI7CS8qIHN5c2ZzIHNlc3Npb24gaWQgZm9yIG5leHQgbmV3IHNlc3Npb24gKi8KKwogLyoKICAqIGxpc3Qgb2YgcmVnaXN0ZXJlZCB0cmFuc3BvcnRzIGFuZCBsb2NrIHRoYXQgbXVzdAogICogYmUgaGVsZCB3aGlsZSBhY2Nlc3NpbmcgbGlzdC4gVGhlIGlzY3NpX3RyYW5zcG9ydF9sb2NrIG11c3QKQEAgLTEyMCw2ICsxMTUsMjQgQEAKIAkuYXR0cnMgPSBpc2NzaV90cmFuc3BvcnRfYXR0cnMsCiB9OwogCitzdGF0aWMgaW50IGlzY3NpX3NldHVwX2hvc3Qoc3RydWN0IHRyYW5zcG9ydF9jb250YWluZXIgKnRjLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgc3RydWN0IGNsYXNzX2RldmljZSAqY2RldikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGRldl90b19zaG9zdChkZXYpOworCXN0cnVjdCBpc2NzaV9ob3N0ICppaG9zdCA9IHNob3N0LT5zaG9zdF9kYXRhOworCisJbWVtc2V0KGlob3N0LCAwLCBzaXplb2YoKmlob3N0KSk7CisJSU5JVF9MSVNUX0hFQUQoJmlob3N0LT5zZXNzaW9ucyk7CisJbXV0ZXhfaW5pdCgmaWhvc3QtPm11dGV4KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIERFQ0xBUkVfVFJBTlNQT1JUX0NMQVNTKGlzY3NpX2hvc3RfY2xhc3MsCisJCQkgICAgICAgImlzY3NpX2hvc3QiLAorCQkJICAgICAgIGlzY3NpX3NldHVwX2hvc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBOVUxMKTsKKwogc3RhdGljIERFQ0xBUkVfVFJBTlNQT1JUX0NMQVNTKGlzY3NpX3Nlc3Npb25fY2xhc3MsCiAJCQkgICAgICAgImlzY3NpX3Nlc3Npb24iLAogCQkJICAgICAgIE5VTEwsCkBAIC0xMzMsNyArMTQ2LDYgQEAKIAkJCSAgICAgICBOVUxMKTsKIAogc3RhdGljIHN0cnVjdCBzb2NrICpubHM7Ci1zdGF0aWMgaW50IGRhZW1vbl9waWQ7CiBzdGF0aWMgREVGSU5FX01VVEVYKHJ4X3F1ZXVlX211dGV4KTsKIAogc3RydWN0IG1lbXBvb2xfem9uZSB7CkBAIC0xNjUsMTQgKzE3NywyMyBAQAogc3RhdGljIExJU1RfSEVBRChjb25ubGlzdCk7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNvbm5sb2NrKTsKIAotc3RhdGljIHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqaXNjc2lfc2Vzc2lvbl9sb29rdXAodWludDY0X3QgaGFuZGxlKQorc3RhdGljIHVpbnQzMl90IGlzY3NpX2Nvbm5fZ2V0X3NpZChzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4pCit7CisJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzID0gaXNjc2lfZGV2X3RvX3Nlc3Npb24oY29ubi0+ZGV2LnBhcmVudCk7CisJcmV0dXJuIHNlc3MtPnNpZDsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIG1hdGNoaW5nIHNlc3Npb24gdG8gYSBnaXZlbiBzaWQKKyAqLworc3RhdGljIHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqaXNjc2lfc2Vzc2lvbl9sb29rdXAodWludDMyX3Qgc2lkKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNlc3Nsb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzZXNzLCAmc2Vzc2xpc3QsIHNlc3NfbGlzdCkgewotCQlpZiAoc2VzcyA9PSBpc2NzaV9wdHIoaGFuZGxlKSkgeworCQlpZiAoc2Vzcy0+c2lkID09IHNpZCkgewogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Vzc2xvY2ssIGZsYWdzKTsKIAkJCXJldHVybiBzZXNzOwogCQl9CkBAIC0xODEsMTQgKzIwMiwxNyBAQAogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgc3RydWN0IGlzY3NpX2Nsc19jb25uICppc2NzaV9jb25uX2xvb2t1cCh1aW50NjRfdCBoYW5kbGUpCisvKgorICogUmV0dXJucyB0aGUgbWF0Y2hpbmcgY29ubmVjdGlvbiB0byBhIGdpdmVuIHNpZCAvIGNpZCB0dXBsZQorICovCitzdGF0aWMgc3RydWN0IGlzY3NpX2Nsc19jb25uICppc2NzaV9jb25uX2xvb2t1cCh1aW50MzJfdCBzaWQsIHVpbnQzMl90IGNpZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubjsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZjb25ubG9jaywgZmxhZ3MpOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubiwgJmNvbm5saXN0LCBjb25uX2xpc3QpIHsKLQkJaWYgKGNvbm4gPT0gaXNjc2lfcHRyKGhhbmRsZSkpIHsKKwkJaWYgKChjb25uLT5jaWQgPT0gY2lkKSAmJiAoaXNjc2lfY29ubl9nZXRfc2lkKGNvbm4pID09IHNpZCkpIHsKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbm5sb2NrLCBmbGFncyk7CiAJCQlyZXR1cm4gY29ubjsKIAkJfQpAQCAtMjA5LDYgKzIzMyw3IEBACiAKIAlzaG9zdCA9IGlzY3NpX3Nlc3Npb25fdG9fc2hvc3Qoc2Vzc2lvbik7CiAJc2NzaV9ob3N0X3B1dChzaG9zdCk7CisJa2ZyZWUoc2Vzc2lvbi0+dGFyZ2V0bmFtZSk7CiAJa2ZyZWUoc2Vzc2lvbik7CiAJbW9kdWxlX3B1dCh0cmFuc3BvcnQtPm93bmVyKTsKIH0KQEAgLTIxOCwzMCArMjQzLDk1IEBACiAJcmV0dXJuIGRldi0+cmVsZWFzZSA9PSBpc2NzaV9zZXNzaW9uX3JlbGVhc2U7CiB9CiAKK3N0YXRpYyBpbnQgaXNjc2lfdXNlcl9zY2FuKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCB1aW50IGNoYW5uZWwsCisJCQkgICB1aW50IGlkLCB1aW50IGx1bikKK3sKKwlzdHJ1Y3QgaXNjc2lfaG9zdCAqaWhvc3QgPSBzaG9zdC0+c2hvc3RfZGF0YTsKKwlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb247CisKKwltdXRleF9sb2NrKCZpaG9zdC0+bXV0ZXgpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoc2Vzc2lvbiwgJmlob3N0LT5zZXNzaW9ucywgaG9zdF9saXN0KSB7CisJCWlmICgoY2hhbm5lbCA9PSBTQ0FOX1dJTERfQ0FSRCB8fAorCQkgICAgIGNoYW5uZWwgPT0gc2Vzc2lvbi0+Y2hhbm5lbCkgJiYKKwkJICAgIChpZCA9PSBTQ0FOX1dJTERfQ0FSRCB8fCBpZCA9PSBzZXNzaW9uLT50YXJnZXRfaWQpKQorCQkJc2NzaV9zY2FuX3RhcmdldCgmc2Vzc2lvbi0+ZGV2LCBzZXNzaW9uLT5jaGFubmVsLAorCQkJCQkgc2Vzc2lvbi0+dGFyZ2V0X2lkLCBsdW4sIDEpOworCX0KKwltdXRleF91bmxvY2soJmlob3N0LT5tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dCh2b2lkICpkYXRhKQoreworCXN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbiA9IGRhdGE7CisKKwlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJnNlc3Npb24tPmRldiwgImlzY3NpOiBzZXNzaW9uIHJlY292ZXJ5IHRpbWVkICIKKwkJICAib3V0IGFmdGVyICVkIHNlY3NcbiIsIHNlc3Npb24tPnJlY292ZXJ5X3Rtbyk7CisKKwlpZiAoc2Vzc2lvbi0+dHJhbnNwb3J0LT5zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0KQorCQlzZXNzaW9uLT50cmFuc3BvcnQtPnNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQoc2Vzc2lvbik7CisKKwlzY3NpX3RhcmdldF91bmJsb2NrKCZzZXNzaW9uLT5kZXYpOworfQorCit2b2lkIGlzY3NpX3VuYmxvY2tfc2Vzc2lvbihzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24pCit7CisJaWYgKCFjYW5jZWxfZGVsYXllZF93b3JrKCZzZXNzaW9uLT5yZWNvdmVyeV93b3JrKSkKKwkJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKKwlzY3NpX3RhcmdldF91bmJsb2NrKCZzZXNzaW9uLT5kZXYpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfdW5ibG9ja19zZXNzaW9uKTsKKwordm9pZCBpc2NzaV9ibG9ja19zZXNzaW9uKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbikKK3sKKwlzY3NpX3RhcmdldF9ibG9jaygmc2Vzc2lvbi0+ZGV2KTsKKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnNlc3Npb24tPnJlY292ZXJ5X3dvcmssCisJCQkgICAgIHNlc3Npb24tPnJlY292ZXJ5X3RtbyAqIEhaKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX2Jsb2NrX3Nlc3Npb24pOworCiAvKioKICAqIGlzY3NpX2NyZWF0ZV9zZXNzaW9uIC0gY3JlYXRlIGlzY3NpIGNsYXNzIHNlc3Npb24KICAqIEBzaG9zdDogc2NzaSBob3N0CiAgKiBAdHJhbnNwb3J0OiBpc2NzaSB0cmFuc3BvcnQKICAqCi0gKiBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhIExMRCBvciBpc2NzaV90cmFuc3BvcnQKKyAqIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGEgTExEIG9yIGlzY3NpX3RyYW5zcG9ydC4KICAqKi8KIHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqCi1pc2NzaV9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCwgc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0KQoraXNjc2lfY3JlYXRlX3Nlc3Npb24oc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsCisJCSAgICAgc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0LCBpbnQgY2hhbm5lbCkKIHsKKwlzdHJ1Y3QgaXNjc2lfaG9zdCAqaWhvc3Q7CiAJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uOwogCWludCBlcnI7CiAKIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KHRyYW5zcG9ydC0+b3duZXIpKQogCQlyZXR1cm4gTlVMTDsKIAotCXNlc3Npb24gPSBremFsbG9jKHNpemVvZigqc2Vzc2lvbiksIEdGUF9LRVJORUwpOworCXNlc3Npb24gPSBremFsbG9jKHNpemVvZigqc2Vzc2lvbikgKyB0cmFuc3BvcnQtPnNlc3Npb25kYXRhX3NpemUsCisJCQkgIEdGUF9LRVJORUwpOwogCWlmICghc2Vzc2lvbikKIAkJZ290byBtb2R1bGVfcHV0OwogCXNlc3Npb24tPnRyYW5zcG9ydCA9IHRyYW5zcG9ydDsKKwlzZXNzaW9uLT5yZWNvdmVyeV90bW8gPSAxMjA7CisJSU5JVF9XT1JLKCZzZXNzaW9uLT5yZWNvdmVyeV93b3JrLCBzZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0LCBzZXNzaW9uKTsKKwlJTklUX0xJU1RfSEVBRCgmc2Vzc2lvbi0+aG9zdF9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmc2Vzc2lvbi0+c2Vzc19saXN0KTsKKworCWlmICh0cmFuc3BvcnQtPnNlc3Npb25kYXRhX3NpemUpCisJCXNlc3Npb24tPmRkX2RhdGEgPSAmc2Vzc2lvblsxXTsKIAogCS8qIHRoaXMgaXMgcmVsZWFzZWQgaW4gdGhlIGRldidzIHJlbGVhc2UgZnVuY3Rpb24gKi8KIAlzY3NpX2hvc3RfZ2V0KHNob3N0KTsKLQlzbnByaW50ZihzZXNzaW9uLT5kZXYuYnVzX2lkLCBCVVNfSURfU0laRSwgInNlc3Npb24ldSIsIHNob3N0LT5ob3N0X25vKTsKKwlpaG9zdCA9IHNob3N0LT5zaG9zdF9kYXRhOworCisJc2Vzc2lvbi0+c2lkID0gaXNjc2lfc2Vzc2lvbl9ucisrOworCXNlc3Npb24tPmNoYW5uZWwgPSBjaGFubmVsOworCXNlc3Npb24tPnRhcmdldF9pZCA9IGlob3N0LT5uZXh0X3RhcmdldF9pZCsrOworCisJc25wcmludGYoc2Vzc2lvbi0+ZGV2LmJ1c19pZCwgQlVTX0lEX1NJWkUsICJzZXNzaW9uJXUiLAorCQkgc2Vzc2lvbi0+c2lkKTsKIAlzZXNzaW9uLT5kZXYucGFyZW50ID0gJnNob3N0LT5zaG9zdF9nZW5kZXY7CiAJc2Vzc2lvbi0+ZGV2LnJlbGVhc2UgPSBpc2NzaV9zZXNzaW9uX3JlbGVhc2U7CiAJZXJyID0gZGV2aWNlX3JlZ2lzdGVyKCZzZXNzaW9uLT5kZXYpOwpAQCAtMjUyLDYgKzM0MiwxMCBAQAogCX0KIAl0cmFuc3BvcnRfcmVnaXN0ZXJfZGV2aWNlKCZzZXNzaW9uLT5kZXYpOwogCisJbXV0ZXhfbG9jaygmaWhvc3QtPm11dGV4KTsKKwlsaXN0X2FkZCgmc2Vzc2lvbi0+aG9zdF9saXN0LCAmaWhvc3QtPnNlc3Npb25zKTsKKwltdXRleF91bmxvY2soJmlob3N0LT5tdXRleCk7CisKIAlyZXR1cm4gc2Vzc2lvbjsKIAogZnJlZV9zZXNzaW9uOgpAQCAtMjcyLDYgKzM2NiwxNiBAQAogICoqLwogaW50IGlzY3NpX2Rlc3Ryb3lfc2Vzc2lvbihzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24pCiB7CisJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBpc2NzaV9zZXNzaW9uX3RvX3Nob3N0KHNlc3Npb24pOworCXN0cnVjdCBpc2NzaV9ob3N0ICppaG9zdCA9IHNob3N0LT5zaG9zdF9kYXRhOworCisJaWYgKCFjYW5jZWxfZGVsYXllZF93b3JrKCZzZXNzaW9uLT5yZWNvdmVyeV93b3JrKSkKKwkJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKKworCW11dGV4X2xvY2soJmlob3N0LT5tdXRleCk7CisJbGlzdF9kZWwoJnNlc3Npb24tPmhvc3RfbGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZpaG9zdC0+bXV0ZXgpOworCiAJdHJhbnNwb3J0X3VucmVnaXN0ZXJfZGV2aWNlKCZzZXNzaW9uLT5kZXYpOwogCWRldmljZV91bnJlZ2lzdGVyKCZzZXNzaW9uLT5kZXYpOwogCXJldHVybiAwOwpAQCAtMjg0LDYgKzM4OCw3IEBACiAJc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uID0gaXNjc2lfZGV2X3RvX2Nvbm4oZGV2KTsKIAlzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjb25uLT5kZXYucGFyZW50OwogCisJa2ZyZWUoY29ubi0+cGVyc2lzdGVudF9hZGRyZXNzKTsKIAlrZnJlZShjb25uKTsKIAlwdXRfZGV2aWNlKHBhcmVudCk7CiB9CkBAIC0zMDEsMTIgKzQwNiwxNiBAQAogICogVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYSBMTEQgb3IgaXNjc2lfdHJhbnNwb3J0LiBUaGUgY29ubmVjdGlvbgogICogaXMgY2hpbGQgb2YgdGhlIHNlc3Npb24gc28gY2lkIG11c3QgYmUgdW5pcXVlIGZvciBhbGwgY29ubmVjdGlvbnMKICAqIG9uIHRoZSBzZXNzaW9uLgorICoKKyAqIFNpbmNlIHdlIGRvIG5vdCBzdXBwb3J0IE1DUywgY2lkIHdpbGwgbm9ybWFsbHkgYmUgemVyby4gSW4gc29tZSBjYXNlcworICogZm9yIHNvZnR3YXJlIGlzY3NpIHdlIGNvdWxkIGJlIHRyeWluZyB0byBwcmVhbGxvY2F0ZSBhIGNvbm5lY3Rpb24gc3RydWN0CisgKiBpbiB3aGljaCBjYXNlIHRoZXJlIGNvdWxkIGJlIHR3byBjb25uZWN0aW9uIHN0cnVjdHMgYW5kIGNpZCB3b3VsZCBiZQorICogbm9uLXplcm8uCiAgKiovCiBzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKgogaXNjc2lfY3JlYXRlX2Nvbm4oc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uLCB1aW50MzJfdCBjaWQpCiB7CiAJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gc2Vzc2lvbi0+dHJhbnNwb3J0OwotCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gaXNjc2lfc2Vzc2lvbl90b19zaG9zdChzZXNzaW9uKTsKIAlzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm47CiAJaW50IGVycjsKIApAQCAtMzE5LDEyICs0MjgsMTQgQEAKIAogCUlOSVRfTElTVF9IRUFEKCZjb25uLT5jb25uX2xpc3QpOwogCWNvbm4tPnRyYW5zcG9ydCA9IHRyYW5zcG9ydDsKKwljb25uLT5jaWQgPSBjaWQ7CiAKIAkvKiB0aGlzIGlzIHJlbGVhc2VkIGluIHRoZSBkZXYncyByZWxlYXNlIGZ1bmN0aW9uICovCiAJaWYgKCFnZXRfZGV2aWNlKCZzZXNzaW9uLT5kZXYpKQogCQlnb3RvIGZyZWVfY29ubjsKKwogCXNucHJpbnRmKGNvbm4tPmRldi5idXNfaWQsIEJVU19JRF9TSVpFLCAiY29ubmVjdGlvbiVkOiV1IiwKLQkJIHNob3N0LT5ob3N0X25vLCBjaWQpOworCQkgc2Vzc2lvbi0+c2lkLCBjaWQpOwogCWNvbm4tPmRldi5wYXJlbnQgPSAmc2Vzc2lvbi0+ZGV2OwogCWNvbm4tPmRldi5yZWxlYXNlID0gaXNjc2lfY29ubl9yZWxlYXNlOwogCWVyciA9IGRldmljZV9yZWdpc3RlcigmY29ubi0+ZGV2KTsKQEAgLTM2MSwxMDUgKzQ3Miw2IEBACiBFWFBPUlRfU1lNQk9MX0dQTChpc2NzaV9kZXN0cm95X2Nvbm4pOwogCiAvKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIG9ubHkgYnkgc29mdHdhcmUgaXNjc2lfdHJhbnNwb3J0cwotICogd2hpY2ggZG8gbm90IGFsbG9jYXRlIGFuZCBtb3JlIHRoZWlyIHNjc2lfaG9zdHMgc2luY2UgdGhpcwotICogaXMgaW5pdGlhdGVkIGZyb20gdXNlcnNwYWNlLgotICovCi0KLS8qCi0gKiBpU0NTSSBTZXNzaW9uJ3MgaG9zdGRhdGEgb3JnYW5pemF0aW9uOgotICoKLSAqICAgICotLS0tLS0tLS0tLS0tLS0tLS0qIDw9PSBob3N0ZGF0YV9zZXNzaW9uKGhvc3QtPmhvc3RkYXRhKQotICogICAgfCBwdHIgdG8gY2xhc3Mgc2Vzc3wKLSAqICAgIHwtLS0tLS0tLS0tLS0tLS0tLS18IDw9PSBpc2NzaV9ob3N0ZGF0YShob3N0LT5ob3N0ZGF0YSkKLSAqICAgIHwgdHJhbnNwb3J0J3MgZGF0YSB8Ci0gKiAgICAqLS0tLS0tLS0tLS0tLS0tLS0tKgotICovCi0KLSNkZWZpbmUgaG9zdGRhdGFfcHJpdnNpemUoX3QpCShzaXplb2YodW5zaWduZWQgbG9uZykgKyBfdC0+aG9zdGRhdGFfc2l6ZSArIFwKLQkJCQkgX3QtPmhvc3RkYXRhX3NpemUgJSBzaXplb2YodW5zaWduZWQgbG9uZykpCi0KLSNkZWZpbmUgaG9zdGRhdGFfc2Vzc2lvbihfaG9zdGRhdGEpIChpc2NzaV9wdHIoKih1bnNpZ25lZCBsb25nICopX2hvc3RkYXRhKSkKLQotLyoqCi0gKiBpc2NzaV90cmFuc3BvcnRfY3JlYXRlX3Nlc3Npb24gLSBjcmVhdGUgaXNjc2kgY2xzIHNlc3Npb24gYW5kIGhvc3QKLSAqIHNjc2l0OiBzY3NpIHRyYW5zcG9ydCB0ZW1wbGF0ZQotICogdHJhbnNwb3J0OiBpc2NzaSB0cmFuc3BvcnQgdGVtcGxhdGUKLSAqCi0gKiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHNvZnR3YXJlIGlzY3NpX3RyYW5zcG9ydHMgdGhhdCBhbGxvY2F0ZQotICogYSBzZXNzaW9uIHBlciBzY3NpIGhvc3QuCi0gKiovCi1zdHJ1Y3QgU2NzaV9Ib3N0ICoKLWlzY3NpX3RyYW5zcG9ydF9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3Qgc2NzaV90cmFuc3BvcnRfdGVtcGxhdGUgKnNjc2l0LAotCQkJICAgICAgIHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgKnRyYW5zcG9ydCkKLXsKLQlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb247Ci0Jc3RydWN0IFNjc2lfSG9zdCAqc2hvc3Q7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCXNob3N0ID0gc2NzaV9ob3N0X2FsbG9jKHRyYW5zcG9ydC0+aG9zdF90ZW1wbGF0ZSwKLQkJCQlob3N0ZGF0YV9wcml2c2l6ZSh0cmFuc3BvcnQpKTsKLQlpZiAoIXNob3N0KSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGNhbiBub3QgYWxsb2NhdGUgU0NTSSBob3N0IGZvciAiCi0JCQkic2Vzc2lvblxuIik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCXNob3N0LT5tYXhfaWQgPSAxOwotCXNob3N0LT5tYXhfY2hhbm5lbCA9IDA7Ci0Jc2hvc3QtPm1heF9sdW4gPSB0cmFuc3BvcnQtPm1heF9sdW47Ci0Jc2hvc3QtPm1heF9jbWRfbGVuID0gdHJhbnNwb3J0LT5tYXhfY21kX2xlbjsKLQlzaG9zdC0+dHJhbnNwb3J0dCA9IHNjc2l0OwotCXNob3N0LT50cmFuc3BvcnR0LT5jcmVhdGVfd29ya19xdWV1ZSA9IDE7Ci0KLQlpZiAoc2NzaV9hZGRfaG9zdChzaG9zdCwgTlVMTCkpCi0JCWdvdG8gZnJlZV9ob3N0OwotCi0Jc2Vzc2lvbiA9IGlzY3NpX2NyZWF0ZV9zZXNzaW9uKHNob3N0LCB0cmFuc3BvcnQpOwotCWlmICghc2Vzc2lvbikKLQkJZ290byByZW1vdmVfaG9zdDsKLQotCSoodW5zaWduZWQgbG9uZyopc2hvc3QtPmhvc3RkYXRhID0gKHVuc2lnbmVkIGxvbmcpc2Vzc2lvbjsKLQlzcGluX2xvY2tfaXJxc2F2ZSgmc2Vzc2xvY2ssIGZsYWdzKTsKLQlsaXN0X2FkZCgmc2Vzc2lvbi0+c2Vzc19saXN0LCAmc2Vzc2xpc3QpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNlc3Nsb2NrLCBmbGFncyk7Ci0JcmV0dXJuIHNob3N0OwotCi1yZW1vdmVfaG9zdDoKLQlzY3NpX3JlbW92ZV9ob3N0KHNob3N0KTsKLWZyZWVfaG9zdDoKLQlzY3NpX2hvc3RfcHV0KHNob3N0KTsKLQlyZXR1cm4gTlVMTDsKLX0KLQotRVhQT1JUX1NZTUJPTF9HUEwoaXNjc2lfdHJhbnNwb3J0X2NyZWF0ZV9zZXNzaW9uKTsKLQotLyoqCi0gKiBpc2NzaV90cmFuc3BvcnRfZGVzdHJveV9zZXNzaW9uIC0gZGVzdHJveSBzZXNzaW9uIGFuZCBzY3NpIGhvc3QKLSAqIHNob3N0OiBzY3NpIGhvc3QKLSAqCi0gKiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHNvZnR3YXJlIGlzY3NpX3RyYW5zcG9ydHMgdGhhdCBhbGxvY2F0ZQotICogYSBzZXNzaW9uIHBlciBzY3NpIGhvc3QuCi0gKiovCi1pbnQgaXNjc2lfdHJhbnNwb3J0X2Rlc3Ryb3lfc2Vzc2lvbihzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKLXsKLQlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb247Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCXNjc2lfcmVtb3ZlX2hvc3Qoc2hvc3QpOwotCXNlc3Npb24gPSBob3N0ZGF0YV9zZXNzaW9uKHNob3N0LT5ob3N0ZGF0YSk7Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJnNlc3Nsb2NrLCBmbGFncyk7Ci0JbGlzdF9kZWwoJnNlc3Npb24tPnNlc3NfbGlzdCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Vzc2xvY2ssIGZsYWdzKTsKLQlpc2NzaV9kZXN0cm95X3Nlc3Npb24oc2Vzc2lvbik7Ci0JLyogcmVmIGZyb20gaG9zdCBhbGxvYyAqLwotCXNjc2lfaG9zdF9wdXQoc2hvc3QpOwotCXJldHVybiAwOwotfQotCi1FWFBPUlRfU1lNQk9MX0dQTChpc2NzaV90cmFuc3BvcnRfZGVzdHJveV9zZXNzaW9uKTsKLQotLyoKICAqIGlzY3NpIGludGVyZmFjZSBmdW5jdGlvbnMKICAqLwogc3RhdGljIHN0cnVjdCBpc2NzaV9pbnRlcm5hbCAqCkBAIC01NjAsMTMgKzU3MiwxMyBAQAogfQogCiBzdGF0aWMgaW50Ci1pc2NzaV91bmljYXN0X3NrYihzdHJ1Y3QgbWVtcG9vbF96b25lICp6b25lLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoraXNjc2lfdW5pY2FzdF9za2Ioc3RydWN0IG1lbXBvb2xfem9uZSAqem9uZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBpZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCByYzsKIAogCXNrYl9nZXQoc2tiKTsKLQlyYyA9IG5ldGxpbmtfdW5pY2FzdChubHMsIHNrYiwgZGFlbW9uX3BpZCwgTVNHX0RPTlRXQUlUKTsKKwlyYyA9IG5ldGxpbmtfdW5pY2FzdChubHMsIHNrYiwgcGlkLCBNU0dfRE9OVFdBSVQpOwogCWlmIChyYyA8IDApIHsKIAkJbWVtcG9vbF9mcmVlKHNrYiwgem9uZS0+cG9vbCk7CiAJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGNhbiBub3QgdW5pY2FzdCBza2IgKCVkKVxuIiwgcmMpOwpAQCAtNTc0LDYgKzU4Niw3IEBACiAJfQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnpvbmUtPmZyZWVsb2NrLCBmbGFncyk7CisJSU5JVF9MSVNUX0hFQUQoc2tiX3RvX2xoKHNrYikpOwogCWxpc3RfYWRkKHNrYl90b19saChza2IpLCAmem9uZS0+ZnJlZXF1ZXVlKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ6b25lLT5mcmVlbG9jaywgZmxhZ3MpOwogCkBAIC01ODcsOSArNjAwLDE0IEBACiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlzdHJ1Y3QgaXNjc2lfdWV2ZW50ICpldjsKIAljaGFyICpwZHU7CisJc3RydWN0IGlzY3NpX2ludGVybmFsICpwcml2OwogCWludCBsZW4gPSBOTE1TR19TUEFDRShzaXplb2YoKmV2KSArIHNpemVvZihzdHJ1Y3QgaXNjc2lfaGRyKSArCiAJCQkgICAgICBkYXRhX3NpemUpOwogCisJcHJpdiA9IGlzY3NpX2lmX3RyYW5zcG9ydF9sb29rdXAoY29ubi0+dHJhbnNwb3J0KTsKKwlpZiAoIXByaXYpCisJCXJldHVybiAtRUlOVkFMOworCiAJbWVtcG9vbF96b25lX2NvbXBsZXRlKGNvbm4tPnpfcGR1KTsKIAogCXNrYiA9IG1lbXBvb2xfem9uZV9nZXRfc2tiKGNvbm4tPnpfcGR1KTsKQEAgLTYwMCwxOSArNjE4LDIwIEBACiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAotCW5saCA9IF9fbmxtc2dfcHV0KHNrYiwgZGFlbW9uX3BpZCwgMCwgMCwgKGxlbiAtIHNpemVvZigqbmxoKSksIDApOworCW5saCA9IF9fbmxtc2dfcHV0KHNrYiwgcHJpdi0+ZGFlbW9uX3BpZCwgMCwgMCwgKGxlbiAtIHNpemVvZigqbmxoKSksIDApOwogCWV2ID0gTkxNU0dfREFUQShubGgpOwogCW1lbXNldChldiwgMCwgc2l6ZW9mKCpldikpOwogCWV2LT50cmFuc3BvcnRfaGFuZGxlID0gaXNjc2lfaGFuZGxlKGNvbm4tPnRyYW5zcG9ydCk7CiAJZXYtPnR5cGUgPSBJU0NTSV9LRVZFTlRfUkVDVl9QRFU7CiAJaWYgKGF0b21pY19yZWFkKCZjb25uLT56X3BkdS0+YWxsb2NhdGVkKSA+PSBjb25uLT56X3BkdS0+aGl3YXQpCiAJCWV2LT5pZmVycm9yID0gLUVOT01FTTsKLQlldi0+ci5yZWN2X3JlcS5jb25uX2hhbmRsZSA9IGlzY3NpX2hhbmRsZShjb25uKTsKKwlldi0+ci5yZWN2X3JlcS5jaWQgPSBjb25uLT5jaWQ7CisJZXYtPnIucmVjdl9yZXEuc2lkID0gaXNjc2lfY29ubl9nZXRfc2lkKGNvbm4pOwogCXBkdSA9IChjaGFyKilldiArIHNpemVvZigqZXYpOwogCW1lbWNweShwZHUsIGhkciwgc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpKTsKIAltZW1jcHkocGR1ICsgc2l6ZW9mKHN0cnVjdCBpc2NzaV9oZHIpLCBkYXRhLCBkYXRhX3NpemUpOwogCi0JcmV0dXJuIGlzY3NpX3VuaWNhc3Rfc2tiKGNvbm4tPnpfcGR1LCBza2IpOworCXJldHVybiBpc2NzaV91bmljYXN0X3NrYihjb25uLT56X3BkdSwgc2tiLCBwcml2LT5kYWVtb25fcGlkKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlzY3NpX3JlY3ZfcGR1KTsKIApAQCAtNjIxLDggKzY0MCwxMyBAQAogCXN0cnVjdCBubG1zZ2hkcgkqbmxoOwogCXN0cnVjdCBza19idWZmCSpza2I7CiAJc3RydWN0IGlzY3NpX3VldmVudCAqZXY7CisJc3RydWN0IGlzY3NpX2ludGVybmFsICpwcml2OwogCWludCBsZW4gPSBOTE1TR19TUEFDRShzaXplb2YoKmV2KSk7CiAKKwlwcml2ID0gaXNjc2lfaWZfdHJhbnNwb3J0X2xvb2t1cChjb25uLT50cmFuc3BvcnQpOworCWlmICghcHJpdikKKwkJcmV0dXJuOworCiAJbWVtcG9vbF96b25lX2NvbXBsZXRlKGNvbm4tPnpfZXJyb3IpOwogCiAJc2tiID0gbWVtcG9vbF96b25lX2dldF9za2IoY29ubi0+el9lcnJvcik7CkBAIC02MzIsMTYgKzY1NiwxNyBAQAogCQlyZXR1cm47CiAJfQogCi0JbmxoID0gX19ubG1zZ19wdXQoc2tiLCBkYWVtb25fcGlkLCAwLCAwLCAobGVuIC0gc2l6ZW9mKCpubGgpKSwgMCk7CisJbmxoID0gX19ubG1zZ19wdXQoc2tiLCBwcml2LT5kYWVtb25fcGlkLCAwLCAwLCAobGVuIC0gc2l6ZW9mKCpubGgpKSwgMCk7CiAJZXYgPSBOTE1TR19EQVRBKG5saCk7CiAJZXYtPnRyYW5zcG9ydF9oYW5kbGUgPSBpc2NzaV9oYW5kbGUoY29ubi0+dHJhbnNwb3J0KTsKIAlldi0+dHlwZSA9IElTQ1NJX0tFVkVOVF9DT05OX0VSUk9SOwogCWlmIChhdG9taWNfcmVhZCgmY29ubi0+el9lcnJvci0+YWxsb2NhdGVkKSA+PSBjb25uLT56X2Vycm9yLT5oaXdhdCkKIAkJZXYtPmlmZXJyb3IgPSAtRU5PTUVNOwogCWV2LT5yLmNvbm5lcnJvci5lcnJvciA9IGVycm9yOwotCWV2LT5yLmNvbm5lcnJvci5jb25uX2hhbmRsZSA9IGlzY3NpX2hhbmRsZShjb25uKTsKKwlldi0+ci5jb25uZXJyb3IuY2lkID0gY29ubi0+Y2lkOworCWV2LT5yLmNvbm5lcnJvci5zaWQgPSBpc2NzaV9jb25uX2dldF9zaWQoY29ubik7CiAKLQlpc2NzaV91bmljYXN0X3NrYihjb25uLT56X2Vycm9yLCBza2IpOworCWlzY3NpX3VuaWNhc3Rfc2tiKGNvbm4tPnpfZXJyb3IsIHNrYiwgcHJpdi0+ZGFlbW9uX3BpZCk7CiAKIAlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJmNvbm4tPmRldiwgImlzY3NpOiBkZXRlY3RlZCBjb25uIGVycm9yICglZClcbiIsCiAJCSAgIGVycm9yKTsKQEAgLTY3MSw3ICs2OTYsNyBAQAogCW5saCA9IF9fbmxtc2dfcHV0KHNrYiwgcGlkLCBzZXEsIHQsIChsZW4gLSBzaXplb2YoKm5saCkpLCAwKTsKIAlubGgtPm5sbXNnX2ZsYWdzID0gZmxhZ3M7CiAJbWVtY3B5KE5MTVNHX0RBVEEobmxoKSwgcGF5bG9hZCwgc2l6ZSk7Ci0JcmV0dXJuIGlzY3NpX3VuaWNhc3Rfc2tiKHpfcmVwbHksIHNrYik7CisJcmV0dXJuIGlzY3NpX3VuaWNhc3Rfc2tiKHpfcmVwbHksIHNrYiwgcGlkKTsKIH0KIAogc3RhdGljIGludApAQCAtNjgzLDEzICs3MDgsMTggQEAKIAlzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm47CiAJc3RydWN0IG5sbXNnaGRyCSpubGhzdGF0OwogCXN0cnVjdCBpc2NzaV91ZXZlbnQgKmV2c3RhdDsKKwlzdHJ1Y3QgaXNjc2lfaW50ZXJuYWwgKnByaXY7CiAJaW50IGxlbiA9IE5MTVNHX1NQQUNFKHNpemVvZigqZXYpICsKIAkJCSAgICAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfc3RhdHMpICsKIAkJCSAgICAgIHNpemVvZihzdHJ1Y3QgaXNjc2lfc3RhdHNfY3VzdG9tKSAqCiAJCQkgICAgICBJU0NTSV9TVEFUU19DVVNUT01fTUFYKTsKIAlpbnQgZXJyID0gMDsKIAotCWNvbm4gPSBpc2NzaV9jb25uX2xvb2t1cChldi0+dS5nZXRfc3RhdHMuY29ubl9oYW5kbGUpOworCXByaXYgPSBpc2NzaV9pZl90cmFuc3BvcnRfbG9va3VwKHRyYW5zcG9ydCk7CisJaWYgKCFwcml2KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNvbm4gPSBpc2NzaV9jb25uX2xvb2t1cChldi0+dS5nZXRfc3RhdHMuc2lkLCBldi0+dS5nZXRfc3RhdHMuY2lkKTsKIAlpZiAoIWNvbm4pCiAJCXJldHVybiAtRUVYSVNUOwogCkBAIC03MDUsNyArNzM1LDcgQEAKIAkJCXJldHVybiAtRU5PTUVNOwogCQl9CiAKLQkJbmxoc3RhdCA9IF9fbmxtc2dfcHV0KHNrYnN0YXQsIGRhZW1vbl9waWQsIDAsIDAsCisJCW5saHN0YXQgPSBfX25sbXNnX3B1dChza2JzdGF0LCBwcml2LT5kYWVtb25fcGlkLCAwLCAwLAogCQkJCSAgICAgIChsZW4gLSBzaXplb2YoKm5saHN0YXQpKSwgMCk7CiAJCWV2c3RhdCA9IE5MTVNHX0RBVEEobmxoc3RhdCk7CiAJCW1lbXNldChldnN0YXQsIDAsIHNpemVvZigqZXZzdGF0KSk7CkBAIC03MTMsOCArNzQzLDEwIEBACiAJCWV2c3RhdC0+dHlwZSA9IG5saC0+bmxtc2dfdHlwZTsKIAkJaWYgKGF0b21pY19yZWFkKCZjb25uLT56X3BkdS0+YWxsb2NhdGVkKSA+PSBjb25uLT56X3BkdS0+aGl3YXQpCiAJCQlldnN0YXQtPmlmZXJyb3IgPSAtRU5PTUVNOwotCQlldnN0YXQtPnUuZ2V0X3N0YXRzLmNvbm5faGFuZGxlID0KLQkJCWV2LT51LmdldF9zdGF0cy5jb25uX2hhbmRsZTsKKwkJZXZzdGF0LT51LmdldF9zdGF0cy5jaWQgPQorCQkJZXYtPnUuZ2V0X3N0YXRzLmNpZDsKKwkJZXZzdGF0LT51LmdldF9zdGF0cy5zaWQgPQorCQkJZXYtPnUuZ2V0X3N0YXRzLnNpZDsKIAkJc3RhdHMgPSAoc3RydWN0IGlzY3NpX3N0YXRzICopCiAJCQkoKGNoYXIqKWV2c3RhdCArIHNpemVvZigqZXZzdGF0KSk7CiAJCW1lbXNldChzdGF0cywgMCwgc2l6ZW9mKCpzdGF0cykpOwpAQCAtNzI5LDcgKzc2MSw3IEBACiAJCXNrYl90cmltKHNrYnN0YXQsIE5MTVNHX0FMSUdOKGFjdHVhbF9zaXplKSk7CiAJCW5saHN0YXQtPm5sbXNnX2xlbiA9IGFjdHVhbF9zaXplOwogCi0JCWVyciA9IGlzY3NpX3VuaWNhc3Rfc2tiKGNvbm4tPnpfcGR1LCBza2JzdGF0KTsKKwkJZXJyID0gaXNjc2lfdW5pY2FzdF9za2IoY29ubi0+el9wZHUsIHNrYnN0YXQsIHByaXYtPmRhZW1vbl9waWQpOwogCX0gd2hpbGUgKGVyciA8IDAgJiYgZXJyICE9IC1FQ09OTlJFRlVTRUQpOwogCiAJcmV0dXJuIGVycjsKQEAgLTc0MCwxNiArNzcyLDIxIEBACiB7CiAJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gcHJpdi0+aXNjc2lfdHJhbnNwb3J0OwogCXN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbjsKLQl1aW50MzJfdCBzaWQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1aW50MzJfdCBob3N0bm87CiAKLQlzZXNzaW9uID0gdHJhbnNwb3J0LT5jcmVhdGVfc2Vzc2lvbigmcHJpdi0+dCwKKwlzZXNzaW9uID0gdHJhbnNwb3J0LT5jcmVhdGVfc2Vzc2lvbih0cmFuc3BvcnQsICZwcml2LT50LAogCQkJCQkgICAgZXYtPnUuY19zZXNzaW9uLmluaXRpYWxfY21kc24sCi0JCQkJCSAgICAmc2lkKTsKKwkJCQkJICAgICZob3N0bm8pOwogCWlmICghc2Vzc2lvbikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlldi0+ci5jX3Nlc3Npb25fcmV0LnNlc3Npb25faGFuZGxlID0gaXNjc2lfaGFuZGxlKHNlc3Npb24pOwotCWV2LT5yLmNfc2Vzc2lvbl9yZXQuc2lkID0gc2lkOworCXNwaW5fbG9ja19pcnFzYXZlKCZzZXNzbG9jaywgZmxhZ3MpOworCWxpc3RfYWRkKCZzZXNzaW9uLT5zZXNzX2xpc3QsICZzZXNzbGlzdCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2Vzc2xvY2ssIGZsYWdzKTsKKworCWV2LT5yLmNfc2Vzc2lvbl9yZXQuaG9zdF9ubyA9IGhvc3RubzsKKwlldi0+ci5jX3Nlc3Npb25fcmV0LnNpZCA9IHNlc3Npb24tPnNpZDsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzYwLDEzICs3OTcsMjAgQEAKIAlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb247CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCXNlc3Npb24gPSBpc2NzaV9zZXNzaW9uX2xvb2t1cChldi0+dS5jX2Nvbm4uc2Vzc2lvbl9oYW5kbGUpOwotCWlmICghc2Vzc2lvbikKKwlzZXNzaW9uID0gaXNjc2lfc2Vzc2lvbl9sb29rdXAoZXYtPnUuY19jb25uLnNpZCk7CisJaWYgKCFzZXNzaW9uKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGludmFsaWQgc2Vzc2lvbiAlZFxuIiwKKwkJICAgICAgIGV2LT51LmNfY29ubi5zaWQpOwogCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAljb25uID0gdHJhbnNwb3J0LT5jcmVhdGVfY29ubihzZXNzaW9uLCBldi0+dS5jX2Nvbm4uY2lkKTsKLQlpZiAoIWNvbm4pCisJaWYgKCFjb25uKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaXNjc2k6IGNvdWxkbid0IGNyZWF0ZSBhIG5ldyAiCisJCQkgICAiY29ubmVjdGlvbiBmb3Igc2Vzc2lvbiAlZFxuIiwKKwkJCSAgIHNlc3Npb24tPnNpZCk7CiAJCXJldHVybiAtRU5PTUVNOworCX0KIAogCWNvbm4tPnpfcGR1ID0gbWVtcG9vbF96b25lX2luaXQoWl9NQVhfUERVLAogCQkJTkxNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBpc2NzaV91ZXZlbnQpICsKQEAgLTc4OCw3ICs4MzIsOCBAQAogCQlnb3RvIGZyZWVfcGR1X3Bvb2w7CiAJfQogCi0JZXYtPnIuaGFuZGxlID0gaXNjc2lfaGFuZGxlKGNvbm4pOworCWV2LT5yLmNfY29ubl9yZXQuc2lkID0gc2Vzc2lvbi0+c2lkOworCWV2LT5yLmNfY29ubl9yZXQuY2lkID0gY29ubi0+Y2lkOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNvbm5sb2NrLCBmbGFncyk7CiAJbGlzdF9hZGQoJmNvbm4tPmNvbm5fbGlzdCwgJmNvbm5saXN0KTsKQEAgLTgxMiw3ICs4NTcsNyBAQAogCXN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubjsKIAlzdHJ1Y3QgbWVtcG9vbF96b25lICp6X2Vycm9yLCAqel9wZHU7CiAKLQljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuZF9jb25uLmNvbm5faGFuZGxlKTsKKwljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuZF9jb25uLnNpZCwgZXYtPnUuZF9jb25uLmNpZCk7CiAJaWYgKCFjb25uKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmY29ubmxvY2ssIGZsYWdzKTsKQEAgLTgzMiw2ICs4NzcsMTA2IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkCitpc2NzaV9jb3B5X3BhcmFtKHN0cnVjdCBpc2NzaV91ZXZlbnQgKmV2LCB1aW50MzJfdCAqdmFsdWUsIGNoYXIgKmRhdGEpCit7CisJaWYgKGV2LT51LnNldF9wYXJhbS5sZW4gIT0gc2l6ZW9mKHVpbnQzMl90KSkKKwkJQlVHKCk7CisJbWVtY3B5KHZhbHVlLCBkYXRhLCBtaW5fdCh1aW50MzJfdCwgc2l6ZW9mKHVpbnQzMl90KSwKKwkJZXYtPnUuc2V0X3BhcmFtLmxlbikpOworfQorCitzdGF0aWMgaW50Citpc2NzaV9zZXRfcGFyYW0oc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0LCBzdHJ1Y3QgaXNjc2lfdWV2ZW50ICpldikKK3sKKwljaGFyICpkYXRhID0gKGNoYXIqKWV2ICsgc2l6ZW9mKCpldik7CisJc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uOworCXN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbjsKKwlpbnQgZXJyID0gMDsKKwl1aW50MzJfdCB2YWx1ZSA9IDA7CisKKwlzZXNzaW9uID0gaXNjc2lfc2Vzc2lvbl9sb29rdXAoZXYtPnUuc2V0X3BhcmFtLnNpZCk7CisJY29ubiA9IGlzY3NpX2Nvbm5fbG9va3VwKGV2LT51LnNldF9wYXJhbS5zaWQsIGV2LT51LnNldF9wYXJhbS5jaWQpOworCWlmICghY29ubiB8fCAhc2Vzc2lvbikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzd2l0Y2ggKGV2LT51LnNldF9wYXJhbS5wYXJhbSkgeworCWNhc2UgSVNDU0lfUEFSQU1fU0VTU19SRUNPVkVSWV9UTU86CisJCWlzY3NpX2NvcHlfcGFyYW0oZXYsICZ2YWx1ZSwgZGF0YSk7CisJCWlmICh2YWx1ZSAhPSAwKQorCQkJc2Vzc2lvbi0+cmVjb3ZlcnlfdG1vID0gdmFsdWU7CisJCWJyZWFrOworCWNhc2UgSVNDU0lfUEFSQU1fVEFSR0VUX05BTUU6CisJCS8qIHRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgYmV0d2VlbiBsb2dpbnMgKi8KKwkJaWYgKHNlc3Npb24tPnRhcmdldG5hbWUpCisJCQlyZXR1cm4gMDsKKworCQlzZXNzaW9uLT50YXJnZXRuYW1lID0ga3N0cmR1cChkYXRhLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFzZXNzaW9uLT50YXJnZXRuYW1lKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCWJyZWFrOworCWNhc2UgSVNDU0lfUEFSQU1fVFBHVDoKKwkJaXNjc2lfY29weV9wYXJhbShldiwgJnZhbHVlLCBkYXRhKTsKKwkJc2Vzc2lvbi0+dHBndCA9IHZhbHVlOworCQlicmVhazsKKwljYXNlIElTQ1NJX1BBUkFNX1BFUlNJU1RFTlRfUE9SVDoKKwkJaXNjc2lfY29weV9wYXJhbShldiwgJnZhbHVlLCBkYXRhKTsKKwkJY29ubi0+cGVyc2lzdGVudF9wb3J0ID0gdmFsdWU7CisJCWJyZWFrOworCWNhc2UgSVNDU0lfUEFSQU1fUEVSU0lTVEVOVF9BRERSRVNTOgorCQkvKgorCQkgKiB0aGlzIGlzIHRoZSBhZGRyZXNzIHJldHVybmVkIGluIGRpc2NvdmVyeSBzbyBpdCBzaG91bGQKKwkJICogbm90IGNoYW5nZSBiZXR3ZWVuIGxvZ2lucy4KKwkJICovCisJCWlmIChjb25uLT5wZXJzaXN0ZW50X2FkZHJlc3MpCisJCQlyZXR1cm4gMDsKKworCQljb25uLT5wZXJzaXN0ZW50X2FkZHJlc3MgPSBrc3RyZHVwKGRhdGEsIEdGUF9LRVJORUwpOworCQlpZiAoIWNvbm4tPnBlcnNpc3RlbnRfYWRkcmVzcykKKwkJCXJldHVybiAtRU5PTUVNOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpc2NzaV9jb3B5X3BhcmFtKGV2LCAmdmFsdWUsIGRhdGEpOworCQllcnIgPSB0cmFuc3BvcnQtPnNldF9wYXJhbShjb25uLCBldi0+dS5zZXRfcGFyYW0ucGFyYW0sIHZhbHVlKTsKKwl9CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50Citpc2NzaV9pZl90cmFuc3BvcnRfZXAoc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0LAorCQkgICAgICBzdHJ1Y3QgaXNjc2lfdWV2ZW50ICpldiwgaW50IG1zZ190eXBlKQoreworCXN0cnVjdCBzb2NrYWRkciAqZHN0X2FkZHI7CisJaW50IHJjID0gMDsKKworCXN3aXRjaCAobXNnX3R5cGUpIHsKKwljYXNlIElTQ1NJX1VFVkVOVF9UUkFOU1BPUlRfRVBfQ09OTkVDVDoKKwkJaWYgKCF0cmFuc3BvcnQtPmVwX2Nvbm5lY3QpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlkc3RfYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNoYXIqKWV2ICsgc2l6ZW9mKCpldikpOworCQlyYyA9IHRyYW5zcG9ydC0+ZXBfY29ubmVjdChkc3RfYWRkciwKKwkJCQkJICAgZXYtPnUuZXBfY29ubmVjdC5ub25fYmxvY2tpbmcsCisJCQkJCSAgICZldi0+ci5lcF9jb25uZWN0X3JldC5oYW5kbGUpOworCQlicmVhazsKKwljYXNlIElTQ1NJX1VFVkVOVF9UUkFOU1BPUlRfRVBfUE9MTDoKKwkJaWYgKCF0cmFuc3BvcnQtPmVwX3BvbGwpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlldi0+ci5yZXRjb2RlID0gdHJhbnNwb3J0LT5lcF9wb2xsKGV2LT51LmVwX3BvbGwuZXBfaGFuZGxlLAorCQkJCQkJICAgZXYtPnUuZXBfcG9sbC50aW1lb3V0X21zKTsKKwkJYnJlYWs7CisJY2FzZSBJU0NTSV9VRVZFTlRfVFJBTlNQT1JUX0VQX0RJU0NPTk5FQ1Q6CisJCWlmICghdHJhbnNwb3J0LT5lcF9kaXNjb25uZWN0KQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJdHJhbnNwb3J0LT5lcF9kaXNjb25uZWN0KGV2LT51LmVwX2Rpc2Nvbm5lY3QuZXBfaGFuZGxlKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiByYzsKK30KKwogc3RhdGljIGludAogaXNjc2lfaWZfcmVjdl9tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgpCiB7CkBAIC04NDEsNiArOTg2LDcgQEAKIAlzdHJ1Y3QgaXNjc2lfaW50ZXJuYWwgKnByaXY7CiAJc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uOwogCXN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJcHJpdiA9IGlzY3NpX2lmX3RyYW5zcG9ydF9sb29rdXAoaXNjc2lfcHRyKGV2LT50cmFuc3BvcnRfaGFuZGxlKSk7CiAJaWYgKCFwcml2KQpAQCAtODUwLDE1ICs5OTYsMjEgQEAKIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KHRyYW5zcG9ydC0+b3duZXIpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCXByaXYtPmRhZW1vbl9waWQgPSBORVRMSU5LX0NSRURTKHNrYiktPnBpZDsKKwogCXN3aXRjaCAobmxoLT5ubG1zZ190eXBlKSB7CiAJY2FzZSBJU0NTSV9VRVZFTlRfQ1JFQVRFX1NFU1NJT046CiAJCWVyciA9IGlzY3NpX2lmX2NyZWF0ZV9zZXNzaW9uKHByaXYsIGV2KTsKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9VRVZFTlRfREVTVFJPWV9TRVNTSU9OOgotCQlzZXNzaW9uID0gaXNjc2lfc2Vzc2lvbl9sb29rdXAoZXYtPnUuZF9zZXNzaW9uLnNlc3Npb25faGFuZGxlKTsKLQkJaWYgKHNlc3Npb24pCisJCXNlc3Npb24gPSBpc2NzaV9zZXNzaW9uX2xvb2t1cChldi0+dS5kX3Nlc3Npb24uc2lkKTsKKwkJaWYgKHNlc3Npb24pIHsKKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZzZXNzbG9jaywgZmxhZ3MpOworCQkJbGlzdF9kZWwoJnNlc3Npb24tPnNlc3NfbGlzdCk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZXNzbG9jaywgZmxhZ3MpOworCiAJCQl0cmFuc3BvcnQtPmRlc3Ryb3lfc2Vzc2lvbihzZXNzaW9uKTsKLQkJZWxzZQorCQl9IGVsc2UKIAkJCWVyciA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfVUVWRU5UX0NSRUFURV9DT05OOgpAQCAtODY4LDQxICsxMDIwLDM1IEBACiAJCWVyciA9IGlzY3NpX2lmX2Rlc3Ryb3lfY29ubih0cmFuc3BvcnQsIGV2KTsKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9VRVZFTlRfQklORF9DT05OOgotCQlzZXNzaW9uID0gaXNjc2lfc2Vzc2lvbl9sb29rdXAoZXYtPnUuYl9jb25uLnNlc3Npb25faGFuZGxlKTsKLQkJY29ubiA9IGlzY3NpX2Nvbm5fbG9va3VwKGV2LT51LmJfY29ubi5jb25uX2hhbmRsZSk7CisJCXNlc3Npb24gPSBpc2NzaV9zZXNzaW9uX2xvb2t1cChldi0+dS5iX2Nvbm4uc2lkKTsKKwkJY29ubiA9IGlzY3NpX2Nvbm5fbG9va3VwKGV2LT51LmJfY29ubi5zaWQsIGV2LT51LmJfY29ubi5jaWQpOwogCiAJCWlmIChzZXNzaW9uICYmIGNvbm4pCiAJCQlldi0+ci5yZXRjb2RlID0JdHJhbnNwb3J0LT5iaW5kX2Nvbm4oc2Vzc2lvbiwgY29ubiwKLQkJCQkJZXYtPnUuYl9jb25uLnRyYW5zcG9ydF9mZCwKKwkJCQkJZXYtPnUuYl9jb25uLnRyYW5zcG9ydF9lcGgsCiAJCQkJCWV2LT51LmJfY29ubi5pc19sZWFkaW5nKTsKIAkJZWxzZQogCQkJZXJyID0gLUVJTlZBTDsKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9VRVZFTlRfU0VUX1BBUkFNOgotCQljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuc2V0X3BhcmFtLmNvbm5faGFuZGxlKTsKLQkJaWYgKGNvbm4pCi0JCQlldi0+ci5yZXRjb2RlID0JdHJhbnNwb3J0LT5zZXRfcGFyYW0oY29ubiwKLQkJCQlldi0+dS5zZXRfcGFyYW0ucGFyYW0sIGV2LT51LnNldF9wYXJhbS52YWx1ZSk7Ci0JCWVsc2UKLQkJCWVyciA9IC1FSU5WQUw7CisJCWVyciA9IGlzY3NpX3NldF9wYXJhbSh0cmFuc3BvcnQsIGV2KTsKIAkJYnJlYWs7CiAJY2FzZSBJU0NTSV9VRVZFTlRfU1RBUlRfQ09OTjoKLQkJY29ubiA9IGlzY3NpX2Nvbm5fbG9va3VwKGV2LT51LnN0YXJ0X2Nvbm4uY29ubl9oYW5kbGUpOworCQljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuc3RhcnRfY29ubi5zaWQsIGV2LT51LnN0YXJ0X2Nvbm4uY2lkKTsKIAkJaWYgKGNvbm4pCiAJCQlldi0+ci5yZXRjb2RlID0gdHJhbnNwb3J0LT5zdGFydF9jb25uKGNvbm4pOwogCQllbHNlCiAJCQllcnIgPSAtRUlOVkFMOwotCiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfVUVWRU5UX1NUT1BfQ09OTjoKLQkJY29ubiA9IGlzY3NpX2Nvbm5fbG9va3VwKGV2LT51LnN0b3BfY29ubi5jb25uX2hhbmRsZSk7CisJCWNvbm4gPSBpc2NzaV9jb25uX2xvb2t1cChldi0+dS5zdG9wX2Nvbm4uc2lkLCBldi0+dS5zdG9wX2Nvbm4uY2lkKTsKIAkJaWYgKGNvbm4pCiAJCQl0cmFuc3BvcnQtPnN0b3BfY29ubihjb25uLCBldi0+dS5zdG9wX2Nvbm4uZmxhZyk7CiAJCWVsc2UKIAkJCWVyciA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSVNDU0lfVUVWRU5UX1NFTkRfUERVOgotCQljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuc2VuZF9wZHUuY29ubl9oYW5kbGUpOworCQljb25uID0gaXNjc2lfY29ubl9sb29rdXAoZXYtPnUuc2VuZF9wZHUuc2lkLCBldi0+dS5zZW5kX3BkdS5jaWQpOwogCQlpZiAoY29ubikKIAkJCWV2LT5yLnJldGNvZGUgPQl0cmFuc3BvcnQtPnNlbmRfcGR1KGNvbm4sCiAJCQkJKHN0cnVjdCBpc2NzaV9oZHIqKSgoY2hhciopZXYgKyBzaXplb2YoKmV2KSksCkBAIC05MTQsNiArMTA2MCwxMSBAQAogCWNhc2UgSVNDU0lfVUVWRU5UX0dFVF9TVEFUUzoKIAkJZXJyID0gaXNjc2lfaWZfZ2V0X3N0YXRzKHRyYW5zcG9ydCwgbmxoKTsKIAkJYnJlYWs7CisJY2FzZSBJU0NTSV9VRVZFTlRfVFJBTlNQT1JUX0VQX0NPTk5FQ1Q6CisJY2FzZSBJU0NTSV9VRVZFTlRfVFJBTlNQT1JUX0VQX1BPTEw6CisJY2FzZSBJU0NTSV9VRVZFTlRfVFJBTlNQT1JUX0VQX0RJU0NPTk5FQ1Q6CisJCWVyciA9IGlzY3NpX2lmX3RyYW5zcG9ydF9lcCh0cmFuc3BvcnQsIGV2LCBubGgtPm5sbXNnX3R5cGUpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnIgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTkyMyw5ICsxMDc0LDExIEBACiAJcmV0dXJuIGVycjsKIH0KIAotLyogR2V0IG1lc3NhZ2UgZnJvbSBza2IgKGJhc2VkIG9uIHJ0bmV0bGlua19yY3Zfc2tiKS4gIEVhY2ggbWVzc2FnZSBpcwotICogcHJvY2Vzc2VkIGJ5IGlzY3NpX2lmX3JlY3ZfbXNnLiAgTWFsZm9ybWVkIHNrYnMgd2l0aCB3cm9uZyBsZW5ndGggYXJlCi0gKiBvciBpbnZhbGlkIGNyZWRzIGRpc2NhcmRlZCBzaWxlbnRseS4gICovCisvKgorICogR2V0IG1lc3NhZ2UgZnJvbSBza2IgKGJhc2VkIG9uIHJ0bmV0bGlua19yY3Zfc2tiKS4gIEVhY2ggbWVzc2FnZSBpcworICogcHJvY2Vzc2VkIGJ5IGlzY3NpX2lmX3JlY3ZfbXNnLiAgTWFsZm9ybWVkIHNrYnMgd2l0aCB3cm9uZyBsZW5ndGhzIG9yCisgKiBpbnZhbGlkIGNyZWRzIGFyZSBkaXNjYXJkZWQgc2lsZW50bHkuCisgKi8KIHN0YXRpYyB2b2lkCiBpc2NzaV9pZl9yeChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4pCiB7CkBAIC05MzcsNyArMTA5MCw2IEBACiAJCQlza2JfcHVsbChza2IsIHNrYi0+bGVuKTsKIAkJCWdvdG8gZnJlZV9za2I7CiAJCX0KLQkJZGFlbW9uX3BpZCA9IE5FVExJTktfQ1JFRFMoc2tiKS0+cGlkOwogCiAJCXdoaWxlIChza2ItPmxlbiA+PSBOTE1TR19TUEFDRSgwKSkgewogCQkJaW50IGVycjsKQEAgLTk4OCw2ICsxMTQwLDEwIEBACiAjZGVmaW5lIGlzY3NpX2NkZXZfdG9fY29ubihfY2RldikgXAogCWlzY3NpX2Rldl90b19jb25uKF9jZGV2LT5kZXYpCiAKKyNkZWZpbmUgSVNDU0lfQ0xBU1NfQVRUUihfcHJlZml4LF9uYW1lLF9tb2RlLF9zaG93LF9zdG9yZSkJCVwKK3N0cnVjdCBjbGFzc19kZXZpY2VfYXR0cmlidXRlIGNsYXNzX2RldmljZV9hdHRyXyMjX3ByZWZpeCMjXyMjX25hbWUgPQlcCisJX19BVFRSKF9uYW1lLF9tb2RlLF9zaG93LF9zdG9yZSkKKwogLyoKICAqIGlTQ1NJIGNvbm5lY3Rpb24gYXR0cnMKICAqLwpAQCAtMTAwNSw3ICsxMTYxLDggQEAKIAogI2RlZmluZSBpc2NzaV9jb25uX2ludF9hdHRyKGZpZWxkLCBwYXJhbSwgZm9ybWF0KQkJCVwKIAlpc2NzaV9jb25uX2ludF9hdHRyX3Nob3cocGFyYW0sIGZvcm1hdCkJCQkJXAotc3RhdGljIENMQVNTX0RFVklDRV9BVFRSKGZpZWxkLCBTX0lSVUdPLCBzaG93X2Nvbm5faW50X3BhcmFtXyMjcGFyYW0sIE5VTEwpOworc3RhdGljIElTQ1NJX0NMQVNTX0FUVFIoY29ubiwgZmllbGQsIFNfSVJVR08sIHNob3dfY29ubl9pbnRfcGFyYW1fIyNwYXJhbSwgXAorCQkJTlVMTCk7CiAKIGlzY3NpX2Nvbm5faW50X2F0dHIobWF4X3JlY3ZfZGxlbmd0aCwgSVNDU0lfUEFSQU1fTUFYX1JFQ1ZfRExFTkdUSCwgIiV1Iik7CiBpc2NzaV9jb25uX2ludF9hdHRyKG1heF94bWl0X2RsZW5ndGgsIElTQ1NJX1BBUkFNX01BWF9YTUlUX0RMRU5HVEgsICIldSIpOwpAQCAtMTAxMyw2ICsxMTcwLDI2IEBACiBpc2NzaV9jb25uX2ludF9hdHRyKGRhdGFfZGlnZXN0LCBJU0NTSV9QQVJBTV9EQVRBREdTVF9FTiwgIiVkIik7CiBpc2NzaV9jb25uX2ludF9hdHRyKGlmbWFya2VyLCBJU0NTSV9QQVJBTV9JRk1BUktFUl9FTiwgIiVkIik7CiBpc2NzaV9jb25uX2ludF9hdHRyKG9mbWFya2VyLCBJU0NTSV9QQVJBTV9PRk1BUktFUl9FTiwgIiVkIik7Citpc2NzaV9jb25uX2ludF9hdHRyKHBlcnNpc3RlbnRfcG9ydCwgSVNDU0lfUEFSQU1fUEVSU0lTVEVOVF9QT1JULCAiJWQiKTsKK2lzY3NpX2Nvbm5faW50X2F0dHIocG9ydCwgSVNDU0lfUEFSQU1fQ09OTl9QT1JULCAiJWQiKTsKK2lzY3NpX2Nvbm5faW50X2F0dHIoZXhwX3N0YXRzbiwgSVNDU0lfUEFSQU1fRVhQX1NUQVRTTiwgIiV1Iik7CisKKyNkZWZpbmUgaXNjc2lfY29ubl9zdHJfYXR0cl9zaG93KHBhcmFtKQkJCQkJXAorc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKK3Nob3dfY29ubl9zdHJfcGFyYW1fIyNwYXJhbShzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjZGV2LCBjaGFyICpidWYpCVwKK3sJCQkJCQkJCQlcCisJc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uID0gaXNjc2lfY2Rldl90b19jb25uKGNkZXYpOwkJXAorCXN0cnVjdCBpc2NzaV90cmFuc3BvcnQgKnQgPSBjb25uLT50cmFuc3BvcnQ7CQkJXAorCXJldHVybiB0LT5nZXRfY29ubl9zdHJfcGFyYW0oY29ubiwgcGFyYW0sIGJ1Zik7CQkJXAorfQorCisjZGVmaW5lIGlzY3NpX2Nvbm5fc3RyX2F0dHIoZmllbGQsIHBhcmFtKQkJCQlcCisJaXNjc2lfY29ubl9zdHJfYXR0cl9zaG93KHBhcmFtKQkJCQkJXAorc3RhdGljIElTQ1NJX0NMQVNTX0FUVFIoY29ubiwgZmllbGQsIFNfSVJVR08sIHNob3dfY29ubl9zdHJfcGFyYW1fIyNwYXJhbSwgXAorCQkJTlVMTCk7CisKK2lzY3NpX2Nvbm5fc3RyX2F0dHIocGVyc2lzdGVudF9hZGRyZXNzLCBJU0NTSV9QQVJBTV9QRVJTSVNURU5UX0FERFJFU1MpOworaXNjc2lfY29ubl9zdHJfYXR0cihhZGRyZXNzLCBJU0NTSV9QQVJBTV9DT05OX0FERFJFU1MpOwogCiAjZGVmaW5lIGlzY3NpX2NkZXZfdG9fc2Vzc2lvbihfY2RldikgXAogCWlzY3NpX2Rldl90b19zZXNzaW9uKF9jZGV2LT5kZXYpCkBAIC0xMDM0LDcgKzEyMTEsOCBAQAogCiAjZGVmaW5lIGlzY3NpX3Nlc3Npb25faW50X2F0dHIoZmllbGQsIHBhcmFtLCBmb3JtYXQpCQkJXAogCWlzY3NpX3Nlc3Npb25faW50X2F0dHJfc2hvdyhwYXJhbSwgZm9ybWF0KQkJCVwKLXN0YXRpYyBDTEFTU19ERVZJQ0VfQVRUUihmaWVsZCwgU19JUlVHTywgc2hvd19zZXNzaW9uX2ludF9wYXJhbV8jI3BhcmFtLCBOVUxMKTsKK3N0YXRpYyBJU0NTSV9DTEFTU19BVFRSKHNlc3MsIGZpZWxkLCBTX0lSVUdPLCBzaG93X3Nlc3Npb25faW50X3BhcmFtXyMjcGFyYW0sIFwKKwkJCU5VTEwpOwogCiBpc2NzaV9zZXNzaW9uX2ludF9hdHRyKGluaXRpYWxfcjJ0LCBJU0NTSV9QQVJBTV9JTklUSUFMX1IyVF9FTiwgIiVkIik7CiBpc2NzaV9zZXNzaW9uX2ludF9hdHRyKG1heF9vdXRzdGFuZGluZ19yMnQsIElTQ1NJX1BBUkFNX01BWF9SMlQsICIlaHUiKTsKQEAgLTEwNDQsMTggKzEyMjIsODkgQEAKIGlzY3NpX3Nlc3Npb25faW50X2F0dHIoZGF0YV9wZHVfaW5fb3JkZXIsIElTQ1NJX1BBUkFNX1BEVV9JTk9SREVSX0VOLCAiJWQiKTsKIGlzY3NpX3Nlc3Npb25faW50X2F0dHIoZGF0YV9zZXFfaW5fb3JkZXIsIElTQ1NJX1BBUkFNX0RBVEFTRVFfSU5PUkRFUl9FTiwgIiVkIik7CiBpc2NzaV9zZXNzaW9uX2ludF9hdHRyKGVybCwgSVNDU0lfUEFSQU1fRVJMLCAiJWQiKTsKK2lzY3NpX3Nlc3Npb25faW50X2F0dHIodHBndCwgSVNDU0lfUEFSQU1fVFBHVCwgIiVkIik7CiAKLSNkZWZpbmUgU0VUVVBfU0VTU0lPTl9SRF9BVFRSKGZpZWxkLCBwYXJhbSkJCQkJXAotCWlmIChwcml2LT5wYXJhbV9tYXNrICYgKDEgPDwgcGFyYW0pKSB7CQkJCVwKLQkJcHJpdi0+c2Vzc2lvbl9hdHRyc1tjb3VudF0gPSAmY2xhc3NfZGV2aWNlX2F0dHJfIyNmaWVsZDtcCi0JCWNvdW50Kys7CQkJCQkJXAotCX0KKyNkZWZpbmUgaXNjc2lfc2Vzc2lvbl9zdHJfYXR0cl9zaG93KHBhcmFtKQkJCQlcCitzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAorc2hvd19zZXNzaW9uX3N0cl9wYXJhbV8jI3BhcmFtKHN0cnVjdCBjbGFzc19kZXZpY2UgKmNkZXYsIGNoYXIgKmJ1ZikJXAorewkJCQkJCQkJCVwKKwlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24gPSBpc2NzaV9jZGV2X3RvX3Nlc3Npb24oY2Rldik7IFwKKwlzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICp0ID0gc2Vzc2lvbi0+dHJhbnNwb3J0OwkJCVwKKwlyZXR1cm4gdC0+Z2V0X3Nlc3Npb25fc3RyX3BhcmFtKHNlc3Npb24sIHBhcmFtLCBidWYpOwkJXAorfQogCi0jZGVmaW5lIFNFVFVQX0NPTk5fUkRfQVRUUihmaWVsZCwgcGFyYW0pCQkJCVwKLQlpZiAocHJpdi0+cGFyYW1fbWFzayAmICgxIDw8IHBhcmFtKSkgewkJCQlcCi0JCXByaXYtPmNvbm5fYXR0cnNbY291bnRdID0gJmNsYXNzX2RldmljZV9hdHRyXyMjZmllbGQ7CVwKKyNkZWZpbmUgaXNjc2lfc2Vzc2lvbl9zdHJfYXR0cihmaWVsZCwgcGFyYW0pCQkJCVwKKwlpc2NzaV9zZXNzaW9uX3N0cl9hdHRyX3Nob3cocGFyYW0pCQkJCVwKK3N0YXRpYyBJU0NTSV9DTEFTU19BVFRSKHNlc3MsIGZpZWxkLCBTX0lSVUdPLCBzaG93X3Nlc3Npb25fc3RyX3BhcmFtXyMjcGFyYW0sIFwKKwkJCU5VTEwpOworCitpc2NzaV9zZXNzaW9uX3N0cl9hdHRyKHRhcmdldG5hbWUsIElTQ1NJX1BBUkFNX1RBUkdFVF9OQU1FKTsKKworLyoKKyAqIFByaXZhdGUgc2Vzc2lvbiBhbmQgY29ubiBhdHRycy4gdXNlcnNwYWNlIHVzZXMgc2V2ZXJhbCBpc2NzaSB2YWx1ZXMKKyAqIHRvIGlkZW50aWZ5IGVhY2ggc2Vzc2lvbiBiZXR3ZWVuIHJlYm9vdHMuIFNvbWUgb2YgdGhlc2UgdmFsdWVzIG1heSBub3QKKyAqIGJlIHByZXNlbnQgaW4gdGhlIGlzY3NpX3RyYW5zcG9ydC9MTEQgZHJpdmVyIGJlY3Vhc2UgdXNlcnNwYWNlIGhhbmRsZXMKKyAqIGxvZ2luIChhbmQgZmFpbGJhY2sgZm9yIGxvZ2luIHJlZGlyZWN0KSBzbyBmb3IgdGhlc2UgdHlwZSBvZiBkcml2ZXJzCisgKiB0aGUgY2xhc3MgbWFuYWdlcyB0aGUgYXR0cnMgYW5kIHZhbHVlcyBmb3IgdGhlIGlzY3NpX3RyYW5zcG9ydC9MTEQKKyAqLworI2RlZmluZSBpc2NzaV9wcml2X3Nlc3Npb25fYXR0cl9zaG93KGZpZWxkLCBmb3JtYXQpCQkJXAorc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKK3Nob3dfcHJpdl9zZXNzaW9uXyMjZmllbGQoc3RydWN0IGNsYXNzX2RldmljZSAqY2RldiwgY2hhciAqYnVmKQlcCit7CQkJCQkJCQkJXAorCXN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbiA9IGlzY3NpX2NkZXZfdG9fc2Vzc2lvbihjZGV2KTsgXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgZm9ybWF0IlxuIiwgc2Vzc2lvbi0+ZmllbGQpOwkJXAorfQorCisjZGVmaW5lIGlzY3NpX3ByaXZfc2Vzc2lvbl9hdHRyKGZpZWxkLCBmb3JtYXQpCQkJCVwKKwlpc2NzaV9wcml2X3Nlc3Npb25fYXR0cl9zaG93KGZpZWxkLCBmb3JtYXQpCQkJXAorc3RhdGljIElTQ1NJX0NMQVNTX0FUVFIocHJpdl9zZXNzLCBmaWVsZCwgU19JUlVHTywgc2hvd19wcml2X3Nlc3Npb25fIyNmaWVsZCwgXAorCQkJTlVMTCkKK2lzY3NpX3ByaXZfc2Vzc2lvbl9hdHRyKHRhcmdldG5hbWUsICIlcyIpOworaXNjc2lfcHJpdl9zZXNzaW9uX2F0dHIodHBndCwgIiVkIik7Citpc2NzaV9wcml2X3Nlc3Npb25fYXR0cihyZWNvdmVyeV90bW8sICIlZCIpOworCisjZGVmaW5lIGlzY3NpX3ByaXZfY29ubl9hdHRyX3Nob3coZmllbGQsIGZvcm1hdCkJCQlcCitzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAorc2hvd19wcml2X2Nvbm5fIyNmaWVsZChzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjZGV2LCBjaGFyICpidWYpCQlcCit7CQkJCQkJCQkJXAorCXN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiA9IGlzY3NpX2NkZXZfdG9fY29ubihjZGV2KTsJCVwKKwlyZXR1cm4gc3ByaW50ZihidWYsIGZvcm1hdCJcbiIsIGNvbm4tPmZpZWxkKTsJCQlcCit9CisKKyNkZWZpbmUgaXNjc2lfcHJpdl9jb25uX2F0dHIoZmllbGQsIGZvcm1hdCkJCQkJXAorCWlzY3NpX3ByaXZfY29ubl9hdHRyX3Nob3coZmllbGQsIGZvcm1hdCkJCQlcCitzdGF0aWMgSVNDU0lfQ0xBU1NfQVRUUihwcml2X2Nvbm4sIGZpZWxkLCBTX0lSVUdPLCBzaG93X3ByaXZfY29ubl8jI2ZpZWxkLCBcCisJCQlOVUxMKQoraXNjc2lfcHJpdl9jb25uX2F0dHIocGVyc2lzdGVudF9hZGRyZXNzLCAiJXMiKTsKK2lzY3NpX3ByaXZfY29ubl9hdHRyKHBlcnNpc3RlbnRfcG9ydCwgIiVkIik7CisKKyNkZWZpbmUgU0VUVVBfUFJJVl9TRVNTSU9OX1JEX0FUVFIoZmllbGQpCQkJCVwKK2RvIHsJCQkJCQkJCQlcCisJcHJpdi0+c2Vzc2lvbl9hdHRyc1tjb3VudF0gPSAmY2xhc3NfZGV2aWNlX2F0dHJfcHJpdl9zZXNzXyMjZmllbGQ7IFwKKwljb3VudCsrOwkJCQkJCQlcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIFNFVFVQX1NFU1NJT05fUkRfQVRUUihmaWVsZCwgcGFyYW1fZmxhZykJCQlcCitkbyB7CQkJCQkJCQkJXAorCWlmICh0dC0+cGFyYW1fbWFzayAmIHBhcmFtX2ZsYWcpIHsJCQkJXAorCQlwcml2LT5zZXNzaW9uX2F0dHJzW2NvdW50XSA9ICZjbGFzc19kZXZpY2VfYXR0cl9zZXNzXyMjZmllbGQ7IFwKIAkJY291bnQrKzsJCQkJCQlcCi0JfQorCX0JCQkJCQkJCVwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgU0VUVVBfUFJJVl9DT05OX1JEX0FUVFIoZmllbGQpCQkJCQlcCitkbyB7CQkJCQkJCQkJXAorCXByaXYtPmNvbm5fYXR0cnNbY291bnRdID0gJmNsYXNzX2RldmljZV9hdHRyX3ByaXZfY29ubl8jI2ZpZWxkOyBcCisJY291bnQrKzsJCQkJCQkJXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBTRVRVUF9DT05OX1JEX0FUVFIoZmllbGQsIHBhcmFtX2ZsYWcpCQkJCVwKK2RvIHsJCQkJCQkJCQlcCisJaWYgKHR0LT5wYXJhbV9tYXNrICYgcGFyYW1fZmxhZykgewkJCQlcCisJCXByaXYtPmNvbm5fYXR0cnNbY291bnRdID0gJmNsYXNzX2RldmljZV9hdHRyX2Nvbm5fIyNmaWVsZDsgXAorCQljb3VudCsrOwkJCQkJCVwKKwl9CQkJCQkJCQlcCit9IHdoaWxlICgwKQogCiBzdGF0aWMgaW50IGlzY3NpX3Nlc3Npb25fbWF0Y2goc3RydWN0IGF0dHJpYnV0ZV9jb250YWluZXIgKmNvbnQsCiAJCQkgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCkBAIC0xMTA0LDYgKzEzNTMsMjQgQEAKIAlyZXR1cm4gJnByaXYtPmNvbm5fY29udC5hYyA9PSBjb250OwogfQogCitzdGF0aWMgaW50IGlzY3NpX2hvc3RfbWF0Y2goc3RydWN0IGF0dHJpYnV0ZV9jb250YWluZXIgKmNvbnQsCisJCQkgICAgc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0OworCXN0cnVjdCBpc2NzaV9pbnRlcm5hbCAqcHJpdjsKKworCWlmICghc2NzaV9pc19ob3N0X2RldmljZShkZXYpKQorCQlyZXR1cm4gMDsKKworCXNob3N0ID0gZGV2X3RvX3Nob3N0KGRldik7CisJaWYgKCFzaG9zdC0+dHJhbnNwb3J0dCAgfHwKKwkgICAgc2hvc3QtPnRyYW5zcG9ydHQtPmhvc3RfYXR0cnMuYWMuY2xhc3MgIT0gJmlzY3NpX2hvc3RfY2xhc3MuY2xhc3MpCisJCXJldHVybiAwOworCisgICAgICAgIHByaXYgPSB0b19pc2NzaV9pbnRlcm5hbChzaG9zdC0+dHJhbnNwb3J0dCk7CisgICAgICAgIHJldHVybiAmcHJpdi0+dC5ob3N0X2F0dHJzLmFjID09IGNvbnQ7Cit9CisKIHN0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSAqCiBpc2NzaV9yZWdpc3Rlcl90cmFuc3BvcnQoc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHQpCiB7CkBAIC0xMTIyLDYgKzEzODksNyBAQAogCQlyZXR1cm4gTlVMTDsKIAlJTklUX0xJU1RfSEVBRCgmcHJpdi0+bGlzdCk7CiAJcHJpdi0+aXNjc2lfdHJhbnNwb3J0ID0gdHQ7CisJcHJpdi0+dC51c2VyX3NjYW4gPSBpc2NzaV91c2VyX3NjYW47CiAKIAlwcml2LT5jZGV2LmNsYXNzID0gJmlzY3NpX3RyYW5zcG9ydF9jbGFzczsKIAlzbnByaW50Zihwcml2LT5jZGV2LmNsYXNzX2lkLCBCVVNfSURfU0laRSwgIiVzIiwgdHQtPm5hbWUpOwpAQCAtMTEzMywxOCArMTQwMSwxMyBAQAogCWlmIChlcnIpCiAJCWdvdG8gdW5yZWdpc3Rlcl9jZGV2OwogCi0JLyogc2V0dXAgcGFyYW1ldGVycyBtYXNrICovCi0JcHJpdi0+cGFyYW1fbWFzayA9IDB4RkZGRkZGRkY7Ci0JaWYgKCEodHQtPmNhcHMgJiBDQVBfTVVMVElfUjJUKSkKLQkJcHJpdi0+cGFyYW1fbWFzayAmPSB+KDEgPDwgSVNDU0lfUEFSQU1fTUFYX1IyVCk7Ci0JaWYgKCEodHQtPmNhcHMgJiBDQVBfSERSREdTVCkpCi0JCXByaXYtPnBhcmFtX21hc2sgJj0gfigxIDw8IElTQ1NJX1BBUkFNX0hEUkRHU1RfRU4pOwotCWlmICghKHR0LT5jYXBzICYgQ0FQX0RBVEFER1NUKSkKLQkJcHJpdi0+cGFyYW1fbWFzayAmPSB+KDEgPDwgSVNDU0lfUEFSQU1fREFUQURHU1RfRU4pOwotCWlmICghKHR0LT5jYXBzICYgQ0FQX01BUktFUlMpKSB7Ci0JCXByaXYtPnBhcmFtX21hc2sgJj0gfigxIDw8IElTQ1NJX1BBUkFNX0lGTUFSS0VSX0VOKTsKLQkJcHJpdi0+cGFyYW1fbWFzayAmPSB+KDEgPDwgSVNDU0lfUEFSQU1fT0ZNQVJLRVJfRU4pOwotCX0KKwkvKiBob3N0IHBhcmFtZXRlcnMgKi8KKwlwcml2LT50Lmhvc3RfYXR0cnMuYWMuYXR0cnMgPSAmcHJpdi0+aG9zdF9hdHRyc1swXTsKKwlwcml2LT50Lmhvc3RfYXR0cnMuYWMuY2xhc3MgPSAmaXNjc2lfaG9zdF9jbGFzcy5jbGFzczsKKwlwcml2LT50Lmhvc3RfYXR0cnMuYWMubWF0Y2ggPSBpc2NzaV9ob3N0X21hdGNoOworCXByaXYtPnQuaG9zdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpc2NzaV9ob3N0KTsKKwlwcml2LT5ob3N0X2F0dHJzWzBdID0gTlVMTDsKKwl0cmFuc3BvcnRfY29udGFpbmVyX3JlZ2lzdGVyKCZwcml2LT50Lmhvc3RfYXR0cnMpOwogCiAJLyogY29ubmVjdGlvbiBwYXJhbWV0ZXJzICovCiAJcHJpdi0+Y29ubl9jb250LmFjLmF0dHJzID0gJnByaXYtPmNvbm5fYXR0cnNbMF07CkBAIC0xMTUyLDEyICsxNDE1LDI1IEBACiAJcHJpdi0+Y29ubl9jb250LmFjLm1hdGNoID0gaXNjc2lfY29ubl9tYXRjaDsKIAl0cmFuc3BvcnRfY29udGFpbmVyX3JlZ2lzdGVyKCZwcml2LT5jb25uX2NvbnQpOwogCi0JU0VUVVBfQ09OTl9SRF9BVFRSKG1heF9yZWN2X2RsZW5ndGgsIElTQ1NJX1BBUkFNX01BWF9SRUNWX0RMRU5HVEgpOwotCVNFVFVQX0NPTk5fUkRfQVRUUihtYXhfeG1pdF9kbGVuZ3RoLCBJU0NTSV9QQVJBTV9NQVhfWE1JVF9ETEVOR1RIKTsKLQlTRVRVUF9DT05OX1JEX0FUVFIoaGVhZGVyX2RpZ2VzdCwgSVNDU0lfUEFSQU1fSERSREdTVF9FTik7Ci0JU0VUVVBfQ09OTl9SRF9BVFRSKGRhdGFfZGlnZXN0LCBJU0NTSV9QQVJBTV9EQVRBREdTVF9FTik7Ci0JU0VUVVBfQ09OTl9SRF9BVFRSKGlmbWFya2VyLCBJU0NTSV9QQVJBTV9JRk1BUktFUl9FTik7Ci0JU0VUVVBfQ09OTl9SRF9BVFRSKG9mbWFya2VyLCBJU0NTSV9QQVJBTV9PRk1BUktFUl9FTik7CisJU0VUVVBfQ09OTl9SRF9BVFRSKG1heF9yZWN2X2RsZW5ndGgsIElTQ1NJX01BWF9SRUNWX0RMRU5HVEgpOworCVNFVFVQX0NPTk5fUkRfQVRUUihtYXhfeG1pdF9kbGVuZ3RoLCBJU0NTSV9NQVhfWE1JVF9ETEVOR1RIKTsKKwlTRVRVUF9DT05OX1JEX0FUVFIoaGVhZGVyX2RpZ2VzdCwgSVNDU0lfSERSREdTVF9FTik7CisJU0VUVVBfQ09OTl9SRF9BVFRSKGRhdGFfZGlnZXN0LCBJU0NTSV9EQVRBREdTVF9FTik7CisJU0VUVVBfQ09OTl9SRF9BVFRSKGlmbWFya2VyLCBJU0NTSV9JRk1BUktFUl9FTik7CisJU0VUVVBfQ09OTl9SRF9BVFRSKG9mbWFya2VyLCBJU0NTSV9PRk1BUktFUl9FTik7CisJU0VUVVBfQ09OTl9SRF9BVFRSKGFkZHJlc3MsIElTQ1NJX0NPTk5fQUREUkVTUyk7CisJU0VUVVBfQ09OTl9SRF9BVFRSKHBvcnQsIElTQ1NJX0NPTk5fUE9SVCk7CisJU0VUVVBfQ09OTl9SRF9BVFRSKGV4cF9zdGF0c24sIElTQ1NJX0VYUF9TVEFUU04pOworCisJaWYgKHR0LT5wYXJhbV9tYXNrICYgSVNDU0lfUEVSU0lTVEVOVF9BRERSRVNTKQorCQlTRVRVUF9DT05OX1JEX0FUVFIocGVyc2lzdGVudF9hZGRyZXNzLCBJU0NTSV9QRVJTSVNURU5UX0FERFJFU1MpOworCWVsc2UKKwkJU0VUVVBfUFJJVl9DT05OX1JEX0FUVFIocGVyc2lzdGVudF9hZGRyZXNzKTsKKworCWlmICh0dC0+cGFyYW1fbWFzayAmIElTQ1NJX1BFUlNJU1RFTlRfUE9SVCkKKwkJU0VUVVBfQ09OTl9SRF9BVFRSKHBlcnNpc3RlbnRfcG9ydCwgSVNDU0lfUEVSU0lTVEVOVF9QT1JUKTsKKwllbHNlCisJCVNFVFVQX1BSSVZfQ09OTl9SRF9BVFRSKHBlcnNpc3RlbnRfcG9ydCk7CiAKIAlCVUdfT04oY291bnQgPiBJU0NTSV9DT05OX0FUVFJTKTsKIAlwcml2LT5jb25uX2F0dHJzW2NvdW50XSA9IE5VTEw7CkBAIC0xMTY5LDE0ICsxNDQ1LDI1IEBACiAJcHJpdi0+c2Vzc2lvbl9jb250LmFjLm1hdGNoID0gaXNjc2lfc2Vzc2lvbl9tYXRjaDsKIAl0cmFuc3BvcnRfY29udGFpbmVyX3JlZ2lzdGVyKCZwcml2LT5zZXNzaW9uX2NvbnQpOwogCi0JU0VUVVBfU0VTU0lPTl9SRF9BVFRSKGluaXRpYWxfcjJ0LCBJU0NTSV9QQVJBTV9JTklUSUFMX1IyVF9FTik7Ci0JU0VUVVBfU0VTU0lPTl9SRF9BVFRSKG1heF9vdXRzdGFuZGluZ19yMnQsIElTQ1NJX1BBUkFNX01BWF9SMlQpOwotCVNFVFVQX1NFU1NJT05fUkRfQVRUUihpbW1lZGlhdGVfZGF0YSwgSVNDU0lfUEFSQU1fSU1NX0RBVEFfRU4pOwotCVNFVFVQX1NFU1NJT05fUkRfQVRUUihmaXJzdF9idXJzdF9sZW4sIElTQ1NJX1BBUkFNX0ZJUlNUX0JVUlNUKTsKLQlTRVRVUF9TRVNTSU9OX1JEX0FUVFIobWF4X2J1cnN0X2xlbiwgSVNDU0lfUEFSQU1fTUFYX0JVUlNUKTsKLQlTRVRVUF9TRVNTSU9OX1JEX0FUVFIoZGF0YV9wZHVfaW5fb3JkZXIsIElTQ1NJX1BBUkFNX1BEVV9JTk9SREVSX0VOKTsKLQlTRVRVUF9TRVNTSU9OX1JEX0FUVFIoZGF0YV9zZXFfaW5fb3JkZXIsSVNDU0lfUEFSQU1fREFUQVNFUV9JTk9SREVSX0VOKQotCVNFVFVQX1NFU1NJT05fUkRfQVRUUihlcmwsIElTQ1NJX1BBUkFNX0VSTCk7CisJU0VUVVBfU0VTU0lPTl9SRF9BVFRSKGluaXRpYWxfcjJ0LCBJU0NTSV9JTklUSUFMX1IyVF9FTik7CisJU0VUVVBfU0VTU0lPTl9SRF9BVFRSKG1heF9vdXRzdGFuZGluZ19yMnQsIElTQ1NJX01BWF9SMlQpOworCVNFVFVQX1NFU1NJT05fUkRfQVRUUihpbW1lZGlhdGVfZGF0YSwgSVNDU0lfSU1NX0RBVEFfRU4pOworCVNFVFVQX1NFU1NJT05fUkRfQVRUUihmaXJzdF9idXJzdF9sZW4sIElTQ1NJX0ZJUlNUX0JVUlNUKTsKKwlTRVRVUF9TRVNTSU9OX1JEX0FUVFIobWF4X2J1cnN0X2xlbiwgSVNDU0lfTUFYX0JVUlNUKTsKKwlTRVRVUF9TRVNTSU9OX1JEX0FUVFIoZGF0YV9wZHVfaW5fb3JkZXIsIElTQ1NJX1BEVV9JTk9SREVSX0VOKTsKKwlTRVRVUF9TRVNTSU9OX1JEX0FUVFIoZGF0YV9zZXFfaW5fb3JkZXIsIElTQ1NJX0RBVEFTRVFfSU5PUkRFUl9FTik7CisJU0VUVVBfU0VTU0lPTl9SRF9BVFRSKGVybCwgSVNDU0lfRVJMKTsKKwlTRVRVUF9QUklWX1NFU1NJT05fUkRfQVRUUihyZWNvdmVyeV90bW8pOworCisJaWYgKHR0LT5wYXJhbV9tYXNrICYgSVNDU0lfVEFSR0VUX05BTUUpCisJCVNFVFVQX1NFU1NJT05fUkRfQVRUUih0YXJnZXRuYW1lLCBJU0NTSV9UQVJHRVRfTkFNRSk7CisJZWxzZQorCQlTRVRVUF9QUklWX1NFU1NJT05fUkRfQVRUUih0YXJnZXRuYW1lKTsKKworCWlmICh0dC0+cGFyYW1fbWFzayAmIElTQ1NJX1RQR1QpCisJCVNFVFVQX1NFU1NJT05fUkRfQVRUUih0cGd0LCBJU0NTSV9UUEdUKTsKKwllbHNlCisJCVNFVFVQX1BSSVZfU0VTU0lPTl9SRF9BVFRSKHRwZ3QpOwogCiAJQlVHX09OKGNvdW50ID4gSVNDU0lfU0VTU0lPTl9BVFRSUyk7CiAJcHJpdi0+c2Vzc2lvbl9hdHRyc1tjb3VudF0gPSBOVUxMOwpAQCAtMTIxNCw2ICsxNTAxLDcgQEAKIAogCXRyYW5zcG9ydF9jb250YWluZXJfdW5yZWdpc3RlcigmcHJpdi0+Y29ubl9jb250KTsKIAl0cmFuc3BvcnRfY29udGFpbmVyX3VucmVnaXN0ZXIoJnByaXYtPnNlc3Npb25fY29udCk7CisJdHJhbnNwb3J0X2NvbnRhaW5lcl91bnJlZ2lzdGVyKCZwcml2LT50Lmhvc3RfYXR0cnMpOwogCiAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwcml2LT5jZGV2LmtvYmosICZpc2NzaV90cmFuc3BvcnRfZ3JvdXApOwogCWNsYXNzX2RldmljZV91bnJlZ2lzdGVyKCZwcml2LT5jZGV2KTsKQEAgLTEyNTcsMTAgKzE1NDUsMTQgQEAKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gdHJhbnNwb3J0X2NsYXNzX3JlZ2lzdGVyKCZpc2NzaV9jb25uZWN0aW9uX2NsYXNzKTsKKwllcnIgPSB0cmFuc3BvcnRfY2xhc3NfcmVnaXN0ZXIoJmlzY3NpX2hvc3RfY2xhc3MpOwogCWlmIChlcnIpCiAJCWdvdG8gdW5yZWdpc3Rlcl90cmFuc3BvcnRfY2xhc3M7CiAKKwllcnIgPSB0cmFuc3BvcnRfY2xhc3NfcmVnaXN0ZXIoJmlzY3NpX2Nvbm5lY3Rpb25fY2xhc3MpOworCWlmIChlcnIpCisJCWdvdG8gdW5yZWdpc3Rlcl9ob3N0X2NsYXNzOworCiAJZXJyID0gdHJhbnNwb3J0X2NsYXNzX3JlZ2lzdGVyKCZpc2NzaV9zZXNzaW9uX2NsYXNzKTsKIAlpZiAoZXJyKQogCQlnb3RvIHVucmVnaXN0ZXJfY29ubl9jbGFzczsKQEAgLTEyODgsNiArMTU4MCw4IEBACiAJdHJhbnNwb3J0X2NsYXNzX3VucmVnaXN0ZXIoJmlzY3NpX3Nlc3Npb25fY2xhc3MpOwogdW5yZWdpc3Rlcl9jb25uX2NsYXNzOgogCXRyYW5zcG9ydF9jbGFzc191bnJlZ2lzdGVyKCZpc2NzaV9jb25uZWN0aW9uX2NsYXNzKTsKK3VucmVnaXN0ZXJfaG9zdF9jbGFzczoKKwl0cmFuc3BvcnRfY2xhc3NfdW5yZWdpc3RlcigmaXNjc2lfaG9zdF9jbGFzcyk7CiB1bnJlZ2lzdGVyX3RyYW5zcG9ydF9jbGFzczoKIAljbGFzc191bnJlZ2lzdGVyKCZpc2NzaV90cmFuc3BvcnRfY2xhc3MpOwogCXJldHVybiBlcnI7CkBAIC0xMzAwLDYgKzE1OTQsNyBAQAogCW5ldGxpbmtfdW5yZWdpc3Rlcl9ub3RpZmllcigmaXNjc2lfbmxfbm90aWZpZXIpOwogCXRyYW5zcG9ydF9jbGFzc191bnJlZ2lzdGVyKCZpc2NzaV9jb25uZWN0aW9uX2NsYXNzKTsKIAl0cmFuc3BvcnRfY2xhc3NfdW5yZWdpc3RlcigmaXNjc2lfc2Vzc2lvbl9jbGFzcyk7CisJdHJhbnNwb3J0X2NsYXNzX3VucmVnaXN0ZXIoJmlzY3NpX2hvc3RfY2xhc3MpOwogCWNsYXNzX3VucmVnaXN0ZXIoJmlzY3NpX3RyYW5zcG9ydF9jbGFzcyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zYXMuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zYXMuYwppbmRleCBmM2IxNjA2Li4xZmU2YjJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc2FzLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3Nhcy5jCkBAIC02NSw3ICs2NSw3IEBACiAJc3NpemVfdCBsZW4gPSAwOwkJCQkJXAogCWludCBpOwkJCQkJCQlcCiAJCQkJCQkJCVwKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRhYmxlKS9zaXplb2YodGFibGVbMF0pOyBpKyspIHsJXAorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRhYmxlKTsgaSsrKSB7CQlcCiAJCWlmICh0YWJsZVtpXS52YWx1ZSAmIHRhYmxlX2tleSkgewkJXAogCQkJbGVuICs9IHNwcmludGYoYnVmICsgbGVuLCAiJXMlcyIsCVwKIAkJCQlwcmVmaXgsIHRhYmxlW2ldLm5hbWUpOwkJXApAQCAtODMsNyArODMsNyBAQAogCXNzaXplX3QgbGVuID0gMDsJCQkJCVwKIAlpbnQgaTsJCQkJCQkJXAogCQkJCQkJCQlcCi0JZm9yIChpID0gMDsgaSA8IHNpemVvZih0YWJsZSkvc2l6ZW9mKHRhYmxlWzBdKTsgaSsrKSB7CVwKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0YWJsZSk7IGkrKykgewkJXAogCQlpZiAodGFibGVbaV0udmFsdWUgPT0gdGFibGVfa2V5KSB7CQlcCiAJCQlsZW4gKz0gc3ByaW50ZihidWYgKyBsZW4sICIlcyIsCQlcCiAJCQkJdGFibGVbaV0ubmFtZSk7CQkJXApAQCAtNzQ4LDYgKzc0OCwxOCBAQAogfQogCiAvKioKKyAqIHNhc19ycGh5X2luaXRpYWxpemUgLSBjb21tb24gcnBoeSBpbnRpYWxpemF0aW9uCisgKiBAcnBoeToJcnBoeSB0byBpbml0aWFsaXNlCisgKgorICogVXNlZCBieSBib3RoIHNhc19lbmRfZGV2aWNlX2FsbG9jKCkgYW5kIHNhc19leHBhbmRlcl9hbGxvYygpIHRvCisgKiBpbml0aWFsaXNlIHRoZSBjb21tb24gcnBoeSBjb21wb25lbnQgb2YgZWFjaC4KKyAqLworc3RhdGljIHZvaWQgc2FzX3JwaHlfaW5pdGlhbGl6ZShzdHJ1Y3Qgc2FzX3JwaHkgKnJwaHkpCit7CisJSU5JVF9MSVNUX0hFQUQoJnJwaHktPmxpc3QpOworfQorCisvKioKICAqIHNhc19lbmRfZGV2aWNlX2FsbG9jIC0gYWxsb2NhdGUgYW4gcnBoeSBmb3IgYW4gZW5kIGRldmljZQogICoKICAqIEFsbG9jYXRlcyBhbiBTQVMgcmVtb3RlIFBIWSBzdHJ1Y3R1cmUsIGNvbm5lY3RlZCB0byBAcGFyZW50LgpAQCAtNzcxLDYgKzc4Myw3IEBACiAJc3ByaW50ZihyZGV2LT5ycGh5LmRldi5idXNfaWQsICJlbmRfZGV2aWNlLSVkOiVkLSVkIiwKIAkJc2hvc3QtPmhvc3Rfbm8sIHBhcmVudC0+cG9ydF9pZGVudGlmaWVyLCBwYXJlbnQtPm51bWJlcik7CiAJcmRldi0+cnBoeS5pZGVudGlmeS5kZXZpY2VfdHlwZSA9IFNBU19FTkRfREVWSUNFOworCXNhc19ycGh5X2luaXRpYWxpemUoJnJkZXYtPnJwaHkpOwogCXRyYW5zcG9ydF9zZXR1cF9kZXZpY2UoJnJkZXYtPnJwaHkuZGV2KTsKIAogCXJldHVybiAmcmRldi0+cnBoeTsKQEAgLTgwOSw2ICs4MjIsNyBAQAogCXNwcmludGYocmRldi0+cnBoeS5kZXYuYnVzX2lkLCAiZXhwYW5kZXItJWQ6JWQiLAogCQlzaG9zdC0+aG9zdF9ubywgcmRldi0+cnBoeS5zY3NpX3RhcmdldF9pZCk7CiAJcmRldi0+cnBoeS5pZGVudGlmeS5kZXZpY2VfdHlwZSA9IHR5cGU7CisJc2FzX3JwaHlfaW5pdGlhbGl6ZSgmcmRldi0+cnBoeSk7CiAJdHJhbnNwb3J0X3NldHVwX2RldmljZSgmcmRldi0+cnBoeS5kZXYpOwogCiAJcmV0dXJuICZyZGV2LT5ycGh5OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NwaS5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NwaS5jCmluZGV4IDc4MGFhZWQuLmFjZTQ5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcGkuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3BpLmMKQEAgLTE0Niw3ICsxNDYsNyBAQAogewogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IHNpemVvZihzaWduYWxfdHlwZXMpL3NpemVvZihzaWduYWxfdHlwZXNbMF0pOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaWduYWxfdHlwZXMpOyBpKyspIHsKIAkJaWYgKHR5cGUgPT0gc2lnbmFsX3R5cGVzW2ldLnZhbHVlKQogCQkJcmV0dXJuIHNpZ25hbF90eXBlc1tpXS5uYW1lOwogCX0KQEAgLTE1Niw3ICsxNTYsNyBAQAogewogCWludCBpLCBsZW47CiAKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHNpZ25hbF90eXBlcykvc2l6ZW9mKHNpZ25hbF90eXBlc1swXSk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNpZ25hbF90eXBlcyk7IGkrKykgewogCQlsZW4gPSAgc3RybGVuKHNpZ25hbF90eXBlc1tpXS5uYW1lKTsKIAkJaWYgKHN0cm5jbXAobmFtZSwgc2lnbmFsX3R5cGVzW2ldLm5hbWUsIGxlbikgPT0gMCAmJgogCQkgICAgKG5hbWVbbGVuXSA9PSAnXG4nIHx8IG5hbWVbbGVuXSA9PSAnXDAnKSkKQEAgLTc4NSw2ICs3ODUsNyBAQAogewogCXN0cnVjdCBzcGlfaW50ZXJuYWwgKmkgPSB0b19zcGlfaW50ZXJuYWwoc2Rldi0+aG9zdC0+dHJhbnNwb3J0dCk7CiAJc3RydWN0IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0ID0gc2Rldi0+c2Rldl90YXJnZXQ7CisJc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QgPSBzZGV2LT5ob3N0OwogCWludCBsZW4gPSBzZGV2LT5pbnF1aXJ5X2xlbjsKIAkvKiBmaXJzdCBzZXQgdXMgdXAgZm9yIG5hcnJvdyBhc3luYyAqLwogCURWX1NFVChvZmZzZXQsIDApOwpAQCAtODQ0LDYgKzg0NSwxNCBAQAogCQlpZiAoc3BpX21pbl9wZXJpb2Qoc3RhcmdldCkgPT0gOCkKIAkJCURWX1NFVChwY29tcF9lbiwgMSk7CiAJfQorCS8qIG5vdyB0aGF0IHdlJ3ZlIGRvbmUgYWxsIHRoaXMsIGFjdHVhbGx5IGNoZWNrIHRoZSBidXMKKwkgKiBzaWduYWwgdHlwZSAoaWYga25vd24pLiAgU29tZSBkZXZpY2VzIGFyZSBzdHVwaWQgb24KKwkgKiBhIFNFIGJ1cyBhbmQgc3RpbGwgY2xhaW0gdGhleSBjYW4gdHJ5IExWRCBvbmx5IHNldHRpbmdzICovCisJaWYgKGktPmYtPmdldF9zaWduYWxsaW5nKQorCQlpLT5mLT5nZXRfc2lnbmFsbGluZyhzaG9zdCk7CisJaWYgKHNwaV9zaWduYWxsaW5nKHNob3N0KSA9PSBTUElfU0lHTkFMX1NFIHx8CisJICAgIHNwaV9zaWduYWxsaW5nKHNob3N0KSA9PSBTUElfU0lHTkFMX0hWRCkKKwkJRFZfU0VUKGR0LCAwKTsKIAkvKiBEbyB0aGUgcmVhZCBvbmx5IElOUVVJUlkgdGVzdHMgKi8KIAlzcGlfZHZfcmV0cmFpbihzZGV2LCBidWZmZXIsIGJ1ZmZlciArIHNkZXYtPmlucXVpcnlfbGVuLAogCQkgICAgICAgc3BpX2R2X2RldmljZV9jb21wYXJlX2lucXVpcnkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdHlwZWRlZnMuaCBiL2RyaXZlcnMvc2NzaS9zY3NpX3R5cGVkZWZzLmgKaW5kZXggMjlmMDM4Yi4uMmVkNGM1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdHlwZWRlZnMuaAorKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90eXBlZGVmcy5oCkBAIC0xLDMgKzEsMiBAQAogCiB0eXBlZGVmIHN0cnVjdCBzY3NpX2NtbmQgU2NzaV9DbW5kOwotdHlwZWRlZiBzdHJ1Y3Qgc2NzaV9yZXF1ZXN0IFNjc2lfUmVxdWVzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggYzY0N2Q4NS4uMzU0MTk5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMKKysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTE3NSw3ICsxNzUsNyBAQAogCQkgKiBpdCdzIG5vdCB3b3J0aCB0aGUgcmlzayAqLwogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2RfY2FjaGVfdHlwZXMpL3NpemVvZihzZF9jYWNoZV90eXBlc1swXSk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNkX2NhY2hlX3R5cGVzKTsgaSsrKSB7CiAJCWNvbnN0IGludCBsZW4gPSBzdHJsZW4oc2RfY2FjaGVfdHlwZXNbaV0pOwogCQlpZiAoc3RybmNtcChzZF9jYWNoZV90eXBlc1tpXSwgYnVmLCBsZW4pID09IDAgJiYKIAkJICAgIGJ1ZltsZW5dID09ICdcbicpIHsKQEAgLTg5MSw3ICs4OTEsNyBAQAogc3RhdGljIHZvaWQgc2RfcndfaW50cihzdHJ1Y3Qgc2NzaV9jbW5kICogU0NwbnQpCiB7CiAJaW50IHJlc3VsdCA9IFNDcG50LT5yZXN1bHQ7Ci0JaW50IHRoaXNfY291bnQgPSBTQ3BudC0+YnVmZmxlbjsKKwlpbnQgdGhpc19jb3VudCA9IFNDcG50LT5yZXF1ZXN0X2J1ZmZsZW47CiAJaW50IGdvb2RfYnl0ZXMgPSAocmVzdWx0ID09IDAgPyB0aGlzX2NvdW50IDogMCk7CiAJc2VjdG9yX3QgYmxvY2tfc2VjdG9ycyA9IDE7CiAJdTY0IGZpcnN0X2Vycl9ibG9jazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZWFnYXRlLmMgYi9kcml2ZXJzL3Njc2kvc2VhZ2F0ZS5jCmluZGV4IDBmZjgzZGQuLjdmYTRkYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZWFnYXRlLmMKKysrIGIvZHJpdmVycy9zY3NpL3NlYWdhdGUuYwpAQCAtMzEyLDcgKzMxMiw3IEBACiAJeyJJQk0gRjEgVjEuMjAwOS8yMi85MyIsIDUsIDI1LCBGRH0sCiB9OwogCi0jZGVmaW5lIE5VTV9TSUdOQVRVUkVTIChzaXplb2Yoc2lnbmF0dXJlcykgLyBzaXplb2YoU2lnbmF0dXJlKSkKKyNkZWZpbmUgTlVNX1NJR05BVFVSRVMgQVJSQVlfU0laRShzaWduYXR1cmVzKQogI2VuZGlmCQkJCS8qIG4gT1ZFUlJJREUgKi8KIAogLyoKQEAgLTQ1Nyw3ICs0NTcsNyBAQAogICogc3BhY2UgZm9yIHRoZSBvbi1ib2FyZCBSQU0gaW5zdGVhZC4KICAqLwogCi0JCWZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mIChzZWFnYXRlX2Jhc2VzKSAvIHNpemVvZiAodW5zaWduZWQgaW50KSk7ICsraSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzZWFnYXRlX2Jhc2VzKTsgKytpKSB7CiAJCQl2b2lkIF9faW9tZW0gKnAgPSBpb3JlbWFwKHNlYWdhdGVfYmFzZXNbaV0sIDB4MjAwMCk7CiAJCQlpZiAoIXApCiAJCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMvc2NzaS9zZy5jCmluZGV4IGIwOTg5NDIuLjk4YjkzMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zZy5jCkBAIC0yNjM1LDggKzI2MzUsNyBAQAogc2dfcHJvY19pbml0KHZvaWQpCiB7CiAJaW50IGssIG1hc2s7Ci0JaW50IG51bV9sZWF2ZXMgPQotCSAgICBzaXplb2YgKHNnX3Byb2NfbGVhZl9hcnIpIC8gc2l6ZW9mIChzZ19wcm9jX2xlYWZfYXJyWzBdKTsKKwlpbnQgbnVtX2xlYXZlcyA9IEFSUkFZX1NJWkUoc2dfcHJvY19sZWFmX2Fycik7CiAJc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwZGVwOwogCXN0cnVjdCBzZ19wcm9jX2xlYWYgKiBsZWFmOwogCkBAIC0yNjYxLDggKzI2NjAsNyBAQAogc2dfcHJvY19jbGVhbnVwKHZvaWQpCiB7CiAJaW50IGs7Ci0JaW50IG51bV9sZWF2ZXMgPQotCSAgICBzaXplb2YgKHNnX3Byb2NfbGVhZl9hcnIpIC8gc2l6ZW9mIChzZ19wcm9jX2xlYWZfYXJyWzBdKTsKKwlpbnQgbnVtX2xlYXZlcyA9IEFSUkFZX1NJWkUoc2dfcHJvY19sZWFmX2Fycik7CiAKIAlpZiAoIXNnX3Byb2Nfc2dwKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3IuYyBiL2RyaXZlcnMvc2NzaS9zci5jCmluZGV4IDdjODA3MTEuLmViZjY1NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zci5jCisrKyBiL2RyaXZlcnMvc2NzaS9zci5jCkBAIC0yMTcsNyArMjE3LDcgQEAKIHN0YXRpYyB2b2lkIHJ3X2ludHIoc3RydWN0IHNjc2lfY21uZCAqIFNDcG50KQogewogCWludCByZXN1bHQgPSBTQ3BudC0+cmVzdWx0OwotCWludCB0aGlzX2NvdW50ID0gU0NwbnQtPmJ1ZmZsZW47CisJaW50IHRoaXNfY291bnQgPSBTQ3BudC0+cmVxdWVzdF9idWZmbGVuOwogCWludCBnb29kX2J5dGVzID0gKHJlc3VsdCA9PSAwID8gdGhpc19jb3VudCA6IDApOwogCWludCBibG9ja19zZWN0b3JzID0gMDsKIAlsb25nIGVycm9yX3NlY3RvcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zdC5jIGIvZHJpdmVycy9zY3NpL3N0LmMKaW5kZXggNTZjYjQ5MC4uMTI3MmRkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N0LmMKKysrIGIvZHJpdmVycy9zY3NpL3N0LmMKQEAgLTExOTMsNyArMTE5Myw3IEBACiAMCiAKIC8qIEZsdXNoIHRoZSB0YXBlIGJ1ZmZlciBiZWZvcmUgY2xvc2UgKi8KLXN0YXRpYyBpbnQgc3RfZmx1c2goc3RydWN0IGZpbGUgKmZpbHApCitzdGF0aWMgaW50IHN0X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxwLCBmbF9vd25lcl90IGlkKQogewogCWludCByZXN1bHQgPSAwLCByZXN1bHQyOwogCXVuc2lnbmVkIGNoYXIgY21kW01BWF9DT01NQU5EX1NJWkVdOwpAQCAtMzgzOSw3ICszODM5LDcgQEAKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQotCQkJaWYgKGkgPj0gc2l6ZW9mKHBhcm1zKSAvIHNpemVvZihzdHJ1Y3Qgc3RfZGV2X3Bhcm0pKQorCQkJaWYgKGkgPj0gQVJSQVlfU0laRShwYXJtcykpCiAJCQkJIHByaW50ayhLRVJOX1dBUk5JTkcgInN0OiBpbnZhbGlkIHBhcmFtZXRlciBpbiAnJXMnXG4iLAogCQkJCQlzdHApOwogCQkJc3RwID0gc3RyY2hyKHN0cCwgJywnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZ2x1ZS5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9nbHVlLmMKaW5kZXggOWM4M2I0ZC4uZWE4MmQzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9nbHVlLmMKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9nbHVlLmMKQEAgLTU0LDE0ICs1NCw4IEBACiAjZGVmaW5lIE5BTUU1M0MJCSJzeW01M2MiCiAjZGVmaW5lIE5BTUU1M0M4WFgJInN5bTUzYzh4eCIKIAotLyogU1BBUkMganVzdCBoYXMgdG8gYmUgZGlmZmVyZW50IC4uLiAqLwotI2lmZGVmIF9fc3BhcmNfXwotI2RlZmluZSBJUlFfRk1UICIlcyIKLSNkZWZpbmUgSVJRX1BSTSh4KSBfX2lycV9pdG9hKHgpCi0jZWxzZQogI2RlZmluZSBJUlFfRk1UICIlZCIKICNkZWZpbmUgSVJRX1BSTSh4KSAoeCkKLSNlbmRpZgogCiBzdHJ1Y3Qgc3ltX2RyaXZlcl9zZXR1cCBzeW1fZHJpdmVyX3NldHVwID0gU1lNX0xJTlVYX0RSSVZFUl9TRVRVUDsKIHVuc2lnbmVkIGludCBzeW1fZGVidWdfZmxhZ3MgPSAwOwpAQCAtMTU2LDcgKzE1MCw3IEBACiAKIAlzd2l0Y2goU1lNX1VDTURfUFRSKGNtZCktPmRhdGFfbWFwcGVkKSB7CiAJY2FzZSAyOgotCQlwY2lfdW5tYXBfc2cocGRldiwgY21kLT5idWZmZXIsIGNtZC0+dXNlX3NnLCBkbWFfZGlyKTsKKwkJcGNpX3VubWFwX3NnKHBkZXYsIGNtZC0+cmVxdWVzdF9idWZmZXIsIGNtZC0+dXNlX3NnLCBkbWFfZGlyKTsKIAkJYnJlYWs7CiAJY2FzZSAxOgogCQlwY2lfdW5tYXBfc2luZ2xlKHBkZXYsIFNZTV9VQ01EX1BUUihjbWQpLT5kYXRhX21hcHBpbmcsCkBAIC0xODYsNyArMTgwLDcgQEAKIAlpbnQgdXNlX3NnOwogCWludCBkbWFfZGlyID0gY21kLT5zY19kYXRhX2RpcmVjdGlvbjsKIAotCXVzZV9zZyA9IHBjaV9tYXBfc2cocGRldiwgY21kLT5idWZmZXIsIGNtZC0+dXNlX3NnLCBkbWFfZGlyKTsKKwl1c2Vfc2cgPSBwY2lfbWFwX3NnKHBkZXYsIGNtZC0+cmVxdWVzdF9idWZmZXIsIGNtZC0+dXNlX3NnLCBkbWFfZGlyKTsKIAlpZiAodXNlX3NnID4gMCkgewogCQlTWU1fVUNNRF9QVFIoY21kKS0+ZGF0YV9tYXBwZWQgID0gMjsKIAkJU1lNX1VDTURfUFRSKGNtZCktPmRhdGFfbWFwcGluZyA9IHVzZV9zZzsKQEAgLTM3Niw3ICszNzAsNyBAQAogCWlmICghdXNlX3NnKQogCQlzZWdtZW50ID0gc3ltX3NjYXR0ZXJfbm9fc2dsaXN0KG5wLCBjcCwgY21kKTsKIAllbHNlIGlmICgodXNlX3NnID0gbWFwX3Njc2lfc2dfZGF0YShucCwgY21kKSkgPiAwKSB7Ci0JCXN0cnVjdCBzY2F0dGVybGlzdCAqc2NhdHRlciA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKiljbWQtPmJ1ZmZlcjsKKwkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzY2F0dGVyID0gKHN0cnVjdCBzY2F0dGVybGlzdCAqKWNtZC0+cmVxdWVzdF9idWZmZXI7CiAJCXN0cnVjdCBzeW1fdGNiICp0cCA9ICZucC0+dGFyZ2V0W2NwLT50YXJnZXRdOwogCQlzdHJ1Y3Qgc3ltX3RibG1vdmUgKmRhdGE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1faGlwZC5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9oaXBkLmMKaW5kZXggYTY3MWJkYy4uOTQwZmExZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9oaXBkLmMKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9oaXBkLmMKQEAgLTEyNzYsOCArMTI3Niw3IEBACiAgRkVfUkFNfEZFX0lPMjU2fEZFX0xFREN9CiB9OwogCi0jZGVmaW5lIHN5bV9udW1fZGV2cyBcCi0JKHNpemVvZihzeW1fZGV2X3RhYmxlKSAvIHNpemVvZihzeW1fZGV2X3RhYmxlWzBdKSkKKyNkZWZpbmUgc3ltX251bV9kZXZzIChBUlJBWV9TSVpFKHN5bV9kZXZfdGFibGUpKQogCiAvKgogICogIExvb2sgdXAgdGhlIGNoaXAgdGFibGUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvdDEyOC5jIGIvZHJpdmVycy9zY3NpL3QxMjguYwppbmRleCAyMTMwNWZjLi5hMjRmNjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvdDEyOC5jCisrKyBiL2RyaXZlcnMvc2NzaS90MTI4LmMKQEAgLTEyNiwxNSArMTI2LDE1IEBACiBzdGF0aWMgc3RydWN0IG92ZXJyaWRlIHsKICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3M7CiAgICAgaW50IGlycTsKLX0gb3ZlcnJpZGVzIAorfSBvdmVycmlkZXMKICNpZmRlZiBUMTI4X09WRVJSSURFCiAgICAgW10gX19pbml0ZGF0YSA9IFQxMjhfT1ZFUlJJREU7CiAjZWxzZQotICAgIFs0XSBfX2luaXRkYXRhID0ge3swLCBJUlFfQVVUT30sIHswLCBJUlFfQVVUT30sIAorICAgIFs0XSBfX2luaXRkYXRhID0ge3swLCBJUlFfQVVUT30sIHswLCBJUlFfQVVUT30sCiAgICAgICAgIHswICxJUlFfQVVUT30sIHswLCBJUlFfQVVUT319OwogI2VuZGlmCiAKLSNkZWZpbmUgTk9fT1ZFUlJJREVTIChzaXplb2Yob3ZlcnJpZGVzKSAvIHNpemVvZihzdHJ1Y3Qgb3ZlcnJpZGUpKQorI2RlZmluZSBOT19PVkVSUklERVMgQVJSQVlfU0laRShvdmVycmlkZXMpCiAKIHN0YXRpYyBzdHJ1Y3QgYmFzZSB7CiAgICAgdW5zaWduZWQgaW50IGFkZHJlc3M7CkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICB7IDB4Y2MwMDAsIDB9LCB7IDB4YzgwMDAsIDB9LCB7IDB4ZGMwMDAsIDB9LCB7IDB4ZDgwMDAsIDB9CiB9OwogCi0jZGVmaW5lIE5PX0JBU0VTIChzaXplb2YgKGJhc2VzKSAvIHNpemVvZiAoc3RydWN0IGJhc2UpKQorI2RlZmluZSBOT19CQVNFUyBBUlJBWV9TSVpFKGJhc2VzKQogCiBzdGF0aWMgc3RydWN0IHNpZ25hdHVyZSB7CiAgICAgY29uc3QgY2hhciAqc3RyaW5nOwpAQCAtMTUyLDcgKzE1Miw3IEBACiB7IlRTUk9NOiBTQ1NJIEJJT1MsIFZlcnNpb24gMS4xMiIsIDB4MzZ9LAogfTsKIAotI2RlZmluZSBOT19TSUdOQVRVUkVTIChzaXplb2YgKHNpZ25hdHVyZXMpIC8gIHNpemVvZiAoc3RydWN0IHNpZ25hdHVyZSkpCisjZGVmaW5lIE5PX1NJR05BVFVSRVMgQVJSQVlfU0laRShzaWduYXR1cmVzKQogCiAvKgogICogRnVuY3Rpb24gOiB0MTI4X3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3dkMzNjOTMuYyBiL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMKaW5kZXggZDhhNzI2MC4uMjczMDdmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3dkMzNjOTMuYworKysgYi9kcml2ZXJzL3Njc2kvd2QzM2M5My5jCkBAIC05MzksNiArOTM5LDcgQEAKIAkJREIoREJfSU5UUiwgcHJpbnRrKCIlMDJ4IiwgY21kLT5TQ3AuU3RhdHVzKSkKIAkJICAgIGlmIChob3N0ZGF0YS0+bGV2ZWwyID49IEwyX0JBU0lDKSB7CiAJCQlzciA9IHJlYWRfd2QzM2M5MyhyZWdzLCBXRF9TQ1NJX1NUQVRVUyk7CS8qIGNsZWFyIGludGVycnVwdCAqLworCQkJdWRlbGF5KDcpOwogCQkJaG9zdGRhdGEtPnN0YXRlID0gU19SVU5OSU5HX0xFVkVMMjsKIAkJCXdyaXRlX3dkMzNjOTMocmVncywgV0RfQ09NTUFORF9QSEFTRSwgMHg1MCk7CiAJCQl3cml0ZV93ZDMzYzkzX2NtZChyZWdzLCBXRF9DTURfU0VMX0FUTl9YRkVSKTsKQEAgLTk1NSw2ICs5NTYsNyBAQAogCiAJCW1zZyA9IHJlYWRfMV9ieXRlKHJlZ3MpOwogCQlzciA9IHJlYWRfd2QzM2M5MyhyZWdzLCBXRF9TQ1NJX1NUQVRVUyk7CS8qIGNsZWFyIGludGVycnVwdCAqLworCQl1ZGVsYXkoNyk7CiAKIAkJaG9zdGRhdGEtPmluY29taW5nX21zZ1tob3N0ZGF0YS0+aW5jb21pbmdfcHRyXSA9IG1zZzsKIAkJaWYgKGhvc3RkYXRhLT5pbmNvbWluZ19tc2dbMF0gPT0gRVhURU5ERURfTUVTU0FHRSkKQEAgLTEzNTgsNiArMTM2MCw3IEBACiAJCQl9IGVsc2UgewogCQkJCS8qIFZlcmlmeSB0aGlzIGlzIGEgY2hhbmdlIHRvIE1TR19JTiBhbmQgcmVhZCB0aGUgbWVzc2FnZSAqLwogCQkJCXNyID0gcmVhZF93ZDMzYzkzKHJlZ3MsIFdEX1NDU0lfU1RBVFVTKTsKKwkJCQl1ZGVsYXkoNyk7CiAJCQkJaWYgKHNyID09IChDU1JfQUJPUlQgfCBQSFNfTUVTU19JTikgfHwKIAkJCQkgICAgc3IgPT0gKENTUl9VTkVYUCB8IFBIU19NRVNTX0lOKSB8fAogCQkJCSAgICBzciA9PSAoQ1NSX1NSVl9SRVEgfCBQSFNfTUVTU19JTikpIHsKQEAgLTEzNzQsNiArMTM3Nyw3IEBACiAJCQkJCQkJICAgICBhc3IpOwogCQkJCQl9CiAJCQkJCXNyID0gcmVhZF93ZDMzYzkzKHJlZ3MsIFdEX1NDU0lfU1RBVFVTKTsKKwkJCQkJdWRlbGF5KDcpOwogCQkJCQlpZiAoc3IgIT0gQ1NSX01TR0lOKQogCQkJCQkJcHJpbnRrCiAJCQkJCQkgICAgKCJ3ZDMzYzkzOiBOb3QgcGF1c2VkIHdpdGggQUNLIG9uIFJFU0VMICglMDJ4KVxuIiwKQEAgLTE3MDEsNyArMTcwNSw3IEBACiB9CiAKICNkZWZpbmUgTUFYX1dEMzNDOTNfSE9TVFMgNAotI2RlZmluZSBNQVhfU0VUVVBfQVJHUyAoKGludCkoc2l6ZW9mKHNldHVwX2FyZ3MpIC8gc2l6ZW9mKGNoYXIgKikpKQorI2RlZmluZSBNQVhfU0VUVVBfQVJHUyBBUlJBWV9TSVpFKHNldHVwX2FyZ3MpCiAjZGVmaW5lIFNFVFVQX0JVRkZFUl9TSVpFIDIwMAogc3RhdGljIGNoYXIgc2V0dXBfYnVmZmVyW1NFVFVQX0JVRkZFUl9TSVpFXTsKIHN0YXRpYyBjaGFyIHNldHVwX3VzZWRbTUFYX1NFVFVQX0FSR1NdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3dkNzAwMC5jIGIvZHJpdmVycy9zY3NpL3dkNzAwMC5jCmluZGV4IGZiNTRhODcuLmU1NWYwZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS93ZDcwMDAuYworKysgYi9kcml2ZXJzL3Njc2kvd2Q3MDAwLmMKQEAgLTI2Nyw3ICsyNjcsNyBAQAogCTB4YzAwMDAsIDB4YzIwMDAsIDB4YzQwMDAsIDB4YzYwMDAsIDB4YzgwMDAsIDB4Y2EwMDAsIDB4Y2MwMDAsIDB4Y2UwMDAsCiAJMHhkMDAwMCwgMHhkMjAwMCwgMHhkNDAwMCwgMHhkNjAwMCwgMHhkODAwMCwgMHhkYTAwMCwgMHhkYzAwMCwgMHhkZTAwMAogfTsKLSNkZWZpbmUgTlVNX0FERFJTIChzaXplb2Yod2Q3MDAwX2Jpb3NhZGRyKS9zaXplb2YobG9uZykpCisjZGVmaW5lIE5VTV9BRERSUyBBUlJBWV9TSVpFKHdkNzAwMF9iaW9zYWRkcikKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHdkNzAwMF9pb2Jhc2VbXSA9IHsKIAkweDAzMDAsIDB4MDMwOCwgMHgwMzEwLCAweDAzMTgsIDB4MDMyMCwgMHgwMzI4LCAweDAzMzAsIDB4MDMzOCwKQEAgLTI3NSwxMyArMjc1LDEzIEBACiAJMHgwMzgwLCAweDAzODgsIDB4MDM5MCwgMHgwMzk4LCAweDAzYTAsIDB4MDNhOCwgMHgwM2IwLCAweDAzYjgsCiAJMHgwM2MwLCAweDAzYzgsIDB4MDNkMCwgMHgwM2Q4LCAweDAzZTAsIDB4MDNlOCwgMHgwM2YwLCAweDAzZjgKIH07Ci0jZGVmaW5lIE5VTV9JT1BPUlRTIChzaXplb2Yod2Q3MDAwX2lvYmFzZSkvc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSkKKyNkZWZpbmUgTlVNX0lPUE9SVFMgQVJSQVlfU0laRSh3ZDcwMDBfaW9iYXNlKQogCiBzdGF0aWMgY29uc3Qgc2hvcnQgd2Q3MDAwX2lycVtdID0geyAzLCA0LCA1LCA3LCA5LCAxMCwgMTEsIDEyLCAxNCwgMTUgfTsKLSNkZWZpbmUgTlVNX0lSUVMgKHNpemVvZih3ZDcwMDBfaXJxKS9zaXplb2Yoc2hvcnQpKQorI2RlZmluZSBOVU1fSVJRUyBBUlJBWV9TSVpFKHdkNzAwMF9pcnEpCiAKIHN0YXRpYyBjb25zdCBzaG9ydCB3ZDcwMDBfZG1hW10gPSB7IDUsIDYsIDcgfTsKLSNkZWZpbmUgTlVNX0RNQVMgKHNpemVvZih3ZDcwMDBfZG1hKS9zaXplb2Yoc2hvcnQpKQorI2RlZmluZSBOVU1fRE1BUyBBUlJBWV9TSVpFKHdkNzAwMF9kbWEpCiAKIC8qCiAgKiBUaGUgZm9sbG93aW5nIGlzIHNldCB1cCBieSB3ZDcwMDBfZGV0ZWN0LCBhbmQgdXNlZCB0aGVyZWFmdGVyIGZvcgpAQCAtMzE3LDcgKzMxNyw3IEBACiAJezcsIDYsIDB4MzUwLCBCVVNfT04sIEJVU19PRkZ9LAkvKiBNeSBjb25maWd1cmF0aW9uIChaYWdhKSAgICAgKi8KIAl7LTEsIC0xLCAweDAsIEJVU19PTiwgQlVTX09GRn0JLyogRW1wdHkgc2xvdCAgICAgICAgICAgICAgICAgICovCiB9OwotI2RlZmluZSBOVU1fQ09ORklHUyAoc2l6ZW9mKGNvbmZpZ3MpL3NpemVvZihDb25maWcpKQorI2RlZmluZSBOVU1fQ09ORklHUyBBUlJBWV9TSVpFKGNvbmZpZ3MpCiAKIC8qCiAgKiAgVGhlIGZvbGxvd2luZyBsaXN0IGRlZmluZXMgc3RyaW5ncyB0byBsb29rIGZvciBpbiB0aGUgQklPUyB0aGF0IGlkZW50aWZ5CkBAIC0zMzMsNyArMzMzLDcgQEAKIHN0YXRpYyBjb25zdCBTaWduYXR1cmUgc2lnbmF0dXJlc1tdID0gewogCXsiU1NUQklPUyIsIDB4MDAwMGQsIDd9CS8qICJTU1RCSU9TIiBAIG9mZnNldCAweDAwMDBkICovCiB9OwotI2RlZmluZSBOVU1fU0lHTkFUVVJFUyAoc2l6ZW9mKHNpZ25hdHVyZXMpL3NpemVvZihTaWduYXR1cmUpKQorI2RlZmluZSBOVU1fU0lHTkFUVVJFUyBBUlJBWV9TSVpFKHNpZ25hdHVyZXMpCiAKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL0tjb25maWcgYi9kcml2ZXJzL3NlcmlhbC9LY29uZmlnCmluZGV4IDdkMjJkYzAuLmJlZjRhOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL0tjb25maWcKKysrIGIvZHJpdmVycy9zZXJpYWwvS2NvbmZpZwpAQCAtMzAwLDIxICszMDAsMjIgQEAKIAkgIGtlcm5lbCBhdCBib290IHRpbWUuKQogCiBjb25maWcgU0VSSUFMX0FUOTEKLQlib29sICJBVDkxUk05MjAwIHNlcmlhbCBwb3J0IHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBBUk0gJiYgQVJDSF9BVDkxUk05MjAwCisJYm9vbCAiQVQ5MVJNOTIwMCAvIEFUOTFTQU05MjYxIHNlcmlhbCBwb3J0IHN1cHBvcnQiCisJZGVwZW5kcyBvbiBBUk0gJiYgKEFSQ0hfQVQ5MVJNOTIwMCB8fCBBUkNIX0FUOTFTQU05MjYxKQogCXNlbGVjdCBTRVJJQUxfQ09SRQogCWhlbHAKLQkgIFRoaXMgZW5hYmxlcyB0aGUgZHJpdmVyIGZvciB0aGUgb24tY2hpcCBVQVJUcyBvZiB0aGUgQVQ5MVJNOTIwMAotCSAgcHJvY2Vzc29yLgorCSAgVGhpcyBlbmFibGVzIHRoZSBkcml2ZXIgZm9yIHRoZSBvbi1jaGlwIFVBUlRzIG9mIHRoZSBBdG1lbAorCSAgQVQ5MVJNOTIwMCBhbmQgQVQ5MVNBTTkyNiBwcm9jZXNzb3IuCiAKIGNvbmZpZyBTRVJJQUxfQVQ5MV9DT05TT0xFCi0JYm9vbCAiU3VwcG9ydCBmb3IgY29uc29sZSBvbiBBVDkxUk05MjAwIHNlcmlhbCBwb3J0IgorCWJvb2wgIlN1cHBvcnQgZm9yIGNvbnNvbGUgb24gQVQ5MVJNOTIwMCAvIEFUOTFTQU05MjYxIHNlcmlhbCBwb3J0IgogCWRlcGVuZHMgb24gU0VSSUFMX0FUOTE9eQogCXNlbGVjdCBTRVJJQUxfQ09SRV9DT05TT0xFCiAJaGVscAotCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2lzaCB0byB1c2UgYSBVQVJUIG9uIHRoZSBBVDkxUk05MjAwIGFzIHRoZSBzeXN0ZW0KLQkgIGNvbnNvbGUgKHRoZSBzeXN0ZW0gY29uc29sZSBpcyB0aGUgZGV2aWNlIHdoaWNoIHJlY2VpdmVzIGFsbCBrZXJuZWwKLQkgIG1lc3NhZ2VzIGFuZCB3YXJuaW5ncyBhbmQgd2hpY2ggYWxsb3dzIGxvZ2lucyBpbiBzaW5nbGUgdXNlciBtb2RlKS4KKwkgIFNheSBZIGhlcmUgaWYgeW91IHdpc2ggdG8gdXNlIGEgVUFSVCBvbiB0aGUgQXRtZWwgQVQ5MVJNOTIwMCBvcgorCSAgQVQ5MVNBTTkyNjEgYXMgdGhlIHN5c3RlbSBjb25zb2xlICh0aGUgc3lzdGVtIGNvbnNvbGUgaXMgdGhlIGRldmljZQorCSAgd2hpY2ggcmVjZWl2ZXMgYWxsIGtlcm5lbCBtZXNzYWdlcyBhbmQgd2FybmluZ3MgYW5kIHdoaWNoIGFsbG93cworCSAgbG9naW5zIGluIHNpbmdsZSB1c2VyIG1vZGUpLgogCiBjb25maWcgU0VSSUFMX0FUOTFfVFRZQVQKIAlib29sICJJbnN0YWxsIGFzIGRldmljZSB0dHlBVDAtNCBpbnN0ZWFkIG9mIHR0eVMwLTQiCkBAIC05MzYsNCArOTM3LDIzIEBACiAJICBJZiB5b3UgaGF2ZSBhbiBTR0kgQWx0aXggd2l0aCBhbiBJT0MzIHNlcmlhbCBjYXJkLAogCSAgc2F5IFkgb3IgTS4gIE90aGVyd2lzZSwgc2F5IE4uCiAKK2NvbmZpZyBTRVJJQUxfTkVUWAorCWJvb2wgIk5ldFggc2VyaWFsIHBvcnQgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIEFSTSAmJiBBUkNIX05FVFgKKwlzZWxlY3QgU0VSSUFMX0NPUkUKKwloZWxwCisJICBJZiB5b3UgaGF2ZSBhIG1hY2hpbmUgYmFzZWQgb24gYSBIaWxzY2hlciBOZXRYIFNvQyB5b3UKKwkgIGNhbiBlbmFibGUgaXRzIG9uYm9hcmQgc2VyaWFsIHBvcnQgYnkgZW5hYmxpbmcgdGhpcyBvcHRpb24uCisKKyAgICAgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKyAgICAgICAgICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbmV0eC1zZXJpYWwuCisKK2NvbmZpZyBTRVJJQUxfTkVUWF9DT05TT0xFCisJYm9vbCAiQ29uc29sZSBvbiBOZXRYIHNlcmlhbCBwb3J0IgorCWRlcGVuZHMgb24gU0VSSUFMX05FVFgKKwlzZWxlY3QgU0VSSUFMX0NPUkVfQ09OU09MRQorCWhlbHAKKwkgIElmIHlvdSBoYXZlIGVuYWJsZWQgdGhlIHNlcmlhbCBwb3J0IG9uIHRoZSBNb3Rvcm9sYSBJTVgKKwkgIENQVSB5b3UgY2FuIG1ha2UgaXQgdGhlIGNvbnNvbGUgYnkgYW5zd2VyaW5nIFkgdG8gdGhpcyBvcHRpb24uCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL01ha2VmaWxlIGIvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKaW5kZXggMGE3MWJmNi4uOTI3ZmFlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9zZXJpYWwvTWFrZWZpbGUKQEAgLTU1LDMgKzU1LDQgQEAKIG9iai0kKENPTkZJR19TRVJJQUxfU0dJX0lPQzQpICs9IGlvYzRfc2VyaWFsLm8KIG9iai0kKENPTkZJR19TRVJJQUxfU0dJX0lPQzMpICs9IGlvYzNfc2VyaWFsLm8KIG9iai0kKENPTkZJR19TRVJJQUxfQVQ5MSkgKz0gYXQ5MV9zZXJpYWwubworb2JqLSQoQ09ORklHX1NFUklBTF9ORVRYKSArPSBuZXR4LXNlcmlhbC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9hbWJhLXBsMDEwLmMgYi9kcml2ZXJzL3NlcmlhbC9hbWJhLXBsMDEwLmMKaW5kZXggMTYzMTQxNC4uZTkyMGQxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvYW1iYS1wbDAxMC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL2FtYmEtcGwwMTAuYwpAQCAtNTIsNyArNTIsNyBAQAogCiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKLSNkZWZpbmUgVUFSVF9OUgkJMgorI2RlZmluZSBVQVJUX05SCQk4CiAKICNkZWZpbmUgU0VSSUFMX0FNQkFfTUFKT1IJMjA0CiAjZGVmaW5lIFNFUklBTF9BTUJBX01JTk9SCTE2CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9hdDkxX3NlcmlhbC5jIGIvZHJpdmVycy9zZXJpYWwvYXQ5MV9zZXJpYWwuYwppbmRleCA2NTQ3ZmUwLi5kYjViMjVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9hdDkxX3NlcmlhbC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL2F0OTFfc2VyaWFsLmMKQEAgLTIsNyArMiw2IEBACiAgKiAgbGludXgvZHJpdmVycy9jaGFyL2F0OTFfc2VyaWFsLmMKICAqCiAgKiAgRHJpdmVyIGZvciBBdG1lbCBBVDkxUk05MjAwIFNlcmlhbCBwb3J0cwotICoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUmljayBCcm9uc29uCiAgKgogICogIEJhc2VkIG9uIGRyaXZlcnMvY2hhci9zZXJpYWxfc2ExMTAwLmMsIGJ5IERlZXAgQmx1ZSBTb2x1dGlvbnMgTHRkLgpAQCAtMzAsMTcgKzI5LDE5IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zZXJpYWwuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzcnEuaD4KICNpbmNsdWRlIDxsaW51eC90dHlfZmxpcC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogCiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKICNpbmNsdWRlIDxhc20vYXJjaC9hdDkxcm05MjAwX3VzYXJ0Lmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvc2VyaWFsX2F0OTFybTkyMDAuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxcm05MjAwX3BkYy5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL3NlcmlhbF9hdDkxLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQuaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9waW8uaD4KLQorI2luY2x1ZGUgPGFzbS9hcmNoL3N5c3RlbS5oPgogCiAjaWYgZGVmaW5lZChDT05GSUdfU0VSSUFMX0FUOTFfQ09OU09MRSkgJiYgZGVmaW5lZChDT05GSUdfTUFHSUNfU1lTUlEpCiAjZGVmaW5lIFNVUFBPUlRfU1lTUlEKQEAgLTY3LDcgKzY4LDYgQEAKIAogI2VuZGlmCiAKLSNkZWZpbmUgQVQ5MV9WQV9CQVNFX0RCR1UJKCh1bnNpZ25lZCBsb25nKSBBVDkxX1ZBX0JBU0VfU1lTICsgQVQ5MV9EQkdVKQogI2RlZmluZSBBVDkxX0lTUl9QQVNTX0xJTUlUCTI1NgogCiAjZGVmaW5lIFVBUlRfUFVUX0NSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfVVNfQ1IpCkBAIC04NywxNiArODcsMzMgQEAKIAogIC8qIFBEQyByZWdpc3RlcnMgKi8KICNkZWZpbmUgVUFSVF9QVVRfUFRDUihwb3J0LHYpCXdyaXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVDkxX1BEQ19QVENSKQorI2RlZmluZSBVQVJUX0dFVF9QVFNSKHBvcnQpCXJlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1BUU1IpCisKICNkZWZpbmUgVUFSVF9QVVRfUlBSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1JQUikKKyNkZWZpbmUgVUFSVF9HRVRfUlBSKHBvcnQpCXJlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1JQUikKICNkZWZpbmUgVUFSVF9QVVRfUkNSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1JDUikKLSNkZWZpbmUgVUFSVF9HRVRfUkNSKHBvcnQpCXJlYWRsKChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1JDUikKICNkZWZpbmUgVUFSVF9QVVRfUk5QUihwb3J0LHYpCXdyaXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVDkxX1BEQ19STlBSKQogI2RlZmluZSBVQVJUX1BVVF9STkNSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1JOQ1IpCiAKKyNkZWZpbmUgVUFSVF9QVVRfVFBSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1RQUikKKyNkZWZpbmUgVUFSVF9QVVRfVENSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1RDUikKKy8vI2RlZmluZSBVQVJUX1BVVF9UTlBSKHBvcnQsdikJd3JpdGVsKHYsIChwb3J0KS0+bWVtYmFzZSArIEFUOTFfUERDX1ROUFIpCisvLyNkZWZpbmUgVUFSVF9QVVRfVE5DUihwb3J0LHYpCXdyaXRlbCh2LCAocG9ydCktPm1lbWJhc2UgKyBBVDkxX1BEQ19UTkNSKQogCiBzdGF0aWMgaW50ICgqYXQ5MV9vcGVuKShzdHJ1Y3QgdWFydF9wb3J0ICopOwogc3RhdGljIHZvaWQgKCphdDkxX2Nsb3NlKShzdHJ1Y3QgdWFydF9wb3J0ICopOwogCisvKgorICogV2Ugd3JhcCBvdXIgcG9ydCBzdHJ1Y3R1cmUgYXJvdW5kIHRoZSBnZW5lcmljIHVhcnRfcG9ydC4KKyAqLworc3RydWN0IGF0OTFfdWFydF9wb3J0IHsKKwlzdHJ1Y3QgdWFydF9wb3J0CXVhcnQ7CQkvKiB1YXJ0ICovCisJc3RydWN0IGNsawkJKmNsazsJCS8qIHVhcnQgY2xvY2sgKi8KKwl1bnNpZ25lZCBzaG9ydAkJc3VzcGVuZGVkOwkvKiBpcyBwb3J0IHN1c3BlbmRlZD8gKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgYXQ5MV9wb3J0c1tBVDkxX05SX1VBUlRdOworCiAjaWZkZWYgU1VQUE9SVF9TWVNSUQogc3RhdGljIHN0cnVjdCBjb25zb2xlIGF0OTFfY29uc29sZTsKICNlbmRpZgpAQCAtMTE1LDE2ICsxMzIsMTkgQEAKIHN0YXRpYyB2b2lkIGF0OTFfc2V0X21jdHJsKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHVfaW50IG1jdHJsKQogewogCXVuc2lnbmVkIGludCBjb250cm9sID0gMDsKKwl1bnNpZ25lZCBpbnQgbW9kZTsKIAotCS8qCi0JICogRXJyYXRhICMzOTogUlRTMCBpcyBub3QgaW50ZXJuYWxseSBjb25uZWN0ZWQgdG8gUEEyMS4gIFdlIG5lZWQgdG8gZHJpdmUKLQkgKiAgdGhlIHBpbiBtYW51YWxseS4KLQkgKi8KLQlpZiAocG9ydC0+bWFwYmFzZSA9PSBBVDkxX1ZBX0JBU0VfVVMwKSB7Ci0JCWlmIChtY3RybCAmIFRJT0NNX1JUUykKLQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19DT0RSLCBBVDkxX1BBMjFfUlRTMCk7Ci0JCWVsc2UKLQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19TT0RSLCBBVDkxX1BBMjFfUlRTMCk7CisJaWYgKGFyY2hfaWRlbnRpZnkoKSA9PSBBUkNIX0lEX0FUOTFSTTkyMDApIHsKKwkJLyoKKwkJICogQVQ5MVJNOTIwMCBFcnJhdGEgIzM5OiBSVFMwIGlzIG5vdCBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBQQTIxLgorCQkgKiAgV2UgbmVlZCB0byBkcml2ZSB0aGUgcGluIG1hbnVhbGx5LgorCQkgKi8KKwkJaWYgKHBvcnQtPm1hcGJhc2UgPT0gQVQ5MV9CQVNFX1VTMCkgeworCQkJaWYgKG1jdHJsICYgVElPQ01fUlRTKQorCQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19DT0RSLCBBVDkxX1BBMjFfUlRTMCk7CisJCQllbHNlCisJCQkJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1NPRFIsIEFUOTFfUEEyMV9SVFMwKTsKKwkJfQogCX0KIAogCWlmIChtY3RybCAmIFRJT0NNX1JUUykKQEAgLTEzNyw3ICsxNTcsMTUgQEAKIAllbHNlCiAJCWNvbnRyb2wgfD0gQVQ5MV9VU19EVFJESVM7CiAKLQlVQVJUX1BVVF9DUihwb3J0LGNvbnRyb2wpOworCVVBUlRfUFVUX0NSKHBvcnQsIGNvbnRyb2wpOworCisJLyogTG9jYWwgbG9vcGJhY2sgbW9kZT8gKi8KKwltb2RlID0gVUFSVF9HRVRfTVIocG9ydCkgJiB+QVQ5MV9VU19DSE1PREU7CisJaWYgKG1jdHJsICYgVElPQ01fTE9PUCkKKwkJbW9kZSB8PSBBVDkxX1VTX0NITU9ERV9MT0NfTE9PUDsKKwllbHNlCisJCW1vZGUgfD0gQVQ5MV9VU19DSE1PREVfTk9STUFMOworCVVBUlRfUFVUX01SKHBvcnQsIG1vZGUpOwogfQogCiAvKgpAQCAtMTY5LDggKzE5Nyw5IEBACiAgKi8KIHN0YXRpYyB2b2lkIGF0OTFfc3RvcF90eChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogeworCXN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqYXQ5MV9wb3J0ID0gKHN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqKSBwb3J0OworCiAJVUFSVF9QVVRfSURSKHBvcnQsIEFUOTFfVVNfVFhSRFkpOwotCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgJj0gfkFUOTFfVVNfVFhSRFk7CiB9CiAKIC8qCkBAIC0xNzgsNyArMjA3LDggQEAKICAqLwogc3RhdGljIHZvaWQgYXQ5MV9zdGFydF90eChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewotCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgfD0gQVQ5MV9VU19UWFJEWTsKKwlzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgKmF0OTFfcG9ydCA9IChzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgKikgcG9ydDsKKwogCVVBUlRfUFVUX0lFUihwb3J0LCBBVDkxX1VTX1RYUkRZKTsKIH0KIApAQCAtMTg3LDYgKzIxNyw4IEBACiAgKi8KIHN0YXRpYyB2b2lkIGF0OTFfc3RvcF9yeChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogeworCXN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqYXQ5MV9wb3J0ID0gKHN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqKSBwb3J0OworCiAJVUFSVF9QVVRfSURSKHBvcnQsIEFUOTFfVVNfUlhSRFkpOwogfQogCkBAIC0xOTUsNyArMjI3LDYgQEAKICAqLwogc3RhdGljIHZvaWQgYXQ5MV9lbmFibGVfbXMoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHsKLQlwb3J0LT5yZWFkX3N0YXR1c19tYXNrIHw9IChBVDkxX1VTX1JJSUMgfCBBVDkxX1VTX0RTUklDIHwgQVQ5MV9VU19EQ0RJQyB8IEFUOTFfVVNfQ1RTSUMpOwogCVVBUlRfUFVUX0lFUihwb3J0LCBBVDkxX1VTX1JJSUMgfCBBVDkxX1VTX0RTUklDIHwgQVQ5MV9VU19EQ0RJQyB8IEFUOTFfVVNfQ1RTSUMpOwogfQogCkBAIC0yMTgsOCArMjQ5LDggQEAKIAlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5ID0gcG9ydC0+aW5mby0+dHR5OwogCXVuc2lnbmVkIGludCBzdGF0dXMsIGNoLCBmbGc7CiAKLQlzdGF0dXMgPSBVQVJUX0dFVF9DU1IocG9ydCkgJiBwb3J0LT5yZWFkX3N0YXR1c19tYXNrOwotCXdoaWxlIChzdGF0dXMgJiAoQVQ5MV9VU19SWFJEWSkpIHsKKwlzdGF0dXMgPSBVQVJUX0dFVF9DU1IocG9ydCk7CisJd2hpbGUgKHN0YXR1cyAmIEFUOTFfVVNfUlhSRFkpIHsKIAkJY2ggPSBVQVJUX0dFVF9DSEFSKHBvcnQpOwogCiAJCXBvcnQtPmljb3VudC5yeCsrOwpAQCAtMjMwLDQwICsyNjEsMzggQEAKIAkJICogbm90ZSB0aGF0IHRoZSBlcnJvciBoYW5kbGluZyBjb2RlIGlzCiAJCSAqIG91dCBvZiB0aGUgbWFpbiBleGVjdXRpb24gcGF0aAogCQkgKi8KLQkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIChBVDkxX1VTX1BBUkUgfCBBVDkxX1VTX0ZSQU1FIHwgQVQ5MV9VU19PVlJFKSkpIHsKKwkJaWYgKHVubGlrZWx5KHN0YXR1cyAmIChBVDkxX1VTX1BBUkUgfCBBVDkxX1VTX0ZSQU1FIHwgQVQ5MV9VU19PVlJFIHwgQVQ5MV9VU19SWEJSSykpKSB7CiAJCQlVQVJUX1BVVF9DUihwb3J0LCBBVDkxX1VTX1JTVFNUQSk7CS8qIGNsZWFyIGVycm9yICovCi0JCQlpZiAoc3RhdHVzICYgKEFUOTFfVVNfUEFSRSkpCisJCQlpZiAoc3RhdHVzICYgQVQ5MV9VU19SWEJSSykgeworCQkJCXN0YXR1cyAmPSB+KEFUOTFfVVNfUEFSRSB8IEFUOTFfVVNfRlJBTUUpOwkvKiBpZ25vcmUgc2lkZS1lZmZlY3QgKi8KKwkJCQlwb3J0LT5pY291bnQuYnJrKys7CisJCQkJaWYgKHVhcnRfaGFuZGxlX2JyZWFrKHBvcnQpKQorCQkJCQlnb3RvIGlnbm9yZV9jaGFyOworCQkJfQorCQkJaWYgKHN0YXR1cyAmIEFUOTFfVVNfUEFSRSkKIAkJCQlwb3J0LT5pY291bnQucGFyaXR5Kys7Ci0JCQlpZiAoc3RhdHVzICYgKEFUOTFfVVNfRlJBTUUpKQorCQkJaWYgKHN0YXR1cyAmIEFUOTFfVVNfRlJBTUUpCiAJCQkJcG9ydC0+aWNvdW50LmZyYW1lKys7Ci0JCQlpZiAoc3RhdHVzICYgKEFUOTFfVVNfT1ZSRSkpCisJCQlpZiAoc3RhdHVzICYgQVQ5MV9VU19PVlJFKQogCQkJCXBvcnQtPmljb3VudC5vdmVycnVuKys7CiAKLQkJCWlmIChzdGF0dXMgJiBBVDkxX1VTX1BBUkUpCisJCQlzdGF0dXMgJj0gcG9ydC0+cmVhZF9zdGF0dXNfbWFzazsKKworCQkJaWYgKHN0YXR1cyAmIEFUOTFfVVNfUlhCUkspCisJCQkJZmxnID0gVFRZX0JSRUFLOworCQkJZWxzZSBpZiAoc3RhdHVzICYgQVQ5MV9VU19QQVJFKQogCQkJCWZsZyA9IFRUWV9QQVJJVFk7CiAJCQllbHNlIGlmIChzdGF0dXMgJiBBVDkxX1VTX0ZSQU1FKQogCQkJCWZsZyA9IFRUWV9GUkFNRTsKLQkJCWlmIChzdGF0dXMgJiBBVDkxX1VTX09WUkUpIHsKLQkJCQkvKgotCQkJCSAqIG92ZXJydW4gZG9lcyAqbm90KiBhZmZlY3QgdGhlIGNoYXJhY3RlcgotCQkJCSAqIHdlIHJlYWQgZnJvbSB0aGUgRklGTwotCQkJCSAqLwotCQkJCXR0eV9pbnNlcnRfZmxpcF9jaGFyKHR0eSwgY2gsIGZsZyk7Ci0JCQkJY2ggPSAwOwotCQkJCWZsZyA9IFRUWV9PVkVSUlVOOwotCQkJfQotI2lmZGVmIFNVUFBPUlRfU1lTUlEKLQkJCXBvcnQtPnN5c3JxID0gMDsKLSNlbmRpZgogCQl9CiAKIAkJaWYgKHVhcnRfaGFuZGxlX3N5c3JxX2NoYXIocG9ydCwgY2gsIHJlZ3MpKQogCQkJZ290byBpZ25vcmVfY2hhcjsKIAotCQl0dHlfaW5zZXJ0X2ZsaXBfY2hhcih0dHksIGNoLCBmbGcpOworCQl1YXJ0X2luc2VydF9jaGFyKHBvcnQsIHN0YXR1cywgQVQ5MV9VU19PVlJFLCBjaCwgZmxnKTsKIAogCWlnbm9yZV9jaGFyOgotCQlzdGF0dXMgPSBVQVJUX0dFVF9DU1IocG9ydCkgJiBwb3J0LT5yZWFkX3N0YXR1c19tYXNrOworCQlzdGF0dXMgPSBVQVJUX0dFVF9DU1IocG9ydCk7CiAJfQogCiAJdHR5X2ZsaXBfYnVmZmVyX3B1c2godHR5KTsKQEAgLTMwOCw0MCArMzM3LDM1IEBACiBzdGF0aWMgaXJxcmV0dXJuX3QgYXQ5MV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gZGV2X2lkOworCXN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqYXQ5MV9wb3J0ID0gKHN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqKSBwb3J0OwogCXVuc2lnbmVkIGludCBzdGF0dXMsIHBlbmRpbmcsIHBhc3NfY291bnRlciA9IDA7CiAKIAlzdGF0dXMgPSBVQVJUX0dFVF9DU1IocG9ydCk7Ci0JcGVuZGluZyA9IHN0YXR1cyAmIHBvcnQtPnJlYWRfc3RhdHVzX21hc2s7Ci0JaWYgKHBlbmRpbmcpIHsKLQkJZG8gewotCQkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX1JYUkRZKQotCQkJCWF0OTFfcnhfY2hhcnMocG9ydCwgcmVncyk7CisJcGVuZGluZyA9IHN0YXR1cyAmIFVBUlRfR0VUX0lNUihwb3J0KTsKKwl3aGlsZSAocGVuZGluZykgeworCQkvKiBJbnRlcnJ1cHQgcmVjZWl2ZSAqLworCQlpZiAocGVuZGluZyAmIEFUOTFfVVNfUlhSRFkpCisJCQlhdDkxX3J4X2NoYXJzKHBvcnQsIHJlZ3MpOwogCi0JCQkvKiBDbGVhciB0aGUgcmVsZXZlbnQgYnJlYWsgYml0cyAqLwotCQkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX1JYQlJLKSB7Ci0JCQkJVUFSVF9QVVRfQ1IocG9ydCwgQVQ5MV9VU19SU1RTVEEpOwotCQkJCXBvcnQtPmljb3VudC5icmsrKzsKLQkJCQl1YXJ0X2hhbmRsZV9icmVhayhwb3J0KTsKLQkJCX0KKwkJLy8gVE9ETzogQWxsIHJlYWRzIHRvIENTUiB3aWxsIGNsZWFyIHRoZXNlIGludGVycnVwdHMhCisJCWlmIChwZW5kaW5nICYgQVQ5MV9VU19SSUlDKSBwb3J0LT5pY291bnQucm5nKys7CisJCWlmIChwZW5kaW5nICYgQVQ5MV9VU19EU1JJQykgcG9ydC0+aWNvdW50LmRzcisrOworCQlpZiAocGVuZGluZyAmIEFUOTFfVVNfRENESUMpCisJCQl1YXJ0X2hhbmRsZV9kY2RfY2hhbmdlKHBvcnQsICEoc3RhdHVzICYgQVQ5MV9VU19EQ0QpKTsKKwkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX0NUU0lDKQorCQkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUOTFfVVNfQ1RTKSk7CisJCWlmIChwZW5kaW5nICYgKEFUOTFfVVNfUklJQyB8IEFUOTFfVVNfRFNSSUMgfCBBVDkxX1VTX0RDRElDIHwgQVQ5MV9VU19DVFNJQykpCisJCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnBvcnQtPmluZm8tPmRlbHRhX21zcl93YWl0KTsKIAotCQkJLy8gVE9ETzogQWxsIHJlYWRzIHRvIENTUiB3aWxsIGNsZWFyIHRoZXNlIGludGVycnVwdHMhCi0JCQlpZiAocGVuZGluZyAmIEFUOTFfVVNfUklJQykgcG9ydC0+aWNvdW50LnJuZysrOwotCQkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX0RTUklDKSBwb3J0LT5pY291bnQuZHNyKys7Ci0JCQlpZiAocGVuZGluZyAmIEFUOTFfVVNfRENESUMpCi0JCQkJdWFydF9oYW5kbGVfZGNkX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUOTFfVVNfRENEKSk7Ci0JCQlpZiAocGVuZGluZyAmIEFUOTFfVVNfQ1RTSUMpCi0JCQkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAhKHN0YXR1cyAmIEFUOTFfVVNfQ1RTKSk7Ci0JCQlpZiAocGVuZGluZyAmIChBVDkxX1VTX1JJSUMgfCBBVDkxX1VTX0RTUklDIHwgQVQ5MV9VU19EQ0RJQyB8IEFUOTFfVVNfQ1RTSUMpKQotCQkJCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmcG9ydC0+aW5mby0+ZGVsdGFfbXNyX3dhaXQpOworCQkvKiBJbnRlcnJ1cHQgdHJhbnNtaXQgKi8KKwkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX1RYUkRZKQorCQkJYXQ5MV90eF9jaGFycyhwb3J0KTsKIAotCQkJaWYgKHBlbmRpbmcgJiBBVDkxX1VTX1RYUkRZKQotCQkJCWF0OTFfdHhfY2hhcnMocG9ydCk7Ci0JCQlpZiAocGFzc19jb3VudGVyKysgPiBBVDkxX0lTUl9QQVNTX0xJTUlUKQotCQkJCWJyZWFrOworCQlpZiAocGFzc19jb3VudGVyKysgPiBBVDkxX0lTUl9QQVNTX0xJTUlUKQorCQkJYnJlYWs7CiAKLQkJCXN0YXR1cyA9IFVBUlRfR0VUX0NTUihwb3J0KTsKLQkJCXBlbmRpbmcgPSBzdGF0dXMgJiBwb3J0LT5yZWFkX3N0YXR1c19tYXNrOwotCQl9IHdoaWxlIChwZW5kaW5nKTsKKwkJc3RhdHVzID0gVUFSVF9HRVRfQ1NSKHBvcnQpOworCQlwZW5kaW5nID0gc3RhdHVzICYgVUFSVF9HRVRfSU1SKHBvcnQpOwogCX0KIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CkBAIC0zNTEsNiArMzc1LDcgQEAKICAqLwogc3RhdGljIGludCBhdDkxX3N0YXJ0dXAoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHsKKwlzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgKmF0OTFfcG9ydCA9IChzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgKikgcG9ydDsKIAlpbnQgcmV0dmFsOwogCiAJLyoKQEAgLTM4MSwxNCArNDA2LDE0IEBACiAJCX0KIAl9CiAKLQlwb3J0LT5yZWFkX3N0YXR1c19tYXNrID0gQVQ5MV9VU19SWFJEWSB8IEFUOTFfVVNfVFhSRFkgfCBBVDkxX1VTX09WUkUKLQkJCXwgQVQ5MV9VU19GUkFNRSB8IEFUOTFfVVNfUEFSRSB8IEFUOTFfVVNfUlhCUks7CiAJLyoKIAkgKiBGaW5hbGx5LCBlbmFibGUgdGhlIHNlcmlhbCBwb3J0CiAJICovCiAJVUFSVF9QVVRfQ1IocG9ydCwgQVQ5MV9VU19SU1RTVEEgfCBBVDkxX1VTX1JTVFJYKTsKIAlVQVJUX1BVVF9DUihwb3J0LCBBVDkxX1VTX1RYRU4gfCBBVDkxX1VTX1JYRU4pOwkJLyogZW5hYmxlIHhtaXQgJiByY3ZyICovCi0JVUFSVF9QVVRfSUVSKHBvcnQsIEFUOTFfVVNfUlhSRFkpOwkJCS8qIGRvIHJlY2VpdmUgb25seSAqLworCisJVUFSVF9QVVRfSUVSKHBvcnQsIEFUOTFfVVNfUlhSRFkpOwkJLyogZW5hYmxlIHJlY2VpdmUgb25seSAqLworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM5Nyw2ICs0MjIsOCBAQAogICovCiBzdGF0aWMgdm9pZCBhdDkxX3NodXRkb3duKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7CisJc3RydWN0IGF0OTFfdWFydF9wb3J0ICphdDkxX3BvcnQgPSAoc3RydWN0IGF0OTFfdWFydF9wb3J0ICopIHBvcnQ7CisKIAkvKgogCSAqIERpc2FibGUgYWxsIGludGVycnVwdHMsIHBvcnQgYW5kIGJyZWFrIGNvbmRpdGlvbi4KIAkgKi8KQEAgLTQyMSwyMSArNDQ4LDIyIEBACiAgKi8KIHN0YXRpYyB2b2lkIGF0OTFfc2VyaWFsX3BtKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBzdGF0ZSwgdW5zaWduZWQgaW50IG9sZHN0YXRlKQogeworCXN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqYXQ5MV9wb3J0ID0gKHN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqKSBwb3J0OworCiAJc3dpdGNoIChzdGF0ZSkgewogCQljYXNlIDA6CiAJCQkvKgogCQkJICogRW5hYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrIGZvciB0aGlzIHNlcmlhbCBwb3J0LgogCQkJICogVGhpcyBpcyBjYWxsZWQgb24gdWFydF9vcGVuKCkgb3IgYSByZXN1bWUgZXZlbnQuCiAJCQkgKi8KLQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRVIsIDEgPDwgcG9ydC0+aXJxKTsKKwkJCWNsa19lbmFibGUoYXQ5MV9wb3J0LT5jbGspOwogCQkJYnJlYWs7CiAJCWNhc2UgMzoKIAkJCS8qCiAJCQkgKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrIGZvciB0aGlzIHNlcmlhbCBwb3J0LgogCQkJICogVGhpcyBpcyBjYWxsZWQgb24gdWFydF9jbG9zZSgpIG9yIGEgc3VzcGVuZCBldmVudC4KIAkJCSAqLwotCQkJaWYgKHBvcnQtPmlycSAhPSBBVDkxX0lEX1NZUykJCQkvKiBpcyB0aGlzIGEgc2hhcmVkIGNsb2NrPyAqLwotCQkJCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRFIsIDEgPDwgcG9ydC0+aXJxKTsKKwkJCWNsa19kaXNhYmxlKGF0OTFfcG9ydC0+Y2xrKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJpbnRrKEtFUk5fRVJSICJhdDkxX3NlcmlhbDogdW5rbm93biBwbSAlZFxuIiwgc3RhdGUpOwpAQCAtNDk0LDkgKzUyMiw5IEBACiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcG9ydC0+bG9jaywgZmxhZ3MpOwogCi0JcG9ydC0+cmVhZF9zdGF0dXNfbWFzayB8PSBBVDkxX1VTX09WUkU7CisJcG9ydC0+cmVhZF9zdGF0dXNfbWFzayA9IEFUOTFfVVNfT1ZSRTsKIAlpZiAodGVybWlvcy0+Y19pZmxhZyAmIElOUENLKQotCQlwb3J0LT5yZWFkX3N0YXR1c19tYXNrIHw9IEFUOTFfVVNfRlJBTUUgfCBBVDkxX1VTX1BBUkU7CisJCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgfD0gKEFUOTFfVVNfRlJBTUUgfCBBVDkxX1VTX1BBUkUpOwogCWlmICh0ZXJtaW9zLT5jX2lmbGFnICYgKEJSS0lOVCB8IFBBUk1SSykpCiAJCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgfD0gQVQ5MV9VU19SWEJSSzsKIApAQCAtNTUyLDcgKzU4MCw3IEBACiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICphdDkxX3R5cGUoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHsKLQlyZXR1cm4gKHBvcnQtPnR5cGUgPT0gUE9SVF9BVDkxUk05MjAwKSA/ICJBVDkxX1NFUklBTCIgOiBOVUxMOworCXJldHVybiAocG9ydC0+dHlwZSA9PSBQT1JUX0FUOTEpID8gIkFUOTFfU0VSSUFMIiA6IE5VTEw7CiB9CiAKIC8qCkBAIC01NjAsOCArNTg4LDE1IEBACiAgKi8KIHN0YXRpYyB2b2lkIGF0OTFfcmVsZWFzZV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0JcmVsZWFzZV9tZW1fcmVnaW9uKHBvcnQtPm1hcGJhc2UsCi0JCShwb3J0LT5tYXBiYXNlID09IEFUOTFfVkFfQkFTRV9EQkdVKSA/IDUxMiA6IFNaXzE2Syk7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShwb3J0LT5kZXYpOworCWludCBzaXplID0gcGRldi0+cmVzb3VyY2VbMF0uZW5kIC0gcGRldi0+cmVzb3VyY2VbMF0uc3RhcnQgKyAxOworCisJcmVsZWFzZV9tZW1fcmVnaW9uKHBvcnQtPm1hcGJhc2UsIHNpemUpOworCisJaWYgKHBvcnQtPmZsYWdzICYgVVBGX0lPUkVNQVApIHsKKwkJaW91bm1hcChwb3J0LT5tZW1iYXNlKTsKKwkJcG9ydC0+bWVtYmFzZSA9IE5VTEw7CisJfQogfQogCiAvKgpAQCAtNTY5LDEwICs2MDQsMjEgQEAKICAqLwogc3RhdGljIGludCBhdDkxX3JlcXVlc3RfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewotCXJldHVybiByZXF1ZXN0X21lbV9yZWdpb24ocG9ydC0+bWFwYmFzZSwKLQkJKHBvcnQtPm1hcGJhc2UgPT0gQVQ5MV9WQV9CQVNFX0RCR1UpID8gNTEyIDogU1pfMTZLLAotCQkiYXQ5MV9zZXJpYWwiKSAhPSBOVUxMID8gMCA6IC1FQlVTWTsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKHBvcnQtPmRldik7CisJaW50IHNpemUgPSBwZGV2LT5yZXNvdXJjZVswXS5lbmQgLSBwZGV2LT5yZXNvdXJjZVswXS5zdGFydCArIDE7CiAKKwlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihwb3J0LT5tYXBiYXNlLCBzaXplLCAiYXQ5MV9zZXJpYWwiKSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCWlmIChwb3J0LT5mbGFncyAmIFVQRl9JT1JFTUFQKSB7CisJCXBvcnQtPm1lbWJhc2UgPSBpb3JlbWFwKHBvcnQtPm1hcGJhc2UsIHNpemUpOworCQlpZiAocG9ydC0+bWVtYmFzZSA9PSBOVUxMKSB7CisJCQlyZWxlYXNlX21lbV9yZWdpb24ocG9ydC0+bWFwYmFzZSwgc2l6ZSk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCX0KKworCXJldHVybiAwOwogfQogCiAvKgpAQCAtNTgxLDcgKzYyNyw3IEBACiBzdGF0aWMgdm9pZCBhdDkxX2NvbmZpZ19wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCBmbGFncykKIHsKIAlpZiAoZmxhZ3MgJiBVQVJUX0NPTkZJR19UWVBFKSB7Ci0JCXBvcnQtPnR5cGUgPSBQT1JUX0FUOTFSTTkyMDA7CisJCXBvcnQtPnR5cGUgPSBQT1JUX0FUOTE7CiAJCWF0OTFfcmVxdWVzdF9wb3J0KHBvcnQpOwogCX0KIH0KQEAgLTU5Miw3ICs2MzgsNyBAQAogc3RhdGljIGludCBhdDkxX3ZlcmlmeV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHN0cnVjdCBzZXJpYWxfc3RydWN0ICpzZXIpCiB7CiAJaW50IHJldCA9IDA7Ci0JaWYgKHNlci0+dHlwZSAhPSBQT1JUX1VOS05PV04gJiYgc2VyLT50eXBlICE9IFBPUlRfQVQ5MVJNOTIwMCkKKwlpZiAoc2VyLT50eXBlICE9IFBPUlRfVU5LTk9XTiAmJiBzZXItPnR5cGUgIT0gUE9SVF9BVDkxKQogCQlyZXQgPSAtRUlOVkFMOwogCWlmIChwb3J0LT5pcnEgIT0gc2VyLT5pcnEpCiAJCXJldCA9IC1FSU5WQUw7CkBAIC02MjQsMzMgKzY3MCw0NyBAQAogCS50eXBlCQk9IGF0OTFfdHlwZSwKIAkucmVsZWFzZV9wb3J0CT0gYXQ5MV9yZWxlYXNlX3BvcnQsCiAJLnJlcXVlc3RfcG9ydAk9IGF0OTFfcmVxdWVzdF9wb3J0LAotCS5jb25maWdfcG9ydCAJPSBhdDkxX2NvbmZpZ19wb3J0LAotCS52ZXJpZnlfcG9ydCAJPSBhdDkxX3ZlcmlmeV9wb3J0LAorCS5jb25maWdfcG9ydAk9IGF0OTFfY29uZmlnX3BvcnQsCisJLnZlcmlmeV9wb3J0CT0gYXQ5MV92ZXJpZnlfcG9ydCwKIAkucG0JCT0gYXQ5MV9zZXJpYWxfcG0sCiB9OwogCi1zdGF0aWMgc3RydWN0IHVhcnRfcG9ydCBhdDkxX3BvcnRzW0FUOTFfTlJfVUFSVF07Ci0KLXZvaWQgX19pbml0IGF0OTFfaW5pdF9wb3J0cyh2b2lkKQorLyoKKyAqIENvbmZpZ3VyZSB0aGUgcG9ydCBmcm9tIHRoZSBwbGF0Zm9ybSBkZXZpY2UgcmVzb3VyY2UgaW5mby4KKyAqLworc3RhdGljIHZvaWQgX19kZXZpbml0IGF0OTFfaW5pdF9wb3J0KHN0cnVjdCBhdDkxX3VhcnRfcG9ydCAqYXQ5MV9wb3J0LCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewotCXN0YXRpYyBpbnQgZmlyc3QgPSAxOwotCWludCBpOworCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmYXQ5MV9wb3J0LT51YXJ0OworCXN0cnVjdCBhdDkxX3VhcnRfZGF0YSAqZGF0YSA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCi0JaWYgKCFmaXJzdCkKLQkJcmV0dXJuOwotCWZpcnN0ID0gMDsKKwlwb3J0LT5pb3R5cGUJPSBVUElPX01FTTsKKwlwb3J0LT5mbGFncyAgICAgPSBVUEZfQk9PVF9BVVRPQ09ORjsKKwlwb3J0LT5vcHMJPSAmYXQ5MV9wb3BzOworCXBvcnQtPmZpZm9zaXplICA9IDE7CisJcG9ydC0+bGluZQk9IHBkZXYtPmlkOworCXBvcnQtPmRldgk9ICZwZGV2LT5kZXY7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVQ5MV9OUl9VQVJUOyBpKyspIHsKLQkJYXQ5MV9wb3J0c1tpXS5pb3R5cGUJPSBVUElPX01FTTsKLQkJYXQ5MV9wb3J0c1tpXS5mbGFncyAgICAgPSBVUEZfQk9PVF9BVVRPQ09ORjsKLQkJYXQ5MV9wb3J0c1tpXS51YXJ0Y2xrICAgPSBhdDkxX21hc3Rlcl9jbG9jazsKLQkJYXQ5MV9wb3J0c1tpXS5vcHMJPSAmYXQ5MV9wb3BzOwotCQlhdDkxX3BvcnRzW2ldLmZpZm9zaXplICA9IDE7Ci0JCWF0OTFfcG9ydHNbaV0ubGluZQk9IGk7Ci0gCX0KKwlwb3J0LT5tYXBiYXNlCT0gcGRldi0+cmVzb3VyY2VbMF0uc3RhcnQ7CisJcG9ydC0+aXJxCT0gcGRldi0+cmVzb3VyY2VbMV0uc3RhcnQ7CisKKwlpZiAocG9ydC0+bWFwYmFzZSA9PSBBVDkxX1ZBX0JBU0VfU1lTICsgQVQ5MV9EQkdVKQkJLyogUGFydCBvZiBzeXN0ZW0gcGVycGhlcmFscyAtIGFscmVhZHkgbWFwcGVkICovCisJCXBvcnQtPm1lbWJhc2UgPSAodm9pZCBfX2lvbWVtICopIHBvcnQtPm1hcGJhc2U7CisJZWxzZSB7CisJCXBvcnQtPmZsYWdzCXw9IFVQRl9JT1JFTUFQOworCQlwb3J0LT5tZW1iYXNlCT0gTlVMTDsKKwl9CisKKwlpZiAoIWF0OTFfcG9ydC0+Y2xrKSB7CQkvKiBmb3IgY29uc29sZSwgdGhlIGNsb2NrIGNvdWxkIGFscmVhZHkgYmUgY29uZmlndXJlZCAqLworCQlhdDkxX3BvcnQtPmNsayA9IGNsa19nZXQoJnBkZXYtPmRldiwgInVzYXJ0Iik7CisJCWNsa19lbmFibGUoYXQ5MV9wb3J0LT5jbGspOworCQlwb3J0LT51YXJ0Y2xrID0gY2xrX2dldF9yYXRlKGF0OTFfcG9ydC0+Y2xrKTsKKwl9CiB9CiAKLXZvaWQgX19pbml0IGF0OTFfcmVnaXN0ZXJfdWFydF9mbnMoc3RydWN0IGF0OTFybTkyMDBfcG9ydF9mbnMgKmZucykKKy8qCisgKiBSZWdpc3RlciBib2FyZC1zcGVjaWZpYyBtb2RlbS1jb250cm9sIGxpbmUgaGFuZGxlcnMuCisgKi8KK3ZvaWQgX19pbml0IGF0OTFfcmVnaXN0ZXJfdWFydF9mbnMoc3RydWN0IGF0OTFfcG9ydF9mbnMgKmZucykKIHsKIAlpZiAoZm5zLT5lbmFibGVfbXMpCiAJCWF0OTFfcG9wcy5lbmFibGVfbXMgPSBmbnMtPmVuYWJsZV9tczsKQEAgLTY2NCw1MSArNzI0LDYgQEAKIAlhdDkxX3BvcHMuc2V0X3dha2UgPSBmbnMtPnNldF93YWtlOwogfQogCi0vKgotICogU2V0dXAgcG9ydHMuCi0gKi8KLXZvaWQgX19pbml0IGF0OTFfcmVnaXN0ZXJfdWFydChpbnQgaWR4LCBpbnQgcG9ydCkKLXsKLQlpZiAoKGlkeCA8IDApIHx8IChpZHggPj0gQVQ5MV9OUl9VQVJUKSkgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBiYWQgaW5kZXggbnVtYmVyICVkXG4iLCBfX0ZVTkNUSU9OX18sIGlkeCk7Ci0JCXJldHVybjsKLQl9Ci0KLQlzd2l0Y2ggKHBvcnQpIHsKLQljYXNlIDA6Ci0JCWF0OTFfcG9ydHNbaWR4XS5tZW1iYXNlID0gKHZvaWQgX19pb21lbSAqKSBBVDkxX1ZBX0JBU0VfVVMwOwotCQlhdDkxX3BvcnRzW2lkeF0ubWFwYmFzZSA9IEFUOTFfVkFfQkFTRV9VUzA7Ci0JCWF0OTFfcG9ydHNbaWR4XS5pcnEgICAgID0gQVQ5MV9JRF9VUzA7Ci0JCUFUOTFfQ2ZnUElPX1VTQVJUMCgpOwotCQlicmVhazsKLQljYXNlIDE6Ci0JCWF0OTFfcG9ydHNbaWR4XS5tZW1iYXNlID0gKHZvaWQgX19pb21lbSAqKSBBVDkxX1ZBX0JBU0VfVVMxOwotCQlhdDkxX3BvcnRzW2lkeF0ubWFwYmFzZSA9IEFUOTFfVkFfQkFTRV9VUzE7Ci0JCWF0OTFfcG9ydHNbaWR4XS5pcnEgICAgID0gQVQ5MV9JRF9VUzE7Ci0JCUFUOTFfQ2ZnUElPX1VTQVJUMSgpOwotCQlicmVhazsKLQljYXNlIDI6Ci0JCWF0OTFfcG9ydHNbaWR4XS5tZW1iYXNlID0gKHZvaWQgX19pb21lbSAqKSBBVDkxX1ZBX0JBU0VfVVMyOwotCQlhdDkxX3BvcnRzW2lkeF0ubWFwYmFzZSA9IEFUOTFfVkFfQkFTRV9VUzI7Ci0JCWF0OTFfcG9ydHNbaWR4XS5pcnEgICAgID0gQVQ5MV9JRF9VUzI7Ci0JCUFUOTFfQ2ZnUElPX1VTQVJUMigpOwotCQlicmVhazsKLQljYXNlIDM6Ci0JCWF0OTFfcG9ydHNbaWR4XS5tZW1iYXNlID0gKHZvaWQgX19pb21lbSAqKSBBVDkxX1ZBX0JBU0VfVVMzOwotCQlhdDkxX3BvcnRzW2lkeF0ubWFwYmFzZSA9IEFUOTFfVkFfQkFTRV9VUzM7Ci0JCWF0OTFfcG9ydHNbaWR4XS5pcnEgICAgID0gQVQ5MV9JRF9VUzM7Ci0JCUFUOTFfQ2ZnUElPX1VTQVJUMygpOwotCQlicmVhazsKLQljYXNlIDQ6Ci0JCWF0OTFfcG9ydHNbaWR4XS5tZW1iYXNlID0gKHZvaWQgX19pb21lbSAqKSBBVDkxX1ZBX0JBU0VfREJHVTsKLQkJYXQ5MV9wb3J0c1tpZHhdLm1hcGJhc2UgPSBBVDkxX1ZBX0JBU0VfREJHVTsKLQkJYXQ5MV9wb3J0c1tpZHhdLmlycSAgICAgPSBBVDkxX0lEX1NZUzsKLQkJQVQ5MV9DZmdQSU9fREJHVSgpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlwcmludGsoS0VSTl9FUlIgICIlcyA6IGJhZCBwb3J0IG51bWJlciAlZFxuIiwgX19GVU5DVElPTl9fLCBwb3J0KTsKLQl9Ci19CiAKICNpZmRlZiBDT05GSUdfU0VSSUFMX0FUOTFfQ09OU09MRQogc3RhdGljIHZvaWQgYXQ5MV9jb25zb2xlX3B1dGNoYXIoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgaW50IGNoKQpAQCAtNzIzLDcgKzczOCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkIGF0OTFfY29uc29sZV93cml0ZShzdHJ1Y3QgY29uc29sZSAqY28sIGNvbnN0IGNoYXIgKnMsIHVfaW50IGNvdW50KQogewotCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSBhdDkxX3BvcnRzICsgY28tPmluZGV4OworCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmYXQ5MV9wb3J0c1tjby0+aW5kZXhdLnVhcnQ7CiAJdW5zaWduZWQgaW50IHN0YXR1cywgaW1yOwogCiAJLyoKQEAgLTc3OCwyMyArNzkzLDE1IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IGF0OTFfY29uc29sZV9zZXR1cChzdHJ1Y3QgY29uc29sZSAqY28sIGNoYXIgKm9wdGlvbnMpCiB7Ci0Jc3RydWN0IHVhcnRfcG9ydCAqcG9ydDsKKwlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gJmF0OTFfcG9ydHNbY28tPmluZGV4XS51YXJ0OwogCWludCBiYXVkID0gMTE1MjAwOwogCWludCBiaXRzID0gODsKIAlpbnQgcGFyaXR5ID0gJ24nOwogCWludCBmbG93ID0gJ24nOwogCi0JLyoKLQkgKiBDaGVjayB3aGV0aGVyIGFuIGludmFsaWQgdWFydCBudW1iZXIgaGFzIGJlZW4gc3BlY2lmaWVkLCBhbmQKLQkgKiBpZiBzbywgc2VhcmNoIGZvciB0aGUgZmlyc3QgYXZhaWxhYmxlIHBvcnQgdGhhdCBkb2VzIGhhdmUKLQkgKiBjb25zb2xlIHN1cHBvcnQuCi0JICovCi0JcG9ydCA9IHVhcnRfZ2V0X2NvbnNvbGUoYXQ5MV9wb3J0cywgQVQ5MV9OUl9VQVJULCBjbyk7CisJaWYgKHBvcnQtPm1lbWJhc2UgPT0gMCkJCS8qIFBvcnQgbm90IGluaXRpYWxpemVkIHlldCAtIGRlbGF5IHNldHVwICovCisJCXJldHVybiAtRU5PREVWOwogCi0JLyoKLQkgKiBFbmFibGUgdGhlIHNlcmlhbCBjb25zb2xlLCBpbi1jYXNlIGJvb3Rsb2FkZXIgZGlkIG5vdCBkbyBpdC4KLQkgKi8KLQlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0VSLCAxIDw8IHBvcnQtPmlycSk7CS8qIGVuYWJsZSBjbG9jayAqLwogCVVBUlRfUFVUX0lEUihwb3J0LCAtMSk7CQkJCS8qIGRpc2FibGUgaW50ZXJydXB0cyAqLwogCVVBUlRfUFVUX0NSKHBvcnQsIEFUOTFfVVNfUlNUU1RBIHwgQVQ5MV9VU19SU1RSWCk7CiAJVUFSVF9QVVRfQ1IocG9ydCwgQVQ5MV9VU19UWEVOIHwgQVQ5MV9VU19SWEVOKTsKQEAgLTgyMSwyMyArODI4LDQwIEBACiAKICNkZWZpbmUgQVQ5MV9DT05TT0xFX0RFVklDRQkmYXQ5MV9jb25zb2xlCiAKLXN0YXRpYyBpbnQgIF9faW5pdCBhdDkxX2NvbnNvbGVfaW5pdCh2b2lkKQorLyoKKyAqIEVhcmx5IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gKGJlZm9yZSBWTSBzdWJzeXN0ZW0gaW5pdGlhbGl6ZWQpLgorICovCitzdGF0aWMgaW50IF9faW5pdCBhdDkxX2NvbnNvbGVfaW5pdCh2b2lkKQogewotCWF0OTFfaW5pdF9wb3J0cygpOworCWlmIChhdDkxX2RlZmF1bHRfY29uc29sZV9kZXZpY2UpIHsKKwkJYWRkX3ByZWZlcnJlZF9jb25zb2xlKEFUOTFfREVWSUNFTkFNRSwgYXQ5MV9kZWZhdWx0X2NvbnNvbGVfZGV2aWNlLT5pZCwgTlVMTCk7CisJCWF0OTFfaW5pdF9wb3J0KCYoYXQ5MV9wb3J0c1thdDkxX2RlZmF1bHRfY29uc29sZV9kZXZpY2UtPmlkXSksIGF0OTFfZGVmYXVsdF9jb25zb2xlX2RldmljZSk7CisJCXJlZ2lzdGVyX2NvbnNvbGUoJmF0OTFfY29uc29sZSk7CisJfQogCi0JYXQ5MV9jb25zb2xlLmluZGV4ID0gYXQ5MV9jb25zb2xlX3BvcnQ7Ci0JcmVnaXN0ZXJfY29uc29sZSgmYXQ5MV9jb25zb2xlKTsKIAlyZXR1cm4gMDsKIH0KIGNvbnNvbGVfaW5pdGNhbGwoYXQ5MV9jb25zb2xlX2luaXQpOwogCisvKgorICogTGF0ZSBjb25zb2xlIGluaXRpYWxpemF0aW9uLgorICovCitzdGF0aWMgaW50IF9faW5pdCBhdDkxX2xhdGVfY29uc29sZV9pbml0KHZvaWQpCit7CisJaWYgKGF0OTFfZGVmYXVsdF9jb25zb2xlX2RldmljZSAmJiAhKGF0OTFfY29uc29sZS5mbGFncyAmIENPTl9FTkFCTEVEKSkKKwkJcmVnaXN0ZXJfY29uc29sZSgmYXQ5MV9jb25zb2xlKTsKKworCXJldHVybiAwOworfQorY29yZV9pbml0Y2FsbChhdDkxX2xhdGVfY29uc29sZV9pbml0KTsKKwogI2Vsc2UKICNkZWZpbmUgQVQ5MV9DT05TT0xFX0RFVklDRQlOVUxMCiAjZW5kaWYKIAogc3RhdGljIHN0cnVjdCB1YXJ0X2RyaXZlciBhdDkxX3VhcnQgPSB7CiAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwKLQkuZHJpdmVyX25hbWUJCT0gQVQ5MV9ERVZJQ0VOQU1FLAorCS5kcml2ZXJfbmFtZQkJPSAiYXQ5MV9zZXJpYWwiLAogCS5kZXZfbmFtZQkJPSBBVDkxX0RFVklDRU5BTUUsCiAJLmRldmZzX25hbWUJCT0gQVQ5MV9ERVZJQ0VOQU1FLAogCS5tYWpvcgkJCT0gU0VSSUFMX0FUOTFfTUFKT1IsCkBAIC04NDYsMzMgKzg3MCwxMDYgQEAKIAkuY29ucwkJCT0gQVQ5MV9DT05TT0xFX0RFVklDRSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGF0OTFfc2VyaWFsX2luaXQodm9pZCkKKyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyBpbnQgYXQ5MV9zZXJpYWxfc3VzcGVuZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7Ci0JaW50IHJldCwgaTsKKwlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IGF0OTFfdWFydF9wb3J0ICphdDkxX3BvcnQgPSAoc3RydWN0IGF0OTFfdWFydF9wb3J0ICopIHBvcnQ7CiAKLQlhdDkxX2luaXRfcG9ydHMoKTsKLQotCXJldCA9IHVhcnRfcmVnaXN0ZXJfZHJpdmVyKCZhdDkxX3VhcnQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgQVQ5MV9OUl9VQVJUOyBpKyspIHsKLQkJaWYgKGF0OTFfc2VyaWFsX21hcFtpXSA+PSAwKQotCQkJdWFydF9hZGRfb25lX3BvcnQoJmF0OTFfdWFydCwgJmF0OTFfcG9ydHNbaV0pOworCWlmIChkZXZpY2VfbWF5X3dha2V1cCgmcGRldi0+ZGV2KSAmJiAhYXQ5MV9zdXNwZW5kX2VudGVyaW5nX3Nsb3dfY2xvY2soKSkKKwkJZW5hYmxlX2lycV93YWtlKHBvcnQtPmlycSk7CisJZWxzZSB7CisJCWRpc2FibGVfaXJxX3dha2UocG9ydC0+aXJxKTsKKwkJdWFydF9zdXNwZW5kX3BvcnQoJmF0OTFfdWFydCwgcG9ydCk7CisJCWF0OTFfcG9ydC0+c3VzcGVuZGVkID0gMTsKIAl9CiAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBhdDkxX3NlcmlhbF9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IGF0OTFfdWFydF9wb3J0ICphdDkxX3BvcnQgPSAoc3RydWN0IGF0OTFfdWFydF9wb3J0ICopIHBvcnQ7CisKKwlpZiAoYXQ5MV9wb3J0LT5zdXNwZW5kZWQpIHsKKwkJdWFydF9yZXN1bWVfcG9ydCgmYXQ5MV91YXJ0LCBwb3J0KTsKKwkJYXQ5MV9wb3J0LT5zdXNwZW5kZWQgPSAwOworCX0KKworCXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZpbmUgYXQ5MV9zZXJpYWxfc3VzcGVuZCBOVUxMCisjZGVmaW5lIGF0OTFfc2VyaWFsX3Jlc3VtZSBOVUxMCisjZW5kaWYKKworc3RhdGljIGludCBfX2RldmluaXQgYXQ5MV9zZXJpYWxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgYXQ5MV91YXJ0X3BvcnQgKnBvcnQ7CisJaW50IHJldDsKKworCXBvcnQgPSAmYXQ5MV9wb3J0c1twZGV2LT5pZF07CisJYXQ5MV9pbml0X3BvcnQocG9ydCwgcGRldik7CisKKwlyZXQgPSB1YXJ0X2FkZF9vbmVfcG9ydCgmYXQ5MV91YXJ0LCAmcG9ydC0+dWFydCk7CisJaWYgKCFyZXQpIHsKKwkJZGV2aWNlX2luaXRfd2FrZXVwKCZwZGV2LT5kZXYsIDEpOworCQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwb3J0KTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9fZGV2ZXhpdCBhdDkxX3NlcmlhbF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IGF0OTFfdWFydF9wb3J0ICphdDkxX3BvcnQgPSAoc3RydWN0IGF0OTFfdWFydF9wb3J0ICopIHBvcnQ7CisJaW50IHJldCA9IDA7CisKKwljbGtfZGlzYWJsZShhdDkxX3BvcnQtPmNsayk7CisJY2xrX3B1dChhdDkxX3BvcnQtPmNsayk7CisKKwlkZXZpY2VfaW5pdF93YWtldXAoJnBkZXYtPmRldiwgMCk7CisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisKKwlpZiAocG9ydCkgeworCQlyZXQgPSB1YXJ0X3JlbW92ZV9vbmVfcG9ydCgmYXQ5MV91YXJ0LCBwb3J0KTsKKwkJa2ZyZWUocG9ydCk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXQ5MV9zZXJpYWxfZHJpdmVyID0geworCS5wcm9iZQkJPSBhdDkxX3NlcmlhbF9wcm9iZSwKKwkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKGF0OTFfc2VyaWFsX3JlbW92ZSksCisJLnN1c3BlbmQJPSBhdDkxX3NlcmlhbF9zdXNwZW5kLAorCS5yZXN1bWUJCT0gYXQ5MV9zZXJpYWxfcmVzdW1lLAorCS5kcml2ZXIJCT0geworCQkubmFtZQk9ICJhdDkxX3VzYXJ0IiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGF0OTFfc2VyaWFsX2luaXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gdWFydF9yZWdpc3Rlcl9kcml2ZXIoJmF0OTFfdWFydCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmYXQ5MV9zZXJpYWxfZHJpdmVyKTsKKwlpZiAocmV0KQorCQl1YXJ0X3VucmVnaXN0ZXJfZHJpdmVyKCZhdDkxX3VhcnQpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQgX19leGl0IGF0OTFfc2VyaWFsX2V4aXQodm9pZCkKIHsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBBVDkxX05SX1VBUlQ7IGkrKykgewotIAkJaWYgKGF0OTFfc2VyaWFsX21hcFtpXSA+PSAwKQotCQkJdWFydF9yZW1vdmVfb25lX3BvcnQoJmF0OTFfdWFydCwgJmF0OTFfcG9ydHNbaV0pOwotICAJfQotCisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmF0OTFfc2VyaWFsX2RyaXZlcik7CiAJdWFydF91bnJlZ2lzdGVyX2RyaXZlcigmYXQ5MV91YXJ0KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvaW9jNF9zZXJpYWwuYyBiL2RyaXZlcnMvc2VyaWFsL2lvYzRfc2VyaWFsLmMKaW5kZXggYzYyMDIwOS4uNzE3ZTQ3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvaW9jNF9zZXJpYWwuYworKysgYi9kcml2ZXJzL3NlcmlhbC9pb2M0X3NlcmlhbC5jCkBAIC0yNjQ2LDcgKzI2NDYsMTAgQEAKIAlzdHJ1Y3QgaW9jNF9wb3J0ICpwb3J0OwogCXN0cnVjdCBpb2M0X3NvZnQgKnNvZnQ7CiAKKwkvKiBJZiBzZXJpYWwgZHJpdmVyIGRpZCBub3QgYXR0YWNoLCBkb24ndCB0cnkgdG8gZGV0YWNoICovCiAJY29udHJvbCA9IGlkZC0+aWRkX3NlcmlhbF9kYXRhOworCWlmICghY29udHJvbCkKKwkJcmV0dXJuIDA7CiAKIAlmb3IgKHBvcnRfbnVtID0gMDsgcG9ydF9udW0gPCBJT0M0X05VTV9TRVJJQUxfUE9SVFM7IHBvcnRfbnVtKyspIHsKIAkJZm9yIChwb3J0X3R5cGUgPSBVQVJUX1BPUlRfTUlOOwpAQCAtMjc3OCw2ICsyNzgxLDEyIEBACiAJRFBSSU5UX0NPTkZJRygoIiVzICgweCVwLCAweCVwKVxuIiwgX19GVU5DVElPTl9fLCBpZGQtPmlkZF9wZGV2LAogCQkJCQkJCWlkZC0+aWRkX3BjaV9pZCkpOwogCisJLyogUENJLVJUIGRvZXMgbm90IGJyaW5nIG91dCBzZXJpYWwgY29ubmVjdGlvbnMuCisJICogRG8gbm90IGF0dGFjaCB0byB0aGlzIHBhcnRpY3VsYXIgSU9DNC4KKwkgKi8KKwlpZiAoaWRkLT5pZGRfdmFyaWFudCA9PSBJT0M0X1ZBUklBTlRfUENJX1JUKQorCQlyZXR1cm4gMDsKKwogCS8qIHJlcXVlc3Qgc2VyaWFsIHJlZ2lzdGVycyAqLwogCXRtcF9hZGRyMSA9IGlkZC0+aWRkX2JhcjAgKyBJT0M0X1NFUklBTF9PRkZTRVQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL25ldHgtc2VyaWFsLmMgYi9kcml2ZXJzL3NlcmlhbC9uZXR4LXNlcmlhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYWRjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3NlcmlhbC9uZXR4LXNlcmlhbC5jCkBAIC0wLDAgKzEsNzQ5IEBACisvKgorICogZHJpdmVycy9zZXJpYWwvbmV0eC1zZXJpYWwuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisKKyNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfTkVUWF9DT05TT0xFKSAmJiBkZWZpbmVkKENPTkZJR19NQUdJQ19TWVNSUSkKKyNkZWZpbmUgU1VQUE9SVF9TWVNSUQorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c3JxLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvdHR5Lmg+CisjaW5jbHVkZSA8bGludXgvdHR5X2ZsaXAuaD4KKyNpbmNsdWRlIDxsaW51eC9zZXJpYWxfY29yZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcmlhbC5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL25ldHgtcmVncy5oPgorCisvKiBXZSd2ZSBiZWVuIGFzc2lnbmVkIGEgcmFuZ2Ugb24gdGhlICJMb3ctZGVuc2l0eSBzZXJpYWwgcG9ydHMiIG1ham9yICovCisjZGVmaW5lIFNFUklBTF9OWF9NQUpPUgkyMDQKKyNkZWZpbmUgTUlOT1JfU1RBUlQJMTcwCisKKyNpZmRlZiBDT05GSUdfU0VSSUFMX05FVFhfQ09OU09MRQorCitlbnVtIHVhcnRfcmVncyB7CisJVUFSVF9EUiAgICAgICAgICAgICAgPSAweDAwLAorCVVBUlRfU1IgICAgICAgICAgICAgID0gMHgwNCwKKwlVQVJUX0xJTkVfQ1IgICAgICAgICA9IDB4MDgsCisJVUFSVF9CQVVERElWX01TQiAgICAgPSAweDBjLAorCVVBUlRfQkFVRERJVl9MU0IgICAgID0gMHgxMCwKKwlVQVJUX0NSICAgICAgICAgICAgICA9IDB4MTQsCisJVUFSVF9GUiAgICAgICAgICAgICAgPSAweDE4LAorCVVBUlRfSUlSICAgICAgICAgICAgID0gMHgxYywKKwlVQVJUX0lMUFIgICAgICAgICAgICA9IDB4MjAsCisJVUFSVF9SVFNfQ1IgICAgICAgICAgPSAweDI0LAorCVVBUlRfUlRTX0xFQUQgICAgICAgID0gMHgyOCwKKwlVQVJUX1JUU19UUkFJTCAgICAgICA9IDB4MmMsCisJVUFSVF9EUlZfRU5BQkxFICAgICAgPSAweDMwLAorCVVBUlRfQlJNX0NSICAgICAgICAgID0gMHgzNCwKKwlVQVJUX1JYRklGT19JUlFMRVZFTCA9IDB4MzgsCisJVUFSVF9UWEZJRk9fSVJRTEVWRUwgPSAweDNjLAorfTsKKworI2RlZmluZSBTUl9GRSAoMTw8MCkKKyNkZWZpbmUgU1JfUEUgKDE8PDEpCisjZGVmaW5lIFNSX0JFICgxPDwyKQorI2RlZmluZSBTUl9PRSAoMTw8MykKKworI2RlZmluZSBMSU5FX0NSX0JSSyAgICAgICAoMTw8MCkKKyNkZWZpbmUgTElORV9DUl9QRU4gICAgICAgKDE8PDEpCisjZGVmaW5lIExJTkVfQ1JfRVBTICAgICAgICgxPDwyKQorI2RlZmluZSBMSU5FX0NSX1NUUDIgICAgICAoMTw8MykKKyNkZWZpbmUgTElORV9DUl9GRU4gICAgICAgKDE8PDQpCisjZGVmaW5lIExJTkVfQ1JfNUJJVCAgICAgICgwPDw1KQorI2RlZmluZSBMSU5FX0NSXzZCSVQgICAgICAoMTw8NSkKKyNkZWZpbmUgTElORV9DUl83QklUICAgICAgKDI8PDUpCisjZGVmaW5lIExJTkVfQ1JfOEJJVCAgICAgICgzPDw1KQorI2RlZmluZSBMSU5FX0NSX0JJVFNfTUFTSyAoMzw8NSkKKworI2RlZmluZSBDUl9VQVJUX0VOICgxPDwwKQorI2RlZmluZSBDUl9TSVJFTiAgICgxPDwxKQorI2RlZmluZSBDUl9TSVJMUCAgICgxPDwyKQorI2RlZmluZSBDUl9NU0lFICAgICgxPDwzKQorI2RlZmluZSBDUl9SSUUgICAgICgxPDw0KQorI2RlZmluZSBDUl9USUUgICAgICgxPDw1KQorI2RlZmluZSBDUl9SVElFICAgICgxPDw2KQorI2RlZmluZSBDUl9MQkUgICAgICgxPDw3KQorCisjZGVmaW5lIEZSX0NUUyAgKDE8PDApCisjZGVmaW5lIEZSX0RTUiAgKDE8PDEpCisjZGVmaW5lIEZSX0RDRCAgKDE8PDIpCisjZGVmaW5lIEZSX0JVU1kgKDE8PDMpCisjZGVmaW5lIEZSX1JYRkUgKDE8PDQpCisjZGVmaW5lIEZSX1RYRkYgKDE8PDUpCisjZGVmaW5lIEZSX1JYRkYgKDE8PDYpCisjZGVmaW5lIEZSX1RYRkUgKDE8PDcpCisKKyNkZWZpbmUgSUlSX01JUyAoMTw8MCkKKyNkZWZpbmUgSUlSX1JJUyAoMTw8MSkKKyNkZWZpbmUgSUlSX1RJUyAoMTw8MikKKyNkZWZpbmUgSUlSX1JUSVMgKDE8PDMpCisjZGVmaW5lIElJUl9NQVNLIDB4ZgorCisjZGVmaW5lIFJUU19DUl9BVVRPICgxPDwwKQorI2RlZmluZSBSVFNfQ1JfUlRTICAoMTw8MSkKKyNkZWZpbmUgUlRTX0NSX0NPVU5UICgxPDwyKQorI2RlZmluZSBSVFNfQ1JfTU9EMiAgKDE8PDMpCisjZGVmaW5lIFJUU19DUl9SVFNfUE9MICgxPDw0KQorI2RlZmluZSBSVFNfQ1JfQ1RTX0NUUiAoMTw8NSkKKyNkZWZpbmUgUlRTX0NSX0NUU19QT0wgKDE8PDYpCisjZGVmaW5lIFJUU19DUl9TVElDSyAgICgxPDw3KQorCisjZGVmaW5lIFVBUlRfUE9SVF9TSVpFIDB4NDAKKyNkZWZpbmUgRFJJVkVSX05BTUUgIm5ldHgtdWFydCIKKworc3RydWN0IG5ldHhfcG9ydCB7CisJc3RydWN0IHVhcnRfcG9ydAlwb3J0OworfTsKKworc3RhdGljIHZvaWQgbmV0eF9zdG9wX3R4KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCit7CisJdW5zaWduZWQgaW50IHZhbDsKKwl2YWwgPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7CisJd3JpdGVsKHZhbCAmIH5DUl9USUUsICBwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHhfc3RvcF9yeChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXVuc2lnbmVkIGludCB2YWw7CisJdmFsID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCXdyaXRlbCh2YWwgJiB+Q1JfUklFLCAgcG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworfQorCitzdGF0aWMgdm9pZCBuZXR4X2VuYWJsZV9tcyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXVuc2lnbmVkIGludCB2YWw7CisJdmFsID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCXdyaXRlbCh2YWwgfCBDUl9NU0lFLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBuZXR4X3RyYW5zbWl0X2J1ZmZlcihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXN0cnVjdCBjaXJjX2J1ZiAqeG1pdCA9ICZwb3J0LT5pbmZvLT54bWl0OworCisJaWYgKHBvcnQtPnhfY2hhcikgeworCQl3cml0ZWwocG9ydC0+eF9jaGFyLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9EUik7CisJCXBvcnQtPmljb3VudC50eCsrOworCQlwb3J0LT54X2NoYXIgPSAwOworCQlyZXR1cm47CisJfQorCisJaWYgKHVhcnRfdHhfc3RvcHBlZChwb3J0KSB8fCB1YXJ0X2NpcmNfZW1wdHkoeG1pdCkpIHsKKwkJbmV0eF9zdG9wX3R4KHBvcnQpOworCQlyZXR1cm47CisJfQorCisJZG8geworCQkvKiBzZW5kIHhtaXQtPmJ1Zlt4bWl0LT50YWlsXQorCQkgKiBvdXQgdGhlIHBvcnQgaGVyZSAqLworCQl3cml0ZWwoeG1pdC0+YnVmW3htaXQtPnRhaWxdLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9EUik7CisJCXhtaXQtPnRhaWwgPSAoeG1pdC0+dGFpbCArIDEpICYKKwkJICAgICAgICAgKFVBUlRfWE1JVF9TSVpFIC0gMSk7CisJCXBvcnQtPmljb3VudC50eCsrOworCQlpZiAodWFydF9jaXJjX2VtcHR5KHhtaXQpKQorCQkJYnJlYWs7CisJfSB3aGlsZSAoIShyZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9GUikgJiBGUl9UWEZGKSk7CisKKwlpZiAodWFydF9jaXJjX2VtcHR5KHhtaXQpKQorCQluZXR4X3N0b3BfdHgocG9ydCk7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHhfc3RhcnRfdHgoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwl3cml0ZWwoCisJICAgIHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJUX0NSKSB8IENSX1RJRSwgcG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCisJaWYgKCEocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfRlIpICYgRlJfVFhGRikpCisJCW5ldHhfdHJhbnNtaXRfYnVmZmVyKHBvcnQpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IG5ldHhfdHhfZW1wdHkoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlyZXR1cm4gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfRlIpICYgRlJfQlVTWSA/IDAgOiBUSU9DU0VSX1RFTVQ7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHhfdHhpbnQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3sKKwlzdHJ1Y3QgY2lyY19idWYgKnhtaXQgPSAmcG9ydC0+aW5mby0+eG1pdDsKKworCWlmICh1YXJ0X2NpcmNfZW1wdHkoeG1pdCkgfHwgdWFydF90eF9zdG9wcGVkKHBvcnQpKSB7CisJCW5ldHhfc3RvcF90eChwb3J0KTsKKwkJcmV0dXJuOworCX0KKworCW5ldHhfdHJhbnNtaXRfYnVmZmVyKHBvcnQpOworCisJaWYgKHVhcnRfY2lyY19jaGFyc19wZW5kaW5nKHhtaXQpIDwgV0FLRVVQX0NIQVJTKQorCQl1YXJ0X3dyaXRlX3dha2V1cChwb3J0KTsKK30KKworc3RhdGljIHZvaWQgbmV0eF9yeGludChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwl1bnNpZ25lZCBjaGFyIHJ4LCBmbGcsIHN0YXR1czsKKwlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5ID0gcG9ydC0+aW5mby0+dHR5OworCisJd2hpbGUgKCEocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfRlIpICYgRlJfUlhGRSkpIHsKKwkJcnggPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9EUik7CisJCWZsZyA9IFRUWV9OT1JNQUw7CisJCXBvcnQtPmljb3VudC5yeCsrOworCQlzdGF0dXMgPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9TUik7CisJCWlmIChzdGF0dXMgJiBTUl9CRSkgeworCQkJd3JpdGVsKDAsIHBvcnQtPm1lbWJhc2UgKyBVQVJUX1NSKTsKKwkJCWlmICh1YXJ0X2hhbmRsZV9icmVhayhwb3J0KSkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCWlmICh1bmxpa2VseShzdGF0dXMgJiAoU1JfRkUgfCBTUl9QRSB8IFNSX09FKSkpIHsKKworCQkJaWYgKHN0YXR1cyAmIFNSX1BFKQorCQkJCXBvcnQtPmljb3VudC5wYXJpdHkrKzsKKwkJCWVsc2UgaWYgKHN0YXR1cyAmIFNSX0ZFKQorCQkJCXBvcnQtPmljb3VudC5mcmFtZSsrOworCQkJaWYgKHN0YXR1cyAmIFNSX09FKQorCQkJCXBvcnQtPmljb3VudC5vdmVycnVuKys7CisKKwkJCXN0YXR1cyAmPSBwb3J0LT5yZWFkX3N0YXR1c19tYXNrOworCisJCQlpZiAoc3RhdHVzICYgU1JfQkUpCisJCQkJZmxnID0gVFRZX0JSRUFLOworCQkJZWxzZSBpZiAoc3RhdHVzICYgU1JfUEUpCisJCQkJZmxnID0gVFRZX1BBUklUWTsKKwkJCWVsc2UgaWYgKHN0YXR1cyAmIFNSX0ZFKQorCQkJCWZsZyA9IFRUWV9GUkFNRTsKKwkJfQorCisJCWlmICh1YXJ0X2hhbmRsZV9zeXNycV9jaGFyKHBvcnQsIHJ4LCByZWdzKSkKKwkJCWNvbnRpbnVlOworCisJCXVhcnRfaW5zZXJ0X2NoYXIocG9ydCwgc3RhdHVzLCBTUl9PRSwgcngsIGZsZyk7CisJfQorCisJdHR5X2ZsaXBfYnVmZmVyX3B1c2godHR5KTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBuZXR4X2ludChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAoc3RydWN0IHVhcnRfcG9ydCAqKWRldl9pZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGNoYXIgc3RhdHVzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBvcnQtPmxvY2ssZmxhZ3MpOworCisJc3RhdHVzID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfSUlSKSAmIElJUl9NQVNLOworCXdoaWxlIChzdGF0dXMpIHsKKwkJaWYgKHN0YXR1cyAmIElJUl9SSVMpCisJCQluZXR4X3J4aW50KHBvcnQsIHJlZ3MpOworCQlpZiAoc3RhdHVzICYgSUlSX1RJUykKKwkJCW5ldHhfdHhpbnQocG9ydCk7CisJCWlmIChzdGF0dXMgJiBJSVJfTUlTKSB7CisJCQlpZiAocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfRlIpICYgRlJfQ1RTKQorCQkJCXVhcnRfaGFuZGxlX2N0c19jaGFuZ2UocG9ydCwgMSk7CisJCQllbHNlCisJCQkJdWFydF9oYW5kbGVfY3RzX2NoYW5nZShwb3J0LCAwKTsKKwkJfQorCQl3cml0ZWwoMCwgcG9ydC0+bWVtYmFzZSArIFVBUlRfSUlSKTsKKwkJc3RhdHVzID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfSUlSKSAmIElJUl9NQVNLOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPmxvY2ssZmxhZ3MpOworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBuZXR4X2dldF9tY3RybChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXVuc2lnbmVkIGludCByZXQgPSBUSU9DTV9EU1IgfCBUSU9DTV9DQVI7CisKKwlpZiAocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfRlIpICYgRlJfQ1RTKQorCQlyZXQgfD0gVElPQ01fQ1RTOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgbmV0eF9zZXRfbWN0cmwoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IG1jdHJsKQoreworCXVuc2lnbmVkIGludCB2YWw7CisKKwlpZiAobWN0cmwgJiBUSU9DTV9SVFMpIHsKKwkJdmFsID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfUlRTX0NSKTsKKwkJd3JpdGVsKHZhbCB8IFJUU19DUl9SVFMsIHBvcnQtPm1lbWJhc2UgKyBVQVJUX1JUU19DUik7CisJfQorfQorCitzdGF0aWMgdm9pZCBuZXR4X2JyZWFrX2N0bChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBpbnQgYnJlYWtfc3RhdGUpCit7CisJdW5zaWduZWQgaW50IGxpbmVfY3I7CisJc3Bpbl9sb2NrX2lycSgmcG9ydC0+bG9jayk7CisKKwlsaW5lX2NyID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfTElORV9DUik7CisJaWYgKGJyZWFrX3N0YXRlICE9IDApCisJCWxpbmVfY3IgfD0gTElORV9DUl9CUks7CisJZWxzZQorCQlsaW5lX2NyICY9IH5MSU5FX0NSX0JSSzsKKwl3cml0ZWwobGluZV9jciwgcG9ydC0+bWVtYmFzZSArIFVBUlRfTElORV9DUik7CisKKwlzcGluX3VubG9ja19pcnEoJnBvcnQtPmxvY2spOworfQorCitzdGF0aWMgaW50IG5ldHhfc3RhcnR1cChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCWludCByZXQ7CisKKwlyZXQgPSByZXF1ZXN0X2lycShwb3J0LT5pcnEsIG5ldHhfaW50LCAwLAorCQkJICAgICBEUklWRVJfTkFNRSwgcG9ydCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKHBvcnQtPmRldiwgInVuYWJsZSB0byBncmFiIGlycSVkXG4iLHBvcnQtPmlycSk7CisJCWdvdG8gZXhpdDsKKwl9CisKKwl3cml0ZWwocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfTElORV9DUikgfCBMSU5FX0NSX0ZFTiwKKwkJcG9ydC0+bWVtYmFzZSArIFVBUlRfTElORV9DUik7CisKKwl3cml0ZWwoQ1JfTVNJRSB8IENSX1JJRSB8IENSX1RJRSB8IENSX1JUSUUgfCBDUl9VQVJUX0VOLAorCQlwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7CisKK2V4aXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgbmV0eF9zaHV0ZG93bihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXdyaXRlbCgwLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9DUikgOworCisJZnJlZV9pcnEocG9ydC0+aXJxLCBwb3J0KTsKK30KKworc3RhdGljIHZvaWQKK25ldHhfc2V0X3Rlcm1pb3Moc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgc3RydWN0IHRlcm1pb3MgKnRlcm1pb3MsCisJCSAgIHN0cnVjdCB0ZXJtaW9zICpvbGQpCit7CisJdW5zaWduZWQgaW50IGJhdWQsIHF1b3Q7CisJdW5zaWduZWQgY2hhciBvbGRfY3I7CisJdW5zaWduZWQgY2hhciBsaW5lX2NyID0gTElORV9DUl9GRU47CisJdW5zaWduZWQgY2hhciBydHNfY3IgPSAwOworCisJc3dpdGNoICh0ZXJtaW9zLT5jX2NmbGFnICYgQ1NJWkUpIHsKKwljYXNlIENTNToKKwkJbGluZV9jciB8PSBMSU5FX0NSXzVCSVQ7CisJCWJyZWFrOworCWNhc2UgQ1M2OgorCQlsaW5lX2NyIHw9IExJTkVfQ1JfNkJJVDsKKwkJYnJlYWs7CisJY2FzZSBDUzc6CisJCWxpbmVfY3IgfD0gTElORV9DUl83QklUOworCQlicmVhazsKKwljYXNlIENTODoKKwkJbGluZV9jciB8PSBMSU5FX0NSXzhCSVQ7CisJCWJyZWFrOworCX0KKworCWlmICh0ZXJtaW9zLT5jX2NmbGFnICYgQ1NUT1BCKQorCQlsaW5lX2NyIHw9IExJTkVfQ1JfU1RQMjsKKworCWlmICh0ZXJtaW9zLT5jX2NmbGFnICYgUEFSRU5CKSB7CisJCWxpbmVfY3IgfD0gTElORV9DUl9QRU47CisJCWlmICghKHRlcm1pb3MtPmNfY2ZsYWcgJiBQQVJPREQpKQorCQkJbGluZV9jciB8PSBMSU5FX0NSX0VQUzsKKwl9CisKKwlpZiAodGVybWlvcy0+Y19jZmxhZyAmIENSVFNDVFMpCisJCXJ0c19jciA9IFJUU19DUl9BVVRPIHwgUlRTX0NSX0NUU19DVFIgfCBSVFNfQ1JfUlRTX1BPTDsKKworCWJhdWQgPSB1YXJ0X2dldF9iYXVkX3JhdGUocG9ydCwgdGVybWlvcywgb2xkLCAwLCBwb3J0LT51YXJ0Y2xrLzE2KTsKKwlxdW90ID0gYmF1ZCAqIDQwOTY7CisJcXVvdCAvPSAxMDAwOworCXF1b3QgKj0gMjU2OworCXF1b3QgLz0gMTAwMDAwOworCisJc3Bpbl9sb2NrX2lycSgmcG9ydC0+bG9jayk7CisKKwl1YXJ0X3VwZGF0ZV90aW1lb3V0KHBvcnQsIHRlcm1pb3MtPmNfY2ZsYWcsIGJhdWQpOworCisJb2xkX2NyID0gcmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCisJLyogZGlzYWJsZSBpbnRlcnJ1cHRzICovCisJd3JpdGVsKG9sZF9jciAmIH4oQ1JfTVNJRSB8IENSX1JJRSB8IENSX1RJRSB8IENSX1JUSUUpLAorCQlwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7CisKKwkvKiBkcmFpbiB0cmFuc21pdHRlciAqLworCXdoaWxlIChyZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9GUikgJiBGUl9CVVNZKTsKKworCS8qIGRpc2FibGUgVUFSVCAqLworCXdyaXRlbChvbGRfY3IgJiB+Q1JfVUFSVF9FTiwgcG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCisJLyogbW9kZW0gc3RhdHVzIGludGVycnVwdHMgKi8KKwlvbGRfY3IgJj0gfkNSX01TSUU7CisJaWYgKFVBUlRfRU5BQkxFX01TKHBvcnQsIHRlcm1pb3MtPmNfY2ZsYWcpKQorCQlvbGRfY3IgfD0gQ1JfTVNJRTsKKworCXdyaXRlbCgocXVvdD4+OCkgJiAweGZmLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9CQVVERElWX01TQik7CisJd3JpdGVsKHF1b3QgJiAweGZmLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9CQVVERElWX0xTQik7CisJd3JpdGVsKGxpbmVfY3IsIHBvcnQtPm1lbWJhc2UgKyBVQVJUX0xJTkVfQ1IpOworCisJd3JpdGVsKHJ0c19jciwgcG9ydC0+bWVtYmFzZSArIFVBUlRfUlRTX0NSKTsKKworCS8qCisJICogQ2hhcmFjdGVycyB0byBpZ25vcmUKKwkgKi8KKwlwb3J0LT5pZ25vcmVfc3RhdHVzX21hc2sgPSAwOworCWlmICh0ZXJtaW9zLT5jX2lmbGFnICYgSUdOUEFSKQorCQlwb3J0LT5pZ25vcmVfc3RhdHVzX21hc2sgfD0gU1JfUEU7CisJaWYgKHRlcm1pb3MtPmNfaWZsYWcgJiBJR05CUkspIHsKKwkJcG9ydC0+aWdub3JlX3N0YXR1c19tYXNrIHw9IFNSX0JFOworCQkvKgorCQkgKiBJZiB3ZSdyZSBpZ25vcmluZyBwYXJpdHkgYW5kIGJyZWFrIGluZGljYXRvcnMsCisJCSAqIGlnbm9yZSBvdmVycnVucyB0b28gKGZvciByZWFsIHJhdyBzdXBwb3J0KS4KKwkJICovCisJCWlmICh0ZXJtaW9zLT5jX2lmbGFnICYgSUdOUEFSKQorCQkJcG9ydC0+aWdub3JlX3N0YXR1c19tYXNrIHw9IFNSX1BFOworCX0KKworCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgPSAwOworCWlmICh0ZXJtaW9zLT5jX2lmbGFnICYgKEJSS0lOVCB8IFBBUk1SSykpCisJCXBvcnQtPnJlYWRfc3RhdHVzX21hc2sgfD0gU1JfQkU7CisJaWYgKHRlcm1pb3MtPmNfaWZsYWcgJiBJTlBDSykKKwkJcG9ydC0+cmVhZF9zdGF0dXNfbWFzayB8PSBTUl9QRSB8IFNSX0ZFOworCisJd3JpdGVsKG9sZF9jciwgcG9ydC0+bWVtYmFzZSArIFVBUlRfQ1IpOworCisJc3Bpbl91bmxvY2tfaXJxKCZwb3J0LT5sb2NrKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKm5ldHhfdHlwZShzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXJldHVybiBwb3J0LT50eXBlID09IFBPUlRfTkVUWCA/ICJORVRYIiA6IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHhfcmVsZWFzZV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCit7CisJcmVsZWFzZV9tZW1fcmVnaW9uKHBvcnQtPm1hcGJhc2UsIFVBUlRfUE9SVF9TSVpFKTsKK30KKworc3RhdGljIGludCBuZXR4X3JlcXVlc3RfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQoreworCXJldHVybiByZXF1ZXN0X21lbV9yZWdpb24ocG9ydC0+bWFwYmFzZSwgVUFSVF9QT1JUX1NJWkUsCisJCQlEUklWRVJfTkFNRSkgIT0gTlVMTCA/IDAgOiAtRUJVU1k7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHhfY29uZmlnX3BvcnQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgaW50IGZsYWdzKQoreworCWlmIChmbGFncyAmIFVBUlRfQ09ORklHX1RZUEUgJiYgbmV0eF9yZXF1ZXN0X3BvcnQocG9ydCkgPT0gMCkKKwkJcG9ydC0+dHlwZSA9IFBPUlRfTkVUWDsKK30KKworc3RhdGljIGludAorbmV0eF92ZXJpZnlfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2VyaWFsX3N0cnVjdCAqc2VyKQoreworCWludCByZXQgPSAwOworCisJaWYgKHNlci0+dHlwZSAhPSBQT1JUX1VOS05PV04gJiYgc2VyLT50eXBlICE9IFBPUlRfTkVUWCkKKwkJcmV0ID0gLUVJTlZBTDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdWFydF9vcHMgbmV0eF9wb3BzID0geworCS50eF9lbXB0eQk9IG5ldHhfdHhfZW1wdHksCisJLnNldF9tY3RybAk9IG5ldHhfc2V0X21jdHJsLAorCS5nZXRfbWN0cmwJPSBuZXR4X2dldF9tY3RybCwKKwkuc3RvcF90eAk9IG5ldHhfc3RvcF90eCwKKwkuc3RhcnRfdHgJPSBuZXR4X3N0YXJ0X3R4LAorCS5zdG9wX3J4CT0gbmV0eF9zdG9wX3J4LAorCS5lbmFibGVfbXMJPSBuZXR4X2VuYWJsZV9tcywKKwkuYnJlYWtfY3RsCT0gbmV0eF9icmVha19jdGwsCisJLnN0YXJ0dXAJPSBuZXR4X3N0YXJ0dXAsCisJLnNodXRkb3duCT0gbmV0eF9zaHV0ZG93biwKKwkuc2V0X3Rlcm1pb3MJPSBuZXR4X3NldF90ZXJtaW9zLAorCS50eXBlCQk9IG5ldHhfdHlwZSwKKwkucmVsZWFzZV9wb3J0CT0gbmV0eF9yZWxlYXNlX3BvcnQsCisJLnJlcXVlc3RfcG9ydAk9IG5ldHhfcmVxdWVzdF9wb3J0LAorCS5jb25maWdfcG9ydAk9IG5ldHhfY29uZmlnX3BvcnQsCisJLnZlcmlmeV9wb3J0CT0gbmV0eF92ZXJpZnlfcG9ydCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgbmV0eF9wb3J0IG5ldHhfcG9ydHNbXSA9IHsKKwl7CisJLnBvcnQgPSB7CisJCS50eXBlID0gUE9SVF9ORVRYLAorCQkuaW90eXBlID0gVVBJT19NRU0sCisJCS5tZW1iYXNlID0gKGNoYXIgX19pb21lbSAqKWlvX3AydihORVRYX1BBX1VBUlQwKSwKKwkJLm1hcGJhc2UgPSBORVRYX1BBX1VBUlQwLAorCQkuaXJxID0gTkVUWF9JUlFfVUFSVDAsCisJCS51YXJ0Y2xrID0gMTAwMDAwMDAwLAorCQkuZmlmb3NpemUgPSAxNiwKKwkJLmZsYWdzID0gVVBGX0JPT1RfQVVUT0NPTkYsCisJCS5vcHMgPSAmbmV0eF9wb3BzLAorCQkubGluZSA9IDAsCisJfSwKKwl9LCB7CisJLnBvcnQgPSB7CisJCS50eXBlID0gUE9SVF9ORVRYLAorCQkuaW90eXBlID0gVVBJT19NRU0sCisJCS5tZW1iYXNlID0gKGNoYXIgX19pb21lbSAqKWlvX3AydihORVRYX1BBX1VBUlQxKSwKKwkJLm1hcGJhc2UgPSBORVRYX1BBX1VBUlQxLAorCQkuaXJxID0gTkVUWF9JUlFfVUFSVDEsCisJCS51YXJ0Y2xrID0gMTAwMDAwMDAwLAorCQkuZmlmb3NpemUgPSAxNiwKKwkJLmZsYWdzID0gVVBGX0JPT1RfQVVUT0NPTkYsCisJCS5vcHMgPSAmbmV0eF9wb3BzLAorCQkubGluZSA9IDEsCisJfSwKKwl9LCB7CisJLnBvcnQgPSB7CisJCS50eXBlID0gUE9SVF9ORVRYLAorCQkuaW90eXBlID0gVVBJT19NRU0sCisJCS5tZW1iYXNlID0gKGNoYXIgX19pb21lbSAqKWlvX3AydihORVRYX1BBX1VBUlQyKSwKKwkJLm1hcGJhc2UgPSBORVRYX1BBX1VBUlQyLAorCQkuaXJxID0gTkVUWF9JUlFfVUFSVDIsCisJCS51YXJ0Y2xrID0gMTAwMDAwMDAwLAorCQkuZmlmb3NpemUgPSAxNiwKKwkJLmZsYWdzID0gVVBGX0JPT1RfQVVUT0NPTkYsCisJCS5vcHMgPSAmbmV0eF9wb3BzLAorCQkubGluZSA9IDIsCisJfSwKKwl9Cit9OworCitzdGF0aWMgdm9pZCBuZXR4X2NvbnNvbGVfcHV0Y2hhcihzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCBpbnQgY2gpCit7CisJd2hpbGUgKHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJUX0ZSKSAmIEZSX0JVU1kpOworCXdyaXRlbChjaCwgcG9ydC0+bWVtYmFzZSArIFVBUlRfRFIpOworfQorCitzdGF0aWMgdm9pZAorbmV0eF9jb25zb2xlX3dyaXRlKHN0cnVjdCBjb25zb2xlICpjbywgY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGNvdW50KQoreworCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmbmV0eF9wb3J0c1tjby0+aW5kZXhdLnBvcnQ7CisJdW5zaWduZWQgY2hhciBjcl9zYXZlOworCisJY3Jfc2F2ZSA9IHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJUX0NSKTsKKwl3cml0ZWwoY3Jfc2F2ZSB8IENSX1VBUlRfRU4sIHBvcnQtPm1lbWJhc2UgKyBVQVJUX0NSKTsKKworCXVhcnRfY29uc29sZV93cml0ZShwb3J0LCBzLCBjb3VudCwgbmV0eF9jb25zb2xlX3B1dGNoYXIpOworCisJd2hpbGUgKHJlYWRsKHBvcnQtPm1lbWJhc2UgKyBVQVJUX0ZSKSAmIEZSX0JVU1kpOworCXdyaXRlbChjcl9zYXZlLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9DUik7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdAorbmV0eF9jb25zb2xlX2dldF9vcHRpb25zKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIGludCAqYmF1ZCwKKwkJCWludCAqcGFyaXR5LCBpbnQgKmJpdHMsIGludCAqZmxvdykKK3sKKwl1bnNpZ25lZCBjaGFyIGxpbmVfY3I7CisKKwkqYmF1ZCA9IChyZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9CQVVERElWX01TQikgPDwgOCkgfAorCQlyZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9CQVVERElWX0xTQik7CisJKmJhdWQgKj0gMTAwMDsKKwkqYmF1ZCAvPSA0MDk2OworCSpiYXVkICo9IDEwMDA7CisJKmJhdWQgLz0gMjU2OworCSpiYXVkICo9IDEwMDsKKworCWxpbmVfY3IgPSByZWFkbChwb3J0LT5tZW1iYXNlICsgVUFSVF9MSU5FX0NSKTsKKwkqcGFyaXR5ID0gJ24nOworCWlmIChsaW5lX2NyICYgTElORV9DUl9QRU4pIHsKKwkJaWYgKGxpbmVfY3IgJiBMSU5FX0NSX0VQUykKKwkJCSpwYXJpdHkgPSAnZSc7CisJCWVsc2UKKwkJCSpwYXJpdHkgPSAnbyc7CisJfQorCisJc3dpdGNoIChsaW5lX2NyICYgTElORV9DUl9CSVRTX01BU0spIHsKKwljYXNlIExJTkVfQ1JfOEJJVDoKKwkJKmJpdHMgPSA4OworCQlicmVhazsKKwljYXNlIExJTkVfQ1JfN0JJVDoKKwkJKmJpdHMgPSA3OworCQlicmVhazsKKwljYXNlIExJTkVfQ1JfNkJJVDoKKwkJKmJpdHMgPSA2OworCQlicmVhazsKKwljYXNlIExJTkVfQ1JfNUJJVDoKKwkJKmJpdHMgPSA1OworCQlicmVhazsKKwl9CisKKwlpZiAocmVhZGwocG9ydC0+bWVtYmFzZSArIFVBUlRfUlRTX0NSKSAmIFJUU19DUl9BVVRPKQorCQkqZmxvdyA9ICdyJzsKK30KKworc3RhdGljIGludCBfX2luaXQKK25ldHhfY29uc29sZV9zZXR1cChzdHJ1Y3QgY29uc29sZSAqY28sIGNoYXIgKm9wdGlvbnMpCit7CisJc3RydWN0IG5ldHhfcG9ydCAqc3BvcnQ7CisJaW50IGJhdWQgPSA5NjAwOworCWludCBiaXRzID0gODsKKwlpbnQgcGFyaXR5ID0gJ24nOworCWludCBmbG93ID0gJ24nOworCisJLyoKKwkgKiBDaGVjayB3aGV0aGVyIGFuIGludmFsaWQgdWFydCBudW1iZXIgaGFzIGJlZW4gc3BlY2lmaWVkLCBhbmQKKwkgKiBpZiBzbywgc2VhcmNoIGZvciB0aGUgZmlyc3QgYXZhaWxhYmxlIHBvcnQgdGhhdCBkb2VzIGhhdmUKKwkgKiBjb25zb2xlIHN1cHBvcnQuCisJICovCisJaWYgKGNvLT5pbmRleCA9PSAtMSB8fCBjby0+aW5kZXggPj0gQVJSQVlfU0laRShuZXR4X3BvcnRzKSkKKwkJY28tPmluZGV4ID0gMDsKKwlzcG9ydCA9ICZuZXR4X3BvcnRzW2NvLT5pbmRleF07CisKKwlpZiAob3B0aW9ucykgeworCQl1YXJ0X3BhcnNlX29wdGlvbnMob3B0aW9ucywgJmJhdWQsICZwYXJpdHksICZiaXRzLCAmZmxvdyk7CisJfSBlbHNlIHsKKwkJLyogaWYgdGhlIFVBUlQgaXMgZW5hYmxlZCwgYXNzdW1lIGl0IGhhcyBiZWVuIGNvcnJlY3RseSBzZXR1cAorCQkgKiBieSB0aGUgYm9vdGxvYWRlciBhbmQgZ2V0IHRoZSBvcHRpb25zCisJCSAqLworCQlpZiAocmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVBUlRfQ1IpICYgQ1JfVUFSVF9FTikgeworCQkJbmV0eF9jb25zb2xlX2dldF9vcHRpb25zKCZzcG9ydC0+cG9ydCwgJmJhdWQsCisJCQkmcGFyaXR5LCAmYml0cywgJmZsb3cpOworCQl9CisKKwl9CisKKwlyZXR1cm4gdWFydF9zZXRfb3B0aW9ucygmc3BvcnQtPnBvcnQsIGNvLCBiYXVkLCBwYXJpdHksIGJpdHMsIGZsb3cpOworfQorCitzdGF0aWMgc3RydWN0IHVhcnRfZHJpdmVyIG5ldHhfcmVnOworc3RhdGljIHN0cnVjdCBjb25zb2xlIG5ldHhfY29uc29sZSA9IHsKKwkubmFtZQkJPSAidHR5TlgiLAorCS53cml0ZQkJPSBuZXR4X2NvbnNvbGVfd3JpdGUsCisJLmRldmljZQkJPSB1YXJ0X2NvbnNvbGVfZGV2aWNlLAorCS5zZXR1cAkJPSBuZXR4X2NvbnNvbGVfc2V0dXAsCisJLmZsYWdzCQk9IENPTl9QUklOVEJVRkZFUiwKKwkuaW5kZXgJCT0gLTEsCisJLmRhdGEJCT0gJm5ldHhfcmVnLAorfTsKKworc3RhdGljIGludCBfX2luaXQgbmV0eF9jb25zb2xlX2luaXQodm9pZCkKK3sKKwlyZWdpc3Rlcl9jb25zb2xlKCZuZXR4X2NvbnNvbGUpOworCXJldHVybiAwOworfQorY29uc29sZV9pbml0Y2FsbChuZXR4X2NvbnNvbGVfaW5pdCk7CisKKyNkZWZpbmUgTkVUWF9DT05TT0xFCSZuZXR4X2NvbnNvbGUKKyNlbHNlCisjZGVmaW5lIE5FVFhfQ09OU09MRQlOVUxMCisjZW5kaWYKKworc3RhdGljIHN0cnVjdCB1YXJ0X2RyaXZlciBuZXR4X3JlZyA9IHsKKwkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKKwkuZHJpdmVyX25hbWUgICAgPSBEUklWRVJfTkFNRSwKKwkuZGV2X25hbWUgICAgICAgPSAidHR5TlgiLAorCS5tYWpvciAgICAgICAgICA9IFNFUklBTF9OWF9NQUpPUiwKKwkubWlub3IgICAgICAgICAgPSBNSU5PUl9TVEFSVCwKKwkubnIgICAgICAgICAgICAgPSBBUlJBWV9TSVpFKG5ldHhfcG9ydHMpLAorCS5jb25zICAgICAgICAgICA9IE5FVFhfQ09OU09MRSwKK307CisKK3N0YXRpYyBpbnQgc2VyaWFsX25ldHhfc3VzcGVuZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJc3RydWN0IG5ldHhfcG9ydCAqc3BvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmIChzcG9ydCkKKwkJdWFydF9zdXNwZW5kX3BvcnQoJm5ldHhfcmVnLCAmc3BvcnQtPnBvcnQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2VyaWFsX25ldHhfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG5ldHhfcG9ydCAqc3BvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmIChzcG9ydCkKKwkJdWFydF9yZXN1bWVfcG9ydCgmbmV0eF9yZWcsICZzcG9ydC0+cG9ydCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXJpYWxfbmV0eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQgPSAmbmV0eF9wb3J0c1twZGV2LT5pZF0ucG9ydDsKKworCWRldl9pbmZvKCZwZGV2LT5kZXYsICJpbml0aWFsaXNpbmdcbiIpOworCisJcG9ydC0+ZGV2ID0gJnBkZXYtPmRldjsKKworCXdyaXRlbCgxLCBwb3J0LT5tZW1iYXNlICsgVUFSVF9SWEZJRk9fSVJRTEVWRUwpOworCXVhcnRfYWRkX29uZV9wb3J0KCZuZXR4X3JlZywgJm5ldHhfcG9ydHNbcGRldi0+aWRdLnBvcnQpOworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsICZuZXR4X3BvcnRzW3BkZXYtPmlkXSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXJpYWxfbmV0eF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgbmV0eF9wb3J0ICpzcG9ydCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisKKwlpZiAoc3BvcnQpCisJCXVhcnRfcmVtb3ZlX29uZV9wb3J0KCZuZXR4X3JlZywgJnNwb3J0LT5wb3J0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzZXJpYWxfbmV0eF9kcml2ZXIgPSB7CisJLnByb2JlICAgICAgICAgID0gc2VyaWFsX25ldHhfcHJvYmUsCisJLnJlbW92ZSAgICAgICAgID0gc2VyaWFsX25ldHhfcmVtb3ZlLAorCisJLnN1c3BlbmQJPSBzZXJpYWxfbmV0eF9zdXNwZW5kLAorCS5yZXN1bWUJCT0gc2VyaWFsX25ldHhfcmVzdW1lLAorCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lICAgPSBEUklWRVJfTkFNRSwKKwl9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgbmV0eF9zZXJpYWxfaW5pdCh2b2lkKQoreworCWludCByZXQ7CisKKwlwcmludGsoS0VSTl9JTkZPICJTZXJpYWw6IE5ldFggZHJpdmVyXG4iKTsKKworCXJldCA9IHVhcnRfcmVnaXN0ZXJfZHJpdmVyKCZuZXR4X3JlZyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmc2VyaWFsX25ldHhfZHJpdmVyKTsKKwlpZiAocmV0ICE9IDApCisJCXVhcnRfdW5yZWdpc3Rlcl9kcml2ZXIoJm5ldHhfcmVnKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgbmV0eF9zZXJpYWxfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzZXJpYWxfbmV0eF9kcml2ZXIpOworCXVhcnRfdW5yZWdpc3Rlcl9kcml2ZXIoJm5ldHhfcmVnKTsKK30KKworbW9kdWxlX2luaXQobmV0eF9zZXJpYWxfaW5pdCk7Cittb2R1bGVfZXhpdChuZXR4X3NlcmlhbF9leGl0KTsKKworTU9EVUxFX0FVVEhPUigiU2FzY2hhIEhhdWVyIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk5ldFggc2VyaWFsIHBvcnQgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9weGEuYyBiL2RyaXZlcnMvc2VyaWFsL3B4YS5jCmluZGV4IDc3ZDQ1NjguLmFlMzY0OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3B4YS5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3B4YS5jCkBAIC0yNjksNyArMjY5LDYgQEAKIAl1bnNpZ25lZCBjaGFyIHN0YXR1czsKIAl1bnNpZ25lZCBpbnQgcmV0OwogCi1yZXR1cm4gVElPQ01fQ1RTIHwgVElPQ01fRFNSIHwgVElPQ01fQ0FSOwogCXN0YXR1cyA9IHNlcmlhbF9pbih1cCwgVUFSVF9NU1IpOwogCiAJcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3N1bnN1LmMgYi9kcml2ZXJzL3NlcmlhbC9zdW5zdS5jCmluZGV4IDJiNGY5NjUuLjRjZGI2MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3N1bnN1LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc3Vuc3UuYwpAQCAtMTI5NSw5ICsxMjk1LDkgQEAKIAlpZiAodXAtPnBvcnQudHlwZSA9PSBQT1JUX1VOS05PV04pCiAJCXJldHVybiAtMTsKIAotCXByaW50ayhLRVJOX0lORk8gInN1JWQgYXQgMHglcCAoaXJxID0gJXMpIGlzIGEgJXNcbiIsCisJcHJpbnRrKEtFUk5fSU5GTyAic3UlZCBhdCAweCVwIChpcnEgPSAlZCkgaXMgYSAlc1xuIiwKIAkgICAgICAgY2hhbm5lbCwKLQkgICAgICAgdXAtPnBvcnQubWVtYmFzZSwgX19pcnFfaXRvYSh1cC0+cG9ydC5pcnEpLAorCSAgICAgICB1cC0+cG9ydC5tZW1iYXNlLCB1cC0+cG9ydC5pcnEsCiAJICAgICAgIHN1bnN1X3R5cGUoJnVwLT5wb3J0KSk7CiAKICNpZmRlZiBDT05GSUdfU0VSSU8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3N1bnppbG9nLmMgYi9kcml2ZXJzL3NlcmlhbC9zdW56aWxvZy5jCmluZGV4IGNkNDllYmIuLjViNjU2OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3N1bnppbG9nLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvc3Vuemlsb2cuYwpAQCAtMTU0MCw4ICsxNTQwLDggQEAKIAkJdXAtPmNmbGFnID0gQjQ4MDAgfCBDUzggfCBDTE9DQUwgfCBDUkVBRDsKIAkJYmF1ZCA9IDQ4MDA7CiAJfQotCXByaW50ayhLRVJOX0lORk8gInpzJWQgYXQgMHglcCAoaXJxID0gJXMpIGlzIGEgU3VuWmlsb2dcbiIsCi0JICAgICAgIGNoYW5uZWwsIHVwLT5wb3J0Lm1lbWJhc2UsIF9faXJxX2l0b2Eoemlsb2dfaXJxKSk7CisJcHJpbnRrKEtFUk5fSU5GTyAienMlZCBhdCAweCVwIChpcnEgPSAlZCkgaXMgYSBTdW5aaWxvZ1xuIiwKKwkgICAgICAgY2hhbm5lbCwgdXAtPnBvcnQubWVtYmFzZSwgemlsb2dfaXJxKTsKIAogCXVwLT5jdXJyZWdzW1IxNV0gPSBCUktJRTsKIAlicmcgPSBCUFNfVE9fQlJHKGJhdWQsIFpTX0NMT0NLIC8gWlNfQ0xPQ0tfRElWSVNPUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NuL2lvYzQuYyBiL2RyaXZlcnMvc24vaW9jNC5jCmluZGV4IGNkZWZmOTAuLjgyNTZhOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc24vaW9jNC5jCisrKyBiL2RyaXZlcnMvc24vaW9jNC5jCkBAIC0xNjAsOSArMTYwLDYgQEAKIAl3cml0ZWwoMCwgJmlkZC0+aWRkX21pc2NfcmVncy0+aW50X291dC5yYXcpOwogCW1taW93YigpOwogCi0JcHJpbnRrKEtFUk5fSU5GTwotCSAgICAgICAiJXM6IENhbGlicmF0aW5nIFBDSSBidXMgc3BlZWQgIgotCSAgICAgICAiZm9yIHBjaV9kZXYgJXMgLi4uICIsIF9fRlVOQ1RJT05fXywgcGNpX25hbWUoaWRkLT5pZGRfcGRldikpOwogCS8qIFNldCB1cCBzcXVhcmUgd2F2ZSAqLwogCWludF9vdXQucmF3ID0gMDsKIAlpbnRfb3V0LmZpZWxkcy5jb3VudCA9IElPQzRfQ0FMSUJSQVRFX0NPVU5UOwpAQCAtMjA2LDExICsyMDMsMTYgQEAKIAkvKiBCb3VuZHMgY2hlY2sgdGhlIHJlc3VsdC4gKi8KIAlpZiAocGVyaW9kID4gSU9DNF9DQUxJQlJBVEVfTE9XX0xJTUlUIHx8CiAJICAgIHBlcmlvZCA8IElPQzRfQ0FMSUJSQVRFX0hJR0hfTElNSVQpIHsKLQkJcHJpbnRrKCJmYWlsZWQuIEFzc3VtaW5nIFBDSSBjbG9jayB0aWNrcyBhcmUgJWQgbnMuXG4iLAorCQlwcmludGsoS0VSTl9JTkZPCisJCSAgICAgICAiSU9DNCAlczogQ2xvY2sgY2FsaWJyYXRpb24gZmFpbGVkLiAgQXNzdW1pbmciCisJCSAgICAgICAiUENJIGNsb2NrIGlzICVkIG5zLlxuIiwKKwkJICAgICAgIHBjaV9uYW1lKGlkZC0+aWRkX3BkZXYpLAogCQkgICAgICAgSU9DNF9DQUxJQlJBVEVfREVGQVVMVCAvIElPQzRfRVhUSU5UX0NPVU5UX0RJVklTT1IpOwogCQlwZXJpb2QgPSBJT0M0X0NBTElCUkFURV9ERUZBVUxUOwogCX0gZWxzZSB7Ci0JCXByaW50aygic3VjY2VlZGVkLiBQQ0kgY2xvY2sgdGlja3MgYXJlICVsZCBucy5cbiIsCisJCXByaW50ayhLRVJOX0RFQlVHCisJCSAgICAgICAiSU9DNCAlczogUENJIGNsb2NrIGlzICVsZCBucy5cbiIsCisJCSAgICAgICBwY2lfbmFtZShpZGQtPmlkZF9wZGV2KSwKIAkJICAgICAgIHBlcmlvZCAvIElPQzRfRVhUSU5UX0NPVU5UX0RJVklTT1IpOwogCX0KIApAQCAtMjIyLDYgKzIyNCw1MSBAQAogCWlkZC0+Y291bnRfcGVyaW9kID0gcGVyaW9kOwogfQogCisvKiBUaGVyZSBhcmUgdGhyZWUgdmFyaWFudHMgb2YgSU9DNCBjYXJkczogSU85LCBJTzEwLCBhbmQgUENJLVJULgorICogRWFjaCBicmluZ3Mgb3V0IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgSU9DNCBzaWduYWxzLCB0aHVzLgorICogdGhlIElPQzQgc3ViZHJpdmVycyBuZWVkIHRvIGtub3cgdG8gd2hpY2ggd2UncmUgYXR0YWNoZWQuCisgKgorICogV2UgbG9vayBmb3IgdGhlIHByZXNlbmNlIG9mIGEgU0NTSSAoSU85KSBvciBTQVRBIChJTzEwKSBjb250cm9sbGVyCisgKiBvbiB0aGUgc2FtZSBQQ0kgYnVzIGF0IHNsb3QgbnVtYmVyIDMgdG8gZGlmZmVyZW50aWF0ZSBJTzkgZnJvbSBJTzEwLgorICogSWYgbmVpdGhlciBpcyBwcmVzZW50LCBpdCdzIGEgUENJLVJULgorICovCitzdGF0aWMgdW5zaWduZWQgaW50Citpb2M0X3ZhcmlhbnQoc3RydWN0IGlvYzRfZHJpdmVyX2RhdGEgKmlkZCkKK3sKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IE5VTEw7CisJaW50IGZvdW5kID0gMDsKKworCS8qIElPOTogTG9vayBmb3IgYSBRTG9naWMgSVNQIDEyMTYwIGF0IHRoZSBzYW1lIGJ1cyBhbmQgc2xvdCAzLiAqLworCWRvIHsKKwkJcGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfUUxPR0lDLAorCQkJCSAgICAgIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDEyMTYwLCBwZGV2KTsKKwkJaWYgKHBkZXYgJiYKKwkJICAgIGlkZC0+aWRkX3BkZXYtPmJ1cy0+bnVtYmVyID09IHBkZXYtPmJ1cy0+bnVtYmVyICYmCisJCSAgICAzID09IFBDSV9TTE9UKHBkZXYtPmRldmZuKSkKKwkJCWZvdW5kID0gMTsKKwkJcGNpX2Rldl9wdXQocGRldik7CisJfSB3aGlsZSAocGRldiAmJiAhZm91bmQpOworCWlmIChOVUxMICE9IHBkZXYpCisJCXJldHVybiBJT0M0X1ZBUklBTlRfSU85OworCisJLyogSU8xMDogTG9vayBmb3IgYSBWaXRlc3NlIFZTQyA3MTc0IGF0IHRoZSBzYW1lIGJ1cyBhbmQgc2xvdCAzLiAqLworCXBkZXYgPSBOVUxMOworCWRvIHsKKwkJcGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfVklURVNTRSwKKwkJCQkgICAgICBQQ0lfREVWSUNFX0lEX1ZJVEVTU0VfVlNDNzE3NCwgcGRldik7CisJCWlmIChwZGV2ICYmCisJCSAgICBpZGQtPmlkZF9wZGV2LT5idXMtPm51bWJlciA9PSBwZGV2LT5idXMtPm51bWJlciAmJgorCQkgICAgMyA9PSBQQ0lfU0xPVChwZGV2LT5kZXZmbikpCisJCQlmb3VuZCA9IDE7CisJCXBjaV9kZXZfcHV0KHBkZXYpOworCX0gd2hpbGUgKHBkZXYgJiYgIWZvdW5kKTsKKwlpZiAoTlVMTCAhPSBwZGV2KQorCQlyZXR1cm4gSU9DNF9WQVJJQU5UX0lPMTA7CisKKwkvKiBQQ0ktUlQ6IE5vIFNDU0kvU0FUQSBjb250cm9sbGVyIHdpbGwgYmUgcHJlc2VudCAqLworCXJldHVybiBJT0M0X1ZBUklBTlRfUENJX1JUOworfQorCiAvKiBBZGRzIGEgbmV3IGluc3RhbmNlIG9mIGFuIElPQzQgY2FyZCAqLwogc3RhdGljIGludAogaW9jNF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9pZCkKQEAgLTI4Niw2ICszMzMsMTMgQEAKIAogCS8qIEZhaWxzYWZlIHBvcnRpb24gb2YgcGVyLUlPQzQgaW5pdGlhbGl6YXRpb24gKi8KIAorCS8qIERldGVjdCBjYXJkIHZhcmlhbnQgKi8KKwlpZGQtPmlkZF92YXJpYW50ID0gaW9jNF92YXJpYW50KGlkZCk7CisJcHJpbnRrKEtFUk5fSU5GTyAiSU9DNCAlczogJXMgY2FyZCBkZXRlY3RlZC5cbiIsIHBjaV9uYW1lKHBkZXYpLAorCSAgICAgICBpZGQtPmlkZF92YXJpYW50ID09IElPQzRfVkFSSUFOVF9JTzkgPyAiSU85IiA6CisJICAgICAgIGlkZC0+aWRkX3ZhcmlhbnQgPT0gSU9DNF9WQVJJQU5UX1BDSV9SVCA/ICJQQ0ktUlQiIDoKKwkgICAgICAgaWRkLT5pZGRfdmFyaWFudCA9PSBJT0M0X1ZBUklBTlRfSU8xMCA/ICJJTzEwIiA6ICJ1bmtub3duIik7CisKIAkvKiBJbml0aWFsaXplIElPQzQgKi8KIAlwY2lfcmVhZF9jb25maWdfZHdvcmQoaWRkLT5pZGRfcGRldiwgUENJX0NPTU1BTkQsICZwY21kKTsKIAlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKGlkZC0+aWRkX3BkZXYsIFBDSV9DT01NQU5ELApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9NYWtlZmlsZQppbmRleCA5YjdkOTc2Li5jNzEyM2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3VzYi9NYWtlZmlsZQpAQCAtNDgsNiArNDgsNyBAQAogb2JqLSQoQ09ORklHX1VTQl9TRVJJQUwpCSs9IHNlcmlhbC8KIAogb2JqLSQoQ09ORklHX1VTQl9BVUVSU1dBTEQpCSs9IG1pc2MvCitvYmotJChDT05GSUdfVVNCX0NZN0M2MykJKz0gbWlzYy8KIG9iai0kKENPTkZJR19VU0JfQ1lUSEVSTSkJKz0gbWlzYy8KIG9iai0kKENPTkZJR19VU0JfRU1JMjYpCQkrPSBtaXNjLwogb2JqLSQoQ09ORklHX1VTQl9FTUk2MikJCSs9IG1pc2MvCkBAIC02MSw2ICs2Miw3IEBACiBvYmotJChDT05GSUdfVVNCX1VTUzcyMCkJKz0gbWlzYy8KIG9iai0kKENPTkZJR19VU0JfUEhJREdFVFNFUlZPKQkrPSBtaXNjLwogb2JqLSQoQ09ORklHX1VTQl9TSVNVU0JWR0EpCSs9IG1pc2MvCitvYmotJChDT05GSUdfVVNCX0FQUExFRElTUExBWSkJKz0gbWlzYy8KIAogb2JqLSQoQ09ORklHX1VTQl9BVE0pCQkrPSBhdG0vCiBvYmotJChDT05GSUdfVVNCX1NQRUVEVE9VQ0gpCSs9IGF0bS8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwppbmRleCA1NDYyNDk4Li5hMzg3MDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMKKysrIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCkBAIC0xMDM5LDcgKzEwMzksNyBAQAogCXRhc2tsZXRfc2NoZWR1bGUoKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqKSBkYXRhKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVzYmF0bV9pbml0X2NoYW5uZWwoc3RydWN0IHVzYmF0bV9jaGFubmVsICpjaGFubmVsKQorc3RhdGljIHZvaWQgdXNiYXRtX2luaXRfY2hhbm5lbChzdHJ1Y3QgdXNiYXRtX2NoYW5uZWwgKmNoYW5uZWwpCiB7CiAJc3Bpbl9sb2NrX2luaXQoJmNoYW5uZWwtPmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZjaGFubmVsLT5saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS94dXNiYXRtLmMgYi9kcml2ZXJzL3VzYi9hdG0veHVzYmF0bS5jCmluZGV4IDQyZDY4MjMuLjcwMTI1YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2F0bS94dXNiYXRtLmMKKysrIGIvZHJpdmVycy91c2IvYXRtL3h1c2JhdG0uYwpAQCAtMjAsNyArMjAsNiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgkJLyogRklYTUU6IHJlcXVpcmVkIGJ5IGxpbnV4L2V0aGVyZGV2aWNlLmggKi8KICNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgkJLyogZm9yIHJhbmRvbV9ldGhlcl9hZGRyKCkgKi8KIAogI2luY2x1ZGUgInVzYmF0bS5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCmluZGV4IDZkZDMzOWYuLmQ0MWRjNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2NkYy5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9jZGMuaD4KICNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CiAjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KQEAgLTEyNyw4ICsxMjcsOCBAQAogCQkJd2ItPnVzZSA9IDE7CiAJCQlyZXR1cm4gd2JuOwogCQl9Ci0JCXdibiA9ICh3Ym4gKyAxKSAlIEFDTV9OV0I7Ci0JCWlmICgrK2kgPj0gQUNNX05XQikKKwkJd2JuID0gKHdibiArIDEpICUgQUNNX05XOworCQlpZiAoKytpID49IEFDTV9OVykKIAkJCXJldHVybiAtMTsKIAl9CiB9CkBAIC0xNDIsMTAgKzE0Miw5IEBACiB7CiAJaW50IGksIG47CiAKLQluID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgQUNNX05XQjsgaSsrKSB7Ci0JCWlmICghYWNtLT53YltpXS51c2UpCi0JCQluKys7CisJbiA9IEFDTV9OVzsKKwlmb3IgKGkgPSAwOyBpIDwgQUNNX05XOyBpKyspIHsKKwkJbiAtPSBhY20tPndiW2ldLnVzZTsKIAl9CiAJcmV0dXJuIG47CiB9CkBAIC0xNjcsNyArMTY2LDcgQEAKIAlhY20tPndyaXRlX3JlYWR5ID0gMTsKIAl3Ym4gPSBhY20tPndyaXRlX2N1cnJlbnQ7CiAJYWNtX3diX2ZyZWUoYWNtLCB3Ym4pOwotCWFjbS0+d3JpdGVfY3VycmVudCA9ICh3Ym4gKyAxKSAlIEFDTV9OV0I7CisJYWNtLT53cml0ZV9jdXJyZW50ID0gKHdibiArIDEpICUgQUNNX05XOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFjbS0+d3JpdGVfbG9jaywgZmxhZ3MpOwogfQogCkBAIC0yOTEsMjIgKzI5MCwzMiBAQAogCXN0cnVjdCBhY21fcmIgKmJ1ZjsKIAlzdHJ1Y3QgYWNtX3J1ICpyY3YgPSB1cmItPmNvbnRleHQ7CiAJc3RydWN0IGFjbSAqYWNtID0gcmN2LT5pbnN0YW5jZTsKKwlpbnQgc3RhdHVzID0gdXJiLT5zdGF0dXM7CiAJZGJnKCJFbnRlcmluZyBhY21fcmVhZF9idWxrIHdpdGggc3RhdHVzICVkXG4iLCB1cmItPnN0YXR1cyk7CiAKIAlpZiAoIUFDTV9SRUFEWShhY20pKQogCQlyZXR1cm47CiAKLQlpZiAodXJiLT5zdGF0dXMpCi0JCWRldl9kYmcoJmFjbS0+ZGF0YS0+ZGV2LCAiYnVsayByeCBzdGF0dXMgJWRcbiIsIHVyYi0+c3RhdHVzKTsKKwlpZiAoc3RhdHVzKQorCQlkZXZfZGJnKCZhY20tPmRhdGEtPmRldiwgImJ1bGsgcnggc3RhdHVzICVkXG4iLCBzdGF0dXMpOwogCiAJYnVmID0gcmN2LT5idWZmZXI7CiAJYnVmLT5zaXplID0gdXJiLT5hY3R1YWxfbGVuZ3RoOwogCi0Jc3Bpbl9sb2NrKCZhY20tPnJlYWRfbG9jayk7Ci0JbGlzdF9hZGRfdGFpbCgmcmN2LT5saXN0LCAmYWNtLT5zcGFyZV9yZWFkX3VyYnMpOwotCWxpc3RfYWRkX3RhaWwoJmJ1Zi0+bGlzdCwgJmFjbS0+ZmlsbGVkX3JlYWRfYnVmcyk7Ci0Jc3Bpbl91bmxvY2soJmFjbS0+cmVhZF9sb2NrKTsKLQorCWlmIChsaWtlbHkoc3RhdHVzID09IDApKSB7CisJCXNwaW5fbG9jaygmYWNtLT5yZWFkX2xvY2spOworCQlsaXN0X2FkZF90YWlsKCZyY3YtPmxpc3QsICZhY20tPnNwYXJlX3JlYWRfdXJicyk7CisJCWxpc3RfYWRkX3RhaWwoJmJ1Zi0+bGlzdCwgJmFjbS0+ZmlsbGVkX3JlYWRfYnVmcyk7CisJCXNwaW5fdW5sb2NrKCZhY20tPnJlYWRfbG9jayk7CisJfSBlbHNlIHsKKwkJLyogd2UgZHJvcCB0aGUgYnVmZmVyIGR1ZSB0byBhbiBlcnJvciAqLworCQlzcGluX2xvY2soJmFjbS0+cmVhZF9sb2NrKTsKKwkJbGlzdF9hZGRfdGFpbCgmcmN2LT5saXN0LCAmYWNtLT5zcGFyZV9yZWFkX3VyYnMpOworCQlsaXN0X2FkZCgmYnVmLT5saXN0LCAmYWNtLT5zcGFyZV9yZWFkX2J1ZnMpOworCQlzcGluX3VubG9jaygmYWNtLT5yZWFkX2xvY2spOworCQkvKiBuZXZlcnRoZWxlc3MgdGhlIHRhc2tsZXQgbXVzdCBiZSBraWNrZWQgdW5jb25kaXRpb25hbGx5CisJCXNvIHRoZSBxdWV1ZSBjYW5ub3QgZHJ5IHVwICovCisJfQogCXRhc2tsZXRfc2NoZWR1bGUoJmFjbS0+dXJiX3Rhc2spOwogfQogCkBAIC00NjQsMTAgKzQ3MywxMCBAQAogCUlOSVRfTElTVF9IRUFEKCZhY20tPnNwYXJlX3JlYWRfdXJicyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFjbS0+c3BhcmVfcmVhZF9idWZzKTsKIAlJTklUX0xJU1RfSEVBRCgmYWNtLT5maWxsZWRfcmVhZF9idWZzKTsKLQlmb3IgKGkgPSAwOyBpIDwgQUNNX05SVTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGFjbS0+cnhfYnVmbGltaXQ7IGkrKykgewogCQlsaXN0X2FkZCgmKGFjbS0+cnVbaV0ubGlzdCksICZhY20tPnNwYXJlX3JlYWRfdXJicyk7CiAJfQotCWZvciAoaSA9IDA7IGkgPCBBQ01fTlJCOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgYWNtLT5yeF9idWZsaW1pdDsgaSsrKSB7CiAJCWxpc3RfYWRkKCYoYWNtLT5yYltpXS5saXN0KSwgJmFjbS0+c3BhcmVfcmVhZF9idWZzKTsKIAl9CiAKQEAgLTQ4OCwxNCArNDk3LDE1IEBACiAKIHN0YXRpYyB2b2lkIGFjbV90dHlfdW5yZWdpc3RlcihzdHJ1Y3QgYWNtICphY20pCiB7Ci0JaW50IGk7CisJaW50IGksbnI7CiAKKwluciA9IGFjbS0+cnhfYnVmbGltaXQ7CiAJdHR5X3VucmVnaXN0ZXJfZGV2aWNlKGFjbV90dHlfZHJpdmVyLCBhY20tPm1pbm9yKTsKIAl1c2JfcHV0X2ludGYoYWNtLT5jb250cm9sKTsKIAlhY21fdGFibGVbYWNtLT5taW5vcl0gPSBOVUxMOwogCXVzYl9mcmVlX3VyYihhY20tPmN0cmx1cmIpOwogCXVzYl9mcmVlX3VyYihhY20tPndyaXRldXJiKTsKLQlmb3IgKGkgPSAwOyBpIDwgQUNNX05SVTsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQogCQl1c2JfZnJlZV91cmIoYWNtLT5ydVtpXS51cmIpOwogCWtmcmVlKGFjbSk7CiB9CkBAIC01MDMsMTggKzUxMywxOSBAQAogc3RhdGljIHZvaWQgYWNtX3R0eV9jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAlzdHJ1Y3QgYWNtICphY20gPSB0dHktPmRyaXZlcl9kYXRhOwotCWludCBpOworCWludCBpLG5yOwogCiAJaWYgKCFhY20gfHwgIWFjbS0+dXNlZCkKIAkJcmV0dXJuOwogCisJbnIgPSBhY20tPnJ4X2J1ZmxpbWl0OwogCW11dGV4X2xvY2soJm9wZW5fbXV0ZXgpOwogCWlmICghLS1hY20tPnVzZWQpIHsKIAkJaWYgKGFjbS0+ZGV2KSB7CiAJCQlhY21fc2V0X2NvbnRyb2woYWNtLCBhY20tPmN0cmxvdXQgPSAwKTsKIAkJCXVzYl9raWxsX3VyYihhY20tPmN0cmx1cmIpOwogCQkJdXNiX2tpbGxfdXJiKGFjbS0+d3JpdGV1cmIpOwotCQkJZm9yIChpID0gMDsgaSA8IEFDTV9OUlU7IGkrKykKKwkJCWZvciAoaSA9IDA7IGkgPCBucjsgaSsrKQogCQkJCXVzYl9raWxsX3VyYihhY20tPnJ1W2ldLnVyYik7CiAJCX0gZWxzZQogCQkJYWNtX3R0eV91bnJlZ2lzdGVyKGFjbSk7CkBAIC01NzYsNyArNTg3LDcgQEAKIAkvKgogCSAqIFRoaXMgaXMgaW5hY2N1cmF0ZSAob3ZlcmNvdW50cyksIGJ1dCBpdCB3b3Jrcy4KIAkgKi8KLQlyZXR1cm4gKEFDTV9OV0IgLSBhY21fd2JfaXNfYXZhaWwoYWNtKSkgKiBhY20tPndyaXRlc2l6ZTsKKwlyZXR1cm4gKEFDTV9OVyAtIGFjbV93Yl9pc19hdmFpbChhY20pKSAqIGFjbS0+d3JpdGVzaXplOwogfQogCiBzdGF0aWMgdm9pZCBhY21fdHR5X3Rocm90dGxlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCkBAIC03MTIsNyArNzIzLDcgQEAKIAlpbnQgaTsKIAlzdHJ1Y3QgYWNtX3diICp3YjsKIAotCWZvciAod2IgPSAmYWNtLT53YlswXSwgaSA9IDA7IGkgPCBBQ01fTldCOyBpKyssIHdiKyspIHsKKwlmb3IgKHdiID0gJmFjbS0+d2JbMF0sIGkgPSAwOyBpIDwgQUNNX05XOyBpKyssIHdiKyspIHsKIAkJdXNiX2J1ZmZlcl9mcmVlKGFjbS0+ZGV2LCBhY20tPndyaXRlc2l6ZSwgd2ItPmJ1Ziwgd2ItPmRtYWgpOwogCX0KIH0KQEAgLTcyMyw3ICs3MzQsNyBAQAogCWludCBpOwogCXN0cnVjdCBhY21fd2IgKndiOwogCi0JZm9yICh3YiA9ICZhY20tPndiWzBdLCBpID0gMDsgaSA8IEFDTV9OV0I7IGkrKywgd2IrKykgeworCWZvciAod2IgPSAmYWNtLT53YlswXSwgaSA9IDA7IGkgPCBBQ01fTlc7IGkrKywgd2IrKykgewogCQl3Yi0+YnVmID0gdXNiX2J1ZmZlcl9hbGxvYyhhY20tPmRldiwgYWNtLT53cml0ZXNpemUsIEdGUF9LRVJORUwsCiAJCSAgICAmd2ItPmRtYWgpOwogCQlpZiAoIXdiLT5idWYpIHsKQEAgLTc2MCwxMCArNzcxLDE0IEBACiAJaW50IGNhbGxfaW50ZXJmYWNlX251bSA9IC0xOwogCWludCBkYXRhX2ludGVyZmFjZV9udW07CiAJdW5zaWduZWQgbG9uZyBxdWlya3M7CisJaW50IG51bV9yeF9idWY7CiAJaW50IGk7CiAKLQkvKiBoYW5kbGUgcXVpcmtzIGRlYWRseSB0byBub3JtYWwgcHJvYmluZyovCisJLyogbm9ybWFsIHF1aXJrcyAqLwogCXF1aXJrcyA9ICh1bnNpZ25lZCBsb25nKWlkLT5kcml2ZXJfaW5mbzsKKwludW1fcnhfYnVmID0gKHF1aXJrcyA9PSBTSU5HTEVfUlhfVVJCKSA/IDEgOiBBQ01fTlI7CisKKwkvKiBoYW5kbGUgcXVpcmtzIGRlYWRseSB0byBub3JtYWwgcHJvYmluZyovCiAJaWYgKHF1aXJrcyA9PSBOT19VTklPTl9OT1JNQUwpIHsKIAkJZGF0YV9pbnRlcmZhY2UgPSB1c2JfaWZudW1fdG9faWYodXNiX2RldiwgMSk7CiAJCWNvbnRyb2xfaW50ZXJmYWNlID0gdXNiX2lmbnVtX3RvX2lmKHVzYl9kZXYsIDApOwpAQCAtOTAwLDcgKzkxNSw3IEBACiAJfQogCiAJY3RybHNpemUgPSBsZTE2X3RvX2NwdShlcGN0cmwtPndNYXhQYWNrZXRTaXplKTsKLQlyZWFkc2l6ZSA9IGxlMTZfdG9fY3B1KGVwcmVhZC0+d01heFBhY2tldFNpemUpKjI7CisJcmVhZHNpemUgPSBsZTE2X3RvX2NwdShlcHJlYWQtPndNYXhQYWNrZXRTaXplKSogKCBxdWlya3MgPT0gU0lOR0xFX1JYX1VSQiA/IDEgOiAyKTsKIAlhY20tPndyaXRlc2l6ZSA9IGxlMTZfdG9fY3B1KGVwd3JpdGUtPndNYXhQYWNrZXRTaXplKTsKIAlhY20tPmNvbnRyb2wgPSBjb250cm9sX2ludGVyZmFjZTsKIAlhY20tPmRhdGEgPSBkYXRhX2ludGVyZmFjZTsKQEAgLTkwOSw2ICs5MjQsNyBAQAogCWFjbS0+Y3RybF9jYXBzID0gYWNfbWFuYWdlbWVudF9mdW5jdGlvbjsKIAlhY20tPmN0cmxzaXplID0gY3RybHNpemU7CiAJYWNtLT5yZWFkc2l6ZSA9IHJlYWRzaXplOworCWFjbS0+cnhfYnVmbGltaXQgPSBudW1fcnhfYnVmOwogCWFjbS0+dXJiX3Rhc2suZnVuYyA9IGFjbV9yeF90YXNrbGV0OwogCWFjbS0+dXJiX3Rhc2suZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBhY207CiAJSU5JVF9XT1JLKCZhY20tPndvcmssIGFjbV9zb2Z0aW50LCBhY20pOwpAQCAtOTM1LDcgKzk1MSw3IEBACiAJCWRldl9kYmcoJmludGYtPmRldiwgIm91dCBvZiBtZW1vcnkgKGN0cmx1cmIga21hbGxvYylcbiIpOwogCQlnb3RvIGFsbG9jX2ZhaWw1OwogCX0KLQlmb3IgKGkgPSAwOyBpIDwgQUNNX05SVTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IG51bV9yeF9idWY7IGkrKykgewogCQlzdHJ1Y3QgYWNtX3J1ICpyY3YgPSAmKGFjbS0+cnVbaV0pOwogCiAJCWlmICghKHJjdi0+dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKSkpIHsKQEAgLTk0NiwxMCArOTYyLDkgQEAKIAkJcmN2LT51cmItPnRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9OT19UUkFOU0ZFUl9ETUFfTUFQOwogCQlyY3YtPmluc3RhbmNlID0gYWNtOwogCX0KLQlmb3IgKGkgPSAwOyBpIDwgQUNNX05SQjsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IG51bV9yeF9idWY7IGkrKykgewogCQlzdHJ1Y3QgYWNtX3JiICpidWYgPSAmKGFjbS0+cmJbaV0pOwogCi0JCS8vIFVzaW5nIHVzYl9idWZmZXJfYWxsb2MgaW5zdGVhZCBvZiBrbWFsbG9jIGFzIE9saXZlciBzdWdnZXN0ZWQKIAkJaWYgKCEoYnVmLT5iYXNlID0gdXNiX2J1ZmZlcl9hbGxvYyhhY20tPmRldiwgcmVhZHNpemUsIEdGUF9LRVJORUwsICZidWYtPmRtYSkpKSB7CiAJCQlkZXZfZGJnKCZpbnRmLT5kZXYsICJvdXQgb2YgbWVtb3J5IChyZWFkIGJ1ZnMgdXNiX2J1ZmZlcl9hbGxvYylcbiIpOwogCQkJZ290byBhbGxvY19mYWlsNzsKQEAgLTk4OCw5ICsxMDAzLDkgQEAKIAlyZXR1cm4gMDsKIAogYWxsb2NfZmFpbDc6Ci0JZm9yIChpID0gMDsgaSA8IEFDTV9OUkI7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3J4X2J1ZjsgaSsrKQogCQl1c2JfYnVmZmVyX2ZyZWUodXNiX2RldiwgYWNtLT5yZWFkc2l6ZSwgYWNtLT5yYltpXS5iYXNlLCBhY20tPnJiW2ldLmRtYSk7Ci0JZm9yIChpID0gMDsgaSA8IEFDTV9OUlU7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3J4X2J1ZjsgaSsrKQogCQl1c2JfZnJlZV91cmIoYWNtLT5ydVtpXS51cmIpOwogCXVzYl9mcmVlX3VyYihhY20tPmN0cmx1cmIpOwogYWxsb2NfZmFpbDU6CkBAIC0xMDI3LDcgKzEwNDIsNyBAQAogCiAJdXNiX2tpbGxfdXJiKGFjbS0+Y3RybHVyYik7CiAJdXNiX2tpbGxfdXJiKGFjbS0+d3JpdGV1cmIpOwotCWZvciAoaSA9IDA7IGkgPCBBQ01fTlJVOyBpKyspCisJZm9yIChpID0gMDsgaSA8IGFjbS0+cnhfYnVmbGltaXQ7IGkrKykKIAkJdXNiX2tpbGxfdXJiKGFjbS0+cnVbaV0udXJiKTsKIAogCUlOSVRfTElTVF9IRUFEKCZhY20tPmZpbGxlZF9yZWFkX2J1ZnMpOwpAQCAtMTAzOSw3ICsxMDU0LDcgQEAKIAogCWFjbV93cml0ZV9idWZmZXJzX2ZyZWUoYWNtKTsKIAl1c2JfYnVmZmVyX2ZyZWUodXNiX2RldiwgYWNtLT5jdHJsc2l6ZSwgYWNtLT5jdHJsX2J1ZmZlciwgYWNtLT5jdHJsX2RtYSk7Ci0JZm9yIChpID0gMDsgaSA8IEFDTV9OUkI7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgYWNtLT5yeF9idWZsaW1pdDsgaSsrKQogCQl1c2JfYnVmZmVyX2ZyZWUodXNiX2RldiwgYWNtLT5yZWFkc2l6ZSwgYWNtLT5yYltpXS5iYXNlLCBhY20tPnJiW2ldLmRtYSk7CiAKIAl1c2JfZHJpdmVyX3JlbGVhc2VfaW50ZXJmYWNlKCZhY21fZHJpdmVyLCBpbnRmID09IGFjbS0+Y29udHJvbCA/IGFjbS0+ZGF0YSA6IGludGYpOwpAQCAtMTA2OCw2ICsxMDgzLDkgQEAKIAl7IFVTQl9ERVZJQ0UoMHgwNDgyLCAweDAyMDMpLCAvKiBLWU9DRVJBIEFILUszMDAxViAqLwogCS5kcml2ZXJfaW5mbyA9IE5PX1VOSU9OX05PUk1BTCwgLyogaGFzIG5vIHVuaW9uIGRlc2NyaXB0b3IgKi8KIAl9LAorCXsgVVNCX0RFVklDRSgweDBhY2UsIDB4MTYwOCksIC8qIFp5REFTIDU2SyBVU0IgTU9ERU0gKi8KKwkuZHJpdmVyX2luZm8gPSBTSU5HTEVfUlhfVVJCLCAvKiBmaXJtd2FyZSBidWcgKi8KKwl9LAogCS8qIGNvbnRyb2wgaW50ZXJmYWNlcyB3aXRoIHZhcmlvdXMgQVQtY29tbWFuZCBzZXRzICovCiAJeyBVU0JfSU5URVJGQUNFX0lORk8oVVNCX0NMQVNTX0NPTU0sIFVTQl9DRENfU1VCQ0xBU1NfQUNNLAogCQlVU0JfQ0RDX0FDTV9QUk9UT19BVF9WMjVURVIpIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmggYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKaW5kZXggZmQyYWFjY2QuLjFiY2FlYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaAorKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKQEAgLTU2LDExICs1NiwxMSBAQAogICogaW4gbGluZSBkaXNjaXBsaW5lcy4gVGhleSBhc2sgZm9yIGVtcHR5IHNwYWNlIGFtb3VudCwgcmVjZWl2ZSBvdXIgVVJCIHNpemUsCiAgKiBhbmQgcHJvY2VlZCB0byBpc3N1ZSBzZXZlcmFsIDEtY2hhcmFjdGVyIHdyaXRlcywgYXNzdW1pbmcgdGhleSB3aWxsIGZpdC4KICAqIFRoZSB2ZXJ5IGZpcnN0IHdyaXRlIHRha2VzIGEgY29tcGxldGUgVVJCLiBGb3J0dW5hdGVseSwgdGhpcyBvbmx5IGhhcHBlbnMKLSAqIHdoZW4gcHJvY2Vzc2luZyBvbmxjciwgc28gd2Ugb25seSBuZWVkIDIgYnVmZmVycy4KKyAqIHdoZW4gcHJvY2Vzc2luZyBvbmxjciwgc28gd2Ugb25seSBuZWVkIDIgYnVmZmVycy4gVGhlc2UgdmFsdWVzIG11c3QgYmUKKyAqIHBvd2VycyBvZiAyLgogICovCi0jZGVmaW5lIEFDTV9OV0IgIDIKLSNkZWZpbmUgQUNNX05SVSAgMTYKLSNkZWZpbmUgQUNNX05SQiAgMTYKKyNkZWZpbmUgQUNNX05XICAyCisjZGVmaW5lIEFDTV9OUiAgMTYKIAogc3RydWN0IGFjbV93YiB7CiAJdW5zaWduZWQgY2hhciAqYnVmOwpAQCAtOTEsOSArOTEsMTAgQEAKIAlzdHJ1Y3QgdXJiICpjdHJsdXJiLCAqd3JpdGV1cmI7CQkJLyogdXJicyAqLwogCXU4ICpjdHJsX2J1ZmZlcjsJCQkJLyogYnVmZmVycyBvZiB1cmJzICovCiAJZG1hX2FkZHJfdCBjdHJsX2RtYTsJCQkJLyogZG1hIGhhbmRsZXMgb2YgYnVmZmVycyAqLwotCXN0cnVjdCBhY21fd2Igd2JbQUNNX05XQl07Ci0Jc3RydWN0IGFjbV9ydSBydVtBQ01fTlJVXTsKLQlzdHJ1Y3QgYWNtX3JiIHJiW0FDTV9OUkJdOworCXN0cnVjdCBhY21fd2Igd2JbQUNNX05XXTsKKwlzdHJ1Y3QgYWNtX3J1IHJ1W0FDTV9OUl07CisJc3RydWN0IGFjbV9yYiByYltBQ01fTlJdOworCWludCByeF9idWZsaW1pdDsKIAlpbnQgcnhfZW5kcG9pbnQ7CiAJc3BpbmxvY2tfdCByZWFkX2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCBzcGFyZV9yZWFkX3VyYnM7CkBAIC0xMjIsMyArMTIzLDQgQEAKIAogLyogY29uc3RhbnRzIGRlc2NyaWJpbmcgdmFyaW91cyBxdWlya3MgYW5kIGVycm9ycyAqLwogI2RlZmluZSBOT19VTklPTl9OT1JNQUwJCQkxCisjZGVmaW5lIFNJTkdMRV9SWF9VUkIJCQkyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL01ha2VmaWxlIGIvZHJpdmVycy91c2IvY29yZS9NYWtlZmlsZQppbmRleCAyODMyOWRkLi5lYzUxMDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvTWFrZWZpbGUKQEAgLTMsNyArMyw4IEBACiAjCiAKIHVzYmNvcmUtb2Jqcwk6PSB1c2IubyBodWIubyBoY2QubyB1cmIubyBtZXNzYWdlLm8gZHJpdmVyLm8gXAotCQkJY29uZmlnLm8gZmlsZS5vIGJ1ZmZlci5vIHN5c2ZzLm8gZGV2aW8ubyBub3RpZnkubworCQkJY29uZmlnLm8gZmlsZS5vIGJ1ZmZlci5vIHN5c2ZzLm8gZW5kcG9pbnQubyBcCisJCQlkZXZpby5vIG5vdGlmeS5vCiAKIGlmZXEgKCQoQ09ORklHX1BDSSkseSkKIAl1c2Jjb3JlLW9ianMJKz0gaGNkLXBjaS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2RldmlvLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RldmlvLmMKaW5kZXggNTQ1ZGEzNy4uM2Y4ZTA2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9kZXZpby5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZGV2aW8uYwpAQCAtNTE1LDE5ICs1MTUsMTkgQEAKIAogc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlICp1c2JkZXZfbG9va3VwX21pbm9yKGludCBtaW5vcikKIHsKLQlzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXY7Ci0Jc3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IE5VTEw7CisJc3RydWN0IGRldmljZSAqZGV2aWNlOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gTlVMTDsKIAogCWRvd24oJnVzYl9kZXZpY2VfY2xhc3MtPnNlbSk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShjbGFzc19kZXYsICZ1c2JfZGV2aWNlX2NsYXNzLT5jaGlsZHJlbiwgbm9kZSkgewotCQlpZiAoY2xhc3NfZGV2LT5kZXZ0ID09IE1LREVWKFVTQl9ERVZJQ0VfTUFKT1IsIG1pbm9yKSkgewotCQkJZGV2ID0gY2xhc3NfZGV2LT5jbGFzc19kYXRhOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2aWNlLCAmdXNiX2RldmljZV9jbGFzcy0+ZGV2aWNlcywgbm9kZSkgeworCQlpZiAoZGV2aWNlLT5kZXZ0ID09IE1LREVWKFVTQl9ERVZJQ0VfTUFKT1IsIG1pbm9yKSkgeworCQkJdWRldiA9IGRldmljZS0+cGxhdGZvcm1fZGF0YTsKIAkJCWJyZWFrOwogCQl9CiAJfQogCXVwKCZ1c2JfZGV2aWNlX2NsYXNzLT5zZW0pOwogCi0JcmV0dXJuIGRldjsKKwlyZXR1cm4gdWRldjsKIH07CiAKIC8qCkBAIC04MjMsOCArODIzLDcgQEAKIAogc3RhdGljIGludCBwcm9jX3Jlc2V0ZGV2aWNlKHN0cnVjdCBkZXZfc3RhdGUgKnBzKQogewotCXJldHVybiB1c2JfcmVzZXRfZGV2aWNlKHBzLT5kZXYpOwotCisJcmV0dXJuIHVzYl9yZXNldF9jb21wb3NpdGVfZGV2aWNlKHBzLT5kZXYsIE5VTEwpOwogfQogCiBzdGF0aWMgaW50IHByb2Nfc2V0aW50ZihzdHJ1Y3QgZGV2X3N0YXRlICpwcywgdm9pZCBfX3VzZXIgKmFyZykKQEAgLTkyMyw4ICs5MjIsOCBAQAogCQlpZiAoKGVwLT5kZXNjLmJtQXR0cmlidXRlcyAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLKQogCQkJCSE9IFVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0wpCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJLyogbWluIDggYnl0ZSBzZXR1cCBwYWNrZXQsIG1heCBhcmJpdHJhcnkgKi8KLQkJaWYgKHV1cmItPmJ1ZmZlcl9sZW5ndGggPCA4IHx8IHV1cmItPmJ1ZmZlcl9sZW5ndGggPiBQQUdFX1NJWkUpCisJCS8qIG1pbiA4IGJ5dGUgc2V0dXAgcGFja2V0LCBtYXggOCBieXRlIHNldHVwIHBsdXMgYW4gYXJiaXRyYXJ5IGRhdGEgc3RhZ2UgKi8KKwkJaWYgKHV1cmItPmJ1ZmZlcl9sZW5ndGggPCA4IHx8IHV1cmItPmJ1ZmZlcl9sZW5ndGggPiAoOCArIE1BWF9VU0JGU19CVUZGRVJfU0laRSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJaWYgKCEoZHIgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0KSwgR0ZQX0tFUk5FTCkpKQogCQkJcmV0dXJuIC1FTk9NRU07CkBAIC05ODIsNyArOTgxLDggQEAKIAkJCXJldHVybiAtRUZBVUxUOwogCQl9CiAJCWZvciAodG90bGVuID0gdSA9IDA7IHUgPCB1dXJiLT5udW1iZXJfb2ZfcGFja2V0czsgdSsrKSB7Ci0JCQlpZiAoaXNvcGt0W3VdLmxlbmd0aCA+IDEwMjMpIHsKKwkJCS8qIGFyYml0cmFyeSBsaW1pdCwgc3VmZmljaWVudCBmb3IgVVNCIDIuMCBoaWdoLWJhbmR3aWR0aCBpc28gKi8KKwkJCWlmIChpc29wa3RbdV0ubGVuZ3RoID4gODE5MikgewogCQkJCWtmcmVlKGlzb3BrdCk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CkBAIC0xMDc4LDcgKzEwNzgsOSBAQAogCWlmIChjb3B5X2Zyb21fdXNlcigmdXVyYiwgYXJnLCBzaXplb2YodXVyYikpKQogCQlyZXR1cm4gLUVGQVVMVDsKIAotCXJldHVybiBwcm9jX2RvX3N1Ym1pdHVyYihwcywgJnV1cmIsICgoKHN0cnVjdCB1c2JkZXZmc191cmIgX191c2VyICopYXJnKS0+aXNvX2ZyYW1lX2Rlc2MpLCBhcmcpOworCXJldHVybiBwcm9jX2RvX3N1Ym1pdHVyYihwcywgJnV1cmIsCisJCShzdHJ1Y3QgdXNiZGV2ZnNfaXNvX3BhY2tldF9kZXNjIF9fdXNlciAqKXV1cmIuaXNvX2ZyYW1lX2Rlc2MsCisJCWFyZyk7CiB9CiAKIHN0YXRpYyBpbnQgcHJvY191bmxpbmt1cmIoc3RydWN0IGRldl9zdGF0ZSAqcHMsIHZvaWQgX191c2VyICphcmcpCkBAIC0xMjAzLDcgKzEyMDUsOSBAQAogCWlmIChnZXRfdXJiMzIoJnV1cmIsKHN0cnVjdCB1c2JkZXZmc191cmIzMiAqKWFyZykpCiAJCXJldHVybiAtRUZBVUxUOwogCi0JcmV0dXJuIHByb2NfZG9fc3VibWl0dXJiKHBzLCAmdXVyYiwgKChzdHJ1Y3QgdXNiZGV2ZnNfdXJiMzIgX191c2VyICopYXJnKS0+aXNvX2ZyYW1lX2Rlc2MsIGFyZyk7CisJcmV0dXJuIHByb2NfZG9fc3VibWl0dXJiKHBzLCAmdXVyYiwKKwkJKHN0cnVjdCB1c2JkZXZmc19pc29fcGFja2V0X2Rlc2MgX191c2VyICopdXVyYi5pc29fZnJhbWVfZGVzYywKKwkJYXJnKTsKIH0KIAogc3RhdGljIGludCBwcm9jZXNzY29tcGxfY29tcGF0KHN0cnVjdCBhc3luYyAqYXMsIHZvaWQgX191c2VyICogX191c2VyICphcmcpCkBAIC0xNTc2LDE2ICsxNTgwLDE2IEBACiB7CiAJaW50IG1pbm9yID0gKChkZXYtPmJ1cy0+YnVzbnVtLTEpICogMTI4KSArIChkZXYtPmRldm51bS0xKTsKIAotCWRldi0+Y2xhc3NfZGV2ID0gY2xhc3NfZGV2aWNlX2NyZWF0ZSh1c2JfZGV2aWNlX2NsYXNzLCBOVUxMLAotCQkJCU1LREVWKFVTQl9ERVZJQ0VfTUFKT1IsIG1pbm9yKSwgJmRldi0+ZGV2LAorCWRldi0+dXNiZnNfZGV2ID0gZGV2aWNlX2NyZWF0ZSh1c2JfZGV2aWNlX2NsYXNzLCAmZGV2LT5kZXYsCisJCQkJTUtERVYoVVNCX0RFVklDRV9NQUpPUiwgbWlub3IpLAogCQkJCSJ1c2JkZXYlZC4lZCIsIGRldi0+YnVzLT5idXNudW0sIGRldi0+ZGV2bnVtKTsKIAotCWRldi0+Y2xhc3NfZGV2LT5jbGFzc19kYXRhID0gZGV2OworCWRldi0+dXNiZnNfZGV2LT5wbGF0Zm9ybV9kYXRhID0gZGV2OwogfQogCiBzdGF0aWMgdm9pZCB1c2JkZXZfcmVtb3ZlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpCiB7Ci0JY2xhc3NfZGV2aWNlX3VucmVnaXN0ZXIoZGV2LT5jbGFzc19kZXYpOworCWRldmljZV91bnJlZ2lzdGVyKGRldi0+dXNiZnNfZGV2KTsKIH0KIAogc3RhdGljIGludCB1c2JkZXZfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2VuZHBvaW50LmMgYi9kcml2ZXJzL3VzYi9jb3JlL2VuZHBvaW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3YjVhNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZW5kcG9pbnQuYwpAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIGRyaXZlcnMvdXNiL2NvcmUvZW5kcG9pbnQuYworICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMiwyMDA0LDIwMDYgR3JlZyBLcm9haC1IYXJ0bWFuCisgKiAoQykgQ29weXJpZ2h0IDIwMDIsMjAwNCBJQk0gQ29ycC4KKyAqIChDKSBDb3B5cmlnaHQgMjAwNiBOb3ZlbGwgSW5jLgorICoKKyAqIEVuZHBvaW50IHN5c2ZzIHN0dWZmCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlICJ1c2IuaCIKKworLyogZW5kcG9pbnQgc3R1ZmYgKi8KKworc3RydWN0IGVwX2RldmljZSB7CisJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OworCXN0cnVjdCBkZXZpY2UgZGV2OworfTsKKyNkZWZpbmUgdG9fZXBfZGV2aWNlKF9kZXYpIFwKKwljb250YWluZXJfb2YoX2Rldiwgc3RydWN0IGVwX2RldmljZSwgZGV2KQorCitzdHJ1Y3QgZXBfYXR0cmlidXRlIHsKKwlzdHJ1Y3QgYXR0cmlidXRlIGF0dHI7CisJc3NpemVfdCAoKnNob3cpKHN0cnVjdCB1c2JfZGV2aWNlICosCisJCQlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKiwgY2hhciAqKTsKK307CisjZGVmaW5lIHRvX2VwX2F0dHJpYnV0ZShfYXR0cikgXAorCWNvbnRhaW5lcl9vZihfYXR0ciwgc3RydWN0IGVwX2F0dHJpYnV0ZSwgYXR0cikKKworI2RlZmluZSB1c2JfZXBfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZykJCQlcCitzdGF0aWMgc3NpemVfdCBzaG93X2VwXyMjZmllbGQoc3RydWN0IGRldmljZSAqZGV2LAkJXAorCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAlcCisJCQkgICAgICAgY2hhciAqYnVmKQkJCVwKK3sJCQkJCQkJCVwKKwlzdHJ1Y3QgZXBfZGV2aWNlICplcCA9IHRvX2VwX2RldmljZShkZXYpOwkJXAorCXJldHVybiBzcHJpbnRmKGJ1ZiwgZm9ybWF0X3N0cmluZywgZXAtPmRlc2MtPmZpZWxkKTsJXAorfQkJCQkJCQkJXAorc3RhdGljIERFVklDRV9BVFRSKGZpZWxkLCBTX0lSVUdPLCBzaG93X2VwXyMjZmllbGQsIE5VTEwpOworCit1c2JfZXBfYXR0cihiTGVuZ3RoLCAiJTAyeFxuIikKK3VzYl9lcF9hdHRyKGJFbmRwb2ludEFkZHJlc3MsICIlMDJ4XG4iKQordXNiX2VwX2F0dHIoYm1BdHRyaWJ1dGVzLCAiJTAyeFxuIikKK3VzYl9lcF9hdHRyKGJJbnRlcnZhbCwgIiUwMnhcbiIpCisKK3N0YXRpYyBzc2l6ZV90IHNob3dfZXBfd01heFBhY2tldFNpemUoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGVwX2RldmljZSAqZXAgPSB0b19lcF9kZXZpY2UoZGV2KTsKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlMDR4XG4iLAorCQkJbGUxNl90b19jcHUoZXAtPmRlc2MtPndNYXhQYWNrZXRTaXplKSAmIDB4MDdmZik7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIod01heFBhY2tldFNpemUsIFNfSVJVR08sIHNob3dfZXBfd01heFBhY2tldFNpemUsIE5VTEwpOworCitzdGF0aWMgc3NpemVfdCBzaG93X2VwX3R5cGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICBjaGFyICpidWYpCit7CisJc3RydWN0IGVwX2RldmljZSAqZXAgPSB0b19lcF9kZXZpY2UoZGV2KTsKKwljaGFyICp0eXBlID0gInVua25vd24iOworCisJc3dpdGNoIChlcC0+ZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spIHsKKwljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0w6CisJCXR5cGUgPSAiQ29udHJvbCI7CisJCWJyZWFrOworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzoKKwkJdHlwZSA9ICJJc29jIjsKKwkJYnJlYWs7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9CVUxLOgorCQl0eXBlID0gIkJ1bGsiOworCQlicmVhazsKKwljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lOVDoKKwkJdHlwZSA9ICJJbnRlcnJ1cHQiOworCQlicmVhazsKKwl9CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIHR5cGUpOworfQorc3RhdGljIERFVklDRV9BVFRSKHR5cGUsIFNfSVJVR08sIHNob3dfZXBfdHlwZSwgTlVMTCk7CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfZXBfaW50ZXJ2YWwoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGVwX2RldmljZSAqZXAgPSB0b19lcF9kZXZpY2UoZGV2KTsKKwljaGFyIHVuaXQ7CisJdW5zaWduZWQgaW50ZXJ2YWwgPSAwOworCXVuc2lnbmVkIGluOworCisJaW4gPSAoZXAtPmRlc2MtPmJFbmRwb2ludEFkZHJlc3MgJiBVU0JfRElSX0lOKTsKKworCXN3aXRjaCAoZXAtPmRlc2MtPmJtQXR0cmlidXRlcyAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLKSB7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MOgorCQlpZiAoZXAtPnVkZXYtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIKSAJLyogdWZyYW1lcyBwZXIgTkFLICovCisJCQlpbnRlcnZhbCA9IGVwLT5kZXNjLT5iSW50ZXJ2YWw7CisJCWJyZWFrOworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzoKKwkJaW50ZXJ2YWwgPSAxIDw8IChlcC0+ZGVzYy0+YkludGVydmFsIC0gMSk7CisJCWJyZWFrOworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfQlVMSzoKKwkJaWYgKGVwLT51ZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCAmJiAhaW4pIC8qIHVmcmFtZXMgcGVyIE5BSyAqLworCQkJaW50ZXJ2YWwgPSBlcC0+ZGVzYy0+YkludGVydmFsOworCQlicmVhazsKKwljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lOVDoKKwkJaWYgKGVwLT51ZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCkKKwkJCWludGVydmFsID0gMSA8PCAoZXAtPmRlc2MtPmJJbnRlcnZhbCAtIDEpOworCQllbHNlCisJCQlpbnRlcnZhbCA9IGVwLT5kZXNjLT5iSW50ZXJ2YWw7CisJCWJyZWFrOworCX0KKwlpbnRlcnZhbCAqPSAoZXAtPnVkZXYtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIKSA/IDEyNSA6IDEwMDA7CisJaWYgKGludGVydmFsICUgMTAwMCkKKwkJdW5pdCA9ICd1JzsKKwllbHNlIHsKKwkJdW5pdCA9ICdtJzsKKwkJaW50ZXJ2YWwgLz0gMTAwMDsKKwl9CisKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZCVjc1xuIiwgaW50ZXJ2YWwsIHVuaXQpOworfQorc3RhdGljIERFVklDRV9BVFRSKGludGVydmFsLCBTX0lSVUdPLCBzaG93X2VwX2ludGVydmFsLCBOVUxMKTsKKworc3RhdGljIHNzaXplX3Qgc2hvd19lcF9kaXJlY3Rpb24oc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBlcF9kZXZpY2UgKmVwID0gdG9fZXBfZGV2aWNlKGRldik7CisJY2hhciAqZGlyZWN0aW9uOworCisJaWYgKChlcC0+ZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spID09CisJCQlVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MKQorCQlkaXJlY3Rpb24gPSAiYm90aCI7CisJZWxzZSBpZiAoZXAtPmRlc2MtPmJFbmRwb2ludEFkZHJlc3MgJiBVU0JfRElSX0lOKQorCQlkaXJlY3Rpb24gPSAiaW4iOworCWVsc2UKKwkJZGlyZWN0aW9uID0gIm91dCI7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIGRpcmVjdGlvbik7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIoZGlyZWN0aW9uLCBTX0lSVUdPLCBzaG93X2VwX2RpcmVjdGlvbiwgTlVMTCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICplcF9kZXZfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfYkxlbmd0aC5hdHRyLAorCSZkZXZfYXR0cl9iRW5kcG9pbnRBZGRyZXNzLmF0dHIsCisJJmRldl9hdHRyX2JtQXR0cmlidXRlcy5hdHRyLAorCSZkZXZfYXR0cl9iSW50ZXJ2YWwuYXR0ciwKKwkmZGV2X2F0dHJfd01heFBhY2tldFNpemUuYXR0ciwKKwkmZGV2X2F0dHJfaW50ZXJ2YWwuYXR0ciwKKwkmZGV2X2F0dHJfdHlwZS5hdHRyLAorCSZkZXZfYXR0cl9kaXJlY3Rpb24uYXR0ciwKKwlOVUxMLAorfTsKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGVwX2Rldl9hdHRyX2dycCA9IHsKKwkuYXR0cnMgPSBlcF9kZXZfYXR0cnMsCit9OworCitzdGF0aWMgc3RydWN0IGVuZHBvaW50X2NsYXNzIHsKKwlzdHJ1Y3Qga3JlZiBrcmVmOworCXN0cnVjdCBjbGFzcyAqY2xhc3M7Cit9ICplcF9jbGFzczsKKworc3RhdGljIGludCBpbml0X2VuZHBvaW50X2NsYXNzKHZvaWQpCit7CisJaW50IHJlc3VsdCA9IDA7CisKKwlpZiAoZXBfY2xhc3MgIT0gTlVMTCkgeworCQlrcmVmX2dldCgmZXBfY2xhc3MtPmtyZWYpOworCQlnb3RvIGV4aXQ7CisJfQorCisJZXBfY2xhc3MgPSBrbWFsbG9jKHNpemVvZigqZXBfY2xhc3MpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVwX2NsYXNzKSB7CisJCXJlc3VsdCA9IC1FTk9NRU07CisJCWdvdG8gZXhpdDsKKwl9CisKKwlrcmVmX2luaXQoJmVwX2NsYXNzLT5rcmVmKTsKKwllcF9jbGFzcy0+Y2xhc3MgPSBjbGFzc19jcmVhdGUoVEhJU19NT0RVTEUsICJ1c2JfZW5kcG9pbnQiKTsKKwlpZiAoSVNfRVJSKGVwX2NsYXNzLT5jbGFzcykpIHsKKwkJcmVzdWx0ID0gSVNfRVJSKGVwX2NsYXNzLT5jbGFzcyk7CisJCWtmcmVlKGVwX2NsYXNzKTsKKwkJZXBfY2xhc3MgPSBOVUxMOworCQlnb3RvIGV4aXQ7CisJfQorCitleGl0OgorCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfZW5kcG9pbnRfY2xhc3Moc3RydWN0IGtyZWYgKmtyZWYpCit7CisJLyogT2ssIHdlIGNoZWF0IGFzIHdlIGtub3cgd2Ugb25seSBoYXZlIG9uZSBlcF9jbGFzcyAqLworCWNsYXNzX2Rlc3Ryb3koZXBfY2xhc3MtPmNsYXNzKTsKKwlrZnJlZShlcF9jbGFzcyk7CisJZXBfY2xhc3MgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X2VuZHBvaW50X2NsYXNzKHZvaWQpCit7CisJaWYgKGVwX2NsYXNzKQorCQlrcmVmX3B1dCgmZXBfY2xhc3MtPmtyZWYsIHJlbGVhc2VfZW5kcG9pbnRfY2xhc3MpOworfQorCitzdGF0aWMgdm9pZCBlcF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGVwX2RldmljZSAqZXBfZGV2ID0gdG9fZXBfZGV2aWNlKGRldik7CisKKwlkZXZfZGJnKGRldiwgIiVzIGNhbGxlZCBmb3IgJXNcbiIsIF9fRlVOQ1RJT05fXywgZGV2LT5idXNfaWQpOworCWtmcmVlKGVwX2Rldik7Cit9CisKK3ZvaWQgdXNiX2NyZWF0ZV9lcF9maWxlcyhzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCisJCQkgc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplbmRwb2ludCwKKwkJCSBzdHJ1Y3QgdXNiX2RldmljZSAqdWRldikKK3sKKwljaGFyIG5hbWVbOF07CisJc3RydWN0IGVwX2RldmljZSAqZXBfZGV2OworCWludCBtaW5vcjsKKwlpbnQgcmV0dmFsOworCisJcmV0dmFsID0gaW5pdF9lbmRwb2ludF9jbGFzcygpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXhpdDsKKworCWVwX2RldiA9IGt6YWxsb2Moc2l6ZW9mKCplcF9kZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVwX2RldikgeworCQlyZXR2YWwgPSAtRU5PTUVNOworCQlnb3RvIGV4aXQ7CisJfQorCisJLyogZnVuIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSB0aGUgbWlub3Igb2YgdGhpcyBlbmRwb2ludCAqLworCW1pbm9yID0gKCgodWRldi0+YnVzLT5idXNudW0gLSAxKSAqIDEyOCkgKiAxNikgKyAodWRldi0+ZGV2bnVtIC0gMSk7CisKKwllcF9kZXYtPmRlc2MgPSAmZW5kcG9pbnQtPmRlc2M7CisJZXBfZGV2LT51ZGV2ID0gdWRldjsKKwllcF9kZXYtPmRldi5kZXZ0ID0gTUtERVYoNDQyLCBtaW5vcik7CS8vIEZJWE1FIGZha2UgbnVtYmVyLi4uCisJZXBfZGV2LT5kZXYuY2xhc3MgPSBlcF9jbGFzcy0+Y2xhc3M7CisJZXBfZGV2LT5kZXYucGFyZW50ID0gcGFyZW50OworCWVwX2Rldi0+ZGV2LnJlbGVhc2UgPSBlcF9kZXZpY2VfcmVsZWFzZTsKKwlzbnByaW50ZihlcF9kZXYtPmRldi5idXNfaWQsIEJVU19JRF9TSVpFLCAidXNiZGV2JWQuJWRfZXAlMDJ4IiwKKwkJIHVkZXYtPmJ1cy0+YnVzbnVtLCB1ZGV2LT5kZXZudW0sCisJCSBlbmRwb2ludC0+ZGVzYy5iRW5kcG9pbnRBZGRyZXNzKTsKKworCXJldHZhbCA9IGRldmljZV9yZWdpc3RlcigmZXBfZGV2LT5kZXYpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3I7CisJc3lzZnNfY3JlYXRlX2dyb3VwKCZlcF9kZXYtPmRldi5rb2JqLCAmZXBfZGV2X2F0dHJfZ3JwKTsKKworCWVuZHBvaW50LT5lcF9kZXYgPSBlcF9kZXY7CisKKwkvKiBjcmVhdGUgdGhlIHN5bWxpbmsgdG8gdGhlIG9sZC1zdHlsZSAiZXBfWFgiIGRpcmVjdG9yeSAqLworCXNwcmludGYobmFtZSwgImVwXyUwMngiLCBlbmRwb2ludC0+ZGVzYy5iRW5kcG9pbnRBZGRyZXNzKTsKKwlzeXNmc19jcmVhdGVfbGluaygmcGFyZW50LT5rb2JqLCAmZW5kcG9pbnQtPmVwX2Rldi0+ZGV2LmtvYmosIG5hbWUpOworCitleGl0OgorCXJldHVybjsKK2Vycm9yOgorCWtmcmVlKGVwX2Rldik7CisJcmV0dXJuOworfQorCit2b2lkIHVzYl9yZW1vdmVfZXBfZmlsZXMoc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplbmRwb2ludCkKK3sKKworCWlmIChlbmRwb2ludC0+ZXBfZGV2KSB7CisJCWNoYXIgbmFtZVs4XTsKKworCQlzcHJpbnRmKG5hbWUsICJlcF8lMDJ4IiwgZW5kcG9pbnQtPmRlc2MuYkVuZHBvaW50QWRkcmVzcyk7CisJCXN5c2ZzX3JlbW92ZV9saW5rKCZlbmRwb2ludC0+ZXBfZGV2LT5kZXYucGFyZW50LT5rb2JqLCBuYW1lKTsKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZlbmRwb2ludC0+ZXBfZGV2LT5kZXYua29iaiwgJmVwX2Rldl9hdHRyX2dycCk7CisJCWRldmljZV91bnJlZ2lzdGVyKCZlbmRwb2ludC0+ZXBfZGV2LT5kZXYpOworCQllbmRwb2ludC0+ZXBfZGV2ID0gTlVMTDsKKwl9CisJZGVzdHJveV9lbmRwb2ludF9jbGFzcygpOworfQorCisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZmlsZS5jIGIvZHJpdmVycy91c2IvY29yZS9maWxlLmMKaW5kZXggYjI2M2E1NC4uZjY1YjE5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9maWxlLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9maWxlLmMKQEAgLTYxLDMzICs2MSw2NiBAQAogCS5vcGVuID0JCXVzYl9vcGVuLAogfTsKIAotc3RhdGljIHN0cnVjdCBjbGFzcyAqdXNiX2NsYXNzOworc3RhdGljIHN0cnVjdCB1c2JfY2xhc3MgeworCXN0cnVjdCBrcmVmIGtyZWY7CisJc3RydWN0IGNsYXNzICpjbGFzczsKK30gKnVzYl9jbGFzczsKKworc3RhdGljIGludCBpbml0X3VzYl9jbGFzcyh2b2lkKQoreworCWludCByZXN1bHQgPSAwOworCisJaWYgKHVzYl9jbGFzcyAhPSBOVUxMKSB7CisJCWtyZWZfZ2V0KCZ1c2JfY2xhc3MtPmtyZWYpOworCQlnb3RvIGV4aXQ7CisJfQorCisJdXNiX2NsYXNzID0ga21hbGxvYyhzaXplb2YoKnVzYl9jbGFzcyksIEdGUF9LRVJORUwpOworCWlmICghdXNiX2NsYXNzKSB7CisJCXJlc3VsdCA9IC1FTk9NRU07CisJCWdvdG8gZXhpdDsKKwl9CisKKwlrcmVmX2luaXQoJnVzYl9jbGFzcy0+a3JlZik7CisJdXNiX2NsYXNzLT5jbGFzcyA9IGNsYXNzX2NyZWF0ZShUSElTX01PRFVMRSwgInVzYiIpOworCWlmIChJU19FUlIodXNiX2NsYXNzLT5jbGFzcykpIHsKKwkJcmVzdWx0ID0gSVNfRVJSKHVzYl9jbGFzcy0+Y2xhc3MpOworCQllcnIoImNsYXNzX2NyZWF0ZSBmYWlsZWQgZm9yIHVzYiBkZXZpY2VzIik7CisJCWtmcmVlKHVzYl9jbGFzcyk7CisJCXVzYl9jbGFzcyA9IE5VTEw7CisJfQorCitleGl0OgorCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfdXNiX2NsYXNzKHN0cnVjdCBrcmVmICprcmVmKQoreworCS8qIE9rLCB3ZSBjaGVhdCBhcyB3ZSBrbm93IHdlIG9ubHkgaGF2ZSBvbmUgdXNiX2NsYXNzICovCisJY2xhc3NfZGVzdHJveSh1c2JfY2xhc3MtPmNsYXNzKTsKKwlrZnJlZSh1c2JfY2xhc3MpOworCXVzYl9jbGFzcyA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfdXNiX2NsYXNzKHZvaWQpCit7CisJaWYgKHVzYl9jbGFzcykKKwkJa3JlZl9wdXQoJnVzYl9jbGFzcy0+a3JlZiwgcmVsZWFzZV91c2JfY2xhc3MpOworfQogCiBpbnQgdXNiX21ham9yX2luaXQodm9pZCkKIHsKIAlpbnQgZXJyb3I7CiAKIAllcnJvciA9IHJlZ2lzdGVyX2NocmRldihVU0JfTUFKT1IsICJ1c2IiLCAmdXNiX2ZvcHMpOwotCWlmIChlcnJvcikgeworCWlmIChlcnJvcikKIAkJZXJyKCJ1bmFibGUgdG8gZ2V0IG1ham9yICVkIGZvciB1c2IgZGV2aWNlcyIsIFVTQl9NQUpPUik7Ci0JCWdvdG8gb3V0OwotCX0KIAotCXVzYl9jbGFzcyA9IGNsYXNzX2NyZWF0ZShUSElTX01PRFVMRSwgInVzYiIpOwotCWlmIChJU19FUlIodXNiX2NsYXNzKSkgewotCQllcnJvciA9IFBUUl9FUlIodXNiX2NsYXNzKTsKLQkJZXJyKCJjbGFzc19jcmVhdGUgZmFpbGVkIGZvciB1c2IgZGV2aWNlcyIpOwotCQl1bnJlZ2lzdGVyX2NocmRldihVU0JfTUFKT1IsICJ1c2IiKTsKLQkJZ290byBvdXQ7Ci0JfQotCi1vdXQ6CiAJcmV0dXJuIGVycm9yOwogfQogCiB2b2lkIHVzYl9tYWpvcl9jbGVhbnVwKHZvaWQpCiB7Ci0JY2xhc3NfZGVzdHJveSh1c2JfY2xhc3MpOwogCXVucmVnaXN0ZXJfY2hyZGV2KFVTQl9NQUpPUiwgInVzYiIpOwogfQogCkBAIC0xNDksNiArMTgyLDEwIEBACiAJaWYgKHJldHZhbCkKIAkJZ290byBleGl0OwogCisJcmV0dmFsID0gaW5pdF91c2JfY2xhc3MoKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGV4aXQ7CisKIAlpbnRmLT5taW5vciA9IG1pbm9yOwogCiAJLyogY3JlYXRlIGEgdXNiIGNsYXNzIGRldmljZSBmb3IgdGhpcyB1c2IgaW50ZXJmYWNlICovCkBAIC0xNTgsMTQgKzE5NSwxMyBAQAogCQkrK3RlbXA7CiAJZWxzZQogCQl0ZW1wID0gbmFtZTsKLQlpbnRmLT5jbGFzc19kZXYgPSBjbGFzc19kZXZpY2VfY3JlYXRlKHVzYl9jbGFzcywgTlVMTCwKLQkJCQkJICAgICAgTUtERVYoVVNCX01BSk9SLCBtaW5vciksCi0JCQkJCSAgICAgICZpbnRmLT5kZXYsICIlcyIsIHRlbXApOwotCWlmIChJU19FUlIoaW50Zi0+Y2xhc3NfZGV2KSkgeworCWludGYtPnVzYl9kZXYgPSBkZXZpY2VfY3JlYXRlKHVzYl9jbGFzcy0+Y2xhc3MsICZpbnRmLT5kZXYsCisJCQkJICAgICAgTUtERVYoVVNCX01BSk9SLCBtaW5vciksICIlcyIsIHRlbXApOworCWlmIChJU19FUlIoaW50Zi0+dXNiX2RldikpIHsKIAkJc3Bpbl9sb2NrICgmbWlub3JfbG9jayk7CiAJCXVzYl9taW5vcnNbaW50Zi0+bWlub3JdID0gTlVMTDsKIAkJc3Bpbl91bmxvY2sgKCZtaW5vcl9sb2NrKTsKLQkJcmV0dmFsID0gUFRSX0VSUihpbnRmLT5jbGFzc19kZXYpOworCQlyZXR2YWwgPSBQVFJfRVJSKGludGYtPnVzYl9kZXYpOwogCX0KIGV4aXQ6CiAJcmV0dXJuIHJldHZhbDsKQEAgLTIwNiw5ICsyNDIsMTAgQEAKIAlzcGluX3VubG9jayAoJm1pbm9yX2xvY2spOwogCiAJc25wcmludGYobmFtZSwgQlVTX0lEX1NJWkUsIGNsYXNzX2RyaXZlci0+bmFtZSwgaW50Zi0+bWlub3IgLSBtaW5vcl9iYXNlKTsKLQljbGFzc19kZXZpY2VfZGVzdHJveSh1c2JfY2xhc3MsIE1LREVWKFVTQl9NQUpPUiwgaW50Zi0+bWlub3IpKTsKLQlpbnRmLT5jbGFzc19kZXYgPSBOVUxMOworCWRldmljZV9kZXN0cm95KHVzYl9jbGFzcy0+Y2xhc3MsIE1LREVWKFVTQl9NQUpPUiwgaW50Zi0+bWlub3IpKTsKKwlpbnRmLT51c2JfZGV2ID0gTlVMTDsKIAlpbnRmLT5taW5vciA9IC0xOworCWRlc3Ryb3lfdXNiX2NsYXNzKCk7CiB9CiBFWFBPUlRfU1lNQk9MKHVzYl9kZXJlZ2lzdGVyX2Rldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCmluZGV4IGUyZTAwYmEuLjRiZjkxNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9oY2QuYwpAQCAtMTgyNiwyNCArMTgyNiwxNiBAQAogCiAJLyogZW5hYmxlIGlycXMganVzdCBiZWZvcmUgd2Ugc3RhcnQgdGhlIGNvbnRyb2xsZXIgKi8KIAlpZiAoaGNkLT5kcml2ZXItPmlycSkgewotCQljaGFyCWJ1Zls4XSwgKmJ1ZnAgPSBidWY7Ci0KLSNpZmRlZiBfX3NwYXJjX18KLQkJYnVmcCA9IF9faXJxX2l0b2EoaXJxbnVtKTsKLSNlbHNlCi0JCXNwcmludGYoYnVmLCAiJWQiLCBpcnFudW0pOwotI2VuZGlmCi0KIAkJc25wcmludGYoaGNkLT5pcnFfZGVzY3IsIHNpemVvZihoY2QtPmlycV9kZXNjciksICIlczp1c2IlZCIsCiAJCQkJaGNkLT5kcml2ZXItPmRlc2NyaXB0aW9uLCBoY2QtPnNlbGYuYnVzbnVtKTsKIAkJaWYgKChyZXR2YWwgPSByZXF1ZXN0X2lycShpcnFudW0sICZ1c2JfaGNkX2lycSwgaXJxZmxhZ3MsCiAJCQkJaGNkLT5pcnFfZGVzY3IsIGhjZCkpICE9IDApIHsKIAkJCWRldl9lcnIoaGNkLT5zZWxmLmNvbnRyb2xsZXIsCi0JCQkJCSJyZXF1ZXN0IGludGVycnVwdCAlcyBmYWlsZWRcbiIsIGJ1ZnApOworCQkJCQkicmVxdWVzdCBpbnRlcnJ1cHQgJWQgZmFpbGVkXG4iLCBpcnFudW0pOwogCQkJZ290byBlcnJfcmVxdWVzdF9pcnE7CiAJCX0KIAkJaGNkLT5pcnEgPSBpcnFudW07Ci0JCWRldl9pbmZvKGhjZC0+c2VsZi5jb250cm9sbGVyLCAiaXJxICVzLCAlcyAweCUwOGxseFxuIiwgYnVmcCwKKwkJZGV2X2luZm8oaGNkLT5zZWxmLmNvbnRyb2xsZXIsICJpcnEgJWQsICVzIDB4JTA4bGx4XG4iLCBpcnFudW0sCiAJCQkJKGhjZC0+ZHJpdmVyLT5mbGFncyAmIEhDRF9NRU1PUlkpID8KIAkJCQkJImlvIG1lbSIgOiAiaW8gYmFzZSIsCiAJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpaGNkLT5yc3JjX3N0YXJ0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCmluZGV4IDkwYjhkNDMuLmUxNzMxZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwpAQCAtNDMyLDE1ICs0MzIsMjIgQEAKIHsKIAlpbnQgcG9ydDE7CiAJdW5zaWduZWQgcGdvb2RfZGVsYXkgPSBodWItPmRlc2NyaXB0b3ItPmJQd3JPbjJQd3JHb29kICogMjsKLQl1MTYgd0h1YkNoYXJhY3RlcmlzdGljcyA9IGxlMTZfdG9fY3B1KGh1Yi0+ZGVzY3JpcHRvci0+d0h1YkNoYXJhY3RlcmlzdGljcyk7CisJdTE2IHdIdWJDaGFyYWN0ZXJpc3RpY3MgPQorCQkJbGUxNl90b19jcHUoaHViLT5kZXNjcmlwdG9yLT53SHViQ2hhcmFjdGVyaXN0aWNzKTsKIAotCS8qIGlmIGh1YiBzdXBwb3J0cyBwb3dlciBzd2l0Y2hpbmcsIGVuYWJsZSBwb3dlciBvbiBlYWNoIHBvcnQgKi8KLQlpZiAoKHdIdWJDaGFyYWN0ZXJpc3RpY3MgJiBIVUJfQ0hBUl9MUFNNKSA8IDIpIHsKKwkvKiBFbmFibGUgcG93ZXIgb24gZWFjaCBwb3J0LiAgU29tZSBodWJzIGhhdmUgcmVzZXJ2ZWQgdmFsdWVzCisJICogb2YgTFBTTSAoPiAyKSBpbiB0aGVpciBkZXNjcmlwdG9ycywgZXZlbiB0aG91Z2ggdGhleSBhcmUKKwkgKiBVU0IgMi4wIGh1YnMuICBTb21lIGh1YnMgZG8gbm90IGltcGxlbWVudCBwb3J0LXBvd2VyIHN3aXRjaGluZworCSAqIGJ1dCBvbmx5IGVtdWxhdGUgaXQuICBJbiBhbGwgY2FzZXMsIHRoZSBwb3J0cyB3b24ndCB3b3JrCisJICogdW5sZXNzIHdlIHNlbmQgdGhlc2UgbWVzc2FnZXMgdG8gdGhlIGh1Yi4KKwkgKi8KKwlpZiAoKHdIdWJDaGFyYWN0ZXJpc3RpY3MgJiBIVUJfQ0hBUl9MUFNNKSA8IDIpCiAJCWRldl9kYmcoaHViLT5pbnRmZGV2LCAiZW5hYmxpbmcgcG93ZXIgb24gYWxsIHBvcnRzXG4iKTsKLQkJZm9yIChwb3J0MSA9IDE7IHBvcnQxIDw9IGh1Yi0+ZGVzY3JpcHRvci0+Yk5iclBvcnRzOyBwb3J0MSsrKQotCQkJc2V0X3BvcnRfZmVhdHVyZShodWItPmhkZXYsIHBvcnQxLAotCQkJCQlVU0JfUE9SVF9GRUFUX1BPV0VSKTsKLQl9CisJZWxzZQorCQlkZXZfZGJnKGh1Yi0+aW50ZmRldiwgInRyeWluZyB0byBlbmFibGUgcG9ydCBwb3dlciBvbiAiCisJCQkJIm5vbi1zd2l0Y2hhYmxlIGh1YlxuIik7CisJZm9yIChwb3J0MSA9IDE7IHBvcnQxIDw9IGh1Yi0+ZGVzY3JpcHRvci0+Yk5iclBvcnRzOyBwb3J0MSsrKQorCQlzZXRfcG9ydF9mZWF0dXJlKGh1Yi0+aGRldiwgcG9ydDEsIFVTQl9QT1JUX0ZFQVRfUE9XRVIpOwogCiAJLyogV2FpdCBhdCBsZWFzdCAxMDAgbXNlYyBmb3IgcG93ZXIgdG8gYmVjb21lIHN0YWJsZSAqLwogCW1zbGVlcChtYXgocGdvb2RfZGVsYXksICh1bnNpZ25lZCkgMTAwKSk7CkBAIC01MTgsMTUgKzUyNSwxNiBAQAogCiAKIC8qIGNhbGxlciBoYXMgbG9ja2VkIHRoZSBodWIgZGV2aWNlICovCi1zdGF0aWMgdm9pZCBodWJfcHJlX3Jlc2V0KHN0cnVjdCB1c2JfaHViICpodWIsIGludCBkaXNhYmxlX3BvcnRzKQorc3RhdGljIHZvaWQgaHViX3ByZV9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsKKwlzdHJ1Y3QgdXNiX2h1YiAqaHViID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqaGRldiA9IGh1Yi0+aGRldjsKIAlpbnQgcG9ydDE7CiAKIAlmb3IgKHBvcnQxID0gMTsgcG9ydDEgPD0gaGRldi0+bWF4Y2hpbGQ7ICsrcG9ydDEpIHsKIAkJaWYgKGhkZXYtPmNoaWxkcmVuW3BvcnQxIC0gMV0pIHsKIAkJCXVzYl9kaXNjb25uZWN0KCZoZGV2LT5jaGlsZHJlbltwb3J0MSAtIDFdKTsKLQkJCWlmIChkaXNhYmxlX3BvcnRzKQorCQkJaWYgKGh1Yi0+ZXJyb3IgPT0gMCkKIAkJCQlodWJfcG9ydF9kaXNhYmxlKGh1YiwgcG9ydDEsIDApOwogCQl9CiAJfQpAQCAtNTM0LDggKzU0MiwxMCBAQAogfQogCiAvKiBjYWxsZXIgaGFzIGxvY2tlZCB0aGUgaHViIGRldmljZSAqLwotc3RhdGljIHZvaWQgaHViX3Bvc3RfcmVzZXQoc3RydWN0IHVzYl9odWIgKmh1YikKK3N0YXRpYyB2b2lkIGh1Yl9wb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogeworCXN0cnVjdCB1c2JfaHViICpodWIgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCiAJaHViX2FjdGl2YXRlKGh1Yik7CiAJaHViX3Bvd2VyX29uKGh1Yik7CiB9CkBAIC03OTUsMTUgKzgwNSwxNiBAQAogCXN0cnVjdCB1c2JfaHViICpodWIgPSB1c2JfZ2V0X2ludGZkYXRhIChpbnRmKTsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqaGRldjsKIAorCS8qIERpc2Nvbm5lY3QgYWxsIGNoaWxkcmVuIGFuZCBxdWllc2NlIHRoZSBodWIgKi8KKwlodWItPmVycm9yID0gMDsKKwlodWJfcHJlX3Jlc2V0KGludGYpOworCiAJdXNiX3NldF9pbnRmZGF0YSAoaW50ZiwgTlVMTCk7CiAJaGRldiA9IGh1Yi0+aGRldjsKIAogCWlmIChoZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCkKIAkJaGlnaHNwZWVkX2h1YnMtLTsKIAotCS8qIERpc2Nvbm5lY3QgYWxsIGNoaWxkcmVuIGFuZCBxdWllc2NlIHRoZSBodWIgKi8KLQlodWJfcHJlX3Jlc2V0KGh1YiwgMSk7Ci0KIAl1c2JfZnJlZV91cmIoaHViLT51cmIpOwogCWh1Yi0+dXJiID0gTlVMTDsKIApAQCAtMTE2OSw2ICsxMTgwLDcgQEAKIHsKIAlpbnQgaTsKIAlpbnQgbnVtX2NvbmZpZ3M7CisJaW50IGluc3VmZmljaWVudF9wb3dlciA9IDA7CiAJc3RydWN0IHVzYl9ob3N0X2NvbmZpZyAqYywgKmJlc3Q7CiAKIAliZXN0ID0gTlVMTDsKQEAgLTEyMjEsOCArMTIzMywxMCBAQAogCQkgKi8KIAogCQkvKiBSdWxlIG91dCBjb25maWdzIHRoYXQgZHJhdyB0b28gbXVjaCBidXMgY3VycmVudCAqLwotCQlpZiAoYy0+ZGVzYy5iTWF4UG93ZXIgKiAyID4gdWRldi0+YnVzX21BKQorCQlpZiAoYy0+ZGVzYy5iTWF4UG93ZXIgKiAyID4gdWRldi0+YnVzX21BKSB7CisJCQlpbnN1ZmZpY2llbnRfcG93ZXIrKzsKIAkJCWNvbnRpbnVlOworCQl9CiAKIAkJLyogSWYgdGhlIGZpcnN0IGNvbmZpZydzIGZpcnN0IGludGVyZmFjZSBpcyBDT01NLzIvMHhmZgogCQkgKiAoTVNGVCBSTkRJUyksIHJ1bGUgaXQgb3V0IHVubGVzcyBMaW51eCBoYXMgaG9zdC1zaWRlCkBAIC0xMjMxLDcgKzEyNDUsNyBAQAogCQkJCSYmIGRlc2MtPmJJbnRlcmZhY2VDbGFzcyA9PSBVU0JfQ0xBU1NfQ09NTQogCQkJCSYmIGRlc2MtPmJJbnRlcmZhY2VTdWJDbGFzcyA9PSAyCiAJCQkJJiYgZGVzYy0+YkludGVyZmFjZVByb3RvY29sID09IDB4ZmYpIHsKLSNpZm5kZWYgQ09ORklHX1VTQl9ORVRfUk5ESVMKKyNpZm5kZWYgQ09ORklHX1VTQl9ORVRfUk5ESVNfSE9TVAogCQkJY29udGludWU7CiAjZWxzZQogCQkJYmVzdCA9IGM7CkBAIC0xMjU2LDYgKzEyNzAsMTEgQEAKIAkJCWJlc3QgPSBjOwogCX0KIAorCWlmIChpbnN1ZmZpY2llbnRfcG93ZXIgPiAwKQorCQlkZXZfaW5mbygmdWRldi0+ZGV2LCAicmVqZWN0ZWQgJWQgY29uZmlndXJhdGlvbiVzICIKKwkJCSJkdWUgdG8gaW5zdWZmaWNpZW50IGF2YWlsYWJsZSBidXMgcG93ZXJcbiIsCisJCQlpbnN1ZmZpY2llbnRfcG93ZXIsIHBsdXJhbChpbnN1ZmZpY2llbnRfcG93ZXIpKTsKKwogCWlmIChiZXN0KSB7CiAJCWkgPSBiZXN0LT5kZXNjLmJDb25maWd1cmF0aW9uVmFsdWU7CiAJCWRldl9pbmZvKCZ1ZGV2LT5kZXYsCkBAIC0yNzMyLDcgKzI3NTEsOCBAQAogCiAJCS8qIElmIHRoZSBodWIgaGFzIGRpZWQsIGNsZWFuIHVwIGFmdGVyIGl0ICovCiAJCWlmIChoZGV2LT5zdGF0ZSA9PSBVU0JfU1RBVEVfTk9UQVRUQUNIRUQpIHsKLQkJCWh1Yl9wcmVfcmVzZXQoaHViLCAwKTsKKwkJCWh1Yi0+ZXJyb3IgPSAtRU5PREVWOworCQkJaHViX3ByZV9yZXNldChpbnRmKTsKIAkJCWdvdG8gbG9vcDsKIAkJfQogCkBAIC0yNzQ0LDcgKzI3NjQsNyBAQAogCQkJZGV2X2RiZyAoaHViX2RldiwgInJlc2V0dGluZyBmb3IgZXJyb3IgJWRcbiIsCiAJCQkJaHViLT5lcnJvcik7CiAKLQkJCXJldCA9IHVzYl9yZXNldF9kZXZpY2UoaGRldik7CisJCQlyZXQgPSB1c2JfcmVzZXRfY29tcG9zaXRlX2RldmljZShoZGV2LCBpbnRmKTsKIAkJCWlmIChyZXQpIHsKIAkJCQlkZXZfZGJnIChodWJfZGV2LAogCQkJCQkiZXJyb3IgcmVzZXR0aW5nIGh1YjogJWRcbiIsIHJldCk7CkBAIC0yOTEzLDYgKzI5MzMsOCBAQAogCS5kaXNjb25uZWN0ID0JaHViX2Rpc2Nvbm5lY3QsCiAJLnN1c3BlbmQgPQlodWJfc3VzcGVuZCwKIAkucmVzdW1lID0JaHViX3Jlc3VtZSwKKwkucHJlX3Jlc2V0ID0JaHViX3ByZV9yZXNldCwKKwkucG9zdF9yZXNldCA9CWh1Yl9wb3N0X3Jlc2V0LAogCS5pb2N0bCA9CWh1Yl9pb2N0bCwKIAkuaWRfdGFibGUgPQlodWJfaWRfdGFibGUsCiB9OwpAQCAtMjk5Miw5ICszMDE0LDkgQEAKICAqIHVzYl9yZXNldF9kZXZpY2UgLSBwZXJmb3JtIGEgVVNCIHBvcnQgcmVzZXQgdG8gcmVpbml0aWFsaXplIGEgZGV2aWNlCiAgKiBAdWRldjogZGV2aWNlIHRvIHJlc2V0IChub3QgaW4gU1VTUEVOREVEIG9yIE5PVEFUVEFDSEVEIHN0YXRlKQogICoKLSAqIFdBUk5JTkcgLSBkb24ndCByZXNldCBhbnkgZGV2aWNlIHVubGVzcyBkcml2ZXJzIGZvciBhbGwgb2YgaXRzCi0gKiBpbnRlcmZhY2VzIGFyZSBleHBlY3RpbmcgdGhhdCByZXNldCEgIE1heWJlIHNvbWUgZHJpdmVyLT5yZXNldCgpCi0gKiBtZXRob2Qgc2hvdWxkIGV2ZW50dWFsbHkgaGVscCBlbnN1cmUgc3VmZmljaWVudCBjb29wZXJhdGlvbi4KKyAqIFdBUk5JTkcgLSBkb24ndCB1c2UgdGhpcyByb3V0aW5lIHRvIHJlc2V0IGEgY29tcG9zaXRlIGRldmljZQorICogKG9uZSB3aXRoIG11bHRpcGxlIGludGVyZmFjZXMgb3duZWQgYnkgc2VwYXJhdGUgZHJpdmVycykhCisgKiBVc2UgdXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UoKSBpbnN0ZWFkLgogICoKICAqIERvIGEgcG9ydCByZXNldCwgcmVhc3NpZ24gdGhlIGRldmljZSdzIGFkZHJlc3MsIGFuZCBlc3RhYmxpc2ggaXRzCiAgKiBmb3JtZXIgb3BlcmF0aW5nIGNvbmZpZ3VyYXRpb24uICBJZiB0aGUgcmVzZXQgZmFpbHMsIG9yIHRoZSBkZXZpY2UncwpAQCAtMzAxOCw3ICszMDQwLDYgQEAKIAlzdHJ1Y3QgdXNiX2RldmljZQkJKnBhcmVudF9oZGV2ID0gdWRldi0+cGFyZW50OwogCXN0cnVjdCB1c2JfaHViCQkJKnBhcmVudF9odWI7CiAJc3RydWN0IHVzYl9kZXZpY2VfZGVzY3JpcHRvcglkZXNjcmlwdG9yID0gdWRldi0+ZGVzY3JpcHRvcjsKLQlzdHJ1Y3QgdXNiX2h1YgkJCSpodWIgPSBOVUxMOwogCWludCAJCQkJaSwgcmV0ID0gMDsKIAlpbnQJCQkJcG9ydDEgPSB1ZGV2LT5wb3J0bnVtOwogCkBAIC0zMDM2LDE0ICszMDU3LDYgQEAKIAl9CiAJcGFyZW50X2h1YiA9IGhkZXZfdG9faHViKHBhcmVudF9oZGV2KTsKIAotCS8qIElmIHdlJ3JlIHJlc2V0dGluZyBhbiBhY3RpdmUgaHViLCB0YWtlIHNvbWUgc3BlY2lhbCBhY3Rpb25zICovCi0JaWYgKHVkZXYtPmFjdGNvbmZpZyAmJiB1ZGV2LT5hY3Rjb25maWctPmRlc2MuYk51bUludGVyZmFjZXMgPiAwICYmCi0JCQl1ZGV2LT5hY3Rjb25maWctPmludGVyZmFjZVswXS0+ZGV2LmRyaXZlciA9PQotCQkJCSZodWJfZHJpdmVyLmRyaXZlciAmJgotCQkJKGh1YiA9IGhkZXZfdG9faHViKHVkZXYpKSAhPSBOVUxMKSB7Ci0JCWh1Yl9wcmVfcmVzZXQoaHViLCAwKTsKLQl9Ci0KIAlzZXRfYml0KHBvcnQxLCBwYXJlbnRfaHViLT5idXN5X2JpdHMpOwogCWZvciAoaSA9IDA7IGkgPCBTRVRfQ09ORklHX1RSSUVTOyArK2kpIHsKIApAQCAtMzEwMiwxMSArMzExNSw4NyBAQAogCX0KIAogZG9uZToKLQlpZiAoaHViKQotCQlodWJfcG9zdF9yZXNldChodWIpOwogCXJldHVybiAwOwogIAogcmVfZW51bWVyYXRlOgogCWh1Yl9wb3J0X2xvZ2ljYWxfZGlzY29ubmVjdChwYXJlbnRfaHViLCBwb3J0MSk7CiAJcmV0dXJuIC1FTk9ERVY7CiB9CisKKy8qKgorICogdXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UgLSB3YXJuIGludGVyZmFjZSBkcml2ZXJzIGFuZCBwZXJmb3JtIGEgVVNCIHBvcnQgcmVzZXQKKyAqIEB1ZGV2OiBkZXZpY2UgdG8gcmVzZXQgKG5vdCBpbiBTVVNQRU5ERUQgb3IgTk9UQVRUQUNIRUQgc3RhdGUpCisgKiBAaWZhY2U6IGludGVyZmFjZSBib3VuZCB0byB0aGUgZHJpdmVyIG1ha2luZyB0aGUgcmVxdWVzdCAob3B0aW9uYWwpCisgKgorICogV2FybnMgYWxsIGRyaXZlcnMgYm91bmQgdG8gcmVnaXN0ZXJlZCBpbnRlcmZhY2VzICh1c2luZyB0aGVpciBwcmVfcmVzZXQKKyAqIG1ldGhvZCksIHBlcmZvcm1zIHRoZSBwb3J0IHJlc2V0LCBhbmQgdGhlbiBsZXRzIHRoZSBkcml2ZXJzIGtub3cgdGhhdAorICogdGhlIHJlc2V0IGlzIG92ZXIgKHVzaW5nIHRoZWlyIHBvc3RfcmVzZXQgbWV0aG9kKS4KKyAqCisgKiBSZXR1cm4gdmFsdWUgaXMgdGhlIHNhbWUgYXMgZm9yIHVzYl9yZXNldF9kZXZpY2UoKS4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3Qgb3duIHRoZSBkZXZpY2UgbG9jay4gIEZvciBleGFtcGxlLCBpdCdzIHNhZmUgdG8gdXNlCisgKiB0aGlzIGZyb20gYSBkcml2ZXIgcHJvYmUoKSByb3V0aW5lIGFmdGVyIGRvd25sb2FkaW5nIG5ldyBmaXJtd2FyZS4KKyAqIEZvciBjYWxscyB0aGF0IG1pZ2h0IG5vdCBvY2N1ciBkdXJpbmcgcHJvYmUoKSwgZHJpdmVycyBzaG91bGQgbG9jaworICogdGhlIGRldmljZSB1c2luZyB1c2JfbG9ja19kZXZpY2VfZm9yX3Jlc2V0KCkuCisgKgorICogVGhlIGludGVyZmFjZSBsb2NrcyBhcmUgYWNxdWlyZWQgZHVyaW5nIHRoZSBwcmVfcmVzZXQgc3RhZ2UgYW5kIHJlbGVhc2VkCisgKiBkdXJpbmcgdGhlIHBvc3RfcmVzZXQgc3RhZ2UuICBIb3dldmVyIGlmIGlmYWNlIGlzIG5vdCBOVUxMIGFuZCBpcworICogY3VycmVudGx5IGJlaW5nIHByb2JlZCwgd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGxlciBhbHJlYWR5IG93bnMgaXRzCisgKiBsb2NrLgorICovCitpbnQgdXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2Uoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsCisJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCB1c2JfaG9zdF9jb25maWcgKmNvbmZpZyA9IHVkZXYtPmFjdGNvbmZpZzsKKworCWlmICh1ZGV2LT5zdGF0ZSA9PSBVU0JfU1RBVEVfTk9UQVRUQUNIRUQgfHwKKwkJCXVkZXYtPnN0YXRlID09IFVTQl9TVEFURV9TVVNQRU5ERUQpIHsKKwkJZGV2X2RiZygmdWRldi0+ZGV2LCAiZGV2aWNlIHJlc2V0IG5vdCBhbGxvd2VkIGluIHN0YXRlICVkXG4iLAorCQkJCXVkZXYtPnN0YXRlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGlmYWNlICYmIGlmYWNlLT5jb25kaXRpb24gIT0gVVNCX0lOVEVSRkFDRV9CSU5ESU5HKQorCQlpZmFjZSA9IE5VTEw7CisKKwlpZiAoY29uZmlnKSB7CisJCWludCBpOworCQlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqY2ludGY7CisJCXN0cnVjdCB1c2JfZHJpdmVyICpkcnY7CisKKwkJZm9yIChpID0gMDsgaSA8IGNvbmZpZy0+ZGVzYy5iTnVtSW50ZXJmYWNlczsgKytpKSB7CisJCQljaW50ZiA9IGNvbmZpZy0+aW50ZXJmYWNlW2ldOworCQkJaWYgKGNpbnRmICE9IGlmYWNlKQorCQkJCWRvd24oJmNpbnRmLT5kZXYuc2VtKTsKKwkJCWlmIChkZXZpY2VfaXNfcmVnaXN0ZXJlZCgmY2ludGYtPmRldikgJiYKKwkJCQkJY2ludGYtPmRldi5kcml2ZXIpIHsKKwkJCQlkcnYgPSB0b191c2JfZHJpdmVyKGNpbnRmLT5kZXYuZHJpdmVyKTsKKwkJCQlpZiAoZHJ2LT5wcmVfcmVzZXQpCisJCQkJCShkcnYtPnByZV9yZXNldCkoY2ludGYpOworCQkJfQorCQl9CisJfQorCisJcmV0ID0gdXNiX3Jlc2V0X2RldmljZSh1ZGV2KTsKKworCWlmIChjb25maWcpIHsKKwkJaW50IGk7CisJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICpjaW50ZjsKKwkJc3RydWN0IHVzYl9kcml2ZXIgKmRydjsKKworCQlmb3IgKGkgPSBjb25maWctPmRlc2MuYk51bUludGVyZmFjZXMgLSAxOyBpID49IDA7IC0taSkgeworCQkJY2ludGYgPSBjb25maWctPmludGVyZmFjZVtpXTsKKwkJCWlmIChkZXZpY2VfaXNfcmVnaXN0ZXJlZCgmY2ludGYtPmRldikgJiYKKwkJCQkJY2ludGYtPmRldi5kcml2ZXIpIHsKKwkJCQlkcnYgPSB0b191c2JfZHJpdmVyKGNpbnRmLT5kZXYuZHJpdmVyKTsKKwkJCQlpZiAoZHJ2LT5wb3N0X3Jlc2V0KQorCQkJCQkoZHJ2LT5wb3N0X3Jlc2V0KShjaW50Zik7CisJCQl9CisJCQlpZiAoY2ludGYgIT0gaWZhY2UpCisJCQkJdXAoJmNpbnRmLT5kZXYuc2VtKTsKKwkJfQorCX0KKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2lub2RlLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2lub2RlLmMKaW5kZXggNjk1YjkwYS4uYmZjOWIyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9pbm9kZS5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaW5vZGUuYwpAQCAtNTQzLDEwICs1NDMsMTAgQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnVzYl9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgdXNiX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgdXNiZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHVzYmZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB1c2JfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jIGIvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKaW5kZXggMDhmYjIwZi4uODU2OTYwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMKQEAgLTE1OCw2ICsxNTgsMzcgQEAKIAogCiAvKioKKyAqIHVzYl9pbnRlcnJ1cHRfbXNnIC0gQnVpbGRzIGFuIGludGVycnVwdCB1cmIsIHNlbmRzIGl0IG9mZiBhbmQgd2FpdHMgZm9yIGNvbXBsZXRpb24KKyAqIEB1c2JfZGV2OiBwb2ludGVyIHRvIHRoZSB1c2IgZGV2aWNlIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8KKyAqIEBwaXBlOiBlbmRwb2ludCAicGlwZSIgdG8gc2VuZCB0aGUgbWVzc2FnZSB0bworICogQGRhdGE6IHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gc2VuZAorICogQGxlbjogbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBkYXRhIHRvIHNlbmQKKyAqIEBhY3R1YWxfbGVuZ3RoOiBwb2ludGVyIHRvIGEgbG9jYXRpb24gdG8gcHV0IHRoZSBhY3R1YWwgbGVuZ3RoIHRyYW5zZmVycmVkIGluIGJ5dGVzCisgKiBAdGltZW91dDogdGltZSBpbiBtc2VjcyB0byB3YWl0IGZvciB0aGUgbWVzc2FnZSB0byBjb21wbGV0ZSBiZWZvcmUKKyAqCXRpbWluZyBvdXQgKGlmIDAgdGhlIHdhaXQgaXMgZm9yZXZlcikKKyAqIENvbnRleHQ6ICFpbl9pbnRlcnJ1cHQgKCkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgc2ltcGxlIGludGVycnVwdCBtZXNzYWdlIHRvIGEgc3BlY2lmaWVkIGVuZHBvaW50IGFuZAorICogd2FpdHMgZm9yIHRoZSBtZXNzYWdlIHRvIGNvbXBsZXRlLCBvciB0aW1lb3V0LgorICoKKyAqIElmIHN1Y2Nlc3NmdWwsIGl0IHJldHVybnMgMCwgb3RoZXJ3aXNlIGEgbmVnYXRpdmUgZXJyb3IgbnVtYmVyLiAgVGhlIG51bWJlcgorICogb2YgYWN0dWFsIGJ5dGVzIHRyYW5zZmVycmVkIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBhY3R1YWxfbGVuZ3RoIHBhcmFtYXRlci4KKyAqCisgKiBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbiBmcm9tIHdpdGhpbiBhbiBpbnRlcnJ1cHQgY29udGV4dCwgbGlrZSBhIGJvdHRvbSBoYWxmCisgKiBoYW5kbGVyLiAgSWYgeW91IG5lZWQgYW4gYXN5bmNocm9ub3VzIG1lc3NhZ2UsIG9yIG5lZWQgdG8gc2VuZCBhIG1lc3NhZ2UKKyAqIGZyb20gd2l0aGluIGludGVycnVwdCBjb250ZXh0LCB1c2UgdXNiX3N1Ym1pdF91cmIoKSBJZiBhIHRocmVhZCBpbiB5b3VyCisgKiBkcml2ZXIgdXNlcyB0aGlzIGNhbGwsIG1ha2Ugc3VyZSB5b3VyIGRpc2Nvbm5lY3QoKSBtZXRob2QgY2FuIHdhaXQgZm9yIGl0IHRvCisgKiBjb21wbGV0ZS4gIFNpbmNlIHlvdSBkb24ndCBoYXZlIGEgaGFuZGxlIG9uIHRoZSBVUkIgdXNlZCwgeW91IGNhbid0IGNhbmNlbAorICogdGhlIHJlcXVlc3QuCisgKi8KK2ludCB1c2JfaW50ZXJydXB0X21zZyhzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgdW5zaWduZWQgaW50IHBpcGUsCisJCSAgICAgIHZvaWQgKmRhdGEsIGludCBsZW4sIGludCAqYWN0dWFsX2xlbmd0aCwgaW50IHRpbWVvdXQpCit7CisJcmV0dXJuIHVzYl9idWxrX21zZyh1c2JfZGV2LCBwaXBlLCBkYXRhLCBsZW4sIGFjdHVhbF9sZW5ndGgsIHRpbWVvdXQpOworfQorRVhQT1JUX1NZTUJPTF9HUEwodXNiX2ludGVycnVwdF9tc2cpOworCisvKioKICAqCXVzYl9idWxrX21zZyAtIEJ1aWxkcyBhIGJ1bGsgdXJiLCBzZW5kcyBpdCBvZmYgYW5kIHdhaXRzIGZvciBjb21wbGV0aW9uCiAgKglAdXNiX2RldjogcG9pbnRlciB0byB0aGUgdXNiIGRldmljZSB0byBzZW5kIHRoZSBtZXNzYWdlIHRvCiAgKglAcGlwZTogZW5kcG9pbnQgInBpcGUiIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8KQEAgLTEzODAsNiArMTQxMSwxMiBAQAogCQkJCXJldHVybiByZXQ7CiAJCQl9CiAJCX0KKworCQlpID0gZGV2LT5idXNfbUEgLSBjcC0+ZGVzYy5iTWF4UG93ZXIgKiAyOworCQlpZiAoaSA8IDApCisJCQlkZXZfd2FybigmZGV2LT5kZXYsICJuZXcgY29uZmlnICMlZCBleGNlZWRzIHBvd2VyICIKKwkJCQkJImxpbWl0IGJ5ICVkbUFcbiIsCisJCQkJCWNvbmZpZ3VyYXRpb24sIC1pKTsKIAl9CiAKIAkvKiBpZiBpdCdzIGFscmVhZHkgY29uZmlndXJlZCwgY2xlYXIgb3V0IG9sZCBzdGF0ZSBmaXJzdC4KQEAgLTEzODgsOTIgKzE0MjUsODUgQEAKIAlpZiAoZGV2LT5zdGF0ZSAhPSBVU0JfU1RBVEVfQUREUkVTUykKIAkJdXNiX2Rpc2FibGVfZGV2aWNlIChkZXYsIDEpOwkvLyBTa2lwIGVwMAogCi0JaWYgKGNwKSB7Ci0JCWkgPSBkZXYtPmJ1c19tQSAtIGNwLT5kZXNjLmJNYXhQb3dlciAqIDI7Ci0JCWlmIChpIDwgMCkKLQkJCWRldl93YXJuKCZkZXYtPmRldiwgIm5ldyBjb25maWcgIyVkIGV4Y2VlZHMgcG93ZXIgIgotCQkJCQkibGltaXQgYnkgJWRtQVxuIiwKLQkJCQkJY29uZmlndXJhdGlvbiwgLWkpOwotCX0KLQogCWlmICgocmV0ID0gdXNiX2NvbnRyb2xfbXNnKGRldiwgdXNiX3NuZGN0cmxwaXBlKGRldiwgMCksCiAJCQlVU0JfUkVRX1NFVF9DT05GSUdVUkFUSU9OLCAwLCBjb25maWd1cmF0aW9uLCAwLAotCQkJTlVMTCwgMCwgVVNCX0NUUkxfU0VUX1RJTUVPVVQpKSA8IDApCi0JCWdvdG8gZnJlZV9pbnRlcmZhY2VzOworCQkJTlVMTCwgMCwgVVNCX0NUUkxfU0VUX1RJTUVPVVQpKSA8IDApIHsKKworCQkvKiBBbGwgdGhlIG9sZCBzdGF0ZSBpcyBnb25lLCBzbyB3aGF0IGVsc2UgY2FuIHdlIGRvPworCQkgKiBUaGUgZGV2aWNlIGlzIHByb2JhYmx5IHVzZWxlc3Mgbm93IGFueXdheS4KKwkJICovCisJCWNwID0gTlVMTDsKKwl9CiAKIAlkZXYtPmFjdGNvbmZpZyA9IGNwOwotCWlmICghY3ApCisJaWYgKCFjcCkgewogCQl1c2Jfc2V0X2RldmljZV9zdGF0ZShkZXYsIFVTQl9TVEFURV9BRERSRVNTKTsKLQllbHNlIHsKLQkJdXNiX3NldF9kZXZpY2Vfc3RhdGUoZGV2LCBVU0JfU1RBVEVfQ09ORklHVVJFRCk7CisJCWdvdG8gZnJlZV9pbnRlcmZhY2VzOworCX0KKwl1c2Jfc2V0X2RldmljZV9zdGF0ZShkZXYsIFVTQl9TVEFURV9DT05GSUdVUkVEKTsKIAotCQkvKiBJbml0aWFsaXplIHRoZSBuZXcgaW50ZXJmYWNlIHN0cnVjdHVyZXMgYW5kIHRoZQotCQkgKiBoYy9oY2QvdXNiY29yZSBpbnRlcmZhY2UvZW5kcG9pbnQgc3RhdGUuCisJLyogSW5pdGlhbGl6ZSB0aGUgbmV3IGludGVyZmFjZSBzdHJ1Y3R1cmVzIGFuZCB0aGUKKwkgKiBoYy9oY2QvdXNiY29yZSBpbnRlcmZhY2UvZW5kcG9pbnQgc3RhdGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IG5pbnRmOyArK2kpIHsKKwkJc3RydWN0IHVzYl9pbnRlcmZhY2VfY2FjaGUgKmludGZjOworCQlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjsKKwkJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqYWx0OworCisJCWNwLT5pbnRlcmZhY2VbaV0gPSBpbnRmID0gbmV3X2ludGVyZmFjZXNbaV07CisJCWludGZjID0gY3AtPmludGZfY2FjaGVbaV07CisJCWludGYtPmFsdHNldHRpbmcgPSBpbnRmYy0+YWx0c2V0dGluZzsKKwkJaW50Zi0+bnVtX2FsdHNldHRpbmcgPSBpbnRmYy0+bnVtX2FsdHNldHRpbmc7CisJCWtyZWZfZ2V0KCZpbnRmYy0+cmVmKTsKKworCQlhbHQgPSB1c2JfYWx0bnVtX3RvX2FsdHNldHRpbmcoaW50ZiwgMCk7CisKKwkJLyogTm8gYWx0c2V0dGluZyAwPyAgV2UnbGwgYXNzdW1lIHRoZSBmaXJzdCBhbHRzZXR0aW5nLgorCQkgKiBXZSBjb3VsZCB1c2UgYSBHZXRJbnRlcmZhY2UgY2FsbCwgYnV0IGlmIGEgZGV2aWNlIGlzCisJCSAqIHNvIG5vbi1jb21wbGlhbnQgdGhhdCBpdCBkb2Vzbid0IGhhdmUgYWx0c2V0dGluZyAwCisJCSAqIHRoZW4gSSB3b3VsZG4ndCB0cnVzdCBpdHMgcmVwbHkgYW55d2F5LgogCQkgKi8KLQkJZm9yIChpID0gMDsgaSA8IG5pbnRmOyArK2kpIHsKLQkJCXN0cnVjdCB1c2JfaW50ZXJmYWNlX2NhY2hlICppbnRmYzsKLQkJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmOwotCQkJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqYWx0OworCQlpZiAoIWFsdCkKKwkJCWFsdCA9ICZpbnRmLT5hbHRzZXR0aW5nWzBdOwogCi0JCQljcC0+aW50ZXJmYWNlW2ldID0gaW50ZiA9IG5ld19pbnRlcmZhY2VzW2ldOwotCQkJaW50ZmMgPSBjcC0+aW50Zl9jYWNoZVtpXTsKLQkJCWludGYtPmFsdHNldHRpbmcgPSBpbnRmYy0+YWx0c2V0dGluZzsKLQkJCWludGYtPm51bV9hbHRzZXR0aW5nID0gaW50ZmMtPm51bV9hbHRzZXR0aW5nOwotCQkJa3JlZl9nZXQoJmludGZjLT5yZWYpOworCQlpbnRmLT5jdXJfYWx0c2V0dGluZyA9IGFsdDsKKwkJdXNiX2VuYWJsZV9pbnRlcmZhY2UoZGV2LCBpbnRmKTsKKwkJaW50Zi0+ZGV2LnBhcmVudCA9ICZkZXYtPmRldjsKKwkJaW50Zi0+ZGV2LmRyaXZlciA9IE5VTEw7CisJCWludGYtPmRldi5idXMgPSAmdXNiX2J1c190eXBlOworCQlpbnRmLT5kZXYuZG1hX21hc2sgPSBkZXYtPmRldi5kbWFfbWFzazsKKwkJaW50Zi0+ZGV2LnJlbGVhc2UgPSByZWxlYXNlX2ludGVyZmFjZTsKKwkJZGV2aWNlX2luaXRpYWxpemUgKCZpbnRmLT5kZXYpOworCQltYXJrX3F1aWVzY2VkKGludGYpOworCQlzcHJpbnRmICgmaW50Zi0+ZGV2LmJ1c19pZFswXSwgIiVkLSVzOiVkLiVkIiwKKwkJCSBkZXYtPmJ1cy0+YnVzbnVtLCBkZXYtPmRldnBhdGgsCisJCQkgY29uZmlndXJhdGlvbiwgYWx0LT5kZXNjLmJJbnRlcmZhY2VOdW1iZXIpOworCX0KKwlrZnJlZShuZXdfaW50ZXJmYWNlcyk7CiAKLQkJCWFsdCA9IHVzYl9hbHRudW1fdG9fYWx0c2V0dGluZyhpbnRmLCAwKTsKKwlpZiAoY3AtPnN0cmluZyA9PSBOVUxMKQorCQljcC0+c3RyaW5nID0gdXNiX2NhY2hlX3N0cmluZyhkZXYsIGNwLT5kZXNjLmlDb25maWd1cmF0aW9uKTsKIAotCQkJLyogTm8gYWx0c2V0dGluZyAwPyAgV2UnbGwgYXNzdW1lIHRoZSBmaXJzdCBhbHRzZXR0aW5nLgotCQkJICogV2UgY291bGQgdXNlIGEgR2V0SW50ZXJmYWNlIGNhbGwsIGJ1dCBpZiBhIGRldmljZSBpcwotCQkJICogc28gbm9uLWNvbXBsaWFudCB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSBhbHRzZXR0aW5nIDAKLQkJCSAqIHRoZW4gSSB3b3VsZG4ndCB0cnVzdCBpdHMgcmVwbHkgYW55d2F5LgotCQkJICovCi0JCQlpZiAoIWFsdCkKLQkJCQlhbHQgPSAmaW50Zi0+YWx0c2V0dGluZ1swXTsKKwkvKiBOb3cgdGhhdCBhbGwgdGhlIGludGVyZmFjZXMgYXJlIHNldCB1cCwgcmVnaXN0ZXIgdGhlbQorCSAqIHRvIHRyaWdnZXIgYmluZGluZyBvZiBkcml2ZXJzIHRvIGludGVyZmFjZXMuICBwcm9iZSgpCisJICogcm91dGluZXMgbWF5IGluc3RhbGwgZGlmZmVyZW50IGFsdHNldHRpbmdzIGFuZCBtYXkKKwkgKiBjbGFpbSgpIGFueSBpbnRlcmZhY2VzIG5vdCB5ZXQgYm91bmQuICBNYW55IGNsYXNzIGRyaXZlcnMKKwkgKiBuZWVkIHRoYXQ6IENEQywgYXVkaW8sIHZpZGVvLCBldGMuCisJICovCisJZm9yIChpID0gMDsgaSA8IG5pbnRmOyArK2kpIHsKKwkJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSBjcC0+aW50ZXJmYWNlW2ldOwogCi0JCQlpbnRmLT5jdXJfYWx0c2V0dGluZyA9IGFsdDsKLQkJCXVzYl9lbmFibGVfaW50ZXJmYWNlKGRldiwgaW50Zik7Ci0JCQlpbnRmLT5kZXYucGFyZW50ID0gJmRldi0+ZGV2OwotCQkJaW50Zi0+ZGV2LmRyaXZlciA9IE5VTEw7Ci0JCQlpbnRmLT5kZXYuYnVzID0gJnVzYl9idXNfdHlwZTsKLQkJCWludGYtPmRldi5kbWFfbWFzayA9IGRldi0+ZGV2LmRtYV9tYXNrOwotCQkJaW50Zi0+ZGV2LnJlbGVhc2UgPSByZWxlYXNlX2ludGVyZmFjZTsKLQkJCWRldmljZV9pbml0aWFsaXplICgmaW50Zi0+ZGV2KTsKLQkJCW1hcmtfcXVpZXNjZWQoaW50Zik7Ci0JCQlzcHJpbnRmICgmaW50Zi0+ZGV2LmJ1c19pZFswXSwgIiVkLSVzOiVkLiVkIiwKLQkJCQkgZGV2LT5idXMtPmJ1c251bSwgZGV2LT5kZXZwYXRoLAotCQkJCSBjb25maWd1cmF0aW9uLAotCQkJCSBhbHQtPmRlc2MuYkludGVyZmFjZU51bWJlcik7CisJCWRldl9kYmcgKCZkZXYtPmRldiwKKwkJCSJhZGRpbmcgJXMgKGNvbmZpZyAjJWQsIGludGVyZmFjZSAlZClcbiIsCisJCQlpbnRmLT5kZXYuYnVzX2lkLCBjb25maWd1cmF0aW9uLAorCQkJaW50Zi0+Y3VyX2FsdHNldHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlcik7CisJCXJldCA9IGRldmljZV9hZGQgKCZpbnRmLT5kZXYpOworCQlpZiAocmV0ICE9IDApIHsKKwkJCWRldl9lcnIoJmRldi0+ZGV2LCAiZGV2aWNlX2FkZCglcykgLS0+ICVkXG4iLAorCQkJCWludGYtPmRldi5idXNfaWQsIHJldCk7CisJCQljb250aW51ZTsKIAkJfQotCQlrZnJlZShuZXdfaW50ZXJmYWNlcyk7Ci0KLQkJaWYgKGNwLT5zdHJpbmcgPT0gTlVMTCkKLQkJCWNwLT5zdHJpbmcgPSB1c2JfY2FjaGVfc3RyaW5nKGRldiwKLQkJCQkJY3AtPmRlc2MuaUNvbmZpZ3VyYXRpb24pOwotCi0JCS8qIE5vdyB0aGF0IGFsbCB0aGUgaW50ZXJmYWNlcyBhcmUgc2V0IHVwLCByZWdpc3RlciB0aGVtCi0JCSAqIHRvIHRyaWdnZXIgYmluZGluZyBvZiBkcml2ZXJzIHRvIGludGVyZmFjZXMuICBwcm9iZSgpCi0JCSAqIHJvdXRpbmVzIG1heSBpbnN0YWxsIGRpZmZlcmVudCBhbHRzZXR0aW5ncyBhbmQgbWF5Ci0JCSAqIGNsYWltKCkgYW55IGludGVyZmFjZXMgbm90IHlldCBib3VuZC4gIE1hbnkgY2xhc3MgZHJpdmVycwotCQkgKiBuZWVkIHRoYXQ6IENEQywgYXVkaW8sIHZpZGVvLCBldGMuCi0JCSAqLwotCQlmb3IgKGkgPSAwOyBpIDwgbmludGY7ICsraSkgewotCQkJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSBjcC0+aW50ZXJmYWNlW2ldOwotCi0JCQlkZXZfZGJnICgmZGV2LT5kZXYsCi0JCQkJImFkZGluZyAlcyAoY29uZmlnICMlZCwgaW50ZXJmYWNlICVkKVxuIiwKLQkJCQlpbnRmLT5kZXYuYnVzX2lkLCBjb25maWd1cmF0aW9uLAotCQkJCWludGYtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJJbnRlcmZhY2VOdW1iZXIpOwotCQkJcmV0ID0gZGV2aWNlX2FkZCAoJmludGYtPmRldik7Ci0JCQlpZiAocmV0ICE9IDApIHsKLQkJCQlkZXZfZXJyKCZkZXYtPmRldiwKLQkJCQkJImRldmljZV9hZGQoJXMpIC0tPiAlZFxuIiwKLQkJCQkJaW50Zi0+ZGV2LmJ1c19pZCwKLQkJCQkJcmV0KTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCXVzYl9jcmVhdGVfc3lzZnNfaW50Zl9maWxlcyAoaW50Zik7Ci0JCX0KKwkJdXNiX2NyZWF0ZV9zeXNmc19pbnRmX2ZpbGVzIChpbnRmKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvc3lzZnMuYyBiL2RyaXZlcnMvdXNiL2NvcmUvc3lzZnMuYwppbmRleCA3MWQ4ODEzLi4zZjQ5YmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL3N5c2ZzLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9zeXNmcy5jCkBAIC0xNSwyMDMgKzE1LDYgQEAKICNpbmNsdWRlIDxsaW51eC91c2IuaD4KICNpbmNsdWRlICJ1c2IuaCIKIAotLyogZW5kcG9pbnQgc3R1ZmYgKi8KLXN0cnVjdCBlcF9vYmplY3QgewotCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVzYzsKLQlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjsKLQlzdHJ1Y3Qga29iamVjdCBrb2JqOwotfTsKLSNkZWZpbmUgdG9fZXBfb2JqZWN0KF9rb2JqKSBcCi0JY29udGFpbmVyX29mKF9rb2JqLCBzdHJ1Y3QgZXBfb2JqZWN0LCBrb2JqKQotCi1zdHJ1Y3QgZXBfYXR0cmlidXRlIHsKLQlzdHJ1Y3QgYXR0cmlidXRlIGF0dHI7Ci0Jc3NpemVfdCAoKnNob3cpKHN0cnVjdCB1c2JfZGV2aWNlICosCi0JCQlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKiwgY2hhciAqKTsKLX07Ci0jZGVmaW5lIHRvX2VwX2F0dHJpYnV0ZShfYXR0cikgXAotCWNvbnRhaW5lcl9vZihfYXR0ciwgc3RydWN0IGVwX2F0dHJpYnV0ZSwgYXR0cikKLQotI2RlZmluZSBFUF9BVFRSKF9uYW1lKQkJCQkJCVwKLXN0cnVjdCBlcF9hdHRyaWJ1dGUgZXBfIyNfbmFtZSA9IHsJCQkJXAotCS5hdHRyID0gey5uYW1lID0gI19uYW1lLCAub3duZXIgPSBUSElTX01PRFVMRSwJCVwKLQkJCS5tb2RlID0gU19JUlVHT30sCQkJXAotCS5zaG93ID0gc2hvd19lcF8jI19uYW1lfQotCi0jZGVmaW5lIHVzYl9lcF9hdHRyKGZpZWxkLCBmb3JtYXRfc3RyaW5nKQkJCVwKLXN0YXRpYyBzc2l6ZV90IHNob3dfZXBfIyNmaWVsZChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwJCVwKLQkJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjLCAJCVwKLQkJY2hhciAqYnVmKQkJCQkJXAotewkJCQkJCQkJXAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgZm9ybWF0X3N0cmluZywgZGVzYy0+ZmllbGQpOwlcCi19CQkJCQkJCQlcCi1zdGF0aWMgRVBfQVRUUihmaWVsZCk7Ci0KLXVzYl9lcF9hdHRyKGJMZW5ndGgsICIlMDJ4XG4iKQotdXNiX2VwX2F0dHIoYkVuZHBvaW50QWRkcmVzcywgIiUwMnhcbiIpCi11c2JfZXBfYXR0cihibUF0dHJpYnV0ZXMsICIlMDJ4XG4iKQotdXNiX2VwX2F0dHIoYkludGVydmFsLCAiJTAyeFxuIikKLQotc3RhdGljIHNzaXplX3Qgc2hvd19lcF93TWF4UGFja2V0U2l6ZShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKLQkJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJTA0eFxuIiwKLQkJCWxlMTZfdG9fY3B1KGRlc2MtPndNYXhQYWNrZXRTaXplKSAmIDB4MDdmZik7Ci19Ci1zdGF0aWMgRVBfQVRUUih3TWF4UGFja2V0U2l6ZSk7Ci0KLXN0YXRpYyBzc2l6ZV90IHNob3dfZXBfdHlwZShzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKLQkJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjLCBjaGFyICpidWYpCi17Ci0JY2hhciAqdHlwZSA9ICJ1bmtub3duIjsKLQotCXN3aXRjaCAoZGVzYy0+Ym1BdHRyaWJ1dGVzICYgVVNCX0VORFBPSU5UX1hGRVJUWVBFX01BU0spIHsKLQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0w6Ci0JCXR5cGUgPSAiQ29udHJvbCI7Ci0JCWJyZWFrOwotCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzoKLQkJdHlwZSA9ICJJc29jIjsKLQkJYnJlYWs7Ci0JY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9CVUxLOgotCQl0eXBlID0gIkJ1bGsiOwotCQlicmVhazsKLQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lOVDoKLQkJdHlwZSA9ICJJbnRlcnJ1cHQiOwotCQlicmVhazsKLQl9Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIHR5cGUpOwotfQotc3RhdGljIEVQX0FUVFIodHlwZSk7Ci0KLXN0YXRpYyBzc2l6ZV90IHNob3dfZXBfaW50ZXJ2YWwoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsCi0JCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVzYywgY2hhciAqYnVmKQotewotCWNoYXIgdW5pdDsKLQl1bnNpZ25lZCBpbnRlcnZhbCA9IDA7Ci0JdW5zaWduZWQgaW47Ci0KLQlpbiA9IChkZXNjLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTik7Ci0KLQlzd2l0Y2ggKGRlc2MtPmJtQXR0cmlidXRlcyAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLKSB7Ci0JY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MOgotCQlpZiAodWRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX0hJR0gpIAkvKiB1ZnJhbWVzIHBlciBOQUsgKi8KLQkJCWludGVydmFsID0gZGVzYy0+YkludGVydmFsOwotCQlicmVhazsKLQljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lTT0M6Ci0JCWludGVydmFsID0gMSA8PCAoZGVzYy0+YkludGVydmFsIC0gMSk7Ci0JCWJyZWFrOwotCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfQlVMSzoKLQkJaWYgKHVkZXYtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIICYmICFpbikgLyogdWZyYW1lcyBwZXIgTkFLICovCi0JCQlpbnRlcnZhbCA9IGRlc2MtPmJJbnRlcnZhbDsKLQkJYnJlYWs7Ci0JY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9JTlQ6Ci0JCWlmICh1ZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCkKLQkJCWludGVydmFsID0gMSA8PCAoZGVzYy0+YkludGVydmFsIC0gMSk7Ci0JCWVsc2UKLQkJCWludGVydmFsID0gZGVzYy0+YkludGVydmFsOwotCQlicmVhazsKLQl9Ci0JaW50ZXJ2YWwgKj0gKHVkZXYtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIKSA/IDEyNSA6IDEwMDA7Ci0JaWYgKGludGVydmFsICUgMTAwMCkKLQkJdW5pdCA9ICd1JzsKLQllbHNlIHsKLQkJdW5pdCA9ICdtJzsKLQkJaW50ZXJ2YWwgLz0gMTAwMDsKLQl9Ci0KLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZCVjc1xuIiwgaW50ZXJ2YWwsIHVuaXQpOwotfQotc3RhdGljIEVQX0FUVFIoaW50ZXJ2YWwpOwotCi1zdGF0aWMgc3NpemVfdCBzaG93X2VwX2RpcmVjdGlvbihzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwKLQkJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpkZXNjLCBjaGFyICpidWYpCi17Ci0JY2hhciAqZGlyZWN0aW9uOwotCi0JaWYgKChkZXNjLT5ibUF0dHJpYnV0ZXMgJiBVU0JfRU5EUE9JTlRfWEZFUlRZUEVfTUFTSykgPT0KLQkJCVVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0wpCi0JCWRpcmVjdGlvbiA9ICJib3RoIjsKLQllbHNlIGlmIChkZXNjLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTikKLQkJZGlyZWN0aW9uID0gImluIjsKLQllbHNlCi0JCWRpcmVjdGlvbiA9ICJvdXQiOwotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBkaXJlY3Rpb24pOwotfQotc3RhdGljIEVQX0FUVFIoZGlyZWN0aW9uKTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmVwX2F0dHJzW10gPSB7Ci0JJmVwX2JMZW5ndGguYXR0ciwKLQkmZXBfYkVuZHBvaW50QWRkcmVzcy5hdHRyLAotCSZlcF9ibUF0dHJpYnV0ZXMuYXR0ciwKLQkmZXBfYkludGVydmFsLmF0dHIsCi0JJmVwX3dNYXhQYWNrZXRTaXplLmF0dHIsCi0JJmVwX3R5cGUuYXR0ciwKLQkmZXBfaW50ZXJ2YWwuYXR0ciwKLQkmZXBfZGlyZWN0aW9uLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyB2b2lkIGVwX29iamVjdF9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKQotewotCWtmcmVlKHRvX2VwX29iamVjdChrb2JqKSk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IGVwX29iamVjdF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAotCQljaGFyICpidWYpCi17Ci0Jc3RydWN0IGVwX29iamVjdCAqZXBfb2JqID0gdG9fZXBfb2JqZWN0KGtvYmopOwotCXN0cnVjdCBlcF9hdHRyaWJ1dGUgKmVwX2F0dHIgPSB0b19lcF9hdHRyaWJ1dGUoYXR0cik7Ci0KLQlyZXR1cm4gKGVwX2F0dHItPnNob3cpKGVwX29iai0+dWRldiwgZXBfb2JqLT5kZXNjLCBidWYpOwotfQotCi1zdGF0aWMgc3RydWN0IHN5c2ZzX29wcyBlcF9vYmplY3Rfc3lzZnNfb3BzID0gewotCS5zaG93ID0JCQllcF9vYmplY3Rfc2hvdywKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qga29ial90eXBlIGVwX29iamVjdF9rdHlwZSA9IHsKLQkucmVsZWFzZSA9CQllcF9vYmplY3RfcmVsZWFzZSwKLQkuc3lzZnNfb3BzID0JCSZlcF9vYmplY3Rfc3lzZnNfb3BzLAotCS5kZWZhdWx0X2F0dHJzID0JZXBfYXR0cnMsCi19OwotCi1zdGF0aWMgdm9pZCB1c2JfY3JlYXRlX2VwX2ZpbGVzKHN0cnVjdCBrb2JqZWN0ICpwYXJlbnQsCi0JCXN0cnVjdCB1c2JfaG9zdF9lbmRwb2ludCAqZW5kcG9pbnQsCi0JCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQotewotCXN0cnVjdCBlcF9vYmplY3QgKmVwX29iajsKLQlzdHJ1Y3Qga29iamVjdCAqa29iajsKLQotCWVwX29iaiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBlcF9vYmplY3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWVwX29iaikKLQkJcmV0dXJuOwotCi0JZXBfb2JqLT5kZXNjID0gJmVuZHBvaW50LT5kZXNjOwotCWVwX29iai0+dWRldiA9IHVkZXY7Ci0KLQlrb2JqID0gJmVwX29iai0+a29iajsKLQlrb2JqZWN0X3NldF9uYW1lKGtvYmosICJlcF8lMDJ4IiwgZW5kcG9pbnQtPmRlc2MuYkVuZHBvaW50QWRkcmVzcyk7Ci0Ja29iai0+cGFyZW50ID0gcGFyZW50OwotCWtvYmotPmt0eXBlID0gJmVwX29iamVjdF9rdHlwZTsKLQotCS8qIERvbid0IHVzZSBrb2JqZWN0X3JlZ2lzdGVyLCBiZWNhdXNlIGl0IGdlbmVyYXRlcyBhIGhvdHBsdWcgZXZlbnQgKi8KLQlrb2JqZWN0X2luaXQoa29iaik7Ci0JaWYgKGtvYmplY3RfYWRkKGtvYmopID09IDApCi0JCWVuZHBvaW50LT5rb2JqID0ga29iajsKLQllbHNlCi0JCWtvYmplY3RfcHV0KGtvYmopOwotfQotCi1zdGF0aWMgdm9pZCB1c2JfcmVtb3ZlX2VwX2ZpbGVzKHN0cnVjdCB1c2JfaG9zdF9lbmRwb2ludCAqZW5kcG9pbnQpCi17Ci0KLQlpZiAoZW5kcG9pbnQtPmtvYmopIHsKLQkJa29iamVjdF9kZWwoZW5kcG9pbnQtPmtvYmopOwotCQlrb2JqZWN0X3B1dChlbmRwb2ludC0+a29iaik7Ci0JCWVuZHBvaW50LT5rb2JqID0gTlVMTDsKLQl9Ci19Ci0KIC8qIEFjdGl2ZSBjb25maWd1cmF0aW9uIGZpZWxkcyAqLwogI2RlZmluZSB1c2JfYWN0Y29uZmlnX3Nob3coZmllbGQsIG11bHRpcGxpZXIsIGZvcm1hdF9zdHJpbmcpCQlcCiBzdGF0aWMgc3NpemVfdCAgc2hvd18jI2ZpZWxkIChzdHJ1Y3QgZGV2aWNlICpkZXYsCQkJXApAQCAtNDIwLDcgKzIyMyw3IEBACiAJaWYgKHVkZXYtPnNlcmlhbCkKIAkJZGV2aWNlX2NyZWF0ZV9maWxlIChkZXYsICZkZXZfYXR0cl9zZXJpYWwpOwogCWRldmljZV9jcmVhdGVfZmlsZSAoZGV2LCAmZGV2X2F0dHJfY29uZmlndXJhdGlvbik7Ci0JdXNiX2NyZWF0ZV9lcF9maWxlcygmZGV2LT5rb2JqLCAmdWRldi0+ZXAwLCB1ZGV2KTsKKwl1c2JfY3JlYXRlX2VwX2ZpbGVzKGRldiwgJnVkZXYtPmVwMCwgdWRldik7CiB9CiAKIHZvaWQgdXNiX3JlbW92ZV9zeXNmc19kZXZfZmlsZXMgKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KQpAQCAtNTI0LDcgKzMyNyw3IEBACiAKIAlpZmFjZV9kZXNjID0gaW50Zi0+Y3VyX2FsdHNldHRpbmc7CiAJZm9yIChpID0gMDsgaSA8IGlmYWNlX2Rlc2MtPmRlc2MuYk51bUVuZHBvaW50czsgKytpKQotCQl1c2JfY3JlYXRlX2VwX2ZpbGVzKCZpbnRmLT5kZXYua29iaiwgJmlmYWNlX2Rlc2MtPmVuZHBvaW50W2ldLAorCQl1c2JfY3JlYXRlX2VwX2ZpbGVzKCZpbnRmLT5kZXYsICZpZmFjZV9kZXNjLT5lbmRwb2ludFtpXSwKIAkJCQl1ZGV2KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS91c2IuYyBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmMKaW5kZXggYjdmZGMxYy4uZmI0ODhjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5jCkBAIC05OTEsNiArOTkxLDggQEAKIAogc3RhdGljIGludCB2ZXJpZnlfc3VzcGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqdW51c2VkKQogeworCWlmIChkZXYtPmRyaXZlciA9PSBOVUxMKQorCQlyZXR1cm4gMDsKIAlyZXR1cm4gKGRldi0+cG93ZXIucG93ZXJfc3RhdGUuZXZlbnQgPT0gUE1fRVZFTlRfT04pID8gLUVCVVNZIDogMDsKIH0KIApAQCAtMTIwNyw2ICsxMjA5LDcgQEAKIEVYUE9SVF9TWU1CT0wodXNiX2FsdG51bV90b19hbHRzZXR0aW5nKTsKIAogRVhQT1JUX1NZTUJPTCh1c2JfcmVzZXRfZGV2aWNlKTsKK0VYUE9SVF9TWU1CT0wodXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UpOwogCiBFWFBPUlRfU1lNQk9MKF9fdXNiX2dldF9leHRyYV9kZXNjcmlwdG9yKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS91c2IuaCBiL2RyaXZlcnMvdXNiL2NvcmUvdXNiLmgKaW5kZXggNDY0N2UxZS4uN2E2NTBjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS91c2IuaAorKysgYi9kcml2ZXJzL3VzYi9jb3JlL3VzYi5oCkBAIC00LDYgKzQsOSBAQAogZXh0ZXJuIHZvaWQgdXNiX3JlbW92ZV9zeXNmc19kZXZfZmlsZXMgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgdXNiX2NyZWF0ZV9zeXNmc19pbnRmX2ZpbGVzIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CiBleHRlcm4gdm9pZCB1c2JfcmVtb3ZlX3N5c2ZzX2ludGZfZmlsZXMgKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKK2V4dGVybiB2b2lkIHVzYl9jcmVhdGVfZXBfZmlsZXMoc3RydWN0IGRldmljZSAqcGFyZW50LCBzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKmVuZHBvaW50LAorCQkJCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2KTsKK2V4dGVybiB2b2lkIHVzYl9yZW1vdmVfZXBfZmlsZXMoc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplbmRwb2ludCk7CiAKIGV4dGVybiB2b2lkIHVzYl9kaXNhYmxlX2VuZHBvaW50IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgZXBhZGRyKTsKIGV4dGVybiB2b2lkIHVzYl9kaXNhYmxlX2ludGVyZmFjZSAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9ldGhlci5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKaW5kZXggOWM0NDIyYS4uMDc4ZGFhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2V0aGVyLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+CiAKICNpbmNsdWRlIDxsaW51eC91c2JfY2g5Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2NkYy5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9jZGMuaD4KICNpbmNsdWRlIDxsaW51eC91c2JfZ2FkZ2V0Lmg+CiAKICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KQEAgLTEwMSw5ICsxMDEsOSBAQAogCiAvKiBDREMgYW5kIFJORElTIHN1cHBvcnQgdGhlIHNhbWUgaG9zdC1jaG9zZW4gb3V0Z29pbmcgcGFja2V0IGZpbHRlcnMuICovCiAjZGVmaW5lCURFRkFVTFRfRklMVEVSCShVU0JfQ0RDX1BBQ0tFVF9UWVBFX0JST0FEQ0FTVCBcCi0gCQkJfFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVCBcCi0gCQkJfFVTQl9DRENfUEFDS0VUX1RZUEVfUFJPTUlTQ1VPVVMgXAotIAkJCXxVU0JfQ0RDX1BBQ0tFVF9UWVBFX0RJUkVDVEVEKQorCQkJfFVTQl9DRENfUEFDS0VUX1RZUEVfQUxMX01VTFRJQ0FTVCBcCisJCQl8VVNCX0NEQ19QQUNLRVRfVFlQRV9QUk9NSVNDVU9VUyBcCisJCQl8VVNCX0NEQ19QQUNLRVRfVFlQRV9ESVJFQ1RFRCkKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMzE4LDcgKzMxOCw3IEBACiAjZGVmaW5lIERFRkFVTFRfUUxFTgkyCS8qIGRvdWJsZSBidWZmZXJpbmcgYnkgZGVmYXVsdCAqLwogCiAvKiBwZWFrIGJ1bGsgdHJhbnNmZXIgYml0cy1wZXItc2Vjb25kICovCi0jZGVmaW5lCUhTX0JQUyAJCSgxMyAqIDUxMiAqIDggKiAxMDAwICogOCkKKyNkZWZpbmUJSFNfQlBTCQkoMTMgKiA1MTIgKiA4ICogMTAwMCAqIDgpCiAjZGVmaW5lCUZTX0JQUwkJKDE5ICogIDY0ICogMSAqIDEwMDAgKiA4KQogCiAjaWZkZWYgQ09ORklHX1VTQl9HQURHRVRfRFVBTFNQRUVECkBAIC00NjYsNyArNDY2LDcgQEAKIH07CiAKICNpZmRlZglDT05GSUdfVVNCX0VUSF9STkRJUwotc3RhdGljIHN0cnVjdCB1c2JfY29uZmlnX2Rlc2NyaXB0b3IgCitzdGF0aWMgc3RydWN0IHVzYl9jb25maWdfZGVzY3JpcHRvcgogcm5kaXNfY29uZmlnID0gewogCS5iTGVuZ3RoID0gICAgICAgICAgICAgIHNpemVvZiBybmRpc19jb25maWcsCiAJLmJEZXNjcmlwdG9yVHlwZSA9ICAgICAgVVNCX0RUX0NPTkZJRywKQEAgLTUxMSw3ICs1MTEsNyBAQAogcm5kaXNfY29udHJvbF9pbnRmID0gewogCS5iTGVuZ3RoID0gICAgICAgICAgICAgIHNpemVvZiBybmRpc19jb250cm9sX2ludGYsCiAJLmJEZXNjcmlwdG9yVHlwZSA9ICAgICAgVVNCX0RUX0lOVEVSRkFDRSwKLQkgIAorCiAJLmJJbnRlcmZhY2VOdW1iZXIgPSAgICAgMCwKIAkuYk51bUVuZHBvaW50cyA9ICAgICAgICAxLAogCS5iSW50ZXJmYWNlQ2xhc3MgPSAgICAgIFVTQl9DTEFTU19DT01NLApAQCAtNTQ1LDIwICs1NDUsMjAgQEAKICNpZmRlZglDT05GSUdfVVNCX0VUSF9STkRJUwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9jZGNfY2FsbF9tZ210X2Rlc2NyaXB0b3IgY2FsbF9tZ210X2Rlc2NyaXB0b3IgPSB7Ci0JLmJMZW5ndGggPSAgCQlzaXplb2YgY2FsbF9tZ210X2Rlc2NyaXB0b3IsCi0JLmJEZXNjcmlwdG9yVHlwZSA9IAlVU0JfRFRfQ1NfSU5URVJGQUNFLAotCS5iRGVzY3JpcHRvclN1YlR5cGUgPSAJVVNCX0NEQ19DQUxMX01BTkFHRU1FTlRfVFlQRSwKKwkuYkxlbmd0aCA9CQlzaXplb2YgY2FsbF9tZ210X2Rlc2NyaXB0b3IsCisJLmJEZXNjcmlwdG9yVHlwZSA9CVVTQl9EVF9DU19JTlRFUkZBQ0UsCisJLmJEZXNjcmlwdG9yU3ViVHlwZSA9CVVTQl9DRENfQ0FMTF9NQU5BR0VNRU5UX1RZUEUsCiAKLQkuYm1DYXBhYmlsaXRpZXMgPSAJMHgwMCwKLQkuYkRhdGFJbnRlcmZhY2UgPSAJMHgwMSwKKwkuYm1DYXBhYmlsaXRpZXMgPQkweDAwLAorCS5iRGF0YUludGVyZmFjZSA9CTB4MDEsCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9jZGNfYWNtX2Rlc2NyaXB0b3IgYWNtX2Rlc2NyaXB0b3IgPSB7Ci0JLmJMZW5ndGggPSAgCQlzaXplb2YgYWNtX2Rlc2NyaXB0b3IsCi0JLmJEZXNjcmlwdG9yVHlwZSA9IAlVU0JfRFRfQ1NfSU5URVJGQUNFLAotCS5iRGVzY3JpcHRvclN1YlR5cGUgPSAJVVNCX0NEQ19BQ01fVFlQRSwKKwkuYkxlbmd0aCA9CQlzaXplb2YgYWNtX2Rlc2NyaXB0b3IsCisJLmJEZXNjcmlwdG9yVHlwZSA9CVVTQl9EVF9DU19JTlRFUkZBQ0UsCisJLmJEZXNjcmlwdG9yU3ViVHlwZSA9CVVTQl9DRENfQUNNX1RZUEUsCiAKLQkuYm1DYXBhYmlsaXRpZXMgPSAJMHgwMCwKKwkuYm1DYXBhYmlsaXRpZXMgPQkweDAwLAogfTsKIAogI2VuZGlmCkBAIC01OTUsNyArNTk1LDcgQEAKICAqIFJORElTIHJlcXVpcmVzIHRoZSBzdGF0dXMgZW5kcG9pbnQsIHNpbmNlIGl0IHVzZXMgdGhhdCBlbmNhcHN1bGF0aW9uCiAgKiBtZWNoYW5pc20gZm9yIGl0cyBmdW5reSBSUEMgc2NoZW1lLgogICovCi0gCisKICNkZWZpbmUgTE9HMl9TVEFUVVNfSU5URVJWQUxfTVNFQwk1CS8qIDEgPDwgNSA9PSAzMiBtc2VjICovCiAjZGVmaW5lIFNUQVRVU19CWVRFQ09VTlQJCTE2CS8qIDggYnl0ZSBoZWFkZXIgKyBkYXRhICovCiAKQEAgLTk3OCw3ICs5NzgsNyBAQAogCiAJCXJlc3VsdCA9IHVzYl9lcF9lbmFibGUgKGRldi0+c3RhdHVzX2VwLCBkZXYtPnN0YXR1cyk7CiAJCWlmIChyZXN1bHQgIT0gMCkgewotCQkJREVCVUcgKGRldiwgImVuYWJsZSAlcyAtLT4gJWRcbiIsIAorCQkJREVCVUcgKGRldiwgImVuYWJsZSAlcyAtLT4gJWRcbiIsCiAJCQkJZGV2LT5zdGF0dXNfZXAtPm5hbWUsIHJlc3VsdCk7CiAJCQlnb3RvIGRvbmU7CiAJCX0KQEAgLTEwMDIsMTUgKzEwMDIsMTUgQEAKIAlpZiAoIWNkY19hY3RpdmUoZGV2KSkgewogCQlyZXN1bHQgPSB1c2JfZXBfZW5hYmxlIChkZXYtPmluX2VwLCBkZXYtPmluKTsKIAkJaWYgKHJlc3VsdCAhPSAwKSB7Ci0JCQlERUJVRyhkZXYsICJlbmFibGUgJXMgLS0+ICVkXG4iLCAKKwkJCURFQlVHKGRldiwgImVuYWJsZSAlcyAtLT4gJWRcbiIsCiAJCQkJZGV2LT5pbl9lcC0+bmFtZSwgcmVzdWx0KTsKIAkJCWdvdG8gZG9uZTsKIAkJfQogCiAJCXJlc3VsdCA9IHVzYl9lcF9lbmFibGUgKGRldi0+b3V0X2VwLCBkZXYtPm91dCk7CiAJCWlmIChyZXN1bHQgIT0gMCkgewotCQkJREVCVUcgKGRldiwgImVuYWJsZSAlcyAtLT4gJWRcbiIsIAotCQkJCWRldi0+aW5fZXAtPm5hbWUsIHJlc3VsdCk7CisJCQlERUJVRyAoZGV2LCAiZW5hYmxlICVzIC0tPiAlZFxuIiwKKwkJCQlkZXYtPm91dF9lcC0+bmFtZSwgcmVzdWx0KTsKIAkJCWdvdG8gZG9uZTsKIAkJfQogCX0KQEAgLTExNDQsNyArMTE0NCw3IEBACiAjaWZkZWYgQ09ORklHX1VTQl9HQURHRVRfRFVBTFNQRUVECiAJCWNhc2UgVVNCX1NQRUVEX0hJR0g6CXNwZWVkID0gImhpZ2giOyBicmVhazsKICNlbmRpZgotCQlkZWZhdWx0OiAJCXNwZWVkID0gIj8iOyBicmVhazsKKwkJZGVmYXVsdDoJCXNwZWVkID0gIj8iOyBicmVhazsKIAkJfQogCiAJCWRldi0+Y29uZmlnID0gbnVtYmVyOwpAQCAtMTIwNiw3ICsxMjA2LDcgQEAKIAlzdHJ1Y3QgdXNiX3JlcXVlc3QJCSpyZXEgPSBkZXYtPnN0YXRfcmVxOwogCXN0cnVjdCB1c2JfY2RjX25vdGlmaWNhdGlvbgkqZXZlbnQ7CiAJaW50CQkJCXZhbHVlOwotIAorCiAJREVCVUcgKGRldiwgIiVzLCBmbHVzaCBvbGQgc3RhdHVzIGZpcnN0XG4iLCBfX0ZVTkNUSU9OX18pOwogCiAJLyogZmx1c2ggb2xkIHN0YXR1cwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAKIHsKIAlzdHJ1Y3QgZXRoX2RldiAgICAgICAgICAqZGV2ID0gZXAtPmRyaXZlcl9kYXRhOwogCWludAkJCXN0YXR1czsKLQkKKwogCS8qIHJlY2VpdmVkIFJORElTIGNvbW1hbmQgZnJvbSBVU0JfQ0RDX1NFTkRfRU5DQVBTVUxBVEVEX0NPTU1BTkQgKi8KIAlzcGluX2xvY2soJmRldi0+bG9jayk7CiAJc3RhdHVzID0gcm5kaXNfbXNnX3BhcnNlciAoZGV2LT5ybmRpc19jb25maWcsICh1OCAqKSByZXEtPmJ1Zik7CkBAIC0xNDcyLDcgKzE0NzIsNyBAQAogCiAjZW5kaWYgLyogREVWX0NPTkZJR19DREMgKi8KIAotI2lmZGVmIENPTkZJR19VU0JfRVRIX1JORElTCQkKKyNpZmRlZiBDT05GSUdfVVNCX0VUSF9STkRJUwogCS8qIFJORElTIHVzZXMgdGhlIENEQyBjb21tYW5kIGVuY2Fwc3VsYXRpb24gbWVjaGFuaXNtIHRvIGltcGxlbWVudAogCSAqIGFuIFJQQyBzY2hlbWUsIHdpdGggbXVjaCBnZXR0aW5nL3NldHRpbmcgb2YgYXR0cmlidXRlcyBieSBPSUQuCiAJICovCkBAIC0xNDg5LDcgKzE0ODksNyBAQAogCQlyZXEtPmNvbXBsZXRlID0gcm5kaXNfY29tbWFuZF9jb21wbGV0ZTsKIAkJLyogbGF0ZXIsIHJuZGlzX2NvbnRyb2xfYWNrICgpIHNlbmRzIGEgbm90aWZpY2F0aW9uICovCiAJCWJyZWFrOwotCQkKKwogCWNhc2UgVVNCX0NEQ19HRVRfRU5DQVBTVUxBVEVEX1JFU1BPTlNFOgogCQlpZiAoKFVTQl9ESVJfSU58VVNCX1RZUEVfQ0xBU1N8VVNCX1JFQ0lQX0lOVEVSRkFDRSkKIAkJCQkJPT0gY3RybC0+YlJlcXVlc3RUeXBlCkBAIC0xNjQxLDcgKzE2NDEsNyBAQAogCQlERUJVRyAoZGV2LCAibm8gcnggc2tiXG4iKTsKIAkJZ290byBlbm9tZW07CiAJfQotCQorCiAJLyogU29tZSBwbGF0Zm9ybXMgcGVyZm9ybSBiZXR0ZXIgd2hlbiBJUCBwYWNrZXRzIGFyZSBhbGlnbmVkLAogCSAqIGJ1dCBvbiBhdCBsZWFzdCBvbmUsIGNoZWNrc3VtbWluZyBmYWlscyBvdGhlcndpc2UuICBOb3RlOgogCSAqIFJORElTIGhlYWRlcnMgaW52b2x2ZSB2YXJpYWJsZSBudW1iZXJzIG9mIExFMzIgdmFsdWVzLgpAQCAtMTcyMCw3ICsxNzIwLDcgQEAKIAljYXNlIC1FT1ZFUkZMT1c6CiAJCWRldi0+c3RhdHMucnhfb3Zlcl9lcnJvcnMrKzsKIAkJLy8gRkFMTFRIUk9VR0gKLQkgICAgCisKIAlkZWZhdWx0OgogCQlkZXYtPnN0YXRzLnJ4X2Vycm9ycysrOwogCQlERUJVRyAoZGV2LCAicnggc3RhdHVzICVkXG4iLCBzdGF0dXMpOwpAQCAtMTkxNSw3ICsxOTE1LDcgQEAKIAkJCQlzaXplb2YgKHN0cnVjdCBybmRpc19wYWNrZXRfbXNnX3R5cGUpKTsKIAkJaWYgKCFza2Jfcm5kaXMpCiAJCQlnb3RvIGRyb3A7Ci0JCisKIAkJZGV2X2tmcmVlX3NrYl9hbnkgKHNrYik7CiAJCXNrYiA9IHNrYl9ybmRpczsKIAkJcm5kaXNfYWRkX2hkciAoc2tiKTsKQEAgLTIwMDEsNyArMjAwMSw3IEBACiAJc3RydWN0IGV0aF9kZXYgICAgICAgICAgKmRldiA9IG5ldGRldl9wcml2KG5ldCk7CiAJdTMyICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOwogCXN0cnVjdCB1c2JfcmVxdWVzdCAgICAgICpyZXNwID0gZGV2LT5zdGF0X3JlcTsKLQkKKwogCS8qIGluIGNhc2UgUk5ESVMgY2FsbHMgdGhpcyBhZnRlciBkaXNjb25uZWN0ICovCiAJaWYgKCFkZXYtPnN0YXR1cykgewogCQlERUJVRyAoZGV2LCAic3RhdHVzIEVOT0RFVlxuIik7CkBAIC0yMDIxLDE2ICsyMDIxLDE2IEBACiAJcmVzcC0+bGVuZ3RoID0gODsKIAlyZXNwLT5jb21wbGV0ZSA9IHJuZGlzX2NvbnRyb2xfYWNrX2NvbXBsZXRlOwogCXJlc3AtPmNvbnRleHQgPSBkZXY7Ci0JCisKIAkqKChfX2xlMzIgKikgcmVzcC0+YnVmKSA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDEpOwogCSooKF9fbGUzMiAqKSByZXNwLT5idWYgKyAxKSA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDApOwotCQorCiAJbGVuZ3RoID0gdXNiX2VwX3F1ZXVlIChkZXYtPnN0YXR1c19lcCwgcmVzcCwgR0ZQX0FUT01JQyk7CiAJaWYgKGxlbmd0aCA8IDApIHsKIAkJcmVzcC0+c3RhdHVzID0gMDsKIAkJcm5kaXNfY29udHJvbF9hY2tfY29tcGxldGUgKGRldi0+c3RhdHVzX2VwLCByZXNwKTsKIAl9Ci0JCisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAKIAkvKiBmaWxsIHRoZSByeCBxdWV1ZSAqLwogCXJ4X2ZpbGwgKGRldiwgZ2ZwX2ZsYWdzKTsKIAotCS8qIGFuZCBvcGVuIHRoZSB0eCBmbG9vZGdhdGVzICovIAorCS8qIGFuZCBvcGVuIHRoZSB0eCBmbG9vZGdhdGVzICovCiAJYXRvbWljX3NldCAoJmRldi0+dHhfcWxlbiwgMCk7CiAJbmV0aWZfd2FrZV9xdWV1ZSAoZGV2LT5uZXQpOwogCWlmIChybmRpc19hY3RpdmUoZGV2KSkgewpAQCAtMjA3Niw3ICsyMDc2LDcgQEAKIAluZXRpZl9zdG9wX3F1ZXVlIChuZXQpOwogCiAJREVCVUcgKGRldiwgInN0b3Agc3RhdHM6IHJ4L3R4ICVsZC8lbGQsIGVycnMgJWxkLyVsZFxuIiwKLQkJZGV2LT5zdGF0cy5yeF9wYWNrZXRzLCBkZXYtPnN0YXRzLnR4X3BhY2tldHMsIAorCQlkZXYtPnN0YXRzLnJ4X3BhY2tldHMsIGRldi0+c3RhdHMudHhfcGFja2V0cywKIAkJZGV2LT5zdGF0cy5yeF9lcnJvcnMsIGRldi0+c3RhdHMudHhfZXJyb3JzCiAJCSk7CiAKQEAgLTIwOTUsNyArMjA5NSw3IEBACiAJCQl1c2JfZXBfZW5hYmxlIChkZXYtPnN0YXR1c19lcCwgZGV2LT5zdGF0dXMpOwogCQl9CiAJfQotCQorCiAJaWYgKHJuZGlzX2FjdGl2ZShkZXYpKSB7CiAJCXJuZGlzX3NldF9wYXJhbV9tZWRpdW0gKGRldi0+cm5kaXNfY29uZmlnLAogCQkJCQlORElTX01FRElVTV84MDJfMywgMCk7CkBAIC0yMzAxLDcgKzIzMDEsNyBAQAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAJaW5fZXAtPmRyaXZlcl9kYXRhID0gaW5fZXA7CS8qIGNsYWltICovCi0JCisKIAlvdXRfZXAgPSB1c2JfZXBfYXV0b2NvbmZpZyAoZ2FkZ2V0LCAmZnNfc2lua19kZXNjKTsKIAlpZiAoIW91dF9lcCkKIAkJZ290byBhdXRvY29uZl9mYWlsOwpAQCAtMjM3NCw4ICsyMzc0LDggQEAKICNlbmRpZgogCX0KIAotIAluZXQgPSBhbGxvY19ldGhlcmRldiAoc2l6ZW9mICpkZXYpOwotIAlpZiAoIW5ldCkKKwluZXQgPSBhbGxvY19ldGhlcmRldiAoc2l6ZW9mICpkZXYpOworCWlmICghbmV0KQogCQlyZXR1cm4gc3RhdHVzOwogCWRldiA9IG5ldGRldl9wcml2KG5ldCk7CiAJc3Bpbl9sb2NrX2luaXQgKCZkZXYtPmxvY2spOwpAQCAtMjQ1NCw3ICsyNDU0LDcgQEAKIAlkZXYtPmdhZGdldCA9IGdhZGdldDsKIAlzZXRfZ2FkZ2V0X2RhdGEgKGdhZGdldCwgZGV2KTsKIAlnYWRnZXQtPmVwMC0+ZHJpdmVyX2RhdGEgPSBkZXY7Ci0JCisKIAkvKiB0d28ga2luZHMgb2YgaG9zdC1pbml0aWF0ZWQgc3RhdGUgY2hhbmdlczoKIAkgKiAgLSBpZmYgREFUQSB0cmFuc2ZlciBpcyBhY3RpdmUsIGNhcnJpZXIgaXMgIm9uIgogCSAqICAtIHR4IHF1ZXVlaW5nIGVuYWJsZWQgaWYgb3BlbiAqYW5kKiBjYXJyaWVyIGlzICJvbiIKQEAgLTI0NjIsOCArMjQ2Miw4IEBACiAJbmV0aWZfc3RvcF9xdWV1ZSAoZGV2LT5uZXQpOwogCW5ldGlmX2NhcnJpZXJfb2ZmIChkZXYtPm5ldCk7CiAKLSAJU0VUX05FVERFVl9ERVYgKGRldi0+bmV0LCAmZ2FkZ2V0LT5kZXYpOwotIAlzdGF0dXMgPSByZWdpc3Rlcl9uZXRkZXYgKGRldi0+bmV0KTsKKwlTRVRfTkVUREVWX0RFViAoZGV2LT5uZXQsICZnYWRnZXQtPmRldik7CisJc3RhdHVzID0gcmVnaXN0ZXJfbmV0ZGV2IChkZXYtPm5ldCk7CiAJaWYgKHN0YXR1cyA8IDApCiAJCWdvdG8gZmFpbDE7CiAKQEAgLTI0ODgsNyArMjQ4OCw3IEBACiAJCXUzMgl2ZW5kb3JJRCA9IDA7CiAKIAkJLyogRklYTUUgUk5ESVMgdmVuZG9yIGlkID09ICJ2ZW5kb3IgTklDIGNvZGUiID09ID8gKi8KLQkJCisKIAkJZGV2LT5ybmRpc19jb25maWcgPSBybmRpc19yZWdpc3RlciAocm5kaXNfY29udHJvbF9hY2spOwogCQlpZiAoZGV2LT5ybmRpc19jb25maWcgPCAwKSB7CiBmYWlsMDoKQEAgLTI0OTYsNyArMjQ5Niw3IEBACiAJCQlzdGF0dXMgPSAtRU5PREVWOwogCQkJZ290byBmYWlsOwogCQl9Ci0JCQorCiAJCS8qIHRoZXNlIHNldCB1cCBhIGxvdCBvZiB0aGUgT0lEcyB0aGF0IFJORElTIG5lZWRzICovCiAJCXJuZGlzX3NldF9ob3N0X21hYyAoZGV2LT5ybmRpc19jb25maWcsIGRldi0+aG9zdF9tYWMpOwogCQlpZiAocm5kaXNfc2V0X3BhcmFtX2RldiAoZGV2LT5ybmRpc19jb25maWcsIGRldi0+bmV0LApAQCAtMjU1Niw3ICsyNTU2LDcgQEAKIAkuc3VzcGVuZAk9IGV0aF9zdXNwZW5kLAogCS5yZXN1bWUJCT0gZXRoX3Jlc3VtZSwKIAotCS5kcml2ZXIgCT0geworCS5kcml2ZXIJPSB7CiAJCS5uYW1lCQk9IChjaGFyICopIHNob3J0bmFtZSwKIAkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZmlsZV9zdG9yYWdlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZmlsZV9zdG9yYWdlLmMKaW5kZXggNmY4ODc0Ny4uYTQzZGM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZpbGVfc3RvcmFnZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9maWxlX3N0b3JhZ2UuYwpAQCAtMTkwNiw3ICsxOTA2LDYgQEAKIAogCWlub2RlID0gZmlscC0+Zl9kZW50cnktPmRfaW5vZGU7CiAJbXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgpOwotCWN1cnJlbnQtPmZsYWdzIHw9IFBGX1NZTkNXUklURTsKIAlyYyA9IGZpbGVtYXBfZmRhdGF3cml0ZShpbm9kZS0+aV9tYXBwaW5nKTsKIAllcnIgPSBmaWxwLT5mX29wLT5mc3luYyhmaWxwLCBmaWxwLT5mX2RlbnRyeSwgMSk7CiAJaWYgKCFyYykKQEAgLTE5MTQsNyArMTkxMyw2IEBACiAJZXJyID0gZmlsZW1hcF9mZGF0YXdhaXQoaW5vZGUtPmlfbWFwcGluZyk7CiAJaWYgKCFyYykKIAkJcmMgPSBlcnI7Ci0JY3VycmVudC0+ZmxhZ3MgJj0gflBGX1NZTkNXUklURTsKIAltdXRleF91bmxvY2soJmlub2RlLT5pX211dGV4KTsKIAlWTERCRyhjdXJsdW4sICJmZGF0YXN5bmMgLT4gJWRcbiIsIHJjKTsKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZ29rdV91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nb2t1X3VkYy5jCmluZGV4IDY2YjgxYmIuLjUzNzhjMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9nb2t1X3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nb2t1X3VkYy5jCkBAIC0xODUwLDcgKzE4NTAsNiBAQAogCXVuc2lnbmVkIGxvbmcJCXJlc291cmNlLCBsZW47CiAJdm9pZCBfX2lvbWVtCQkqYmFzZSA9IE5VTEw7CiAJaW50CQkJcmV0dmFsOwotCWNoYXIJCQlidWYgWzhdLCAqYnVmcDsKIAogCS8qIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBjb250cm9sbGVyIGluIGEgc3lzdGVtLAogCSAqIHVzYl9nYWRnZXRfZHJpdmVyX3tyZWdpc3Rlcix1bnJlZ2lzdGVyfSgpIG11c3QgY2hhbmdlLgpAQCAtMTkxMywyMCArMTkxMiwxNCBAQAogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOwogCUlORk8oZGV2LCAiJXNcbiIsIGRyaXZlcl9kZXNjKTsKIAlJTkZPKGRldiwgInZlcnNpb246ICIgRFJJVkVSX1ZFUlNJT04gIiAlc1xuIiwgZG1hc3RyKCkpOwotI2lmbmRlZiBfX3NwYXJjX18KLQlzY25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAiJWQiLCBwZGV2LT5pcnEpOwotCWJ1ZnAgPSBidWY7Ci0jZWxzZQotCWJ1ZnAgPSBfX2lycV9pdG9hKHBkZXYtPmlycSk7Ci0jZW5kaWYKLQlJTkZPKGRldiwgImlycSAlcywgcGNpIG1lbSAlcFxuIiwgYnVmcCwgYmFzZSk7CisJSU5GTyhkZXYsICJpcnEgJWQsIHBjaSBtZW0gJXBcbiIsIHBkZXYtPmlycSwgYmFzZSk7CiAKIAkvKiBpbml0IHRvIGtub3duIHN0YXRlLCB0aGVuIHNldHVwIGlycXMgKi8KIAl1ZGNfcmVzZXQoZGV2KTsKIAl1ZGNfcmVpbml0IChkZXYpOwogCWlmIChyZXF1ZXN0X2lycShwZGV2LT5pcnEsIGdva3VfaXJxLCBTQV9TSElSUS8qfFNBX1NBTVBMRV9SQU5ET00qLywKIAkJCWRyaXZlcl9uYW1lLCBkZXYpICE9IDApIHsKLQkJREJHKGRldiwgInJlcXVlc3QgaW50ZXJydXB0ICVzIGZhaWxlZFxuIiwgYnVmcCk7CisJCURCRyhkZXYsICJyZXF1ZXN0IGludGVycnVwdCAlZCBmYWlsZWRcbiIsIHBkZXYtPmlycSk7CiAJCXJldHZhbCA9IC1FQlVTWTsKIAkJZ290byBkb25lOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMKaW5kZXggMGViMDEwYS4uM2JkYzVlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMKQEAgLTUyOCw3ICs1MjgsNyBAQAogCXN0cnVjdCB1c2JfcmVxdWVzdAkqcmVxOwogCXN0cnVjdCBlcF9kYXRhCQkqZXBkYXRhOwogCXZvaWQJCQkqYnVmOwotCWNoYXIgX191c2VyCQkqdWJ1ZjsKKwljaGFyIF9fdXNlcgkJKnVidWY7CQkvKiBOVUxMIGZvciB3cml0ZXMgKi8KIAl1bnNpZ25lZAkJYWN0dWFsOwogfTsKIApAQCAtNTY2LDcgKzU2Niw2IEBACiAJCXN0YXR1cyA9IHByaXYtPmFjdHVhbDsKIAlrZnJlZShwcml2LT5idWYpOwogCWtmcmVlKHByaXYpOwotCWFpb19wdXRfcmVxKGlvY2IpOwogCXJldHVybiBzdGF0dXM7CiB9CiAKQEAgLTU4MCw4ICs1NzksOCBAQAogCXNwaW5fbG9jaygmZXBkYXRhLT5kZXYtPmxvY2spOwogCXByaXYtPnJlcSA9IE5VTEw7CiAJcHJpdi0+ZXBkYXRhID0gTlVMTDsKLQlpZiAoTlVMTCA9PSBpb2NiLT5raV9yZXRyeQotCQkJfHwgdW5saWtlbHkoMCA9PSByZXEtPmFjdHVhbCkKKwlpZiAocHJpdi0+dWJ1ZiA9PSBOVUxMCisJCQl8fCB1bmxpa2VseShyZXEtPmFjdHVhbCA9PSAwKQogCQkJfHwgdW5saWtlbHkoa2lvY2JJc0NhbmNlbGxlZChpb2NiKSkpIHsKIAkJa2ZyZWUocmVxLT5idWYpOwogCQlrZnJlZShwcml2KTsKQEAgLTYxOCw3ICs2MTcsNyBAQAogCWNoYXIgX191c2VyCSp1YnVmCiApCiB7Ci0Jc3RydWN0IGtpb2NiX3ByaXYJKnByaXYgPSAodm9pZCAqKSAmaW9jYi0+cHJpdmF0ZTsKKwlzdHJ1Y3Qga2lvY2JfcHJpdgkqcHJpdjsKIAlzdHJ1Y3QgdXNiX3JlcXVlc3QJKnJlcTsKIAlzc2l6ZV90CQkJdmFsdWU7CiAKQEAgLTY3MCw3ICs2NjksNyBAQAogCQlrZnJlZShwcml2KTsKIAkJcHV0X2VwKGVwZGF0YSk7CiAJfSBlbHNlCi0JCXZhbHVlID0gLUVJT0NCUVVFVUVEOworCQl2YWx1ZSA9ICh1YnVmID8gLUVJT0NCUkVUUlkgOiAtRUlPQ0JRVUVVRUQpOwogCXJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTAzOSw3ICsxMDM4LDcgQEAKIAkJLyogZXAwIGNhbid0IGRlbGl2ZXIgZXZlbnRzIHdoZW4gU1RBVEVfU0VUVVAgKi8KIAkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQkJaWYgKGRldi0+ZXZlbnQgW2ldLnR5cGUgPT0gR0FER0VURlNfU0VUVVApIHsKLQkJCQlsZW4gPSBuID0gaSArIDE7CisJCQkJbGVuID0gaSArIDE7CiAJCQkJbGVuICo9IHNpemVvZiAoc3RydWN0IHVzYl9nYWRnZXRmc19ldmVudCk7CiAJCQkJbiA9IDA7CiAJCQkJYnJlYWs7CkBAIC0xNTg3LDEzICsxNTg2LDEzIEBACiBzdGF0aWMgaW50IGFjdGl2YXRlX2VwX2ZpbGVzIChzdHJ1Y3QgZGV2X2RhdGEgKmRldikKIHsKIAlzdHJ1Y3QgdXNiX2VwCSplcDsKKwlzdHJ1Y3QgZXBfZGF0YQkqZGF0YTsKIAogCWdhZGdldF9mb3JfZWFjaF9lcCAoZXAsIGRldi0+Z2FkZ2V0KSB7Ci0JCXN0cnVjdCBlcF9kYXRhCSpkYXRhOwogCiAJCWRhdGEgPSBremFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOwogCQlpZiAoIWRhdGEpCi0JCQlnb3RvIGVub21lbTsKKwkJCWdvdG8gZW5vbWVtMDsKIAkJZGF0YS0+c3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDsKIAkJaW5pdF9NVVRFWCAoJmRhdGEtPmxvY2spOwogCQlpbml0X3dhaXRxdWV1ZV9oZWFkICgmZGF0YS0+d2FpdCk7CkBAIC0xNjA4LDIxICsxNjA3LDIzIEBACiAKIAkJZGF0YS0+cmVxID0gdXNiX2VwX2FsbG9jX3JlcXVlc3QgKGVwLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFkYXRhLT5yZXEpCi0JCQlnb3RvIGVub21lbTsKKwkJCWdvdG8gZW5vbWVtMTsKIAogCQlkYXRhLT5pbm9kZSA9IGdhZGdldGZzX2NyZWF0ZV9maWxlIChkZXYtPnNiLCBkYXRhLT5uYW1lLAogCQkJCWRhdGEsICZlcF9jb25maWdfb3BlcmF0aW9ucywKIAkJCQkmZGF0YS0+ZGVudHJ5KTsKLQkJaWYgKCFkYXRhLT5pbm9kZSkgewotCQkJdXNiX2VwX2ZyZWVfcmVxdWVzdChlcCwgZGF0YS0+cmVxKTsKLQkJCWtmcmVlIChkYXRhKTsKLQkJCWdvdG8gZW5vbWVtOwotCQl9CisJCWlmICghZGF0YS0+aW5vZGUpCisJCQlnb3RvIGVub21lbTI7CiAJCWxpc3RfYWRkX3RhaWwgKCZkYXRhLT5lcGZpbGVzLCAmZGV2LT5lcGZpbGVzKTsKIAl9CiAJcmV0dXJuIDA7CiAKLWVub21lbToKK2Vub21lbTI6CisJdXNiX2VwX2ZyZWVfcmVxdWVzdCAoZXAsIGRhdGEtPnJlcSk7Citlbm9tZW0xOgorCXB1dF9kZXYgKGRldik7CisJa2ZyZWUgKGRhdGEpOworZW5vbWVtMDoKIAlEQkcgKGRldiwgIiVzIGVub21lbVxuIiwgX19GVU5DVElPTl9fKTsKIAlkZXN0cm95X2VwX2ZpbGVzIChkZXYpOwogCXJldHVybiAtRU5PTUVNOwpAQCAtMTc5Myw3ICsxNzk0LDcgQEAKICAqCiAgKiBBZnRlciBpbml0aWFsaXphdGlvbiwgdGhlIGRldmljZSBzdGF5cyBhY3RpdmUgZm9yIGFzIGxvbmcgYXMgdGhhdAogICogJENISVAgZmlsZSBpcyBvcGVuLiAgRXZlbnRzIG1heSB0aGVuIGJlIHJlYWQgZnJvbSB0aGF0IGRlc2NyaXB0b3IsCi0gKiBzdWNoIGNvbmZpZ3VyYXRpb24gbm90aWZpY2F0aW9ucy4gIE1vcmUgY29tcGxleCBkcml2ZXJzIHdpbGwgaGFuZGxlCisgKiBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gbm90aWZpY2F0aW9ucy4gIE1vcmUgY29tcGxleCBkcml2ZXJzIHdpbGwgaGFuZGxlCiAgKiBzb21lIGNvbnRyb2wgcmVxdWVzdHMgaW4gdXNlciBzcGFjZS4KICAqLwogCkBAIC0yMDMzLDEyICsyMDM0LDEwIEBACiAJCQlOVUxMLCAmc2ltcGxlX2Rpcl9vcGVyYXRpb25zLAogCQkJU19JRkRJUiB8IFNfSVJVR08gfCBTX0lYVUdPKTsKIAlpZiAoIWlub2RlKQotCQlyZXR1cm4gLUVOT01FTTsKKwkJZ290byBlbm9tZW0wOwogCWlub2RlLT5pX29wID0gJnNpbXBsZV9kaXJfaW5vZGVfb3BlcmF0aW9uczsKLQlpZiAoIShkID0gZF9hbGxvY19yb290IChpbm9kZSkpKSB7Ci0JCWlwdXQgKGlub2RlKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQorCWlmICghKGQgPSBkX2FsbG9jX3Jvb3QgKGlub2RlKSkpCisJCWdvdG8gZW5vbWVtMTsKIAlzYi0+c19yb290ID0gZDsKIAogCS8qIHRoZSBlcDAgZmlsZSBpcyBuYW1lZCBhZnRlciB0aGUgY29udHJvbGxlciB3ZSBleHBlY3Q7CkBAIC0yMDQ2LDI5ICsyMDQ1LDM2IEBACiAJICovCiAJZGV2ID0gZGV2X25ldyAoKTsKIAlpZiAoIWRldikKLQkJcmV0dXJuIC1FTk9NRU07CisJCWdvdG8gZW5vbWVtMjsKIAogCWRldi0+c2IgPSBzYjsKLQlpZiAoIShpbm9kZSA9IGdhZGdldGZzX2NyZWF0ZV9maWxlIChzYiwgQ0hJUCwKKwlpZiAoIWdhZGdldGZzX2NyZWF0ZV9maWxlIChzYiwgQ0hJUCwKIAkJCQlkZXYsICZkZXZfaW5pdF9vcGVyYXRpb25zLAotCQkJCSZkZXYtPmRlbnRyeSkpKSB7Ci0JCXB1dF9kZXYoZGV2KTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQorCQkJCSZkZXYtPmRlbnRyeSkpCisJCWdvdG8gZW5vbWVtMzsKIAogCS8qIG90aGVyIGVuZHBvaW50IGZpbGVzIGFyZSBhdmFpbGFibGUgYWZ0ZXIgaGFyZHdhcmUgc2V0dXAsCiAJICogZnJvbSBiaW5kaW5nIHRvIGEgY29udHJvbGxlci4KIAkgKi8KIAl0aGVfZGV2aWNlID0gZGV2OwogCXJldHVybiAwOworCitlbm9tZW0zOgorCXB1dF9kZXYgKGRldik7Citlbm9tZW0yOgorCWRwdXQgKGQpOworZW5vbWVtMToKKwlpcHV0IChpbm9kZSk7Citlbm9tZW0wOgorCXJldHVybiAtRU5PTUVNOwogfQogCiAvKiAibW91bnQgLXQgZ2FkZ2V0ZnMgcGF0aCAvZGV2L2dhZGdldCIgZW5kcyB1cCBoZXJlICovCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICoKK3N0YXRpYyBpbnQKIGdhZGdldGZzX2dldF9zYiAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnQsIGludCBmbGFncywKLQkJY29uc3QgY2hhciAqcGF0aCwgdm9pZCAqb3B0cykKKwkJY29uc3QgY2hhciAqcGF0aCwgdm9pZCAqb3B0cywgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUgKHQsIGZsYWdzLCBvcHRzLCBnYWRnZXRmc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX3NpbmdsZSAodCwgZmxhZ3MsIG9wdHMsIGdhZGdldGZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYwppbmRleCAwYjkyOTM0Li4xZmFjZGVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMKQEAgLTI4MjIsNyArMjgyMiw2IEBACiAJdW5zaWduZWQgbG9uZwkJcmVzb3VyY2UsIGxlbjsKIAl2b2lkCQkJX19pb21lbSAqYmFzZSA9IE5VTEw7CiAJaW50CQkJcmV0dmFsLCBpOwotCWNoYXIJCQlidWYgWzhdLCAqYnVmcDsKIAogCS8qIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBjb250cm9sbGVyIGluIGEgc3lzdGVtLAogCSAqIHVzYl9nYWRnZXRfZHJpdmVyX3tyZWdpc3Rlcix1bnJlZ2lzdGVyfSgpIG11c3QgY2hhbmdlLgpAQCAtMjg5NiwxNSArMjg5NSwxMCBAQAogCQlyZXR2YWwgPSAtRU5PREVWOwogCQlnb3RvIGRvbmU7CiAJfQotI2lmbmRlZiBfX3NwYXJjX18KLQlzY25wcmludGYgKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIiVkIiwgcGRldi0+aXJxKTsKLQlidWZwID0gYnVmOwotI2Vsc2UKLQlidWZwID0gX19pcnFfaXRvYShwZGV2LT5pcnEpOwotI2VuZGlmCisKIAlpZiAocmVxdWVzdF9pcnEgKHBkZXYtPmlycSwgbmV0MjI4MF9pcnEsIFNBX1NISVJRLCBkcml2ZXJfbmFtZSwgZGV2KQogCQkJIT0gMCkgewotCQlFUlJPUiAoZGV2LCAicmVxdWVzdCBpbnRlcnJ1cHQgJXMgZmFpbGVkXG4iLCBidWZwKTsKKwkJRVJST1IgKGRldiwgInJlcXVlc3QgaW50ZXJydXB0ICVkIGZhaWxlZFxuIiwgcGRldi0+aXJxKTsKIAkJcmV0dmFsID0gLUVCVVNZOwogCQlnb3RvIGRvbmU7CiAJfQpAQCAtMjk1Myw4ICsyOTQ3LDggQEAKIAogCS8qIGRvbmUgKi8KIAlJTkZPIChkZXYsICIlc1xuIiwgZHJpdmVyX2Rlc2MpOwotCUlORk8gKGRldiwgImlycSAlcywgcGNpIG1lbSAlcCwgY2hpcCByZXYgJTA0eFxuIiwKLQkJCWJ1ZnAsIGJhc2UsIGRldi0+Y2hpcHJldik7CisJSU5GTyAoZGV2LCAiaXJxICVkLCBwY2kgbWVtICVwLCBjaGlwIHJldiAlMDR4XG4iLAorCQkJcGRldi0+aXJxLCBiYXNlLCBkZXYtPmNoaXByZXYpOwogCUlORk8gKGRldiwgInZlcnNpb246ICIgRFJJVkVSX1ZFUlNJT04gIjsgZG1hICVzXG4iLAogCQkJdXNlX2RtYQogCQkJCT8gKHVzZV9kbWFfY2hhaW5pbmcgPyAiY2hhaW5pbmciIDogImVuYWJsZWQiKQpAQCAtMjk3Miw2ICsyOTY2LDIyIEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAorLyogbWFrZSBzdXJlIHRoZSBib2FyZCBpcyBxdWllc2NlbnQ7IG90aGVyd2lzZSBpdCB3aWxsIGNvbnRpbnVlCisgKiBnZW5lcmF0aW5nIElSUXMgYWNyb3NzIHRoZSB1cGNvbWluZyByZWJvb3QuCisgKi8KKworc3RhdGljIHZvaWQgbmV0MjI4MF9zaHV0ZG93biAoc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7CisJc3RydWN0IG5ldDIyODAJCSpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYpOworCisJLyogZGlzYWJsZSBJUlFzICovCisJd3JpdGVsICgwLCAmZGV2LT5yZWdzLT5wY2lpcnFlbmIwKTsKKwl3cml0ZWwgKDAsICZkZXYtPnJlZ3MtPnBjaWlycWVuYjEpOworCisJLyogZGlzYWJsZSB0aGUgcHVsbHVwIHNvIHRoZSBob3N0IHdpbGwgdGhpbmsgd2UncmUgZ29uZSAqLworCXdyaXRlbCAoMCwgJmRldi0+dXNiLT51c2JjdGwpOworfQorCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKQEAgLTMwMDEsNiArMzAxMSw3IEBACiAKIAkucHJvYmUgPQluZXQyMjgwX3Byb2JlLAogCS5yZW1vdmUgPQluZXQyMjgwX3JlbW92ZSwKKwkuc2h1dGRvd24gPQluZXQyMjgwX3NodXRkb3duLAogCiAJLyogRklYTUUgYWRkIHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydCAqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyeHhfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMnh4X3VkYy5jCmluZGV4IDY4MGY3ZmMuLjI2OWNlN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyeHhfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTJ4eF91ZGMuYwpAQCAtNTMsMTIgKzUzLDE0IEBACiAjaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+CiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaWZkZWYgQ09ORklHX0FSQ0hfUFhBCiAjaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSA8bGludXgvdXNiX2NoOS5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYl9nYWRnZXQuaD4KIAotI2luY2x1ZGUgPGFzbS9hcmNoL3VkYy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlL2ludGVsX3VkYy5oPgogCiAKIC8qCkBAIC01NDUsNiArNTQ3LDcgQEAKIAkJY291bnQgPSByZXEtPnJlcS5sZW5ndGg7CiAJCWRvbmUgKGVwLCByZXEsIDApOwogCQllcDBfaWRsZShlcC0+ZGV2KTsKKyNpZm5kZWYgQ09ORklHX0FSQ0hfSVhQNFhYCiAjaWYgMQogCQkvKiBUaGlzIHNlZW1zIHRvIGdldCByaWQgb2YgbG9zdCBzdGF0dXMgaXJxcyBpbiBzb21lIGNhc2VzOgogCQkgKiBob3N0IHJlc3BvbmRzIHF1aWNrbHksIG9yIG5leHQgcmVxdWVzdCBpbnZvbHZlcyBjb25maWcKQEAgLTU2NSw2ICs1NjgsNyBAQAogCQkJfSB3aGlsZSAoY291bnQpOwogCQl9CiAjZW5kaWYKKyNlbmRpZgogCX0gZWxzZSBpZiAoZXAtPmRldi0+cmVxX3BlbmRpbmcpCiAJCWVwMHN0YXJ0KGVwLT5kZXYsIDAsICJJTiIpOwogCXJldHVybiBpc19zaG9ydDsKQEAgLTE1ODUsNyArMTU4OSw3IEBACiAJaW50CQkJcmV0dmFsOwogCiAJaWYgKCFkcml2ZXIKLQkJCXx8IGRyaXZlci0+c3BlZWQgIT0gVVNCX1NQRUVEX0ZVTEwKKwkJCXx8IGRyaXZlci0+c3BlZWQgPCBVU0JfU1BFRURfRlVMTAogCQkJfHwgIWRyaXZlci0+YmluZAogCQkJfHwgIWRyaXZlci0+dW5iaW5kCiAJCQl8fCAhZHJpdmVyLT5kaXNjb25uZWN0CkBAIC0yNDI3LDYgKzI0MzEsNyBAQAogI2RlZmluZSBQWEEyMTBfQjEJCTB4MDAwMDAxMjMKICNkZWZpbmUgUFhBMjEwX0IwCQkweDAwMDAwMTIyCiAjZGVmaW5lIElYUDQyNV9BMAkJMHgwMDAwMDFjMQorI2RlZmluZSBJWFA0NjVfQUQJCTB4MDAwMDAyMDAKIAogLyoKICAqIAlwcm9iZSAtIGJpbmRzIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2UKQEAgLTI0NjMsNiArMjQ2OCw4IEBACiAJCWJyZWFrOwogI2VsaWYJZGVmaW5lZChDT05GSUdfQVJDSF9JWFA0WFgpCiAJY2FzZSBJWFA0MjVfQTA6CisJY2FzZSBJWFA0NjVfQUQ6CisJCWRldi0+aGFzX2NmciA9IDE7CiAJCW91dF9kbWEgPSAwOwogCQlicmVhazsKICNlbmRpZgpAQCAtMjU3NSwxMCArMjU4MiwxMiBAQAogCQlmcmVlX2lycShJUlFfVVNCLCBkZXYpOwogCQlkZXYtPmdvdF9pcnEgPSAwOwogCX0KKyNpZmRlZiBDT05GSUdfQVJDSF9MVUJCT0NLCiAJaWYgKG1hY2hpbmVfaXNfbHViYm9jaygpKSB7CiAJCWZyZWVfaXJxKExVQkJPQ0tfVVNCX0RJU0NfSVJRLCBkZXYpOwogCQlmcmVlX2lycShMVUJCT0NLX1VTQl9JUlEsIGRldik7CiAJfQorI2VuZGlmCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CiAJdGhlX2NvbnRyb2xsZXIgPSBOVUxMOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3JuZGlzLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuYwppbmRleCA2ZDZlYWFkLi4zZmY2ZGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuYwpAQCAtMSwyMyArMSwyMyBAQAotLyogCisvKgogICogUk5ESVMgTVNHIHBhcnNlcgotICogCisgKgogICogVmVyc2lvbjogICAgICRJZDogcm5kaXMuYyx2IDEuMTkgMjAwNC8wMy8yNSAyMTozMzo0NiByb2JlcnQgRXhwICQKLSAqIAorICoKICAqIEF1dGhvcnM6CUJlbmVkaWt0IFNwcmFuZ2VyLCBQZW5ndXRyb25peAotICogCQlSb2JlcnQgU2Nod2ViZWwsIFBlbmd1dHJvbml4Ci0gKiAKKyAqCQlSb2JlcnQgU2Nod2ViZWwsIFBlbmd1dHJvbml4CisgKgogICogICAgICAgICAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICAgICAgICAgICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogICAgICAgICAgICAgIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uIAotICogCisgKiAgICAgICAgICAgICAgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCiAgKgkJVGhpcyBzb2Z0d2FyZSB3YXMgb3JpZ2luYWxseSBkZXZlbG9wZWQgaW4gY29uZm9ybWFuY2Ugd2l0aAogICoJCU1pY3Jvc29mdCdzIFJlbW90ZSBORElTIFNwZWNpZmljYXRpb24gTGljZW5zZSBBZ3JlZW1lbnQuCi0gKiAgICAgICAgICAgICAgCisgKgogICogMDMvMTIvMjAwNCBLYWktVXdlIEJsb2VtIDxsaW51eC1kZXZlbG9wbWVudEBhdWVyc3dhbGQuZGU+CiAgKgkJRml4ZWQgbWVzc2FnZSBsZW5ndGggYnVnIGluIGluaXRfcmVzcG9uc2UKLSAqIAorICoKICAqIDAzLzI1LzIwMDQgS2FpLVV3ZSBCbG9lbSA8bGludXgtZGV2ZWxvcG1lbnRAYXVlcnN3YWxkLmRlPgotICogCQlGaXhlZCBybmRpc19ybV9oZHIgbGVuZ3RoIGJ1Zy4KKyAqCQlGaXhlZCBybmRpc19ybV9oZHIgbGVuZ3RoIGJ1Zy4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgRGF2aWQgQnJvd25lbGwKICAqCQl1cGRhdGVzIHRvIG1lcmdlIHdpdGggTGludXggMi42LCBiZXR0ZXIgbWF0Y2ggUk5ESVMgc3BlYwpAQCAtODIsNyArODIsNyBAQAogCiAKIC8qIHN1cHBvcnRlZCBPSURzICovCi1zdGF0aWMgY29uc3QgdTMyIG9pZF9zdXBwb3J0ZWRfbGlzdCBbXSA9IAorc3RhdGljIGNvbnN0IHUzMiBvaWRfc3VwcG9ydGVkX2xpc3QgW10gPQogewogCS8qIHRoZSBnZW5lcmFsIHN0dWZmICovCiAJT0lEX0dFTl9TVVBQT1JURURfTElTVCwKQEAgLTEwMyw3ICsxMDMsNyBAQAogI2lmIDAKIAlPSURfR0VOX1JORElTX0NPTkZJR19QQVJBTUVURVIsCiAjZW5kaWYKLQkKKwogCS8qIHRoZSBzdGF0aXN0aWNhbCBzdHVmZiAqLwogCU9JRF9HRU5fWE1JVF9PSywKIAlPSURfR0VOX1JDVl9PSywKQEAgLTEyNywxNCArMTI3LDE0IEBACiAJT0lEX0dFTl9UUkFOU01JVF9RVUVVRV9MRU5HVEgsCiAjZW5kaWYJLyogUk5ESVNfT1BUSU9OQUxfU1RBVFMgKi8KIAotICAgIAkvKiBtYW5kYXRvcnkgODAyLjMgKi8KKwkvKiBtYW5kYXRvcnkgODAyLjMgKi8KIAkvKiB0aGUgZ2VuZXJhbCBzdHVmZiAqLwogCU9JRF84MDJfM19QRVJNQU5FTlRfQUREUkVTUywKIAlPSURfODAyXzNfQ1VSUkVOVF9BRERSRVNTLAogCU9JRF84MDJfM19NVUxUSUNBU1RfTElTVCwKIAlPSURfODAyXzNfTUFDX09QVElPTlMsCiAJT0lEXzgwMl8zX01BWElNVU1fTElTVF9TSVpFLAotCQorCiAJLyogdGhlIHN0YXRpc3RpY2FsIHN0dWZmICovCiAJT0lEXzgwMl8zX1JDVl9FUlJPUl9BTElHTk1FTlQsCiAJT0lEXzgwMl8zX1hNSVRfT05FX0NPTExJU0lPTiwKQEAgLTE3Miw4ICsxNzIsOCBAQAogZ2VuX25kaXNfcXVlcnlfcmVzcCAoaW50IGNvbmZpZ05yLCB1MzIgT0lELCB1OCAqYnVmLCB1bnNpZ25lZCBidWZfbGVuLAogCQlybmRpc19yZXNwX3QgKnIpCiB7Ci0JaW50IAkJCXJldHZhbCA9IC1FTk9UU1VQUDsKLQl1MzIgCQkJbGVuZ3RoID0gNDsJLyogdXN1YWxseSAqLworCWludAkJCXJldHZhbCA9IC1FTk9UU1VQUDsKKwl1MzIJCQlsZW5ndGggPSA0OwkvKiB1c3VhbGx5ICovCiAJX19sZTMyCQkJKm91dGJ1ZjsKIAlpbnQJCQlpLCBjb3VudDsKIAlybmRpc19xdWVyeV9jbXBsdF90eXBlCSpyZXNwOwpAQCAtMjExLDI3ICsyMTEsMjcgQEAKIAkJCW91dGJ1ZltpXSA9IGNwdV90b19sZTMyIChvaWRfc3VwcG9ydGVkX2xpc3RbaV0pOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fSEFSRFdBUkVfU1RBVFVTOgogCQlERUJVRygiJXM6IE9JRF9HRU5fSEFSRFdBUkVfU1RBVFVTXG4iLCBfX0ZVTkNUSU9OX18pOwotCQkvKiBCb2d1cyBxdWVzdGlvbiEgCisJCS8qIEJvZ3VzIHF1ZXN0aW9uIQogCQkgKiBIYXJkd2FyZSBtdXN0IGJlIHJlYWR5IHRvIHJlY2VpdmUgaGlnaCBsZXZlbCBwcm90b2NvbHMuCi0JCSAqIEJUVzogCisJCSAqIEJUVzoKIAkJICogcmVkZGl0ZSBlcmdvIHF1YWUgc3VudCBDYWVzYXJpcyBDYWVzYXJpCiAJCSAqIGV0IHF1YWUgc3VudCBEZWkgRGVvIQogCQkgKi8KIAkJKm91dGJ1ZiA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDApOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fTUVESUFfU1VQUE9SVEVEOgogCQlERUJVRygiJXM6IE9JRF9HRU5fTUVESUFfU1VQUE9SVEVEXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkqb3V0YnVmID0gY3B1X3RvX2xlMzIgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ubWVkaXVtKTsKIAkJcmV0dmFsID0gMDsKIAkJYnJlYWs7Ci0JCQorCiAJLyogbWFuZGF0b3J5ICovCiAJY2FzZSBPSURfR0VOX01FRElBX0lOX1VTRToKIAkJREVCVUcoIiVzOiBPSURfR0VOX01FRElBX0lOX1VTRVxuIiwgX19GVU5DVElPTl9fKTsKQEAgLTIzOSw3ICsyMzksNyBAQAogCQkqb3V0YnVmID0gY3B1X3RvX2xlMzIgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ubWVkaXVtKTsKIAkJcmV0dmFsID0gMDsKIAkJYnJlYWs7Ci0JCQorCiAJLyogbWFuZGF0b3J5ICovCiAJY2FzZSBPSURfR0VOX01BWElNVU1fRlJBTUVfU0laRToKIAkJREVCVUcoIiVzOiBPSURfR0VOX01BWElNVU1fRlJBTUVfU0laRVxuIiwgX19GVU5DVElPTl9fKTsKQEAgLTI0OSw3ICsyNDksNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fTElOS19TUEVFRDoKIAkJaWYgKHJuZGlzX2RlYnVnID4gMSkKQEAgLTI3Miw3ICsyNzIsNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fUkVDRUlWRV9CTE9DS19TSVpFOgogCQlERUJVRygiJXM6IE9JRF9HRU5fUkVDRUlWRV9CTE9DS19TSVpFXG4iLCBfX0ZVTkNUSU9OX18pOwpAQCAtMjgyLDcgKzI4Miw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCS8qIG1hbmRhdG9yeSAqLwogCWNhc2UgT0lEX0dFTl9WRU5ET1JfSUQ6CiAJCURFQlVHKCIlczogT0lEX0dFTl9WRU5ET1JfSURcbiIsIF9fRlVOQ1RJT05fXyk7CkBAIC0yOTAsNyArMjkwLDcgQEAKIAkJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0udmVuZG9ySUQpOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fVkVORE9SX0RFU0NSSVBUSU9OOgogCQlERUJVRygiJXM6IE9JRF9HRU5fVkVORE9SX0RFU0NSSVBUSU9OXG4iLCBfX0ZVTkNUSU9OX18pOwpAQCAtMzU2LDcgKzM1Niw3IEBACiAJCQlERUJVRygiJXM6IE9JRF9HRU5fWE1JVF9PS1xuIiwgX19GVU5DVElPTl9fKTsKIAkJaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMpIHsKIAkJCSpvdXRidWYgPSBjcHVfdG9fbGUzMiAoCi0JCQkgICAgcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cy0+dHhfcGFja2V0cyAtIAorCQkJICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMtPnR4X3BhY2tldHMgLQogCQkJICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMtPnR4X2Vycm9ycyAtCiAJCQkgICAgcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cy0+dHhfZHJvcHBlZCk7CiAJCQlyZXR2YWwgPSAwOwpAQCAtMzY5LDEzICszNjksMTMgQEAKIAkJCURFQlVHKCIlczogT0lEX0dFTl9SQ1ZfT0tcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CiAJCQkqb3V0YnVmID0gY3B1X3RvX2xlMzIgKAotCQkJICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMtPnJ4X3BhY2tldHMgLSAKKwkJCSAgICBybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzLT5yeF9wYWNrZXRzIC0KIAkJCSAgICBybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzLT5yeF9lcnJvcnMgLQogCQkJICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMtPnJ4X2Ryb3BwZWQpOwogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fWE1JVF9FUlJPUjoKIAkJaWYgKHJuZGlzX2RlYnVnID4gMSkKQEAgLTM4Niw3ICszODYsNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAkvKiBtYW5kYXRvcnkgKi8KIAljYXNlIE9JRF9HRU5fUkNWX0VSUk9SOgogCQlpZiAocm5kaXNfZGVidWcgPiAxKQpAQCAtMzk3LDcgKzM5Nyw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCS8qIG1hbmRhdG9yeSAqLwogCWNhc2UgT0lEX0dFTl9SQ1ZfTk9fQlVGRkVSOgogCQlERUJVRygiJXM6IE9JRF9HRU5fUkNWX05PX0JVRkZFUlxuIiwgX19GVU5DVElPTl9fKTsKQEAgLTQxMSw3ICs0MTEsNyBAQAogI2lmZGVmCVJORElTX09QVElPTkFMX1NUQVRTCiAJY2FzZSBPSURfR0VOX0RJUkVDVEVEX0JZVEVTX1hNSVQ6CiAJCURFQlVHKCIlczogT0lEX0dFTl9ESVJFQ1RFRF9CWVRFU19YTUlUXG4iLCBfX0ZVTkNUSU9OX18pOwotCQkvKiAKKwkJLyoKIAkJICogQXVudCBUaWxseSdzIHNpemUgb2Ygc2hvZXMKIAkJICogbWludXMgYW50YXJjdGljYSBjb3VudCBvZiBwZW5ndWlucwogCQkgKiBkaXZpZGVkIGJ5IHdlaWdodCBvZiBBbHBoYSBDZW50YXVyaQpAQCAtNDE5LDcgKzQxOSw3IEBACiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CiAJCQkqb3V0YnVmID0gY3B1X3RvX2xlMzIgKAogCQkJCShybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdCi0JCQkJCS5zdGF0cy0+dHhfcGFja2V0cyAtIAorCQkJCQkuc3RhdHMtPnR4X3BhY2tldHMgLQogCQkJCSBybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdCiAJCQkJCSAuc3RhdHMtPnR4X2Vycm9ycyAtCiAJCQkJIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0KQEAgLTQyOCwxNCArNDI4LDE0IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9ESVJFQ1RFRF9GUkFNRVNfWE1JVDoKIAkJREVCVUcoIiVzOiBPSURfR0VOX0RJUkVDVEVEX0ZSQU1FU19YTUlUXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkvKiBkaXRvICovCiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CiAJCQkqb3V0YnVmID0gY3B1X3RvX2xlMzIgKAogCQkJCShybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdCi0JCQkJCS5zdGF0cy0+dHhfcGFja2V0cyAtIAorCQkJCQkuc3RhdHMtPnR4X3BhY2tldHMgLQogCQkJCSBybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdCiAJCQkJCSAuc3RhdHMtPnR4X2Vycm9ycyAtCiAJCQkJIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0KQEAgLTQ0NCw3ICs0NDQsNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF9HRU5fTVVMVElDQVNUX0JZVEVTX1hNSVQ6CiAJCURFQlVHKCIlczogT0lEX0dFTl9NVUxUSUNBU1RfQllURVNfWE1JVFxuIiwgX19GVU5DVElPTl9fKTsKIAkJaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMpIHsKQEAgLTQ1Myw3ICs0NTMsNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF9HRU5fTVVMVElDQVNUX0ZSQU1FU19YTUlUOgogCQlERUJVRygiJXM6IE9JRF9HRU5fTVVMVElDQVNUX0ZSQU1FU19YTUlUXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cykgewpAQCAtNDYyLDcgKzQ2Miw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9CUk9BRENBU1RfQllURVNfWE1JVDoKIAkJREVCVUcoIiVzOiBPSURfR0VOX0JST0FEQ0FTVF9CWVRFU19YTUlUXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cykgewpAQCAtNDcxLDcgKzQ3MSw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9CUk9BRENBU1RfRlJBTUVTX1hNSVQ6CiAJCURFQlVHKCIlczogT0lEX0dFTl9CUk9BRENBU1RfRlJBTUVTX1hNSVRcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CkBAIC00ODAsMTkgKzQ4MCwxOSBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF9HRU5fRElSRUNURURfQllURVNfUkNWOgogCQlERUJVRygiJXM6IE9JRF9HRU5fRElSRUNURURfQllURVNfUkNWXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkqb3V0YnVmID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7CiAJCXJldHZhbCA9IDA7CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9ESVJFQ1RFRF9GUkFNRVNfUkNWOgogCQlERUJVRygiJXM6IE9JRF9HRU5fRElSRUNURURfRlJBTUVTX1JDVlxuIiwgX19GVU5DVElPTl9fKTsKIAkJKm91dGJ1ZiA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDApOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF9HRU5fTVVMVElDQVNUX0JZVEVTX1JDVjoKIAkJREVCVUcoIiVzOiBPSURfR0VOX01VTFRJQ0FTVF9CWVRFU19SQ1ZcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CkBAIC01MDEsNyArNTAxLDcgQEAKIAkJCXJldHZhbCA9IDA7CiAJCX0KIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfR0VOX01VTFRJQ0FTVF9GUkFNRVNfUkNWOgogCQlERUJVRygiJXM6IE9JRF9HRU5fTVVMVElDQVNUX0ZSQU1FU19SQ1ZcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnN0YXRzKSB7CkBAIC01MTAsNyArNTEwLDcgQEAKIAkJCXJldHZhbCA9IDA7CiAJCX0KIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfR0VOX0JST0FEQ0FTVF9CWVRFU19SQ1Y6CiAJCURFQlVHKCIlczogT0lEX0dFTl9CUk9BRENBU1RfQllURVNfUkNWXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cykgewpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9CUk9BRENBU1RfRlJBTUVTX1JDVjoKIAkJREVCVUcoIiVzOiBPSURfR0VOX0JST0FEQ0FTVF9GUkFNRVNfUkNWXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cykgewpAQCAtNTI4LDcgKzUyOCw3IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEX0dFTl9SQ1ZfQ1JDX0VSUk9SOgogCQlERUJVRygiJXM6IE9JRF9HRU5fUkNWX0NSQ19FUlJPUlxuIiwgX19GVU5DVElPTl9fKTsKIAkJaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdHMpIHsKQEAgLTUzNyw3ICs1MzcsNyBAQAogCQkJcmV0dmFsID0gMDsKIAkJfQogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF9HRU5fVFJBTlNNSVRfUVVFVUVfTEVOR1RIOgogCQlERUJVRygiJXM6IE9JRF9HRU5fVFJBTlNNSVRfUVVFVUVfTEVOR1RIXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkqb3V0YnVmID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7CkBAIC01NTgsNyArNTU4LDcgQEAKIAkJCXJldHZhbCA9IDA7CiAJCX0KIAkJYnJlYWs7Ci0JCQorCiAJLyogbWFuZGF0b3J5ICovCiAJY2FzZSBPSURfODAyXzNfQ1VSUkVOVF9BRERSRVNTOgogCQlERUJVRygiJXM6IE9JRF84MDJfM19DVVJSRU5UX0FERFJFU1NcbiIsIF9fRlVOQ1RJT05fXyk7CkBAIC01NzAsNyArNTcwLDcgQEAKIAkJCXJldHZhbCA9IDA7CiAJCX0KIAkJYnJlYWs7Ci0JCQorCiAJLyogbWFuZGF0b3J5ICovCiAJY2FzZSBPSURfODAyXzNfTVVMVElDQVNUX0xJU1Q6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX01VTFRJQ0FTVF9MSVNUXG4iLCBfX0ZVTkNUSU9OX18pOwpAQCAtNTc4LDcgKzU3OCw3IEBACiAJCSpvdXRidWYgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgweEUwMDAwMDAwKTsKIAkJcmV0dmFsID0gMDsKIAkJYnJlYWs7Ci0JCQorCiAJLyogbWFuZGF0b3J5ICovCiAJY2FzZSBPSURfODAyXzNfTUFYSU1VTV9MSVNUX1NJWkU6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX01BWElNVU1fTElTVF9TSVpFXG4iLCBfX0ZVTkNUSU9OX18pOwpAQCAtNTg2LDcgKzU4Niw3IEBACiAJCSpvdXRidWYgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgxKTsKIAkJcmV0dmFsID0gMDsKIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfODAyXzNfTUFDX09QVElPTlM6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX01BQ19PUFRJT05TXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlicmVhazsKQEAgLTYwMiw1NiArNjAyLDU2IEBACiAJCQlyZXR2YWwgPSAwOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCS8qIG1hbmRhdG9yeSAqLwogCWNhc2UgT0lEXzgwMl8zX1hNSVRfT05FX0NPTExJU0lPTjoKIAkJREVCVUcoIiVzOiBPSURfODAyXzNfWE1JVF9PTkVfQ09MTElTSU9OXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkqb3V0YnVmID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7CiAJCXJldHZhbCA9IDA7CiAJCWJyZWFrOwotCQkKKwogCS8qIG1hbmRhdG9yeSAqLwogCWNhc2UgT0lEXzgwMl8zX1hNSVRfTU9SRV9DT0xMSVNJT05TOgogCQlERUJVRygiJXM6IE9JRF84MDJfM19YTUlUX01PUkVfQ09MTElTSU9OU1xuIiwgX19GVU5DVElPTl9fKTsKIAkJKm91dGJ1ZiA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDApOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKLQkJCisKICNpZmRlZglSTkRJU19PUFRJT05BTF9TVEFUUwogCWNhc2UgT0lEXzgwMl8zX1hNSVRfREVGRVJSRUQ6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX1hNSVRfREVGRVJSRURcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCS8qIFRPRE8gKi8KIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfODAyXzNfWE1JVF9NQVhfQ09MTElTSU9OUzoKIAkJREVCVUcoIiVzOiBPSURfODAyXzNfWE1JVF9NQVhfQ09MTElTSU9OU1xuIiwgX19GVU5DVElPTl9fKTsKIAkJLyogVE9ETyAqLwogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF84MDJfM19SQ1ZfT1ZFUlJVTjoKIAkJREVCVUcoIiVzOiBPSURfODAyXzNfUkNWX09WRVJSVU5cbiIsIF9fRlVOQ1RJT05fXyk7CiAJCS8qIFRPRE8gKi8KIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfODAyXzNfWE1JVF9VTkRFUlJVTjoKIAkJREVCVUcoIiVzOiBPSURfODAyXzNfWE1JVF9VTkRFUlJVTlxuIiwgX19GVU5DVElPTl9fKTsKIAkJLyogVE9ETyAqLwogCQlicmVhazsKLQkJCisKIAljYXNlIE9JRF84MDJfM19YTUlUX0hFQVJUQkVBVF9GQUlMVVJFOgogCQlERUJVRygiJXM6IE9JRF84MDJfM19YTUlUX0hFQVJUQkVBVF9GQUlMVVJFXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkvKiBUT0RPICovCiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEXzgwMl8zX1hNSVRfVElNRVNfQ1JTX0xPU1Q6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX1hNSVRfVElNRVNfQ1JTX0xPU1RcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCS8qIFRPRE8gKi8KIAkJYnJlYWs7Ci0JCQorCiAJY2FzZSBPSURfODAyXzNfWE1JVF9MQVRFX0NPTExJU0lPTlM6CiAJCURFQlVHKCIlczogT0lEXzgwMl8zX1hNSVRfTEFURV9DT0xMSVNJT05TXG4iLCBfX0ZVTkNUSU9OX18pOwogCQkvKiBUT0RPICovCi0JCWJyZWFrOwkJCisJCWJyZWFrOwogI2VuZGlmCS8qIFJORElTX09QVElPTkFMX1NUQVRTICovCiAKICNpZmRlZglSTkRJU19QTQpAQCAtNjc2LDIzICs2NzYsMjMgQEAKICNlbmRpZgogCiAJZGVmYXVsdDoKLQkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIiVzOiBxdWVyeSB1bmtub3duIE9JRCAweCUwOFhcbiIsIAorCQlwcmludGsgKEtFUk5fV0FSTklORyAiJXM6IHF1ZXJ5IHVua25vd24gT0lEIDB4JTA4WFxuIiwKIAkJCSBfX0ZVTkNUSU9OX18sIE9JRCk7CiAJfQogCWlmIChyZXR2YWwgPCAwKQogCQlsZW5ndGggPSAwOwotCQorCiAJcmVzcC0+SW5mb3JtYXRpb25CdWZmZXJMZW5ndGggPSBjcHVfdG9fbGUzMiAobGVuZ3RoKTsKIAlyLT5sZW5ndGggPSBsZW5ndGggKyBzaXplb2YgKnJlc3A7CiAJcmVzcC0+TWVzc2FnZUxlbmd0aCA9IGNwdV90b19sZTMyIChyLT5sZW5ndGgpOwogCXJldHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuX25kaXNfc2V0X3Jlc3AgKHU4IGNvbmZpZ05yLCB1MzIgT0lELCB1OCAqYnVmLCB1MzIgYnVmX2xlbiwgCi0JCQkgICAgICBybmRpc19yZXNwX3QgKnIpCitzdGF0aWMgaW50IGdlbl9uZGlzX3NldF9yZXNwICh1OCBjb25maWdOciwgdTMyIE9JRCwgdTggKmJ1ZiwgdTMyIGJ1Zl9sZW4sCisJCQlybmRpc19yZXNwX3QgKnIpCiB7CiAJcm5kaXNfc2V0X2NtcGx0X3R5cGUJCSpyZXNwOwotCWludCAJCQkJaSwgcmV0dmFsID0gLUVOT1RTVVBQOworCWludAkJCQlpLCByZXR2YWwgPSAtRU5PVFNVUFA7CiAJc3RydWN0IHJuZGlzX3BhcmFtcwkJKnBhcmFtczsKIAogCWlmICghcikKQEAgLTc0NSw5ICs3NDUsOSBAQAogCQkJbmV0aWZfc3RvcF9xdWV1ZSAocGFyYW1zLT5kZXYpOwogCQl9CiAJCWJyZWFrOwotCQkKKwogCWNhc2UgT0lEXzgwMl8zX01VTFRJQ0FTVF9MSVNUOgotCQkvKiBJIHRoaW5rIHdlIGNhbiBpZ25vcmUgdGhpcyAqLwkJCisJCS8qIEkgdGhpbmsgd2UgY2FuIGlnbm9yZSB0aGlzICovCiAJCURFQlVHKCIlczogT0lEXzgwMl8zX01VTFRJQ0FTVF9MSVNUXG4iLCBfX0ZVTkNUSU9OX18pOwogCQlyZXR2YWwgPSAwOwogCQlicmVhazsKQEAgLTc5NiwyOSArNzk2LDI5IEBACiAjZW5kaWYJLyogUk5ESVNfUE0gKi8KIAogCWRlZmF1bHQ6Ci0JCXByaW50ayAoS0VSTl9XQVJOSU5HICIlczogc2V0IHVua25vd24gT0lEIDB4JTA4WCwgc2l6ZSAlZFxuIiwgCisJCXByaW50ayAoS0VSTl9XQVJOSU5HICIlczogc2V0IHVua25vd24gT0lEIDB4JTA4WCwgc2l6ZSAlZFxuIiwKIAkJCSBfX0ZVTkNUSU9OX18sIE9JRCwgYnVmX2xlbik7CiAJfQotCQorCiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyogCi0gKiBSZXNwb25zZSBGdW5jdGlvbnMgCisvKgorICogUmVzcG9uc2UgRnVuY3Rpb25zCiAgKi8KIAogc3RhdGljIGludCBybmRpc19pbml0X3Jlc3BvbnNlIChpbnQgY29uZmlnTnIsIHJuZGlzX2luaXRfbXNnX3R5cGUgKmJ1ZikKIHsKLQlybmRpc19pbml0X2NtcGx0X3R5cGUJKnJlc3A7IAorCXJuZGlzX2luaXRfY21wbHRfdHlwZQkqcmVzcDsKIAlybmRpc19yZXNwX3QgICAgICAgICAgICAqcjsKLQkKKwogCWlmICghcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5kZXYpIHJldHVybiAtRU5PVFNVUFA7Ci0JCisKIAlyID0gcm5kaXNfYWRkX3Jlc3BvbnNlIChjb25maWdOciwgc2l6ZW9mIChybmRpc19pbml0X2NtcGx0X3R5cGUpKTsKIAlpZiAoIXIpCiAJCXJldHVybiAtRU5PTUVNOwogCXJlc3AgPSAocm5kaXNfaW5pdF9jbXBsdF90eXBlICopIHItPmJ1ZjsKLQkKKwogCXJlc3AtPk1lc3NhZ2VUeXBlID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoCiAJCQlSRU1PVEVfTkRJU19JTklUSUFMSVpFX0NNUExUKTsKIAlyZXNwLT5NZXNzYWdlTGVuZ3RoID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoNTIpOwpAQCAtODM3LDExICs4MzcsMTEgQEAKIAlyZXNwLT5QYWNrZXRBbGlnbm1lbnRGYWN0b3IgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgwKTsKIAlyZXNwLT5BRkxpc3RPZmZzZXQgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgwKTsKIAlyZXNwLT5BRkxpc3RTaXplID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7Ci0JCisKIAlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2spCi0JICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKLQkgICAgCQlybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmRldik7Ci0JCisJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKKwkJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KTsKKwogCXJldHVybiAwOwogfQogCkBAIC04NDksMTAgKzg0OSwxMCBAQAogewogCXJuZGlzX3F1ZXJ5X2NtcGx0X3R5cGUgKnJlc3A7CiAJcm5kaXNfcmVzcF90ICAgICAgICAgICAgKnI7Ci0JCisKIAkvLyBERUJVRygiJXM6IE9JRCA9ICUwOFhcbiIsIF9fRlVOQ1RJT05fXywgY3B1X3RvX2xlMzIoYnVmLT5PSUQpKTsKIAlpZiAoIXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KSByZXR1cm4gLUVOT1RTVVBQOwotCQorCiAJLyoKIAkgKiB3ZSBuZWVkIG1vcmUgbWVtb3J5OgogCSAqIGdlbl9uZGlzX3F1ZXJ5X3Jlc3AgZXhwZWN0cyBlbm91Z2ggc3BhY2UgZm9yCkBAIC04NjQsMTAgKzg2NCwxMCBAQAogCWlmICghcikKIAkJcmV0dXJuIC1FTk9NRU07CiAJcmVzcCA9IChybmRpc19xdWVyeV9jbXBsdF90eXBlICopIHItPmJ1ZjsKLQkKKwogCXJlc3AtPk1lc3NhZ2VUeXBlID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoUkVNT1RFX05ESVNfUVVFUllfQ01QTFQpOwogCXJlc3AtPlJlcXVlc3RJRCA9IGJ1Zi0+UmVxdWVzdElEOyAvKiBTdGlsbCBMRSBpbiBtc2cgYnVmZmVyICovCi0gIAkKKwogCWlmIChnZW5fbmRpc19xdWVyeV9yZXNwIChjb25maWdOciwgbGUzMl90b19jcHUgKGJ1Zi0+T0lEKSwKIAkJCWxlMzJfdG9fY3B1KGJ1Zi0+SW5mb3JtYXRpb25CdWZmZXJPZmZzZXQpCiAJCQkJCSsgOCArICh1OCAqKSBidWYsCkBAIC04ODEsMTAgKzg4MSwxMCBAQAogCQlyZXNwLT5JbmZvcm1hdGlvbkJ1ZmZlck9mZnNldCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDApOwogCX0gZWxzZQogCQlyZXNwLT5TdGF0dXMgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyIChSTkRJU19TVEFUVVNfU1VDQ0VTUyk7Ci0JCisKIAlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2spCi0JICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKLQkgICAgCQlybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmRldik7CisJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKKwkJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODkzLDcgKzg5Myw3IEBACiAJdTMyCQkJQnVmTGVuZ3RoLCBCdWZPZmZzZXQ7CiAJcm5kaXNfc2V0X2NtcGx0X3R5cGUJKnJlc3A7CiAJcm5kaXNfcmVzcF90CQkqcjsKLQkKKwogCXIgPSBybmRpc19hZGRfcmVzcG9uc2UgKGNvbmZpZ05yLCBzaXplb2YgKHJuZGlzX3NldF9jbXBsdF90eXBlKSk7CiAJaWYgKCFyKQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTkwNiwyNiArOTA2LDI3IEBACiAJREVCVUcoIiVzOiBMZW5ndGg6ICVkXG4iLCBfX0ZVTkNUSU9OX18sIEJ1Zkxlbmd0aCk7CiAJREVCVUcoIiVzOiBPZmZzZXQ6ICVkXG4iLCBfX0ZVTkNUSU9OX18sIEJ1Zk9mZnNldCk7CiAJREVCVUcoIiVzOiBJbmZvQnVmZmVyOiAiLCBfX0ZVTkNUSU9OX18pOwotCQorCiAJZm9yIChpID0gMDsgaSA8IEJ1Zkxlbmd0aDsgaSsrKSB7CiAJCURFQlVHICgiJTAyeCAiLCAqKCgodTggKikgYnVmKSArIGkgKyA4ICsgQnVmT2Zmc2V0KSk7CiAJfQotCQorCiAJREVCVUcgKCJcbiIpOwogI2VuZGlmCi0JCisKIAlyZXNwLT5NZXNzYWdlVHlwZSA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKFJFTU9URV9ORElTX1NFVF9DTVBMVCk7CiAJcmVzcC0+TWVzc2FnZUxlbmd0aCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDE2KTsKIAlyZXNwLT5SZXF1ZXN0SUQgPSBidWYtPlJlcXVlc3RJRDsgLyogU3RpbGwgTEUgaW4gbXNnIGJ1ZmZlciAqLwotCWlmIChnZW5fbmRpc19zZXRfcmVzcCAoY29uZmlnTnIsIGxlMzJfdG9fY3B1IChidWYtPk9JRCksIAotCQkJICAgICAgICgodTggKikgYnVmKSArIDggKyBCdWZPZmZzZXQsIEJ1Zkxlbmd0aCwgcikpCi0JICAgIHJlc3AtPlN0YXR1cyA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKFJORElTX1NUQVRVU19OT1RfU1VQUE9SVEVEKTsKLQllbHNlIHJlc3AtPlN0YXR1cyA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKFJORElTX1NUQVRVU19TVUNDRVNTKTsKLQkKKwlpZiAoZ2VuX25kaXNfc2V0X3Jlc3AgKGNvbmZpZ05yLCBsZTMyX3RvX2NwdSAoYnVmLT5PSUQpLAorCQkJKCh1OCAqKSBidWYpICsgOCArIEJ1Zk9mZnNldCwgQnVmTGVuZ3RoLCByKSkKKwkJcmVzcC0+U3RhdHVzID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoUk5ESVNfU1RBVFVTX05PVF9TVVBQT1JURUQpOworCWVsc2UKKwkJcmVzcC0+U3RhdHVzID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoUk5ESVNfU1RBVFVTX1NVQ0NFU1MpOworCiAJaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrKQotCSAgICBybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmFjayAoCi0JICAgIAkJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5kZXYpOwotCQorCQlybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmFjayAoCisJCQlybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmRldik7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTMzLDI3ICs5MzQsMjcgQEAKIHsKIAlybmRpc19yZXNldF9jbXBsdF90eXBlCSpyZXNwOwogCXJuZGlzX3Jlc3BfdAkJKnI7Ci0JCisKIAlyID0gcm5kaXNfYWRkX3Jlc3BvbnNlIChjb25maWdOciwgc2l6ZW9mIChybmRpc19yZXNldF9jbXBsdF90eXBlKSk7CiAJaWYgKCFyKQogCQlyZXR1cm4gLUVOT01FTTsKIAlyZXNwID0gKHJuZGlzX3Jlc2V0X2NtcGx0X3R5cGUgKikgci0+YnVmOwotCQorCiAJcmVzcC0+TWVzc2FnZVR5cGUgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyIChSRU1PVEVfTkRJU19SRVNFVF9DTVBMVCk7CiAJcmVzcC0+TWVzc2FnZUxlbmd0aCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDE2KTsKIAlyZXNwLT5TdGF0dXMgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyIChSTkRJU19TVEFUVVNfU1VDQ0VTUyk7CiAJLyogcmVzZW50IGluZm9ybWF0aW9uICovCiAJcmVzcC0+QWRkcmVzc2luZ1Jlc2V0ID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMSk7Ci0JCisKIAlpZiAocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2spCi0JICAgIHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKLQkgICAgCQlybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmRldik7CisJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrICgKKwkJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHJuZGlzX2tlZXBhbGl2ZV9yZXNwb25zZSAoaW50IGNvbmZpZ05yLAotCQkJCSAgICAgcm5kaXNfa2VlcGFsaXZlX21zZ190eXBlICpidWYpCisJCQkJcm5kaXNfa2VlcGFsaXZlX21zZ190eXBlICpidWYpCiB7CiAJcm5kaXNfa2VlcGFsaXZlX2NtcGx0X3R5cGUJKnJlc3A7CiAJcm5kaXNfcmVzcF90CQkJKnI7CkBAIC05NjQsNDggKzk2NSw0OCBAQAogCWlmICghcikKIAkJcmV0dXJuIC1FTk9NRU07CiAJcmVzcCA9IChybmRpc19rZWVwYWxpdmVfY21wbHRfdHlwZSAqKSByLT5idWY7Ci0JCQorCiAJcmVzcC0+TWVzc2FnZVR5cGUgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgKIAkJCVJFTU9URV9ORElTX0tFRVBBTElWRV9DTVBMVCk7CiAJcmVzcC0+TWVzc2FnZUxlbmd0aCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKDE2KTsKIAlyZXNwLT5SZXF1ZXN0SUQgPSBidWYtPlJlcXVlc3RJRDsgLyogU3RpbGwgTEUgaW4gbXNnIGJ1ZmZlciAqLwogCXJlc3AtPlN0YXR1cyA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMzIgKFJORElTX1NUQVRVU19TVUNDRVNTKTsKLQkKKwogCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmFjaykKLQkgICAgcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2sgKAotCSAgICAJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KTsKLQkKKwkJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2sgKAorCQkJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5kZXYpOworCiAJcmV0dXJuIDA7CiB9CiAKIAotLyogCi0gKiBEZXZpY2UgdG8gSG9zdCBDb211bmljYXRpb24gCisvKgorICogRGV2aWNlIHRvIEhvc3QgQ29tdW5pY2F0aW9uCiAgKi8KIHN0YXRpYyBpbnQgcm5kaXNfaW5kaWNhdGVfc3RhdHVzX21zZyAoaW50IGNvbmZpZ05yLCB1MzIgc3RhdHVzKQogewotCXJuZGlzX2luZGljYXRlX3N0YXR1c19tc2dfdHlwZQkqcmVzcDsJCisJcm5kaXNfaW5kaWNhdGVfc3RhdHVzX21zZ190eXBlCSpyZXNwOwogCXJuZGlzX3Jlc3BfdAkJCSpyOwotCQorCiAJaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3RhdGUgPT0gUk5ESVNfVU5JTklUSUFMSVpFRCkKLQkgICAgcmV0dXJuIC1FTk9UU1VQUDsKLQkKLQlyID0gcm5kaXNfYWRkX3Jlc3BvbnNlIChjb25maWdOciwgCisJCXJldHVybiAtRU5PVFNVUFA7CisKKwlyID0gcm5kaXNfYWRkX3Jlc3BvbnNlIChjb25maWdOciwKIAkJCQlzaXplb2YgKHJuZGlzX2luZGljYXRlX3N0YXR1c19tc2dfdHlwZSkpOwogCWlmICghcikKIAkJcmV0dXJuIC1FTk9NRU07CiAJcmVzcCA9IChybmRpc19pbmRpY2F0ZV9zdGF0dXNfbXNnX3R5cGUgKikgci0+YnVmOwotCQorCiAJcmVzcC0+TWVzc2FnZVR5cGUgPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgKIAkJCVJFTU9URV9ORElTX0lORElDQVRFX1NUQVRVU19NU0cpOwogCXJlc3AtPk1lc3NhZ2VMZW5ndGggPSBfX2NvbnN0YW50X2NwdV90b19sZTMyICgyMCk7CiAJcmVzcC0+U3RhdHVzID0gY3B1X3RvX2xlMzIgKHN0YXR1cyk7CiAJcmVzcC0+U3RhdHVzQnVmZmVyTGVuZ3RoID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7CiAJcmVzcC0+U3RhdHVzQnVmZmVyT2Zmc2V0ID0gX19jb25zdGFudF9jcHVfdG9fbGUzMiAoMCk7Ci0JCi0JaWYgKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uYWNrKSAKLQkgICAgcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2sgKAotCSAgICAJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZGV2KTsKKworCWlmIChybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLmFjaykKKwkJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5hY2sgKAorCQkJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5kZXYpOwogCXJldHVybiAwOwogfQogCkBAIC0xMDEzLDcgKzEwMTQsNyBAQAogewogCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ubWVkaWFfc3RhdGUKIAkJCT0gTkRJU19NRURJQV9TVEFURV9DT05ORUNURUQ7Ci0JcmV0dXJuIHJuZGlzX2luZGljYXRlX3N0YXR1c19tc2cgKGNvbmZpZ05yLCAKKwlyZXR1cm4gcm5kaXNfaW5kaWNhdGVfc3RhdHVzX21zZyAoY29uZmlnTnIsCiAJCQkJCSAgUk5ESVNfU1RBVFVTX01FRElBX0NPTk5FQ1QpOwogfQogCkBAIC0xMDQ1LDI2ICsxMDQ2LDI2IEBACiAJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5ob3N0X21hYyA9IGFkZHI7CiB9CiAKLS8qIAotICogTWVzc2FnZSBQYXJzZXIgCisvKgorICogTWVzc2FnZSBQYXJzZXIKICAqLwogaW50IHJuZGlzX21zZ19wYXJzZXIgKHU4IGNvbmZpZ05yLCB1OCAqYnVmKQogewogCXUzMiBNc2dUeXBlLCBNc2dMZW5ndGg7CiAJX19sZTMyICp0bXA7CiAJc3RydWN0IHJuZGlzX3BhcmFtcwkJKnBhcmFtczsKLQkKKwogCWlmICghYnVmKQogCQlyZXR1cm4gLUVOT01FTTsKLQkKLQl0bXAgPSAoX19sZTMyICopIGJ1ZjsgCisKKwl0bXAgPSAoX19sZTMyICopIGJ1ZjsKIAlNc2dUeXBlICAgPSBsZTMyX3RvX2NwdXAodG1wKyspOwogCU1zZ0xlbmd0aCA9IGxlMzJfdG9fY3B1cCh0bXArKyk7Ci0JCisKIAlpZiAoY29uZmlnTnIgPj0gUk5ESVNfTUFYX0NPTkZJR1MpCiAJCXJldHVybiAtRU5PVFNVUFA7CiAJcGFyYW1zID0gJnJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl07Ci0JCisKIAkvKiBOT1RFOiBSTkRJUyBpcyAqRVhUUkVNRUxZKiBjaGF0dHkgLi4uIFdpbmRvd3MgY29uc3RhbnRseSBwb2xscyBmb3IKIAkgKiByeC90eCBzdGF0aXN0aWNzIGFuZCBsaW5rIHN0YXR1cywgaW4gYWRkaXRpb24gdG8gS0VFUEFMSVZFIHRyYWZmaWMKIAkgKiBhbmQgbm9ybWFsIEhDIGxldmVsIHBvbGxpbmcgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IElOIHRyYWZmaWMuCkBAIC0xMDczLDEyICsxMDc0LDEyIEBACiAJLyogRm9yIFVTQjogcmVzcG9uc2VzIG1heSB0YWtlIHVwIHRvIDEwIHNlY29uZHMgKi8KIAlzd2l0Y2ggKE1zZ1R5cGUpIHsKIAljYXNlIFJFTU9URV9ORElTX0lOSVRJQUxJWkVfTVNHOgotCQlERUJVRygiJXM6IFJFTU9URV9ORElTX0lOSVRJQUxJWkVfTVNHXG4iLCAKKwkJREVCVUcoIiVzOiBSRU1PVEVfTkRJU19JTklUSUFMSVpFX01TR1xuIiwKIAkJCV9fRlVOQ1RJT05fXyApOwogCQlwYXJhbXMtPnN0YXRlID0gUk5ESVNfSU5JVElBTElaRUQ7CiAJCXJldHVybiAgcm5kaXNfaW5pdF9yZXNwb25zZSAoY29uZmlnTnIsCi0JCQkJCSAgICAgKHJuZGlzX2luaXRfbXNnX3R5cGUgKikgYnVmKTsKLQkJCisJCQkJCShybmRpc19pbml0X21zZ190eXBlICopIGJ1Zik7CisKIAljYXNlIFJFTU9URV9ORElTX0hBTFRfTVNHOgogCQlERUJVRygiJXM6IFJFTU9URV9ORElTX0hBTFRfTVNHXG4iLAogCQkJX19GVU5DVElPTl9fICk7CkBAIC0xMDg4LDM3ICsxMDg5LDM3IEBACiAJCQluZXRpZl9zdG9wX3F1ZXVlIChwYXJhbXMtPmRldik7CiAJCX0KIAkJcmV0dXJuIDA7Ci0JCQorCiAJY2FzZSBSRU1PVEVfTkRJU19RVUVSWV9NU0c6Ci0JCXJldHVybiBybmRpc19xdWVyeV9yZXNwb25zZSAoY29uZmlnTnIsIAotCQkJCQkgICAgIChybmRpc19xdWVyeV9tc2dfdHlwZSAqKSBidWYpOwotCQkKKwkJcmV0dXJuIHJuZGlzX3F1ZXJ5X3Jlc3BvbnNlIChjb25maWdOciwKKwkJCQkJKHJuZGlzX3F1ZXJ5X21zZ190eXBlICopIGJ1Zik7CisKIAljYXNlIFJFTU9URV9ORElTX1NFVF9NU0c6Ci0JCXJldHVybiBybmRpc19zZXRfcmVzcG9uc2UgKGNvbmZpZ05yLCAKLQkJCQkJICAgKHJuZGlzX3NldF9tc2dfdHlwZSAqKSBidWYpOwotCQkKKwkJcmV0dXJuIHJuZGlzX3NldF9yZXNwb25zZSAoY29uZmlnTnIsCisJCQkJCShybmRpc19zZXRfbXNnX3R5cGUgKikgYnVmKTsKKwogCWNhc2UgUkVNT1RFX05ESVNfUkVTRVRfTVNHOgotCQlERUJVRygiJXM6IFJFTU9URV9ORElTX1JFU0VUX01TR1xuIiwgCisJCURFQlVHKCIlczogUkVNT1RFX05ESVNfUkVTRVRfTVNHXG4iLAogCQkJX19GVU5DVElPTl9fICk7CiAJCXJldHVybiBybmRpc19yZXNldF9yZXNwb25zZSAoY29uZmlnTnIsCi0JCQkJCSAgICAgKHJuZGlzX3Jlc2V0X21zZ190eXBlICopIGJ1Zik7CisJCQkJCShybmRpc19yZXNldF9tc2dfdHlwZSAqKSBidWYpOwogCiAJY2FzZSBSRU1PVEVfTkRJU19LRUVQQUxJVkVfTVNHOgogCQkvKiBGb3IgVVNCOiBob3N0IGRvZXMgdGhpcyBldmVyeSA1IHNlY29uZHMgKi8KIAkJaWYgKHJuZGlzX2RlYnVnID4gMSkKLQkJCURFQlVHKCIlczogUkVNT1RFX05ESVNfS0VFUEFMSVZFX01TR1xuIiwgCisJCQlERUJVRygiJXM6IFJFTU9URV9ORElTX0tFRVBBTElWRV9NU0dcbiIsCiAJCQkJX19GVU5DVElPTl9fICk7CiAJCXJldHVybiBybmRpc19rZWVwYWxpdmVfcmVzcG9uc2UgKGNvbmZpZ05yLAotCQkJCQkJIChybmRpc19rZWVwYWxpdmVfbXNnX3R5cGUgKikgCisJCQkJCQkgKHJuZGlzX2tlZXBhbGl2ZV9tc2dfdHlwZSAqKQogCQkJCQkJIGJ1Zik7Ci0JCQotCWRlZmF1bHQ6IAorCisJZGVmYXVsdDoKIAkJLyogQXQgbGVhc3QgV2luZG93cyBYUCBlbWl0cyBzb21lIHVuZGVmaW5lZCBSTkRJUyBtZXNzYWdlcy4KIAkJICogSW4gb25lIGNhc2UgdGhvc2UgbWVzc2FnZXMgc2VlbWVkIHRvIHJlbGF0ZSB0byB0aGUgaG9zdAogCQkgKiBzdXNwZW5kaW5nIGl0c2VsZi4KIAkJICovCiAJCXByaW50ayAoS0VSTl9XQVJOSU5HCi0JCQkiJXM6IHVua25vd24gUk5ESVMgbWVzc2FnZSAweCUwOFggbGVuICVkXG4iLCAKKwkJCSIlczogdW5rbm93biBSTkRJUyBtZXNzYWdlIDB4JTA4WCBsZW4gJWRcbiIsCiAJCQlfX0ZVTkNUSU9OX18gLCBNc2dUeXBlLCBNc2dMZW5ndGgpOwogCQl7CiAJCQl1bnNpZ25lZCBpOwpAQCAtMTE0MiwxNCArMTE0MywxNCBAQAogCQl9CiAJCWJyZWFrOwogCX0KLQkKKwogCXJldHVybiAtRU5PVFNVUFA7CiB9CiAKIGludCBybmRpc19yZWdpc3RlciAoaW50ICgqIHJuZGlzX2NvbnRyb2xfYWNrKSAoc3RydWN0IG5ldF9kZXZpY2UgKikpCiB7CiAJdTggaTsKLQkKKwogCWZvciAoaSA9IDA7IGkgPCBSTkRJU19NQVhfQ09ORklHUzsgaSsrKSB7CiAJCWlmICghcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2ldLnVzZWQpIHsKIAkJCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtpXS51c2VkID0gMTsKQEAgLTExNTksMzIgKzExNjAsMzIgQEAKIAkJfQogCX0KIAlERUJVRygiZmFpbGVkXG4iKTsKLQkKKwogCXJldHVybiAtMTsKIH0KIAogdm9pZCBybmRpc19kZXJlZ2lzdGVyIChpbnQgY29uZmlnTnIpCiB7CiAJREVCVUcoIiVzOiBcbiIsIF9fRlVOQ1RJT05fXyApOwotCQorCiAJaWYgKGNvbmZpZ05yID49IFJORElTX01BWF9DT05GSUdTKSByZXR1cm47CiAJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS51c2VkID0gMDsKLQkKKwogCXJldHVybjsKIH0KIAotaW50IHJuZGlzX3NldF9wYXJhbV9kZXYgKHU4IGNvbmZpZ05yLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCAKK2ludCBybmRpc19zZXRfcGFyYW1fZGV2ICh1OCBjb25maWdOciwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMsCiAJCQkgdTE2ICpjZGNfZmlsdGVyKQogewogCURFQlVHKCIlczpcbiIsIF9fRlVOQ1RJT05fXyApOwogCWlmICghZGV2IHx8ICFzdGF0cykgcmV0dXJuIC0xOwogCWlmIChjb25maWdOciA+PSBSTkRJU19NQVhfQ09ORklHUykgcmV0dXJuIC0xOwotCQorCiAJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5kZXYgPSBkZXY7CiAJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5zdGF0cyA9IHN0YXRzOwogCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uZmlsdGVyID0gY2RjX2ZpbHRlcjsKLQkKKwogCXJldHVybiAwOwogfQogCkBAIC0xMTkzLDEwICsxMTk0LDEwIEBACiAJREVCVUcoIiVzOlxuIiwgX19GVU5DVElPTl9fICk7CiAJaWYgKCF2ZW5kb3JEZXNjcikgcmV0dXJuIC0xOwogCWlmIChjb25maWdOciA+PSBSTkRJU19NQVhfQ09ORklHUykgcmV0dXJuIC0xOwotCQorCiAJcm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS52ZW5kb3JJRCA9IHZlbmRvcklEOwogCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0udmVuZG9yRGVzY3IgPSB2ZW5kb3JEZXNjcjsKLQkKKwogCXJldHVybiAwOwogfQogCkBAIC0xMjA0LDEwICsxMjA1LDEwIEBACiB7CiAJREVCVUcoIiVzOiAldSAldVxuIiwgX19GVU5DVElPTl9fLCBtZWRpdW0sIHNwZWVkKTsKIAlpZiAoY29uZmlnTnIgPj0gUk5ESVNfTUFYX0NPTkZJR1MpIHJldHVybiAtMTsKLQkKKwogCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ubWVkaXVtID0gbWVkaXVtOwogCXJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0uc3BlZWQgPSBzcGVlZDsKLQkKKwogCXJldHVybiAwOwogfQogCkBAIC0xMjI5LDkgKzEyMzAsOSBAQAogewogCXJuZGlzX3Jlc3BfdAkJKnI7CiAJc3RydWN0IGxpc3RfaGVhZAkqYWN0LCAqdG1wOwotCQotCWxpc3RfZm9yX2VhY2hfc2FmZSAoYWN0LCB0bXAsIAotCQkJICAgICYocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2NvbmZpZ05yXS5yZXNwX3F1ZXVlKSkKKworCWxpc3RfZm9yX2VhY2hfc2FmZSAoYWN0LCB0bXAsCisJCQkmKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ucmVzcF9xdWV1ZSkpCiAJewogCQlyID0gbGlzdF9lbnRyeSAoYWN0LCBybmRpc19yZXNwX3QsIGxpc3QpOwogCQlpZiAociAmJiByLT5idWYgPT0gYnVmKSB7CkBAIC0xMjQ0LDEyICsxMjQ1LDEyIEBACiB1OCAqcm5kaXNfZ2V0X25leHRfcmVzcG9uc2UgKGludCBjb25maWdOciwgdTMyICpsZW5ndGgpCiB7CiAJcm5kaXNfcmVzcF90CQkqcjsKLQlzdHJ1Y3QgbGlzdF9oZWFkIAkqYWN0LCAqdG1wOwotCQorCXN0cnVjdCBsaXN0X2hlYWQJKmFjdCwgKnRtcDsKKwogCWlmICghbGVuZ3RoKSByZXR1cm4gTlVMTDsKLQkKLQlsaXN0X2Zvcl9lYWNoX3NhZmUgKGFjdCwgdG1wLCAKLQkJCSAgICAmKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ucmVzcF9xdWV1ZSkpCisKKwlsaXN0X2Zvcl9lYWNoX3NhZmUgKGFjdCwgdG1wLAorCQkJJihybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnJlc3BfcXVldWUpKQogCXsKIAkJciA9IGxpc3RfZW50cnkgKGFjdCwgcm5kaXNfcmVzcF90LCBsaXN0KTsKIAkJaWYgKCFyLT5zZW5kKSB7CkBAIC0xMjU4LDI0ICsxMjU5LDI0IEBACiAJCQlyZXR1cm4gci0+YnVmOwogCQl9CiAJfQotCQorCiAJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBybmRpc19yZXNwX3QgKnJuZGlzX2FkZF9yZXNwb25zZSAoaW50IGNvbmZpZ05yLCB1MzIgbGVuZ3RoKQogewogCXJuZGlzX3Jlc3BfdAkqcjsKLQkKKwogCS8qIE5PVEU6ICB0aGlzIGdldHMgY29waWVkIGludG8gZXRoZXIuYyBVU0JfQlVGU0laIGJ5dGVzIC4uLiAqLwogCXIgPSBrbWFsbG9jIChzaXplb2YgKHJuZGlzX3Jlc3BfdCkgKyBsZW5ndGgsIEdGUF9BVE9NSUMpOwogCWlmICghcikgcmV0dXJuIE5VTEw7Ci0JCisKIAlyLT5idWYgPSAodTggKikgKHIgKyAxKTsKIAlyLT5sZW5ndGggPSBsZW5ndGg7CiAJci0+c2VuZCA9IDA7Ci0JCi0JbGlzdF9hZGRfdGFpbCAoJnItPmxpc3QsIAotCQkgICAgICAgJihybmRpc19wZXJfZGV2X3BhcmFtcyBbY29uZmlnTnJdLnJlc3BfcXVldWUpKTsKKworCWxpc3RfYWRkX3RhaWwgKCZyLT5saXN0LAorCQkmKHJuZGlzX3Blcl9kZXZfcGFyYW1zIFtjb25maWdOcl0ucmVzcF9xdWV1ZSkpOwogCXJldHVybiByOwogfQogCkBAIC0xMzAxLDE0ICsxMzAyLDE0IEBACiAKICNpZmRlZglDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUwogCi1zdGF0aWMgaW50IHJuZGlzX3Byb2NfcmVhZCAoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsIGludCBjb3VudCwgaW50ICplb2YsIAotCQkgICAgIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHJuZGlzX3Byb2NfcmVhZCAoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsIGludCBjb3VudCwgaW50ICplb2YsCisJCXZvaWQgKmRhdGEpCiB7CiAJY2hhciAqb3V0ID0gcGFnZTsKIAlpbnQgbGVuOwogCXJuZGlzX3BhcmFtcyAqcGFyYW0gPSAocm5kaXNfcGFyYW1zICopIGRhdGE7Ci0JCi0Jb3V0ICs9IHNucHJpbnRmIChvdXQsIGNvdW50LCAKKworCW91dCArPSBzbnByaW50ZiAob3V0LCBjb3VudCwKIAkJCSAiQ29uZmlnIE5yLiAlZFxuIgogCQkJICJ1c2VkICAgICAgOiAlc1xuIgogCQkJICJzdGF0ZSAgICAgOiAlc1xuIgpAQCAtMTMxNiw4ICsxMzE3LDggQEAKIAkJCSAic3BlZWQgICAgIDogJWRcbiIKIAkJCSAiY2FibGUgICAgIDogJXNcbiIKIAkJCSAidmVuZG9yIElEIDogMHglMDhYXG4iCi0JCQkgInZlbmRvciAgICA6ICVzXG4iLCAKLQkJCSBwYXJhbS0+Y29uZmlnbnIsIChwYXJhbS0+dXNlZCkgPyAieSIgOiAibiIsIAorCQkJICJ2ZW5kb3IgICAgOiAlc1xuIiwKKwkJCSBwYXJhbS0+Y29uZmlnbnIsIChwYXJhbS0+dXNlZCkgPyAieSIgOiAibiIsCiAJCQkgKHsgY2hhciAqcyA9ICI/IjsKIAkJCSBzd2l0Y2ggKHBhcmFtLT5zdGF0ZSkgewogCQkJIGNhc2UgUk5ESVNfVU5JTklUSUFMSVpFRDoKQEAgLTEzMjcsMzIgKzEzMjgsMzIgQEAKIAkJCSBjYXNlIFJORElTX0RBVEFfSU5JVElBTElaRUQ6CiAJCQkJcyA9ICJSTkRJU19EQVRBX0lOSVRJQUxJWkVEIjsgYnJlYWs7CiAJCQl9OyBzOyB9KSwKLQkJCSBwYXJhbS0+bWVkaXVtLCAKLQkJCSAocGFyYW0tPm1lZGlhX3N0YXRlKSA/IDAgOiBwYXJhbS0+c3BlZWQqMTAwLCAKKwkJCSBwYXJhbS0+bWVkaXVtLAorCQkJIChwYXJhbS0+bWVkaWFfc3RhdGUpID8gMCA6IHBhcmFtLT5zcGVlZCoxMDAsCiAJCQkgKHBhcmFtLT5tZWRpYV9zdGF0ZSkgPyAiZGlzY29ubmVjdGVkIiA6ICJjb25uZWN0ZWQiLAotCQkJIHBhcmFtLT52ZW5kb3JJRCwgcGFyYW0tPnZlbmRvckRlc2NyKTsgICAgICAKLQkKKwkJCSBwYXJhbS0+dmVuZG9ySUQsIHBhcmFtLT52ZW5kb3JEZXNjcik7CisKIAlsZW4gPSBvdXQgLSBwYWdlOwogCWxlbiAtPSBvZmY7Ci0JCisKIAlpZiAobGVuIDwgY291bnQpIHsKIAkJKmVvZiA9IDE7CiAJCWlmIChsZW4gPD0gMCkKIAkJCXJldHVybiAwOwogCX0gZWxzZQogCQlsZW4gPSBjb3VudDsKLQkKKwogCSpzdGFydCA9IHBhZ2UgKyBvZmY7CiAJcmV0dXJuIGxlbjsKIH0KIAotc3RhdGljIGludCBybmRpc19wcm9jX3dyaXRlIChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgCi0JCSAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHJuZGlzX3Byb2Nfd3JpdGUgKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLAorCQl1bnNpZ25lZCBsb25nIGNvdW50LCB2b2lkICpkYXRhKQogewogCXJuZGlzX3BhcmFtcyAqcCA9IGRhdGE7CiAJdTMyIHNwZWVkID0gMDsKIAlpbnQgaSwgZmxfc3BlZWQgPSAwOwotCQorCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKIAkJY2hhciBjOwogCQlpZiAoZ2V0X3VzZXIoYywgYnVmZmVyKSkKQEAgLTEzNzksMTUgKzEzODAsMTUgQEAKIAkJY2FzZSAnZCc6CiAJCQlybmRpc19zaWduYWxfZGlzY29ubmVjdChwLT5jb25maWducik7CiAJCQlicmVhazsKLQkJZGVmYXVsdDogCisJCWRlZmF1bHQ6CiAJCQlpZiAoZmxfc3BlZWQpIHAtPnNwZWVkID0gc3BlZWQ7CiAJCQllbHNlIERFQlVHICgiJWMgaXMgbm90IHZhbGlkXG4iLCBjKTsKIAkJCWJyZWFrOwogCQl9Ci0JCQorCiAJCWJ1ZmZlcisrOwogCX0KLQkKKwogCXJldHVybiBjb3VudDsKIH0KIApAQCAtMTQwOCw3ICsxNDA5LDcgQEAKIAogCQlzcHJpbnRmIChuYW1lLCBOQU1FX1RFTVBMQVRFLCBpKTsKIAkJaWYgKCEocm5kaXNfY29ubmVjdF9zdGF0ZSBbaV0KLQkJCQk9IGNyZWF0ZV9wcm9jX2VudHJ5IChuYW1lLCAwNjYwLCBOVUxMKSkpIAorCQkJCT0gY3JlYXRlX3Byb2NfZW50cnkgKG5hbWUsIDA2NjAsIE5VTEwpKSkKIAkJewogCQkJREVCVUcgKCIlcyA6cmVtb3ZlIGVudHJpZXMiLCBfX0ZVTkNUSU9OX18pOwogCQkJd2hpbGUgKGkpIHsKQEAgLTE0MzIsNyArMTQzMyw3IEBACiAJCQkJPSBORElTX01FRElBX1NUQVRFX0RJU0NPTk5FQ1RFRDsKIAkJSU5JVF9MSVNUX0hFQUQgKCYocm5kaXNfcGVyX2Rldl9wYXJhbXMgW2ldLnJlc3BfcXVldWUpKTsKIAl9Ci0JCisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTQ0MSw3ICsxNDQyLDcgQEAKICNpZmRlZglDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUwogCXU4IGk7CiAJY2hhciBuYW1lIFsyMF07Ci0JCisKIAlmb3IgKGkgPSAwOyBpIDwgUk5ESVNfTUFYX0NPTkZJR1M7IGkrKykgewogCQlzcHJpbnRmIChuYW1lLCBOQU1FX1RFTVBMQVRFLCBpKTsKIAkJcmVtb3ZlX3Byb2NfZW50cnkgKG5hbWUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3JuZGlzLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuaAppbmRleCA5NWI0YzYzLi4yOTU2NjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcm5kaXMuaApAQCAtMSwxNSArMSwxNSBAQAotLyogCisvKgogICogUk5ESVMJRGVmaW5pdGlvbnMgZm9yIFJlbW90ZSBORElTCi0gKiAKKyAqCiAgKiBWZXJzaW9uOgkkSWQ6IHJuZGlzLmgsdiAxLjE1IDIwMDQvMDMvMjUgMjE6MzM6NDYgcm9iZXJ0IEV4cCAkCi0gKiAKKyAqCiAgKiBBdXRob3JzOglCZW5lZGlrdCBTcHJhbmdlciwgUGVuZ3V0cm9uaXgKLSAqIAkJUm9iZXJ0IFNjaHdlYmVsLCBQZW5ndXRyb25peAotICogCi0gKiAJCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqCQlSb2JlcnQgU2Nod2ViZWwsIFBlbmd1dHJvbml4CisgKgorICoJCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqCQltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICoJCXZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uIAotICogCisgKgkJdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCiAgKgkJVGhpcyBzb2Z0d2FyZSB3YXMgb3JpZ2luYWxseSBkZXZlbG9wZWQgaW4gY29uZm9ybWFuY2Ugd2l0aAogICoJCU1pY3Jvc29mdCdzIFJlbW90ZSBORElTIFNwZWNpZmljYXRpb24gTGljZW5zZSBBZ3JlZW1lbnQuCiAgKi8KQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgUk5ESVNfU1RBVFVTX01FRElBX0NPTk5FQ1QJMHg0MDAxMDAwQlUJLyogRGV2aWNlIGNvbm5lY3RlZCAgKi8KICNkZWZpbmUgUk5ESVNfU1RBVFVTX01FRElBX0RJU0NPTk5FQ1QJMHg0MDAxMDAwQ1UJLyogRGV2aWNlIGRpc2Nvbm5lY3RlZCAqLwogLyogRm9yIGFsbCBub3Qgc3BlY2lmaWVkIHN0YXR1cyBtZXNzYWdlczoKLSAqIFJORElTX1NUQVRVU19YeHggLT4gTkRJU19TVEFUVVNfWHh4IAorICogUk5ESVNfU1RBVFVTX1h4eCAtPiBORElTX1NUQVRVU19YeHgKICAqLwogCiAvKiBNZXNzYWdlIFNldCBmb3IgQ29ubmVjdGlvbmxlc3MgKDgwMi4zKSBEZXZpY2VzICovCkBAIC02OSw3ICs2OSw3IEBACiAjZGVmaW5lIE9JRF9QTlBfRU5BQkxFX1dBS0VfVVAJCQkweEZEMDEwMTA2CiAKIAotdHlwZWRlZiBzdHJ1Y3Qgcm5kaXNfaW5pdF9tc2dfdHlwZSAKK3R5cGVkZWYgc3RydWN0IHJuZGlzX2luaXRfbXNnX3R5cGUKIHsKIAlfX2xlMzIJTWVzc2FnZVR5cGU7CiAJX19sZTMyCU1lc3NhZ2VMZW5ndGg7CkBAIC0yMzQsMTIgKzIzNCwxMiBAQAogCiAJY29uc3QgdTgJCSpob3N0X21hYzsKIAl1MTYJCQkqZmlsdGVyOwotCXN0cnVjdCBuZXRfZGV2aWNlIAkqZGV2OworCXN0cnVjdCBuZXRfZGV2aWNlCSpkZXY7CiAJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzOwogCiAJdTMyCQkJdmVuZG9ySUQ7CiAJY29uc3QgY2hhcgkJKnZlbmRvckRlc2NyOwotCWludCAJCQkoKmFjaykgKHN0cnVjdCBuZXRfZGV2aWNlICopOworCWludAkJCSgqYWNrKSAoc3RydWN0IG5ldF9kZXZpY2UgKik7CiAJc3RydWN0IGxpc3RfaGVhZAlyZXNwX3F1ZXVlOwogfSBybmRpc19wYXJhbXM7CiAKQEAgLTI1MCw3ICsyNTAsNyBAQAogaW50ICBybmRpc19zZXRfcGFyYW1fZGV2ICh1OCBjb25maWdOciwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMsCiAJCQkgdTE2ICpjZGNfZmlsdGVyKTsKLWludCAgcm5kaXNfc2V0X3BhcmFtX3ZlbmRvciAodTggY29uZmlnTnIsIHUzMiB2ZW5kb3JJRCwgCitpbnQgIHJuZGlzX3NldF9wYXJhbV92ZW5kb3IgKHU4IGNvbmZpZ05yLCB1MzIgdmVuZG9ySUQsCiAJCQkgICAgY29uc3QgY2hhciAqdmVuZG9yRGVzY3IpOwogaW50ICBybmRpc19zZXRfcGFyYW1fbWVkaXVtICh1OCBjb25maWdOciwgdTMyIG1lZGl1bSwgdTMyIHNwZWVkKTsKIHZvaWQgcm5kaXNfYWRkX2hkciAoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvc2VyaWFsLmMKaW5kZXggYjk5MjU0Ni4uOWQ2ZTFkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3NlcmlhbC5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zZXJpYWwuYwpAQCAtNDUsODggKzQ1LDE2IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KIAogI2luY2x1ZGUgPGxpbnV4L3VzYl9jaDkuaD4KLSNpbmNsdWRlIDxsaW51eC91c2JfY2RjLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2NkYy5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYl9nYWRnZXQuaD4KIAogI2luY2x1ZGUgImdhZGdldF9jaGlwcy5oIgogCiAKLS8qIFdhaXQgQ29uZCAqLwotCi0jZGVmaW5lIF9fd2FpdF9jb25kX2ludGVycnVwdGlibGUod3EsIGNvbmRpdGlvbiwgbG9jaywgZmxhZ3MsIHJldCkJXAotZG8gewkJCQkJCQkJCVwKLQl3YWl0X3F1ZXVlX3QgX193YWl0OwkJCQkJCVwKLQlpbml0X3dhaXRxdWV1ZV9lbnRyeSgmX193YWl0LCBjdXJyZW50KTsJCQkJXAotCQkJCQkJCQkJXAotCWFkZF93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7CQkJCQlcCi0JZm9yICg7OykgewkJCQkJCQlcCi0JCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CQkJXAotCQlpZiAoY29uZGl0aW9uKQkJCQkJCVwKLQkJCWJyZWFrOwkJCQkJCVwKLQkJaWYgKCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewkJCQlcCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzKTsJCVwKLQkJCXNjaGVkdWxlKCk7CQkJCQlcCi0JCQlzcGluX2xvY2tfaXJxc2F2ZShsb2NrLCBmbGFncyk7CQkJXAotCQkJY29udGludWU7CQkJCQlcCi0JCX0JCQkJCQkJXAotCQlyZXQgPSAtRVJFU1RBUlRTWVM7CQkJCQlcCi0JCWJyZWFrOwkJCQkJCQlcCi0JfQkJCQkJCQkJXAotCWN1cnJlbnQtPnN0YXRlID0gVEFTS19SVU5OSU5HOwkJCQkJXAotCXJlbW92ZV93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7CQkJCVwKLX0gd2hpbGUgKDApCi0JCi0jZGVmaW5lIHdhaXRfY29uZF9pbnRlcnJ1cHRpYmxlKHdxLCBjb25kaXRpb24sIGxvY2ssIGZsYWdzKQkJXAotKHsJCQkJCQkJCQlcCi0JaW50IF9fcmV0ID0gMDsJCQkJCQkJXAotCWlmICghKGNvbmRpdGlvbikpCQkJCQkJXAotCQlfX3dhaXRfY29uZF9pbnRlcnJ1cHRpYmxlKHdxLCBjb25kaXRpb24sIGxvY2ssIGZsYWdzLAlcCi0JCQkJCQlfX3JldCk7CQkJXAotCV9fcmV0OwkJCQkJCQkJXAotfSkKLQotI2RlZmluZSBfX3dhaXRfY29uZF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQod3EsIGNvbmRpdGlvbiwgbG9jaywgZmxhZ3MsIAlcCi0JCQkJCQl0aW1lb3V0LCByZXQpCQlcCi1kbyB7CQkJCQkJCQkJXAotCXNpZ25lZCBsb25nIF9fdGltZW91dCA9IHRpbWVvdXQ7CQkJCVwKLQl3YWl0X3F1ZXVlX3QgX193YWl0OwkJCQkJCVwKLQlpbml0X3dhaXRxdWV1ZV9lbnRyeSgmX193YWl0LCBjdXJyZW50KTsJCQkJXAotCQkJCQkJCQkJXAotCWFkZF93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7CQkJCQlcCi0JZm9yICg7OykgewkJCQkJCQlcCi0JCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CQkJXAotCQlpZiAoX190aW1lb3V0ID09IDApCQkJCQlcCi0JCQlicmVhazsJCQkJCQlcCi0JCWlmIChjb25kaXRpb24pCQkJCQkJXAotCQkJYnJlYWs7CQkJCQkJXAotCQlpZiAoIXNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CQkJCVwKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOwkJXAotCQkJX190aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dChfX3RpbWVvdXQpOwlcCi0JCQlzcGluX2xvY2tfaXJxc2F2ZShsb2NrLCBmbGFncyk7CQkJXAotCQkJY29udGludWU7CQkJCQlcCi0JCX0JCQkJCQkJXAotCQlyZXQgPSAtRVJFU1RBUlRTWVM7CQkJCQlcCi0JCWJyZWFrOwkJCQkJCQlcCi0JfQkJCQkJCQkJXAotCWN1cnJlbnQtPnN0YXRlID0gVEFTS19SVU5OSU5HOwkJCQkJXAotCXJlbW92ZV93YWl0X3F1ZXVlKCZ3cSwgJl9fd2FpdCk7CQkJCVwKLX0gd2hpbGUgKDApCi0JCi0jZGVmaW5lIHdhaXRfY29uZF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQod3EsIGNvbmRpdGlvbiwgbG9jaywgZmxhZ3MsCVwKLQkJCQkJCXRpbWVvdXQpCQlcCi0oewkJCQkJCQkJCVwKLQlpbnQgX19yZXQgPSAwOwkJCQkJCQlcCi0JaWYgKCEoY29uZGl0aW9uKSkJCQkJCQlcCi0JCV9fd2FpdF9jb25kX2ludGVycnVwdGlibGVfdGltZW91dCh3cSwgY29uZGl0aW9uLCBsb2NrLAlcCi0JCQkJCQlmbGFncywgdGltZW91dCwgX19yZXQpOwlcCi0JX19yZXQ7CQkJCQkJCQlcCi19KQotCi0KIC8qIERlZmluZXMgKi8KIAotI2RlZmluZSBHU19WRVJTSU9OX1NUUgkJCSJ2Mi4wIgotI2RlZmluZSBHU19WRVJTSU9OX05VTQkJCTB4MDIwMAorI2RlZmluZSBHU19WRVJTSU9OX1NUUgkJCSJ2Mi4yIgorI2RlZmluZSBHU19WRVJTSU9OX05VTQkJCTB4MDIwMgogCiAjZGVmaW5lIEdTX0xPTkdfTkFNRQkJCSJHYWRnZXQgU2VyaWFsIgogI2RlZmluZSBHU19TSE9SVF9OQU1FCQkJImdfc2VyaWFsIgpAQCAtODQzLDkgKzc3MSwxOSBAQAogLyoKICAqIGdzX2Nsb3NlCiAgKi8KKworI2RlZmluZSBHU19XUklURV9GSU5JU0hFRF9FVkVOVF9TQUZFTFkocCkJCQlcCisoewkJCQkJCQkJXAorCWludCBjb25kOwkJCQkJCVwKKwkJCQkJCQkJXAorCXNwaW5fbG9ja19pcnEoJihwKS0+cG9ydF9sb2NrKTsJCQkJXAorCWNvbmQgPSAhKHApLT5wb3J0X2RldiB8fCAhZ3NfYnVmX2RhdGFfYXZhaWwoKHApLT5wb3J0X3dyaXRlX2J1Zik7IFwKKwlzcGluX3VubG9ja19pcnEoJihwKS0+cG9ydF9sb2NrKTsJCQlcCisJY29uZDsJCQkJCQkJXAorfSkKKwogc3RhdGljIHZvaWQgZ3NfY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgZ3NfcG9ydCAqcG9ydCA9IHR0eS0+ZHJpdmVyX2RhdGE7CiAJc3RydWN0IHNlbWFwaG9yZSAqc2VtOwogCkBAIC04NTksNyArNzk3LDcgQEAKIAlzZW0gPSAmZ3Nfb3Blbl9jbG9zZV9zZW1bcG9ydC0+cG9ydF9udW1dOwogCWRvd24oc2VtKTsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZwb3J0LT5wb3J0X2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxKCZwb3J0LT5wb3J0X2xvY2spOwogCiAJaWYgKHBvcnQtPnBvcnRfb3Blbl9jb3VudCA9PSAwKSB7CiAJCXByaW50ayhLRVJOX0VSUgpAQCAtODg3LDEyICs4MjUsMTEgQEAKIAkvKiB3YWl0IGZvciB3cml0ZSBidWZmZXIgdG8gZHJhaW4sIG9yICovCiAJLyogYXQgbW9zdCBHU19DTE9TRV9USU1FT1VUIHNlY29uZHMgKi8KIAlpZiAoZ3NfYnVmX2RhdGFfYXZhaWwocG9ydC0+cG9ydF93cml0ZV9idWYpID4gMCkgewotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwb3J0LT5wb3J0X2xvY2ssIGZsYWdzKTsKLQkJd2FpdF9jb25kX2ludGVycnVwdGlibGVfdGltZW91dChwb3J0LT5wb3J0X3dyaXRlX3dhaXQsCi0JCXBvcnQtPnBvcnRfZGV2ID09IE5VTEwKLQkJfHwgZ3NfYnVmX2RhdGFfYXZhaWwocG9ydC0+cG9ydF93cml0ZV9idWYpID09IDAsCi0JCSZwb3J0LT5wb3J0X2xvY2ssIGZsYWdzLCBHU19DTE9TRV9USU1FT1VUICogSFopOwotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcG9ydC0+cG9ydF9sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycSgmcG9ydC0+cG9ydF9sb2NrKTsKKwkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQocG9ydC0+cG9ydF93cml0ZV93YWl0LAorCQkJCQlHU19XUklURV9GSU5JU0hFRF9FVkVOVF9TQUZFTFkocG9ydCksCisJCQkJCUdTX0NMT1NFX1RJTUVPVVQgKiBIWik7CisJCXNwaW5fbG9ja19pcnEoJnBvcnQtPnBvcnRfbG9jayk7CiAJfQogCiAJLyogZnJlZSBkaXNjb25uZWN0ZWQgcG9ydCBvbiBmaW5hbCBjbG9zZSAqLwpAQCAtOTEyLDcgKzg0OSw3IEBACiAJCXBvcnQtPnBvcnRfbnVtLCB0dHksIGZpbGUpOwogCiBleGl0OgotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPnBvcnRfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycSgmcG9ydC0+cG9ydF9sb2NrKTsKIAl1cChzZW0pOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcgYi9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKaW5kZXggZTI3Yjc5YS4uYjkzZDcxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZwpAQCAtNDcsMTIgKzQ3LDI5IEBACiAJICBjb250cm9sbGVyIGlzIG5lZWRlZC4gIEl0J3Mgc2FmZSB0byBzYXkgInkiIGV2ZW4gaWYgeW91cgogCSAgY29udHJvbGxlciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlLgogCi0JICBUaGlzIHN1cHBvcnRzIHRoZSBFSENJIGltcGxlbWVudGF0aW9uIGZyb20gVHJhbnNEaW1lbnNpb24gSW5jLgorCSAgVGhpcyBzdXBwb3J0cyB0aGUgRUhDSSBpbXBsZW1lbnRhdGlvbiB0aGF0J3Mgb3JpZ2luYWxseQorCSAgZnJvbSBBUkMsIGFuZCBoYXMgc2luY2UgY2hhbmdlZCBoYW5kcyBhIGZldyB0aW1lcy4KKworY29uZmlnIFVTQl9FSENJX1RUX05FV1NDSEVECisJYm9vbCAiSW1wcm92ZWQgVHJhbnNhY3Rpb24gVHJhbnNsYXRvciBzY2hlZHVsaW5nIChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gVVNCX0VIQ0lfSENEICYmIEVYUEVSSU1FTlRBTAorCS0tLWhlbHAtLS0KKwkgIFRoaXMgY2hhbmdlcyB0aGUgcGVyaW9kaWMgc2NoZWR1bGluZyBjb2RlIHRvIGZpbGwgbW9yZSBvZiB0aGUgbG93CisJICBhbmQgZnVsbCBzcGVlZCBiYW5kd2lkdGggYXZhaWxhYmxlIGZyb20gdGhlIFRyYW5zYWN0aW9uIFRyYW5zbGF0b3IKKwkgIChUVCkgaW4gVVNCIDIuMCBodWJzLiAgV2l0aG91dCB0aGlzLCBvbmx5IG9uZSB0cmFuc2ZlciB3aWxsIGJlCisJICBpc3N1ZWQgaW4gZWFjaCBtaWNyb2ZyYW1lLCBzaWduaWZpY2FudGx5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YKKwkgIHBlcmlvZGljIGxvdy9mdWxsc3BlZWQgdHJhbnNmZXJzIHBvc3NpYmxlLgorCisJICBJZiB5b3UgaGF2ZSBtdWx0aXBsZSBwZXJpb2RpYyBsb3cvZnVsbHNwZWVkIGRldmljZXMgY29ubmVjdGVkIHRvIGEKKwkgIGhpZ2hzcGVlZCBVU0IgaHViIHdoaWNoIGlzIGNvbm5lY3RlZCB0byBhIGhpZ2hzcGVlZCBVU0IgSG9zdAorCSAgQ29udHJvbGxlciwgYW5kIHNvbWUgb2YgdGhvc2UgZGV2aWNlcyB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseQorCSAgKHBvc3NpYmx5IGR1ZSB0byAiRU5PU1BDIiBvciAiLTI4IiBlcnJvcnMpLCBzYXkgWS4KKworCSAgSWYgdW5zdXJlLCBzYXkgTi4KIAogY29uZmlnIFVTQl9JU1AxMTZYX0hDRAogCXRyaXN0YXRlICJJU1AxMTZYIEhDRCBzdXBwb3J0IgogCWRlcGVuZHMgb24gVVNCCi0JZGVmYXVsdCBOCiAJLS0taGVscC0tLQogCSAgVGhlIElTUDExNjAgYW5kIElTUDExNjEgY2hpcHMgYXJlIFVTQiBob3N0IGNvbnRyb2xsZXJzLiBFbmFibGUgdGhpcwogCSAgb3B0aW9uIGlmIHlvdXIgYm9hcmQgaGFzIHRoaXMgY2hpcC4gSWYgdW5zdXJlLCBzYXkgTi4KQEAgLTEyNyw3ICsxNDQsNiBAQAogY29uZmlnIFVTQl9TTDgxMV9IQ0QKIAl0cmlzdGF0ZSAiU0w4MTFIUyBIQ0Qgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFVTQgotCWRlZmF1bHQgTgogCWhlbHAKIAkgIFRoZSBTTDgxMUhTIGlzIGEgc2luZ2xlLXBvcnQgVVNCIGNvbnRyb2xsZXIgdGhhdCBzdXBwb3J0cyBlaXRoZXIKIAkgIGhvc3Qgc2lkZSBvciBwZXJpcGhlcmFsIHNpZGUgcm9sZXMuICBFbmFibGUgdGhpcyBvcHRpb24gaWYgeW91cgpAQCAtMTQwLDcgKzE1Niw2IEBACiBjb25maWcgVVNCX1NMODExX0NTCiAJdHJpc3RhdGUgIkNGL1BDTUNJQSBzdXBwb3J0IGZvciBTTDgxMUhTIEhDRCIKIAlkZXBlbmRzIG9uIFVTQl9TTDgxMV9IQ0QgJiYgUENNQ0lBCi0JZGVmYXVsdCBOCiAJaGVscAogCSAgV3JhcHMgYSBQQ01DSUEgZHJpdmVyIGFyb3VuZCB0aGUgU0w4MTFIUyBIQ0QsIHN1cHBvcnRpbmcgdGhlIFJBVE9DCiAJICBSRVgtQ0ZVMVUgQ0YgY2FyZCAob2Z0ZW4gdXNlZCB3aXRoIFBEQXMpLiAgSWYgdW5zdXJlLCBzYXkgTi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdTF4eHguYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdTF4eHguYwppbmRleCA2M2VhZGVlLi45YjQ2OTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXUxeHh4LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLWF1MXh4eC5jCkBAIC0xNiwxMCArMTYsNiBAQAogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTEwMDAuaD4KIAotI2lmbmRlZiBDT05GSUdfU09DX0FVMTIwMAotI2Vycm9yICJ0aGlzIEFsY2hlbXkgY2hpcCBkb2Vzbid0IGhhdmUgRUhDSSIKLSNlbHNlCQkJCS8qIEF1MTIwMCAqLwotCiAjZGVmaW5lIFVTQl9IT1NUX0NPTkZJRyAgIChVU0JfTVNSX0JBU0UgKyBVU0JfTVNSX01DRkcpCiAjZGVmaW5lIFVTQl9NQ0ZHX1BGRU4gICAgICgxPDwzMSkKICNkZWZpbmUgVVNCX01DRkdfUkRDT01CICAgKDE8PDMwKQpAQCAtMjcyLDYgKzI2OCw4IEBACiAJcmV0dXJuIDA7CiB9CiAqLworTU9EVUxFX0FMSUFTKCJhdTF4eHgtZWhjaSIpOworLyogRklYTUUgdXNlICJzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIiAqLwogc3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIGVoY2lfaGNkX2F1MXh4eF9kcml2ZXIgPSB7CiAJLm5hbWUgPSAiYXUxeHh4LWVoY2kiLAogCS5idXMgPSAmcGxhdGZvcm1fYnVzX3R5cGUsCkBAIC0yODAsMTggKzI3OCwzIEBACiAJLyouc3VzcGVuZCAgICAgID0gZWhjaV9oY2RfYXUxeHh4X2Rydl9zdXNwZW5kLCAqLwogCS8qLnJlc3VtZSAgICAgICA9IGVoY2lfaGNkX2F1MXh4eF9kcnZfcmVzdW1lLCAqLwogfTsKLQotc3RhdGljIGludCBfX2luaXQgZWhjaV9oY2RfYXUxeHh4X2luaXQodm9pZCkKLXsKLQlwcl9kZWJ1ZyhEUklWRVJfSU5GTyAiIChBdTF4eHgpXG4iKTsKLQotCXJldHVybiBkcml2ZXJfcmVnaXN0ZXIoJmVoY2lfaGNkX2F1MXh4eF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZWhjaV9oY2RfYXUxeHh4X2NsZWFudXAodm9pZCkKLXsKLQlkcml2ZXJfdW5yZWdpc3RlcigmZWhjaV9oY2RfYXUxeHh4X2RyaXZlcik7Ci19Ci0KLW1vZHVsZV9pbml0KGVoY2lfaGNkX2F1MXh4eF9pbml0KTsKLW1vZHVsZV9leGl0KGVoY2lfaGNkX2F1MXh4eF9jbGVhbnVwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuYwppbmRleCBmOTg1ZjEyMS4uYTQ5YTY4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWZzbC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuYwpAQCAtMzI0LDQzICszMjQsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWhjaV9mc2xfZHJfZHJpdmVyID0geworTU9EVUxFX0FMSUFTKCJmc2wtZWhjaSIpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaGNpX2ZzbF9kcml2ZXIgPSB7CiAJLnByb2JlID0gZWhjaV9mc2xfZHJ2X3Byb2JlLAogCS5yZW1vdmUgPSBlaGNpX2ZzbF9kcnZfcmVtb3ZlLAogCS5kcml2ZXIgPSB7Ci0JCSAgIC5uYW1lID0gImZzbC11c2IyLWRyIiwKKwkJICAgLm5hbWUgPSAiZnNsLWVoY2kiLAogCQkgICB9LAogfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWhjaV9mc2xfbXBoX2RyaXZlciA9IHsKLQkucHJvYmUgPSBlaGNpX2ZzbF9kcnZfcHJvYmUsCi0JLnJlbW92ZSA9IGVoY2lfZnNsX2Rydl9yZW1vdmUsCi0JLmRyaXZlciA9IHsKLQkJICAgLm5hbWUgPSAiZnNsLXVzYjItbXBoIiwKLQkJICAgfSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGVoY2lfZnNsX2luaXQodm9pZCkKLXsKLQlpbnQgcmV0dmFsOwotCi0JcHJfZGVidWcoIiVzOiBibG9jayBzaXplczogcWggJVpkIHF0ZCAlWmQgaXRkICVaZCBzaXRkICVaZFxuIiwKLQkJIGhjZF9uYW1lLAotCQkgc2l6ZW9mKHN0cnVjdCBlaGNpX3FoKSwgc2l6ZW9mKHN0cnVjdCBlaGNpX3F0ZCksCi0JCSBzaXplb2Yoc3RydWN0IGVoY2lfaXRkKSwgc2l6ZW9mKHN0cnVjdCBlaGNpX3NpdGQpKTsKLQotCXJldHZhbCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZWhjaV9mc2xfZHJfZHJpdmVyKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0dmFsOwotCi0JcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmZWhjaV9mc2xfbXBoX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBlaGNpX2ZzbF9jbGVhbnVwKHZvaWQpCi17Ci0JcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmVoY2lfZnNsX21waF9kcml2ZXIpOwotCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZlaGNpX2ZzbF9kcl9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChlaGNpX2ZzbF9pbml0KTsKLW1vZHVsZV9leGl0KGVoY2lfZnNsX2NsZWFudXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLWhjZC5jCmluZGV4IDc5ZjJkOGIuLjliMzdlNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaGNkLmMKQEAgLTg4OSwxOSArODg5LDU5IEBACiAKICNpZmRlZiBDT05GSUdfUENJCiAjaW5jbHVkZSAiZWhjaS1wY2kuYyIKLSNkZWZpbmUJRUhDSV9CVVNfR0xVRUQKKyNkZWZpbmUJUENJX0RSSVZFUgkJZWhjaV9wY2lfZHJpdmVyCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19QUENfODN4eAogI2luY2x1ZGUgImVoY2ktZnNsLmMiCi0jZGVmaW5lCUVIQ0lfQlVTX0dMVUVECisjZGVmaW5lCVBMQVRGT1JNX0RSSVZFUgkJZWhjaV9mc2xfZHJpdmVyCiAjZW5kaWYKIAotI2lmZGVmIENPTkZJR19TT0NfQVUxWDAwCisjaWZkZWYgQ09ORklHX1NPQ19BVTEyMDAKICNpbmNsdWRlICJlaGNpLWF1MXh4eC5jIgotI2RlZmluZQlFSENJX0JVU19HTFVFRAorI2RlZmluZQlQTEFURk9STV9EUklWRVIJCWVoY2lfaGNkX2F1MXh4eF9kcml2ZXIKICNlbmRpZgogCi0jaWZuZGVmCUVIQ0lfQlVTX0dMVUVECisjaWYgIWRlZmluZWQoUENJX0RSSVZFUikgJiYgIWRlZmluZWQoUExBVEZPUk1fRFJJVkVSKQogI2Vycm9yICJtaXNzaW5nIGJ1cyBnbHVlIGZvciBlaGNpLWhjZCIKICNlbmRpZgorCitzdGF0aWMgaW50IF9faW5pdCBlaGNpX2hjZF9pbml0KHZvaWQpCit7CisJaW50IHJldHZhbCA9IDA7CisKKwlwcl9kZWJ1ZygiJXM6IGJsb2NrIHNpemVzOiBxaCAlWmQgcXRkICVaZCBpdGQgJVpkIHNpdGQgJVpkXG4iLAorCQkgaGNkX25hbWUsCisJCSBzaXplb2Yoc3RydWN0IGVoY2lfcWgpLCBzaXplb2Yoc3RydWN0IGVoY2lfcXRkKSwKKwkJIHNpemVvZihzdHJ1Y3QgZWhjaV9pdGQpLCBzaXplb2Yoc3RydWN0IGVoY2lfc2l0ZCkpOworCisjaWZkZWYgUExBVEZPUk1fRFJJVkVSCisJcmV0dmFsID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZQTEFURk9STV9EUklWRVIpOworCWlmIChyZXR2YWwgPCAwKQorCQlyZXR1cm4gcmV0dmFsOworI2VuZGlmCisKKyNpZmRlZiBQQ0lfRFJJVkVSCisJcmV0dmFsID0gcGNpX3JlZ2lzdGVyX2RyaXZlcigmUENJX0RSSVZFUik7CisJaWYgKHJldHZhbCA8IDApIHsKKyNpZmRlZiBQTEFURk9STV9EUklWRVIKKwkJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJlBMQVRGT1JNX0RSSVZFUik7CisjZW5kaWYKKwl9CisjZW5kaWYKKworCXJldHVybiByZXR2YWw7Cit9Cittb2R1bGVfaW5pdChlaGNpX2hjZF9pbml0KTsKKworc3RhdGljIHZvaWQgX19leGl0IGVoY2lfaGNkX2NsZWFudXAodm9pZCkKK3sKKyNpZmRlZiBQTEFURk9STV9EUklWRVIKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmUExBVEZPUk1fRFJJVkVSKTsKKyNlbmRpZgorI2lmZGVmIFBDSV9EUklWRVIKKwlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJlBDSV9EUklWRVIpOworI2VuZGlmCit9Cittb2R1bGVfZXhpdChlaGNpX2hjZF9jbGVhbnVwKTsKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLXBjaS5jCmluZGV4IGExYmQyYmUuLmNhZGZmYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1wY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktcGNpLmMKQEAgLTc2LDYgKzc2LDMwIEBACiAJZGJnX2hjc19wYXJhbXMoZWhjaSwgInJlc2V0Iik7CiAJZGJnX2hjY19wYXJhbXMoZWhjaSwgInJlc2V0Iik7CiAKKyAgICAgICAgLyogZWhjaV9pbml0KCkgY2F1c2VzIG1lbW9yeSBmb3IgRE1BIHRyYW5zZmVycyB0byBiZQorICAgICAgICAgKiBhbGxvY2F0ZWQuICBUaHVzLCBhbnkgdmVuZG9yLXNwZWNpZmljIHdvcmthcm91bmRzIGJhc2VkIG9uCisgICAgICAgICAqIGxpbWl0aW5nIHRoZSB0eXBlIG9mIG1lbW9yeSB1c2VkIGZvciBETUEgdHJhbnNmZXJzIG11c3QKKyAgICAgICAgICogaGFwcGVuIGJlZm9yZSBlaGNpX2luaXQoKSBpcyBjYWxsZWQuICovCisJc3dpdGNoIChwZGV2LT52ZW5kb3IpIHsKKwljYXNlIFBDSV9WRU5ET1JfSURfTlZJRElBOgorCQkvKiBOVmlkaWEgcmVwb3J0cyB0aGF0IGNlcnRhaW4gY2hpcHMgZG9uJ3QgaGFuZGxlCisJCSAqIFFILCBJVEQsIG9yIFNJVEQgYWRkcmVzc2VzIGFib3ZlIDJHQi4gIChCdXQgVEQsCisJCSAqIGRhdGEgYnVmZmVyLCBhbmQgcGVyaW9kaWMgc2NoZWR1bGUgYXJlIG5vcm1hbC4pCisJCSAqLworCQlzd2l0Y2ggKHBkZXYtPmRldmljZSkgeworCQljYXNlIDB4MDAzYzoJLyogTUNQMDQgKi8KKwkJY2FzZSAweDAwNWI6CS8qIENLODA0ICovCisJCWNhc2UgMHgwMGQ4OgkvKiBDSzggKi8KKwkJY2FzZSAweDAwZTg6CS8qIENLOFMgKi8KKwkJCWlmIChwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGRldiwKKwkJCQkJCURNQV8zMUJJVF9NQVNLKSA8IDApCisJCQkJZWhjaV93YXJuKGVoY2ksICJjYW4ndCBlbmFibGUgTlZpZGlhICIKKwkJCQkJIndvcmthcm91bmQgZm9yID4yR0IgUkFNXG4iKTsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwogCS8qIGNhY2hlIHRoaXMgcmVhZG9ubHkgZGF0YTsgbWluaW1pemUgY2hpcCByZWFkcyAqLwogCWVoY2ktPmhjc19wYXJhbXMgPSByZWFkbCgmZWhjaS0+Y2Fwcy0+aGNzX3BhcmFtcyk7CiAKQEAgLTg4LDggKzExMiw2IEBACiAJaWYgKHJldHZhbCkKIAkJcmV0dXJuIHJldHZhbDsKIAotCS8qIE5PVEU6ICBvbmx5IHRoZSBwYXJ0cyBiZWxvdyB0aGlzIGxpbmUgYXJlIFBDSS1zcGVjaWZpYyAqLwotCiAJc3dpdGNoIChwZGV2LT52ZW5kb3IpIHsKIAljYXNlIFBDSV9WRU5ET1JfSURfVERJOgogCQlpZiAocGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfVERJX0VIQ0kpIHsKQEAgLTEwNywxOSArMTI5LDYgQEAKIAkJYnJlYWs7CiAJY2FzZSBQQ0lfVkVORE9SX0lEX05WSURJQToKIAkJc3dpdGNoIChwZGV2LT5kZXZpY2UpIHsKLQkJLyogTlZpZGlhIHJlcG9ydHMgdGhhdCBjZXJ0YWluIGNoaXBzIGRvbid0IGhhbmRsZQotCQkgKiBRSCwgSVRELCBvciBTSVREIGFkZHJlc3NlcyBhYm92ZSAyR0IuICAoQnV0IFRELAotCQkgKiBkYXRhIGJ1ZmZlciwgYW5kIHBlcmlvZGljIHNjaGVkdWxlIGFyZSBub3JtYWwuKQotCQkgKi8KLQkJY2FzZSAweDAwM2M6CS8qIE1DUDA0ICovCi0JCWNhc2UgMHgwMDViOgkvKiBDSzgwNCAqLwotCQljYXNlIDB4MDBkODoJLyogQ0s4ICovCi0JCWNhc2UgMHgwMGU4OgkvKiBDSzhTICovCi0JCQlpZiAocGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsCi0JCQkJCQlETUFfMzFCSVRfTUFTSykgPCAwKQotCQkJCWVoY2lfd2FybihlaGNpLCAiY2FuJ3QgZW5hYmxlIE5WaWRpYSAiCi0JCQkJCSJ3b3JrYXJvdW5kIGZvciA+MkdCIFJBTVxuIik7Ci0JCQlicmVhazsKIAkJLyogU29tZSBORm9yY2UyIGNoaXBzIGhhdmUgcHJvYmxlbXMgd2l0aCBzZWxlY3RpdmUgc3VzcGVuZDsKIAkJICogZml4ZWQgaW4gbmV3ZXIgc2lsaWNvbi4KIAkJICovCkBAIC0zNzAsMjMgKzM3OSwzIEBACiAJLnJlc3VtZSA9CXVzYl9oY2RfcGNpX3Jlc3VtZSwKICNlbmRpZgogfTsKLQotc3RhdGljIGludCBfX2luaXQgZWhjaV9oY2RfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAodXNiX2Rpc2FibGVkKCkpCi0JCXJldHVybiAtRU5PREVWOwotCi0JcHJfZGVidWcoIiVzOiBibG9jayBzaXplczogcWggJVpkIHF0ZCAlWmQgaXRkICVaZCBzaXRkICVaZFxuIiwKLQkJaGNkX25hbWUsCi0JCXNpemVvZihzdHJ1Y3QgZWhjaV9xaCksIHNpemVvZihzdHJ1Y3QgZWhjaV9xdGQpLAotCQlzaXplb2Yoc3RydWN0IGVoY2lfaXRkKSwgc2l6ZW9mKHN0cnVjdCBlaGNpX3NpdGQpKTsKLQotCXJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZlaGNpX3BjaV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoZWhjaV9oY2RfcGNpX2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZWhjaV9oY2RfcGNpX2NsZWFudXAodm9pZCkKLXsKLQlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmVoY2lfcGNpX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdChlaGNpX2hjZF9wY2lfY2xlYW51cCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktc2NoZWQuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1zY2hlZC5jCmluZGV4IDU4NzE5NDQuLjQ4NTk5MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1zY2hlZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1zY2hlZC5jCkBAIC0xNjMsNiArMTYzLDE5MCBAQAogCQlyZXR1cm4gMTsKIH0KIAorI2lmZGVmIENPTkZJR19VU0JfRUhDSV9UVF9ORVdTQ0hFRAorCisvKiBXaGljaCB1ZnJhbWUgZG9lcyB0aGUgbG93L2Z1bGxzcGVlZCB0cmFuc2ZlciBzdGFydCBpbj8KKyAqCisgKiBUaGUgcGFyYW1ldGVyIGlzIHRoZSBtYXNrIG9mIHNzcGxpdHMgaW4gIkgtZnJhbWUiIHRlcm1zCisgKiBhbmQgdGhpcyByZXR1cm5zIHRoZSB0cmFuc2ZlciBzdGFydCB1ZnJhbWUgaW4gIkItZnJhbWUiIHRlcm1zLAorICogd2hpY2ggYWxsb3dzIGJvdGggdG8gbWF0Y2gsIGUuZy4gYSBzc3BsaXQgaW4gIkgtZnJhbWUiIHVmcmFtZSAwCisgKiB3aWxsIGNhdXNlIGEgdHJhbnNmZXIgaW4gIkItZnJhbWUiIHVmcmFtZSAwLiAgIkItZnJhbWVzIiBsYWcKKyAqICJILWZyYW1lcyIgYnkgMSB1ZnJhbWUuICBTZWUgdGhlIEVIQ0kgc3BlYyBzZWMgNC41IGFuZCBmaWd1cmUgNC43LgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgdHRfc3RhcnRfdWZyYW1lKHN0cnVjdCBlaGNpX2hjZCAqZWhjaSwgX19sZTMyIG1hc2spCit7CisJdW5zaWduZWQgY2hhciBzbWFzayA9IFFIX1NNQVNLICYgbGUzMl90b19jcHUobWFzayk7CisJaWYgKCFzbWFzaykgeworCQllaGNpX2VycihlaGNpLCAiaW52YWxpZCBlbXB0eSBzbWFzayFcbiIpOworCQkvKiB1ZnJhbWUgNyBjYW4ndCBoYXZlIGJ3IHNvIHRoaXMgd2lsbCBpbmRpY2F0ZSBmYWlsdXJlICovCisJCXJldHVybiA3OworCX0KKwlyZXR1cm4gZmZzKHNtYXNrKSAtIDE7Cit9CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyCittYXhfdHRfdXNlY3NbXSA9IHsgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMzAsIDAgfTsKKworLyogY2FycnlvdmVyIGxvdy9mdWxsc3BlZWQgYmFuZHdpZHRoIHRoYXQgY3Jvc3NlcyB1ZnJhbWUgYm91bmRyaWVzICovCitzdGF0aWMgaW5saW5lIHZvaWQgY2FycnlvdmVyX3R0X2JhbmR3aWR0aCh1bnNpZ25lZCBzaG9ydCB0dF91c2Vjc1s4XSkKK3sKKwlpbnQgaTsKKwlmb3IgKGk9MDsgaTw3OyBpKyspIHsKKwkJaWYgKG1heF90dF91c2Vjc1tpXSA8IHR0X3VzZWNzW2ldKSB7CisJCQl0dF91c2Vjc1tpKzFdICs9IHR0X3VzZWNzW2ldIC0gbWF4X3R0X3VzZWNzW2ldOworCQkJdHRfdXNlY3NbaV0gPSBtYXhfdHRfdXNlY3NbaV07CisJCX0KKwl9Cit9CisKKy8qIEhvdyBtYW55IG9mIHRoZSB0dCdzIHBlcmlvZGljIGRvd25zdHJlYW0gMTAwMCB1c2VjcyBhcmUgYWxsb2NhdGVkPworICoKKyAqIFdoaWxlIHRoaXMgbWVhc3VyZXMgdGhlIGJhbmR3aWR0aCBpbiB0ZXJtcyBvZiB1c2Vjcy91ZnJhbWUsCisgKiB0aGUgbG93L2Z1bGxzcGVlZCBidXMgaGFzIG5vIG5vdGlvbiBvZiB1ZnJhbWVzLCBzbyBhbnkgcGFydGljdWxhcgorICogbG93L2Z1bGxzcGVlZCB0cmFuc2ZlciBjYW4gImNhcnJ5IG92ZXIiIGZyb20gb25lIHVmcmFtZSB0byB0aGUgbmV4dCwKKyAqIHNpbmNlIHRoZSBUVCBqdXN0IHBlcmZvcm1zIGRvd25zdHJlYW0gdHJhbnNmZXJzIGluIHNlcXVlbmNlLgorICoKKyAqIEZvciBleGFtcGxlIHR3byBzZXBlcmF0ZSAxMDAgdXNlYyB0cmFuc2ZlcnMgY2FuIHN0YXJ0IGluIHRoZSBzYW1lIHVmcmFtZSwKKyAqIGFuZCB0aGUgc2Vjb25kIG9uZSB3b3VsZCAiY2Fycnkgb3ZlciIgNzUgdXNlY3MgaW50byB0aGUgbmV4dCB1ZnJhbWUuCisgKi8KK3N0YXRpYyB2b2lkCitwZXJpb2RpY190dF91c2VjcyAoCisJc3RydWN0IGVoY2lfaGNkICplaGNpLAorCXN0cnVjdCB1c2JfZGV2aWNlICpkZXYsCisJdW5zaWduZWQgZnJhbWUsCisJdW5zaWduZWQgc2hvcnQgdHRfdXNlY3NbOF0KKykKK3sKKwlfX2xlMzIJCQkqaHdfcCA9ICZlaGNpLT5wZXJpb2RpYyBbZnJhbWVdOworCXVuaW9uIGVoY2lfc2hhZG93CSpxID0gJmVoY2ktPnBzaGFkb3cgW2ZyYW1lXTsKKwl1bnNpZ25lZCBjaGFyCQl1ZjsKKworCW1lbXNldCh0dF91c2VjcywgMCwgMTYpOworCisJd2hpbGUgKHEtPnB0cikgeworCQlzd2l0Y2ggKFFfTkVYVF9UWVBFKCpod19wKSkgeworCQljYXNlIFFfVFlQRV9JVEQ6CisJCQlod19wID0gJnEtPml0ZC0+aHdfbmV4dDsKKwkJCXEgPSAmcS0+aXRkLT5pdGRfbmV4dDsKKwkJCWNvbnRpbnVlOworCQljYXNlIFFfVFlQRV9RSDoKKwkJCWlmIChzYW1lX3R0KGRldiwgcS0+cWgtPmRldikpIHsKKwkJCQl1ZiA9IHR0X3N0YXJ0X3VmcmFtZShlaGNpLCBxLT5xaC0+aHdfaW5mbzIpOworCQkJCXR0X3VzZWNzW3VmXSArPSBxLT5xaC0+dHRfdXNlY3M7CisJCQl9CisJCQlod19wID0gJnEtPnFoLT5od19uZXh0OworCQkJcSA9ICZxLT5xaC0+cWhfbmV4dDsKKwkJCWNvbnRpbnVlOworCQljYXNlIFFfVFlQRV9TSVREOgorCQkJaWYgKHNhbWVfdHQoZGV2LCBxLT5zaXRkLT51cmItPmRldikpIHsKKwkJCQl1ZiA9IHR0X3N0YXJ0X3VmcmFtZShlaGNpLCBxLT5zaXRkLT5od191ZnJhbWUpOworCQkJCXR0X3VzZWNzW3VmXSArPSBxLT5zaXRkLT5zdHJlYW0tPnR0X3VzZWNzOworCQkJfQorCQkJaHdfcCA9ICZxLT5zaXRkLT5od19uZXh0OworCQkJcSA9ICZxLT5zaXRkLT5zaXRkX25leHQ7CisJCQljb250aW51ZTsKKwkJLy8gY2FzZSBRX1RZUEVfRlNUTjoKKwkJZGVmYXVsdDoKKwkJCWVoY2lfZGJnKGVoY2ksCisJCQkJICAiaWdub3JpbmcgcGVyaW9kaWMgZnJhbWUgJWQgRlNUTlxuIiwgZnJhbWUpOworCQkJaHdfcCA9ICZxLT5mc3RuLT5od19uZXh0OworCQkJcSA9ICZxLT5mc3RuLT5mc3RuX25leHQ7CisJCX0KKwl9CisKKwljYXJyeW92ZXJfdHRfYmFuZHdpZHRoKHR0X3VzZWNzKTsKKworCWlmIChtYXhfdHRfdXNlY3NbN10gPCB0dF91c2Vjc1s3XSkKKwkJZWhjaV9lcnIoZWhjaSwgImZyYW1lICVkIHR0IHNjaGVkIG92ZXJydW46ICVkIHVzZWNzXG4iLAorCQkJZnJhbWUsIHR0X3VzZWNzWzddIC0gbWF4X3R0X3VzZWNzWzddKTsKK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmIHRoZSBkZXZpY2UncyB0dCdzIGRvd25zdHJlYW0gYnVzIGlzIGF2YWlsYWJsZSBmb3IgYQorICogcGVyaW9kaWMgdHJhbnNmZXIgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGggKHVzZWNzKSwgc3RhcnRpbmcgYXQgdGhlCisgKiBzcGVjaWZpZWQgZnJhbWUvdWZyYW1lLiAgTm90ZSB0aGF0IChhcyBzdW1tYXJpemVkIGluIHNlY3Rpb24gMTEuMTkKKyAqIG9mIHRoZSB1c2IgMi4wIHNwZWMpIFRUcyBjYW4gYnVmZmVyIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBmb3IgZWFjaAorICogdWZyYW1lLgorICoKKyAqIFRoZSB1ZnJhbWUgcGFyYW1ldGVyIGlzIHdoZW4gdGhlIGZ1bGxzcGVlZC9sb3dzcGVlZCB0cmFuc2ZlcgorICogc2hvdWxkIGJlIGV4ZWN1dGVkIGluICJCLWZyYW1lIiB0ZXJtcywgd2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlCisgKiBoaWdoc3BlZWQgc3NwbGl0J3MgdWZyYW1lICh3aGljaCBpcyBpbiAiSC1mcmFtZSIgdGVybXMpLiAgRm9yIGV4YW1wbGUKKyAqIGEgc3NwbGl0IGluICJILWZyYW1lIiAwIGNhdXNlcyBhIHRyYW5zZmVyIGluICJCLWZyYW1lIiAwLgorICogU2VlIHRoZSBFSENJIHNwZWMgc2VjIDQuNSBhbmQgZmlnIDQuNy4KKyAqCisgKiBUaGlzIGNoZWNrcyBpZiB0aGUgZnVsbC9sb3dzcGVlZCBidXMsIGF0IHRoZSBzcGVjaWZpZWQgc3RhcnRpbmcgdWZyYW1lLAorICogaGFzIHRoZSBzcGVjaWZpZWQgYmFuZHdpZHRoIGF2YWlsYWJsZSwgYWNjb3JkaW5nIHRvIHJ1bGVzIGxpc3RlZAorICogaW4gVVNCIDIuMCBzcGVjIHNlY3Rpb24gMTEuMTguMSBmaWcgMTEtNjAuCisgKgorICogVGhpcyBkb2VzIG5vdCBjaGVjayBpZiB0aGUgdHJhbnNmZXIgd291bGQgZXhjZWVkIHRoZSBtYXggc3NwbGl0CisgKiBsaW1pdCBvZiAxNiwgc3BlY2lmaWVkIGluIFVTQiAyLjAgc3BlYyBzZWN0aW9uIDExLjE4LjQgcmVxdWlyZW1lbnQgIzQsCisgKiBzaW5jZSBwcm9wZXIgc2NoZWR1bGluZyBsaW1pdHMgc3NwbGl0cyB0byBsZXNzIHRoYW4gMTYgcGVyIHVmcmFtZS4KKyAqLworc3RhdGljIGludCB0dF9hdmFpbGFibGUgKAorCXN0cnVjdCBlaGNpX2hjZAkJKmVoY2ksCisJdW5zaWduZWQJCXBlcmlvZCwKKwlzdHJ1Y3QgdXNiX2RldmljZQkqZGV2LAorCXVuc2lnbmVkCQlmcmFtZSwKKwl1bnNpZ25lZAkJdWZyYW1lLAorCXUxNgkJCXVzZWNzCispCit7CisJaWYgKChwZXJpb2QgPT0gMCkgfHwgKHVmcmFtZSA+PSA3KSkJLyogZXJyb3IgKi8KKwkJcmV0dXJuIDA7CisKKwlmb3IgKDsgZnJhbWUgPCBlaGNpLT5wZXJpb2RpY19zaXplOyBmcmFtZSArPSBwZXJpb2QpIHsKKwkJdW5zaWduZWQgc2hvcnQgdHRfdXNlY3NbOF07CisKKwkJcGVyaW9kaWNfdHRfdXNlY3MgKGVoY2ksIGRldiwgZnJhbWUsIHR0X3VzZWNzKTsKKworCQllaGNpX3ZkYmcoZWhjaSwgInR0IGZyYW1lICVkIGNoZWNrICVkIHVzZWNzIHN0YXJ0IHVmcmFtZSAlZCBpbiIKKwkJCSIgc2NoZWR1bGUgJWQvJWQvJWQvJWQvJWQvJWQvJWQvJWRcbiIsCisJCQlmcmFtZSwgdXNlY3MsIHVmcmFtZSwKKwkJCXR0X3VzZWNzWzBdLCB0dF91c2Vjc1sxXSwgdHRfdXNlY3NbMl0sIHR0X3VzZWNzWzNdLAorCQkJdHRfdXNlY3NbNF0sIHR0X3VzZWNzWzVdLCB0dF91c2Vjc1s2XSwgdHRfdXNlY3NbN10pOworCisJCWlmIChtYXhfdHRfdXNlY3NbdWZyYW1lXSA8PSB0dF91c2Vjc1t1ZnJhbWVdKSB7CisJCQllaGNpX3ZkYmcoZWhjaSwgImZyYW1lICVkIHVmcmFtZSAlZCBmdWxseSBzY2hlZHVsZWRcbiIsCisJCQkJZnJhbWUsIHVmcmFtZSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCS8qIHNwZWNpYWwgY2FzZSBmb3IgaXNvYyB0cmFuc2ZlcnMgbGFyZ2VyIHRoYW4gMTI1dXM6CisJCSAqIHRoZSBmaXJzdCBhbmQgZWFjaCBzdWJzZXF1ZW50IGZ1bGx5IHVzZWQgdWZyYW1lCisJCSAqIG11c3QgYmUgZW1wdHksIHNvIGFzIHRvIG5vdCBpbGxlZ2FsbHkgZGVsYXkKKwkJICogYWxyZWFkeSBzY2hlZHVsZWQgdHJhbnNhY3Rpb25zCisJCSAqLworCQlpZiAoMTI1IDwgdXNlY3MpIHsKKwkJCWludCB1ZnMgPSAodXNlY3MgLyAxMjUpIC0gMTsKKwkJCWludCBpOworCQkJZm9yIChpID0gdWZyYW1lOyBpIDwgKHVmcmFtZSArIHVmcykgJiYgaSA8IDg7IGkrKykKKwkJCQlpZiAoMCA8IHR0X3VzZWNzW2ldKSB7CisJCQkJCWVoY2lfdmRiZyhlaGNpLAorCQkJCQkJIm11bHRpLXVmcmFtZSB4ZmVyIGNhbid0IGZpdCAiCisJCQkJCQkiaW4gZnJhbWUgJWQgdWZyYW1lICVkXG4iLAorCQkJCQkJZnJhbWUsIGkpOworCQkJCQlyZXR1cm4gMDsKKwkJCQl9CisJCX0KKworCQl0dF91c2Vjc1t1ZnJhbWVdICs9IHVzZWNzOworCisJCWNhcnJ5b3Zlcl90dF9iYW5kd2lkdGgodHRfdXNlY3MpOworCisJCS8qIGZhaWwgaWYgdGhlIGNhcnJ5b3ZlciBwdXNoZWQgYncgcGFzdCB0aGUgbGFzdCB1ZnJhbWUncyBsaW1pdCAqLworCQlpZiAobWF4X3R0X3VzZWNzWzddIDwgdHRfdXNlY3NbN10pIHsKKwkJCWVoY2lfdmRiZyhlaGNpLAorCQkJCSJ0dCB1bmF2YWlsYWJsZSB1c2VjcyAlZCBmcmFtZSAlZCB1ZnJhbWUgJWRcbiIsCisJCQkJdXNlY3MsIGZyYW1lLCB1ZnJhbWUpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gMTsKK30KKworI2Vsc2UKKwogLyogcmV0dXJuIHRydWUgaWZmIHRoZSBkZXZpY2UncyB0cmFuc2FjdGlvbiB0cmFuc2xhdG9yIGlzIGF2YWlsYWJsZQogICogZm9yIGEgcGVyaW9kaWMgdHJhbnNmZXIgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBmcmFtZSwgdXNpbmcKICAqIGFsbCB0aGUgdWZyYW1lcyBpbiB0aGUgbWFzay4KQEAgLTIzNyw2ICs0MjEsOCBAQAogCXJldHVybiAxOwogfQogCisjZW5kaWYgLyogQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEICovCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIHN0YXRpYyBpbnQgZW5hYmxlX3BlcmlvZGljIChzdHJ1Y3QgZWhjaV9oY2QgKmVoY2kpCkBAIC00ODEsNyArNjY3LDcgQEAKICkKIHsKICAgICAJaW50CQlyZXR2YWwgPSAtRU5PU1BDOwotCXU4CQltYXNrOworCXU4CQltYXNrID0gMDsKIAogCWlmIChxaC0+Y191c2VjcyAmJiB1ZnJhbWUgPj0gNikJCS8qIEZTVE4gdGVycml0b3J5PyAqLwogCQlnb3RvIGRvbmU7CkBAIC00OTQsNiArNjgwLDI0IEBACiAJCWdvdG8gZG9uZTsKIAl9CiAKKyNpZmRlZiBDT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQKKwlpZiAodHRfYXZhaWxhYmxlIChlaGNpLCBxaC0+cGVyaW9kLCBxaC0+ZGV2LCBmcmFtZSwgdWZyYW1lLAorCQkJCXFoLT50dF91c2VjcykpIHsKKwkJdW5zaWduZWQgaTsKKworCQkvKiBUT0RPIDogdGhpcyBtYXkgbmVlZCBGU1ROIGZvciBTU1BMSVQgaW4gdWZyYW1lIDUuICovCisJCWZvciAoaT11ZnJhbWUrMTsgaTw4ICYmIGk8dWZyYW1lKzQ7IGkrKykKKwkJCWlmICghY2hlY2tfcGVyaW9kIChlaGNpLCBmcmFtZSwgaSwKKwkJCQkJCXFoLT5wZXJpb2QsIHFoLT5jX3VzZWNzKSkKKwkJCQlnb3RvIGRvbmU7CisJCQllbHNlCisJCQkJbWFzayB8PSAxIDw8IGk7CisKKwkJcmV0dmFsID0gMDsKKworCQkqY19tYXNrcCA9IGNwdV90b19sZTMyIChtYXNrIDw8IDgpOworCX0KKyNlbHNlCiAJLyogTWFrZSBzdXJlIHRoaXMgdHQncyBidWZmZXIgaXMgYWxzbyBhdmFpbGFibGUgZm9yIENTUExJVHMuCiAJICogV2UgcGVzc2ltaXplIGEgYml0OyBwcm9iYWJseSB0aGUgdHlwaWNhbCBmdWxsIHNwZWVkIGNhc2UKIAkgKiBkb2Vzbid0IG5lZWQgdGhlIHNlY29uZCBDU1BMSVQuCkBAIC01MTQsNiArNzE4LDcgQEAKIAkJCWdvdG8gZG9uZTsKIAkJcmV0dmFsID0gMDsKIAl9CisjZW5kaWYKIGRvbmU6CiAJcmV0dXJuIHJldHZhbDsKIH0KQEAgLTEwNDcsMTIgKzEyNTIsMjEgQEAKIAkJZnJhbWUgPSB1ZnJhbWUgPj4gMzsKIAkJdWYgPSB1ZnJhbWUgJiA3OwogCisjaWZkZWYgQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVECisJCS8qIFRoZSB0dCdzIGZ1bGxzcGVlZCBidXMgYmFuZHdpZHRoIG11c3QgYmUgYXZhaWxhYmxlLgorCQkgKiB0dF9hdmFpbGFibGUgc2NoZWR1bGluZyBndWFyYW50ZWVzIDEwKyUgZm9yIGNvbnRyb2wvYnVsay4KKwkJICovCisJCWlmICghdHRfYXZhaWxhYmxlIChlaGNpLCBwZXJpb2RfdWZyYW1lcyA8PCAzLAorCQkJCXN0cmVhbS0+dWRldiwgZnJhbWUsIHVmLCBzdHJlYW0tPnR0X3VzZWNzKSkKKwkJCXJldHVybiAwOworI2Vsc2UKIAkJLyogdHQgbXVzdCBiZSBpZGxlIGZvciBzdGFydChzKSwgYW55IGdhcCwgYW5kIGNzcGxpdC4KIAkJICogYXNzdW1lIHNjaGVkdWxpbmcgc2xvcCBsZWF2ZXMgMTArJSBmb3IgY29udHJvbC9idWxrLgogCQkgKi8KIAkJaWYgKCF0dF9ub19jb2xsaXNpb24gKGVoY2ksIHBlcmlvZF91ZnJhbWVzIDw8IDMsCiAJCQkJc3RyZWFtLT51ZGV2LCBmcmFtZSwgbWFzaykpCiAJCQlyZXR1cm4gMDsKKyNlbmRpZgogCiAJCS8qIGNoZWNrIHN0YXJ0cyAoT1VUIHVzZXMgbW9yZSB0aGFuIG9uZSkgKi8KIAkJbWF4X3VzZWQgPSAxMDAgLSBzdHJlYW0tPnVzZWNzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LWhjZC5jCmluZGV4IGU5OTIxMGIuLjE0Mzg2MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNngtaGNkLmMKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pc3AxMTZ4Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lzcDExNnguaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KIAogI2luY2x1ZGUgPGFzbS9pby5oPgpAQCAtNzgxLDcgKzc4MSw3IEBACiAJCWlmIChlcC0+YnJhbmNoIDwgUEVSSU9ESUNfU0laRSkKIAkJCWJyZWFrOwogCi0JCXJldCA9IGVwLT5icmFuY2ggPSBiYWxhbmNlKGlzcDExNngsIGVwLT5wZXJpb2QsIGVwLT5sb2FkKTsKKwkJZXAtPmJyYW5jaCA9IHJldCA9IGJhbGFuY2UoaXNwMTE2eCwgZXAtPnBlcmlvZCwgZXAtPmxvYWQpOwogCQlpZiAocmV0IDwgMCkKIAkJCWdvdG8gZmFpbDsKIAkJcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTEtaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3NsODExLWhjZC5jCmluZGV4IGE5MjM0MzAuLjZiNGJjM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTEtaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYwpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxsaW51eC91c2Jfc2w4MTEuaD4KKyNpbmNsdWRlIDxsaW51eC91c2Ivc2w4MTEuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KIAogI2luY2x1ZGUgPGFzbS9pby5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9zbDgxMV9jcy5jIGIvZHJpdmVycy91c2IvaG9zdC9zbDgxMV9jcy5jCmluZGV4IDMwMmFhMWUuLjU0ZjU1NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTFfY3MuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3NsODExX2NzLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDxwY21jaWEvY2lzcmVnLmg+CiAjaW5jbHVkZSA8cGNtY2lhL2RzLmg+CiAKLSNpbmNsdWRlIDxsaW51eC91c2Jfc2w4MTEuaD4KKyNpbmNsdWRlIDxsaW51eC91c2Ivc2w4MTEuaD4KIAogTU9EVUxFX0FVVEhPUigiQm90b25kIEJvdHlhbnN6a2kiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUkVYLUNGVTFVIFBDTUNJQSBkcml2ZXIgZm9yIDIuNiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC91aGNpLWRlYnVnLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktZGVidWcuYwppbmRleCBlMTIzOTMxLi42NjM3YTBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktZGVidWcuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktZGVidWcuYwpAQCAtOTgsNiArOTgsNyBAQAogCWNoYXIgKm91dCA9IGJ1ZjsKIAlzdHJ1Y3QgdWhjaV90ZCAqdGQ7CiAJaW50IGksIG5hY3RpdmUsIG5pbmFjdGl2ZTsKKwljaGFyICpwdHlwZTsKIAogCWlmIChsZW4gPCAyMDApCiAJCXJldHVybiAwOwpAQCAtMTEwLDEzICsxMTEsMTUgQEAKIAkJCSh1c2JfcGlwZWluKHVyYnAtPnVyYi0+cGlwZSkgPyAiSU4iIDogIk9VVCIpKTsKIAogCXN3aXRjaCAodXNiX3BpcGV0eXBlKHVyYnAtPnVyYi0+cGlwZSkpIHsKLQljYXNlIFBJUEVfSVNPQ0hST05PVVM6IG91dCArPSBzcHJpbnRmKG91dCwgIklTTyIpOyBicmVhazsKLQljYXNlIFBJUEVfSU5URVJSVVBUOiBvdXQgKz0gc3ByaW50ZihvdXQsICJJTlQiKTsgYnJlYWs7Ci0JY2FzZSBQSVBFX0JVTEs6IG91dCArPSBzcHJpbnRmKG91dCwgIkJMSyIpOyBicmVhazsKLQljYXNlIFBJUEVfQ09OVFJPTDogb3V0ICs9IHNwcmludGYob3V0LCAiQ1RMIik7IGJyZWFrOworCWNhc2UgUElQRV9JU09DSFJPTk9VUzogcHR5cGUgPSAiSVNPIjsgYnJlYWs7CisJY2FzZSBQSVBFX0lOVEVSUlVQVDogcHR5cGUgPSAiSU5UIjsgYnJlYWs7CisJY2FzZSBQSVBFX0JVTEs6IHB0eXBlID0gIkJMSyI7IGJyZWFrOworCWRlZmF1bHQ6CisJY2FzZSBQSVBFX0NPTlRST0w6IHB0eXBlID0gIkNUTCI7IGJyZWFrOwogCX0KIAotCW91dCArPSBzcHJpbnRmKG91dCwgIiVzIiwgKHVyYnAtPmZzYnIgPyAiIEZTQlIiIDogIiIpKTsKKwlvdXQgKz0gc3ByaW50ZihvdXQsICIlcyVzIiwgcHR5cGUsICh1cmJwLT5mc2JyID8gIiBGU0JSIiA6ICIiKSk7CisJb3V0ICs9IHNwcmludGYob3V0LCAiIEFjdGxlbj0lZCIsIHVyYnAtPnVyYi0+YWN0dWFsX2xlbmd0aCk7CiAKIAlpZiAodXJicC0+dXJiLT5zdGF0dXMgIT0gLUVJTlBST0dSRVNTKQogCQlvdXQgKz0gc3ByaW50ZihvdXQsICIgU3RhdHVzPSVkIiwgdXJicC0+dXJiLT5zdGF0dXMpOwpAQCAtMTI0LDcgKzEyNyw4IEBACiAKIAlpID0gbmFjdGl2ZSA9IG5pbmFjdGl2ZSA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0ZCwgJnVyYnAtPnRkX2xpc3QsIGxpc3QpIHsKLQkJaWYgKCsraSA8PSAxMCB8fCBkZWJ1ZyA+IDIpIHsKKwkJaWYgKHVyYnAtPnFoLT50eXBlICE9IFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MgJiYKKwkJCQkoKytpIDw9IDEwIHx8IGRlYnVnID4gMikpIHsKIAkJCW91dCArPSBzcHJpbnRmKG91dCwgIiUqcyVkOiAiLCBzcGFjZSArIDIsICIiLCBpKTsKIAkJCW91dCArPSB1aGNpX3Nob3dfdGQodGQsIG91dCwgbGVuIC0gKG91dCAtIGJ1ZiksIDApOwogCQl9IGVsc2UgewpAQCAtMTQ3LDEzICsxNTEsMjcgQEAKIAljaGFyICpvdXQgPSBidWY7CiAJaW50IGksIG51cmJzOwogCV9fbGUzMiBlbGVtZW50ID0gcWhfZWxlbWVudChxaCk7CisJY2hhciAqcXR5cGU7CiAKIAkvKiBUcnkgdG8gbWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIG1lbW9yeSAqLwotCWlmIChsZW4gPCA4MCAqIDYpCisJaWYgKGxlbiA8IDgwICogNykKIAkJcmV0dXJuIDA7CiAKLQlvdXQgKz0gc3ByaW50ZihvdXQsICIlKnNbJXBdIGxpbmsgKCUwOHgpIGVsZW1lbnQgKCUwOHgpXG4iLCBzcGFjZSwgIiIsCi0JCQlxaCwgbGUzMl90b19jcHUocWgtPmxpbmspLCBsZTMyX3RvX2NwdShlbGVtZW50KSk7CisJc3dpdGNoIChxaC0+dHlwZSkgeworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSVNPQzogcXR5cGUgPSAiSVNPIjsgYnJlYWs7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9JTlQ6IHF0eXBlID0gIklOVCI7IGJyZWFrOworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfQlVMSzogcXR5cGUgPSAiQkxLIjsgYnJlYWs7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MOiBxdHlwZSA9ICJDVEwiOyBicmVhazsKKwlkZWZhdWx0OiBxdHlwZSA9ICJTa2VsIiA7IGJyZWFrOworCX0KKworCW91dCArPSBzcHJpbnRmKG91dCwgIiUqc1slcF0gJXMgUUggbGluayAoJTA4eCkgZWxlbWVudCAoJTA4eClcbiIsCisJCQlzcGFjZSwgIiIsIHFoLCBxdHlwZSwKKwkJCWxlMzJfdG9fY3B1KHFoLT5saW5rKSwgbGUzMl90b19jcHUoZWxlbWVudCkpOworCWlmIChxaC0+dHlwZSA9PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DKQorCQlvdXQgKz0gc3ByaW50ZihvdXQsICIlKnMgICAgcGVyaW9kICVkIGZyYW1lICV4IGRlc2MgWyVwXVxuIiwKKwkJCQlzcGFjZSwgIiIsIHFoLT5wZXJpb2QsIHFoLT5pc29fZnJhbWUsCisJCQkJcWgtPmlzb19wYWNrZXRfZGVzYyk7CiAKIAlpZiAoZWxlbWVudCAmIFVIQ0lfUFRSX1FIKQogCQlvdXQgKz0gc3ByaW50ZihvdXQsICIlKnMgIEVsZW1lbnQgcG9pbnRzIHRvIFFIIChidWc/KVxuIiwgc3BhY2UsICIiKTsKQEAgLTI2MSw3ICsyNzksOCBAQAogCSAgICBkZWZhdWx0OgogCQlyaF9zdGF0ZSA9ICI/IjsJCQlicmVhazsKIAl9Ci0Jb3V0ICs9IHNwcmludGYob3V0LCAiUm9vdC1odWIgc3RhdGU6ICVzXG4iLCByaF9zdGF0ZSk7CisJb3V0ICs9IHNwcmludGYob3V0LCAiUm9vdC1odWIgc3RhdGU6ICVzICAgRlNCUjogJWRcbiIsCisJCQlyaF9zdGF0ZSwgdWhjaS0+ZnNicl9pc19vbik7CiAJcmV0dXJuIG91dCAtIGJ1ZjsKIH0KIApAQCAtMjc1LDcgKzI5NCw3IEBACiAJdW5zaWduZWQgc2hvcnQgcG9ydHNjMSwgcG9ydHNjMjsKIAogCS8qIFRyeSB0byBtYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggbWVtb3J5ICovCi0JaWYgKGxlbiA8IDgwICogNikKKwlpZiAobGVuIDwgODAgKiA5KQogCQlyZXR1cm4gMDsKIAogCXVzYmNtZCAgICA9IGludyhpb19hZGRyICsgMCk7CkBAIC0zMTQsNiArMzMzLDEwIEBACiAJb3V0ICs9IHNwcmludGYob3V0LCAiICBzb2YgICAgICAgPSAgICAgICAlMDJ4XG4iLCBzb2YpOwogCW91dCArPSB1aGNpX3Nob3dfc2MoMSwgcG9ydHNjMSwgb3V0LCBsZW4gLSAob3V0IC0gYnVmKSk7CiAJb3V0ICs9IHVoY2lfc2hvd19zYygyLCBwb3J0c2MyLCBvdXQsIGxlbiAtIChvdXQgLSBidWYpKTsKKwlvdXQgKz0gc3ByaW50ZihvdXQsICJNb3N0IHJlY2VudCBmcmFtZTogJXggKCVkKSAgICIKKwkJCSJMYXN0IElTTyBmcmFtZTogJXggKCVkKVxuIiwKKwkJCXVoY2ktPmZyYW1lX251bWJlciwgdWhjaS0+ZnJhbWVfbnVtYmVyICYgMTAyMywKKwkJCXVoY2ktPmxhc3RfaXNvX2ZyYW1lLCB1aGNpLT5sYXN0X2lzb19mcmFtZSAmIDEwMjMpOwogCiAJcmV0dXJuIG91dCAtIGJ1ZjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1oY2QuYwppbmRleCBkMjI1ZTExLi43YjQ4NTY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC91aGNpLWhjZC5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiAoQykgQ29weXJpZ2h0IDIwMDAgWWdnZHJhc2lsIENvbXB1dGluZywgSW5jLiAocG9ydCBvZiBuZXcgUENJIGludGVyZmFjZQogICogICAgICAgICAgICAgICBzdXBwb3J0IGZyb20gdXNiLW9oY2kuYyBieSBBZGFtIFJpY2h0ZXIsIGFkYW1AeWdnZHJhc2lsLmNvbSkuCiAgKiAoQykgQ29weXJpZ2h0IDE5OTkgR3JlZ29yeSBQLiBTbWl0aCAoZnJvbSB1c2Itb2hjaS5jKQotICogKEMpIENvcHlyaWdodCAyMDA0LTIwMDUgQWxhbiBTdGVybiwgc3Rlcm5Acm93bGFuZC5oYXJ2YXJkLmVkdQorICogKEMpIENvcHlyaWdodCAyMDA0LTIwMDYgQWxhbiBTdGVybiwgc3Rlcm5Acm93bGFuZC5oYXJ2YXJkLmVkdQogICoKICAqIEludGVsIGRvY3VtZW50cyB0aGlzIGZhaXJseSB3ZWxsLCBhbmQgYXMgZmFyIGFzIEkga25vdyB0aGVyZQogICogYXJlIG5vIHJveWFsdGllcyBvciBhbnl0aGluZyBsaWtlIHRoYXQsIGJ1dCBldmVuIHNvIHRoZXJlIGFyZQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KQEAgLTg4LDE1ICs4Nyw2IEBACiBzdGF0aWMgdm9pZCB3YWtldXBfcmgoc3RydWN0IHVoY2lfaGNkICp1aGNpKTsKIHN0YXRpYyB2b2lkIHVoY2lfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSk7CiAKLS8qIElmIGEgdHJhbnNmZXIgaXMgc3RpbGwgYWN0aXZlIGFmdGVyIHRoaXMgbXVjaCB0aW1lLCB0dXJuIG9mZiBGU0JSICovCi0jZGVmaW5lIElETEVfVElNRU9VVAltc2Vjc190b19qaWZmaWVzKDUwKQotI2RlZmluZSBGU0JSX0RFTEFZCW1zZWNzX3RvX2ppZmZpZXMoNTApCi0KLS8qIFdoZW4gd2UgdGltZW91dCBhbiBpZGxlIHRyYW5zZmVyIGZvciBGU0JSLCB3ZSdsbCBzd2l0Y2ggaXQgb3ZlciB0byAqLwotLyogZGVwdGggZmlyc3QgdHJhdmVyc2FsLiBXZSdsbCBkbyBpdCBpbiBncm91cHMgb2YgdGhpcyBudW1iZXIgb2YgVERzICovCi0vKiB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBob2cgYWxsIG9mIHRoZSBiYW5kd2lkdGggKi8KLSNkZWZpbmUgREVQVEhfSU5URVJWQUwgNQotCiAjaW5jbHVkZSAidWhjaS1kZWJ1Zy5jIgogI2luY2x1ZGUgInVoY2ktcS5jIgogI2luY2x1ZGUgInVoY2ktaHViLmMiCkBAIC0xMjAsMjIgKzExMCwyOSBAQAogCXVoY2ktPmlzX3N0b3BwZWQgPSBVSENJX0lTX1NUT1BQRUQ7CiAJdWhjaV90b19oY2QodWhjaSktPnN0YXRlID0gSENfU1RBVEVfSEFMVDsKIAl1aGNpX3RvX2hjZCh1aGNpKS0+cG9sbF9yaCA9IDA7CisKKwl1aGNpLT5kZWFkID0gMDsJCS8qIEZ1bGwgcmVzZXQgcmVzdXJyZWN0cyB0aGUgY29udHJvbGxlciAqLwogfQogCiAvKgogICogTGFzdCByaXRlcyBmb3IgYSBkZWZ1bmN0L25vbmZ1bmN0aW9uYWwgY29udHJvbGxlcgogICogb3Igb25lIHdlIGRvbid0IHdhbnQgdG8gdXNlIGFueSBtb3JlLgogICovCi1zdGF0aWMgdm9pZCBoY19kaWVkKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSkKK3N0YXRpYyB2b2lkIHVoY2lfaGNfZGllZChzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kpCiB7CisJdWhjaV9nZXRfY3VycmVudF9mcmFtZV9udW1iZXIodWhjaSk7CiAJdWhjaV9yZXNldF9oYyh0b19wY2lfZGV2KHVoY2lfZGV2KHVoY2kpKSwgdWhjaS0+aW9fYWRkcik7CiAJZmluaXNoX3Jlc2V0KHVoY2kpOwotCXVoY2ktPmhjX2luYWNjZXNzaWJsZSA9IDE7CisJdWhjaS0+ZGVhZCA9IDE7CisKKwkvKiBUaGUgY3VycmVudCBmcmFtZSBtYXkgYWxyZWFkeSBiZSBwYXJ0d2F5IGZpbmlzaGVkICovCisJKyt1aGNpLT5mcmFtZV9udW1iZXI7CiB9CiAKIC8qCi0gKiBJbml0aWFsaXplIGEgY29udHJvbGxlciB0aGF0IHdhcyBuZXdseSBkaXNjb3ZlcmVkIG9yIGhhcyBqdXN0IGJlZW4KLSAqIHJlc3VtZWQuICBJbiBlaXRoZXIgY2FzZSB3ZSBjYW4ndCBiZSBzdXJlIG9mIGl0cyBwcmV2aW91cyBzdGF0ZS4KKyAqIEluaXRpYWxpemUgYSBjb250cm9sbGVyIHRoYXQgd2FzIG5ld2x5IGRpc2NvdmVyZWQgb3IgaGFzIGxvc3QgcG93ZXIKKyAqIG9yIG90aGVyd2lzZSBiZWVuIHJlc2V0IHdoaWxlIGl0IHdhcyBzdXNwZW5kZWQuICBJbiBub25lIG9mIHRoZXNlIGNhc2VzCisgKiBjYW4gd2UgYmUgc3VyZSBvZiBpdHMgcHJldmlvdXMgc3RhdGUuCiAgKi8KIHN0YXRpYyB2b2lkIGNoZWNrX2FuZF9yZXNldF9oYyhzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kpCiB7CkBAIC0xNTUsNyArMTUyLDggQEAKIAlvdXRsKHVoY2ktPmZyYW1lX2RtYV9oYW5kbGUsIHVoY2ktPmlvX2FkZHIgKyBVU0JGTEJBU0VBREQpOwogCiAJLyogU2V0IHRoZSBjdXJyZW50IGZyYW1lIG51bWJlciAqLwotCW91dHcodWhjaS0+ZnJhbWVfbnVtYmVyLCB1aGNpLT5pb19hZGRyICsgVVNCRlJOVU0pOworCW91dHcodWhjaS0+ZnJhbWVfbnVtYmVyICYgVUhDSV9NQVhfU09GX05VTUJFUiwKKwkJCXVoY2ktPmlvX2FkZHIgKyBVU0JGUk5VTSk7CiAKIAkvKiBNYXJrIGNvbnRyb2xsZXIgYXMgbm90IGhhbHRlZCBiZWZvcmUgd2UgZW5hYmxlIGludGVycnVwdHMgKi8KIAl1aGNpX3RvX2hjZCh1aGNpKS0+c3RhdGUgPSBIQ19TVEFURV9TVVNQRU5ERUQ7CkBAIC0yMDcsNyArMjA1LDggQEAKIAlpbnQgaW50X2VuYWJsZTsKIAogCWF1dG9fc3RvcCA9IChuZXdfc3RhdGUgPT0gVUhDSV9SSF9BVVRPX1NUT1BQRUQpOwotCWRldl9kYmcodWhjaV9kZXYodWhjaSksICIlcyVzXG4iLCBfX0ZVTkNUSU9OX18sCisJZGV2X2RiZygmdWhjaV90b19oY2QodWhjaSktPnNlbGYucm9vdF9odWItPmRldiwKKwkJCSIlcyVzXG4iLCBfX0ZVTkNUSU9OX18sCiAJCQkoYXV0b19zdG9wID8gIiAoYXV0by1zdG9wKSIgOiAiIikpOwogCiAJLyogSWYgd2UgZ2V0IGEgc3VzcGVuZCByZXF1ZXN0IHdoZW4gd2UncmUgYWxyZWFkeSBhdXRvLXN0b3BwZWQKQEAgLTI0MSwyNyArMjQwLDI3IEBACiAJCXNwaW5fdW5sb2NrX2lycSgmdWhjaS0+bG9jayk7CiAJCW1zbGVlcCgxKTsKIAkJc3Bpbl9sb2NrX2lycSgmdWhjaS0+bG9jayk7Ci0JCWlmICh1aGNpLT5oY19pbmFjY2Vzc2libGUpCS8qIERpZWQgKi8KKwkJaWYgKHVoY2ktPmRlYWQpCiAJCQlyZXR1cm47CiAJfQogCWlmICghKGludyh1aGNpLT5pb19hZGRyICsgVVNCU1RTKSAmIFVTQlNUU19IQ0gpKQotCQlkZXZfd2Fybih1aGNpX2Rldih1aGNpKSwgIkNvbnRyb2xsZXIgbm90IHN0b3BwZWQgeWV0IVxuIik7CisJCWRldl93YXJuKCZ1aGNpX3RvX2hjZCh1aGNpKS0+c2VsZi5yb290X2h1Yi0+ZGV2LAorCQkJIkNvbnRyb2xsZXIgbm90IHN0b3BwZWQgeWV0IVxuIik7CiAKIAl1aGNpX2dldF9jdXJyZW50X2ZyYW1lX251bWJlcih1aGNpKTsKLQlzbXBfd21iKCk7CiAKIAl1aGNpLT5yaF9zdGF0ZSA9IG5ld19zdGF0ZTsKIAl1aGNpLT5pc19zdG9wcGVkID0gVUhDSV9JU19TVE9QUEVEOwogCXVoY2lfdG9faGNkKHVoY2kpLT5wb2xsX3JoID0gIWludF9lbmFibGU7CiAKIAl1aGNpX3NjYW5fc2NoZWR1bGUodWhjaSwgTlVMTCk7CisJdWhjaV9mc2JyX29mZih1aGNpKTsKIH0KIAogc3RhdGljIHZvaWQgc3RhcnRfcmgoc3RydWN0IHVoY2lfaGNkICp1aGNpKQogewogCXVoY2lfdG9faGNkKHVoY2kpLT5zdGF0ZSA9IEhDX1NUQVRFX1JVTk5JTkc7CiAJdWhjaS0+aXNfc3RvcHBlZCA9IDA7Ci0Jc21wX3dtYigpOwogCiAJLyogTWFyayBpdCBjb25maWd1cmVkIGFuZCBydW5uaW5nIHdpdGggYSA2NC1ieXRlIG1heCBwYWNrZXQuCiAJICogQWxsIGludGVycnVwdHMgYXJlIGVuYWJsZWQsIGV2ZW4gdGhvdWdoIFJFU1VNRSB3b24ndCBkbyBhbnl0aGluZy4KQEAgLTI3OCw3ICsyNzcsOCBAQAogX19yZWxlYXNlcyh1aGNpLT5sb2NrKQogX19hY3F1aXJlcyh1aGNpLT5sb2NrKQogewotCWRldl9kYmcodWhjaV9kZXYodWhjaSksICIlcyVzXG4iLCBfX0ZVTkNUSU9OX18sCisJZGV2X2RiZygmdWhjaV90b19oY2QodWhjaSktPnNlbGYucm9vdF9odWItPmRldiwKKwkJCSIlcyVzXG4iLCBfX0ZVTkNUSU9OX18sCiAJCQl1aGNpLT5yaF9zdGF0ZSA9PSBVSENJX1JIX0FVVE9fU1RPUFBFRCA/CiAJCQkJIiAoYXV0by1zdGFydCkiIDogIiIpOwogCkBAIC0yOTMsNyArMjkzLDcgQEAKIAkJc3Bpbl91bmxvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKIAkJbXNsZWVwKDIwKTsKIAkJc3Bpbl9sb2NrX2lycSgmdWhjaS0+bG9jayk7Ci0JCWlmICh1aGNpLT5oY19pbmFjY2Vzc2libGUpCS8qIERpZWQgKi8KKwkJaWYgKHVoY2ktPmRlYWQpCiAJCQlyZXR1cm47CiAKIAkJLyogRW5kIEdsb2JhbCBSZXN1bWUgYW5kIHdhaXQgZm9yIEVPUCB0byBiZSBzZW50ICovCkBAIC0zNDUsNyArMzQ1LDcgQEAKIAkJCQkJCQllcnJidWYsIEVSUkJVRl9MRU4pOwogCQkJCQlscHJpbnRrKGVycmJ1Zik7CiAJCQkJfQotCQkJCWhjX2RpZWQodWhjaSk7CisJCQkJdWhjaV9oY19kaWVkKHVoY2kpOwogCiAJCQkJLyogRm9yY2UgYSBjYWxsYmFjayBpbiBjYXNlIHRoZXJlIGFyZQogCQkJCSAqIHBlbmRpbmcgdW5saW5rcyAqLwpAQCAtMzY4LDEyICszNjgsMjEgQEAKIAogLyoKICAqIFN0b3JlIHRoZSBjdXJyZW50IGZyYW1lIG51bWJlciBpbiB1aGNpLT5mcmFtZV9udW1iZXIgaWYgdGhlIGNvbnRyb2xsZXIKLSAqIGlzIHJ1bm5uaW5nCisgKiBpcyBydW5ubmluZy4gIEV4cGFuZCBmcm9tIDExIGJpdHMgKG9mIHdoaWNoIHdlIHVzZSBvbmx5IDEwKSB0byBhCisgKiBmdWxsLXNpemVkIGludGVnZXIuCisgKgorICogTGlrZSBtYW55IG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIHRoaXMgY29kZSByZWxpZXMgb24gYmVpbmcgcG9sbGVkCisgKiBtb3JlIHRoYW4gb25jZSBwZXIgc2Vjb25kIGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgaXMgcnVubmluZy4KICAqLwogc3RhdGljIHZvaWQgdWhjaV9nZXRfY3VycmVudF9mcmFtZV9udW1iZXIoc3RydWN0IHVoY2lfaGNkICp1aGNpKQogewotCWlmICghdWhjaS0+aXNfc3RvcHBlZCkKLQkJdWhjaS0+ZnJhbWVfbnVtYmVyID0gaW53KHVoY2ktPmlvX2FkZHIgKyBVU0JGUk5VTSk7CisJaWYgKCF1aGNpLT5pc19zdG9wcGVkKSB7CisJCXVuc2lnbmVkIGRlbHRhOworCisJCWRlbHRhID0gKGludyh1aGNpLT5pb19hZGRyICsgVVNCRlJOVU0pIC0gdWhjaS0+ZnJhbWVfbnVtYmVyKSAmCisJCQkJKFVIQ0lfTlVNRlJBTUVTIC0gMSk7CisJCXVoY2ktPmZyYW1lX251bWJlciArPSBkZWx0YTsKKwl9CiB9CiAKIC8qCkBAIC00MDcsNyArNDE2LDcgQEAKIAkJCXVoY2ktPmZyYW1lLCB1aGNpLT5mcmFtZV9kbWFfaGFuZGxlKTsKIH0KIAotc3RhdGljIGludCB1aGNpX3Jlc2V0KHN0cnVjdCB1c2JfaGNkICpoY2QpCitzdGF0aWMgaW50IHVoY2lfaW5pdChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogewogCXN0cnVjdCB1aGNpX2hjZCAqdWhjaSA9IGhjZF90b191aGNpKGhjZCk7CiAJdW5zaWduZWQgaW9fc2l6ZSA9ICh1bnNpZ25lZCkgaGNkLT5yc3JjX2xlbjsKQEAgLTQ1OSw3ICs0NjgsNyBAQAogewogCXN0cnVjdCB1c2JfaGNkICpoY2QgPSAoc3RydWN0IHVzYl9oY2QgKikgcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCi0JaGNfZGllZChoY2RfdG9fdWhjaShoY2QpKTsKKwl1aGNpX2hjX2RpZWQoaGNkX3RvX3VoY2koaGNkKSk7CiB9CiAKIC8qCkBAIC00ODcsMTQgKzQ5NiwxMCBAQAogCiAJaGNkLT51c2VzX25ld19wb2xsaW5nID0gMTsKIAotCXVoY2ktPmZzYnIgPSAwOwotCXVoY2ktPmZzYnJ0aW1lb3V0ID0gMDsKLQogCXNwaW5fbG9ja19pbml0KCZ1aGNpLT5sb2NrKTsKLQotCUlOSVRfTElTVF9IRUFEKCZ1aGNpLT50ZF9yZW1vdmVfbGlzdCk7CisJc2V0dXBfdGltZXIoJnVoY2ktPmZzYnJfdGltZXIsIHVoY2lfZnNicl90aW1lb3V0LAorCQkJKHVuc2lnbmVkIGxvbmcpIHVoY2kpOwogCUlOSVRfTElTVF9IRUFEKCZ1aGNpLT5pZGxlX3FoX2xpc3QpOwotCiAJaW5pdF93YWl0cXVldWVfaGVhZCgmdWhjaS0+d2FpdHFoKTsKIAogCWlmIChERUJVR19DT05GSUdVUkVEKSB7CkBAIC02NjUsMTEgKzY3MCwxMiBAQAogCXN0cnVjdCB1aGNpX2hjZCAqdWhjaSA9IGhjZF90b191aGNpKGhjZCk7CiAKIAlzcGluX2xvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKLQlpZiAoIXVoY2ktPmhjX2luYWNjZXNzaWJsZSkKLQkJaGNfZGllZCh1aGNpKTsKKwlpZiAodGVzdF9iaXQoSENEX0ZMQUdfSFdfQUNDRVNTSUJMRSwgJmhjZC0+ZmxhZ3MpICYmICF1aGNpLT5kZWFkKQorCQl1aGNpX2hjX2RpZWQodWhjaSk7CiAJdWhjaV9zY2FuX3NjaGVkdWxlKHVoY2ksIE5VTEwpOwogCXNwaW5fdW5sb2NrX2lycSgmdWhjaS0+bG9jayk7CiAKKwlkZWxfdGltZXJfc3luYygmdWhjaS0+ZnNicl90aW1lcik7CiAJcmVsZWFzZV91aGNpKHVoY2kpOwogfQogCkBAIC02NzcsMTIgKzY4MywxNSBAQAogc3RhdGljIGludCB1aGNpX3JoX3N1c3BlbmQoc3RydWN0IHVzYl9oY2QgKmhjZCkKIHsKIAlzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kgPSBoY2RfdG9fdWhjaShoY2QpOworCWludCByYyA9IDA7CiAKIAlzcGluX2xvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKLQlpZiAoIXVoY2ktPmhjX2luYWNjZXNzaWJsZSkJCS8qIE5vdCBkZWFkICovCisJaWYgKCF0ZXN0X2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncykpCisJCXJjID0gLUVTSFVURE9XTjsKKwllbHNlIGlmICghdWhjaS0+ZGVhZCkKIAkJc3VzcGVuZF9yaCh1aGNpLCBVSENJX1JIX1NVU1BFTkRFRCk7CiAJc3Bpbl91bmxvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgdWhjaV9yaF9yZXN1bWUoc3RydWN0IHVzYl9oY2QgKmhjZCkKQEAgLTY5MSwxMyArNzAwLDEwIEBACiAJaW50IHJjID0gMDsKIAogCXNwaW5fbG9ja19pcnEoJnVoY2ktPmxvY2spOwotCWlmICh1aGNpLT5oY19pbmFjY2Vzc2libGUpIHsKLQkJaWYgKHVoY2ktPnJoX3N0YXRlID09IFVIQ0lfUkhfU1VTUEVOREVEKSB7Ci0JCQlkZXZfd2Fybih1aGNpX2Rldih1aGNpKSwgIkhDIGlzbid0IHJ1bm5pbmchXG4iKTsKLQkJCXJjID0gLUVOT0RFVjsKLQkJfQotCQkvKiBPdGhlcndpc2UgdGhlIEhDIGlzIGRlYWQgKi8KLQl9IGVsc2UKKwlpZiAoIXRlc3RfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKSkgeworCQlkZXZfd2FybigmaGNkLT5zZWxmLnJvb3RfaHViLT5kZXYsICJIQyBpc24ndCBydW5uaW5nIVxuIik7CisJCXJjID0gLUVTSFVURE9XTjsKKwl9IGVsc2UgaWYgKCF1aGNpLT5kZWFkKQogCQl3YWtldXBfcmgodWhjaSk7CiAJc3Bpbl91bmxvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKIAlyZXR1cm4gcmM7CkBAIC03MTEsOCArNzE3LDggQEAKIAlkZXZfZGJnKHVoY2lfZGV2KHVoY2kpLCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CiAKIAlzcGluX2xvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKLQlpZiAodWhjaS0+aGNfaW5hY2Nlc3NpYmxlKQkvKiBEZWFkIG9yIGFscmVhZHkgc3VzcGVuZGVkICovCi0JCWdvdG8gZG9uZTsKKwlpZiAoIXRlc3RfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKSB8fCB1aGNpLT5kZWFkKQorCQlnb3RvIGRvbmVfb2theTsJCS8qIEFscmVhZHkgc3VzcGVuZGVkIG9yIGRlYWQgKi8KIAogCWlmICh1aGNpLT5yaF9zdGF0ZSA+IFVIQ0lfUkhfU1VTUEVOREVEKSB7CiAJCWRldl93YXJuKHVoY2lfZGV2KHVoY2kpLCAiUm9vdCBodWIgaXNuJ3Qgc3VzcGVuZGVkIVxuIik7CkBAIC03MjUsMTIgKzczMSwxMiBAQAogCSAqLwogCXBjaV93cml0ZV9jb25maWdfd29yZCh0b19wY2lfZGV2KHVoY2lfZGV2KHVoY2kpKSwgVVNCTEVHU1VQLCAwKTsKIAltYigpOwotCWNsZWFyX2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncyk7Ci0JdWhjaS0+aGNfaW5hY2Nlc3NpYmxlID0gMTsKIAloY2QtPnBvbGxfcmggPSAwOwogCiAJLyogRklYTUU6IEVuYWJsZSBub24tUE1FIyByZW1vdGUgd2FrZXVwPyAqLwogCitkb25lX29rYXk6CisJY2xlYXJfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZoY2QtPmZsYWdzKTsKIGRvbmU6CiAJc3Bpbl91bmxvY2tfaXJxKCZ1aGNpLT5sb2NrKTsKIAlyZXR1cm4gcmM7CkBAIC03NDMsMjQgKzc0OSwyMiBAQAogCWRldl9kYmcodWhjaV9kZXYodWhjaSksICIlc1xuIiwgX19GVU5DVElPTl9fKTsKIAogCS8qIFNpbmNlIHdlIGFyZW4ndCBpbiBEMyBhbnkgbW9yZSwgaXQncyBzYWZlIHRvIHNldCB0aGlzIGZsYWcKLQkgKiBldmVuIGlmIHRoZSBjb250cm9sbGVyIHdhcyBkZWFkLiAgSXQgbWlnaHQgbm90IGV2ZW4gYmUgZGVhZAotCSAqIGFueSBtb3JlLCBpZiB0aGUgZmlybXdhcmUgb3IgcXVpcmtzIGNvZGUgaGFzIHJlc2V0IGl0LgorCSAqIGV2ZW4gaWYgdGhlIGNvbnRyb2xsZXIgd2FzIGRlYWQuCiAJICovCiAJc2V0X2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncyk7CiAJbWIoKTsKIAotCWlmICh1aGNpLT5yaF9zdGF0ZSA9PSBVSENJX1JIX1JFU0VUKQkvKiBEZWFkICovCi0JCXJldHVybiAwOwogCXNwaW5fbG9ja19pcnEoJnVoY2ktPmxvY2spOwogCiAJLyogRklYTUU6IERpc2FibGUgbm9uLVBNRSMgcmVtb3RlIHdha2V1cD8gKi8KIAotCXVoY2ktPmhjX2luYWNjZXNzaWJsZSA9IDA7Ci0KLQkvKiBUaGUgQklPUyBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBjb250cm9sbGVyIHNldHRpbmdzIGR1cmluZyBhCi0JICogc3lzdGVtIHdha2V1cC4gIENoZWNrIGl0IGFuZCByZWNvbmZpZ3VyZSB0byBhdm9pZCBwcm9ibGVtcy4KKwkvKiBUaGUgZmlybXdhcmUgb3IgYSBib290IGtlcm5lbCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBjb250cm9sbGVyCisJICogc2V0dGluZ3MgZHVyaW5nIGEgc3lzdGVtIHdha2V1cC4gIENoZWNrIGl0IGFuZCByZWNvbmZpZ3VyZQorCSAqIHRvIGF2b2lkIHByb2JsZW1zLgogCSAqLwogCWNoZWNrX2FuZF9yZXNldF9oYyh1aGNpKTsKKworCS8qIElmIHRoZSBjb250cm9sbGVyIHdhcyBkZWFkIGJlZm9yZSwgaXQncyBiYWNrIGFsaXZlIG5vdyAqLwogCWNvbmZpZ3VyZV9oYyh1aGNpKTsKIAogCWlmICh1aGNpLT5yaF9zdGF0ZSA9PSBVSENJX1JIX1JFU0VUKSB7CkBAIC04MTAsMTggKzgxNCwxNSBAQAogc3RhdGljIGludCB1aGNpX2hjZF9nZXRfZnJhbWVfbnVtYmVyKHN0cnVjdCB1c2JfaGNkICpoY2QpCiB7CiAJc3RydWN0IHVoY2lfaGNkICp1aGNpID0gaGNkX3RvX3VoY2koaGNkKTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCBpc19zdG9wcGVkOwotCWludCBmcmFtZV9udW1iZXI7CisJdW5zaWduZWQgZnJhbWVfbnVtYmVyOworCXVuc2lnbmVkIGRlbHRhOwogCiAJLyogTWluaW1pemUgbGF0ZW5jeSBieSBhdm9pZGluZyB0aGUgc3BpbmxvY2sgKi8KLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0JaXNfc3RvcHBlZCA9IHVoY2ktPmlzX3N0b3BwZWQ7Ci0Jc21wX3JtYigpOwotCWZyYW1lX251bWJlciA9IChpc19zdG9wcGVkID8gdWhjaS0+ZnJhbWVfbnVtYmVyIDoKLQkJCWludyh1aGNpLT5pb19hZGRyICsgVVNCRlJOVU0pKTsKLQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0JcmV0dXJuIGZyYW1lX251bWJlcjsKKwlmcmFtZV9udW1iZXIgPSB1aGNpLT5mcmFtZV9udW1iZXI7CisJYmFycmllcigpOworCWRlbHRhID0gKGludyh1aGNpLT5pb19hZGRyICsgVVNCRlJOVU0pIC0gZnJhbWVfbnVtYmVyKSAmCisJCQkoVUhDSV9OVU1GUkFNRVMgLSAxKTsKKwlyZXR1cm4gZnJhbWVfbnVtYmVyICsgZGVsdGE7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIGhjZF9uYW1lW10gPSAidWhjaV9oY2QiOwpAQCAtODM2LDcgKzgzNyw3IEBACiAJLmZsYWdzID0JCUhDRF9VU0IxMSwKIAogCS8qIEJhc2ljIGxpZmVjeWNsZSBvcGVyYXRpb25zICovCi0JLnJlc2V0ID0JCXVoY2lfcmVzZXQsCisJLnJlc2V0ID0JCXVoY2lfaW5pdCwKIAkuc3RhcnQgPQkJdWhjaV9zdGFydCwKICNpZmRlZiBDT05GSUdfUE0KIAkuc3VzcGVuZCA9CQl1aGNpX3N1c3BlbmQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaGNkLmggYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaGNkLmgKaW5kZXggZDVjOGY0ZC4uMTA4ZTNkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC91aGNpLWhjZC5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1oY2QuaApAQCAtODQsNiArODQsMTMgQEAKICNkZWZpbmUgQ0FOX1NDSEVEVUxFX0ZSQU1FUwkxMDAwCS8qIGhvdyBmYXIgaW4gdGhlIGZ1dHVyZSBmcmFtZXMKIAkJCQkJICogY2FuIGJlIHNjaGVkdWxlZCAqLwogCisvKiBXaGVuIG5vIHF1ZXVlcyBuZWVkIEZ1bGwtU3BlZWQgQmFuZHdpZHRoIFJlY2xhbWF0aW9uLAorICogZGVsYXkgdGhpcyBsb25nIGJlZm9yZSB0dXJuaW5nIEZTQlIgb2ZmICovCisjZGVmaW5lIEZTQlJfT0ZGX0RFTEFZCQltc2Vjc190b19qaWZmaWVzKDEwKQorCisvKiBJZiBhIHF1ZXVlIGhhc24ndCBhZHZhbmNlZCBhZnRlciB0aGlzIG11Y2ggdGltZSwgYXNzdW1lIGl0IGlzIHN0dWNrICovCisjZGVmaW5lIFFIX1dBSVRfVElNRU9VVAkJbXNlY3NfdG9famlmZmllcygyMDApCisKIAogLyoKICAqCVF1ZXVlIEhlYWRlcnMKQEAgLTEyMSwyMSArMTI4LDMxIEBACiAJX19sZTMyIGVsZW1lbnQ7CQkJLyogUXVldWUgZWxlbWVudCAoVEQpIHBvaW50ZXIgKi8KIAogCS8qIFNvZnR3YXJlIGZpZWxkcyAqLwotCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTsKLQogCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsJCS8qIE5vZGUgaW4gdGhlIGxpc3Qgb2YgUUhzICovCiAJc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICpoZXA7CS8qIEVuZHBvaW50IGluZm9ybWF0aW9uICovCiAJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7CiAJc3RydWN0IGxpc3RfaGVhZCBxdWV1ZTsJCS8qIFF1ZXVlIG9mIHVyYnBzIGZvciB0aGlzIFFIICovCiAJc3RydWN0IHVoY2lfcWggKnNrZWw7CQkvKiBTa2VsZXRvbiBmb3IgdGhpcyBRSCAqLwogCXN0cnVjdCB1aGNpX3RkICpkdW1teV90ZDsJLyogRHVtbXkgVEQgdG8gZW5kIHRoZSBxdWV1ZSAqLworCXN0cnVjdCB1aGNpX3RkICpwb3N0X3RkOwkvKiBMYXN0IFREIGNvbXBsZXRlZCAqLwogCisJc3RydWN0IHVzYl9pc29fcGFja2V0X2Rlc2NyaXB0b3IgKmlzb19wYWNrZXRfZGVzYzsKKwkJCQkJLyogTmV4dCB1cmItPmlzb19mcmFtZV9kZXNjIGVudHJ5ICovCisJdW5zaWduZWQgbG9uZyBhZHZhbmNlX2ppZmZpZXM7CS8qIFRpbWUgb2YgbGFzdCBxdWV1ZSBhZHZhbmNlICovCiAJdW5zaWduZWQgaW50IHVubGlua19mcmFtZTsJLyogV2hlbiB0aGUgUUggd2FzIHVubGlua2VkICovCisJdW5zaWduZWQgaW50IHBlcmlvZDsJCS8qIEZvciBJbnRlcnJ1cHQgYW5kIElzb2Nocm9ub3VzIFFIcyAqLworCXVuc2lnbmVkIGludCBpc29fZnJhbWU7CQkvKiBGcmFtZSAjIGZvciBpc29fcGFja2V0X2Rlc2MgKi8KKwlpbnQgaXNvX3N0YXR1czsJCQkvKiBTdGF0dXMgZm9yIElzb2Nocm9ub3VzIFVSQnMgKi8KKwogCWludCBzdGF0ZTsJCQkvKiBRSF9TVEFURV94eHg7IHNlZSBhYm92ZSAqLworCWludCB0eXBlOwkJCS8qIFF1ZXVlIHR5cGUgKGNvbnRyb2wsIGJ1bGssIGV0YykgKi8KKworCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTsKIAogCXVuc2lnbmVkIGludCBpbml0aWFsX3RvZ2dsZToxOwkvKiBFbmRwb2ludCdzIGN1cnJlbnQgdG9nZ2xlIHZhbHVlICovCiAJdW5zaWduZWQgaW50IG5lZWRzX2ZpeHVwOjE7CS8qIE11c3QgZml4IHRoZSBURCB0b2dnbGUgdmFsdWVzICovCi0JdW5zaWduZWQgaW50IGlzX3N0b3BwZWQ6MTsJLyogUXVldWUgd2FzIHN0b3BwZWQgYnkgYW4gZXJyb3IgKi8KKwl1bnNpZ25lZCBpbnQgaXNfc3RvcHBlZDoxOwkvKiBRdWV1ZSB3YXMgc3RvcHBlZCBieSBlcnJvci91bmxpbmsgKi8KKwl1bnNpZ25lZCBpbnQgd2FpdF9leHBpcmVkOjE7CS8qIFFIX1dBSVRfVElNRU9VVCBoYXMgZXhwaXJlZCAqLwogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOwogCiAvKgpAQCAtMjI2LDcgKzI0Myw2IEBACiAJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOwogCiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwotCXN0cnVjdCBsaXN0X2hlYWQgcmVtb3ZlX2xpc3Q7CiAKIAlpbnQgZnJhbWU7CQkJLyogZm9yIGlzbzogd2hhdCBmcmFtZT8gKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpc3Q7CkBAIC0zMDUsMzggKzMyMSw4IEBACiAjZGVmaW5lIHNrZWxfYnVsa19xaAkJc2tlbHFoWzEyXQogI2RlZmluZSBza2VsX3Rlcm1fcWgJCXNrZWxxaFsxM10KIAotLyoKLSAqIFNlYXJjaCB0cmVlIGZvciBkZXRlcm1pbmluZyB3aGVyZSA8aW50ZXJ2YWw+IGZpdHMgaW4gdGhlIHNrZWxxaFtdCi0gKiBza2VsZXRvbi4KLSAqCi0gKiBBbiBpbnRlcnJ1cHQgcmVxdWVzdCBzaG91bGQgYmUgcGxhY2VkIGludG8gdGhlIHNsb3dlc3Qgc2tlbHFoW10KLSAqIHdoaWNoIG1lZXRzIHRoZSBpbnRlcnZhbC9wZXJpb2QvZnJlcXVlbmN5IHJlcXVpcmVtZW50LgotICogQW4gaW50ZXJydXB0IHJlcXVlc3QgaXMgYWxsb3dlZCB0byBiZSBmYXN0ZXIgdGhhbiA8aW50ZXJ2YWw+IGJ1dCBub3Qgc2xvd2VyLgotICoKLSAqIEZvciBhIGdpdmVuIDxpbnRlcnZhbD4sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUvbWF0Y2hpbmcKLSAqIHNrZWxxaFtdIGluZGV4IHZhbHVlLgotICovCi1zdGF0aWMgaW5saW5lIGludCBfX2ludGVydmFsX3RvX3NrZWwoaW50IGludGVydmFsKQotewotCWlmIChpbnRlcnZhbCA8IDE2KSB7Ci0JCWlmIChpbnRlcnZhbCA8IDQpIHsKLQkJCWlmIChpbnRlcnZhbCA8IDIpCi0JCQkJcmV0dXJuIDk7CS8qIGludDEgZm9yIDAtMSBtcyAqLwotCQkJcmV0dXJuIDg7CQkvKiBpbnQyIGZvciAyLTMgbXMgKi8KLQkJfQotCQlpZiAoaW50ZXJ2YWwgPCA4KQotCQkJcmV0dXJuIDc7CQkvKiBpbnQ0IGZvciA0LTcgbXMgKi8KLQkJcmV0dXJuIDY7CQkJLyogaW50OCBmb3IgOC0xNSBtcyAqLwotCX0KLQlpZiAoaW50ZXJ2YWwgPCA2NCkgewotCQlpZiAoaW50ZXJ2YWwgPCAzMikKLQkJCXJldHVybiA1OwkJLyogaW50MTYgZm9yIDE2LTMxIG1zICovCi0JCXJldHVybiA0OwkJCS8qIGludDMyIGZvciAzMi02MyBtcyAqLwotCX0KLQlpZiAoaW50ZXJ2YWwgPCAxMjgpCi0JCXJldHVybiAzOwkJCS8qIGludDY0IGZvciA2NC0xMjcgbXMgKi8KLQlyZXR1cm4gMjsJCQkJLyogaW50MTI4IGZvciAxMjgtMjU1IG1zIChNYXguKSAqLwotfQorLyogRmluZCB0aGUgc2tlbHFoIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gYW4gaW50ZXJ2YWwgZXhwb25lbnQgKi8KKyNkZWZpbmUgVUhDSV9TS0VMX0lOREVYKGV4cG9uZW50KQkoOSAtIGV4cG9uZW50KQogCiAKIC8qCkBAIC0zOTYsMzIgKzM4MiwzMiBAQAogCV9fbGUzMiAqZnJhbWU7CiAJdm9pZCAqKmZyYW1lX2NwdTsJCS8qIENQVSdzIGZyYW1lIGxpc3QgKi8KIAotCWludCBmc2JyOwkJCS8qIEZ1bGwtc3BlZWQgYmFuZHdpZHRoIHJlY2xhbWF0aW9uICovCi0JdW5zaWduZWQgbG9uZyBmc2JydGltZW91dDsJLyogRlNCUiBkZWxheSAqLwotCiAJZW51bSB1aGNpX3JoX3N0YXRlIHJoX3N0YXRlOwogCXVuc2lnbmVkIGxvbmcgYXV0b19zdG9wX3RpbWU7CQkvKiBXaGVuIHRvIEFVVE9fU1RPUCAqLwogCiAJdW5zaWduZWQgaW50IGZyYW1lX251bWJlcjsJCS8qIEFzIG9mIGxhc3QgY2hlY2sgKi8KIAl1bnNpZ25lZCBpbnQgaXNfc3RvcHBlZDsKICNkZWZpbmUgVUhDSV9JU19TVE9QUEVECQk5OTk5CQkvKiBMYXJnZXIgdGhhbiBhIGZyYW1lICMgKi8KKwl1bnNpZ25lZCBpbnQgbGFzdF9pc29fZnJhbWU7CQkvKiBGcmFtZSBvZiBsYXN0IHNjYW4gKi8KKwl1bnNpZ25lZCBpbnQgY3VyX2lzb19mcmFtZTsJCS8qIEZyYW1lIGZvciBjdXJyZW50IHNjYW4gKi8KIAogCXVuc2lnbmVkIGludCBzY2FuX2luX3Byb2dyZXNzOjE7CS8qIFNjaGVkdWxlIHNjYW4gaXMgcnVubmluZyAqLwogCXVuc2lnbmVkIGludCBuZWVkX3Jlc2NhbjoxOwkJLyogUmVkbyB0aGUgc2NoZWR1bGUgc2NhbiAqLwotCXVuc2lnbmVkIGludCBoY19pbmFjY2Vzc2libGU6MTsJCS8qIEhDIGlzIHN1c3BlbmRlZCBvciBkZWFkICovCisJdW5zaWduZWQgaW50IGRlYWQ6MTsJCQkvKiBDb250cm9sbGVyIGhhcyBkaWVkICovCiAJdW5zaWduZWQgaW50IHdvcmtpbmdfUkQ6MTsJCS8qIFN1c3BlbmRlZCByb290IGh1YiBkb2Vzbid0CiAJCQkJCQkgICBuZWVkIHRvIGJlIHBvbGxlZCAqLwogCXVuc2lnbmVkIGludCBpc19pbml0aWFsaXplZDoxOwkJLyogRGF0YSBzdHJ1Y3R1cmUgaXMgdXNhYmxlICovCisJdW5zaWduZWQgaW50IGZzYnJfaXNfb246MTsJCS8qIEZTQlIgaXMgdHVybmVkIG9uICovCisJdW5zaWduZWQgaW50IGZzYnJfaXNfd2FudGVkOjE7CQkvKiBEb2VzIGFueSBVUkIgd2FudCBGU0JSPyAqLworCXVuc2lnbmVkIGludCBmc2JyX2V4cGlyaW5nOjE7CQkvKiBGU0JSIGlzIHRpbWluZyBvdXQgKi8KKworCXN0cnVjdCB0aW1lcl9saXN0IGZzYnJfdGltZXI7CQkvKiBGb3IgdHVybmluZyBvZmYgRkJTUiAqLwogCiAJLyogU3VwcG9ydCBmb3IgcG9ydCBzdXNwZW5kL3Jlc3VtZS9yZXNldCAqLwogCXVuc2lnbmVkIGxvbmcgcG9ydF9jX3N1c3BlbmQ7CQkvKiBCaXQtYXJyYXlzIG9mIHBvcnRzICovCiAJdW5zaWduZWQgbG9uZyByZXN1bWluZ19wb3J0czsKIAl1bnNpZ25lZCBsb25nIHBvcnRzX3RpbWVvdXQ7CQkvKiBUaW1lIHRvIHN0b3Agc2lnbmFsbGluZyAqLwogCi0JLyogTGlzdCBvZiBURHMgdGhhdCBhcmUgZG9uZSwgYnV0IHdhaXRpbmcgdG8gYmUgZnJlZWQgKHJhY2UpICovCi0Jc3RydWN0IGxpc3RfaGVhZCB0ZF9yZW1vdmVfbGlzdDsKLQl1bnNpZ25lZCBpbnQgdGRfcmVtb3ZlX2FnZTsJCS8qIEFnZSBpbiBmcmFtZXMgKi8KLQogCXN0cnVjdCBsaXN0X2hlYWQgaWRsZV9xaF9saXN0OwkJLyogV2hlcmUgdGhlIGlkbGUgUUhzIGxpdmUgKi8KIAogCWludCByaF9udW1wb3J0czsJCQkvKiBOdW1iZXIgb2Ygcm9vdC1odWIgcG9ydHMgKi8KQEAgLTQ0Miw2ICs0MjgsOSBAQAogCiAjZGVmaW5lIHVoY2lfZGV2KHUpCSh1aGNpX3RvX2hjZCh1KS0+c2VsZi5jb250cm9sbGVyKQogCisvKiBVdGlsaXR5IG1hY3JvIGZvciBjb21wYXJpbmcgZnJhbWUgbnVtYmVycyAqLworI2RlZmluZSB1aGNpX2ZyYW1lX2JlZm9yZV9lcShmMSwgZjIpCSgwIDw9IChpbnQpICgoZjIpIC0gKGYxKSkpCisKIAogLyoKICAqCVByaXZhdGUgcGVyLVVSQiBkYXRhCkBAIC00NTQsOSArNDQzLDcgQEAKIAlzdHJ1Y3QgdWhjaV9xaCAqcWg7CQkvKiBRSCBmb3IgdGhpcyBVUkIgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIHRkX2xpc3Q7CiAKLQl1bnNpZ25lZCBmc2JyIDogMTsJCS8qIFVSQiB0dXJuZWQgb24gRlNCUiAqLwotCXVuc2lnbmVkIHNob3J0X3RyYW5zZmVyIDogMTsJLyogVVJCIGdvdCBhIHNob3J0IHRyYW5zZmVyLCBubwotCQkJCQkgKiBuZWVkIHRvIHJlc2NhbiAqLworCXVuc2lnbmVkIGZzYnI6MTsJCS8qIFVSQiB3YW50cyBGU0JSICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1odWIuYyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1odWIuYwppbmRleCBjODQ1MWQ5Li5jNTQ1ZWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktaHViLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC91aGNpLWh1Yi5jCkBAIC0xNzEsOSArMTcxLDggQEAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdWhjaS0+bG9jaywgZmxhZ3MpOwogCiAJdWhjaV9zY2FuX3NjaGVkdWxlKHVoY2ksIE5VTEwpOwotCWlmICh1aGNpLT5oY19pbmFjY2Vzc2libGUpCisJaWYgKCF0ZXN0X2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncykgfHwgdWhjaS0+ZGVhZCkKIAkJZ290byBkb25lOwotCWNoZWNrX2ZzYnIodWhjaSk7CiAJdWhjaV9jaGVja19wb3J0cyh1aGNpKTsKIAogCXN0YXR1cyA9IGdldF9odWJfc3RhdHVzX2RhdGEodWhjaSwgYnVmKTsKQEAgLTIyOCw3ICsyMjcsNyBAQAogCXUxNiB3UG9ydENoYW5nZSwgd1BvcnRTdGF0dXM7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmICh1aGNpLT5oY19pbmFjY2Vzc2libGUpCisJaWYgKCF0ZXN0X2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNkLT5mbGFncykgfHwgdWhjaS0+ZGVhZCkKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdWhjaS0+bG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC91aGNpLXEuYyBiL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1xLmMKaW5kZXggYTA2ZDg0Yy4uYzlkNzJhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC91aGNpLXEuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktcS5jCkBAIC0xMywxMCArMTMsOSBAQAogICogKEMpIENvcHlyaWdodCAyMDAwIFlnZ2RyYXNpbCBDb21wdXRpbmcsIEluYy4gKHBvcnQgb2YgbmV3IFBDSSBpbnRlcmZhY2UKICAqICAgICAgICAgICAgICAgc3VwcG9ydCBmcm9tIHVzYi1vaGNpLmMgYnkgQWRhbSBSaWNodGVyLCBhZGFtQHlnZ2RyYXNpbC5jb20pLgogICogKEMpIENvcHlyaWdodCAxOTk5IEdyZWdvcnkgUC4gU21pdGggKGZyb20gdXNiLW9oY2kuYykKLSAqIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA1IEFsYW4gU3Rlcm4sIHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHUKKyAqIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA2IEFsYW4gU3Rlcm4sIHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHUKICAqLwogCi1zdGF0aWMgdm9pZCB1aGNpX2ZyZWVfcGVuZGluZ190ZHMoc3RydWN0IHVoY2lfaGNkICp1aGNpKTsKIAogLyoKICAqIFRlY2huaWNhbGx5LCB1cGRhdGluZyB0ZC0+c3RhdHVzIGhlcmUgaXMgYSByYWNlLCBidXQgaXQncyBub3QgcmVhbGx5IGEKQEAgLTM4LDYgKzM3LDYwIEBACiAJdWhjaS0+dGVybV90ZC0+c3RhdHVzICY9IH5jcHVfdG9fbGUzMihURF9DVFJMX0lPQyk7CiB9CiAKKworLyoKKyAqIEZ1bGwtU3BlZWQgQmFuZHdpZHRoIFJlY2xhbWF0aW9uIChGU0JSKS4KKyAqIFdlIHR1cm4gb24gRlNCUiB3aGVuZXZlciBhIHF1ZXVlIHRoYXQgd2FudHMgaXQgaXMgYWR2YW5jaW5nLAorICogYW5kIGxlYXZlIGl0IG9uIGZvciBhIHNob3J0IHRpbWUgdGhlcmVhZnRlci4KKyAqLworc3RhdGljIHZvaWQgdWhjaV9mc2JyX29uKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSkKK3sKKwl1aGNpLT5mc2JyX2lzX29uID0gMTsKKwl1aGNpLT5za2VsX3Rlcm1fcWgtPmxpbmsgPSBjcHVfdG9fbGUzMigKKwkJCXVoY2ktPnNrZWxfZnNfY29udHJvbF9xaC0+ZG1hX2hhbmRsZSkgfCBVSENJX1BUUl9RSDsKK30KKworc3RhdGljIHZvaWQgdWhjaV9mc2JyX29mZihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kpCit7CisJdWhjaS0+ZnNicl9pc19vbiA9IDA7CisJdWhjaS0+c2tlbF90ZXJtX3FoLT5saW5rID0gVUhDSV9QVFJfVEVSTTsKK30KKworc3RhdGljIHZvaWQgdWhjaV9hZGRfZnNicihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYikKK3sKKwlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSB1cmItPmhjcHJpdjsKKworCWlmICghKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiBVUkJfTk9fRlNCUikpCisJCXVyYnAtPmZzYnIgPSAxOworfQorCitzdGF0aWMgdm9pZCB1aGNpX3VyYnBfd2FudHNfZnNicihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmJfcHJpdiAqdXJicCkKK3sKKwlpZiAodXJicC0+ZnNicikgeworCQl1aGNpLT5mc2JyX2lzX3dhbnRlZCA9IDE7CisJCWlmICghdWhjaS0+ZnNicl9pc19vbikKKwkJCXVoY2lfZnNicl9vbih1aGNpKTsKKwkJZWxzZSBpZiAodWhjaS0+ZnNicl9leHBpcmluZykgeworCQkJdWhjaS0+ZnNicl9leHBpcmluZyA9IDA7CisJCQlkZWxfdGltZXIoJnVoY2ktPmZzYnJfdGltZXIpOworCQl9CisJfQorfQorCitzdGF0aWMgdm9pZCB1aGNpX2ZzYnJfdGltZW91dCh1bnNpZ25lZCBsb25nIF91aGNpKQoreworCXN0cnVjdCB1aGNpX2hjZCAqdWhjaSA9IChzdHJ1Y3QgdWhjaV9oY2QgKikgX3VoY2k7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ1aGNpLT5sb2NrLCBmbGFncyk7CisJaWYgKHVoY2ktPmZzYnJfZXhwaXJpbmcpIHsKKwkJdWhjaS0+ZnNicl9leHBpcmluZyA9IDA7CisJCXVoY2lfZnNicl9vZmYodWhjaSk7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVoY2ktPmxvY2ssIGZsYWdzKTsKK30KKworCiBzdGF0aWMgc3RydWN0IHVoY2lfdGQgKnVoY2lfYWxsb2NfdGQoc3RydWN0IHVoY2lfaGNkICp1aGNpKQogewogCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTsKQEAgLTUxLDcgKzEwNCw2IEBACiAJdGQtPmZyYW1lID0gLTE7CiAKIAlJTklUX0xJU1RfSEVBRCgmdGQtPmxpc3QpOwotCUlOSVRfTElTVF9IRUFEKCZ0ZC0+cmVtb3ZlX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZ0ZC0+ZmxfbGlzdCk7CiAKIAlyZXR1cm4gdGQ7CkBAIC02MSw4ICsxMTMsNiBAQAogewogCWlmICghbGlzdF9lbXB0eSgmdGQtPmxpc3QpKQogCQlkZXZfd2Fybih1aGNpX2Rldih1aGNpKSwgInRkICVwIHN0aWxsIGluIGxpc3QhXG4iLCB0ZCk7Ci0JaWYgKCFsaXN0X2VtcHR5KCZ0ZC0+cmVtb3ZlX2xpc3QpKQotCQlkZXZfd2Fybih1aGNpX2Rldih1aGNpKSwgInRkICVwIHN0aWxsIGluIHJlbW92ZV9saXN0IVxuIiwgdGQpOwogCWlmICghbGlzdF9lbXB0eSgmdGQtPmZsX2xpc3QpKQogCQlkZXZfd2Fybih1aGNpX2Rldih1aGNpKSwgInRkICVwIHN0aWxsIGluIGZsX2xpc3QhXG4iLCB0ZCk7CiAKQEAgLTc3LDYgKzEyNywxNiBAQAogCXRkLT5idWZmZXIgPSBjcHVfdG9fbGUzMihidWZmZXIpOwogfQogCitzdGF0aWMgdm9pZCB1aGNpX2FkZF90ZF90b191cmJwKHN0cnVjdCB1aGNpX3RkICp0ZCwgc3RydWN0IHVyYl9wcml2ICp1cmJwKQoreworCWxpc3RfYWRkX3RhaWwoJnRkLT5saXN0LCAmdXJicC0+dGRfbGlzdCk7Cit9CisKK3N0YXRpYyB2b2lkIHVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJicChzdHJ1Y3QgdWhjaV90ZCAqdGQpCit7CisJbGlzdF9kZWxfaW5pdCgmdGQtPmxpc3QpOworfQorCiAvKgogICogV2UgaW5zZXJ0IElzb2Nocm9ub3VzIFVSQnMgZGlyZWN0bHkgaW50byB0aGUgZnJhbWUgbGlzdCBhdCB0aGUgYmVnaW5uaW5nCiAgKi8KQEAgLTEzOCw2ICsxOTgsMjQgQEAKIAl0ZC0+ZnJhbWUgPSAtMTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHVoY2lfcmVtb3ZlX3Rkc19mcm9tX2ZyYW1lKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwKKwkJdW5zaWduZWQgaW50IGZyYW1lbnVtKQoreworCXN0cnVjdCB1aGNpX3RkICpmdGQsICpsdGQ7CisKKwlmcmFtZW51bSAmPSAoVUhDSV9OVU1GUkFNRVMgLSAxKTsKKworCWZ0ZCA9IHVoY2ktPmZyYW1lX2NwdVtmcmFtZW51bV07CisJaWYgKGZ0ZCkgeworCQlsdGQgPSBsaXN0X2VudHJ5KGZ0ZC0+ZmxfbGlzdC5wcmV2LCBzdHJ1Y3QgdWhjaV90ZCwgZmxfbGlzdCk7CisJCXVoY2ktPmZyYW1lW2ZyYW1lbnVtXSA9IGx0ZC0+bGluazsKKwkJdWhjaS0+ZnJhbWVfY3B1W2ZyYW1lbnVtXSA9IE5VTEw7CisKKwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZmdGQtPmZsX2xpc3QpKQorCQkJbGlzdF9kZWxfaW5pdChmdGQtPmZsX2xpc3QucHJldik7CisJfQorfQorCiAvKgogICogUmVtb3ZlIGFsbCB0aGUgVERzIGZvciBhbiBJc29jaHJvbm91cyBVUkIgZnJvbSB0aGUgZnJhbWUgbGlzdAogICovCkBAIC0xNDgsNyArMjI2LDYgQEAKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodGQsICZ1cmJwLT50ZF9saXN0LCBsaXN0KQogCQl1aGNpX3JlbW92ZV90ZF9mcm9tX2ZyYW1lX2xpc3QodWhjaSwgdGQpOwotCXdtYigpOwogfQogCiBzdGF0aWMgc3RydWN0IHVoY2lfcWggKnVoY2lfYWxsb2NfcWgoc3RydWN0IHVoY2lfaGNkICp1aGNpLApAQCAtMTYxLDYgKzIzOCw3IEBACiAJaWYgKCFxaCkKIAkJcmV0dXJuIE5VTEw7CiAKKwltZW1zZXQocWgsIDAsIHNpemVvZigqcWgpKTsKIAlxaC0+ZG1hX2hhbmRsZSA9IGRtYV9oYW5kbGU7CiAKIAlxaC0+ZWxlbWVudCA9IFVIQ0lfUFRSX1RFUk07CkBAIC0xNzksMTAgKzI1NywxMSBAQAogCQlxaC0+aGVwID0gaGVwOwogCQlxaC0+dWRldiA9IHVkZXY7CiAJCWhlcC0+aGNwcml2ID0gcWg7CisJCXFoLT50eXBlID0gaGVwLT5kZXNjLmJtQXR0cmlidXRlcyAmIFVTQl9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLOwogCiAJfSBlbHNlIHsJCS8qIFNrZWxldG9uIFFIICovCiAJCXFoLT5zdGF0ZSA9IFFIX1NUQVRFX0FDVElWRTsKLQkJcWgtPnVkZXYgPSBOVUxMOworCQlxaC0+dHlwZSA9IC0xOwogCX0KIAlyZXR1cm4gcWg7CiB9CkBAIC0yMDIsMzUgKzI4MSw2NCBAQAogfQogCiAvKgotICogV2hlbiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBVUkIgaXMgZGVxdWV1ZWQsIHNhdmUgaXRzIGN1cnJlbnQgdG9nZ2xlIHZhbHVlCisgKiBXaGVuIGEgcXVldWUgaXMgc3RvcHBlZCBhbmQgYSBkZXF1ZXVlZCBVUkIgaXMgZ2l2ZW4gYmFjaywgYWRqdXN0CisgKiB0aGUgcHJldmlvdXMgVEQgbGluayAoaWYgdGhlIFVSQiBpc24ndCBmaXJzdCBvbiB0aGUgcXVldWUpIG9yCisgKiBzYXZlIGl0cyB0b2dnbGUgdmFsdWUgKGlmIGl0IGlzIGZpcnN0IGFuZCBpcyBjdXJyZW50bHkgZXhlY3V0aW5nKS4KKyAqCisgKiBSZXR1cm5zIDAgaWYgdGhlIFVSQiBzaG91bGQgbm90IHlldCBiZSBnaXZlbiBiYWNrLCAxIG90aGVyd2lzZS4KICAqLwotc3RhdGljIHZvaWQgdWhjaV9zYXZlX3RvZ2dsZShzdHJ1Y3QgdWhjaV9xaCAqcWgsIHN0cnVjdCB1cmIgKnVyYikKK3N0YXRpYyBpbnQgdWhjaV9jbGVhbnVwX3F1ZXVlKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVoY2lfcWggKnFoLAorCQlzdHJ1Y3QgdXJiICp1cmIpCiB7Ci0Jc3RydWN0IHVyYl9wcml2ICp1cmJwID0gKHN0cnVjdCB1cmJfcHJpdiAqKSB1cmItPmhjcHJpdjsKKwlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSB1cmItPmhjcHJpdjsKIAlzdHJ1Y3QgdWhjaV90ZCAqdGQ7CisJaW50IHJldCA9IDE7CisKKwkvKiBJc29jaHJvbm91cyBwaXBlcyBkb24ndCB1c2UgdG9nZ2xlcyBhbmQgdGhlaXIgVEQgbGluayBwb2ludGVycworCSAqIGdldCBhZGp1c3RlZCBkdXJpbmcgdWhjaV91cmJfZGVxdWV1ZSgpLiAgQnV0IHNpbmNlIHRoZWlyIHF1ZXVlcworCSAqIGNhbm5vdCB0cnVseSBiZSBzdG9wcGVkLCB3ZSBoYXZlIHRvIHdhdGNoIG91dCBmb3IgZGVxdWV1ZXMKKwkgKiBvY2N1cnJpbmcgYWZ0ZXIgdGhlIG5vbWluYWwgdW5saW5rIGZyYW1lLiAqLworCWlmIChxaC0+dHlwZSA9PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DKSB7CisJCXJldCA9ICh1aGNpLT5mcmFtZV9udW1iZXIgKyB1aGNpLT5pc19zdG9wcGVkICE9CisJCQkJcWgtPnVubGlua19mcmFtZSk7CisJCWdvdG8gZG9uZTsKKwl9CisKKwkvKiBJZiB0aGUgVVJCIGlzbid0IGZpcnN0IG9uIGl0cyBxdWV1ZSwgYWRqdXN0IHRoZSBsaW5rIHBvaW50ZXIKKwkgKiBvZiB0aGUgbGFzdCBURCBpbiB0aGUgcHJldmlvdXMgVVJCLiAgVGhlIHRvZ2dsZSBkb2Vzbid0IG5lZWQKKwkgKiB0byBiZSBzYXZlZCBzaW5jZSB0aGlzIFVSQiBjYW4ndCBiZSBleGVjdXRpbmcgeWV0LiAqLworCWlmIChxaC0+cXVldWUubmV4dCAhPSAmdXJicC0+bm9kZSkgeworCQlzdHJ1Y3QgdXJiX3ByaXYgKnB1cmJwOworCQlzdHJ1Y3QgdWhjaV90ZCAqcHRkOworCisJCXB1cmJwID0gbGlzdF9lbnRyeSh1cmJwLT5ub2RlLnByZXYsIHN0cnVjdCB1cmJfcHJpdiwgbm9kZSk7CisJCVdBUk5fT04obGlzdF9lbXB0eSgmcHVyYnAtPnRkX2xpc3QpKTsKKwkJcHRkID0gbGlzdF9lbnRyeShwdXJicC0+dGRfbGlzdC5wcmV2LCBzdHJ1Y3QgdWhjaV90ZCwKKwkJCQlsaXN0KTsKKwkJdGQgPSBsaXN0X2VudHJ5KHVyYnAtPnRkX2xpc3QucHJldiwgc3RydWN0IHVoY2lfdGQsCisJCQkJbGlzdCk7CisJCXB0ZC0+bGluayA9IHRkLT5saW5rOworCQlnb3RvIGRvbmU7CisJfQogCiAJLyogSWYgdGhlIFFIIGVsZW1lbnQgcG9pbnRlciBpcyBVSENJX1BUUl9URVJNIHRoZW4gdGhlbiBjdXJyZW50bHkKIAkgKiBleGVjdXRpbmcgVVJCIGhhcyBhbHJlYWR5IGJlZW4gdW5saW5rZWQsIHNvIHRoaXMgb25lIGlzbid0IGl0LiAqLwotCWlmIChxaF9lbGVtZW50KHFoKSA9PSBVSENJX1BUUl9URVJNIHx8Ci0JCQkJcWgtPnF1ZXVlLm5leHQgIT0gJnVyYnAtPm5vZGUpCi0JCXJldHVybjsKKwlpZiAocWhfZWxlbWVudChxaCkgPT0gVUhDSV9QVFJfVEVSTSkKKwkJZ290byBkb25lOwogCXFoLT5lbGVtZW50ID0gVUhDSV9QVFJfVEVSTTsKIAotCS8qIE9ubHkgYnVsayBhbmQgaW50ZXJydXB0IHBpcGVzIGhhdmUgdG8gd29ycnkgYWJvdXQgdG9nZ2xlcyAqLwotCWlmICghKHVzYl9waXBldHlwZSh1cmItPnBpcGUpID09IFBJUEVfQlVMSyB8fAotCQkJdXNiX3BpcGV0eXBlKHVyYi0+cGlwZSkgPT0gUElQRV9JTlRFUlJVUFQpKQotCQlyZXR1cm47CisJLyogQ29udHJvbCBwaXBlcyBoYXZlIHRvIHdvcnJ5IGFib3V0IHRvZ2dsZXMgKi8KKwlpZiAocWgtPnR5cGUgPT0gVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJPTCkKKwkJZ290byBkb25lOwogCi0JLyogRmluZCB0aGUgZmlyc3QgYWN0aXZlIFREOyB0aGF0J3MgdGhlIGRldmljZSdzIHRvZ2dsZSBzdGF0ZSAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkodGQsICZ1cmJwLT50ZF9saXN0LCBsaXN0KSB7Ci0JCWlmICh0ZF9zdGF0dXModGQpICYgVERfQ1RSTF9BQ1RJVkUpIHsKLQkJCXFoLT5uZWVkc19maXh1cCA9IDE7Ci0JCQlxaC0+aW5pdGlhbF90b2dnbGUgPSB1aGNpX3RvZ2dsZSh0ZF90b2tlbih0ZCkpOwotCQkJcmV0dXJuOwotCQl9Ci0JfQorCS8qIFNhdmUgdGhlIG5leHQgdG9nZ2xlIHZhbHVlICovCisJV0FSTl9PTihsaXN0X2VtcHR5KCZ1cmJwLT50ZF9saXN0KSk7CisJdGQgPSBsaXN0X2VudHJ5KHVyYnAtPnRkX2xpc3QubmV4dCwgc3RydWN0IHVoY2lfdGQsIGxpc3QpOworCXFoLT5uZWVkc19maXh1cCA9IDE7CisJcWgtPmluaXRpYWxfdG9nZ2xlID0gdWhjaV90b2dnbGUodGRfdG9rZW4odGQpKTsKIAotCVdBUk5fT04oMSk7Citkb25lOgorCXJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC0zMDUsNiArNDEzLDEwIEBACiAJCXFoLT5lbGVtZW50ID0gY3B1X3RvX2xlMzIodGQtPmRtYV9oYW5kbGUpOwogCX0KIAorCS8qIFRyZWF0IHRoZSBxdWV1ZSBhcyBpZiBpdCBoYXMganVzdCBhZHZhbmNlZCAqLworCXFoLT53YWl0X2V4cGlyZWQgPSAwOworCXFoLT5hZHZhbmNlX2ppZmZpZXMgPSBqaWZmaWVzOworCiAJaWYgKHFoLT5zdGF0ZSA9PSBRSF9TVEFURV9BQ1RJVkUpCiAJCXJldHVybjsKIAlxaC0+c3RhdGUgPSBRSF9TVEFURV9BQ1RJVkU7CkBAIC0zNzAsNiArNDgyLDEyIEBACiAJbGlzdF9tb3ZlKCZxaC0+bm9kZSwgJnVoY2ktPmlkbGVfcWhfbGlzdCk7CiAJcWgtPnN0YXRlID0gUUhfU1RBVEVfSURMRTsKIAorCS8qIE5vdyB0aGF0IHRoZSBRSCBpcyBpZGxlLCBpdHMgcG9zdF90ZCBpc24ndCBiZWluZyB1c2VkICovCisJaWYgKHFoLT5wb3N0X3RkKSB7CisJCXVoY2lfZnJlZV90ZCh1aGNpLCBxaC0+cG9zdF90ZCk7CisJCXFoLT5wb3N0X3RkID0gTlVMTDsKKwl9CisKIAkvKiBJZiBhbnlvbmUgaXMgd2FpdGluZyBmb3IgYSBRSCB0byBiZWNvbWUgaWRsZSwgd2FrZSB0aGVtIHVwICovCiAJaWYgKHVoY2ktPm51bV93YWl0aW5nKQogCQl3YWtlX3VwX2FsbCgmdWhjaS0+d2FpdHFoKTsKQEAgLTM5NSwyMSArNTEzLDYgQEAKIAlyZXR1cm4gdXJicDsKIH0KIAotc3RhdGljIHZvaWQgdWhjaV9hZGRfdGRfdG9fdXJiKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IHVoY2lfdGQgKnRkKQotewotCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IChzdHJ1Y3QgdXJiX3ByaXYgKil1cmItPmhjcHJpdjsKLQotCWxpc3RfYWRkX3RhaWwoJnRkLT5saXN0LCAmdXJicC0+dGRfbGlzdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJiKHN0cnVjdCB1aGNpX3RkICp0ZCkKLXsKLQlpZiAobGlzdF9lbXB0eSgmdGQtPmxpc3QpKQotCQlyZXR1cm47Ci0KLQlsaXN0X2RlbF9pbml0KCZ0ZC0+bGlzdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHVoY2lfZnJlZV91cmJfcHJpdihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksCiAJCXN0cnVjdCB1cmJfcHJpdiAqdXJicCkKIHsKQEAgLTQxOSw0OCArNTIyLDE1IEBACiAJCWRldl93YXJuKHVoY2lfZGV2KHVoY2kpLCAidXJiICVwIHN0aWxsIG9uIFFIJ3MgbGlzdCFcbiIsCiAJCQkJdXJicC0+dXJiKTsKIAotCXVoY2lfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyKHVoY2kpOwotCWlmICh1aGNpLT5mcmFtZV9udW1iZXIgKyB1aGNpLT5pc19zdG9wcGVkICE9IHVoY2ktPnRkX3JlbW92ZV9hZ2UpIHsKLQkJdWhjaV9mcmVlX3BlbmRpbmdfdGRzKHVoY2kpOwotCQl1aGNpLT50ZF9yZW1vdmVfYWdlID0gdWhjaS0+ZnJhbWVfbnVtYmVyOwotCX0KLQotCS8qIENoZWNrIHRvIHNlZSBpZiB0aGUgcmVtb3ZlIGxpc3QgaXMgZW1wdHkuIFNldCB0aGUgSU9DIGJpdCAqLwotCS8qIHRvIGZvcmNlIGFuIGludGVycnVwdCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBURHMuICovCi0JaWYgKGxpc3RfZW1wdHkoJnVoY2ktPnRkX3JlbW92ZV9saXN0KSkKLQkJdWhjaV9zZXRfbmV4dF9pbnRlcnJ1cHQodWhjaSk7Ci0KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGQsIHRtcCwgJnVyYnAtPnRkX2xpc3QsIGxpc3QpIHsKLQkJdWhjaV9yZW1vdmVfdGRfZnJvbV91cmIodGQpOwotCQlsaXN0X2FkZCgmdGQtPnJlbW92ZV9saXN0LCAmdWhjaS0+dGRfcmVtb3ZlX2xpc3QpOworCQl1aGNpX3JlbW92ZV90ZF9mcm9tX3VyYnAodGQpOworCQl1aGNpX2ZyZWVfdGQodWhjaSwgdGQpOwogCX0KIAogCXVyYnAtPnVyYi0+aGNwcml2ID0gTlVMTDsKIAlrbWVtX2NhY2hlX2ZyZWUodWhjaV91cF9jYWNoZXAsIHVyYnApOwogfQogCi1zdGF0aWMgdm9pZCB1aGNpX2luY19mc2JyKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVyYiAqdXJiKQotewotCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IChzdHJ1Y3QgdXJiX3ByaXYgKil1cmItPmhjcHJpdjsKLQotCWlmICgoISh1cmItPnRyYW5zZmVyX2ZsYWdzICYgVVJCX05PX0ZTQlIpKSAmJiAhdXJicC0+ZnNicikgewotCQl1cmJwLT5mc2JyID0gMTsKLQkJaWYgKCF1aGNpLT5mc2JyKysgJiYgIXVoY2ktPmZzYnJ0aW1lb3V0KQotCQkJdWhjaS0+c2tlbF90ZXJtX3FoLT5saW5rID0gY3B1X3RvX2xlMzIodWhjaS0+c2tlbF9mc19jb250cm9sX3FoLT5kbWFfaGFuZGxlKSB8IFVIQ0lfUFRSX1FIOwotCX0KLX0KLQotc3RhdGljIHZvaWQgdWhjaV9kZWNfZnNicihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYikKLXsKLQlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSAoc3RydWN0IHVyYl9wcml2ICopdXJiLT5oY3ByaXY7Ci0KLQlpZiAoKCEodXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9OT19GU0JSKSkgJiYgdXJicC0+ZnNicikgewotCQl1cmJwLT5mc2JyID0gMDsKLQkJaWYgKCEtLXVoY2ktPmZzYnIpCi0JCQl1aGNpLT5mc2JydGltZW91dCA9IGppZmZpZXMgKyBGU0JSX0RFTEFZOwotCX0KLX0KLQogLyoKICAqIE1hcCBzdGF0dXMgdG8gc3RhbmRhcmQgcmVzdWx0IGNvZGVzCiAgKgpAQCAtNDg3LDcgKzU1Nyw2IEBACiAJCXJldHVybiAtRU5PU1I7CiAJaWYgKHN0YXR1cyAmIFREX0NUUkxfU1RBTExFRCkJCQkvKiBTdGFsbGVkICovCiAJCXJldHVybiAtRVBJUEU7Ci0JV0FSTl9PTihzdGF0dXMgJiBURF9DVFJMX0FDVElWRSk7CQkvKiBBY3RpdmUgKi8KIAlyZXR1cm4gMDsKIH0KIApAQCAtNTAzLDYgKzU3Miw3IEBACiAJaW50IGxlbiA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKIAlkbWFfYWRkcl90IGRhdGEgPSB1cmItPnRyYW5zZmVyX2RtYTsKIAlfX2xlMzIgKnBsaW5rOworCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IHVyYi0+aGNwcml2OwogCiAJLyogVGhlICJwaXBlIiB0aGluZyBjb250YWlucyB0aGUgZGVzdGluYXRpb24gaW4gYml0cyA4LS0xOCAqLwogCWRlc3RpbmF0aW9uID0gKHVyYi0+cGlwZSAmIFBJUEVfREVWRVBfTUFTSykgfCBVU0JfUElEX1NFVFVQOwpAQCAtNTE2LDcgKzU4Niw3IEBACiAJICogQnVpbGQgdGhlIFREIGZvciB0aGUgY29udHJvbCByZXF1ZXN0IHNldHVwIHBhY2tldAogCSAqLwogCXRkID0gcWgtPmR1bW15X3RkOwotCXVoY2lfYWRkX3RkX3RvX3VyYih1cmIsIHRkKTsKKwl1aGNpX2FkZF90ZF90b191cmJwKHRkLCB1cmJwKTsKIAl1aGNpX2ZpbGxfdGQodGQsIHN0YXR1cywgZGVzdGluYXRpb24gfCB1aGNpX2V4cGxlbig4KSwKIAkJCXVyYi0+c2V0dXBfZG1hKTsKIAlwbGluayA9ICZ0ZC0+bGluazsKQEAgLTU0OCw3ICs2MTgsNyBAQAogCQkvKiBBbHRlcm5hdGUgRGF0YTAvMSAoc3RhcnQgd2l0aCBEYXRhMSkgKi8KIAkJZGVzdGluYXRpb24gXj0gVERfVE9LRU5fVE9HR0xFOwogCQotCQl1aGNpX2FkZF90ZF90b191cmIodXJiLCB0ZCk7CisJCXVoY2lfYWRkX3RkX3RvX3VyYnAodGQsIHVyYnApOwogCQl1aGNpX2ZpbGxfdGQodGQsIHN0YXR1cywgZGVzdGluYXRpb24gfCB1aGNpX2V4cGxlbihwa3RzemUpLAogCQkJCWRhdGEpOwogCQlwbGluayA9ICZ0ZC0+bGluazsKQEAgLTU3OSw3ICs2NDksNyBAQAogCiAJc3RhdHVzICY9IH5URF9DVFJMX1NQRDsKIAotCXVoY2lfYWRkX3RkX3RvX3VyYih1cmIsIHRkKTsKKwl1aGNpX2FkZF90ZF90b191cmJwKHRkLCB1cmJwKTsKIAl1aGNpX2ZpbGxfdGQodGQsIHN0YXR1cyB8IFREX0NUUkxfSU9DLAogCQkJZGVzdGluYXRpb24gfCB1aGNpX2V4cGxlbigwKSwgMCk7CiAJcGxpbmsgPSAmdGQtPmxpbms7CkBAIC02MDYsMTQ1ICs2NzYsMTkgQEAKIAkJcWgtPnNrZWwgPSB1aGNpLT5za2VsX2xzX2NvbnRyb2xfcWg7CiAJZWxzZSB7CiAJCXFoLT5za2VsID0gdWhjaS0+c2tlbF9mc19jb250cm9sX3FoOwotCQl1aGNpX2luY19mc2JyKHVoY2ksIHVyYik7CisJCXVoY2lfYWRkX2ZzYnIodWhjaSwgdXJiKTsKIAl9CisKKwl1cmItPmFjdHVhbF9sZW5ndGggPSAtODsJLyogQWNjb3VudCBmb3IgdGhlIFNFVFVQIHBhY2tldCAqLwogCXJldHVybiAwOwogCiBub21lbToKIAkvKiBSZW1vdmUgdGhlIGR1bW15IFREIGZyb20gdGhlIHRkX2xpc3Qgc28gaXQgZG9lc24ndCBnZXQgZnJlZWQgKi8KLQl1aGNpX3JlbW92ZV90ZF9mcm9tX3VyYihxaC0+ZHVtbXlfdGQpOworCXVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJicChxaC0+ZHVtbXlfdGQpOwogCXJldHVybiAtRU5PTUVNOwogfQogCiAvKgotICogSWYgY29udHJvbC1JTiB0cmFuc2ZlciB3YXMgc2hvcnQsIHRoZSBzdGF0dXMgcGFja2V0IHdhc24ndCBzZW50LgotICogVGhpcyByb3V0aW5lIGNoYW5nZXMgdGhlIGVsZW1lbnQgcG9pbnRlciBpbiB0aGUgUUggdG8gcG9pbnQgYXQgdGhlCi0gKiBzdGF0dXMgVEQuICBJdCdzIHNhZmUgdG8gZG8gdGhpcyBldmVuIHdoaWxlIHRoZSBRSCBpcyBsaXZlLCBiZWNhdXNlCi0gKiB0aGUgaGFyZHdhcmUgb25seSB1cGRhdGVzIHRoZSBlbGVtZW50IHBvaW50ZXIgZm9sbG93aW5nIGEgc3VjY2Vzc2Z1bAotICogdHJhbnNmZXIuICBUaGUgaW5hY3RpdmUgVEQgZm9yIHRoZSBzaG9ydCBwYWNrZXQgd29uJ3QgY2F1c2UgYW4gdXBkYXRlLAotICogc28gdGhlIHBvaW50ZXIgd29uJ3QgZ2V0IG92ZXJ3cml0dGVuLiAgVGhlIG5leHQgdGltZSB0aGUgY29udHJvbGxlcgotICogc2VlcyB0aGlzIFFILCBpdCB3aWxsIHNlbmQgdGhlIHN0YXR1cyBwYWNrZXQuCi0gKi8KLXN0YXRpYyBpbnQgdXNiX2NvbnRyb2xfcmV0cmlnZ2VyX3N0YXR1cyhzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYikKLXsKLQlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSAoc3RydWN0IHVyYl9wcml2ICopdXJiLT5oY3ByaXY7Ci0Jc3RydWN0IHVoY2lfdGQgKnRkOwotCi0JdXJicC0+c2hvcnRfdHJhbnNmZXIgPSAxOwotCi0JdGQgPSBsaXN0X2VudHJ5KHVyYnAtPnRkX2xpc3QucHJldiwgc3RydWN0IHVoY2lfdGQsIGxpc3QpOwotCXVyYnAtPnFoLT5lbGVtZW50ID0gY3B1X3RvX2xlMzIodGQtPmRtYV9oYW5kbGUpOwotCi0JcmV0dXJuIC1FSU5QUk9HUkVTUzsKLX0KLQotCi1zdGF0aWMgaW50IHVoY2lfcmVzdWx0X2NvbnRyb2woc3RydWN0IHVoY2lfaGNkICp1aGNpLCBzdHJ1Y3QgdXJiICp1cmIpCi17Ci0Jc3RydWN0IGxpc3RfaGVhZCAqdG1wLCAqaGVhZDsKLQlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSB1cmItPmhjcHJpdjsKLQlzdHJ1Y3QgdWhjaV90ZCAqdGQ7Ci0JdW5zaWduZWQgaW50IHN0YXR1czsKLQlpbnQgcmV0ID0gMDsKLQotCWhlYWQgPSAmdXJicC0+dGRfbGlzdDsKLQlpZiAodXJicC0+c2hvcnRfdHJhbnNmZXIpIHsKLQkJdG1wID0gaGVhZC0+cHJldjsKLQkJZ290byBzdGF0dXNfc3RhZ2U7Ci0JfQotCi0JdXJiLT5hY3R1YWxfbGVuZ3RoID0gMDsKLQotCXRtcCA9IGhlYWQtPm5leHQ7Ci0JdGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IHVoY2lfdGQsIGxpc3QpOwotCi0JLyogVGhlIGZpcnN0IFREIGlzIHRoZSBTRVRVUCBzdGFnZSwgY2hlY2sgdGhlIHN0YXR1cywgYnV0IHNraXAgKi8KLQkvKiAgdGhlIGNvdW50ICovCi0Jc3RhdHVzID0gdWhjaV9zdGF0dXNfYml0cyh0ZF9zdGF0dXModGQpKTsKLQlpZiAoc3RhdHVzICYgVERfQ1RSTF9BQ1RJVkUpCi0JCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0KLQlpZiAoc3RhdHVzKQotCQlnb3RvIHRkX2Vycm9yOwotCi0JLyogVGhlIHJlc3Qgb2YgdGhlIFREcyAoYnV0IHRoZSBsYXN0KSBhcmUgZGF0YSAqLwotCXRtcCA9IHRtcC0+bmV4dDsKLQl3aGlsZSAodG1wICE9IGhlYWQgJiYgdG1wLT5uZXh0ICE9IGhlYWQpIHsKLQkJdW5zaWduZWQgaW50IGN0cmxzdGF0OwotCi0JCXRkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCB1aGNpX3RkLCBsaXN0KTsKLQkJdG1wID0gdG1wLT5uZXh0OwotCi0JCWN0cmxzdGF0ID0gdGRfc3RhdHVzKHRkKTsKLQkJc3RhdHVzID0gdWhjaV9zdGF0dXNfYml0cyhjdHJsc3RhdCk7Ci0JCWlmIChzdGF0dXMgJiBURF9DVFJMX0FDVElWRSkKLQkJCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0KLQkJdXJiLT5hY3R1YWxfbGVuZ3RoICs9IHVoY2lfYWN0dWFsX2xlbmd0aChjdHJsc3RhdCk7Ci0KLQkJaWYgKHN0YXR1cykKLQkJCWdvdG8gdGRfZXJyb3I7Ci0KLQkJLyogQ2hlY2sgdG8gc2VlIGlmIHdlIHJlY2VpdmVkIGEgc2hvcnQgcGFja2V0ICovCi0JCWlmICh1aGNpX2FjdHVhbF9sZW5ndGgoY3RybHN0YXQpIDwKLQkJCQl1aGNpX2V4cGVjdGVkX2xlbmd0aCh0ZF90b2tlbih0ZCkpKSB7Ci0JCQlpZiAodXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9TSE9SVF9OT1RfT0spIHsKLQkJCQlyZXQgPSAtRVJFTU9URUlPOwotCQkJCWdvdG8gZXJyOwotCQkJfQotCi0JCQlyZXR1cm4gdXNiX2NvbnRyb2xfcmV0cmlnZ2VyX3N0YXR1cyh1aGNpLCB1cmIpOwotCQl9Ci0JfQotCi1zdGF0dXNfc3RhZ2U6Ci0JdGQgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IHVoY2lfdGQsIGxpc3QpOwotCi0JLyogQ29udHJvbCBzdGF0dXMgc3RhZ2UgKi8KLQlzdGF0dXMgPSB0ZF9zdGF0dXModGQpOwotCi0jaWZkZWYgSV9IQVZFX0JVR0dZX0FQQ19CQUNLVVBTCi0JLyogQVBDIEJhY2tVUFMgUHJvIGtsdWRnZSAqLwotCS8qIEl0IHRyaWVzIHRvIHNlbmQgYWxsIG9mIHRoZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgdGhlIGFtb3VudCAqLwotCS8qICB3ZSByZXF1ZXN0ZWQgKi8KLQlpZiAoc3RhdHVzICYgVERfQ1RSTF9JT0MgJiYJLyogSU9DIGlzIG1hc2tlZCBvdXQgYnkgdWhjaV9zdGF0dXNfYml0cyAqLwotCSAgICBzdGF0dXMgJiBURF9DVFJMX0FDVElWRSAmJgotCSAgICBzdGF0dXMgJiBURF9DVFJMX05BSykKLQkJcmV0dXJuIDA7Ci0jZW5kaWYKLQotCXN0YXR1cyA9IHVoY2lfc3RhdHVzX2JpdHMoc3RhdHVzKTsKLQlpZiAoc3RhdHVzICYgVERfQ1RSTF9BQ1RJVkUpCi0JCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0KLQlpZiAoc3RhdHVzKQotCQlnb3RvIHRkX2Vycm9yOwotCi0JcmV0dXJuIDA7Ci0KLXRkX2Vycm9yOgotCXJldCA9IHVoY2lfbWFwX3N0YXR1cyhzdGF0dXMsIHVoY2lfcGFja2V0b3V0KHRkX3Rva2VuKHRkKSkpOwotCi1lcnI6Ci0JaWYgKChkZWJ1ZyA9PSAxICYmIHJldCAhPSAtRVBJUEUpIHx8IGRlYnVnID4gMSkgewotCQkvKiBTb21lIGRlYnVnZ2luZyBjb2RlICovCi0JCWRldl9kYmcodWhjaV9kZXYodWhjaSksICIlczogZmFpbGVkIHdpdGggc3RhdHVzICV4XG4iLAotCQkJCV9fRlVOQ1RJT05fXywgc3RhdHVzKTsKLQotCQlpZiAoZXJyYnVmKSB7Ci0JCQkvKiBQcmludCB0aGUgY2hhaW4gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqLwotCQkJdWhjaV9zaG93X3FoKHVyYnAtPnFoLCBlcnJidWYsIEVSUkJVRl9MRU4sIDApOwotCQkJbHByaW50ayhlcnJidWYpOwotCQl9Ci0JfQotCi0JLyogTm90ZSB0aGF0IHRoZSBxdWV1ZSBoYXMgc3RvcHBlZCAqLwotCXVyYnAtPnFoLT5lbGVtZW50ID0gVUhDSV9QVFJfVEVSTTsKLQl1cmJwLT5xaC0+aXNfc3RvcHBlZCA9IDE7Ci0JcmV0dXJuIHJldDsKLX0KLQotLyoKICAqIENvbW1vbiBzdWJtaXQgZm9yIGJ1bGsgYW5kIGludGVycnVwdAogICovCiBzdGF0aWMgaW50IHVoY2lfc3VibWl0X2NvbW1vbihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYiwKQEAgLTc1Niw2ICs3MDAsNyBAQAogCWludCBsZW4gPSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CiAJZG1hX2FkZHJfdCBkYXRhID0gdXJiLT50cmFuc2Zlcl9kbWE7CiAJX19sZTMyICpwbGluazsKKwlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSB1cmItPmhjcHJpdjsKIAl1bnNpZ25lZCBpbnQgdG9nZ2xlOwogCiAJaWYgKGxlbiA8IDApCkBAIC03OTMsNyArNzM4LDcgQEAKIAkJCQlnb3RvIG5vbWVtOwogCQkJKnBsaW5rID0gY3B1X3RvX2xlMzIodGQtPmRtYV9oYW5kbGUpOwogCQl9Ci0JCXVoY2lfYWRkX3RkX3RvX3VyYih1cmIsIHRkKTsKKwkJdWhjaV9hZGRfdGRfdG9fdXJicCh0ZCwgdXJicCk7CiAJCXVoY2lfZmlsbF90ZCh0ZCwgc3RhdHVzLAogCQkJCWRlc3RpbmF0aW9uIHwgdWhjaV9leHBsZW4ocGt0c3plKSB8CiAJCQkJCSh0b2dnbGUgPDwgVERfVE9LRU5fVE9HR0xFX1NISUZUKSwKQEAgLTgyMSw3ICs3NjYsNyBAQAogCQkJZ290byBub21lbTsKIAkJKnBsaW5rID0gY3B1X3RvX2xlMzIodGQtPmRtYV9oYW5kbGUpOwogCi0JCXVoY2lfYWRkX3RkX3RvX3VyYih1cmIsIHRkKTsKKwkJdWhjaV9hZGRfdGRfdG9fdXJicCh0ZCwgdXJicCk7CiAJCXVoY2lfZmlsbF90ZCh0ZCwgc3RhdHVzLAogCQkJCWRlc3RpbmF0aW9uIHwgdWhjaV9leHBsZW4oMCkgfAogCQkJCQkodG9nZ2xlIDw8IFREX1RPS0VOX1RPR0dMRV9TSElGVCksCkBAIC04NTEsNiArNzk2LDcgQEAKIAl3bWIoKTsKIAlxaC0+ZHVtbXlfdGQtPnN0YXR1cyB8PSBfX2NvbnN0YW50X2NwdV90b19sZTMyKFREX0NUUkxfQUNUSVZFKTsKIAlxaC0+ZHVtbXlfdGQgPSB0ZDsKKwlxaC0+cGVyaW9kID0gdXJiLT5pbnRlcnZhbDsKIAogCXVzYl9zZXR0b2dnbGUodXJiLT5kZXYsIHVzYl9waXBlZW5kcG9pbnQodXJiLT5waXBlKSwKIAkJCXVzYl9waXBlb3V0KHVyYi0+cGlwZSksIHRvZ2dsZSk7CkBAIC04NTgsOTAgKzgwNCwxMCBAQAogCiBub21lbToKIAkvKiBSZW1vdmUgdGhlIGR1bW15IFREIGZyb20gdGhlIHRkX2xpc3Qgc28gaXQgZG9lc24ndCBnZXQgZnJlZWQgKi8KLQl1aGNpX3JlbW92ZV90ZF9mcm9tX3VyYihxaC0+ZHVtbXlfdGQpOworCXVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJicChxaC0+ZHVtbXlfdGQpOwogCXJldHVybiAtRU5PTUVNOwogfQogCi0vKgotICogQ29tbW9uIHJlc3VsdCBmb3IgYnVsayBhbmQgaW50ZXJydXB0Ci0gKi8KLXN0YXRpYyBpbnQgdWhjaV9yZXN1bHRfY29tbW9uKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVyYiAqdXJiKQotewotCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IHVyYi0+aGNwcml2OwotCXN0cnVjdCB1aGNpX3RkICp0ZDsKLQl1bnNpZ25lZCBpbnQgc3RhdHVzID0gMDsKLQlpbnQgcmV0ID0gMDsKLQotCXVyYi0+YWN0dWFsX2xlbmd0aCA9IDA7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRkLCAmdXJicC0+dGRfbGlzdCwgbGlzdCkgewotCQl1bnNpZ25lZCBpbnQgY3RybHN0YXQgPSB0ZF9zdGF0dXModGQpOwotCi0JCXN0YXR1cyA9IHVoY2lfc3RhdHVzX2JpdHMoY3RybHN0YXQpOwotCQlpZiAoc3RhdHVzICYgVERfQ1RSTF9BQ1RJVkUpCi0JCQlyZXR1cm4gLUVJTlBST0dSRVNTOwotCi0JCXVyYi0+YWN0dWFsX2xlbmd0aCArPSB1aGNpX2FjdHVhbF9sZW5ndGgoY3RybHN0YXQpOwotCi0JCWlmIChzdGF0dXMpCi0JCQlnb3RvIHRkX2Vycm9yOwotCi0JCWlmICh1aGNpX2FjdHVhbF9sZW5ndGgoY3RybHN0YXQpIDwKLQkJCQl1aGNpX2V4cGVjdGVkX2xlbmd0aCh0ZF90b2tlbih0ZCkpKSB7Ci0JCQlpZiAodXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9TSE9SVF9OT1RfT0spIHsKLQkJCQlyZXQgPSAtRVJFTU9URUlPOwotCQkJCWdvdG8gZXJyOwotCQkJfQotCi0JCQkvKgotCQkJICogVGhpcyBVUkIgc3RvcHBlZCBzaG9ydCBvZiBpdHMgZW5kLiAgV2UgaGF2ZSB0bwotCQkJICogZml4IHVwIHRoZSB0b2dnbGVzIG9mIHRoZSBmb2xsb3dpbmcgVVJCcyBvbiB0aGUKLQkJCSAqIHF1ZXVlIGFuZCByZXN0YXJ0IHRoZSBxdWV1ZS4KLQkJCSAqCi0JCQkgKiBEbyB0aGlzIG9ubHkgdGhlIGZpcnN0IHRpbWUgd2UgZW5jb3VudGVyIHRoZQotCQkJICogc2hvcnQgVVJCLgotCQkJICovCi0JCQlpZiAoIXVyYnAtPnNob3J0X3RyYW5zZmVyKSB7Ci0JCQkJdXJicC0+c2hvcnRfdHJhbnNmZXIgPSAxOwotCQkJCXVyYnAtPnFoLT5pbml0aWFsX3RvZ2dsZSA9Ci0JCQkJCQl1aGNpX3RvZ2dsZSh0ZF90b2tlbih0ZCkpIF4gMTsKLQkJCQl1aGNpX2ZpeHVwX3RvZ2dsZXModXJicC0+cWgsIDEpOwotCi0JCQkJdGQgPSBsaXN0X2VudHJ5KHVyYnAtPnRkX2xpc3QucHJldiwKLQkJCQkJCXN0cnVjdCB1aGNpX3RkLCBsaXN0KTsKLQkJCQl1cmJwLT5xaC0+ZWxlbWVudCA9IHRkLT5saW5rOwotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gMDsKLQotdGRfZXJyb3I6Ci0JcmV0ID0gdWhjaV9tYXBfc3RhdHVzKHN0YXR1cywgdWhjaV9wYWNrZXRvdXQodGRfdG9rZW4odGQpKSk7Ci0KLQlpZiAoKGRlYnVnID09IDEgJiYgcmV0ICE9IC1FUElQRSkgfHwgZGVidWcgPiAxKSB7Ci0JCS8qIFNvbWUgZGVidWdnaW5nIGNvZGUgKi8KLQkJZGV2X2RiZyh1aGNpX2Rldih1aGNpKSwgIiVzOiBmYWlsZWQgd2l0aCBzdGF0dXMgJXhcbiIsCi0JCQkJX19GVU5DVElPTl9fLCBzdGF0dXMpOwotCi0JCWlmIChkZWJ1ZyA+IDEgJiYgZXJyYnVmKSB7Ci0JCQkvKiBQcmludCB0aGUgY2hhaW4gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqLwotCQkJdWhjaV9zaG93X3FoKHVyYnAtPnFoLCBlcnJidWYsIEVSUkJVRl9MRU4sIDApOwotCQkJbHByaW50ayhlcnJidWYpOwotCQl9Ci0JfQotZXJyOgotCi0JLyogTm90ZSB0aGF0IHRoZSBxdWV1ZSBoYXMgc3RvcHBlZCBhbmQgc2F2ZSB0aGUgbmV4dCB0b2dnbGUgdmFsdWUgKi8KLQl1cmJwLT5xaC0+ZWxlbWVudCA9IFVIQ0lfUFRSX1RFUk07Ci0JdXJicC0+cWgtPmlzX3N0b3BwZWQgPSAxOwotCXVyYnAtPnFoLT5uZWVkc19maXh1cCA9IDE7Ci0JdXJicC0+cWgtPmluaXRpYWxfdG9nZ2xlID0gdWhjaV90b2dnbGUodGRfdG9rZW4odGQpKSBeCi0JCQkocmV0ID09IC1FUkVNT1RFSU8pOwotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgaW50IHVoY2lfc3VibWl0X2J1bGsoc3RydWN0IHVoY2lfaGNkICp1aGNpLCBzdHJ1Y3QgdXJiICp1cmIsCiAJCXN0cnVjdCB1aGNpX3FoICpxaCkKIHsKQEAgLTk1NCwyMiArODIwLDE2MyBAQAogCXFoLT5za2VsID0gdWhjaS0+c2tlbF9idWxrX3FoOwogCXJldCA9IHVoY2lfc3VibWl0X2NvbW1vbih1aGNpLCB1cmIsIHFoKTsKIAlpZiAocmV0ID09IDApCi0JCXVoY2lfaW5jX2ZzYnIodWhjaSwgdXJiKTsKKwkJdWhjaV9hZGRfZnNicih1aGNpLCB1cmIpOwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHVoY2lfc3VibWl0X2ludGVycnVwdChzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYiwKK3N0YXRpYyBpbnQgdWhjaV9zdWJtaXRfaW50ZXJydXB0KHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVyYiAqdXJiLAogCQlzdHJ1Y3QgdWhjaV9xaCAqcWgpCiB7CisJaW50IGV4cG9uZW50OworCiAJLyogVVNCIDEuMSBpbnRlcnJ1cHQgdHJhbnNmZXJzIG9ubHkgaW52b2x2ZSBvbmUgcGFja2V0IHBlciBpbnRlcnZhbC4KIAkgKiBEcml2ZXJzIGNhbiBzdWJtaXQgVVJCcyBvZiBhbnkgbGVuZ3RoLCBidXQgbG9uZ2VyIG9uZXMgd2lsbCBuZWVkCiAJICogbXVsdGlwbGUgaW50ZXJ2YWxzIHRvIGNvbXBsZXRlLgogCSAqLwotCXFoLT5za2VsID0gdWhjaS0+c2tlbHFoW19faW50ZXJ2YWxfdG9fc2tlbCh1cmItPmludGVydmFsKV07CisKKwkvKiBGaWd1cmUgb3V0IHdoaWNoIHBvd2VyLW9mLXR3byBxdWV1ZSB0byB1c2UgKi8KKwlmb3IgKGV4cG9uZW50ID0gNzsgZXhwb25lbnQgPj0gMDsgLS1leHBvbmVudCkgeworCQlpZiAoKDEgPDwgZXhwb25lbnQpIDw9IHVyYi0+aW50ZXJ2YWwpCisJCQlicmVhazsKKwl9CisJaWYgKGV4cG9uZW50IDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisJdXJiLT5pbnRlcnZhbCA9IDEgPDwgZXhwb25lbnQ7CisKKwlpZiAocWgtPnBlcmlvZCA9PSAwKQorCQlxaC0+c2tlbCA9IHVoY2ktPnNrZWxxaFtVSENJX1NLRUxfSU5ERVgoZXhwb25lbnQpXTsKKwllbHNlIGlmIChxaC0+cGVyaW9kICE9IHVyYi0+aW50ZXJ2YWwpCisJCXJldHVybiAtRUlOVkFMOwkJLyogQ2FuJ3QgY2hhbmdlIHRoZSBwZXJpb2QgKi8KKwogCXJldHVybiB1aGNpX3N1Ym1pdF9jb21tb24odWhjaSwgdXJiLCBxaCk7CiB9CiAKIC8qCisgKiBGaXggdXAgdGhlIGRhdGEgc3RydWN0dXJlcyBmb2xsb3dpbmcgYSBzaG9ydCB0cmFuc2ZlcgorICovCitzdGF0aWMgaW50IHVoY2lfZml4dXBfc2hvcnRfdHJhbnNmZXIoc3RydWN0IHVoY2lfaGNkICp1aGNpLAorCQlzdHJ1Y3QgdWhjaV9xaCAqcWgsIHN0cnVjdCB1cmJfcHJpdiAqdXJicCkKK3sKKwlzdHJ1Y3QgdWhjaV90ZCAqdGQ7CisJc3RydWN0IGxpc3RfaGVhZCAqdG1wOworCWludCByZXQ7CisKKwl0ZCA9IGxpc3RfZW50cnkodXJicC0+dGRfbGlzdC5wcmV2LCBzdHJ1Y3QgdWhjaV90ZCwgbGlzdCk7CisJaWYgKHFoLT50eXBlID09IFVTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0wpIHsKKworCQkvKiBXaGVuIGEgY29udHJvbCB0cmFuc2ZlciBpcyBzaG9ydCwgd2UgaGF2ZSB0byByZXN0YXJ0CisJCSAqIHRoZSBxdWV1ZSBhdCB0aGUgc3RhdHVzIHN0YWdlIHRyYW5zYWN0aW9uLCB3aGljaCBpcworCQkgKiB0aGUgbGFzdCBURC4gKi8KKwkJV0FSTl9PTihsaXN0X2VtcHR5KCZ1cmJwLT50ZF9saXN0KSk7CisJCXFoLT5lbGVtZW50ID0gY3B1X3RvX2xlMzIodGQtPmRtYV9oYW5kbGUpOworCQl0bXAgPSB0ZC0+bGlzdC5wcmV2OworCQlyZXQgPSAtRUlOUFJPR1JFU1M7CisKKwl9IGVsc2UgeworCisJCS8qIFdoZW4gYSBidWxrL2ludGVycnVwdCB0cmFuc2ZlciBpcyBzaG9ydCwgd2UgaGF2ZSB0bworCQkgKiBmaXggdXAgdGhlIHRvZ2dsZXMgb2YgdGhlIGZvbGxvd2luZyBVUkJzIG9uIHRoZSBxdWV1ZQorCQkgKiBiZWZvcmUgcmVzdGFydGluZyB0aGUgcXVldWUgYXQgdGhlIG5leHQgVVJCLiAqLworCQlxaC0+aW5pdGlhbF90b2dnbGUgPSB1aGNpX3RvZ2dsZSh0ZF90b2tlbihxaC0+cG9zdF90ZCkpIF4gMTsKKwkJdWhjaV9maXh1cF90b2dnbGVzKHFoLCAxKTsKKworCQlpZiAobGlzdF9lbXB0eSgmdXJicC0+dGRfbGlzdCkpCisJCQl0ZCA9IHFoLT5wb3N0X3RkOworCQlxaC0+ZWxlbWVudCA9IHRkLT5saW5rOworCQl0bXAgPSB1cmJwLT50ZF9saXN0LnByZXY7CisJCXJldCA9IDA7CisJfQorCisJLyogUmVtb3ZlIGFsbCB0aGUgVERzIHdlIHNraXBwZWQgb3ZlciwgZnJvbSB0bXAgYmFjayB0byB0aGUgc3RhcnQgKi8KKwl3aGlsZSAodG1wICE9ICZ1cmJwLT50ZF9saXN0KSB7CisJCXRkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCB1aGNpX3RkLCBsaXN0KTsKKwkJdG1wID0gdG1wLT5wcmV2OworCisJCXVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJicCh0ZCk7CisJCXVoY2lfZnJlZV90ZCh1aGNpLCB0ZCk7CisJfQorCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBDb21tb24gcmVzdWx0IGZvciBjb250cm9sLCBidWxrLCBhbmQgaW50ZXJydXB0CisgKi8KK3N0YXRpYyBpbnQgdWhjaV9yZXN1bHRfY29tbW9uKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IHVyYi0+aGNwcml2OworCXN0cnVjdCB1aGNpX3FoICpxaCA9IHVyYnAtPnFoOworCXN0cnVjdCB1aGNpX3RkICp0ZCwgKnRtcDsKKwl1bnNpZ25lZCBzdGF0dXM7CisJaW50IHJldCA9IDA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGQsIHRtcCwgJnVyYnAtPnRkX2xpc3QsIGxpc3QpIHsKKwkJdW5zaWduZWQgaW50IGN0cmxzdGF0OworCQlpbnQgbGVuOworCisJCWN0cmxzdGF0ID0gdGRfc3RhdHVzKHRkKTsKKwkJc3RhdHVzID0gdWhjaV9zdGF0dXNfYml0cyhjdHJsc3RhdCk7CisJCWlmIChzdGF0dXMgJiBURF9DVFJMX0FDVElWRSkKKwkJCXJldHVybiAtRUlOUFJPR1JFU1M7CisKKwkJbGVuID0gdWhjaV9hY3R1YWxfbGVuZ3RoKGN0cmxzdGF0KTsKKwkJdXJiLT5hY3R1YWxfbGVuZ3RoICs9IGxlbjsKKworCQlpZiAoc3RhdHVzKSB7CisJCQlyZXQgPSB1aGNpX21hcF9zdGF0dXMoc3RhdHVzLAorCQkJCQl1aGNpX3BhY2tldG91dCh0ZF90b2tlbih0ZCkpKTsKKwkJCWlmICgoZGVidWcgPT0gMSAmJiByZXQgIT0gLUVQSVBFKSB8fCBkZWJ1ZyA+IDEpIHsKKwkJCQkvKiBTb21lIGRlYnVnZ2luZyBjb2RlICovCisJCQkJZGV2X2RiZygmdXJiLT5kZXYtPmRldiwKKwkJCQkJCSIlczogZmFpbGVkIHdpdGggc3RhdHVzICV4XG4iLAorCQkJCQkJX19GVU5DVElPTl9fLCBzdGF0dXMpOworCisJCQkJaWYgKGRlYnVnID4gMSAmJiBlcnJidWYpIHsKKwkJCQkJLyogUHJpbnQgdGhlIGNoYWluIGZvciBkZWJ1Z2dpbmcgKi8KKwkJCQkJdWhjaV9zaG93X3FoKHVyYnAtPnFoLCBlcnJidWYsCisJCQkJCQkJRVJSQlVGX0xFTiwgMCk7CisJCQkJCWxwcmludGsoZXJyYnVmKTsKKwkJCQl9CisJCQl9CisKKwkJfSBlbHNlIGlmIChsZW4gPCB1aGNpX2V4cGVjdGVkX2xlbmd0aCh0ZF90b2tlbih0ZCkpKSB7CisKKwkJCS8qIFdlIHJlY2VpdmVkIGEgc2hvcnQgcGFja2V0ICovCisJCQlpZiAodXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9TSE9SVF9OT1RfT0spCisJCQkJcmV0ID0gLUVSRU1PVEVJTzsKKwkJCWVsc2UgaWYgKGN0cmxzdGF0ICYgVERfQ1RSTF9TUEQpCisJCQkJcmV0ID0gMTsKKwkJfQorCisJCXVoY2lfcmVtb3ZlX3RkX2Zyb21fdXJicCh0ZCk7CisJCWlmIChxaC0+cG9zdF90ZCkKKwkJCXVoY2lfZnJlZV90ZCh1aGNpLCBxaC0+cG9zdF90ZCk7CisJCXFoLT5wb3N0X3RkID0gdGQ7CisKKwkJaWYgKHJldCAhPSAwKQorCQkJZ290byBlcnI7CisJfQorCXJldHVybiByZXQ7CisKK2VycjoKKwlpZiAocmV0IDwgMCkgeworCQkvKiBJbiBjYXNlIGEgY29udHJvbCB0cmFuc2ZlciBnZXRzIGFuIGVycm9yCisJCSAqIGR1cmluZyB0aGUgc2V0dXAgc3RhZ2UgKi8KKwkJdXJiLT5hY3R1YWxfbGVuZ3RoID0gbWF4KHVyYi0+YWN0dWFsX2xlbmd0aCwgMCk7CisKKwkJLyogTm90ZSB0aGF0IHRoZSBxdWV1ZSBoYXMgc3RvcHBlZCBhbmQgc2F2ZQorCQkgKiB0aGUgbmV4dCB0b2dnbGUgdmFsdWUgKi8KKwkJcWgtPmVsZW1lbnQgPSBVSENJX1BUUl9URVJNOworCQlxaC0+aXNfc3RvcHBlZCA9IDE7CisJCXFoLT5uZWVkc19maXh1cCA9IChxaC0+dHlwZSAhPSBVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MKTsKKwkJcWgtPmluaXRpYWxfdG9nZ2xlID0gdWhjaV90b2dnbGUodGRfdG9rZW4odGQpKSBeCisJCQkJKHJldCA9PSAtRVJFTU9URUlPKTsKKworCX0gZWxzZQkJLyogU2hvcnQgcGFja2V0IHJlY2VpdmVkICovCisJCXJldCA9IHVoY2lfZml4dXBfc2hvcnRfdHJhbnNmZXIodWhjaSwgcWgsIHVyYnApOworCXJldHVybiByZXQ7Cit9CisKKy8qCiAgKiBJc29jaHJvbm91cyB0cmFuc2ZlcnMKICAqLwogc3RhdGljIGludCB1aGNpX3N1Ym1pdF9pc29jaHJvbm91cyhzdHJ1Y3QgdWhjaV9oY2QgKnVoY2ksIHN0cnVjdCB1cmIgKnVyYiwKQEAgLTk4MCwzOCArOTg3LDU3IEBACiAJdW5zaWduZWQgbG9uZyBkZXN0aW5hdGlvbiwgc3RhdHVzOwogCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IChzdHJ1Y3QgdXJiX3ByaXYgKikgdXJiLT5oY3ByaXY7CiAKLQlpZiAodXJiLT5udW1iZXJfb2ZfcGFja2V0cyA+IDkwMCkJLyogOTAwPyBXaHk/ICovCisJLyogVmFsdWVzIG11c3Qgbm90IGJlIHRvbyBiaWcgKGNvdWxkIG92ZXJmbG93IGJlbG93KSAqLworCWlmICh1cmItPmludGVydmFsID49IFVIQ0lfTlVNRlJBTUVTIHx8CisJCQl1cmItPm51bWJlcl9vZl9wYWNrZXRzID49IFVIQ0lfTlVNRlJBTUVTKQorCQlyZXR1cm4gLUVGQklHOworCisJLyogQ2hlY2sgdGhlIHBlcmlvZCBhbmQgZmlndXJlIG91dCB0aGUgc3RhcnRpbmcgZnJhbWUgbnVtYmVyICovCisJaWYgKHFoLT5wZXJpb2QgPT0gMCkgeworCQlpZiAodXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9JU09fQVNBUCkgeworCQkJdWhjaV9nZXRfY3VycmVudF9mcmFtZV9udW1iZXIodWhjaSk7CisJCQl1cmItPnN0YXJ0X2ZyYW1lID0gdWhjaS0+ZnJhbWVfbnVtYmVyICsgMTA7CisJCX0gZWxzZSB7CisJCQlpID0gdXJiLT5zdGFydF9mcmFtZSAtIHVoY2ktPmxhc3RfaXNvX2ZyYW1lOworCQkJaWYgKGkgPD0gMCB8fCBpID49IFVIQ0lfTlVNRlJBTUVTKQorCQkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfSBlbHNlIGlmIChxaC0+cGVyaW9kICE9IHVyYi0+aW50ZXJ2YWwpIHsKKwkJcmV0dXJuIC1FSU5WQUw7CQkvKiBDYW4ndCBjaGFuZ2UgdGhlIHBlcmlvZCAqLworCisJfSBlbHNlIHsJLyogUGljayB1cCB3aGVyZSB0aGUgbGFzdCBVUkIgbGVhdmVzIG9mZiAqLworCQlpZiAobGlzdF9lbXB0eSgmcWgtPnF1ZXVlKSkgeworCQkJZnJhbWUgPSBxaC0+aXNvX2ZyYW1lOworCQl9IGVsc2UgeworCQkJc3RydWN0IHVyYiAqbHVyYjsKKworCQkJbHVyYiA9IGxpc3RfZW50cnkocWgtPnF1ZXVlLnByZXYsCisJCQkJCXN0cnVjdCB1cmJfcHJpdiwgbm9kZSktPnVyYjsKKwkJCWZyYW1lID0gbHVyYi0+c3RhcnRfZnJhbWUgKworCQkJCQlsdXJiLT5udW1iZXJfb2ZfcGFja2V0cyAqCisJCQkJCWx1cmItPmludGVydmFsOworCQl9CisJCWlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgVVJCX0lTT19BU0FQKQorCQkJdXJiLT5zdGFydF9mcmFtZSA9IGZyYW1lOworCQllbHNlIGlmICh1cmItPnN0YXJ0X2ZyYW1lICE9IGZyYW1lKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogTWFrZSBzdXJlIHdlIHdvbid0IGhhdmUgdG8gZ28gdG9vIGZhciBpbnRvIHRoZSBmdXR1cmUgKi8KKwlpZiAodWhjaV9mcmFtZV9iZWZvcmVfZXEodWhjaS0+bGFzdF9pc29fZnJhbWUgKyBVSENJX05VTUZSQU1FUywKKwkJCXVyYi0+c3RhcnRfZnJhbWUgKyB1cmItPm51bWJlcl9vZl9wYWNrZXRzICoKKwkJCQl1cmItPmludGVydmFsKSkKIAkJcmV0dXJuIC1FRkJJRzsKIAogCXN0YXR1cyA9IFREX0NUUkxfQUNUSVZFIHwgVERfQ1RSTF9JT1M7CiAJZGVzdGluYXRpb24gPSAodXJiLT5waXBlICYgUElQRV9ERVZFUF9NQVNLKSB8IHVzYl9wYWNrZXRpZCh1cmItPnBpcGUpOwogCi0JLyogRmlndXJlIG91dCB0aGUgc3RhcnRpbmcgZnJhbWUgbnVtYmVyICovCi0JaWYgKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiBVUkJfSVNPX0FTQVApIHsKLQkJaWYgKGxpc3RfZW1wdHkoJnFoLT5xdWV1ZSkpIHsKLQkJCXVoY2lfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyKHVoY2kpOwotCQkJdXJiLT5zdGFydF9mcmFtZSA9ICh1aGNpLT5mcmFtZV9udW1iZXIgKyAxMCk7Ci0KLQkJfSBlbHNlIHsJCS8qIEdvIHJpZ2h0IGFmdGVyIHRoZSBsYXN0IG9uZSAqLwotCQkJc3RydWN0IHVyYiAqbGFzdF91cmI7Ci0KLQkJCWxhc3RfdXJiID0gbGlzdF9lbnRyeShxaC0+cXVldWUucHJldiwKLQkJCQkJc3RydWN0IHVyYl9wcml2LCBub2RlKS0+dXJiOwotCQkJdXJiLT5zdGFydF9mcmFtZSA9IChsYXN0X3VyYi0+c3RhcnRfZnJhbWUgKwotCQkJCQlsYXN0X3VyYi0+bnVtYmVyX29mX3BhY2tldHMgKgotCQkJCQlsYXN0X3VyYi0+aW50ZXJ2YWwpOwotCQl9Ci0JfSBlbHNlIHsKLQkJLyogRklYTUU6IFNhbml0eSBjaGVjayAqLwotCX0KLQl1cmItPnN0YXJ0X2ZyYW1lICY9IChVSENJX05VTUZSQU1FUyAtIDEpOwotCiAJZm9yIChpID0gMDsgaSA8IHVyYi0+bnVtYmVyX29mX3BhY2tldHM7IGkrKykgewogCQl0ZCA9IHVoY2lfYWxsb2NfdGQodWhjaSk7CiAJCWlmICghdGQpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAotCQl1aGNpX2FkZF90ZF90b191cmIodXJiLCB0ZCk7CisJCXVoY2lfYWRkX3RkX3RvX3VyYnAodGQsIHVyYnApOwogCQl1aGNpX2ZpbGxfdGQodGQsIHN0YXR1cywgZGVzdGluYXRpb24gfAogCQkJCXVoY2lfZXhwbGVuKHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0ubGVuZ3RoKSwKIAkJCQl1cmItPnRyYW5zZmVyX2RtYSArCkBAIC0xMDIyLDEyICsxMDQ4LDE5IEBACiAJdGQtPnN0YXR1cyB8PSBfX2NvbnN0YW50X2NwdV90b19sZTMyKFREX0NUUkxfSU9DKTsKIAogCXFoLT5za2VsID0gdWhjaS0+c2tlbF9pc29fcWg7CisJcWgtPnBlcmlvZCA9IHVyYi0+aW50ZXJ2YWw7CiAKIAkvKiBBZGQgdGhlIFREcyB0byB0aGUgZnJhbWUgbGlzdCAqLwogCWZyYW1lID0gdXJiLT5zdGFydF9mcmFtZTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRkLCAmdXJicC0+dGRfbGlzdCwgbGlzdCkgewogCQl1aGNpX2luc2VydF90ZF9pbl9mcmFtZV9saXN0KHVoY2ksIHRkLCBmcmFtZSk7Ci0JCWZyYW1lICs9IHVyYi0+aW50ZXJ2YWw7CisJCWZyYW1lICs9IHFoLT5wZXJpb2Q7CisJfQorCisJaWYgKGxpc3RfZW1wdHkoJnFoLT5xdWV1ZSkpIHsKKwkJcWgtPmlzb19wYWNrZXRfZGVzYyA9ICZ1cmItPmlzb19mcmFtZV9kZXNjWzBdOworCQlxaC0+aXNvX2ZyYW1lID0gdXJiLT5zdGFydF9mcmFtZTsKKwkJcWgtPmlzb19zdGF0dXMgPSAwOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTAzNSwzNyArMTA2OCw0NCBAQAogCiBzdGF0aWMgaW50IHVoY2lfcmVzdWx0X2lzb2Nocm9ub3VzKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVyYiAqdXJiKQogewotCXN0cnVjdCB1aGNpX3RkICp0ZDsKLQlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSAoc3RydWN0IHVyYl9wcml2ICopdXJiLT5oY3ByaXY7Ci0JaW50IHN0YXR1czsKLQlpbnQgaSwgcmV0ID0gMDsKKwlzdHJ1Y3QgdWhjaV90ZCAqdGQsICp0bXA7CisJc3RydWN0IHVyYl9wcml2ICp1cmJwID0gdXJiLT5oY3ByaXY7CisJc3RydWN0IHVoY2lfcWggKnFoID0gdXJicC0+cWg7CiAKLQl1cmItPmFjdHVhbF9sZW5ndGggPSB1cmItPmVycm9yX2NvdW50ID0gMDsKLQotCWkgPSAwOwotCWxpc3RfZm9yX2VhY2hfZW50cnkodGQsICZ1cmJwLT50ZF9saXN0LCBsaXN0KSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRkLCB0bXAsICZ1cmJwLT50ZF9saXN0LCBsaXN0KSB7CisJCXVuc2lnbmVkIGludCBjdHJsc3RhdDsKKwkJaW50IHN0YXR1czsKIAkJaW50IGFjdGxlbmd0aDsKLQkJdW5zaWduZWQgaW50IGN0cmxzdGF0ID0gdGRfc3RhdHVzKHRkKTsKIAotCQlpZiAoY3RybHN0YXQgJiBURF9DVFJMX0FDVElWRSkKKwkJaWYgKHVoY2lfZnJhbWVfYmVmb3JlX2VxKHVoY2ktPmN1cl9pc29fZnJhbWUsIHFoLT5pc29fZnJhbWUpKQogCQkJcmV0dXJuIC1FSU5QUk9HUkVTUzsKIAotCQlhY3RsZW5ndGggPSB1aGNpX2FjdHVhbF9sZW5ndGgoY3RybHN0YXQpOwotCQl1cmItPmlzb19mcmFtZV9kZXNjW2ldLmFjdHVhbF9sZW5ndGggPSBhY3RsZW5ndGg7Ci0JCXVyYi0+YWN0dWFsX2xlbmd0aCArPSBhY3RsZW5ndGg7CisJCXVoY2lfcmVtb3ZlX3Rkc19mcm9tX2ZyYW1lKHVoY2ksIHFoLT5pc29fZnJhbWUpOwogCi0JCXN0YXR1cyA9IHVoY2lfbWFwX3N0YXR1cyh1aGNpX3N0YXR1c19iaXRzKGN0cmxzdGF0KSwKLQkJCQl1c2JfcGlwZW91dCh1cmItPnBpcGUpKTsKLQkJdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5zdGF0dXMgPSBzdGF0dXM7Ci0JCWlmIChzdGF0dXMpIHsKLQkJCXVyYi0+ZXJyb3JfY291bnQrKzsKLQkJCXJldCA9IHN0YXR1czsKKwkJY3RybHN0YXQgPSB0ZF9zdGF0dXModGQpOworCQlpZiAoY3RybHN0YXQgJiBURF9DVFJMX0FDVElWRSkgeworCQkJc3RhdHVzID0gLUVYREVWOwkvKiBURCB3YXMgYWRkZWQgdG9vIGxhdGU/ICovCisJCX0gZWxzZSB7CisJCQlzdGF0dXMgPSB1aGNpX21hcF9zdGF0dXModWhjaV9zdGF0dXNfYml0cyhjdHJsc3RhdCksCisJCQkJCXVzYl9waXBlb3V0KHVyYi0+cGlwZSkpOworCQkJYWN0bGVuZ3RoID0gdWhjaV9hY3R1YWxfbGVuZ3RoKGN0cmxzdGF0KTsKKworCQkJdXJiLT5hY3R1YWxfbGVuZ3RoICs9IGFjdGxlbmd0aDsKKwkJCXFoLT5pc29fcGFja2V0X2Rlc2MtPmFjdHVhbF9sZW5ndGggPSBhY3RsZW5ndGg7CisJCQlxaC0+aXNvX3BhY2tldF9kZXNjLT5zdGF0dXMgPSBzdGF0dXM7CiAJCX0KIAotCQlpKys7Ci0JfQorCQlpZiAoc3RhdHVzKSB7CisJCQl1cmItPmVycm9yX2NvdW50Kys7CisJCQlxaC0+aXNvX3N0YXR1cyA9IHN0YXR1czsKKwkJfQogCi0JcmV0dXJuIHJldDsKKwkJdWhjaV9yZW1vdmVfdGRfZnJvbV91cmJwKHRkKTsKKwkJdWhjaV9mcmVlX3RkKHVoY2ksIHRkKTsKKwkJcWgtPmlzb19mcmFtZSArPSBxaC0+cGVyaW9kOworCQkrK3FoLT5pc29fcGFja2V0X2Rlc2M7CisJfQorCXJldHVybiBxaC0+aXNvX3N0YXR1czsKIH0KIAogc3RhdGljIGludCB1aGNpX3VyYl9lbnF1ZXVlKHN0cnVjdCB1c2JfaGNkICpoY2QsCkBAIC0xMDk5LDE0ICsxMTM5LDE0IEBACiAJfQogCXVyYnAtPnFoID0gcWg7CiAKLQlzd2l0Y2ggKHVzYl9waXBldHlwZSh1cmItPnBpcGUpKSB7Ci0JY2FzZSBQSVBFX0NPTlRST0w6CisJc3dpdGNoIChxaC0+dHlwZSkgeworCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJPTDoKIAkJcmV0ID0gdWhjaV9zdWJtaXRfY29udHJvbCh1aGNpLCB1cmIsIHFoKTsKIAkJYnJlYWs7Ci0JY2FzZSBQSVBFX0JVTEs6CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9CVUxLOgogCQlyZXQgPSB1aGNpX3N1Ym1pdF9idWxrKHVoY2ksIHVyYiwgcWgpOwogCQlicmVhazsKLQljYXNlIFBJUEVfSU5URVJSVVBUOgorCWNhc2UgVVNCX0VORFBPSU5UX1hGRVJfSU5UOgogCQlpZiAobGlzdF9lbXB0eSgmcWgtPnF1ZXVlKSkgewogCQkJYnVzdGltZSA9IHVzYl9jaGVja19iYW5kd2lkdGgodXJiLT5kZXYsIHVyYik7CiAJCQlpZiAoYnVzdGltZSA8IDApCkBAIC0xMTI1LDcgKzExNjUsOCBAQAogCQkJcmV0ID0gdWhjaV9zdWJtaXRfaW50ZXJydXB0KHVoY2ksIHVyYiwgcWgpOwogCQl9CiAJCWJyZWFrOwotCWNhc2UgUElQRV9JU09DSFJPTk9VUzoKKwljYXNlIFVTQl9FTkRQT0lOVF9YRkVSX0lTT0M6CisJCXVyYi0+ZXJyb3JfY291bnQgPSAwOwogCQlidXN0aW1lID0gdXNiX2NoZWNrX2JhbmR3aWR0aCh1cmItPmRldiwgdXJiKTsKIAkJaWYgKGJ1c3RpbWUgPCAwKSB7CiAJCQlyZXQgPSBidXN0aW1lOwpAQCAtMTE0Niw5ICsxMTg3LDEyIEBACiAKIAkvKiBJZiB0aGUgbmV3IFVSQiBpcyB0aGUgZmlyc3QgYW5kIG9ubHkgb25lIG9uIHRoaXMgUUggdGhlbiBlaXRoZXIKIAkgKiB0aGUgUUggaXMgbmV3IGFuZCBpZGxlIG9yIGVsc2UgaXQncyB1bmxpbmtlZCBhbmQgd2FpdGluZyB0bwotCSAqIGJlY29tZSBpZGxlLCBzbyB3ZSBjYW4gYWN0aXZhdGUgaXQgcmlnaHQgYXdheS4gKi8KLQlpZiAocWgtPnF1ZXVlLm5leHQgPT0gJnVyYnAtPm5vZGUpCisJICogYmVjb21lIGlkbGUsIHNvIHdlIGNhbiBhY3RpdmF0ZSBpdCByaWdodCBhd2F5LiAgQnV0IG9ubHkgaWYgdGhlCisJICogcXVldWUgaXNuJ3Qgc3RvcHBlZC4gKi8KKwlpZiAocWgtPnF1ZXVlLm5leHQgPT0gJnVyYnAtPm5vZGUgJiYgIXFoLT5pc19zdG9wcGVkKSB7CiAJCXVoY2lfYWN0aXZhdGVfcWgodWhjaSwgcWgpOworCQl1aGNpX3VyYnBfd2FudHNfZnNicih1aGNpLCB1cmJwKTsKKwl9CiAJZ290byBkb25lOwogCiBlcnJfc3VibWl0X2ZhaWxlZDoKQEAgLTExNjgsMTYgKzEyMTIsMjYgQEAKIAlzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kgPSBoY2RfdG9fdWhjaShoY2QpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IHVyYl9wcml2ICp1cmJwOworCXN0cnVjdCB1aGNpX3FoICpxaDsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZ1aGNpLT5sb2NrLCBmbGFncyk7CiAJdXJicCA9IHVyYi0+aGNwcml2OwogCWlmICghdXJicCkJCQkvKiBVUkIgd2FzIG5ldmVyIGxpbmtlZCEgKi8KIAkJZ290byBkb25lOworCXFoID0gdXJicC0+cWg7CiAKIAkvKiBSZW1vdmUgSXNvY2hyb25vdXMgVERzIGZyb20gdGhlIGZyYW1lIGxpc3QgQVNBUCAqLwotCWlmICh1c2JfcGlwZXR5cGUodXJiLT5waXBlKSA9PSBQSVBFX0lTT0NIUk9OT1VTKQorCWlmIChxaC0+dHlwZSA9PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DKSB7CiAJCXVoY2lfdW5saW5rX2lzb2Nocm9ub3VzX3Rkcyh1aGNpLCB1cmIpOwotCXVoY2lfdW5saW5rX3FoKHVoY2ksIHVyYnAtPnFoKTsKKwkJbWIoKTsKKworCQkvKiBJZiB0aGUgVVJCIGhhcyBhbHJlYWR5IHN0YXJ0ZWQsIHVwZGF0ZSB0aGUgUUggdW5saW5rIHRpbWUgKi8KKwkJdWhjaV9nZXRfY3VycmVudF9mcmFtZV9udW1iZXIodWhjaSk7CisJCWlmICh1aGNpX2ZyYW1lX2JlZm9yZV9lcSh1cmItPnN0YXJ0X2ZyYW1lLCB1aGNpLT5mcmFtZV9udW1iZXIpKQorCQkJcWgtPnVubGlua19mcmFtZSA9IHVoY2ktPmZyYW1lX251bWJlcjsKKwl9CisKKwl1aGNpX3VubGlua19xaCh1aGNpLCBxaCk7CiAKIGRvbmU6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWhjaS0+bG9jaywgZmxhZ3MpOwpAQCAtMTE5NCwyMiArMTI0OCwxNyBAQAogewogCXN0cnVjdCB1cmJfcHJpdiAqdXJicCA9IChzdHJ1Y3QgdXJiX3ByaXYgKikgdXJiLT5oY3ByaXY7CiAKLQkvKiBJc29jaHJvbm91cyBURHMgZ2V0IHVubGlua2VkIGRpcmVjdGx5IGZyb20gdGhlIGZyYW1lIGxpc3QgKi8KLQlpZiAodXNiX3BpcGV0eXBlKHVyYi0+cGlwZSkgPT0gUElQRV9JU09DSFJPTk9VUykKLQkJdWhjaV91bmxpbmtfaXNvY2hyb25vdXNfdGRzKHVoY2ksIHVyYik7CisJLyogV2hlbiBnaXZpbmcgYmFjayB0aGUgZmlyc3QgVVJCIGluIGFuIElzb2Nocm9ub3VzIHF1ZXVlLAorCSAqIHJlaW5pdGlhbGl6ZSB0aGUgUUgncyBpc28tcmVsYXRlZCBtZW1iZXJzIGZvciB0aGUgbmV4dCBVUkIuICovCisJaWYgKHFoLT50eXBlID09IFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MgJiYKKwkJCXVyYnAtPm5vZGUucHJldiA9PSAmcWgtPnF1ZXVlICYmCisJCQl1cmJwLT5ub2RlLm5leHQgIT0gJnFoLT5xdWV1ZSkgeworCQlzdHJ1Y3QgdXJiICpudXJiID0gbGlzdF9lbnRyeSh1cmJwLT5ub2RlLm5leHQsCisJCQkJc3RydWN0IHVyYl9wcml2LCBub2RlKS0+dXJiOwogCi0JLyogSWYgdGhlIFVSQiBpc24ndCBmaXJzdCBvbiBpdHMgcXVldWUsIGFkanVzdCB0aGUgbGluayBwb2ludGVyCi0JICogb2YgdGhlIGxhc3QgVEQgaW4gdGhlIHByZXZpb3VzIFVSQi4gKi8KLQllbHNlIGlmIChxaC0+cXVldWUubmV4dCAhPSAmdXJicC0+bm9kZSkgewotCQlzdHJ1Y3QgdXJiX3ByaXYgKnB1cmJwOwotCQlzdHJ1Y3QgdWhjaV90ZCAqcHRkLCAqbHRkOwotCi0JCXB1cmJwID0gbGlzdF9lbnRyeSh1cmJwLT5ub2RlLnByZXYsIHN0cnVjdCB1cmJfcHJpdiwgbm9kZSk7Ci0JCXB0ZCA9IGxpc3RfZW50cnkocHVyYnAtPnRkX2xpc3QucHJldiwgc3RydWN0IHVoY2lfdGQsCi0JCQkJbGlzdCk7Ci0JCWx0ZCA9IGxpc3RfZW50cnkodXJicC0+dGRfbGlzdC5wcmV2LCBzdHJ1Y3QgdWhjaV90ZCwKLQkJCQlsaXN0KTsKLQkJcHRkLT5saW5rID0gbHRkLT5saW5rOworCQlxaC0+aXNvX3BhY2tldF9kZXNjID0gJm51cmItPmlzb19mcmFtZV9kZXNjWzBdOworCQlxaC0+aXNvX2ZyYW1lID0gbnVyYi0+c3RhcnRfZnJhbWU7CisJCXFoLT5pc29fc3RhdHVzID0gMDsKIAl9CiAKIAkvKiBUYWtlIHRoZSBVUkIgb2ZmIHRoZSBRSCdzIHF1ZXVlLiAgSWYgdGhlIHF1ZXVlIGlzIG5vdyBlbXB0eSwKQEAgLTEyMjEsMTYgKzEyNzAsMTUgQEAKIAkJcWgtPm5lZWRzX2ZpeHVwID0gMDsKIAl9CiAKLQl1aGNpX2RlY19mc2JyKHVoY2ksIHVyYik7CS8qIFNhZmUgc2luY2UgaXQgY2hlY2tzICovCiAJdWhjaV9mcmVlX3VyYl9wcml2KHVoY2ksIHVyYnApOwogCi0Jc3dpdGNoICh1c2JfcGlwZXR5cGUodXJiLT5waXBlKSkgewotCWNhc2UgUElQRV9JU09DSFJPTk9VUzoKKwlzd2l0Y2ggKHFoLT50eXBlKSB7CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DOgogCQkvKiBSZWxlYXNlIGJhbmR3aWR0aCBmb3IgSW50ZXJydXB0IG9yIElzb2MuIHRyYW5zZmVycyAqLwogCQlpZiAodXJiLT5iYW5kd2lkdGgpCiAJCQl1c2JfcmVsZWFzZV9iYW5kd2lkdGgodXJiLT5kZXYsIHVyYiwgMSk7CiAJCWJyZWFrOwotCWNhc2UgUElQRV9JTlRFUlJVUFQ6CisJY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9JTlQ6CiAJCS8qIFJlbGVhc2UgYmFuZHdpZHRoIGZvciBJbnRlcnJ1cHQgb3IgSXNvYy4gdHJhbnNmZXJzICovCiAJCS8qIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWxlYXNlIGlmIHdlIGhhdmUgYSBxdWV1ZWQgVVJCICovCiAJCWlmIChsaXN0X2VtcHR5KCZxaC0+cXVldWUpICYmIHVyYi0+YmFuZHdpZHRoKQpAQCAtMTI1Miw2ICsxMzAwLDcgQEAKIAkJdWhjaV91bmxpbmtfcWgodWhjaSwgcWgpOwogCiAJCS8qIEJhbmR3aWR0aCBzdHVmZiBub3QgeWV0IGltcGxlbWVudGVkICovCisJCXFoLT5wZXJpb2QgPSAwOwogCX0KIH0KIApAQCAtMTI3MywxNyArMTMyMiwxMCBAQAogCQl1cmJwID0gbGlzdF9lbnRyeShxaC0+cXVldWUubmV4dCwgc3RydWN0IHVyYl9wcml2LCBub2RlKTsKIAkJdXJiID0gdXJicC0+dXJiOwogCi0JCXN3aXRjaCAodXNiX3BpcGV0eXBlKHVyYi0+cGlwZSkpIHsKLQkJY2FzZSBQSVBFX0NPTlRST0w6Ci0JCQlzdGF0dXMgPSB1aGNpX3Jlc3VsdF9jb250cm9sKHVoY2ksIHVyYik7Ci0JCQlicmVhazsKLQkJY2FzZSBQSVBFX0lTT0NIUk9OT1VTOgorCQlpZiAocWgtPnR5cGUgPT0gVVNCX0VORFBPSU5UX1hGRVJfSVNPQykKIAkJCXN0YXR1cyA9IHVoY2lfcmVzdWx0X2lzb2Nocm9ub3VzKHVoY2ksIHVyYik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoJLyogUElQRV9CVUxLIG9yIFBJUEVfSU5URVJSVVBUICovCisJCWVsc2UKIAkJCXN0YXR1cyA9IHVoY2lfcmVzdWx0X2NvbW1vbih1aGNpLCB1cmIpOwotCQkJYnJlYWs7Ci0JCX0KIAkJaWYgKHN0YXR1cyA9PSAtRUlOUFJPR1JFU1MpCiAJCQlicmVhazsKIApAQCAtMTI5MSwzMSArMTMzMyw0MyBAQAogCQlpZiAodXJiLT5zdGF0dXMgPT0gLUVJTlBST0dSRVNTKQkvKiBOb3QgZGVxdWV1ZWQgKi8KIAkJCXVyYi0+c3RhdHVzID0gc3RhdHVzOwogCQllbHNlCi0JCQlzdGF0dXMgPSAtRUNPTk5SRVNFVDsKKwkJCXN0YXR1cyA9IEVDT05OUkVTRVQ7CQkvKiBOb3QgLUVDT05OUkVTRVQgKi8KIAkJc3Bpbl91bmxvY2soJnVyYi0+bG9jayk7CiAKIAkJLyogRGVxdWV1ZWQgYnV0IGNvbXBsZXRlZCBVUkJzIGNhbid0IGJlIGdpdmVuIGJhY2sgdW5sZXNzCiAJCSAqIHRoZSBRSCBpcyBzdG9wcGVkIG9yIGhhcyBmaW5pc2hlZCB1bmxpbmtpbmcuICovCi0JCWlmIChzdGF0dXMgPT0gLUVDT05OUkVTRVQgJiYKLQkJCQkhKHFoLT5pc19zdG9wcGVkIHx8IFFIX0ZJTklTSEVEX1VOTElOS0lORyhxaCkpKQotCQkJcmV0dXJuOworCQlpZiAoc3RhdHVzID09IEVDT05OUkVTRVQpIHsKKwkJCWlmIChRSF9GSU5JU0hFRF9VTkxJTktJTkcocWgpKQorCQkJCXFoLT5pc19zdG9wcGVkID0gMTsKKwkJCWVsc2UgaWYgKCFxaC0+aXNfc3RvcHBlZCkKKwkJCQlyZXR1cm47CisJCX0KIAogCQl1aGNpX2dpdmViYWNrX3VyYih1aGNpLCBxaCwgdXJiLCByZWdzKTsKLQkJaWYgKHFoLT5pc19zdG9wcGVkKQorCQlpZiAoc3RhdHVzIDwgMCkKIAkJCWJyZWFrOwogCX0KIAogCS8qIElmIHRoZSBRSCBpcyBuZWl0aGVyIHN0b3BwZWQgbm9yIGZpbmlzaGVkIHVubGlua2luZyAobm9ybWFsIGNhc2UpLAogCSAqIG91ciB3b3JrIGhlcmUgaXMgZG9uZS4gKi8KLSByZXN0YXJ0OgotCWlmICghKHFoLT5pc19zdG9wcGVkIHx8IFFIX0ZJTklTSEVEX1VOTElOS0lORyhxaCkpKQorCWlmIChRSF9GSU5JU0hFRF9VTkxJTktJTkcocWgpKQorCQlxaC0+aXNfc3RvcHBlZCA9IDE7CisJZWxzZSBpZiAoIXFoLT5pc19zdG9wcGVkKQogCQlyZXR1cm47CiAKIAkvKiBPdGhlcndpc2UgZ2l2ZSBiYWNrIGVhY2ggb2YgdGhlIGRlcXVldWVkIFVSQnMgKi8KK3Jlc3RhcnQ6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh1cmJwLCAmcWgtPnF1ZXVlLCBub2RlKSB7CiAJCXVyYiA9IHVyYnAtPnVyYjsKIAkJaWYgKHVyYi0+c3RhdHVzICE9IC1FSU5QUk9HUkVTUykgewotCQkJdWhjaV9zYXZlX3RvZ2dsZShxaCwgdXJiKTsKKworCQkJLyogRml4IHVwIHRoZSBURCBsaW5rcyBhbmQgc2F2ZSB0aGUgdG9nZ2xlcyBmb3IKKwkJCSAqIG5vbi1Jc29jaHJvbm91cyBxdWV1ZXMuICBGb3IgSXNvY2hyb25vdXMgcXVldWVzLAorCQkJICogdGVzdCBmb3IgdG9vLXJlY2VudCBkZXF1ZXVlcy4gKi8KKwkJCWlmICghdWhjaV9jbGVhbnVwX3F1ZXVlKHVoY2ksIHFoLCB1cmIpKSB7CisJCQkJcWgtPmlzX3N0b3BwZWQgPSAwOworCQkJCXJldHVybjsKKwkJCX0KIAkJCXVoY2lfZ2l2ZWJhY2tfdXJiKHVoY2ksIHFoLCB1cmIsIHJlZ3MpOwogCQkJZ290byByZXN0YXJ0OwogCQl9CkBAIC0xMzI3LDYgKzEzODEsMTggQEAKIAlpZiAoIWxpc3RfZW1wdHkoJnFoLT5xdWV1ZSkpIHsKIAkJaWYgKHFoLT5uZWVkc19maXh1cCkKIAkJCXVoY2lfZml4dXBfdG9nZ2xlcyhxaCwgMCk7CisKKwkJLyogSWYgdGhlIGZpcnN0IFVSQiBvbiB0aGUgcXVldWUgd2FudHMgRlNCUiBidXQgaXRzIHRpbWUKKwkJICogbGltaXQgaGFzIGV4cGlyZWQsIHNldCB0aGUgbmV4dCBURCB0byBpbnRlcnJ1cHQgb24KKwkJICogY29tcGxldGlvbiBiZWZvcmUgcmVhY3RpdmF0aW5nIHRoZSBRSC4gKi8KKwkJdXJicCA9IGxpc3RfZW50cnkocWgtPnF1ZXVlLm5leHQsIHN0cnVjdCB1cmJfcHJpdiwgbm9kZSk7CisJCWlmICh1cmJwLT5mc2JyICYmIHFoLT53YWl0X2V4cGlyZWQpIHsKKwkJCXN0cnVjdCB1aGNpX3RkICp0ZCA9IGxpc3RfZW50cnkodXJicC0+dGRfbGlzdC5uZXh0LAorCQkJCQlzdHJ1Y3QgdWhjaV90ZCwgbGlzdCk7CisKKwkJCXRkLT5zdGF0dXMgfD0gX19jcHVfdG9fbGUzMihURF9DVFJMX0lPQyk7CisJCX0KKwogCQl1aGNpX2FjdGl2YXRlX3FoKHVoY2ksIHFoKTsKIAl9CiAKQEAgLTEzMzYsMTUgKzE0MDIsODQgQEAKIAkJdWhjaV9tYWtlX3FoX2lkbGUodWhjaSwgcWgpOwogfQogCi1zdGF0aWMgdm9pZCB1aGNpX2ZyZWVfcGVuZGluZ190ZHMoc3RydWN0IHVoY2lfaGNkICp1aGNpKQorLyoKKyAqIENoZWNrIGZvciBxdWV1ZXMgdGhhdCBoYXZlIG1hZGUgc29tZSBmb3J3YXJkIHByb2dyZXNzLgorICogUmV0dXJucyAwIGlmIHRoZSBxdWV1ZSBpcyBub3QgSXNvY2hyb25vdXMsIGlzIEFDVElWRSwgYW5kCisgKiBoYXMgbm90IGFkdmFuY2VkIHNpbmNlIGxhc3QgZXhhbWluZWQ7IDEgb3RoZXJ3aXNlLgorICoKKyAqIEVhcmx5IEludGVsIGNvbnRyb2xsZXJzIGhhdmUgYSBidWcgd2hpY2ggY2F1c2VzIHFoLT5lbGVtZW50IHNvbWV0aW1lcworICogbm90IHRvIGFkdmFuY2Ugd2hlbiBhIFREIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuICBUaGUgcXVldWUgcmVtYWlucworICogc3R1Y2sgb24gdGhlIGluYWN0aXZlIGNvbXBsZXRlZCBURC4gIFdlIGRldGVjdCBzdWNoIGNhc2VzIGFuZCBhZHZhbmNlCisgKiB0aGUgZWxlbWVudCBwb2ludGVyIGJ5IGhhbmQuCisgKi8KK3N0YXRpYyBpbnQgdWhjaV9hZHZhbmNlX2NoZWNrKHN0cnVjdCB1aGNpX2hjZCAqdWhjaSwgc3RydWN0IHVoY2lfcWggKnFoKQogewotCXN0cnVjdCB1aGNpX3RkICp0ZCwgKnRtcDsKKwlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAgPSBOVUxMOworCXN0cnVjdCB1aGNpX3RkICp0ZDsKKwlpbnQgcmV0ID0gMTsKKwl1bnNpZ25lZCBzdGF0dXM7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGQsIHRtcCwgJnVoY2ktPnRkX3JlbW92ZV9saXN0LCByZW1vdmVfbGlzdCkgewotCQlsaXN0X2RlbF9pbml0KCZ0ZC0+cmVtb3ZlX2xpc3QpOworCWlmIChxaC0+dHlwZSA9PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DKQorCQlnb3RvIGRvbmU7CiAKLQkJdWhjaV9mcmVlX3RkKHVoY2ksIHRkKTsKKwkvKiBUcmVhdCBhbiBVTkxJTktJTkcgcXVldWUgYXMgdGhvdWdoIGl0IGhhc24ndCBhZHZhbmNlZC4KKwkgKiBUaGlzIGlzIG9rYXkgYmVjYXVzZSByZWFjdGl2YXRpb24gd2lsbCB0cmVhdCBpdCBhcyB0aG91Z2gKKwkgKiBpdCBoYXMgYWR2YW5jZWQsIGFuZCBpZiBpdCBpcyBnb2luZyB0byBiZWNvbWUgSURMRSB0aGVuCisJICogdGhpcyBkb2Vzbid0IG1hdHRlciBhbnl3YXkuICBGdXJ0aGVybW9yZSBpdCdzIHBvc3NpYmxlCisJICogZm9yIGFuIFVOTElOS0lORyBxdWV1ZSBub3QgdG8gaGF2ZSBhbnkgVVJCcyBhdCBhbGwsIG9yCisJICogZm9yIGl0cyBmaXJzdCBVUkIgbm90IHRvIGhhdmUgYW55IFREcyAoaWYgaXQgd2FzIGRlcXVldWVkCisJICoganVzdCBhcyBpdCBjb21wbGV0ZWQpLiAgU28gaXQncyBub3QgZWFzeSBpbiBhbnkgY2FzZSB0bworCSAqIHRlc3Qgd2hldGhlciBzdWNoIHF1ZXVlcyBoYXZlIGFkdmFuY2VkLiAqLworCWlmIChxaC0+c3RhdGUgIT0gUUhfU1RBVEVfQUNUSVZFKSB7CisJCXVyYnAgPSBOVUxMOworCQlzdGF0dXMgPSAwOworCisJfSBlbHNlIHsKKwkJdXJicCA9IGxpc3RfZW50cnkocWgtPnF1ZXVlLm5leHQsIHN0cnVjdCB1cmJfcHJpdiwgbm9kZSk7CisJCXRkID0gbGlzdF9lbnRyeSh1cmJwLT50ZF9saXN0Lm5leHQsIHN0cnVjdCB1aGNpX3RkLCBsaXN0KTsKKwkJc3RhdHVzID0gdGRfc3RhdHVzKHRkKTsKKwkJaWYgKCEoc3RhdHVzICYgVERfQ1RSTF9BQ1RJVkUpKSB7CisKKwkJCS8qIFdlJ3JlIG9rYXksIHRoZSBxdWV1ZSBoYXMgYWR2YW5jZWQgKi8KKwkJCXFoLT53YWl0X2V4cGlyZWQgPSAwOworCQkJcWgtPmFkdmFuY2VfamlmZmllcyA9IGppZmZpZXM7CisJCQlnb3RvIGRvbmU7CisJCX0KKwkJcmV0ID0gMDsKIAl9CisKKwkvKiBUaGUgcXVldWUgaGFzbid0IGFkdmFuY2VkOyBjaGVjayBmb3IgdGltZW91dCAqLworCWlmIChxaC0+d2FpdF9leHBpcmVkKQorCQlnb3RvIGRvbmU7CisKKwlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBxaC0+YWR2YW5jZV9qaWZmaWVzICsgUUhfV0FJVF9USU1FT1VUKSkgeworCisJCS8qIERldGVjdCB0aGUgSW50ZWwgYnVnIGFuZCB3b3JrIGFyb3VuZCBpdCAqLworCQlpZiAocWgtPnBvc3RfdGQgJiYgcWhfZWxlbWVudChxaCkgPT0KKwkJCQljcHVfdG9fbGUzMihxaC0+cG9zdF90ZC0+ZG1hX2hhbmRsZSkpIHsKKwkJCXFoLT5lbGVtZW50ID0gcWgtPnBvc3RfdGQtPmxpbms7CisJCQlxaC0+YWR2YW5jZV9qaWZmaWVzID0gamlmZmllczsKKwkJCXJldCA9IDE7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQlxaC0+d2FpdF9leHBpcmVkID0gMTsKKworCQkvKiBJZiB0aGUgY3VycmVudCBVUkIgd2FudHMgRlNCUiwgdW5saW5rIGl0IHRlbXBvcmFyaWx5CisJCSAqIHNvIHRoYXQgd2UgY2FuIHNhZmVseSBzZXQgdGhlIG5leHQgVEQgdG8gaW50ZXJydXB0IG9uCisJCSAqIGNvbXBsZXRpb24uICBUaGF0IHdheSB3ZSdsbCBrbm93IGFzIHNvb24gYXMgdGhlIHF1ZXVlCisJCSAqIHN0YXJ0cyBtb3ZpbmcgYWdhaW4uICovCisJCWlmICh1cmJwICYmIHVyYnAtPmZzYnIgJiYgIShzdGF0dXMgJiBURF9DVFJMX0lPQykpCisJCQl1aGNpX3VubGlua19xaCh1aGNpLCBxaCk7CisKKwl9IGVsc2UgeworCQkvKiBVbm1vdmluZyBidXQgbm90LXlldC1leHBpcmVkIHF1ZXVlcyBrZWVwIEZTQlIgYWxpdmUgKi8KKwkJaWYgKHVyYnApCisJCQl1aGNpX3VyYnBfd2FudHNfZnNicih1aGNpLCB1cmJwKTsKKwl9CisKK2RvbmU6CisJcmV0dXJuIHJldDsKIH0KIAogLyoKQEAgLTEzNjEsMTQgKzE0OTYsMTMgQEAKIAkJcmV0dXJuOwogCX0KIAl1aGNpLT5zY2FuX2luX3Byb2dyZXNzID0gMTsKLSByZXNjYW46CityZXNjYW46CiAJdWhjaS0+bmVlZF9yZXNjYW4gPSAwOworCXVoY2ktPmZzYnJfaXNfd2FudGVkID0gMDsKIAogCXVoY2lfY2xlYXJfbmV4dF9pbnRlcnJ1cHQodWhjaSk7CiAJdWhjaV9nZXRfY3VycmVudF9mcmFtZV9udW1iZXIodWhjaSk7Ci0KLQlpZiAodWhjaS0+ZnJhbWVfbnVtYmVyICsgdWhjaS0+aXNfc3RvcHBlZCAhPSB1aGNpLT50ZF9yZW1vdmVfYWdlKQotCQl1aGNpX2ZyZWVfcGVuZGluZ190ZHModWhjaSk7CisJdWhjaS0+Y3VyX2lzb19mcmFtZSA9IHVoY2ktPmZyYW1lX251bWJlcjsKIAogCS8qIEdvIHRocm91Z2ggYWxsIHRoZSBRSCBxdWV1ZXMgYW5kIHByb2Nlc3MgdGhlIFVSQnMgaW4gZWFjaCBvbmUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgVUhDSV9OVU1fU0tFTFFIIC0gMTsgKytpKSB7CkBAIC0xMzc3LDMzICsxNTExLDMwIEBACiAJCXdoaWxlICgocWggPSB1aGNpLT5uZXh0X3FoKSAhPSB1aGNpLT5za2VscWhbaV0pIHsKIAkJCXVoY2ktPm5leHRfcWggPSBsaXN0X2VudHJ5KHFoLT5ub2RlLm5leHQsCiAJCQkJCXN0cnVjdCB1aGNpX3FoLCBub2RlKTsKLQkJCXVoY2lfc2Nhbl9xaCh1aGNpLCBxaCwgcmVncyk7CisKKwkJCWlmICh1aGNpX2FkdmFuY2VfY2hlY2sodWhjaSwgcWgpKSB7CisJCQkJdWhjaV9zY2FuX3FoKHVoY2ksIHFoLCByZWdzKTsKKwkJCQlpZiAocWgtPnN0YXRlID09IFFIX1NUQVRFX0FDVElWRSkgeworCQkJCQl1aGNpX3VyYnBfd2FudHNfZnNicih1aGNpLAorCWxpc3RfZW50cnkocWgtPnF1ZXVlLm5leHQsIHN0cnVjdCB1cmJfcHJpdiwgbm9kZSkpOworCQkJCX0KKwkJCX0KIAkJfQogCX0KIAorCXVoY2ktPmxhc3RfaXNvX2ZyYW1lID0gdWhjaS0+Y3VyX2lzb19mcmFtZTsKIAlpZiAodWhjaS0+bmVlZF9yZXNjYW4pCiAJCWdvdG8gcmVzY2FuOwogCXVoY2ktPnNjYW5faW5fcHJvZ3Jlc3MgPSAwOwogCi0JLyogSWYgdGhlIGNvbnRyb2xsZXIgaXMgc3RvcHBlZCwgd2UgY2FuIGZpbmlzaCB0aGVzZSBvZmYgcmlnaHQgbm93ICovCi0JaWYgKHVoY2ktPmlzX3N0b3BwZWQpCi0JCXVoY2lfZnJlZV9wZW5kaW5nX3Rkcyh1aGNpKTsKKwlpZiAodWhjaS0+ZnNicl9pc19vbiAmJiAhdWhjaS0+ZnNicl9pc193YW50ZWQgJiYKKwkJCSF1aGNpLT5mc2JyX2V4cGlyaW5nKSB7CisJCXVoY2ktPmZzYnJfZXhwaXJpbmcgPSAxOworCQltb2RfdGltZXIoJnVoY2ktPmZzYnJfdGltZXIsIGppZmZpZXMgKyBGU0JSX09GRl9ERUxBWSk7CisJfQogCi0JaWYgKGxpc3RfZW1wdHkoJnVoY2ktPnRkX3JlbW92ZV9saXN0KSAmJgotCQkJbGlzdF9lbXB0eSgmdWhjaS0+c2tlbF91bmxpbmtfcWgtPm5vZGUpKQorCWlmIChsaXN0X2VtcHR5KCZ1aGNpLT5za2VsX3VubGlua19xaC0+bm9kZSkpCiAJCXVoY2lfY2xlYXJfbmV4dF9pbnRlcnJ1cHQodWhjaSk7CiAJZWxzZQogCQl1aGNpX3NldF9uZXh0X2ludGVycnVwdCh1aGNpKTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tfZnNicihzdHJ1Y3QgdWhjaV9oY2QgKnVoY2kpCi17Ci0JLyogRm9yIG5vdywgZG9uJ3Qgc2NhbiBVUkJzIGZvciBGU0JSIHRpbWVvdXRzLgotCSAqIEFkZCBpdCBiYWNrIGluIGxhdGVyLi4uICovCi0KLQkvKiBSZWFsbHkgZGlzYWJsZSBGU0JSICovCi0JaWYgKCF1aGNpLT5mc2JyICYmIHVoY2ktPmZzYnJ0aW1lb3V0ICYmIHRpbWVfYWZ0ZXJfZXEoamlmZmllcywgdWhjaS0+ZnNicnRpbWVvdXQpKSB7Ci0JCXVoY2ktPmZzYnJ0aW1lb3V0ID0gMDsKLQkJdWhjaS0+c2tlbF90ZXJtX3FoLT5saW5rID0gVUhDSV9QVFJfVEVSTTsKLQl9Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay5jIGIvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYwppbmRleCAyYTBlMThhLi5iMmJhZmMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay5jCisrKyBiL2RyaXZlcnMvdXNiL2ltYWdlL21pY3JvdGVrLmMKQEAgLTUxMyw3ICs1MTMsNyBAQAogCQltdHNfdHJhbnNmZXJfY2xlYW51cCh0cmFuc2Zlcik7CiAgICAgICAgIH0KIAotCXNnID0gY29udGV4dC0+c3JiLT5idWZmZXI7CisJc2cgPSBjb250ZXh0LT5zcmItPnJlcXVlc3RfYnVmZmVyOwogCWNvbnRleHQtPmZyYWdtZW50Kys7CiAJbXRzX2ludF9zdWJtaXRfdXJiKHRyYW5zZmVyLAogCQkJICAgY29udGV4dC0+ZGF0YV9waXBlLApAQCAtNTQ5LDE5ICs1NDksMTkgQEAKIAlkZXNjLT5jb250ZXh0LmZyYWdtZW50ID0gMDsKIAogCWlmICghc3JiLT51c2Vfc2cpIHsKLQkJaWYgKCAhc3JiLT5idWZmbGVuICl7CisJCWlmICggIXNyYi0+cmVxdWVzdF9idWZmbGVuICl7CiAJCQlkZXNjLT5jb250ZXh0LmRhdGEgPSBOVUxMOwogCQkJZGVzYy0+Y29udGV4dC5kYXRhX2xlbmd0aCA9IDA7CiAJCQlyZXR1cm47CiAJCX0gZWxzZSB7Ci0JCQlkZXNjLT5jb250ZXh0LmRhdGEgPSBzcmItPmJ1ZmZlcjsKLQkJCWRlc2MtPmNvbnRleHQuZGF0YV9sZW5ndGggPSBzcmItPmJ1ZmZsZW47CisJCQlkZXNjLT5jb250ZXh0LmRhdGEgPSBzcmItPnJlcXVlc3RfYnVmZmVyOworCQkJZGVzYy0+Y29udGV4dC5kYXRhX2xlbmd0aCA9IHNyYi0+cmVxdWVzdF9idWZmbGVuOwogCQkJTVRTX0RFQlVHKCJsZW5ndGggPSAlZCBvciAlZFxuIiwKIAkJCQkgIHNyYi0+cmVxdWVzdF9idWZmbGVuLCBzcmItPmJ1ZmZsZW4pOwogCQl9CiAJfSBlbHNlIHsKIAkJTVRTX0RFQlVHKCJVc2luZyBzY2F0dGVyL2dhdGhlclxuIik7Ci0JCXNnID0gc3JiLT5idWZmZXI7CisJCXNnID0gc3JiLT5yZXF1ZXN0X2J1ZmZlcjsKIAkJZGVzYy0+Y29udGV4dC5kYXRhID0gcGFnZV9hZGRyZXNzKHNnWzBdLnBhZ2UpICsgc2dbMF0ub2Zmc2V0OwogCQlkZXNjLT5jb250ZXh0LmRhdGFfbGVuZ3RoID0gc2dbMF0ubGVuZ3RoOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L2FjZWNhZC5jIGIvZHJpdmVycy91c2IvaW5wdXQvYWNlY2FkLmMKaW5kZXggZGYyOWI4MC4uMThjMTBlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW5wdXQvYWNlY2FkLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvYWNlY2FkLmMKQEAgLTI3LDExICsyNyw5IEBACiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIC8qCiAgKiBWZXJzaW9uIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC9haXB0ZWsuYyBiL2RyaXZlcnMvdXNiL2lucHV0L2FpcHRlay5jCmluZGV4IGE2NjkzYjAuLmIxMzhkYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2lucHV0L2FpcHRlay5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L2FpcHRlay5jCkBAIC03MywxMSArNzMsOSBAQAogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L2FwcGxldG91Y2guYyBiL2RyaXZlcnMvdXNiL2lucHV0L2FwcGxldG91Y2guYwppbmRleCBjMjIyZWQxLi4zNjg1NTA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9hcHBsZXRvdWNoLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvYXBwbGV0b3VjaC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIEFwcGxlIFVTQiBUb3VjaHBhZCAoZm9yIHBvc3QtRmVicnVhcnkgMjAwNSBQb3dlckJvb2tzKSBkcml2ZXIKKyAqIEFwcGxlIFVTQiBUb3VjaHBhZCAoZm9yIHBvc3QtRmVicnVhcnkgMjAwNSBQb3dlckJvb2tzIGFuZCBNYWNCb29rcykgZHJpdmVyCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDQgR3JlZyBLcm9haC1IYXJ0bWFuIChncmVnQGtyb2FoLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNSAgICAgIEpvaGFubmVzIEJlcmcgKGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQpCkBAIC03LDYgKzcsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1ICAgICAgRnJhbmsgQXJub2xkIChmcmFua0BzY2lyb2Njby01di10dXJiby5kZSkKICAqIENvcHlyaWdodCAoQykgMjAwNSAgICAgIFBldGVyIE9zdGVybHVuZCAocGV0ZXJvMkB0ZWxpYS5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgICAgICBNaWNoYWVsIEhhbnNlbG1hbm4gKGxpbnV4LWtlcm5lbEBoYW5zbWkuY2gpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgICAgICBOaWNvbGFzIEJvaWNoYXQgKG5pY29sYXNAYm9pY2hhdC5jaCkKICAqCiAgKiBUaGFua3MgdG8gQWxleCBIYXJwZXIgPGJhc2lsaXNrQGZvb2JveC5uZXQ+IGZvciBoaXMgaW5wdXRzLgogICoKQEAgLTMyLDkgKzMzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIC8qIEFwcGxlIGhhcyBwb3dlcmJvb2tzIHdoaWNoIGhhdmUgdGhlIGtleWJvYXJkIHdpdGggZGlmZmVyZW50IFByb2R1Y3QgSURzICovCiAjZGVmaW5lIEFQUExFX1ZFTkRPUl9JRAkJMHgwNUFDCkBAIC00NCw2ICs0MywxMSBAQAogI2RlZmluZSBHRVlTRVJfSVNPX1BST0RVQ1RfSUQJMHgwMjE1CiAjZGVmaW5lIEdFWVNFUl9KSVNfUFJPRFVDVF9JRAkweDAyMTYKIAorLyogTWFjQm9vayBkZXZpY2VzICovCisjZGVmaW5lIEdFWVNFUjNfQU5TSV9QUk9EVUNUX0lECTB4MDIxNworI2RlZmluZSBHRVlTRVIzX0lTT19QUk9EVUNUX0lECTB4MDIxOAorI2RlZmluZSBHRVlTRVIzX0pJU19QUk9EVUNUX0lECTB4MDIxOQorCiAjZGVmaW5lIEFUUF9ERVZJQ0UocHJvZCkJCQkJCVwKIAkubWF0Y2hfZmxhZ3MgPSBVU0JfREVWSUNFX0lEX01BVENIX0RFVklDRSB8CQlcCiAJCSAgICAgICBVU0JfREVWSUNFX0lEX01BVENIX0lOVF9DTEFTUyB8CQlcCkBAIC02NSw2ICs2OSwxMCBAQAogCXsgQVRQX0RFVklDRShHRVlTRVJfSVNPX1BST0RVQ1RfSUQpIH0sCiAJeyBBVFBfREVWSUNFKEdFWVNFUl9KSVNfUFJPRFVDVF9JRCkgfSwKIAorCXsgQVRQX0RFVklDRShHRVlTRVIzX0FOU0lfUFJPRFVDVF9JRCkgfSwKKwl7IEFUUF9ERVZJQ0UoR0VZU0VSM19JU09fUFJPRFVDVF9JRCkgfSwKKwl7IEFUUF9ERVZJQ0UoR0VZU0VSM19KSVNfUFJPRFVDVF9JRCkgfSwKKwogCS8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiAJeyB9CiB9OwpAQCAtMTAxLDYgKzEwOSwxMyBAQAogICovCiAjZGVmaW5lIEFUUF9USFJFU0hPTEQJIDUKIAorLyogTWFjQm9vayBQcm8gKEdleXNlciAzKSBpbml0aWFsaXphdGlvbiBjb25zdGFudHMgKi8KKyNkZWZpbmUgQVRQX0dFWVNFUjNfTU9ERV9SRUFEX1JFUVVFU1RfSUQgMQorI2RlZmluZSBBVFBfR0VZU0VSM19NT0RFX1dSSVRFX1JFUVVFU1RfSUQgOQorI2RlZmluZSBBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfVkFMVUUgMHgzMDAKKyNkZWZpbmUgQVRQX0dFWVNFUjNfTU9ERV9SRVFVRVNUX0lOREVYIDAKKyNkZWZpbmUgQVRQX0dFWVNFUjNfTU9ERV9WRU5ET1JfVkFMVUUgMHgwNAorCiAvKiBTdHJ1Y3R1cmUgdG8gaG9sZCBhbGwgb2Ygb3VyIGRldmljZSBzcGVjaWZpYyBzdHVmZiAqLwogc3RydWN0IGF0cCB7CiAJY2hhcgkJCXBoeXNbNjRdOwpAQCAtMTQ3LDEzICsxNjIsMjIgQEAKIC8qIENoZWNrcyBpZiB0aGUgZGV2aWNlIGEgR2V5c2VyIDIgKEFOU0ksIElTTywgSklTKSAqLwogc3RhdGljIGlubGluZSBpbnQgYXRwX2lzX2dleXNlcl8yKHN0cnVjdCBhdHAgKmRldikKIHsKLQlpbnQxNl90IHByb2R1Y3RJZCA9IGxlMTZfdG9fY3B1KGRldi0+dWRldi0+ZGVzY3JpcHRvci5pZFByb2R1Y3QpOworCXUxNiBwcm9kdWN0SWQgPSBsZTE2X3RvX2NwdShkZXYtPnVkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KTsKIAogCXJldHVybiAocHJvZHVjdElkID09IEdFWVNFUl9BTlNJX1BST0RVQ1RfSUQpIHx8CiAJCShwcm9kdWN0SWQgPT0gR0VZU0VSX0lTT19QUk9EVUNUX0lEKSB8fAogCQkocHJvZHVjdElkID09IEdFWVNFUl9KSVNfUFJPRFVDVF9JRCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IGF0cF9pc19nZXlzZXJfMyhzdHJ1Y3QgYXRwICpkZXYpCit7CisJdTE2IHByb2R1Y3RJZCA9IGxlMTZfdG9fY3B1KGRldi0+dWRldi0+ZGVzY3JpcHRvci5pZFByb2R1Y3QpOworCisJcmV0dXJuIChwcm9kdWN0SWQgPT0gR0VZU0VSM19BTlNJX1BST0RVQ1RfSUQpIHx8CisJCShwcm9kdWN0SWQgPT0gR0VZU0VSM19JU09fUFJPRFVDVF9JRCkgfHwKKwkJKHByb2R1Y3RJZCA9PSBHRVlTRVIzX0pJU19QUk9EVUNUX0lEKTsKK30KKwogc3RhdGljIGludCBhdHBfY2FsY3VsYXRlX2FicyhpbnQgKnh5X3NlbnNvcnMsIGludCBuYl9zZW5zb3JzLCBpbnQgZmFjdCwKIAkJCSAgICAgaW50ICp6LCBpbnQgKmZpbmdlcnMpCiB7CkBAIC0yMTksMTIgKzI0MywzMyBAQAogCiAJLyogZHJvcCBpbmNvbXBsZXRlIGRhdGFzZXRzICovCiAJaWYgKGRldi0+dXJiLT5hY3R1YWxfbGVuZ3RoICE9IGRldi0+ZGF0YWxlbikgewotCQlkcHJpbnRrKCJhcHBsZXRvdWNoOiBpbmNvbXBsZXRlIGRhdGEgcGFja2FnZS5cbiIpOworCQlkcHJpbnRrKCJhcHBsZXRvdWNoOiBpbmNvbXBsZXRlIGRhdGEgcGFja2FnZSIKKwkJCSIgKGZpcnN0IGJ5dGU6ICVkLCBsZW5ndGg6ICVkKS5cbiIsCisJCQlkZXYtPmRhdGFbMF0sIGRldi0+dXJiLT5hY3R1YWxfbGVuZ3RoKTsKIAkJZ290byBleGl0OwogCX0KIAogCS8qIHJlb3JkZXIgdGhlIHNlbnNvcnMgdmFsdWVzICovCi0JaWYgKGF0cF9pc19nZXlzZXJfMihkZXYpKSB7CisJaWYgKGF0cF9pc19nZXlzZXJfMyhkZXYpKSB7CisJCW1lbXNldChkZXYtPnh5X2N1ciwgMCwgc2l6ZW9mKGRldi0+eHlfY3VyKSk7CisKKwkJLyoKKwkJICogVGhlIHZhbHVlcyBhcmUgbGFpZCBvdXQgbGlrZSB0aGlzOgorCQkgKiAtLCBZMSwgWTIsIC0sIFkzLCBZNCwgLSwgLi4uLCAtLCBYMSwgWDIsIC0sIFgzLCBYNCwgLi4uCisJCSAqICctJyBpcyBhbiB1bnVzZWQgdmFsdWUuCisJCSAqLworCisJCS8qIHJlYWQgWCB2YWx1ZXMgKi8KKwkJZm9yIChpID0gMCwgaiA9IDE5OyBpIDwgMjA7IGkgKz0gMiwgaiArPSAzKSB7CisJCQlkZXYtPnh5X2N1cltpXSA9IGRldi0+ZGF0YVtqICsgMV07CisJCQlkZXYtPnh5X2N1cltpICsgMV0gPSBkZXYtPmRhdGFbaiArIDJdOworCQl9CisJCS8qIHJlYWQgWSB2YWx1ZXMgKi8KKwkJZm9yIChpID0gMCwgaiA9IDE7IGkgPCA5OyBpICs9IDIsIGogKz0gMykgeworCQkJZGV2LT54eV9jdXJbQVRQX1hTRU5TT1JTICsgaV0gPSBkZXYtPmRhdGFbaiArIDFdOworCQkJZGV2LT54eV9jdXJbQVRQX1hTRU5TT1JTICsgaSArIDFdID0gZGV2LT5kYXRhW2ogKyAyXTsKKwkJfQorCX0gZWxzZSBpZiAoYXRwX2lzX2dleXNlcl8yKGRldikpIHsKIAkJbWVtc2V0KGRldi0+eHlfY3VyLCAwLCBzaXplb2YoZGV2LT54eV9jdXIpKTsKIAogCQkvKgpAQCAtMjY3LDYgKzMxMiw5IEBACiAJCWRldi0+eF9vbGQgPSBkZXYtPnlfb2xkID0gLTE7CiAJCW1lbWNweShkZXYtPnh5X29sZCwgZGV2LT54eV9jdXIsIHNpemVvZihkZXYtPnh5X29sZCkpOwogCisJCWlmIChhdHBfaXNfZ2V5c2VyXzMoZGV2KSkgLyogTm8gMTciIE1hY2Jvb2tzICh5ZXQpICovCisJCQlnb3RvIGV4aXQ7CisKIAkJLyogMTciIFBvd2VyYm9va3MgaGF2ZSBleHRyYSBYIHNlbnNvcnMgKi8KIAkJZm9yIChpID0gKGF0cF9pc19nZXlzZXJfMihkZXYpPzE1OjE2KTsgaSA8IEFUUF9YU0VOU09SUzsgaSsrKSB7CiAJCQlpZiAoIWRldi0+eHlfY3VyW2ldKSBjb250aW51ZTsKQEAgLTQxNCw3ICs0NjIsNTAgQEAKIAlkZXYtPnVkZXYgPSB1ZGV2OwogCWRldi0+aW5wdXQgPSBpbnB1dF9kZXY7CiAJZGV2LT5vdmVyZmxvd3dhcm4gPSAwOwotCWRldi0+ZGF0YWxlbiA9IChhdHBfaXNfZ2V5c2VyXzIoZGV2KT82NDo4MSk7CisJaWYgKGF0cF9pc19nZXlzZXJfMyhkZXYpKQorCQlkZXYtPmRhdGFsZW4gPSA2NDsKKwllbHNlIGlmIChhdHBfaXNfZ2V5c2VyXzIoZGV2KSkKKwkJZGV2LT5kYXRhbGVuID0gNjQ7CisJZWxzZQorCQlkZXYtPmRhdGFsZW4gPSA4MTsKKworCWlmIChhdHBfaXNfZ2V5c2VyXzMoZGV2KSkgeworCQkvKgorCQkgKiBCeSBkZWZhdWx0IEdleXNlciAzIGRldmljZSBzZW5kcyBzdGFuZGFyZCBVU0IgSElEIG1vdXNlCisJCSAqIHBhY2tldHMgKFJlcG9ydCBJRCAyKS4gVGhpcyBjb2RlIGNoYW5nZXMgZGV2aWNlIG1vZGUsIHNvIGl0CisJCSAqIHNlbmRzIHJhdyBzZW5zb3IgcmVwb3J0cyAoUmVwb3J0IElEIDUpLgorCQkgKi8KKwkJY2hhciBkYXRhWzhdOworCQlpbnQgc2l6ZTsKKworCQlzaXplID0gdXNiX2NvbnRyb2xfbXNnKHVkZXYsIHVzYl9yY3ZjdHJscGlwZSh1ZGV2LCAwKSwKKwkJCUFUUF9HRVlTRVIzX01PREVfUkVBRF9SRVFVRVNUX0lELAorCQkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKKwkJCUFUUF9HRVlTRVIzX01PREVfUkVRVUVTVF9WQUxVRSwKKwkJCUFUUF9HRVlTRVIzX01PREVfUkVRVUVTVF9JTkRFWCwgJmRhdGEsIDgsIDUwMDApOworCisJCWlmIChzaXplICE9IDgpIHsKKwkJCWVycigiQ291bGQgbm90IGRvIG1vZGUgcmVhZCByZXF1ZXN0IGZyb20gZGV2aWNlIgorCQkJCQkJCSIgKEdleXNlciAzIG1vZGUpIik7CisJCQlnb3RvIGVycl9mcmVlX2RldnM7CisJCX0KKworCQkvKiBBcHBseSB0aGUgbW9kZSBzd2l0Y2ggKi8KKwkJZGF0YVswXSA9IEFUUF9HRVlTRVIzX01PREVfVkVORE9SX1ZBTFVFOworCisJCXNpemUgPSB1c2JfY29udHJvbF9tc2codWRldiwgdXNiX3NuZGN0cmxwaXBlKHVkZXYsIDApLAorCQkJQVRQX0dFWVNFUjNfTU9ERV9XUklURV9SRVFVRVNUX0lELAorCQkJVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCQlBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfVkFMVUUsCisJCQlBVFBfR0VZU0VSM19NT0RFX1JFUVVFU1RfSU5ERVgsICZkYXRhLCA4LCA1MDAwKTsKKworCQlpZiAoc2l6ZSAhPSA4KSB7CisJCQllcnIoIkNvdWxkIG5vdCBkbyBtb2RlIHdyaXRlIHJlcXVlc3QgdG8gZGV2aWNlIgorCQkJCQkJCSIgKEdleXNlciAzIG1vZGUpIik7CisJCQlnb3RvIGVycl9mcmVlX2RldnM7CisJCX0KKwkJcHJpbnRrKCJhcHBsZXRvdWNoIEdleXNlciAzIGluaXRlZC5cbiIpOworCX0KIAogCWRldi0+dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRldi0+dXJiKSB7CkBAIC00NDcsNyArNTM4LDE1IEBACiAKIAlzZXRfYml0KEVWX0FCUywgaW5wdXRfZGV2LT5ldmJpdCk7CiAKLQlpZiAoYXRwX2lzX2dleXNlcl8yKGRldikpIHsKKwlpZiAoYXRwX2lzX2dleXNlcl8zKGRldikpIHsKKwkJLyoKKwkJICogTWFjQm9vayBoYXZlIDIwIFggc2Vuc29ycywgMTAgWSBzZW5zb3JzCisJCSAqLworCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19YLCAwLAorCQkJCSAgICAgKCgyMCAtIDEpICogQVRQX1hGQUNUKSAtIDEsIEFUUF9GVVpaLCAwKTsKKwkJaW5wdXRfc2V0X2Fic19wYXJhbXMoaW5wdXRfZGV2LCBBQlNfWSwgMCwKKwkJCQkgICAgICgoMTAgLSAxKSAqIEFUUF9ZRkFDVCkgLSAxLCBBVFBfRlVaWiwgMCk7CisJfSBlbHNlIGlmIChhdHBfaXNfZ2V5c2VyXzIoZGV2KSkgewogCQkvKgogCQkgKiBPY3QgMjAwNSAxNSIgUG93ZXJCb29rcyBoYXZlIDE1IFggc2Vuc29ycywgMTciIGFyZSBkZXRlY3RlZAogCQkgKiBsYXRlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L2F0aV9yZW1vdGUuYyBiL2RyaXZlcnMvdXNiL2lucHV0L2F0aV9yZW1vdGUuYwppbmRleCA5OWY5ODZjLi4wN2M4YzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9hdGlfcmVtb3RlLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvYXRpX3JlbW90ZS5jCkBAIC05Miw5ICs5Miw3IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KLSNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxsaW51eC91c2JfaW5wdXQuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CiAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC9hdGlfcmVtb3RlMi5jIGIvZHJpdmVycy91c2IvaW5wdXQvYXRpX3JlbW90ZTIuYwppbmRleCBhYjFhMWFlLi5lYTcxZGU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9hdGlfcmVtb3RlMi5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L2F0aV9yZW1vdGUyLmMKQEAgLTgsNyArOCw3IEBACiAgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KICAqLwogCi0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKICNkZWZpbmUgRFJJVkVSX0RFU0MgICAgIkFUSS9QaGlsaXBzIFVTQiBSRiByZW1vdGUgZHJpdmVyIgogI2RlZmluZSBEUklWRVJfVkVSU0lPTiAiMC4xIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW5wdXQvaGlkLWNvcmUuYyBiL2RyaXZlcnMvdXNiL2lucHV0L2hpZC1jb3JlLmMKaW5kZXggNDM1MjczZS4uYjlmYjk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW5wdXQvaGlkLWNvcmUuYworKysgYi9kcml2ZXJzL3VzYi9pbnB1dC9oaWQtY29yZS5jCkBAIC05NDQsMjEgKzk0NCwyOCBAQAogCWRldl9kYmcoJmhpZC0+aW50Zi0+ZGV2LCAicmVzZXR0aW5nIGRldmljZVxuIik7CiAJcmMgPSByY19sb2NrID0gdXNiX2xvY2tfZGV2aWNlX2Zvcl9yZXNldChoaWQtPmRldiwgaGlkLT5pbnRmKTsKIAlpZiAocmNfbG9jayA+PSAwKSB7Ci0JCXJjID0gdXNiX3Jlc2V0X2RldmljZShoaWQtPmRldik7CisJCXJjID0gdXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UoaGlkLT5kZXYsIGhpZC0+aW50Zik7CiAJCWlmIChyY19sb2NrKQogCQkJdXNiX3VubG9ja19kZXZpY2UoaGlkLT5kZXYpOwogCX0KIAljbGVhcl9iaXQoSElEX1JFU0VUX1BFTkRJTkcsICZoaWQtPmlvZmwpOwogCi0JaWYgKHJjID09IDApIHsKLQkJaGlkLT5yZXRyeV9kZWxheSA9IDA7Ci0JCWlmIChoaWRfc3RhcnRfaW4oaGlkKSkKKwlzd2l0Y2ggKHJjKSB7CisJY2FzZSAwOgorCQlpZiAoIXRlc3RfYml0KEhJRF9JTl9SVU5OSU5HLCAmaGlkLT5pb2ZsKSkKIAkJCWhpZF9pb19lcnJvcihoaWQpOwotCX0gZWxzZSBpZiAoIShyYyA9PSAtRU5PREVWIHx8IHJjID09IC1FSE9TVFVOUkVBQ0ggfHwgcmMgPT0gLUVJTlRSKSkKKwkJYnJlYWs7CisJZGVmYXVsdDoKIAkJZXJyKCJjYW4ndCByZXNldCBkZXZpY2UsICVzLSVzL2lucHV0JWQsIHN0YXR1cyAlZCIsCiAJCQkJaGlkLT5kZXYtPmJ1cy0+YnVzX25hbWUsCiAJCQkJaGlkLT5kZXYtPmRldnBhdGgsCiAJCQkJaGlkLT5pZm51bSwgcmMpOworCQkvKiBGQUxMVEhST1VHSCAqLworCWNhc2UgLUVIT1NUVU5SRUFDSDoKKwljYXNlIC1FTk9ERVY6CisJY2FzZSAtRUlOVFI6CisJCWJyZWFrOworCX0KIH0KIAogLyogTWFpbiBJL08gZXJyb3IgaGFuZGxlciAqLwpAQCAtMTM3NCw5ICsxMzgxLDYgQEAKIAogI2RlZmluZSBVU0JfVkVORE9SX0lEX1BBTkpJVAkJMHgxMzRjCiAKLSNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9TSUxWRVJDUkVTVAkweDA2MmEKLSNkZWZpbmUgVVNCX0RFVklDRV9JRF9TSUxWRVJDUkVTVF9LQgkweDAyMDEKLQogLyoKICAqIEluaXRpYWxpemUgYWxsIHJlcG9ydHMKICAqLwpAQCAtMTQ2MSw5ICsxNDY1LDYgQEAKICNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9PTlRSQUsJCTB4MGEwNwogI2RlZmluZSBVU0JfREVWSUNFX0lEX09OVFJBS19BRFUxMDAJMHgwMDY0CiAKLSNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9UQU5HVE9QCQkweDBkM2QKLSNkZWZpbmUgVVNCX0RFVklDRV9JRF9UQU5HVE9QX1VTQlBTMgkweDAwMDEKLQogI2RlZmluZSBVU0JfVkVORE9SX0lEX0VTU0VOVElBTF9SRUFMSVRZCTB4MGQ3ZgogI2RlZmluZSBVU0JfREVWSUNFX0lEX0VTU0VOVElBTF9SRUFMSVRZX1A1IDB4MDEwMAogCkBAIC0xNTIwLDEyICsxNTIxLDYgQEAKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9NQ0NfUE1EMTAyNExTCTB4MDA3NgogI2RlZmluZSBVU0JfREVWSUNFX0lEX01DQ19QTUQxMjA4TFMJMHgwMDdhCiAKLSNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9DSElDT05ZCQkweDA0ZjIKLSNkZWZpbmUgVVNCX0RFVklDRV9JRF9DSElDT05ZX1VTQkhVQl9LQgkweDAxMDAKLQotI2RlZmluZSBVU0JfVkVORE9SX0lEX0JUQwkJMHgwNDZlCi0jZGVmaW5lIFVTQl9ERVZJQ0VfSURfQlRDX0tFWUJPQVJECTB4NTMwMwotCiAjZGVmaW5lIFVTQl9WRU5ET1JfSURfVkVSTklFUgkJMHgwOGY3CiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfVkVSTklFUl9MQUJQUk8JMHgwMDAxCiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfVkVSTklFUl9HT1RFTVAJMHgwMDAyCkBAIC0xNTQ5LDIwICsxNTQ0LDEzIEBACiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfTERfTUFDSElORVRFU1QJMHgyMDQwCiAKICNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9BUFBMRQkJMHgwNWFjCi0jZGVmaW5lIFVTQl9ERVZJQ0VfSURfQVBQTEVfUE9XRVJNT1VTRQkweDAzMDQKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9BUFBMRV9NSUdIVFlNT1VTRQkweDAzMDQKIAogI2RlZmluZSBVU0JfVkVORE9SX0lEX0NIRVJSWQkJMHgwNDZhCiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfQ0hFUlJZX0NZTU9USU9OCTB4MDAyMwogCi0jZGVmaW5lIFVTQl9WRU5ET1JfSURfSFAJCTB4MDNmMAotI2RlZmluZSBVU0JfREVWSUNFX0lEX0hQX1VTQkhVQl9LQgkweDAyMGMKLQotI2RlZmluZSBVU0JfVkVORE9SX0lEX0lCTQkJMHgwNGIzCi0jZGVmaW5lIFVTQl9ERVZJQ0VfSURfSUJNX1VTQkhVQl9LQgkweDMwMDUKLQotI2RlZmluZSBVU0JfVkVORE9SX0lEX0NSRUFUSVZFTEFCUwkweDA2MmEKLSNkZWZpbmUgVVNCX0RFVklDRV9JRF9DUkVBVElWRUxBQlNfU0lMVkVSQ1JFU1QJMHgwMjAxCi0KKyNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9ZRUFMSU5LCQkweDY5OTMKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9ZRUFMSU5LX1AxS19QNEtfQjJLCTB4YjAwMQogLyoKICAqIEFscGhhYmV0aWNhbGx5IHNvcnRlZCBibGFja2xpc3QgYnkgcXVpcmsgdHlwZS4KICAqLwpAQCAtMTY3MSw2ICsxNjU5LDcgQEAKIAl7IFVTQl9WRU5ET1JfSURfV0FDT00sIFVTQl9ERVZJQ0VfSURfV0FDT01fRFRGICsgMywgSElEX1FVSVJLX0lHTk9SRSB9LAogCXsgVVNCX1ZFTkRPUl9JRF9XSVNFR1JPVVAsIFVTQl9ERVZJQ0VfSURfNF9QSElER0VUU0VSVk9fMjAsIEhJRF9RVUlSS19JR05PUkUgfSwKIAl7IFVTQl9WRU5ET1JfSURfV0lTRUdST1VQLCBVU0JfREVWSUNFX0lEXzFfUEhJREdFVFNFUlZPXzIwLCBISURfUVVJUktfSUdOT1JFIH0sCisJeyBVU0JfVkVORE9SX0lEX1lFQUxJTkssIFVTQl9ERVZJQ0VfSURfWUVBTElOS19QMUtfUDRLX0IySywgSElEX1FVSVJLX0lHTk9SRSB9LAogCiAJeyBVU0JfVkVORE9SX0lEX0FDRUNBRCwgVVNCX0RFVklDRV9JRF9BQ0VDQURfRkxBSVIsIEhJRF9RVUlSS19JR05PUkUgfSwKIAl7IFVTQl9WRU5ET1JfSURfQUNFQ0FELCBVU0JfREVWSUNFX0lEX0FDRUNBRF8zMDIsIEhJRF9RVUlSS19JR05PUkUgfSwKQEAgLTE2ODAsMTYgKzE2NjksOSBAQAogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fMlBPUlRLVk0sIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fNFBPUlRLVk0sIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fNFBPUlRLVk1DLCBISURfUVVJUktfTk9HRVQgfSwKLQl7IFVTQl9WRU5ET1JfSURfQlRDLCBVU0JfREVWSUNFX0lEX0JUQ19LRVlCT0FSRCwgSElEX1FVSVJLX05PR0VUfSwKLQl7IFVTQl9WRU5ET1JfSURfQ0hJQ09OWSwgVVNCX0RFVklDRV9JRF9DSElDT05ZX1VTQkhVQl9LQiwgSElEX1FVSVJLX05PR0VUfSwKLQl7IFVTQl9WRU5ET1JfSURfQ1JFQVRJVkVMQUJTLCBVU0JfREVWSUNFX0lEX0NSRUFUSVZFTEFCU19TSUxWRVJDUkVTVCwgSElEX1FVSVJLX05PR0VUIH0sCi0JeyBVU0JfVkVORE9SX0lEX0hQLCBVU0JfREVWSUNFX0lEX0hQX1VTQkhVQl9LQiwgSElEX1FVSVJLX05PR0VUIH0sCi0JeyBVU0JfVkVORE9SX0lEX0lCTSwgVVNCX0RFVklDRV9JRF9JQk1fVVNCSFVCX0tCLCBISURfUVVJUktfTk9HRVQgfSwKLQl7IFVTQl9WRU5ET1JfSURfVEFOR1RPUCwgVVNCX0RFVklDRV9JRF9UQU5HVE9QX1VTQlBTMiwgSElEX1FVSVJLX05PR0VUIH0sCiAJeyBVU0JfVkVORE9SX0lEX1dJU0VHUk9VUCwgVVNCX0RFVklDRV9JRF9EVUFMX1VTQl9KT1lQQUQsIEhJRF9RVUlSS19OT0dFVCB8IEhJRF9RVUlSS19NVUxUSV9JTlBVVCB9LAotCXsgVVNCX1ZFTkRPUl9JRF9TSUxWRVJDUkVTVCwgVVNCX0RFVklDRV9JRF9TSUxWRVJDUkVTVF9LQiwgSElEX1FVSVJLX05PR0VUIH0sCiAKLQl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIFVTQl9ERVZJQ0VfSURfQVBQTEVfUE9XRVJNT1VTRSwgSElEX1FVSVJLXzJXSEVFTF9QT1dFUk1PVVNFIH0sCisJeyBVU0JfVkVORE9SX0lEX0FQUExFLCBVU0JfREVWSUNFX0lEX0FQUExFX01JR0hUWU1PVVNFLCBISURfUVVJUktfTUlHSFRZTU9VU0UgfCBISURfUVVJUktfSU5WRVJUX0hXSEVFTCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BNFRFQ0gsIFVTQl9ERVZJQ0VfSURfQTRURUNIX1dDUDMyUFUsIEhJRF9RVUlSS18yV0hFRUxfTU9VU0VfSEFDS183IH0sCiAJeyBVU0JfVkVORE9SX0lEX0NZUFJFU1MsIFVTQl9ERVZJQ0VfSURfQ1lQUkVTU19NT1VTRSwgSElEX1FVSVJLXzJXSEVFTF9NT1VTRV9IQUNLXzUgfSwKIApAQCAtMTcxMSw2ICsxNjkzLDkgQEAKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxNCwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxNSwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxNiwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKKwl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxNywgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKKwl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxOCwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKKwl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDIxOSwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDMwQSwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKIAl7IFVTQl9WRU5ET1JfSURfQVBQTEUsIDB4MDMwQiwgSElEX1FVSVJLX1BPV0VSQk9PS19IQVNfRk4gfSwKIApAQCAtMTc5NCw2ICsxNzc5LDE0IEBACiAJCQkoaGlkX2JsYWNrbGlzdFtuXS5pZFByb2R1Y3QgPT0gbGUxNl90b19jcHUoZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCkpKQogCQkJCXF1aXJrcyA9IGhpZF9ibGFja2xpc3Rbbl0ucXVpcmtzOwogCisJLyogTWFueSBrZXlib2FyZHMgYW5kIG1pY2UgZG9uJ3QgbGlrZSB0byBiZSBwb2xsZWQgZm9yIHJlcG9ydHMsCisJICogc28gd2Ugd2lsbCBhbHdheXMgc2V0IHRoZSBISURfUVVJUktfTk9HRVQgZmxhZyBmb3IgdGhlbS4gKi8KKwlpZiAoaW50ZXJmYWNlLT5kZXNjLmJJbnRlcmZhY2VTdWJDbGFzcyA9PSBVU0JfSU5URVJGQUNFX1NVQkNMQVNTX0JPT1QpIHsKKwkJaWYgKGludGVyZmFjZS0+ZGVzYy5iSW50ZXJmYWNlUHJvdG9jb2wgPT0gVVNCX0lOVEVSRkFDRV9QUk9UT0NPTF9LRVlCT0FSRCB8fAorCQkJaW50ZXJmYWNlLT5kZXNjLmJJbnRlcmZhY2VQcm90b2NvbCA9PSBVU0JfSU5URVJGQUNFX1BST1RPQ09MX01PVVNFKQorCQkJCXF1aXJrcyB8PSBISURfUVVJUktfTk9HRVQ7CisJfQorCiAJaWYgKHF1aXJrcyAmIEhJRF9RVUlSS19JR05PUkUpCiAJCXJldHVybiBOVUxMOwogCkBAIC0yMDgwLDExICsyMDczLDI5IEBACiAJaW50IHN0YXR1czsKIAogCWNsZWFyX2JpdChISURfU1VTUEVOREVELCAmaGlkLT5pb2ZsKTsKKwloaWQtPnJldHJ5X2RlbGF5ID0gMDsKIAlzdGF0dXMgPSBoaWRfc3RhcnRfaW4oaGlkKTsKIAlkZXZfZGJnKCZpbnRmLT5kZXYsICJyZXN1bWUgc3RhdHVzICVkXG4iLCBzdGF0dXMpOwogCXJldHVybiBzdGF0dXM7CiB9CiAKKy8qIFRyZWF0IFVTQiByZXNldCBwcmV0dHkgbXVjaCB0aGUgc2FtZSBhcyBzdXNwZW5kL3Jlc3VtZSAqLworc3RhdGljIHZvaWQgaGlkX3ByZV9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKK3sKKwkvKiBGSVhNRTogV2hhdCBpZiB0aGUgaW50ZXJmYWNlIGlzIGFscmVhZHkgc3VzcGVuZGVkPyAqLworCWhpZF9zdXNwZW5kKGludGYsIFBNU0dfT04pOworfQorCitzdGF0aWMgdm9pZCBoaWRfcG9zdF9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKK3sKKwlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldiAoaW50Zik7CisKKwloaWRfc2V0X2lkbGUoZGV2LCBpbnRmLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iSW50ZXJmYWNlTnVtYmVyLCAwLCAwKTsKKwkvKiBGSVhNRTogQW55IG1vcmUgcmVpbml0aWFsaXphdGlvbiBuZWVkZWQ/ICovCisKKwloaWRfcmVzdW1lKGludGYpOworfQorCiBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgaGlkX3VzYl9pZHMgW10gPSB7CiAJeyAubWF0Y2hfZmxhZ3MgPSBVU0JfREVWSUNFX0lEX01BVENIX0lOVF9DTEFTUywKIAkJLmJJbnRlcmZhY2VDbGFzcyA9IFVTQl9JTlRFUkZBQ0VfQ0xBU1NfSElEIH0sCkBAIC0yMDk5LDYgKzIxMTAsOCBAQAogCS5kaXNjb25uZWN0ID0JaGlkX2Rpc2Nvbm5lY3QsCiAJLnN1c3BlbmQgPQloaWRfc3VzcGVuZCwKIAkucmVzdW1lID0JaGlkX3Jlc3VtZSwKKwkucHJlX3Jlc2V0ID0JaGlkX3ByZV9yZXNldCwKKwkucG9zdF9yZXNldCA9CWhpZF9wb3N0X3Jlc2V0LAogCS5pZF90YWJsZSA9CWhpZF91c2JfaWRzLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW5wdXQvaGlkLWlucHV0LmMgYi9kcml2ZXJzL3VzYi9pbnB1dC9oaWQtaW5wdXQuYwppbmRleCAyNWJjODVmLi4wMjhlMWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9oaWQtaW5wdXQuYworKysgYi9kcml2ZXJzL3VzYi9pbnB1dC9oaWQtaW5wdXQuYwpAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogCiAjdW5kZWYgREVCVUcKIApAQCAtNTY3LDE2ICs1NjUsMTQgQEAKIAkJCWJyZWFrOwogCX0KIAotCXNldF9iaXQodXNhZ2UtPnR5cGUsIGlucHV0LT5ldmJpdCk7Ci0KLQl3aGlsZSAodXNhZ2UtPmNvZGUgPD0gbWF4ICYmIHRlc3RfYW5kX3NldF9iaXQodXNhZ2UtPmNvZGUsIGJpdCkpCi0JCXVzYWdlLT5jb2RlID0gZmluZF9uZXh0X3plcm9fYml0KGJpdCwgbWF4ICsgMSwgdXNhZ2UtPmNvZGUpOwotCi0JaWYgKHVzYWdlLT5jb2RlID4gbWF4KQotCQlnb3RvIGlnbm9yZTsKLQotCWlmICgoKGRldmljZS0+cXVpcmtzICYgKEhJRF9RVUlSS18yV0hFRUxfUE9XRVJNT1VTRSkpICYmICh1c2FnZS0+aGlkID09IDB4MDAwMTAwMzIpKSkKLQkJbWFwX3JlbChSRUxfSFdIRUVMKTsKKwlpZiAoZGV2aWNlLT5xdWlya3MgJiBISURfUVVJUktfTUlHSFRZTU9VU0UpIHsKKwkJaWYgKHVzYWdlLT5oaWQgPT0gSElEX0dEX1opCisJCQltYXBfcmVsKFJFTF9IV0hFRUwpOworCQllbHNlIGlmICh1c2FnZS0+Y29kZSA9PSBCVE5fMSkKKwkJCW1hcF9rZXkoQlROXzIpOworCQllbHNlIGlmICh1c2FnZS0+Y29kZSA9PSBCVE5fMikKKwkJCW1hcF9rZXkoQlROXzEpOworCX0KIAogCWlmICgoZGV2aWNlLT5xdWlya3MgJiAoSElEX1FVSVJLXzJXSEVFTF9NT1VTRV9IQUNLXzcgfCBISURfUVVJUktfMldIRUVMX01PVVNFX0hBQ0tfNSkpICYmCiAJCSAodXNhZ2UtPnR5cGUgPT0gRVZfUkVMKSAmJiAodXNhZ2UtPmNvZGUgPT0gUkVMX1dIRUVMKSkKQEAgLTU4Niw2ICs1ODIsMTUgQEAKIAkJfHwgKChkZXZpY2UtPnF1aXJrcyAmIEhJRF9RVUlSS18yV0hFRUxfTU9VU0VfSEFDS183KSAmJiAodXNhZ2UtPmhpZCA9PSAweDAwMDkwMDA3KSkpCiAJCWdvdG8gaWdub3JlOwogCisJc2V0X2JpdCh1c2FnZS0+dHlwZSwgaW5wdXQtPmV2Yml0KTsKKworCXdoaWxlICh1c2FnZS0+Y29kZSA8PSBtYXggJiYgdGVzdF9hbmRfc2V0X2JpdCh1c2FnZS0+Y29kZSwgYml0KSkKKwkJdXNhZ2UtPmNvZGUgPSBmaW5kX25leHRfemVyb19iaXQoYml0LCBtYXggKyAxLCB1c2FnZS0+Y29kZSk7CisKKwlpZiAodXNhZ2UtPmNvZGUgPiBtYXgpCisJCWdvdG8gaWdub3JlOworCisKIAlpZiAodXNhZ2UtPnR5cGUgPT0gRVZfQUJTKSB7CiAKIAkJaW50IGEgPSBmaWVsZC0+bG9naWNhbF9taW5pbXVtOwpAQCAtNjQ3LDYgKzY1MiwxMSBAQAogCQlyZXR1cm47CiAJfQogCisJaWYgKChoaWQtPnF1aXJrcyAmIEhJRF9RVUlSS19JTlZFUlRfSFdIRUVMKSAmJiAodXNhZ2UtPmNvZGUgPT0gUkVMX0hXSEVFTCkpIHsKKwkJaW5wdXRfZXZlbnQoaW5wdXQsIHVzYWdlLT50eXBlLCB1c2FnZS0+Y29kZSwgLXZhbHVlKTsKKwkJcmV0dXJuOworCX0KKwogCWlmICgoaGlkLT5xdWlya3MgJiBISURfUVVJUktfMldIRUVMX01PVVNFX0hBQ0tfT04pICYmICh1c2FnZS0+Y29kZSA9PSBSRUxfV0hFRUwpKSB7CiAJCWlucHV0X2V2ZW50KGlucHV0LCB1c2FnZS0+dHlwZSwgUkVMX0hXSEVFTCwgdmFsdWUpOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC9oaWQuaCBiL2RyaXZlcnMvdXNiL2lucHV0L2hpZC5oCmluZGV4IDljNjI4MzcuLjc3OGU1NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2lucHV0L2hpZC5oCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L2hpZC5oCkBAIC00MSw2ICs0MSwxNCBAQAogI2RlZmluZSBVU0JfSU5URVJGQUNFX0NMQVNTX0hJRAkJMwogCiAvKgorICogVVNCIEhJRCBpbnRlcmZhY2Ugc3ViY2xhc3MgYW5kIHByb3RvY29sIGNvZGVzCisgKi8KKworI2RlZmluZSBVU0JfSU5URVJGQUNFX1NVQkNMQVNTX0JPT1QJMQorI2RlZmluZSBVU0JfSU5URVJGQUNFX1BST1RPQ09MX0tFWUJPQVJECTEKKyNkZWZpbmUgVVNCX0lOVEVSRkFDRV9QUk9UT0NPTF9NT1VTRQkyCisKKy8qCiAgKiBISUQgY2xhc3MgcmVxdWVzdHMKICAqLwogCkBAIC0yNDcsMTAgKzI1NSwxMSBAQAogI2RlZmluZSBISURfUVVJUktfMldIRUVMX01PVVNFX0hBQ0tfNwkJMHgwMDAwMDA4MAogI2RlZmluZSBISURfUVVJUktfMldIRUVMX01PVVNFX0hBQ0tfNQkJMHgwMDAwMDEwMAogI2RlZmluZSBISURfUVVJUktfMldIRUVMX01PVVNFX0hBQ0tfT04JCTB4MDAwMDAyMDAKLSNkZWZpbmUgSElEX1FVSVJLXzJXSEVFTF9QT1dFUk1PVVNFCQkweDAwMDAwNDAwCisjZGVmaW5lIEhJRF9RVUlSS19NSUdIVFlNT1VTRQkJCTB4MDAwMDA0MDAKICNkZWZpbmUgSElEX1FVSVJLX0NZTU9USU9OCQkJMHgwMDAwMDgwMAogI2RlZmluZSBISURfUVVJUktfUE9XRVJCT09LX0hBU19GTgkJMHgwMDAwMTAwMAogI2RlZmluZSBISURfUVVJUktfUE9XRVJCT09LX0ZOX09OCQkweDAwMDAyMDAwCisjZGVmaW5lIEhJRF9RVUlSS19JTlZFUlRfSFdIRUVMCQkJMHgwMDAwNDAwMAogCiAvKgogICogVGhpcyBpcyB0aGUgZ2xvYmFsIGVudmlyb25tZW50IG9mIHRoZSBwYXJzZXIuIFRoaXMgaW5mb3JtYXRpb24gaXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L2l0bXRvdWNoLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC9pdG10b3VjaC5jCmluZGV4IDc2MThhZTUuLjVjNTcwY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2lucHV0L2l0bXRvdWNoLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvaXRtdG91Y2guYwpAQCAtNDIsMTEgKzQyLDkgQEAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIC8qIG9ubHkgYW4gOCBieXRlIGJ1ZmZlciBuZWNlc3NhcnkgZm9yIGEgc2luZ2xlIHBhY2tldCAqLwogI2RlZmluZSBJVE1fQlVGU0laRQkJCTgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L2tidGFiLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC9rYnRhYi5jCmluZGV4IGY2ZDVjZWEuLjYwNGFkZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2lucHV0L2tidGFiLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQva2J0YWIuYwpAQCAtMSwxMiArMSw5IEBACiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KLSNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CiAKIC8qCiAgKiBWZXJzaW9uIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC9rZXlzcGFuX3JlbW90ZS5jIGIvZHJpdmVycy91c2IvaW5wdXQva2V5c3Bhbl9yZW1vdGUuYwppbmRleCAzZDkxMTk3Li43MGFmOTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9rZXlzcGFuX3JlbW90ZS5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L2tleXNwYW5fcmVtb3RlLmMKQEAgLTE4LDkgKzE4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogCiAjZGVmaW5lIERSSVZFUl9WRVJTSU9OCSJ2MC4xIgogI2RlZmluZSBEUklWRVJfQVVUSE9SCSJNaWNoYWVsIERvd25leSA8ZG93bmV5QHp5bWV0YS5jb20+IgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW5wdXQvbXRvdWNodXNiLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC9tdG91Y2h1c2IuYwppbmRleCBmMDE4OTUzLi40ZmRlZTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC9tdG91Y2h1c2IuYworKysgYi9kcml2ZXJzL3VzYi9pbnB1dC9tdG91Y2h1c2IuYwpAQCAtNDIsMTEgKzQyLDkgQEAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKICNkZWZpbmUgTVRPVUNIVVNCX01JTl9YQyAgICAgICAgICAgICAgICAweDAKICNkZWZpbmUgTVRPVUNIVVNCX01BWF9SQVdfWEMgICAgICAgICAgICAweDQwMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L3Bvd2VybWF0ZS5jIGIvZHJpdmVycy91c2IvaW5wdXQvcG93ZXJtYXRlLmMKaW5kZXggZmRmMGY3OC4uYjNjMGQwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW5wdXQvcG93ZXJtYXRlLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvcG93ZXJtYXRlLmMKQEAgLTMwLDEyICszMCwxMCBAQAogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKICNkZWZpbmUgUE9XRVJNQVRFX1ZFTkRPUgkweDA3N2QJLyogR3JpZmZpbiBUZWNobm9sb2d5LCBJbmMuICovCiAjZGVmaW5lIFBPV0VSTUFURV9QUk9EVUNUX05FVwkweDA0MTAJLyogR3JpZmZpbiBQb3dlck1hdGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L3RvdWNoa2l0dXNiLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC90b3VjaGtpdHVzYi5jCmluZGV4IDY5N2M1ZTUuLmRhN2IwYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2lucHV0L3RvdWNoa2l0dXNiLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQvdG91Y2hraXR1c2IuYwpAQCAtMjcsMTEgKzI3LDkgQEAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKICNkZWZpbmUgVE9VQ0hLSVRfTUlOX1hDCQkJMHgwCiAjZGVmaW5lIFRPVUNIS0lUX01BWF9YQwkJCTB4MDdmZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW5wdXQvdXNia2JkLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC91c2JrYmQuYwppbmRleCAyZjNlZGMyLi41MDY3YTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC91c2JrYmQuYworKysgYi9kcml2ZXJzL3VzYi9pbnB1dC91c2JrYmQuYwpAQCAtMjksMTAgKzI5LDggQEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIC8qCiAgKiBWZXJzaW9uIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC91c2Jtb3VzZS5jIGIvZHJpdmVycy91c2IvaW5wdXQvdXNibW91c2UuYwppbmRleCBhZjUyNjEzLi40NDY5MzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC91c2Jtb3VzZS5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L3VzYm1vdXNlLmMKQEAgLTI4LDExICsyOCw5IEBACiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIC8qCiAgKiBWZXJzaW9uIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC91c2J0b3VjaHNjcmVlbi5jIGIvZHJpdmVycy91c2IvaW5wdXQvdXNidG91Y2hzY3JlZW4uYwppbmRleCBlOWEwN2MxLi4zYjE3NWFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC91c2J0b3VjaHNjcmVlbi5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L3VzYnRvdWNoc2NyZWVuLmMKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2lucHV0Lmg+CiAKIAogI2RlZmluZSBEUklWRVJfVkVSU0lPTgkJInYwLjMiCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC93YWNvbS5jIGIvZHJpdmVycy91c2IvaW5wdXQvd2Fjb20uYwppbmRleCBjZjg0YzYwLi4zNjk0NjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC93YWNvbS5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L3dhY29tLmMKQEAgLTY5LDEzICs2OSwxMCBAQAogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KLSNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CiAKIC8qCiAgKiBWZXJzaW9uIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9pbnB1dC94cGFkLmMgYi9kcml2ZXJzL3VzYi9pbnB1dC94cGFkLmMKaW5kZXggZTI3ODQ4OS4uY2ZkNGE0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW5wdXQveHBhZC5jCisrKyBiL2RyaXZlcnMvdXNiL2lucHV0L3hwYWQuYwpAQCAtNTYsMTMgKzU2LDExIEBACiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KLSNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxsaW51eC91c2JfaW5wdXQuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvaW5wdXQuaD4KIAogI2RlZmluZSBEUklWRVJfVkVSU0lPTiAidjAuMC41IgogI2RlZmluZSBEUklWRVJfQVVUSE9SICJNYXJrbyBGcmllZGVtYW5uIDxtZnJAYm14LWNoZW1uaXR6LmRlPiIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2lucHV0L3llYWxpbmsuYyBiL2RyaXZlcnMvdXNiL2lucHV0L3llYWxpbmsuYwppbmRleCAzN2QyZjBiLi4yNGFlZGJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9pbnB1dC95ZWFsaW5rLmMKKysrIGIvZHJpdmVycy91c2IvaW5wdXQveWVhbGluay5jCkBAIC00OCwxMyArNDgsMTEgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogCiAjaW5jbHVkZSAibWFwX3RvXzdzZWdtZW50LmgiCiAjaW5jbHVkZSAieWVhbGluay5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9LY29uZmlnIGIvZHJpdmVycy91c2IvbWlzYy9LY29uZmlnCmluZGV4IDhiYTZhNzAuLmRhYTQ4NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvS2NvbmZpZworKysgYi9kcml2ZXJzL3VzYi9taXNjL0tjb25maWcKQEAgLTg4LDYgKzg4LDIwIEBACiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2JsZWQuCiAKK2NvbmZpZyBVU0JfQ1k3QzYzCisJdHJpc3RhdGUgIkN5cHJlc3MgQ1k3QzYzeHh4IFVTQiBkcml2ZXIgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFVTQgorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gY29ubmVjdCBhIEN5cHJlc3MgQ1k3QzYzeHh4CisJICBtaWNybyBjb250cm9sbGVyIHRvIHlvdXIgY29tcHV0ZXIncyBVU0IgcG9ydC4gVGhpcyBkcml2ZXIKKwkgIHN1cHBvcnRzIHRoZSBwcmUtcHJvZ3JhbW1lZCBkZXZpY2VzIChpbmNsLiBmaXJtd2FyZSkgYnkKKwkgIEFLIE1vZHVsLUJ1cyBDb21wdXRlciBHbWJILgorCisJICBQbGVhc2Ugc2VlOiBodHRwOi8vd3d3LmFrLW1vZHVsLWJ1cy5kZS9zdGF0L21pa3JvY29udHJvbGxlci5odG1sCisKKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGN5N2M2My4KKwogY29uZmlnIFVTQl9DWVRIRVJNCiAJdHJpc3RhdGUgIkN5cHJlc3MgVVNCIHRoZXJtb21ldGVyIGRyaXZlciBzdXBwb3J0IgogCWRlcGVuZHMgb24gVVNCCkBAIC0xMzcsNiArMTUxLDE1IEBACiAKIAkgIFNlZSBhbHNvIDxodHRwOi8vd3d3LmZzLnR1bS5kZS9+ZWNodGxlci9pZG1vdXNlLz4uCiAKK2NvbmZpZyBVU0JfQVBQTEVESVNQTEFZCisJdHJpc3RhdGUgIkFwcGxlIENpbmVtYSBEaXNwbGF5IHN1cHBvcnQiCisJZGVwZW5kcyBvbiBVU0IKKwlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQT1JUCisJc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGNvbnRyb2wgdGhlIGJhY2tsaWdodCBvZiBBcHBsZSBDaW5lbWEKKwkgIERpc3BsYXlzIG92ZXIgVVNCLiBUaGlzIGRyaXZlciBwcm92aWRlcyBhIHN5c2ZzIGludGVyZmFjZS4KKwogc291cmNlICJkcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9LY29uZmlnIgogCiBjb25maWcgVVNCX0xECmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlIGIvZHJpdmVycy91c2IvbWlzYy9NYWtlZmlsZQppbmRleCA2YzY5M2JjLi5mMjVhOTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvTWFrZWZpbGUKQEAgLTQsNiArNCw3IEBACiAjCiAKIG9iai0kKENPTkZJR19VU0JfQVVFUlNXQUxEKQkrPSBhdWVyc3dhbGQubworb2JqLSQoQ09ORklHX1VTQl9DWTdDNjMpCSs9IGN5N2M2My5vCiBvYmotJChDT05GSUdfVVNCX0NZVEhFUk0pCSs9IGN5dGhlcm0ubwogb2JqLSQoQ09ORklHX1VTQl9FTUkyNikJCSs9IGVtaTI2Lm8KIG9iai0kKENPTkZJR19VU0JfRU1JNjIpCQkrPSBlbWk2Mi5vCkBAIC0xNyw2ICsxOCw3IEBACiBvYmotJChDT05GSUdfVVNCX1JJTzUwMCkJKz0gcmlvNTAwLm8KIG9iai0kKENPTkZJR19VU0JfVEVTVCkJCSs9IHVzYnRlc3Qubwogb2JqLSQoQ09ORklHX1VTQl9VU1M3MjApCSs9IHVzczcyMC5vCitvYmotJChDT05GSUdfVVNCX0FQUExFRElTUExBWSkJKz0gYXBwbGVkaXNwbGF5Lm8KIAogb2JqLSQoQ09ORklHX1VTQl9TSVNVU0JWR0EpCSs9IHNpc3VzYnZnYS8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9hcHBsZWRpc3BsYXkuYyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGVkaXNwbGF5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkZTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvYXBwbGVkaXNwbGF5LmMKQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBBcHBsZSBDaW5lbWEgRGlzcGxheSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgIE1pY2hhZWwgSGFuc2VsbWFubiAobGludXgta2VybmVsQGhhbnNtaS5jaCkKKyAqCisgKiBUaGFua3MgdG8gQ2Fza2V5IEwuIERpY2tzb24gZm9yIGhpcyB3b3JrIHdpdGggYWNkY3RsLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKyNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CisKKyNkZWZpbmUgQVBQTEVfVkVORE9SX0lECQkweDA1QUMKKworI2RlZmluZSBVU0JfUkVRX0dFVF9SRVBPUlQJMHgwMQorI2RlZmluZSBVU0JfUkVRX1NFVF9SRVBPUlQJMHgwOQorCisjZGVmaW5lIEFDRF9VU0JfVElNRU9VVAkJMjUwCisKKyNkZWZpbmUgQUNEX1VTQl9FRElECQkweDAzMDIKKyNkZWZpbmUgQUNEX1VTQl9CUklHSFRORVNTCTB4MDMxMAorCisjZGVmaW5lIEFDRF9CVE5fTk9ORQkJMAorI2RlZmluZSBBQ0RfQlROX0JSSUdIVF9VUAkzCisjZGVmaW5lIEFDRF9CVE5fQlJJR0hUX0RPV04JNAorCisjZGVmaW5lIEFDRF9VUkJfQlVGRkVSX0xFTgkyCisjZGVmaW5lIEFDRF9NU0dfQlVGRkVSX0xFTgkyCisKKyNkZWZpbmUgQVBQTEVESVNQTEFZX0RFVklDRShwcm9kKQkJCQlcCisJLm1hdGNoX2ZsYWdzID0gVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0UgfAkJXAorCQkgICAgICAgVVNCX0RFVklDRV9JRF9NQVRDSF9JTlRfQ0xBU1MgfAkJXAorCQkgICAgICAgVVNCX0RFVklDRV9JRF9NQVRDSF9JTlRfUFJPVE9DT0wsCVwKKwkuaWRWZW5kb3IgPSBBUFBMRV9WRU5ET1JfSUQsCQkJCVwKKwkuaWRQcm9kdWN0ID0gKHByb2QpLAkJCQkJXAorCS5iSW50ZXJmYWNlQ2xhc3MgPSBVU0JfQ0xBU1NfSElELAkJCVwKKwkuYkludGVyZmFjZVByb3RvY29sID0gMHgwMAorCisvKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovCitzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXBwbGVkaXNwbGF5X3RhYmxlIFtdID0geworCXsgQVBQTEVESVNQTEFZX0RFVklDRSgweDkyMTgpIH0sCisJeyBBUFBMRURJU1BMQVlfREVWSUNFKDB4OTIxOSkgfSwKKwl7IEFQUExFRElTUExBWV9ERVZJQ0UoMHg5MjFkKSB9LAorCisJLyogVGVybWluYXRpbmcgZW50cnkgKi8KKwl7IH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXBwbGVkaXNwbGF5X3RhYmxlKTsKKworLyogU3RydWN0dXJlIHRvIGhvbGQgYWxsIG9mIG91ciBkZXZpY2Ugc3BlY2lmaWMgc3R1ZmYgKi8KK3N0cnVjdCBhcHBsZWRpc3BsYXkgeworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OwkvKiB1c2IgZGV2aWNlICovCisJc3RydWN0IHVyYiAqdXJiOwkJLyogdXNiIHJlcXVlc3QgYmxvY2sgKi8KKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQ7CS8qIGJhY2tsaWdodCBkZXZpY2UgKi8KKwljaGFyICp1cmJkYXRhOwkJCS8qIGludGVycnVwdCBVUkIgZGF0YSBidWZmZXIgKi8KKwljaGFyICptc2dkYXRhOwkJCS8qIGNvbnRyb2wgbWVzc2FnZSBkYXRhIGJ1ZmZlciAqLworCisJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CisJaW50IGJ1dHRvbl9wcmVzc2VkOworCXNwaW5sb2NrX3QgbG9jazsKK307CisKK3N0YXRpYyBhdG9taWNfdCBjb3VudF9kaXNwbGF5cyA9IEFUT01JQ19JTklUKDApOworc3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKKworc3RhdGljIHZvaWQgYXBwbGVkaXNwbGF5X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IGFwcGxlZGlzcGxheSAqcGRhdGEgPSB1cmItPmNvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcmV0dmFsOworCisJc3dpdGNoICh1cmItPnN0YXR1cykgeworCWNhc2UgMDoKKwkJLyogc3VjY2VzcyAqLworCQlicmVhazsKKwljYXNlIC1FT1ZFUkZMT1c6CisJCXByaW50ayhLRVJOX0VSUiAiYXBwbGV0b3VjaDogT1ZFUkZMT1cgd2l0aCBkYXRhICIKKwkJCSJsZW5ndGggJWQsIGFjdHVhbCBsZW5ndGggaXMgJWRcbiIsCisJCQlBQ0RfVVJCX0JVRkZFUl9MRU4sIHBkYXRhLT51cmItPmFjdHVhbF9sZW5ndGgpOworCWNhc2UgLUVDT05OUkVTRVQ6CisJY2FzZSAtRU5PRU5UOgorCWNhc2UgLUVTSFVURE9XTjoKKwkJLyogVGhpcyB1cmIgaXMgdGVybWluYXRlZCwgY2xlYW4gdXAgKi8KKwkJZGJnKCIlcyAtIHVyYiBzaHV0dGluZyBkb3duIHdpdGggc3RhdHVzOiAlZCIsCisJCQlfX0ZVTkNUSU9OX18sIHVyYi0+c3RhdHVzKTsKKwkJcmV0dXJuOworCWRlZmF1bHQ6CisJCWRiZygiJXMgLSBub256ZXJvIHVyYiBzdGF0dXMgcmVjZWl2ZWQ6ICVkIiwKKwkJCV9fRlVOQ1RJT05fXywgdXJiLT5zdGF0dXMpOworCQlnb3RvIGV4aXQ7CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBkYXRhLT5sb2NrLCBmbGFncyk7CisKKwlzd2l0Y2gocGRhdGEtPnVyYmRhdGFbMV0pIHsKKwljYXNlIEFDRF9CVE5fQlJJR0hUX1VQOgorCWNhc2UgQUNEX0JUTl9CUklHSFRfRE9XTjoKKwkJcGRhdGEtPmJ1dHRvbl9wcmVzc2VkID0gMTsKKwkJcXVldWVfd29yayh3cSwgJnBkYXRhLT53b3JrKTsKKwkJYnJlYWs7CisJY2FzZSBBQ0RfQlROX05PTkU6CisJZGVmYXVsdDoKKwkJcGRhdGEtPmJ1dHRvbl9wcmVzc2VkID0gMDsKKwkJYnJlYWs7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGRhdGEtPmxvY2ssIGZsYWdzKTsKKworZXhpdDoKKwlyZXR2YWwgPSB1c2Jfc3VibWl0X3VyYihwZGF0YS0+dXJiLCBHRlBfQVRPTUlDKTsKKwlpZiAocmV0dmFsKSB7CisJCWVycigiJXMgLSB1c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWQiLAorCQkJX19GVU5DVElPTl9fLCByZXR2YWwpOworCX0KK30KKworc3RhdGljIGludCBhcHBsZWRpc3BsYXlfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCit7CisJc3RydWN0IGFwcGxlZGlzcGxheSAqcGRhdGEgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNzX2Rldik7CisJaW50IHJldHZhbDsKKworCXBkYXRhLT5tc2dkYXRhWzBdID0gMHgxMDsKKwlwZGF0YS0+bXNnZGF0YVsxXSA9IGJkLT5wcm9wcy0+YnJpZ2h0bmVzczsKKworCXJldHZhbCA9IHVzYl9jb250cm9sX21zZygKKwkJcGRhdGEtPnVkZXYsCisJCXVzYl9zbmRjdHJscGlwZShwZGF0YS0+dWRldiwgMCksCisJCVVTQl9SRVFfU0VUX1JFUE9SVCwKKwkJVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9DTEFTUyB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCUFDRF9VU0JfQlJJR0hUTkVTUywKKwkJMCwKKwkJcGRhdGEtPm1zZ2RhdGEsIDIsCisJCUFDRF9VU0JfVElNRU9VVCk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IGFwcGxlZGlzcGxheV9ibF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCit7CisJc3RydWN0IGFwcGxlZGlzcGxheSAqcGRhdGEgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNzX2Rldik7CisJaW50IHJldHZhbDsKKworCXJldHZhbCA9IHVzYl9jb250cm9sX21zZygKKwkJcGRhdGEtPnVkZXYsCisJCXVzYl9yY3ZjdHJscGlwZShwZGF0YS0+dWRldiwgMCksCisJCVVTQl9SRVFfR0VUX1JFUE9SVCwKKwkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX0NMQVNTIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwKKwkJQUNEX1VTQl9CUklHSFRORVNTLAorCQkwLAorCQlwZGF0YS0+bXNnZGF0YSwgMiwKKwkJQUNEX1VTQl9USU1FT1VUKTsKKworCWlmIChyZXR2YWwgPCAwKQorCQlyZXR1cm4gcmV0dmFsOworCWVsc2UKKwkJcmV0dXJuIHBkYXRhLT5tc2dkYXRhWzFdOworfQorCitzdGF0aWMgc3RydWN0IGJhY2tsaWdodF9wcm9wZXJ0aWVzIGFwcGxlZGlzcGxheV9ibF9kYXRhID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkuZ2V0X2JyaWdodG5lc3MJPSBhcHBsZWRpc3BsYXlfYmxfZ2V0X2JyaWdodG5lc3MsCisJLnVwZGF0ZV9zdGF0dXMJPSBhcHBsZWRpc3BsYXlfYmxfdXBkYXRlX3N0YXR1cywKKwkubWF4X2JyaWdodG5lc3MJPSAweEZGCit9OworCitzdGF0aWMgdm9pZCBhcHBsZWRpc3BsYXlfd29yayh2b2lkICpwcml2YXRlKQoreworCXN0cnVjdCBhcHBsZWRpc3BsYXkgKnBkYXRhID0gcHJpdmF0ZTsKKwlpbnQgcmV0dmFsOworCisJdXAoJnBkYXRhLT5iZC0+c2VtKTsKKwlyZXR2YWwgPSBhcHBsZWRpc3BsYXlfYmxfZ2V0X2JyaWdodG5lc3MocGRhdGEtPmJkKTsKKwlpZiAocmV0dmFsID49IDApCisJCXBkYXRhLT5iZC0+cHJvcHMtPmJyaWdodG5lc3MgPSByZXR2YWw7CisJZG93bigmcGRhdGEtPmJkLT5zZW0pOworCisJLyogUG9sbCBhZ2FpbiBpbiBhYm91dCAxMjVtcyBpZiB0aGVyZSdzIHN0aWxsIGEgYnV0dG9uIHByZXNzZWQgKi8KKwlpZiAocGRhdGEtPmJ1dHRvbl9wcmVzc2VkKQorCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnBkYXRhLT53b3JrLCBIWiAvIDgpOworfQorCitzdGF0aWMgaW50IGFwcGxlZGlzcGxheV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UsCisJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBhcHBsZWRpc3BsYXkgKnBkYXRhOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpZmFjZSk7CisJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYzsKKwlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50OworCWludCBpbnRfaW5fZW5kcG9pbnRBZGRyID0gMDsKKwlpbnQgaSwgcmV0dmFsID0gLUVOT01FTSwgYnJpZ2h0bmVzczsKKwljaGFyIGJsX25hbWVbMjBdOworCisJLyogc2V0IHVwIHRoZSBlbmRwb2ludCBpbmZvcm1hdGlvbiAqLworCS8qIHVzZSBvbmx5IHRoZSBmaXJzdCBpbnRlcnJ1cHQtaW4gZW5kcG9pbnQgKi8KKwlpZmFjZV9kZXNjID0gaWZhY2UtPmN1cl9hbHRzZXR0aW5nOworCWZvciAoaSA9IDA7IGkgPCBpZmFjZV9kZXNjLT5kZXNjLmJOdW1FbmRwb2ludHM7IGkrKykgeworCQllbmRwb2ludCA9ICZpZmFjZV9kZXNjLT5lbmRwb2ludFtpXS5kZXNjOworCQlpZiAoIWludF9pbl9lbmRwb2ludEFkZHIgJiYKKwkJICAgIChlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzcyAmIFVTQl9ESVJfSU4pICYmCisJCSAgICAoKGVuZHBvaW50LT5ibUF0dHJpYnV0ZXMgJiBVU0JfRU5EUE9JTlRfWEZFUlRZUEVfTUFTSykgPT0KKwkJICAgICBVU0JfRU5EUE9JTlRfWEZFUl9JTlQpKSB7CisJCQkvKiB3ZSBmb3VuZCBhbiBpbnRlcnJ1cHQgaW4gZW5kcG9pbnQgKi8KKwkJCWludF9pbl9lbmRwb2ludEFkZHIgPSBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzczsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmICghaW50X2luX2VuZHBvaW50QWRkcikgeworCQllcnIoIkNvdWxkIG5vdCBmaW5kIGludC1pbiBlbmRwb2ludCIpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91ciBkZXZpY2Ugc3RhdGUgYW5kIGluaXRpYWxpemUgaXQgKi8KKwlwZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhcHBsZWRpc3BsYXkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXBkYXRhKSB7CisJCXJldHZhbCA9IC1FTk9NRU07CisJCWVycigiT3V0IG9mIG1lbW9yeSIpOworCQlnb3RvIGVycm9yOworCX0KKworCXBkYXRhLT51ZGV2ID0gdWRldjsKKworCXNwaW5fbG9ja19pbml0KCZwZGF0YS0+bG9jayk7CisJSU5JVF9XT1JLKCZwZGF0YS0+d29yaywgYXBwbGVkaXNwbGF5X3dvcmssIHBkYXRhKTsKKworCS8qIEFsbG9jYXRlIGJ1ZmZlciBmb3IgY29udHJvbCBtZXNzYWdlcyAqLworCXBkYXRhLT5tc2dkYXRhID0ga21hbGxvYyhBQ0RfTVNHX0JVRkZFUl9MRU4sIEdGUF9LRVJORUwpOworCWlmICghcGRhdGEtPm1zZ2RhdGEpIHsKKwkJcmV0dmFsID0gLUVOT01FTTsKKwkJZXJyKCJhcHBsZWRpc3BsYXk6IEFsbG9jYXRpbmcgYnVmZmVyIGZvciBjb250cm9sIG1lc3NhZ2VzICIKKwkJCSJmYWlsZWQiKTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwkvKiBBbGxvY2F0ZSBpbnRlcnJ1cHQgVVJCICovCisJcGRhdGEtPnVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwZGF0YS0+dXJiKSB7CisJCXJldHZhbCA9IC1FTk9NRU07CisJCWVycigiYXBwbGVkaXNwbGF5OiBBbGxvY2F0aW5nIFVSQiBmYWlsZWQiKTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwkvKiBBbGxvY2F0ZSBidWZmZXIgZm9yIGludGVycnVwdCBkYXRhICovCisJcGRhdGEtPnVyYmRhdGEgPSB1c2JfYnVmZmVyX2FsbG9jKHBkYXRhLT51ZGV2LCBBQ0RfVVJCX0JVRkZFUl9MRU4sCisJCUdGUF9LRVJORUwsICZwZGF0YS0+dXJiLT50cmFuc2Zlcl9kbWEpOworCWlmICghcGRhdGEtPnVyYmRhdGEpIHsKKwkJcmV0dmFsID0gLUVOT01FTTsKKwkJZXJyKCJhcHBsZWRpc3BsYXk6IEFsbG9jYXRpbmcgVVJCIGJ1ZmZlciBmYWlsZWQiKTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwkvKiBDb25maWd1cmUgaW50ZXJydXB0IFVSQiAqLworCXVzYl9maWxsX2ludF91cmIocGRhdGEtPnVyYiwgdWRldiwKKwkJdXNiX3JjdmludHBpcGUodWRldiwgaW50X2luX2VuZHBvaW50QWRkciksCisJCXBkYXRhLT51cmJkYXRhLCBBQ0RfVVJCX0JVRkZFUl9MRU4sIGFwcGxlZGlzcGxheV9jb21wbGV0ZSwKKwkJcGRhdGEsIDEpOworCWlmICh1c2Jfc3VibWl0X3VyYihwZGF0YS0+dXJiLCBHRlBfS0VSTkVMKSkgeworCQlyZXR2YWwgPSAtRUlPOworCQllcnIoImFwcGxlZGlzcGxheTogU3VibWl0dGluZyBVUkIgZmFpbGVkIik7CisJCWdvdG8gZXJyb3I7CisJfQorCisJLyogUmVnaXN0ZXIgYmFja2xpZ2h0IGRldmljZSAqLworCXNucHJpbnRmKGJsX25hbWUsIHNpemVvZihibF9uYW1lKSwgImFwcGxlZGlzcGxheSVkIiwKKwkJYXRvbWljX2luY19yZXR1cm4oJmNvdW50X2Rpc3BsYXlzKSAtIDEpOworCXBkYXRhLT5iZCA9IGJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoYmxfbmFtZSwgcGRhdGEsCisJCQkJCQkmYXBwbGVkaXNwbGF5X2JsX2RhdGEpOworCWlmIChJU19FUlIocGRhdGEtPmJkKSkgeworCQllcnIoImFwcGxlZGlzcGxheTogQmFja2xpZ2h0IHJlZ2lzdHJhdGlvbiBmYWlsZWQiKTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwkvKiBUcnkgdG8gZ2V0IGJyaWdodG5lc3MgKi8KKwl1cCgmcGRhdGEtPmJkLT5zZW0pOworCWJyaWdodG5lc3MgPSBhcHBsZWRpc3BsYXlfYmxfZ2V0X2JyaWdodG5lc3MocGRhdGEtPmJkKTsKKwlkb3duKCZwZGF0YS0+YmQtPnNlbSk7CisKKwlpZiAoYnJpZ2h0bmVzcyA8IDApIHsKKwkJcmV0dmFsID0gYnJpZ2h0bmVzczsKKwkJZXJyKCJhcHBsZWRpc3BsYXk6IEVycm9yIHdoaWxlIGdldHRpbmcgaW5pdGlhbCBicmlnaHRuZXNzOiAlZCIsIHJldHZhbCk7CisJCWdvdG8gZXJyb3I7CisJfQorCisJLyogU2V0IGJyaWdodG5lc3MgaW4gYmFja2xpZ2h0IGRldmljZSAqLworCXVwKCZwZGF0YS0+YmQtPnNlbSk7CisJcGRhdGEtPmJkLT5wcm9wcy0+YnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7CisJZG93bigmcGRhdGEtPmJkLT5zZW0pOworCisJLyogc2F2ZSBvdXIgZGF0YSBwb2ludGVyIGluIHRoZSBpbnRlcmZhY2UgZGV2aWNlICovCisJdXNiX3NldF9pbnRmZGF0YShpZmFjZSwgcGRhdGEpOworCisJcHJpbnRrKEtFUk5fSU5GTyAiYXBwbGVkaXNwbGF5OiBBcHBsZSBDaW5lbWEgRGlzcGxheSBjb25uZWN0ZWRcbiIpOworCisJcmV0dXJuIDA7CisKK2Vycm9yOgorCWlmIChwZGF0YSkgeworCQlpZiAocGRhdGEtPnVyYikgeworCQkJdXNiX2tpbGxfdXJiKHBkYXRhLT51cmIpOworCQkJaWYgKHBkYXRhLT51cmJkYXRhKQorCQkJCXVzYl9idWZmZXJfZnJlZShwZGF0YS0+dWRldiwgQUNEX1VSQl9CVUZGRVJfTEVOLAorCQkJCQlwZGF0YS0+dXJiZGF0YSwgcGRhdGEtPnVyYi0+dHJhbnNmZXJfZG1hKTsKKwkJCXVzYl9mcmVlX3VyYihwZGF0YS0+dXJiKTsKKwkJfQorCQlpZiAocGRhdGEtPmJkKQorCQkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHBkYXRhLT5iZCk7CisJCWtmcmVlKHBkYXRhLT5tc2dkYXRhKTsKKwl9CisJdXNiX3NldF9pbnRmZGF0YShpZmFjZSwgTlVMTCk7CisJa2ZyZWUocGRhdGEpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGxlZGlzcGxheV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSkKK3sKKwlzdHJ1Y3QgYXBwbGVkaXNwbGF5ICpwZGF0YSA9IHVzYl9nZXRfaW50ZmRhdGEoaWZhY2UpOworCisJaWYgKHBkYXRhKSB7CisJCXVzYl9raWxsX3VyYihwZGF0YS0+dXJiKTsKKwkJY2FuY2VsX2RlbGF5ZWRfd29yaygmcGRhdGEtPndvcmspOworCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIocGRhdGEtPmJkKTsKKwkJdXNiX2J1ZmZlcl9mcmVlKHBkYXRhLT51ZGV2LCBBQ0RfVVJCX0JVRkZFUl9MRU4sCisJCQlwZGF0YS0+dXJiZGF0YSwgcGRhdGEtPnVyYi0+dHJhbnNmZXJfZG1hKTsKKwkJdXNiX2ZyZWVfdXJiKHBkYXRhLT51cmIpOworCQlrZnJlZShwZGF0YS0+bXNnZGF0YSk7CisJCWtmcmVlKHBkYXRhKTsKKwl9CisKKwlwcmludGsoS0VSTl9JTkZPICJhcHBsZWRpc3BsYXk6IEFwcGxlIENpbmVtYSBEaXNwbGF5IGRpc2Nvbm5lY3RlZFxuIik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhcHBsZWRpc3BsYXlfZHJpdmVyID0geworCS5uYW1lCQk9ICJhcHBsZWRpc3BsYXkiLAorCS5wcm9iZQkJPSBhcHBsZWRpc3BsYXlfcHJvYmUsCisJLmRpc2Nvbm5lY3QJPSBhcHBsZWRpc3BsYXlfZGlzY29ubmVjdCwKKwkuaWRfdGFibGUJPSBhcHBsZWRpc3BsYXlfdGFibGUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBhcHBsZWRpc3BsYXlfaW5pdCh2b2lkKQoreworCXdxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoImFwcGxlZGlzcGxheSIpOworCWlmICghd3EpIHsKKwkJZXJyKCJDb3VsZCBub3QgY3JlYXRlIHdvcmsgcXVldWVcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyZXR1cm4gdXNiX3JlZ2lzdGVyKCZhcHBsZWRpc3BsYXlfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGFwcGxlZGlzcGxheV9leGl0KHZvaWQpCit7CisJZmx1c2hfd29ya3F1ZXVlKHdxKTsKKwlkZXN0cm95X3dvcmtxdWV1ZSh3cSk7CisJdXNiX2RlcmVnaXN0ZXIoJmFwcGxlZGlzcGxheV9kcml2ZXIpOworfQorCitNT0RVTEVfQVVUSE9SKCJNaWNoYWVsIEhhbnNlbG1hbm4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiQXBwbGUgQ2luZW1hIERpc3BsYXkgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK21vZHVsZV9pbml0KGFwcGxlZGlzcGxheV9pbml0KTsKK21vZHVsZV9leGl0KGFwcGxlZGlzcGxheV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvY3k3YzYzLmMgYi9kcml2ZXJzL3VzYi9taXNjL2N5N2M2My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMWMxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9taXNjL2N5N2M2My5jCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorKiBjeTdjNjMuYworKgorKiBDb3B5cmlnaHQgKGMpIDIwMDYgT2xpdmVyIEJvY2sgKGJvY2tAZmgtd29sZmVuYnVldHRlbC5kZSkKKyoKKyoJVGhpcyBkcml2ZXIgaXMgYmFzZWQgb24gdGhlIEN5cHJlc3MgVGhlcm1vbWV0ZXIgVVNCIERyaXZlciBieQorKglNYXJjdXMgTWF1bCBhbmQgdGhlIDIuMCB2ZXJzaW9uIG9mIEdyZWcgS3JvYWgtSGFydG1hbidzCisqCVVTQiBTa2VsZXRvbiBkcml2ZXIuCisqCisqCUlzIGlzIGEgZ2VuZXJpYyBkcml2ZXIgZm9yIHRoZSBDeXByZXNzIENZN0M2MzAwMCBmYW1pbHkuCisqCUZvciB0aGUgdGltZSBiZWluZyBpdCBlbmFibGVzIHlvdSB0byB0b2dnbGUgdGhlIHNpbmdsZSBJL08gcG9ydHMKKyoJb2YgdGhlIGRldmljZS4KKyoKKyoJU3VwcG9ydGVkIHZlbmRvcnM6CUFLIE1vZHVsLUJ1cyBDb21wdXRlciBHbWJICisqCVN1cHBvcnRlZCBkZXZpY2VzOglDWTdDNjMwMDFBLVBDICh0byBiZSBjb250aW51ZWQuLi4pCisqCVN1cHBvcnRlZCBmdW5jdGlvbnM6CVJlYWQvV3JpdGUgUG9ydHMgKHRvIGJlIGNvbnRpbnVlZC4uLikKKyoKKyoJQ2hpcHNldHMgZmFtaWxpZXM6CUNZN0M2MzAwMCwgQ1k3QzYzMDAxLCBDWTdDNjMxMDAsIENZN0M2MzEwMQorKgorKgorKglUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisqCW1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisqCXB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB2ZXJzaW9uIDIuCisqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorCisjZGVmaW5lIERSSVZFUl9BVVRIT1IJCSJPbGl2ZXIgQm9jayAoYm9ja0BmaC13b2xmZW5idWV0dGVsLmRlKSIKKyNkZWZpbmUgRFJJVkVSX0RFU0MJCSJDeXByZXNzIENZN0M2M3h4eCBVU0IgZHJpdmVyIgorCisjZGVmaW5lIENZN0M2M19WRU5ET1JfSUQJMHhhMmMKKyNkZWZpbmUgQ1k3QzYzX1BST0RVQ1RfSUQJMHg4CisKKyNkZWZpbmUgQ1k3QzYzX1JFQURfUE9SVAkweDQKKyNkZWZpbmUgQ1k3QzYzX1dSSVRFX1BPUlQJMHg1CisjZGVmaW5lIENZN0M2M19SRUFEX1JBTQkJMHgyCisjZGVmaW5lIENZN0M2M19XUklURV9SQU0JMHgzCisjZGVmaW5lIENZN0M2M19SRUFEX1JPTQkJMHgxCisKKyNkZWZpbmUgQ1k3QzYzX1JFQURfUE9SVF9JRDAJMAorI2RlZmluZSBDWTdDNjNfV1JJVEVfUE9SVF9JRDAJMAorI2RlZmluZSBDWTdDNjNfUkVBRF9QT1JUX0lEMQkweDIKKyNkZWZpbmUgQ1k3QzYzX1dSSVRFX1BPUlRfSUQxCTEKKworI2RlZmluZSBDWTdDNjNfTUFYX1JFUVNJWkUJOAorCisKKy8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi8KK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBjeTdjNjNfdGFibGUgW10gPSB7CisJeyBVU0JfREVWSUNFKENZN0M2M19WRU5ET1JfSUQsIENZN0M2M19QUk9EVUNUX0lEKSB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBjeTdjNjNfdGFibGUpOworCisvKiBzdHJ1Y3R1cmUgdG8gaG9sZCBhbGwgb2Ygb3VyIGRldmljZSBzcGVjaWZpYyBzdHVmZiAqLworc3RydWN0IGN5N2M2MyB7CisJc3RydWN0IHVzYl9kZXZpY2UgKgl1ZGV2OworCWNoYXIgCQkJcG9ydDA7CisJY2hhcgkJCXBvcnQxOworfTsKKworLyogdXNlZCB0byBzZW5kIHVzYiBjb250cm9sIG1lc3NhZ2VzIHRvIGRldmljZSAqLworaW50IHZlbmRvcl9jb21tYW5kKHN0cnVjdCBjeTdjNjMgKmRldiwgdW5zaWduZWQgY2hhciByZXF1ZXN0LAorCQkJIHVuc2lnbmVkIGNoYXIgYWRkcmVzcywgdW5zaWduZWQgY2hhciBkYXRhKSB7CisKKwlpbnQgcmV0dmFsID0gMDsKKwl1bnNpZ25lZCBpbnQgcGlwZTsKKwl1bnNpZ25lZCBjaGFyICppb2J1ZjsKKworCS8qIGFsbG9jYXRlIHNvbWUgbWVtb3J5IGZvciB0aGUgaS9vIGJ1ZmZlciovCisJaW9idWYgPSBremFsbG9jKENZN0M2M19NQVhfUkVRU0laRSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFpb2J1ZikgeworCQlkZXZfZXJyKCZkZXYtPnVkZXYtPmRldiwgIk91dCBvZiBtZW1vcnkhXG4iKTsKKwkJcmV0dmFsID0gLUVOT01FTTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwlkZXZfZGJnKCZkZXYtPnVkZXYtPmRldiwgIlNlbmRpbmcgdXNiX2NvbnRyb2xfbXNnIChkYXRhOiAlZClcbiIsIGRhdGEpOworCisJLyogcHJlcGFyZSB1c2IgY29udHJvbCBtZXNzYWdlIGFuZCBzZW5kIGl0IHVwc3RyZWFtICovCisJcGlwZSA9IHVzYl9yY3ZjdHJscGlwZShkZXYtPnVkZXYsIDApOworCXJldHZhbCA9IHVzYl9jb250cm9sX21zZyhkZXYtPnVkZXYsIHBpcGUsIHJlcXVlc3QsCisJCQkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9PVEhFUiwKKwkJCQlhZGRyZXNzLCBkYXRhLCBpb2J1ZiwgQ1k3QzYzX01BWF9SRVFTSVpFLAorCQkJCVVTQl9DVFJMX0dFVF9USU1FT1VUKTsKKworCS8qIHN0b3JlIHJldHVybmVkIGRhdGEgKG1vcmUgUkVBRHMgdG8gYmUgYWRkZWQhKSAqLworCXN3aXRjaCAocmVxdWVzdCkgeworCQljYXNlIENZN0M2M19SRUFEX1BPUlQ6CisJCQlpZiAoYWRkcmVzcyA9PSBDWTdDNjNfUkVBRF9QT1JUX0lEMCkgeworCQkJCWRldi0+cG9ydDAgPSBpb2J1ZlsxXTsKKwkJCQlkZXZfZGJnKCZkZXYtPnVkZXYtPmRldiwKKwkJCQkJIlJFQURfUE9SVDAgcmV0dXJuZWQ6ICVkXG4iLGRldi0+cG9ydDApOworCQkJfQorCQkJZWxzZSBpZiAoYWRkcmVzcyA9PSBDWTdDNjNfUkVBRF9QT1JUX0lEMSkgeworCQkJCWRldi0+cG9ydDEgPSBpb2J1ZlsxXTsKKwkJCQlkZXZfZGJnKCZkZXYtPnVkZXYtPmRldiwKKwkJCQkJIlJFQURfUE9SVDEgcmV0dXJuZWQ6ICVkXG4iLGRldi0+cG9ydDEpOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJa2ZyZWUoaW9idWYpOworZXJyb3I6CisJcmV0dXJuIHJldHZhbDsKK30KKworI2RlZmluZSBnZXRfc2V0X3BvcnQobnVtLHJlYWRfaWQsd3JpdGVfaWQpIFwKK3N0YXRpYyBzc2l6ZV90IHNldF9wb3J0IyNudW0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwJXAorCQkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkgewlcCisJCQkJCQkJCQkJXAorCWludCB2YWx1ZTsJCQkJCQkJCVwKKwlpbnQgcmVzdWx0ID0gMDsJCQkJCQkJCVwKKwkJCQkJCQkJCQlcCisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CQkJXAorCXN0cnVjdCBjeTdjNjMgKmN5cCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CQkJCVwKKwkJCQkJCQkJCQlcCisJZGV2X2RiZygmY3lwLT51ZGV2LT5kZXYsICJXUklURV9QT1JUJWQgY2FsbGVkXG4iLCBudW0pOwkJCVwKKwkJCQkJCQkJCQlcCisJLyogdmFsaWRhdGUgaW5wdXQgZGF0YSAqLwkJCQkJCVwKKwlpZiAoc3NjYW5mKGJ1ZiwgIiVkIiwgJnZhbHVlKSA8IDEpIHsJCQkJCVwKKwkJcmVzdWx0ID0gLUVJTlZBTDsJCQkJCQlcCisJCWdvdG8gZXJyb3I7CQkJCQkJCVwKKwl9CQkJCQkJCQkJXAorCWlmICh2YWx1ZT4yNTUgfHwgdmFsdWU8MCkgewkJCQkJCVwKKwkJcmVzdWx0ID0gLUVJTlZBTDsJCQkJCQlcCisJCWdvdG8gZXJyb3I7CQkJCQkJCVwKKwl9CQkJCQkJCQkJXAorCQkJCQkJCQkJCVwKKwlyZXN1bHQgPSB2ZW5kb3JfY29tbWFuZChjeXAsIENZN0M2M19XUklURV9QT1JULCB3cml0ZV9pZCwJCVwKKwkJCQkJICh1bnNpZ25lZCBjaGFyKXZhbHVlKTsJCQlcCisJCQkJCQkJCQkJXAorCWRldl9kYmcoJmN5cC0+dWRldi0+ZGV2LCAiUmVzdWx0IG9mIHZlbmRvcl9jb21tYW5kOiAlZFxuXG4iLHJlc3VsdCk7CVwKK2Vycm9yOgkJCQkJCQkJCQlcCisJcmV0dXJuIHJlc3VsdCA8IDAgPyByZXN1bHQgOiBjb3VudDsJCQkJCVwKK30JCQkJCQkJCQkJXAorCQkJCQkJCQkJCVwKK3N0YXRpYyBzc2l6ZV90IGdldF9wb3J0IyNudW0oc3RydWN0IGRldmljZSAqZGV2LAkJCQlcCisJCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpIHsJXAorCQkJCQkJCQkJCVwKKwlpbnQgcmVzdWx0ID0gMDsJCQkJCQkJCVwKKwkJCQkJCQkJCQlcCisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CQkJXAorCXN0cnVjdCBjeTdjNjMgKmN5cCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CQkJCVwKKwkJCQkJCQkJCQlcCisJZGV2X2RiZygmY3lwLT51ZGV2LT5kZXYsICJSRUFEX1BPUlQlZCBjYWxsZWRcbiIsIG51bSk7CQkJXAorCQkJCQkJCQkJCVwKKwlyZXN1bHQgPSB2ZW5kb3JfY29tbWFuZChjeXAsIENZN0M2M19SRUFEX1BPUlQsIHJlYWRfaWQsIDApOwkJXAorCQkJCQkJCQkJCVwKKwlkZXZfZGJnKCZjeXAtPnVkZXYtPmRldiwgIlJlc3VsdCBvZiB2ZW5kb3JfY29tbWFuZDogJWRcblxuIiwgcmVzdWx0KTsJXAorCQkJCQkJCQkJCVwKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZCIsIGN5cC0+cG9ydCMjbnVtKTsJCQkJXAorfQkJCQkJCQkJCQlcCitzdGF0aWMgREVWSUNFX0FUVFIocG9ydCMjbnVtLCBTX0lXVUdPIHwgU19JUlVHTywgZ2V0X3BvcnQjI251bSwgc2V0X3BvcnQjI251bSk7CisKK2dldF9zZXRfcG9ydCgwLCBDWTdDNjNfUkVBRF9QT1JUX0lEMCwgQ1k3QzYzX1dSSVRFX1BPUlRfSUQwKTsKK2dldF9zZXRfcG9ydCgxLCBDWTdDNjNfUkVBRF9QT1JUX0lEMSwgQ1k3QzYzX1dSSVRFX1BPUlRfSUQxKTsKKworc3RhdGljIGludCBjeTdjNjNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSwKKwkJCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkgeworCisJc3RydWN0IGN5N2M2MyAqZGV2ID0gTlVMTDsKKwlpbnQgcmV0dmFsID0gLUVOT01FTTsKKworCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3Igb3VyIGRldmljZSBzdGF0ZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLworCWRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZGV2ID09IE5VTEwpIHsKKwkJZGV2X2VycigmZGV2LT51ZGV2LT5kZXYsICJPdXQgb2YgbWVtb3J5IVxuIik7CisJCWdvdG8gZXJyb3I7CisJfQorCisJZGV2LT51ZGV2ID0gdXNiX2dldF9kZXYoaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpKTsKKworCS8qIHNhdmUgb3VyIGRhdGEgcG9pbnRlciBpbiB0aGlzIGludGVyZmFjZSBkZXZpY2UgKi8KKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgZGV2KTsKKworCS8qIGNyZWF0ZSBkZXZpY2UgYXR0cmlidXRlIGZpbGVzICovCisJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX3BvcnQwKTsKKwlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfcG9ydDEpOworCisJLyogbGV0IHRoZSB1c2VyIGtub3cgd2hhdCBub2RlIHRoaXMgZGV2aWNlIGlzIG5vdyBhdHRhY2hlZCB0byAqLworCWRldl9pbmZvKCZpbnRlcmZhY2UtPmRldiwKKwkJIkN5cHJlc3MgQ1k3QzYzeHh4IGRldmljZSBub3cgYXR0YWNoZWRcbiIpOworCisJcmV0dmFsID0gMDsKK2Vycm9yOgorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIGN5N2M2M19kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpIHsKKworCXN0cnVjdCBjeTdjNjMgKmRldjsKKworCWRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTsKKwl1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7CisKKwkvKiByZW1vdmUgZGV2aWNlIGF0dHJpYnV0ZSBmaWxlcyAqLworCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9wb3J0MCk7CisJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX3BvcnQxKTsKKworCXVzYl9wdXRfZGV2KGRldi0+dWRldik7CisKKwlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsCisJCSJDeXByZXNzIENZN0M2M3h4eCBkZXZpY2Ugbm93IGRpc2Nvbm5lY3RlZFxuIik7CisKKwlrZnJlZShkZXYpOworfQorCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3k3YzYzX2RyaXZlciA9IHsKKwkubmFtZSA9ICJjeTdjNjMiLAorCS5wcm9iZSA9IGN5N2M2M19wcm9iZSwKKwkuZGlzY29ubmVjdCA9IGN5N2M2M19kaXNjb25uZWN0LAorCS5pZF90YWJsZSA9IGN5N2M2M190YWJsZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGN5N2M2M19pbml0KHZvaWQpIHsKKworCWludCByZXN1bHQ7CisKKwkvKiByZWdpc3RlciB0aGlzIGRyaXZlciB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtICovCisJcmVzdWx0ID0gdXNiX3JlZ2lzdGVyKCZjeTdjNjNfZHJpdmVyKTsKKwlpZiAocmVzdWx0KSB7CisJCWVycigiRnVuY3Rpb24gdXNiX3JlZ2lzdGVyIGZhaWxlZCEgRXJyb3IgbnVtYmVyOiAlZFxuIiwgcmVzdWx0KTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgY3k3YzYzX2V4aXQodm9pZCkgeworCisJLyogZGVyZWdpc3RlciB0aGlzIGRyaXZlciB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtICovCisJdXNiX2RlcmVnaXN0ZXIoJmN5N2M2M19kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChjeTdjNjNfaW5pdCk7Cittb2R1bGVfZXhpdChjeTdjNjNfZXhpdCk7CisKK01PRFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7CitNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3BoaWRnZXRraXQuYyBiL2RyaXZlcnMvdXNiL21pc2MvcGhpZGdldGtpdC5jCmluZGV4IDk5N2RiNWQuLjEzYWVlYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvcGhpZGdldGtpdC5jCisrKyBiL2RyaXZlcnMvdXNiL21pc2MvcGhpZGdldGtpdC5jCkBAIC0xLDcgKzEsOCBAQAogLyoKICAqIFVTQiBQaGlkZ2V0SW50ZXJmYWNlS2l0IGRyaXZlciAxLjAKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgU2VhbiBZb3VuZyA8c2VhbkBtZXNzLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBTZWFuIFlvdW5nIDxzZWFuQG1lc3Mub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA1IERhbmllbCBTYWFrZXMgPGRhbmllbEBzYWFrZXMubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA0IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTI1LDYgKzI2LDcgQEAKIAogI2RlZmluZSBVU0JfVkVORE9SX0lEX0dMQUIJCTB4MDZjMgogI2RlZmluZSBVU0JfREVWSUNFX0lEX0lOVEVSRkFDRUtJVDAwNAkweDAwNDAKKyNkZWZpbmUgVVNCX0RFVklDRV9JRF9JTlRFUkZBQ0VLSVQwMTYxNgkweDAwNDQKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9JTlRFUkZBQ0VLSVQ4ODgJMHgwMDQ1CiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfSU5URVJGQUNFS0lUMDQ3CTB4MDA1MQogI2RlZmluZSBVU0JfREVWSUNFX0lEX0lOVEVSRkFDRUtJVDA4OAkweDAwNTMKQEAgLTMyLDcgKzM0LDkgQEAKICNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9XSVNFR1JPVVAJCTB4MDkyNQogI2RlZmluZSBVU0JfREVWSUNFX0lEX0lOVEVSRkFDRUtJVDg4NAkweDgyMDEKIAotI2RlZmluZSBNQVhfSU5URVJGQUNFUwkJCTgKKyNkZWZpbmUgTUFYX0lOVEVSRkFDRVMJCQkxNgorCisjZGVmaW5lIFVSQl9JTlRfU0laRQkJCTgKIAogc3RydWN0IGRyaXZlcl9pbnRlcmZhY2VraXQgewogCWludCBzZW5zb3JzOwpAQCAtNTIsMTkgKzU2LDI0IEBACiBpZmtpdCgwLCA0LCA3LCAxKTsKIGlma2l0KDgsIDgsIDQsIDApOwogaWZraXQoMCwgOCwgOCwgMSk7CitpZmtpdCgwLCAxNiwgMTYsIDApOwogCi1zdHJ1Y3QgcGhpZGdldF9pbnRlcmZhY2VraXQgeworc3RydWN0IGludGVyZmFjZWtpdCB7CiAJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7CiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7CiAJc3RydWN0IGRyaXZlcl9pbnRlcmZhY2VraXQgKmlma2l0OwotCWludCBvdXRwdXRzW01BWF9JTlRFUkZBQ0VTXTsKLQlpbnQgaW5wdXRzW01BWF9JTlRFUkZBQ0VTXTsKLQlpbnQgc2Vuc29yc1tNQVhfSU5URVJGQUNFU107CisJdW5zaWduZWQgbG9uZyBvdXRwdXRzOworCXU4IGlucHV0c1tNQVhfSU5URVJGQUNFU107CisJdTE2IHNlbnNvcnNbTUFYX0lOVEVSRkFDRVNdOwogCXU4IGxjZF9maWxlc19vbjsKIAogCXN0cnVjdCB1cmIgKmlycTsKIAl1bnNpZ25lZCBjaGFyICpkYXRhOwogCWRtYV9hZGRyX3QgZGF0YV9kbWE7CisKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZG9fbm90aWZ5OworCXVuc2lnbmVkIGxvbmcgaW5wdXRfZXZlbnRzOworCXVuc2lnbmVkIGxvbmcgc2Vuc29yX2V2ZW50czsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewpAQCAtNzYsMzMgKzg1LDMzIEBACiAJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmcGhfMDQ3fSwKIAl7VVNCX0RFVklDRShVU0JfVkVORE9SX0lEX0dMQUIsIFVTQl9ERVZJQ0VfSURfSU5URVJGQUNFS0lUMDg4KSwKIAkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZwaF8wODh9LAorCXtVU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfR0xBQiwgVVNCX0RFVklDRV9JRF9JTlRFUkZBQ0VLSVQwMTYxNiksCisJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmcGhfMDE2MTZ9LAogCXtVU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfV0lTRUdST1VQLCBVU0JfREVWSUNFX0lEX0lOVEVSRkFDRUtJVDg4NCksCiAJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmcGhfODg0fSwKIAl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBpZF90YWJsZSk7CiAKLXN0YXRpYyBpbnQgY2hhbmdlX291dHB1dHMoc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQsIGludCBvdXRwdXRfbnVtLCBpbnQgZW5hYmxlKQorc3RhdGljIGludCBjaGFuZ2Vfb3V0cHV0cyhzdHJ1Y3QgaW50ZXJmYWNla2l0ICpraXQsIGludCBvdXRwdXRfbnVtLCBpbnQgZW5hYmxlKQogewotCXVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKwl1OCAqYnVmZmVyOwogCWludCByZXR2YWw7Ci0JaW50IG47CisKKwlpZiAoZW5hYmxlKQorCQlzZXRfYml0KG91dHB1dF9udW0sICZraXQtPm91dHB1dHMpOworCWVsc2UKKwkJY2xlYXJfYml0KG91dHB1dF9udW0sICZraXQtPm91dHB1dHMpOwogCiAJYnVmZmVyID0ga3phbGxvYyg0LCBHRlBfS0VSTkVMKTsKIAlpZiAoIWJ1ZmZlcikgewotCQlkZXZfZXJyKCZraXQtPnVkZXYtPmRldiwgIiVzIC0gb3V0IG9mIG1lbW9yeVxuIiwKLQkJCV9fRlVOQ1RJT05fXyk7CisJCWRldl9lcnIoJmtpdC0+dWRldi0+ZGV2LCAiJXMgLSBvdXQgb2YgbWVtb3J5XG4iLCBfX0ZVTkNUSU9OX18pOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CisJYnVmZmVyWzBdID0gKHU4KWtpdC0+b3V0cHV0czsKKwlidWZmZXJbMV0gPSAodTgpKGtpdC0+b3V0cHV0cyA+PiA4KTsKIAotCWtpdC0+b3V0cHV0c1tvdXRwdXRfbnVtXSA9IGVuYWJsZTsKLQlmb3IgKG49MDsgbjw4OyBuKyspIHsKLQkJaWYgKGtpdC0+b3V0cHV0c1tuXSkgewotCQkJYnVmZmVyWzBdIHw9IDEgPDwgbjsKLQkJfQotCX0KLQotCWRldl9kYmcoJmtpdC0+dWRldi0+ZGV2LCAic2VuZGluZyBkYXRhOiAlMDJ4XG4iLCBidWZmZXJbMF0pOworCWRldl9kYmcoJmtpdC0+dWRldi0+ZGV2LCAic2VuZGluZyBkYXRhOiAweCUwNHhcbiIsICh1MTYpa2l0LT5vdXRwdXRzKTsKIAogCXJldHZhbCA9IHVzYl9jb250cm9sX21zZyhraXQtPnVkZXYsCiAJCQkgdXNiX3NuZGN0cmxwaXBlKGtpdC0+dWRldiwgMCksCkBAIC0xMTYsMTAgKzEyNSwxMCBAQAogCXJldHVybiByZXR2YWwgPCAwID8gcmV0dmFsIDogMDsKIH0KIAotc3RhdGljIGludCBjaGFuZ2Vfc3RyaW5nKHN0cnVjdCBwaGlkZ2V0X2ludGVyZmFjZWtpdCAqa2l0LCBjb25zdCBjaGFyICpkaXNwbGF5LCB1bnNpZ25lZCBjaGFyIHJvdykKK3N0YXRpYyBpbnQgY2hhbmdlX3N0cmluZyhzdHJ1Y3QgaW50ZXJmYWNla2l0ICpraXQsIGNvbnN0IGNoYXIgKmRpc3BsYXksIHVuc2lnbmVkIGNoYXIgcm93KQogewogCXVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKLSAgICAgICAgdW5zaWduZWQgY2hhciAqZm9ybV9idWZmZXI7CisJdW5zaWduZWQgY2hhciAqZm9ybV9idWZmZXI7CiAJaW50IHJldHZhbCA9IC1FTk9NRU07CiAJaW50IGksaiwgbGVuLCBidWZfcHRyOwogCQpAQCAtMTc1LDcgKzE4NCw3IEBACiBzdGF0aWMgc3NpemVfdCBsY2RfbGluZV8jI251bWJlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkJXAogewkJCQkJCQkJCQkJXAogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwkJCQlcCi0Jc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwkJCVwKKwlzdHJ1Y3QgaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwkJCQlcCiAJY2hhbmdlX3N0cmluZyhraXQsIGJ1ZiwgbnVtYmVyIC0gMSk7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJCQlcCiB9CQkJCQkJCQkJCQlcCkBAIC0xODYsNyArMTk1LDcgQEAKIHN0YXRpYyBzc2l6ZV90IHNldF9iYWNrbGlnaHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCiB7CiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7Ci0Jc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXN0cnVjdCBpbnRlcmZhY2VraXQgKmtpdCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CiAJaW50IGVuYWJsZWQ7CiAJdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCWludCByZXR2YWwgPSAtRU5PTUVNOwpAQCAtMjIwLDcgKzIyOSw3IEBACiB9CiBzdGF0aWMgREVWSUNFX0FUVFIoYmFja2xpZ2h0LCBTX0lXVUdPLCBOVUxMLCBzZXRfYmFja2xpZ2h0KTsKIAotc3RhdGljIHZvaWQgcmVtb3ZlX2xjZF9maWxlcyhzdHJ1Y3QgcGhpZGdldF9pbnRlcmZhY2VraXQgKmtpdCkKK3N0YXRpYyB2b2lkIHJlbW92ZV9sY2RfZmlsZXMoc3RydWN0IGludGVyZmFjZWtpdCAqa2l0KQogewogCWlmIChraXQtPmxjZF9maWxlc19vbikgewogCQlkZXZfZGJnKCZraXQtPnVkZXYtPmRldiwgIlJlbW92aW5nIGxjZCBmaWxlc1xuIik7CkBAIC0yMzMsNyArMjQyLDcgQEAKIHN0YXRpYyBzc2l6ZV90IGVuYWJsZV9sY2RfZmlsZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCiB7CiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7Ci0Jc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXN0cnVjdCBpbnRlcmZhY2VraXQgKmtpdCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CiAJaW50IGVuYWJsZTsKIAkKIAlpZiAoa2l0LT5pZmtpdC0+aGFzX2xjZCA9PSAwKQpAQCAtMjYzLDEwICsyNzIsMTAgQEAKIAogc3RhdGljIHZvaWQgaW50ZXJmYWNla2l0X2lycShzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXN0cnVjdCBwaGlkZ2V0X2ludGVyZmFjZWtpdCAqa2l0ID0gdXJiLT5jb250ZXh0OworCXN0cnVjdCBpbnRlcmZhY2VraXQgKmtpdCA9IHVyYi0+Y29udGV4dDsKIAl1bnNpZ25lZCBjaGFyICpidWZmZXIgPSBraXQtPmRhdGE7CisJaW50IGksIGxldmVsLCBzZW5zb3I7CiAJaW50IHN0YXR1czsKLQlpbnQgbjsKIAogCXN3aXRjaCAodXJiLT5zdGF0dXMpIHsKIAljYXNlIDA6CQkJLyogc3VjY2VzcyAqLwpAQCAtMjgwLDIyICsyODksNjMgQEAKIAkJZ290byByZXN1Ym1pdDsKIAl9CiAKLQlmb3IgKG49MDsgbjw4OyBuKyspIHsKLQkJa2l0LT5pbnB1dHNbbl0gPSBidWZmZXJbMV0gJiAoMSA8PCBuKSA/IDEgOiAwOworCS8qIGRpZ2l0YWwgaW5wdXRzICovCisJaWYgKGtpdC0+aWZraXQtPmlucHV0cyA9PSAxNikgeworCQlmb3IgKGk9MDsgaSA8IDg7IGkrKykgeworCQkJbGV2ZWwgPSAoYnVmZmVyWzBdID4+IGkpICYgMTsKKwkJCWlmIChraXQtPmlucHV0c1tpXSAhPSBsZXZlbCkgeworCQkJCWtpdC0+aW5wdXRzW2ldID0gbGV2ZWw7CisJCQkJc2V0X2JpdChpLCAma2l0LT5pbnB1dF9ldmVudHMpOworCQkJfQorCQkJbGV2ZWwgPSAoYnVmZmVyWzFdID4+IGkpICYgMTsKKwkJCWlmIChraXQtPmlucHV0c1s4ICsgaV0gIT0gbGV2ZWwpIHsKKwkJCQlraXQtPmlucHV0c1s4ICsgaV0gPSBsZXZlbDsKKwkJCQlzZXRfYml0KDggKyBpLCAma2l0LT5pbnB1dF9ldmVudHMpOworCQkJfQorCQl9CisJfQorCWVsc2UgaWYgKGtpdC0+aWZraXQtPmlucHV0cyA9PSA4KSB7CisJCWZvciAoaT0wOyBpIDwgODsgaSsrKSB7CisJCQlsZXZlbCA9IChidWZmZXJbMV0gPj4gaSkgJiAxOworCQkJaWYgKGtpdC0+aW5wdXRzW2ldICE9IGxldmVsKSB7CisJCQkJa2l0LT5pbnB1dHNbaV0gPSBsZXZlbDsKKwkJCQlzZXRfYml0KGksICZraXQtPmlucHV0X2V2ZW50cyk7CisJCQl9CisJCX0KIAl9CiAKLQlpZiAoYnVmZmVyWzBdICYgMSkgewotCQlraXQtPnNlbnNvcnNbNF0gPSBidWZmZXJbMl0gKyAoYnVmZmVyWzNdICYgMHgwZikgKiAyNTY7Ci0JCWtpdC0+c2Vuc29yc1s1XSA9IGJ1ZmZlcls0XSArIChidWZmZXJbM10gJiAweGYwKSAqIDE2OwotCQlraXQtPnNlbnNvcnNbNl0gPSBidWZmZXJbNV0gKyAoYnVmZmVyWzZdICYgMHgwZikgKiAyNTY7Ci0JCWtpdC0+c2Vuc29yc1s3XSA9IGJ1ZmZlcls3XSArIChidWZmZXJbNl0gJiAweGYwKSAqIDE2OwotCX0gZWxzZSB7Ci0JCWtpdC0+c2Vuc29yc1swXSA9IGJ1ZmZlclsyXSArIChidWZmZXJbM10gJiAweDBmKSAqIDI1NjsKLQkJa2l0LT5zZW5zb3JzWzFdID0gYnVmZmVyWzRdICsgKGJ1ZmZlclszXSAmIDB4ZjApICogMTY7Ci0JCWtpdC0+c2Vuc29yc1syXSA9IGJ1ZmZlcls1XSArIChidWZmZXJbNl0gJiAweDBmKSAqIDI1NjsKLQkJa2l0LT5zZW5zb3JzWzNdID0gYnVmZmVyWzddICsgKGJ1ZmZlcls2XSAmIDB4ZjApICogMTY7CisJLyogYW5hbG9nIGlucHV0cyAqLworCWlmIChraXQtPmlma2l0LT5zZW5zb3JzKSB7CisJCXNlbnNvciA9IChidWZmZXJbMF0gJiAxKSA/IDQgOiAwOworCisJCWxldmVsID0gYnVmZmVyWzJdICsgKGJ1ZmZlclszXSAmIDB4MGYpICogMjU2OworCQlpZiAobGV2ZWwgIT0ga2l0LT5zZW5zb3JzW3NlbnNvcl0pIHsKKwkJCWtpdC0+c2Vuc29yc1tzZW5zb3JdID0gbGV2ZWw7CisJCQlzZXRfYml0KHNlbnNvciwgJmtpdC0+c2Vuc29yX2V2ZW50cyk7CisJCX0KKwkJc2Vuc29yKys7CisJCWxldmVsID0gYnVmZmVyWzRdICsgKGJ1ZmZlclszXSAmIDB4ZjApICogMTY7CisJCWlmIChsZXZlbCAhPSBraXQtPnNlbnNvcnNbc2Vuc29yXSkgeworCQkJa2l0LT5zZW5zb3JzW3NlbnNvcl0gPSBsZXZlbDsKKwkJCXNldF9iaXQoc2Vuc29yLCAma2l0LT5zZW5zb3JfZXZlbnRzKTsKKwkJfQorCQlzZW5zb3IrKzsKKwkJbGV2ZWwgPSBidWZmZXJbNV0gKyAoYnVmZmVyWzZdICYgMHgwZikgKiAyNTY7CisJCWlmIChsZXZlbCAhPSBraXQtPnNlbnNvcnNbc2Vuc29yXSkgeworCQkJa2l0LT5zZW5zb3JzW3NlbnNvcl0gPSBsZXZlbDsKKwkJCXNldF9iaXQoc2Vuc29yLCAma2l0LT5zZW5zb3JfZXZlbnRzKTsKKwkJfQorCQlzZW5zb3IrKzsKKwkJbGV2ZWwgPSBidWZmZXJbN10gKyAoYnVmZmVyWzZdICYgMHhmMCkgKiAxNjsKKwkJaWYgKGxldmVsICE9IGtpdC0+c2Vuc29yc1tzZW5zb3JdKSB7CisJCQlraXQtPnNlbnNvcnNbc2Vuc29yXSA9IGxldmVsOworCQkJc2V0X2JpdChzZW5zb3IsICZraXQtPnNlbnNvcl9ldmVudHMpOworCQl9CiAJfQogCisJaWYgKGtpdC0+aW5wdXRfZXZlbnRzIHx8IGtpdC0+c2Vuc29yX2V2ZW50cykKKwkJc2NoZWR1bGVfd29yaygma2l0LT5kb19ub3RpZnkpOworCiByZXN1Ym1pdDoKIAlzdGF0dXMgPSB1c2Jfc3VibWl0X3VyYih1cmIsIFNMQUJfQVRPTUlDKTsKIAlpZiAoc3RhdHVzKQpAQCAtMzA0LDIwICszNTQsNDAgQEAKIAkJCWtpdC0+dWRldi0+ZGV2cGF0aCwgc3RhdHVzKTsKIH0KIAorc3RhdGljIHZvaWQgZG9fbm90aWZ5KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGludGVyZmFjZWtpdCAqa2l0ID0gZGF0YTsKKwlpbnQgaTsKKwljaGFyIHN5c2ZzX2ZpbGVbOF07CisKKwlmb3IgKGk9MDsgaTxraXQtPmlma2l0LT5pbnB1dHM7IGkrKykgeworCQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KGksICZraXQtPmlucHV0X2V2ZW50cykpIHsKKwkJCXNwcmludGYoc3lzZnNfZmlsZSwgImlucHV0JWQiLCBpICsgMSk7CisJCQlzeXNmc19ub3RpZnkoJmtpdC0+aW50Zi0+ZGV2LmtvYmosIE5VTEwsIHN5c2ZzX2ZpbGUpOworCQl9CisJfQorCisJZm9yIChpPTA7IGk8a2l0LT5pZmtpdC0+c2Vuc29yczsgaSsrKSB7CisJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoaSwgJmtpdC0+c2Vuc29yX2V2ZW50cykpIHsKKwkJCXNwcmludGYoc3lzZnNfZmlsZSwgInNlbnNvciVkIiwgaSArIDEpOworCQkJc3lzZnNfbm90aWZ5KCZraXQtPmludGYtPmRldi5rb2JqLCBOVUxMLCBzeXNmc19maWxlKTsKKwkJfQorCX0KK30KKwogI2RlZmluZSBzaG93X3NldF9vdXRwdXQodmFsdWUpCQlcCi1zdGF0aWMgc3NpemVfdCBzZXRfb3V0cHV0IyN2YWx1ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIAlcCitzdGF0aWMgc3NpemVfdCBzZXRfb3V0cHV0IyN2YWx1ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsCVwKIAkJCQkJCQlzaXplX3QgY291bnQpCVwKIHsJCQkJCQkJCQlcCiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7CQlcCi0Jc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwlcCisJc3RydWN0IGludGVyZmFjZWtpdCAqa2l0ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJCVwKIAlpbnQgZW5hYmxlZDsJCQkJCQkJXAogCWludCByZXR2YWw7CQkJCQkJCVwKIAkJCQkJCQkJCVwKLQlpZiAoc3NjYW5mKGJ1ZiwgIiVkIiwgJmVuYWJsZWQpIDwgMSkgewkJCQlcCisJaWYgKHNzY2FuZihidWYsICIlZCIsICZlbmFibGVkKSA8IDEpCQkJCVwKIAkJcmV0dXJuIC1FSU5WQUw7CQkJCQkJXAotCX0JCQkJCQkJCVwKIAkJCQkJCQkJCVwKLQlyZXR2YWwgPSBjaGFuZ2Vfb3V0cHV0cyhraXQsIHZhbHVlIC0gMSwgZW5hYmxlZCA/IDEgOiAwKTsJXAorCXJldHZhbCA9IGNoYW5nZV9vdXRwdXRzKGtpdCwgdmFsdWUgLSAxLCBlbmFibGVkKTsJCVwKIAkJCQkJCQkJCVwKIAlyZXR1cm4gcmV0dmFsID8gcmV0dmFsIDogY291bnQ7CQkJCQlcCiB9CQkJCQkJCQkJXApAQCAtMzI1LDkgKzM5NSw5IEBACiBzdGF0aWMgc3NpemVfdCBzaG93X291dHB1dCMjdmFsdWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQlcCiB7CQkJCQkJCQkJXAogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwkJXAotCXN0cnVjdCBwaGlkZ2V0X2ludGVyZmFjZWtpdCAqa2l0ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJXAorCXN0cnVjdCBpbnRlcmZhY2VraXQgKmtpdCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CQlcCiAJCQkJCQkJCQlcCi0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGtpdC0+b3V0cHV0c1t2YWx1ZSAtIDFdKTsJCVwKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgISF0ZXN0X2JpdCh2YWx1ZSAtIDEsICZraXQtPm91dHB1dHMpKTtcCiB9CQkJCQkJCQkJXAogc3RhdGljIERFVklDRV9BVFRSKG91dHB1dCMjdmFsdWUsIFNfSVdVR08gfCBTX0lSVUdPLAkJCVwKIAkJc2hvd19vdXRwdXQjI3ZhbHVlLCBzZXRfb3V0cHV0IyN2YWx1ZSk7CkBAIC0zMzgsMTUgKzQwOCwyMyBAQAogc2hvd19zZXRfb3V0cHV0KDUpOwogc2hvd19zZXRfb3V0cHV0KDYpOwogc2hvd19zZXRfb3V0cHV0KDcpOwotc2hvd19zZXRfb3V0cHV0KDgpOwkvKiBzaG91bGQgYmUgTUFYX0lOVEVSRkFDRVMgLSAxICovCitzaG93X3NldF9vdXRwdXQoOCk7CitzaG93X3NldF9vdXRwdXQoOSk7CitzaG93X3NldF9vdXRwdXQoMTApOworc2hvd19zZXRfb3V0cHV0KDExKTsKK3Nob3dfc2V0X291dHB1dCgxMik7CitzaG93X3NldF9vdXRwdXQoMTMpOworc2hvd19zZXRfb3V0cHV0KDE0KTsKK3Nob3dfc2V0X291dHB1dCgxNSk7CitzaG93X3NldF9vdXRwdXQoMTYpOwogCiAjZGVmaW5lIHNob3dfaW5wdXQodmFsdWUpCVwKIHN0YXRpYyBzc2l6ZV90IHNob3dfaW5wdXQjI3ZhbHVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikJXAogewkJCQkJCQkJCVwKIAlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTsJCVwKLQlzdHJ1Y3QgcGhpZGdldF9pbnRlcmZhY2VraXQgKmtpdCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CVwKKwlzdHJ1Y3QgaW50ZXJmYWNla2l0ICpraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOwkJXAogCQkJCQkJCQkJXAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBraXQtPmlucHV0c1t2YWx1ZSAtIDFdKTsJCVwKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgKGludClraXQtPmlucHV0c1t2YWx1ZSAtIDFdKTsJXAogfQkJCQkJCQkJCVwKIHN0YXRpYyBERVZJQ0VfQVRUUihpbnB1dCMjdmFsdWUsIFNfSVJVR08sIHNob3dfaW5wdXQjI3ZhbHVlLCBOVUxMKTsKIApAQCAtMzU3LDE1ICs0MzUsMjMgQEAKIHNob3dfaW5wdXQoNSk7CiBzaG93X2lucHV0KDYpOwogc2hvd19pbnB1dCg3KTsKLXNob3dfaW5wdXQoOCk7CQkvKiBzaG91bGQgYmUgTUFYX0lOVEVSRkFDRVMgLSAxICovCitzaG93X2lucHV0KDgpOworc2hvd19pbnB1dCg5KTsKK3Nob3dfaW5wdXQoMTApOworc2hvd19pbnB1dCgxMSk7CitzaG93X2lucHV0KDEyKTsKK3Nob3dfaW5wdXQoMTMpOworc2hvd19pbnB1dCgxNCk7CitzaG93X2lucHV0KDE1KTsKK3Nob3dfaW5wdXQoMTYpOwogCiAjZGVmaW5lIHNob3dfc2Vuc29yKHZhbHVlKQlcCiBzdGF0aWMgc3NpemVfdCBzaG93X3NlbnNvciMjdmFsdWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQlcCiB7CQkJCQkJCQkJXAogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwkJXAotCXN0cnVjdCBwaGlkZ2V0X2ludGVyZmFjZWtpdCAqa2l0ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsJXAorCXN0cnVjdCBpbnRlcmZhY2VraXQgKmtpdCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7CQlcCiAJCQkJCQkJCQlcCi0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGtpdC0+c2Vuc29yc1t2YWx1ZSAtIDFdKTsJCVwKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgKGludClraXQtPnNlbnNvcnNbdmFsdWUgLSAxXSk7CVwKIH0JCQkJCQkJCQlcCiBzdGF0aWMgREVWSUNFX0FUVFIoc2Vuc29yIyN2YWx1ZSwgU19JUlVHTywgc2hvd19zZW5zb3IjI3ZhbHVlLCBOVUxMKTsKIApAQCAtMzc2LDE2ICs0NjIsMTYgQEAKIHNob3dfc2Vuc29yKDUpOwogc2hvd19zZW5zb3IoNik7CiBzaG93X3NlbnNvcig3KTsKLXNob3dfc2Vuc29yKDgpOwkJLyogc2hvdWxkIGJlIE1BWF9JTlRFUkZBQ0VTIC0gMSAqLworc2hvd19zZW5zb3IoOCk7CiAKIHN0YXRpYyBpbnQgaW50ZXJmYWNla2l0X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CiAJc3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7CiAJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaW50ZXJmYWNlOwogCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7Ci0Jc3RydWN0IHBoaWRnZXRfaW50ZXJmYWNla2l0ICpraXQ7CisJc3RydWN0IGludGVyZmFjZWtpdCAqa2l0OwogCXN0cnVjdCBkcml2ZXJfaW50ZXJmYWNla2l0ICppZmtpdDsKLQlpbnQgcGlwZSwgbWF4cDsKKwlpbnQgcGlwZSwgbWF4cCwgcmMgPSAtRU5PTUVNOwogCiAJaWZraXQgPSAoc3RydWN0IGRyaXZlcl9pbnRlcmZhY2VraXQgKilpZC0+ZHJpdmVyX2luZm87CiAJaWYgKCFpZmtpdCkKQEAgLTQwNSwyOSArNDkxLDIzIEBACiAJbWF4cCA9IHVzYl9tYXhwYWNrZXQoZGV2LCBwaXBlLCB1c2JfcGlwZW91dChwaXBlKSk7CiAJCiAJa2l0ID0ga3phbGxvYyhzaXplb2YoKmtpdCksIEdGUF9LRVJORUwpOwotCWlmIChraXQgID09IE5VTEwpIHsKLQkJZGV2X2VycigmaW50Zi0+ZGV2LCAiJXMgLSBvdXQgb2YgbWVtb3J5XG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0Ja2l0LT5pZmtpdCA9IGlma2l0OworCWlmICgha2l0KQorCQlnb3RvIG91dDsKIAotCWtpdC0+ZGF0YSA9IHVzYl9idWZmZXJfYWxsb2MoZGV2LCA4LCBTTEFCX0FUT01JQywgJmtpdC0+ZGF0YV9kbWEpOwotCWlmICgha2l0LT5kYXRhKSB7Ci0JCWtmcmVlKGtpdCk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KKwlraXQtPmlma2l0ID0gaWZraXQ7CisJa2l0LT5kYXRhID0gdXNiX2J1ZmZlcl9hbGxvYyhkZXYsIFVSQl9JTlRfU0laRSwgU0xBQl9BVE9NSUMsICZraXQtPmRhdGFfZG1hKTsKKwlpZiAoIWtpdC0+ZGF0YSkKKwkJZ290byBvdXQ7CiAKIAlraXQtPmlycSA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFraXQtPmlycSkgewotCQl1c2JfYnVmZmVyX2ZyZWUoZGV2LCA4LCBraXQtPmRhdGEsIGtpdC0+ZGF0YV9kbWEpOwotCQlrZnJlZShraXQpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9CisJaWYgKCFraXQtPmlycSkKKwkJZ290byBvdXQ7CiAKIAlraXQtPnVkZXYgPSB1c2JfZ2V0X2RldihkZXYpOwogCWtpdC0+aW50ZiA9IGludGY7CisJSU5JVF9XT1JLKCZraXQtPmRvX25vdGlmeSwgZG9fbm90aWZ5LCBraXQpOwogCXVzYl9maWxsX2ludF91cmIoa2l0LT5pcnEsIGtpdC0+dWRldiwgcGlwZSwga2l0LT5kYXRhLAotCQkJKG1heHAgPiA4ID8gOCA6IG1heHApLAorCQkJbWF4cCA+IFVSQl9JTlRfU0laRSA/IFVSQl9JTlRfU0laRSA6IG1heHAsCiAJCQlpbnRlcmZhY2VraXRfaXJxLCBraXQsIGVuZHBvaW50LT5iSW50ZXJ2YWwpOwogCWtpdC0+aXJxLT50cmFuc2Zlcl9kbWEgPSBraXQtPmRhdGFfZG1hOwogCWtpdC0+aXJxLT50cmFuc2Zlcl9mbGFncyB8PSBVUkJfTk9fVFJBTlNGRVJfRE1BX01BUDsKQEAgLTQzNSw3ICs1MTUsOCBAQAogCXVzYl9zZXRfaW50ZmRhdGEoaW50Ziwga2l0KTsKIAogCWlmICh1c2Jfc3VibWl0X3VyYihraXQtPmlycSwgR0ZQX0tFUk5FTCkpIHsKLQkJcmV0dXJuIC1FSU87CisJCXJjID0gLUVJTzsKKwkJZ290byBvdXQ7CiAJfQogCiAJaWYgKGlma2l0LT5vdXRwdXRzID49IDQpIHsKQEAgLTQ0NCwxMiArNTI1LDIyIEBACiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0Myk7CiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0NCk7CiAJfQotCWlmIChpZmtpdC0+b3V0cHV0cyA9PSA4KSB7CisJaWYgKGlma2l0LT5vdXRwdXRzID49IDgpIHsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ1KTsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ2KTsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ3KTsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ4KTsKIAl9IAorCWlmIChpZmtpdC0+b3V0cHV0cyA9PSAxNikgeworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX291dHB1dDkpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX291dHB1dDEwKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQxMSk7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTIpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX291dHB1dDEzKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQxNCk7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTUpOworCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX291dHB1dDE2KTsKKwl9CiAKIAlpZiAoaWZraXQtPmlucHV0cyA+PSA0KSB7CiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQxKTsKQEAgLTQ1NywxMiArNTQ4LDIyIEBACiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQzKTsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDQpOwogCX0KLQlpZiAoaWZraXQtPmlucHV0cyA9PSA4KSB7CisJaWYgKGlma2l0LT5pbnB1dHMgPj0gOCkgewogCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX2lucHV0NSk7CiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQ2KTsKIAkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDcpOwogCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX2lucHV0OCk7CiAJfQorCWlmIChpZmtpdC0+aW5wdXRzID09IDE2KSB7CisJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQ5KTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDEwKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDExKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDEyKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDEzKTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDE0KTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDE1KTsKKwkJZGV2aWNlX2NyZWF0ZV9maWxlKCZpbnRmLT5kZXYsICZkZXZfYXR0cl9pbnB1dDE2KTsKKwl9CiAKIAlpZiAoaWZraXQtPnNlbnNvcnMgPj0gNCkgewogCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX3NlbnNvcjEpOwpAQCAtNDc1LDkgKzU3Niw4IEBACiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfc2Vuc29yNik7CiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfc2Vuc29yNyk7CiAJfQotCWlmIChpZmtpdC0+c2Vuc29ycyA9PSA4KSB7CisJaWYgKGlma2l0LT5zZW5zb3JzID09IDgpCiAJCWRldmljZV9jcmVhdGVfZmlsZSgmaW50Zi0+ZGV2LCAmZGV2X2F0dHJfc2Vuc29yOCk7Ci0JfQogCiAJaWYgKGlma2l0LT5oYXNfbGNkKQogCQlkZXZpY2VfY3JlYXRlX2ZpbGUoJmludGYtPmRldiwgJmRldl9hdHRyX2xjZCk7CkBAIC00ODYsMjkgKzU4Niw1NiBAQAogCQkJaWZraXQtPnNlbnNvcnMsIGlma2l0LT5pbnB1dHMsIGlma2l0LT5vdXRwdXRzKTsKIAogCXJldHVybiAwOworCitvdXQ6CisJaWYgKGtpdCkgeworCQlpZiAoa2l0LT5pcnEpCisJCQl1c2JfZnJlZV91cmIoa2l0LT5pcnEpOworCQlpZiAoa2l0LT5kYXRhKQorCQkJdXNiX2J1ZmZlcl9mcmVlKGRldiwgVVJCX0lOVF9TSVpFLCBraXQtPmRhdGEsIGtpdC0+ZGF0YV9kbWEpOworCQlrZnJlZShraXQpOworCX0KKworCXJldHVybiByYzsKIH0KIAogc3RhdGljIHZvaWQgaW50ZXJmYWNla2l0X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSkKIHsKLQlzdHJ1Y3QgcGhpZGdldF9pbnRlcmZhY2VraXQgKmtpdDsKKwlzdHJ1Y3QgaW50ZXJmYWNla2l0ICpraXQ7CiAKIAlraXQgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7CiAJdXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpOwogCWlmICgha2l0KQogCQlyZXR1cm47CiAKKwl1c2Jfa2lsbF91cmIoa2l0LT5pcnEpOworCXVzYl9mcmVlX3VyYihraXQtPmlycSk7CisJdXNiX2J1ZmZlcl9mcmVlKGtpdC0+dWRldiwgVVJCX0lOVF9TSVpFLCBraXQtPmRhdGEsIGtpdC0+ZGF0YV9kbWEpOworCisJY2FuY2VsX2RlbGF5ZWRfd29yaygma2l0LT5kb19ub3RpZnkpOworCiAJaWYgKGtpdC0+aWZraXQtPm91dHB1dHMgPj0gNCkgewogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MSk7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQyKTsKIAkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX291dHB1dDMpOwogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0NCk7CiAJfQotCWlmIChraXQtPmlma2l0LT5vdXRwdXRzID09IDgpIHsKKwlpZiAoa2l0LT5pZmtpdC0+b3V0cHV0cyA+PSA4KSB7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ1KTsKIAkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX291dHB1dDYpOwogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0Nyk7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9vdXRwdXQ4KTsKIAl9CisJaWYgKGtpdC0+aWZraXQtPm91dHB1dHMgPT0gMTYpIHsKKwkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX291dHB1dDkpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTApOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTEpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTIpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTMpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTQpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTUpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfb3V0cHV0MTYpOworCX0KIAogCWlmIChraXQtPmlma2l0LT5pbnB1dHMgPj0gNCkgewogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQxKTsKQEAgLTUxNiwxMiArNjQzLDIyIEBACiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDMpOwogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQ0KTsKIAl9Ci0JaWYgKGtpdC0+aWZraXQtPmlucHV0cyA9PSA4KSB7CisJaWYgKGtpdC0+aWZraXQtPmlucHV0cyA+PSA4KSB7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDUpOwogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQ2KTsKIAkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX2lucHV0Nyk7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDgpOwogCX0KKwlpZiAoa2l0LT5pZmtpdC0+aW5wdXRzID09IDE2KSB7CisJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDkpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQxMCk7CisJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDExKTsKKwkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX2lucHV0MTIpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQxMyk7CisJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9pbnB1dDE0KTsKKwkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX2lucHV0MTUpOworCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfaW5wdXQxNik7CisJfQogCiAJaWYgKGtpdC0+aWZraXQtPnNlbnNvcnMgPj0gNCkgewogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfc2Vuc29yMSk7CkBAIC01MzQsMTkgKzY3MSwxNSBAQAogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJmludGVyZmFjZS0+ZGV2LCAmZGV2X2F0dHJfc2Vuc29yNik7CiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9zZW5zb3I3KTsKIAl9Ci0JaWYgKGtpdC0+aWZraXQtPnNlbnNvcnMgPT0gOCkgeworCWlmIChraXQtPmlma2l0LT5zZW5zb3JzID09IDgpCiAJCWRldmljZV9yZW1vdmVfZmlsZSgmaW50ZXJmYWNlLT5kZXYsICZkZXZfYXR0cl9zZW5zb3I4KTsKLQl9CisKIAlpZiAoa2l0LT5pZmtpdC0+aGFzX2xjZCkKIAkJZGV2aWNlX3JlbW92ZV9maWxlKCZpbnRlcmZhY2UtPmRldiwgJmRldl9hdHRyX2xjZCk7CiAKIAlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsICJVU0IgUGhpZGdldEludGVyZmFjZUtpdCAlZC8lZC8lZCBkZXRhY2hlZFxuIiwKIAkJa2l0LT5pZmtpdC0+c2Vuc29ycywga2l0LT5pZmtpdC0+aW5wdXRzLCBraXQtPmlma2l0LT5vdXRwdXRzKTsKIAotCXVzYl9raWxsX3VyYihraXQtPmlycSk7Ci0JdXNiX2ZyZWVfdXJiKGtpdC0+aXJxKTsKLQl1c2JfYnVmZmVyX2ZyZWUoa2l0LT51ZGV2LCA4LCBraXQtPmRhdGEsIGtpdC0+ZGF0YV9kbWEpOwotCiAJdXNiX3B1dF9kZXYoa2l0LT51ZGV2KTsKIAlrZnJlZShraXQpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiLmMgYi9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2IuYwppbmRleCAxOTZjODc5Li43MzhiZDdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2IuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2IuYwpAQCAtMzcsNiArMzcsNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KIAogI2luY2x1ZGUgInNpc3VzYi5oIgorI2luY2x1ZGUgInNpc3VzYl9pbml0LmgiCiAKICNpZmRlZiBJTkNMX1NJU1VTQl9DT04KICNpbmNsdWRlIDxsaW51eC9mb250Lmg+CkBAIC02MiwzNiArNjQsNiBAQAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgLyBjbGVhbi11cCByb3V0aW5lcyAqLwogCiAjaWZkZWYgSU5DTF9TSVNVU0JfQ09OCi1pbnQJc2lzdXNiX3NldHJlZyhzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBwb3J0LCB1OCBkYXRhKTsKLWludAlzaXN1c2JfZ2V0cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHBvcnQsIHU4ICpkYXRhKTsKLWludAlzaXN1c2Jfc2V0aWR4cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHBvcnQsIHU4IGluZGV4LCB1OCBkYXRhKTsKLWludAlzaXN1c2JfZ2V0aWR4cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHBvcnQsIHU4IGluZGV4LCB1OCAqZGF0YSk7Ci1pbnQJc2lzdXNiX3NldGlkeHJlZ2FuZG9yKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHBvcnQsIHU4IGlkeCwJdTggbXlhbmQsIHU4IG15b3IpOwotaW50CXNpc3VzYl9zZXRpZHhyZWdvcihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBwb3J0LCB1OCBpbmRleCwgdTggbXlvcik7Ci1pbnQJc2lzdXNiX3NldGlkeHJlZ2FuZChzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBwb3J0LCB1OCBpZHgsIHU4IG15YW5kKTsKLQotaW50CXNpc3VzYl93cml0ZWIoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCB1MzIgYWRyLCB1OCBkYXRhKTsKLWludAlzaXN1c2JfcmVhZGIoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCB1MzIgYWRyLCB1OCAqZGF0YSk7Ci1pbnQJc2lzdXNiX3dyaXRldyhzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIHUzMiBhZHIsIHUxNiBkYXRhKTsKLWludAlzaXN1c2JfcmVhZHcoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCB1MzIgYWRyLCB1MTYgKmRhdGEpOwotaW50CXNpc3VzYl9jb3B5X21lbW9yeShzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGNoYXIgKnNyYywKLQkJCXUzMiBkZXN0LCBpbnQgbGVuZ3RoLCBzaXplX3QgKmJ5dGVzX3dyaXR0ZW4pOwotCi1pbnQJc2lzdXNiX3Jlc2V0X3RleHRfbW9kZShzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBpbml0KTsKLQotZXh0ZXJuIGludCAgU2lTVVNCU2V0TW9kZShzdHJ1Y3QgU2lTX1ByaXZhdGUgKlNpU19QciwgdW5zaWduZWQgc2hvcnQgTW9kZU5vKTsKLWV4dGVybiBpbnQgIFNpU1VTQlNldFZFU0FNb2RlKHN0cnVjdCBTaVNfUHJpdmF0ZSAqU2lTX1ByLCB1bnNpZ25lZCBzaG9ydCBWTW9kZU5vKTsKLQotZXh0ZXJuIHZvaWQgc2lzdXNiX2luaXRfY29uY29kZSh2b2lkKTsKLWV4dGVybiBpbnQgIHNpc3VzYl9jb25zb2xlX2luaXQoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCBpbnQgZmlyc3QsIGludCBsYXN0KTsKLWV4dGVybiB2b2lkIHNpc3VzYl9jb25zb2xlX2V4aXQoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiKTsKLQotZXh0ZXJuIHZvaWQgc2lzdXNiX3NldF9jdXJzb3Ioc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCB1bnNpZ25lZCBpbnQgbG9jYXRpb24pOwotCi1leHRlcm4gaW50ICBzaXN1c2Jjb25fZG9fZm9udF9vcChzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBzZXQsIGludCBzbG90LAotCQl1OCAqYXJnLCBpbnQgY21hcHN6LCBpbnQgY2g1MTIsIGludCBkb3JlY2FsYywKLQkJc3RydWN0IHZjX2RhdGEgKmMsIGludCBmaCwgaW50IHVwbG9jayk7Ci0KIHN0YXRpYyBpbnQgc2lzdXNiX2ZpcnN0X3ZjID0gMDsKIHN0YXRpYyBpbnQgc2lzdXNiX2xhc3RfdmMgPSAwOwogbW9kdWxlX3BhcmFtX25hbWVkKGZpcnN0LCBzaXN1c2JfZmlyc3RfdmMsIGludCwgMCk7CkBAIC0xMDIsNyArNzQsNyBAQAogCiBzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgc2lzdXNiX2RyaXZlcjsKIAotREVDTEFSRV9NVVRFWChkaXNjb25uZWN0X3NlbSk7CitERUZJTkVfTVVURVgoZGlzY29ubmVjdF9tdXRleCk7CiAKIHN0YXRpYyB2b2lkCiBzaXN1c2JfZnJlZV9idWZmZXJzKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYikKQEAgLTEzNTksOSArMTMzMSw2IEBACiB9CiAjZW5kaWYKIAotI2lmbmRlZiBJTkNMX1NJU1VTQl9DT04KLXN0YXRpYwotI2VuZGlmCiBpbnQKIHNpc3VzYl9zZXRpZHhyZWcoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCBpbnQgcG9ydCwgdTggaW5kZXgsIHU4IGRhdGEpCiB7CkBAIC0xMzcxLDkgKzEzNDAsNiBAQAogCXJldHVybiByZXQ7CiB9CiAKLSNpZm5kZWYgSU5DTF9TSVNVU0JfQ09OCi1zdGF0aWMKLSNlbmRpZgogaW50CiBzaXN1c2JfZ2V0aWR4cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHBvcnQsIHU4IGluZGV4LCB1OCAqZGF0YSkKIHsKQEAgLTEzODMsOSArMTM0OSw2IEBACiAJcmV0dXJuIHJldDsKIH0KIAotI2lmbmRlZiBJTkNMX1NJU1VTQl9DT04KLXN0YXRpYwotI2VuZGlmCiBpbnQKIHNpc3VzYl9zZXRpZHhyZWdhbmRvcihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBwb3J0LCB1OCBpZHgsCiAJCQkJCQkJdTggbXlhbmQsIHU4IG15b3IpCkBAIC0xNDE1LDE4ICsxMzc4LDEyIEBACiAJcmV0dXJuIHJldDsKIH0KIAotI2lmbmRlZiBJTkNMX1NJU1VTQl9DT04KLXN0YXRpYwotI2VuZGlmCiBpbnQKIHNpc3VzYl9zZXRpZHhyZWdvcihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGludCBwb3J0LCB1OCBpbmRleCwgdTggbXlvcikKIHsKIAlyZXR1cm4oc2lzdXNiX3NldGlkeHJlZ2FuZG9yKHNpc3VzYiwgcG9ydCwgaW5kZXgsIDB4ZmYsIG15b3IpKTsKIH0KIAotI2lmbmRlZiBJTkNMX1NJU1VTQl9DT04KLXN0YXRpYwotI2VuZGlmCiBpbnQKIHNpc3VzYl9zZXRpZHhyZWdhbmQoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCBpbnQgcG9ydCwgdTggaWR4LCB1OCBteWFuZCkKIHsKQEAgLTE0NDgsNiArMTQwNSw4IEBACiAJcmV0dXJuKHNpc3VzYl9yZWFkX21lbWlvX2J5dGUoc2lzdXNiLCBTSVNVU0JfVFlQRV9NRU0sIGFkciwgZGF0YSkpOwogfQogCisjaWYgMAorCiBpbnQKIHNpc3VzYl93cml0ZXcoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCB1MzIgYWRyLCB1MTYgZGF0YSkKIHsKQEAgLTE0NjAsNiArMTQxOSw4IEBACiAJcmV0dXJuKHNpc3VzYl9yZWFkX21lbWlvX3dvcmQoc2lzdXNiLCBTSVNVU0JfVFlQRV9NRU0sIGFkciwgZGF0YSkpOwogfQogCisjZW5kaWYgIC8qICAwICAqLworCiBpbnQKIHNpc3VzYl9jb3B5X21lbW9yeShzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIGNoYXIgKnNyYywKIAkJCXUzMiBkZXN0LCBpbnQgbGVuZ3RoLCBzaXplX3QgKmJ5dGVzX3dyaXR0ZW4pCkBAIC0yNTUyLDM5ICsyNTEzLDM5IEBACiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTsKIAlpbnQgc3VibWlub3IgPSBpbWlub3IoaW5vZGUpOwogCi0JZG93bigmZGlzY29ubmVjdF9zZW0pOworCW11dGV4X2xvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCiAJaWYgKCEoaW50ZXJmYWNlID0gdXNiX2ZpbmRfaW50ZXJmYWNlKCZzaXN1c2JfZHJpdmVyLCBzdWJtaW5vcikpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAic2lzdXNiWyVkXTogRmFpbGVkIHRvIGZpbmQgaW50ZXJmYWNlXG4iLAogCQkJCXN1Ym1pbm9yKTsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiAJaWYgKCEoc2lzdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpKSkgewotCQl1cCgmZGlzY29ubmVjdF9zZW0pOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKLQlkb3duKCZzaXN1c2ItPmxvY2spOworCW11dGV4X2xvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlpZiAoIXNpc3VzYi0+cHJlc2VudCB8fCAhc2lzdXNiLT5yZWFkeSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKIAlpZiAoc2lzdXNiLT5pc29wZW4pIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7Ci0JCXVwKCZkaXNjb25uZWN0X3NlbSk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAKIAlpZiAoIXNpc3VzYi0+ZGV2aW5pdCkgewogCQlpZiAoc2lzdXNiLT5zaXN1c2JfZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCkgewogCQkJaWYgKHNpc3VzYl9pbml0X2dmeGRldmljZShzaXN1c2IsIDApKSB7Ci0JCQkJdXAoJnNpc3VzYi0+bG9jayk7Ci0JCQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CisJCQkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJCQlwcmludGsoS0VSTl9FUlIKIAkJCQkJInNpc3VzYnZnYVslZF06IEZhaWxlZCB0byBpbml0aWFsaXplICIKIAkJCQkJImRldmljZVxuIiwKQEAgLTI1OTIsOCArMjU1Myw4IEBACiAJCQkJcmV0dXJuIC1FSU87CiAJCQl9CiAJCX0gZWxzZSB7Ci0JCQl1cCgmc2lzdXNiLT5sb2NrKTsKLQkJCXVwKCZkaXNjb25uZWN0X3NlbSk7CisJCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CisJCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQkJcHJpbnRrKEtFUk5fRVJSCiAJCQkJInNpc3VzYnZnYVslZF06IERldmljZSBub3QgYXR0YWNoZWQgdG8gIgogCQkJCSJVU0IgMi4wIGh1YlxuIiwKQEAgLTI2MDksOSArMjU3MCw5IEBACiAKIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBzaXN1c2I7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKLQl1cCgmZGlzY29ubmVjdF9zZW0pOworCW11dGV4X3VubG9jaygmZGlzY29ubmVjdF9tdXRleCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI2NDIsMTQgKzI2MDMsMTQgQEAKIAlzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2I7CiAJaW50IG15bWlub3I7CiAKLQlkb3duKCZkaXNjb25uZWN0X3NlbSk7CisJbXV0ZXhfbG9jaygmZGlzY29ubmVjdF9tdXRleCk7CiAKIAlpZiAoIShzaXN1c2IgPSAoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqKWZpbGUtPnByaXZhdGVfZGF0YSkpIHsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JZG93bigmc2lzdXNiLT5sb2NrKTsKKwltdXRleF9sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJaWYgKHNpc3VzYi0+cHJlc2VudCkgewogCQkvKiBXYWl0IGZvciBhbGwgVVJCcyB0byBmaW5pc2ggaWYgZGV2aWNlIHN0aWxsIHByZXNlbnQgKi8KQEAgLTI2NjIsMTIgKzI2MjMsMTIgQEAKIAlzaXN1c2ItPmlzb3BlbiA9IDA7CiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIGRlY3JlbWVudCB0aGUgdXNhZ2UgY291bnQgb24gb3VyIGRldmljZSAqLwogCWtyZWZfcHV0KCZzaXN1c2ItPmtyZWYsIHNpc3VzYl9kZWxldGUpOwogCi0JdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNjg1LDExICsyNjQ2LDExIEBACiAJaWYgKCEoc2lzdXNiID0gKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKilmaWxlLT5wcml2YXRlX2RhdGEpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWRvd24oJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfbG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIFNhbml0eSBjaGVjayAqLwogCWlmICghc2lzdXNiLT5wcmVzZW50IHx8ICFzaXN1c2ItPnJlYWR5IHx8ICFzaXN1c2ItPnNpc3VzYl9kZXYpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCkBAIC0yNzg0LDcgKzI3NDUsNyBAQAogCQkgICAgKCpwcG9zKSA8PSBTSVNVU0JfUENJX1BTRVVET19QQ0lCQVNFICsgMHg1YykgewogCiAJCWlmIChjb3VudCAhPSA0KSB7Ci0JCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAKQEAgLTI4MDgsNyArMjc2OSw3IEBACiAKIAkoKnBwb3MpICs9IGJ5dGVzX3JlYWQ7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlyZXR1cm4gZXJybm8gPyBlcnJubyA6IGJ5dGVzX3JlYWQ7CiB9CkBAIC0yODI3LDExICsyNzg4LDExIEBACiAJaWYgKCEoc2lzdXNiID0gKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKilmaWxlLT5wcml2YXRlX2RhdGEpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWRvd24oJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfbG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIFNhbml0eSBjaGVjayAqLwogCWlmICghc2lzdXNiLT5wcmVzZW50IHx8ICFzaXN1c2ItPnJlYWR5IHx8ICFzaXN1c2ItPnNpc3VzYl9kZXYpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCkBAIC0yOTMwLDcgKzI4OTEsNyBAQAogCQkgICAgKCpwcG9zKSA8PSBTSVNVU0JfUENJX1BTRVVET19QQ0lCQVNFICsgU0lTVVNCX1BDSV9QQ09ORlNJWkUpIHsKIAogCQlpZiAoY291bnQgIT0gNCkgewotCQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCkBAIC0yOTU2LDcgKzI5MTcsNyBAQAogCiAJKCpwcG9zKSArPSBieXRlc193cml0dGVuOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJcmV0dXJuIGVycm5vID8gZXJybm8gOiBieXRlc193cml0dGVuOwogfQpAQCAtMjk3MCwxMSArMjkzMSwxMSBAQAogCWlmICghKHNpc3VzYiA9IChzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICopZmlsZS0+cHJpdmF0ZV9kYXRhKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlkb3duKCZzaXN1c2ItPmxvY2spOworCW11dGV4X2xvY2soJnNpc3VzYi0+bG9jayk7CiAKIAkvKiBTYW5pdHkgY2hlY2sgKi8KIAlpZiAoIXNpc3VzYi0+cHJlc2VudCB8fCAhc2lzdXNiLT5yZWFkeSB8fCAhc2lzdXNiLT5zaXN1c2JfZGV2KSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApAQCAtMjk5NCw3ICsyOTU1LDcgQEAKIAkJCXJldCA9IC1FSU5WQUw7CiAJfQogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTMxMzYsNyArMzA5Nyw3IEBACiAJaWYgKCEoc2lzdXNiID0gKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKilmaWxlLT5wcml2YXRlX2RhdGEpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWRvd24oJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfbG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIFNhbml0eSBjaGVjayAqLwogCWlmICghc2lzdXNiLT5wcmVzZW50IHx8ICFzaXN1c2ItPnJlYWR5IHx8ICFzaXN1c2ItPnNpc3VzYl9kZXYpIHsKQEAgLTMxOTMsNyArMzE1NCw3IEBACiAJfQogCiBlcnJfb3V0OgotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCkBAIC0zMjU4LDcgKzMyMTksNyBAQAogCX0KIAlrcmVmX2luaXQoJnNpc3VzYi0+a3JlZik7CiAKLQlpbml0X01VVEVYKCYoc2lzdXNiLT5sb2NrKSk7CisJbXV0ZXhfaW5pdCgmKHNpc3VzYi0+bG9jaykpOwogCiAJLyogUmVnaXN0ZXIgZGV2aWNlICovCiAJaWYgKChyZXR2YWwgPSB1c2JfcmVnaXN0ZXJfZGV2KGludGYsICZ1c2Jfc2lzdXNiX2NsYXNzKSkpIHsKQEAgLTM0MjksOSArMzM5MCw5IEBACiAJICogcHJvdGVjdCBhbGwgb3RoZXIgcm91dGluZXMgZnJvbSB0aGUgZGlzY29ubmVjdAogCSAqIGNhc2UsIG5vdCB0aGUgb3RoZXIgd2F5IHJvdW5kLgogCSAqLwotCWRvd24oJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF9sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAotCWRvd24oJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfbG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIFdhaXQgZm9yIGFsbCBVUkJzIHRvIGNvbXBsZXRlIGFuZCBraWxsIHRoZW0gaW4gY2FzZSAoTVVTVCBkbykgKi8KIAlpZiAoIXNpc3VzYl93YWl0X2FsbF9vdXRfY29tcGxldGUoc2lzdXNiKSkKQEAgLTM0NjIsMTIgKzM0MjMsMTIgQEAKIAlzaXN1c2ItPnByZXNlbnQgPSAwOwogCXNpc3VzYi0+cmVhZHkgPSAwOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJLyogZGVjcmVtZW50IG91ciB1c2FnZSBjb3VudCAqLwogCWtyZWZfcHV0KCZzaXN1c2ItPmtyZWYsIHNpc3VzYl9kZWxldGUpOwogCi0JdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCiAJcHJpbnRrKEtFUk5fSU5GTyAic2lzdXNidmdhWyVkXTogRGlzY29ubmVjdGVkXG4iLCBtaW5vcik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2IuaCBiL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYi5oCmluZGV4IGE3MTY4MjUuLjhlMTEyMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYi5oCisrKyBiL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYi5oCkBAIC00MSw2ICs0MSw4IEBACiAjZGVmaW5lIFNJU1VTQl9ORVdfQ09ORklHX0NPTVBBVAogI2VuZGlmCiAKKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorCiAvKiBGb3Igb2xkZXIga2VybmVscywgc3VwcG9ydCBmb3IgdGV4dCBjb25zb2xlcyBpcyBieSBkZWZhdWx0CiAgKiBvZmYuIFRvIGVuc2FibGUgdGV4dCBjb25zb2xlIHN1cHBvcnQsIGNoYW5nZSB0aGUgZm9sbG93aW5nOgogICovCkBAIC02MCwxMSArNjIsOSBAQAogI2RlZmluZSBJTkNMX1NJU1VTQl9DT04JCTEKICNlbmRpZgogCi0jaWZkZWYgSU5DTF9TSVNVU0JfQ09OCiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgogI2luY2x1ZGUgPGxpbnV4L3Z0X2tlcm4uaD4KICNpbmNsdWRlICJzaXN1c2Jfc3RydWN0LmgiCi0jZW5kaWYKIAogLyogVVNCIHJlbGF0ZWQgKi8KIApAQCAtMTE2LDcgKzExNiw3IEBACiAJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTsKIAlzdHJ1Y3Qga3JlZiBrcmVmOwogCXdhaXRfcXVldWVfaGVhZF90IHdhaXRfcTsJLyogZm9yIHN5bmNpbmQgYW5kIHRpbWVvdXRzICovCi0Jc3RydWN0IHNlbWFwaG9yZSBsb2NrOwkJLyogZ2VuZXJhbCByYWNlIGF2b2lkYW5jZSAqLworCXN0cnVjdCBtdXRleCBsb2NrOwkJLyogZ2VuZXJhbCByYWNlIGF2b2lkYW5jZSAqLwogCXVuc2lnbmVkIGludCBpZm51bTsJCS8qIGludGVyZmFjZSBudW1iZXIgb2YgdGhlIFVTQiBkZXZpY2UgKi8KIAlpbnQgbWlub3I7CQkJLyogbWlub3IgKGZvciBsb2dnaW5nIGNsYXJpdHkpICovCiAJaW50IGlzb3BlbjsJCQkvKiAhPTAgaWYgb3BlbiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX2Nvbi5jIGIvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX2Nvbi5jCmluZGV4IGJlNWMxYTIuLmZiNDhmZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9jb24uYworKysgYi9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2JfY29uLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4KQEAgLTY5LDI3ICs3MCw5IEBACiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgogCiAjaW5jbHVkZSAic2lzdXNiLmgiCisjaW5jbHVkZSAic2lzdXNiX2luaXQuaCIKIAogI2lmZGVmIElOQ0xfU0lTVVNCX0NPTgotZXh0ZXJuIGludCBzaXN1c2Jfc2V0cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKiwgaW50LCB1OCk7Ci1leHRlcm4gaW50IHNpc3VzYl9nZXRyZWcoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqLCBpbnQsIHU4ICopOwotZXh0ZXJuIGludCBzaXN1c2Jfc2V0aWR4cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKiwgaW50LCB1OCwgdTgpOwotZXh0ZXJuIGludCBzaXN1c2JfZ2V0aWR4cmVnKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKiwgaW50LCB1OCwgdTggKik7Ci1leHRlcm4gaW50IHNpc3VzYl9zZXRpZHhyZWdvcihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICosIGludCwgdTgsIHU4KTsKLWV4dGVybiBpbnQgc2lzdXNiX3NldGlkeHJlZ2FuZChzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICosIGludCwgdTgsIHU4KTsKLWV4dGVybiBpbnQgc2lzdXNiX3NldGlkeHJlZ2FuZG9yKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKiwgaW50LCB1OCwgdTgsIHU4KTsKLQotZXh0ZXJuIGludCBzaXN1c2Jfd3JpdGViKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgdTMyIGFkciwgdTggZGF0YSk7Ci1leHRlcm4gaW50IHNpc3VzYl9yZWFkYihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIHUzMiBhZHIsIHU4ICpkYXRhKTsKLWV4dGVybiBpbnQgc2lzdXNiX3dyaXRldyhzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIHUzMiBhZHIsIHUxNiBkYXRhKTsKLWV4dGVybiBpbnQgc2lzdXNiX3JlYWR3KHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgdTMyIGFkciwgdTE2ICpkYXRhKTsKLWV4dGVybiBpbnQgc2lzdXNiX2NvcHlfbWVtb3J5KHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgY2hhciAqc3JjLAotCQkJdTMyIGRlc3QsIGludCBsZW5ndGgsIHNpemVfdCAqYnl0ZXNfd3JpdHRlbik7Ci0KLWV4dGVybiB2b2lkIHNpc3VzYl9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIGludCBzaXN1c2JfcmVzZXRfdGV4dF9tb2RlKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IGluaXQpOwotCi1leHRlcm4gaW50IFNpU1VTQlNldE1vZGUoc3RydWN0IFNpU19Qcml2YXRlICpTaVNfUHIsIHVuc2lnbmVkIHNob3J0IE1vZGVObyk7CiAKICNkZWZpbmUgc2lzdXNiY29uX3dyaXRldyh2YWwsIGFkZHIpCSgqKGFkZHIpID0gKHZhbCkpCiAjZGVmaW5lIHNpc3VzYmNvbl9yZWFkdyhhZGRyKQkJKCooYWRkcikpCkBAIC0xMDIsOCArODUsNiBAQAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBjb25zdyBzaXN1c2JfY29uOwogCi1leHRlcm4gc3RydWN0IHNlbWFwaG9yZSBkaXNjb25uZWN0X3NlbTsKLQogc3RhdGljIGlubGluZSB2b2lkCiBzaXN1c2Jjb25fbWVtc2V0dyh1MTYgKnMsIHUxNiBjLCB1bnNpZ25lZCBpbnQgY291bnQpCiB7CkBAIC0xOTQsMTEgKzE3NSwxMSBAQAogCWlmICghKHNpc3VzYiA9IHNpc3VzYl9nZXRfc2lzdXNiKGNvbnNvbGUpKSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlkb3duKCZzaXN1c2ItPmxvY2spOworCW11dGV4X2xvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlpZiAoIXNpc3VzYl9zaXN1c2JfdmFsaWQoc2lzdXNiKSB8fAogCSAgICAhc2lzdXNiLT5oYXZldGhpc2NvbnNvbGVbY29uc29sZV0pIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yMzYsMTggKzIxNywxOCBAQAogCSAqIGFyZSBzZXQgdXAvcmVzdG9yZWQuCiAJICovCiAKLQlkb3duKCZkaXNjb25uZWN0X3NlbSk7CisJbXV0ZXhfbG9jaygmZGlzY29ubmVjdF9tdXRleCk7CiAKIAlpZiAoIShzaXN1c2IgPSBzaXN1c2JfZ2V0X3Npc3VzYihjLT52Y19udW0pKSkgewotCQl1cCgmZGlzY29ubmVjdF9zZW0pOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlyZXR1cm47CiAJfQogCi0JZG93bigmc2lzdXNiLT5sb2NrKTsKKwltdXRleF9sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJaWYgKCFzaXN1c2Jfc2lzdXNiX3ZhbGlkKHNpc3VzYikpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7Ci0JCXVwKCZkaXNjb25uZWN0X3NlbSk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMjg0LDkgKzI2NSw5IEBACiAJaWYgKCEqYy0+dmNfdW5pX3BhZ2VkaXJfbG9jKQogCQljb25fc2V0X2RlZmF1bHRfdW5pbWFwKGMpOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCi0JdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCiAJaWYgKGluaXQpIHsKIAkJYy0+dmNfY29scyA9IGNvbHM7CkBAIC0zMDYsMTQgKzI4NywxNCBAQAogCSAqIGFuZCBvdGhlcnMsIGllIG5vdCB1bmRlciBvdXIgY29udHJvbC4KIAkgKi8KIAotCWRvd24oJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF9sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAogCWlmICghKHNpc3VzYiA9IHNpc3VzYl9nZXRfc2lzdXNiKGMtPnZjX251bSkpKSB7Ci0JCXVwKCZkaXNjb25uZWN0X3NlbSk7CisJCW11dGV4X3VubG9jaygmZGlzY29ubmVjdF9tdXRleCk7CiAJCXJldHVybjsKIAl9CiAKLQlkb3duKCZzaXN1c2ItPmxvY2spOworCW11dGV4X2xvY2soJnNpc3VzYi0+bG9jayk7CiAKIAkvKiBDbGVhciBvdXJzZWx2ZXMgaW4gbXlzaXN1c2JzICovCiAJbXlzaXN1c2JzW2MtPnZjX251bV0gPSBOVUxMOwpAQCAtMzMyLDEyICszMTMsMTIgQEAKIAkJfQogCX0KIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIGRlY3JlbWVudCB0aGUgdXNhZ2UgY291bnQgb24gb3VyIHNpc3VzYiAqLwogCWtyZWZfcHV0KCZzaXN1c2ItPmtyZWYsIHNpc3VzYl9kZWxldGUpOwogCi0JdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogfQogCiAvKiBpbnRlcmZhY2Ugcm91dGluZSAqLwpAQCAtNDE3LDcgKzM5OCw3IEBACiAjZW5kaWYKIAogCWlmIChzaXN1c2JfaXNfaW5hY3RpdmUoYywgc2lzdXNiKSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm47CiAJfQogCkBAIC00MjUsNyArNDA2LDcgQEAKIAlzaXN1c2JfY29weV9tZW1vcnkoc2lzdXNiLCAoY2hhciAqKVNJU1VTQl9WQUREUih4LCB5KSwKIAkJCQkodTMyKVNJU1VTQl9IQUREUih4LCB5KSwgMiwgJndyaXR0ZW4pOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogfQogCiAvKiBJbnRlcmZhY2Ugcm91dGluZSAqLwpAQCAtNDUzLDE0ICs0MzQsMTQgQEAKIAkJc2lzdXNiY29uX3dyaXRldyhzaXN1c2Jjb25fcmVhZHcocysrKSwgZGVzdCsrKTsKIAogCWlmIChzaXN1c2JfaXNfaW5hY3RpdmUoYywgc2lzdXNiKSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm47CiAJfQogCiAJc2lzdXNiX2NvcHlfbWVtb3J5KHNpc3VzYiwgKGNoYXIgKilTSVNVU0JfVkFERFIoeCwgeSksCiAJCQkJKHUzMilTSVNVU0JfSEFERFIoeCwgeSksIGNvdW50ICogMiwgJndyaXR0ZW4pOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogfQogCiAvKiBJbnRlcmZhY2Ugcm91dGluZSAqLwpAQCAtNTA0LDcgKzQ4NSw3IEBACiAJfQogCiAJaWYgKHNpc3VzYl9pc19pbmFjdGl2ZShjLCBzaXN1c2IpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTUxNCw3ICs0OTUsNyBAQAogCXNpc3VzYl9jb3B5X21lbW9yeShzaXN1c2IsICh1bnNpZ25lZCBjaGFyICopU0lTVVNCX1ZBRERSKHgsIHkpLAogCQkJCSh1MzIpU0lTVVNCX0hBRERSKHgsIHkpLCBsZW5ndGgsICZ3cml0dGVuKTsKIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIH0KIAogLyogSW50ZXJmYWNlIHJvdXRpbmUgKi8KQEAgLTU3Niw3ICs1NTcsNyBAQAogI2VuZGlmCiAKIAlpZiAoc2lzdXNiX2lzX2luYWN0aXZlKGMsIHNpc3VzYikpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNTg2LDcgKzU2Nyw3IEBACiAJc2lzdXNiX2NvcHlfbWVtb3J5KHNpc3VzYiwgKHVuc2lnbmVkIGNoYXIgKilTSVNVU0JfVkFERFIoZHgsIGR5KSwKIAkJCQkodTMyKVNJU1VTQl9IQUREUihkeCwgZHkpLCBsZW5ndGgsICZ3cml0dGVuKTsKIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIH0KIAogLyogaW50ZXJmYWNlIHJvdXRpbmUgKi8KQEAgLTYwOSw3ICs1OTAsNyBAQAogCiAJLyogRG9uJ3Qgd3JpdGUgdG8gc2NyZWVuIGlmIGluIGdmeCBtb2RlICovCiAJaWYgKHNpc3VzYl9pc19pbmFjdGl2ZShjLCBzaXN1c2IpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNjE4LDcgKzU5OSw3IEBACiAJICogYXMgb3JpZ2luLgogCSAqLwogCWlmIChjLT52Y19vcmlnaW4gPT0gKHVuc2lnbmVkIGxvbmcpYy0+dmNfc2NyZWVuYnVmKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXByaW50ayhLRVJOX0RFQlVHICJzaXN1c2I6IEFTU0VSVCBPUklHSU4gIT0gU0NSRUVOQlVGIVxuIik7CiAJCXJldHVybiAwOwogCX0KQEAgLTYzNSw3ICs2MTYsNyBAQAogCQkJCSh1MzIpU0lTVVNCX0hBRERSKDAsIDApLAogCQkJCWxlbmd0aCwgJndyaXR0ZW4pOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJcmV0dXJuIDA7CiB9CkBAIC02NTcsNyArNjM4LDcgQEAKIAkvKiBzaXN1c2ItPmxvY2sgaXMgZG93biAqLwogCiAJaWYgKHNpc3VzYl9pc19pbmFjdGl2ZShjLCBzaXN1c2IpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTY2OSw3ICs2NTAsNyBAQAogCXNpc3VzYmNvbl9tZW1jcHl3KCh1MTYgKiljLT52Y19zY3JlZW5idWYsICh1MTYgKiljLT52Y19vcmlnaW4sCiAJCQkJCQkJCWxlbmd0aCk7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiB9CiAKIC8qIGludGVyZmFjZSByb3V0aW5lICovCkBAIC02OTAsNyArNjcxLDcgQEAKIAkvKiBzaXN1c2ItPmxvY2sgaXMgZG93biAqLwogCiAJaWYgKHNpc3VzYl9pc19pbmFjdGl2ZShjLCBzaXN1c2IpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNzA1LDcgKzY4Niw3IEBACiAJCQlicmVhazsKIAl9CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcyOCw3ICs3MDksNyBAQAogCQlzaXN1c2ItPmlzX2dmeCA9IGJsYW5rID8gMSA6IDA7CiAKIAlpZiAoc2lzdXNiX2lzX2luYWN0aXZlKGMsIHNpc3VzYikpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC03NzcsNyArNzU4LDcgQEAKIAkJCWNyNjMgID0gMHg0MDsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCkBAIC03ODgsNyArNzY5LDcgQEAKIAogCX0KIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC04MDksNyArNzkwLDcgQEAKIAkvKiBzaXN1c2ItPmxvY2sgaXMgZG93biAqLwogCiAJaWYgKHNpc3VzYl9pc19pbmFjdGl2ZShjLCBzaXN1c2IpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtODQ5LDcgKzgzMCw3IEBACiAKIAlzaXN1c2Jjb25fc2V0X3N0YXJ0X2FkZHJlc3Moc2lzdXNiLCBjKTsKIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCXJldHVybiAxOwogfQpAQCAtODY3LDcgKzg0OCw3IEBACiAJLyogc2lzdXNiLT5sb2NrIGlzIGRvd24gKi8KIAogCWlmIChzaXN1c2JfaXNfaW5hY3RpdmUoYywgc2lzdXNiKSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm47CiAJfQogCkBAIC04NzksNyArODYwLDcgQEAKIAlpZiAobW9kZSA9PSBDTV9FUkFTRSkgewogCQlzaXN1c2Jfc2V0aWR4cmVnb3Ioc2lzdXNiLCBTSVNDUiwgMHgwYSwgMHgyMCk7CiAJCXNpc3VzYi0+c2lzdXNiX2N1cnNvcl9zaXplX3RvID0gLTE7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTkxOSw3ICs5MDAsNyBAQAogCQlzaXN1c2ItPnNpc3VzYl9jdXJzb3Jfc2l6ZV90byAgID0gdG87CiAJfQogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogfQogCiBzdGF0aWMgaW50CkBAIC05NjEsNyArOTQyLDcgQEAKIAlzaXN1c2JfY29weV9tZW1vcnkoc2lzdXNiLCAoY2hhciAqKVNJU1VTQl9WQUREUigwLCB0KSwKIAkJCQkodTMyKVNJU1VTQl9IQUREUigwLCB0KSwgbGVuZ3RoLCAmd3JpdHRlbik7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlyZXR1cm4gMTsKIH0KQEAgLTk5NCw3ICs5NzUsNyBAQAogCS8qIHNpc3VzYi0+bG9jayBpcyBkb3duICovCiAKIAlpZiAoc2lzdXNiX2lzX2luYWN0aXZlKGMsIHNpc3VzYikpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xMDg0LDcgKzEwNjUsNyBAQAogCiAJYy0+dmNfcG9zID0gYy0+dmNfcG9zIC0gb2xkb3JpZ2luICsgYy0+dmNfb3JpZ2luOwogCi0JdXAoJnNpc3VzYi0+bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJcmV0dXJuIDE7CiB9CkBAIC0xMTA2LDcgKzEwODcsNyBAQAogCS8qIHNpc3VzYi0+bG9jayBpcyBkb3duICovCiAKIAlpZiAoc2lzdXNiX2lzX2luYWN0aXZlKGMsIHNpc3VzYikgfHwgc2lzdXNiLT5jb25fYmxhbmtlZCkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTExMTYsNyArMTA5Nyw3IEBACiAKIAlzaXN1c2ItPmNvbl9yb2xsZWRfb3ZlciA9IDA7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlyZXR1cm4gMTsKIH0KQEAgLTExMzMsNyArMTExNCw3IEBACiAKIAlmaCA9IHNpc3VzYi0+Y3VycmVudF9mb250X2hlaWdodDsKIAotCXVwKCZzaXN1c2ItPmxvY2spOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCS8qIFdlIGFyZSBxdWl0ZSB1bmZsZXhpYmxlIGFzIHJlZ2FyZHMgcmVzaXppbmcuIFRoZSB2dCBjb2RlCiAJICogaGFuZGxlcyBzaXplcyB3aGVyZSB0aGUgbGluZSBsZW5ndGggaXNuJ3QgZXF1YWwgdGhlIHBpdGNoCkBAIC0xMTY3LDcgKzExNDgsNyBAQAogCiAJaWYgKChzbG90ICE9IDAgJiYgc2xvdCAhPSAyKSB8fCAhZmgpIHsKIAkJaWYgKHVwbG9jaykKLQkJCXVwKCZzaXN1c2ItPmxvY2spOworCQkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTEzMjcsNyArMTMwOCw3IEBACiAJfQogCiAJaWYgKHVwbG9jaykKLQkJdXAoJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKIAogCWlmIChkb3JlY2FsYyAmJiBjKSB7CiAJCWludCBpLCByb3dzID0gYy0+dmNfc2Nhbl9saW5lcyAvIGZoOwpAQCAtMTM1MSw3ICsxMzMyLDcgQEAKIAogZm9udF9vcF9lcnJvcjoKIAlpZiAodXBsb2NrKQotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJcmV0dXJuIC1FSU87CiB9CkBAIC0xNDE3LDE5ICsxMzk4LDE5IEBACiAJZm9udC0+Y2hhcmNvdW50ID0gMjU2OwogCiAJaWYgKCFmb250LT5kYXRhKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAJCXJldHVybiAwOwogCX0KIAogCWlmICghc2lzdXNiLT5mb250X2JhY2t1cCkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKIAkvKiBDb3B5IDI1NiBjaGFycyBvbmx5LCBsaWtlIHZnYWNvbiAqLwogCW1lbWNweShmb250LT5kYXRhLCBzaXN1c2ItPmZvbnRfYmFja3VwLCAyNTYgKiAzMik7CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0ODYsNyArMTQ2Nyw3IEBACiAKICNkZWZpbmUgU0lTVVNCQ09ORFVNTVkJKHZvaWQgKilzaXN1c2JkdW1teWNvbl9kdW1teQogCi1jb25zdCBzdHJ1Y3QgY29uc3cgc2lzdXNiX2R1bW15X2NvbiA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29uc3cgc2lzdXNiX2R1bW15X2NvbiA9IHsKIAkub3duZXIgPQkJVEhJU19NT0RVTEUsCiAJLmNvbl9zdGFydHVwID0JCXNpc3VzYmR1bW15Y29uX3N0YXJ0dXAsCiAJLmNvbl9pbml0ID0JCXNpc3VzYmR1bW15Y29uX2luaXQsCkBAIC0xNTEyLDE0ICsxNDkzLDE0IEBACiB7CiAJaW50IGksIHJldCwgbWlub3IgPSBzaXN1c2ItPm1pbm9yOwogCi0JZG93bigmZGlzY29ubmVjdF9zZW0pOworCW11dGV4X2xvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCi0JZG93bigmc2lzdXNiLT5sb2NrKTsKKwltdXRleF9sb2NrKCZzaXN1c2ItPmxvY2spOwogCiAJLyogRXJtLi4gdGhhdCBzaG91bGQgbm90IGhhcHBlbiAqLwogCWlmIChzaXN1c2ItPmhhdmVjb25zb2xlIHx8ICFzaXN1c2ItPlNpU19QcikgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlyZXR1cm4gMTsKIAl9CiAKQEAgLTE1MjksMTUgKzE1MTAsMTUgQEAKIAlpZiAoZmlyc3QgPiBsYXN0IHx8CiAJICAgIGZpcnN0ID4gTUFYX05SX0NPTlNPTEVTIHx8CiAJICAgIGxhc3QgPiBNQVhfTlJfQ09OU09MRVMpIHsKLQkJdXAoJnNpc3VzYi0+bG9jayk7Ci0JCXVwKCZkaXNjb25uZWN0X3NlbSk7CisJCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZkaXNjb25uZWN0X211dGV4KTsKIAkJcmV0dXJuIDE7CiAJfQogCiAJLyogSWYgZ2Z4Y29yZSBub3QgaW5pdGlhbGl6ZWQgb3Igbm8gY29uc29sZXMgZ2l2ZW4sIHF1aXQgZ3JhY2lvdXNseSAqLwogCWlmICghc2lzdXNiLT5nZnhpbml0IHx8IGZpcnN0IDwgMSB8fCBsYXN0IDwgMSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE1NDcsOCArMTUyOCw4IEBACiAKIAkvKiBTZXQgdXAgdGV4dCBtb2RlIChhbmQgdXBsb2FkICBkZWZhdWx0IGZvbnQpICovCiAJaWYgKHNpc3VzYl9yZXNldF90ZXh0X21vZGUoc2lzdXNiLCAxKSkgewotCQl1cCgmc2lzdXNiLT5sb2NrKTsKLQkJdXAoJmRpc2Nvbm5lY3Rfc2VtKTsKKwkJbXV0ZXhfdW5sb2NrKCZzaXN1c2ItPmxvY2spOworCQltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCQlwcmludGsoS0VSTl9FUlIKIAkJCSJzaXN1c2J2Z2FbJWRdOiBGYWlsZWQgdG8gc2V0IHVwIHRleHQgbW9kZVxuIiwKIAkJCW1pbm9yKTsKQEAgLTE1NzEsMTYgKzE1NTIsMTYgQEAKIAogCS8qIEFsbG9jYXRlIHNjcmVlbiBidWZmZXIgKi8KIAlpZiAoIShzaXN1c2ItPnNjcmJ1ZiA9ICh1bnNpZ25lZCBsb25nKXZtYWxsb2Moc2lzdXNiLT5zY3JidWZfc2l6ZSkpKSB7Ci0JCXVwKCZzaXN1c2ItPmxvY2spOwotCQl1cCgmZGlzY29ubmVjdF9zZW0pOworCQltdXRleF91bmxvY2soJnNpc3VzYi0+bG9jayk7CisJCW11dGV4X3VubG9jaygmZGlzY29ubmVjdF9tdXRleCk7CiAJCXByaW50ayhLRVJOX0VSUgogCQkJInNpc3VzYnZnYVslZF06IEZhaWxlZCB0byBhbGxvY2F0ZSBzY3JlZW4gYnVmZmVyXG4iLAogCQkJbWlub3IpOwogCQlyZXR1cm4gMTsKIAl9CiAKLQl1cCgmc2lzdXNiLT5sb2NrKTsKLQl1cCgmZGlzY29ubmVjdF9zZW0pOworCW11dGV4X3VubG9jaygmc2lzdXNiLT5sb2NrKTsKKwltdXRleF91bmxvY2soJmRpc2Nvbm5lY3RfbXV0ZXgpOwogCiAJLyogTm93IGdyYWIgdGhlIGRlc2lyZWQgY29uc29sZShzKSAqLwogCXJldCA9IHRha2Vfb3Zlcl9jb25zb2xlKCZzaXN1c2JfY29uLCBmaXJzdCAtIDEsIGxhc3QgLSAxLCAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9pbml0LmMgYi9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2JfaW5pdC5jCmluZGV4IDA0NGZhNDQuLjk2OGYwZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9pbml0LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX2luaXQuYwpAQCAtNzQsNiArNzQsNyBAQAogLyogICAgICAgICAgICBIRUxQRVI6IEdldCBNb2RlSUQgICAgICAgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNpZiAwCiB1bnNpZ25lZCBzaG9ydAogU2lTVVNCX0dldE1vZGVJRChpbnQgSERpc3BsYXksIGludCBWRGlzcGxheSwgaW50IERlcHRoKQogewpAQCAtMTU3LDYgKzE1OCw3IEBACiAKIAlyZXR1cm4gTW9kZUluZGV4OwogfQorI2VuZGlmICAvKiAgMCAgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qICAgICAgICAgIEhFTFBFUjogU2V0UmVnLCBHZXRSZWcgICAgICAgICAgICovCkBAIC0yMzMsNyArMjM1LDcgQEAKIC8qICAgICAgICBIRUxQRVI6IEluaXQgUG9ydCBBZGRyZXNzZXMgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkCitzdGF0aWMgdm9pZAogU2lTVVNCUmVnSW5pdChzdHJ1Y3QgU2lTX1ByaXZhdGUgKlNpU19QciwgdW5zaWduZWQgbG9uZyBCYXNlQWRkcikKIHsKIAlTaVNfUHItPlNpU19QM2M0ID0gQmFzZUFkZHIgKyAweDE0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX2luaXQuaCBiL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9pbml0LmgKaW5kZXggNWIxMTU3Ny4uZjA1ZjgzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX2luaXQuaAorKysgYi9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2JfaW5pdC5oCkBAIC02OTAsNyArNjkwLDcgQEAKICAgIDB4NDF9fSAgIC8qIDB4NTQgKi8KIH07CiAKLXN0YXRpYyBzdHJ1Y3QgU2lTX1ZDTEtEYXRhIFNpU1VTQl9WQ0xLRGF0YVtdID0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgU2lTX1ZDTEtEYXRhIFNpU1VTQl9WQ0xLRGF0YVtdID0KIHsKIAl7IDB4MWIsMHhlMSwgMjV9LCAvKiAweDAwICovCiAJeyAweDRlLDB4ZTQsIDI4fSwgLyogMHgwMSAqLwpAQCAtODA4LDggKzgwOCw4IEBACiAJeyAweDJiLDB4YzIsIDM1fSAgLyogMHg3MSA3NjhANTc2QDYwICovCiB9OwogCi12b2lkCQlTaVNVU0JSZWdJbml0KHN0cnVjdCBTaVNfUHJpdmF0ZSAqU2lTX1ByLCB1bnNpZ25lZCBsb25nIEJhc2VBZGRyKTsKLXVuc2lnbmVkIHNob3J0CVNpU1VTQl9HZXRNb2RlSUQoaW50IEhEaXNwbGF5LCBpbnQgVkRpc3BsYXksIGludCBEZXB0aCk7CitleHRlcm4gc3RydWN0IG11dGV4IGRpc2Nvbm5lY3RfbXV0ZXg7CisKIGludAkJU2lTVVNCU2V0TW9kZShzdHJ1Y3QgU2lTX1ByaXZhdGUgKlNpU19QciwgdW5zaWduZWQgc2hvcnQgTW9kZU5vKTsKIGludAkJU2lTVVNCU2V0VkVTQU1vZGUoc3RydWN0IFNpU19Qcml2YXRlICpTaVNfUHIsIHVuc2lnbmVkIHNob3J0IFZNb2RlTm8pOwogCkBAIC04MjYsNSArODI2LDE5IEBACiBleHRlcm4gaW50CXNpc3VzYl9zZXRpZHhyZWdhbmQoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCBpbnQgcG9ydCwKIAkJCQkJdTggaWR4LCB1OCBteWFuZCk7CiAKK3ZvaWQgc2lzdXNiX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZik7CitpbnQgc2lzdXNiX3dyaXRlYihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIHUzMiBhZHIsIHU4IGRhdGEpOworaW50IHNpc3VzYl9yZWFkYihzdHJ1Y3Qgc2lzdXNiX3VzYl9kYXRhICpzaXN1c2IsIHUzMiBhZHIsIHU4ICpkYXRhKTsKK2ludCBzaXN1c2JfY29weV9tZW1vcnkoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiLCBjaGFyICpzcmMsCisJCSAgICAgICB1MzIgZGVzdCwgaW50IGxlbmd0aCwgc2l6ZV90ICpieXRlc193cml0dGVuKTsKK2ludCBzaXN1c2JfcmVzZXRfdGV4dF9tb2RlKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IGluaXQpOworaW50IHNpc3VzYmNvbl9kb19mb250X29wKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IHNldCwgaW50IHNsb3QsCisJCQkgdTggKmFyZywgaW50IGNtYXBzeiwgaW50IGNoNTEyLCBpbnQgZG9yZWNhbGMsCisJCQkgc3RydWN0IHZjX2RhdGEgKmMsIGludCBmaCwgaW50IHVwbG9jayk7Cit2b2lkIHNpc3VzYl9zZXRfY3Vyc29yKHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgdW5zaWduZWQgaW50IGxvY2F0aW9uKTsKK2ludCBzaXN1c2JfY29uc29sZV9pbml0KHN0cnVjdCBzaXN1c2JfdXNiX2RhdGEgKnNpc3VzYiwgaW50IGZpcnN0LCBpbnQgbGFzdCk7Cit2b2lkIHNpc3VzYl9jb25zb2xlX2V4aXQoc3RydWN0IHNpc3VzYl91c2JfZGF0YSAqc2lzdXNiKTsKK3ZvaWQgc2lzdXNiX2luaXRfY29uY29kZSh2b2lkKTsKKwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9zdHJ1Y3QuaCBiL2RyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYl9zdHJ1Y3QuaAppbmRleCA5NGVkZDQ3Li5mMzI1ZWNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3Npc3VzYnZnYS9zaXN1c2Jfc3RydWN0LmgKKysrIGIvZHJpdmVycy91c2IvbWlzYy9zaXN1c2J2Z2Evc2lzdXNiX3N0cnVjdC5oCkBAIC0xNjEsNyArMTYxLDcgQEAKIAljb25zdCBzdHJ1Y3QgU2lTX0V4dAkJKlNpU19FTW9kZUlEVGFibGU7CiAJY29uc3Qgc3RydWN0IFNpU19FeHQyCQkqU2lTX1JlZkluZGV4OwogCWNvbnN0IHN0cnVjdCBTaVNfQ1JUMVRhYmxlCSpTaVNfQ1JUMVRhYmxlOwotCXN0cnVjdCBTaVNfVkNMS0RhdGEJCSpTaVNfVkNMS0RhdGE7CisJY29uc3Qgc3RydWN0IFNpU19WQ0xLRGF0YQkqU2lTX1ZDTEtEYXRhOwogCWNvbnN0IHN0cnVjdCBTaVNfTW9kZVJlc0luZm8JKlNpU19Nb2RlUmVzSW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNidGVzdC5jIGIvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKaW5kZXggY2NjNWU4Mi4uODFiYTE0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMKQEAgLTgwMiw3ICs4MDIsOSBAQAogCiAJCQkJaWYgKHUgPT0gdXJiIHx8ICF1LT5kZXYpCiAJCQkJCWNvbnRpbnVlOworCQkJCXNwaW5fdW5sb2NrKCZjdHgtPmxvY2spOwogCQkJCXN0YXR1cyA9IHVzYl91bmxpbmtfdXJiICh1KTsKKwkJCQlzcGluX2xvY2soJmN0eC0+bG9jayk7CiAJCQkJc3dpdGNoIChzdGF0dXMpIHsKIAkJCQljYXNlIC1FSU5QUk9HUkVTUzoKIAkJCQljYXNlIC1FQlVTWToKQEAgLTEzMzUsNyArMTMzNyw5IEBACiAJdW5zaWduZWQJCXBlbmRpbmc7CiAJc3BpbmxvY2tfdAkJbG9jazsKIAlzdHJ1Y3QgY29tcGxldGlvbglkb25lOworCWludAkJCXN1Ym1pdF9lcnJvcjsKIAl1bnNpZ25lZCBsb25nCQllcnJvcnM7CisJdW5zaWduZWQgbG9uZwkJcGFja2V0X2NvdW50OwogCXN0cnVjdCB1c2J0ZXN0X2RldgkqZGV2OwogfTsKIApAQCAtMTM0NiwxMCArMTM1MCwxNCBAQAogCXNwaW5fbG9jaygmY3R4LT5sb2NrKTsKIAljdHgtPmNvdW50LS07CiAKKwljdHgtPnBhY2tldF9jb3VudCArPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOwogCWlmICh1cmItPmVycm9yX2NvdW50ID4gMCkKIAkJY3R4LT5lcnJvcnMgKz0gdXJiLT5lcnJvcl9jb3VudDsKKwllbHNlIGlmICh1cmItPnN0YXR1cyAhPSAwKQorCQljdHgtPmVycm9ycyArPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOwogCi0JaWYgKHVyYi0+c3RhdHVzID09IDAgJiYgY3R4LT5jb3VudCA+IChjdHgtPnBlbmRpbmcgLSAxKSkgeworCWlmICh1cmItPnN0YXR1cyA9PSAwICYmIGN0eC0+Y291bnQgPiAoY3R4LT5wZW5kaW5nIC0gMSkKKwkJCSYmICFjdHgtPnN1Ym1pdF9lcnJvcikgewogCQlpbnQgc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIgKHVyYiwgR0ZQX0FUT01JQyk7CiAJCXN3aXRjaCAoc3RhdHVzKSB7CiAJCWNhc2UgMDoKQEAgLTEzNjAsNiArMTM2OCw4IEBACiAJCQkJCXN0YXR1cyk7CiAJCQkvKiBGQUxMVEhST1VHSCAqLwogCQljYXNlIC1FTk9ERVY6CQkJLyogZGlzY29ubmVjdGVkICovCisJCWNhc2UgLUVTSFVURE9XTjoJCS8qIGVuZHBvaW50IGRpc2FibGVkICovCisJCQljdHgtPnN1Ym1pdF9lcnJvciA9IDE7CiAJCQlicmVhazsKIAkJfQogCX0KQEAgLTEzNjksOCArMTM3OSw4IEBACiAJaWYgKGN0eC0+cGVuZGluZyA9PSAwKSB7CiAJCWlmIChjdHgtPmVycm9ycykKIAkJCWRldl9kYmcgKCZjdHgtPmRldi0+aW50Zi0+ZGV2LAotCQkJCSJpc28gdGVzdCwgJWx1IGVycm9yc1xuIiwKLQkJCQljdHgtPmVycm9ycyk7CisJCQkJImlzbyB0ZXN0LCAlbHUgZXJyb3JzIG91dCBvZiAlbHVcbiIsCisJCQkJY3R4LT5lcnJvcnMsIGN0eC0+cGFja2V0X2NvdW50KTsKIAkJY29tcGxldGUgKCZjdHgtPmRvbmUpOwogCX0KIGRvbmU6CkBAIC0xNDMxLDE1ICsxNDQxLDE0IEBACiAJc3RydWN0IHVzYl9kZXZpY2UJKnVkZXY7CiAJdW5zaWduZWQJCWk7CiAJdW5zaWduZWQgbG9uZwkJcGFja2V0cyA9IDA7Ci0JaW50CQkJc3RhdHVzOworCWludAkJCXN0YXR1cyA9IDA7CiAJc3RydWN0IHVyYgkJKnVyYnNbMTBdOwkvKiBGSVhNRSBubyBsaW1pdCAqLwogCiAJaWYgKHBhcmFtLT5zZ2xlbiA+IDEwKQogCQlyZXR1cm4gLUVET007CiAKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZiBjb250ZXh0KTsKIAljb250ZXh0LmNvdW50ID0gcGFyYW0tPml0ZXJhdGlvbnMgKiBwYXJhbS0+c2dsZW47Ci0JY29udGV4dC5wZW5kaW5nID0gcGFyYW0tPnNnbGVuOwotCWNvbnRleHQuZXJyb3JzID0gMDsKIAljb250ZXh0LmRldiA9IGRldjsKIAlpbml0X2NvbXBsZXRpb24gKCZjb250ZXh0LmRvbmUpOwogCXNwaW5fbG9ja19pbml0ICgmY29udGV4dC5sb2NrKTsKQEAgLTE0NzEsNiArMTQ4MCw3IEBACiAKIAlzcGluX2xvY2tfaXJxICgmY29udGV4dC5sb2NrKTsKIAlmb3IgKGkgPSAwOyBpIDwgcGFyYW0tPnNnbGVuOyBpKyspIHsKKwkJKytjb250ZXh0LnBlbmRpbmc7CiAJCXN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiICh1cmJzIFtpXSwgU0xBQl9BVE9NSUMpOwogCQlpZiAoc3RhdHVzIDwgMCkgewogCQkJRVJST1IgKGRldiwgInN1Ym1pdCBpc29bJWRdLCBlcnJvciAlZFxuIiwgaSwgc3RhdHVzKTsKQEAgLTE0ODEsMTIgKzE0OTEsMjYgQEAKIAogCQkJc2ltcGxlX2ZyZWVfdXJiICh1cmJzIFtpXSk7CiAJCQljb250ZXh0LnBlbmRpbmctLTsKKwkJCWNvbnRleHQuc3VibWl0X2Vycm9yID0gMTsKKwkJCWJyZWFrOwogCQl9CiAJfQogCXNwaW5fdW5sb2NrX2lycSAoJmNvbnRleHQubG9jayk7CiAKIAl3YWl0X2Zvcl9jb21wbGV0aW9uICgmY29udGV4dC5kb25lKTsKLQlyZXR1cm4gMDsKKworCS8qCisJICogSXNvY2hyb25vdXMgdHJhbnNmZXJzIGFyZSBleHBlY3RlZCB0byBmYWlsIHNvbWV0aW1lcy4gIEFzIGFuCisJICogYXJiaXRyYXJ5IGxpbWl0LCB3ZSB3aWxsIHJlcG9ydCBhbiBlcnJvciBpZiBhbnkgc3VibWlzc2lvbnMKKwkgKiBmYWlsIG9yIGlmIHRoZSB0cmFuc2ZlciBmYWlsdXJlIHJhdGUgaXMgPiAxMCUuCisJICovCisJaWYgKHN0YXR1cyAhPSAwKQorCQk7CisJZWxzZSBpZiAoY29udGV4dC5zdWJtaXRfZXJyb3IpCisJCXN0YXR1cyA9IC1FQUNDRVM7CisJZWxzZSBpZiAoY29udGV4dC5lcnJvcnMgPiBjb250ZXh0LnBhY2tldF9jb3VudCAvIDEwKQorCQlzdGF0dXMgPSAtRUlPOworCXJldHVybiBzdGF0dXM7CiAKIGZhaWw6CiAJZm9yIChpID0gMDsgaSA8IHBhcmFtLT5zZ2xlbjsgaSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tb24vbW9uX2RtYS5jIGIvZHJpdmVycy91c2IvbW9uL21vbl9kbWEuYwppbmRleCAwYTEzNjdiLi5kZGNmYzAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tb24vbW9uX2RtYS5jCisrKyBiL2RyaXZlcnMvdXNiL21vbi9tb25fZG1hLmMKQEAgLTEzLDcgKzEzLDEwIEBACiAjaW5jbHVkZSA8bGludXgvdXNiLmg+CS8qIE9ubHkgbmVlZGVkIGZvciBkZWNsYXJhdGlvbnMgaW4gdXNiX21vbi5oICovCiAjaW5jbHVkZSAidXNiX21vbi5oIgogCi0jaWZkZWYgX19pMzg2X18JCS8qIENPTkZJR19BUkNIX0kzODYgZG9lcyBub3QgZXhpdCAqLworLyoKKyAqIFBDLWNvbXBhdGlibGVzLCBhcmUsIGZvcnR1bmF0ZWx5LCBzdWZmaWNpZW50bHkgY2FjaGUtY29oZXJlbnQgZm9yIHRoaXMuCisgKi8KKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIC8qIENPTkZJR19BUkNIX0kzODYgZG9lc24ndCBleGl0ICovCiAjZGVmaW5lIE1PTl9IQVNfVU5NQVAgMQogCiAjZGVmaW5lIHBoeXNfdG9fcGFnZShwaHlzKQlwZm5fdG9fcGFnZSgocGh5cykgPj4gUEFHRV9TSElGVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21vbi9tb25fbWFpbi5jIGIvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKaW5kZXggNmVjYzI3My4uMjc1YTY2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKKysrIGIvZHJpdmVycy91c2IvbW9uL21vbl9tYWluLmMKQEAgLTk3LDYgKzk3LDcgQEAKIAlpZiAobWJ1cy0+bnJlYWRlcnMgPT0gMCkKIAkJZ290byBvdXRfbG9ja2VkOwogCisJbWJ1cy0+Y250X2V2ZW50cysrOwogCWxpc3RfZm9yX2VhY2ggKHBvcywgJm1idXMtPnJfbGlzdCkgewogCQlyID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBtb25fcmVhZGVyLCByX2xpbmspOwogCQlyLT5ybmZfc3VibWl0KHItPnJfZGF0YSwgdXJiKTsKQEAgLTExMywyMCArMTE0LDMyIEBACiAKIC8qCiAgKi8KLXN0YXRpYyB2b2lkIG1vbl9zdWJtaXRfZXJyb3Ioc3RydWN0IHVzYl9idXMgKnVidXMsIHN0cnVjdCB1cmIgKnVyYiwgaW50IGVycikKK3N0YXRpYyB2b2lkIG1vbl9zdWJtaXRfZXJyb3Ioc3RydWN0IHVzYl9idXMgKnVidXMsIHN0cnVjdCB1cmIgKnVyYiwgaW50IGVycm9yKQogewogCXN0cnVjdCBtb25fYnVzICptYnVzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGxpc3RfaGVhZCAqcG9zOworCXN0cnVjdCBtb25fcmVhZGVyICpyOwogCiAJbWJ1cyA9IHVidXMtPm1vbl9idXM7CiAJaWYgKG1idXMgPT0gTlVMTCkKIAkJZ290byBvdXRfdW5sb2NrZWQ7CiAKLQkvKgotCSAqIFhYWCBDYXB0dXJlIHRoZSBlcnJvciBjb2RlIGFuZCB0aGUgJ0UnIGV2ZW50LgotCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZtYnVzLT5sb2NrLCBmbGFncyk7CisJaWYgKG1idXMtPm5yZWFkZXJzID09IDApCisJCWdvdG8gb3V0X2xvY2tlZDsKIAorCW1idXMtPmNudF9ldmVudHMrKzsKKwlsaXN0X2Zvcl9lYWNoIChwb3MsICZtYnVzLT5yX2xpc3QpIHsKKwkJciA9IGxpc3RfZW50cnkocG9zLCBzdHJ1Y3QgbW9uX3JlYWRlciwgcl9saW5rKTsKKwkJci0+cm5mX2Vycm9yKHItPnJfZGF0YSwgdXJiLCBlcnJvcik7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbWJ1cy0+bG9jaywgZmxhZ3MpOwogCXJldHVybjsKIAorb3V0X2xvY2tlZDoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtYnVzLT5sb2NrLCBmbGFncyk7CiBvdXRfdW5sb2NrZWQ6CiAJcmV0dXJuOwogfQpAQCAtMTUyLDYgKzE2NSw3IEBACiAJfQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJm1idXMtPmxvY2ssIGZsYWdzKTsKKwltYnVzLT5jbnRfZXZlbnRzKys7CiAJbGlzdF9mb3JfZWFjaCAocG9zLCAmbWJ1cy0+cl9saXN0KSB7CiAJCXIgPSBsaXN0X2VudHJ5KHBvcywgc3RydWN0IG1vbl9yZWFkZXIsIHJfbGluayk7CiAJCXItPnJuZl9jb21wbGV0ZShyLT5yX2RhdGEsIHVyYik7CkBAIC0xNjMsNyArMTc3LDYgQEAKIAogLyoKICAqIFN0b3AgbW9uaXRvcmluZy4KLSAqIE9idmlvdXNseSB0aGlzIG11c3QgYmUgd2VsbCBsb2NrZWQsIHNvIG5vIG5lZWQgdG8gcGxheSB3aXRoIG1iJ3MuCiAgKi8KIHN0YXRpYyB2b2lkIG1vbl9zdG9wKHN0cnVjdCBtb25fYnVzICptYnVzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbW9uL21vbl9zdGF0LmMgYi9kcml2ZXJzL3VzYi9tb24vbW9uX3N0YXQuYwppbmRleCA2ZTRiMTY1Li4xZmUwMWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tb24vbW9uX3N0YXQuYworKysgYi9kcml2ZXJzL3VzYi9tb24vbW9uX3N0YXQuYwpAQCAtMzEsOCArMzEsOCBAQAogCW1idXMgPSBpbm9kZS0+dS5nZW5lcmljX2lwOwogCiAJc3AtPnNsZW4gPSBzbnByaW50ZihzcC0+c3RyLCBTVEFUX0JVRl9TSVpFLAotCSAgICAibnJlYWRlcnMgJWQgdGV4dF9sb3N0ICV1XG4iLAotCSAgICBtYnVzLT5ucmVhZGVycywgbWJ1cy0+Y250X3RleHRfbG9zdCk7CisJICAgICJucmVhZGVycyAlZCBldmVudHMgJXUgdGV4dF9sb3N0ICV1XG4iLAorCSAgICBtYnVzLT5ucmVhZGVycywgbWJ1cy0+Y250X2V2ZW50cywgbWJ1cy0+Y250X3RleHRfbG9zdCk7CiAKIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBzcDsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21vbi9tb25fdGV4dC5jIGIvZHJpdmVycy91c2IvbW9uL21vbl90ZXh0LmMKaW5kZXggYWMwNDNlYy4uZTAyYzFhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbW9uL21vbl90ZXh0LmMKKysrIGIvZHJpdmVycy91c2IvbW9uL21vbl90ZXh0LmMKQEAgLTI2LDEwICsyNiwxMyBAQAogCiAvKgogICogVGhpcyBsaW1pdCBleGlzdHMgdG8gcHJldmVudCBPT01zIHdoZW4gdGhlIHVzZXIgcHJvY2VzcyBzdG9wcyByZWFkaW5nLgorICogSWYgdXNibW9uIHdlcmUgYXZhaWxhYmxlIHRvIHVucHJpdmlsZWdlZCBwcm9jZXNzZXMsIGl0IG1pZ2h0IGJlIG9wZW4KKyAqIHRvIGEgbG9jYWwgRG9TLiBCdXQgd2UgaGF2ZSB0byBrZWVwIHRvIHJvb3QgaW4gb3JkZXIgdG8gcHJldmVudAorICogcGFzc3dvcmQgc25pZmZpbmcgZnJvbSBISUQgZGV2aWNlcy4KICAqLwotI2RlZmluZSBFVkVOVF9NQVggIDI1CisjZGVmaW5lIEVWRU5UX01BWCAgKDIqUEFHRV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBtb25fZXZlbnRfdGV4dCkpCiAKLSNkZWZpbmUgUFJJTlRGX0RGTCAgMTMwCisjZGVmaW5lIFBSSU5URl9ERkwgIDE2MAogCiBzdHJ1Y3QgbW9uX2V2ZW50X3RleHQgewogCXN0cnVjdCBsaXN0X2hlYWQgZV9saW5rOwpAQCAtMTExLDcgKzExNCw3IEBACiAJICogbnVtYmVyIG9mIGNvcm5lciBjYXNlcywgYnV0IGl0IHNlZW1zIHRoYXQgdGhlIGZvbGxvd2luZyBpcwogCSAqIG1vcmUgb3IgbGVzcyBzYWZlLgogCSAqCi0JICogV2UgZG8gbm90IGV2ZW4gdHJ5IHRvIGxvb2sgdHJhbnNmZXJfYnVmZmVyLCBiZWNhdXNlIGl0IGNhbgorCSAqIFdlIGRvIG5vdCBldmVuIHRyeSB0byBsb29rIGF0IHRyYW5zZmVyX2J1ZmZlciwgYmVjYXVzZSBpdCBjYW4KIAkgKiBjb250YWluIG5vbi1OVUxMIGdhcmJhZ2UgaW4gY2FzZSB0aGUgdXBwZXIgbGV2ZWwgcHJvbWlzZWQgdG8KIAkgKiBzZXQgRE1BIGZvciB0aGUgSENELgogCSAqLwpAQCAtMTc5LDYgKzE4MiwzMiBAQAogCW1vbl90ZXh0X2V2ZW50KHJwLCB1cmIsICdDJyk7CiB9CiAKK3N0YXRpYyB2b2lkIG1vbl90ZXh0X2Vycm9yKHZvaWQgKmRhdGEsIHN0cnVjdCB1cmIgKnVyYiwgaW50IGVycm9yKQoreworCXN0cnVjdCBtb25fcmVhZGVyX3RleHQgKnJwID0gZGF0YTsKKwlzdHJ1Y3QgbW9uX2V2ZW50X3RleHQgKmVwOworCisJaWYgKHJwLT5uZXZlbnRzID49IEVWRU5UX01BWCB8fAorCSAgICAoZXAgPSBrbWVtX2NhY2hlX2FsbG9jKHJwLT5lX3NsYWIsIFNMQUJfQVRPTUlDKSkgPT0gTlVMTCkgeworCQlycC0+ci5tX2J1cy0+Y250X3RleHRfbG9zdCsrOworCQlyZXR1cm47CisJfQorCisJZXAtPnR5cGUgPSAnRSc7CisJZXAtPnBpcGUgPSB1cmItPnBpcGU7CisJZXAtPmlkID0gKHVuc2lnbmVkIGxvbmcpIHVyYjsKKwllcC0+dHN0YW1wID0gMDsKKwllcC0+bGVuZ3RoID0gMDsKKwllcC0+c3RhdHVzID0gZXJyb3I7CisKKwllcC0+c2V0dXBfZmxhZyA9ICctJzsKKwllcC0+ZGF0YV9mbGFnID0gJ0UnOworCisJcnAtPm5ldmVudHMrKzsKKwlsaXN0X2FkZF90YWlsKCZlcC0+ZV9saW5rLCAmcnAtPmVfbGlzdCk7CisJd2FrZV91cCgmcnAtPndhaXQpOworfQorCiAvKgogICogRmV0Y2ggbmV4dCBldmVudCBmcm9tIHRoZSBjaXJjdWxhciBidWZmZXIuCiAgKi8KQEAgLTIzMiw2ICsyNjEsNyBAQAogCXJwLT5yLm1fYnVzID0gbWJ1czsKIAlycC0+ci5yX2RhdGEgPSBycDsKIAlycC0+ci5ybmZfc3VibWl0ID0gbW9uX3RleHRfc3VibWl0OworCXJwLT5yLnJuZl9lcnJvciA9IG1vbl90ZXh0X2Vycm9yOwogCXJwLT5yLnJuZl9jb21wbGV0ZSA9IG1vbl90ZXh0X2NvbXBsZXRlOwogCiAJc25wcmludGYocnAtPnNsYWJfbmFtZSwgU0xBQl9OQU1FX1NaLCAibW9uJWR0XyVseCIsIHVidXMtPmJ1c251bSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21vbi91c2JfbW9uLmggYi9kcml2ZXJzL3VzYi9tb24vdXNiX21vbi5oCmluZGV4IDhlMDYxM2MuLjMzNjc4YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21vbi91c2JfbW9uLmgKKysrIGIvZHJpdmVycy91c2IvbW9uL3VzYl9tb24uaApAQCAtMjcsNiArMjcsNyBAQAogCXN0cnVjdCBrcmVmIHJlZjsJCS8qIFVuZGVyIG1vbl9sb2NrICovCiAKIAkvKiBTdGF0cyAqLworCXVuc2lnbmVkIGludCBjbnRfZXZlbnRzOwogCXVuc2lnbmVkIGludCBjbnRfdGV4dF9sb3N0OwogfTsKIApAQCAtMzksNiArNDAsNyBAQAogCXZvaWQgKnJfZGF0YTsJCS8qIFVzZSBjb250YWluZXJfb2YgaW5zdGVhZD8gKi8KIAogCXZvaWQgKCpybmZfc3VibWl0KSh2b2lkICpkYXRhLCBzdHJ1Y3QgdXJiICp1cmIpOworCXZvaWQgKCpybmZfZXJyb3IpKHZvaWQgKmRhdGEsIHN0cnVjdCB1cmIgKnVyYiwgaW50IGVycm9yKTsKIAl2b2lkICgqcm5mX2NvbXBsZXRlKSh2b2lkICpkYXRhLCBzdHJ1Y3QgdXJiICp1cmIpOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbmV0L2FzaXguYyBiL2RyaXZlcnMvdXNiL25ldC9hc2l4LmMKaW5kZXggMTJiNTk5YS4uMzcxMTFhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbmV0L2FzaXguYworKysgYi9kcml2ZXJzL3VzYi9uZXQvYXNpeC5jCkBAIC05MTIsNiArOTEyLDEwIEBACiAgICAgICAgIFVTQl9ERVZJQ0UgKDB4MGI5NSwgMHg3NzIwKSwKICAgICAgICAgLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICZheDg4NzcyX2luZm8sCiB9LCB7CisJLy8gQVNJWCBBWDg4MTc4IDEwLzEwMC8xMDAwCisJVVNCX0RFVklDRSAoMHgwYjk1LCAweDE3ODApLAorCS5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSAmYXg4ODc3Ml9pbmZvLAorfSwgewogCS8vIExpbmtzeXMgVVNCMjAwTSBSZXYgMgogCVVTQl9ERVZJQ0UgKDB4MTNiMSwgMHgwMDE4KSwKIAkuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgJmF4ODg3NzJfaW5mbywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL25ldC9jZGNfZXRoZXIuYyBiL2RyaXZlcnMvdXNiL25ldC9jZGNfZXRoZXIuYwppbmRleCA2M2YxZjNiLi5lZmQxOTViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9uZXQvY2RjX2V0aGVyLmMKKysrIGIvZHJpdmVycy91c2IvbmV0L2NkY19ldGhlci5jCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAjaW5jbHVkZSA8bGludXgvbWlpLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiX2NkYy5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9jZGMuaD4KIAogI2luY2x1ZGUgInVzYm5ldC5oIgogCkBAIC00NTUsNiArNDU1LDE4IEBACiAJLmRyaXZlcl9pbmZvCQk9IDAsCiB9LAogCisvKiBPbHltcHVzIGhhcyBzb21lIG1vZGVscyB3aXRoIGEgWmF1cnVzLWNvbXBhdGlibGUgb3B0aW9uLgorICogUi0xMDAwIHVzZXMgYSBGcmVlU2NhbGUgaS5NWEwgY3B1IChBUk12NFQpCisgKi8KK3sKKwkubWF0Y2hfZmxhZ3MgICAgPSAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX0lORk8KKwkJIHwgVVNCX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0UsCisJLmlkVmVuZG9yICAgICAgICAgICAgICAgPSAweDA3QjQsCisJLmlkUHJvZHVjdCAgICAgICAgICAgICAgPSAweDBGMDIsCS8qIFItMTAwMCAqLworCVpBVVJVU19NQVNURVJfSU5URVJGQUNFLAorCS5kcml2ZXJfaW5mbwkJPSAwLAorfSwKKwogLyoKICAqIFdISVRFTElTVCEhIQogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL25ldC9wZWdhc3VzLmMgYi9kcml2ZXJzL3VzYi9uZXQvcGVnYXN1cy5jCmluZGV4IDc2ODM5MjYuLmFiMjFmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL25ldC9wZWdhc3VzLmMKKysrIGIvZHJpdmVycy91c2IvbmV0L3BlZ2FzdXMuYwpAQCAtMTYzLDYgKzE2Myw4IEBACiAKIAkvKiB1c2luZyBBVE9NSUMsIHdlJ2QgbmV2ZXIgd2FrZSB1cCBpZiB3ZSBzbGVwdCAqLwogCWlmICgocmV0ID0gdXNiX3N1Ym1pdF91cmIocGVnYXN1cy0+Y3RybF91cmIsIEdGUF9BVE9NSUMpKSkgeworCQlpZiAocmV0ID09IC1FTk9ERVYpCisJCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CiAJCWlmIChuZXRpZl9tc2dfZHJ2KHBlZ2FzdXMpKQogCQkJZGV2X2VycigmcGVnYXN1cy0+aW50Zi0+ZGV2LCAiJXMsIHN0YXR1cyAlZFxuIiwKIAkJCQkJX19GVU5DVElPTl9fLCByZXQpOwpAQCAtMjE3LDYgKzIxOSw4IEBACiAJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOwogCiAJaWYgKChyZXQgPSB1c2Jfc3VibWl0X3VyYihwZWdhc3VzLT5jdHJsX3VyYiwgR0ZQX0FUT01JQykpKSB7CisJCWlmIChyZXQgPT0gLUVOT0RFVikKKwkJCW5ldGlmX2RldmljZV9kZXRhY2gocGVnYXN1cy0+bmV0KTsKIAkJaWYgKG5ldGlmX21zZ19kcnYocGVnYXN1cykpCiAJCQlkZXZfZXJyKCZwZWdhc3VzLT5pbnRmLT5kZXYsICIlcywgc3RhdHVzICVkXG4iLAogCQkJCQlfX0ZVTkNUSU9OX18sIHJldCk7CkBAIC0yNjgsNiArMjcyLDggQEAKIAlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBUSUJMRSk7CiAKIAlpZiAoKHJldCA9IHVzYl9zdWJtaXRfdXJiKHBlZ2FzdXMtPmN0cmxfdXJiLCBHRlBfQVRPTUlDKSkpIHsKKwkJaWYgKHJldCA9PSAtRU5PREVWKQorCQkJbmV0aWZfZGV2aWNlX2RldGFjaChwZWdhc3VzLT5uZXQpOwogCQlpZiAobmV0aWZfbXNnX2RydihwZWdhc3VzKSkKIAkJCWRldl9lcnIoJnBlZ2FzdXMtPmludGYtPmRldiwgIiVzLCBzdGF0dXMgJWRcbiIsCiAJCQkJCV9fRlVOQ1RJT05fXywgcmV0KTsKQEAgLTI5OCwxMCArMzA0LDEzIEBACiAJCQkgICAgIChjaGFyICopICZwZWdhc3VzLT5kciwKIAkJCSAgICAgcGVnYXN1cy0+ZXRoX3JlZ3MsIDMsIGN0cmxfY2FsbGJhY2ssIHBlZ2FzdXMpOwogCi0JaWYgKChyZXQgPSB1c2Jfc3VibWl0X3VyYihwZWdhc3VzLT5jdHJsX3VyYiwgR0ZQX0FUT01JQykpKQorCWlmICgocmV0ID0gdXNiX3N1Ym1pdF91cmIocGVnYXN1cy0+Y3RybF91cmIsIEdGUF9BVE9NSUMpKSkgeworCQlpZiAocmV0ID09IC1FTk9ERVYpCisJCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CiAJCWlmIChuZXRpZl9tc2dfZHJ2KHBlZ2FzdXMpKQogCQkJZGV2X2VycigmcGVnYXN1cy0+aW50Zi0+ZGV2LCAiJXMsIHN0YXR1cyAlZFxuIiwKIAkJCQkJX19GVU5DVElPTl9fLCByZXQpOworCX0KIAogCXJldHVybiByZXQ7CiB9CkBAIC02OTIsNyArNzAxLDEwIEBACiAJCQkgIHVzYl9yY3ZidWxrcGlwZShwZWdhc3VzLT51c2IsIDEpLAogCQkJICBwZWdhc3VzLT5yeF9za2ItPmRhdGEsIFBFR0FTVVNfTVRVICsgOCwKIAkJCSAgcmVhZF9idWxrX2NhbGxiYWNrLCBwZWdhc3VzKTsKLQlpZiAodXNiX3N1Ym1pdF91cmIocGVnYXN1cy0+cnhfdXJiLCBHRlBfQVRPTUlDKSkgeworCXJ4X3N0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKHBlZ2FzdXMtPnJ4X3VyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHJ4X3N0YXR1cyA9PSAtRU5PREVWKQorCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CisJZWxzZSBpZiAocnhfc3RhdHVzKSB7CiAJCXBlZ2FzdXMtPmZsYWdzIHw9IFBFR0FTVVNfUlhfVVJCX0ZBSUw7CiAJCWdvdG8gdGxfc2NoZWQ7CiAJfSBlbHNlIHsKQEAgLTcwOSw2ICs3MjEsNyBAQAogewogCXBlZ2FzdXNfdCAqcGVnYXN1czsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBzdGF0dXM7CiAKIAlwZWdhc3VzID0gKHBlZ2FzdXNfdCAqKSBkYXRhOwogCWlmIChwZWdhc3VzLT5mbGFncyAmIFBFR0FTVVNfVU5QTFVHKQpAQCAtNzM0LDcgKzc0NywxMCBAQAogCQkJICBwZWdhc3VzLT5yeF9za2ItPmRhdGEsIFBFR0FTVVNfTVRVICsgOCwKIAkJCSAgcmVhZF9idWxrX2NhbGxiYWNrLCBwZWdhc3VzKTsKIHRyeV9hZ2FpbjoKLQlpZiAodXNiX3N1Ym1pdF91cmIocGVnYXN1cy0+cnhfdXJiLCBHRlBfQVRPTUlDKSkgeworCXN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKHBlZ2FzdXMtPnJ4X3VyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHN0YXR1cyA9PSAtRU5PREVWKQorCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CisJZWxzZSBpZiAoc3RhdHVzKSB7CiAJCXBlZ2FzdXMtPmZsYWdzIHw9IFBFR0FTVVNfUlhfVVJCX0ZBSUw7CiAJCXRhc2tsZXRfc2NoZWR1bGUoJnBlZ2FzdXMtPnJ4X3RsKTsKIAl9IGVsc2UgewpAQCAtODM2LDYgKzg1Miw4IEBACiAJfQogCiAJc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIodXJiLCBTTEFCX0FUT01JQyk7CisJaWYgKHN0YXR1cyA9PSAtRU5PREVWKQorCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CiAJaWYgKHN0YXR1cyAmJiBuZXRpZl9tc2dfdGltZXIocGVnYXN1cykpCiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbid0IHJlc3VibWl0IGludGVycnVwdCB1cmIsICVkXG4iLAogCQkJCW5ldC0+bmFtZSwgc3RhdHVzKTsKQEAgLTg3NCw2ICs4OTIsNyBAQAogCQkJLyogY2xlYW51cCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gc2NoZWR1bGVkICovCiAJCQlicmVhazsKIAkJY2FzZSAtRU5PREVWOgkJLyogZGlzY29ubmVjdCgpIHVwY29taW5nICovCisJCQluZXRpZl9kZXZpY2VfZGV0YWNoKHBlZ2FzdXMtPm5ldCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXBlZ2FzdXMtPnN0YXRzLnR4X2Vycm9ycysrOwpAQCAtOTk5LDYgKzEwMTgsOCBAQAogCQkJICBwZWdhc3VzLT5yeF9za2ItPmRhdGEsIFBFR0FTVVNfTVRVICsgOCwKIAkJCSAgcmVhZF9idWxrX2NhbGxiYWNrLCBwZWdhc3VzKTsKIAlpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKHBlZ2FzdXMtPnJ4X3VyYiwgR0ZQX0tFUk5FTCkpKSB7CisJCWlmIChyZXMgPT0gLUVOT0RFVikKKwkJCW5ldGlmX2RldmljZV9kZXRhY2gocGVnYXN1cy0+bmV0KTsKIAkJaWYgKG5ldGlmX21zZ19pZnVwKHBlZ2FzdXMpKQogCQkJcHJfZGVidWcoIiVzOiBmYWlsZWQgcnhfdXJiLCAlZCIsIG5ldC0+bmFtZSwgcmVzKTsKIAkJZ290byBleGl0OwpAQCAtMTAwOSw2ICsxMDMwLDggQEAKIAkJCSBwZWdhc3VzLT5pbnRyX2J1ZmYsIHNpemVvZiAocGVnYXN1cy0+aW50cl9idWZmKSwKIAkJCSBpbnRyX2NhbGxiYWNrLCBwZWdhc3VzLCBwZWdhc3VzLT5pbnRyX2ludGVydmFsKTsKIAlpZiAoKHJlcyA9IHVzYl9zdWJtaXRfdXJiKHBlZ2FzdXMtPmludHJfdXJiLCBHRlBfS0VSTkVMKSkpIHsKKwkJaWYgKHJlcyA9PSAtRU5PREVWKQorCQkJbmV0aWZfZGV2aWNlX2RldGFjaChwZWdhc3VzLT5uZXQpOwogCQlpZiAobmV0aWZfbXNnX2lmdXAocGVnYXN1cykpCiAJCQlwcl9kZWJ1ZygiJXM6IGZhaWxlZCBpbnRyX3VyYiwgJWRcbiIsIG5ldC0+bmFtZSwgcmVzKTsKIAkJdXNiX2tpbGxfdXJiKHBlZ2FzdXMtPnJ4X3VyYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9uZXQvcm5kaXNfaG9zdC5jIGIvZHJpdmVycy91c2IvbmV0L3JuZGlzX2hvc3QuYwppbmRleCA5NGRkZmUxLi5mNTUxNTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9uZXQvcm5kaXNfaG9zdC5jCisrKyBiL2RyaXZlcnMvdXNiL25ldC9ybmRpc19ob3N0LmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KICNpbmNsdWRlIDxsaW51eC9taWkuaD4KICNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxsaW51eC91c2JfY2RjLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2NkYy5oPgogCiAjaW5jbHVkZSAidXNibmV0LmgiCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL25ldC96YXVydXMuYyBiL2RyaXZlcnMvdXNiL25ldC96YXVydXMuYwppbmRleCBmN2FjOWQ2Li44MTNlNDcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9uZXQvemF1cnVzLmMKKysrIGIvZHJpdmVycy91c2IvbmV0L3phdXJ1cy5jCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8bGludXgvbWlpLmg+CiAjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KICNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxsaW51eC91c2JfY2RjLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL2NkYy5oPgogCiAjaW5jbHVkZSAidXNibmV0LmgiCiAKQEAgLTEwOSw3ICsxMDksNyBAQAogCS5jaGVja19jb25uZWN0ID0gYWx3YXlzX2Nvbm5lY3RlZCwKIAkuYmluZCA9CQl6YXVydXNfYmluZCwKIAkudW5iaW5kID0JdXNibmV0X2NkY191bmJpbmQsCi0JLnR4X2ZpeHVwID0gCXphdXJ1c190eF9maXh1cCwKKwkudHhfZml4dXAgPQl6YXVydXNfdHhfZml4dXAsCiB9OwogI2RlZmluZQlaQVVSVVNfU1RST05HQVJNX0lORk8JKCh1bnNpZ25lZCBsb25nKSZ6YXVydXNfc2w1eDAwX2luZm8pCiAKQEAgLTExOSw3ICsxMTksNyBAQAogCS5jaGVja19jb25uZWN0ID0gYWx3YXlzX2Nvbm5lY3RlZCwKIAkuYmluZCA9CQl6YXVydXNfYmluZCwKIAkudW5iaW5kID0JdXNibmV0X2NkY191bmJpbmQsCi0JLnR4X2ZpeHVwID0gCXphdXJ1c190eF9maXh1cCwKKwkudHhfZml4dXAgPQl6YXVydXNfdHhfZml4dXAsCiB9OwogI2RlZmluZQlaQVVSVVNfUFhBX0lORk8JCSgodW5zaWduZWQgbG9uZykmemF1cnVzX3B4YV9pbmZvKQogCkBAIC0xMjksNyArMTI5LDcgQEAKIAkuY2hlY2tfY29ubmVjdCA9IGFsd2F5c19jb25uZWN0ZWQsCiAJLmJpbmQgPQkJemF1cnVzX2JpbmQsCiAJLnVuYmluZCA9CXVzYm5ldF9jZGNfdW5iaW5kLAotCS50eF9maXh1cCA9IAl6YXVydXNfdHhfZml4dXAsCisJLnR4X2ZpeHVwID0JemF1cnVzX3R4X2ZpeHVwLAogfTsKICNkZWZpbmUJT0xZTVBVU19NWExfSU5GTwkoKHVuc2lnbmVkIGxvbmcpJm9seW1wdXNfbXhsX2luZm8pCiAKQEAgLTIyOCw2ICsyMjgsMTEgQEAKIAkJCQkJCWRldGFpbC0+YkRldGFpbERhdGFbMl0pOwogCQkJCWdvdG8gYmFkX2Rlc2M7CiAJCQl9CisKKwkJCS8qIHNhbWUgZXh0cmEgZnJhbWluZyBhcyBmb3Igbm9uLUJMQU4gbW9kZSAqLworCQkJZGV2LT5uZXQtPmhhcmRfaGVhZGVyX2xlbiArPSA2OworCQkJZGV2LT5yeF91cmJfc2l6ZSA9IGRldi0+bmV0LT5oYXJkX2hlYWRlcl9sZW4KKwkJCQkJKyBkZXYtPm5ldC0+bXR1OwogCQkJYnJlYWs7CiAJCX0KIG5leHRfZGVzYzoKQEAgLTI1OCw3ICsyNjMsNyBAQAogCS5kZXNjcmlwdGlvbiA9CSJwc2V1ZG8tTURMTSAoQkxBTikgZGV2aWNlIiwKIAkuZmxhZ3MgPQlGTEFHX0ZSQU1JTkdfWiwKIAkuY2hlY2tfY29ubmVjdCA9IGFsd2F5c19jb25uZWN0ZWQsCi0JLnR4X2ZpeHVwID0gCXphdXJ1c190eF9maXh1cCwKKwkudHhfZml4dXAgPQl6YXVydXNfdHhfZml4dXAsCiAJLmJpbmQgPQkJYmxhbl9tZGxtX2JpbmQsCiB9OwogCkBAIC0zNjcsMTMgKzM3MiwxMyBAQAogCiBzdGF0aWMgaW50IF9faW5pdCB6YXVydXNfaW5pdCh2b2lkKQogewotIAlyZXR1cm4gdXNiX3JlZ2lzdGVyKCZ6YXVydXNfZHJpdmVyKTsKKwlyZXR1cm4gdXNiX3JlZ2lzdGVyKCZ6YXVydXNfZHJpdmVyKTsKIH0KIG1vZHVsZV9pbml0KHphdXJ1c19pbml0KTsKIAogc3RhdGljIHZvaWQgX19leGl0IHphdXJ1c19leGl0KHZvaWQpCiB7Ci0gCXVzYl9kZXJlZ2lzdGVyKCZ6YXVydXNfZHJpdmVyKTsKKwl1c2JfZGVyZWdpc3RlcigmemF1cnVzX2RyaXZlcik7CiB9CiBtb2R1bGVfZXhpdCh6YXVydXNfZXhpdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnIGIvZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcKaW5kZXggNWM2MGJlNS4uOGJkNDRmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcKQEAgLTQxNyw3ICs0MTcsNyBAQAogCSAgTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnAuIChVMjMyIGlzIG9uZSBvZiB0aGUgbW9kZWwgbnVtYmVycykuCiAKIAkgIFRoaXMgZHJpdmVyIGFsc28gd29ya3Mgd2l0aCBTaXRlY29tIFUyMzItUDI1IGFuZCBELUxpbmsgRFUtSDNTUCBVU0IKLQkgIEJBWSBkZXZpY2VzLgorCSAgQkFZLCBCZWxraW4gRjVVMTA5LCBhbmQgQmVsa2luIEY1VTQwOSBkZXZpY2VzLgogCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtY3RfdTIzMi4KQEAgLTQ5MSwxNiArNDkxLDIyIEBACiAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2V5c3Bhbl9wZGEuCiAKIGNvbmZpZyBVU0JfU0VSSUFMX09QVElPTgotCXRyaXN0YXRlICJVU0IgT3B0aW9uIFBDTUNJQSBzZXJpYWwgZHJpdmVyIgotCWRlcGVuZHMgb24gVVNCX1NFUklBTCAmJiBVU0JfT0hDSV9IQ0QgJiYgUENDQVJECisJdHJpc3RhdGUgIlVTQiBkcml2ZXIgZm9yIEdTTSBtb2RlbXMiCisJZGVwZW5kcyBvbiBVU0JfU0VSSUFMCiAJaGVscAotCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYW4gT3B0aW9uIGNhcmQuIFRoaXMgaXMgYQotCSAgR1NNIGNhcmQsIGNvbnRyb2xsZWQgYnkgdGhyZWUgc2VyaWFsIHBvcnRzIHdoaWNoIGFyZSBjb25uZWN0ZWQKLQkgIHZpYSBhbiBPSENJIGFkYXB0ZXIgbG9jYXRlZCBvbiBhIFBDIGNhcmQuCisJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuICJPcHRpb24iIEdTTSBQQ01DSUEgY2FyZAorCSAgKG9yIGFuIE9FTSB2ZXJzaW9uOiBicmFuZGVkIEh1YXdlaSwgQXVkaW92b3gsIG9yIE5vdmF0ZWwpLgorCisJICBUaGVzZSBjYXJkcyBmZWF0dXJlIGEgYnVpbHQtaW4gT0hDSS1VU0IgYWRhcHRlciBhbmQgYW4KKwkgIGludGVybmFsbHktY29ubmVjdGVkIEdTTSBtb2RlbS4gVGhlIFVTQiBidXMgaXMgbm90CisJICBhY2Nlc3NpYmxlIGV4dGVybmFsbHkuCiAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQogCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG9wdGlvbi4KIAorCSAgSWYgdGhpcyBkcml2ZXIgZG9lc24ndCByZWNvZ25pemUgeW91ciBkZXZpY2UsCisJICBpdCBtaWdodCBiZSBhY2Nlc3NpYmxlIHZpYSB0aGUgRlRESV9TSU8gZHJpdmVyLgorCiBjb25maWcgVVNCX1NFUklBTF9PTU5JTkVUCiAJdHJpc3RhdGUgIlVTQiBaeVhFTCBvbW5pLm5ldCBMQ0QgUGx1cyBEcml2ZXIgKEVYUEVSSU1FTlRBTCkiCiAJZGVwZW5kcyBvbiBVU0JfU0VSSUFMICYmIEVYUEVSSU1FTlRBTApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2FpcnByaW1lLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvYWlycHJpbWUuYwppbmRleCA2OTRiMjA1Li45NGI5YmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvYWlycHJpbWUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvYWlycHJpbWUuYwpAQCAtMTYsOSArMTYsMTEgQEAKICNpbmNsdWRlICJ1c2Itc2VyaWFsLmgiCiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZSBbXSA9IHsKKwl7IFVTQl9ERVZJQ0UoMHgwYzg4LCAweDE3ZGEpIH0sIC8qIEt5b2NlcmEgV2lyZWxlc3MgS1BDNjUwL1Bhc3Nwb3J0ICovCiAJeyBVU0JfREVWSUNFKDB4ZjNkLCAweDAxMTIpIH0sICAvKiBBaXJQcmltZSBDRE1BIFdpcmVsZXNzIFBDIENhcmQgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxNDEwLCAweDExMTApIH0sIC8qIE5vdmF0ZWwgV2lyZWxlc3MgTWVybGluIENETUEgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMTk5LCAweDAxMTIpIH0sIC8qIFNpZXJyYSBXaXJlbGVzcyBBaXJjYXJkIDU4MCAqLworCXsgVVNCX0RFVklDRSgweDExOTksIDB4MDIxOCkgfSwgLyogU2llcnJhIFdpcmVsZXNzIE1DNTcyMCAqLwogCXsgfSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgaWRfdGFibGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2NvbnNvbGUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jb25zb2xlLmMKaW5kZXggODAyM2JiNy4uZjM0MDRlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NvbnNvbGUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY29uc29sZS5jCkBAIC0yMDIsNyArMjAyLDcgQEAKIAlzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsOwogCWludCByZXR2YWwgPSAtRU5PREVWOwogCi0JaWYgKCFwb3J0KQorCWlmICghcG9ydCB8fCBwb3J0LT5zZXJpYWwtPmRldi0+c3RhdGUgPT0gVVNCX1NUQVRFX05PVEFUVEFDSEVEKQogCQlyZXR1cm47CiAJc2VyaWFsID0gcG9ydC0+c2VyaWFsOwogCkBAIC0yMTMsMTcgKzIxMywzOCBAQAogCiAJaWYgKCFwb3J0LT5vcGVuX2NvdW50KSB7CiAJCWRiZyAoIiVzIC0gcG9ydCBub3Qgb3BlbmVkIiwgX19GVU5DVElPTl9fKTsKLQkJZ290byBleGl0OworCQlyZXR1cm47CiAJfQogCi0JLyogcGFzcyBvbiB0byB0aGUgZHJpdmVyIHNwZWNpZmljIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpZiBpdCBpcyBhdmFpbGFibGUgKi8KLQlpZiAoc2VyaWFsLT50eXBlLT53cml0ZSkKLQkJcmV0dmFsID0gc2VyaWFsLT50eXBlLT53cml0ZShwb3J0LCBidWYsIGNvdW50KTsKLQllbHNlCi0JCXJldHZhbCA9IHVzYl9zZXJpYWxfZ2VuZXJpY193cml0ZShwb3J0LCBidWYsIGNvdW50KTsKLQotZXhpdDoKLQlkYmcoIiVzIC0gcmV0dXJuIHZhbHVlIChpZiB3ZSBoYWQgb25lKTogJWQiLCBfX0ZVTkNUSU9OX18sIHJldHZhbCk7CisJd2hpbGUgKGNvdW50KSB7CisJCXVuc2lnbmVkIGludCBpOworCQl1bnNpZ25lZCBpbnQgbGY7CisJCS8qIHNlYXJjaCBmb3IgTEYgc28gd2UgY2FuIGluc2VydCBDUiBpZiBuZWNlc3NhcnkgKi8KKwkJZm9yIChpPTAsIGxmPTAgOyBpIDwgY291bnQgOyBpKyspIHsKKwkJCWlmICgqKGJ1ZiArIGkpID09IDEwKSB7CisJCQkJbGYgPSAxOworCQkJCWkrKzsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQkvKiBwYXNzIG9uIHRvIHRoZSBkcml2ZXIgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlmIGl0IGlzIGF2YWlsYWJsZSAqLworCQlpZiAoc2VyaWFsLT50eXBlLT53cml0ZSkKKwkJCXJldHZhbCA9IHNlcmlhbC0+dHlwZS0+d3JpdGUocG9ydCwgYnVmLCBpKTsKKwkJZWxzZQorCQkJcmV0dmFsID0gdXNiX3NlcmlhbF9nZW5lcmljX3dyaXRlKHBvcnQsIGJ1ZiwgaSk7CisJCWRiZygiJXMgLSByZXR1cm4gdmFsdWUgOiAlZCIsIF9fRlVOQ1RJT05fXywgcmV0dmFsKTsKKwkJaWYgKGxmKSB7CisJCQkvKiBhcHBlbmQgQ1IgYWZ0ZXIgTEYgKi8KKwkJCXVuc2lnbmVkIGNoYXIgY3IgPSAxMzsKKwkJCWlmIChzZXJpYWwtPnR5cGUtPndyaXRlKQorCQkJCXJldHZhbCA9IHNlcmlhbC0+dHlwZS0+d3JpdGUocG9ydCwgJmNyLCAxKTsKKwkJCWVsc2UKKwkJCQlyZXR2YWwgPSB1c2Jfc2VyaWFsX2dlbmVyaWNfd3JpdGUocG9ydCwgJmNyLCAxKTsKKwkJCWRiZygiJXMgLSByZXR1cm4gdmFsdWUgOiAlZCIsIF9fRlVOQ1RJT05fXywgcmV0dmFsKTsKKwkJfQorCQlidWYgKz0gaTsKKwkJY291bnQgLT0gaTsKKwl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgY29uc29sZSB1c2Jjb25zID0gewpAQCAtMjM0LDYgKzI1NSwxNCBAQAogCS5pbmRleCA9CS0xLAogfTsKIAordm9pZCB1c2Jfc2VyaWFsX2NvbnNvbGVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQoreworCWlmIChzZXJpYWwgJiYgc2VyaWFsLT5wb3J0ICYmIHNlcmlhbC0+cG9ydFswXSAmJiBzZXJpYWwtPnBvcnRbMF0gPT0gdXNiY29uc19pbmZvLnBvcnQpIHsKKwkJdXNiX3NlcmlhbF9jb25zb2xlX2V4aXQoKTsKKwkJdXNiX3NlcmlhbF9wdXQoc2VyaWFsKTsKKwl9Cit9CisKIHZvaWQgdXNiX3NlcmlhbF9jb25zb2xlX2luaXQgKGludCBzZXJpYWxfZGVidWcsIGludCBtaW5vcikKIHsKIAlkZWJ1ZyA9IHNlcmlhbF9kZWJ1ZzsKQEAgLTI1OSw2ICsyODgsMTEgQEAKIAogdm9pZCB1c2Jfc2VyaWFsX2NvbnNvbGVfZXhpdCAodm9pZCkKIHsKLQl1bnJlZ2lzdGVyX2NvbnNvbGUoJnVzYmNvbnMpOworCWlmICh1c2Jjb25zX2luZm8ucG9ydCkgeworCQl1bnJlZ2lzdGVyX2NvbnNvbGUoJnVzYmNvbnMpOworCQlpZiAodXNiY29uc19pbmZvLnBvcnQtPm9wZW5fY291bnQpCisJCQl1c2Jjb25zX2luZm8ucG9ydC0+b3Blbl9jb3VudC0tOworCQl1c2Jjb25zX2luZm8ucG9ydCA9IE5VTEw7CisJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTAxLmMKaW5kZXggZTBjMmFjZC4uZjhjMGNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEwMS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMDEuYwpAQCAtNTksNiArNTksNyBAQAogCXsgVVNCX0RFVklDRSgweDEwQUIsIDB4MTBDNSkgfSwgLyogU2llbWVucyBNQzYwIENhYmxlICovCiAJeyBVU0JfREVWSUNFKDB4MTBCNSwgMHhBQzcwKSB9LCAvKiBOb2tpYSBDQS00MiBVU0IgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgwM0IpIH0sIC8qIFBvbG9sdSBVU0Itc2VyaWFsIGNvbnZlcnRlciAqLworCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODA2NikgfSwgLyogQXJndXNzb2Z0IEluLVN5c3RlbSBQcm9ncmFtbWVyICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MDdBKSB9LCAvKiBDcnVtYjEyOCBib2FyZCAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODBDQSkgfSwgLyogRGVncmVlIENvbnRyb2xzIEluYyAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODBGNikgfSwgLyogU3V1bnRvIHNwb3J0cyBpbnN0cnVtZW50ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3liZXJqYWNrLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3liZXJqYWNrLmMKaW5kZXggMjM1N2IxZC4uMWZkNWM1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5YmVyamFjay5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwpAQCAtNDY5LDcgKzQ2OSw3IEBACiAKIGV4aXQ6CiAJc3Bpbl91bmxvY2soJnByaXYtPmxvY2spOwotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBjeWJlcmphY2tfaW5pdCAodm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jCmluZGV4IDcyMTJmYmUuLjVkZTc2ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYwpAQCAtODI0LDcgKzgyNCw3IEBACiAJcHJpdi0+Ynl0ZXNfb3V0ICs9IGNvdW50OyAvKiBkbyBub3QgY291bnQgdGhlIGxpbmUgY29udHJvbCBhbmQgc2l6ZSBieXRlcyAqLwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKIAotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfSAvKiBjeXByZXNzX3NlbmQgKi8KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZW1wZWcuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9lbXBlZy5jCmluZGV4IDYzZjdjNzguLmFmY2ExZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9lbXBlZy5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9lbXBlZy5jCkBAIC0zMzUsNyArMzM1LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKaW5kZXggOTg2ZDc2Mi4uYjJiZmVhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKQEAgLTUwMCw2ICs1MDAsNyBAQAogCXsgVVNCX0RFVklDRShJQ09NX0lEMV9WSUQsIElDT01fSUQxX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoUEFQT1VDSF9WSUQsIFBBUE9VQ0hfVE1VX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIEZURElfQUNHX0hGRFVBTF9QSUQpIH0sCisJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX1lFSV9TRVJWT0NFTlRFUjMxX1BJRCkgfSwKIAl7IH0sCQkJCQkvKiBPcHRpb25hbCBwYXJhbWV0ZXIgZW50cnkgKi8KIAl7IH0JCQkJCS8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiB9OwpAQCAtMTI2MSw3ICsxMjYyLDYgQEAKIAogc3RhdGljIGludCAgZnRkaV9vcGVuIChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsgLyogZnRkaV9vcGVuICovCi0Jc3RydWN0IHRlcm1pb3MgdG1wX3Rlcm1pb3M7CiAJc3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IHBvcnQtPnNlcmlhbC0+ZGV2OwogCXN0cnVjdCBmdGRpX3ByaXZhdGUgKnByaXYgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTEyNzEsOCArMTI3MSw4IEBACiAKIAlkYmcoIiVzIiwgX19GVU5DVElPTl9fKTsKIAotCi0JcG9ydC0+dHR5LT5sb3dfbGF0ZW5jeSA9IChwcml2LT5mbGFncyAmIEFTWU5DX0xPV19MQVRFTkNZKSA/IDEgOiAwOworCWlmIChwb3J0LT50dHkpCisJCXBvcnQtPnR0eS0+bG93X2xhdGVuY3kgPSAocHJpdi0+ZmxhZ3MgJiBBU1lOQ19MT1dfTEFURU5DWSkgPyAxIDogMDsKIAogCS8qIE5vIGVycm9yIGNoZWNraW5nIGZvciB0aGlzICh3aWxsIGdldCBlcnJvcnMgbGF0ZXIgYW55d2F5KSAqLwogCS8qIFNlZSBmdGRpX3Npby5oIGZvciBkZXNjcmlwdGlvbiBvZiB3aGF0IGlzIHJlc2V0ICovCkBAIC0xMjg2LDcgKzEyODYsOCBAQAogCSAgIFRoaXMgaXMgc2FtZSBiZWhhdmlvdXIgYXMgc2VyaWFsLmMvcnNfb3BlbigpIC0gS3ViYSAqLwogCiAJLyogZnRkaV9zZXRfdGVybWlvcyAgd2lsbCBzZW5kIHVzYiBjb250cm9sIG1lc3NhZ2VzICovCi0JZnRkaV9zZXRfdGVybWlvcyhwb3J0LCAmdG1wX3Rlcm1pb3MpOworCWlmIChwb3J0LT50dHkpCisJCWZ0ZGlfc2V0X3Rlcm1pb3MocG9ydCwgTlVMTCk7CiAKIAkvKiBGSVhNRTogRmxvdyBjb250cm9sIG1pZ2h0IGJlIGVuYWJsZWQsIHNvIGl0IHNob3VsZCBiZSBjaGVja2VkIC0KIAkgICB3ZSBoYXZlIG5vIGNvbnRyb2wgb2YgZGVmYXVsdHMhICovCkBAIC0xNDcyLDcgKzE0NzMsNyBAQAogCQlyZXR1cm47CiAJfQogCi0Jc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQocG9ydCk7CiB9IC8qIGZ0ZGlfd3JpdGVfYnVsa19jYWxsYmFjayAqLwogCiAKQEAgLTE4NjcsNyArMTg2OCw3IEBACiAJCQllcnIoIiVzIHVyYiBmYWlsZWQgdG8gc2V0IGJhdWRyYXRlIiwgX19GVU5DVElPTl9fKTsKIAkJfQogCQkvKiBFbnN1cmUgUlRTIGFuZCBEVFIgYXJlIHJhaXNlZCB3aGVuIGJhdWRyYXRlIGNoYW5nZWQgZnJvbSAwICovCi0JCWlmICgob2xkX3Rlcm1pb3MtPmNfY2ZsYWcgJiBDQkFVRCkgPT0gQjApIHsKKwkJaWYgKCFvbGRfdGVybWlvcyB8fCAob2xkX3Rlcm1pb3MtPmNfY2ZsYWcgJiBDQkFVRCkgPT0gQjApIHsKIAkJCXNldF9tY3RybChwb3J0LCBUSU9DTV9EVFIgfCBUSU9DTV9SVFMpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaAppbmRleCBkNjlhOTE3Li42YWIyYWM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaApAQCAtNDM2LDYgKzQzNiwxMiBAQAogICovCiAjZGVmaW5lIEZURElfQUNHX0hGRFVBTF9QSUQJCTB4REQyMAkvKiBIRiBEdWFsIElTTyBSZWFkZXIgKFJGSUQpICovCiAKKy8qCisgKiBZb3N0IEVuZ2luZWVyaW5nLCBJbmMuIHByb2R1Y3RzICh3d3cueW9zdGVuZ2luZWVyaW5nLmNvbSkuCisgKiBQSUQgMHhFMDUwIHN1Ym1pdHRlZCBieSBBYXJvbiBQcm9zZS4KKyAqLworI2RlZmluZSBGVERJX1lFSV9TRVJWT0NFTlRFUjMxX1BJRAkweEUwNTAJLyogWUVJIFNlcnZvQ2VudGVyMy4xIFVTQiAqLworCiAvKiBDb21tYW5kcyAqLwogI2RlZmluZSBGVERJX1NJT19SRVNFVCAJCTAgLyogUmVzZXQgdGhlIHBvcnQgKi8KICNkZWZpbmUgRlRESV9TSU9fTU9ERU1fQ1RSTCAJMSAvKiBTZXQgdGhlIG1vZGVtIGNvbnRyb2wgcmVnaXN0ZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9nYXJtaW5fZ3BzLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZ2FybWluX2dwcy5jCmluZGV4IDVlYzliZjUuLjA0NzY3NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9nYXJtaW5fZ3BzLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2dhcm1pbl9ncHMuYwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAKIAkJZ2FybWluX2RhdGFfcC0+ZmxhZ3MgfD0gQ0xFQVJfSEFMVF9SRVFVSVJFRDsKIAl9CiAKLQlzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsKKwl1c2Jfc2VyaWFsX3BvcnRfc29mdGludChwb3J0KTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZ2VuZXJpYy5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2dlbmVyaWMuYwppbmRleCBjNjJjYzI4Li4wN2E0NzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZ2VuZXJpYy5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9nZW5lcmljLmMKQEAgLTI5OSw5ICsyOTksNyBAQAogCQlyZXR1cm47CiAJfQogCi0JdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQoKHZvaWQgKilwb3J0KTsKLQotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwodXNiX3NlcmlhbF9nZW5lcmljX3dyaXRlX2J1bGtfY2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCmluZGV4IGI2MDZjNTkuLmI4NWQyMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCkBAIC0xNDIsNyArMTQyLDcgQEAKIAogLyogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGRldmljZSBpbmZvcm1hdGlvbiAqLwogc3RydWN0IGVkZ2Vwb3J0X3NlcmlhbCB7Ci0JY2hhcgkJCW5hbWVbTUFYX05BTUVfTEVOKzFdOwkJLyogc3RyaW5nIG5hbWUgb2YgdGhpcyBkZXZpY2UgKi8KKwljaGFyCQkJbmFtZVtNQVhfTkFNRV9MRU4rMl07CQkvKiBzdHJpbmcgbmFtZSBvZiB0aGlzIGRldmljZSAqLwogCiAJc3RydWN0IGVkZ2VfbWFudWZfZGVzY3JpcHRvcgltYW51Zl9kZXNjcmlwdG9yOwkvKiB0aGUgbWFudWZhY3R1cmVyIGRlc2NyaXB0b3IgKi8KIAlzdHJ1Y3QgZWRnZV9ib290X2Rlc2NyaXB0b3IJYm9vdF9kZXNjcmlwdG9yOwkvKiB0aGUgYm9vdCBmaXJtd2FyZSBkZXNjcmlwdG9yICovCkBAIC0yNzAsNyArMjcwLDcgQEAKIHN0YXRpYyB2b2lkIGdldF9ib290X2Rlc2MJCShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbCk7CiBzdGF0aWMgdm9pZCBsb2FkX2FwcGxpY2F0aW9uX2Zpcm13YXJlCShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbCk7CiAKLXN0YXRpYyB2b2lkIHVuaWNvZGVfdG9fYXNjaWkJCShjaGFyICpzdHJpbmcsIF9fbGUxNiAqdW5pY29kZSwgaW50IHVuaWNvZGVfc2l6ZSk7CitzdGF0aWMgdm9pZCB1bmljb2RlX3RvX2FzY2lpKGNoYXIgKnN0cmluZywgaW50IGJ1ZmxlbiwgX19sZTE2ICp1bmljb2RlLCBpbnQgdW5pY29kZV9zaXplKTsKIAogCiAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTM3Myw3ICszNzMsNyBAQAogICogIEdldCBzdHJpbmcgZGVzY3JpcHRvciBmcm9tIGRldmljZQkJCQkJKgogICoJCQkJCQkJCQkqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIGludCBnZXRfc3RyaW5nIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgSWQsIGNoYXIgKnN0cmluZykKK3N0YXRpYyBpbnQgZ2V0X3N0cmluZyAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IElkLCBjaGFyICpzdHJpbmcsIGludCBidWZsZW4pCiB7CiAJc3RydWN0IHVzYl9zdHJpbmdfZGVzY3JpcHRvciBTdHJpbmdEZXNjOwogCXN0cnVjdCB1c2Jfc3RyaW5nX2Rlc2NyaXB0b3IgKnBTdHJpbmdEZXNjOwpAQCAtMzk1LDcgKzM5NSw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCXVuaWNvZGVfdG9fYXNjaWkoc3RyaW5nLCAgcFN0cmluZ0Rlc2MtPndEYXRhLCAgICAgcFN0cmluZ0Rlc2MtPmJMZW5ndGgvMi0xKTsKKwl1bmljb2RlX3RvX2FzY2lpKHN0cmluZywgYnVmbGVuLCBwU3RyaW5nRGVzYy0+d0RhdGEsIHBTdHJpbmdEZXNjLT5iTGVuZ3RoLzIpOwogCiAJa2ZyZWUocFN0cmluZ0Rlc2MpOwogCXJldHVybiBzdHJsZW4oc3RyaW5nKTsKQEAgLTI1NjQsMTYgKzI1NjQsMjAgQEAKICAqCUFTQ0lJIHJhbmdlLCBidXQgaXQncyBvbmx5IGZvciBkZWJ1Z2dpbmcuLi4KICAqCU5PVEU6IGV4cGVjdHMgdGhlIHVuaWNvZGUgaW4gTEUgZm9ybWF0CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lkIHVuaWNvZGVfdG9fYXNjaWkgKGNoYXIgKnN0cmluZywgX19sZTE2ICp1bmljb2RlLCBpbnQgdW5pY29kZV9zaXplKQorc3RhdGljIHZvaWQgdW5pY29kZV90b19hc2NpaShjaGFyICpzdHJpbmcsIGludCBidWZsZW4sIF9fbGUxNiAqdW5pY29kZSwgaW50IHVuaWNvZGVfc2l6ZSkKIHsKIAlpbnQgaTsKIAotCWlmICh1bmljb2RlX3NpemUgPD0gMCkKKwlpZiAoYnVmbGVuIDw9IDApCS8qIG5ldmVyIGhhcHBlbnMsIGJ1dC4uLiAqLwogCQlyZXR1cm47CisJLS1idWZsZW47CQkvKiBzcGFjZSBmb3IgbnVsICovCiAKLQlmb3IgKGkgPSAwOyBpIDwgdW5pY29kZV9zaXplOyArK2kpCisJZm9yIChpID0gMDsgaSA8IHVuaWNvZGVfc2l6ZTsgaSsrKSB7CisJCWlmIChpID49IGJ1ZmxlbikKKwkJCWJyZWFrOwogCQlzdHJpbmdbaV0gPSAoY2hhcikobGUxNl90b19jcHUodW5pY29kZVtpXSkpOwotCXN0cmluZ1t1bmljb2RlX3NpemVdID0gMHgwMDsKKwl9CisJc3RyaW5nW2ldID0gMHgwMDsKIH0KIAogCkBAIC0yNjAzLDExICsyNjA3LDE3IEBACiAJCWRiZygiICBCb2FyZFJldjogICAgICAgJWQiLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5Cb2FyZFJldik7CiAJCWRiZygiICBOdW1Qb3J0czogICAgICAgJWQiLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5OdW1Qb3J0cyk7CiAJCWRiZygiICBEZXNjRGF0ZTogICAgICAgJWQvJWQvJWQiLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5EZXNjRGF0ZVswXSwgZWRnZV9zZXJpYWwtPm1hbnVmX2Rlc2NyaXB0b3IuRGVzY0RhdGVbMV0sIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLkRlc2NEYXRlWzJdKzE5MDApOwotCQl1bmljb2RlX3RvX2FzY2lpIChzdHJpbmcsIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLlNlcmlhbE51bWJlciwgZWRnZV9zZXJpYWwtPm1hbnVmX2Rlc2NyaXB0b3IuU2VyTnVtTGVuZ3RoLzItMSk7CisJCXVuaWNvZGVfdG9fYXNjaWkoc3RyaW5nLCBzaXplb2Yoc3RyaW5nKSwKKwkJICAgIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLlNlcmlhbE51bWJlciwKKwkJICAgIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLlNlck51bUxlbmd0aC8yKTsKIAkJZGJnKCIgIFNlcmlhbE51bWJlcjogJXMiLCBzdHJpbmcpOwotCQl1bmljb2RlX3RvX2FzY2lpIChzdHJpbmcsIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLkFzc2VtYmx5TnVtYmVyLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5Bc3NlbWJseU51bUxlbmd0aC8yLTEpOworCQl1bmljb2RlX3RvX2FzY2lpKHN0cmluZywgc2l6ZW9mKHN0cmluZyksCisJCSAgICBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5Bc3NlbWJseU51bWJlciwKKwkJICAgIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLkFzc2VtYmx5TnVtTGVuZ3RoLzIpOwogCQlkYmcoIiAgQXNzZW1ibHlOdW1iZXI6ICVzIiwgc3RyaW5nKTsKLQkJdW5pY29kZV90b19hc2NpaSAoc3RyaW5nLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5PZW1Bc3N5TnVtYmVyLCBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5PZW1Bc3N5TnVtTGVuZ3RoLzItMSk7CisJCXVuaWNvZGVfdG9fYXNjaWkoc3RyaW5nLCBzaXplb2Yoc3RyaW5nKSwKKwkJICAgIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLk9lbUFzc3lOdW1iZXIsCisJCSAgICBlZGdlX3NlcmlhbC0+bWFudWZfZGVzY3JpcHRvci5PZW1Bc3N5TnVtTGVuZ3RoLzIpOwogCQlkYmcoIiAgT2VtQXNzeU51bWJlcjogICVzIiwgc3RyaW5nKTsKIAkJZGJnKCIgIFVhcnRUeXBlOiAgICAgICAlZCIsIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLlVhcnRUeXBlKTsKIAkJZGJnKCIgIElvblBpZDogICAgICAgICAlZCIsIGVkZ2Vfc2VyaWFsLT5tYW51Zl9kZXNjcmlwdG9yLklvblBpZCk7CkBAIC0yNzIwLDcgKzI3MzAsNyBAQAogCXN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsOwogCXN0cnVjdCBlZGdlcG9ydF9wb3J0ICplZGdlX3BvcnQ7CiAJc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKLQlpbnQgaTsKKwlpbnQgaSwgajsKIAogCWRldiA9IHNlcmlhbC0+ZGV2OwogCkBAIC0yNzM1LDExICsyNzQ1LDExIEBACiAJdXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsIGVkZ2Vfc2VyaWFsKTsKIAogCS8qIGdldCB0aGUgbmFtZSBmb3IgdGhlIGRldmljZSBmcm9tIHRoZSBkZXZpY2UgKi8KLQlpZiAoIChpID0gZ2V0X3N0cmluZyhkZXYsIGRldi0+ZGVzY3JpcHRvci5pTWFudWZhY3R1cmVyLCAmZWRnZV9zZXJpYWwtPm5hbWVbMF0pKSAhPSAwKSB7Ci0JCWVkZ2Vfc2VyaWFsLT5uYW1lW2ktMV0gPSAnICc7Ci0JfQotCi0JZ2V0X3N0cmluZyhkZXYsIGRldi0+ZGVzY3JpcHRvci5pUHJvZHVjdCwgJmVkZ2Vfc2VyaWFsLT5uYW1lW2ldKTsKKwlpID0gZ2V0X3N0cmluZyhkZXYsIGRldi0+ZGVzY3JpcHRvci5pTWFudWZhY3R1cmVyLAorCSAgICAmZWRnZV9zZXJpYWwtPm5hbWVbMF0sIE1BWF9OQU1FX0xFTisxKTsKKwllZGdlX3NlcmlhbC0+bmFtZVtpKytdID0gJyAnOworCWdldF9zdHJpbmcoZGV2LCBkZXYtPmRlc2NyaXB0b3IuaVByb2R1Y3QsCisJICAgICZlZGdlX3NlcmlhbC0+bmFtZVtpXSwgTUFYX05BTUVfTEVOKzIgLSBpKTsKIAogCWRldl9pbmZvKCZzZXJpYWwtPmRldi0+ZGV2LCAiJXMgZGV0ZWN0ZWRcbiIsIGVkZ2Vfc2VyaWFsLT5uYW1lKTsKIApAQCAtMjc4NCw2ICsyNzk0LDEwIEBACiAJCWVkZ2VfcG9ydCA9IGttYWxsb2MgKHNpemVvZihzdHJ1Y3QgZWRnZXBvcnRfcG9ydCksIEdGUF9LRVJORUwpOwogCQlpZiAoZWRnZV9wb3J0ID09IE5VTEwpIHsKIAkJCWRldl9lcnIoJnNlcmlhbC0+ZGV2LT5kZXYsICIlcyAtIE91dCBvZiBtZW1vcnlcbiIsIF9fRlVOQ1RJT05fXyk7CisJCQlmb3IgKGogPSAwOyBqIDwgaTsgKytqKSB7CisJCQkJa2ZyZWUgKHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShzZXJpYWwtPnBvcnRbal0pKTsKKwkJCQl1c2Jfc2V0X3NlcmlhbF9wb3J0X2RhdGEoc2VyaWFsLT5wb3J0W2pdLCAgTlVMTCk7CisJCQl9CiAJCQl1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgTlVMTCk7CiAJCQlrZnJlZShlZGdlX3NlcmlhbCk7CiAJCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcGFxLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXBhcS5jCmluZGV4IDlhNWM5NzkuLjlkYTZkMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcGFxLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lwYXEuYwpAQCAtODcwLDcgKzg3MCw3IEBACiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndyaXRlX2xpc3RfbG9jaywgZmxhZ3MpOwogCX0KIAotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCiBzdGF0aWMgaW50IGlwYXFfd3JpdGVfcm9vbShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lwdy5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lwdy5jCmluZGV4IGU3NjBhNzAuLmE0YTBiZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcHcuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXB3LmMKQEAgLTM3Niw3ICszNzYsNyBAQAogCWlmICh1cmItPnN0YXR1cykKIAkJZGJnKCIlcyAtIG5vbnplcm8gd3JpdGUgYnVsayBzdGF0dXMgcmVjZWl2ZWQ6ICVkIiwgX19GVU5DVElPTl9fLCB1cmItPnN0YXR1cyk7CiAKLQlzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsKKwl1c2Jfc2VyaWFsX3BvcnRfc29mdGludChwb3J0KTsKIH0KIAogc3RhdGljIGludCBpcHdfd3JpdGUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaXItdXNiLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXItdXNiLmMKaW5kZXggNDI2MTgyZC4uOTQzMmM3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lyLXVzYi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pci11c2IuYwpAQCAtNDA4LDcgKzQwOCw3IEBACiAJCXVyYi0+YWN0dWFsX2xlbmd0aCwKIAkJdXJiLT50cmFuc2Zlcl9idWZmZXIpOwogCi0Jc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQocG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIGlyX3JlYWRfYnVsa19jYWxsYmFjayAoc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbi5jCmluZGV4IDA1MmI3MzUuLjJjZjZhZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9rZXlzcGFuLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW4uYwpAQCAtNDgxLDcgKzQ4MSw3IEBACiAJZGJnICgiJXMgLSB1cmIgJWQiLCBfX0ZVTkNUSU9OX18sIHVyYiA9PSBwX3ByaXYtPm91dF91cmJzWzFdKTsgCiAKIAlpZiAocG9ydC0+b3Blbl9jb3VudCkKLQkJc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCiBzdGF0aWMgdm9pZAl1c2EyNl9pbmFja19jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9rbDVrdXNiMTA1LmMKaW5kZXggNzgzMzVhNS4uNjVkNzlmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2w1a3VzYjEwNS5jCkBAIC01NjksOCArNTY5LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIGZyb20gZ2VuZXJpY193cml0ZV9idWxrX2NhbGxiYWNrICovCi0Jc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQocG9ydCk7CiB9IC8qIGtsc2lfMTA1X3dyaXRlX2J1bGtfY29tcGxldGlvbl9jYWxsYmFjayAqLwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jCmluZGV4IDIzODAzM2EuLjZkY2RiNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL29tbmluZXQuYwpAQCAtMzIwLDcgKzMyMCw3IEBACiAJCXJldHVybjsKIAl9CiAKLQlzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsKKwl1c2Jfc2VyaWFsX3BvcnRfc29mdGludChwb3J0KTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKaW5kZXggNWNmMmI4MC4uYjA4NjFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gIE9wdGlvbiBDYXJkIChQQ01DSUEgdG8pIFVTQiB0byBTZXJpYWwgRHJpdmVyCisgIFVTQiBEcml2ZXIgZm9yIEdTTSBtb2RlbXMKIAogICBDb3B5cmlnaHQgKEMpIDIwMDUgIE1hdHRoaWFzIFVybGljaHMgPHNtdXJmQHNtdXJmLm5vcmlzLmRlPgogCkBAIC0yOCwxNSArMjgsMzQgQEAKICAgMjAwNS0wOS0xMCAgdjAuNC4zIGFkZGVkIEhVQVdFSSBFNjAwIGNhcmQgYW5kIEF1ZGlvdm94IEFpckNhcmQKICAgMjAwNS0wOS0yMCAgdjAuNC40IGluY3JlYXNlZCByZWN2IGJ1ZmZlciBzaXplOiB0aGUgY2FyZCBzb21ldGltZXMKICAgICAgICAgICAgICAgICAgICAgIHdhbnRzIHRvIHNlbmQgPjIwMDAgYnl0ZXMuCi0gIDIwMDYtMDQtMTAgIHYwLjQuMiBmaXhlZCB0d28gYXJyYXkgb3ZlcnJ1biBlcnJvcnMgOi0vCisgIDIwMDYtMDQtMTAgIHYwLjUgICBmaXhlZCB0d28gYXJyYXkgb3ZlcnJ1biBlcnJvcnMgOi0vCisgIDIwMDYtMDQtMjEgIHYwLjUuMSBhZGRlZCBzdXBwb3J0IGZvciBTaWVycmEgV2lyZWxlc3MgTUM4NzU1CisgIDIwMDYtMDUtMTUgIHYwLjYgICByZS1lbmFibGUgbXVsdGktcG9ydCBzdXBwb3J0CisgIDIwMDYtMDYtMDEgIHYwLjYuMSBhZGQgQ09CUkEKKyAgMjAwNi0wNi0wMSAgdjAuNi4yIGFkZCBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBzdHVmZgorICAyMDA2LTA2LTAxICB2MC42LjMgYWRkIE5vdmF0ZWwgV2lyZWxlc3MKKyAgMjAwNi0wNi0wMSAgdjAuNyAgIE9wdGlvbiA9PiBHU00KIAogICBXb3JrIHNwb25zb3JlZCBieTogU2lnb3MgR21iSCwgR2VybWFueSA8aW5mb0BzaWdvcy5kZT4KIAorICBUaGlzIGRyaXZlciBleGlzdHMgYmVjYXVzZSB0aGUgIm5vcm1hbCIgc2VyaWFsIGRyaXZlciBkb2Vzbid0IHdvcmsgdG9vIHdlbGwKKyAgd2l0aCBHU00gbW9kZW1zLiBJc3N1ZXM6CisgIC0gZGF0YSBsb3NzIC0tIG9uZSBzaW5nbGUgUmVjZWl2ZSBVUkIgaXMgbm90IG5lYXJseSBlbm91Z2gKKyAgLSBub25zdGFuZGFyZCBmbG93IChPcHRpb24gZGV2aWNlcykgYW5kIG11bHRpcGxleCAoU2llcnJhKSBjb250cm9sCisgIC0gY29udHJvbGxpbmcgdGhlIGJhdWQgcmF0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2UKKworICBUaGlzIGRyaXZlciBpcyBuYW1lZCAib3B0aW9uIiBiZWNhdXNlIHRoZSBtb3N0IGNvbW1vbiBkZXZpY2UgaXQncworICB1c2VkIGZvciBpcyBhIFBDLUNhcmQgKHdpdGggYW4gaW50ZXJuYWwgT0hDSS1VU0IgaW50ZXJmYWNlLCBiZWhpbmQKKyAgd2hpY2ggdGhlIEdTTSBpbnRlcmZhY2Ugc2l0cyksIG1hZGUgYnkgT3B0aW9uIEluYy4KKworICBTb21lIG9mIHRoZSAib25lIHBvcnQiIGRldmljZXMgYWN0dWFsbHkgZXhoaWJpdCBtdWx0aXBsZSBVU0IgaW5zdGFuY2VzCisgIG9uIHRoZSBVU0IgYnVzLiBUaGlzIGlzIG5vdCBhIGJ1ZywgdGhlc2UgcG9ydHMgYXJlIHVzZWQgZm9yIGRpZmZlcmVudAorICBkZXZpY2UgZmVhdHVyZXMuCiAqLwogCi0jZGVmaW5lIERSSVZFUl9WRVJTSU9OICJ2MC40IgorI2RlZmluZSBEUklWRVJfVkVSU0lPTiAidjAuNy4wIgogI2RlZmluZSBEUklWRVJfQVVUSE9SICJNYXR0aGlhcyBVcmxpY2hzIDxzbXVyZkBzbXVyZi5ub3Jpcy5kZT4iCi0jZGVmaW5lIERSSVZFUl9ERVNDICJPcHRpb24gQ2FyZCAoUEMtQ2FyZCB0bykgVVNCIHRvIFNlcmlhbCBEcml2ZXIiCisjZGVmaW5lIERSSVZFUl9ERVNDICJVU0IgRHJpdmVyIGZvciBHU00gbW9kZW1zIgogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CkBAIC03NCwyMiArOTMsNDUgQEAKIHN0YXRpYyBpbnQgIG9wdGlvbl9zZW5kX3NldHVwKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpOwogCiAvKiBWZW5kb3IgYW5kIHByb2R1Y3QgSURzICovCi0jZGVmaW5lIE9QVElPTl9WRU5ET1JfSUQJCQkweDBBRjAKLSNkZWZpbmUgSFVBV0VJX1ZFTkRPUl9JRAkJCTB4MTJEMQotI2RlZmluZSBBVURJT1ZPWF9WRU5ET1JfSUQJCQkweDBGM0QKKyNkZWZpbmUgT1BUSU9OX1ZFTkRPUl9JRCAgICAgICAgICAgICAgICAweDBBRjAKKyNkZWZpbmUgSFVBV0VJX1ZFTkRPUl9JRCAgICAgICAgICAgICAgICAweDEyRDEKKyNkZWZpbmUgQVVESU9WT1hfVkVORE9SX0lEICAgICAgICAgICAgICAweDBGM0QKKyNkZWZpbmUgU0lFUlJBV0lSRUxFU1NfVkVORE9SX0lEICAgICAgICAweDExOTkKKyNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCAgICAgICAweDE0MTAKIAotI2RlZmluZSBPUFRJT05fUFJPRFVDVF9PTEQJCTB4NTAwMAotI2RlZmluZSBPUFRJT05fUFJPRFVDVF9GVVNJT04JMHg2MDAwCi0jZGVmaW5lIE9QVElPTl9QUk9EVUNUX0ZVU0lPTjIJMHg2MzAwCi0jZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0U2MDAgICAgIDB4MTAwMQotI2RlZmluZSBBVURJT1ZPWF9QUk9EVUNUX0FJUkNBUkQgMHgwMTEyCisjZGVmaW5lIE9QVElPTl9QUk9EVUNUX09MRCAgICAgICAgICAgICAgMHg1MDAwCisjZGVmaW5lIE9QVElPTl9QUk9EVUNUX0ZVU0lPTiAgICAgICAgICAgMHg2MDAwCisjZGVmaW5lIE9QVElPTl9QUk9EVUNUX0ZVU0lPTjIgICAgICAgICAgMHg2MzAwCisjZGVmaW5lIE9QVElPTl9QUk9EVUNUX0NPQlJBICAgICAgICAgICAgMHg2NTAwCisjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0U2MDAgICAgICAgICAgICAgMHgxMDAxCisjZGVmaW5lIEFVRElPVk9YX1BST0RVQ1RfQUlSQ0FSRCAgICAgICAgMHgwMTEyCisjZGVmaW5lIFNJRVJSQVdJUkVMRVNTX1BST0RVQ1RfTUM4NzU1ICAgMHg2ODAyCisjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1U3NDAgICAgMHgxNDAwCiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBvcHRpb25faWRzW10gPSB7CiAJeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX09MRCkgfSwKIAl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVTSU9OKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9GVVNJT04yKSB9LAorCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9DT0JSQSkgfSwKIAl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTYwMCkgfSwKIAl7IFVTQl9ERVZJQ0UoQVVESU9WT1hfVkVORE9SX0lELCBBVURJT1ZPWF9QUk9EVUNUX0FJUkNBUkQpIH0sCisJeyBVU0JfREVWSUNFKFNJRVJSQVdJUkVMRVNTX1ZFTkRPUl9JRCwgU0lFUlJBV0lSRUxFU1NfUFJPRFVDVF9NQzg3NTUpIH0sCisJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVTc0MCkgfSwKKwl7IH0gLyogVGVybWluYXRpbmcgZW50cnkgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBvcHRpb25faWRzMVtdID0geworCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9PTEQpIH0sCisJeyBVU0JfREVWSUNFKE9QVElPTl9WRU5ET1JfSUQsIE9QVElPTl9QUk9EVUNUX0ZVU0lPTikgfSwKKwl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfRlVTSU9OMikgfSwKKwl7IFVTQl9ERVZJQ0UoT1BUSU9OX1ZFTkRPUl9JRCwgT1BUSU9OX1BST0RVQ1RfQ09CUkEpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0U2MDApIH0sCisJeyBVU0JfREVWSUNFKEFVRElPVk9YX1ZFTkRPUl9JRCwgQVVESU9WT1hfUFJPRFVDVF9BSVJDQVJEKSB9LAorCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX1U3NDApIH0sCisJeyB9IC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCit9Oworc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIG9wdGlvbl9pZHMzW10gPSB7CisJeyBVU0JfREVWSUNFKFNJRVJSQVdJUkVMRVNTX1ZFTkRPUl9JRCwgU0lFUlJBV0lSRUxFU1NfUFJPRFVDVF9NQzg3NTUpIH0sCiAJeyB9IC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiB9OwogCkBAIC0xMTEsMTIgKzE1MywzOSBAQAogCQkub3duZXIgPQlUSElTX01PRFVMRSwKIAkJLm5hbWUgPQkJIm9wdGlvbiIsCiAJfSwKLQkuZGVzY3JpcHRpb24gICAgICAgPSAiT3B0aW9uIDNHIGRhdGEgY2FyZCIsCi0JLmlkX3RhYmxlICAgICAgICAgID0gb3B0aW9uX2lkcywKKwkuZGVzY3JpcHRpb24gICAgICAgPSAiR1NNIG1vZGVtICgzLXBvcnQpIiwKKwkuaWRfdGFibGUgICAgICAgICAgPSBvcHRpb25faWRzMywKIAkubnVtX2ludGVycnVwdF9pbiAgPSBOVU1fRE9OVF9DQVJFLAogCS5udW1fYnVsa19pbiAgICAgICA9IE5VTV9ET05UX0NBUkUsCiAJLm51bV9idWxrX291dCAgICAgID0gTlVNX0RPTlRfQ0FSRSwKLQkubnVtX3BvcnRzICAgICAgICAgPSAxLCAvKiAzLCBidXQgdGhlIGNhcmQgcmVwb3J0cyBpdHMgcG9ydHMgc2VwYXJhdGVseSAqLworCS5udW1fcG9ydHMgICAgICAgICA9IDMsCisJLm9wZW4gICAgICAgICAgICAgID0gb3B0aW9uX29wZW4sCisJLmNsb3NlICAgICAgICAgICAgID0gb3B0aW9uX2Nsb3NlLAorCS53cml0ZSAgICAgICAgICAgICA9IG9wdGlvbl93cml0ZSwKKwkud3JpdGVfcm9vbSAgICAgICAgPSBvcHRpb25fd3JpdGVfcm9vbSwKKwkuY2hhcnNfaW5fYnVmZmVyICAgPSBvcHRpb25fY2hhcnNfaW5fYnVmZmVyLAorCS50aHJvdHRsZSAgICAgICAgICA9IG9wdGlvbl9yeF90aHJvdHRsZSwKKwkudW50aHJvdHRsZSAgICAgICAgPSBvcHRpb25fcnhfdW50aHJvdHRsZSwKKwkuc2V0X3Rlcm1pb3MgICAgICAgPSBvcHRpb25fc2V0X3Rlcm1pb3MsCisJLmJyZWFrX2N0bCAgICAgICAgID0gb3B0aW9uX2JyZWFrX2N0bCwKKwkudGlvY21nZXQgICAgICAgICAgPSBvcHRpb25fdGlvY21nZXQsCisJLnRpb2Ntc2V0ICAgICAgICAgID0gb3B0aW9uX3Rpb2Ntc2V0LAorCS5hdHRhY2ggICAgICAgICAgICA9IG9wdGlvbl9zdGFydHVwLAorCS5zaHV0ZG93biAgICAgICAgICA9IG9wdGlvbl9zaHV0ZG93biwKKwkucmVhZF9pbnRfY2FsbGJhY2sgPSBvcHRpb25faW5zdGF0X2NhbGxiYWNrLAorfTsKKworc3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBvcHRpb25fMXBvcnRfZGV2aWNlID0geworCS5kcml2ZXIgPSB7CisJCS5vd25lciA9CVRISVNfTU9EVUxFLAorCQkubmFtZSA9CQkib3B0aW9uIiwKKwl9LAorCS5kZXNjcmlwdGlvbiAgICAgICA9ICJHU00gbW9kZW0gKDEtcG9ydCkiLAorCS5pZF90YWJsZSAgICAgICAgICA9IG9wdGlvbl9pZHMxLAorCS5udW1faW50ZXJydXB0X2luICA9IE5VTV9ET05UX0NBUkUsCisJLm51bV9idWxrX2luICAgICAgID0gTlVNX0RPTlRfQ0FSRSwKKwkubnVtX2J1bGtfb3V0ICAgICAgPSBOVU1fRE9OVF9DQVJFLAorCS5udW1fcG9ydHMgICAgICAgICA9IDEsCiAJLm9wZW4gICAgICAgICAgICAgID0gb3B0aW9uX29wZW4sCiAJLmNsb3NlICAgICAgICAgICAgID0gb3B0aW9uX2Nsb3NlLAogCS53cml0ZSAgICAgICAgICAgICA9IG9wdGlvbl93cml0ZSwKQEAgLTE3MCw2ICsyMzksOSBAQAogc3RhdGljIGludCBfX2luaXQgb3B0aW9uX2luaXQodm9pZCkKIHsKIAlpbnQgcmV0dmFsOworCXJldHZhbCA9IHVzYl9zZXJpYWxfcmVnaXN0ZXIoJm9wdGlvbl8xcG9ydF9kZXZpY2UpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZmFpbGVkXzFwb3J0X2RldmljZV9yZWdpc3RlcjsKIAlyZXR2YWwgPSB1c2Jfc2VyaWFsX3JlZ2lzdGVyKCZvcHRpb25fM3BvcnRfZGV2aWNlKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxlZF8zcG9ydF9kZXZpY2VfcmVnaXN0ZXI7CkBAIC0xODQsNiArMjU2LDggQEAKIGZhaWxlZF9kcml2ZXJfcmVnaXN0ZXI6CiAJdXNiX3NlcmlhbF9kZXJlZ2lzdGVyICgmb3B0aW9uXzNwb3J0X2RldmljZSk7CiBmYWlsZWRfM3BvcnRfZGV2aWNlX3JlZ2lzdGVyOgorCXVzYl9zZXJpYWxfZGVyZWdpc3RlciAoJm9wdGlvbl8xcG9ydF9kZXZpY2UpOworZmFpbGVkXzFwb3J0X2RldmljZV9yZWdpc3RlcjoKIAlyZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xOTEsNiArMjY1LDcgQEAKIHsKIAl1c2JfZGVyZWdpc3RlciAoJm9wdGlvbl9kcml2ZXIpOwogCXVzYl9zZXJpYWxfZGVyZWdpc3RlciAoJm9wdGlvbl8zcG9ydF9kZXZpY2UpOworCXVzYl9zZXJpYWxfZGVyZWdpc3RlciAoJm9wdGlvbl8xcG9ydF9kZXZpY2UpOwogfQogCiBtb2R1bGVfaW5pdChvcHRpb25faW5pdCk7CkBAIC0zNjUsOCArNDQwLDcgQEAKIAogCXBvcnQgPSAoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqKSB1cmItPmNvbnRleHQ7CiAKLQlpZiAocG9ydC0+b3Blbl9jb3VudCkKLQkJc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQocG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIG9wdGlvbl9pbnN0YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKQEAgLTU3MywyNyArNjQ3LDMwIEBACiAvKiBTZXR1cCB1cmJzICovCiBzdGF0aWMgdm9pZCBvcHRpb25fc2V0dXBfdXJicyhzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogewotCWludCBqOworCWludCBpLGo7CiAJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydDsKIAlzdHJ1Y3Qgb3B0aW9uX3BvcnRfcHJpdmF0ZSAqcG9ydGRhdGE7CiAKIAlkYmcoIiVzIiwgX19GVU5DVElPTl9fKTsKIAotCXBvcnQgPSBzZXJpYWwtPnBvcnRbMF07Ci0JcG9ydGRhdGEgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7IGkrKykgeworCQlwb3J0ID0gc2VyaWFsLT5wb3J0W2ldOworCQlwb3J0ZGF0YSA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsKIAogCS8qIERvIGluZGF0IGVuZHBvaW50cyBmaXJzdCAqLwotCWZvciAoaiA9IDA7IGogPCBOX0lOX1VSQjsgKytqKSB7Ci0JCXBvcnRkYXRhLT5pbl91cmJzW2pdID0gb3B0aW9uX3NldHVwX3VyYiAoc2VyaWFsLAotICAgICAgICAgICAgICAgICAgcG9ydC0+YnVsa19pbl9lbmRwb2ludEFkZHJlc3MsIFVTQl9ESVJfSU4sIHBvcnQsCi0gICAgICAgICAgICAgICAgICBwb3J0ZGF0YS0+aW5fYnVmZmVyW2pdLCBJTl9CVUZMRU4sIG9wdGlvbl9pbmRhdF9jYWxsYmFjayk7Ci0JfQorCQlmb3IgKGogPSAwOyBqIDwgTl9JTl9VUkI7ICsraikgeworCQkJcG9ydGRhdGEtPmluX3VyYnNbal0gPSBvcHRpb25fc2V0dXBfdXJiIChzZXJpYWwsCisgICAgICAgICAgICAgICAgICAJcG9ydC0+YnVsa19pbl9lbmRwb2ludEFkZHJlc3MsIFVTQl9ESVJfSU4sIHBvcnQsCisgICAgICAgICAgICAgICAgICAJcG9ydGRhdGEtPmluX2J1ZmZlcltqXSwgSU5fQlVGTEVOLCBvcHRpb25faW5kYXRfY2FsbGJhY2spOworCQl9CiAKLQkvKiBvdXRkYXQgZW5kcG9pbnRzICovCi0JZm9yIChqID0gMDsgaiA8IE5fT1VUX1VSQjsgKytqKSB7Ci0JCXBvcnRkYXRhLT5vdXRfdXJic1tqXSA9IG9wdGlvbl9zZXR1cF91cmIgKHNlcmlhbCwKLSAgICAgICAgICAgICAgICAgIHBvcnQtPmJ1bGtfb3V0X2VuZHBvaW50QWRkcmVzcywgVVNCX0RJUl9PVVQsIHBvcnQsCi0gICAgICAgICAgICAgICAgICBwb3J0ZGF0YS0+b3V0X2J1ZmZlcltqXSwgT1VUX0JVRkxFTiwgb3B0aW9uX291dGRhdF9jYWxsYmFjayk7CisJCS8qIG91dGRhdCBlbmRwb2ludHMgKi8KKwkJZm9yIChqID0gMDsgaiA8IE5fT1VUX1VSQjsgKytqKSB7CisJCQlwb3J0ZGF0YS0+b3V0X3VyYnNbal0gPSBvcHRpb25fc2V0dXBfdXJiIChzZXJpYWwsCisgICAgICAgICAgICAgICAgICAJcG9ydC0+YnVsa19vdXRfZW5kcG9pbnRBZGRyZXNzLCBVU0JfRElSX09VVCwgcG9ydCwKKyAgICAgICAgICAgICAgICAgIAlwb3J0ZGF0YS0+b3V0X2J1ZmZlcltqXSwgT1VUX0JVRkxFTiwgb3B0aW9uX291dGRhdF9jYWxsYmFjayk7CisJCX0KIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuYwppbmRleCBjOTY3MTRiLi5kODg3MDQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3BsMjMwMy5jCkBAIC0zMTQsNyArMzE0LDcgQEAKIAkJLy8gVE9ETzogcmVzY2hlZHVsZSBwbDIzMDNfc2VuZAogCX0KIAotCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHBvcnQpOwogfQogCiBzdGF0aWMgaW50IHBsMjMwM193cml0ZV9yb29tKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpCkBAIC02MDAsNyArNjAwLDcgQEAKIAl1bnNpZ25lZCBpbnQgY19jZmxhZzsKIAlpbnQgYnBzOwogCWxvbmcgdGltZW91dDsKLQl3YWl0X3F1ZXVlX3Qgd2FpdDsJCQkJCQlcCisJd2FpdF9xdWV1ZV90IHdhaXQ7CiAKIAlkYmcoIiVzIC0gcG9ydCAlZCIsIF9fRlVOQ1RJT05fXywgcG9ydC0+bnVtYmVyKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMKaW5kZXggOWMzNmYwZS4uYTMwMTM1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jCkBAIC0xNjIsMTIgKzE2MiwxOSBAQAogCQl9CiAJfQogCisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsJCS8qIHBvcnQtPndvcmsgKi8KKwogCXVzYl9wdXRfZGV2KHNlcmlhbC0+ZGV2KTsKIAogCS8qIGZyZWUgdXAgYW55IG1lbW9yeSB0aGF0IHdlIGFsbG9jYXRlZCAqLwogCWtmcmVlIChzZXJpYWwpOwogfQogCit2b2lkIHVzYl9zZXJpYWxfcHV0KHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCit7CisJa3JlZl9wdXQoJnNlcmlhbC0+a3JlZiwgZGVzdHJveV9zZXJpYWwpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIERyaXZlciB0dHkgaW50ZXJmYWNlIGZ1bmN0aW9ucwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjAxLDEyICsyMDgsMTIgQEAKIAkgCiAJKytwb3J0LT5vcGVuX2NvdW50OwogCi0JaWYgKHBvcnQtPm9wZW5fY291bnQgPT0gMSkgeworCS8qIHNldCB1cCBvdXIgcG9ydCBzdHJ1Y3R1cmUgbWFraW5nIHRoZSB0dHkgZHJpdmVyCisJICogcmVtZW1iZXIgb3VyIHBvcnQgb2JqZWN0LCBhbmQgdXMgaXQgKi8KKwl0dHktPmRyaXZlcl9kYXRhID0gcG9ydDsKKwlwb3J0LT50dHkgPSB0dHk7CiAKLQkJLyogc2V0IHVwIG91ciBwb3J0IHN0cnVjdHVyZSBtYWtpbmcgdGhlIHR0eSBkcml2ZXIKLQkJICogcmVtZW1iZXIgb3VyIHBvcnQgb2JqZWN0LCBhbmQgdXMgaXQgKi8KLQkJdHR5LT5kcml2ZXJfZGF0YSA9IHBvcnQ7Ci0JCXBvcnQtPnR0eSA9IHR0eTsKKwlpZiAocG9ydC0+b3Blbl9jb3VudCA9PSAxKSB7CiAKIAkJLyogbG9jayB0aGlzIG1vZHVsZSBiZWZvcmUgd2UgY2FsbCBpdAogCQkgKiB0aGlzIG1heSBmYWlsLCB3aGljaCBtZWFucyB3ZSBtdXN0IGJhaWwgb3V0LApAQCAtMjMwLDkgKzIzNywxMSBAQAogCW1vZHVsZV9wdXQoc2VyaWFsLT50eXBlLT5kcml2ZXIub3duZXIpOwogYmFpbG91dF9tdXRleF91bmxvY2s6CiAJcG9ydC0+b3Blbl9jb3VudCA9IDA7CisJdHR5LT5kcml2ZXJfZGF0YSA9IE5VTEw7CisJcG9ydC0+dHR5ID0gTlVMTDsKIAltdXRleF91bmxvY2soJnBvcnQtPm11dGV4KTsKIGJhaWxvdXRfa3JlZl9wdXQ6Ci0Ja3JlZl9wdXQoJnNlcmlhbC0+a3JlZiwgZGVzdHJveV9zZXJpYWwpOworCXVzYl9zZXJpYWxfcHV0KHNlcmlhbCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjY4LDcgKzI3Nyw3IEBACiAJfQogCiAJbXV0ZXhfdW5sb2NrKCZwb3J0LT5tdXRleCk7Ci0Ja3JlZl9wdXQoJnBvcnQtPnNlcmlhbC0+a3JlZiwgZGVzdHJveV9zZXJpYWwpOworCXVzYl9zZXJpYWxfcHV0KHBvcnQtPnNlcmlhbCk7CiB9CiAKIHN0YXRpYyBpbnQgc2VyaWFsX3dyaXRlIChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpCkBAIC0yNzYsNyArMjg1LDcgQEAKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdHR5LT5kcml2ZXJfZGF0YTsKIAlpbnQgcmV0dmFsID0gLUVJTlZBTDsKIAotCWlmICghcG9ydCkKKwlpZiAoIXBvcnQgfHwgcG9ydC0+c2VyaWFsLT5kZXYtPnN0YXRlID09IFVTQl9TVEFURV9OT1RBVFRBQ0hFRCkKIAkJZ290byBleGl0OwogCiAJZGJnKCIlcyAtIHBvcnQgJWQsICVkIGJ5dGUocykiLCBfX0ZVTkNUSU9OX18sIHBvcnQtPm51bWJlciwgY291bnQpOwpAQCAtMjk2LDcgKzMwNSw3IEBACiBzdGF0aWMgaW50IHNlcmlhbF93cml0ZV9yb29tIChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KSAKIHsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdHR5LT5kcml2ZXJfZGF0YTsKLQlpbnQgcmV0dmFsID0gLUVJTlZBTDsKKwlpbnQgcmV0dmFsID0gLUVOT0RFVjsKIAogCWlmICghcG9ydCkKIAkJZ290byBleGl0OwpAQCAtMzE4LDcgKzMyNyw3IEBACiBzdGF0aWMgaW50IHNlcmlhbF9jaGFyc19pbl9idWZmZXIgKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpIAogewogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSB0dHktPmRyaXZlcl9kYXRhOwotCWludCByZXR2YWwgPSAtRUlOVkFMOworCWludCByZXR2YWwgPSAtRU5PREVWOwogCiAJaWYgKCFwb3J0KQogCQlnb3RvIGV4aXQ7CkBAIC00NzMsNyArNDgyLDcgQEAKIAkJCWJlZ2luICs9IGxlbmd0aDsKIAkJCWxlbmd0aCA9IDA7CiAJCX0KLQkJa3JlZl9wdXQoJnNlcmlhbC0+a3JlZiwgZGVzdHJveV9zZXJpYWwpOworCQl1c2Jfc2VyaWFsX3B1dChzZXJpYWwpOwogCX0KIAkqZW9mID0gMTsKIGRvbmU6CkBAIC00ODgsMTkgKzQ5NywxOCBAQAogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSB0dHktPmRyaXZlcl9kYXRhOwogCiAJaWYgKCFwb3J0KQotCQlnb3RvIGV4aXQ7CisJCXJldHVybiAtRU5PREVWOwogCiAJZGJnKCIlcyAtIHBvcnQgJWQiLCBfX0ZVTkNUSU9OX18sIHBvcnQtPm51bWJlcik7CiAKIAlpZiAoIXBvcnQtPm9wZW5fY291bnQpIHsKIAkJZGJnKCIlcyAtIHBvcnQgbm90IG9wZW4iLCBfX0ZVTkNUSU9OX18pOwotCQlnb3RvIGV4aXQ7CisJCXJldHVybiAtRU5PREVWOwogCX0KIAogCWlmIChwb3J0LT5zZXJpYWwtPnR5cGUtPnRpb2NtZ2V0KQogCQlyZXR1cm4gcG9ydC0+c2VyaWFsLT50eXBlLT50aW9jbWdldChwb3J0LCBmaWxlKTsKIAotZXhpdDoKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIApAQCAtNTEwLDIzICs1MTgsMzIgQEAKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdHR5LT5kcml2ZXJfZGF0YTsKIAogCWlmICghcG9ydCkKLQkJZ290byBleGl0OworCQlyZXR1cm4gLUVOT0RFVjsKIAogCWRiZygiJXMgLSBwb3J0ICVkIiwgX19GVU5DVElPTl9fLCBwb3J0LT5udW1iZXIpOwogCiAJaWYgKCFwb3J0LT5vcGVuX2NvdW50KSB7CiAJCWRiZygiJXMgLSBwb3J0IG5vdCBvcGVuIiwgX19GVU5DVElPTl9fKTsKLQkJZ290byBleGl0OworCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKIAlpZiAocG9ydC0+c2VyaWFsLT50eXBlLT50aW9jbXNldCkKIAkJcmV0dXJuIHBvcnQtPnNlcmlhbC0+dHlwZS0+dGlvY21zZXQocG9ydCwgZmlsZSwgc2V0LCBjbGVhcik7CiAKLWV4aXQ6CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXZvaWQgdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQodm9pZCAqcHJpdmF0ZSkKKy8qCisgKiBXZSB3b3VsZCBiZSBjYWxsaW5nIHR0eV93YWtldXAgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkgc29tZSBsaW5lCisgKiBkaXNjaXBsaW5lcyBoYXZlIGFuIGFubm95aW5nIGhhYml0IG9mIGNhbGxpbmcgdHR5LT53cml0ZSBmcm9tCisgKiB0aGUgd3JpdGUgd2FrZXVwIGNhbGxiYWNrIChlLmcuIG5faGRsYy5jKS4KKyAqLwordm9pZCB1c2Jfc2VyaWFsX3BvcnRfc29mdGludChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQoreworCXNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOworfQorCitzdGF0aWMgdm9pZCB1c2Jfc2VyaWFsX3BvcnRfd29yayh2b2lkICpwcml2YXRlKQogewogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSBwcml2YXRlOwogCXN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CkBAIC03ODksNyArODA2LDcgQEAKIAkJcG9ydC0+c2VyaWFsID0gc2VyaWFsOwogCQlzcGluX2xvY2tfaW5pdCgmcG9ydC0+bG9jayk7CiAJCW11dGV4X2luaXQoJnBvcnQtPm11dGV4KTsKLQkJSU5JVF9XT1JLKCZwb3J0LT53b3JrLCB1c2Jfc2VyaWFsX3BvcnRfc29mdGludCwgcG9ydCk7CisJCUlOSVRfV09SSygmcG9ydC0+d29yaywgdXNiX3NlcmlhbF9wb3J0X3dvcmssIHBvcnQpOwogCQlzZXJpYWwtPnBvcnRbaV0gPSBwb3J0OwogCX0KIApAQCAtOTg1LDYgKzEwMDIsNyBAQAogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZpbnRlcmZhY2UtPmRldjsKIAlzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0OwogCisJdXNiX3NlcmlhbF9jb25zb2xlX2Rpc2Nvbm5lY3Qoc2VyaWFsKTsKIAlkYmcgKCIlcyIsIF9fRlVOQ1RJT05fXyk7CiAKIAl1c2Jfc2V0X2ludGZkYXRhIChpbnRlcmZhY2UsIE5VTEwpOwpAQCAtOTk2LDcgKzEwMTQsNyBAQAogCQl9CiAJCS8qIGxldCB0aGUgbGFzdCBob2xkZXIgb2YgdGhpcyBvYmplY3QgCiAJCSAqIGNhdXNlIGl0IHRvIGJlIGNsZWFuZWQgdXAgKi8KLQkJa3JlZl9wdXQoJnNlcmlhbC0+a3JlZiwgZGVzdHJveV9zZXJpYWwpOworCQl1c2Jfc2VyaWFsX3B1dChzZXJpYWwpOwogCX0KIAlkZXZfaW5mbyhkZXYsICJkZXZpY2UgZGlzY29ubmVjdGVkXG4iKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5oCmluZGV4IGRjODlkODcuLmQ1M2VhOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmgKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuaApAQCAtMjM2LDcgKzIzNiw3IEBACiAKIGV4dGVybiBpbnQgIHVzYl9zZXJpYWxfcmVnaXN0ZXIoc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyICpkcml2ZXIpOwogZXh0ZXJuIHZvaWQgdXNiX3NlcmlhbF9kZXJlZ2lzdGVyKHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciAqZHJpdmVyKTsKLWV4dGVybiB2b2lkIHVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KHZvaWQgKnByaXZhdGUpOworZXh0ZXJuIHZvaWQgdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCk7CiAKIGV4dGVybiBpbnQgdXNiX3NlcmlhbF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCk7CiBleHRlcm4gdm9pZCB1c2Jfc2VyaWFsX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlmYWNlKTsKQEAgLTI0OCwxMyArMjQ4LDE2IEBACiAjaWZkZWYgQ09ORklHX1VTQl9TRVJJQUxfQ09OU09MRQogZXh0ZXJuIHZvaWQgdXNiX3NlcmlhbF9jb25zb2xlX2luaXQgKGludCBkZWJ1ZywgaW50IG1pbm9yKTsKIGV4dGVybiB2b2lkIHVzYl9zZXJpYWxfY29uc29sZV9leGl0ICh2b2lkKTsKK2V4dGVybiB2b2lkIHVzYl9zZXJpYWxfY29uc29sZV9kaXNjb25uZWN0KHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCB1c2Jfc2VyaWFsX2NvbnNvbGVfaW5pdCAoaW50IGRlYnVnLCBpbnQgbWlub3IpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIHVzYl9zZXJpYWxfY29uc29sZV9leGl0ICh2b2lkKSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCB1c2Jfc2VyaWFsX2NvbnNvbGVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKSB7fQogI2VuZGlmCiAKIC8qIEZ1bmN0aW9ucyBuZWVkZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIHVzYnNlcmlhbCBjb3JlICovCiBleHRlcm4gc3RydWN0IHVzYl9zZXJpYWwgKnVzYl9zZXJpYWxfZ2V0X2J5X2luZGV4ICh1bnNpZ25lZCBpbnQgbWlub3IpOworZXh0ZXJuIHZvaWQgdXNiX3NlcmlhbF9wdXQoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCk7CiBleHRlcm4gaW50IHVzYl9zZXJpYWxfZ2VuZXJpY19vcGVuIChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CiBleHRlcm4gaW50IHVzYl9zZXJpYWxfZ2VuZXJpY193cml0ZSAoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogZXh0ZXJuIHZvaWQgdXNiX3NlcmlhbF9nZW5lcmljX2Nsb3NlIChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvdmlzb3IuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC92aXNvci5jCmluZGV4IGY1YzM4NDEuLjllODliOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC92aXNvci5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC92aXNvci5jCkBAIC00ODAsNyArNDgwLDcgQEAKIAktLXByaXYtPm91dHN0YW5kaW5nX3VyYnM7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwogCi0Jc2NoZWR1bGVfd29yaygmcG9ydC0+d29yayk7CisJdXNiX3NlcmlhbF9wb3J0X3NvZnRpbnQocG9ydCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3doaXRlaGVhdC5jCmluZGV4IGY4MDY1NTMuLjViMDZmYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC93aGl0ZWhlYXQuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvd2hpdGVoZWF0LmMKQEAgLTM4OCw3ICszODgsNyBAQAogCWlmIChyZXQpIHsKIAkJZXJyKCIlczogQ291bGRuJ3Qgc2VuZCBjb21tYW5kIFslZF0iLCBzZXJpYWwtPnR5cGUtPmRlc2NyaXB0aW9uLCByZXQpOwogCQlnb3RvIG5vX2Zpcm13YXJlOwotCX0gZWxzZSBpZiAoYWxlbiAhPSBzaXplb2YoY29tbWFuZCkpIHsKKwl9IGVsc2UgaWYgKGFsZW4gIT0gMikgewogCQllcnIoIiVzOiBTZW5kIGNvbW1hbmQgaW5jb21wbGV0ZSBbJWRdIiwgc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgYWxlbik7CiAJCWdvdG8gbm9fZmlybXdhcmU7CiAJfQpAQCAtNDAwLDcgKzQwMCw3IEBACiAJaWYgKHJldCkgewogCQllcnIoIiVzOiBDb3VsZG4ndCBnZXQgcmVzdWx0cyBbJWRdIiwgc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgcmV0KTsKIAkJZ290byBub19maXJtd2FyZTsKLQl9IGVsc2UgaWYgKGFsZW4gIT0gc2l6ZW9mKHJlc3VsdCkpIHsKKwl9IGVsc2UgaWYgKGFsZW4gIT0gc2l6ZW9mKCpod19pbmZvKSArIDEpIHsKIAkJZXJyKCIlczogR2V0IHJlc3VsdHMgaW5jb21wbGV0ZSBbJWRdIiwgc2VyaWFsLT50eXBlLT5kZXNjcmlwdGlvbiwgYWxlbik7CiAJCWdvdG8gbm9fZmlybXdhcmU7CiAJfSBlbHNlIGlmIChyZXN1bHRbMF0gIT0gY29tbWFuZFswXSkgewpAQCAtMTA4OSw5ICsxMDg5LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCXVzYl9zZXJpYWxfcG9ydF9zb2Z0aW50KCh2b2lkICopcG9ydCk7Ci0KLQlzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsKKwl1c2Jfc2VyaWFsX3BvcnRfc29mdGludChwb3J0KTsKIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL29uZXRvdWNoLmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL29uZXRvdWNoLmMKaW5kZXggNTVlZTJkMy4uMDI2YTU4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9vbmV0b3VjaC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvb25ldG91Y2guYwpAQCAtMzQsOSArMzQsOCBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvdXNiLmg+CiAjaW5jbHVkZSA8bGludXgvdXNiX2NoOS5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYl9pbnB1dC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9pbnB1dC5oPgogI2luY2x1ZGUgInVzYi5oIgogI2luY2x1ZGUgIm9uZXRvdWNoLmgiCiAjaW5jbHVkZSAiZGVidWcuaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYwppbmRleCA1ZjExZTE5Li41NzE1MjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3Njc2lnbHVlLmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zY3NpZ2x1ZS5jCkBAIC0yODYsMTEgKzI4Niw3IEBACiAJaW50IHJlc3VsdDsKIAogCVVTX0RFQlVHUCgiJXMgY2FsbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwotCi0JbXV0ZXhfbG9jaygmKHVzLT5kZXZfbXV0ZXgpKTsKIAlyZXN1bHQgPSB1c2Jfc3Rvcl9wb3J0X3Jlc2V0KHVzKTsKLQltdXRleF91bmxvY2soJnVzLT5kZXZfbXV0ZXgpOwotCiAJcmV0dXJuIHJlc3VsdCA8IDAgPyBGQUlMRUQgOiBTVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3NodXR0bGVfdXNiYXQuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCmluZGV4IGYyYmM1YzkuLjhmY2VjMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCkBAIC0xMzEsMjggKzEzMSwzMCBAQAogICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcGVyZm9ybSBhIGJ1bGsgcmVhZAogICovCiBzdGF0aWMgaW50IHVzYmF0X2J1bGtfcmVhZChzdHJ1Y3QgdXNfZGF0YSAqdXMsCi0JCQkJCQkJIHVuc2lnbmVkIGNoYXIgKmRhdGEsCi0JCQkJCQkJIHVuc2lnbmVkIGludCBsZW4pCisJCQkgICB1bnNpZ25lZCBjaGFyICpkYXRhLAorCQkJICAgdW5zaWduZWQgaW50IGxlbiwKKwkJCSAgIGludCB1c2Vfc2cpCiB7CiAJaWYgKGxlbiA9PSAwKQogCQlyZXR1cm4gVVNCX1NUT1JfWEZFUl9HT09EOwogCiAJVVNfREVCVUdQKCJ1c2JhdF9idWxrX3JlYWQ6IGxlbiA9ICVkXG4iLCBsZW4pOwotCXJldHVybiB1c2Jfc3Rvcl9idWxrX3RyYW5zZmVyX2J1Zih1cywgdXMtPnJlY3ZfYnVsa19waXBlLCBkYXRhLCBsZW4sIE5VTEwpOworCXJldHVybiB1c2Jfc3Rvcl9idWxrX3RyYW5zZmVyX3NnKHVzLCB1cy0+cmVjdl9idWxrX3BpcGUsIGRhdGEsIGxlbiwgdXNlX3NnLCBOVUxMKTsKIH0KIAogLyoKICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gYSBidWxrIHdyaXRlCiAgKi8KIHN0YXRpYyBpbnQgdXNiYXRfYnVsa193cml0ZShzdHJ1Y3QgdXNfZGF0YSAqdXMsCi0JCQkJCQkJdW5zaWduZWQgY2hhciAqZGF0YSwKLQkJCQkJCQl1bnNpZ25lZCBpbnQgbGVuKQorCQkJICAgIHVuc2lnbmVkIGNoYXIgKmRhdGEsCisJCQkgICAgdW5zaWduZWQgaW50IGxlbiwKKwkJCSAgICBpbnQgdXNlX3NnKQogewogCWlmIChsZW4gPT0gMCkKIAkJcmV0dXJuIFVTQl9TVE9SX1hGRVJfR09PRDsKIAogCVVTX0RFQlVHUCgidXNiYXRfYnVsa193cml0ZTogIGxlbiA9ICVkXG4iLCBsZW4pOwotCXJldHVybiB1c2Jfc3Rvcl9idWxrX3RyYW5zZmVyX2J1Zih1cywgdXMtPnNlbmRfYnVsa19waXBlLCBkYXRhLCBsZW4sIE5VTEwpOworCXJldHVybiB1c2Jfc3Rvcl9idWxrX3RyYW5zZmVyX3NnKHVzLCB1cy0+c2VuZF9idWxrX3BpcGUsIGRhdGEsIGxlbiwgdXNlX3NnLCBOVUxMKTsKIH0KIAogLyoKQEAgLTMxNyw3ICszMTksOCBAQAogICovCiBzdGF0aWMgaW50IHVzYmF0X3JlYWRfYmxvY2soc3RydWN0IHVzX2RhdGEgKnVzLAogCQkJICAgIHVuc2lnbmVkIGNoYXIgKmNvbnRlbnQsCi0JCQkgICAgdW5zaWduZWQgc2hvcnQgbGVuKQorCQkJICAgIHVuc2lnbmVkIHNob3J0IGxlbiwKKwkJCSAgICBpbnQgdXNlX3NnKQogewogCWludCByZXN1bHQ7CiAJdW5zaWduZWQgY2hhciAqY29tbWFuZCA9IHVzLT5pb2J1ZjsKQEAgLTMzOCw3ICszNDEsNyBAQAogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKQogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCi0JcmVzdWx0ID0gdXNiYXRfYnVsa19yZWFkKHVzLCBjb250ZW50LCBsZW4pOworCXJlc3VsdCA9IHVzYmF0X2J1bGtfcmVhZCh1cywgY29udGVudCwgbGVuLCB1c2Vfc2cpOwogCXJldHVybiAocmVzdWx0ID09IFVTQl9TVE9SX1hGRVJfR09PRCA/CiAJCQlVU0JfU1RPUl9UUkFOU1BPUlRfR09PRCA6IFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUik7CiB9CkBAIC0zNTAsNyArMzUzLDggQEAKIAkJCSAgICAgdW5zaWduZWQgY2hhciBhY2Nlc3MsCiAJCQkgICAgIHVuc2lnbmVkIGNoYXIgKmNvbnRlbnQsCiAJCQkgICAgIHVuc2lnbmVkIHNob3J0IGxlbiwKLQkJCSAgICAgaW50IG1pbnV0ZXMpCisJCQkgICAgIGludCBtaW51dGVzLAorCQkJICAgICBpbnQgdXNlX3NnKQogewogCWludCByZXN1bHQ7CiAJdW5zaWduZWQgY2hhciAqY29tbWFuZCA9IHVzLT5pb2J1ZjsKQEAgLTM3Miw3ICszNzYsNyBAQAogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKQogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCi0JcmVzdWx0ID0gdXNiYXRfYnVsa193cml0ZSh1cywgY29udGVudCwgbGVuKTsKKwlyZXN1bHQgPSB1c2JhdF9idWxrX3dyaXRlKHVzLCBjb250ZW50LCBsZW4sIHVzZV9zZyk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpCiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAKQEAgLTQ2NSw3ICs0NjksNyBAQAogCQkJCWRhdGFbMSsoajw8MSldID0gZGF0YV9vdXRbal07CiAJCQl9CiAKLQkJCXJlc3VsdCA9IHVzYmF0X2J1bGtfd3JpdGUodXMsIGRhdGEsIG51bV9yZWdpc3RlcnMqMik7CisJCQlyZXN1bHQgPSB1c2JhdF9idWxrX3dyaXRlKHVzLCBkYXRhLCBudW1fcmVnaXN0ZXJzKjIsIDApOwogCQkJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpCiAJCQkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIApAQCAtNTgzLDcgKzU4Nyw3IEBACiAJfQogCiAJLyogU2VuZCB0aGUgZGF0YSAqLwotCXJlc3VsdCA9IHVzYmF0X2J1bGtfd3JpdGUodXMsIGRhdGEsIG51bV9yZWdpc3RlcnMqMik7CisJcmVzdWx0ID0gdXNiYXRfYnVsa193cml0ZSh1cywgZGF0YSwgbnVtX3JlZ2lzdGVycyoyLCAwKTsKIAlpZiAocmVzdWx0ICE9IFVTQl9TVE9SX1hGRVJfR09PRCkKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIApAQCAtNjA2LDggKzYxMCw5IEBACiAgKiBvdGhlciByZWxhdGVkIGRldGFpbHMpIGFyZSBkZWZpbmVkIGJlZm9yZWhhbmQgd2l0aCBfc2V0X3NodXR0bGVfZmVhdHVyZXMoKS4KICAqLwogc3RhdGljIGludCB1c2JhdF9yZWFkX2Jsb2NrcyhzdHJ1Y3QgdXNfZGF0YSAqdXMsCi0JCQkJCQkJIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwKLQkJCQkJCQkgaW50IGxlbikKKwkJCSAgICAgdW5zaWduZWQgY2hhciAqYnVmZmVyLAorCQkJICAgICBpbnQgbGVuLAorCQkJICAgICBpbnQgdXNlX3NnKQogewogCWludCByZXN1bHQ7CiAJdW5zaWduZWQgY2hhciAqY29tbWFuZCA9IHVzLT5pb2J1ZjsKQEAgLTYyNyw3ICs2MzIsNyBAQAogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0ZBSUxFRDsKIAkKIAkvKiBSZWFkIHRoZSBibG9ja3Mgd2UganVzdCBhc2tlZCBmb3IgKi8KLQlyZXN1bHQgPSB1c2JhdF9idWxrX3JlYWQodXMsIGJ1ZmZlciwgbGVuKTsKKwlyZXN1bHQgPSB1c2JhdF9idWxrX3JlYWQodXMsIGJ1ZmZlciwgbGVuLCB1c2Vfc2cpOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKQogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0ZBSUxFRDsKIApAQCAtNjQ4LDcgKzY1Myw4IEBACiAgKi8KIHN0YXRpYyBpbnQgdXNiYXRfd3JpdGVfYmxvY2tzKHN0cnVjdCB1c19kYXRhICp1cywKIAkJCQkJCQkgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwKLQkJCQkJCQkgIGludCBsZW4pCisJCQkgICAgICBpbnQgbGVuLAorCQkJICAgICAgaW50IHVzZV9zZykKIHsKIAlpbnQgcmVzdWx0OwogCXVuc2lnbmVkIGNoYXIgKmNvbW1hbmQgPSB1cy0+aW9idWY7CkBAIC02NjgsNyArNjc0LDcgQEAKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9GQUlMRUQ7CiAJCiAJLyogV3JpdGUgdGhlIGRhdGEgKi8KLQlyZXN1bHQgPSB1c2JhdF9idWxrX3dyaXRlKHVzLCBidWZmZXIsIGxlbik7CisJcmVzdWx0ID0gdXNiYXRfYnVsa193cml0ZSh1cywgYnVmZmVyLCBsZW4sIHVzZV9zZyk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpCiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRkFJTEVEOwogCkBAIC04ODcsMjIgKzg5MywyOCBAQAogICogU2V0IHRoZSB0cmFuc3BvcnQgZnVuY3Rpb24gYmFzZWQgb24gdGhlIGRldmljZSB0eXBlCiAgKi8KIHN0YXRpYyBpbnQgdXNiYXRfc2V0X3RyYW5zcG9ydChzdHJ1Y3QgdXNfZGF0YSAqdXMsCi0JCQkgICAgICAgc3RydWN0IHVzYmF0X2luZm8gKmluZm8pCisJCQkgICAgICAgc3RydWN0IHVzYmF0X2luZm8gKmluZm8sCisJCQkgICAgICAgaW50IGRldmljZXR5cGUpCiB7Ci0JaW50IHJjOwogCi0JaWYgKCFpbmZvLT5kZXZpY2V0eXBlKSB7Ci0JCXJjID0gdXNiYXRfaWRlbnRpZnlfZGV2aWNlKHVzLCBpbmZvKTsKLQkJaWYgKHJjICE9IFVTQl9TVE9SX1RSQU5TUE9SVF9HT09EKSB7Ci0JCQlVU19ERUJVR1AoInVzYmF0X3NldF90cmFuc3BvcnQ6IENvdWxkIG5vdCBpZGVudGlmeSBkZXZpY2VcbiIpOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQl9CisJaWYgKCFpbmZvLT5kZXZpY2V0eXBlKQorCQlpbmZvLT5kZXZpY2V0eXBlID0gZGV2aWNldHlwZTsKIAotCWlmICh1c2JhdF9nZXRfZGV2aWNlX3R5cGUodXMpID09IFVTQkFUX0RFVl9IUDgyMDApCisJaWYgKCFpbmZvLT5kZXZpY2V0eXBlKQorCQl1c2JhdF9pZGVudGlmeV9kZXZpY2UodXMsIGluZm8pOworCisJc3dpdGNoIChpbmZvLT5kZXZpY2V0eXBlKSB7CisJZGVmYXVsdDoKKwkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKKworCWNhc2UgIFVTQkFUX0RFVl9IUDgyMDA6CiAJCXVzLT50cmFuc3BvcnQgPSB1c2JhdF9ocDgyMDBlX3RyYW5zcG9ydDsKLQllbHNlIGlmICh1c2JhdF9nZXRfZGV2aWNlX3R5cGUodXMpID09IFVTQkFUX0RFVl9GTEFTSCkKKwkJYnJlYWs7CisKKwljYXNlIFVTQkFUX0RFVl9GTEFTSDoKIAkJdXMtPnRyYW5zcG9ydCA9IHVzYmF0X2ZsYXNoX3RyYW5zcG9ydDsKKwkJYnJlYWs7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC05NDcsNyArOTU5LDcgQEAKIAltc2xlZXAoMTAwKTsKIAogCS8qIFJlYWQgdGhlIGRldmljZSBpZGVudGlmaWNhdGlvbiBkYXRhICovCi0JcmMgPSB1c2JhdF9yZWFkX2Jsb2NrKHVzLCByZXBseSwgNTEyKTsKKwlyYyA9IHVzYmF0X3JlYWRfYmxvY2sodXMsIHJlcGx5LCA1MTIsIDApOwogCWlmIChyYyAhPSBVU0JfU1RPUl9UUkFOU1BPUlRfR09PRCkKIAkJZ290byBsZWF2ZTsKIApAQCAtMTAzMSw3ICsxMDQzLDcgQEAKIAkJCWdvdG8gbGVhdmU7CiAKIAkJLyogUmVhZCB0aGUgZGF0YSB3ZSBqdXN0IHJlcXVlc3RlZCAqLwotCQlyZXN1bHQgPSB1c2JhdF9yZWFkX2Jsb2Nrcyh1cywgYnVmZmVyLCBsZW4pOworCQlyZXN1bHQgPSB1c2JhdF9yZWFkX2Jsb2Nrcyh1cywgYnVmZmVyLCBsZW4sIDApOwogCQlpZiAocmVzdWx0ICE9IFVTQl9TVE9SX1RSQU5TUE9SVF9HT09EKQogCQkJZ290byBsZWF2ZTsKICAgCSAKQEAgLTExMjUsNyArMTEzNyw3IEBACiAJCQlnb3RvIGxlYXZlOwogCiAJCS8qIFdyaXRlIHRoZSBkYXRhICovCi0JCXJlc3VsdCA9IHVzYmF0X3dyaXRlX2Jsb2Nrcyh1cywgYnVmZmVyLCBsZW4pOworCQlyZXN1bHQgPSB1c2JhdF93cml0ZV9ibG9ja3ModXMsIGJ1ZmZlciwgbGVuLCAwKTsKIAkJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9UUkFOU1BPUlRfR09PRCkKIAkJCWdvdG8gbGVhdmU7CiAKQEAgLTEzMTAsNyArMTMyMiw3IEBACiAvKgogICogSW5pdGlhbGl6ZSB0aGUgVVNCQVQgcHJvY2Vzc29yIGFuZCB0aGUgc3RvcmFnZSBkZXZpY2UKICAqLwotaW50IGluaXRfdXNiYXQoc3RydWN0IHVzX2RhdGEgKnVzKQorc3RhdGljIGludCBpbml0X3VzYmF0KHN0cnVjdCB1c19kYXRhICp1cywgaW50IGRldmljZXR5cGUpCiB7CiAJaW50IHJjOwogCXN0cnVjdCB1c2JhdF9pbmZvICppbmZvOwpAQCAtMTM5Miw3ICsxNDA0LDcgQEAKIAlVU19ERUJVR1AoIklOSVQgOVxuIik7CiAKIAkvKiBBdCB0aGlzIHBvaW50LCB3ZSBuZWVkIHRvIGRldGVjdCB3aGljaCBkZXZpY2Ugd2UgYXJlIHVzaW5nICovCi0JaWYgKHVzYmF0X3NldF90cmFuc3BvcnQodXMsIGluZm8pKQorCWlmICh1c2JhdF9zZXRfdHJhbnNwb3J0KHVzLCBpbmZvLCBkZXZpY2V0eXBlKSkKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIAogCVVTX0RFQlVHUCgiSU5JVCAxMFxuIik7CkBAIC0xNTAzLDEwICsxNTE1LDEwIEBACiAJICogQVQgU1BFRUQgNCBJUyBVTlJFTElBQkxFISEhCiAJICovCiAKLQlpZiAoIChyZXN1bHQgPSB1c2JhdF93cml0ZV9ibG9jayh1cywgCisJaWYgKChyZXN1bHQgPSB1c2JhdF93cml0ZV9ibG9jayh1cywKIAkJCVVTQkFUX0FUQSwgc3JiLT5jbW5kLCAxMiwKLQkJCXNyYi0+Y21uZFswXT09R1BDTURfQkxBTksgPyA3NSA6IDEwKSkgIT0KLQkJCQlVU0JfU1RPUl9UUkFOU1BPUlRfR09PRCkgeworCQkJCShzcmItPmNtbmRbMF09PUdQQ01EX0JMQU5LID8gNzUgOiAxMCksIDApICE9CisJCQkgICAgIFVTQl9TVE9SX1RSQU5TUE9SVF9HT09EKSkgewogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApAQCAtMTUzMyw3ICsxNTQ1LDcgQEAKIAkJCWxlbiA9ICpzdGF0dXM7CiAKIAotCQlyZXN1bHQgPSB1c2JhdF9yZWFkX2Jsb2NrKHVzLCBzcmItPnJlcXVlc3RfYnVmZmVyLCBsZW4pOworCQlyZXN1bHQgPSB1c2JhdF9yZWFkX2Jsb2NrKHVzLCBzcmItPnJlcXVlc3RfYnVmZmVyLCBsZW4sIHNyYi0+dXNlX3NnKTsKIAogCQkvKiBEZWJ1Zy1wcmludCB0aGUgZmlyc3QgMzIgYnl0ZXMgb2YgdGhlIHRyYW5zZmVyICovCiAKQEAgLTE2OTUsNiArMTcwNywyMiBAQAogCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRkFJTEVEOwogfQogCitpbnQgaW5pdF91c2JhdF9jZChzdHJ1Y3QgdXNfZGF0YSAqdXMpCit7CisJcmV0dXJuIGluaXRfdXNiYXQodXMsIFVTQkFUX0RFVl9IUDgyMDApOworfQorCisKK2ludCBpbml0X3VzYmF0X2ZsYXNoKHN0cnVjdCB1c19kYXRhICp1cykKK3sKKwlyZXR1cm4gaW5pdF91c2JhdCh1cywgVVNCQVRfREVWX0ZMQVNIKTsKK30KKworaW50IGluaXRfdXNiYXRfcHJvYmUoc3RydWN0IHVzX2RhdGEgKnVzKQoreworCXJldHVybiBpbml0X3VzYmF0KHVzLCAwKTsKK30KKwogLyoKICAqIERlZmF1bHQgdHJhbnNwb3J0IGZ1bmN0aW9uLiBBdHRlbXB0cyB0byBkZXRlY3Qgd2hpY2ggdHJhbnNwb3J0IGZ1bmN0aW9uCiAgKiBzaG91bGQgYmUgY2FsbGVkLCBtYWtlcyBpdCB0aGUgbmV3IGRlZmF1bHQsIGFuZCBjYWxscyBpdC4KQEAgLTE3MDgsOSArMTczNiw4IEBACiB7CiAJc3RydWN0IHVzYmF0X2luZm8gKmluZm8gPSAoc3RydWN0IHVzYmF0X2luZm8qKSAodXMtPmV4dHJhKTsKIAotCWlmICh1c2JhdF9zZXRfdHJhbnNwb3J0KHVzLCBpbmZvKSkKKwlpZiAodXNiYXRfc2V0X3RyYW5zcG9ydCh1cywgaW5mbywgMCkpCiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAKIAlyZXR1cm4gdXMtPnRyYW5zcG9ydChzcmIsIHVzKTsJCiB9Ci0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5oIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmgKaW5kZXggMjVlN2Q4Yi4uM2RkZjE0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmgKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmgKQEAgLTEwNiw3ICsxMDYsOSBAQAogI2RlZmluZSBVU0JBVF9GRUFUX0VUMgkweDAxCiAKIGV4dGVybiBpbnQgdXNiYXRfdHJhbnNwb3J0KHN0cnVjdCBzY3NpX2NtbmQgKnNyYiwgc3RydWN0IHVzX2RhdGEgKnVzKTsKLWV4dGVybiBpbnQgaW5pdF91c2JhdChzdHJ1Y3QgdXNfZGF0YSAqdXMpOworZXh0ZXJuIGludCBpbml0X3VzYmF0X2NkKHN0cnVjdCB1c19kYXRhICp1cyk7CitleHRlcm4gaW50IGluaXRfdXNiYXRfZmxhc2goc3RydWN0IHVzX2RhdGEgKnVzKTsKK2V4dGVybiBpbnQgaW5pdF91c2JhdF9wcm9iZShzdHJ1Y3QgdXNfZGF0YSAqdXMpOwogCiBzdHJ1Y3QgdXNiYXRfaW5mbyB7CiAJaW50IGRldmljZXR5cGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS90cmFuc3BvcnQuYwppbmRleCA3Y2E4OTZhLi4xOWIyNWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMKQEAgLTExNSwxOSArMTE1LDYgQEAKIAogCWNvbXBsZXRlKHVyYl9kb25lX3B0cik7CiB9Ci0gCi0vKiBUaGlzIGlzIHRoZSB0aW1lb3V0IGhhbmRsZXIgd2hpY2ggd2lsbCBjYW5jZWwgYW4gVVJCIHdoZW4gaXRzIHRpbWVvdXQKLSAqIGV4cGlyZXMuCi0gKi8KLXN0YXRpYyB2b2lkIHRpbWVvdXRfaGFuZGxlcih1bnNpZ25lZCBsb25nIHVzXykKLXsKLQlzdHJ1Y3QgdXNfZGF0YSAqdXMgPSAoc3RydWN0IHVzX2RhdGEgKikgdXNfOwotCi0JaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChVU19GTElEWF9VUkJfQUNUSVZFLCAmdXMtPmZsYWdzKSkgewotCQlVU19ERUJVR1AoIlRpbWVvdXQgLS0gY2FuY2VsbGluZyBVUkJcbiIpOwotCQl1c2JfdW5saW5rX3VyYih1cy0+Y3VycmVudF91cmIpOwotCX0KLX0KIAogLyogVGhpcyBpcyB0aGUgY29tbW9uIHBhcnQgb2YgdGhlIFVSQiBtZXNzYWdlIHN1Ym1pc3Npb24gY29kZQogICoKQEAgLTEzOCw3ICsxMjUsNyBAQAogc3RhdGljIGludCB1c2Jfc3Rvcl9tc2dfY29tbW9uKHN0cnVjdCB1c19kYXRhICp1cywgaW50IHRpbWVvdXQpCiB7CiAJc3RydWN0IGNvbXBsZXRpb24gdXJiX2RvbmU7Ci0Jc3RydWN0IHRpbWVyX2xpc3QgdG9fdGltZXI7CisJbG9uZyB0aW1lbGVmdDsKIAlpbnQgc3RhdHVzOwogCiAJLyogZG9uJ3Qgc3VibWl0IFVSQnMgZHVyaW5nIGFib3J0L2Rpc2Nvbm5lY3QgcHJvY2Vzc2luZyAqLwpAQCAtMTg1LDIyICsxNzIsMTcgQEAKIAkJfQogCX0KICAKLQkvKiBzdWJtaXQgdGhlIHRpbWVvdXQgdGltZXIsIGlmIGEgdGltZW91dCB3YXMgcmVxdWVzdGVkICovCi0JaWYgKHRpbWVvdXQgPiAwKSB7Ci0JCWluaXRfdGltZXIoJnRvX3RpbWVyKTsKLQkJdG9fdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyB0aW1lb3V0OwotCQl0b190aW1lci5mdW5jdGlvbiA9IHRpbWVvdXRfaGFuZGxlcjsKLQkJdG9fdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSB1czsKLQkJYWRkX3RpbWVyKCZ0b190aW1lcik7Ci0JfQotCiAJLyogd2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIFVSQiAqLwotCXdhaXRfZm9yX2NvbXBsZXRpb24oJnVyYl9kb25lKTsKLQljbGVhcl9iaXQoVVNfRkxJRFhfVVJCX0FDVElWRSwgJnVzLT5mbGFncyk7CisJdGltZWxlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGVfdGltZW91dCgKKwkJCSZ1cmJfZG9uZSwgdGltZW91dCA/IDogTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogIAotCS8qIGNsZWFuIHVwIHRoZSB0aW1lb3V0IHRpbWVyICovCi0JaWYgKHRpbWVvdXQgPiAwKQotCQlkZWxfdGltZXJfc3luYygmdG9fdGltZXIpOworCWNsZWFyX2JpdChVU19GTElEWF9VUkJfQUNUSVZFLCAmdXMtPmZsYWdzKTsKKworCWlmICh0aW1lbGVmdCA8PSAwKSB7CisJCVVTX0RFQlVHUCgiJXMgLS0gY2FuY2VsbGluZyBVUkJcbiIsCisJCQkgIHRpbWVsZWZ0ID09IDAgPyAiVGltZW91dCIgOiAiU2lnbmFsIik7CisJCXVzYl91bmxpbmtfdXJiKHVzLT5jdXJyZW50X3VyYik7CisJfQogCiAJLyogcmV0dXJuIHRoZSBVUkIgc3RhdHVzICovCiAJcmV0dXJuIHVzLT5jdXJyZW50X3VyYi0+c3RhdHVzOwpAQCAtNzIxLDE2ICs3MDMsMTkgQEAKIAkgKiBkZXZpY2UgcmVzZXQuICovCiAgIEhhbmRsZV9FcnJvcnM6CiAKLQkvKiBMZXQgdGhlIFNDU0kgbGF5ZXIga25vdyB3ZSBhcmUgZG9pbmcgYSByZXNldCwgc2V0IHRoZQotCSAqIFJFU0VUVElORyBiaXQsIGFuZCBjbGVhciB0aGUgQUJPUlRJTkcgYml0IHNvIHRoYXQgdGhlIHJlc2V0Ci0JICogbWF5IHByb2NlZWQuICovCisJLyogU2V0IHRoZSBSRVNFVFRJTkcgYml0LCBhbmQgY2xlYXIgdGhlIEFCT1JUSU5HIGJpdCBzbyB0aGF0CisJICogdGhlIHJlc2V0IG1heSBwcm9jZWVkLiAqLwogCXNjc2lfbG9jayh1c190b19ob3N0KHVzKSk7Ci0JdXNiX3N0b3JfcmVwb3J0X2J1c19yZXNldCh1cyk7CiAJc2V0X2JpdChVU19GTElEWF9SRVNFVFRJTkcsICZ1cy0+ZmxhZ3MpOwogCWNsZWFyX2JpdChVU19GTElEWF9BQk9SVElORywgJnVzLT5mbGFncyk7CiAJc2NzaV91bmxvY2sodXNfdG9faG9zdCh1cykpOwogCisJLyogV2UgbXVzdCByZWxlYXNlIHRoZSBkZXZpY2UgbG9jayBiZWNhdXNlIHRoZSBwcmVfcmVzZXQgcm91dGluZQorCSAqIHdpbGwgd2FudCB0byBhY3F1aXJlIGl0LiAqLworCW11dGV4X3VubG9jaygmdXMtPmRldl9tdXRleCk7CiAJcmVzdWx0ID0gdXNiX3N0b3JfcG9ydF9yZXNldCh1cyk7CisJbXV0ZXhfbG9jaygmdXMtPmRldl9tdXRleCk7CisKIAlpZiAocmVzdWx0IDwgMCkgewogCQlzY3NpX2xvY2sodXNfdG9faG9zdCh1cykpOwogCQl1c2Jfc3Rvcl9yZXBvcnRfZGV2aWNlX3Jlc2V0KHVzKTsKQEAgLTEyMTQsMzEgKzExOTksMzAgQEAKIAkJCQkgMCwgdXMtPmlmbnVtLCBOVUxMLCAwKTsKIH0KIAotLyogSXNzdWUgYSBVU0IgcG9ydCByZXNldCB0byB0aGUgZGV2aWNlLiAgQnV0IGRvbid0IGRvIGFueXRoaW5nIGlmCi0gKiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgaW50ZXJmYWNlIGluIHRoZSBkZXZpY2UsIHNvIHRoYXQgb3RoZXIgdXNlcnMKLSAqIGFyZSBub3QgYWZmZWN0ZWQuICovCisvKiBJc3N1ZSBhIFVTQiBwb3J0IHJlc2V0IHRvIHRoZSBkZXZpY2UuICBUaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQKKyAqIHVzLT5kZXZfbXV0ZXguCisgKi8KIGludCB1c2Jfc3Rvcl9wb3J0X3Jlc2V0KHN0cnVjdCB1c19kYXRhICp1cykKIHsKLQlpbnQgcmVzdWx0LCByYzsKKwlpbnQgcmVzdWx0LCByY19sb2NrOwogCi0JaWYgKHRlc3RfYml0KFVTX0ZMSURYX0RJU0NPTk5FQ1RJTkcsICZ1cy0+ZmxhZ3MpKSB7Ci0JCXJlc3VsdCA9IC1FSU87Ci0JCVVTX0RFQlVHUCgiTm8gcmVzZXQgZHVyaW5nIGRpc2Nvbm5lY3RcbiIpOwotCX0gZWxzZSBpZiAodXMtPnB1c2JfZGV2LT5hY3Rjb25maWctPmRlc2MuYk51bUludGVyZmFjZXMgIT0gMSkgewotCQlyZXN1bHQgPSAtRUJVU1k7Ci0JCVVTX0RFQlVHUCgiUmVmdXNpbmcgdG8gcmVzZXQgYSBtdWx0aS1pbnRlcmZhY2UgZGV2aWNlXG4iKTsKLQl9IGVsc2UgewotCQlyZXN1bHQgPSByYyA9Ci0JCQl1c2JfbG9ja19kZXZpY2VfZm9yX3Jlc2V0KHVzLT5wdXNiX2RldiwgdXMtPnB1c2JfaW50Zik7Ci0JCWlmIChyZXN1bHQgPCAwKSB7Ci0JCQlVU19ERUJVR1AoInVuYWJsZSB0byBsb2NrIGRldmljZSBmb3IgcmVzZXQ6ICVkXG4iLAotCQkJCQlyZXN1bHQpOworCXJlc3VsdCA9IHJjX2xvY2sgPQorCQl1c2JfbG9ja19kZXZpY2VfZm9yX3Jlc2V0KHVzLT5wdXNiX2RldiwgdXMtPnB1c2JfaW50Zik7CisJaWYgKHJlc3VsdCA8IDApCisJCVVTX0RFQlVHUCgidW5hYmxlIHRvIGxvY2sgZGV2aWNlIGZvciByZXNldDogJWRcbiIsIHJlc3VsdCk7CisJZWxzZSB7CisJCS8qIFdlcmUgd2UgZGlzY29ubmVjdGVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBsb2NrPyAqLworCQlpZiAodGVzdF9iaXQoVVNfRkxJRFhfRElTQ09OTkVDVElORywgJnVzLT5mbGFncykpIHsKKwkJCXJlc3VsdCA9IC1FSU87CisJCQlVU19ERUJVR1AoIk5vIHJlc2V0IGR1cmluZyBkaXNjb25uZWN0XG4iKTsKIAkJfSBlbHNlIHsKLQkJCXJlc3VsdCA9IHVzYl9yZXNldF9kZXZpY2UodXMtPnB1c2JfZGV2KTsKLQkJCWlmIChyYykKLQkJCQl1c2JfdW5sb2NrX2RldmljZSh1cy0+cHVzYl9kZXYpOwotCQkJVVNfREVCVUdQKCJ1c2JfcmVzZXRfZGV2aWNlIHJldHVybnMgJWRcbiIsIHJlc3VsdCk7CisJCQlyZXN1bHQgPSB1c2JfcmVzZXRfY29tcG9zaXRlX2RldmljZSgKKwkJCQkJdXMtPnB1c2JfZGV2LCB1cy0+cHVzYl9pbnRmKTsKKwkJCVVTX0RFQlVHUCgidXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UgcmV0dXJucyAlZFxuIiwKKwkJCQkJcmVzdWx0KTsKIAkJfQorCQlpZiAocmNfbG9jaykKKwkJCXVzYl91bmxvY2tfZGV2aWNlKHVzLT5wdXNiX2Rldik7CiAJfQogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oIGIvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaAppbmRleCBhZWM1ZWE4Li41NDMyNDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgKQEAgLTc4LDEyICs3OCwxMiBAQAogVU5VU1VBTF9ERVYoICAweDAzZjAsIDB4MDIwNywgMHgwMDAxLCAweDAwMDEsIAogCQkiSFAiLAogCQkiQ0QtV3JpdGVyKyA4MjAwZSIsCi0JCVVTX1NDXzgwNzAsIFVTX1BSX1VTQkFULCBpbml0X3VzYmF0LCAwKSwKKwkJVVNfU0NfODA3MCwgVVNfUFJfVVNCQVQsIGluaXRfdXNiYXRfY2QsIDApLAogCiBVTlVTVUFMX0RFViggIDB4MDNmMCwgMHgwMzA3LCAweDAwMDEsIDB4MDAwMSwgCiAJCSJIUCIsCiAJCSJDRC1Xcml0ZXIrIENELTRlIiwKLQkJVVNfU0NfODA3MCwgVVNfUFJfVVNCQVQsIGluaXRfdXNiYXQsIDApLAorCQlVU19TQ184MDcwLCBVU19QUl9VU0JBVCwgaW5pdF91c2JhdF9jZCwgMCksCiAjZW5kaWYKIAogLyogUmVwb3J0ZWQgYnkgU2ViYXN0aWFuIEthcGZlciA8c2ViYXN0aWFuX2thcGZlckBnbXgubmV0PgpAQCAtMTMzLDYgKzEzMywxNCBAQAogCQlVU19TQ19ERVZJQ0UsIFVTX1BSX0RFVklDRSwgTlVMTCwKIAkJVVNfRkxfSUdOT1JFX1JFU0lEVUUgKSwKIAorLyogUmVwb3J0ZWQgYnkgSmlyaSBTbGFieSA8amlyaXNsYWJ5QGdtYWlsLmNvbT4gYW5kCisgKiBSZW5lIEMuIENhc3RiZXJnIDxSZW5lQENhc3RiZXJnLm9yZz4gKi8KK1VOVVNVQUxfREVWKCAgMHgwNDIxLCAweDA0NDYsIDB4MDEwMCwgMHgwMTAwLAorCQkiTm9raWEiLAorCQkiTjgwIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIE5VTEwsCisJCVVTX0ZMX0lHTk9SRV9SRVNJRFVFIHwgVVNfRkxfRklYX0NBUEFDSVRZICksCisKIC8qIFJlcG9ydGVkIGJ5IE9sYWYgSGVyaW5nIDxvbGhAc3VzZS5kZT4gZnJvbSBub3ZlbGwgYnVnICMxMDU4NzggKi8KIFVOVVNVQUxfREVWKCAgMHgwNDI0LCAweDBmZGMsIDB4MDIxMCwgMHgwMjEwLAogCQkiU01TQyIsCkBAIC0yMTYsMTMgKzIyNCw2IEBACiAJCSJEVkQtQ0FNIERaLU1WMTAwQSBDYW1jb3JkZXIiLAogCQlVU19TQ19TQ1NJLCBVU19QUl9DQiwgTlVMTCwgVVNfRkxfU0lOR0xFX0xVTiksCiAKLS8qIFJlcG9ydGVkIGJ5IEFuZHJlYXMgQm9ja2hvbGQgPGFuZHJlYXNAYm9ja2lvbmxpbmUuZGU+ICovCi1VTlVTVUFMX0RFViggIDB4MDRiMCwgMHgwNDA1LCAweDAxMDAsIDB4MDEwMCwKLQkJIk5JS09OIiwKLQkJIk5JS09OIERTQyBENzAiLAotCQlVU19TQ19ERVZJQ0UsIFVTX1BSX0RFVklDRSwgTlVMTCwKLQkJVVNfRkxfRklYX0NBUEFDSVRZKSwKLQogLyogUGF0Y2ggZm9yIE5pa29uIGNvb2xwaXggMjAwMAogICogU3VibWl0dGVkIGJ5IEZhYmllbiBDb3NzZSA8ZmFiaWVuLmNvc3NlQHdhbmFkb28uZnI+Ki8KIFVOVVNVQUxfREVWKCAgMHgwNGIwLCAweDAzMDEsIDB4MDAxMCwgMHgwMDEwLApAQCAtMjMxLDYgKzIzMiwyMCBAQAogCQlVU19TQ19ERVZJQ0UsIFVTX1BSX0RFVklDRSxOVUxMLAogCQlVU19GTF9OT1RfTE9DS0FCTEUgKSwKIAorLyogUmVwb3J0ZWQgYnkgQW5kcmVhcyBCb2NraG9sZCA8YW5kcmVhc0Bib2NraW9ubGluZS5kZT4gKi8KK1VOVVNVQUxfREVWKCAgMHgwNGIwLCAweDA0MDUsIDB4MDEwMCwgMHgwMTAwLAorCQkiTklLT04iLAorCQkiTklLT04gRFNDIEQ3MCIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCBOVUxMLAorCQlVU19GTF9GSVhfQ0FQQUNJVFkpLAorCisvKiBSZXBvcnRlZCBieSBKYW1pZSBLaXRzb24gPGphbWllQHN0YWJlcmluZGUuZnNuZXQuY28udWs+ICovCitVTlVTVUFMX0RFViggIDB4MDRiMCwgMHgwNDBkLCAweDAxMDAsIDB4MDEwMCwKKwkJIk5JS09OIiwKKwkJIk5JS09OIERTQyBENzBzIiwKKwkJVVNfU0NfREVWSUNFLCBVU19QUl9ERVZJQ0UsIE5VTEwsCisJCVVTX0ZMX0ZJWF9DQVBBQ0lUWSksCisKIC8qIEJFTlEgREM1MzMwCiAgKiBSZXBvcnRlZCBieSBNYW51ZWwgRm9tYnVlbmEgPG1mb21idWVuYUB5YS5jb20+IGFuZAogICogRnJhbmsgQ29wZWxhbmQgPGZqY0B0aGluZ3kuYXBhbmEub3JnLmF1PiAqLwpAQCAtMzkzLDcgKzQwOCw3IEBACiBVTlVTVUFMX0RFViggIDB4MDRlNiwgMHgxMDEwLCAweDAwMDAsIDB4OTk5OSwKIAkJIlNodXR0bGUvU0NNIiwKIAkJIlVTQkFULTAyIiwKLQkJVVNfU0NfU0NTSSwgVVNfUFJfVVNCQVQsIGluaXRfdXNiYXQsCisJCVVTX1NDX1NDU0ksIFVTX1BSX1VTQkFULCBpbml0X3VzYmF0X2ZsYXNoLAogCQlVU19GTF9TSU5HTEVfTFVOKSwKICNlbmRpZgogCkBAIC03OTcsNyArODEyLDcgQEAKIFVOVVNVQUxfREVWKCAgMHgwNzgxLCAweDAwMDUsIDB4MDAwNSwgMHgwMDA1LAogCQkiU2FuZGlzayIsCiAJCSJJbWFnZU1hdGUgU0REUi0wNWIiLAotCQlVU19TQ19TQ1NJLCBVU19QUl9VU0JBVCwgaW5pdF91c2JhdCwKKwkJVVNfU0NfU0NTSSwgVVNfUFJfVVNCQVQsIGluaXRfdXNiYXRfZmxhc2gsCiAJCVVTX0ZMX1NJTkdMRV9MVU4gKSwKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VzYi5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS91c2IuYwppbmRleCBkZDEwODYzLi5lMjMyYzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VzYi5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdXNiLmMKQEAgLTIyMSw2ICsyMjEsMzcgQEAKICNlbmRpZiAvKiBDT05GSUdfUE0gKi8KIAogLyoKKyAqIFRoZSBuZXh0IHR3byByb3V0aW5lcyBnZXQgY2FsbGVkIGp1c3QgYmVmb3JlIGFuZCBqdXN0IGFmdGVyCisgKiBhIFVTQiBwb3J0IHJlc2V0LCB3aGV0aGVyIGZyb20gdGhpcyBkcml2ZXIgb3IgYSBkaWZmZXJlbnQgb25lLgorICovCisKK3N0YXRpYyB2b2lkIHN0b3JhZ2VfcHJlX3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSkKK3sKKwlzdHJ1Y3QgdXNfZGF0YSAqdXMgPSB1c2JfZ2V0X2ludGZkYXRhKGlmYWNlKTsKKworCVVTX0RFQlVHUCgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkvKiBNYWtlIHN1cmUgbm8gY29tbWFuZCBydW5zIGR1cmluZyB0aGUgcmVzZXQgKi8KKwltdXRleF9sb2NrKCZ1cy0+ZGV2X211dGV4KTsKK30KKworc3RhdGljIHZvaWQgc3RvcmFnZV9wb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSkKK3sKKwlzdHJ1Y3QgdXNfZGF0YSAqdXMgPSB1c2JfZ2V0X2ludGZkYXRhKGlmYWNlKTsKKworCVVTX0RFQlVHUCgiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisKKwkvKiBSZXBvcnQgdGhlIHJlc2V0IHRvIHRoZSBTQ1NJIGNvcmUgKi8KKwlzY3NpX2xvY2sodXNfdG9faG9zdCh1cykpOworCXVzYl9zdG9yX3JlcG9ydF9idXNfcmVzZXQodXMpOworCXNjc2lfdW5sb2NrKHVzX3RvX2hvc3QodXMpKTsKKworCS8qIEZJWE1FOiBOb3RpZnkgdGhlIHN1YmRyaXZlcnMgdGhhdCB0aGV5IG5lZWQgdG8gcmVpbml0aWFsaXplCisJICogdGhlIGRldmljZSAqLworCW11dGV4X3VubG9jaygmdXMtPmRldl9tdXRleCk7Cit9CisKKy8qCiAgKiBmaWxsX2lucXVpcnlfcmVzcG9uc2UgdGFrZXMgYW4gdW5zaWduZWQgY2hhciBhcnJheSAod2hpY2ggbXVzdAogICogYmUgYXQgbGVhc3QgMzYgY2hhcmFjdGVycykgYW5kIHBvcHVsYXRlcyB0aGUgdmVuZG9yIG5hbWUsCiAgKiBwcm9kdWN0IG5hbWUsIGFuZCByZXZpc2lvbiBmaWVsZHMuIFRoZW4gdGhlIGFycmF5IGlzIGNvcGllZApAQCAtNTkzLDYgKzYyNCwxNSBAQAogCQlicmVhazsKICNlbmRpZgogCisjaWZkZWYgQ09ORklHX1VTQl9TVE9SQUdFX0FMQVVEQQorCWNhc2UgVVNfUFJfQUxBVURBOgorCQl1cy0+dHJhbnNwb3J0X25hbWUgID0gIkFsYXVkYSBDb250cm9sL0J1bGsiOworCQl1cy0+dHJhbnNwb3J0ID0gYWxhdWRhX3RyYW5zcG9ydDsKKwkJdXMtPnRyYW5zcG9ydF9yZXNldCA9IHVzYl9zdG9yX0J1bGtfcmVzZXQ7CisJCXVzLT5tYXhfbHVuID0gMTsKKwkJYnJlYWs7CisjZW5kaWYKKwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlPOwogCX0KQEAgLTY0OCwxNSArNjg4LDYgQEAKIAkJYnJlYWs7CiAjZW5kaWYKIAotI2lmZGVmIENPTkZJR19VU0JfU1RPUkFHRV9BTEFVREEKLQljYXNlIFVTX1BSX0FMQVVEQToKLQkJdXMtPnRyYW5zcG9ydF9uYW1lICA9ICJBbGF1ZGEgQ29udHJvbC9CdWxrIjsKLQkJdXMtPnRyYW5zcG9ydCA9IGFsYXVkYV90cmFuc3BvcnQ7Ci0JCXVzLT50cmFuc3BvcnRfcmVzZXQgPSB1c2Jfc3Rvcl9CdWxrX3Jlc2V0OwotCQl1cy0+bWF4X2x1biA9IDE7Ci0JCWJyZWFrOwotI2VuZGlmCi0KIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVJTzsKIAl9CkBAIC0xMDAyLDYgKzEwMzMsOCBAQAogCS5zdXNwZW5kID0Jc3RvcmFnZV9zdXNwZW5kLAogCS5yZXN1bWUgPQlzdG9yYWdlX3Jlc3VtZSwKICNlbmRpZgorCS5wcmVfcmVzZXQgPQlzdG9yYWdlX3ByZV9yZXNldCwKKwkucG9zdF9yZXNldCA9CXN0b3JhZ2VfcG9zdF9yZXNldCwKIAkuaWRfdGFibGUgPQlzdG9yYWdlX3VzYl9pZHMsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMgYi9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMKaW5kZXggZDlkN2QzYy4uZWI2YWE0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYwpAQCAtMzcyMiw3ICszNzIyLDkgQEAKICAgICBhdHlmYl9zZXR1cChvcHRpb24pOwogI2VuZGlmCiAKKyNpZmRlZiBDT05GSUdfUENJCiAgICAgcGNpX3JlZ2lzdGVyX2RyaXZlcigmYXR5ZmJfZHJpdmVyKTsKKyNlbmRpZgogI2lmZGVmIENPTkZJR19BVEFSSQogICAgIGF0eWZiX2F0YXJpX3Byb2JlKCk7CiAjZW5kaWYKQEAgLTM3MzEsNyArMzczMyw5IEBACiAKIHN0YXRpYyB2b2lkIF9fZXhpdCBhdHlmYl9leGl0KHZvaWQpCiB7CisjaWZkZWYgQ09ORklHX1BDSQogCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmYXR5ZmJfZHJpdmVyKTsKKyNlbmRpZgogfQogCiBtb2R1bGVfaW5pdChhdHlmYl9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9tZGFjb24uYyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9tZGFjb24uYwppbmRleCA5ODllNGQ0Li43ZjkzOWQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvbWRhY29uLmMKKysrIGIvZHJpdmVycy92aWRlby9jb25zb2xlL21kYWNvbi5jCkBAIC0zMTMsOCArMzEzLDggQEAKIAltZGFfbnVtX2NvbHVtbnMgPSA4MDsKIAltZGFfbnVtX2xpbmVzICAgPSAyNTsKIAotCW1kYV92cmFtX2Jhc2UgPSBWR0FfTUFQX01FTSgweGIwMDAwKTsKIAltZGFfdnJhbV9sZW4gID0gMHgwMTAwMDsKKwltZGFfdnJhbV9iYXNlID0gVkdBX01BUF9NRU0oMHhiMDAwMCwgbWRhX3ZyYW1fbGVuKTsKIAogCW1kYV9pbmRleF9wb3J0ICA9IDB4M2I0OwogCW1kYV92YWx1ZV9wb3J0ICA9IDB4M2I1OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9jb25zb2xlL3ZnYWNvbi5jIGIvZHJpdmVycy92aWRlby9jb25zb2xlL3ZnYWNvbi5jCmluZGV4IGQ1YTA0YjYuLmU2NGQ0MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS92Z2Fjb24uYworKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvdmdhY29uLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCQkJc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlZ2FfY29uc29sZV9yZXNvdXJjZSA9CiAJCQkgICAgeyAiZWdhIiwgMHgzQjAsIDB4M0JGIH07CiAJCQl2Z2FfdmlkZW9fdHlwZSA9IFZJREVPX1RZUEVfRUdBTTsKLQkJCXZnYV92cmFtX2VuZCA9IDB4YjgwMDA7CisJCQl2Z2FfdnJhbV9zaXplID0gMHg4MDAwOwogCQkJZGlzcGxheV9kZXNjID0gIkVHQSsiOwogCQkJcmVxdWVzdF9yZXNvdXJjZSgmaW9wb3J0X3Jlc291cmNlLAogCQkJCQkgJmVnYV9jb25zb2xlX3Jlc291cmNlKTsKQEAgLTQwMSw3ICs0MDEsNyBAQAogCQkJc3RhdGljIHN0cnVjdCByZXNvdXJjZSBtZGEyX2NvbnNvbGVfcmVzb3VyY2UgPQogCQkJICAgIHsgIm1kYSIsIDB4M0JGLCAweDNCRiB9OwogCQkJdmdhX3ZpZGVvX3R5cGUgPSBWSURFT19UWVBFX01EQTsKLQkJCXZnYV92cmFtX2VuZCA9IDB4YjIwMDA7CisJCQl2Z2FfdnJhbV9zaXplID0gMHgyMDAwOwogCQkJZGlzcGxheV9kZXNjID0gIipNREEiOwogCQkJcmVxdWVzdF9yZXNvdXJjZSgmaW9wb3J0X3Jlc291cmNlLAogCQkJCQkgJm1kYTFfY29uc29sZV9yZXNvdXJjZSk7CkBAIC00MTgsNyArNDE4LDcgQEAKIAkJaWYgKChPUklHX1ZJREVPX0VHQV9CWCAmIDB4ZmYpICE9IDB4MTApIHsKIAkJCWludCBpOwogCi0JCQl2Z2FfdnJhbV9lbmQgPSAweGMwMDAwOworCQkJdmdhX3ZyYW1fc2l6ZSA9IDB4ODAwMDsKIAogCQkJaWYgKCFPUklHX1ZJREVPX0lTVkdBKSB7CiAJCQkJc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlZ2FfY29uc29sZV9yZXNvdXJjZQpAQCAtNDQzLDcgKzQ0Myw3IEBACiAJCQkJICogYW5kIENPRT0xIGlzbid0IG5lY2Vzc2FyaWx5IGEgZ29vZCBpZGVhKQogCQkJCSAqLwogCQkJCXZnYV92cmFtX2Jhc2UgPSAweGEwMDAwOwotCQkJCXZnYV92cmFtX2VuZCA9IDB4YjAwMDA7CisJCQkJdmdhX3ZyYW1fc2l6ZSA9IDB4MTAwMDA7CiAJCQkJb3V0Yl9wKDYsIFZHQV9HRlhfSSk7CiAJCQkJb3V0Yl9wKDYsIFZHQV9HRlhfRCk7CiAjZW5kaWYKQEAgLTQ3NSw3ICs0NzUsNyBAQAogCQkJc3RhdGljIHN0cnVjdCByZXNvdXJjZSBjZ2FfY29uc29sZV9yZXNvdXJjZSA9CiAJCQkgICAgeyAiY2dhIiwgMHgzRDQsIDB4M0Q1IH07CiAJCQl2Z2FfdmlkZW9fdHlwZSA9IFZJREVPX1RZUEVfQ0dBOwotCQkJdmdhX3ZyYW1fZW5kID0gMHhiYTAwMDsKKwkJCXZnYV92cmFtX3NpemUgPSAweDIwMDA7CiAJCQlkaXNwbGF5X2Rlc2MgPSAiKkNHQSI7CiAJCQlyZXF1ZXN0X3Jlc291cmNlKCZpb3BvcnRfcmVzb3VyY2UsCiAJCQkJCSAmY2dhX2NvbnNvbGVfcmVzb3VyY2UpOwpAQCAtNDgzLDkgKzQ4Myw4IEBACiAJCX0KIAl9CiAKLQl2Z2FfdnJhbV9iYXNlID0gVkdBX01BUF9NRU0odmdhX3ZyYW1fYmFzZSk7Ci0JdmdhX3ZyYW1fZW5kID0gVkdBX01BUF9NRU0odmdhX3ZyYW1fZW5kKTsKLQl2Z2FfdnJhbV9zaXplID0gdmdhX3ZyYW1fZW5kIC0gdmdhX3ZyYW1fYmFzZTsKKwl2Z2FfdnJhbV9iYXNlID0gVkdBX01BUF9NRU0odmdhX3ZyYW1fYmFzZSwgdmdhX3ZyYW1fc2l6ZSk7CisJdmdhX3ZyYW1fZW5kID0gdmdhX3ZyYW1fYmFzZSArIHZnYV92cmFtX3NpemU7CiAKIAkvKgogCSAqICAgICAgRmluZCBvdXQgaWYgdGhlcmUgaXMgYSBncmFwaGljcyBjYXJkIHByZXNlbnQuCkBAIC0xMDIwLDE0ICsxMDE5LDE0IEBACiAJY2hhciAqY2hhcm1hcDsKIAkKIAlpZiAodmdhX3ZpZGVvX3R5cGUgIT0gVklERU9fVFlQRV9FR0FNKSB7Ci0JCWNoYXJtYXAgPSAoY2hhciAqKSBWR0FfTUFQX01FTShjb2xvdXJtYXApOworCQljaGFybWFwID0gKGNoYXIgKikgVkdBX01BUF9NRU0oY29sb3VybWFwLCAwKTsKIAkJYmVnID0gMHgwZTsKICNpZmRlZiBWR0FfQ0FOX0RPXzY0S0IKIAkJaWYgKHZnYV92aWRlb190eXBlID09IFZJREVPX1RZUEVfVkdBQykKIAkJCWJlZyA9IDB4MDY7CiAjZW5kaWYKIAl9IGVsc2UgewotCQljaGFybWFwID0gKGNoYXIgKikgVkdBX01BUF9NRU0oYmxhY2t3bWFwKTsKKwkJY2hhcm1hcCA9IChjaGFyICopIFZHQV9NQVBfTUVNKGJsYWNrd21hcCwgMCk7CiAJCWJlZyA9IDB4MGE7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYyBiL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCmluZGV4IGYzZjE2ZmQuLjRmZDJhMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCkBAIC0xMzUxLDcgKzEzNTEsNyBAQAogCX0KIAogCS8qIFhYWCBzaGFyZSBWR0FfRkJfUEhZUyBhbmQgSS9PIHJlZ2lvbiB3aXRoIHZnYWNvbiBhbmQgb3RoZXJzICovCi0JaW5mby0+c2NyZWVuX2Jhc2UgPSAodm9pZCBfX2lvbWVtICopVkdBX01BUF9NRU0oVkdBX0ZCX1BIWVMpOworCWluZm8tPnNjcmVlbl9iYXNlID0gKHZvaWQgX19pb21lbSAqKVZHQV9NQVBfTUVNKFZHQV9GQl9QSFlTLCAwKTsKIAogCWlmICghaW5mby0+c2NyZWVuX2Jhc2UpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJ2Z2ExNmZiOiB1bmFibGUgdG8gbWFwIGRldmljZVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL0tjb25maWcgYi9kcml2ZXJzL3cxL0tjb25maWcKaW5kZXggNWU2MWVkNS4uOGIzZDBmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS9LY29uZmlnCisrKyBiL2RyaXZlcnMvdzEvS2NvbmZpZwpAQCAtMiw4ICsyLDkgQEAKIAogY29uZmlnIFcxCiAJdHJpc3RhdGUgIkRhbGxhcydzIDEtd2lyZSBzdXBwb3J0IgorCWRlcGVuZHMgb24gQ09OTkVDVE9SCiAJLS0taGVscC0tLQotCSAgRGFsbGFzJ3MgMS13aXJlIGJ1cyBpcyB1c2VmdWwgdG8gY29ubmVjdCBzbG93IDEtcGluIGRldmljZXMKKwkgIERhbGxhcycgMS13aXJlIGJ1cyBpcyB1c2VmdWwgdG8gY29ubmVjdCBzbG93IDEtcGluIGRldmljZXMKIAkgIHN1Y2ggYXMgaUJ1dHRvbnMgYW5kIHRoZXJtYWwgc2Vuc29ycy4KIAogCSAgSWYgeW91IHdhbnQgVzEgc3VwcG9ydCwgeW91IHNob3VsZCBzYXkgWSBoZXJlLgpAQCAtMTEsNiArMTIsMTggQEAKIAkgIFRoaXMgVzEgc3VwcG9ydCBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCB3aXJlLmtvLgogCitjb25maWcgVzFfQ09OCisJZGVwZW5kcyBvbiBDT05ORUNUT1IgJiYgVzEKKwlib29sICJVc2Vyc3BhY2UgY29tbXVuaWNhdGlvbiBvdmVyIGNvbm5lY3RvciIKKwlkZWZhdWx0IHkKKwktLS0gaGVscCAtLS0KKwkgIFRoaXMgYWxsb3dzIHRvIGNvbW11bmljYXRlIHdpdGggdXNlcnNwYWNlIHVzaW5nIGNvbm5lY3RvciBbRG9jdW1lbnRhdGlvbi9jb25uZWN0b3JdLgorCSAgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG1lc3NhZ2VzIGJldHdlZW4gdzEgY29yZSBhbmQgdXNlcnNwYWNlOgorCSAgMS4gRXZlbnRzLiBUaGV5IGFyZSBnZW5lcmF0ZWQgZWFjaCB0aW1lIG5ldyBtYXN0ZXIgb3Igc2xhdmUgZGV2aWNlIGZvdW5kCisJCWVpdGhlciBkdWUgdG8gYXV0b21hdGljIG9yIHJlcXVlc3RlZCBzZWFyY2guCisJICAyLiBVc2Vyc3BhY2UgY29tbWFuZHMuIEluY2x1ZGVzIHJlYWQvd3JpdGUgYW5kIHNlYXJjaC9hbGFybSBzZWFyY2ggY29tYW1uZHMuCisJICAzLiBSZXBsaWVzIHRvIHVzZXJzcGFjZSBjb21tYW5kcy4KKwogc291cmNlIGRyaXZlcnMvdzEvbWFzdGVycy9LY29uZmlnCiBzb3VyY2UgZHJpdmVycy93MS9zbGF2ZXMvS2NvbmZpZwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL01ha2VmaWxlIGIvZHJpdmVycy93MS9NYWtlZmlsZQppbmRleCAwYzJhYTIyLi45Mzg0NWEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvdzEvTWFrZWZpbGUKQEAgLTIsMTAgKzIsNiBAQAogIyBNYWtlZmlsZSBmb3IgdGhlIERhbGxhcydzIDEtd2lyZSBidXMuCiAjCiAKLWlmbmVxICgkKENPTkZJR19ORVQpLCB5KQotRVhUUkFfQ0ZMQUdTCSs9IC1ETkVUTElOS19ESVNBQkxFRAotZW5kaWYKLQogaWZlcSAoJChDT05GSUdfVzFfRFMyNDMzX0NSQyksIHkpCiBFWFRSQV9DRkxBR1MJKz0gLURDT05GSUdfVzFfRjIzX0NSQwogZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvbWFzdGVycy9LY29uZmlnIGIvZHJpdmVycy93MS9tYXN0ZXJzL0tjb25maWcKaW5kZXggYzZiYWQ0ZC4uMmZiNDI1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS9tYXN0ZXJzL0tjb25maWcKKysrIGIvZHJpdmVycy93MS9tYXN0ZXJzL0tjb25maWcKQEAgLTE1LDI0ICsxNSwxNSBAQAogCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIG1hdHJveF93MS5rby4KIAotY29uZmlnIFcxX01BU1RFUl9EUzk0OTAKLQl0cmlzdGF0ZSAiRFM5NDkwUiB0cmFuc3BvcnQgbGF5ZXIgZHJpdmVyIgotCWRlcGVuZHMgb24gVzEgJiYgVVNCCi0JaGVscAotCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBoYXZlIGEgZHJpdmVyIGZvciBEUzk0OTBSIFVXQiA8LT4gVzEgYnJpZGdlLgorY29uZmlnIFcxX01BU1RFUl9EUzI0OTAKKwl0cmlzdGF0ZSAiRFMyNDkwIFVTQiA8LT4gVzEgdHJhbnNwb3J0IGxheWVyIGZvciAxLXdpcmUiCisgIAlkZXBlbmRzIG9uIFcxICYmIFVTQgorICAJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBoYXZlIGEgZHJpdmVyIGZvciBEUzI0OTAgYmFzZWQgVVNCIDwtPiBXMSBicmlkZ2VzLAorCSAgZm9yIGV4YW1wbGUgRFM5NDkwKi4KIAotCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKLQkgIHdpbGwgYmUgY2FsbGVkIGRzOTQ5MHIua28uCi0KLWNvbmZpZyBXMV9NQVNURVJfRFM5NDkwX0JSSURHRQotCXRyaXN0YXRlICJEUzk0OTBSIFVTQiA8LT4gVzEgdHJhbnNwb3J0IGxheWVyIGZvciAxLXdpcmUiCi0JZGVwZW5kcyBvbiBXMV9NQVNURVJfRFM5NDkwCi0JaGVscAotCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBjb21tdW5pY2F0ZSB3aXRoIHlvdXIgMS13aXJlIGRldmljZXMKLQkgIHVzaW5nIERTOTQ5MFIgVVNCIGJyaWRnZS4KLQotCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKLQkgIHdpbGwgYmUgY2FsbGVkIGRzX3cxX2JyaWRnZS5rby4KKyAgCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKKwkgIHdpbGwgYmUgY2FsbGVkIGRzMjQ5MC5rby4KIAogY29uZmlnIFcxX01BU1RFUl9EUzI0ODIKIAl0cmlzdGF0ZSAiTWF4aW0gRFMyNDgyIEkyQyB0byAxLVdpcmUgYnJpZGdlIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS9tYXN0ZXJzL01ha2VmaWxlIGIvZHJpdmVycy93MS9tYXN0ZXJzL01ha2VmaWxlCmluZGV4IDFmM2M4YjkuLjRjZWUyNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvbWFzdGVycy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3cxL21hc3RlcnMvTWFrZWZpbGUKQEAgLTMsMTEgKzMsNiBAQAogIwogCiBvYmotJChDT05GSUdfVzFfTUFTVEVSX01BVFJPWCkJCSs9IG1hdHJveF93MS5vCi0KLW9iai0kKENPTkZJR19XMV9NQVNURVJfRFM5NDkwKQkJKz0gZHM5NDkwci5vCi1kczk0OTByLW9ianMgICAgOj0gZHNjb3JlLm8KLQotb2JqLSQoQ09ORklHX1cxX01BU1RFUl9EUzk0OTBfQlJJREdFKQkrPSBkc193MV9icmlkZ2UubwotCitvYmotJChDT05GSUdfVzFfTUFTVEVSX0RTMjQ5MCkJCSs9IGRzMjQ5MC5vCiBvYmotJChDT05GSUdfVzFfTUFTVEVSX0RTMjQ4MikJCSs9IGRzMjQ4Mi5vCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvbWFzdGVycy9kczI0ODIuYyBiL2RyaXZlcnMvdzEvbWFzdGVycy9kczI0ODIuYwppbmRleCBkMWNhY2QyLi5hZjQ5MmNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDgyLmMKKysrIGIvZHJpdmVycy93MS9tYXN0ZXJzL2RzMjQ4Mi5jCkBAIC0xMjUsNyArMTI1LDcgQEAKIAogc3RydWN0IGRzMjQ4Ml9kYXRhIHsKIAlzdHJ1Y3QgaTJjX2NsaWVudAljbGllbnQ7Ci0Jc3RydWN0IHNlbWFwaG9yZQlhY2Nlc3NfbG9jazsKKwlzdHJ1Y3QgbXV0ZXgJCWFjY2Vzc19sb2NrOwogCiAJLyogMS13aXJlIGludGVyZmFjZShzKSAqLwogCWludAkJCXcxX2NvdW50OwkvKiAxIG9yIDggKi8KQEAgLTI2NSw3ICsyNjUsNyBAQAogCXN0cnVjdCBkczI0ODJfZGF0YSAgICAqcGRldiA9IHBjaGFuLT5wZGV2OwogCWludCBzdGF0dXMgPSAtMTsKIAotCWRvd24oJnBkZXYtPmFjY2Vzc19sb2NrKTsKKwltdXRleF9sb2NrKCZwZGV2LT5hY2Nlc3NfbG9jayk7CiAKIAkvKiBTZWxlY3QgdGhlIGNoYW5uZWwgKi8KIAlkczI0ODJfd2FpdF8xd2lyZV9pZGxlKHBkZXYpOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAJCQkJICBiaXQgPyAweEZGIDogMCkpCiAJCXN0YXR1cyA9IGRzMjQ4Ml93YWl0XzF3aXJlX2lkbGUocGRldik7CiAKLQl1cCgmcGRldi0+YWNjZXNzX2xvY2spOworCW11dGV4X3VubG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogCiAJcmV0dXJuIChzdGF0dXMgJiBEUzI0ODJfUkVHX1NUU19TQlIpID8gMSA6IDA7CiB9CkBAIC0yOTcsNyArMjk3LDcgQEAKIAlzdHJ1Y3QgZHMyNDgyX2RhdGEgICAgKnBkZXYgPSBwY2hhbi0+cGRldjsKIAlpbnQgc3RhdHVzID0gKDMgPDwgNSk7CiAKLQlkb3duKCZwZGV2LT5hY2Nlc3NfbG9jayk7CisJbXV0ZXhfbG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogCiAJLyogU2VsZWN0IHRoZSBjaGFubmVsICovCiAJZHMyNDgyX3dhaXRfMXdpcmVfaWRsZShwZGV2KTsKQEAgLTMwOSw3ICszMDksNyBAQAogCQkJCSAgZGJpdCA/IDB4RkYgOiAwKSkKIAkJc3RhdHVzID0gZHMyNDgyX3dhaXRfMXdpcmVfaWRsZShwZGV2KTsKIAotCXVwKCZwZGV2LT5hY2Nlc3NfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZwZGV2LT5hY2Nlc3NfbG9jayk7CiAKIAkvKiBEZWNvZGUgdGhlIHN0YXR1cyAqLwogCXJldHVybiAoc3RhdHVzID4+IDUpOwpAQCAtMzI2LDcgKzMyNiw3IEBACiAJc3RydWN0IGRzMjQ4Ml93MV9jaGFuICpwY2hhbiA9IGRhdGE7CiAJc3RydWN0IGRzMjQ4Ml9kYXRhICAgICpwZGV2ID0gcGNoYW4tPnBkZXY7CiAKLQlkb3duKCZwZGV2LT5hY2Nlc3NfbG9jayk7CisJbXV0ZXhfbG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogCiAJLyogU2VsZWN0IHRoZSBjaGFubmVsICovCiAJZHMyNDgyX3dhaXRfMXdpcmVfaWRsZShwZGV2KTsKQEAgLTMzNiw3ICszMzYsNyBAQAogCS8qIFNlbmQgdGhlIHdyaXRlIGJ5dGUgY29tbWFuZCAqLwogCWRzMjQ4Ml9zZW5kX2NtZF9kYXRhKHBkZXYsIERTMjQ4Ml9DTURfMVdJUkVfV1JJVEVfQllURSwgYnl0ZSk7CiAKLQl1cCgmcGRldi0+YWNjZXNzX2xvY2spOworCW11dGV4X3VubG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogfQogCiAvKioKQEAgLTM1MSw3ICszNTEsNyBAQAogCXN0cnVjdCBkczI0ODJfZGF0YSAgICAqcGRldiA9IHBjaGFuLT5wZGV2OwogCWludCByZXN1bHQ7CiAKLQlkb3duKCZwZGV2LT5hY2Nlc3NfbG9jayk7CisJbXV0ZXhfbG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogCiAJLyogU2VsZWN0IHRoZSBjaGFubmVsICovCiAJZHMyNDgyX3dhaXRfMXdpcmVfaWRsZShwZGV2KTsKQEAgLTM3MCw3ICszNzAsNyBAQAogCS8qIFJlYWQgdGhlIGRhdGEgYnl0ZSAqLwogCXJlc3VsdCA9IGkyY19zbWJ1c19yZWFkX2J5dGUoJnBkZXYtPmNsaWVudCk7CiAKLQl1cCgmcGRldi0+YWNjZXNzX2xvY2spOworCW11dGV4X3VubG9jaygmcGRldi0+YWNjZXNzX2xvY2spOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM4OSw3ICszODksNyBAQAogCWludCBlcnI7CiAJdTggcmV0dmFsID0gMTsKIAotCWRvd24oJnBkZXYtPmFjY2Vzc19sb2NrKTsKKwltdXRleF9sb2NrKCZwZGV2LT5hY2Nlc3NfbG9jayk7CiAKIAkvKiBTZWxlY3QgdGhlIGNoYW5uZWwgKi8KIAlkczI0ODJfd2FpdF8xd2lyZV9pZGxlKHBkZXYpOwpAQCAtNDA5LDcgKzQwOSw3IEBACiAJCQkJCSAgICAgMHhGMCk7CiAJfQogCi0JdXAoJnBkZXYtPmFjY2Vzc19sb2NrKTsKKwltdXRleF91bmxvY2soJnBkZXYtPmFjY2Vzc19sb2NrKTsKIAogCXJldHVybiByZXR2YWw7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAKIAlzbnByaW50ZihuZXdfY2xpZW50LT5uYW1lLCBzaXplb2YobmV3X2NsaWVudC0+bmFtZSksICJkczI0ODItJWQwMCIsCiAJCSBkYXRhLT53MV9jb3VudCk7CiAKLQlpbml0X01VVEVYKCZkYXRhLT5hY2Nlc3NfbG9jayk7CisJbXV0ZXhfaW5pdCgmZGF0YS0+YWNjZXNzX2xvY2spOwogCiAJLyogVGVsbCB0aGUgSTJDIGxheWVyIGEgbmV3IGNsaWVudCBoYXMgYXJyaXZlZCAqLwogCWlmICgoZXJyID0gaTJjX2F0dGFjaF9jbGllbnQobmV3X2NsaWVudCkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS9tYXN0ZXJzL2RzY29yZS5jIGIvZHJpdmVycy93MS9tYXN0ZXJzL2RzMjQ5MC5jCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFtZSBmcm9tIGRyaXZlcnMvdzEvbWFzdGVycy9kc2NvcmUuYwpyZW5hbWUgdG8gZHJpdmVycy93MS9tYXN0ZXJzL2RzMjQ5MC5jCmluZGV4IDJjZjc3NzYuLjI5OWUyNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvbWFzdGVycy9kc2NvcmUuYworKysgYi9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDkwLmMKQEAgLTI0LDcgKzI0LDEzNiBAQAogI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgogCi0jaW5jbHVkZSAiZHNjb3JlLmgiCisjaW5jbHVkZSAiLi4vdzFfaW50LmgiCisjaW5jbHVkZSAiLi4vdzEuaCIKKworLyogQ09NTUFORCBUWVBFIENPREVTICovCisjZGVmaW5lIENPTlRST0xfQ01ECQkJMHgwMAorI2RlZmluZSBDT01NX0NNRAkJCTB4MDEKKyNkZWZpbmUgTU9ERV9DTUQJCQkweDAyCisKKy8qIENPTlRST0wgQ09NTUFORCBDT0RFUyAqLworI2RlZmluZSBDVExfUkVTRVRfREVWSUNFCQkweDAwMDAKKyNkZWZpbmUgQ1RMX1NUQVJUX0VYRQkJCTB4MDAwMQorI2RlZmluZSBDVExfUkVTVU1FX0VYRQkJCTB4MDAwMgorI2RlZmluZSBDVExfSEFMVF9FWEVfSURMRQkJMHgwMDAzCisjZGVmaW5lIENUTF9IQUxUX0VYRV9ET05FCQkweDAwMDQKKyNkZWZpbmUgQ1RMX0ZMVVNIX0NPTU1fQ01EUwkJMHgwMDA3CisjZGVmaW5lIENUTF9GTFVTSF9SQ1ZfQlVGRkVSCQkweDAwMDgKKyNkZWZpbmUgQ1RMX0ZMVVNIX1hNVF9CVUZGRVIJCTB4MDAwOQorI2RlZmluZSBDVExfR0VUX0NPTU1fQ01EUwkJMHgwMDBBCisKKy8qIE1PREUgQ09NTUFORCBDT0RFUyAqLworI2RlZmluZSBNT0RfUFVMU0VfRU4JCQkweDAwMDAKKyNkZWZpbmUgTU9EX1NQRUVEX0NIQU5HRV9FTgkJMHgwMDAxCisjZGVmaW5lIE1PRF8xV0lSRV9TUEVFRAkJCTB4MDAwMgorI2RlZmluZSBNT0RfU1RST05HX1BVX0RVUkFUSU9OCQkweDAwMDMKKyNkZWZpbmUgTU9EX1BVTExET1dOX1NMRVdSQVRFCQkweDAwMDQKKyNkZWZpbmUgTU9EX1BST0dfUFVMU0VfRFVSQVRJT04JCTB4MDAwNQorI2RlZmluZSBNT0RfV1JJVEUxX0xPV1RJTUUJCTB4MDAwNgorI2RlZmluZSBNT0RfRFNPVzBfVFJFQwkJCTB4MDAwNworCisvKiBDT01NVU5JQ0FUSU9OIENPTU1BTkQgQ09ERVMgKi8KKyNkZWZpbmUgQ09NTV9FUlJPUl9FU0NBUEUJCTB4MDYwMQorI2RlZmluZSBDT01NX1NFVF9EVVJBVElPTgkJMHgwMDEyCisjZGVmaW5lIENPTU1fQklUX0lPCQkJMHgwMDIwCisjZGVmaW5lIENPTU1fUFVMU0UJCQkweDAwMzAKKyNkZWZpbmUgQ09NTV8xX1dJUkVfUkVTRVQJCTB4MDA0MgorI2RlZmluZSBDT01NX0JZVEVfSU8JCQkweDAwNTIKKyNkZWZpbmUgQ09NTV9NQVRDSF9BQ0NFU1MJCTB4MDA2NAorI2RlZmluZSBDT01NX0JMT0NLX0lPCQkJMHgwMDc0CisjZGVmaW5lIENPTU1fUkVBRF9TVFJBSUdIVAkJMHgwMDgwCisjZGVmaW5lIENPTU1fRE9fUkVMRUFTRQkJCTB4NjA5MgorI2RlZmluZSBDT01NX1NFVF9QQVRICQkJMHgwMEEyCisjZGVmaW5lIENPTU1fV1JJVEVfU1JBTV9QQUdFCQkweDAwQjIKKyNkZWZpbmUgQ09NTV9XUklURV9FUFJPTQkJMHgwMEM0CisjZGVmaW5lIENPTU1fUkVBRF9DUkNfUFJPVF9QQUdFCQkweDAwRDQKKyNkZWZpbmUgQ09NTV9SRUFEX1JFRElSRUNUX1BBR0VfQ1JDCTB4MjFFNAorI2RlZmluZSBDT01NX1NFQVJDSF9BQ0NFU1MJCTB4MDBGNAorCisvKiBDb21tdW5pY2F0aW9uIGNvbW1hbmQgYml0cyAqLworI2RlZmluZSBDT01NX1RZUEUJCQkweDAwMDgKKyNkZWZpbmUgQ09NTV9TRQkJCQkweDAwMDgKKyNkZWZpbmUgQ09NTV9ECQkJCTB4MDAwOAorI2RlZmluZSBDT01NX1oJCQkJMHgwMDA4CisjZGVmaW5lIENPTU1fQ0gJCQkJMHgwMDA4CisjZGVmaW5lIENPTU1fU00JCQkJMHgwMDA4CisjZGVmaW5lIENPTU1fUgkJCQkweDAwMDgKKyNkZWZpbmUgQ09NTV9JTQkJCQkweDAwMDEKKworI2RlZmluZSBDT01NX1BTCQkJCTB4NDAwMAorI2RlZmluZSBDT01NX1BTVAkJCTB4NDAwMAorI2RlZmluZSBDT01NX0NJQgkJCTB4NDAwMAorI2RlZmluZSBDT01NX1JUUwkJCTB4NDAwMAorI2RlZmluZSBDT01NX0RUCQkJCTB4MjAwMAorI2RlZmluZSBDT01NX1NQVQkJCTB4MTAwMAorI2RlZmluZSBDT01NX0YJCQkJMHgwODAwCisjZGVmaW5lIENPTU1fTlRQCQkJMHgwNDAwCisjZGVmaW5lIENPTU1fSUNQCQkJMHgwMjAwCisjZGVmaW5lIENPTU1fUlNUCQkJMHgwMTAwCisKKyNkZWZpbmUgUFVMU0VfUFJPRwkJCTB4MDEKKyNkZWZpbmUgUFVMU0VfU1BVRQkJCTB4MDIKKworI2RlZmluZSBCUkFOQ0hfTUFJTgkJCTB4Q0MKKyNkZWZpbmUgQlJBTkNIX0FVWAkJCTB4MzMKKworLyoKKyAqIER1cmF0aW9uIG9mIHRoZSBzdHJvbmcgcHVsbC11cCBwdWxzZSBpbiBtaWxsaXNlY29uZHMuCisgKi8KKyNkZWZpbmUgUFVMTFVQX1BVTFNFX0RVUkFUSU9OCQk3NTAKKworLyogU3RhdHVzIGZsYWdzICovCisjZGVmaW5lIFNUX1NQVUEJCQkJMHgwMSAgLyogU3Ryb25nIFB1bGwtdXAgaXMgYWN0aXZlICovCisjZGVmaW5lIFNUX1BSR0EJCQkJMHgwMiAgLyogMTJWIHByb2dyYW1taW5nIHB1bHNlIGlzIGJlaW5nIGdlbmVyYXRlZCAqLworI2RlZmluZSBTVF8xMlZQCQkJCTB4MDQgIC8qIGV4dGVybmFsIDEyViBwcm9ncmFtbWluZyB2b2x0YWdlIGlzIHByZXNlbnQgKi8KKyNkZWZpbmUgU1RfUE1PRAkJCQkweDA4ICAvKiBEUzI0OTAgcG93ZXJlZCBmcm9tIFVTQiBhbmQgZXh0ZXJuYWwgc291cmNlcyAqLworI2RlZmluZSBTVF9IQUxUCQkJCTB4MTAgIC8qIERTMjQ5MCBpcyBjdXJyZW50bHkgaGFsdGVkICovCisjZGVmaW5lIFNUX0lETEUJCQkJMHgyMCAgLyogRFMyNDkwIGlzIGN1cnJlbnRseSBpZGxlICovCisjZGVmaW5lIFNUX0VQT0YJCQkJMHg4MAorCisjZGVmaW5lIFNQRUVEX05PUk1BTAkJCTB4MDAKKyNkZWZpbmUgU1BFRURfRkxFWElCTEUJCQkweDAxCisjZGVmaW5lIFNQRUVEX09WRVJEUklWRQkJCTB4MDIKKworI2RlZmluZSBOVU1fRVAJCQkJNAorI2RlZmluZSBFUF9DT05UUk9MCQkJMAorI2RlZmluZSBFUF9TVEFUVVMJCQkxCisjZGVmaW5lIEVQX0RBVEFfT1VUCQkJMgorI2RlZmluZSBFUF9EQVRBX0lOCQkJMworCitzdHJ1Y3QgZHNfZGV2aWNlCit7CisJc3RydWN0IGxpc3RfaGVhZAlkc19lbnRyeTsKKworCXN0cnVjdCB1c2JfZGV2aWNlCSp1ZGV2OworCXN0cnVjdCB1c2JfaW50ZXJmYWNlCSppbnRmOworCisJaW50CQkJZXBbTlVNX0VQXTsKKworCXN0cnVjdCB3MV9idXNfbWFzdGVyCW1hc3RlcjsKK307CisKK3N0cnVjdCBkc19zdGF0dXMKK3sKKwl1OAkJCWVuYWJsZTsKKwl1OAkJCXNwZWVkOworCXU4CQkJcHVsbHVwX2R1cjsKKwl1OAkJCXBwdWxzX2R1cjsKKwl1OAkJCXB1bGxkb3duX3NsZXc7CisJdTgJCQl3cml0ZTFfdGltZTsKKwl1OAkJCXdyaXRlMF90aW1lOworCXU4CQkJcmVzZXJ2ZWQwOworCXU4CQkJc3RhdHVzOworCXU4CQkJY29tbWFuZDA7CisJdTgJCQljb21tYW5kMTsKKwl1OAkJCWNvbW1hbmRfYnVmZmVyX3N0YXR1czsKKwl1OAkJCWRhdGFfb3V0X2J1ZmZlcl9zdGF0dXM7CisJdTgJCQlkYXRhX2luX2J1ZmZlcl9zdGF0dXM7CisJdTgJCQlyZXNlcnZlZDE7CisJdTgJCQlyZXNlcnZlZDI7CisKK307CiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBkc19pZF90YWJsZSBbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgwNGZhLCAweDI0OTApIH0sCkBAIC0zNSwyMSArMTY0LDEyIEBACiBzdGF0aWMgaW50IGRzX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICosIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICopOwogc3RhdGljIHZvaWQgZHNfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqKTsKIAotaW50IGRzX3RvdWNoX2JpdChzdHJ1Y3QgZHNfZGV2aWNlICosIHU4LCB1OCAqKTsKLWludCBkc19yZWFkX2J5dGUoc3RydWN0IGRzX2RldmljZSAqLCB1OCAqKTsKLWludCBkc19yZWFkX2JpdChzdHJ1Y3QgZHNfZGV2aWNlICosIHU4ICopOwotaW50IGRzX3dyaXRlX2J5dGUoc3RydWN0IGRzX2RldmljZSAqLCB1OCk7Ci1pbnQgZHNfd3JpdGVfYml0KHN0cnVjdCBkc19kZXZpY2UgKiwgdTgpOwotc3RhdGljIGludCBkc19zdGFydF9wdWxzZShzdHJ1Y3QgZHNfZGV2aWNlICosIGludCk7Ci1pbnQgZHNfcmVzZXQoc3RydWN0IGRzX2RldmljZSAqLCBzdHJ1Y3QgZHNfc3RhdHVzICopOwotc3RydWN0IGRzX2RldmljZSAqIGRzX2dldF9kZXZpY2Uodm9pZCk7Ci12b2lkIGRzX3B1dF9kZXZpY2Uoc3RydWN0IGRzX2RldmljZSAqKTsKLQogc3RhdGljIGlubGluZSB2b2lkIGRzX2R1bXBfc3RhdHVzKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqLCBpbnQpOwogc3RhdGljIGludCBkc19zZW5kX2NvbnRyb2woc3RydWN0IGRzX2RldmljZSAqLCB1MTYsIHUxNik7Ci1zdGF0aWMgaW50IGRzX3NlbmRfY29udHJvbF9tb2RlKHN0cnVjdCBkc19kZXZpY2UgKiwgdTE2LCB1MTYpOwogc3RhdGljIGludCBkc19zZW5kX2NvbnRyb2xfY21kKHN0cnVjdCBkc19kZXZpY2UgKiwgdTE2LCB1MTYpOwogCitzdGF0aWMgTElTVF9IRUFEKGRzX2RldmljZXMpOworc3RhdGljIERFRklORV9NVVRFWChkc19tdXRleCk7CiAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBkc19kcml2ZXIgPSB7CiAJLm5hbWUgPQkJIkRTOTQ5MFIiLApAQCAtNTgsMjAgKzE3OCw2IEBACiAJLmlkX3RhYmxlID0JZHNfaWRfdGFibGUsCiB9OwogCi1zdGF0aWMgc3RydWN0IGRzX2RldmljZSAqZHNfZGV2OwotCi1zdHJ1Y3QgZHNfZGV2aWNlICogZHNfZ2V0X2RldmljZSh2b2lkKQotewotCWlmIChkc19kZXYpCi0JCWF0b21pY19pbmMoJmRzX2Rldi0+cmVmY250KTsKLQlyZXR1cm4gZHNfZGV2OwotfQotCi12b2lkIGRzX3B1dF9kZXZpY2Uoc3RydWN0IGRzX2RldmljZSAqZGV2KQotewotCWF0b21pY19kZWMoJmRldi0+cmVmY250KTsKLX0KLQogc3RhdGljIGludCBkc19zZW5kX2NvbnRyb2xfY21kKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTE2IHZhbHVlLCB1MTYgaW5kZXgpCiB7CiAJaW50IGVycjsKQEAgLTg2LDcgKzE5Miw3IEBACiAKIAlyZXR1cm4gZXJyOwogfQotCisjaWYgMAogc3RhdGljIGludCBkc19zZW5kX2NvbnRyb2xfbW9kZShzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHUxNiB2YWx1ZSwgdTE2IGluZGV4KQogewogCWludCBlcnI7CkBAIC0xMDEsNyArMjA3LDcgQEAKIAogCXJldHVybiBlcnI7CiB9Ci0KKyNlbmRpZgogc3RhdGljIGludCBkc19zZW5kX2NvbnRyb2woc3RydWN0IGRzX2RldmljZSAqZGV2LCB1MTYgdmFsdWUsIHUxNiBpbmRleCkKIHsKIAlpbnQgZXJyOwpAQCAtMzI0LDcgKzQzMCw3IEBACiAJCXJldHVybiAwOwogfQogCi1pbnQgZHNfcmVzZXQoc3RydWN0IGRzX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNfc3RhdHVzICpzdCkKK3N0YXRpYyBpbnQgZHNfcmVzZXQoc3RydWN0IGRzX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHNfc3RhdHVzICpzdCkKIHsKIAlpbnQgZXJyOwogCkBAIC0zNDUsNyArNDUxLDcgQEAKIH0KIAogI2lmIDAKLWludCBkc19zZXRfc3BlZWQoc3RydWN0IGRzX2RldmljZSAqZGV2LCBpbnQgc3BlZWQpCitzdGF0aWMgaW50IGRzX3NldF9zcGVlZChzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIGludCBzcGVlZCkKIHsKIAlpbnQgZXJyOwogCkBAIC0zOTUsNyArNTAxLDcgQEAKIAlyZXR1cm4gZXJyOwogfQogCi1pbnQgZHNfdG91Y2hfYml0KHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTggYml0LCB1OCAqdGJpdCkKK3N0YXRpYyBpbnQgZHNfdG91Y2hfYml0KHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTggYml0LCB1OCAqdGJpdCkKIHsKIAlpbnQgZXJyLCBjb3VudDsKIAlzdHJ1Y3QgZHNfc3RhdHVzIHN0OwpAQCAtNDI3LDcgKzUzMyw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBkc193cml0ZV9iaXQoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCBiaXQpCitzdGF0aWMgaW50IGRzX3dyaXRlX2JpdChzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHU4IGJpdCkKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBkc19zdGF0dXMgc3Q7CkBAIC00NDEsNyArNTQ3LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IGRzX3dyaXRlX2J5dGUoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCBieXRlKQorc3RhdGljIGludCBkc193cml0ZV9ieXRlKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTggYnl0ZSkKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBkc19zdGF0dXMgc3Q7CkBAIC00NjQsMjYgKzU3MCw3IEBACiAJcmV0dXJuICEoYnl0ZSA9PSByYnl0ZSk7CiB9CiAKLWludCBkc19yZWFkX2JpdChzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHU4ICpiaXQpCi17Ci0JaW50IGVycjsKLQotCWVyciA9IGRzX3NlbmRfY29udHJvbF9tb2RlKGRldiwgTU9EX1BVTFNFX0VOLCBQVUxTRV9TUFVFKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCi0JZXJyID0gZHNfc2VuZF9jb250cm9sKGRldiwgQ09NTV9CSVRfSU8gfCBDT01NX0lNIHwgQ09NTV9TUFUgfCBDT01NX0QsIDApOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQllcnIgPSBkc19yZWN2X2RhdGEoZGV2LCBiaXQsIHNpemVvZigqYml0KSk7Ci0JaWYgKGVyciA8IDApCi0JCXJldHVybiBlcnI7Ci0KLQlyZXR1cm4gMDsKLX0KLQotaW50IGRzX3JlYWRfYnl0ZShzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHU4ICpieXRlKQorc3RhdGljIGludCBkc19yZWFkX2J5dGUoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCAqYnl0ZSkKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBkc19zdGF0dXMgc3Q7CkBAIC01MDEsNyArNTg4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IGRzX3JlYWRfYmxvY2soc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCAqYnVmLCBpbnQgbGVuKQorc3RhdGljIGludCBkc19yZWFkX2Jsb2NrKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTggKmJ1ZiwgaW50IGxlbikKIHsKIAlzdHJ1Y3QgZHNfc3RhdHVzIHN0OwogCWludCBlcnI7CkBAIC01MjcsNyArNjE0LDcgQEAKIAlyZXR1cm4gZXJyOwogfQogCi1pbnQgZHNfd3JpdGVfYmxvY2soc3RydWN0IGRzX2RldmljZSAqZGV2LCB1OCAqYnVmLCBpbnQgbGVuKQorc3RhdGljIGludCBkc193cml0ZV9ibG9jayhzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHU4ICpidWYsIGludCBsZW4pCiB7CiAJaW50IGVycjsKIAlzdHJ1Y3QgZHNfc3RhdHVzIHN0OwpAQCAtNTU1LDcgKzY0Miw3IEBACiAKICNpZiAwCiAKLWludCBkc19zZWFyY2goc3RydWN0IGRzX2RldmljZSAqZGV2LCB1NjQgaW5pdCwgdTY0ICpidWYsIHU4IGlkX251bWJlciwgaW50IGNvbmRpdGlvbmFsX3NlYXJjaCkKK3N0YXRpYyBpbnQgZHNfc2VhcmNoKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTY0IGluaXQsIHU2NCAqYnVmLCB1OCBpZF9udW1iZXIsIGludCBjb25kaXRpb25hbF9zZWFyY2gpCiB7CiAJaW50IGVycjsKIAl1MTYgdmFsdWUsIGluZGV4OwpAQCAtNTg0LDcgKzY3MSw3IEBACiAJcmV0dXJuIGVyci84OwogfQogCi1pbnQgZHNfbWF0Y2hfYWNjZXNzKHN0cnVjdCBkc19kZXZpY2UgKmRldiwgdTY0IGluaXQpCitzdGF0aWMgaW50IGRzX21hdGNoX2FjY2VzcyhzdHJ1Y3QgZHNfZGV2aWNlICpkZXYsIHU2NCBpbml0KQogewogCWludCBlcnI7CiAJc3RydWN0IGRzX3N0YXR1cyBzdDsKQEAgLTYwNCw3ICs2OTEsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgZHNfc2V0X3BhdGgoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1NjQgaW5pdCkKK3N0YXRpYyBpbnQgZHNfc2V0X3BhdGgoc3RydWN0IGRzX2RldmljZSAqZGV2LCB1NjQgaW5pdCkKIHsKIAlpbnQgZXJyOwogCXN0cnVjdCBkc19zdGF0dXMgc3Q7CkBAIC02MzAsNDUgKzcxNywxNTYgQEAKIAogI2VuZGlmICAvKiAgMCAgKi8KIAorc3RhdGljIHU4IGRzOTQ5MHJfdG91Y2hfYml0KHZvaWQgKmRhdGEsIHU4IGJpdCkKK3sKKwl1OCByZXQ7CisJc3RydWN0IGRzX2RldmljZSAqZGV2ID0gZGF0YTsKKworCWlmIChkc190b3VjaF9iaXQoZGV2LCBiaXQsICZyZXQpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRzOTQ5MHJfd3JpdGVfYml0KHZvaWQgKmRhdGEsIHU4IGJpdCkKK3sKKwlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOworCisJZHNfd3JpdGVfYml0KGRldiwgYml0KTsKK30KKworc3RhdGljIHZvaWQgZHM5NDkwcl93cml0ZV9ieXRlKHZvaWQgKmRhdGEsIHU4IGJ5dGUpCit7CisJc3RydWN0IGRzX2RldmljZSAqZGV2ID0gZGF0YTsKKworCWRzX3dyaXRlX2J5dGUoZGV2LCBieXRlKTsKK30KKworc3RhdGljIHU4IGRzOTQ5MHJfcmVhZF9iaXQodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOworCWludCBlcnI7CisJdTggYml0ID0gMDsKKworCWVyciA9IGRzX3RvdWNoX2JpdChkZXYsIDEsICZiaXQpOworCWlmIChlcnIpCisJCXJldHVybiAwOworCisJcmV0dXJuIGJpdCAmIDE7Cit9CisKK3N0YXRpYyB1OCBkczk0OTByX3JlYWRfYnl0ZSh2b2lkICpkYXRhKQoreworCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7CisJaW50IGVycjsKKwl1OCBieXRlID0gMDsKKworCWVyciA9IGRzX3JlYWRfYnl0ZShkZXYsICZieXRlKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBieXRlOworfQorCitzdGF0aWMgdm9pZCBkczk0OTByX3dyaXRlX2Jsb2NrKHZvaWQgKmRhdGEsIGNvbnN0IHU4ICpidWYsIGludCBsZW4pCit7CisJc3RydWN0IGRzX2RldmljZSAqZGV2ID0gZGF0YTsKKworCWRzX3dyaXRlX2Jsb2NrKGRldiwgKHU4ICopYnVmLCBsZW4pOworfQorCitzdGF0aWMgdTggZHM5NDkwcl9yZWFkX2Jsb2NrKHZvaWQgKmRhdGEsIHU4ICpidWYsIGludCBsZW4pCit7CisJc3RydWN0IGRzX2RldmljZSAqZGV2ID0gZGF0YTsKKwlpbnQgZXJyOworCisJZXJyID0gZHNfcmVhZF9ibG9jayhkZXYsIGJ1ZiwgbGVuKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgdTggZHM5NDkwcl9yZXNldCh2b2lkICpkYXRhKQoreworCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7CisJc3RydWN0IGRzX3N0YXR1cyBzdDsKKwlpbnQgZXJyOworCisJbWVtc2V0KCZzdCwgMCwgc2l6ZW9mKHN0KSk7CisKKwllcnIgPSBkc19yZXNldChkZXYsICZzdCk7CisJaWYgKGVycikKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkc193MV9pbml0KHN0cnVjdCBkc19kZXZpY2UgKmRldikKK3sKKwltZW1zZXQoJmRldi0+bWFzdGVyLCAwLCBzaXplb2Yoc3RydWN0IHcxX2J1c19tYXN0ZXIpKTsKKworCWRldi0+bWFzdGVyLmRhdGEJPSBkZXY7CisJZGV2LT5tYXN0ZXIudG91Y2hfYml0CT0gJmRzOTQ5MHJfdG91Y2hfYml0OworCWRldi0+bWFzdGVyLnJlYWRfYml0CT0gJmRzOTQ5MHJfcmVhZF9iaXQ7CisJZGV2LT5tYXN0ZXIud3JpdGVfYml0CT0gJmRzOTQ5MHJfd3JpdGVfYml0OworCWRldi0+bWFzdGVyLnJlYWRfYnl0ZQk9ICZkczk0OTByX3JlYWRfYnl0ZTsKKwlkZXYtPm1hc3Rlci53cml0ZV9ieXRlCT0gJmRzOTQ5MHJfd3JpdGVfYnl0ZTsKKwlkZXYtPm1hc3Rlci5yZWFkX2Jsb2NrCT0gJmRzOTQ5MHJfcmVhZF9ibG9jazsKKwlkZXYtPm1hc3Rlci53cml0ZV9ibG9jawk9ICZkczk0OTByX3dyaXRlX2Jsb2NrOworCWRldi0+bWFzdGVyLnJlc2V0X2J1cwk9ICZkczk0OTByX3Jlc2V0OworCisJcmV0dXJuIHcxX2FkZF9tYXN0ZXJfZGV2aWNlKCZkZXYtPm1hc3Rlcik7Cit9CisKK3N0YXRpYyB2b2lkIGRzX3cxX2Zpbmkoc3RydWN0IGRzX2RldmljZSAqZGV2KQoreworCXcxX3JlbW92ZV9tYXN0ZXJfZGV2aWNlKCZkZXYtPm1hc3Rlcik7Cit9CisKIHN0YXRpYyBpbnQgZHNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJCSAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdWRldl9pZCkKIHsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7CiAJc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDsKIAlzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjOworCXN0cnVjdCBkc19kZXZpY2UgKmRldjsKIAlpbnQgaSwgZXJyOwogCi0JZHNfZGV2ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGRzX2RldmljZSksIEdGUF9LRVJORUwpOwotCWlmICghZHNfZGV2KSB7CisJZGV2ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGRzX2RldmljZSksIEdGUF9LRVJORUwpOworCWlmICghZGV2KSB7CiAJCXByaW50ayhLRVJOX0lORk8gIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgRFM5NDkwUiBzdHJ1Y3R1cmUuXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQorCWRldi0+dWRldiA9IHVzYl9nZXRfZGV2KHVkZXYpOworCWlmICghZGV2LT51ZGV2KSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX291dF9mcmVlOworCX0KKwltZW1zZXQoZGV2LT5lcCwgMCwgc2l6ZW9mKGRldi0+ZXApKTsKIAotCWRzX2Rldi0+dWRldiA9IHVzYl9nZXRfZGV2KHVkZXYpOwotCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgZHNfZGV2KTsKKwl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGRldik7CiAKLQllcnIgPSB1c2Jfc2V0X2ludGVyZmFjZShkc19kZXYtPnVkZXYsIGludGYtPmFsdHNldHRpbmdbMF0uZGVzYy5iSW50ZXJmYWNlTnVtYmVyLCAzKTsKKwllcnIgPSB1c2Jfc2V0X2ludGVyZmFjZShkZXYtPnVkZXYsIGludGYtPmFsdHNldHRpbmdbMF0uZGVzYy5iSW50ZXJmYWNlTnVtYmVyLCAzKTsKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIHNldCBhbHRlcm5hdGl2ZSBzZXR0aW5nIDMgZm9yICVkIGludGVyZmFjZTogZXJyPSVkLlxuIiwKIAkJCQlpbnRmLT5hbHRzZXR0aW5nWzBdLmRlc2MuYkludGVyZmFjZU51bWJlciwgZXJyKTsKLQkJcmV0dXJuIGVycjsKKwkJZ290byBlcnJfb3V0X2NsZWFyOwogCX0KIAotCWVyciA9IHVzYl9yZXNldF9jb25maWd1cmF0aW9uKGRzX2Rldi0+dWRldik7CisJZXJyID0gdXNiX3Jlc2V0X2NvbmZpZ3VyYXRpb24oZGV2LT51ZGV2KTsKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIHJlc2V0IGNvbmZpZ3VyYXRpb246IGVycj0lZC5cbiIsIGVycik7Ci0JCXJldHVybiBlcnI7CisJCWdvdG8gZXJyX291dF9jbGVhcjsKIAl9CiAKIAlpZmFjZV9kZXNjID0gJmludGYtPmFsdHNldHRpbmdbMF07CiAJaWYgKGlmYWNlX2Rlc2MtPmRlc2MuYk51bUVuZHBvaW50cyAhPSBOVU1fRVAtMSkgewogCQlwcmludGsoS0VSTl9JTkZPICJOdW0gZW5kcG9pbnRzPSVkLiBJdCBpcyBub3QgRFM5NDkwUi5cbiIsIGlmYWNlX2Rlc2MtPmRlc2MuYk51bUVuZHBvaW50cyk7Ci0JCXJldHVybiAtRU5PREVWOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIGVycl9vdXRfY2xlYXI7CiAJfQogCi0JYXRvbWljX3NldCgmZHNfZGV2LT5yZWZjbnQsIDApOwotCW1lbXNldChkc19kZXYtPmVwLCAwLCBzaXplb2YoZHNfZGV2LT5lcCkpOwotCiAJLyoKIAkgKiBUaGlzIGxvb3AgZG9lc24nZCBzaG93IGNvbnRyb2wgMCBlbmRwb2ludCwKIAkgKiBzbyB3ZSB3aWxsIGZpbGwgb25seSAxLTMgZW5kcG9pbnRzIGVudHJ5LgpAQCAtNjc2LDU0ICs4NzQsMzEgQEAKIAlmb3IgKGkgPSAwOyBpIDwgaWZhY2VfZGVzYy0+ZGVzYy5iTnVtRW5kcG9pbnRzOyArK2kpIHsKIAkJZW5kcG9pbnQgPSAmaWZhY2VfZGVzYy0+ZW5kcG9pbnRbaV0uZGVzYzsKIAotCQlkc19kZXYtPmVwW2krMV0gPSBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzczsKLQorCQlkZXYtPmVwW2krMV0gPSBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzczsKKyNpZiAwCiAJCXByaW50aygiJWQ6IGFkZHI9JXgsIHNpemU9JWQsIGRpcj0lcywgdHlwZT0leFxuIiwKIAkJCWksIGVuZHBvaW50LT5iRW5kcG9pbnRBZGRyZXNzLCBsZTE2X3RvX2NwdShlbmRwb2ludC0+d01heFBhY2tldFNpemUpLAogCQkJKGVuZHBvaW50LT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0RJUl9JTik/IklOIjoiT1VUIiwKIAkJCWVuZHBvaW50LT5ibUF0dHJpYnV0ZXMgJiBVU0JfRU5EUE9JTlRfWEZFUlRZUEVfTUFTSyk7Ci0JfQotCi0jaWYgMAotCXsKLQkJaW50IGVyciwgaTsKLQkJdTY0IGJ1ZlszXTsKLQkJdTY0IGluaXQ9MHhiMzAwMDAwMDIwNzhlZTgxdWxsOwotCQlzdHJ1Y3QgZHNfc3RhdHVzIHN0OwotCi0JCWRzX3Jlc2V0KGRzX2RldiwgJnN0KTsKLQkJZXJyID0gZHNfc2VhcmNoKGRzX2RldiwgaW5pdCwgYnVmLCAzLCAwKTsKLQkJaWYgKGVyciA8IDApCi0JCQlyZXR1cm4gZXJyOwotCQlmb3IgKGk9MDsgaTxlcnI7ICsraSkKLQkJCXByaW50aygiJWQ6ICVsbHhcbiIsIGksIGJ1ZltpXSk7Ci0KLQkJcHJpbnRrKCJSZXNldHRpbmcuLi5cbiIpOwotCQlkc19yZXNldChkc19kZXYsICZzdCk7Ci0JCXByaW50aygiU2V0dGluZyBwYXRoIGZvciAlbGx4LlxuIiwgaW5pdCk7Ci0JCWVyciA9IGRzX3NldF9wYXRoKGRzX2RldiwgaW5pdCk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCQlwcmludGsoIkNhbGxpbmcgTUFUQ0hfQUNDRVNTLlxuIik7Ci0JCWVyciA9IGRzX21hdGNoX2FjY2Vzcyhkc19kZXYsIGluaXQpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQotCQlwcmludGsoIlNlYXJjaGluZyB0aGUgYnVzLi4uXG4iKTsKLQkJZXJyID0gZHNfc2VhcmNoKGRzX2RldiwgaW5pdCwgYnVmLCAzLCAwKTsKLQotCQlwcmludGsoImRzX3NlYXJjaCgpIHJldHVybmVkICVkXG4iLCBlcnIpOwotCi0JCWlmIChlcnIgPCAwKQotCQkJcmV0dXJuIGVycjsKLQkJZm9yIChpPTA7IGk8ZXJyOyArK2kpCi0JCQlwcmludGsoIiVkOiAlbGx4XG4iLCBpLCBidWZbaV0pOwotCi0JCXJldHVybiAwOwotCX0KICNlbmRpZgorCX0KKworCWVyciA9IGRzX3cxX2luaXQoZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9vdXRfY2xlYXI7CisKKwltdXRleF9sb2NrKCZkc19tdXRleCk7CisJbGlzdF9hZGRfdGFpbCgmZGV2LT5kc19lbnRyeSwgJmRzX2RldmljZXMpOworCW11dGV4X3VubG9jaygmZHNfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CisKK2Vycl9vdXRfY2xlYXI6CisJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKKwl1c2JfcHV0X2RldihkZXYtPnVkZXYpOworZXJyX291dF9mcmVlOgorCWtmcmVlKGRldik7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIHZvaWQgZHNfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKQEAgLTczMSwxOSArOTA2LDE5IEBACiAJc3RydWN0IGRzX2RldmljZSAqZGV2OwogCiAJZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKwlpZiAoIWRldikKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZHNfbXV0ZXgpOworCWxpc3RfZGVsKCZkZXYtPmRzX2VudHJ5KTsKKwltdXRleF91bmxvY2soJmRzX211dGV4KTsKKworCWRzX3cxX2ZpbmkoZGV2KTsKKwogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAKLQl3aGlsZSAoYXRvbWljX3JlYWQoJmRldi0+cmVmY250KSkgewotCQlwcmludGsoS0VSTl9JTkZPICJXYWl0aW5nIGZvciBEUyB0byBiZWNvbWUgZnJlZTogcmVmY250PSVkLlxuIiwKLQkJCQlhdG9taWNfcmVhZCgmZGV2LT5yZWZjbnQpKTsKLQotCQlpZiAobXNsZWVwX2ludGVycnVwdGlibGUoMTAwMCkpCi0JCQlmbHVzaF9zaWduYWxzKGN1cnJlbnQpOwotCX0KLQogCXVzYl9wdXRfZGV2KGRldi0+dWRldik7CiAJa2ZyZWUoZGV2KTsKLQlkc19kZXYgPSBOVUxMOwogfQogCiBzdGF0aWMgaW50IGRzX2luaXQodm9pZCkKQEAgLTc2OSwyNyArOTQ0LDQgQEAKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiRXZnZW5peSBQb2x5YWtvdiA8am9obnBvbEAya2EubWlwdC5ydT4iKTsKLQotRVhQT1JUX1NZTUJPTChkc190b3VjaF9iaXQpOwotRVhQT1JUX1NZTUJPTChkc19yZWFkX2J5dGUpOwotRVhQT1JUX1NZTUJPTChkc19yZWFkX2JpdCk7Ci1FWFBPUlRfU1lNQk9MKGRzX3JlYWRfYmxvY2spOwotRVhQT1JUX1NZTUJPTChkc193cml0ZV9ieXRlKTsKLUVYUE9SVF9TWU1CT0woZHNfd3JpdGVfYml0KTsKLUVYUE9SVF9TWU1CT0woZHNfd3JpdGVfYmxvY2spOwotRVhQT1JUX1NZTUJPTChkc19yZXNldCk7Ci1FWFBPUlRfU1lNQk9MKGRzX2dldF9kZXZpY2UpOwotRVhQT1JUX1NZTUJPTChkc19wdXRfZGV2aWNlKTsKLQotLyoKLSAqIFRoaXMgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGZvciBFRVBST00gcHJvZ3JhbW1pbmcsCi0gKiB3aGVuIGRyaXZlciB3aWxsIGJlIGluY2x1ZGVkIGludG8gbWFpbmxpbmUgdGhpcyB3aWxsCi0gKiByZXF1aXJlIHVuY29tbWVudGluZy4KLSAqLwotI2lmIDAKLUVYUE9SVF9TWU1CT0woZHNfc3RhcnRfcHVsc2UpOwotRVhQT1JUX1NZTUJPTChkc19zZXRfc3BlZWQpOwotRVhQT1JUX1NZTUJPTChkc19kZXRlY3QpOwotRVhQT1JUX1NZTUJPTChkc19zdG9wX3B1bHNlKTsKLUVYUE9SVF9TWU1CT0woZHNfc2VhcmNoKTsKLSNlbmRpZgorTU9EVUxFX0RFU0NSSVBUSU9OKCJEUzI0OTAgVVNCIDwtPiBXMSBidXMgbWFzdGVyIGRyaXZlciAoRFM5NDkwKikiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvbWFzdGVycy9kc193MV9icmlkZ2UuYyBiL2RyaXZlcnMvdzEvbWFzdGVycy9kc193MV9icmlkZ2UuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzMDc4My4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3cxL21hc3RlcnMvZHNfdzFfYnJpZGdlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotLyoKLSAqCWRzX3cxX2JyaWRnZS5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0IEV2Z2VuaXkgUG9seWFrb3YgPGpvaG5wb2xAMmthLm1pcHQucnU+Ci0gKgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0KLSNpbmNsdWRlICIuLi93MS5oIgotI2luY2x1ZGUgIi4uL3cxX2ludC5oIgotI2luY2x1ZGUgImRzY29yZS5oIgotCi1zdGF0aWMgc3RydWN0IGRzX2RldmljZSAqZHNfZGV2Owotc3RhdGljIHN0cnVjdCB3MV9idXNfbWFzdGVyICpkc19idXNfbWFzdGVyOwotCi1zdGF0aWMgdTggZHM5NDkwcl90b3VjaF9iaXQodm9pZCAqZGF0YSwgdTggYml0KQotewotCXU4IHJldDsKLQlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOwotCi0JaWYgKGRzX3RvdWNoX2JpdChkZXYsIGJpdCwgJnJldCkpCi0JCXJldHVybiAwOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgZHM5NDkwcl93cml0ZV9iaXQodm9pZCAqZGF0YSwgdTggYml0KQotewotCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7Ci0KLQlkc193cml0ZV9iaXQoZGV2LCBiaXQpOwotfQotCi1zdGF0aWMgdm9pZCBkczk0OTByX3dyaXRlX2J5dGUodm9pZCAqZGF0YSwgdTggYnl0ZSkKLXsKLQlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOwotCi0JZHNfd3JpdGVfYnl0ZShkZXYsIGJ5dGUpOwotfQotCi1zdGF0aWMgdTggZHM5NDkwcl9yZWFkX2JpdCh2b2lkICpkYXRhKQotewotCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7Ci0JaW50IGVycjsKLQl1OCBiaXQgPSAwOwotCi0JZXJyID0gZHNfdG91Y2hfYml0KGRldiwgMSwgJmJpdCk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIDA7Ci0JLy9lcnIgPSBkc19yZWFkX2JpdChkZXYsICZiaXQpOwotCS8vaWYgKGVycikKLQkvLwlyZXR1cm4gMDsKLQotCXJldHVybiBiaXQgJiAxOwotfQotCi1zdGF0aWMgdTggZHM5NDkwcl9yZWFkX2J5dGUodm9pZCAqZGF0YSkKLXsKLQlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOwotCWludCBlcnI7Ci0JdTggYnl0ZSA9IDA7Ci0KLQllcnIgPSBkc19yZWFkX2J5dGUoZGV2LCAmYnl0ZSk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1cm4gYnl0ZTsKLX0KLQotc3RhdGljIHZvaWQgZHM5NDkwcl93cml0ZV9ibG9jayh2b2lkICpkYXRhLCBjb25zdCB1OCAqYnVmLCBpbnQgbGVuKQotewotCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7Ci0KLQlkc193cml0ZV9ibG9jayhkZXYsICh1OCAqKWJ1ZiwgbGVuKTsKLX0KLQotc3RhdGljIHU4IGRzOTQ5MHJfcmVhZF9ibG9jayh2b2lkICpkYXRhLCB1OCAqYnVmLCBpbnQgbGVuKQotewotCXN0cnVjdCBkc19kZXZpY2UgKmRldiA9IGRhdGE7Ci0JaW50IGVycjsKLQotCWVyciA9IGRzX3JlYWRfYmxvY2soZGV2LCBidWYsIGxlbik7Ci0JaWYgKGVyciA8IDApCi0JCXJldHVybiAwOwotCi0JcmV0dXJuIGxlbjsKLX0KLQotc3RhdGljIHU4IGRzOTQ5MHJfcmVzZXQodm9pZCAqZGF0YSkKLXsKLQlzdHJ1Y3QgZHNfZGV2aWNlICpkZXYgPSBkYXRhOwotCXN0cnVjdCBkc19zdGF0dXMgc3Q7Ci0JaW50IGVycjsKLQotCW1lbXNldCgmc3QsIDAsIHNpemVvZihzdCkpOwotCi0JZXJyID0gZHNfcmVzZXQoZGV2LCAmc3QpOwotCWlmIChlcnIpCi0JCXJldHVybiAxOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX19kZXZpbml0IGRzX3cxX2luaXQodm9pZCkKLXsKLQlpbnQgZXJyOwotCi0JZHNfYnVzX21hc3RlciA9IGttYWxsb2Moc2l6ZW9mKCpkc19idXNfbWFzdGVyKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFkc19idXNfbWFzdGVyKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIGFsbG9jYXRlIERTOTQ5MFIgVVNCPC0+VzEgYnVzX21hc3RlciBzdHJ1Y3R1cmUuXG4iKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCi0JZHNfZGV2ID0gZHNfZ2V0X2RldmljZSgpOwotCWlmICghZHNfZGV2KSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRFM5NDkwUiBpcyBub3QgcmVnaXN0ZXJlZC5cbiIpOwotCQllcnIgPSAgLUVOT0RFVjsKLQkJZ290byBlcnJfb3V0X2ZyZWVfYnVzX21hc3RlcjsKLQl9Ci0KLQltZW1zZXQoZHNfYnVzX21hc3RlciwgMCwgc2l6ZW9mKCpkc19idXNfbWFzdGVyKSk7Ci0KLQlkc19idXNfbWFzdGVyLT5kYXRhCQk9IGRzX2RldjsKLQlkc19idXNfbWFzdGVyLT50b3VjaF9iaXQJPSAmZHM5NDkwcl90b3VjaF9iaXQ7Ci0JZHNfYnVzX21hc3Rlci0+cmVhZF9iaXQJCT0gJmRzOTQ5MHJfcmVhZF9iaXQ7Ci0JZHNfYnVzX21hc3Rlci0+d3JpdGVfYml0CT0gJmRzOTQ5MHJfd3JpdGVfYml0OwotCWRzX2J1c19tYXN0ZXItPnJlYWRfYnl0ZQk9ICZkczk0OTByX3JlYWRfYnl0ZTsKLQlkc19idXNfbWFzdGVyLT53cml0ZV9ieXRlCT0gJmRzOTQ5MHJfd3JpdGVfYnl0ZTsKLQlkc19idXNfbWFzdGVyLT5yZWFkX2Jsb2NrCT0gJmRzOTQ5MHJfcmVhZF9ibG9jazsKLQlkc19idXNfbWFzdGVyLT53cml0ZV9ibG9jawk9ICZkczk0OTByX3dyaXRlX2Jsb2NrOwotCWRzX2J1c19tYXN0ZXItPnJlc2V0X2J1cwk9ICZkczk0OTByX3Jlc2V0OwotCi0JZXJyID0gdzFfYWRkX21hc3Rlcl9kZXZpY2UoZHNfYnVzX21hc3Rlcik7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfb3V0X3B1dF9kZXZpY2U7Ci0KLQlyZXR1cm4gMDsKLQotZXJyX291dF9wdXRfZGV2aWNlOgotCWRzX3B1dF9kZXZpY2UoZHNfZGV2KTsKLWVycl9vdXRfZnJlZV9idXNfbWFzdGVyOgotCWtmcmVlKGRzX2J1c19tYXN0ZXIpOwotCi0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIHZvaWQgX19kZXZleGl0IGRzX3cxX2Zpbmkodm9pZCkKLXsKLQl3MV9yZW1vdmVfbWFzdGVyX2RldmljZShkc19idXNfbWFzdGVyKTsKLQlkc19wdXRfZGV2aWNlKGRzX2Rldik7Ci0Ja2ZyZWUoZHNfYnVzX21hc3Rlcik7Ci19Ci0KLW1vZHVsZV9pbml0KGRzX3cxX2luaXQpOwotbW9kdWxlX2V4aXQoZHNfdzFfZmluaSk7Ci0KLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9BVVRIT1IoIkV2Z2VuaXkgUG9seWFrb3YgPGpvaG5wb2xAMmthLm1pcHQucnU+Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL21hc3RlcnMvZHNjb3JlLmggYi9kcml2ZXJzL3cxL21hc3RlcnMvZHNjb3JlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZjU2NzEuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy93MS9tYXN0ZXJzL2RzY29yZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qCi0gKglkc2NvcmUuaAotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNCBFdmdlbml5IFBvbHlha292IDxqb2hucG9sQDJrYS5taXB0LnJ1PgotICoKLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpZm5kZWYgX19EU0NPUkVfSAotI2RlZmluZSBfX0RTQ09SRV9ICi0KLSNpbmNsdWRlIDxsaW51eC91c2IuaD4KLSNpbmNsdWRlIDxhc20vYXRvbWljLmg+Ci0KLS8qIENPTU1BTkQgVFlQRSBDT0RFUyAqLwotI2RlZmluZSBDT05UUk9MX0NNRAkJCTB4MDAKLSNkZWZpbmUgQ09NTV9DTUQJCQkweDAxCi0jZGVmaW5lIE1PREVfQ01ECQkJMHgwMgotCi0vKiBDT05UUk9MIENPTU1BTkQgQ09ERVMgKi8KLSNkZWZpbmUgQ1RMX1JFU0VUX0RFVklDRQkJMHgwMDAwCi0jZGVmaW5lIENUTF9TVEFSVF9FWEUJCQkweDAwMDEKLSNkZWZpbmUgQ1RMX1JFU1VNRV9FWEUJCQkweDAwMDIKLSNkZWZpbmUgQ1RMX0hBTFRfRVhFX0lETEUJCTB4MDAwMwotI2RlZmluZSBDVExfSEFMVF9FWEVfRE9ORQkJMHgwMDA0Ci0jZGVmaW5lIENUTF9GTFVTSF9DT01NX0NNRFMJCTB4MDAwNwotI2RlZmluZSBDVExfRkxVU0hfUkNWX0JVRkZFUgkJMHgwMDA4Ci0jZGVmaW5lIENUTF9GTFVTSF9YTVRfQlVGRkVSCQkweDAwMDkKLSNkZWZpbmUgQ1RMX0dFVF9DT01NX0NNRFMJCTB4MDAwQQotCi0vKiBNT0RFIENPTU1BTkQgQ09ERVMgKi8KLSNkZWZpbmUgTU9EX1BVTFNFX0VOCQkJMHgwMDAwCi0jZGVmaW5lIE1PRF9TUEVFRF9DSEFOR0VfRU4JCTB4MDAwMQotI2RlZmluZSBNT0RfMVdJUkVfU1BFRUQJCQkweDAwMDIKLSNkZWZpbmUgTU9EX1NUUk9OR19QVV9EVVJBVElPTgkJMHgwMDAzCi0jZGVmaW5lIE1PRF9QVUxMRE9XTl9TTEVXUkFURQkJMHgwMDA0Ci0jZGVmaW5lIE1PRF9QUk9HX1BVTFNFX0RVUkFUSU9OCQkweDAwMDUKLSNkZWZpbmUgTU9EX1dSSVRFMV9MT1dUSU1FCQkweDAwMDYKLSNkZWZpbmUgTU9EX0RTT1cwX1RSRUMJCQkweDAwMDcKLQotLyogQ09NTVVOSUNBVElPTiBDT01NQU5EIENPREVTICovCi0jZGVmaW5lIENPTU1fRVJST1JfRVNDQVBFCQkweDA2MDEKLSNkZWZpbmUgQ09NTV9TRVRfRFVSQVRJT04JCTB4MDAxMgotI2RlZmluZSBDT01NX0JJVF9JTwkJCTB4MDAyMAotI2RlZmluZSBDT01NX1BVTFNFCQkJMHgwMDMwCi0jZGVmaW5lIENPTU1fMV9XSVJFX1JFU0VUCQkweDAwNDIKLSNkZWZpbmUgQ09NTV9CWVRFX0lPCQkJMHgwMDUyCi0jZGVmaW5lIENPTU1fTUFUQ0hfQUNDRVNTCQkweDAwNjQKLSNkZWZpbmUgQ09NTV9CTE9DS19JTwkJCTB4MDA3NAotI2RlZmluZSBDT01NX1JFQURfU1RSQUlHSFQJCTB4MDA4MAotI2RlZmluZSBDT01NX0RPX1JFTEVBU0UJCQkweDYwOTIKLSNkZWZpbmUgQ09NTV9TRVRfUEFUSAkJCTB4MDBBMgotI2RlZmluZSBDT01NX1dSSVRFX1NSQU1fUEFHRQkJMHgwMEIyCi0jZGVmaW5lIENPTU1fV1JJVEVfRVBST00JCTB4MDBDNAotI2RlZmluZSBDT01NX1JFQURfQ1JDX1BST1RfUEFHRQkJMHgwMEQ0Ci0jZGVmaW5lIENPTU1fUkVBRF9SRURJUkVDVF9QQUdFX0NSQwkweDIxRTQKLSNkZWZpbmUgQ09NTV9TRUFSQ0hfQUNDRVNTCQkweDAwRjQKLQotLyogQ29tbXVuaWNhdGlvbiBjb21tYW5kIGJpdHMgKi8KLSNkZWZpbmUgQ09NTV9UWVBFCQkJMHgwMDA4Ci0jZGVmaW5lIENPTU1fU0UJCQkJMHgwMDA4Ci0jZGVmaW5lIENPTU1fRAkJCQkweDAwMDgKLSNkZWZpbmUgQ09NTV9aCQkJCTB4MDAwOAotI2RlZmluZSBDT01NX0NICQkJCTB4MDAwOAotI2RlZmluZSBDT01NX1NNCQkJCTB4MDAwOAotI2RlZmluZSBDT01NX1IJCQkJMHgwMDA4Ci0jZGVmaW5lIENPTU1fSU0JCQkJMHgwMDAxCi0KLSNkZWZpbmUgQ09NTV9QUwkJCQkweDQwMDAKLSNkZWZpbmUgQ09NTV9QU1QJCQkweDQwMDAKLSNkZWZpbmUgQ09NTV9DSUIJCQkweDQwMDAKLSNkZWZpbmUgQ09NTV9SVFMJCQkweDQwMDAKLSNkZWZpbmUgQ09NTV9EVAkJCQkweDIwMDAKLSNkZWZpbmUgQ09NTV9TUFUJCQkweDEwMDAKLSNkZWZpbmUgQ09NTV9GCQkJCTB4MDgwMAotI2RlZmluZSBDT01NX05UUAkJCTB4MDQwMAotI2RlZmluZSBDT01NX0lDUAkJCTB4MDIwMAotI2RlZmluZSBDT01NX1JTVAkJCTB4MDEwMAotCi0jZGVmaW5lIFBVTFNFX1BST0cJCQkweDAxCi0jZGVmaW5lIFBVTFNFX1NQVUUJCQkweDAyCi0KLSNkZWZpbmUgQlJBTkNIX01BSU4JCQkweENDCi0jZGVmaW5lIEJSQU5DSF9BVVgJCQkweDMzCi0KLS8qCi0gKiBEdXJhdGlvbiBvZiB0aGUgc3Ryb25nIHB1bGwtdXAgcHVsc2UgaW4gbWlsbGlzZWNvbmRzLgotICovCi0jZGVmaW5lIFBVTExVUF9QVUxTRV9EVVJBVElPTgkJNzUwCi0KLS8qIFN0YXR1cyBmbGFncyAqLwotI2RlZmluZSBTVF9TUFVBCQkJCTB4MDEgIC8qIFN0cm9uZyBQdWxsLXVwIGlzIGFjdGl2ZSAqLwotI2RlZmluZSBTVF9QUkdBCQkJCTB4MDIgIC8qIDEyViBwcm9ncmFtbWluZyBwdWxzZSBpcyBiZWluZyBnZW5lcmF0ZWQgKi8KLSNkZWZpbmUgU1RfMTJWUAkJCQkweDA0ICAvKiBleHRlcm5hbCAxMlYgcHJvZ3JhbW1pbmcgdm9sdGFnZSBpcyBwcmVzZW50ICovCi0jZGVmaW5lIFNUX1BNT0QJCQkJMHgwOCAgLyogRFMyNDkwIHBvd2VyZWQgZnJvbSBVU0IgYW5kIGV4dGVybmFsIHNvdXJjZXMgKi8KLSNkZWZpbmUgU1RfSEFMVAkJCQkweDEwICAvKiBEUzI0OTAgaXMgY3VycmVudGx5IGhhbHRlZCAqLwotI2RlZmluZSBTVF9JRExFCQkJCTB4MjAgIC8qIERTMjQ5MCBpcyBjdXJyZW50bHkgaWRsZSAqLwotI2RlZmluZSBTVF9FUE9GCQkJCTB4ODAKLQotI2RlZmluZSBTUEVFRF9OT1JNQUwJCQkweDAwCi0jZGVmaW5lIFNQRUVEX0ZMRVhJQkxFCQkJMHgwMQotI2RlZmluZSBTUEVFRF9PVkVSRFJJVkUJCQkweDAyCi0KLSNkZWZpbmUgTlVNX0VQCQkJCTQKLSNkZWZpbmUgRVBfQ09OVFJPTAkJCTAKLSNkZWZpbmUgRVBfU1RBVFVTCQkJMQotI2RlZmluZSBFUF9EQVRBX09VVAkJCTIKLSNkZWZpbmUgRVBfREFUQV9JTgkJCTMKLQotc3RydWN0IGRzX2RldmljZQotewotCXN0cnVjdCB1c2JfZGV2aWNlCSp1ZGV2OwotCXN0cnVjdCB1c2JfaW50ZXJmYWNlCSppbnRmOwotCi0JaW50CQkJZXBbTlVNX0VQXTsKLQotCWF0b21pY190CQlyZWZjbnQ7Ci19OwotCi1zdHJ1Y3QgZHNfc3RhdHVzCi17Ci0JdTgJCQllbmFibGU7Ci0JdTgJCQlzcGVlZDsKLQl1OAkJCXB1bGx1cF9kdXI7Ci0JdTgJCQlwcHVsc19kdXI7Ci0JdTgJCQlwdWxsZG93bl9zbGV3OwotCXU4CQkJd3JpdGUxX3RpbWU7Ci0JdTgJCQl3cml0ZTBfdGltZTsKLQl1OAkJCXJlc2VydmVkMDsKLQl1OAkJCXN0YXR1czsKLQl1OAkJCWNvbW1hbmQwOwotCXU4CQkJY29tbWFuZDE7Ci0JdTgJCQljb21tYW5kX2J1ZmZlcl9zdGF0dXM7Ci0JdTgJCQlkYXRhX291dF9idWZmZXJfc3RhdHVzOwotCXU4CQkJZGF0YV9pbl9idWZmZXJfc3RhdHVzOwotCXU4CQkJcmVzZXJ2ZWQxOwotCXU4CQkJcmVzZXJ2ZWQyOwotCi19OwotCi1pbnQgZHNfdG91Y2hfYml0KHN0cnVjdCBkc19kZXZpY2UgKiwgdTgsIHU4ICopOwotaW50IGRzX3JlYWRfYnl0ZShzdHJ1Y3QgZHNfZGV2aWNlICosIHU4ICopOwotaW50IGRzX3JlYWRfYml0KHN0cnVjdCBkc19kZXZpY2UgKiwgdTggKik7Ci1pbnQgZHNfd3JpdGVfYnl0ZShzdHJ1Y3QgZHNfZGV2aWNlICosIHU4KTsKLWludCBkc193cml0ZV9iaXQoc3RydWN0IGRzX2RldmljZSAqLCB1OCk7Ci1pbnQgZHNfcmVzZXQoc3RydWN0IGRzX2RldmljZSAqLCBzdHJ1Y3QgZHNfc3RhdHVzICopOwotc3RydWN0IGRzX2RldmljZSAqIGRzX2dldF9kZXZpY2Uodm9pZCk7Ci12b2lkIGRzX3B1dF9kZXZpY2Uoc3RydWN0IGRzX2RldmljZSAqKTsKLWludCBkc193cml0ZV9ibG9jayhzdHJ1Y3QgZHNfZGV2aWNlICosIHU4ICosIGludCk7Ci1pbnQgZHNfcmVhZF9ibG9jayhzdHJ1Y3QgZHNfZGV2aWNlICosIHU4ICosIGludCk7Ci0KLSNlbmRpZiAvKiBfX0RTQ09SRV9IICovCi0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvc2xhdmVzL0tjb25maWcgYi9kcml2ZXJzL3cxL3NsYXZlcy9LY29uZmlnCmluZGV4IGY5ZDRjOTEuLmQxOGQ2NDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvc2xhdmVzL0tjb25maWcKKysrIGIvZHJpdmVycy93MS9zbGF2ZXMvS2NvbmZpZwpAQCAtMjgsNyArMjgsNyBAQAogCiBjb25maWcgVzFfU0xBVkVfRFMyNDMzX0NSQwogCWJvb2wgIlByb3RlY3QgRFMyNDMzIGRhdGEgd2l0aCBhIENSQzE2IgotCWRlcGVuZHMgb24gVzFfRFMyNDMzCisJZGVwZW5kcyBvbiBXMV9TTEFWRV9EUzI0MzMKIAlzZWxlY3QgQ1JDMTYKIAloZWxwCiAJICBTYXkgWSBoZXJlIHRvIHByb3RlY3QgRFMyNDMzIGRhdGEgd2l0aCBhIENSQzE2LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS9zbGF2ZXMvdzFfZHMyNDMzLmMgYi9kcml2ZXJzL3cxL3NsYXZlcy93MV9kczI0MzMuYwppbmRleCBmYjExOGJlLi4yYWMyMzhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL3NsYXZlcy93MV9kczI0MzMuYworKysgYi9kcml2ZXJzL3cxL3NsYXZlcy93MV9kczI0MzMuYwpAQCAtMjIsNyArMjIsNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlICIuLi93MS5oIgotI2luY2x1ZGUgIi4uL3cxX2lvLmgiCiAjaW5jbHVkZSAiLi4vdzFfaW50LmgiCiAjaW5jbHVkZSAiLi4vdzFfZmFtaWx5LmgiCiAKQEAgLTEwNiwxMSArMTA1LDcgQEAKIAlpZiAoKGNvdW50ID0gdzFfZjIzX2ZpeF9jb3VudChvZmYsIGNvdW50LCBXMV9FRVBST01fU0laRSkpID09IDApCiAJCXJldHVybiAwOwogCi0JYXRvbWljX2luYygmc2wtPnJlZmNudCk7Ci0JaWYgKGRvd25faW50ZXJydXB0aWJsZSgmc2wtPm1hc3Rlci0+bXV0ZXgpKSB7Ci0JCWNvdW50ID0gMDsKLQkJZ290byBvdXRfZGVjOwotCX0KKwltdXRleF9sb2NrKCZzbC0+bWFzdGVyLT5tdXRleCk7CiAKICNpZmRlZiBDT05GSUdfVzFfRjIzX0NSQwogCkBAIC0xNDEsOSArMTM2LDcgQEAKICNlbmRpZgkvKiBDT05GSUdfVzFfRjIzX0NSQyAqLwogCiBvdXRfdXA6Ci0JdXAoJnNsLT5tYXN0ZXItPm11dGV4KTsKLW91dF9kZWM6Ci0JYXRvbWljX2RlYygmc2wtPnJlZmNudCk7CisJbXV0ZXhfdW5sb2NrKCZzbC0+bWFzdGVyLT5tdXRleCk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC0yMzIsMTEgKzIyNSw3IEBACiAJfQogI2VuZGlmCS8qIENPTkZJR19XMV9GMjNfQ1JDICovCiAKLQlhdG9taWNfaW5jKCZzbC0+cmVmY250KTsKLQlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlKCZzbC0+bWFzdGVyLT5tdXRleCkpIHsKLQkJY291bnQgPSAwOwotCQlnb3RvIG91dF9kZWM7Ci0JfQorCW11dGV4X2xvY2soJnNsLT5tYXN0ZXItPm11dGV4KTsKIAogCS8qIENhbiBvbmx5IHdyaXRlIGRhdGEgdG8gb25lIHBhZ2UgYXQgYSB0aW1lICovCiAJaWR4ID0gMDsKQEAgLTI1NCw5ICsyNDMsNyBAQAogCX0KIAogb3V0X3VwOgotCXVwKCZzbC0+bWFzdGVyLT5tdXRleCk7Ci1vdXRfZGVjOgotCWF0b21pY19kZWMoJnNsLT5yZWZjbnQpOworCW11dGV4X3VubG9jaygmc2wtPm1hc3Rlci0+bXV0ZXgpOwogCiAJcmV0dXJuIGNvdW50OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS9zbGF2ZXMvdzFfc21lbS5jIGIvZHJpdmVycy93MS9zbGF2ZXMvdzFfc21lbS5jCmluZGV4IGM2ZDNiZTUuLmNjOGMwMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvc2xhdmVzL3cxX3NtZW0uYworKysgYi9kcml2ZXJzL3cxL3NsYXZlcy93MV9zbWVtLmMKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVkZSAiLi4vdzEuaCIKLSNpbmNsdWRlICIuLi93MV9pby5oIgogI2luY2x1ZGUgIi4uL3cxX2ludC5oIgogI2luY2x1ZGUgIi4uL3cxX2ZhbWlseS5oIgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL3NsYXZlcy93MV90aGVybS5jIGIvZHJpdmVycy93MS9zbGF2ZXMvdzFfdGhlcm0uYwppbmRleCA1MzZkMTZkLi41MzcyY2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL3NsYXZlcy93MV90aGVybS5jCisrKyBiL2RyaXZlcnMvdzEvc2xhdmVzL3cxX3RoZXJtLmMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogCiAjaW5jbHVkZSAiLi4vdzEuaCIKLSNpbmNsdWRlICIuLi93MV9pby5oIgogI2luY2x1ZGUgIi4uL3cxX2ludC5oIgogI2luY2x1ZGUgIi4uL3cxX2ZhbWlseS5oIgogCkBAIC0xNjYsMTIgKzE2NSw3IEBACiAJdTggcm9tWzldLCBjcmMsIHZlcmRpY3Q7CiAJaW50IGksIG1heF90cnlpbmcgPSAxMDsKIAotCWF0b21pY19pbmMoJnNsLT5yZWZjbnQpOwotCXNtcF9tYl9fYWZ0ZXJfYXRvbWljX2luYygpOwotCWlmIChkb3duX2ludGVycnVwdGlibGUoJnNsLT5tYXN0ZXItPm11dGV4KSkgewotCQljb3VudCA9IDA7Ci0JCWdvdG8gb3V0X2RlYzsKLQl9CisJbXV0ZXhfbG9jaygmc2wtPm1hc3Rlci0+bXV0ZXgpOwogCiAJaWYgKG9mZiA+IFcxX1NMQVZFX0RBVEFfU0laRSkgewogCQljb3VudCA9IDA7CkBAIC0yMzQsMTAgKzIyOCw3IEBACiAKIAljb3VudCArPSBzcHJpbnRmKGJ1ZiArIGNvdW50LCAidD0lZFxuIiwgdzFfY29udmVydF90ZW1wKHJvbSwgc2wtPmZhbWlseS0+ZmlkKSk7CiBvdXQ6Ci0JdXAoJmRldi0+bXV0ZXgpOwotb3V0X2RlYzoKLQlzbXBfbWJfX2JlZm9yZV9hdG9taWNfaW5jKCk7Ci0JYXRvbWljX2RlYygmc2wtPnJlZmNudCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsKIAogCXJldHVybiBjb3VudDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvdzEuYyBiL2RyaXZlcnMvdzEvdzEuYwppbmRleCBhNjk4YjUxLi5kZTNlOTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL3cxLmMKKysrIGIvZHJpdmVycy93MS93MS5jCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgogCiAjaW5jbHVkZSAidzEuaCIKLSNpbmNsdWRlICJ3MV9pby5oIgogI2luY2x1ZGUgIncxX2xvZy5oIgogI2luY2x1ZGUgIncxX2ludC5oIgogI2luY2x1ZGUgIncxX2ZhbWlseS5oIgpAQCAtNTUsNyArNTQsNyBAQAogbW9kdWxlX3BhcmFtX25hbWVkKG1heF9zbGF2ZV9jb3VudCwgdzFfbWF4X3NsYXZlX2NvdW50LCBpbnQsIDApOwogbW9kdWxlX3BhcmFtX25hbWVkKHNsYXZlX3R0bCwgdzFfbWF4X3NsYXZlX3R0bCwgaW50LCAwKTsKIAotREVGSU5FX1NQSU5MT0NLKHcxX21sb2NrKTsKK0RFRklORV9NVVRFWCh3MV9tbG9jayk7CiBMSVNUX0hFQUQodzFfbWFzdGVycyk7CiAKIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKncxX2NvbnRyb2xfdGhyZWFkOwpAQCAtNzUsOCArNzQsNiBAQAogCXN0cnVjdCB3MV9tYXN0ZXIgKm1kID0gZGV2X3RvX3cxX21hc3RlcihkZXYpOwogCiAJZGV2X2RiZyhkZXYsICIlczogUmVsZWFzaW5nICVzLlxuIiwgX19mdW5jX18sIG1kLT5uYW1lKTsKLQotCWRldl9maW5pX25ldGxpbmsobWQpOwogCW1lbXNldChtZCwgMCwgc2l6ZW9mKHN0cnVjdCB3MV9tYXN0ZXIpICsgc2l6ZW9mKHN0cnVjdCB3MV9idXNfbWFzdGVyKSk7CiAJa2ZyZWUobWQpOwogfQpAQCAtODUsMTAgKzgyLDEwIEBACiB7CiAJc3RydWN0IHcxX3NsYXZlICpzbCA9IGRldl90b193MV9zbGF2ZShkZXYpOwogCi0JZGV2X2RiZyhkZXYsICIlczogUmVsZWFzaW5nICVzLlxuIiwgX19mdW5jX18sIHNsLT5uYW1lKTsKKwlwcmludGsoIiVzOiBSZWxlYXNpbmcgJXMuXG4iLCBfX2Z1bmNfXywgc2wtPm5hbWUpOwogCiAJd2hpbGUgKGF0b21pY19yZWFkKCZzbC0+cmVmY250KSkgewotCQlkZXZfZGJnKGRldiwgIldhaXRpbmcgZm9yICVzIHRvIGJlY29tZSBmcmVlOiByZWZjbnQ9JWQuXG4iLAorCQlwcmludGsoIldhaXRpbmcgZm9yICVzIHRvIGJlY29tZSBmcmVlOiByZWZjbnQ9JWQuXG4iLAogCQkJCXNsLT5uYW1lLCBhdG9taWNfcmVhZCgmc2wtPnJlZmNudCkpOwogCQlpZiAobXNsZWVwX2ludGVycnVwdGlibGUoMTAwMCkpCiAJCQlmbHVzaF9zaWduYWxzKGN1cnJlbnQpOwpAQCAtMTExLDcgKzEwOCw2IEBACiB7CiAJc3RydWN0IHcxX3NsYXZlICpzbCA9IGtvYmpfdG9fdzFfc2xhdmUoa29iaik7CiAKLQlhdG9taWNfaW5jKCZzbC0+cmVmY250KTsKIAlpZiAob2ZmID4gOCkgewogCQljb3VudCA9IDA7CiAJfSBlbHNlIHsKQEAgLTEyMCw3ICsxMTYsNiBAQAogCiAJCW1lbWNweShidWYsICh1OCAqKSZzbC0+cmVnX251bSwgY291bnQpOwogCX0KLQlhdG9taWNfZGVjKCZzbC0+cmVmY250KTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTEzOSw3ICsxMzQsNjMgQEAKIH07CiAKIC8qIERlZmF1bHQgZmFtaWx5ICovCi1zdGF0aWMgc3RydWN0IHcxX2ZhbWlseSB3MV9kZWZhdWx0X2ZhbWlseTsKKworc3RhdGljIHNzaXplX3QgdzFfZGVmYXVsdF93cml0ZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgY2hhciAqYnVmLCBsb2ZmX3Qgb2ZmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IHcxX3NsYXZlICpzbCA9IGtvYmpfdG9fdzFfc2xhdmUoa29iaik7CisKKwltdXRleF9sb2NrKCZzbC0+bWFzdGVyLT5tdXRleCk7CisJaWYgKHcxX3Jlc2V0X3NlbGVjdF9zbGF2ZShzbCkpIHsKKwkJY291bnQgPSAwOworCQlnb3RvIG91dF91cDsKKwl9CisKKwl3MV93cml0ZV9ibG9jayhzbC0+bWFzdGVyLCBidWYsIGNvdW50KTsKKworb3V0X3VwOgorCW11dGV4X3VubG9jaygmc2wtPm1hc3Rlci0+bXV0ZXgpOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXplX3QgdzFfZGVmYXVsdF9yZWFkKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjaGFyICpidWYsIGxvZmZfdCBvZmYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgdzFfc2xhdmUgKnNsID0ga29ial90b193MV9zbGF2ZShrb2JqKTsKKworCW11dGV4X2xvY2soJnNsLT5tYXN0ZXItPm11dGV4KTsKKwl3MV9yZWFkX2Jsb2NrKHNsLT5tYXN0ZXIsIGJ1ZiwgY291bnQpOworCW11dGV4X3VubG9jaygmc2wtPm1hc3Rlci0+bXV0ZXgpOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHN0cnVjdCBiaW5fYXR0cmlidXRlIHcxX2RlZmF1bHRfYXR0ciA9IHsKKyAgICAgIC5hdHRyID0geworICAgICAgICAgICAgICAubmFtZSA9ICJydyIsCisgICAgICAgICAgICAgIC5tb2RlID0gU19JUlVHTyB8IFNfSVdVU1IsCisgICAgICAgICAgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLAorICAgICAgfSwKKyAgICAgIC5zaXplID0gUEFHRV9TSVpFLAorICAgICAgLnJlYWQgPSB3MV9kZWZhdWx0X3JlYWQsCisgICAgICAud3JpdGUgPSB3MV9kZWZhdWx0X3dyaXRlLAorfTsKKworc3RhdGljIGludCB3MV9kZWZhdWx0X2FkZF9zbGF2ZShzdHJ1Y3QgdzFfc2xhdmUgKnNsKQoreworCXJldHVybiBzeXNmc19jcmVhdGVfYmluX2ZpbGUoJnNsLT5kZXYua29iaiwgJncxX2RlZmF1bHRfYXR0cik7Cit9CisKK3N0YXRpYyB2b2lkIHcxX2RlZmF1bHRfcmVtb3ZlX3NsYXZlKHN0cnVjdCB3MV9zbGF2ZSAqc2wpCit7CisJc3lzZnNfcmVtb3ZlX2Jpbl9maWxlKCZzbC0+ZGV2LmtvYmosICZ3MV9kZWZhdWx0X2F0dHIpOworfQorCitzdGF0aWMgc3RydWN0IHcxX2ZhbWlseV9vcHMgdzFfZGVmYXVsdF9mb3BzID0geworCS5hZGRfc2xhdmUJPSB3MV9kZWZhdWx0X2FkZF9zbGF2ZSwKKwkucmVtb3ZlX3NsYXZlCT0gdzFfZGVmYXVsdF9yZW1vdmVfc2xhdmUsCit9OworCitzdGF0aWMgc3RydWN0IHcxX2ZhbWlseSB3MV9kZWZhdWx0X2ZhbWlseSA9IHsKKwkuZm9wcyA9ICZ3MV9kZWZhdWx0X2ZvcHMsCit9OwogCiBzdGF0aWMgaW50IHcxX3VldmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKiplbnZwLCBpbnQgbnVtX2VudnAsIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmZlcl9zaXplKTsKIApAQCAtMTgzLDEyICsyMzQsOSBAQAogCXN0cnVjdCB3MV9tYXN0ZXIgKm1kID0gZGV2X3RvX3cxX21hc3RlcihkZXYpOwogCXNzaXplX3QgY291bnQ7CiAKLQlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlICgmbWQtPm11dGV4KSkKLQkJcmV0dXJuIC1FQlVTWTsKLQorCW11dGV4X2xvY2soJm1kLT5tdXRleCk7CiAJY291bnQgPSBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBtZC0+bmFtZSk7Ci0KLQl1cCgmbWQtPm11dGV4KTsKKwltdXRleF91bmxvY2soJm1kLT5tdXRleCk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC0xOTksMTIgKzI0Nyw5IEBACiB7CiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBkZXZfdG9fdzFfbWFzdGVyKGRldik7CiAKLQlpZiAoZG93bl9pbnRlcnJ1cHRpYmxlICgmbWQtPm11dGV4KSkKLQkJcmV0dXJuIC1FQlVTWTsKLQorCW11dGV4X2xvY2soJm1kLT5tdXRleCk7CiAJbWQtPnNlYXJjaF9jb3VudCA9IHNpbXBsZV9zdHJ0b2woYnVmLCBOVUxMLCAwKTsKLQotCXVwKCZtZC0+bXV0ZXgpOworCW11dGV4X3VubG9jaygmbWQtPm11dGV4KTsKIAogCXJldHVybiBjb3VudDsKIH0KQEAgLTIxNiwxMiArMjYxLDkgQEAKIAlzdHJ1Y3QgdzFfbWFzdGVyICptZCA9IGRldl90b193MV9tYXN0ZXIoZGV2KTsKIAlzc2l6ZV90IGNvdW50OwogCi0JaWYgKGRvd25faW50ZXJydXB0aWJsZSAoJm1kLT5tdXRleCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCWNvdW50ID0gc3ByaW50ZihidWYsICIlZFxuIiwgbWQtPnNlYXJjaF9jb3VudCk7Ci0KLQl1cCgmbWQtPm11dGV4KTsKKwltdXRleF91bmxvY2soJm1kLT5tdXRleCk7CiAKIAlyZXR1cm4gY291bnQ7CiB9CkBAIC0yMzEsMTIgKzI3Myw5IEBACiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBkZXZfdG9fdzFfbWFzdGVyKGRldik7CiAJc3NpemVfdCBjb3VudDsKIAotCWlmIChkb3duX2ludGVycnVwdGlibGUoJm1kLT5tdXRleCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCWNvdW50ID0gc3ByaW50ZihidWYsICIweCVwXG4iLCBtZC0+YnVzX21hc3Rlcik7Ci0KLQl1cCgmbWQtPm11dGV4KTsKKwltdXRleF91bmxvY2soJm1kLT5tdXRleCk7CiAJcmV0dXJuIGNvdW50OwogfQogCkBAIC0yNTIsMTIgKzI5MSw5IEBACiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBkZXZfdG9fdzFfbWFzdGVyKGRldik7CiAJc3NpemVfdCBjb3VudDsKIAotCWlmIChkb3duX2ludGVycnVwdGlibGUoJm1kLT5tdXRleCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCWNvdW50ID0gc3ByaW50ZihidWYsICIlZFxuIiwgbWQtPm1heF9zbGF2ZV9jb3VudCk7Ci0KLQl1cCgmbWQtPm11dGV4KTsKKwltdXRleF91bmxvY2soJm1kLT5tdXRleCk7CiAJcmV0dXJuIGNvdW50OwogfQogCkBAIC0yNjYsMTIgKzMwMiw5IEBACiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBkZXZfdG9fdzFfbWFzdGVyKGRldik7CiAJc3NpemVfdCBjb3VudDsKIAotCWlmIChkb3duX2ludGVycnVwdGlibGUoJm1kLT5tdXRleCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCWNvdW50ID0gc3ByaW50ZihidWYsICIlbHVcbiIsIG1kLT5hdHRlbXB0cyk7Ci0KLQl1cCgmbWQtPm11dGV4KTsKKwltdXRleF91bmxvY2soJm1kLT5tdXRleCk7CiAJcmV0dXJuIGNvdW50OwogfQogCkBAIC0yODAsMTIgKzMxMyw5IEBACiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBkZXZfdG9fdzFfbWFzdGVyKGRldik7CiAJc3NpemVfdCBjb3VudDsKIAotCWlmIChkb3duX2ludGVycnVwdGlibGUoJm1kLT5tdXRleCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCWNvdW50ID0gc3ByaW50ZihidWYsICIlZFxuIiwgbWQtPnNsYXZlX2NvdW50KTsKLQotCXVwKCZtZC0+bXV0ZXgpOworCW11dGV4X3VubG9jaygmbWQtPm11dGV4KTsKIAlyZXR1cm4gY291bnQ7CiB9CiAKQEAgLTI5NCw4ICszMjQsNyBAQAogCXN0cnVjdCB3MV9tYXN0ZXIgKm1kID0gZGV2X3RvX3cxX21hc3RlcihkZXYpOwogCWludCBjID0gUEFHRV9TSVpFOwogCi0JaWYgKGRvd25faW50ZXJydXB0aWJsZSgmbWQtPm11dGV4KSkKLQkJcmV0dXJuIC1FQlVTWTsKKwltdXRleF9sb2NrKCZtZC0+bXV0ZXgpOwogCiAJaWYgKG1kLT5zbGF2ZV9jb3VudCA9PSAwKQogCQljIC09IHNucHJpbnRmKGJ1ZiArIFBBR0VfU0laRSAtIGMsIGMsICJub3QgZm91bmQuXG4iKTsKQEAgLTMxMCw3ICszMzksNyBAQAogCQl9CiAJfQogCi0JdXAoJm1kLT5tdXRleCk7CisJbXV0ZXhfdW5sb2NrKCZtZC0+bXV0ZXgpOwogCiAJcmV0dXJuIFBBR0VfU0laRSAtIGM7CiB9CkBAIC0zNjIsNyArMzkxLDggQEAKIH0KIAogI2lmZGVmIENPTkZJR19IT1RQTFVHCi1zdGF0aWMgaW50IHcxX3VldmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKiplbnZwLCBpbnQgbnVtX2VudnAsIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmZlcl9zaXplKQorc3RhdGljIGludCB3MV91ZXZlbnQoc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICoqZW52cCwgaW50IG51bV9lbnZwLAorCQkJY2hhciAqYnVmZmVyLCBpbnQgYnVmZmVyX3NpemUpCiB7CiAJc3RydWN0IHcxX21hc3RlciAqbWQgPSBOVUxMOwogCXN0cnVjdCB3MV9zbGF2ZSAqc2wgPSBOVUxMOwpAQCAtMzgyLDcgKzQxMiw4IEBACiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWRldl9kYmcoZGV2LCAiSG90cGx1ZyBldmVudCBmb3IgJXMgJXMsIGJ1c19pZD0lcy5cbiIsIGV2ZW50X293bmVyLCBuYW1lLCBkZXYtPmJ1c19pZCk7CisJZGV2X2RiZyhkZXYsICJIb3RwbHVnIGV2ZW50IGZvciAlcyAlcywgYnVzX2lkPSVzLlxuIiwKKwkJCWV2ZW50X293bmVyLCBuYW1lLCBkZXYtPmJ1c19pZCk7CiAKIAlpZiAoZGV2LT5kcml2ZXIgIT0gJncxX3NsYXZlX2RyaXZlciB8fCAhc2wpCiAJCXJldHVybiAwOwpAQCAtNDAxLDcgKzQzMiw4IEBACiAJcmV0dXJuIDA7CiB9OwogI2Vsc2UKLXN0YXRpYyBpbnQgdzFfdWV2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgY2hhciAqKmVudnAsIGludCBudW1fZW52cCwgY2hhciAqYnVmZmVyLCBpbnQgYnVmZmVyX3NpemUpCitzdGF0aWMgaW50IHcxX3VldmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKiplbnZwLCBpbnQgbnVtX2VudnAsCisJCQljaGFyICpidWZmZXIsIGludCBidWZmZXJfc2l6ZSkKIHsKIAlyZXR1cm4gMDsKIH0KQEAgLTQyNSw3ICs0NTcsOCBAQAogCQkgKHVuc2lnbmVkIGludCkgc2wtPnJlZ19udW0uZmFtaWx5LAogCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgc2wtPnJlZ19udW0uaWQpOwogCi0JZGV2X2RiZygmc2wtPmRldiwgIiVzOiByZWdpc3RlcmluZyAlcyBhcyAlcC5cbiIsIF9fZnVuY19fLCAmc2wtPmRldi5idXNfaWRbMF0pOworCWRldl9kYmcoJnNsLT5kZXYsICIlczogcmVnaXN0ZXJpbmcgJXMgYXMgJXAuXG4iLCBfX2Z1bmNfXywKKwkJJnNsLT5kZXYuYnVzX2lkWzBdKTsKIAogCWVyciA9IGRldmljZV9yZWdpc3Rlcigmc2wtPmRldik7CiAJaWYgKGVyciA8IDApIHsKQEAgLTQ5Niw2ICs1MjksNyBAQAogCXNsLT5tYXN0ZXIgPSBkZXY7CiAJc2V0X2JpdChXMV9TTEFWRV9BQ1RJVkUsIChsb25nICopJnNsLT5mbGFncyk7CiAKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwogCW1lbWNweSgmc2wtPnJlZ19udW0sIHJuLCBzaXplb2Yoc2wtPnJlZ19udW0pKTsKIAlhdG9taWNfc2V0KCZzbC0+cmVmY250LCAwKTsKIAlpbml0X2NvbXBsZXRpb24oJnNsLT5yZWxlYXNlZCk7CkBAIC01MjYsNyArNTYwLDcgQEAKIAlzbC0+dHRsID0gZGV2LT5zbGF2ZV90dGw7CiAJZGV2LT5zbGF2ZV9jb3VudCsrOwogCi0JbWVtY3B5KCZtc2cuaWQuaWQsIHJuLCBzaXplb2YobXNnLmlkLmlkKSk7CisJbWVtY3B5KG1zZy5pZC5pZCwgcm4sIHNpemVvZihtc2cuaWQpKTsKIAltc2cudHlwZSA9IFcxX1NMQVZFX0FERDsKIAl3MV9uZXRsaW5rX3NlbmQoZGV2LCAmbXNnKTsKIApAQCAtNTQ0LDcgKzU3OCw4IEBACiAJaWYgKHNsLT5mYW1pbHktPmZvcHMgJiYgc2wtPmZhbWlseS0+Zm9wcy0+cmVtb3ZlX3NsYXZlKQogCQlzbC0+ZmFtaWx5LT5mb3BzLT5yZW1vdmVfc2xhdmUoc2wpOwogCi0JbWVtY3B5KCZtc2cuaWQuaWQsICZzbC0+cmVnX251bSwgc2l6ZW9mKG1zZy5pZC5pZCkpOworCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJbWVtY3B5KG1zZy5pZC5pZCwgJnNsLT5yZWdfbnVtLCBzaXplb2YobXNnLmlkKSk7CiAJbXNnLnR5cGUgPSBXMV9TTEFWRV9SRU1PVkU7CiAJdzFfbmV0bGlua19zZW5kKHNsLT5tYXN0ZXIsICZtc2cpOwogCkBAIC01NjEsNyArNTk2LDcgQEAKIAlzdHJ1Y3QgdzFfbWFzdGVyICpkZXY7CiAJaW50IGZvdW5kID0gMDsKIAotCXNwaW5fbG9ja19iaCgmdzFfbWxvY2spOworCW11dGV4X2xvY2soJncxX21sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJncxX21hc3RlcnMsIHcxX21hc3Rlcl9lbnRyeSkgewogCQlpZiAoZGV2LT5idXNfbWFzdGVyLT5kYXRhID09IGRhdGEpIHsKIAkJCWZvdW5kID0gMTsKQEAgLTU2OSwyMiArNjA0LDY5IEBACiAJCQlicmVhazsKIAkJfQogCX0KLQlzcGluX3VubG9ja19iaCgmdzFfbWxvY2spOworCW11dGV4X3VubG9jaygmdzFfbWxvY2spOwogCiAJcmV0dXJuIChmb3VuZCk/ZGV2Ok5VTEw7CiB9CiAKK3N0cnVjdCB3MV9tYXN0ZXIgKncxX3NlYXJjaF9tYXN0ZXJfaWQodTMyIGlkKQoreworCXN0cnVjdCB3MV9tYXN0ZXIgKmRldjsKKwlpbnQgZm91bmQgPSAwOworCisJbXV0ZXhfbG9jaygmdzFfbWxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmdzFfbWFzdGVycywgdzFfbWFzdGVyX2VudHJ5KSB7CisJCWlmIChkZXYtPmlkID09IGlkKSB7CisJCQlmb3VuZCA9IDE7CisJCQlhdG9taWNfaW5jKCZkZXYtPnJlZmNudCk7CisJCQlicmVhazsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJncxX21sb2NrKTsKKworCXJldHVybiAoZm91bmQpP2RldjpOVUxMOworfQorCitzdHJ1Y3QgdzFfc2xhdmUgKncxX3NlYXJjaF9zbGF2ZShzdHJ1Y3QgdzFfcmVnX251bSAqaWQpCit7CisJc3RydWN0IHcxX21hc3RlciAqZGV2OworCXN0cnVjdCB3MV9zbGF2ZSAqc2wgPSBOVUxMOworCWludCBmb3VuZCA9IDA7CisKKwltdXRleF9sb2NrKCZ3MV9tbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZ3MV9tYXN0ZXJzLCB3MV9tYXN0ZXJfZW50cnkpIHsKKwkJbXV0ZXhfbG9jaygmZGV2LT5tdXRleCk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2wsICZkZXYtPnNsaXN0LCB3MV9zbGF2ZV9lbnRyeSkgeworCQkJaWYgKHNsLT5yZWdfbnVtLmZhbWlseSA9PSBpZC0+ZmFtaWx5ICYmCisJCQkJCXNsLT5yZWdfbnVtLmlkID09IGlkLT5pZCAmJgorCQkJCQlzbC0+cmVnX251bS5jcmMgPT0gaWQtPmNyYykgeworCQkJCWZvdW5kID0gMTsKKwkJCQlhdG9taWNfaW5jKCZkZXYtPnJlZmNudCk7CisJCQkJYXRvbWljX2luYygmc2wtPnJlZmNudCk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsKKworCQlpZiAoZm91bmQpCisJCQlicmVhazsKKwl9CisJbXV0ZXhfdW5sb2NrKCZ3MV9tbG9jayk7CisKKwlyZXR1cm4gKGZvdW5kKT9zbDpOVUxMOworfQorCiB2b2lkIHcxX3JlY29ubmVjdF9zbGF2ZXMoc3RydWN0IHcxX2ZhbWlseSAqZikKIHsKIAlzdHJ1Y3QgdzFfbWFzdGVyICpkZXY7CiAKLQlzcGluX2xvY2tfYmgoJncxX21sb2NrKTsKKwltdXRleF9sb2NrKCZ3MV9tbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZ3MV9tYXN0ZXJzLCB3MV9tYXN0ZXJfZW50cnkpIHsKIAkJZGV2X2RiZygmZGV2LT5kZXYsICJSZWNvbm5lY3Rpbmcgc2xhdmVzIGluICVzIGludG8gbmV3IGZhbWlseSAlMDJ4LlxuIiwKIAkJCQlkZXYtPm5hbWUsIGYtPmZpZCk7CiAJCXNldF9iaXQoVzFfTUFTVEVSX05FRURfUkVDT05ORUNULCAmZGV2LT5mbGFncyk7CiAJfQotCXNwaW5fdW5sb2NrX2JoKCZ3MV9tbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZ3MV9tbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIHcxX3NsYXZlX2ZvdW5kKHZvaWQgKmRhdGEsIHU2NCBybikKQEAgLTY0Niw3ICs3MjgsNyBAQAogICogQGRldiAgICAgICAgVGhlIG1hc3RlciBkZXZpY2UgdG8gc2VhcmNoCiAgKiBAY2IgICAgICAgICBGdW5jdGlvbiB0byBjYWxsIHdoZW4gYSBkZXZpY2UgaXMgZm91bmQKICAqLwotdm9pZCB3MV9zZWFyY2goc3RydWN0IHcxX21hc3RlciAqZGV2LCB3MV9zbGF2ZV9mb3VuZF9jYWxsYmFjayBjYikKK3ZvaWQgdzFfc2VhcmNoKHN0cnVjdCB3MV9tYXN0ZXIgKmRldiwgdTggc2VhcmNoX3R5cGUsIHcxX3NsYXZlX2ZvdW5kX2NhbGxiYWNrIGNiKQogewogCXU2NCBsYXN0X3JuLCBybiwgdG1wNjQ7CiAJaW50IGksIHNsYXZlX2NvdW50ID0gMDsKQEAgLTY3Nyw3ICs3NTksNyBAQAogCQl9CiAKIAkJLyogU3RhcnQgdGhlIHNlYXJjaCAqLwotCQl3MV93cml0ZV84KGRldiwgVzFfU0VBUkNIKTsKKwkJdzFfd3JpdGVfOChkZXYsIHNlYXJjaF90eXBlKTsKIAkJZm9yIChpID0gMDsgaSA8IDY0OyArK2kpIHsKIAkJCS8qIERldGVybWluZSB0aGUgZGlyZWN0aW9uL3NlYXJjaCBiaXQgKi8KIAkJCWlmIChpID09IGRlc2NfYml0KQpAQCAtNzM5LDIzICs4MjEsMjMgQEAKIAkJCWlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkgfHwgdGVzdF9iaXQoVzFfTUFTVEVSX05FRURfRVhJVCwgJmRldi0+ZmxhZ3MpKSB7CiAJCQkJc2V0X2JpdChXMV9NQVNURVJfTkVFRF9FWElULCAmZGV2LT5mbGFncyk7CiAKLQkJCQlzcGluX2xvY2soJncxX21sb2NrKTsKKwkJCQltdXRleF9sb2NrKCZ3MV9tbG9jayk7CiAJCQkJbGlzdF9kZWwoJmRldi0+dzFfbWFzdGVyX2VudHJ5KTsKLQkJCQlzcGluX3VubG9jaygmdzFfbWxvY2spOworCQkJCW11dGV4X3VubG9jaygmdzFfbWxvY2spOwogCi0JCQkJZG93bigmZGV2LT5tdXRleCk7CisJCQkJbXV0ZXhfbG9jaygmZGV2LT5tdXRleCk7CiAJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNsLCBzbG4sICZkZXYtPnNsaXN0LCB3MV9zbGF2ZV9lbnRyeSkgewogCQkJCQl3MV9zbGF2ZV9kZXRhY2goc2wpOwogCQkJCX0KIAkJCQl3MV9kZXN0cm95X21hc3Rlcl9hdHRyaWJ1dGVzKGRldik7Ci0JCQkJdXAoJmRldi0+bXV0ZXgpOworCQkJCW11dGV4X3VubG9jaygmZGV2LT5tdXRleCk7CiAJCQkJYXRvbWljX2RlYygmZGV2LT5yZWZjbnQpOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCiAJCQlpZiAodGVzdF9iaXQoVzFfTUFTVEVSX05FRURfUkVDT05ORUNULCAmZGV2LT5mbGFncykpIHsKIAkJCQlkZXZfZGJnKCZkZXYtPmRldiwgIlJlY29ubmVjdGluZyBzbGF2ZXMgaW4gZGV2aWNlICVzLlxuIiwgZGV2LT5uYW1lKTsKLQkJCQlkb3duKCZkZXYtPm11dGV4KTsKKwkJCQltdXRleF9sb2NrKCZkZXYtPm11dGV4KTsKIAkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2wsIHNsbiwgJmRldi0+c2xpc3QsIHcxX3NsYXZlX2VudHJ5KSB7CiAJCQkJCWlmIChzbC0+ZmFtaWx5LT5maWQgPT0gVzFfRkFNSUxZX0RFRkFVTFQpIHsKIAkJCQkJCXN0cnVjdCB3MV9yZWdfbnVtIHJuOwpAQCAtNzY4LDcgKzg1MCw3IEBACiAJCQkJfQogCQkJCWRldl9kYmcoJmRldi0+ZGV2LCAiUmVjb25uZWN0aW5nIHNsYXZlcyBpbiBkZXZpY2UgJXMgaGFzIGJlZW4gZmluaXNoZWQuXG4iLCBkZXYtPm5hbWUpOwogCQkJCWNsZWFyX2JpdChXMV9NQVNURVJfTkVFRF9SRUNPTk5FQ1QsICZkZXYtPmZsYWdzKTsKLQkJCQl1cCgmZGV2LT5tdXRleCk7CisJCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsKIAkJCX0KIAkJfQogCX0KQEAgLTc3NiwxMCArODU4LDMxIEBACiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgdzFfc2VhcmNoX3Byb2Nlc3Moc3RydWN0IHcxX21hc3RlciAqZGV2LCB1OCBzZWFyY2hfdHlwZSkKK3sKKwlzdHJ1Y3QgdzFfc2xhdmUgKnNsLCAqc2xuOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzbCwgJmRldi0+c2xpc3QsIHcxX3NsYXZlX2VudHJ5KQorCQljbGVhcl9iaXQoVzFfU0xBVkVfQUNUSVZFLCAobG9uZyAqKSZzbC0+ZmxhZ3MpOworCisJdzFfc2VhcmNoX2RldmljZXMoZGV2LCBzZWFyY2hfdHlwZSwgdzFfc2xhdmVfZm91bmQpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNsLCBzbG4sICZkZXYtPnNsaXN0LCB3MV9zbGF2ZV9lbnRyeSkgeworCQlpZiAoIXRlc3RfYml0KFcxX1NMQVZFX0FDVElWRSwgKHVuc2lnbmVkIGxvbmcgKikmc2wtPmZsYWdzKSAmJiAhLS1zbC0+dHRsKSB7CisJCQl3MV9zbGF2ZV9kZXRhY2goc2wpOworCisJCQlkZXYtPnNsYXZlX2NvdW50LS07CisJCX0gZWxzZSBpZiAodGVzdF9iaXQoVzFfU0xBVkVfQUNUSVZFLCAodW5zaWduZWQgbG9uZyAqKSZzbC0+ZmxhZ3MpKQorCQkJc2wtPnR0bCA9IGRldi0+c2xhdmVfdHRsOworCX0KKworCWlmIChkZXYtPnNlYXJjaF9jb3VudCA+IDApCisJCWRldi0+c2VhcmNoX2NvdW50LS07Cit9CisKIGludCB3MV9wcm9jZXNzKHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHcxX21hc3RlciAqZGV2ID0gKHN0cnVjdCB3MV9tYXN0ZXIgKikgZGF0YTsKLQlzdHJ1Y3QgdzFfc2xhdmUgKnNsLCAqc2xuOwogCiAJd2hpbGUgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkgJiYgIXRlc3RfYml0KFcxX01BU1RFUl9ORUVEX0VYSVQsICZkZXYtPmZsYWdzKSkgewogCQl0cnlfdG9fZnJlZXplKCk7CkBAIC03OTQsMjcgKzg5Nyw5IEBACiAJCWlmIChkZXYtPnNlYXJjaF9jb3VudCA9PSAwKQogCQkJY29udGludWU7CiAKLQkJaWYgKGRvd25faW50ZXJydXB0aWJsZSgmZGV2LT5tdXRleCkpCi0JCQljb250aW51ZTsKLQotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNsLCAmZGV2LT5zbGlzdCwgdzFfc2xhdmVfZW50cnkpCi0JCQljbGVhcl9iaXQoVzFfU0xBVkVfQUNUSVZFLCAobG9uZyAqKSZzbC0+ZmxhZ3MpOwotCi0JCXcxX3NlYXJjaF9kZXZpY2VzKGRldiwgdzFfc2xhdmVfZm91bmQpOwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzbCwgc2xuLCAmZGV2LT5zbGlzdCwgdzFfc2xhdmVfZW50cnkpIHsKLQkJCWlmICghdGVzdF9iaXQoVzFfU0xBVkVfQUNUSVZFLCAodW5zaWduZWQgbG9uZyAqKSZzbC0+ZmxhZ3MpICYmICEtLXNsLT50dGwpIHsKLQkJCQl3MV9zbGF2ZV9kZXRhY2goc2wpOwotCi0JCQkJZGV2LT5zbGF2ZV9jb3VudC0tOwotCQkJfSBlbHNlIGlmICh0ZXN0X2JpdChXMV9TTEFWRV9BQ1RJVkUsICh1bnNpZ25lZCBsb25nICopJnNsLT5mbGFncykpCi0JCQkJc2wtPnR0bCA9IGRldi0+c2xhdmVfdHRsOwotCQl9Ci0KLQkJaWYgKGRldi0+c2VhcmNoX2NvdW50ID4gMCkKLQkJCWRldi0+c2VhcmNoX2NvdW50LS07Ci0KLQkJdXAoJmRldi0+bXV0ZXgpOworCQltdXRleF9sb2NrKCZkZXYtPm11dGV4KTsKKwkJdzFfc2VhcmNoX3Byb2Nlc3MoZGV2LCBXMV9TRUFSQ0gpOworCQltdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOwogCX0KIAogCWF0b21pY19kZWMoJmRldi0+cmVmY250KTsKQEAgLTgyOCw2ICs5MTMsOCBAQAogCiAJcHJpbnRrKEtFUk5fSU5GTyAiRHJpdmVyIGZvciAxLXdpcmUgRGFsbGFzIG5ldHdvcmsgcHJvdG9jb2wuXG4iKTsKIAorCXcxX2luaXRfbmV0bGluaygpOworCiAJcmV0dmFsID0gYnVzX3JlZ2lzdGVyKCZ3MV9idXNfdHlwZSk7CiAJaWYgKHJldHZhbCkgewogCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byByZWdpc3RlciBidXMuIGVycj0lZC5cbiIsIHJldHZhbCk7CkBAIC04ODAsNiArOTY3LDggQEAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJncxX21hc3RlcnMsIHcxX21hc3Rlcl9lbnRyeSkKIAkJX193MV9yZW1vdmVfbWFzdGVyX2RldmljZShkZXYpOwogCisJdzFfZmluaV9uZXRsaW5rKCk7CisKIAlrdGhyZWFkX3N0b3AodzFfY29udHJvbF90aHJlYWQpOwogCiAJZHJpdmVyX3VucmVnaXN0ZXIoJncxX3NsYXZlX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL3cxLmggYi9kcml2ZXJzL3cxL3cxLmgKaW5kZXggNTY5ODA1MC4uZjFkZjUzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS93MS5oCisrKyBiL2RyaXZlcnMvdzEvdzEuaApAQCAtNDEsMTAgKzQxLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KLQotI2luY2x1ZGUgPG5ldC9zb2NrLmg+Ci0KLSNpbmNsdWRlIDxhc20vc2VtYXBob3JlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KIAogI2luY2x1ZGUgIncxX2ZhbWlseS5oIgogCkBAIC01Miw3ICs0OSw3IEBACiAjZGVmaW5lIFcxX1NMQVZFX0RBVEFfU0laRQkxMjgKIAogI2RlZmluZSBXMV9TRUFSQ0gJCTB4RjAKLSNkZWZpbmUgVzFfQ09ORElUSU9OQUxfU0VBUkNICTB4RUMKKyNkZWZpbmUgVzFfQUxBUk1fU0VBUkNICQkweEVDCiAjZGVmaW5lIFcxX0NPTlZFUlRfVEVNUAkJMHg0NAogI2RlZmluZSBXMV9TS0lQX1JPTQkJMHhDQwogI2RlZmluZSBXMV9SRUFEX1NDUkFUQ0hQQUQJMHhCRQpAQCAtNjAsNyArNTcsNyBAQAogI2RlZmluZSBXMV9SRUFEX1BTVVBQTFkJCTB4QjQKICNkZWZpbmUgVzFfTUFUQ0hfUk9NCQkweDU1CiAKLSNkZWZpbmUgVzFfU0xBVkVfQUNUSVZFCQkoMTw8MCkKKyNkZWZpbmUgVzFfU0xBVkVfQUNUSVZFCQkwCiAKIHN0cnVjdCB3MV9zbGF2ZQogewpAQCAtMTQ1LDggKzE0Miw4IEBACiAJICovCiAJdTgJCSgqcmVzZXRfYnVzKSh2b2lkICopOwogCi0JLyoqIFJlYWxseSBuaWNlIGhhcmR3YXJlIGNhbiBoYW5kbGVzIHRoZSBST00gc2VhcmNoZXMgKi8KLQl2b2lkCQkoKnNlYXJjaCkodm9pZCAqLCB3MV9zbGF2ZV9mb3VuZF9jYWxsYmFjayk7CisJLyoqIFJlYWxseSBuaWNlIGhhcmR3YXJlIGNhbiBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgUk9NIHNlYXJjaCAqLworCXZvaWQJCSgqc2VhcmNoKSh2b2lkICosIHU4LCB3MV9zbGF2ZV9mb3VuZF9jYWxsYmFjayk7CiB9OwogCiAjZGVmaW5lIFcxX01BU1RFUl9ORUVEX0VYSVQJCTAKQEAgLTE3MywxOSArMTcwLDMwIEBACiAJbG9uZwkJCWZsYWdzOwogCiAJc3RydWN0IHRhc2tfc3RydWN0CSp0aHJlYWQ7Ci0Jc3RydWN0IHNlbWFwaG9yZQltdXRleDsKKwlzdHJ1Y3QgbXV0ZXgJCW11dGV4OwogCiAJc3RydWN0IGRldmljZV9kcml2ZXIJKmRyaXZlcjsKIAlzdHJ1Y3QgZGV2aWNlCQlkZXY7CiAKIAlzdHJ1Y3QgdzFfYnVzX21hc3RlcgkqYnVzX21hc3RlcjsKIAotCXUzMgkJCXNlcSwgZ3JvdXBzOwotCXN0cnVjdCBzb2NrCQkqbmxzOworCXUzMgkJCXNlcTsKIH07CiAKIGludCB3MV9jcmVhdGVfbWFzdGVyX2F0dHJpYnV0ZXMoc3RydWN0IHcxX21hc3RlciAqKTsKLXZvaWQgdzFfc2VhcmNoKHN0cnVjdCB3MV9tYXN0ZXIgKmRldiwgdzFfc2xhdmVfZm91bmRfY2FsbGJhY2sgY2IpOwordm9pZCB3MV9zZWFyY2goc3RydWN0IHcxX21hc3RlciAqZGV2LCB1OCBzZWFyY2hfdHlwZSwgdzFfc2xhdmVfZm91bmRfY2FsbGJhY2sgY2IpOwordm9pZCB3MV9zZWFyY2hfZGV2aWNlcyhzdHJ1Y3QgdzFfbWFzdGVyICpkZXYsIHU4IHNlYXJjaF90eXBlLCB3MV9zbGF2ZV9mb3VuZF9jYWxsYmFjayBjYik7CitzdHJ1Y3QgdzFfc2xhdmUgKncxX3NlYXJjaF9zbGF2ZShzdHJ1Y3QgdzFfcmVnX251bSAqaWQpOwordm9pZCB3MV9zZWFyY2hfcHJvY2VzcyhzdHJ1Y3QgdzFfbWFzdGVyICpkZXYsIHU4IHNlYXJjaF90eXBlKTsKK3N0cnVjdCB3MV9tYXN0ZXIgKncxX3NlYXJjaF9tYXN0ZXJfaWQodTMyIGlkKTsKKwordTggdzFfdHJpcGxldChzdHJ1Y3QgdzFfbWFzdGVyICpkZXYsIGludCBiZGlyKTsKK3ZvaWQgdzFfd3JpdGVfOChzdHJ1Y3QgdzFfbWFzdGVyICosIHU4KTsKK2ludCB3MV9yZXNldF9idXMoc3RydWN0IHcxX21hc3RlciAqKTsKK3U4IHcxX2NhbGNfY3JjOCh1OCAqLCBpbnQpOwordm9pZCB3MV93cml0ZV9ibG9jayhzdHJ1Y3QgdzFfbWFzdGVyICosIGNvbnN0IHU4ICosIGludCk7Cit1OCB3MV9yZWFkX2Jsb2NrKHN0cnVjdCB3MV9tYXN0ZXIgKiwgdTggKiwgaW50KTsKK2ludCB3MV9yZXNldF9zZWxlY3Rfc2xhdmUoc3RydWN0IHcxX3NsYXZlICpzbCk7CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHcxX3NsYXZlKiBkZXZfdG9fdzFfc2xhdmUoc3RydWN0IGRldmljZSAqZGV2KQogewpAQCAtMjAyLDE1ICsyMTAsMTQgQEAKIAlyZXR1cm4gY29udGFpbmVyX29mKGRldiwgc3RydWN0IHcxX21hc3RlciwgZGV2KTsKIH0KIAotZXh0ZXJuIGludCB3MV9tYXhfc2xhdmVfY291bnQ7Ci1leHRlcm4gaW50IHcxX21heF9zbGF2ZV90dGw7Ci1leHRlcm4gc3BpbmxvY2tfdCB3MV9tbG9jazsKLWV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHcxX21hc3RlcnM7CiBleHRlcm4gc3RydWN0IGRldmljZV9kcml2ZXIgdzFfbWFzdGVyX2RyaXZlcjsKIGV4dGVybiBzdHJ1Y3QgZGV2aWNlIHcxX21hc3Rlcl9kZXZpY2U7CitleHRlcm4gaW50IHcxX21heF9zbGF2ZV9jb3VudDsKK2V4dGVybiBpbnQgdzFfbWF4X3NsYXZlX3R0bDsKK2V4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHcxX21hc3RlcnM7CitleHRlcm4gc3RydWN0IG11dGV4IHcxX21sb2NrOwogCi1pbnQgdzFfcHJvY2Vzcyh2b2lkICpkYXRhKTsKLXZvaWQgdzFfcmVjb25uZWN0X3NsYXZlcyhzdHJ1Y3QgdzFfZmFtaWx5ICpmKTsKK2V4dGVybiBpbnQgdzFfcHJvY2Vzcyh2b2lkICopOwogCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL3cxX2ZhbWlseS5jIGIvZHJpdmVycy93MS93MV9mYW1pbHkuYwppbmRleCAwZTMyYzExNC4uYTNjOTViZCAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS93MV9mYW1pbHkuYworKysgYi9kcml2ZXJzL3cxL3cxX2ZhbWlseS5jCkBAIC0xMDcsNiArMTA3LDEyIEBACiAJcmV0dXJuIChyZXQpID8gZiA6IE5VTEw7CiB9CiAKK3N0YXRpYyB2b2lkIF9fdzFfZmFtaWx5X3B1dChzdHJ1Y3QgdzFfZmFtaWx5ICpmKQoreworCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZmLT5yZWZjbnQpKQorCQlmLT5uZWVkX2V4aXQgPSAxOworfQorCiB2b2lkIHcxX2ZhbWlseV9wdXQoc3RydWN0IHcxX2ZhbWlseSAqZikKIHsKIAlzcGluX2xvY2soJncxX2Zsb2NrKTsKQEAgLTExNCwxOSArMTIwLDE0IEBACiAJc3Bpbl91bmxvY2soJncxX2Zsb2NrKTsKIH0KIAotdm9pZCBfX3cxX2ZhbWlseV9wdXQoc3RydWN0IHcxX2ZhbWlseSAqZikKLXsKLQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZi0+cmVmY250KSkKLQkJZi0+bmVlZF9leGl0ID0gMTsKLX0KLQorI2lmIDAKIHZvaWQgdzFfZmFtaWx5X2dldChzdHJ1Y3QgdzFfZmFtaWx5ICpmKQogewogCXNwaW5fbG9jaygmdzFfZmxvY2spOwogCV9fdzFfZmFtaWx5X2dldChmKTsKIAlzcGluX3VubG9jaygmdzFfZmxvY2spOwotCiB9CisjZW5kaWYgIC8qICAwICAqLwogCiB2b2lkIF9fdzFfZmFtaWx5X2dldChzdHJ1Y3QgdzFfZmFtaWx5ICpmKQogewpAQCAtMTM1LDggKzEzNiw1IEBACiAJc21wX21iX19hZnRlcl9hdG9taWNfaW5jKCk7CiB9CiAKLUVYUE9SVF9TWU1CT0wodzFfZmFtaWx5X2dldCk7Ci1FWFBPUlRfU1lNQk9MKHcxX2ZhbWlseV9wdXQpOwotRVhQT1JUX1NZTUJPTCh3MV9mYW1pbHlfcmVnaXN0ZXJlZCk7CiBFWFBPUlRfU1lNQk9MKHcxX3VucmVnaXN0ZXJfZmFtaWx5KTsKIEVYUE9SVF9TWU1CT0wodzFfcmVnaXN0ZXJfZmFtaWx5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvdzFfZmFtaWx5LmggYi9kcml2ZXJzL3cxL3cxX2ZhbWlseS5oCmluZGV4IDJjYTA0ODkuLjFlMmFjNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvdzFfZmFtaWx5LmgKKysrIGIvZHJpdmVycy93MS93MV9mYW1pbHkuaApAQCAtNTcsMTIgKzU3LDExIEBACiAKIGV4dGVybiBzcGlubG9ja190IHcxX2Zsb2NrOwogCi12b2lkIHcxX2ZhbWlseV9nZXQoc3RydWN0IHcxX2ZhbWlseSAqKTsKIHZvaWQgdzFfZmFtaWx5X3B1dChzdHJ1Y3QgdzFfZmFtaWx5ICopOwogdm9pZCBfX3cxX2ZhbWlseV9nZXQoc3RydWN0IHcxX2ZhbWlseSAqKTsKLXZvaWQgX193MV9mYW1pbHlfcHV0KHN0cnVjdCB3MV9mYW1pbHkgKik7CiBzdHJ1Y3QgdzFfZmFtaWx5ICogdzFfZmFtaWx5X3JlZ2lzdGVyZWQodTgpOwogdm9pZCB3MV91bnJlZ2lzdGVyX2ZhbWlseShzdHJ1Y3QgdzFfZmFtaWx5ICopOwogaW50IHcxX3JlZ2lzdGVyX2ZhbWlseShzdHJ1Y3QgdzFfZmFtaWx5ICopOwordm9pZCB3MV9yZWNvbm5lY3Rfc2xhdmVzKHN0cnVjdCB3MV9mYW1pbHkgKmYpOwogCiAjZW5kaWYgLyogX19XMV9GQU1JTFlfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS93MV9pbnQuYyBiL2RyaXZlcnMvdzEvdzFfaW50LmMKaW5kZXggNjg1NjVhYS4uMzU3YTJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS93MV9pbnQuYworKysgYi9kcml2ZXJzL3cxL3cxX2ludC5jCkBAIC02NSw3ICs2NSw3IEBACiAJYXRvbWljX3NldCgmZGV2LT5yZWZjbnQsIDIpOwogCiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+c2xpc3QpOwotCWluaXRfTVVURVgoJmRldi0+bXV0ZXgpOworCW11dGV4X2luaXQoJmRldi0+bXV0ZXgpOwogCiAJbWVtY3B5KCZkZXYtPmRldiwgZGV2aWNlLCBzaXplb2Yoc3RydWN0IGRldmljZSkpOwogCXNucHJpbnRmKGRldi0+ZGV2LmJ1c19pZCwgc2l6ZW9mKGRldi0+ZGV2LmJ1c19pZCksCkBAIC03NCwxNiArNzQsMTEgQEAKIAogCWRldi0+ZHJpdmVyID0gZHJpdmVyOwogCi0JZGV2LT5ncm91cHMgPSAxOwogCWRldi0+c2VxID0gMTsKLQlkZXZfaW5pdF9uZXRsaW5rKGRldik7CiAKIAllcnIgPSBkZXZpY2VfcmVnaXN0ZXIoJmRldi0+ZGV2KTsKIAlpZiAoZXJyKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1hc3RlciBkZXZpY2UuIGVycj0lZFxuIiwgZXJyKTsKLQotCQlkZXZfZmluaV9uZXRsaW5rKGRldik7Ci0KIAkJbWVtc2V0KGRldiwgMCwgc2l6ZW9mKHN0cnVjdCB3MV9tYXN0ZXIpKTsKIAkJa2ZyZWUoZGV2KTsKIAkJZGV2ID0gTlVMTDsKQEAgLTEzMSwxMiArMTI2LDEyIEBACiAKIAlkZXYtPmluaXRpYWxpemVkID0gMTsKIAotCXNwaW5fbG9jaygmdzFfbWxvY2spOworCW11dGV4X2xvY2soJncxX21sb2NrKTsKIAlsaXN0X2FkZCgmZGV2LT53MV9tYXN0ZXJfZW50cnksICZ3MV9tYXN0ZXJzKTsKLQlzcGluX3VubG9jaygmdzFfbWxvY2spOworCW11dGV4X3VubG9jaygmdzFfbWxvY2spOwogCisJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKIAltc2cuaWQubXN0LmlkID0gZGV2LT5pZDsKLQltc2cuaWQubXN0LnBpZCA9IGRldi0+dGhyZWFkLT5waWQ7CiAJbXNnLnR5cGUgPSBXMV9NQVNURVJfQUREOwogCXcxX25ldGxpbmtfc2VuZChkZXYsICZtc2cpOwogCkBAIC0xNTMsNyArMTQ4LDYgQEAKIHZvaWQgX193MV9yZW1vdmVfbWFzdGVyX2RldmljZShzdHJ1Y3QgdzFfbWFzdGVyICpkZXYpCiB7CiAJc3RydWN0IHcxX25ldGxpbmtfbXNnIG1zZzsKLQlwaWRfdCBwaWQgPSBkZXYtPnRocmVhZC0+cGlkOwogCiAJc2V0X2JpdChXMV9NQVNURVJfTkVFRF9FWElULCAmZGV2LT5mbGFncyk7CiAJa3RocmVhZF9zdG9wKGRldi0+dGhyZWFkKTsKQEAgLTE2Niw4ICsxNjAsOCBAQAogCQkJZmx1c2hfc2lnbmFscyhjdXJyZW50KTsKIAl9CiAKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwogCW1zZy5pZC5tc3QuaWQgPSBkZXYtPmlkOwotCW1zZy5pZC5tc3QucGlkID0gcGlkOwogCW1zZy50eXBlID0gVzFfTUFTVEVSX1JFTU9WRTsKIAl3MV9uZXRsaW5rX3NlbmQoZGV2LCAmbXNnKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS93MV9pby5jIGIvZHJpdmVycy93MS93MV9pby5jCmluZGV4IGY3ZjdlOGIuLjMwYjZmYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvdzFfaW8uYworKysgYi9kcml2ZXJzL3cxL3cxX2lvLmMKQEAgLTIzLDEwICsyMywxMCBAQAogCiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogCiAjaW5jbHVkZSAidzEuaCIKICNpbmNsdWRlICJ3MV9sb2cuaCIKLSNpbmNsdWRlICJ3MV9pby5oIgogCiBzdGF0aWMgaW50IHcxX2RlbGF5X3Bhcm0gPSAxOwogbW9kdWxlX3BhcmFtX25hbWVkKGRlbGF5X2NvZWYsIHcxX2RlbGF5X3Bhcm0sIGludCwgMCk7CkBAIC01MCw3ICs1MCw3IEBACiAJMTE2LCA0MiwgMjAwLCAxNTAsIDIxLCA3NSwgMTY5LCAyNDcsIDE4MiwgMjMyLCAxMCwgODQsIDIxNSwgMTM3LCAxMDcsIDUzCiB9OwogCi12b2lkIHcxX2RlbGF5KHVuc2lnbmVkIGxvbmcgdG0pCitzdGF0aWMgdm9pZCB3MV9kZWxheSh1bnNpZ25lZCBsb25nIHRtKQogewogCXVkZWxheSh0bSAqIHcxX2RlbGF5X3Bhcm0pOwogfQpAQCAtNjEsNyArNjEsNyBAQAogLyoqCiAgKiBHZW5lcmF0ZXMgYSB3cml0ZS0wIG9yIHdyaXRlLTEgY3ljbGUgYW5kIHNhbXBsZXMgdGhlIGxldmVsLgogICovCi11OCB3MV90b3VjaF9iaXQoc3RydWN0IHcxX21hc3RlciAqZGV2LCBpbnQgYml0KQorc3RhdGljIHU4IHcxX3RvdWNoX2JpdChzdHJ1Y3QgdzFfbWFzdGVyICpkZXYsIGludCBiaXQpCiB7CiAJaWYgKGRldi0+YnVzX21hc3Rlci0+dG91Y2hfYml0KQogCQlyZXR1cm4gZGV2LT5idXNfbWFzdGVyLT50b3VjaF9iaXQoZGV2LT5idXNfbWFzdGVyLT5kYXRhLCBiaXQpOwpAQCAtMTA4LDYgKzEwOCw3IEBACiAJCWZvciAoaSA9IDA7IGkgPCA4OyArK2kpCiAJCQl3MV90b3VjaF9iaXQoZGV2LCAoYnl0ZSA+PiBpKSAmIDB4MSk7CiB9CitFWFBPUlRfU1lNQk9MX0dQTCh3MV93cml0ZV84KTsKIAogCiAvKioKQEAgLTE3Niw3ICsxNzcsNyBAQAogICogQHBhcmFtIGRldiAgICAgdGhlIG1hc3RlciBkZXZpY2UKICAqIEByZXR1cm4gICAgICAgIHRoZSBieXRlIHJlYWQKICAqLwotdTggdzFfcmVhZF84KHN0cnVjdCB3MV9tYXN0ZXIgKiBkZXYpCitzdGF0aWMgdTggdzFfcmVhZF84KHN0cnVjdCB3MV9tYXN0ZXIgKiBkZXYpCiB7CiAJaW50IGk7CiAJdTggcmVzID0gMDsKQEAgLTIwOCw2ICsyMDksNyBAQAogCQlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCiAJCQl3MV93cml0ZV84KGRldiwgYnVmW2ldKTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHcxX3dyaXRlX2Jsb2NrKTsKIAogLyoqCiAgKiBSZWFkcyBhIHNlcmllcyBvZiBieXRlcy4KQEAgLTIzMiw2ICsyMzQsNyBAQAogCiAJcmV0dXJuIHJldDsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHcxX3JlYWRfYmxvY2spOwogCiAvKioKICAqIElzc3VlcyBhIHJlc2V0IGJ1cyBzZXF1ZW5jZS4KQEAgLTI1Nyw2ICsyNjAsNyBAQAogCiAJcmV0dXJuIHJlc3VsdDsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHcxX3Jlc2V0X2J1cyk7CiAKIHU4IHcxX2NhbGNfY3JjOCh1OCAqIGRhdGEsIGludCBsZW4pCiB7CkBAIC0yNjcsMTQgKzI3MSwxNSBAQAogCiAJcmV0dXJuIGNyYzsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHcxX2NhbGNfY3JjOCk7CiAKLXZvaWQgdzFfc2VhcmNoX2RldmljZXMoc3RydWN0IHcxX21hc3RlciAqZGV2LCB3MV9zbGF2ZV9mb3VuZF9jYWxsYmFjayBjYikKK3ZvaWQgdzFfc2VhcmNoX2RldmljZXMoc3RydWN0IHcxX21hc3RlciAqZGV2LCB1OCBzZWFyY2hfdHlwZSwgdzFfc2xhdmVfZm91bmRfY2FsbGJhY2sgY2IpCiB7CiAJZGV2LT5hdHRlbXB0cysrOwogCWlmIChkZXYtPmJ1c19tYXN0ZXItPnNlYXJjaCkKLQkJZGV2LT5idXNfbWFzdGVyLT5zZWFyY2goZGV2LT5idXNfbWFzdGVyLT5kYXRhLCBjYik7CisJCWRldi0+YnVzX21hc3Rlci0+c2VhcmNoKGRldi0+YnVzX21hc3Rlci0+ZGF0YSwgc2VhcmNoX3R5cGUsIGNiKTsKIAllbHNlCi0JCXcxX3NlYXJjaChkZXYsIGNiKTsKKwkJdzFfc2VhcmNoKGRldiwgc2VhcmNoX3R5cGUsIGNiKTsKIH0KIAogLyoqCkBAIC0yOTksMTQgKzMwNCw0IEBACiAJfQogCXJldHVybiAwOwogfQotCi1FWFBPUlRfU1lNQk9MKHcxX3RvdWNoX2JpdCk7Ci1FWFBPUlRfU1lNQk9MKHcxX3dyaXRlXzgpOwotRVhQT1JUX1NZTUJPTCh3MV9yZWFkXzgpOwotRVhQT1JUX1NZTUJPTCh3MV9yZXNldF9idXMpOwotRVhQT1JUX1NZTUJPTCh3MV9jYWxjX2NyYzgpOwotRVhQT1JUX1NZTUJPTCh3MV9kZWxheSk7Ci1FWFBPUlRfU1lNQk9MKHcxX3JlYWRfYmxvY2spOwotRVhQT1JUX1NZTUJPTCh3MV93cml0ZV9ibG9jayk7Ci1FWFBPUlRfU1lNQk9MKHcxX3NlYXJjaF9kZXZpY2VzKTsKLUVYUE9SVF9TWU1CT0wodzFfcmVzZXRfc2VsZWN0X3NsYXZlKTsKK0VYUE9SVF9TWU1CT0xfR1BMKHcxX3Jlc2V0X3NlbGVjdF9zbGF2ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL3cxX2lvLmggYi9kcml2ZXJzL3cxL3cxX2lvLmgKaW5kZXggMjMyODYwMS4uOWE3NmQyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS93MV9pby5oCisrKyBiL2RyaXZlcnMvdzEvdzFfaW8uaApAQCAtMjQsMTEgKzI0LDggQEAKIAogI2luY2x1ZGUgIncxLmgiCiAKLXZvaWQgdzFfZGVsYXkodW5zaWduZWQgbG9uZyk7Ci11OCB3MV90b3VjaF9iaXQoc3RydWN0IHcxX21hc3RlciAqLCBpbnQpOwogdTggdzFfdHJpcGxldChzdHJ1Y3QgdzFfbWFzdGVyICpkZXYsIGludCBiZGlyKTsKIHZvaWQgdzFfd3JpdGVfOChzdHJ1Y3QgdzFfbWFzdGVyICosIHU4KTsKLXU4IHcxX3JlYWRfOChzdHJ1Y3QgdzFfbWFzdGVyICopOwogaW50IHcxX3Jlc2V0X2J1cyhzdHJ1Y3QgdzFfbWFzdGVyICopOwogdTggdzFfY2FsY19jcmM4KHU4ICosIGludCk7CiB2b2lkIHcxX3dyaXRlX2Jsb2NrKHN0cnVjdCB3MV9tYXN0ZXIgKiwgY29uc3QgdTggKiwgaW50KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvdzFfbmV0bGluay5jIGIvZHJpdmVycy93MS93MV9uZXRsaW5rLmMKaW5kZXggMzI4NjQ1ZC4uNjVjNWViZCAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS93MV9uZXRsaW5rLmMKKysrIGIvZHJpdmVycy93MS93MV9uZXRsaW5rLmMKQEAgLTIxLDcyICsyMSwyMjUgQEAKIAogI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgogI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9jb25uZWN0b3IuaD4KIAogI2luY2x1ZGUgIncxLmgiCiAjaW5jbHVkZSAidzFfbG9nLmgiCiAjaW5jbHVkZSAidzFfbmV0bGluay5oIgogCi0jaWZuZGVmIE5FVExJTktfRElTQUJMRUQKKyNpZiBkZWZpbmVkKENPTkZJR19XMV9DT04pICYmIChkZWZpbmVkKENPTkZJR19DT05ORUNUT1IpIHx8IChkZWZpbmVkKENPTkZJR19DT05ORUNUT1JfTU9EVUxFKSAmJiBkZWZpbmVkKENPTkZJR19XMV9NT0RVTEUpKSkKIHZvaWQgdzFfbmV0bGlua19zZW5kKHN0cnVjdCB3MV9tYXN0ZXIgKmRldiwgc3RydWN0IHcxX25ldGxpbmtfbXNnICptc2cpCiB7Ci0JdW5zaWduZWQgaW50IHNpemU7Ci0Jc3RydWN0IHNrX2J1ZmYgKnNrYjsKLQlzdHJ1Y3QgdzFfbmV0bGlua19tc2cgKmRhdGE7Ci0Jc3RydWN0IG5sbXNnaGRyICpubGg7CisJY2hhciBidWZbc2l6ZW9mKHN0cnVjdCBjbl9tc2cpICsgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX21zZyldOworCXN0cnVjdCBjbl9tc2cgKm0gPSAoc3RydWN0IGNuX21zZyAqKWJ1ZjsKKwlzdHJ1Y3QgdzFfbmV0bGlua19tc2cgKncgPSAoc3RydWN0IHcxX25ldGxpbmtfbXNnICopKG0rMSk7CiAKLQlpZiAoIWRldi0+bmxzKQotCQlyZXR1cm47CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwogCi0Jc2l6ZSA9IE5MTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpKTsKKwltLT5pZC5pZHggPSBDTl9XMV9JRFg7CisJbS0+aWQudmFsID0gQ05fVzFfVkFMOwogCi0Jc2tiID0gYWxsb2Nfc2tiKHNpemUsIEdGUF9BVE9NSUMpOwotCWlmICghc2tiKSB7Ci0JCWRldl9lcnIoJmRldi0+ZGV2LCAic2tiX2FsbG9jKCkgZmFpbGVkLlxuIik7Ci0JCXJldHVybjsKLQl9CisJbS0+c2VxID0gZGV2LT5zZXErKzsKKwltLT5sZW4gPSBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKTsKIAotCW5saCA9IE5MTVNHX1BVVChza2IsIDAsIGRldi0+c2VxKyssIE5MTVNHX0RPTkUsIHNpemUgLSBzaXplb2YoKm5saCkpOworCW1lbWNweSh3LCBtc2csIHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpKTsKIAotCWRhdGEgPSAoc3RydWN0IHcxX25ldGxpbmtfbXNnICopTkxNU0dfREFUQShubGgpOwotCi0JbWVtY3B5KGRhdGEsIG1zZywgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX21zZykpOwotCi0JTkVUTElOS19DQihza2IpLmRzdF9ncm91cCA9IGRldi0+Z3JvdXBzOwotCW5ldGxpbmtfYnJvYWRjYXN0KGRldi0+bmxzLCBza2IsIDAsIGRldi0+Z3JvdXBzLCBHRlBfQVRPTUlDKTsKLQotbmxtc2dfZmFpbHVyZToKLQlyZXR1cm47CisJY25fbmV0bGlua19zZW5kKG0sIDAsIEdGUF9LRVJORUwpOwogfQogCi1pbnQgZGV2X2luaXRfbmV0bGluayhzdHJ1Y3QgdzFfbWFzdGVyICpkZXYpCitzdGF0aWMgaW50IHcxX3Byb2Nlc3NfY29tbWFuZF9tYXN0ZXIoc3RydWN0IHcxX21hc3RlciAqZGV2LCBzdHJ1Y3QgY25fbXNnICptc2csCisJCXN0cnVjdCB3MV9uZXRsaW5rX21zZyAqaGRyLCBzdHJ1Y3QgdzFfbmV0bGlua19jbWQgKmNtZCkKIHsKLQlkZXYtPm5scyA9IG5ldGxpbmtfa2VybmVsX2NyZWF0ZShORVRMSU5LX1cxLCAxLCBOVUxMLCBUSElTX01PRFVMRSk7Ci0JaWYgKCFkZXYtPm5scykgewotCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBjcmVhdGUgbmV3IG5ldGxpbmsgc29ja2V0KCV1KSBmb3IgdzEgbWFzdGVyICVzLlxuIiwKLQkJCU5FVExJTktfVzEsIGRldi0+ZGV2LmJ1c19pZCk7Ci0JfQorCWRldl9kYmcoJmRldi0+ZGV2LCAiJXM6ICVzOiBjbWQ9JTAyeCwgbGVuPSV1LlxuIiwKKwkJX19mdW5jX18sIGRldi0+bmFtZSwgY21kLT5jbWQsIGNtZC0+bGVuKTsKIAorCWlmIChjbWQtPmNtZCAhPSBXMV9DTURfU0VBUkNIICYmIGNtZC0+Y21kICE9IFcxX0NNRF9BTEFSTV9TRUFSQ0gpCisJCXJldHVybiAtRUlOVkFMOworCisJdzFfc2VhcmNoX3Byb2Nlc3MoZGV2LCAoY21kLT5jbWQgPT0gVzFfQ01EX0FMQVJNX1NFQVJDSCk/VzFfQUxBUk1fU0VBUkNIOlcxX1NFQVJDSCk7CiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZGV2X2ZpbmlfbmV0bGluayhzdHJ1Y3QgdzFfbWFzdGVyICpkZXYpCitzdGF0aWMgaW50IHcxX3NlbmRfcmVhZF9yZXBseShzdHJ1Y3QgdzFfc2xhdmUgKnNsLCBzdHJ1Y3QgY25fbXNnICptc2csCisJCXN0cnVjdCB3MV9uZXRsaW5rX21zZyAqaGRyLCBzdHJ1Y3QgdzFfbmV0bGlua19jbWQgKmNtZCkKIHsKLQlpZiAoZGV2LT5ubHMgJiYgZGV2LT5ubHMtPnNrX3NvY2tldCkKLQkJc29ja19yZWxlYXNlKGRldi0+bmxzLT5za19zb2NrZXQpOworCXZvaWQgKmRhdGE7CisJc3RydWN0IHcxX25ldGxpbmtfbXNnICpoOworCXN0cnVjdCB3MV9uZXRsaW5rX2NtZCAqYzsKKwlzdHJ1Y3QgY25fbXNnICpjbTsKKwlpbnQgZXJyOworCisJZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjbl9tc2cpICsKKwkJCXNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpICsKKwkJCXNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19jbWQpICsKKwkJCWNtZC0+bGVuLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRU5PTUVNOworCisJY20gPSAoc3RydWN0IGNuX21zZyAqKShkYXRhKTsKKwloID0gKHN0cnVjdCB3MV9uZXRsaW5rX21zZyAqKShjbSArIDEpOworCWMgPSAoc3RydWN0IHcxX25ldGxpbmtfY21kICopKGggKyAxKTsKKworCW1lbWNweShjbSwgbXNnLCBzaXplb2Yoc3RydWN0IGNuX21zZykpOworCW1lbWNweShoLCBoZHIsIHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpKTsKKwltZW1jcHkoYywgY21kLCBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKSk7CisKKwljbS0+YWNrID0gbXNnLT5zZXErMTsKKwljbS0+bGVuID0gc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX21zZykgKyBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKSArIGNtZC0+bGVuOworCisJaC0+bGVuID0gc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX2NtZCkgKyBjbWQtPmxlbjsKKworCW1lbWNweShjLT5kYXRhLCBjbWQtPmRhdGEsIGMtPmxlbik7CisKKwllcnIgPSBjbl9uZXRsaW5rX3NlbmQoY20sIDAsIEdGUF9LRVJORUwpOworCisJa2ZyZWUoZGF0YSk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHcxX3Byb2Nlc3NfY29tbWFuZF9zbGF2ZShzdHJ1Y3QgdzFfc2xhdmUgKnNsLCBzdHJ1Y3QgY25fbXNnICptc2csCisJCXN0cnVjdCB3MV9uZXRsaW5rX21zZyAqaGRyLCBzdHJ1Y3QgdzFfbmV0bGlua19jbWQgKmNtZCkKK3sKKwlpbnQgZXJyID0gMDsKKworCWRldl9kYmcoJnNsLT5tYXN0ZXItPmRldiwgIiVzOiAlMDJ4LiUwMTJsbHguJTAyeDogY21kPSUwMngsIGxlbj0ldS5cbiIsCisJCV9fZnVuY19fLCBzbC0+cmVnX251bS5mYW1pbHksICh1bnNpZ25lZCBsb25nIGxvbmcpc2wtPnJlZ19udW0uaWQsIHNsLT5yZWdfbnVtLmNyYywKKwkJY21kLT5jbWQsIGNtZC0+bGVuKTsKKworCXN3aXRjaCAoY21kLT5jbWQpIHsKKwkJY2FzZSBXMV9DTURfUkVBRDoKKwkJCXcxX3JlYWRfYmxvY2soc2wtPm1hc3RlciwgY21kLT5kYXRhLCBjbWQtPmxlbik7CisJCQl3MV9zZW5kX3JlYWRfcmVwbHkoc2wsIG1zZywgaGRyLCBjbWQpOworCQkJYnJlYWs7CisJCWNhc2UgVzFfQ01EX1dSSVRFOgorCQkJdzFfd3JpdGVfYmxvY2soc2wtPm1hc3RlciwgY21kLT5kYXRhLCBjbWQtPmxlbik7CisJCQlicmVhazsKKwkJY2FzZSBXMV9DTURfU0VBUkNIOgorCQljYXNlIFcxX0NNRF9BTEFSTV9TRUFSQ0g6CisJCQl3MV9zZWFyY2hfcHJvY2VzcyhzbC0+bWFzdGVyLAorCQkJCQkoY21kLT5jbWQgPT0gVzFfQ01EX0FMQVJNX1NFQVJDSCk/VzFfQUxBUk1fU0VBUkNIOlcxX1NFQVJDSCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyciA9IC0xOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgdzFfY25fY2FsbGJhY2sodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgY25fbXNnICptc2cgPSBkYXRhOworCXN0cnVjdCB3MV9uZXRsaW5rX21zZyAqbSA9IChzdHJ1Y3QgdzFfbmV0bGlua19tc2cgKikobXNnICsgMSk7CisJc3RydWN0IHcxX25ldGxpbmtfY21kICpjbWQ7CisJc3RydWN0IHcxX3NsYXZlICpzbDsKKwlzdHJ1Y3QgdzFfbWFzdGVyICpkZXY7CisJaW50IGVyciA9IDA7CisKKwl3aGlsZSAobXNnLT5sZW4gJiYgIWVycikgeworCQlzdHJ1Y3QgdzFfcmVnX251bSBpZDsKKwkJdTE2IG1sZW4gPSBtLT5sZW47CisJCXU4ICpjbWRfZGF0YSA9IG0tPmRhdGE7CisKKwkJZGV2ID0gTlVMTDsKKwkJc2wgPSBOVUxMOworCisJCW1lbWNweSgmaWQsIG0tPmlkLmlkLCBzaXplb2YoaWQpKTsKKyNpZiAwCisJCXByaW50aygiJXM6ICUwMnguJTAxMmxseC4lMDJ4OiB0eXBlPSUwMngsIGxlbj0ldS5cbiIsCisJCQkJX19mdW5jX18sIGlkLmZhbWlseSwgKHVuc2lnbmVkIGxvbmcgbG9uZylpZC5pZCwgaWQuY3JjLCBtLT50eXBlLCBtLT5sZW4pOworI2VuZGlmCisJCWlmIChtLT5sZW4gKyBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKSA+IG1zZy0+bGVuKSB7CisJCQllcnIgPSAtRTJCSUc7CisJCQlicmVhazsKKwkJfQorCisJCWlmICghbWxlbikKKwkJCWdvdG8gb3V0X2NvbnQ7CisKKwkJaWYgKG0tPnR5cGUgPT0gVzFfTUFTVEVSX0NNRCkgeworCQkJZGV2ID0gdzFfc2VhcmNoX21hc3Rlcl9pZChtLT5pZC5tc3QuaWQpOworCQl9IGVsc2UgaWYgKG0tPnR5cGUgPT0gVzFfU0xBVkVfQ01EKSB7CisJCQlzbCA9IHcxX3NlYXJjaF9zbGF2ZSgmaWQpOworCQkJaWYgKHNsKQorCQkJCWRldiA9IHNsLT5tYXN0ZXI7CisJCX0KKworCQlpZiAoIWRldikgeworCQkJZXJyID0gLUVOT0RFVjsKKwkJCWdvdG8gb3V0X2NvbnQ7CisJCX0KKworCQltdXRleF9sb2NrKCZkZXYtPm11dGV4KTsKKworCQlpZiAoc2wgJiYgdzFfcmVzZXRfc2VsZWN0X3NsYXZlKHNsKSkgeworCQkJZXJyID0gLUVOT0RFVjsKKwkJCWdvdG8gb3V0X3VwOworCQl9CisKKwkJd2hpbGUgKG1sZW4pIHsKKwkJCWNtZCA9IChzdHJ1Y3QgdzFfbmV0bGlua19jbWQgKiljbWRfZGF0YTsKKworCQkJaWYgKGNtZC0+bGVuICsgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX2NtZCkgPiBtbGVuKSB7CisJCQkJZXJyID0gLUUyQklHOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAoc2wpCisJCQkJdzFfcHJvY2Vzc19jb21tYW5kX3NsYXZlKHNsLCBtc2csIG0sIGNtZCk7CisJCQllbHNlCisJCQkJdzFfcHJvY2Vzc19jb21tYW5kX21hc3RlcihkZXYsIG1zZywgbSwgY21kKTsKKworCQkJY21kX2RhdGEgKz0gY21kLT5sZW4gKyBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKTsKKwkJCW1sZW4gLT0gY21kLT5sZW4gKyBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKTsKKwkJfQorb3V0X3VwOgorCQlhdG9taWNfZGVjKCZkZXYtPnJlZmNudCk7CisJCWlmIChzbCkKKwkJCWF0b21pY19kZWMoJnNsLT5yZWZjbnQpOworCQltdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOworb3V0X2NvbnQ6CisJCW1zZy0+bGVuIC09IHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19tc2cpICsgbS0+bGVuOworCQltID0gKHN0cnVjdCB3MV9uZXRsaW5rX21zZyAqKSgoKHU4ICopbSkgKyBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKSArIG0tPmxlbik7CisKKwkJLyoKKwkJICogTGV0J3MgYWxsb3cgcmVxdWVzdHMgZm9yIG5vbmV4aXN0aW5nIGRldmljZXMuCisJCSAqLworCQlpZiAoZXJyID09IC1FTk9ERVYpCisJCQllcnIgPSAwOworCX0KKyNpZiAwCisJaWYgKGVycikgeworCQlwcmludGsoIiVzOiBtYWxmb3JtZWQgbWVzc2FnZS4gRHJvcHBpbmcuXG4iLCBfX2Z1bmNfXyk7CisJfQorI2VuZGlmCit9CisKK2ludCB3MV9pbml0X25ldGxpbmsodm9pZCkKK3sKKwlzdHJ1Y3QgY2JfaWQgdzFfaWQgPSB7LmlkeCA9IENOX1cxX0lEWCwgLnZhbCA9IENOX1cxX1ZBTH07CisKKwlyZXR1cm4gY25fYWRkX2NhbGxiYWNrKCZ3MV9pZCwgIncxIiwgJncxX2NuX2NhbGxiYWNrKTsKK30KKwordm9pZCB3MV9maW5pX25ldGxpbmsodm9pZCkKK3sKKwlzdHJ1Y3QgY2JfaWQgdzFfaWQgPSB7LmlkeCA9IENOX1cxX0lEWCwgLnZhbCA9IENOX1cxX1ZBTH07CisKKwljbl9kZWxfY2FsbGJhY2soJncxX2lkKTsKIH0KICNlbHNlCi0jd2FybmluZyBOZXRsaW5rIHN1cHBvcnQgaXMgZGlzYWJsZWQuIFBsZWFzZSBjb21waWxlIHdpdGggTkVUIHN1cHBvcnQgZW5hYmxlZC4KLQogdm9pZCB3MV9uZXRsaW5rX3NlbmQoc3RydWN0IHcxX21hc3RlciAqZGV2LCBzdHJ1Y3QgdzFfbmV0bGlua19tc2cgKm1zZykKIHsKIH0KIAotaW50IGRldl9pbml0X25ldGxpbmsoc3RydWN0IHcxX21hc3RlciAqZGV2KQoraW50IHcxX2luaXRfbmV0bGluayh2b2lkKQogewogCXJldHVybiAwOwogfQogCi12b2lkIGRldl9maW5pX25ldGxpbmsoc3RydWN0IHcxX21hc3RlciAqZGV2KQordm9pZCB3MV9maW5pX25ldGxpbmsodm9pZCkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS93MV9uZXRsaW5rLmggYi9kcml2ZXJzL3cxL3cxX25ldGxpbmsuaAppbmRleCBlYjBjOGIzLi41NjEyMmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3cxL3cxX25ldGxpbmsuaAorKysgYi9kcml2ZXJzL3cxL3cxX25ldGxpbmsuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBfX1cxX05FVExJTktfSAogCiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvY29ubmVjdG9yLmg+CiAKICNpbmNsdWRlICJ3MS5oIgogCkBAIC0zMSwyOSArMzIsNDMgQEAKIAlXMV9TTEFWRV9SRU1PVkUsCiAJVzFfTUFTVEVSX0FERCwKIAlXMV9NQVNURVJfUkVNT1ZFLAorCVcxX01BU1RFUl9DTUQsCisJVzFfU0xBVkVfQ01ELAogfTsKIAogc3RydWN0IHcxX25ldGxpbmtfbXNnCiB7CiAJX191OAkJCQl0eXBlOwotCV9fdTgJCQkJcmVzZXJ2ZWRbM107Ci0JdW5pb24KLQl7Ci0JCXN0cnVjdCB3MV9yZWdfbnVtCWlkOwotCQlfX3U2NAkJCXcxX2lkOwotCQlzdHJ1Y3QKLQkJeworCV9fdTgJCQkJcmVzZXJ2ZWQ7CisJX191MTYJCQkJbGVuOworCXVuaW9uIHsKKwkJX191OAkJCWlkWzhdOworCQlzdHJ1Y3QgdzFfbXN0IHsKIAkJCV9fdTMyCQlpZDsKLQkJCV9fdTMyCQlwaWQ7CisJCQlfX3UzMgkJcmVzOwogCQl9IG1zdDsKIAl9IGlkOworCV9fdTgJCQkJZGF0YVswXTsKK307CisKKyNkZWZpbmUgVzFfQ01EX1JFQUQJCTB4MAorI2RlZmluZSBXMV9DTURfV1JJVEUJCTB4MQorI2RlZmluZSBXMV9DTURfU0VBUkNICQkweDIKKyNkZWZpbmUgVzFfQ01EX0FMQVJNX1NFQVJDSAkweDMKKworc3RydWN0IHcxX25ldGxpbmtfY21kCit7CisJX191OAkJCQljbWQ7CisJX191OAkJCQlyZXM7CisJX191MTYJCQkJbGVuOworCV9fdTgJCQkJZGF0YVswXTsKIH07CiAKICNpZmRlZiBfX0tFUk5FTF9fCiAKIHZvaWQgdzFfbmV0bGlua19zZW5kKHN0cnVjdCB3MV9tYXN0ZXIgKiwgc3RydWN0IHcxX25ldGxpbmtfbXNnICopOwotaW50IGRldl9pbml0X25ldGxpbmsoc3RydWN0IHcxX21hc3RlciAqZGV2KTsKLXZvaWQgZGV2X2ZpbmlfbmV0bGluayhzdHJ1Y3QgdzFfbWFzdGVyICpkZXYpOworaW50IHcxX2luaXRfbmV0bGluayh2b2lkKTsKK3ZvaWQgdzFfZmluaV9uZXRsaW5rKHZvaWQpOwogCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogI2VuZGlmIC8qIF9fVzFfTkVUTElOS19IICovCmRpZmYgLS1naXQgYS9mcy85cC92ZnNfc3VwZXIuYyBiL2ZzLzlwL3Zmc19zdXBlci5jCmluZGV4IDAwYzFmNmIuLjhiMTViYjIgMTAwNjQ0Ci0tLSBhL2ZzLzlwL3Zmc19zdXBlci5jCisrKyBiL2ZzLzlwL3Zmc19zdXBlci5jCkBAIC05OSwxMiArOTksMTMgQEAKICAqIEBmbGFnczogbW91bnQgZmxhZ3MKICAqIEBkZXZfbmFtZTogZGV2aWNlIG5hbWUgdGhhdCB3YXMgbW91bnRlZAogICogQGRhdGE6IG1vdW50IG9wdGlvbnMKKyAqIEBtbnQ6IG1vdW50cG9pbnQgcmVjb3JkIHRvIGJlIGluc3RhbnRpYXRlZAogICoKICAqLwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICp2OWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZQotCQkJCSAgICAgICAqZnNfdHlwZSwgaW50IGZsYWdzLAotCQkJCSAgICAgICBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgdjlmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsIGludCBmbGFncywKKwkJICAgICAgIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAorCQkgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQpCiB7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IE5VTEw7CiAJc3RydWN0IHY5ZnNfZmNhbGwgKmZjYWxsID0gTlVMTDsKQEAgLTEyMywxNyArMTI0LDE5IEBACiAKIAl2OXNlcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2OWZzX3Nlc3Npb25faW5mbyksIEdGUF9LRVJORUwpOwogCWlmICghdjlzZXMpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCQlyZXR1cm4gLUVOT01FTTsKIAogCWlmICgobmV3ZmlkID0gdjlmc19zZXNzaW9uX2luaXQodjlzZXMsIGRldl9uYW1lLCBkYXRhKSkgPCAwKSB7CiAJCWRwcmludGsoREVCVUdfRVJST1IsICJwcm9ibGVtIGluaXRpYXRpbmcgc2Vzc2lvblxuIik7Ci0JCXNiID0gRVJSX1BUUihuZXdmaWQpOworCQlyZXR2YWwgPSBuZXdmaWQ7CiAJCWdvdG8gb3V0X2ZyZWVfc2Vzc2lvbjsKIAl9CiAKIAlzYiA9IHNnZXQoZnNfdHlwZSwgTlVMTCwgdjlmc19zZXRfc3VwZXIsIHY5c2VzKTsKLQlpZiAoSVNfRVJSKHNiKSkKKwlpZiAoSVNfRVJSKHNiKSkgeworCQlyZXR2YWwgPSBQVFJfRVJSKHNiKTsKIAkJZ290byBvdXRfY2xvc2Vfc2Vzc2lvbjsKKwl9CiAJdjlmc19maWxsX3N1cGVyKHNiLCB2OXNlcywgZmxhZ3MpOwogCiAJaW5vZGUgPSB2OWZzX2dldF9pbm9kZShzYiwgU19JRkRJUiB8IG1vZGUpOwpAQCAtMTg0LDE5ICsxODcsMTkgQEAKIAkJZ290byBwdXRfYmFja19zYjsKIAl9CiAKLQlyZXR1cm4gc2I7CisJcmV0dXJuIHNpbXBsZV9zZXRfbW50KG1udCwgc2IpOwogCiBvdXRfY2xvc2Vfc2Vzc2lvbjoKIAl2OWZzX3Nlc3Npb25fY2xvc2UodjlzZXMpOwogb3V0X2ZyZWVfc2Vzc2lvbjoKIAlrZnJlZSh2OXNlcyk7Ci0JcmV0dXJuIHNiOworCXJldHVybiByZXR2YWw7CiAKIHB1dF9iYWNrX3NiOgogCS8qIGRlYWN0aXZhdGVfc3VwZXIgY2FsbHMgdjlmc19raWxsX3N1cGVyIHdoaWNoIHdpbGwgZnJlZXMgdGhlIHJlc3QgKi8KIAl1cF93cml0ZSgmc2ItPnNfdW1vdW50KTsKIAlkZWFjdGl2YXRlX3N1cGVyKHNiKTsKLQlyZXR1cm4gRVJSX1BUUihyZXR2YWwpOworCXJldHVybiByZXR2YWw7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZnMvS2NvbmZpZyBiL2ZzL0tjb25maWcKaW5kZXggMjBmOWI1NS4uMmFhNDYyNCAxMDA2NDQKLS0tIGEvZnMvS2NvbmZpZworKysgYi9mcy9LY29uZmlnCkBAIC01Myw3ICs1Myw3IEBACiAKIGNvbmZpZyBFWFQyX0ZTX1hJUAogCWJvb2wgIkV4dDIgZXhlY3V0ZSBpbiBwbGFjZSBzdXBwb3J0IgotCWRlcGVuZHMgb24gRVhUMl9GUworCWRlcGVuZHMgb24gRVhUMl9GUyAmJiBNTVUKIAloZWxwCiAJICBFeGVjdXRlIGluIHBsYWNlIGNhbiBiZSB1c2VkIG9uIG1lbW9yeS1iYWNrZWQgYmxvY2sgZGV2aWNlcy4gSWYgeW91CiAJICBlbmFibGUgdGhpcyBvcHRpb24sIHlvdSBjYW4gc2VsZWN0IHRvIG1vdW50IGJsb2NrIGRldmljZXMgd2hpY2ggYXJlCmRpZmYgLS1naXQgYS9mcy9hZGZzL3N1cGVyLmMgYi9mcy9hZGZzL3N1cGVyLmMKaW5kZXggMjUyYWJkYS4uYmExYzg4YSAxMDA2NDQKLS0tIGEvZnMvYWRmcy9zdXBlci5jCisrKyBiL2ZzL2FkZnMvc3VwZXIuYwpAQCAtMTk2LDE3ICsxOTYsMTcgQEAKIAlyZXR1cm4gcGFyc2Vfb3B0aW9ucyhzYiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBpbnQgYWRmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgYWRmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogewotCXN0cnVjdCBhZGZzX3NiX2luZm8gKmFzYiA9IEFERlNfU0Ioc2IpOworCXN0cnVjdCBhZGZzX3NiX2luZm8gKmFzYiA9IEFERlNfU0IoZGVudHJ5LT5kX3NiKTsKIAogCWJ1Zi0+Zl90eXBlICAgID0gQURGU19TVVBFUl9NQUdJQzsKIAlidWYtPmZfbmFtZWxlbiA9IGFzYi0+c19uYW1lbGVuOwotCWJ1Zi0+Zl9ic2l6ZSAgID0gc2ItPnNfYmxvY2tzaXplOworCWJ1Zi0+Zl9ic2l6ZSAgID0gZGVudHJ5LT5kX3NiLT5zX2Jsb2Nrc2l6ZTsKIAlidWYtPmZfYmxvY2tzICA9IGFzYi0+c19zaXplOwogCWJ1Zi0+Zl9maWxlcyAgID0gYXNiLT5zX2lkc19wZXJfem9uZSAqIGFzYi0+c19tYXBfc2l6ZTsKIAlidWYtPmZfYmF2YWlsICA9Ci0JYnVmLT5mX2JmcmVlICAgPSBhZGZzX21hcF9mcmVlKHNiKTsKKwlidWYtPmZfYmZyZWUgICA9IGFkZnNfbWFwX2ZyZWUoZGVudHJ5LT5kX3NiKTsKIAlidWYtPmZfZmZyZWUgICA9IChsb25nKShidWYtPmZfYmZyZWUgKiBidWYtPmZfZmlsZXMpIC8gKGxvbmcpYnVmLT5mX2Jsb2NrczsKIAogCXJldHVybiAwOwpAQCAtNDcwLDEwICs0NzAsMTEgQEAKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqYWRmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgYWRmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgYWRmc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBhZGZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYWRmc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvYWZmcy9zdXBlci5jIGIvZnMvYWZmcy9zdXBlci5jCmluZGV4IDRkN2U1YjEuLjg3NjVjYmEgMTAwNjQ0Ci0tLSBhL2ZzL2FmZnMvc3VwZXIuYworKysgYi9mcy9hZmZzL3N1cGVyLmMKQEAgLTE4LDcgKzE4LDcgQEAKIAogZXh0ZXJuIHN0cnVjdCB0aW1lem9uZSBzeXNfdHo7CiAKLXN0YXRpYyBpbnQgYWZmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7CitzdGF0aWMgaW50IGFmZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7CiBzdGF0aWMgaW50IGFmZnNfcmVtb3VudCAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50ICpmbGFncywgY2hhciAqZGF0YSk7CiAKIHN0YXRpYyB2b2lkCkBAIC01MDgsOCArNTA4LDkgQEAKIH0KIAogc3RhdGljIGludAotYWZmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK2FmZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOwogCWludAkJIGZyZWU7CiAKIAlwcl9kZWJ1ZygiQUZGUzogc3RhdGZzKCkgcGFydHNpemU9JWQsIHJlc2VydmVkPSVkXG4iLEFGRlNfU0Ioc2IpLT5zX3BhcnRpdGlvbl9zaXplLApAQCAtNTI0LDEwICs1MjUsMTEgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqYWZmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgYWZmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgYWZmc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBhZmZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYWZmc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvYWZzL2Rpci5jIGIvZnMvYWZzL2Rpci5jCmluZGV4IGE2ZGZmNmEuLjJmYzk5ODcgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9kaXIuYworKysgYi9mcy9hZnMvZGlyLmMKQEAgLTE4NSw5ICsxODUsNyBAQAogCiAJX2VudGVyKCJ7JWx1fSwlbHUiLCBkaXItPmlfaW5vLCBpbmRleCk7CiAKLQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKGRpci0+aV9tYXBwaW5nLGluZGV4LAotCQkJICAgICAgIChmaWxsZXJfdCAqKSBkaXItPmlfbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLAotCQkJICAgICAgIE5VTEwpOworCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShkaXItPmlfbWFwcGluZywgaW5kZXgsIE5VTEwpOwogCWlmICghSVNfRVJSKHBhZ2UpKSB7CiAJCXdhaXRfb25fcGFnZV9sb2NrZWQocGFnZSk7CiAJCWttYXAocGFnZSk7CmRpZmYgLS1naXQgYS9mcy9hZnMvbW50cHQuYyBiL2ZzL2Fmcy9tbnRwdC5jCmluZGV4IDdiNmRjMDMuLjk5Nzg1YTcgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9tbnRwdC5jCisrKyBiL2ZzL2Fmcy9tbnRwdC5jCkBAIC02Myw3ICs2Myw2IEBACiBpbnQgYWZzX21udHB0X2NoZWNrX3N5bWxpbmsoc3RydWN0IGFmc192bm9kZSAqdm5vZGUpCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7Ci0JZmlsbGVyX3QgKmZpbGxlcjsKIAlzaXplX3Qgc2l6ZTsKIAljaGFyICpidWY7CiAJaW50IHJldDsKQEAgLTcxLDEwICs3MCw3IEBACiAJX2VudGVyKCJ7JXUsJXV9Iiwgdm5vZGUtPmZpZC52bm9kZSwgdm5vZGUtPmZpZC51bmlxdWUpOwogCiAJLyogcmVhZCB0aGUgY29udGVudHMgb2YgdGhlIHN5bWxpbmsgaW50byB0aGUgcGFnZWNhY2hlICovCi0JZmlsbGVyID0gKGZpbGxlcl90ICopIEFGU19WTk9ERV9UT19JKHZub2RlKS0+aV9tYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2U7Ci0KLQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKEFGU19WTk9ERV9UT19JKHZub2RlKS0+aV9tYXBwaW5nLCAwLAotCQkJICAgICAgIGZpbGxlciwgTlVMTCk7CisJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKEFGU19WTk9ERV9UT19JKHZub2RlKS0+aV9tYXBwaW5nLCAwLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHBhZ2UpKSB7CiAJCXJldCA9IFBUUl9FUlIocGFnZSk7CiAJCWdvdG8gb3V0OwpAQCAtMTYwLDcgKzE1Niw2IEBACiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOwogCXNpemVfdCBzaXplOwogCWNoYXIgKmJ1ZiwgKmRldm5hbWUgPSBOVUxMLCAqb3B0aW9ucyA9IE5VTEw7Ci0JZmlsbGVyX3QgKmZpbGxlcjsKIAlpbnQgcmV0OwogCiAJa2VudGVyKCJ7JXN9IiwgbW50cHQtPmRfbmFtZS5uYW1lKTsKQEAgLTE4Miw5ICsxNzcsNyBAQAogCQlnb3RvIGVycm9yOwogCiAJLyogcmVhZCB0aGUgY29udGVudHMgb2YgdGhlIEFGUyBzcGVjaWFsIHN5bWxpbmsgKi8KLQlmaWxsZXIgPSAoZmlsbGVyX3QgKiltbnRwdC0+ZF9pbm9kZS0+aV9tYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2U7Ci0KLQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1udHB0LT5kX2lub2RlLT5pX21hcHBpbmcsIDAsIGZpbGxlciwgTlVMTCk7CisJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1udHB0LT5kX2lub2RlLT5pX21hcHBpbmcsIDAsIE5VTEwpOwogCWlmIChJU19FUlIocGFnZSkpIHsKIAkJcmV0ID0gUFRSX0VSUihwYWdlKTsKIAkJZ290byBlcnJvcjsKZGlmZiAtLWdpdCBhL2ZzL2Fmcy9zdXBlci5jIGIvZnMvYWZzL3N1cGVyLmMKaW5kZXggOTNhNzgyMS4uNjdkMWY1YyAxMDA2NDQKLS0tIGEvZnMvYWZzL3N1cGVyLmMKKysrIGIvZnMvYWZzL3N1cGVyLmMKQEAgLTM4LDkgKzM4LDkgQEAKIHN0YXRpYyB2b2lkIGFmc19pX2luaXRfb25jZSh2b2lkICpmb28sIGttZW1fY2FjaGVfdCAqY2FjaGVwLAogCQkJICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICphZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCSAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJICAgICAgdm9pZCAqZGF0YSk7CitzdGF0aWMgaW50IGFmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCSAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCisJCSAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKIAogc3RhdGljIHN0cnVjdCBpbm9kZSAqYWZzX2FsbG9jX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogCkBAIC0yOTQsMTAgKzI5NCwxMSBAQAogICogZ2V0IGFuIEFGUyBzdXBlcmJsb2NrCiAgKiAtIFRPRE86IGRvbid0IHVzZSBnZXRfc2Jfbm9kZXYoKSwgYnV0IHJhdGhlciBjYWxsIHNnZXQoKSBkaXJlY3RseQogICovCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICphZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCSAgICAgIGludCBmbGFncywKLQkJCQkgICAgICBjb25zdCBjaGFyICpkZXZfbmFtZSwKLQkJCQkgICAgICB2b2lkICpvcHRpb25zKQorc3RhdGljIGludCBhZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkgICAgICBpbnQgZmxhZ3MsCisJCSAgICAgIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkgICAgICB2b2lkICpvcHRpb25zLAorCQkgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3QgYWZzX21vdW50X3BhcmFtcyBwYXJhbXM7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYjsKQEAgLTMxMSw3ICszMTIsNyBAQAogCXJldCA9IGFmc2NtX3N0YXJ0KCk7CiAJaWYgKHJldCA8IDApIHsKIAkJX2xlYXZlKCIgPSAlZCIsIHJldCk7Ci0JCXJldHVybiBFUlJfUFRSKHJldCk7CisJCXJldHVybiByZXQ7CiAJfQogCiAJLyogcGFyc2UgdGhlIG9wdGlvbnMgKi8KQEAgLTM0OCwxOCArMzQ5LDE5IEBACiAJCWdvdG8gZXJyb3I7CiAJfQogCXNiLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKKwlzaW1wbGVfc2V0X21udChtbnQsIHNiKTsKIAogCWFmc19wdXRfdm9sdW1lKHBhcmFtcy52b2x1bWUpOwogCWFmc19wdXRfY2VsbChwYXJhbXMuZGVmYXVsdF9jZWxsKTsKLQlfbGVhdmUoIiA9ICVwIiwgc2IpOwotCXJldHVybiBzYjsKKwlfbGVhdmUoIiA9IDAgWyVwXSIsIDAsIHNiKTsKKwlyZXR1cm4gMDsKIAogIGVycm9yOgogCWFmc19wdXRfdm9sdW1lKHBhcmFtcy52b2x1bWUpOwogCWFmc19wdXRfY2VsbChwYXJhbXMuZGVmYXVsdF9jZWxsKTsKIAlhZnNjbV9zdG9wKCk7CiAJX2xlYXZlKCIgPSAlZCIsIHJldCk7Ci0JcmV0dXJuIEVSUl9QVFIocmV0KTsKKwlyZXR1cm4gcmV0OwogfSAvKiBlbmQgYWZzX2dldF9zYigpICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2ZzL2Fpby5jIGIvZnMvYWlvLmMKaW5kZXggZTQxZTkzMi4uOGMzNGE2MiAxMDA2NDQKLS0tIGEvZnMvYWlvLmMKKysrIGIvZnMvYWlvLmMKQEAgLTc3NywxMSArNzc3LDExIEBACiBzdGF0aWMgaW50IF9fYWlvX3J1bl9pb2NicyhzdHJ1Y3Qga2lvY3R4ICpjdHgpCiB7CiAJc3RydWN0IGtpb2NiICppb2NiOwotCUxJU1RfSEVBRChydW5fbGlzdCk7CisJc3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKIAogCWFzc2VydF9zcGluX2xvY2tlZCgmY3R4LT5jdHhfbG9jayk7CiAKLQlsaXN0X3NwbGljZV9pbml0KCZjdHgtPnJ1bl9saXN0LCAmcnVuX2xpc3QpOworCWxpc3RfcmVwbGFjZV9pbml0KCZjdHgtPnJ1bl9saXN0LCAmcnVuX2xpc3QpOwogCXdoaWxlICghbGlzdF9lbXB0eSgmcnVuX2xpc3QpKSB7CiAJCWlvY2IgPSBsaXN0X2VudHJ5KHJ1bl9saXN0Lm5leHQsIHN0cnVjdCBraW9jYiwKIAkJCWtpX3J1bl9saXN0KTsKZGlmZiAtLWdpdCBhL2ZzL2F1dG9mcy9pbml0LmMgYi9mcy9hdXRvZnMvaW5pdC5jCmluZGV4IGI5NzdlY2UuLmFjYTEyMzcgMTAwNjQ0Ci0tLSBhL2ZzL2F1dG9mcy9pbml0LmMKKysrIGIvZnMvYXV0b2ZzL2luaXQuYwpAQCAtMTQsMTAgKzE0LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgImF1dG9mc19pLmgiCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmF1dG9mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgYXV0b2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBhdXRvZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgYXV0b2ZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBhdXRvZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2F1dG9mczQvaW5pdC5jIGIvZnMvYXV0b2ZzNC9pbml0LmMKaW5kZXggYWNlY2VjOC4uNWQ5MTkzMyAxMDA2NDQKLS0tIGEvZnMvYXV0b2ZzNC9pbml0LmMKKysrIGIvZnMvYXV0b2ZzNC9pbml0LmMKQEAgLTE0LDEwICsxNCwxMCBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlICJhdXRvZnNfaS5oIgogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICphdXRvZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGF1dG9mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgYXV0b2ZzNF9maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBhdXRvZnM0X2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBhdXRvZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2JlZnMvbGludXh2ZnMuYyBiL2ZzL2JlZnMvbGludXh2ZnMuYwppbmRleCA2OGViZDEwLi4wODIwMWZhIDEwMDY0NAotLS0gYS9mcy9iZWZzL2xpbnV4dmZzLmMKKysrIGIvZnMvYmVmcy9saW51eHZmcy5jCkBAIC00OSw3ICs0OSw3IEBACiAJCQljaGFyICoqb3V0LCBpbnQgKm91dF9sZW4pOwogc3RhdGljIHZvaWQgYmVmc19wdXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogc3RhdGljIGludCBiZWZzX3JlbW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwotc3RhdGljIGludCBiZWZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtzdGF0ZnMgKik7CitzdGF0aWMgaW50IGJlZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CiBzdGF0aWMgaW50IHBhcnNlX29wdGlvbnMoY2hhciAqLCBiZWZzX21vdW50X29wdGlvbnMgKik7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBiZWZzX3NvcHMgPSB7CkBAIC04ODAsOCArODgwLDkgQEAKIH0KIAogc3RhdGljIGludAotYmVmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK2JlZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOwogCiAJYmVmc19kZWJ1ZyhzYiwgIi0tLT4gYmVmc19zdGF0ZnMoKSIpOwogCkBAIC04OTksMTEgKzkwMCwxMiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICoKK3N0YXRpYyBpbnQKIGJlZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCSAgICB2b2lkICpkYXRhKQorCSAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBiZWZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGJlZnNfZmlsbF9zdXBlciwKKwkJCSAgIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBiZWZzX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9iZnMvaW5vZGUuYyBiL2ZzL2Jmcy9pbm9kZS5jCmluZGV4IDU1YTdhNzguLmNmNzRmM2QgMTAwNjQ0Ci0tLSBhL2ZzL2Jmcy9pbm9kZS5jCisrKyBiL2ZzL2Jmcy9pbm9kZS5jCkBAIC0yMDMsOCArMjAzLDkgQEAKIAlzLT5zX2ZzX2luZm8gPSBOVUxMOwogfQogCi1zdGF0aWMgaW50IGJmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQorc3RhdGljIGludCBiZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMgPSBkZW50cnktPmRfc2I7CiAJc3RydWN0IGJmc19zYl9pbmZvICppbmZvID0gQkZTX1NCKHMpOwogCXU2NCBpZCA9IGh1Z2VfZW5jb2RlX2RldihzLT5zX2JkZXYtPmJkX2Rldik7CiAJYnVmLT5mX3R5cGUgPSBCRlNfTUFHSUM7CkBAIC00MTAsMTAgKzQxMSwxMCBAQAogCXJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpiZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGJmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgYmZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGJmc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYmZzX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmLmMgYi9mcy9iaW5mbXRfZWxmLmMKaW5kZXggNTM3ODkzYS4uZDA0MzQ0MCAxMDA2NDQKLS0tIGEvZnMvYmluZm10X2VsZi5jCisrKyBiL2ZzL2JpbmZtdF9lbGYuYwpAQCAtMzgsMTUgKzM4LDEzIEBACiAjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4KICNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgotCisjaW5jbHVkZSA8bGludXgvZWxmLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGFyYW0uaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgogCi0jaW5jbHVkZSA8bGludXgvZWxmLmg+Ci0KLXN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwotc3RhdGljIGludCBsb2FkX2VsZl9saWJyYXJ5KHN0cnVjdCBmaWxlKik7CitzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitzdGF0aWMgaW50IGxvYWRfZWxmX2xpYnJhcnkoc3RydWN0IGZpbGUgKik7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBlbGZfbWFwIChzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgZWxmX3BoZHIgKiwgaW50LCBpbnQpOwogZXh0ZXJuIGludCBkdW1wX2ZwdSAoc3RydWN0IHB0X3JlZ3MgKiwgZWxmX2ZwcmVnc2V0X3QgKik7CiAKQEAgLTU5LDE1ICs1NywxNSBAQAogICogZG9uJ3QgZXZlbiB0cnkuCiAgKi8KICNpZiBkZWZpbmVkKFVTRV9FTEZfQ09SRV9EVU1QKSAmJiBkZWZpbmVkKENPTkZJR19FTEZfQ09SRSkKLXN0YXRpYyBpbnQgZWxmX2NvcmVfZHVtcChsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBmaWxlICogZmlsZSk7CitzdGF0aWMgaW50IGVsZl9jb3JlX2R1bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHN0cnVjdCBmaWxlICpmaWxlKTsKICNlbHNlCiAjZGVmaW5lIGVsZl9jb3JlX2R1bXAJTlVMTAogI2VuZGlmCiAKICNpZiBFTEZfRVhFQ19QQUdFU0laRSA+IFBBR0VfU0laRQotIyBkZWZpbmUgRUxGX01JTl9BTElHTglFTEZfRVhFQ19QQUdFU0laRQorI2RlZmluZSBFTEZfTUlOX0FMSUdOCUVMRl9FWEVDX1BBR0VTSVpFCiAjZWxzZQotIyBkZWZpbmUgRUxGX01JTl9BTElHTglQQUdFX1NJWkUKKyNkZWZpbmUgRUxGX01JTl9BTElHTglQQUdFX1NJWkUKICNlbmRpZgogCiAjaWZuZGVmIEVMRl9DT1JFX0VGTEFHUwpAQCAtODYsNyArODQsNyBAQAogCQkubWluX2NvcmVkdW1wCT0gRUxGX0VYRUNfUEFHRVNJWkUKIH07CiAKLSNkZWZpbmUgQkFEX0FERFIoeCkJKCh1bnNpZ25lZCBsb25nKSh4KSA+IFRBU0tfU0laRSkKKyNkZWZpbmUgQkFEX0FERFIoeCkgKCh1bnNpZ25lZCBsb25nKSh4KSA+IFRBU0tfU0laRSkKIAogc3RhdGljIGludCBzZXRfYnJrKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogewpAQCAtMTA0LDEzICsxMDIsMTEgQEAKIAlyZXR1cm4gMDsKIH0KIAotCiAvKiBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgemVybyBhbnkgZnJhY3Rpb25hbCBwYWdlcwogICAgYWZ0ZXIgdGhlIGRhdGEgc2VjdGlvbiAoaS5lLiBic3MpLiAgVGhpcyB3b3VsZAogICAgY29udGFpbiB0aGUganVuayBmcm9tIHRoZSBmaWxlIHRoYXQgc2hvdWxkIG5vdAotICAgYmUgaW4gbWVtb3J5ICovCi0KLQorICAgYmUgaW4gbWVtb3J5CisgKi8KIHN0YXRpYyBpbnQgcGFkemVybyh1bnNpZ25lZCBsb25nIGVsZl9ic3MpCiB7CiAJdW5zaWduZWQgbG9uZyBuYnl0ZTsKQEAgLTEyOSw3ICsxMjUsOSBAQAogI2RlZmluZSBTVEFDS19BREQoc3AsIGl0ZW1zKSAoKGVsZl9hZGRyX3QgX191c2VyICopKHNwKSArIChpdGVtcykpCiAjZGVmaW5lIFNUQUNLX1JPVU5EKHNwLCBpdGVtcykgXAogCSgoMTUgKyAodW5zaWduZWQgbG9uZykgKChzcCkgKyAoaXRlbXMpKSkgJn4gMTVVTCkKLSNkZWZpbmUgU1RBQ0tfQUxMT0Moc3AsIGxlbikgKHsgZWxmX2FkZHJfdCBfX3VzZXIgKm9sZF9zcCA9IChlbGZfYWRkcl90IF9fdXNlciAqKXNwOyBzcCArPSBsZW47IG9sZF9zcDsgfSkKKyNkZWZpbmUgU1RBQ0tfQUxMT0Moc3AsIGxlbikgKHsgXAorCWVsZl9hZGRyX3QgX191c2VyICpvbGRfc3AgPSAoZWxmX2FkZHJfdCBfX3VzZXIgKilzcDsgc3AgKz0gbGVuOyBcCisJb2xkX3NwOyB9KQogI2Vsc2UKICNkZWZpbmUgU1RBQ0tfQUREKHNwLCBpdGVtcykgKChlbGZfYWRkcl90IF9fdXNlciAqKShzcCkgLSAoaXRlbXMpKQogI2RlZmluZSBTVEFDS19ST1VORChzcCwgaXRlbXMpIFwKQEAgLTEzOCw3ICsxMzYsNyBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKLWNyZWF0ZV9lbGZfdGFibGVzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBlbGZoZHIgKiBleGVjLAorY3JlYXRlX2VsZl90YWJsZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgc3RydWN0IGVsZmhkciAqZXhlYywKIAkJaW50IGludGVycF9hb3V0LCB1bnNpZ25lZCBsb25nIGxvYWRfYWRkciwKIAkJdW5zaWduZWQgbG9uZyBpbnRlcnBfbG9hZF9hZGRyKQogewpAQCAtMTYxLDcgKzE1OSw2IEBACiAJICogZm9yIHVzZXJzcGFjZSB0byBnZXQgYW55IG90aGVyIHdheSwgaW4gb3RoZXJzIChpMzg2KSBpdCBpcwogCSAqIG1lcmVseSBkaWZmaWN1bHQuCiAJICovCi0KIAl1X3BsYXRmb3JtID0gTlVMTDsKIAlpZiAoa19wbGF0Zm9ybSkgewogCQlzaXplX3QgbGVuID0gc3RybGVuKGtfcGxhdGZvcm0pICsgMTsKQEAgLTE3MSw3ICsxNjgsNyBAQAogCQkgKiBldmljdGlvbnMgYnkgdGhlIHByb2Nlc3NlcyBydW5uaW5nIG9uIHRoZSBzYW1lIHBhY2thZ2UuIE9uZQogCQkgKiB0aGluZyB3ZSBjYW4gZG8gaXMgdG8gc2h1ZmZsZSB0aGUgaW5pdGlhbCBzdGFjayBmb3IgdGhlbS4KIAkJICovCi0JIAorCiAJCXAgPSBhcmNoX2FsaWduX3N0YWNrKHApOwogCiAJCXVfcGxhdGZvcm0gPSAoZWxmX2FkZHJfdCBfX3VzZXIgKilTVEFDS19BTExPQyhwLCBsZW4pOwpAQCAtMTgwLDkgKzE3NywxMiBAQAogCX0KIAogCS8qIENyZWF0ZSB0aGUgRUxGIGludGVycHJldGVyIGluZm8gKi8KLQllbGZfaW5mbyA9IChlbGZfYWRkcl90ICopIGN1cnJlbnQtPm1tLT5zYXZlZF9hdXh2OworCWVsZl9pbmZvID0gKGVsZl9hZGRyX3QgKiljdXJyZW50LT5tbS0+c2F2ZWRfYXV4djsKICNkZWZpbmUgTkVXX0FVWF9FTlQoaWQsIHZhbCkgXAotCWRvIHsgZWxmX2luZm9bZWlfaW5kZXgrK10gPSBpZDsgZWxmX2luZm9bZWlfaW5kZXgrK10gPSB2YWw7IH0gd2hpbGUgKDApCisJZG8geyBcCisJCWVsZl9pbmZvW2VpX2luZGV4KytdID0gaWQ7IFwKKwkJZWxmX2luZm9bZWlfaW5kZXgrK10gPSB2YWw7IFwKKwl9IHdoaWxlICgwKQogCiAjaWZkZWYgQVJDSF9ETElORk8KIAkvKiAKQEAgLTE5NSwyMSArMTk1LDIyIEBACiAJTkVXX0FVWF9FTlQoQVRfUEFHRVNaLCBFTEZfRVhFQ19QQUdFU0laRSk7CiAJTkVXX0FVWF9FTlQoQVRfQ0xLVENLLCBDTE9DS1NfUEVSX1NFQyk7CiAJTkVXX0FVWF9FTlQoQVRfUEhEUiwgbG9hZF9hZGRyICsgZXhlYy0+ZV9waG9mZik7Ci0JTkVXX0FVWF9FTlQoQVRfUEhFTlQsIHNpemVvZiAoc3RydWN0IGVsZl9waGRyKSk7CisJTkVXX0FVWF9FTlQoQVRfUEhFTlQsIHNpemVvZihzdHJ1Y3QgZWxmX3BoZHIpKTsKIAlORVdfQVVYX0VOVChBVF9QSE5VTSwgZXhlYy0+ZV9waG51bSk7CiAJTkVXX0FVWF9FTlQoQVRfQkFTRSwgaW50ZXJwX2xvYWRfYWRkcik7CiAJTkVXX0FVWF9FTlQoQVRfRkxBR1MsIDApOwogCU5FV19BVVhfRU5UKEFUX0VOVFJZLCBleGVjLT5lX2VudHJ5KTsKLQlORVdfQVVYX0VOVChBVF9VSUQsIChlbGZfYWRkcl90KSB0c2stPnVpZCk7Ci0JTkVXX0FVWF9FTlQoQVRfRVVJRCwgKGVsZl9hZGRyX3QpIHRzay0+ZXVpZCk7Ci0JTkVXX0FVWF9FTlQoQVRfR0lELCAoZWxmX2FkZHJfdCkgdHNrLT5naWQpOwotCU5FV19BVVhfRU5UKEFUX0VHSUQsIChlbGZfYWRkcl90KSB0c2stPmVnaWQpOwotIAlORVdfQVVYX0VOVChBVF9TRUNVUkUsIChlbGZfYWRkcl90KSBzZWN1cml0eV9icHJtX3NlY3VyZWV4ZWMoYnBybSkpOworCU5FV19BVVhfRU5UKEFUX1VJRCwgdHNrLT51aWQpOworCU5FV19BVVhfRU5UKEFUX0VVSUQsIHRzay0+ZXVpZCk7CisJTkVXX0FVWF9FTlQoQVRfR0lELCB0c2stPmdpZCk7CisJTkVXX0FVWF9FTlQoQVRfRUdJRCwgdHNrLT5lZ2lkKTsKKyAJTkVXX0FVWF9FTlQoQVRfU0VDVVJFLCBzZWN1cml0eV9icHJtX3NlY3VyZWV4ZWMoYnBybSkpOwogCWlmIChrX3BsYXRmb3JtKSB7Ci0JCU5FV19BVVhfRU5UKEFUX1BMQVRGT1JNLCAoZWxmX2FkZHJfdCkodW5zaWduZWQgbG9uZyl1X3BsYXRmb3JtKTsKKwkJTkVXX0FVWF9FTlQoQVRfUExBVEZPUk0sCisJCQkgICAgKGVsZl9hZGRyX3QpKHVuc2lnbmVkIGxvbmcpdV9wbGF0Zm9ybSk7CiAJfQogCWlmIChicHJtLT5pbnRlcnBfZmxhZ3MgJiBCSU5QUk1fRkxBR1NfRVhFQ0ZEKSB7Ci0JCU5FV19BVVhfRU5UKEFUX0VYRUNGRCwgKGVsZl9hZGRyX3QpIGJwcm0tPmludGVycF9kYXRhKTsKKwkJTkVXX0FVWF9FTlQoQVRfRVhFQ0ZELCBicHJtLT5pbnRlcnBfZGF0YSk7CiAJfQogI3VuZGVmIE5FV19BVVhfRU5UCiAJLyogQVRfTlVMTCBpcyB6ZXJvOyBjbGVhciB0aGUgcmVzdCB0b28gKi8KQEAgLTIzMiw3ICsyMzMsNyBAQAogCS8qIFBvaW50IHNwIGF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvbiB0aGUgc3RhY2sgKi8KICNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAogCXNwID0gKGVsZl9hZGRyX3QgX191c2VyICopYnBybS0+cCAtIGl0ZW1zIC0gZWlfaW5kZXg7Ci0JYnBybS0+ZXhlYyA9ICh1bnNpZ25lZCBsb25nKSBzcDsgLyogWFhYOiBQQVJJU0MgSEFDSyAqLworCWJwcm0tPmV4ZWMgPSAodW5zaWduZWQgbG9uZylzcDsgLyogWFhYOiBQQVJJU0MgSEFDSyAqLwogI2Vsc2UKIAlzcCA9IChlbGZfYWRkcl90IF9fdXNlciAqKWJwcm0tPnA7CiAjZW5kaWYKQEAgLTI4NSw3ICsyODYsNyBAQAogI2lmbmRlZiBlbGZfbWFwCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGVsZl9tYXAoc3RydWN0IGZpbGUgKmZpbGVwLCB1bnNpZ25lZCBsb25nIGFkZHIsCi0JCQlzdHJ1Y3QgZWxmX3BoZHIgKmVwcG50LCBpbnQgcHJvdCwgaW50IHR5cGUpCisJCXN0cnVjdCBlbGZfcGhkciAqZXBwbnQsIGludCBwcm90LCBpbnQgdHlwZSkKIHsKIAl1bnNpZ25lZCBsb25nIG1hcF9hZGRyOwogCXVuc2lnbmVkIGxvbmcgcGFnZW9mZnNldCA9IEVMRl9QQUdFT0ZGU0VUKGVwcG50LT5wX3ZhZGRyKTsKQEAgLTMxMCw5ICszMTEsOCBAQAogICAgaXMgb25seSBwcm92aWRlZCBzbyB0aGF0IHdlIGNhbiByZWFkIGEub3V0IGxpYnJhcmllcyB0aGF0IGhhdmUKICAgIGFuIEVMRiBoZWFkZXIgKi8KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZF9lbGZfaW50ZXJwKHN0cnVjdCBlbGZoZHIgKiBpbnRlcnBfZWxmX2V4LAotCQkJCSAgICAgc3RydWN0IGZpbGUgKiBpbnRlcnByZXRlciwKLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgKmludGVycF9sb2FkX2FkZHIpCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2FkX2VsZl9pbnRlcnAoc3RydWN0IGVsZmhkciAqaW50ZXJwX2VsZl9leCwKKwkJc3RydWN0IGZpbGUgKmludGVycHJldGVyLCB1bnNpZ25lZCBsb25nICppbnRlcnBfbG9hZF9hZGRyKQogewogCXN0cnVjdCBlbGZfcGhkciAqZWxmX3BoZGF0YTsKIAlzdHJ1Y3QgZWxmX3BoZHIgKmVwcG50OwpAQCAtMzQyLDE1ICszNDIsMTUgQEAKIAkJZ290byBvdXQ7CiAKIAkvKiBOb3cgcmVhZCBpbiBhbGwgb2YgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiAqLwotCiAJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZWxmX3BoZHIpICogaW50ZXJwX2VsZl9leC0+ZV9waG51bTsKIAlpZiAoc2l6ZSA+IEVMRl9NSU5fQUxJR04pCiAJCWdvdG8gb3V0OwotCWVsZl9waGRhdGEgPSAoc3RydWN0IGVsZl9waGRyICopIGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJZWxmX3BoZGF0YSA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFlbGZfcGhkYXRhKQogCQlnb3RvIG91dDsKIAotCXJldHZhbCA9IGtlcm5lbF9yZWFkKGludGVycHJldGVyLGludGVycF9lbGZfZXgtPmVfcGhvZmYsKGNoYXIgKillbGZfcGhkYXRhLHNpemUpOworCXJldHZhbCA9IGtlcm5lbF9yZWFkKGludGVycHJldGVyLCBpbnRlcnBfZWxmX2V4LT5lX3Bob2ZmLAorCQkJICAgICAoY2hhciAqKWVsZl9waGRhdGEsc2l6ZSk7CiAJZXJyb3IgPSAtRUlPOwogCWlmIChyZXR2YWwgIT0gc2l6ZSkgewogCQlpZiAocmV0dmFsIDwgMCkKQEAgLTM1OSw1OCArMzU5LDY1IEBACiAJfQogCiAJZXBwbnQgPSBlbGZfcGhkYXRhOwotCWZvciAoaT0wOyBpPGludGVycF9lbGZfZXgtPmVfcGhudW07IGkrKywgZXBwbnQrKykgewotCSAgaWYgKGVwcG50LT5wX3R5cGUgPT0gUFRfTE9BRCkgewotCSAgICBpbnQgZWxmX3R5cGUgPSBNQVBfUFJJVkFURSB8IE1BUF9ERU5ZV1JJVEU7Ci0JICAgIGludCBlbGZfcHJvdCA9IDA7Ci0JICAgIHVuc2lnbmVkIGxvbmcgdmFkZHIgPSAwOwotCSAgICB1bnNpZ25lZCBsb25nIGssIG1hcF9hZGRyOworCWZvciAoaSA9IDA7IGkgPCBpbnRlcnBfZWxmX2V4LT5lX3BobnVtOyBpKyssIGVwcG50KyspIHsKKwkJaWYgKGVwcG50LT5wX3R5cGUgPT0gUFRfTE9BRCkgeworCQkJaW50IGVsZl90eXBlID0gTUFQX1BSSVZBVEUgfCBNQVBfREVOWVdSSVRFOworCQkJaW50IGVsZl9wcm90ID0gMDsKKwkJCXVuc2lnbmVkIGxvbmcgdmFkZHIgPSAwOworCQkJdW5zaWduZWQgbG9uZyBrLCBtYXBfYWRkcjsKIAotCSAgICBpZiAoZXBwbnQtPnBfZmxhZ3MgJiBQRl9SKSBlbGZfcHJvdCA9ICBQUk9UX1JFQUQ7Ci0JICAgIGlmIChlcHBudC0+cF9mbGFncyAmIFBGX1cpIGVsZl9wcm90IHw9IFBST1RfV1JJVEU7Ci0JICAgIGlmIChlcHBudC0+cF9mbGFncyAmIFBGX1gpIGVsZl9wcm90IHw9IFBST1RfRVhFQzsKLQkgICAgdmFkZHIgPSBlcHBudC0+cF92YWRkcjsKLQkgICAgaWYgKGludGVycF9lbGZfZXgtPmVfdHlwZSA9PSBFVF9FWEVDIHx8IGxvYWRfYWRkcl9zZXQpCi0JICAgIAllbGZfdHlwZSB8PSBNQVBfRklYRUQ7CisJCQlpZiAoZXBwbnQtPnBfZmxhZ3MgJiBQRl9SKQorCQkgICAgCQllbGZfcHJvdCA9IFBST1RfUkVBRDsKKwkJCWlmIChlcHBudC0+cF9mbGFncyAmIFBGX1cpCisJCQkJZWxmX3Byb3QgfD0gUFJPVF9XUklURTsKKwkJCWlmIChlcHBudC0+cF9mbGFncyAmIFBGX1gpCisJCQkJZWxmX3Byb3QgfD0gUFJPVF9FWEVDOworCQkJdmFkZHIgPSBlcHBudC0+cF92YWRkcjsKKwkJCWlmIChpbnRlcnBfZWxmX2V4LT5lX3R5cGUgPT0gRVRfRVhFQyB8fCBsb2FkX2FkZHJfc2V0KQorCQkJCWVsZl90eXBlIHw9IE1BUF9GSVhFRDsKIAotCSAgICBtYXBfYWRkciA9IGVsZl9tYXAoaW50ZXJwcmV0ZXIsIGxvYWRfYWRkciArIHZhZGRyLCBlcHBudCwgZWxmX3Byb3QsIGVsZl90eXBlKTsKLQkgICAgZXJyb3IgPSBtYXBfYWRkcjsKLQkgICAgaWYgKEJBRF9BRERSKG1hcF9hZGRyKSkKLQkgICAgCWdvdG8gb3V0X2Nsb3NlOworCQkJbWFwX2FkZHIgPSBlbGZfbWFwKGludGVycHJldGVyLCBsb2FkX2FkZHIgKyB2YWRkciwKKwkJCQkJICAgZXBwbnQsIGVsZl9wcm90LCBlbGZfdHlwZSk7CisJCQllcnJvciA9IG1hcF9hZGRyOworCQkJaWYgKEJBRF9BRERSKG1hcF9hZGRyKSkKKwkJCQlnb3RvIG91dF9jbG9zZTsKIAotCSAgICBpZiAoIWxvYWRfYWRkcl9zZXQgJiYgaW50ZXJwX2VsZl9leC0+ZV90eXBlID09IEVUX0RZTikgewotCQlsb2FkX2FkZHIgPSBtYXBfYWRkciAtIEVMRl9QQUdFU1RBUlQodmFkZHIpOwotCQlsb2FkX2FkZHJfc2V0ID0gMTsKLQkgICAgfQorCQkJaWYgKCFsb2FkX2FkZHJfc2V0ICYmCisJCQkgICAgaW50ZXJwX2VsZl9leC0+ZV90eXBlID09IEVUX0RZTikgeworCQkJCWxvYWRfYWRkciA9IG1hcF9hZGRyIC0gRUxGX1BBR0VTVEFSVCh2YWRkcik7CisJCQkJbG9hZF9hZGRyX3NldCA9IDE7CisJCQl9CiAKLQkgICAgLyoKLQkgICAgICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBzZWN0aW9uJ3Mgc2l6ZSB3aWxsIG92ZXJmbG93IHRoZQotCSAgICAgKiBhbGxvd2VkIHRhc2sgc2l6ZS4gTm90ZSB0aGF0IHBfZmlsZXN6IG11c3QgYWx3YXlzIGJlCi0JICAgICAqIDw9IHBfbWVtc2l6ZSBzbyBpdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBjaGVjayBwX21lbXN6LgotCSAgICAgKi8KLQkgICAgayA9IGxvYWRfYWRkciArIGVwcG50LT5wX3ZhZGRyOwotCSAgICBpZiAoayA+IFRBU0tfU0laRSB8fCBlcHBudC0+cF9maWxlc3ogPiBlcHBudC0+cF9tZW1zeiB8fAotCQllcHBudC0+cF9tZW1zeiA+IFRBU0tfU0laRSB8fCBUQVNLX1NJWkUgLSBlcHBudC0+cF9tZW1zeiA8IGspIHsKLQkgICAgICAgIGVycm9yID0gLUVOT01FTTsKLQkJZ290byBvdXRfY2xvc2U7Ci0JICAgIH0KKwkJCS8qCisJCQkgKiBDaGVjayB0byBzZWUgaWYgdGhlIHNlY3Rpb24ncyBzaXplIHdpbGwgb3ZlcmZsb3cgdGhlCisJCQkgKiBhbGxvd2VkIHRhc2sgc2l6ZS4gTm90ZSB0aGF0IHBfZmlsZXN6IG11c3QgYWx3YXlzIGJlCisJCQkgKiA8PSBwX21lbXNpemUgc28gaXQncyBvbmx5IG5lY2Vzc2FyeSB0byBjaGVjayBwX21lbXN6LgorCQkJICovCisJCQlrID0gbG9hZF9hZGRyICsgZXBwbnQtPnBfdmFkZHI7CisJCQlpZiAoayA+IFRBU0tfU0laRSB8fAorCQkJICAgIGVwcG50LT5wX2ZpbGVzeiA+IGVwcG50LT5wX21lbXN6IHx8CisJCQkgICAgZXBwbnQtPnBfbWVtc3ogPiBUQVNLX1NJWkUgfHwKKwkJCSAgICBUQVNLX1NJWkUgLSBlcHBudC0+cF9tZW1zeiA8IGspIHsKKwkJCQllcnJvciA9IC1FTk9NRU07CisJCQkJZ290byBvdXRfY2xvc2U7CisJCQl9CiAKLQkgICAgLyoKLQkgICAgICogRmluZCB0aGUgZW5kIG9mIHRoZSBmaWxlIG1hcHBpbmcgZm9yIHRoaXMgcGhkciwgYW5kIGtlZXAKLQkgICAgICogdHJhY2sgb2YgdGhlIGxhcmdlc3QgYWRkcmVzcyB3ZSBzZWUgZm9yIHRoaXMuCi0JICAgICAqLwotCSAgICBrID0gbG9hZF9hZGRyICsgZXBwbnQtPnBfdmFkZHIgKyBlcHBudC0+cF9maWxlc3o7Ci0JICAgIGlmIChrID4gZWxmX2JzcykKLQkJZWxmX2JzcyA9IGs7CisJCQkvKgorCQkJICogRmluZCB0aGUgZW5kIG9mIHRoZSBmaWxlIG1hcHBpbmcgZm9yIHRoaXMgcGhkciwgYW5kCisJCQkgKiBrZWVwIHRyYWNrIG9mIHRoZSBsYXJnZXN0IGFkZHJlc3Mgd2Ugc2VlIGZvciB0aGlzLgorCQkJICovCisJCQlrID0gbG9hZF9hZGRyICsgZXBwbnQtPnBfdmFkZHIgKyBlcHBudC0+cF9maWxlc3o7CisJCQlpZiAoayA+IGVsZl9ic3MpCisJCQkJZWxmX2JzcyA9IGs7CiAKLQkgICAgLyoKLQkgICAgICogRG8gdGhlIHNhbWUgdGhpbmcgZm9yIHRoZSBtZW1vcnkgbWFwcGluZyAtIGJldHdlZW4KLQkgICAgICogZWxmX2JzcyBhbmQgbGFzdF9ic3MgaXMgdGhlIGJzcyBzZWN0aW9uLgotCSAgICAgKi8KLQkgICAgayA9IGxvYWRfYWRkciArIGVwcG50LT5wX21lbXN6ICsgZXBwbnQtPnBfdmFkZHI7Ci0JICAgIGlmIChrID4gbGFzdF9ic3MpCi0JCWxhc3RfYnNzID0gazsKLQkgIH0KKwkJCS8qCisJCQkgKiBEbyB0aGUgc2FtZSB0aGluZyBmb3IgdGhlIG1lbW9yeSBtYXBwaW5nIC0gYmV0d2VlbgorCQkJICogZWxmX2JzcyBhbmQgbGFzdF9ic3MgaXMgdGhlIGJzcyBzZWN0aW9uLgorCQkJICovCisJCQlrID0gbG9hZF9hZGRyICsgZXBwbnQtPnBfbWVtc3ogKyBlcHBudC0+cF92YWRkcjsKKwkJCWlmIChrID4gbGFzdF9ic3MpCisJCQkJbGFzdF9ic3MgPSBrOworCQl9CiAJfQogCiAJLyoKQEAgLTQyNCw3ICs0MzEsOCBAQAogCQlnb3RvIG91dF9jbG9zZTsKIAl9CiAKLQllbGZfYnNzID0gRUxGX1BBR0VTVEFSVChlbGZfYnNzICsgRUxGX01JTl9BTElHTiAtIDEpOwkvKiBXaGF0IHdlIGhhdmUgbWFwcGVkIHNvIGZhciAqLworCS8qIFdoYXQgd2UgaGF2ZSBtYXBwZWQgc28gZmFyICovCisJZWxmX2JzcyA9IEVMRl9QQUdFU1RBUlQoZWxmX2JzcyArIEVMRl9NSU5fQUxJR04gLSAxKTsKIAogCS8qIE1hcCB0aGUgbGFzdCBvZiB0aGUgYnNzIHNlZ21lbnQgKi8KIAlpZiAobGFzdF9ic3MgPiBlbGZfYnNzKSB7CkBAIC00MzYsNyArNDQ0LDcgQEAKIAl9CiAKIAkqaW50ZXJwX2xvYWRfYWRkciA9IGxvYWRfYWRkcjsKLQllcnJvciA9ICgodW5zaWduZWQgbG9uZykgaW50ZXJwX2VsZl9leC0+ZV9lbnRyeSkgKyBsb2FkX2FkZHI7CisJZXJyb3IgPSAoKHVuc2lnbmVkIGxvbmcpaW50ZXJwX2VsZl9leC0+ZV9lbnRyeSkgKyBsb2FkX2FkZHI7CiAKIG91dF9jbG9zZToKIAlrZnJlZShlbGZfcGhkYXRhKTsKQEAgLTQ0NCw4ICs0NTIsOCBAQAogCXJldHVybiBlcnJvcjsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9hZF9hb3V0X2ludGVycChzdHJ1Y3QgZXhlYyAqIGludGVycF9leCwKLQkJCSAgICAgc3RydWN0IGZpbGUgKiBpbnRlcnByZXRlcikKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvYWRfYW91dF9pbnRlcnAoc3RydWN0IGV4ZWMgKmludGVycF9leCwKKwkJc3RydWN0IGZpbGUgKmludGVycHJldGVyKQogewogCXVuc2lnbmVkIGxvbmcgdGV4dF9kYXRhLCBlbGZfZW50cnkgPSB+MFVMOwogCWNoYXIgX191c2VyICogYWRkcjsKQEAgLTQ2NCw3ICs0NzIsNyBAQAogCWNhc2UgWk1BR0lDOgogCWNhc2UgUU1BR0lDOgogCQlvZmZzZXQgPSBOX1RYVE9GRigqaW50ZXJwX2V4KTsKLQkJYWRkciA9IChjaGFyIF9fdXNlciAqKSBOX1RYVEFERFIoKmludGVycF9leCk7CisJCWFkZHIgPSAoY2hhciBfX3VzZXIgKilOX1RYVEFERFIoKmludGVycF9leCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWdvdG8gb3V0OwpAQCAtNDgwLDcgKzQ4OCw2IEBACiAJZmx1c2hfaWNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWFkZHIsCiAJICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWFkZHIgKyB0ZXh0X2RhdGEpOwogCi0KIAlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwkKIAlkb19icmsoRUxGX1BBR0VTVEFSVCh0ZXh0X2RhdGEgKyBFTEZfTUlOX0FMSUdOIC0gMSksCiAJCWludGVycF9leC0+YV9ic3MpOwpAQCAtNTE5LDcgKzUyNiw3IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0sIHN0cnVjdCBwdF9yZWdzICogcmVncykKK3N0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBmaWxlICppbnRlcnByZXRlciA9IE5VTEw7IC8qIHRvIHNodXQgZ2NjIHVwICovCiAgCXVuc2lnbmVkIGxvbmcgbG9hZF9hZGRyID0gMCwgbG9hZF9iaWFzID0gMDsKQEAgLTUyOCw3ICs1MzUsNyBAQAogCXVuc2lnbmVkIGludCBpbnRlcnByZXRlcl90eXBlID0gSU5URVJQUkVURVJfTk9ORTsKIAl1bnNpZ25lZCBjaGFyIGliY3MyX2ludGVycHJldGVyID0gMDsKIAl1bnNpZ25lZCBsb25nIGVycm9yOwotCXN0cnVjdCBlbGZfcGhkciAqIGVsZl9wcG50LCAqZWxmX3BoZGF0YTsKKwlzdHJ1Y3QgZWxmX3BoZHIgKmVsZl9wcG50LCAqZWxmX3BoZGF0YTsKIAl1bnNpZ25lZCBsb25nIGVsZl9ic3MsIGVsZl9icms7CiAJaW50IGVsZl9leGVjX2ZpbGVubzsKIAlpbnQgcmV0dmFsLCBpOwpAQCAtNTUzLDcgKzU2MCw3IEBACiAJfQogCQogCS8qIEdldCB0aGUgZXhlYy1oZWFkZXIgKi8KLQlsb2MtPmVsZl9leCA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS0+YnVmKTsKKwlsb2MtPmVsZl9leCA9ICooKHN0cnVjdCBlbGZoZHIgKilicHJtLT5idWYpOwogCiAJcmV0dmFsID0gLUVOT0VYRUM7CiAJLyogRmlyc3Qgb2YgYWxsLCBzb21lIHNpbXBsZSBjb25zaXN0ZW5jeSBjaGVja3MgKi8KQEAgLTU2OCw3ICs1NzUsNiBAQAogCQlnb3RvIG91dDsKIAogCS8qIE5vdyByZWFkIGluIGFsbCBvZiB0aGUgaGVhZGVyIGluZm9ybWF0aW9uICovCi0KIAlpZiAobG9jLT5lbGZfZXguZV9waGVudHNpemUgIT0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcikpCiAJCWdvdG8gb3V0OwogCWlmIChsb2MtPmVsZl9leC5lX3BobnVtIDwgMSB8fApAQCAtNTc2LDE4ICs1ODIsMTkgQEAKIAkJZ290byBvdXQ7CiAJc2l6ZSA9IGxvYy0+ZWxmX2V4LmVfcGhudW0gKiBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsKIAlyZXR2YWwgPSAtRU5PTUVNOwotCWVsZl9waGRhdGEgPSAoc3RydWN0IGVsZl9waGRyICopIGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJZWxmX3BoZGF0YSA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFlbGZfcGhkYXRhKQogCQlnb3RvIG91dDsKIAotCXJldHZhbCA9IGtlcm5lbF9yZWFkKGJwcm0tPmZpbGUsIGxvYy0+ZWxmX2V4LmVfcGhvZmYsIChjaGFyICopIGVsZl9waGRhdGEsIHNpemUpOworCXJldHZhbCA9IGtlcm5lbF9yZWFkKGJwcm0tPmZpbGUsIGxvYy0+ZWxmX2V4LmVfcGhvZmYsCisJCQkgICAgIChjaGFyICopZWxmX3BoZGF0YSwgc2l6ZSk7CiAJaWYgKHJldHZhbCAhPSBzaXplKSB7CiAJCWlmIChyZXR2YWwgPj0gMCkKIAkJCXJldHZhbCA9IC1FSU87CiAJCWdvdG8gb3V0X2ZyZWVfcGg7CiAJfQogCi0JZmlsZXMgPSBjdXJyZW50LT5maWxlczsJCS8qIFJlZmNvdW50ZWQgc28gb2sgKi8KKwlmaWxlcyA9IGN1cnJlbnQtPmZpbGVzOwkvKiBSZWZjb3VudGVkIHNvIG9rICovCiAJcmV0dmFsID0gdW5zaGFyZV9maWxlcygpOwogCWlmIChyZXR2YWwgPCAwKQogCQlnb3RvIG91dF9mcmVlX3BoOwpAQCAtNTk4LDcgKzYwNSw2IEBACiAKIAkvKiBleGVjIHdpbGwgbWFrZSBvdXIgZmlsZXMgcHJpdmF0ZSBhbnl3YXksIGJ1dCBmb3IgdGhlIGEub3V0CiAJICAgbG9hZGVyIHN0dWZmIHdlIG5lZWQgdG8gZG8gaXQgZWFybGllciAqLwotCiAJcmV0dmFsID0gZ2V0X3VudXNlZF9mZCgpOwogCWlmIChyZXR2YWwgPCAwKQogCQlnb3RvIG91dF9mcmVlX2ZoOwpAQCAtNjIwLDcgKzYyNiw2IEBACiAJCQkgKiBzaGFyZWQgbGlicmFyaWVzIC0gZm9yIG5vdyBhc3N1bWUgdGhhdCB0aGlzCiAJCQkgKiBpcyBhbiBhLm91dCBmb3JtYXQgYmluYXJ5CiAJCQkgKi8KLQogCQkJcmV0dmFsID0gLUVOT0VYRUM7CiAJCQlpZiAoZWxmX3BwbnQtPnBfZmlsZXN6ID4gUEFUSF9NQVggfHwgCiAJCQkgICAgZWxmX3BwbnQtPnBfZmlsZXN6IDwgMikKQEAgLTYyOCwxMyArNjMzLDEzIEBACiAKIAkJCXJldHZhbCA9IC1FTk9NRU07CiAJCQllbGZfaW50ZXJwcmV0ZXIgPSBrbWFsbG9jKGVsZl9wcG50LT5wX2ZpbGVzeiwKLQkJCQkJCQkgICBHRlBfS0VSTkVMKTsKKwkJCQkJCSAgR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIWVsZl9pbnRlcnByZXRlcikKIAkJCQlnb3RvIG91dF9mcmVlX2ZpbGU7CiAKIAkJCXJldHZhbCA9IGtlcm5lbF9yZWFkKGJwcm0tPmZpbGUsIGVsZl9wcG50LT5wX29mZnNldCwKLQkJCQkJICAgZWxmX2ludGVycHJldGVyLAotCQkJCQkgICBlbGZfcHBudC0+cF9maWxlc3opOworCQkJCQkgICAgIGVsZl9pbnRlcnByZXRlciwKKwkJCQkJICAgICBlbGZfcHBudC0+cF9maWxlc3opOwogCQkJaWYgKHJldHZhbCAhPSBlbGZfcHBudC0+cF9maWxlc3opIHsKIAkJCQlpZiAocmV0dmFsID49IDApCiAJCQkJCXJldHZhbCA9IC1FSU87CkBAIC02NzgsNyArNjgzLDggQEAKIAkJCXJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpOwogCQkJaWYgKElTX0VSUihpbnRlcnByZXRlcikpCiAJCQkJZ290byBvdXRfZnJlZV9pbnRlcnA7Ci0JCQlyZXR2YWwgPSBrZXJuZWxfcmVhZChpbnRlcnByZXRlciwgMCwgYnBybS0+YnVmLCBCSU5QUk1fQlVGX1NJWkUpOworCQkJcmV0dmFsID0ga2VybmVsX3JlYWQoaW50ZXJwcmV0ZXIsIDAsIGJwcm0tPmJ1ZiwKKwkJCQkJICAgICBCSU5QUk1fQlVGX1NJWkUpOwogCQkJaWYgKHJldHZhbCAhPSBCSU5QUk1fQlVGX1NJWkUpIHsKIAkJCQlpZiAocmV0dmFsID49IDApCiAJCQkJCXJldHZhbCA9IC1FSU87CkBAIC02ODYsOCArNjkyLDggQEAKIAkJCX0KIAogCQkJLyogR2V0IHRoZSBleGVjIGhlYWRlcnMgKi8KLQkJCWxvYy0+aW50ZXJwX2V4ID0gKigoc3RydWN0IGV4ZWMgKikgYnBybS0+YnVmKTsKLQkJCWxvYy0+aW50ZXJwX2VsZl9leCA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS0+YnVmKTsKKwkJCWxvYy0+aW50ZXJwX2V4ID0gKigoc3RydWN0IGV4ZWMgKilicHJtLT5idWYpOworCQkJbG9jLT5pbnRlcnBfZWxmX2V4ID0gKigoc3RydWN0IGVsZmhkciAqKWJwcm0tPmJ1Zik7CiAJCQlicmVhazsKIAkJfQogCQllbGZfcHBudCsrOwpAQCAtNzM5LDcgKzc0NSw2IEBACiAKIAkvKiBPSywgd2UgYXJlIGRvbmUgd2l0aCB0aGF0LCBub3cgc2V0IHVwIHRoZSBhcmcgc3R1ZmYsCiAJICAgYW5kIHRoZW4gc3RhcnQgdGhpcyBzdWNrZXIgdXAgKi8KLQogCWlmICgoIWJwcm0tPnNoX2JhbmcpICYmIChpbnRlcnByZXRlcl90eXBlID09IElOVEVSUFJFVEVSX0FPVVQpKSB7CiAJCWNoYXIgKnBhc3NlZF9wID0gcGFzc2VkX2ZpbGVubzsKIAkJc3ByaW50ZihwYXNzZWRfZmlsZW5vLCAiJWQiLCBlbGZfZXhlY19maWxlbm8pOwpAQCAtNzU5LDcgKzc2NCw2IEBACiAKIAkvKiBEaXNjYXJkIG91ciB1bm5lZWRlZCBvbGQgZmlsZXMgc3RydWN0ICovCiAJaWYgKGZpbGVzKSB7Ci0JCXN0ZWFsX2xvY2tzKGZpbGVzKTsKIAkJcHV0X2ZpbGVzX3N0cnVjdChmaWxlcyk7CiAJCWZpbGVzID0gTlVMTDsKIAl9CkBAIC03NzgsNyArNzgyLDcgQEAKIAlpZiAoZWxmX3JlYWRfaW1wbGllc19leGVjKGxvYy0+ZWxmX2V4LCBleGVjdXRhYmxlX3N0YWNrKSkKIAkJY3VycmVudC0+cGVyc29uYWxpdHkgfD0gUkVBRF9JTVBMSUVTX0VYRUM7CiAKLQlpZiAoICEoY3VycmVudC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkgJiYgcmFuZG9taXplX3ZhX3NwYWNlKQorCWlmICghKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92YV9zcGFjZSkKIAkJY3VycmVudC0+ZmxhZ3MgfD0gUEZfUkFORE9NSVpFOwogCWFyY2hfcGlja19tbWFwX2xheW91dChjdXJyZW50LT5tbSk7CiAKQEAgLTc5OSw4ICs4MDMsOCBAQAogCSAgIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGluIG1lbW9yeS4gIEF0IHRoaXMgcG9pbnQsIHdlIGFzc3VtZSB0aGF0CiAJICAgdGhlIGltYWdlIHNob3VsZCBiZSBsb2FkZWQgYXQgZml4ZWQgYWRkcmVzcywgbm90IGF0IGEgdmFyaWFibGUKIAkgICBhZGRyZXNzLiAqLwotCi0JZm9yKGkgPSAwLCBlbGZfcHBudCA9IGVsZl9waGRhdGE7IGkgPCBsb2MtPmVsZl9leC5lX3BobnVtOyBpKyssIGVsZl9wcG50KyspIHsKKwlmb3IoaSA9IDAsIGVsZl9wcG50ID0gZWxmX3BoZGF0YTsKKwkgICAgaSA8IGxvYy0+ZWxmX2V4LmVfcGhudW07IGkrKywgZWxmX3BwbnQrKykgewogCQlpbnQgZWxmX3Byb3QgPSAwLCBlbGZfZmxhZ3M7CiAJCXVuc2lnbmVkIGxvbmcgaywgdmFkZHI7CiAKQEAgLTgyOCwzMCArODMyLDM1IEBACiAJCQkJCQkJbG9hZF9iaWFzLCBuYnl0ZSkpIHsKIAkJCQkJLyoKIAkJCQkJICogVGhpcyBic3MtemVyb2luZyBjYW4gZmFpbCBpZiB0aGUgRUxGCi0JCQkJCSAqIGZpbGUgc3BlY2lmaWVzIG9kZCBwcm90ZWN0aW9ucy4gIFNvCisJCQkJCSAqIGZpbGUgc3BlY2lmaWVzIG9kZCBwcm90ZWN0aW9ucy4gU28KIAkJCQkJICogd2UgZG9uJ3QgY2hlY2sgdGhlIHJldHVybiB2YWx1ZQogCQkJCQkgKi8KIAkJCQl9CiAJCQl9CiAJCX0KIAotCQlpZiAoZWxmX3BwbnQtPnBfZmxhZ3MgJiBQRl9SKSBlbGZfcHJvdCB8PSBQUk9UX1JFQUQ7Ci0JCWlmIChlbGZfcHBudC0+cF9mbGFncyAmIFBGX1cpIGVsZl9wcm90IHw9IFBST1RfV1JJVEU7Ci0JCWlmIChlbGZfcHBudC0+cF9mbGFncyAmIFBGX1gpIGVsZl9wcm90IHw9IFBST1RfRVhFQzsKKwkJaWYgKGVsZl9wcG50LT5wX2ZsYWdzICYgUEZfUikKKwkJCWVsZl9wcm90IHw9IFBST1RfUkVBRDsKKwkJaWYgKGVsZl9wcG50LT5wX2ZsYWdzICYgUEZfVykKKwkJCWVsZl9wcm90IHw9IFBST1RfV1JJVEU7CisJCWlmIChlbGZfcHBudC0+cF9mbGFncyAmIFBGX1gpCisJCQllbGZfcHJvdCB8PSBQUk9UX0VYRUM7CiAKLQkJZWxmX2ZsYWdzID0gTUFQX1BSSVZBVEV8TUFQX0RFTllXUklURXxNQVBfRVhFQ1VUQUJMRTsKKwkJZWxmX2ZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfREVOWVdSSVRFIHwgTUFQX0VYRUNVVEFCTEU7CiAKIAkJdmFkZHIgPSBlbGZfcHBudC0+cF92YWRkcjsKIAkJaWYgKGxvYy0+ZWxmX2V4LmVfdHlwZSA9PSBFVF9FWEVDIHx8IGxvYWRfYWRkcl9zZXQpIHsKIAkJCWVsZl9mbGFncyB8PSBNQVBfRklYRUQ7CiAJCX0gZWxzZSBpZiAobG9jLT5lbGZfZXguZV90eXBlID09IEVUX0RZTikgewotCQkJLyogVHJ5IGFuZCBnZXQgZHluYW1pYyBwcm9ncmFtcyBvdXQgb2YgdGhlIHdheSBvZiB0aGUgZGVmYXVsdCBtbWFwCi0JCQkgICBiYXNlLCBhcyB3ZWxsIGFzIHdoYXRldmVyIHByb2dyYW0gdGhleSBtaWdodCB0cnkgdG8gZXhlYy4gIFRoaXMKLQkJCSAgIGlzIGJlY2F1c2UgdGhlIGJyayB3aWxsIGZvbGxvdyB0aGUgbG9hZGVyLCBhbmQgaXMgbm90IG1vdmFibGUuICAqLworCQkJLyogVHJ5IGFuZCBnZXQgZHluYW1pYyBwcm9ncmFtcyBvdXQgb2YgdGhlIHdheSBvZiB0aGUKKwkJCSAqIGRlZmF1bHQgbW1hcCBiYXNlLCBhcyB3ZWxsIGFzIHdoYXRldmVyIHByb2dyYW0gdGhleQorCQkJICogbWlnaHQgdHJ5IHRvIGV4ZWMuICBUaGlzIGlzIGJlY2F1c2UgdGhlIGJyayB3aWxsCisJCQkgKiBmb2xsb3cgdGhlIGxvYWRlciwgYW5kIGlzIG5vdCBtb3ZhYmxlLiAgKi8KIAkJCWxvYWRfYmlhcyA9IEVMRl9QQUdFU1RBUlQoRUxGX0VUX0RZTl9CQVNFIC0gdmFkZHIpOwogCQl9CiAKLQkJZXJyb3IgPSBlbGZfbWFwKGJwcm0tPmZpbGUsIGxvYWRfYmlhcyArIHZhZGRyLCBlbGZfcHBudCwgZWxmX3Byb3QsIGVsZl9mbGFncyk7CisJCWVycm9yID0gZWxmX21hcChicHJtLT5maWxlLCBsb2FkX2JpYXMgKyB2YWRkciwgZWxmX3BwbnQsCisJCQkJZWxmX3Byb3QsIGVsZl9mbGFncyk7CiAJCWlmIChCQURfQUREUihlcnJvcikpIHsKIAkJCXNlbmRfc2lnKFNJR0tJTEwsIGN1cnJlbnQsIDApOwogCQkJZ290byBvdXRfZnJlZV9kZW50cnk7CkBAIC04NjgsOCArODc3LDEwIEBACiAJCQl9CiAJCX0KIAkJayA9IGVsZl9wcG50LT5wX3ZhZGRyOwotCQlpZiAoayA8IHN0YXJ0X2NvZGUpIHN0YXJ0X2NvZGUgPSBrOwotCQlpZiAoc3RhcnRfZGF0YSA8IGspIHN0YXJ0X2RhdGEgPSBrOworCQlpZiAoayA8IHN0YXJ0X2NvZGUpCisJCQlzdGFydF9jb2RlID0gazsKKwkJaWYgKHN0YXJ0X2RhdGEgPCBrKQorCQkJc3RhcnRfZGF0YSA9IGs7CiAKIAkJLyoKIAkJICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBzZWN0aW9uJ3Mgc2l6ZSB3aWxsIG92ZXJmbG93IHRoZQpAQCAtODc5LDcgKzg5MCw3IEBACiAJCWlmIChrID4gVEFTS19TSVpFIHx8IGVsZl9wcG50LT5wX2ZpbGVzeiA+IGVsZl9wcG50LT5wX21lbXN6IHx8CiAJCSAgICBlbGZfcHBudC0+cF9tZW1zeiA+IFRBU0tfU0laRSB8fAogCQkgICAgVEFTS19TSVpFIC0gZWxmX3BwbnQtPnBfbWVtc3ogPCBrKSB7Ci0JCQkvKiBzZXRfYnJrIGNhbiBuZXZlciB3b3JrLiAgQXZvaWQgb3ZlcmZsb3dzLiAgKi8KKwkJCS8qIHNldF9icmsgY2FuIG5ldmVyIHdvcmsuIEF2b2lkIG92ZXJmbG93cy4gKi8KIAkJCXNlbmRfc2lnKFNJR0tJTEwsIGN1cnJlbnQsIDApOwogCQkJZ290byBvdXRfZnJlZV9kZW50cnk7CiAJCX0KQEAgLTk2Nyw4ICs5NzgsOSBAQAogCiAJY29tcHV0ZV9jcmVkcyhicHJtKTsKIAljdXJyZW50LT5mbGFncyAmPSB+UEZfRk9SS05PRVhFQzsKLQljcmVhdGVfZWxmX3RhYmxlcyhicHJtLCAmbG9jLT5lbGZfZXgsIChpbnRlcnByZXRlcl90eXBlID09IElOVEVSUFJFVEVSX0FPVVQpLAotCQkJbG9hZF9hZGRyLCBpbnRlcnBfbG9hZF9hZGRyKTsKKwljcmVhdGVfZWxmX3RhYmxlcyhicHJtLCAmbG9jLT5lbGZfZXgsCisJCQkgIChpbnRlcnByZXRlcl90eXBlID09IElOVEVSUFJFVEVSX0FPVVQpLAorCQkJICBsb2FkX2FkZHIsIGludGVycF9sb2FkX2FkZHIpOwogCS8qIE4uQi4gcGFzc2VkX2ZpbGVubyBtaWdodCBub3QgYmUgaW5pdGlhbGl6ZWQ/ICovCiAJaWYgKGludGVycHJldGVyX3R5cGUgPT0gSU5URVJQUkVURVJfQU9VVCkKIAkJY3VycmVudC0+bW0tPmFyZ19zdGFydCArPSBzdHJsZW4ocGFzc2VkX2ZpbGVubykgKyAxOwpAQCAtOTgyLDcgKzk5NCw3IEBACiAJCS8qIFdoeSB0aGlzLCB5b3UgYXNrPz8/ICBXZWxsIFNWcjQgbWFwcyBwYWdlIDAgYXMgcmVhZC1vbmx5LAogCQkgICBhbmQgc29tZSBhcHBsaWNhdGlvbnMgImRlcGVuZCIgdXBvbiB0aGlzIGJlaGF2aW9yLgogCQkgICBTaW5jZSB3ZSBkbyBub3QgaGF2ZSB0aGUgcG93ZXIgdG8gcmVjb21waWxlIHRoZXNlLCB3ZQotCQkgICBlbXVsYXRlIHRoZSBTVnI0IGJlaGF2aW9yLiAgU2lnaC4gICovCisJCSAgIGVtdWxhdGUgdGhlIFNWcjQgYmVoYXZpb3IuIFNpZ2guICovCiAJCWRvd25fd3JpdGUoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CiAJCWVycm9yID0gZG9fbW1hcChOVUxMLCAwLCBQQUdFX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfRVhFQywKIAkJCQlNQVBfRklYRUQgfCBNQVBfUFJJVkFURSwgMCk7CkBAIC0xMDM3LDcgKzEwNDksNiBAQAogCiAvKiBUaGlzIGlzIHJlYWxseSBzaW1wbGVtaW5kZWQgYW5kIHNwZWNpYWxpemVkIC0gd2UgYXJlIGxvYWRpbmcgYW4KICAgIGEub3V0IGxpYnJhcnkgdGhhdCBpcyBnaXZlbiBhbiBFTEYgaGVhZGVyLiAqLwotCiBzdGF0aWMgaW50IGxvYWRfZWxmX2xpYnJhcnkoc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGVsZl9waGRyICplbGZfcGhkYXRhOwpAQCAtMTA0Nyw3ICsxMDU4LDcgQEAKIAlzdHJ1Y3QgZWxmaGRyIGVsZl9leDsKIAogCWVycm9yID0gLUVOT0VYRUM7Ci0JcmV0dmFsID0ga2VybmVsX3JlYWQoZmlsZSwgMCwgKGNoYXIgKikgJmVsZl9leCwgc2l6ZW9mKGVsZl9leCkpOworCXJldHZhbCA9IGtlcm5lbF9yZWFkKGZpbGUsIDAsIChjaGFyICopJmVsZl9leCwgc2l6ZW9mKGVsZl9leCkpOwogCWlmIChyZXR2YWwgIT0gc2l6ZW9mKGVsZl9leCkpCiAJCWdvdG8gb3V0OwogCkBAIC0xMDU2LDcgKzEwNjcsNyBAQAogCiAJLyogRmlyc3Qgb2YgYWxsLCBzb21lIHNpbXBsZSBjb25zaXN0ZW5jeSBjaGVja3MgKi8KIAlpZiAoZWxmX2V4LmVfdHlwZSAhPSBFVF9FWEVDIHx8IGVsZl9leC5lX3BobnVtID4gMiB8fAotCSAgICFlbGZfY2hlY2tfYXJjaCgmZWxmX2V4KSB8fCAhZmlsZS0+Zl9vcCB8fCAhZmlsZS0+Zl9vcC0+bW1hcCkKKwkgICAgIWVsZl9jaGVja19hcmNoKCZlbGZfZXgpIHx8ICFmaWxlLT5mX29wIHx8ICFmaWxlLT5mX29wLT5tbWFwKQogCQlnb3RvIG91dDsKIAogCS8qIE5vdyByZWFkIGluIGFsbCBvZiB0aGUgaGVhZGVyIGluZm9ybWF0aW9uICovCkBAIC0xMTA0LDcgKzExMTUsOCBAQAogCQlnb3RvIG91dF9mcmVlX3BoOwogCX0KIAotCWxlbiA9IEVMRl9QQUdFU1RBUlQoZXBwbnQtPnBfZmlsZXN6ICsgZXBwbnQtPnBfdmFkZHIgKyBFTEZfTUlOX0FMSUdOIC0gMSk7CisJbGVuID0gRUxGX1BBR0VTVEFSVChlcHBudC0+cF9maWxlc3ogKyBlcHBudC0+cF92YWRkciArCisJCQkgICAgRUxGX01JTl9BTElHTiAtIDEpOwogCWJzcyA9IGVwcG50LT5wX21lbXN6ICsgZXBwbnQtPnBfdmFkZHI7CiAJaWYgKGJzcyA+IGxlbikgewogCQlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwpAQCAtMTE2Myw3ICsxMTc1LDcgQEAKIAlpZiAodm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1JFU0VSVkVEKSkKIAkJcmV0dXJuIDA7CiAKLQkvKiBEdW1wIHNoYXJlZCBtZW1vcnkgb25seSBpZiBtYXBwZWQgZnJvbSBhbiBhbm9ueW1vdXMgZmlsZS4gICovCisJLyogRHVtcCBzaGFyZWQgbWVtb3J5IG9ubHkgaWYgbWFwcGVkIGZyb20gYW4gYW5vbnltb3VzIGZpbGUuICovCiAJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9TSEFSRUQpCiAJCXJldHVybiB2bWEtPnZtX2ZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX25saW5rID09IDA7CiAKQEAgLTExNzQsNyArMTE4Niw3IEBACiAJcmV0dXJuIDE7CiB9CiAKLSNkZWZpbmUgcm91bmR1cCh4LCB5KSAgKCgoKHgpKygoeSktMSkpLyh5KSkqKHkpKQorI2RlZmluZSByb3VuZHVwKHgsIHkpICgoKCh4KSArICgoeSkgLSAxKSkgLyAoeSkpICogKHkpKQogCiAvKiBBbiBFTEYgbm90ZSBpbiBtZW1vcnkgKi8KIHN0cnVjdCBtZW1lbGZub3RlCkBAIC0xMjc3LDExICsxMjg5LDExIEBACiB9CiAKIC8qCi0gKiBmaWxsIHVwIGFsbCB0aGUgZmllbGRzIGluIHByc3RhdHVzIGZyb20gdGhlIGdpdmVuIHRhc2sgc3RydWN0LCBleGNlcHQgcmVnaXN0ZXJzCi0gKiB3aGljaCBuZWVkIHRvIGJlIGZpbGxlZCB1cCBzZXBhcmF0ZWx5LgorICogZmlsbCB1cCBhbGwgdGhlIGZpZWxkcyBpbiBwcnN0YXR1cyBmcm9tIHRoZSBnaXZlbiB0YXNrIHN0cnVjdCwgZXhjZXB0CisgKiByZWdpc3RlcnMgd2hpY2ggbmVlZCB0byBiZSBmaWxsZWQgdXAgc2VwYXJhdGVseS4KICAqLwogc3RhdGljIHZvaWQgZmlsbF9wcnN0YXR1cyhzdHJ1Y3QgZWxmX3Byc3RhdHVzICpwcnN0YXR1cywKLQkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgbG9uZyBzaWducikgCisJCXN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgbG9uZyBzaWducikKIHsKIAlwcnN0YXR1cy0+cHJfaW5mby5zaV9zaWdubyA9IHByc3RhdHVzLT5wcl9jdXJzaWcgPSBzaWducjsKIAlwcnN0YXR1cy0+cHJfc2lncGVuZCA9IHAtPnBlbmRpbmcuc2lnbmFsLnNpZ1swXTsKQEAgLTEzNjYsOCArMTM3OCw4IEBACiAKIC8qCiAgKiBJbiBvcmRlciB0byBhZGQgdGhlIHNwZWNpZmljIHRocmVhZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGVsZiBmaWxlIGZvcm1hdCwKLSAqIHdlIG5lZWQgdG8ga2VlcCBhIGxpbmtlZCBsaXN0IG9mIGV2ZXJ5IHRocmVhZHMgcHJfc3RhdHVzIGFuZCB0aGVuCi0gKiBjcmVhdGUgYSBzaW5nbGUgc2VjdGlvbiBmb3IgdGhlbSBpbiB0aGUgZmluYWwgY29yZSBmaWxlLgorICogd2UgbmVlZCB0byBrZWVwIGEgbGlua2VkIGxpc3Qgb2YgZXZlcnkgdGhyZWFkcyBwcl9zdGF0dXMgYW5kIHRoZW4gY3JlYXRlCisgKiBhIHNpbmdsZSBzZWN0aW9uIGZvciB0aGVtIGluIHRoZSBmaW5hbCBjb3JlIGZpbGUuCiAgKi8KIHN0YXRpYyBpbnQgZWxmX2R1bXBfdGhyZWFkX3N0YXR1cyhsb25nIHNpZ25yLCBzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMgKnQpCiB7CkBAIC0xMzc4LDE5ICsxMzkwLDIzIEBACiAJZmlsbF9wcnN0YXR1cygmdC0+cHJzdGF0dXMsIHAsIHNpZ25yKTsKIAllbGZfY29yZV9jb3B5X3Rhc2tfcmVncyhwLCAmdC0+cHJzdGF0dXMucHJfcmVnKTsJCiAJCi0JZmlsbF9ub3RlKCZ0LT5ub3Rlc1swXSwgIkNPUkUiLCBOVF9QUlNUQVRVUywgc2l6ZW9mKHQtPnByc3RhdHVzKSwgJih0LT5wcnN0YXR1cykpOworCWZpbGxfbm90ZSgmdC0+bm90ZXNbMF0sICJDT1JFIiwgTlRfUFJTVEFUVVMsIHNpemVvZih0LT5wcnN0YXR1cyksCisJCSAgJih0LT5wcnN0YXR1cykpOwogCXQtPm51bV9ub3RlcysrOwogCXN6ICs9IG5vdGVzaXplKCZ0LT5ub3Rlc1swXSk7CiAKLQlpZiAoKHQtPnByc3RhdHVzLnByX2ZwdmFsaWQgPSBlbGZfY29yZV9jb3B5X3Rhc2tfZnByZWdzKHAsIE5VTEwsICZ0LT5mcHUpKSkgewotCQlmaWxsX25vdGUoJnQtPm5vdGVzWzFdLCAiQ09SRSIsIE5UX1BSRlBSRUcsIHNpemVvZih0LT5mcHUpLCAmKHQtPmZwdSkpOworCWlmICgodC0+cHJzdGF0dXMucHJfZnB2YWxpZCA9IGVsZl9jb3JlX2NvcHlfdGFza19mcHJlZ3MocCwgTlVMTCwKKwkJCQkJCQkJJnQtPmZwdSkpKSB7CisJCWZpbGxfbm90ZSgmdC0+bm90ZXNbMV0sICJDT1JFIiwgTlRfUFJGUFJFRywgc2l6ZW9mKHQtPmZwdSksCisJCQkgICYodC0+ZnB1KSk7CiAJCXQtPm51bV9ub3RlcysrOwogCQlzeiArPSBub3Rlc2l6ZSgmdC0+bm90ZXNbMV0pOwogCX0KIAogI2lmZGVmIEVMRl9DT1JFX0NPUFlfWEZQUkVHUwogCWlmIChlbGZfY29yZV9jb3B5X3Rhc2tfeGZwcmVncyhwLCAmdC0+eGZwdSkpIHsKLQkJZmlsbF9ub3RlKCZ0LT5ub3Rlc1syXSwgIkxJTlVYIiwgTlRfUFJYRlBSRUcsIHNpemVvZih0LT54ZnB1KSwgJnQtPnhmcHUpOworCQlmaWxsX25vdGUoJnQtPm5vdGVzWzJdLCAiTElOVVgiLCBOVF9QUlhGUFJFRywgc2l6ZW9mKHQtPnhmcHUpLAorCQkJICAmdC0+eGZwdSk7CiAJCXQtPm51bV9ub3RlcysrOwogCQlzeiArPSBub3Rlc2l6ZSgmdC0+bm90ZXNbMl0pOwogCX0KQEAgLTE0MDUsNyArMTQyMSw3IEBACiAgKiBhbmQgdGhlbiB0aGV5IGFyZSBhY3R1YWxseSB3cml0dGVuIG91dC4gIElmIHdlIHJ1biBvdXQgb2YgY29yZSBsaW1pdAogICogd2UganVzdCB0cnVuY2F0ZS4KICAqLwotc3RhdGljIGludCBlbGZfY29yZV9kdW1wKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKQorc3RhdGljIGludCBlbGZfY29yZV9kdW1wKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKICNkZWZpbmUJTlVNX05PVEVTCTYKIAlpbnQgaGFzX2R1bXBlZCA9IDA7CkBAIC0xNDM0LDEyICsxNDUwLDEyIEBACiAJLyoKIAkgKiBXZSBubyBsb25nZXIgc3RvcCBhbGwgVk0gb3BlcmF0aW9ucy4KIAkgKiAKLQkgKiBUaGlzIGlzIGJlY2F1c2UgdGhvc2UgcHJvY2VzZXMgdGhhdCBjb3VsZCBwb3NzaWJseSBjaGFuZ2UgbWFwX2NvdW50IG9yCi0JICogdGhlIG1tYXAgLyB2bWEgcGFnZXMgYXJlIG5vdyBibG9ja2VkIGluIGRvX2V4aXQgb24gY3VycmVudCBmaW5pc2hpbmcKLQkgKiB0aGlzIGNvcmUgZHVtcC4KKwkgKiBUaGlzIGlzIGJlY2F1c2UgdGhvc2UgcHJvY2VzZXMgdGhhdCBjb3VsZCBwb3NzaWJseSBjaGFuZ2UgbWFwX2NvdW50CisJICogb3IgdGhlIG1tYXAgLyB2bWEgcGFnZXMgYXJlIG5vdyBibG9ja2VkIGluIGRvX2V4aXQgb24gY3VycmVudAorCSAqIGZpbmlzaGluZyB0aGlzIGNvcmUgZHVtcC4KIAkgKgogCSAqIE9ubHkgcHRyYWNlIGNhbiB0b3VjaCB0aGVzZSBtZW1vcnkgYWRkcmVzc2VzLCBidXQgaXQgZG9lc24ndCBjaGFuZ2UKLQkgKiB0aGUgbWFwX2NvdW50IG9yIHRoZSBwYWdlcyBhbGxvY2F0ZWQuICBTbyBubyBwb3NzaWJpbGl0eSBvZiBjcmFzaGluZworCSAqIHRoZSBtYXBfY291bnQgb3IgdGhlIHBhZ2VzIGFsbG9jYXRlZC4gU28gbm8gcG9zc2liaWxpdHkgb2YgY3Jhc2hpbmcKIAkgKiBleGlzdHMgd2hpbGUgZHVtcGluZyB0aGUgbW0tPnZtX25leHQgYXJlYXMgdG8gdGhlIGNvcmUgZmlsZS4KIAkgKi8KICAgCkBAIC0xNTAxLDcgKzE1MTcsNyBAQAogI2VuZGlmCiAKIAkvKiBTZXQgdXAgaGVhZGVyICovCi0JZmlsbF9lbGZfaGVhZGVyKGVsZiwgc2VncysxKTsJLyogaW5jbHVkaW5nIG5vdGVzIHNlY3Rpb24gKi8KKwlmaWxsX2VsZl9oZWFkZXIoZWxmLCBzZWdzICsgMSk7CS8qIGluY2x1ZGluZyBub3RlcyBzZWN0aW9uICovCiAKIAloYXNfZHVtcGVkID0gMTsKIAljdXJyZW50LT5mbGFncyB8PSBQRl9EVU1QQ09SRTsKQEAgLTE1MTEsMjQgKzE1MjcsMjQgQEAKIAkgKiB3aXRoIGluZm8gZnJvbSB0aGVpciAvcHJvYy4KIAkgKi8KIAotCWZpbGxfbm90ZShub3RlcyArMCwgIkNPUkUiLCBOVF9QUlNUQVRVUywgc2l6ZW9mKCpwcnN0YXR1cyksIHByc3RhdHVzKTsKLQkKKwlmaWxsX25vdGUobm90ZXMgKyAwLCAiQ09SRSIsIE5UX1BSU1RBVFVTLCBzaXplb2YoKnByc3RhdHVzKSwgcHJzdGF0dXMpOwogCWZpbGxfcHNpbmZvKHBzaW5mbywgY3VycmVudC0+Z3JvdXBfbGVhZGVyLCBjdXJyZW50LT5tbSk7Ci0JZmlsbF9ub3RlKG5vdGVzICsxLCAiQ09SRSIsIE5UX1BSUFNJTkZPLCBzaXplb2YoKnBzaW5mbyksIHBzaW5mbyk7CisJZmlsbF9ub3RlKG5vdGVzICsgMSwgIkNPUkUiLCBOVF9QUlBTSU5GTywgc2l6ZW9mKCpwc2luZm8pLCBwc2luZm8pOwogCQogCW51bW5vdGUgPSAyOwogCi0JYXV4diA9IChlbGZfYWRkcl90ICopIGN1cnJlbnQtPm1tLT5zYXZlZF9hdXh2OworCWF1eHYgPSAoZWxmX2FkZHJfdCAqKWN1cnJlbnQtPm1tLT5zYXZlZF9hdXh2OwogCiAJaSA9IDA7CiAJZG8KIAkJaSArPSAyOwogCXdoaWxlIChhdXh2W2kgLSAyXSAhPSBBVF9OVUxMKTsKIAlmaWxsX25vdGUoJm5vdGVzW251bW5vdGUrK10sICJDT1JFIiwgTlRfQVVYViwKLQkJICBpICogc2l6ZW9mIChlbGZfYWRkcl90KSwgYXV4dik7CisJCSAgaSAqIHNpemVvZihlbGZfYWRkcl90KSwgYXV4dik7CiAKICAgCS8qIFRyeSB0byBkdW1wIHRoZSBGUFUuICovCi0JaWYgKChwcnN0YXR1cy0+cHJfZnB2YWxpZCA9IGVsZl9jb3JlX2NvcHlfdGFza19mcHJlZ3MoY3VycmVudCwgcmVncywgZnB1KSkpCisJaWYgKChwcnN0YXR1cy0+cHJfZnB2YWxpZCA9CisJICAgICBlbGZfY29yZV9jb3B5X3Rhc2tfZnByZWdzKGN1cnJlbnQsIHJlZ3MsIGZwdSkpKQogCQlmaWxsX25vdGUobm90ZXMgKyBudW1ub3RlKyssCiAJCQkgICJDT1JFIiwgTlRfUFJGUFJFRywgc2l6ZW9mKCpmcHUpLCBmcHUpOwogI2lmZGVmIEVMRl9DT1JFX0NPUFlfWEZQUkVHUwpAQCAtMTU3Nyw4ICsxNTkzLDEwIEBACiAJCXBoZHIucF9tZW1zeiA9IHN6OwogCQlvZmZzZXQgKz0gcGhkci5wX2ZpbGVzejsKIAkJcGhkci5wX2ZsYWdzID0gdm1hLT52bV9mbGFncyAmIFZNX1JFQUQgPyBQRl9SIDogMDsKLQkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkgcGhkci5wX2ZsYWdzIHw9IFBGX1c7Ci0JCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fRVhFQykgcGhkci5wX2ZsYWdzIHw9IFBGX1g7CisJCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpCisJCQlwaGRyLnBfZmxhZ3MgfD0gUEZfVzsKKwkJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9FWEVDKQorCQkJcGhkci5wX2ZsYWdzIHw9IFBGX1g7CiAJCXBoZHIucF9hbGlnbiA9IEVMRl9FWEVDX1BBR0VTSVpFOwogCiAJCURVTVBfV1JJVEUoJnBoZHIsIHNpemVvZihwaGRyKSk7CkBAIC0xNTk1LDcgKzE2MTMsOSBAQAogCiAJLyogd3JpdGUgb3V0IHRoZSB0aHJlYWQgc3RhdHVzIG5vdGVzIHNlY3Rpb24gKi8KIAlsaXN0X2Zvcl9lYWNoKHQsICZ0aHJlYWRfbGlzdCkgewotCQlzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMgKnRtcCA9IGxpc3RfZW50cnkodCwgc3RydWN0IGVsZl90aHJlYWRfc3RhdHVzLCBsaXN0KTsKKwkJc3RydWN0IGVsZl90aHJlYWRfc3RhdHVzICp0bXAgPQorCQkJCWxpc3RfZW50cnkodCwgc3RydWN0IGVsZl90aHJlYWRfc3RhdHVzLCBsaXN0KTsKKwogCQlmb3IgKGkgPSAwOyBpIDwgdG1wLT5udW1fbm90ZXM7IGkrKykKIAkJCWlmICghd3JpdGVub3RlKCZ0bXAtPm5vdGVzW2ldLCBmaWxlKSkKIAkJCQlnb3RvIGVuZF9jb3JlZHVtcDsKQEAgLTE2MTIsMTggKzE2MzIsMTkgQEAKIAkJZm9yIChhZGRyID0gdm1hLT52bV9zdGFydDsKIAkJICAgICBhZGRyIDwgdm1hLT52bV9lbmQ7CiAJCSAgICAgYWRkciArPSBQQUdFX1NJWkUpIHsKLQkJCXN0cnVjdCBwYWdlKiBwYWdlOworCQkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKIAogCQkJaWYgKGdldF91c2VyX3BhZ2VzKGN1cnJlbnQsIGN1cnJlbnQtPm1tLCBhZGRyLCAxLCAwLCAxLAogCQkJCQkJJnBhZ2UsICZ2bWEpIDw9IDApIHsKLQkJCQlEVU1QX1NFRUsgKGZpbGUtPmZfcG9zICsgUEFHRV9TSVpFKTsKKwkJCQlEVU1QX1NFRUsoZmlsZS0+Zl9wb3MgKyBQQUdFX1NJWkUpOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAocGFnZSA9PSBaRVJPX1BBR0UoYWRkcikpIHsKLQkJCQkJRFVNUF9TRUVLIChmaWxlLT5mX3BvcyArIFBBR0VfU0laRSk7CisJCQkJCURVTVBfU0VFSyhmaWxlLT5mX3BvcyArIFBBR0VfU0laRSk7CiAJCQkJfSBlbHNlIHsKIAkJCQkJdm9pZCAqa2FkZHI7Ci0JCQkJCWZsdXNoX2NhY2hlX3BhZ2Uodm1hLCBhZGRyLCBwYWdlX3RvX3BmbihwYWdlKSk7CisJCQkJCWZsdXNoX2NhY2hlX3BhZ2Uodm1hLCBhZGRyLAorCQkJCQkJCSBwYWdlX3RvX3BmbihwYWdlKSk7CiAJCQkJCWthZGRyID0ga21hcChwYWdlKTsKIAkJCQkJaWYgKChzaXplICs9IFBBR0VfU0laRSkgPiBsaW1pdCB8fAogCQkJCQkgICAgIWR1bXBfd3JpdGUoZmlsZSwga2FkZHIsCkBAIC0xNjQ1LDcgKzE2NjYsOCBAQAogCiAJaWYgKChvZmZfdClmaWxlLT5mX3BvcyAhPSBvZmZzZXQpIHsKIAkJLyogU2FuaXR5IGNoZWNrICovCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgImVsZl9jb3JlX2R1bXA6IGZpbGUtPmZfcG9zICglbGQpICE9IG9mZnNldCAoJWxkKVxuIiwKKwkJcHJpbnRrKEtFUk5fV0FSTklORworCQkgICAgICAgImVsZl9jb3JlX2R1bXA6IGZpbGUtPmZfcG9zICglbGQpICE9IG9mZnNldCAoJWxkKVxuIiwKIAkJICAgICAgIChvZmZfdClmaWxlLT5mX3Bvcywgb2Zmc2V0KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwppbmRleCBhMmU0OGM5Li5lYmE0ZTIzIDEwMDY0NAotLS0gYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmMKKysrIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jCkBAIC00MzUsOSArNDM1LDEwIEBACiAJCQkJICAgc3RydWN0IGVsZl9mZHBpY19wYXJhbXMgKmludGVycF9wYXJhbXMpCiB7CiAJdW5zaWduZWQgbG9uZyBzcCwgY3NwLCBuaXRlbXM7Ci0JZWxmX2NhZGRyX3QgKmFyZ3YsICplbnZwOworCWVsZl9jYWRkcl90IF9fdXNlciAqYXJndiwgKmVudnA7CiAJc2l6ZV90IHBsYXRmb3JtX2xlbiA9IDAsIGxlbjsKLQljaGFyICprX3BsYXRmb3JtLCAqdV9wbGF0Zm9ybSwgKnA7CisJY2hhciAqa19wbGF0Zm9ybTsKKwljaGFyIF9fdXNlciAqdV9wbGF0Zm9ybSwgKnA7CiAJbG9uZyBod2NhcDsKIAlpbnQgbG9vcDsKIApAQCAtNDYyLDEyICs0NjMsMTEgQEAKIAlpZiAoa19wbGF0Zm9ybSkgewogCQlwbGF0Zm9ybV9sZW4gPSBzdHJsZW4oa19wbGF0Zm9ybSkgKyAxOwogCQlzcCAtPSBwbGF0Zm9ybV9sZW47CisJCXVfcGxhdGZvcm0gPSAoY2hhciBfX3VzZXIgKikgc3A7CiAJCWlmIChfX2NvcHlfdG9fdXNlcih1X3BsYXRmb3JtLCBrX3BsYXRmb3JtLCBwbGF0Zm9ybV9sZW4pICE9IDApCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAl9CiAKLQl1X3BsYXRmb3JtID0gKGNoYXIgKikgc3A7Ci0KICNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKENPTkZJR19TTVApCiAJLyogaW4gc29tZSBjYXNlcyAoZS5nLiBIeXBlci1UaHJlYWRpbmcpLCB3ZSB3YW50IHRvIGF2b2lkIEwxIGV2aWN0aW9ucwogCSAqIGJ5IHRoZSBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgc2FtZSBwYWNrYWdlLiBPbmUgdGhpbmcgd2UgY2FuIGRvCkBAIC00OTAsNyArNDkwLDcgQEAKIAlzcCA9IChzcCAtIGxlbikgJiB+N1VMOwogCWV4ZWNfcGFyYW1zLT5tYXBfYWRkciA9IHNwOwogCi0JaWYgKGNvcHlfdG9fdXNlcigodm9pZCAqKSBzcCwgZXhlY19wYXJhbXMtPmxvYWRtYXAsIGxlbikgIT0gMCkKKwlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKSBzcCwgZXhlY19wYXJhbXMtPmxvYWRtYXAsIGxlbikgIT0gMCkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKIAljdXJyZW50LT5tbS0+Y29udGV4dC5leGVjX2ZkcGljX2xvYWRtYXAgPSAodW5zaWduZWQgbG9uZykgc3A7CkBAIC01MDEsNyArNTAxLDcgQEAKIAkJc3AgPSAoc3AgLSBsZW4pICYgfjdVTDsKIAkJaW50ZXJwX3BhcmFtcy0+bWFwX2FkZHIgPSBzcDsKIAotCQlpZiAoY29weV90b191c2VyKCh2b2lkICopIHNwLCBpbnRlcnBfcGFyYW1zLT5sb2FkbWFwLCBsZW4pICE9IDApCisJCWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgX191c2VyICopIHNwLCBpbnRlcnBfcGFyYW1zLT5sb2FkbWFwLCBsZW4pICE9IDApCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAogCQljdXJyZW50LT5tbS0+Y29udGV4dC5pbnRlcnBfZmRwaWNfbG9hZG1hcCA9ICh1bnNpZ25lZCBsb25nKSBzcDsKQEAgLTUyNyw3ICs1MjcsNyBAQAogCS8qIHB1dCB0aGUgRUxGIGludGVycHJldGVyIGluZm8gb24gdGhlIHN0YWNrICovCiAjZGVmaW5lIE5FV19BVVhfRU5UKG5yLCBpZCwgdmFsKQkJCQkJCVwKIAlkbyB7CQkJCQkJCQkJXAotCQlzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIF9pZCwgX3ZhbDsgfSAqZW50ID0gKHZvaWQgKikgY3NwOwlcCisJCXN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgX2lkLCBfdmFsOyB9IF9fdXNlciAqZW50ID0gKHZvaWQgX191c2VyICopIGNzcDsJXAogCQlfX3B1dF91c2VyKChpZCksICZlbnRbbnJdLl9pZCk7CQkJCQlcCiAJCV9fcHV0X3VzZXIoKHZhbCksICZlbnRbbnJdLl92YWwpOwkJCQlcCiAJfSB3aGlsZSAoMCkKQEAgLTU2NCwxMyArNTY0LDEzIEBACiAKIAkvKiBhbGxvY2F0ZSByb29tIGZvciBhcmd2W10gYW5kIGVudnZbXSAqLwogCWNzcCAtPSAoYnBybS0+ZW52YyArIDEpICogc2l6ZW9mKGVsZl9jYWRkcl90KTsKLQllbnZwID0gKGVsZl9jYWRkcl90ICopIGNzcDsKKwllbnZwID0gKGVsZl9jYWRkcl90IF9fdXNlciAqKSBjc3A7CiAJY3NwIC09IChicHJtLT5hcmdjICsgMSkgKiBzaXplb2YoZWxmX2NhZGRyX3QpOwotCWFyZ3YgPSAoZWxmX2NhZGRyX3QgKikgY3NwOworCWFyZ3YgPSAoZWxmX2NhZGRyX3QgX191c2VyICopIGNzcDsKIAogCS8qIHN0YWNrIGFyZ2MgKi8KIAljc3AgLT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwotCV9fcHV0X3VzZXIoYnBybS0+YXJnYywgKHVuc2lnbmVkIGxvbmcgKikgY3NwKTsKKwlfX3B1dF91c2VyKGJwcm0tPmFyZ2MsICh1bnNpZ25lZCBsb25nIF9fdXNlciAqKSBjc3ApOwogCiAJQlVHX09OKGNzcCAhPSBzcCk7CiAKQEAgLTU4MSw3ICs1ODEsNyBAQAogCWN1cnJlbnQtPm1tLT5hcmdfc3RhcnQgPSBjdXJyZW50LT5tbS0+c3RhcnRfc3RhY2sgLSAoTUFYX0FSR19QQUdFUyAqIFBBR0VfU0laRSAtIGJwcm0tPnApOwogI2VuZGlmCiAKLQlwID0gKGNoYXIgKikgY3VycmVudC0+bW0tPmFyZ19zdGFydDsKKwlwID0gKGNoYXIgX191c2VyICopIGN1cnJlbnQtPm1tLT5hcmdfc3RhcnQ7CiAJZm9yIChsb29wID0gYnBybS0+YXJnYzsgbG9vcCA+IDA7IGxvb3AtLSkgewogCQlfX3B1dF91c2VyKChlbGZfY2FkZHJfdCkgcCwgYXJndisrKTsKIAkJbGVuID0gc3Rybmxlbl91c2VyKHAsIFBBR0VfU0laRSAqIE1BWF9BUkdfUEFHRVMpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAKIAkJLyogY2xlYXIgdGhlIGJpdCBiZXR3ZWVuIGJlZ2lubmluZyBvZiBtYXBwaW5nIGFuZCBiZWdpbm5pbmcgb2YgUFRfTE9BRCAqLwogCQlpZiAocHJvdCAmIFBST1RfV1JJVEUgJiYgZGlzcCA+IDApIHsKIAkJCWtkZWJ1ZygiY2xlYXJbJWRdIGFkPSVseCBzej0lbHgiLCBsb29wLCBtYWRkciwgZGlzcCk7Ci0JCQljbGVhcl91c2VyKCh2b2lkICopIG1hZGRyLCBkaXNwKTsKKwkJCWNsZWFyX3VzZXIoKHZvaWQgX191c2VyICopIG1hZGRyLCBkaXNwKTsKIAkJCW1hZGRyICs9IGRpc3A7CiAJCX0KIApAQCAtMTA1OSw3ICsxMDU5LDcgQEAKIAkJaWYgKHByb3QgJiBQUk9UX1dSSVRFICYmIGV4Y2VzczEgPiAwKSB7CiAJCQlrZGVidWcoImNsZWFyWyVkXSBhZD0lbHggc3o9JWx4IiwKIAkJCSAgICAgICBsb29wLCBtYWRkciArIHBoZHItPnBfZmlsZXN6LCBleGNlc3MxKTsKLQkJCWNsZWFyX3VzZXIoKHZvaWQgKikgbWFkZHIgKyBwaGRyLT5wX2ZpbGVzeiwgZXhjZXNzMSk7CisJCQljbGVhcl91c2VyKCh2b2lkIF9fdXNlciAqKSBtYWRkciArIHBoZHItPnBfZmlsZXN6LCBleGNlc3MxKTsKIAkJfQogCiAjZWxzZQpkaWZmIC0tZ2l0IGEvZnMvYmluZm10X21pc2MuYyBiL2ZzL2JpbmZtdF9taXNjLmMKaW5kZXggYzBhOTA5ZS4uMzRlYmJjMSAxMDA2NDQKLS0tIGEvZnMvYmluZm10X21pc2MuYworKysgYi9mcy9iaW5mbXRfbWlzYy5jCkBAIC0yMDQsNyArMjA0LDYgQEAKIAkJZ290byBfZXJyb3I7CiAKIAlpZiAoZmlsZXMpIHsKLQkJc3RlYWxfbG9ja3MoZmlsZXMpOwogCQlwdXRfZmlsZXNfc3RydWN0KGZpbGVzKTsKIAkJZmlsZXMgPSBOVUxMOwogCX0KQEAgLTc0MSwxMCArNzQwLDEwIEBACiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqYm1fZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGJtX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgYm1fZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGJtX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbGludXhfYmluZm10IG1pc2NfZm9ybWF0ID0gewpkaWZmIC0tZ2l0IGEvZnMvYmxvY2tfZGV2LmMgYi9mcy9ibG9ja19kZXYuYwppbmRleCBmNTk1OGY0Li4wMjhkOWZiIDEwMDY0NAotLS0gYS9mcy9ibG9ja19kZXYuYworKysgYi9mcy9ibG9ja19kZXYuYwpAQCAtMzAwLDEwICszMDAsMTAgQEAKIAkuY2xlYXJfaW5vZGUgPSBiZGV2X2NsZWFyX2lub2RlLAogfTsKIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqYmRfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGJkX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAiYmRldjoiLCAmYmRldl9zb3BzLCAweDYyNjQ2NTc2KTsKKwlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAiYmRldjoiLCAmYmRldl9zb3BzLCAweDYyNjQ2NTc2LCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgYmRfdHlwZSA9IHsKQEAgLTQxNCwyMSArNDE0LDMxIEBACiBzdGF0aWMgc3RydWN0IGJsb2NrX2RldmljZSAqYmRfYWNxdWlyZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQogewogCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXY7CisKIAlzcGluX2xvY2soJmJkZXZfbG9jayk7CiAJYmRldiA9IGlub2RlLT5pX2JkZXY7Ci0JaWYgKGJkZXYgJiYgaWdyYWIoYmRldi0+YmRfaW5vZGUpKSB7CisJaWYgKGJkZXYpIHsKKwkJYXRvbWljX2luYygmYmRldi0+YmRfaW5vZGUtPmlfY291bnQpOwogCQlzcGluX3VubG9jaygmYmRldl9sb2NrKTsKIAkJcmV0dXJuIGJkZXY7CiAJfQogCXNwaW5fdW5sb2NrKCZiZGV2X2xvY2spOworCiAJYmRldiA9IGJkZ2V0KGlub2RlLT5pX3JkZXYpOwogCWlmIChiZGV2KSB7CiAJCXNwaW5fbG9jaygmYmRldl9sb2NrKTsKLQkJaWYgKGlub2RlLT5pX2JkZXYpCi0JCQlfX2JkX2ZvcmdldChpbm9kZSk7Ci0JCWlub2RlLT5pX2JkZXYgPSBiZGV2OwotCQlpbm9kZS0+aV9tYXBwaW5nID0gYmRldi0+YmRfaW5vZGUtPmlfbWFwcGluZzsKLQkJbGlzdF9hZGQoJmlub2RlLT5pX2RldmljZXMsICZiZGV2LT5iZF9pbm9kZXMpOworCQlpZiAoIWlub2RlLT5pX2JkZXYpIHsKKwkJCS8qCisJCQkgKiBXZSB0YWtlIGFuIGFkZGl0aW9uYWwgYmRfaW5vZGUtPmlfY291bnQgZm9yIGlub2RlLAorCQkJICogYW5kIGl0J3MgcmVsZWFzZWQgaW4gY2xlYXJfaW5vZGUoKSBvZiBpbm9kZS4KKwkJCSAqIFNvLCB3ZSBjYW4gYWNjZXNzIGl0IHZpYSAtPmlfbWFwcGluZyBhbHdheXMKKwkJCSAqIHdpdGhvdXQgaWdyYWIoKS4KKwkJCSAqLworCQkJYXRvbWljX2luYygmYmRldi0+YmRfaW5vZGUtPmlfY291bnQpOworCQkJaW5vZGUtPmlfYmRldiA9IGJkZXY7CisJCQlpbm9kZS0+aV9tYXBwaW5nID0gYmRldi0+YmRfaW5vZGUtPmlfbWFwcGluZzsKKwkJCWxpc3RfYWRkKCZpbm9kZS0+aV9kZXZpY2VzLCAmYmRldi0+YmRfaW5vZGVzKTsKKwkJfQogCQlzcGluX3VubG9jaygmYmRldl9sb2NrKTsKIAl9CiAJcmV0dXJuIGJkZXY7CkBAIC00MzgsMTAgKzQ0OCwxOCBAQAogCiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKQogeworCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBOVUxMOworCiAJc3Bpbl9sb2NrKCZiZGV2X2xvY2spOwotCWlmIChpbm9kZS0+aV9iZGV2KQorCWlmIChpbm9kZS0+aV9iZGV2KSB7CisJCWlmIChpbm9kZS0+aV9zYiAhPSBibG9ja2Rldl9zdXBlcmJsb2NrKQorCQkJYmRldiA9IGlub2RlLT5pX2JkZXY7CiAJCV9fYmRfZm9yZ2V0KGlub2RlKTsKKwl9CiAJc3Bpbl91bmxvY2soJmJkZXZfbG9jayk7CisKKwlpZiAoYmRldikKKwkJaXB1dChiZGV2LT5iZF9pbm9kZSk7CiB9CiAKIGludCBiZF9jbGFpbShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCB2b2lkICpob2xkZXIpCmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jCmluZGV4IDIzZjFmM2EuLjM3M2JiNjIgMTAwNjQ0Ci0tLSBhL2ZzL2J1ZmZlci5jCisrKyBiL2ZzL2J1ZmZlci5jCkBAIC0zMzEsNyArMzMxLDYgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JY3VycmVudC0+ZmxhZ3MgfD0gUEZfU1lOQ1dSSVRFOwogCXJldCA9IGZpbGVtYXBfZmRhdGF3cml0ZShtYXBwaW5nKTsKIAogCS8qCkBAIC0zNDYsNyArMzQ1LDYgQEAKIAllcnIgPSBmaWxlbWFwX2ZkYXRhd2FpdChtYXBwaW5nKTsKIAlpZiAoIXJldCkKIAkJcmV0ID0gZXJyOwotCWN1cnJlbnQtPmZsYWdzICY9IH5QRl9TWU5DV1JJVEU7CiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2ZzLmMgYi9mcy9jaWZzL2NpZnNmcy5jCmluZGV4IDNmZGMyMjUuLjhiNGRlNmUgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2ZzLmMKKysrIGIvZnMvY2lmcy9jaWZzZnMuYwpAQCAtMTY2LDggKzE2Niw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNpZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitjaWZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKIAlpbnQgeGlkOyAKIAlpbnQgcmMgPSAtRU9QTk9UU1VQUDsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiOwpAQCAtNDYyLDkgKzQ2Myw5IEBACiAJLnJlbW91bnRfZnMgPSBjaWZzX3JlbW91bnQsCiB9OwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICoKK3N0YXRpYyBpbnQKIGNpZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCSAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorCSAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlpbnQgcmM7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IHNnZXQoZnNfdHlwZSwgTlVMTCwgc2V0X2Fub25fc3VwZXIsIE5VTEwpOwpAQCAtNDcyLDcgKzQ3Myw3IEBACiAJY0ZZSSgxLCAoIkRldm5hbWU6ICVzIGZsYWdzOiAlZCAiLCBkZXZfbmFtZSwgZmxhZ3MpKTsKIAogCWlmIChJU19FUlIoc2IpKQotCQlyZXR1cm4gc2I7CisJCXJldHVybiBQVFJfRVJSKHNiKTsKIAogCXNiLT5zX2ZsYWdzID0gZmxhZ3M7CiAKQEAgLTQ4MCwxMCArNDgxLDEwIEBACiAJaWYgKHJjKSB7CiAJCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOwogCQlkZWFjdGl2YXRlX3N1cGVyKHNiKTsKLQkJcmV0dXJuIEVSUl9QVFIocmMpOworCQlyZXR1cm4gcmM7CiAJfQogCXNiLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQlyZXR1cm4gc2I7CisJcmV0dXJuIHNpbXBsZV9zZXRfbW50KG1udCwgc2IpOwogfQogCiBzdGF0aWMgc3NpemVfdCBjaWZzX2ZpbGVfd3JpdGV2KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2ZzLmggYi9mcy9jaWZzL2NpZnNmcy5oCmluZGV4IGM5ODc1NWQuLmQ1NmMwNTcgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2ZzLmgKKysrIGIvZnMvY2lmcy9jaWZzZnMuaApAQCAtNzQsNyArNzQsNyBAQAogCQkJIHNpemVfdCB3cml0ZV9zaXplLCBsb2ZmX3QgKiBwb2Zmc2V0KTsKIGV4dGVybiBpbnQgY2lmc19sb2NrKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKIGV4dGVybiBpbnQgY2lmc19mc3luYyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7Ci1leHRlcm4gaW50IGNpZnNfZmx1c2goc3RydWN0IGZpbGUgKik7CitleHRlcm4gaW50IGNpZnNfZmx1c2goc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CiBleHRlcm4gaW50IGNpZnNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICogLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBjaWZzX2Rpcl9vcHM7CiBleHRlcm4gaW50IGNpZnNfZGlyX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9maWxlLmMgYi9mcy9jaWZzL2ZpbGUuYwppbmRleCBlMmI0Y2UxLi5iNGExOGMxIDEwMDY0NAotLS0gYS9mcy9jaWZzL2ZpbGUuYworKysgYi9mcy9jaWZzL2ZpbGUuYwpAQCAtMTA3OSw5ICsxMDc5LDkgQEAKIAl1bnNpZ25lZCBpbnQgYnl0ZXNfd3JpdHRlbjsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiOwogCWludCBkb25lID0gMDsKLQlwZ29mZl90IGVuZCA9IC0xOworCXBnb2ZmX3QgZW5kOwogCXBnb2ZmX3QgaW5kZXg7Ci0JaW50IGlzX3JhbmdlID0gMDsKKyAJaW50IHJhbmdlX3dob2xlID0gMDsKIAlzdHJ1Y3Qga3ZlYyBpb3ZbMzJdOwogCWludCBsZW47CiAJaW50IG5faW92ID0gMDsKQEAgLTExMjIsMTYgKzExMjIsMTQgQEAKIAl4aWQgPSBHZXRYaWQoKTsKIAogCXBhZ2V2ZWNfaW5pdCgmcHZlYywgMCk7Ci0JaWYgKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfTk9ORSkKKwlpZiAod2JjLT5yYW5nZV9jeWNsaWMpIHsKIAkJaW5kZXggPSBtYXBwaW5nLT53cml0ZWJhY2tfaW5kZXg7IC8qIFN0YXJ0IGZyb20gcHJldiBvZmZzZXQgKi8KLQllbHNlIHsKLQkJaW5kZXggPSAwOwotCQlzY2FubmVkID0gMTsKLQl9Ci0JaWYgKHdiYy0+c3RhcnQgfHwgd2JjLT5lbmQpIHsKLQkJaW5kZXggPSB3YmMtPnN0YXJ0ID4+IFBBR0VfQ0FDSEVfU0hJRlQ7Ci0JCWVuZCA9IHdiYy0+ZW5kID4+IFBBR0VfQ0FDSEVfU0hJRlQ7Ci0JCWlzX3JhbmdlID0gMTsKKwkJZW5kID0gLTE7CisJfSBlbHNlIHsKKwkJaW5kZXggPSB3YmMtPnJhbmdlX3N0YXJ0ID4+IFBBR0VfQ0FDSEVfU0hJRlQ7CisJCWVuZCA9IHdiYy0+cmFuZ2VfZW5kID4+IFBBR0VfQ0FDSEVfU0hJRlQ7CisJCWlmICh3YmMtPnJhbmdlX3N0YXJ0ID09IDAgJiYgd2JjLT5yYW5nZV9lbmQgPT0gTExPTkdfTUFYKQorCQkJcmFuZ2Vfd2hvbGUgPSAxOwogCQlzY2FubmVkID0gMTsKIAl9CiByZXRyeToKQEAgLTExNjcsNyArMTE2NSw3IEBACiAJCQkJYnJlYWs7CiAJCQl9CiAKLQkJCWlmICh1bmxpa2VseShpc19yYW5nZSkgJiYgKHBhZ2UtPmluZGV4ID4gZW5kKSkgeworCQkJaWYgKCF3YmMtPnJhbmdlX2N5Y2xpYyAmJiBwYWdlLT5pbmRleCA+IGVuZCkgewogCQkJCWRvbmUgPSAxOwogCQkJCXVubG9ja19wYWdlKHBhZ2UpOwogCQkJCWJyZWFrOwpAQCAtMTI3MSw3ICsxMjY5LDcgQEAKIAkJaW5kZXggPSAwOwogCQlnb3RvIHJldHJ5OwogCX0KLQlpZiAoIWlzX3JhbmdlKQorCWlmICh3YmMtPnJhbmdlX2N5Y2xpYyB8fCAocmFuZ2Vfd2hvbGUgJiYgd2JjLT5ucl90b193cml0ZSA+IDApKQogCQltYXBwaW5nLT53cml0ZWJhY2tfaW5kZXggPSBpbmRleDsKIAogCUZyZWVYaWQoeGlkKTsKQEAgLTE0MTksNyArMTQxNyw3IEBACiAgKiBBcyBmaWxlIGNsb3NlcywgZmx1c2ggYWxsIGNhY2hlZCB3cml0ZSBkYXRhIGZvciB0aGlzIGlub2RlIGNoZWNraW5nCiAgKiBmb3Igd3JpdGUgYmVoaW5kIGVycm9ycy4KICAqLwotaW50IGNpZnNfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUpCitpbnQgY2lmc19mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZCkKIHsKIAlzdHJ1Y3QgaW5vZGUgKiBpbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOwogCWludCByYyA9IDA7CmRpZmYgLS1naXQgYS9mcy9jb2RhL2ZpbGUuYyBiL2ZzL2NvZGEvZmlsZS5jCmluZGV4IDdjMjY0MjQuLmNjNjZjNjggMTAwNjQ0Ci0tLSBhL2ZzL2NvZGEvZmlsZS5jCisrKyBiL2ZzL2NvZGEvZmlsZS5jCkBAIC0xNjQsNyArMTY0LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IGNvZGFfZmx1c2goc3RydWN0IGZpbGUgKmNvZGFfZmlsZSkKK2ludCBjb2RhX2ZsdXNoKHN0cnVjdCBmaWxlICpjb2RhX2ZpbGUsIGZsX293bmVyX3QgaWQpCiB7CiAJdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSBjb2RhX2ZpbGUtPmZfZmxhZ3MgJiB+T19FWENMOwogCXVuc2lnbmVkIHNob3J0IGNvZGFfZmxhZ3MgPSBjb2RhX2ZsYWdzX3RvX2NmbGFncyhmbGFncyk7CmRpZmYgLS1naXQgYS9mcy9jb2RhL2lub2RlLmMgYi9mcy9jb2RhL2lub2RlLmMKaW5kZXggYWRhMWE4MS4uODdmMWRjOCAxMDA2NDQKLS0tIGEvZnMvY29kYS9pbm9kZS5jCisrKyBiL2ZzL2NvZGEvaW5vZGUuYwpAQCAtMzYsNyArMzYsNyBAQAogLyogVkZTIHN1cGVyX2Jsb2NrIG9wcyAqLwogc3RhdGljIHZvaWQgY29kYV9jbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CiBzdGF0aWMgdm9pZCBjb2RhX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci1zdGF0aWMgaW50IGNvZGFfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpOworc3RhdGljIGludCBjb2RhX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpOwogCiBzdGF0aWMga21lbV9jYWNoZV90ICogY29kYV9pbm9kZV9jYWNoZXA7CiAKQEAgLTI3OCwxMyArMjc4LDEzIEBACiAJLnNldGF0dHIJPSBjb2RhX3NldGF0dHIsCiB9OwogCi1zdGF0aWMgaW50IGNvZGFfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGNvZGFfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKIAlpbnQgZXJyb3I7CiAJCiAJbG9ja19rZXJuZWwoKTsKIAotCWVycm9yID0gdmVudXNfc3RhdGZzKHNiLCBidWYpOworCWVycm9yID0gdmVudXNfc3RhdGZzKGRlbnRyeSwgYnVmKTsKIAogCXVubG9ja19rZXJuZWwoKTsKIApAQCAtMzA3LDEwICszMDcsMTAgQEAKIAogLyogaW5pdF9jb2RhOiB1c2VkIGJ5IGZpbGVzeXN0ZW1zLmMgdG8gcmVnaXN0ZXIgY29kYSAqLwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpjb2RhX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBjb2RhX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBjb2RhX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGNvZGFfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgY29kYV9mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvY29kYS91cGNhbGwuYyBiL2ZzL2NvZGEvdXBjYWxsLmMKaW5kZXggMWJhZTk5Ni4uYjA0MGViYSAxMDA2NDQKLS0tIGEvZnMvY29kYS91cGNhbGwuYworKysgYi9mcy9jb2RhL3VwY2FsbC5jCkBAIC02MTEsNyArNjExLDcgQEAKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2ZW51c19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKnNmcykgCitpbnQgdmVudXNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKnNmcykKIHsgCiAgICAgICAgIHVuaW9uIGlucHV0QXJncyAqaW5wOwogICAgICAgICB1bmlvbiBvdXRwdXRBcmdzICpvdXRwOwpAQCAtNjIwLDcgKzYyMCw3IEBACiAJaW5zaXplID0gbWF4X3QodW5zaWduZWQgaW50LCBJTlNJWkUoc3RhdGZzKSwgT1VUU0laRShzdGF0ZnMpKTsKIAlVUEFSRyhDT0RBX1NUQVRGUyk7CiAKLSAgICAgICAgZXJyb3IgPSBjb2RhX3VwY2FsbChjb2RhX3NicChzYiksIGluc2l6ZSwgJm91dHNpemUsIGlucCk7CisgICAgICAgIGVycm9yID0gY29kYV91cGNhbGwoY29kYV9zYnAoZGVudHJ5LT5kX3NiKSwgaW5zaXplLCAmb3V0c2l6ZSwgaW5wKTsKIAkKICAgICAgICAgaWYgKCFlcnJvcikgewogCQlzZnMtPmZfYmxvY2tzID0gb3V0cC0+Y29kYV9zdGF0ZnMuc3RhdC5mX2Jsb2NrczsKZGlmZiAtLWdpdCBhL2ZzL2NvbXBhdC5jIGIvZnMvY29tcGF0LmMKaW5kZXggYjFmNjQ3OC4uN2U3ZTViYyAxMDA2NDQKLS0tIGEvZnMvY29tcGF0LmMKKysrIGIvZnMvY29tcGF0LmMKQEAgLTE5Nyw3ICsxOTcsNyBAQAogCWVycm9yID0gdXNlcl9wYXRoX3dhbGsocGF0aCwgJm5kKTsKIAlpZiAoIWVycm9yKSB7CiAJCXN0cnVjdCBrc3RhdGZzIHRtcDsKLQkJZXJyb3IgPSB2ZnNfc3RhdGZzKG5kLmRlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnRtcCk7CisJCWVycm9yID0gdmZzX3N0YXRmcyhuZC5kZW50cnksICZ0bXApOwogCQlpZiAoIWVycm9yKQogCQkJZXJyb3IgPSBwdXRfY29tcGF0X3N0YXRmcyhidWYsICZ0bXApOwogCQlwYXRoX3JlbGVhc2UoJm5kKTsKQEAgLTIxNSw3ICsyMTUsNyBAQAogCWZpbGUgPSBmZ2V0KGZkKTsKIAlpZiAoIWZpbGUpCiAJCWdvdG8gb3V0OwotCWVycm9yID0gdmZzX3N0YXRmcyhmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnRtcCk7CisJZXJyb3IgPSB2ZnNfc3RhdGZzKGZpbGUtPmZfZGVudHJ5LCAmdG1wKTsKIAlpZiAoIWVycm9yKQogCQllcnJvciA9IHB1dF9jb21wYXRfc3RhdGZzKGJ1ZiwgJnRtcCk7CiAJZnB1dChmaWxlKTsKQEAgLTI2NSw3ICsyNjUsNyBAQAogCWVycm9yID0gdXNlcl9wYXRoX3dhbGsocGF0aCwgJm5kKTsKIAlpZiAoIWVycm9yKSB7CiAJCXN0cnVjdCBrc3RhdGZzIHRtcDsKLQkJZXJyb3IgPSB2ZnNfc3RhdGZzKG5kLmRlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnRtcCk7CisJCWVycm9yID0gdmZzX3N0YXRmcyhuZC5kZW50cnksICZ0bXApOwogCQlpZiAoIWVycm9yKQogCQkJZXJyb3IgPSBwdXRfY29tcGF0X3N0YXRmczY0KGJ1ZiwgJnRtcCk7CiAJCXBhdGhfcmVsZWFzZSgmbmQpOwpAQCAtMjg2LDcgKzI4Niw3IEBACiAJZmlsZSA9IGZnZXQoZmQpOwogCWlmICghZmlsZSkKIAkJZ290byBvdXQ7Ci0JZXJyb3IgPSB2ZnNfc3RhdGZzKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3NiLCAmdG1wKTsKKwllcnJvciA9IHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnksICZ0bXApOwogCWlmICghZXJyb3IpCiAJCWVycm9yID0gcHV0X2NvbXBhdF9zdGF0ZnM2NChidWYsICZ0bXApOwogCWZwdXQoZmlsZSk7CmRpZmYgLS1naXQgYS9mcy9jb25maWdmcy9tb3VudC5jIGIvZnMvY29uZmlnZnMvbW91bnQuYwppbmRleCBiZTVkODZhLi4zZTVmZTg0IDEwMDY0NAotLS0gYS9mcy9jb25maWdmcy9tb3VudC5jCisrKyBiL2ZzL2NvbmZpZ2ZzL21vdW50LmMKQEAgLTEwMywxMCArMTAzLDEwIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmNvbmZpZ2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBjb25maWdmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGNvbmZpZ2ZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBjb25maWdmc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgY29uZmlnZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2NyYW1mcy9pbm9kZS5jIGIvZnMvY3JhbWZzL2lub2RlLmMKaW5kZXggOWVmY2MzYS4uYzQ1ZDczOCAxMDA2NDQKLS0tIGEvZnMvY3JhbWZzL2lub2RlLmMKKysrIGIvZnMvY3JhbWZzL2lub2RlLmMKQEAgLTE4MSw5ICsxODEsNyBAQAogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiAKIAkJaWYgKGJsb2NrbnIgKyBpIDwgZGV2c2l6ZSkgewotCQkJcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBibG9ja25yICsgaSwKLQkJCQkoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsCi0JCQkJTlVMTCk7CisJCQlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgYmxvY2tuciArIGksIE5VTEwpOwogCQkJLyogc3luY2hyb25vdXMgZXJyb3I/ICovCiAJCQlpZiAoSVNfRVJSKHBhZ2UpKQogCQkJCXBhZ2UgPSBOVUxMOwpAQCAtMzIyLDggKzMyMCwxMCBAQAogCXJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMgaW50IGNyYW1mc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgY3JhbWZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKKwogCWJ1Zi0+Zl90eXBlID0gQ1JBTUZTX01BR0lDOwogCWJ1Zi0+Zl9ic2l6ZSA9IFBBR0VfQ0FDSEVfU0laRTsKIAlidWYtPmZfYmxvY2tzID0gQ1JBTUZTX1NCKHNiKS0+YmxvY2tzOwpAQCAtNTI4LDEwICs1MjgsMTEgQEAKIAkuc3RhdGZzCQk9IGNyYW1mc19zdGF0ZnMsCiB9OwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpjcmFtZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGNyYW1mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgY3JhbWZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGNyYW1mc19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGNyYW1mc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvZGNhY2hlLmMgYi9mcy9kY2FjaGUuYwppbmRleCA5NDBkMTg4Li4zMTNiNTRiIDEwMDY0NAotLS0gYS9mcy9kY2FjaGUuYworKysgYi9mcy9kY2FjaGUuYwpAQCAtMzU5LDEyICszNTksMTMgQEAKIH0KIAogLyoKLSAqIFRocm93IGF3YXkgYSBkZW50cnkgLSBmcmVlIHRoZSBpbm9kZSwgZHB1dCB0aGUgcGFyZW50LgotICogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBMUlUgbGlzdCBoYXMgYWxyZWFkeSBiZWVuCi0gKiByZW1vdmVkLgorICogVGhyb3cgYXdheSBhIGRlbnRyeSAtIGZyZWUgdGhlIGlub2RlLCBkcHV0IHRoZSBwYXJlbnQuICBUaGlzIHJlcXVpcmVzIHRoYXQKKyAqIHRoZSBMUlUgbGlzdCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuCisgKgogICogQ2FsbGVkIHdpdGggZGNhY2hlX2xvY2ssIGRyb3BzIGl0IGFuZCB0aGVuIHJlZ2FpbnMuCisgKiBDYWxsZWQgd2l0aCBkZW50cnktPmRfbG9jayBoZWxkLCBkcm9wcyBpdC4KICAqLwotc3RhdGljIGlubGluZSB2b2lkIHBydW5lX29uZV9kZW50cnkoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKK3N0YXRpYyB2b2lkIHBydW5lX29uZV9kZW50cnkoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICogcGFyZW50OwogCkBAIC0zODIsNiArMzgzLDggQEAKIC8qKgogICogcHJ1bmVfZGNhY2hlIC0gc2hyaW5rIHRoZSBkY2FjaGUKICAqIEBjb3VudDogbnVtYmVyIG9mIGVudHJpZXMgdG8gdHJ5IGFuZCBmcmVlCisgKiBAc2I6IGlmIGdpdmVuLCBpZ25vcmUgZGVudHJpZXMgZm9yIG90aGVyIHN1cGVyYmxvY2tzCisgKiAgICAgICAgIHdoaWNoIGFyZSBiZWluZyB1bm1vdW50ZWQuCiAgKgogICogU2hyaW5rIHRoZSBkY2FjaGUuIFRoaXMgaXMgZG9uZSB3aGVuIHdlIG5lZWQKICAqIG1vcmUgbWVtb3J5LCBvciBzaW1wbHkgd2hlbiB3ZSBuZWVkIHRvIHVubW91bnQKQEAgLTM5MiwxNiArMzk1LDI5IEBACiAgKiBhbGwgdGhlIGRlbnRyaWVzIGFyZSBpbiB1c2UuCiAgKi8KICAKLXN0YXRpYyB2b2lkIHBydW5lX2RjYWNoZShpbnQgY291bnQpCitzdGF0aWMgdm9pZCBwcnVuZV9kY2FjaGUoaW50IGNvdW50LCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogewogCXNwaW5fbG9jaygmZGNhY2hlX2xvY2spOwogCWZvciAoOyBjb3VudCA7IGNvdW50LS0pIHsKIAkJc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogCQlzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7CisJCXN0cnVjdCByd19zZW1hcGhvcmUgKnNfdW1vdW50OwogCiAJCWNvbmRfcmVzY2hlZF9sb2NrKCZkY2FjaGVfbG9jayk7CiAKIAkJdG1wID0gZGVudHJ5X3VudXNlZC5wcmV2OworCQlpZiAodW5saWtlbHkoc2IpKSB7CisJCQkvKiBUcnkgdG8gZmluZCBhIGRlbnRyeSBmb3IgdGhpcyBzYiwgYnV0IGRvbid0IHRyeQorCQkJICogdG9vIGhhcmQsIGlmIHRoZXkgYXJlbid0IG5lYXIgdGhlIHRhaWwgdGhleSB3aWxsCisJCQkgKiBiZSBtb3ZlZCBkb3duIGFnYWluIHNvb24KKwkJCSAqLworCQkJaW50IHNraXAgPSBjb3VudDsKKwkJCXdoaWxlIChza2lwICYmIHRtcCAhPSAmZGVudHJ5X3VudXNlZCAmJgorCQkJICAgIGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgZGVudHJ5LCBkX2xydSktPmRfc2IgIT0gc2IpIHsKKwkJCQlza2lwLS07CisJCQkJdG1wID0gdG1wLT5wcmV2OworCQkJfQorCQl9CiAJCWlmICh0bXAgPT0gJmRlbnRyeV91bnVzZWQpCiAJCQlicmVhazsKIAkJbGlzdF9kZWxfaW5pdCh0bXApOwpAQCAtNDI3LDcgKzQ0Myw0NSBAQAogIAkJCXNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9jayk7CiAJCQljb250aW51ZTsKIAkJfQotCQlwcnVuZV9vbmVfZGVudHJ5KGRlbnRyeSk7CisJCS8qCisJCSAqIElmIHRoZSBkZW50cnkgaXMgbm90IERDQUNIRURfUkVGRVJFTkNFRCwgaXQgaXMgdGltZQorCQkgKiB0byByZW1vdmUgaXQgZnJvbSB0aGUgZGNhY2hlLCBwcm92aWRlZCB0aGUgc3VwZXIgYmxvY2sgaXMKKwkJICogTlVMTCAod2hpY2ggbWVhbnMgd2UgYXJlIHRyeWluZyB0byByZWNsYWltIG1lbW9yeSkKKwkJICogb3IgdGhpcyBkZW50cnkgYmVsb25ncyB0byB0aGUgc2FtZSBzdXBlciBibG9jayB0aGF0CisJCSAqIHdlIHdhbnQgdG8gc2hyaW5rLgorCQkgKi8KKwkJLyoKKwkJICogSWYgdGhpcyBkZW50cnkgaXMgZm9yICJteSIgZmlsZXN5c3RlbSwgdGhlbiBJIGNhbiBwcnVuZSBpdAorCQkgKiB3aXRob3V0IHRha2luZyB0aGUgc191bW91bnQgbG9jayAoSSBhbHJlYWR5IGhvbGQgaXQpLgorCQkgKi8KKwkJaWYgKHNiICYmIGRlbnRyeS0+ZF9zYiA9PSBzYikgeworCQkJcHJ1bmVfb25lX2RlbnRyeShkZW50cnkpOworCQkJY29udGludWU7CisJCX0KKwkJLyoKKwkJICogLi4ub3RoZXJ3aXNlIHdlIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGZpbGVzeXN0ZW0gaXNuJ3QgYmVpbmcKKwkJICogdW5tb3VudGVkLCBvdGhlcndpc2Ugd2UgY291bGQgcmFjZSB3aXRoCisJCSAqIGdlbmVyaWNfc2h1dGRvd25fc3VwZXIoKSwgYW5kIGVuZCB1cCBob2xkaW5nIGEgcmVmZXJlbmNlIHRvCisJCSAqIGFuIGlub2RlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC4KKwkJICogU28gd2UgdHJ5IHRvIGdldCBzX3Vtb3VudCwgYW5kIG1ha2Ugc3VyZSBzX3Jvb3QgaXNuJ3QgTlVMTC4KKwkJICogKFRha2UgYSBsb2NhbCBjb3B5IG9mIHNfdW1vdW50IHRvIGF2b2lkIGEgdXNlLWFmdGVyLWZyZWUgb2YKKwkJICogYGRlbnRyeScpLgorCQkgKi8KKwkJc191bW91bnQgPSAmZGVudHJ5LT5kX3NiLT5zX3Vtb3VudDsKKwkJaWYgKGRvd25fcmVhZF90cnlsb2NrKHNfdW1vdW50KSkgeworCQkJaWYgKGRlbnRyeS0+ZF9zYi0+c19yb290ICE9IE5VTEwpIHsKKwkJCQlwcnVuZV9vbmVfZGVudHJ5KGRlbnRyeSk7CisJCQkJdXBfcmVhZChzX3Vtb3VudCk7CisJCQkJY29udGludWU7CisJCQl9CisJCQl1cF9yZWFkKHNfdW1vdW50KTsKKwkJfQorCQlzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2spOworCQkvKiBDYW5ub3QgcmVtb3ZlIHRoZSBmaXJzdCBkZW50cnksIGFuZCBpdCBpc24ndCBhcHByb3ByaWF0ZQorCQkgKiB0byBtb3ZlIGl0IHRvIHRoZSBoZWFkIG9mIHRoZSBsaXN0LCBzbyBnaXZlIHVwLCBhbmQgdHJ5CisJCSAqIGxhdGVyCisJCSAqLworCQlicmVhazsKIAl9CiAJc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsKIH0KQEAgLTYzMCw0NiArNjg0LDcgQEAKIAlpbnQgZm91bmQ7CiAKIAl3aGlsZSAoKGZvdW5kID0gc2VsZWN0X3BhcmVudChwYXJlbnQpKSAhPSAwKQotCQlwcnVuZV9kY2FjaGUoZm91bmQpOwotfQotCi0vKioKLSAqIHNocmlua19kY2FjaGVfYW5vbiAtIGZ1cnRoZXIgcHJ1bmUgdGhlIGNhY2hlCi0gKiBAaGVhZDogaGVhZCBvZiBkX2hhc2ggbGlzdCBvZiBkZW50cmllcyB0byBwcnVuZQotICoKLSAqIFBydW5lIHRoZSBkZW50cmllcyB0aGF0IGFyZSBhbm9ueW1vdXMKLSAqCi0gKiBwYXJzaW5nIGRfaGFzaCBsaXN0IGRvZXMgbm90IGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSgpIGFzIGl0Ci0gKiBkb25lIHVuZGVyIGRjYWNoZV9sb2NrLgotICoKLSAqLwotdm9pZCBzaHJpbmtfZGNhY2hlX2Fub24oc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQpCi17Ci0Jc3RydWN0IGhsaXN0X25vZGUgKmxwOwotCWludCBmb3VuZDsKLQlkbyB7Ci0JCWZvdW5kID0gMDsKLQkJc3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7Ci0JCWhsaXN0X2Zvcl9lYWNoKGxwLCBoZWFkKSB7Ci0JCQlzdHJ1Y3QgZGVudHJ5ICp0aGlzID0gaGxpc3RfZW50cnkobHAsIHN0cnVjdCBkZW50cnksIGRfaGFzaCk7Ci0JCQlpZiAoIWxpc3RfZW1wdHkoJnRoaXMtPmRfbHJ1KSkgewotCQkJCWRlbnRyeV9zdGF0Lm5yX3VudXNlZC0tOwotCQkJCWxpc3RfZGVsX2luaXQoJnRoaXMtPmRfbHJ1KTsKLQkJCX0KLQotCQkJLyogCi0JCQkgKiBtb3ZlIG9ubHkgemVybyByZWYgY291bnQgZGVudHJpZXMgdG8gdGhlIGVuZCAKLQkJCSAqIG9mIHRoZSB1bnVzZWQgbGlzdCBmb3IgcHJ1bmVfZGNhY2hlCi0JCQkgKi8KLQkJCWlmICghYXRvbWljX3JlYWQoJnRoaXMtPmRfY291bnQpKSB7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmdGhpcy0+ZF9scnUsICZkZW50cnlfdW51c2VkKTsKLQkJCQlkZW50cnlfc3RhdC5ucl91bnVzZWQrKzsKLQkJCQlmb3VuZCsrOwotCQkJfQotCQl9Ci0JCXNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7Ci0JCXBydW5lX2RjYWNoZShmb3VuZCk7Ci0JfSB3aGlsZShmb3VuZCk7CisJCXBydW5lX2RjYWNoZShmb3VuZCwgcGFyZW50LT5kX3NiKTsKIH0KIAogLyoKQEAgLTY4OSw3ICs3MDQsNyBAQAogCWlmIChucikgewogCQlpZiAoIShnZnBfbWFzayAmIF9fR0ZQX0ZTKSkKIAkJCXJldHVybiAtMTsKLQkJcHJ1bmVfZGNhY2hlKG5yKTsKKwkJcHJ1bmVfZGNhY2hlKG5yLCBOVUxMKTsKIAl9CiAJcmV0dXJuIChkZW50cnlfc3RhdC5ucl91bnVzZWQgLyAxMDApICogc3lzY3RsX3Zmc19jYWNoZV9wcmVzc3VyZTsKIH0KZGlmZiAtLWdpdCBhL2ZzL2RlYnVnZnMvaW5vZGUuYyBiL2ZzL2RlYnVnZnMvaW5vZGUuYwppbmRleCA5MGY5NDE3Li42ZmExZTA0IDEwMDY0NAotLS0gYS9mcy9kZWJ1Z2ZzL2lub2RlLmMKKysrIGIvZnMvZGVidWdmcy9pbm9kZS5jCkBAIC0xMTEsMTEgKzExMSwxMSBAQAogCXJldHVybiBzaW1wbGVfZmlsbF9zdXBlcihzYiwgREVCVUdGU19NQUdJQywgZGVidWdfZmlsZXMpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpkZWJ1Z19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJICAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQl2b2lkICpkYXRhKQorc3RhdGljIGludCBkZWJ1Z19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGRlYnVnX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBkZWJ1Z19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZGVidWdfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2RldmZzL2Jhc2UuYyBiL2ZzL2RldmZzL2Jhc2UuYwppbmRleCA1MmY1MDU5Li41MWE5N2YxIDEwMDY0NAotLS0gYS9mcy9kZXZmcy9iYXNlLmMKKysrIGIvZnMvZGV2ZnMvYmFzZS5jCkBAIC0yNTQ5LDExICsyNTQ5LDExIEBACiAJcmV0dXJuIC1FSU5WQUw7CiB9CQkJCS8qICBFbmQgRnVuY3Rpb24gZGV2ZnNfZmlsbF9zdXBlciAgKi8KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqZGV2ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQl2b2lkICpkYXRhKQorc3RhdGljIGludCBkZXZmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGRldmZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBkZXZmc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZGV2ZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2RldnB0cy9pbm9kZS5jIGIvZnMvZGV2cHRzL2lub2RlLmMKaW5kZXggMTRjNTYyMC4uZjdhZWY1YiAxMDA2NDQKLS0tIGEvZnMvZGV2cHRzL2lub2RlLmMKKysrIGIvZnMvZGV2cHRzL2lub2RlLmMKQEAgLTEzMCwxMCArMTMwLDEwIEBACiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRldnB0c19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgZGV2cHRzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgZGV2cHRzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBkZXZwdHNfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGRldnB0c19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMgYi9mcy9kaXJlY3QtaW8uYwppbmRleCBiMDVkMWIyLi41MzhmYjA0IDEwMDY0NAotLS0gYS9mcy9kaXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3QtaW8uYwpAQCAtMTYyLDcgKzE2Miw3IEBACiAJCU5VTEwpOwkJCQkvKiB2bWFzICovCiAJdXBfcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKIAotCWlmIChyZXQgPCAwICYmIGRpby0+YmxvY2tzX2F2YWlsYWJsZSAmJiAoZGlvLT5ydyA9PSBXUklURSkpIHsKKwlpZiAocmV0IDwgMCAmJiBkaW8tPmJsb2Nrc19hdmFpbGFibGUgJiYgKGRpby0+cncgJiBXUklURSkpIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBaRVJPX1BBR0UoZGlvLT5jdXJyX3VzZXJfYWRkcmVzcyk7CiAJCS8qCiAJCSAqIEEgbWVtb3J5IGZhdWx0LCBidXQgdGhlIGZpbGVzeXN0ZW0gaGFzIHNvbWUgb3V0c3RhbmRpbmcKQEAgLTUzNSw3ICs1MzUsNyBAQAogCQltYXBfYmgtPmJfc3RhdGUgPSAwOwogCQltYXBfYmgtPmJfc2l6ZSA9IGZzX2NvdW50IDw8IGRpby0+aW5vZGUtPmlfYmxrYml0czsKIAotCQljcmVhdGUgPSBkaW8tPnJ3ID09IFdSSVRFOworCQljcmVhdGUgPSBkaW8tPnJ3ICYgV1JJVEU7CiAJCWlmIChkaW8tPmxvY2tfdHlwZSA9PSBESU9fTE9DS0lORykgewogCQkJaWYgKGRpby0+YmxvY2tfaW5fZmlsZSA8IChpX3NpemVfcmVhZChkaW8tPmlub2RlKSA+PgogCQkJCQkJCWRpby0+YmxrYml0cykpCkBAIC04NjcsNyArODY3LDcgQEAKIAkJCQlsb2ZmX3QgaV9zaXplX2FsaWduZWQ7CiAKIAkJCQkvKiBBS1BNOiBlYXJnaCwgLUVOT1RCTEsgaXMgYSBoYWNrICovCi0JCQkJaWYgKGRpby0+cncgPT0gV1JJVEUpIHsKKwkJCQlpZiAoZGlvLT5ydyAmIFdSSVRFKSB7CiAJCQkJCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKIAkJCQkJcmV0dXJuIC1FTk9UQkxLOwogCQkJCX0KQEAgLTEwNDUsNyArMTA0NSw3IEBACiAJCX0KIAl9IC8qIGVuZCBpb3ZlYyBsb29wICovCiAKLQlpZiAocmV0ID09IC1FTk9UQkxLICYmIHJ3ID09IFdSSVRFKSB7CisJaWYgKHJldCA9PSAtRU5PVEJMSyAmJiAocncgJiBXUklURSkpIHsKIAkJLyoKIAkJICogVGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSByZXF1ZXN0IHdpbGwgYmUKIAkJICogYmUgaGFuZGxlZCBieSBidWZmZXJlZCBJL08gd2hlbiB3ZSByZXR1cm4KQEAgLTEwODksNyArMTA4OSw3IEBACiAJaWYgKGRpby0+aXNfYXN5bmMpIHsKIAkJaW50IHNob3VsZF93YWl0ID0gMDsKIAotCQlpZiAoZGlvLT5yZXN1bHQgPCBkaW8tPnNpemUgJiYgcncgPT0gV1JJVEUpIHsKKwkJaWYgKGRpby0+cmVzdWx0IDwgZGlvLT5zaXplICYmIChydyAmIFdSSVRFKSkgewogCQkJZGlvLT53YWl0ZXIgPSBjdXJyZW50OwogCQkJc2hvdWxkX3dhaXQgPSAxOwogCQl9CkBAIC0xMTQyLDcgKzExNDIsNyBAQAogCQkJcmV0ID0gdHJhbnNmZXJyZWQ7CiAKIAkJLyogV2UgY291bGQgaGF2ZSBhbHNvIGNvbWUgaGVyZSBvbiBhbiBBSU8gZmlsZSBleHRlbmQgKi8KLQkJaWYgKCFpc19zeW5jX2tpb2NiKGlvY2IpICYmIHJ3ID09IFdSSVRFICYmCisJCWlmICghaXNfc3luY19raW9jYihpb2NiKSAmJiAocncgJiBXUklURSkgJiYKIAkJICAgIHJldCA+PSAwICYmIGRpby0+cmVzdWx0ID09IGRpby0+c2l6ZSkKIAkJCS8qCiAJCQkgKiBGb3IgQUlPIHdyaXRlcyB3aGVyZSB3ZSBoYXZlIGNvbXBsZXRlZCB0aGUKQEAgLTExOTQsNyArMTE5NCw3IEBACiAJaW50IGFjcXVpcmVfaV9tdXRleCA9IDA7CiAKIAlpZiAocncgJiBXUklURSkKLQkJY3VycmVudC0+ZmxhZ3MgfD0gUEZfU1lOQ1dSSVRFOworCQlydyA9IFdSSVRFX1NZTkM7CiAKIAlpZiAoYmRldikKIAkJYmRldl9ibGtiaXRzID0gYmxrc2l6ZV9iaXRzKGJkZXZfaGFyZHNlY3Rfc2l6ZShiZGV2KSk7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQAogCSAqIGV2ZW4gZm9yIEFJTywgd2UgbmVlZCB0byB3YWl0IGZvciBpL28gdG8gY29tcGxldGUgYmVmb3JlCiAJICogcmV0dXJuaW5nIGluIHRoaXMgY2FzZS4KIAkgKi8KLQlkaW8tPmlzX2FzeW5jID0gIWlzX3N5bmNfa2lvY2IoaW9jYikgJiYgISgocncgPT0gV1JJVEUpICYmCisJZGlvLT5pc19hc3luYyA9ICFpc19zeW5jX2tpb2NiKGlvY2IpICYmICEoKHJ3ICYgV1JJVEUpICYmCiAJCShlbmQgPiBpX3NpemVfcmVhZChpbm9kZSkpKTsKIAogCXJldHZhbCA9IGRpcmVjdF9pb193b3JrZXIocncsIGlvY2IsIGlub2RlLCBpb3YsIG9mZnNldCwKQEAgLTEyODQsOCArMTI4NCw2IEBACiAJCW11dGV4X3VubG9jaygmaW5vZGUtPmlfbXV0ZXgpOwogCWVsc2UgaWYgKGFjcXVpcmVfaV9tdXRleCkKIAkJbXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgpOwotCWlmIChydyAmIFdSSVRFKQotCQljdXJyZW50LT5mbGFncyAmPSB+UEZfU1lOQ1dSSVRFOwogCXJldHVybiByZXR2YWw7CiB9CiBFWFBPUlRfU1lNQk9MKF9fYmxvY2tkZXZfZGlyZWN0X0lPKTsKZGlmZiAtLWdpdCBhL2ZzL2Vmcy9zdXBlci5jIGIvZnMvZWZzL3N1cGVyLmMKaW5kZXggZGZmNjIzZS4uOGFjMjQ2MiAxMDA2NDQKLS0tIGEvZnMvZWZzL3N1cGVyLmMKKysrIGIvZnMvZWZzL3N1cGVyLmMKQEAgLTE1LDEzICsxNSwxMyBAQAogI2luY2x1ZGUgPGxpbnV4L2J1ZmZlcl9oZWFkLmg+CiAjaW5jbHVkZSA8bGludXgvdmZzLmg+CiAKLXN0YXRpYyBpbnQgZWZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIHN0cnVjdCBrc3RhdGZzICpidWYpOworc3RhdGljIGludCBlZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7CiBzdGF0aWMgaW50IGVmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgdm9pZCAqZCwgaW50IHNpbGVudCk7CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmVmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgZWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBlZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgZWZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBlZnNfZnNfdHlwZSA9IHsKQEAgLTMyMiw4ICszMjIsOCBAQAogCXJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMgaW50IGVmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKSB7Ci0Jc3RydWN0IGVmc19zYl9pbmZvICpzYiA9IFNVUEVSX0lORk8ocyk7CitzdGF0aWMgaW50IGVmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKSB7CisJc3RydWN0IGVmc19zYl9pbmZvICpzYiA9IFNVUEVSX0lORk8oZGVudHJ5LT5kX3NiKTsKIAogCWJ1Zi0+Zl90eXBlICAgID0gRUZTX1NVUEVSX01BR0lDOwkvKiBlZnMgbWFnaWMgbnVtYmVyICovCiAJYnVmLT5mX2JzaXplICAgPSBFRlNfQkxPQ0tTSVpFOwkJLyogYmxvY2tzaXplICovCmRpZmYgLS1naXQgYS9mcy9ldmVudHBvbGwuYyBiL2ZzL2V2ZW50cG9sbC5jCmluZGV4IDI2OTUzMzcuLjA4ZTdlNmEgMTAwNjQ0Ci0tLSBhL2ZzL2V2ZW50cG9sbC5jCisrKyBiL2ZzL2V2ZW50cG9sbC5jCkBAIC0yNjgsOSArMjY4LDkgQEAKIAkJICAgaW50IG1heGV2ZW50cywgbG9uZyB0aW1lb3V0KTsKIHN0YXRpYyBpbnQgZXZlbnRwb2xsZnNfZGVsZXRlX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwogc3RhdGljIHN0cnVjdCBpbm9kZSAqZXBfZXZlbnRwb2xsX2lub2RlKHZvaWQpOwotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqZXZlbnRwb2xsZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQkgICAgICB2b2lkICpkYXRhKTsKK3N0YXRpYyBpbnQgZXZlbnRwb2xsZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJCSAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKIAogLyoKICAqIFRoaXMgc2VtYXBob3JlIGlzIHVzZWQgdG8gc2VyaWFsaXplIGVwX2ZyZWUoKSBhbmQgZXZlbnRwb2xsX3JlbGVhc2VfZmlsZSgpLgpAQCAtMTU5NSwxMSArMTU5NSwxMiBAQAogfQogCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKgorc3RhdGljIGludAogZXZlbnRwb2xsZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsCi0JCSAgIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorCQkgICBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9wc2V1ZG8oZnNfdHlwZSwgImV2ZW50cG9sbDoiLCBOVUxMLCBFVkVOVFBPTExGU19NQUdJQyk7CisJcmV0dXJuIGdldF9zYl9wc2V1ZG8oZnNfdHlwZSwgImV2ZW50cG9sbDoiLCBOVUxMLCBFVkVOVFBPTExGU19NQUdJQywKKwkJCSAgICAgbW50KTsKIH0KIAogCmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMKaW5kZXggZDA3ODU4Yy4uMGI4OGJmNiAxMDA2NDQKLS0tIGEvZnMvZXhlYy5jCisrKyBiL2ZzL2V4ZWMuYwpAQCAtODY2LDcgKzg2Niw2IEBACiAJYnBybS0+bW0gPSBOVUxMOwkJLyogV2UncmUgdXNpbmcgaXQgbm93ICovCiAKIAkvKiBUaGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gKi8KLQlzdGVhbF9sb2NrcyhmaWxlcyk7CiAJcHV0X2ZpbGVzX3N0cnVjdChmaWxlcyk7CiAKIAljdXJyZW50LT5zYXNfc3Nfc3AgPSBjdXJyZW50LT5zYXNfc3Nfc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9mcy9leHQyL2Rpci5jIGIvZnMvZXh0Mi9kaXIuYwppbmRleCBkNjcyYWE5Li4zYzFjOWFhIDEwMDY0NAotLS0gYS9mcy9leHQyL2Rpci5jCisrKyBiL2ZzL2V4dDIvZGlyLmMKQEAgLTE1OSw4ICsxNTksNyBAQAogc3RhdGljIHN0cnVjdCBwYWdlICogZXh0Ml9nZXRfcGFnZShzdHJ1Y3QgaW5vZGUgKmRpciwgdW5zaWduZWQgbG9uZyBuKQogewogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZGlyLT5pX21hcHBpbmc7Ci0Jc3RydWN0IHBhZ2UgKnBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgbiwKLQkJCQkoZmlsbGVyX3QqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJc3RydWN0IHBhZ2UgKnBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBuLCBOVUxMKTsKIAlpZiAoIUlTX0VSUihwYWdlKSkgewogCQl3YWl0X29uX3BhZ2VfbG9ja2VkKHBhZ2UpOwogCQlrbWFwKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9zdXBlci5jIGIvZnMvZXh0Mi9zdXBlci5jCmluZGV4IDdlMzBiYWUuLmVlNGJhNzUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvc3VwZXIuYworKysgYi9mcy9leHQyL3N1cGVyLmMKQEAgLTM5LDcgKzM5LDcgQEAKIHN0YXRpYyB2b2lkIGV4dDJfc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCQkJICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICplcyk7CiBzdGF0aWMgaW50IGV4dDJfcmVtb3VudCAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIGludCAqIGZsYWdzLCBjaGFyICogZGF0YSk7Ci1zdGF0aWMgaW50IGV4dDJfc3RhdGZzIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgc3RydWN0IGtzdGF0ZnMgKiBidWYpOworc3RhdGljIGludCBleHQyX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKiBidWYpOwogCiB2b2lkIGV4dDJfZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiLCBjb25zdCBjaGFyICogZnVuY3Rpb24sCiAJCSBjb25zdCBjaGFyICogZm10LCAuLi4pCkBAIC04MzQsOSArODM0LDYgQEAKIAkJcHJpbnRrICgiRVhUMi1mczogbm90IGVub3VnaCBtZW1vcnlcbiIpOwogCQlnb3RvIGZhaWxlZF9tb3VudDsKIAl9Ci0JcGVyY3B1X2NvdW50ZXJfaW5pdCgmc2JpLT5zX2ZyZWVibG9ja3NfY291bnRlcik7Ci0JcGVyY3B1X2NvdW50ZXJfaW5pdCgmc2JpLT5zX2ZyZWVpbm9kZXNfY291bnRlcik7Ci0JcGVyY3B1X2NvdW50ZXJfaW5pdCgmc2JpLT5zX2RpcnNfY291bnRlcik7CiAJYmdsX2xvY2tfaW5pdCgmc2JpLT5zX2Jsb2NrZ3JvdXBfbG9jayk7CiAJc2JpLT5zX2RlYnRzID0ga21hbGxvYyhzYmktPnNfZ3JvdXBzX2NvdW50ICogc2l6ZW9mKCpzYmktPnNfZGVidHMpLAogCQkJICAgICAgIEdGUF9LRVJORUwpOwpAQCAtODYzLDYgKzg2MCwxMyBAQAogCXNiaS0+c19nZGJfY291bnQgPSBkYl9jb3VudDsKIAlnZXRfcmFuZG9tX2J5dGVzKCZzYmktPnNfbmV4dF9nZW5lcmF0aW9uLCBzaXplb2YodTMyKSk7CiAJc3Bpbl9sb2NrX2luaXQoJnNiaS0+c19uZXh0X2dlbl9sb2NrKTsKKworCXBlcmNwdV9jb3VudGVyX2luaXQoJnNiaS0+c19mcmVlYmxvY2tzX2NvdW50ZXIsCisJCQkJZXh0Ml9jb3VudF9mcmVlX2Jsb2NrcyhzYikpOworCXBlcmNwdV9jb3VudGVyX2luaXQoJnNiaS0+c19mcmVlaW5vZGVzX2NvdW50ZXIsCisJCQkJZXh0Ml9jb3VudF9mcmVlX2lub2RlcyhzYikpOworCXBlcmNwdV9jb3VudGVyX2luaXQoJnNiaS0+c19kaXJzX2NvdW50ZXIsCisJCQkJZXh0Ml9jb3VudF9kaXJzKHNiKSk7CiAJLyoKIAkgKiBzZXQgdXAgZW5vdWdoIHNvIHRoYXQgaXQgY2FuIHJlYWQgYW4gaW5vZGUKIAkgKi8KQEAgLTg3NCwyNCArODc4LDE4IEBACiAJaWYgKCFzYi0+c19yb290KSB7CiAJCWlwdXQocm9vdCk7CiAJCXByaW50ayhLRVJOX0VSUiAiRVhUMi1mczogZ2V0IHJvb3QgaW5vZGUgZmFpbGVkXG4iKTsKLQkJZ290byBmYWlsZWRfbW91bnQyOworCQlnb3RvIGZhaWxlZF9tb3VudDM7CiAJfQogCWlmICghU19JU0RJUihyb290LT5pX21vZGUpIHx8ICFyb290LT5pX2Jsb2NrcyB8fCAhcm9vdC0+aV9zaXplKSB7CiAJCWRwdXQoc2ItPnNfcm9vdCk7CiAJCXNiLT5zX3Jvb3QgPSBOVUxMOwogCQlwcmludGsoS0VSTl9FUlIgIkVYVDItZnM6IGNvcnJ1cHQgcm9vdCBpbm9kZSwgcnVuIGUyZnNja1xuIik7Ci0JCWdvdG8gZmFpbGVkX21vdW50MjsKKwkJZ290byBmYWlsZWRfbW91bnQzOwogCX0KIAlpZiAoRVhUMl9IQVNfQ09NUEFUX0ZFQVRVUkUoc2IsIEVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwpKQogCQlleHQyX3dhcm5pbmcoc2IsIF9fRlVOQ1RJT05fXywKIAkJCSJtb3VudGluZyBleHQzIGZpbGVzeXN0ZW0gYXMgZXh0MiIpOwogCWV4dDJfc2V0dXBfc3VwZXIgKHNiLCBlcywgc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpOwotCXBlcmNwdV9jb3VudGVyX21vZCgmc2JpLT5zX2ZyZWVibG9ja3NfY291bnRlciwKLQkJCQlleHQyX2NvdW50X2ZyZWVfYmxvY2tzKHNiKSk7Ci0JcGVyY3B1X2NvdW50ZXJfbW9kKCZzYmktPnNfZnJlZWlub2Rlc19jb3VudGVyLAotCQkJCWV4dDJfY291bnRfZnJlZV9pbm9kZXMoc2IpKTsKLQlwZXJjcHVfY291bnRlcl9tb2QoJnNiaS0+c19kaXJzX2NvdW50ZXIsCi0JCQkJZXh0Ml9jb3VudF9kaXJzKHNiKSk7CiAJcmV0dXJuIDA7CiAKIGNhbnRmaW5kX2V4dDI6CkBAIC04OTksNyArODk3LDEwIEBACiAJCXByaW50aygiVkZTOiBDYW4ndCBmaW5kIGFuIGV4dDIgZmlsZXN5c3RlbSBvbiBkZXYgJXMuXG4iLAogCQkgICAgICAgc2ItPnNfaWQpOwogCWdvdG8gZmFpbGVkX21vdW50OwotCitmYWlsZWRfbW91bnQzOgorCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19mcmVlYmxvY2tzX2NvdW50ZXIpOworCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19mcmVlaW5vZGVzX2NvdW50ZXIpOworCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19kaXJzX2NvdW50ZXIpOwogZmFpbGVkX21vdW50MjoKIAlmb3IgKGkgPSAwOyBpIDwgZGJfY291bnQ7IGkrKykKIAkJYnJlbHNlKHNiaS0+c19ncm91cF9kZXNjW2ldKTsKQEAgLTEwMzgsOCArMTAzOSw5IEBACiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBleHQyX3N0YXRmcyAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHN0cnVjdCBrc3RhdGZzICogYnVmKQorc3RhdGljIGludCBleHQyX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKiBidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKIAlzdHJ1Y3QgZXh0Ml9zYl9pbmZvICpzYmkgPSBFWFQyX1NCKHNiKTsKIAl1bnNpZ25lZCBsb25nIG92ZXJoZWFkOwogCWludCBpOwpAQCAtMTA4NywxMCArMTA4OSwxMCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpleHQyX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBleHQyX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBleHQyX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGV4dDJfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogI2lmZGVmIENPTkZJR19RVU9UQQpkaWZmIC0tZ2l0IGEvZnMvZXh0My9zdXBlci5jIGIvZnMvZXh0My9zdXBlci5jCmluZGV4IGY4YTUyNjYuLmE2MGNjNmUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDMvc3VwZXIuYworKysgYi9mcy9leHQzL3N1cGVyLmMKQEAgLTU4LDcgKzU4LDcgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpleHQzX2RlY29kZV9lcnJvcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgaW50IGVycm5vLAogCQkJCSAgICAgY2hhciBuYnVmWzE2XSk7CiBzdGF0aWMgaW50IGV4dDNfcmVtb3VudCAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIGludCAqIGZsYWdzLCBjaGFyICogZGF0YSk7Ci1zdGF0aWMgaW50IGV4dDNfc3RhdGZzIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiwgc3RydWN0IGtzdGF0ZnMgKiBidWYpOworc3RhdGljIGludCBleHQzX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKiBidWYpOwogc3RhdGljIHZvaWQgZXh0M191bmxvY2tmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKIHN0YXRpYyB2b2lkIGV4dDNfd3JpdGVfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKTsKIHN0YXRpYyB2b2lkIGV4dDNfd3JpdGVfc3VwZXJfbG9ja2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpAQCAtNDk5LDIwICs0OTksMjEgQEAKIHsKIAlzdHJ1Y3QgZXh0M19ibG9ja19hbGxvY19pbmZvICpyc3YgPSBFWFQzX0koaW5vZGUpLT5pX2Jsb2NrX2FsbG9jX2luZm87CiAjaWZkZWYgQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMCi0gICAgICAgaWYgKEVYVDNfSShpbm9kZSktPmlfYWNsICYmCi0gICAgICAgICAgIEVYVDNfSShpbm9kZSktPmlfYWNsICE9IEVYVDNfQUNMX05PVF9DQUNIRUQpIHsKLSAgICAgICAgICAgICAgIHBvc2l4X2FjbF9yZWxlYXNlKEVYVDNfSShpbm9kZSktPmlfYWNsKTsKLSAgICAgICAgICAgICAgIEVYVDNfSShpbm9kZSktPmlfYWNsID0gRVhUM19BQ0xfTk9UX0NBQ0hFRDsKLSAgICAgICB9Ci0gICAgICAgaWYgKEVYVDNfSShpbm9kZSktPmlfZGVmYXVsdF9hY2wgJiYKLSAgICAgICAgICAgRVhUM19JKGlub2RlKS0+aV9kZWZhdWx0X2FjbCAhPSBFWFQzX0FDTF9OT1RfQ0FDSEVEKSB7Ci0gICAgICAgICAgICAgICBwb3NpeF9hY2xfcmVsZWFzZShFWFQzX0koaW5vZGUpLT5pX2RlZmF1bHRfYWNsKTsKLSAgICAgICAgICAgICAgIEVYVDNfSShpbm9kZSktPmlfZGVmYXVsdF9hY2wgPSBFWFQzX0FDTF9OT1RfQ0FDSEVEOwotICAgICAgIH0KKwlpZiAoRVhUM19JKGlub2RlKS0+aV9hY2wgJiYKKwkJCUVYVDNfSShpbm9kZSktPmlfYWNsICE9IEVYVDNfQUNMX05PVF9DQUNIRUQpIHsKKwkJcG9zaXhfYWNsX3JlbGVhc2UoRVhUM19JKGlub2RlKS0+aV9hY2wpOworCQlFWFQzX0koaW5vZGUpLT5pX2FjbCA9IEVYVDNfQUNMX05PVF9DQUNIRUQ7CisJfQorCWlmIChFWFQzX0koaW5vZGUpLT5pX2RlZmF1bHRfYWNsICYmCisJCQlFWFQzX0koaW5vZGUpLT5pX2RlZmF1bHRfYWNsICE9IEVYVDNfQUNMX05PVF9DQUNIRUQpIHsKKwkJcG9zaXhfYWNsX3JlbGVhc2UoRVhUM19JKGlub2RlKS0+aV9kZWZhdWx0X2FjbCk7CisJCUVYVDNfSShpbm9kZSktPmlfZGVmYXVsdF9hY2wgPSBFWFQzX0FDTF9OT1RfQ0FDSEVEOworCX0KICNlbmRpZgogCWV4dDNfZGlzY2FyZF9yZXNlcnZhdGlvbihpbm9kZSk7CiAJRVhUM19JKGlub2RlKS0+aV9ibG9ja19hbGxvY19pbmZvID0gTlVMTDsKLQlrZnJlZShyc3YpOworCWlmICh1bmxpa2VseShyc3YpKQorCQlrZnJlZShyc3YpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZXh0M19zaG93X3F1b3RhX29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCkBAIC0xNTc5LDkgKzE1ODAsNiBAQAogCQlnb3RvIGZhaWxlZF9tb3VudDsKIAl9CiAKLQlwZXJjcHVfY291bnRlcl9pbml0KCZzYmktPnNfZnJlZWJsb2Nrc19jb3VudGVyKTsKLQlwZXJjcHVfY291bnRlcl9pbml0KCZzYmktPnNfZnJlZWlub2Rlc19jb3VudGVyKTsKLQlwZXJjcHVfY291bnRlcl9pbml0KCZzYmktPnNfZGlyc19jb3VudGVyKTsKIAliZ2xfbG9ja19pbml0KCZzYmktPnNfYmxvY2tncm91cF9sb2NrKTsKIAogCWZvciAoaSA9IDA7IGkgPCBkYl9jb3VudDsgaSsrKSB7CkBAIC0xNjAxLDYgKzE1OTksMTQgQEAKIAlzYmktPnNfZ2RiX2NvdW50ID0gZGJfY291bnQ7CiAJZ2V0X3JhbmRvbV9ieXRlcygmc2JpLT5zX25leHRfZ2VuZXJhdGlvbiwgc2l6ZW9mKHUzMikpOwogCXNwaW5fbG9ja19pbml0KCZzYmktPnNfbmV4dF9nZW5fbG9jayk7CisKKwlwZXJjcHVfY291bnRlcl9pbml0KCZzYmktPnNfZnJlZWJsb2Nrc19jb3VudGVyLAorCQlleHQzX2NvdW50X2ZyZWVfYmxvY2tzKHNiKSk7CisJcGVyY3B1X2NvdW50ZXJfaW5pdCgmc2JpLT5zX2ZyZWVpbm9kZXNfY291bnRlciwKKwkJZXh0M19jb3VudF9mcmVlX2lub2RlcyhzYikpOworCXBlcmNwdV9jb3VudGVyX2luaXQoJnNiaS0+c19kaXJzX2NvdW50ZXIsCisJCWV4dDNfY291bnRfZGlycyhzYikpOworCiAJLyogcGVyIGZpbGV5c3RlbSByZXNlcnZhdGlvbiBsaXN0IGhlYWQgJiBsb2NrICovCiAJc3Bpbl9sb2NrX2luaXQoJnNiaS0+c19yc3Zfd2luZG93X2xvY2spOwogCXNiaS0+c19yc3Zfd2luZG93X3Jvb3QgPSBSQl9ST09UOwpAQCAtMTYzOSwxNiArMTY0NSwxNiBAQAogCWlmICghdGVzdF9vcHQoc2IsIE5PTE9BRCkgJiYKIAkgICAgRVhUM19IQVNfQ09NUEFUX0ZFQVRVUkUoc2IsIEVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwpKSB7CiAJCWlmIChleHQzX2xvYWRfam91cm5hbChzYiwgZXMsIGpvdXJuYWxfZGV2bnVtKSkKLQkJCWdvdG8gZmFpbGVkX21vdW50MjsKKwkJCWdvdG8gZmFpbGVkX21vdW50MzsKIAl9IGVsc2UgaWYgKGpvdXJuYWxfaW51bSkgewogCQlpZiAoZXh0M19jcmVhdGVfam91cm5hbChzYiwgZXMsIGpvdXJuYWxfaW51bSkpCi0JCQlnb3RvIGZhaWxlZF9tb3VudDI7CisJCQlnb3RvIGZhaWxlZF9tb3VudDM7CiAJfSBlbHNlIHsKIAkJaWYgKCFzaWxlbnQpCiAJCQlwcmludGsgKEtFUk5fRVJSCiAJCQkJImV4dDM6IE5vIGpvdXJuYWwgb24gZmlsZXN5c3RlbSBvbiAlc1xuIiwKIAkJCQlzYi0+c19pZCk7Ci0JCWdvdG8gZmFpbGVkX21vdW50MjsKKwkJZ290byBmYWlsZWRfbW91bnQzOwogCX0KIAogCS8qIFdlIGhhdmUgbm93IHVwZGF0ZWQgdGhlIGpvdXJuYWwgaWYgcmVxdWlyZWQsIHNvIHdlIGNhbgpAQCAtMTY3MSw3ICsxNjc3LDcgQEAKIAkJICAgIChzYmktPnNfam91cm5hbCwgMCwgMCwgSkZTX0ZFQVRVUkVfSU5DT01QQVRfUkVWT0tFKSkgewogCQkJcHJpbnRrKEtFUk5fRVJSICJFWFQzLWZzOiBKb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgIgogCQkJICAgICAgICJyZXF1ZXN0ZWQgZGF0YSBqb3VybmFsaW5nIG1vZGVcbiIpOwotCQkJZ290byBmYWlsZWRfbW91bnQzOworCQkJZ290byBmYWlsZWRfbW91bnQ0OwogCQl9CiAJZGVmYXVsdDoKIAkJYnJlYWs7CkBAIC0xNjk0LDEzICsxNzAwLDEzIEBACiAJaWYgKCFzYi0+c19yb290KSB7CiAJCXByaW50ayhLRVJOX0VSUiAiRVhUMy1mczogZ2V0IHJvb3QgaW5vZGUgZmFpbGVkXG4iKTsKIAkJaXB1dChyb290KTsKLQkJZ290byBmYWlsZWRfbW91bnQzOworCQlnb3RvIGZhaWxlZF9tb3VudDQ7CiAJfQogCWlmICghU19JU0RJUihyb290LT5pX21vZGUpIHx8ICFyb290LT5pX2Jsb2NrcyB8fCAhcm9vdC0+aV9zaXplKSB7CiAJCWRwdXQoc2ItPnNfcm9vdCk7CiAJCXNiLT5zX3Jvb3QgPSBOVUxMOwogCQlwcmludGsoS0VSTl9FUlIgIkVYVDMtZnM6IGNvcnJ1cHQgcm9vdCBpbm9kZSwgcnVuIGUyZnNja1xuIik7Ci0JCWdvdG8gZmFpbGVkX21vdW50MzsKKwkJZ290byBmYWlsZWRfbW91bnQ0OwogCX0KIAogCWV4dDNfc2V0dXBfc3VwZXIgKHNiLCBlcywgc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpOwpAQCAtMTcyMywxMyArMTcyOSw2IEBACiAJCXRlc3Rfb3B0KHNiLERBVEFfRkxBR1MpID09IEVYVDNfTU9VTlRfT1JERVJFRF9EQVRBID8gIm9yZGVyZWQiOgogCQkid3JpdGViYWNrIik7CiAKLQlwZXJjcHVfY291bnRlcl9tb2QoJnNiaS0+c19mcmVlYmxvY2tzX2NvdW50ZXIsCi0JCWV4dDNfY291bnRfZnJlZV9ibG9ja3Moc2IpKTsKLQlwZXJjcHVfY291bnRlcl9tb2QoJnNiaS0+c19mcmVlaW5vZGVzX2NvdW50ZXIsCi0JCWV4dDNfY291bnRfZnJlZV9pbm9kZXMoc2IpKTsKLQlwZXJjcHVfY291bnRlcl9tb2QoJnNiaS0+c19kaXJzX2NvdW50ZXIsCi0JCWV4dDNfY291bnRfZGlycyhzYikpOwotCiAJbG9ja19rZXJuZWwoKTsKIAlyZXR1cm4gMDsKIApAQCAtMTczOSw4ICsxNzM4LDEyIEBACiAJCSAgICAgICBzYi0+c19pZCk7CiAJZ290byBmYWlsZWRfbW91bnQ7CiAKLWZhaWxlZF9tb3VudDM6CitmYWlsZWRfbW91bnQ0OgogCWpvdXJuYWxfZGVzdHJveShzYmktPnNfam91cm5hbCk7CitmYWlsZWRfbW91bnQzOgorCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19mcmVlYmxvY2tzX2NvdW50ZXIpOworCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19mcmVlaW5vZGVzX2NvdW50ZXIpOworCXBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koJnNiaS0+c19kaXJzX2NvdW50ZXIpOwogZmFpbGVkX21vdW50MjoKIAlmb3IgKGkgPSAwOyBpIDwgZGJfY291bnQ7IGkrKykKIAkJYnJlbHNlKHNiaS0+c19ncm91cF9kZXNjW2ldKTsKQEAgLTIzMTgsOCArMjMyMSw5IEBACiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBleHQzX3N0YXRmcyAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IsIHN0cnVjdCBrc3RhdGZzICogYnVmKQorc3RhdGljIGludCBleHQzX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKiBidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKIAlzdHJ1Y3QgZXh0M19zYl9pbmZvICpzYmkgPSBFWFQzX1NCKHNiKTsKIAlzdHJ1Y3QgZXh0M19zdXBlcl9ibG9jayAqZXMgPSBzYmktPnNfZXM7CiAJdW5zaWduZWQgbG9uZyBvdmVyaGVhZDsKQEAgLTI2NDYsMTAgKzI2NTAsMTAgQEAKIAogI2VuZGlmCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmV4dDNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGV4dDNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGV4dDNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgZXh0M19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXh0M19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2RlLmMgYi9mcy9mYXQvaW5vZGUuYwppbmRleCBjMWNlMjg0Zi4uN2MzNWQ1OCAxMDA2NDQKLS0tIGEvZnMvZmF0L2lub2RlLmMKKysrIGIvZnMvZmF0L2lub2RlLmMKQEAgLTUzOSwxOCArNTM5LDE4IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZmF0X3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQorc3RhdGljIGludCBmYXRfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKLQlzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyAqc2JpID0gTVNET1NfU0Ioc2IpOworCXN0cnVjdCBtc2Rvc19zYl9pbmZvICpzYmkgPSBNU0RPU19TQihkZW50cnktPmRfc2IpOwogCiAJLyogSWYgdGhlIGNvdW50IG9mIGZyZWUgY2x1c3RlciBpcyBzdGlsbCB1bmtub3duLCBjb3VudHMgaXQgaGVyZS4gKi8KIAlpZiAoc2JpLT5mcmVlX2NsdXN0ZXJzID09IC0xKSB7Ci0JCWludCBlcnIgPSBmYXRfY291bnRfZnJlZV9jbHVzdGVycyhzYik7CisJCWludCBlcnIgPSBmYXRfY291bnRfZnJlZV9jbHVzdGVycyhkZW50cnktPmRfc2IpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVycjsKIAl9CiAKLQlidWYtPmZfdHlwZSA9IHNiLT5zX21hZ2ljOworCWJ1Zi0+Zl90eXBlID0gZGVudHJ5LT5kX3NiLT5zX21hZ2ljOwogCWJ1Zi0+Zl9ic2l6ZSA9IHNiaS0+Y2x1c3Rlcl9zaXplOwogCWJ1Zi0+Zl9ibG9ja3MgPSBzYmktPm1heF9jbHVzdGVyIC0gRkFUX1NUQVJUX0VOVDsKIAlidWYtPmZfYmZyZWUgPSBzYmktPmZyZWVfY2x1c3RlcnM7CmRpZmYgLS1naXQgYS9mcy9mYXQvbWlzYy5jIGIvZnMvZmF0L21pc2MuYwppbmRleCA5NDQ2NTJlLi4zMDhmMmI2IDEwMDY0NAotLS0gYS9mcy9mYXQvbWlzYy5jCisrKyBiL2ZzL2ZhdC9taXNjLmMKQEAgLTIxMCw0ICsyMTAsMyBAQAogCXJldHVybiBlcnI7CiB9CiAKLUVYUE9SVF9TWU1CT0xfR1BMKGZhdF9zeW5jX2Jocyk7CmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggYmNlYTE5OS4uNTA2ZDUzMCAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCisrKyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtMzAwLDUgKzMwMCw1IEBACiAJaWYgKGZpbGVzX3N0YXQubWF4X2ZpbGVzIDwgTlJfRklMRSkKIAkJZmlsZXNfc3RhdC5tYXhfZmlsZXMgPSBOUl9GSUxFOwogCWZpbGVzX2RlZmVyX2luaXQoKTsKLQlwZXJjcHVfY291bnRlcl9pbml0KCZucl9maWxlcyk7CisJcGVyY3B1X2NvdW50ZXJfaW5pdCgmbnJfZmlsZXMsIDApOwogfSAKZGlmZiAtLWdpdCBhL2ZzL2ZyZWV2eGZzL3Z4ZnNfc3Vici5jIGIvZnMvZnJlZXZ4ZnMvdnhmc19zdWJyLmMKaW5kZXggNTBhYWU3Ny4uYzFiZTExOCAxMDA2NDQKLS0tIGEvZnMvZnJlZXZ4ZnMvdnhmc19zdWJyLmMKKysrIGIvZnMvZnJlZXZ4ZnMvdnhmc19zdWJyLmMKQEAgLTcxLDggKzcxLDcgQEAKIHsKIAlzdHJ1Y3QgcGFnZSAqCQkJcHA7CiAKLQlwcCA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBuLAotCQkJKGZpbGxlcl90KiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCXBwID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgbiwgTlVMTCk7CiAKIAlpZiAoIUlTX0VSUihwcCkpIHsKIAkJd2FpdF9vbl9wYWdlX2xvY2tlZChwcCk7CmRpZmYgLS1naXQgYS9mcy9mcmVldnhmcy92eGZzX3N1cGVyLmMgYi9mcy9mcmVldnhmcy92eGZzX3N1cGVyLmMKaW5kZXggYjQ0YzkxNi4uYjc0Yjc5MSAxMDA2NDQKLS0tIGEvZnMvZnJlZXZ4ZnMvdnhmc19zdXBlci5jCisrKyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfc3VwZXIuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CiAjaW5jbHVkZSA8bGludXgvdmZzLmg+CisjaW5jbHVkZSA8bGludXgvbW91bnQuaD4KIAogI2luY2x1ZGUgInZ4ZnMuaCIKICNpbmNsdWRlICJ2eGZzX2V4dGVybi5oIgpAQCAtNTUsNyArNTYsNyBAQAogCiAKIHN0YXRpYyB2b2lkCQl2eGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci1zdGF0aWMgaW50CQl2eGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtzdGF0ZnMgKik7CitzdGF0aWMgaW50CQl2eGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogc3RhdGljIGludAkJdnhmc19yZW1vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKIAogc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHZ4ZnNfc3VwZXJfb3BzID0gewpAQCAtOTAsMTIgKzkxLDEyIEBACiAKIC8qKgogICogdnhmc19zdGF0ZnMgLSBnZXQgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbgotICogQHNicDoJVkZTIHN1cGVyYmxvY2sKKyAqIEBkZW50cnk6CVZGUyBkZW50cnkgdG8gbG9jYXRlIHN1cGVyYmxvY2sKICAqIEBidWZwOglvdXRwdXQgYnVmZmVyCiAgKgogICogRGVzY3JpcHRpb246CiAgKiAgIHZ4ZnNfc3RhdGZzIGZpbGxzIHRoZSBzdGF0ZnMgYnVmZmVyIEBidWZwIHdpdGggaW5mb3JtYXRpb24KLSAqICAgYWJvdXQgdGhlIGZpbGVzeXN0ZW0gZGVzY3JpYmVkIGJ5IEBzYnAuCisgKiAgIGFib3V0IHRoZSBmaWxlc3lzdGVtIGRlc2NyaWJlZCBieSBAZGVudHJ5LgogICoKICAqIFJldHVybnM6CiAgKiAgIFplcm8uCkBAIC0xMDcsMTIgKzEwOCwxMiBAQAogICogICBUaGlzIGlzIGV2ZXJ5dGhpbmcgYnV0IGNvbXBsZXRlLi4uCiAgKi8KIHN0YXRpYyBpbnQKLXZ4ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2JwLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmcCkKK3Z4ZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZnApCiB7Ci0Jc3RydWN0IHZ4ZnNfc2JfaW5mbwkJKmluZnAgPSBWWEZTX1NCSShzYnApOworCXN0cnVjdCB2eGZzX3NiX2luZm8JCSppbmZwID0gVlhGU19TQkkoZGVudHJ5LT5kX3NiKTsKIAogCWJ1ZnAtPmZfdHlwZSA9IFZYRlNfU1VQRVJfTUFHSUM7Ci0JYnVmcC0+Zl9ic2l6ZSA9IHNicC0+c19ibG9ja3NpemU7CisJYnVmcC0+Zl9ic2l6ZSA9IGRlbnRyeS0+ZF9zYi0+c19ibG9ja3NpemU7CiAJYnVmcC0+Zl9ibG9ja3MgPSBpbmZwLT52c2lfcmF3LT52c19kc2l6ZTsKIAlidWZwLT5mX2JmcmVlID0gaW5mcC0+dnNpX3Jhdy0+dnNfZnJlZTsKIAlidWZwLT5mX2JhdmFpbCA9IDA7CkBAIC0yNDEsMTAgKzI0MiwxMSBAQAogLyoKICAqIFRoZSB1c3VhbCBtb2R1bGUgYmx1cmIuCiAgKi8KLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnZ4ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHZ4ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHZ4ZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgdnhmc19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHZ4ZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2ZzLXdyaXRlYmFjay5jIGIvZnMvZnMtd3JpdGViYWNrLmMKaW5kZXggZjNmYmUyZC4uMDMxYjI3YSAxMDA2NDQKLS0tIGEvZnMvZnMtd3JpdGViYWNrLmMKKysrIGIvZnMvZnMtd3JpdGViYWNrLmMKQEAgLTQ2MSw2ICs0NjEsOCBAQAogewogCXN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCB3YmMgPSB7CiAJCS5zeW5jX21vZGUJPSB3YWl0ID8gV0JfU1lOQ19BTEwgOiBXQl9TWU5DX0hPTEQsCisJCS5yYW5nZV9zdGFydAk9IDAsCisJCS5yYW5nZV9lbmQJPSBMTE9OR19NQVgsCiAJfTsKIAl1bnNpZ25lZCBsb25nIG5yX2RpcnR5ID0gcmVhZF9wYWdlX3N0YXRlKG5yX2RpcnR5KTsKIAl1bnNpZ25lZCBsb25nIG5yX3Vuc3RhYmxlID0gcmVhZF9wYWdlX3N0YXRlKG5yX3Vuc3RhYmxlKTsKQEAgLTU1OSw2ICs1NjEsOCBAQAogCXN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCB3YmMgPSB7CiAJCS5ucl90b193cml0ZSA9IExPTkdfTUFYLAogCQkuc3luY19tb2RlID0gV0JfU1lOQ19BTEwsCisJCS5yYW5nZV9zdGFydCA9IDAsCisJCS5yYW5nZV9lbmQgPSBMTE9OR19NQVgsCiAJfTsKIAogCWlmICghbWFwcGluZ19jYXBfd3JpdGViYWNrX2RpcnR5KGlub2RlLT5pX21hcHBpbmcpKQpAQCAtNjE5LDcgKzYyMyw2IEBACiAJaW50IG5lZWRfd3JpdGVfaW5vZGVfbm93ID0gMDsKIAlpbnQgZXJyMjsKIAotCWN1cnJlbnQtPmZsYWdzIHw9IFBGX1NZTkNXUklURTsKIAlpZiAod2hhdCAmIE9TWU5DX0RBVEEpCiAJCWVyciA9IGZpbGVtYXBfZmRhdGF3cml0ZShtYXBwaW5nKTsKIAlpZiAod2hhdCAmIChPU1lOQ19NRVRBREFUQXxPU1lOQ19EQVRBKSkgewpAQCAtNjMyLDcgKzYzNSw2IEBACiAJCWlmICghZXJyKQogCQkJZXJyID0gZXJyMjsKIAl9Ci0JY3VycmVudC0+ZmxhZ3MgJj0gflBGX1NZTkNXUklURTsKIAogCXNwaW5fbG9jaygmaW5vZGVfbG9jayk7CiAJaWYgKChpbm9kZS0+aV9zdGF0ZSAmIElfRElSVFkpICYmCmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jCmluZGV4IGZjMzQyY2YuLjA4N2YzYjcgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZmlsZS5jCisrKyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC0xNjksNyArMTY5LDcgQEAKIAlyZXR1cm4gZnVzZV9yZWxlYXNlX2NvbW1vbihpbm9kZSwgZmlsZSwgMCk7CiB9CiAKLXN0YXRpYyBpbnQgZnVzZV9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSkKK3N0YXRpYyBpbnQgZnVzZV9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZCkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7CiAJc3RydWN0IGZ1c2VfY29ubiAqZmMgPSBnZXRfZnVzZV9jb25uKGlub2RlKTsKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvaW5vZGUuYyBiL2ZzL2Z1c2UvaW5vZGUuYwppbmRleCAxM2ViZTU3Li44MTVjODI0IDEwMDY0NAotLS0gYS9mcy9mdXNlL2lub2RlLmMKKysrIGIvZnMvZnVzZS9pbm9kZS5jCkBAIC0yMzcsOCArMjM3LDkgQEAKIAkvKiBmc2lkIGlzIGxlZnQgemVybyAqLwogfQogCi1zdGF0aWMgaW50IGZ1c2Vfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGZ1c2Vfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOwogCXN0cnVjdCBmdXNlX2Nvbm4gKmZjID0gZ2V0X2Z1c2VfY29ubl9zdXBlcihzYik7CiAJc3RydWN0IGZ1c2VfcmVxICpyZXE7CiAJc3RydWN0IGZ1c2Vfc3RhdGZzX291dCBvdXRhcmc7CkBAIC01NzAsMTEgKzU3MSwxMSBAQAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmZ1c2VfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCSAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCSAgICAgICB2b2lkICpyYXdfZGF0YSkKK3N0YXRpYyBpbnQgZnVzZV9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCSAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkgICAgICAgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIHJhd19kYXRhLCBmdXNlX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIHJhd19kYXRhLCBmdXNlX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmdXNlX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9oZnMvYm5vZGUuYyBiL2ZzL2hmcy9ibm9kZS5jCmluZGV4IDFlNDRkY2YuLjEzMjMxZGQgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9ibm9kZS5jCisrKyBiL2ZzL2hmcy9ibm9kZS5jCkBAIC0yODAsNyArMjgwLDcgQEAKIAlibG9jayA9IG9mZiA+PiBQQUdFX0NBQ0hFX1NISUZUOwogCW5vZGUtPnBhZ2Vfb2Zmc2V0ID0gb2ZmICYgflBBR0VfQ0FDSEVfTUFTSzsKIAlmb3IgKGkgPSAwOyBpIDwgdHJlZS0+cGFnZXNfcGVyX2Jub2RlOyBpKyspIHsKLQkJcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBibG9jaysrLCAoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCQlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgYmxvY2srKywgTlVMTCk7CiAJCWlmIChJU19FUlIocGFnZSkpCiAJCQlnb3RvIGZhaWw7CiAJCWlmIChQYWdlRXJyb3IocGFnZSkpIHsKZGlmZiAtLWdpdCBhL2ZzL2hmcy9idHJlZS5jIGIvZnMvaGZzL2J0cmVlLmMKaW5kZXggZDIwMTMxYy4uNDAwMzU3OSAxMDA2NDQKLS0tIGEvZnMvaGZzL2J0cmVlLmMKKysrIGIvZnMvaGZzL2J0cmVlLmMKQEAgLTU5LDcgKzU5LDcgQEAKIAl1bmxvY2tfbmV3X2lub2RlKHRyZWUtPmlub2RlKTsKIAogCW1hcHBpbmcgPSB0cmVlLT5pbm9kZS0+aV9tYXBwaW5nOwotCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgMCwgKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgMCwgTlVMTCk7CiAJaWYgKElTX0VSUihwYWdlKSkKIAkJZ290byBmcmVlX3RyZWU7CiAKZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmMKaW5kZXggMTE4MWQxMS4uZDkyMjdiZiAxMDA2NDQKLS0tIGEvZnMvaGZzL3N1cGVyLmMKKysrIGIvZnMvaGZzL3N1cGVyLmMKQEAgLTgwLDggKzgwLDEwIEBACiAgKgogICogY2hhbmdlZCBmX2ZpbGVzL2ZfZmZyZWUgdG8gcmVmbGVjdCB0aGUgZnNfYWJsb2NrL2ZyZWVfYWJsb2Nrcy4KICAqLwotc3RhdGljIGludCBoZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGhmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogeworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkZW50cnktPmRfc2I7CisKIAlidWYtPmZfdHlwZSA9IEhGU19TVVBFUl9NQUdJQzsKIAlidWYtPmZfYnNpemUgPSBzYi0+c19ibG9ja3NpemU7CiAJYnVmLT5mX2Jsb2NrcyA9ICh1MzIpSEZTX1NCKHNiKS0+ZnNfYWJsb2NrcyAqIEhGU19TQihzYiktPmZzX2RpdjsKQEAgLTQxMywxMCArNDE1LDExIEBACiAJcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqaGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJCQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBoZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAorCQkgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBoZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgaGZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBoZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvYml0bWFwLmMgYi9mcy9oZnNwbHVzL2JpdG1hcC5jCmluZGV4IDlmYjUxNjMuLmQxMjhhMjViIDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2JpdG1hcC5jCisrKyBiL2ZzL2hmc3BsdXMvYml0bWFwLmMKQEAgLTMxLDggKzMxLDcgQEAKIAlkcHJpbnQoREJHX0JJVE1BUCwgImJsb2NrX2FsbG9jYXRlOiAldSwldSwldVxuIiwgc2l6ZSwgb2Zmc2V0LCBsZW4pOwogCW11dGV4X2xvY2soJkhGU1BMVVNfU0Ioc2IpLmFsbG9jX2ZpbGUtPmlfbXV0ZXgpOwogCW1hcHBpbmcgPSBIRlNQTFVTX1NCKHNiKS5hbGxvY19maWxlLT5pX21hcHBpbmc7Ci0JcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBvZmZzZXQgLyBQQUdFX0NBQ0hFX0JJVFMsCi0JCQkgICAgICAgKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgb2Zmc2V0IC8gUEFHRV9DQUNIRV9CSVRTLCBOVUxMKTsKIAlwcHRyID0ga21hcChwYWdlKTsKIAljdXJyID0gcHB0ciArIChvZmZzZXQgJiAoUEFHRV9DQUNIRV9CSVRTIC0gMSkpIC8gMzI7CiAJaSA9IG9mZnNldCAlIDMyOwpAQCAtNzIsOCArNzEsOCBAQAogCQlvZmZzZXQgKz0gUEFHRV9DQUNIRV9CSVRTOwogCQlpZiAob2Zmc2V0ID49IHNpemUpCiAJCQlicmVhazsKLQkJcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBvZmZzZXQgLyBQQUdFX0NBQ0hFX0JJVFMsCi0JCQkJICAgICAgIChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBvZmZzZXQgLyBQQUdFX0NBQ0hFX0JJVFMsCisJCQkJCSBOVUxMKTsKIAkJY3VyciA9IHBwdHIgPSBrbWFwKHBhZ2UpOwogCQlpZiAoKHNpemUgXiBvZmZzZXQpIC8gUEFHRV9DQUNIRV9CSVRTKQogCQkJZW5kID0gcHB0ciArIFBBR0VfQ0FDSEVfQklUUyAvIDMyOwpAQCAtMTE5LDggKzExOCw4IEBACiAJCXNldF9wYWdlX2RpcnR5KHBhZ2UpOwogCQlrdW5tYXAocGFnZSk7CiAJCW9mZnNldCArPSBQQUdFX0NBQ0hFX0JJVFM7Ci0JCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgb2Zmc2V0IC8gUEFHRV9DQUNIRV9CSVRTLAotCQkJCSAgICAgICAoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCQlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgb2Zmc2V0IC8gUEFHRV9DQUNIRV9CSVRTLAorCQkJCQkgTlVMTCk7CiAJCXBwdHIgPSBrbWFwKHBhZ2UpOwogCQljdXJyID0gcHB0cjsKIAkJZW5kID0gcHB0ciArIFBBR0VfQ0FDSEVfQklUUyAvIDMyOwpAQCAtMTY3LDcgKzE2Niw3IEBACiAJbXV0ZXhfbG9jaygmSEZTUExVU19TQihzYikuYWxsb2NfZmlsZS0+aV9tdXRleCk7CiAJbWFwcGluZyA9IEhGU1BMVVNfU0Ioc2IpLmFsbG9jX2ZpbGUtPmlfbWFwcGluZzsKIAlwbnIgPSBvZmZzZXQgLyBQQUdFX0NBQ0hFX0JJVFM7Ci0JcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBwbnIsIChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIHBuciwgTlVMTCk7CiAJcHB0ciA9IGttYXAocGFnZSk7CiAJY3VyciA9IHBwdHIgKyAob2Zmc2V0ICYgKFBBR0VfQ0FDSEVfQklUUyAtIDEpKSAvIDMyOwogCWVuZCA9IHBwdHIgKyBQQUdFX0NBQ0hFX0JJVFMgLyAzMjsKQEAgLTE5OSw3ICsxOTgsNyBAQAogCQkJYnJlYWs7CiAJCXNldF9wYWdlX2RpcnR5KHBhZ2UpOwogCQlrdW5tYXAocGFnZSk7Ci0JCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgKytwbnIsIChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCArK3BuciwgTlVMTCk7CiAJCXBwdHIgPSBrbWFwKHBhZ2UpOwogCQljdXJyID0gcHB0cjsKIAkJZW5kID0gcHB0ciArIFBBR0VfQ0FDSEVfQklUUyAvIDMyOwpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9ibm9kZS5jIGIvZnMvaGZzcGx1cy9ibm9kZS5jCmluZGV4IDc0NmFiYzkuLjc3YmY0MzQgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvYm5vZGUuYworKysgYi9mcy9oZnNwbHVzL2Jub2RlLmMKQEAgLTQ0MCw3ICs0NDAsNyBAQAogCWJsb2NrID0gb2ZmID4+IFBBR0VfQ0FDSEVfU0hJRlQ7CiAJbm9kZS0+cGFnZV9vZmZzZXQgPSBvZmYgJiB+UEFHRV9DQUNIRV9NQVNLOwogCWZvciAoaSA9IDA7IGkgPCB0cmVlLT5wYWdlc19wZXJfYm5vZGU7IGJsb2NrKyssIGkrKykgewotCQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIGJsb2NrLCAoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCQlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgYmxvY2ssIE5VTEwpOwogCQlpZiAoSVNfRVJSKHBhZ2UpKQogCQkJZ290byBmYWlsOwogCQlpZiAoUGFnZUVycm9yKHBhZ2UpKSB7CmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2J0cmVlLmMgYi9mcy9oZnNwbHVzL2J0cmVlLmMKaW5kZXggZWZmYTg5OS4uY2ZjODUyZiAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy9idHJlZS5jCisrKyBiL2ZzL2hmc3BsdXMvYnRyZWUuYwpAQCAtMzgsNyArMzgsNyBAQAogCQlnb3RvIGZyZWVfdHJlZTsKIAogCW1hcHBpbmcgPSB0cmVlLT5pbm9kZS0+aV9tYXBwaW5nOwotCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgMCwgKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgMCwgTlVMTCk7CiAJaWYgKElTX0VSUihwYWdlKSkKIAkJZ290byBmcmVlX3RyZWU7CiAKZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvc3VwZXIuYyBiL2ZzL2hmc3BsdXMvc3VwZXIuYwppbmRleCA3ODQzZjc5Li4wYTkyZmEyIDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL3N1cGVyLmMKKysrIGIvZnMvaGZzcGx1cy9zdXBlci5jCkBAIC0yMTIsOCArMjEyLDEwIEBACiAJc2ItPnNfZnNfaW5mbyA9IE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgaGZzcGx1c19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgaGZzcGx1c19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogeworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkZW50cnktPmRfc2I7CisKIAlidWYtPmZfdHlwZSA9IEhGU1BMVVNfU1VQRVJfTUFHSUM7CiAJYnVmLT5mX2JzaXplID0gc2ItPnNfYmxvY2tzaXplOwogCWJ1Zi0+Zl9ibG9ja3MgPSBIRlNQTFVTX1NCKHNiKS50b3RhbF9ibG9ja3MgPDwgSEZTUExVU19TQihzYikuZnNfc2hpZnQ7CkBAIC00NTAsMTAgKzQ1MiwxMiBAQAogCiAjZGVmaW5lIEhGU1BMVVNfSU5PREVfU0laRQlzaXplb2Yoc3RydWN0IGhmc3BsdXNfaW5vZGVfaW5mbykKIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqaGZzcGx1c19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJCSAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgaGZzcGx1c19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQkgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsCisJCQkgIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGhmc3BsdXNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgaGZzcGx1c19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGhmc3BsdXNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2hvc3Rmcy9ob3N0ZnNfa2Vybi5jIGIvZnMvaG9zdGZzL2hvc3Rmc19rZXJuLmMKaW5kZXggYmYwZjhlMS4uOGUwZDM3NyAxMDA2NDQKLS0tIGEvZnMvaG9zdGZzL2hvc3Rmc19rZXJuLmMKKysrIGIvZnMvaG9zdGZzL2hvc3Rmc19rZXJuLmMKQEAgLTIzOSw3ICsyMzksNyBAQAogCXJldHVybihlcnIpOwogfQogCi1pbnQgaG9zdGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqc2YpCitpbnQgaG9zdGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpzZikKIHsKIAkvKiBkb19zdGF0ZnMgdXNlcyBzdHJ1Y3Qgc3RhdGZzNjQgaW50ZXJuYWxseSwgYnV0IHRoZSBsaW51eCBrZXJuZWwKIAkgKiBzdHJ1Y3Qgc3RhdGZzIHN0aWxsIGhhcyAzMi1iaXQgdmVyc2lvbnMgZm9yIG1vc3Qgb2YgdGhlc2UgZmllbGRzLApAQCAtMjUyLDcgKzI1Miw3IEBACiAJbG9uZyBsb25nIGZfZmlsZXM7CiAJbG9uZyBsb25nIGZfZmZyZWU7CiAKLQllcnIgPSBkb19zdGF0ZnMoSE9TVEZTX0koc2ItPnNfcm9vdC0+ZF9pbm9kZSktPmhvc3RfZmlsZW5hbWUsCisJZXJyID0gZG9fc3RhdGZzKEhPU1RGU19JKGRlbnRyeS0+ZF9zYi0+c19yb290LT5kX2lub2RlKS0+aG9zdF9maWxlbmFtZSwKIAkJCSZzZi0+Zl9ic2l6ZSwgJmZfYmxvY2tzLCAmZl9iZnJlZSwgJmZfYmF2YWlsLCAmZl9maWxlcywKIAkJCSZmX2ZmcmVlLCAmc2YtPmZfZnNpZCwgc2l6ZW9mKHNmLT5mX2ZzaWQpLAogCQkJJnNmLT5mX25hbWVsZW4sIHNmLT5mX3NwYXJlKTsKQEAgLTk5MywxMSArOTkzLDExIEBACiAJcmV0dXJuKGVycik7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmhvc3Rmc19yZWFkX3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICp0eXBlLAotCQkJCQkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCSAgICAgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgaG9zdGZzX3JlYWRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnR5cGUsCisJCQkgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCisJCQkgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybihnZXRfc2Jfbm9kZXYodHlwZSwgZmxhZ3MsIGRhdGEsIGhvc3Rmc19maWxsX3NiX2NvbW1vbikpOworCXJldHVybiBnZXRfc2Jfbm9kZXYodHlwZSwgZmxhZ3MsIGRhdGEsIGhvc3Rmc19maWxsX3NiX2NvbW1vbiwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGhvc3Rmc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvaHBmcy9zdXBlci5jIGIvZnMvaHBmcy9zdXBlci5jCmluZGV4IGQ3MmQ4YzguLmY3OTg0ODAgMTAwNjQ0Ci0tLSBhL2ZzL2hwZnMvc3VwZXIuYworKysgYi9mcy9ocGZzL3N1cGVyLmMKQEAgLTEzNSw4ICsxMzUsOSBAQAogCXJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIGludCBocGZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGhwZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMgPSBkZW50cnktPmRfc2I7CiAJc3RydWN0IGhwZnNfc2JfaW5mbyAqc2JpID0gaHBmc19zYihzKTsKIAlsb2NrX2tlcm5lbCgpOwogCkBAIC02NjIsMTAgKzY2MywxMSBAQAogCXJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpocGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBocGZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBocGZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGhwZnNfZmlsbF9zdXBlciwKKwkJCSAgIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBocGZzX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9ocHBmcy9ocHBmc19rZXJuLmMgYi9mcy9ocHBmcy9ocHBmc19rZXJuLmMKaW5kZXggNWU2MzYzYi4uM2E5YmRmNSAxMDA2NDQKLS0tIGEvZnMvaHBwZnMvaHBwZnNfa2Vybi5jCisrKyBiL2ZzL2hwcGZzL2hwcGZzX2tlcm4uYwpAQCAtNjE2LDcgKzYxNiw3IEBACiAJLmZzeW5jCQk9IGhwcGZzX2ZzeW5jLAogfTsKIAotc3RhdGljIGludCBocHBmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKnNmKQorc3RhdGljIGludCBocHBmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqc2YpCiB7CiAJc2YtPmZfYmxvY2tzID0gMDsKIAlzZi0+Zl9iZnJlZSA9IDA7CkBAIC03NjksMTEgKzc2OSwxMSBAQAogCXJldHVybihlcnIpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpocHBmc19yZWFkX3N1cGVyKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICp0eXBlLAotCQkJCQkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCSAgICAgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgaHBwZnNfcmVhZF9zdXBlcihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwKKwkJCSAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybihnZXRfc2Jfbm9kZXYodHlwZSwgZmxhZ3MsIGRhdGEsIGhwcGZzX2ZpbGxfc3VwZXIpKTsKKwlyZXR1cm4gZ2V0X3NiX25vZGV2KHR5cGUsIGZsYWdzLCBkYXRhLCBocHBmc19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgaHBwZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jIGIvZnMvaHVnZXRsYmZzL2lub2RlLmMKaW5kZXggM2E1YjRlOS4uZTY0MTBkOCAxMDA2NDQKLS0tIGEvZnMvaHVnZXRsYmZzL2lub2RlLmMKKysrIGIvZnMvaHVnZXRsYmZzL2lub2RlLmMKQEAgLTU5LDcgKzU5LDYgQEAKIHN0YXRpYyBpbnQgaHVnZXRsYmZzX2ZpbGVfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiB7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOwotCXN0cnVjdCBodWdldGxiZnNfaW5vZGVfaW5mbyAqaW5mbyA9IEhVR0VUTEJGU19JKGlub2RlKTsKIAlsb2ZmX3QgbGVuLCB2bWFfbGVuOwogCWludCByZXQ7CiAKQEAgLTg3LDkgKzg2LDEwIEBACiAJaWYgKCEodm1hLT52bV9mbGFncyAmIFZNX1dSSVRFKSAmJiBsZW4gPiBpbm9kZS0+aV9zaXplKQogCQlnb3RvIG91dDsKIAotCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fTUFZU0hBUkUpCi0JCWlmIChodWdldGxiX2V4dGVuZF9yZXNlcnZhdGlvbihpbmZvLCBsZW4gPj4gSFBBR0VfU0hJRlQpICE9IDApCi0JCQlnb3RvIG91dDsKKwlpZiAodm1hLT52bV9mbGFncyAmIFZNX01BWVNIQVJFICYmCisJICAgIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhpbm9kZSwgdm1hLT52bV9wZ29mZiA+PiAoSFBBR0VfU0hJRlQtUEFHRV9TSElGVCksCisJCQkJICBsZW4gPj4gSFBBR0VfU0hJRlQpKQorCQlnb3RvIG91dDsKIAogCXJldCA9IDA7CiAJaHVnZXRsYl9wcmVmYXVsdF9hcmNoX2hvb2sodm1hLT52bV9tbSk7CkBAIC0xOTUsMTIgKzE5NSw4IEBACiAJY29uc3QgcGdvZmZfdCBzdGFydCA9IGxzdGFydCA+PiBIUEFHRV9TSElGVDsKIAlzdHJ1Y3QgcGFnZXZlYyBwdmVjOwogCXBnb2ZmX3QgbmV4dDsKLQlpbnQgaTsKKwlpbnQgaSwgZnJlZWQgPSAwOwogCi0JaHVnZXRsYl90cnVuY2F0ZV9yZXNlcnZhdGlvbihIVUdFVExCRlNfSShpbm9kZSksCi0JCQkJICAgICBsc3RhcnQgPj4gSFBBR0VfU0hJRlQpOwotCWlmICghbWFwcGluZy0+bnJwYWdlcykKLQkJcmV0dXJuOwogCXBhZ2V2ZWNfaW5pdCgmcHZlYywgMCk7CiAJbmV4dCA9IHN0YXJ0OwogCXdoaWxlICgxKSB7CkBAIC0yMjEsMTAgKzIxNywxMiBAQAogCQkJdHJ1bmNhdGVfaHVnZV9wYWdlKHBhZ2UpOwogCQkJdW5sb2NrX3BhZ2UocGFnZSk7CiAJCQlodWdldGxiX3B1dF9xdW90YShtYXBwaW5nKTsKKwkJCWZyZWVkKys7CiAJCX0KIAkJaHVnZV9wYWdldmVjX3JlbGVhc2UoJnB2ZWMpOwogCX0KIAlCVUdfT04oIWxzdGFydCAmJiBtYXBwaW5nLT5ucnBhZ2VzKTsKKwlodWdldGxiX3VucmVzZXJ2ZV9wYWdlcyhpbm9kZSwgc3RhcnQsIGZyZWVkKTsKIH0KIAogc3RhdGljIHZvaWQgaHVnZXRsYmZzX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQpAQCAtMzY2LDYgKzM2NCw3IEBACiAJCWlub2RlLT5pX21hcHBpbmctPmFfb3BzID0gJmh1Z2V0bGJmc19hb3BzOwogCQlpbm9kZS0+aV9tYXBwaW5nLT5iYWNraW5nX2Rldl9pbmZvID0maHVnZXRsYmZzX2JhY2tpbmdfZGV2X2luZm87CiAJCWlub2RlLT5pX2F0aW1lID0gaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IENVUlJFTlRfVElNRTsKKwkJSU5JVF9MSVNUX0hFQUQoJmlub2RlLT5pX21hcHBpbmctPnByaXZhdGVfbGlzdCk7CiAJCWluZm8gPSBIVUdFVExCRlNfSShpbm9kZSk7CiAJCW1wb2xfc2hhcmVkX3BvbGljeV9pbml0KCZpbmZvLT5wb2xpY3ksIE1QT0xfREVGQVVMVCwgTlVMTCk7CiAJCXN3aXRjaCAobW9kZSAmIFNfSUZNVCkgewpAQCAtNDY3LDkgKzQ2Niw5IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaHVnZXRsYmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQorc3RhdGljIGludCBodWdldGxiZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKLQlzdHJ1Y3QgaHVnZXRsYmZzX3NiX2luZm8gKnNiaW5mbyA9IEhVR0VUTEJGU19TQihzYik7CisJc3RydWN0IGh1Z2V0bGJmc19zYl9pbmZvICpzYmluZm8gPSBIVUdFVExCRlNfU0IoZGVudHJ5LT5kX3NiKTsKIAogCWJ1Zi0+Zl90eXBlID0gSFVHRVRMQkZTX01BR0lDOwogCWJ1Zi0+Zl9ic2l6ZSA9IEhQQUdFX1NJWkU7CkBAIC01MzgsNyArNTM3LDYgQEAKIAkJaHVnZXRsYmZzX2luY19mcmVlX2lub2RlcyhzYmluZm8pOwogCQlyZXR1cm4gTlVMTDsKIAl9Ci0JcC0+cHJlcmVzZXJ2ZWRfaHBhZ2VzID0gMDsKIAlyZXR1cm4gJnAtPnZmc19pbm9kZTsKIH0KIApAQCAtNzIzLDEwICs3MjEsMTAgQEAKIAl9CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmh1Z2V0bGJmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgaHVnZXRsYmZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBodWdldGxiZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgaHVnZXRsYmZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBodWdldGxiZnNfZnNfdHlwZSA9IHsKQEAgLTc4MSw4ICs3NzksNyBAQAogCQlnb3RvIG91dF9maWxlOwogCiAJZXJyb3IgPSAtRU5PTUVNOwotCWlmIChodWdldGxiX2V4dGVuZF9yZXNlcnZhdGlvbihIVUdFVExCRlNfSShpbm9kZSksCi0JCQkJICAgICAgIHNpemUgPj4gSFBBR0VfU0hJRlQpICE9IDApCisJaWYgKGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhpbm9kZSwgMCwgc2l6ZSA+PiBIUEFHRV9TSElGVCkpCiAJCWdvdG8gb3V0X2lub2RlOwogCiAJZF9pbnN0YW50aWF0ZShkZW50cnksIGlub2RlKTsKZGlmZiAtLWdpdCBhL2ZzL2lub3RpZnlfdXNlci5jIGIvZnMvaW5vdGlmeV91c2VyLmMKaW5kZXggOWU5OTMxZS4uZjIzODY0NCAxMDA2NDQKLS0tIGEvZnMvaW5vdGlmeV91c2VyLmMKKysrIGIvZnMvaW5vdGlmeV91c2VyLmMKQEAgLTY3MiwxMSArNjcyLDExIEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqCitzdGF0aWMgaW50CiBpbm90aWZ5X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLAotCSAgICAgICBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKKwkgICAgICAgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotICAgIHJldHVybiBnZXRfc2JfcHNldWRvKGZzX3R5cGUsICJpbm90aWZ5IiwgTlVMTCwgMHhCQUQxREVBKTsKKwlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAiaW5vdGlmeSIsIE5VTEwsIDB4QkFEMURFQSwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGlub3RpZnlfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2lvcHJpby5jIGIvZnMvaW9wcmlvLmMKaW5kZXggY2E3NzAwOC4uN2ZhNzZlZCAxMDA2NDQKLS0tIGEvZnMvaW9wcmlvLmMKKysrIGIvZnMvaW9wcmlvLmMKQEAgLTI0LDE1ICsyNCwyMSBAQAogI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgogI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4KICNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgorI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+CiAKIHN0YXRpYyBpbnQgc2V0X3Rhc2tfaW9wcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IGlvcHJpbykKIHsKKwlpbnQgZXJyOwogCXN0cnVjdCBpb19jb250ZXh0ICppb2M7CiAKIAlpZiAodGFzay0+dWlkICE9IGN1cnJlbnQtPmV1aWQgJiYKIAkgICAgdGFzay0+dWlkICE9IGN1cnJlbnQtPnVpZCAmJiAhY2FwYWJsZShDQVBfU1lTX05JQ0UpKQogCQlyZXR1cm4gLUVQRVJNOwogCisJZXJyID0gc2VjdXJpdHlfdGFza19zZXRpb3ByaW8odGFzaywgaW9wcmlvKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCiAJdGFza19sb2NrKHRhc2spOwogCiAJdGFzay0+aW9wcmlvID0gaW9wcmlvOwpkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaW5vZGUuYyBiL2ZzL2lzb2ZzL2lub2RlLmMKaW5kZXggNzBhZGJiOS4uM2Y5YzhiYSAxMDA2NDQKLS0tIGEvZnMvaXNvZnMvaW5vZGUuYworKysgYi9mcy9pc29mcy9pbm9kZS5jCkBAIC01Niw3ICs1Niw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIGlzb2ZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwotc3RhdGljIGludCBpc29mc19zdGF0ZnMgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKK3N0YXRpYyBpbnQgaXNvZnNfc3RhdGZzIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogCiBzdGF0aWMga21lbV9jYWNoZV90ICppc29mc19pbm9kZV9jYWNoZXA7CiAKQEAgLTkwMSw4ICs5MDEsMTAgQEAKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAotc3RhdGljIGludCBpc29mc19zdGF0ZnMgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGlzb2ZzX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogeworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkZW50cnktPmRfc2I7CisKIAlidWYtPmZfdHlwZSA9IElTT0ZTX1NVUEVSX01BR0lDOwogCWJ1Zi0+Zl9ic2l6ZSA9IHNiLT5zX2Jsb2Nrc2l6ZTsKIAlidWYtPmZfYmxvY2tzID0gKElTT0ZTX1NCKHNiKS0+c19uem9uZXMKQEAgLTEzOTksMTAgKzE0MDEsMTEgQEAKIAlyZXR1cm4gaW5vZGU7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmlzb2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBpc29mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgaXNvZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgaXNvZnNfZmlsbF9zdXBlciwKKwkJCSAgIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBpc285NjYwX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9qYmQvY2hlY2twb2ludC5jIGIvZnMvamJkL2NoZWNrcG9pbnQuYwppbmRleCAzZjUxMDJiLi40NzY3OGEyIDEwMDY0NAotLS0gYS9mcy9qYmQvY2hlY2twb2ludC5jCisrKyBiL2ZzL2piZC9jaGVja3BvaW50LmMKQEAgLTI0LDI5ICsyNCw2NyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAogLyoKLSAqIFVubGluayBhIGJ1ZmZlciBmcm9tIGEgdHJhbnNhY3Rpb24uCisgKiBVbmxpbmsgYSBidWZmZXIgZnJvbSBhIHRyYW5zYWN0aW9uIGNoZWNrcG9pbnQgbGlzdC4KICAqCiAgKiBDYWxsZWQgd2l0aCBqX2xpc3RfbG9jayBoZWxkLgogICovCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2J1ZmZlcl91bmxpbmsoc3RydWN0IGpvdXJuYWxfaGVhZCAqamgpCitzdGF0aWMgaW5saW5lIHZvaWQgX19idWZmZXJfdW5saW5rX2ZpcnN0KHN0cnVjdCBqb3VybmFsX2hlYWQgKmpoKQogewotCXRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uOwotCi0JdHJhbnNhY3Rpb24gPSBqaC0+Yl9jcF90cmFuc2FjdGlvbjsKLQlqaC0+Yl9jcF90cmFuc2FjdGlvbiA9IE5VTEw7CisJdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24gPSBqaC0+Yl9jcF90cmFuc2FjdGlvbjsKIAogCWpoLT5iX2NwbmV4dC0+Yl9jcHByZXYgPSBqaC0+Yl9jcHByZXY7CiAJamgtPmJfY3BwcmV2LT5iX2NwbmV4dCA9IGpoLT5iX2NwbmV4dDsKLQlpZiAodHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9saXN0ID09IGpoKQorCWlmICh0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3QgPT0gamgpIHsKIAkJdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9saXN0ID0gamgtPmJfY3BuZXh0OwotCWlmICh0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3QgPT0gamgpCi0JCXRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfbGlzdCA9IE5VTEw7CisJCWlmICh0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3QgPT0gamgpCisJCQl0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3QgPSBOVUxMOworCX0KK30KKworLyoKKyAqIFVubGluayBhIGJ1ZmZlciBmcm9tIGEgdHJhbnNhY3Rpb24gY2hlY2twb2ludChpbykgbGlzdC4KKyAqCisgKiBDYWxsZWQgd2l0aCBqX2xpc3RfbG9jayBoZWxkLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19idWZmZXJfdW5saW5rKHN0cnVjdCBqb3VybmFsX2hlYWQgKmpoKQoreworCXRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gamgtPmJfY3BfdHJhbnNhY3Rpb247CisKKwlfX2J1ZmZlcl91bmxpbmtfZmlyc3QoamgpOworCWlmICh0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2lvX2xpc3QgPT0gamgpIHsKKwkJdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9pb19saXN0ID0gamgtPmJfY3BuZXh0OworCQlpZiAodHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9pb19saXN0ID09IGpoKQorCQkJdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9pb19saXN0ID0gTlVMTDsKKwl9Cit9CisKKy8qCisgKiBNb3ZlIGEgYnVmZmVyIGZyb20gdGhlIGNoZWNrcG9pbnQgbGlzdCB0byB0aGUgY2hlY2twb2ludCBpbyBsaXN0CisgKgorICogQ2FsbGVkIHdpdGggal9saXN0X2xvY2sgaGVsZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19idWZmZXJfcmVsaW5rX2lvKHN0cnVjdCBqb3VybmFsX2hlYWQgKmpoKQoreworCXRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uID0gamgtPmJfY3BfdHJhbnNhY3Rpb247CisKKwlfX2J1ZmZlcl91bmxpbmtfZmlyc3QoamgpOworCisJaWYgKCF0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2lvX2xpc3QpIHsKKwkJamgtPmJfY3BuZXh0ID0gamgtPmJfY3BwcmV2ID0gamg7CisJfSBlbHNlIHsKKwkJamgtPmJfY3BuZXh0ID0gdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9pb19saXN0OworCQlqaC0+Yl9jcHByZXYgPSB0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2lvX2xpc3QtPmJfY3BwcmV2OworCQlqaC0+Yl9jcHByZXYtPmJfY3BuZXh0ID0gamg7CisJCWpoLT5iX2NwbmV4dC0+Yl9jcHByZXYgPSBqaDsKKwl9CisJdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9pb19saXN0ID0gamg7CiB9CiAKIC8qCiAgKiBUcnkgdG8gcmVsZWFzZSBhIGNoZWNrcG9pbnRlZCBidWZmZXIgZnJvbSBpdHMgdHJhbnNhY3Rpb24uCi0gKiBSZXR1cm5zIDEgaWYgd2UgcmVsZWFzZWQgaXQuCisgKiBSZXR1cm5zIDEgaWYgd2UgcmVsZWFzZWQgaXQgYW5kIDIgaWYgd2UgYWxzbyByZWxlYXNlZCB0aGUKKyAqIHdob2xlIHRyYW5zYWN0aW9uLgorICoKICAqIFJlcXVpcmVzIGpfbGlzdF9sb2NrCiAgKiBDYWxsZWQgdW5kZXIgamJkX2xvY2tfYmhfc3RhdGUoamgyYmgoamgpKSwgYW5kIGRyb3BzIGl0CiAgKi8KQEAgLTU3LDEyICs5NSwxMSBAQAogCiAJaWYgKGpoLT5iX2psaXN0ID09IEJKX05vbmUgJiYgIWJ1ZmZlcl9sb2NrZWQoYmgpICYmICFidWZmZXJfZGlydHkoYmgpKSB7CiAJCUpCVUZGRVJfVFJBQ0UoamgsICJyZW1vdmUgZnJvbSBjaGVja3BvaW50IGxpc3QiKTsKLQkJX19qb3VybmFsX3JlbW92ZV9jaGVja3BvaW50KGpoKTsKKwkJcmV0ID0gX19qb3VybmFsX3JlbW92ZV9jaGVja3BvaW50KGpoKSArIDE7CiAJCWpiZF91bmxvY2tfYmhfc3RhdGUoYmgpOwogCQlqb3VybmFsX3JlbW92ZV9qb3VybmFsX2hlYWQoYmgpOwogCQlCVUZGRVJfVFJBQ0UoYmgsICJyZWxlYXNlIik7CiAJCV9fYnJlbHNlKGJoKTsKLQkJcmV0ID0gMTsKIAl9IGVsc2UgewogCQlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKIAl9CkBAIC0xMTcsODMgKzE1NCw1NCBAQAogfQogCiAvKgotICogQ2xlYW4gdXAgYSB0cmFuc2FjdGlvbidzIGNoZWNrcG9pbnQgbGlzdC4KLSAqCi0gKiBXZSB3YWl0IGZvciBhbnkgcGVuZGluZyBJTyB0byBjb21wbGV0ZSBhbmQgbWFrZSBzdXJlIGFueSBjbGVhbgotICogYnVmZmVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmFuc2FjdGlvbi4KLSAqCi0gKiBSZXR1cm4gMSBpZiB3ZSBwZXJmb3JtZWQgYW55IGFjdGlvbnMgd2hpY2ggbWlnaHQgaGF2ZSBkZXN0cm95ZWQgdGhlCi0gKiBjaGVja3BvaW50LiAgKGpvdXJuYWxfcmVtb3ZlX2NoZWNrcG9pbnQoKSBkZWxldGVzIHRoZSB0cmFuc2FjdGlvbiB3aGVuCi0gKiB0aGUgbGFzdCBjaGVja3BvaW50IGJ1ZmZlciBpcyBjbGVhbnNlZCkKKyAqIENsZWFuIHVwIHRyYW5zYWN0aW9uJ3MgbGlzdCBvZiBidWZmZXJzIHN1Ym1pdHRlZCBmb3IgaW8uCisgKiBXZSB3YWl0IGZvciBhbnkgcGVuZGluZyBJTyB0byBjb21wbGV0ZSBhbmQgcmVtb3ZlIGFueSBjbGVhbgorICogYnVmZmVycy4gTm90ZSB0aGF0IHdlIHRha2UgdGhlIGJ1ZmZlcnMgaW4gdGhlIG9wcG9zaXRlIG9yZGVyaW5nCisgKiBmcm9tIHRoZSBvbmUgaW4gd2hpY2ggdGhleSB3ZXJlIHN1Ym1pdHRlZCBmb3IgSU8uCiAgKgogICogQ2FsbGVkIHdpdGggal9saXN0X2xvY2sgaGVsZC4KICAqLwotc3RhdGljIGludCBfX2NsZWFudXBfdHJhbnNhY3Rpb24oam91cm5hbF90ICpqb3VybmFsLCB0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbikKK3N0YXRpYyB2b2lkIF9fd2FpdF9jcF9pbyhqb3VybmFsX3QgKmpvdXJuYWwsIHRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uKQogewotCXN0cnVjdCBqb3VybmFsX2hlYWQgKmpoLCAqbmV4dF9qaCwgKmxhc3Rfamg7CisJc3RydWN0IGpvdXJuYWxfaGVhZCAqamg7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKLQlpbnQgcmV0ID0gMDsKKwl0aWRfdCB0aGlzX3RpZDsKKwlpbnQgcmVsZWFzZWQgPSAwOwogCi0JYXNzZXJ0X3NwaW5fbG9ja2VkKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7Ci0JamggPSB0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3Q7Ci0JaWYgKCFqaCkKLQkJcmV0dXJuIDA7Ci0KLQlsYXN0X2poID0gamgtPmJfY3BwcmV2OwotCW5leHRfamggPSBqaDsKLQlkbyB7Ci0JCWpoID0gbmV4dF9qaDsKKwl0aGlzX3RpZCA9IHRyYW5zYWN0aW9uLT50X3RpZDsKK3Jlc3RhcnQ6CisJLyogRGlkIHNvbWVib2R5IGNsZWFuIHVwIHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgbWVhbndoaWxlPyAqLworCWlmIChqb3VybmFsLT5qX2NoZWNrcG9pbnRfdHJhbnNhY3Rpb25zICE9IHRyYW5zYWN0aW9uIHx8CisJCQl0cmFuc2FjdGlvbi0+dF90aWQgIT0gdGhpc190aWQpCisJCXJldHVybjsKKwl3aGlsZSAoIXJlbGVhc2VkICYmIHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfaW9fbGlzdCkgeworCQlqaCA9IHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfaW9fbGlzdDsKIAkJYmggPSBqaDJiaChqaCk7CisJCWlmICghamJkX3RyeWxvY2tfYmhfc3RhdGUoYmgpKSB7CisJCQlqYmRfc3luY19iaChqb3VybmFsLCBiaCk7CisJCQlzcGluX2xvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKKwkJCWdvdG8gcmVzdGFydDsKKwkJfQogCQlpZiAoYnVmZmVyX2xvY2tlZChiaCkpIHsKIAkJCWF0b21pY19pbmMoJmJoLT5iX2NvdW50KTsKIAkJCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CisJCQlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKIAkJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJCS8qIHRoZSBqb3VybmFsX2hlYWQgbWF5IGhhdmUgZ29uZSBieSBub3cgKi8KIAkJCUJVRkZFUl9UUkFDRShiaCwgImJyZWxzZSIpOwogCQkJX19icmVsc2UoYmgpOwotCQkJZ290byBvdXRfcmV0dXJuXzE7CisJCQlzcGluX2xvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKKwkJCWdvdG8gcmVzdGFydDsKIAkJfQotCiAJCS8qCi0JCSAqIFRoaXMgaXMgZm91bAorCQkgKiBOb3cgaW4gd2hhdGV2ZXIgc3RhdGUgdGhlIGJ1ZmZlciBjdXJyZW50bHkgaXMsIHdlIGtub3cgdGhhdAorCQkgKiBpdCBoYXMgYmVlbiB3cml0dGVuIG91dCBhbmQgc28gd2UgY2FuIGRyb3AgaXQgZnJvbSB0aGUgbGlzdAogCQkgKi8KLQkJaWYgKCFqYmRfdHJ5bG9ja19iaF9zdGF0ZShiaCkpIHsKLQkJCWpiZF9zeW5jX2JoKGpvdXJuYWwsIGJoKTsKLQkJCWdvdG8gb3V0X3JldHVybl8xOwotCQl9Ci0KLQkJaWYgKGpoLT5iX3RyYW5zYWN0aW9uICE9IE5VTEwpIHsKLQkJCXRyYW5zYWN0aW9uX3QgKnQgPSBqaC0+Yl90cmFuc2FjdGlvbjsKLQkJCXRpZF90IHRpZCA9IHQtPnRfdGlkOwotCi0JCQlzcGluX3VubG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwotCQkJamJkX3VubG9ja19iaF9zdGF0ZShiaCk7Ci0JCQlsb2dfc3RhcnRfY29tbWl0KGpvdXJuYWwsIHRpZCk7Ci0JCQlsb2dfd2FpdF9jb21taXQoam91cm5hbCwgdGlkKTsKLQkJCWdvdG8gb3V0X3JldHVybl8xOwotCQl9Ci0KLQkJLyoKLQkJICogQUtQTTogSSB0aGluayB0aGUgYnVmZmVyX2piZGRpcnR5IHRlc3QgaXMgcmVkdW5kYW50IC0gaXQKLQkJICogc2hvdWxkbid0IGhhdmUgTlVMTCBiX3RyYW5zYWN0aW9uPwotCQkgKi8KLQkJbmV4dF9qaCA9IGpoLT5iX2NwbmV4dDsKLQkJaWYgKCFidWZmZXJfZGlydHkoYmgpICYmICFidWZmZXJfamJkZGlydHkoYmgpKSB7Ci0JCQlCVUZGRVJfVFJBQ0UoYmgsICJyZW1vdmUgZnJvbSBjaGVja3BvaW50Iik7Ci0JCQlfX2pvdXJuYWxfcmVtb3ZlX2NoZWNrcG9pbnQoamgpOwotCQkJamJkX3VubG9ja19iaF9zdGF0ZShiaCk7Ci0JCQlqb3VybmFsX3JlbW92ZV9qb3VybmFsX2hlYWQoYmgpOwotCQkJX19icmVsc2UoYmgpOwotCQkJcmV0ID0gMTsKLQkJfSBlbHNlIHsKLQkJCWpiZF91bmxvY2tfYmhfc3RhdGUoYmgpOwotCQl9Ci0JfSB3aGlsZSAoamggIT0gbGFzdF9qaCk7Ci0KLQlyZXR1cm4gcmV0Owotb3V0X3JldHVybl8xOgotCXNwaW5fbG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwotCXJldHVybiAxOworCQlyZWxlYXNlZCA9IF9fam91cm5hbF9yZW1vdmVfY2hlY2twb2ludChqaCk7CisJCWpiZF91bmxvY2tfYmhfc3RhdGUoYmgpOworCQlqb3VybmFsX3JlbW92ZV9qb3VybmFsX2hlYWQoYmgpOworCQlfX2JyZWxzZShiaCk7CisJfQogfQogCiAjZGVmaW5lIE5SX0JBVENICTY0CkBAIC0yMDMsOSArMjExLDcgQEAKIHsKIAlpbnQgaTsKIAotCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAJbGxfcndfYmxvY2soU1dSSVRFLCAqYmF0Y2hfY291bnQsIGJocyk7Ci0Jc3Bpbl9sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAJZm9yIChpID0gMDsgaSA8ICpiYXRjaF9jb3VudDsgaSsrKSB7CiAJCXN0cnVjdCBidWZmZXJfaGVhZCAqYmggPSBiaHNbaV07CiAJCWNsZWFyX2J1ZmZlcl9qd3JpdGUoYmgpOwpAQCAtMjIxLDE5ICsyMjcsNDMgQEAKICAqIFJldHVybiAxIGlmIHNvbWV0aGluZyBoYXBwZW5lZCB3aGljaCByZXF1aXJlcyB1cyB0byBhYm9ydCB0aGUgY3VycmVudAogICogc2NhbiBvZiB0aGUgY2hlY2twb2ludCBsaXN0LiAgCiAgKgotICogQ2FsbGVkIHdpdGggal9saXN0X2xvY2sgaGVsZC4KKyAqIENhbGxlZCB3aXRoIGpfbGlzdF9sb2NrIGhlbGQgYW5kIGRyb3BzIGl0IGlmIDEgaXMgcmV0dXJuZWQKICAqIENhbGxlZCB1bmRlciBqYmRfbG9ja19iaF9zdGF0ZShqaDJiaChqaCkpLCBhbmQgZHJvcHMgaXQKICAqLwotc3RhdGljIGludCBfX2ZsdXNoX2J1ZmZlcihqb3VybmFsX3QgKmpvdXJuYWwsIHN0cnVjdCBqb3VybmFsX2hlYWQgKmpoLAotCQkJc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmhzLCBpbnQgKmJhdGNoX2NvdW50LAotCQkJaW50ICpkcm9wX2NvdW50KQorc3RhdGljIGludCBfX3Byb2Nlc3NfYnVmZmVyKGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGpvdXJuYWxfaGVhZCAqamgsCisJCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiaHMsIGludCAqYmF0Y2hfY291bnQpCiB7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA9IGpoMmJoKGpoKTsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChidWZmZXJfZGlydHkoYmgpICYmICFidWZmZXJfbG9ja2VkKGJoKSAmJiBqaC0+Yl9qbGlzdCA9PSBCSl9Ob25lKSB7Ci0JCUpfQVNTRVJUX0pIKGpoLCBqaC0+Yl90cmFuc2FjdGlvbiA9PSBOVUxMKTsKKwlpZiAoYnVmZmVyX2xvY2tlZChiaCkpIHsKKwkJYXRvbWljX2luYygmYmgtPmJfY291bnQpOworCQlzcGluX3VubG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOworCQlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKKwkJd2FpdF9vbl9idWZmZXIoYmgpOworCQkvKiB0aGUgam91cm5hbF9oZWFkIG1heSBoYXZlIGdvbmUgYnkgbm93ICovCisJCUJVRkZFUl9UUkFDRShiaCwgImJyZWxzZSIpOworCQlfX2JyZWxzZShiaCk7CisJCXJldCA9IDE7CisJfSBlbHNlIGlmIChqaC0+Yl90cmFuc2FjdGlvbiAhPSBOVUxMKSB7CisJCXRyYW5zYWN0aW9uX3QgKnQgPSBqaC0+Yl90cmFuc2FjdGlvbjsKKwkJdGlkX3QgdGlkID0gdC0+dF90aWQ7CiAKKwkJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKKwkJamJkX3VubG9ja19iaF9zdGF0ZShiaCk7CisJCWxvZ19zdGFydF9jb21taXQoam91cm5hbCwgdGlkKTsKKwkJbG9nX3dhaXRfY29tbWl0KGpvdXJuYWwsIHRpZCk7CisJCXJldCA9IDE7CisJfSBlbHNlIGlmICghYnVmZmVyX2RpcnR5KGJoKSkgeworCQlKX0FTU0VSVF9KSChqaCwgIWJ1ZmZlcl9qYmRkaXJ0eShiaCkpOworCQlCVUZGRVJfVFJBQ0UoYmgsICJyZW1vdmUgZnJvbSBjaGVja3BvaW50Iik7CisJCV9fam91cm5hbF9yZW1vdmVfY2hlY2twb2ludChqaCk7CisJCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CisJCWpiZF91bmxvY2tfYmhfc3RhdGUoYmgpOworCQlqb3VybmFsX3JlbW92ZV9qb3VybmFsX2hlYWQoYmgpOworCQlfX2JyZWxzZShiaCk7CisJCXJldCA9IDE7CisJfSBlbHNlIHsKIAkJLyoKIAkJICogSW1wb3J0YW50OiB3ZSBhcmUgYWJvdXQgdG8gd3JpdGUgdGhlIGJ1ZmZlciwgYW5kCiAJCSAqIHBvc3NpYmx5IGJsb2NrLCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSBqb3VybmFsIGxvY2suCkBAIC0yNDYsNDUgKzI3NiwzMCBAQAogCQlKX0FTU0VSVF9CSChiaCwgIWJ1ZmZlcl9qd3JpdGUoYmgpKTsKIAkJc2V0X2J1ZmZlcl9qd3JpdGUoYmgpOwogCQliaHNbKmJhdGNoX2NvdW50XSA9IGJoOworCQlfX2J1ZmZlcl9yZWxpbmtfaW8oamgpOwogCQlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKIAkJKCpiYXRjaF9jb3VudCkrKzsKIAkJaWYgKCpiYXRjaF9jb3VudCA9PSBOUl9CQVRDSCkgeworCQkJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKIAkJCV9fZmx1c2hfYmF0Y2goam91cm5hbCwgYmhzLCBiYXRjaF9jb3VudCk7CiAJCQlyZXQgPSAxOwogCQl9Ci0JfSBlbHNlIHsKLQkJaW50IGxhc3RfYnVmZmVyID0gMDsKLQkJaWYgKGpoLT5iX2NwbmV4dCA9PSBqaCkgewotCQkJLyogV2UgbWF5IGJlIGFib3V0IHRvIGRyb3AgdGhlIHRyYW5zYWN0aW9uLiAgVGVsbCB0aGUKLQkJCSAqIGNhbGxlciB0aGF0IHRoZSBsaXN0cyBoYXZlIGNoYW5nZWQuCi0JCQkgKi8KLQkJCWxhc3RfYnVmZmVyID0gMTsKLQkJfQotCQlpZiAoX190cnlfdG9fZnJlZV9jcF9idWYoamgpKSB7Ci0JCQkoKmRyb3BfY291bnQpKys7Ci0JCQlyZXQgPSBsYXN0X2J1ZmZlcjsKLQkJfQogCX0KIAlyZXR1cm4gcmV0OwogfQogCiAvKgotICogUGVyZm9ybSBhbiBhY3R1YWwgY2hlY2twb2ludC4gIFdlIGRvbid0IHdyaXRlIG91dCBvbmx5IGVub3VnaCB0bwotICogc2F0aXNmeSB0aGUgY3VycmVudCBibG9ja2VkIHJlcXVlc3RzOiByYXRoZXIgd2Ugc3VibWl0IGEgcmVhc29uYWJseQotICogc2l6ZWQgY2h1bmsgb2YgdGhlIG91dHN0YW5kaW5nIGRhdGEgdG8gZGlzayBhdCBvbmNlIGZvcgotICogZWZmaWNpZW5jeS4gIF9fbG9nX3dhaXRfZm9yX3NwYWNlKCkgd2lsbCByZXRyeSBpZiB3ZSBkaWRuJ3QgZnJlZSBlbm91Z2guCisgKiBQZXJmb3JtIGFuIGFjdHVhbCBjaGVja3BvaW50LiBXZSB0YWtlIHRoZSBmaXJzdCB0cmFuc2FjdGlvbiBvbiB0aGUKKyAqIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHRvIGJlIGNoZWNrcG9pbnRlZCBhbmQgc2VuZCBhbGwgaXRzIGJ1ZmZlcnMKKyAqIHRvIGRpc2suIFdlIHN1Ym1pdCBsYXJnZXIgY2h1bmtzIG9mIGRhdGEgYXQgb25jZS4KICAqIAotICogSG93ZXZlciwgd2UgX2RvXyB0YWtlIGludG8gYWNjb3VudCB0aGUgYW1vdW50IHJlcXVlc3RlZCBzbyB0aGF0IG9uY2UKLSAqIHRoZSBJTyBoYXMgYmVlbiBxdWV1ZWQsIHdlIGNhbiByZXR1cm4gYXMgc29vbiBhcyBlbm91Z2ggb2YgaXQgaGFzCi0gKiBjb21wbGV0ZWQgdG8gZGlzay4KLSAqCiAgKiBUaGUgam91cm5hbCBzaG91bGQgYmUgbG9ja2VkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKi8KIGludCBsb2dfZG9fY2hlY2twb2ludChqb3VybmFsX3QgKmpvdXJuYWwpCiB7CisJdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb247CisJdGlkX3QgdGhpc190aWQ7CiAJaW50IHJlc3VsdDsKLQlpbnQgYmF0Y2hfY291bnQgPSAwOwotCXN0cnVjdCBidWZmZXJfaGVhZCAqYmhzW05SX0JBVENIXTsKIAogCWpiZF9kZWJ1ZygxLCAiU3RhcnQgY2hlY2twb2ludFxuIik7CiAKQEAgLTI5OSw3OSArMzE0LDY4IEBACiAJCXJldHVybiByZXN1bHQ7CiAKIAkvKgotCSAqIE9LLCB3ZSBuZWVkIHRvIHN0YXJ0IHdyaXRpbmcgZGlzayBibG9ja3MuICBUcnkgdG8gZnJlZSB1cCBhCi0JICogcXVhcnRlciBvZiB0aGUgbG9nIGluIGEgc2luZ2xlIGNoZWNrcG9pbnQgaWYgd2UgY2FuLgotCSAqLwotCS8qCi0JICogQUtQTTogY2hlY2sgdGhpcyBjb2RlLiAgSSBoYWQgYSBmZWVsaW5nIGEgd2hpbGUgYmFjayB0aGF0IGl0Ci0JICogZGVnZW5lcmF0ZXMgaW50byBhIGJ1c3kgbG9vcCBhdCB1bm1vdW50IHRpbWUuCisJICogT0ssIHdlIG5lZWQgdG8gc3RhcnQgd3JpdGluZyBkaXNrIGJsb2Nrcy4gIFRha2Ugb25lIHRyYW5zYWN0aW9uCisJICogYW5kIHdyaXRlIGl0LgogCSAqLwogCXNwaW5fbG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwotCXdoaWxlIChqb3VybmFsLT5qX2NoZWNrcG9pbnRfdHJhbnNhY3Rpb25zKSB7Ci0JCXRyYW5zYWN0aW9uX3QgKnRyYW5zYWN0aW9uOwotCQlzdHJ1Y3Qgam91cm5hbF9oZWFkICpqaCwgKmxhc3RfamgsICpuZXh0X2poOwotCQlpbnQgZHJvcF9jb3VudCA9IDA7Ci0JCWludCBjbGVhbnVwX3JldCwgcmV0cnkgPSAwOwotCQl0aWRfdCB0aGlzX3RpZDsKKwlpZiAoIWpvdXJuYWwtPmpfY2hlY2twb2ludF90cmFuc2FjdGlvbnMpCisJCWdvdG8gb3V0OworCXRyYW5zYWN0aW9uID0gam91cm5hbC0+al9jaGVja3BvaW50X3RyYW5zYWN0aW9uczsKKwl0aGlzX3RpZCA9IHRyYW5zYWN0aW9uLT50X3RpZDsKK3Jlc3RhcnQ6CisJLyoKKwkgKiBJZiBzb21lb25lIGNsZWFuZWQgdXAgdGhpcyB0cmFuc2FjdGlvbiB3aGlsZSB3ZSBzbGVwdCwgd2UncmUKKwkgKiBkb25lIChtYXliZSBpdCdzIGEgbmV3IHRyYW5zYWN0aW9uLCBidXQgaXQgZmVsbCBhdCB0aGUgc2FtZQorCSAqIGFkZHJlc3MpLgorCSAqLworCWlmIChqb3VybmFsLT5qX2NoZWNrcG9pbnRfdHJhbnNhY3Rpb25zID09IHRyYW5zYWN0aW9uICYmCisJCQl0cmFuc2FjdGlvbi0+dF90aWQgPT0gdGhpc190aWQpIHsKKwkJaW50IGJhdGNoX2NvdW50ID0gMDsKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaHNbTlJfQkFUQ0hdOworCQlzdHJ1Y3Qgam91cm5hbF9oZWFkICpqaDsKKwkJaW50IHJldHJ5ID0gMDsKIAotCQl0cmFuc2FjdGlvbiA9IGpvdXJuYWwtPmpfY2hlY2twb2ludF90cmFuc2FjdGlvbnM7Ci0JCXRoaXNfdGlkID0gdHJhbnNhY3Rpb24tPnRfdGlkOwotCQlqaCA9IHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfbGlzdDsKLQkJbGFzdF9qaCA9IGpoLT5iX2NwcHJldjsKLQkJbmV4dF9qaCA9IGpoOwotCQlkbyB7CisJCXdoaWxlICghcmV0cnkgJiYgdHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9saXN0KSB7CiAJCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOwogCi0JCQlqaCA9IG5leHRfamg7Ci0JCQluZXh0X2poID0gamgtPmJfY3BuZXh0OworCQkJamggPSB0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3Q7CiAJCQliaCA9IGpoMmJoKGpoKTsKIAkJCWlmICghamJkX3RyeWxvY2tfYmhfc3RhdGUoYmgpKSB7CiAJCQkJamJkX3N5bmNfYmgoam91cm5hbCwgYmgpOwotCQkJCXNwaW5fbG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwogCQkJCXJldHJ5ID0gMTsKIAkJCQlicmVhazsKIAkJCX0KLQkJCXJldHJ5ID0gX19mbHVzaF9idWZmZXIoam91cm5hbCwgamgsIGJocywgJmJhdGNoX2NvdW50LCAmZHJvcF9jb3VudCk7Ci0JCQlpZiAoY29uZF9yZXNjaGVkX2xvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKSkgeworCQkJcmV0cnkgPSBfX3Byb2Nlc3NfYnVmZmVyKGpvdXJuYWwsIGpoLCBiaHMsJmJhdGNoX2NvdW50KTsKKwkJCWlmICghcmV0cnkgJiYgbG9ja19uZWVkX3Jlc2NoZWQoJmpvdXJuYWwtPmpfbGlzdF9sb2NrKSl7CisJCQkJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKIAkJCQlyZXRyeSA9IDE7CiAJCQkJYnJlYWs7CiAJCQl9Ci0JCX0gd2hpbGUgKGpoICE9IGxhc3RfamggJiYgIXJldHJ5KTsKLQotCQlpZiAoYmF0Y2hfY291bnQpIHsKLQkJCV9fZmx1c2hfYmF0Y2goam91cm5hbCwgYmhzLCAmYmF0Y2hfY291bnQpOwotCQkJcmV0cnkgPSAxOwogCQl9CiAKKwkJaWYgKGJhdGNoX2NvdW50KSB7CisJCQlpZiAoIXJldHJ5KSB7CisJCQkJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKKwkJCQlyZXRyeSA9IDE7CisJCQl9CisJCQlfX2ZsdXNoX2JhdGNoKGpvdXJuYWwsIGJocywgJmJhdGNoX2NvdW50KTsKKwkJfQorCisJCWlmIChyZXRyeSkgeworCQkJc3Bpbl9sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CisJCQlnb3RvIHJlc3RhcnQ7CisJCX0KIAkJLyoKLQkJICogSWYgc29tZW9uZSBjbGVhbmVkIHVwIHRoaXMgdHJhbnNhY3Rpb24gd2hpbGUgd2Ugc2xlcHQsIHdlJ3JlCi0JCSAqIGRvbmUKKwkJICogTm93IHdlIGhhdmUgY2xlYW5lZCB1cCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24ncyBjaGVja3BvaW50CisJCSAqIGxpc3QuIExldCdzIGNsZWFuIHVwIHRoZSBzZWNvbmQgb25lCiAJCSAqLwotCQlpZiAoam91cm5hbC0+al9jaGVja3BvaW50X3RyYW5zYWN0aW9ucyAhPSB0cmFuc2FjdGlvbikKLQkJCWJyZWFrOwotCQlpZiAocmV0cnkpCi0JCQljb250aW51ZTsKLQkJLyoKLQkJICogTWF5YmUgaXQncyBhIG5ldyB0cmFuc2FjdGlvbiwgYnV0IGl0IGZlbGwgYXQgdGhlIHNhbWUKLQkJICogYWRkcmVzcwotCQkgKi8KLQkJaWYgKHRyYW5zYWN0aW9uLT50X3RpZCAhPSB0aGlzX3RpZCkKLQkJCWNvbnRpbnVlOwotCQkvKgotCQkgKiBXZSBoYXZlIHdhbGtlZCB0aGUgd2hvbGUgdHJhbnNhY3Rpb24gbGlzdCB3aXRob3V0Ci0JCSAqIGZpbmRpbmcgYW55dGhpbmcgdG8gd3JpdGUgdG8gZGlzay4gIFdlIGhhZCBiZXR0ZXIgYmUKLQkJICogYWJsZSB0byBtYWtlIHNvbWUgcHJvZ3Jlc3Mgb3Igd2UgYXJlIGluIHRyb3VibGUuCi0JCSAqLwotCQljbGVhbnVwX3JldCA9IF9fY2xlYW51cF90cmFuc2FjdGlvbihqb3VybmFsLCB0cmFuc2FjdGlvbik7Ci0JCUpfQVNTRVJUKGRyb3BfY291bnQgIT0gMCB8fCBjbGVhbnVwX3JldCAhPSAwKTsKLQkJaWYgKGpvdXJuYWwtPmpfY2hlY2twb2ludF90cmFuc2FjdGlvbnMgIT0gdHJhbnNhY3Rpb24pCi0JCQlicmVhazsKKwkJX193YWl0X2NwX2lvKGpvdXJuYWwsIHRyYW5zYWN0aW9uKTsKIAl9CitvdXQ6CiAJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfbGlzdF9sb2NrKTsKIAlyZXN1bHQgPSBjbGVhbnVwX2pvdXJuYWxfdGFpbChqb3VybmFsKTsKIAlpZiAocmVzdWx0IDwgMCkKIAkJcmV0dXJuIHJlc3VsdDsKLQogCXJldHVybiAwOwogfQogCkBAIC00NTYsNTIgKzQ2MCw5OCBAQAogLyogQ2hlY2twb2ludCBsaXN0IG1hbmFnZW1lbnQgKi8KIAogLyoKLSAqIGpvdXJuYWxfY2xlYW5fY2hlY2twb2ludF9saXN0CisgKiBqb3VybmFsX2NsZWFuX29uZV9jcF9saXN0CiAgKgotICogRmluZCBhbGwgdGhlIHdyaXR0ZW4tYmFjayBjaGVja3BvaW50IGJ1ZmZlcnMgaW4gdGhlIGpvdXJuYWwgYW5kIHJlbGVhc2UgdGhlbS4KKyAqIEZpbmQgYWxsIHRoZSB3cml0dGVuLWJhY2sgY2hlY2twb2ludCBidWZmZXJzIGluIHRoZSBnaXZlbiBsaXN0IGFuZCByZWxlYXNlIHRoZW0uCiAgKgogICogQ2FsbGVkIHdpdGggdGhlIGpvdXJuYWwgbG9ja2VkLgogICogQ2FsbGVkIHdpdGggal9saXN0X2xvY2sgaGVsZC4KICAqIFJldHVybnMgbnVtYmVyIG9mIGJ1ZmVycyByZWFwZWQgKGZvciBkZWJ1ZykKICAqLwogCitzdGF0aWMgaW50IGpvdXJuYWxfY2xlYW5fb25lX2NwX2xpc3Qoc3RydWN0IGpvdXJuYWxfaGVhZCAqamgsIGludCAqcmVsZWFzZWQpCit7CisJc3RydWN0IGpvdXJuYWxfaGVhZCAqbGFzdF9qaDsKKwlzdHJ1Y3Qgam91cm5hbF9oZWFkICpuZXh0X2poID0gamg7CisJaW50IHJldCwgZnJlZWQgPSAwOworCisJKnJlbGVhc2VkID0gMDsKKwlpZiAoIWpoKQorCQlyZXR1cm4gMDsKKworIAlsYXN0X2poID0gamgtPmJfY3BwcmV2OworCWRvIHsKKwkJamggPSBuZXh0X2poOworCQluZXh0X2poID0gamgtPmJfY3BuZXh0OworCQkvKiBVc2UgdHJ5bG9jayBiZWNhdXNlIG9mIHRoZSByYW5raW5nICovCisJCWlmIChqYmRfdHJ5bG9ja19iaF9zdGF0ZShqaDJiaChqaCkpKSB7CisJCQlyZXQgPSBfX3RyeV90b19mcmVlX2NwX2J1ZihqaCk7CisJCQlpZiAocmV0KSB7CisJCQkJZnJlZWQrKzsKKwkJCQlpZiAocmV0ID09IDIpIHsKKwkJCQkJKnJlbGVhc2VkID0gMTsKKwkJCQkJcmV0dXJuIGZyZWVkOworCQkJCX0KKwkJCX0KKwkJfQorCQkvKgorCQkgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgZnJlZXMgdXAgc29tZSBtZW1vcnkKKwkJICogaWYgcG9zc2libGUgc28gd2UgZG9udCBoYXZlIGFuIG9ibGlnYXRpb24KKwkJICogdG8gZmluaXNoIHByb2Nlc3NpbmcuIEJhaWwgb3V0IGlmIHByZWVtcHRpb24KKwkJICogcmVxdWVzdGVkOgorCQkgKi8KKwkJaWYgKG5lZWRfcmVzY2hlZCgpKQorCQkJcmV0dXJuIGZyZWVkOworCX0gd2hpbGUgKGpoICE9IGxhc3RfamgpOworCisJcmV0dXJuIGZyZWVkOworfQorCisvKgorICogam91cm5hbF9jbGVhbl9jaGVja3BvaW50X2xpc3QKKyAqCisgKiBGaW5kIGFsbCB0aGUgd3JpdHRlbi1iYWNrIGNoZWNrcG9pbnQgYnVmZmVycyBpbiB0aGUgam91cm5hbCBhbmQgcmVsZWFzZSB0aGVtLgorICoKKyAqIENhbGxlZCB3aXRoIHRoZSBqb3VybmFsIGxvY2tlZC4KKyAqIENhbGxlZCB3aXRoIGpfbGlzdF9sb2NrIGhlbGQuCisgKiBSZXR1cm5zIG51bWJlciBvZiBidWZmZXJzIHJlYXBlZCAoZm9yIGRlYnVnKQorICovCisKIGludCBfX2pvdXJuYWxfY2xlYW5fY2hlY2twb2ludF9saXN0KGpvdXJuYWxfdCAqam91cm5hbCkKIHsKIAl0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiwgKmxhc3RfdHJhbnNhY3Rpb24sICpuZXh0X3RyYW5zYWN0aW9uOwogCWludCByZXQgPSAwOworCWludCByZWxlYXNlZDsKIAogCXRyYW5zYWN0aW9uID0gam91cm5hbC0+al9jaGVja3BvaW50X3RyYW5zYWN0aW9uczsKLQlpZiAodHJhbnNhY3Rpb24gPT0gMCkKKwlpZiAoIXRyYW5zYWN0aW9uKQogCQlnb3RvIG91dDsKIAogCWxhc3RfdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbi0+dF9jcHByZXY7CiAJbmV4dF90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOwogCWRvIHsKLQkJc3RydWN0IGpvdXJuYWxfaGVhZCAqamg7Ci0KIAkJdHJhbnNhY3Rpb24gPSBuZXh0X3RyYW5zYWN0aW9uOwogCQluZXh0X3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb24tPnRfY3BuZXh0OwotCQlqaCA9IHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfbGlzdDsKLQkJaWYgKGpoKSB7Ci0JCQlzdHJ1Y3Qgam91cm5hbF9oZWFkICpsYXN0X2poID0gamgtPmJfY3BwcmV2OwotCQkJc3RydWN0IGpvdXJuYWxfaGVhZCAqbmV4dF9qaCA9IGpoOwotCi0JCQlkbyB7Ci0JCQkJamggPSBuZXh0X2poOwotCQkJCW5leHRfamggPSBqaC0+Yl9jcG5leHQ7Ci0JCQkJLyogVXNlIHRyeWxvY2sgYmVjYXVzZSBvZiB0aGUgcmFua25pZyAqLwotCQkJCWlmIChqYmRfdHJ5bG9ja19iaF9zdGF0ZShqaDJiaChqaCkpKQotCQkJCQlyZXQgKz0gX190cnlfdG9fZnJlZV9jcF9idWYoamgpOwotCQkJCS8qCi0JCQkJICogVGhpcyBmdW5jdGlvbiBvbmx5IGZyZWVzIHVwIHNvbWUgbWVtb3J5Ci0JCQkJICogaWYgcG9zc2libGUgc28gd2UgZG9udCBoYXZlIGFuIG9ibGlnYXRpb24KLQkJCQkgKiB0byBmaW5pc2ggcHJvY2Vzc2luZy4gQmFpbCBvdXQgaWYgcHJlZW1wdGlvbgotCQkJCSAqIHJlcXVlc3RlZDoKLQkJCQkgKi8KLQkJCQlpZiAobmVlZF9yZXNjaGVkKCkpCi0JCQkJCWdvdG8gb3V0OwotCQkJfSB3aGlsZSAoamggIT0gbGFzdF9qaCk7Ci0JCX0KKwkJcmV0ICs9IGpvdXJuYWxfY2xlYW5fb25lX2NwX2xpc3QodHJhbnNhY3Rpb24tPgorCQkJCXRfY2hlY2twb2ludF9saXN0LCAmcmVsZWFzZWQpOworCQkvKgorCQkgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgZnJlZXMgdXAgc29tZSBtZW1vcnkgaWYgcG9zc2libGUgc28gd2UKKwkJICogZG9udCBoYXZlIGFuIG9ibGlnYXRpb24gdG8gZmluaXNoIHByb2Nlc3NpbmcuIEJhaWwgb3V0IGlmCisJCSAqIHByZWVtcHRpb24gcmVxdWVzdGVkOgorCQkgKi8KKwkJaWYgKG5lZWRfcmVzY2hlZCgpKQorCQkJZ290byBvdXQ7CisJCWlmIChyZWxlYXNlZCkKKwkJCWNvbnRpbnVlOworCQkvKgorCQkgKiBJdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBhcmUgYXMgY2FyZWZ1bCBhcyBpbiB0aGUgY2FzZSBvZgorCQkgKiB0X2NoZWNrcG9pbnRfbGlzdCB3aXRoIHJlbW92aW5nIHRoZSBidWZmZXIgZnJvbSB0aGUgbGlzdCBhcworCQkgKiB3ZSBjYW4gcG9zc2libHkgc2VlIG5vdCB5ZXQgc3VibWl0dGVkIGJ1ZmZlcnMgb24gaW9fbGlzdAorCQkgKi8KKwkJcmV0ICs9IGpvdXJuYWxfY2xlYW5fb25lX2NwX2xpc3QodHJhbnNhY3Rpb24tPgorCQkJCXRfY2hlY2twb2ludF9pb19saXN0LCAmcmVsZWFzZWQpOworCQlpZiAobmVlZF9yZXNjaGVkKCkpCisJCQlnb3RvIG91dDsKIAl9IHdoaWxlICh0cmFuc2FjdGlvbiAhPSBsYXN0X3RyYW5zYWN0aW9uKTsKIG91dDoKIAlyZXR1cm4gcmV0OwpAQCAtNTE2LDE4ICs1NjYsMjIgQEAKICAqIGJ1ZmZlciB1cGRhdGVzIGNvbW1pdHRlZCBpbiB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgc2FmZWx5IGJlZW4gc3RvcmVkCiAgKiBlbHNld2hlcmUgb24gZGlzay4gIFRvIGFjaGlldmUgdGhpcywgYWxsIG9mIHRoZSBidWZmZXJzIGluIGEKICAqIHRyYW5zYWN0aW9uIG5lZWQgdG8gYmUgbWFpbnRhaW5lZCBvbiB0aGUgdHJhbnNhY3Rpb24ncyBjaGVja3BvaW50Ci0gKiBsaXN0IHVudGlsIHRoZXkgaGF2ZSBiZWVuIHJld3JpdHRlbiwgYXQgd2hpY2ggcG9pbnQgdGhpcyBmdW5jdGlvbiBpcworICogbGlzdHMgdW50aWwgdGhleSBoYXZlIGJlZW4gcmV3cml0dGVuLCBhdCB3aGljaCBwb2ludCB0aGlzIGZ1bmN0aW9uIGlzCiAgKiBjYWxsZWQgdG8gcmVtb3ZlIHRoZSBidWZmZXIgZnJvbSB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb24ncwotICogY2hlY2twb2ludCBsaXN0LgorICogY2hlY2twb2ludCBsaXN0cy4KKyAqCisgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyAxIGlmIGl0IGZyZWVzIHRoZSB0cmFuc2FjdGlvbiwgMCBvdGhlcndpc2UuCiAgKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgam91cm5hbCBsb2NrZWQuCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGpfbGlzdF9sb2NrIGhlbGQuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGpiZF9sb2NrX2JoX3N0YXRlKGpoMmJoKGpoKSkKICAqLwogCi12b2lkIF9fam91cm5hbF9yZW1vdmVfY2hlY2twb2ludChzdHJ1Y3Qgam91cm5hbF9oZWFkICpqaCkKK2ludCBfX2pvdXJuYWxfcmVtb3ZlX2NoZWNrcG9pbnQoc3RydWN0IGpvdXJuYWxfaGVhZCAqamgpCiB7CiAJdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb247CiAJam91cm5hbF90ICpqb3VybmFsOworCWludCByZXQgPSAwOwogCiAJSkJVRkZFUl9UUkFDRShqaCwgImVudHJ5Iik7CiAKQEAgLTUzOCw4ICs1OTIsMTAgQEAKIAlqb3VybmFsID0gdHJhbnNhY3Rpb24tPnRfam91cm5hbDsKIAogCV9fYnVmZmVyX3VubGluayhqaCk7CisJamgtPmJfY3BfdHJhbnNhY3Rpb24gPSBOVUxMOwogCi0JaWYgKHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfbGlzdCAhPSBOVUxMKQorCWlmICh0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2xpc3QgIT0gTlVMTCB8fAorCSAgICB0cmFuc2FjdGlvbi0+dF9jaGVja3BvaW50X2lvX2xpc3QgIT0gTlVMTCkKIAkJZ290byBvdXQ7CiAJSkJVRkZFUl9UUkFDRShqaCwgInRyYW5zYWN0aW9uIGhhcyBubyBtb3JlIGJ1ZmZlcnMiKTsKIApAQCAtNTY1LDggKzYyMSwxMCBAQAogCS8qIEp1c3QgaW4gY2FzZSBhbnlib2R5IHdhcyB3YWl0aW5nIGZvciBtb3JlIHRyYW5zYWN0aW9ucyB0byBiZQogICAgICAgICAgICBjaGVja3BvaW50ZWQuLi4gKi8KIAl3YWtlX3VwKCZqb3VybmFsLT5qX3dhaXRfbG9nc3BhY2UpOworCXJldCA9IDE7CiBvdXQ6CiAJSkJVRkZFUl9UUkFDRShqaCwgImV4aXQiKTsKKwlyZXR1cm4gcmV0OwogfQogCiAvKgpAQCAtNjI4LDYgKzY4Niw3IEBACiAJSl9BU1NFUlQodHJhbnNhY3Rpb24tPnRfc2hhZG93X2xpc3QgPT0gTlVMTCk7CiAJSl9BU1NFUlQodHJhbnNhY3Rpb24tPnRfbG9nX2xpc3QgPT0gTlVMTCk7CiAJSl9BU1NFUlQodHJhbnNhY3Rpb24tPnRfY2hlY2twb2ludF9saXN0ID09IE5VTEwpOworCUpfQVNTRVJUKHRyYW5zYWN0aW9uLT50X2NoZWNrcG9pbnRfaW9fbGlzdCA9PSBOVUxMKTsKIAlKX0FTU0VSVCh0cmFuc2FjdGlvbi0+dF91cGRhdGVzID09IDApOwogCUpfQVNTRVJUKGpvdXJuYWwtPmpfY29tbWl0dGluZ190cmFuc2FjdGlvbiAhPSB0cmFuc2FjdGlvbik7CiAJSl9BU1NFUlQoam91cm5hbC0+al9ydW5uaW5nX3RyYW5zYWN0aW9uICE9IHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL2ZzL2piZC9jb21taXQuYyBiL2ZzL2piZC9jb21taXQuYwppbmRleCAwMDJhZDJiLi4wOTcxODE0IDEwMDY0NAotLS0gYS9mcy9qYmQvY29tbWl0LmMKKysrIGIvZnMvamJkL2NvbW1pdC5jCkBAIC03OTAsMTEgKzc5MCwyMiBAQAogCQkJamJkX3VubG9ja19iaF9zdGF0ZShiaCk7CiAJCX0gZWxzZSB7CiAJCQlKX0FTU0VSVF9CSChiaCwgIWJ1ZmZlcl9kaXJ0eShiaCkpOwotCQkJSl9BU1NFUlRfSkgoamgsIGpoLT5iX25leHRfdHJhbnNhY3Rpb24gPT0gTlVMTCk7Ci0JCQlfX2pvdXJuYWxfdW5maWxlX2J1ZmZlcihqaCk7Ci0JCQlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKLQkJCWpvdXJuYWxfcmVtb3ZlX2pvdXJuYWxfaGVhZChiaCk7ICAvKiBuZWVkcyBhIGJyZWxzZSAqLwotCQkJcmVsZWFzZV9idWZmZXJfcGFnZShiaCk7CisJCQkvKiBUaGUgYnVmZmVyIG9uIEJKX0ZvcmdldCBsaXN0IGFuZCBub3QgamJkZGlydHkgbWVhbnMKKwkJCSAqIGl0IGhhcyBiZWVuIGZyZWVkIGJ5IHRoaXMgdHJhbnNhY3Rpb24gYW5kIGhlbmNlIGl0CisJCQkgKiBjb3VsZCBub3QgaGF2ZSBiZWVuIHJlYWxsb2NhdGVkIHVudGlsIHRoaXMKKwkJCSAqIHRyYW5zYWN0aW9uIGhhcyBjb21taXR0ZWQuICpCVVQqIGl0IGNvdWxkIGJlCisJCQkgKiByZWFsbG9jYXRlZCBvbmNlIHdlIGhhdmUgd3JpdHRlbiBhbGwgdGhlIGRhdGEgdG8KKwkJCSAqIGRpc2sgYW5kIGJlZm9yZSB3ZSBwcm9jZXNzIHRoZSBidWZmZXIgb24gQkpfRm9yZ2V0CisJCQkgKiBsaXN0LiAqLworCQkJSkJVRkZFUl9UUkFDRShqaCwgInJlZmlsZSBvciB1bmZpbGUgZnJlZWQgYnVmZmVyIik7CisJCQlfX2pvdXJuYWxfcmVmaWxlX2J1ZmZlcihqaCk7CisJCQlpZiAoIWpoLT5iX3RyYW5zYWN0aW9uKSB7CisJCQkJamJkX3VubG9ja19iaF9zdGF0ZShiaCk7CisJCQkJIC8qIG5lZWRzIGEgYnJlbHNlICovCisJCQkJam91cm5hbF9yZW1vdmVfam91cm5hbF9oZWFkKGJoKTsKKwkJCQlyZWxlYXNlX2J1ZmZlcl9wYWdlKGJoKTsKKwkJCX0gZWxzZQorCQkJCWpiZF91bmxvY2tfYmhfc3RhdGUoYmgpOwogCQl9CiAJCWNvbmRfcmVzY2hlZF9sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvamJkL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwppbmRleCBjNjA5ZjUwLi41MDhiMmVhIDEwMDY0NAotLS0gYS9mcy9qYmQvdHJhbnNhY3Rpb24uYworKysgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwpAQCAtMjI3LDcgKzIyNyw4IEBACiAJc3Bpbl91bmxvY2soJnRyYW5zYWN0aW9uLT50X2hhbmRsZV9sb2NrKTsKIAlzcGluX3VubG9jaygmam91cm5hbC0+al9zdGF0ZV9sb2NrKTsKIG91dDoKLQlrZnJlZShuZXdfdHJhbnNhY3Rpb24pOworCWlmICh1bmxpa2VseShuZXdfdHJhbnNhY3Rpb24pKQkJLyogSXQncyB1c3VhbGx5IE5VTEwgKi8KKwkJa2ZyZWUobmV3X3RyYW5zYWN0aW9uKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03MjQsNyArNzI1LDggQEAKIAlqb3VybmFsX2NhbmNlbF9yZXZva2UoaGFuZGxlLCBqaCk7CiAKIG91dDoKLQlrZnJlZShmcm96ZW5fYnVmZmVyKTsKKwlpZiAodW5saWtlbHkoZnJvemVuX2J1ZmZlcikpCS8qIEl0J3MgdXN1YWxseSBOVUxMICovCisJCWtmcmVlKGZyb3plbl9idWZmZXIpOwogCiAJSkJVRkZFUl9UUkFDRShqaCwgImV4aXQiKTsKIAlyZXR1cm4gZXJyb3I7CkBAIC05MDMsNyArOTA1LDggQEAKIAlqYmRfdW5sb2NrX2JoX3N0YXRlKGJoKTsKIG91dDoKIAlqb3VybmFsX3B1dF9qb3VybmFsX2hlYWQoamgpOwotCWtmcmVlKGNvbW1pdHRlZF9kYXRhKTsKKwlpZiAodW5saWtlbHkoY29tbWl0dGVkX2RhdGEpKQorCQlrZnJlZShjb21taXR0ZWRfZGF0YSk7CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtMjAzOCw3ICsyMDQxLDggQEAKIAlfX2pvdXJuYWxfdGVtcF91bmxpbmtfYnVmZmVyKGpoKTsKIAlqaC0+Yl90cmFuc2FjdGlvbiA9IGpoLT5iX25leHRfdHJhbnNhY3Rpb247CiAJamgtPmJfbmV4dF90cmFuc2FjdGlvbiA9IE5VTEw7Ci0JX19qb3VybmFsX2ZpbGVfYnVmZmVyKGpoLCBqaC0+Yl90cmFuc2FjdGlvbiwgQkpfTWV0YWRhdGEpOworCV9fam91cm5hbF9maWxlX2J1ZmZlcihqaCwgamgtPmJfdHJhbnNhY3Rpb24sCisJCQkJd2FzX2RpcnR5ID8gQkpfTWV0YWRhdGEgOiBCSl9SZXNlcnZlZCk7CiAJSl9BU1NFUlRfSkgoamgsIGpoLT5iX3RyYW5zYWN0aW9uLT50X3N0YXRlID09IFRfUlVOTklORyk7CiAKIAlpZiAod2FzX2RpcnR5KQpkaWZmIC0tZ2l0IGEvZnMvamZmcy9pbm9kZS12MjMuYyBiL2ZzL2pmZnMvaW5vZGUtdjIzLmMKaW5kZXggMDIwY2MwOS4uOWU0NmVhNiAxMDA2NDQKLS0tIGEvZnMvamZmcy9pbm9kZS12MjMuYworKysgYi9mcy9qZmZzL2lub2RlLXYyMy5jCkBAIC0zNzcsOSArMzc3LDkgQEAKIAogLyogR2V0IHN0YXRpc3RpY3Mgb2YgdGhlIGZpbGUgc3lzdGVtLiAgKi8KIHN0YXRpYyBpbnQKLWpmZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitqZmZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IGpmZnNfY29udHJvbCAqYyA9IChzdHJ1Y3QgamZmc19jb250cm9sICopIHNiLT5zX2ZzX2luZm87CisJc3RydWN0IGpmZnNfY29udHJvbCAqYyA9IChzdHJ1Y3QgamZmc19jb250cm9sICopIGRlbnRyeS0+ZF9zYi0+c19mc19pbmZvOwogCXN0cnVjdCBqZmZzX2ZtY29udHJvbCAqZm1jOwogCiAJbG9ja19rZXJuZWwoKTsKQEAgLTE3ODUsMTAgKzE3ODUsMTEgQEAKIAkucmVtb3VudF9mcwk9IGpmZnNfcmVtb3VudCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmpmZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGpmZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGpmZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgamZmc19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGpmZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL2ZzLmMgYi9mcy9qZmZzMi9mcy5jCmluZGV4IDdiNmMyNGIuLjI5MDBlYzMgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL2ZzLmMKKysrIGIvZnMvamZmczIvZnMuYwpAQCAtMTkyLDkgKzE5Miw5IEBACiAJcmV0dXJuIHJjOwogfQogCi1pbnQgamZmczJfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitpbnQgamZmczJfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKLQlzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYyA9IEpGRlMyX1NCX0lORk8oc2IpOworCXN0cnVjdCBqZmZzMl9zYl9pbmZvICpjID0gSkZGUzJfU0JfSU5GTyhkZW50cnktPmRfc2IpOwogCXVuc2lnbmVkIGxvbmcgYXZhaWw7CiAKIAlidWYtPmZfdHlwZSA9IEpGRlMyX1NVUEVSX01BR0lDOwpkaWZmIC0tZ2l0IGEvZnMvamZmczIvb3MtbGludXguaCBiL2ZzL2pmZnMyL29zLWxpbnV4LmgKaW5kZXggY2Q0MDIxYi4uNmI1MjIzNSAxMDA2NDQKLS0tIGEvZnMvamZmczIvb3MtbGludXguaAorKysgYi9mcy9qZmZzMi9vcy1saW51eC5oCkBAIC0xNzUsNyArMTc1LDcgQEAKIHZvaWQgamZmczJfZGlydHlfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CiBzdHJ1Y3QgaW5vZGUgKmpmZnMyX25ld19pbm9kZSAoc3RydWN0IGlub2RlICpkaXJfaSwgaW50IG1vZGUsCiAJCQkgICAgICAgc3RydWN0IGpmZnMyX3Jhd19pbm9kZSAqcmkpOwotaW50IGpmZnMyX3N0YXRmcyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrc3RhdGZzICopOworaW50IGpmZnMyX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKIHZvaWQgamZmczJfd3JpdGVfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGludCBqZmZzMl9yZW1vdW50X2ZzIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50ICosIGNoYXIgKik7CiBpbnQgamZmczJfZG9fZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KTsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL3N1cGVyLmMgYi9mcy9qZmZzMi9zdXBlci5jCmluZGV4IDlkMDUyMTQuLjIzNzhhNjYgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL3N1cGVyLmMKKysrIGIvZnMvamZmczIvc3VwZXIuYwpAQCAtMTExLDkgKzExMSwxMCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpqZmZzMl9nZXRfc2JfbXRkKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQkgICAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKK3N0YXRpYyBpbnQgamZmczJfZ2V0X3NiX210ZChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJCSAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBtdGRfaW5mbyAqbXRkLAorCQkJICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiAJc3RydWN0IGpmZnMyX3NiX2luZm8gKmM7CkBAIC0xMjEsMTkgKzEyMiwyMCBAQAogCiAJYyA9IGttYWxsb2Moc2l6ZW9mKCpjKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwkJcmV0dXJuIC1FTk9NRU07CiAJbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOwogCWMtPm10ZCA9IG10ZDsKIAogCXNiID0gc2dldChmc190eXBlLCBqZmZzMl9zYl9jb21wYXJlLCBqZmZzMl9zYl9zZXQsIGMpOwogCiAJaWYgKElTX0VSUihzYikpCi0JCWdvdG8gb3V0X3B1dDsKKwkJZ290byBvdXRfZXJyb3I7CiAKIAlpZiAoc2ItPnNfcm9vdCkgewogCQkvKiBOZXcgbW91bnRwb2ludCBmb3IgSkZGUzIgd2hpY2ggaXMgYWxyZWFkeSBtb3VudGVkICovCiAJCUQxKHByaW50ayhLRVJOX0RFQlVHICJqZmZzMl9nZXRfc2JfbXRkKCk6IERldmljZSAlZCAoXCIlc1wiKSBpcyBhbHJlYWR5IG1vdW50ZWRcbiIsCiAJCQkgIG10ZC0+aW5kZXgsIG10ZC0+bmFtZSkpOworCQlyZXQgPSBzaW1wbGVfc2V0X21udChtbnQsIHNiKTsKIAkJZ290byBvdXRfcHV0OwogCX0KIApAQCAtMTYxLDQ0ICsxNjMsNDcgQEAKIAkJLyogRmFpbHVyZSBjYXNlLi4uICovCiAJCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOwogCQlkZWFjdGl2YXRlX3N1cGVyKHNiKTsKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAlzYi0+c19mbGFncyB8PSBNU19BQ1RJVkU7Ci0JcmV0dXJuIHNiOworCXJldHVybiBzaW1wbGVfc2V0X21udChtbnQsIHNiKTsKIAorb3V0X2Vycm9yOgorCXJldCA9IFBUUl9FUlIoc2IpOwogIG91dF9wdXQ6CiAJa2ZyZWUoYyk7CiAJcHV0X210ZF9kZXZpY2UobXRkKTsKIAotCXJldHVybiBzYjsKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpqZmZzMl9nZXRfc2JfbXRkbnIoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJCSAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCSAgICAgIHZvaWQgKmRhdGEsIGludCBtdGRucikKK3N0YXRpYyBpbnQgamZmczJfZ2V0X3NiX210ZG5yKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJCSAgICAgIHZvaWQgKmRhdGEsIGludCBtdGRuciwKKwkJCSAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCXN0cnVjdCBtdGRfaW5mbyAqbXRkOwogCiAJbXRkID0gZ2V0X210ZF9kZXZpY2UoTlVMTCwgbXRkbnIpOwogCWlmICghbXRkKSB7CiAJCUQxKHByaW50ayhLRVJOX0RFQlVHICJqZmZzMjogTVREIGRldmljZSAjJXUgZG9lc24ndCBhcHBlYXIgdG8gZXhpc3RcbiIsIG10ZG5yKSk7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlyZXR1cm4gamZmczJfZ2V0X3NiX210ZChmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIG10ZCk7CisJcmV0dXJuIGpmZnMyX2dldF9zYl9tdGQoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBtdGQsIG1udCk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmpmZnMyX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJCQkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKLQkJCQkJdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgamZmczJfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJCXZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCWludCBlcnI7CiAJc3RydWN0IG5hbWVpZGF0YSBuZDsKIAlpbnQgbXRkbnI7CiAKIAlpZiAoIWRldl9uYW1lKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAKIAlEMShwcmludGsoS0VSTl9ERUJVRyAiamZmczJfZ2V0X3NiKCk6IGRldl9uYW1lIFwiJXNcIlxuIiwgZGV2X25hbWUpKTsKIApAQCAtMjIwLDcgKzIyNSw3IEBACiAJCQkJbXRkID0gZ2V0X210ZF9kZXZpY2UoTlVMTCwgbXRkbnIpOwogCQkJCWlmIChtdGQpIHsKIAkJCQkJaWYgKCFzdHJjbXAobXRkLT5uYW1lLCBkZXZfbmFtZSs0KSkKLQkJCQkJCXJldHVybiBqZmZzMl9nZXRfc2JfbXRkKGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbXRkKTsKKwkJCQkJCXJldHVybiBqZmZzMl9nZXRfc2JfbXRkKGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbXRkLCBtbnQpOwogCQkJCQlwdXRfbXRkX2RldmljZShtdGQpOwogCQkJCX0KIAkJCX0KQEAgLTIzMyw3ICsyMzgsNyBAQAogCQkJaWYgKCEqZW5kcHRyKSB7CiAJCQkJLyogSXQgd2FzIGEgdmFsaWQgbnVtYmVyICovCiAJCQkJRDEocHJpbnRrKEtFUk5fREVCVUcgImpmZnMyX2dldF9zYigpOiBtdGQlJWQsIG10ZG5yICVkXG4iLCBtdGRucikpOwotCQkJCXJldHVybiBqZmZzMl9nZXRfc2JfbXRkbnIoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBtdGRucik7CisJCQkJcmV0dXJuIGpmZnMyX2dldF9zYl9tdGRucihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIG10ZG5yLCBtbnQpOwogCQkJfQogCQl9CiAJfQpAQCAtMjQ3LDcgKzI1Miw3IEBACiAJCSAgZXJyLCBuZC5kZW50cnktPmRfaW5vZGUpKTsKIAogCWlmIChlcnIpCi0JCXJldHVybiBFUlJfUFRSKGVycik7CisJCXJldHVybiBlcnI7CiAKIAllcnIgPSAtRUlOVkFMOwogCkBAIC0yNjksMTEgKzI3NCwxMSBAQAogCW10ZG5yID0gaW1pbm9yKG5kLmRlbnRyeS0+ZF9pbm9kZSk7CiAJcGF0aF9yZWxlYXNlKCZuZCk7CiAKLQlyZXR1cm4gamZmczJfZ2V0X3NiX210ZG5yKGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbXRkbnIpOworCXJldHVybiBqZmZzMl9nZXRfc2JfbXRkbnIoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBtdGRuciwgbW50KTsKIAogb3V0OgogCXBhdGhfcmVsZWFzZSgmbmQpOwotCXJldHVybiBFUlJfUFRSKGVycik7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIHZvaWQgamZmczJfcHV0X3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5jIGIvZnMvamZzL2pmc19tZXRhcGFnZS5jCmluZGV4IDJiMjIwZGQuLjdmNmU4ODAgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuYworKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmMKQEAgLTYzMiwxMCArNjMyLDkgQEAKIAkJfQogCQlTZXRQYWdlVXB0b2RhdGUocGFnZSk7CiAJfSBlbHNlIHsKLQkJcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBwYWdlX2luZGV4LAotCQkJICAgIChmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBwYWdlX2luZGV4LCBOVUxMKTsKIAkJaWYgKElTX0VSUihwYWdlKSB8fCAhUGFnZVVwdG9kYXRlKHBhZ2UpKSB7Ci0JCQlqZnNfZXJyKCJyZWFkX2NhY2hlX3BhZ2UgZmFpbGVkISIpOworCQkJamZzX2VycigicmVhZF9tYXBwaW5nX3BhZ2UgZmFpbGVkISIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAkJbG9ja19wYWdlKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvamZzL3N1cGVyLmMgYi9mcy9qZnMvc3VwZXIuYwppbmRleCBkYjZmNDFkLi43M2QyYWJhIDEwMDY0NAotLS0gYS9mcy9qZnMvc3VwZXIuYworKysgYi9mcy9qZnMvc3VwZXIuYwpAQCAtMTM5LDkgKzEzOSw5IEBACiAJa21lbV9jYWNoZV9mcmVlKGpmc19pbm9kZV9jYWNoZXAsIGppKTsKIH0KIAotc3RhdGljIGludCBqZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IGpmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogewotCXN0cnVjdCBqZnNfc2JfaW5mbyAqc2JpID0gSkZTX1NCSShzYik7CisJc3RydWN0IGpmc19zYl9pbmZvICpzYmkgPSBKRlNfU0JJKGRlbnRyeS0+ZF9zYik7CiAJczY0IG1heGlub2RlczsKIAlzdHJ1Y3QgaW5vbWFwICppbWFwID0gSkZTX0lQKHNiaS0+aXBpbWFwKS0+aV9pbWFwOwogCkBAIC01NjUsMTAgKzU2NSwxMSBAQAogCX0KIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqamZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgamZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBqZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgamZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgaW50IGpmc19zeW5jX2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KQpkaWZmIC0tZ2l0IGEvZnMvbGliZnMuYyBiL2ZzL2xpYmZzLmMKaW5kZXggNGEzZWM5YS4uZmM3ODVkOCAxMDA2NDQKLS0tIGEvZnMvbGliZnMuYworKysgYi9mcy9saWJmcy5jCkBAIC0yMCw5ICsyMCw5IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBzaW1wbGVfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitpbnQgc2ltcGxlX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7Ci0JYnVmLT5mX3R5cGUgPSBzYi0+c19tYWdpYzsKKwlidWYtPmZfdHlwZSA9IGRlbnRyeS0+ZF9zYi0+c19tYWdpYzsKIAlidWYtPmZfYnNpemUgPSBQQUdFX0NBQ0hFX1NJWkU7CiAJYnVmLT5mX25hbWVsZW4gPSBOQU1FX01BWDsKIAlyZXR1cm4gMDsKQEAgLTE5Niw5ICsxOTYsOSBAQAogICogQ29tbW9uIGhlbHBlciBmb3IgcHNldWRvLWZpbGVzeXN0ZW1zIChzb2NrZnMsIHBpcGVmcywgYmRldiAtIHN0dWZmIHRoYXQKICAqIHdpbGwgbmV2ZXIgYmUgbW91bnRhYmxlKQogICovCi1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKgotZ2V0X3NiX3BzZXVkbyhzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgY2hhciAqbmFtZSwKLQlzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyAqb3BzLCB1bnNpZ25lZCBsb25nIG1hZ2ljKQoraW50IGdldF9zYl9wc2V1ZG8oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsIGNoYXIgKm5hbWUsCisJc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKm9wcywgdW5zaWduZWQgbG9uZyBtYWdpYywKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMgPSBzZ2V0KGZzX3R5cGUsIE5VTEwsIHNldF9hbm9uX3N1cGVyLCBOVUxMKTsKIAlzdGF0aWMgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgZGVmYXVsdF9vcHMgPSB7LnN0YXRmcyA9IHNpbXBsZV9zdGF0ZnN9OwpAQCAtMjA3LDcgKzIwNyw3IEBACiAJc3RydWN0IHFzdHIgZF9uYW1lID0gey5uYW1lID0gbmFtZSwgLmxlbiA9IHN0cmxlbihuYW1lKX07CiAKIAlpZiAoSVNfRVJSKHMpKQotCQlyZXR1cm4gczsKKwkJcmV0dXJuIFBUUl9FUlIocyk7CiAKIAlzLT5zX2ZsYWdzID0gTVNfTk9VU0VSOwogCXMtPnNfbWF4Ynl0ZXMgPSB+MFVMTDsKQEAgLTIzMiwxMiArMjMyLDEyIEBACiAJZF9pbnN0YW50aWF0ZShkZW50cnksIHJvb3QpOwogCXMtPnNfcm9vdCA9IGRlbnRyeTsKIAlzLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQlyZXR1cm4gczsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKIAogRW5vbWVtOgogCXVwX3dyaXRlKCZzLT5zX3Vtb3VudCk7CiAJZGVhY3RpdmF0ZV9zdXBlcihzKTsKLQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwlyZXR1cm4gLUVOT01FTTsKIH0KIAogaW50IHNpbXBsZV9saW5rKHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCmRpZmYgLS1naXQgYS9mcy9sb2Nrcy5jIGIvZnMvbG9ja3MuYwppbmRleCBhYjYxYThiLi4xYWQyOWM5IDEwMDY0NAotLS0gYS9mcy9sb2Nrcy5jCisrKyBiL2ZzL2xvY2tzLmMKQEAgLTcwMyw3ICs3MDMsNyBAQAogICogZnJvbSBhIGJyb2tlbiBORlMgY2xpZW50LiBCdXQgYnJva2VuIE5GUyBjbGllbnRzIGhhdmUgYSBsb3QgbW9yZSB0bwogICogd29ycnkgYWJvdXQgdGhhbiBwcm9wZXIgZGVhZGxvY2sgZGV0ZWN0aW9uIGFueXdheS4uLiAtLW9raXIKICAqLwotaW50IHBvc2l4X2xvY2tzX2RlYWRsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKmNhbGxlcl9mbCwKK3N0YXRpYyBpbnQgcG9zaXhfbG9ja3NfZGVhZGxvY2soc3RydWN0IGZpbGVfbG9jayAqY2FsbGVyX2ZsLAogCQkJCXN0cnVjdCBmaWxlX2xvY2sgKmJsb2NrX2ZsKQogewogCXN0cnVjdCBsaXN0X2hlYWQgKnRtcDsKQEAgLTcyMiw4ICs3MjIsNiBAQAogCXJldHVybiAwOwogfQogCi1FWFBPUlRfU1lNQk9MKHBvc2l4X2xvY2tzX2RlYWRsb2NrKTsKLQogLyogVHJ5IHRvIGNyZWF0ZSBhIEZMT0NLIGxvY2sgb24gZmlscC4gV2UgYWx3YXlzIGluc2VydCBuZXcgRkxPQ0sgbG9ja3MKICAqIGF0IHRoZSBoZWFkIG9mIHRoZSBsaXN0LCBidXQgdGhhdCdzIHNlY3JldCBrbm93bGVkZ2Uga25vd24gb25seSB0bwogICogZmxvY2tfbG9ja19maWxlIGFuZCBwb3NpeF9sb2NrX2ZpbGUuCkBAIC03OTQsNyArNzkyLDggQEAKIHN0YXRpYyBpbnQgX19wb3NpeF9sb2NrX2ZpbGVfY29uZihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZV9sb2NrICpyZXF1ZXN0LCBzdHJ1Y3QgZmlsZV9sb2NrICpjb25mbG9jaykKIHsKIAlzdHJ1Y3QgZmlsZV9sb2NrICpmbDsKLQlzdHJ1Y3QgZmlsZV9sb2NrICpuZXdfZmwsICpuZXdfZmwyOworCXN0cnVjdCBmaWxlX2xvY2sgKm5ld19mbCA9IE5VTEw7CisJc3RydWN0IGZpbGVfbG9jayAqbmV3X2ZsMiA9IE5VTEw7CiAJc3RydWN0IGZpbGVfbG9jayAqbGVmdCA9IE5VTEw7CiAJc3RydWN0IGZpbGVfbG9jayAqcmlnaHQgPSBOVUxMOwogCXN0cnVjdCBmaWxlX2xvY2sgKipiZWZvcmU7CkBAIC04MDMsOSArODAyLDE1IEBACiAJLyoKIAkgKiBXZSBtYXkgbmVlZCB0d28gZmlsZV9sb2NrIHN0cnVjdHVyZXMgZm9yIHRoaXMgb3BlcmF0aW9uLAogCSAqIHNvIHdlIGdldCB0aGVtIGluIGFkdmFuY2UgdG8gYXZvaWQgcmFjZXMuCisJICoKKwkgKiBJbiBzb21lIGNhc2VzIHdlIGNhbiBiZSBzdXJlLCB0aGF0IG5vIG5ldyBsb2NrcyB3aWxsIGJlIG5lZWRlZAogCSAqLwotCW5ld19mbCA9IGxvY2tzX2FsbG9jX2xvY2soKTsKLQluZXdfZmwyID0gbG9ja3NfYWxsb2NfbG9jaygpOworCWlmICghKHJlcXVlc3QtPmZsX2ZsYWdzICYgRkxfQUNDRVNTKSAmJgorCSAgICAocmVxdWVzdC0+ZmxfdHlwZSAhPSBGX1VOTENLIHx8CisJICAgICByZXF1ZXN0LT5mbF9zdGFydCAhPSAwIHx8IHJlcXVlc3QtPmZsX2VuZCAhPSBPRkZTRVRfTUFYKSkgeworCQluZXdfZmwgPSBsb2Nrc19hbGxvY19sb2NrKCk7CisJCW5ld19mbDIgPSBsb2Nrc19hbGxvY19sb2NrKCk7CisJfQogCiAJbG9ja19rZXJuZWwoKTsKIAlpZiAocmVxdWVzdC0+ZmxfdHlwZSAhPSBGX1VOTENLKSB7CkBAIC04MzQsMTQgKzgzOSw3IEBACiAJaWYgKHJlcXVlc3QtPmZsX2ZsYWdzICYgRkxfQUNDRVNTKQogCQlnb3RvIG91dDsKIAotCWVycm9yID0gLUVOT0xDSzsgLyogIm5vIGx1Y2siICovCi0JaWYgKCEobmV3X2ZsICYmIG5ld19mbDIpKQotCQlnb3RvIG91dDsKLQogCS8qCi0JICogV2UndmUgYWxsb2NhdGVkIHRoZSBuZXcgbG9ja3MgaW4gYWR2YW5jZSwgc28gdGhlcmUgYXJlIG5vCi0JICogZXJyb3JzIHBvc3NpYmxlIChhbmQgbm8gYmxvY2tpbmcgb3BlcmF0aW9ucykgZnJvbSBoZXJlIG9uLgotCSAqIAogCSAqIEZpbmQgdGhlIGZpcnN0IG9sZCBsb2NrIHdpdGggdGhlIHNhbWUgb3duZXIgYXMgdGhlIG5ldyBsb2NrLgogCSAqLwogCQpAQCAtOTM4LDEwICs5MzYsMjUgQEAKIAkJYmVmb3JlID0gJmZsLT5mbF9uZXh0OwogCX0KIAorCS8qCisJICogVGhlIGFib3ZlIGNvZGUgb25seSBtb2RpZmllcyBleGlzdGluZyBsb2NrcyBpbiBjYXNlIG9mCisJICogbWVyZ2luZyBvciByZXBsYWNpbmcuICBJZiBuZXcgbG9jayhzKSBuZWVkIHRvIGJlIGluc2VydGVkCisJICogYWxsIG1vZGlmaWNhdGlvbnMgYXJlIGRvbmUgYmVsbG93IHRoaXMsIHNvIGl0J3Mgc2FmZSB5ZXQgdG8KKwkgKiBiYWlsIG91dC4KKwkgKi8KKwllcnJvciA9IC1FTk9MQ0s7IC8qICJubyBsdWNrIiAqLworCWlmIChyaWdodCAmJiBsZWZ0ID09IHJpZ2h0ICYmICFuZXdfZmwyKQorCQlnb3RvIG91dDsKKwogCWVycm9yID0gMDsKIAlpZiAoIWFkZGVkKSB7CiAJCWlmIChyZXF1ZXN0LT5mbF90eXBlID09IEZfVU5MQ0spCiAJCQlnb3RvIG91dDsKKworCQlpZiAoIW5ld19mbCkgeworCQkJZXJyb3IgPSAtRU5PTENLOworCQkJZ290byBvdXQ7CisJCX0KIAkJbG9ja3NfY29weV9sb2NrKG5ld19mbCwgcmVxdWVzdCk7CiAJCWxvY2tzX2luc2VydF9sb2NrKGJlZm9yZSwgbmV3X2ZsKTsKIAkJbmV3X2ZsID0gTlVMTDsKQEAgLTE4ODEsMTkgKzE4OTQsMTggQEAKICAqLwogdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKmZpbHAsIGZsX293bmVyX3Qgb3duZXIpCiB7Ci0Jc3RydWN0IGZpbGVfbG9jayBsb2NrLCAqKmJlZm9yZTsKKwlzdHJ1Y3QgZmlsZV9sb2NrIGxvY2s7CiAKIAkvKgogCSAqIElmIHRoZXJlIGFyZSBubyBsb2NrcyBoZWxkIG9uIHRoaXMgZmlsZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsCiAJICogcG9zaXhfbG9ja19maWxlKCkuICBBbm90aGVyIHByb2Nlc3MgY291bGQgYmUgc2V0dGluZyBhIGxvY2sgb24gdGhpcwogCSAqIGZpbGUgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHdlIHdvdWxkbid0IHJlbW92ZSB0aGF0IGxvY2sgYW55d2F5LgogCSAqLwotCWJlZm9yZSA9ICZmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9mbG9jazsKLQlpZiAoKmJlZm9yZSA9PSBOVUxMKQorCWlmICghZmlscC0+Zl9kZW50cnktPmRfaW5vZGUtPmlfZmxvY2spCiAJCXJldHVybjsKIAogCWxvY2suZmxfdHlwZSA9IEZfVU5MQ0s7Ci0JbG9jay5mbF9mbGFncyA9IEZMX1BPU0lYOworCWxvY2suZmxfZmxhZ3MgPSBGTF9QT1NJWCB8IEZMX0NMT1NFOwogCWxvY2suZmxfc3RhcnQgPSAwOwogCWxvY2suZmxfZW5kID0gT0ZGU0VUX01BWDsKIAlsb2NrLmZsX293bmVyID0gb3duZXI7CkBAIC0xOTAyLDI1ICsxOTE0LDExIEBACiAJbG9jay5mbF9vcHMgPSBOVUxMOwogCWxvY2suZmxfbG1vcHMgPSBOVUxMOwogCi0JaWYgKGZpbHAtPmZfb3AgJiYgZmlscC0+Zl9vcC0+bG9jayAhPSBOVUxMKSB7CisJaWYgKGZpbHAtPmZfb3AgJiYgZmlscC0+Zl9vcC0+bG9jayAhPSBOVUxMKQogCQlmaWxwLT5mX29wLT5sb2NrKGZpbHAsIEZfU0VUTEssICZsb2NrKTsKLQkJZ290byBvdXQ7Ci0JfQorCWVsc2UKKwkJcG9zaXhfbG9ja19maWxlKGZpbHAsICZsb2NrKTsKIAotCS8qIENhbid0IHVzZSBwb3NpeF9sb2NrX2ZpbGUgaGVyZTsgd2UgbmVlZCB0byByZW1vdmUgaXQgbm8gbWF0dGVyCi0JICogd2hpY2ggcGlkIHdlIGhhdmUuCi0JICovCi0JbG9ja19rZXJuZWwoKTsKLQl3aGlsZSAoKmJlZm9yZSAhPSBOVUxMKSB7Ci0JCXN0cnVjdCBmaWxlX2xvY2sgKmZsID0gKmJlZm9yZTsKLQkJaWYgKElTX1BPU0lYKGZsKSAmJiBwb3NpeF9zYW1lX293bmVyKGZsLCAmbG9jaykpIHsKLQkJCWxvY2tzX2RlbGV0ZV9sb2NrKGJlZm9yZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCQliZWZvcmUgPSAmZmwtPmZsX25leHQ7Ci0JfQotCXVubG9ja19rZXJuZWwoKTsKLW91dDoKIAlpZiAobG9jay5mbF9vcHMgJiYgbG9jay5mbF9vcHMtPmZsX3JlbGVhc2VfcHJpdmF0ZSkKIAkJbG9jay5mbF9vcHMtPmZsX3JlbGVhc2VfcHJpdmF0ZSgmbG9jayk7CiB9CkBAIC0yMjA2LDYzICsyMjA0LDYgQEAKIAogRVhQT1JUX1NZTUJPTChsb2NrX21heV93cml0ZSk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfX3N0ZWFsX2xvY2tzKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGZyb20pCi17Ci0Jc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlOwotCXN0cnVjdCBmaWxlX2xvY2sgKmZsID0gaW5vZGUtPmlfZmxvY2s7Ci0KLQl3aGlsZSAoZmwpIHsKLQkJaWYgKGZsLT5mbF9maWxlID09IGZpbGUgJiYgZmwtPmZsX293bmVyID09IGZyb20pCi0JCQlmbC0+Zmxfb3duZXIgPSBjdXJyZW50LT5maWxlczsKLQkJZmwgPSBmbC0+ZmxfbmV4dDsKLQl9Ci19Ci0KLS8qIFdoZW4gZ2V0dGluZyByZWFkeSBmb3IgZXhlY3V0aW5nIGEgYmluYXJ5LCB3ZSBtYWtlIHN1cmUgdGhhdCBjdXJyZW50Ci0gKiBoYXMgYSBmaWxlc19zdHJ1Y3Qgb24gaXRzIG93bi4gQmVmb3JlIGRyb3BwaW5nIHRoZSBvbGQgZmlsZXNfc3RydWN0LAotICogd2UgdGFrZSBvdmVyIG93bmVyc2hpcCBvZiBhbGwgbG9ja3MgZm9yIGFsbCBmaWxlIGRlc2NyaXB0b3JzIHdlIG93bi4KLSAqIE5vdGUgdGhhdCB3ZSBtYXkgYWNjaWRlbnRhbGx5IHN0ZWFsIGEgbG9jayBmb3IgYSBmaWxlIHRoYXQgYSBzaWJsaW5nCi0gKiBoYXMgY3JlYXRlZCBzaW5jZSB0aGUgdW5zaGFyZV9maWxlcygpIGNhbGwuCi0gKi8KLXZvaWQgc3RlYWxfbG9ja3MoZmxfb3duZXJfdCBmcm9tKQotewotCXN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzID0gY3VycmVudC0+ZmlsZXM7Ci0JaW50IGksIGo7Ci0Jc3RydWN0IGZkdGFibGUgKmZkdDsKLQotCWlmIChmcm9tID09IGZpbGVzKQotCQlyZXR1cm47Ci0KLQlsb2NrX2tlcm5lbCgpOwotCWogPSAwOwotCi0JLyoKLQkgKiBXZSBhcmUgbm90IHRha2luZyBhIHJlZiB0byB0aGUgZmlsZSBzdHJ1Y3R1cmVzLCBzbwotCSAqIHdlIG5lZWQgdG8gYWNxdWlyZSAtPmZpbGVfbG9jay4KLQkgKi8KLQlzcGluX2xvY2soJmZpbGVzLT5maWxlX2xvY2spOwotCWZkdCA9IGZpbGVzX2ZkdGFibGUoZmlsZXMpOwotCWZvciAoOzspIHsKLQkJdW5zaWduZWQgbG9uZyBzZXQ7Ci0JCWkgPSBqICogX19ORkRCSVRTOwotCQlpZiAoaSA+PSBmZHQtPm1heF9mZHNldCB8fCBpID49IGZkdC0+bWF4X2ZkcykKLQkJCWJyZWFrOwotCQlzZXQgPSBmZHQtPm9wZW5fZmRzLT5mZHNfYml0c1tqKytdOwotCQl3aGlsZSAoc2V0KSB7Ci0JCQlpZiAoc2V0ICYgMSkgewotCQkJCXN0cnVjdCBmaWxlICpmaWxlID0gZmR0LT5mZFtpXTsKLQkJCQlpZiAoZmlsZSkKLQkJCQkJX19zdGVhbF9sb2NrcyhmaWxlLCBmcm9tKTsKLQkJCX0KLQkJCWkrKzsKLQkJCXNldCA+Pj0gMTsKLQkJfQotCX0KLQlzcGluX3VubG9jaygmZmlsZXMtPmZpbGVfbG9jayk7Ci0JdW5sb2NrX2tlcm5lbCgpOwotfQotRVhQT1JUX1NZTUJPTChzdGVhbF9sb2Nrcyk7Ci0KIHN0YXRpYyBpbnQgX19pbml0IGZpbGVsb2NrX2luaXQodm9pZCkKIHsKIAlmaWxlbG9ja19jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJmaWxlX2xvY2tfY2FjaGUiLApkaWZmIC0tZ2l0IGEvZnMvbWluaXgvZGlyLmMgYi9mcy9taW5peC9kaXIuYwppbmRleCA2OTIyNGQxLi4yYjBhMzg5IDEwMDY0NAotLS0gYS9mcy9taW5peC9kaXIuYworKysgYi9mcy9taW5peC9kaXIuYwpAQCAtNjAsOCArNjAsNyBAQAogc3RhdGljIHN0cnVjdCBwYWdlICogZGlyX2dldF9wYWdlKHN0cnVjdCBpbm9kZSAqZGlyLCB1bnNpZ25lZCBsb25nIG4pCiB7CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBkaXItPmlfbWFwcGluZzsKLQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBuLAotCQkJCShmaWxsZXJfdCopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIG4sIE5VTEwpOwogCWlmICghSVNfRVJSKHBhZ2UpKSB7CiAJCXdhaXRfb25fcGFnZV9sb2NrZWQocGFnZSk7CiAJCWttYXAocGFnZSk7CmRpZmYgLS1naXQgYS9mcy9taW5peC9pbm9kZS5jIGIvZnMvbWluaXgvaW5vZGUuYwppbmRleCAyZGNjY2YxLi5hNmZiNTA5IDEwMDY0NAotLS0gYS9mcy9taW5peC9pbm9kZS5jCisrKyBiL2ZzL21pbml4L2lub2RlLmMKQEAgLTE5LDcgKzE5LDcgQEAKIAogc3RhdGljIHZvaWQgbWluaXhfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSk7CiBzdGF0aWMgaW50IG1pbml4X3dyaXRlX2lub2RlKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBpbnQgd2FpdCk7Ci1zdGF0aWMgaW50IG1pbml4X3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKTsKK3N0YXRpYyBpbnQgbWluaXhfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7CiBzdGF0aWMgaW50IG1pbml4X3JlbW91bnQgKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiLCBpbnQgKiBmbGFncywgY2hhciAqIGRhdGEpOwogCiBzdGF0aWMgdm9pZCBtaW5peF9kZWxldGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKQEAgLTI5NiwxMSArMjk2LDExIEBACiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBpbnQgbWluaXhfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IG1pbml4X3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IG1pbml4X3NiX2luZm8gKnNiaSA9IG1pbml4X3NiKHNiKTsKLQlidWYtPmZfdHlwZSA9IHNiLT5zX21hZ2ljOwotCWJ1Zi0+Zl9ic2l6ZSA9IHNiLT5zX2Jsb2Nrc2l6ZTsKKwlzdHJ1Y3QgbWluaXhfc2JfaW5mbyAqc2JpID0gbWluaXhfc2IoZGVudHJ5LT5kX3NiKTsKKwlidWYtPmZfdHlwZSA9IGRlbnRyeS0+ZF9zYi0+c19tYWdpYzsKKwlidWYtPmZfYnNpemUgPSBkZW50cnktPmRfc2ItPnNfYmxvY2tzaXplOwogCWJ1Zi0+Zl9ibG9ja3MgPSAoc2JpLT5zX256b25lcyAtIHNiaS0+c19maXJzdGRhdGF6b25lKSA8PCBzYmktPnNfbG9nX3pvbmVfc2l6ZTsKIAlidWYtPmZfYmZyZWUgPSBtaW5peF9jb3VudF9mcmVlX2Jsb2NrcyhzYmkpOwogCWJ1Zi0+Zl9iYXZhaWwgPSBidWYtPmZfYmZyZWU7CkBAIC01NTksMTAgKzU1OSwxMSBAQAogCQlWMl9taW5peF90cnVuY2F0ZShpbm9kZSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm1pbml4X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBtaW5peF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbWluaXhfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbWluaXhfZmlsbF9zdXBlciwKKwkJCSAgIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBtaW5peF9mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvbXBhZ2UuYyBiL2ZzL21wYWdlLmMKaW5kZXggOWJmMmViMy4uMWU0NTk4MiAxMDA2NDQKLS0tIGEvZnMvbXBhZ2UuYworKysgYi9mcy9tcGFnZS5jCkBAIC03MDcsOSArNzA3LDkgQEAKIAlzdHJ1Y3QgcGFnZXZlYyBwdmVjOwogCWludCBucl9wYWdlczsKIAlwZ29mZl90IGluZGV4OwotCXBnb2ZmX3QgZW5kID0gLTE7CQkvKiBJbmNsdXNpdmUgKi8KKwlwZ29mZl90IGVuZDsJCS8qIEluY2x1c2l2ZSAqLwogCWludCBzY2FubmVkID0gMDsKLQlpbnQgaXNfcmFuZ2UgPSAwOworCWludCByYW5nZV93aG9sZSA9IDA7CiAKIAlpZiAod2JjLT5ub25ibG9ja2luZyAmJiBiZGlfd3JpdGVfY29uZ2VzdGVkKGJkaSkpIHsKIAkJd2JjLT5lbmNvdW50ZXJlZF9jb25nZXN0aW9uID0gMTsKQEAgLTcyMSwxNiArNzIxLDE0IEBACiAJCXdyaXRlcGFnZSA9IG1hcHBpbmctPmFfb3BzLT53cml0ZXBhZ2U7CiAKIAlwYWdldmVjX2luaXQoJnB2ZWMsIDApOwotCWlmICh3YmMtPnN5bmNfbW9kZSA9PSBXQl9TWU5DX05PTkUpIHsKKwlpZiAod2JjLT5yYW5nZV9jeWNsaWMpIHsKIAkJaW5kZXggPSBtYXBwaW5nLT53cml0ZWJhY2tfaW5kZXg7IC8qIFN0YXJ0IGZyb20gcHJldiBvZmZzZXQgKi8KKwkJZW5kID0gLTE7CiAJfSBlbHNlIHsKLQkJaW5kZXggPSAwOwkJCSAgLyogd2hvbGUtZmlsZSBzd2VlcCAqLwotCQlzY2FubmVkID0gMTsKLQl9Ci0JaWYgKHdiYy0+c3RhcnQgfHwgd2JjLT5lbmQpIHsKLQkJaW5kZXggPSB3YmMtPnN0YXJ0ID4+IFBBR0VfQ0FDSEVfU0hJRlQ7Ci0JCWVuZCA9IHdiYy0+ZW5kID4+IFBBR0VfQ0FDSEVfU0hJRlQ7Ci0JCWlzX3JhbmdlID0gMTsKKwkJaW5kZXggPSB3YmMtPnJhbmdlX3N0YXJ0ID4+IFBBR0VfQ0FDSEVfU0hJRlQ7CisJCWVuZCA9IHdiYy0+cmFuZ2VfZW5kID4+IFBBR0VfQ0FDSEVfU0hJRlQ7CisJCWlmICh3YmMtPnJhbmdlX3N0YXJ0ID09IDAgJiYgd2JjLT5yYW5nZV9lbmQgPT0gTExPTkdfTUFYKQorCQkJcmFuZ2Vfd2hvbGUgPSAxOwogCQlzY2FubmVkID0gMTsKIAl9CiByZXRyeToKQEAgLTc1OSw3ICs3NTcsNyBAQAogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQlpZiAodW5saWtlbHkoaXNfcmFuZ2UpICYmIHBhZ2UtPmluZGV4ID4gZW5kKSB7CisJCQlpZiAoIXdiYy0+cmFuZ2VfY3ljbGljICYmIHBhZ2UtPmluZGV4ID4gZW5kKSB7CiAJCQkJZG9uZSA9IDE7CiAJCQkJdW5sb2NrX3BhZ2UocGFnZSk7CiAJCQkJY29udGludWU7CkBAIC04MTAsNyArODA4LDcgQEAKIAkJaW5kZXggPSAwOwogCQlnb3RvIHJldHJ5OwogCX0KLQlpZiAoIWlzX3JhbmdlKQorCWlmICh3YmMtPnJhbmdlX2N5Y2xpYyB8fCAocmFuZ2Vfd2hvbGUgJiYgd2JjLT5ucl90b193cml0ZSA+IDApKQogCQltYXBwaW5nLT53cml0ZWJhY2tfaW5kZXggPSBpbmRleDsKIAlpZiAoYmlvKQogCQltcGFnZV9iaW9fc3VibWl0KFdSSVRFLCBiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvbXNkb3MvbmFtZWkuYyBiL2ZzL21zZG9zL25hbWVpLmMKaW5kZXggNWI3NmNjZC4uOWU0NDE1OCAxMDA2NDQKLS0tIGEvZnMvbXNkb3MvbmFtZWkuYworKysgYi9mcy9tc2Rvcy9uYW1laS5jCkBAIC02NjEsMTEgKzY2MSwxMiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICptc2Rvc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCXZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG1zZG9zX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCisJCQl2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBtc2Rvc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBtc2Rvc19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIG1zZG9zX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuYwppbmRleCAxODRmZTRhYy4uYmI0YTNlNCAxMDA2NDQKLS0tIGEvZnMvbmFtZWkuYworKysgYi9mcy9uYW1laS5jCkBAIC0yNTc3LDggKzI1NzcsNyBAQAogewogCXN0cnVjdCBwYWdlICogcGFnZTsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGRlbnRyeS0+ZF9pbm9kZS0+aV9tYXBwaW5nOwotCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgMCwgKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLAotCQkJCU5VTEwpOworCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCAwLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHBhZ2UpKQogCQlnb3RvIHN5bmNfZmFpbDsKIAl3YWl0X29uX3BhZ2VfbG9ja2VkKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvbmFtZXNwYWNlLmMgYi9mcy9uYW1lc3BhY2UuYwppbmRleCA2YmIwYjg1Li44NjY0MzBiIDEwMDY0NAotLS0gYS9mcy9uYW1lc3BhY2UuYworKysgYi9mcy9uYW1lc3BhY2UuYwpAQCAtODYsNiArODYsMTUgQEAKIAlyZXR1cm4gbW50OwogfQogCitpbnQgc2ltcGxlX3NldF9tbnQoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCit7CisJbW50LT5tbnRfc2IgPSBzYjsKKwltbnQtPm1udF9yb290ID0gZGdldChzYi0+c19yb290KTsKKwlyZXR1cm4gMDsKK30KKworRVhQT1JUX1NZTUJPTChzaW1wbGVfc2V0X21udCk7CisKIHZvaWQgZnJlZV92ZnNtbnQoc3RydWN0IHZmc21vdW50ICptbnQpCiB7CiAJa2ZyZWUobW50LT5tbnRfZGV2bmFtZSk7CmRpZmYgLS1naXQgYS9mcy9uY3Bmcy9pbm9kZS5jIGIvZnMvbmNwZnMvaW5vZGUuYwppbmRleCBhMWYzZTk3Li45MGQyZWEyIDEwMDY0NAotLS0gYS9mcy9uY3Bmcy9pbm9kZS5jCisrKyBiL2ZzL25jcGZzL2lub2RlLmMKQEAgLTM5LDcgKzM5LDcgQEAKIAogc3RhdGljIHZvaWQgbmNwX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CiBzdGF0aWMgdm9pZCBuY3BfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKLXN0YXRpYyBpbnQgIG5jcF9zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrc3RhdGZzICopOworc3RhdGljIGludCAgbmNwX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogCiBzdGF0aWMga21lbV9jYWNoZV90ICogbmNwX2lub2RlX2NhY2hlcDsKIApAQCAtNzI0LDEzICs3MjQsMTQgQEAKIAlrZnJlZShzZXJ2ZXIpOwogfQogCi1zdGF0aWMgaW50IG5jcF9zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgbmNwX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CiAJc3RydWN0IGRlbnRyeSogZDsKIAlzdHJ1Y3QgaW5vZGUqIGk7CiAJc3RydWN0IG5jcF9pbm9kZV9pbmZvKiBuaTsKIAlzdHJ1Y3QgbmNwX3NlcnZlciogczsKIAlzdHJ1Y3QgbmNwX3ZvbHVtZV9pbmZvIHZpOworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkZW50cnktPmRfc2I7CiAJaW50IGVycjsKIAlfX3U4IGRoOwogCQpAQCAtOTU3LDEwICs5NTgsMTAgQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuY3BfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG5jcF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgbmNwX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5jcF9maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgbmNwX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9uZnMvZmlsZS5jIGIvZnMvbmZzL2ZpbGUuYwppbmRleCAxMDZlZjBkLi5hZGQyODkxIDEwMDY0NAotLS0gYS9mcy9uZnMvZmlsZS5jCisrKyBiL2ZzL25mcy9maWxlLmMKQEAgLTQzLDcgKzQzLDcgQEAKIHN0YXRpYyBzc2l6ZV90IG5mc19maWxlX3NlbmRmaWxlKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCBzaXplX3QsIHJlYWRfYWN0b3JfdCwgdm9pZCAqKTsKIHN0YXRpYyBzc2l6ZV90IG5mc19maWxlX3JlYWQoc3RydWN0IGtpb2NiICosIGNoYXIgX191c2VyICosIHNpemVfdCwgbG9mZl90KTsKIHN0YXRpYyBzc2l6ZV90IG5mc19maWxlX3dyaXRlKHN0cnVjdCBraW9jYiAqLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzaXplX3QsIGxvZmZfdCk7Ci1zdGF0aWMgaW50ICBuZnNfZmlsZV9mbHVzaChzdHJ1Y3QgZmlsZSAqKTsKK3N0YXRpYyBpbnQgIG5mc19maWxlX2ZsdXNoKHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QgaWQpOwogc3RhdGljIGludCAgbmZzX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGRhdGFzeW5jKTsKIHN0YXRpYyBpbnQgbmZzX2NoZWNrX2ZsYWdzKGludCBmbGFncyk7CiBzdGF0aWMgaW50IG5mc19sb2NrKHN0cnVjdCBmaWxlICpmaWxwLCBpbnQgY21kLCBzdHJ1Y3QgZmlsZV9sb2NrICpmbCk7CkBAIC0xNzEsNyArMTcxLDcgQEAKICAqCiAgKi8KIHN0YXRpYyBpbnQKLW5mc19maWxlX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlKQorbmZzX2ZpbGVfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpCiB7CiAJc3RydWN0IG5mc19vcGVuX2NvbnRleHQgKmN0eCA9IChzdHJ1Y3QgbmZzX29wZW5fY29udGV4dCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7CmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzMnhkci5jIGIvZnMvbmZzL25mczJ4ZHIuYwppbmRleCA0YTAwNmY4Li42NzM5MWVlIDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzMnhkci5jCisrKyBiL2ZzL25mcy9uZnMyeGRyLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9uZnMuaD4KICNpbmNsdWRlIDxsaW51eC9uZnMyLmg+CiAjaW5jbHVkZSA8bGludXgvbmZzX2ZzLmg+CisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKIAogI2RlZmluZSBORlNEQkdfRkFDSUxJVFkJCU5GU0RCR19YRFIKIC8qICNkZWZpbmUgTkZTX1BBUkFOT0lBIDEgKi8KZGlmZiAtLWdpdCBhL2ZzL25mcy9zdXBlci5jIGIvZnMvbmZzL3N1cGVyLmMKaW5kZXggMzBmOTM5Yi4uYjk3Nzc0OCAxMDA2NDQKLS0tIGEvZnMvbmZzL3N1cGVyLmMKKysrIGIvZnMvbmZzL3N1cGVyLmMKQEAgLTEwNywxMiArMTA3LDEyIEBACiAjZW5kaWYgIC8qIENPTkZJR19ORlNfVjNfQUNMICovCiAKIHN0YXRpYyB2b2lkIG5mc191bW91bnRfYmVnaW4oc3RydWN0IHZmc21vdW50ICosIGludCk7Ci1zdGF0aWMgaW50ICBuZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKK3N0YXRpYyBpbnQgIG5mc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKIHN0YXRpYyBpbnQgIG5mc19zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCB2ZnNtb3VudCAqKTsKIHN0YXRpYyBpbnQgIG5mc19zaG93X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3QgdmZzbW91bnQgKik7Ci1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICosIGludCwgY29uc3QgY2hhciAqLCB2b2lkICopOwotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbmZzX2Nsb25lX25mc19zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEpOworc3RhdGljIGludCBuZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICosIGludCwgY29uc3QgY2hhciAqLCB2b2lkICosIHN0cnVjdCB2ZnNtb3VudCAqKTsKK3N0YXRpYyBpbnQgbmZzX2Nsb25lX25mc19zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKIHN0YXRpYyB2b2lkIG5mc19raWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIG5mc19mc190eXBlID0gewpAQCAtMTQzLDEyICsxNDMsMTIgQEAKIH07CiAKICNpZmRlZiBDT05GSUdfTkZTX1Y0Ci1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnM0X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpyYXdfZGF0YSk7Ci1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnNfY2xvbmVfbmZzNF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEpOwotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbmZzX3JlZmVycmFsX25mczRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhKTsKK3N0YXRpYyBpbnQgbmZzNF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKK3N0YXRpYyBpbnQgbmZzX2Nsb25lX25mczRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CitzdGF0aWMgaW50IG5mc19yZWZlcnJhbF9uZnM0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpyYXdfZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpOwogc3RhdGljIHZvaWQgbmZzNF9raWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgbmZzNF9mc190eXBlID0gewpAQCAtMjYzLDggKzI2Myw5IEBACiAvKgogICogRGVsaXZlciBmaWxlIHN5c3RlbSBzdGF0aXN0aWNzIHRvIHVzZXJzcGFjZQogICovCi1zdGF0aWMgaW50IG5mc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgbmZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKIAlzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyID0gTkZTX1NCKHNiKTsKIAl1bnNpZ25lZCBjaGFyIGJsb2NrYml0czsKIAl1bnNpZ25lZCBsb25nIGJsb2NrcmVzOwpAQCAtNzcwLDE1ICs3NzEsMTYgQEAKIC8qCiAgKiBDb3B5IGFuIGV4aXN0aW5nIHN1cGVyYmxvY2sgYW5kIGF0dGFjaCByZXZpc2VkIGRhdGEKICAqLwotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbmZzX2Nsb25lX2dlbmVyaWNfc2Ioc3RydWN0IG5mc19jbG9uZV9tb3VudCAqZGF0YSwKK3N0YXRpYyBpbnQgbmZzX2Nsb25lX2dlbmVyaWNfc2Ioc3RydWN0IG5mc19jbG9uZV9tb3VudCAqZGF0YSwKIAkJc3RydWN0IHN1cGVyX2Jsb2NrICooKmZpbGxfc2IpKHN0cnVjdCBuZnNfc2VydmVyICosIHN0cnVjdCBuZnNfY2xvbmVfbW91bnQgKiksCi0JCXN0cnVjdCBuZnNfc2VydmVyICooKmZpbGxfc2VydmVyKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IG5mc19jbG9uZV9tb3VudCAqKSkKKwkJc3RydWN0IG5mc19zZXJ2ZXIgKigqZmlsbF9zZXJ2ZXIpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgbmZzX2Nsb25lX21vdW50ICopLAorCQlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyOwogCXN0cnVjdCBuZnNfc2VydmVyICpwYXJlbnQgPSBORlNfU0IoZGF0YS0+c2IpOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBFUlJfUFRSKC1FSU5WQUwpOwotCXZvaWQgKmVyciA9IEVSUl9QVFIoLUVOT01FTSk7CiAJY2hhciAqaG9zdG5hbWU7CisJaW50IGVycm9yID0gLUVOT01FTTsKIAlpbnQgbGVuOwogCiAJc2VydmVyID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG5mc19zZXJ2ZXIpLCBHRlBfS0VSTkVMKTsKQEAgLTc5MSwyMSArNzkzLDM0IEBACiAJaWYgKHNlcnZlci0+aG9zdG5hbWUgPT0gTlVMTCkKIAkJZ290byBmcmVlX3NlcnZlcjsKIAltZW1jcHkoc2VydmVyLT5ob3N0bmFtZSwgaG9zdG5hbWUsIGxlbik7Ci0JaWYgKHJwY2lvZF91cCgpICE9IDApCisJZXJyb3IgPSBycGNpb2RfdXAoKTsKKwlpZiAoZXJyb3IgIT0gMCkKIAkJZ290byBmcmVlX2hvc3RuYW1lOwogCiAJc2IgPSBmaWxsX3NiKHNlcnZlciwgZGF0YSk7Ci0JaWYgKElTX0VSUigoZXJyID0gc2IpKSB8fCBzYi0+c19yb290KQorCWlmIChJU19FUlIoc2IpKSB7CisJCWVycm9yID0gUFRSX0VSUihzYik7CiAJCWdvdG8ga2lsbF9ycGNpb2Q7CisJfQorCQkKKwlpZiAoc2ItPnNfcm9vdCkKKwkJZ290byBvdXRfcnBjaW9kX2Rvd247CiAKIAlzZXJ2ZXIgPSBmaWxsX3NlcnZlcihzYiwgZGF0YSk7Ci0JaWYgKElTX0VSUigoZXJyID0gc2VydmVyKSkpCisJaWYgKElTX0VSUihzZXJ2ZXIpKSB7CisJCWVycm9yID0gUFRSX0VSUihzZXJ2ZXIpOwogCQlnb3RvIG91dF9kZWFjdGl2YXRlOwotCXJldHVybiBzYjsKKwl9CisJcmV0dXJuIHNpbXBsZV9zZXRfbW50KG1udCwgc2IpOwogb3V0X2RlYWN0aXZhdGU6CiAJdXBfd3JpdGUoJnNiLT5zX3Vtb3VudCk7CiAJZGVhY3RpdmF0ZV9zdXBlcihzYik7Ci0JcmV0dXJuIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKillcnI7CisJcmV0dXJuIGVycm9yOworb3V0X3JwY2lvZF9kb3duOgorCXJwY2lvZF9kb3duKCk7CisJa2ZyZWUoc2VydmVyLT5ob3N0bmFtZSk7CisJa2ZyZWUoc2VydmVyKTsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzYik7CiBraWxsX3JwY2lvZDoKIAlycGNpb2RfZG93bigpOwogZnJlZV9ob3N0bmFtZToKQEAgLTgxMyw3ICs4MjgsNyBAQAogZnJlZV9zZXJ2ZXI6CiAJa2ZyZWUoc2VydmVyKTsKIG91dF9lcnI6Ci0JcmV0dXJuIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKillcnI7CisJcmV0dXJuIGVycm9yOwogfQogCiAvKgpAQCAtOTM5LDggKzk1NCw4IEBACiAJcmV0dXJuICFuZnNfY29tcGFyZV9maCgmb2xkLT5maCwgJnNlcnZlci0+ZmgpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhKQorc3RhdGljIGludCBuZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlpbnQgZXJyb3I7CiAJc3RydWN0IG5mc19zZXJ2ZXIgKnNlcnZlciA9IE5VTEw7CkBAIC05NDgsMTQgKzk2MywxNCBAQAogCXN0cnVjdCBuZnNfZmggKnJvb3Q7CiAJc3RydWN0IG5mc19tb3VudF9kYXRhICpkYXRhID0gcmF3X2RhdGE7CiAKLQlzID0gRVJSX1BUUigtRUlOVkFMKTsKKwllcnJvciA9IC1FSU5WQUw7CiAJaWYgKGRhdGEgPT0gTlVMTCkgewogCQlkcHJpbnRrKCIlczogbWlzc2luZyBkYXRhIGFyZ3VtZW50XG4iLCBfX0ZVTkNUSU9OX18pOwotCQlnb3RvIG91dF9lcnI7CisJCWdvdG8gb3V0X2Vycl9ub3NlcnZlcjsKIAl9CiAJaWYgKGRhdGEtPnZlcnNpb24gPD0gMCB8fCBkYXRhLT52ZXJzaW9uID4gTkZTX01PVU5UX1ZFUlNJT04pIHsKIAkJZHByaW50aygiJXM6IGJhZCBtb3VudCB2ZXJzaW9uXG4iLCBfX0ZVTkNUSU9OX18pOwotCQlnb3RvIG91dF9lcnI7CisJCWdvdG8gb3V0X2Vycl9ub3NlcnZlcjsKIAl9CiAJc3dpdGNoIChkYXRhLT52ZXJzaW9uKSB7CiAJCWNhc2UgMToKQEAgLTk2Nyw3ICs5ODIsNyBAQAogCQkJCWRwcmludGsoIiVzOiBtb3VudCBzdHJ1Y3R1cmUgdmVyc2lvbiAlZCBkb2VzIG5vdCBzdXBwb3J0IE5GU3YzXG4iLAogCQkJCQkJX19GVU5DVElPTl9fLAogCQkJCQkJZGF0YS0+dmVyc2lvbik7Ci0JCQkJZ290byBvdXRfZXJyOworCQkJCWdvdG8gb3V0X2Vycl9ub3NlcnZlcjsKIAkJCX0KIAkJCWRhdGEtPnJvb3Quc2l6ZSA9IE5GUzJfRkhTSVpFOwogCQkJbWVtY3B5KGRhdGEtPnJvb3QuZGF0YSwgZGF0YS0+b2xkX3Jvb3QuZGF0YSwgTkZTMl9GSFNJWkUpOwpAQCAtOTc2LDI0ICs5OTEsMjQgQEAKIAkJCQlkcHJpbnRrKCIlczogbW91bnQgc3RydWN0dXJlIHZlcnNpb24gJWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJvbmcgc2VjdXJpdHlcbiIsCiAJCQkJCQlfX0ZVTkNUSU9OX18sCiAJCQkJCQlkYXRhLT52ZXJzaW9uKTsKLQkJCQlnb3RvIG91dF9lcnI7CisJCQkJZ290byBvdXRfZXJyX25vc2VydmVyOwogCQkJfQogCQljYXNlIDU6CiAJCQltZW1zZXQoZGF0YS0+Y29udGV4dCwgMCwgc2l6ZW9mKGRhdGEtPmNvbnRleHQpKTsKIAl9CiAjaWZuZGVmIENPTkZJR19ORlNfVjMKIAkvKiBJZiBORlN2MyBpcyBub3QgY29tcGlsZWQgaW4sIHJldHVybiAtRVBST1RPTk9TVVBQT1JUICovCi0JcyA9IEVSUl9QVFIoLUVQUk9UT05PU1VQUE9SVCk7CisJZXJyb3IgPSAtRVBST1RPTk9TVVBQT1JUOwogCWlmIChkYXRhLT5mbGFncyAmIE5GU19NT1VOVF9WRVIzKSB7CiAJCWRwcmludGsoIiVzOiBORlN2MyBub3QgY29tcGlsZWQgaW50byBrZXJuZWxcbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCWdvdG8gb3V0X2VycjsKKwkJZ290byBvdXRfZXJyX25vc2VydmVyOwogCX0KICNlbmRpZiAvKiBDT05GSUdfTkZTX1YzICovCiAKLQlzID0gRVJSX1BUUigtRU5PTUVNKTsKKwllcnJvciA9IC1FTk9NRU07CiAJc2VydmVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG5mc19zZXJ2ZXIpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNlcnZlcikKLQkJZ290byBvdXRfZXJyOworCQlnb3RvIG91dF9lcnJfbm9zZXJ2ZXI7CiAJLyogWmVybyBvdXQgdGhlIE5GUyBzdGF0ZSBzdHVmZiAqLwogCWluaXRfbmZzdjRfc3RhdGUoc2VydmVyKTsKIAlzZXJ2ZXItPmNsaWVudCA9IHNlcnZlci0+Y2xpZW50X3N5cyA9IHNlcnZlci0+Y2xpZW50X2FjbCA9IEVSUl9QVFIoLUVJTlZBTCk7CkBAIC0xMDAzLDcgKzEwMTgsNyBAQAogCQlyb290LT5zaXplID0gZGF0YS0+cm9vdC5zaXplOwogCWVsc2UKIAkJcm9vdC0+c2l6ZSA9IE5GUzJfRkhTSVpFOwotCXMgPSBFUlJfUFRSKC1FSU5WQUwpOworCWVycm9yID0gLUVJTlZBTDsKIAlpZiAocm9vdC0+c2l6ZSA+IHNpemVvZihyb290LT5kYXRhKSkgewogCQlkcHJpbnRrKCIlczogaW52YWxpZCByb290IGZpbGVoYW5kbGVcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWdvdG8gb3V0X2VycjsKQEAgLTEwMTksMTUgKzEwMzQsMjAgQEAKIAl9CiAKIAkvKiBGaXJlIHVwIHJwY2lvZCBpZiBub3QgeWV0IHJ1bm5pbmcgKi8KLQlzID0gRVJSX1BUUihycGNpb2RfdXAoKSk7Ci0JaWYgKElTX0VSUihzKSkgewotCQlkcHJpbnRrKCIlczogY291bGRuJ3Qgc3RhcnQgcnBjaW9kISBFcnJvciA9ICVsZFxuIiwKLQkJCQlfX0ZVTkNUSU9OX18sIFBUUl9FUlIocykpOworCWVycm9yID0gcnBjaW9kX3VwKCk7CisJaWYgKGVycm9yIDwgMCkgeworCQlkcHJpbnRrKCIlczogY291bGRuJ3Qgc3RhcnQgcnBjaW9kISBFcnJvciA9ICVkXG4iLAorCQkJCV9fRlVOQ1RJT05fXywgZXJyb3IpOwogCQlnb3RvIG91dF9lcnI7CiAJfQogCiAJcyA9IHNnZXQoZnNfdHlwZSwgbmZzX2NvbXBhcmVfc3VwZXIsIG5mc19zZXRfc3VwZXIsIHNlcnZlcik7Ci0JaWYgKElTX0VSUihzKSB8fCBzLT5zX3Jvb3QpCisJaWYgKElTX0VSUihzKSkgeworCQllcnJvciA9IFBUUl9FUlIocyk7CisJCWdvdG8gb3V0X2Vycl9ycGNpb2Q7CisJfQorCisJaWYgKHMtPnNfcm9vdCkKIAkJZ290byBvdXRfcnBjaW9kX2Rvd247CiAKIAlzLT5zX2ZsYWdzID0gZmxhZ3M7CkBAIC0xMDM2LDE1ICsxMDU2LDIyIEBACiAJaWYgKGVycm9yKSB7CiAJCXVwX3dyaXRlKCZzLT5zX3Vtb3VudCk7CiAJCWRlYWN0aXZhdGVfc3VwZXIocyk7Ci0JCXJldHVybiBFUlJfUFRSKGVycm9yKTsKKwkJcmV0dXJuIGVycm9yOwogCX0KIAlzLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQlyZXR1cm4gczsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKKwogb3V0X3JwY2lvZF9kb3duOgogCXJwY2lvZF9kb3duKCk7CisJa2ZyZWUoc2VydmVyKTsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKKworb3V0X2Vycl9ycGNpb2Q6CisJcnBjaW9kX2Rvd24oKTsKIG91dF9lcnI6CiAJa2ZyZWUoc2VydmVyKTsKLQlyZXR1cm4gczsKK291dF9lcnJfbm9zZXJ2ZXI6CisJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0aWMgdm9pZCBuZnNfa2lsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpCkBAIC0xMDgzLDExICsxMTEwLDExIEBACiAJcmV0dXJuIHNiOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnNfY2xvbmVfbmZzX3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpyYXdfZGF0YSkKK3N0YXRpYyBpbnQgbmZzX2Nsb25lX25mc19zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCXN0cnVjdCBuZnNfY2xvbmVfbW91bnQgKmRhdGEgPSByYXdfZGF0YTsKLQlyZXR1cm4gbmZzX2Nsb25lX2dlbmVyaWNfc2IoZGF0YSwgbmZzX2Nsb25lX3NiLCBuZnNfY2xvbmVfc2VydmVyKTsKKwlyZXR1cm4gbmZzX2Nsb25lX2dlbmVyaWNfc2IoZGF0YSwgbmZzX2Nsb25lX3NiLCBuZnNfY2xvbmVfc2VydmVyLCBtbnQpOwogfQogCiAjaWZkZWYgQ09ORklHX05GU19WNApAQCAtMTI2Niw4ICsxMjkzLDggQEAKIAlyZXR1cm4gZHN0OwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnM0X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpyYXdfZGF0YSkKK3N0YXRpYyBpbnQgbmZzNF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCWludCBlcnJvcjsKIAlzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyOwpAQCAtMTI3NywxNiArMTMwNCwxNiBAQAogCiAJaWYgKGRhdGEgPT0gTlVMTCkgewogCQlkcHJpbnRrKCIlczogbWlzc2luZyBkYXRhIGFyZ3VtZW50XG4iLCBfX0ZVTkNUSU9OX18pOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWlmIChkYXRhLT52ZXJzaW9uIDw9IDAgfHwgZGF0YS0+dmVyc2lvbiA+IE5GUzRfTU9VTlRfVkVSU0lPTikgewogCQlkcHJpbnRrKCIlczogYmFkIG1vdW50IHZlcnNpb25cbiIsIF9fRlVOQ1RJT05fXyk7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlzZXJ2ZXIgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbmZzX3NlcnZlciksIEdGUF9LRVJORUwpOwogCWlmICghc2VydmVyKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwkJcmV0dXJuIC1FTk9NRU07CiAJLyogWmVybyBvdXQgdGhlIE5GUyBzdGF0ZSBzdHVmZiAqLwogCWluaXRfbmZzdjRfc3RhdGUoc2VydmVyKTsKIAlzZXJ2ZXItPmNsaWVudCA9IHNlcnZlci0+Y2xpZW50X3N5cyA9IHNlcnZlci0+Y2xpZW50X2FjbCA9IEVSUl9QVFIoLUVJTlZBTCk7CkBAIC0xMzA4LDMzICsxMzM1LDQyIEBACiAKIAkvKiBXZSBub3cgcmVxdWlyZSB0aGF0IHRoZSBtb3VudCBwcm9jZXNzIHBhc3NlcyB0aGUgcmVtb3RlIGFkZHJlc3MgKi8KIAlpZiAoZGF0YS0+aG9zdF9hZGRybGVuICE9IHNpemVvZihzZXJ2ZXItPmFkZHIpKSB7Ci0JCXMgPSBFUlJfUFRSKC1FSU5WQUwpOworCQllcnJvciA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCWlmIChjb3B5X2Zyb21fdXNlcigmc2VydmVyLT5hZGRyLCBkYXRhLT5ob3N0X2FkZHIsIHNpemVvZihzZXJ2ZXItPmFkZHIpKSkgewotCQlzID0gRVJSX1BUUigtRUZBVUxUKTsKKwkJZXJyb3IgPSAtRUZBVUxUOwogCQlnb3RvIG91dF9mcmVlOwogCX0KIAlpZiAoc2VydmVyLT5hZGRyLnNpbl9mYW1pbHkgIT0gQUZfSU5FVCB8fAogCSAgICBzZXJ2ZXItPmFkZHIuc2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkpIHsKIAkJZHByaW50aygiJXM6IG1vdW50IHByb2dyYW0gZGlkbid0IHBhc3MgcmVtb3RlIElQIGFkZHJlc3MhXG4iLAogCQkJCV9fRlVOQ1RJT05fXyk7Ci0JCXMgPSBFUlJfUFRSKC1FSU5WQUwpOworCQllcnJvciA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCiAJLyogRmlyZSB1cCBycGNpb2QgaWYgbm90IHlldCBydW5uaW5nICovCi0JcyA9IEVSUl9QVFIocnBjaW9kX3VwKCkpOwotCWlmIChJU19FUlIocykpIHsKLQkJZHByaW50aygiJXM6IGNvdWxkbid0IHN0YXJ0IHJwY2lvZCEgRXJyb3IgPSAlbGRcbiIsCi0JCQkJX19GVU5DVElPTl9fLCBQVFJfRVJSKHMpKTsKKwllcnJvciA9IHJwY2lvZF91cCgpOworCWlmIChlcnJvciA8IDApIHsKKwkJZHByaW50aygiJXM6IGNvdWxkbid0IHN0YXJ0IHJwY2lvZCEgRXJyb3IgPSAlZFxuIiwKKwkJCQlfX0ZVTkNUSU9OX18sIGVycm9yKTsKIAkJZ290byBvdXRfZnJlZTsKIAl9CiAKIAlzID0gc2dldChmc190eXBlLCBuZnM0X2NvbXBhcmVfc3VwZXIsIG5mc19zZXRfc3VwZXIsIHNlcnZlcik7CiAKLQlpZiAoSVNfRVJSKHMpIHx8IHMtPnNfcm9vdCkKKwlpZiAoSVNfRVJSKHMpKSB7CisJCWVycm9yID0gUFRSX0VSUihzKTsKIAkJZ290byBvdXRfZnJlZTsKKwl9CisKKwlpZiAocy0+c19yb290KSB7CisJCWtmcmVlKHNlcnZlci0+bW50X3BhdGgpOworCQlrZnJlZShzZXJ2ZXItPmhvc3RuYW1lKTsKKwkJa2ZyZWUoc2VydmVyKTsKKwkJcmV0dXJuIHNpbXBsZV9zZXRfbW50KG1udCwgcyk7CisJfQogCiAJcy0+c19mbGFncyA9IGZsYWdzOwogCkBAIC0xMzQyLDE3ICsxMzc4LDE3IEBACiAJaWYgKGVycm9yKSB7CiAJCXVwX3dyaXRlKCZzLT5zX3Vtb3VudCk7CiAJCWRlYWN0aXZhdGVfc3VwZXIocyk7Ci0JCXJldHVybiBFUlJfUFRSKGVycm9yKTsKKwkJcmV0dXJuIGVycm9yOwogCX0KIAlzLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQlyZXR1cm4gczsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKIG91dF9lcnI6Ci0JcyA9IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKilwOworCWVycm9yID0gUFRSX0VSUihwKTsKIG91dF9mcmVlOgogCWtmcmVlKHNlcnZlci0+bW50X3BhdGgpOwogCWtmcmVlKHNlcnZlci0+aG9zdG5hbWUpOwogCWtmcmVlKHNlcnZlcik7Ci0JcmV0dXJuIHM7CisJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0aWMgdm9pZCBuZnM0X2tpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKQEAgLTE0MzAsMTEgKzE0NjYsMTEgQEAKIAlyZXR1cm4gc2I7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm5mc19jbG9uZV9uZnM0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpyYXdfZGF0YSkKK3N0YXRpYyBpbnQgbmZzX2Nsb25lX25mczRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3QgbmZzX2Nsb25lX21vdW50ICpkYXRhID0gcmF3X2RhdGE7Ci0JcmV0dXJuIG5mc19jbG9uZV9nZW5lcmljX3NiKGRhdGEsIG5mczRfY2xvbmVfc2IsIG5mc19jbG9uZV9zZXJ2ZXIpOworCXJldHVybiBuZnNfY2xvbmVfZ2VuZXJpY19zYihkYXRhLCBuZnM0X2Nsb25lX3NiLCBuZnNfY2xvbmVfc2VydmVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpuZnM0X3JlZmVycmFsX3NiKHN0cnVjdCBuZnNfc2VydmVyICpzZXJ2ZXIsIHN0cnVjdCBuZnNfY2xvbmVfbW91bnQgKmRhdGEpCkBAIC0xNDg3LDExICsxNTIzLDExIEBACiAJcmV0dXJuIChzdHJ1Y3QgbmZzX3NlcnZlciAqKWVycjsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbmZzX3JlZmVycmFsX25mczRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKnJhd19kYXRhKQorc3RhdGljIGludCBuZnNfcmVmZXJyYWxfbmZzNF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqcmF3X2RhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewogCXN0cnVjdCBuZnNfY2xvbmVfbW91bnQgKmRhdGEgPSByYXdfZGF0YTsKLQlyZXR1cm4gbmZzX2Nsb25lX2dlbmVyaWNfc2IoZGF0YSwgbmZzNF9yZWZlcnJhbF9zYiwgbmZzNF9yZWZlcnJhbF9zZXJ2ZXIpOworCXJldHVybiBuZnNfY2xvbmVfZ2VuZXJpY19zYihkYXRhLCBuZnM0X3JlZmVycmFsX3NiLCBuZnM0X3JlZmVycmFsX3NlcnZlciwgbW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9mcy9uZnNkL25mczR4ZHIuYyBiL2ZzL25mc2QvbmZzNHhkci5jCmluZGV4IGRlMzk5OGYuLjU0NDZhMDggMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzNHhkci5jCisrKyBiL2ZzL25mc2QvbmZzNHhkci5jCkBAIC0xMzEwLDcgKzEzMTAsNyBAQAogCWlmICgoYm12YWwwICYgKEZBVFRSNF9XT1JEMF9GSUxFU19GUkVFIHwgRkFUVFI0X1dPUkQwX0ZJTEVTX1RPVEFMKSkgfHwKIAkgICAgKGJtdmFsMSAmIChGQVRUUjRfV09SRDFfU1BBQ0VfQVZBSUwgfCBGQVRUUjRfV09SRDFfU1BBQ0VfRlJFRSB8CiAJCSAgICAgICBGQVRUUjRfV09SRDFfU1BBQ0VfVE9UQUwpKSkgewotCQlzdGF0dXMgPSB2ZnNfc3RhdGZzKGRlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnN0YXRmcyk7CisJCXN0YXR1cyA9IHZmc19zdGF0ZnMoZGVudHJ5LCAmc3RhdGZzKTsKIAkJaWYgKHN0YXR1cykKIAkJCWdvdG8gb3V0X25mc2VycjsKIAl9CmRpZmYgLS1naXQgYS9mcy9uZnNkL25mc2N0bC5jIGIvZnMvbmZzZC9uZnNjdGwuYwppbmRleCAzZWYwMTdiLi5hMTgxMGU2IDEwMDY0NAotLS0gYS9mcy9uZnNkL25mc2N0bC5jCisrKyBiL2ZzL25mc2QvbmZzY3RsLmMKQEAgLTQ5NCwxMCArNDk0LDEwIEBACiAJcmV0dXJuIHNpbXBsZV9maWxsX3N1cGVyKHNiLCAweDZlNjY3MzY0LCBuZnNkX2ZpbGVzKTsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbmZzZF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgbmZzZF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5mc2RfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG5mc2RfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIG5mc2RfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL25mc2QvdmZzLmMgYi9mcy9uZnNkL3Zmcy5jCmluZGV4IDFkNjVmMTMuLjI0NWVhYTEgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvdmZzLmMKKysrIGIvZnMvbmZzZC92ZnMuYwpAQCAtMTczNyw3ICsxNzM3LDcgQEAKIG5mc2Rfc3RhdGZzKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBzdmNfZmggKmZocCwgc3RydWN0IGtzdGF0ZnMgKnN0YXQpCiB7CiAJaW50IGVyciA9IGZoX3ZlcmlmeShycXN0cCwgZmhwLCAwLCBNQVlfTk9QKTsKLQlpZiAoIWVyciAmJiB2ZnNfc3RhdGZzKGZocC0+ZmhfZGVudHJ5LT5kX2lub2RlLT5pX3NiLHN0YXQpKQorCWlmICghZXJyICYmIHZmc19zdGF0ZnMoZmhwLT5maF9kZW50cnksc3RhdCkpCiAJCWVyciA9IG5mc2Vycl9pbzsKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9hb3BzLmggYi9mcy9udGZzL2FvcHMuaAppbmRleCAzYjc0ZTY2Li4zMjVjZTI2IDEwMDY0NAotLS0gYS9mcy9udGZzL2FvcHMuaAorKysgYi9mcy9udGZzL2FvcHMuaApAQCAtODYsOCArODYsNyBAQAogc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqbnRmc19tYXBfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJdW5zaWduZWQgbG9uZyBpbmRleCkKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHJlYWRfY2FjaGVfcGFnZShtYXBwaW5nLCBpbmRleCwKLQkJCShmaWxsZXJfdCopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIGluZGV4LCBOVUxMKTsKIAogCWlmICghSVNfRVJSKHBhZ2UpKSB7CiAJCXdhaXRfb25fcGFnZV9sb2NrZWQocGFnZSk7CmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuYwppbmRleCAxNjYzZjVjLi42NzA4ZTFkIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCisrKyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTI1MjksOCArMjUyOSw3IEBACiAJZW5kID4+PSBQQUdFX0NBQ0hFX1NISUZUOwogCS8qIElmIHRoZXJlIGlzIGEgZmlyc3QgcGFydGlhbCBwYWdlLCBuZWVkIHRvIGRvIGl0IHRoZSBzbG93IHdheS4gKi8KIAlpZiAoc3RhcnRfb2ZzKSB7Ci0JCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgaWR4LAotCQkJCShmaWxsZXJfdCopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlLCBOVUxMKTsKKwkJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIGlkeCwgTlVMTCk7CiAJCWlmIChJU19FUlIocGFnZSkpIHsKIAkJCW50ZnNfZXJyb3Iodm9sLT5zYiwgIkZhaWxlZCB0byByZWFkIGZpcnN0IHBhcnRpYWwgIgogCQkJCQkicGFnZSAoc3luYyBlcnJvciwgaW5kZXggMHglbHgpLiIsIGlkeCk7CkBAIC0yNjAwLDggKzI1OTksNyBAQAogCX0KIAkvKiBJZiB0aGVyZSBpcyBhIGxhc3QgcGFydGlhbCBwYWdlLCBuZWVkIHRvIGRvIGl0IHRoZSBzbG93IHdheS4gKi8KIAlpZiAoZW5kX29mcykgewotCQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIGlkeCwKLQkJCQkoZmlsbGVyX3QqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBpZHgsIE5VTEwpOwogCQlpZiAoSVNfRVJSKHBhZ2UpKSB7CiAJCQludGZzX2Vycm9yKHZvbC0+c2IsICJGYWlsZWQgdG8gcmVhZCBsYXN0IHBhcnRpYWwgcGFnZSAiCiAJCQkJCSIoc3luYyBlcnJvciwgaW5kZXggMHglbHgpLiIsIGlkeCk7CmRpZmYgLS1naXQgYS9mcy9udGZzL2ZpbGUuYyBiL2ZzL250ZnMvZmlsZS5jCmluZGV4IGM2M2E4M2UuLjg4MjkyZjkgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvZmlsZS5jCisrKyBiL2ZzL250ZnMvZmlsZS5jCkBAIC0yMzEsOCArMjMxLDcgQEAKIAkJICogUmVhZCB0aGUgcGFnZS4gIElmIHRoZSBwYWdlIGlzIG5vdCBwcmVzZW50LCB0aGlzIHdpbGwgemVybwogCQkgKiB0aGUgdW5pbml0aWFsaXplZCByZWdpb25zIGZvciB1cy4KIAkJICovCi0JCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgaW5kZXgsCi0JCQkJKGZpbGxlcl90KiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCQlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgaW5kZXgsIE5VTEwpOwogCQlpZiAoSVNfRVJSKHBhZ2UpKSB7CiAJCQllcnIgPSBQVFJfRVJSKHBhZ2UpOwogCQkJZ290byBpbml0X2Vycl9vdXQ7CkBAIC0xNDg0LDE0ICsxNDgzLDE1IEBACiAJCXVuc2lnbmVkIG5yX3BhZ2VzKQogewogCUJVR19PTighbnJfcGFnZXMpOworCS8qCisJICogV2FybmluZzogRG8gbm90IGRvIHRoZSBkZWNyZW1lbnQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgY2FsbCB0bworCSAqIGZsdXNoX2RjYWNoZV9wYWdlKCkgYmVjYXVzZSBpdCBpcyBhIE5VTEwgbWFjcm8gb24gaTM4NiBhbmQgaGVuY2UgdGhlCisJICogZGVjcmVtZW50IG5ldmVyIGhhcHBlbnMgc28gdGhlIGxvb3AgbmV2ZXIgdGVybWluYXRlcy4KKwkgKi8KIAlkbyB7Ci0JCS8qCi0JCSAqIFdhcm5pbmc6IERvIG5vdCBkbyB0aGUgZGVjcmVtZW50IGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlCi0JCSAqIGNhbGwgYmVjYXVzZSBmbHVzaF9kY2FjaGVfcGFnZSgpIGlzIGEgTlVMTCBtYWNybyBvbiBpMzg2Ci0JCSAqIGFuZCBoZW5jZSB0aGUgZGVjcmVtZW50IG5ldmVyIGhhcHBlbnMuCi0JCSAqLworCQktLW5yX3BhZ2VzOwogCQlmbHVzaF9kY2FjaGVfcGFnZShwYWdlc1tucl9wYWdlc10pOwotCX0gd2hpbGUgKC0tbnJfcGFnZXMgPiAwKTsKKwl9IHdoaWxlIChucl9wYWdlcyA+IDApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2ZzL250ZnMvc3VwZXIuYyBiL2ZzL250ZnMvc3VwZXIuYwppbmRleCAyNzgzM2Y2Li4wZTE0YWNlIDEwMDY0NAotLS0gYS9mcy9udGZzL3N1cGVyLmMKKysrIGIvZnMvbnRmcy9zdXBlci5jCkBAIC0yNjAxLDEwICsyNjAxLDEwIEBACiAKIC8qKgogICogbnRmc19zdGF0ZnMgLSByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgbW91bnRlZCBOVEZTIHZvbHVtZQotICogQHNiOgkJc3VwZXIgYmxvY2sgb2YgbW91bnRlZCB2b2x1bWUKKyAqIEBkZW50cnk6CWRlbnRyeSBmcm9tIG1vdW50ZWQgdm9sdW1lCiAgKiBAc2ZzOglzdGF0ZnMgc3RydWN0dXJlIGluIHdoaWNoIHRvIHJldHVybiB0aGUgaW5mb3JtYXRpb24KICAqCi0gKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vdW50ZWQgTlRGUyB2b2x1bWUgQHNiIGluIHRoZSBzdGF0ZnMgc3RydWN0dXJlCisgKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vdW50ZWQgTlRGUyB2b2x1bWUgQGRlbnRyeSBpbiB0aGUgc3RhdGZzIHN0cnVjdHVyZQogICogcG9pbnRlZCB0byBieSBAc2ZzICh0aGlzIGlzIGluaXRpYWxpemVkIHdpdGggemVyb3MgYmVmb3JlIG50ZnNfc3RhdGZzIGlzCiAgKiBjYWxsZWQpLiBXZSBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSBjb3JyZWN0IG9mIHRoZSBtb21lbnQgaW4gdGltZSBhdAogICogd2hpY2ggd2UgYXJlIGNhbGxlZC4gTW9zdCB2YWx1ZXMgYXJlIHZhcmlhYmxlIG90aGVyd2lzZSBhbmQgdGhpcyBpc24ndCBqdXN0CkBAIC0yNjE3LDggKzI2MTcsOSBAQAogICoKICAqIFJldHVybiAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIG9uIGVycm9yLgogICovCi1zdGF0aWMgaW50IG50ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpzZnMpCitzdGF0aWMgaW50IG50ZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKnNmcykKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOwogCXM2NCBzaXplOwogCW50ZnNfdm9sdW1lICp2b2wgPSBOVEZTX1NCKHNiKTsKIAludGZzX2lub2RlICptZnRfbmkgPSBOVEZTX0kodm9sLT5tZnRfaW5vKTsKQEAgLTMwOTMsMTAgKzMwOTQsMTEgQEAKIC8qIERyaXZlciB3aWRlIG11dGV4LiAqLwogREVGSU5FX01VVEVYKG50ZnNfbG9jayk7CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm50ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG50ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIG50ZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgbnRmc19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIG50ZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1mcy5jIGIvZnMvb2NmczIvZGxtL2RsbWZzLmMKaW5kZXggN2U4OGUyNC4uNzI3M2Q5ZiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvZGxtL2RsbWZzLmMKKysrIGIvZnMvb2NmczIvZGxtL2RsbWZzLmMKQEAgLTU3NCwxMCArNTc0LDEwIEBACiAJLmdldGF0dHIJPSBzaW1wbGVfZ2V0YXR0ciwKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRsbWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCBkbG1mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgZGxtZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgZGxtZnNfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGRsbWZzX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zdXBlci5jIGIvZnMvb2NmczIvc3VwZXIuYwppbmRleCA5NDliM2RhLi5jZGY3MzM5IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9zdXBlci5jCisrKyBiL2ZzL29jZnMyL3N1cGVyLmMKQEAgLTEwMCw3ICsxMDAsNyBAQAogc3RhdGljIHZvaWQgb2NmczJfZnJlZV9tZW1fY2FjaGVzKHZvaWQpOwogc3RhdGljIHZvaWQgb2NmczJfZGVsZXRlX29zYihzdHJ1Y3Qgb2NmczJfc3VwZXIgKm9zYik7CiAKLXN0YXRpYyBpbnQgb2NmczJfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpOworc3RhdGljIGludCBvY2ZzMl9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKTsKIAogc3RhdGljIGludCBvY2ZzMl9zeW5jX2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsKIApAQCAtNjcyLDEyICs2NzIsMTQgQEAKIAlyZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpvY2ZzMl9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJCWludCBmbGFncywKLQkJCQkJY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCXZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG9jZnMyX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJCWludCBmbGFncywKKwkJCWNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJdm9pZCAqZGF0YSwKKwkJCXN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIG9jZnMyX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIG9jZnMyX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgb2NmczJfZnNfdHlwZSA9IHsKQEAgLTg1NSw3ICs4NTcsNyBAQAogCW1sb2dfZXhpdF92b2lkKCk7CiB9CiAKLXN0YXRpYyBpbnQgb2NmczJfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IG9jZnMyX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CiAJc3RydWN0IG9jZnMyX3N1cGVyICpvc2I7CiAJdTMyIG51bWJpdHMsIGZyZWViaXRzOwpAQCAtODY0LDkgKzg2Niw5IEBACiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA9IE5VTEw7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IE5VTEw7CiAKLQltbG9nX2VudHJ5KCIoJXAsICVwKVxuIiwgc2IsIGJ1Zik7CisJbWxvZ19lbnRyeSgiKCVwLCAlcClcbiIsIGRlbnRyeS0+ZF9zYiwgYnVmKTsKIAotCW9zYiA9IE9DRlMyX1NCKHNiKTsKKwlvc2IgPSBPQ0ZTMl9TQihkZW50cnktPmRfc2IpOwogCiAJaW5vZGUgPSBvY2ZzMl9nZXRfc3lzdGVtX2ZpbGVfaW5vZGUob3NiLAogCQkJCQkgICAgR0xPQkFMX0JJVE1BUF9TWVNURU1fSU5PREUsCkBAIC04ODksNyArODkxLDcgQEAKIAlmcmVlYml0cyA9IG51bWJpdHMgLSBsZTMyX3RvX2NwdShibV9sb2NrLT5pZDEuYml0bWFwMS5pX3VzZWQpOwogCiAJYnVmLT5mX3R5cGUgPSBPQ0ZTMl9TVVBFUl9NQUdJQzsKLQlidWYtPmZfYnNpemUgPSBzYi0+c19ibG9ja3NpemU7CisJYnVmLT5mX2JzaXplID0gZGVudHJ5LT5kX3NiLT5zX2Jsb2Nrc2l6ZTsKIAlidWYtPmZfbmFtZWxlbiA9IE9DRlMyX01BWF9GSUxFTkFNRV9MRU47CiAJYnVmLT5mX2Jsb2NrcyA9ICgoc2VjdG9yX3QpIG51bWJpdHMpICoKIAkJCShvc2ItPnNfY2x1c3RlcnNpemUgPj4gb3NiLT5zYi0+c19ibG9ja3NpemVfYml0cyk7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zeW1saW5rLmMgYi9mcy9vY2ZzMi9zeW1saW5rLmMKaW5kZXggZjY5ODZiZC4uMGM4YTEyOSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvc3ltbGluay5jCisrKyBiL2ZzL29jZnMyL3N5bWxpbmsuYwpAQCAtNjQsOCArNjQsNyBAQAogewogCXN0cnVjdCBwYWdlICogcGFnZTsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGRlbnRyeS0+ZF9pbm9kZS0+aV9tYXBwaW5nOwotCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgMCwKLQkJCSAgICAgICAoZmlsbGVyX3QgKiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCXBhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCAwLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHBhZ2UpKQogCQlnb3RvIHN5bmNfZmFpbDsKIAl3YWl0X29uX3BhZ2VfbG9ja2VkKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvZnMvb3Blbi5jIGIvZnMvb3Blbi5jCmluZGV4IDRmMTc4YWMuLjVmYjE2ZTUgMTAwNjQ0Ci0tLSBhL2ZzL29wZW4uYworKysgYi9mcy9vcGVuLmMKQEAgLTMxLDE4ICszMSwxOCBAQAogCiAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgogCi1pbnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQoraW50IHZmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogewogCWludCByZXR2YWwgPSAtRU5PREVWOwogCi0JaWYgKHNiKSB7CisJaWYgKGRlbnRyeSkgewogCQlyZXR2YWwgPSAtRU5PU1lTOwotCQlpZiAoc2ItPnNfb3AtPnN0YXRmcykgeworCQlpZiAoZGVudHJ5LT5kX3NiLT5zX29wLT5zdGF0ZnMpIHsKIAkJCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7Ci0JCQlyZXR2YWwgPSBzZWN1cml0eV9zYl9zdGF0ZnMoc2IpOworCQkJcmV0dmFsID0gc2VjdXJpdHlfc2Jfc3RhdGZzKGRlbnRyeSk7CiAJCQlpZiAocmV0dmFsKQogCQkJCXJldHVybiByZXR2YWw7Ci0JCQlyZXR2YWwgPSBzYi0+c19vcC0+c3RhdGZzKHNiLCBidWYpOworCQkJcmV0dmFsID0gZGVudHJ5LT5kX3NiLT5zX29wLT5zdGF0ZnMoZGVudHJ5LCBidWYpOwogCQkJaWYgKHJldHZhbCA9PSAwICYmIGJ1Zi0+Zl9mcnNpemUgPT0gMCkKIAkJCQlidWYtPmZfZnJzaXplID0gYnVmLT5mX2JzaXplOwogCQl9CkBAIC01MiwxMiArNTIsMTIgQEAKIAogRVhQT1JUX1NZTUJPTCh2ZnNfc3RhdGZzKTsKIAotc3RhdGljIGludCB2ZnNfc3RhdGZzX25hdGl2ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCitzdGF0aWMgaW50IHZmc19zdGF0ZnNfbmF0aXZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCBrc3RhdGZzIHN0OwogCWludCByZXR2YWw7CiAKLQlyZXR2YWwgPSB2ZnNfc3RhdGZzKHNiLCAmc3QpOworCXJldHZhbCA9IHZmc19zdGF0ZnMoZGVudHJ5LCAmc3QpOwogCWlmIChyZXR2YWwpCiAJCXJldHVybiByZXR2YWw7CiAKQEAgLTk1LDEyICs5NSwxMiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHZmc19zdGF0ZnM2NChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qgc3RhdGZzNjQgKmJ1ZikKK3N0YXRpYyBpbnQgdmZzX3N0YXRmczY0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHN0YXRmczY0ICpidWYpCiB7CiAJc3RydWN0IGtzdGF0ZnMgc3Q7CiAJaW50IHJldHZhbDsKIAotCXJldHZhbCA9IHZmc19zdGF0ZnMoc2IsICZzdCk7CisJcmV0dmFsID0gdmZzX3N0YXRmcyhkZW50cnksICZzdCk7CiAJaWYgKHJldHZhbCkKIAkJcmV0dXJuIHJldHZhbDsKIApAQCAtMTMwLDcgKzEzMCw3IEBACiAJZXJyb3IgPSB1c2VyX3BhdGhfd2FsayhwYXRoLCAmbmQpOwogCWlmICghZXJyb3IpIHsKIAkJc3RydWN0IHN0YXRmcyB0bXA7Ci0JCWVycm9yID0gdmZzX3N0YXRmc19uYXRpdmUobmQuZGVudHJ5LT5kX2lub2RlLT5pX3NiLCAmdG1wKTsKKwkJZXJyb3IgPSB2ZnNfc3RhdGZzX25hdGl2ZShuZC5kZW50cnksICZ0bXApOwogCQlpZiAoIWVycm9yICYmIGNvcHlfdG9fdXNlcihidWYsICZ0bXAsIHNpemVvZih0bXApKSkKIAkJCWVycm9yID0gLUVGQVVMVDsKIAkJcGF0aF9yZWxlYXNlKCZuZCk7CkBAIC0xNDksNyArMTQ5LDcgQEAKIAllcnJvciA9IHVzZXJfcGF0aF93YWxrKHBhdGgsICZuZCk7CiAJaWYgKCFlcnJvcikgewogCQlzdHJ1Y3Qgc3RhdGZzNjQgdG1wOwotCQllcnJvciA9IHZmc19zdGF0ZnM2NChuZC5kZW50cnktPmRfaW5vZGUtPmlfc2IsICZ0bXApOworCQllcnJvciA9IHZmc19zdGF0ZnM2NChuZC5kZW50cnksICZ0bXApOwogCQlpZiAoIWVycm9yICYmIGNvcHlfdG9fdXNlcihidWYsICZ0bXAsIHNpemVvZih0bXApKSkKIAkJCWVycm9yID0gLUVGQVVMVDsKIAkJcGF0aF9yZWxlYXNlKCZuZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAKIAlmaWxlID0gZmdldChmZCk7CiAJaWYgKCFmaWxlKQogCQlnb3RvIG91dDsKLQllcnJvciA9IHZmc19zdGF0ZnNfbmF0aXZlKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3NiLCAmdG1wKTsKKwllcnJvciA9IHZmc19zdGF0ZnNfbmF0aXZlKGZpbGUtPmZfZGVudHJ5LCAmdG1wKTsKIAlpZiAoIWVycm9yICYmIGNvcHlfdG9fdXNlcihidWYsICZ0bXAsIHNpemVvZih0bXApKSkKIAkJZXJyb3IgPSAtRUZBVUxUOwogCWZwdXQoZmlsZSk7CkBAIC0xODksNyArMTg5LDcgQEAKIAlmaWxlID0gZmdldChmZCk7CiAJaWYgKCFmaWxlKQogCQlnb3RvIG91dDsKLQllcnJvciA9IHZmc19zdGF0ZnM2NChmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9zYiwgJnRtcCk7CisJZXJyb3IgPSB2ZnNfc3RhdGZzNjQoZmlsZS0+Zl9kZW50cnksICZ0bXApOwogCWlmICghZXJyb3IgJiYgY29weV90b191c2VyKGJ1ZiwgJnRtcCwgc2l6ZW9mKHRtcCkpKQogCQllcnJvciA9IC1FRkFVTFQ7CiAJZnB1dChmaWxlKTsKQEAgLTExNTIsNyArMTE1Miw3IEBACiAJfQogCiAJaWYgKGZpbHAtPmZfb3AgJiYgZmlscC0+Zl9vcC0+Zmx1c2gpCi0JCXJldHZhbCA9IGZpbHAtPmZfb3AtPmZsdXNoKGZpbHApOworCQlyZXR2YWwgPSBmaWxwLT5mX29wLT5mbHVzaChmaWxwLCBpZCk7CiAKIAlkbm90aWZ5X2ZsdXNoKGZpbHAsIGlkKTsKIAlsb2Nrc19yZW1vdmVfcG9zaXgoZmlscCwgaWQpOwpkaWZmIC0tZ2l0IGEvZnMvb3BlbnByb21mcy9pbm9kZS5jIGIvZnMvb3BlbnByb21mcy9pbm9kZS5jCmluZGV4IDBmMTQyNzYuLjQ2NGUyYmMgMTAwNjQ0Ci0tLSBhL2ZzL29wZW5wcm9tZnMvaW5vZGUuYworKysgYi9mcy9vcGVucHJvbWZzL2lub2RlLmMKQEAgLTEwNTQsMTAgKzEwNTQsMTAgQEAKIAlyZXR1cm4gLUVOT01FTTsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqb3BlbnByb21fZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IG9wZW5wcm9tX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgb3BlbnByb21fZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG9wZW5wcm9tX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBvcGVucHJvbV9mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvcGFydGl0aW9ucy9jaGVjay5jIGIvZnMvcGFydGl0aW9ucy9jaGVjay5jCmluZGV4IDdlZjFmMDkuLjJlZjMxM2EgMTAwNjQ0Ci0tLSBhL2ZzL3BhcnRpdGlvbnMvY2hlY2suYworKysgYi9mcy9wYXJ0aXRpb25zL2NoZWNrLmMKQEAgLTMyOSw2ICszMjksNyBAQAogCXAtPmlvc1swXSA9IHAtPmlvc1sxXSA9IDA7CiAJcC0+c2VjdG9yc1swXSA9IHAtPnNlY3RvcnNbMV0gPSAwOwogCWRldmZzX3JlbW92ZSgiJXMvcGFydCVkIiwgZGlzay0+ZGV2ZnNfbmFtZSwgcGFydCk7CisJc3lzZnNfcmVtb3ZlX2xpbmsoJnAtPmtvYmosICJzdWJzeXN0ZW0iKTsKIAlpZiAocC0+aG9sZGVyX2RpcikKIAkJa29iamVjdF91bnJlZ2lzdGVyKHAtPmhvbGRlcl9kaXIpOwogCWtvYmplY3RfdWV2ZW50KCZwLT5rb2JqLCBLT0JKX1JFTU9WRSk7CkBAIC0zNjMsNiArMzY0LDcgQEAKIAlrb2JqZWN0X2FkZCgmcC0+a29iaik7CiAJaWYgKCFkaXNrLT5wYXJ0X3VldmVudF9zdXBwcmVzcykKIAkJa29iamVjdF91ZXZlbnQoJnAtPmtvYmosIEtPQkpfQUREKTsKKwlzeXNmc19jcmVhdGVfbGluaygmcC0+a29iaiwgJmJsb2NrX3N1YnN5cy5rc2V0LmtvYmosICJzdWJzeXN0ZW0iKTsKIAlwYXJ0aXRpb25fc3lzZnNfYWRkX3N1YmRpcihwKTsKIAlkaXNrLT5wYXJ0W3BhcnQtMV0gPSBwOwogfQpAQCAtMzk4LDYgKzQwMCw3IEBACiAJCQlrZnJlZShkaXNrX25hbWUpOwogCQl9CiAJfQorCXN5c2ZzX2NyZWF0ZV9saW5rKCZkaXNrLT5rb2JqLCAmYmxvY2tfc3Vic3lzLmtzZXQua29iaiwgInN1YnN5c3RlbSIpOwogfQogCiAvKiBOb3QgZXhwb3J0ZWQsIGhlbHBlciB0byBhZGRfZGlzaygpLiAqLwpAQCAtNDgxLDYgKzQ4NCwxMCBAQAogCQlzZWN0b3JfdCBmcm9tID0gc3RhdGUtPnBhcnRzW3BdLmZyb207CiAJCWlmICghc2l6ZSkKIAkJCWNvbnRpbnVlOworCQlpZiAoZnJvbSArIHNpemUgPiBnZXRfY2FwYWNpdHkoZGlzaykpIHsKKwkJCXByaW50aygiICVzOiBwJWQgZXhjZWVkcyBkZXZpY2UgY2FwYWNpdHlcbiIsCisJCQkJZGlzay0+ZGlza19uYW1lLCBwKTsKKwkJfQogCQlhZGRfcGFydGl0aW9uKGRpc2ssIHAsIGZyb20sIHNpemUpOwogI2lmZGVmIENPTkZJR19CTEtfREVWX01ECiAJCWlmIChzdGF0ZS0+cGFydHNbcF0uZmxhZ3MpCkBAIC00OTYsOCArNTAzLDggQEAKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGJkZXYtPmJkX2lub2RlLT5pX21hcHBpbmc7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKLQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIChwZ29mZl90KShuID4+IChQQUdFX0NBQ0hFX1NISUZULTkpKSwKLQkJCShmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIChwZ29mZl90KShuID4+IChQQUdFX0NBQ0hFX1NISUZULTkpKSwKKwkJCQkgTlVMTCk7CiAJaWYgKCFJU19FUlIocGFnZSkpIHsKIAkJd2FpdF9vbl9wYWdlX2xvY2tlZChwYWdlKTsKIAkJaWYgKCFQYWdlVXB0b2RhdGUocGFnZSkpCkBAIC01NDgsNSArNTU1LDYgQEAKIAkJcHV0X2RldmljZShkaXNrLT5kcml2ZXJmc19kZXYpOwogCQlkaXNrLT5kcml2ZXJmc19kZXYgPSBOVUxMOwogCX0KKwlzeXNmc19yZW1vdmVfbGluaygmZGlzay0+a29iaiwgInN1YnN5c3RlbSIpOwogCWtvYmplY3RfZGVsKCZkaXNrLT5rb2JqKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3BpcGUuYyBiL2ZzL3BpcGUuYwppbmRleCA1YWNkODk1Li4yMDM1MjU3IDEwMDY0NAotLS0gYS9mcy9waXBlLmMKKysrIGIvZnMvcGlwZS5jCkBAIC05NzksMTIgKzk3OSwxMSBAQAogICogYW55IG9wZXJhdGlvbnMgb24gdGhlIHJvb3QgZGlyZWN0b3J5LiBIb3dldmVyLCB3ZSBuZWVkIGEgbm9uLXRyaXZpYWwKICAqIGRfbmFtZSAtIHBpcGU6IHdpbGwgZ28gbmljZWx5IGFuZCBraWxsIHRoZSBzcGVjaWFsLWNhc2luZyBpbiBwcm9jZnMuCiAgKi8KLQotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqCi1waXBlZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsCi0JICAgICAgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHBpcGVmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQkgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwKKwkJCSBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAicGlwZToiLCBOVUxMLCBQSVBFRlNfTUFHSUMpOworCXJldHVybiBnZXRfc2JfcHNldWRvKGZzX3R5cGUsICJwaXBlOiIsIE5VTEwsIFBJUEVGU19NQUdJQywgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHBpcGVfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL3Byb2Mvcm9vdC5jIGIvZnMvcHJvYy9yb290LmMKaW5kZXggYzNmZDM2MS4uOTk5NTM1NiAxMDA2NDQKLS0tIGEvZnMvcHJvYy9yb290LmMKKysrIGIvZnMvcHJvYy9yb290LmMKQEAgLTI2LDEwICsyNiwxMCBAQAogc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX3N5c19yb290OwogI2VuZGlmCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnByb2NfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHByb2NfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBwcm9jX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBwcm9jX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBwcm9jX2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9mcy9xbng0L2lub2RlLmMgYi9mcy9xbng0L2lub2RlLmMKaW5kZXggMmVjZDQ2Zi4uMmYyNGM0NiAxMDA2NDQKLS0tIGEvZnMvcW54NC9pbm9kZS5jCisrKyBiL2ZzL3FueDQvaW5vZGUuYwpAQCAtMTI4LDcgKzEyOCw3IEBACiBzdGF0aWMgdm9pZCBxbng0X2Rlc3Ryb3lfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CiBzdGF0aWMgdm9pZCBxbng0X3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwogc3RhdGljIGludCBxbng0X3JlbW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50ICpmbGFncywgY2hhciAqZGF0YSk7Ci1zdGF0aWMgaW50IHFueDRfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKK3N0YXRpYyBpbnQgcW54NF9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKIAogc3RhdGljIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHFueDRfc29wcyA9CiB7CkBAIC0yODIsOCArMjgyLDEwIEBACiAJcmV0dXJuIGJsb2NrOwogfQogCi1zdGF0aWMgaW50IHFueDRfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IHFueDRfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOworCiAJbG9ja19rZXJuZWwoKTsKIAogCWJ1Zi0+Zl90eXBlICAgID0gc2ItPnNfbWFnaWM7CkBAIC01NjEsMTAgKzU2MywxMSBAQAogCQkgICAgICAgInFueDRfaW5vZGVfY2FjaGU6IG5vdCBhbGwgc3RydWN0dXJlcyB3ZXJlIGZyZWVkXG4iKTsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqcW54NF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgcW54NF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgcW54NF9maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCBxbng0X2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgcW54NF9mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvcmFtZnMvaW5vZGUuYyBiL2ZzL3JhbWZzL2lub2RlLmMKaW5kZXggMTRiZDIyNC4uYjk2NzczMyAxMDA2NDQKLS0tIGEvZnMvcmFtZnMvaW5vZGUuYworKysgYi9mcy9yYW1mcy9pbm9kZS5jCkBAIC0xODUsMTYgKzE4NSwxNyBAQAogCXJldHVybiAwOwogfQogCi1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKnJhbWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQoraW50IHJhbWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCByYW1mc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCByYW1mc19maWxsX3N1cGVyLCBtbnQpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpyb290ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHJvb3Rmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFnc3xNU19OT1VTRVIsIGRhdGEsIHJhbWZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3N8TVNfTk9VU0VSLCBkYXRhLCByYW1mc19maWxsX3N1cGVyLAorCQkJICAgIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSByYW1mc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMvc3VwZXIuYyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMKaW5kZXggY2FlMmFiYi4uMDBmMTMyMSAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvc3VwZXIuYworKysgYi9mcy9yZWlzZXJmcy9zdXBlci5jCkBAIC02MCw3ICs2MCw3IEBACiB9CiAKIHN0YXRpYyBpbnQgcmVpc2VyZnNfcmVtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCAqZmxhZ3MsIGNoYXIgKmRhdGEpOwotc3RhdGljIGludCByZWlzZXJmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKTsKK3N0YXRpYyBpbnQgcmVpc2VyZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1Zik7CiAKIHN0YXRpYyBpbnQgcmVpc2VyZnNfc3luY19mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCB3YWl0KQogewpAQCAtMTkzOCwxNSArMTkzOCwxNSBAQAogCXJldHVybiBlcnJ2YWw7CiB9CiAKLXN0YXRpYyBpbnQgcmVpc2VyZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3N0YXRpYyBpbnQgcmVpc2VyZnNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKLQlzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKnJzID0gU0JfRElTS19TVVBFUl9CTE9DSyhzKTsKKwlzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKnJzID0gU0JfRElTS19TVVBFUl9CTE9DSyhkZW50cnktPmRfc2IpOwogCiAJYnVmLT5mX25hbWVsZW4gPSAoUkVJU0VSRlNfTUFYX05BTUUocy0+c19ibG9ja3NpemUpKTsKIAlidWYtPmZfYmZyZWUgPSBzYl9mcmVlX2Jsb2Nrcyhycyk7CiAJYnVmLT5mX2JhdmFpbCA9IGJ1Zi0+Zl9iZnJlZTsKIAlidWYtPmZfYmxvY2tzID0gc2JfYmxvY2tfY291bnQocnMpIC0gc2JfYm1hcF9ucihycykgLSAxOwotCWJ1Zi0+Zl9ic2l6ZSA9IHMtPnNfYmxvY2tzaXplOworCWJ1Zi0+Zl9ic2l6ZSA9IGRlbnRyeS0+ZF9zYi0+c19ibG9ja3NpemU7CiAJLyogY2hhbmdlZCB0byBhY2NvbW1vZGF0ZSBnY2MgZm9sa3MuICovCiAJYnVmLT5mX3R5cGUgPSBSRUlTRVJGU19TVVBFUl9NQUdJQzsKIAlyZXR1cm4gMDsKQEAgLTIyNDksMTEgKzIyNDksMTIgQEAKIAogI2VuZGlmCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zdXBlcl9ibG9jayhzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJCQkJICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKLQkJCQkJICAgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgZ2V0X3N1cGVyX2Jsb2NrKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJCSAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHJlaXNlcmZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHJlaXNlcmZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBpbml0X3JlaXNlcmZzX2ZzKHZvaWQpCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy94YXR0ci5jIGIvZnMvcmVpc2VyZnMveGF0dHIuYwppbmRleCBmZmI3OWM0Li4zOWZlZGFhIDEwMDY0NAotLS0gYS9mcy9yZWlzZXJmcy94YXR0ci5jCisrKyBiL2ZzL3JlaXNlcmZzL3hhdHRyLmMKQEAgLTQ1Miw4ICs0NTIsNyBAQAogCS8qIFdlIGNhbiBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZnJlZSBkZW50cmllcywKIAkgICBhbmQgYW4gdW5saW5rL3JtZGlyIGhhcyBqdXN0IG9jY3VyZWQgLSBHRlBfTk9GUyBhdm9pZHMgdGhpcyAqLwogCW1hcHBpbmdfc2V0X2dmcF9tYXNrKG1hcHBpbmcsIEdGUF9OT0ZTKTsKLQlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIG4sCi0JCQkgICAgICAgKGZpbGxlcl90ICopIG1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgTlVMTCk7CisJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIG4sIE5VTEwpOwogCWlmICghSVNfRVJSKHBhZ2UpKSB7CiAJCXdhaXRfb25fcGFnZV9sb2NrZWQocGFnZSk7CiAJCWttYXAocGFnZSk7CmRpZmYgLS1naXQgYS9mcy9yb21mcy9pbm9kZS5jIGIvZnMvcm9tZnMvaW5vZGUuYwppbmRleCA5YjllZGE3Li4yODNmYmM2IDEwMDY0NAotLS0gYS9mcy9yb21mcy9pbm9kZS5jCisrKyBiL2ZzL3JvbWZzL2lub2RlLmMKQEAgLTE3OSwxMiArMTc5LDEyIEBACiAvKiBUaGF0J3Mgc2ltcGxlIHRvby4gKi8KIAogc3RhdGljIGludAotcm9tZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCityb21mc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogewogCWJ1Zi0+Zl90eXBlID0gUk9NRlNfTUFHSUM7CiAJYnVmLT5mX2JzaXplID0gUk9NQlNJWkU7CiAJYnVmLT5mX2JmcmVlID0gYnVmLT5mX2JhdmFpbCA9IGJ1Zi0+Zl9mZnJlZTsKLQlidWYtPmZfYmxvY2tzID0gKHJvbWZzX21heHNpemUoc2IpK1JPTUJTSVpFLTEpPj5ST01CU0JJVFM7CisJYnVmLT5mX2Jsb2NrcyA9IChyb21mc19tYXhzaXplKGRlbnRyeS0+ZF9zYikrUk9NQlNJWkUtMSk+PlJPTUJTQklUUzsKIAlidWYtPmZfbmFtZWxlbiA9IFJPTUZTX01BWEZOOwogCXJldHVybiAwOwogfQpAQCAtNjA3LDEwICs2MDcsMTEgQEAKIAkucmVtb3VudF9mcwk9IHJvbWZzX3JlbW91bnQsCiB9OwogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpyb21mc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgcm9tZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHJvbWZzX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHJvbWZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgcm9tZnNfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL3NlbGVjdC5jIGIvZnMvc2VsZWN0LmMKaW5kZXggYTgxMDliYS4uOWM0ZjBmMiAxMDA2NDQKLS0tIGEvZnMvc2VsZWN0LmMKKysrIGIvZnMvc2VsZWN0LmMKQEAgLTU0NiwzNyArNTQ2LDM4IEBACiAKICNkZWZpbmUgUE9MTEZEX1BFUl9QQUdFICAoKFBBR0VfU0laRS1zaXplb2Yoc3RydWN0IHBvbGxfbGlzdCkpIC8gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKQogCi1zdGF0aWMgdm9pZCBkb19wb2xsZmQodW5zaWduZWQgaW50IG51bSwgc3RydWN0IHBvbGxmZCAqIGZkcGFnZSwKLQlwb2xsX3RhYmxlICoqIHB3YWl0LCBpbnQgKmNvdW50KQorLyoKKyAqIEZpc2ggZm9yIHBvbGxhYmxlIGV2ZW50cyBvbiB0aGUgcG9sbGZkLT5mZCBmaWxlIGRlc2NyaXB0b3IuIFdlJ3JlIG9ubHkKKyAqIGludGVyZXN0ZWQgaW4gZXZlbnRzIG1hdGNoaW5nIHRoZSBwb2xsZmQtPmV2ZW50cyBtYXNrLCBhbmQgdGhlIHJlc3VsdAorICogbWF0Y2hpbmcgdGhhdCBtYXNrIGlzIGJvdGggcmVjb3JkZWQgaW4gcG9sbGZkLT5yZXZlbnRzIGFuZCByZXR1cm5lZC4gVGhlCisgKiBwd2FpdCBwb2xsX3RhYmxlIHdpbGwgYmUgdXNlZCBieSB0aGUgZmQtcHJvdmlkZWQgcG9sbCBoYW5kbGVyIGZvciB3YWl0aW5nLAorICogaWYgbm9uLU5VTEwuCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRvX3BvbGxmZChzdHJ1Y3QgcG9sbGZkICpwb2xsZmQsIHBvbGxfdGFibGUgKnB3YWl0KQogewotCWludCBpOworCXVuc2lnbmVkIGludCBtYXNrOworCWludCBmZDsKIAotCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgewotCQlpbnQgZmQ7Ci0JCXVuc2lnbmVkIGludCBtYXNrOwotCQlzdHJ1Y3QgcG9sbGZkICpmZHA7CisJbWFzayA9IDA7CisJZmQgPSBwb2xsZmQtPmZkOworCWlmIChmZCA+PSAwKSB7CisJCWludCBmcHV0X25lZWRlZDsKKwkJc3RydWN0IGZpbGUgKiBmaWxlOwogCi0JCW1hc2sgPSAwOwotCQlmZHAgPSBmZHBhZ2UraTsKLQkJZmQgPSBmZHAtPmZkOwotCQlpZiAoZmQgPj0gMCkgewotCQkJaW50IGZwdXRfbmVlZGVkOwotCQkJc3RydWN0IGZpbGUgKiBmaWxlID0gZmdldF9saWdodChmZCwgJmZwdXRfbmVlZGVkKTsKLQkJCW1hc2sgPSBQT0xMTlZBTDsKLQkJCWlmIChmaWxlICE9IE5VTEwpIHsKLQkJCQltYXNrID0gREVGQVVMVF9QT0xMTUFTSzsKLQkJCQlpZiAoZmlsZS0+Zl9vcCAmJiBmaWxlLT5mX29wLT5wb2xsKQotCQkJCQltYXNrID0gZmlsZS0+Zl9vcC0+cG9sbChmaWxlLCAqcHdhaXQpOwotCQkJCW1hc2sgJj0gZmRwLT5ldmVudHMgfCBQT0xMRVJSIHwgUE9MTEhVUDsKLQkJCQlmcHV0X2xpZ2h0KGZpbGUsIGZwdXRfbmVlZGVkKTsKLQkJCX0KLQkJCWlmIChtYXNrKSB7Ci0JCQkJKnB3YWl0ID0gTlVMTDsKLQkJCQkoKmNvdW50KSsrOwotCQkJfQorCQlmaWxlID0gZmdldF9saWdodChmZCwgJmZwdXRfbmVlZGVkKTsKKwkJbWFzayA9IFBPTExOVkFMOworCQlpZiAoZmlsZSAhPSBOVUxMKSB7CisJCQltYXNrID0gREVGQVVMVF9QT0xMTUFTSzsKKwkJCWlmIChmaWxlLT5mX29wICYmIGZpbGUtPmZfb3AtPnBvbGwpCisJCQkJbWFzayA9IGZpbGUtPmZfb3AtPnBvbGwoZmlsZSwgcHdhaXQpOworCQkJLyogTWFzayBvdXQgdW5uZWVkZWQgZXZlbnRzLiAqLworCQkJbWFzayAmPSBwb2xsZmQtPmV2ZW50cyB8IFBPTExFUlIgfCBQT0xMSFVQOworCQkJZnB1dF9saWdodChmaWxlLCBmcHV0X25lZWRlZCk7CiAJCX0KLQkJZmRwLT5yZXZlbnRzID0gbWFzazsKIAl9CisJcG9sbGZkLT5yZXZlbnRzID0gbWFzazsKKworCXJldHVybiBtYXNrOwogfQogCiBzdGF0aWMgaW50IGRvX3BvbGwodW5zaWduZWQgaW50IG5mZHMsICBzdHJ1Y3QgcG9sbF9saXN0ICpsaXN0LApAQCAtNTk0LDExICs1OTUsMjkgQEAKIAkJbG9uZyBfX3RpbWVvdXQ7CiAKIAkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKLQkJd2FsayA9IGxpc3Q7Ci0JCXdoaWxlKHdhbGsgIT0gTlVMTCkgewotCQkJZG9fcG9sbGZkKCB3YWxrLT5sZW4sIHdhbGstPmVudHJpZXMsICZwdCwgJmNvdW50KTsKLQkJCXdhbGsgPSB3YWxrLT5uZXh0OworCQlmb3IgKHdhbGsgPSBsaXN0OyB3YWxrICE9IE5VTEw7IHdhbGsgPSB3YWxrLT5uZXh0KSB7CisJCQlzdHJ1Y3QgcG9sbGZkICogcGZkLCAqIHBmZF9lbmQ7CisKKwkJCXBmZCA9IHdhbGstPmVudHJpZXM7CisJCQlwZmRfZW5kID0gcGZkICsgd2Fsay0+bGVuOworCQkJZm9yICg7IHBmZCAhPSBwZmRfZW5kOyBwZmQrKykgeworCQkJCS8qCisJCQkJICogRmlzaCBmb3IgZXZlbnRzLiBJZiB3ZSBmb3VuZCBvbmUsIHJlY29yZCBpdAorCQkJCSAqIGFuZCBraWxsIHRoZSBwb2xsX3RhYmxlLCBzbyB3ZSBkb24ndAorCQkJCSAqIG5lZWRsZXNzbHkgcmVnaXN0ZXIgYW55IG90aGVyIHdhaXRlcnMgYWZ0ZXIKKwkJCQkgKiB0aGlzLiBUaGV5J2xsIGdldCBpbW1lZGlhdGVseSBkZXJlZ2lzdGVyZWQKKwkJCQkgKiB3aGVuIHdlIGJyZWFrIG91dCBhbmQgcmV0dXJuLgorCQkJCSAqLworCQkJCWlmIChkb19wb2xsZmQocGZkLCBwdCkpIHsKKwkJCQkJY291bnQrKzsKKwkJCQkJcHQgPSBOVUxMOworCQkJCX0KKwkJCX0KIAkJfQorCQkvKgorCQkgKiBBbGwgd2FpdGVycyBoYXZlIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLCBzbyBkb24ndCBwcm92aWRlCisJCSAqIGEgcG9sbF90YWJsZSB0byB0aGVtIG9uIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uLgorCQkgKi8KIAkJcHQgPSBOVUxMOwogCQlpZiAoY291bnQgfHwgISp0aW1lb3V0IHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9mcy9zbWJmcy9pbm9kZS5jIGIvZnMvc21iZnMvaW5vZGUuYwppbmRleCBmZGVhYmMwLi41MDZmZjg3IDEwMDY0NAotLS0gYS9mcy9zbWJmcy9pbm9kZS5jCisrKyBiL2ZzL3NtYmZzL2lub2RlLmMKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogc3RhdGljIHZvaWQgc21iX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CiBzdGF0aWMgdm9pZCBzbWJfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKLXN0YXRpYyBpbnQgIHNtYl9zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrc3RhdGZzICopOworc3RhdGljIGludCAgc21iX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogc3RhdGljIGludCAgc21iX3Nob3dfb3B0aW9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IHZmc21vdW50ICopOwogCiBzdGF0aWMga21lbV9jYWNoZV90ICpzbWJfaW5vZGVfY2FjaGVwOwpAQCAtNjQxLDEzICs2NDEsMTMgQEAKIH0KIAogc3RhdGljIGludAotc21iX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQorc21iX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CiAJaW50IHJlc3VsdDsKIAkKIAlsb2NrX2tlcm5lbCgpOwogCi0JcmVzdWx0ID0gc21iX3Byb2NfZHNrYXR0cihzYiwgYnVmKTsKKwlyZXN1bHQgPSBzbWJfcHJvY19kc2thdHRyKGRlbnRyeSwgYnVmKTsKIAogCXVubG9ja19rZXJuZWwoKTsKIApAQCAtNzgyLDEwICs3ODIsMTAgQEAKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNtYl9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgc21iX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBzbWJfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9ub2Rldihmc190eXBlLCBmbGFncywgZGF0YSwgc21iX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBzbWJfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL3NtYmZzL3Byb2MuYyBiL2ZzL3NtYmZzL3Byb2MuYwppbmRleCBiMWI4NzhiLi5jMzQ5NTA1IDEwMDY0NAotLS0gYS9mcy9zbWJmcy9wcm9jLmMKKysrIGIvZnMvc21iZnMvcHJvYy5jCkBAIC0zMjI2LDkgKzMyMjYsOSBAQAogfQogCiBpbnQKLXNtYl9wcm9jX2Rza2F0dHIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmF0dHIpCitzbWJfcHJvY19kc2thdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmF0dHIpCiB7Ci0Jc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIgPSBTTUJfU0Ioc2IpOworCXN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyID0gU01CX1NCKGRlbnRyeS0+ZF9zYik7CiAJaW50IHJlc3VsdDsKIAljaGFyICpwOwogCWxvbmcgdW5pdDsKZGlmZiAtLWdpdCBhL2ZzL3NtYmZzL3Byb3RvLmggYi9mcy9zbWJmcy9wcm90by5oCmluZGV4IDQ3NjY0NTkuLjk3MmVkN2QgMTAwNjQ0Ci0tLSBhL2ZzL3NtYmZzL3Byb3RvLmgKKysrIGIvZnMvc21iZnMvcHJvdG8uaApAQCAtMjksNyArMjksNyBAQAogZXh0ZXJuIGludCBzbWJfcHJvY19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRpciwgc3RydWN0IHNtYl9mYXR0ciAqZmF0dHIpOwogZXh0ZXJuIGludCBzbWJfcHJvY19zZXRhdHRyX3VuaXgoc3RydWN0IGRlbnRyeSAqZCwgc3RydWN0IGlhdHRyICphdHRyLCB1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBtaW5vcik7CiBleHRlcm4gaW50IHNtYl9wcm9jX3NldHRpbWUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qgc21iX2ZhdHRyICpmYXR0cik7Ci1leHRlcm4gaW50IHNtYl9wcm9jX2Rza2F0dHIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmF0dHIpOworZXh0ZXJuIGludCBzbWJfcHJvY19kc2thdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmF0dHIpOwogZXh0ZXJuIGludCBzbWJfcHJvY19yZWFkX2xpbmsoc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIsIHN0cnVjdCBkZW50cnkgKmQsIGNoYXIgKmJ1ZmZlciwgaW50IGxlbik7CiBleHRlcm4gaW50IHNtYl9wcm9jX3N5bWxpbmsoc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIsIHN0cnVjdCBkZW50cnkgKmQsIGNvbnN0IGNoYXIgKm9sZHBhdGgpOwogZXh0ZXJuIGludCBzbWJfcHJvY19saW5rKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBkZW50cnkgKm5ld19kZW50cnkpOwpkaWZmIC0tZ2l0IGEvZnMvc3BsaWNlLmMgYi9mcy9zcGxpY2UuYwppbmRleCBhMjg1ZmQ3Li4wNWZkMjc4IDEwMDY0NAotLS0gYS9mcy9zcGxpY2UuYworKysgYi9mcy9zcGxpY2UuYwpAQCAtNTUsMzEgKzU1LDQzIEBACiAJCQkJICAgICBzdHJ1Y3QgcGlwZV9idWZmZXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJ1Zi0+cGFnZTsKLQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHBhZ2VfbWFwcGluZyhwYWdlKTsKKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIAogCWxvY2tfcGFnZShwYWdlKTsKIAotCVdBUk5fT04oIVBhZ2VVcHRvZGF0ZShwYWdlKSk7CisJbWFwcGluZyA9IHBhZ2VfbWFwcGluZyhwYWdlKTsKKwlpZiAobWFwcGluZykgeworCQlXQVJOX09OKCFQYWdlVXB0b2RhdGUocGFnZSkpOwogCi0JLyoKLQkgKiBBdCBsZWFzdCBmb3IgZXh0MiB3aXRoIG5vYmggb3B0aW9uLCB3ZSBuZWVkIHRvIHdhaXQgb24gd3JpdGViYWNrCi0JICogY29tcGxldGluZyBvbiB0aGlzIHBhZ2UsIHNpbmNlIHdlJ2xsIHJlbW92ZSBpdCBmcm9tIHRoZSBwYWdlY2FjaGUuCi0JICogT3RoZXJ3aXNlIHRydW5jYXRlIHdvbnQgd2FpdCBvbiB0aGUgcGFnZSwgYWxsb3dpbmcgdGhlIGRpc2sKLQkgKiBibG9ja3MgdG8gYmUgcmV1c2VkIGJ5IHNvbWVvbmUgZWxzZSBiZWZvcmUgd2UgYWN0dWFsbHkgd3JvdGUgb3VyCi0JICogZGF0YSB0byB0aGVtLiBmcyBjb3JydXB0aW9uIGVuc3Vlcy4KLQkgKi8KLQl3YWl0X29uX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOworCQkvKgorCQkgKiBBdCBsZWFzdCBmb3IgZXh0MiB3aXRoIG5vYmggb3B0aW9uLCB3ZSBuZWVkIHRvIHdhaXQgb24KKwkJICogd3JpdGViYWNrIGNvbXBsZXRpbmcgb24gdGhpcyBwYWdlLCBzaW5jZSB3ZSdsbCByZW1vdmUgaXQKKwkJICogZnJvbSB0aGUgcGFnZWNhY2hlLiAgT3RoZXJ3aXNlIHRydW5jYXRlIHdvbnQgd2FpdCBvbiB0aGUKKwkJICogcGFnZSwgYWxsb3dpbmcgdGhlIGRpc2sgYmxvY2tzIHRvIGJlIHJldXNlZCBieSBzb21lb25lIGVsc2UKKwkJICogYmVmb3JlIHdlIGFjdHVhbGx5IHdyb3RlIG91ciBkYXRhIHRvIHRoZW0uIGZzIGNvcnJ1cHRpb24KKwkJICogZW5zdWVzLgorCQkgKi8KKwkJd2FpdF9vbl9wYWdlX3dyaXRlYmFjayhwYWdlKTsKIAotCWlmIChQYWdlUHJpdmF0ZShwYWdlKSkKLQkJdHJ5X3RvX3JlbGVhc2VfcGFnZShwYWdlLCBtYXBwaW5nX2dmcF9tYXNrKG1hcHBpbmcpKTsKKwkJaWYgKFBhZ2VQcml2YXRlKHBhZ2UpKQorCQkJdHJ5X3RvX3JlbGVhc2VfcGFnZShwYWdlLCBtYXBwaW5nX2dmcF9tYXNrKG1hcHBpbmcpKTsKIAotCWlmICghcmVtb3ZlX21hcHBpbmcobWFwcGluZywgcGFnZSkpIHsKLQkJdW5sb2NrX3BhZ2UocGFnZSk7Ci0JCXJldHVybiAxOworCQkvKgorCQkgKiBJZiB3ZSBzdWNjZWVkZWQgaW4gcmVtb3ZpbmcgdGhlIG1hcHBpbmcsIHNldCBMUlUgZmxhZworCQkgKiBhbmQgcmV0dXJuIGdvb2QuCisJCSAqLworCQlpZiAocmVtb3ZlX21hcHBpbmcobWFwcGluZywgcGFnZSkpIHsKKwkJCWJ1Zi0+ZmxhZ3MgfD0gUElQRV9CVUZfRkxBR19MUlU7CisJCQlyZXR1cm4gMDsKKwkJfQogCX0KIAotCWJ1Zi0+ZmxhZ3MgfD0gUElQRV9CVUZfRkxBR19MUlU7Ci0JcmV0dXJuIDA7CisJLyoKKwkgKiBSYWNlZCB3aXRoIHRydW5jYXRlIG9yIGZhaWxlZCB0byByZW1vdmUgcGFnZSBmcm9tIGN1cnJlbnQKKwkgKiBhZGRyZXNzIHNwYWNlLCB1bmxvY2sgYW5kIHJldHVybiBmYWlsdXJlLgorCSAqLworCXVubG9ja19wYWdlKHBhZ2UpOworCXJldHVybiAxOwogfQogCiBzdGF0aWMgdm9pZCBwYWdlX2NhY2hlX3BpcGVfYnVmX3JlbGVhc2Uoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSwKZGlmZiAtLWdpdCBhL2ZzL3N1cGVyLmMgYi9mcy9zdXBlci5jCmluZGV4IDE1ZjJhZmQuLjhhNjY5ZjYgMTAwNjQ0Ci0tLSBhL2ZzL3N1cGVyLmMKKysrIGIvZnMvc3VwZXIuYwpAQCAtMjMxLDcgKzIzMSw3IEBACiAJaWYgKHJvb3QpIHsKIAkJc2ItPnNfcm9vdCA9IE5VTEw7CiAJCXNocmlua19kY2FjaGVfcGFyZW50KHJvb3QpOwotCQlzaHJpbmtfZGNhY2hlX2Fub24oJnNiLT5zX2Fub24pOworCQlzaHJpbmtfZGNhY2hlX3NiKHNiKTsKIAkJZHB1dChyb290KTsKIAkJZnN5bmNfc3VwZXIoc2IpOwogCQlsb2NrX3N1cGVyKHNiKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQAogICAgICAgICBzID0gdXNlcl9nZXRfc3VwZXIobmV3X2RlY29kZV9kZXYoZGV2KSk7CiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBvdXQ7Ci0JZXJyID0gdmZzX3N0YXRmcyhzLCAmc2J1Zik7CisJZXJyID0gdmZzX3N0YXRmcyhzLT5zX3Jvb3QsICZzYnVmKTsKIAlkcm9wX3N1cGVyKHMpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwpAQCAtNjc2LDkgKzY3NiwxMCBAQAogCX0KIH0KIAotc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc2JfYmRldihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKK2ludCBnZXRfc2JfYmRldihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKIAlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAotCWludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCkpCisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2OwogCXN0cnVjdCBzdXBlcl9ibG9jayAqczsKQEAgLTY4Niw3ICs2ODcsNyBAQAogCiAJYmRldiA9IG9wZW5fYmRldl9leGNsKGRldl9uYW1lLCBmbGFncywgZnNfdHlwZSk7CiAJaWYgKElTX0VSUihiZGV2KSkKLQkJcmV0dXJuIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiliZGV2OworCQlyZXR1cm4gUFRSX0VSUihiZGV2KTsKIAogCS8qCiAJICogb25jZSB0aGUgc3VwZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGUgbGlzdCBieSBzZ2V0LCBzX3Vtb3VudApAQCAtNjk3LDE1ICs2OTgsMTcgQEAKIAlzID0gc2dldChmc190eXBlLCB0ZXN0X2JkZXZfc3VwZXIsIHNldF9iZGV2X3N1cGVyLCBiZGV2KTsKIAltdXRleF91bmxvY2soJmJkZXYtPmJkX21vdW50X211dGV4KTsKIAlpZiAoSVNfRVJSKHMpKQotCQlnb3RvIG91dDsKKwkJZ290byBlcnJvcl9zOwogCiAJaWYgKHMtPnNfcm9vdCkgewogCQlpZiAoKGZsYWdzIF4gcy0+c19mbGFncykgJiBNU19SRE9OTFkpIHsKIAkJCXVwX3dyaXRlKCZzLT5zX3Vtb3VudCk7CiAJCQlkZWFjdGl2YXRlX3N1cGVyKHMpOwotCQkJcyA9IEVSUl9QVFIoLUVCVVNZKTsKKwkJCWVycm9yID0gLUVCVVNZOworCQkJZ290byBlcnJvcl9iZGV2OwogCQl9Ci0JCWdvdG8gb3V0OworCisJCWNsb3NlX2JkZXZfZXhjbChiZGV2KTsKIAl9IGVsc2UgewogCQljaGFyIGJbQkRFVk5BTUVfU0laRV07CiAKQEAgLTcxNiwxOCArNzE5LDIxIEBACiAJCWlmIChlcnJvcikgewogCQkJdXBfd3JpdGUoJnMtPnNfdW1vdW50KTsKIAkJCWRlYWN0aXZhdGVfc3VwZXIocyk7Ci0JCQlzID0gRVJSX1BUUihlcnJvcik7Ci0JCX0gZWxzZSB7Ci0JCQlzLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQkJCWJkZXZfdWV2ZW50KGJkZXYsIEtPQkpfTU9VTlQpOworCQkJZ290byBlcnJvcjsKIAkJfQorCisJCXMtPnNfZmxhZ3MgfD0gTVNfQUNUSVZFOworCQliZGV2X3VldmVudChiZGV2LCBLT0JKX01PVU5UKTsKIAl9CiAKLQlyZXR1cm4gczsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKIAotb3V0OgorZXJyb3JfczoKKwllcnJvciA9IFBUUl9FUlIocyk7CitlcnJvcl9iZGV2OgogCWNsb3NlX2JkZXZfZXhjbChiZGV2KTsKLQlyZXR1cm4gczsKK2Vycm9yOgorCXJldHVybiBlcnJvcjsKIH0KIAogRVhQT1JUX1NZTUJPTChnZXRfc2JfYmRldik7CkBAIC03NDQsMTUgKzc1MCwxNiBAQAogCiBFWFBPUlRfU1lNQk9MKGtpbGxfYmxvY2tfc3VwZXIpOwogCi1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zYl9ub2RldihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKK2ludCBnZXRfc2Jfbm9kZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiAJaW50IGZsYWdzLCB2b2lkICpkYXRhLAotCWludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCkpCisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzID0gc2dldChmc190eXBlLCBOVUxMLCBzZXRfYW5vbl9zdXBlciwgTlVMTCk7CiAKIAlpZiAoSVNfRVJSKHMpKQotCQlyZXR1cm4gczsKKwkJcmV0dXJuIFBUUl9FUlIocyk7CiAKIAlzLT5zX2ZsYWdzID0gZmxhZ3M7CiAKQEAgLTc2MCwxMCArNzY3LDEwIEBACiAJaWYgKGVycm9yKSB7CiAJCXVwX3dyaXRlKCZzLT5zX3Vtb3VudCk7CiAJCWRlYWN0aXZhdGVfc3VwZXIocyk7Ci0JCXJldHVybiBFUlJfUFRSKGVycm9yKTsKKwkJcmV0dXJuIGVycm9yOwogCX0KIAlzLT5zX2ZsYWdzIHw9IE1TX0FDVElWRTsKLQlyZXR1cm4gczsKKwlyZXR1cm4gc2ltcGxlX3NldF9tbnQobW50LCBzKTsKIH0KIAogRVhQT1JUX1NZTUJPTChnZXRfc2Jfbm9kZXYpOwpAQCAtNzczLDI4ICs3ODAsMjkgQEAKIAlyZXR1cm4gMTsKIH0KIAotc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc2Jfc2luZ2xlKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAoraW50IGdldF9zYl9zaW5nbGUoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiAJaW50IGZsYWdzLCB2b2lkICpkYXRhLAotCWludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCkpCisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnM7CiAJaW50IGVycm9yOwogCiAJcyA9IHNnZXQoZnNfdHlwZSwgY29tcGFyZV9zaW5nbGUsIHNldF9hbm9uX3N1cGVyLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHMpKQotCQlyZXR1cm4gczsKKwkJcmV0dXJuIFBUUl9FUlIocyk7CiAJaWYgKCFzLT5zX3Jvb3QpIHsKIAkJcy0+c19mbGFncyA9IGZsYWdzOwogCQllcnJvciA9IGZpbGxfc3VwZXIocywgZGF0YSwgZmxhZ3MgJiBNU19TSUxFTlQgPyAxIDogMCk7CiAJCWlmIChlcnJvcikgewogCQkJdXBfd3JpdGUoJnMtPnNfdW1vdW50KTsKIAkJCWRlYWN0aXZhdGVfc3VwZXIocyk7Ci0JCQlyZXR1cm4gRVJSX1BUUihlcnJvcik7CisJCQlyZXR1cm4gZXJyb3I7CiAJCX0KIAkJcy0+c19mbGFncyB8PSBNU19BQ1RJVkU7CiAJfQogCWRvX3JlbW91bnRfc2IocywgZmxhZ3MsIGRhdGEsIDApOwotCXJldHVybiBzOworCXJldHVybiBzaW1wbGVfc2V0X21udChtbnQsIHMpOwogfQogCiBFWFBPUlRfU1lNQk9MKGdldF9zYl9zaW5nbGUpOwpAQCAtODAyLDUyICs4MTAsNTEgQEAKIHN0cnVjdCB2ZnNtb3VudCAqCiB2ZnNfa2Vybl9tb3VudChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwgaW50IGZsYWdzLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpkYXRhKQogewotCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBFUlJfUFRSKC1FTk9NRU0pOwogCXN0cnVjdCB2ZnNtb3VudCAqbW50OwotCWludCBlcnJvcjsKIAljaGFyICpzZWNkYXRhID0gTlVMTDsKKwlpbnQgZXJyb3I7CiAKKwlpZiAoIXR5cGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworCisJZXJyb3IgPSAtRU5PTUVNOwogCW1udCA9IGFsbG9jX3Zmc21udChuYW1lKTsKIAlpZiAoIW1udCkKIAkJZ290byBvdXQ7CiAKIAlpZiAoZGF0YSkgewogCQlzZWNkYXRhID0gYWxsb2Nfc2VjZGF0YSgpOwotCQlpZiAoIXNlY2RhdGEpIHsKLQkJCXNiID0gRVJSX1BUUigtRU5PTUVNKTsKKwkJaWYgKCFzZWNkYXRhKQogCQkJZ290byBvdXRfbW50OwotCQl9CiAKIAkJZXJyb3IgPSBzZWN1cml0eV9zYl9jb3B5X2RhdGEodHlwZSwgZGF0YSwgc2VjZGF0YSk7Ci0JCWlmIChlcnJvcikgewotCQkJc2IgPSBFUlJfUFRSKGVycm9yKTsKKwkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfZnJlZV9zZWNkYXRhOwotCQl9CiAJfQogCi0Jc2IgPSB0eXBlLT5nZXRfc2IodHlwZSwgZmxhZ3MsIG5hbWUsIGRhdGEpOwotCWlmIChJU19FUlIoc2IpKQorCWVycm9yID0gdHlwZS0+Z2V0X3NiKHR5cGUsIGZsYWdzLCBuYW1lLCBkYXRhLCBtbnQpOworCWlmIChlcnJvciA8IDApCiAJCWdvdG8gb3V0X2ZyZWVfc2VjZGF0YTsKLSAJZXJyb3IgPSBzZWN1cml0eV9zYl9rZXJuX21vdW50KHNiLCBzZWNkYXRhKTsKKworIAllcnJvciA9IHNlY3VyaXR5X3NiX2tlcm5fbW91bnQobW50LT5tbnRfc2IsIHNlY2RhdGEpOwogIAlpZiAoZXJyb3IpCiAgCQlnb3RvIG91dF9zYjsKLQltbnQtPm1udF9zYiA9IHNiOwotCW1udC0+bW50X3Jvb3QgPSBkZ2V0KHNiLT5zX3Jvb3QpOwotCW1udC0+bW50X21vdW50cG9pbnQgPSBzYi0+c19yb290OworCisJbW50LT5tbnRfbW91bnRwb2ludCA9IG1udC0+bW50X3Jvb3Q7CiAJbW50LT5tbnRfcGFyZW50ID0gbW50OwotCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOworCXVwX3dyaXRlKCZtbnQtPm1udF9zYi0+c191bW91bnQpOwogCWZyZWVfc2VjZGF0YShzZWNkYXRhKTsKIAlyZXR1cm4gbW50Owogb3V0X3NiOgotCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOwotCWRlYWN0aXZhdGVfc3VwZXIoc2IpOwotCXNiID0gRVJSX1BUUihlcnJvcik7CisJZHB1dChtbnQtPm1udF9yb290KTsKKwl1cF93cml0ZSgmbW50LT5tbnRfc2ItPnNfdW1vdW50KTsKKwlkZWFjdGl2YXRlX3N1cGVyKG1udC0+bW50X3NiKTsKIG91dF9mcmVlX3NlY2RhdGE6CiAJZnJlZV9zZWNkYXRhKHNlY2RhdGEpOwogb3V0X21udDoKIAlmcmVlX3Zmc21udChtbnQpOwogb3V0OgotCXJldHVybiAoc3RydWN0IHZmc21vdW50ICopc2I7CisJcmV0dXJuIEVSUl9QVFIoZXJyb3IpOwogfQogCiBFWFBPUlRfU1lNQk9MX0dQTCh2ZnNfa2Vybl9tb3VudCk7CmRpZmYgLS1naXQgYS9mcy9zeW5jLmMgYi9mcy9zeW5jLmMKaW5kZXggYWFiNWZmZS4uOTU1YWVmMCAxMDA2NDQKLS0tIGEvZnMvc3luYy5jCisrKyBiL2ZzL3N5bmMuYwpAQCAtMTAwLDcgKzEwMCw3IEBACiAJfQogCiAJaWYgKG5ieXRlcyA9PSAwKQotCQllbmRieXRlID0gLTE7CisJCWVuZGJ5dGUgPSBMTE9OR19NQVg7CiAJZWxzZQogCQllbmRieXRlLS07CQkvKiBpbmNsdXNpdmUgKi8KIApkaWZmIC0tZ2l0IGEvZnMvc3lzZnMvbW91bnQuYyBiL2ZzL3N5c2ZzL21vdW50LmMKaW5kZXggZjExMTdlOC4uNDAxOTBjNCAxMDA2NDQKLS0tIGEvZnMvc3lzZnMvbW91bnQuYworKysgYi9mcy9zeXNmcy9tb3VudC5jCkBAIC02NiwxMCArNjYsMTAgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqc3lzZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHN5c2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgc3lzZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHN5c2ZzX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBzeXNmc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvc3lzdi9kaXIuYyBiL2ZzL3N5c3YvZGlyLmMKaW5kZXggZDcwNzQzNC4uZjJiZWY5NiAxMDA2NDQKLS0tIGEvZnMvc3lzdi9kaXIuYworKysgYi9mcy9zeXN2L2Rpci5jCkBAIC01Myw4ICs1Myw3IEBACiBzdGF0aWMgc3RydWN0IHBhZ2UgKiBkaXJfZ2V0X3BhZ2Uoc3RydWN0IGlub2RlICpkaXIsIHVuc2lnbmVkIGxvbmcgbikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGRpci0+aV9tYXBwaW5nOwotCXN0cnVjdCBwYWdlICpwYWdlID0gcmVhZF9jYWNoZV9wYWdlKG1hcHBpbmcsIG4sCi0JCQkJKGZpbGxlcl90KiltYXBwaW5nLT5hX29wcy0+cmVhZHBhZ2UsIE5VTEwpOworCXN0cnVjdCBwYWdlICpwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgbiwgTlVMTCk7CiAJaWYgKCFJU19FUlIocGFnZSkpIHsKIAkJd2FpdF9vbl9wYWdlX2xvY2tlZChwYWdlKTsKIAkJa21hcChwYWdlKTsKZGlmZiAtLWdpdCBhL2ZzL3N5c3YvaW5vZGUuYyBiL2ZzL3N5c3YvaW5vZGUuYwppbmRleCAzZmY4OWNjLi41OGIyZDIyIDEwMDY0NAotLS0gYS9mcy9zeXN2L2lub2RlLmMKKysrIGIvZnMvc3lzdi9pbm9kZS5jCkBAIC04NSw4ICs4NSw5IEBACiAJa2ZyZWUoc2JpKTsKIH0KIAotc3RhdGljIGludCBzeXN2X3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQorc3RhdGljIGludCBzeXN2X3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKIAlzdHJ1Y3Qgc3lzdl9zYl9pbmZvICpzYmkgPSBTWVNWX1NCKHNiKTsKIAogCWJ1Zi0+Zl90eXBlID0gc2ItPnNfbWFnaWM7CmRpZmYgLS1naXQgYS9mcy9zeXN2L3N1cGVyLmMgYi9mcy9zeXN2L3N1cGVyLmMKaW5kZXggZTkyYjk5MS4uODc2NjM5YiAxMDA2NDQKLS0tIGEvZnMvc3lzdi9zdXBlci5jCisrKyBiL2ZzL3N5c3Yvc3VwZXIuYwpAQCAtNTA2LDE2ICs1MDYsMTcgQEAKIAogLyogRXZlcnkga2VybmVsIG1vZHVsZSBjb250YWlucyBzdHVmZiBsaWtlIHRoaXMuICovCiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN5c3ZfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHN5c3ZfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHN5c3ZfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgc3lzdl9maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqdjdfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHY3X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCB2N19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCB2N19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgc3lzdl9mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvdWRmL3N1cGVyLmMgYi9mcy91ZGYvc3VwZXIuYwppbmRleCBlNDU3ODlmLi40NGZlMmNiIDEwMDY0NAotLS0gYS9mcy91ZGYvc3VwZXIuYworKysgYi9mcy91ZGYvc3VwZXIuYwpAQCAtOTEsMTMgKzkxLDEzIEBACiBzdGF0aWMgdm9pZCB1ZGZfb3Blbl9sdmlkKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIHN0YXRpYyB2b2lkIHVkZl9jbG9zZV9sdmlkKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgdWRmX2NvdW50X2ZyZWUoc3RydWN0IHN1cGVyX2Jsb2NrICopOwotc3RhdGljIGludCB1ZGZfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKK3N0YXRpYyBpbnQgdWRmX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogCiAvKiBVREYgZmlsZXN5c3RlbSB0eXBlICovCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICp1ZGZfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHVkZl9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgdWRmX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHVkZl9maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdWRmX2ZzdHlwZSA9IHsKQEAgLTE3NzksOCArMTc3OSwxMCBAQAogICoJV3JpdHRlbiwgdGVzdGVkLCBhbmQgcmVsZWFzZWQuCiAgKi8KIHN0YXRpYyBpbnQKLXVkZl9zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKK3VkZl9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogeworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkZW50cnktPmRfc2I7CisKIAlidWYtPmZfdHlwZSA9IFVERl9TVVBFUl9NQUdJQzsKIAlidWYtPmZfYnNpemUgPSBzYi0+c19ibG9ja3NpemU7CiAJYnVmLT5mX2Jsb2NrcyA9IFVERl9TQl9QQVJUTEVOKHNiLCBVREZfU0JfUEFSVElUSU9OKHNiKSk7CmRpZmYgLS1naXQgYS9mcy91ZnMvc3VwZXIuYyBiL2ZzL3Vmcy9zdXBlci5jCmluZGV4IGRiOThhNGMuLmZlNWFiMmEgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9zdXBlci5jCisrKyBiL2ZzL3Vmcy9zdXBlci5jCkBAIC0xMTEzLDggKzExMTMsOSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHVmc19zdGF0ZnMgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IHVmc19zdGF0ZnMgKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKmJ1ZikKIHsKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGVudHJ5LT5kX3NiOwogCXN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogdXNwaTsKIAlzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2ZpcnN0ICogdXNiMTsKIAlzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrICogdXNiOwpAQCAtMTMxMSwxMCArMTMxMiwxMCBAQAogCiAjZW5kaWYKIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqdWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKQorc3RhdGljIGludCB1ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHVmc19maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCB1ZnNfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvZnMvdmZhdC9uYW1laS5jIGIvZnMvdmZhdC9uYW1laS5jCmluZGV4IGE1NmNlYzMuLjlhOGY0OGIgMTAwNjQ0Ci0tLSBhL2ZzL3ZmYXQvbmFtZWkuYworKysgYi9mcy92ZmF0L25hbWVpLmMKQEAgLTEwMjMsMTEgKzEwMjMsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqdmZhdF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJICAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJICAgICAgIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHZmYXRfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkgICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJICAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIHZmYXRfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgdmZhdF9maWxsX3N1cGVyLAorCQkJICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHZmYXRfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9LY29uZmlnIGIvZnMveGZzL0tjb25maWcKaW5kZXggYmFjMjdkNi4uMjZiMzY0YyAxMDA2NDQKLS0tIGEvZnMveGZzL0tjb25maWcKKysrIGIvZnMveGZzL0tjb25maWcKQEAgLTEsNiArMSw1IEBACiBjb25maWcgWEZTX0ZTCiAJdHJpc3RhdGUgIlhGUyBmaWxlc3lzdGVtIHN1cHBvcnQiCi0Jc2VsZWN0IEVYUE9SVEZTIGlmIE5GU0QhPW4KIAloZWxwCiAJICBYRlMgaXMgYSBoaWdoIHBlcmZvcm1hbmNlIGpvdXJuYWxpbmcgZmlsZXN5c3RlbSB3aGljaCBvcmlnaW5hdGVkCiAJICBvbiB0aGUgU0dJIElSSVggcGxhdGZvcm0uICBJdCBpcyBjb21wbGV0ZWx5IG11bHRpLXRocmVhZGVkLCBjYW4KQEAgLTE4LDExICsxNyw2IEBACiAJICBzeXN0ZW0gb2YgeW91ciByb290IHBhcnRpdGlvbiBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSwgeW91J2xsIG5lZWQKIAkgIHRvIHVzZSBhbiBpbml0aWFsIHJhbWRpc2sgKGluaXRyZCkgdG8gYm9vdC4KIAotY29uZmlnIFhGU19FWFBPUlQKLQlib29sCi0JZGVwZW5kcyBvbiBYRlNfRlMgJiYgRVhQT1JURlMKLQlkZWZhdWx0IHkKLQogY29uZmlnIFhGU19RVU9UQQogCWJvb2wgIlhGUyBRdW90YSBzdXBwb3J0IgogCWRlcGVuZHMgb24gWEZTX0ZTCkBAIC02NSwxOCArNTksMTkgQEAKIAkgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi4KIAogY29uZmlnIFhGU19SVAotCWJvb2wgIlhGUyBSZWFsdGltZSBzdXBwb3J0IChFWFBFUklNRU5UQUwpIgotCWRlcGVuZHMgb24gWEZTX0ZTICYmIEVYUEVSSU1FTlRBTAorCWJvb2wgIlhGUyBSZWFsdGltZSBzdWJ2b2x1bWUgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIFhGU19GUwogCWhlbHAKIAkgIElmIHlvdSBzYXkgWSBoZXJlIHlvdSB3aWxsIGJlIGFibGUgdG8gbW91bnQgYW5kIHVzZSBYRlMgZmlsZXN5c3RlbXMKLQkgIHdoaWNoIGNvbnRhaW4gYSByZWFsdGltZSBzdWJ2b2x1bWUuIFRoZSByZWFsdGltZSBzdWJ2b2x1bWUgaXMgYQotCSAgc2VwYXJhdGUgYXJlYSBvZiBkaXNrIHNwYWNlIHdoZXJlIG9ubHkgZmlsZSBkYXRhIGlzIHN0b3JlZC4gVGhlCi0JICByZWFsdGltZSBzdWJ2b2x1bWUgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSB2ZXJ5IGRldGVybWluaXN0aWMKLQkgIGRhdGEgcmF0ZXMgc3VpdGFibGUgZm9yIG1lZGlhIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMuCisJICB3aGljaCBjb250YWluIGEgcmVhbHRpbWUgc3Vidm9sdW1lLiAgVGhlIHJlYWx0aW1lIHN1YnZvbHVtZSBpcyBhCisJICBzZXBhcmF0ZSBhcmVhIG9mIGRpc2sgc3BhY2Ugd2hlcmUgb25seSBmaWxlIGRhdGEgaXMgc3RvcmVkLiAgSXQgd2FzCisJICBvcmlnaW5hbGx5IGRlc2lnbmVkIHRvIHByb3ZpZGUgZGV0ZXJtaW5pc3RpYyBkYXRhIHJhdGVzIHN1aXRhYmxlCisJICBmb3IgbWVkaWEgc3RyZWFtaW5nIGFwcGxpY2F0aW9ucywgYnV0IGlzIGFsc28gdXNlZnVsIGFzIGEgZ2VuZXJpYworCSAgbWVjaGFuaXNtIGZvciBlbnN1cmluZyBkYXRhIGFuZCBtZXRhZGF0YS9sb2cgSS9PcyBhcmUgY29tcGxldGVseQorCSAgc2VwYXJhdGVkLiAgUmVndWxhciBmaWxlIEkvT3MgYXJlIGlzb2xhdGVkIHRvIGEgc2VwYXJhdGUgZGV2aWNlCisJICBmcm9tIGFsbCBvdGhlciByZXF1ZXN0cywgYW5kIHRoaXMgY2FuIGJlIGRvbmUgcXVpdGUgdHJhbnNwYXJlbnRseQorCSAgdG8gYXBwbGljYXRpb25zIHZpYSB0aGUgaW5oZXJpdC1yZWFsdGltZSBkaXJlY3RvcnkgaW5vZGUgZmxhZy4KIAotCSAgU2VlIHRoZSB4ZnMgbWFuIHBhZ2UgaW4gc2VjdGlvbiA1IGZvciBhIGJpdCBtb3JlIGluZm9ybWF0aW9uLgotCi0JICBUaGlzIGZlYXR1cmUgaXMgdW5zdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLCBpcyBub3QgeWV0IGZ1bGx5Ci0JICBmdW5jdGlvbmFsLCBhbmQgbWF5IGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMuCisJICBTZWUgdGhlIHhmcyBtYW4gcGFnZSBpbiBzZWN0aW9uIDUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAKIAkgIElmIHVuc3VyZSwgc2F5IE4uCmRpZmYgLS1naXQgYS9mcy94ZnMvTWFrZWZpbGUtbGludXgtMi42IGIvZnMveGZzL01ha2VmaWxlLWxpbnV4LTIuNgppbmRleCA1ZDczZWFhLi45ZTdmODU5IDEwMDY0NAotLS0gYS9mcy94ZnMvTWFrZWZpbGUtbGludXgtMi42CisrKyBiL2ZzL3hmcy9NYWtlZmlsZS1saW51eC0yLjYKQEAgLTU5LDcgKzU5LDYgQEAKIHhmcy0kKENPTkZJR19QUk9DX0ZTKQkJKz0gJChYRlNfTElOVVgpL3hmc19zdGF0cy5vCiB4ZnMtJChDT05GSUdfU1lTQ1RMKQkJKz0gJChYRlNfTElOVVgpL3hmc19zeXNjdGwubwogeGZzLSQoQ09ORklHX0NPTVBBVCkJCSs9ICQoWEZTX0xJTlVYKS94ZnNfaW9jdGwzMi5vCi14ZnMtJChDT05GSUdfWEZTX0VYUE9SVCkJKz0gJChYRlNfTElOVVgpL3hmc19leHBvcnQubwogCiAKIHhmcy15CQkJCSs9IHhmc19hbGxvYy5vIFwKQEAgLTczLDE0ICs3MiwxMiBAQAogCQkJCSAgIHhmc19idHJlZS5vIFwKIAkJCQkgICB4ZnNfYnVmX2l0ZW0ubyBcCiAJCQkJICAgeGZzX2RhX2J0cmVlLm8gXAotCQkJCSAgIHhmc19kaXIubyBcCiAJCQkJICAgeGZzX2RpcjIubyBcCiAJCQkJICAgeGZzX2RpcjJfYmxvY2subyBcCiAJCQkJICAgeGZzX2RpcjJfZGF0YS5vIFwKIAkJCQkgICB4ZnNfZGlyMl9sZWFmLm8gXAogCQkJCSAgIHhmc19kaXIyX25vZGUubyBcCiAJCQkJICAgeGZzX2RpcjJfc2YubyBcCi0JCQkJICAgeGZzX2Rpcl9sZWFmLm8gXAogCQkJCSAgIHhmc19lcnJvci5vIFwKIAkJCQkgICB4ZnNfZXh0ZnJlZV9pdGVtLm8gXAogCQkJCSAgIHhmc19mc29wcy5vIFwKQEAgLTExNyw2ICsxMTQsNyBAQAogCQkJCSAgIGttZW0ubyBcCiAJCQkJICAgeGZzX2FvcHMubyBcCiAJCQkJICAgeGZzX2J1Zi5vIFwKKwkJCQkgICB4ZnNfZXhwb3J0Lm8gXAogCQkJCSAgIHhmc19maWxlLm8gXAogCQkJCSAgIHhmc19mc19zdWJyLm8gXAogCQkJCSAgIHhmc19nbG9iYWxzLm8gXApkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi9rbWVtLmggYi9mcy94ZnMvbGludXgtMi42L2ttZW0uaAppbmRleCAyY2ZkMzNkLi45MzliZDg0IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L2ttZW0uaAorKysgYi9mcy94ZnMvbGludXgtMi42L2ttZW0uaApAQCAtMjMsNDIgKzIzLDYgQEAKICNpbmNsdWRlIDxsaW51eC9tbS5oPgogCiAvKgotICogUHJvY2VzcyBmbGFncyBoYW5kbGluZwotICovCi0KLSNkZWZpbmUgUEZMQUdTX1RFU1RfTk9JTygpICAgICAgICAgICAgICAoY3VycmVudC0+ZmxhZ3MgJiBQRl9OT0lPKQotI2RlZmluZSBQRkxBR1NfVEVTVF9GU1RSQU5TKCkgICAgICAgICAgIChjdXJyZW50LT5mbGFncyAmIFBGX0ZTVFJBTlMpCi0KLSNkZWZpbmUgUEZMQUdTX1NFVF9OT0lPKCkgZG8gewkJXAotCWN1cnJlbnQtPmZsYWdzIHw9IFBGX05PSU87CVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUgUEZMQUdTX0NMRUFSX05PSU8oKSBkbyB7CVwKLQljdXJyZW50LT5mbGFncyAmPSB+UEZfTk9JTzsJXAotfSB3aGlsZSAoMCkKLQotLyogdGhlc2UgY291bGQgYmUgbmVzdGVkLCBzbyB3ZSBzYXZlIHN0YXRlICovCi0jZGVmaW5lIFBGTEFHU19TRVRfRlNUUkFOUyhTVEFURVApIGRvIHsJXAotCSooU1RBVEVQKSA9IGN1cnJlbnQtPmZsYWdzOwlcCi0JY3VycmVudC0+ZmxhZ3MgfD0gUEZfRlNUUkFOUzsJXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBQRkxBR1NfQ0xFQVJfRlNUUkFOUyhTVEFURVApIGRvIHsgXAotCSooU1RBVEVQKSA9IGN1cnJlbnQtPmZsYWdzOwlcCi0JY3VycmVudC0+ZmxhZ3MgJj0gflBGX0ZTVFJBTlM7CVwKLX0gd2hpbGUgKDApCi0KLS8qIFJlc3RvcmUgdGhlIFBGX0ZTVFJBTlMgc3RhdGUgdG8gd2hhdCB3YXMgc2F2ZWQgaW4gU1RBVEVQICovCi0jZGVmaW5lIFBGTEFHU19SRVNUT1JFX0ZTVFJBTlMoU1RBVEVQKSBkbyB7ICAgICAJCVwKLQljdXJyZW50LT5mbGFncyA9ICgoY3VycmVudC0+ZmxhZ3MgJiB+UEZfRlNUUkFOUykgfAlcCi0JCQkgICgqKFNUQVRFUCkgJiBQRl9GU1RSQU5TKSk7CQlcCi19IHdoaWxlICgwKQotCi0jZGVmaW5lIFBGTEFHU19EVVAoT1NUQVRFUCwgTlNUQVRFUCkgZG8geyBcCi0JKihOU1RBVEVQKSA9ICooT1NUQVRFUCk7CVwKLX0gd2hpbGUgKDApCi0KLS8qCiAgKiBHZW5lcmFsIG1lbW9yeSBhbGxvY2F0aW9uIGludGVyZmFjZXMKICAqLwogCkBAIC04Myw3ICs0Nyw3IEBACiAJCWxmbGFncyA9IEdGUF9BVE9NSUMgfCBfX0dGUF9OT1dBUk47CiAJfSBlbHNlIHsKIAkJbGZsYWdzID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTjsKLQkJaWYgKFBGTEFHU19URVNUX0ZTVFJBTlMoKSB8fCAoZmxhZ3MgJiBLTV9OT0ZTKSkKKwkJaWYgKChjdXJyZW50LT5mbGFncyAmIFBGX0ZTVFJBTlMpIHx8IChmbGFncyAmIEtNX05PRlMpKQogCQkJbGZsYWdzICY9IH5fX0dGUF9GUzsKIAl9CiAJcmV0dXJuIGxmbGFnczsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYvbXJsb2NrLmggYi9mcy94ZnMvbGludXgtMi42L21ybG9jay5oCmluZGV4IDFiMjYyYjcuLjMyZTFjZTAgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYvbXJsb2NrLmgKKysrIGIvZnMveGZzL2xpbnV4LTIuNi9tcmxvY2suaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDcgKzI4LDcgQEAKIH0gbXJsb2NrX3Q7CiAKICNkZWZpbmUgbXJpbml0KG1ycCwgbmFtZSkJXAotCSggKG1ycCktPm1yX3dyaXRlciA9IDAsIGluaXRfcndzZW0oJihtcnApLT5tcl9sb2NrKSApCisJZG8geyAobXJwKS0+bXJfd3JpdGVyID0gMDsgaW5pdF9yd3NlbSgmKG1ycCktPm1yX2xvY2spOyB9IHdoaWxlICgwKQogI2RlZmluZSBtcmxvY2tfaW5pdChtcnAsIHQsbixzKQltcmluaXQobXJwLCBuKQogI2RlZmluZSBtcmZyZWUobXJwKQkJZG8geyB9IHdoaWxlICgwKQogI2RlZmluZSBtcmFjY2VzcyhtcnApCQltcmFjY2Vzc2YobXJwLCAwKQpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi9zZW1hLmggYi9mcy94ZnMvbGludXgtMi42L3NlbWEuaAppbmRleCAxOTRhODQ0Li5iMjUwOTAwIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3NlbWEuaAorKysgYi9mcy94ZnMvbGludXgtMi42L3NlbWEuaApAQCAtMzQsMjAgKzM0LDIxIEBACiAjZGVmaW5lIGluaXRuc2VtYShzcCwgdmFsLCBuYW1lKQlzZW1hX2luaXQoc3AsIHZhbCkKICNkZWZpbmUgcHNlbWEoc3AsIGIpCQkJZG93bihzcCkKICNkZWZpbmUgdnNlbWEoc3ApCQkJdXAoc3ApCi0jZGVmaW5lIHZhbHVzZW1hKHNwKQkJCShhdG9taWNfcmVhZCgmKHNwKS0+Y291bnQpKQotI2RlZmluZSBmcmVlc2VtYShzZW1hKQorI2RlZmluZSBmcmVlc2VtYShzZW1hKQkJCWRvIHsgfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSBpbnQgaXNzZW1hbG9ja2VkKHNlbWFfdCAqc3ApCit7CisJcmV0dXJuIGRvd25fdHJ5bG9jayhzcCkgfHwgKHVwKHNwKSwgMCk7Cit9CiAKIC8qCiAgKiBNYXAgY3BzZW1hICh0cnkgdG8gZ2V0IHRoZSBzZW1hKSB0byBkb3duX3RyeWxvY2suIFdlIG5lZWQgdG8gc3dpdGNoCiAgKiB0aGUgcmV0dXJuIHZhbHVlcyBzaW5jZSBjcHNlbWEgcmV0dXJucyAxIChhY3F1aXJlZCkgMCAoZmFpbGVkKSBhbmQKICAqIGRvd25fdHJ5bG9jayByZXR1cm5zIHRoZSByZXZlcnNlIDAgKGFjcXVpcmVkKSAxIChmYWlsZWQpLgogICovCi0KLSNkZWZpbmUgY3BzZW1hKHNwKQkJCShkb3duX3RyeWxvY2soc3ApID8gMCA6IDEpCi0KLS8qCi0gKiBEaWRuJ3QgZG8gY3ZzZW1hKHNwKS4gTm90IHN1cmUgaG93IHRvIG1hcCB0aGlzIHRvIHVwL2Rvd24vLi4uCi0gKiBJdCBkb2VzIGEgdnNlbWEgaWYgdGhlIHZhbHVlcyBpcyA8IDAgb3RoZXIgd2lzZSBub3RoaW5nLgotICovCitzdGF0aWMgaW5saW5lIGludCBjcHNlbWEoc2VtYV90ICpzcCkKK3sKKwlyZXR1cm4gZG93bl90cnlsb2NrKHNwKSA/IDAgOiAxOworfQogCiAjZW5kaWYgLyogX19YRlNfU1VQUE9SVF9TRU1BX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5jCmluZGV4IDRkMTkxZWYuLjNlODA3YjggMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2FvcHMuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMjksNyArMjgsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNzYsNyArNzQsNyBAQAogCWludAkJbWFzaykKIHsKIAl4ZnNfaW5vZGVfdAkqaXA7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CisJYmh2X3Zub2RlX3QJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CiAJbG9mZl90CQlpc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTsKIAlsb2ZmX3QJCW9mZnNldCA9IHBhZ2Vfb2Zmc2V0KHBhZ2UpOwogCWludAkJZGVsYWxsb2MgPSAtMSwgdW5tYXBwZWQgPSAtMSwgdW53cml0dGVuID0gLTE7CkBAIC0xMzYsOSArMTM0LDEwIEBACiAKIAlmb3IgKGJoID0gaW9lbmQtPmlvX2J1ZmZlcl9oZWFkOyBiaDsgYmggPSBuZXh0KSB7CiAJCW5leHQgPSBiaC0+Yl9wcml2YXRlOwotCQliaC0+Yl9lbmRfaW8oYmgsIGlvZW5kLT5pb191cHRvZGF0ZSk7CisJCWJoLT5iX2VuZF9pbyhiaCwgIWlvZW5kLT5pb19lcnJvcik7CiAJfQotCisJaWYgKHVubGlrZWx5KGlvZW5kLT5pb19lcnJvcikpCisJCXZuX2lvZXJyb3IoaW9lbmQtPmlvX3Zub2RlLCBpb2VuZC0+aW9fZXJyb3IsIF9fRklMRV9fLF9fTElORV9fKTsKIAl2bl9pb3dha2UoaW9lbmQtPmlvX3Zub2RlKTsKIAltZW1wb29sX2ZyZWUoaW9lbmQsIHhmc19pb2VuZF9wb29sKTsKIH0KQEAgLTE4MCwxMyArMTc5LDEyIEBACiAJdm9pZAkJCSpkYXRhKQogewogCXhmc19pb2VuZF90CQkqaW9lbmQgPSBkYXRhOwotCXZub2RlX3QJCQkqdnAgPSBpb2VuZC0+aW9fdm5vZGU7CisJYmh2X3Zub2RlX3QJCSp2cCA9IGlvZW5kLT5pb192bm9kZTsKIAl4ZnNfb2ZmX3QJCW9mZnNldCA9IGlvZW5kLT5pb19vZmZzZXQ7CiAJc2l6ZV90CQkJc2l6ZSA9IGlvZW5kLT5pb19zaXplOwotCWludAkJCWVycm9yOwogCi0JaWYgKGlvZW5kLT5pb191cHRvZGF0ZSkKLQkJVk9QX0JNQVAodnAsIG9mZnNldCwgc2l6ZSwgQk1BUElfVU5XUklUVEVOLCBOVUxMLCBOVUxMLCBlcnJvcik7CisJaWYgKGxpa2VseSghaW9lbmQtPmlvX2Vycm9yKSkKKwkJYmh2X3ZvcF9ibWFwKHZwLCBvZmZzZXQsIHNpemUsIEJNQVBJX1VOV1JJVFRFTiwgTlVMTCwgTlVMTCk7CiAJeGZzX2Rlc3Ryb3lfaW9lbmQoaW9lbmQpOwogfQogCkBAIC0yMTEsNyArMjA5LDcgQEAKIAkgKiBhbGwgdGhlIEkvTyBmcm9tIGNhbGxpbmcgdGhlIGNvbXBsZXRpb24gcm91dGluZSB0b28gZWFybHkuCiAJICovCiAJYXRvbWljX3NldCgmaW9lbmQtPmlvX3JlbWFpbmluZywgMSk7Ci0JaW9lbmQtPmlvX3VwdG9kYXRlID0gMTsgLyogY2xlYXJlZCBpZiBhbnkgSS9PIGZhaWxzICovCisJaW9lbmQtPmlvX2Vycm9yID0gMDsKIAlpb2VuZC0+aW9fbGlzdCA9IE5VTEw7CiAJaW9lbmQtPmlvX3R5cGUgPSB0eXBlOwogCWlvZW5kLT5pb192bm9kZSA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwpAQCAtMjM5LDEwICsyMzcsMTAgQEAKIAl4ZnNfaW9tYXBfdAkJKm1hcHAsCiAJaW50CQkJZmxhZ3MpCiB7Ci0Jdm5vZGVfdAkJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOworCWJodl92bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAlpbnQJCQllcnJvciwgbm1hcHMgPSAxOwogCi0JVk9QX0JNQVAodnAsIG9mZnNldCwgY291bnQsIGZsYWdzLCBtYXBwLCAmbm1hcHMsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYm1hcCh2cCwgb2Zmc2V0LCBjb3VudCwgZmxhZ3MsIG1hcHAsICZubWFwcyk7CiAJaWYgKCFlcnJvciAmJiAoZmxhZ3MgJiAoQk1BUElfV1JJVEV8Qk1BUElfQUxMT0NBVEUpKSkKIAkJVk1PRElGWSh2cCk7CiAJcmV0dXJuIC1lcnJvcjsKQEAgLTI3MSwxNiArMjY5LDE0IEBACiAJaWYgKGJpby0+Ymlfc2l6ZSkKIAkJcmV0dXJuIDE7CiAKLQlBU1NFUlQoaW9lbmQpOwogCUFTU0VSVChhdG9taWNfcmVhZCgmYmlvLT5iaV9jbnQpID49IDEpOworCWlvZW5kLT5pb19lcnJvciA9IHRlc3RfYml0KEJJT19VUFRPREFURSwgJmJpby0+YmlfZmxhZ3MpID8gMCA6IGVycm9yOwogCiAJLyogVG9zcyBiaW8gYW5kIHBhc3Mgd29yayBvZmYgdG8gYW4geGZzZGF0YWQgdGhyZWFkICovCi0JaWYgKCF0ZXN0X2JpdChCSU9fVVBUT0RBVEUsICZiaW8tPmJpX2ZsYWdzKSkKLQkJaW9lbmQtPmlvX3VwdG9kYXRlID0gMDsKIAliaW8tPmJpX3ByaXZhdGUgPSBOVUxMOwogCWJpby0+YmlfZW5kX2lvID0gTlVMTDsKLQogCWJpb19wdXQoYmlvKTsKKwogCXhmc19maW5pc2hfaW9lbmQoaW9lbmQpOwogCXJldHVybiAwOwogfQpAQCAtMTEyNyw3ICsxMTIzLDcgQEAKIAkgKiB0aGVuIG1hcmsgdGhlIHBhZ2UgZGlydHkgYWdhaW4gYW5kIGxlYXZlIHRoZSBwYWdlCiAJICogYXMgaXMuCiAJICovCi0JaWYgKFBGTEFHU19URVNUX0ZTVFJBTlMoKSAmJiBuZWVkX3RyYW5zKQorCWlmIChjdXJyZW50X3Rlc3RfZmxhZ3MoUEZfRlNUUkFOUykgJiYgbmVlZF90cmFucykKIAkJZ290byBvdXRfZmFpbDsKIAogCS8qCkBAIC0xMTU4LDYgKzExNTQsMTggQEAKIAlyZXR1cm4gZXJyb3I7CiB9CiAKK1NUQVRJQyBpbnQKK3hmc192bV93cml0ZXBhZ2VzKAorCXN0cnVjdCBhZGRyZXNzX3NwYWNlCSptYXBwaW5nLAorCXN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQoreworCXN0cnVjdCBiaHZfdm5vZGUJKnZwID0gdm5fZnJvbV9pbm9kZShtYXBwaW5nLT5ob3N0KTsKKworCWlmIChWTl9UUlVOQyh2cCkpCisJCVZVTlRSVU5DQVRFKHZwKTsKKwlyZXR1cm4gZ2VuZXJpY193cml0ZXBhZ2VzKG1hcHBpbmcsIHdiYyk7Cit9CisKIC8qCiAgKiBDYWxsZWQgdG8gbW92ZSBhIHBhZ2UgaW50byBjbGVhbmFibGUgc3RhdGUgLSBhbmQgZnJvbSB0aGVyZQogICogdG8gYmUgcmVsZWFzZWQuIFBvc3NpYmx5IHRoZSBwYWdlIGlzIGFscmVhZHkgY2xlYW4uIFdlIGFsd2F5cwpAQCAtMTIwNCw3ICsxMjEyLDcgQEAKIAkvKiBJZiB3ZSBhcmUgYWxyZWFkeSBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvciB0aGUgdGhyZWFkIGNhbm5vdAogCSAqIGRvIEkvTywgd2UgY2Fubm90IHJlbGVhc2UgdGhpcyBwYWdlLgogCSAqLwotCWlmIChQRkxBR1NfVEVTVF9GU1RSQU5TKCkpCisJaWYgKGN1cnJlbnRfdGVzdF9mbGFncyhQRl9GU1RSQU5TKSkKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAtMTIzMSw3ICsxMjM5LDcgQEAKIAlpbnQJCQlkaXJlY3QsCiAJYm1hcGlfZmxhZ3NfdAkJZmxhZ3MpCiB7Ci0Jdm5vZGVfdAkJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOworCWJodl92bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAl4ZnNfaW9tYXBfdAkJaW9tYXA7CiAJeGZzX29mZl90CQlvZmZzZXQ7CiAJc3NpemVfdAkJCXNpemU7CkBAIC0xMjQxLDggKzEyNDksOCBAQAogCW9mZnNldCA9ICh4ZnNfb2ZmX3QpaWJsb2NrIDw8IGlub2RlLT5pX2Jsa2JpdHM7CiAJQVNTRVJUKGJoX3Jlc3VsdC0+Yl9zaXplID49ICgxIDw8IGlub2RlLT5pX2Jsa2JpdHMpKTsKIAlzaXplID0gYmhfcmVzdWx0LT5iX3NpemU7Ci0JVk9QX0JNQVAodnAsIG9mZnNldCwgc2l6ZSwKLQkJY3JlYXRlID8gZmxhZ3MgOiBCTUFQSV9SRUFELCAmaW9tYXAsICZuaW9tYXAsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYm1hcCh2cCwgb2Zmc2V0LCBzaXplLAorCQkJICAgICBjcmVhdGUgPyBmbGFncyA6IEJNQVBJX1JFQUQsICZpb21hcCwgJm5pb21hcCk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gLWVycm9yOwogCWlmIChuaW9tYXAgPT0gMCkKQEAgLTEzNzAsMTMgKzEzNzgsMTMgQEAKIHsKIAlzdHJ1Y3QgZmlsZQkqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7CiAJc3RydWN0IGlub2RlCSppbm9kZSA9IGZpbGUtPmZfbWFwcGluZy0+aG9zdDsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAl4ZnNfaW9tYXBfdAlpb21hcDsKIAlpbnQJCW1hcHMgPSAxOwogCWludAkJZXJyb3I7CiAJc3NpemVfdAkJcmV0OwogCi0JVk9QX0JNQVAodnAsIG9mZnNldCwgMCwgQk1BUElfREVWSUNFLCAmaW9tYXAsICZtYXBzLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdm9wX2JtYXAodnAsIG9mZnNldCwgMCwgQk1BUElfREVWSUNFLCAmaW9tYXAsICZtYXBzKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiAtZXJyb3I7CiAKQEAgLTE0MDksMTQgKzE0MTcsMTIgQEAKIAlzZWN0b3JfdAkJYmxvY2spCiB7CiAJc3RydWN0IGlub2RlCQkqaW5vZGUgPSAoc3RydWN0IGlub2RlICopbWFwcGluZy0+aG9zdDsKLQl2bm9kZV90CQkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7Ci0JaW50CQkJZXJyb3I7CisJYmh2X3Zub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwogCiAJdm5fdHJhY2VfZW50cnkodnAsIF9fRlVOQ1RJT05fXywgKGluc3RfdCAqKV9fcmV0dXJuX2FkZHJlc3MpOwotCi0JVk9QX1JXTE9DSyh2cCwgVlJXTE9DS19SRUFEKTsKLQlWT1BfRkxVU0hfUEFHRVModnAsICh4ZnNfb2ZmX3QpMCwgLTEsIDAsIEZJX1JFTUFQRiwgZXJyb3IpOwotCVZPUF9SV1VOTE9DSyh2cCwgVlJXTE9DS19SRUFEKTsKKwliaHZfdm9wX3J3bG9jayh2cCwgVlJXTE9DS19SRUFEKTsKKwliaHZfdm9wX2ZsdXNoX3BhZ2VzKHZwLCAoeGZzX29mZl90KTAsIC0xLCAwLCBGSV9SRU1BUEYpOworCWJodl92b3Bfcnd1bmxvY2sodnAsIFZSV0xPQ0tfUkVBRCk7CiAJcmV0dXJuIGdlbmVyaWNfYmxvY2tfYm1hcChtYXBwaW5nLCBibG9jaywgeGZzX2dldF9ibG9ja3MpOwogfQogCkBAIC0xNDUyLDYgKzE0NTgsNyBAQAogCS5yZWFkcGFnZQkJPSB4ZnNfdm1fcmVhZHBhZ2UsCiAJLnJlYWRwYWdlcwkJPSB4ZnNfdm1fcmVhZHBhZ2VzLAogCS53cml0ZXBhZ2UJCT0geGZzX3ZtX3dyaXRlcGFnZSwKKwkud3JpdGVwYWdlcwkJPSB4ZnNfdm1fd3JpdGVwYWdlcywKIAkuc3luY19wYWdlCQk9IGJsb2NrX3N5bmNfcGFnZSwKIAkucmVsZWFzZXBhZ2UJCT0geGZzX3ZtX3JlbGVhc2VwYWdlLAogCS5pbnZhbGlkYXRlcGFnZQkJPSB4ZnNfdm1faW52YWxpZGF0ZXBhZ2UsCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmggYi9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmgKaW5kZXggNjA3MTY1NC4uNzA2ZDhjNyAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5oCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2FvcHMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDYgU2lsaWNvbiBHcmFwaGljcywgSW5jLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zMCw5ICszMCw5IEBACiB0eXBlZGVmIHN0cnVjdCB4ZnNfaW9lbmQgewogCXN0cnVjdCB4ZnNfaW9lbmQJKmlvX2xpc3Q7CS8qIG5leHQgaW9lbmQgaW4gY2hhaW4gKi8KIAl1bnNpZ25lZCBpbnQJCWlvX3R5cGU7CS8qIGRlbGFsbG9jIC8gdW53cml0dGVuICovCi0JdW5zaWduZWQgaW50CQlpb191cHRvZGF0ZTsJLyogSS9PIHN0YXR1cyByZWdpc3RlciAqLworCWludAkJCWlvX2Vycm9yOwkvKiBJL08gZXJyb3IgY29kZSAqLwogCWF0b21pY190CQlpb19yZW1haW5pbmc7CS8qIGhvbGQgY291bnQgKi8KLQlzdHJ1Y3Qgdm5vZGUJCSppb192bm9kZTsJLyogZmlsZSBiZWluZyB3cml0dGVuIHRvICovCisJc3RydWN0IGJodl92bm9kZQkqaW9fdm5vZGU7CS8qIGZpbGUgYmVpbmcgd3JpdHRlbiB0byAqLwogCXN0cnVjdCBidWZmZXJfaGVhZAkqaW9fYnVmZmVyX2hlYWQ7LyogYnVmZmVyIGxpbmtlZCBsaXN0IGhlYWQgKi8KIAlzdHJ1Y3QgYnVmZmVyX2hlYWQJKmlvX2J1ZmZlcl90YWlsOy8qIGJ1ZmZlciBsaW5rZWQgbGlzdCB0YWlsICovCiAJc2l6ZV90CQkJaW9fc2l6ZTsJLyogc2l6ZSBvZiB0aGUgZXh0ZW50ICovCkBAIC00Myw0ICs0Myw0IEBACiBleHRlcm4gc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB4ZnNfYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zOwogZXh0ZXJuIGludCB4ZnNfZ2V0X2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKiwgc2VjdG9yX3QsIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogCi0jZW5kaWYgLyogX19YRlNfSU9QU19IX18gKi8KKyNlbmRpZiAvKiBfX1hGU19BT1BTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfZXhwb3J0LmMgYi9mcy94ZnMvbGludXgtMi42L3hmc19leHBvcnQuYwppbmRleCBiNzY4ZWE5Li41ZmI3NWQ5IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19leHBvcnQuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19leHBvcnQuYwpAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgInhmc19sb2cuaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2V4cG9ydC5oIgogCkBAIC05Nyw3ICs5Niw3IEBACiAJaW50CQkJbGVuOwogCWludAkJCWlzNjQgPSAwOwogI2lmIFhGU19CSUdfSU5VTVMKLQl2ZnNfdAkJCSp2ZnMgPSB2ZnNfZnJvbV9zYihpbm9kZS0+aV9zYik7CisJYmh2X3Zmc190CQkqdmZzID0gdmZzX2Zyb21fc2IoaW5vZGUtPmlfc2IpOwogCiAJaWYgKCEodmZzLT52ZnNfZmxhZyAmIFZGU18zMkJJVElOT0RFUykpIHsKIAkJLyogZmlsZXN5c3RlbSBtYXkgY29udGFpbiA2NGJpdCBpbm9kZSBudW1iZXJzICovCkBAIC0xMzYsMTMgKzEzNSwxMyBAQAogCXN0cnVjdCBzdXBlcl9ibG9jawkqc2IsCiAJdm9pZAkJCSpkYXRhKQogewotCXZub2RlX3QJCQkqdnA7CisJYmh2X3Zub2RlX3QJCSp2cDsKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZTsKIAlzdHJ1Y3QgZGVudHJ5CQkqcmVzdWx0OwotCXZmc190CQkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7CisJYmh2X3Zmc190CQkqdmZzcCA9IHZmc19mcm9tX3NiKHNiKTsKIAlpbnQJCQllcnJvcjsKIAotCVZGU19WR0VUKHZmc3AsICZ2cCwgKGZpZF90ICopZGF0YSwgZXJyb3IpOworCWVycm9yID0gYmh2X3Zmc192Z2V0KHZmc3AsICZ2cCwgKGZpZF90ICopZGF0YSk7CiAJaWYgKGVycm9yIHx8IHZwID09IE5VTEwpCiAJCXJldHVybiBFUlJfUFRSKC1FU1RBTEUpIDsKIApAQCAtMTYwLDEyICsxNTksMTIgQEAKIAlzdHJ1Y3QgZGVudHJ5CQkqY2hpbGQpCiB7CiAJaW50CQkJZXJyb3I7Ci0Jdm5vZGVfdAkJCSp2cCwgKmN2cDsKKwliaHZfdm5vZGVfdAkJKnZwLCAqY3ZwOwogCXN0cnVjdCBkZW50cnkJCSpwYXJlbnQ7CiAKIAljdnAgPSBOVUxMOwogCXZwID0gdm5fZnJvbV9pbm9kZShjaGlsZC0+ZF9pbm9kZSk7Ci0JVk9QX0xPT0tVUCh2cCwgJmRvdGRvdCwgJmN2cCwgMCwgTlVMTCwgTlVMTCwgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9sb29rdXAodnAsICZkb3Rkb3QsICZjdnAsIDAsIE5VTEwsIE5VTEwpOwogCWlmICh1bmxpa2VseShlcnJvcikpCiAJCXJldHVybiBFUlJfUFRSKC1lcnJvcik7CiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZpbGUuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZpbGUuYwppbmRleCBjODQ3NDE2Li43MDY2MjM3IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19maWxlLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfZmlsZS5jCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAieGZzX2ludW0uaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKQEAgLTMyLDcgKzMxLDYgQEAKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKICNpbmNsdWRlICJ4ZnNfaW5vZGUuaCIKQEAgLTU4LDE1ICs1NiwxMiBAQAogewogCXN0cnVjdCBpb3ZlYwkJaW92ID0ge2J1ZiwgY291bnR9OwogCXN0cnVjdCBmaWxlCQkqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7Ci0Jdm5vZGVfdAkJCSp2cCA9IHZuX2Zyb21faW5vZGUoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUpOwotCXNzaXplX3QJCQlydmFsOworCWJodl92bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlKTsKIAogCUJVR19PTihpb2NiLT5raV9wb3MgIT0gcG9zKTsKLQogCWlmICh1bmxpa2VseShmaWxlLT5mX2ZsYWdzICYgT19ESVJFQ1QpKQogCQlpb2ZsYWdzIHw9IElPX0lTRElSRUNUOwotCVZPUF9SRUFEKHZwLCBpb2NiLCAmaW92LCAxLCAmaW9jYi0+a2lfcG9zLCBpb2ZsYWdzLCBOVUxMLCBydmFsKTsKLQlyZXR1cm4gcnZhbDsKKwlyZXR1cm4gYmh2X3ZvcF9yZWFkKHZwLCBpb2NiLCAmaW92LCAxLCAmaW9jYi0+a2lfcG9zLCBpb2ZsYWdzLCBOVUxMKTsKIH0KIAogU1RBVElDIHNzaXplX3QKQEAgLTEwMCwxNSArOTUsMTIgQEAKIAlzdHJ1Y3QgaW92ZWMJaW92ID0geyh2b2lkIF9fdXNlciAqKWJ1ZiwgY291bnR9OwogCXN0cnVjdCBmaWxlCSpmaWxlID0gaW9jYi0+a2lfZmlscDsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gZmlsZS0+Zl9tYXBwaW5nLT5ob3N0OwotCXZub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwotCXNzaXplX3QJCXJ2YWw7CisJYmh2X3Zub2RlX3QJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CiAKIAlCVUdfT04oaW9jYi0+a2lfcG9zICE9IHBvcyk7CiAJaWYgKHVubGlrZWx5KGZpbGUtPmZfZmxhZ3MgJiBPX0RJUkVDVCkpCiAJCWlvZmxhZ3MgfD0gSU9fSVNESVJFQ1Q7Ci0KLQlWT1BfV1JJVEUodnAsIGlvY2IsICZpb3YsIDEsICZpb2NiLT5raV9wb3MsIGlvZmxhZ3MsIE5VTEwsIHJ2YWwpOwotCXJldHVybiBydmFsOworCXJldHVybiBiaHZfdm9wX3dyaXRlKHZwLCBpb2NiLCAmaW92LCAxLCAmaW9jYi0+a2lfcG9zLCBpb2ZsYWdzLCBOVUxMKTsKIH0KIAogU1RBVElDIHNzaXplX3QKQEAgLTE0MCw3ICsxMzIsNyBAQAogCWxvZmZfdAkJCSpwcG9zKQogewogCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSBmaWxlLT5mX21hcHBpbmctPmhvc3Q7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CisJYmh2X3Zub2RlX3QJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CiAJc3RydWN0IGtpb2NiCWtpb2NiOwogCXNzaXplX3QJCXJ2YWw7CiAKQEAgLTE0OSw3ICsxNDEsOCBAQAogCiAJaWYgKHVubGlrZWx5KGZpbGUtPmZfZmxhZ3MgJiBPX0RJUkVDVCkpCiAJCWlvZmxhZ3MgfD0gSU9fSVNESVJFQ1Q7Ci0JVk9QX1JFQUQodnAsICZraW9jYiwgaW92LCBucl9zZWdzLCAma2lvY2Iua2lfcG9zLCBpb2ZsYWdzLCBOVUxMLCBydmFsKTsKKwlydmFsID0gYmh2X3ZvcF9yZWFkKHZwLCAma2lvY2IsIGlvdiwgbnJfc2VncywKKwkJCQkma2lvY2Iua2lfcG9zLCBpb2ZsYWdzLCBOVUxMKTsKIAogCSpwcG9zID0ga2lvY2Iua2lfcG9zOwogCXJldHVybiBydmFsOwpAQCAtMTg0LDcgKzE3Nyw3IEBACiAJbG9mZl90CQkJKnBwb3MpCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZSA9IGZpbGUtPmZfbWFwcGluZy0+aG9zdDsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAlzdHJ1Y3Qga2lvY2IJa2lvY2I7CiAJc3NpemVfdAkJcnZhbDsKIApAQCAtMTkzLDcgKzE4Niw4IEBACiAJaWYgKHVubGlrZWx5KGZpbGUtPmZfZmxhZ3MgJiBPX0RJUkVDVCkpCiAJCWlvZmxhZ3MgfD0gSU9fSVNESVJFQ1Q7CiAKLQlWT1BfV1JJVEUodnAsICZraW9jYiwgaW92LCBucl9zZWdzLCAma2lvY2Iua2lfcG9zLCBpb2ZsYWdzLCBOVUxMLCBydmFsKTsKKwlydmFsID0gYmh2X3ZvcF93cml0ZSh2cCwgJmtpb2NiLCBpb3YsIG5yX3NlZ3MsCisJCQkJICZraW9jYi5raV9wb3MsIGlvZmxhZ3MsIE5VTEwpOwogCiAJKnBwb3MgPSBraW9jYi5raV9wb3M7CiAJcmV0dXJuIHJ2YWw7CkBAIC0yMjcsMTEgKzIyMSw4IEBACiAJcmVhZF9hY3Rvcl90CQlhY3RvciwKIAl2b2lkCQkJKnRhcmdldCkKIHsKLQl2bm9kZV90CQkJKnZwID0gdm5fZnJvbV9pbm9kZShmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZSk7Ci0Jc3NpemVfdAkJCXJ2YWw7Ci0KLQlWT1BfU0VOREZJTEUodnAsIGZpbHAsIHBvcywgMCwgY291bnQsIGFjdG9yLCB0YXJnZXQsIE5VTEwsIHJ2YWwpOwotCXJldHVybiBydmFsOworCXJldHVybiBiaHZfdm9wX3NlbmRmaWxlKHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpLAorCQkJCWZpbHAsIHBvcywgMCwgY291bnQsIGFjdG9yLCB0YXJnZXQsIE5VTEwpOwogfQogCiBTVEFUSUMgc3NpemVfdApAQCAtMjQyLDExICsyMzMsOCBAQAogCXJlYWRfYWN0b3JfdAkJYWN0b3IsCiAJdm9pZAkJCSp0YXJnZXQpCiB7Ci0Jdm5vZGVfdAkJCSp2cCA9IHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOwotCXNzaXplX3QJCQlydmFsOwotCi0JVk9QX1NFTkRGSUxFKHZwLCBmaWxwLCBwb3MsIElPX0lOVklTLCBjb3VudCwgYWN0b3IsIHRhcmdldCwgTlVMTCwgcnZhbCk7Ci0JcmV0dXJuIHJ2YWw7CisJcmV0dXJuIGJodl92b3Bfc2VuZGZpbGUodm5fZnJvbV9pbm9kZShmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZSksCisJCQkJZmlscCwgcG9zLCBJT19JTlZJUywgY291bnQsIGFjdG9yLCB0YXJnZXQsIE5VTEwpOwogfQogCiBTVEFUSUMgc3NpemVfdApAQCAtMjU3LDExICsyNDUsOCBAQAogCXNpemVfdAkJCWxlbiwKIAl1bnNpZ25lZCBpbnQJCWZsYWdzKQogewotCXZub2RlX3QJCQkqdnAgPSB2bl9mcm9tX2lub2RlKGluZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOwotCXNzaXplX3QJCQlydmFsOwotCi0JVk9QX1NQTElDRV9SRUFEKHZwLCBpbmZpbHAsIHBwb3MsIHBpcGUsIGxlbiwgZmxhZ3MsIDAsIE5VTEwsIHJ2YWwpOwotCXJldHVybiBydmFsOworCXJldHVybiBiaHZfdm9wX3NwbGljZV9yZWFkKHZuX2Zyb21faW5vZGUoaW5maWxwLT5mX2RlbnRyeS0+ZF9pbm9kZSksCisJCQkJICAgaW5maWxwLCBwcG9zLCBwaXBlLCBsZW4sIGZsYWdzLCAwLCBOVUxMKTsKIH0KIAogU1RBVElDIHNzaXplX3QKQEAgLTI3MiwxMSArMjU3LDkgQEAKIAlzaXplX3QJCQlsZW4sCiAJdW5zaWduZWQgaW50CQlmbGFncykKIHsKLQl2bm9kZV90CQkJKnZwID0gdm5fZnJvbV9pbm9kZShpbmZpbHAtPmZfZGVudHJ5LT5kX2lub2RlKTsKLQlzc2l6ZV90CQkJcnZhbDsKLQotCVZPUF9TUExJQ0VfUkVBRCh2cCwgaW5maWxwLCBwcG9zLCBwaXBlLCBsZW4sIGZsYWdzLCBJT19JTlZJUywgTlVMTCwgcnZhbCk7Ci0JcmV0dXJuIHJ2YWw7CisJcmV0dXJuIGJodl92b3Bfc3BsaWNlX3JlYWQodm5fZnJvbV9pbm9kZShpbmZpbHAtPmZfZGVudHJ5LT5kX2lub2RlKSwKKwkJCQkgICBpbmZpbHAsIHBwb3MsIHBpcGUsIGxlbiwgZmxhZ3MsIElPX0lOVklTLAorCQkJCSAgIE5VTEwpOwogfQogCiBTVEFUSUMgc3NpemVfdApAQCAtMjg3LDExICsyNzAsOCBAQAogCXNpemVfdAkJCWxlbiwKIAl1bnNpZ25lZCBpbnQJCWZsYWdzKQogewotCXZub2RlX3QJCQkqdnAgPSB2bl9mcm9tX2lub2RlKG91dGZpbHAtPmZfZGVudHJ5LT5kX2lub2RlKTsKLQlzc2l6ZV90CQkJcnZhbDsKLQotCVZPUF9TUExJQ0VfV1JJVEUodnAsIHBpcGUsIG91dGZpbHAsIHBwb3MsIGxlbiwgZmxhZ3MsIDAsIE5VTEwsIHJ2YWwpOwotCXJldHVybiBydmFsOworCXJldHVybiBiaHZfdm9wX3NwbGljZV93cml0ZSh2bl9mcm9tX2lub2RlKG91dGZpbHAtPmZfZGVudHJ5LT5kX2lub2RlKSwKKwkJCQkgICAgcGlwZSwgb3V0ZmlscCwgcHBvcywgbGVuLCBmbGFncywgMCwgTlVMTCk7CiB9CiAKIFNUQVRJQyBzc2l6ZV90CkBAIC0zMDIsMTEgKzI4Miw5IEBACiAJc2l6ZV90CQkJbGVuLAogCXVuc2lnbmVkIGludAkJZmxhZ3MpCiB7Ci0Jdm5vZGVfdAkJCSp2cCA9IHZuX2Zyb21faW5vZGUob3V0ZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOwotCXNzaXplX3QJCQlydmFsOwotCi0JVk9QX1NQTElDRV9XUklURSh2cCwgcGlwZSwgb3V0ZmlscCwgcHBvcywgbGVuLCBmbGFncywgSU9fSU5WSVMsIE5VTEwsIHJ2YWwpOwotCXJldHVybiBydmFsOworCXJldHVybiBiaHZfdm9wX3NwbGljZV93cml0ZSh2bl9mcm9tX2lub2RlKG91dGZpbHAtPmZfZGVudHJ5LT5kX2lub2RlKSwKKwkJCQkgICAgcGlwZSwgb3V0ZmlscCwgcHBvcywgbGVuLCBmbGFncywgSU9fSU5WSVMsCisJCQkJICAgIE5VTEwpOwogfQogCiBTVEFUSUMgaW50CkBAIC0zMTQsMTMgKzI5MiwxNyBAQAogCXN0cnVjdCBpbm9kZQkqaW5vZGUsCiAJc3RydWN0IGZpbGUJKmZpbHApCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7Ci0JaW50CQllcnJvcjsKLQogCWlmICghKGZpbHAtPmZfZmxhZ3MgJiBPX0xBUkdFRklMRSkgJiYgaV9zaXplX3JlYWQoaW5vZGUpID4gTUFYX05PTl9MRlMpCiAJCXJldHVybiAtRUZCSUc7Ci0JVk9QX09QRU4odnAsIE5VTEwsIGVycm9yKTsKLQlyZXR1cm4gLWVycm9yOworCXJldHVybiAtYmh2X3ZvcF9vcGVuKHZuX2Zyb21faW5vZGUoaW5vZGUpLCBOVUxMKTsKK30KKworU1RBVElDIGludAoreGZzX2ZpbGVfY2xvc2UoCisJc3RydWN0IGZpbGUJKmZpbHApCit7CisJcmV0dXJuIC1iaHZfdm9wX2Nsb3NlKHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpLCAwLAorCQkJCWZpbGVfY291bnQoZmlscCkgPiAxID8gTF9GQUxTRSA6IExfVFJVRSwgTlVMTCk7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTMyOCwxMiArMzEwLDExIEBACiAJc3RydWN0IGlub2RlCSppbm9kZSwKIAlzdHJ1Y3QgZmlsZQkqZmlscCkKIHsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKLQlpbnQJCWVycm9yID0gMDsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAogCWlmICh2cCkKLQkJVk9QX1JFTEVBU0UodnAsIGVycm9yKTsKLQlyZXR1cm4gLWVycm9yOworCQlyZXR1cm4gLWJodl92b3BfcmVsZWFzZSh2cCk7CisJcmV0dXJuIDA7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTM0MiwxNSArMzIzLDE0IEBACiAJc3RydWN0IGRlbnRyeQkqZGVudHJ5LAogCWludAkJZGF0YXN5bmMpCiB7Ci0Jc3RydWN0IGlub2RlCSppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKLQlpbnQJCWVycm9yOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKTsKIAlpbnQJCWZsYWdzID0gRlNZTkNfV0FJVDsKIAogCWlmIChkYXRhc3luYykKIAkJZmxhZ3MgfD0gRlNZTkNfREFUQTsKLQlWT1BfRlNZTkModnAsIGZsYWdzLCBOVUxMLCAoeGZzX29mZl90KTAsICh4ZnNfb2ZmX3QpLTEsIGVycm9yKTsKLQlyZXR1cm4gLWVycm9yOworCWlmIChWTl9UUlVOQyh2cCkpCisJCVZVTlRSVU5DQVRFKHZwKTsKKwlyZXR1cm4gLWJodl92b3BfZnN5bmModnAsIGZsYWdzLCBOVUxMLCAoeGZzX29mZl90KTAsICh4ZnNfb2ZmX3QpLTEpOwogfQogCiAjaWZkZWYgQ09ORklHX1hGU19ETUFQSQpAQCAtMzYxLDE2ICszNDEsMTEgQEAKIAlpbnQJCQkqdHlwZSkKIHsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gYXJlYS0+dm1fZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7Ci0JeGZzX21vdW50X3QJKm1wID0gWEZTX1ZGU1RPTSh2cC0+dl92ZnNwKTsKLQlpbnQJCWVycm9yOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwogCiAJQVNTRVJUX0FMV0FZUyh2cC0+dl92ZnNwLT52ZnNfZmxhZyAmIFZGU19ETUkpOwotCi0JZXJyb3IgPSBYRlNfU0VORF9NTUFQKG1wLCBhcmVhLCAwKTsKLQlpZiAoZXJyb3IpCisJaWYgKFhGU19TRU5EX01NQVAoWEZTX1ZGU1RPTSh2cC0+dl92ZnNwKSwgYXJlYSwgMCkpCiAJCXJldHVybiBOVUxMOwotCiAJcmV0dXJuIGZpbGVtYXBfbm9wYWdlKGFyZWEsIGFkZHJlc3MsIHR5cGUpOwogfQogI2VuZGlmIC8qIENPTkZJR19YRlNfRE1BUEkgKi8KQEAgLTM4Miw3ICszNTcsNyBAQAogCWZpbGxkaXJfdAlmaWxsZGlyKQogewogCWludAkJZXJyb3IgPSAwOwotCXZub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOwogCXVpb190CQl1aW87CiAJaW92ZWNfdAkJaW92OwogCWludAkJZW9mID0gMDsKQEAgLTQxNyw3ICszOTIsNyBAQAogCiAJCXN0YXJ0X29mZnNldCA9IHVpby51aW9fb2Zmc2V0OwogCi0JCVZPUF9SRUFERElSKHZwLCAmdWlvLCBOVUxMLCAmZW9mLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3ZvcF9yZWFkZGlyKHZwLCAmdWlvLCBOVUxMLCAmZW9mKTsKIAkJaWYgKCh1aW8udWlvX29mZnNldCA9PSBzdGFydF9vZmZzZXQpIHx8IGVycm9yKSB7CiAJCQlzaXplID0gMDsKIAkJCWJyZWFrOwpAQCAtNDU2LDM4ICs0MzEsMjggQEAKIAlzdHJ1Y3QgZmlsZQkqZmlscCwKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKLQlzdHJ1Y3QgaW5vZGUJKmlwID0gZmlscC0+Zl9kZW50cnktPmRfaW5vZGU7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpcCk7Ci0JdmF0dHJfdAkJdmF0dHI7Ci0JaW50CQllcnJvcjsKLQogCXZtYS0+dm1fb3BzID0gJnhmc19maWxlX3ZtX29wczsKIAogI2lmZGVmIENPTkZJR19YRlNfRE1BUEkKLQlpZiAodnAtPnZfdmZzcC0+dmZzX2ZsYWcgJiBWRlNfRE1JKSB7CisJaWYgKHZuX2Zyb21faW5vZGUoZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpLT52X3Zmc3AtPnZmc19mbGFnICYgVkZTX0RNSSkKIAkJdm1hLT52bV9vcHMgPSAmeGZzX2RtYXBpX2ZpbGVfdm1fb3BzOwotCX0KICNlbmRpZiAvKiBDT05GSUdfWEZTX0RNQVBJICovCiAKLQl2YXR0ci52YV9tYXNrID0gWEZTX0FUX1VQREFUSU1FOwotCVZPUF9TRVRBVFRSKHZwLCAmdmF0dHIsIFhGU19BVF9VUERBVElNRSwgTlVMTCwgZXJyb3IpOwotCWlmIChsaWtlbHkoIWVycm9yKSkKLQkJX192bl9yZXZhbGlkYXRlKHZwLCAmdmF0dHIpOwkvKiB1cGRhdGUgZmxhZ3MgKi8KKwlmaWxlX2FjY2Vzc2VkKGZpbHApOwogCXJldHVybiAwOwogfQogCi0KIFNUQVRJQyBsb25nCiB4ZnNfZmlsZV9pb2N0bCgKIAlzdHJ1Y3QgZmlsZQkqZmlscCwKIAl1bnNpZ25lZCBpbnQJY21kLAotCXVuc2lnbmVkIGxvbmcJYXJnKQorCXVuc2lnbmVkIGxvbmcJcCkKIHsKIAlpbnQJCWVycm9yOwogCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSBmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZTsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAotCVZPUF9JT0NUTCh2cCwgaW5vZGUsIGZpbHAsIDAsIGNtZCwgKHZvaWQgX191c2VyICopYXJnLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdm9wX2lvY3RsKHZwLCBpbm9kZSwgZmlscCwgMCwgY21kLCAodm9pZCBfX3VzZXIgKilwKTsKIAlWTU9ESUZZKHZwKTsKIAogCS8qIE5PVEU6ICBzb21lIG9mIHRoZSBpb2N0bCdzIHJldHVybiBwb3NpdGl2ZSAjJ3MgYXMgYQpAQCAtNTAzLDEzICs0NjgsMTMgQEAKIHhmc19maWxlX2lvY3RsX2ludmlzKAogCXN0cnVjdCBmaWxlCSpmaWxwLAogCXVuc2lnbmVkIGludAljbWQsCi0JdW5zaWduZWQgbG9uZwlhcmcpCisJdW5zaWduZWQgbG9uZwlwKQogewotCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSBmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZTsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAlpbnQJCWVycm9yOworCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSBmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAotCVZPUF9JT0NUTCh2cCwgaW5vZGUsIGZpbHAsIElPX0lOVklTLCBjbWQsICh2b2lkIF9fdXNlciAqKWFyZywgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9pb2N0bCh2cCwgaW5vZGUsIGZpbHAsIElPX0lOVklTLCBjbWQsICh2b2lkIF9fdXNlciAqKXApOwogCVZNT0RJRlkodnApOwogCiAJLyogTk9URTogIHNvbWUgb2YgdGhlIGlvY3RsJ3MgcmV0dXJuIHBvc2l0aXZlICMncyBhcyBhCkBAIC01MjgsNyArNDkzLDcgQEAKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAl1bnNpZ25lZCBpbnQJbmV3ZmxhZ3MpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZSh2bWEtPnZtX2ZpbGUtPmZfZGVudHJ5LT5kX2lub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKHZtYS0+dm1fZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUpOwogCWludAkJZXJyb3IgPSAwOwogCiAJaWYgKHZwLT52X3Zmc3AtPnZmc19mbGFnICYgVkZTX0RNSSkgewpAQCAtNTU0LDI0ICs1MTksMTkgQEAKIHhmc19maWxlX29wZW5fZXhlYygKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlKQogewotCXZub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwotCXhmc19tb3VudF90CSptcCA9IFhGU19WRlNUT00odnAtPnZfdmZzcCk7Ci0JaW50CQllcnJvciA9IDA7Ci0JeGZzX2lub2RlX3QJKmlwOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwogCi0JaWYgKHZwLT52X3Zmc3AtPnZmc19mbGFnICYgVkZTX0RNSSkgewotCQlpcCA9IHhmc192dG9pKHZwKTsKLQkJaWYgKCFpcCkgewotCQkJZXJyb3IgPSAtRUlOVkFMOwotCQkJZ290byBvcGVuX2V4ZWNfb3V0OwotCQl9Ci0JCWlmIChETV9FVkVOVF9FTkFCTEVEKHZwLT52X3Zmc3AsIGlwLCBETV9FVkVOVF9SRUFEKSkgewotCQkJZXJyb3IgPSAtWEZTX1NFTkRfREFUQShtcCwgRE1fRVZFTlRfUkVBRCwgdnAsCisJaWYgKHVubGlrZWx5KHZwLT52X3Zmc3AtPnZmc19mbGFnICYgVkZTX0RNSSkpIHsKKwkJeGZzX21vdW50X3QJKm1wID0gWEZTX1ZGU1RPTSh2cC0+dl92ZnNwKTsKKwkJeGZzX2lub2RlX3QJKmlwID0geGZzX3Z0b2kodnApOworCisJCWlmICghaXApCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKERNX0VWRU5UX0VOQUJMRUQodnAtPnZfdmZzcCwgaXAsIERNX0VWRU5UX1JFQUQpKQorCQkJcmV0dXJuIC1YRlNfU0VORF9EQVRBKG1wLCBETV9FVkVOVF9SRUFELCB2cCwKIAkJCQkJICAgICAgIDAsIDAsIDAsIE5VTEwpOwotCQl9CiAJfQotb3Blbl9leGVjX291dDoKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogSEFWRV9GT1BfT1BFTl9FWEVDICovCiAKQEAgLTU5Miw2ICs1NTIsNyBAQAogI2VuZGlmCiAJLm1tYXAJCT0geGZzX2ZpbGVfbW1hcCwKIAkub3BlbgkJPSB4ZnNfZmlsZV9vcGVuLAorCS5mbHVzaAkJPSB4ZnNfZmlsZV9jbG9zZSwKIAkucmVsZWFzZQk9IHhmc19maWxlX3JlbGVhc2UsCiAJLmZzeW5jCQk9IHhmc19maWxlX2ZzeW5jLAogI2lmZGVmIEhBVkVfRk9QX09QRU5fRVhFQwpAQCAtNjE2LDYgKzU3Nyw3IEBACiAjZW5kaWYKIAkubW1hcAkJPSB4ZnNfZmlsZV9tbWFwLAogCS5vcGVuCQk9IHhmc19maWxlX29wZW4sCisJLmZsdXNoCQk9IHhmc19maWxlX2Nsb3NlLAogCS5yZWxlYXNlCT0geGZzX2ZpbGVfcmVsZWFzZSwKIAkuZnN5bmMJCT0geGZzX2ZpbGVfZnN5bmMsCiB9OwpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfZnNfc3Vici5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfZnNfc3Vici5jCmluZGV4IDU3NWYyYTcuLmRjMDU2MjggMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZzX3N1YnIuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19mc19zdWJyLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDIsMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiwyMDA1LTIwMDYgU2lsaWNvbiBHcmFwaGljcywgSW5jLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xNSw0MCArMTUsMTIgQEAKICAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCiAgKiBJbmMuLCAgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKICAqLwotCiAjaW5jbHVkZSAieGZzLmgiCiAKLS8qCi0gKiBTdHViIGZvciBuby1vcCB2bm9kZSBvcGVyYXRpb25zIHRoYXQgcmV0dXJuIGVycm9yIHN0YXR1cy4KLSAqLwotaW50Ci1mc19ub2Vycih2b2lkKQotewotCXJldHVybiAwOwotfQoraW50ICBmc19ub2Vycih2b2lkKSB7IHJldHVybiAwOyB9CitpbnQgIGZzX25vc3lzKHZvaWQpIHsgcmV0dXJuIEVOT1NZUzsgfQordm9pZCBmc19ub3ZhbCh2b2lkKSB7IHJldHVybjsgfQogCi0vKgotICogT3BlcmF0aW9uIHVuc3VwcG9ydGVkIHVuZGVyIHRoaXMgZmlsZSBzeXN0ZW0uCi0gKi8KLWludAotZnNfbm9zeXModm9pZCkKLXsKLQlyZXR1cm4gRU5PU1lTOwotfQotCi0vKgotICogU3R1YiBmb3IgaW5hY3RpdmUsIHN0cmF0ZWd5LCBhbmQgcmVhZC93cml0ZSBsb2NrL3VubG9jay4gIERvZXMgbm90aGluZy4KLSAqLwotLyogQVJHU1VTRUQgKi8KLXZvaWQKLWZzX25vdmFsKHZvaWQpCi17Ci19Ci0KLS8qCi0gKiB2bm9kZSBwY2FjaGUgbGF5ZXIgZm9yIHZub2RlX3Rvc3NwYWdlcy4KLSAqICdsYXN0JyBwYXJhbWV0ZXIgdW51c2VkIGJ1dCBsZWZ0IGluIGZvciBJUklYIGNvbXBhdGliaWxpdHkKLSAqLwogdm9pZAogZnNfdG9zc3BhZ2VzKAogCWJodl9kZXNjX3QJKmJkcCwKQEAgLTU2LDE4ICsyOCwxMyBAQAogCXhmc19vZmZfdAlsYXN0LAogCWludAkJZmlvcHQpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CisJYmh2X3Zub2RlX3QJKnZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CiAJc3RydWN0IGlub2RlCSppcCA9IHZuX3RvX2lub2RlKHZwKTsKIAogCWlmIChWTl9DQUNIRUQodnApKQogCQl0cnVuY2F0ZV9pbm9kZV9wYWdlcyhpcC0+aV9tYXBwaW5nLCBmaXJzdCk7CiB9CiAKLQotLyoKLSAqIHZub2RlIHBjYWNoZSBsYXllciBmb3Igdm5vZGVfZmx1c2hpbnZhbF9wYWdlcy4KLSAqICdsYXN0JyBwYXJhbWV0ZXIgdW51c2VkIGJ1dCBsZWZ0IGluIGZvciBJUklYIGNvbXBhdGliaWxpdHkKLSAqLwogdm9pZAogZnNfZmx1c2hpbnZhbF9wYWdlcygKIAliaHZfZGVzY190CSpiZHAsCkBAIC03NSwyMCArNDIsMTcgQEAKIAl4ZnNfb2ZmX3QJbGFzdCwKIAlpbnQJCWZpb3B0KQogewotCXZub2RlX3QJCSp2cCA9IEJIVl9UT19WTk9ERShiZHApOworCWJodl92bm9kZV90CSp2cCA9IEJIVl9UT19WTk9ERShiZHApOwogCXN0cnVjdCBpbm9kZQkqaXAgPSB2bl90b19pbm9kZSh2cCk7CiAKIAlpZiAoVk5fQ0FDSEVEKHZwKSkgeworCQlpZiAoVk5fVFJVTkModnApKQorCQkJVlVOVFJVTkNBVEUodnApOwogCQlmaWxlbWFwX3dyaXRlX2FuZF93YWl0KGlwLT5pX21hcHBpbmcpOwotCiAJCXRydW5jYXRlX2lub2RlX3BhZ2VzKGlwLT5pX21hcHBpbmcsIGZpcnN0KTsKIAl9CiB9CiAKLS8qCi0gKiB2bm9kZSBwY2FjaGUgbGF5ZXIgZm9yIHZub2RlX2ZsdXNoX3BhZ2VzLgotICogJ2xhc3QnIHBhcmFtZXRlciB1bnVzZWQgYnV0IGxlZnQgaW4gZm9yIElSSVggY29tcGF0aWJpbGl0eQotICovCiBpbnQKIGZzX2ZsdXNoX3BhZ2VzKAogCWJodl9kZXNjX3QJKmJkcCwKQEAgLTk3LDE1ICs2MSwxNiBAQAogCXVpbnQ2NF90CWZsYWdzLAogCWludAkJZmlvcHQpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CisJYmh2X3Zub2RlX3QJKnZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CiAJc3RydWN0IGlub2RlCSppcCA9IHZuX3RvX2lub2RlKHZwKTsKIAotCWlmIChWTl9DQUNIRUQodnApKSB7CisJaWYgKFZOX0RJUlRZKHZwKSkgeworCQlpZiAoVk5fVFJVTkModnApKQorCQkJVlVOVFJVTkNBVEUodnApOwogCQlmaWxlbWFwX2ZkYXRhd3JpdGUoaXAtPmlfbWFwcGluZyk7CiAJCWlmIChmbGFncyAmIFhGU19CX0FTWU5DKQogCQkJcmV0dXJuIDA7CiAJCWZpbGVtYXBfZmRhdGF3YWl0KGlwLT5pX21hcHBpbmcpOwogCX0KLQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfZ2xvYmFscy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfZ2xvYmFscy5jCmluZGV4IDZlODA4NWYuLjZjMTYyYzMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2dsb2JhbHMuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19nbG9iYWxzLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKIAkueGZzX2J1Zl9hZ2UJPSB7CTEqMTAwLAkJMTUqMTAwLAkJNzIwMCoxMDB9LAogCS5pbmhlcml0X25vc3ltCT0gewkwLAkJMCwJCTEJfSwKIAkucm90b3JzdGVwCT0gewkxLAkJMSwJCTI1NQl9LAorCS5pbmhlcml0X25vZGZyZwk9IHsJMCwJCTEsCQkxCX0sCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9jdGwuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvY3RsLmMKaW5kZXggODQ0Nzg0OS4uNmU1MmE1ZCAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9jdGwuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19pb2N0bC5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCkBAIC0zMSw3ICszMCw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC03OCw3ICs3Niw3IEBACiAJeGZzX2hhbmRsZV90CQloYW5kbGU7CiAJeGZzX2Zzb3BfaGFuZGxlcmVxX3QJaHJlcTsKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZTsKLQlzdHJ1Y3Qgdm5vZGUJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZocmVxLCBhcmcsIHNpemVvZihocmVxKSkpCiAJCXJldHVybiAtWEZTX0VSUk9SKEVGQVVMVCk7CkBAIC0xOTIsNyArMTkwLDcgQEAKIAl4ZnNfbW91bnRfdAkJKm1wLAogCXN0cnVjdCBpbm9kZQkJKnBhcmlub2RlLAkvKiBwYXJlbnQgaW5vZGUgcG9pbnRlciAgICAqLwogCXhmc19mc29wX2hhbmRsZXJlcV90CSpocmVxLAotCXZub2RlX3QJCQkqKnZwLAorCWJodl92bm9kZV90CQkqKnZwLAogCXN0cnVjdCBpbm9kZQkJKippbm9kZSkKIHsKIAl2b2lkCQkJX191c2VyICpoYW5wOwpAQCAtMjAyLDcgKzIwMCw3IEBACiAJeGZzX2hhbmRsZV90CQloYW5kbGU7CiAJeGZzX2lub2RlX3QJCSppcDsKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZXA7Ci0Jdm5vZGVfdAkJCSp2cHA7CisJYmh2X3Zub2RlX3QJCSp2cHA7CiAJeGZzX2lub190CQlpbm87CiAJX191MzIJCQlpZ2VuOwogCWludAkJCWVycm9yOwpAQCAtMjc3LDcgKzI3NSw3IEBACiAJc3RydWN0IGZpbGUJCSpmaWxwOwogCXN0cnVjdCBpbm9kZQkJKmlub2RlOwogCXN0cnVjdCBkZW50cnkJCSpkZW50cnk7Ci0Jdm5vZGVfdAkJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCXhmc19mc29wX2hhbmRsZXJlcV90CWhyZXE7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCkBAIC0zNjIsNyArMzYwLDcgQEAKIAlzdHJ1Y3QgdWlvCQlhdWlvOwogCXN0cnVjdCBpbm9kZQkJKmlub2RlOwogCXhmc19mc29wX2hhbmRsZXJlcV90CWhyZXE7Ci0Jdm5vZGVfdAkJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCV9fdTMyCQkJb2xlbjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTM5Myw5ICszOTEsMTEgQEAKIAlhdWlvLnVpb19zZWdmbGcJPSBVSU9fVVNFUlNQQUNFOwogCWF1aW8udWlvX3Jlc2lkCT0gb2xlbjsKIAotCVZPUF9SRUFETElOSyh2cCwgJmF1aW8sIElPX0lOVklTLCBOVUxMLCBlcnJvcik7Ci0KKwllcnJvciA9IGJodl92b3BfcmVhZGxpbmsodnAsICZhdWlvLCBJT19JTlZJUywgTlVMTCk7CiAJVk5fUkVMRSh2cCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gLWVycm9yOworCiAJcmV0dXJuIChvbGVuIC0gYXVpby51aW9fcmVzaWQpOwogfQogCkBAIC00MTEsNyArNDExLDcgQEAKIAl4ZnNfZnNvcF9zZXRkbV9oYW5kbGVyZXFfdCBkbWhyZXE7CiAJc3RydWN0IGlub2RlCQkqaW5vZGU7CiAJYmh2X2Rlc2NfdAkJKmJkcDsKLQl2bm9kZV90CQkJKnZwOworCWJodl92bm9kZV90CQkqdnA7CiAKIAlpZiAoIWNhcGFibGUoQ0FQX01LTk9EKSkKIAkJcmV0dXJuIC1YRlNfRVJST1IoRVBFUk0pOwpAQCAtNDUyLDcgKzQ1Miw3IEBACiAJYXR0cmxpc3RfY3Vyc29yX2tlcm5fdAkqY3Vyc29yOwogCXhmc19mc29wX2F0dHJsaXN0X2hhbmRsZXJlcV90IGFsX2hyZXE7CiAJc3RydWN0IGlub2RlCQkqaW5vZGU7Ci0Jdm5vZGVfdAkJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCWNoYXIJCQkqa2J1ZjsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKQEAgLTQ3Miw4ICs0NzIsOCBAQAogCQlnb3RvIG91dF92bl9yZWxlOwogCiAJY3Vyc29yID0gKGF0dHJsaXN0X2N1cnNvcl9rZXJuX3QgKikmYWxfaHJlcS5wb3M7Ci0JVk9QX0FUVFJfTElTVCh2cCwga2J1ZiwgYWxfaHJlcS5idWZsZW4sIGFsX2hyZXEuZmxhZ3MsCi0JCQljdXJzb3IsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYXR0cl9saXN0KHZwLCBrYnVmLCBhbF9ocmVxLmJ1ZmxlbiwgYWxfaHJlcS5mbGFncywKKwkJCQkJY3Vyc29yLCBOVUxMKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2tmcmVlOwogCkBAIC00OTAsNyArNDkwLDcgQEAKIAogU1RBVElDIGludAogeGZzX2F0dHJtdWx0aV9hdHRyX2dldCgKLQlzdHJ1Y3Qgdm5vZGUJCSp2cCwKKwliaHZfdm5vZGVfdAkJKnZwLAogCWNoYXIJCQkqbmFtZSwKIAljaGFyCQkJX191c2VyICp1YnVmLAogCV9fdWludDMyX3QJCSpsZW4sCkBAIC01MDUsNyArNTA1LDcgQEAKIAlpZiAoIWtidWYpCiAJCXJldHVybiBFTk9NRU07CiAKLQlWT1BfQVRUUl9HRVQodnAsIG5hbWUsIGtidWYsIGxlbiwgZmxhZ3MsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYXR0cl9nZXQodnAsIG5hbWUsIGtidWYsIGxlbiwgZmxhZ3MsIE5VTEwpOwogCWlmIChlcnJvcikKIAkJZ290byBvdXRfa2ZyZWU7CiAKQEAgLTUxOSw3ICs1MTksNyBAQAogCiBTVEFUSUMgaW50CiB4ZnNfYXR0cm11bHRpX2F0dHJfc2V0KAotCXN0cnVjdCB2bm9kZQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJY2hhcgkJCSpuYW1lLAogCWNvbnN0IGNoYXIJCV9fdXNlciAqdWJ1ZiwKIAlfX3VpbnQzMl90CQlsZW4sCkBAIC01NDIsNyArNTQyLDcgQEAKIAlpZiAoY29weV9mcm9tX3VzZXIoa2J1ZiwgdWJ1ZiwgbGVuKSkKIAkJZ290byBvdXRfa2ZyZWU7CiAJCQkKLQlWT1BfQVRUUl9TRVQodnAsIG5hbWUsIGtidWYsIGxlbiwgZmxhZ3MsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYXR0cl9zZXQodnAsIG5hbWUsIGtidWYsIGxlbiwgZmxhZ3MsIE5VTEwpOwogCiAgb3V0X2tmcmVlOgogCWtmcmVlKGtidWYpOwpAQCAtNTUxLDIwICs1NTEsMTUgQEAKIAogU1RBVElDIGludAogeGZzX2F0dHJtdWx0aV9hdHRyX3JlbW92ZSgKLQlzdHJ1Y3Qgdm5vZGUJCSp2cCwKKwliaHZfdm5vZGVfdAkJKnZwLAogCWNoYXIJCQkqbmFtZSwKIAlfX3VpbnQzMl90CQlmbGFncykKIHsKLQlpbnQJCQllcnJvcjsKLQotCiAJaWYgKElTX1JET05MWSgmdnAtPnZfaW5vZGUpKQogCQlyZXR1cm4gLUVST0ZTOwogCWlmIChJU19JTU1VVEFCTEUoJnZwLT52X2lub2RlKSB8fCBJU19BUFBFTkQoJnZwLT52X2lub2RlKSkKIAkJcmV0dXJuIEVQRVJNOwotCi0JVk9QX0FUVFJfUkVNT1ZFKHZwLCBuYW1lLCBmbGFncywgTlVMTCwgZXJyb3IpOwotCXJldHVybiBlcnJvcjsKKwlyZXR1cm4gYmh2X3ZvcF9hdHRyX3JlbW92ZSh2cCwgbmFtZSwgZmxhZ3MsIE5VTEwpOwogfQogCiBTVEFUSUMgaW50CkBAIC01NzgsNyArNTczLDcgQEAKIAl4ZnNfYXR0cl9tdWx0aW9wX3QJKm9wczsKIAl4ZnNfZnNvcF9hdHRybXVsdGlfaGFuZGxlcmVxX3QgYW1faHJlcTsKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZTsKLQl2bm9kZV90CQkJKnZwOworCWJodl92bm9kZV90CQkqdnA7CiAJdW5zaWduZWQgaW50CQlpLCBzaXplOwogCWNoYXIJCQkqYXR0cl9uYW1lOwogCkBAIC02NTgsNyArNjUzLDcgQEAKIFNUQVRJQyBpbnQKIHhmc19pb2Nfc3BhY2UoCiAJYmh2X2Rlc2NfdAkJKmJkcCwKLQl2bm9kZV90CQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJc3RydWN0IGZpbGUJCSpmaWxwLAogCWludAkJCWZsYWdzLAogCXVuc2lnbmVkIGludAkJY21kLApAQCAtNjgyLDcgKzY3Nyw3IEBACiAKIFNUQVRJQyBpbnQKIHhmc19pb2NfeGF0dHIoCi0Jdm5vZGVfdAkJCSp2cCwKKwliaHZfdm5vZGVfdAkJKnZwLAogCXhmc19pbm9kZV90CQkqaXAsCiAJc3RydWN0IGZpbGUJCSpmaWxwLAogCXVuc2lnbmVkIGludAkJY21kLApAQCAtNzExLDcgKzcwNiw3IEBACiAJdm9pZAkJCV9fdXNlciAqYXJnKQogewogCWludAkJCWVycm9yOwotCXZub2RlX3QJCQkqdnA7CisJYmh2X3Zub2RlX3QJCSp2cDsKIAl4ZnNfaW5vZGVfdAkJKmlwOwogCXhmc19tb3VudF90CQkqbXA7CiAKQEAgLTk2Miw3ICs5NTcsNyBAQAogU1RBVElDIGludAogeGZzX2lvY19zcGFjZSgKIAliaHZfZGVzY190CQkqYmRwLAotCXZub2RlX3QJCQkqdnAsCisJYmh2X3Zub2RlX3QJCSp2cCwKIAlzdHJ1Y3QgZmlsZQkJKmZpbHAsCiAJaW50CQkJaW9mbGFncywKIAl1bnNpZ25lZCBpbnQJCWNtZCwKQEAgLTExNTMsMTQgKzExNDgsMTQgQEAKIAogU1RBVElDIGludAogeGZzX2lvY194YXR0cigKLQl2bm9kZV90CQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJeGZzX2lub2RlX3QJCSppcCwKIAlzdHJ1Y3QgZmlsZQkJKmZpbHAsCiAJdW5zaWduZWQgaW50CQljbWQsCiAJdm9pZAkJCV9fdXNlciAqYXJnKQogewogCXN0cnVjdCBmc3hhdHRyCQlmYTsKLQlzdHJ1Y3QgdmF0dHIJCSp2YXR0cjsKKwlzdHJ1Y3QgYmh2X3ZhdHRyCSp2YXR0cjsKIAlpbnQJCQllcnJvciA9IDA7CiAJaW50CQkJYXR0cl9mbGFnczsKIAl1bnNpZ25lZCBpbnQJCWZsYWdzOwpAQCAtMTE3Myw3ICsxMTY4LDcgQEAKIAljYXNlIFhGU19JT0NfRlNHRVRYQVRUUjogewogCQl2YXR0ci0+dmFfbWFzayA9IFhGU19BVF9YRkxBR1MgfCBYRlNfQVRfRVhUU0laRSB8IFwKIAkJCQkgWEZTX0FUX05FWFRFTlRTIHwgWEZTX0FUX1BST0pJRDsKLQkJVk9QX0dFVEFUVFIodnAsIHZhdHRyLCAwLCBOVUxMLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3ZvcF9nZXRhdHRyKHZwLCB2YXR0ciwgMCwgTlVMTCk7CiAJCWlmICh1bmxpa2VseShlcnJvcikpIHsKIAkJCWVycm9yID0gLWVycm9yOwogCQkJYnJlYWs7CkBAIC0xMjA2LDcgKzEyMDEsNyBAQAogCQl2YXR0ci0+dmFfZXh0c2l6ZSA9IGZhLmZzeF9leHRzaXplOwogCQl2YXR0ci0+dmFfcHJvamlkICA9IGZhLmZzeF9wcm9qaWQ7CiAKLQkJVk9QX1NFVEFUVFIodnAsIHZhdHRyLCBhdHRyX2ZsYWdzLCBOVUxMLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3ZvcF9zZXRhdHRyKHZwLCB2YXR0ciwgYXR0cl9mbGFncywgTlVMTCk7CiAJCWlmIChsaWtlbHkoIWVycm9yKSkKIAkJCV9fdm5fcmV2YWxpZGF0ZSh2cCwgdmF0dHIpOwkvKiB1cGRhdGUgZmxhZ3MgKi8KIAkJZXJyb3IgPSAtZXJyb3I7CkBAIC0xMjE2LDcgKzEyMTEsNyBAQAogCWNhc2UgWEZTX0lPQ19GU0dFVFhBVFRSQTogewogCQl2YXR0ci0+dmFfbWFzayA9IFhGU19BVF9YRkxBR1MgfCBYRlNfQVRfRVhUU0laRSB8IFwKIAkJCQkgWEZTX0FUX0FORVhURU5UUyB8IFhGU19BVF9QUk9KSUQ7Ci0JCVZPUF9HRVRBVFRSKHZwLCB2YXR0ciwgMCwgTlVMTCwgZXJyb3IpOworCQllcnJvciA9IGJodl92b3BfZ2V0YXR0cih2cCwgdmF0dHIsIDAsIE5VTEwpOwogCQlpZiAodW5saWtlbHkoZXJyb3IpKSB7CiAJCQllcnJvciA9IC1lcnJvcjsKIAkJCWJyZWFrOwpAQCAtMTI2Miw3ICsxMjU3LDcgQEAKIAkJdmF0dHItPnZhX3hmbGFncyA9IHhmc19tZXJnZV9pb2NfeGZsYWdzKGZsYWdzLAogCQkJCQkJCXhmc19pcDJ4ZmxhZ3MoaXApKTsKIAotCQlWT1BfU0VUQVRUUih2cCwgdmF0dHIsIGF0dHJfZmxhZ3MsIE5VTEwsIGVycm9yKTsKKwkJZXJyb3IgPSBiaHZfdm9wX3NldGF0dHIodnAsIHZhdHRyLCBhdHRyX2ZsYWdzLCBOVUxMKTsKIAkJaWYgKGxpa2VseSghZXJyb3IpKQogCQkJX192bl9yZXZhbGlkYXRlKHZwLCB2YXR0cik7CS8qIHVwZGF0ZSBmbGFncyAqLwogCQllcnJvciA9IC1lcnJvcjsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvY3RsMzIuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvY3RsMzIuYwppbmRleCAyNTFiZmU0Li42MDFmMDFjIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19pb2N0bDMyLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9jdGwzMi5jCkBAIC0xMTQsNyArMTE0LDcgQEAKIAl1bnNpZ25lZCBsb25nCWFyZykKIHsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gZmlsZS0+Zl9kZW50cnktPmRfaW5vZGU7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CisJYmh2X3Zub2RlX3QJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CiAJaW50CQllcnJvcjsKIAogCXN3aXRjaCAoY21kKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAKIAkJcmV0dXJuIC1FTk9JT0NUTENNRDsKIAl9CiAKLQlWT1BfSU9DVEwodnAsIGlub2RlLCBmaWxlLCBtb2RlLCBjbWQsICh2b2lkIF9fdXNlciAqKWFyZywgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9pb2N0bCh2cCwgaW5vZGUsIGZpbGUsIG1vZGUsIGNtZCwgKHZvaWQgX191c2VyICopYXJnKTsKIAlWTU9ESUZZKHZwKTsKIAogCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvcHMuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvcHMuYwppbmRleCAyZTJlMjc1Li4xMjgxMGJhIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19pb3BzLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9wcy5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCkBAIC0zMiw3ICszMSw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC02MSw3ICs1OSw3IEBACiAgKi8KIHhmc19pbm9kZV90ICoKIHhmc192dG9pKAotCXN0cnVjdCB2bm9kZQkqdnApCisJYmh2X3Zub2RlX3QJKnZwKQogewogCWJodl9kZXNjX3QgICAgICAqYmRwOwogCkBAIC04MCw3ICs3OCw3IEBACiB4ZnNfc3luY2hyb25pemVfYXRpbWUoCiAJeGZzX2lub2RlX3QJKmlwKQogewotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAl2cCA9IFhGU19JVE9WX05VTEwoaXApOwogCWlmICh2cCkgewpAQCAtMjAwLDE0ICsxOTgsMTAgQEAKIFNUQVRJQyB2b2lkCiB4ZnNfdmFsaWRhdGVfZmllbGRzKAogCXN0cnVjdCBpbm9kZQkqaXAsCi0Jc3RydWN0IHZhdHRyCSp2YXR0cikKKwliaHZfdmF0dHJfdAkqdmF0dHIpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpcCk7Ci0JaW50CQllcnJvcjsKLQogCXZhdHRyLT52YV9tYXNrID0gWEZTX0FUX05MSU5LfFhGU19BVF9TSVpFfFhGU19BVF9OQkxPQ0tTOwotCVZPUF9HRVRBVFRSKHZwLCB2YXR0ciwgQVRUUl9MQVpZLCBOVUxMLCBlcnJvcik7Ci0gIAlpZiAobGlrZWx5KCFlcnJvcikpIHsKKwlpZiAoIWJodl92b3BfZ2V0YXR0cih2bl9mcm9tX2lub2RlKGlwKSwgdmF0dHIsIEFUVFJfTEFaWSwgTlVMTCkpIHsKIAkJaXAtPmlfbmxpbmsgPSB2YXR0ci0+dmFfbmxpbms7CiAJCWlwLT5pX2Jsb2NrcyA9IHZhdHRyLT52YV9uYmxvY2tzOwogCkBAIC0yMjUsNyArMjE5LDcgQEAKICAqLwogU1RBVElDIGludAogeGZzX2luaXRfc2VjdXJpdHkoCi0Jc3RydWN0IHZub2RlCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJc3RydWN0IGlub2RlCSpkaXIpCiB7CiAJc3RydWN0IGlub2RlCSppcCA9IHZuX3RvX2lub2RlKHZwKTsKQEAgLTI0MSw3ICsyMzUsNyBAQAogCQlyZXR1cm4gLWVycm9yOwogCX0KIAotCVZPUF9BVFRSX1NFVCh2cCwgbmFtZSwgdmFsdWUsIGxlbmd0aCwgQVRUUl9TRUNVUkUsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfYXR0cl9zZXQodnAsIG5hbWUsIHZhbHVlLCBsZW5ndGgsIEFUVFJfU0VDVVJFLCBOVUxMKTsKIAlpZiAoIWVycm9yKQogCQlWTU9ESUZZKHZwKTsKIApAQCAtMjY0LDEzICsyNTgsMTIgQEAKIAogU1RBVElDIGlubGluZSB2b2lkCiB4ZnNfY2xlYW51cF9pbm9kZSgKLQl2bm9kZV90CQkqZHZwLAotCXZub2RlX3QJCSp2cCwKKwliaHZfdm5vZGVfdAkqZHZwLAorCWJodl92bm9kZV90CSp2cCwKIAlzdHJ1Y3QgZGVudHJ5CSpkZW50cnksCiAJaW50CQltb2RlKQogewogCXN0cnVjdCBkZW50cnkgICB0ZWFyZG93biA9IHt9OwotCWludCAgICAgICAgICAgICBlcnJvcjsKIAogCS8qIE9oLCB0aGUgaG9ycm9yLgogCSAqIElmIHdlIGNhbid0IGFkZCB0aGUgQUNMIG9yIHdlIGZhaWwgaW4KQEAgLTI4MSw5ICsyNzQsOSBAQAogCXRlYXJkb3duLmRfbmFtZSA9IGRlbnRyeS0+ZF9uYW1lOwogCiAJaWYgKFNfSVNESVIobW9kZSkpCi0JICAJVk9QX1JNRElSKGR2cCwgJnRlYXJkb3duLCBOVUxMLCBlcnJvcik7CisJICAJYmh2X3ZvcF9ybWRpcihkdnAsICZ0ZWFyZG93biwgTlVMTCk7CiAJZWxzZQotCQlWT1BfUkVNT1ZFKGR2cCwgJnRlYXJkb3duLCBOVUxMLCBlcnJvcik7CisJCWJodl92b3BfcmVtb3ZlKGR2cCwgJnRlYXJkb3duLCBOVUxMKTsKIAlWTl9SRUxFKHZwKTsKIH0KIApAQCAtMjk1LDggKzI4OCw4IEBACiAJZGV2X3QJCXJkZXYpCiB7CiAJc3RydWN0IGlub2RlCSppcDsKLQl2YXR0cl90CQl2YXR0ciA9IHsgMCB9OwotCXZub2RlX3QJCSp2cCA9IE5VTEwsICpkdnAgPSB2bl9mcm9tX2lub2RlKGRpcik7CisJYmh2X3ZhdHRyX3QJdmF0dHIgPSB7IDAgfTsKKwliaHZfdm5vZGVfdAkqdnAgPSBOVUxMLCAqZHZwID0gdm5fZnJvbV9pbm9kZShkaXIpOwogCXhmc19hY2xfdAkqZGVmYXVsdF9hY2wgPSBOVUxMOwogCWF0dHJleGlzdHNfdAl0ZXN0X2RlZmF1bHRfYWNsID0gX0FDTF9ERUZBVUxUX0VYSVNUUzsKIAlpbnQJCWVycm9yOwpAQCAtMzMwLDEwICszMjMsMTAgQEAKIAkJdmF0dHIudmFfbWFzayB8PSBYRlNfQVRfUkRFVjsKIAkJLypGQUxMVEhST1VHSCovCiAJY2FzZSBTX0lGUkVHOgotCQlWT1BfQ1JFQVRFKGR2cCwgZGVudHJ5LCAmdmF0dHIsICZ2cCwgTlVMTCwgZXJyb3IpOworCQllcnJvciA9IGJodl92b3BfY3JlYXRlKGR2cCwgZGVudHJ5LCAmdmF0dHIsICZ2cCwgTlVMTCk7CiAJCWJyZWFrOwogCWNhc2UgU19JRkRJUjoKLQkJVk9QX01LRElSKGR2cCwgZGVudHJ5LCAmdmF0dHIsICZ2cCwgTlVMTCwgZXJyb3IpOworCQllcnJvciA9IGJodl92b3BfbWtkaXIoZHZwLCBkZW50cnksICZ2YXR0ciwgJnZwLCBOVUxMKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJyb3IgPSBFSU5WQUw7CkBAIC0zOTYsMTQgKzM4OSwxNCBAQAogCXN0cnVjdCBkZW50cnkJKmRlbnRyeSwKIAlzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKIHsKLQlzdHJ1Y3Qgdm5vZGUJKnZwID0gdm5fZnJvbV9pbm9kZShkaXIpLCAqY3ZwOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoZGlyKSwgKmN2cDsKIAlpbnQJCWVycm9yOwogCiAJaWYgKGRlbnRyeS0+ZF9uYW1lLmxlbiA+PSBNQVhOQU1FTEVOKQogCQlyZXR1cm4gRVJSX1BUUigtRU5BTUVUT09MT05HKTsKIAotCVZPUF9MT09LVVAodnAsIGRlbnRyeSwgJmN2cCwgMCwgTlVMTCwgTlVMTCwgZXJyb3IpOwotCWlmIChlcnJvcikgeworCWVycm9yID0gYmh2X3ZvcF9sb29rdXAodnAsIGRlbnRyeSwgJmN2cCwgMCwgTlVMTCwgTlVMTCk7CisJaWYgKHVubGlrZWx5KGVycm9yKSkgewogCQlpZiAodW5saWtlbHkoZXJyb3IgIT0gRU5PRU5UKSkKIAkJCXJldHVybiBFUlJfUFRSKC1lcnJvcik7CiAJCWRfYWRkKGRlbnRyeSwgTlVMTCk7CkBAIC00MjAsOSArNDEzLDkgQEAKIAlzdHJ1Y3QgZGVudHJ5CSpkZW50cnkpCiB7CiAJc3RydWN0IGlub2RlCSppcDsJLyogaW5vZGUgb2YgZ3V5IGJlaW5nIGxpbmtlZCB0byAqLwotCXZub2RlX3QJCSp0ZHZwOwkvKiB0YXJnZXQgZGlyZWN0b3J5IGZvciBuZXcgbmFtZS9saW5rICovCi0Jdm5vZGVfdAkJKnZwOwkvKiB2cCBvZiBuYW1lIGJlaW5nIGxpbmtlZCAqLwotCXZhdHRyX3QJCXZhdHRyOworCWJodl92bm9kZV90CSp0ZHZwOwkvKiB0YXJnZXQgZGlyZWN0b3J5IGZvciBuZXcgbmFtZS9saW5rICovCisJYmh2X3Zub2RlX3QJKnZwOwkvKiB2cCBvZiBuYW1lIGJlaW5nIGxpbmtlZCAqLworCWJodl92YXR0cl90CXZhdHRyOwogCWludAkJZXJyb3I7CiAKIAlpcCA9IG9sZF9kZW50cnktPmRfaW5vZGU7CS8qIGlub2RlIGJlaW5nIGxpbmtlZCB0byAqLwpAQCAtNDMyLDcgKzQyNSw3IEBACiAJdGR2cCA9IHZuX2Zyb21faW5vZGUoZGlyKTsKIAl2cCA9IHZuX2Zyb21faW5vZGUoaXApOwogCi0JVk9QX0xJTksodGR2cCwgdnAsIGRlbnRyeSwgTlVMTCwgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9saW5rKHRkdnAsIHZwLCBkZW50cnksIE5VTEwpOwogCWlmIChsaWtlbHkoIWVycm9yKSkgewogCQlWTU9ESUZZKHRkdnApOwogCQlWTl9IT0xEKHZwKTsKQEAgLTQ0OCwxNCArNDQxLDE0IEBACiAJc3RydWN0IGRlbnRyeQkqZGVudHJ5KQogewogCXN0cnVjdCBpbm9kZQkqaW5vZGU7Ci0Jdm5vZGVfdAkJKmR2cDsJLyogZGlyZWN0b3J5IGNvbnRhaW5pbmcgbmFtZSB0byByZW1vdmUgKi8KLQl2YXR0cl90CQl2YXR0cjsKKwliaHZfdm5vZGVfdAkqZHZwOwkvKiBkaXJlY3RvcnkgY29udGFpbmluZyBuYW1lIHRvIHJlbW92ZSAqLworCWJodl92YXR0cl90CXZhdHRyOwogCWludAkJZXJyb3I7CiAKIAlpbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAlkdnAgPSB2bl9mcm9tX2lub2RlKGRpcik7CiAKLQlWT1BfUkVNT1ZFKGR2cCwgZGVudHJ5LCBOVUxMLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdm9wX3JlbW92ZShkdnAsIGRlbnRyeSwgTlVMTCk7CiAJaWYgKGxpa2VseSghZXJyb3IpKSB7CiAJCXhmc192YWxpZGF0ZV9maWVsZHMoZGlyLCAmdmF0dHIpOwkvKiBzaXplIG5lZWRzIHVwZGF0ZSAqLwogCQl4ZnNfdmFsaWRhdGVfZmllbGRzKGlub2RlLCAmdmF0dHIpOwpAQCAtNDcwLDI3ICs0NjMsMjYgQEAKIAljb25zdCBjaGFyCSpzeW1uYW1lKQogewogCXN0cnVjdCBpbm9kZQkqaXA7Ci0JdmF0dHJfdAkJdmF0dHIgPSB7IDAgfTsKLQl2bm9kZV90CQkqZHZwOwkvKiBkaXJlY3RvcnkgY29udGFpbmluZyBuYW1lIG9mIHN5bWxpbmsgKi8KLQl2bm9kZV90CQkqY3ZwOwkvKiB1c2VkIHRvIGxvb2t1cCBzeW1saW5rIHRvIHB1dCBpbiBkZW50cnkgKi8KKwliaHZfdmF0dHJfdAl2YSA9IHsgMCB9OworCWJodl92bm9kZV90CSpkdnA7CS8qIGRpcmVjdG9yeSBjb250YWluaW5nIG5hbWUgb2Ygc3ltbGluayAqLworCWJodl92bm9kZV90CSpjdnA7CS8qIHVzZWQgdG8gbG9va3VwIHN5bWxpbmsgdG8gcHV0IGluIGRlbnRyeSAqLwogCWludAkJZXJyb3I7CiAKIAlkdnAgPSB2bl9mcm9tX2lub2RlKGRpcik7CiAJY3ZwID0gTlVMTDsKIAotCXZhdHRyLnZhX21vZGUgPSBTX0lGTE5LIHwKKwl2YS52YV9tb2RlID0gU19JRkxOSyB8CiAJCShpcml4X3N5bWxpbmtfbW9kZSA/IDA3NzcgJiB+Y3VycmVudC0+ZnMtPnVtYXNrIDogU19JUldYVUdPKTsKLQl2YXR0ci52YV9tYXNrID0gWEZTX0FUX1RZUEV8WEZTX0FUX01PREU7CisJdmEudmFfbWFzayA9IFhGU19BVF9UWVBFfFhGU19BVF9NT0RFOwogCi0JZXJyb3IgPSAwOwotCVZPUF9TWU1MSU5LKGR2cCwgZGVudHJ5LCAmdmF0dHIsIChjaGFyICopc3ltbmFtZSwgJmN2cCwgTlVMTCwgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9zeW1saW5rKGR2cCwgZGVudHJ5LCAmdmEsIChjaGFyICopc3ltbmFtZSwgJmN2cCwgTlVMTCk7CiAJaWYgKGxpa2VseSghZXJyb3IgJiYgY3ZwKSkgewogCQllcnJvciA9IHhmc19pbml0X3NlY3VyaXR5KGN2cCwgZGlyKTsKIAkJaWYgKGxpa2VseSghZXJyb3IpKSB7CiAJCQlpcCA9IHZuX3RvX2lub2RlKGN2cCk7CiAJCQlkX2luc3RhbnRpYXRlKGRlbnRyeSwgaXApOwotCQkJeGZzX3ZhbGlkYXRlX2ZpZWxkcyhkaXIsICZ2YXR0cik7Ci0JCQl4ZnNfdmFsaWRhdGVfZmllbGRzKGlwLCAmdmF0dHIpOworCQkJeGZzX3ZhbGlkYXRlX2ZpZWxkcyhkaXIsICZ2YSk7CisJCQl4ZnNfdmFsaWRhdGVfZmllbGRzKGlwLCAmdmEpOwogCQl9IGVsc2UgewogCQkJeGZzX2NsZWFudXBfaW5vZGUoZHZwLCBjdnAsIGRlbnRyeSwgMCk7CiAJCX0KQEAgLTUwNCwxMSArNDk2LDExIEBACiAJc3RydWN0IGRlbnRyeQkqZGVudHJ5KQogewogCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7Ci0Jdm5vZGVfdAkJKmR2cCA9IHZuX2Zyb21faW5vZGUoZGlyKTsKLQl2YXR0cl90CQl2YXR0cjsKKwliaHZfdm5vZGVfdAkqZHZwID0gdm5fZnJvbV9pbm9kZShkaXIpOworCWJodl92YXR0cl90CXZhdHRyOwogCWludAkJZXJyb3I7CiAKLQlWT1BfUk1ESVIoZHZwLCBkZW50cnksIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3Bfcm1kaXIoZHZwLCBkZW50cnksIE5VTEwpOwogCWlmIChsaWtlbHkoIWVycm9yKSkgewogCQl4ZnNfdmFsaWRhdGVfZmllbGRzKGlub2RlLCAmdmF0dHIpOwogCQl4ZnNfdmFsaWRhdGVfZmllbGRzKGRpciwgJnZhdHRyKTsKQEAgLTUyNCwxNSArNTE2LDE1IEBACiAJc3RydWN0IGRlbnRyeQkqbmRlbnRyeSkKIHsKIAlzdHJ1Y3QgaW5vZGUJKm5ld19pbm9kZSA9IG5kZW50cnktPmRfaW5vZGU7Ci0Jdm5vZGVfdAkJKmZ2cDsJLyogZnJvbSBkaXJlY3RvcnkgKi8KLQl2bm9kZV90CQkqdHZwOwkvKiB0YXJnZXQgZGlyZWN0b3J5ICovCi0JdmF0dHJfdAkJdmF0dHI7CisJYmh2X3Zub2RlX3QJKmZ2cDsJLyogZnJvbSBkaXJlY3RvcnkgKi8KKwliaHZfdm5vZGVfdAkqdHZwOwkvKiB0YXJnZXQgZGlyZWN0b3J5ICovCisJYmh2X3ZhdHRyX3QJdmF0dHI7CiAJaW50CQllcnJvcjsKIAogCWZ2cCA9IHZuX2Zyb21faW5vZGUob2Rpcik7CiAJdHZwID0gdm5fZnJvbV9pbm9kZShuZGlyKTsKIAotCVZPUF9SRU5BTUUoZnZwLCBvZGVudHJ5LCB0dnAsIG5kZW50cnksIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfcmVuYW1lKGZ2cCwgb2RlbnRyeSwgdHZwLCBuZGVudHJ5LCBOVUxMKTsKIAlpZiAobGlrZWx5KCFlcnJvcikpIHsKIAkJaWYgKG5ld19pbm9kZSkKIAkJCXhmc192YWxpZGF0ZV9maWVsZHMobmV3X2lub2RlLCAmdmF0dHIpOwpAQCAtNTUzLDcgKzU0NSw3IEBACiAJc3RydWN0IGRlbnRyeQkJKmRlbnRyeSwKIAlzdHJ1Y3QgbmFtZWlkYXRhCSpuZCkKIHsKLQl2bm9kZV90CQkJKnZwOworCWJodl92bm9kZV90CQkqdnA7CiAJdWlvX3QJCQkqdWlvOwogCWlvdmVjX3QJCQlpb3Y7CiAJaW50CQkJZXJyb3I7CkBAIC01ODYsOCArNTc4LDggQEAKIAl1aW8tPnVpb19yZXNpZCA9IE1BWFBBVEhMRU47CiAJdWlvLT51aW9faW92Y250ID0gMTsKIAotCVZPUF9SRUFETElOSyh2cCwgdWlvLCAwLCBOVUxMLCBlcnJvcik7Ci0JaWYgKGVycm9yKSB7CisJZXJyb3IgPSBiaHZfdm9wX3JlYWRsaW5rKHZwLCB1aW8sIDAsIE5VTEwpOworCWlmICh1bmxpa2VseShlcnJvcikpIHsKIAkJa2ZyZWUobGluayk7CiAJCWxpbmsgPSBFUlJfUFRSKC1lcnJvcik7CiAJfSBlbHNlIHsKQEAgLTYxOCwxMiArNjEwLDcgQEAKIAlpbnQJCW1vZGUsCiAJc3RydWN0IG5hbWVpZGF0YSAqbmQpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7Ci0JaW50CQllcnJvcjsKLQotCW1vZGUgPDw9IDY7CQkvKiBjb252ZXJ0IGZyb20gbGludXggdG8gdm5vZGUgYWNjZXNzIGJpdHMgKi8KLQlWT1BfQUNDRVNTKHZwLCBtb2RlLCBOVUxMLCBlcnJvcik7Ci0JcmV0dXJuIC1lcnJvcjsKKwlyZXR1cm4gLWJodl92b3BfYWNjZXNzKHZuX2Zyb21faW5vZGUoaW5vZGUpLCBtb2RlIDw8IDYsIE5VTEwpOwogfQogI2Vsc2UKICNkZWZpbmUgeGZzX3ZuX3Blcm1pc3Npb24gTlVMTApAQCAtNjM2LDE0ICs2MjMsMTQgQEAKIAlzdHJ1Y3Qga3N0YXQJKnN0YXQpCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKLQl2bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAlpbnQJCWVycm9yID0gMDsKIAogCWlmICh1bmxpa2VseSh2cC0+dl9mbGFnICYgVk1PRElGSUVEKSkKIAkJZXJyb3IgPSB2bl9yZXZhbGlkYXRlKHZwKTsKIAlpZiAoIWVycm9yKQogCQlnZW5lcmljX2ZpbGxhdHRyKGlub2RlLCBzdGF0KTsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gLWVycm9yOwogfQogCiBTVEFUSUMgaW50CkBAIC02NTMsOCArNjQwLDggQEAKIHsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCXVuc2lnbmVkIGludAlpYV92YWxpZCA9IGF0dHItPmlhX3ZhbGlkOwotCXZub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwotCXZhdHRyX3QJCXZhdHRyID0geyAwIH07CisJYmh2X3Zub2RlX3QJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CisJYmh2X3ZhdHRyX3QJdmF0dHIgPSB7IDAgfTsKIAlpbnQJCWZsYWdzID0gMDsKIAlpbnQJCWVycm9yOwogCkBAIC02OTcsNyArNjg0LDcgQEAKIAkJZmxhZ3MgfD0gQVRUUl9OT05CTE9DSzsKICNlbmRpZgogCi0JVk9QX1NFVEFUVFIodnAsICZ2YXR0ciwgZmxhZ3MsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3Bfc2V0YXR0cih2cCwgJnZhdHRyLCBmbGFncywgTlVMTCk7CiAJaWYgKGxpa2VseSghZXJyb3IpKQogCQlfX3ZuX3JldmFsaWRhdGUodnAsICZ2YXR0cik7CiAJcmV0dXJuIC1lcnJvcjsKQEAgLTcxOCw3ICs3MDUsNyBAQAogCXNpemVfdAkJc2l6ZSwKIAlpbnQJCWZsYWdzKQogewotCXZub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGRlbnRyeS0+ZF9pbm9kZSk7CiAJY2hhcgkJKmF0dHIgPSAoY2hhciAqKW5hbWU7CiAJYXR0cm5hbWVzX3QJKm5hbWVzcDsKIAlpbnQJCXhmbGFncyA9IDA7CkBAIC03NDgsNyArNzM1LDcgQEAKIAl2b2lkCQkqZGF0YSwKIAlzaXplX3QJCXNpemUpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShkZW50cnktPmRfaW5vZGUpOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKTsKIAljaGFyCQkqYXR0ciA9IChjaGFyICopbmFtZTsKIAlhdHRybmFtZXNfdAkqbmFtZXNwOwogCWludAkJeGZsYWdzID0gMDsKQEAgLTc3Nyw3ICs3NjQsNyBAQAogCWNoYXIJCQkqZGF0YSwKIAlzaXplX3QJCQlzaXplKQogewotCXZub2RlX3QJCQkqdnAgPSB2bl9mcm9tX2lub2RlKGRlbnRyeS0+ZF9pbm9kZSk7CisJYmh2X3Zub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKTsKIAlpbnQJCQllcnJvciwgeGZsYWdzID0gQVRUUl9LRVJOQU1FTFM7CiAJc3NpemVfdAkJCXJlc3VsdDsKIApAQCAtNzk2LDcgKzc4Myw3IEBACiAJc3RydWN0IGRlbnRyeQkqZGVudHJ5LAogCWNvbnN0IGNoYXIJKm5hbWUpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gdm5fZnJvbV9pbm9kZShkZW50cnktPmRfaW5vZGUpOworCWJodl92bm9kZV90CSp2cCA9IHZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKTsKIAljaGFyCQkqYXR0ciA9IChjaGFyICopbmFtZTsKIAlhdHRybmFtZXNfdAkqbmFtZXNwOwogCWludAkJeGZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2xpbnV4LmggYi9mcy94ZnMvbGludXgtMi42L3hmc19saW51eC5oCmluZGV4IGU5ZmU0M2QuLmFhMjZhYjkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2xpbnV4LmgKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfbGludXguaApAQCAtMTM0LDE0ICsxMzQsMjEgQEAKICNkZWZpbmUgeGZzX2J1Zl9hZ2VfY2VudGlzZWNzCXhmc19wYXJhbXMueGZzX2J1Zl9hZ2UudmFsCiAjZGVmaW5lIHhmc19pbmhlcml0X25vc3ltbGlua3MJeGZzX3BhcmFtcy5pbmhlcml0X25vc3ltLnZhbAogI2RlZmluZSB4ZnNfcm90b3JzdGVwCQl4ZnNfcGFyYW1zLnJvdG9yc3RlcC52YWwKKyNkZWZpbmUgeGZzX2luaGVyaXRfbm9kZWZyYWcJeGZzX3BhcmFtcy5pbmhlcml0X25vZGZyZy52YWwKIAotI2lmbmRlZiByYXdfc21wX3Byb2Nlc3Nvcl9pZAotI2RlZmluZSByYXdfc21wX3Byb2Nlc3Nvcl9pZCgpCXNtcF9wcm9jZXNzb3JfaWQoKQotI2VuZGlmCi0jZGVmaW5lIGN1cnJlbnRfY3B1KCkJCXJhd19zbXBfcHJvY2Vzc29yX2lkKCkKKyNkZWZpbmUgY3VycmVudF9jcHUoKQkJKHJhd19zbXBfcHJvY2Vzc29yX2lkKCkpCiAjZGVmaW5lIGN1cnJlbnRfcGlkKCkJCShjdXJyZW50LT5waWQpCiAjZGVmaW5lIGN1cnJlbnRfZnN1aWQoY3JlZCkJKGN1cnJlbnQtPmZzdWlkKQogI2RlZmluZSBjdXJyZW50X2ZzZ2lkKGNyZWQpCShjdXJyZW50LT5mc2dpZCkKKyNkZWZpbmUgY3VycmVudF9zZXRfZmxhZ3MoZikJKGN1cnJlbnQtPmZsYWdzIHw9IChmKSkKKyNkZWZpbmUgY3VycmVudF90ZXN0X2ZsYWdzKGYpCShjdXJyZW50LT5mbGFncyAmIChmKSkKKyNkZWZpbmUgY3VycmVudF9jbGVhcl9mbGFncyhmKQkoY3VycmVudC0+ZmxhZ3MgJiB+KGYpKQorI2RlZmluZSBjdXJyZW50X3NldF9mbGFnc19uZXN0ZWQoc3AsIGYpCQlcCisJCSgqKHNwKSA9IGN1cnJlbnQtPmZsYWdzLCBjdXJyZW50LT5mbGFncyB8PSAoZikpCisjZGVmaW5lIGN1cnJlbnRfY2xlYXJfZmxhZ3NfbmVzdGVkKHNwLCBmKQlcCisJCSgqKHNwKSA9IGN1cnJlbnQtPmZsYWdzLCBjdXJyZW50LT5mbGFncyAmPSB+KGYpKQorI2RlZmluZSBjdXJyZW50X3Jlc3RvcmVfZmxhZ3NfbmVzdGVkKHNwLCBmKQlcCisJCShjdXJyZW50LT5mbGFncyA9ICgoY3VycmVudC0+ZmxhZ3MgJiB+KGYpKSB8ICgqKHNwKSAmIChmKSkpKQogCiAjZGVmaW5lIE5CUFAJCVBBR0VfU0laRQogI2RlZmluZSBEUFBTSEZUCQkoUEFHRV9TSElGVCAtIDkpCkBAIC0xODcsMjUgKzE5NCw5IEBACiAvKiBieXRlcyB0byBjbGlja3MgKi8KICNkZWZpbmUgYnRvYyh4KSAgICAgICAgICgoKF9fcHN1bnNpZ25lZF90KSh4KSsoTkJQQy0xKSk+PkJQQ1NISUZUKQogCi0jaWZuZGVmIEVOT0FUVFIKICNkZWZpbmUgRU5PQVRUUgkJRU5PREFUQQkJLyogQXR0cmlidXRlIG5vdCBmb3VuZCAqLwotI2VuZGlmCi0KLS8qIE5vdGU6IEVXUk9OR0ZTIG5ldmVyIHZpc2libGUgb3V0c2lkZSB0aGUga2VybmVsICovCi0jZGVmaW5lCUVXUk9OR0ZTCUVJTlZBTAkJLyogTW91bnQgd2l0aCB3cm9uZyBmaWxlc3lzdGVtIHR5cGUgKi8KLQotLyoKLSAqIFhYWCBFRlNDT1JSVVBURUQgbmVlZHMgYSByZWFsIHZhbHVlIGluIGVycm5vLmguIGFzbS1pMzg2L2Vycm5vLmggd29uJ3QKLSAqICAgICByZXR1cm4gY29kZXMgb3V0IG9mIGl0cyBrbm93biByYW5nZSBpbiBlcnJuby4KLSAqIFhYWCBBbHNvIG5vdGU6IG5lZWRzIHRvIGJlIDwgMTAwMCBhbmQgZmFpcmx5IHVuaXF1ZSBvbiBMaW51eCAobXVzdG4ndAotICogICAgIGNvbmZsaWN0IHdpdGggYW55IGNvZGUgd2UgdXNlIGFscmVhZHkgb3IgYW55IGNvZGUgYSBkcml2ZXIgbWF5IHVzZSkKLSAqIFhYWCBTb21lIG9wdGlvbnMgKGN1cnJlbnRseSB3ZSBkbyAjMik6Ci0gKgkxLyBOZXcgZXJyb3IgY29kZSBbIkZpbGVzeXN0ZW0gaXMgY29ycnVwdGVkIiwgX2FmdGVyXyBnbGliYyB1cGRhdGVkXQotICoJMi8gOTkwIFsiVW5rbm93biBlcnJvciA5OTAiXQotICoJMy8gRVVDTEVBTiBbIlN0cnVjdHVyZSBuZWVkcyBjbGVhbmluZyJdCi0gKgk0LyBDb252ZXJ0IEVGU0NPUlJVUFRFRCB0byBFSU8gW2p1c3QgcHJpb3IgdG8gcmV0dXJuIGludG8gdXNlcnNwYWNlXQotICovCi0jZGVmaW5lIEVGU0NPUlJVUFRFRCAgICA5OTAJCS8qIEZpbGVzeXN0ZW0gaXMgY29ycnVwdGVkICovCisjZGVmaW5lIEVXUk9OR0ZTCUVJTlZBTAkJLyogTW91bnQgd2l0aCB3cm9uZyBmaWxlc3lzdGVtIHR5cGUgKi8KKyNkZWZpbmUgRUZTQ09SUlVQVEVECUVVQ0xFQU4JCS8qIEZpbGVzeXN0ZW0gaXMgY29ycnVwdGVkICovCiAKICNkZWZpbmUgU1lOQ0hST05JWkUoKQliYXJyaWVyKCkKICNkZWZpbmUgX19yZXR1cm5fYWRkcmVzcyBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2xydy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfbHJ3LmMKaW5kZXggNjdlZmUzMy4uNWQ5Y2ZkOSAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfbHJ3LmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfbHJ3LmMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKQEAgLTMyLDcgKzMxLDYgQEAKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTIwNiw3ICsyMDQsNyBAQAogCXhmc19mc2l6ZV90CQluOwogCXhmc19pbm9kZV90CQkqaXA7CiAJeGZzX21vdW50X3QJCSptcDsKLQl2bm9kZV90CQkJKnZwOworCWJodl92bm9kZV90CQkqdnA7CiAJdW5zaWduZWQgbG9uZwkJc2VnOwogCiAJaXAgPSBYRlNfQkhWVE9JKGJkcCk7CkBAIC0yNTgsNyArMjU2LDcgQEAKIAogCWlmIChETV9FVkVOVF9FTkFCTEVEKHZwLT52X3Zmc3AsIGlwLCBETV9FVkVOVF9SRUFEKSAmJgogCSAgICAhKGlvZmxhZ3MgJiBJT19JTlZJUykpIHsKLQkJdnJ3bG9ja190IGxvY2t0eXBlID0gVlJXTE9DS19SRUFEOworCQliaHZfdnJ3bG9ja190IGxvY2t0eXBlID0gVlJXTE9DS19SRUFEOwogCQlpbnQgZG1mbGFncyA9IEZJTFBfREVMQVlfRkxBRyhmaWxlKSB8IERNX1NFTV9GTEFHX1JEKGlvZmxhZ3MpOwogCiAJCXJldCA9IC1YRlNfU0VORF9EQVRBKG1wLCBETV9FVkVOVF9SRUFELApAQCAtMjcxLDcgKzI2OSw3IEBACiAJfQogCiAJaWYgKHVubGlrZWx5KChpb2ZsYWdzICYgSU9fSVNESVJFQ1QpICYmIFZOX0NBQ0hFRCh2cCkpKQotCQlWT1BfRkxVU0hJTlZBTF9QQUdFUyh2cCwgY3Rvb2ZmKG9mZnRvY3QoKm9mZnNldCkpLAorCQliaHZfdm9wX2ZsdXNoaW52YWxfcGFnZXModnAsIGN0b29mZihvZmZ0b2N0KCpvZmZzZXQpKSwKIAkJCQkJCS0xLCBGSV9SRU1BUEZfTE9DS0VEKTsKIAogCXhmc19yd19lbnRlcl90cmFjZShYRlNfUkVBRF9FTlRFUiwgJmlwLT5pX2lvY29yZSwKQEAgLTMxMyw3ICszMTEsNyBAQAogCiAJaWYgKERNX0VWRU5UX0VOQUJMRUQoQkhWX1RPX1ZOT0RFKGJkcCktPnZfdmZzcCwgaXAsIERNX0VWRU5UX1JFQUQpICYmCiAJICAgICghKGlvZmxhZ3MgJiBJT19JTlZJUykpKSB7Ci0JCXZyd2xvY2tfdCBsb2NrdHlwZSA9IFZSV0xPQ0tfUkVBRDsKKwkJYmh2X3Zyd2xvY2tfdCBsb2NrdHlwZSA9IFZSV0xPQ0tfUkVBRDsKIAkJaW50IGVycm9yOwogCiAJCWVycm9yID0gWEZTX1NFTkRfREFUQShtcCwgRE1fRVZFTlRfUkVBRCwgQkhWX1RPX1ZOT0RFKGJkcCksCkBAIC0zNTcsNyArMzU1LDcgQEAKIAogCWlmIChETV9FVkVOVF9FTkFCTEVEKEJIVl9UT19WTk9ERShiZHApLT52X3Zmc3AsIGlwLCBETV9FVkVOVF9SRUFEKSAmJgogCSAgICAoIShpb2ZsYWdzICYgSU9fSU5WSVMpKSkgewotCQl2cndsb2NrX3QgbG9ja3R5cGUgPSBWUldMT0NLX1JFQUQ7CisJCWJodl92cndsb2NrX3QgbG9ja3R5cGUgPSBWUldMT0NLX1JFQUQ7CiAJCWludCBlcnJvcjsKIAogCQllcnJvciA9IFhGU19TRU5EX0RBVEEobXAsIERNX0VWRU5UX1JFQUQsIEJIVl9UT19WTk9ERShiZHApLApAQCAtNDAxLDcgKzM5OSw3IEBACiAKIAlpZiAoRE1fRVZFTlRfRU5BQkxFRChCSFZfVE9fVk5PREUoYmRwKS0+dl92ZnNwLCBpcCwgRE1fRVZFTlRfV1JJVEUpICYmCiAJICAgICghKGlvZmxhZ3MgJiBJT19JTlZJUykpKSB7Ci0JCXZyd2xvY2tfdCBsb2NrdHlwZSA9IFZSV0xPQ0tfV1JJVEU7CisJCWJodl92cndsb2NrX3QgbG9ja3R5cGUgPSBWUldMT0NLX1dSSVRFOwogCQlpbnQgZXJyb3I7CiAKIAkJZXJyb3IgPSBYRlNfU0VORF9EQVRBKG1wLCBETV9FVkVOVF9XUklURSwgQkhWX1RPX1ZOT0RFKGJkcCksCkBAIC00NTgsNyArNDU2LDcgQEAKIAlsYXN0X2ZzYiA9IFhGU19CX1RPX0ZTQlQobXAsIGlzaXplKTsKIAluaW1hcHMgPSAxOwogCWVycm9yID0gWEZTX0JNQVBJKG1wLCBOVUxMLCBpbywgbGFzdF9mc2IsIDEsIDAsIE5VTEwsIDAsICZpbWFwLAotCQkJICAmbmltYXBzLCBOVUxMKTsKKwkJCSAgJm5pbWFwcywgTlVMTCwgTlVMTCk7CiAJaWYgKGVycm9yKSB7CiAJCXJldHVybiBlcnJvcjsKIAl9CkBAIC00OTksNyArNDk3LDcgQEAKIAogaW50CQkJCQkvKiBlcnJvciAocG9zaXRpdmUpICovCiB4ZnNfemVyb19lb2YoCi0Jdm5vZGVfdAkJKnZwLAorCWJodl92bm9kZV90CSp2cCwKIAl4ZnNfaW9jb3JlX3QJKmlvLAogCXhmc19vZmZfdAlvZmZzZXQsCQkvKiBzdGFydGluZyBJL08gb2Zmc2V0ICovCiAJeGZzX2ZzaXplX3QJaXNpemUsCQkvKiBjdXJyZW50IGlub2RlIHNpemUgKi8KQEAgLTUxMCw3ICs1MDgsNiBAQAogCXhmc19maWxlb2ZmX3QJZW5kX3plcm9fZnNiOwogCXhmc19maWxlb2ZmX3QJemVyb19jb3VudF9mc2I7CiAJeGZzX2ZpbGVvZmZfdAlsYXN0X2ZzYjsKLQl4ZnNfZXh0bGVuX3QJYnVmX2xlbl9mc2I7CiAJeGZzX21vdW50X3QJKm1wID0gaW8tPmlvX21vdW50OwogCWludAkJbmltYXBzOwogCWludAkJZXJyb3IgPSAwOwpAQCAtNTU2LDcgKzU1Myw3IEBACiAJCW5pbWFwcyA9IDE7CiAJCXplcm9fY291bnRfZnNiID0gZW5kX3plcm9fZnNiIC0gc3RhcnRfemVyb19mc2IgKyAxOwogCQllcnJvciA9IFhGU19CTUFQSShtcCwgTlVMTCwgaW8sIHN0YXJ0X3plcm9fZnNiLCB6ZXJvX2NvdW50X2ZzYiwKLQkJCQkgIDAsIE5VTEwsIDAsICZpbWFwLCAmbmltYXBzLCBOVUxMKTsKKwkJCQkgIDAsIE5VTEwsIDAsICZpbWFwLCAmbmltYXBzLCBOVUxMLCBOVUxMKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlBU1NFUlQoaXNtcmxvY2tlZChpby0+aW9fbG9jaywgTVJfVVBEQVRFKSk7CiAJCQlBU1NFUlQoaXNtcmxvY2tlZChpby0+aW9faW9sb2NrLCBNUl9VUERBVEUpKTsKQEAgLTU3OSwxNiArNTc2LDcgQEAKIAkJfQogCiAJCS8qCi0JCSAqIFRoZXJlIGFyZSBibG9ja3MgaW4gdGhlIHJhbmdlIHJlcXVlc3RlZC4KLQkJICogWmVybyB0aGVtIGEgc2luZ2xlIHdyaXRlIGF0IGEgdGltZS4gIFdlIGFjdHVhbGx5Ci0JCSAqIGRvbid0IHplcm8gdGhlIGVudGlyZSByYW5nZSByZXR1cm5lZCBpZiBpdCBpcwotCQkgKiB0b28gYmlnIGFuZCBzaW1wbHkgbG9vcCBhcm91bmQgdG8gZ2V0IHRoZSByZXN0LgotCQkgKiBUaGF0IGlzIG5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgdG8gZG8sIGJ1dCBpdAotCQkgKiBpcyBzaW1wbGUgYW5kIHRoaXMgcGF0aCBzaG91bGQgbm90IGJlIGV4ZXJjaXNlZCBvZnRlbi4KLQkJICovCi0JCWJ1Zl9sZW5fZnNiID0gWEZTX0ZJTEJMS1NfTUlOKGltYXAuYnJfYmxvY2tjb3VudCwKLQkJCQkJICAgICAgbXAtPm1fd3JpdGVpb19ibG9ja3MgPDwgOCk7Ci0JCS8qCisJCSAqIFRoZXJlIGFyZSBibG9ja3Mgd2UgbmVlZCB0byB6ZXJvLgogCQkgKiBEcm9wIHRoZSBpbm9kZSBsb2NrIHdoaWxlIHdlJ3JlIGRvaW5nIHRoZSBJL08uCiAJCSAqIFdlJ2xsIHN0aWxsIGhhdmUgdGhlIGlvbG9jayB0byBwcm90ZWN0IHVzLgogCQkgKi8KQEAgLTU5NiwxNCArNTg0LDEzIEBACiAKIAkJZXJyb3IgPSB4ZnNfaW96ZXJvKGlwLAogCQkJCSAgIFhGU19GU0JfVE9fQihtcCwgc3RhcnRfemVyb19mc2IpLAotCQkJCSAgIFhGU19GU0JfVE9fQihtcCwgYnVmX2xlbl9mc2IpLAorCQkJCSAgIFhGU19GU0JfVE9fQihtcCwgaW1hcC5icl9ibG9ja2NvdW50KSwKIAkJCQkgICBlbmRfc2l6ZSk7Ci0KIAkJaWYgKGVycm9yKSB7CiAJCQlnb3RvIG91dF9sb2NrOwogCQl9CiAKLQkJc3RhcnRfemVyb19mc2IgPSBpbWFwLmJyX3N0YXJ0b2ZmICsgYnVmX2xlbl9mc2I7CisJCXN0YXJ0X3plcm9fZnNiID0gaW1hcC5icl9zdGFydG9mZiArIGltYXAuYnJfYmxvY2tjb3VudDsKIAkJQVNTRVJUKHN0YXJ0X3plcm9fZnNiIDw9IChlbmRfemVyb19mc2IgKyAxKSk7CiAKIAkJWEZTX0lMT0NLKG1wLCBpbywgWEZTX0lMT0NLX0VYQ0x8WEZTX0VYVFNJWkVfUkQpOwpAQCAtNjM3LDExICs2MjQsMTEgQEAKIAlzc2l6ZV90CQkJcmV0ID0gMCwgZXJyb3IgPSAwOwogCXhmc19mc2l6ZV90CQlpc2l6ZSwgbmV3X3NpemU7CiAJeGZzX2lvY29yZV90CQkqaW87Ci0Jdm5vZGVfdAkJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCXVuc2lnbmVkIGxvbmcJCXNlZzsKIAlpbnQJCQlpb2xvY2s7CiAJaW50CQkJZXZlbnRzZW50ID0gMDsKLQl2cndsb2NrX3QJCWxvY2t0eXBlOworCWJodl92cndsb2NrX3QJCWxvY2t0eXBlOwogCXNpemVfdAkJCW9jb3VudCA9IDAsIGNvdW50OwogCWxvZmZfdAkJCXBvczsKIAlpbnQJCQluZWVkX2lfbXV0ZXggPSAxLCBuZWVkX2ZsdXNoID0gMDsKQEAgLTY3OSwxMSArNjY2LDExIEBACiAJaW8gPSAmeGlwLT5pX2lvY29yZTsKIAltcCA9IGlvLT5pb19tb3VudDsKIAorCXZmc193YWl0X2Zvcl9mcmVlemUodnAtPnZfdmZzcCwgU0JfRlJFRVpFX1dSSVRFKTsKKwogCWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkKIAkJcmV0dXJuIC1FSU87CiAKLQlmc19jaGVja19mcm96ZW4odnAtPnZfdmZzcCwgU0JfRlJFRVpFX1dSSVRFKTsKLQogCWlmIChpb2ZsYWdzICYgSU9fSVNESVJFQ1QpIHsKIAkJeGZzX2J1ZnRhcmdfdAkqdGFyZ2V0ID0KIAkJCSh4aXAtPmlfZC5kaV9mbGFncyAmIFhGU19ESUZMQUdfUkVBTFRJTUUpID8KQEAgLTgxNCw3ICs4MDEsNyBAQAogCQlpZiAobmVlZF9mbHVzaCkgewogCQkJeGZzX2ludmFsX2NhY2hlZF90cmFjZShpbywgcG9zLCAtMSwKIAkJCQkJY3Rvb2ZmKG9mZnRvY3QocG9zKSksIC0xKTsKLQkJCVZPUF9GTFVTSElOVkFMX1BBR0VTKHZwLCBjdG9vZmYob2ZmdG9jdChwb3MpKSwKKwkJCWJodl92b3BfZmx1c2hpbnZhbF9wYWdlcyh2cCwgY3Rvb2ZmKG9mZnRvY3QocG9zKSksCiAJCQkJCS0xLCBGSV9SRU1BUEZfTE9DS0VEKTsKIAkJfQogCkBAIC05MDMsNzkgKzg5MCw5IEBACiAKIAkvKiBIYW5kbGUgdmFyaW91cyBTWU5DLXR5cGUgd3JpdGVzICovCiAJaWYgKChmaWxlLT5mX2ZsYWdzICYgT19TWU5DKSB8fCBJU19TWU5DKGlub2RlKSkgewotCQkvKgotCQkgKiBJZiB3ZSdyZSB0cmVhdGluZyB0aGlzIGFzIE9fRFNZTkMgYW5kIHdlIGhhdmUgbm90IHVwZGF0ZWQgdGhlCi0JCSAqIHNpemUsIGZvcmNlIHRoZSBsb2cuCi0JCSAqLwotCQlpZiAoIShtcC0+bV9mbGFncyAmIFhGU19NT1VOVF9PU1lOQ0lTT1NZTkMpICYmCi0JCSAgICAhKHhpcC0+aV91cGRhdGVfc2l6ZSkpIHsKLQkJCXhmc19pbm9kZV9sb2dfaXRlbV90CSppaXAgPSB4aXAtPmlfaXRlbXA7Ci0KLQkJCS8qCi0JCQkgKiBJZiBhbiBhbGxvY2F0aW9uIHRyYW5zYWN0aW9uIG9jY3VycmVkCi0JCQkgKiB3aXRob3V0IGV4dGVuZGluZyB0aGUgc2l6ZSwgdGhlbiB3ZSBoYXZlIHRvIGZvcmNlCi0JCQkgKiB0aGUgbG9nIHVwIHRoZSBwcm9wZXIgcG9pbnQgdG8gZW5zdXJlIHRoYXQgdGhlCi0JCQkgKiBhbGxvY2F0aW9uIGlzIHBlcm1hbmVudC4gIFdlIGNhbid0IGNvdW50IG9uCi0JCQkgKiB0aGUgZmFjdCB0aGF0IGJ1ZmZlcmVkIHdyaXRlcyBsb2NrIG91dCBkaXJlY3QgSS9PCi0JCQkgKiB3cml0ZXMgLSB0aGUgZGlyZWN0IEkvTyB3cml0ZSBjb3VsZCBoYXZlIGV4dGVuZGVkCi0JCQkgKiB0aGUgc2l6ZSBub250cmFuc2FjdGlvbmFsbHksIHRoZW4gZmluaXNoZWQgYmVmb3JlCi0JCQkgKiB3ZSBzdGFydGVkLiAgeGZzX3dyaXRlX2ZpbGUgd2lsbCB0aGluayB0aGF0IHRoZSBmaWxlCi0JCQkgKiBkaWRuJ3QgZ3JvdyBidXQgdGhlIHVwZGF0ZSBpc24ndCBzYWZlIHVubGVzcyB0aGUKLQkJCSAqIHNpemUgY2hhbmdlIGlzIGxvZ2dlZC4KLQkJCSAqCi0JCQkgKiBGb3JjZSB0aGUgbG9nIGlmIHdlJ3ZlIGNvbW1pdHRlZCBhIHRyYW5zYWN0aW9uCi0JCQkgKiBhZ2FpbnN0IHRoZSBpbm9kZSBvciBpZiBzb21lb25lIGVsc2UgaGFzIGFuZAotCQkJICogdGhlIGNvbW1pdCByZWNvcmQgaGFzbid0IGdvbmUgdG8gZGlzayAoZS5nLgotCQkJICogdGhlIGlub2RlIGlzIHBpbm5lZCkuICBUaGlzIGd1YXJhbnRlZXMgdGhhdAotCQkJICogYWxsIGNoYW5nZXMgYWZmZWN0aW5nIHRoZSBpbm9kZSBhcmUgcGVybWFuZW50Ci0JCQkgKiB3aGVuIHdlIHJldHVybi4KLQkJCSAqLwotCQkJaWYgKGlpcCAmJiBpaXAtPmlsaV9sYXN0X2xzbikgewotCQkJCXhmc19sb2dfZm9yY2UobXAsIGlpcC0+aWxpX2xhc3RfbHNuLAotCQkJCQkJWEZTX0xPR19GT1JDRSB8IFhGU19MT0dfU1lOQyk7Ci0JCQl9IGVsc2UgaWYgKHhmc19pcGluY291bnQoeGlwKSA+IDApIHsKLQkJCQl4ZnNfbG9nX2ZvcmNlKG1wLCAoeGZzX2xzbl90KTAsCi0JCQkJCQlYRlNfTE9HX0ZPUkNFIHwgWEZTX0xPR19TWU5DKTsKLQkJCX0KLQotCQl9IGVsc2UgewotCQkJeGZzX3RyYW5zX3QJKnRwOwotCi0JCQkvKgotCQkJICogT19TWU5DIG9yIE9fRFNZTkMgX3dpdGhfIGEgc2l6ZSB1cGRhdGUgYXJlIGhhbmRsZWQKLQkJCSAqIHRoZSBzYW1lIHdheS4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgd3JpdGUgd2FzIHN5bmNocm9ub3VzIHRoZW4gd2UgbmVlZCB0byBtYWtlCi0JCQkgKiBzdXJlIHRoYXQgdGhlIGlub2RlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHBlcm1hbmVudC4KLQkJCSAqIFdlJ2xsIGhhdmUgdXBkYXRlZCB0aGUgdGltZXN0YW1wIGFib3ZlLCBzbyBoZXJlCi0JCQkgKiB3ZSB1c2UgYSBzeW5jaHJvbm91cyB0cmFuc2FjdGlvbiB0byBsb2cgdGhlIGlub2RlLgotCQkJICogSXQncyBub3QgZmFzdCwgYnV0IGl0J3MgbmVjZXNzYXJ5LgotCQkJICoKLQkJCSAqIElmIHRoaXMgYSBkc3luYyB3cml0ZSBhbmQgdGhlIHNpemUgZ290IGNoYW5nZWQKLQkJCSAqIG5vbi10cmFuc2FjdGlvbmFsbHksIHRoZW4gd2UgbmVlZCB0byBlbnN1cmUgdGhhdAotCQkJICogdGhlIHNpemUgY2hhbmdlIGdldHMgbG9nZ2VkIGluIGEgc3luY2hyb25vdXMKLQkJCSAqIHRyYW5zYWN0aW9uLgotCQkJICovCi0KLQkJCXRwID0geGZzX3RyYW5zX2FsbG9jKG1wLCBYRlNfVFJBTlNfV1JJVEVfU1lOQyk7Ci0JCQlpZiAoKGVycm9yID0geGZzX3RyYW5zX3Jlc2VydmUodHAsIDAsCi0JCQkJCQkgICAgICBYRlNfU1dSSVRFX0xPR19SRVMobXApLAotCQkJCQkJICAgICAgMCwgMCwgMCkpKSB7Ci0JCQkJLyogVHJhbnNhY3Rpb24gcmVzZXJ2ZSBmYWlsZWQgKi8KLQkJCQl4ZnNfdHJhbnNfY2FuY2VsKHRwLCAwKTsKLQkJCX0gZWxzZSB7Ci0JCQkJLyogVHJhbnNhY3Rpb24gcmVzZXJ2ZSBzdWNjZXNzZnVsICovCi0JCQkJeGZzX2lsb2NrKHhpcCwgWEZTX0lMT0NLX0VYQ0wpOwotCQkJCXhmc190cmFuc19pam9pbih0cCwgeGlwLCBYRlNfSUxPQ0tfRVhDTCk7Ci0JCQkJeGZzX3RyYW5zX2lob2xkKHRwLCB4aXApOwotCQkJCXhmc190cmFuc19sb2dfaW5vZGUodHAsIHhpcCwgWEZTX0lMT0dfQ09SRSk7Ci0JCQkJeGZzX3RyYW5zX3NldF9zeW5jKHRwKTsKLQkJCQllcnJvciA9IHhmc190cmFuc19jb21taXQodHAsIDAsIE5VTEwpOwotCQkJCXhmc19pdW5sb2NrKHhpcCwgWEZTX0lMT0NLX0VYQ0wpOwotCQkJfQotCQkJaWYgKGVycm9yKQotCQkJCWdvdG8gb3V0X3VubG9ja19pbnRlcm5hbDsKLQkJfQorCQllcnJvciA9IHhmc193cml0ZV9zeW5jX2xvZ2ZvcmNlKG1wLCB4aXApOworCQlpZiAoZXJyb3IpCisJCQlnb3RvIG91dF91bmxvY2tfaW50ZXJuYWw7CiAKIAkJeGZzX3J3dW5sb2NrKGJkcCwgbG9ja3R5cGUpOwogCQlpZiAobmVlZF9pX211dGV4KQpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfbHJ3LmggYi9mcy94ZnMvbGludXgtMi42L3hmc19scncuaAppbmRleCA4ZjQ1Mzk5Li5jNzdlNjJlIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19scncuaAorKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19scncuaApAQCAtMTgsOCArMTgsOCBAQAogI2lmbmRlZiBfX1hGU19MUldfSF9fCiAjZGVmaW5lIF9fWEZTX0xSV19IX18KIAotc3RydWN0IHZub2RlOwogc3RydWN0IGJodl9kZXNjOworc3RydWN0IGJodl92bm9kZTsKIHN0cnVjdCB4ZnNfbW91bnQ7CiBzdHJ1Y3QgeGZzX2lvY29yZTsKIHN0cnVjdCB4ZnNfaW5vZGU7CkBAIC00OSw3ICs0OSw3IEBACiAjZGVmaW5lCVhGU19DVFJVTkM0CQkxNAogI2RlZmluZQlYRlNfQ1RSVU5DNQkJMTUKICNkZWZpbmUJWEZTX0NUUlVOQzYJCTE2Ci0jZGVmaW5lCVhGU19CVU5NQVBJCQkxNworI2RlZmluZQlYRlNfQlVOTUFQCQkxNwogI2RlZmluZQlYRlNfSU5WQUxfQ0FDSEVECTE4CiAjZGVmaW5lCVhGU19ESU9SRF9FTlRFUgkJMTkKICNkZWZpbmUJWEZTX0RJT1dSX0VOVEVSCQkyMApAQCAtODIsNyArODIsNyBAQAogZXh0ZXJuIGludCB4ZnNfYmRzdHJhdF9jYihzdHJ1Y3QgeGZzX2J1ZiAqKTsKIGV4dGVybiBpbnQgeGZzX2Rldl9pc19yZWFkX29ubHkoc3RydWN0IHhmc19tb3VudCAqLCBjaGFyICopOwogCi1leHRlcm4gaW50IHhmc196ZXJvX2VvZihzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHhmc19pb2NvcmUgKiwgeGZzX29mZl90LAorZXh0ZXJuIGludCB4ZnNfemVyb19lb2Yoc3RydWN0IGJodl92bm9kZSAqLCBzdHJ1Y3QgeGZzX2lvY29yZSAqLCB4ZnNfb2ZmX3QsCiAJCQkJeGZzX2ZzaXplX3QsIHhmc19mc2l6ZV90KTsKIGV4dGVybiBzc2l6ZV90IHhmc19yZWFkKHN0cnVjdCBiaHZfZGVzYyAqLCBzdHJ1Y3Qga2lvY2IgKiwKIAkJCQljb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgaW50LApkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3RhdHMuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N0YXRzLmMKaW5kZXggMWYwNTg5YS4uZTQ4MGI2MSAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3RhdHMuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19zdGF0cy5jCkBAIC02Miw3ICs2Miw3IEBACiAJCXdoaWxlIChqIDwgeHN0YXRzW2ldLmVuZHBvaW50KSB7CiAJCQl2YWwgPSAwOwogCQkJLyogc3VtIG92ZXIgYWxsIGNwdXMgKi8KLQkJCWZvcl9lYWNoX2NwdShjKQorCQkJZm9yX2VhY2hfcG9zc2libGVfY3B1KGMpCiAJCQkJdmFsICs9ICooKChfX3UzMiopJnBlcl9jcHUoeGZzc3RhdHMsIGMpICsgaikpOwogCQkJbGVuICs9IHNwcmludGYoYnVmZmVyICsgbGVuLCAiICV1IiwgdmFsKTsKIAkJCWorKzsKQEAgLTcwLDcgKzcwLDcgQEAKIAkJYnVmZmVyW2xlbisrXSA9ICdcbic7CiAJfQogCS8qIGV4dHJhIHByZWNpc2lvbiBjb3VudGVycyAqLwotCWZvcl9lYWNoX2NwdShpKSB7CisJZm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHsKIAkJeHNfeHN0cmF0X2J5dGVzICs9IHBlcl9jcHUoeGZzc3RhdHMsIGkpLnhzX3hzdHJhdF9ieXRlczsKIAkJeHNfd3JpdGVfYnl0ZXMgKz0gcGVyX2NwdSh4ZnNzdGF0cywgaSkueHNfd3JpdGVfYnl0ZXM7CiAJCXhzX3JlYWRfYnl0ZXMgKz0gcGVyX2NwdSh4ZnNzdGF0cywgaSkueHNfcmVhZF9ieXRlczsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3N1cGVyLmMgYi9mcy94ZnMvbGludXgtMi42L3hmc19zdXBlci5jCmluZGV4IDY4ZjQ3OTMuLjliZGVmOWQgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3N1cGVyLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3VwZXIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKQEAgLTMyLDcgKzMxLDYgQEAKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTE1MSw3ICsxNDksNyBAQAogU1RBVElDIF9faW5saW5lX18gdm9pZAogeGZzX3JldmFsaWRhdGVfaW5vZGUoCiAJeGZzX21vdW50X3QJCSptcCwKLQl2bm9kZV90CQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJeGZzX2lub2RlX3QJCSppcCkKIHsKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZSA9IHZuX3RvX2lub2RlKHZwKTsKQEAgLTIwNiw3ICsyMDQsNyBAQAogdm9pZAogeGZzX2luaXRpYWxpemVfdm5vZGUoCiAJYmh2X2Rlc2NfdAkJKmJkcCwKLQl2bm9kZV90CQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJYmh2X2Rlc2NfdAkJKmlub2RlX2JodiwKIAlpbnQJCQl1bmxvY2spCiB7CkBAIC0zMzYsNyArMzM0LDcgQEAKIHhmc19mc19hbGxvY19pbm9kZSgKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sJKnNiKQogewotCXZub2RlX3QJCQkqdnA7CisJYmh2X3Zub2RlX3QJCSp2cDsKIAogCXZwID0ga21lbV96b25lX2FsbG9jKHhmc192bm9kZV96b25lLCBLTV9TTEVFUCk7CiAJaWYgKHVubGlrZWx5KCF2cCkpCkBAIC0zNTksMTMgKzM1NywxMyBAQAogewogCWlmICgoZmxhZ3MgJiAoU0xBQl9DVE9SX1ZFUklGWXxTTEFCX0NUT1JfQ09OU1RSVUNUT1IpKSA9PQogCQkgICAgICBTTEFCX0NUT1JfQ09OU1RSVUNUT1IpCi0JCWlub2RlX2luaXRfb25jZSh2bl90b19pbm9kZSgodm5vZGVfdCAqKXZub2RlKSk7CisJCWlub2RlX2luaXRfb25jZSh2bl90b19pbm9kZSgoYmh2X3Zub2RlX3QgKil2bm9kZSkpOwogfQogCiBTVEFUSUMgaW50CiB4ZnNfaW5pdF96b25lcyh2b2lkKQogewotCXhmc192bm9kZV96b25lID0ga21lbV96b25lX2luaXRfZmxhZ3Moc2l6ZW9mKHZub2RlX3QpLCAieGZzX3Zub2RlX3QiLAorCXhmc192bm9kZV96b25lID0ga21lbV96b25lX2luaXRfZmxhZ3Moc2l6ZW9mKGJodl92bm9kZV90KSwgInhmc192bm9kZSIsCiAJCQkJCUtNX1pPTkVfSFdBTElHTiB8IEtNX1pPTkVfUkVDTEFJTSB8CiAJCQkJCUtNX1pPTkVfU1BSRUFELAogCQkJCQl4ZnNfZnNfaW5vZGVfaW5pdF9vbmNlKTsKQEAgLTQwOSwyMiArNDA3LDE3IEBACiAJc3RydWN0IGlub2RlCQkqaW5vZGUsCiAJaW50CQkJc3luYykKIHsKLQl2bm9kZV90CQkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7CisJYmh2X3Zub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5vZGUpOwogCWludAkJCWVycm9yID0gMCwgZmxhZ3MgPSBGTFVTSF9JTk9ERTsKIAogCWlmICh2cCkgewogCQl2bl90cmFjZV9lbnRyeSh2cCwgX19GVU5DVElPTl9fLCAoaW5zdF90ICopX19yZXR1cm5fYWRkcmVzcyk7CiAJCWlmIChzeW5jKQogCQkJZmxhZ3MgfD0gRkxVU0hfU1lOQzsKLQkJVk9QX0lGTFVTSCh2cCwgZmxhZ3MsIGVycm9yKTsKLQkJaWYgKGVycm9yID09IEVBR0FJTikgewotCQkJaWYgKHN5bmMpCi0JCQkJVk9QX0lGTFVTSCh2cCwgZmxhZ3MgfCBGTFVTSF9MT0csIGVycm9yKTsKLQkJCWVsc2UKLQkJCQllcnJvciA9IDA7Ci0JCX0KKwkJZXJyb3IgPSBiaHZfdm9wX2lmbHVzaCh2cCwgZmxhZ3MpOworCQlpZiAoZXJyb3IgPT0gRUFHQUlOKQorCQkJZXJyb3IgPSBzeW5jPyBiaHZfdm9wX2lmbHVzaCh2cCwgZmxhZ3MgfCBGTFVTSF9MT0cpIDogMDsKIAl9Ci0KIAlyZXR1cm4gLWVycm9yOwogfQogCkBAIC00MzIsOCArNDI1LDcgQEAKIHhmc19mc19jbGVhcl9pbm9kZSgKIAlzdHJ1Y3QgaW5vZGUJCSppbm9kZSkKIHsKLQl2bm9kZV90CQkJKnZwID0gdm5fZnJvbV9pbm9kZShpbm9kZSk7Ci0JaW50CQkJZXJyb3IsIGNhY2hlOworCWJodl92bm9kZV90CQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAogCXZuX3RyYWNlX2VudHJ5KHZwLCBfX0ZVTkNUSU9OX18sIChpbnN0X3QgKilfX3JldHVybl9hZGRyZXNzKTsKIApAQCAtNDQ2LDIwICs0MzgsMTggQEAKIAkgKiBUaGlzIGNhbiBoYXBwZW4gYmVjYXVzZSB4ZnNfaWdldF9jb3JlIGNhbGxzIHhmc19pZGVzdHJveSBpZiB3ZQogCSAqIGZpbmQgYW4gaW5vZGUgd2l0aCBkaV9tb2RlID09IDAgYnV0IHdpdGhvdXQgSUdFVF9DUkVBVEUgc2V0LgogCSAqLwotCWlmICh2cC0+dl9mYmh2KQotCQlWT1BfSU5BQ1RJVkUodnAsIE5VTEwsIGNhY2hlKTsKKwlpZiAoVk5IRUFEKHZwKSkKKwkJYmh2X3ZvcF9pbmFjdGl2ZSh2cCwgTlVMTCk7CiAKIAlWTl9MT0NLKHZwKTsKIAl2cC0+dl9mbGFnICY9IH5WTU9ESUZJRUQ7CiAJVk5fVU5MT0NLKHZwLCAwKTsKIAotCWlmICh2cC0+dl9mYmh2KSB7Ci0JCVZPUF9SRUNMQUlNKHZwLCBlcnJvcik7Ci0JCWlmIChlcnJvcikKLQkJCXBhbmljKCJ2bl9wdXJnZTogY2Fubm90IHJlY2xhaW0iKTsKLQl9CisJaWYgKFZOSEVBRCh2cCkpCisJCWlmIChiaHZfdm9wX3JlY2xhaW0odnApKQorCQkJcGFuaWMoIiVzOiBjYW5ub3QgcmVjbGFpbSAweCVwXG4iLCBfX0ZVTkNUSU9OX18sIHZwKTsKIAotCUFTU0VSVCh2cC0+dl9mYmh2ID09IE5VTEwpOworCUFTU0VSVChWTkhFQUQodnApID09IE5VTEwpOwogCiAjaWZkZWYgWEZTX1ZOT0RFX1RSQUNFCiAJa3RyYWNlX2ZyZWUodnAtPnZfdHJhY2UpOwpAQCAtNDc1LDEzICs0NjUsMTMgQEAKICAqLwogU1RBVElDIHZvaWQKIHhmc19zeW5jZF9xdWV1ZV93b3JrKAotCXN0cnVjdCB2ZnMJKnZmcywKKwlzdHJ1Y3QgYmh2X3ZmcwkqdmZzLAogCXZvaWQJCSpkYXRhLAotCXZvaWQJCSgqc3luY2VyKSh2ZnNfdCAqLCB2b2lkICopKQorCXZvaWQJCSgqc3luY2VyKShiaHZfdmZzX3QgKiwgdm9pZCAqKSkKIHsKLQl2ZnNfc3luY193b3JrX3QJKndvcms7CisJc3RydWN0IGJodl92ZnNfc3luY193b3JrICp3b3JrOwogCi0Jd29yayA9IGttZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCB2ZnNfc3luY193b3JrKSwgS01fU0xFRVApOworCXdvcmsgPSBrbWVtX2FsbG9jKHNpemVvZihzdHJ1Y3QgYmh2X3Zmc19zeW5jX3dvcmspLCBLTV9TTEVFUCk7CiAJSU5JVF9MSVNUX0hFQUQoJndvcmstPndfbGlzdCk7CiAJd29yay0+d19zeW5jZXIgPSBzeW5jZXI7CiAJd29yay0+d19kYXRhID0gZGF0YTsKQEAgLTUwMCw3ICs0OTAsNyBAQAogICovCiBTVEFUSUMgdm9pZAogeGZzX2ZsdXNoX2lub2RlX3dvcmsoCi0JdmZzX3QJCSp2ZnMsCisJYmh2X3Zmc190CSp2ZnMsCiAJdm9pZAkJKmlub2RlKQogewogCWZpbGVtYXBfZmx1c2goKChzdHJ1Y3QgaW5vZGUgKilpbm9kZSktPmlfbWFwcGluZyk7CkBAIC01MTIsNyArNTAyLDcgQEAKIAl4ZnNfaW5vZGVfdAkqaXApCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZSA9IHZuX3RvX2lub2RlKFhGU19JVE9WKGlwKSk7Ci0Jc3RydWN0IHZmcwkqdmZzID0gWEZTX01UT1ZGUyhpcC0+aV9tb3VudCk7CisJc3RydWN0IGJodl92ZnMJKnZmcyA9IFhGU19NVE9WRlMoaXAtPmlfbW91bnQpOwogCiAJaWdyYWIoaW5vZGUpOwogCXhmc19zeW5jZF9xdWV1ZV93b3JrKHZmcywgaW5vZGUsIHhmc19mbHVzaF9pbm9kZV93b3JrKTsKQEAgLTUyNSw3ICs1MTUsNyBAQAogICovCiBTVEFUSUMgdm9pZAogeGZzX2ZsdXNoX2RldmljZV93b3JrKAotCXZmc190CQkqdmZzLAorCWJodl92ZnNfdAkqdmZzLAogCXZvaWQJCSppbm9kZSkKIHsKIAlzeW5jX2Jsb2NrZGV2KHZmcy0+dmZzX3N1cGVyLT5zX2JkZXYpOwpAQCAtNTM3LDcgKzUyNyw3IEBACiAJeGZzX2lub2RlX3QJKmlwKQogewogCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSB2bl90b19pbm9kZShYRlNfSVRPVihpcCkpOwotCXN0cnVjdCB2ZnMJKnZmcyA9IFhGU19NVE9WRlMoaXAtPmlfbW91bnQpOworCXN0cnVjdCBiaHZfdmZzCSp2ZnMgPSBYRlNfTVRPVkZTKGlwLT5pX21vdW50KTsKIAogCWlncmFiKGlub2RlKTsKIAl4ZnNfc3luY2RfcXVldWVfd29yayh2ZnMsIGlub2RlLCB4ZnNfZmx1c2hfZGV2aWNlX3dvcmspOwpAQCAtNTQ1LDE2ICs1MzUsMTYgQEAKIAl4ZnNfbG9nX2ZvcmNlKGlwLT5pX21vdW50LCAoeGZzX2xzbl90KTAsIFhGU19MT0dfRk9SQ0V8WEZTX0xPR19TWU5DKTsKIH0KIAotI2RlZmluZSBTWU5DRF9GTEFHUwkoU1lOQ19GU0RBVEF8U1lOQ19CREZMVVNIfFNZTkNfQVRUUnxTWU5DX1JFRkNBQ0hFKQogU1RBVElDIHZvaWQKIHZmc19zeW5jX3dvcmtlcigKLQl2ZnNfdAkJKnZmc3AsCisJYmh2X3Zmc190CSp2ZnNwLAogCXZvaWQJCSp1bnVzZWQpCiB7CiAJaW50CQllcnJvcjsKIAogCWlmICghKHZmc3AtPnZmc19mbGFnICYgVkZTX1JET05MWSkpCi0JCVZGU19TWU5DKHZmc3AsIFNZTkNEX0ZMQUdTLCBOVUxMLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3Zmc19zeW5jKHZmc3AsIFNZTkNfRlNEQVRBIHwgU1lOQ19CREZMVVNIIHwgXAorCQkJCQlTWU5DX0FUVFIgfCBTWU5DX1JFRkNBQ0hFLCBOVUxMKTsKIAl2ZnNwLT52ZnNfc3luY19zZXErKzsKIAl3bWIoKTsKIAl3YWtlX3VwKCZ2ZnNwLT52ZnNfd2FpdF9zaW5nbGVfc3luY190YXNrKTsKQEAgLTU2NSw4ICs1NTUsOCBAQAogCXZvaWQJCQkqYXJnKQogewogCWxvbmcJCQl0aW1lbGVmdDsKLQl2ZnNfdAkJCSp2ZnNwID0gKHZmc190ICopIGFyZzsKLQlzdHJ1Y3QgdmZzX3N5bmNfd29yawkqd29yaywgKm47CisJYmh2X3Zmc190CQkqdmZzcCA9IChiaHZfdmZzX3QgKikgYXJnOworCWJodl92ZnNfc3luY193b3JrX3QJKndvcmssICpuOwogCUxJU1RfSEVBRAkJKHRtcCk7CiAKIAl0aW1lbGVmdCA9IHhmc19zeW5jZF9jZW50aXNlY3MgKiBtc2Vjc190b19qaWZmaWVzKDEwKTsKQEAgLTYwMCw3ICs1OTAsNyBAQAogCQkJbGlzdF9kZWwoJndvcmstPndfbGlzdCk7CiAJCQlpZiAod29yayA9PSAmdmZzcC0+dmZzX3N5bmNfd29yaykKIAkJCQljb250aW51ZTsKLQkJCWttZW1fZnJlZSh3b3JrLCBzaXplb2Yoc3RydWN0IHZmc19zeW5jX3dvcmspKTsKKwkJCWttZW1fZnJlZSh3b3JrLCBzaXplb2Yoc3RydWN0IGJodl92ZnNfc3luY193b3JrKSk7CiAJCX0KIAl9CiAKQEAgLTYwOSw3ICs1OTksNyBAQAogCiBTVEFUSUMgaW50CiB4ZnNfZnNfc3RhcnRfc3luY2QoCi0JdmZzX3QJCQkqdmZzcCkKKwliaHZfdmZzX3QJCSp2ZnNwKQogewogCXZmc3AtPnZmc19zeW5jX3dvcmsud19zeW5jZXIgPSB2ZnNfc3luY193b3JrZXI7CiAJdmZzcC0+dmZzX3N5bmNfd29yay53X3ZmcyA9IHZmc3A7CkBAIC02MjEsNyArNjExLDcgQEAKIAogU1RBVElDIHZvaWQKIHhmc19mc19zdG9wX3N5bmNkKAotCXZmc190CQkJKnZmc3ApCisJYmh2X3Zmc190CQkqdmZzcCkKIHsKIAlrdGhyZWFkX3N0b3AodmZzcC0+dmZzX3N5bmNfdGFzayk7CiB9CkBAIC02MzAsMzUgKzYyMCwyNiBAQAogeGZzX2ZzX3B1dF9zdXBlcigKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sJKnNiKQogewotCXZmc190CQkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7CisJYmh2X3Zmc190CQkqdmZzcCA9IHZmc19mcm9tX3NiKHNiKTsKIAlpbnQJCQllcnJvcjsKIAogCXhmc19mc19zdG9wX3N5bmNkKHZmc3ApOwotCVZGU19TWU5DKHZmc3AsIFNZTkNfQVRUUnxTWU5DX0RFTFdSSSwgTlVMTCwgZXJyb3IpOwotCWlmICghZXJyb3IpCi0JCVZGU19VTk1PVU5UKHZmc3AsIDAsIE5VTEwsIGVycm9yKTsKKwliaHZfdmZzX3N5bmModmZzcCwgU1lOQ19BVFRSIHwgU1lOQ19ERUxXUkksIE5VTEwpOworCWVycm9yID0gYmh2X3Zmc191bm1vdW50KHZmc3AsIDAsIE5VTEwpOwogCWlmIChlcnJvcikgewotCQlwcmludGsoIlhGUyB1bm1vdW50IGdvdCBlcnJvciAlZFxuIiwgZXJyb3IpOwotCQlwcmludGsoIiVzOiB2ZnNwLzB4JXAgbGVmdCBkYW5nbGluZyFcbiIsIF9fRlVOQ1RJT05fXywgdmZzcCk7Ci0JCXJldHVybjsKKwkJcHJpbnRrKCJYRlM6IHVubW91bnQgZ290IGVycm9yPSVkXG4iLCBlcnJvcik7CisJCXByaW50aygiJXM6IHZmcz0weCVwIGxlZnQgZGFuZ2xpbmchXG4iLCBfX0ZVTkNUSU9OX18sIHZmc3ApOworCX0gZWxzZSB7CisJCXZmc19kZWFsbG9jYXRlKHZmc3ApOwogCX0KLQotCXZmc19kZWFsbG9jYXRlKHZmc3ApOwogfQogCiBTVEFUSUMgdm9pZAogeGZzX2ZzX3dyaXRlX3N1cGVyKAogCXN0cnVjdCBzdXBlcl9ibG9jawkqc2IpCiB7Ci0JdmZzX3QJCQkqdmZzcCA9IHZmc19mcm9tX3NiKHNiKTsKLQlpbnQJCQllcnJvcjsKLQotCWlmIChzYi0+c19mbGFncyAmIE1TX1JET05MWSkgewotCQlzYi0+c19kaXJ0ID0gMDsgLyogcGFyYW5vaWEgKi8KLQkJcmV0dXJuOwotCX0KLQkvKiBQdXNoIHRoZSBsb2cgYW5kIHN1cGVyYmxvY2sgYSBsaXR0bGUgKi8KLQlWRlNfU1lOQyh2ZnNwLCBTWU5DX0ZTREFUQSwgTlVMTCwgZXJyb3IpOworCWlmICghKHNiLT5zX2ZsYWdzICYgTVNfUkRPTkxZKSkKKwkJYmh2X3Zmc19zeW5jKHZmc19mcm9tX3NiKHNiKSwgU1lOQ19GU0RBVEEsIE5VTEwpOwogCXNiLT5zX2RpcnQgPSAwOwogfQogCkBAIC02NjcsMTYgKzY0OCwxNiBAQAogCXN0cnVjdCBzdXBlcl9ibG9jawkqc2IsCiAJaW50CQkJd2FpdCkKIHsKLQl2ZnNfdAkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7Ci0JaW50CQllcnJvcjsKLQlpbnQJCWZsYWdzID0gU1lOQ19GU0RBVEE7CisJYmh2X3Zmc190CQkqdmZzcCA9IHZmc19mcm9tX3NiKHNiKTsKKwlpbnQJCQllcnJvcjsKKwlpbnQJCQlmbGFnczsKIAogCWlmICh1bmxpa2VseShzYi0+c19mcm96ZW4gPT0gU0JfRlJFRVpFX1dSSVRFKSkKIAkJZmxhZ3MgPSBTWU5DX1FVSUVTQ0U7CiAJZWxzZQogCQlmbGFncyA9IFNZTkNfRlNEQVRBIHwgKHdhaXQgPyBTWU5DX1dBSVQgOiAwKTsKIAotCVZGU19TWU5DKHZmc3AsIGZsYWdzLCBOVUxMLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdmZzX3N5bmModmZzcCwgZmxhZ3MsIE5VTEwpOwogCXNiLT5zX2RpcnQgPSAwOwogCiAJaWYgKHVubGlrZWx5KGxhcHRvcF9tb2RlKSkgewpAQCAtNzAzLDE0ICs2ODQsMTEgQEAKIAogU1RBVElDIGludAogeGZzX2ZzX3N0YXRmcygKLQlzdHJ1Y3Qgc3VwZXJfYmxvY2sJKnNiLAorCXN0cnVjdCBkZW50cnkJCSpkZW50cnksCiAJc3RydWN0IGtzdGF0ZnMJCSpzdGF0cCkKIHsKLQl2ZnNfdAkJCSp2ZnNwID0gdmZzX2Zyb21fc2Ioc2IpOwotCWludAkJCWVycm9yOwotCi0JVkZTX1NUQVRWRlModmZzcCwgc3RhdHAsIE5VTEwsIGVycm9yKTsKLQlyZXR1cm4gLWVycm9yOworCXJldHVybiAtYmh2X3Zmc19zdGF0dmZzKHZmc19mcm9tX3NiKGRlbnRyeS0+ZF9zYiksIHN0YXRwLAorCQkJCXZuX2Zyb21faW5vZGUoZGVudHJ5LT5kX2lub2RlKSk7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTcxOSwxMyArNjk3LDEzIEBACiAJaW50CQkJKmZsYWdzLAogCWNoYXIJCQkqb3B0aW9ucykKIHsKLQl2ZnNfdAkJCSp2ZnNwID0gdmZzX2Zyb21fc2Ioc2IpOworCWJodl92ZnNfdAkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7CiAJc3RydWN0IHhmc19tb3VudF9hcmdzCSphcmdzID0geGZzX2FyZ3NfYWxsb2NhdGUoc2IsIDApOwogCWludAkJCWVycm9yOwogCi0JVkZTX1BBUlNFQVJHUyh2ZnNwLCBvcHRpb25zLCBhcmdzLCAxLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdmZzX3BhcnNlYXJncyh2ZnNwLCBvcHRpb25zLCBhcmdzLCAxKTsKIAlpZiAoIWVycm9yKQotCQlWRlNfTU5UVVBEQVRFKHZmc3AsIGZsYWdzLCBhcmdzLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3Zmc19tbnR1cGRhdGUodmZzcCwgZmxhZ3MsIGFyZ3MpOwogCWttZW1fZnJlZShhcmdzLCBzaXplb2YoKmFyZ3MpKTsKIAlyZXR1cm4gLWVycm9yOwogfQpAQCAtNzM0LDcgKzcxMiw3IEBACiB4ZnNfZnNfbG9ja2ZzKAogCXN0cnVjdCBzdXBlcl9ibG9jawkqc2IpCiB7Ci0JVkZTX0ZSRUVaRSh2ZnNfZnJvbV9zYihzYikpOworCWJodl92ZnNfZnJlZXplKHZmc19mcm9tX3NiKHNiKSk7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTc0MiwxMSArNzIwLDcgQEAKIAlzdHJ1Y3Qgc2VxX2ZpbGUJCSptLAogCXN0cnVjdCB2ZnNtb3VudAkJKm1udCkKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IHZmc19mcm9tX3NiKG1udC0+bW50X3NiKTsKLQlpbnQJCQllcnJvcjsKLQotCVZGU19TSE9XQVJHUyh2ZnNwLCBtLCBlcnJvcik7Ci0JcmV0dXJuIGVycm9yOworCXJldHVybiAtYmh2X3Zmc19zaG93YXJncyh2ZnNfZnJvbV9zYihtbnQtPm1udF9zYiksIG0pOwogfQogCiBTVEFUSUMgaW50CkBAIC03NTQsMTEgKzcyOCw3IEBACiAJc3RydWN0IHN1cGVyX2Jsb2NrCSpzYiwKIAlpbnQJCQl0eXBlKQogewotCXN0cnVjdCB2ZnMJCSp2ZnNwID0gdmZzX2Zyb21fc2Ioc2IpOwotCWludAkJCWVycm9yOwotCi0JVkZTX1FVT1RBQ1RMKHZmc3AsIFFfWFFVT1RBU1lOQywgMCwgKGNhZGRyX3QpTlVMTCwgZXJyb3IpOwotCXJldHVybiAtZXJyb3I7CisJcmV0dXJuIC1iaHZfdmZzX3F1b3RhY3RsKHZmc19mcm9tX3NiKHNiKSwgUV9YUVVPVEFTWU5DLCAwLCBOVUxMKTsKIH0KIAogU1RBVElDIGludApAQCAtNzY2LDExICs3MzYsNyBAQAogCXN0cnVjdCBzdXBlcl9ibG9jawkqc2IsCiAJc3RydWN0IGZzX3F1b3RhX3N0YXQJKmZxcykKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IHZmc19mcm9tX3NiKHNiKTsKLQlpbnQJCQllcnJvcjsKLQotCVZGU19RVU9UQUNUTCh2ZnNwLCBRX1hHRVRRU1RBVCwgMCwgKGNhZGRyX3QpZnFzLCBlcnJvcik7Ci0JcmV0dXJuIC1lcnJvcjsKKwlyZXR1cm4gLWJodl92ZnNfcXVvdGFjdGwodmZzX2Zyb21fc2Ioc2IpLCBRX1hHRVRRU1RBVCwgMCwgKGNhZGRyX3QpZnFzKTsKIH0KIAogU1RBVElDIGludApAQCAtNzc5LDExICs3NDUsNyBAQAogCXVuc2lnbmVkIGludAkJZmxhZ3MsCiAJaW50CQkJb3ApCiB7Ci0Jc3RydWN0IHZmcwkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7Ci0JaW50CQkJZXJyb3I7Ci0KLQlWRlNfUVVPVEFDVEwodmZzcCwgb3AsIDAsIChjYWRkcl90KSZmbGFncywgZXJyb3IpOwotCXJldHVybiAtZXJyb3I7CisJcmV0dXJuIC1iaHZfdmZzX3F1b3RhY3RsKHZmc19mcm9tX3NiKHNiKSwgb3AsIDAsIChjYWRkcl90KSZmbGFncyk7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTc5MywxMyArNzU1LDEwIEBACiAJcWlkX3QJCQlpZCwKIAlzdHJ1Y3QgZnNfZGlza19xdW90YQkqZmRxKQogewotCXN0cnVjdCB2ZnMJCSp2ZnNwID0gdmZzX2Zyb21fc2Ioc2IpOwotCWludAkJCWVycm9yLCBnZXRtb2RlOwotCi0JZ2V0bW9kZSA9ICh0eXBlID09IFVTUlFVT1RBKSA/IFFfWEdFVFFVT1RBIDoKLQkJICgodHlwZSA9PSBHUlBRVU9UQSkgPyBRX1hHRVRHUVVPVEEgOiBRX1hHRVRQUVVPVEEpOwotCVZGU19RVU9UQUNUTCh2ZnNwLCBnZXRtb2RlLCBpZCwgKGNhZGRyX3QpZmRxLCBlcnJvcik7Ci0JcmV0dXJuIC1lcnJvcjsKKwlyZXR1cm4gLWJodl92ZnNfcXVvdGFjdGwodmZzX2Zyb21fc2Ioc2IpLAorCQkJCSAodHlwZSA9PSBVU1JRVU9UQSkgPyBRX1hHRVRRVU9UQSA6CisJCQkJICAoKHR5cGUgPT0gR1JQUVVPVEEpID8gUV9YR0VUR1FVT1RBIDoKKwkJCQkgICBRX1hHRVRQUVVPVEEpLCBpZCwgKGNhZGRyX3QpZmRxKTsKIH0KIAogU1RBVElDIGludApAQCAtODA5LDEzICs3NjgsMTAgQEAKIAlxaWRfdAkJCWlkLAogCXN0cnVjdCBmc19kaXNrX3F1b3RhCSpmZHEpCiB7Ci0Jc3RydWN0IHZmcwkJKnZmc3AgPSB2ZnNfZnJvbV9zYihzYik7Ci0JaW50CQkJZXJyb3IsIHNldG1vZGU7Ci0KLQlzZXRtb2RlID0gKHR5cGUgPT0gVVNSUVVPVEEpID8gUV9YU0VUUUxJTSA6Ci0JCSAoKHR5cGUgPT0gR1JQUVVPVEEpID8gUV9YU0VUR1FMSU0gOiBRX1hTRVRQUUxJTSk7Ci0JVkZTX1FVT1RBQ1RMKHZmc3AsIHNldG1vZGUsIGlkLCAoY2FkZHJfdClmZHEsIGVycm9yKTsKLQlyZXR1cm4gLWVycm9yOworCXJldHVybiAtYmh2X3Zmc19xdW90YWN0bCh2ZnNfZnJvbV9zYihzYiksCisJCQkJICh0eXBlID09IFVTUlFVT1RBKSA/IFFfWFNFVFFMSU0gOgorCQkJCSAgKCh0eXBlID09IEdSUFFVT1RBKSA/IFFfWFNFVEdRTElNIDoKKwkJCQkgICBRX1hTRVRQUUxJTSksIGlkLCAoY2FkZHJfdClmZHEpOwogfQogCiBTVEFUSUMgaW50CkBAIC04MjQsMzQgKzc4MCwzMiBAQAogCXZvaWQJCQkqZGF0YSwKIAlpbnQJCQlzaWxlbnQpCiB7Ci0Jdm5vZGVfdAkJCSpyb290dnA7Ci0Jc3RydWN0IHZmcwkJKnZmc3AgPSB2ZnNfYWxsb2NhdGUoc2IpOworCXN0cnVjdCBiaHZfdm5vZGUJKnJvb3R2cDsKKwlzdHJ1Y3QgYmh2X3ZmcwkJKnZmc3AgPSB2ZnNfYWxsb2NhdGUoc2IpOwogCXN0cnVjdCB4ZnNfbW91bnRfYXJncwkqYXJncyA9IHhmc19hcmdzX2FsbG9jYXRlKHNiLCBzaWxlbnQpOwogCXN0cnVjdCBrc3RhdGZzCQlzdGF0dmZzOwotCWludAkJCWVycm9yLCBlcnJvcjI7CisJaW50CQkJZXJyb3I7CiAKIAliaHZfaW5zZXJ0X2FsbF92ZnNvcHModmZzcCk7CiAKLQlWRlNfUEFSU0VBUkdTKHZmc3AsIChjaGFyICopZGF0YSwgYXJncywgMCwgZXJyb3IpOworCWVycm9yID0gYmh2X3Zmc19wYXJzZWFyZ3ModmZzcCwgKGNoYXIgKilkYXRhLCBhcmdzLCAwKTsKIAlpZiAoZXJyb3IpIHsKIAkJYmh2X3JlbW92ZV9hbGxfdmZzb3BzKHZmc3AsIDEpOwogCQlnb3RvIGZhaWxfdmZzb3A7CiAJfQogCiAJc2JfbWluX2Jsb2Nrc2l6ZShzYiwgQkJTSVpFKTsKLSNpZmRlZiBDT05GSUdfWEZTX0VYUE9SVAogCXNiLT5zX2V4cG9ydF9vcCA9ICZ4ZnNfZXhwb3J0X29wZXJhdGlvbnM7Ci0jZW5kaWYKIAlzYi0+c19xY29wID0gJnhmc19xdW90YWN0bF9vcGVyYXRpb25zOwogCXNiLT5zX29wID0gJnhmc19zdXBlcl9vcGVyYXRpb25zOwogCi0JVkZTX01PVU5UKHZmc3AsIGFyZ3MsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92ZnNfbW91bnQodmZzcCwgYXJncywgTlVMTCk7CiAJaWYgKGVycm9yKSB7CiAJCWJodl9yZW1vdmVfYWxsX3Zmc29wcyh2ZnNwLCAxKTsKIAkJZ290byBmYWlsX3Zmc29wOwogCX0KIAotCVZGU19TVEFUVkZTKHZmc3AsICZzdGF0dmZzLCBOVUxMLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdmZzX3N0YXR2ZnModmZzcCwgJnN0YXR2ZnMsIE5VTEwpOwogCWlmIChlcnJvcikKIAkJZ290byBmYWlsX3VubW91bnQ7CiAKQEAgLTg2Myw3ICs4MTcsNyBAQAogCXNiLT5zX3RpbWVfZ3JhbiA9IDE7CiAJc2V0X3Bvc2l4X2FjbF9mbGFnKHNiKTsKIAotCVZGU19ST09UKHZmc3AsICZyb290dnAsIGVycm9yKTsKKwllcnJvciA9IGJodl92ZnNfcm9vdCh2ZnNwLCAmcm9vdHZwKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gZmFpbF91bm1vdW50OwogCkBAIC04OTIsNyArODQ2LDcgQEAKIAl9CiAKIGZhaWxfdW5tb3VudDoKLQlWRlNfVU5NT1VOVCh2ZnNwLCAwLCBOVUxMLCBlcnJvcjIpOworCWJodl92ZnNfdW5tb3VudCh2ZnNwLCAwLCBOVUxMKTsKIAogZmFpbF92ZnNvcDoKIAl2ZnNfZGVhbGxvY2F0ZSh2ZnNwKTsKQEAgLTkwMCwxNCArODU0LDE2IEBACiAJcmV0dXJuIC1lcnJvcjsKIH0KIAotU1RBVElDIHN0cnVjdCBzdXBlcl9ibG9jayAqCitTVEFUSUMgaW50CiB4ZnNfZnNfZ2V0X3NiKAogCXN0cnVjdCBmaWxlX3N5c3RlbV90eXBlCSpmc190eXBlLAogCWludAkJCWZsYWdzLAogCWNvbnN0IGNoYXIJCSpkZXZfbmFtZSwKLQl2b2lkCQkJKmRhdGEpCisJdm9pZAkJCSpkYXRhLAorCXN0cnVjdCB2ZnNtb3VudAkJKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX2JkZXYoZnNfdHlwZSwgZmxhZ3MsIGRldl9uYW1lLCBkYXRhLCB4ZnNfZnNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9iZGV2KGZzX3R5cGUsIGZsYWdzLCBkZXZfbmFtZSwgZGF0YSwgeGZzX2ZzX2ZpbGxfc3VwZXIsCisJCQkgICBtbnQpOwogfQogCiBTVEFUSUMgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgeGZzX3N1cGVyX29wZXJhdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19zdXBlci5oIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3VwZXIuaAppbmRleCAzNzZiOTZjLi4zM2RkMWNhIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19zdXBlci5oCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N1cGVyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQAogCiBleHRlcm4gX191aW50NjRfdCB4ZnNfbWF4X2ZpbGVfb2Zmc2V0KHVuc2lnbmVkIGludCk7CiAKLWV4dGVybiB2b2lkIHhmc19pbml0aWFsaXplX3Zub2RlKGJodl9kZXNjX3QgKiwgdm5vZGVfdCAqLCBiaHZfZGVzY190ICosIGludCk7CitleHRlcm4gdm9pZCB4ZnNfaW5pdGlhbGl6ZV92bm9kZShiaHZfZGVzY190ICosIGJodl92bm9kZV90ICosIGJodl9kZXNjX3QgKiwgaW50KTsKIAogZXh0ZXJuIHZvaWQgeGZzX2ZsdXNoX2lub2RlKHN0cnVjdCB4ZnNfaW5vZGUgKik7CiBleHRlcm4gdm9pZCB4ZnNfZmx1c2hfZGV2aWNlKHN0cnVjdCB4ZnNfaW5vZGUgKik7CmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19zeXNjdGwuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5jCmluZGV4IDcwNzljYzguLmFmMjQ2NTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5jCkBAIC0zOCw3ICszOCw3IEBACiAKIAlpZiAoIXJldCAmJiB3cml0ZSAmJiAqdmFscCkgewogCQlwcmludGsoIlhGUyBDbGVhcmluZyB4ZnNzdGF0c1xuIik7Ci0JCWZvcl9lYWNoX2NwdShjKSB7CisJCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjKSB7CiAJCQlwcmVlbXB0X2Rpc2FibGUoKTsKIAkJCS8qIHNhdmUgdm5fYWN0aXZlLCBpdCdzIGEgdW5pdmVyc2FsIHRydXRoISAqLwogCQkJdm5fYWN0aXZlID0gcGVyX2NwdSh4ZnNzdGF0cywgYykudm5fYWN0aXZlOwpAQCAtMTIwLDYgKzEyMCwxMSBAQAogCSZzeXNjdGxfaW50dmVjLCBOVUxMLAogCSZ4ZnNfcGFyYW1zLnJvdG9yc3RlcC5taW4sICZ4ZnNfcGFyYW1zLnJvdG9yc3RlcC5tYXh9LAogCisJe1hGU19JTkhFUklUX05PREZSRywgImluaGVyaXRfbm9kZWZyYWciLCAmeGZzX3BhcmFtcy5pbmhlcml0X25vZGZyZy52YWwsCisJc2l6ZW9mKGludCksIDA2NDQsIE5VTEwsICZwcm9jX2RvaW50dmVjX21pbm1heCwKKwkmc3lzY3RsX2ludHZlYywgTlVMTCwKKwkmeGZzX3BhcmFtcy5pbmhlcml0X25vZGZyZy5taW4sICZ4ZnNfcGFyYW1zLmluaGVyaXRfbm9kZnJnLm1heH0sCisKIAkvKiBwbGVhc2Uga2VlcCB0aGlzIHRoZSBsYXN0IGVudHJ5ICovCiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIAl7WEZTX1NUQVRTX0NMRUFSLCAic3RhdHNfY2xlYXIiLCAmeGZzX3BhcmFtcy5zdGF0c19jbGVhci52YWwsCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19zeXNjdGwuaCBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5oCmluZGV4IGJjOGMxMWYuLmE2MzFmYjggMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5oCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5c2N0bC5oCkBAIC00Niw2ICs0Niw3IEBACiAJeGZzX3N5c2N0bF92YWxfdCB4ZnNfYnVmX2FnZTsJLyogTWV0YWRhdGEgYnVmZmVyIGFnZSBiZWZvcmUgZmx1c2guICovCiAJeGZzX3N5c2N0bF92YWxfdCBpbmhlcml0X25vc3ltOwkvKiBJbmhlcml0IHRoZSAibm9zeW1saW5rcyIgZmxhZy4gKi8KIAl4ZnNfc3lzY3RsX3ZhbF90IHJvdG9yc3RlcDsJLyogaW5vZGUzMiBBRyByb3RvcmluZyBjb250cm9sIGtub2IgKi8KKwl4ZnNfc3lzY3RsX3ZhbF90IGluaGVyaXRfbm9kZnJnOy8qIEluaGVyaXQgdGhlICJub2RlZnJhZyIgaW5vZGUgZmxhZy4gKi8KIH0geGZzX3BhcmFtX3Q7CiAKIC8qCkBAIC04NCw2ICs4NSw3IEBACiAJLyogWEZTX0lPX0JZUEFTUyA9IDE4ICovCiAJWEZTX0lOSEVSSVRfTk9TWU0gPSAxOSwKIAlYRlNfUk9UT1JTVEVQID0gMjAsCisJWEZTX0lOSEVSSVRfTk9ERlJHID0gMjEsCiB9OwogCiBleHRlcm4geGZzX3BhcmFtX3QJeGZzX3BhcmFtczsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3Zmcy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfdmZzLmMKaW5kZXggNmY3YzlmNy4uNjE0NWU4YiAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfdmZzLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfdmZzLmMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfaW1hcC5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgpAQCAtMTA0LDcgKzEwMyw3IEBACiBpbnQKIHZmc19yb290KAogCXN0cnVjdCBiaHZfZGVzYwkJKmJkcCwKLQlzdHJ1Y3Qgdm5vZGUJCSoqdnBwKQorCXN0cnVjdCBiaHZfdm5vZGUJKip2cHApCiB7CiAJc3RydWN0IGJodl9kZXNjCQkqbmV4dCA9IGJkcDsKIApAQCAtMTE3LDE1ICsxMTYsMTUgQEAKIGludAogdmZzX3N0YXR2ZnMoCiAJc3RydWN0IGJodl9kZXNjCQkqYmRwLAotCXhmc19zdGF0ZnNfdAkJKnNwLAotCXN0cnVjdCB2bm9kZQkJKnZwKQorCWJodl9zdGF0dmZzX3QJCSpzdGF0cCwKKwlzdHJ1Y3QgYmh2X3Zub2RlCSp2cCkKIHsKIAlzdHJ1Y3QgYmh2X2Rlc2MJCSpuZXh0ID0gYmRwOwogCiAJQVNTRVJUKG5leHQpOwogCXdoaWxlICghIChiaHZ0b3Zmc29wcyhuZXh0KSktPnZmc19zdGF0dmZzKQogCQluZXh0ID0gQkhWX05FWFQobmV4dCk7Ci0JcmV0dXJuICgoKmJodnRvdmZzb3BzKG5leHQpLT52ZnNfc3RhdHZmcykobmV4dCwgc3AsIHZwKSk7CisJcmV0dXJuICgoKmJodnRvdmZzb3BzKG5leHQpLT52ZnNfc3RhdHZmcykobmV4dCwgc3RhdHAsIHZwKSk7CiB9CiAKIGludApAQCAtMTQ1LDcgKzE0NCw3IEBACiBpbnQKIHZmc192Z2V0KAogCXN0cnVjdCBiaHZfZGVzYwkJKmJkcCwKLQlzdHJ1Y3Qgdm5vZGUJCSoqdnBwLAorCXN0cnVjdCBiaHZfdm5vZGUJKip2cHAsCiAJc3RydWN0IGZpZAkJKmZpZHApCiB7CiAJc3RydWN0IGJodl9kZXNjCQkqbmV4dCA9IGJkcDsKQEAgLTE4Nyw3ICsxODYsNyBAQAogdm9pZAogdmZzX2luaXRfdm5vZGUoCiAJc3RydWN0IGJodl9kZXNjCQkqYmRwLAotCXN0cnVjdCB2bm9kZQkJKnZwLAorCXN0cnVjdCBiaHZfdm5vZGUJKnZwLAogCXN0cnVjdCBiaHZfZGVzYwkJKmJwLAogCWludAkJCXVubG9jaykKIHsKQEAgLTIyNiwxMyArMjI1LDEzIEBACiAJKCgqYmh2dG92ZnNvcHMobmV4dCktPnZmc19mcmVlemUpKG5leHQpKTsKIH0KIAotdmZzX3QgKgorYmh2X3Zmc190ICoKIHZmc19hbGxvY2F0ZSgKIAlzdHJ1Y3Qgc3VwZXJfYmxvY2sJKnNiKQogewotCXN0cnVjdCB2ZnMJCSp2ZnNwOworCXN0cnVjdCBiaHZfdmZzCQkqdmZzcDsKIAotCXZmc3AgPSBrbWVtX3phbGxvYyhzaXplb2YodmZzX3QpLCBLTV9TTEVFUCk7CisJdmZzcCA9IGttZW1femFsbG9jKHNpemVvZihiaHZfdmZzX3QpLCBLTV9TTEVFUCk7CiAJYmh2X2hlYWRfaW5pdChWRlNfQkhWSEVBRCh2ZnNwKSwgInZmcyIpOwogCUlOSVRfTElTVF9IRUFEKCZ2ZnNwLT52ZnNfc3luY19saXN0KTsKIAlzcGluX2xvY2tfaW5pdCgmdmZzcC0+dmZzX3N5bmNfbG9jayk7CkBAIC0yNDcsMjUgKzI0NiwyNSBAQAogCXJldHVybiB2ZnNwOwogfQogCi12ZnNfdCAqCitiaHZfdmZzX3QgKgogdmZzX2Zyb21fc2IoCiAJc3RydWN0IHN1cGVyX2Jsb2NrCSpzYikKIHsKLQlyZXR1cm4gKHZmc190ICopc2ItPnNfZnNfaW5mbzsKKwlyZXR1cm4gKGJodl92ZnNfdCAqKXNiLT5zX2ZzX2luZm87CiB9CiAKIHZvaWQKIHZmc19kZWFsbG9jYXRlKAotCXN0cnVjdCB2ZnMJCSp2ZnNwKQorCXN0cnVjdCBiaHZfdmZzCQkqdmZzcCkKIHsKIAliaHZfaGVhZF9kZXN0cm95KFZGU19CSFZIRUFEKHZmc3ApKTsKLQlrbWVtX2ZyZWUodmZzcCwgc2l6ZW9mKHZmc190KSk7CisJa21lbV9mcmVlKHZmc3AsIHNpemVvZihiaHZfdmZzX3QpKTsKIH0KIAogdm9pZAogdmZzX2luc2VydG9wcygKLQlzdHJ1Y3QgdmZzCQkqdmZzcCwKLQlzdHJ1Y3QgYmh2X3Zmc29wcwkqdmZzb3BzKQorCXN0cnVjdCBiaHZfdmZzCQkqdmZzcCwKKwlzdHJ1Y3QgYmh2X21vZHVsZV92ZnNvcHMgKnZmc29wcykKIHsKIAlzdHJ1Y3QgYmh2X2Rlc2MJCSpiZHA7CiAKQEAgLTI3Niw5ICsyNzUsOSBAQAogCiB2b2lkCiB2ZnNfaW5zZXJ0Ymh2KAotCXN0cnVjdCB2ZnMJCSp2ZnNwLAorCXN0cnVjdCBiaHZfdmZzCQkqdmZzcCwKIAlzdHJ1Y3QgYmh2X2Rlc2MJCSpiZHAsCi0Jc3RydWN0IHZmc29wcwkJKnZmc29wcywKKwlzdHJ1Y3QgYmh2X3Zmc29wcwkqdmZzb3BzLAogCXZvaWQJCQkqbW91bnQpCiB7CiAJYmh2X2Rlc2NfaW5pdChiZHAsIG1vdW50LCB2ZnNwLCB2ZnNvcHMpOwpAQCAtMjg3LDcgKzI4Niw3IEBACiAKIHZvaWQKIGJodl9yZW1vdmVfdmZzb3BzKAotCXN0cnVjdCB2ZnMJCSp2ZnNwLAorCXN0cnVjdCBiaHZfdmZzCQkqdmZzcCwKIAlpbnQJCQlwb3MpCiB7CiAJc3RydWN0IGJodl9kZXNjCQkqYmh2OwpAQCAtMzAxLDcgKzMwMCw3IEBACiAKIHZvaWQKIGJodl9yZW1vdmVfYWxsX3Zmc29wcygKLQlzdHJ1Y3QgdmZzCQkqdmZzcCwKKwlzdHJ1Y3QgYmh2X3ZmcwkJKnZmc3AsCiAJaW50CQkJZnJlZWJhc2UpCiB7CiAJc3RydWN0IHhmc19tb3VudAkqbXA7CkBAIC0zMTcsNyArMzE2LDcgQEAKIAogdm9pZAogYmh2X2luc2VydF9hbGxfdmZzb3BzKAotCXN0cnVjdCB2ZnMJCSp2ZnNwKQorCXN0cnVjdCBiaHZfdmZzCQkqdmZzcCkKIHsKIAlzdHJ1Y3QgeGZzX21vdW50CSptcDsKIApkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfdmZzLmggYi9mcy94ZnMvbGludXgtMi42L3hmc192ZnMuaAppbmRleCA4NDEyMDBjLi45MWZjMmM0IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc192ZnMuaAorKysgYi9mcy94ZnMvbGludXgtMi42L3hmc192ZnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIxLDQyICsyMSw0MCBAQAogI2luY2x1ZGUgPGxpbnV4L3Zmcy5oPgogI2luY2x1ZGUgInhmc19mcy5oIgogCitzdHJ1Y3QgYmh2X3ZmczsKK3N0cnVjdCBiaHZfdm5vZGU7CisKIHN0cnVjdCBmaWQ7Ci1zdHJ1Y3QgdmZzOwogc3RydWN0IGNyZWQ7Ci1zdHJ1Y3Qgdm5vZGU7Ci1zdHJ1Y3Qga3N0YXRmczsKIHN0cnVjdCBzZXFfZmlsZTsKIHN0cnVjdCBzdXBlcl9ibG9jazsKIHN0cnVjdCB4ZnNfbW91bnRfYXJnczsKIAotdHlwZWRlZiBzdHJ1Y3Qga3N0YXRmcyB4ZnNfc3RhdGZzX3Q7Cit0eXBlZGVmIHN0cnVjdCBrc3RhdGZzCWJodl9zdGF0dmZzX3Q7CiAKLXR5cGVkZWYgc3RydWN0IHZmc19zeW5jX3dvcmsgewordHlwZWRlZiBzdHJ1Y3QgYmh2X3Zmc19zeW5jX3dvcmsgewogCXN0cnVjdCBsaXN0X2hlYWQJd19saXN0OwotCXN0cnVjdCB2ZnMJCSp3X3ZmczsKKwlzdHJ1Y3QgYmh2X3ZmcwkJKndfdmZzOwogCXZvaWQJCQkqd19kYXRhOwkvKiBzeW5jZXIgcm91dGluZSBhcmd1bWVudCAqLwotCXZvaWQJCQkoKndfc3luY2VyKShzdHJ1Y3QgdmZzICosIHZvaWQgKik7Ci19IHZmc19zeW5jX3dvcmtfdDsKKwl2b2lkCQkJKCp3X3N5bmNlcikoc3RydWN0IGJodl92ZnMgKiwgdm9pZCAqKTsKK30gYmh2X3Zmc19zeW5jX3dvcmtfdDsKIAotdHlwZWRlZiBzdHJ1Y3QgdmZzIHsKK3R5cGVkZWYgc3RydWN0IGJodl92ZnMgewogCXVfaW50CQkJdmZzX2ZsYWc7CS8qIGZsYWdzICovCiAJeGZzX2ZzaWRfdAkJdmZzX2ZzaWQ7CS8qIGZpbGUgc3lzdGVtIElEICovCiAJeGZzX2ZzaWRfdAkJKnZmc19hbHRmc2lkOwkvKiBBbiBJRCBmaXhlZCBmb3IgbGlmZSBvZiBGUyAqLwogCWJodl9oZWFkX3QJCXZmc19iaDsJCS8qIGhlYWQgb2YgdmZzIGJlaGF2aW9yIGNoYWluICovCiAJc3RydWN0IHN1cGVyX2Jsb2NrCSp2ZnNfc3VwZXI7CS8qIGdlbmVyaWMgc3VwZXJibG9jayBwb2ludGVyICovCiAJc3RydWN0IHRhc2tfc3RydWN0CSp2ZnNfc3luY190YXNrOwkvKiBnZW5lcmFsaXNlZCBzeW5jIHRocmVhZCAqLwotCXZmc19zeW5jX3dvcmtfdAkJdmZzX3N5bmNfd29yazsJLyogd29yayBpdGVtIGZvciBWRlNfU1lOQyAqLworCWJodl92ZnNfc3luY193b3JrX3QJdmZzX3N5bmNfd29yazsJLyogd29yayBpdGVtIGZvciBWRlNfU1lOQyAqLwogCXN0cnVjdCBsaXN0X2hlYWQJdmZzX3N5bmNfbGlzdDsJLyogc3luYyB0aHJlYWQgd29yayBpdGVtIGxpc3QgKi8KIAlzcGlubG9ja190CQl2ZnNfc3luY19sb2NrOwkvKiB3b3JrIGl0ZW0gbGlzdCBsb2NrICovCi0JaW50IAkJCXZmc19zeW5jX3NlcTsJLyogc3luYyB0aHJlYWQgZ2VuZXJhdGlvbiBuby4gKi8KKwlpbnQJCQl2ZnNfc3luY19zZXE7CS8qIHN5bmMgdGhyZWFkIGdlbmVyYXRpb24gbm8uICovCiAJd2FpdF9xdWV1ZV9oZWFkX3QJdmZzX3dhaXRfc2luZ2xlX3N5bmNfdGFzazsKLX0gdmZzX3Q7Cit9IGJodl92ZnNfdDsKIAotI2RlZmluZSB2ZnNfZmJodgkJdmZzX2JoLmJoX2ZpcnN0CS8qIDFzdCBvbiB2ZnMgYmVoYXZpb3IgY2hhaW4gKi8KLQotI2RlZmluZSBiaHZ0b3ZmcyhiZHApCQkoIChzdHJ1Y3QgdmZzICopQkhWX1ZPQkooYmRwKSApCi0jZGVmaW5lIGJodnRvdmZzb3BzKGJkcCkJKCAoc3RydWN0IHZmc29wcyAqKUJIVl9PUFMoYmRwKSApCisjZGVmaW5lIGJodnRvdmZzKGJkcCkJCSggKHN0cnVjdCBiaHZfdmZzICopQkhWX1ZPQkooYmRwKSApCisjZGVmaW5lIGJodnRvdmZzb3BzKGJkcCkJKCAoc3RydWN0IGJodl92ZnNvcHMgKilCSFZfT1BTKGJkcCkgKQogI2RlZmluZSBWRlNfQkhWSEVBRCh2ZnMpCSggJih2ZnMpLT52ZnNfYmggKQogI2RlZmluZSBWRlNfUkVNT1ZFQkhWKHZmcywgYmRwKQkoIGJodl9yZW1vdmUoVkZTX0JIVkhFQUQodmZzKSwgYmRwKSApCiAKQEAgLTcxLDcgKzY5LDcgQEAKIAlWRlNfQkhWX1FNLAkJLyogcXVvdGEgbWFuYWdlciAqLwogCVZGU19CSFZfSU8sCQkvKiBJTyBwYXRoICovCiAJVkZTX0JIVl9FTkQJCS8qIGhvdXNla2VlcGluZyBlbmQtb2YtcmFuZ2UgKi8KLX0gdmZzX2Jodl90OworfSBiaHZfdmZzX3R5cGVfdDsKIAogI2RlZmluZSBWRlNfUE9TSVRJT05fWEZTCShCSFZfUE9TSVRJT05fQkFTRSkKICNkZWZpbmUgVkZTX1BPU0lUSU9OX0RNCQkoVkZTX1BPU0lUSU9OX0JBU0UrMTApCkBAIC04MSw4ICs3OSw5IEBACiAjZGVmaW5lIFZGU19SRE9OTFkJCTB4MDAwMQkvKiByZWFkLW9ubHkgdmZzICovCiAjZGVmaW5lIFZGU19HUlBJRAkJMHgwMDAyCS8qIGdyb3VwLUlEIGFzc2lnbmVkIGZyb20gZGlyZWN0b3J5ICovCiAjZGVmaW5lIFZGU19ETUkJCQkweDAwMDQJLyogZmlsZXN5c3RlbSBoYXMgdGhlIERNSSBlbmFibGVkICovCi0jZGVmaW5lIFZGU18zMkJJVElOT0RFUwkJMHgwMDA4CS8qIGRvIG5vdCB1c2UgaW51bXMgYWJvdmUgMzIgYml0cyAqLwotI2RlZmluZSBWRlNfRU5ECQkJMHgwMDA4CS8qIG1heCBmbGFnICovCisjZGVmaW5lIFZGU19VTU9VTlQJCTB4MDAwOAkvKiB1bm1vdW50IGluIHByb2dyZXNzICovCisjZGVmaW5lIFZGU18zMkJJVElOT0RFUwkJMHgwMDEwCS8qIGRvIG5vdCB1c2UgaW51bXMgYWJvdmUgMzIgYml0cyAqLworI2RlZmluZSBWRlNfRU5ECQkJMHgwMDEwCS8qIG1heCBmbGFnICovCiAKICNkZWZpbmUgU1lOQ19BVFRSCQkweDAwMDEJLyogc3luYyBhdHRyaWJ1dGVzICovCiAjZGVmaW5lIFNZTkNfQ0xPU0UJCTB4MDAwMgkvKiBjbG9zZSBmaWxlIHN5c3RlbSBkb3duICovCkBAIC05Miw3ICs5MSwxNCBAQAogI2RlZmluZSBTWU5DX0ZTREFUQQkJMHgwMDIwCS8qIGZsdXNoIGZzIGRhdGEgKGUuZy4gc3VwZXJibG9ja3MpICovCiAjZGVmaW5lIFNZTkNfUkVGQ0FDSEUJCTB4MDA0MCAgLyogcHJ1bmUgc29tZSBvZiB0aGUgbmZzIHJlZiBjYWNoZSAqLwogI2RlZmluZSBTWU5DX1JFTU9VTlQJCTB4MDA4MCAgLyogcmVtb3VudCByZWFkb25seSwgbm8gZHVtbXkgTFJzICovCi0jZGVmaW5lIFNZTkNfUVVJRVNDRQkJMHgwMTAwICAvKiBxdWllc2NlIGZpbGVzeXN0ZW0gZm9yIGEgc25hcHNob3QgKi8KKyNkZWZpbmUgU1lOQ19RVUlFU0NFCQkweDAxMDAgIC8qIHF1aWVzY2UgZmlsZXlzdGVtIGZvciBhIHNuYXBzaG90ICovCisKKyNkZWZpbmUgU0hVVERPV05fTUVUQV9JT19FUlJPUgkweDAwMDEJLyogd3JpdGUgYXR0ZW1wdCB0byBtZXRhZGF0YSBmYWlsZWQgKi8KKyNkZWZpbmUgU0hVVERPV05fTE9HX0lPX0VSUk9SCTB4MDAwMgkvKiB3cml0ZSBhdHRlbXB0IHRvIHRoZSBsb2cgZmFpbGVkICovCisjZGVmaW5lIFNIVVRET1dOX0ZPUkNFX1VNT1VOVAkweDAwMDQJLyogc2h1dGRvd24gZnJvbSBhIGZvcmNlZCB1bm1vdW50ICovCisjZGVmaW5lIFNIVVRET1dOX0NPUlJVUFRfSU5DT1JFCTB4MDAwOAkvKiBjb3JydXB0IGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgKi8KKyNkZWZpbmUgU0hVVERPV05fUkVNT1RFX1JFUQkweDAwMTAJLyogc2h1dGRvd24gY2FtZSBmcm9tIHJlbW90ZSBjZWxsICovCisjZGVmaW5lIFNIVVRET1dOX0RFVklDRV9SRVEJMHgwMDIwCS8qIGZhaWxlZCBhbGwgcGF0aHMgdG8gdGhlIGRldmljZSAqLwogCiB0eXBlZGVmIGludAkoKnZmc19tb3VudF90KShiaHZfZGVzY190ICosCiAJCQkJc3RydWN0IHhmc19tb3VudF9hcmdzICosIHN0cnVjdCBjcmVkICopOwpAQCAtMTAyLDE4ICsxMDgsMTkgQEAKIHR5cGVkZWYgaW50CSgqdmZzX3VubW91bnRfdCkoYmh2X2Rlc2NfdCAqLCBpbnQsIHN0cnVjdCBjcmVkICopOwogdHlwZWRlZiBpbnQJKCp2ZnNfbW50dXBkYXRlX3QpKGJodl9kZXNjX3QgKiwgaW50ICosCiAJCQkJc3RydWN0IHhmc19tb3VudF9hcmdzICopOwotdHlwZWRlZiBpbnQJKCp2ZnNfcm9vdF90KShiaHZfZGVzY190ICosIHN0cnVjdCB2bm9kZSAqKik7Ci10eXBlZGVmIGludAkoKnZmc19zdGF0dmZzX3QpKGJodl9kZXNjX3QgKiwgeGZzX3N0YXRmc190ICosIHN0cnVjdCB2bm9kZSAqKTsKK3R5cGVkZWYgaW50CSgqdmZzX3Jvb3RfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgYmh2X3Zub2RlICoqKTsKK3R5cGVkZWYgaW50CSgqdmZzX3N0YXR2ZnNfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfc3RhdHZmc190ICosCisJCQkJc3RydWN0IGJodl92bm9kZSAqKTsKIHR5cGVkZWYgaW50CSgqdmZzX3N5bmNfdCkoYmh2X2Rlc2NfdCAqLCBpbnQsIHN0cnVjdCBjcmVkICopOwotdHlwZWRlZiBpbnQJKCp2ZnNfdmdldF90KShiaHZfZGVzY190ICosIHN0cnVjdCB2bm9kZSAqKiwgc3RydWN0IGZpZCAqKTsKK3R5cGVkZWYgaW50CSgqdmZzX3ZnZXRfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgYmh2X3Zub2RlICoqLCBzdHJ1Y3QgZmlkICopOwogdHlwZWRlZiBpbnQJKCp2ZnNfZG1hcGlvcHNfdCkoYmh2X2Rlc2NfdCAqLCBjYWRkcl90KTsKIHR5cGVkZWYgaW50CSgqdmZzX3F1b3RhY3RsX3QpKGJodl9kZXNjX3QgKiwgaW50LCBpbnQsIGNhZGRyX3QpOwogdHlwZWRlZiB2b2lkCSgqdmZzX2luaXRfdm5vZGVfdCkoYmh2X2Rlc2NfdCAqLAotCQkJCXN0cnVjdCB2bm9kZSAqLCBiaHZfZGVzY190ICosIGludCk7CisJCQkJc3RydWN0IGJodl92bm9kZSAqLCBiaHZfZGVzY190ICosIGludCk7CiB0eXBlZGVmIHZvaWQJKCp2ZnNfZm9yY2Vfc2h1dGRvd25fdCkoYmh2X2Rlc2NfdCAqLCBpbnQsIGNoYXIgKiwgaW50KTsKIHR5cGVkZWYgdm9pZAkoKnZmc19mcmVlemVfdCkoYmh2X2Rlc2NfdCAqKTsKIAotdHlwZWRlZiBzdHJ1Y3QgdmZzb3BzIHsKK3R5cGVkZWYgc3RydWN0IGJodl92ZnNvcHMgewogCWJodl9wb3NpdGlvbl90CQl2Zl9wb3NpdGlvbjsJLyogYmVoYXZpb3IgY2hhaW4gcG9zaXRpb24gKi8KIAl2ZnNfbW91bnRfdAkJdmZzX21vdW50OwkvKiBtb3VudCBmaWxlIHN5c3RlbSAqLwogCXZmc19wYXJzZWFyZ3NfdAkJdmZzX3BhcnNlYXJnczsJLyogcGFyc2UgbW91bnQgb3B0aW9ucyAqLwpAQCAtMTI5LDgyICsxMzYsODIgQEAKIAl2ZnNfaW5pdF92bm9kZV90CXZmc19pbml0X3Zub2RlOwkvKiBpbml0aWFsaXplIGEgbmV3IHZub2RlICovCiAJdmZzX2ZvcmNlX3NodXRkb3duX3QJdmZzX2ZvcmNlX3NodXRkb3duOwkvKiBjcmFzaCBhbmQgYnVybiAqLwogCXZmc19mcmVlemVfdAkJdmZzX2ZyZWV6ZTsJLyogZnJlZXplIGZzIGZvciBzbmFwc2hvdCAqLwotfSB2ZnNvcHNfdDsKK30gYmh2X3Zmc29wc190OwogCiAvKgotICogVkZTJ3MuICBPcGVyYXRlcyBvbiB2ZnMgc3RydWN0dXJlIHBvaW50ZXJzIChzdGFydHMgYXQgYmh2IGhlYWQpLgorICogVmlydHVhbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIG9wZXJhdGluZyBmcm9tIGhlYWQgYmh2LgogICovCi0jZGVmaW5lIFZIRUFEKHYpCQkJKCh2KS0+dmZzX2ZiaHYpCi0jZGVmaW5lIFZGU19NT1VOVCh2LCBtYSxjciwgcnYpCQkoKHJ2KSA9IHZmc19tb3VudChWSEVBRCh2KSwgbWEsY3IpKQotI2RlZmluZSBWRlNfUEFSU0VBUkdTKHYsIG8sbWEsZiwgcnYpCSgocnYpID0gdmZzX3BhcnNlYXJncyhWSEVBRCh2KSwgbyxtYSxmKSkKLSNkZWZpbmUgVkZTX1NIT1dBUkdTKHYsIG0sIHJ2KQkJKChydikgPSB2ZnNfc2hvd2FyZ3MoVkhFQUQodiksIG0pKQotI2RlZmluZSBWRlNfVU5NT1VOVCh2LCBmLCBjciwgcnYpCSgocnYpID0gdmZzX3VubW91bnQoVkhFQUQodiksIGYsY3IpKQotI2RlZmluZSBWRlNfTU5UVVBEQVRFKHYsIGZsLCBhcmdzLCBydikJKChydikgPSB2ZnNfbW50dXBkYXRlKFZIRUFEKHYpLCBmbCwgYXJncykpCi0jZGVmaW5lIFZGU19ST09UKHYsIHZwcCwgcnYpCQkoKHJ2KSA9IHZmc19yb290KFZIRUFEKHYpLCB2cHApKQotI2RlZmluZSBWRlNfU1RBVFZGUyh2LCBzcCx2cCwgcnYpCSgocnYpID0gdmZzX3N0YXR2ZnMoVkhFQUQodiksIHNwLHZwKSkKLSNkZWZpbmUgVkZTX1NZTkModiwgZmxhZyxjciwgcnYpCSgocnYpID0gdmZzX3N5bmMoVkhFQUQodiksIGZsYWcsY3IpKQotI2RlZmluZSBWRlNfVkdFVCh2LCB2cHAsZmlkcCwgcnYpCSgocnYpID0gdmZzX3ZnZXQoVkhFQUQodiksIHZwcCxmaWRwKSkKLSNkZWZpbmUgVkZTX0RNQVBJT1BTKHYsIHAsIHJ2KQkJKChydikgPSB2ZnNfZG1hcGlvcHMoVkhFQUQodiksIHApKQotI2RlZmluZSBWRlNfUVVPVEFDVEwodiwgYyxpZCxwLCBydikJKChydikgPSB2ZnNfcXVvdGFjdGwoVkhFQUQodiksIGMsaWQscCkpCi0jZGVmaW5lIFZGU19JTklUX1ZOT0RFKHYsIHZwLGIsdWwpCSggdmZzX2luaXRfdm5vZGUoVkhFQUQodiksIHZwLGIsdWwpICkKLSNkZWZpbmUgVkZTX0ZPUkNFX1NIVVRET1dOKHYsIGZsLGYsbCkJKCB2ZnNfZm9yY2Vfc2h1dGRvd24oVkhFQUQodiksIGZsLGYsbCkgKQotI2RlZmluZSBWRlNfRlJFRVpFKHYpCQkJKCB2ZnNfZnJlZXplKFZIRUFEKHYpKSApCisjZGVmaW5lIFZGU0hFQUQodikJCQkoKHYpLT52ZnNfYmguYmhfZmlyc3QpCisjZGVmaW5lIGJodl92ZnNfbW91bnQodiwgbWEsY3IpCQl2ZnNfbW91bnQoVkZTSEVBRCh2KSwgbWEsY3IpCisjZGVmaW5lIGJodl92ZnNfcGFyc2VhcmdzKHYsIG8sbWEsZikJdmZzX3BhcnNlYXJncyhWRlNIRUFEKHYpLCBvLG1hLGYpCisjZGVmaW5lIGJodl92ZnNfc2hvd2FyZ3ModiwgbSkJCXZmc19zaG93YXJncyhWRlNIRUFEKHYpLCBtKQorI2RlZmluZSBiaHZfdmZzX3VubW91bnQodiwgZixjcikJdmZzX3VubW91bnQoVkZTSEVBRCh2KSwgZixjcikKKyNkZWZpbmUgYmh2X3Zmc19tbnR1cGRhdGUodiwgZmwsYXJncykJdmZzX21udHVwZGF0ZShWRlNIRUFEKHYpLCBmbCxhcmdzKQorI2RlZmluZSBiaHZfdmZzX3Jvb3QodiwgdnBwKQkJdmZzX3Jvb3QoVkZTSEVBRCh2KSwgdnBwKQorI2RlZmluZSBiaHZfdmZzX3N0YXR2ZnModiwgc3AsdnApCXZmc19zdGF0dmZzKFZGU0hFQUQodiksIHNwLHZwKQorI2RlZmluZSBiaHZfdmZzX3N5bmModiwgZmxhZyxjcikJdmZzX3N5bmMoVkZTSEVBRCh2KSwgZmxhZyxjcikKKyNkZWZpbmUgYmh2X3Zmc192Z2V0KHYsIHZwcCxmaWRwKQl2ZnNfdmdldChWRlNIRUFEKHYpLCB2cHAsZmlkcCkKKyNkZWZpbmUgYmh2X3Zmc19kbWFwaW9wcyh2LCBwKQkJdmZzX2RtYXBpb3BzKFZGU0hFQUQodiksIHApCisjZGVmaW5lIGJodl92ZnNfcXVvdGFjdGwodiwgYyxpZCxwKQl2ZnNfcXVvdGFjdGwoVkZTSEVBRCh2KSwgYyxpZCxwKQorI2RlZmluZSBiaHZfdmZzX2luaXRfdm5vZGUodiwgdnAsYix1bCkJdmZzX2luaXRfdm5vZGUoVkZTSEVBRCh2KSwgdnAsYix1bCkKKyNkZWZpbmUgYmh2X3Zmc19mb3JjZV9zaHV0ZG93bih2LHUsZixsKQl2ZnNfZm9yY2Vfc2h1dGRvd24oVkZTSEVBRCh2KSwgdSxmLGwpCisjZGVmaW5lIGJodl92ZnNfZnJlZXplKHYpCQl2ZnNfZnJlZXplKFZGU0hFQUQodikpCiAKIC8qCi0gKiBQVkZTJ3MuICBPcGVyYXRlcyBvbiBiZWhhdmlvciBkZXNjcmlwdG9yIHBvaW50ZXJzLgorICogVmlydHVhbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMsIG9wZXJhdGluZyBmcm9tIG5leHQgYmh2LgogICovCi0jZGVmaW5lIFBWRlNfTU9VTlQoYiwgbWEsY3IsIHJ2KQkoKHJ2KSA9IHZmc19tb3VudChiLCBtYSxjcikpCi0jZGVmaW5lIFBWRlNfUEFSU0VBUkdTKGIsIG8sbWEsZiwgcnYpCSgocnYpID0gdmZzX3BhcnNlYXJncyhiLCBvLG1hLGYpKQotI2RlZmluZSBQVkZTX1NIT1dBUkdTKGIsIG0sIHJ2KQkJKChydikgPSB2ZnNfc2hvd2FyZ3MoYiwgbSkpCi0jZGVmaW5lIFBWRlNfVU5NT1VOVChiLCBmLGNyLCBydikJKChydikgPSB2ZnNfdW5tb3VudChiLCBmLGNyKSkKLSNkZWZpbmUgUFZGU19NTlRVUERBVEUoYiwgZmwsIGFyZ3MsIHJ2KQkoKHJ2KSA9IHZmc19tbnR1cGRhdGUoYiwgZmwsIGFyZ3MpKQotI2RlZmluZSBQVkZTX1JPT1QoYiwgdnBwLCBydikJCSgocnYpID0gdmZzX3Jvb3QoYiwgdnBwKSkKLSNkZWZpbmUgUFZGU19TVEFUVkZTKGIsIHNwLHZwLCBydikJKChydikgPSB2ZnNfc3RhdHZmcyhiLCBzcCx2cCkpCi0jZGVmaW5lIFBWRlNfU1lOQyhiLCBmbGFnLGNyLCBydikJKChydikgPSB2ZnNfc3luYyhiLCBmbGFnLGNyKSkKLSNkZWZpbmUgUFZGU19WR0VUKGIsIHZwcCxmaWRwLCBydikJKChydikgPSB2ZnNfdmdldChiLCB2cHAsZmlkcCkpCi0jZGVmaW5lIFBWRlNfRE1BUElPUFMoYiwgcCwgcnYpCQkoKHJ2KSA9IHZmc19kbWFwaW9wcyhiLCBwKSkKLSNkZWZpbmUgUFZGU19RVU9UQUNUTChiLCBjLGlkLHAsIHJ2KQkoKHJ2KSA9IHZmc19xdW90YWN0bChiLCBjLGlkLHApKQotI2RlZmluZSBQVkZTX0lOSVRfVk5PREUoYiwgdnAsYjIsdWwpCSggdmZzX2luaXRfdm5vZGUoYiwgdnAsYjIsdWwpICkKLSNkZWZpbmUgUFZGU19GT1JDRV9TSFVURE9XTihiLCBmbCxmLGwpCSggdmZzX2ZvcmNlX3NodXRkb3duKGIsIGZsLGYsbCkgKQotI2RlZmluZSBQVkZTX0ZSRUVaRShiKQkJCSggdmZzX2ZyZWV6ZShiKSApCisjZGVmaW5lIGJodl9uZXh0X3Zmc19tb3VudChiLCBtYSxjcikJCXZmc19tb3VudChiLCBtYSxjcikKKyNkZWZpbmUgYmh2X25leHRfdmZzX3BhcnNlYXJncyhiLCBvLG1hLGYpCXZmc19wYXJzZWFyZ3MoYiwgbyxtYSxmKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfc2hvd2FyZ3MoYiwgbSkJCXZmc19zaG93YXJncyhiLCBtKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfdW5tb3VudChiLCBmLGNyKQkJdmZzX3VubW91bnQoYiwgZixjcikKKyNkZWZpbmUgYmh2X25leHRfdmZzX21udHVwZGF0ZShiLCBmbCxhcmdzKQl2ZnNfbW50dXBkYXRlKGIsIGZsLCBhcmdzKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfcm9vdChiLCB2cHApCQl2ZnNfcm9vdChiLCB2cHApCisjZGVmaW5lIGJodl9uZXh0X3Zmc19zdGF0dmZzKGIsIHNwLHZwKQkJdmZzX3N0YXR2ZnMoYiwgc3AsdnApCisjZGVmaW5lIGJodl9uZXh0X3Zmc19zeW5jKGIsIGZsYWcsY3IpCQl2ZnNfc3luYyhiLCBmbGFnLGNyKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfdmdldChiLCB2cHAsZmlkcCkJCXZmc192Z2V0KGIsIHZwcCxmaWRwKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfZG1hcGlvcHMoYiwgcCkJCXZmc19kbWFwaW9wcyhiLCBwKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfcXVvdGFjdGwoYiwgYyxpZCxwKQl2ZnNfcXVvdGFjdGwoYiwgYyxpZCxwKQorI2RlZmluZSBiaHZfbmV4dF92ZnNfaW5pdF92bm9kZShiLCB2cCxiMix1bCkJdmZzX2luaXRfdm5vZGUoYiwgdnAsYjIsdWwpCisjZGVmaW5lIGJodl9uZXh0X2ZvcmNlX3NodXRkb3duKGIsIGZsLGYsbCkJdmZzX2ZvcmNlX3NodXRkb3duKGIsIGZsLGYsbCkKKyNkZWZpbmUgYmh2X25leHRfdmZzX2ZyZWV6ZShiKQkJCXZmc19mcmVlemUoYikKIAogZXh0ZXJuIGludCB2ZnNfbW91bnQoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgeGZzX21vdW50X2FyZ3MgKiwgc3RydWN0IGNyZWQgKik7CiBleHRlcm4gaW50IHZmc19wYXJzZWFyZ3MoYmh2X2Rlc2NfdCAqLCBjaGFyICosIHN0cnVjdCB4ZnNfbW91bnRfYXJncyAqLCBpbnQpOwogZXh0ZXJuIGludCB2ZnNfc2hvd2FyZ3MoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3Qgc2VxX2ZpbGUgKik7CiBleHRlcm4gaW50IHZmc191bm1vdW50KGJodl9kZXNjX3QgKiwgaW50LCBzdHJ1Y3QgY3JlZCAqKTsKIGV4dGVybiBpbnQgdmZzX21udHVwZGF0ZShiaHZfZGVzY190ICosIGludCAqLCBzdHJ1Y3QgeGZzX21vdW50X2FyZ3MgKik7Ci1leHRlcm4gaW50IHZmc19yb290KGJodl9kZXNjX3QgKiwgc3RydWN0IHZub2RlICoqKTsKLWV4dGVybiBpbnQgdmZzX3N0YXR2ZnMoYmh2X2Rlc2NfdCAqLCB4ZnNfc3RhdGZzX3QgKiwgc3RydWN0IHZub2RlICopOworZXh0ZXJuIGludCB2ZnNfcm9vdChiaHZfZGVzY190ICosIHN0cnVjdCBiaHZfdm5vZGUgKiopOworZXh0ZXJuIGludCB2ZnNfc3RhdHZmcyhiaHZfZGVzY190ICosIGJodl9zdGF0dmZzX3QgKiwgc3RydWN0IGJodl92bm9kZSAqKTsKIGV4dGVybiBpbnQgdmZzX3N5bmMoYmh2X2Rlc2NfdCAqLCBpbnQsIHN0cnVjdCBjcmVkICopOwotZXh0ZXJuIGludCB2ZnNfdmdldChiaHZfZGVzY190ICosIHN0cnVjdCB2bm9kZSAqKiwgc3RydWN0IGZpZCAqKTsKK2V4dGVybiBpbnQgdmZzX3ZnZXQoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgYmh2X3Zub2RlICoqLCBzdHJ1Y3QgZmlkICopOwogZXh0ZXJuIGludCB2ZnNfZG1hcGlvcHMoYmh2X2Rlc2NfdCAqLCBjYWRkcl90KTsKIGV4dGVybiBpbnQgdmZzX3F1b3RhY3RsKGJodl9kZXNjX3QgKiwgaW50LCBpbnQsIGNhZGRyX3QpOwotZXh0ZXJuIHZvaWQgdmZzX2luaXRfdm5vZGUoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3Qgdm5vZGUgKiwgYmh2X2Rlc2NfdCAqLCBpbnQpOworZXh0ZXJuIHZvaWQgdmZzX2luaXRfdm5vZGUoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgYmh2X3Zub2RlICosIGJodl9kZXNjX3QgKiwgaW50KTsKIGV4dGVybiB2b2lkIHZmc19mb3JjZV9zaHV0ZG93bihiaHZfZGVzY190ICosIGludCwgY2hhciAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgdmZzX2ZyZWV6ZShiaHZfZGVzY190ICopOwogCi10eXBlZGVmIHN0cnVjdCBiaHZfdmZzb3BzIHsKLQlzdHJ1Y3QgdmZzb3BzCQliaHZfY29tbW9uOworI2RlZmluZSB2ZnNfdGVzdF9mb3JfZnJlZXplKHZmcykJKCh2ZnMpLT52ZnNfc3VwZXItPnNfZnJvemVuKQorI2RlZmluZSB2ZnNfd2FpdF9mb3JfZnJlZXplKHZmcyxsKQl2ZnNfY2hlY2tfZnJvemVuKCh2ZnMpLT52ZnNfc3VwZXIsIChsKSkKKyAKK3R5cGVkZWYgc3RydWN0IGJodl9tb2R1bGVfdmZzb3BzIHsKKwlzdHJ1Y3QgYmh2X3Zmc29wcwliaHZfY29tbW9uOwogCXZvaWQgKgkJCWJodl9jdXN0b207Ci19IGJodl92ZnNvcHNfdDsKK30gYmh2X21vZHVsZV92ZnNvcHNfdDsKIAotI2RlZmluZSB2ZnNfYmh2X2xvb2t1cCh2LCBpZCkJKCBiaHZfbG9va3VwX3JhbmdlKCYodiktPnZmc19iaCwgKGlkKSwgKGlkKSkgKQotI2RlZmluZSB2ZnNfYmh2X2N1c3RvbShiKQkoICgoYmh2X3Zmc29wc190ICopQkhWX09QUyhiKSktPmJodl9jdXN0b20gKQotI2RlZmluZSB2ZnNfYmh2X3NldF9jdXN0b20oYixvKQkoIChiKS0+Ymh2X2N1c3RvbSA9ICh2b2lkICopKG8pKQotI2RlZmluZSB2ZnNfYmh2X2Nscl9jdXN0b20oYikJKCAoYiktPmJodl9jdXN0b20gPSBOVUxMICkKKyNkZWZpbmUgdmZzX2Jodl9sb29rdXAodiwgaWQpCShiaHZfbG9va3VwX3JhbmdlKCYodiktPnZmc19iaCwgKGlkKSwgKGlkKSkpCisjZGVmaW5lIHZmc19iaHZfY3VzdG9tKGIpCSgoKGJodl9tb2R1bGVfdmZzb3BzX3QqKUJIVl9PUFMoYikpLT5iaHZfY3VzdG9tKQorI2RlZmluZSB2ZnNfYmh2X3NldF9jdXN0b20oYixvKQkoKGIpLT5iaHZfY3VzdG9tID0gKHZvaWQgKikobykpCisjZGVmaW5lIHZmc19iaHZfY2xyX2N1c3RvbShiKQkoKGIpLT5iaHZfY3VzdG9tID0gTlVMTCkKIAotZXh0ZXJuIHZmc190ICp2ZnNfYWxsb2NhdGUoc3RydWN0IHN1cGVyX2Jsb2NrICopOwotZXh0ZXJuIHZmc190ICp2ZnNfZnJvbV9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci1leHRlcm4gdm9pZCB2ZnNfZGVhbGxvY2F0ZSh2ZnNfdCAqKTsKLWV4dGVybiB2b2lkIHZmc19pbnNlcnRvcHModmZzX3QgKiwgYmh2X3Zmc29wc190ICopOwotZXh0ZXJuIHZvaWQgdmZzX2luc2VydGJodih2ZnNfdCAqLCBiaHZfZGVzY190ICosIHZmc29wc190ICosIHZvaWQgKik7CitleHRlcm4gYmh2X3Zmc190ICp2ZnNfYWxsb2NhdGUoc3RydWN0IHN1cGVyX2Jsb2NrICopOworZXh0ZXJuIGJodl92ZnNfdCAqdmZzX2Zyb21fc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOworZXh0ZXJuIHZvaWQgdmZzX2RlYWxsb2NhdGUoYmh2X3Zmc190ICopOworZXh0ZXJuIHZvaWQgdmZzX2luc2VydGJodihiaHZfdmZzX3QgKiwgYmh2X2Rlc2NfdCAqLCBiaHZfdmZzb3BzX3QgKiwgdm9pZCAqKTsKIAotZXh0ZXJuIHZvaWQgYmh2X2luc2VydF9hbGxfdmZzb3BzKHN0cnVjdCB2ZnMgKik7Ci1leHRlcm4gdm9pZCBiaHZfcmVtb3ZlX2FsbF92ZnNvcHMoc3RydWN0IHZmcyAqLCBpbnQpOwotZXh0ZXJuIHZvaWQgYmh2X3JlbW92ZV92ZnNvcHMoc3RydWN0IHZmcyAqLCBpbnQpOworZXh0ZXJuIHZvaWQgdmZzX2luc2VydG9wcyhiaHZfdmZzX3QgKiwgYmh2X21vZHVsZV92ZnNvcHNfdCAqKTsKIAotI2RlZmluZSBmc19mcm96ZW4odmZzcCkJCSgodmZzcCktPnZmc19zdXBlci0+c19mcm96ZW4pCi0jZGVmaW5lIGZzX2NoZWNrX2Zyb3plbih2ZnNwLCBsZXZlbCkgXAotCXZmc19jaGVja19mcm96ZW4odmZzcC0+dmZzX3N1cGVyLCBsZXZlbCk7CitleHRlcm4gdm9pZCBiaHZfaW5zZXJ0X2FsbF92ZnNvcHMoc3RydWN0IGJodl92ZnMgKik7CitleHRlcm4gdm9pZCBiaHZfcmVtb3ZlX2FsbF92ZnNvcHMoc3RydWN0IGJodl92ZnMgKiwgaW50KTsKK2V4dGVybiB2b2lkIGJodl9yZW1vdmVfdmZzb3BzKHN0cnVjdCBiaHZfdmZzICosIGludCk7CiAKICNlbmRpZgkvKiBfX1hGU19WRlNfSF9fICovCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc192bm9kZS5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfdm5vZGUuYwppbmRleCBkMjdjMjViLi42NjI4ZDk2IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc192bm9kZS5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3Zub2RlLmMKQEAgLTM5LDcgKzM5LDcgQEAKIAogdm9pZAogdm5faW93YWl0KAotCXN0cnVjdCB2bm9kZQkqdnApCisJYmh2X3Zub2RlX3QJKnZwKQogewogCXdhaXRfcXVldWVfaGVhZF90ICp3cSA9IHZwdG9zeW5jKHZwKTsKIApAQCAtNDgsMTcgKzQ4LDMzIEBACiAKIHZvaWQKIHZuX2lvd2FrZSgKLQlzdHJ1Y3Qgdm5vZGUJKnZwKQorCWJodl92bm9kZV90CSp2cCkKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmdnAtPnZfaW9jb3VudCkpCiAJCXdha2VfdXAodnB0b3N5bmModnApKTsKIH0KIAotc3RydWN0IHZub2RlICoKKy8qCisgKiBWb2x1bWUgbWFuYWdlcnMgc3VwcG9ydGluZyBtdWx0aXBsZSBwYXRocyBjYW4gc2VuZCBiYWNrIEVOT0RFViB3aGVuIHRoZQorICogZmluYWwgcGF0aCBkaXNhcHBlYXJzLiAgSW4gdGhpcyBjYXNlIGNvbnRpbnVpbmcgdG8gZmlsbCB0aGUgcGFnZSBjYWNoZQorICogd2l0aCBkaXJ0eSBkYXRhIHdoaWNoIGNhbm5vdCBiZSB3cml0dGVuIG91dCBpcyBldmlsLCBzbyBwcmV2ZW50IHRoYXQuCisgKi8KK3ZvaWQKK3ZuX2lvZXJyb3IoCisJYmh2X3Zub2RlX3QJKnZwLAorCWludAkJZXJyb3IsCisJY2hhcgkJKmYsCisJaW50CQlsKQoreworCWlmICh1bmxpa2VseShlcnJvciA9PSAtRU5PREVWKSkKKwkJYmh2X3Zmc19mb3JjZV9zaHV0ZG93bih2cC0+dl92ZnNwLCBTSFVURE9XTl9ERVZJQ0VfUkVRLCBmLCBsKTsKK30KKworYmh2X3Zub2RlX3QgKgogdm5faW5pdGlhbGl6ZSgKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlKQogewotCXN0cnVjdCB2bm9kZQkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKKwliaHZfdm5vZGVfdAkqdnAgPSB2bl9mcm9tX2lub2RlKGlub2RlKTsKIAogCVhGU19TVEFUU19JTkModm5fYWN0aXZlKTsKIAlYRlNfU1RBVFNfSU5DKHZuX2FsbG9jKTsKQEAgLTk0LDggKzExMCw4IEBACiAgKi8KIHZvaWQKIHZuX3JldmFsaWRhdGVfY29yZSgKLQlzdHJ1Y3Qgdm5vZGUJKnZwLAotCXZhdHRyX3QJCSp2YXApCisJYmh2X3Zub2RlX3QJKnZwLAorCWJodl92YXR0cl90CSp2YXApCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZSA9IHZuX3RvX2lub2RlKHZwKTsKIApAQCAtMTMwLDE0ICsxNDYsMTQgQEAKICAqLwogaW50CiBfX3ZuX3JldmFsaWRhdGUoCi0Jc3RydWN0IHZub2RlCSp2cCwKLQlzdHJ1Y3QgdmF0dHIJKnZhdHRyKQorCWJodl92bm9kZV90CSp2cCwKKwliaHZfdmF0dHJfdAkqdmF0dHIpCiB7CiAJaW50CQllcnJvcjsKIAogCXZuX3RyYWNlX2VudHJ5KHZwLCBfX0ZVTkNUSU9OX18sIChpbnN0X3QgKilfX3JldHVybl9hZGRyZXNzKTsKIAl2YXR0ci0+dmFfbWFzayA9IFhGU19BVF9TVEFUIHwgWEZTX0FUX1hGTEFHUzsKLQlWT1BfR0VUQVRUUih2cCwgdmF0dHIsIDAsIE5VTEwsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfZ2V0YXR0cih2cCwgdmF0dHIsIDAsIE5VTEwpOwogCWlmIChsaWtlbHkoIWVycm9yKSkgewogCQl2bl9yZXZhbGlkYXRlX2NvcmUodnAsIHZhdHRyKTsKIAkJVlVOTU9ESUZZKHZwKTsKQEAgLTE0Nyw5ICsxNjMsOSBAQAogCiBpbnQKIHZuX3JldmFsaWRhdGUoCi0Jc3RydWN0IHZub2RlCSp2cCkKKwliaHZfdm5vZGVfdAkqdnApCiB7Ci0JdmF0dHJfdAkJdmF0dHI7CisJYmh2X3ZhdHRyX3QJdmF0dHI7CiAKIAlyZXR1cm4gX192bl9yZXZhbGlkYXRlKHZwLCAmdmF0dHIpOwogfQpAQCAtMTU3LDkgKzE3Myw5IEBACiAvKgogICogQWRkIGEgcmVmZXJlbmNlIHRvIGEgcmVmZXJlbmNlZCB2bm9kZS4KICAqLwotc3RydWN0IHZub2RlICoKK2Jodl92bm9kZV90ICoKIHZuX2hvbGQoCi0Jc3RydWN0IHZub2RlCSp2cCkKKwliaHZfdm5vZGVfdAkqdnApCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZTsKIApAQCAtMTkyLDMxICsyMDgsMzEgQEAKICAqIFZub2RlIHRyYWNpbmcgY29kZS4KICAqLwogdm9pZAotdm5fdHJhY2VfZW50cnkodm5vZGVfdCAqdnAsIGNvbnN0IGNoYXIgKmZ1bmMsIGluc3RfdCAqcmEpCit2bl90cmFjZV9lbnRyeShiaHZfdm5vZGVfdCAqdnAsIGNvbnN0IGNoYXIgKmZ1bmMsIGluc3RfdCAqcmEpCiB7CiAJS1RSQUNFX0VOVEVSKHZwLCBWTk9ERV9LVFJBQ0VfRU5UUlksIGZ1bmMsIDAsIHJhKTsKIH0KIAogdm9pZAotdm5fdHJhY2VfZXhpdCh2bm9kZV90ICp2cCwgY29uc3QgY2hhciAqZnVuYywgaW5zdF90ICpyYSkKK3ZuX3RyYWNlX2V4aXQoYmh2X3Zub2RlX3QgKnZwLCBjb25zdCBjaGFyICpmdW5jLCBpbnN0X3QgKnJhKQogewogCUtUUkFDRV9FTlRFUih2cCwgVk5PREVfS1RSQUNFX0VYSVQsIGZ1bmMsIDAsIHJhKTsKIH0KIAogdm9pZAotdm5fdHJhY2VfaG9sZCh2bm9kZV90ICp2cCwgY2hhciAqZmlsZSwgaW50IGxpbmUsIGluc3RfdCAqcmEpCit2bl90cmFjZV9ob2xkKGJodl92bm9kZV90ICp2cCwgY2hhciAqZmlsZSwgaW50IGxpbmUsIGluc3RfdCAqcmEpCiB7CiAJS1RSQUNFX0VOVEVSKHZwLCBWTk9ERV9LVFJBQ0VfSE9MRCwgZmlsZSwgbGluZSwgcmEpOwogfQogCiB2b2lkCi12bl90cmFjZV9yZWYodm5vZGVfdCAqdnAsIGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnN0X3QgKnJhKQordm5fdHJhY2VfcmVmKGJodl92bm9kZV90ICp2cCwgY2hhciAqZmlsZSwgaW50IGxpbmUsIGluc3RfdCAqcmEpCiB7CiAJS1RSQUNFX0VOVEVSKHZwLCBWTk9ERV9LVFJBQ0VfUkVGLCBmaWxlLCBsaW5lLCByYSk7CiB9CiAKIHZvaWQKLXZuX3RyYWNlX3JlbGUodm5vZGVfdCAqdnAsIGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnN0X3QgKnJhKQordm5fdHJhY2VfcmVsZShiaHZfdm5vZGVfdCAqdnAsIGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnN0X3QgKnJhKQogewogCUtUUkFDRV9FTlRFUih2cCwgVk5PREVfS1RSQUNFX1JFTEUsIGZpbGUsIGxpbmUsIHJhKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3Zub2RlLmggYi9mcy94ZnMvbGludXgtMi42L3hmc192bm9kZS5oCmluZGV4IDJhOGUxNmMuLjM1YzZhMDEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3Zub2RlLmgKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfdm5vZGUuaApAQCAtMTQsNTcgKzE0LDM1IEBACiAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKICAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk4OSwgMTk5MwotICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgogICovCiAjaWZuZGVmIF9fWEZTX1ZOT0RFX0hfXwogI2RlZmluZSBfX1hGU19WTk9ERV9IX18KIAogc3RydWN0IHVpbzsKIHN0cnVjdCBmaWxlOwotc3RydWN0IHZhdHRyOworc3RydWN0IGJodl92ZnM7CitzdHJ1Y3QgYmh2X3ZhdHRyOwogc3RydWN0IHhmc19pb21hcDsKIHN0cnVjdCBhdHRybGlzdF9jdXJzb3Jfa2VybjsKIAordHlwZWRlZiBzdHJ1Y3QgZGVudHJ5CWJodl92bmFtZV90OwordHlwZWRlZiBfX3U2NAkJYmh2X3ZudW1iZXJfdDsKIAotdHlwZWRlZiB4ZnNfaW5vX3Qgdm51bWJlcl90OwotdHlwZWRlZiBzdHJ1Y3QgZGVudHJ5IHZuYW1lX3Q7Ci10eXBlZGVmIGJodl9oZWFkX3Qgdm5fYmh2X2hlYWRfdDsKK3R5cGVkZWYgZW51bSBiaHZfdmZsYWdzIHsKKwlWTU9ESUZJRUQJPSAweDA4LAkvKiBYRlMgaW5vZGUgc3RhdGUgcG9zc2libHkgZGlmZmVycyAqLworCQkJCS8qIHRvIHRoZSBMaW51eCBpbm9kZSBzdGF0ZS4gKi8KKwlWVFJVTkNBVEVECT0gMHg0MCwJLyogdHJ1bmNhdGVkIGRvd24gc28gZmx1c2gtb24tY2xvc2UgKi8KK30gYmh2X3ZmbGFnc190OwogCiAvKgogICogTVAgbG9ja2luZyBwcm90b2NvbHM6CiAgKgl2X2ZsYWcsIHZfdmZzcAkJCQlWTl9MT0NLL1ZOX1VOTE9DSwogICovCi10eXBlZGVmIHN0cnVjdCB2bm9kZSB7Ci0JX191MzIJCXZfZmxhZzsJCQkvKiB2bm9kZSBmbGFncyAoc2VlIGJlbG93KSAqLwotCXN0cnVjdCB2ZnMJKnZfdmZzcDsJCS8qIHB0ciB0byBjb250YWluaW5nIFZGUyAqLwotCXZudW1iZXJfdAl2X251bWJlcjsJCS8qIGluLWNvcmUgdm5vZGUgbnVtYmVyICovCi0Jdm5fYmh2X2hlYWRfdAl2X2JoOwkJCS8qIGJlaGF2aW9yIGhlYWQgKi8KK3R5cGVkZWYgc3RydWN0IGJodl92bm9kZSB7CisJYmh2X3ZmbGFnc190CXZfZmxhZzsJCQkvKiB2bm9kZSBmbGFncyAoc2VlIGFib3ZlKSAqLworCWJodl92ZnNfdAkqdl92ZnNwOwkJLyogcHRyIHRvIGNvbnRhaW5pbmcgVkZTICovCisJYmh2X3ZudW1iZXJfdAl2X251bWJlcjsJCS8qIGluLWNvcmUgdm5vZGUgbnVtYmVyICovCisJYmh2X2hlYWRfdAl2X2JoOwkJCS8qIGJlaGF2aW9yIGhlYWQgKi8KIAlzcGlubG9ja190CXZfbG9jazsJCQkvKiBWTl9MT0NLL1ZOX1VOTE9DSyAqLwogCWF0b21pY190CXZfaW9jb3VudDsJCS8qIG91dHN0YW5kaW5nIEkvTyBjb3VudCAqLwogI2lmZGVmIFhGU19WTk9ERV9UUkFDRQpAQCAtNzIsNyArNTAsNyBAQAogI2VuZGlmCiAJc3RydWN0IGlub2RlCXZfaW5vZGU7CQkvKiBMaW51eCBpbm9kZSAqLwogCS8qIGlub2RlIE1VU1QgYmUgbGFzdCAqLwotfSB2bm9kZV90OworfSBiaHZfdm5vZGVfdDsKIAogI2RlZmluZSBWTl9JU0xOSyh2cCkJU19JU0xOSygodnApLT52X2lub2RlLmlfbW9kZSkKICNkZWZpbmUgVk5fSVNSRUcodnApCVNfSVNSRUcoKHZwKS0+dl9pbm9kZS5pX21vZGUpCkBAIC04MCw5ICs1OCw2IEBACiAjZGVmaW5lIFZOX0lTQ0hSKHZwKQlTX0lTQ0hSKCh2cCktPnZfaW5vZGUuaV9tb2RlKQogI2RlZmluZSBWTl9JU0JMSyh2cCkJU19JU0JMSygodnApLT52X2lub2RlLmlfbW9kZSkKIAotI2RlZmluZSB2X2ZiaHYJCQl2X2JoLmJoX2ZpcnN0CSAgICAgICAvKiBmaXJzdCBiZWhhdmlvciAqLwotI2RlZmluZSB2X2ZvcHMJCQl2X2JoLmJoX2ZpcnN0LT5iZF9vcHMgIC8qIGZpcnN0IGJlaGF2aW9yIG9wcyAqLwotCiAjZGVmaW5lIFZOT0RFX1BPU0lUSU9OX0JBU0UJQkhWX1BPU0lUSU9OX0JBU0UJLyogY2hhaW4gYm90dG9tICovCiAjZGVmaW5lIFZOT0RFX1BPU0lUSU9OX1RPUAlCSFZfUE9TSVRJT05fVE9QCS8qIGNoYWluIHRvcCAqLwogI2RlZmluZSBWTk9ERV9QT1NJVElPTl9JTlZBTElECUJIVl9QT1NJVElPTl9JTlZBTElECS8qIGludmFsaWQgcG9zLiBudW0gKi8KQEAgLTEwNCw4ICs3OSw4IEBACiAvKgogICogTWFjcm9zIGZvciBkZWFsaW5nIHdpdGggdGhlIGJlaGF2aW9yIGRlc2NyaXB0b3IgaW5zaWRlIG9mIHRoZSB2bm9kZS4KICAqLwotI2RlZmluZSBCSFZfVE9fVk5PREUoYmRwKQkoKHZub2RlX3QgKilCSFZfVk9CSihiZHApKQotI2RlZmluZSBCSFZfVE9fVk5PREVfTlVMTChiZHApCSgodm5vZGVfdCAqKUJIVl9WT0JKTlVMTChiZHApKQorI2RlZmluZSBCSFZfVE9fVk5PREUoYmRwKQkoKGJodl92bm9kZV90ICopQkhWX1ZPQkooYmRwKSkKKyNkZWZpbmUgQkhWX1RPX1ZOT0RFX05VTEwoYmRwKQkoKGJodl92bm9kZV90ICopQkhWX1ZPQkpOVUxMKGJkcCkpCiAKICNkZWZpbmUgVk5fQkhWX0hFQUQodnApCQkJKChiaHZfaGVhZF90ICopKCYoKHZwKS0+dl9iaCkpKQogI2RlZmluZSB2bl9iaHZfaGVhZF9pbml0KGJocCxuYW1lKQliaHZfaGVhZF9pbml0KGJocCxuYW1lKQpAQCAtMTE2LDM1ICs5MSwyOSBAQAogLyoKICAqIFZub2RlIHRvIExpbnV4IGlub2RlIG1hcHBpbmcuCiAgKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IHZub2RlICp2bl9mcm9tX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBiaHZfdm5vZGUgKnZuX2Zyb21faW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKIHsKLQlyZXR1cm4gKHZub2RlX3QgKilsaXN0X2VudHJ5KGlub2RlLCB2bm9kZV90LCB2X2lub2RlKTsKKwlyZXR1cm4gKGJodl92bm9kZV90ICopbGlzdF9lbnRyeShpbm9kZSwgYmh2X3Zub2RlX3QsIHZfaW5vZGUpOwogfQotc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKnZuX3RvX2lub2RlKHN0cnVjdCB2bm9kZSAqdm5vZGUpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqdm5fdG9faW5vZGUoc3RydWN0IGJodl92bm9kZSAqdm5vZGUpCiB7CiAJcmV0dXJuICZ2bm9kZS0+dl9pbm9kZTsKIH0KIAogLyoKLSAqIFZub2RlIGZsYWdzLgorICogVmFsdWVzIGZvciB0aGUgdm9wX3J3bG9jay9yd3VubG9jayBmbGFncyBwYXJhbWV0ZXIuCiAgKi8KLSNkZWZpbmUgVk1PRElGSUVECSAgICAgICAweDgJLyogWEZTIGlub2RlIHN0YXRlIHBvc3NpYmx5IGRpZmZlcnMgKi8KLQkJCQkJLyogdG8gdGhlIExpbnV4IGlub2RlIHN0YXRlLgkqLwotCi0vKgotICogVmFsdWVzIGZvciB0aGUgVk9QX1JXTE9DSyBhbmQgVk9QX1JXVU5MT0NLIGZsYWdzIHBhcmFtZXRlci4KLSAqLwotdHlwZWRlZiBlbnVtIHZyd2xvY2sgewordHlwZWRlZiBlbnVtIGJodl92cndsb2NrIHsKIAlWUldMT0NLX05PTkUsCiAJVlJXTE9DS19SRUFELAogCVZSV0xPQ0tfV1JJVEUsCiAJVlJXTE9DS19XUklURV9ESVJFQ1QsCiAJVlJXTE9DS19UUllfUkVBRCwKIAlWUldMT0NLX1RSWV9XUklURQotfSB2cndsb2NrX3Q7Cit9IGJodl92cndsb2NrX3Q7CiAKIC8qCi0gKiBSZXR1cm4gdmFsdWVzIGZvciBWT1BfSU5BQ1RJVkUuICBBIHJldHVybiB2YWx1ZSBvZgorICogUmV0dXJuIHZhbHVlcyBmb3IgYmh2X3ZvcF9pbmFjdGl2ZS4gIEEgcmV0dXJuIHZhbHVlIG9mCiAgKiBWTl9JTkFDVElWRV9OT0NBQ0hFIGltcGxpZXMgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gYmVoYXZpb3IKICAqIGhhcyBkaXNhc3NvY2lhdGVkIGl0cyBzdGF0ZSBhbmQgYmh2X2Rlc2NfdCBmcm9tIHRoZSB2bm9kZS4KICAqLwpAQCAtMTUyLDE4ICsxMjEsMjAgQEAKICNkZWZpbmUJVk5fSU5BQ1RJVkVfTk9DQUNIRQkxCiAKIC8qCi0gKiBWYWx1ZXMgZm9yIHRoZSBjbWQgY29kZSBnaXZlbiB0byBWT1BfVk5PREVfQ0hBTkdFLgorICogVmFsdWVzIGZvciB0aGUgY21kIGNvZGUgZ2l2ZW4gdG8gdm9wX3Zub2RlX2NoYW5nZS4KICAqLwotdHlwZWRlZiBlbnVtIHZjaGFuZ2UgewordHlwZWRlZiBlbnVtIGJodl92Y2hhbmdlIHsKIAlWQ0hBTkdFX0ZMQUdTX0ZSTE9DS1MJCT0gMCwKIAlWQ0hBTkdFX0ZMQUdTX0VORl9MT0NLSU5HCT0gMSwKIAlWQ0hBTkdFX0ZMQUdTX1RSVU5DQVRFRAkJPSAyLAogCVZDSEFOR0VfRkxBR1NfUEFHRV9ESVJUWQk9IDMsCiAJVkNIQU5HRV9GTEFHU19JT0VYQ0xfQ09VTlQJPSA0Ci19IHZjaGFuZ2VfdDsKK30gYmh2X3ZjaGFuZ2VfdDsKIAordHlwZWRlZiBlbnVtIHsgTF9GQUxTRSwgTF9UUlVFIH0gbGFzdGNsb3NlX3Q7CiAKIHR5cGVkZWYgaW50CSgqdm9wX29wZW5fdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgY3JlZCAqKTsKK3R5cGVkZWYgaW50CSgqdm9wX2Nsb3NlX3QpKGJodl9kZXNjX3QgKiwgaW50LCBsYXN0Y2xvc2VfdCwgc3RydWN0IGNyZWQgKik7CiB0eXBlZGVmIHNzaXplX3QgKCp2b3BfcmVhZF90KShiaHZfZGVzY190ICosIHN0cnVjdCBraW9jYiAqLAogCQkJCWNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB1bnNpZ25lZCBpbnQsCiAJCQkJbG9mZl90ICosIGludCwgc3RydWN0IGNyZWQgKik7CkBAIC0xODEsMjcgKzE1MiwyNyBAQAogCQkJCXN0cnVjdCBjcmVkICopOwogdHlwZWRlZiBpbnQJKCp2b3BfaW9jdGxfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwKIAkJCQlpbnQsIHVuc2lnbmVkIGludCwgdm9pZCBfX3VzZXIgKik7Ci10eXBlZGVmIGludAkoKnZvcF9nZXRhdHRyX3QpKGJodl9kZXNjX3QgKiwgc3RydWN0IHZhdHRyICosIGludCwKK3R5cGVkZWYgaW50CSgqdm9wX2dldGF0dHJfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgYmh2X3ZhdHRyICosIGludCwKIAkJCQlzdHJ1Y3QgY3JlZCAqKTsKLXR5cGVkZWYgaW50CSgqdm9wX3NldGF0dHJfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgdmF0dHIgKiwgaW50LAordHlwZWRlZiBpbnQJKCp2b3Bfc2V0YXR0cl90KShiaHZfZGVzY190ICosIHN0cnVjdCBiaHZfdmF0dHIgKiwgaW50LAogCQkJCXN0cnVjdCBjcmVkICopOwogdHlwZWRlZiBpbnQJKCp2b3BfYWNjZXNzX3QpKGJodl9kZXNjX3QgKiwgaW50LCBzdHJ1Y3QgY3JlZCAqKTsKLXR5cGVkZWYgaW50CSgqdm9wX2xvb2t1cF90KShiaHZfZGVzY190ICosIHZuYW1lX3QgKiwgdm5vZGVfdCAqKiwKLQkJCQlpbnQsIHZub2RlX3QgKiwgc3RydWN0IGNyZWQgKik7Ci10eXBlZGVmIGludAkoKnZvcF9jcmVhdGVfdCkoYmh2X2Rlc2NfdCAqLCB2bmFtZV90ICosIHN0cnVjdCB2YXR0ciAqLAotCQkJCXZub2RlX3QgKiosIHN0cnVjdCBjcmVkICopOwotdHlwZWRlZiBpbnQJKCp2b3BfcmVtb3ZlX3QpKGJodl9kZXNjX3QgKiwgdm5hbWVfdCAqLCBzdHJ1Y3QgY3JlZCAqKTsKLXR5cGVkZWYgaW50CSgqdm9wX2xpbmtfdCkoYmh2X2Rlc2NfdCAqLCB2bm9kZV90ICosIHZuYW1lX3QgKiwKK3R5cGVkZWYgaW50CSgqdm9wX2xvb2t1cF90KShiaHZfZGVzY190ICosIGJodl92bmFtZV90ICosIGJodl92bm9kZV90ICoqLAorCQkJCWludCwgYmh2X3Zub2RlX3QgKiwgc3RydWN0IGNyZWQgKik7Cit0eXBlZGVmIGludAkoKnZvcF9jcmVhdGVfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdm5hbWVfdCAqLCBzdHJ1Y3QgYmh2X3ZhdHRyICosCisJCQkJYmh2X3Zub2RlX3QgKiosIHN0cnVjdCBjcmVkICopOwordHlwZWRlZiBpbnQJKCp2b3BfcmVtb3ZlX3QpKGJodl9kZXNjX3QgKiwgYmh2X3ZuYW1lX3QgKiwgc3RydWN0IGNyZWQgKik7Cit0eXBlZGVmIGludAkoKnZvcF9saW5rX3QpKGJodl9kZXNjX3QgKiwgYmh2X3Zub2RlX3QgKiwgYmh2X3ZuYW1lX3QgKiwKIAkJCQlzdHJ1Y3QgY3JlZCAqKTsKLXR5cGVkZWYgaW50CSgqdm9wX3JlbmFtZV90KShiaHZfZGVzY190ICosIHZuYW1lX3QgKiwgdm5vZGVfdCAqLCB2bmFtZV90ICosCi0JCQkJc3RydWN0IGNyZWQgKik7Ci10eXBlZGVmIGludAkoKnZvcF9ta2Rpcl90KShiaHZfZGVzY190ICosIHZuYW1lX3QgKiwgc3RydWN0IHZhdHRyICosCi0JCQkJdm5vZGVfdCAqKiwgc3RydWN0IGNyZWQgKik7Ci10eXBlZGVmIGludAkoKnZvcF9ybWRpcl90KShiaHZfZGVzY190ICosIHZuYW1lX3QgKiwgc3RydWN0IGNyZWQgKik7Cit0eXBlZGVmIGludAkoKnZvcF9yZW5hbWVfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdm5hbWVfdCAqLCBiaHZfdm5vZGVfdCAqLAorCQkJCWJodl92bmFtZV90ICosIHN0cnVjdCBjcmVkICopOwordHlwZWRlZiBpbnQJKCp2b3BfbWtkaXJfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdm5hbWVfdCAqLCBzdHJ1Y3QgYmh2X3ZhdHRyICosCisJCQkJYmh2X3Zub2RlX3QgKiosIHN0cnVjdCBjcmVkICopOwordHlwZWRlZiBpbnQJKCp2b3Bfcm1kaXJfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdm5hbWVfdCAqLCBzdHJ1Y3QgY3JlZCAqKTsKIHR5cGVkZWYgaW50CSgqdm9wX3JlYWRkaXJfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgdWlvICosIHN0cnVjdCBjcmVkICosCiAJCQkJaW50ICopOwotdHlwZWRlZiBpbnQJKCp2b3Bfc3ltbGlua190KShiaHZfZGVzY190ICosIHZuYW1lX3QgKiwgc3RydWN0IHZhdHRyICosCi0JCQkJY2hhciAqLCB2bm9kZV90ICoqLCBzdHJ1Y3QgY3JlZCAqKTsKK3R5cGVkZWYgaW50CSgqdm9wX3N5bWxpbmtfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdm5hbWVfdCAqLCBzdHJ1Y3QgYmh2X3ZhdHRyKiwKKwkJCQljaGFyICosIGJodl92bm9kZV90ICoqLCBzdHJ1Y3QgY3JlZCAqKTsKIHR5cGVkZWYgaW50CSgqdm9wX3JlYWRsaW5rX3QpKGJodl9kZXNjX3QgKiwgc3RydWN0IHVpbyAqLCBpbnQsCiAJCQkJc3RydWN0IGNyZWQgKik7CiB0eXBlZGVmIGludAkoKnZvcF9mc3luY190KShiaHZfZGVzY190ICosIGludCwgc3RydWN0IGNyZWQgKiwKQEAgLTIwOSw4ICsxODAsOCBAQAogdHlwZWRlZiBpbnQJKCp2b3BfaW5hY3RpdmVfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgY3JlZCAqKTsKIHR5cGVkZWYgaW50CSgqdm9wX2ZpZDJfdCkoYmh2X2Rlc2NfdCAqLCBzdHJ1Y3QgZmlkICopOwogdHlwZWRlZiBpbnQJKCp2b3BfcmVsZWFzZV90KShiaHZfZGVzY190ICopOwotdHlwZWRlZiBpbnQJKCp2b3Bfcndsb2NrX3QpKGJodl9kZXNjX3QgKiwgdnJ3bG9ja190KTsKLXR5cGVkZWYgdm9pZAkoKnZvcF9yd3VubG9ja190KShiaHZfZGVzY190ICosIHZyd2xvY2tfdCk7Cit0eXBlZGVmIGludAkoKnZvcF9yd2xvY2tfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdnJ3bG9ja190KTsKK3R5cGVkZWYgdm9pZAkoKnZvcF9yd3VubG9ja190KShiaHZfZGVzY190ICosIGJodl92cndsb2NrX3QpOwogdHlwZWRlZiBpbnQJKCp2b3BfYm1hcF90KShiaHZfZGVzY190ICosIHhmc19vZmZfdCwgc3NpemVfdCwgaW50LAogCQkJCXN0cnVjdCB4ZnNfaW9tYXAgKiwgaW50ICopOwogdHlwZWRlZiBpbnQJKCp2b3BfcmVjbGFpbV90KShiaHZfZGVzY190ICopOwpAQCAtMjIyLDggKzE5Myw4IEBACiAJCQkJaW50LCBzdHJ1Y3QgY3JlZCAqKTsKIHR5cGVkZWYJaW50CSgqdm9wX2F0dHJfbGlzdF90KShiaHZfZGVzY190ICosIGNoYXIgKiwgaW50LCBpbnQsCiAJCQkJc3RydWN0IGF0dHJsaXN0X2N1cnNvcl9rZXJuICosIHN0cnVjdCBjcmVkICopOwotdHlwZWRlZiB2b2lkCSgqdm9wX2xpbmtfcmVtb3ZlZF90KShiaHZfZGVzY190ICosIHZub2RlX3QgKiwgaW50KTsKLXR5cGVkZWYgdm9pZAkoKnZvcF92bm9kZV9jaGFuZ2VfdCkoYmh2X2Rlc2NfdCAqLCB2Y2hhbmdlX3QsIF9fcHNpbnRfdCk7Cit0eXBlZGVmIHZvaWQJKCp2b3BfbGlua19yZW1vdmVkX3QpKGJodl9kZXNjX3QgKiwgYmh2X3Zub2RlX3QgKiwgaW50KTsKK3R5cGVkZWYgdm9pZAkoKnZvcF92bm9kZV9jaGFuZ2VfdCkoYmh2X2Rlc2NfdCAqLCBiaHZfdmNoYW5nZV90LCBfX3BzaW50X3QpOwogdHlwZWRlZiB2b2lkCSgqdm9wX3B0b3NzdnBfdCkoYmh2X2Rlc2NfdCAqLCB4ZnNfb2ZmX3QsIHhmc19vZmZfdCwgaW50KTsKIHR5cGVkZWYgdm9pZAkoKnZvcF9wZmx1c2hpbnZhbHZwX3QpKGJodl9kZXNjX3QgKiwgeGZzX29mZl90LCB4ZnNfb2ZmX3QsIGludCk7CiB0eXBlZGVmIGludAkoKnZvcF9wZmx1c2h2cF90KShiaHZfZGVzY190ICosIHhmc19vZmZfdCwgeGZzX29mZl90LApAQCAtMjMxLDkgKzIwMiwxMCBAQAogdHlwZWRlZiBpbnQJKCp2b3BfaWZsdXNoX3QpKGJodl9kZXNjX3QgKiwgaW50KTsKIAogCi10eXBlZGVmIHN0cnVjdCB2bm9kZW9wcyB7Cit0eXBlZGVmIHN0cnVjdCBiaHZfdm5vZGVvcHMgewogCWJodl9wb3NpdGlvbl90ICB2bl9wb3NpdGlvbjsgICAgLyogcG9zaXRpb24gd2l0aGluIGJlaGF2aW9yIGNoYWluICovCiAJdm9wX29wZW5fdAkJdm9wX29wZW47CisJdm9wX2Nsb3NlX3QJCXZvcF9jbG9zZTsKIAl2b3BfcmVhZF90CQl2b3BfcmVhZDsKIAl2b3Bfd3JpdGVfdAkJdm9wX3dyaXRlOwogCXZvcF9zZW5kZmlsZV90CQl2b3Bfc2VuZGZpbGU7CkBAIC0yNzEsMTAzICsyNDMsODAgQEAKIAl2b3BfcGZsdXNodnBfdAkJdm9wX2ZsdXNoX3BhZ2VzOwogCXZvcF9yZWxlYXNlX3QJCXZvcF9yZWxlYXNlOwogCXZvcF9pZmx1c2hfdAkJdm9wX2lmbHVzaDsKLX0gdm5vZGVvcHNfdDsKK30gYmh2X3Zub2Rlb3BzX3Q7CiAKIC8qCi0gKiBWT1Ancy4KKyAqIFZpcnR1YWwgbm9kZSBvcGVyYXRpb25zLCBvcGVyYXRpbmcgZnJvbSBoZWFkIGJodi4KICAqLwotI2RlZmluZSBfVk9QXyhvcCwgdnApCSgqKCh2bm9kZW9wc190ICopKHZwKS0+dl9mb3BzKS0+b3ApCi0KLSNkZWZpbmUgVk9QX1JFQUQodnAsZmlsZSxpb3Ysc2VncyxvZmZzZXQsaW9mbGFncyxjcixydikJCQlcCi0JcnYgPSBfVk9QXyh2b3BfcmVhZCwgdnApKCh2cCktPnZfZmJodixmaWxlLGlvdixzZWdzLG9mZnNldCxpb2ZsYWdzLGNyKQotI2RlZmluZSBWT1BfV1JJVEUodnAsZmlsZSxpb3Ysc2VncyxvZmZzZXQsaW9mbGFncyxjcixydikJCVwKLQlydiA9IF9WT1BfKHZvcF93cml0ZSwgdnApKCh2cCktPnZfZmJodixmaWxlLGlvdixzZWdzLG9mZnNldCxpb2ZsYWdzLGNyKQotI2RlZmluZSBWT1BfU0VOREZJTEUodnAsZixvZmYsaW9mbGFncyxjbnQsYWN0LHRhcmcsY3IscnYpCQlcCi0JcnYgPSBfVk9QXyh2b3Bfc2VuZGZpbGUsIHZwKSgodnApLT52X2ZiaHYsZixvZmYsaW9mbGFncyxjbnQsYWN0LHRhcmcsY3IpCi0jZGVmaW5lIFZPUF9TUExJQ0VfUkVBRCh2cCxmLG8scGlwZSxjbnQsZmwsaW9mbCxjcixydikJCQlcCi0JcnYgPSBfVk9QXyh2b3Bfc3BsaWNlX3JlYWQsIHZwKSgodnApLT52X2ZiaHYsZixvLHBpcGUsY250LGZsLGlvZmwsY3IpCi0jZGVmaW5lIFZPUF9TUExJQ0VfV1JJVEUodnAsZixvLHBpcGUsY250LGZsLGlvZmwsY3IscnYpCQkJXAotCXJ2ID0gX1ZPUF8odm9wX3NwbGljZV93cml0ZSwgdnApKCh2cCktPnZfZmJodixmLG8scGlwZSxjbnQsZmwsaW9mbCxjcikKLSNkZWZpbmUgVk9QX0JNQVAodnAsb2Ysc3oscncsYixuLHJ2KQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX2JtYXAsIHZwKSgodnApLT52X2ZiaHYsb2Ysc3oscncsYixuKQotI2RlZmluZSBWT1BfT1BFTih2cCwgY3IsIHJ2KQkJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9vcGVuLCB2cCkoKHZwKS0+dl9mYmh2LCBjcikKLSNkZWZpbmUgVk9QX0dFVEFUVFIodnAsIHZhcCwgZiwgY3IsIHJ2KQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX2dldGF0dHIsIHZwKSgodnApLT52X2ZiaHYsIHZhcCwgZiwgY3IpCi0jZGVmaW5lCVZPUF9TRVRBVFRSKHZwLCB2YXAsIGYsIGNyLCBydikJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9zZXRhdHRyLCB2cCkoKHZwKS0+dl9mYmh2LCB2YXAsIGYsIGNyKQotI2RlZmluZQlWT1BfQUNDRVNTKHZwLCBtb2RlLCBjciwgcnYpCQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfYWNjZXNzLCB2cCkoKHZwKS0+dl9mYmh2LCBtb2RlLCBjcikKLSNkZWZpbmUJVk9QX0xPT0tVUCh2cCxkLHZwcCxmLHJkaXIsY3IscnYpCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9sb29rdXAsIHZwKSgodnApLT52X2ZiaHYsZCx2cHAsZixyZGlyLGNyKQotI2RlZmluZSBWT1BfQ1JFQVRFKGR2cCxkLHZhcCx2cHAsY3IscnYpCQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfY3JlYXRlLCBkdnApKChkdnApLT52X2ZiaHYsZCx2YXAsdnBwLGNyKQotI2RlZmluZSBWT1BfUkVNT1ZFKGR2cCxkLGNyLHJ2KQkJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9yZW1vdmUsIGR2cCkoKGR2cCktPnZfZmJodixkLGNyKQotI2RlZmluZQlWT1BfTElOSyh0ZHZwLGZ2cCxkLGNyLHJ2KQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX2xpbmssIHRkdnApKCh0ZHZwKS0+dl9mYmh2LGZ2cCxkLGNyKQotI2RlZmluZQlWT1BfUkVOQU1FKGZ2cCxmbm0sdGR2cCx0bm0sY3IscnYpCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9yZW5hbWUsIGZ2cCkoKGZ2cCktPnZfZmJodixmbm0sdGR2cCx0bm0sY3IpCi0jZGVmaW5lCVZPUF9NS0RJUihkcCxkLHZhcCx2cHAsY3IscnYpCQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfbWtkaXIsIGRwKSgoZHApLT52X2ZiaHYsZCx2YXAsdnBwLGNyKQotI2RlZmluZQlWT1BfUk1ESVIoZHAsZCxjcixydikJIAkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX3JtZGlyLCBkcCkoKGRwKS0+dl9mYmh2LGQsY3IpCi0jZGVmaW5lCVZPUF9SRUFERElSKHZwLHVpb3AsY3IsZW9mcCxydikJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9yZWFkZGlyLCB2cCkoKHZwKS0+dl9mYmh2LHVpb3AsY3IsZW9mcCkKLSNkZWZpbmUJVk9QX1NZTUxJTksoZHZwLGQsdmFwLHRubSx2cHAsY3IscnYpCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9zeW1saW5rLCBkdnApICgoZHZwKS0+dl9mYmh2LGQsdmFwLHRubSx2cHAsY3IpCi0jZGVmaW5lCVZPUF9SRUFETElOSyh2cCx1aW9wLGZsLGNyLHJ2KQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX3JlYWRsaW5rLCB2cCkoKHZwKS0+dl9mYmh2LHVpb3AsZmwsY3IpCi0jZGVmaW5lCVZPUF9GU1lOQyh2cCxmLGNyLGIsZSxydikJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9mc3luYywgdnApKCh2cCktPnZfZmJodixmLGNyLGIsZSkKLSNkZWZpbmUgVk9QX0lOQUNUSVZFKHZwLCBjciwgcnYpCQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfaW5hY3RpdmUsIHZwKSgodnApLT52X2ZiaHYsIGNyKQotI2RlZmluZSBWT1BfUkVMRUFTRSh2cCwgcnYpCQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX3JlbGVhc2UsIHZwKSgodnApLT52X2ZiaHYpCi0jZGVmaW5lIFZPUF9GSUQyKHZwLCBmaWRwLCBydikJCQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfZmlkMiwgdnApKCh2cCktPnZfZmJodiwgZmlkcCkKLSNkZWZpbmUgVk9QX1JXTE9DSyh2cCxpKQkJCQkJCVwKLQkodm9pZClfVk9QXyh2b3Bfcndsb2NrLCB2cCkoKHZwKS0+dl9mYmh2LCBpKQotI2RlZmluZSBWT1BfUldMT0NLX1RSWSh2cCxpKQkJCQkJCVwKLQlfVk9QXyh2b3Bfcndsb2NrLCB2cCkoKHZwKS0+dl9mYmh2LCBpKQotI2RlZmluZSBWT1BfUldVTkxPQ0sodnAsaSkJCQkJCQlcCi0JKHZvaWQpX1ZPUF8odm9wX3J3dW5sb2NrLCB2cCkoKHZwKS0+dl9mYmh2LCBpKQotI2RlZmluZSBWT1BfRlJMT0NLKHZwLGMsZmwsZmxhZ3Msb2Zmc2V0LGZyLHJ2KQkJCQlcCi0JcnYgPSBfVk9QXyh2b3BfZnJsb2NrLCB2cCkoKHZwKS0+dl9mYmh2LGMsZmwsZmxhZ3Msb2Zmc2V0LGZyKQotI2RlZmluZSBWT1BfUkVDTEFJTSh2cCwgcnYpCQkJCQkJXAotCXJ2ID0gX1ZPUF8odm9wX3JlY2xhaW0sIHZwKSgodnApLT52X2ZiaHYpCi0jZGVmaW5lIFZPUF9BVFRSX0dFVCh2cCwgbmFtZSwgdmFsLCB2YWxsZW5wLCBmbCwgY3JlZCwgcnYpCQlcCi0JcnYgPSBfVk9QXyh2b3BfYXR0cl9nZXQsIHZwKSgodnApLT52X2ZiaHYsbmFtZSx2YWwsdmFsbGVucCxmbCxjcmVkKQotI2RlZmluZQlWT1BfQVRUUl9TRVQodnAsIG5hbWUsIHZhbCwgdmFsbGVuLCBmbCwgY3JlZCwgcnYpCQlcCi0JcnYgPSBfVk9QXyh2b3BfYXR0cl9zZXQsIHZwKSgodnApLT52X2ZiaHYsbmFtZSx2YWwsdmFsbGVuLGZsLGNyZWQpCi0jZGVmaW5lCVZPUF9BVFRSX1JFTU9WRSh2cCwgbmFtZSwgZmxhZ3MsIGNyZWQsIHJ2KQkJCVwKLQlydiA9IF9WT1BfKHZvcF9hdHRyX3JlbW92ZSwgdnApKCh2cCktPnZfZmJodixuYW1lLGZsYWdzLGNyZWQpCi0jZGVmaW5lCVZPUF9BVFRSX0xJU1QodnAsIGJ1ZiwgYnVmbGVuLCBmbCwgY3Vyc29yLCBjcmVkLCBydikJCVwKLQlydiA9IF9WT1BfKHZvcF9hdHRyX2xpc3QsIHZwKSgodnApLT52X2ZiaHYsYnVmLGJ1ZmxlbixmbCxjdXJzb3IsY3JlZCkKLSNkZWZpbmUgVk9QX0xJTktfUkVNT1ZFRCh2cCwgZHZwLCBsaW5remVybykJCQkJXAotCSh2b2lkKV9WT1BfKHZvcF9saW5rX3JlbW92ZWQsIHZwKSgodnApLT52X2ZiaHYsIGR2cCwgbGlua3plcm8pCi0jZGVmaW5lIFZPUF9WTk9ERV9DSEFOR0UodnAsIGNtZCwgdmFsKQkJCQkJXAotCSh2b2lkKV9WT1BfKHZvcF92bm9kZV9jaGFuZ2UsIHZwKSgodnApLT52X2ZiaHYsY21kLHZhbCkKLS8qCi0gKiBUaGVzZSBhcmUgcGFnZSBjYWNoZSBmdW5jdGlvbnMgdGhhdCBub3cgZ28gdGhydSBWT1BzLgotICogJ2xhc3QnIHBhcmFtZXRlciBpcyB1bnVzZWQgYW5kIGxlZnQgaW4gZm9yIElSSVggY29tcGF0aWJpbGl0eQotICovCi0jZGVmaW5lIFZPUF9UT1NTX1BBR0VTKHZwLCBmaXJzdCwgbGFzdCwgZmlvcHQpCQkJCVwKLQlfVk9QXyh2b3BfdG9zc3BhZ2VzLCB2cCkoKHZwKS0+dl9mYmh2LGZpcnN0LCBsYXN0LCBmaW9wdCkKLS8qCi0gKiAnbGFzdCcgcGFyYW1ldGVyIGlzIHVudXNlZCBhbmQgbGVmdCBpbiBmb3IgSVJJWCBjb21wYXRpYmlsaXR5Ci0gKi8KLSNkZWZpbmUgVk9QX0ZMVVNISU5WQUxfUEFHRVModnAsIGZpcnN0LCBsYXN0LCBmaW9wdCkJCQlcCi0JX1ZPUF8odm9wX2ZsdXNoaW52YWxfcGFnZXMsIHZwKSgodnApLT52X2ZiaHYsZmlyc3QsbGFzdCxmaW9wdCkKLS8qCi0gKiAnbGFzdCcgcGFyYW1ldGVyIGlzIHVudXNlZCBhbmQgbGVmdCBpbiBmb3IgSVJJWCBjb21wYXRpYmlsaXR5Ci0gKi8KLSNkZWZpbmUgVk9QX0ZMVVNIX1BBR0VTKHZwLCBmaXJzdCwgbGFzdCwgZmxhZ3MsIGZpb3B0LCBydikJCVwKLQlydiA9IF9WT1BfKHZvcF9mbHVzaF9wYWdlcywgdnApKCh2cCktPnZfZmJodixmaXJzdCxsYXN0LGZsYWdzLGZpb3B0KQotI2RlZmluZSBWT1BfSU9DVEwodnAsIGlub2RlLCBmaWxwLCBmbCwgY21kLCBhcmcsIHJ2KQkJCVwKLQlydiA9IF9WT1BfKHZvcF9pb2N0bCwgdnApKCh2cCktPnZfZmJodixpbm9kZSxmaWxwLGZsLGNtZCxhcmcpCi0jZGVmaW5lIFZPUF9JRkxVU0godnAsIGZsYWdzLCBydikJCQkJCVwKLQlydiA9IF9WT1BfKHZvcF9pZmx1c2gsIHZwKSgodnApLT52X2ZiaHYsIGZsYWdzKQorI2RlZmluZSBWTkhFQUQodnApCSgodnApLT52X2JoLmJoX2ZpcnN0KQorI2RlZmluZSBWT1Aob3AsIHZwKQkoKigoYmh2X3Zub2Rlb3BzX3QgKilWTkhFQUQodnApLT5iZF9vcHMpLT5vcCkKKyNkZWZpbmUgYmh2X3ZvcF9vcGVuKHZwLCBjcikJCVZPUCh2b3Bfb3BlbiwgdnApKFZOSEVBRCh2cCksY3IpCisjZGVmaW5lIGJodl92b3BfY2xvc2UodnAsIGYsbGFzdCxjcikJVk9QKHZvcF9jbG9zZSwgdnApKFZOSEVBRCh2cCksZixsYXN0LGNyKQorI2RlZmluZSBiaHZfdm9wX3JlYWQodnAsZmlsZSxpb3Ysc2VncyxvZmZzZXQsaW9mbGFncyxjcikJCVwKKwkJVk9QKHZvcF9yZWFkLCB2cCkoVk5IRUFEKHZwKSxmaWxlLGlvdixzZWdzLG9mZnNldCxpb2ZsYWdzLGNyKQorI2RlZmluZSBiaHZfdm9wX3dyaXRlKHZwLGZpbGUsaW92LHNlZ3Msb2Zmc2V0LGlvZmxhZ3MsY3IpCQlcCisJCVZPUCh2b3Bfd3JpdGUsIHZwKShWTkhFQUQodnApLGZpbGUsaW92LHNlZ3Msb2Zmc2V0LGlvZmxhZ3MsY3IpCisjZGVmaW5lIGJodl92b3Bfc2VuZGZpbGUodnAsZixvZmYsaW9mbGFncyxjbnQsYWN0LHRhcmcsY3IpCQlcCisJCVZPUCh2b3Bfc2VuZGZpbGUsIHZwKShWTkhFQUQodnApLGYsb2ZmLGlvZmxhZ3MsY250LGFjdCx0YXJnLGNyKQorI2RlZmluZSBiaHZfdm9wX3NwbGljZV9yZWFkKHZwLGYsbyxwaXBlLGNudCxmbCxpb2ZsLGNyKQkJCVwKKwkJVk9QKHZvcF9zcGxpY2VfcmVhZCwgdnApKFZOSEVBRCh2cCksZixvLHBpcGUsY250LGZsLGlvZmwsY3IpCisjZGVmaW5lIGJodl92b3Bfc3BsaWNlX3dyaXRlKHZwLGYsbyxwaXBlLGNudCxmbCxpb2ZsLGNyKQkJXAorCQlWT1Aodm9wX3NwbGljZV93cml0ZSwgdnApKFZOSEVBRCh2cCksZixvLHBpcGUsY250LGZsLGlvZmwsY3IpCisjZGVmaW5lIGJodl92b3BfYm1hcCh2cCxvZixzeixydyxiLG4pCQkJCQlcCisJCVZPUCh2b3BfYm1hcCwgdnApKFZOSEVBRCh2cCksb2Ysc3oscncsYixuKQorI2RlZmluZSBiaHZfdm9wX2dldGF0dHIodnAsIHZhcCxmLGNyKQkJCQkJXAorCQlWT1Aodm9wX2dldGF0dHIsIHZwKShWTkhFQUQodnApLCB2YXAsZixjcikKKyNkZWZpbmUJYmh2X3ZvcF9zZXRhdHRyKHZwLCB2YXAsZixjcikJCQkJCVwKKwkJVk9QKHZvcF9zZXRhdHRyLCB2cCkoVk5IRUFEKHZwKSwgdmFwLGYsY3IpCisjZGVmaW5lCWJodl92b3BfYWNjZXNzKHZwLCBtb2RlLGNyKQlWT1Aodm9wX2FjY2VzcywgdnApKFZOSEVBRCh2cCksIG1vZGUsY3IpCisjZGVmaW5lCWJodl92b3BfbG9va3VwKHZwLGQsdnBwLGYscmRpcixjcikJCQkJXAorCQlWT1Aodm9wX2xvb2t1cCwgdnApKFZOSEVBRCh2cCksZCx2cHAsZixyZGlyLGNyKQorI2RlZmluZSBiaHZfdm9wX2NyZWF0ZShkdnAsZCx2YXAsdnBwLGNyKQkJCQlcCisJCVZPUCh2b3BfY3JlYXRlLCBkdnApKFZOSEVBRChkdnApLGQsdmFwLHZwcCxjcikKKyNkZWZpbmUgYmh2X3ZvcF9yZW1vdmUoZHZwLGQsY3IpCVZPUCh2b3BfcmVtb3ZlLCBkdnApKFZOSEVBRChkdnApLGQsY3IpCisjZGVmaW5lCWJodl92b3BfbGluayhkdnAsZnZwLGQsY3IpCVZPUCh2b3BfbGluaywgZHZwKShWTkhFQUQoZHZwKSxmdnAsZCxjcikKKyNkZWZpbmUJYmh2X3ZvcF9yZW5hbWUoZnZwLGZubSx0ZHZwLHRubSxjcikJCQkJXAorCQlWT1Aodm9wX3JlbmFtZSwgZnZwKShWTkhFQUQoZnZwKSxmbm0sdGR2cCx0bm0sY3IpCisjZGVmaW5lCWJodl92b3BfbWtkaXIoZHAsZCx2YXAsdnBwLGNyKQkJCQkJXAorCQlWT1Aodm9wX21rZGlyLCBkcCkoVk5IRUFEKGRwKSxkLHZhcCx2cHAsY3IpCisjZGVmaW5lCWJodl92b3Bfcm1kaXIoZHAsZCxjcikJIAlWT1Aodm9wX3JtZGlyLCBkcCkoVk5IRUFEKGRwKSxkLGNyKQorI2RlZmluZQliaHZfdm9wX3JlYWRkaXIodnAsdWlvcCxjcixlb2ZwKQkJCQlcCisJCVZPUCh2b3BfcmVhZGRpciwgdnApKFZOSEVBRCh2cCksdWlvcCxjcixlb2ZwKQorI2RlZmluZQliaHZfdm9wX3N5bWxpbmsoZHZwLGQsdmFwLHRubSx2cHAsY3IpCQkJCVwKKwkJVk9QKHZvcF9zeW1saW5rLCBkdnApKFZOSEVBRChkdnApLGQsdmFwLHRubSx2cHAsY3IpCisjZGVmaW5lCWJodl92b3BfcmVhZGxpbmsodnAsdWlvcCxmbCxjcikJCQkJCVwKKwkJVk9QKHZvcF9yZWFkbGluaywgdnApKFZOSEVBRCh2cCksdWlvcCxmbCxjcikKKyNkZWZpbmUJYmh2X3ZvcF9mc3luYyh2cCxmLGNyLGIsZSkJVk9QKHZvcF9mc3luYywgdnApKFZOSEVBRCh2cCksZixjcixiLGUpCisjZGVmaW5lIGJodl92b3BfaW5hY3RpdmUodnAsY3IpCQlWT1Aodm9wX2luYWN0aXZlLCB2cCkoVk5IRUFEKHZwKSxjcikKKyNkZWZpbmUgYmh2X3ZvcF9yZWxlYXNlKHZwKQkJVk9QKHZvcF9yZWxlYXNlLCB2cCkoVk5IRUFEKHZwKSkKKyNkZWZpbmUgYmh2X3ZvcF9maWQyKHZwLGZpZHApCQlWT1Aodm9wX2ZpZDIsIHZwKShWTkhFQUQodnApLGZpZHApCisjZGVmaW5lIGJodl92b3Bfcndsb2NrKHZwLGkpCQlWT1Aodm9wX3J3bG9jaywgdnApKFZOSEVBRCh2cCksaSkKKyNkZWZpbmUgYmh2X3ZvcF9yd2xvY2tfdHJ5KHZwLGkpCVZPUCh2b3Bfcndsb2NrLCB2cCkoVk5IRUFEKHZwKSxpKQorI2RlZmluZSBiaHZfdm9wX3J3dW5sb2NrKHZwLGkpCQlWT1Aodm9wX3J3dW5sb2NrLCB2cCkoVk5IRUFEKHZwKSxpKQorI2RlZmluZSBiaHZfdm9wX2ZybG9jayh2cCxjLGZsLGZsYWdzLG9mZnNldCxmcikJCQkJXAorCQlWT1Aodm9wX2ZybG9jaywgdnApKFZOSEVBRCh2cCksYyxmbCxmbGFncyxvZmZzZXQsZnIpCisjZGVmaW5lIGJodl92b3BfcmVjbGFpbSh2cCkJCVZPUCh2b3BfcmVjbGFpbSwgdnApKFZOSEVBRCh2cCkpCisjZGVmaW5lIGJodl92b3BfYXR0cl9nZXQodnAsIG5hbWUsIHZhbCwgdmFsbGVucCwgZmwsIGNyZWQpCQlcCisJCVZPUCh2b3BfYXR0cl9nZXQsIHZwKShWTkhFQUQodnApLG5hbWUsdmFsLHZhbGxlbnAsZmwsY3JlZCkKKyNkZWZpbmUJYmh2X3ZvcF9hdHRyX3NldCh2cCwgbmFtZSwgdmFsLCB2YWxsZW4sIGZsLCBjcmVkKQkJXAorCQlWT1Aodm9wX2F0dHJfc2V0LCB2cCkoVk5IRUFEKHZwKSxuYW1lLHZhbCx2YWxsZW4sZmwsY3JlZCkKKyNkZWZpbmUJYmh2X3ZvcF9hdHRyX3JlbW92ZSh2cCwgbmFtZSwgZmxhZ3MsIGNyZWQpCQkJXAorCQlWT1Aodm9wX2F0dHJfcmVtb3ZlLCB2cCkoVk5IRUFEKHZwKSxuYW1lLGZsYWdzLGNyZWQpCisjZGVmaW5lCWJodl92b3BfYXR0cl9saXN0KHZwLCBidWYsIGJ1ZmxlbiwgZmwsIGN1cnNvciwgY3JlZCkJCVwKKwkJVk9QKHZvcF9hdHRyX2xpc3QsIHZwKShWTkhFQUQodnApLGJ1ZixidWZsZW4sZmwsY3Vyc29yLGNyZWQpCisjZGVmaW5lIGJodl92b3BfbGlua19yZW1vdmVkKHZwLCBkdnAsIGxpbmt6ZXJvKQkJCQlcCisJCVZPUCh2b3BfbGlua19yZW1vdmVkLCB2cCkoVk5IRUFEKHZwKSwgZHZwLCBsaW5remVybykKKyNkZWZpbmUgYmh2X3ZvcF92bm9kZV9jaGFuZ2UodnAsIGNtZCwgdmFsKQkJCQlcCisJCVZPUCh2b3Bfdm5vZGVfY2hhbmdlLCB2cCkoVk5IRUFEKHZwKSwgY21kLCB2YWwpCisjZGVmaW5lIGJodl92b3BfdG9zc19wYWdlcyh2cCwgZmlyc3QsIGxhc3QsIGZpb3B0KQkJCVwKKwkJVk9QKHZvcF90b3NzcGFnZXMsIHZwKShWTkhFQUQodnApLCBmaXJzdCwgbGFzdCwgZmlvcHQpCisjZGVmaW5lIGJodl92b3BfZmx1c2hpbnZhbF9wYWdlcyh2cCwgZmlyc3QsIGxhc3QsIGZpb3B0KQkJXAorCQlWT1Aodm9wX2ZsdXNoaW52YWxfcGFnZXMsIHZwKShWTkhFQUQodnApLGZpcnN0LGxhc3QsZmlvcHQpCisjZGVmaW5lIGJodl92b3BfZmx1c2hfcGFnZXModnAsIGZpcnN0LCBsYXN0LCBmbGFncywgZmlvcHQpCQlcCisJCVZPUCh2b3BfZmx1c2hfcGFnZXMsIHZwKShWTkhFQUQodnApLGZpcnN0LGxhc3QsZmxhZ3MsZmlvcHQpCisjZGVmaW5lIGJodl92b3BfaW9jdGwodnAsIGlub2RlLCBmaWxwLCBmbCwgY21kLCBhcmcpCQkJXAorCQlWT1Aodm9wX2lvY3RsLCB2cCkoVk5IRUFEKHZwKSxpbm9kZSxmaWxwLGZsLGNtZCxhcmcpCisjZGVmaW5lIGJodl92b3BfaWZsdXNoKHZwLCBmbGFncykJVk9QKHZvcF9pZmx1c2gsIHZwKShWTkhFQUQodnApLCBmbGFncykKIAogLyoKICAqIEZsYWdzIGZvciByZWFkL3dyaXRlIGNhbGxzIC0gc2FtZSB2YWx1ZXMgYXMgSVJJWApAQCAtMzc3LDcgKzMyNiw3IEBACiAjZGVmaW5lIElPX0lOVklTCTB4MDAwMjAJCS8qIGRvbid0IHVwZGF0ZSBpbm9kZSB0aW1lc3RhbXBzICovCiAKIC8qCi0gKiBGbGFncyBmb3IgVk9QX0lGTFVTSCBjYWxsCisgKiBGbGFncyBmb3Igdm9wX2lmbHVzaCBjYWxsCiAgKi8KICNkZWZpbmUgRkxVU0hfU1lOQwkJMQkvKiB3YWl0IGZvciBmbHVzaCB0byBjb21wbGV0ZQkqLwogI2RlZmluZSBGTFVTSF9JTk9ERQkJMgkvKiBmbHVzaCB0aGUgaW5vZGUgaXRzZWxmCSovCkBAIC0zODUsOCArMzM0LDcgQEAKIAkJCQkJICogdGhpcyBpbm9kZSBvdXQgdG8gZGlzawkqLwogCiAvKgotICogRmx1c2gvSW52YWxpZGF0ZSBvcHRpb25zIGZvciBWT1BfVE9TU19QQUdFUywgVk9QX0ZMVVNISU5WQUxfUEFHRVMgYW5kCi0gKglWT1BfRkxVU0hfUEFHRVMuCisgKiBGbHVzaC9JbnZhbGlkYXRlIG9wdGlvbnMgZm9yIHZvcF90b3NzL2ZsdXNoL2ZsdXNoaW52YWxfcGFnZXMuCiAgKi8KICNkZWZpbmUgRklfTk9ORQkJCTAJLyogbm9uZSAqLwogI2RlZmluZSBGSV9SRU1BUEYJCTEJLyogRG8gYSByZW1hcGYgcHJpb3IgdG8gdGhlIG9wZXJhdGlvbiAqLwpAQCAtMzk4LDcgKzM0Niw3IEBACiAgKiBWbm9kZSBhdHRyaWJ1dGVzLiAgdmFfbWFzayBpbmRpY2F0ZXMgdGhvc2UgYXR0cmlidXRlcyB0aGUgY2FsbGVyCiAgKiB3YW50cyB0byBzZXQgb3IgZXh0cmFjdC4KICAqLwotdHlwZWRlZiBzdHJ1Y3QgdmF0dHIgewordHlwZWRlZiBzdHJ1Y3QgYmh2X3ZhdHRyIHsKIAlpbnQJCXZhX21hc2s7CS8qIGJpdC1tYXNrIG9mIGF0dHJpYnV0ZXMgcHJlc2VudCAqLwogCW1vZGVfdAkJdmFfbW9kZTsJLyogZmlsZSBhY2Nlc3MgbW9kZSBhbmQgdHlwZSAqLwogCXhmc19ubGlua190CXZhX25saW5rOwkvKiBudW1iZXIgb2YgcmVmZXJlbmNlcyB0byBmaWxlICovCkBAIC00MTgsNyArMzY2LDcgQEAKIAl1X2xvbmcJCXZhX25leHRlbnRzOwkvKiBudW1iZXIgb2YgZXh0ZW50cyBpbiBmaWxlICovCiAJdV9sb25nCQl2YV9hbmV4dGVudHM7CS8qIG51bWJlciBvZiBhdHRyIGV4dGVudHMgaW4gZmlsZSAqLwogCXByaWRfdAkJdmFfcHJvamlkOwkvKiBwcm9qZWN0IGlkICovCi19IHZhdHRyX3Q7Cit9IGJodl92YXR0cl90OwogCiAvKgogICogc2V0YXR0ciBvciBnZXRhdHRyIGF0dHJpYnV0ZXMKQEAgLTQ5MiwyOSArNDQwLDE3IEBACiAJKFZOX0lTUkVHKHZwKSAmJiAoKG1vZGUpICYgKFZTR0lEfChWRVhFQz4+MykpKSA9PSBWU0dJRCkKIAogZXh0ZXJuIHZvaWQJdm5faW5pdCh2b2lkKTsKLWV4dGVybiB2bm9kZV90CSp2bl9pbml0aWFsaXplKHN0cnVjdCBpbm9kZSAqKTsKK2V4dGVybiBiaHZfdm5vZGVfdAkqdm5faW5pdGlhbGl6ZShzdHJ1Y3QgaW5vZGUgKik7CitleHRlcm4gaW50CXZuX3JldmFsaWRhdGUoc3RydWN0IGJodl92bm9kZSAqKTsKK2V4dGVybiBpbnQJX192bl9yZXZhbGlkYXRlKHN0cnVjdCBiaHZfdm5vZGUgKiwgYmh2X3ZhdHRyX3QgKik7CitleHRlcm4gdm9pZAl2bl9yZXZhbGlkYXRlX2NvcmUoc3RydWN0IGJodl92bm9kZSAqLCBiaHZfdmF0dHJfdCAqKTsKIAotLyoKLSAqIHZub2RlX21hcCBzdHJ1Y3R1cmVzIF9tdXN0XyBtYXRjaCB2bl9lcG9jaCBhbmQgdm5vZGUgc3RydWN0dXJlIHNpemVzLgotICovCi10eXBlZGVmIHN0cnVjdCB2bm9kZV9tYXAgewotCXZmc190CQkqdl92ZnNwOwotCXZudW1iZXJfdAl2X251bWJlcjsJCS8qIGluLWNvcmUgdm5vZGUgbnVtYmVyICovCi0JeGZzX2lub190CXZfaW5vOwkJCS8qIGlub2RlICMJKi8KLX0gdm1hcF90OworZXh0ZXJuIHZvaWQJdm5faW93YWl0KHN0cnVjdCBiaHZfdm5vZGUgKnZwKTsKK2V4dGVybiB2b2lkCXZuX2lvd2FrZShzdHJ1Y3QgYmh2X3Zub2RlICp2cCk7CiAKLSNkZWZpbmUgVk1BUCh2cCwgdm1hcCkJeyh2bWFwKS52X3Zmc3AJID0gKHZwKS0+dl92ZnNwLAlcCi0JCQkgKHZtYXApLnZfbnVtYmVyID0gKHZwKS0+dl9udW1iZXIsCVwKLQkJCSAodm1hcCkudl9pbm8JID0gKHZwKS0+dl9pbm9kZS5pX2lubzsgfQorZXh0ZXJuIHZvaWQJdm5faW9lcnJvcihzdHJ1Y3QgYmh2X3Zub2RlICp2cCwgaW50IGVycm9yLCBjaGFyICpmLCBpbnQgbCk7CiAKLWV4dGVybiBpbnQJdm5fcmV2YWxpZGF0ZShzdHJ1Y3Qgdm5vZGUgKik7Ci1leHRlcm4gaW50CV9fdm5fcmV2YWxpZGF0ZShzdHJ1Y3Qgdm5vZGUgKiwgdmF0dHJfdCAqKTsKLWV4dGVybiB2b2lkCXZuX3JldmFsaWRhdGVfY29yZShzdHJ1Y3Qgdm5vZGUgKiwgdmF0dHJfdCAqKTsKLQotZXh0ZXJuIHZvaWQJdm5faW93YWl0KHN0cnVjdCB2bm9kZSAqdnApOwotZXh0ZXJuIHZvaWQJdm5faW93YWtlKHN0cnVjdCB2bm9kZSAqdnApOwotCi1zdGF0aWMgaW5saW5lIGludCB2bl9jb3VudChzdHJ1Y3Qgdm5vZGUgKnZwKQorc3RhdGljIGlubGluZSBpbnQgdm5fY291bnQoc3RydWN0IGJodl92bm9kZSAqdnApCiB7CiAJcmV0dXJuIGF0b21pY19yZWFkKCZ2bl90b19pbm9kZSh2cCktPmlfY291bnQpOwogfQpAQCAtNTIyLDcgKzQ1OCw3IEBACiAvKgogICogVm5vZGUgcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYW5kIG1hY3JvcyBmb3IgY29tcGF0aWJpbGl0eSkuCiAgKi8KLWV4dGVybiB2bm9kZV90CSp2bl9ob2xkKHN0cnVjdCB2bm9kZSAqKTsKK2V4dGVybiBiaHZfdm5vZGVfdAkqdm5faG9sZChzdHJ1Y3QgYmh2X3Zub2RlICopOwogCiAjaWYgZGVmaW5lZChYRlNfVk5PREVfVFJBQ0UpCiAjZGVmaW5lIFZOX0hPTEQodnApCQlcCkBAIC01MzYsNyArNDcyLDcgQEAKICNkZWZpbmUgVk5fUkVMRSh2cCkJCShpcHV0KHZuX3RvX2lub2RlKHZwKSkpCiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm5vZGUgKnZuX2dyYWIoc3RydWN0IHZub2RlICp2cCkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGJodl92bm9kZSAqdm5fZ3JhYihzdHJ1Y3QgYmh2X3Zub2RlICp2cCkKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gaWdyYWIodm5fdG9faW5vZGUodnApKTsKIAlyZXR1cm4gaW5vZGUgPyB2bl9mcm9tX2lub2RlKGlub2RlKSA6IE5VTEw7CkBAIC01NTQsMzIgKzQ5MCwzOSBAQAogICovCiAjZGVmaW5lIFZOX0xPQ0sodnApCQltdXRleF9zcGlubG9jaygmKHZwKS0+dl9sb2NrKQogI2RlZmluZSBWTl9VTkxPQ0sodnAsIHMpCW11dGV4X3NwaW51bmxvY2soJih2cCktPnZfbG9jaywgcykKLSNkZWZpbmUgVk5fRkxBR1NFVCh2cCxiKQl2bl9mbGFnc2V0KHZwLGIpCi0jZGVmaW5lIFZOX0ZMQUdDTFIodnAsYikJdm5fZmxhZ2Nscih2cCxiKQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHZuX2ZsYWdzZXQoc3RydWN0IHZub2RlICp2cCwgdWludCBmbGFnKQorc3RhdGljIF9faW5saW5lX18gdm9pZCB2bl9mbGFnc2V0KHN0cnVjdCBiaHZfdm5vZGUgKnZwLCB1aW50IGZsYWcpCiB7CiAJc3Bpbl9sb2NrKCZ2cC0+dl9sb2NrKTsKIAl2cC0+dl9mbGFnIHw9IGZsYWc7CiAJc3Bpbl91bmxvY2soJnZwLT52X2xvY2spOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHZuX2ZsYWdjbHIoc3RydWN0IHZub2RlICp2cCwgdWludCBmbGFnKQorc3RhdGljIF9faW5saW5lX18gdWludCB2bl9mbGFnY2xyKHN0cnVjdCBiaHZfdm5vZGUgKnZwLCB1aW50IGZsYWcpCiB7CisJdWludAljbGVhcmVkOworCiAJc3Bpbl9sb2NrKCZ2cC0+dl9sb2NrKTsKKwljbGVhcmVkID0gKHZwLT52X2ZsYWcgJiBmbGFnKTsKIAl2cC0+dl9mbGFnICY9IH5mbGFnOwogCXNwaW5fdW5sb2NrKCZ2cC0+dl9sb2NrKTsKKwlyZXR1cm4gY2xlYXJlZDsKIH0KIAorI2RlZmluZSBWTU9ESUZZKHZwKQl2bl9mbGFnc2V0KHZwLCBWTU9ESUZJRUQpCisjZGVmaW5lIFZVTk1PRElGWSh2cCkJdm5fZmxhZ2Nscih2cCwgVk1PRElGSUVEKQorI2RlZmluZSBWVFJVTkNBVEUodnApCXZuX2ZsYWdzZXQodnAsIFZUUlVOQ0FURUQpCisjZGVmaW5lIFZVTlRSVU5DQVRFKHZwKQl2bl9mbGFnY2xyKHZwLCBWVFJVTkNBVEVEKQorCiAvKgogICogRGVhbGluZyB3aXRoIGJhZCBpbm9kZXMKICAqLwotc3RhdGljIGlubGluZSB2b2lkIHZuX21hcmtfYmFkKHN0cnVjdCB2bm9kZSAqdnApCitzdGF0aWMgaW5saW5lIHZvaWQgdm5fbWFya19iYWQoc3RydWN0IGJodl92bm9kZSAqdnApCiB7CiAJbWFrZV9iYWRfaW5vZGUodm5fdG9faW5vZGUodnApKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgVk5fQkFEKHN0cnVjdCB2bm9kZSAqdnApCitzdGF0aWMgaW5saW5lIGludCBWTl9CQUQoc3RydWN0IGJodl92bm9kZSAqdnApCiB7CiAJcmV0dXJuIGlzX2JhZF9pbm9kZSh2bl90b19pbm9kZSh2cCkpOwogfQpAQCAtNTg3LDE4ICs1MzAsMTggQEAKIC8qCiAgKiBFeHRyYWN0aW5nIGF0aW1lIHZhbHVlcyBpbiB2YXJpb3VzIGZvcm1hdHMKICAqLwotc3RhdGljIGlubGluZSB2b2lkIHZuX2F0aW1lX3RvX2JzdGltZShzdHJ1Y3Qgdm5vZGUgKnZwLCB4ZnNfYnN0aW1lX3QgKmJzX2F0aW1lKQorc3RhdGljIGlubGluZSB2b2lkIHZuX2F0aW1lX3RvX2JzdGltZShiaHZfdm5vZGVfdCAqdnAsIHhmc19ic3RpbWVfdCAqYnNfYXRpbWUpCiB7CiAJYnNfYXRpbWUtPnR2X3NlYyA9IHZwLT52X2lub2RlLmlfYXRpbWUudHZfc2VjOwogCWJzX2F0aW1lLT50dl9uc2VjID0gdnAtPnZfaW5vZGUuaV9hdGltZS50dl9uc2VjOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdm5fYXRpbWVfdG9fdGltZXNwZWMoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHRpbWVzcGVjICp0cykKK3N0YXRpYyBpbmxpbmUgdm9pZCB2bl9hdGltZV90b190aW1lc3BlYyhiaHZfdm5vZGVfdCAqdnAsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCiB7CiAJKnRzID0gdnAtPnZfaW5vZGUuaV9hdGltZTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHZuX2F0aW1lX3RvX3RpbWVfdChzdHJ1Y3Qgdm5vZGUgKnZwLCB0aW1lX3QgKnR0KQorc3RhdGljIGlubGluZSB2b2lkIHZuX2F0aW1lX3RvX3RpbWVfdChiaHZfdm5vZGVfdCAqdnAsIHRpbWVfdCAqdHQpCiB7CiAJKnR0ID0gdnAtPnZfaW5vZGUuaV9hdGltZS50dl9zZWM7CiB9CkBAIC02MTAsMTEgKzU1MywxMCBAQAogI2RlZmluZSBWTl9DQUNIRUQodnApCSh2bl90b19pbm9kZSh2cCktPmlfbWFwcGluZy0+bnJwYWdlcykKICNkZWZpbmUgVk5fRElSVFkodnApCW1hcHBpbmdfdGFnZ2VkKHZuX3RvX2lub2RlKHZwKS0+aV9tYXBwaW5nLCBcCiAJCQkJCVBBR0VDQUNIRV9UQUdfRElSVFkpCi0jZGVmaW5lIFZNT0RJRlkodnApCVZOX0ZMQUdTRVQodnAsIFZNT0RJRklFRCkKLSNkZWZpbmUgVlVOTU9ESUZZKHZwKQlWTl9GTEFHQ0xSKHZwLCBWTU9ESUZJRUQpCisjZGVmaW5lIFZOX1RSVU5DKHZwKQkoKHZwKS0+dl9mbGFnICYgVlRSVU5DQVRFRCkKIAogLyoKLSAqIEZsYWdzIHRvIFZPUF9TRVRBVFRSL1ZPUF9HRVRBVFRSLgorICogRmxhZ3MgdG8gdm9wX3NldGF0dHIvZ2V0YXR0ci4KICAqLwogI2RlZmluZQlBVFRSX1VUSU1FCTB4MDEJLyogbm9uLWRlZmF1bHQgdXRpbWUoMikgcmVxdWVzdCAqLwogI2RlZmluZQlBVFRSX0RNSQkweDA4CS8qIGludm9jYXRpb24gZnJvbSBhIERNSSBmdW5jdGlvbiAqLwpAQCAtNjI0LDcgKzU2Niw3IEBACiAjZGVmaW5lIEFUVFJfTk9TSVpFVE9LCTB4NDAwCS8qIERvbid0IGdldCB0aGUgU0laRSB0b2tlbiAqLwogCiAvKgotICogRmxhZ3MgdG8gVk9QX0ZTWU5DIGFuZCBWT1BfUkVDTEFJTS4KKyAqIEZsYWdzIHRvIHZvcF9mc3luYy9yZWNsYWltLgogICovCiAjZGVmaW5lIEZTWU5DX05PV0FJVAkwCS8qIGFzeW5jaHJvbm91cyBmbHVzaCAqLwogI2RlZmluZSBGU1lOQ19XQUlUCTB4MQkvKiBzeW5jaHJvbm91cyBmc3luYyBvciBmb3JjZWQgcmVjbGFpbSAqLwpAQCAtNjQzLDExICs1ODUsMTEgQEAKICNkZWZpbmUJVk5PREVfS1RSQUNFX1JFRgk0CiAjZGVmaW5lCVZOT0RFX0tUUkFDRV9SRUxFCTUKIAotZXh0ZXJuIHZvaWQgdm5fdHJhY2VfZW50cnkoc3RydWN0IHZub2RlICosIGNvbnN0IGNoYXIgKiwgaW5zdF90ICopOwotZXh0ZXJuIHZvaWQgdm5fdHJhY2VfZXhpdChzdHJ1Y3Qgdm5vZGUgKiwgY29uc3QgY2hhciAqLCBpbnN0X3QgKik7Ci1leHRlcm4gdm9pZCB2bl90cmFjZV9ob2xkKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIGludCwgaW5zdF90ICopOwotZXh0ZXJuIHZvaWQgdm5fdHJhY2VfcmVmKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIGludCwgaW5zdF90ICopOwotZXh0ZXJuIHZvaWQgdm5fdHJhY2VfcmVsZShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBpbnQsIGluc3RfdCAqKTsKK2V4dGVybiB2b2lkIHZuX3RyYWNlX2VudHJ5KHN0cnVjdCBiaHZfdm5vZGUgKiwgY29uc3QgY2hhciAqLCBpbnN0X3QgKik7CitleHRlcm4gdm9pZCB2bl90cmFjZV9leGl0KHN0cnVjdCBiaHZfdm5vZGUgKiwgY29uc3QgY2hhciAqLCBpbnN0X3QgKik7CitleHRlcm4gdm9pZCB2bl90cmFjZV9ob2xkKHN0cnVjdCBiaHZfdm5vZGUgKiwgY2hhciAqLCBpbnQsIGluc3RfdCAqKTsKK2V4dGVybiB2b2lkIHZuX3RyYWNlX3JlZihzdHJ1Y3QgYmh2X3Zub2RlICosIGNoYXIgKiwgaW50LCBpbnN0X3QgKik7CitleHRlcm4gdm9pZCB2bl90cmFjZV9yZWxlKHN0cnVjdCBiaHZfdm5vZGUgKiwgY2hhciAqLCBpbnQsIGluc3RfdCAqKTsKIAogI2RlZmluZQlWTl9UUkFDRSh2cCkJCVwKIAl2bl90cmFjZV9yZWYodnAsIF9fRklMRV9fLCBfX0xJTkVfXywgKGluc3RfdCAqKV9fcmV0dXJuX2FkZHJlc3MpCmRpZmYgLS1naXQgYS9mcy94ZnMvcXVvdGEveGZzX2RxdW90LmMgYi9mcy94ZnMvcXVvdGEveGZzX2RxdW90LmMKaW5kZXggNzcyYWM0OC4uM2FhNzcxNSAxMDA2NDQKLS0tIGEvZnMveGZzL3F1b3RhL3hmc19kcXVvdC5jCisrKyBiL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuYwpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNDQ0LDcgKzQ0Miw3IEBACiAJCQkgICAgICBYRlNfQk1BUElfTUVUQURBVEEgfCBYRlNfQk1BUElfV1JJVEUsCiAJCQkgICAgICAmZmlyc3RibG9jaywKIAkJCSAgICAgIFhGU19RTV9EUUFMTE9DX1NQQUNFX1JFUyhtcCksCi0JCQkgICAgICAmbWFwLCAmbm1hcHMsICZmbGlzdCkpKSB7CisJCQkgICAgICAmbWFwLCAmbm1hcHMsICZmbGlzdCwgTlVMTCkpKSB7CiAJCWdvdG8gZXJyb3IwOwogCX0KIAlBU1NFUlQobWFwLmJyX2Jsb2NrY291bnQgPT0gWEZTX0RRVU9UX0NMVVNURVJfU0laRV9GU0IpOwpAQCAtNTU5LDcgKzU1Nyw3IEBACiAJCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIHF1b3RpcCwgZHFwLT5xX2ZpbGVvZmZzZXQsCiAJCQkJICBYRlNfRFFVT1RfQ0xVU1RFUl9TSVpFX0ZTQiwKIAkJCQkgIFhGU19CTUFQSV9NRVRBREFUQSwKLQkJCQkgIE5VTEwsIDAsICZtYXAsICZubWFwcywgTlVMTCk7CisJCQkJICBOVUxMLCAwLCAmbWFwLCAmbm1hcHMsIE5VTEwsIE5VTEwpOwogCiAJCXhmc19pdW5sb2NrKHF1b3RpcCwgWEZTX0lMT0NLX1NIQVJFRCk7CiAJCWlmIChlcnJvcikKQEAgLTEyNjEsNyArMTI1OSw3IEBACiAKIAlpZiAoeGZzX3FtX2RxY2hlY2soJmRxcC0+cV9jb3JlLCBiZTMyX3RvX2NwdShkZHFwLT5kX2lkKSwKIAkJCSAgIDAsIFhGU19RTU9QVF9ET1dBUk4sICJkcWZsdXNoIChpbmNvcmUgY29weSkiKSkgewotCQl4ZnNfZm9yY2Vfc2h1dGRvd24oZHFwLT5xX21vdW50LCBYRlNfQ09SUlVQVF9JTkNPUkUpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24oZHFwLT5xX21vdW50LCBTSFVURE9XTl9DT1JSVVBUX0lOQ09SRSk7CiAJCXJldHVybiBYRlNfRVJST1IoRUlPKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuaCBiL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuaAppbmRleCBjMGM2Mjk2Li43OGQzYWI5IDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX2RxdW90LmgKKysrIGIvZnMveGZzL3F1b3RhL3hmc19kcXVvdC5oCkBAIC0xMTksNyArMTE5LDcgQEAKICAqLwogI2RlZmluZSB4ZnNfZHFmbG9jayhkcXApCSB7IHBzZW1hKCYoKGRxcCktPnFfZmxvY2spLCBQSU5PRCB8IFBSRUNBTEMpO1wKIAkJCQkgICAoZHFwKS0+ZHFfZmxhZ3MgfD0gWEZTX0RRX0ZMT0NLRUQ7IH0KLSNkZWZpbmUgeGZzX2RxZnVubG9jayhkcXApCSB7IEFTU0VSVCh2YWx1c2VtYSgmKChkcXApLT5xX2Zsb2NrKSkgPD0gMCk7IFwKKyNkZWZpbmUgeGZzX2RxZnVubG9jayhkcXApCSB7IEFTU0VSVChpc3NlbWFsb2NrZWQoJigoZHFwKS0+cV9mbG9jaykpKTsgXAogCQkJCSAgIHZzZW1hKCYoKGRxcCktPnFfZmxvY2spKTsgXAogCQkJCSAgIChkcXApLT5kcV9mbGFncyAmPSB+KFhGU19EUV9GTE9DS0VEKTsgfQogCkBAIC0xMjgsNyArMTI4LDcgQEAKICNkZWZpbmUgWEZTX0RRX1BJTlVOTE9DSyhkcXAsIHMpICAgbXV0ZXhfc3BpbnVubG9jayggXAogCQkJCSAgICAgJihYRlNfRFFfVE9fUUlORihkcXApLT5xaV9waW5sb2NrKSwgcykKIAotI2RlZmluZSBYRlNfRFFfSVNfRkxVU0hfTE9DS0VEKGRxcCkgKHZhbHVzZW1hKCYoKGRxcCktPnFfZmxvY2spKSA8PSAwKQorI2RlZmluZSBYRlNfRFFfSVNfRkxVU0hfTE9DS0VEKGRxcCkgKGlzc2VtYWxvY2tlZCgmKChkcXApLT5xX2Zsb2NrKSkpCiAjZGVmaW5lIFhGU19EUV9JU19PTl9GUkVFTElTVChkcXApICAoKGRxcCktPmRxX2ZsbmV4dCAhPSAoZHFwKSkKICNkZWZpbmUgWEZTX0RRX0lTX0RJUlRZKGRxcCkJKChkcXApLT5kcV9mbGFncyAmIFhGU19EUV9ESVJUWSkKICNkZWZpbmUgWEZTX1FNX0lTVURRKGRxcCkJKChkcXApLT5kcV9mbGFncyAmIFhGU19EUV9VU0VSKQpkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc19kcXVvdF9pdGVtLmMgYi9mcy94ZnMvcXVvdGEveGZzX2RxdW90X2l0ZW0uYwppbmRleCA1NDZmNDhhLi41YjJkY2M1IDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX2RxdW90X2l0ZW0uYworKysgYi9mcy94ZnMvcXVvdGEveGZzX2RxdW90X2l0ZW0uYwpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMjQ4LDcgKzI0Niw3IEBACiAJICogaW5vZGUgZmx1c2ggY29tcGxldGVkIGFuZCB0aGUgaW5vZGUgd2FzIHRha2VuIG9mZiB0aGUgQUlMLgogCSAqIFNvLCBqdXN0IGdldCBvdXQuCiAJICovCi0JaWYgKCh2YWx1c2VtYSgmKGRxcC0+cV9mbG9jaykpID4gMCkgIHx8CisJaWYgKCFpc3NlbWFsb2NrZWQoJihkcXAtPnFfZmxvY2spKSAgfHwKIAkgICAgKChxaXAtPnFsaV9pdGVtLmxpX2ZsYWdzICYgWEZTX0xJX0lOX0FJTCkgPT0gMCkpIHsKIAkJcWlwLT5xbGlfcHVzaGJ1Zl9mbGFnID0gMDsKIAkJeGZzX2RxdW5sb2NrKGRxcCk7CkBAIC0yNjEsNyArMjU5LDcgQEAKIAlpZiAoYnAgIT0gTlVMTCkgewogCQlpZiAoWEZTX0JVRl9JU0RFTEFZV1JJVEUoYnApKSB7CiAJCQlkb3B1c2ggPSAoKHFpcC0+cWxpX2l0ZW0ubGlfZmxhZ3MgJiBYRlNfTElfSU5fQUlMKSAmJgotCQkJCSAgKHZhbHVzZW1hKCYoZHFwLT5xX2Zsb2NrKSkgPD0gMCkpOworCQkJCSAgaXNzZW1hbG9ja2VkKCYoZHFwLT5xX2Zsb2NrKSkpOwogCQkJcWlwLT5xbGlfcHVzaGJ1Zl9mbGFnID0gMDsKIAkJCXhmc19kcXVubG9jayhkcXApOwogCmRpZmYgLS1naXQgYS9mcy94ZnMvcXVvdGEveGZzX3FtLmMgYi9mcy94ZnMvcXVvdGEveGZzX3FtLmMKaW5kZXggN2ZiNWVjYS4uZTIzZTQ1NSAxMDA2NDQKLS0tIGEvZnMveGZzL3F1b3RhL3hmc19xbS5jCisrKyBiL2ZzL3hmcy9xdW90YS94ZnNfcW0uYwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMzMsNyArMzIsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTYwMyw3ICsxNjAxLDcgQEAKIAkJCQkgIG1heGxibGtjbnQgLSBsYmxrbm8sCiAJCQkJICBYRlNfQk1BUElfTUVUQURBVEEsCiAJCQkJICBOVUxMLAotCQkJCSAgMCwgbWFwLCAmbm1hcHMsIE5VTEwpOworCQkJCSAgMCwgbWFwLCAmbm1hcHMsIE5VTEwsIE5VTEwpOwogCQl4ZnNfaXVubG9jayhxaXAsIFhGU19JTE9DS19TSEFSRUQpOwogCQlpZiAoZXJyb3IpCiAJCQlicmVhazsKQEAgLTE5MDUsOSArMTkwMyw3IEBACiAJCSAqLwogCQlpZiAoKGVycm9yID0geGZzX2J1bGtzdGF0KG1wLCAmbGFzdGlubywgJmNvdW50LAogCQkJCSAgICAgeGZzX3FtX2RxdXNhZ2VfYWRqdXN0LCBOVUxMLAotCQkJCSAgICAgc3RydWN0c3osIE5VTEwsCi0JCQkJICAgICBCVUxLU1RBVF9GR19JR0VUfEJVTEtTVEFUX0ZHX1ZGU0xPQ0tFRCwKLQkJCQkgICAgICZkb25lKSkpCisJCQkJICAgICBzdHJ1Y3RzeiwgTlVMTCwgQlVMS1NUQVRfRkdfSUdFVCwgJmRvbmUpKSkKIAkJCWJyZWFrOwogCiAJfSB3aGlsZSAoISBkb25lKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMgYi9mcy94ZnMvcXVvdGEveGZzX3FtX2Jodi5jCmluZGV4IDY4MzhiMzYuLmU5NWU5OWYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMKKysrIGIvZnMveGZzL3F1b3RhL3hmc19xbV9iaHYuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKQEAgLTMzLDcgKzMyLDYgQEAKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTEyOSw3ICsxMjcsNyBAQAogCQlyZXR1cm4gWEZTX0VSUk9SKEVJTlZBTCk7CiAJfQogCi0JUFZGU19QQVJTRUFSR1MoQkhWX05FWFQoYmh2KSwgb3B0aW9ucywgYXJncywgdXBkYXRlLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfbmV4dF92ZnNfcGFyc2VhcmdzKEJIVl9ORVhUKGJodiksIG9wdGlvbnMsIGFyZ3MsIHVwZGF0ZSk7CiAJaWYgKCFlcnJvciAmJiAhcmVmZXJlbmNlZCkKIAkJYmh2X3JlbW92ZV92ZnNvcHMoYmh2dG92ZnMoYmh2KSwgVkZTX1BPU0lUSU9OX1FNKTsKIAlyZXR1cm4gZXJyb3I7CkBAIC0xNDAsOSArMTM4LDggQEAKIAlzdHJ1Y3QgYmh2X2Rlc2MJCSpiaHYsCiAJc3RydWN0IHNlcV9maWxlCQkqbSkKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IGJodnRvdmZzKGJodik7CisJc3RydWN0IGJodl92ZnMJCSp2ZnNwID0gYmh2dG92ZnMoYmh2KTsKIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19WRlNUT00odmZzcCk7Ci0JaW50CQkJZXJyb3I7CiAKIAlpZiAobXAtPm1fcWZsYWdzICYgWEZTX1VRVU9UQV9BQ0NUKSB7CiAJCShtcC0+bV9xZmxhZ3MgJiBYRlNfVVFVT1RBX0VORkQpID8KQEAgLTE2NSw4ICsxNjIsNyBAQAogCWlmICghKG1wLT5tX3FmbGFncyAmIFhGU19BTExfUVVPVEFfQUNDVCkpCiAJCXNlcV9wdXRzKG0sICIsIiBNTlRPUFRfTk9RVU9UQSk7CiAKLQlQVkZTX1NIT1dBUkdTKEJIVl9ORVhUKGJodiksIG0sIGVycm9yKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIGJodl9uZXh0X3Zmc19zaG93YXJncyhCSFZfTkVYVChiaHYpLCBtKTsKIH0KIAogU1RBVElDIGludApAQCAtMTc1LDE0ICsxNzEsNjcgQEAKIAlzdHJ1Y3QgeGZzX21vdW50X2FyZ3MJKmFyZ3MsCiAJc3RydWN0IGNyZWQJCSpjcikKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IGJodnRvdmZzKGJodik7CisJc3RydWN0IGJodl92ZnMJCSp2ZnNwID0gYmh2dG92ZnMoYmh2KTsKIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19WRlNUT00odmZzcCk7Ci0JaW50CQkJZXJyb3I7CiAKIAlpZiAoYXJncy0+ZmxhZ3MgJiAoWEZTTU5UX1VRVU9UQSB8IFhGU01OVF9HUVVPVEEgfCBYRlNNTlRfUFFVT1RBKSkKIAkJeGZzX3FtX21vdW50X3F1b3RhaW5pdChtcCwgYXJncy0+ZmxhZ3MpOwotCVBWRlNfTU9VTlQoQkhWX05FWFQoYmh2KSwgYXJncywgY3IsIGVycm9yKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIGJodl9uZXh0X3Zmc19tb3VudChCSFZfTkVYVChiaHYpLCBhcmdzLCBjcik7Cit9CisKKy8qCisgKiBEaXJlY3RvcnkgdHJlZSBhY2NvdW50aW5nIGlzIGltcGxlbWVudGVkIHVzaW5nIHByb2plY3QgcXVvdGFzLCB3aGVyZQorICogdGhlIHByb2plY3QgaWRlbnRpZmllciBpcyBpbmhlcml0ZWQgZnJvbSBwYXJlbnQgZGlyZWN0b3JpZXMuCisgKiBBIHN0YXR2ZnMgKGRmLCBldGMuKSBvZiBhIGRpcmVjdG9yeSB0aGF0IGlzIHVzaW5nIHByb2plY3QgcXVvdGEgc2hvdWxkCisgKiByZXR1cm4gYSBzdGF0dmZzIG9mIHRoZSBwcm9qZWN0LCBub3QgdGhlIGVudGlyZSBmaWxlc3lzdGVtLgorICogVGhpcyBtYWtlcyBzdWNoIHRyZWVzIGFwcGVhciBhcyBpZiB0aGV5IGFyZSBmaWxlc3lzdGVtcyBpbiB0aGVtc2VsdmVzLgorICovCitTVEFUSUMgaW50Cit4ZnNfcW1fc3RhdHZmcygKKwlzdHJ1Y3QgYmh2X2Rlc2MJCSpiaHYsCisJYmh2X3N0YXR2ZnNfdAkJKnN0YXRwLAorCXN0cnVjdCBiaHZfdm5vZGUJKnZub2RlKQoreworCXhmc19tb3VudF90CQkqbXA7CisJeGZzX2lub2RlX3QJCSppcDsKKwl4ZnNfZHF1b3RfdAkJKmRxcDsKKwl4ZnNfZGlza19kcXVvdF90CSpkcDsKKwlfX3VpbnQ2NF90CQlsaW1pdDsKKwlpbnQJCQllcnJvcjsKKworCWVycm9yID0gYmh2X25leHRfdmZzX3N0YXR2ZnMoQkhWX05FWFQoYmh2KSwgc3RhdHAsIHZub2RlKTsKKwlpZiAoZXJyb3IgfHwgIXZub2RlKQorCQlyZXR1cm4gZXJyb3I7CisKKwltcCA9IFhGU19CSFZUT00oYmh2KTsKKwlpcCA9IHhmc192dG9pKHZub2RlKTsKKworCWlmICghKGlwLT5pX2QuZGlfZmxhZ3MgJiBYRlNfRElGTEFHX1BST0pJTkhFUklUKSkKKwkJcmV0dXJuIDA7CisJaWYgKCEobXAtPm1fcWZsYWdzICYgWEZTX1BRVU9UQV9BQ0NUKSkKKwkJcmV0dXJuIDA7CisJaWYgKCEobXAtPm1fcWZsYWdzICYgWEZTX09RVU9UQV9FTkZEKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoeGZzX3FtX2RxZ2V0KG1wLCBOVUxMLCBpcC0+aV9kLmRpX3Byb2ppZCwgWEZTX0RRX1BST0osIDAsICZkcXApKQorCQlyZXR1cm4gMDsKKwlkcCA9ICZkcXAtPnFfY29yZTsKKworCWxpbWl0ID0gZHAtPmRfYmxrX3NvZnRsaW1pdCA/IGRwLT5kX2Jsa19zb2Z0bGltaXQgOiBkcC0+ZF9ibGtfaGFyZGxpbWl0OworCWlmIChsaW1pdCAmJiBzdGF0cC0+Zl9ibG9ja3MgPiBsaW1pdCkgeworCQlzdGF0cC0+Zl9ibG9ja3MgPSBsaW1pdDsKKwkJc3RhdHAtPmZfYmZyZWUgPSAoc3RhdHAtPmZfYmxvY2tzID4gZHAtPmRfYmNvdW50KSA/CisJCQkJCShzdGF0cC0+Zl9ibG9ja3MgLSBkcC0+ZF9iY291bnQpIDogMDsKKwl9CisJbGltaXQgPSBkcC0+ZF9pbm9fc29mdGxpbWl0ID8gZHAtPmRfaW5vX3NvZnRsaW1pdCA6IGRwLT5kX2lub19oYXJkbGltaXQ7CisJaWYgKGxpbWl0ICYmIHN0YXRwLT5mX2ZpbGVzID4gbGltaXQpIHsKKwkJc3RhdHAtPmZfZmlsZXMgPSBsaW1pdDsKKwkJc3RhdHAtPmZfZmZyZWUgPSAoc3RhdHAtPmZfZmlsZXMgPiBkcC0+ZF9pY291bnQpID8KKwkJCQkJKHN0YXRwLT5mX2ZmcmVlIC0gZHAtPmRfaWNvdW50KSA6IDA7CisJfQorCisJeGZzX3FtX2RxcHV0KGRxcCk7CisJcmV0dXJuIDA7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTE5MSw3ICsyNDAsNyBAQAogCWludAkJCWZsYWdzLAogCWNyZWRfdAkJCSpjcmVkcCkKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IGJodnRvdmZzKGJodik7CisJc3RydWN0IGJodl92ZnMJCSp2ZnNwID0gYmh2dG92ZnMoYmh2KTsKIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19WRlNUT00odmZzcCk7CiAJaW50CQkJZXJyb3I7CiAKQEAgLTIxMCw4ICsyNTksNyBAQAogCQkJfQogCQl9CiAJfQotCVBWRlNfU1lOQyhCSFZfTkVYVChiaHYpLCBmbGFncywgY3JlZHAsIGVycm9yKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIGJodl9uZXh0X3Zmc19zeW5jKEJIVl9ORVhUKGJodiksIGZsYWdzLCBjcmVkcCk7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTM0NiwxMSArMzk0LDEyIEBACiAJLnhmc19kcXRyeG9wcwkJPSAmeGZzX3RyYW5zX2RxdW90X29wcywKIH07CiAKLXN0cnVjdCBiaHZfdmZzb3BzIHhmc19xbW9wcyA9IHsgeworc3RydWN0IGJodl9tb2R1bGVfdmZzb3BzIHhmc19xbW9wcyA9IHsgewogCUJIVl9JREVOVElUWV9JTklUKFZGU19CSFZfUU0sIFZGU19QT1NJVElPTl9RTSksCiAJLnZmc19wYXJzZWFyZ3MJCT0geGZzX3FtX3BhcnNlYXJncywKIAkudmZzX3Nob3dhcmdzCQk9IHhmc19xbV9zaG93YXJncywKIAkudmZzX21vdW50CQk9IHhmc19xbV9tb3VudCwKKwkudmZzX3N0YXR2ZnMJCT0geGZzX3FtX3N0YXR2ZnMsCiAJLnZmc19zeW5jCQk9IHhmc19xbV9zeW5jYWxsLAogCS52ZnNfcXVvdGFjdGwJCT0geGZzX3FtX3F1b3RhY3RsLCB9LAogfTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3RhdHMuYyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3RhdHMuYwppbmRleCAwNTcwZjc3Li42Zjg1OGZiIDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX3FtX3N0YXRzLmMKKysrIGIvZnMveGZzL3F1b3RhL3hmc19xbV9zdGF0cy5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCkBAIC0zMiw3ICszMSw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCmRpZmYgLS1naXQgYS9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMgYi9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMKaW5kZXggYzU1ZGI0Ni4uZWQ2MjBjNCAxMDA2NDQKLS0tIGEvZnMveGZzL3F1b3RhL3hmc19xbV9zeXNjYWxscy5jCisrKyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3lzY2FsbHMuYwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMzUsNyArMzQsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtOTEsOCArODksOCBAQAogCXhmc19jYWRkcl90CWFkZHIpCiB7CiAJeGZzX21vdW50X3QJKm1wOworCWJodl92ZnNfdAkqdmZzcDsKIAlpbnQJCWVycm9yOwotCXN0cnVjdCB2ZnMJKnZmc3A7CiAKIAl2ZnNwID0gYmh2dG92ZnMoYmRwKTsKIAltcCA9IFhGU19WRlNUT00odmZzcCk7CkBAIC0xMDM1LDcgKzEwMzMsNyBAQAogewogCXhmc19pbm9kZV90CSppcCwgKnRvcGlubzsKIAl1aW50CQlpcmVjbGFpbXM7Ci0Jdm5vZGVfdAkJKnZwOworCWJodl92bm9kZV90CSp2cDsKIAlib29sZWFuX3QJdm5vZGVfcmVmZDsKIAogCUFTU0VSVChtcC0+bV9xdW90YWluZm8pOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc190cmFuc19kcXVvdC5jIGIvZnMveGZzL3F1b3RhL3hmc190cmFuc19kcXVvdC5jCmluZGV4IDkxNjg5MTguLjAyNDJlOTYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfdHJhbnNfZHF1b3QuYworKysgYi9mcy94ZnMvcXVvdGEveGZzX3RyYW5zX2RxdW90LmMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKQEAgLTMzLDcgKzMyLDYgQEAKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlLmgiCmRpZmYgLS1naXQgYS9mcy94ZnMvc3VwcG9ydC9kZWJ1Zy5jIGIvZnMveGZzL3N1cHBvcnQvZGVidWcuYwppbmRleCBiMDhiM2Q5Li4zNmZiZWNjIDEwMDY0NAotLS0gYS9mcy94ZnMvc3VwcG9ydC9kZWJ1Zy5jCisrKyBiL2ZzL3hmcy9zdXBwb3J0L2RlYnVnLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKIAl2YV9zdGFydChhcCwgZm10KTsKIAlpZiAoKmZtdCA9PSAnIScpIGZwKys7CiAJbGVuID0gdnNwcmludGYobWVzc2FnZSwgZnAsIGFwKTsKLQlpZiAobWVzc2FnZVtsZW4tMV0gIT0gJ1xuJykKKwlpZiAobGV2ZWwgIT0gQ0VfREVCVUcgJiYgbWVzc2FnZVtsZW4tMV0gIT0gJ1xuJykKIAkJc3RyY2F0KG1lc3NhZ2UsICJcbiIpOwogCXByaW50aygiJXMlcyIsIGVycl9sZXZlbFtsZXZlbF0sIG1lc3NhZ2UpOwogCXZhX2VuZChhcCk7CkBAIC02OCw3ICs2OCw3IEBACiAJCWxldmVsID0gWEZTX01BWF9FUlJfTEVWRUw7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJnhmc19lcnJfbG9jayxmbGFncyk7CiAJbGVuID0gdnNwcmludGYobWVzc2FnZSwgZm10LCBhcCk7Ci0JaWYgKG1lc3NhZ2VbbGVuLTFdICE9ICdcbicpCisJaWYgKGxldmVsICE9IENFX0RFQlVHICYmIG1lc3NhZ2VbbGVuLTFdICE9ICdcbicpCiAJCXN0cmNhdChtZXNzYWdlLCAiXG4iKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4ZnNfZXJyX2xvY2ssZmxhZ3MpOwogCXByaW50aygiJXMlcyIsIGVycl9sZXZlbFtsZXZlbF0sIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3N1cHBvcnQvZGVidWcuaCBiL2ZzL3hmcy9zdXBwb3J0L2RlYnVnLmgKaW5kZXggZTNiZjU4MS4uNGY1NGRjYSAxMDA2NDQKLS0tIGEvZnMveGZzL3N1cHBvcnQvZGVidWcuaAorKysgYi9mcy94ZnMvc3VwcG9ydC9kZWJ1Zy5oCkBAIC0zMyw5ICszMyw2IEBACiAJX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwogZXh0ZXJuIHZvaWQgYXNzZmFpbChjaGFyICpleHByLCBjaGFyICpmLCBpbnQgbCk7CiAKLSNkZWZpbmUgcHJkZXYoZm10LHRhcmcsYXJncy4uLikgXAotCXByaW50aygiRGV2aWNlICVzIC0gIiBmbXQgIlxuIiwgWEZTX0JVRlRBUkdfTkFNRSh0YXJnKSwgIyMgYXJncykKLQogI2RlZmluZSBBU1NFUlRfQUxXQVlTKGV4cHIpCVwKIAkodW5saWtlbHkoKGV4cHIpICE9IDApID8gKHZvaWQpMCA6IGFzc2ZhaWwoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYWNsLmMgYi9mcy94ZnMveGZzX2FjbC5jCmluZGV4IDI1MzlhZjMuLjRiMGNiNDcgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYWNsLmMKKysrIGIvZnMveGZzL3hmc19hY2wuYwpAQCAtMjEsMTIgKzIxLDEwIEBACiAjaW5jbHVkZSAieGZzX2JpdC5oIgogI2luY2x1ZGUgInhmc19pbnVtLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC0zOSwxNSArMzcsMTUgQEAKICNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+CiAjaW5jbHVkZSA8bGludXgvcG9zaXhfYWNsX3hhdHRyLmg+CiAKLVNUQVRJQyBpbnQJeGZzX2FjbF9zZXRtb2RlKHZub2RlX3QgKiwgeGZzX2FjbF90ICosIGludCAqKTsKK1NUQVRJQyBpbnQJeGZzX2FjbF9zZXRtb2RlKGJodl92bm9kZV90ICosIHhmc19hY2xfdCAqLCBpbnQgKik7CiBTVEFUSUMgdm9pZCAgICAgeGZzX2FjbF9maWx0ZXJfbW9kZShtb2RlX3QsIHhmc19hY2xfdCAqKTsKIFNUQVRJQyB2b2lkCXhmc19hY2xfZ2V0X2VuZGlhbih4ZnNfYWNsX3QgKik7CiBTVEFUSUMgaW50CXhmc19hY2xfYWNjZXNzKHVpZF90LCBnaWRfdCwgeGZzX2FjbF90ICosIG1vZGVfdCwgY3JlZF90ICopOwogU1RBVElDIGludAl4ZnNfYWNsX2ludmFsaWQoeGZzX2FjbF90ICopOwogU1RBVElDIHZvaWQJeGZzX2FjbF9zeW5jX21vZGUobW9kZV90LCB4ZnNfYWNsX3QgKik7Ci1TVEFUSUMgdm9pZAl4ZnNfYWNsX2dldF9hdHRyKHZub2RlX3QgKiwgeGZzX2FjbF90ICosIGludCwgaW50LCBpbnQgKik7Ci1TVEFUSUMgdm9pZAl4ZnNfYWNsX3NldF9hdHRyKHZub2RlX3QgKiwgeGZzX2FjbF90ICosIGludCwgaW50ICopOwotU1RBVElDIGludAl4ZnNfYWNsX2FsbG93X3NldCh2bm9kZV90ICosIGludCk7CitTVEFUSUMgdm9pZAl4ZnNfYWNsX2dldF9hdHRyKGJodl92bm9kZV90ICosIHhmc19hY2xfdCAqLCBpbnQsIGludCwgaW50ICopOworU1RBVElDIHZvaWQJeGZzX2FjbF9zZXRfYXR0cihiaHZfdm5vZGVfdCAqLCB4ZnNfYWNsX3QgKiwgaW50LCBpbnQgKik7CitTVEFUSUMgaW50CXhmc19hY2xfYWxsb3dfc2V0KGJodl92bm9kZV90ICosIGludCk7CiAKIGttZW1fem9uZV90ICp4ZnNfYWNsX3pvbmU7CiAKQEAgLTU3LDcgKzU1LDcgQEAKICAqLwogaW50CiB4ZnNfYWNsX3ZoYXNhY2xfYWNjZXNzKAotCXZub2RlX3QJCSp2cCkKKwliaHZfdm5vZGVfdAkqdnApCiB7CiAJaW50CQllcnJvcjsKIApAQCAtNzAsNyArNjgsNyBAQAogICovCiBpbnQKIHhmc19hY2xfdmhhc2FjbF9kZWZhdWx0KAotCXZub2RlX3QJCSp2cCkKKwliaHZfdm5vZGVfdAkqdnApCiB7CiAJaW50CQllcnJvcjsKIApAQCAtMjA5LDcgKzIwNyw3IEBACiAKIGludAogeGZzX2FjbF92Z2V0KAotCXZub2RlX3QJCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJdm9pZAkJKmFjbCwKIAlzaXplX3QJCXNpemUsCiAJaW50CQlraW5kKQpAQCAtMjQxLDEwICsyMzksMTAgQEAKIAkJCWdvdG8gb3V0OwogCQl9CiAJCWlmIChraW5kID09IF9BQ0xfVFlQRV9BQ0NFU1MpIHsKLQkJCXZhdHRyX3QJdmE7CisJCQliaHZfdmF0dHJfdAl2YTsKIAogCQkJdmEudmFfbWFzayA9IFhGU19BVF9NT0RFOwotCQkJVk9QX0dFVEFUVFIodnAsICZ2YSwgMCwgc3lzX2NyZWQsIGVycm9yKTsKKwkJCWVycm9yID0gYmh2X3ZvcF9nZXRhdHRyKHZwLCAmdmEsIDAsIHN5c19jcmVkKTsKIAkJCWlmIChlcnJvcikKIAkJCQlnb3RvIG91dDsKIAkJCXhmc19hY2xfc3luY19tb2RlKHZhLnZhX21vZGUsIHhmc19hY2wpOwpAQCAtMjYwLDcgKzI1OCw3IEBACiAKIGludAogeGZzX2FjbF92cmVtb3ZlKAotCXZub2RlX3QJCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJaW50CQlraW5kKQogewogCWludAkJZXJyb3I7CkBAIC0yNjgsOSArMjY2LDkgQEAKIAlWTl9IT0xEKHZwKTsKIAllcnJvciA9IHhmc19hY2xfYWxsb3dfc2V0KHZwLCBraW5kKTsKIAlpZiAoIWVycm9yKSB7Ci0JCVZPUF9BVFRSX1JFTU9WRSh2cCwga2luZCA9PSBfQUNMX1RZUEVfREVGQVVMVD8KLQkJCQlTR0lfQUNMX0RFRkFVTFQ6IFNHSV9BQ0xfRklMRSwKLQkJCQlBVFRSX1JPT1QsIHN5c19jcmVkLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3ZvcF9hdHRyX3JlbW92ZSh2cCwga2luZCA9PSBfQUNMX1RZUEVfREVGQVVMVD8KKwkJCQkJCVNHSV9BQ0xfREVGQVVMVDogU0dJX0FDTF9GSUxFLAorCQkJCQkJQVRUUl9ST09ULCBzeXNfY3JlZCk7CiAJCWlmIChlcnJvciA9PSBFTk9BVFRSKQogCQkJZXJyb3IgPSAwOwkvKiAnc2Nvb2wgKi8KIAl9CkBAIC0yODAsNyArMjc4LDcgQEAKIAogaW50CiB4ZnNfYWNsX3ZzZXQoCi0Jdm5vZGVfdAkJCSp2cCwKKwliaHZfdm5vZGVfdAkJKnZwLAogCXZvaWQJCQkqYWNsLAogCXNpemVfdAkJCXNpemUsCiAJaW50CQkJa2luZCkKQEAgLTM3MCwxMCArMzY4LDEwIEBACiAKIFNUQVRJQyBpbnQKIHhmc19hY2xfYWxsb3dfc2V0KAotCXZub2RlX3QJCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJaW50CQlraW5kKQogewotCXZhdHRyX3QJCXZhOworCWJodl92YXR0cl90CXZhOwogCWludAkJZXJyb3I7CiAKIAlpZiAodnAtPnZfaW5vZGUuaV9mbGFncyAmIChTX0lNTVVUQUJMRXxTX0FQUEVORCkpCkBAIC0zODMsNyArMzgxLDcgQEAKIAlpZiAodnAtPnZfdmZzcC0+dmZzX2ZsYWcgJiBWRlNfUkRPTkxZKQogCQlyZXR1cm4gRVJPRlM7CiAJdmEudmFfbWFzayA9IFhGU19BVF9VSUQ7Ci0JVk9QX0dFVEFUVFIodnAsICZ2YSwgMCwgTlVMTCwgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9nZXRhdHRyKHZwLCAmdmEsIDAsIE5VTEwpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCWlmICh2YS52YV91aWQgIT0gY3VycmVudC0+ZnN1aWQgJiYgIWNhcGFibGUoQ0FQX0ZPV05FUikpCkBAIC02MDYsNyArNjA0LDcgQEAKICAqLwogU1RBVElDIHZvaWQKIHhmc19hY2xfZ2V0X2F0dHIoCi0Jdm5vZGVfdAkJKnZwLAorCWJodl92bm9kZV90CSp2cCwKIAl4ZnNfYWNsX3QJKmFjbHAsCiAJaW50CQlraW5kLAogCWludAkJZmxhZ3MsCkBAIC02MTYsOSArNjE0LDkgQEAKIAogCUFTU0VSVCgoZmxhZ3MgJiBBVFRSX0tFUk5PVkFMKSA/IChhY2xwID09IE5VTEwpIDogMSk7CiAJZmxhZ3MgfD0gQVRUUl9ST09UOwotCVZPUF9BVFRSX0dFVCh2cCwKLQkJa2luZCA9PSBfQUNMX1RZUEVfQUNDRVNTID8gU0dJX0FDTF9GSUxFIDogU0dJX0FDTF9ERUZBVUxULAotCQkoY2hhciAqKWFjbHAsICZsZW4sIGZsYWdzLCBzeXNfY3JlZCwgKmVycm9yKTsKKwkqZXJyb3IgPSBiaHZfdm9wX2F0dHJfZ2V0KHZwLCBraW5kID09IF9BQ0xfVFlQRV9BQ0NFU1MgPworCQkJCQlTR0lfQUNMX0ZJTEUgOiBTR0lfQUNMX0RFRkFVTFQsCisJCQkJCShjaGFyICopYWNscCwgJmxlbiwgZmxhZ3MsIHN5c19jcmVkKTsKIAlpZiAoKmVycm9yIHx8IChmbGFncyAmIEFUVFJfS0VSTk9WQUwpKQogCQlyZXR1cm47CiAJeGZzX2FjbF9nZXRfZW5kaWFuKGFjbHApOwpAQCAtNjI5LDcgKzYyNyw3IEBACiAgKi8KIFNUQVRJQyB2b2lkCiB4ZnNfYWNsX3NldF9hdHRyKAotCXZub2RlX3QJCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJeGZzX2FjbF90CSphY2xwLAogCWludAkJa2luZCwKIAlpbnQJCSplcnJvcikKQEAgLTY1NCwxOSArNjUyLDE5IEBACiAJCUlOVF9TRVQobmV3YWNlLT5hZV9wZXJtLCBBUkNIX0NPTlZFUlQsIGFjZS0+YWVfcGVybSk7CiAJfQogCUlOVF9TRVQobmV3YWNsLT5hY2xfY250LCBBUkNIX0NPTlZFUlQsIGFjbHAtPmFjbF9jbnQpOwotCVZPUF9BVFRSX1NFVCh2cCwKLQkJa2luZCA9PSBfQUNMX1RZUEVfQUNDRVNTID8gU0dJX0FDTF9GSUxFOiBTR0lfQUNMX0RFRkFVTFQsCi0JCShjaGFyICopbmV3YWNsLCBsZW4sIEFUVFJfUk9PVCwgc3lzX2NyZWQsICplcnJvcik7CisJKmVycm9yID0gYmh2X3ZvcF9hdHRyX3NldCh2cCwga2luZCA9PSBfQUNMX1RZUEVfQUNDRVNTID8KKwkJCQlTR0lfQUNMX0ZJTEU6IFNHSV9BQ0xfREVGQVVMVCwKKwkJCQkoY2hhciAqKW5ld2FjbCwgbGVuLCBBVFRSX1JPT1QsIHN5c19jcmVkKTsKIAlfQUNMX0ZSRUUobmV3YWNsKTsKIH0KIAogaW50CiB4ZnNfYWNsX3Z0b2FjbCgKLQl2bm9kZV90CQkqdnAsCisJYmh2X3Zub2RlX3QJKnZwLAogCXhmc19hY2xfdAkqYWNjZXNzX2FjbCwKIAl4ZnNfYWNsX3QJKmRlZmF1bHRfYWNsKQogewotCXZhdHRyX3QJCXZhOworCWJodl92YXR0cl90CXZhOwogCWludAkJZXJyb3IgPSAwOwogCiAJaWYgKGFjY2Vzc19hY2wpIHsKQEAgLTY3OCw3ICs2NzYsNyBAQAogCQlpZiAoIWVycm9yKSB7CiAJCQkvKiBHb3QgdGhlIEFDTCwgbmVlZCB0aGUgbW9kZS4uLiAqLwogCQkJdmEudmFfbWFzayA9IFhGU19BVF9NT0RFOwotCQkJVk9QX0dFVEFUVFIodnAsICZ2YSwgMCwgc3lzX2NyZWQsIGVycm9yKTsKKwkJCWVycm9yID0gYmh2X3ZvcF9nZXRhdHRyKHZwLCAmdmEsIDAsIHN5c19jcmVkKTsKIAkJfQogCiAJCWlmIChlcnJvcikKQEAgLTcwMSw4ICs2OTksOCBAQAogICovCiBpbnQKIHhmc19hY2xfaW5oZXJpdCgKLQl2bm9kZV90CQkqdnAsCi0JdmF0dHJfdAkJKnZhcCwKKwliaHZfdm5vZGVfdAkqdnAsCisJYmh2X3ZhdHRyX3QJKnZhcCwKIAl4ZnNfYWNsX3QJKnBkYWNscCkKIHsKIAl4ZnNfYWNsX3QJKmNhY2w7CkBAIC03NTcsMTEgKzc1NSwxMSBAQAogICovCiBTVEFUSUMgaW50CiB4ZnNfYWNsX3NldG1vZGUoCi0Jdm5vZGVfdAkJKnZwLAorCWJodl92bm9kZV90CSp2cCwKIAl4ZnNfYWNsX3QJKmFjbCwKIAlpbnQJCSpiYXNpY3Blcm1zKQogewotCXZhdHRyX3QJCXZhOworCWJodl92YXR0cl90CXZhOwogCXhmc19hY2xfZW50cnlfdAkqYXA7CiAJeGZzX2FjbF9lbnRyeV90CSpnYXAgPSBOVUxMOwogCWludAkJaSwgZXJyb3IsIG5vbWFzayA9IDE7CkBAIC03NzYsNyArNzc0LDcgQEAKIAkgKiBtb2RlLiAgVGhlIG06OiBiaXRzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBnOjogYml0cy4KIAkgKi8KIAl2YS52YV9tYXNrID0gWEZTX0FUX01PREU7Ci0JVk9QX0dFVEFUVFIodnAsICZ2YSwgMCwgc3lzX2NyZWQsIGVycm9yKTsKKwllcnJvciA9IGJodl92b3BfZ2V0YXR0cih2cCwgJnZhLCAwLCBzeXNfY3JlZCk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKQEAgLTgxMCw4ICs4MDgsNyBAQAogCWlmIChnYXAgJiYgbm9tYXNrKQogCQl2YS52YV9tb2RlIHw9IGdhcC0+YWVfcGVybSA8PCAzOwogCi0JVk9QX1NFVEFUVFIodnAsICZ2YSwgMCwgc3lzX2NyZWQsIGVycm9yKTsKLQlyZXR1cm4gZXJyb3I7CisJcmV0dXJuIGJodl92b3Bfc2V0YXR0cih2cCwgJnZhLCAwLCBzeXNfY3JlZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2FjbC5oIGIvZnMveGZzL3hmc19hY2wuaAppbmRleCA1MzhkMGQ2Li5mODUzY2YxIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FjbC5oCisrKyBiL2ZzL3hmcy94ZnNfYWNsLmgKQEAgLTUwLDcgKzUwLDcgQEAKICNpZmRlZiBDT05GSUdfWEZTX1BPU0lYX0FDTAogCiBzdHJ1Y3QgdmF0dHI7Ci1zdHJ1Y3Qgdm5vZGU7CitzdHJ1Y3QgYmh2X3Zub2RlOwogc3RydWN0IHhmc19pbm9kZTsKIAogZXh0ZXJuIHN0cnVjdCBrbWVtX3pvbmUgKnhmc19hY2xfem9uZTsKQEAgLTU4LDE0ICs1OCwxNCBAQAogCQkoem9uZSkgPSBrbWVtX3pvbmVfaW5pdChzaXplb2YoeGZzX2FjbF90KSwgKG5hbWUpKQogI2RlZmluZSB4ZnNfYWNsX3pvbmVfZGVzdHJveSh6b25lKQlrbWVtX3pvbmVfZGVzdHJveSh6b25lKQogCi1leHRlcm4gaW50IHhmc19hY2xfaW5oZXJpdChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZhdHRyICosIHhmc19hY2xfdCAqKTsKK2V4dGVybiBpbnQgeGZzX2FjbF9pbmhlcml0KHN0cnVjdCBiaHZfdm5vZGUgKiwgc3RydWN0IGJodl92YXR0ciAqLCB4ZnNfYWNsX3QgKik7CiBleHRlcm4gaW50IHhmc19hY2xfaWFjY2VzcyhzdHJ1Y3QgeGZzX2lub2RlICosIG1vZGVfdCwgY3JlZF90ICopOwotZXh0ZXJuIGludCB4ZnNfYWNsX3Z0b2FjbChzdHJ1Y3Qgdm5vZGUgKiwgeGZzX2FjbF90ICosIHhmc19hY2xfdCAqKTsKLWV4dGVybiBpbnQgeGZzX2FjbF92aGFzYWNsX2FjY2VzcyhzdHJ1Y3Qgdm5vZGUgKik7Ci1leHRlcm4gaW50IHhmc19hY2xfdmhhc2FjbF9kZWZhdWx0KHN0cnVjdCB2bm9kZSAqKTsKLWV4dGVybiBpbnQgeGZzX2FjbF92c2V0KHN0cnVjdCB2bm9kZSAqLCB2b2lkICosIHNpemVfdCwgaW50KTsKLWV4dGVybiBpbnQgeGZzX2FjbF92Z2V0KHN0cnVjdCB2bm9kZSAqLCB2b2lkICosIHNpemVfdCwgaW50KTsKLWV4dGVybiBpbnQgeGZzX2FjbF92cmVtb3ZlKHN0cnVjdCB2bm9kZSAqdnAsIGludCk7CitleHRlcm4gaW50IHhmc19hY2xfdnRvYWNsKHN0cnVjdCBiaHZfdm5vZGUgKiwgeGZzX2FjbF90ICosIHhmc19hY2xfdCAqKTsKK2V4dGVybiBpbnQgeGZzX2FjbF92aGFzYWNsX2FjY2VzcyhzdHJ1Y3QgYmh2X3Zub2RlICopOworZXh0ZXJuIGludCB4ZnNfYWNsX3ZoYXNhY2xfZGVmYXVsdChzdHJ1Y3QgYmh2X3Zub2RlICopOworZXh0ZXJuIGludCB4ZnNfYWNsX3ZzZXQoc3RydWN0IGJodl92bm9kZSAqLCB2b2lkICosIHNpemVfdCwgaW50KTsKK2V4dGVybiBpbnQgeGZzX2FjbF92Z2V0KHN0cnVjdCBiaHZfdm5vZGUgKiwgdm9pZCAqLCBzaXplX3QsIGludCk7CitleHRlcm4gaW50IHhmc19hY2xfdnJlbW92ZShzdHJ1Y3QgYmh2X3Zub2RlICosIGludCk7CiAKICNkZWZpbmUgX0FDTF9UWVBFX0FDQ0VTUwkxCiAjZGVmaW5lIF9BQ0xfVFlQRV9ERUZBVUxUCTIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYWxsb2MuYyBiL2ZzL3hmcy94ZnNfYWxsb2MuYwppbmRleCA4NTU4MjI2Li5lZWY2NzYzIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FsbG9jLmMKKysrIGIvZnMveGZzL3hmc19hbGxvYy5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTE4NjIsNyArMTg2MCw3IEBACiAJCShwYWctPnBhZ2ZfbG9uZ2VzdCAtIGRlbHRhKSA6CiAJCShwYWctPnBhZ2ZfZmxjb3VudCA+IDAgfHwgcGFnLT5wYWdmX2xvbmdlc3QgPiAwKTsKIAlpZiAoYXJncy0+bWlubGVuICsgYXJncy0+YWxpZ25tZW50ICsgYXJncy0+bWluYWxpZ25zbG9wIC0gMSA+IGxvbmdlc3QgfHwKLQkgICAgKGFyZ3MtPm1pbmxlZnQgJiYKKwkgICAgKCEoZmxhZ3MgJiBYRlNfQUxMT0NfRkxBR19GUkVFSU5HKSAmJgogCSAgICAgKGludCkocGFnLT5wYWdmX2ZyZWVibGtzICsgcGFnLT5wYWdmX2ZsY291bnQgLQogCQkgICBuZWVkIC0gYXJncy0+dG90YWwpIDwKIAkgICAgIChpbnQpYXJncy0+bWlubGVmdCkpIHsKQEAgLTE4OTgsNyArMTg5Niw3IEBACiAJbG9uZ2VzdCA9IChsb25nZXN0ID4gZGVsdGEpID8gKGxvbmdlc3QgLSBkZWx0YSkgOgogCQkoYmUzMl90b19jcHUoYWdmLT5hZ2ZfZmxjb3VudCkgPiAwIHx8IGxvbmdlc3QgPiAwKTsKIAlpZiAoYXJncy0+bWlubGVuICsgYXJncy0+YWxpZ25tZW50ICsgYXJncy0+bWluYWxpZ25zbG9wIC0gMSA+IGxvbmdlc3QgfHwKLQkgICAgIChhcmdzLT5taW5sZWZ0ICYmCisJICAgICAoIShmbGFncyAmIFhGU19BTExPQ19GTEFHX0ZSRUVJTkcpICYmCiAJCShpbnQpKGJlMzJfdG9fY3B1KGFnZi0+YWdmX2ZyZWVibGtzKSArCiAJCSAgIGJlMzJfdG9fY3B1KGFnZi0+YWdmX2ZsY291bnQpIC0gbmVlZCAtIGFyZ3MtPnRvdGFsKSA8CiAJICAgICAoaW50KWFyZ3MtPm1pbmxlZnQpKSB7CkBAIC0xOTUxLDggKzE5NDksMTQgQEAKIAkJICogdGhlIHJlc3RyaWN0aW9ucyBjb3JyZWN0bHkuICBDYW4gaGFwcGVuIGZvciBmcmVlIGNhbGxzCiAJCSAqIG9uIGEgY29tcGxldGVseSBmdWxsIGFnLgogCQkgKi8KLQkJaWYgKHRhcmdzLmFnYm5vID09IE5VTExBR0JMT0NLKQorCQlpZiAodGFyZ3MuYWdibm8gPT0gTlVMTEFHQkxPQ0spIHsKKwkJCWlmICghKGZsYWdzICYgWEZTX0FMTE9DX0ZMQUdfRlJFRUlORykpIHsKKwkJCQl4ZnNfdHJhbnNfYnJlbHNlKHRwLCBhZ2ZsYnApOworCQkJCWFyZ3MtPmFnYnAgPSBOVUxMOworCQkJCXJldHVybiAwOworCQkJfQogCQkJYnJlYWs7CisJCX0KIAkJLyoKIAkJICogUHV0IGVhY2ggYWxsb2NhdGVkIGJsb2NrIG9uIHRoZSBsaXN0LgogCQkgKi8KQEAgLTIzNjAsOCArMjM2NCwxOSBAQAogCQkJaWYgKGFyZ3MtPmFnbm8gPT0gc2Fnbm8gJiYKIAkJCSAgICB0eXBlID09IFhGU19BTExPQ1RZUEVfU1RBUlRfQk5PKQogCQkJCWFyZ3MtPnR5cGUgPSBYRlNfQUxMT0NUWVBFX1RISVNfQUc7Ci0JCQlpZiAoKysoYXJncy0+YWdubykgPT0gbXAtPm1fc2Iuc2JfYWdjb3VudCkKLQkJCQlhcmdzLT5hZ25vID0gMDsKKwkJCS8qCisJCQkqIEZvciB0aGUgZmlyc3QgYWxsb2NhdGlvbiwgd2UgY2FuIHRyeSBhbnkgQUcgdG8gZ2V0CisJCQkqIHNwYWNlLiAgSG93ZXZlciwgaWYgd2UgYWxyZWFkeSBoYXZlIGFsbG9jYXRlZCBhCisJCQkqIGJsb2NrLCB3ZSBkb24ndCB3YW50IHRvIHRyeSBBR3Mgd2hvc2UgbnVtYmVyIGlzIGJlbG93CisJCQkqIHNhZ25vLiBPdGhlcndpc2UsIHdlIG1heSBlbmQgdXAgd2l0aCBvdXQtb2Ytb3JkZXIKKwkJCSogbG9ja2luZyBvZiBBR0YsIHdoaWNoIG1pZ2h0IGNhdXNlIGRlYWRsb2NrLgorCQkJKi8KKwkJCWlmICgrKyhhcmdzLT5hZ25vKSA9PSBtcC0+bV9zYi5zYl9hZ2NvdW50KSB7CisJCQkJaWYgKGFyZ3MtPmZpcnN0YmxvY2sgIT0gTlVMTEZTQkxPQ0spCisJCQkJCWFyZ3MtPmFnbm8gPSBzYWdubzsKKwkJCQllbHNlCisJCQkJCWFyZ3MtPmFnbm8gPSAwOworCQkJfQogCQkJLyoKIAkJCSAqIFJlYWNoZWQgdGhlIHN0YXJ0aW5nIGEuZy4sIG11c3QgZWl0aGVyIGJlIGRvbmUKIAkJCSAqIG9yIHN3aXRjaCB0byBub24tdHJ5bG9jayBtb2RlLgpAQCAtMjQ0Myw3ICsyNDU4LDcgQEAKIAlhcmdzLm1pbmxlbiA9IGFyZ3MubWlubGVmdCA9IGFyZ3MubWluYWxpZ25zbG9wID0gMDsKIAlkb3duX3JlYWQoJmFyZ3MubXAtPm1fcGVyYWdsb2NrKTsKIAlhcmdzLnBhZyA9ICZhcmdzLm1wLT5tX3BlcmFnW2FyZ3MuYWdub107Ci0JaWYgKChlcnJvciA9IHhmc19hbGxvY19maXhfZnJlZWxpc3QoJmFyZ3MsIDApKSkKKwlpZiAoKGVycm9yID0geGZzX2FsbG9jX2ZpeF9mcmVlbGlzdCgmYXJncywgWEZTX0FMTE9DX0ZMQUdfRlJFRUlORykpKQogCQlnb3RvIGVycm9yMDsKICNpZmRlZiBERUJVRwogCUFTU0VSVChhcmdzLmFnYnAgIT0gTlVMTCk7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2FsbG9jLmggYi9mcy94ZnMveGZzX2FsbG9jLmgKaW5kZXggMmQxZjg5Mi4uNjUwNTkxZiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19hbGxvYy5oCisrKyBiL2ZzL3hmcy94ZnNfYWxsb2MuaApAQCAtNDEsNiArNDEsNyBAQAogICogRmxhZ3MgZm9yIHhmc19hbGxvY19maXhfZnJlZWxpc3QuCiAgKi8KICNkZWZpbmUJWEZTX0FMTE9DX0ZMQUdfVFJZTE9DSwkweDAwMDAwMDAxICAvKiB1c2UgdHJ5bG9jayBmb3IgYnVmZmVyIGxvY2tpbmcgKi8KKyNkZWZpbmUJWEZTX0FMTE9DX0ZMQUdfRlJFRUlORwkweDAwMDAwMDAyICAvKiBpbmRpY2F0ZSBjYWxsZXIgaXMgZnJlZWluZyBleHRlbnRzKi8KIAogLyoKICAqIEFyZ3VtZW50IHN0cnVjdHVyZSBmb3IgeGZzX2FsbG9jIHJvdXRpbmVzLgpAQCAtNzAsNiArNzEsNyBAQAogCWNoYXIJCXdhc2Zyb21mbDsJLyogc2V0IGlmIGFsbG9jYXRpb24gaXMgZnJvbSBmcmVlbGlzdCAqLwogCWNoYXIJCWlzZmw7CQkvKiBzZXQgaWYgaXMgZnJlZWxpc3QgYmxvY2tzIC0gIWFjY3RnICovCiAJY2hhcgkJdXNlcmRhdGE7CS8qIHNldCBpZiB0aGlzIGlzIHVzZXIgZGF0YSAqLworCXhmc19mc2Jsb2NrX3QJZmlyc3RibG9jazsJLyogaW8gZmlyc3QgYmxvY2sgYWxsb2NhdGVkICovCiB9IHhmc19hbGxvY19hcmdfdDsKIAogLyoKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYWxsb2NfYnRyZWUuYyBiL2ZzL3hmcy94ZnNfYWxsb2NfYnRyZWUuYwppbmRleCBhMWQ5MmRhLi43NDQ2NTU2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FsbG9jX2J0cmVlLmMKKysrIGIvZnMveGZzL3hmc19hbGxvY19idHJlZS5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYXR0ci5jIGIvZnMveGZzL3hmc19hdHRyLmMKaW5kZXggYjZlMWUwMi4uMWEyMTAxMDQgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYXR0ci5jCisrKyBiL2ZzL3hmcy94ZnNfYXR0ci5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCkBAIC0zNSw3ICszNCw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC0xOTEwLDcgKzE5MDgsNyBAQAogCQllcnJvciA9IHhmc19ibWFwaShhcmdzLT50cmFucywgYXJncy0+ZHAsICh4ZnNfZmlsZW9mZl90KWxibGtubywKIAkJCQkgIGFyZ3MtPnJtdGJsa2NudCwKIAkJCQkgIFhGU19CTUFQSV9BVFRSRk9SSyB8IFhGU19CTUFQSV9NRVRBREFUQSwKLQkJCQkgIE5VTEwsIDAsIG1hcCwgJm5tYXAsIE5VTEwpOworCQkJCSAgTlVMTCwgMCwgbWFwLCAmbm1hcCwgTlVMTCwgTlVMTCk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybihlcnJvcik7CiAJCUFTU0VSVChubWFwID49IDEpOwpAQCAtMTk4OCw3ICsxOTg2LDcgQEAKIAkJCQkgIFhGU19CTUFQSV9BVFRSRk9SSyB8IFhGU19CTUFQSV9NRVRBREFUQSB8CiAJCQkJCQkJWEZTX0JNQVBJX1dSSVRFLAogCQkJCSAgYXJncy0+Zmlyc3RibG9jaywgYXJncy0+dG90YWwsICZtYXAsICZubWFwLAotCQkJCSAgYXJncy0+Zmxpc3QpOworCQkJCSAgYXJncy0+Zmxpc3QsIE5VTEwpOwogCQlpZiAoIWVycm9yKSB7CiAJCQllcnJvciA9IHhmc19ibWFwX2ZpbmlzaCgmYXJncy0+dHJhbnMsIGFyZ3MtPmZsaXN0LAogCQkJCQkJKmFyZ3MtPmZpcnN0YmxvY2ssICZjb21taXR0ZWQpOwpAQCAtMjAzOSw3ICsyMDM3LDggQEAKIAkJZXJyb3IgPSB4ZnNfYm1hcGkoTlVMTCwgZHAsICh4ZnNfZmlsZW9mZl90KWxibGtubywKIAkJCQkgIGFyZ3MtPnJtdGJsa2NudCwKIAkJCQkgIFhGU19CTUFQSV9BVFRSRk9SSyB8IFhGU19CTUFQSV9NRVRBREFUQSwKLQkJCQkgIGFyZ3MtPmZpcnN0YmxvY2ssIDAsICZtYXAsICZubWFwLCBOVUxMKTsKKwkJCQkgIGFyZ3MtPmZpcnN0YmxvY2ssIDAsICZtYXAsICZubWFwLAorCQkJCSAgTlVMTCwgTlVMTCk7CiAJCWlmIChlcnJvcikgewogCQkJcmV0dXJuKGVycm9yKTsKIAkJfQpAQCAtMjEwNCw3ICsyMTAzLDcgQEAKIAkJCQkJYXJncy0+cm10YmxrY250LAogCQkJCQlYRlNfQk1BUElfQVRUUkZPUksgfCBYRlNfQk1BUElfTUVUQURBVEEsCiAJCQkJCWFyZ3MtPmZpcnN0YmxvY2ssIDAsICZtYXAsICZubWFwLAotCQkJCQlhcmdzLT5mbGlzdCk7CisJCQkJCWFyZ3MtPmZsaXN0LCBOVUxMKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlyZXR1cm4oZXJyb3IpOwogCQl9CkBAIC0yMTQyLDcgKzIxNDEsOCBAQAogCQlYRlNfQk1BUF9JTklUKGFyZ3MtPmZsaXN0LCBhcmdzLT5maXJzdGJsb2NrKTsKIAkJZXJyb3IgPSB4ZnNfYnVubWFwaShhcmdzLT50cmFucywgYXJncy0+ZHAsIGxibGtubywgYmxrY250LAogCQkJCSAgICBYRlNfQk1BUElfQVRUUkZPUksgfCBYRlNfQk1BUElfTUVUQURBVEEsCi0JCQkJICAgIDEsIGFyZ3MtPmZpcnN0YmxvY2ssIGFyZ3MtPmZsaXN0LCAmZG9uZSk7CisJCQkJICAgIDEsIGFyZ3MtPmZpcnN0YmxvY2ssIGFyZ3MtPmZsaXN0LAorCQkJCSAgICBOVUxMLCAmZG9uZSk7CiAJCWlmICghZXJyb3IpIHsKIAkJCWVycm9yID0geGZzX2JtYXBfZmluaXNoKCZhcmdzLT50cmFucywgYXJncy0+Zmxpc3QsCiAJCQkJCQkqYXJncy0+Zmlyc3RibG9jaywgJmNvbW1pdHRlZCk7CkBAIC0yMzIyLDU2ICsyMzIyLDU2IEBACiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9hY2Nlc3Nfc2V0KAotCXZub2RlX3QJKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKKwliaHZfdm5vZGVfdCAqdnAsIGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBpbnQgeGZsYWdzKQogewogCXJldHVybiB4ZnNfYWNsX3ZzZXQodnAsIGRhdGEsIHNpemUsIF9BQ0xfVFlQRV9BQ0NFU1MpOwogfQogCiBTVEFUSUMgaW50CiBwb3NpeF9hY2xfYWNjZXNzX3JlbW92ZSgKLQlzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lLCBpbnQgeGZsYWdzKQorCWJodl92bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgaW50IHhmbGFncykKIHsKIAlyZXR1cm4geGZzX2FjbF92cmVtb3ZlKHZwLCBfQUNMX1RZUEVfQUNDRVNTKTsKIH0KIAogU1RBVElDIGludAogcG9zaXhfYWNsX2FjY2Vzc19nZXQoCi0Jdm5vZGVfdCAqdnAsIGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBpbnQgeGZsYWdzKQorCWJodl92bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCiB7CiAJcmV0dXJuIHhmc19hY2xfdmdldCh2cCwgZGF0YSwgc2l6ZSwgX0FDTF9UWVBFX0FDQ0VTUyk7CiB9CiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9hY2Nlc3NfZXhpc3RzKAotCXZub2RlX3QgKnZwKQorCWJodl92bm9kZV90ICp2cCkKIHsKIAlyZXR1cm4geGZzX2FjbF92aGFzYWNsX2FjY2Vzcyh2cCk7CiB9CiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9kZWZhdWx0X3NldCgKLQl2bm9kZV90CSp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCisJYmh2X3Zub2RlX3QgKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKIHsKIAlyZXR1cm4geGZzX2FjbF92c2V0KHZwLCBkYXRhLCBzaXplLCBfQUNMX1RZUEVfREVGQVVMVCk7CiB9CiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9kZWZhdWx0X2dldCgKLQl2bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCisJYmh2X3Zub2RlX3QgKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKIHsKIAlyZXR1cm4geGZzX2FjbF92Z2V0KHZwLCBkYXRhLCBzaXplLCBfQUNMX1RZUEVfREVGQVVMVCk7CiB9CiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9kZWZhdWx0X3JlbW92ZSgKLQlzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lLCBpbnQgeGZsYWdzKQorCWJodl92bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgaW50IHhmbGFncykKIHsKIAlyZXR1cm4geGZzX2FjbF92cmVtb3ZlKHZwLCBfQUNMX1RZUEVfREVGQVVMVCk7CiB9CiAKIFNUQVRJQyBpbnQKIHBvc2l4X2FjbF9kZWZhdWx0X2V4aXN0cygKLQl2bm9kZV90ICp2cCkKKwliaHZfdm5vZGVfdCAqdnApCiB7CiAJcmV0dXJuIHhmc19hY2xfdmhhc2FjbF9kZWZhdWx0KHZwKTsKIH0KQEAgLTI0MDQsMjEgKzI0MDQsMTggQEAKIAogU1RBVElDIGludAogYXR0cl9nZW5lcmljX3NldCgKLQlzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKKwliaHZfdm5vZGVfdCAqdnAsIGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBpbnQgeGZsYWdzKQogewotCWludCAJZXJyb3I7Ci0KLQlWT1BfQVRUUl9TRVQodnAsIG5hbWUsIGRhdGEsIHNpemUsIHhmbGFncywgTlVMTCwgZXJyb3IpOwotCXJldHVybiAtZXJyb3I7CisJcmV0dXJuIC1iaHZfdm9wX2F0dHJfc2V0KHZwLCBuYW1lLCBkYXRhLCBzaXplLCB4ZmxhZ3MsIE5VTEwpOwogfQogCiBTVEFUSUMgaW50CiBhdHRyX2dlbmVyaWNfZ2V0KAotCXN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBpbnQgeGZsYWdzKQorCWJodl92bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCiB7CiAJaW50CWVycm9yLCBhc2l6ZSA9IHNpemU7CiAKLQlWT1BfQVRUUl9HRVQodnAsIG5hbWUsIGRhdGEsICZhc2l6ZSwgeGZsYWdzLCBOVUxMLCBlcnJvcik7CisJZXJyb3IgPSBiaHZfdm9wX2F0dHJfZ2V0KHZwLCBuYW1lLCBkYXRhLCAmYXNpemUsIHhmbGFncywgTlVMTCk7CiAJaWYgKCFlcnJvcikKIAkJcmV0dXJuIGFzaXplOwogCXJldHVybiAtZXJyb3I7CkBAIC0yNDI2LDEyICsyNDIzLDkgQEAKIAogU1RBVElDIGludAogYXR0cl9nZW5lcmljX3JlbW92ZSgKLQlzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lLCBpbnQgeGZsYWdzKQorCWJodl92bm9kZV90ICp2cCwgY2hhciAqbmFtZSwgaW50IHhmbGFncykKIHsKLQlpbnQJZXJyb3I7Ci0KLQlWT1BfQVRUUl9SRU1PVkUodnAsIG5hbWUsIHhmbGFncywgTlVMTCwgZXJyb3IpOwotCXJldHVybiAtZXJyb3I7CisJcmV0dXJuIC1iaHZfdm9wX2F0dHJfcmVtb3ZlKHZwLCBuYW1lLCB4ZmxhZ3MsIE5VTEwpOwogfQogCiBTVEFUSUMgaW50CkBAIC0yNDU5LDcgKzI0NTMsNyBAQAogCiBTVEFUSUMgaW50CiBhdHRyX3N5c3RlbV9saXN0KAotCXN0cnVjdCB2bm9kZQkJKnZwLAorCWJodl92bm9kZV90CQkqdnAsCiAJdm9pZAkJCSpkYXRhLAogCXNpemVfdAkJCXNpemUsCiAJc3NpemVfdAkJCSpyZXN1bHQpCkBAIC0yNDgxLDEyICsyNDc1LDEyIEBACiAKIGludAogYXR0cl9nZW5lcmljX2xpc3QoCi0Jc3RydWN0IHZub2RlICp2cCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MsIHNzaXplX3QgKnJlc3VsdCkKKwliaHZfdm5vZGVfdCAqdnAsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBpbnQgeGZsYWdzLCBzc2l6ZV90ICpyZXN1bHQpCiB7CiAJYXR0cmxpc3RfY3Vyc29yX2tlcm5fdAljdXJzb3IgPSB7IDAgfTsKIAlpbnQJCQllcnJvcjsKIAotCVZPUF9BVFRSX0xJU1QodnAsIGRhdGEsIHNpemUsIHhmbGFncywgJmN1cnNvciwgTlVMTCwgZXJyb3IpOworCWVycm9yID0gYmh2X3ZvcF9hdHRyX2xpc3QodnAsIGRhdGEsIHNpemUsIHhmbGFncywgJmN1cnNvciwgTlVMTCk7CiAJaWYgKGVycm9yID4gMCkKIAkJcmV0dXJuIC1lcnJvcjsKIAkqcmVzdWx0ID0gLWVycm9yOwpAQCAtMjUxNCw3ICsyNTA4LDcgQEAKICAqLwogU1RBVElDIGludAogYXR0cl91c2VyX2NhcGFibGUoCi0Jc3RydWN0IHZub2RlCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJY3JlZF90CQkqY3JlZCkKIHsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gdm5fdG9faW5vZGUodnApOwpAQCAtMjUzMiw3ICsyNTI2LDcgQEAKIAogU1RBVElDIGludAogYXR0cl90cnVzdGVkX2NhcGFibGUoCi0Jc3RydWN0IHZub2RlCSp2cCwKKwliaHZfdm5vZGVfdAkqdnAsCiAJY3JlZF90CQkqY3JlZCkKIHsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gdm5fdG9faW5vZGUodnApOwpAQCAtMjU0Niw3ICsyNTQwLDcgQEAKIAogU1RBVElDIGludAogYXR0cl9zZWN1cmVfY2FwYWJsZSgKLQlzdHJ1Y3Qgdm5vZGUJKnZwLAorCWJodl92bm9kZV90CSp2cCwKIAljcmVkX3QJCSpjcmVkKQogewogCXJldHVybiAtRU5PU0VDVVJJVFk7CkBAIC0yNTU0LDcgKzI1NDgsNyBAQAogCiBTVEFUSUMgaW50CiBhdHRyX3N5c3RlbV9zZXQoCi0Jc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCisJYmh2X3Zub2RlX3QgKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKIHsKIAlhdHRybmFtZXNfdAkqbmFtZXNwOwogCWludAkJZXJyb3I7CkBAIC0yNTczLDcgKzI1NjcsNyBAQAogCiBTVEFUSUMgaW50CiBhdHRyX3N5c3RlbV9nZXQoCi0Jc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGludCB4ZmxhZ3MpCisJYmh2X3Zub2RlX3QgKnZwLCBjaGFyICpuYW1lLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IHhmbGFncykKIHsKIAlhdHRybmFtZXNfdAkqbmFtZXNwOwogCkBAIC0yNTg1LDcgKzI1NzksNyBAQAogCiBTVEFUSUMgaW50CiBhdHRyX3N5c3RlbV9yZW1vdmUoCi0Jc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSwgaW50IHhmbGFncykKKwliaHZfdm5vZGVfdCAqdnAsIGNoYXIgKm5hbWUsIGludCB4ZmxhZ3MpCiB7CiAJYXR0cm5hbWVzX3QJKm5hbWVzcDsKIApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19hdHRyLmggYi9mcy94ZnMveGZzX2F0dHIuaAppbmRleCBiMmM3YjlmLi45ODE2MzNmIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2F0dHIuaAorKysgYi9mcy94ZnMveGZzX2F0dHIuaApAQCAtMzYsMTMgKzM2LDEzIEBACiAgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAKIHN0cnVjdCBjcmVkOwotc3RydWN0IHZub2RlOworc3RydWN0IGJodl92bm9kZTsKIAotdHlwZWRlZiBpbnQgKCphdHRyc2V0X3QpKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwotdHlwZWRlZiBpbnQgKCphdHRyZ2V0X3QpKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwotdHlwZWRlZiBpbnQgKCphdHRycmVtb3ZlX3QpKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIGludCk7Ci10eXBlZGVmIGludCAoKmF0dHJleGlzdHNfdCkoc3RydWN0IHZub2RlICopOwotdHlwZWRlZiBpbnQgKCphdHRyY2FwYWJsZV90KShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGNyZWQgKik7Cit0eXBlZGVmIGludCAoKmF0dHJzZXRfdCkoc3RydWN0IGJodl92bm9kZSAqLCBjaGFyICosIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwordHlwZWRlZiBpbnQgKCphdHRyZ2V0X3QpKHN0cnVjdCBiaHZfdm5vZGUgKiwgY2hhciAqLCB2b2lkICosIHNpemVfdCwgaW50KTsKK3R5cGVkZWYgaW50ICgqYXR0cnJlbW92ZV90KShzdHJ1Y3QgYmh2X3Zub2RlICosIGNoYXIgKiwgaW50KTsKK3R5cGVkZWYgaW50ICgqYXR0cmV4aXN0c190KShzdHJ1Y3QgYmh2X3Zub2RlICopOwordHlwZWRlZiBpbnQgKCphdHRyY2FwYWJsZV90KShzdHJ1Y3QgYmh2X3Zub2RlICosIHN0cnVjdCBjcmVkICopOwogCiB0eXBlZGVmIHN0cnVjdCBhdHRybmFtZXMgewogCWNoYXIgKgkJYXR0cl9uYW1lOwpAQCAtNjMsNyArNjMsNyBAQAogZXh0ZXJuIHN0cnVjdCBhdHRybmFtZXMgKmF0dHJfbmFtZXNwYWNlc1tBVFRSX05BTUVDT1VOVF07CiAKIGV4dGVybiBhdHRybmFtZXNfdCAqYXR0cl9sb29rdXBfbmFtZXNwYWNlKGNoYXIgKiwgYXR0cm5hbWVzX3QgKiosIGludCk7Ci1leHRlcm4gaW50IGF0dHJfZ2VuZXJpY19saXN0KHN0cnVjdCB2bm9kZSAqLCB2b2lkICosIHNpemVfdCwgaW50LCBzc2l6ZV90ICopOworZXh0ZXJuIGludCBhdHRyX2dlbmVyaWNfbGlzdChzdHJ1Y3QgYmh2X3Zub2RlICosIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHNzaXplX3QgKik7CiAKICNkZWZpbmUgQVRUUl9ET05URk9MTE9XCTB4MDAwMQkvKiAtLSB1bnVzZWQsIGZyb20gSVJJWCAtLSAqLwogI2RlZmluZSBBVFRSX1JPT1QJMHgwMDAyCS8qIHVzZSBhdHRycyBpbiByb290ICh0cnVzdGVkKSBuYW1lc3BhY2UgKi8KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYXR0cl9sZWFmLmMgYi9mcy94ZnMveGZzX2F0dHJfbGVhZi5jCmluZGV4IDk0NjJiZTguLjk0NTUwNTEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYXR0cl9sZWFmLmMKKysrIGIvZnMveGZzL3hmc19hdHRyX2xlYWYuYwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgpAQCAtMzQsNyArMzMsNiBAQAogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKICNpbmNsdWRlICJ4ZnNfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTI5OTAsNyArMjk4OCw3IEBACiAJCW5tYXAgPSAxOwogCQllcnJvciA9IHhmc19ibWFwaSgqdHJhbnMsIGRwLCAoeGZzX2ZpbGVvZmZfdCl0Ymxrbm8sIHRibGtjbnQsCiAJCQkJCVhGU19CTUFQSV9BVFRSRk9SSyB8IFhGU19CTUFQSV9NRVRBREFUQSwKLQkJCQkJTlVMTCwgMCwgJm1hcCwgJm5tYXAsIE5VTEwpOworCQkJCQlOVUxMLCAwLCAmbWFwLCAmbm1hcCwgTlVMTCwgTlVMTCk7CiAJCWlmIChlcnJvcikgewogCQkJcmV0dXJuKGVycm9yKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19ibWFwLmMgYi9mcy94ZnMveGZzX2JtYXAuYwppbmRleCAyNjkzOWQzLi4zYTYxMzc1IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2JtYXAuYworKysgYi9mcy94ZnMveGZzX2JtYXAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDEzICsyNCwxMSBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNDAsMTMgKzM4LDE1IEBACiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvYy5oIgogI2luY2x1ZGUgInhmc19pdGFibGUuaCIKKyNpbmNsdWRlICJ4ZnNfZGlyMl9kYXRhLmgiCisjaW5jbHVkZSAieGZzX2RpcjJfbGVhZi5oIgorI2luY2x1ZGUgInhmc19kaXIyX2Jsb2NrLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlX2l0ZW0uaCIKICNpbmNsdWRlICJ4ZnNfZXh0ZnJlZV9pdGVtLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jLmgiCiAjaW5jbHVkZSAieGZzX2JtYXAuaCIKICNpbmNsdWRlICJ4ZnNfcnRhbGxvYy5oIgogI2luY2x1ZGUgInhmc19lcnJvci5oIgotI2luY2x1ZGUgInhmc19kaXJfbGVhZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX2xlYWYuaCIKICNpbmNsdWRlICJ4ZnNfcncuaCIKICNpbmNsdWRlICJ4ZnNfcXVvdGEuaCIKQEAgLTEwMSw2ICsxMDEsNyBAQAogCXhmc19mc2Jsb2NrX3QJCSpmaXJzdCwJLyogcG9pbnRlciB0byBmaXJzdGJsb2NrIHZhcmlhYmxlICovCiAJeGZzX2JtYXBfZnJlZV90CQkqZmxpc3QsCS8qIGxpc3Qgb2YgZXh0ZW50cyB0byBiZSBmcmVlZCAqLwogCWludAkJCSpsb2dmbGFnc3AsIC8qIGlub2RlIGxvZ2dpbmcgZmxhZ3MgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhLCAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogCWludAkJCXdoaWNoZm9yaywgLyogZGF0YSBvciBhdHRyIGZvcmsgKi8KIAlpbnQJCQlyc3ZkKTsJLyogT0sgdG8gYWxsb2NhdGUgcmVzZXJ2ZWQgYmxvY2tzICovCiAKQEAgLTExOCw2ICsxMTksNyBAQAogCXhmc19mc2Jsb2NrX3QJCSpmaXJzdCwJLyogcG9pbnRlciB0byBmaXJzdGJsb2NrIHZhcmlhYmxlICovCiAJeGZzX2JtYXBfZnJlZV90CQkqZmxpc3QsCS8qIGxpc3Qgb2YgZXh0ZW50cyB0byBiZSBmcmVlZCAqLwogCWludAkJCSpsb2dmbGFnc3AsIC8qIGlub2RlIGxvZ2dpbmcgZmxhZ3MgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhLCAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogCWludAkJCXJzdmQpOwkvKiBPSyB0byBhbGxvY2F0ZSByZXNlcnZlZCBibG9ja3MgKi8KIAogLyoKQEAgLTEzMSw2ICsxMzMsNyBAQAogCXhmc19idHJlZV9jdXJfdAkJKmN1ciwJLyogaWYgbnVsbCwgbm90IGEgYnRyZWUgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCSpuZXcsCS8qIG5ldyBkYXRhIHRvIGFkZCB0byBmaWxlIGV4dGVudHMgKi8KIAlpbnQJCQkqbG9nZmxhZ3NwLC8qIGlub2RlIGxvZ2dpbmcgZmxhZ3MgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhLCAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogCWludAkJCXJzdmQpOwkvKiBPSyB0byBhbGxvY2F0ZSByZXNlcnZlZCBibG9ja3MgKi8KIAogLyoKQEAgLTE0NCw2ICsxNDcsNyBAQAogCXhmc19idHJlZV9jdXJfdAkJKmN1ciwJLyogaWYgbnVsbCwgbm90IGEgYnRyZWUgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCSpuZXcsCS8qIG5ldyBkYXRhIHRvIGFkZCB0byBmaWxlIGV4dGVudHMgKi8KIAlpbnQJCQkqbG9nZmxhZ3NwLCAvKiBpbm9kZSBsb2dnaW5nIGZsYWdzICovCisJeGZzX2V4dGRlbHRhX3QJCSpkZWx0YSwgLyogQ2hhbmdlIG1hZGUgdG8gaW5jb3JlIGV4dGVudHMgKi8KIAlpbnQJCQl3aGljaGZvcmspOyAvKiBkYXRhIG9yIGF0dHIgZm9yayAqLwogCiAvKgpAQCAtMTU2LDcgKzE2MCw4IEBACiAJeGZzX2V4dG51bV90CQlpZHgsCS8qIGV4dGVudCBudW1iZXIgdG8gdXBkYXRlL2luc2VydCAqLwogCXhmc19idHJlZV9jdXJfdAkJKipjdXJwLAkvKiBpZiAqY3VycCBpcyBudWxsLCBub3QgYSBidHJlZSAqLwogCXhmc19ibWJ0X2lyZWNfdAkJKm5ldywJLyogbmV3IGRhdGEgdG8gYWRkIHRvIGZpbGUgZXh0ZW50cyAqLwotCWludAkJCSpsb2dmbGFnc3ApOyAvKiBpbm9kZSBsb2dnaW5nIGZsYWdzICovCisJaW50CQkJKmxvZ2ZsYWdzcCwgLyogaW5vZGUgbG9nZ2luZyBmbGFncyAqLworCXhmc19leHRkZWx0YV90CQkqZGVsdGEpOyAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogCiAvKgogICogeGZzX2JtYXBfYWxsb2MgaXMgY2FsbGVkIGJ5IHhmc19ibWFwaSB0byBhbGxvY2F0ZSBhbiBleHRlbnQgZm9yIGEgZmlsZS4KQEAgLTIwMyw2ICsyMDgsNyBAQAogCXhmc19idHJlZV9jdXJfdAkJKmN1ciwJLyogaWYgbnVsbCwgbm90IGEgYnRyZWUgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCSpuZXcsCS8qIG5ldyBkYXRhIHRvIGFkZCB0byBmaWxlIGV4dGVudHMgKi8KIAlpbnQJCQkqbG9nZmxhZ3NwLC8qIGlub2RlIGxvZ2dpbmcgZmxhZ3MgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhLCAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogCWludAkJCXdoaWNoZm9yaywgLyogZGF0YSBvciBhdHRyIGZvcmsgKi8KIAlpbnQJCQlyc3ZkKTsJIC8qIE9LIHRvIGFsbG9jYXRlIHJlc2VydmVkIGJsb2NrcyAqLwogCkBAIC01MTAsNyArNTE2LDcgQEAKIAkJZGFyZ3MudG90YWwgPSBtcC0+bV9kaXJibGtmc2JzOwogCQlkYXJncy53aGljaGZvcmsgPSBYRlNfREFUQV9GT1JLOwogCQlkYXJncy50cmFucyA9IHRwOwotCQllcnJvciA9IFhGU19ESVJfU0hPUlRGT1JNX1RPX1NJTkdMRShtcCwgJmRhcmdzKTsKKwkJZXJyb3IgPSB4ZnNfZGlyMl9zZl90b19ibG9jaygmZGFyZ3MpOwogCX0gZWxzZQogCQllcnJvciA9IHhmc19ibWFwX2xvY2FsX3RvX2V4dGVudHModHAsIGlwLCBmaXJzdGJsb2NrLCAxLCBmbGFncywKIAkJCVhGU19EQVRBX0ZPUkspOwpAQCAtNTMwLDYgKzUzNiw3IEBACiAJeGZzX2ZzYmxvY2tfdAkJKmZpcnN0LAkvKiBwb2ludGVyIHRvIGZpcnN0YmxvY2sgdmFyaWFibGUgKi8KIAl4ZnNfYm1hcF9mcmVlX3QJCSpmbGlzdCwJLyogbGlzdCBvZiBleHRlbnRzIHRvIGJlIGZyZWVkICovCiAJaW50CQkJKmxvZ2ZsYWdzcCwgLyogaW5vZGUgbG9nZ2luZyBmbGFncyAqLworCXhmc19leHRkZWx0YV90CQkqZGVsdGEsIC8qIENoYW5nZSBtYWRlIHRvIGluY29yZSBleHRlbnRzICovCiAJaW50CQkJd2hpY2hmb3JrLCAvKiBkYXRhIG9yIGF0dHIgZm9yayAqLwogCWludAkJCXJzdmQpCS8qIE9LIHRvIHVzZSByZXNlcnZlZCBkYXRhIGJsb2NrcyAqLwogewpAQCAtNTY3LDYgKzU3NCwxNSBAQAogCQkJbG9nZmxhZ3MgPSBYRlNfSUxPR19DT1JFIHwgWEZTX0lMT0dfRkVYVCh3aGljaGZvcmspOwogCQl9IGVsc2UKIAkJCWxvZ2ZsYWdzID0gMDsKKwkJLyogREVMVEE6IHNpbmdsZSBuZXcgZXh0ZW50ICovCisJCWlmIChkZWx0YSkgeworCQkJaWYgKGRlbHRhLT54ZWRfc3RhcnRvZmYgPiBuZXctPmJyX3N0YXJ0b2ZmKQorCQkJCWRlbHRhLT54ZWRfc3RhcnRvZmYgPSBuZXctPmJyX3N0YXJ0b2ZmOworCQkJaWYgKGRlbHRhLT54ZWRfYmxvY2tjb3VudCA8CisJCQkJCW5ldy0+YnJfc3RhcnRvZmYgKyBuZXctPmJyX2Jsb2NrY291bnQpCisJCQkJZGVsdGEtPnhlZF9ibG9ja2NvdW50ID0gbmV3LT5icl9zdGFydG9mZiArCisJCQkJCQluZXctPmJyX2Jsb2NrY291bnQ7CisJCX0KIAl9CiAJLyoKIAkgKiBBbnkga2luZCBvZiBuZXcgZGVsYXllZCBhbGxvY2F0aW9uIGdvZXMgaGVyZS4KQEAgLTU3Niw3ICs1OTIsNyBAQAogCQkJQVNTRVJUKChjdXItPmJjX3ByaXZhdGUuYi5mbGFncyAmCiAJCQkJWEZTX0JUQ1VSX0JQUlZfV0FTREVMKSA9PSAwKTsKIAkJaWYgKChlcnJvciA9IHhmc19ibWFwX2FkZF9leHRlbnRfaG9sZV9kZWxheShpcCwgaWR4LCBjdXIsIG5ldywKLQkJCQkmbG9nZmxhZ3MsIHJzdmQpKSkKKwkJCQkmbG9nZmxhZ3MsIGRlbHRhLCByc3ZkKSkpCiAJCQlnb3RvIGRvbmU7CiAJfQogCS8qCkBAIC01ODcsNyArNjAzLDcgQEAKIAkJCUFTU0VSVCgoY3VyLT5iY19wcml2YXRlLmIuZmxhZ3MgJgogCQkJCVhGU19CVENVUl9CUFJWX1dBU0RFTCkgPT0gMCk7CiAJCWlmICgoZXJyb3IgPSB4ZnNfYm1hcF9hZGRfZXh0ZW50X2hvbGVfcmVhbChpcCwgaWR4LCBjdXIsIG5ldywKLQkJCQkmbG9nZmxhZ3MsIHdoaWNoZm9yaykpKQorCQkJCSZsb2dmbGFncywgZGVsdGEsIHdoaWNoZm9yaykpKQogCQkJZ290byBkb25lOwogCX0gZWxzZSB7CiAJCXhmc19ibWJ0X2lyZWNfdAlwcmV2OwkvKiBvbGQgZXh0ZW50IGF0IG9mZnNldCBpZHggKi8KQEAgLTYxMiwxNyArNjI4LDE3IEBACiAJCQkJCQlYRlNfQlRDVVJfQlBSVl9XQVNERUwpOwogCQkJCWlmICgoZXJyb3IgPSB4ZnNfYm1hcF9hZGRfZXh0ZW50X2RlbGF5X3JlYWwoaXAsCiAJCQkJCWlkeCwgJmN1ciwgbmV3LCAmZGFfbmV3LCBmaXJzdCwgZmxpc3QsCi0JCQkJCSZsb2dmbGFncywgcnN2ZCkpKQorCQkJCQkmbG9nZmxhZ3MsIGRlbHRhLCByc3ZkKSkpCiAJCQkJCWdvdG8gZG9uZTsKIAkJCX0gZWxzZSBpZiAobmV3LT5icl9zdGF0ZSA9PSBYRlNfRVhUX05PUk0pIHsKIAkJCQlBU1NFUlQobmV3LT5icl9zdGF0ZSA9PSBYRlNfRVhUX05PUk0pOwogCQkJCWlmICgoZXJyb3IgPSB4ZnNfYm1hcF9hZGRfZXh0ZW50X3Vud3JpdHRlbl9yZWFsKAotCQkJCQlpcCwgaWR4LCAmY3VyLCBuZXcsICZsb2dmbGFncykpKQorCQkJCQlpcCwgaWR4LCAmY3VyLCBuZXcsICZsb2dmbGFncywgZGVsdGEpKSkKIAkJCQkJZ290byBkb25lOwogCQkJfSBlbHNlIHsKIAkJCQlBU1NFUlQobmV3LT5icl9zdGF0ZSA9PSBYRlNfRVhUX1VOV1JJVFRFTik7CiAJCQkJaWYgKChlcnJvciA9IHhmc19ibWFwX2FkZF9leHRlbnRfdW53cml0dGVuX3JlYWwoCi0JCQkJCWlwLCBpZHgsICZjdXIsIG5ldywgJmxvZ2ZsYWdzKSkpCisJCQkJCWlwLCBpZHgsICZjdXIsIG5ldywgJmxvZ2ZsYWdzLCBkZWx0YSkpKQogCQkJCQlnb3RvIGRvbmU7CiAJCQl9CiAJCQlBU1NFUlQoKmN1cnAgPT0gY3VyIHx8ICpjdXJwID09IE5VTEwpOwpAQCAtNjM1LDcgKzY1MSw3IEBACiAJCQkJQVNTRVJUKChjdXItPmJjX3ByaXZhdGUuYi5mbGFncyAmCiAJCQkJCVhGU19CVENVUl9CUFJWX1dBU0RFTCkgPT0gMCk7CiAJCQlpZiAoKGVycm9yID0geGZzX2JtYXBfYWRkX2V4dGVudF9ob2xlX3JlYWwoaXAsIGlkeCwgY3VyLAotCQkJCQluZXcsICZsb2dmbGFncywgd2hpY2hmb3JrKSkpCisJCQkJCW5ldywgJmxvZ2ZsYWdzLCBkZWx0YSwgd2hpY2hmb3JrKSkpCiAJCQkJZ290byBkb25lOwogCQl9CiAJfQpAQCAtNzAwLDYgKzcxNiw3IEBACiAJeGZzX2ZzYmxvY2tfdAkJKmZpcnN0LAkvKiBwb2ludGVyIHRvIGZpcnN0YmxvY2sgdmFyaWFibGUgKi8KIAl4ZnNfYm1hcF9mcmVlX3QJCSpmbGlzdCwJLyogbGlzdCBvZiBleHRlbnRzIHRvIGJlIGZyZWVkICovCiAJaW50CQkJKmxvZ2ZsYWdzcCwgLyogaW5vZGUgbG9nZ2luZyBmbGFncyAqLworCXhmc19leHRkZWx0YV90CQkqZGVsdGEsIC8qIENoYW5nZSBtYWRlIHRvIGluY29yZSBleHRlbnRzICovCiAJaW50CQkJcnN2ZCkJLyogT0sgdG8gdXNlIHJlc2VydmVkIGRhdGEgYmxvY2sgYWxsb2NhdGlvbiAqLwogewogCXhmc19idHJlZV9jdXJfdAkJKmN1cjsJLyogYnRyZWUgY3Vyc29yICovCkBAIC03MTYsOCArNzMzLDggQEAKIAkJCQkJLyogbGVmdCBpcyAwLCByaWdodCBpcyAxLCBwcmV2IGlzIDIgKi8KIAlpbnQJCQlydmFsPTA7CS8qIHJldHVybiB2YWx1ZSAobG9nZ2luZyBmbGFncykgKi8KIAlpbnQJCQlzdGF0ZSA9IDA7Lyogc3RhdGUgYml0cywgYWNjZXNzZWQgdGhydSBtYWNyb3MgKi8KLQl4ZnNfZmlsYmxrc190CQl0ZW1wOwkvKiB2YWx1ZSBmb3IgZG5ldyBjYWxjdWxhdGlvbnMgKi8KLQl4ZnNfZmlsYmxrc190CQl0ZW1wMjsJLyogdmFsdWUgZm9yIGRuZXcgY2FsY3VsYXRpb25zICovCisJeGZzX2ZpbGJsa3NfdAkJdGVtcD0wOwkvKiB2YWx1ZSBmb3IgZG5ldyBjYWxjdWxhdGlvbnMgKi8KKwl4ZnNfZmlsYmxrc190CQl0ZW1wMj0wOy8qIHZhbHVlIGZvciBkbmV3IGNhbGN1bGF0aW9ucyAqLwogCWludAkJCXRtcF9ydmFsOwkvKiBwYXJ0aWFsIGxvZ2dpbmcgZmxhZ3MgKi8KIAllbnVtIHsJCQkJLyogYml0IG51bWJlciBkZWZpbml0aW9ucyBmb3Igc3RhdGUgKi8KIAkJTEVGVF9DT05USUcsCVJJR0hUX0NPTlRJRywKQEAgLTgzOSw2ICs4NTYsMTEgQEAKIAkJCQlnb3RvIGRvbmU7CiAJCX0KIAkJKmRuZXcgPSAwOworCQkvKiBERUxUQTogVGhyZWUgaW4tY29yZSBleHRlbnRzIGFyZSByZXBsYWNlZCBieSBvbmUuICovCisJCXRlbXAgPSBMRUZULmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IExFRlQuYnJfYmxvY2tjb3VudCArCisJCQlQUkVWLmJyX2Jsb2NrY291bnQgKworCQkJUklHSFQuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0szKExFRlRfRklMTElORywgUklHSFRfRklMTElORywgTEVGVF9DT05USUcpOgpAQCAtODcyLDYgKzg5NCwxMCBAQAogCQkJCWdvdG8gZG9uZTsKIAkJfQogCQkqZG5ldyA9IDA7CisJCS8qIERFTFRBOiBUd28gaW4tY29yZSBleHRlbnRzIGFyZSByZXBsYWNlZCBieSBvbmUuICovCisJCXRlbXAgPSBMRUZULmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IExFRlQuYnJfYmxvY2tjb3VudCArCisJCQlQUkVWLmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLMyhMRUZUX0ZJTExJTkcsIFJJR0hUX0ZJTExJTkcsIFJJR0hUX0NPTlRJRyk6CkBAIC05MDYsNiArOTMyLDEwIEBACiAJCQkJZ290byBkb25lOwogCQl9CiAJCSpkbmV3ID0gMDsKKwkJLyogREVMVEE6IFR3byBpbi1jb3JlIGV4dGVudHMgYXJlIHJlcGxhY2VkIGJ5IG9uZS4gKi8KKwkJdGVtcCA9IFBSRVYuYnJfc3RhcnRvZmY7CisJCXRlbXAyID0gUFJFVi5icl9ibG9ja2NvdW50ICsKKwkJCVJJR0hULmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLMihMRUZUX0ZJTExJTkcsIFJJR0hUX0ZJTExJTkcpOgpAQCAtOTM2LDYgKzk2Niw5IEBACiAJCQlBU1NFUlQoaSA9PSAxKTsKIAkJfQogCQkqZG5ldyA9IDA7CisJCS8qIERFTFRBOiBUaGUgaW4tY29yZSBleHRlbnQgZGVzY3JpYmVkIGJ5IG5ldyBjaGFuZ2VkIHR5cGUuICovCisJCXRlbXAgPSBuZXctPmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IG5ldy0+YnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0syKExFRlRfRklMTElORywgTEVGVF9DT05USUcpOgpAQCAtOTc4LDYgKzEwMTEsMTAgQEAKIAkJeGZzX2JtYXBfdHJhY2VfcG9zdF91cGRhdGUoZm5hbWUsICJMRnxMQyIsIGlwLCBpZHgsCiAJCQlYRlNfREFUQV9GT1JLKTsKIAkJKmRuZXcgPSB0ZW1wOworCQkvKiBERUxUQTogVGhlIGJvdW5kYXJ5IGJldHdlZW4gdHdvIGluLWNvcmUgZXh0ZW50cyBtb3ZlZC4gKi8KKwkJdGVtcCA9IExFRlQuYnJfc3RhcnRvZmY7CisJCXRlbXAyID0gTEVGVC5icl9ibG9ja2NvdW50ICsKKwkJCVBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0soTEVGVF9GSUxMSU5HKToKQEAgLTEwMjUsNiArMTA2Miw5IEBACiAJCXhmc19ibWFwX3RyYWNlX3Bvc3RfdXBkYXRlKGZuYW1lLCAiTEYiLCBpcCwgaWR4ICsgMSwKIAkJCVhGU19EQVRBX0ZPUkspOwogCQkqZG5ldyA9IHRlbXA7CisJCS8qIERFTFRBOiBPbmUgaW4tY29yZSBleHRlbnQgaXMgc3BsaXQgaW4gdHdvLiAqLworCQl0ZW1wID0gUFJFVi5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBQUkVWLmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLMihSSUdIVF9GSUxMSU5HLCBSSUdIVF9DT05USUcpOgpAQCAtMTA2Nyw2ICsxMTA3LDEwIEBACiAJCXhmc19ibWFwX3RyYWNlX3Bvc3RfdXBkYXRlKGZuYW1lLCAiUkZ8UkMiLCBpcCwgaWR4LAogCQkJWEZTX0RBVEFfRk9SSyk7CiAJCSpkbmV3ID0gdGVtcDsKKwkJLyogREVMVEE6IFRoZSBib3VuZGFyeSBiZXR3ZWVuIHR3byBpbi1jb3JlIGV4dGVudHMgbW92ZWQuICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudCArCisJCQlSSUdIVC5icl9ibG9ja2NvdW50OwogCQlicmVhazsKIAogCWNhc2UgTUFTSyhSSUdIVF9GSUxMSU5HKToKQEAgLTExMTIsNiArMTE1Niw5IEBACiAJCXhmc19ibWJ0X3NldF9zdGFydGJsb2NrKGVwLCBOVUxMU1RBUlRCTE9DSygoaW50KXRlbXApKTsKIAkJeGZzX2JtYXBfdHJhY2VfcG9zdF91cGRhdGUoZm5hbWUsICJSRiIsIGlwLCBpZHgsIFhGU19EQVRBX0ZPUkspOwogCQkqZG5ldyA9IHRlbXA7CisJCS8qIERFTFRBOiBPbmUgaW4tY29yZSBleHRlbnQgaXMgc3BsaXQgaW4gdHdvLiAqLworCQl0ZW1wID0gUFJFVi5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBQUkVWLmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSAwOgpAQCAtMTE5NCw2ICsxMjQxLDkgQEAKIAkJeGZzX2JtYXBfdHJhY2VfcG9zdF91cGRhdGUoZm5hbWUsICIwIiwgaXAsIGlkeCArIDIsCiAJCQlYRlNfREFUQV9GT1JLKTsKIAkJKmRuZXcgPSB0ZW1wICsgdGVtcDI7CisJCS8qIERFTFRBOiBPbmUgaW4tY29yZSBleHRlbnQgaXMgc3BsaXQgaW4gdGhyZWUuICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0szKExFRlRfRklMTElORywgTEVGVF9DT05USUcsIFJJR0hUX0NPTlRJRyk6CkBAIC0xMjA5LDYgKzEyNTksMTMgQEAKIAkJQVNTRVJUKDApOwogCX0KIAkqY3VycCA9IGN1cjsKKwlpZiAoZGVsdGEpIHsKKwkJdGVtcDIgKz0gdGVtcDsKKwkJaWYgKGRlbHRhLT54ZWRfc3RhcnRvZmYgPiB0ZW1wKQorCQkJZGVsdGEtPnhlZF9zdGFydG9mZiA9IHRlbXA7CisJCWlmIChkZWx0YS0+eGVkX2Jsb2NrY291bnQgPCB0ZW1wMikKKwkJCWRlbHRhLT54ZWRfYmxvY2tjb3VudCA9IHRlbXAyOworCX0KIGRvbmU6CiAJKmxvZ2ZsYWdzcCA9IHJ2YWw7CiAJcmV0dXJuIGVycm9yOwpAQCAtMTIzNSw3ICsxMjkyLDggQEAKIAl4ZnNfZXh0bnVtX3QJCWlkeCwJLyogZXh0ZW50IG51bWJlciB0byB1cGRhdGUvaW5zZXJ0ICovCiAJeGZzX2J0cmVlX2N1cl90CQkqKmN1cnAsCS8qIGlmICpjdXJwIGlzIG51bGwsIG5vdCBhIGJ0cmVlICovCiAJeGZzX2JtYnRfaXJlY190CQkqbmV3LAkvKiBuZXcgZGF0YSB0byBhZGQgdG8gZmlsZSBleHRlbnRzICovCi0JaW50CQkJKmxvZ2ZsYWdzcCkgLyogaW5vZGUgbG9nZ2luZyBmbGFncyAqLworCWludAkJCSpsb2dmbGFnc3AsIC8qIGlub2RlIGxvZ2dpbmcgZmxhZ3MgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhKSAvKiBDaGFuZ2UgbWFkZSB0byBpbmNvcmUgZXh0ZW50cyAqLwogewogCXhmc19idHJlZV9jdXJfdAkJKmN1cjsJLyogYnRyZWUgY3Vyc29yICovCiAJeGZzX2JtYnRfcmVjX3QJCSplcDsJLyogZXh0ZW50IGVudHJ5IGZvciBpZHggKi8KQEAgLTEyNTIsNiArMTMxMCw4IEBACiAJCQkJCS8qIGxlZnQgaXMgMCwgcmlnaHQgaXMgMSwgcHJldiBpcyAyICovCiAJaW50CQkJcnZhbD0wOwkvKiByZXR1cm4gdmFsdWUgKGxvZ2dpbmcgZmxhZ3MpICovCiAJaW50CQkJc3RhdGUgPSAwOy8qIHN0YXRlIGJpdHMsIGFjY2Vzc2VkIHRocnUgbWFjcm9zICovCisJeGZzX2ZpbGJsa3NfdAkJdGVtcD0wOworCXhmc19maWxibGtzX3QJCXRlbXAyPTA7CiAJZW51bSB7CQkJCS8qIGJpdCBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHN0YXRlICovCiAJCUxFRlRfQ09OVElHLAlSSUdIVF9DT05USUcsCiAJCUxFRlRfRklMTElORywJUklHSFRfRklMTElORywKQEAgLTEzODAsNiArMTQ0MCwxMSBAQAogCQkJCVJJR0hULmJyX2Jsb2NrY291bnQsIExFRlQuYnJfc3RhdGUpKSkKIAkJCQlnb3RvIGRvbmU7CiAJCX0KKwkJLyogREVMVEE6IFRocmVlIGluLWNvcmUgZXh0ZW50cyBhcmUgcmVwbGFjZWQgYnkgb25lLiAqLworCQl0ZW1wID0gTEVGVC5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBMRUZULmJyX2Jsb2NrY291bnQgKworCQkJUFJFVi5icl9ibG9ja2NvdW50ICsKKwkJCVJJR0hULmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLMyhMRUZUX0ZJTExJTkcsIFJJR0hUX0ZJTExJTkcsIExFRlRfQ09OVElHKToKQEAgLTE0MTksNiArMTQ4NCwxMCBAQAogCQkJCUxFRlQuYnJfc3RhdGUpKSkKIAkJCQlnb3RvIGRvbmU7CiAJCX0KKwkJLyogREVMVEE6IFR3byBpbi1jb3JlIGV4dGVudHMgYXJlIHJlcGxhY2VkIGJ5IG9uZS4gKi8KKwkJdGVtcCA9IExFRlQuYnJfc3RhcnRvZmY7CisJCXRlbXAyID0gTEVGVC5icl9ibG9ja2NvdW50ICsKKwkJCVBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0szKExFRlRfRklMTElORywgUklHSFRfRklMTElORywgUklHSFRfQ09OVElHKToKQEAgLTE0NTksNiArMTUyOCwxMCBAQAogCQkJCW5ld2V4dCkpKQogCQkJCWdvdG8gZG9uZTsKIAkJfQorCQkvKiBERUxUQTogVHdvIGluLWNvcmUgZXh0ZW50cyBhcmUgcmVwbGFjZWQgYnkgb25lLiAqLworCQl0ZW1wID0gUFJFVi5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBQUkVWLmJyX2Jsb2NrY291bnQgKworCQkJUklHSFQuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0syKExFRlRfRklMTElORywgUklHSFRfRklMTElORyk6CkBAIC0xNDg3LDYgKzE1NjAsOSBAQAogCQkJCW5ld2V4dCkpKQogCQkJCWdvdG8gZG9uZTsKIAkJfQorCQkvKiBERUxUQTogVGhlIGluLWNvcmUgZXh0ZW50IGRlc2NyaWJlZCBieSBuZXcgY2hhbmdlZCB0eXBlLiAqLworCQl0ZW1wID0gbmV3LT5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBuZXctPmJyX2Jsb2NrY291bnQ7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLMihMRUZUX0ZJTExJTkcsIExFRlRfQ09OVElHKToKQEAgLTE1MzQsNiArMTYxMCwxMCBAQAogCQkJCUxFRlQuYnJfc3RhdGUpKQogCQkJCWdvdG8gZG9uZTsKIAkJfQorCQkvKiBERUxUQTogVGhlIGJvdW5kYXJ5IGJldHdlZW4gdHdvIGluLWNvcmUgZXh0ZW50cyBtb3ZlZC4gKi8KKwkJdGVtcCA9IExFRlQuYnJfc3RhcnRvZmY7CisJCXRlbXAyID0gTEVGVC5icl9ibG9ja2NvdW50ICsKKwkJCVBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0soTEVGVF9GSUxMSU5HKToKQEAgLTE1NzQsNiArMTY1NCw5IEBACiAJCQkJZ290byBkb25lOwogCQkJQVNTRVJUKGkgPT0gMSk7CiAJCX0KKwkJLyogREVMVEE6IE9uZSBpbi1jb3JlIGV4dGVudCBpcyBzcGxpdCBpbiB0d28uICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0syKFJJR0hUX0ZJTExJTkcsIFJJR0hUX0NPTlRJRyk6CkBAIC0xNjE3LDYgKzE3MDAsMTAgQEAKIAkJCQluZXdleHQpKSkKIAkJCQlnb3RvIGRvbmU7CiAJCX0KKwkJLyogREVMVEE6IFRoZSBib3VuZGFyeSBiZXR3ZWVuIHR3byBpbi1jb3JlIGV4dGVudHMgbW92ZWQuICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudCArCisJCQlSSUdIVC5icl9ibG9ja2NvdW50OwogCQlicmVhazsKIAogCWNhc2UgTUFTSyhSSUdIVF9GSUxMSU5HKToKQEAgLTE2NTcsNiArMTc0NCw5IEBACiAJCQkJZ290byBkb25lOwogCQkJQVNTRVJUKGkgPT0gMSk7CiAJCX0KKwkJLyogREVMVEE6IE9uZSBpbi1jb3JlIGV4dGVudCBpcyBzcGxpdCBpbiB0d28uICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIDA6CkBAIC0xNzEwLDYgKzE4MDAsOSBAQAogCQkJCWdvdG8gZG9uZTsKIAkJCUFTU0VSVChpID09IDEpOwogCQl9CisJCS8qIERFTFRBOiBPbmUgaW4tY29yZSBleHRlbnQgaXMgc3BsaXQgaW4gdGhyZWUuICovCisJCXRlbXAgPSBQUkVWLmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IFBSRVYuYnJfYmxvY2tjb3VudDsKIAkJYnJlYWs7CiAKIAljYXNlIE1BU0szKExFRlRfRklMTElORywgTEVGVF9DT05USUcsIFJJR0hUX0NPTlRJRyk6CkBAIC0xNzI1LDYgKzE4MTgsMTMgQEAKIAkJQVNTRVJUKDApOwogCX0KIAkqY3VycCA9IGN1cjsKKwlpZiAoZGVsdGEpIHsKKwkJdGVtcDIgKz0gdGVtcDsKKwkJaWYgKGRlbHRhLT54ZWRfc3RhcnRvZmYgPiB0ZW1wKQorCQkJZGVsdGEtPnhlZF9zdGFydG9mZiA9IHRlbXA7CisJCWlmIChkZWx0YS0+eGVkX2Jsb2NrY291bnQgPCB0ZW1wMikKKwkJCWRlbHRhLT54ZWRfYmxvY2tjb3VudCA9IHRlbXAyOworCX0KIGRvbmU6CiAJKmxvZ2ZsYWdzcCA9IHJ2YWw7CiAJcmV0dXJuIGVycm9yOwpAQCAtMTc1Myw2ICsxODUzLDcgQEAKIAl4ZnNfYnRyZWVfY3VyX3QJCSpjdXIsCS8qIGlmIG51bGwsIG5vdCBhIGJ0cmVlICovCiAJeGZzX2JtYnRfaXJlY190CQkqbmV3LAkvKiBuZXcgZGF0YSB0byBhZGQgdG8gZmlsZSBleHRlbnRzICovCiAJaW50CQkJKmxvZ2ZsYWdzcCwgLyogaW5vZGUgbG9nZ2luZyBmbGFncyAqLworCXhmc19leHRkZWx0YV90CQkqZGVsdGEsIC8qIENoYW5nZSBtYWRlIHRvIGluY29yZSBleHRlbnRzICovCiAJaW50CQkJcnN2ZCkJCS8qIE9LIHRvIGFsbG9jYXRlIHJlc2VydmVkIGJsb2NrcyAqLwogewogCXhmc19ibWJ0X3JlY190CQkqZXA7CS8qIGV4dGVudCByZWNvcmQgZm9yIGlkeCAqLwpAQCAtMTc2NSw3ICsxODY2LDggQEAKIAl4ZnNfZmlsYmxrc190CQlvbGRsZW49MDsJLyogb2xkIGluZGlyZWN0IHNpemUgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCXJpZ2h0OwkvKiByaWdodCBuZWlnaGJvciBleHRlbnQgZW50cnkgKi8KIAlpbnQJCQlzdGF0ZTsgIC8qIHN0YXRlIGJpdHMsIGFjY2Vzc2VkIHRocnUgbWFjcm9zICovCi0JeGZzX2ZpbGJsa3NfdAkJdGVtcDsJLyogdGVtcCBmb3IgaW5kaXJlY3QgY2FsY3VsYXRpb25zICovCisJeGZzX2ZpbGJsa3NfdAkJdGVtcD0wOwkvKiB0ZW1wIGZvciBpbmRpcmVjdCBjYWxjdWxhdGlvbnMgKi8KKwl4ZnNfZmlsYmxrc190CQl0ZW1wMj0wOwogCWVudW0gewkJCQkvKiBiaXQgbnVtYmVyIGRlZmluaXRpb25zIGZvciBzdGF0ZSAqLwogCQlMRUZUX0NPTlRJRywJUklHSFRfQ09OVElHLAogCQlMRUZUX0RFTEFZLAlSSUdIVF9ERUxBWSwKQEAgLTE4NDQsNiArMTk0Niw5IEBACiAJCQlYRlNfREFUQV9GT1JLKTsKIAkJeGZzX2lleHRfcmVtb3ZlKGlmcCwgaWR4LCAxKTsKIAkJaXAtPmlfZGYuaWZfbGFzdGV4ID0gaWR4IC0gMTsKKwkJLyogREVMVEE6IFR3byBpbi1jb3JlIGV4dGVudHMgd2VyZSByZXBsYWNlZCBieSBvbmUuICovCisJCXRlbXAyID0gdGVtcDsKKwkJdGVtcCA9IGxlZnQuYnJfc3RhcnRvZmY7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLKExFRlRfQ09OVElHKToKQEAgLTE4NjQsNiArMTk2OSw5IEBACiAJCXhmc19ibWFwX3RyYWNlX3Bvc3RfdXBkYXRlKGZuYW1lLCAiTEMiLCBpcCwgaWR4IC0gMSwKIAkJCVhGU19EQVRBX0ZPUkspOwogCQlpcC0+aV9kZi5pZl9sYXN0ZXggPSBpZHggLSAxOworCQkvKiBERUxUQTogT25lIGluLWNvcmUgZXh0ZW50IGdyZXcgaW50byBhIGhvbGUuICovCisJCXRlbXAyID0gdGVtcDsKKwkJdGVtcCA9IGxlZnQuYnJfc3RhcnRvZmY7CiAJCWJyZWFrOwogCiAJY2FzZSBNQVNLKFJJR0hUX0NPTlRJRyk6CkBAIC0xODgxLDYgKzE5ODksOSBAQAogCQkJTlVMTFNUQVJUQkxPQ0soKGludCluZXdsZW4pLCB0ZW1wLCByaWdodC5icl9zdGF0ZSk7CiAJCXhmc19ibWFwX3RyYWNlX3Bvc3RfdXBkYXRlKGZuYW1lLCAiUkMiLCBpcCwgaWR4LCBYRlNfREFUQV9GT1JLKTsKIAkJaXAtPmlfZGYuaWZfbGFzdGV4ID0gaWR4OworCQkvKiBERUxUQTogT25lIGluLWNvcmUgZXh0ZW50IGdyZXcgaW50byBhIGhvbGUuICovCisJCXRlbXAyID0gdGVtcDsKKwkJdGVtcCA9IG5ldy0+YnJfc3RhcnRvZmY7CiAJCWJyZWFrOwogCiAJY2FzZSAwOgpAQCAtMTg5NCw2ICsyMDA1LDkgQEAKIAkJCVhGU19EQVRBX0ZPUkspOwogCQl4ZnNfaWV4dF9pbnNlcnQoaWZwLCBpZHgsIDEsIG5ldyk7CiAJCWlwLT5pX2RmLmlmX2xhc3RleCA9IGlkeDsKKwkJLyogREVMVEE6IEEgbmV3IGluLWNvcmUgZXh0ZW50IHdhcyBhZGRlZCBpbiBhIGhvbGUuICovCisJCXRlbXAyID0gbmV3LT5icl9ibG9ja2NvdW50OworCQl0ZW1wID0gbmV3LT5icl9zdGFydG9mZjsKIAkJYnJlYWs7CiAJfQogCWlmIChvbGRsZW4gIT0gbmV3bGVuKSB7CkBAIC0xOTA0LDYgKzIwMTgsMTMgQEAKIAkJICogTm90aGluZyB0byBkbyBmb3IgZGlzayBxdW90YSBhY2NvdW50aW5nIGhlcmUuCiAJCSAqLwogCX0KKwlpZiAoZGVsdGEpIHsKKwkJdGVtcDIgKz0gdGVtcDsKKwkJaWYgKGRlbHRhLT54ZWRfc3RhcnRvZmYgPiB0ZW1wKQorCQkJZGVsdGEtPnhlZF9zdGFydG9mZiA9IHRlbXA7CisJCWlmIChkZWx0YS0+eGVkX2Jsb2NrY291bnQgPCB0ZW1wMikKKwkJCWRlbHRhLT54ZWRfYmxvY2tjb3VudCA9IHRlbXAyOworCX0KIAkqbG9nZmxhZ3NwID0gMDsKIAlyZXR1cm4gMDsKICN1bmRlZglNQVNLCkBAIC0xOTI1LDYgKzIwNDYsNyBAQAogCXhmc19idHJlZV9jdXJfdAkJKmN1ciwJLyogaWYgbnVsbCwgbm90IGEgYnRyZWUgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCSpuZXcsCS8qIG5ldyBkYXRhIHRvIGFkZCB0byBmaWxlIGV4dGVudHMgKi8KIAlpbnQJCQkqbG9nZmxhZ3NwLCAvKiBpbm9kZSBsb2dnaW5nIGZsYWdzICovCisJeGZzX2V4dGRlbHRhX3QJCSpkZWx0YSwgLyogQ2hhbmdlIG1hZGUgdG8gaW5jb3JlIGV4dGVudHMgKi8KIAlpbnQJCQl3aGljaGZvcmspIC8qIGRhdGEgb3IgYXR0ciBmb3JrICovCiB7CiAJeGZzX2JtYnRfcmVjX3QJCSplcDsJLyogcG9pbnRlciB0byBleHRlbnQgZW50cnkgaW5zLiBwb2ludCAqLwpAQCAtMTkzNiw3ICsyMDU4LDEwIEBACiAJeGZzX2lmb3JrX3QJCSppZnA7CS8qIGlub2RlIGZvcmsgcG9pbnRlciAqLwogCXhmc19ibWJ0X2lyZWNfdAkJbGVmdDsJLyogbGVmdCBuZWlnaGJvciBleHRlbnQgZW50cnkgKi8KIAl4ZnNfYm1idF9pcmVjX3QJCXJpZ2h0OwkvKiByaWdodCBuZWlnaGJvciBleHRlbnQgZW50cnkgKi8KKwlpbnQJCQlydmFsPTA7CS8qIHJldHVybiB2YWx1ZSAobG9nZ2luZyBmbGFncykgKi8KIAlpbnQJCQlzdGF0ZTsJLyogc3RhdGUgYml0cywgYWNjZXNzZWQgdGhydSBtYWNyb3MgKi8KKwl4ZnNfZmlsYmxrc190CQl0ZW1wPTA7CisJeGZzX2ZpbGJsa3NfdAkJdGVtcDI9MDsKIAllbnVtIHsJCQkJLyogYml0IG51bWJlciBkZWZpbml0aW9ucyBmb3Igc3RhdGUgKi8KIAkJTEVGVF9DT05USUcsCVJJR0hUX0NPTlRJRywKIAkJTEVGVF9ERUxBWSwJUklHSFRfREVMQVksCkBAIC0xOTkzLDYgKzIxMTgsNyBAQAogCQkgbGVmdC5icl9ibG9ja2NvdW50ICsgbmV3LT5icl9ibG9ja2NvdW50ICsKIAkJICAgICByaWdodC5icl9ibG9ja2NvdW50IDw9IE1BWEVYVExFTikpOwogCisJZXJyb3IgPSAwOwogCS8qCiAJICogU2VsZWN0IHdoaWNoIGNhc2Ugd2UncmUgaW4gaGVyZSwgYW5kIGltcGxlbWVudCBpdC4KIAkgKi8KQEAgLTIwMTgsMjUgKzIxNDQsMzUgQEAKIAkJWEZTX0lGT1JLX05FWFRfU0VUKGlwLCB3aGljaGZvcmssCiAJCQlYRlNfSUZPUktfTkVYVEVOVFMoaXAsIHdoaWNoZm9yaykgLSAxKTsKIAkJaWYgKGN1ciA9PSBOVUxMKSB7Ci0JCQkqbG9nZmxhZ3NwID0gWEZTX0lMT0dfQ09SRSB8IFhGU19JTE9HX0ZFWFQod2hpY2hmb3JrKTsKLQkJCXJldHVybiAwOworCQkJcnZhbCA9IFhGU19JTE9HX0NPUkUgfCBYRlNfSUxPR19GRVhUKHdoaWNoZm9yayk7CisJCX0gZWxzZSB7CisJCQlydmFsID0gWEZTX0lMT0dfQ09SRTsKKwkJCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9sb29rdXBfZXEoY3VyLAorCQkJCQlyaWdodC5icl9zdGFydG9mZiwKKwkJCQkJcmlnaHQuYnJfc3RhcnRibG9jaywKKwkJCQkJcmlnaHQuYnJfYmxvY2tjb3VudCwgJmkpKSkKKwkJCQlnb3RvIGRvbmU7CisJCQlBU1NFUlQoaSA9PSAxKTsKKwkJCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9kZWxldGUoY3VyLCAmaSkpKQorCQkJCWdvdG8gZG9uZTsKKwkJCUFTU0VSVChpID09IDEpOworCQkJaWYgKChlcnJvciA9IHhmc19ibWJ0X2RlY3JlbWVudChjdXIsIDAsICZpKSkpCisJCQkJZ290byBkb25lOworCQkJQVNTRVJUKGkgPT0gMSk7CisJCQlpZiAoKGVycm9yID0geGZzX2JtYnRfdXBkYXRlKGN1ciwgbGVmdC5icl9zdGFydG9mZiwKKwkJCQkJbGVmdC5icl9zdGFydGJsb2NrLAorCQkJCQlsZWZ0LmJyX2Jsb2NrY291bnQgKworCQkJCQkJbmV3LT5icl9ibG9ja2NvdW50ICsKKwkJCQkJCXJpZ2h0LmJyX2Jsb2NrY291bnQsCisJCQkJCWxlZnQuYnJfc3RhdGUpKSkKKwkJCQlnb3RvIGRvbmU7CiAJCX0KLQkJKmxvZ2ZsYWdzcCA9IFhGU19JTE9HX0NPUkU7Ci0JCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9sb29rdXBfZXEoY3VyLCByaWdodC5icl9zdGFydG9mZiwKLQkJCQlyaWdodC5icl9zdGFydGJsb2NrLCByaWdodC5icl9ibG9ja2NvdW50LCAmaSkpKQotCQkJcmV0dXJuIGVycm9yOwotCQlBU1NFUlQoaSA9PSAxKTsKLQkJaWYgKChlcnJvciA9IHhmc19ibWJ0X2RlbGV0ZShjdXIsICZpKSkpCi0JCQlyZXR1cm4gZXJyb3I7Ci0JCUFTU0VSVChpID09IDEpOwotCQlpZiAoKGVycm9yID0geGZzX2JtYnRfZGVjcmVtZW50KGN1ciwgMCwgJmkpKSkKLQkJCXJldHVybiBlcnJvcjsKLQkJQVNTRVJUKGkgPT0gMSk7Ci0JCWVycm9yID0geGZzX2JtYnRfdXBkYXRlKGN1ciwgbGVmdC5icl9zdGFydG9mZiwKLQkJCQlsZWZ0LmJyX3N0YXJ0YmxvY2ssCi0JCQkJbGVmdC5icl9ibG9ja2NvdW50ICsgbmV3LT5icl9ibG9ja2NvdW50ICsKLQkJCQlyaWdodC5icl9ibG9ja2NvdW50LCBsZWZ0LmJyX3N0YXRlKTsKLQkJcmV0dXJuIGVycm9yOworCQkvKiBERUxUQTogVHdvIGluLWNvcmUgZXh0ZW50cyB3ZXJlIHJlcGxhY2VkIGJ5IG9uZS4gKi8KKwkJdGVtcCA9IGxlZnQuYnJfc3RhcnRvZmY7CisJCXRlbXAyID0gbGVmdC5icl9ibG9ja2NvdW50ICsKKwkJCW5ldy0+YnJfYmxvY2tjb3VudCArCisJCQlyaWdodC5icl9ibG9ja2NvdW50OworCQlicmVhazsKIAogCWNhc2UgTUFTSyhMRUZUX0NPTlRJRyk6CiAJCS8qCkBAIC0yMDUwLDE5ICsyMTg2LDI3IEBACiAJCXhmc19ibWFwX3RyYWNlX3Bvc3RfdXBkYXRlKGZuYW1lLCAiTEMiLCBpcCwgaWR4IC0gMSwgd2hpY2hmb3JrKTsKIAkJaWZwLT5pZl9sYXN0ZXggPSBpZHggLSAxOwogCQlpZiAoY3VyID09IE5VTEwpIHsKLQkJCSpsb2dmbGFnc3AgPSBYRlNfSUxPR19GRVhUKHdoaWNoZm9yayk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJ2YWwgPSBYRlNfSUxPR19GRVhUKHdoaWNoZm9yayk7CisJCX0gZWxzZSB7CisJCQlydmFsID0gMDsKKwkJCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9sb29rdXBfZXEoY3VyLAorCQkJCQlsZWZ0LmJyX3N0YXJ0b2ZmLAorCQkJCQlsZWZ0LmJyX3N0YXJ0YmxvY2ssCisJCQkJCWxlZnQuYnJfYmxvY2tjb3VudCwgJmkpKSkKKwkJCQlnb3RvIGRvbmU7CisJCQlBU1NFUlQoaSA9PSAxKTsKKwkJCWlmICgoZXJyb3IgPSB4ZnNfYm1idF91cGRhdGUoY3VyLCBsZWZ0LmJyX3N0YXJ0b2ZmLAorCQkJCQlsZWZ0LmJyX3N0YXJ0YmxvY2ssCisJCQkJCWxlZnQuYnJfYmxvY2tjb3VudCArCisJCQkJCQluZXctPmJyX2Jsb2NrY291bnQsCisJCQkJCWxlZnQuYnJfc3RhdGUpKSkKKwkJCQlnb3RvIGRvbmU7CiAJCX0KLQkJKmxvZ2ZsYWdzcCA9IDA7Ci0JCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9sb29rdXBfZXEoY3VyLCBsZWZ0LmJyX3N0YXJ0b2ZmLAotCQkJCWxlZnQuYnJfc3RhcnRibG9jaywgbGVmdC5icl9ibG9ja2NvdW50LCAmaSkpKQotCQkJcmV0dXJuIGVycm9yOwotCQlBU1NFUlQoaSA9PSAxKTsKLQkJZXJyb3IgPSB4ZnNfYm1idF91cGRhdGUoY3VyLCBsZWZ0LmJyX3N0YXJ0b2ZmLAotCQkJCWxlZnQuYnJfc3RhcnRibG9jaywKLQkJCQlsZWZ0LmJyX2Jsb2NrY291bnQgKyBuZXctPmJyX2Jsb2NrY291bnQsCi0JCQkJbGVmdC5icl9zdGF0ZSk7Ci0JCXJldHVybiBlcnJvcjsKKwkJLyogREVMVEE6IE9uZSBpbi1jb3JlIGV4dGVudCBncmV3LiAqLworCQl0ZW1wID0gbGVmdC5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBsZWZ0LmJyX2Jsb2NrY291bnQgKworCQkJbmV3LT5icl9ibG9ja2NvdW50OworCQlicmVhazsKIAogCWNhc2UgTUFTSyhSSUdIVF9DT05USUcpOgogCQkvKgpAQCAtMjA3NywxOSArMjIyMSwyNyBAQAogCQl4ZnNfYm1hcF90cmFjZV9wb3N0X3VwZGF0ZShmbmFtZSwgIlJDIiwgaXAsIGlkeCwgd2hpY2hmb3JrKTsKIAkJaWZwLT5pZl9sYXN0ZXggPSBpZHg7CiAJCWlmIChjdXIgPT0gTlVMTCkgewotCQkJKmxvZ2ZsYWdzcCA9IFhGU19JTE9HX0ZFWFQod2hpY2hmb3JrKTsKLQkJCXJldHVybiAwOworCQkJcnZhbCA9IFhGU19JTE9HX0ZFWFQod2hpY2hmb3JrKTsKKwkJfSBlbHNlIHsKKwkJCXJ2YWwgPSAwOworCQkJaWYgKChlcnJvciA9IHhmc19ibWJ0X2xvb2t1cF9lcShjdXIsCisJCQkJCXJpZ2h0LmJyX3N0YXJ0b2ZmLAorCQkJCQlyaWdodC5icl9zdGFydGJsb2NrLAorCQkJCQlyaWdodC5icl9ibG9ja2NvdW50LCAmaSkpKQorCQkJCWdvdG8gZG9uZTsKKwkJCUFTU0VSVChpID09IDEpOworCQkJaWYgKChlcnJvciA9IHhmc19ibWJ0X3VwZGF0ZShjdXIsIG5ldy0+YnJfc3RhcnRvZmYsCisJCQkJCW5ldy0+YnJfc3RhcnRibG9jaywKKwkJCQkJbmV3LT5icl9ibG9ja2NvdW50ICsKKwkJCQkJCXJpZ2h0LmJyX2Jsb2NrY291bnQsCisJCQkJCXJpZ2h0LmJyX3N0YXRlKSkpCisJCQkJZ290byBkb25lOwogCQl9Ci0JCSpsb2dmbGFnc3AgPSAwOwotCQlpZiAoKGVycm9yID0geGZzX2JtYnRfbG9va3VwX2VxKGN1ciwgcmlnaHQuYnJfc3RhcnRvZmYsCi0JCQkJcmlnaHQuYnJfc3RhcnRibG9jaywgcmlnaHQuYnJfYmxvY2tjb3VudCwgJmkpKSkKLQkJCXJldHVybiBlcnJvcjsKLQkJQVNTRVJUKGkgPT0gMSk7Ci0JCWVycm9yID0geGZzX2JtYnRfdXBkYXRlKGN1ciwgbmV3LT5icl9zdGFydG9mZiwKLQkJCQluZXctPmJyX3N0YXJ0YmxvY2ssCi0JCQkJbmV3LT5icl9ibG9ja2NvdW50ICsgcmlnaHQuYnJfYmxvY2tjb3VudCwKLQkJCQlyaWdodC5icl9zdGF0ZSk7Ci0JCXJldHVybiBlcnJvcjsKKwkJLyogREVMVEE6IE9uZSBpbi1jb3JlIGV4dGVudCBncmV3LiAqLworCQl0ZW1wID0gbmV3LT5icl9zdGFydG9mZjsKKwkJdGVtcDIgPSBuZXctPmJyX2Jsb2NrY291bnQgKworCQkJcmlnaHQuYnJfYmxvY2tjb3VudDsKKwkJYnJlYWs7CiAKIAljYXNlIDA6CiAJCS8qCkBAIC0yMTA0LDI5ICsyMjU2LDQxIEBACiAJCVhGU19JRk9SS19ORVhUX1NFVChpcCwgd2hpY2hmb3JrLAogCQkJWEZTX0lGT1JLX05FWFRFTlRTKGlwLCB3aGljaGZvcmspICsgMSk7CiAJCWlmIChjdXIgPT0gTlVMTCkgewotCQkJKmxvZ2ZsYWdzcCA9IFhGU19JTE9HX0NPUkUgfCBYRlNfSUxPR19GRVhUKHdoaWNoZm9yayk7Ci0JCQlyZXR1cm4gMDsKKwkJCXJ2YWwgPSBYRlNfSUxPR19DT1JFIHwgWEZTX0lMT0dfRkVYVCh3aGljaGZvcmspOworCQl9IGVsc2UgeworCQkJcnZhbCA9IFhGU19JTE9HX0NPUkU7CisJCQlpZiAoKGVycm9yID0geGZzX2JtYnRfbG9va3VwX2VxKGN1ciwKKwkJCQkJbmV3LT5icl9zdGFydG9mZiwKKwkJCQkJbmV3LT5icl9zdGFydGJsb2NrLAorCQkJCQluZXctPmJyX2Jsb2NrY291bnQsICZpKSkpCisJCQkJZ290byBkb25lOworCQkJQVNTRVJUKGkgPT0gMCk7CisJCQljdXItPmJjX3JlYy5iLmJyX3N0YXRlID0gbmV3LT5icl9zdGF0ZTsKKwkJCWlmICgoZXJyb3IgPSB4ZnNfYm1idF9pbnNlcnQoY3VyLCAmaSkpKQorCQkJCWdvdG8gZG9uZTsKKwkJCUFTU0VSVChpID09IDEpOwogCQl9Ci0JCSpsb2dmbGFnc3AgPSBYRlNfSUxPR19DT1JFOwotCQlpZiAoKGVycm9yID0geGZzX2JtYnRfbG9va3VwX2VxKGN1ciwgbmV3LT5icl9zdGFydG9mZiwKLQkJCQluZXctPmJyX3N0YXJ0YmxvY2ssIG5ldy0+YnJfYmxvY2tjb3VudCwgJmkpKSkKLQkJCXJldHVybiBlcnJvcjsKLQkJQVNTRVJUKGkgPT0gMCk7Ci0JCWN1ci0+YmNfcmVjLmIuYnJfc3RhdGUgPSBuZXctPmJyX3N0YXRlOwotCQlpZiAoKGVycm9yID0geGZzX2JtYnRfaW5zZXJ0KGN1ciwgJmkpKSkKLQkJCXJldHVybiBlcnJvcjsKLQkJQVNTRVJUKGkgPT0gMSk7Ci0JCXJldHVybiAwOworCQkvKiBERUxUQTogQSBuZXcgZXh0ZW50IHdhcyBhZGRlZCBpbiBhIGhvbGUuICovCisJCXRlbXAgPSBuZXctPmJyX3N0YXJ0b2ZmOworCQl0ZW1wMiA9IG5ldy0+YnJfYmxvY2tjb3VudDsKKwkJYnJlYWs7CiAJfQorCWlmIChkZWx0YSkgeworCQl0ZW1wMiArPSB0ZW1wOworCQlpZiAoZGVsdGEtPnhlZF9zdGFydG9mZiA+IHRlbXApCisJCQlkZWx0YS0+eGVkX3N0YXJ0b2ZmID0gdGVtcDsKKwkJaWYgKGRlbHRhLT54ZWRfYmxvY2tjb3VudCA8IHRlbXAyKQorCQkJZGVsdGEtPnhlZF9ibG9ja2NvdW50ID0gdGVtcDI7CisJfQorZG9uZToKKwkqbG9nZmxhZ3NwID0gcnZhbDsKKwlyZXR1cm4gZXJyb3I7CiAjdW5kZWYJTUFTSwogI3VuZGVmCU1BU0syCiAjdW5kZWYJU1RBVEVfU0VUCiAjdW5kZWYJU1RBVEVfVEVTVAogI3VuZGVmCVNUQVRFX1NFVF9URVNUCiAjdW5kZWYJU1dJVENIX1NUQVRFCi0JLyogTk9UUkVBQ0hFRCAqLwotCUFTU0VSVCgwKTsKLQlyZXR1cm4gMDsgLyoga2VlcCBnY2MgcXVpdGUgKi8KIH0KIAogLyoKQEAgLTI1OTgsNiArMjc2Miw3IEBACiAJYXJncy5tcCA9IG1wOwogCWFyZ3MuZnNibm8gPSBhcC0+cnZhbDsKIAlhcmdzLm1heGxlbiA9IE1JTihhcC0+YWxlbiwgbXAtPm1fc2Iuc2JfYWdibG9ja3MpOworCWFyZ3MuZmlyc3RibG9jayA9IGFwLT5maXJzdGJsb2NrOwogCWJsZW4gPSAwOwogCWlmIChudWxsZmIpIHsKIAkJYXJncy50eXBlID0gWEZTX0FMTE9DVFlQRV9TVEFSVF9CTk87CkBAIC0yNjU3LDcgKzI4MjIsNyBAQAogCQllbHNlCiAJCQlhcmdzLm1pbmxlbiA9IGFwLT5hbGVuOwogCX0gZWxzZSBpZiAoYXAtPmxvdykgewotCQlhcmdzLnR5cGUgPSBYRlNfQUxMT0NUWVBFX0ZJUlNUX0FHOworCQlhcmdzLnR5cGUgPSBYRlNfQUxMT0NUWVBFX1NUQVJUX0JOTzsKIAkJYXJncy50b3RhbCA9IGFyZ3MubWlubGVuID0gYXAtPm1pbmxlbjsKIAl9IGVsc2UgewogCQlhcmdzLnR5cGUgPSBYRlNfQUxMT0NUWVBFX05FQVJfQk5POwpAQCAtMjY2OSw3ICsyODM0LDcgQEAKIAkJYXJncy5wcm9kID0gYXAtPmlwLT5pX2QuZGlfZXh0c2l6ZTsKIAkJaWYgKChhcmdzLm1vZCA9ICh4ZnNfZXh0bGVuX3QpZG9fbW9kKGFwLT5vZmYsIGFyZ3MucHJvZCkpKQogCQkJYXJncy5tb2QgPSAoeGZzX2V4dGxlbl90KShhcmdzLnByb2QgLSBhcmdzLm1vZCk7Ci0JfSBlbHNlIGlmICh1bmxpa2VseShtcC0+bV9zYi5zYl9ibG9ja3NpemUgPj0gTkJQUCkpIHsKKwl9IGVsc2UgaWYgKG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSA+PSBOQlBQKSB7CiAJCWFyZ3MucHJvZCA9IDE7CiAJCWFyZ3MubW9kID0gMDsKIAl9IGVsc2UgewpAQCAtMjg4NSw2ICszMDUwLDcgQEAKIAl4ZnNfYnRyZWVfY3VyX3QJCSpjdXIsCS8qIGlmIG51bGwsIG5vdCBhIGJ0cmVlICovCiAJeGZzX2JtYnRfaXJlY190CQkqZGVsLAkvKiBkYXRhIHRvIHJlbW92ZSBmcm9tIGV4dGVudHMgKi8KIAlpbnQJCQkqbG9nZmxhZ3NwLCAvKiBpbm9kZSBsb2dnaW5nIGZsYWdzICovCisJeGZzX2V4dGRlbHRhX3QJCSpkZWx0YSwgLyogQ2hhbmdlIG1hZGUgdG8gaW5jb3JlIGV4dGVudHMgKi8KIAlpbnQJCQl3aGljaGZvcmssIC8qIGRhdGEgb3IgYXR0ciBmb3JrICovCiAJaW50CQkJcnN2ZCkJLyogT0sgdG8gYWxsb2NhdGUgcmVzZXJ2ZWQgYmxvY2tzICovCiB7CkBAIC0zMTkzLDYgKzMzNTksMTQgQEAKIAlpZiAoZGFfb2xkID4gZGFfbmV3KQogCQl4ZnNfbW9kX2luY29yZV9zYihtcCwgWEZTX1NCU19GREJMT0NLUywgKGludCkoZGFfb2xkIC0gZGFfbmV3KSwKIAkJCXJzdmQpOworCWlmIChkZWx0YSkgeworCQkvKiBERUxUQTogcmVwb3J0IHRoZSBvcmlnaW5hbCBleHRlbnQuICovCisJCWlmIChkZWx0YS0+eGVkX3N0YXJ0b2ZmID4gZ290LmJyX3N0YXJ0b2ZmKQorCQkJZGVsdGEtPnhlZF9zdGFydG9mZiA9IGdvdC5icl9zdGFydG9mZjsKKwkJaWYgKGRlbHRhLT54ZWRfYmxvY2tjb3VudCA8IGdvdC5icl9zdGFydG9mZitnb3QuYnJfYmxvY2tjb3VudCkKKwkJCWRlbHRhLT54ZWRfYmxvY2tjb3VudCA9IGdvdC5icl9zdGFydG9mZiArCisJCQkJCQkJZ290LmJyX2Jsb2NrY291bnQ7CisJfQogZG9uZToKIAkqbG9nZmxhZ3NwID0gZmxhZ3M7CiAJcmV0dXJuIGVycm9yOwpAQCAtMzI3OSw2ICszNDUzLDcgQEAKIAlYRlNfSUZPUktfRk1UX1NFVChpcCwgd2hpY2hmb3JrLCBYRlNfRElOT0RFX0ZNVF9CVFJFRSk7CiAJYXJncy50cCA9IHRwOwogCWFyZ3MubXAgPSBtcDsKKwlhcmdzLmZpcnN0YmxvY2sgPSAqZmlyc3RibG9jazsKIAlpZiAoKmZpcnN0YmxvY2sgPT0gTlVMTEZTQkxPQ0spIHsKIAkJYXJncy50eXBlID0gWEZTX0FMTE9DVFlQRV9TVEFSVF9CTk87CiAJCWFyZ3MuZnNibm8gPSBYRlNfSU5PX1RPX0ZTQihtcCwgaXAtPmlfaW5vKTsKQEAgLTM0MTQsNiArMzU4OSw3IEBACiAKIAkJYXJncy50cCA9IHRwOwogCQlhcmdzLm1wID0gaXAtPmlfbW91bnQ7CisJCWFyZ3MuZmlyc3RibG9jayA9ICpmaXJzdGJsb2NrOwogCQlBU1NFUlQoKGlmcC0+aWZfZmxhZ3MgJgogCQkJKFhGU19JRklOTElORXxYRlNfSUZFWFRFTlRTfFhGU19JRkVYVElSRUMpKSA9PSBYRlNfSUZJTkxJTkUpOwogCQkvKgpAQCAtMzc1Myw3ICszOTI5LDcgQEAKIAlpZiAoaXAtPmlfcnd0cmFjZSA9PSBOVUxMKQogCQlyZXR1cm47CiAJa3RyYWNlX2VudGVyKGlwLT5pX3J3dHJhY2UsCi0JCSh2b2lkICopKF9fcHNpbnRfdClYRlNfQlVOTUFQSSwKKwkJKHZvaWQgKikoX19wc2ludF90KVhGU19CVU5NQVAsCiAJCSh2b2lkICopaXAsCiAJCSh2b2lkICopKF9fcHNpbnRfdCkoKGlwLT5pX2QuZGlfc2l6ZSA+PiAzMikgJiAweGZmZmZmZmZmKSwKIAkJKHZvaWQgKikoX19wc2ludF90KShpcC0+aV9kLmRpX3NpemUgJiAweGZmZmZmZmZmKSwKQEAgLTQwODcsOCArNDI2Myw4IEBACiAJCQlpZiAoIVhGU19GT1JDRURfU0hVVERPV04obXApKQogCQkJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwKIAkJCQkJCSAgIChlcnJvciA9PSBFRlNDT1JSVVBURUQpID8KLQkJCQkJCSAgIFhGU19DT1JSVVBUX0lOQ09SRSA6Ci0JCQkJCQkgICBYRlNfTUVUQURBVEFfSU9fRVJST1IpOworCQkJCQkJICAgU0hVVERPV05fQ09SUlVQVF9JTkNPUkUgOgorCQkJCQkJICAgU0hVVERPV05fTUVUQV9JT19FUlJPUik7CiAJCQlyZXR1cm4gZXJyb3I7CiAJCX0KIAkJeGZzX3RyYW5zX2xvZ19lZmRfZXh0ZW50KG50cCwgZWZkLCBmcmVlLT54YmZpX3N0YXJ0YmxvY2ssCkBAIC00NTM4LDcgKzQ3MTQsOCBAQAogCXhmc19leHRsZW5fdAl0b3RhbCwJCS8qIHRvdGFsIGJsb2NrcyBuZWVkZWQgKi8KIAl4ZnNfYm1idF9pcmVjX3QJKm12YWwsCQkvKiBvdXRwdXQ6IG1hcCB2YWx1ZXMgKi8KIAlpbnQJCSpubWFwLAkJLyogaS9vOiBtdmFsIHNpemUvY291bnQgKi8KLQl4ZnNfYm1hcF9mcmVlX3QJKmZsaXN0KQkJLyogaS9vOiBsaXN0IGV4dGVudHMgdG8gZnJlZSAqLworCXhmc19ibWFwX2ZyZWVfdAkqZmxpc3QsCQkvKiBpL286IGxpc3QgZXh0ZW50cyB0byBmcmVlICovCisJeGZzX2V4dGRlbHRhX3QJKmRlbHRhKQkJLyogbzogY2hhbmdlIG1hZGUgdG8gaW5jb3JlIGV4dGVudHMgKi8KIHsKIAl4ZnNfZnNibG9ja190CWFibm87CQkvKiBhbGxvY2F0ZWQgYmxvY2sgbnVtYmVyICovCiAJeGZzX2V4dGxlbl90CWFsZW47CQkvKiBhbGxvY2F0ZWQgZXh0ZW50IGxlbmd0aCAqLwpAQCAtNDY1MCw2ICs0ODI3LDEwIEBACiAJZW5kID0gYm5vICsgbGVuOwogCW9ibm8gPSBibm87CiAJYm1hLmlwID0gTlVMTDsKKwlpZiAoZGVsdGEpIHsKKwkJZGVsdGEtPnhlZF9zdGFydG9mZiA9IE5VTExGSUxFT0ZGOworCQlkZWx0YS0+eGVkX2Jsb2NrY291bnQgPSAwOworCX0KIAl3aGlsZSAoYm5vIDwgZW5kICYmIG4gPCAqbm1hcCkgewogCQkvKgogCQkgKiBSZWFkaW5nIHBhc3QgZW9mLCBhY3QgYXMgdGhvdWdoIHRoZXJlJ3MgYSBob2xlCkBAIC00ODg2LDggKzUwNjcsOCBAQAogCQkJCQlnb3QuYnJfc3RhdGUgPSBYRlNfRVhUX1VOV1JJVFRFTjsKIAkJCX0KIAkJCWVycm9yID0geGZzX2JtYXBfYWRkX2V4dGVudChpcCwgbGFzdHgsICZjdXIsICZnb3QsCi0JCQkJZmlyc3RibG9jaywgZmxpc3QsICZ0bXBfbG9nZmxhZ3MsIHdoaWNoZm9yaywKLQkJCQkoZmxhZ3MgJiBYRlNfQk1BUElfUlNWQkxPQ0tTKSk7CisJCQkJZmlyc3RibG9jaywgZmxpc3QsICZ0bXBfbG9nZmxhZ3MsIGRlbHRhLAorCQkJCXdoaWNoZm9yaywgKGZsYWdzICYgWEZTX0JNQVBJX1JTVkJMT0NLUykpOwogCQkJbG9nZmxhZ3MgfD0gdG1wX2xvZ2ZsYWdzOwogCQkJaWYgKGVycm9yKQogCQkJCWdvdG8gZXJyb3IwOwpAQCAtNDk4Myw4ICs1MTY0LDggQEAKIAkJCX0KIAkJCW12YWwtPmJyX3N0YXRlID0gWEZTX0VYVF9OT1JNOwogCQkJZXJyb3IgPSB4ZnNfYm1hcF9hZGRfZXh0ZW50KGlwLCBsYXN0eCwgJmN1ciwgbXZhbCwKLQkJCQlmaXJzdGJsb2NrLCBmbGlzdCwgJnRtcF9sb2dmbGFncywgd2hpY2hmb3JrLAotCQkJCShmbGFncyAmIFhGU19CTUFQSV9SU1ZCTE9DS1MpKTsKKwkJCQlmaXJzdGJsb2NrLCBmbGlzdCwgJnRtcF9sb2dmbGFncywgZGVsdGEsCisJCQkJd2hpY2hmb3JrLCAoZmxhZ3MgJiBYRlNfQk1BUElfUlNWQkxPQ0tTKSk7CiAJCQlsb2dmbGFncyB8PSB0bXBfbG9nZmxhZ3M7CiAJCQlpZiAoZXJyb3IpCiAJCQkJZ290byBlcnJvcjA7CkBAIC01MDczLDcgKzUyNTQsMTQgQEAKIAlBU1NFUlQoWEZTX0lGT1JLX0ZPUk1BVChpcCwgd2hpY2hmb3JrKSAhPSBYRlNfRElOT0RFX0ZNVF9CVFJFRSB8fAogCSAgICAgICBYRlNfSUZPUktfTkVYVEVOVFMoaXAsIHdoaWNoZm9yaykgPiBpZnAtPmlmX2V4dF9tYXgpOwogCWVycm9yID0gMDsKLQorCWlmIChkZWx0YSAmJiBkZWx0YS0+eGVkX3N0YXJ0b2ZmICE9IE5VTExGSUxFT0ZGKSB7CisJCS8qIEEgY2hhbmdlIHdhcyBhY3R1YWxseSBtYWRlLgorCQkgKiBOb3RlIHRoYXQgZGVsdGEtPnhlZF9ibG9ja291bnQgaXMgYW4gb2Zmc2V0IGF0IHRoaXMKKwkJICogcG9pbnQgYW5kIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIGJsb2NrIGNvdW50LgorCQkgKi8KKwkJQVNTRVJUKGRlbHRhLT54ZWRfYmxvY2tjb3VudCA+IGRlbHRhLT54ZWRfc3RhcnRvZmYpOworCQlkZWx0YS0+eGVkX2Jsb2NrY291bnQgLT0gZGVsdGEtPnhlZF9zdGFydG9mZjsKKwl9CiBlcnJvcjA6CiAJLyoKIAkgKiBMb2cgZXZlcnl0aGluZy4gIERvIHRoaXMgYWZ0ZXIgY29udmVyc2lvbiwgdGhlcmUncyBubyBwb2ludCBpbgpAQCAtNTE4NSw2ICs1MzczLDggQEAKIAl4ZnNfZnNibG9ja190CQkqZmlyc3RibG9jaywJLyogZmlyc3QgYWxsb2NhdGVkIGJsb2NrCiAJCQkJCQkgICBjb250cm9scyBhLmcuIGZvciBhbGxvY3MgKi8KIAl4ZnNfYm1hcF9mcmVlX3QJCSpmbGlzdCwJCS8qIGkvbzogbGlzdCBleHRlbnRzIHRvIGZyZWUgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhLAkJLyogbzogY2hhbmdlIG1hZGUgdG8gaW5jb3JlCisJCQkJCQkgICBleHRlbnRzICovCiAJaW50CQkJKmRvbmUpCQkvKiBzZXQgaWYgbm90IGRvbmUgeWV0ICovCiB7CiAJeGZzX2J0cmVlX2N1cl90CQkqY3VyOwkJLyogYm1hcCBidHJlZSBjdXJzb3IgKi8KQEAgLTUyNDIsNiArNTQzMiwxMCBAQAogCWJubyA9IHN0YXJ0ICsgbGVuIC0gMTsKIAllcCA9IHhmc19ibWFwX3NlYXJjaF9leHRlbnRzKGlwLCBibm8sIHdoaWNoZm9yaywgJmVvZiwgJmxhc3R4LCAmZ290LAogCQkmcHJldik7CisJaWYgKGRlbHRhKSB7CisJCWRlbHRhLT54ZWRfc3RhcnRvZmYgPSBOVUxMRklMRU9GRjsKKwkJZGVsdGEtPnhlZF9ibG9ja2NvdW50ID0gMDsKKwl9CiAJLyoKIAkgKiBDaGVjayB0byBzZWUgaWYgdGhlIGdpdmVuIGJsb2NrIG51bWJlciBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlCiAJICogZmlsZSwgYmFjayB1cCB0byB0aGUgbGFzdCBibG9jayBpZiBzby4uLgpAQCAtNTM0MCw3ICs1NTM0LDggQEAKIAkJCX0KIAkJCWRlbC5icl9zdGF0ZSA9IFhGU19FWFRfVU5XUklUVEVOOwogCQkJZXJyb3IgPSB4ZnNfYm1hcF9hZGRfZXh0ZW50KGlwLCBsYXN0eCwgJmN1ciwgJmRlbCwKLQkJCQlmaXJzdGJsb2NrLCBmbGlzdCwgJmxvZ2ZsYWdzLCBYRlNfREFUQV9GT1JLLCAwKTsKKwkJCQlmaXJzdGJsb2NrLCBmbGlzdCwgJmxvZ2ZsYWdzLCBkZWx0YSwKKwkJCQlYRlNfREFUQV9GT1JLLCAwKTsKIAkJCWlmIChlcnJvcikKIAkJCQlnb3RvIGVycm9yMDsKIAkJCWdvdG8gbm9kZWxldGU7CkBAIC01Mzk0LDcgKzU1ODksNyBAQAogCQkJCXByZXYuYnJfc3RhdGUgPSBYRlNfRVhUX1VOV1JJVFRFTjsKIAkJCQllcnJvciA9IHhmc19ibWFwX2FkZF9leHRlbnQoaXAsIGxhc3R4IC0gMSwgJmN1ciwKIAkJCQkJJnByZXYsIGZpcnN0YmxvY2ssIGZsaXN0LCAmbG9nZmxhZ3MsCi0JCQkJCVhGU19EQVRBX0ZPUkssIDApOworCQkJCQlkZWx0YSwgWEZTX0RBVEFfRk9SSywgMCk7CiAJCQkJaWYgKGVycm9yKQogCQkJCQlnb3RvIGVycm9yMDsKIAkJCQlnb3RvIG5vZGVsZXRlOwpAQCAtNTQwMyw3ICs1NTk4LDcgQEAKIAkJCQlkZWwuYnJfc3RhdGUgPSBYRlNfRVhUX1VOV1JJVFRFTjsKIAkJCQllcnJvciA9IHhmc19ibWFwX2FkZF9leHRlbnQoaXAsIGxhc3R4LCAmY3VyLAogCQkJCQkmZGVsLCBmaXJzdGJsb2NrLCBmbGlzdCwgJmxvZ2ZsYWdzLAotCQkJCQlYRlNfREFUQV9GT1JLLCAwKTsKKwkJCQkJZGVsdGEsIFhGU19EQVRBX0ZPUkssIDApOwogCQkJCWlmIChlcnJvcikKIAkJCQkJZ290byBlcnJvcjA7CiAJCQkJZ290byBub2RlbGV0ZTsKQEAgLTU0NTYsNyArNTY1MSw3IEBACiAJCQlnb3RvIGVycm9yMDsKIAkJfQogCQllcnJvciA9IHhmc19ibWFwX2RlbF9leHRlbnQoaXAsIHRwLCBsYXN0eCwgZmxpc3QsIGN1ciwgJmRlbCwKLQkJCSZ0bXBfbG9nZmxhZ3MsIHdoaWNoZm9yaywgcnN2ZCk7CisJCQkJJnRtcF9sb2dmbGFncywgZGVsdGEsIHdoaWNoZm9yaywgcnN2ZCk7CiAJCWxvZ2ZsYWdzIHw9IHRtcF9sb2dmbGFnczsKIAkJaWYgKGVycm9yKQogCQkJZ290byBlcnJvcjA7CkBAIC01NTEzLDYgKzU3MDgsMTQgQEAKIAlBU1NFUlQoaWZwLT5pZl9leHRfbWF4ID09CiAJICAgICAgIFhGU19JRk9SS19TSVpFKGlwLCB3aGljaGZvcmspIC8gKHVpbnQpc2l6ZW9mKHhmc19ibWJ0X3JlY190KSk7CiAJZXJyb3IgPSAwOworCWlmIChkZWx0YSAmJiBkZWx0YS0+eGVkX3N0YXJ0b2ZmICE9IE5VTExGSUxFT0ZGKSB7CisJCS8qIEEgY2hhbmdlIHdhcyBhY3R1YWxseSBtYWRlLgorCQkgKiBOb3RlIHRoYXQgZGVsdGEtPnhlZF9ibG9ja291bnQgaXMgYW4gb2Zmc2V0IGF0IHRoaXMKKwkJICogcG9pbnQgYW5kIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIGJsb2NrIGNvdW50LgorCQkgKi8KKwkJQVNTRVJUKGRlbHRhLT54ZWRfYmxvY2tjb3VudCA+IGRlbHRhLT54ZWRfc3RhcnRvZmYpOworCQlkZWx0YS0+eGVkX2Jsb2NrY291bnQgLT0gZGVsdGEtPnhlZF9zdGFydG9mZjsKKwl9CiBlcnJvcjA6CiAJLyoKIAkgKiBMb2cgZXZlcnl0aGluZy4gIERvIHRoaXMgYWZ0ZXIgY29udmVyc2lvbiwgdGhlcmUncyBubyBwb2ludCBpbgpAQCAtNTU1Niw3ICs1NzU5LDcgQEAKIAlfX2ludDY0X3QJCWZpeGxlbjsJCS8qIGxlbmd0aCBmb3IgLTEgY2FzZSAqLwogCWludAkJCWk7CQkvKiBleHRlbnQgbnVtYmVyICovCiAJeGZzX2lub2RlX3QJCSppcDsJCS8qIHhmcyBpbmNvcmUgaW5vZGUgcG9pbnRlciAqLwotCXZub2RlX3QJCQkqdnA7CQkvKiBjb3JyZXNwb25kaW5nIHZub2RlICovCisJYmh2X3Zub2RlX3QJCSp2cDsJCS8qIGNvcnJlc3BvbmRpbmcgdm5vZGUgKi8KIAlpbnQJCQlsb2NrOwkJLyogbG9jayBzdGF0ZSAqLwogCXhmc19ibWJ0X2lyZWNfdAkJKm1hcDsJCS8qIGJ1ZmZlciBmb3IgdXNlcidzIGRhdGEgKi8KIAl4ZnNfbW91bnRfdAkJKm1wOwkJLyogZmlsZSBzeXN0ZW0gbW91bnQgcG9pbnQgKi8KQEAgLTU2NTMsNyArNTg1Niw3IEBACiAKIAlpZiAod2hpY2hmb3JrID09IFhGU19EQVRBX0ZPUksgJiYgaXAtPmlfZGVsYXllZF9ibGtzKSB7CiAJCS8qIHhmc19mc2l6ZV90IGxhc3RfYnl0ZSA9IHhmc19maWxlX2xhc3RfYnl0ZShpcCk7ICovCi0JCVZPUF9GTFVTSF9QQUdFUyh2cCwgKHhmc19vZmZfdCkwLCAtMSwgMCwgRklfUkVNQVBGLCBlcnJvcik7CisJCWVycm9yID0gYmh2X3ZvcF9mbHVzaF9wYWdlcyh2cCwgKHhmc19vZmZfdCkwLCAtMSwgMCwgRklfUkVNQVBGKTsKIAl9CiAKIAlBU1NFUlQod2hpY2hmb3JrID09IFhGU19BVFRSX0ZPUksgfHwgaXAtPmlfZGVsYXllZF9ibGtzID09IDApOwpAQCAtNTY4OSw3ICs1ODkyLDggQEAKIAkJbm1hcCA9IChuZXhsZWZ0ID4gc3VibmV4KSA/IHN1Ym5leCA6IG5leGxlZnQ7CiAJCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIGlwLCBYRlNfQkJfVE9fRlNCVChtcCwgYm12LT5ibXZfb2Zmc2V0KSwKIAkJCQkgIFhGU19CQl9UT19GU0IobXAsIGJtdi0+Ym12X2xlbmd0aCksCi0JCQkJICBibWFwaV9mbGFncywgTlVMTCwgMCwgbWFwLCAmbm1hcCwgTlVMTCk7CisJCQkJICBibWFwaV9mbGFncywgTlVMTCwgMCwgbWFwLCAmbm1hcCwKKwkJCQkgIE5VTEwsIE5VTEwpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIHVubG9ja19hbmRfcmV0dXJuOwogCQlBU1NFUlQobm1hcCA8PSBzdWJuZXgpOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19ibWFwLmggYi9mcy94ZnMveGZzX2JtYXAuaAppbmRleCA4ZTBkNzNkLi44MGU5MzQwIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2JtYXAuaAorKysgYi9mcy94ZnMveGZzX2JtYXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMywyMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4KICAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjYsNiArMjYsMjAgQEAKIHN0cnVjdCB4ZnNfdHJhbnM7CiAKIC8qCisgKiBERUxUQTogZGVzY3JpYmUgYSBjaGFuZ2UgdG8gdGhlIGluLWNvcmUgZXh0ZW50IGxpc3QuCisgKgorICogSW50ZXJuYWxseSB0aGUgdXNlIG9mIHhlZF9ibG9ja291bnQgaXMgc29tZXdoYXQgZnVua3kuCisgKiB4ZWRfYmxvY2tjb3VudCBjb250YWlucyBhbiBvZmZzZXQgbXVjaCBvZiB0aGUgdGltZSBiZWNhdXNlIHRoaXMKKyAqIG1ha2VzIG1lcmdpbmcgY2hhbmdlcyBlYXNpZXIuICAoeGZzX2ZpbGVvZmZfdCBhbmQgeGZzX2ZpbGJsa3NfdCBhcmUKKyAqIHRoZSBzYW1lIHVuZGVybHlpbmcgdHlwZSkuCisgKi8KK3R5cGVkZWYgc3RydWN0IHhmc19leHRkZWx0YQoreworCXhmc19maWxlb2ZmX3QJCXhlZF9zdGFydG9mZjsJLyogb2Zmc2V0IG9mIHJhbmdlICovCisJeGZzX2ZpbGJsa3NfdAkJeGVkX2Jsb2NrY291bnQ7CS8qIGJsb2NrcyBpbiByYW5nZSAqLworfSB4ZnNfZXh0ZGVsdGFfdDsKKworLyoKICAqIExpc3Qgb2YgZXh0ZW50cyB0byBiZSBmcmVlICJsYXRlciIuCiAgKiBUaGUgbGlzdCBpcyBrZXB0IHNvcnRlZCBvbiB4YmZfc3RhcnRibG9jay4KICAqLwpAQCAtMjc1LDcgKzI4OSw5IEBACiAJeGZzX2V4dGxlbl90CQl0b3RhbCwJCS8qIHRvdGFsIGJsb2NrcyBuZWVkZWQgKi8KIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwkqbXZhbCwJCS8qIG91dHB1dDogbWFwIHZhbHVlcyAqLwogCWludAkJCSpubWFwLAkJLyogaS9vOiBtdmFsIHNpemUvY291bnQgKi8KLQl4ZnNfYm1hcF9mcmVlX3QJCSpmbGlzdCk7CS8qIGkvbzogbGlzdCBleHRlbnRzIHRvIGZyZWUgKi8KKwl4ZnNfYm1hcF9mcmVlX3QJCSpmbGlzdCwJCS8qIGkvbzogbGlzdCBleHRlbnRzIHRvIGZyZWUgKi8KKwl4ZnNfZXh0ZGVsdGFfdAkJKmRlbHRhKTsJLyogbzogY2hhbmdlIG1hZGUgdG8gaW5jb3JlCisJCQkJCQkgICBleHRlbnRzICovCiAKIC8qCiAgKiBNYXAgZmlsZSBibG9ja3MgdG8gZmlsZXN5c3RlbSBibG9ja3MsIHNpbXBsZSB2ZXJzaW9uLgpAQCAtMzA5LDYgKzMyNSw4IEBACiAJeGZzX2ZzYmxvY2tfdAkJKmZpcnN0YmxvY2ssCS8qIGZpcnN0IGFsbG9jYXRlZCBibG9jawogCQkJCQkJICAgY29udHJvbHMgYS5nLiBmb3IgYWxsb2NzICovCiAJeGZzX2JtYXBfZnJlZV90CQkqZmxpc3QsCQkvKiBpL286IGxpc3QgZXh0ZW50cyB0byBmcmVlICovCisJeGZzX2V4dGRlbHRhX3QJCSpkZWx0YSwJCS8qIG86IGNoYW5nZSBtYWRlIHRvIGluY29yZQorCQkJCQkJICAgZXh0ZW50cyAqLwogCWludAkJCSpkb25lKTsJCS8qIHNldCBpZiBub3QgZG9uZSB5ZXQgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYm1hcF9idHJlZS5jIGIvZnMveGZzL3hmc19ibWFwX2J0cmVlLmMKaW5kZXggYmVhNDQ3MC4uMThmYjczOCAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19ibWFwX2J0cmVlLmMKKysrIGIvZnMveGZzL3hmc19ibWFwX2J0cmVlLmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTU2OSwxMiArMTU2NywxMSBAQAogCWxibm8gPSBYRlNfREFERFJfVE9fRlNCKGFyZ3MubXAsIFhGU19CVUZfQUREUihsYnApKTsKIAlsZWZ0ID0gWEZTX0JVRl9UT19CTUJUX0JMT0NLKGxicCk7CiAJYXJncy5mc2JubyA9IGN1ci0+YmNfcHJpdmF0ZS5iLmZpcnN0YmxvY2s7CisJYXJncy5maXJzdGJsb2NrID0gYXJncy5mc2JubzsKIAlpZiAoYXJncy5mc2JubyA9PSBOVUxMRlNCTE9DSykgewogCQlhcmdzLmZzYm5vID0gbGJubzsKIAkJYXJncy50eXBlID0gWEZTX0FMTE9DVFlQRV9TVEFSVF9CTk87Ci0JfSBlbHNlIGlmIChjdXItPmJjX3ByaXZhdGUuYi5mbGlzdC0+eGJmX2xvdykKLQkJYXJncy50eXBlID0gWEZTX0FMTE9DVFlQRV9GSVJTVF9BRzsKLQllbHNlCisJfSBlbHNlCiAJCWFyZ3MudHlwZSA9IFhGU19BTExPQ1RZUEVfTkVBUl9CTk87CiAJYXJncy5tb2QgPSBhcmdzLm1pbmxlZnQgPSBhcmdzLmFsaWdubWVudCA9IGFyZ3MudG90YWwgPSBhcmdzLmlzZmwgPQogCQlhcmdzLnVzZXJkYXRhID0gYXJncy5taW5hbGlnbnNsb3AgPSAwOwpAQCAtMjM1Niw2ICsyMzUzLDcgQEAKIAkJYXJncy51c2VyZGF0YSA9IGFyZ3MubWluYWxpZ25zbG9wID0gMDsKIAlhcmdzLm1pbmxlbiA9IGFyZ3MubWF4bGVuID0gYXJncy5wcm9kID0gMTsKIAlhcmdzLndhc2RlbCA9IGN1ci0+YmNfcHJpdmF0ZS5iLmZsYWdzICYgWEZTX0JUQ1VSX0JQUlZfV0FTREVMOworCWFyZ3MuZmlyc3RibG9jayA9IGFyZ3MuZnNibm87CiAJaWYgKGFyZ3MuZnNibm8gPT0gTlVMTEZTQkxPQ0spIHsKICNpZmRlZiBERUJVRwogCQlpZiAoKGVycm9yID0geGZzX2J0cmVlX2NoZWNrX2xwdHIoY3VyLCBJTlRfR0VUKCpwcCwgQVJDSF9DT05WRVJUKSwgbGV2ZWwpKSkgewpAQCAtMjM2NSw5ICsyMzYzLDcgQEAKICNlbmRpZgogCQlhcmdzLmZzYm5vID0gSU5UX0dFVCgqcHAsIEFSQ0hfQ09OVkVSVCk7CiAJCWFyZ3MudHlwZSA9IFhGU19BTExPQ1RZUEVfU1RBUlRfQk5POwotCX0gZWxzZSBpZiAoYXJncy53YXNkZWwpCi0JCWFyZ3MudHlwZSA9IFhGU19BTExPQ1RZUEVfRklSU1RfQUc7Ci0JZWxzZQorCX0gZWxzZQogCQlhcmdzLnR5cGUgPSBYRlNfQUxMT0NUWVBFX05FQVJfQk5POwogCWlmICgoZXJyb3IgPSB4ZnNfYWxsb2NfdmV4dGVudCgmYXJncykpKSB7CiAJCVhGU19CTUJUX1RSQUNFX0NVUlNPUihjdXIsIEVSUk9SKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnRyZWUuYyBiL2ZzL3hmcy94ZnNfYnRyZWUuYwppbmRleCA1MmQ1ZDA5Li5lZTIyNTViIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2J0cmVlLmMKKysrIGIvZnMveGZzL3hmc19idHJlZS5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYyBiL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYwppbmRleCA1ZmVkMTU2Li5hNGFhNTM5IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2J1Zl9pdGVtLmMKKysrIGIvZnMveGZzL3hmc19idWZfaXRlbS5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAieGZzX2ludW0uaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2J1Zl9pdGVtLmgiCkBAIC0xMDMwLDkgKzEwMjksOSBAQAogCQlpZiAoKFhGU19CVUZfVEFSR0VUKGJwKSAhPSBsYXN0dGFyZykgfHwKIAkJICAgICh0aW1lX2FmdGVyKGppZmZpZXMsIChsYXN0dGltZSArIDUqSFopKSkpIHsKIAkJCWxhc3R0aW1lID0gamlmZmllczsKLQkJCXByZGV2KCJYRlMgd3JpdGUgZXJyb3IgaW4gZmlsZSBzeXN0ZW0gbWV0YS1kYXRhICIKLQkJCSAgICAgICJibG9jayAweCVsbHggaW4gJXMiLAotCQkJICAgICAgWEZTX0JVRl9UQVJHRVQoYnApLAorCQkJY21uX2VycihDRV9BTEVSVCwgIkRldmljZSAlcywgWEZTIG1ldGFkYXRhIHdyaXRlIGVycm9yIgorCQkJCQkiIGJsb2NrIDB4JWxseCBpbiAlcyIsCisJCQkJWEZTX0JVRlRBUkdfTkFNRShYRlNfQlVGX1RBUkdFVChicCkpLAogCQkJICAgICAgKF9fdWludDY0X3QpWEZTX0JVRl9BRERSKGJwKSwgbXAtPm1fZnNuYW1lKTsKIAkJfQogCQlsYXN0dGFyZyA9IFhGU19CVUZfVEFSR0VUKGJwKTsKQEAgLTExMDgsNyArMTEwNyw3IEBACiAJWEZTX0JVRl9FUlJPUihicCwwKTsKIAl4ZnNfYnVmdHJhY2UoIkJVRl9FUlJPUl9SRUxTRSIsIGJwKTsKIAlpZiAoISBYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkKLQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfTUVUQURBVEFfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX01FVEFfSU9fRVJST1IpOwogCS8qCiAJICogV2UgaGF2ZSB0byB1bnBpbiB0aGUgcGlubmVkIGJ1ZmZlcnMgc28gZG8gdGhlCiAJICogY2FsbGJhY2tzLgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19jYXAuaCBiL2ZzL3hmcy94ZnNfY2FwLmgKaW5kZXggZDAwMzVjNmUuLjdhMGU0ODIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfY2FwLmgKKysrIGIvZnMveGZzL3hmc19jYXAuaApAQCAtNDksMTIgKzQ5LDEyIEBACiAKICNpbmNsdWRlIDxsaW51eC9wb3NpeF9jYXBfeGF0dHIuaD4KIAotc3RydWN0IHZub2RlOworc3RydWN0IGJodl92bm9kZTsKIAotZXh0ZXJuIGludCB4ZnNfY2FwX3ZoYXNjYXAoc3RydWN0IHZub2RlICopOwotZXh0ZXJuIGludCB4ZnNfY2FwX3ZzZXQoc3RydWN0IHZub2RlICosIHZvaWQgKiwgc2l6ZV90KTsKLWV4dGVybiBpbnQgeGZzX2NhcF92Z2V0KHN0cnVjdCB2bm9kZSAqLCB2b2lkICosIHNpemVfdCk7Ci1leHRlcm4gaW50IHhmc19jYXBfdnJlbW92ZShzdHJ1Y3Qgdm5vZGUgKnZwKTsKK2V4dGVybiBpbnQgeGZzX2NhcF92aGFzY2FwKHN0cnVjdCBiaHZfdm5vZGUgKik7CitleHRlcm4gaW50IHhmc19jYXBfdnNldChzdHJ1Y3QgYmh2X3Zub2RlICosIHZvaWQgKiwgc2l6ZV90KTsKK2V4dGVybiBpbnQgeGZzX2NhcF92Z2V0KHN0cnVjdCBiaHZfdm5vZGUgKiwgdm9pZCAqLCBzaXplX3QpOworZXh0ZXJuIGludCB4ZnNfY2FwX3ZyZW1vdmUoc3RydWN0IGJodl92bm9kZSAqKTsKIAogI2RlZmluZSBfQ0FQX0VYSVNUUwkJeGZzX2NhcF92aGFzY2FwCiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGFfYnRyZWUuYyBiL2ZzL3hmcy94ZnNfZGFfYnRyZWUuYwppbmRleCA4OTg4YjkwLi4zMmFiNjFkIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2RhX2J0cmVlLmMKKysrIGIvZnMveGZzL3hmc19kYV9idHJlZS5jCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCkBAIC0zMiw3ICszMSw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC00Myw3ICs0MSw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXAuaCIKICNpbmNsdWRlICJ4ZnNfYXR0ci5oIgogI2luY2x1ZGUgInhmc19hdHRyX2xlYWYuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX2xlYWYuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9kYXRhLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfbGVhZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX2Jsb2NrLmgiCkBAIC0xNTksNyArMTU2LDcgQEAKIAltYXggPSBzdGF0ZS0+cGF0aC5hY3RpdmUgLSAxOwogCUFTU0VSVCgobWF4ID49IDApICYmIChtYXggPCBYRlNfREFfTk9ERV9NQVhERVBUSCkpOwogCUFTU0VSVChzdGF0ZS0+cGF0aC5ibGtbbWF4XS5tYWdpYyA9PSBYRlNfQVRUUl9MRUFGX01BR0lDIHx8Ci0JICAgICAgIHN0YXRlLT5wYXRoLmJsa1ttYXhdLm1hZ2ljID09IFhGU19ESVJYX0xFQUZfTUFHSUMoc3RhdGUtPm1wKSk7CisJICAgICAgIHN0YXRlLT5wYXRoLmJsa1ttYXhdLm1hZ2ljID09IFhGU19ESVIyX0xFQUZOX01BR0lDKTsKIAogCWFkZGJsayA9ICZzdGF0ZS0+cGF0aC5ibGtbbWF4XTsJCS8qIGluaXRpYWwgZHVtbXkgdmFsdWUgKi8KIAlmb3IgKGkgPSBtYXg7IChpID49IDApICYmIGFkZGJsazsgc3RhdGUtPnBhdGguYWN0aXZlLS0sIGktLSkgewpAQCAtMTk5LDM4ICsxOTYsNyBAQAogCQkJCXJldHVybihlcnJvcik7CS8qIEdST1Q6IGF0dHIgaW5jb25zaXN0ZW50ICovCiAJCQlhZGRibGsgPSBuZXdibGs7CiAJCQlicmVhazsKLQkJY2FzZSBYRlNfRElSX0xFQUZfTUFHSUM6Ci0JCQlBU1NFUlQoWEZTX0RJUl9JU19WMShzdGF0ZS0+bXApKTsKLQkJCWVycm9yID0geGZzX2Rpcl9sZWFmX3NwbGl0KHN0YXRlLCBvbGRibGssIG5ld2Jsayk7Ci0JCQlpZiAoKGVycm9yICE9IDApICYmIChlcnJvciAhPSBFTk9TUEMpKSB7Ci0JCQkJcmV0dXJuKGVycm9yKTsJLyogR1JPVDogZGlyIGlzIGluY29uc2lzdGVudCAqLwotCQkJfQotCQkJaWYgKCFlcnJvcikgewotCQkJCWFkZGJsayA9IG5ld2JsazsKLQkJCQlicmVhazsKLQkJCX0KLQkJCS8qCi0JCQkgKiBFbnRyeSB3b3VsZG4ndCBmaXQsIHNwbGl0IHRoZSBsZWFmIGFnYWluLgotCQkJICovCi0JCQlzdGF0ZS0+ZXh0cmF2YWxpZCA9IDE7Ci0JCQlpZiAoc3RhdGUtPmlubGVhZikgewotCQkJCXN0YXRlLT5leHRyYWFmdGVyID0gMDsJLyogYmVmb3JlIG5ld2JsayAqLwotCQkJCWVycm9yID0geGZzX2Rpcl9sZWFmX3NwbGl0KHN0YXRlLCBvbGRibGssCi0JCQkJCQkJICAgJnN0YXRlLT5leHRyYWJsayk7Ci0JCQkJaWYgKGVycm9yKQotCQkJCQlyZXR1cm4oZXJyb3IpOwkvKiBHUk9UOiBkaXIgaW5jb24uICovCi0JCQkJYWRkYmxrID0gbmV3YmxrOwotCQkJfSBlbHNlIHsKLQkJCQlzdGF0ZS0+ZXh0cmFhZnRlciA9IDE7CS8qIGFmdGVyIG5ld2JsayAqLwotCQkJCWVycm9yID0geGZzX2Rpcl9sZWFmX3NwbGl0KHN0YXRlLCBuZXdibGssCi0JCQkJCQkJICAgJnN0YXRlLT5leHRyYWJsayk7Ci0JCQkJaWYgKGVycm9yKQotCQkJCQlyZXR1cm4oZXJyb3IpOwkvKiBHUk9UOiBkaXIgaW5jb24uICovCi0JCQkJYWRkYmxrID0gbmV3YmxrOwotCQkJfQotCQkJYnJlYWs7CiAJCWNhc2UgWEZTX0RJUjJfTEVBRk5fTUFHSUM6Ci0JCQlBU1NFUlQoWEZTX0RJUl9JU19WMihzdGF0ZS0+bXApKTsKIAkJCWVycm9yID0geGZzX2RpcjJfbGVhZm5fc3BsaXQoc3RhdGUsIG9sZGJsaywgbmV3YmxrKTsKIAkJCWlmIChlcnJvcikKIAkJCQlyZXR1cm4gZXJyb3I7CkBAIC0zNjMsNyArMzI5LDYgQEAKIAkJc2l6ZSA9IChpbnQpKChjaGFyICopJm9sZHJvb3QtPmJ0cmVlW2JlMTZfdG9fY3B1KG9sZHJvb3QtPmhkci5jb3VudCldIC0KIAkJCSAgICAgKGNoYXIgKilvbGRyb290KTsKIAl9IGVsc2UgewotCQlBU1NFUlQoWEZTX0RJUl9JU19WMihtcCkpOwogCQlBU1NFUlQoYmUxNl90b19jcHUob2xkcm9vdC0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVIyX0xFQUZOX01BR0lDKTsKIAkJbGVhZiA9ICh4ZnNfZGlyMl9sZWFmX3QgKilvbGRyb290OwogCQlzaXplID0gKGludCkoKGNoYXIgKikmbGVhZi0+ZW50c1tiZTE2X3RvX2NwdShsZWFmLT5oZHIuY291bnQpXSAtCkBAIC0zNzksOCArMzQ0LDcgQEAKIAkgKiBTZXQgdXAgdGhlIG5ldyByb290IG5vZGUuCiAJICovCiAJZXJyb3IgPSB4ZnNfZGFfbm9kZV9jcmVhdGUoYXJncywKLQkJYXJncy0+d2hpY2hmb3JrID09IFhGU19EQVRBX0ZPUksgJiYKLQkJWEZTX0RJUl9JU19WMihtcCkgPyBtcC0+bV9kaXJsZWFmYmxrIDogMCwKKwkJKGFyZ3MtPndoaWNoZm9yayA9PSBYRlNfREFUQV9GT1JLKSA/IG1wLT5tX2RpcmxlYWZibGsgOiAwLAogCQliZTE2X3RvX2NwdShub2RlLT5oZHIubGV2ZWwpICsgMSwgJmJwLCBhcmdzLT53aGljaGZvcmspOwogCWlmIChlcnJvcikKIAkJcmV0dXJuKGVycm9yKTsKQEAgLTQyNywxMCArMzkxLDkgQEAKIAlBU1NFUlQoYmUxNl90b19jcHUobm9kZS0+aGRyLmluZm8ubWFnaWMpID09IFhGU19EQV9OT0RFX01BR0lDKTsKIAogCS8qCi0JICogV2l0aCBWMiB0aGUgZXh0cmEgYmxvY2sgaXMgZGF0YSBvciBmcmVlc3BhY2UuCisJICogV2l0aCBWMiBkaXJzIHRoZSBleHRyYSBibG9jayBpcyBkYXRhIG9yIGZyZWVzcGFjZS4KIAkgKi8KLQl1c2VleHRyYSA9IHN0YXRlLT5leHRyYXZhbGlkICYmIChYRlNfRElSX0lTX1YxKHN0YXRlLT5tcCkgfHwKLQkJCXN0YXRlLT5hcmdzLT53aGljaGZvcmsgPT0gWEZTX0FUVFJfRk9SSyk7CisJdXNlZXh0cmEgPSBzdGF0ZS0+ZXh0cmF2YWxpZCAmJiBzdGF0ZS0+YXJncy0+d2hpY2hmb3JrID09IFhGU19BVFRSX0ZPUks7CiAJbmV3Y291bnQgPSAxICsgdXNlZXh0cmE7CiAJLyoKIAkgKiBEbyB3ZSBoYXZlIHRvIHNwbGl0IHRoZSBub2RlPwpAQCAtNjI0LDcgKzU4Nyw3IEBACiAJQVNTRVJUKGJlMTZfdG9fY3B1KG5vZGUtPmhkci5pbmZvLm1hZ2ljKSA9PSBYRlNfREFfTk9ERV9NQUdJQyk7CiAJQVNTRVJUKChvbGRibGstPmluZGV4ID49IDApICYmIChvbGRibGstPmluZGV4IDw9IGJlMTZfdG9fY3B1KG5vZGUtPmhkci5jb3VudCkpKTsKIAlBU1NFUlQobmV3YmxrLT5ibGtubyAhPSAwKTsKLQlpZiAoc3RhdGUtPmFyZ3MtPndoaWNoZm9yayA9PSBYRlNfREFUQV9GT1JLICYmIFhGU19ESVJfSVNfVjIobXApKQorCWlmIChzdGF0ZS0+YXJncy0+d2hpY2hmb3JrID09IFhGU19EQVRBX0ZPUkspCiAJCUFTU0VSVChuZXdibGstPmJsa25vID49IG1wLT5tX2RpcmxlYWZibGsgJiYKIAkJICAgICAgIG5ld2Jsay0+Ymxrbm8gPCBtcC0+bV9kaXJmcmVlYmxrKTsKIApAQCAtNjcwLDcgKzYzMyw3IEBACiAJc2F2ZV9ibGsgPSAmc3RhdGUtPmFsdHBhdGguYmxrWyBzdGF0ZS0+cGF0aC5hY3RpdmUtMSBdOwogCUFTU0VSVChzdGF0ZS0+cGF0aC5ibGtbMF0ubWFnaWMgPT0gWEZTX0RBX05PREVfTUFHSUMpOwogCUFTU0VSVChkcm9wX2Jsay0+bWFnaWMgPT0gWEZTX0FUVFJfTEVBRl9NQUdJQyB8fAotCSAgICAgICBkcm9wX2Jsay0+bWFnaWMgPT0gWEZTX0RJUlhfTEVBRl9NQUdJQyhzdGF0ZS0+bXApKTsKKwkgICAgICAgZHJvcF9ibGstPm1hZ2ljID09IFhGU19ESVIyX0xFQUZOX01BR0lDKTsKIAogCS8qCiAJICogV2FsayBiYWNrIHVwIHRoZSB0cmVlIGpvaW5pbmcvZGVhbGxvY2F0aW5nIGFzIG5lY2Vzc2FyeS4KQEAgLTY5MywxNyArNjU2LDcgQEAKIAkJCQlyZXR1cm4oMCk7CiAJCQl4ZnNfYXR0cl9sZWFmX3VuYmFsYW5jZShzdGF0ZSwgZHJvcF9ibGssIHNhdmVfYmxrKTsKIAkJCWJyZWFrOwotCQljYXNlIFhGU19ESVJfTEVBRl9NQUdJQzoKLQkJCUFTU0VSVChYRlNfRElSX0lTX1YxKHN0YXRlLT5tcCkpOwotCQkJZXJyb3IgPSB4ZnNfZGlyX2xlYWZfdG9vc21hbGwoc3RhdGUsICZhY3Rpb24pOwotCQkJaWYgKGVycm9yKQotCQkJCXJldHVybihlcnJvcik7Ci0JCQlpZiAoYWN0aW9uID09IDApCi0JCQkJcmV0dXJuKDApOwotCQkJeGZzX2Rpcl9sZWFmX3VuYmFsYW5jZShzdGF0ZSwgZHJvcF9ibGssIHNhdmVfYmxrKTsKLQkJCWJyZWFrOwogCQljYXNlIFhGU19ESVIyX0xFQUZOX01BR0lDOgotCQkJQVNTRVJUKFhGU19ESVJfSVNfVjIoc3RhdGUtPm1wKSk7CiAJCQllcnJvciA9IHhmc19kaXIyX2xlYWZuX3Rvb3NtYWxsKHN0YXRlLCAmYWN0aW9uKTsKIAkJCWlmIChlcnJvcikKIAkJCQlyZXR1cm4gZXJyb3I7CkBAIC03OTAsNyArNzQzLDcgQEAKIAlBU1NFUlQoYnAgIT0gTlVMTCk7CiAJYmxraW5mbyA9IGJwLT5kYXRhOwogCWlmIChiZTE2X3RvX2NwdShvbGRyb290LT5oZHIubGV2ZWwpID09IDEpIHsKLQkJQVNTRVJUKGJlMTZfdG9fY3B1KGJsa2luZm8tPm1hZ2ljKSA9PSBYRlNfRElSWF9MRUFGX01BR0lDKHN0YXRlLT5tcCkgfHwKKwkJQVNTRVJUKGJlMTZfdG9fY3B1KGJsa2luZm8tPm1hZ2ljKSA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQyB8fAogCQkgICAgICAgYmUxNl90b19jcHUoYmxraW5mby0+bWFnaWMpID09IFhGU19BVFRSX0xFQUZfTUFHSUMpOwogCX0gZWxzZSB7CiAJCUFTU0VSVChiZTE2X3RvX2NwdShibGtpbmZvLT5tYWdpYykgPT0gWEZTX0RBX05PREVfTUFHSUMpOwpAQCAtOTUxLDE0ICs5MDQsNyBAQAogCQlpZiAoY291bnQgPT0gMCkKIAkJCXJldHVybjsKIAkJYnJlYWs7Ci0JY2FzZSBYRlNfRElSX0xFQUZfTUFHSUM6Ci0JCUFTU0VSVChYRlNfRElSX0lTX1YxKHN0YXRlLT5tcCkpOwotCQlsYXN0aGFzaCA9IHhmc19kaXJfbGVhZl9sYXN0aGFzaChibGstPmJwLCAmY291bnQpOwotCQlpZiAoY291bnQgPT0gMCkKLQkJCXJldHVybjsKLQkJYnJlYWs7CiAJY2FzZSBYRlNfRElSMl9MRUFGTl9NQUdJQzoKLQkJQVNTRVJUKFhGU19ESVJfSVNfVjIoc3RhdGUtPm1wKSk7CiAJCWxhc3RoYXNoID0geGZzX2RpcjJfbGVhZm5fbGFzdGhhc2goYmxrLT5icCwgJmNvdW50KTsKIAkJaWYgKGNvdW50ID09IDApCiAJCQlyZXR1cm47CkBAIC0xMTE3LDEwICsxMDYzLDcgQEAKIAkgKiBEZXNjZW5kIHRocnUgdGhlIEItdHJlZSBzZWFyY2hpbmcgZWFjaCBsZXZlbCBmb3IgdGhlIHJpZ2h0CiAJICogbm9kZSB0byB1c2UsIHVudGlsIHRoZSByaWdodCBoYXNodmFsIGlzIGZvdW5kLgogCSAqLwotCWlmIChhcmdzLT53aGljaGZvcmsgPT0gWEZTX0RBVEFfRk9SSyAmJiBYRlNfRElSX0lTX1YyKHN0YXRlLT5tcCkpCi0JCWJsa25vID0gc3RhdGUtPm1wLT5tX2RpcmxlYWZibGs7Ci0JZWxzZQotCQlibGtubyA9IDA7CisJYmxrbm8gPSAoYXJncy0+d2hpY2hmb3JrID09IFhGU19EQVRBX0ZPUkspPyBzdGF0ZS0+bXAtPm1fZGlybGVhZmJsayA6IDA7CiAJZm9yIChibGsgPSAmc3RhdGUtPnBhdGguYmxrWzBdLCBzdGF0ZS0+cGF0aC5hY3RpdmUgPSAxOwogCQkJIHN0YXRlLT5wYXRoLmFjdGl2ZSA8PSBYRlNfREFfTk9ERV9NQVhERVBUSDsKIAkJCSBibGsrKywgc3RhdGUtPnBhdGguYWN0aXZlKyspIHsKQEAgLTExMzcsNyArMTA4MCw3IEBACiAJCX0KIAkJY3VyciA9IGJsay0+YnAtPmRhdGE7CiAJCUFTU0VSVChiZTE2X3RvX2NwdShjdXJyLT5tYWdpYykgPT0gWEZTX0RBX05PREVfTUFHSUMgfHwKLQkJICAgICAgIGJlMTZfdG9fY3B1KGN1cnItPm1hZ2ljKSA9PSBYRlNfRElSWF9MRUFGX01BR0lDKHN0YXRlLT5tcCkgfHwKKwkJICAgICAgIGJlMTZfdG9fY3B1KGN1cnItPm1hZ2ljKSA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQyB8fAogCQkgICAgICAgYmUxNl90b19jcHUoY3Vyci0+bWFnaWMpID09IFhGU19BVFRSX0xFQUZfTUFHSUMpOwogCiAJCS8qCkBAIC0xMTkwLDE2ICsxMTMzLDEwIEBACiAJCQkJYmxrLT5pbmRleCA9IHByb2JlOwogCQkJCWJsa25vID0gYmUzMl90b19jcHUoYnRyZWUtPmJlZm9yZSk7CiAJCQl9Ci0JCX0KLQkJZWxzZSBpZiAoYmUxNl90b19jcHUoY3Vyci0+bWFnaWMpID09IFhGU19BVFRSX0xFQUZfTUFHSUMpIHsKKwkJfSBlbHNlIGlmIChiZTE2X3RvX2NwdShjdXJyLT5tYWdpYykgPT0gWEZTX0FUVFJfTEVBRl9NQUdJQykgewogCQkJYmxrLT5oYXNodmFsID0geGZzX2F0dHJfbGVhZl9sYXN0aGFzaChibGstPmJwLCBOVUxMKTsKIAkJCWJyZWFrOwotCQl9Ci0JCWVsc2UgaWYgKGJlMTZfdG9fY3B1KGN1cnItPm1hZ2ljKSA9PSBYRlNfRElSX0xFQUZfTUFHSUMpIHsKLQkJCWJsay0+aGFzaHZhbCA9IHhmc19kaXJfbGVhZl9sYXN0aGFzaChibGstPmJwLCBOVUxMKTsKLQkJCWJyZWFrOwotCQl9Ci0JCWVsc2UgaWYgKGJlMTZfdG9fY3B1KGN1cnItPm1hZ2ljKSA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQykgeworCQl9IGVsc2UgaWYgKGJlMTZfdG9fY3B1KGN1cnItPm1hZ2ljKSA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQykgewogCQkJYmxrLT5oYXNodmFsID0geGZzX2RpcjJfbGVhZm5fbGFzdGhhc2goYmxrLT5icCwgTlVMTCk7CiAJCQlicmVhazsKIAkJfQpAQCAtMTIxMiwxMiArMTE0OSw3IEBACiAJICogbmV4dCBsZWFmIGFuZCBrZWVwIHNlYXJjaGluZy4KIAkgKi8KIAlmb3IgKDs7KSB7Ci0JCWlmIChibGstPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQykgewotCQkJQVNTRVJUKFhGU19ESVJfSVNfVjEoc3RhdGUtPm1wKSk7Ci0JCQlyZXR2YWwgPSB4ZnNfZGlyX2xlYWZfbG9va3VwX2ludChibGstPmJwLCBhcmdzLAotCQkJCQkJCQkgICZibGstPmluZGV4KTsKLQkJfSBlbHNlIGlmIChibGstPm1hZ2ljID09IFhGU19ESVIyX0xFQUZOX01BR0lDKSB7Ci0JCQlBU1NFUlQoWEZTX0RJUl9JU19WMihzdGF0ZS0+bXApKTsKKwkJaWYgKGJsay0+bWFnaWMgPT0gWEZTX0RJUjJfTEVBRk5fTUFHSUMpIHsKIAkJCXJldHZhbCA9IHhmc19kaXIyX2xlYWZuX2xvb2t1cF9pbnQoYmxrLT5icCwgYXJncywKIAkJCQkJCQkmYmxrLT5pbmRleCwgc3RhdGUpOwogCQl9CkBAIC0xMjcwLDcgKzEyMDIsNyBAQAogCW9sZF9pbmZvID0gb2xkX2Jsay0+YnAtPmRhdGE7CiAJbmV3X2luZm8gPSBuZXdfYmxrLT5icC0+ZGF0YTsKIAlBU1NFUlQob2xkX2Jsay0+bWFnaWMgPT0gWEZTX0RBX05PREVfTUFHSUMgfHwKLQkgICAgICAgb2xkX2Jsay0+bWFnaWMgPT0gWEZTX0RJUlhfTEVBRl9NQUdJQyhzdGF0ZS0+bXApIHx8CisJICAgICAgIG9sZF9ibGstPm1hZ2ljID09IFhGU19ESVIyX0xFQUZOX01BR0lDIHx8CiAJICAgICAgIG9sZF9ibGstPm1hZ2ljID09IFhGU19BVFRSX0xFQUZfTUFHSUMpOwogCUFTU0VSVChvbGRfYmxrLT5tYWdpYyA9PSBiZTE2X3RvX2NwdShvbGRfaW5mby0+bWFnaWMpKTsKIAlBU1NFUlQobmV3X2Jsay0+bWFnaWMgPT0gYmUxNl90b19jcHUobmV3X2luZm8tPm1hZ2ljKSk7CkBAIC0xMjgwLDEyICsxMjEyLDcgQEAKIAljYXNlIFhGU19BVFRSX0xFQUZfTUFHSUM6CiAJCWJlZm9yZSA9IHhmc19hdHRyX2xlYWZfb3JkZXIob2xkX2Jsay0+YnAsIG5ld19ibGstPmJwKTsKIAkJYnJlYWs7Ci0JY2FzZSBYRlNfRElSX0xFQUZfTUFHSUM6Ci0JCUFTU0VSVChYRlNfRElSX0lTX1YxKHN0YXRlLT5tcCkpOwotCQliZWZvcmUgPSB4ZnNfZGlyX2xlYWZfb3JkZXIob2xkX2Jsay0+YnAsIG5ld19ibGstPmJwKTsKLQkJYnJlYWs7CiAJY2FzZSBYRlNfRElSMl9MRUFGTl9NQUdJQzoKLQkJQVNTRVJUKFhGU19ESVJfSVNfVjIoc3RhdGUtPm1wKSk7CiAJCWJlZm9yZSA9IHhmc19kaXIyX2xlYWZuX29yZGVyKG9sZF9ibGstPmJwLCBuZXdfYmxrLT5icCk7CiAJCWJyZWFrOwogCWNhc2UgWEZTX0RBX05PREVfTUFHSUM6CkBAIC0xNDA0LDcgKzEzMzEsNyBAQAogCXNhdmVfaW5mbyA9IHNhdmVfYmxrLT5icC0+ZGF0YTsKIAlkcm9wX2luZm8gPSBkcm9wX2Jsay0+YnAtPmRhdGE7CiAJQVNTRVJUKHNhdmVfYmxrLT5tYWdpYyA9PSBYRlNfREFfTk9ERV9NQUdJQyB8fAotCSAgICAgICBzYXZlX2Jsay0+bWFnaWMgPT0gWEZTX0RJUlhfTEVBRl9NQUdJQyhzdGF0ZS0+bXApIHx8CisJICAgICAgIHNhdmVfYmxrLT5tYWdpYyA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQyB8fAogCSAgICAgICBzYXZlX2Jsay0+bWFnaWMgPT0gWEZTX0FUVFJfTEVBRl9NQUdJQyk7CiAJQVNTRVJUKHNhdmVfYmxrLT5tYWdpYyA9PSBiZTE2X3RvX2NwdShzYXZlX2luZm8tPm1hZ2ljKSk7CiAJQVNTRVJUKGRyb3BfYmxrLT5tYWdpYyA9PSBiZTE2X3RvX2NwdShkcm9wX2luZm8tPm1hZ2ljKSk7CkBAIC0xNTI5LDcgKzE0NTYsNyBAQAogCQlBU1NFUlQoYmxrLT5icCAhPSBOVUxMKTsKIAkJaW5mbyA9IGJsay0+YnAtPmRhdGE7CiAJCUFTU0VSVChiZTE2X3RvX2NwdShpbmZvLT5tYWdpYykgPT0gWEZTX0RBX05PREVfTUFHSUMgfHwKLQkJICAgICAgIGJlMTZfdG9fY3B1KGluZm8tPm1hZ2ljKSA9PSBYRlNfRElSWF9MRUFGX01BR0lDKHN0YXRlLT5tcCkgfHwKKwkJICAgICAgIGJlMTZfdG9fY3B1KGluZm8tPm1hZ2ljKSA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQyB8fAogCQkgICAgICAgYmUxNl90b19jcHUoaW5mby0+bWFnaWMpID09IFhGU19BVFRSX0xFQUZfTUFHSUMpOwogCQlibGstPm1hZ2ljID0gYmUxNl90b19jcHUoaW5mby0+bWFnaWMpOwogCQlpZiAoYmxrLT5tYWdpYyA9PSBYRlNfREFfTk9ERV9NQUdJQykgewpAQCAtMTU0OCwyMCArMTQ3NSwxMyBAQAogCQkJCWJsay0+aGFzaHZhbCA9IHhmc19hdHRyX2xlYWZfbGFzdGhhc2goYmxrLT5icCwKIAkJCQkJCQkJICAgICAgTlVMTCk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIFhGU19ESVJfTEVBRl9NQUdJQzoKLQkJCQlBU1NFUlQoWEZTX0RJUl9JU19WMShzdGF0ZS0+bXApKTsKLQkJCQlibGstPmhhc2h2YWwgPSB4ZnNfZGlyX2xlYWZfbGFzdGhhc2goYmxrLT5icCwKLQkJCQkJCQkJICAgICBOVUxMKTsKLQkJCQlicmVhazsKIAkJCWNhc2UgWEZTX0RJUjJfTEVBRk5fTUFHSUM6Ci0JCQkJQVNTRVJUKFhGU19ESVJfSVNfVjIoc3RhdGUtPm1wKSk7CiAJCQkJYmxrLT5oYXNodmFsID0geGZzX2RpcjJfbGVhZm5fbGFzdGhhc2goYmxrLT5icCwKIAkJCQkJCQkJICAgICAgIE5VTEwpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlBU1NFUlQoYmxrLT5tYWdpYyA9PSBYRlNfQVRUUl9MRUFGX01BR0lDIHx8Ci0JCQkJICAgICAgIGJsay0+bWFnaWMgPT0KLQkJCQkgICAgICAgWEZTX0RJUlhfTEVBRl9NQUdJQyhzdGF0ZS0+bXApKTsKKwkJCQkgICAgICAgYmxrLT5tYWdpYyA9PSBYRlNfRElSMl9MRUFGTl9NQUdJQyk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTE2MjAsNyArMTU0MCw2IEBACiAJeGZzX2JtYnRfaXJlY190CSptYXBwOwogCXhmc19pbm9kZV90ICpkcDsKIAlpbnQgbm1hcCwgZXJyb3IsIHcsIGNvdW50LCBjLCBnb3QsIGksIG1hcGk7Ci0JeGZzX2ZzaXplX3Qgc2l6ZTsKIAl4ZnNfdHJhbnNfdCAqdHA7CiAJeGZzX21vdW50X3QgKm1wOwogCkBAIC0xNjMxLDcgKzE1NTAsNyBAQAogCS8qCiAJICogRm9yIG5ldyBkaXJlY3RvcmllcyBhZGp1c3QgdGhlIGZpbGUgb2Zmc2V0IGFuZCBibG9jayBjb3VudC4KIAkgKi8KLQlpZiAodyA9PSBYRlNfREFUQV9GT1JLICYmIFhGU19ESVJfSVNfVjIobXApKSB7CisJaWYgKHcgPT0gWEZTX0RBVEFfRk9SSykgewogCQlibm8gPSBtcC0+bV9kaXJsZWFmYmxrOwogCQljb3VudCA9IG1wLT5tX2RpcmJsa2ZzYnM7CiAJfSBlbHNlIHsKQEAgLTE2NDEsMTAgKzE1NjAsOSBAQAogCS8qCiAJICogRmluZCBhIHNwb3QgaW4gdGhlIGZpbGUgc3BhY2UgdG8gcHV0IHRoZSBuZXcgYmxvY2suCiAJICovCi0JaWYgKChlcnJvciA9IHhmc19ibWFwX2ZpcnN0X3VudXNlZCh0cCwgZHAsIGNvdW50LCAmYm5vLCB3KSkpIHsKKwlpZiAoKGVycm9yID0geGZzX2JtYXBfZmlyc3RfdW51c2VkKHRwLCBkcCwgY291bnQsICZibm8sIHcpKSkKIAkJcmV0dXJuIGVycm9yOwotCX0KLQlpZiAodyA9PSBYRlNfREFUQV9GT1JLICYmIFhGU19ESVJfSVNfVjIobXApKQorCWlmICh3ID09IFhGU19EQVRBX0ZPUkspCiAJCUFTU0VSVChibm8gPj0gbXAtPm1fZGlybGVhZmJsayAmJiBibm8gPCBtcC0+bV9kaXJmcmVlYmxrKTsKIAkvKgogCSAqIFRyeSBtYXBwaW5nIGl0IGluIG9uZSBmaWxlc3lzdGVtIGJsb2NrLgpAQCAtMTY1NSw3ICsxNTczLDcgQEAKIAkJCVhGU19CTUFQSV9BRkxBRyh3KXxYRlNfQk1BUElfV1JJVEV8WEZTX0JNQVBJX01FVEFEQVRBfAogCQkJWEZTX0JNQVBJX0NPTlRJRywKIAkJCWFyZ3MtPmZpcnN0YmxvY2ssIGFyZ3MtPnRvdGFsLCAmbWFwLCAmbm1hcCwKLQkJCWFyZ3MtPmZsaXN0KSkpIHsKKwkJCWFyZ3MtPmZsaXN0LCBOVUxMKSkpIHsKIAkJcmV0dXJuIGVycm9yOwogCX0KIAlBU1NFUlQobm1hcCA8PSAxKTsKQEAgLTE2NzYsNyArMTU5NCw4IEBACiAJCQkJCVhGU19CTUFQSV9BRkxBRyh3KXxYRlNfQk1BUElfV1JJVEV8CiAJCQkJCVhGU19CTUFQSV9NRVRBREFUQSwKIAkJCQkJYXJncy0+Zmlyc3RibG9jaywgYXJncy0+dG90YWwsCi0JCQkJCSZtYXBwW21hcGldLCAmbm1hcCwgYXJncy0+Zmxpc3QpKSkgeworCQkJCQkmbWFwcFttYXBpXSwgJm5tYXAsIGFyZ3MtPmZsaXN0LAorCQkJCQlOVUxMKSkpIHsKIAkJCQlrbWVtX2ZyZWUobWFwcCwgc2l6ZW9mKCptYXBwKSAqIGNvdW50KTsKIAkJCQlyZXR1cm4gZXJyb3I7CiAJCQl9CkBAIC0xNzA1LDE5ICsxNjI0LDYgQEAKIAlpZiAobWFwcCAhPSAmbWFwKQogCQlrbWVtX2ZyZWUobWFwcCwgc2l6ZW9mKCptYXBwKSAqIGNvdW50KTsKIAkqbmV3X2Jsa25vID0gKHhmc19kYWJsa190KWJubzsKLQkvKgotCSAqIEZvciB2ZXJzaW9uIDEgZGlyZWN0b3JpZXMsIGFkanVzdCB0aGUgZmlsZSBzaXplIGlmIGl0IGNoYW5nZWQuCi0JICovCi0JaWYgKHcgPT0gWEZTX0RBVEFfRk9SSyAmJiBYRlNfRElSX0lTX1YxKG1wKSkgewotCQlBU1NFUlQobWFwaSA9PSAxKTsKLQkJaWYgKChlcnJvciA9IHhmc19ibWFwX2xhc3Rfb2Zmc2V0KHRwLCBkcCwgJmJubywgdykpKQotCQkJcmV0dXJuIGVycm9yOwotCQlzaXplID0gWEZTX0ZTQl9UT19CKG1wLCBibm8pOwotCQlpZiAoc2l6ZSAhPSBkcC0+aV9kLmRpX3NpemUpIHsKLQkJCWRwLT5pX2QuZGlfc2l6ZSA9IHNpemU7Ci0JCQl4ZnNfdHJhbnNfbG9nX2lub2RlKHRwLCBkcCwgWEZTX0lMT0dfQ09SRSk7Ci0JCX0KLQl9CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE3NDIsNyArMTY0OCw2IEBACiAJaW50IGVycm9yLCB3LCBlbnRubywgbGV2ZWwsIGRlYWRfbGV2ZWw7CiAJeGZzX2RhX2Jsa2luZm9fdCAqZGVhZF9pbmZvLCAqc2liX2luZm87CiAJeGZzX2RhX2ludG5vZGVfdCAqcGFyX25vZGUsICpkZWFkX25vZGU7Ci0JeGZzX2Rpcl9sZWFmYmxvY2tfdCAqZGVhZF9sZWFmOwogCXhmc19kaXIyX2xlYWZfdCAqZGVhZF9sZWFmMjsKIAl4ZnNfZGFoYXNoX3QgZGVhZF9oYXNoOwogCkBAIC0xNzUzLDExICsxNjU4LDggQEAKIAl3ID0gYXJncy0+d2hpY2hmb3JrOwogCUFTU0VSVCh3ID09IFhGU19EQVRBX0ZPUkspOwogCW1wID0gaXAtPmlfbW91bnQ7Ci0JaWYgKFhGU19ESVJfSVNfVjIobXApKSB7Ci0JCWxhc3RvZmYgPSBtcC0+bV9kaXJmcmVlYmxrOwotCQllcnJvciA9IHhmc19ibWFwX2xhc3RfYmVmb3JlKHRwLCBpcCwgJmxhc3RvZmYsIHcpOwotCX0gZWxzZQotCQllcnJvciA9IHhmc19ibWFwX2xhc3Rfb2Zmc2V0KHRwLCBpcCwgJmxhc3RvZmYsIHcpOworCWxhc3RvZmYgPSBtcC0+bV9kaXJmcmVlYmxrOworCWVycm9yID0geGZzX2JtYXBfbGFzdF9iZWZvcmUodHAsIGlwLCAmbGFzdG9mZiwgdyk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAJaWYgKHVubGlrZWx5KGxhc3RvZmYgPT0gMCkpIHsKQEAgLTE3ODAsMTQgKzE2ODIsNyBAQAogCS8qCiAJICogR2V0IHZhbHVlcyBmcm9tIHRoZSBtb3ZlZCBibG9jay4KIAkgKi8KLQlpZiAoYmUxNl90b19jcHUoZGVhZF9pbmZvLT5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKSB7Ci0JCUFTU0VSVChYRlNfRElSX0lTX1YxKG1wKSk7Ci0JCWRlYWRfbGVhZiA9ICh4ZnNfZGlyX2xlYWZibG9ja190ICopZGVhZF9pbmZvOwotCQlkZWFkX2xldmVsID0gMDsKLQkJZGVhZF9oYXNoID0KLQkJCUlOVF9HRVQoZGVhZF9sZWFmLT5lbnRyaWVzW0lOVF9HRVQoZGVhZF9sZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkgLSAxXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpOwotCX0gZWxzZSBpZiAoYmUxNl90b19jcHUoZGVhZF9pbmZvLT5tYWdpYykgPT0gWEZTX0RJUjJfTEVBRk5fTUFHSUMpIHsKLQkJQVNTRVJUKFhGU19ESVJfSVNfVjIobXApKTsKKwlpZiAoYmUxNl90b19jcHUoZGVhZF9pbmZvLT5tYWdpYykgPT0gWEZTX0RJUjJfTEVBRk5fTUFHSUMpIHsKIAkJZGVhZF9sZWFmMiA9ICh4ZnNfZGlyMl9sZWFmX3QgKilkZWFkX2luZm87CiAJCWRlYWRfbGV2ZWwgPSAwOwogCQlkZWFkX2hhc2ggPSBiZTMyX3RvX2NwdShkZWFkX2xlYWYyLT5lbnRzW2JlMTZfdG9fY3B1KGRlYWRfbGVhZjItPmhkci5jb3VudCkgLSAxXS5oYXNodmFsKTsKQEAgLTE4NDIsNyArMTczNyw3IEBACiAJCXhmc19kYV9idWZfZG9uZShzaWJfYnVmKTsKIAkJc2liX2J1ZiA9IE5VTEw7CiAJfQotCXBhcl9ibGtubyA9IFhGU19ESVJfSVNfVjEobXApID8gMCA6IG1wLT5tX2RpcmxlYWZibGs7CisJcGFyX2Jsa25vID0gbXAtPm1fZGlybGVhZmJsazsKIAlsZXZlbCA9IC0xOwogCS8qCiAJICogV2FsayBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIHRoZSBwYXJlbnQgb2YgdGhlIG1vdmVkIGJsb2NrLgpAQCAtMTk0MSw4ICsxODM2LDYgQEAKIHsKIAl4ZnNfaW5vZGVfdCAqZHA7CiAJaW50IGRvbmUsIGVycm9yLCB3LCBjb3VudDsKLQl4ZnNfZmlsZW9mZl90IGJubzsKLQl4ZnNfZnNpemVfdCBzaXplOwogCXhmc190cmFuc190ICp0cDsKIAl4ZnNfbW91bnRfdCAqbXA7CiAKQEAgLTE5NTAsNyArMTg0Myw3IEBACiAJdyA9IGFyZ3MtPndoaWNoZm9yazsKIAl0cCA9IGFyZ3MtPnRyYW5zOwogCW1wID0gZHAtPmlfbW91bnQ7Ci0JaWYgKHcgPT0gWEZTX0RBVEFfRk9SSyAmJiBYRlNfRElSX0lTX1YyKG1wKSkKKwlpZiAodyA9PSBYRlNfREFUQV9GT1JLKQogCQljb3VudCA9IG1wLT5tX2RpcmJsa2ZzYnM7CiAJZWxzZQogCQljb3VudCA9IDE7CkBAIC0xOTYxLDM0ICsxODU0LDE3IEBACiAJCSAqLwogCQlpZiAoKGVycm9yID0geGZzX2J1bm1hcGkodHAsIGRwLCBkZWFkX2Jsa25vLCBjb3VudCwKIAkJCQlYRlNfQk1BUElfQUZMQUcodyl8WEZTX0JNQVBJX01FVEFEQVRBLAotCQkJCTAsIGFyZ3MtPmZpcnN0YmxvY2ssIGFyZ3MtPmZsaXN0LAorCQkJCTAsIGFyZ3MtPmZpcnN0YmxvY2ssIGFyZ3MtPmZsaXN0LCBOVUxMLAogCQkJCSZkb25lKSkgPT0gRU5PU1BDKSB7CiAJCQlpZiAodyAhPSBYRlNfREFUQV9GT1JLKQotCQkJCWdvdG8gZG9uZTsKKwkJCQlicmVhazsKIAkJCWlmICgoZXJyb3IgPSB4ZnNfZGFfc3dhcF9sYXN0YmxvY2soYXJncywgJmRlYWRfYmxrbm8sCiAJCQkJCSZkZWFkX2J1ZikpKQotCQkJCWdvdG8gZG9uZTsKLQkJfSBlbHNlIGlmIChlcnJvcikKLQkJCWdvdG8gZG9uZTsKLQkJZWxzZQorCQkJCWJyZWFrOworCQl9IGVsc2UgewogCQkJYnJlYWs7Ci0JfQotCUFTU0VSVChkb25lKTsKLQl4ZnNfZGFfYmludmFsKHRwLCBkZWFkX2J1Zik7Ci0JLyoKLQkgKiBBZGp1c3QgdGhlIGRpcmVjdG9yeSBzaXplIGZvciB2ZXJzaW9uIDEuCi0JICovCi0JaWYgKHcgPT0gWEZTX0RBVEFfRk9SSyAmJiBYRlNfRElSX0lTX1YxKG1wKSkgewotCQlpZiAoKGVycm9yID0geGZzX2JtYXBfbGFzdF9vZmZzZXQodHAsIGRwLCAmYm5vLCB3KSkpCi0JCQlyZXR1cm4gZXJyb3I7Ci0JCXNpemUgPSBYRlNfRlNCX1RPX0IoZHAtPmlfbW91bnQsIGJubyk7Ci0JCWlmIChzaXplICE9IGRwLT5pX2QuZGlfc2l6ZSkgewotCQkJZHAtPmlfZC5kaV9zaXplID0gc2l6ZTsKLQkJCXhmc190cmFuc19sb2dfaW5vZGUodHAsIGRwLCBYRlNfSUxPR19DT1JFKTsKIAkJfQogCX0KLQlyZXR1cm4gMDsKLWRvbmU6CiAJeGZzX2RhX2JpbnZhbCh0cCwgZGVhZF9idWYpOwogCXJldHVybiBlcnJvcjsKIH0KQEAgLTIwNDksMTAgKzE5MjUsNyBAQAogCXhmc19kYWJ1Zl90CSpyYnA7CiAKIAltcCA9IGRwLT5pX21vdW50OwotCWlmICh3aGljaGZvcmsgPT0gWEZTX0RBVEFfRk9SSyAmJiBYRlNfRElSX0lTX1YyKG1wKSkKLQkJbmZzYiA9IG1wLT5tX2RpcmJsa2ZzYnM7Ci0JZWxzZQotCQluZnNiID0gMTsKKwluZnNiID0gKHdoaWNoZm9yayA9PSBYRlNfREFUQV9GT1JLKSA/IG1wLT5tX2RpcmJsa2ZzYnMgOiAxOwogCW1hcHBlZGJubyA9ICptYXBwZWRibm9wOwogCS8qCiAJICogQ2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuICAtMiBtZWFucyBkb24ndCBjb21wbGFpbgpAQCAtMjA4Niw3ICsxOTU5LDcgQEAKIAkJCQkJbmZzYiwKIAkJCQkJWEZTX0JNQVBJX01FVEFEQVRBIHwKIAkJCQkJCVhGU19CTUFQSV9BRkxBRyh3aGljaGZvcmspLAotCQkJCQlOVUxMLCAwLCBtYXBwLCAmbm1hcCwgTlVMTCkpKQorCQkJCQlOVUxMLCAwLCBtYXBwLCAmbm1hcCwgTlVMTCwgTlVMTCkpKQogCQkJCWdvdG8gZXhpdDA7CiAJCX0KIAl9IGVsc2UgewpAQCAtMjE5OCw3ICsyMDcxLDYgQEAKIAkJbWFnaWMxID0gYmUzMl90b19jcHUoZGF0YS0+aGRyLm1hZ2ljKTsKIAkJaWYgKHVubGlrZWx5KAogCQkgICAgWEZTX1RFU1RfRVJST1IoKG1hZ2ljICE9IFhGU19EQV9OT0RFX01BR0lDKSAmJgotCQkJCSAgIChtYWdpYyAhPSBYRlNfRElSX0xFQUZfTUFHSUMpICYmCiAJCQkJICAgKG1hZ2ljICE9IFhGU19BVFRSX0xFQUZfTUFHSUMpICYmCiAJCQkJICAgKG1hZ2ljICE9IFhGU19ESVIyX0xFQUYxX01BR0lDKSAmJgogCQkJCSAgIChtYWdpYyAhPSBYRlNfRElSMl9MRUFGTl9NQUdJQykgJiYKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGFfYnRyZWUuaCBiL2ZzL3hmcy94ZnNfZGFfYnRyZWUuaAppbmRleCAyNDNhNzMwLi40YWI4NjVlIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2RhX2J0cmVlLmgKKysrIGIvZnMveGZzL3hmc19kYV9idHJlZS5oCkBAIC0zNiwxNCArMzYsMTAgQEAKICAqIGxldmVsIGluIHRoZSBCdHJlZSwgYW5kIHRvIGlkZW50aWZ5IHdoaWNoIHR5cGUgb2YgYmxvY2sgdGhpcyBpcy4KICAqLwogI2RlZmluZSBYRlNfREFfTk9ERV9NQUdJQwkweGZlYmUJLyogbWFnaWMgbnVtYmVyOiBub24tbGVhZiBibG9ja3MgKi8KLSNkZWZpbmUgWEZTX0RJUl9MRUFGX01BR0lDCTB4ZmVlYgkvKiBtYWdpYyBudW1iZXI6IGRpcmVjdG9yeSBsZWFmIGJsa3MgKi8KICNkZWZpbmUgWEZTX0FUVFJfTEVBRl9NQUdJQwkweGZiZWUJLyogbWFnaWMgbnVtYmVyOiBhdHRyaWJ1dGUgbGVhZiBibGtzICovCiAjZGVmaW5lCVhGU19ESVIyX0xFQUYxX01BR0lDCTB4ZDJmMQkvKiBtYWdpYyBudW1iZXI6IHYyIGRpcmxmIHNpbmdsZSBibGtzICovCiAjZGVmaW5lCVhGU19ESVIyX0xFQUZOX01BR0lDCTB4ZDJmZgkvKiBtYWdpYyBudW1iZXI6IHYyIGRpcmxmIG11bHRpIGJsa3MgKi8KIAotI2RlZmluZQlYRlNfRElSWF9MRUFGX01BR0lDKG1wKQlcCi0JKFhGU19ESVJfSVNfVjEobXApID8gWEZTX0RJUl9MRUFGX01BR0lDIDogWEZTX0RJUjJfTEVBRk5fTUFHSUMpCi0KIHR5cGVkZWYgc3RydWN0IHhmc19kYV9ibGtpbmZvIHsKIAlfX2JlMzIJCWZvcnc7CQkJLyogcHJldmlvdXMgYmxvY2sgaW4gbGlzdCAqLwogCV9fYmUzMgkJYmFjazsJCQkvKiBmb2xsb3dpbmcgYmxvY2sgaW4gbGlzdCAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kZnJhZy5jIGIvZnMveGZzL3hmc19kZnJhZy5jCmluZGV4IDQ5NjhhNjMuLjgwNTYyYjYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGZyYWcuYworKysgYi9mcy94ZnMveGZzX2RmcmFnLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDIsMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNTQsMjQgKzUyLDE0IEBACiAJeGZzX3N3YXBleHRfdAlfX3VzZXIgKnN4dSkKIHsKIAl4ZnNfc3dhcGV4dF90CSpzeHA7Ci0JeGZzX2lub2RlX3QgICAgICppcD1OVUxMLCAqdGlwPU5VTEwsICppcHNbMl07Ci0JeGZzX3RyYW5zX3QgICAgICp0cDsKKwl4ZnNfaW5vZGVfdCAgICAgKmlwPU5VTEwsICp0aXA9TlVMTDsKIAl4ZnNfbW91bnRfdCAgICAgKm1wOwotCXhmc19ic3RhdF90CSpzYnA7CiAJc3RydWN0IGZpbGUJKmZwID0gTlVMTCwgKnRmcCA9IE5VTEw7Ci0Jdm5vZGVfdAkJKnZwLCAqdHZwOwotCXN0YXRpYyB1aW50CWxvY2tfZmxhZ3MgPSBYRlNfSUxPQ0tfRVhDTCB8IFhGU19JT0xPQ0tfRVhDTDsKLQlpbnQJCWlsZl9maWVsZHMsIHRpbGZfZmllbGRzOworCWJodl92bm9kZV90CSp2cCwgKnR2cDsKIAlpbnQJCWVycm9yID0gMDsKLQl4ZnNfaWZvcmtfdAkqdGVtcGlmcCwgKmlmcCwgKnRpZnA7Ci0JX191aW50NjRfdAl0bXA7Ci0JaW50CQlhZm9ya2Jsa3MgPSAwOwotCWludAkJdGFmb3JrYmxrcyA9IDA7Ci0JY2hhcgkJbG9ja2VkID0gMDsKIAogCXN4cCA9IGttZW1fYWxsb2Moc2l6ZW9mKHhmc19zd2FwZXh0X3QpLCBLTV9NQVlGQUlMKTsKLQl0ZW1waWZwID0ga21lbV9hbGxvYyhzaXplb2YoeGZzX2lmb3JrX3QpLCBLTV9NQVlGQUlMKTsKLQlpZiAoIXN4cCB8fCAhdGVtcGlmcCkgeworCWlmICghc3hwKSB7CiAJCWVycm9yID0gWEZTX0VSUk9SKEVOT01FTSk7CiAJCWdvdG8gZXJyb3IwOwogCX0KQEAgLTExOCwxNCArMTA2LDU2IEBACiAKIAltcCA9IGlwLT5pX21vdW50OwogCi0Jc2JwID0gJnN4cC0+c3hfc3RhdDsKLQogCWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkgewogCQllcnJvciA9ICBYRlNfRVJST1IoRUlPKTsKIAkJZ290byBlcnJvcjA7CiAJfQogCi0JbG9ja2VkID0gMTsKKwllcnJvciA9IFhGU19TV0FQX0VYVEVOVFMobXAsICZpcC0+aV9pb2NvcmUsICZ0aXAtPmlfaW9jb3JlLCBzeHApOworCisgZXJyb3IwOgorCWlmIChmcCAhPSBOVUxMKQorCQlmcHV0KGZwKTsKKwlpZiAodGZwICE9IE5VTEwpCisJCWZwdXQodGZwKTsKKworCWlmIChzeHAgIT0gTlVMTCkKKwkJa21lbV9mcmVlKHN4cCwgc2l6ZW9mKHhmc19zd2FwZXh0X3QpKTsKKworCXJldHVybiBlcnJvcjsKK30KKworaW50Cit4ZnNfc3dhcF9leHRlbnRzKAorCXhmc19pbm9kZV90CSppcCwKKwl4ZnNfaW5vZGVfdAkqdGlwLAorCXhmc19zd2FwZXh0X3QJKnN4cCkKK3sKKwl4ZnNfbW91bnRfdAkqbXA7CisJeGZzX2lub2RlX3QJKmlwc1syXTsKKwl4ZnNfdHJhbnNfdAkqdHA7CisJeGZzX2JzdGF0X3QJKnNicCA9ICZzeHAtPnN4X3N0YXQ7CisJYmh2X3Zub2RlX3QJKnZwLCAqdHZwOworCXhmc19pZm9ya190CSp0ZW1waWZwLCAqaWZwLCAqdGlmcDsKKwlpbnQJCWlsZl9maWVsZHMsIHRpbGZfZmllbGRzOworCXN0YXRpYyB1aW50CWxvY2tfZmxhZ3MgPSBYRlNfSUxPQ0tfRVhDTCB8IFhGU19JT0xPQ0tfRVhDTDsKKwlpbnQJCWVycm9yID0gMDsKKwlpbnQJCWFmb3JrYmxrcyA9IDA7CisJaW50CQl0YWZvcmtibGtzID0gMDsKKwlfX3VpbnQ2NF90CXRtcDsKKwljaGFyCQlsb2NrZWQgPSAwOworCisJbXAgPSBpcC0+aV9tb3VudDsKKworCXRlbXBpZnAgPSBrbWVtX2FsbG9jKHNpemVvZih4ZnNfaWZvcmtfdCksIEtNX01BWUZBSUwpOworCWlmICghdGVtcGlmcCkgeworCQllcnJvciA9IFhGU19FUlJPUihFTk9NRU0pOworCQlnb3RvIGVycm9yMDsKKwl9CisKKwlzYnAgPSAmc3hwLT5zeF9zdGF0OworCXZwID0gWEZTX0lUT1YoaXApOworCXR2cCA9IFhGU19JVE9WKHRpcCk7CiAKIAkvKiBMb2NrIGluIGlfaW5vIG9yZGVyICovCiAJaWYgKGlwLT5pX2lubyA8IHRpcC0+aV9pbm8pIHsKQEAgLTEzNyw2ICsxNjcsNyBAQAogCX0KIAogCXhmc19sb2NrX2lub2RlcyhpcHMsIDIsIDAsIGxvY2tfZmxhZ3MpOworCWxvY2tlZCA9IDE7CiAKIAkvKiBDaGVjayBwZXJtaXNzaW9ucyAqLwogCWVycm9yID0geGZzX2lhY2Nlc3MoaXAsIFNfSVdVU1IsIE5VTEwpOwpAQCAtMTY5LDcgKzIwMCw3IEBACiAKIAlpZiAoVk5fQ0FDSEVEKHR2cCkgIT0gMCkgewogCQl4ZnNfaW52YWxfY2FjaGVkX3RyYWNlKCZ0aXAtPmlfaW9jb3JlLCAwLCAtMSwgMCwgLTEpOwotCQlWT1BfRkxVU0hJTlZBTF9QQUdFUyh0dnAsIDAsIC0xLCBGSV9SRU1BUEZfTE9DS0VEKTsKKwkJYmh2X3ZvcF9mbHVzaGludmFsX3BhZ2VzKHR2cCwgMCwgLTEsIEZJX1JFTUFQRl9MT0NLRUQpOwogCX0KIAogCS8qIFZlcmlmeSBPX0RJUkVDVCBmb3IgZnRtcCAqLwpAQCAtMjE0LDcgKzI0NSw3IEBACiAJLyogV2UgbmVlZCB0byBmYWlsIGlmIHRoZSBmaWxlIGlzIG1lbW9yeSBtYXBwZWQuICBPbmNlIHdlIGhhdmUgdG9zc2VkCiAJICogYWxsIGV4aXN0aW5nIHBhZ2VzLCB0aGUgcGFnZSBmYXVsdCB3aWxsIGhhdmUgbm8gb3B0aW9uCiAJICogYnV0IHRvIGdvIHRvIHRoZSBmaWxlc3lzdGVtIGZvciBwYWdlcy4gQnkgbWFraW5nIHRoZSBwYWdlIGZhdWx0IGNhbGwKLQkgKiBWT1BfUkVBRCAob3Igd3JpdGUgaW4gdGhlIGNhc2Ugb2YgYXV0b2dyb3cpIHRoZXkgYmxvY2sgb24gdGhlIGlvbG9jaworCSAqIHZvcF9yZWFkIChvciB3cml0ZSBpbiB0aGUgY2FzZSBvZiBhdXRvZ3JvdykgdGhleSBibG9jayBvbiB0aGUgaW9sb2NrCiAJICogdW50aWwgd2UgaGF2ZSBzd2l0Y2hlZCB0aGUgZXh0ZW50cy4KIAkgKi8KIAlpZiAoVk5fTUFQUEVEKHZwKSkgewpAQCAtMjMzLDcgKzI2NCw3IEBACiAJICogZmllbGRzIGNoYW5nZS4KIAkgKi8KIAotCVZPUF9UT1NTX1BBR0VTKHZwLCAwLCAtMSwgRklfUkVNQVBGKTsKKwliaHZfdm9wX3Rvc3NfcGFnZXModnAsIDAsIC0xLCBGSV9SRU1BUEYpOwogCiAJdHAgPSB4ZnNfdHJhbnNfYWxsb2MobXAsIFhGU19UUkFOU19TV0FQRVhUKTsKIAlpZiAoKGVycm9yID0geGZzX3RyYW5zX3Jlc2VydmUodHAsIDAsCkBAIC0zNjAsMTYgKzM5MSw3IEBACiAJCXhmc19pdW5sb2NrKGlwLCAgbG9ja19mbGFncyk7CiAJCXhmc19pdW5sb2NrKHRpcCwgbG9ja19mbGFncyk7CiAJfQotCi0JaWYgKGZwICE9IE5VTEwpCi0JCWZwdXQoZnApOwotCWlmICh0ZnAgIT0gTlVMTCkKLQkJZnB1dCh0ZnApOwotCi0JaWYgKHN4cCAhPSBOVUxMKQotCQlrbWVtX2ZyZWUoc3hwLCBzaXplb2YoeGZzX3N3YXBleHRfdCkpOwogCWlmICh0ZW1waWZwICE9IE5VTEwpCiAJCWttZW1fZnJlZSh0ZW1waWZwLCBzaXplb2YoeGZzX2lmb3JrX3QpKTsKLQogCXJldHVybiBlcnJvcjsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGZyYWcuaCBiL2ZzL3hmcy94ZnNfZGZyYWcuaAppbmRleCBmNjc4NTU5Li5kYTE3ODIwIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2RmcmFnLmgKKysrIGIvZnMveGZzL3hmc19kZnJhZy5oCkBAIC00OCw2ICs0OCw5IEBACiAgKi8KIGludAl4ZnNfc3dhcGV4dChzdHJ1Y3QgeGZzX3N3YXBleHQgX191c2VyICpzeCk7CiAKK2ludAl4ZnNfc3dhcF9leHRlbnRzKHN0cnVjdCB4ZnNfaW5vZGUgKmlwLCBzdHJ1Y3QgeGZzX2lub2RlICp0aXAsCisJCXN0cnVjdCB4ZnNfc3dhcGV4dCAqc3hwKTsKKwogI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KIAogI2VuZGlmCS8qIF9fWEZTX0RGUkFHX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaW5vZGUuaCBiL2ZzL3hmcy94ZnNfZGlub2RlLmgKaW5kZXggNzlkMGQ5ZS4uYjMzODI2OSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19kaW5vZGUuaAorKysgYi9mcy94ZnMveGZzX2Rpbm9kZS5oCkBAIC04NSw3ICs4NSw2IEBACiAJdW5pb24gewogCQl4ZnNfYm1kcl9ibG9ja190IGRpX2JtYnQ7CS8qIGJ0cmVlIHJvb3QgYmxvY2sgKi8KIAkJeGZzX2JtYnRfcmVjXzMyX3QgZGlfYm14WzFdOwkvKiBleHRlbnQgbGlzdCAqLwotCQl4ZnNfZGlyX3Nob3J0Zm9ybV90IGRpX2RpcnNmOwkvKiBzaG9ydGZvcm0gZGlyZWN0b3J5ICovCiAJCXhmc19kaXIyX3NmX3QJZGlfZGlyMnNmOwkvKiBzaG9ydGZvcm0gZGlyZWN0b3J5IHYyICovCiAJCWNoYXIJCWRpX2NbMV07CS8qIGxvY2FsIGNvbnRlbnRzICovCiAJCXhmc19kZXZfdAlkaV9kZXY7CQkvKiBkZXZpY2UgZm9yIFNfSUZDSFIvU19JRkJMSyAqLwpAQCAtMjU3LDYgKzI1Niw3IEBACiAjZGVmaW5lIFhGU19ESUZMQUdfTk9TWU1MSU5LU19CSVQgICAxMAkvKiBkaXNhbGxvdyBzeW1saW5rIGNyZWF0aW9uICovCiAjZGVmaW5lIFhGU19ESUZMQUdfRVhUU0laRV9CSVQgICAgICAxMQkvKiBpbm9kZSBleHRlbnQgc2l6ZSBhbGxvY2F0b3IgaGludCAqLwogI2RlZmluZSBYRlNfRElGTEFHX0VYVFNaSU5IRVJJVF9CSVQgMTIJLyogaW5oZXJpdCBpbm9kZSBleHRlbnQgc2l6ZSAqLworI2RlZmluZSBYRlNfRElGTEFHX05PREVGUkFHX0JJVCAgICAgMTMJLyogZG8gbm90IHJlb3JnYW5pemUvZGVmcmFnbWVudCAqLwogI2RlZmluZSBYRlNfRElGTEFHX1JFQUxUSU1FICAgICAgKDEgPDwgWEZTX0RJRkxBR19SRUFMVElNRV9CSVQpCiAjZGVmaW5lIFhGU19ESUZMQUdfUFJFQUxMT0MgICAgICAoMSA8PCBYRlNfRElGTEFHX1BSRUFMTE9DX0JJVCkKICNkZWZpbmUgWEZTX0RJRkxBR19ORVdSVEJNICAgICAgICgxIDw8IFhGU19ESUZMQUdfTkVXUlRCTV9CSVQpCkBAIC0yNzAsMTIgKzI3MCwxMyBAQAogI2RlZmluZSBYRlNfRElGTEFHX05PU1lNTElOS1MgICAgKDEgPDwgWEZTX0RJRkxBR19OT1NZTUxJTktTX0JJVCkKICNkZWZpbmUgWEZTX0RJRkxBR19FWFRTSVpFICAgICAgICgxIDw8IFhGU19ESUZMQUdfRVhUU0laRV9CSVQpCiAjZGVmaW5lIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUICAoMSA8PCBYRlNfRElGTEFHX0VYVFNaSU5IRVJJVF9CSVQpCisjZGVmaW5lIFhGU19ESUZMQUdfTk9ERUZSQUcgICAgICAoMSA8PCBYRlNfRElGTEFHX05PREVGUkFHX0JJVCkKIAogI2RlZmluZSBYRlNfRElGTEFHX0FOWSBcCiAJKFhGU19ESUZMQUdfUkVBTFRJTUUgfCBYRlNfRElGTEFHX1BSRUFMTE9DIHwgWEZTX0RJRkxBR19ORVdSVEJNIHwgXAogCSBYRlNfRElGTEFHX0lNTVVUQUJMRSB8IFhGU19ESUZMQUdfQVBQRU5EIHwgWEZTX0RJRkxBR19TWU5DIHwgXAogCSBYRlNfRElGTEFHX05PQVRJTUUgfCBYRlNfRElGTEFHX05PRFVNUCB8IFhGU19ESUZMQUdfUlRJTkhFUklUIHwgXAogCSBYRlNfRElGTEFHX1BST0pJTkhFUklUIHwgWEZTX0RJRkxBR19OT1NZTUxJTktTIHwgWEZTX0RJRkxBR19FWFRTSVpFIHwgXAotCSBYRlNfRElGTEFHX0VYVFNaSU5IRVJJVCkKKwkgWEZTX0RJRkxBR19FWFRTWklOSEVSSVQgfCBYRlNfRElGTEFHX05PREVGUkFHKQogCiAjZW5kaWYJLyogX19YRlNfRElOT0RFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXIuYyBiL2ZzL3hmcy94ZnNfZGlyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYzcwMmEuLjAwMDAwMDAKLS0tIGEvZnMveGZzL3hmc19kaXIuYworKysgL2Rldi9udWxsCkBAIC0xLDEyMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAxLDIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLgotICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gKiBJbmMuLCAgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotI2luY2x1ZGUgInhmcy5oIgotI2luY2x1ZGUgInhmc19mcy5oIgotI2luY2x1ZGUgInhmc190eXBlcy5oIgotI2luY2x1ZGUgInhmc19sb2cuaCIKLSNpbmNsdWRlICJ4ZnNfaW51bS5oIgotI2luY2x1ZGUgInhmc190cmFucy5oIgotI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyMi5oIgotI2luY2x1ZGUgInhmc19kbWFwaS5oIgotI2luY2x1ZGUgInhmc19tb3VudC5oIgotI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgotI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19hbGxvYy5oIgotI2luY2x1ZGUgInhmc19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgotI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCi0jaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgotI2luY2x1ZGUgInhmc19pbm9kZS5oIgotI2luY2x1ZGUgInhmc19ibWFwLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9sZWFmLmgiCi0jaW5jbHVkZSAieGZzX2Vycm9yLmgiCi0KLS8qCi0gKiB4ZnNfZGlyLmMKLSAqCi0gKiBQcm92aWRlIHRoZSBleHRlcm5hbCBpbnRlcmZhY2VzIHRvIG1hbmFnZSBkaXJlY3Rvcmllcy4KLSAqLwotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogRnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgdGhlIGtlcm5lbC4KLSAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotLyoKLSAqIEZ1bmN0aW9ucyBmb3IgdGhlIGRpcm9wcyBpbnRlcmZhY2VzLgotICovCi1zdGF0aWMgdm9pZAl4ZnNfZGlyX21vdW50KHN0cnVjdCB4ZnNfbW91bnQgKm1wKTsKLQotc3RhdGljIGludAl4ZnNfZGlyX2lzZW1wdHkoc3RydWN0IHhmc19pbm9kZSAqZHApOwotCi1zdGF0aWMgaW50CXhmc19kaXJfaW5pdChzdHJ1Y3QgeGZzX3RyYW5zICp0cmFucywKLQkJCSAgICAgc3RydWN0IHhmc19pbm9kZSAqZGlyLAotCQkJICAgICBzdHJ1Y3QgeGZzX2lub2RlICpwYXJlbnRfZGlyKTsKLQotc3RhdGljIGludAl4ZnNfZGlyX2NyZWF0ZW5hbWUoc3RydWN0IHhmc190cmFucyAqdHJhbnMsCi0JCQkJICAgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJICAgY2hhciAqbmFtZV9zdHJpbmcsCi0JCQkJICAgaW50IG5hbWVfbGVuLAotCQkJCSAgIHhmc19pbm9fdCBpbm9kZV9udW1iZXIsCi0JCQkJICAgeGZzX2ZzYmxvY2tfdCAqZmlyc3RibG9jaywKLQkJCQkgICB4ZnNfYm1hcF9mcmVlX3QgKmZsaXN0LAotCQkJCSAgIHhmc19leHRsZW5fdCB0b3RhbCk7Ci0KLXN0YXRpYyBpbnQJeGZzX2Rpcl9sb29rdXAoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkgICAgICAgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkgICAgICAgY2hhciAqbmFtZV9zdHJpbmcsCi0JCQkgICAgICAgaW50IG5hbWVfbGVuZ3RoLAotCQkJICAgICAgIHhmc19pbm9fdCAqaW5vZGVfbnVtYmVyKTsKLQotc3RhdGljIGludAl4ZnNfZGlyX3JlbW92ZW5hbWUoc3RydWN0IHhmc190cmFucyAqdHJhbnMsCi0JCQkJICAgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJICAgY2hhciAqbmFtZV9zdHJpbmcsCi0JCQkJICAgaW50IG5hbWVfbGVuZ3RoLAotCQkJCSAgIHhmc19pbm9fdCBpbm8sCi0JCQkJICAgeGZzX2ZzYmxvY2tfdCAqZmlyc3RibG9jaywKLQkJCQkgICB4ZnNfYm1hcF9mcmVlX3QgKmZsaXN0LAotCQkJCSAgIHhmc19leHRsZW5fdCB0b3RhbCk7Ci0KLXN0YXRpYyBpbnQJeGZzX2Rpcl9nZXRkZW50cyhzdHJ1Y3QgeGZzX3RyYW5zICp0cCwKLQkJCQkgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJIHN0cnVjdCB1aW8gKnVpb3AsCi0JCQkJIGludCAqZW9mcCk7Ci0KLXN0YXRpYyBpbnQJeGZzX2Rpcl9yZXBsYWNlKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLAotCQkJCXN0cnVjdCB4ZnNfaW5vZGUgKmRwLAotCQkJCWNoYXIgKm5hbWVfc3RyaW5nLAotCQkJCWludCBuYW1lX2xlbmd0aCwKLQkJCQl4ZnNfaW5vX3QgaW5vZGVfbnVtYmVyLAotCQkJCXhmc19mc2Jsb2NrX3QgKmZpcnN0YmxvY2ssCi0JCQkJeGZzX2JtYXBfZnJlZV90ICpmbGlzdCwKLQkJCQl4ZnNfZXh0bGVuX3QgdG90YWwpOwotCi1zdGF0aWMgaW50CXhmc19kaXJfY2FuZW50ZXIoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkJIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAotCQkJCSBjaGFyICpuYW1lX3N0cmluZywKLQkJCQkgaW50IG5hbWVfbGVuZ3RoKTsKLQotc3RhdGljIGludAl4ZnNfZGlyX3Nob3J0Zm9ybV92YWxpZGF0ZV9vbmRpc2soeGZzX21vdW50X3QgKm1wLAotCQkJCQkJICB4ZnNfZGlub2RlX3QgKmRpcCk7Ci0KLXhmc19kaXJvcHNfdCB4ZnN2MV9kaXJvcHMgPSB7Ci0JLnhkX21vdW50CQkJPSB4ZnNfZGlyX21vdW50LAotCS54ZF9pc2VtcHR5CQkJPSB4ZnNfZGlyX2lzZW1wdHksCi0JLnhkX2luaXQJCQk9IHhmc19kaXJfaW5pdCwKLQkueGRfY3JlYXRlbmFtZQkJCT0geGZzX2Rpcl9jcmVhdGVuYW1lLAotCS54ZF9sb29rdXAJCQk9IHhmc19kaXJfbG9va3VwLAotCS54ZF9yZW1vdmVuYW1lCQkJPSB4ZnNfZGlyX3JlbW92ZW5hbWUsCi0JLnhkX2dldGRlbnRzCQkJPSB4ZnNfZGlyX2dldGRlbnRzLAotCS54ZF9yZXBsYWNlCQkJPSB4ZnNfZGlyX3JlcGxhY2UsCi0JLnhkX2NhbmVudGVyCQkJPSB4ZnNfZGlyX2NhbmVudGVyLAotCS54ZF9zaG9ydGZvcm1fdmFsaWRhdGVfb25kaXNrCT0geGZzX2Rpcl9zaG9ydGZvcm1fdmFsaWRhdGVfb25kaXNrLAotCS54ZF9zaG9ydGZvcm1fdG9fc2luZ2xlCQk9IHhmc19kaXJfc2hvcnRmb3JtX3RvX2xlYWYsCi19OwotCi0vKgotICogSW50ZXJuYWwgcm91dGluZXMgd2hlbiBkaXJzaXplID09IFhGU19MQlNJWkUobXApLgotICovCi1TVEFUSUMgaW50IHhmc19kaXJfbGVhZl9sb29rdXAoeGZzX2RhX2FyZ3NfdCAqYXJncyk7Ci1TVEFUSUMgaW50IHhmc19kaXJfbGVhZl9yZW1vdmVuYW1lKHhmc19kYV9hcmdzX3QgKmFyZ3MsIGludCAqbnVtYmVyX2VudHJpZXMsCi0JCQkJCQkgaW50ICp0b3RhbF9uYW1lYnl0ZXMpOwotU1RBVElDIGludCB4ZnNfZGlyX2xlYWZfZ2V0ZGVudHMoeGZzX3RyYW5zX3QgKnRyYW5zLCB4ZnNfaW5vZGVfdCAqZHAsCi0JCQkJCSAgICAgdWlvX3QgKnVpbywgaW50ICplb2ZwLAotCQkJCQkgICAgIHhmc19kaXJlbnRfdCAqZGJwLAotCQkJCQkgICAgIHhmc19kaXJfcHV0X3QgcHV0KTsKLVNUQVRJQyBpbnQgeGZzX2Rpcl9sZWFmX3JlcGxhY2UoeGZzX2RhX2FyZ3NfdCAqYXJncyk7Ci0KLS8qCi0gKiBJbnRlcm5hbCByb3V0aW5lcyB3aGVuIGRpcnNpemUgPiBYRlNfTEJTSVpFKG1wKS4KLSAqLwotU1RBVElDIGludCB4ZnNfZGlyX25vZGVfYWRkbmFtZSh4ZnNfZGFfYXJnc190ICphcmdzKTsKLVNUQVRJQyBpbnQgeGZzX2Rpcl9ub2RlX2xvb2t1cCh4ZnNfZGFfYXJnc190ICphcmdzKTsKLVNUQVRJQyBpbnQgeGZzX2Rpcl9ub2RlX3JlbW92ZW5hbWUoeGZzX2RhX2FyZ3NfdCAqYXJncyk7Ci1TVEFUSUMgaW50IHhmc19kaXJfbm9kZV9nZXRkZW50cyh4ZnNfdHJhbnNfdCAqdHJhbnMsIHhmc19pbm9kZV90ICpkcCwKLQkJCQkJICAgICB1aW9fdCAqdWlvLCBpbnQgKmVvZnAsCi0JCQkJCSAgICAgeGZzX2RpcmVudF90ICpkYnAsCi0JCQkJCSAgICAgeGZzX2Rpcl9wdXRfdCBwdXQpOwotU1RBVElDIGludCB4ZnNfZGlyX25vZGVfcmVwbGFjZSh4ZnNfZGFfYXJnc190ICphcmdzKTsKLQotI2lmIGRlZmluZWQoWEZTX0RJUl9UUkFDRSkKLWt0cmFjZV90ICp4ZnNfZGlyX3RyYWNlX2J1ZjsKLSNlbmRpZgotCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBPdmVyYWxsIGV4dGVybmFsIGludGVyZmFjZSByb3V0aW5lcy4KLSAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQoteGZzX2RhaGFzaF90CXhmc19kaXJfaGFzaF9kb3QsIHhmc19kaXJfaGFzaF9kb3Rkb3Q7Ci0KLS8qCi0gKiBPbmUtdGltZSBzdGFydHVwIHJvdXRpbmUgY2FsbGVkIGZyb20geGZzX2luaXQoKS4KLSAqLwotdm9pZAoteGZzX2Rpcl9zdGFydHVwKHZvaWQpCi17Ci0JeGZzX2Rpcl9oYXNoX2RvdCA9IHhmc19kYV9oYXNobmFtZSgiLiIsIDEpOwotCXhmc19kaXJfaGFzaF9kb3Rkb3QgPSB4ZnNfZGFfaGFzaG5hbWUoIi4uIiwgMik7Ci19Ci0KLS8qCi0gKiBJbml0aWFsaXplIGRpcmVjdG9yeS1yZWxhdGVkIGZpZWxkcyBpbiB0aGUgbW91bnQgc3RydWN0dXJlLgotICovCi1zdGF0aWMgdm9pZAoteGZzX2Rpcl9tb3VudCh4ZnNfbW91bnRfdCAqbXApCi17Ci0JdWludCBzaG9ydGNvdW50LCBsZWFmY291bnQsIGNvdW50OwotCi0JbXAtPm1fZGlydmVyc2lvbiA9IDE7Ci0JaWYgKCEobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfQVRUUjIpKSB7Ci0JCXNob3J0Y291bnQgPSAobXAtPm1fYXR0cm9mZnNldCAtCi0JCQkJKHVpbnQpc2l6ZW9mKHhmc19kaXJfc2ZfaGRyX3QpKSAvCi0JCQkJICh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2VudHJ5X3QpOwotCQlsZWFmY291bnQgPSAoWEZTX0xCU0laRShtcCkgLQotCQkJCSh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpKSAvCi0JCQkJICgodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpICsKLQkJCQkgICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfbmFtZV90KSk7Ci0JfSBlbHNlIHsKLQkJc2hvcnRjb3VudCA9IChYRlNfQk1EUl9TUEFDRV9DQUxDKE1JTkFCVFBUUlMpIC0KLQkJCSAgICAgICh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2hkcl90KSkgLwotCQkJICAgICAgICh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2VudHJ5X3QpOwotCQlsZWFmY291bnQgPSAoWEZTX0xCU0laRShtcCkgLQotCQkJICAgICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpKSAvCi0JCQkgICAgICgodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpICsKLQkJCSAgICAgICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfbmFtZV90KSk7Ci0JfQotCWNvdW50ID0gc2hvcnRjb3VudCA+IGxlYWZjb3VudCA/IHNob3J0Y291bnQgOiBsZWFmY291bnQ7Ci0JbXAtPm1fZGlyY29va19lbG9nID0geGZzX2RhX2xvZzJfcm91bmR1cChjb3VudCArIDEpOwotCUFTU0VSVChtcC0+bV9kaXJjb29rX2Vsb2cgPD0gbXAtPm1fc2Iuc2JfYmxvY2tsb2cpOwotCW1wLT5tX2Rpcl9ub2RlX2VudHMgPSBtcC0+bV9hdHRyX25vZGVfZW50cyA9Ci0JCShYRlNfTEJTSVpFKG1wKSAtICh1aW50KXNpemVvZih4ZnNfZGFfbm9kZV9oZHJfdCkpIC8KLQkJKHVpbnQpc2l6ZW9mKHhmc19kYV9ub2RlX2VudHJ5X3QpOwotCW1wLT5tX2Rpcl9tYWdpY3BjdCA9IChYRlNfTEJTSVpFKG1wKSAqIDM3KSAvIDEwMDsKLQltcC0+bV9kaXJibGtzaXplID0gbXAtPm1fc2Iuc2JfYmxvY2tzaXplOwotCW1wLT5tX2RpcmJsa2ZzYnMgPSAxOwotfQotCi0vKgotICogUmV0dXJuIDEgaWYgZGlyZWN0b3J5IGNvbnRhaW5zIG9ubHkgIi4iIGFuZCAiLi4iLgotICovCi1zdGF0aWMgaW50Ci14ZnNfZGlyX2lzZW1wdHkoeGZzX2lub2RlX3QgKmRwKQotewotCXhmc19kaXJfc2ZfaGRyX3QgKmhkcjsKLQotCUFTU0VSVCgoZHAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKTsKLQlpZiAoZHAtPmlfZC5kaV9zaXplID09IDApCi0JCXJldHVybigxKTsKLQlpZiAoZHAtPmlfZC5kaV9zaXplID4gWEZTX0lGT1JLX0RTSVpFKGRwKSkKLQkJcmV0dXJuKDApOwotCWhkciA9ICh4ZnNfZGlyX3NmX2hkcl90ICopZHAtPmlfZGYuaWZfdTEuaWZfZGF0YTsKLQlyZXR1cm4oaGRyLT5jb3VudCA9PSAwKTsKLX0KLQotLyoKLSAqIEluaXRpYWxpemUgYSBkaXJlY3Rvcnkgd2l0aCBpdHMgIi4iIGFuZCAiLi4iIGVudHJpZXMuCi0gKi8KLXN0YXRpYyBpbnQKLXhmc19kaXJfaW5pdCh4ZnNfdHJhbnNfdCAqdHJhbnMsIHhmc19pbm9kZV90ICpkaXIsIHhmc19pbm9kZV90ICpwYXJlbnRfZGlyKQotewotCXhmc19kYV9hcmdzX3QgYXJnczsKLQlpbnQgZXJyb3I7Ci0KLQltZW1zZXQoKGNoYXIgKikmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKLQlhcmdzLmRwID0gZGlyOwotCWFyZ3MudHJhbnMgPSB0cmFuczsKLQotCUFTU0VSVCgoZGlyLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0JaWYgKChlcnJvciA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRyYW5zLT50X21vdW50cCwgcGFyZW50X2Rpci0+aV9pbm8pKSkKLQkJcmV0dXJuIGVycm9yOwotCi0JcmV0dXJuKHhmc19kaXJfc2hvcnRmb3JtX2NyZWF0ZSgmYXJncywgcGFyZW50X2Rpci0+aV9pbm8pKTsKLX0KLQotLyoKLSAqIEdlbmVyaWMgaGFuZGxlciByb3V0aW5lIHRvIGFkZCBhIG5hbWUgdG8gYSBkaXJlY3RvcnkuCi0gKiBUcmFuc2l0aW9ucyBkaXJlY3RvcnkgZnJvbSBzaG9ydGZvcm0gdG8gQnRyZWUgYXMgbmVjZXNzYXJ5LgotICovCi1zdGF0aWMgaW50CQkJCQkJCS8qIGVycm9yICovCi14ZnNfZGlyX2NyZWF0ZW5hbWUoeGZzX3RyYW5zX3QgKnRyYW5zLCB4ZnNfaW5vZGVfdCAqZHAsIGNoYXIgKm5hbWUsCi0JCSAgIGludCBuYW1lbGVuLCB4ZnNfaW5vX3QgaW51bSwgeGZzX2ZzYmxvY2tfdCAqZmlyc3RibG9jaywKLQkJICAgeGZzX2JtYXBfZnJlZV90ICpmbGlzdCwgeGZzX2V4dGxlbl90IHRvdGFsKQotewotCXhmc19kYV9hcmdzX3QgYXJnczsKLQlpbnQgcmV0dmFsLCBuZXdzaXplLCBkb25lOwotCi0JQVNTRVJUKChkcC0+aV9kLmRpX21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpOwotCi0JaWYgKChyZXR2YWwgPSB4ZnNfZGlyX2lub192YWxpZGF0ZSh0cmFucy0+dF9tb3VudHAsIGludW0pKSkKLQkJcmV0dXJuIChyZXR2YWwpOwotCi0JWEZTX1NUQVRTX0lOQyh4c19kaXJfY3JlYXRlKTsKLQkvKgotCSAqIEZpbGwgaW4gdGhlIGFyZyBzdHJ1Y3R1cmUgZm9yIHRoaXMgcmVxdWVzdC4KLQkgKi8KLQlhcmdzLm5hbWUgPSBuYW1lOwotCWFyZ3MubmFtZWxlbiA9IG5hbWVsZW47Ci0JYXJncy5oYXNodmFsID0geGZzX2RhX2hhc2huYW1lKG5hbWUsIG5hbWVsZW4pOwotCWFyZ3MuaW51bWJlciA9IGludW07Ci0JYXJncy5kcCA9IGRwOwotCWFyZ3MuZmlyc3RibG9jayA9IGZpcnN0YmxvY2s7Ci0JYXJncy5mbGlzdCA9IGZsaXN0OwotCWFyZ3MudG90YWwgPSB0b3RhbDsKLQlhcmdzLndoaWNoZm9yayA9IFhGU19EQVRBX0ZPUks7Ci0JYXJncy50cmFucyA9IHRyYW5zOwotCWFyZ3MuanVzdGNoZWNrID0gMDsKLQlhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCi0JLyoKLQkgKiBEZWNpZGUgb24gd2hhdCB3b3JrIHJvdXRpbmVzIHRvIGNhbGwgYmFzZWQgb24gdGhlIGlub2RlIHNpemUuCi0JICovCi0JZG9uZSA9IDA7Ci0JaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7Ci0JCW5ld3NpemUgPSBYRlNfRElSX1NGX0VOVFNJWkVfQllOQU1FKGFyZ3MubmFtZWxlbik7Ci0JCWlmICgoZHAtPmlfZC5kaV9zaXplICsgbmV3c2l6ZSkgPD0gWEZTX0lGT1JLX0RTSVpFKGRwKSkgewotCQkJcmV0dmFsID0geGZzX2Rpcl9zaG9ydGZvcm1fYWRkbmFtZSgmYXJncyk7Ci0JCQlkb25lID0gMTsKLQkJfSBlbHNlIHsKLQkJCWlmICh0b3RhbCA9PSAwKQotCQkJCXJldHVybiBYRlNfRVJST1IoRU5PU1BDKTsKLQkJCXJldHZhbCA9IHhmc19kaXJfc2hvcnRmb3JtX3RvX2xlYWYoJmFyZ3MpOwotCQkJZG9uZSA9IHJldHZhbCAhPSAwOwotCQl9Ci0JfQotCWlmICghZG9uZSAmJiB4ZnNfYm1hcF9vbmVfYmxvY2soZHAsIFhGU19EQVRBX0ZPUkspKSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbGVhZl9hZGRuYW1lKCZhcmdzKTsKLQkJZG9uZSA9IHJldHZhbCAhPSBFTk9TUEM7Ci0JCWlmICghZG9uZSkgewotCQkJaWYgKHRvdGFsID09IDApCi0JCQkJcmV0dXJuIFhGU19FUlJPUihFTk9TUEMpOwotCQkJcmV0dmFsID0geGZzX2Rpcl9sZWFmX3RvX25vZGUoJmFyZ3MpOwotCQkJZG9uZSA9IHJldHZhbCAhPSAwOwotCQl9Ci0JfQotCWlmICghZG9uZSkgewotCQlyZXR2YWwgPSB4ZnNfZGlyX25vZGVfYWRkbmFtZSgmYXJncyk7Ci0JfQotCXJldHVybihyZXR2YWwpOwotfQotCi0vKgotICogR2VuZXJpYyBoYW5kbGVyIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBuYW1lIGNhbiBiZSBhZGRlZCB0byBhIGRpcmVjdG9yeSwKLSAqIHdpdGhvdXQgYWRkaW5nIGFueSBibG9ja3MgdG8gdGhlIGRpcmVjdG9yeS4KLSAqLwotc3RhdGljIGludAkJCQkJCQkvKiBlcnJvciAqLwoteGZzX2Rpcl9jYW5lbnRlcih4ZnNfdHJhbnNfdCAqdHJhbnMsIHhmc19pbm9kZV90ICpkcCwgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4pCi17Ci0JeGZzX2RhX2FyZ3NfdCBhcmdzOwotCWludCByZXR2YWwsIG5ld3NpemU7Ci0KLQlBU1NFUlQoKGRwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0JLyoKLQkgKiBGaWxsIGluIHRoZSBhcmcgc3RydWN0dXJlIGZvciB0aGlzIHJlcXVlc3QuCi0JICovCi0JYXJncy5uYW1lID0gbmFtZTsKLQlhcmdzLm5hbWVsZW4gPSBuYW1lbGVuOwotCWFyZ3MuaGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShuYW1lLCBuYW1lbGVuKTsKLQlhcmdzLmludW1iZXIgPSAwOwotCWFyZ3MuZHAgPSBkcDsKLQlhcmdzLmZpcnN0YmxvY2sgPSBOVUxMOwotCWFyZ3MuZmxpc3QgPSBOVUxMOwotCWFyZ3MudG90YWwgPSAwOwotCWFyZ3Mud2hpY2hmb3JrID0gWEZTX0RBVEFfRk9SSzsKLQlhcmdzLnRyYW5zID0gdHJhbnM7Ci0JYXJncy5qdXN0Y2hlY2sgPSBhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCi0JLyoKLQkgKiBEZWNpZGUgb24gd2hhdCB3b3JrIHJvdXRpbmVzIHRvIGNhbGwgYmFzZWQgb24gdGhlIGlub2RlIHNpemUuCi0JICovCi0JaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7Ci0JCW5ld3NpemUgPSBYRlNfRElSX1NGX0VOVFNJWkVfQllOQU1FKGFyZ3MubmFtZWxlbik7Ci0JCWlmICgoZHAtPmlfZC5kaV9zaXplICsgbmV3c2l6ZSkgPD0gWEZTX0lGT1JLX0RTSVpFKGRwKSkKLQkJCXJldHZhbCA9IDA7Ci0JCWVsc2UKLQkJCXJldHZhbCA9IFhGU19FUlJPUihFTk9TUEMpOwotCX0gZWxzZSBpZiAoeGZzX2JtYXBfb25lX2Jsb2NrKGRwLCBYRlNfREFUQV9GT1JLKSkgewotCQlyZXR2YWwgPSB4ZnNfZGlyX2xlYWZfYWRkbmFtZSgmYXJncyk7Ci0JfSBlbHNlIHsKLQkJcmV0dmFsID0geGZzX2Rpcl9ub2RlX2FkZG5hbWUoJmFyZ3MpOwotCX0KLQlyZXR1cm4ocmV0dmFsKTsKLX0KLQotLyoKLSAqIEdlbmVyaWMgaGFuZGxlciByb3V0aW5lIHRvIHJlbW92ZSBhIG5hbWUgZnJvbSBhIGRpcmVjdG9yeS4KLSAqIFRyYW5zaXRpb25zIGRpcmVjdG9yeSBmcm9tIEJ0cmVlIHRvIHNob3J0Zm9ybSBhcyBuZWNlc3NhcnkuCi0gKi8KLXN0YXRpYyBpbnQJCQkJCQkJLyogZXJyb3IgKi8KLXhmc19kaXJfcmVtb3ZlbmFtZSh4ZnNfdHJhbnNfdCAqdHJhbnMsIHhmc19pbm9kZV90ICpkcCwgY2hhciAqbmFtZSwKLQkJICAgaW50IG5hbWVsZW4sIHhmc19pbm9fdCBpbm8sIHhmc19mc2Jsb2NrX3QgKmZpcnN0YmxvY2ssCi0JCSAgIHhmc19ibWFwX2ZyZWVfdCAqZmxpc3QsIHhmc19leHRsZW5fdCB0b3RhbCkKLXsKLQl4ZnNfZGFfYXJnc190IGFyZ3M7Ci0JaW50IGNvdW50LCB0b3RhbGxlbiwgbmV3c2l6ZSwgcmV0dmFsOwotCi0JQVNTRVJUKChkcC0+aV9kLmRpX21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpOwotCVhGU19TVEFUU19JTkMoeHNfZGlyX3JlbW92ZSk7Ci0JLyoKLQkgKiBGaWxsIGluIHRoZSBhcmcgc3RydWN0dXJlIGZvciB0aGlzIHJlcXVlc3QuCi0JICovCi0JYXJncy5uYW1lID0gbmFtZTsKLQlhcmdzLm5hbWVsZW4gPSBuYW1lbGVuOwotCWFyZ3MuaGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShuYW1lLCBuYW1lbGVuKTsKLQlhcmdzLmludW1iZXIgPSBpbm87Ci0JYXJncy5kcCA9IGRwOwotCWFyZ3MuZmlyc3RibG9jayA9IGZpcnN0YmxvY2s7Ci0JYXJncy5mbGlzdCA9IGZsaXN0OwotCWFyZ3MudG90YWwgPSB0b3RhbDsKLQlhcmdzLndoaWNoZm9yayA9IFhGU19EQVRBX0ZPUks7Ci0JYXJncy50cmFucyA9IHRyYW5zOwotCWFyZ3MuanVzdGNoZWNrID0gYXJncy5hZGRuYW1lID0gYXJncy5va25vZW50ID0gMDsKLQotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLwotCWlmIChkcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCkgewotCQlyZXR2YWwgPSB4ZnNfZGlyX3Nob3J0Zm9ybV9yZW1vdmVuYW1lKCZhcmdzKTsKLQl9IGVsc2UgaWYgKHhmc19ibWFwX29uZV9ibG9jayhkcCwgWEZTX0RBVEFfRk9SSykpIHsKLQkJcmV0dmFsID0geGZzX2Rpcl9sZWFmX3JlbW92ZW5hbWUoJmFyZ3MsICZjb3VudCwgJnRvdGFsbGVuKTsKLQkJaWYgKHJldHZhbCA9PSAwKSB7Ci0JCQluZXdzaXplID0gWEZTX0RJUl9TRl9BTExGSVQoY291bnQsIHRvdGFsbGVuKTsKLQkJCWlmIChuZXdzaXplIDw9IFhGU19JRk9SS19EU0laRShkcCkpIHsKLQkJCQlyZXR2YWwgPSB4ZnNfZGlyX2xlYWZfdG9fc2hvcnRmb3JtKCZhcmdzKTsKLQkJCX0KLQkJfQotCX0gZWxzZSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbm9kZV9yZW1vdmVuYW1lKCZhcmdzKTsKLQl9Ci0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLXN0YXRpYyBpbnQJCQkJCQkJLyogZXJyb3IgKi8KLXhmc19kaXJfbG9va3VwKHhmc190cmFuc190ICp0cmFucywgeGZzX2lub2RlX3QgKmRwLCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwKLQkJCQkgICB4ZnNfaW5vX3QgKmludW0pCi17Ci0JeGZzX2RhX2FyZ3NfdCBhcmdzOwotCWludCByZXR2YWw7Ci0KLQlBU1NFUlQoKGRwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0KLQlYRlNfU1RBVFNfSU5DKHhzX2Rpcl9sb29rdXApOwotCS8qCi0JICogRmlsbCBpbiB0aGUgYXJnIHN0cnVjdHVyZSBmb3IgdGhpcyByZXF1ZXN0LgotCSAqLwotCWFyZ3MubmFtZSA9IG5hbWU7Ci0JYXJncy5uYW1lbGVuID0gbmFtZWxlbjsKLQlhcmdzLmhhc2h2YWwgPSB4ZnNfZGFfaGFzaG5hbWUobmFtZSwgbmFtZWxlbik7Ci0JYXJncy5pbnVtYmVyID0gMDsKLQlhcmdzLmRwID0gZHA7Ci0JYXJncy5maXJzdGJsb2NrID0gTlVMTDsKLQlhcmdzLmZsaXN0ID0gTlVMTDsKLQlhcmdzLnRvdGFsID0gMDsKLQlhcmdzLndoaWNoZm9yayA9IFhGU19EQVRBX0ZPUks7Ci0JYXJncy50cmFucyA9IHRyYW5zOwotCWFyZ3MuanVzdGNoZWNrID0gYXJncy5hZGRuYW1lID0gMDsKLQlhcmdzLm9rbm9lbnQgPSAxOwotCi0JLyoKLQkgKiBEZWNpZGUgb24gd2hhdCB3b3JrIHJvdXRpbmVzIHRvIGNhbGwgYmFzZWQgb24gdGhlIGlub2RlIHNpemUuCi0JICovCi0JaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfc2hvcnRmb3JtX2xvb2t1cCgmYXJncyk7Ci0JfSBlbHNlIGlmICh4ZnNfYm1hcF9vbmVfYmxvY2soZHAsIFhGU19EQVRBX0ZPUkspKSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbGVhZl9sb29rdXAoJmFyZ3MpOwotCX0gZWxzZSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbm9kZV9sb29rdXAoJmFyZ3MpOwotCX0KLQlpZiAocmV0dmFsID09IEVFWElTVCkKLQkJcmV0dmFsID0gMDsKLQkqaW51bSA9IGFyZ3MuaW51bWJlcjsKLQlyZXR1cm4ocmV0dmFsKTsKLX0KLQotLyoKLSAqIEltcGxlbWVudCByZWFkZGlyLgotICovCi1zdGF0aWMgaW50CQkJCQkJCS8qIGVycm9yICovCi14ZnNfZGlyX2dldGRlbnRzKHhmc190cmFuc190ICp0cmFucywgeGZzX2lub2RlX3QgKmRwLCB1aW9fdCAqdWlvLCBpbnQgKmVvZnApCi17Ci0JeGZzX2RpcmVudF90ICpkYnA7Ci0JaW50ICBhbGlnbm1lbnQsIHJldHZhbDsKLQl4ZnNfZGlyX3B1dF90IHB1dDsKLQotCVhGU19TVEFUU19JTkMoeHNfZGlyX2dldGRlbnRzKTsKLQlBU1NFUlQoKGRwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0KLQkvKgotCSAqIElmIG91ciBjYWxsZXIgaGFzIGdpdmVuIHVzIGEgc2luZ2xlIGNvbnRpZ3VvdXMgbWVtb3J5IGJ1ZmZlciwKLQkgKiBqdXN0IHdvcmsgZGlyZWN0bHkgd2l0aGluIHRoYXQgYnVmZmVyLiAgSWYgaXQncyBpbiB1c2VyIG1lbW9yeSwKLQkgKiBsb2NrIGl0IGRvd24gZmlyc3QuCi0JICovCi0JYWxpZ25tZW50ID0gc2l6ZW9mKHhmc19vZmZfdCkgLSAxOwotCWlmICgodWlvLT51aW9faW92Y250ID09IDEpICYmCi0JICAgICgoKF9fcHNpbnRfdCl1aW8tPnVpb19pb3ZbMF0uaW92X2Jhc2UgJiBhbGlnbm1lbnQpID09IDApICYmCi0JICAgICgodWlvLT51aW9faW92WzBdLmlvdl9sZW4gJiBhbGlnbm1lbnQpID09IDApKSB7Ci0JCWRicCA9IE5VTEw7Ci0JCXB1dCA9IHhmc19kaXJfcHV0X2RpcmVudDY0X2RpcmVjdDsKLQl9IGVsc2UgewotCQlkYnAgPSBrbWVtX2FsbG9jKHNpemVvZigqZGJwKSArIE1BWE5BTUVMRU4sIEtNX1NMRUVQKTsKLQkJcHV0ID0geGZzX2Rpcl9wdXRfZGlyZW50NjRfdWlvOwotCX0KLQotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLwotCSplb2ZwID0gMDsKLQotCWlmIChkcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCkgewotCQlyZXR2YWwgPSB4ZnNfZGlyX3Nob3J0Zm9ybV9nZXRkZW50cyhkcCwgdWlvLCBlb2ZwLCBkYnAsIHB1dCk7Ci0JfSBlbHNlIGlmICh4ZnNfYm1hcF9vbmVfYmxvY2soZHAsIFhGU19EQVRBX0ZPUkspKSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbGVhZl9nZXRkZW50cyh0cmFucywgZHAsIHVpbywgZW9mcCwgZGJwLCBwdXQpOwotCX0gZWxzZSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbm9kZV9nZXRkZW50cyh0cmFucywgZHAsIHVpbywgZW9mcCwgZGJwLCBwdXQpOwotCX0KLQlpZiAoZGJwICE9IE5VTEwpCi0JCWttZW1fZnJlZShkYnAsIHNpemVvZigqZGJwKSArIE1BWE5BTUVMRU4pOwotCi0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLXN0YXRpYyBpbnQJCQkJCQkJLyogZXJyb3IgKi8KLXhmc19kaXJfcmVwbGFjZSh4ZnNfdHJhbnNfdCAqdHJhbnMsIHhmc19pbm9kZV90ICpkcCwgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sCi0JCQkJICAgIHhmc19pbm9fdCBpbnVtLCB4ZnNfZnNibG9ja190ICpmaXJzdGJsb2NrLAotCQkJCSAgICB4ZnNfYm1hcF9mcmVlX3QgKmZsaXN0LCB4ZnNfZXh0bGVuX3QgdG90YWwpCi17Ci0JeGZzX2RhX2FyZ3NfdCBhcmdzOwotCWludCByZXR2YWw7Ci0KLQlBU1NFUlQoKGRwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0KLQlpZiAoKHJldHZhbCA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRyYW5zLT50X21vdW50cCwgaW51bSkpKQotCQlyZXR1cm4gcmV0dmFsOwotCi0JLyoKLQkgKiBGaWxsIGluIHRoZSBhcmcgc3RydWN0dXJlIGZvciB0aGlzIHJlcXVlc3QuCi0JICovCi0JYXJncy5uYW1lID0gbmFtZTsKLQlhcmdzLm5hbWVsZW4gPSBuYW1lbGVuOwotCWFyZ3MuaGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShuYW1lLCBuYW1lbGVuKTsKLQlhcmdzLmludW1iZXIgPSBpbnVtOwotCWFyZ3MuZHAgPSBkcDsKLQlhcmdzLmZpcnN0YmxvY2sgPSBmaXJzdGJsb2NrOwotCWFyZ3MuZmxpc3QgPSBmbGlzdDsKLQlhcmdzLnRvdGFsID0gdG90YWw7Ci0JYXJncy53aGljaGZvcmsgPSBYRlNfREFUQV9GT1JLOwotCWFyZ3MudHJhbnMgPSB0cmFuczsKLQlhcmdzLmp1c3RjaGVjayA9IGFyZ3MuYWRkbmFtZSA9IGFyZ3Mub2tub2VudCA9IDA7Ci0KLQkvKgotCSAqIERlY2lkZSBvbiB3aGF0IHdvcmsgcm91dGluZXMgdG8gY2FsbCBiYXNlZCBvbiB0aGUgaW5vZGUgc2l6ZS4KLQkgKi8KLQlpZiAoZHAtPmlfZC5kaV9mb3JtYXQgPT0gWEZTX0RJTk9ERV9GTVRfTE9DQUwpIHsKLQkJcmV0dmFsID0geGZzX2Rpcl9zaG9ydGZvcm1fcmVwbGFjZSgmYXJncyk7Ci0JfSBlbHNlIGlmICh4ZnNfYm1hcF9vbmVfYmxvY2soZHAsIFhGU19EQVRBX0ZPUkspKSB7Ci0JCXJldHZhbCA9IHhmc19kaXJfbGVhZl9yZXBsYWNlKCZhcmdzKTsKLQl9IGVsc2UgewotCQlyZXR2YWwgPSB4ZnNfZGlyX25vZGVfcmVwbGFjZSgmYXJncyk7Ci0JfQotCi0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLXN0YXRpYyBpbnQKLXhmc19kaXJfc2hvcnRmb3JtX3ZhbGlkYXRlX29uZGlzayh4ZnNfbW91bnRfdCAqbXAsIHhmc19kaW5vZGVfdCAqZHApCi17Ci0JeGZzX2lub190CQlpbm87Ci0JaW50CQkJbmFtZWxlbl9zdW07Ci0JaW50CQkJY291bnQ7Ci0JeGZzX2Rpcl9zaG9ydGZvcm1fdAkqc2Y7Ci0JeGZzX2Rpcl9zZl9lbnRyeV90CSpzZmU7Ci0JaW50CQkJaTsKLQotCi0KLQlpZiAoKElOVF9HRVQoZHAtPmRpX2NvcmUuZGlfbW9kZSwgQVJDSF9DT05WRVJUKSAmIFNfSUZNVCkgIT0gU19JRkRJUikgewotCQlyZXR1cm4gMDsKLQl9Ci0JaWYgKElOVF9HRVQoZHAtPmRpX2NvcmUuZGlfZm9ybWF0LCBBUkNIX0NPTlZFUlQpICE9IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoSU5UX0dFVChkcC0+ZGlfY29yZS5kaV9zaXplLCBBUkNIX0NPTlZFUlQpIDwgc2l6ZW9mKHNmLT5oZHIpKSB7Ci0JCXhmc19mc19jbW5fZXJyKENFX1dBUk4sIG1wLCAiSW52YWxpZCBzaG9ydGZvcm0gc2l6ZTogZHAgMHglcCIsCi0JCQlkcCk7Ci0JCXJldHVybiAxOwotCX0KLQlzZiA9ICh4ZnNfZGlyX3Nob3J0Zm9ybV90ICopKCZkcC0+ZGlfdS5kaV9kaXJzZik7Ci0JaW5vID0gWEZTX0dFVF9ESVJfSU5POChzZi0+aGRyLnBhcmVudCk7Ci0JaWYgKHhmc19kaXJfaW5vX3ZhbGlkYXRlKG1wLCBpbm8pKQotCQlyZXR1cm4gMTsKLQotCWNvdW50ID0Jc2YtPmhkci5jb3VudDsKLQlpZiAoKGNvdW50IDwgMCkgfHwgKChjb3VudCAqIDEwKSA+IFhGU19MSVRJTk8obXApKSkgewotCQl4ZnNfZnNfY21uX2VycihDRV9XQVJOLCBtcCwKLQkJCSJJbnZhbGlkIHNob3J0Zm9ybSBjb3VudDogZHAgMHglcCIsIGRwKTsKLQkJcmV0dXJuKDEpOwotCX0KLQotCWlmIChjb3VudCA9PSAwKSB7Ci0JCXJldHVybiAwOwotCX0KLQotCW5hbWVsZW5fc3VtID0gMDsKLQlzZmUgPSAmc2YtPmxpc3RbMF07Ci0JZm9yIChpID0gc2YtPmhkci5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0JCWlubyA9IFhGU19HRVRfRElSX0lOTzgoc2ZlLT5pbnVtYmVyKTsKLQkJeGZzX2Rpcl9pbm9fdmFsaWRhdGUobXAsIGlubyk7Ci0JCWlmIChzZmUtPm5hbWVsZW4gPj0gWEZTX0xJVElOTyhtcCkpIHsKLQkJCXhmc19mc19jbW5fZXJyKENFX1dBUk4sIG1wLAotCQkJCSJJbnZhbGlkIHNob3J0Zm9ybSBuYW1lbGVuOiBkcCAweCVwIiwgZHApOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQkJbmFtZWxlbl9zdW0gKz0gc2ZlLT5uYW1lbGVuOwotCQlzZmUgPSBYRlNfRElSX1NGX05FWFRFTlRSWShzZmUpOwotCX0KLQlpZiAobmFtZWxlbl9zdW0gPj0gWEZTX0xJVElOTyhtcCkpIHsKLQkJeGZzX2ZzX2Ntbl9lcnIoQ0VfV0FSTiwgbXAsCi0JCQkiSW52YWxpZCBzaG9ydGZvcm0gbmFtZWxlbjogZHAgMHglcCIsIGRwKTsKLQkJcmV0dXJuIDE7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBFeHRlcm5hbCByb3V0aW5lcyB3aGVuIGRpcnNpemUgPT0gWEZTX0xCU0laRShkcC0+aV9tb3VudCkuCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qCi0gKiBBZGQgYSBuYW1lIHRvIHRoZSBsZWFmIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKLSAqIFRoaXMgaXMgdGhlIGV4dGVybmFsIHJvdXRpbmUuCi0gKi8KLWludAoteGZzX2Rpcl9sZWFmX2FkZG5hbWUoeGZzX2RhX2FyZ3NfdCAqYXJncykKLXsKLQlpbnQgaW5kZXgsIHJldHZhbDsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0KLQlyZXR2YWwgPSB4ZnNfZGFfcmVhZF9idWYoYXJncy0+dHJhbnMsIGFyZ3MtPmRwLCAwLCAtMSwgJmJwLAotCQkJCQkgICAgICBYRlNfREFUQV9GT1JLKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4ocmV0dmFsKTsKLQlBU1NFUlQoYnAgIT0gTlVMTCk7Ci0KLQlyZXR2YWwgPSB4ZnNfZGlyX2xlYWZfbG9va3VwX2ludChicCwgYXJncywgJmluZGV4KTsKLQlpZiAocmV0dmFsID09IEVOT0VOVCkKLQkJcmV0dmFsID0geGZzX2Rpcl9sZWFmX2FkZChicCwgYXJncywgaW5kZXgpOwotCXhmc19kYV9idWZfZG9uZShicCk7Ci0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLS8qCi0gKiBSZW1vdmUgYSBuYW1lIGZyb20gdGhlIGxlYWYgZGlyZWN0b3J5IHN0cnVjdHVyZQotICogVGhpcyBpcyB0aGUgZXh0ZXJuYWwgcm91dGluZS4KLSAqLwotU1RBVElDIGludAoteGZzX2Rpcl9sZWFmX3JlbW92ZW5hbWUoeGZzX2RhX2FyZ3NfdCAqYXJncywgaW50ICpjb3VudCwgaW50ICp0b3RhbGxlbikKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCWludCBpbmRleCwgcmV0dmFsOwotCXhmc19kYWJ1Zl90ICpicDsKLQotCXJldHZhbCA9IHhmc19kYV9yZWFkX2J1ZihhcmdzLT50cmFucywgYXJncy0+ZHAsIDAsIC0xLCAmYnAsCi0JCQkJCSAgICAgIFhGU19EQVRBX0ZPUkspOwotCWlmIChyZXR2YWwpCi0JCXJldHVybihyZXR2YWwpOwotCUFTU0VSVChicCAhPSBOVUxMKTsKLQlsZWFmID0gYnAtPmRhdGE7Ci0JQVNTRVJUKGJlMTZfdG9fY3B1KGxlYWYtPmhkci5pbmZvLm1hZ2ljKSA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCXJldHZhbCA9IHhmc19kaXJfbGVhZl9sb29rdXBfaW50KGJwLCBhcmdzLCAmaW5kZXgpOwotCWlmIChyZXR2YWwgPT0gRUVYSVNUKSB7Ci0JCSh2b2lkKXhmc19kaXJfbGVhZl9yZW1vdmUoYXJncy0+dHJhbnMsIGJwLCBpbmRleCk7Ci0JCSpjb3VudCA9IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCQkqdG90YWxsZW4gPSBJTlRfR0VUKGxlYWYtPmhkci5uYW1lYnl0ZXMsIEFSQ0hfQ09OVkVSVCk7Ci0JCXJldHZhbCA9IDA7Ci0JfQotCXhmc19kYV9idWZfZG9uZShicCk7Ci0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGEgbmFtZSBpbiBhIGxlYWYgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLSAqIFRoaXMgaXMgdGhlIGV4dGVybmFsIHJvdXRpbmUuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc19kaXJfbGVhZl9sb29rdXAoeGZzX2RhX2FyZ3NfdCAqYXJncykKLXsKLQlpbnQgaW5kZXgsIHJldHZhbDsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0KLQlyZXR2YWwgPSB4ZnNfZGFfcmVhZF9idWYoYXJncy0+dHJhbnMsIGFyZ3MtPmRwLCAwLCAtMSwgJmJwLAotCQkJCQkgICAgICBYRlNfREFUQV9GT1JLKTsKLQlpZiAocmV0dmFsKQotCQlyZXR1cm4ocmV0dmFsKTsKLQlBU1NFUlQoYnAgIT0gTlVMTCk7Ci0JcmV0dmFsID0geGZzX2Rpcl9sZWFmX2xvb2t1cF9pbnQoYnAsIGFyZ3MsICZpbmRleCk7Ci0JeGZzX2RhX2JyZWxzZShhcmdzLT50cmFucywgYnApOwotCXJldHVybihyZXR2YWwpOwotfQotCi0vKgotICogQ29weSBvdXQgZGlyZWN0b3J5IGVudHJpZXMgZm9yIGdldGRlbnRzKCksIGZvciBsZWFmIGRpcmVjdG9yaWVzLgotICovCi1TVEFUSUMgaW50Ci14ZnNfZGlyX2xlYWZfZ2V0ZGVudHMoeGZzX3RyYW5zX3QgKnRyYW5zLCB4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sCi0JCQkJICBpbnQgKmVvZnAsIHhmc19kaXJlbnRfdCAqZGJwLCB4ZnNfZGlyX3B1dF90IHB1dCkKLXsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0JaW50IHJldHZhbCwgZW9iOwotCi0JcmV0dmFsID0geGZzX2RhX3JlYWRfYnVmKGRwLT5pX3RyYW5zcCwgZHAsIDAsIC0xLCAmYnAsIFhGU19EQVRBX0ZPUkspOwotCWlmIChyZXR2YWwpCi0JCXJldHVybihyZXR2YWwpOwotCUFTU0VSVChicCAhPSBOVUxMKTsKLQlyZXR2YWwgPSB4ZnNfZGlyX2xlYWZfZ2V0ZGVudHNfaW50KGJwLCBkcCwgMCwgdWlvLCAmZW9iLCBkYnAsIHB1dCwgLTEpOwotCXhmc19kYV9icmVsc2UodHJhbnMsIGJwKTsKLQkqZW9mcCA9IChlb2IgPT0gMCk7Ci0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGEgbmFtZSBpbiBhIGxlYWYgZGlyZWN0b3J5IHN0cnVjdHVyZSwgcmVwbGFjZSB0aGUgaW5vZGUgbnVtYmVyLgotICogVGhpcyBpcyB0aGUgZXh0ZXJuYWwgcm91dGluZS4KLSAqLwotU1RBVElDIGludAoteGZzX2Rpcl9sZWFmX3JlcGxhY2UoeGZzX2RhX2FyZ3NfdCAqYXJncykKLXsKLQlpbnQgaW5kZXgsIHJldHZhbDsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0JeGZzX2lub190IGludW07Ci0JeGZzX2Rpcl9sZWFmYmxvY2tfdCAqbGVhZjsKLQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnk7Ci0JeGZzX2Rpcl9sZWFmX25hbWVfdCAqbmFtZXN0OwotCi0JaW51bSA9IGFyZ3MtPmludW1iZXI7Ci0JcmV0dmFsID0geGZzX2RhX3JlYWRfYnVmKGFyZ3MtPnRyYW5zLCBhcmdzLT5kcCwgMCwgLTEsICZicCwKLQkJCQkJICAgICAgWEZTX0RBVEFfRk9SSyk7Ci0JaWYgKHJldHZhbCkKLQkJcmV0dXJuKHJldHZhbCk7Ci0JQVNTRVJUKGJwICE9IE5VTEwpOwotCXJldHZhbCA9IHhmc19kaXJfbGVhZl9sb29rdXBfaW50KGJwLCBhcmdzLCAmaW5kZXgpOwotCWlmIChyZXR2YWwgPT0gRUVYSVNUKSB7Ci0JCWxlYWYgPSBicC0+ZGF0YTsKLQkJZW50cnkgPSAmbGVhZi0+ZW50cmllc1tpbmRleF07Ci0JCW5hbWVzdCA9IFhGU19ESVJfTEVBRl9OQU1FU1RSVUNUKGxlYWYsIElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkpOwotCQkvKiBYWFggLSByZXBsYWNlIGFzc2VydD8gKi8KLQkJWEZTX0RJUl9TRl9QVVRfRElSSU5PKCZpbnVtLCAmbmFtZXN0LT5pbnVtYmVyKTsKLQkJeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwLAotCQkgICAgWEZTX0RBX0xPR1JBTkdFKGxlYWYsIG5hbWVzdCwgc2l6ZW9mKG5hbWVzdC0+aW51bWJlcikpKTsKLQkJeGZzX2RhX2J1Zl9kb25lKGJwKTsKLQkJcmV0dmFsID0gMDsKLQl9IGVsc2UKLQkJeGZzX2RhX2JyZWxzZShhcmdzLT50cmFucywgYnApOwotCXJldHVybihyZXR2YWwpOwotfQotCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBFeHRlcm5hbCByb3V0aW5lcyB3aGVuIGRpcnNpemUgPiBYRlNfTEJTSVpFKG1wKS4KLSAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotLyoKLSAqIEFkZCBhIG5hbWUgdG8gYSBCdHJlZS1mb3JtYXQgZGlyZWN0b3J5LgotICoKLSAqIFRoaXMgd2lsbCBpbnZvbHZlIHdhbGtpbmcgZG93biB0aGUgQnRyZWUsIGFuZCBtYXkgaW52b2x2ZSBzcGxpdHRpbmcKLSAqIGxlYWYgbm9kZXMgYW5kIGV2ZW4gc3BsaXR0aW5nIGludGVybWVkaWF0ZSBub2RlcyB1cCB0byBhbmQgaW5jbHVkaW5nCi0gKiB0aGUgcm9vdCBub2RlIChhIHNwZWNpYWwgY2FzZSBvZiBhbiBpbnRlcm1lZGlhdGUgbm9kZSkuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc19kaXJfbm9kZV9hZGRuYW1lKHhmc19kYV9hcmdzX3QgKmFyZ3MpCi17Ci0JeGZzX2RhX3N0YXRlX3QgKnN0YXRlOwotCXhmc19kYV9zdGF0ZV9ibGtfdCAqYmxrOwotCWludCByZXR2YWwsIGVycm9yOwotCi0JLyoKLQkgKiBGaWxsIGluIGJ1Y2tldCBvZiBhcmd1bWVudHMvcmVzdWx0cy9jb250ZXh0IHRvIGNhcnJ5IGFyb3VuZC4KLQkgKi8KLQlzdGF0ZSA9IHhmc19kYV9zdGF0ZV9hbGxvYygpOwotCXN0YXRlLT5hcmdzID0gYXJnczsKLQlzdGF0ZS0+bXAgPSBhcmdzLT5kcC0+aV9tb3VudDsKLQlzdGF0ZS0+YmxvY2tzaXplID0gc3RhdGUtPm1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZTsKLQlzdGF0ZS0+bm9kZV9lbnRzID0gc3RhdGUtPm1wLT5tX2Rpcl9ub2RlX2VudHM7Ci0KLQkvKgotCSAqIFNlYXJjaCB0byBzZWUgaWYgbmFtZSBhbHJlYWR5IGV4aXN0cywgYW5kIGdldCBiYWNrIGEgcG9pbnRlcgotCSAqIHRvIHdoZXJlIGl0IHNob3VsZCBnby4KLQkgKi8KLQllcnJvciA9IHhmc19kYV9ub2RlX2xvb2t1cF9pbnQoc3RhdGUsICZyZXR2YWwpOwotCWlmIChlcnJvcikKLQkJcmV0dmFsID0gZXJyb3I7Ci0JaWYgKHJldHZhbCAhPSBFTk9FTlQpCi0JCWdvdG8gZXJyb3I7Ci0JYmxrID0gJnN0YXRlLT5wYXRoLmJsa1sgc3RhdGUtPnBhdGguYWN0aXZlLTEgXTsKLQlBU1NFUlQoYmxrLT5tYWdpYyA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCXJldHZhbCA9IHhmc19kaXJfbGVhZl9hZGQoYmxrLT5icCwgYXJncywgYmxrLT5pbmRleCk7Ci0JaWYgKHJldHZhbCA9PSAwKSB7Ci0JCS8qCi0JCSAqIEFkZGl0aW9uIHN1Y2NlZWRlZCwgdXBkYXRlIEJ0cmVlIGhhc2h2YWxzLgotCQkgKi8KLQkJaWYgKCFhcmdzLT5qdXN0Y2hlY2spCi0JCQl4ZnNfZGFfZml4aGFzaHBhdGgoc3RhdGUsICZzdGF0ZS0+cGF0aCk7Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogQWRkaXRpb24gZmFpbGVkLCBzcGxpdCBhcyBtYW55IEJ0cmVlIGVsZW1lbnRzIGFzIHJlcXVpcmVkLgotCQkgKi8KLQkJaWYgKGFyZ3MtPnRvdGFsID09IDApIHsKLQkJCUFTU0VSVChyZXR2YWwgPT0gRU5PU1BDKTsKLQkJCWdvdG8gZXJyb3I7Ci0JCX0KLQkJcmV0dmFsID0geGZzX2RhX3NwbGl0KHN0YXRlKTsKLQl9Ci1lcnJvcjoKLQl4ZnNfZGFfc3RhdGVfZnJlZShzdGF0ZSk7Ci0KLQlyZXR1cm4ocmV0dmFsKTsKLX0KLQotLyoKLSAqIFJlbW92ZSBhIG5hbWUgZnJvbSBhIEItdHJlZSBkaXJlY3RvcnkuCi0gKgotICogVGhpcyB3aWxsIGludm9sdmUgd2Fsa2luZyBkb3duIHRoZSBCdHJlZSwgYW5kIG1heSBpbnZvbHZlIGpvaW5pbmcKLSAqIGxlYWYgbm9kZXMgYW5kIGV2ZW4gam9pbmluZyBpbnRlcm1lZGlhdGUgbm9kZXMgdXAgdG8gYW5kIGluY2x1ZGluZwotICogdGhlIHJvb3Qgbm9kZSAoYSBzcGVjaWFsIGNhc2Ugb2YgYW4gaW50ZXJtZWRpYXRlIG5vZGUpLgotICovCi1TVEFUSUMgaW50Ci14ZnNfZGlyX25vZGVfcmVtb3ZlbmFtZSh4ZnNfZGFfYXJnc190ICphcmdzKQotewotCXhmc19kYV9zdGF0ZV90ICpzdGF0ZTsKLQl4ZnNfZGFfc3RhdGVfYmxrX3QgKmJsazsKLQlpbnQgcmV0dmFsLCBlcnJvcjsKLQotCXN0YXRlID0geGZzX2RhX3N0YXRlX2FsbG9jKCk7Ci0Jc3RhdGUtPmFyZ3MgPSBhcmdzOwotCXN0YXRlLT5tcCA9IGFyZ3MtPmRwLT5pX21vdW50OwotCXN0YXRlLT5ibG9ja3NpemUgPSBzdGF0ZS0+bXAtPm1fc2Iuc2JfYmxvY2tzaXplOwotCXN0YXRlLT5ub2RlX2VudHMgPSBzdGF0ZS0+bXAtPm1fZGlyX25vZGVfZW50czsKLQotCS8qCi0JICogU2VhcmNoIHRvIHNlZSBpZiBuYW1lIGV4aXN0cywgYW5kIGdldCBiYWNrIGEgcG9pbnRlciB0byBpdC4KLQkgKi8KLQllcnJvciA9IHhmc19kYV9ub2RlX2xvb2t1cF9pbnQoc3RhdGUsICZyZXR2YWwpOwotCWlmIChlcnJvcikKLQkJcmV0dmFsID0gZXJyb3I7Ci0JaWYgKHJldHZhbCAhPSBFRVhJU1QpIHsKLQkJeGZzX2RhX3N0YXRlX2ZyZWUoc3RhdGUpOwotCQlyZXR1cm4ocmV0dmFsKTsKLQl9Ci0KLQkvKgotCSAqIFJlbW92ZSB0aGUgbmFtZSBhbmQgdXBkYXRlIHRoZSBoYXNodmFscyBpbiB0aGUgdHJlZS4KLQkgKi8KLQlibGsgPSAmc3RhdGUtPnBhdGguYmxrWyBzdGF0ZS0+cGF0aC5hY3RpdmUtMSBdOwotCUFTU0VSVChibGstPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JcmV0dmFsID0geGZzX2Rpcl9sZWFmX3JlbW92ZShhcmdzLT50cmFucywgYmxrLT5icCwgYmxrLT5pbmRleCk7Ci0JeGZzX2RhX2ZpeGhhc2hwYXRoKHN0YXRlLCAmc3RhdGUtPnBhdGgpOwotCi0JLyoKLQkgKiBDaGVjayB0byBzZWUgaWYgdGhlIHRyZWUgbmVlZHMgdG8gYmUgY29sbGFwc2VkLgotCSAqLwotCWVycm9yID0gMDsKLQlpZiAocmV0dmFsKSB7Ci0JCWVycm9yID0geGZzX2RhX2pvaW4oc3RhdGUpOwotCX0KLQotCXhmc19kYV9zdGF0ZV9mcmVlKHN0YXRlKTsKLQlpZiAoZXJyb3IpCi0JCXJldHVybihlcnJvcik7Ci0JcmV0dXJuKDApOwotfQotCi0vKgotICogTG9vayB1cCBhIGZpbGVuYW1lIGluIGEgaW50IGRpcmVjdG9yeS4KLSAqIFVzZSBhbiBpbnRlcm5hbCByb3V0aW5lIHRvIGFjdHVhbGx5IGRvIGFsbCB0aGUgd29yay4KLSAqLwotU1RBVElDIGludAoteGZzX2Rpcl9ub2RlX2xvb2t1cCh4ZnNfZGFfYXJnc190ICphcmdzKQotewotCXhmc19kYV9zdGF0ZV90ICpzdGF0ZTsKLQlpbnQgcmV0dmFsLCBlcnJvciwgaTsKLQotCXN0YXRlID0geGZzX2RhX3N0YXRlX2FsbG9jKCk7Ci0Jc3RhdGUtPmFyZ3MgPSBhcmdzOwotCXN0YXRlLT5tcCA9IGFyZ3MtPmRwLT5pX21vdW50OwotCXN0YXRlLT5ibG9ja3NpemUgPSBzdGF0ZS0+bXAtPm1fc2Iuc2JfYmxvY2tzaXplOwotCXN0YXRlLT5ub2RlX2VudHMgPSBzdGF0ZS0+bXAtPm1fZGlyX25vZGVfZW50czsKLQotCS8qCi0JICogU2VhcmNoIHRvIHNlZSBpZiBuYW1lIGV4aXN0cywKLQkgKiBhbmQgZ2V0IGJhY2sgYSBwb2ludGVyIHRvIGl0LgotCSAqLwotCWVycm9yID0geGZzX2RhX25vZGVfbG9va3VwX2ludChzdGF0ZSwgJnJldHZhbCk7Ci0JaWYgKGVycm9yKSB7Ci0JCXJldHZhbCA9IGVycm9yOwotCX0KLQotCS8qCi0JICogSWYgbm90IGluIGEgdHJhbnNhY3Rpb24sIHdlIGhhdmUgdG8gcmVsZWFzZSBhbGwgdGhlIGJ1ZmZlcnMuCi0JICovCi0JZm9yIChpID0gMDsgaSA8IHN0YXRlLT5wYXRoLmFjdGl2ZTsgaSsrKSB7Ci0JCXhmc19kYV9icmVsc2UoYXJncy0+dHJhbnMsIHN0YXRlLT5wYXRoLmJsa1tpXS5icCk7Ci0JCXN0YXRlLT5wYXRoLmJsa1tpXS5icCA9IE5VTEw7Ci0JfQotCi0JeGZzX2RhX3N0YXRlX2ZyZWUoc3RhdGUpOwotCXJldHVybihyZXR2YWwpOwotfQotCi1TVEFUSUMgaW50Ci14ZnNfZGlyX25vZGVfZ2V0ZGVudHMoeGZzX3RyYW5zX3QgKnRyYW5zLCB4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sCi0JCQkJICBpbnQgKmVvZnAsIHhmc19kaXJlbnRfdCAqZGJwLCB4ZnNfZGlyX3B1dF90IHB1dCkKLXsKLQl4ZnNfZGFfaW50bm9kZV90ICpub2RlOwotCXhmc19kYV9ub2RlX2VudHJ5X3QgKmJ0cmVlOwotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWYgPSBOVUxMOwotCXhmc19kYWJsa190IGJubywgbmV4dGJubzsKLQl4ZnNfZGFoYXNoX3QgY29va2hhc2g7Ci0JeGZzX21vdW50X3QgKm1wOwotCWludCBlcnJvciwgZW9iLCBpOwotCXhmc19kYWJ1Zl90ICpicDsKLQl4ZnNfZGFkZHJfdCBuZXh0ZGE7Ci0KLQkvKgotCSAqIFBpY2sgdXAgb3VyIGNvbnRleHQuCi0JICovCi0JbXAgPSBkcC0+aV9tb3VudDsKLQlicCA9IE5VTEw7Ci0JYm5vID0gWEZTX0RBX0NPT0tJRV9CTk8obXAsIHVpby0+dWlvX29mZnNldCk7Ci0JY29va2hhc2ggPSBYRlNfREFfQ09PS0lFX0hBU0gobXAsIHVpby0+dWlvX29mZnNldCk7Ci0KLQl4ZnNfZGlyX3RyYWNlX2dfZHUoIm5vZGU6IHN0YXJ0IiwgZHAsIHVpbyk7Ci0KLQkvKgotCSAqIFJlLWZpbmQgb3VyIHBsYWNlLCBldmVuIGlmIHdlJ3JlIGNvbmZ1c2VkIGFib3V0IHdoYXQgb3VyIHBsYWNlIGlzLgotCSAqCi0JICogRmlyc3Qgd2UgY2hlY2sgdGhlIGJsb2NrIG51bWJlciBmcm9tIHRoZSBtYWdpYyBjb29raWUsIGl0IGlzIGEKLQkgKiBjYWNoZSBvZiB3aGVyZSB3ZSBlbmRlZCBsYXN0IHRpbWUuICBJZiB3ZSBmaW5kIGEgbGVhZiBibG9jaywgYW5kCi0JICogdGhlIHN0YXJ0aW5nIGhhc2h2YWwgaW4gdGhhdCBibG9jayBpcyBsZXNzIHRoYW4gb3VyIGRlc2lyZWQKLQkgKiBoYXNodmFsLCB0aGVuIHdlIHJ1biB3aXRoIGl0LgotCSAqLwotCWlmIChibm8gPiAwKSB7Ci0JCWVycm9yID0geGZzX2RhX3JlYWRfYnVmKHRyYW5zLCBkcCwgYm5vLCAtMiwgJmJwLCBYRlNfREFUQV9GT1JLKTsKLQkJaWYgKChlcnJvciAhPSAwKSAmJiAoZXJyb3IgIT0gRUZTQ09SUlVQVEVEKSkKLQkJCXJldHVybihlcnJvcik7Ci0JCWlmIChicCkKLQkJCWxlYWYgPSBicC0+ZGF0YTsKLQkJaWYgKGJwICYmIGJlMTZfdG9fY3B1KGxlYWYtPmhkci5pbmZvLm1hZ2ljKSAhPSBYRlNfRElSX0xFQUZfTUFHSUMpIHsKLQkJCXhmc19kaXJfdHJhY2VfZ19kdWIoIm5vZGU6IGJsb2NrIG5vdCBhIGxlYWYiLAotCQkJCQkJICAgZHAsIHVpbywgYm5vKTsKLQkJCXhmc19kYV9icmVsc2UodHJhbnMsIGJwKTsKLQkJCWJwID0gTlVMTDsKLQkJfQotCQlpZiAoYnAgJiYgSU5UX0dFVChsZWFmLT5lbnRyaWVzWzBdLmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPiBjb29raGFzaCkgewotCQkJeGZzX2Rpcl90cmFjZV9nX2R1Yigibm9kZTogbGVhZiBoYXNoIHRvbyBsYXJnZSIsCi0JCQkJCQkgICBkcCwgdWlvLCBibm8pOwotCQkJeGZzX2RhX2JyZWxzZSh0cmFucywgYnApOwotCQkJYnAgPSBOVUxMOwotCQl9Ci0JCWlmIChicCAmJgotCQkgICAgY29va2hhc2ggPiBJTlRfR0VUKGxlYWYtPmVudHJpZXNbSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkgLSAxXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpKSB7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHViKCJub2RlOiBsZWFmIGhhc2ggdG9vIHNtYWxsIiwKLQkJCQkJCSAgIGRwLCB1aW8sIGJubyk7Ci0JCQl4ZnNfZGFfYnJlbHNlKHRyYW5zLCBicCk7Ci0JCQlicCA9IE5VTEw7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHdlIGRpZCBub3QgZmluZCBhIGxlYWYgYmxvY2sgZnJvbSB0aGUgYmxvY2tubyBpbiB0aGUgY29va2llLAotCSAqIG9yIHdlIHRoZXJlIHdhcyBubyBibG9ja25vIGluIHRoZSBjb29raWUgKGVnOiBmaXJzdCB0aW1lIHRocnUpLAotCSAqIHRoZSB3ZSBzdGFydCBhdCB0aGUgdG9wIG9mIHRoZSBCdHJlZSBhbmQgcmUtZmluZCBvdXIgaGFzaHZhbC4KLQkgKi8KLQlpZiAoYnAgPT0gTlVMTCkgewotCQl4ZnNfZGlyX3RyYWNlX2dfZHUoIm5vZGU6IHN0YXJ0IGF0IHJvb3QiICwgZHAsIHVpbyk7Ci0JCWJubyA9IDA7Ci0JCWZvciAoOzspIHsKLQkJCWVycm9yID0geGZzX2RhX3JlYWRfYnVmKHRyYW5zLCBkcCwgYm5vLCAtMSwgJmJwLAotCQkJCQkJICAgICAgIFhGU19EQVRBX0ZPUkspOwotCQkJaWYgKGVycm9yKQotCQkJCXJldHVybihlcnJvcik7Ci0JCQlpZiAoYnAgPT0gTlVMTCkKLQkJCQlyZXR1cm4oWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCkpOwotCQkJbm9kZSA9IGJwLT5kYXRhOwotCQkJaWYgKGJlMTZfdG9fY3B1KG5vZGUtPmhkci5pbmZvLm1hZ2ljKSAhPSBYRlNfREFfTk9ERV9NQUdJQykKLQkJCQlicmVhazsKLQkJCWJ0cmVlID0gJm5vZGUtPmJ0cmVlWzBdOwotCQkJeGZzX2Rpcl90cmFjZV9nX2R1bigibm9kZTogbm9kZSBkZXRhaWwiLCBkcCwgdWlvLCBub2RlKTsKLQkJCWZvciAoaSA9IDA7IGkgPCBiZTE2X3RvX2NwdShub2RlLT5oZHIuY291bnQpOyBidHJlZSsrLCBpKyspIHsKLQkJCQlpZiAoYmUzMl90b19jcHUoYnRyZWUtPmhhc2h2YWwpID49IGNvb2toYXNoKSB7Ci0JCQkJCWJubyA9IGJlMzJfdG9fY3B1KGJ0cmVlLT5iZWZvcmUpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlpZiAoaSA9PSBiZTE2X3RvX2NwdShub2RlLT5oZHIuY291bnQpKSB7Ci0JCQkJeGZzX2RhX2JyZWxzZSh0cmFucywgYnApOwotCQkJCXhmc19kaXJfdHJhY2VfZ19kdSgibm9kZTogaGFzaCBiZXlvbmQgRU9GIiwKLQkJCQkJCQkgIGRwLCB1aW8pOwotCQkJCXVpby0+dWlvX29mZnNldCA9IFhGU19EQV9NQUtFX0NPT0tJRShtcCwgMCwgMCwKLQkJCQkJCQkgICAgIFhGU19EQV9NQVhIQVNIKTsKLQkJCQkqZW9mcCA9IDE7Ci0JCQkJcmV0dXJuKDApOwotCQkJfQotCQkJeGZzX2Rpcl90cmFjZV9nX2R1Yigibm9kZTogZ29pbmcgdG8gYmxvY2siLAotCQkJCQkJICAgZHAsIHVpbywgYm5vKTsKLQkJCXhmc19kYV9icmVsc2UodHJhbnMsIGJwKTsKLQkJfQotCX0KLQlBU1NFUlQoY29va2hhc2ggIT0gWEZTX0RBX01BWEhBU0gpOwotCi0JLyoKLQkgKiBXZSd2ZSBkcm9wcGVkIGRvd24gdG8gdGhlIChmaXJzdCkgbGVhZiBibG9jayB0aGF0IGNvbnRhaW5zIHRoZQotCSAqIGhhc2h2YWwgd2UgYXJlIGludGVyZXN0ZWQgaW4uICBDb250aW51ZSByb2xsaW5nIHVwd2FyZCB0aHJ1IHRoZQotCSAqIGxlYWYgYmxvY2tzIHVudGlsIHdlIGZpbGwgdXAgb3VyIGJ1ZmZlci4KLQkgKi8KLQlmb3IgKDs7KSB7Ci0JCWxlYWYgPSBicC0+ZGF0YTsKLQkJaWYgKHVubGlrZWx5KGJlMTZfdG9fY3B1KGxlYWYtPmhkci5pbmZvLm1hZ2ljKSAhPSBYRlNfRElSX0xFQUZfTUFHSUMpKSB7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHVsKCJub2RlOiBub3QgYSBsZWFmIiwgZHAsIHVpbywgbGVhZik7Ci0JCQl4ZnNfZGFfYnJlbHNlKHRyYW5zLCBicCk7Ci0JCQlYRlNfQ09SUlVQVElPTl9FUlJPUigieGZzX2Rpcl9ub2RlX2dldGRlbnRzKDEpIiwKLQkJCQkJICAgICBYRlNfRVJSTEVWRUxfTE9XLCBtcCwgbGVhZik7Ci0JCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7Ci0JCX0KLQkJeGZzX2Rpcl90cmFjZV9nX2R1bCgibm9kZTogbGVhZiBkZXRhaWwiLCBkcCwgdWlvLCBsZWFmKTsKLQkJaWYgKChuZXh0Ym5vID0gYmUzMl90b19jcHUobGVhZi0+aGRyLmluZm8uZm9ydykpKSB7Ci0JCQluZXh0ZGEgPSB4ZnNfZGFfcmVhZGFfYnVmKHRyYW5zLCBkcCwgbmV4dGJubywKLQkJCQkJCSAgWEZTX0RBVEFfRk9SSyk7Ci0JCX0gZWxzZQotCQkJbmV4dGRhID0gLTE7Ci0JCWVycm9yID0geGZzX2Rpcl9sZWFmX2dldGRlbnRzX2ludChicCwgZHAsIGJubywgdWlvLCAmZW9iLCBkYnAsCi0JCQkJCQkgIHB1dCwgbmV4dGRhKTsKLQkJeGZzX2RhX2JyZWxzZSh0cmFucywgYnApOwotCQlibm8gPSBuZXh0Ym5vOwotCQlpZiAoZW9iKSB7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHViKCJub2RlOiBFLU8tQiIsIGRwLCB1aW8sIGJubyk7Ci0JCQkqZW9mcCA9IDA7Ci0JCQlyZXR1cm4oZXJyb3IpOwotCQl9Ci0JCWlmIChibm8gPT0gMCkKLQkJCWJyZWFrOwotCQllcnJvciA9IHhmc19kYV9yZWFkX2J1Zih0cmFucywgZHAsIGJubywgbmV4dGRhLCAmYnAsCi0JCQkJCVhGU19EQVRBX0ZPUkspOwotCQlpZiAoZXJyb3IpCi0JCQlyZXR1cm4oZXJyb3IpOwotCQlpZiAodW5saWtlbHkoYnAgPT0gTlVMTCkpIHsKLQkJCVhGU19FUlJPUl9SRVBPUlQoInhmc19kaXJfbm9kZV9nZXRkZW50cygyKSIsCi0JCQkJCSBYRlNfRVJSTEVWRUxfTE9XLCBtcCk7Ci0JCQlyZXR1cm4oWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCkpOwotCQl9Ci0JfQotCSplb2ZwID0gMTsKLQl4ZnNfZGlyX3RyYWNlX2dfZHUoIm5vZGU6IEUtTy1GIiwgZHAsIHVpbyk7Ci0JcmV0dXJuKDApOwotfQotCi0vKgotICogTG9vayB1cCBhIGZpbGVuYW1lIGluIGFuIGludCBkaXJlY3RvcnksIHJlcGxhY2UgdGhlIGlub2RlIG51bWJlci4KLSAqIFVzZSBhbiBpbnRlcm5hbCByb3V0aW5lIHRvIGFjdHVhbGx5IGRvIHRoZSBsb29rdXAuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc19kaXJfbm9kZV9yZXBsYWNlKHhmc19kYV9hcmdzX3QgKmFyZ3MpCi17Ci0JeGZzX2RhX3N0YXRlX3QgKnN0YXRlOwotCXhmc19kYV9zdGF0ZV9ibGtfdCAqYmxrOwotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWY7Ci0JeGZzX2Rpcl9sZWFmX2VudHJ5X3QgKmVudHJ5OwotCXhmc19kaXJfbGVhZl9uYW1lX3QgKm5hbWVzdDsKLQl4ZnNfaW5vX3QgaW51bTsKLQlpbnQgcmV0dmFsLCBlcnJvciwgaTsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0KLQlzdGF0ZSA9IHhmc19kYV9zdGF0ZV9hbGxvYygpOwotCXN0YXRlLT5hcmdzID0gYXJnczsKLQlzdGF0ZS0+bXAgPSBhcmdzLT5kcC0+aV9tb3VudDsKLQlzdGF0ZS0+YmxvY2tzaXplID0gc3RhdGUtPm1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZTsKLQlzdGF0ZS0+bm9kZV9lbnRzID0gc3RhdGUtPm1wLT5tX2Rpcl9ub2RlX2VudHM7Ci0JaW51bSA9IGFyZ3MtPmludW1iZXI7Ci0KLQkvKgotCSAqIFNlYXJjaCB0byBzZWUgaWYgbmFtZSBleGlzdHMsCi0JICogYW5kIGdldCBiYWNrIGEgcG9pbnRlciB0byBpdC4KLQkgKi8KLQllcnJvciA9IHhmc19kYV9ub2RlX2xvb2t1cF9pbnQoc3RhdGUsICZyZXR2YWwpOwotCWlmIChlcnJvcikgewotCQlyZXR2YWwgPSBlcnJvcjsKLQl9Ci0KLQlpZiAocmV0dmFsID09IEVFWElTVCkgewotCQlibGsgPSAmc3RhdGUtPnBhdGguYmxrW3N0YXRlLT5wYXRoLmFjdGl2ZSAtIDFdOwotCQlBU1NFUlQoYmxrLT5tYWdpYyA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCQlicCA9IGJsay0+YnA7Ci0JCWxlYWYgPSBicC0+ZGF0YTsKLQkJZW50cnkgPSAmbGVhZi0+ZW50cmllc1tibGstPmluZGV4XTsKLQkJbmFtZXN0ID0gWEZTX0RJUl9MRUFGX05BTUVTVFJVQ1QobGVhZiwgSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSk7Ci0JCS8qIFhYWCAtIHJlcGxhY2UgYXNzZXJ0ID8gKi8KLQkJWEZTX0RJUl9TRl9QVVRfRElSSU5PKCZpbnVtLCAmbmFtZXN0LT5pbnVtYmVyKTsKLQkJeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwLAotCQkgICAgWEZTX0RBX0xPR1JBTkdFKGxlYWYsIG5hbWVzdCwgc2l6ZW9mKG5hbWVzdC0+aW51bWJlcikpKTsKLQkJeGZzX2RhX2J1Zl9kb25lKGJwKTsKLQkJYmxrLT5icCA9IE5VTEw7Ci0JCXJldHZhbCA9IDA7Ci0JfSBlbHNlIHsKLQkJaSA9IHN0YXRlLT5wYXRoLmFjdGl2ZSAtIDE7Ci0JCXhmc19kYV9icmVsc2UoYXJncy0+dHJhbnMsIHN0YXRlLT5wYXRoLmJsa1tpXS5icCk7Ci0JCXN0YXRlLT5wYXRoLmJsa1tpXS5icCA9IE5VTEw7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+cGF0aC5hY3RpdmUgLSAxOyBpKyspIHsKLQkJeGZzX2RhX2JyZWxzZShhcmdzLT50cmFucywgc3RhdGUtPnBhdGguYmxrW2ldLmJwKTsKLQkJc3RhdGUtPnBhdGguYmxrW2ldLmJwID0gTlVMTDsKLQl9Ci0KLQl4ZnNfZGFfc3RhdGVfZnJlZShzdGF0ZSk7Ci0JcmV0dXJuKHJldHZhbCk7Ci19Ci0KLSNpZiBkZWZpbmVkKFhGU19ESVJfVFJBQ0UpCi0vKgotICogQWRkIGEgdHJhY2UgYnVmZmVyIGVudHJ5IGZvciBhbiBpbm9kZSBhbmQgYSB1aW8uCi0gKi8KLXZvaWQKLXhmc19kaXJfdHJhY2VfZ19kdShjaGFyICp3aGVyZSwgeGZzX2lub2RlX3QgKmRwLCB1aW9fdCAqdWlvKQotewotCXhmc19kaXJfdHJhY2VfZW50ZXIoWEZTX0RJUl9LVFJBQ0VfR19EVSwgd2hlcmUsCi0JCSAgICAgKHZvaWQgKilkcCwgKHZvaWQgKilkcC0+aV9tb3VudCwKLQkJICAgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZykodWlvLT51aW9fb2Zmc2V0ID4+IDMyKSksCi0JCSAgICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHVpby0+dWlvX29mZnNldCAmIDB4RkZGRkZGRkYpKSwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXVpby0+dWlvX3Jlc2lkLAotCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwotfQotCi0vKgotICogQWRkIGEgdHJhY2UgYnVmZmVyIGVudHJ5IGZvciBhbiBpbm9kZSBhbmQgYSB1aW8uCi0gKi8KLXZvaWQKLXhmc19kaXJfdHJhY2VfZ19kdWIoY2hhciAqd2hlcmUsIHhmc19pbm9kZV90ICpkcCwgdWlvX3QgKnVpbywgeGZzX2RhYmxrX3QgYm5vKQotewotCXhmc19kaXJfdHJhY2VfZW50ZXIoWEZTX0RJUl9LVFJBQ0VfR19EVUIsIHdoZXJlLAotCQkgICAgICh2b2lkICopZHAsICh2b2lkICopZHAtPmlfbW91bnQsCi0JCSAgICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHVpby0+dWlvX29mZnNldCA+PiAzMikpLAotCQkgICAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKSh1aW8tPnVpb19vZmZzZXQgJiAweEZGRkZGRkZGKSksCi0JCSAgICAgKHZvaWQgKikodW5zaWduZWQgbG9uZyl1aW8tPnVpb19yZXNpZCwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWJubywKLQkJICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKLX0KLQotLyoKLSAqIEFkZCBhIHRyYWNlIGJ1ZmZlciBlbnRyeSBmb3IgYW4gaW5vZGUgYW5kIGEgdWlvLgotICovCi12b2lkCi14ZnNfZGlyX3RyYWNlX2dfZHVuKGNoYXIgKndoZXJlLCB4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sCi0JCQl4ZnNfZGFfaW50bm9kZV90ICpub2RlKQotewotCWludAlsYXN0ID0gYmUxNl90b19jcHUobm9kZS0+aGRyLmNvdW50KSAtIDE7Ci0KLQl4ZnNfZGlyX3RyYWNlX2VudGVyKFhGU19ESVJfS1RSQUNFX0dfRFVOLCB3aGVyZSwKLQkJICAgICAodm9pZCAqKWRwLCAodm9pZCAqKWRwLT5pX21vdW50LAotCQkgICAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKSh1aW8tPnVpb19vZmZzZXQgPj4gMzIpKSwKLQkJICAgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZykodWlvLT51aW9fb2Zmc2V0ICYgMHhGRkZGRkZGRikpLAotCQkgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpdWlvLT51aW9fcmVzaWQsCi0JCSAgICAgKHZvaWQgKikodW5zaWduZWQgbG9uZyliZTMyX3RvX2NwdShub2RlLT5oZHIuaW5mby5mb3J3KSwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKQotCQkJYmUxNl90b19jcHUobm9kZS0+aGRyLmNvdW50KSwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKQotCQkJYmUzMl90b19jcHUobm9kZS0+YnRyZWVbMF0uaGFzaHZhbCksCi0JCSAgICAgKHZvaWQgKikodW5zaWduZWQgbG9uZykKLQkJCWJlMzJfdG9fY3B1KG5vZGUtPmJ0cmVlW2xhc3RdLmhhc2h2YWwpLAotCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotfQotCi0vKgotICogQWRkIGEgdHJhY2UgYnVmZmVyIGVudHJ5IGZvciBhbiBpbm9kZSBhbmQgYSB1aW8uCi0gKi8KLXZvaWQKLXhmc19kaXJfdHJhY2VfZ19kdWwoY2hhciAqd2hlcmUsIHhmc19pbm9kZV90ICpkcCwgdWlvX3QgKnVpbywKLQkJCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWYpCi17Ci0JaW50CWxhc3QgPSBJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSAtIDE7Ci0KLQl4ZnNfZGlyX3RyYWNlX2VudGVyKFhGU19ESVJfS1RSQUNFX0dfRFVMLCB3aGVyZSwKLQkJICAgICAodm9pZCAqKWRwLCAodm9pZCAqKWRwLT5pX21vdW50LAotCQkgICAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKSh1aW8tPnVpb19vZmZzZXQgPj4gMzIpKSwKLQkJICAgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZykodWlvLT51aW9fb2Zmc2V0ICYgMHhGRkZGRkZGRikpLAotCQkgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpdWlvLT51aW9fcmVzaWQsCi0JCSAgICAgKHZvaWQgKikodW5zaWduZWQgbG9uZyliZTMyX3RvX2NwdShsZWFmLT5oZHIuaW5mby5mb3J3KSwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKQotCQkJSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCksCi0JCSAgICAgKHZvaWQgKikodW5zaWduZWQgbG9uZykKLQkJCUlOVF9HRVQobGVhZi0+ZW50cmllc1swXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpLAotCQkgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpCi0JCQlJTlRfR0VUKGxlYWYtPmVudHJpZXNbbGFzdF0uaGFzaHZhbCwgQVJDSF9DT05WRVJUKSwKLQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLX0KLQotLyoKLSAqIEFkZCBhIHRyYWNlIGJ1ZmZlciBlbnRyeSBmb3IgYW4gaW5vZGUgYW5kIGEgdWlvLgotICovCi12b2lkCi14ZnNfZGlyX3RyYWNlX2dfZHVlKGNoYXIgKndoZXJlLCB4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sCi0JCQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnkpCi17Ci0JeGZzX2Rpcl90cmFjZV9lbnRlcihYRlNfRElSX0tUUkFDRV9HX0RVRSwgd2hlcmUsCi0JCSAgICAgKHZvaWQgKilkcCwgKHZvaWQgKilkcC0+aV9tb3VudCwKLQkJICAgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZykodWlvLT51aW9fb2Zmc2V0ID4+IDMyKSksCi0JCSAgICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHVpby0+dWlvX29mZnNldCAmIDB4RkZGRkZGRkYpKSwKLQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXVpby0+dWlvX3Jlc2lkLAotCQkgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpCi0JCQlJTlRfR0VUKGVudHJ5LT5oYXNodmFsLCBBUkNIX0NPTlZFUlQpLAotCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwotfQotCi0vKgotICogQWRkIGEgdHJhY2UgYnVmZmVyIGVudHJ5IGZvciBhbiBpbm9kZSBhbmQgYSB1aW8uCi0gKi8KLXZvaWQKLXhmc19kaXJfdHJhY2VfZ19kdWMoY2hhciAqd2hlcmUsIHhmc19pbm9kZV90ICpkcCwgdWlvX3QgKnVpbywgeGZzX29mZl90IGNvb2tpZSkKLXsKLQl4ZnNfZGlyX3RyYWNlX2VudGVyKFhGU19ESVJfS1RSQUNFX0dfRFVDLCB3aGVyZSwKLQkJICAgICAodm9pZCAqKWRwLCAodm9pZCAqKWRwLT5pX21vdW50LAotCQkgICAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKSh1aW8tPnVpb19vZmZzZXQgPj4gMzIpKSwKLQkJICAgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZykodWlvLT51aW9fb2Zmc2V0ICYgMHhGRkZGRkZGRikpLAotCQkgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpdWlvLT51aW9fcmVzaWQsCi0JCSAgICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKGNvb2tpZSA+PiAzMikpLAotCQkgICAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKShjb29raWUgJiAweEZGRkZGRkZGKSksCi0JCSAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7Ci19Ci0KLS8qCi0gKiBBZGQgYSB0cmFjZSBidWZmZXIgZW50cnkgZm9yIHRoZSBhcmd1bWVudHMgZ2l2ZW4gdG8gdGhlIHJvdXRpbmUsCi0gKiBnZW5lcmljIGZvcm0uCi0gKi8KLXZvaWQKLXhmc19kaXJfdHJhY2VfZW50ZXIoaW50IHR5cGUsIGNoYXIgKndoZXJlLAotCQkJdm9pZCAqIGEwLCB2b2lkICogYTEsCi0JCQl2b2lkICogYTIsIHZvaWQgKiBhMywKLQkJCXZvaWQgKiBhNCwgdm9pZCAqIGE1LAotCQkJdm9pZCAqIGE2LCB2b2lkICogYTcsCi0JCQl2b2lkICogYTgsIHZvaWQgKiBhOSwKLQkJCXZvaWQgKiBhMTAsIHZvaWQgKiBhMTEpCi17Ci0JQVNTRVJUKHhmc19kaXJfdHJhY2VfYnVmKTsKLQlrdHJhY2VfZW50ZXIoeGZzX2Rpcl90cmFjZV9idWYsICh2b2lkICopKHVuc2lnbmVkIGxvbmcpdHlwZSwKLQkJCQkJKHZvaWQgKil3aGVyZSwKLQkJCQkJKHZvaWQgKilhMCwgKHZvaWQgKilhMSwgKHZvaWQgKilhMiwKLQkJCQkJKHZvaWQgKilhMywgKHZvaWQgKilhNCwgKHZvaWQgKilhNSwKLQkJCQkJKHZvaWQgKilhNiwgKHZvaWQgKilhNywgKHZvaWQgKilhOCwKLQkJCQkJKHZvaWQgKilhOSwgKHZvaWQgKilhMTAsICh2b2lkICopYTExLAotCQkJCQlOVUxMLCBOVUxMKTsKLX0KLSNlbmRpZgkvKiBYRlNfRElSX1RSQUNFICovCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpci5oIGIvZnMveGZzL3hmc19kaXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGFmYi4uMDAwMDAwMAotLS0gYS9mcy94ZnMveGZzX2Rpci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0gKiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0jaWZuZGVmIF9fWEZTX0RJUl9IX18KLSNkZWZpbmUJX19YRlNfRElSX0hfXwotCi0vKgotICogTGFyZ2UgZGlyZWN0b3JpZXMgYXJlIHN0cnVjdHVyZWQgYXJvdW5kIEJ0cmVlcyB3aGVyZSBhbGwgdGhlIGRhdGEKLSAqIGVsZW1lbnRzIGFyZSBpbiB0aGUgbGVhZiBub2Rlcy4gIEZpbGVuYW1lcyBhcmUgaGFzaGVkIGludG8gYW4gaW50LAotICogdGhlbiB0aGF0IGludCBpcyB1c2VkIGFzIHRoZSBpbmRleCBpbnRvIHRoZSBCdHJlZS4gIFNpbmNlIHRoZSBoYXNodmFsCi0gKiBvZiBhIGZpbGVuYW1lIG1heSBub3QgYmUgdW5pcXVlLCB3ZSBtYXkgaGF2ZSBkdXBsaWNhdGUga2V5cy4gIFRoZQotICogaW50ZXJuYWwgbGlua3MgaW4gdGhlIEJ0cmVlIGFyZSBsb2dpY2FsIGJsb2NrIG9mZnNldHMgaW50byB0aGUgZmlsZS4KLSAqCi0gKiBTbWFsbCBkaXJlY3RvcmllcyB1c2UgYSBkaWZmZXJlbnQgZm9ybWF0IGFuZCBhcmUgcGFja2VkIGFzIHRpZ2h0bHkKLSAqIGFzIHBvc3NpYmxlIHNvIGFzIHRvIGZpdCBpbnRvIHRoZSBsaXRlcmFsIGFyZWEgb2YgdGhlIGlub2RlLgotICovCi0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBGdW5jdGlvbiBwcm90b3R5cGVzIGZvciB0aGUga2VybmVsLgotICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi1zdHJ1Y3QgdWlvOwotc3RydWN0IHhmc19ibWFwX2ZyZWU7Ci1zdHJ1Y3QgeGZzX2RhX2FyZ3M7Ci1zdHJ1Y3QgeGZzX2Rpbm9kZTsKLXN0cnVjdCB4ZnNfaW5vZGU7Ci1zdHJ1Y3QgeGZzX21vdW50Owotc3RydWN0IHhmc190cmFuczsKLQotLyoKLSAqIERpcmVjdG9yeSBmdW5jdGlvbiB0eXBlcy4KLSAqIFB1dCBpbiBzdHJ1Y3R1cmVzICh4ZnNfZGlyb3BzX3QpIGZvciB2MSBhbmQgdjIgZGlyZWN0b3JpZXMuCi0gKi8KLXR5cGVkZWYgdm9pZAkoKnhmc19kaXJfbW91bnRfdCkoc3RydWN0IHhmc19tb3VudCAqbXApOwotdHlwZWRlZiBpbnQJKCp4ZnNfZGlyX2lzZW1wdHlfdCkoc3RydWN0IHhmc19pbm9kZSAqZHApOwotdHlwZWRlZiBpbnQJKCp4ZnNfZGlyX2luaXRfdCkoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkJICBzdHJ1Y3QgeGZzX2lub2RlICpkcCwKLQkJCQkgIHN0cnVjdCB4ZnNfaW5vZGUgKnBkcCk7Ci10eXBlZGVmIGludAkoKnhmc19kaXJfY3JlYXRlbmFtZV90KShzdHJ1Y3QgeGZzX3RyYW5zICp0cCwKLQkJCQkJc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJCWNoYXIgKm5hbWUsCi0JCQkJCWludCBuYW1lbGVuLAotCQkJCQl4ZnNfaW5vX3QgaW51bSwKLQkJCQkJeGZzX2ZzYmxvY2tfdCAqZmlyc3QsCi0JCQkJCXN0cnVjdCB4ZnNfYm1hcF9mcmVlICpmbGlzdCwKLQkJCQkJeGZzX2V4dGxlbl90IHRvdGFsKTsKLXR5cGVkZWYgaW50CSgqeGZzX2Rpcl9sb29rdXBfdCkoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkJICAgIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAotCQkJCSAgICBjaGFyICpuYW1lLAotCQkJCSAgICBpbnQgbmFtZWxlbiwKLQkJCQkgICAgeGZzX2lub190ICppbnVtKTsKLXR5cGVkZWYgaW50CSgqeGZzX2Rpcl9yZW1vdmVuYW1lX3QpKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLAotCQkJCQlzdHJ1Y3QgeGZzX2lub2RlICpkcCwKLQkJCQkJY2hhciAqbmFtZSwKLQkJCQkJaW50IG5hbWVsZW4sCi0JCQkJCXhmc19pbm9fdCBpbm8sCi0JCQkJCXhmc19mc2Jsb2NrX3QgKmZpcnN0LAotCQkJCQlzdHJ1Y3QgeGZzX2JtYXBfZnJlZSAqZmxpc3QsCi0JCQkJCXhmc19leHRsZW5fdCB0b3RhbCk7Ci10eXBlZGVmIGludAkoKnhmc19kaXJfZ2V0ZGVudHNfdCkoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkJICAgICAgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJICAgICAgc3RydWN0IHVpbyAqdWlvLAotCQkJCSAgICAgIGludCAqZW9mcCk7Ci10eXBlZGVmIGludAkoKnhmc19kaXJfcmVwbGFjZV90KShzdHJ1Y3QgeGZzX3RyYW5zICp0cCwKLQkJCQkgICAgIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAotCQkJCSAgICAgY2hhciAqbmFtZSwKLQkJCQkgICAgIGludCBuYW1lbGVuLAotCQkJCSAgICAgeGZzX2lub190IGludW0sCi0JCQkJICAgICB4ZnNfZnNibG9ja190ICpmaXJzdCwKLQkJCQkgICAgIHN0cnVjdCB4ZnNfYm1hcF9mcmVlICpmbGlzdCwKLQkJCQkgICAgIHhmc19leHRsZW5fdCB0b3RhbCk7Ci10eXBlZGVmIGludAkoKnhmc19kaXJfY2FuZW50ZXJfdCkoc3RydWN0IHhmc190cmFucyAqdHAsCi0JCQkJICAgICAgc3RydWN0IHhmc19pbm9kZSAqZHAsCi0JCQkJICAgICAgY2hhciAqbmFtZSwKLQkJCQkgICAgICBpbnQgbmFtZWxlbik7Ci10eXBlZGVmIGludAkoKnhmc19kaXJfc2hvcnRmb3JtX3ZhbGlkYXRlX29uZGlza190KShzdHJ1Y3QgeGZzX21vdW50ICptcCwKLQkJCQkJCSAgICAgICBzdHJ1Y3QgeGZzX2Rpbm9kZSAqZGlwKTsKLXR5cGVkZWYgaW50CSgqeGZzX2Rpcl9zaG9ydGZvcm1fdG9fc2luZ2xlX3QpKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncyk7Ci0KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJvcHMgewotCXhmc19kaXJfbW91bnRfdAkJCQl4ZF9tb3VudDsKLQl4ZnNfZGlyX2lzZW1wdHlfdAkJCXhkX2lzZW1wdHk7Ci0JeGZzX2Rpcl9pbml0X3QJCQkJeGRfaW5pdDsKLQl4ZnNfZGlyX2NyZWF0ZW5hbWVfdAkJCXhkX2NyZWF0ZW5hbWU7Ci0JeGZzX2Rpcl9sb29rdXBfdAkJCXhkX2xvb2t1cDsKLQl4ZnNfZGlyX3JlbW92ZW5hbWVfdAkJCXhkX3JlbW92ZW5hbWU7Ci0JeGZzX2Rpcl9nZXRkZW50c190CQkJeGRfZ2V0ZGVudHM7Ci0JeGZzX2Rpcl9yZXBsYWNlX3QJCQl4ZF9yZXBsYWNlOwotCXhmc19kaXJfY2FuZW50ZXJfdAkJCXhkX2NhbmVudGVyOwotCXhmc19kaXJfc2hvcnRmb3JtX3ZhbGlkYXRlX29uZGlza190CXhkX3Nob3J0Zm9ybV92YWxpZGF0ZV9vbmRpc2s7Ci0JeGZzX2Rpcl9zaG9ydGZvcm1fdG9fc2luZ2xlX3QJCXhkX3Nob3J0Zm9ybV90b19zaW5nbGU7Ci19IHhmc19kaXJvcHNfdDsKLQotLyoKLSAqIE92ZXJhbGwgZXh0ZXJuYWwgaW50ZXJmYWNlIHJvdXRpbmVzLgotICovCi12b2lkCXhmc19kaXJfc3RhcnR1cCh2b2lkKTsJLyogY2FsbGVkIGV4YWN0bHkgb25jZSAqLwotCi0jZGVmaW5lCVhGU19ESVJfTU9VTlQobXApCVwKLQkoKG1wKS0+bV9kaXJvcHMueGRfbW91bnQobXApKQotI2RlZmluZQlYRlNfRElSX0lTRU1QVFkobXAsZHApCVwKLQkoKG1wKS0+bV9kaXJvcHMueGRfaXNlbXB0eShkcCkpCi0jZGVmaW5lCVhGU19ESVJfSU5JVChtcCx0cCxkcCxwZHApCVwKLQkoKG1wKS0+bV9kaXJvcHMueGRfaW5pdCh0cCxkcCxwZHApKQotI2RlZmluZQlYRlNfRElSX0NSRUFURU5BTUUobXAsdHAsZHAsbmFtZSxuYW1lbGVuLGludW0sZmlyc3QsZmxpc3QsdG90YWwpIFwKLQkoKG1wKS0+bV9kaXJvcHMueGRfY3JlYXRlbmFtZSh0cCxkcCxuYW1lLG5hbWVsZW4saW51bSxmaXJzdCxmbGlzdCxcCi0JCQkJICAgICAgdG90YWwpKQotI2RlZmluZQlYRlNfRElSX0xPT0tVUChtcCx0cCxkcCxuYW1lLG5hbWVsZW4saW51bSkJXAotCSgobXApLT5tX2Rpcm9wcy54ZF9sb29rdXAodHAsZHAsbmFtZSxuYW1lbGVuLGludW0pKQotI2RlZmluZQlYRlNfRElSX1JFTU9WRU5BTUUobXAsdHAsZHAsbmFtZSxuYW1lbGVuLGlubyxmaXJzdCxmbGlzdCx0b3RhbCkJXAotCSgobXApLT5tX2Rpcm9wcy54ZF9yZW1vdmVuYW1lKHRwLGRwLG5hbWUsbmFtZWxlbixpbm8sZmlyc3QsZmxpc3QsdG90YWwpKQotI2RlZmluZQlYRlNfRElSX0dFVERFTlRTKG1wLHRwLGRwLHVpbyxlb2ZwKQlcCi0JKChtcCktPm1fZGlyb3BzLnhkX2dldGRlbnRzKHRwLGRwLHVpbyxlb2ZwKSkKLSNkZWZpbmUJWEZTX0RJUl9SRVBMQUNFKG1wLHRwLGRwLG5hbWUsbmFtZWxlbixpbnVtLGZpcnN0LGZsaXN0LHRvdGFsKQlcCi0JKChtcCktPm1fZGlyb3BzLnhkX3JlcGxhY2UodHAsZHAsbmFtZSxuYW1lbGVuLGludW0sZmlyc3QsZmxpc3QsdG90YWwpKQotI2RlZmluZQlYRlNfRElSX0NBTkVOVEVSKG1wLHRwLGRwLG5hbWUsbmFtZWxlbikJXAotCSgobXApLT5tX2Rpcm9wcy54ZF9jYW5lbnRlcih0cCxkcCxuYW1lLG5hbWVsZW4pKQotI2RlZmluZQlYRlNfRElSX1NIT1JURk9STV9WQUxJREFURV9PTkRJU0sobXAsZGlwKQlcCi0JKChtcCktPm1fZGlyb3BzLnhkX3Nob3J0Zm9ybV92YWxpZGF0ZV9vbmRpc2sobXAsZGlwKSkKLSNkZWZpbmUJWEZTX0RJUl9TSE9SVEZPUk1fVE9fU0lOR0xFKG1wLGFyZ3MpCVwKLQkoKG1wKS0+bV9kaXJvcHMueGRfc2hvcnRmb3JtX3RvX3NpbmdsZShhcmdzKSkKLQotI2RlZmluZQlYRlNfRElSX0lTX1YxKG1wKQkoKG1wKS0+bV9kaXJ2ZXJzaW9uID09IDEpCi0jZGVmaW5lCVhGU19ESVJfSVNfVjIobXApCSgobXApLT5tX2RpcnZlcnNpb24gPT0gMikKLWV4dGVybiB4ZnNfZGlyb3BzX3QgeGZzdjFfZGlyb3BzOwotZXh0ZXJuIHhmc19kaXJvcHNfdCB4ZnN2Ml9kaXJvcHM7Ci0KLSNlbmRpZgkvKiBfX1hGU19ESVJfSF9fICovCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2RpcjIuYyBiL2ZzL3hmcy94ZnNfZGlyMi5jCmluZGV4IDAyMmM4MzkuLjhlZGJlMWEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlyMi5jCisrKyBiL2ZzL3hmcy94ZnNfZGlyMi5jCkBAIC0yNCwyMSArMjQsMTggQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfZGFfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgogI2luY2x1ZGUgInhmc19pbm9kZS5oIgogI2luY2x1ZGUgInhmc19pbm9kZV9pdGVtLmgiCiAjaW5jbHVkZSAieGZzX2JtYXAuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX2xlYWYuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9kYXRhLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfbGVhZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX2Jsb2NrLmgiCkBAIC00Niw2OSArNDMsMTQgQEAKICNpbmNsdWRlICJ4ZnNfZGlyMl90cmFjZS5oIgogI2luY2x1ZGUgInhmc19lcnJvci5oIgogCi0vKgotICogRGVjbGFyYXRpb25zIGZvciBpbnRlcmZhY2Ugcm91dGluZXMuCi0gKi8KLXN0YXRpYyB2b2lkCXhmc19kaXIyX21vdW50KHhmc19tb3VudF90ICptcCk7Ci1zdGF0aWMgaW50CXhmc19kaXIyX2lzZW1wdHkoeGZzX2lub2RlX3QgKmRwKTsKLXN0YXRpYyBpbnQJeGZzX2RpcjJfaW5pdCh4ZnNfdHJhbnNfdCAqdHAsIHhmc19pbm9kZV90ICpkcCwKLQkJCSAgICAgIHhmc19pbm9kZV90ICpwZHApOwotc3RhdGljIGludAl4ZnNfZGlyMl9jcmVhdGVuYW1lKHhmc190cmFuc190ICp0cCwgeGZzX2lub2RlX3QgKmRwLAotCQkJCSAgICBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgeGZzX2lub190IGludW0sCi0JCQkJICAgIHhmc19mc2Jsb2NrX3QgKmZpcnN0LAotCQkJCSAgICB4ZnNfYm1hcF9mcmVlX3QgKmZsaXN0LCB4ZnNfZXh0bGVuX3QgdG90YWwpOwotc3RhdGljIGludAl4ZnNfZGlyMl9sb29rdXAoeGZzX3RyYW5zX3QgKnRwLCB4ZnNfaW5vZGVfdCAqZHAsIGNoYXIgKm5hbWUsCi0JCQkJaW50IG5hbWVsZW4sIHhmc19pbm9fdCAqaW51bSk7Ci1zdGF0aWMgaW50CXhmc19kaXIyX3JlbW92ZW5hbWUoeGZzX3RyYW5zX3QgKnRwLCB4ZnNfaW5vZGVfdCAqZHAsCi0JCQkJICAgIGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLCB4ZnNfaW5vX3QgaW5vLAotCQkJCSAgICB4ZnNfZnNibG9ja190ICpmaXJzdCwKLQkJCQkgICAgeGZzX2JtYXBfZnJlZV90ICpmbGlzdCwgeGZzX2V4dGxlbl90IHRvdGFsKTsKLXN0YXRpYyBpbnQJeGZzX2RpcjJfZ2V0ZGVudHMoeGZzX3RyYW5zX3QgKnRwLCB4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sCi0JCQkJICBpbnQgKmVvZnApOwotc3RhdGljIGludAl4ZnNfZGlyMl9yZXBsYWNlKHhmc190cmFuc190ICp0cCwgeGZzX2lub2RlX3QgKmRwLCBjaGFyICpuYW1lLAotCQkJCSBpbnQgbmFtZWxlbiwgeGZzX2lub190IGludW0sCi0JCQkJIHhmc19mc2Jsb2NrX3QgKmZpcnN0LCB4ZnNfYm1hcF9mcmVlX3QgKmZsaXN0LAotCQkJCSB4ZnNfZXh0bGVuX3QgdG90YWwpOwotc3RhdGljIGludAl4ZnNfZGlyMl9jYW5lbnRlcih4ZnNfdHJhbnNfdCAqdHAsIHhmc19pbm9kZV90ICpkcCwgY2hhciAqbmFtZSwKLQkJCQkgIGludCBuYW1lbGVuKTsKLXN0YXRpYyBpbnQJeGZzX2RpcjJfc2hvcnRmb3JtX3ZhbGlkYXRlX29uZGlzayh4ZnNfbW91bnRfdCAqbXAsCi0JCQkJCQkgICB4ZnNfZGlub2RlX3QgKmRpcCk7Ci0KLS8qCi0gKiBVdGlsaXR5IHJvdXRpbmUgZGVjbGFyYXRpb25zLgotICovCiBzdGF0aWMgaW50CXhmc19kaXIyX3B1dF9kaXJlbnQ2NF9kaXJlY3QoeGZzX2RpcjJfcHV0X2FyZ3NfdCAqcGEpOwogc3RhdGljIGludAl4ZnNfZGlyMl9wdXRfZGlyZW50NjRfdWlvKHhmc19kaXIyX3B1dF9hcmdzX3QgKnBhKTsKIAotLyoKLSAqIERpcmVjdG9yeSBvcGVyYXRpb25zIHZlY3Rvci4KLSAqLwoteGZzX2Rpcm9wc190CXhmc3YyX2Rpcm9wcyA9IHsKLQkueGRfbW91bnQJCQk9IHhmc19kaXIyX21vdW50LAotCS54ZF9pc2VtcHR5CQkJPSB4ZnNfZGlyMl9pc2VtcHR5LAotCS54ZF9pbml0CQkJPSB4ZnNfZGlyMl9pbml0LAotCS54ZF9jcmVhdGVuYW1lCQkJPSB4ZnNfZGlyMl9jcmVhdGVuYW1lLAotCS54ZF9sb29rdXAJCQk9IHhmc19kaXIyX2xvb2t1cCwKLQkueGRfcmVtb3ZlbmFtZQkJCT0geGZzX2RpcjJfcmVtb3ZlbmFtZSwKLQkueGRfZ2V0ZGVudHMJCQk9IHhmc19kaXIyX2dldGRlbnRzLAotCS54ZF9yZXBsYWNlCQkJPSB4ZnNfZGlyMl9yZXBsYWNlLAotCS54ZF9jYW5lbnRlcgkJCT0geGZzX2RpcjJfY2FuZW50ZXIsCi0JLnhkX3Nob3J0Zm9ybV92YWxpZGF0ZV9vbmRpc2sJPSB4ZnNfZGlyMl9zaG9ydGZvcm1fdmFsaWRhdGVfb25kaXNrLAotCS54ZF9zaG9ydGZvcm1fdG9fc2luZ2xlCQk9IHhmc19kaXIyX3NmX3RvX2Jsb2NrLAotfTsKLQotLyoKLSAqIEludGVyZmFjZSByb3V0aW5lcy4KLSAqLwotCi0vKgotICogSW5pdGlhbGl6ZSBkaXJlY3RvcnktcmVsYXRlZCBmaWVsZHMgaW4gdGhlIG1vdW50IHN0cnVjdHVyZS4KLSAqLwotc3RhdGljIHZvaWQKLXhmc19kaXIyX21vdW50KAotCXhmc19tb3VudF90CSptcCkJCS8qIGZpbGVzeXN0ZW0gbW91bnQgcG9pbnQgKi8KK3ZvaWQKK3hmc19kaXJfbW91bnQoCisJeGZzX21vdW50X3QJKm1wKQogewotCW1wLT5tX2RpcnZlcnNpb24gPSAyOworCUFTU0VSVChYRlNfU0JfVkVSU0lPTl9IQVNESVJWMigmbXAtPm1fc2IpKTsKIAlBU1NFUlQoKDEgPDwgKG1wLT5tX3NiLnNiX2Jsb2NrbG9nICsgbXAtPm1fc2Iuc2JfZGlyYmxrbG9nKSkgPD0KIAkgICAgICAgWEZTX01BWF9CTE9DS1NJWkUpOwogCW1wLT5tX2RpcmJsa3NpemUgPSAxIDw8IChtcC0+bV9zYi5zYl9ibG9ja2xvZyArIG1wLT5tX3NiLnNiX2RpcmJsa2xvZyk7CkBAIC0xMjgsMTkgKzcwLDE1IEBACiAvKgogICogUmV0dXJuIDEgaWYgZGlyZWN0b3J5IGNvbnRhaW5zIG9ubHkgIi4iIGFuZCAiLi4iLgogICovCi1zdGF0aWMgaW50CQkJCS8qIHJldHVybiBjb2RlICovCi14ZnNfZGlyMl9pc2VtcHR5KAotCXhmc19pbm9kZV90CSpkcCkJCS8qIGluY29yZSBpbm9kZSBzdHJ1Y3R1cmUgKi8KK2ludAoreGZzX2Rpcl9pc2VtcHR5KAorCXhmc19pbm9kZV90CSpkcCkKIHsKLQl4ZnNfZGlyMl9zZl90CSpzZnA7CQkvKiBzaG9ydGZvcm0gZGlyZWN0b3J5IHN0cnVjdHVyZSAqLworCXhmc19kaXIyX3NmX3QJKnNmcDsKIAogCUFTU0VSVCgoZHAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKTsKLQkvKgotCSAqIE1pZ2h0IGhhcHBlbiBkdXJpbmcgc2h1dGRvd24uCi0JICovCi0JaWYgKGRwLT5pX2QuZGlfc2l6ZSA9PSAwKSB7CisJaWYgKGRwLT5pX2QuZGlfc2l6ZSA9PSAwKQkvKiBtaWdodCBoYXBwZW4gZHVyaW5nIHNodXRkb3duLiAqLwogCQlyZXR1cm4gMTsKLQl9CiAJaWYgKGRwLT5pX2QuZGlfc2l6ZSA+IFhGU19JRk9SS19EU0laRShkcCkpCiAJCXJldHVybiAwOwogCXNmcCA9ICh4ZnNfZGlyMl9zZl90ICopZHAtPmlfZGYuaWZfdTEuaWZfZGF0YTsKQEAgLTE0OCw1MyArODYsODMgQEAKIH0KIAogLyoKKyAqIFZhbGlkYXRlIGEgZ2l2ZW4gaW5vZGUgbnVtYmVyLgorICovCitpbnQKK3hmc19kaXJfaW5vX3ZhbGlkYXRlKAorCXhmc19tb3VudF90CSptcCwKKwl4ZnNfaW5vX3QJaW5vKQoreworCXhmc19hZ2Jsb2NrX3QJYWdibGtubzsKKwl4ZnNfYWdpbm9fdAlhZ2lubzsKKwl4ZnNfYWdudW1iZXJfdAlhZ25vOworCWludAkJaW5vX29rOworCWludAkJaW9mZjsKKworCWFnbm8gPSBYRlNfSU5PX1RPX0FHTk8obXAsIGlubyk7CisJYWdibGtubyA9IFhGU19JTk9fVE9fQUdCTk8obXAsIGlubyk7CisJaW9mZiA9IFhGU19JTk9fVE9fT0ZGU0VUKG1wLCBpbm8pOworCWFnaW5vID0gWEZTX09GRkJOT19UT19BR0lOTyhtcCwgYWdibGtubywgaW9mZik7CisJaW5vX29rID0KKwkJYWdubyA8IG1wLT5tX3NiLnNiX2FnY291bnQgJiYKKwkJYWdibGtubyA8IG1wLT5tX3NiLnNiX2FnYmxvY2tzICYmCisJCWFnYmxrbm8gIT0gMCAmJgorCQlpb2ZmIDwgKDEgPDwgbXAtPm1fc2Iuc2JfaW5vcGJsb2cpICYmCisJCVhGU19BR0lOT19UT19JTk8obXAsIGFnbm8sIGFnaW5vKSA9PSBpbm87CisJaWYgKHVubGlrZWx5KFhGU19URVNUX0VSUk9SKCFpbm9fb2ssIG1wLCBYRlNfRVJSVEFHX0RJUl9JTk9fVkFMSURBVEUsCisJCQlYRlNfUkFORE9NX0RJUl9JTk9fVkFMSURBVEUpKSkgeworCQl4ZnNfZnNfY21uX2VycihDRV9XQVJOLCBtcCwgIkludmFsaWQgaW5vZGUgbnVtYmVyIDB4JUx4IiwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBpbm8pOworCQlYRlNfRVJST1JfUkVQT1JUKCJ4ZnNfZGlyX2lub192YWxpZGF0ZSIsIFhGU19FUlJMRVZFTF9MT1csIG1wKTsKKwkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoKICAqIEluaXRpYWxpemUgYSBkaXJlY3Rvcnkgd2l0aCBpdHMgIi4iIGFuZCAiLi4iIGVudHJpZXMuCiAgKi8KLXN0YXRpYyBpbnQJCQkJLyogZXJyb3IgKi8KLXhmc19kaXIyX2luaXQoCi0JeGZzX3RyYW5zX3QJKnRwLAkJLyogdHJhbnNhY3Rpb24gcG9pbnRlciAqLwotCXhmc19pbm9kZV90CSpkcCwJCS8qIGluY29yZSBkaXJlY3RvcnkgaW5vZGUgKi8KLQl4ZnNfaW5vZGVfdAkqcGRwKQkJLyogaW5jb3JlIHBhcmVudCBkaXJlY3RvcnkgaW5vZGUgKi8KK2ludAoreGZzX2Rpcl9pbml0KAorCXhmc190cmFuc190CSp0cCwKKwl4ZnNfaW5vZGVfdAkqZHAsCisJeGZzX2lub2RlX3QJKnBkcCkKIHsKLQl4ZnNfZGFfYXJnc190CWFyZ3M7CQkvKiBvcGVyYXRpb24gYXJndW1lbnRzICovCi0JaW50CQllcnJvcjsJCS8qIGVycm9yIHJldHVybiB2YWx1ZSAqLworCXhmc19kYV9hcmdzX3QJYXJnczsKKwlpbnQJCWVycm9yOwogCiAJbWVtc2V0KChjaGFyICopJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7CiAJYXJncy5kcCA9IGRwOwogCWFyZ3MudHJhbnMgPSB0cDsKIAlBU1NFUlQoKGRwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUik7Ci0JaWYgKChlcnJvciA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRwLT50X21vdW50cCwgcGRwLT5pX2lubykpKSB7CisJaWYgKChlcnJvciA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRwLT50X21vdW50cCwgcGRwLT5pX2lubykpKQogCQlyZXR1cm4gZXJyb3I7Ci0JfQogCXJldHVybiB4ZnNfZGlyMl9zZl9jcmVhdGUoJmFyZ3MsIHBkcC0+aV9pbm8pOwogfQogCiAvKgogICBFbnRlciBhIG5hbWUgaW4gYSBkaXJlY3RvcnkuCiAgKi8KLXN0YXRpYyBpbnQJCQkJCS8qIGVycm9yICovCi14ZnNfZGlyMl9jcmVhdGVuYW1lKAotCXhmc190cmFuc190CQkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJCSpkcCwJCS8qIGluY29yZSBkaXJlY3RvcnkgaW5vZGUgKi8KLQljaGFyCQkJKm5hbWUsCQkvKiBuZXcgZW50cnkgbmFtZSAqLwotCWludAkJCW5hbWVsZW4sCS8qIG5ldyBlbnRyeSBuYW1lIGxlbmd0aCAqLworaW50Cit4ZnNfZGlyX2NyZWF0ZW5hbWUoCisJeGZzX3RyYW5zX3QJCSp0cCwKKwl4ZnNfaW5vZGVfdAkJKmRwLAorCWNoYXIJCQkqbmFtZSwKKwlpbnQJCQluYW1lbGVuLAogCXhmc19pbm9fdAkJaW51bSwJCS8qIG5ldyBlbnRyeSBpbm9kZSBudW1iZXIgKi8KIAl4ZnNfZnNibG9ja190CQkqZmlyc3QsCQkvKiBibWFwJ3MgZmlyc3RibG9jayAqLwogCXhmc19ibWFwX2ZyZWVfdAkJKmZsaXN0LAkJLyogYm1hcCdzIGZyZWVibG9jayBsaXN0ICovCiAJeGZzX2V4dGxlbl90CQl0b3RhbCkJCS8qIGJtYXAncyB0b3RhbCBibG9jayBjb3VudCAqLwogewotCXhmc19kYV9hcmdzX3QJCWFyZ3M7CQkvKiBvcGVyYXRpb24gYXJndW1lbnRzICovCi0JaW50CQkJcnZhbDsJCS8qIHJldHVybiB2YWx1ZSAqLworCXhmc19kYV9hcmdzX3QJCWFyZ3M7CisJaW50CQkJcnZhbDsKIAlpbnQJCQl2OwkJLyogdHlwZS1jaGVja2luZyB2YWx1ZSAqLwogCiAJQVNTRVJUKChkcC0+aV9kLmRpX21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpOwotCWlmICgocnZhbCA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRwLT50X21vdW50cCwgaW51bSkpKSB7CisJaWYgKChydmFsID0geGZzX2Rpcl9pbm9fdmFsaWRhdGUodHAtPnRfbW91bnRwLCBpbnVtKSkpCiAJCXJldHVybiBydmFsOwotCX0KIAlYRlNfU1RBVFNfSU5DKHhzX2Rpcl9jcmVhdGUpOwotCS8qCi0JICogRmlsbCBpbiB0aGUgYXJnIHN0cnVjdHVyZSBmb3IgdGhpcyByZXF1ZXN0LgotCSAqLworCiAJYXJncy5uYW1lID0gbmFtZTsKIAlhcmdzLm5hbWVsZW4gPSBuYW1lbGVuOwogCWFyZ3MuaGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShuYW1lLCBuYW1lbGVuKTsKQEAgLTIwNywxOCArMTc1LDE2IEBACiAJYXJncy50cmFucyA9IHRwOwogCWFyZ3MuanVzdGNoZWNrID0gMDsKIAlhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLworCiAJaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKQogCQlydmFsID0geGZzX2RpcjJfc2ZfYWRkbmFtZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2Jsb2NrKHRwLCBkcCwgJnYpKSkgeworCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNibG9jayh0cCwgZHAsICZ2KSkpCiAJCXJldHVybiBydmFsOwotCX0gZWxzZSBpZiAodikKKwllbHNlIGlmICh2KQogCQlydmFsID0geGZzX2RpcjJfYmxvY2tfYWRkbmFtZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKSB7CisJZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKQogCQlyZXR1cm4gcnZhbDsKLQl9IGVsc2UgaWYgKHYpCisJZWxzZSBpZiAodikKIAkJcnZhbCA9IHhmc19kaXIyX2xlYWZfYWRkbmFtZSgmYXJncyk7CiAJZWxzZQogCQlydmFsID0geGZzX2RpcjJfbm9kZV9hZGRuYW1lKCZhcmdzKTsKQEAgLTIyOCwyNCArMTk0LDIxIEBACiAvKgogICogTG9va3VwIGEgbmFtZSBpbiBhIGRpcmVjdG9yeSwgZ2l2ZSBiYWNrIHRoZSBpbm9kZSBudW1iZXIuCiAgKi8KLXN0YXRpYyBpbnQJCQkJLyogZXJyb3IgKi8KLXhmc19kaXIyX2xvb2t1cCgKLQl4ZnNfdHJhbnNfdAkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJKmRwLAkJLyogaW5jb3JlIGRpcmVjdG9yeSBpbm9kZSAqLwotCWNoYXIJCSpuYW1lLAkJLyogbG9va3VwIG5hbWUgKi8KLQlpbnQJCW5hbWVsZW4sCS8qIGxvb2t1cCBuYW1lIGxlbmd0aCAqLworaW50Cit4ZnNfZGlyX2xvb2t1cCgKKwl4ZnNfdHJhbnNfdAkqdHAsCisJeGZzX2lub2RlX3QJKmRwLAorCWNoYXIJCSpuYW1lLAorCWludAkJbmFtZWxlbiwKIAl4ZnNfaW5vX3QJKmludW0pCQkvKiBvdXQ6IGlub2RlIG51bWJlciAqLwogewotCXhmc19kYV9hcmdzX3QJYXJnczsJCS8qIG9wZXJhdGlvbiBhcmd1bWVudHMgKi8KLQlpbnQJCXJ2YWw7CQkvKiByZXR1cm4gdmFsdWUgKi8KKwl4ZnNfZGFfYXJnc190CWFyZ3M7CisJaW50CQlydmFsOwogCWludAkJdjsJCS8qIHR5cGUtY2hlY2tpbmcgdmFsdWUgKi8KIAogCUFTU0VSVCgoZHAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKTsKIAlYRlNfU1RBVFNfSU5DKHhzX2Rpcl9sb29rdXApOwogCi0JLyoKLQkgKiBGaWxsIGluIHRoZSBhcmcgc3RydWN0dXJlIGZvciB0aGlzIHJlcXVlc3QuCi0JICovCiAJYXJncy5uYW1lID0gbmFtZTsKIAlhcmdzLm5hbWVsZW4gPSBuYW1lbGVuOwogCWFyZ3MuaGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShuYW1lLCBuYW1lbGVuKTsKQEAgLTI1OCwxOCArMjIxLDE2IEBACiAJYXJncy50cmFucyA9IHRwOwogCWFyZ3MuanVzdGNoZWNrID0gYXJncy5hZGRuYW1lID0gMDsKIAlhcmdzLm9rbm9lbnQgPSAxOwotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLworCiAJaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKQogCQlydmFsID0geGZzX2RpcjJfc2ZfbG9va3VwKCZhcmdzKTsKLQllbHNlIGlmICgocnZhbCA9IHhmc19kaXIyX2lzYmxvY2sodHAsIGRwLCAmdikpKSB7CisJZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2Jsb2NrKHRwLCBkcCwgJnYpKSkKIAkJcmV0dXJuIHJ2YWw7Ci0JfSBlbHNlIGlmICh2KQorCWVsc2UgaWYgKHYpCiAJCXJ2YWwgPSB4ZnNfZGlyMl9ibG9ja19sb29rdXAoJmFyZ3MpOwotCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNsZWFmKHRwLCBkcCwgJnYpKSkgeworCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNsZWFmKHRwLCBkcCwgJnYpKSkKIAkJcmV0dXJuIHJ2YWw7Ci0JfSBlbHNlIGlmICh2KQorCWVsc2UgaWYgKHYpCiAJCXJ2YWwgPSB4ZnNfZGlyMl9sZWFmX2xvb2t1cCgmYXJncyk7CiAJZWxzZQogCQlydmFsID0geGZzX2RpcjJfbm9kZV9sb29rdXAoJmFyZ3MpOwpAQCAtMjgzLDI2ICsyNDQsMjQgQEAKIC8qCiAgKiBSZW1vdmUgYW4gZW50cnkgZnJvbSBhIGRpcmVjdG9yeS4KICAqLwotc3RhdGljIGludAkJCQkvKiBlcnJvciAqLwoteGZzX2RpcjJfcmVtb3ZlbmFtZSgKLQl4ZnNfdHJhbnNfdAkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJKmRwLAkJLyogaW5jb3JlIGRpcmVjdG9yeSBpbm9kZSAqLwotCWNoYXIJCSpuYW1lLAkJLyogbmFtZSBvZiBlbnRyeSB0byByZW1vdmUgKi8KLQlpbnQJCW5hbWVsZW4sCS8qIG5hbWUgbGVuZ3RoIG9mIGVudHJ5IHRvIHJlbW92ZSAqLwotCXhmc19pbm9fdAlpbm8sCQkvKiBpbm9kZSBudW1iZXIgb2YgZW50cnkgdG8gcmVtb3ZlICovCitpbnQKK3hmc19kaXJfcmVtb3ZlbmFtZSgKKwl4ZnNfdHJhbnNfdAkqdHAsCisJeGZzX2lub2RlX3QJKmRwLAorCWNoYXIJCSpuYW1lLAorCWludAkJbmFtZWxlbiwKKwl4ZnNfaW5vX3QJaW5vLAogCXhmc19mc2Jsb2NrX3QJKmZpcnN0LAkJLyogYm1hcCdzIGZpcnN0YmxvY2sgKi8KIAl4ZnNfYm1hcF9mcmVlX3QJKmZsaXN0LAkJLyogYm1hcCdzIGZyZWVibG9jayBsaXN0ICovCiAJeGZzX2V4dGxlbl90CXRvdGFsKQkJLyogYm1hcCdzIHRvdGFsIGJsb2NrIGNvdW50ICovCiB7Ci0JeGZzX2RhX2FyZ3NfdAlhcmdzOwkJLyogb3BlcmF0aW9uIGFyZ3VtZW50cyAqLwotCWludAkJcnZhbDsJCS8qIHJldHVybiB2YWx1ZSAqLworCXhmc19kYV9hcmdzX3QJYXJnczsKKwlpbnQJCXJ2YWw7CiAJaW50CQl2OwkJLyogdHlwZS1jaGVja2luZyB2YWx1ZSAqLwogCiAJQVNTRVJUKChkcC0+aV9kLmRpX21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpOwogCVhGU19TVEFUU19JTkMoeHNfZGlyX3JlbW92ZSk7Ci0JLyoKLQkgKiBGaWxsIGluIHRoZSBhcmcgc3RydWN0dXJlIGZvciB0aGlzIHJlcXVlc3QuCi0JICovCisKIAlhcmdzLm5hbWUgPSBuYW1lOwogCWFyZ3MubmFtZWxlbiA9IG5hbWVsZW47CiAJYXJncy5oYXNodmFsID0geGZzX2RhX2hhc2huYW1lKG5hbWUsIG5hbWVsZW4pOwpAQCAtMzE0LDE4ICsyNzMsMTYgQEAKIAlhcmdzLndoaWNoZm9yayA9IFhGU19EQVRBX0ZPUks7CiAJYXJncy50cmFucyA9IHRwOwogCWFyZ3MuanVzdGNoZWNrID0gYXJncy5hZGRuYW1lID0gYXJncy5va25vZW50ID0gMDsKLQkvKgotCSAqIERlY2lkZSBvbiB3aGF0IHdvcmsgcm91dGluZXMgdG8gY2FsbCBiYXNlZCBvbiB0aGUgaW5vZGUgc2l6ZS4KLQkgKi8KKwogCWlmIChkcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCkKIAkJcnZhbCA9IHhmc19kaXIyX3NmX3JlbW92ZW5hbWUoJmFyZ3MpOwotCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNibG9jayh0cCwgZHAsICZ2KSkpIHsKKwllbHNlIGlmICgocnZhbCA9IHhmc19kaXIyX2lzYmxvY2sodHAsIGRwLCAmdikpKQogCQlyZXR1cm4gcnZhbDsKLQl9IGVsc2UgaWYgKHYpCisJZWxzZSBpZiAodikKIAkJcnZhbCA9IHhmc19kaXIyX2Jsb2NrX3JlbW92ZW5hbWUoJmFyZ3MpOwotCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNsZWFmKHRwLCBkcCwgJnYpKSkgeworCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNsZWFmKHRwLCBkcCwgJnYpKSkKIAkJcmV0dXJuIHJ2YWw7Ci0JfSBlbHNlIGlmICh2KQorCWVsc2UgaWYgKHYpCiAJCXJ2YWwgPSB4ZnNfZGlyMl9sZWFmX3JlbW92ZW5hbWUoJmFyZ3MpOwogCWVsc2UKIAkJcnZhbCA9IHhmc19kaXIyX25vZGVfcmVtb3ZlbmFtZSgmYXJncyk7CkBAIC0zMzUsMTAgKzI5MiwxMCBAQAogLyoKICAqIFJlYWQgYSBkaXJlY3RvcnkuCiAgKi8KLXN0YXRpYyBpbnQJCQkJLyogZXJyb3IgKi8KLXhmc19kaXIyX2dldGRlbnRzKAotCXhmc190cmFuc190CSp0cCwJCS8qIHRyYW5zYWN0aW9uIHBvaW50ZXIgKi8KLQl4ZnNfaW5vZGVfdAkqZHAsCQkvKiBpbmNvcmUgZGlyZWN0b3J5IGlub2RlICovCitpbnQKK3hmc19kaXJfZ2V0ZGVudHMoCisJeGZzX3RyYW5zX3QJKnRwLAorCXhmc19pbm9kZV90CSpkcCwKIAl1aW9fdAkJKnVpbywJCS8qIGNhbGxlcidzIGJ1ZmZlciBjb250cm9sICovCiAJaW50CQkqZW9mcCkJCS8qIG91dDogZW9mIHJlYWNoZWQgKi8KIHsKQEAgLTM2NywxNCArMzI0LDExIEBACiAJfQogCiAJKmVvZnAgPSAwOwotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLwogCWlmIChkcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCkKIAkJcnZhbCA9IHhmc19kaXIyX3NmX2dldGRlbnRzKGRwLCB1aW8sIGVvZnAsIGRicCwgcHV0KTsKLQllbHNlIGlmICgocnZhbCA9IHhmc19kaXIyX2lzYmxvY2sodHAsIGRwLCAmdikpKSB7CisJZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2Jsb2NrKHRwLCBkcCwgJnYpKSkKIAkJOwotCX0gZWxzZSBpZiAodikKKwllbHNlIGlmICh2KQogCQlydmFsID0geGZzX2RpcjJfYmxvY2tfZ2V0ZGVudHModHAsIGRwLCB1aW8sIGVvZnAsIGRicCwgcHV0KTsKIAllbHNlCiAJCXJ2YWwgPSB4ZnNfZGlyMl9sZWFmX2dldGRlbnRzKHRwLCBkcCwgdWlvLCBlb2ZwLCBkYnAsIHB1dCk7CkBAIC0zODYsMjkgKzM0MCwyNiBAQAogLyoKICAqIFJlcGxhY2UgdGhlIGlub2RlIG51bWJlciBvZiBhIGRpcmVjdG9yeSBlbnRyeS4KICAqLwotc3RhdGljIGludAkJCQkvKiBlcnJvciAqLwoteGZzX2RpcjJfcmVwbGFjZSgKLQl4ZnNfdHJhbnNfdAkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJKmRwLAkJLyogaW5jb3JlIGRpcmVjdG9yeSBpbm9kZSAqLworaW50Cit4ZnNfZGlyX3JlcGxhY2UoCisJeGZzX3RyYW5zX3QJKnRwLAorCXhmc19pbm9kZV90CSpkcCwKIAljaGFyCQkqbmFtZSwJCS8qIG5hbWUgb2YgZW50cnkgdG8gcmVwbGFjZSAqLwotCWludAkJbmFtZWxlbiwJLyogbmFtZSBsZW5ndGggb2YgZW50cnkgdG8gcmVwbGFjZSAqLworCWludAkJbmFtZWxlbiwKIAl4ZnNfaW5vX3QJaW51bSwJCS8qIG5ldyBpbm9kZSBudW1iZXIgKi8KIAl4ZnNfZnNibG9ja190CSpmaXJzdCwJCS8qIGJtYXAncyBmaXJzdGJsb2NrICovCiAJeGZzX2JtYXBfZnJlZV90CSpmbGlzdCwJCS8qIGJtYXAncyBmcmVlYmxvY2sgbGlzdCAqLwogCXhmc19leHRsZW5fdAl0b3RhbCkJCS8qIGJtYXAncyB0b3RhbCBibG9jayBjb3VudCAqLwogewotCXhmc19kYV9hcmdzX3QJYXJnczsJCS8qIG9wZXJhdGlvbiBhcmd1bWVudHMgKi8KLQlpbnQJCXJ2YWw7CQkvKiByZXR1cm4gdmFsdWUgKi8KKwl4ZnNfZGFfYXJnc190CWFyZ3M7CisJaW50CQlydmFsOwogCWludAkJdjsJCS8qIHR5cGUtY2hlY2tpbmcgdmFsdWUgKi8KIAogCUFTU0VSVCgoZHAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKTsKIAotCWlmICgocnZhbCA9IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHRwLT50X21vdW50cCwgaW51bSkpKSB7CisJaWYgKChydmFsID0geGZzX2Rpcl9pbm9fdmFsaWRhdGUodHAtPnRfbW91bnRwLCBpbnVtKSkpCiAJCXJldHVybiBydmFsOwotCX0KLQkvKgotCSAqIEZpbGwgaW4gdGhlIGFyZyBzdHJ1Y3R1cmUgZm9yIHRoaXMgcmVxdWVzdC4KLQkgKi8KKwogCWFyZ3MubmFtZSA9IG5hbWU7CiAJYXJncy5uYW1lbGVuID0gbmFtZWxlbjsKIAlhcmdzLmhhc2h2YWwgPSB4ZnNfZGFfaGFzaG5hbWUobmFtZSwgbmFtZWxlbik7CkBAIC00MjAsMTggKzM3MSwxNiBAQAogCWFyZ3Mud2hpY2hmb3JrID0gWEZTX0RBVEFfRk9SSzsKIAlhcmdzLnRyYW5zID0gdHA7CiAJYXJncy5qdXN0Y2hlY2sgPSBhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAwOwotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLworCiAJaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKQogCQlydmFsID0geGZzX2RpcjJfc2ZfcmVwbGFjZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2Jsb2NrKHRwLCBkcCwgJnYpKSkgeworCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNibG9jayh0cCwgZHAsICZ2KSkpCiAJCXJldHVybiBydmFsOwotCX0gZWxzZSBpZiAodikKKwllbHNlIGlmICh2KQogCQlydmFsID0geGZzX2RpcjJfYmxvY2tfcmVwbGFjZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKSB7CisJZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKQogCQlyZXR1cm4gcnZhbDsKLQl9IGVsc2UgaWYgKHYpCisJZWxzZSBpZiAodikKIAkJcnZhbCA9IHhmc19kaXIyX2xlYWZfcmVwbGFjZSgmYXJncyk7CiAJZWxzZQogCQlydmFsID0geGZzX2RpcjJfbm9kZV9yZXBsYWNlKCZhcmdzKTsKQEAgLTQ0MSwyMSArMzkwLDE5IEBACiAvKgogICogU2VlIGlmIHRoaXMgZW50cnkgY2FuIGJlIGFkZGVkIHRvIHRoZSBkaXJlY3Rvcnkgd2l0aG91dCBhbGxvY2F0aW5nIHNwYWNlLgogICovCi1zdGF0aWMgaW50CQkJCS8qIGVycm9yICovCi14ZnNfZGlyMl9jYW5lbnRlcigKLQl4ZnNfdHJhbnNfdAkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJKmRwLAkJLyogaW5jb3JlIGRpcmVjdG9yeSBpbm9kZSAqLworaW50Cit4ZnNfZGlyX2NhbmVudGVyKAorCXhmc190cmFuc190CSp0cCwKKwl4ZnNfaW5vZGVfdAkqZHAsCiAJY2hhcgkJKm5hbWUsCQkvKiBuYW1lIG9mIGVudHJ5IHRvIGFkZCAqLwotCWludAkJbmFtZWxlbikJLyogbmFtZSBsZW5ndGggb2YgZW50cnkgdG8gYWRkICovCisJaW50CQluYW1lbGVuKQogewotCXhmc19kYV9hcmdzX3QJYXJnczsJCS8qIG9wZXJhdGlvbiBhcmd1bWVudHMgKi8KLQlpbnQJCXJ2YWw7CQkvKiByZXR1cm4gdmFsdWUgKi8KKwl4ZnNfZGFfYXJnc190CWFyZ3M7CisJaW50CQlydmFsOwogCWludAkJdjsJCS8qIHR5cGUtY2hlY2tpbmcgdmFsdWUgKi8KIAogCUFTU0VSVCgoZHAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGRElSKTsKLQkvKgotCSAqIEZpbGwgaW4gdGhlIGFyZyBzdHJ1Y3R1cmUgZm9yIHRoaXMgcmVxdWVzdC4KLQkgKi8KKwogCWFyZ3MubmFtZSA9IG5hbWU7CiAJYXJncy5uYW1lbGVuID0gbmFtZWxlbjsKIAlhcmdzLmhhc2h2YWwgPSB4ZnNfZGFfaGFzaG5hbWUobmFtZSwgbmFtZWxlbik7CkBAIC00NjcsMTggKzQxNCwxNiBAQAogCWFyZ3Mud2hpY2hmb3JrID0gWEZTX0RBVEFfRk9SSzsKIAlhcmdzLnRyYW5zID0gdHA7CiAJYXJncy5qdXN0Y2hlY2sgPSBhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCS8qCi0JICogRGVjaWRlIG9uIHdoYXQgd29yayByb3V0aW5lcyB0byBjYWxsIGJhc2VkIG9uIHRoZSBpbm9kZSBzaXplLgotCSAqLworCiAJaWYgKGRwLT5pX2QuZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKQogCQlydmFsID0geGZzX2RpcjJfc2ZfYWRkbmFtZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2Jsb2NrKHRwLCBkcCwgJnYpKSkgeworCWVsc2UgaWYgKChydmFsID0geGZzX2RpcjJfaXNibG9jayh0cCwgZHAsICZ2KSkpCiAJCXJldHVybiBydmFsOwotCX0gZWxzZSBpZiAodikKKwllbHNlIGlmICh2KQogCQlydmFsID0geGZzX2RpcjJfYmxvY2tfYWRkbmFtZSgmYXJncyk7Ci0JZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKSB7CisJZWxzZSBpZiAoKHJ2YWwgPSB4ZnNfZGlyMl9pc2xlYWYodHAsIGRwLCAmdikpKQogCQlyZXR1cm4gcnZhbDsKLQl9IGVsc2UgaWYgKHYpCisJZWxzZSBpZiAodikKIAkJcnZhbCA9IHhmc19kaXIyX2xlYWZfYWRkbmFtZSgmYXJncyk7CiAJZWxzZQogCQlydmFsID0geGZzX2RpcjJfbm9kZV9hZGRuYW1lKCZhcmdzKTsKQEAgLTQ4NiwxOSArNDMxLDYgQEAKIH0KIAogLyoKLSAqIER1bW15IHJvdXRpbmUgZm9yIHNob3J0Zm9ybSBpbm9kZSB2YWxpZGF0aW9uLgotICogQ2FuJ3QgcmVhbGx5IGRvIHRoaXMuCi0gKi8KLS8qIEFSR1NVU0VEICovCi1zdGF0aWMgaW50CQkJCS8qIGVycm9yICovCi14ZnNfZGlyMl9zaG9ydGZvcm1fdmFsaWRhdGVfb25kaXNrKAotCXhmc19tb3VudF90CSptcCwJCS8qIGZpbGVzeXN0ZW0gbW91bnQgcG9pbnQgKi8KLQl4ZnNfZGlub2RlX3QJKmRpcCkJCS8qIG9uZGlzayBpbm9kZSAqLwotewotCXJldHVybiAwOwotfQotCi0vKgogICogVXRpbGl0eSByb3V0aW5lcy4KICAqLwogCkBAIC01MDcsMjQgKzQzOSwyNCBAQAogICogVGhpcyByb3V0aW5lIGlzIGZvciBkYXRhIGFuZCBmcmVlIGJsb2Nrcywgbm90IGxlYWYvbm9kZSBibG9ja3MKICAqIHdoaWNoIGFyZSBoYW5kbGVkIGJ5IHhmc19kYV9ncm93X2lub2RlLgogICovCi1pbnQJCQkJCS8qIGVycm9yICovCitpbnQKIHhmc19kaXIyX2dyb3dfaW5vZGUoCi0JeGZzX2RhX2FyZ3NfdAkqYXJncywJCS8qIG9wZXJhdGlvbiBhcmd1bWVudHMgKi8KKwl4ZnNfZGFfYXJnc190CSphcmdzLAogCWludAkJc3BhY2UsCQkvKiB2MiBkaXIncyBzcGFjZSBYRlNfRElSMl94eHhfU1BBQ0UgKi8KIAl4ZnNfZGlyMl9kYl90CSpkYnApCQkvKiBvdXQ6IGJsb2NrIG51bWJlciBhZGRlZCAqLwogewogCXhmc19maWxlb2ZmX3QJYm5vOwkJLyogZGlyZWN0b3J5IG9mZnNldCBvZiBuZXcgYmxvY2sgKi8KIAlpbnQJCWNvdW50OwkJLyogY291bnQgb2YgZmlsZXN5c3RlbSBibG9ja3MgKi8KIAl4ZnNfaW5vZGVfdAkqZHA7CQkvKiBpbmNvcmUgZGlyZWN0b3J5IGlub2RlICovCi0JaW50CQllcnJvcjsJCS8qIGVycm9yIHJldHVybiB2YWx1ZSAqLworCWludAkJZXJyb3I7CiAJaW50CQlnb3Q7CQkvKiBibG9ja3MgYWN0dWFsbHkgbWFwcGVkICovCi0JaW50CQlpOwkJLyogdGVtcCBtYXBwaW5nIGluZGV4ICovCisJaW50CQlpOwogCXhmc19ibWJ0X2lyZWNfdAltYXA7CQkvKiBzaW5nbGUgc3RydWN0dXJlIGZvciBibWFwICovCiAJaW50CQltYXBpOwkJLyogbWFwcGluZyBpbmRleCAqLwogCXhmc19ibWJ0X2lyZWNfdAkqbWFwcDsJCS8qIGJtYXAgbWFwcGluZyBzdHJ1Y3R1cmUocykgKi8KLQl4ZnNfbW91bnRfdAkqbXA7CQkvKiBmaWxlc3lzdGVtIG1vdW50IHBvaW50ICovCisJeGZzX21vdW50X3QJKm1wOwogCWludAkJbm1hcDsJCS8qIG51bWJlciBvZiBibWFwIGVudHJpZXMgKi8KLQl4ZnNfdHJhbnNfdAkqdHA7CQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCisJeGZzX3RyYW5zX3QJKnRwOwogCiAJeGZzX2RpcjJfdHJhY2VfYXJnc19zKCJncm93X2lub2RlIiwgYXJncywgc3BhY2UpOwogCWRwID0gYXJncy0+ZHA7CkBAIC01MzgsOSArNDcwLDggQEAKIAkvKgogCSAqIEZpbmQgdGhlIGZpcnN0IGhvbGUgZm9yIG91ciBibG9jay4KIAkgKi8KLQlpZiAoKGVycm9yID0geGZzX2JtYXBfZmlyc3RfdW51c2VkKHRwLCBkcCwgY291bnQsICZibm8sIFhGU19EQVRBX0ZPUkspKSkgeworCWlmICgoZXJyb3IgPSB4ZnNfYm1hcF9maXJzdF91bnVzZWQodHAsIGRwLCBjb3VudCwgJmJubywgWEZTX0RBVEFfRk9SSykpKQogCQlyZXR1cm4gZXJyb3I7Ci0JfQogCW5tYXAgPSAxOwogCUFTU0VSVChhcmdzLT5maXJzdGJsb2NrICE9IE5VTEwpOwogCS8qCkBAIC01NDksMTMgKzQ4MCw5IEBACiAJaWYgKChlcnJvciA9IHhmc19ibWFwaSh0cCwgZHAsIGJubywgY291bnQsCiAJCQlYRlNfQk1BUElfV1JJVEV8WEZTX0JNQVBJX01FVEFEQVRBfFhGU19CTUFQSV9DT05USUcsCiAJCQlhcmdzLT5maXJzdGJsb2NrLCBhcmdzLT50b3RhbCwgJm1hcCwgJm5tYXAsCi0JCQlhcmdzLT5mbGlzdCkpKSB7CisJCQlhcmdzLT5mbGlzdCwgTlVMTCkpKQogCQlyZXR1cm4gZXJyb3I7Ci0JfQogCUFTU0VSVChubWFwIDw9IDEpOwotCS8qCi0JICogR290IGl0IGluIDEuCi0JICovCiAJaWYgKG5tYXAgPT0gMSkgewogCQltYXBwID0gJm1hcDsKIAkJbWFwaSA9IDE7CkBAIC01ODUsNyArNTEyLDggQEAKIAkJCWlmICgoZXJyb3IgPSB4ZnNfYm1hcGkodHAsIGRwLCBiLCBjLAogCQkJCQlYRlNfQk1BUElfV1JJVEV8WEZTX0JNQVBJX01FVEFEQVRBLAogCQkJCQlhcmdzLT5maXJzdGJsb2NrLCBhcmdzLT50b3RhbCwKLQkJCQkJJm1hcHBbbWFwaV0sICZubWFwLCBhcmdzLT5mbGlzdCkpKSB7CisJCQkJCSZtYXBwW21hcGldLCAmbm1hcCwgYXJncy0+Zmxpc3QsCisJCQkJCU5VTEwpKSkgewogCQkJCWttZW1fZnJlZShtYXBwLCBzaXplb2YoKm1hcHApICogY291bnQpOwogCQkJCXJldHVybiBlcnJvcjsKIAkJCX0KQEAgLTY0NSwyMCArNTczLDE5IEBACiAvKgogICogU2VlIGlmIHRoZSBkaXJlY3RvcnkgaXMgYSBzaW5nbGUtYmxvY2sgZm9ybSBkaXJlY3RvcnkuCiAgKi8KLWludAkJCQkJLyogZXJyb3IgKi8KK2ludAogeGZzX2RpcjJfaXNibG9jaygKLQl4ZnNfdHJhbnNfdAkqdHAsCQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCi0JeGZzX2lub2RlX3QJKmRwLAkJLyogaW5jb3JlIGRpcmVjdG9yeSBpbm9kZSAqLworCXhmc190cmFuc190CSp0cCwKKwl4ZnNfaW5vZGVfdAkqZHAsCiAJaW50CQkqdnApCQkvKiBvdXQ6IDEgaXMgYmxvY2ssIDAgaXMgbm90IGJsb2NrICovCiB7CiAJeGZzX2ZpbGVvZmZfdAlsYXN0OwkJLyogbGFzdCBmaWxlIG9mZnNldCAqLwotCXhmc19tb3VudF90CSptcDsJCS8qIGZpbGVzeXN0ZW0gbW91bnQgcG9pbnQgKi8KLQlpbnQJCXJ2YWw7CQkvKiByZXR1cm4gdmFsdWUgKi8KKwl4ZnNfbW91bnRfdAkqbXA7CisJaW50CQlydmFsOwogCiAJbXAgPSBkcC0+aV9tb3VudDsKLQlpZiAoKHJ2YWwgPSB4ZnNfYm1hcF9sYXN0X29mZnNldCh0cCwgZHAsICZsYXN0LCBYRlNfREFUQV9GT1JLKSkpIHsKKwlpZiAoKHJ2YWwgPSB4ZnNfYm1hcF9sYXN0X29mZnNldCh0cCwgZHAsICZsYXN0LCBYRlNfREFUQV9GT1JLKSkpCiAJCXJldHVybiBydmFsOwotCX0KIAlydmFsID0gWEZTX0ZTQl9UT19CKG1wLCBsYXN0KSA9PSBtcC0+bV9kaXJibGtzaXplOwogCUFTU0VSVChydmFsID09IDAgfHwgZHAtPmlfZC5kaV9zaXplID09IG1wLT5tX2RpcmJsa3NpemUpOwogCSp2cCA9IHJ2YWw7CkBAIC02NjgsMjAgKzU5NSwxOSBAQAogLyoKICAqIFNlZSBpZiB0aGUgZGlyZWN0b3J5IGlzIGEgc2luZ2xlLWxlYWYgZm9ybSBkaXJlY3RvcnkuCiAgKi8KLWludAkJCQkJLyogZXJyb3IgKi8KK2ludAogeGZzX2RpcjJfaXNsZWFmKAotCXhmc190cmFuc190CSp0cCwJCS8qIHRyYW5zYWN0aW9uIHBvaW50ZXIgKi8KLQl4ZnNfaW5vZGVfdAkqZHAsCQkvKiBpbmNvcmUgZGlyZWN0b3J5IGlub2RlICovCisJeGZzX3RyYW5zX3QJKnRwLAorCXhmc19pbm9kZV90CSpkcCwKIAlpbnQJCSp2cCkJCS8qIG91dDogMSBpcyBsZWFmLCAwIGlzIG5vdCBsZWFmICovCiB7CiAJeGZzX2ZpbGVvZmZfdAlsYXN0OwkJLyogbGFzdCBmaWxlIG9mZnNldCAqLwotCXhmc19tb3VudF90CSptcDsJCS8qIGZpbGVzeXN0ZW0gbW91bnQgcG9pbnQgKi8KLQlpbnQJCXJ2YWw7CQkvKiByZXR1cm4gdmFsdWUgKi8KKwl4ZnNfbW91bnRfdAkqbXA7CisJaW50CQlydmFsOwogCiAJbXAgPSBkcC0+aV9tb3VudDsKLQlpZiAoKHJ2YWwgPSB4ZnNfYm1hcF9sYXN0X29mZnNldCh0cCwgZHAsICZsYXN0LCBYRlNfREFUQV9GT1JLKSkpIHsKKwlpZiAoKHJ2YWwgPSB4ZnNfYm1hcF9sYXN0X29mZnNldCh0cCwgZHAsICZsYXN0LCBYRlNfREFUQV9GT1JLKSkpCiAJCXJldHVybiBydmFsOwotCX0KIAkqdnAgPSBsYXN0ID09IG1wLT5tX2RpcmxlYWZibGsgKyAoMSA8PCBtcC0+bV9zYi5zYl9kaXJibGtsb2cpOwogCXJldHVybiAwOwogfQpAQCAtNjg5LDkgKzYxNSw5IEBACiAvKgogICogR2V0ZGVudHMgcHV0IHJvdXRpbmUgZm9yIDY0LWJpdCBBQkksIGRpcmVjdCBmb3JtLgogICovCi1zdGF0aWMgaW50CQkJCQkvKiBlcnJvciAqLworc3RhdGljIGludAogeGZzX2RpcjJfcHV0X2RpcmVudDY0X2RpcmVjdCgKLQl4ZnNfZGlyMl9wdXRfYXJnc190CSpwYSkJCS8qIGFyZ3VtZW50IGJ1bmRsZSAqLworCXhmc19kaXIyX3B1dF9hcmdzX3QJKnBhKQogewogCXhmc19kaXJlbnRfdAkJKmlkYnA7CQkvKiBkaXJlbnQgcG9pbnRlciAqLwogCWlvdmVjX3QJCQkqaW92cDsJCS8qIGlvIHZlY3RvciAqLwpAQCAtNzI2LDkgKzY1Miw5IEBACiAvKgogICogR2V0ZGVudHMgcHV0IHJvdXRpbmUgZm9yIDY0LWJpdCBBQkksIHVpbyBmb3JtLgogICovCi1zdGF0aWMgaW50CQkJCQkvKiBlcnJvciAqLworc3RhdGljIGludAogeGZzX2RpcjJfcHV0X2RpcmVudDY0X3VpbygKLQl4ZnNfZGlyMl9wdXRfYXJnc190CSpwYSkJCS8qIGFyZ3VtZW50IGJ1bmRsZSAqLworCXhmc19kaXIyX3B1dF9hcmdzX3QJKnBhKQogewogCXhmc19kaXJlbnRfdAkJKmlkYnA7CQkvKiBkaXJlbnQgcG9pbnRlciAqLwogCWludAkJCW5hbWVsZW47CS8qIGVudHJ5IG5hbWUgbGVuZ3RoICovCkBAIC03NjQsMTcgKzY5MCwxNyBAQAogICovCiBpbnQKIHhmc19kaXIyX3Nocmlua19pbm9kZSgKLQl4ZnNfZGFfYXJnc190CSphcmdzLAkJLyogb3BlcmF0aW9uIGFyZ3VtZW50cyAqLwotCXhmc19kaXIyX2RiX3QJZGIsCQkvKiBkaXJlY3RvcnkgYmxvY2sgbnVtYmVyICovCi0JeGZzX2RhYnVmX3QJKmJwKQkJLyogYmxvY2sncyBidWZmZXIgKi8KKwl4ZnNfZGFfYXJnc190CSphcmdzLAorCXhmc19kaXIyX2RiX3QJZGIsCisJeGZzX2RhYnVmX3QJKmJwKQogewogCXhmc19maWxlb2ZmX3QJYm5vOwkJLyogZGlyZWN0b3J5IGZpbGUgb2Zmc2V0ICovCiAJeGZzX2RhYmxrX3QJZGE7CQkvKiBkaXJlY3RvcnkgZmlsZSBvZmZzZXQgKi8KIAlpbnQJCWRvbmU7CQkvKiBidW5tYXAgaXMgZmluaXNoZWQgKi8KLQl4ZnNfaW5vZGVfdAkqZHA7CQkvKiBpbmNvcmUgZGlyZWN0b3J5IGlub2RlICovCi0JaW50CQllcnJvcjsJCS8qIGVycm9yIHJldHVybiB2YWx1ZSAqLwotCXhmc19tb3VudF90CSptcDsJCS8qIGZpbGVzeXN0ZW0gbW91bnQgcG9pbnQgKi8KLQl4ZnNfdHJhbnNfdAkqdHA7CQkvKiB0cmFuc2FjdGlvbiBwb2ludGVyICovCisJeGZzX2lub2RlX3QJKmRwOworCWludAkJZXJyb3I7CisJeGZzX21vdW50X3QJKm1wOworCXhmc190cmFuc190CSp0cDsKIAogCXhmc19kaXIyX3RyYWNlX2FyZ3NfZGIoInNocmlua19pbm9kZSIsIGFyZ3MsIGRiLCBicCk7CiAJZHAgPSBhcmdzLT5kcDsKQEAgLTc4Niw3ICs3MTIsNyBAQAogCSAqLwogCWlmICgoZXJyb3IgPSB4ZnNfYnVubWFwaSh0cCwgZHAsIGRhLCBtcC0+bV9kaXJibGtmc2JzLAogCQkJWEZTX0JNQVBJX01FVEFEQVRBLCAwLCBhcmdzLT5maXJzdGJsb2NrLCBhcmdzLT5mbGlzdCwKLQkJCSZkb25lKSkpIHsKKwkJCU5VTEwsICZkb25lKSkpIHsKIAkJLyoKIAkJICogRU5PU1BDIGFjdHVhbGx5IGNhbiBoYXBwZW4gaWYgd2UncmUgaW4gYSByZW1vdmVuYW1lIHdpdGgKIAkJICogbm8gc3BhY2UgcmVzZXJ2YXRpb24sIGFuZCB0aGUgcmVzdWx0aW5nIGJsb2NrIHJlbW92YWwKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGlyMi5oIGIvZnMveGZzL3hmc19kaXIyLmgKaW5kZXggN2RkMzY0Yi4uODY1NjBiNiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19kaXIyLmgKKysrIGIvZnMveGZzL3hmc19kaXIyLmgKQEAgLTIyLDcgKzIyLDkgQEAKIHN0cnVjdCB4ZnNfZGFidWY7CiBzdHJ1Y3QgeGZzX2RhX2FyZ3M7CiBzdHJ1Y3QgeGZzX2RpcjJfcHV0X2FyZ3M7CitzdHJ1Y3QgeGZzX2JtYXBfZnJlZTsKIHN0cnVjdCB4ZnNfaW5vZGU7CitzdHJ1Y3QgeGZzX21vdW50Owogc3RydWN0IHhmc190cmFuczsKIAogLyoKQEAgLTczLDcgKzc1LDM1IEBACiB9IHhmc19kaXIyX3B1dF9hcmdzX3Q7CiAKIC8qCi0gKiBPdGhlciBpbnRlcmZhY2VzIHVzZWQgYnkgdGhlIHJlc3Qgb2YgdGhlIGRpciB2MiBjb2RlLgorICogR2VuZXJpYyBkaXJlY3RvcnkgaW50ZXJmYWNlIHJvdXRpbmVzCisgKi8KK2V4dGVybiB2b2lkIHhmc19kaXJfc3RhcnR1cCh2b2lkKTsKK2V4dGVybiB2b2lkIHhmc19kaXJfbW91bnQoc3RydWN0IHhmc19tb3VudCAqbXApOworZXh0ZXJuIGludCB4ZnNfZGlyX2lzZW1wdHkoc3RydWN0IHhmc19pbm9kZSAqZHApOworZXh0ZXJuIGludCB4ZnNfZGlyX2luaXQoc3RydWN0IHhmc190cmFucyAqdHAsIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAorCQkJCXN0cnVjdCB4ZnNfaW5vZGUgKnBkcCk7CitleHRlcm4gaW50IHhmc19kaXJfY3JlYXRlbmFtZShzdHJ1Y3QgeGZzX3RyYW5zICp0cCwgc3RydWN0IHhmc19pbm9kZSAqZHAsCisJCQkJY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sIHhmc19pbm9fdCBpbnVtLAorCQkJCXhmc19mc2Jsb2NrX3QgKmZpcnN0LAorCQkJCXN0cnVjdCB4ZnNfYm1hcF9mcmVlICpmbGlzdCwgeGZzX2V4dGxlbl90IHRvdCk7CitleHRlcm4gaW50IHhmc19kaXJfbG9va3VwKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwKKwkJCQljaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgeGZzX2lub190ICppbnVtKTsKK2V4dGVybiBpbnQgeGZzX2Rpcl9yZW1vdmVuYW1lKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwKKwkJCQljaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgeGZzX2lub190IGlubywKKwkJCQl4ZnNfZnNibG9ja190ICpmaXJzdCwKKwkJCQlzdHJ1Y3QgeGZzX2JtYXBfZnJlZSAqZmxpc3QsIHhmc19leHRsZW5fdCB0b3QpOworZXh0ZXJuIGludCB4ZnNfZGlyX2dldGRlbnRzKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwKKwkJCQl1aW9fdCAqdWlvLCBpbnQgKmVvZnApOworZXh0ZXJuIGludCB4ZnNfZGlyX3JlcGxhY2Uoc3RydWN0IHhmc190cmFucyAqdHAsIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAorCQkJCWNoYXIgKm5hbWUsIGludCBuYW1lbGVuLCB4ZnNfaW5vX3QgaW51bSwKKwkJCQl4ZnNfZnNibG9ja190ICpmaXJzdCwKKwkJCQlzdHJ1Y3QgeGZzX2JtYXBfZnJlZSAqZmxpc3QsIHhmc19leHRsZW5fdCB0b3QpOworZXh0ZXJuIGludCB4ZnNfZGlyX2NhbmVudGVyKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwKKwkJCQljaGFyICpuYW1lLCBpbnQgbmFtZWxlbik7CitleHRlcm4gaW50IHhmc19kaXJfaW5vX3ZhbGlkYXRlKHN0cnVjdCB4ZnNfbW91bnQgKm1wLCB4ZnNfaW5vX3QgaW5vKTsKKworLyoKKyAqIFV0aWxpdHkgcm91dGluZXMgZm9yIHYyIGRpcmVjdG9yaWVzLgogICovCiBleHRlcm4gaW50IHhmc19kaXIyX2dyb3dfaW5vZGUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzLCBpbnQgc3BhY2UsCiAJCQkJeGZzX2RpcjJfZGJfdCAqZGJwKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGlyMl9ibG9jay5jIGIvZnMveGZzL3hmc19kaXIyX2Jsb2NrLmMKaW5kZXggOTcyZGVkNS4uOWQ3NDM4YiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19kaXIyX2Jsb2NrLmMKKysrIGIvZnMveGZzL3hmc19kaXIyX2Jsb2NrLmMKQEAgLTIyLDE5ICsyMiwxNiBAQAogI2luY2x1ZGUgInhmc19pbnVtLmgiCiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2RhX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKICNpbmNsdWRlICJ4ZnNfaW5vZGUuaCIKICNpbmNsdWRlICJ4ZnNfaW5vZGVfaXRlbS5oIgotI2luY2x1ZGUgInhmc19kaXJfbGVhZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX2RhdGEuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9sZWFmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfYmxvY2suaCIKQEAgLTUxLDYgKzQ4LDE4IEBACiAJCQkJICAgICBpbnQgKmVudG5vKTsKIHN0YXRpYyBpbnQgeGZzX2RpcjJfYmxvY2tfc29ydChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIAorc3RhdGljIHhmc19kYWhhc2hfdCB4ZnNfZGlyX2hhc2hfZG90LCB4ZnNfZGlyX2hhc2hfZG90ZG90OworCisvKgorICogT25lLXRpbWUgc3RhcnR1cCByb3V0aW5lIGNhbGxlZCBmcm9tIHhmc19pbml0KCkuCisgKi8KK3ZvaWQKK3hmc19kaXJfc3RhcnR1cCh2b2lkKQoreworCXhmc19kaXJfaGFzaF9kb3QgPSB4ZnNfZGFfaGFzaG5hbWUoIi4iLCAxKTsKKwl4ZnNfZGlyX2hhc2hfZG90ZG90ID0geGZzX2RhX2hhc2huYW1lKCIuLiIsIDIpOworfQorCiAvKgogICogQWRkIGFuIGVudHJ5IHRvIGEgYmxvY2sgZGlyZWN0b3J5LgogICovCkBAIC00MDAsNyArNDA5LDcgQEAKIAkvKgogCSAqIENyZWF0ZSB0aGUgbmV3IGRhdGEgZW50cnkuCiAJICovCi0JSU5UX1NFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCwgYXJncy0+aW51bWJlcik7CisJZGVwLT5pbnVtYmVyID0gY3B1X3RvX2JlNjQoYXJncy0+aW51bWJlcik7CiAJZGVwLT5uYW1lbGVuID0gYXJncy0+bmFtZWxlbjsKIAltZW1jcHkoZGVwLT5uYW1lLCBhcmdzLT5uYW1lLCBhcmdzLT5uYW1lbGVuKTsKIAl0YWdwID0gWEZTX0RJUjJfREFUQV9FTlRSWV9UQUdfUChkZXApOwpAQCAtNTA4LDcgKzUxNyw3IEBACiAKIAkJcC5jb29rID0gWEZTX0RJUjJfREJfT0ZGX1RPX0RBVEFQVFIobXAsIG1wLT5tX2RpcmRhdGFibGssCiAJCQkJCQkgICAgcHRyIC0gKGNoYXIgKilibG9jayk7Ci0JCXAuaW5vID0gSU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCk7CisJCXAuaW5vID0gYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKTsKICNpZiBYRlNfQklHX0lOVU1TCiAJCXAuaW5vICs9IG1wLT5tX2lub2FkZDsKICNlbmRpZgpAQCAtNjI2LDcgKzYzNSw3IEBACiAJLyoKIAkgKiBGaWxsIGluIGlub2RlIG51bWJlciwgcmVsZWFzZSB0aGUgYmxvY2suCiAJICovCi0JYXJncy0+aW51bWJlciA9IElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpOworCWFyZ3MtPmludW1iZXIgPSBiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpOwogCXhmc19kYV9icmVsc2UoYXJncy0+dHJhbnMsIGJwKTsKIAlyZXR1cm4gWEZTX0VSUk9SKEVFWElTVCk7CiB9CkBAIC04NDQsMTEgKzg1MywxMSBAQAogCSAqLwogCWRlcCA9ICh4ZnNfZGlyMl9kYXRhX2VudHJ5X3QgKikKIAkgICAgICAoKGNoYXIgKilibG9jayArIFhGU19ESVIyX0RBVEFQVFJfVE9fT0ZGKG1wLCBiZTMyX3RvX2NwdShibHBbZW50XS5hZGRyZXNzKSkpOwotCUFTU0VSVChJTlRfR0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJUKSAhPSBhcmdzLT5pbnVtYmVyKTsKKwlBU1NFUlQoYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKSAhPSBhcmdzLT5pbnVtYmVyKTsKIAkvKgogCSAqIENoYW5nZSB0aGUgaW5vZGUgbnVtYmVyIHRvIHRoZSBuZXcgdmFsdWUuCiAJICovCi0JSU5UX1NFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCwgYXJncy0+aW51bWJlcik7CisJZGVwLT5pbnVtYmVyID0gY3B1X3RvX2JlNjQoYXJncy0+aW51bWJlcik7CiAJeGZzX2RpcjJfZGF0YV9sb2dfZW50cnkoYXJncy0+dHJhbnMsIGJwLCBkZXApOwogCXhmc19kaXIyX2RhdGFfY2hlY2soZHAsIGJwKTsKIAl4ZnNfZGFfYnVmX2RvbmUoYnApOwpAQCAtMTEzMCw3ICsxMTM5LDcgQEAKIAkgKi8KIAlkZXAgPSAoeGZzX2RpcjJfZGF0YV9lbnRyeV90ICopCiAJICAgICAgKChjaGFyICopYmxvY2sgKyBYRlNfRElSMl9EQVRBX0RPVF9PRkZTRVQpOwotCUlOVF9TRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQsIGRwLT5pX2lubyk7CisJZGVwLT5pbnVtYmVyID0gY3B1X3RvX2JlNjQoZHAtPmlfaW5vKTsKIAlkZXAtPm5hbWVsZW4gPSAxOwogCWRlcC0+bmFtZVswXSA9ICcuJzsKIAl0YWdwID0gWEZTX0RJUjJfREFUQV9FTlRSWV9UQUdfUChkZXApOwpAQCAtMTE0NCw3ICsxMTUzLDcgQEAKIAkgKi8KIAlkZXAgPSAoeGZzX2RpcjJfZGF0YV9lbnRyeV90ICopCiAJCSgoY2hhciAqKWJsb2NrICsgWEZTX0RJUjJfREFUQV9ET1RET1RfT0ZGU0VUKTsKLQlJTlRfU0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJULCBYRlNfRElSMl9TRl9HRVRfSU5VTUJFUihzZnAsICZzZnAtPmhkci5wYXJlbnQpKTsKKwlkZXAtPmludW1iZXIgPSBjcHVfdG9fYmU2NChYRlNfRElSMl9TRl9HRVRfSU5VTUJFUihzZnAsICZzZnAtPmhkci5wYXJlbnQpKTsKIAlkZXAtPm5hbWVsZW4gPSAyOwogCWRlcC0+bmFtZVswXSA9IGRlcC0+bmFtZVsxXSA9ICcuJzsKIAl0YWdwID0gWEZTX0RJUjJfREFUQV9FTlRSWV9UQUdfUChkZXApOwpAQCAtMTE5Myw3ICsxMjAyLDcgQEAKIAkJICogQ29weSBhIHJlYWwgZW50cnkuCiAJCSAqLwogCQlkZXAgPSAoeGZzX2RpcjJfZGF0YV9lbnRyeV90ICopKChjaGFyICopYmxvY2sgKyBuZXdvZmZzZXQpOwotCQlJTlRfU0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJULCBYRlNfRElSMl9TRl9HRVRfSU5VTUJFUihzZnAsCisJCWRlcC0+aW51bWJlciA9IGNwdV90b19iZTY0KFhGU19ESVIyX1NGX0dFVF9JTlVNQkVSKHNmcCwKIAkJCQlYRlNfRElSMl9TRl9JTlVNQkVSUChzZmVwKSkpOwogCQlkZXAtPm5hbWVsZW4gPSBzZmVwLT5uYW1lbGVuOwogCQltZW1jcHkoZGVwLT5uYW1lLCBzZmVwLT5uYW1lLCBkZXAtPm5hbWVsZW4pOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXIyX2RhdGEuYyBiL2ZzL3hmcy94ZnNfZGlyMl9kYXRhLmMKaW5kZXggYmIzZDAzZi4uZjdjNzk5MiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19kaXIyX2RhdGEuYworKysgYi9mcy94ZnMveGZzX2RpcjJfZGF0YS5jCkBAIC0yMiwxOCArMjIsMTUgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9sZWFmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfZGF0YS5oIgogI2luY2x1ZGUgInhmc19kaXIyX2xlYWYuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9ibG9jay5oIgpAQCAtMTMzLDcgKzEzMCw3IEBACiAJCSAqLwogCQlkZXAgPSAoeGZzX2RpcjJfZGF0YV9lbnRyeV90ICopcDsKIAkJQVNTRVJUKGRlcC0+bmFtZWxlbiAhPSAwKTsKLQkJQVNTRVJUKHhmc19kaXJfaW5vX3ZhbGlkYXRlKG1wLCBJTlRfR0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJUKSkgPT0gMCk7CisJCUFTU0VSVCh4ZnNfZGlyX2lub192YWxpZGF0ZShtcCwgYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKSkgPT0gMCk7CiAJCUFTU0VSVChiZTE2X3RvX2NwdSgqWEZTX0RJUjJfREFUQV9FTlRSWV9UQUdfUChkZXApKSA9PQogCQkgICAgICAgKGNoYXIgKilkZXAgLSAoY2hhciAqKWQpOwogCQljb3VudCsrOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXIyX2RhdGEuaCBiL2ZzL3hmcy94ZnNfZGlyMl9kYXRhLmgKaW5kZXggMDg0N2NiYi4uYTZhZTJkMiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19kaXIyX2RhdGEuaAorKysgYi9mcy94ZnMveGZzX2RpcjJfZGF0YS5oCkBAIC04NSwxMSArODUsMTEgQEAKICAqIFRhZyBhcHBlYXJzIGFzIHRoZSBsYXN0IDIgYnl0ZXMuCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgewotCXhmc19pbm9fdAkJaW51bWJlcjsJLyogaW5vZGUgbnVtYmVyICovCi0JX191aW50OF90CQluYW1lbGVuOwkvKiBuYW1lIGxlbmd0aCAqLwotCV9fdWludDhfdAkJbmFtZVsxXTsJLyogbmFtZSBieXRlcywgbm8gbnVsbCAqLworCV9fYmU2NAkJCWludW1iZXI7CS8qIGlub2RlIG51bWJlciAqLworCV9fdTgJCQluYW1lbGVuOwkvKiBuYW1lIGxlbmd0aCAqLworCV9fdTgJCQluYW1lWzFdOwkvKiBuYW1lIGJ5dGVzLCBubyBudWxsICovCiAJCQkJCQkvKiB2YXJpYWJsZSBvZmZzZXQgKi8KLQl4ZnNfZGlyMl9kYXRhX29mZl90CXRhZzsJCS8qIHN0YXJ0aW5nIG9mZnNldCBvZiB1cyAqLworCV9fYmUxNgkJCXRhZzsJCS8qIHN0YXJ0aW5nIG9mZnNldCBvZiB1cyAqLwogfSB4ZnNfZGlyMl9kYXRhX2VudHJ5X3Q7CiAKIC8qCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2RpcjJfbGVhZi5jIGIvZnMveGZzL3hmc19kaXIyX2xlYWYuYwppbmRleCAwZjVlMmYyLi5iMWNmMWZiIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2RpcjJfbGVhZi5jCisrKyBiL2ZzL3hmcy94ZnNfZGlyMl9sZWFmLmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlLmgiCkBAIC00MDcsNyArNDA1LDcgQEAKIAkgKiBJbml0aWFsaXplIG91ciBuZXcgZW50cnkgKGF0IGxhc3QpLgogCSAqLwogCWRlcCA9ICh4ZnNfZGlyMl9kYXRhX2VudHJ5X3QgKilkdXA7Ci0JSU5UX1NFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCwgYXJncy0+aW51bWJlcik7CisJZGVwLT5pbnVtYmVyID0gY3B1X3RvX2JlNjQoYXJncy0+aW51bWJlcik7CiAJZGVwLT5uYW1lbGVuID0gYXJncy0+bmFtZWxlbjsKIAltZW1jcHkoZGVwLT5uYW1lLCBhcmdzLT5uYW1lLCBkZXAtPm5hbWVsZW4pOwogCXRhZ3AgPSBYRlNfRElSMl9EQVRBX0VOVFJZX1RBR19QKGRlcCk7CkBAIC04ODQsNyArODgyLDcgQEAKIAkJCQkJWEZTX0RJUjJfQllURV9UT19EQShtcCwKIAkJCQkJCVhGU19ESVIyX0xFQUZfT0ZGU0VUKSAtIG1hcF9vZmYsCiAJCQkJCVhGU19CTUFQSV9NRVRBREFUQSwgTlVMTCwgMCwKLQkJCQkJJm1hcFttYXBfdmFsaWRdLCAmbm1hcCwgTlVMTCk7CisJCQkJCSZtYXBbbWFwX3ZhbGlkXSwgJm5tYXAsIE5VTEwsIE5VTEwpOwogCQkJCS8qCiAJCQkJICogRG9uJ3Qga25vdyBpZiB3ZSBzaG91bGQgaWdub3JlIHRoaXMgb3IKIAkJCQkgKiB0cnkgdG8gcmV0dXJuIGFuIGVycm9yLgpAQCAtMTA5OCw3ICsxMDk2LDcgQEAKIAogCQlwLT5jb29rID0gWEZTX0RJUjJfQllURV9UT19EQVRBUFRSKG1wLCBjdXJvZmYgKyBsZW5ndGgpOwogCi0JCXAtPmlubyA9IElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpOworCQlwLT5pbm8gPSBiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpOwogI2lmIFhGU19CSUdfSU5VTVMKIAkJcC0+aW5vICs9IG1wLT5tX2lub2FkZDsKICNlbmRpZgpAQCAtMTMxOSw3ICsxMzE3LDcgQEAKIAkvKgogCSAqIFJldHVybiB0aGUgZm91bmQgaW5vZGUgbnVtYmVyLgogCSAqLwotCWFyZ3MtPmludW1iZXIgPSBJTlRfR0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJUKTsKKwlhcmdzLT5pbnVtYmVyID0gYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKTsKIAl4ZnNfZGFfYnJlbHNlKHRwLCBkYnApOwogCXhmc19kYV9icmVsc2UodHAsIGxicCk7CiAJcmV0dXJuIFhGU19FUlJPUihFRVhJU1QpOwpAQCAtMTYwNiwxMSArMTYwNCwxMSBAQAogCWRlcCA9ICh4ZnNfZGlyMl9kYXRhX2VudHJ5X3QgKikKIAkgICAgICAoKGNoYXIgKilkYnAtPmRhdGEgKwogCSAgICAgICBYRlNfRElSMl9EQVRBUFRSX1RPX09GRihkcC0+aV9tb3VudCwgYmUzMl90b19jcHUobGVwLT5hZGRyZXNzKSkpOwotCUFTU0VSVChhcmdzLT5pbnVtYmVyICE9IElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpKTsKKwlBU1NFUlQoYXJncy0+aW51bWJlciAhPSBiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpKTsKIAkvKgogCSAqIFB1dCB0aGUgbmV3IGlub2RlIG51bWJlciBpbiwgbG9nIGl0LgogCSAqLwotCUlOVF9TRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQsIGFyZ3MtPmludW1iZXIpOworCWRlcC0+aW51bWJlciA9IGNwdV90b19iZTY0KGFyZ3MtPmludW1iZXIpOwogCXRwID0gYXJncy0+dHJhbnM7CiAJeGZzX2RpcjJfZGF0YV9sb2dfZW50cnkodHAsIGRicCwgZGVwKTsKIAl4ZnNfZGFfYnVmX2RvbmUoZGJwKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZGlyMl9ub2RlLmMgYi9mcy94ZnMveGZzX2RpcjJfbm9kZS5jCmluZGV4IGFjNTExYWIuLjljYTcxNzEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlyMl9ub2RlLmMKKysrIGIvZnMveGZzL3hmc19kaXIyX25vZGUuYwpAQCAtMjIsMTMgKzIyLDExIEBACiAjaW5jbHVkZSAieGZzX2ludW0uaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfZGFfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNTA1LDcgKzUwMyw2IEBACiAJCQkJCQkJWEZTX0RBVEFfRk9SSykpKSB7CiAJCQkJCQlyZXR1cm4gZXJyb3I7CiAJCQkJCX0KLQkJCQkJY3VyZmRiID0gbmV3ZmRiOwogCQkJCQlmcmVlID0gY3VyYnAtPmRhdGE7CiAJCQkJCUFTU0VSVChiZTMyX3RvX2NwdShmcmVlLT5oZHIubWFnaWMpID09CiAJCQkJCSAgICAgICBYRlNfRElSMl9GUkVFX01BR0lDKTsKQEAgLTUyNyw4ICs1MjQsMTEgQEAKIAkJCQlpZiAodW5saWtlbHkoYmUxNl90b19jcHUoZnJlZS0+YmVzdHNbZmldKSA9PSBOVUxMREFUQU9GRikpIHsKIAkJCQkJWEZTX0VSUk9SX1JFUE9SVCgieGZzX2RpcjJfbGVhZm5fbG9va3VwX2ludCIsCiAJCQkJCQkJIFhGU19FUlJMRVZFTF9MT1csIG1wKTsKKwkJCQkJaWYgKGN1cmZkYiAhPSBuZXdmZGIpCisJCQkJCQl4ZnNfZGFfYnJlbHNlKHRwLCBjdXJicCk7CiAJCQkJCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKIAkJCQl9CisJCQkJY3VyZmRiID0gbmV3ZmRiOwogCQkJCWlmIChiZTE2X3RvX2NwdShmcmVlLT5iZXN0c1tmaV0pID49IGxlbmd0aCkgewogCQkJCQkqaW5kZXhwID0gaW5kZXg7CiAJCQkJCXN0YXRlLT5leHRyYXZhbGlkID0gMTsKQEAgLTU4MCw3ICs1ODAsNyBAQAogCQkJaWYgKGRlcC0+bmFtZWxlbiA9PSBhcmdzLT5uYW1lbGVuICYmCiAJCQkgICAgZGVwLT5uYW1lWzBdID09IGFyZ3MtPm5hbWVbMF0gJiYKIAkJCSAgICBtZW1jbXAoZGVwLT5uYW1lLCBhcmdzLT5uYW1lLCBhcmdzLT5uYW1lbGVuKSA9PSAwKSB7Ci0JCQkJYXJncy0+aW51bWJlciA9IElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpOworCQkJCWFyZ3MtPmludW1iZXIgPSBiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpOwogCQkJCSppbmRleHAgPSBpbmRleDsKIAkJCQlzdGF0ZS0+ZXh0cmF2YWxpZCA9IDE7CiAJCQkJc3RhdGUtPmV4dHJhYmxrLmJwID0gY3VyYnA7CkBAIC05NzAsNyArOTcwLDcgQEAKIAkJCS8qCiAJCQkgKiBPbmUgbGVzcyB1c2VkIGVudHJ5IGluIHRoZSBmcmVlIHRhYmxlLgogCQkJICovCi0JCQlmcmVlLT5oZHIubnVzZWQgPSBjcHVfdG9fYmUzMigtMSk7CisJCQliZTMyX2FkZCgmZnJlZS0+aGRyLm51c2VkLCAtMSk7CiAJCQl4ZnNfZGlyMl9mcmVlX2xvZ19oZWFkZXIodHAsIGZicCk7CiAJCQkvKgogCQkJICogSWYgdGhpcyB3YXMgdGhlIGxhc3QgZW50cnkgaW4gdGhlIHRhYmxlLCB3ZSBjYW4KQEAgLTE2OTUsNyArMTY5NSw3IEBACiAJICogRmlsbCBpbiB0aGUgbmV3IGVudHJ5IGFuZCBsb2cgaXQuCiAJICovCiAJZGVwID0gKHhmc19kaXIyX2RhdGFfZW50cnlfdCAqKWR1cDsKLQlJTlRfU0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJULCBhcmdzLT5pbnVtYmVyKTsKKwlkZXAtPmludW1iZXIgPSBjcHVfdG9fYmU2NChhcmdzLT5pbnVtYmVyKTsKIAlkZXAtPm5hbWVsZW4gPSBhcmdzLT5uYW1lbGVuOwogCW1lbWNweShkZXAtPm5hbWUsIGFyZ3MtPm5hbWUsIGRlcC0+bmFtZWxlbik7CiAJdGFncCA9IFhGU19ESVIyX0RBVEFfRU5UUllfVEFHX1AoZGVwKTsKQEAgLTE5MDUsMTEgKzE5MDUsMTEgQEAKIAkJZGVwID0gKHhmc19kaXIyX2RhdGFfZW50cnlfdCAqKQogCQkgICAgICAoKGNoYXIgKilkYXRhICsKIAkJICAgICAgIFhGU19ESVIyX0RBVEFQVFJfVE9fT0ZGKHN0YXRlLT5tcCwgYmUzMl90b19jcHUobGVwLT5hZGRyZXNzKSkpOwotCQlBU1NFUlQoaW51bSAhPSBJTlRfR0VUKGRlcC0+aW51bWJlciwgQVJDSF9DT05WRVJUKSk7CisJCUFTU0VSVChpbnVtICE9IGJlNjRfdG9fY3B1KGRlcC0+aW51bWJlcikpOwogCQkvKgogCQkgKiBGaWxsIGluIHRoZSBuZXcgaW5vZGUgbnVtYmVyIGFuZCBsb2cgdGhlIGVudHJ5LgogCQkgKi8KLQkJSU5UX1NFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCwgaW51bSk7CisJCWRlcC0+aW51bWJlciA9IGNwdV90b19iZTY0KGludW0pOwogCQl4ZnNfZGlyMl9kYXRhX2xvZ19lbnRyeShhcmdzLT50cmFucywgc3RhdGUtPmV4dHJhYmxrLmJwLCBkZXApOwogCQlydmFsID0gMDsKIAl9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2RpcjJfc2YuYyBiL2ZzL3hmcy94ZnNfZGlyMl9zZi5jCmluZGV4IGQ5OGE0MWQuLjBjZDc3YjEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGlyMl9zZi5jCisrKyBiL2ZzL3hmcy94ZnNfZGlyMl9zZi5jCkBAIC0yMiwxOSArMjIsMTYgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlLmgiCiAjaW5jbHVkZSAieGZzX2lub2RlX2l0ZW0uaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX2xlYWYuaCIKICNpbmNsdWRlICJ4ZnNfZXJyb3IuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9kYXRhLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfbGVhZi5oIgpAQCAtMTE3LDEzICsxMTQsMTMgQEAKIAkJCWRlcC0+bmFtZVswXSA9PSAnLicgJiYgZGVwLT5uYW1lWzFdID09ICcuJzsKICNpZiBYRlNfQklHX0lOVU1TCiAJCWlmICghaXNkb3QpCi0JCQlpOGNvdW50ICs9IElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpID4gWEZTX0RJUjJfTUFYX1NIT1JUX0lOVU07CisJCQlpOGNvdW50ICs9IGJlNjRfdG9fY3B1KGRlcC0+aW51bWJlcikgPiBYRlNfRElSMl9NQVhfU0hPUlRfSU5VTTsKICNlbmRpZgogCQlpZiAoIWlzZG90ICYmICFpc2RvdGRvdCkgewogCQkJY291bnQrKzsKIAkJCW5hbWVsZW4gKz0gZGVwLT5uYW1lbGVuOwogCQl9IGVsc2UgaWYgKGlzZG90ZG90KQotCQkJcGFyZW50ID0gSU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCk7CisJCQlwYXJlbnQgPSBiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpOwogCQkvKgogCQkgKiBDYWxjdWxhdGUgdGhlIG5ldyBzaXplLCBzZWUgaWYgd2Ugc2hvdWxkIGdpdmUgdXAgeWV0LgogCQkgKi8KQEAgLTIyOSwxMyArMjI2LDEzIEBACiAJCSAqIFNraXAgLgogCQkgKi8KIAkJaWYgKGRlcC0+bmFtZWxlbiA9PSAxICYmIGRlcC0+bmFtZVswXSA9PSAnLicpCi0JCQlBU1NFUlQoSU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCkgPT0gZHAtPmlfaW5vKTsKKwkJCUFTU0VSVChiZTY0X3RvX2NwdShkZXAtPmludW1iZXIpID09IGRwLT5pX2lubyk7CiAJCS8qCiAJCSAqIFNraXAgLi4sIGJ1dCBtYWtlIHN1cmUgdGhlIGlub2RlIG51bWJlciBpcyByaWdodC4KIAkJICovCiAJCWVsc2UgaWYgKGRlcC0+bmFtZWxlbiA9PSAyICYmCiAJCQkgZGVwLT5uYW1lWzBdID09ICcuJyAmJiBkZXAtPm5hbWVbMV0gPT0gJy4nKQotCQkJQVNTRVJUKElOVF9HRVQoZGVwLT5pbnVtYmVyLCBBUkNIX0NPTlZFUlQpID09CisJCQlBU1NFUlQoYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKSA9PQogCQkJICAgICAgIFhGU19ESVIyX1NGX0dFVF9JTlVNQkVSKHNmcCwgJnNmcC0+aGRyLnBhcmVudCkpOwogCQkvKgogCQkgKiBOb3JtYWwgZW50cnksIGNvcHkgaXQgaW50byBzaG9ydGZvcm0uCkBAIC0yNDYsNyArMjQzLDcgQEAKIAkJCQkoeGZzX2RpcjJfZGF0YV9hb2ZmX3QpCiAJCQkJKChjaGFyICopZGVwIC0gKGNoYXIgKilibG9jaykpOwogCQkJbWVtY3B5KHNmZXAtPm5hbWUsIGRlcC0+bmFtZSwgZGVwLT5uYW1lbGVuKTsKLQkJCXRlbXA9SU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCk7CisJCQl0ZW1wID0gYmU2NF90b19jcHUoZGVwLT5pbnVtYmVyKTsKIAkJCVhGU19ESVIyX1NGX1BVVF9JTlVNQkVSKHNmcCwgJnRlbXAsCiAJCQkJWEZTX0RJUjJfU0ZfSU5VTUJFUlAoc2ZlcCkpOwogCQkJc2ZlcCA9IFhGU19ESVIyX1NGX05FWFRFTlRSWShzZnAsIHNmZXApOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kaXIyX3RyYWNlLmMgYi9mcy94ZnMveGZzX2RpcjJfdHJhY2UuYwppbmRleCBjNjI2OTQzLi5mM2ZiMmZmIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2RpcjJfdHJhY2UuYworKysgYi9mcy94ZnMveGZzX2RpcjJfdHJhY2UuYwpAQCAtMTksMTEgKzE5LDkgQEAKICNpbmNsdWRlICJ4ZnNfZnMuaCIKICNpbmNsdWRlICJ4ZnNfdHlwZXMuaCIKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpcl9sZWFmLmMgYi9mcy94ZnMveGZzX2Rpcl9sZWFmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNzExODYuLjAwMDAwMDAKLS0tIGEvZnMveGZzL3hmc19kaXJfbGVhZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIxMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDMsMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0gKiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0jaW5jbHVkZSAieGZzLmgiCi0jaW5jbHVkZSAieGZzX2ZzLmgiCi0jaW5jbHVkZSAieGZzX3R5cGVzLmgiCi0jaW5jbHVkZSAieGZzX2xvZy5oIgotI2luY2x1ZGUgInhmc19pbnVtLmgiCi0jaW5jbHVkZSAieGZzX3RyYW5zLmgiCi0jaW5jbHVkZSAieGZzX3NiLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgotI2luY2x1ZGUgInhmc19kaXIyLmgiCi0jaW5jbHVkZSAieGZzX2RtYXBpLmgiCi0jaW5jbHVkZSAieGZzX21vdW50LmgiCi0jaW5jbHVkZSAieGZzX2RhX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgotI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCi0jaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKLSNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCi0jaW5jbHVkZSAieGZzX2lub2RlLmgiCi0jaW5jbHVkZSAieGZzX2lub2RlX2l0ZW0uaCIKLSNpbmNsdWRlICJ4ZnNfYWxsb2MuaCIKLSNpbmNsdWRlICJ4ZnNfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfYm1hcC5oIgotI2luY2x1ZGUgInhmc19kaXJfbGVhZi5oIgotI2luY2x1ZGUgInhmc19lcnJvci5oIgotCi0vKgotICogeGZzX2Rpcl9sZWFmLmMKLSAqCi0gKiBSb3V0aW5lcyB0byBpbXBsZW1lbnQgbGVhZiBibG9ja3Mgb2YgZGlyZWN0b3JpZXMgYXMgQnRyZWVzIG9mIGhhc2hlZCBuYW1lcy4KLSAqLwotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogRnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgdGhlIGtlcm5lbC4KLSAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotLyoKLSAqIFJvdXRpbmVzIHVzZWQgZm9yIGdyb3dpbmcgdGhlIEJ0cmVlLgotICovCi1TVEFUSUMgdm9pZCB4ZnNfZGlyX2xlYWZfYWRkX3dvcmsoeGZzX2RhYnVmX3QgKmxlYWZfYnVmZmVyLCB4ZnNfZGFfYXJnc190ICphcmdzLAotCQkJCQkgICAgICBpbnQgaW5zZXJ0aW9uX2luZGV4LAotCQkJCQkgICAgICBpbnQgZnJlZW1hcF9pbmRleCk7Ci1TVEFUSUMgaW50IHhmc19kaXJfbGVhZl9jb21wYWN0KHhmc190cmFuc190ICp0cmFucywgeGZzX2RhYnVmX3QgKmxlYWZfYnVmZmVyLAotCQkJCQkgICAgaW50IG11c3RoYXZlLCBpbnQganVzdGNoZWNrKTsKLVNUQVRJQyB2b2lkIHhmc19kaXJfbGVhZl9yZWJhbGFuY2UoeGZzX2RhX3N0YXRlX3QgKnN0YXRlLAotCQkJCQkJICB4ZnNfZGFfc3RhdGVfYmxrX3QgKmJsazEsCi0JCQkJCQkgIHhmc19kYV9zdGF0ZV9ibGtfdCAqYmxrMik7Ci1TVEFUSUMgaW50IHhmc19kaXJfbGVhZl9maWd1cmVfYmFsYW5jZSh4ZnNfZGFfc3RhdGVfdCAqc3RhdGUsCi0JCQkJCSAgeGZzX2RhX3N0YXRlX2Jsa190ICpsZWFmX2Jsa18xLAotCQkJCQkgIHhmc19kYV9zdGF0ZV9ibGtfdCAqbGVhZl9ibGtfMiwKLQkJCQkJICBpbnQgKm51bWJlcl9lbnRyaWVzX2luX2JsazEsCi0JCQkJCSAgaW50ICpudW1iZXJfbmFtZWJ5dGVzX2luX2JsazEpOwotCi1TVEFUSUMgaW50IHhmc19kaXJfbGVhZl9jcmVhdGUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzLAotCQkJCXhmc19kYWJsa190IHdoaWNoX2Jsb2NrLAotCQkJCXN0cnVjdCB4ZnNfZGFidWYgKipicHApOwotCi0vKgotICogVXRpbGl0eSByb3V0aW5lcy4KLSAqLwotU1RBVElDIHZvaWQgeGZzX2Rpcl9sZWFmX21vdmVlbnRzKHhmc19kaXJfbGVhZmJsb2NrX3QgKnNyY19sZWFmLAotCQkJCQkgICAgICBpbnQgc3JjX3N0YXJ0LAotCQkJCQkgICAgICB4ZnNfZGlyX2xlYWZibG9ja190ICpkc3RfbGVhZiwKLQkJCQkJICAgICAgaW50IGRzdF9zdGFydCwgaW50IG1vdmVfY291bnQsCi0JCQkJCSAgICAgIHhmc19tb3VudF90ICptcCk7Ci0KLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAqIEV4dGVybmFsIHJvdXRpbmVzIHdoZW4gZGlyc2l6ZSA8IFhGU19JRk9SS19EU0laRShkcCkuCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLQotLyoKLSAqIFZhbGlkYXRlIGEgZ2l2ZW4gaW5vZGUgbnVtYmVyLgotICovCi1pbnQKLXhmc19kaXJfaW5vX3ZhbGlkYXRlKHhmc19tb3VudF90ICptcCwgeGZzX2lub190IGlubykKLXsKLQl4ZnNfYWdibG9ja190CWFnYmxrbm87Ci0JeGZzX2FnaW5vX3QJYWdpbm87Ci0JeGZzX2FnbnVtYmVyX3QJYWdubzsKLQlpbnQJCWlub19vazsKLQlpbnQJCWlvZmY7Ci0KLQlhZ25vID0gWEZTX0lOT19UT19BR05PKG1wLCBpbm8pOwotCWFnYmxrbm8gPSBYRlNfSU5PX1RPX0FHQk5PKG1wLCBpbm8pOwotCWlvZmYgPSBYRlNfSU5PX1RPX09GRlNFVChtcCwgaW5vKTsKLQlhZ2lubyA9IFhGU19PRkZCTk9fVE9fQUdJTk8obXAsIGFnYmxrbm8sIGlvZmYpOwotCWlub19vayA9Ci0JCWFnbm8gPCBtcC0+bV9zYi5zYl9hZ2NvdW50ICYmCi0JCWFnYmxrbm8gPCBtcC0+bV9zYi5zYl9hZ2Jsb2NrcyAmJgotCQlhZ2Jsa25vICE9IDAgJiYKLQkJaW9mZiA8ICgxIDw8IG1wLT5tX3NiLnNiX2lub3BibG9nKSAmJgotCQlYRlNfQUdJTk9fVE9fSU5PKG1wLCBhZ25vLCBhZ2lubykgPT0gaW5vOwotCWlmICh1bmxpa2VseShYRlNfVEVTVF9FUlJPUighaW5vX29rLCBtcCwgWEZTX0VSUlRBR19ESVJfSU5PX1ZBTElEQVRFLAotCQkJWEZTX1JBTkRPTV9ESVJfSU5PX1ZBTElEQVRFKSkpIHsKLQkJeGZzX2ZzX2Ntbl9lcnIoQ0VfV0FSTiwgbXAsICJJbnZhbGlkIGlub2RlIG51bWJlciAweCVMeCIsCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgaW5vKTsKLQkJWEZTX0VSUk9SX1JFUE9SVCgieGZzX2Rpcl9pbm9fdmFsaWRhdGUiLCBYRlNfRVJSTEVWRUxfTE9XLCBtcCk7Ci0JCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBDcmVhdGUgdGhlIGluaXRpYWwgY29udGVudHMgb2YgYSBzaG9ydGZvcm0gZGlyZWN0b3J5LgotICovCi1pbnQKLXhmc19kaXJfc2hvcnRmb3JtX2NyZWF0ZSh4ZnNfZGFfYXJnc190ICphcmdzLCB4ZnNfaW5vX3QgcGFyZW50KQotewotCXhmc19kaXJfc2ZfaGRyX3QgKmhkcjsKLQl4ZnNfaW5vZGVfdCAqZHA7Ci0KLQlkcCA9IGFyZ3MtPmRwOwotCUFTU0VSVChkcCAhPSBOVUxMKTsKLQlBU1NFUlQoZHAtPmlfZC5kaV9zaXplID09IDApOwotCWlmIChkcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9FWFRFTlRTKSB7Ci0JCWRwLT5pX2RmLmlmX2ZsYWdzICY9IH5YRlNfSUZFWFRFTlRTOwkvKiBqdXN0IGluIGNhc2UgKi8KLQkJZHAtPmlfZC5kaV9mb3JtYXQgPSBYRlNfRElOT0RFX0ZNVF9MT0NBTDsKLQkJeGZzX3RyYW5zX2xvZ19pbm9kZShhcmdzLT50cmFucywgZHAsIFhGU19JTE9HX0NPUkUpOwotCQlkcC0+aV9kZi5pZl9mbGFncyB8PSBYRlNfSUZJTkxJTkU7Ci0JfQotCUFTU0VSVChkcC0+aV9kZi5pZl9mbGFncyAmIFhGU19JRklOTElORSk7Ci0JQVNTRVJUKGRwLT5pX2RmLmlmX2J5dGVzID09IDApOwotCXhmc19pZGF0YV9yZWFsbG9jKGRwLCBzaXplb2YoKmhkciksIFhGU19EQVRBX0ZPUkspOwotCWhkciA9ICh4ZnNfZGlyX3NmX2hkcl90ICopZHAtPmlfZGYuaWZfdTEuaWZfZGF0YTsKLQlYRlNfRElSX1NGX1BVVF9ESVJJTk8oJnBhcmVudCwgJmhkci0+cGFyZW50KTsKLQotCWhkci0+Y291bnQgPSAwOwotCWRwLT5pX2QuZGlfc2l6ZSA9IHNpemVvZigqaGRyKTsKLQl4ZnNfdHJhbnNfbG9nX2lub2RlKGFyZ3MtPnRyYW5zLCBkcCwgWEZTX0lMT0dfQ09SRSB8IFhGU19JTE9HX0REQVRBKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIEFkZCBhIG5hbWUgdG8gdGhlIHNob3J0Zm9ybSBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICogT3ZlcmZsb3cgZnJvbSB0aGUgaW5vZGUgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIGZvci4KLSAqLwotaW50Ci14ZnNfZGlyX3Nob3J0Zm9ybV9hZGRuYW1lKHhmc19kYV9hcmdzX3QgKmFyZ3MpCi17Ci0JeGZzX2Rpcl9zaG9ydGZvcm1fdCAqc2Y7Ci0JeGZzX2Rpcl9zZl9lbnRyeV90ICpzZmU7Ci0JaW50IGksIG9mZnNldCwgc2l6ZTsKLQl4ZnNfaW5vZGVfdCAqZHA7Ci0KLQlkcCA9IGFyZ3MtPmRwOwotCUFTU0VSVChkcC0+aV9kZi5pZl9mbGFncyAmIFhGU19JRklOTElORSk7Ci0JLyoKLQkgKiBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgY29udmVyc2lvbiBmcm9tIHNob3J0Zm9ybSB0byBsZWFmCi0JICogZmFpbGVkIHBhcnQgd2F5IHRocm91Z2guCi0JICovCi0JaWYgKGRwLT5pX2QuZGlfc2l6ZSA8IHNpemVvZih4ZnNfZGlyX3NmX2hkcl90KSkgewotCQlBU1NFUlQoWEZTX0ZPUkNFRF9TSFVURE9XTihkcC0+aV9tb3VudCkpOwotCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7Ci0JfQotCUFTU0VSVChkcC0+aV9kZi5pZl9ieXRlcyA9PSBkcC0+aV9kLmRpX3NpemUpOwotCUFTU0VSVChkcC0+aV9kZi5pZl91MS5pZl9kYXRhICE9IE5VTEwpOwotCXNmID0gKHhmc19kaXJfc2hvcnRmb3JtX3QgKilkcC0+aV9kZi5pZl91MS5pZl9kYXRhOwotCXNmZSA9ICZzZi0+bGlzdFswXTsKLQlmb3IgKGkgPSBzZi0+aGRyLmNvdW50LTE7IGkgPj0gMDsgaS0tKSB7Ci0JCWlmIChzZmUtPm5hbWVsZW4gPT0gYXJncy0+bmFtZWxlbiAmJgotCQkgICAgYXJncy0+bmFtZVswXSA9PSBzZmUtPm5hbWVbMF0gJiYKLQkJICAgIG1lbWNtcChhcmdzLT5uYW1lLCBzZmUtPm5hbWUsIGFyZ3MtPm5hbWVsZW4pID09IDApCi0JCQlyZXR1cm4gWEZTX0VSUk9SKEVFWElTVCk7Ci0JCXNmZSA9IFhGU19ESVJfU0ZfTkVYVEVOVFJZKHNmZSk7Ci0JfQotCi0Jb2Zmc2V0ID0gKGludCkoKGNoYXIgKilzZmUgLSAoY2hhciAqKXNmKTsKLQlzaXplID0gWEZTX0RJUl9TRl9FTlRTSVpFX0JZTkFNRShhcmdzLT5uYW1lbGVuKTsKLQl4ZnNfaWRhdGFfcmVhbGxvYyhkcCwgc2l6ZSwgWEZTX0RBVEFfRk9SSyk7Ci0Jc2YgPSAoeGZzX2Rpcl9zaG9ydGZvcm1fdCAqKWRwLT5pX2RmLmlmX3UxLmlmX2RhdGE7Ci0Jc2ZlID0gKHhmc19kaXJfc2ZfZW50cnlfdCAqKSgoY2hhciAqKXNmICsgb2Zmc2V0KTsKLQotCVhGU19ESVJfU0ZfUFVUX0RJUklOTygmYXJncy0+aW51bWJlciwgJnNmZS0+aW51bWJlcik7Ci0Jc2ZlLT5uYW1lbGVuID0gYXJncy0+bmFtZWxlbjsKLQltZW1jcHkoc2ZlLT5uYW1lLCBhcmdzLT5uYW1lLCBzZmUtPm5hbWVsZW4pOwotCXNmLT5oZHIuY291bnQrKzsKLQotCWRwLT5pX2QuZGlfc2l6ZSArPSBzaXplOwotCXhmc190cmFuc19sb2dfaW5vZGUoYXJncy0+dHJhbnMsIGRwLCBYRlNfSUxPR19DT1JFIHwgWEZTX0lMT0dfRERBVEEpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBSZW1vdmUgYSBuYW1lIGZyb20gdGhlIHNob3J0Zm9ybSBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICovCi1pbnQKLXhmc19kaXJfc2hvcnRmb3JtX3JlbW92ZW5hbWUoeGZzX2RhX2FyZ3NfdCAqYXJncykKLXsKLQl4ZnNfZGlyX3Nob3J0Zm9ybV90ICpzZjsKLQl4ZnNfZGlyX3NmX2VudHJ5X3QgKnNmZTsKLQlpbnQgYmFzZSwgc2l6ZSA9IDAsIGk7Ci0JeGZzX2lub2RlX3QgKmRwOwotCi0JZHAgPSBhcmdzLT5kcDsKLQlBU1NFUlQoZHAtPmlfZGYuaWZfZmxhZ3MgJiBYRlNfSUZJTkxJTkUpOwotCS8qCi0JICogQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbnZlcnNpb24gZnJvbSBzaG9ydGZvcm0gdG8gbGVhZgotCSAqIGZhaWxlZCBwYXJ0IHdheSB0aHJvdWdoLgotCSAqLwotCWlmIChkcC0+aV9kLmRpX3NpemUgPCBzaXplb2YoeGZzX2Rpcl9zZl9oZHJfdCkpIHsKLQkJQVNTRVJUKFhGU19GT1JDRURfU0hVVERPV04oZHAtPmlfbW91bnQpKTsKLQkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwotCX0KLQlBU1NFUlQoZHAtPmlfZGYuaWZfYnl0ZXMgPT0gZHAtPmlfZC5kaV9zaXplKTsKLQlBU1NFUlQoZHAtPmlfZGYuaWZfdTEuaWZfZGF0YSAhPSBOVUxMKTsKLQliYXNlID0gc2l6ZW9mKHhmc19kaXJfc2ZfaGRyX3QpOwotCXNmID0gKHhmc19kaXJfc2hvcnRmb3JtX3QgKilkcC0+aV9kZi5pZl91MS5pZl9kYXRhOwotCXNmZSA9ICZzZi0+bGlzdFswXTsKLQlmb3IgKGkgPSBzZi0+aGRyLmNvdW50LTE7IGkgPj0gMDsgaS0tKSB7Ci0JCXNpemUgPSBYRlNfRElSX1NGX0VOVFNJWkVfQllFTlRSWShzZmUpOwotCQlpZiAoc2ZlLT5uYW1lbGVuID09IGFyZ3MtPm5hbWVsZW4gJiYKLQkJICAgIHNmZS0+bmFtZVswXSA9PSBhcmdzLT5uYW1lWzBdICYmCi0JCSAgICBtZW1jbXAoc2ZlLT5uYW1lLCBhcmdzLT5uYW1lLCBhcmdzLT5uYW1lbGVuKSA9PSAwKQotCQkJYnJlYWs7Ci0JCWJhc2UgKz0gc2l6ZTsKLQkJc2ZlID0gWEZTX0RJUl9TRl9ORVhURU5UUlkoc2ZlKTsKLQl9Ci0JaWYgKGkgPCAwKSB7Ci0JCUFTU0VSVChhcmdzLT5va25vZW50KTsKLQkJcmV0dXJuIFhGU19FUlJPUihFTk9FTlQpOwotCX0KLQotCWlmICgoYmFzZSArIHNpemUpICE9IGRwLT5pX2QuZGlfc2l6ZSkgewotCQltZW1tb3ZlKCYoKGNoYXIgKilzZilbYmFzZV0sICYoKGNoYXIgKilzZilbYmFzZStzaXplXSwKLQkJCQkJICAgICAgZHAtPmlfZC5kaV9zaXplIC0gKGJhc2Urc2l6ZSkpOwotCX0KLQlzZi0+aGRyLmNvdW50LS07Ci0KLQl4ZnNfaWRhdGFfcmVhbGxvYyhkcCwgLXNpemUsIFhGU19EQVRBX0ZPUkspOwotCWRwLT5pX2QuZGlfc2l6ZSAtPSBzaXplOwotCXhmc190cmFuc19sb2dfaW5vZGUoYXJncy0+dHJhbnMsIGRwLCBYRlNfSUxPR19DT1JFIHwgWEZTX0lMT0dfRERBVEEpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGEgbmFtZSBpbiBhIHNob3J0Zm9ybSBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICovCi1pbnQKLXhmc19kaXJfc2hvcnRmb3JtX2xvb2t1cCh4ZnNfZGFfYXJnc190ICphcmdzKQotewotCXhmc19kaXJfc2hvcnRmb3JtX3QgKnNmOwotCXhmc19kaXJfc2ZfZW50cnlfdCAqc2ZlOwotCWludCBpOwotCXhmc19pbm9kZV90ICpkcDsKLQotCWRwID0gYXJncy0+ZHA7Ci0JQVNTRVJUKGRwLT5pX2RmLmlmX2ZsYWdzICYgWEZTX0lGSU5MSU5FKTsKLQkvKgotCSAqIENhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSBjb252ZXJzaW9uIGZyb20gc2hvcnRmb3JtIHRvIGxlYWYKLQkgKiBmYWlsZWQgcGFydCB3YXkgdGhyb3VnaC4KLQkgKi8KLQlpZiAoZHAtPmlfZC5kaV9zaXplIDwgc2l6ZW9mKHhmc19kaXJfc2ZfaGRyX3QpKSB7Ci0JCUFTU0VSVChYRlNfRk9SQ0VEX1NIVVRET1dOKGRwLT5pX21vdW50KSk7Ci0JCXJldHVybiBYRlNfRVJST1IoRUlPKTsKLQl9Ci0JQVNTRVJUKGRwLT5pX2RmLmlmX2J5dGVzID09IGRwLT5pX2QuZGlfc2l6ZSk7Ci0JQVNTRVJUKGRwLT5pX2RmLmlmX3UxLmlmX2RhdGEgIT0gTlVMTCk7Ci0Jc2YgPSAoeGZzX2Rpcl9zaG9ydGZvcm1fdCAqKWRwLT5pX2RmLmlmX3UxLmlmX2RhdGE7Ci0JaWYgKGFyZ3MtPm5hbWVsZW4gPT0gMiAmJgotCSAgICBhcmdzLT5uYW1lWzBdID09ICcuJyAmJiBhcmdzLT5uYW1lWzFdID09ICcuJykgewotCQlYRlNfRElSX1NGX0dFVF9ESVJJTk8oJnNmLT5oZHIucGFyZW50LCAmYXJncy0+aW51bWJlcik7Ci0JCXJldHVybihYRlNfRVJST1IoRUVYSVNUKSk7Ci0JfQotCWlmIChhcmdzLT5uYW1lbGVuID09IDEgJiYgYXJncy0+bmFtZVswXSA9PSAnLicpIHsKLQkJYXJncy0+aW51bWJlciA9IGRwLT5pX2lubzsKLQkJcmV0dXJuKFhGU19FUlJPUihFRVhJU1QpKTsKLQl9Ci0Jc2ZlID0gJnNmLT5saXN0WzBdOwotCWZvciAoaSA9IHNmLT5oZHIuY291bnQtMTsgaSA+PSAwOyBpLS0pIHsKLQkJaWYgKHNmZS0+bmFtZWxlbiA9PSBhcmdzLT5uYW1lbGVuICYmCi0JCSAgICBzZmUtPm5hbWVbMF0gPT0gYXJncy0+bmFtZVswXSAmJgotCQkgICAgbWVtY21wKGFyZ3MtPm5hbWUsIHNmZS0+bmFtZSwgYXJncy0+bmFtZWxlbikgPT0gMCkgewotCQkJWEZTX0RJUl9TRl9HRVRfRElSSU5PKCZzZmUtPmludW1iZXIsICZhcmdzLT5pbnVtYmVyKTsKLQkJCXJldHVybihYRlNfRVJST1IoRUVYSVNUKSk7Ci0JCX0KLQkJc2ZlID0gWEZTX0RJUl9TRl9ORVhURU5UUlkoc2ZlKTsKLQl9Ci0JQVNTRVJUKGFyZ3MtPm9rbm9lbnQpOwotCXJldHVybihYRlNfRVJST1IoRU5PRU5UKSk7Ci19Ci0KLS8qCi0gKiBDb252ZXJ0IGZyb20gdXNpbmcgdGhlIHNob3J0Zm9ybSB0byB0aGUgbGVhZi4KLSAqLwotaW50Ci14ZnNfZGlyX3Nob3J0Zm9ybV90b19sZWFmKHhmc19kYV9hcmdzX3QgKmlhcmdzKQotewotCXhmc19pbm9kZV90ICpkcDsKLQl4ZnNfZGlyX3Nob3J0Zm9ybV90ICpzZjsKLQl4ZnNfZGlyX3NmX2VudHJ5X3QgKnNmZTsKLQl4ZnNfZGFfYXJnc190IGFyZ3M7Ci0JeGZzX2lub190IGludW1iZXI7Ci0JY2hhciAqdG1wYnVmZmVyOwotCWludCByZXR2YWwsIGksIHNpemU7Ci0JeGZzX2RhYmxrX3QgYmxrbm87Ci0JeGZzX2RhYnVmX3QgKmJwOwotCi0JZHAgPSBpYXJncy0+ZHA7Ci0JLyoKLQkgKiBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgY29udmVyc2lvbiBmcm9tIHNob3J0Zm9ybSB0byBsZWFmCi0JICogZmFpbGVkIHBhcnQgd2F5IHRocm91Z2guCi0JICovCi0JaWYgKGRwLT5pX2QuZGlfc2l6ZSA8IHNpemVvZih4ZnNfZGlyX3NmX2hkcl90KSkgewotCQlBU1NFUlQoWEZTX0ZPUkNFRF9TSFVURE9XTihkcC0+aV9tb3VudCkpOwotCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7Ci0JfQotCUFTU0VSVChkcC0+aV9kZi5pZl9ieXRlcyA9PSBkcC0+aV9kLmRpX3NpemUpOwotCUFTU0VSVChkcC0+aV9kZi5pZl91MS5pZl9kYXRhICE9IE5VTEwpOwotCXNpemUgPSBkcC0+aV9kZi5pZl9ieXRlczsKLQl0bXBidWZmZXIgPSBrbWVtX2FsbG9jKHNpemUsIEtNX1NMRUVQKTsKLQlBU1NFUlQodG1wYnVmZmVyICE9IE5VTEwpOwotCi0JbWVtY3B5KHRtcGJ1ZmZlciwgZHAtPmlfZGYuaWZfdTEuaWZfZGF0YSwgc2l6ZSk7Ci0KLQlzZiA9ICh4ZnNfZGlyX3Nob3J0Zm9ybV90ICopdG1wYnVmZmVyOwotCVhGU19ESVJfU0ZfR0VUX0RJUklOTygmc2YtPmhkci5wYXJlbnQsICZpbnVtYmVyKTsKLQotCXhmc19pZGF0YV9yZWFsbG9jKGRwLCAtc2l6ZSwgWEZTX0RBVEFfRk9SSyk7Ci0JZHAtPmlfZC5kaV9zaXplID0gMDsKLQl4ZnNfdHJhbnNfbG9nX2lub2RlKGlhcmdzLT50cmFucywgZHAsIFhGU19JTE9HX0NPUkUpOwotCXJldHZhbCA9IHhmc19kYV9ncm93X2lub2RlKGlhcmdzLCAmYmxrbm8pOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gb3V0OwotCi0JQVNTRVJUKGJsa25vID09IDApOwotCXJldHZhbCA9IHhmc19kaXJfbGVhZl9jcmVhdGUoaWFyZ3MsIGJsa25vLCAmYnApOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gb3V0OwotCXhmc19kYV9idWZfZG9uZShicCk7Ci0KLQlhcmdzLm5hbWUgPSAiLiI7Ci0JYXJncy5uYW1lbGVuID0gMTsKLQlhcmdzLmhhc2h2YWwgPSB4ZnNfZGlyX2hhc2hfZG90OwotCWFyZ3MuaW51bWJlciA9IGRwLT5pX2lubzsKLQlhcmdzLmRwID0gZHA7Ci0JYXJncy5maXJzdGJsb2NrID0gaWFyZ3MtPmZpcnN0YmxvY2s7Ci0JYXJncy5mbGlzdCA9IGlhcmdzLT5mbGlzdDsKLQlhcmdzLnRvdGFsID0gaWFyZ3MtPnRvdGFsOwotCWFyZ3Mud2hpY2hmb3JrID0gWEZTX0RBVEFfRk9SSzsKLQlhcmdzLnRyYW5zID0gaWFyZ3MtPnRyYW5zOwotCWFyZ3MuanVzdGNoZWNrID0gMDsKLQlhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCXJldHZhbCA9IHhmc19kaXJfbGVhZl9hZGRuYW1lKCZhcmdzKTsKLQlpZiAocmV0dmFsKQotCQlnb3RvIG91dDsKLQotCWFyZ3MubmFtZSA9ICIuLiI7Ci0JYXJncy5uYW1lbGVuID0gMjsKLQlhcmdzLmhhc2h2YWwgPSB4ZnNfZGlyX2hhc2hfZG90ZG90OwotCWFyZ3MuaW51bWJlciA9IGludW1iZXI7Ci0JcmV0dmFsID0geGZzX2Rpcl9sZWFmX2FkZG5hbWUoJmFyZ3MpOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gb3V0OwotCi0Jc2ZlID0gJnNmLT5saXN0WzBdOwotCWZvciAoaSA9IDA7IGkgPCBzZi0+aGRyLmNvdW50OyBpKyspIHsKLQkJYXJncy5uYW1lID0gKGNoYXIgKikoc2ZlLT5uYW1lKTsKLQkJYXJncy5uYW1lbGVuID0gc2ZlLT5uYW1lbGVuOwotCQlhcmdzLmhhc2h2YWwgPSB4ZnNfZGFfaGFzaG5hbWUoKGNoYXIgKikoc2ZlLT5uYW1lKSwKLQkJCQkJICAgICAgIHNmZS0+bmFtZWxlbik7Ci0JCVhGU19ESVJfU0ZfR0VUX0RJUklOTygmc2ZlLT5pbnVtYmVyLCAmYXJncy5pbnVtYmVyKTsKLQkJcmV0dmFsID0geGZzX2Rpcl9sZWFmX2FkZG5hbWUoJmFyZ3MpOwotCQlpZiAocmV0dmFsKQotCQkJZ290byBvdXQ7Ci0JCXNmZSA9IFhGU19ESVJfU0ZfTkVYVEVOVFJZKHNmZSk7Ci0JfQotCXJldHZhbCA9IDA7Ci0KLW91dDoKLQlrbWVtX2ZyZWUodG1wYnVmZmVyLCBzaXplKTsKLQlyZXR1cm4gcmV0dmFsOwotfQotCi1TVEFUSUMgaW50Ci14ZnNfZGlyX3Nob3J0Zm9ybV9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi17Ci0JeGZzX2Rpcl9zZl9zb3J0X3QgKnNhLCAqc2I7Ci0KLQlzYSA9ICh4ZnNfZGlyX3NmX3NvcnRfdCAqKWE7Ci0Jc2IgPSAoeGZzX2Rpcl9zZl9zb3J0X3QgKiliOwotCWlmIChzYS0+aGFzaCA8IHNiLT5oYXNoKQotCQlyZXR1cm4gLTE7Ci0JZWxzZSBpZiAoc2EtPmhhc2ggPiBzYi0+aGFzaCkKLQkJcmV0dXJuIDE7Ci0JZWxzZQotCQlyZXR1cm4gc2EtPmVudG5vIC0gc2ItPmVudG5vOwotfQotCi0vKgotICogQ29weSBvdXQgZGlyZWN0b3J5IGVudHJpZXMgZm9yIGdldGRlbnRzKCksIGZvciBzaG9ydGZvcm0gZGlyZWN0b3JpZXMuCi0gKi8KLS8qQVJHU1VTRUQqLwotaW50Ci14ZnNfZGlyX3Nob3J0Zm9ybV9nZXRkZW50cyh4ZnNfaW5vZGVfdCAqZHAsIHVpb190ICp1aW8sIGludCAqZW9mcCwKLQkJCQkgICAgICAgeGZzX2RpcmVudF90ICpkYnAsIHhmc19kaXJfcHV0X3QgcHV0KQotewotCXhmc19kaXJfc2hvcnRmb3JtX3QgKnNmOwotCXhmc19kaXJfc2ZfZW50cnlfdCAqc2ZlOwotCWludCByZXR2YWwsIGksIHNic2l6ZSwgbnNidWYsIGxhc3RyZXNpZD0wLCB3YW50X2VudG5vOwotCXhmc19tb3VudF90ICptcDsKLQl4ZnNfZGFoYXNoX3QgY29va2hhc2gsIGhhc2g7Ci0JeGZzX2Rpcl9wdXRfYXJnc190IHA7Ci0JeGZzX2Rpcl9zZl9zb3J0X3QgKnNidWYsICpzYnA7Ci0KLQltcCA9IGRwLT5pX21vdW50OwotCXNmID0gKHhmc19kaXJfc2hvcnRmb3JtX3QgKilkcC0+aV9kZi5pZl91MS5pZl9kYXRhOwotCWNvb2toYXNoID0gWEZTX0RBX0NPT0tJRV9IQVNIKG1wLCB1aW8tPnVpb19vZmZzZXQpOwotCXdhbnRfZW50bm8gPSBYRlNfREFfQ09PS0lFX0VOVFJZKG1wLCB1aW8tPnVpb19vZmZzZXQpOwotCW5zYnVmID0gc2YtPmhkci5jb3VudCArIDI7Ci0Jc2JzaXplID0gKG5zYnVmICsgMSkgKiBzaXplb2YoKnNidWYpOwotCXNicCA9IHNidWYgPSBrbWVtX2FsbG9jKHNic2l6ZSwgS01fU0xFRVApOwotCi0JeGZzX2Rpcl90cmFjZV9nX2R1KCJzZjogc3RhcnQiLCBkcCwgdWlvKTsKLQotCS8qCi0JICogQ29sbGVjdCBhbGwgdGhlIGVudHJpZXMgaW50byB0aGUgYnVmZmVyLgotCSAqIEVudHJ5IDAgaXMgLgotCSAqLwotCXNicC0+ZW50bm8gPSAwOwotCXNicC0+c2Vxbm8gPSAwOwotCXNicC0+aGFzaCA9IHhmc19kaXJfaGFzaF9kb3Q7Ci0Jc2JwLT5pbm8gPSBkcC0+aV9pbm87Ci0Jc2JwLT5uYW1lID0gIi4iOwotCXNicC0+bmFtZWxlbiA9IDE7Ci0Jc2JwKys7Ci0KLQkvKgotCSAqIEVudHJ5IDEgaXMgLi4KLQkgKi8KLQlzYnAtPmVudG5vID0gMTsKLQlzYnAtPnNlcW5vID0gMDsKLQlzYnAtPmhhc2ggPSB4ZnNfZGlyX2hhc2hfZG90ZG90OwotCXNicC0+aW5vID0gWEZTX0dFVF9ESVJfSU5POChzZi0+aGRyLnBhcmVudCk7Ci0Jc2JwLT5uYW1lID0gIi4uIjsKLQlzYnAtPm5hbWVsZW4gPSAyOwotCXNicCsrOwotCi0JLyoKLQkgKiBTY2FuIHRoZSBkaXJlY3RvcnkgZGF0YSBmb3IgdGhlIHJlc3Qgb2YgdGhlIGVudHJpZXMuCi0JICovCi0JZm9yIChpID0gMCwgc2ZlID0gJnNmLT5saXN0WzBdOyBpIDwgc2YtPmhkci5jb3VudDsgaSsrKSB7Ci0KLQkJaWYgKHVubGlrZWx5KAotCQkgICAgKChjaGFyICopc2ZlIDwgKGNoYXIgKilzZikgfHwKLQkJICAgICgoY2hhciAqKXNmZSA+PSAoKGNoYXIgKilzZiArIGRwLT5pX2RmLmlmX2J5dGVzKSkpKSB7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHUoInNmOiBjb3JydXB0ZWQiLCBkcCwgdWlvKTsKLQkJCVhGU19DT1JSVVBUSU9OX0VSUk9SKCJ4ZnNfZGlyX3Nob3J0Zm9ybV9nZXRkZW50cyIsCi0JCQkJCSAgICAgWEZTX0VSUkxFVkVMX0xPVywgbXAsIHNmZSk7Ci0JCQlrbWVtX2ZyZWUoc2J1Ziwgc2JzaXplKTsKLQkJCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKLQkJfQotCi0JCXNicC0+ZW50bm8gPSBpICsgMjsKLQkJc2JwLT5zZXFubyA9IDA7Ci0JCXNicC0+aGFzaCA9IHhmc19kYV9oYXNobmFtZSgoY2hhciAqKXNmZS0+bmFtZSwgc2ZlLT5uYW1lbGVuKTsKLQkJc2JwLT5pbm8gPSBYRlNfR0VUX0RJUl9JTk84KHNmZS0+aW51bWJlcik7Ci0JCXNicC0+bmFtZSA9IChjaGFyICopc2ZlLT5uYW1lOwotCQlzYnAtPm5hbWVsZW4gPSBzZmUtPm5hbWVsZW47Ci0JCXNmZSA9IFhGU19ESVJfU0ZfTkVYVEVOVFJZKHNmZSk7Ci0JCXNicCsrOwotCX0KLQotCS8qCi0JICogU29ydCB0aGUgZW50cmllcyBvbiBoYXNoIHRoZW4gZW50bm8uCi0JICovCi0JeGZzX3NvcnQoc2J1ZiwgbnNidWYsIHNpemVvZigqc2J1ZiksIHhmc19kaXJfc2hvcnRmb3JtX2NvbXBhcmUpOwotCS8qCi0JICogU3R1ZmYgaW4gbGFzdCBlbnRyeS4KLQkgKi8KLQlzYnAtPmVudG5vID0gbnNidWY7Ci0Jc2JwLT5oYXNoID0gWEZTX0RBX01BWEhBU0g7Ci0Jc2JwLT5zZXFubyA9IDA7Ci0JLyoKLQkgKiBGaWd1cmUgb3V0IHRoZSBzZXF1ZW5jZSBudW1iZXJzIGluIGNhc2UgdGhlcmUncyBhIGhhc2ggZHVwbGljYXRlLgotCSAqLwotCWZvciAoaGFzaCA9IHNidWYtPmhhc2gsIHNicCA9IHNidWYgKyAxOwotCQkJCXNicCA8ICZzYnVmW25zYnVmICsgMV07IHNicCsrKSB7Ci0JCWlmIChzYnAtPmhhc2ggPT0gaGFzaCkKLQkJCXNicC0+c2Vxbm8gPSBzYnBbLTFdLnNlcW5vICsgMTsKLQkJZWxzZQotCQkJaGFzaCA9IHNicC0+aGFzaDsKLQl9Ci0KLQkvKgotCSAqIFNldCB1cCBwdXQgcm91dGluZS4KLQkgKi8KLQlwLmRicCA9IGRicDsKLQlwLnB1dCA9IHB1dDsKLQlwLnVpbyA9IHVpbzsKLQotCS8qCi0JICogRmluZCBvdXIgcGxhY2UuCi0JICovCi0JZm9yIChzYnAgPSBzYnVmOyBzYnAgPCAmc2J1Zltuc2J1ZiArIDFdOyBzYnArKykgewotCQlpZiAoc2JwLT5oYXNoID4gY29va2hhc2ggfHwKLQkJICAgIChzYnAtPmhhc2ggPT0gY29va2hhc2ggJiYgc2JwLT5zZXFubyA+PSB3YW50X2VudG5vKSkKLQkJCWJyZWFrOwotCX0KLQotCS8qCi0JICogRGlkIHdlIGZhaWwgdG8gZmluZCBhbnl0aGluZz8gIFdlIHN0b3AgYXQgdGhlIGxhc3QgZW50cnksCi0JICogdGhlIG9uZSB3ZSBwdXQgbWF4aGFzaCBpbnRvLgotCSAqLwotCWlmIChzYnAgPT0gJnNidWZbbnNidWZdKSB7Ci0JCWttZW1fZnJlZShzYnVmLCBzYnNpemUpOwotCQl4ZnNfZGlyX3RyYWNlX2dfZHUoInNmOiBoYXNoIGJleW9uZCBlbmQiLCBkcCwgdWlvKTsKLQkJdWlvLT51aW9fb2Zmc2V0ID0gWEZTX0RBX01BS0VfQ09PS0lFKG1wLCAwLCAwLCBYRlNfREFfTUFYSEFTSCk7Ci0JCSplb2ZwID0gMTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JLyoKLQkgKiBMb29wIHB1dHRpbmcgZW50cmllcyBpbnRvIHRoZSB1c2VyIGJ1ZmZlci4KLQkgKi8KLQl3aGlsZSAoc2JwIDwgJnNidWZbbnNidWZdKSB7Ci0JCS8qCi0JCSAqIFNhdmUgdGhlIGZpcnN0IHJlc2lkIGluIGEgcnVuIG9mIGVxdWFsLWhhc2h2YWwgZW50cmllcwotCQkgKiBzbyB0aGF0IHdlIGNhbiBiYWNrIHRoZW0gb3V0IGlmIHRoZXkgZG9uJ3QgYWxsIGZpdC4KLQkJICovCi0JCWlmIChzYnAtPnNlcW5vID09IDAgfHwgc2JwID09IHNidWYpCi0JCQlsYXN0cmVzaWQgPSB1aW8tPnVpb19yZXNpZDsKLQkJWEZTX1BVVF9DT09LSUUocC5jb29rLCBtcCwgMCwgc2JwWzFdLnNlcW5vLCBzYnBbMV0uaGFzaCk7Ci0JCXAuaW5vID0gc2JwLT5pbm87Ci0jaWYgWEZTX0JJR19JTlVNUwotCQlwLmlubyArPSBtcC0+bV9pbm9hZGQ7Ci0jZW5kaWYKLQkJcC5uYW1lID0gc2JwLT5uYW1lOwotCQlwLm5hbWVsZW4gPSBzYnAtPm5hbWVsZW47Ci0JCXJldHZhbCA9IHAucHV0KCZwKTsKLQkJaWYgKCFwLmRvbmUpIHsKLQkJCXVpby0+dWlvX29mZnNldCA9Ci0JCQkJWEZTX0RBX01BS0VfQ09PS0lFKG1wLCAwLCAwLCBzYnAtPmhhc2gpOwotCQkJa21lbV9mcmVlKHNidWYsIHNic2l6ZSk7Ci0JCQl1aW8tPnVpb19yZXNpZCA9IGxhc3RyZXNpZDsKLQkJCXhmc19kaXJfdHJhY2VfZ19kdSgic2Y6IEUtTy1CIiwgZHAsIHVpbyk7Ci0JCQlyZXR1cm4gcmV0dmFsOwotCQl9Ci0JCXNicCsrOwotCX0KLQlrbWVtX2ZyZWUoc2J1Ziwgc2JzaXplKTsKLQl1aW8tPnVpb19vZmZzZXQgPSBwLmNvb2subzsKLQkqZW9mcCA9IDE7Ci0JeGZzX2Rpcl90cmFjZV9nX2R1KCJzZjogRS1PLUYiLCBkcCwgdWlvKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIExvb2sgdXAgYSBuYW1lIGluIGEgc2hvcnRmb3JtIGRpcmVjdG9yeSBzdHJ1Y3R1cmUsIHJlcGxhY2UgdGhlIGlub2RlIG51bWJlci4KLSAqLwotaW50Ci14ZnNfZGlyX3Nob3J0Zm9ybV9yZXBsYWNlKHhmc19kYV9hcmdzX3QgKmFyZ3MpCi17Ci0JeGZzX2Rpcl9zaG9ydGZvcm1fdCAqc2Y7Ci0JeGZzX2Rpcl9zZl9lbnRyeV90ICpzZmU7Ci0JeGZzX2lub2RlX3QgKmRwOwotCWludCBpOwotCi0JZHAgPSBhcmdzLT5kcDsKLQlBU1NFUlQoZHAtPmlfZGYuaWZfZmxhZ3MgJiBYRlNfSUZJTkxJTkUpOwotCS8qCi0JICogQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbnZlcnNpb24gZnJvbSBzaG9ydGZvcm0gdG8gbGVhZgotCSAqIGZhaWxlZCBwYXJ0IHdheSB0aHJvdWdoLgotCSAqLwotCWlmIChkcC0+aV9kLmRpX3NpemUgPCBzaXplb2YoeGZzX2Rpcl9zZl9oZHJfdCkpIHsKLQkJQVNTRVJUKFhGU19GT1JDRURfU0hVVERPV04oZHAtPmlfbW91bnQpKTsKLQkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwotCX0KLQlBU1NFUlQoZHAtPmlfZGYuaWZfYnl0ZXMgPT0gZHAtPmlfZC5kaV9zaXplKTsKLQlBU1NFUlQoZHAtPmlfZGYuaWZfdTEuaWZfZGF0YSAhPSBOVUxMKTsKLQlzZiA9ICh4ZnNfZGlyX3Nob3J0Zm9ybV90ICopZHAtPmlfZGYuaWZfdTEuaWZfZGF0YTsKLQlpZiAoYXJncy0+bmFtZWxlbiA9PSAyICYmCi0JICAgIGFyZ3MtPm5hbWVbMF0gPT0gJy4nICYmIGFyZ3MtPm5hbWVbMV0gPT0gJy4nKSB7Ci0JCS8qIFhYWCAtIHJlcGxhY2UgYXNzZXJ0PyAqLwotCQlYRlNfRElSX1NGX1BVVF9ESVJJTk8oJmFyZ3MtPmludW1iZXIsICZzZi0+aGRyLnBhcmVudCk7Ci0JCXhmc190cmFuc19sb2dfaW5vZGUoYXJncy0+dHJhbnMsIGRwLCBYRlNfSUxPR19EREFUQSk7Ci0JCXJldHVybiAwOwotCX0KLQlBU1NFUlQoYXJncy0+bmFtZWxlbiAhPSAxIHx8IGFyZ3MtPm5hbWVbMF0gIT0gJy4nKTsKLQlzZmUgPSAmc2YtPmxpc3RbMF07Ci0JZm9yIChpID0gc2YtPmhkci5jb3VudC0xOyBpID49IDA7IGktLSkgewotCQlpZiAoc2ZlLT5uYW1lbGVuID09IGFyZ3MtPm5hbWVsZW4gJiYKLQkJICAgIHNmZS0+bmFtZVswXSA9PSBhcmdzLT5uYW1lWzBdICYmCi0JCSAgICBtZW1jbXAoYXJncy0+bmFtZSwgc2ZlLT5uYW1lLCBhcmdzLT5uYW1lbGVuKSA9PSAwKSB7Ci0JCQlBU1NFUlQobWVtY21wKChjaGFyICopJmFyZ3MtPmludW1iZXIsCi0JCQkJKGNoYXIgKikmc2ZlLT5pbnVtYmVyLCBzaXplb2YoeGZzX2lub190KSkpOwotCQkJWEZTX0RJUl9TRl9QVVRfRElSSU5PKCZhcmdzLT5pbnVtYmVyLCAmc2ZlLT5pbnVtYmVyKTsKLQkJCXhmc190cmFuc19sb2dfaW5vZGUoYXJncy0+dHJhbnMsIGRwLCBYRlNfSUxPR19EREFUQSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCQlzZmUgPSBYRlNfRElSX1NGX05FWFRFTlRSWShzZmUpOwotCX0KLQlBU1NFUlQoYXJncy0+b2tub2VudCk7Ci0JcmV0dXJuIFhGU19FUlJPUihFTk9FTlQpOwotfQotCi0vKgotICogQ29udmVydCBhIGxlYWYgZGlyZWN0b3J5IHRvIHNob3J0Zm9ybSBzdHJ1Y3R1cmUKLSAqLwotaW50Ci14ZnNfZGlyX2xlYWZfdG9fc2hvcnRmb3JtKHhmc19kYV9hcmdzX3QgKmlhcmdzKQotewotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWY7Ci0JeGZzX2Rpcl9sZWFmX2hkcl90ICpoZHI7Ci0JeGZzX2Rpcl9sZWFmX2VudHJ5X3QgKmVudHJ5OwotCXhmc19kaXJfbGVhZl9uYW1lX3QgKm5hbWVzdDsKLQl4ZnNfZGFfYXJnc190IGFyZ3M7Ci0JeGZzX2lub2RlX3QgKmRwOwotCXhmc19pbm9fdCBwYXJlbnQgPSAwOwotCWNoYXIgKnRtcGJ1ZmZlcjsKLQlpbnQgcmV0dmFsLCBpOwotCXhmc19kYWJ1Zl90ICpicDsKLQotCWRwID0gaWFyZ3MtPmRwOwotCXRtcGJ1ZmZlciA9IGttZW1fYWxsb2MoWEZTX0xCU0laRShkcC0+aV9tb3VudCksIEtNX1NMRUVQKTsKLQlBU1NFUlQodG1wYnVmZmVyICE9IE5VTEwpOwotCi0JcmV0dmFsID0geGZzX2RhX3JlYWRfYnVmKGlhcmdzLT50cmFucywgaWFyZ3MtPmRwLCAwLCAtMSwgJmJwLAotCQkJCQkgICAgICAgWEZTX0RBVEFfRk9SSyk7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBvdXQ7Ci0JQVNTRVJUKGJwICE9IE5VTEwpOwotCW1lbWNweSh0bXBidWZmZXIsIGJwLT5kYXRhLCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSk7Ci0JbGVhZiA9ICh4ZnNfZGlyX2xlYWZibG9ja190ICopdG1wYnVmZmVyOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmLT5oZHIuaW5mby5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQltZW1zZXQoYnAtPmRhdGEsIDAsIFhGU19MQlNJWkUoZHAtPmlfbW91bnQpKTsKLQotCS8qCi0JICogRmluZCBhbmQgc3BlY2lhbCBjYXNlIHRoZSBwYXJlbnQgaW5vZGUgbnVtYmVyCi0JICovCi0JaGRyID0gJmxlYWYtPmhkcjsKLQllbnRyeSA9ICZsZWFmLT5lbnRyaWVzWzBdOwotCWZvciAoaSA9IElOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKS0xOyBpID49IDA7IGVudHJ5KyssIGktLSkgewotCQluYW1lc3QgPSBYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmLCBJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpKTsKLQkJaWYgKChlbnRyeS0+bmFtZWxlbiA9PSAyKSAmJgotCQkgICAgKG5hbWVzdC0+bmFtZVswXSA9PSAnLicpICYmCi0JCSAgICAobmFtZXN0LT5uYW1lWzFdID09ICcuJykpIHsKLQkJCVhGU19ESVJfU0ZfR0VUX0RJUklOTygmbmFtZXN0LT5pbnVtYmVyLCAmcGFyZW50KTsKLQkJCWVudHJ5LT5uYW1laWR4ID0gMDsKLQkJfSBlbHNlIGlmICgoZW50cnktPm5hbWVsZW4gPT0gMSkgJiYgKG5hbWVzdC0+bmFtZVswXSA9PSAnLicpKSB7Ci0JCQllbnRyeS0+bmFtZWlkeCA9IDA7Ci0JCX0KLQl9Ci0JcmV0dmFsID0geGZzX2RhX3Nocmlua19pbm9kZShpYXJncywgMCwgYnApOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gb3V0OwotCXJldHZhbCA9IHhmc19kaXJfc2hvcnRmb3JtX2NyZWF0ZShpYXJncywgcGFyZW50KTsKLQlpZiAocmV0dmFsKQotCQlnb3RvIG91dDsKLQotCS8qCi0JICogQ29weSB0aGUgcmVzdCBvZiB0aGUgZmlsZW5hbWVzCi0JICovCi0JZW50cnkgPSAmbGVhZi0+ZW50cmllc1swXTsKLQlhcmdzLmRwID0gZHA7Ci0JYXJncy5maXJzdGJsb2NrID0gaWFyZ3MtPmZpcnN0YmxvY2s7Ci0JYXJncy5mbGlzdCA9IGlhcmdzLT5mbGlzdDsKLQlhcmdzLnRvdGFsID0gaWFyZ3MtPnRvdGFsOwotCWFyZ3Mud2hpY2hmb3JrID0gWEZTX0RBVEFfRk9SSzsKLQlhcmdzLnRyYW5zID0gaWFyZ3MtPnRyYW5zOwotCWFyZ3MuanVzdGNoZWNrID0gMDsKLQlhcmdzLmFkZG5hbWUgPSBhcmdzLm9rbm9lbnQgPSAxOwotCWZvciAoaSA9IDA7IGkgPCBJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCk7IGVudHJ5KyssIGkrKykgewotCQlpZiAoIWVudHJ5LT5uYW1laWR4KQotCQkJY29udGludWU7Ci0JCW5hbWVzdCA9IFhGU19ESVJfTEVBRl9OQU1FU1RSVUNUKGxlYWYsIElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkpOwotCQlhcmdzLm5hbWUgPSAoY2hhciAqKShuYW1lc3QtPm5hbWUpOwotCQlhcmdzLm5hbWVsZW4gPSBlbnRyeS0+bmFtZWxlbjsKLQkJYXJncy5oYXNodmFsID0gSU5UX0dFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJUKTsKLQkJWEZTX0RJUl9TRl9HRVRfRElSSU5PKCZuYW1lc3QtPmludW1iZXIsICZhcmdzLmludW1iZXIpOwotCQl4ZnNfZGlyX3Nob3J0Zm9ybV9hZGRuYW1lKCZhcmdzKTsKLQl9Ci0KLW91dDoKLQlrbWVtX2ZyZWUodG1wYnVmZmVyLCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSk7Ci0JcmV0dXJuIHJldHZhbDsKLX0KLQotLyoKLSAqIENvbnZlcnQgZnJvbSB1c2luZyBhIHNpbmdsZSBsZWFmIHRvIGEgcm9vdCBub2RlIGFuZCBhIGxlYWYuCi0gKi8KLWludAoteGZzX2Rpcl9sZWFmX3RvX25vZGUoeGZzX2RhX2FyZ3NfdCAqYXJncykKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCXhmc19kYV9pbnRub2RlX3QgKm5vZGU7Ci0JeGZzX2lub2RlX3QgKmRwOwotCXhmc19kYWJ1Zl90ICpicDEsICpicDI7Ci0JeGZzX2RhYmxrX3QgYmxrbm87Ci0JaW50IHJldHZhbDsKLQotCWRwID0gYXJncy0+ZHA7Ci0JcmV0dmFsID0geGZzX2RhX2dyb3dfaW5vZGUoYXJncywgJmJsa25vKTsKLQlBU1NFUlQoYmxrbm8gPT0gMSk7Ci0JaWYgKHJldHZhbCkKLQkJcmV0dXJuIHJldHZhbDsKLQlyZXR2YWwgPSB4ZnNfZGFfcmVhZF9idWYoYXJncy0+dHJhbnMsIGFyZ3MtPmRwLCAwLCAtMSwgJmJwMSwKLQkJCQkJICAgICAgWEZTX0RBVEFfRk9SSyk7Ci0JaWYgKHJldHZhbCkKLQkJcmV0dXJuIHJldHZhbDsKLQlBU1NFUlQoYnAxICE9IE5VTEwpOwotCXJldHZhbCA9IHhmc19kYV9nZXRfYnVmKGFyZ3MtPnRyYW5zLCBhcmdzLT5kcCwgMSwgLTEsICZicDIsCi0JCQkJCSAgICAgWEZTX0RBVEFfRk9SSyk7Ci0JaWYgKHJldHZhbCkgewotCQl4ZnNfZGFfYnVmX2RvbmUoYnAxKTsKLQkJcmV0dXJuIHJldHZhbDsKLQl9Ci0JQVNTRVJUKGJwMiAhPSBOVUxMKTsKLQltZW1jcHkoYnAyLT5kYXRhLCBicDEtPmRhdGEsIFhGU19MQlNJWkUoZHAtPmlfbW91bnQpKTsKLQl4ZnNfZGFfYnVmX2RvbmUoYnAxKTsKLQl4ZnNfZGFfbG9nX2J1ZihhcmdzLT50cmFucywgYnAyLCAwLCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSAtIDEpOwotCi0JLyoKLQkgKiBTZXQgdXAgdGhlIG5ldyByb290IG5vZGUuCi0JICovCi0JcmV0dmFsID0geGZzX2RhX25vZGVfY3JlYXRlKGFyZ3MsIDAsIDEsICZicDEsIFhGU19EQVRBX0ZPUkspOwotCWlmIChyZXR2YWwpIHsKLQkJeGZzX2RhX2J1Zl9kb25lKGJwMik7Ci0JCXJldHVybiByZXR2YWw7Ci0JfQotCW5vZGUgPSBicDEtPmRhdGE7Ci0JbGVhZiA9IGJwMi0+ZGF0YTsKLQlBU1NFUlQoYmUxNl90b19jcHUobGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0Jbm9kZS0+YnRyZWVbMF0uaGFzaHZhbCA9IGNwdV90b19iZTMyKAotCQlJTlRfR0VUKGxlYWYtPmVudHJpZXNbCi0JCQlJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKS0xXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpKTsKLQl4ZnNfZGFfYnVmX2RvbmUoYnAyKTsKLQlub2RlLT5idHJlZVswXS5iZWZvcmUgPSBjcHVfdG9fYmUzMihibGtubyk7Ci0Jbm9kZS0+aGRyLmNvdW50ID0gY3B1X3RvX2JlMTYoMSk7Ci0JeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwMSwKLQkJWEZTX0RBX0xPR1JBTkdFKG5vZGUsICZub2RlLT5idHJlZVswXSwgc2l6ZW9mKG5vZGUtPmJ0cmVlWzBdKSkpOwotCXhmc19kYV9idWZfZG9uZShicDEpOwotCi0JcmV0dXJuIHJldHZhbDsKLX0KLQotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogUm91dGluZXMgdXNlZCBmb3IgZ3Jvd2luZyB0aGUgQnRyZWUuCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qCi0gKiBDcmVhdGUgdGhlIGluaXRpYWwgY29udGVudHMgb2YgYSBsZWFmIGRpcmVjdG9yeQotICogb3IgYSBsZWFmIGluIGEgbm9kZSBkaXJlY3RvcnkuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc19kaXJfbGVhZl9jcmVhdGUoeGZzX2RhX2FyZ3NfdCAqYXJncywgeGZzX2RhYmxrX3QgYmxrbm8sIHhmc19kYWJ1Zl90ICoqYnBwKQotewotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWY7Ci0JeGZzX2Rpcl9sZWFmX2hkcl90ICpoZHI7Ci0JeGZzX2lub2RlX3QgKmRwOwotCXhmc19kYWJ1Zl90ICpicDsKLQlpbnQgcmV0dmFsOwotCi0JZHAgPSBhcmdzLT5kcDsKLQlBU1NFUlQoZHAgIT0gTlVMTCk7Ci0JcmV0dmFsID0geGZzX2RhX2dldF9idWYoYXJncy0+dHJhbnMsIGRwLCBibGtubywgLTEsICZicCwgWEZTX0RBVEFfRk9SSyk7Ci0JaWYgKHJldHZhbCkKLQkJcmV0dXJuIHJldHZhbDsKLQlBU1NFUlQoYnAgIT0gTlVMTCk7Ci0JbGVhZiA9IGJwLT5kYXRhOwotCW1lbXNldCgoY2hhciAqKWxlYWYsIDAsIFhGU19MQlNJWkUoZHAtPmlfbW91bnQpKTsKLQloZHIgPSAmbGVhZi0+aGRyOwotCWhkci0+aW5mby5tYWdpYyA9IGNwdV90b19iZTE2KFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JSU5UX1NFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJULCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSk7Ci0JaWYgKCFoZHItPmZpcnN0dXNlZCkKLQkJSU5UX1NFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJULCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSAtIDEpOwotCUlOVF9TRVQoaGRyLT5mcmVlbWFwWzBdLmJhc2UsIEFSQ0hfQ09OVkVSVCwgc2l6ZW9mKHhmc19kaXJfbGVhZl9oZHJfdCkpOwotCUlOVF9TRVQoaGRyLT5mcmVlbWFwWzBdLnNpemUsIEFSQ0hfQ09OVkVSVCwgSU5UX0dFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJUKSAtIElOVF9HRVQoaGRyLT5mcmVlbWFwWzBdLmJhc2UsIEFSQ0hfQ09OVkVSVCkpOwotCi0JeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwLCAwLCBYRlNfTEJTSVpFKGRwLT5pX21vdW50KSAtIDEpOwotCi0JKmJwcCA9IGJwOwotCXJldHVybiAwOwotfQotCi0vKgotICogU3BsaXQgdGhlIGxlYWYgbm9kZSwgcmViYWxhbmNlLCB0aGVuIGFkZCB0aGUgbmV3IGVudHJ5LgotICovCi1pbnQKLXhmc19kaXJfbGVhZl9zcGxpdCh4ZnNfZGFfc3RhdGVfdCAqc3RhdGUsIHhmc19kYV9zdGF0ZV9ibGtfdCAqb2xkYmxrLAotCQkJCSAgeGZzX2RhX3N0YXRlX2Jsa190ICpuZXdibGspCi17Ci0JeGZzX2RhYmxrX3QgYmxrbm87Ci0JeGZzX2RhX2FyZ3NfdCAqYXJnczsKLQlpbnQgZXJyb3I7Ci0KLQkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBhIG5ldyBsZWFmIG5vZGUuCi0JICovCi0JYXJncyA9IHN0YXRlLT5hcmdzOwotCUFTU0VSVChhcmdzICE9IE5VTEwpOwotCUFTU0VSVChvbGRibGstPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JZXJyb3IgPSB4ZnNfZGFfZ3Jvd19pbm9kZShhcmdzLCAmYmxrbm8pOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIGVycm9yOwotCWVycm9yID0geGZzX2Rpcl9sZWFmX2NyZWF0ZShhcmdzLCBibGtubywgJm5ld2Jsay0+YnApOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIGVycm9yOwotCW5ld2Jsay0+Ymxrbm8gPSBibGtubzsKLQluZXdibGstPm1hZ2ljID0gWEZTX0RJUl9MRUFGX01BR0lDOwotCi0JLyoKLQkgKiBSZWJhbGFuY2UgdGhlIGVudHJpZXMgYWNyb3NzIHRoZSB0d28gbGVhdmVzLgotCSAqLwotCXhmc19kaXJfbGVhZl9yZWJhbGFuY2Uoc3RhdGUsIG9sZGJsaywgbmV3YmxrKTsKLQllcnJvciA9IHhmc19kYV9ibGtfbGluayhzdGF0ZSwgb2xkYmxrLCBuZXdibGspOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIGVycm9yOwotCi0JLyoKLQkgKiBJbnNlcnQgdGhlIG5ldyBlbnRyeSBpbiB0aGUgY29ycmVjdCBibG9jay4KLQkgKi8KLQlpZiAoc3RhdGUtPmlubGVhZikgewotCQllcnJvciA9IHhmc19kaXJfbGVhZl9hZGQob2xkYmxrLT5icCwgYXJncywgb2xkYmxrLT5pbmRleCk7Ci0JfSBlbHNlIHsKLQkJZXJyb3IgPSB4ZnNfZGlyX2xlYWZfYWRkKG5ld2Jsay0+YnAsIGFyZ3MsIG5ld2Jsay0+aW5kZXgpOwotCX0KLQotCS8qCi0JICogVXBkYXRlIGxhc3QgaGFzaHZhbCBpbiBlYWNoIGJsb2NrIHNpbmNlIHdlIGFkZGVkIHRoZSBuYW1lLgotCSAqLwotCW9sZGJsay0+aGFzaHZhbCA9IHhmc19kaXJfbGVhZl9sYXN0aGFzaChvbGRibGstPmJwLCBOVUxMKTsKLQluZXdibGstPmhhc2h2YWwgPSB4ZnNfZGlyX2xlYWZfbGFzdGhhc2gobmV3YmxrLT5icCwgTlVMTCk7Ci0JcmV0dXJuIGVycm9yOwotfQotCi0vKgotICogQWRkIGEgbmFtZSB0byB0aGUgbGVhZiBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICoKLSAqIE11c3QgdGFrZSBpbnRvIGFjY291bnQgZnJhZ21lbnRlZCBsZWF2ZXMgYW5kIGxlYXZlcyB3aGVyZSBzcGFjZW1hcCBoYXMKLSAqIGxvc3Qgc29tZSBmcmVlc3BhY2UgaW5mb3JtYXRpb24gKGllOiBob2xlcykuCi0gKi8KLWludAoteGZzX2Rpcl9sZWFmX2FkZCh4ZnNfZGFidWZfdCAqYnAsIHhmc19kYV9hcmdzX3QgKmFyZ3MsIGludCBpbmRleCkKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCXhmc19kaXJfbGVhZl9oZHJfdCAqaGRyOwotCXhmc19kaXJfbGVhZl9tYXBfdCAqbWFwOwotCWludCB0YWJsZXNpemUsIGVudHNpemUsIHN1bSwgaSwgdG1wLCBlcnJvcjsKLQotCWxlYWYgPSBicC0+ZGF0YTsKLQlBU1NFUlQoYmUxNl90b19jcHUobGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JQVNTRVJUKChpbmRleCA+PSAwKSAmJiAoaW5kZXggPD0gSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkpKTsKLQloZHIgPSAmbGVhZi0+aGRyOwotCWVudHNpemUgPSBYRlNfRElSX0xFQUZfRU5UU0laRV9CWU5BTUUoYXJncy0+bmFtZWxlbik7Ci0KLQkvKgotCSAqIFNlYXJjaCB0aHJvdWdoIGZyZWVtYXAgZm9yIGZpcnN0LWZpdCBvbiBuZXcgbmFtZSBsZW5ndGguCi0JICogKG1heSBuZWVkIHRvIGZpZ3VyZSBpbiBzaXplIG9mIGVudHJ5IHN0cnVjdCB0b28pCi0JICovCi0JdGFibGVzaXplID0gKElOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKSArIDEpICogKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KQotCQkJKyAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2hkcl90KTsKLQltYXAgPSAmaGRyLT5mcmVlbWFwW1hGU19ESVJfTEVBRl9NQVBTSVpFLTFdOwotCWZvciAoc3VtID0gMCwgaSA9IFhGU19ESVJfTEVBRl9NQVBTSVpFLTE7IGkgPj0gMDsgbWFwLS0sIGktLSkgewotCQlpZiAodGFibGVzaXplID4gSU5UX0dFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJUKSkgewotCQkJc3VtICs9IElOVF9HRVQobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQpOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFtYXAtPnNpemUpCi0JCQljb250aW51ZTsJLyogbm8gc3BhY2UgaW4gdGhpcyBtYXAgKi8KLQkJdG1wID0gZW50c2l6ZTsKLQkJaWYgKElOVF9HRVQobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQpIDwgSU5UX0dFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJUKSkKLQkJCXRtcCArPSAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCQlpZiAoSU5UX0dFVChtYXAtPnNpemUsIEFSQ0hfQ09OVkVSVCkgPj0gdG1wKSB7Ci0JCQlpZiAoIWFyZ3MtPmp1c3RjaGVjaykKLQkJCQl4ZnNfZGlyX2xlYWZfYWRkX3dvcmsoYnAsIGFyZ3MsIGluZGV4LCBpKTsKLQkJCXJldHVybiAwOwotCQl9Ci0JCXN1bSArPSBJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKTsKLQl9Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBubyBob2xlcyBpbiB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgYmxvY2ssCi0JICogYW5kIHdlIGRvbid0IGhhdmUgZW5vdWdoIGZyZWVzcGFjZSwgdGhlbiBjb21wYWN0aW9uIHdpbGwgZG8gdXMKLQkgKiBubyBnb29kIGFuZCB3ZSBzaG91bGQganVzdCBnaXZlIHVwLgotCSAqLwotCWlmICghaGRyLT5ob2xlcyAmJiAoc3VtIDwgZW50c2l6ZSkpCi0JCXJldHVybiBYRlNfRVJST1IoRU5PU1BDKTsKLQotCS8qCi0JICogQ29tcGFjdCB0aGUgZW50cmllcyB0byBjb2FsZXNjZSBmcmVlIHNwYWNlLgotCSAqIFBhc3MgdGhlIGp1c3RjaGVjayBmbGFnIHNvIHRoZSBjaGVja2luZyBwYXNzIGNhbiByZXR1cm4KLQkgKiBhbiBlcnJvciwgd2l0aG91dCBjaGFuZ2luZyBhbnl0aGluZywgaWYgaXQgd29uJ3QgZml0LgotCSAqLwotCWVycm9yID0geGZzX2Rpcl9sZWFmX2NvbXBhY3QoYXJncy0+dHJhbnMsIGJwLAotCQkJYXJncy0+dG90YWwgPT0gMCA/Ci0JCQkJZW50c2l6ZSArCi0JCQkJKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KSA6IDAsCi0JCQlhcmdzLT5qdXN0Y2hlY2spOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIGVycm9yOwotCS8qCi0JICogQWZ0ZXIgY29tcGFjdGlvbiwgdGhlIGJsb2NrIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBvbmx5IG9uZQotCSAqIGZyZWUgcmVnaW9uLCBpbiBmcmVlbWFwWzBdLiAgSWYgaXQgaXMgbm90IGJpZyBlbm91Z2gsIGdpdmUgdXAuCi0JICovCi0JaWYgKElOVF9HRVQoaGRyLT5mcmVlbWFwWzBdLnNpemUsIEFSQ0hfQ09OVkVSVCkgPAotCSAgICAoZW50c2l6ZSArICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCkpKQotCQlyZXR1cm4gWEZTX0VSUk9SKEVOT1NQQyk7Ci0KLQlpZiAoIWFyZ3MtPmp1c3RjaGVjaykKLQkJeGZzX2Rpcl9sZWFmX2FkZF93b3JrKGJwLCBhcmdzLCBpbmRleCwgMCk7Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBBZGQgYSBuYW1lIHRvIGEgbGVhZiBkaXJlY3Rvcnkgc3RydWN0dXJlLgotICovCi1TVEFUSUMgdm9pZAoteGZzX2Rpcl9sZWFmX2FkZF93b3JrKHhmc19kYWJ1Zl90ICpicCwgeGZzX2RhX2FyZ3NfdCAqYXJncywgaW50IGluZGV4LAotCQkgICAgICBpbnQgbWFwaW5kZXgpCi17Ci0JeGZzX2Rpcl9sZWFmYmxvY2tfdCAqbGVhZjsKLQl4ZnNfZGlyX2xlYWZfaGRyX3QgKmhkcjsKLQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnk7Ci0JeGZzX2Rpcl9sZWFmX25hbWVfdCAqbmFtZXN0OwotCXhmc19kaXJfbGVhZl9tYXBfdCAqbWFwOwotCS8qIFJFRkVSRU5DRUQgKi8KLQl4ZnNfbW91bnRfdCAqbXA7Ci0JaW50IHRtcCwgaTsKLQotCWxlYWYgPSBicC0+ZGF0YTsKLQlBU1NFUlQoYmUxNl90b19jcHUobGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JaGRyID0gJmxlYWYtPmhkcjsKLQlBU1NFUlQoKG1hcGluZGV4ID49IDApICYmIChtYXBpbmRleCA8IFhGU19ESVJfTEVBRl9NQVBTSVpFKSk7Ci0JQVNTRVJUKChpbmRleCA+PSAwKSAmJiAoaW5kZXggPD0gSU5UX0dFVChoZHItPmNvdW50LCBBUkNIX0NPTlZFUlQpKSk7Ci0KLQkvKgotCSAqIEZvcmNlIG9wZW4gc29tZSBzcGFjZSBpbiB0aGUgZW50cnkgYXJyYXkgYW5kIGZpbGwgaXQgaW4uCi0JICovCi0JZW50cnkgPSAmbGVhZi0+ZW50cmllc1tpbmRleF07Ci0JaWYgKGluZGV4IDwgSU5UX0dFVChoZHItPmNvdW50LCBBUkNIX0NPTlZFUlQpKSB7Ci0JCXRtcCAgPSBJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgLSBpbmRleDsKLQkJdG1wICo9ICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCk7Ci0JCW1lbW1vdmUoZW50cnkgKyAxLCBlbnRyeSwgdG1wKTsKLQkJeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwLAotCQkgICAgWEZTX0RBX0xPR1JBTkdFKGxlYWYsIGVudHJ5LCB0bXAgKyAodWludClzaXplb2YoKmVudHJ5KSkpOwotCX0KLQlJTlRfTU9EKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCwgKzEpOwotCi0JLyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5ldyBzdHJpbmcgKGF0IHRoZSBlbmQgb2YgdGhlIHJ1bikuCi0JICovCi0JbWFwID0gJmhkci0+ZnJlZW1hcFttYXBpbmRleF07Ci0JbXAgPSBhcmdzLT50cmFucy0+dF9tb3VudHA7Ci0JQVNTRVJUKElOVF9HRVQobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQpIDwgWEZTX0xCU0laRShtcCkpOwotCUFTU0VSVChJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKSA+PSBYRlNfRElSX0xFQUZfRU5UU0laRV9CWU5BTUUoYXJncy0+bmFtZWxlbikpOwotCUFTU0VSVChJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKSA8IFhGU19MQlNJWkUobXApKTsKLQlJTlRfTU9EKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJULCAtKFhGU19ESVJfTEVBRl9FTlRTSVpFX0JZTkFNRShhcmdzLT5uYW1lbGVuKSkpOwotCUlOVF9TRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCwgSU5UX0dFVChtYXAtPmJhc2UsIEFSQ0hfQ09OVkVSVCkgKyBJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKSk7Ci0JSU5UX1NFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJULCBhcmdzLT5oYXNodmFsKTsKLQllbnRyeS0+bmFtZWxlbiA9IGFyZ3MtPm5hbWVsZW47Ci0JeGZzX2RhX2xvZ19idWYoYXJncy0+dHJhbnMsIGJwLAotCSAgICBYRlNfREFfTE9HUkFOR0UobGVhZiwgZW50cnksIHNpemVvZigqZW50cnkpKSk7Ci0KLQkvKgotCSAqIENvcHkgdGhlIHN0cmluZyBhbmQgaW5vZGUgbnVtYmVyIGludG8gdGhlIG5ldyBzcGFjZS4KLQkgKi8KLQluYW1lc3QgPSBYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmLCBJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpKTsKLQlYRlNfRElSX1NGX1BVVF9ESVJJTk8oJmFyZ3MtPmludW1iZXIsICZuYW1lc3QtPmludW1iZXIpOwotCW1lbWNweShuYW1lc3QtPm5hbWUsIGFyZ3MtPm5hbWUsIGFyZ3MtPm5hbWVsZW4pOwotCXhmc19kYV9sb2dfYnVmKGFyZ3MtPnRyYW5zLCBicCwKLQkgICAgWEZTX0RBX0xPR1JBTkdFKGxlYWYsIG5hbWVzdCwgWEZTX0RJUl9MRUFGX0VOVFNJWkVfQllFTlRSWShlbnRyeSkpKTsKLQotCS8qCi0JICogVXBkYXRlIHRoZSBjb250cm9sIGluZm8gZm9yIHRoaXMgbGVhZiBub2RlCi0JICovCi0JaWYgKElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkgPCBJTlRfR0VUKGhkci0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpKQotCQlJTlRfQ09QWShoZHItPmZpcnN0dXNlZCwgZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCk7Ci0JQVNTRVJUKElOVF9HRVQoaGRyLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCkgPj0gKChJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCkqc2l6ZW9mKCplbnRyeSkpK3NpemVvZigqaGRyKSkpOwotCXRtcCA9IChJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCktMSkgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpCi0JCQkrICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpOwotCW1hcCA9ICZoZHItPmZyZWVtYXBbMF07Ci0JZm9yIChpID0gMDsgaSA8IFhGU19ESVJfTEVBRl9NQVBTSVpFOyBtYXArKywgaSsrKSB7Ci0JCWlmIChJTlRfR0VUKG1hcC0+YmFzZSwgQVJDSF9DT05WRVJUKSA9PSB0bXApIHsKLQkJCUlOVF9NT0QobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQsICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCkpOwotCQkJSU5UX01PRChtYXAtPnNpemUsIEFSQ0hfQ09OVkVSVCwgLSgodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpKSk7Ci0JCX0KLQl9Ci0JSU5UX01PRChoZHItPm5hbWVieXRlcywgQVJDSF9DT05WRVJULCBhcmdzLT5uYW1lbGVuKTsKLQl4ZnNfZGFfbG9nX2J1ZihhcmdzLT50cmFucywgYnAsCi0JCVhGU19EQV9MT0dSQU5HRShsZWFmLCBoZHIsIHNpemVvZigqaGRyKSkpOwotfQotCi0vKgotICogR2FyYmFnZSBjb2xsZWN0IGEgbGVhZiBkaXJlY3RvcnkgYmxvY2sgYnkgY29weWluZyBpdCB0byBhIG5ldyBidWZmZXIuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc19kaXJfbGVhZl9jb21wYWN0KHhmc190cmFuc190ICp0cmFucywgeGZzX2RhYnVmX3QgKmJwLCBpbnQgbXVzdGhhdmUsCi0JCSAgICAgaW50IGp1c3RjaGVjaykKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmX3MsICpsZWFmX2Q7Ci0JeGZzX2Rpcl9sZWFmX2hkcl90ICpoZHJfcywgKmhkcl9kOwotCXhmc19tb3VudF90ICptcDsKLQljaGFyICp0bXBidWZmZXI7Ci0JY2hhciAqdG1wYnVmZmVyMj1OVUxMOwotCWludCBydmFsOwotCWludCBsYnNpemU7Ci0KLQltcCA9IHRyYW5zLT50X21vdW50cDsKLQlsYnNpemUgPSBYRlNfTEJTSVpFKG1wKTsKLQl0bXBidWZmZXIgPSBrbWVtX2FsbG9jKGxic2l6ZSwgS01fU0xFRVApOwotCUFTU0VSVCh0bXBidWZmZXIgIT0gTlVMTCk7Ci0JbWVtY3B5KHRtcGJ1ZmZlciwgYnAtPmRhdGEsIGxic2l6ZSk7Ci0KLQkvKgotCSAqIE1ha2UgYSBzZWNvbmQgY29weSBpbiBjYXNlIHhmc19kaXJfbGVhZl9tb3ZlZW50cygpCi0JICogYmVsb3cgZGVzdHJveXMgdGhlIG9yaWdpbmFsLgotCSAqLwotCWlmIChtdXN0aGF2ZSB8fCBqdXN0Y2hlY2spIHsKLQkJdG1wYnVmZmVyMiA9IGttZW1fYWxsb2MobGJzaXplLCBLTV9TTEVFUCk7Ci0JCW1lbWNweSh0bXBidWZmZXIyLCBicC0+ZGF0YSwgbGJzaXplKTsKLQl9Ci0JbWVtc2V0KGJwLT5kYXRhLCAwLCBsYnNpemUpOwotCi0JLyoKLQkgKiBDb3B5IGJhc2ljIGluZm9ybWF0aW9uCi0JICovCi0JbGVhZl9zID0gKHhmc19kaXJfbGVhZmJsb2NrX3QgKil0bXBidWZmZXI7Ci0JbGVhZl9kID0gYnAtPmRhdGE7Ci0JaGRyX3MgPSAmbGVhZl9zLT5oZHI7Ci0JaGRyX2QgPSAmbGVhZl9kLT5oZHI7Ci0JaGRyX2QtPmluZm8gPSBoZHJfcy0+aW5mbzsJLyogc3RydWN0IGNvcHkgKi8KLQlJTlRfU0VUKGhkcl9kLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCwgbGJzaXplKTsKLQlpZiAoIWhkcl9kLT5maXJzdHVzZWQpCi0JCUlOVF9TRVQoaGRyX2QtPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJULCBsYnNpemUgLSAxKTsKLQloZHJfZC0+bmFtZWJ5dGVzID0gMDsKLQloZHJfZC0+Y291bnQgPSAwOwotCWhkcl9kLT5ob2xlcyA9IDA7Ci0JSU5UX1NFVChoZHJfZC0+ZnJlZW1hcFswXS5iYXNlLCBBUkNIX0NPTlZFUlQsIHNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpKTsKLQlJTlRfU0VUKGhkcl9kLT5mcmVlbWFwWzBdLnNpemUsIEFSQ0hfQ09OVkVSVCwgSU5UX0dFVChoZHJfZC0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpIC0gSU5UX0dFVChoZHJfZC0+ZnJlZW1hcFswXS5iYXNlLCBBUkNIX0NPTlZFUlQpKTsKLQotCS8qCi0JICogQ29weSBhbGwgZW50cnkncyBpbiB0aGUgc2FtZSAoc29ydGVkKSBvcmRlciwKLQkgKiBidXQgYWxsb2NhdGUgZmlsZW5hbWVzIHBhY2tlZCBhbmQgaW4gc2VxdWVuY2UuCi0JICogVGhpcyBjaGFuZ2VzIHRoZSBzb3VyY2UgKGxlYWZfcykgYXMgd2VsbC4KLQkgKi8KLQl4ZnNfZGlyX2xlYWZfbW92ZWVudHMobGVhZl9zLCAwLCBsZWFmX2QsIDAsIChpbnQpSU5UX0dFVChoZHJfcy0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQotCWlmIChtdXN0aGF2ZSAmJiBJTlRfR0VUKGhkcl9kLT5mcmVlbWFwWzBdLnNpemUsIEFSQ0hfQ09OVkVSVCkgPCBtdXN0aGF2ZSkKLQkJcnZhbCA9IFhGU19FUlJPUihFTk9TUEMpOwotCWVsc2UKLQkJcnZhbCA9IDA7Ci0KLQlpZiAoanVzdGNoZWNrIHx8IHJ2YWwgPT0gRU5PU1BDKSB7Ci0JCUFTU0VSVCh0bXBidWZmZXIyKTsKLQkJbWVtY3B5KGJwLT5kYXRhLCB0bXBidWZmZXIyLCBsYnNpemUpOwotCX0gZWxzZSB7Ci0JCXhmc19kYV9sb2dfYnVmKHRyYW5zLCBicCwgMCwgbGJzaXplIC0gMSk7Ci0JfQotCi0Ja21lbV9mcmVlKHRtcGJ1ZmZlciwgbGJzaXplKTsKLQlpZiAobXVzdGhhdmUgfHwganVzdGNoZWNrKQotCQlrbWVtX2ZyZWUodG1wYnVmZmVyMiwgbGJzaXplKTsKLQlyZXR1cm4gcnZhbDsKLX0KLQotLyoKLSAqIFJlZGlzdHJpYnV0ZSB0aGUgZGlyZWN0b3J5IGVudHJpZXMgYmV0d2VlbiB0d28gbGVhZiBub2RlcywKLSAqIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNpemUgb2YgdGhlIG5ldyBlbnRyeS4KLSAqCi0gKiBOT1RFOiBpZiBuZXcgYmxvY2sgaXMgZW1wdHksIHRoZW4gaXQgd2lsbCBnZXQgdGhlIHVwcGVyIGhhbGYgb2Ygb2xkIGJsb2NrLgotICovCi1TVEFUSUMgdm9pZAoteGZzX2Rpcl9sZWFmX3JlYmFsYW5jZSh4ZnNfZGFfc3RhdGVfdCAqc3RhdGUsIHhmc19kYV9zdGF0ZV9ibGtfdCAqYmxrMSwKLQkJCQkgICAgICB4ZnNfZGFfc3RhdGVfYmxrX3QgKmJsazIpCi17Ci0JeGZzX2RhX3N0YXRlX2Jsa190ICp0bXBfYmxrOwotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWYxLCAqbGVhZjI7Ci0JeGZzX2Rpcl9sZWFmX2hkcl90ICpoZHIxLCAqaGRyMjsKLQlpbnQgY291bnQsIHRvdGFsbGVuLCBtYXgsIHNwYWNlLCBzd2FwOwotCi0JLyoKLQkgKiBTZXQgdXAgZW52aXJvbm1lbnQuCi0JICovCi0JQVNTRVJUKGJsazEtPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JQVNTRVJUKGJsazItPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JbGVhZjEgPSBibGsxLT5icC0+ZGF0YTsKLQlsZWFmMiA9IGJsazItPmJwLT5kYXRhOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmMS0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JQVNTRVJUKGJlMTZfdG9fY3B1KGxlYWYyLT5oZHIuaW5mby5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQotCS8qCi0JICogQ2hlY2sgb3JkZXJpbmcgb2YgYmxvY2tzLCByZXZlcnNlIGlmIGl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyLgotCSAqLwotCXN3YXAgPSAwOwotCWlmICh4ZnNfZGlyX2xlYWZfb3JkZXIoYmxrMS0+YnAsIGJsazItPmJwKSkgewotCQl0bXBfYmxrID0gYmxrMTsKLQkJYmxrMSA9IGJsazI7Ci0JCWJsazIgPSB0bXBfYmxrOwotCQlsZWFmMSA9IGJsazEtPmJwLT5kYXRhOwotCQlsZWFmMiA9IGJsazItPmJwLT5kYXRhOwotCQlzd2FwID0gMTsKLQl9Ci0JaGRyMSA9ICZsZWFmMS0+aGRyOwotCWhkcjIgPSAmbGVhZjItPmhkcjsKLQotCS8qCi0JICogRXhhbWluZSBlbnRyaWVzIHVudGlsIHdlIHJlZHVjZSB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBpbgotCSAqIGJ5dGUgdXNhZ2UgYmV0d2VlbiB0aGUgdHdvIGJsb2NrcyB0byBhIG1pbmltdW0uICBUaGVuIGdldAotCSAqIHRoZSBkaXJlY3Rpb24gdG8gY29weSBhbmQgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBtb3ZlLgotCSAqLwotCXN0YXRlLT5pbmxlYWYgPSB4ZnNfZGlyX2xlYWZfZmlndXJlX2JhbGFuY2Uoc3RhdGUsIGJsazEsIGJsazIsCi0JCQkJCQkJICAgJmNvdW50LCAmdG90YWxsZW4pOwotCWlmIChzd2FwKQotCQlzdGF0ZS0+aW5sZWFmID0gIXN0YXRlLT5pbmxlYWY7Ci0KLQkvKgotCSAqIE1vdmUgYW55IGVudHJpZXMgcmVxdWlyZWQgZnJvbSBsZWFmIHRvIGxlYWY6Ci0JICovCi0JaWYgKGNvdW50IDwgSU5UX0dFVChoZHIxLT5jb3VudCwgQVJDSF9DT05WRVJUKSkgewotCQkvKgotCQkgKiBGaWd1cmUgdGhlIHRvdGFsIGJ5dGVzIHRvIGJlIGFkZGVkIHRvIHRoZSBkZXN0aW5hdGlvbiBsZWFmLgotCQkgKi8KLQkJY291bnQgPSBJTlRfR0VUKGhkcjEtPmNvdW50LCBBUkNIX0NPTlZFUlQpIC0gY291bnQ7CS8qIG51bWJlciBlbnRyaWVzIGJlaW5nIG1vdmVkICovCi0JCXNwYWNlICA9IElOVF9HRVQoaGRyMS0+bmFtZWJ5dGVzLCBBUkNIX0NPTlZFUlQpIC0gdG90YWxsZW47Ci0JCXNwYWNlICs9IGNvdW50ICogKCh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfbmFtZV90KS0xKTsKLQkJc3BhY2UgKz0gY291bnQgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCi0JCS8qCi0JCSAqIGxlYWYyIGlzIHRoZSBkZXN0aW5hdGlvbiwgY29tcGFjdCBpdCBpZiBpdCBsb29rcyB0aWdodC4KLQkJICovCi0JCW1heCAgPSBJTlRfR0VUKGhkcjItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJUKSAtICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpOwotCQltYXggLT0gSU5UX0dFVChoZHIyLT5jb3VudCwgQVJDSF9DT05WRVJUKSAqICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCk7Ci0JCWlmIChzcGFjZSA+IG1heCkgewotCQkJeGZzX2Rpcl9sZWFmX2NvbXBhY3Qoc3RhdGUtPmFyZ3MtPnRyYW5zLCBibGsyLT5icCwKLQkJCQkJCQkJIDAsIDApOwotCQl9Ci0KLQkJLyoKLQkJICogTW92ZSBoaWdoIGVudHJpZXMgZnJvbSBsZWFmMSB0byBsb3cgZW5kIG9mIGxlYWYyLgotCQkgKi8KLQkJeGZzX2Rpcl9sZWFmX21vdmVlbnRzKGxlYWYxLCBJTlRfR0VUKGhkcjEtPmNvdW50LCBBUkNIX0NPTlZFUlQpIC0gY291bnQsCi0JCQkJCSAgICAgbGVhZjIsIDAsIGNvdW50LCBzdGF0ZS0+bXApOwotCi0JCXhmc19kYV9sb2dfYnVmKHN0YXRlLT5hcmdzLT50cmFucywgYmxrMS0+YnAsIDAsCi0JCQkJCQkgICBzdGF0ZS0+YmxvY2tzaXplLTEpOwotCQl4ZnNfZGFfbG9nX2J1ZihzdGF0ZS0+YXJncy0+dHJhbnMsIGJsazItPmJwLCAwLAotCQkJCQkJICAgc3RhdGUtPmJsb2Nrc2l6ZS0xKTsKLQotCX0gZWxzZSBpZiAoY291bnQgPiBJTlRfR0VUKGhkcjEtPmNvdW50LCBBUkNIX0NPTlZFUlQpKSB7Ci0JCS8qCi0JCSAqIEZpZ3VyZSB0aGUgdG90YWwgYnl0ZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGxlYWYuCi0JCSAqLwotCQljb3VudCAtPSBJTlRfR0VUKGhkcjEtPmNvdW50LCBBUkNIX0NPTlZFUlQpOwkJLyogbnVtYmVyIGVudHJpZXMgYmVpbmcgbW92ZWQgKi8KLQkJc3BhY2UgID0gdG90YWxsZW4gLSBJTlRfR0VUKGhkcjEtPm5hbWVieXRlcywgQVJDSF9DT05WRVJUKTsKLQkJc3BhY2UgKz0gY291bnQgKiAoKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9uYW1lX3QpLTEpOwotCQlzcGFjZSArPSBjb3VudCAqICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCk7Ci0KLQkJLyoKLQkJICogbGVhZjEgaXMgdGhlIGRlc3RpbmF0aW9uLCBjb21wYWN0IGl0IGlmIGl0IGxvb2tzIHRpZ2h0LgotCQkgKi8KLQkJbWF4ICA9IElOVF9HRVQoaGRyMS0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpIC0gKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9oZHJfdCk7Ci0JCW1heCAtPSBJTlRfR0VUKGhkcjEtPmNvdW50LCBBUkNIX0NPTlZFUlQpICogKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KTsKLQkJaWYgKHNwYWNlID4gbWF4KSB7Ci0JCQl4ZnNfZGlyX2xlYWZfY29tcGFjdChzdGF0ZS0+YXJncy0+dHJhbnMsIGJsazEtPmJwLAotCQkJCQkJCQkgMCwgMCk7Ci0JCX0KLQotCQkvKgotCQkgKiBNb3ZlIGxvdyBlbnRyaWVzIGZyb20gbGVhZjIgdG8gaGlnaCBlbmQgb2YgbGVhZjEuCi0JCSAqLwotCQl4ZnNfZGlyX2xlYWZfbW92ZWVudHMobGVhZjIsIDAsIGxlYWYxLCAoaW50KUlOVF9HRVQoaGRyMS0+Y291bnQsIEFSQ0hfQ09OVkVSVCksCi0JCQkJCSAgICAgY291bnQsIHN0YXRlLT5tcCk7Ci0KLQkJeGZzX2RhX2xvZ19idWYoc3RhdGUtPmFyZ3MtPnRyYW5zLCBibGsxLT5icCwgMCwKLQkJCQkJCSAgIHN0YXRlLT5ibG9ja3NpemUtMSk7Ci0JCXhmc19kYV9sb2dfYnVmKHN0YXRlLT5hcmdzLT50cmFucywgYmxrMi0+YnAsIDAsCi0JCQkJCQkgICBzdGF0ZS0+YmxvY2tzaXplLTEpOwotCX0KLQotCS8qCi0JICogQ29weSBvdXQgbGFzdCBoYXNodmFsIGluIGVhY2ggYmxvY2sgZm9yIEItdHJlZSBjb2RlLgotCSAqLwotCWJsazEtPmhhc2h2YWwgPSBJTlRfR0VUKGxlYWYxLT5lbnRyaWVzWyBJTlRfR0VUKGxlYWYxLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCktMSBdLmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCk7Ci0JYmxrMi0+aGFzaHZhbCA9IElOVF9HRVQobGVhZjItPmVudHJpZXNbIElOVF9HRVQobGVhZjItPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKS0xIF0uaGFzaHZhbCwgQVJDSF9DT05WRVJUKTsKLQotCS8qCi0JICogQWRqdXN0IHRoZSBleHBlY3RlZCBpbmRleCBmb3IgaW5zZXJ0aW9uLgotCSAqIEdST1Q6IHRoaXMgZG9lc24ndCB3b3JrIHVubGVzcyBibGsyIHdhcyBvcmlnaW5hbGx5IGVtcHR5LgotCSAqLwotCWlmICghc3RhdGUtPmlubGVhZikgewotCQlibGsyLT5pbmRleCA9IGJsazEtPmluZGV4IC0gSU5UX0dFVChsZWFmMS0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCX0KLX0KLQotLyoKLSAqIEV4YW1pbmUgZW50cmllcyB1bnRpbCB3ZSByZWR1Y2UgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgaW4KLSAqIGJ5dGUgdXNhZ2UgYmV0d2VlbiB0aGUgdHdvIGJsb2NrcyB0byBhIG1pbmltdW0uCi0gKiBHUk9UOiBJcyB0aGlzIHJlYWxseSBuZWNlc3Nhcnk/ICBXaXRoIG90aGVyIHRoYW4gYSA1MTIgYnl0ZSBibG9ja3NpemUsCi0gKiBHUk9UOiB0aGVyZSB3aWxsIGFsd2F5cyBiZSBlbm91Z2ggcm9vbSBpbiBlaXRoZXIgYmxvY2sgZm9yIGEgbmV3IGVudHJ5LgotICogR1JPVDogRG8gYSBkb3VibGUtc3BsaXQgZm9yIHRoaXMgY2FzZT8KLSAqLwotU1RBVElDIGludAoteGZzX2Rpcl9sZWFmX2ZpZ3VyZV9iYWxhbmNlKHhmc19kYV9zdGF0ZV90ICpzdGF0ZSwKLQkJCQkJICAgeGZzX2RhX3N0YXRlX2Jsa190ICpibGsxLAotCQkJCQkgICB4ZnNfZGFfc3RhdGVfYmxrX3QgKmJsazIsCi0JCQkJCSAgIGludCAqY291bnRhcmcsIGludCAqbmFtZWJ5dGVzYXJnKQotewotCXhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWYxLCAqbGVhZjI7Ci0JeGZzX2Rpcl9sZWFmX2hkcl90ICpoZHIxLCAqaGRyMjsKLQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnk7Ci0JaW50IGNvdW50LCBtYXgsIHRvdGFsbGVuLCBoYWxmOwotCWludCBsYXN0ZGVsdGEsIGZvdW5kaXQsIHRtcDsKLQotCS8qCi0JICogU2V0IHVwIGVudmlyb25tZW50LgotCSAqLwotCWxlYWYxID0gYmxrMS0+YnAtPmRhdGE7Ci0JbGVhZjIgPSBibGsyLT5icC0+ZGF0YTsKLQloZHIxID0gJmxlYWYxLT5oZHI7Ci0JaGRyMiA9ICZsZWFmMi0+aGRyOwotCWZvdW5kaXQgPSAwOwotCXRvdGFsbGVuID0gMDsKLQotCS8qCi0JICogRXhhbWluZSBlbnRyaWVzIHVudGlsIHdlIHJlZHVjZSB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBpbgotCSAqIGJ5dGUgdXNhZ2UgYmV0d2VlbiB0aGUgdHdvIGJsb2NrcyB0byBhIG1pbmltdW0uCi0JICovCi0JbWF4ID0gSU5UX0dFVChoZHIxLT5jb3VudCwgQVJDSF9DT05WRVJUKSArIElOVF9HRVQoaGRyMi0+Y291bnQsIEFSQ0hfQ09OVkVSVCk7Ci0JaGFsZiAgPSAobWF4KzEpICogKHVpbnQpKHNpemVvZigqZW50cnkpK3NpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCktMSk7Ci0JaGFsZiArPSBJTlRfR0VUKGhkcjEtPm5hbWVieXRlcywgQVJDSF9DT05WRVJUKSArIElOVF9HRVQoaGRyMi0+bmFtZWJ5dGVzLCBBUkNIX0NPTlZFUlQpICsgc3RhdGUtPmFyZ3MtPm5hbWVsZW47Ci0JaGFsZiAvPSAyOwotCWxhc3RkZWx0YSA9IHN0YXRlLT5ibG9ja3NpemU7Ci0JZW50cnkgPSAmbGVhZjEtPmVudHJpZXNbMF07Ci0JZm9yIChjb3VudCA9IDA7IGNvdW50IDwgbWF4OyBlbnRyeSsrLCBjb3VudCsrKSB7Ci0KLSNkZWZpbmUgWEZTX0RJUl9BQlMoQSkJKCgoQSkgPCAwKSA/IC0oQSkgOiAoQSkpCi0JCS8qCi0JCSAqIFRoZSBuZXcgZW50cnkgaXMgaW4gdGhlIGZpcnN0IGJsb2NrLCBhY2NvdW50IGZvciBpdC4KLQkJICovCi0JCWlmIChjb3VudCA9PSBibGsxLT5pbmRleCkgewotCQkJdG1wID0gdG90YWxsZW4gKyAodWludClzaXplb2YoKmVudHJ5KQotCQkJCSsgWEZTX0RJUl9MRUFGX0VOVFNJWkVfQllOQU1FKHN0YXRlLT5hcmdzLT5uYW1lbGVuKTsKLQkJCWlmIChYRlNfRElSX0FCUyhoYWxmIC0gdG1wKSA+IGxhc3RkZWx0YSkKLQkJCQlicmVhazsKLQkJCWxhc3RkZWx0YSA9IFhGU19ESVJfQUJTKGhhbGYgLSB0bXApOwotCQkJdG90YWxsZW4gPSB0bXA7Ci0JCQlmb3VuZGl0ID0gMTsKLQkJfQotCi0JCS8qCi0JCSAqIFdyYXAgYXJvdW5kIGludG8gdGhlIHNlY29uZCBibG9jayBpZiBuZWNlc3NhcnkuCi0JCSAqLwotCQlpZiAoY291bnQgPT0gSU5UX0dFVChoZHIxLT5jb3VudCwgQVJDSF9DT05WRVJUKSkgewotCQkJbGVhZjEgPSBsZWFmMjsKLQkJCWVudHJ5ID0gJmxlYWYxLT5lbnRyaWVzWzBdOwotCQl9Ci0KLQkJLyoKLQkJICogRmlndXJlIG91dCBpZiBuZXh0IGxlYWYgZW50cnkgd291bGQgYmUgdG9vIG11Y2guCi0JCSAqLwotCQl0bXAgPSB0b3RhbGxlbiArICh1aW50KXNpemVvZigqZW50cnkpCi0JCQkJKyBYRlNfRElSX0xFQUZfRU5UU0laRV9CWUVOVFJZKGVudHJ5KTsKLQkJaWYgKFhGU19ESVJfQUJTKGhhbGYgLSB0bXApID4gbGFzdGRlbHRhKQotCQkJYnJlYWs7Ci0JCWxhc3RkZWx0YSA9IFhGU19ESVJfQUJTKGhhbGYgLSB0bXApOwotCQl0b3RhbGxlbiA9IHRtcDsKLSN1bmRlZiBYRlNfRElSX0FCUwotCX0KLQotCS8qCi0JICogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgbmFtZWJ5dGVzIHRoYXQgd2lsbCBlbmQgdXAgaW4gbG93ZXIgYmxvY2suCi0JICogSWYgbmV3IGVudHJ5IG5vdCBpbiBsb3dlciBibG9jaywgZml4IHVwIHRoZSBjb3VudC4KLQkgKi8KLQl0b3RhbGxlbiAtPQotCQljb3VudCAqICh1aW50KShzaXplb2YoKmVudHJ5KStzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpLTEpOwotCWlmIChmb3VuZGl0KSB7Ci0JCXRvdGFsbGVuIC09IChzaXplb2YoKmVudHJ5KStzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpLTEpICsKLQkJCSAgICBzdGF0ZS0+YXJncy0+bmFtZWxlbjsKLQl9Ci0KLQkqY291bnRhcmcgPSBjb3VudDsKLQkqbmFtZWJ5dGVzYXJnID0gdG90YWxsZW47Ci0JcmV0dXJuIGZvdW5kaXQ7Ci19Ci0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBSb3V0aW5lcyB1c2VkIGZvciBzaHJpbmtpbmcgdGhlIEJ0cmVlLgotICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKgotICogQ2hlY2sgYSBsZWFmIGJsb2NrIGFuZCBpdHMgbmVpZ2hib3JzIHRvIHNlZSBpZiB0aGUgYmxvY2sgc2hvdWxkIGJlCi0gKiBjb2xsYXBzZWQgaW50byBvbmUgb3IgdGhlIG90aGVyIG5laWdoYm9yLiAgQWx3YXlzIGtlZXAgdGhlIGJsb2NrCi0gKiB3aXRoIHRoZSBzbWFsbGVyIGJsb2NrIG51bWJlci4KLSAqIElmIHRoZSBjdXJyZW50IGJsb2NrIGlzIG92ZXIgNTAlIGZ1bGwsIGRvbid0IHRyeSB0byBqb2luIGl0LCByZXR1cm4gMC4KLSAqIElmIHRoZSBibG9jayBpcyBlbXB0eSwgZmlsbCBpbiB0aGUgc3RhdGUgc3RydWN0dXJlIGFuZCByZXR1cm4gMi4KLSAqIElmIGl0IGNhbiBiZSBjb2xsYXBzZWQsIGZpbGwgaW4gdGhlIHN0YXRlIHN0cnVjdHVyZSBhbmQgcmV0dXJuIDEuCi0gKiBJZiBub3RoaW5nIGNhbiBiZSBkb25lLCByZXR1cm4gMC4KLSAqLwotaW50Ci14ZnNfZGlyX2xlYWZfdG9vc21hbGwoeGZzX2RhX3N0YXRlX3QgKnN0YXRlLCBpbnQgKmFjdGlvbikKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCXhmc19kYV9zdGF0ZV9ibGtfdCAqYmxrOwotCXhmc19kYV9ibGtpbmZvX3QgKmluZm87Ci0JaW50IGNvdW50LCBieXRlcywgZm9yd2FyZCwgZXJyb3IsIHJldHZhbCwgaTsKLQl4ZnNfZGFibGtfdCBibGtubzsKLQl4ZnNfZGFidWZfdCAqYnA7Ci0KLQkvKgotCSAqIENoZWNrIGZvciB0aGUgZGVnZW5lcmF0ZSBjYXNlIG9mIHRoZSBibG9jayBiZWluZyBvdmVyIDUwJSBmdWxsLgotCSAqIElmIHNvLCBpdCdzIG5vdCB3b3J0aCBldmVuIGxvb2tpbmcgdG8gc2VlIGlmIHdlIG1pZ2h0IGJlIGFibGUKLQkgKiB0byBjb2FsZXNjZSB3aXRoIGEgc2libGluZy4KLQkgKi8KLQlibGsgPSAmc3RhdGUtPnBhdGguYmxrWyBzdGF0ZS0+cGF0aC5hY3RpdmUtMSBdOwotCWluZm8gPSBibGstPmJwLT5kYXRhOwotCUFTU0VSVChiZTE2X3RvX2NwdShpbmZvLT5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQlsZWFmID0gKHhmc19kaXJfbGVhZmJsb2NrX3QgKilpbmZvOwotCWNvdW50ID0gSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCk7Ci0JYnl0ZXMgPSAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2hkcl90KSArCi0JCWNvdW50ICogKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KSArCi0JCWNvdW50ICogKCh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfbmFtZV90KS0xKSArCi0JCUlOVF9HRVQobGVhZi0+aGRyLm5hbWVieXRlcywgQVJDSF9DT05WRVJUKTsKLQlpZiAoYnl0ZXMgPiAoc3RhdGUtPmJsb2Nrc2l6ZSA+PiAxKSkgewotCQkqYWN0aW9uID0gMDsJLyogYmxrIG92ZXIgNTAlLCBkb24ndCB0cnkgdG8gam9pbiAqLwotCQlyZXR1cm4gMDsKLQl9Ci0KLQkvKgotCSAqIENoZWNrIGZvciB0aGUgZGVnZW5lcmF0ZSBjYXNlIG9mIHRoZSBibG9jayBiZWluZyBlbXB0eS4KLQkgKiBJZiB0aGUgYmxvY2sgaXMgZW1wdHksIHdlJ2xsIHNpbXBseSBkZWxldGUgaXQsIG5vIG5lZWQgdG8KLQkgKiBjb2FsZXNjZSBpdCB3aXRoIGEgc2libGluZyBibG9jay4gIFdlIGNob29zZSAoYXJiaXRyYXJpbHkpCi0JICogdG8gbWVyZ2Ugd2l0aCB0aGUgZm9yd2FyZCBibG9jayB1bmxlc3MgaXQgaXMgTlVMTC4KLQkgKi8KLQlpZiAoY291bnQgPT0gMCkgewotCQkvKgotCQkgKiBNYWtlIGFsdHBhdGggcG9pbnQgdG8gdGhlIGJsb2NrIHdlIHdhbnQgdG8ga2VlcCBhbmQKLQkJICogcGF0aCBwb2ludCB0byB0aGUgYmxvY2sgd2Ugd2FudCB0byBkcm9wICh0aGlzIG9uZSkuCi0JCSAqLwotCQlmb3J3YXJkID0gKGluZm8tPmZvcncgIT0gMCk7Ci0JCW1lbWNweSgmc3RhdGUtPmFsdHBhdGgsICZzdGF0ZS0+cGF0aCwgc2l6ZW9mKHN0YXRlLT5wYXRoKSk7Ci0JCWVycm9yID0geGZzX2RhX3BhdGhfc2hpZnQoc3RhdGUsICZzdGF0ZS0+YWx0cGF0aCwgZm9yd2FyZCwKLQkJCQkJCSAwLCAmcmV0dmFsKTsKLQkJaWYgKGVycm9yKQotCQkJcmV0dXJuIGVycm9yOwotCQlpZiAocmV0dmFsKSB7Ci0JCQkqYWN0aW9uID0gMDsKLQkJfSBlbHNlIHsKLQkJCSphY3Rpb24gPSAyOwotCQl9Ci0JCXJldHVybiAwOwotCX0KLQotCS8qCi0JICogRXhhbWluZSBlYWNoIHNpYmxpbmcgYmxvY2sgdG8gc2VlIGlmIHdlIGNhbiBjb2FsZXNjZSB3aXRoCi0JICogYXQgbGVhc3QgMjUlIGZyZWUgc3BhY2UgdG8gc3BhcmUuICBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQKLQkgKiB3aGV0aGVyIHRvIG1lcmdlIHdpdGggdGhlIGZvcndhcmQgb3IgdGhlIGJhY2t3YXJkIGJsb2NrLgotCSAqIFdlIHByZWZlciBjb2FsZXNjaW5nIHdpdGggdGhlIGxvd2VyIG51bWJlcmVkIHNpYmxpbmcgc28gYXMKLQkgKiB0byBzaHJpbmsgYSBkaXJlY3Rvcnkgb3ZlciB0aW1lLgotCSAqLwotCWZvcndhcmQgPSAoYmUzMl90b19jcHUoaW5mby0+Zm9ydykgPCBiZTMyX3RvX2NwdShpbmZvLT5iYWNrKSk7CS8qIHN0YXJ0IHdpdGggc21hbGxlciBibGsgbnVtICovCi0JZm9yIChpID0gMDsgaSA8IDI7IGZvcndhcmQgPSAhZm9yd2FyZCwgaSsrKSB7Ci0JCWlmIChmb3J3YXJkKQotCQkJYmxrbm8gPSBiZTMyX3RvX2NwdShpbmZvLT5mb3J3KTsKLQkJZWxzZQotCQkJYmxrbm8gPSBiZTMyX3RvX2NwdShpbmZvLT5iYWNrKTsKLQkJaWYgKGJsa25vID09IDApCi0JCQljb250aW51ZTsKLQkJZXJyb3IgPSB4ZnNfZGFfcmVhZF9idWYoc3RhdGUtPmFyZ3MtPnRyYW5zLCBzdGF0ZS0+YXJncy0+ZHAsCi0JCQkJCQkJICAgIGJsa25vLCAtMSwgJmJwLAotCQkJCQkJCSAgICBYRlNfREFUQV9GT1JLKTsKLQkJaWYgKGVycm9yKQotCQkJcmV0dXJuIGVycm9yOwotCQlBU1NFUlQoYnAgIT0gTlVMTCk7Ci0KLQkJbGVhZiA9ICh4ZnNfZGlyX2xlYWZibG9ja190ICopaW5mbzsKLQkJY291bnQgID0gSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCk7Ci0JCWJ5dGVzICA9IHN0YXRlLT5ibG9ja3NpemUgLSAoc3RhdGUtPmJsb2Nrc2l6ZT4+Mik7Ci0JCWJ5dGVzIC09IElOVF9HRVQobGVhZi0+aGRyLm5hbWVieXRlcywgQVJDSF9DT05WRVJUKTsKLQkJbGVhZiA9IGJwLT5kYXRhOwotCQlBU1NFUlQoYmUxNl90b19jcHUobGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JCWNvdW50ICs9IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCQlieXRlcyAtPSBJTlRfR0VUKGxlYWYtPmhkci5uYW1lYnl0ZXMsIEFSQ0hfQ09OVkVSVCk7Ci0JCWJ5dGVzIC09IGNvdW50ICogKCh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfbmFtZV90KSAtIDEpOwotCQlieXRlcyAtPSBjb3VudCAqICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCk7Ci0JCWJ5dGVzIC09ICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpOwotCQlpZiAoYnl0ZXMgPj0gMCkKLQkJCWJyZWFrOwkvKiBmaXRzIHdpdGggYXQgbGVhc3QgMjUlIHRvIHNwYXJlICovCi0KLQkJeGZzX2RhX2JyZWxzZShzdGF0ZS0+YXJncy0+dHJhbnMsIGJwKTsKLQl9Ci0JaWYgKGkgPj0gMikgewotCQkqYWN0aW9uID0gMDsKLQkJcmV0dXJuIDA7Ci0JfQotCXhmc19kYV9idWZfZG9uZShicCk7Ci0KLQkvKgotCSAqIE1ha2UgYWx0cGF0aCBwb2ludCB0byB0aGUgYmxvY2sgd2Ugd2FudCB0byBrZWVwICh0aGUgbG93ZXIKLQkgKiBudW1iZXJlZCBibG9jaykgYW5kIHBhdGggcG9pbnQgdG8gdGhlIGJsb2NrIHdlIHdhbnQgdG8gZHJvcC4KLQkgKi8KLQltZW1jcHkoJnN0YXRlLT5hbHRwYXRoLCAmc3RhdGUtPnBhdGgsIHNpemVvZihzdGF0ZS0+cGF0aCkpOwotCWlmIChibGtubyA8IGJsay0+Ymxrbm8pIHsKLQkJZXJyb3IgPSB4ZnNfZGFfcGF0aF9zaGlmdChzdGF0ZSwgJnN0YXRlLT5hbHRwYXRoLCBmb3J3YXJkLAotCQkJCQkJIDAsICZyZXR2YWwpOwotCX0gZWxzZSB7Ci0JCWVycm9yID0geGZzX2RhX3BhdGhfc2hpZnQoc3RhdGUsICZzdGF0ZS0+cGF0aCwgZm9yd2FyZCwKLQkJCQkJCSAwLCAmcmV0dmFsKTsKLQl9Ci0JaWYgKGVycm9yKQotCQlyZXR1cm4gZXJyb3I7Ci0JaWYgKHJldHZhbCkgewotCQkqYWN0aW9uID0gMDsKLQl9IGVsc2UgewotCQkqYWN0aW9uID0gMTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBSZW1vdmUgYSBuYW1lIGZyb20gdGhlIGxlYWYgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLSAqCi0gKiBSZXR1cm4gMSBpZiBsZWFmIGlzIGxlc3MgdGhhbiAzNyUgZnVsbCwgMCBpZiA+PSAzNyUgZnVsbC4KLSAqIElmIHR3byBsZWF2ZXMgYXJlIDM3JSBmdWxsLCB3aGVuIGNvbWJpbmVkIHRoZXkgd2lsbCBsZWF2ZSAyNSUgZnJlZS4KLSAqLwotaW50Ci14ZnNfZGlyX2xlYWZfcmVtb3ZlKHhmc190cmFuc190ICp0cmFucywgeGZzX2RhYnVmX3QgKmJwLCBpbnQgaW5kZXgpCi17Ci0JeGZzX2Rpcl9sZWFmYmxvY2tfdCAqbGVhZjsKLQl4ZnNfZGlyX2xlYWZfaGRyX3QgKmhkcjsKLQl4ZnNfZGlyX2xlYWZfbWFwX3QgKm1hcDsKLQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnk7Ci0JeGZzX2Rpcl9sZWFmX25hbWVfdCAqbmFtZXN0OwotCWludCBiZWZvcmUsIGFmdGVyLCBzbWFsbGVzdCwgZW50c2l6ZTsKLQlpbnQgdGFibGVzaXplLCB0bXAsIGk7Ci0JeGZzX21vdW50X3QgKm1wOwotCi0JbGVhZiA9IGJwLT5kYXRhOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmLT5oZHIuaW5mby5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQloZHIgPSAmbGVhZi0+aGRyOwotCW1wID0gdHJhbnMtPnRfbW91bnRwOwotCUFTU0VSVCgoSU5UX0dFVChoZHItPmNvdW50LCBBUkNIX0NPTlZFUlQpID4gMCkgJiYgKElOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKSA8IChYRlNfTEJTSVpFKG1wKS84KSkpOwotCUFTU0VSVCgoaW5kZXggPj0gMCkgJiYgKGluZGV4IDwgSU5UX0dFVChoZHItPmNvdW50LCBBUkNIX0NPTlZFUlQpKSk7Ci0JQVNTRVJUKElOVF9HRVQoaGRyLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCkgPj0gKChJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCkqc2l6ZW9mKCplbnRyeSkpK3NpemVvZigqaGRyKSkpOwotCWVudHJ5ID0gJmxlYWYtPmVudHJpZXNbaW5kZXhdOwotCUFTU0VSVChJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpID49IElOVF9HRVQoaGRyLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCkpOwotCUFTU0VSVChJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpIDwgWEZTX0xCU0laRShtcCkpOwotCi0JLyoKLQkgKiBTY2FuIHRocm91Z2ggZnJlZSByZWdpb24gdGFibGU6Ci0JICogICAgY2hlY2sgZm9yIGFkamFjZW5jeSBvZiBmcmVlJ2QgZW50cnkgd2l0aCBhbiBleGlzdGluZyBvbmUsCi0JICogICAgZmluZCBzbWFsbGVzdCBmcmVlIHJlZ2lvbiBpbiBjYXNlIHdlIG5lZWQgdG8gcmVwbGFjZSBpdCwKLQkgKiAgICBhZGp1c3QgYW55IG1hcCB0aGF0IGJvcmRlcnMgdGhlIGVudHJ5IHRhYmxlLAotCSAqLwotCXRhYmxlc2l6ZSA9IElOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKSAqICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCkKLQkJCSsgKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9oZHJfdCk7Ci0JbWFwID0gJmhkci0+ZnJlZW1hcFswXTsKLQl0bXAgPSBJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKTsKLQliZWZvcmUgPSBhZnRlciA9IC0xOwotCXNtYWxsZXN0ID0gWEZTX0RJUl9MRUFGX01BUFNJWkUgLSAxOwotCWVudHNpemUgPSBYRlNfRElSX0xFQUZfRU5UU0laRV9CWUVOVFJZKGVudHJ5KTsKLQlmb3IgKGkgPSAwOyBpIDwgWEZTX0RJUl9MRUFGX01BUFNJWkU7IG1hcCsrLCBpKyspIHsKLQkJQVNTRVJUKElOVF9HRVQobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQpIDwgWEZTX0xCU0laRShtcCkpOwotCQlBU1NFUlQoSU5UX0dFVChtYXAtPnNpemUsIEFSQ0hfQ09OVkVSVCkgPCBYRlNfTEJTSVpFKG1wKSk7Ci0JCWlmIChJTlRfR0VUKG1hcC0+YmFzZSwgQVJDSF9DT05WRVJUKSA9PSB0YWJsZXNpemUpIHsKLQkJCUlOVF9NT0QobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQsIC0oKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KSkpOwotCQkJSU5UX01PRChtYXAtPnNpemUsIEFSQ0hfQ09OVkVSVCwgKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KSk7Ci0JCX0KLQotCQlpZiAoKElOVF9HRVQobWFwLT5iYXNlLCBBUkNIX0NPTlZFUlQpICsgSU5UX0dFVChtYXAtPnNpemUsIEFSQ0hfQ09OVkVSVCkpID09IElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkpIHsKLQkJCWJlZm9yZSA9IGk7Ci0JCX0gZWxzZSBpZiAoSU5UX0dFVChtYXAtPmJhc2UsIEFSQ0hfQ09OVkVSVCkgPT0gKElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkgKyBlbnRzaXplKSkgewotCQkJYWZ0ZXIgPSBpOwotCQl9IGVsc2UgaWYgKElOVF9HRVQobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQpIDwgdG1wKSB7Ci0JCQl0bXAgPSBJTlRfR0VUKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJUKTsKLQkJCXNtYWxsZXN0ID0gaTsKLQkJfQotCX0KLQotCS8qCi0JICogQ29hbGVzY2UgYWRqYWNlbnQgZnJlZW1hcCByZWdpb25zLAotCSAqIG9yIHJlcGxhY2UgdGhlIHNtYWxsZXN0IHJlZ2lvbi4KLQkgKi8KLQlpZiAoKGJlZm9yZSA+PSAwKSB8fCAoYWZ0ZXIgPj0gMCkpIHsKLQkJaWYgKChiZWZvcmUgPj0gMCkgJiYgKGFmdGVyID49IDApKSB7Ci0JCQltYXAgPSAmaGRyLT5mcmVlbWFwW2JlZm9yZV07Ci0JCQlJTlRfTU9EKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJULCBlbnRzaXplKTsKLQkJCUlOVF9NT0QobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQsIElOVF9HRVQoaGRyLT5mcmVlbWFwW2FmdGVyXS5zaXplLCBBUkNIX0NPTlZFUlQpKTsKLQkJCWhkci0+ZnJlZW1hcFthZnRlcl0uYmFzZSA9IDA7Ci0JCQloZHItPmZyZWVtYXBbYWZ0ZXJdLnNpemUgPSAwOwotCQl9IGVsc2UgaWYgKGJlZm9yZSA+PSAwKSB7Ci0JCQltYXAgPSAmaGRyLT5mcmVlbWFwW2JlZm9yZV07Ci0JCQlJTlRfTU9EKG1hcC0+c2l6ZSwgQVJDSF9DT05WRVJULCBlbnRzaXplKTsKLQkJfSBlbHNlIHsKLQkJCW1hcCA9ICZoZHItPmZyZWVtYXBbYWZ0ZXJdOwotCQkJSU5UX0NPUFkobWFwLT5iYXNlLCBlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKTsKLQkJCUlOVF9NT0QobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQsIGVudHNpemUpOwotCQl9Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogUmVwbGFjZSBzbWFsbGVzdCByZWdpb24gKGlmIGl0IGlzIHNtYWxsZXIgdGhhbiBmcmVlJ2QgZW50cnkpCi0JCSAqLwotCQltYXAgPSAmaGRyLT5mcmVlbWFwW3NtYWxsZXN0XTsKLQkJaWYgKElOVF9HRVQobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQpIDwgZW50c2l6ZSkgewotCQkJSU5UX0NPUFkobWFwLT5iYXNlLCBlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKTsKLQkJCUlOVF9TRVQobWFwLT5zaXplLCBBUkNIX0NPTlZFUlQsIGVudHNpemUpOwotCQl9Ci0JfQotCi0JLyoKLQkgKiBEaWQgd2UgcmVtb3ZlIHRoZSBmaXJzdCBlbnRyeT8KLQkgKi8KLQlpZiAoSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSA9PSBJTlRfR0VUKGhkci0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpKQotCQlzbWFsbGVzdCA9IDE7Ci0JZWxzZQotCQlzbWFsbGVzdCA9IDA7Ci0KLQkvKgotCSAqIENvbXByZXNzIHRoZSByZW1haW5pbmcgZW50cmllcyBhbmQgemVybyBvdXQgdGhlIHJlbW92ZWQgc3R1ZmYuCi0JICovCi0JbmFtZXN0ID0gWEZTX0RJUl9MRUFGX05BTUVTVFJVQ1QobGVhZiwgSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSk7Ci0JbWVtc2V0KChjaGFyICopbmFtZXN0LCAwLCBlbnRzaXplKTsKLQl4ZnNfZGFfbG9nX2J1Zih0cmFucywgYnAsIFhGU19EQV9MT0dSQU5HRShsZWFmLCBuYW1lc3QsIGVudHNpemUpKTsKLQotCUlOVF9NT0QoaGRyLT5uYW1lYnl0ZXMsIEFSQ0hfQ09OVkVSVCwgLShlbnRyeS0+bmFtZWxlbikpOwotCXRtcCA9IChJTlRfR0VUKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgLSBpbmRleCkgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCW1lbW1vdmUoZW50cnksIGVudHJ5ICsgMSwgdG1wKTsKLQlJTlRfTU9EKGhkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCwgLTEpOwotCXhmc19kYV9sb2dfYnVmKHRyYW5zLCBicCwKLQkgICAgWEZTX0RBX0xPR1JBTkdFKGxlYWYsIGVudHJ5LCB0bXAgKyAodWludClzaXplb2YoKmVudHJ5KSkpOwotCWVudHJ5ID0gJmxlYWYtPmVudHJpZXNbSU5UX0dFVChoZHItPmNvdW50LCBBUkNIX0NPTlZFUlQpXTsKLQltZW1zZXQoKGNoYXIgKillbnRyeSwgMCwgc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KSk7Ci0KLQkvKgotCSAqIElmIHdlIHJlbW92ZWQgdGhlIGZpcnN0IGVudHJ5LCByZS1maW5kIHRoZSBmaXJzdCB1c2VkIGJ5dGUKLQkgKiBpbiB0aGUgbmFtZSBhcmVhLiAgTm90ZSB0aGF0IGlmIHRoZSBlbnRyeSB3YXMgdGhlICJmaXJzdHVzZWQiLAotCSAqIHRoZW4gd2UgZG9uJ3QgaGF2ZSBhICJob2xlIiBpbiBvdXIgYmxvY2sgcmVzdWx0aW5nIGZyb20KLQkgKiByZW1vdmluZyB0aGUgbmFtZS4KLQkgKi8KLQlpZiAoc21hbGxlc3QpIHsKLQkJdG1wID0gWEZTX0xCU0laRShtcCk7Ci0JCWVudHJ5ID0gJmxlYWYtPmVudHJpZXNbMF07Ci0JCWZvciAoaSA9IElOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKS0xOyBpID49IDA7IGVudHJ5KyssIGktLSkgewotCQkJQVNTRVJUKElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkgPj0gSU5UX0dFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJUKSk7Ci0JCQlBU1NFUlQoSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSA8IFhGU19MQlNJWkUobXApKTsKLQkJCWlmIChJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpIDwgdG1wKQotCQkJCXRtcCA9IElOVF9HRVQoZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCk7Ci0JCX0KLQkJSU5UX1NFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJULCB0bXApOwotCQlpZiAoIWhkci0+Zmlyc3R1c2VkKQotCQkJSU5UX1NFVChoZHItPmZpcnN0dXNlZCwgQVJDSF9DT05WRVJULCB0bXAgLSAxKTsKLQl9IGVsc2UgewotCQloZHItPmhvbGVzID0gMTsJCS8qIG1hcmsgYXMgbmVlZGluZyBjb21wYWN0aW9uICovCi0JfQotCi0JeGZzX2RhX2xvZ19idWYodHJhbnMsIGJwLCBYRlNfREFfTE9HUkFOR0UobGVhZiwgaGRyLCBzaXplb2YoKmhkcikpKTsKLQotCS8qCi0JICogQ2hlY2sgaWYgbGVhZiBpcyBsZXNzIHRoYW4gNTAlIGZ1bGwsIGNhbGxlciBtYXkgd2FudCB0bwotCSAqICJqb2luIiB0aGUgbGVhZiB3aXRoIGEgc2libGluZyBpZiBzby4KLQkgKi8KLQl0bXAgID0gKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9oZHJfdCk7Ci0JdG1wICs9IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpICogKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KTsKLQl0bXAgKz0gSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkgKiAoKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9uYW1lX3QpIC0gMSk7Ci0JdG1wICs9IElOVF9HRVQobGVhZi0+aGRyLm5hbWVieXRlcywgQVJDSF9DT05WRVJUKTsKLQlpZiAodG1wIDwgbXAtPm1fZGlyX21hZ2ljcGN0KQotCQlyZXR1cm4gMTsJCQkvKiBsZWFmIGlzIDwgMzclIGZ1bGwgKi8KLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIE1vdmUgYWxsIHRoZSBkaXJlY3RvcnkgZW50cmllcyBmcm9tIGRyb3BfbGVhZiBpbnRvIHNhdmVfbGVhZi4KLSAqLwotdm9pZAoteGZzX2Rpcl9sZWFmX3VuYmFsYW5jZSh4ZnNfZGFfc3RhdGVfdCAqc3RhdGUsIHhmc19kYV9zdGF0ZV9ibGtfdCAqZHJvcF9ibGssCi0JCQkJICAgICAgeGZzX2RhX3N0YXRlX2Jsa190ICpzYXZlX2JsaykKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpkcm9wX2xlYWYsICpzYXZlX2xlYWYsICp0bXBfbGVhZjsKLQl4ZnNfZGlyX2xlYWZfaGRyX3QgKmRyb3BfaGRyLCAqc2F2ZV9oZHIsICp0bXBfaGRyOwotCXhmc19tb3VudF90ICptcDsKLQljaGFyICp0bXBidWZmZXI7Ci0KLQkvKgotCSAqIFNldCB1cCBlbnZpcm9ubWVudC4KLQkgKi8KLQltcCA9IHN0YXRlLT5tcDsKLQlBU1NFUlQoZHJvcF9ibGstPm1hZ2ljID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JQVNTRVJUKHNhdmVfYmxrLT5tYWdpYyA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCWRyb3BfbGVhZiA9IGRyb3BfYmxrLT5icC0+ZGF0YTsKLQlzYXZlX2xlYWYgPSBzYXZlX2Jsay0+YnAtPmRhdGE7Ci0JQVNTRVJUKGJlMTZfdG9fY3B1KGRyb3BfbGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JQVNTRVJUKGJlMTZfdG9fY3B1KHNhdmVfbGVhZi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQyk7Ci0JZHJvcF9oZHIgPSAmZHJvcF9sZWFmLT5oZHI7Ci0Jc2F2ZV9oZHIgPSAmc2F2ZV9sZWFmLT5oZHI7Ci0KLQkvKgotCSAqIFNhdmUgbGFzdCBoYXNodmFsIGZyb20gZHlpbmcgYmxvY2sgZm9yIGxhdGVyIEJ0cmVlIGZpeHVwLgotCSAqLwotCWRyb3BfYmxrLT5oYXNodmFsID0gSU5UX0dFVChkcm9wX2xlYWYtPmVudHJpZXNbIGRyb3BfbGVhZi0+aGRyLmNvdW50LTEgXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpOwotCi0JLyoKLQkgKiBDaGVjayBpZiB3ZSBuZWVkIGEgdGVtcCBidWZmZXIsIG9yIGNhbiB3ZSBkbyBpdCBpbiBwbGFjZS4KLQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgY2hlY2sgImxlYWYiIGZvciBob2xlcyBiZWNhdXNlIHdlIHdpbGwKLQkgKiBhbHdheXMgYmUgZHJvcHBpbmcgaXQsIHRvb3NtYWxsKCkgZGVjaWRlZCB0aGF0IGZvciB1cyBhbHJlYWR5LgotCSAqLwotCWlmIChzYXZlX2hkci0+aG9sZXMgPT0gMCkgewotCQkvKgotCQkgKiBkZXN0IGxlYWYgaGFzIG5vIGhvbGVzLCBzbyB3ZSBhZGQgdGhlcmUuICBNYXkgbmVlZAotCQkgKiB0byBtYWtlIHNvbWUgcm9vbSBpbiB0aGUgZW50cnkgYXJyYXkuCi0JCSAqLwotCQlpZiAoeGZzX2Rpcl9sZWFmX29yZGVyKHNhdmVfYmxrLT5icCwgZHJvcF9ibGstPmJwKSkgewotCQkJeGZzX2Rpcl9sZWFmX21vdmVlbnRzKGRyb3BfbGVhZiwgMCwgc2F2ZV9sZWFmLCAwLAotCQkJCQkJIChpbnQpSU5UX0dFVChkcm9wX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJfSBlbHNlIHsKLQkJCXhmc19kaXJfbGVhZl9tb3ZlZW50cyhkcm9wX2xlYWYsIDAsCi0JCQkJCSAgICAgIHNhdmVfbGVhZiwgSU5UX0dFVChzYXZlX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksCi0JCQkJCSAgICAgIChpbnQpSU5UX0dFVChkcm9wX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJfQotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIERlc3RpbmF0aW9uIGhhcyBob2xlcywgc28gd2UgbWFrZSBhIHRlbXBvcmFyeSBjb3B5Ci0JCSAqIG9mIHRoZSBsZWFmIGFuZCBhZGQgdGhlbSBib3RoIHRvIHRoYXQuCi0JCSAqLwotCQl0bXBidWZmZXIgPSBrbWVtX2FsbG9jKHN0YXRlLT5ibG9ja3NpemUsIEtNX1NMRUVQKTsKLQkJQVNTRVJUKHRtcGJ1ZmZlciAhPSBOVUxMKTsKLQkJbWVtc2V0KHRtcGJ1ZmZlciwgMCwgc3RhdGUtPmJsb2Nrc2l6ZSk7Ci0JCXRtcF9sZWFmID0gKHhmc19kaXJfbGVhZmJsb2NrX3QgKil0bXBidWZmZXI7Ci0JCXRtcF9oZHIgPSAmdG1wX2xlYWYtPmhkcjsKLQkJdG1wX2hkci0+aW5mbyA9IHNhdmVfaGRyLT5pbmZvOwkvKiBzdHJ1Y3QgY29weSAqLwotCQl0bXBfaGRyLT5jb3VudCA9IDA7Ci0JCUlOVF9TRVQodG1wX2hkci0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQsIHN0YXRlLT5ibG9ja3NpemUpOwotCQlpZiAoIXRtcF9oZHItPmZpcnN0dXNlZCkKLQkJCUlOVF9TRVQodG1wX2hkci0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQsIHN0YXRlLT5ibG9ja3NpemUgLSAxKTsKLQkJdG1wX2hkci0+bmFtZWJ5dGVzID0gMDsKLQkJaWYgKHhmc19kaXJfbGVhZl9vcmRlcihzYXZlX2Jsay0+YnAsIGRyb3BfYmxrLT5icCkpIHsKLQkJCXhmc19kaXJfbGVhZl9tb3ZlZW50cyhkcm9wX2xlYWYsIDAsIHRtcF9sZWFmLCAwLAotCQkJCQkJIChpbnQpSU5UX0dFVChkcm9wX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJCXhmc19kaXJfbGVhZl9tb3ZlZW50cyhzYXZlX2xlYWYsIDAsCi0JCQkJCSAgICAgIHRtcF9sZWFmLCBJTlRfR0VUKHRtcF9sZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCksCi0JCQkJCSAgICAgIChpbnQpSU5UX0dFVChzYXZlX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJfSBlbHNlIHsKLQkJCXhmc19kaXJfbGVhZl9tb3ZlZW50cyhzYXZlX2xlYWYsIDAsIHRtcF9sZWFmLCAwLAotCQkJCQkJIChpbnQpSU5UX0dFVChzYXZlX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJCXhmc19kaXJfbGVhZl9tb3ZlZW50cyhkcm9wX2xlYWYsIDAsCi0JCQkJCSAgICAgIHRtcF9sZWFmLCBJTlRfR0VUKHRtcF9sZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCksCi0JCQkJCSAgICAgIChpbnQpSU5UX0dFVChkcm9wX2hkci0+Y291bnQsIEFSQ0hfQ09OVkVSVCksIG1wKTsKLQkJfQotCQltZW1jcHkoc2F2ZV9sZWFmLCB0bXBfbGVhZiwgc3RhdGUtPmJsb2Nrc2l6ZSk7Ci0JCWttZW1fZnJlZSh0bXBidWZmZXIsIHN0YXRlLT5ibG9ja3NpemUpOwotCX0KLQotCXhmc19kYV9sb2dfYnVmKHN0YXRlLT5hcmdzLT50cmFucywgc2F2ZV9ibGstPmJwLCAwLAotCQkJCQkgICBzdGF0ZS0+YmxvY2tzaXplIC0gMSk7Ci0KLQkvKgotCSAqIENvcHkgb3V0IGxhc3QgaGFzaHZhbCBpbiBlYWNoIGJsb2NrIGZvciBCLXRyZWUgY29kZS4KLQkgKi8KLQlzYXZlX2Jsay0+aGFzaHZhbCA9IElOVF9HRVQoc2F2ZV9sZWFmLT5lbnRyaWVzWyBJTlRfR0VUKHNhdmVfbGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpLTEgXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpOwotfQotCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogUm91dGluZXMgdXNlZCBmb3IgZmluZGluZyB0aGluZ3MgaW4gdGhlIEJ0cmVlLgotICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKgotICogTG9vayB1cCBhIG5hbWUgaW4gYSBsZWFmIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCi0gKiBUaGlzIGlzIHRoZSBpbnRlcm5hbCByb3V0aW5lLCBpdCB1c2VzIHRoZSBjYWxsZXIncyBidWZmZXIuCi0gKgotICogTm90ZSB0aGF0IGR1cGxpY2F0ZSBrZXlzIGFyZSBhbGxvd2VkLCBidXQgb25seSBjaGVjayB3aXRoaW4gdGhlCi0gKiBjdXJyZW50IGxlYWYgbm9kZS4gIFRoZSBCdHJlZSBjb2RlIG11c3QgY2hlY2sgaW4gYWRqYWNlbnQgbGVhZiBub2Rlcy4KLSAqCi0gKiBSZXR1cm4gaW4gKmluZGV4IHRoZSBpbmRleCBpbnRvIHRoZSBlbnRyeVtdIGFycmF5IG9mIGVpdGhlciB0aGUgZm91bmQKLSAqIGVudHJ5LCBvciB3aGVyZSB0aGUgZW50cnkgc2hvdWxkIGhhdmUgYmVlbiAoaW5zZXJ0IGJlZm9yZSB0aGF0IGVudHJ5KS4KLSAqCi0gKiBEb24ndCBjaGFuZ2UgdGhlIGFyZ3MtPmludW1iZXIgdW5sZXNzIHdlIGZpbmQgdGhlIGZpbGVuYW1lLgotICovCi1pbnQKLXhmc19kaXJfbGVhZl9sb29rdXBfaW50KHhmc19kYWJ1Zl90ICpicCwgeGZzX2RhX2FyZ3NfdCAqYXJncywgaW50ICppbmRleCkKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCXhmc19kaXJfbGVhZl9lbnRyeV90ICplbnRyeTsKLQl4ZnNfZGlyX2xlYWZfbmFtZV90ICpuYW1lc3Q7Ci0JaW50IHByb2JlLCBzcGFuOwotCXhmc19kYWhhc2hfdCBoYXNodmFsOwotCi0JbGVhZiA9IGJwLT5kYXRhOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmLT5oZHIuaW5mby5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQlBU1NFUlQoSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkgPCAoWEZTX0xCU0laRShhcmdzLT5kcC0+aV9tb3VudCkvOCkpOwotCi0JLyoKLQkgKiBCaW5hcnkgc2VhcmNoLiAgKG5vdGU6IHNtYWxsIGJsb2NrcyB3aWxsIHNraXAgdGhpcyBsb29wKQotCSAqLwotCWhhc2h2YWwgPSBhcmdzLT5oYXNodmFsOwotCXByb2JlID0gc3BhbiA9IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpIC8gMjsKLQlmb3IgKGVudHJ5ID0gJmxlYWYtPmVudHJpZXNbcHJvYmVdOyBzcGFuID4gNDsKLQkJICAgZW50cnkgPSAmbGVhZi0+ZW50cmllc1twcm9iZV0pIHsKLQkJc3BhbiAvPSAyOwotCQlpZiAoSU5UX0dFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJUKSA8IGhhc2h2YWwpCi0JCQlwcm9iZSArPSBzcGFuOwotCQllbHNlIGlmIChJTlRfR0VUKGVudHJ5LT5oYXNodmFsLCBBUkNIX0NPTlZFUlQpID4gaGFzaHZhbCkKLQkJCXByb2JlIC09IHNwYW47Ci0JCWVsc2UKLQkJCWJyZWFrOwotCX0KLQlBU1NFUlQoKHByb2JlID49IDApICYmIFwKLQkgICAgICAgKCghbGVhZi0+aGRyLmNvdW50KSB8fCAocHJvYmUgPCBJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSkpKTsKLQlBU1NFUlQoKHNwYW4gPD0gNCkgfHwgKElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPT0gaGFzaHZhbCkpOwotCi0JLyoKLQkgKiBTaW5jZSB3ZSBtYXkgaGF2ZSBkdXBsaWNhdGUgaGFzaHZhbCdzLCBmaW5kIHRoZSBmaXJzdCBtYXRjaGluZwotCSAqIGhhc2h2YWwgaW4gdGhlIGxlYWYuCi0JICovCi0Jd2hpbGUgKChwcm9iZSA+IDApICYmIChJTlRfR0VUKGVudHJ5LT5oYXNodmFsLCBBUkNIX0NPTlZFUlQpID49IGhhc2h2YWwpKSB7Ci0JCWVudHJ5LS07Ci0JCXByb2JlLS07Ci0JfQotCXdoaWxlICgocHJvYmUgPCBJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSkgJiYgKElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPCBoYXNodmFsKSkgewotCQllbnRyeSsrOwotCQlwcm9iZSsrOwotCX0KLQlpZiAoKHByb2JlID09IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpKSB8fCAoSU5UX0dFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJUKSAhPSBoYXNodmFsKSkgewotCQkqaW5kZXggPSBwcm9iZTsKLQkJQVNTRVJUKGFyZ3MtPm9rbm9lbnQpOwotCQlyZXR1cm4gWEZTX0VSUk9SKEVOT0VOVCk7Ci0JfQotCi0JLyoKLQkgKiBEdXBsaWNhdGUga2V5cyBtYXkgYmUgcHJlc2VudCwgc28gc2VhcmNoIGFsbCBvZiB0aGVtIGZvciBhIG1hdGNoLgotCSAqLwotCXdoaWxlICgocHJvYmUgPCBJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSkgJiYgKElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPT0gaGFzaHZhbCkpIHsKLQkJbmFtZXN0ID0gWEZTX0RJUl9MRUFGX05BTUVTVFJVQ1QobGVhZiwgSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSk7Ci0JCWlmIChlbnRyeS0+bmFtZWxlbiA9PSBhcmdzLT5uYW1lbGVuICYmCi0JCSAgICBuYW1lc3QtPm5hbWVbMF0gPT0gYXJncy0+bmFtZVswXSAmJgotCQkgICAgbWVtY21wKGFyZ3MtPm5hbWUsIG5hbWVzdC0+bmFtZSwgYXJncy0+bmFtZWxlbikgPT0gMCkgewotCQkJWEZTX0RJUl9TRl9HRVRfRElSSU5PKCZuYW1lc3QtPmludW1iZXIsICZhcmdzLT5pbnVtYmVyKTsKLQkJCSppbmRleCA9IHByb2JlOwotCQkJcmV0dXJuIFhGU19FUlJPUihFRVhJU1QpOwotCQl9Ci0JCWVudHJ5Kys7Ci0JCXByb2JlKys7Ci0JfQotCSppbmRleCA9IHByb2JlOwotCUFTU0VSVChwcm9iZSA9PSBJTlRfR0VUKGxlYWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSB8fCBhcmdzLT5va25vZW50KTsKLQlyZXR1cm4gWEZTX0VSUk9SKEVOT0VOVCk7Ci19Ci0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBVdGlsaXR5IHJvdXRpbmVzLgotICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0vKgotICogTW92ZSB0aGUgaW5kaWNhdGVkIGVudHJpZXMgZnJvbSBvbmUgbGVhZiB0byBhbm90aGVyLgotICogTk9URTogdGhpcyByb3V0aW5lIG1vZGlmaWVzIGJvdGggc291cmNlIGFuZCBkZXN0aW5hdGlvbiBsZWF2ZXMuCi0gKi8KLS8qIEFSR1NVU0VEICovCi1TVEFUSUMgdm9pZAoteGZzX2Rpcl9sZWFmX21vdmVlbnRzKHhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWZfcywgaW50IHN0YXJ0X3MsCi0JCSAgICAgIHhmc19kaXJfbGVhZmJsb2NrX3QgKmxlYWZfZCwgaW50IHN0YXJ0X2QsCi0JCSAgICAgIGludCBjb3VudCwgeGZzX21vdW50X3QgKm1wKQotewotCXhmc19kaXJfbGVhZl9oZHJfdCAqaGRyX3MsICpoZHJfZDsKLQl4ZnNfZGlyX2xlYWZfZW50cnlfdCAqZW50cnlfcywgKmVudHJ5X2Q7Ci0JaW50IHRtcCwgaTsKLQotCS8qCi0JICogQ2hlY2sgZm9yIG5vdGhpbmcgdG8gZG8uCi0JICovCi0JaWYgKGNvdW50ID09IDApCi0JCXJldHVybjsKLQotCS8qCi0JICogU2V0IHVwIGVudmlyb25tZW50LgotCSAqLwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmX3MtPmhkci5pbmZvLm1hZ2ljKSA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmX2QtPmhkci5pbmZvLm1hZ2ljKSA9PSBYRlNfRElSX0xFQUZfTUFHSUMpOwotCWhkcl9zID0gJmxlYWZfcy0+aGRyOwotCWhkcl9kID0gJmxlYWZfZC0+aGRyOwotCUFTU0VSVCgoSU5UX0dFVChoZHJfcy0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgPiAwKSAmJiAoSU5UX0dFVChoZHJfcy0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgPCAoWEZTX0xCU0laRShtcCkvOCkpKTsKLQlBU1NFUlQoSU5UX0dFVChoZHJfcy0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpID49Ci0JCSgoSU5UX0dFVChoZHJfcy0+Y291bnQsIEFSQ0hfQ09OVkVSVCkqc2l6ZW9mKCplbnRyeV9zKSkrc2l6ZW9mKCpoZHJfcykpKTsKLQlBU1NFUlQoSU5UX0dFVChoZHJfZC0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgPCAoWEZTX0xCU0laRShtcCkvOCkpOwotCUFTU0VSVChJTlRfR0VUKGhkcl9kLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCkgPj0KLQkJKChJTlRfR0VUKGhkcl9kLT5jb3VudCwgQVJDSF9DT05WRVJUKSpzaXplb2YoKmVudHJ5X2QpKStzaXplb2YoKmhkcl9kKSkpOwotCi0JQVNTRVJUKHN0YXJ0X3MgPCBJTlRfR0VUKGhkcl9zLT5jb3VudCwgQVJDSF9DT05WRVJUKSk7Ci0JQVNTRVJUKHN0YXJ0X2QgPD0gSU5UX0dFVChoZHJfZC0+Y291bnQsIEFSQ0hfQ09OVkVSVCkpOwotCUFTU0VSVChjb3VudCA8PSBJTlRfR0VUKGhkcl9zLT5jb3VudCwgQVJDSF9DT05WRVJUKSk7Ci0KLQkvKgotCSAqIE1vdmUgdGhlIGVudHJpZXMgaW4gdGhlIGRlc3RpbmF0aW9uIGxlYWYgdXAgdG8gbWFrZSBhIGhvbGU/Ci0JICovCi0JaWYgKHN0YXJ0X2QgPCBJTlRfR0VUKGhkcl9kLT5jb3VudCwgQVJDSF9DT05WRVJUKSkgewotCQl0bXAgID0gSU5UX0dFVChoZHJfZC0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgLSBzdGFydF9kOwotCQl0bXAgKj0gKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KTsKLQkJZW50cnlfcyA9ICZsZWFmX2QtPmVudHJpZXNbc3RhcnRfZF07Ci0JCWVudHJ5X2QgPSAmbGVhZl9kLT5lbnRyaWVzW3N0YXJ0X2QgKyBjb3VudF07Ci0JCW1lbWNweShlbnRyeV9kLCBlbnRyeV9zLCB0bXApOwotCX0KLQotCS8qCi0JICogQ29weSBhbGwgZW50cnkncyBpbiB0aGUgc2FtZSAoc29ydGVkKSBvcmRlciwKLQkgKiBidXQgYWxsb2NhdGUgZmlsZW5hbWVzIHBhY2tlZCBhbmQgaW4gc2VxdWVuY2UuCi0JICovCi0JZW50cnlfcyA9ICZsZWFmX3MtPmVudHJpZXNbc3RhcnRfc107Ci0JZW50cnlfZCA9ICZsZWFmX2QtPmVudHJpZXNbc3RhcnRfZF07Ci0JZm9yIChpID0gMDsgaSA8IGNvdW50OyBlbnRyeV9zKyssIGVudHJ5X2QrKywgaSsrKSB7Ci0JCUFTU0VSVChJTlRfR0VUKGVudHJ5X3MtPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkgPj0gSU5UX0dFVChoZHJfcy0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpKTsKLQkJdG1wID0gWEZTX0RJUl9MRUFGX0VOVFNJWkVfQllFTlRSWShlbnRyeV9zKTsKLQkJSU5UX01PRChoZHJfZC0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQsIC0odG1wKSk7Ci0JCWVudHJ5X2QtPmhhc2h2YWwgPSBlbnRyeV9zLT5oYXNodmFsOyAvKiBJTlRfOiBkaXJlY3QgY29weSAqLwotCQlJTlRfQ09QWShlbnRyeV9kLT5uYW1laWR4LCBoZHJfZC0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpOwotCQllbnRyeV9kLT5uYW1lbGVuID0gZW50cnlfcy0+bmFtZWxlbjsKLQkJQVNTRVJUKElOVF9HRVQoZW50cnlfZC0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSArIHRtcCA8PSBYRlNfTEJTSVpFKG1wKSk7Ci0JCW1lbWNweShYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmX2QsIElOVF9HRVQoZW50cnlfZC0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSksCi0JCSAgICAgICBYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmX3MsIElOVF9HRVQoZW50cnlfcy0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSksIHRtcCk7Ci0JCUFTU0VSVChJTlRfR0VUKGVudHJ5X3MtPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCkgKyB0bXAgPD0gWEZTX0xCU0laRShtcCkpOwotCQltZW1zZXQoKGNoYXIgKilYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmX3MsIElOVF9HRVQoZW50cnlfcy0+bmFtZWlkeCwgQVJDSF9DT05WRVJUKSksCi0JCSAgICAgIDAsIHRtcCk7Ci0JCUlOVF9NT0QoaGRyX3MtPm5hbWVieXRlcywgQVJDSF9DT05WRVJULCAtKGVudHJ5X2QtPm5hbWVsZW4pKTsKLQkJSU5UX01PRChoZHJfZC0+bmFtZWJ5dGVzLCBBUkNIX0NPTlZFUlQsIGVudHJ5X2QtPm5hbWVsZW4pOwotCQlJTlRfTU9EKGhkcl9zLT5jb3VudCwgQVJDSF9DT05WRVJULCAtMSk7Ci0JCUlOVF9NT0QoaGRyX2QtPmNvdW50LCBBUkNIX0NPTlZFUlQsICsxKTsKLQkJdG1wICA9IElOVF9HRVQoaGRyX2QtPmNvdW50LCBBUkNIX0NPTlZFUlQpICogKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9lbnRyeV90KQotCQkJCSsgKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9oZHJfdCk7Ci0JCUFTU0VSVChJTlRfR0VUKGhkcl9kLT5maXJzdHVzZWQsIEFSQ0hfQ09OVkVSVCkgPj0gdG1wKTsKLQotCX0KLQotCS8qCi0JICogWmVybyBvdXQgdGhlIGVudHJpZXMgd2UganVzdCBjb3BpZWQuCi0JICovCi0JaWYgKHN0YXJ0X3MgPT0gSU5UX0dFVChoZHJfcy0+Y291bnQsIEFSQ0hfQ09OVkVSVCkpIHsKLQkJdG1wID0gY291bnQgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCQllbnRyeV9zID0gJmxlYWZfcy0+ZW50cmllc1tzdGFydF9zXTsKLQkJQVNTRVJUKChjaGFyICopZW50cnlfcyArIHRtcCA8PSAoY2hhciAqKWxlYWZfcyArIFhGU19MQlNJWkUobXApKTsKLQkJbWVtc2V0KChjaGFyICopZW50cnlfcywgMCwgdG1wKTsKLQl9IGVsc2UgewotCQkvKgotCQkgKiBNb3ZlIHRoZSByZW1haW5pbmcgZW50cmllcyBkb3duIHRvIGZpbGwgdGhlIGhvbGUsCi0JCSAqIHRoZW4gemVybyB0aGUgZW50cmllcyBhdCB0aGUgdG9wLgotCQkgKi8KLQkJdG1wICA9IElOVF9HRVQoaGRyX3MtPmNvdW50LCBBUkNIX0NPTlZFUlQpIC0gY291bnQ7Ci0JCXRtcCAqPSAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCQllbnRyeV9zID0gJmxlYWZfcy0+ZW50cmllc1tzdGFydF9zICsgY291bnRdOwotCQllbnRyeV9kID0gJmxlYWZfcy0+ZW50cmllc1tzdGFydF9zXTsKLQkJbWVtY3B5KGVudHJ5X2QsIGVudHJ5X3MsIHRtcCk7Ci0KLQkJdG1wID0gY291bnQgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpOwotCQllbnRyeV9zID0gJmxlYWZfcy0+ZW50cmllc1tJTlRfR0VUKGhkcl9zLT5jb3VudCwgQVJDSF9DT05WRVJUKV07Ci0JCUFTU0VSVCgoY2hhciAqKWVudHJ5X3MgKyB0bXAgPD0gKGNoYXIgKilsZWFmX3MgKyBYRlNfTEJTSVpFKG1wKSk7Ci0JCW1lbXNldCgoY2hhciAqKWVudHJ5X3MsIDAsIHRtcCk7Ci0JfQotCi0JLyoKLQkgKiBGaWxsIGluIHRoZSBmcmVlbWFwIGluZm9ybWF0aW9uCi0JICovCi0JSU5UX1NFVChoZHJfZC0+ZnJlZW1hcFswXS5iYXNlLCBBUkNIX0NPTlZFUlQsICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpKTsKLQlJTlRfTU9EKGhkcl9kLT5mcmVlbWFwWzBdLmJhc2UsIEFSQ0hfQ09OVkVSVCwgSU5UX0dFVChoZHJfZC0+Y291bnQsIEFSQ0hfQ09OVkVSVCkgKiAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpKTsKLQlJTlRfU0VUKGhkcl9kLT5mcmVlbWFwWzBdLnNpemUsIEFSQ0hfQ09OVkVSVCwgSU5UX0dFVChoZHJfZC0+Zmlyc3R1c2VkLCBBUkNIX0NPTlZFUlQpIC0gSU5UX0dFVChoZHJfZC0+ZnJlZW1hcFswXS5iYXNlLCBBUkNIX0NPTlZFUlQpKTsKLQlJTlRfU0VUKGhkcl9kLT5mcmVlbWFwWzFdLmJhc2UsIEFSQ0hfQ09OVkVSVCwgKGhkcl9kLT5mcmVlbWFwWzJdLmJhc2UgPSAwKSk7Ci0JSU5UX1NFVChoZHJfZC0+ZnJlZW1hcFsxXS5zaXplLCBBUkNIX0NPTlZFUlQsIChoZHJfZC0+ZnJlZW1hcFsyXS5zaXplID0gMCkpOwotCWhkcl9zLT5ob2xlcyA9IDE7CS8qIGxlYWYgbWF5IG5vdCBiZSBjb21wYWN0ICovCi19Ci0KLS8qCi0gKiBDb21wYXJlIHR3byBsZWFmIGJsb2NrcyAib3JkZXIiLgotICovCi1pbnQKLXhmc19kaXJfbGVhZl9vcmRlcih4ZnNfZGFidWZfdCAqbGVhZjFfYnAsIHhmc19kYWJ1Zl90ICpsZWFmMl9icCkKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmMSwgKmxlYWYyOwotCi0JbGVhZjEgPSBsZWFmMV9icC0+ZGF0YTsKLQlsZWFmMiA9IGxlYWYyX2JwLT5kYXRhOwotCUFTU0VSVCgoYmUxNl90b19jcHUobGVhZjEtPmhkci5pbmZvLm1hZ2ljKSA9PSBYRlNfRElSX0xFQUZfTUFHSUMpICYmCi0JICAgICAgIChiZTE2X3RvX2NwdShsZWFmMi0+aGRyLmluZm8ubWFnaWMpID09IFhGU19ESVJfTEVBRl9NQUdJQykpOwotCWlmICgoSU5UX0dFVChsZWFmMS0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpID4gMCkgJiYgKElOVF9HRVQobGVhZjItPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSA+IDApICYmCi0JICAgICgoSU5UX0dFVChsZWFmMi0+ZW50cmllc1sgMCBdLmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPAotCSAgICAgIElOVF9HRVQobGVhZjEtPmVudHJpZXNbIDAgXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpKSB8fAotCSAgICAgKElOVF9HRVQobGVhZjItPmVudHJpZXNbIElOVF9HRVQobGVhZjItPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKS0xIF0uaGFzaHZhbCwgQVJDSF9DT05WRVJUKSA8Ci0JICAgICAgSU5UX0dFVChsZWFmMS0+ZW50cmllc1sgSU5UX0dFVChsZWFmMS0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpLTEgXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpKSkpIHsKLQkJcmV0dXJuIDE7Ci0JfQotCXJldHVybiAwOwotfQotCi0vKgotICogUGljayB1cCB0aGUgbGFzdCBoYXNodmFsdWUgZnJvbSBhIGxlYWYgYmxvY2suCi0gKi8KLXhmc19kYWhhc2hfdAoteGZzX2Rpcl9sZWFmX2xhc3RoYXNoKHhmc19kYWJ1Zl90ICpicCwgaW50ICpjb3VudCkKLXsKLQl4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmOwotCi0JbGVhZiA9IGJwLT5kYXRhOwotCUFTU0VSVChiZTE2X3RvX2NwdShsZWFmLT5oZHIuaW5mby5tYWdpYykgPT0gWEZTX0RJUl9MRUFGX01BR0lDKTsKLQlpZiAoY291bnQpCi0JCSpjb3VudCA9IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCWlmICghbGVhZi0+aGRyLmNvdW50KQotCQlyZXR1cm4oMCk7Ci0JcmV0dXJuKElOVF9HRVQobGVhZi0+ZW50cmllc1sgSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCktMSBdLmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkpOwotfQotCi0vKgotICogQ29weSBvdXQgZGlyZWN0b3J5IGVudHJpZXMgZm9yIGdldGRlbnRzKCksIGZvciBsZWFmIGRpcmVjdG9yaWVzLgotICovCi1pbnQKLXhmc19kaXJfbGVhZl9nZXRkZW50c19pbnQoCi0JeGZzX2RhYnVmX3QJKmJwLAotCXhmc19pbm9kZV90CSpkcCwKLQl4ZnNfZGFibGtfdAlibm8sCi0JdWlvX3QJCSp1aW8sCi0JaW50CQkqZW9icCwKLQl4ZnNfZGlyZW50X3QJKmRicCwKLQl4ZnNfZGlyX3B1dF90CXB1dCwKLQl4ZnNfZGFkZHJfdAkJbmV4dGRhKQotewotCXhmc19kaXJfbGVhZmJsb2NrX3QJKmxlYWY7Ci0JeGZzX2Rpcl9sZWFmX2VudHJ5X3QJKmVudHJ5OwotCXhmc19kaXJfbGVhZl9uYW1lX3QJKm5hbWVzdDsKLQlpbnQJCQllbnRubywgd2FudF9lbnRubywgaSwgbmV4dGVudG5vOwotCXhmc19tb3VudF90CQkqbXA7Ci0JeGZzX2RhaGFzaF90CQljb29raGFzaDsKLQl4ZnNfZGFoYXNoX3QJCW5leHRoYXNoID0gMDsKLSNpZiAoQklUU19QRVJfTE9ORyA9PSAzMikKLQl4ZnNfZGFoYXNoX3QJCWxhc3RoYXNoID0gWEZTX0RBX01BWEhBU0g7Ci0jZW5kaWYKLQl4ZnNfZGlyX3B1dF9hcmdzX3QJcDsKLQotCW1wID0gZHAtPmlfbW91bnQ7Ci0JbGVhZiA9IGJwLT5kYXRhOwotCWlmIChiZTE2X3RvX2NwdShsZWFmLT5oZHIuaW5mby5tYWdpYykgIT0gWEZTX0RJUl9MRUFGX01BR0lDKSB7Ci0JCSplb2JwID0gMTsKLQkJcmV0dXJuIFhGU19FUlJPUihFTk9FTlQpOwkvKiBYWFggd3JvbmcgY29kZSAqLwotCX0KLQotCXdhbnRfZW50bm8gPSBYRlNfREFfQ09PS0lFX0VOVFJZKG1wLCB1aW8tPnVpb19vZmZzZXQpOwotCi0JY29va2hhc2ggPSBYRlNfREFfQ09PS0lFX0hBU0gobXAsIHVpby0+dWlvX29mZnNldCk7Ci0KLQl4ZnNfZGlyX3RyYWNlX2dfZHVsKCJsZWFmOiBzdGFydCIsIGRwLCB1aW8sIGxlYWYpOwotCi0JLyoKLQkgKiBSZS1maW5kIG91ciBwbGFjZS4KLQkgKi8KLQlmb3IgKGkgPSBlbnRubyA9IDAsIGVudHJ5ID0gJmxlYWYtPmVudHJpZXNbMF07Ci0JCSAgICAgaSA8IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCQkJICAgICBlbnRyeSsrLCBpKyspIHsKLQotCQluYW1lc3QgPSBYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmLAotCQkJCSAgICBJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpKTsKLQotCQlpZiAodW5saWtlbHkoCi0JCSAgICAoKGNoYXIgKiluYW1lc3QgPCAoY2hhciAqKWxlYWYpIHx8Ci0JCSAgICAoKGNoYXIgKiluYW1lc3QgPj0gKGNoYXIgKilsZWFmICsgWEZTX0xCU0laRShtcCkpKSkgewotCQkJWEZTX0NPUlJVUFRJT05fRVJST1IoInhmc19kaXJfbGVhZl9nZXRkZW50c19pbnQoMSkiLAotCQkJCQkgICAgIFhGU19FUlJMRVZFTF9MT1csIG1wLCBsZWFmKTsKLQkJCXhmc19kaXJfdHJhY2VfZ19kdSgibGVhZjogY29ycnVwdGVkIiwgZHAsIHVpbyk7Ci0JCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7Ci0JCX0KLQkJaWYgKElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkgPj0gY29va2hhc2gpIHsKLQkJCWlmICggICBlbnRubyA8IHdhbnRfZW50bm8KLQkJCSAgICAmJiBJTlRfR0VUKGVudHJ5LT5oYXNodmFsLCBBUkNIX0NPTlZFUlQpCi0JCQkJCQkJPT0gY29va2hhc2gpIHsKLQkJCQkvKgotCQkJCSAqIFRyeWluZyB0byBnZXQgdG8gYSBwYXJ0aWN1bGFyIG9mZnNldCBpbiBhCi0JCQkJICogcnVuIG9mIGVxdWFsLWhhc2h2YWwgZW50cmllcy4KLQkJCQkgKi8KLQkJCQllbnRubysrOwotCQkJfSBlbHNlIGlmICggICB3YW50X2VudG5vID4gMAotCQkJCSAgICYmIGVudG5vID09IHdhbnRfZW50bm8KLQkJCQkgICAmJiBJTlRfR0VUKGVudHJ5LT5oYXNodmFsLCBBUkNIX0NPTlZFUlQpCi0JCQkJCQkJPT0gY29va2hhc2gpIHsKLQkJCQlicmVhazsKLQkJCX0gZWxzZSB7Ci0JCQkJZW50bm8gPSAwOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQotCi0JaWYgKGkgPT0gSU5UX0dFVChsZWFmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCkpIHsKLQkJeGZzX2Rpcl90cmFjZV9nX2R1KCJsZWFmOiBoYXNoIG5vdCBmb3VuZCIsIGRwLCB1aW8pOwotCQlpZiAoIWxlYWYtPmhkci5pbmZvLmZvcncpCi0JCQl1aW8tPnVpb19vZmZzZXQgPQotCQkJCVhGU19EQV9NQUtFX0NPT0tJRShtcCwgMCwgMCwgWEZTX0RBX01BWEhBU0gpOwotCQkvKgotCQkgKiBEb24ndCBzZXQgdWlvX29mZnNldCBpZiB0aGVyZSdzIGFub3RoZXIgYmxvY2s6Ci0JCSAqIHRoZSBub2RlIGNvZGUgd2lsbCBiZSBzZXR0aW5nIHVpb19vZmZzZXQgYW55d2F5LgotCQkgKi8KLQkJKmVvYnAgPSAwOwotCQlyZXR1cm4gMDsKLQl9Ci0JeGZzX2Rpcl90cmFjZV9nX2R1ZSgibGVhZjogaGFzaCBmb3VuZCIsIGRwLCB1aW8sIGVudHJ5KTsKLQotCXAuZGJwID0gZGJwOwotCXAucHV0ID0gcHV0OwotCXAudWlvID0gdWlvOwotCi0JLyoKLQkgKiBXZSdyZSBzeW5jaHJvbml6ZWQsIHN0YXJ0IGNvcHlpbmcgZW50cmllcyBvdXQgdG8gdGhlIHVzZXIuCi0JICovCi0JZm9yICg7IGVudG5vID49IDAgJiYgaSA8IElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpOwotCQkJICAgICBlbnRyeSsrLCBpKyssIChlbnRubyA9IG5leHRlbnRubykpIHsKLQkJaW50IGxhc3RyZXNpZD0wLCByZXR2YWw7Ci0JCXhmc19kaXJjb29rX3QgbGFzdG9mZnNldDsKLQkJeGZzX2RhaGFzaF90IHRoaXNoYXNoOwotCi0JCS8qCi0JCSAqIENoZWNrIGZvciBhIGRhbWFnZWQgZGlyZWN0b3J5IGxlYWYgYmxvY2sgYW5kIHBpY2sgdXAKLQkJICogdGhlIGlub2RlIG51bWJlciBmcm9tIHRoaXMgZW50cnkuCi0JCSAqLwotCQluYW1lc3QgPSBYRlNfRElSX0xFQUZfTkFNRVNUUlVDVChsZWFmLAotCQkJCSAgICBJTlRfR0VUKGVudHJ5LT5uYW1laWR4LCBBUkNIX0NPTlZFUlQpKTsKLQotCQlpZiAodW5saWtlbHkoCi0JCSAgICAoKGNoYXIgKiluYW1lc3QgPCAoY2hhciAqKWxlYWYpIHx8Ci0JCSAgICAoKGNoYXIgKiluYW1lc3QgPj0gKGNoYXIgKilsZWFmICsgWEZTX0xCU0laRShtcCkpKSkgewotCQkJWEZTX0NPUlJVUFRJT05fRVJST1IoInhmc19kaXJfbGVhZl9nZXRkZW50c19pbnQoMikiLAotCQkJCQkgICAgIFhGU19FUlJMRVZFTF9MT1csIG1wLCBsZWFmKTsKLQkJCXhmc19kaXJfdHJhY2VfZ19kdSgibGVhZjogY29ycnVwdGVkIiwgZHAsIHVpbyk7Ci0JCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7Ci0JCX0KLQotCQl4ZnNfZGlyX3RyYWNlX2dfZHVjKCJsZWFmOiBtaWRkbGUgY29va2llICAiLAotCQkJCQkJICAgZHAsIHVpbywgcC5jb29rLm8pOwotCi0JCWlmIChpIDwgKElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBBUkNIX0NPTlZFUlQpIC0gMSkpIHsKLQkJCW5leHRoYXNoID0gSU5UX0dFVChlbnRyeVsxXS5oYXNodmFsLCBBUkNIX0NPTlZFUlQpOwotCi0JCQlpZiAobmV4dGhhc2ggPT0gSU5UX0dFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJUKSkKLQkJCQluZXh0ZW50bm8gPSBlbnRubyArIDE7Ci0JCQllbHNlCi0JCQkJbmV4dGVudG5vID0gMDsKLQkJCVhGU19QVVRfQ09PS0lFKHAuY29vaywgbXAsIGJubywgbmV4dGVudG5vLCBuZXh0aGFzaCk7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHVjKCJsZWFmOiBtaWRkbGUgY29va2llICAiLAotCQkJCQkJICAgZHAsIHVpbywgcC5jb29rLm8pOwotCi0JCX0gZWxzZSBpZiAoKHRoaXNoYXNoID0gYmUzMl90b19jcHUobGVhZi0+aGRyLmluZm8uZm9ydykpKSB7Ci0JCQl4ZnNfZGFidWZfdCAqYnAyOwotCQkJeGZzX2Rpcl9sZWFmYmxvY2tfdCAqbGVhZjI7Ci0KLQkJCUFTU0VSVChuZXh0ZGEgIT0gLTEpOwotCi0JCQlyZXR2YWwgPSB4ZnNfZGFfcmVhZF9idWYoZHAtPmlfdHJhbnNwLCBkcCwgdGhpc2hhc2gsCi0JCQkJCQkgbmV4dGRhLCAmYnAyLCBYRlNfREFUQV9GT1JLKTsKLQkJCWlmIChyZXR2YWwpCi0JCQkJcmV0dXJuIHJldHZhbDsKLQotCQkJQVNTRVJUKGJwMiAhPSBOVUxMKTsKLQotCQkJbGVhZjIgPSBicDItPmRhdGE7Ci0KLQkJCWlmICh1bmxpa2VseSgKLQkJCSAgICAgICAoYmUxNl90b19jcHUobGVhZjItPmhkci5pbmZvLm1hZ2ljKQotCQkJCQkJIT0gWEZTX0RJUl9MRUFGX01BR0lDKQotCQkJICAgIHx8IChiZTMyX3RvX2NwdShsZWFmMi0+aGRyLmluZm8uYmFjaykKLQkJCQkJCSE9IGJubykpKSB7CS8qIEdST1QgKi8KLQkJCQlYRlNfQ09SUlVQVElPTl9FUlJPUigieGZzX2Rpcl9sZWFmX2dldGRlbnRzX2ludCgzKSIsCi0JCQkJCQkgICAgIFhGU19FUlJMRVZFTF9MT1csIG1wLAotCQkJCQkJICAgICBsZWFmMik7Ci0JCQkJeGZzX2RhX2JyZWxzZShkcC0+aV90cmFuc3AsIGJwMik7Ci0KLQkJCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7Ci0JCQl9Ci0KLQkJCW5leHRoYXNoID0gSU5UX0dFVChsZWFmMi0+ZW50cmllc1swXS5oYXNodmFsLAotCQkJCQkJCQlBUkNIX0NPTlZFUlQpOwotCQkJbmV4dGVudG5vID0gLTE7Ci0JCQlYRlNfUFVUX0NPT0tJRShwLmNvb2ssIG1wLCB0aGlzaGFzaCwgMCwgbmV4dGhhc2gpOwotCQkJeGZzX2RhX2JyZWxzZShkcC0+aV90cmFuc3AsIGJwMik7Ci0JCQl4ZnNfZGlyX3RyYWNlX2dfZHVjKCJsZWFmOiBuZXh0IGJsayBjb29raWUiLAotCQkJCQkJICAgZHAsIHVpbywgcC5jb29rLm8pOwotCQl9IGVsc2UgewotCQkJbmV4dGVudG5vID0gLTE7Ci0JCQlYRlNfUFVUX0NPT0tJRShwLmNvb2ssIG1wLCAwLCAwLCBYRlNfREFfTUFYSEFTSCk7Ci0JCX0KLQotCQkvKgotCQkgKiBTYXZlIG9mZiB0aGUgY29va2llIHNvIHdlIGNhbiBmYWxsIGJhY2sgc2hvdWxkIHRoZQotCQkgKiAncHV0JyBpbnRvIHRoZSBvdXRnb2luZyBidWZmZXIgZmFpbHMuICBUbyBoYW5kbGUgYSBydW4KLQkJICogb2YgZXF1YWwtaGFzaHZhbHMsIHRoZSBvZmZfdCBzdHJ1Y3R1cmUgb24gNjRiaXQKLQkJICogYnVpbGRzIGhhcyBlbnRubyBidWlsdCBpbnRvIHRoZSBjb29raWUgdG8gSUQgdGhlCi0JCSAqIGVudHJ5LiAgT24gMzJiaXQgYnVpbGRzLCB3ZSBvbmx5IGhhdmUgc3BhY2UgZm9yIHRoZQotCQkgKiBoYXNodmFsIHNvIHdlIGNhbid0IElEIHNwZWNpZmljIGVudHJpZXMgd2l0aGluIGEgZ3JvdXAKLQkJICogb2Ygc2FtZSBoYXNodmFsIGVudHJpZXMuICAgRm9yIHRoaXMsIGxhc3RvZmZzZXQgaXMgc2V0Ci0JCSAqIHRvIHRoZSBmaXJzdCBpbiB0aGUgcnVuIG9mIGVxdWFsIGhhc2h2YWxzIHNvIHdlIGRvbid0Ci0JCSAqIGluY2x1ZGUgYW55IGVudHJpZXMgdW5sZXNzIHdlIGNhbiBpbmNsdWRlIGFsbCBlbnRyaWVzCi0JCSAqIHRoYXQgc2hhcmUgdGhlIHNhbWUgaGFzaHZhbC4gIEhvcGVmdWxseSB0aGUgYnVmZmVyCi0JCSAqIHByb3ZpZGVkIGlzIGJpZyBlbm91Z2ggdG8gaGFuZGxlIGl0IChzZWUgcHY3NjM1MTcpLgotCQkgKi8KLSNpZiAoQklUU19QRVJfTE9ORyA9PSAzMikKLQkJaWYgKCh0aGlzaGFzaCA9IElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCkpCi0JCQkJCQkJCSE9IGxhc3RoYXNoKSB7Ci0JCQlYRlNfUFVUX0NPT0tJRShsYXN0b2Zmc2V0LCBtcCwgYm5vLCBlbnRubywgdGhpc2hhc2gpOwotCQkJbGFzdHJlc2lkID0gdWlvLT51aW9fcmVzaWQ7Ci0JCQlsYXN0aGFzaCA9IHRoaXNoYXNoOwotCQl9IGVsc2UgewotCQkJeGZzX2Rpcl90cmFjZV9nX2R1YygibGVhZjogRFVQIENPT0tJRVMsIHNraXBwZWQiLAotCQkJCQkJICAgZHAsIHVpbywgcC5jb29rLm8pOwotCQl9Ci0jZWxzZQotCQl0aGlzaGFzaCA9IElOVF9HRVQoZW50cnktPmhhc2h2YWwsIEFSQ0hfQ09OVkVSVCk7Ci0JCVhGU19QVVRfQ09PS0lFKGxhc3RvZmZzZXQsIG1wLCBibm8sIGVudG5vLCB0aGlzaGFzaCk7Ci0JCWxhc3RyZXNpZCA9IHVpby0+dWlvX3Jlc2lkOwotI2VuZGlmIC8qIEJJVFNfUEVSX0xPTkcgPT0gMzIgKi8KLQotCQkvKgotCQkgKiBQdXQgdGhlIGN1cnJlbnQgZW50cnkgaW50byB0aGUgb3V0Z29pbmcgYnVmZmVyLiAgSWYgd2UgZmFpbAotCQkgKiB0aGVuIHJlc3RvcmUgdGhlIFVJTyB0byB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGN1cnJlbnQKLQkJICogcnVuIG9mIGVxdWFsLWhhc2h2YWwgZW50cmllcyAocHJvYmFibHkgb25lIDEgZW50cnkgbG9uZykuCi0JCSAqLwotCQlwLmlubyA9IFhGU19HRVRfRElSX0lOTzgobmFtZXN0LT5pbnVtYmVyKTsKLSNpZiBYRlNfQklHX0lOVU1TCi0JCXAuaW5vICs9IG1wLT5tX2lub2FkZDsKLSNlbmRpZgotCQlwLm5hbWUgPSAoY2hhciAqKW5hbWVzdC0+bmFtZTsKLQkJcC5uYW1lbGVuID0gZW50cnktPm5hbWVsZW47Ci0KLQkJcmV0dmFsID0gcC5wdXQoJnApOwotCi0JCWlmICghcC5kb25lKSB7Ci0JCQl1aW8tPnVpb19vZmZzZXQgPSBsYXN0b2Zmc2V0Lm87Ci0JCQl1aW8tPnVpb19yZXNpZCA9IGxhc3RyZXNpZDsKLQotCQkJKmVvYnAgPSAxOwotCi0JCQl4ZnNfZGlyX3RyYWNlX2dfZHUoImxlYWY6IEUtTy1CIiwgZHAsIHVpbyk7Ci0KLQkJCXJldHVybiByZXR2YWw7Ci0JCX0KLQl9Ci0KLQl1aW8tPnVpb19vZmZzZXQgPSBwLmNvb2subzsKLQotCSplb2JwID0gMDsKLQotCXhmc19kaXJfdHJhY2VfZ19kdSgibGVhZjogRS1PLUYiLCBkcCwgdWlvKTsKLQotCXJldHVybiAwOwotfQotCi0vKgotICogRm9ybWF0IGEgZGlyZW50NjQgc3RydWN0dXJlIGFuZCBjb3B5IGl0IG91dCB0aGUgdGhlIHVzZXIncyBidWZmZXIuCi0gKi8KLWludAoteGZzX2Rpcl9wdXRfZGlyZW50NjRfZGlyZWN0KHhmc19kaXJfcHV0X2FyZ3NfdCAqcGEpCi17Ci0JaW92ZWNfdCAqaW92cDsKLQlpbnQgcmVjbGVuLCBuYW1lbGVuOwotCXhmc19kaXJlbnRfdCAqaWRicDsKLQl1aW9fdCAqdWlvOwotCi0JbmFtZWxlbiA9IHBhLT5uYW1lbGVuOwotCXJlY2xlbiA9IERJUkVOVFNJWkUobmFtZWxlbik7Ci0JdWlvID0gcGEtPnVpbzsKLQlpZiAocmVjbGVuID4gdWlvLT51aW9fcmVzaWQpIHsKLQkJcGEtPmRvbmUgPSAwOwotCQlyZXR1cm4gMDsKLQl9Ci0JaW92cCA9IHVpby0+dWlvX2lvdjsKLQlpZGJwID0gKHhmc19kaXJlbnRfdCAqKWlvdnAtPmlvdl9iYXNlOwotCWlvdnAtPmlvdl9iYXNlID0gKGNoYXIgKilpZGJwICsgcmVjbGVuOwotCWlvdnAtPmlvdl9sZW4gLT0gcmVjbGVuOwotCXVpby0+dWlvX3Jlc2lkIC09IHJlY2xlbjsKLQlpZGJwLT5kX3JlY2xlbiA9IHJlY2xlbjsKLQlpZGJwLT5kX2lubyA9IHBhLT5pbm87Ci0JaWRicC0+ZF9vZmYgPSBwYS0+Y29vay5vOwotCWlkYnAtPmRfbmFtZVtuYW1lbGVuXSA9ICdcMCc7Ci0JcGEtPmRvbmUgPSAxOwotCW1lbWNweShpZGJwLT5kX25hbWUsIHBhLT5uYW1lLCBuYW1lbGVuKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIEZvcm1hdCBhIGRpcmVudDY0IHN0cnVjdHVyZSBhbmQgY29weSBpdCBvdXQgdGhlIHRoZSB1c2VyJ3MgYnVmZmVyLgotICovCi1pbnQKLXhmc19kaXJfcHV0X2RpcmVudDY0X3Vpbyh4ZnNfZGlyX3B1dF9hcmdzX3QgKnBhKQotewotCWludAkJcmV0dmFsLCByZWNsZW4sIG5hbWVsZW47Ci0JeGZzX2RpcmVudF90CSppZGJwOwotCXVpb190CQkqdWlvOwotCi0JbmFtZWxlbiA9IHBhLT5uYW1lbGVuOwotCXJlY2xlbiA9IERJUkVOVFNJWkUobmFtZWxlbik7Ci0JdWlvID0gcGEtPnVpbzsKLQlpZiAocmVjbGVuID4gdWlvLT51aW9fcmVzaWQpIHsKLQkJcGEtPmRvbmUgPSAwOwotCQlyZXR1cm4gMDsKLQl9Ci0JaWRicCA9IHBhLT5kYnA7Ci0JaWRicC0+ZF9yZWNsZW4gPSByZWNsZW47Ci0JaWRicC0+ZF9pbm8gPSBwYS0+aW5vOwotCWlkYnAtPmRfb2ZmID0gcGEtPmNvb2subzsKLQlpZGJwLT5kX25hbWVbbmFtZWxlbl0gPSAnXDAnOwotCW1lbWNweShpZGJwLT5kX25hbWUsIHBhLT5uYW1lLCBuYW1lbGVuKTsKLQlyZXR2YWwgPSB1aW9fcmVhZCgoY2FkZHJfdClpZGJwLCByZWNsZW4sIHVpbyk7Ci0JcGEtPmRvbmUgPSAocmV0dmFsID09IDApOwotCXJldHVybiByZXR2YWw7Ci19CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpcl9sZWFmLmggYi9mcy94ZnMveGZzX2Rpcl9sZWFmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViOGNkOWEuLjAwMDAwMDAKLS0tIGEvZnMveGZzL3hmc19kaXJfbGVhZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMSwyMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4KLSAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICogSW5jLiwgIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLSNpZm5kZWYgX19YRlNfRElSX0xFQUZfSF9fCi0jZGVmaW5lCV9fWEZTX0RJUl9MRUFGX0hfXwotCi0vKgotICogRGlyZWN0b3J5IGxheW91dCwgaW50ZXJuYWwgc3RydWN0dXJlLCBhY2Nlc3MgbWFjcm9zLCBldGMuCi0gKgotICogTGFyZ2UgZGlyZWN0b3JpZXMgYXJlIHN0cnVjdHVyZWQgYXJvdW5kIEJ0cmVlcyB3aGVyZSBhbGwgdGhlIGRhdGEKLSAqIGVsZW1lbnRzIGFyZSBpbiB0aGUgbGVhZiBub2Rlcy4gIEZpbGVuYW1lcyBhcmUgaGFzaGVkIGludG8gYW4gaW50LAotICogdGhlbiB0aGF0IGludCBpcyB1c2VkIGFzIHRoZSBpbmRleCBpbnRvIHRoZSBCdHJlZS4gIFNpbmNlIHRoZSBoYXNodmFsCi0gKiBvZiBhIGZpbGVuYW1lIG1heSBub3QgYmUgdW5pcXVlLCB3ZSBtYXkgaGF2ZSBkdXBsaWNhdGUga2V5cy4gIFRoZQotICogaW50ZXJuYWwgbGlua3MgaW4gdGhlIEJ0cmVlIGFyZSBsb2dpY2FsIGJsb2NrIG9mZnNldHMgaW50byB0aGUgZmlsZS4KLSAqLwotCi1zdHJ1Y3QgdWlvOwotc3RydWN0IHhmc19ibWFwX2ZyZWU7Ci1zdHJ1Y3QgeGZzX2RhYnVmOwotc3RydWN0IHhmc19kYV9hcmdzOwotc3RydWN0IHhmc19kYV9zdGF0ZTsKLXN0cnVjdCB4ZnNfZGFfc3RhdGVfYmxrOwotc3RydWN0IHhmc19kaXJfcHV0X2FyZ3M7Ci1zdHJ1Y3QgeGZzX2lub2RlOwotc3RydWN0IHhmc19tb3VudDsKLXN0cnVjdCB4ZnNfdHJhbnM7Ci0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gKiBEaXJlY3RvcnkgU3RydWN0dXJlIHdoZW4gZXF1YWwgdG8gWEZTX0xCU0laRShtcCkgYnl0ZXMuCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qCi0gKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxlYWYgbm9kZXMgaW4gdGhlIEJ0cmVlLgotICoKLSAqIFN0cnVjdCBsZWFmX2VudHJ5J3MgYXJlIHBhY2tlZCBmcm9tIHRoZSB0b3AuICBOYW1lcyBncm93IGZyb20gdGhlIGJvdHRvbQotICogYnV0IGFyZSBub3QgcGFja2VkLiAgVGhlIGZyZWVtYXAgY29udGFpbnMgcnVuLWxlbmd0aC1lbmNvZGVkIGVudHJpZXMKLSAqIGZvciB0aGUgZnJlZSBieXRlcyBhZnRlciB0aGUgbGVhZl9lbnRyeSdzLCBidXQgb25seSB0aGUgTiBsYXJnZXN0IHN1Y2gsCi0gKiBzbWFsbGVyIHJ1bnMgYXJlIGRyb3BwZWQuICBXaGVuIHRoZSBmcmVlbWFwIGRvZXNuJ3Qgc2hvdyBlbm91Z2ggc3BhY2UKLSAqIGZvciBhbiBhbGxvY2F0aW9uLCB3ZSBjb21wYWN0IHRoZSBuYW1lbGlzdCBhcmVhIGFuZCB0cnkgYWdhaW4uICBJZiB3ZQotICogc3RpbGwgZG9uJ3QgaGF2ZSBlbm91Z2ggc3BhY2UsIHRoZW4gd2UgaGF2ZSB0byBzcGxpdCB0aGUgYmxvY2suCi0gKgotICogU2luY2Ugd2UgaGF2ZSBkdXBsaWNhdGUgaGFzaCBrZXlzLCBmb3IgZWFjaCBrZXkgdGhhdCBtYXRjaGVzLCBjb21wYXJlCi0gKiB0aGUgYWN0dWFsIHN0cmluZy4gIFRoZSByb290IGFuZCBpbnRlcm1lZGlhdGUgbm9kZSBzZWFyY2ggYWx3YXlzIHRha2VzCi0gKiB0aGUgZmlyc3QtaW4tdGhlLWJsb2NrIGtleSBtYXRjaCBmb3VuZCwgc28gd2Ugc2hvdWxkIG9ubHkgaGF2ZSB0byB3b3JrCi0gKiAiZm9ydyJhcmQuICBJZiBub25lIG1hdGNoZXMsIGNvbnRpbnVlIHdpdGggdGhlICJmb3J3ImFyZCBsZWFmIG5vZGVzCi0gKiB1bnRpbCB0aGUgaGFzaCBrZXkgY2hhbmdlcyBvciB0aGUgZmlsZW5hbWUgaXMgZm91bmQuCi0gKgotICogVGhlIHBhcmVudCBkaXJlY3RvcnkgYW5kIHRoZSBzZWxmLXBvaW50ZXIgYXJlIGV4cGxpY2l0bHkgcmVwcmVzZW50ZWQKLSAqIChpZTogdGhlcmUgYXJlIGVudHJpZXMgZm9yICIuIiBhbmQgIi4uIikuCi0gKgotICogTm90ZSB0aGF0IHRoZSBjb3VudCBiZWluZyBhIF9fdWludDE2X3QgbGltaXRzIHVzIHRvIHNvbWV0aGluZyBsaWtlIGEKLSAqIGJsb2Nrc2l6ZSBvZiAxLjNNQiBpbiB0aGUgZmFjZSBvZiB3b3JzdCBjYXNlIChzaG9ydCkgZmlsZW5hbWVzLgotICovCi0jZGVmaW5lIFhGU19ESVJfTEVBRl9NQVBTSVpFCTMJLyogaG93IG1hbnkgZnJlZXNwYWNlIHNsb3RzICovCi0KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJfbGVhZl9tYXAgewkvKiBSTEUgbWFwIG9mIGZyZWUgYnl0ZXMgKi8KLQlfX3VpbnQxNl90CWJhc2U7CSAJLyogYmFzZSBvZiBmcmVlIHJlZ2lvbiAqLwotCV9fdWludDE2X3QJc2l6ZTsgCQkvKiBydW4gbGVuZ3RoIG9mIGZyZWUgcmVnaW9uICovCi19IHhmc19kaXJfbGVhZl9tYXBfdDsKLQotdHlwZWRlZiBzdHJ1Y3QgeGZzX2Rpcl9sZWFmX2hkciB7CS8qIGNvbnN0YW50LXN0cnVjdHVyZSBoZWFkZXIgYmxvY2sgKi8KLQl4ZnNfZGFfYmxraW5mb190IGluZm87CQkvKiBibG9jayB0eXBlLCBsaW5rcywgZXRjLiAqLwotCV9fdWludDE2X3QJY291bnQ7CQkvKiBjb3VudCBvZiBhY3RpdmUgbGVhZl9lbnRyeSdzICovCi0JX191aW50MTZfdAluYW1lYnl0ZXM7CS8qIG51bSBieXRlcyBvZiBuYW1lIHN0cmluZ3Mgc3RvcmVkICovCi0JX191aW50MTZfdAlmaXJzdHVzZWQ7CS8qIGZpcnN0IHVzZWQgYnl0ZSBpbiBuYW1lIGFyZWEgKi8KLQlfX3VpbnQ4X3QJaG9sZXM7CQkvKiAhPSAwIGlmIGJsayBuZWVkcyBjb21wYWN0aW9uICovCi0JX191aW50OF90CXBhZDE7Ci0JeGZzX2Rpcl9sZWFmX21hcF90IGZyZWVtYXBbWEZTX0RJUl9MRUFGX01BUFNJWkVdOwotfSB4ZnNfZGlyX2xlYWZfaGRyX3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJfbGVhZl9lbnRyeSB7CS8qIHNvcnRlZCBvbiBrZXksIG5vdCBuYW1lICovCi0JeGZzX2RhaGFzaF90CWhhc2h2YWw7CS8qIGhhc2ggdmFsdWUgb2YgbmFtZSAqLwotCV9fdWludDE2X3QJbmFtZWlkeDsJLyogaW5kZXggaW50byBidWZmZXIgb2YgbmFtZSAqLwotCV9fdWludDhfdAluYW1lbGVuOwkvKiBsZW5ndGggb2YgbmFtZSBzdHJpbmcgKi8KLQlfX3VpbnQ4X3QJcGFkMjsKLX0geGZzX2Rpcl9sZWFmX2VudHJ5X3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJfbGVhZl9uYW1lIHsKLQl4ZnNfZGlyX2lub190CWludW1iZXI7CS8qIGlub2RlIG51bWJlciBmb3IgdGhpcyBrZXkgKi8KLQlfX3VpbnQ4X3QJbmFtZVsxXTsJLyogbmFtZSBzdHJpbmcgaXRzZWxmICovCi19IHhmc19kaXJfbGVhZl9uYW1lX3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJfbGVhZmJsb2NrIHsKLQl4ZnNfZGlyX2xlYWZfaGRyX3QJaGRyOwkvKiBjb25zdGFudC1zdHJ1Y3R1cmUgaGVhZGVyIGJsb2NrICovCi0JeGZzX2Rpcl9sZWFmX2VudHJ5X3QJZW50cmllc1sxXTsJLyogdmFyIHNpemVkIGFycmF5ICovCi0JeGZzX2Rpcl9sZWFmX25hbWVfdAluYW1lbGlzdFsxXTsJLyogZ3Jvd3MgZnJvbSBib3R0b20gb2YgYnVmICovCi19IHhmc19kaXJfbGVhZmJsb2NrX3Q7Ci0KLS8qCi0gKiBMZW5ndGggb2YgbmFtZSBmb3Igd2hpY2ggYSA1MTItYnl0ZSBibG9jayBmaWxlc3lzdGVtCi0gKiBjYW4gZ2V0IGEgZG91YmxlIHNwbGl0LgotICovCi0jZGVmaW5lCVhGU19ESVJfTEVBRl9DQU5fRE9VQkxFX1NQTElUX0xFTglcCi0JKDUxMiAtICh1aW50KXNpemVvZih4ZnNfZGlyX2xlYWZfaGRyX3QpIC0gXAotCSAodWludClzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpICogMiAtIFwKLQkgKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9uYW1lX3QpICogMiAtIChNQVhOQU1FTEVOIC0gMikgKyAxICsgMSkKLQotdHlwZWRlZiBpbnQgKCp4ZnNfZGlyX3B1dF90KShzdHJ1Y3QgeGZzX2Rpcl9wdXRfYXJncyAqcGEpOwotCi10eXBlZGVmIHVuaW9uIHsKLQl4ZnNfb2ZmX3QJCW87CQkvKiBvZmZzZXQgKGNvb2tpZSkgKi8KLQkvKgotCSAqIFdhdGNoIHRoZSBvcmRlciBoZXJlIChlbmRpYW4tbmVzcyBkZXBlbmRlbnQpLgotCSAqLwotCXN0cnVjdCB7Ci0jaWZuZGVmIFhGU19OQVRJVkVfSE9TVAotCQl4ZnNfZGFoYXNoX3QJaDsJLyogaGFzaCB2YWx1ZSAqLwotCQlfX3VpbnQzMl90CWJlOwkvKiBibG9jayBhbmQgZW50cnkgKi8KLSNlbHNlCi0JCV9fdWludDMyX3QJYmU7CS8qIGJsb2NrIGFuZCBlbnRyeSAqLwotCQl4ZnNfZGFoYXNoX3QJaDsJLyogaGFzaCB2YWx1ZSAqLwotI2VuZGlmIC8qIFhGU19OQVRJVkVfSE9TVCAqLwotCX0gczsKLX0geGZzX2RpcmNvb2tfdDsKLQotI2RlZmluZQlYRlNfUFVUX0NPT0tJRShjLG1wLGJubyxlbnRyeSxoYXNoKQlcCi0JKChjKS5zLmJlID0gWEZTX0RBX01BS0VfQk5PRU5UUlkobXAsIGJubywgZW50cnkpLCAoYykucy5oID0gKGhhc2gpKQotCi10eXBlZGVmIHN0cnVjdCB4ZnNfZGlyX3B1dF9hcmdzIHsKLQl4ZnNfZGlyY29va190CWNvb2s7CQkvKiBjb29raWUgb2YgKG5leHQpIGVudHJ5ICovCi0JeGZzX2ludGlub190CWlubzsJCS8qIGlub2RlIG51bWJlciAqLwotCXN0cnVjdCB4ZnNfZGlyZW50ICpkYnA7CQkvKiBidWZmZXIgcG9pbnRlciAqLwotCWNoYXIJCSpuYW1lOwkJLyogZGlyZWN0b3J5IGVudHJ5IG5hbWUgKi8KLQlpbnQJCW5hbWVsZW47CS8qIGxlbmd0aCBvZiBuYW1lICovCi0JaW50CQlkb25lOwkJLyogb3V0cHV0OiBzZXQgaWYgdmFsdWUgd2FzIHN0b3JlZCAqLwotCXhmc19kaXJfcHV0X3QJcHV0OwkJLyogcHV0IGZ1bmN0aW9uIHB0ciAoaS9vKSAqLwotCXN0cnVjdCB1aW8JKnVpbzsJCS8qIHVpbyBjb250cm9sIHN0cnVjdHVyZSAqLwotfSB4ZnNfZGlyX3B1dF9hcmdzX3Q7Ci0KLSNkZWZpbmUgWEZTX0RJUl9MRUFGX0VOVFNJWkVfQllOQU1FKGxlbikJXAotCXhmc19kaXJfbGVhZl9lbnRzaXplX2J5bmFtZShsZW4pCi1zdGF0aWMgaW5saW5lIGludCB4ZnNfZGlyX2xlYWZfZW50c2l6ZV9ieW5hbWUoaW50IGxlbikKLXsKLQlyZXR1cm4gKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9uYW1lX3QpLTEgKyBsZW47Ci19Ci0KLSNkZWZpbmUgWEZTX0RJUl9MRUFGX0VOVFNJWkVfQllFTlRSWShlbnRyeSkJXAotCXhmc19kaXJfbGVhZl9lbnRzaXplX2J5ZW50cnkoZW50cnkpCi1zdGF0aWMgaW5saW5lIGludCB4ZnNfZGlyX2xlYWZfZW50c2l6ZV9ieWVudHJ5KHhmc19kaXJfbGVhZl9lbnRyeV90ICplbnRyeSkKLXsKLQlyZXR1cm4gKHVpbnQpc2l6ZW9mKHhmc19kaXJfbGVhZl9uYW1lX3QpLTEgKyAoZW50cnkpLT5uYW1lbGVuOwotfQotCi0jZGVmaW5lIFhGU19ESVJfTEVBRl9OQU1FU1RSVUNUKGxlYWZwLG9mZnNldCkJXAotCXhmc19kaXJfbGVhZl9uYW1lc3RydWN0KGxlYWZwLG9mZnNldCkKLXN0YXRpYyBpbmxpbmUgeGZzX2Rpcl9sZWFmX25hbWVfdCAqCi14ZnNfZGlyX2xlYWZfbmFtZXN0cnVjdCh4ZnNfZGlyX2xlYWZibG9ja190ICpsZWFmcCwgaW50IG9mZnNldCkKLXsKLQlyZXR1cm4gKHhmc19kaXJfbGVhZl9uYW1lX3QgKikmKChjaGFyICopKGxlYWZwKSlbb2Zmc2V0XTsKLX0KLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAqIEZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBrZXJuZWwuCi0gKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLS8qCi0gKiBJbnRlcm5hbCByb3V0aW5lcyB3aGVuIGRpcnNpemUgPCBYRlNfTElUSU5PKG1wKS4KLSAqLwotaW50IHhmc19kaXJfc2hvcnRmb3JtX2NyZWF0ZShzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsIHhmc19pbm9fdCBwYXJlbnQpOwotaW50IHhmc19kaXJfc2hvcnRmb3JtX2FkZG5hbWUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKLWludCB4ZnNfZGlyX3Nob3J0Zm9ybV9sb29rdXAoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKLWludCB4ZnNfZGlyX3Nob3J0Zm9ybV90b19sZWFmKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncyk7Ci1pbnQgeGZzX2Rpcl9zaG9ydGZvcm1fcmVtb3ZlbmFtZShzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MpOwotaW50IHhmc19kaXJfc2hvcnRmb3JtX2dldGRlbnRzKHN0cnVjdCB4ZnNfaW5vZGUgKmRwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCAqZW9mcCwKLQkJCSAgICAgICBzdHJ1Y3QgeGZzX2RpcmVudCAqZGJwLCB4ZnNfZGlyX3B1dF90IHB1dCk7Ci1pbnQgeGZzX2Rpcl9zaG9ydGZvcm1fcmVwbGFjZShzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MpOwotCi0vKgotICogSW50ZXJuYWwgcm91dGluZXMgd2hlbiBkaXJzaXplID09IFhGU19MQlNJWkUobXApLgotICovCi1pbnQgeGZzX2Rpcl9sZWFmX3RvX25vZGUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKLWludCB4ZnNfZGlyX2xlYWZfdG9fc2hvcnRmb3JtKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncyk7Ci0KLS8qCi0gKiBSb3V0aW5lcyB1c2VkIGZvciBncm93aW5nIHRoZSBCdHJlZS4KLSAqLwotaW50CXhmc19kaXJfbGVhZl9zcGxpdChzdHJ1Y3QgeGZzX2RhX3N0YXRlICpzdGF0ZSwKLQkJCQkgIHN0cnVjdCB4ZnNfZGFfc3RhdGVfYmxrICpvbGRibGssCi0JCQkJICBzdHJ1Y3QgeGZzX2RhX3N0YXRlX2JsayAqbmV3YmxrKTsKLWludAl4ZnNfZGlyX2xlYWZfYWRkKHN0cnVjdCB4ZnNfZGFidWYgKmxlYWZfYnVmZmVyLAotCQkJCXN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncywgaW50IGluc2VydGlvbl9pbmRleCk7Ci1pbnQJeGZzX2Rpcl9sZWFmX2FkZG5hbWUoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKLWludAl4ZnNfZGlyX2xlYWZfbG9va3VwX2ludChzdHJ1Y3QgeGZzX2RhYnVmICpsZWFmX2J1ZmZlciwKLQkJCQkgICAgICAgc3RydWN0IHhmc19kYV9hcmdzICphcmdzLAotCQkJCSAgICAgICBpbnQgKmluZGV4X2ZvdW5kX2F0KTsKLWludAl4ZnNfZGlyX2xlYWZfcmVtb3ZlKHN0cnVjdCB4ZnNfdHJhbnMgKnRyYW5zLAotCQkJCSAgIHN0cnVjdCB4ZnNfZGFidWYgKmxlYWZfYnVmZmVyLAotCQkJCSAgIGludCBpbmRleF90b19yZW1vdmUpOwotaW50CXhmc19kaXJfbGVhZl9nZXRkZW50c19pbnQoc3RydWN0IHhmc19kYWJ1ZiAqYnAsIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLAotCQkJCQkgeGZzX2RhYmxrX3QgYm5vLCBzdHJ1Y3QgdWlvICp1aW8sCi0JCQkJCSBpbnQgKmVvYnAsIHN0cnVjdCB4ZnNfZGlyZW50ICpkYnAsCi0JCQkJCSB4ZnNfZGlyX3B1dF90IHB1dCwgeGZzX2RhZGRyX3QgbmV4dGRhKTsKLQotLyoKLSAqIFJvdXRpbmVzIHVzZWQgZm9yIHNocmlua2luZyB0aGUgQnRyZWUuCi0gKi8KLWludAl4ZnNfZGlyX2xlYWZfdG9vc21hbGwoc3RydWN0IHhmc19kYV9zdGF0ZSAqc3RhdGUsIGludCAqcmV0dmFsKTsKLXZvaWQJeGZzX2Rpcl9sZWFmX3VuYmFsYW5jZShzdHJ1Y3QgeGZzX2RhX3N0YXRlICpzdGF0ZSwKLQkJCQkJICAgICBzdHJ1Y3QgeGZzX2RhX3N0YXRlX2JsayAqZHJvcF9ibGssCi0JCQkJCSAgICAgc3RydWN0IHhmc19kYV9zdGF0ZV9ibGsgKnNhdmVfYmxrKTsKLQotLyoKLSAqIFV0aWxpdHkgcm91dGluZXMuCi0gKi8KLXVpbnQJeGZzX2Rpcl9sZWFmX2xhc3RoYXNoKHN0cnVjdCB4ZnNfZGFidWYgKmJwLCBpbnQgKmNvdW50KTsKLWludAl4ZnNfZGlyX2xlYWZfb3JkZXIoc3RydWN0IHhmc19kYWJ1ZiAqbGVhZjFfYnAsCi0JCQkJICBzdHJ1Y3QgeGZzX2RhYnVmICpsZWFmMl9icCk7Ci1pbnQJeGZzX2Rpcl9wdXRfZGlyZW50NjRfZGlyZWN0KHhmc19kaXJfcHV0X2FyZ3NfdCAqcGEpOwotaW50CXhmc19kaXJfcHV0X2RpcmVudDY0X3Vpbyh4ZnNfZGlyX3B1dF9hcmdzX3QgKnBhKTsKLWludAl4ZnNfZGlyX2lub192YWxpZGF0ZShzdHJ1Y3QgeGZzX21vdW50ICptcCwgeGZzX2lub190IGlubyk7Ci0KLS8qCi0gKiBHbG9iYWwgZGF0YS4KLSAqLwotZXh0ZXJuIHhmc19kYWhhc2hfdAl4ZnNfZGlyX2hhc2hfZG90LCB4ZnNfZGlyX2hhc2hfZG90ZG90OwotCi0jZW5kaWYgLyogX19YRlNfRElSX0xFQUZfSF9fICovCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2Rpcl9zZi5oIGIvZnMveGZzL3hmc19kaXJfc2YuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIyMGI0ZC4uMDAwMDAwMAotLS0gYS9mcy94ZnMveGZzX2Rpcl9zZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0gKiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0jaWZuZGVmIF9fWEZTX0RJUl9TRl9IX18KLSNkZWZpbmUJX19YRlNfRElSX1NGX0hfXwotCi0vKgotICogRGlyZWN0b3J5IGxheW91dCB3aGVuIHN0b3JlZCBpbnRlcm5hbCB0byBhbiBpbm9kZS4KLSAqCi0gKiBTbWFsbCBkaXJlY3RvcmllcyBhcmUgcGFja2VkIGFzIHRpZ2h0bHkgYXMgcG9zc2libGUgc28gYXMgdG8KLSAqIGZpdCBpbnRvIHRoZSBsaXRlcmFsIGFyZWEgb2YgdGhlIGlub2RlLgotICovCi0KLXR5cGVkZWYgc3RydWN0IHsgX191aW50OF90IGlbc2l6ZW9mKHhmc19pbm9fdCldOyB9IHhmc19kaXJfaW5vX3Q7Ci0KLS8qCi0gKiBUaGUgcGFyZW50IGRpcmVjdG9yeSBoYXMgYSBkZWRpY2F0ZWQgZmllbGQsIGFuZCB0aGUgc2VsZi1wb2ludGVyIG11c3QKLSAqIGJlIGNhbGN1bGF0ZWQgb24gdGhlIGZseS4KLSAqCi0gKiBFbnRyaWVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSB0b3AgYXMgdGlnaHQgYXMgcG9zc2libGUuICBUaGUgaGVhZGVyCi0gKiBhbmQgdGhlIGVsZW1lbnRzIG11Y2ggYmUgbWVtY3B5J2Qgb3V0IGludG8gYSB3b3JrIGFyZWEgdG8gZ2V0IGNvcnJlY3QKLSAqIGFsaWdubWVudCBmb3IgdGhlIGlub2RlIG51bWJlciBmaWVsZHMuCi0gKi8KLXR5cGVkZWYgc3RydWN0IHhmc19kaXJfc2ZfaGRyIHsJCS8qIGNvbnN0YW50LXN0cnVjdHVyZSBoZWFkZXIgYmxvY2sgKi8KLQl4ZnNfZGlyX2lub190CXBhcmVudDsJCS8qIHBhcmVudCBkaXIgaW5vZGUgbnVtYmVyICovCi0JX191aW50OF90CWNvdW50OwkJLyogY291bnQgb2YgYWN0aXZlIGVudHJpZXMgKi8KLX0geGZzX2Rpcl9zZl9oZHJfdDsKLQotdHlwZWRlZiBzdHJ1Y3QgeGZzX2Rpcl9zZl9lbnRyeSB7Ci0JeGZzX2Rpcl9pbm9fdAlpbnVtYmVyOwkvKiByZWZlcmVuY2VkIGlub2RlIG51bWJlciAqLwotCV9fdWludDhfdAluYW1lbGVuOwkvKiBhY3R1YWwgbGVuZ3RoIG9mIG5hbWUgKG5vIE5VTEwpICovCi0JX191aW50OF90CW5hbWVbMV07CS8qIG5hbWUgKi8KLX0geGZzX2Rpcl9zZl9lbnRyeV90OwotCi10eXBlZGVmIHN0cnVjdCB4ZnNfZGlyX3Nob3J0Zm9ybSB7Ci0JeGZzX2Rpcl9zZl9oZHJfdAloZHI7Ci0JeGZzX2Rpcl9zZl9lbnRyeV90CWxpc3RbMV07CS8qIHZhcmlhYmxlIHNpemVkIGFycmF5ICovCi19IHhmc19kaXJfc2hvcnRmb3JtX3Q7Ci0KLS8qCi0gKiBXZSBnZW5lcmF0ZSB0aGlzIHRoZW4gc29ydCBpdCwgc28gdGhhdCByZWFkZGlycyBhcmUgcmV0dXJuZWQgaW4KLSAqIGhhc2gtb3JkZXIuICBFbHNlIHNlZWtkaXIgd29uJ3Qgd29yay4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGZzX2Rpcl9zZl9zb3J0IHsKLQlfX3VpbnQ4X3QJZW50bm87CQkvKiAuPTAsIC4uPTEsIGVsc2UgZW50cnkjICsgMiAqLwotCV9fdWludDhfdAlzZXFubzsJCS8qIHNlcXVlbmNlICMgd2l0aCBzYW1lIGhhc2ggdmFsdWUgKi8KLQlfX3VpbnQ4X3QJbmFtZWxlbjsJLyogbGVuZ3RoIG9mIG5hbWUgdmFsdWUgKG5vIG51bGwpICovCi0JeGZzX2RhaGFzaF90CWhhc2g7CQkvKiB0aGlzIGVudHJ5J3MgaGFzaCB2YWx1ZSAqLwotCXhmc19pbnRpbm9fdAlpbm87CQkvKiB0aGlzIGVudHJ5J3MgaW5vZGUgbnVtYmVyICovCi0JY2hhcgkJKm5hbWU7CQkvKiBuYW1lIHZhbHVlLCBwb2ludGVyIGludG8gYnVmZmVyICovCi19IHhmc19kaXJfc2Zfc29ydF90OwotCi0jZGVmaW5lCVhGU19ESVJfU0ZfR0VUX0RJUklOTyhmcm9tLHRvKQl4ZnNfZGlyX3NmX2dldF9kaXJpbm8oZnJvbSwgdG8pCi1zdGF0aWMgaW5saW5lIHZvaWQgeGZzX2Rpcl9zZl9nZXRfZGlyaW5vKHhmc19kaXJfaW5vX3QgKmZyb20sIHhmc19pbm9fdCAqdG8pCi17Ci0JKih0bykgPSBYRlNfR0VUX0RJUl9JTk84KCpmcm9tKTsKLX0KLQotI2RlZmluZQlYRlNfRElSX1NGX1BVVF9ESVJJTk8oZnJvbSx0bykJeGZzX2Rpcl9zZl9wdXRfZGlyaW5vKGZyb20sIHRvKQotc3RhdGljIGlubGluZSB2b2lkIHhmc19kaXJfc2ZfcHV0X2Rpcmlubyh4ZnNfaW5vX3QgKmZyb20sIHhmc19kaXJfaW5vX3QgKnRvKQotewotCVhGU19QVVRfRElSX0lOTzgoKihmcm9tKSwgKih0bykpOwotfQotCi0jZGVmaW5lIFhGU19ESVJfU0ZfRU5UU0laRV9CWU5BTUUobGVuKQl4ZnNfZGlyX3NmX2VudHNpemVfYnluYW1lKGxlbikKLXN0YXRpYyBpbmxpbmUgaW50IHhmc19kaXJfc2ZfZW50c2l6ZV9ieW5hbWUoaW50IGxlbikKLXsKLQlyZXR1cm4gKHVpbnQpc2l6ZW9mKHhmc19kaXJfc2ZfZW50cnlfdCktMSArIChsZW4pOwotfQotCi0jZGVmaW5lIFhGU19ESVJfU0ZfRU5UU0laRV9CWUVOVFJZKHNmZXApCXhmc19kaXJfc2ZfZW50c2l6ZV9ieWVudHJ5KHNmZXApCi1zdGF0aWMgaW5saW5lIGludCB4ZnNfZGlyX3NmX2VudHNpemVfYnllbnRyeSh4ZnNfZGlyX3NmX2VudHJ5X3QgKnNmZXApCi17Ci0JcmV0dXJuICh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2VudHJ5X3QpLTEgKyAoc2ZlcCktPm5hbWVsZW47Ci19Ci0KLSNkZWZpbmUgWEZTX0RJUl9TRl9ORVhURU5UUlkoc2ZlcCkJCXhmc19kaXJfc2ZfbmV4dGVudHJ5KHNmZXApCi1zdGF0aWMgaW5saW5lIHhmc19kaXJfc2ZfZW50cnlfdCAqeGZzX2Rpcl9zZl9uZXh0ZW50cnkoeGZzX2Rpcl9zZl9lbnRyeV90ICpzZmVwKQotewotCXJldHVybiAoeGZzX2Rpcl9zZl9lbnRyeV90ICopIFwKLQkJKChjaGFyICopKHNmZXApICsgWEZTX0RJUl9TRl9FTlRTSVpFX0JZRU5UUlkoc2ZlcCkpOwotfQotCi0jZGVmaW5lIFhGU19ESVJfU0ZfQUxMRklUKGNvdW50LHRvdGFsbGVuKQlcCi0JeGZzX2Rpcl9zZl9hbGxmaXQoY291bnQsdG90YWxsZW4pCi1zdGF0aWMgaW5saW5lIGludCB4ZnNfZGlyX3NmX2FsbGZpdChpbnQgY291bnQsIGludCB0b3RhbGxlbikKLXsKLQlyZXR1cm4gKCh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2hkcl90KSArIFwKLQkgICAgICAgKCh1aW50KXNpemVvZih4ZnNfZGlyX3NmX2VudHJ5X3QpLTEpKihjb3VudCkgKyAodG90YWxsZW4pKTsKLX0KLQotI2lmIGRlZmluZWQoWEZTX0RJUl9UUkFDRSkKLQotLyoKLSAqIEtlcm5lbCB0cmFjaW5nIHN1cHBvcnQgZm9yIGRpcmVjdG9yaWVzLgotICovCi1zdHJ1Y3QgdWlvOwotc3RydWN0IHhmc19pbm9kZTsKLXN0cnVjdCB4ZnNfZGFfaW50bm9kZTsKLXN0cnVjdCB4ZnNfZGlub2RlOwotc3RydWN0IHhmc19kaXJfbGVhZmJsb2NrOwotc3RydWN0IHhmc19kaXJfbGVhZl9lbnRyeTsKLQotI2RlZmluZQlYRlNfRElSX1RSQUNFX1NJWkUJNDA5NgkvKiBzaXplIG9mIGdsb2JhbCB0cmFjZSBidWZmZXIgKi8KLWV4dGVybiBrdHJhY2VfdAkqeGZzX2Rpcl90cmFjZV9idWY7Ci0KLS8qCi0gKiBUcmFjZSByZWNvcmQgdHlwZXMuCi0gKi8KLSNkZWZpbmUJWEZTX0RJUl9LVFJBQ0VfR19EVQkxCS8qIGRwLCB1aW8gKi8KLSNkZWZpbmUJWEZTX0RJUl9LVFJBQ0VfR19EVUIJMgkvKiBkcCwgdWlvLCBibm8gKi8KLSNkZWZpbmUJWEZTX0RJUl9LVFJBQ0VfR19EVU4JMwkvKiBkcCwgdWlvLCBub2RlICovCi0jZGVmaW5lCVhGU19ESVJfS1RSQUNFX0dfRFVMCTQJLyogZHAsIHVpbywgbGVhZiAqLwotI2RlZmluZQlYRlNfRElSX0tUUkFDRV9HX0RVRQk1CS8qIGRwLCB1aW8sIGxlYWYgZW50cnkgKi8KLSNkZWZpbmUJWEZTX0RJUl9LVFJBQ0VfR19EVUMJNgkvKiBkcCwgdWlvLCBjb29raWUgKi8KLQotdm9pZCB4ZnNfZGlyX3RyYWNlX2dfZHUoY2hhciAqd2hlcmUsIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLCBzdHJ1Y3QgdWlvICp1aW8pOwotdm9pZCB4ZnNfZGlyX3RyYWNlX2dfZHViKGNoYXIgKndoZXJlLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwgc3RydWN0IHVpbyAqdWlvLAotCQkJICAgICAgeGZzX2RhYmxrX3QgYm5vKTsKLXZvaWQgeGZzX2Rpcl90cmFjZV9nX2R1bihjaGFyICp3aGVyZSwgc3RydWN0IHhmc19pbm9kZSAqZHAsIHN0cnVjdCB1aW8gKnVpbywKLQkJCSAgICAgIHN0cnVjdCB4ZnNfZGFfaW50bm9kZSAqbm9kZSk7Ci12b2lkIHhmc19kaXJfdHJhY2VfZ19kdWwoY2hhciAqd2hlcmUsIHN0cnVjdCB4ZnNfaW5vZGUgKmRwLCBzdHJ1Y3QgdWlvICp1aW8sCi0JCQkgICAgICBzdHJ1Y3QgeGZzX2Rpcl9sZWFmYmxvY2sgKmxlYWYpOwotdm9pZCB4ZnNfZGlyX3RyYWNlX2dfZHVlKGNoYXIgKndoZXJlLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwgc3RydWN0IHVpbyAqdWlvLAotCQkJICAgICAgc3RydWN0IHhmc19kaXJfbGVhZl9lbnRyeSAqZW50cnkpOwotdm9pZCB4ZnNfZGlyX3RyYWNlX2dfZHVjKGNoYXIgKndoZXJlLCBzdHJ1Y3QgeGZzX2lub2RlICpkcCwgc3RydWN0IHVpbyAqdWlvLAotCQkJICAgICAgeGZzX29mZl90IGNvb2tpZSk7Ci12b2lkIHhmc19kaXJfdHJhY2VfZW50ZXIoaW50IHR5cGUsIGNoYXIgKndoZXJlLAotCQkJICAgICB2b2lkICphMCwgdm9pZCAqYTEsIHZvaWQgKmEyLCB2b2lkICphMywKLQkJCSAgICAgdm9pZCAqYTQsIHZvaWQgKmE1LCB2b2lkICphNiwgdm9pZCAqYTcsCi0JCQkgICAgIHZvaWQgKmE4LCB2b2lkICphOSwgdm9pZCAqYTEwLCB2b2lkICphMTEpOwotI2Vsc2UKLSNkZWZpbmUJeGZzX2Rpcl90cmFjZV9nX2R1KHcsZCx1KQotI2RlZmluZQl4ZnNfZGlyX3RyYWNlX2dfZHViKHcsZCx1LGIpCi0jZGVmaW5lCXhmc19kaXJfdHJhY2VfZ19kdW4odyxkLHUsbikKLSNkZWZpbmUJeGZzX2Rpcl90cmFjZV9nX2R1bCh3LGQsdSxsKQotI2RlZmluZQl4ZnNfZGlyX3RyYWNlX2dfZHVlKHcsZCx1LGUpCi0jZGVmaW5lCXhmc19kaXJfdHJhY2VfZ19kdWModyxkLHUsYykKLSNlbmRpZiAvKiBERUJVRyAqLwotCi0jZW5kaWYJLyogX19YRlNfRElSX1NGX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kbWFwaS5oIGIvZnMveGZzL3hmc19kbWFwaS5oCmluZGV4IDAwYjE1NDAuLjRlNzg2NWEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZG1hcGkuaAorKysgYi9mcy94ZnMveGZzX2RtYXBpLmgKQEAgLTE4OSw2ICsxODksNiBAQAogI2RlZmluZSBBVF9ERUxBWV9GTEFHKGYpICgoZiZBVFRSX05PTkJMT0NLKSA/IERNX0ZMQUdTX05ERUxBWSA6IDApCiAKIAotZXh0ZXJuIHN0cnVjdCBiaHZfdmZzb3BzIHhmc19kbW9wczsKK2V4dGVybiBzdHJ1Y3QgYmh2X21vZHVsZV92ZnNvcHMgeGZzX2Rtb3BzOwogCiAjZW5kaWYgIC8qIF9fWEZTX0RNQVBJX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19kbW9wcy5jIGIvZnMveGZzL3hmc19kbW9wcy5jCmluZGV4IDYyOTc5NWIuLjFlNGEzNWQgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZG1vcHMuYworKysgYi9mcy94ZnMveGZzX2Rtb3BzLmMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZXJyb3IuYyBiL2ZzL3hmcy94ZnNfZXJyb3IuYwppbmRleCAyYTIxYzUwLi5iOTU2ODFiIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2Vycm9yLmMKKysrIGIvZnMveGZzL3hmc19lcnJvci5jCkBAIC0yMiwxMiArMjIsMTAgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2V4dGZyZWVfaXRlbS5jIGIvZnMveGZzL3hmc19leHRmcmVlX2l0ZW0uYwppbmRleCBmMTkyODJlLi42Y2Y2ZDg3IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2V4dGZyZWVfaXRlbS5jCisrKyBiL2ZzL3hmcy94ZnNfZXh0ZnJlZV9pdGVtLmMKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfYnVmX2l0ZW0uaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX3RyYW5zX3ByaXYuaCIKQEAgLTI5NCw2ICsyOTMsNjIgQEAKIH0KIAogLyoKKyAqIENvcHkgYW4gRUZJIGZvcm1hdCBidWZmZXIgZnJvbSB0aGUgZ2l2ZW4gYnVmLCBhbmQgaW50byB0aGUgZGVzdGluYXRpb24KKyAqIEVGSSBmb3JtYXQgc3RydWN0dXJlLgorICogVGhlIGdpdmVuIGJ1ZmZlciBjYW4gYmUgaW4gMzIgYml0IG9yIDY0IGJpdCBmb3JtICh3aGljaCBoYXMgZGlmZmVyZW50IHBhZGRpbmcpLAorICogb25lIG9mIHdoaWNoIHdpbGwgYmUgdGhlIG5hdGl2ZSBmb3JtYXQgZm9yIHRoaXMga2VybmVsLgorICogSXQgd2lsbCBoYW5kbGUgdGhlIGNvbnZlcnNpb24gb2YgZm9ybWF0cyBpZiBuZWNlc3NhcnkuCisgKi8KK2ludAoreGZzX2VmaV9jb3B5X2Zvcm1hdCh4ZnNfbG9nX2lvdmVjX3QgKmJ1ZiwgeGZzX2VmaV9sb2dfZm9ybWF0X3QgKmRzdF9lZmlfZm10KQoreworCXhmc19lZmlfbG9nX2Zvcm1hdF90ICpzcmNfZWZpX2ZtdCA9ICh4ZnNfZWZpX2xvZ19mb3JtYXRfdCAqKWJ1Zi0+aV9hZGRyOworCXVpbnQgaTsKKwl1aW50IGxlbiA9IHNpemVvZih4ZnNfZWZpX2xvZ19mb3JtYXRfdCkgKyAKKwkJKHNyY19lZmlfZm10LT5lZmlfbmV4dGVudHMgLSAxKSAqIHNpemVvZih4ZnNfZXh0ZW50X3QpOyAgCisJdWludCBsZW4zMiA9IHNpemVvZih4ZnNfZWZpX2xvZ19mb3JtYXRfMzJfdCkgKyAKKwkJKHNyY19lZmlfZm10LT5lZmlfbmV4dGVudHMgLSAxKSAqIHNpemVvZih4ZnNfZXh0ZW50XzMyX3QpOyAgCisJdWludCBsZW42NCA9IHNpemVvZih4ZnNfZWZpX2xvZ19mb3JtYXRfNjRfdCkgKyAKKwkJKHNyY19lZmlfZm10LT5lZmlfbmV4dGVudHMgLSAxKSAqIHNpemVvZih4ZnNfZXh0ZW50XzY0X3QpOyAgCisKKwlpZiAoYnVmLT5pX2xlbiA9PSBsZW4pIHsKKwkJbWVtY3B5KChjaGFyICopZHN0X2VmaV9mbXQsIChjaGFyKilzcmNfZWZpX2ZtdCwgbGVuKTsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmIChidWYtPmlfbGVuID09IGxlbjMyKSB7CisJCXhmc19lZmlfbG9nX2Zvcm1hdF8zMl90ICpzcmNfZWZpX2ZtdF8zMiA9CisJCQkoeGZzX2VmaV9sb2dfZm9ybWF0XzMyX3QgKilidWYtPmlfYWRkcjsKKworCQlkc3RfZWZpX2ZtdC0+ZWZpX3R5cGUgICAgID0gc3JjX2VmaV9mbXRfMzItPmVmaV90eXBlOworCQlkc3RfZWZpX2ZtdC0+ZWZpX3NpemUgICAgID0gc3JjX2VmaV9mbXRfMzItPmVmaV9zaXplOworCQlkc3RfZWZpX2ZtdC0+ZWZpX25leHRlbnRzID0gc3JjX2VmaV9mbXRfMzItPmVmaV9uZXh0ZW50czsKKwkJZHN0X2VmaV9mbXQtPmVmaV9pZCAgICAgICA9IHNyY19lZmlfZm10XzMyLT5lZmlfaWQ7CisJCWZvciAoaSA9IDA7IGkgPCBkc3RfZWZpX2ZtdC0+ZWZpX25leHRlbnRzOyBpKyspIHsKKwkJCWRzdF9lZmlfZm10LT5lZmlfZXh0ZW50c1tpXS5leHRfc3RhcnQgPQorCQkJCXNyY19lZmlfZm10XzMyLT5lZmlfZXh0ZW50c1tpXS5leHRfc3RhcnQ7CisJCQlkc3RfZWZpX2ZtdC0+ZWZpX2V4dGVudHNbaV0uZXh0X2xlbiA9CisJCQkJc3JjX2VmaV9mbXRfMzItPmVmaV9leHRlbnRzW2ldLmV4dF9sZW47CisJCX0KKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmIChidWYtPmlfbGVuID09IGxlbjY0KSB7CisJCXhmc19lZmlfbG9nX2Zvcm1hdF82NF90ICpzcmNfZWZpX2ZtdF82NCA9CisJCQkoeGZzX2VmaV9sb2dfZm9ybWF0XzY0X3QgKilidWYtPmlfYWRkcjsKKworCQlkc3RfZWZpX2ZtdC0+ZWZpX3R5cGUgICAgID0gc3JjX2VmaV9mbXRfNjQtPmVmaV90eXBlOworCQlkc3RfZWZpX2ZtdC0+ZWZpX3NpemUgICAgID0gc3JjX2VmaV9mbXRfNjQtPmVmaV9zaXplOworCQlkc3RfZWZpX2ZtdC0+ZWZpX25leHRlbnRzID0gc3JjX2VmaV9mbXRfNjQtPmVmaV9uZXh0ZW50czsKKwkJZHN0X2VmaV9mbXQtPmVmaV9pZCAgICAgICA9IHNyY19lZmlfZm10XzY0LT5lZmlfaWQ7CisJCWZvciAoaSA9IDA7IGkgPCBkc3RfZWZpX2ZtdC0+ZWZpX25leHRlbnRzOyBpKyspIHsKKwkJCWRzdF9lZmlfZm10LT5lZmlfZXh0ZW50c1tpXS5leHRfc3RhcnQgPQorCQkJCXNyY19lZmlfZm10XzY0LT5lZmlfZXh0ZW50c1tpXS5leHRfc3RhcnQ7CisJCQlkc3RfZWZpX2ZtdC0+ZWZpX2V4dGVudHNbaV0uZXh0X2xlbiA9CisJCQkJc3JjX2VmaV9mbXRfNjQtPmVmaV9leHRlbnRzW2ldLmV4dF9sZW47CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBFRlNDT1JSVVBURUQ7Cit9CisKKy8qCiAgKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgZWZkIGl0ZW0gY29kZSBiZWxvdyB0byByZWxlYXNlIHJlZmVyZW5jZXMgdG8KICAqIHRoZSBnaXZlbiBlZmkgaXRlbS4gIEVhY2ggZWZkIGNhbGxzIHRoaXMgd2l0aCB0aGUgbnVtYmVyIG9mCiAgKiBleHRlbnRzIHRoYXQgaXQgaGFzIGxvZ2dlZCwgYW5kIHdoZW4gdGhlIHN1bSBvZiB0aGVzZSByZWFjaGVzCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2V4dGZyZWVfaXRlbS5oIGIvZnMveGZzL3hmc19leHRmcmVlX2l0ZW0uaAppbmRleCA1YmY2ODE3Li4wZWE0NWVkIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2V4dGZyZWVfaXRlbS5oCisrKyBiL2ZzL3hmcy94ZnNfZXh0ZnJlZV9pdGVtLmgKQEAgLTI3LDYgKzI3LDI0IEBACiB9IHhmc19leHRlbnRfdDsKIAogLyoKKyAqIFNpbmNlIGFuIHhmc19leHRlbnRfdCBoYXMgdHlwZXMgKHN0YXJ0OjY0LCBsZW46IDMyKQorICogdGhlcmUgYXJlIGRpZmZlcmVudCBhbGlnbm1lbnRzIG9uIDMyIGJpdCBhbmQgNjQgYml0IGtlcm5lbHMuCisgKiBTbyB3ZSBwcm92aWRlIHRoZSBkaWZmZXJlbnQgdmFyaWFudHMgZm9yIHVzZSBieSBhCisgKiBjb252ZXJzaW9uIHJvdXRpbmUuCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeGZzX2V4dGVudF8zMiB7CisJeGZzX2Rmc2Jub190CWV4dF9zdGFydDsKKwl4ZnNfZXh0bGVuX3QJZXh0X2xlbjsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2V4dGVudF8zMl90OworCit0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzY0IHsKKwl4ZnNfZGZzYm5vX3QJZXh0X3N0YXJ0OworCXhmc19leHRsZW5fdAlleHRfbGVuOworCV9fdWludDMyX3QJZXh0X3BhZDsKK30geGZzX2V4dGVudF82NF90OworCisvKgogICogVGhpcyBpcyB0aGUgc3RydWN0dXJlIHVzZWQgdG8gbGF5IG91dCBhbiBlZmkgbG9nIGl0ZW0gaW4gdGhlCiAgKiBsb2cuICBUaGUgZWZpX2V4dGVudHMgZmllbGQgaXMgYSB2YXJpYWJsZSBzaXplIGFycmF5IHdob3NlCiAgKiBzaXplIGlzIGdpdmVuIGJ5IGVmaV9uZXh0ZW50cy4KQEAgLTM5LDYgKzU3LDIyIEBACiAJeGZzX2V4dGVudF90CQllZmlfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyB0byBmcmVlICovCiB9IHhmc19lZmlfbG9nX2Zvcm1hdF90OwogCit0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXRfMzIgeworCXVuc2lnbmVkIHNob3J0CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KKwl1bnNpZ25lZCBzaG9ydAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisJdWludAkJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKwlfX3VpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLworCXhmc19leHRlbnRfMzJfdAkJZWZpX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gZnJlZSAqLworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB4ZnNfZWZpX2xvZ19mb3JtYXRfMzJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeGZzX2VmaV9sb2dfZm9ybWF0XzY0IHsKKwl1bnNpZ25lZCBzaG9ydAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCisJdW5zaWduZWQgc2hvcnQJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworCXVpbnQJCQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCisJX191aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KKwl4ZnNfZXh0ZW50XzY0X3QJCWVmaV9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGZyZWUgKi8KK30geGZzX2VmaV9sb2dfZm9ybWF0XzY0X3Q7CisKIC8qCiAgKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgdXNlZCB0byBsYXkgb3V0IGFuIGVmZCBsb2cgaXRlbSBpbiB0aGUKICAqIGxvZy4gIFRoZSBlZmRfZXh0ZW50cyBhcnJheSBpcyBhIHZhcmlhYmxlIHNpemUgYXJyYXkgd2hvc2UKQEAgLTUyLDYgKzg2LDIyIEBACiAJeGZzX2V4dGVudF90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLwogfSB4ZnNfZWZkX2xvZ19mb3JtYXRfdDsKIAordHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0XzMyIHsKKwl1bnNpZ25lZCBzaG9ydAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCisJdW5zaWduZWQgc2hvcnQJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworCXVpbnQJCQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworCV9fdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisJeGZzX2V4dGVudF8zMl90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB4ZnNfZWZkX2xvZ19mb3JtYXRfMzJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0XzY0IHsKKwl1bnNpZ25lZCBzaG9ydAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCisJdW5zaWduZWQgc2hvcnQJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworCXVpbnQJCQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworCV9fdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisJeGZzX2V4dGVudF82NF90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLworfSB4ZnNfZWZkX2xvZ19mb3JtYXRfNjRfdDsKKwogCiAjaWZkZWYgX19LRVJORUxfXwogCkBAIC0xMDMsNyArMTUzLDggQEAKIHhmc19lZmlfbG9nX2l0ZW1fdAkqeGZzX2VmaV9pbml0KHN0cnVjdCB4ZnNfbW91bnQgKiwgdWludCk7CiB4ZnNfZWZkX2xvZ19pdGVtX3QJKnhmc19lZmRfaW5pdChzdHJ1Y3QgeGZzX21vdW50ICosIHhmc19lZmlfbG9nX2l0ZW1fdCAqLAogCQkJCSAgICAgIHVpbnQpOwotCitpbnQJCQl4ZnNfZWZpX2NvcHlfZm9ybWF0KHhmc19sb2dfaW92ZWNfdCAqYnVmLAorCQkJCQkgICAgeGZzX2VmaV9sb2dfZm9ybWF0X3QgKmRzdF9lZmlfZm10KTsKIHZvaWQJCQl4ZnNfZWZpX2l0ZW1fZnJlZSh4ZnNfZWZpX2xvZ19pdGVtX3QgKik7CiAKICNlbmRpZgkvKiBfX0tFUk5FTF9fICovCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2ZzLmggYi9mcy94ZnMveGZzX2ZzLmgKaW5kZXggMTQwMTBmMS4uMGYwYWQxNSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19mcy5oCisrKyBiL2ZzL3hmcy94ZnNfZnMuaApAQCAtNjcsMTQgKzY3LDE1IEBACiAjZGVmaW5lIFhGU19YRkxBR19OT1NZTUxJTktTCTB4MDAwMDA0MDAJLyogZGlzYWxsb3cgc3ltbGluayBjcmVhdGlvbiAqLwogI2RlZmluZSBYRlNfWEZMQUdfRVhUU0laRQkweDAwMDAwODAwCS8qIGV4dGVudCBzaXplIGFsbG9jYXRvciBoaW50ICovCiAjZGVmaW5lIFhGU19YRkxBR19FWFRTWklOSEVSSVQJMHgwMDAwMTAwMAkvKiBpbmhlcml0IGlub2RlIGV4dGVudCBzaXplICovCisjZGVmaW5lIFhGU19YRkxBR19OT0RFRlJBRwkweDAwMDAyMDAwICAJLyogZG8gbm90IGRlZnJhZ21lbnQgKi8KICNkZWZpbmUgWEZTX1hGTEFHX0hBU0FUVFIJMHg4MDAwMDAwMAkvKiBubyBESUZMQUcgZm9yIHRoaXMJKi8KIAogLyoKICAqIFN0cnVjdHVyZSBmb3IgWEZTX0lPQ19HRVRCTUFQLgogICogT24gaW5wdXQsIGZpbGwgaW4gYm12X29mZnNldCBhbmQgYm12X2xlbmd0aCBvZiB0aGUgZmlyc3Qgc3RydWN0dXJlCi0gKiB0byBpbmRpY2F0ZSB0aGUgYXJlYSBvZiBpbnRlcmVzdCBpbiB0aGUgZmlsZSwgYW5kIGJtdl9lbnRyeSB3aXRoIHRoZQotICogbnVtYmVyIG9mIGFycmF5IGVsZW1lbnRzIGdpdmVuLiAgVGhlIGZpcnN0IHN0cnVjdHVyZSBpcyB1cGRhdGVkIG9uCi0gKiByZXR1cm4gdG8gZ2l2ZSB0aGUgb2Zmc2V0IGFuZCBsZW5ndGggZm9yIHRoZSBuZXh0IGNhbGwuCisgKiB0byBpbmRpY2F0ZSB0aGUgYXJlYSBvZiBpbnRlcmVzdCBpbiB0aGUgZmlsZSwgYW5kIGJtdl9lbnRyaWVzIHdpdGgKKyAqIHRoZSBudW1iZXIgb2YgYXJyYXkgZWxlbWVudHMgZ2l2ZW4gYmFjay4gIFRoZSBmaXJzdCBzdHJ1Y3R1cmUgaXMKKyAqIHVwZGF0ZWQgb24gcmV0dXJuIHRvIGdpdmUgdGhlIG9mZnNldCBhbmQgbGVuZ3RoIGZvciB0aGUgbmV4dCBjYWxsLgogICovCiAjaWZuZGVmIEhBVkVfR0VUQk1BUAogc3RydWN0IGdldGJtYXAgewpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19mc29wcy5jIGIvZnMveGZzL3hmc19mc29wcy5jCmluZGV4IGRmYTM1MjcuLjA3NzYyOWIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZnNvcHMuYworKysgYi9mcy94ZnMveGZzX2Zzb3BzLmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNTQyLDE0ICs1NDAsMTMgQEAKIH0KIAogdm9pZAoteGZzX2ZzX2xvZ19kdW1teSh4ZnNfbW91bnRfdCAqbXApCit4ZnNfZnNfbG9nX2R1bW15KAorCXhmc19tb3VudF90CSptcCkKIHsKLQl4ZnNfdHJhbnNfdCAqdHA7Ci0JeGZzX2lub2RlX3QgKmlwOwotCisJeGZzX3RyYW5zX3QJKnRwOworCXhmc19pbm9kZV90CSppcDsKIAogCXRwID0gX3hmc190cmFuc19hbGxvYyhtcCwgWEZTX1RSQU5TX0RVTU1ZMSk7Ci0JYXRvbWljX2luYygmbXAtPm1fYWN0aXZlX3RyYW5zKTsKIAlpZiAoeGZzX3RyYW5zX3Jlc2VydmUodHAsIDAsIFhGU19JQ0hBTkdFX0xPR19SRVMobXApLCAwLCAwLCAwKSkgewogCQl4ZnNfdHJhbnNfY2FuY2VsKHRwLCAwKTsKIAkJcmV0dXJuOwpAQCAtNTc0LDIxICs1NzEsMjIgQEAKIHsKIAlzd2l0Y2ggKGluZmxhZ3MpIHsKIAljYXNlIFhGU19GU09QX0dPSU5HX0ZMQUdTX0RFRkFVTFQ6IHsKLQkJc3RydWN0IHZmcyAqdmZzcCA9IFhGU19NVE9WRlMobXApOworCQlzdHJ1Y3QgYmh2X3ZmcyAqdmZzcCA9IFhGU19NVE9WRlMobXApOwogCQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZnJlZXplX2JkZXYodmZzcC0+dmZzX3N1cGVyLT5zX2JkZXYpOwogCiAJCWlmIChzYiAmJiAhSVNfRVJSKHNiKSkgewotCQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfRk9SQ0VfVU1PVU5UKTsKKwkJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgU0hVVERPV05fRk9SQ0VfVU1PVU5UKTsKIAkJCXRoYXdfYmRldihzYi0+c19iZGV2LCBzYik7CiAJCX0KIAkKIAkJYnJlYWs7CiAJfQogCWNhc2UgWEZTX0ZTT1BfR09JTkdfRkxBR1NfTE9HRkxVU0g6Ci0JCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgWEZTX0ZPUkNFX1VNT1VOVCk7CisJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgU0hVVERPV05fRk9SQ0VfVU1PVU5UKTsKIAkJYnJlYWs7CiAJY2FzZSBYRlNfRlNPUF9HT0lOR19GTEFHU19OT0xPR0ZMVVNIOgotCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFhGU19GT1JDRV9VTU9VTlR8WEZTX0xPR19JT19FUlJPUik7CisJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwKKwkJCQlTSFVURE9XTl9GT1JDRV9VTU9VTlQgfCBTSFVURE9XTl9MT0dfSU9fRVJST1IpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gWEZTX0VSUk9SKEVJTlZBTCk7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lhbGxvYy5jIGIvZnMveGZzL3hmc19pYWxsb2MuYwppbmRleCBkZWRkYmQwLi4zMzE2NGE4IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lhbGxvYy5jCisrKyBiL2ZzL3hmcy94ZnNfaWFsbG9jLmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTE3NCw2ICsxMTcyLDkgQEAKIAlpZiAoYWdubyA+PSBtcC0+bV9zYi5zYl9hZ2NvdW50IHx8IGFnYm5vID49IG1wLT5tX3NiLnNiX2FnYmxvY2tzIHx8CiAJICAgIGlubyAhPSBYRlNfQUdJTk9fVE9fSU5PKG1wLCBhZ25vLCBhZ2lubykpIHsKICNpZmRlZiBERUJVRworCQkvKiBubyBkaWFnbm9zdGljcyBmb3IgYnVsa3N0YXQsIGlubyBjb21lcyBmcm9tIHVzZXJzcGFjZSAqLworCQlpZiAoZmxhZ3MgJiBYRlNfSU1BUF9CVUxLU1RBVCkKKwkJCXJldHVybiBYRlNfRVJST1IoRUlOVkFMKTsKIAkJaWYgKGFnbm8gPj0gbXAtPm1fc2Iuc2JfYWdjb3VudCkgewogCQkJeGZzX2ZzX2Ntbl9lcnIoQ0VfQUxFUlQsIG1wLAogCQkJCQkieGZzX2RpbG9jYXRlOiBhZ25vICglZCkgPj0gIgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pYWxsb2NfYnRyZWUuYyBiL2ZzL3hmcy94ZnNfaWFsbG9jX2J0cmVlLmMKaW5kZXggNjBjNjU2OC4uNjE2ZWVlYiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pYWxsb2NfYnRyZWUuYworKysgYi9mcy94ZnMveGZzX2lhbGxvY19idHJlZS5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaWdldC5jIGIvZnMveGZzL3hmc19pZ2V0LmMKaW5kZXggYjUzODU0My4uMDcyNGRmNyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pZ2V0LmMKKysrIGIvZnMveGZzL3hmc19pZ2V0LmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTg2LDcgKzE4NCw3IEBACiAgKi8KIFNUQVRJQyBpbnQKIHhmc19pZ2V0X2NvcmUoCi0Jdm5vZGVfdAkJKnZwLAorCWJodl92bm9kZV90CSp2cCwKIAl4ZnNfbW91bnRfdAkqbXAsCiAJeGZzX3RyYW5zX3QJKnRwLAogCXhmc19pbm9fdAlpbm8sCkBAIC0xOTgsNyArMTk2LDcgQEAKIAl4ZnNfaWhhc2hfdAkqaWg7CiAJeGZzX2lub2RlX3QJKmlwOwogCXhmc19pbm9kZV90CSppcTsKLQl2bm9kZV90CQkqaW5vZGVfdnA7CisJYmh2X3Zub2RlX3QJKmlub2RlX3ZwOwogCXVsb25nCQl2ZXJzaW9uOwogCWludAkJZXJyb3I7CiAJLyogUkVGRVJFTkNFRCAqLwpAQCAtNDY4LDcgKzQ2Niw3IEBACiAJICogSWYgd2UgaGF2ZSBhIHJlYWwgdHlwZSBmb3IgYW4gb24tZGlzayBpbm9kZSwgd2UgY2FuIHNldCBvcHMoJnVubG9jaykKIAkgKiBub3cuCSBJZiBpdCdzIGEgbmV3IGlub2RlIGJlaW5nIGNyZWF0ZWQsIHhmc19pYWxsb2Mgd2lsbCBoYW5kbGUgaXQuCiAJICovCi0JVkZTX0lOSVRfVk5PREUoWEZTX01UT1ZGUyhtcCksIHZwLCBYRlNfSVRPQkhWKGlwKSwgMSk7CisJYmh2X3Zmc19pbml0X3Zub2RlKFhGU19NVE9WRlMobXApLCB2cCwgWEZTX0lUT0JIVihpcCksIDEpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00ODksNyArNDg3LDcgQEAKIAl4ZnNfZGFkZHJfdAlibm8pCiB7CiAJc3RydWN0IGlub2RlCSppbm9kZTsKLQl2bm9kZV90CQkqdnAgPSBOVUxMOworCWJodl92bm9kZV90CSp2cCA9IE5VTEw7CiAJaW50CQllcnJvcjsKIAogCVhGU19TVEFUU19JTkMoeHNfaWdfYXR0ZW1wdHMpOwpAQCAtNTQzLDcgKzU0MSw3IEBACiB2b2lkCiB4ZnNfaW5vZGVfbG9ja19pbml0KAogCXhmc19pbm9kZV90CSppcCwKLQl2bm9kZV90CQkqdnApCisJYmh2X3Zub2RlX3QJKnZwKQogewogCW1ybG9ja19pbml0KCZpcC0+aV9sb2NrLCBNUkxPQ0tfQUxMT1dfRVFVQUxfUFJJfE1STE9DS19CQVJSSUVSLAogCQkgICAgICJ4ZnNpbm8iLCAobG9uZyl2cC0+dl9udW1iZXIpOwpAQCAtNjAzLDEyICs2MDEsMTAgQEAKIHhmc19pcHV0KHhmc19pbm9kZV90CSppcCwKIAkgdWludAkJbG9ja19mbGFncykKIHsKLQl2bm9kZV90CSp2cCA9IFhGU19JVE9WKGlwKTsKKwliaHZfdm5vZGVfdAkqdnAgPSBYRlNfSVRPVihpcCk7CiAKIAl2bl90cmFjZV9lbnRyeSh2cCwgInhmc19pcHV0IiwgKGluc3RfdCAqKV9fcmV0dXJuX2FkZHJlc3MpOwotCiAJeGZzX2l1bmxvY2soaXAsIGxvY2tfZmxhZ3MpOwotCiAJVk5fUkVMRSh2cCk7CiB9CiAKQEAgLTYxOSw3ICs2MTUsNyBAQAogeGZzX2lwdXRfbmV3KHhmc19pbm9kZV90CSppcCwKIAkgICAgIHVpbnQJCWxvY2tfZmxhZ3MpCiB7Ci0Jdm5vZGVfdAkJKnZwID0gWEZTX0lUT1YoaXApOworCWJodl92bm9kZV90CSp2cCA9IFhGU19JVE9WKGlwKTsKIAlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gdm5fdG9faW5vZGUodnApOwogCiAJdm5fdHJhY2VfZW50cnkodnAsICJ4ZnNfaXB1dF9uZXciLCAoaW5zdF90ICopX19yZXR1cm5fYWRkcmVzcyk7CkBAIC02NDUsNyArNjQxLDcgQEAKIHZvaWQKIHhmc19pcmVjbGFpbSh4ZnNfaW5vZGVfdCAqaXApCiB7Ci0Jdm5vZGVfdAkJKnZwOworCWJodl92bm9kZV90CSp2cDsKIAogCS8qCiAJICogUmVtb3ZlIGZyb20gb2xkIGhhc2ggbGlzdCBhbmQgbW91bnQgbGlzdC4KQEAgLTEwMzMsNiArMTAyOSw2IEBACiB2b2lkCiB4ZnNfaWZ1bmxvY2soeGZzX2lub2RlX3QgKmlwKQogewotCUFTU0VSVCh2YWx1c2VtYSgmKGlwLT5pX2Zsb2NrKSkgPD0gMCk7CisJQVNTRVJUKGlzc2VtYWxvY2tlZCgmKGlwLT5pX2Zsb2NrKSkpOwogCXZzZW1hKCYoaXAtPmlfZmxvY2spKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaW5vZGUuYyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwppbmRleCA5NGI2MGRkMC4uNWZhMGFkYiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pbm9kZS5jCisrKyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMywyMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4KICAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjYsMTQgKzI2LDEyIEBACiAjaW5jbHVkZSAieGZzX3RyYW5zX3ByaXYuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTI1NiwxMyArMjU0LDExIEBACiAJeGZzX2RhZGRyX3QJYm5vLAogCXVpbnQJCWltYXBfZmxhZ3MpCiB7CisJeGZzX2ltYXBfdAlpbWFwOwogCXhmc19idWZfdAkqYnA7CiAJaW50CQllcnJvcjsKLQl4ZnNfaW1hcF90CWltYXA7Ci0jaWZkZWYgX19LRVJORUxfXwogCWludAkJaTsKIAlpbnQJCW5pOwotI2VuZGlmCiAKIAlpZiAoaXAtPmlfYmxrbm8gPT0gKHhmc19kYWRkcl90KTApIHsKIAkJLyoKQEAgLTMxOSw3ICszMTUsNiBAQAogCSAqLwogCWVycm9yID0geGZzX3RyYW5zX3JlYWRfYnVmKG1wLCB0cCwgbXAtPm1fZGRldl90YXJncCwgaW1hcC5pbV9ibGtubywKIAkJCQkgICAoaW50KWltYXAuaW1fbGVuLCBYRlNfQlVGX0xPQ0ssICZicCk7Ci0KIAlpZiAoZXJyb3IpIHsKICNpZmRlZiBERUJVRwogCQl4ZnNfZnNfY21uX2VycihDRV9BTEVSVCwgbXAsICJ4ZnNfaXRvYnA6ICIKQEAgLTMzMCwxNyArMzI1LDIxIEBACiAjZW5kaWYgLyogREVCVUcgKi8KIAkJcmV0dXJuIGVycm9yOwogCX0KLSNpZmRlZiBfX0tFUk5FTF9fCisKIAkvKgogCSAqIFZhbGlkYXRlIHRoZSBtYWdpYyBudW1iZXIgYW5kIHZlcnNpb24gb2YgZXZlcnkgaW5vZGUgaW4gdGhlIGJ1ZmZlcgogCSAqIChpZiBERUJVRyBrZXJuZWwpIG9yIHRoZSBmaXJzdCBpbm9kZSBpbiB0aGUgYnVmZmVyLCBvdGhlcndpc2UuCisJICogTm8gdmFsaWRhdGlvbiBpcyBkb25lIGhlcmUgaW4gdXNlcnNwYWNlICh4ZnNfcmVwYWlyKS4KIAkgKi8KLSNpZmRlZiBERUJVRworI2lmICFkZWZpbmVkKF9fS0VSTkVMX18pCisJbmkgPSAwOworI2VsaWYgZGVmaW5lZChERUJVRykKIAluaSA9IChpbWFwX2ZsYWdzICYgWEZTX0lNQVBfQlVMS1NUQVQpID8gMCA6CiAJCShCQlRPQihpbWFwLmltX2xlbikgPj4gbXAtPm1fc2Iuc2JfaW5vZGVsb2cpOwotI2Vsc2UKKyNlbHNlCS8qIHVzdWFsIGNhc2UgKi8KIAluaSA9IChpbWFwX2ZsYWdzICYgWEZTX0lNQVBfQlVMS1NUQVQpID8gMCA6IDE7CiAjZW5kaWYKKwogCWZvciAoaSA9IDA7IGkgPCBuaTsgaSsrKSB7CiAJCWludAkJZGlfb2s7CiAJCXhmc19kaW5vZGVfdAkqZGlwOwpAQCAtMzUyLDggKzM1MSwxMSBAQAogCQlpZiAodW5saWtlbHkoWEZTX1RFU1RfRVJST1IoIWRpX29rLCBtcCwgWEZTX0VSUlRBR19JVE9CUF9JTk9UT0JQLAogCQkJCSBYRlNfUkFORE9NX0lUT0JQX0lOT1RPQlApKSkgewogI2lmZGVmIERFQlVHCi0JCQlwcmRldigiYmFkIGlub2RlIG1hZ2ljL3ZzbiBkYWRkciAlbGxkICMlZCAobWFnaWM9JXgpIiwKLQkJCQltcC0+bV9kZGV2X3RhcmdwLAorCQkJaWYgKCEoaW1hcF9mbGFncyAmIFhGU19JTUFQX0JVTEtTVEFUKSkKKwkJCQljbW5fZXJyKENFX0FMRVJULAorCQkJCQkiRGV2aWNlICVzIC0gYmFkIGlub2RlIG1hZ2ljL3ZzbiAiCisJCQkJCSJkYWRkciAlbGxkICMlZCAobWFnaWM9JXgpIiwKKwkJCQlYRlNfQlVGVEFSR19OQU1FKG1wLT5tX2RkZXZfdGFyZ3ApLAogCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpaW1hcC5pbV9ibGtubywgaSwKIAkJCQlJTlRfR0VUKGRpcC0+ZGlfY29yZS5kaV9tYWdpYywgQVJDSF9DT05WRVJUKSk7CiAjZW5kaWYKQEAgLTM2Myw3ICszNjUsNiBAQAogCQkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOwogCQl9CiAJfQotI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KIAogCXhmc19pbm9icF9jaGVjayhtcCwgYnApOwogCkBAIC03ODIsNyArNzgzLDYgQEAKIAogU1RBVElDIHVpbnQKIF94ZnNfZGljMnhmbGFncygKLQl4ZnNfZGlub2RlX2NvcmVfdAkqZGljLAogCV9fdWludDE2X3QJCWRpX2ZsYWdzKQogewogCXVpbnQJCQlmbGFncyA9IDA7CkBAIC04MTIsNiArODEyLDggQEAKIAkJCWZsYWdzIHw9IFhGU19YRkxBR19FWFRTSVpFOwogCQlpZiAoZGlfZmxhZ3MgJiBYRlNfRElGTEFHX0VYVFNaSU5IRVJJVCkKIAkJCWZsYWdzIHw9IFhGU19YRkxBR19FWFRTWklOSEVSSVQ7CisJCWlmIChkaV9mbGFncyAmIFhGU19ESUZMQUdfTk9ERUZSQUcpCisJCQlmbGFncyB8PSBYRlNfWEZMQUdfTk9ERUZSQUc7CiAJfQogCiAJcmV0dXJuIGZsYWdzOwpAQCAtODIzLDE2ICs4MjUsMTYgQEAKIHsKIAl4ZnNfZGlub2RlX2NvcmVfdAkqZGljID0gJmlwLT5pX2Q7CiAKLQlyZXR1cm4gX3hmc19kaWMyeGZsYWdzKGRpYywgZGljLT5kaV9mbGFncykgfAotCQkoWEZTX0NGT1JLX1EoZGljKSA/IFhGU19YRkxBR19IQVNBVFRSIDogMCk7CisJcmV0dXJuIF94ZnNfZGljMnhmbGFncyhkaWMtPmRpX2ZsYWdzKSB8CisJCQkJKFhGU19DRk9SS19RKGRpYykgPyBYRlNfWEZMQUdfSEFTQVRUUiA6IDApOwogfQogCiB1aW50CiB4ZnNfZGljMnhmbGFncygKIAl4ZnNfZGlub2RlX2NvcmVfdAkqZGljKQogewotCXJldHVybiBfeGZzX2RpYzJ4ZmxhZ3MoZGljLCBJTlRfR0VUKGRpYy0+ZGlfZmxhZ3MsIEFSQ0hfQ09OVkVSVCkpIHwKLQkJKFhGU19DRk9SS19RX0RJU0soZGljKSA/IFhGU19YRkxBR19IQVNBVFRSIDogMCk7CisJcmV0dXJuIF94ZnNfZGljMnhmbGFncyhJTlRfR0VUKGRpYy0+ZGlfZmxhZ3MsIEFSQ0hfQ09OVkVSVCkpIHwKKwkJCQkoWEZTX0NGT1JLX1FfRElTSyhkaWMpID8gWEZTX1hGTEFHX0hBU0FUVFIgOiAwKTsKIH0KIAogLyoKQEAgLTEwODMsNyArMTA4NSw3IEBACiB7CiAJeGZzX2lub190CWlubzsKIAl4ZnNfaW5vZGVfdAkqaXA7Ci0Jdm5vZGVfdAkJKnZwOworCWJodl92bm9kZV90CSp2cDsKIAl1aW50CQlmbGFnczsKIAlpbnQJCWVycm9yOwogCkBAIC0xMjIxLDYgKzEyMjMsOSBAQAogCQkJCWRpX2ZsYWdzIHw9IFhGU19ESUZMQUdfTk9TWU1MSU5LUzsKIAkJCWlmIChwaXAtPmlfZC5kaV9mbGFncyAmIFhGU19ESUZMQUdfUFJPSklOSEVSSVQpCiAJCQkJZGlfZmxhZ3MgfD0gWEZTX0RJRkxBR19QUk9KSU5IRVJJVDsKKwkJCWlmICgocGlwLT5pX2QuZGlfZmxhZ3MgJiBYRlNfRElGTEFHX05PREVGUkFHKSAmJgorCQkJICAgIHhmc19pbmhlcml0X25vZGVmcmFnKQorCQkJCWRpX2ZsYWdzIHw9IFhGU19ESUZMQUdfTk9ERUZSQUc7CiAJCQlpcC0+aV9kLmRpX2ZsYWdzIHw9IGRpX2ZsYWdzOwogCQl9CiAJCS8qIEZBTExUSFJPVUdIICovCkBAIC0xMjQ0LDggKzEyNDksOCBAQAogCSAqLwogCXhmc190cmFuc19sb2dfaW5vZGUodHAsIGlwLCBmbGFncyk7CiAKLQkvKiBub3cgdGhhdCB3ZSBoYXZlIGFuIGlfbW9kZSAgd2UgY2FuIHNldCBMaW51eCBpbm9kZSBvcHMgKCYgdW5sb2NrKSAqLwotCVZGU19JTklUX1ZOT0RFKFhGU19NVE9WRlModHAtPnRfbW91bnRwKSwgdnAsIFhGU19JVE9CSFYoaXApLCAxKTsKKwkvKiBub3cgdGhhdCB3ZSBoYXZlIGFuIGlfbW9kZSB3ZSBjYW4gc2V0dXAgaW5vZGUgb3BzIGFuZCB1bmxvY2sgKi8KKwliaHZfdmZzX2luaXRfdm5vZGUoWEZTX01UT1ZGUyh0cC0+dF9tb3VudHApLCB2cCwgWEZTX0lUT0JIVihpcCksIDEpOwogCiAJKmlwcCA9IGlwOwogCXJldHVybiAwOwpAQCAtMTI4NSw3ICsxMjkwLDcgQEAKIAkJCQkgICAgICAgKHhmc191ZnNpemVfdClYRlNfTUFYSU9GRlNFVChtcCkpIC0KIAkJCSAgbWFwX2ZpcnN0KSwKIAkJCSBYRlNfQk1BUElfRU5USVJFLCBOVUxMLCAwLCBpbWFwcywgJm5pbWFwcywKLQkJCSBOVUxMKSkKKwkJCSBOVUxMLCBOVUxMKSkKIAkgICAgcmV0dXJuOwogCUFTU0VSVChuaW1hcHMgPT0gMSk7CiAJQVNTRVJUKGltYXBzWzBdLmJyX3N0YXJ0YmxvY2sgPT0gSE9MRVNUQVJUQkxPQ0spOwpAQCAtMTQyMSw3ICsxNDI2LDcgQEAKIAl4ZnNfZnNpemVfdAlsYXN0X2J5dGU7CiAJeGZzX29mZl90CXRvc3Nfc3RhcnQ7CiAJeGZzX21vdW50X3QJKm1wOwotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAlBU1NFUlQoaXNtcmxvY2tlZCgmaXAtPmlfaW9sb2NrLCBNUl9VUERBVEUpICE9IDApOwogCUFTU0VSVCgobmV3X3NpemUgPT0gMCkgfHwgKG5ld19zaXplIDw9IGlwLT5pX2QuZGlfc2l6ZSkpOwpAQCAtMTQzNCw5ICsxNDM5LDkgQEAKIAl2bl9pb3dhaXQodnApOyAgLyogd2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2YgYW55IHBlbmRpbmcgRElPcyAqLwogCQogCS8qCi0JICogQ2FsbCBWT1BfVE9TU19QQUdFUygpIG9yIFZPUF9GTFVTSElOVkFMX1BBR0VTKCkgdG8gZ2V0IHJpZCBvZiBwYWdlcyBhbmQgYnVmZmVycworCSAqIENhbGwgdG9zc19wYWdlcyBvciBmbHVzaGludmFsX3BhZ2VzIHRvIGdldCByaWQgb2YgcGFnZXMKIAkgKiBvdmVybGFwcGluZyB0aGUgcmVnaW9uIGJlaW5nIHJlbW92ZWQuICBXZSBoYXZlIHRvIHVzZQotCSAqIHRoZSBsZXNzIGVmZmljaWVudCBWT1BfRkxVU0hJTlZBTF9QQUdFUygpIGluIHRoZSBjYXNlIHRoYXQgdGhlCisJICogdGhlIGxlc3MgZWZmaWNpZW50IGZsdXNoaW52YWxfcGFnZXMgaW4gdGhlIGNhc2UgdGhhdCB0aGUKIAkgKiBjYWxsZXIgbWF5IG5vdCBiZSBhYmxlIHRvIGZpbmlzaCB0aGUgdHJ1bmNhdGUgd2l0aG91dAogCSAqIGRyb3BwaW5nIHRoZSBpbm9kZSdzIEkvTyBsb2NrLiAgTWFrZSBzdXJlCiAJICogdG8gY2F0Y2ggYW55IHBhZ2VzIGJyb3VnaHQgaW4gYnkgYnVmZmVycyBvdmVybGFwcGluZwpAQCAtMTQ0NSwxMCArMTQ1MCwxMCBAQAogCSAqIHNvIHRoYXQgd2UgZG9uJ3QgdG9zcyB0aGluZ3Mgb24gdGhlIHNhbWUgYmxvY2sgYXMKIAkgKiBuZXdfc2l6ZSBidXQgYmVmb3JlIGl0LgogCSAqCi0JICogQmVmb3JlIGNhbGxpbmcgVk9QX1RPU1NfUEFHRVMoKSBvciBWT1BfRkxVU0hJTlZBTF9QQUdFUygpLCBtYWtlIHN1cmUgdG8KKwkgKiBCZWZvcmUgY2FsbGluZyB0b3NzX3BhZ2Ugb3IgZmx1c2hpbnZhbF9wYWdlcywgbWFrZSBzdXJlIHRvCiAJICogY2FsbCByZW1hcGYoKSBvdmVyIHRoZSBzYW1lIHJlZ2lvbiBpZiB0aGUgZmlsZSBpcyBtYXBwZWQuCiAJICogVGhpcyBmcmVlcyB1cCBtYXBwZWQgZmlsZSByZWZlcmVuY2VzIHRvIHRoZSBwYWdlcyBpbiB0aGUKLQkgKiBnaXZlbiByYW5nZSBhbmQgZm9yIHRoZSBWT1BfRkxVU0hJTlZBTF9QQUdFUygpIGNhc2UgaXQgZW5zdXJlcworCSAqIGdpdmVuIHJhbmdlIGFuZCBmb3IgdGhlIGZsdXNoaW52YWxfcGFnZXMgY2FzZSBpdCBlbnN1cmVzCiAJICogdGhhdCB3ZSBnZXQgdGhlIGxhdGVzdCBtYXBwZWQgY2hhbmdlcyBmbHVzaGVkIG91dC4KIAkgKi8KIAl0b3NzX3N0YXJ0ID0gWEZTX0JfVE9fRlNCKG1wLCAoeGZzX3Vmc2l6ZV90KW5ld19zaXplKTsKQEAgLTE0NjYsOSArMTQ3MSw5IEBACiAJCQkgbGFzdF9ieXRlKTsKIAlpZiAobGFzdF9ieXRlID4gdG9zc19zdGFydCkgewogCQlpZiAoZmxhZ3MgJiBYRlNfSVRSVU5DX0RFRklOSVRFKSB7Ci0JCQlWT1BfVE9TU19QQUdFUyh2cCwgdG9zc19zdGFydCwgLTEsIEZJX1JFTUFQRl9MT0NLRUQpOworCQkJYmh2X3ZvcF90b3NzX3BhZ2VzKHZwLCB0b3NzX3N0YXJ0LCAtMSwgRklfUkVNQVBGX0xPQ0tFRCk7CiAJCX0gZWxzZSB7Ci0JCQlWT1BfRkxVU0hJTlZBTF9QQUdFUyh2cCwgdG9zc19zdGFydCwgLTEsIEZJX1JFTUFQRl9MT0NLRUQpOworCQkJYmh2X3ZvcF9mbHVzaGludmFsX3BhZ2VzKHZwLCB0b3NzX3N0YXJ0LCAtMSwgRklfUkVNQVBGX0xPQ0tFRCk7CiAJCX0KIAl9CiAKQEAgLTE2NjYsMTIgKzE2NzEsMTMgQEAKIAkJICogcnVucy4KIAkJICovCiAJCVhGU19CTUFQX0lOSVQoJmZyZWVfbGlzdCwgJmZpcnN0X2Jsb2NrKTsKLQkJZXJyb3IgPSB4ZnNfYnVubWFwaShudHAsIGlwLCBmaXJzdF91bm1hcF9ibG9jaywKLQkJCQkgICAgdW5tYXBfbGVuLAorCQllcnJvciA9IFhGU19CVU5NQVBJKG1wLCBudHAsICZpcC0+aV9pb2NvcmUsCisJCQkJICAgIGZpcnN0X3VubWFwX2Jsb2NrLCB1bm1hcF9sZW4sCiAJCQkJICAgIFhGU19CTUFQSV9BRkxBRyhmb3JrKSB8CiAJCQkJICAgICAgKHN5bmMgPyAwIDogWEZTX0JNQVBJX0FTWU5DKSwKIAkJCQkgICAgWEZTX0lUUlVOQ19NQVhfRVhURU5UUywKLQkJCQkgICAgJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCAmZG9uZSk7CisJCQkJICAgICZmaXJzdF9ibG9jaywgJmZyZWVfbGlzdCwKKwkJCQkgICAgTlVMTCwgJmRvbmUpOwogCQlpZiAoZXJyb3IpIHsKIAkJCS8qCiAJCQkgKiBJZiB0aGUgYnVubWFwaSBjYWxsIGVuY291bnRlcnMgYW4gZXJyb3IsCkBAIC0yNzQ1LDEzICsyNzUxLDE0IEBACiAJCSAqIHRoZSBpbm9kZSB0byBiZWNvbWUgdW5waW5uZWQuCiAJCSAqLwogCQlpZiAoIShpcC0+aV9mbGFncyAmIChYRlNfSVJFQ0xBSU18WEZTX0lSRUNMQUlNQUJMRSkpKSB7Ci0JCQl2bm9kZV90CSp2cCA9IFhGU19JVE9WX05VTEwoaXApOworCQkJYmh2X3Zub2RlX3QJKnZwID0gWEZTX0lUT1ZfTlVMTChpcCk7CiAKIAkJCS8qIG1ha2Ugc3luYyBjb21lIGJhY2sgYW5kIGZsdXNoIHRoaXMgaW5vZGUgKi8KIAkJCWlmICh2cCkgewogCQkJCXN0cnVjdCBpbm9kZQkqaW5vZGUgPSB2bl90b19pbm9kZSh2cCk7CiAKLQkJCQlpZiAoIShpbm9kZS0+aV9zdGF0ZSAmIElfTkVXKSkKKwkJCQlpZiAoIShpbm9kZS0+aV9zdGF0ZSAmCisJCQkJCQkoSV9ORVd8SV9GUkVFSU5HfElfQ0xFQVIpKSkKIAkJCQkJbWFya19pbm9kZV9kaXJ0eV9zeW5jKGlub2RlKTsKIAkJCX0KIAkJfQpAQCAtMjkxNiwxMyArMjkyMyw2IEBACiAJCQlBU1NFUlQoaWZwLT5pZl9ieXRlcyA8PSBYRlNfSUZPUktfU0laRShpcCwgd2hpY2hmb3JrKSk7CiAJCQltZW1jcHkoY3AsIGlmcC0+aWZfdTEuaWZfZGF0YSwgaWZwLT5pZl9ieXRlcyk7CiAJCX0KLQkJaWYgKHdoaWNoZm9yayA9PSBYRlNfREFUQV9GT1JLKSB7Ci0JCQlpZiAodW5saWtlbHkoWEZTX0RJUl9TSE9SVEZPUk1fVkFMSURBVEVfT05ESVNLKG1wLCBkaXApKSkgewotCQkJCVhGU19FUlJPUl9SRVBPUlQoInhmc19pZmx1c2hfZm9yayIsCi0JCQkJCQkgWEZTX0VSUkxFVkVMX0xPVywgbXApOwotCQkJCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKLQkJCX0KLQkJfQogCQlicmVhazsKIAogCWNhc2UgWEZTX0RJTk9ERV9GTVRfRVhURU5UUzoKQEAgLTMwMDYsNyArMzAwNiw3IEBACiAJWEZTX1NUQVRTX0lOQyh4c19pZmx1c2hfY291bnQpOwogCiAJQVNTRVJUKGlzbXJsb2NrZWQoJmlwLT5pX2xvY2ssIE1SX1VQREFURXxNUl9BQ0NFU1MpKTsKLQlBU1NFUlQodmFsdXNlbWEoJmlwLT5pX2Zsb2NrKSA8PSAwKTsKKwlBU1NFUlQoaXNzZW1hbG9ja2VkKCYoaXAtPmlfZmxvY2spKSk7CiAJQVNTRVJUKGlwLT5pX2QuZGlfZm9ybWF0ICE9IFhGU19ESU5PREVfRk1UX0JUUkVFIHx8CiAJICAgICAgIGlwLT5pX2QuZGlfbmV4dGVudHMgPiBpcC0+aV9kZi5pZl9leHRfbWF4KTsKIApAQCAtMzE5OSw3ICszMTk5LDcgQEAKIAogY29ycnVwdF9vdXQ6CiAJeGZzX2J1Zl9yZWxzZShicCk7Ci0JeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfQ09SUlVQVF9JTkNPUkUpOworCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgU0hVVERPV05fQ09SUlVQVF9JTkNPUkUpOwogCXhmc19pZmx1c2hfYWJvcnQoaXApOwogCS8qCiAJICogVW5sb2NrcyB0aGUgZmx1c2ggbG9jawpAQCAtMzIyMSw3ICszMjIxLDcgQEAKIAkJeGZzX2J1Zl9yZWxzZShicCk7CiAJfQogCi0JeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfQ09SUlVQVF9JTkNPUkUpOworCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgU0hVVERPV05fQ09SUlVQVF9JTkNPUkUpOwogCiAJaWYoIWJ1Zndhc2RlbHdyaSkgIHsKIAkJLyoKQEAgLTMyNjQsNyArMzI2NCw3IEBACiAJU1BMREVDTChzKTsKIAogCUFTU0VSVChpc21ybG9ja2VkKCZpcC0+aV9sb2NrLCBNUl9VUERBVEV8TVJfQUNDRVNTKSk7Ci0JQVNTRVJUKHZhbHVzZW1hKCZpcC0+aV9mbG9jaykgPD0gMCk7CisJQVNTRVJUKGlzc2VtYWxvY2tlZCgmKGlwLT5pX2Zsb2NrKSkpOwogCUFTU0VSVChpcC0+aV9kLmRpX2Zvcm1hdCAhPSBYRlNfRElOT0RFX0ZNVF9CVFJFRSB8fAogCSAgICAgICBpcC0+aV9kLmRpX25leHRlbnRzID4gaXAtPmlfZGYuaWZfZXh0X21heCk7CiAKQEAgLTM1MDQsNyArMzUwNCw3IEBACiAJeGZzX21vdW50X3QJKm1wKQogewogCXhmc19pbm9kZV90CSppcDsKLQl2bm9kZV90CQkqdnA7CisJYmh2X3Zub2RlX3QJKnZwOwogCiAgYWdhaW46CiAJWEZTX01PVU5UX0lMT0NLKG1wKTsKQEAgLTQxODAsNyArNDE4MCw3IEBACiAJICovCiAJbWVtY3B5KGlmcC0+aWZfdTIuaWZfaW5saW5lX2V4dCwgaWZwLT5pZl91MS5pZl9leHRlbnRzLAogCQluZXh0ZW50cyAqIHNpemVvZih4ZnNfYm1idF9yZWNfdCkpOwotCWttZW1fZnJlZShpZnAtPmlmX3UxLmlmX2V4dGVudHMsIEtNX1NMRUVQKTsKKwlrbWVtX2ZyZWUoaWZwLT5pZl91MS5pZl9leHRlbnRzLCBpZnAtPmlmX3JlYWxfYnl0ZXMpOwogCWlmcC0+aWZfdTEuaWZfZXh0ZW50cyA9IGlmcC0+aWZfdTIuaWZfaW5saW5lX2V4dDsKIAlpZnAtPmlmX3JlYWxfYnl0ZXMgPSAwOwogfQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZS5oIGIvZnMveGZzL3hmc19pbm9kZS5oCmluZGV4IDNiNTQ0ZGIuLmQxMGI3NmUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuaAorKysgYi9mcy94ZnMveGZzX2lub2RlLmgKQEAgLTEwMiw5ICsxMDIsOSBAQAogCiAjaWZkZWYgX19LRVJORUxfXwogc3RydWN0IGJodl9kZXNjOworc3RydWN0IGJodl92bm9kZTsKIHN0cnVjdCBjcmVkOwogc3RydWN0IGt0cmFjZTsKLXN0cnVjdCB2bm9kZTsKIHN0cnVjdCB4ZnNfYnVmOwogc3RydWN0IHhmc19ibWFwX2ZyZWU7CiBzdHJ1Y3QgeGZzX2JtYnRfaXJlYzsKQEAgLTQwMCw3ICs0MDAsNyBAQAogdm9pZAkJeGZzX2NoYXNoX2ZyZWUoc3RydWN0IHhmc19tb3VudCAqKTsKIHhmc19pbm9kZV90CSp4ZnNfaW5vZGVfaW5jb3JlKHN0cnVjdCB4ZnNfbW91bnQgKiwgeGZzX2lub190LAogCQkJCSAgc3RydWN0IHhmc190cmFucyAqKTsKLXZvaWQgICAgICAgICAgICB4ZnNfaW5vZGVfbG9ja19pbml0KHhmc19pbm9kZV90ICosIHN0cnVjdCB2bm9kZSAqKTsKK3ZvaWQgICAgICAgICAgICB4ZnNfaW5vZGVfbG9ja19pbml0KHhmc19pbm9kZV90ICosIHN0cnVjdCBiaHZfdm5vZGUgKik7CiBpbnQJCXhmc19pZ2V0KHN0cnVjdCB4ZnNfbW91bnQgKiwgc3RydWN0IHhmc190cmFucyAqLCB4ZnNfaW5vX3QsCiAJCQkgdWludCwgdWludCwgeGZzX2lub2RlX3QgKiosIHhmc19kYWRkcl90KTsKIHZvaWQJCXhmc19pcHV0KHhmc19pbm9kZV90ICosIHVpbnQpOwpAQCAtNDYxLDcgKzQ2MSw3IEBACiB4ZnNfZnNpemVfdAl4ZnNfZmlsZV9sYXN0X2J5dGUoeGZzX2lub2RlX3QgKik7CiB2b2lkCQl4ZnNfbG9ja19pbm9kZXMoeGZzX2lub2RlX3QgKiosIGludCwgaW50LCB1aW50KTsKIAoteGZzX2lub2RlX3QJKnhmc192dG9pKHN0cnVjdCB2bm9kZSAqdnApOworeGZzX2lub2RlX3QJKnhmc192dG9pKHN0cnVjdCBiaHZfdm5vZGUgKnZwKTsKIAogdm9pZAkJeGZzX3N5bmNocm9uaXplX2F0aW1lKHhmc19pbm9kZV90ICopOwogCkBAIC01MDksNyArNTA5LDYgQEAKIGV4dGVybiBzdHJ1Y3Qga21lbV96b25lCSp4ZnNfaWZvcmtfem9uZTsKIGV4dGVybiBzdHJ1Y3Qga21lbV96b25lCSp4ZnNfaW5vZGVfem9uZTsKIGV4dGVybiBzdHJ1Y3Qga21lbV96b25lCSp4ZnNfaWxpX3pvbmU7Ci1leHRlcm4gc3RydWN0IHZub2Rlb3BzCXhmc192bm9kZW9wczsKIAogI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KIApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZV9pdGVtLmMgYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYwppbmRleCA3NDk3YTQ4Li5mOGU4MGQ4IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYworKysgYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uYwpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgInhmc19idWZfaXRlbS5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgpAQCAtMzMsNyArMzIsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNzk0LDcgKzc5Miw3IEBACiAJICogaW5vZGUgZmx1c2ggY29tcGxldGVkIGFuZCB0aGUgaW5vZGUgd2FzIHRha2VuIG9mZiB0aGUgQUlMLgogCSAqIFNvLCBqdXN0IGdldCBvdXQuCiAJICovCi0JaWYgKCh2YWx1c2VtYSgmKGlwLT5pX2Zsb2NrKSkgPiAwKSAgfHwKKwlpZiAoIWlzc2VtYWxvY2tlZCgmKGlwLT5pX2Zsb2NrKSkgfHwKIAkgICAgKChpaXAtPmlsaV9pdGVtLmxpX2ZsYWdzICYgWEZTX0xJX0lOX0FJTCkgPT0gMCkpIHsKIAkJaWlwLT5pbGlfcHVzaGJ1Zl9mbGFnID0gMDsKIAkJeGZzX2l1bmxvY2soaXAsIFhGU19JTE9DS19TSEFSRUQpOwpAQCAtODE2LDcgKzgxNCw3IEBACiAJCQkgKiBJZiBub3QsIHdlIGNhbiBmbHVzaCBpdCBhc3luYy4KIAkJCSAqLwogCQkJZG9wdXNoID0gKChpaXAtPmlsaV9pdGVtLmxpX2ZsYWdzICYgWEZTX0xJX0lOX0FJTCkgJiYKLQkJCQkgICh2YWx1c2VtYSgmKGlwLT5pX2Zsb2NrKSkgPD0gMCkpOworCQkJCSAgaXNzZW1hbG9ja2VkKCYoaXAtPmlfZmxvY2spKSk7CiAJCQlpaXAtPmlsaV9wdXNoYnVmX2ZsYWcgPSAwOwogCQkJeGZzX2l1bmxvY2soaXAsIFhGU19JTE9DS19TSEFSRUQpOwogCQkJeGZzX2J1ZnRyYWNlKCJJTk9ERSBJVEVNIFBVU0giLCBicCk7CkBAIC04NjQsNyArODYyLDcgQEAKIAlpcCA9IGlpcC0+aWxpX2lub2RlOwogCiAJQVNTRVJUKGlzbXJsb2NrZWQoJihpcC0+aV9sb2NrKSwgTVJfQUNDRVNTKSk7Ci0JQVNTRVJUKHZhbHVzZW1hKCYoaXAtPmlfZmxvY2spKSA8PSAwKTsKKwlBU1NFUlQoaXNzZW1hbG9ja2VkKCYoaXAtPmlfZmxvY2spKSk7CiAJLyoKIAkgKiBTaW5jZSB3ZSB3ZXJlIGFibGUgdG8gbG9jayB0aGUgaW5vZGUncyBmbHVzaCBsb2NrIGFuZAogCSAqIHdlIGZvdW5kIGl0IG9uIHRoZSBBSUwsIHRoZSBpbm9kZSBtdXN0IGJlIGRpcnR5LiAgVGhpcwpAQCAtMTA4NCwzICsxMDgyLDUyIEBACiB7CiAJeGZzX2lmbHVzaF9hYm9ydChpaXAtPmlsaV9pbm9kZSk7CiB9CisKKy8qCisgKiBjb252ZXJ0IGFuIHhmc19pbm9kZV9sb2dfZm9ybWF0IHN0cnVjdCBmcm9tIGVpdGhlciAzMiBvciA2NCBiaXQgdmVyc2lvbnMKKyAqICh3aGljaCBjYW4gaGF2ZSBkaWZmZXJlbnQgZmllbGQgYWxpZ25tZW50cykgdG8gdGhlIG5hdGl2ZSB2ZXJzaW9uCisgKi8KK2ludAoreGZzX2lub2RlX2l0ZW1fZm9ybWF0X2NvbnZlcnQoCisJeGZzX2xvZ19pb3ZlY190CQkqYnVmLAorCXhmc19pbm9kZV9sb2dfZm9ybWF0X3QJKmluX2YpCit7CisJaWYgKGJ1Zi0+aV9sZW4gPT0gc2l6ZW9mKHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyX3QpKSB7CisJCXhmc19pbm9kZV9sb2dfZm9ybWF0XzMyX3QgKmluX2YzMjsKKworCQlpbl9mMzIgPSAoeGZzX2lub2RlX2xvZ19mb3JtYXRfMzJfdCAqKWJ1Zi0+aV9hZGRyOworCQlpbl9mLT5pbGZfdHlwZSA9IGluX2YzMi0+aWxmX3R5cGU7CisJCWluX2YtPmlsZl9zaXplID0gaW5fZjMyLT5pbGZfc2l6ZTsKKwkJaW5fZi0+aWxmX2ZpZWxkcyA9IGluX2YzMi0+aWxmX2ZpZWxkczsKKwkJaW5fZi0+aWxmX2FzaXplID0gaW5fZjMyLT5pbGZfYXNpemU7CisJCWluX2YtPmlsZl9kc2l6ZSA9IGluX2YzMi0+aWxmX2RzaXplOworCQlpbl9mLT5pbGZfaW5vID0gaW5fZjMyLT5pbGZfaW5vOworCQkvKiBjb3B5IGJpZ2dlc3QgZmllbGQgb2YgaWxmX3UgKi8KKwkJbWVtY3B5KGluX2YtPmlsZl91LmlsZnVfdXVpZC5fX3VfYml0cywKKwkJICAgICAgIGluX2YzMi0+aWxmX3UuaWxmdV91dWlkLl9fdV9iaXRzLAorCQkgICAgICAgc2l6ZW9mKHV1aWRfdCkpOworCQlpbl9mLT5pbGZfYmxrbm8gPSBpbl9mMzItPmlsZl9ibGtubzsKKwkJaW5fZi0+aWxmX2xlbiA9IGluX2YzMi0+aWxmX2xlbjsKKwkJaW5fZi0+aWxmX2JvZmZzZXQgPSBpbl9mMzItPmlsZl9ib2Zmc2V0OworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKGJ1Zi0+aV9sZW4gPT0gc2l6ZW9mKHhmc19pbm9kZV9sb2dfZm9ybWF0XzY0X3QpKXsKKwkJeGZzX2lub2RlX2xvZ19mb3JtYXRfNjRfdCAqaW5fZjY0OworCisJCWluX2Y2NCA9ICh4ZnNfaW5vZGVfbG9nX2Zvcm1hdF82NF90ICopYnVmLT5pX2FkZHI7CisJCWluX2YtPmlsZl90eXBlID0gaW5fZjY0LT5pbGZfdHlwZTsKKwkJaW5fZi0+aWxmX3NpemUgPSBpbl9mNjQtPmlsZl9zaXplOworCQlpbl9mLT5pbGZfZmllbGRzID0gaW5fZjY0LT5pbGZfZmllbGRzOworCQlpbl9mLT5pbGZfYXNpemUgPSBpbl9mNjQtPmlsZl9hc2l6ZTsKKwkJaW5fZi0+aWxmX2RzaXplID0gaW5fZjY0LT5pbGZfZHNpemU7CisJCWluX2YtPmlsZl9pbm8gPSBpbl9mNjQtPmlsZl9pbm87CisJCS8qIGNvcHkgYmlnZ2VzdCBmaWVsZCBvZiBpbGZfdSAqLworCQltZW1jcHkoaW5fZi0+aWxmX3UuaWxmdV91dWlkLl9fdV9iaXRzLAorCQkgICAgICAgaW5fZjY0LT5pbGZfdS5pbGZ1X3V1aWQuX191X2JpdHMsCisJCSAgICAgICBzaXplb2YodXVpZF90KSk7CisJCWluX2YtPmlsZl9ibGtubyA9IGluX2Y2NC0+aWxmX2Jsa25vOworCQlpbl9mLT5pbGZfbGVuID0gaW5fZjY0LT5pbGZfbGVuOworCQlpbl9mLT5pbGZfYm9mZnNldCA9IGluX2Y2NC0+aWxmX2JvZmZzZXQ7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gRUZTQ09SUlVQVEVEOworfQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZV9pdGVtLmggYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uaAppbmRleCBjNWRiZjkzLi41ZGI2Y2QxIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lub2RlX2l0ZW0uaAorKysgYi9mcy94ZnMveGZzX2lub2RlX2l0ZW0uaApAQCAtMjMsMjUgKzIzLDYgQEAKICAqIGxvZy4gIFRoZSBzaXplIG9mIHRoZSBpbmxpbmUgZGF0YS9leHRlbnRzL2ItdHJlZSByb290IHRvIGJlIGxvZ2dlZAogICogKGlmIGFueSkgaXMgaW5kaWNhdGVkIGluIHRoZSBpbGZfZHNpemUgZmllbGQuICBDaGFuZ2VzIHRvIHRoaXMgc3RydWN0dXJlCiAgKiBtdXN0IGJlIGFkZGVkIG9uIHRvIHRoZSBlbmQuCi0gKgotICogQ29udmVudGlvbiBmb3IgbmFtaW5nIGlub2RlIGxvZyBpdGVtIHZlcnNpb25zIDogIFRoZSBjdXJyZW50IHZlcnNpb24KLSAqIGlzIGFsd2F5cyBuYW1lZCBYRlNfTElfSU5PREUuICBXaGVuIGFuIGlub2RlIGxvZyBpdGVtIGdldHMgc3VwZXJzZWRlZCwKLSAqIGFkZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgSVJJWCB0aGF0IHdpbGwgZ2VuZXJhdGUgbG9ncyB3aXRoIHRoYXQgaXRlbQotICogdG8gdGhlIHZlcnNpb24gbmFtZS4KLSAqCi0gKiAtVmVyc2lvbiAxIG9mIHRoaXMgc3RydWN0dXJlIChYRlNfTElfNV8zX0lOT0RFKSBpbmNsdWRlZCB1cCB0byB0aGUgZmlyc3QKLSAqCXVuaW9uIChpbGZfdSkgZmllbGQuICBUaGlzIHdhcyByZWxlYXNlZCB3aXRoIElSSVggNS4zLVhGUy4KLSAqIC1WZXJzaW9uIDIgb2YgdGhpcyBzdHJ1Y3R1cmUgKFhGU19MSV82XzFfSU5PREUpIGlzIGN1cnJlbnRseSB0aGUgZW50aXJlCi0gKglzdHJ1Y3R1cmUuICBUaGlzIHdhcyByZWxlYXNlZCB3aXRoIElSSVggNi4wLjEtWEZTIGFuZCBJUklYIDYuMS4KLSAqIC1WZXJzaW9uIDMgb2YgdGhpcyBzdHJ1Y3R1cmUgKFhGU19MSV9JTk9ERSkgaXMgdGhlIHNhbWUgYXMgdmVyc2lvbiAyCi0gKglzbyBhIG5ldyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB3YXNuJ3QgbmVjZXNzYXJ5LiAgSG93ZXZlciwgd2UgaGFkCi0gKgl0byBhZGQgYSBuZXcgdHlwZSBiZWNhdXNlIHRoZSBpbm9kZSBjbHVzdGVyIHNpemUgY2hhbmdlZCBmcm9tIDRLCi0gKgl0byA4SyBhbmQgdGhlIHZlcnNpb24gbnVtYmVyIGhhZCB0byBiZSByZXYndmVkIHRvIGtlZXAgb2xkZXIga2VybmVscwotICoJZnJvbSB0cnlpbmcgdG8gcmVjb3ZlciBsb2dzIHdpdGggdGhlIDhLIGJ1ZmZlcnMgaW4gdGhlbS4gIFRoZSBsb2dnaW5nCi0gKgljb2RlIGNhbiBoYW5kbGUgcmVjb3Zlcnkgb24gZGlmZmVyZW50LXNpemVkIGNsdXN0ZXJzIG5vdyBzbyBob3BlZnVsbHkKLSAqCXRoaXMnbGwgYmUgdGhlIGxhc3QgdGltZSB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgaW5vZGUgbG9nIGl0ZW0ganVzdAotICoJZm9yIGEgY2hhbmdlIGluIHRoZSBpbm9kZSBjbHVzdGVyIHNpemUuICBUaGlzIG5ldyB2ZXJzaW9uIHdhcwotICoJcmVsZWFzZWQgd2l0aCBJUklYIDYuMi4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlX2xvZ19mb3JtYXQgewogCXVuc2lnbmVkIHNob3J0CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLwpAQCAtNTksMTggKzQwLDM4IEBACiAJaW50CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KIH0geGZzX2lub2RlX2xvZ19mb3JtYXRfdDsKIAotLyogSW5pdGlhbCB2ZXJzaW9uIHNoaXBwZWQgd2l0aCBJUklYIDUuMy1YRlMgKi8KLXR5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfZm9ybWF0X3YxIHsKLQl1bnNpZ25lZCBzaG9ydAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KLQl1bnNpZ25lZCBzaG9ydAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCi0JdWludAkJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCi0JdWludAkJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCi0JeGZzX2lub190CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KK3R5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyIHsKKwl1bnNpZ25lZCBzaG9ydAkJaWxmX3R5cGU7CS8qIDE2OiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCisJdW5zaWduZWQgc2hvcnQJCWlsZl9zaXplOwkvKiAxNjogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKwl1aW50CQkJaWxmX2ZpZWxkczsJLyogMzI6IGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCisJdXNob3J0CQkJaWxmX2FzaXplOwkvKiAzMjogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KKwl1c2hvcnQJCQlpbGZfZHNpemU7CS8qIDMyOiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KKwl4ZnNfaW5vX3QJCWlsZl9pbm87CS8qIDY0OiBpbm9kZSBudW1iZXIgKi8KIAl1bmlvbiB7Ci0JCXhmc19kZXZfdAlpbGZ1X3JkZXY7CS8qIHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCi0JCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLworCQl4ZnNfZGV2X3QJaWxmdV9yZGV2OwkvKiAzMjogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKwkJdXVpZF90CQlpbGZ1X3V1aWQ7CS8qIDEyODogbW91bnQgcG9pbnQgdmFsdWUgKi8KIAl9IGlsZl91OwotfSB4ZnNfaW5vZGVfbG9nX2Zvcm1hdF90X3YxOworCV9faW50NjRfdAkJaWxmX2Jsa25vOwkvKiA2NDogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCisJaW50CQkJaWxmX2xlbjsJLyogMzI6IGxlbiBvZiBpbm9kZSBidWZmZXIgKi8KKwlpbnQJCQlpbGZfYm9mZnNldDsJLyogMzI6IG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2lub2RlX2xvZ19mb3JtYXRfMzJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlX2xvZ19mb3JtYXRfNjQgeworCXVuc2lnbmVkIHNob3J0CQlpbGZfdHlwZTsJLyogMTY6IGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KKwl1bnNpZ25lZCBzaG9ydAkJaWxmX3NpemU7CS8qIDE2OiBzaXplIG9mIHRoaXMgaXRlbSAqLworCXVpbnQJCQlpbGZfZmllbGRzOwkvKiAzMjogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KKwl1c2hvcnQJCQlpbGZfYXNpemU7CS8qIDMyOiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLworCXVzaG9ydAkJCWlsZl9kc2l6ZTsJLyogMzI6IHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLworCV9fdWludDMyX3QJCWlsZl9wYWQ7CS8qIDMyOiBwYWQgZm9yIDY0IGJpdCBib3VuZGFyeSAqLworCXhmc19pbm9fdAkJaWxmX2lubzsJLyogNjQ6IGlub2RlIG51bWJlciAqLworCXVuaW9uIHsKKwkJeGZzX2Rldl90CWlsZnVfcmRldjsJLyogMzI6IHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCisJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiAxMjg6IG1vdW50IHBvaW50IHZhbHVlICovCisJfSBpbGZfdTsKKwlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogNjQ6IGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworCWludAkJCWlsZl9sZW47CS8qIDMyOiBsZW4gb2YgaW5vZGUgYnVmZmVyICovCisJaW50CQkJaWxmX2JvZmZzZXQ7CS8qIDMyOiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCit9IHhmc19pbm9kZV9sb2dfZm9ybWF0XzY0X3Q7CiAKIC8qCiAgKiBGbGFncyBmb3IgeGZzX3RyYW5zX2xvZ19pbm9kZSBmbGFncyBmaWVsZC4KQEAgLTE3Miw2ICsxNzMsOCBAQAogZXh0ZXJuIHZvaWQgeGZzX2lmbHVzaF9kb25lKHN0cnVjdCB4ZnNfYnVmICosIHhmc19pbm9kZV9sb2dfaXRlbV90ICopOwogZXh0ZXJuIHZvaWQgeGZzX2lzdGFsZV9kb25lKHN0cnVjdCB4ZnNfYnVmICosIHhmc19pbm9kZV9sb2dfaXRlbV90ICopOwogZXh0ZXJuIHZvaWQgeGZzX2lmbHVzaF9hYm9ydChzdHJ1Y3QgeGZzX2lub2RlICopOworZXh0ZXJuIGludCB4ZnNfaW5vZGVfaXRlbV9mb3JtYXRfY29udmVydCh4ZnNfbG9nX2lvdmVjX3QgKiwKKwkJCQkJIHhmc19pbm9kZV9sb2dfZm9ybWF0X3QgKik7CiAKICNlbmRpZgkvKiBfX0tFUk5FTF9fICovCiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaW9jb3JlLmMgYi9mcy94ZnMveGZzX2lvY29yZS5jCmluZGV4IGEwNzgxNTYuLjA2ZDcxMGMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW9jb3JlLmMKKysrIGIvZnMveGZzL3hmc19pb2NvcmUuYwpAQCAtMjQsMTQgKzI0LDEzIEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCisjaW5jbHVkZSAieGZzX2RmcmFnLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC01OCw3ICs1Nyw3IEBACiAKIFNUQVRJQyBpbnQKIHhmc19pb2luaXQoCi0Jc3RydWN0IHZmcwkJKnZmc3AsCisJc3RydWN0IGJodl92ZnMJCSp2ZnNwLAogCXN0cnVjdCB4ZnNfbW91bnRfYXJncwkqbW50YXJncywKIAlpbnQJCQlmbGFncykKIHsKQEAgLTY4LDYgKzY3LDcgQEAKIHhmc19pb29wc190CXhmc19pb2NvcmVfeGZzID0gewogCS54ZnNfaW9pbml0CQk9ICh4ZnNfaW9pbml0X3QpIHhmc19pb2luaXQsCiAJLnhmc19ibWFwaV9mdW5jCQk9ICh4ZnNfYm1hcGlfdCkgeGZzX2JtYXBpLAorCS54ZnNfYnVubWFwaV9mdW5jCT0gKHhmc19idW5tYXBpX3QpIHhmc19idW5tYXBpLAogCS54ZnNfYm1hcF9lb2ZfZnVuYwk9ICh4ZnNfYm1hcF9lb2ZfdCkgeGZzX2JtYXBfZW9mLAogCS54ZnNfaW9tYXBfd3JpdGVfZGlyZWN0ID0KIAkJCSh4ZnNfaW9tYXBfd3JpdGVfZGlyZWN0X3QpIHhmc19pb21hcF93cml0ZV9kaXJlY3QsCkBAIC04NCw2ICs4NCw3IEBACiAJLnhmc191bmxvY2sJCT0gKHhmc191bmxrX3QpIHhmc19pdW5sb2NrLAogCS54ZnNfc2l6ZV9mdW5jCQk9ICh4ZnNfc2l6ZV90KSB4ZnNfc2l6ZV9mbiwKIAkueGZzX2lvZG9uZQkJPSAoeGZzX2lvZG9uZV90KSBmc19ub2VyciwKKwkueGZzX3N3YXBfZXh0ZW50c19mdW5jCT0gKHhmc19zd2FwX2V4dGVudHNfdCkgeGZzX3N3YXBfZXh0ZW50cywKIH07CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfaW9tYXAuYyBiL2ZzL3hmcy94ZnNfaW9tYXAuYwppbmRleCBkNWRmZWRjLi5mMTk0OWMxIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lvbWFwLmMKKysrIGIvZnMveGZzL3hmc19pb21hcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4KICAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19hbGxvYy5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMjUyLDcgKzI1MCw3IEBACiAJZXJyb3IgPSBYRlNfQk1BUEkobXAsIE5VTEwsIGlvLCBvZmZzZXRfZnNiLAogCQkJKHhmc19maWxibGtzX3QpKGVuZF9mc2IgLSBvZmZzZXRfZnNiKSwKIAkJCWJtYXBpX2ZsYWdzLCAgTlVMTCwgMCwgJmltYXAsCi0JCQkmbmltYXBzLCBOVUxMKTsKKwkJCSZuaW1hcHMsIE5VTEwsIE5VTEwpOwogCiAJaWYgKGVycm9yKQogCQlnb3RvIG91dDsKQEAgLTUxOSw4ICs1MTcsOCBAQAogCSAqLwogCVhGU19CTUFQX0lOSVQoJmZyZWVfbGlzdCwgJmZpcnN0ZnNiKTsKIAluaW1hcHMgPSAxOwotCWVycm9yID0geGZzX2JtYXBpKHRwLCBpcCwgb2Zmc2V0X2ZzYiwgY291bnRfZnNiLAotCQlibWFwaV9mbGFnLCAmZmlyc3Rmc2IsIDAsICZpbWFwLCAmbmltYXBzLCAmZnJlZV9saXN0KTsKKwllcnJvciA9IFhGU19CTUFQSShtcCwgdHAsIGlvLCBvZmZzZXRfZnNiLCBjb3VudF9mc2IsIGJtYXBpX2ZsYWcsCisJCSZmaXJzdGZzYiwgMCwgJmltYXAsICZuaW1hcHMsICZmcmVlX2xpc3QsIE5VTEwpOwogCWlmIChlcnJvcikKIAkJZ290byBlcnJvcjA7CiAKQEAgLTYxMCw4ICs2MDgsOCBAQAogCXdoaWxlIChjb3VudF9mc2IgPiAwKSB7CiAJCWltYXBzID0gbmltYXBzOwogCQlmaXJzdGJsb2NrID0gTlVMTEZTQkxPQ0s7Ci0JCWVycm9yID0gWEZTX0JNQVBJKG1wLCBOVUxMLCBpbywgc3RhcnRfZnNiLCBjb3VudF9mc2IsCi0JCQkJICAwLCAmZmlyc3RibG9jaywgMCwgaW1hcCwgJmltYXBzLCBOVUxMKTsKKwkJZXJyb3IgPSBYRlNfQk1BUEkobXAsIE5VTEwsIGlvLCBzdGFydF9mc2IsIGNvdW50X2ZzYiwgMCwKKwkJCQkgICZmaXJzdGJsb2NrLCAwLCBpbWFwLCAmaW1hcHMsIE5VTEwsIE5VTEwpOwogCQlpZiAoZXJyb3IpCiAJCQlyZXR1cm4gZXJyb3I7CiAJCWZvciAobiA9IDA7IG4gPCBpbWFwczsgbisrKSB7CkBAIC02OTUsMTEgKzY5MywxMSBAQAogCiAJbmltYXBzID0gWEZTX1dSSVRFX0lNQVBTOwogCWZpcnN0YmxvY2sgPSBOVUxMRlNCTE9DSzsKLQllcnJvciA9IHhmc19ibWFwaShOVUxMLCBpcCwgb2Zmc2V0X2ZzYiwKKwllcnJvciA9IFhGU19CTUFQSShtcCwgTlVMTCwgaW8sIG9mZnNldF9mc2IsCiAJCQkgICh4ZnNfZmlsYmxrc190KShsYXN0X2ZzYiAtIG9mZnNldF9mc2IpLAogCQkJICBYRlNfQk1BUElfREVMQVkgfCBYRlNfQk1BUElfV1JJVEUgfAogCQkJICBYRlNfQk1BUElfRU5USVJFLCAmZmlyc3RibG9jaywgMSwgaW1hcCwKLQkJCSAgJm5pbWFwcywgTlVMTCk7CisJCQkgICZuaW1hcHMsIE5VTEwsIE5VTEwpOwogCWlmIChlcnJvciAmJiAoZXJyb3IgIT0gRU5PU1BDKSkKIAkJcmV0dXJuIFhGU19FUlJPUihlcnJvcik7CiAKQEAgLTgzMiw5ICs4MzAsOSBAQAogCQkJfQogCiAJCQkvKiBHbyBnZXQgdGhlIGFjdHVhbCBibG9ja3MgKi8KLQkJCWVycm9yID0geGZzX2JtYXBpKHRwLCBpcCwgbWFwX3N0YXJ0X2ZzYiwgY291bnRfZnNiLAorCQkJZXJyb3IgPSBYRlNfQk1BUEkobXAsIHRwLCBpbywgbWFwX3N0YXJ0X2ZzYiwgY291bnRfZnNiLAogCQkJCQlYRlNfQk1BUElfV1JJVEUsICZmaXJzdF9ibG9jaywgMSwKLQkJCQkJaW1hcCwgJm5pbWFwcywgJmZyZWVfbGlzdCk7CisJCQkJCWltYXAsICZuaW1hcHMsICZmcmVlX2xpc3QsIE5VTEwpOwogCQkJaWYgKGVycm9yKQogCQkJCWdvdG8gdHJhbnNfY2FuY2VsOwogCkBAIC05NTUsOSArOTUzLDkgQEAKIAkJICovCiAJCVhGU19CTUFQX0lOSVQoJmZyZWVfbGlzdCwgJmZpcnN0ZnNiKTsKIAkJbmltYXBzID0gMTsKLQkJZXJyb3IgPSB4ZnNfYm1hcGkodHAsIGlwLCBvZmZzZXRfZnNiLCBjb3VudF9mc2IsCisJCWVycm9yID0gWEZTX0JNQVBJKG1wLCB0cCwgaW8sIG9mZnNldF9mc2IsIGNvdW50X2ZzYiwKIAkJCQkgIFhGU19CTUFQSV9XUklURXxYRlNfQk1BUElfQ09OVkVSVCwgJmZpcnN0ZnNiLAotCQkJCSAgMSwgJmltYXAsICZuaW1hcHMsICZmcmVlX2xpc3QpOworCQkJCSAgMSwgJmltYXAsICZuaW1hcHMsICZmcmVlX2xpc3QsIE5VTEwpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIGVycm9yX29uX2JtYXBpX3RyYW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2l0YWJsZS5jIGIvZnMveGZzL3hmc19pdGFibGUuYwppbmRleCA5NDA2OGQwLi40NjI0OWU0IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2l0YWJsZS5jCisrKyBiL2ZzL3hmcy94ZnNfaXRhYmxlLmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNDEsMTEgKzM5LDYgQEAKICNpbmNsdWRlICJ4ZnNfZXJyb3IuaCIKICNpbmNsdWRlICJ4ZnNfYnRyZWUuaCIKIAotI2lmbmRlZiBIQVZFX1VTRVJBQ0MKLSNkZWZpbmUgdXNlcmFjYyh1YnVmZmVyLCBzaXplLCBmbGFncywgZm9vKSAoMCkKLSNkZWZpbmUgdW51c2VyYWNjKHVidWZmZXIsIHNpemUsIGZsYWdzKQotI2VuZGlmCi0KIFNUQVRJQyBpbnQKIHhmc19idWxrc3RhdF9vbmVfaWdldCgKIAl4ZnNfbW91bnRfdAkqbXAsCQkvKiBtb3VudCBwb2ludCBmb3IgZmlsZXN5c3RlbSAqLwpAQCAtNTYsNyArNDksNyBAQAogewogCXhmc19kaW5vZGVfY29yZV90ICpkaWM7CQkvKiBkaW5vZGUgY29yZSBpbmZvIHBvaW50ZXIgKi8KIAl4ZnNfaW5vZGVfdAkqaXA7CQkvKiBpbmNvcmUgaW5vZGUgcG9pbnRlciAqLwotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAJaW50CQllcnJvcjsKIAogCWVycm9yID0geGZzX2lnZXQobXAsIE5VTEwsIGlubywgMCwgWEZTX0lMT0NLX1NIQVJFRCwgJmlwLCBibm8pOwpAQCAtMzM2LDE1ICszMjksNiBAQAogCW5pbWFzayA9IH4obmljbHVzdGVyIC0gMSk7CiAJbmJjbHVzdGVyID0gbmljbHVzdGVyID4+IG1wLT5tX3NiLnNiX2lub3BibG9nOwogCS8qCi0JICogTG9jayBkb3duIHRoZSB1c2VyJ3MgYnVmZmVyLiBJZiBhIGJ1ZmZlciB3YXMgbm90IHNlbnQsIGFzIGluIHRoZSBjYXNlCi0JICogZGlzayBxdW90YSBjb2RlIGNhbGxzIGhlcmUsIHdlIHNraXAgdGhpcy4KLQkgKi8KLQlpZiAodWJ1ZmZlciAmJgotCSAgICAoZXJyb3IgPSB1c2VyYWNjKHVidWZmZXIsIHViY291bnQgKiBzdGF0c3RydWN0X3NpemUsCi0JCQkoQl9SRUFEfEJfUEhZUyksIE5VTEwpKSkgewotCQlyZXR1cm4gZXJyb3I7Ci0JfQotCS8qCiAJICogQWxsb2NhdGUgYSBwYWdlLXNpemVkIGJ1ZmZlciBmb3IgaW5vZGUgYnRyZWUgcmVjb3Jkcy4KIAkgKiBXZSBjb3VsZCB0cnkgYWxsb2NhdGluZyBzb21ldGhpbmcgc21hbGxlciwgYnV0IGZvciBub3JtYWwKIAkgKiBjYWxscyB3ZSdsbCBhbHdheXMgKHBvdGVudGlhbGx5KSBuZWVkIHRoZSB3aG9sZSBwYWdlLgpAQCAtNjUwLDggKzYzNCw2IEBACiAJICogRG9uZSwgd2UncmUgZWl0aGVyIG91dCBvZiBmaWxlc3lzdGVtIG9yIHNwYWNlIHRvIHB1dCB0aGUgZGF0YS4KIAkgKi8KIAlrbWVtX2ZyZWUoaXJidWYsIE5CUEMpOwotCWlmICh1YnVmZmVyKQotCQl1bnVzZXJhY2ModWJ1ZmZlciwgdWJjb3VudCAqIHN0YXRzdHJ1Y3Rfc2l6ZSwgKEJfUkVBRHxCX1BIWVMpKTsKIAkqdWJjb3VudHAgPSB1YmVsZW07CiAJaWYgKGFnbm8gPj0gbXAtPm1fc2Iuc2JfYWdjb3VudCkgewogCQkvKgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pdGFibGUuaCBiL2ZzL3hmcy94ZnNfaXRhYmxlLmgKaW5kZXggMTFlYjRlMS4uYmU1ZjEyZSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pdGFibGUuaAorKysgYi9mcy94ZnMveGZzX2l0YWJsZS5oCkBAIC00NSw3ICs0NSw2IEBACiAgKi8KICNkZWZpbmUJQlVMS1NUQVRfRkdfSUdFVAkweDEJLyogR28gdGhyb3VnaCB0aGUgYnVmZmVyIGNhY2hlICovCiAjZGVmaW5lCUJVTEtTVEFUX0ZHX1FVSUNLCTB4MgkvKiBObyBpZ2V0LCB3YWxrIHRoZSBkaW5vZGUgY2x1c3RlciAqLwotI2RlZmluZSBCVUxLU1RBVF9GR19WRlNMT0NLRUQJMHg0CS8qIEFscmVhZHkgaGF2ZSB2ZnMgbG9jayAqLwogCiAvKgogICogUmV0dXJuIHN0YXQgaW5mb3JtYXRpb24gaW4gYnVsayAoYnktaW5vZGUpIGZvciB0aGUgZmlsZXN5c3RlbS4KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfbG9nLmMgYi9mcy94ZnMveGZzX2xvZy5jCmluZGV4IDMyZTg0MWQuLmQ4ZjVkNGMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbG9nLmMKKysrIGIvZnMveGZzL3hmc19sb2cuYwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgpAQCAtMzYsNyArMzUsNiBAQAogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfbG9nX3JlY292ZXIuaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnNfcHJpdi5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtNDAyLDcgKzQwMCw3IEBACiAJeGxvZ19pbl9jb3JlX3QJICAqaWNsb2cgPSAoeGxvZ19pbl9jb3JlX3QgKilpY2xvZ19obmRsOwogCiAJaWYgKHhsb2dfc3RhdGVfcmVsZWFzZV9pY2xvZyhsb2csIGljbG9nKSkgewotCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFhGU19MT0dfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0xPR19JT19FUlJPUik7CiAJCXJldHVybiBFSU87CiAJfQogCkBAIC00OTgsOSArNDk2LDggQEAKIAkgKiBqdXN0IHdvcmtlZC4KIAkgKi8KIAlpZiAoIShtcC0+bV9mbGFncyAmIFhGU19NT1VOVF9OT1JFQ09WRVJZKSkgewotCQlpbnQJZXJyb3I7Ci0JCXZmc190CSp2ZnNwID0gWEZTX01UT1ZGUyhtcCk7Ci0JCWludAlyZWFkb25seSA9ICh2ZnNwLT52ZnNfZmxhZyAmIFZGU19SRE9OTFkpOworCQliaHZfdmZzX3QJKnZmc3AgPSBYRlNfTVRPVkZTKG1wKTsKKwkJaW50CQllcnJvciwgcmVhZG9ubHkgPSAodmZzcC0+dmZzX2ZsYWcgJiBWRlNfUkRPTkxZKTsKIAogCQlpZiAocmVhZG9ubHkpCiAJCQl2ZnNwLT52ZnNfZmxhZyAmPSB+VkZTX1JET05MWTsKQEAgLTcyNiw3ICs3MjMsNyBAQAogCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7CiAKIAlpZiAoKGVycm9yID0geGxvZ193cml0ZShtcCwgcmVnLCBuZW50cmllcywgdGljLCBzdGFydF9sc24sIE5VTEwsIDApKSkgewotCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFhGU19MT0dfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0xPR19JT19FUlJPUik7CiAJfQogCXJldHVybiBlcnJvcjsKIH0JLyogeGZzX2xvZ193cml0ZSAqLwpAQCAtODE2LDkgKzgxMyw5IEBACiAJU1BMREVDTChzKTsKIAlpbnQJCW5lZWRlZCA9IDAsIGdlbjsKIAl4bG9nX3QJCSpsb2cgPSBtcC0+bV9sb2c7Ci0JdmZzX3QJCSp2ZnNwID0gWEZTX01UT1ZGUyhtcCk7CisJYmh2X3Zmc190CSp2ZnNwID0gWEZTX01UT1ZGUyhtcCk7CiAKLQlpZiAoZnNfZnJvemVuKHZmc3ApIHx8IFhGU19GT1JDRURfU0hVVERPV04obXApIHx8CisJaWYgKHZmc190ZXN0X2Zvcl9mcmVlemUodmZzcCkgfHwgWEZTX0ZPUkNFRF9TSFVURE9XTihtcCkgfHwKIAkgICAgKHZmc3AtPnZmc19mbGFnICYgVkZTX1JET05MWSkpCiAJCXJldHVybiAwOwogCkBAIC05NTYsNyArOTUzLDcgQEAKIAkJCVhGU19FUlJUQUdfSU9ET05FX0lPRVJSLCBYRlNfUkFORE9NX0lPRE9ORV9JT0VSUikpIHsKIAkJeGZzX2lvZXJyb3JfYWxlcnQoInhsb2dfaW9kb25lIiwgbC0+bF9tcCwgYnAsIFhGU19CVUZfQUREUihicCkpOwogCQlYRlNfQlVGX1NUQUxFKGJwKTsKLQkJeGZzX2ZvcmNlX3NodXRkb3duKGwtPmxfbXAsIFhGU19MT0dfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obC0+bF9tcCwgU0hVVERPV05fTE9HX0lPX0VSUk9SKTsKIAkJLyoKIAkJICogVGhpcyBmbGFnIHdpbGwgYmUgcHJvcGFnYXRlZCB0byB0aGUgdHJhbnMtY29tbWl0dGVkCiAJCSAqIGNhbGxiYWNrIHJvdXRpbmVzIHRvIGxldCB0aGVtIGtub3cgdGhhdCB0aGUgbG9nLWNvbW1pdApAQCAtMTI2MSw3ICsxMjU4LDcgQEAKIAlBU1NFUlRfQUxXQVlTKGljbG9nKTsKIAlpZiAoKGVycm9yID0geGxvZ193cml0ZShtcCwgcmVnLCAxLCB0aWNrZXQsIGNvbW1pdGxzbnAsCiAJCQkgICAgICAgaWNsb2csIFhMT0dfQ09NTUlUX1RSQU5TKSkpIHsKLQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfTE9HX0lPX0VSUk9SKTsKKwkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBTSFVURE9XTl9MT0dfSU9fRVJST1IpOwogCX0KIAlyZXR1cm4gZXJyb3I7CiB9CS8qIHhsb2dfY29tbWl0X3JlY29yZCAqLwpAQCAtMTc5MCw3ICsxNzg3LDcgQEAKIAl4ZnNfY21uX2VycihYRlNfUFRBR19MT0dSRVMsIENFX0FMRVJULCBtcCwKIAkJInhmc19sb2dfd3JpdGU6IHJlc2VydmF0aW9uIHJhbiBvdXQuIE5lZWQgdG8gdXAgcmVzZXJ2YXRpb24iKTsKIAkvKiBJZiB3ZSBkaWQgbm90IHBhbmljLCBzaHV0ZG93biB0aGUgZmlsZXN5c3RlbSAqLwotCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgWEZTX0NPUlJVUFRfSU5DT1JFKTsKKwl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0NPUlJVUFRfSU5DT1JFKTsKICNlbmRpZgogICAgIH0gZWxzZQogCXRpY2tldC0+dF9jdXJyX3JlcyAtPSBsZW47CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMgYi9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMKaW5kZXggMWYwMDE2Yi4uNTViNDIzNyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jCisrKyBiL2ZzL3hmcy94ZnNfbG9nX3JlY292ZXIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMywyMDA1IFNpbGljb24gR3JhcGhpY3MsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4KICAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgpAQCAtMzIsNyArMzEsNiBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTkzLDE0ICsxOTEsMTQgQEAKIHsKIAlpbnQJCQliOwogCi0JcHJpbnRrKCIlczogIFNCIDogdXVpZCA9ICIsIF9fRlVOQ1RJT05fXyk7CisJY21uX2VycihDRV9ERUJVRywgIiVzOiAgU0IgOiB1dWlkID0gIiwgX19GVU5DVElPTl9fKTsKIAlmb3IgKGIgPSAwOyBiIDwgMTY7IGIrKykKLQkJcHJpbnRrKCIlMDJ4IiwoKHVuc2lnbmVkIGNoYXIgKikmbXAtPm1fc2Iuc2JfdXVpZClbYl0pOwotCXByaW50aygiLCBmbXQgPSAlZFxuIiwgWExPR19GTVQpOwotCXByaW50aygiICAgIGxvZyA6IHV1aWQgPSAiKTsKKwkJY21uX2VycihDRV9ERUJVRywgIiUwMngiLCAoKHVjaGFyX3QgKikmbXAtPm1fc2Iuc2JfdXVpZClbYl0pOworCWNtbl9lcnIoQ0VfREVCVUcsICIsIGZtdCA9ICVkXG4iLCBYTE9HX0ZNVCk7CisJY21uX2VycihDRV9ERUJVRywgIiAgICBsb2cgOiB1dWlkID0gIik7CiAJZm9yIChiID0gMDsgYiA8IDE2OyBiKyspCi0JCXByaW50aygiJTAyeCIsKCh1bnNpZ25lZCBjaGFyICopJmhlYWQtPmhfZnNfdXVpZClbYl0pOwotCXByaW50aygiLCBmbXQgPSAlZFxuIiwgSU5UX0dFVChoZWFkLT5oX2ZtdCwgQVJDSF9DT05WRVJUKSk7CisJCWNtbl9lcnIoQ0VfREVCVUcsICIlMDJ4IiwoKHVjaGFyX3QgKikmaGVhZC0+aF9mc191dWlkKVtiXSk7CisJY21uX2VycihDRV9ERUJVRywgIiwgZm10ID0gJWRcbiIsIElOVF9HRVQoaGVhZC0+aF9mbXQsIEFSQ0hfQ09OVkVSVCkpOwogfQogI2Vsc2UKICNkZWZpbmUgeGxvZ19oZWFkZXJfY2hlY2tfZHVtcChtcCwgaGVhZCkKQEAgLTI4Miw3ICsyODAsNyBAQAogCQltcCA9IFhGU19CVUZfRlNQUklWQVRFKGJwLCB4ZnNfbW91bnRfdCAqKTsKIAkJeGZzX2lvZXJyb3JfYWxlcnQoInhsb2dfcmVjb3Zlcl9pb2RvbmUiLAogCQkJCSAgbXAsIGJwLCBYRlNfQlVGX0FERFIoYnApKTsKLQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfTUVUQURBVEFfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX01FVEFfSU9fRVJST1IpOwogCX0KIAlYRlNfQlVGX1NFVF9GU1BSSVZBVEUoYnAsIE5VTEwpOwogCVhGU19CVUZfQ0xSX0lPRE9ORV9GVU5DKGJwKTsKQEAgLTE4ODksNyArMTg4Nyw3IEBACiAKIAkJYnVmZmVyX25leHRwID0gKHhmc19hZ2lub190ICopeGZzX2J1Zl9vZmZzZXQoYnAsCiAJCQkJCSAgICAgIG5leHRfdW5saW5rZWRfb2Zmc2V0KTsKLQkJSU5UX1NFVCgqYnVmZmVyX25leHRwLCBBUkNIX0NPTlZFUlQsICpsb2dnZWRfbmV4dHApOworCQkqYnVmZmVyX25leHRwID0gKmxvZ2dlZF9uZXh0cDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTIyOTIsMTIgKzIyOTAsMjIgQEAKIAlpbnQJCQlhdHRyX2luZGV4OwogCXVpbnQJCQlmaWVsZHM7CiAJeGZzX2Rpbm9kZV9jb3JlX3QJKmRpY3A7CisJaW50CQkJbmVlZF9mcmVlID0gMDsKIAogCWlmIChwYXNzID09IFhMT0dfUkVDT1ZFUl9QQVNTMSkgewogCQlyZXR1cm4gMDsKIAl9CiAKLQlpbl9mID0gKHhmc19pbm9kZV9sb2dfZm9ybWF0X3QgKilpdGVtLT5yaV9idWZbMF0uaV9hZGRyOworCWlmIChpdGVtLT5yaV9idWZbMF0uaV9sZW4gPT0gc2l6ZW9mKHhmc19pbm9kZV9sb2dfZm9ybWF0X3QpKSB7CisJCWluX2YgPSAoeGZzX2lub2RlX2xvZ19mb3JtYXRfdCAqKWl0ZW0tPnJpX2J1ZlswXS5pX2FkZHI7CisJfSBlbHNlIHsKKwkJaW5fZiA9ICh4ZnNfaW5vZGVfbG9nX2Zvcm1hdF90ICopa21lbV9hbGxvYygKKwkJCXNpemVvZih4ZnNfaW5vZGVfbG9nX2Zvcm1hdF90KSwgS01fU0xFRVApOworCQluZWVkX2ZyZWUgPSAxOworCQllcnJvciA9IHhmc19pbm9kZV9pdGVtX2Zvcm1hdF9jb252ZXJ0KCZpdGVtLT5yaV9idWZbMF0sIGluX2YpOworCQlpZiAoZXJyb3IpCisJCQlnb3RvIGVycm9yOworCX0KIAlpbm8gPSBpbl9mLT5pbGZfaW5vOwogCW1wID0gbG9nLT5sX21wOwogCWlmIChJVEVNX1RZUEUoaXRlbSkgPT0gWEZTX0xJX0lOT0RFKSB7CkBAIC0yMzIzLDggKzIzMzEsMTAgQEAKIAkgKiBJbm9kZSBidWZmZXJzIGNhbiBiZSBmcmVlZCwgbG9vayBvdXQgZm9yIGl0LAogCSAqIGFuZCBkbyBub3QgcmVwbGF5IHRoZSBpbm9kZS4KIAkgKi8KLQlpZiAoeGxvZ19jaGVja19idWZmZXJfY2FuY2VsbGVkKGxvZywgaW1hcC5pbV9ibGtubywgaW1hcC5pbV9sZW4sIDApKQotCQlyZXR1cm4gMDsKKwlpZiAoeGxvZ19jaGVja19idWZmZXJfY2FuY2VsbGVkKGxvZywgaW1hcC5pbV9ibGtubywgaW1hcC5pbV9sZW4sIDApKSB7CisJCWVycm9yID0gMDsKKwkJZ290byBlcnJvcjsKKwl9CiAKIAlicCA9IHhmc19idWZfcmVhZF9mbGFncyhtcC0+bV9kZGV2X3RhcmdwLCBpbWFwLmltX2Jsa25vLCBpbWFwLmltX2xlbiwKIAkJCQkJCQkJWEZTX0JVRl9MT0NLKTsKQEAgLTIzMzMsNyArMjM0Myw3IEBACiAJCQkJICBicCwgaW1hcC5pbV9ibGtubyk7CiAJCWVycm9yID0gWEZTX0JVRl9HRVRFUlJPUihicCk7CiAJCXhmc19idWZfcmVsc2UoYnApOwotCQlyZXR1cm4gZXJyb3I7CisJCWdvdG8gZXJyb3I7CiAJfQogCWVycm9yID0gMDsKIAlBU1NFUlQoaW5fZi0+aWxmX2ZpZWxkcyAmIFhGU19JTE9HX0NPUkUpOwpAQCAtMjM1MCw3ICsyMzYwLDggQEAKIAkJCWRpcCwgYnAsIGlubyk7CiAJCVhGU19FUlJPUl9SRVBPUlQoInhsb2dfcmVjb3Zlcl9kb19pbm9kZV90cmFucygxKSIsCiAJCQkJIFhGU19FUlJMRVZFTF9MT1csIG1wKTsKLQkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOworCQllcnJvciA9IEVGU0NPUlJVUFRFRDsKKwkJZ290byBlcnJvcjsKIAl9CiAJZGljcCA9ICh4ZnNfZGlub2RlX2NvcmVfdCopKGl0ZW0tPnJpX2J1ZlsxXS5pX2FkZHIpOwogCWlmICh1bmxpa2VseShkaWNwLT5kaV9tYWdpYyAhPSBYRlNfRElOT0RFX01BR0lDKSkgewpAQCAtMjM2MCw3ICsyMzcxLDggQEAKIAkJCWl0ZW0sIGlubyk7CiAJCVhGU19FUlJPUl9SRVBPUlQoInhsb2dfcmVjb3Zlcl9kb19pbm9kZV90cmFucygyKSIsCiAJCQkJIFhGU19FUlJMRVZFTF9MT1csIG1wKTsKLQkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOworCQllcnJvciA9IEVGU0NPUlJVUFRFRDsKKwkJZ290byBlcnJvcjsKIAl9CiAKIAkvKiBTa2lwIHJlcGxheSB3aGVuIHRoZSBvbiBkaXNrIGlub2RlIGlzIG5ld2VyIHRoYW4gdGhlIGxvZyBvbmUgKi8KQEAgLTIzNzYsNyArMjM4OCw4IEBACiAJCQkvKiBkbyBub3RoaW5nICovCiAJCX0gZWxzZSB7CiAJCQl4ZnNfYnVmX3JlbHNlKGJwKTsKLQkJCXJldHVybiAwOworCQkJZXJyb3IgPSAwOworCQkJZ290byBlcnJvcjsKIAkJfQogCX0KIAkvKiBUYWtlIHRoZSBvcHBvcnR1bml0eSB0byByZXNldCB0aGUgZmx1c2ggaXRlcmF0aW9uIGNvdW50ICovCkBAIC0yMzkxLDcgKzI0MDQsOCBAQAogCQkJeGZzX2ZzX2Ntbl9lcnIoQ0VfQUxFUlQsIG1wLAogCQkJCSJ4ZnNfaW5vZGVfcmVjb3ZlcjogQmFkIHJlZ3VsYXIgaW5vZGUgbG9nIHJlY29yZCwgcmVjIHB0ciAweCVwLCBpbm8gcHRyID0gMHglcCwgaW5vIGJwID0gMHglcCwgaW5vICVMZCIsCiAJCQkJaXRlbSwgZGlwLCBicCwgaW5vKTsKLQkJCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKKwkJCWVycm9yID0gRUZTQ09SUlVQVEVEOworCQkJZ290byBlcnJvcjsKIAkJfQogCX0gZWxzZSBpZiAodW5saWtlbHkoKGRpY3AtPmRpX21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpKSB7CiAJCWlmICgoZGljcC0+ZGlfZm9ybWF0ICE9IFhGU19ESU5PREVfRk1UX0VYVEVOVFMpICYmCkBAIC0yNDAzLDcgKzI0MTcsOCBAQAogCQkJeGZzX2ZzX2Ntbl9lcnIoQ0VfQUxFUlQsIG1wLAogCQkJCSJ4ZnNfaW5vZGVfcmVjb3ZlcjogQmFkIGRpciBpbm9kZSBsb2cgcmVjb3JkLCByZWMgcHRyIDB4JXAsIGlubyBwdHIgPSAweCVwLCBpbm8gYnAgPSAweCVwLCBpbm8gJUxkIiwKIAkJCQlpdGVtLCBkaXAsIGJwLCBpbm8pOwotCQkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOworCQkJZXJyb3IgPSBFRlNDT1JSVVBURUQ7CisJCQlnb3RvIGVycm9yOwogCQl9CiAJfQogCWlmICh1bmxpa2VseShkaWNwLT5kaV9uZXh0ZW50cyArIGRpY3AtPmRpX2FuZXh0ZW50cyA+IGRpY3AtPmRpX25ibG9ja3MpKXsKQEAgLTI0MTUsNyArMjQzMCw4IEBACiAJCQlpdGVtLCBkaXAsIGJwLCBpbm8sCiAJCQlkaWNwLT5kaV9uZXh0ZW50cyArIGRpY3AtPmRpX2FuZXh0ZW50cywKIAkJCWRpY3AtPmRpX25ibG9ja3MpOwotCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7CisJCWVycm9yID0gRUZTQ09SUlVQVEVEOworCQlnb3RvIGVycm9yOwogCX0KIAlpZiAodW5saWtlbHkoZGljcC0+ZGlfZm9ya29mZiA+IG1wLT5tX3NiLnNiX2lub2Rlc2l6ZSkpIHsKIAkJWEZTX0NPUlJVUFRJT05fRVJST1IoInhsb2dfcmVjb3Zlcl9kb19pbm9kZV90cmFucyg2KSIsCkBAIC0yNDI0LDcgKzI0NDAsOCBAQAogCQl4ZnNfZnNfY21uX2VycihDRV9BTEVSVCwgbXAsCiAJCQkieGZzX2lub2RlX3JlY292ZXI6IEJhZCBpbm9kZSBsb2cgcmVjIHB0ciAweCVwLCBkaW5vIHB0ciAweCVwLCBkaW5vIGJwIDB4JXAsIGlubyAlTGQsIGZvcmtvZmYgMHgleCIsCiAJCQlpdGVtLCBkaXAsIGJwLCBpbm8sIGRpY3AtPmRpX2ZvcmtvZmYpOwotCQlyZXR1cm4gWEZTX0VSUk9SKEVGU0NPUlJVUFRFRCk7CisJCWVycm9yID0gRUZTQ09SUlVQVEVEOworCQlnb3RvIGVycm9yOwogCX0KIAlpZiAodW5saWtlbHkoaXRlbS0+cmlfYnVmWzFdLmlfbGVuID4gc2l6ZW9mKHhmc19kaW5vZGVfY29yZV90KSkpIHsKIAkJWEZTX0NPUlJVUFRJT05fRVJST1IoInhsb2dfcmVjb3Zlcl9kb19pbm9kZV90cmFucyg3KSIsCkBAIC0yNDMzLDcgKzI0NTAsOCBAQAogCQl4ZnNfZnNfY21uX2VycihDRV9BTEVSVCwgbXAsCiAJCQkieGZzX2lub2RlX3JlY292ZXI6IEJhZCBpbm9kZSBsb2cgcmVjb3JkIGxlbmd0aCAlZCwgcmVjIHB0ciAweCVwIiwKIAkJCWl0ZW0tPnJpX2J1ZlsxXS5pX2xlbiwgaXRlbSk7Ci0JCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsKKwkJZXJyb3IgPSBFRlNDT1JSVVBURUQ7CisJCWdvdG8gZXJyb3I7CiAJfQogCiAJLyogVGhlIGNvcmUgaXMgaW4gaW4tY29yZSBmb3JtYXQgKi8KQEAgLTI1MjEsNyArMjUzOSw4IEBACiAJCQl4bG9nX3dhcm4oIlhGUzogeGxvZ19yZWNvdmVyX2RvX2lub2RlX3RyYW5zOiBJbnZhbGlkIGZsYWciKTsKIAkJCUFTU0VSVCgwKTsKIAkJCXhmc19idWZfcmVsc2UoYnApOwotCQkJcmV0dXJuIFhGU19FUlJPUihFSU8pOworCQkJZXJyb3IgPSBFSU87CisJCQlnb3RvIGVycm9yOwogCQl9CiAJfQogCkBAIC0yNTM3LDcgKzI1NTYsMTAgQEAKIAkJZXJyb3IgPSB4ZnNfYndyaXRlKG1wLCBicCk7CiAJfQogCi0JcmV0dXJuIChlcnJvcik7CitlcnJvcjoKKwlpZiAobmVlZF9mcmVlKQorCQlrbWVtX2ZyZWUoaW5fZiwgc2l6ZW9mKCppbl9mKSk7CisJcmV0dXJuIFhGU19FUlJPUihlcnJvcik7CiB9CiAKIC8qCkBAIC0yNjc0LDMyICsyNjk2LDMyIEBACiAgKiBzdHJ1Y3R1cmUgaW50byBpdCwgYW5kIGFkZHMgdGhlIGVmaSB0byB0aGUgQUlMIHdpdGggdGhlIGdpdmVuCiAgKiBMU04uCiAgKi8KLVNUQVRJQyB2b2lkCitTVEFUSUMgaW50CiB4bG9nX3JlY292ZXJfZG9fZWZpX3RyYW5zKAogCXhsb2dfdAkJCSpsb2csCiAJeGxvZ19yZWNvdmVyX2l0ZW1fdAkqaXRlbSwKIAl4ZnNfbHNuX3QJCWxzbiwKIAlpbnQJCQlwYXNzKQogeworCWludAkJCWVycm9yOwogCXhmc19tb3VudF90CQkqbXA7CiAJeGZzX2VmaV9sb2dfaXRlbV90CSplZmlwOwogCXhmc19lZmlfbG9nX2Zvcm1hdF90CSplZmlfZm9ybWF0cDsKIAlTUExERUNMKHMpOwogCiAJaWYgKHBhc3MgPT0gWExPR19SRUNPVkVSX1BBU1MxKSB7Ci0JCXJldHVybjsKKwkJcmV0dXJuIDA7CiAJfQogCiAJZWZpX2Zvcm1hdHAgPSAoeGZzX2VmaV9sb2dfZm9ybWF0X3QgKilpdGVtLT5yaV9idWZbMF0uaV9hZGRyOwotCUFTU0VSVChpdGVtLT5yaV9idWZbMF0uaV9sZW4gPT0KLQkgICAgICAgKHNpemVvZih4ZnNfZWZpX2xvZ19mb3JtYXRfdCkgKwotCQkoKGVmaV9mb3JtYXRwLT5lZmlfbmV4dGVudHMgLSAxKSAqIHNpemVvZih4ZnNfZXh0ZW50X3QpKSkpOwogCiAJbXAgPSBsb2ctPmxfbXA7CiAJZWZpcCA9IHhmc19lZmlfaW5pdChtcCwgZWZpX2Zvcm1hdHAtPmVmaV9uZXh0ZW50cyk7Ci0JbWVtY3B5KChjaGFyICopJihlZmlwLT5lZmlfZm9ybWF0KSwgKGNoYXIgKillZmlfZm9ybWF0cCwKLQkgICAgICBzaXplb2YoeGZzX2VmaV9sb2dfZm9ybWF0X3QpICsKLQkgICAgICAoKGVmaV9mb3JtYXRwLT5lZmlfbmV4dGVudHMgLSAxKSAqIHNpemVvZih4ZnNfZXh0ZW50X3QpKSk7CisJaWYgKChlcnJvciA9IHhmc19lZmlfY29weV9mb3JtYXQoJihpdGVtLT5yaV9idWZbMF0pLAorCQkJCQkgJihlZmlwLT5lZmlfZm9ybWF0KSkpKSB7CisJCXhmc19lZmlfaXRlbV9mcmVlKGVmaXApOworCQlyZXR1cm4gZXJyb3I7CisJfQogCWVmaXAtPmVmaV9uZXh0X2V4dGVudCA9IGVmaV9mb3JtYXRwLT5lZmlfbmV4dGVudHM7CiAJZWZpcC0+ZWZpX2ZsYWdzIHw9IFhGU19FRklfQ09NTUlUVEVEOwogCkBAIC0yNzA4LDYgKzI3MzAsNyBAQAogCSAqIHhmc190cmFuc191cGRhdGVfYWlsKCkgZHJvcHMgdGhlIEFJTCBsb2NrLgogCSAqLwogCXhmc190cmFuc191cGRhdGVfYWlsKG1wLCAoeGZzX2xvZ19pdGVtX3QgKillZmlwLCBsc24sIHMpOworCXJldHVybiAwOwogfQogCiAKQEAgLTI3MzgsOSArMjc2MSwxMCBAQAogCX0KIAogCWVmZF9mb3JtYXRwID0gKHhmc19lZmRfbG9nX2Zvcm1hdF90ICopaXRlbS0+cmlfYnVmWzBdLmlfYWRkcjsKLQlBU1NFUlQoaXRlbS0+cmlfYnVmWzBdLmlfbGVuID09Ci0JICAgICAgIChzaXplb2YoeGZzX2VmZF9sb2dfZm9ybWF0X3QpICsKLQkJKChlZmRfZm9ybWF0cC0+ZWZkX25leHRlbnRzIC0gMSkgKiBzaXplb2YoeGZzX2V4dGVudF90KSkpKTsKKwlBU1NFUlQoKGl0ZW0tPnJpX2J1ZlswXS5pX2xlbiA9PSAoc2l6ZW9mKHhmc19lZmRfbG9nX2Zvcm1hdF8zMl90KSArCisJCSgoZWZkX2Zvcm1hdHAtPmVmZF9uZXh0ZW50cyAtIDEpICogc2l6ZW9mKHhmc19leHRlbnRfMzJfdCkpKSkgfHwKKwkgICAgICAgKGl0ZW0tPnJpX2J1ZlswXS5pX2xlbiA9PSAoc2l6ZW9mKHhmc19lZmRfbG9nX2Zvcm1hdF82NF90KSArCisJCSgoZWZkX2Zvcm1hdHAtPmVmZF9uZXh0ZW50cyAtIDEpICogc2l6ZW9mKHhmc19leHRlbnRfNjRfdCkpKSkpOwogCWVmaV9pZCA9IGVmZF9mb3JtYXRwLT5lZmRfZWZpX2lkOwogCiAJLyoKQEAgLTI4MTAsMTUgKzI4MzQsMTQgQEAKIAkJCWlmICAoKGVycm9yID0geGxvZ19yZWNvdmVyX2RvX2J1ZmZlcl90cmFucyhsb2csIGl0ZW0sCiAJCQkJCQkJCSBwYXNzKSkpCiAJCQkJYnJlYWs7Ci0JCX0gZWxzZSBpZiAoKElURU1fVFlQRShpdGVtKSA9PSBYRlNfTElfSU5PREUpIHx8Ci0JCQkgICAoSVRFTV9UWVBFKGl0ZW0pID09IFhGU19MSV82XzFfSU5PREUpIHx8Ci0JCQkgICAoSVRFTV9UWVBFKGl0ZW0pID09IFhGU19MSV81XzNfSU5PREUpKSB7CisJCX0gZWxzZSBpZiAoKElURU1fVFlQRShpdGVtKSA9PSBYRlNfTElfSU5PREUpKSB7CiAJCQlpZiAoKGVycm9yID0geGxvZ19yZWNvdmVyX2RvX2lub2RlX3RyYW5zKGxvZywgaXRlbSwKIAkJCQkJCQkJcGFzcykpKQogCQkJCWJyZWFrOwogCQl9IGVsc2UgaWYgKElURU1fVFlQRShpdGVtKSA9PSBYRlNfTElfRUZJKSB7Ci0JCQl4bG9nX3JlY292ZXJfZG9fZWZpX3RyYW5zKGxvZywgaXRlbSwgdHJhbnMtPnJfbHNuLAotCQkJCQkJICBwYXNzKTsKKwkJCWlmICgoZXJyb3IgPSB4bG9nX3JlY292ZXJfZG9fZWZpX3RyYW5zKGxvZywgaXRlbSwgdHJhbnMtPnJfbHNuLAorCQkJCQkJICBwYXNzKSkpCisJCQkJYnJlYWs7CiAJCX0gZWxzZSBpZiAoSVRFTV9UWVBFKGl0ZW0pID09IFhGU19MSV9FRkQpIHsKIAkJCXhsb2dfcmVjb3Zlcl9kb19lZmRfdHJhbnMobG9nLCBpdGVtLCBwYXNzKTsKIAkJfSBlbHNlIGlmIChJVEVNX1RZUEUoaXRlbSkgPT0gWEZTX0xJX0RRVU9UKSB7CkBAIC0zNDE5LDEzICszNDQyLDEzIEBACiAJICAgIGlmIChyaGVhZC0+aF9jaGtzdW0gfHwKIAkJKChsb2ctPmxfZmxhZ3MgJiBYTE9HX0NIS1NVTV9NSVNNQVRDSCkgPT0gMCkpIHsKIAkJICAgIGNtbl9lcnIoQ0VfREVCVUcsCi0JCQkiWEZTOiBMb2dSIGNoa3N1bSBtaXNtYXRjaDogd2FzICgweCV4KSBpcyAoMHgleCkiLAorCQkJIlhGUzogTG9nUiBjaGtzdW0gbWlzbWF0Y2g6IHdhcyAoMHgleCkgaXMgKDB4JXgpXG4iLAogCQkJICAgIElOVF9HRVQocmhlYWQtPmhfY2hrc3VtLCBBUkNIX0NPTlZFUlQpLCBjaGtzdW0pOwogCQkgICAgY21uX2VycihDRV9ERUJVRywKICJYRlM6IERpc3JlZ2FyZCBtZXNzYWdlIGlmIGZpbGVzeXN0ZW0gd2FzIGNyZWF0ZWQgd2l0aCBub24tREVCVUcga2VybmVsIik7CiAJCSAgICBpZiAoWEZTX1NCX1ZFUlNJT05fSEFTTE9HVjIoJmxvZy0+bF9tcC0+bV9zYikpIHsKIAkJCSAgICBjbW5fZXJyKENFX0RFQlVHLAotCQkJCSJYRlM6IExvZ1IgdGhpcyBpcyBhIExvZ1YyIGZpbGVzeXN0ZW0iKTsKKwkJCQkiWEZTOiBMb2dSIHRoaXMgaXMgYSBMb2dWMiBmaWxlc3lzdGVtXG4iKTsKIAkJICAgIH0KIAkJICAgIGxvZy0+bF9mbGFncyB8PSBYTE9HX0NIS1NVTV9NSVNNQVRDSDsKIAkgICAgfQpAQCAtMzc5OCw3ICszODIxLDcgQEAKIAllcnJvciA9IHhsb2dfZG9fcmVjb3ZlcnlfcGFzcyhsb2csIGhlYWRfYmxrLCB0YWlsX2JsaywKIAkJCQkgICAgICBYTE9HX1JFQ09WRVJfUEFTUzIpOwogI2lmZGVmIERFQlVHCi0JeworCWlmICghZXJyb3IpIHsKIAkJaW50CWk7CiAKIAkJZm9yIChpID0gMDsgaSA8IFhMT0dfQkNfVEFCTEVfU0laRTsgaSsrKQpAQCAtMzk3NCw3ICszOTk3LDcgQEAKIAkJbG9nLT5sX2ZsYWdzICY9IH5YTE9HX1JFQ09WRVJZX05FRURFRDsKIAl9IGVsc2UgewogCQljbW5fZXJyKENFX0RFQlVHLAotCQkJIiFFbmRpbmcgY2xlYW4gWEZTIG1vdW50IGZvciBmaWxlc3lzdGVtOiAlcyIsCisJCQkiIUVuZGluZyBjbGVhbiBYRlMgbW91bnQgZm9yIGZpbGVzeXN0ZW06ICVzXG4iLAogCQkJbG9nLT5sX21wLT5tX2ZzbmFtZSk7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19tb3VudC5jIGIvZnMveGZzL3hmc19tb3VudC5jCmluZGV4IGMwYjFjMjkuLjEwZGJmMjAgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbW91bnQuYworKysgYi9mcy94ZnMveGZzX21vdW50LmMKQEAgLTI0LDE0ICsyNCwxMiBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgpAQCAtMTk2LDcgKzE5NCw3IEBACiAJCWttZW1fZnJlZShtcC0+bV9sb2duYW1lLCBzdHJsZW4obXAtPm1fbG9nbmFtZSkgKyAxKTsKIAogCWlmIChyZW1vdmVfYmh2KSB7Ci0JCXN0cnVjdCB2ZnMJKnZmc3AgPSBYRlNfTVRPVkZTKG1wKTsKKwkJc3RydWN0IGJodl92ZnMJKnZmc3AgPSBYRlNfTVRPVkZTKG1wKTsKIAogCQliaHZfcmVtb3ZlX2FsbF92ZnNvcHModmZzcCwgMCk7CiAJCVZGU19SRU1PVkVCSFYodmZzcCwgJm1wLT5tX2Jodik7CkBAIC0zMzcsNyArMzM1LDcgQEAKIAogeGZzX2FnbnVtYmVyX3QKIHhmc19pbml0aWFsaXplX3BlcmFnKAotCXN0cnVjdCB2ZnMJKnZmcywKKwliaHZfdmZzX3QJKnZmcywKIAl4ZnNfbW91bnRfdAkqbXAsCiAJeGZzX2FnbnVtYmVyX3QJYWdjb3VudCkKIHsKQEAgLTY1MSwxNCArNjQ5LDE0IEBACiAgKi8KIGludAogeGZzX21vdW50ZnMoCi0JdmZzX3QJCSp2ZnNwLAorCWJodl92ZnNfdAkqdmZzcCwKIAl4ZnNfbW91bnRfdAkqbXAsCiAJaW50CQltZnNpX2ZsYWdzKQogewogCXhmc19idWZfdAkqYnA7CiAJeGZzX3NiX3QJKnNicCA9ICYobXAtPm1fc2IpOwogCXhmc19pbm9kZV90CSpyaXA7Ci0Jdm5vZGVfdAkJKnJ2cCA9IE5VTEw7CisJYmh2X3Zub2RlX3QJKnJ2cCA9IE5VTEw7CiAJaW50CQlyZWFkaW9fbG9nLCB3cml0ZWlvX2xvZzsKIAl4ZnNfZGFkZHJfdAlkOwogCV9fdWludDY0X3QJcmV0NjQ7CkBAIC05MzQsMTggKzkzMiw3IEBACiAJdmZzcC0+dmZzX2FsdGZzaWQgPSAoeGZzX2ZzaWRfdCAqKW1wLT5tX2ZpeGVkZnNpZDsKIAltcC0+bV9kbWV2bWFzayA9IDA7CS8qIG5vdCBwZXJzaXN0ZW50OyBzZXQgYWZ0ZXIgZWFjaCBtb3VudCAqLwogCi0JLyoKLQkgKiBTZWxlY3QgdGhlIHJpZ2h0IGRpcmVjdG9yeSBtYW5hZ2VyLgotCSAqLwotCW1wLT5tX2Rpcm9wcyA9Ci0JCVhGU19TQl9WRVJTSU9OX0hBU0RJUlYyKCZtcC0+bV9zYikgPwotCQkJeGZzdjJfZGlyb3BzIDoKLQkJCXhmc3YxX2Rpcm9wczsKLQotCS8qCi0JICogSW5pdGlhbGl6ZSBkaXJlY3RvcnkgbWFuYWdlcidzIGVudHJpZXMuCi0JICovCi0JWEZTX0RJUl9NT1VOVChtcCk7CisJeGZzX2Rpcl9tb3VudChtcCk7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgdGhlIGF0dHJpYnV0ZSBtYW5hZ2VyJ3MgZW50cmllcy4KQEAgLTEwMDYsOCArOTkzLDkgQEAKIAogCWlmICh1bmxpa2VseSgocmlwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgIT0gU19JRkRJUikpIHsKIAkJY21uX2VycihDRV9XQVJOLCAiWEZTOiBjb3JydXB0ZWQgcm9vdCBpbm9kZSIpOwotCQlwcmRldigiUm9vdCBpbm9kZSAlbGx1IGlzIG5vdCBhIGRpcmVjdG9yeSIsCi0JCSAgICAgIG1wLT5tX2RkZXZfdGFyZ3AsICh1bnNpZ25lZCBsb25nIGxvbmcpcmlwLT5pX2lubyk7CisJCWNtbl9lcnIoQ0VfV0FSTiwgIkRldmljZSAlcyAtIHJvb3QgJWxsdSBpcyBub3QgYSBkaXJlY3RvcnkiLAorCQkJWEZTX0JVRlRBUkdfTkFNRShtcC0+bV9kZGV2X3RhcmdwKSwKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpcmlwLT5pX2lubyk7CiAJCXhmc19pdW5sb2NrKHJpcCwgWEZTX0lMT0NLX0VYQ0wpOwogCQlYRlNfRVJST1JfUkVQT1JUKCJ4ZnNfbW91bnRmc19pbnQoMikiLCBYRlNfRVJSTEVWRUxfTE9XLAogCQkJCSBtcCk7CkBAIC0xMDk0LDcgKzEwODIsNyBAQAogaW50CiB4ZnNfdW5tb3VudGZzKHhmc19tb3VudF90ICptcCwgc3RydWN0IGNyZWQgKmNyKQogewotCXN0cnVjdCB2ZnMJKnZmc3AgPSBYRlNfTVRPVkZTKG1wKTsKKwlzdHJ1Y3QgYmh2X3ZmcwkqdmZzcCA9IFhGU19NVE9WRlMobXApOwogI2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoSU5EVUNFX0lPX0VSUk9SKQogCWludDY0X3QJCWZzaWQ7CiAjZW5kaWYKQEAgLTEyNTQsNiArMTI0MiwyNiBAQAogCiAJeGZzX3RyYW5zX2xvZ19idWYodHAsIGJwLCBmaXJzdCwgbGFzdCk7CiB9CisKKy8qCisgKiBJbiBvcmRlciB0byBhdm9pZCBFTk9TUEMtcmVsYXRlZCBkZWFkbG9jayBjYXVzZWQgYnkKKyAqIG91dC1vZi1vcmRlciBsb2NraW5nIG9mIEFHRiBidWZmZXIgKFBWIDk0NzM5NSksIHdlIHBsYWNlCisgKiBjb25zdHJhaW50cyBvbiB0aGUgcmVsYXRpb25zaGlwIGFtb25nIGFjdHVhbCBhbGxvY2F0aW9ucyBmb3IKKyAqIGRhdGEgYmxvY2tzLCBmcmVlbGlzdCBibG9ja3MsIGFuZCBwb3RlbnRpYWwgZmlsZSBkYXRhIGJtYXAKKyAqIGJ0cmVlIGJsb2Nrcy4gSG93ZXZlciwgdGhlc2UgcmVzdHJpY3Rpb25zIG1heSByZXN1bHQgaW4gbm8KKyAqIGFjdHVhbCBzcGFjZSBhbGxvY2F0ZWQgZm9yIGEgZGVsYXllZCBleHRlbnQsIGZvciBleGFtcGxlLCBhIGRhdGEKKyAqIGJsb2NrIGluIGEgY2VydGFpbiBBRyBpcyBhbGxvY2F0ZWQgYnV0IHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwKKyAqIGJsb2NrIGZvciB0aGUgYWRkaXRpb25hbCBibWFwIGJ0cmVlIGJsb2NrIGR1ZSB0byBhIHNwbGl0IG9mIHRoZQorICogYm1hcCBidHJlZSBvZiB0aGUgZmlsZS4gVGhlIHJlc3VsdCBvZiB0aGlzIG1heSBsZWFkIHRvIGFuCisgKiBpbmZpbml0ZSBsb29wIGluIHhmc3N5bmNkIHdoZW4gdGhlIGZpbGUgZ2V0cyBmbHVzaGVkIHRvIGRpc2sgYW5kCisgKiBhbGwgZGVsYXllZCBleHRlbnRzIG5lZWQgdG8gYmUgYWN0dWFsbHkgYWxsb2NhdGVkLiBUbyBnZXQgYXJvdW5kCisgKiB0aGlzLCB3ZSBleHBsaWNpdGx5IHNldCBhc2lkZSBhIGZldyBibG9ja3Mgd2hpY2ggd2lsbCBub3QgYmUKKyAqIHJlc2VydmVkIGluIGRlbGF5ZWQgYWxsb2NhdGlvbi4gQ29uc2lkZXJpbmcgdGhlIG1pbmltdW0gbnVtYmVyIG9mCisgKiBuZWVkZWQgZnJlZWxpc3QgYmxvY2tzIGlzIDQgZnNicywgYSBwb3RlbnRpYWwgc3BsaXQgb2YgZmlsZSdzIGJtYXAKKyAqIGJ0cmVlIHJlcXVpcmVzIDEgZnNiLCBzbyB3ZSBzZXQgdGhlIG51bWJlciBvZiBzZXQtYXNpZGUgYmxvY2tzIHRvIDguCisqLworI2RlZmluZSBTRVRfQVNJREVfQkxPQ0tTIDgKKwogLyoKICAqIHhmc19tb2RfaW5jb3JlX3NiX3VubG9ja2VkKCkgaXMgYSB1dGlsaXR5IHJvdXRpbmUgY29tbW9uIHVzZWQgdG8gYXBwbHkKICAqIGEgZGVsdGEgdG8gYSBzcGVjaWZpZWQgZmllbGQgaW4gdGhlIGluLWNvcmUgc3VwZXJibG9jay4gIFNpbXBseQpAQCAtMTI5OCw3ICsxMzA2LDcgQEAKIAkJcmV0dXJuIDA7CiAJY2FzZSBYRlNfU0JTX0ZEQkxPQ0tTOgogCi0JCWxjb3VudGVyID0gKGxvbmcgbG9uZyltcC0+bV9zYi5zYl9mZGJsb2NrczsKKwkJbGNvdW50ZXIgPSAobG9uZyBsb25nKW1wLT5tX3NiLnNiX2ZkYmxvY2tzIC0gU0VUX0FTSURFX0JMT0NLUzsKIAkJcmVzX3VzZWQgPSAobG9uZyBsb25nKShtcC0+bV9yZXNibGtzIC0gbXAtPm1fcmVzYmxrc19hdmFpbCk7CiAKIAkJaWYgKGRlbHRhID4gMCkgewkJLyogUHV0dGluZyBibG9ja3MgYmFjayAqLwpAQCAtMTMzMiw3ICsxMzQwLDcgQEAKIAkJCX0KIAkJfQogCi0JCW1wLT5tX3NiLnNiX2ZkYmxvY2tzID0gbGNvdW50ZXI7CisJCW1wLT5tX3NiLnNiX2ZkYmxvY2tzID0gbGNvdW50ZXIgKyBTRVRfQVNJREVfQkxPQ0tTOwogCQlyZXR1cm4gMDsKIAljYXNlIFhGU19TQlNfRlJFWFRFTlRTOgogCQlsY291bnRlciA9IChsb25nIGxvbmcpbXAtPm1fc2Iuc2JfZnJleHRlbnRzOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19tb3VudC5oIGIvZnMveGZzL3hmc19tb3VudC5oCmluZGV4IDY2OGFkMjMuLmIyYmQ0YmUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbW91bnQuaAorKysgYi9mcy94ZnMveGZzX21vdW50LmgKQEAgLTUzLDggKzUzLDggQEAKICNlbHNlCiBzdHJ1Y3QgY3JlZDsKIHN0cnVjdCBsb2c7Ci1zdHJ1Y3QgdmZzOwotc3RydWN0IHZub2RlOworc3RydWN0IGJodl92ZnM7CitzdHJ1Y3QgYmh2X3Zub2RlOwogc3RydWN0IHhmc19tb3VudF9hcmdzOwogc3RydWN0IHhmc19paGFzaDsKIHN0cnVjdCB4ZnNfY2hhc2g7CkBAIC02Myw5ICs2MywxMSBAQAogc3RydWN0IHhmc19pb2NvcmU7CiBzdHJ1Y3QgeGZzX2JtYnRfaXJlYzsKIHN0cnVjdCB4ZnNfYm1hcF9mcmVlOworc3RydWN0IHhmc19leHRkZWx0YTsKK3N0cnVjdCB4ZnNfc3dhcGV4dDsKIAotZXh0ZXJuIHN0cnVjdCB2ZnNvcHMgeGZzX3Zmc29wczsKLWV4dGVybiBzdHJ1Y3Qgdm5vZGVvcHMgeGZzX3Zub2Rlb3BzOworZXh0ZXJuIHN0cnVjdCBiaHZfdmZzb3BzIHhmc192ZnNvcHM7CitleHRlcm4gc3RydWN0IGJodl92bm9kZW9wcyB4ZnNfdm5vZGVvcHM7CiAKICNkZWZpbmUJQUlMX0xPQ0tfVAkJbG9ja190CiAjZGVmaW5lCUFJTF9MT0NLSU5JVCh4LHkpCXNwaW5sb2NrX2luaXQoeCx5KQpAQCAtNzgsMTUgKzgwLDE1IEBACiAgKiBQcm90b3R5cGVzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZSBEYXRhIE1pZ3JhdGlvbiBzdWJzeXN0ZW0uCiAgKi8KIAotdHlwZWRlZiBpbnQJKCp4ZnNfc2VuZF9kYXRhX3QpKGludCwgc3RydWN0IHZub2RlICosCi0JCQl4ZnNfb2ZmX3QsIHNpemVfdCwgaW50LCB2cndsb2NrX3QgKik7Cit0eXBlZGVmIGludAkoKnhmc19zZW5kX2RhdGFfdCkoaW50LCBzdHJ1Y3QgYmh2X3Zub2RlICosCisJCQl4ZnNfb2ZmX3QsIHNpemVfdCwgaW50LCBiaHZfdnJ3bG9ja190ICopOwogdHlwZWRlZiBpbnQJKCp4ZnNfc2VuZF9tbWFwX3QpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1aW50KTsKLXR5cGVkZWYgaW50CSgqeGZzX3NlbmRfZGVzdHJveV90KShzdHJ1Y3Qgdm5vZGUgKiwgZG1fcmlnaHRfdCk7Ci10eXBlZGVmIGludAkoKnhmc19zZW5kX25hbWVzcF90KShkbV9ldmVudHR5cGVfdCwgc3RydWN0IHZmcyAqLAotCQkJc3RydWN0IHZub2RlICosCi0JCQlkbV9yaWdodF90LCBzdHJ1Y3Qgdm5vZGUgKiwgZG1fcmlnaHRfdCwKK3R5cGVkZWYgaW50CSgqeGZzX3NlbmRfZGVzdHJveV90KShzdHJ1Y3QgYmh2X3Zub2RlICosIGRtX3JpZ2h0X3QpOwordHlwZWRlZiBpbnQJKCp4ZnNfc2VuZF9uYW1lc3BfdCkoZG1fZXZlbnR0eXBlX3QsIHN0cnVjdCBiaHZfdmZzICosCisJCQlzdHJ1Y3QgYmh2X3Zub2RlICosCisJCQlkbV9yaWdodF90LCBzdHJ1Y3QgYmh2X3Zub2RlICosIGRtX3JpZ2h0X3QsCiAJCQljaGFyICosIGNoYXIgKiwgbW9kZV90LCBpbnQsIGludCk7Ci10eXBlZGVmIHZvaWQJKCp4ZnNfc2VuZF91bm1vdW50X3QpKHN0cnVjdCB2ZnMgKiwgc3RydWN0IHZub2RlICosCit0eXBlZGVmIHZvaWQJKCp4ZnNfc2VuZF91bm1vdW50X3QpKHN0cnVjdCBiaHZfdmZzICosIHN0cnVjdCBiaHZfdm5vZGUgKiwKIAkJCWRtX3JpZ2h0X3QsIG1vZGVfdCwgaW50LCBpbnQpOwogCiB0eXBlZGVmIHN0cnVjdCB4ZnNfZG1vcHMgewpAQCAtMTg4LDEzICsxOTAsMTggQEAKICAqIFByb3RvdHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgSS9PIGNvcmUgbW9kdWxhcml6YXRpb24uCiAgKi8KIAotdHlwZWRlZiBpbnQJCSgqeGZzX2lvaW5pdF90KShzdHJ1Y3QgdmZzICosCit0eXBlZGVmIGludAkJKCp4ZnNfaW9pbml0X3QpKHN0cnVjdCBiaHZfdmZzICosCiAJCQkJc3RydWN0IHhmc19tb3VudF9hcmdzICosIGludCk7CiB0eXBlZGVmIGludAkJKCp4ZnNfYm1hcGlfdCkoc3RydWN0IHhmc190cmFucyAqLCB2b2lkICosCiAJCQkJeGZzX2ZpbGVvZmZfdCwgeGZzX2ZpbGJsa3NfdCwgaW50LAogCQkJCXhmc19mc2Jsb2NrX3QgKiwgeGZzX2V4dGxlbl90LAogCQkJCXN0cnVjdCB4ZnNfYm1idF9pcmVjICosIGludCAqLAotCQkJCXN0cnVjdCB4ZnNfYm1hcF9mcmVlICopOworCQkJCXN0cnVjdCB4ZnNfYm1hcF9mcmVlICosIHN0cnVjdCB4ZnNfZXh0ZGVsdGEgKik7Cit0eXBlZGVmIGludAkJKCp4ZnNfYnVubWFwaV90KShzdHJ1Y3QgeGZzX3RyYW5zICosCisJCQkJdm9pZCAqLCB4ZnNfZmlsZW9mZl90LAorCQkJCXhmc19maWxibGtzX3QsIGludCwgeGZzX2V4dG51bV90LAorCQkJCXhmc19mc2Jsb2NrX3QgKiwgc3RydWN0IHhmc19ibWFwX2ZyZWUgKiwKKwkJCQlzdHJ1Y3QgeGZzX2V4dGRlbHRhICosIGludCAqKTsKIHR5cGVkZWYgaW50CQkoKnhmc19ibWFwX2VvZl90KSh2b2lkICosIHhmc19maWxlb2ZmX3QsIGludCwgaW50ICopOwogdHlwZWRlZiBpbnQJCSgqeGZzX2lvbWFwX3dyaXRlX2RpcmVjdF90KSgKIAkJCQl2b2lkICosIHhmc19vZmZfdCwgc2l6ZV90LCBpbnQsCkBAIC0yMTMsMTEgKzIyMCwxNCBAQAogdHlwZWRlZiBpbnQJCSgqeGZzX2xvY2tfbm93YWl0X3QpKHZvaWQgKiwgdWludCk7CiB0eXBlZGVmIHZvaWQJCSgqeGZzX3VubGtfdCkodm9pZCAqLCB1bnNpZ25lZCBpbnQpOwogdHlwZWRlZiB4ZnNfZnNpemVfdAkoKnhmc19zaXplX3QpKHZvaWQgKik7Ci10eXBlZGVmIHhmc19mc2l6ZV90CSgqeGZzX2lvZG9uZV90KShzdHJ1Y3QgdmZzICopOwordHlwZWRlZiB4ZnNfZnNpemVfdAkoKnhmc19pb2RvbmVfdCkoc3RydWN0IGJodl92ZnMgKik7Cit0eXBlZGVmIGludAkJKCp4ZnNfc3dhcF9leHRlbnRzX3QpKHZvaWQgKiwgdm9pZCAqLAorCQkJCXN0cnVjdCB4ZnNfc3dhcGV4dCopOwogCiB0eXBlZGVmIHN0cnVjdCB4ZnNfaW9vcHMgewogCXhmc19pb2luaXRfdAkJCXhmc19pb2luaXQ7CiAJeGZzX2JtYXBpX3QJCQl4ZnNfYm1hcGlfZnVuYzsKKwl4ZnNfYnVubWFwaV90CQkJeGZzX2J1bm1hcGlfZnVuYzsKIAl4ZnNfYm1hcF9lb2ZfdAkJCXhmc19ibWFwX2VvZl9mdW5jOwogCXhmc19pb21hcF93cml0ZV9kaXJlY3RfdAl4ZnNfaW9tYXBfd3JpdGVfZGlyZWN0OwogCXhmc19pb21hcF93cml0ZV9kZWxheV90CQl4ZnNfaW9tYXBfd3JpdGVfZGVsYXk7CkBAIC0yMzAsMTMgKzI0MCwxNyBAQAogCXhmc191bmxrX3QJCQl4ZnNfdW5sb2NrOwogCXhmc19zaXplX3QJCQl4ZnNfc2l6ZV9mdW5jOwogCXhmc19pb2RvbmVfdAkJCXhmc19pb2RvbmU7CisJeGZzX3N3YXBfZXh0ZW50c190CQl4ZnNfc3dhcF9leHRlbnRzX2Z1bmM7CiB9IHhmc19pb29wc190OwogCiAjZGVmaW5lIFhGU19JT0lOSVQodmZzcCwgYXJncywgZmxhZ3MpIFwKIAkoKihtcCktPm1faW9fb3BzLnhmc19pb2luaXQpKHZmc3AsIGFyZ3MsIGZsYWdzKQotI2RlZmluZSBYRlNfQk1BUEkobXAsIHRyYW5zLGlvLGJubyxsZW4sZixmaXJzdCx0b3QsbXZhbCxubWFwLGZsaXN0KQlcCisjZGVmaW5lIFhGU19CTUFQSShtcCwgdHJhbnMsaW8sYm5vLGxlbixmLGZpcnN0LHRvdCxtdmFsLG5tYXAsZmxpc3QsZGVsdGEpIFwKIAkoKihtcCktPm1faW9fb3BzLnhmc19ibWFwaV9mdW5jKSBcCi0JCSh0cmFucywoaW8pLT5pb19vYmosYm5vLGxlbixmLGZpcnN0LHRvdCxtdmFsLG5tYXAsZmxpc3QpCisJCSh0cmFucywoaW8pLT5pb19vYmosYm5vLGxlbixmLGZpcnN0LHRvdCxtdmFsLG5tYXAsZmxpc3QsZGVsdGEpCisjZGVmaW5lIFhGU19CVU5NQVBJKG1wLCB0cmFucyxpbyxibm8sbGVuLGYsbmV4dHMsZmlyc3QsZmxpc3QsZGVsdGEsZG9uZSkgXAorCSgqKG1wKS0+bV9pb19vcHMueGZzX2J1bm1hcGlfZnVuYykgXAorCQkodHJhbnMsKGlvKS0+aW9fb2JqLGJubyxsZW4sZixuZXh0cyxmaXJzdCxmbGlzdCxkZWx0YSxkb25lKQogI2RlZmluZSBYRlNfQk1BUF9FT0YobXAsIGlvLCBlbmRvZmYsIHdoaWNoZm9yaywgZW9mKSBcCiAJKCoobXApLT5tX2lvX29wcy54ZnNfYm1hcF9lb2ZfZnVuYykgXAogCQkoKGlvKS0+aW9fb2JqLCBlbmRvZmYsIHdoaWNoZm9yaywgZW9mKQpAQCAtMjY2LDYgKzI4MCw5IEBACiAJKCoobXApLT5tX2lvX29wcy54ZnNfc2l6ZV9mdW5jKSgoaW8pLT5pb19vYmopCiAjZGVmaW5lIFhGU19JT0RPTkUodmZzcCkgXAogCSgqKG1wKS0+bV9pb19vcHMueGZzX2lvZG9uZSkodmZzcCkKKyNkZWZpbmUgWEZTX1NXQVBfRVhURU5UUyhtcCwgaW8sIHRpbywgc3hwKSBcCisJKCoobXApLT5tX2lvX29wcy54ZnNfc3dhcF9leHRlbnRzX2Z1bmMpIFwKKwkJKChpbyktPmlvX29iaiwgKHRpbyktPmlvX29iaiwgc3hwKQogCiAjaWZkZWYgSEFWRV9QRVJDUFVfU0IKIApAQCAtMzg2LDggKzQwMyw2IEBACiAJX191aW50OF90CQltX2lub2RlX3F1aWVzY2U7LyogY2FsbCBxdWllc2NlIG9uIG5ldyBpbm9kZXMuCiAJCQkJCQkgICBmaWVsZCBnb3Zlcm5lZCBieSBtX2lsb2NrICovCiAJX191aW50OF90CQltX3NlY3RiYl9sb2c7CS8qIHNlY3Rsb2cgLSBCQlNISUZUICovCi0JX191aW50OF90CQltX2RpcnZlcnNpb247CS8qIDEgb3IgMiAqLwotCXhmc19kaXJvcHNfdAkJbV9kaXJvcHM7CS8qIHRhYmxlIG9mIGRpciBmdW5jcyAqLwogCWludAkJCW1fZGlyYmxrc2l6ZTsJLyogZGlyZWN0b3J5IGJsb2NrIHN6LS1ieXRlcyAqLwogCWludAkJCW1fZGlyYmxrZnNiczsJLyogZGlyZWN0b3J5IGJsb2NrIHN6LS1mc2JzICovCiAJeGZzX2RhYmxrX3QJCW1fZGlyZGF0YWJsazsJLyogYmxvY2tubyBvZiBkaXIgZGF0YSB2MiAqLwpAQCAtNDk0LDE2ICs1MDksNyBAQAogCiAjZGVmaW5lIFhGU19GT1JDRURfU0hVVERPV04obXApCSgobXApLT5tX2ZsYWdzICYgWEZTX01PVU5UX0ZTX1NIVVRET1dOKQogI2RlZmluZSB4ZnNfZm9yY2Vfc2h1dGRvd24obSxmKQlcCi0JVkZTX0ZPUkNFX1NIVVRET1dOKChYRlNfTVRPVkZTKG0pKSwgZiwgX19GSUxFX18sIF9fTElORV9fKQotCi0vKgotICogRmxhZ3Mgc2VudCB0byB4ZnNfZm9yY2Vfc2h1dGRvd24uCi0gKi8KLSNkZWZpbmUgWEZTX01FVEFEQVRBX0lPX0VSUk9SCTB4MQotI2RlZmluZSBYRlNfTE9HX0lPX0VSUk9SCTB4MgotI2RlZmluZSBYRlNfRk9SQ0VfVU1PVU5UCTB4NAotI2RlZmluZSBYRlNfQ09SUlVQVF9JTkNPUkUJMHg4CS8qIENvcnJ1cHQgaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlcyAqLwotI2RlZmluZSBYRlNfU0hVVERPV05fUkVNT1RFX1JFUSAweDEwCS8qIFNodXRkb3duIGNhbWUgZnJvbSByZW1vdGUgY2VsbCAqLworCWJodl92ZnNfZm9yY2Vfc2h1dGRvd24oKFhGU19NVE9WRlMobSkpLCBmLCBfX0ZJTEVfXywgX19MSU5FX18pCiAKIC8qCiAgKiBGbGFncyBmb3IgeGZzX21vdW50ZnMKQEAgLTUyMSw3ICs1MjcsNyBAQAogICogTWFjcm9zIGZvciBnZXR0aW5nIGZyb20gbW91bnQgdG8gdmZzIGFuZCBiYWNrLgogICovCiAjZGVmaW5lCVhGU19NVE9WRlMobXApCQl4ZnNfbXRvdmZzKG1wKQotc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzICp4ZnNfbXRvdmZzKHhmc19tb3VudF90ICptcCkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGJodl92ZnMgKnhmc19tdG92ZnMoeGZzX21vdW50X3QgKm1wKQogewogCXJldHVybiBiaHZ0b3ZmcygmbXAtPm1fYmh2KTsKIH0KQEAgLTUzMyw3ICs1MzksNyBAQAogfQogCiAjZGVmaW5lIFhGU19WRlNUT00odmZzKSB4ZnNfdmZzdG9tKHZmcykKLXN0YXRpYyBpbmxpbmUgeGZzX21vdW50X3QgKnhmc192ZnN0b20odmZzX3QgKnZmcykKK3N0YXRpYyBpbmxpbmUgeGZzX21vdW50X3QgKnhmc192ZnN0b20oYmh2X3Zmc190ICp2ZnMpCiB7CiAJcmV0dXJuIFhGU19CSFZUT00oYmh2X2xvb2t1cChWRlNfQkhWSEVBRCh2ZnMpLCAmeGZzX3Zmc29wcykpOwogfQpAQCAtNTcxLDcgKzU3Nyw3IEBACiBleHRlcm4geGZzX21vdW50X3QgKnhmc19tb3VudF9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQJeGZzX21vZF9zYih4ZnNfdHJhbnNfdCAqLCBfX2ludDY0X3QpOwogZXh0ZXJuIHZvaWQJeGZzX21vdW50X2ZyZWUoeGZzX21vdW50X3QgKm1wLCBpbnQgcmVtb3ZlX2Jodik7Ci1leHRlcm4gaW50CXhmc19tb3VudGZzKHN0cnVjdCB2ZnMgKiwgeGZzX21vdW50X3QgKm1wLCBpbnQpOworZXh0ZXJuIGludAl4ZnNfbW91bnRmcyhzdHJ1Y3QgYmh2X3ZmcyAqLCB4ZnNfbW91bnRfdCAqbXAsIGludCk7CiBleHRlcm4gdm9pZAl4ZnNfbW91bnRmc19jaGVja19iYXJyaWVycyh4ZnNfbW91bnRfdCAqbXApOwogCiBleHRlcm4gaW50CXhmc191bm1vdW50ZnMoeGZzX21vdW50X3QgKiwgc3RydWN0IGNyZWQgKik7CkBAIC01ODksNyArNTk1LDcgQEAKIGV4dGVybiB2b2lkCXhmc19kb19mb3JjZV9zaHV0ZG93bihiaHZfZGVzY190ICosIGludCwgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludAl4ZnNfc3luY3N1Yih4ZnNfbW91bnRfdCAqLCBpbnQsIGludCwgaW50ICopOwogZXh0ZXJuIGludAl4ZnNfc3luY19pbm9kZXMoeGZzX21vdW50X3QgKiwgaW50LCBpbnQsIGludCAqKTsKLWV4dGVybiB4ZnNfYWdudW1iZXJfdAl4ZnNfaW5pdGlhbGl6ZV9wZXJhZyhzdHJ1Y3QgdmZzICosIHhmc19tb3VudF90ICosCitleHRlcm4geGZzX2FnbnVtYmVyX3QJeGZzX2luaXRpYWxpemVfcGVyYWcoc3RydWN0IGJodl92ZnMgKiwgeGZzX21vdW50X3QgKiwKIAkJCQkJCXhmc19hZ251bWJlcl90KTsKIGV4dGVybiB2b2lkCXhmc194bGF0ZXNiKHZvaWQgKiwgc3RydWN0IHhmc19zYiAqLCBpbnQsIF9faW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcW1vcHMuYyBiL2ZzL3hmcy94ZnNfcW1vcHMuYwppbmRleCAxNDA4YTMyLi4zMjBkNjNmIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3Ftb3BzLmMKKysrIGIvZnMveGZzL3hmc19xbW9wcy5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3F1b3RhLmggYi9mcy94ZnMveGZzX3F1b3RhLmgKaW5kZXggN2ZiZWY5Ny4uYWNiODUzYiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19xdW90YS5oCisrKyBiL2ZzL3hmcy94ZnNfcXVvdGEuaApAQCAtMzY1LDcgKzM2NSw3IEBACiBleHRlcm4gaW50IHhmc19xbV9kcWNoZWNrKHhmc19kaXNrX2RxdW90X3QgKiwgeGZzX2RxaWRfdCwgdWludCwgdWludCwgY2hhciAqKTsKIGV4dGVybiBpbnQgeGZzX21vdW50X3Jlc2V0X3NicWZsYWdzKHN0cnVjdCB4ZnNfbW91bnQgKik7CiAKLWV4dGVybiBzdHJ1Y3QgYmh2X3Zmc29wcyB4ZnNfcW1vcHM7CitleHRlcm4gc3RydWN0IGJodl9tb2R1bGVfdmZzb3BzIHhmc19xbW9wczsKIAogI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KIApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19yZW5hbWUuYyBiL2ZzL3hmcy94ZnNfcmVuYW1lLmMKaW5kZXggMWYxNDg3Ni4uZDk4MTcxZCAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19yZW5hbWUuYworKysgYi9mcy94ZnMveGZzX3JlbmFtZS5jCkBAIC0yMiwxMyArMjIsMTEgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19kYV9idHJlZS5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC00MCw3ICszOCw2IEBACiAjaW5jbHVkZSAieGZzX3JlZmNhY2hlLmgiCiAjaW5jbHVkZSAieGZzX3V0aWxzLmgiCiAjaW5jbHVkZSAieGZzX3RyYW5zX3NwYWNlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9sZWFmLmgiCiAKIAogLyoKQEAgLTg3LDggKzg0LDggQEAKIHhmc19sb2NrX2Zvcl9yZW5hbWUoCiAJeGZzX2lub2RlX3QJKmRwMSwJLyogb2xkIChzb3VyY2UpIGRpcmVjdG9yeSBpbm9kZSAqLwogCXhmc19pbm9kZV90CSpkcDIsCS8qIG5ldyAodGFyZ2V0KSBkaXJlY3RvcnkgaW5vZGUgKi8KLQl2bmFtZV90CQkqdm5hbWUxLC8qIG9sZCBlbnRyeSBuYW1lICovCi0Jdm5hbWVfdAkJKnZuYW1lMiwvKiBuZXcgZW50cnkgbmFtZSAqLworCWJodl92bmFtZV90CSp2bmFtZTEsLyogb2xkIGVudHJ5IG5hbWUgKi8KKwliaHZfdm5hbWVfdAkqdm5hbWUyLC8qIG5ldyBlbnRyeSBuYW1lICovCiAJeGZzX2lub2RlX3QJKippcHAxLAkvKiBpbm9kZSBvZiBvbGQgZW50cnkgKi8KIAl4ZnNfaW5vZGVfdAkqKmlwcDIsCS8qIGlub2RlIG9mIG5ldyBlbnRyeSwgaWYgaXQKIAkJCQkgICBhbHJlYWR5IGV4aXN0cywgTlVMTCBvdGhlcndpc2UuICovCkBAIC0yMjUsOSArMjIyLDkgQEAKIGludAogeGZzX3JlbmFtZSgKIAliaHZfZGVzY190CSpzcmNfZGlyX2JkcCwKLQl2bmFtZV90CQkqc3JjX3ZuYW1lLAotCXZub2RlX3QJCSp0YXJnZXRfZGlyX3ZwLAotCXZuYW1lX3QJCSp0YXJnZXRfdm5hbWUsCisJYmh2X3ZuYW1lX3QJKnNyY192bmFtZSwKKwliaHZfdm5vZGVfdAkqdGFyZ2V0X2Rpcl92cCwKKwliaHZfdm5hbWVfdAkqdGFyZ2V0X3ZuYW1lLAogCWNyZWRfdAkJKmNyZWRwKQogewogCXhmc190cmFuc190CSp0cDsKQEAgLTI0Miw3ICsyMzksNyBAQAogCWludAkJY29tbWl0dGVkOwogCXhmc19pbm9kZV90CSppbm9kZXNbNF07CiAJaW50CQl0YXJnZXRfaXBfZHJvcHBlZCA9IDA7CS8qIGRyb3BwZWQgdGFyZ2V0X2lwIGxpbms/ICovCi0Jdm5vZGVfdAkJKnNyY19kaXJfdnA7CisJYmh2X3Zub2RlX3QJKnNyY19kaXJfdnA7CiAJaW50CQlzcGFjZXJlczsKIAlpbnQJCXRhcmdldF9saW5rX3plcm8gPSAwOwogCWludAkJbnVtX2lub2RlczsKQEAgLTM5OCwzNCArMzk1LDI5IEBACiAJCSAqIGZpdCBiZWZvcmUgYWN0dWFsbHkgaW5zZXJ0aW5nIGl0LgogCQkgKi8KIAkJaWYgKHNwYWNlcmVzID09IDAgJiYKLQkJICAgIChlcnJvciA9IFhGU19ESVJfQ0FORU5URVIobXAsIHRwLCB0YXJnZXRfZHAsIHRhcmdldF9uYW1lLAotCQkJCXRhcmdldF9uYW1lbGVuKSkpIHsKKwkJICAgIChlcnJvciA9IHhmc19kaXJfY2FuZW50ZXIodHAsIHRhcmdldF9kcCwgdGFyZ2V0X25hbWUsCisJCQkJCQl0YXJnZXRfbmFtZWxlbikpKQogCQkJZ290byBlcnJvcl9yZXR1cm47Ci0JCX0KIAkJLyoKIAkJICogSWYgdGFyZ2V0IGRvZXMgbm90IGV4aXN0IGFuZCB0aGUgcmVuYW1lIGNyb3NzZXMKIAkJICogZGlyZWN0b3JpZXMsIGFkanVzdCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBsaW5rIGNvdW50CiAJCSAqIHRvIGFjY291bnQgZm9yIHRoZSAiLi4iIHJlZmVyZW5jZSBmcm9tIHRoZSBuZXcgZW50cnkuCiAJCSAqLwotCQllcnJvciA9IFhGU19ESVJfQ1JFQVRFTkFNRShtcCwgdHAsIHRhcmdldF9kcCwgdGFyZ2V0X25hbWUsCisJCWVycm9yID0geGZzX2Rpcl9jcmVhdGVuYW1lKHRwLCB0YXJnZXRfZHAsIHRhcmdldF9uYW1lLAogCQkJCQkgICB0YXJnZXRfbmFtZWxlbiwgc3JjX2lwLT5pX2lubywKIAkJCQkJICAgJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCBzcGFjZXJlcyk7Ci0JCWlmIChlcnJvciA9PSBFTk9TUEMpIHsKKwkJaWYgKGVycm9yID09IEVOT1NQQykKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwotCQl9Ci0JCWlmIChlcnJvcikgeworCQlpZiAoZXJyb3IpCiAJCQlnb3RvIGFib3J0X3JldHVybjsKLQkJfQogCQl4ZnNfaWNoZ3RpbWUodGFyZ2V0X2RwLCBYRlNfSUNIR1RJTUVfTU9EIHwgWEZTX0lDSEdUSU1FX0NIRyk7CiAKIAkJaWYgKG5ld19wYXJlbnQgJiYgc3JjX2lzX2RpcmVjdG9yeSkgewogCQkJZXJyb3IgPSB4ZnNfYnVtcGxpbmsodHAsIHRhcmdldF9kcCk7Ci0JCQlpZiAoZXJyb3IpIHsKKwkJCWlmIChlcnJvcikKIAkJCQlnb3RvIGFib3J0X3JldHVybjsKLQkJCX0KIAkJfQogCX0gZWxzZSB7IC8qIHRhcmdldF9pcCAhPSBOVUxMICovCi0KIAkJLyoKIAkJICogSWYgdGFyZ2V0IGV4aXN0cyBhbmQgaXQncyBhIGRpcmVjdG9yeSwgY2hlY2sgdGhhdCBib3RoCiAJCSAqIHRhcmdldCBhbmQgc291cmNlIGFyZSBkaXJlY3RvcmllcyBhbmQgdGhhdCB0YXJnZXQgY2FuIGJlCkBAIC00MzUsNyArNDI3LDcgQEAKIAkJCS8qCiAJCQkgKiBNYWtlIHN1cmUgdGFyZ2V0IGRpciBpcyBlbXB0eS4KIAkJCSAqLwotCQkJaWYgKCEoWEZTX0RJUl9JU0VNUFRZKHRhcmdldF9pcC0+aV9tb3VudCwgdGFyZ2V0X2lwKSkgfHwKKwkJCWlmICghKHhmc19kaXJfaXNlbXB0eSh0YXJnZXRfaXApKSB8fAogCQkJICAgICh0YXJnZXRfaXAtPmlfZC5kaV9ubGluayA+IDIpKSB7CiAJCQkJZXJyb3IgPSBYRlNfRVJST1IoRUVYSVNUKTsKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKQEAgLTQ1MSwxMiArNDQzLDExIEBACiAJCSAqIEluIGNhc2UgdGhlcmUgaXMgYWxyZWFkeSBhbiBlbnRyeSB3aXRoIHRoZSBzYW1lCiAJCSAqIG5hbWUgYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwgcmVtb3ZlIGl0IGZpcnN0LgogCQkgKi8KLQkJZXJyb3IgPSBYRlNfRElSX1JFUExBQ0UobXAsIHRwLCB0YXJnZXRfZHAsIHRhcmdldF9uYW1lLAotCQkJdGFyZ2V0X25hbWVsZW4sIHNyY19pcC0+aV9pbm8sICZmaXJzdF9ibG9jaywKLQkJCSZmcmVlX2xpc3QsIHNwYWNlcmVzKTsKLQkJaWYgKGVycm9yKSB7CisJCWVycm9yID0geGZzX2Rpcl9yZXBsYWNlKHRwLCB0YXJnZXRfZHAsIHRhcmdldF9uYW1lLAorCQkJCQl0YXJnZXRfbmFtZWxlbiwgc3JjX2lwLT5pX2lubywKKwkJCQkJJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCBzcGFjZXJlcyk7CisJCWlmIChlcnJvcikKIAkJCWdvdG8gYWJvcnRfcmV0dXJuOwotCQl9CiAJCXhmc19pY2hndGltZSh0YXJnZXRfZHAsIFhGU19JQ0hHVElNRV9NT0QgfCBYRlNfSUNIR1RJTUVfQ0hHKTsKIAogCQkvKgpAQCAtNDY0LDkgKzQ1NSw4IEBACiAJCSAqIGRpciBubyBsb25nZXIgcG9pbnRzIHRvIGl0LgogCQkgKi8KIAkJZXJyb3IgPSB4ZnNfZHJvcGxpbmsodHAsIHRhcmdldF9pcCk7Ci0JCWlmIChlcnJvcikgeworCQlpZiAoZXJyb3IpCiAJCQlnb3RvIGFib3J0X3JldHVybjsKLQkJfQogCQl0YXJnZXRfaXBfZHJvcHBlZCA9IDE7CiAKIAkJaWYgKHNyY19pc19kaXJlY3RvcnkpIHsKQEAgLTQ3NCw5ICs0NjQsOCBAQAogCQkJICogRHJvcCB0aGUgbGluayBmcm9tIHRoZSBvbGQgIi4iIGVudHJ5LgogCQkJICovCiAJCQllcnJvciA9IHhmc19kcm9wbGluayh0cCwgdGFyZ2V0X2lwKTsKLQkJCWlmIChlcnJvcikgeworCQkJaWYgKGVycm9yKQogCQkJCWdvdG8gYWJvcnRfcmV0dXJuOwotCQkJfQogCQl9CiAKIAkJLyogRG8gdGhpcyB0ZXN0IHdoaWxlIHdlIHN0aWxsIGhvbGQgdGhlIGxvY2tzICovCkBAIC00ODgsMTggKzQ3NywxNSBAQAogCSAqIFJlbW92ZSB0aGUgc291cmNlLgogCSAqLwogCWlmIChuZXdfcGFyZW50ICYmIHNyY19pc19kaXJlY3RvcnkpIHsKLQogCQkvKgogCQkgKiBSZXdyaXRlIHRoZSAiLi4iIGVudHJ5IHRvIHBvaW50IHRvIHRoZSBuZXcKIAkJICogZGlyZWN0b3J5LgogCQkgKi8KLQkJZXJyb3IgPSBYRlNfRElSX1JFUExBQ0UobXAsIHRwLCBzcmNfaXAsICIuLiIsIDIsCi0JCQkJCXRhcmdldF9kcC0+aV9pbm8sICZmaXJzdF9ibG9jaywKLQkJCQkJJmZyZWVfbGlzdCwgc3BhY2VyZXMpOworCQllcnJvciA9IHhmc19kaXJfcmVwbGFjZSh0cCwgc3JjX2lwLCAiLi4iLCAyLCB0YXJnZXRfZHAtPmlfaW5vLAorCQkJCQkmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIHNwYWNlcmVzKTsKIAkJQVNTRVJUKGVycm9yICE9IEVFWElTVCk7Ci0JCWlmIChlcnJvcikgeworCQlpZiAoZXJyb3IpCiAJCQlnb3RvIGFib3J0X3JldHVybjsKLQkJfQogCQl4ZnNfaWNoZ3RpbWUoc3JjX2lwLCBYRlNfSUNIR1RJTUVfTU9EIHwgWEZTX0lDSEdUSU1FX0NIRyk7CiAKIAl9IGVsc2UgewpAQCAtNTI3LDE2ICs1MTMsMTQgQEAKIAkJICogZW50cnkgdGhhdCdzIG1vdmVkIG5vIGxvbmdlciBwb2ludHMgdG8gaXQuCiAJCSAqLwogCQllcnJvciA9IHhmc19kcm9wbGluayh0cCwgc3JjX2RwKTsKLQkJaWYgKGVycm9yKSB7CisJCWlmIChlcnJvcikKIAkJCWdvdG8gYWJvcnRfcmV0dXJuOwotCQl9CiAJfQogCi0JZXJyb3IgPSBYRlNfRElSX1JFTU9WRU5BTUUobXAsIHRwLCBzcmNfZHAsIHNyY19uYW1lLCBzcmNfbmFtZWxlbiwKKwllcnJvciA9IHhmc19kaXJfcmVtb3ZlbmFtZSh0cCwgc3JjX2RwLCBzcmNfbmFtZSwgc3JjX25hbWVsZW4sCiAJCQlzcmNfaXAtPmlfaW5vLCAmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIHNwYWNlcmVzKTsKLQlpZiAoZXJyb3IpIHsKKwlpZiAoZXJyb3IpCiAJCWdvdG8gYWJvcnRfcmV0dXJuOwotCX0KIAl4ZnNfaWNoZ3RpbWUoc3JjX2RwLCBYRlNfSUNIR1RJTUVfTU9EIHwgWEZTX0lDSEdUSU1FX0NIRyk7CiAKIAkvKgpAQCAtNjA5LDcgKzU5Myw3IEBACiAJICogTGV0IGludGVycG9zZWQgZmlsZSBzeXN0ZW1zIGtub3cgYWJvdXQgcmVtb3ZlZCBsaW5rcy4KIAkgKi8KIAlpZiAodGFyZ2V0X2lwX2Ryb3BwZWQpIHsKLQkJVk9QX0xJTktfUkVNT1ZFRChYRlNfSVRPVih0YXJnZXRfaXApLCB0YXJnZXRfZGlyX3ZwLAorCQliaHZfdm9wX2xpbmtfcmVtb3ZlZChYRlNfSVRPVih0YXJnZXRfaXApLCB0YXJnZXRfZGlyX3ZwLAogCQkJCQl0YXJnZXRfbGlua196ZXJvKTsKIAkJSVJFTEUodGFyZ2V0X2lwKTsKIAl9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3J0YWxsb2MuYyBiL2ZzL3hmcy94ZnNfcnRhbGxvYy5jCmluZGV4IDViNDEzOTQuLjBjMWU0MmIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfcnRhbGxvYy5jCisrKyBiL2ZzL3hmcy94ZnNfcnRhbGxvYy5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTE0MSw3ICsxMzksNyBAQAogCQljYW5jZWxmbGFncyB8PSBYRlNfVFJBTlNfQUJPUlQ7CiAJCWVycm9yID0geGZzX2JtYXBpKHRwLCBpcCwgb2Jsb2NrcywgbmJsb2NrcyAtIG9ibG9ja3MsCiAJCQlYRlNfQk1BUElfV1JJVEUgfCBYRlNfQk1BUElfTUVUQURBVEEsICZmaXJzdGJsb2NrLAotCQkJcmVzYmxrcywgJm1hcCwgJm5tYXAsICZmbGlzdCk7CisJCQlyZXNibGtzLCAmbWFwLCAmbm1hcCwgJmZsaXN0LCBOVUxMKTsKIAkJaWYgKCFlcnJvciAmJiBubWFwIDwgMSkKIAkJCWVycm9yID0gWEZTX0VSUk9SKEVOT1NQQyk7CiAJCWlmIChlcnJvcikKQEAgLTI0MDQsMTAgKzI0MDIsMTAgQEAKIHsKIAl4ZnNfZXh0bGVuX3QJaTsJCS8qIGJsb2NrIG51bWJlciBpbiB0aGUgZXh0ZW50ICovCiAKLQlwcmludGsoIiVMZDogIiwgKGxvbmcgbG9uZylzdGFydCk7CisJY21uX2VycihDRV9ERUJVRywgIiVMZDogIiwgKGxvbmcgbG9uZylzdGFydCk7CiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotCQlwcmludGsoIiVkIiwgeGZzX3J0Y2hlY2tfYml0KG1wLCB0cCwgc3RhcnQgKyBpLCAxKSk7Ci0JcHJpbnRrKCJcbiIpOworCQljbW5fZXJyKENFX0RFQlVHLCAiJWQiLCB4ZnNfcnRjaGVja19iaXQobXAsIHRwLCBzdGFydCArIGksIDEpKTsKKwljbW5fZXJyKENFX0RFQlVHLCAiXG4iKTsKIH0KIAogLyoKQEAgLTI0MzEsMTcgKzI0MjksMTcgQEAKIAkJCSh2b2lkKXhmc19ydGdldF9zdW1tYXJ5KG1wLCB0cCwgbCwgaSwgJnN1bWJwLCAmc2IsICZjKTsKIAkJCWlmIChjKSB7CiAJCQkJaWYgKCFwKSB7Ci0JCQkJCXByaW50aygiJUxkLSVMZDoiLCAxTEwgPDwgbCwKKwkJCQkJY21uX2VycihDRV9ERUJVRywgIiVMZC0lTGQ6IiwgMUxMIDw8IGwsCiAJCQkJCQlYRlNfUlRNSU4oKDFMTCA8PCBsKSArCiAJCQkJCQkJICAoKDFMTCA8PCBsKSAtIDFMTCksCiAJCQkJCQkJIG1wLT5tX3NiLnNiX3JleHRlbnRzKSk7CiAJCQkJCXAgPSAxOwogCQkJCX0KLQkJCQlwcmludGsoIiAlTGQ6JWQiLCAobG9uZyBsb25nKWksIGMpOworCQkJCWNtbl9lcnIoQ0VfREVCVUcsICIgJUxkOiVkIiwgKGxvbmcgbG9uZylpLCBjKTsKIAkJCX0KIAkJfQogCQlpZiAocCkKLQkJCXByaW50aygiXG4iKTsKKwkJCWNtbl9lcnIoQ0VfREVCVUcsICJcbiIpOwogCX0KIAlpZiAoc3VtYnApCiAJCXhmc190cmFuc19icmVsc2UodHAsIHN1bWJwKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcncuYyBiL2ZzL3hmcy94ZnNfcncuYwppbmRleCBhNTljMTAyLi5kZWZiMmZlIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3J3LmMKKysrIGIvZnMveGZzL3hmc19ydy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAzLDIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYgU2lsaWNvbiBHcmFwaGljcywgSW5jLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTkyLDYgKzkwLDkwIEBACiB9CiAKIC8qCisgKiBIYW5kbGUgbG9nZ2luZyByZXF1aXJlbWVudHMgb2YgdmFyaW91cyBzeW5jaHJvbm91cyB0eXBlcyBvZiB3cml0ZS4KKyAqLworaW50Cit4ZnNfd3JpdGVfc3luY19sb2dmb3JjZSgKKwl4ZnNfbW91bnRfdAkqbXAsCisJeGZzX2lub2RlX3QJKmlwKQoreworCWludAkJZXJyb3IgPSAwOworCisJLyoKKwkgKiBJZiB3ZSdyZSB0cmVhdGluZyB0aGlzIGFzIE9fRFNZTkMgYW5kIHdlIGhhdmUgbm90IHVwZGF0ZWQgdGhlCisJICogc2l6ZSwgZm9yY2UgdGhlIGxvZy4KKwkgKi8KKwlpZiAoIShtcC0+bV9mbGFncyAmIFhGU19NT1VOVF9PU1lOQ0lTT1NZTkMpICYmCisJICAgICEoaXAtPmlfdXBkYXRlX3NpemUpKSB7CisJCXhmc19pbm9kZV9sb2dfaXRlbV90CSppaXAgPSBpcC0+aV9pdGVtcDsKKworCQkvKgorCQkgKiBJZiBhbiBhbGxvY2F0aW9uIHRyYW5zYWN0aW9uIG9jY3VycmVkCisJCSAqIHdpdGhvdXQgZXh0ZW5kaW5nIHRoZSBzaXplLCB0aGVuIHdlIGhhdmUgdG8gZm9yY2UKKwkJICogdGhlIGxvZyB1cCB0aGUgcHJvcGVyIHBvaW50IHRvIGVuc3VyZSB0aGF0IHRoZQorCQkgKiBhbGxvY2F0aW9uIGlzIHBlcm1hbmVudC4gIFdlIGNhbid0IGNvdW50IG9uCisJCSAqIHRoZSBmYWN0IHRoYXQgYnVmZmVyZWQgd3JpdGVzIGxvY2sgb3V0IGRpcmVjdCBJL08KKwkJICogd3JpdGVzIC0gdGhlIGRpcmVjdCBJL08gd3JpdGUgY291bGQgaGF2ZSBleHRlbmRlZAorCQkgKiB0aGUgc2l6ZSBub250cmFuc2FjdGlvbmFsbHksIHRoZW4gZmluaXNoZWQgYmVmb3JlCisJCSAqIHdlIHN0YXJ0ZWQuICB4ZnNfd3JpdGVfZmlsZSB3aWxsIHRoaW5rIHRoYXQgdGhlIGZpbGUKKwkJICogZGlkbid0IGdyb3cgYnV0IHRoZSB1cGRhdGUgaXNuJ3Qgc2FmZSB1bmxlc3MgdGhlCisJCSAqIHNpemUgY2hhbmdlIGlzIGxvZ2dlZC4KKwkJICoKKwkJICogRm9yY2UgdGhlIGxvZyBpZiB3ZSd2ZSBjb21taXR0ZWQgYSB0cmFuc2FjdGlvbgorCQkgKiBhZ2FpbnN0IHRoZSBpbm9kZSBvciBpZiBzb21lb25lIGVsc2UgaGFzIGFuZAorCQkgKiB0aGUgY29tbWl0IHJlY29yZCBoYXNuJ3QgZ29uZSB0byBkaXNrIChlLmcuCisJCSAqIHRoZSBpbm9kZSBpcyBwaW5uZWQpLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQKKwkJICogYWxsIGNoYW5nZXMgYWZmZWN0aW5nIHRoZSBpbm9kZSBhcmUgcGVybWFuZW50CisJCSAqIHdoZW4gd2UgcmV0dXJuLgorCQkgKi8KKwkJaWYgKGlpcCAmJiBpaXAtPmlsaV9sYXN0X2xzbikgeworCQkJeGZzX2xvZ19mb3JjZShtcCwgaWlwLT5pbGlfbGFzdF9sc24sCisJCQkJCVhGU19MT0dfRk9SQ0UgfCBYRlNfTE9HX1NZTkMpOworCQl9IGVsc2UgaWYgKHhmc19pcGluY291bnQoaXApID4gMCkgeworCQkJeGZzX2xvZ19mb3JjZShtcCwgKHhmc19sc25fdCkwLAorCQkJCQlYRlNfTE9HX0ZPUkNFIHwgWEZTX0xPR19TWU5DKTsKKwkJfQorCisJfSBlbHNlIHsKKwkJeGZzX3RyYW5zX3QJKnRwOworCisJCS8qCisJCSAqIE9fU1lOQyBvciBPX0RTWU5DIF93aXRoXyBhIHNpemUgdXBkYXRlIGFyZSBoYW5kbGVkCisJCSAqIHRoZSBzYW1lIHdheS4KKwkJICoKKwkJICogSWYgdGhlIHdyaXRlIHdhcyBzeW5jaHJvbm91cyB0aGVuIHdlIG5lZWQgdG8gbWFrZQorCQkgKiBzdXJlIHRoYXQgdGhlIGlub2RlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHBlcm1hbmVudC4KKwkJICogV2UnbGwgaGF2ZSB1cGRhdGVkIHRoZSB0aW1lc3RhbXAgYWJvdmUsIHNvIGhlcmUKKwkJICogd2UgdXNlIGEgc3luY2hyb25vdXMgdHJhbnNhY3Rpb24gdG8gbG9nIHRoZSBpbm9kZS4KKwkJICogSXQncyBub3QgZmFzdCwgYnV0IGl0J3MgbmVjZXNzYXJ5LgorCQkgKgorCQkgKiBJZiB0aGlzIGEgZHN5bmMgd3JpdGUgYW5kIHRoZSBzaXplIGdvdCBjaGFuZ2VkCisJCSAqIG5vbi10cmFuc2FjdGlvbmFsbHksIHRoZW4gd2UgbmVlZCB0byBlbnN1cmUgdGhhdAorCQkgKiB0aGUgc2l6ZSBjaGFuZ2UgZ2V0cyBsb2dnZWQgaW4gYSBzeW5jaHJvbm91cworCQkgKiB0cmFuc2FjdGlvbi4KKwkJICovCisJCXRwID0geGZzX3RyYW5zX2FsbG9jKG1wLCBYRlNfVFJBTlNfV1JJVEVfU1lOQyk7CisJCWlmICgoZXJyb3IgPSB4ZnNfdHJhbnNfcmVzZXJ2ZSh0cCwgMCwKKwkJCQkJCVhGU19TV1JJVEVfTE9HX1JFUyhtcCksCisJCQkJCQkwLCAwLCAwKSkpIHsKKwkJCS8qIFRyYW5zYWN0aW9uIHJlc2VydmUgZmFpbGVkICovCisJCQl4ZnNfdHJhbnNfY2FuY2VsKHRwLCAwKTsKKwkJfSBlbHNlIHsKKwkJCS8qIFRyYW5zYWN0aW9uIHJlc2VydmUgc3VjY2Vzc2Z1bCAqLworCQkJeGZzX2lsb2NrKGlwLCBYRlNfSUxPQ0tfRVhDTCk7CisJCQl4ZnNfdHJhbnNfaWpvaW4odHAsIGlwLCBYRlNfSUxPQ0tfRVhDTCk7CisJCQl4ZnNfdHJhbnNfaWhvbGQodHAsIGlwKTsKKwkJCXhmc190cmFuc19sb2dfaW5vZGUodHAsIGlwLCBYRlNfSUxPR19DT1JFKTsKKwkJCXhmc190cmFuc19zZXRfc3luYyh0cCk7CisJCQllcnJvciA9IHhmc190cmFuc19jb21taXQodHAsIDAsIE5VTEwpOworCQkJeGZzX2l1bmxvY2soaXAsIFhGU19JTE9DS19FWENMKTsKKwkJfQorCX0KKworCXJldHVybiBlcnJvcjsKK30KKworLyoKICAqIEZvcmNlIGEgc2h1dGRvd24gb2YgdGhlIGZpbGVzeXN0ZW0gaW5zdGFudGx5IHdoaWxlIGtlZXBpbmcKICAqIHRoZSBmaWxlc3lzdGVtIGNvbnNpc3RlbnQuIFdlIGRvbid0IGRvIGFuIHVubW91bnQgaGVyZTsganVzdCBzaHV0ZG93bgogICogdGhlIHNob3AsIG1ha2Ugc3VyZSB0aGF0IGFic29sdXRlbHkgbm90aGluZyBwZXJzaXN0ZW50IGhhcHBlbnMgdG8KQEAgLTEwOSwxMiArMTkxLDEyIEBACiAJeGZzX21vdW50X3QJKm1wOwogCiAJbXAgPSBYRlNfQkhWVE9NKGJkcCk7Ci0JbG9nZXJyb3IgPSBmbGFncyAmIFhGU19MT0dfSU9fRVJST1I7CisJbG9nZXJyb3IgPSBmbGFncyAmIFNIVVRET1dOX0xPR19JT19FUlJPUjsKIAotCWlmICghKGZsYWdzICYgWEZTX0ZPUkNFX1VNT1VOVCkpIHsKLQkJY21uX2VycihDRV9OT1RFLAotCQkieGZzX2ZvcmNlX3NodXRkb3duKCVzLDB4JXgpIGNhbGxlZCBmcm9tIGxpbmUgJWQgb2YgZmlsZSAlcy4gIFJldHVybiBhZGRyZXNzID0gMHglcCIsCi0JCQltcC0+bV9mc25hbWUsZmxhZ3MsbG5udW0sZm5hbWUsX19yZXR1cm5fYWRkcmVzcyk7CisJaWYgKCEoZmxhZ3MgJiBTSFVURE9XTl9GT1JDRV9VTU9VTlQpKSB7CisJCWNtbl9lcnIoQ0VfTk9URSwgInhmc19mb3JjZV9zaHV0ZG93biglcywweCV4KSBjYWxsZWQgZnJvbSAiCisJCQkJICJsaW5lICVkIG9mIGZpbGUgJXMuICBSZXR1cm4gYWRkcmVzcyA9IDB4JXAiLAorCQkJbXAtPm1fZnNuYW1lLCBmbGFncywgbG5udW0sIGZuYW1lLCBfX3JldHVybl9hZGRyZXNzKTsKIAl9CiAJLyoKIAkgKiBObyBuZWVkIHRvIGR1cGxpY2F0ZSBlZmZvcnRzLgpAQCAtMTI1LDMzICsyMDcsMzcgQEAKIAkvKgogCSAqIFRoaXMgZmxhZ3MgWEZTX01PVU5UX0ZTX1NIVVRET1dOLCBtYWtlcyBzdXJlIHRoYXQgd2UgZG9uJ3QKIAkgKiBxdWV1ZSB1cCBhbnlib2R5IG5ldyBvbiB0aGUgbG9nIHJlc2VydmF0aW9ucywgYW5kIHdha2VzIHVwCi0JICogZXZlcnlib2R5IHdobydzIHNsZWVwaW5nIG9uIGxvZyByZXNlcnZhdGlvbnMgYW5kIHRlbGxzCi0JICogdGhlbSB0aGUgYmFkIG5ld3MuCisJICogZXZlcnlib2R5IHdobydzIHNsZWVwaW5nIG9uIGxvZyByZXNlcnZhdGlvbnMgdG8gdGVsbCB0aGVtCisJICogdGhlIGJhZCBuZXdzLgogCSAqLwogCWlmICh4ZnNfbG9nX2ZvcmNlX3Vtb3VudChtcCwgbG9nZXJyb3IpKQogCQlyZXR1cm47CiAKLQlpZiAoZmxhZ3MgJiBYRlNfQ09SUlVQVF9JTkNPUkUpIHsKKwlpZiAoZmxhZ3MgJiBTSFVURE9XTl9DT1JSVVBUX0lOQ09SRSkgewogCQl4ZnNfY21uX2VycihYRlNfUFRBR19TSFVURE9XTl9DT1JSVVBULCBDRV9BTEVSVCwgbXAsCiAgICAgIkNvcnJ1cHRpb24gb2YgaW4tbWVtb3J5IGRhdGEgZGV0ZWN0ZWQuICBTaHV0dGluZyBkb3duIGZpbGVzeXN0ZW06ICVzIiwKIAkJCW1wLT5tX2ZzbmFtZSk7CiAJCWlmIChYRlNfRVJSTEVWRUxfSElHSCA8PSB4ZnNfZXJyb3JfbGV2ZWwpIHsKIAkJCXhmc19zdGFja190cmFjZSgpOwogCQl9Ci0JfSBlbHNlIGlmICghKGZsYWdzICYgWEZTX0ZPUkNFX1VNT1VOVCkpIHsKKwl9IGVsc2UgaWYgKCEoZmxhZ3MgJiBTSFVURE9XTl9GT1JDRV9VTU9VTlQpKSB7CiAJCWlmIChsb2dlcnJvcikgewogCQkJeGZzX2Ntbl9lcnIoWEZTX1BUQUdfU0hVVERPV05fTE9HRVJST1IsIENFX0FMRVJULCBtcCwKLQkJCSJMb2cgSS9PIEVycm9yIERldGVjdGVkLiAgU2h1dHRpbmcgZG93biBmaWxlc3lzdGVtOiAlcyIsCisJCSJMb2cgSS9PIEVycm9yIERldGVjdGVkLiAgU2h1dHRpbmcgZG93biBmaWxlc3lzdGVtOiAlcyIsCiAJCQkJbXAtPm1fZnNuYW1lKTsKLQkJfSBlbHNlIGlmICghKGZsYWdzICYgWEZTX1NIVVRET1dOX1JFTU9URV9SRVEpKSB7CisJCX0gZWxzZSBpZiAoZmxhZ3MgJiBTSFVURE9XTl9ERVZJQ0VfUkVRKSB7CiAJCQl4ZnNfY21uX2VycihYRlNfUFRBR19TSFVURE9XTl9JT0VSUk9SLCBDRV9BTEVSVCwgbXAsCi0JCQkJIkkvTyBFcnJvciBEZXRlY3RlZC4gIFNodXR0aW5nIGRvd24gZmlsZXN5c3RlbTogJXMiLAorCQkiQWxsIGRldmljZSBwYXRocyBsb3N0LiAgU2h1dHRpbmcgZG93biBmaWxlc3lzdGVtOiAlcyIsCisJCQkJbXAtPm1fZnNuYW1lKTsKKwkJfSBlbHNlIGlmICghKGZsYWdzICYgU0hVVERPV05fUkVNT1RFX1JFUSkpIHsKKwkJCXhmc19jbW5fZXJyKFhGU19QVEFHX1NIVVRET1dOX0lPRVJST1IsIENFX0FMRVJULCBtcCwKKwkJIkkvTyBFcnJvciBEZXRlY3RlZC4gIFNodXR0aW5nIGRvd24gZmlsZXN5c3RlbTogJXMiLAogCQkJCW1wLT5tX2ZzbmFtZSk7CiAJCX0KIAl9Ci0JaWYgKCEoZmxhZ3MgJiBYRlNfRk9SQ0VfVU1PVU5UKSkgewotCQljbW5fZXJyKENFX0FMRVJULAotCQkiUGxlYXNlIHVtb3VudCB0aGUgZmlsZXN5c3RlbSwgYW5kIHJlY3RpZnkgdGhlIHByb2JsZW0ocykiKTsKKwlpZiAoIShmbGFncyAmIFNIVVRET1dOX0ZPUkNFX1VNT1VOVCkpIHsKKwkJY21uX2VycihDRV9BTEVSVCwgIlBsZWFzZSB1bW91bnQgdGhlIGZpbGVzeXN0ZW0sICIKKwkJCQkgICJhbmQgcmVjdGlmeSB0aGUgcHJvYmxlbShzKSIpOwogCX0KIH0KIApAQCAtMzM1LDcgKzQyMSw3IEBACiAJCSAqIGZyb20gYndyaXRlIGFuZCB3ZSBjb3VsZCBiZSB0cmFjaW5nIGEgYnVmZmVyIHRoYXQgaGFzCiAJCSAqIGJlZW4gcmV1c2VkLgogCQkgKi8KLQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfTUVUQURBVEFfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX01FVEFfSU9fRVJST1IpOwogCX0KIAlyZXR1cm4gKGVycm9yKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfcncuaCBiL2ZzL3hmcy94ZnNfcncuaAppbmRleCBlNjM3OTU2Li4xODhiMjk2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3J3LmgKKysrIGIvZnMveGZzL3hmc19ydy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAzLDIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDYgU2lsaWNvbiBHcmFwaGljcywgSW5jLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03NSw2ICs3NSw3IEBACiAgKiBQcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4geGZzX3J3LmMuCiAgKi8KIGV4dGVybiBpbnQgeGZzX3dyaXRlX2NsZWFyX3NldHVpZChzdHJ1Y3QgeGZzX2lub2RlICppcCk7CitleHRlcm4gaW50IHhmc193cml0ZV9zeW5jX2xvZ2ZvcmNlKHN0cnVjdCB4ZnNfbW91bnQgKm1wLCBzdHJ1Y3QgeGZzX2lub2RlICppcCk7CiBleHRlcm4gaW50IHhmc19id3JpdGUoc3RydWN0IHhmc19tb3VudCAqbXAsIHN0cnVjdCB4ZnNfYnVmICpicCk7CiBleHRlcm4gaW50IHhmc19iaW9lcnJvcihzdHJ1Y3QgeGZzX2J1ZiAqYnApOwogZXh0ZXJuIGludCB4ZnNfYmlvZXJyb3JfcmVsc2Uoc3RydWN0IHhmc19idWYgKmJwKTsKQEAgLTg3LDkgKzg4LDEwIEBACiAvKgogICogUHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHhmc192bm9kZW9wcy5jLgogICovCi1leHRlcm4gaW50IHhmc19yd2xvY2soYmh2X2Rlc2NfdCAqYmRwLCB2cndsb2NrX3Qgd3JpdGVfbG9jayk7Ci1leHRlcm4gdm9pZCB4ZnNfcnd1bmxvY2soYmh2X2Rlc2NfdCAqYmRwLCB2cndsb2NrX3Qgd3JpdGVfbG9jayk7Ci1leHRlcm4gaW50IHhmc19zZXRhdHRyKGJodl9kZXNjX3QgKmJkcCwgdmF0dHJfdCAqdmFwLCBpbnQgZmxhZ3MsIGNyZWRfdCAqY3JlZHApOworZXh0ZXJuIGludCB4ZnNfcndsb2NrKGJodl9kZXNjX3QgKmJkcCwgYmh2X3Zyd2xvY2tfdCB3cml0ZV9sb2NrKTsKK2V4dGVybiB2b2lkIHhmc19yd3VubG9jayhiaHZfZGVzY190ICpiZHAsIGJodl92cndsb2NrX3Qgd3JpdGVfbG9jayk7CitleHRlcm4gaW50IHhmc19zZXRhdHRyKGJodl9kZXNjX3QgKiwgYmh2X3ZhdHRyX3QgKnZhcCwgaW50IGZsYWdzLAorCQkgICAgICAgY3JlZF90ICpjcmVkcCk7CiBleHRlcm4gaW50IHhmc19jaGFuZ2VfZmlsZV9zcGFjZShiaHZfZGVzY190ICpiZHAsIGludCBjbWQsIHhmc19mbG9jazY0X3QgKmJmLAogCQkJCSB4ZnNfb2ZmX3Qgb2Zmc2V0LCBjcmVkX3QgKmNyZWRwLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIGludCB4ZnNfc2V0X2RtYXR0cnMoYmh2X2Rlc2NfdCAqYmRwLCB1X2ludCBldm1hc2ssIHVfaW50MTZfdCBzdGF0ZSwKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnMuYyBiL2ZzL3hmcy94ZnNfdHJhbnMuYwppbmRleCA4ZDA1NmNlLi5lZTI3MjFlIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zLmMKKysrIGIvZnMveGZzL3hmc190cmFucy5jCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCkBAIC0zMyw3ICszMiw2IEBACiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC0yMzYsMTEgKzIzNCw4IEBACiAJeGZzX21vdW50X3QJKm1wLAogCXVpbnQJCXR5cGUpCiB7Ci0JZnNfY2hlY2tfZnJvemVuKFhGU19NVE9WRlMobXApLCBTQl9GUkVFWkVfVFJBTlMpOwotCWF0b21pY19pbmMoJm1wLT5tX2FjdGl2ZV90cmFucyk7Ci0KLQlyZXR1cm4gKF94ZnNfdHJhbnNfYWxsb2MobXAsIHR5cGUpKTsKLQorCXZmc193YWl0X2Zvcl9mcmVlemUoWEZTX01UT1ZGUyhtcCksIFNCX0ZSRUVaRV9UUkFOUyk7CisJcmV0dXJuIF94ZnNfdHJhbnNfYWxsb2MobXAsIHR5cGUpOwogfQogCiB4ZnNfdHJhbnNfdCAqCkBAIC0yNTAsMTIgKzI0NSw5IEBACiB7CiAJeGZzX3RyYW5zX3QJKnRwOwogCi0JQVNTRVJUKHhmc190cmFuc196b25lICE9IE5VTEwpOwotCXRwID0ga21lbV96b25lX3phbGxvYyh4ZnNfdHJhbnNfem9uZSwgS01fU0xFRVApOworCWF0b21pY19pbmMoJm1wLT5tX2FjdGl2ZV90cmFucyk7CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIHN0cnVjdHVyZS4KLQkgKi8KKwl0cCA9IGttZW1fem9uZV96YWxsb2MoeGZzX3RyYW5zX3pvbmUsIEtNX1NMRUVQKTsKIAl0cC0+dF9tYWdpYyA9IFhGU19UUkFOU19NQUdJQzsKIAl0cC0+dF90eXBlID0gdHlwZTsKIAl0cC0+dF9tb3VudHAgPSBtcDsKQEAgLTI2Myw4ICsyNTUsNyBAQAogCXRwLT50X2J1c3lfZnJlZSA9IFhGU19MQkNfTlVNX1NMT1RTOwogCVhGU19MSUNfSU5JVCgmKHRwLT50X2l0ZW1zKSk7CiAJWEZTX0xCQ19JTklUKCYodHAtPnRfYnVzeSkpOwotCi0JcmV0dXJuICh0cCk7CisJcmV0dXJuIHRwOwogfQogCiAvKgpAQCAtMzAzLDcgKzI5NCw3IEBACiAJdHAtPnRfYmxrX3JlcyA9IHRwLT50X2Jsa19yZXNfdXNlZDsKIAludHAtPnRfcnR4X3JlcyA9IHRwLT50X3J0eF9yZXMgLSB0cC0+dF9ydHhfcmVzX3VzZWQ7CiAJdHAtPnRfcnR4X3JlcyA9IHRwLT50X3J0eF9yZXNfdXNlZDsKLQlQRkxBR1NfRFVQKCZ0cC0+dF9wZmxhZ3MsICZudHAtPnRfcGZsYWdzKTsKKwludHAtPnRfcGZsYWdzID0gdHAtPnRfcGZsYWdzOwogCiAJWEZTX1RSQU5TX0RVUF9EUUlORk8odHAtPnRfbW91bnRwLCB0cCwgbnRwKTsKIApAQCAtMzM1LDE0ICszMjYsMTEgQEAKIAl1aW50CQlsb2djb3VudCkKIHsKIAlpbnQJCWxvZ19mbGFnczsKLQlpbnQJCWVycm9yOwotCWludAlyc3ZkOwotCi0JZXJyb3IgPSAwOwotCXJzdmQgPSAodHAtPnRfZmxhZ3MgJiBYRlNfVFJBTlNfUkVTRVJWRSkgIT0gMDsKKwlpbnQJCWVycm9yID0gMDsKKwlpbnQJCXJzdmQgPSAodHAtPnRfZmxhZ3MgJiBYRlNfVFJBTlNfUkVTRVJWRSkgIT0gMDsKIAogCS8qIE1hcmsgdGhpcyB0aHJlYWQgYXMgYmVpbmcgaW4gYSB0cmFuc2FjdGlvbiAqLwotICAgICAgICBQRkxBR1NfU0VUX0ZTVFJBTlMoJnRwLT50X3BmbGFncyk7CisJY3VycmVudF9zZXRfZmxhZ3NfbmVzdGVkKCZ0cC0+dF9wZmxhZ3MsIFBGX0ZTVFJBTlMpOwogCiAJLyoKIAkgKiBBdHRlbXB0IHRvIHJlc2VydmUgdGhlIG5lZWRlZCBkaXNrIGJsb2NrcyBieSBkZWNyZW1lbnRpbmcKQEAgLTM1Myw3ICszNDEsNyBAQAogCQllcnJvciA9IHhmc19tb2RfaW5jb3JlX3NiKHRwLT50X21vdW50cCwgWEZTX1NCU19GREJMT0NLUywKIAkJCQkJICAtYmxvY2tzLCByc3ZkKTsKIAkJaWYgKGVycm9yICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBGTEFHU19SRVNUT1JFX0ZTVFJBTlMoJnRwLT50X3BmbGFncyk7CisJCQljdXJyZW50X3Jlc3RvcmVfZmxhZ3NfbmVzdGVkKCZ0cC0+dF9wZmxhZ3MsIFBGX0ZTVFJBTlMpOwogCQkJcmV0dXJuIChYRlNfRVJST1IoRU5PU1BDKSk7CiAJCX0KIAkJdHAtPnRfYmxrX3JlcyArPSBibG9ja3M7CkBAIC00MjYsOSArNDE0LDkgQEAKIAkJdHAtPnRfYmxrX3JlcyA9IDA7CiAJfQogCi0gICAgICAgIFBGTEFHU19SRVNUT1JFX0ZTVFJBTlMoJnRwLT50X3BmbGFncyk7CisJY3VycmVudF9yZXN0b3JlX2ZsYWdzX25lc3RlZCgmdHAtPnRfcGZsYWdzLCBQRl9GU1RSQU5TKTsKIAotCXJldHVybiAoZXJyb3IpOworCXJldHVybiBlcnJvcjsKIH0KIAogCkBAIC04MTksNyArODA3LDcgQEAKIAkJCWlmIChjb21taXRfbHNuID09IC0xICYmICFzaHV0ZG93bikKIAkJCQlzaHV0ZG93biA9IFhGU19FUlJPUihFSU8pOwogCQl9Ci0gICAgICAgICAgICAgICAgUEZMQUdTX1JFU1RPUkVfRlNUUkFOUygmdHAtPnRfcGZsYWdzKTsKKwkJY3VycmVudF9yZXN0b3JlX2ZsYWdzX25lc3RlZCgmdHAtPnRfcGZsYWdzLCBQRl9GU1RSQU5TKTsKIAkJeGZzX3RyYW5zX2ZyZWVfaXRlbXModHAsIHNodXRkb3duPyBYRlNfVFJBTlNfQUJPUlQgOiAwKTsKIAkJeGZzX3RyYW5zX2ZyZWVfYnVzeSh0cCk7CiAJCXhmc190cmFuc19mcmVlKHRwKTsKQEAgLTg0Niw3ICs4MzQsNyBAQAogCSAqLwogCW52ZWMgPSB4ZnNfdHJhbnNfY291bnRfdmVjcyh0cCk7CiAJaWYgKG52ZWMgPT0gMCkgewotCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFhGU19MT0dfSU9fRVJST1IpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0xPR19JT19FUlJPUik7CiAJCWdvdG8gc2h1dF91c19kb3duOwogCX0gZWxzZSBpZiAobnZlYyA8PSBYRlNfVFJBTlNfTE9HVkVDX0NPVU5UKSB7CiAJCWxvZ192ZWN0b3IgPSBsb2dfdmVjdG9yX2Zhc3Q7CkBAIC04ODQsNyArODcyLDcgQEAKIAkgKiBoYWQgcGlubmVkLCBjbGVhbiB1cCwgZnJlZSB0cmFucyBzdHJ1Y3R1cmUsIGFuZCByZXR1cm4gZXJyb3IuCiAJICovCiAJaWYgKGVycm9yIHx8IGNvbW1pdF9sc24gPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQRkxBR1NfUkVTVE9SRV9GU1RSQU5TKCZ0cC0+dF9wZmxhZ3MpOworCQljdXJyZW50X3Jlc3RvcmVfZmxhZ3NfbmVzdGVkKCZ0cC0+dF9wZmxhZ3MsIFBGX0ZTVFJBTlMpOwogCQl4ZnNfdHJhbnNfdW5jb21taXQodHAsIGZsYWdzfFhGU19UUkFOU19BQk9SVCk7CiAJCXJldHVybiBYRlNfRVJST1IoRUlPKTsKIAl9CkBAIC05MjYsNyArOTE0LDcgQEAKIAkvKgogCSAqIE1hcmsgdGhpcyB0aHJlYWQgYXMgbm8gbG9uZ2VyIGJlaW5nIGluIGEgdHJhbnNhY3Rpb24KIAkgKi8KLQlQRkxBR1NfUkVTVE9SRV9GU1RSQU5TKCZ0cC0+dF9wZmxhZ3MpOworCWN1cnJlbnRfcmVzdG9yZV9mbGFnc19uZXN0ZWQoJnRwLT50X3BmbGFncywgUEZfRlNUUkFOUyk7CiAKIAkvKgogCSAqIE9uY2UgYWxsIHRoZSBpdGVtcyBvZiB0aGUgdHJhbnNhY3Rpb24gaGF2ZSBiZWVuIGNvcGllZApAQCAtMTE0OCw3ICsxMTM2LDcgQEAKIAkgKi8KIAlpZiAoKHRwLT50X2ZsYWdzICYgWEZTX1RSQU5TX0RJUlRZKSAmJiAhWEZTX0ZPUkNFRF9TSFVURE9XTihtcCkpIHsKIAkJWEZTX0VSUk9SX1JFUE9SVCgieGZzX3RyYW5zX2NhbmNlbCIsIFhGU19FUlJMRVZFTF9MT1csIG1wKTsKLQkJeGZzX2ZvcmNlX3NodXRkb3duKG1wLCBYRlNfQ09SUlVQVF9JTkNPUkUpOworCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0NPUlJVUFRfSU5DT1JFKTsKIAl9CiAjaWZkZWYgREVCVUcKIAlpZiAoIShmbGFncyAmIFhGU19UUkFOU19BQk9SVCkpIHsKQEAgLTExODIsNyArMTE3MCw3IEBACiAJfQogCiAJLyogbWFyayB0aGlzIHRocmVhZCBhcyBubyBsb25nZXIgYmVpbmcgaW4gYSB0cmFuc2FjdGlvbiAqLwotICAgICAgICBQRkxBR1NfUkVTVE9SRV9GU1RSQU5TKCZ0cC0+dF9wZmxhZ3MpOworCWN1cnJlbnRfcmVzdG9yZV9mbGFnc19uZXN0ZWQoJnRwLT50X3BmbGFncywgUEZfRlNUUkFOUyk7CiAKIAl4ZnNfdHJhbnNfZnJlZV9pdGVtcyh0cCwgZmxhZ3MpOwogCXhmc190cmFuc19mcmVlX2J1c3kodHApOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc190cmFucy5oIGIvZnMveGZzL3hmc190cmFucy5oCmluZGV4IDEwMGQ5YTQuLmNiNjVjM2EgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdHJhbnMuaAorKysgYi9mcy94ZnMveGZzX3RyYW5zLmgKQEAgLTgwNSwxMiArODA1LDkgQEAKIAkoKG1wKS0+bV9zYi5zYl9pbm9kZXNpemUgKyBcCiAJIChtcCktPm1fc2Iuc2Jfc2VjdHNpemUgKiAyICsgXAogCSAobXApLT5tX2RpcmJsa3NpemUgKyBcCi0JIChYRlNfRElSX0lTX1YxKG1wKSA/IDAgOiBcCi0JICAgIFhGU19GU0JfVE9fQihtcCwgKFhGU19EQUVOVEVSX0JNQVAxQihtcCwgWEZTX0RBVEFfRk9SSykgKyAxKSkpICsgXAorCSBYRlNfRlNCX1RPX0IobXAsIChYRlNfREFFTlRFUl9CTUFQMUIobXAsIFhGU19EQVRBX0ZPUkspICsgMSkpICsgXAogCSBYRlNfQUxMT0NGUkVFX0xPR19SRVMobXAsIDEpICsgXAotCSAoMTI4ICogKDQgKyBcCi0JCSAoWEZTX0RJUl9JU19WMShtcCkgPyAwIDogXAotCQkJIFhGU19EQUVOVEVSX0JNQVAxQihtcCwgWEZTX0RBVEFfRk9SSykgKyAxKSArIFwKKwkgKDEyOCAqICg0ICsgKFhGU19EQUVOVEVSX0JNQVAxQihtcCwgWEZTX0RBVEFfRk9SSykgKyAxKSArIFwKIAkJIFhGU19BTExPQ0ZSRUVfTE9HX0NPVU5UKG1wLCAxKSkpKQogCiAjZGVmaW5lCVhGU19BRERBRk9SS19MT0dfUkVTKG1wKQkoKG1wKS0+bV9yZXNlcnZhdGlvbnMudHJfYWRkYWZvcmspCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3RyYW5zX2FpbC5jIGIvZnMveGZzL3hmc190cmFuc19haWwuYwppbmRleCAxOWFiMjRhLi41NThjODdmIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zX2FpbC5jCisrKyBiL2ZzL3hmcy94ZnNfdHJhbnNfYWlsLmMKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJ4ZnNfaW51bS5oIgogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnNfcHJpdi5oIgpAQCAtMzYzLDkgKzM2MiwxMCBAQAogCQkJQUlMX1VOTE9DSyhtcCwgcyk7CiAJCWVsc2UgewogCQkJeGZzX2Ntbl9lcnIoWEZTX1BUQUdfQUlMREVMRVRFLCBDRV9BTEVSVCwgbXAsCi0JCQkJInhmc190cmFuc19kZWxldGVfYWlsOiBhdHRlbXB0aW5nIHRvIGRlbGV0ZSBhIGxvZyBpdGVtIHRoYXQgaXMgbm90IGluIHRoZSBBSUwiKTsKKwkJIiVzOiBhdHRlbXB0aW5nIHRvIGRlbGV0ZSBhIGxvZyBpdGVtIHRoYXQgaXMgbm90IGluIHRoZSBBSUwiLAorCQkJCQlfX0ZVTkNUSU9OX18pOwogCQkJQUlMX1VOTE9DSyhtcCwgcyk7Ci0JCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFhGU19DT1JSVVBUX0lOQ09SRSk7CisJCQl4ZnNfZm9yY2Vfc2h1dGRvd24obXAsIFNIVVRET1dOX0NPUlJVUFRfSU5DT1JFKTsKIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfYnVmLmMgYi9mcy94ZnMveGZzX3RyYW5zX2J1Zi5jCmluZGV4IGM3NGMzMWUuLjYwYjZiODkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdHJhbnNfYnVmLmMKKysrIGIvZnMveGZzL3hmc190cmFuc19idWYuYwpAQCAtMjQsMTQgKzI0LDEyIEBACiAjaW5jbHVkZSAieGZzX3RyYW5zLmgiCiAjaW5jbHVkZSAieGZzX3NiLmgiCiAjaW5jbHVkZSAieGZzX2FnLmgiCi0jaW5jbHVkZSAieGZzX2Rpci5oIgogI2luY2x1ZGUgInhmc19kaXIyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX2JtYXBfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfaWFsbG9jX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC0zMjAsNyArMzE4LDcgQEAKIAkJCWlmICh4ZnNfZXJyb3JfdGFyZ2V0ID09IHRhcmdldCkgewogCQkJCWlmICgoKHhmc19yZXFfbnVtKyspICUgeGZzX2Vycm9yX21vZCkgPT0gMCkgewogCQkJCQl4ZnNfYnVmX3JlbHNlKGJwKTsKLQkJCQkJcHJpbnRrKCJSZXR1cm5pbmcgZXJyb3IhXG4iKTsKKwkJCQkJY21uX2VycihDRV9ERUJVRywgIlJldHVybmluZyBlcnJvciFcbiIpOwogCQkJCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7CiAJCQkJfQogCQkJfQpAQCAtMzY5LDcgKzM2Nyw3IEBACiAJCQkJICovCiAJCQkJaWYgKHRwLT50X2ZsYWdzICYgWEZTX1RSQU5TX0RJUlRZKQogCQkJCQl4ZnNfZm9yY2Vfc2h1dGRvd24odHAtPnRfbW91bnRwLAotCQkJCQkJCSAgIFhGU19NRVRBREFUQV9JT19FUlJPUik7CisJCQkJCQkJU0hVVERPV05fTUVUQV9JT19FUlJPUik7CiAJCQkJcmV0dXJuIGVycm9yOwogCQkJfQogCQl9CkBAIC00MTQsNyArNDEyLDcgQEAKIAkJeGZzX2lvZXJyb3JfYWxlcnQoInhmc190cmFuc19yZWFkX2J1ZiIsIG1wLAogCQkJCSAgYnAsIGJsa25vKTsKIAkJaWYgKHRwLT50X2ZsYWdzICYgWEZTX1RSQU5TX0RJUlRZKQotCQkJeGZzX2ZvcmNlX3NodXRkb3duKHRwLT50X21vdW50cCwgWEZTX01FVEFEQVRBX0lPX0VSUk9SKTsKKwkJCXhmc19mb3JjZV9zaHV0ZG93bih0cC0+dF9tb3VudHAsIFNIVVRET1dOX01FVEFfSU9fRVJST1IpOwogCQl4ZnNfYnVmX3JlbHNlKGJwKTsKIAkJcmV0dXJuIGVycm9yOwogCX0KQEAgLTQyMyw5ICs0MjEsOSBAQAogCQlpZiAoeGZzX2Vycm9yX3RhcmdldCA9PSB0YXJnZXQpIHsKIAkJCWlmICgoKHhmc19yZXFfbnVtKyspICUgeGZzX2Vycm9yX21vZCkgPT0gMCkgewogCQkJCXhmc19mb3JjZV9zaHV0ZG93bih0cC0+dF9tb3VudHAsCi0JCQkJCQkgICBYRlNfTUVUQURBVEFfSU9fRVJST1IpOworCQkJCQkJICAgU0hVVERPV05fTUVUQV9JT19FUlJPUik7CiAJCQkJeGZzX2J1Zl9yZWxzZShicCk7Ci0JCQkJcHJpbnRrKCJSZXR1cm5pbmcgZXJyb3IgaW4gdHJhbnMhXG4iKTsKKwkJCQljbW5fZXJyKENFX0RFQlVHLCAiUmV0dXJuaW5nIHRyYW5zIGVycm9yIVxuIik7CiAJCQkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3RyYW5zX2V4dGZyZWUuYyBiL2ZzL3hmcy94ZnNfdHJhbnNfZXh0ZnJlZS5jCmluZGV4IDdkN2Q2MjcuLmIyOTAyNzAgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdHJhbnNfZXh0ZnJlZS5jCisrKyBiL2ZzL3hmcy94ZnNfdHJhbnNfZXh0ZnJlZS5jCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAieGZzX2ludW0uaCIKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RtYXBpLmgiCiAjaW5jbHVkZSAieGZzX21vdW50LmgiCiAjaW5jbHVkZSAieGZzX3RyYW5zX3ByaXYuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYyBiL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYwppbmRleCA3YzU4OTRkLi5iOGRiMWQ1IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zX2lub2RlLmMKKysrIGIvZnMveGZzL3hmc190cmFuc19pbm9kZS5jCkBAIC0yNCwxNCArMjQsMTIgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19hbGxvY19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfaXRlbS5jIGIvZnMveGZzL3hmc190cmFuc19pdGVtLmMKaW5kZXggMTExN2Q2MC4uMjkxMmFhYyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc190cmFuc19pdGVtLmMKKysrIGIvZnMveGZzL3hmc190cmFuc19pdGVtLmMKQEAgLTQ5Myw3ICs0OTMsNyBAQAogCQkJCWJyZWFrOwogCQkJfSBlbHNlIHsKIAkJCQkvKiBvdXQtb2Ytb3JkZXIgdmFjYW5jeSAqLwotCQkJCXByaW50aygiT09PIHZhY2FuY3kgbGJjcCAweCVwXG4iLCBsYmNwKTsKKwkJCQljbW5fZXJyKENFX0RFQlVHLCAiT09PIHZhY2FuY3kgbGJjcCAweCVwXG4iLCBsYmNwKTsKIAkJCQlBU1NFUlQoMCk7CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfc3BhY2UuaCBiL2ZzL3hmcy94ZnNfdHJhbnNfc3BhY2UuaAppbmRleCA3ZmUzNzkyLi40ZWEyZTUwIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zX3NwYWNlLmgKKysrIGIvZnMveGZzL3hmc190cmFuc19zcGFjZS5oCkBAIC0zMCw4ICszMCw3IEBACiAJICBYRlNfRVhURU5UQUREX1NQQUNFX1JFUyhtcCx3KSkKICNkZWZpbmUJWEZTX0RBRU5URVJfMUIobXAsdykJKCh3KSA9PSBYRlNfREFUQV9GT1JLID8gKG1wKS0+bV9kaXJibGtmc2JzIDogMSkKICNkZWZpbmUJWEZTX0RBRU5URVJfREJTKG1wLHcpCVwKLQkoWEZTX0RBX05PREVfTUFYREVQVEggKyBcCi0JICgoWEZTX0RJUl9JU19WMihtcCkgJiYgKHcpID09IFhGU19EQVRBX0ZPUkspID8gMiA6IDApKQorCShYRlNfREFfTk9ERV9NQVhERVBUSCArICgoKHcpID09IFhGU19EQVRBX0ZPUkspID8gMiA6IDApKQogI2RlZmluZQlYRlNfREFFTlRFUl9CTE9DS1MobXAsdykJXAogCShYRlNfREFFTlRFUl8xQihtcCx3KSAqIFhGU19EQUVOVEVSX0RCUyhtcCx3KSkKICNkZWZpbmUJWEZTX0RBRU5URVJfQk1BUDFCKG1wLHcpCVwKQEAgLTQxLDEwICs0MCw3IEBACiAjZGVmaW5lCVhGU19EQUVOVEVSX1NQQUNFX1JFUyhtcCx3KQlcCiAJKFhGU19EQUVOVEVSX0JMT0NLUyhtcCx3KSArIFhGU19EQUVOVEVSX0JNQVBTKG1wLHcpKQogI2RlZmluZQlYRlNfREFSRU1PVkVfU1BBQ0VfUkVTKG1wLHcpCVhGU19EQUVOVEVSX0JNQVBTKG1wLHcpCi0jZGVmaW5lCVhGU19ESVJFTlRFUl9NQVhfU1BMSVQobXAsbmwpCVwKLQkoKChtcCktPm1fc2Iuc2JfYmxvY2tzaXplID09IDUxMiAmJiBcCi0JICBYRlNfRElSX0lTX1YxKG1wKSAmJiBcCi0JICAobmwpID49IFhGU19ESVJfTEVBRl9DQU5fRE9VQkxFX1NQTElUX0xFTikgPyAyIDogMSkKKyNkZWZpbmUJWEZTX0RJUkVOVEVSX01BWF9TUExJVChtcCxubCkJMQogI2RlZmluZQlYRlNfRElSRU5URVJfU1BBQ0VfUkVTKG1wLG5sKQlcCiAJKFhGU19EQUVOVEVSX1NQQUNFX1JFUyhtcCwgWEZTX0RBVEFfRk9SSykgKiBcCiAJIFhGU19ESVJFTlRFUl9NQVhfU1BMSVQobXAsbmwpKQpAQCAtNTcsOCArNTMsNyBAQAogICogU3BhY2UgcmVzZXJ2YXRpb24gdmFsdWVzIGZvciB2YXJpb3VzIHRyYW5zYWN0aW9ucy4KICAqLwogI2RlZmluZQlYRlNfQUREQUZPUktfU1BBQ0VfUkVTKG1wKQlcCi0JKChtcCktPm1fZGlyYmxrZnNicyArIFwKLQkgKFhGU19ESVJfSVNfVjEobXApID8gMCA6IFhGU19EQUVOVEVSX0JNQVAxQihtcCwgWEZTX0RBVEFfRk9SSykpKQorCSgobXApLT5tX2RpcmJsa2ZzYnMgKyBYRlNfREFFTlRFUl9CTUFQMUIobXAsIFhGU19EQVRBX0ZPUkspKQogI2RlZmluZQlYRlNfQVRUUlJNX1NQQUNFX1JFUyhtcCkJXAogCVhGU19EQVJFTU9WRV9TUEFDRV9SRVMobXAsIFhGU19BVFRSX0ZPUkspCiAvKiBUaGlzIG1hY3JvIGlzIG5vdCB1c2VkIC0gc2VlIGlubGluZSBjb2RlIGluIHhmc19hdHRyX3NldCAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc191dGlscy5jIGIvZnMveGZzL3hmc191dGlscy5jCmluZGV4IDM0NjU0ZWMuLjkwMTRkN2UgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdXRpbHMuYworKysgYi9mcy94ZnMveGZzX3V0aWxzLmMKQEAgLTI0LDEyICsyNCwxMCBAQAogI2luY2x1ZGUgInhmc190cmFucy5oIgogI2luY2x1ZGUgInhmc19zYi5oIgogI2luY2x1ZGUgInhmc19hZy5oIgotI2luY2x1ZGUgInhmc19kaXIuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMi5oIgogI2luY2x1ZGUgInhmc19kbWFwaS5oIgogI2luY2x1ZGUgInhmc19tb3VudC5oIgogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9zZi5oIgogI2luY2x1ZGUgInhmc19kaXIyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2F0dHJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlub2RlLmgiCkBAIC01MSwxMCArNDksMTAgQEAKICAqLwogaW50CiB4ZnNfZ2V0X2Rpcl9lbnRyeSgKLQl2bmFtZV90CQkqZGVudHJ5LAorCWJodl92bmFtZV90CSpkZW50cnksCiAJeGZzX2lub2RlX3QJKippcHApCiB7Ci0Jdm5vZGVfdAkJKnZwOworCWJodl92bm9kZV90CSp2cDsKIAogCXZwID0gVk5BTUVfVE9fVk5PREUoZGVudHJ5KTsKIApAQCAtNjksMTEgKzY3LDExIEBACiB4ZnNfZGlyX2xvb2t1cF9pbnQoCiAJYmh2X2Rlc2NfdAkqZGlyX2JkcCwKIAl1aW50CQlsb2NrX21vZGUsCi0Jdm5hbWVfdAkJKmRlbnRyeSwKKwliaHZfdm5hbWVfdAkqZGVudHJ5LAogCXhmc19pbm9fdAkqaW51bSwKIAl4ZnNfaW5vZGVfdAkqKmlwcCkKIHsKLQl2bm9kZV90CQkqZGlyX3ZwOworCWJodl92bm9kZV90CSpkaXJfdnA7CiAJeGZzX2lub2RlX3QJKmRwOwogCWludAkJZXJyb3I7CiAKQEAgLTgyLDggKzgwLDcgQEAKIAogCWRwID0gWEZTX0JIVlRPSShkaXJfYmRwKTsKIAotCWVycm9yID0gWEZTX0RJUl9MT09LVVAoZHAtPmlfbW91bnQsIE5VTEwsIGRwLAotCQkJCVZOQU1FKGRlbnRyeSksIFZOQU1FTEVOKGRlbnRyeSksIGludW0pOworCWVycm9yID0geGZzX2Rpcl9sb29rdXAoTlVMTCwgZHAsIFZOQU1FKGRlbnRyeSksIFZOQU1FTEVOKGRlbnRyeSksIGludW0pOwogCWlmICghZXJyb3IpIHsKIAkJLyoKIAkJICogVW5sb2NrIHRoZSBkaXJlY3RvcnkuIFdlIGRvIHRoaXMgYmVjYXVzZSB3ZSBjYW4ndApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc191dGlscy5oIGIvZnMveGZzL3hmc191dGlscy5oCmluZGV4IDQ3MjY2MWEuLmZlOTUzZTkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdXRpbHMuaAorKysgYi9mcy94ZnMveGZzX3V0aWxzLmgKQEAgLTIzLDkgKzIzLDEwIEBACiAjZGVmaW5lCUlUUkFDRShpcCkJdm5fdHJhY2VfcmVmKFhGU19JVE9WKGlwKSwgX19GSUxFX18sIF9fTElORV9fLCBcCiAJCQkJKGluc3RfdCAqKV9fcmV0dXJuX2FkZHJlc3MpCiAKLWV4dGVybiBpbnQgeGZzX3JlbmFtZSAoYmh2X2Rlc2NfdCAqLCB2bmFtZV90ICosIHZub2RlX3QgKiwgdm5hbWVfdCAqLCBjcmVkX3QgKik7Ci1leHRlcm4gaW50IHhmc19nZXRfZGlyX2VudHJ5ICh2bmFtZV90ICosIHhmc19pbm9kZV90ICoqKTsKLWV4dGVybiBpbnQgeGZzX2Rpcl9sb29rdXBfaW50IChiaHZfZGVzY190ICosIHVpbnQsIHZuYW1lX3QgKiwgeGZzX2lub190ICosCitleHRlcm4gaW50IHhmc19yZW5hbWUgKGJodl9kZXNjX3QgKiwgYmh2X3ZuYW1lX3QgKiwgYmh2X3Zub2RlX3QgKiwKKwkJCWJodl92bmFtZV90ICosIGNyZWRfdCAqKTsKK2V4dGVybiBpbnQgeGZzX2dldF9kaXJfZW50cnkgKGJodl92bmFtZV90ICosIHhmc19pbm9kZV90ICoqKTsKK2V4dGVybiBpbnQgeGZzX2Rpcl9sb29rdXBfaW50IChiaHZfZGVzY190ICosIHVpbnQsIGJodl92bmFtZV90ICosIHhmc19pbm9fdCAqLAogCQkJCXhmc19pbm9kZV90ICoqKTsKIGV4dGVybiBpbnQgeGZzX3RydW5jYXRlX2ZpbGUgKHhmc19tb3VudF90ICosIHhmc19pbm9kZV90ICopOwogZXh0ZXJuIGludCB4ZnNfZGlyX2lhbGxvYyAoeGZzX3RyYW5zX3QgKiosIHhmc19pbm9kZV90ICosIG1vZGVfdCwgeGZzX25saW5rX3QsCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3Zmc29wcy5jIGIvZnMveGZzL3hmc192ZnNvcHMuYwppbmRleCAzNmVhMWIyLi42Yzk2MzkxIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3Zmc29wcy5jCisrKyBiL2ZzL3hmcy94ZnNfdmZzb3BzLmMKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKQEAgLTMyLDcgKzMxLDYgQEAKICNpbmNsdWRlICJ4ZnNfYm1hcF9idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2NfYnRyZWUuaCIKICNpbmNsdWRlICJ4ZnNfYWxsb2NfYnRyZWUuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2RpcjJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfYXR0cl9zZi5oIgogI2luY2x1ZGUgInhmc19kaW5vZGUuaCIKQEAgLTEzMSw5ICsxMjksNiBAQAogI2lmZGVmIFhGU19CTUJUX1RSQUNFCiAJeGZzX2JtYnRfdHJhY2VfYnVmID0ga3RyYWNlX2FsbG9jKFhGU19CTUJUX1RSQUNFX1NJWkUsIEtNX1NMRUVQKTsKICNlbmRpZgotI2lmZGVmIFhGU19ESVJfVFJBQ0UKLQl4ZnNfZGlyX3RyYWNlX2J1ZiA9IGt0cmFjZV9hbGxvYyhYRlNfRElSX1RSQUNFX1NJWkUsIEtNX1NMRUVQKTsKLSNlbmRpZgogI2lmZGVmIFhGU19BVFRSX1RSQUNFCiAJeGZzX2F0dHJfdHJhY2VfYnVmID0ga3RyYWNlX2FsbG9jKFhGU19BVFRSX1RSQUNFX1NJWkUsIEtNX1NMRUVQKTsKICNlbmRpZgpAQCAtMTc3LDkgKzE3Miw2IEBACiAjaWZkZWYgWEZTX0FUVFJfVFJBQ0UKIAlrdHJhY2VfZnJlZSh4ZnNfYXR0cl90cmFjZV9idWYpOwogI2VuZGlmCi0jaWZkZWYgWEZTX0RJUl9UUkFDRQotCWt0cmFjZV9mcmVlKHhmc19kaXJfdHJhY2VfYnVmKTsKLSNlbmRpZgogI2lmZGVmIFhGU19CTUJUX1RSQUNFCiAJa3RyYWNlX2ZyZWUoeGZzX2JtYnRfdHJhY2VfYnVmKTsKICNlbmRpZgpAQCAtMjEyLDcgKzIwNCw3IEBACiAgKi8KIFNUQVRJQyBpbnQKIHhmc19zdGFydF9mbGFncygKLQlzdHJ1Y3QgdmZzCQkqdmZzLAorCXN0cnVjdCBiaHZfdmZzCQkqdmZzLAogCXN0cnVjdCB4ZnNfbW91bnRfYXJncwkqYXAsCiAJc3RydWN0IHhmc19tb3VudAkqbXApCiB7CkBAIC0zMzcsNyArMzI5LDcgQEAKICAqLwogU1RBVElDIGludAogeGZzX2ZpbmlzaF9mbGFncygKLQlzdHJ1Y3QgdmZzCQkqdmZzLAorCXN0cnVjdCBiaHZfdmZzCQkqdmZzLAogCXN0cnVjdCB4ZnNfbW91bnRfYXJncwkqYXAsCiAJc3RydWN0IHhmc19tb3VudAkqbXApCiB7CkBAIC00MjMsNyArNDE1LDcgQEAKIAlzdHJ1Y3QgeGZzX21vdW50X2FyZ3MJKmFyZ3MsCiAJY3JlZF90CQkJKmNyZWRwKQogewotCXN0cnVjdCB2ZnMJCSp2ZnNwID0gYmh2dG92ZnMoYmh2cCk7CisJc3RydWN0IGJodl92ZnMJCSp2ZnNwID0gYmh2dG92ZnMoYmh2cCk7CiAJc3RydWN0IGJodl9kZXNjCQkqcDsKIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19CSFZUT00oYmh2cCk7CiAJc3RydWN0IGJsb2NrX2RldmljZQkqZGRldiwgKmxvZ2RldiwgKnJ0ZGV2OwpAQCAtNTUyLDEwICs1NDQsMTAgQEAKIAlpbnQJCWZsYWdzLAogCWNyZWRfdAkJKmNyZWRwKQogewotCXN0cnVjdCB2ZnMJKnZmc3AgPSBiaHZ0b3ZmcyhiZHApOworCWJodl92ZnNfdAkqdmZzcCA9IGJodnRvdmZzKGJkcCk7CiAJeGZzX21vdW50X3QJKm1wID0gWEZTX0JIVlRPTShiZHApOwogCXhmc19pbm9kZV90CSpyaXA7Ci0Jdm5vZGVfdAkJKnJ2cDsKKwliaHZfdm5vZGVfdAkqcnZwOwogCWludAkJdW5tb3VudF9ldmVudF93YW50ZWQgPSAwOwogCWludAkJdW5tb3VudF9ldmVudF9mbGFncyA9IDA7CiAJaW50CQl4ZnNfdW5tb3VudGZzX25lZWRlZCA9IDA7CkBAIC02NjUsOSArNjU3LDggQEAKIAlpbnQJCQkJKmZsYWdzLAogCXN0cnVjdCB4ZnNfbW91bnRfYXJncwkJKmFyZ3MpCiB7Ci0Jc3RydWN0IHZmcwkqdmZzcCA9IGJodnRvdmZzKGJkcCk7CisJYmh2X3Zmc190CSp2ZnNwID0gYmh2dG92ZnMoYmRwKTsKIAl4ZnNfbW91bnRfdAkqbXAgPSBYRlNfQkhWVE9NKGJkcCk7Ci0JaW50CQllcnJvcjsKIAogCWlmICghKCpmbGFncyAmIE1TX1JET05MWSkpIHsJCQkvKiBydy9ybyAtPiBydyAqLwogCQlpZiAodmZzcC0+dmZzX2ZsYWcgJiBWRlNfUkRPTkxZKQpAQCAtNjc5LDcgKzY3MCw3IEBACiAJCQltcC0+bV9mbGFncyAmPSB+WEZTX01PVU5UX0JBUlJJRVI7CiAJCX0KIAl9IGVsc2UgaWYgKCEodmZzcC0+dmZzX2ZsYWcgJiBWRlNfUkRPTkxZKSkgewkvKiBydyAtPiBybyAqLwotCQlWRlNfU1lOQyh2ZnNwLCBTWU5DX0ZTREFUQXxTWU5DX0JERkxVU0h8U1lOQ19BVFRSLCBOVUxMLCBlcnJvcik7CisJCWJodl92ZnNfc3luYyh2ZnNwLCBTWU5DX0ZTREFUQXxTWU5DX0JERkxVU0h8U1lOQ19BVFRSLCBOVUxMKTsKIAkJeGZzX3F1aWVzY2VfZnMobXApOwogCQl4ZnNfbG9nX3VubW91bnRfd3JpdGUobXApOwogCQl4ZnNfdW5tb3VudGZzX3dyaXRlc2IobXApOwpAQCAtNzAyLDcgKzY5Myw3IEBACiAJeGZzX2lub2RlX3QJKnJpcCA9IG1wLT5tX3Jvb3RpcDsKIAl4ZnNfaW5vZGVfdAkqcmJtaXA7CiAJeGZzX2lub2RlX3QJKnJzdW1pcCA9IE5VTEw7Ci0Jdm5vZGVfdAkJKnJ2cCA9IFhGU19JVE9WKHJpcCk7CisJYmh2X3Zub2RlX3QJKnJ2cCA9IFhGU19JVE9WKHJpcCk7CiAJaW50CQllcnJvcjsKIAogCXhmc19pbG9jayhyaXAsIFhGU19JTE9DS19FWENMKTsKQEAgLTc4MSw5ICs3NzIsOSBAQAogU1RBVElDIGludAogeGZzX3Jvb3QoCiAJYmh2X2Rlc2NfdAkqYmRwLAotCXZub2RlX3QJCSoqdnBwKQorCWJodl92bm9kZV90CSoqdnBwKQogewotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAl2cCA9IFhGU19JVE9WKChYRlNfQkhWVE9NKGJkcCkpLT5tX3Jvb3RpcCk7CiAJVk5fSE9MRCh2cCk7CkBAIC04MDEsOCArNzkyLDggQEAKIFNUQVRJQyBpbnQKIHhmc19zdGF0dmZzKAogCWJodl9kZXNjX3QJKmJkcCwKLQl4ZnNfc3RhdGZzX3QJKnN0YXRwLAotCXZub2RlX3QJCSp2cCkKKwliaHZfc3RhdHZmc190CSpzdGF0cCwKKwliaHZfdm5vZGVfdAkqdnApCiB7CiAJX191aW50NjRfdAlmYWtlaW5vczsKIAl4ZnNfZXh0bGVuX3QJbHNpemU7CkBAIC05MDAsNyArODkxLDcgQEAKIC8qCiAgKiB4ZnMgc3luYyByb3V0aW5lIGZvciBpbnRlcm5hbCB1c2UKICAqCi0gKiBUaGlzIHJvdXRpbmUgc3VwcG9ydHMgYWxsIG9mIHRoZSBmbGFncyBkZWZpbmVkIGZvciB0aGUgZ2VuZXJpYyBWRlNfU1lOQworICogVGhpcyByb3V0aW5lIHN1cHBvcnRzIGFsbCBvZiB0aGUgZmxhZ3MgZGVmaW5lZCBmb3IgdGhlIGdlbmVyaWMgdmZzX3N5bmMKICAqIGludGVyZmFjZSBhcyBleHBsYWluZWQgYWJvdmUgdW5kZXIgeGZzX3N5bmMuICBJbiB0aGUgaW50ZXJlc3RzIG9mIG5vdAogICogY2hhbmdpbmcgaW50ZXJmYWNlcyB3aXRoaW4gdGhlIDYuNSBmYW1pbHksIGFkZGl0aW9uYWwgaW50ZXJuYWxseS0KICAqIHJlcXVpcmVkIGZ1bmN0aW9ucyBhcmUgc3BlY2lmaWVkIHdpdGhpbiBhIHNlcGFyYXRlIHhmbGFncyBwYXJhbWV0ZXIsCkBAIC05MTcsNyArOTA4LDcgQEAKIAl4ZnNfaW5vZGVfdAkqaXAgPSBOVUxMOwogCXhmc19pbm9kZV90CSppcF9uZXh0OwogCXhmc19idWZfdAkqYnA7Ci0Jdm5vZGVfdAkJKnZwID0gTlVMTDsKKwliaHZfdm5vZGVfdAkqdnAgPSBOVUxMOwogCWludAkJZXJyb3I7CiAJaW50CQlsYXN0X2Vycm9yOwogCXVpbnQ2NF90CWZmbGFnOwpAQCAtMTE1Niw5ICsxMTQ3LDkgQEAKIAkJCXhmc19pdW5sb2NrKGlwLCBYRlNfSUxPQ0tfU0hBUkVEKTsKIAogCQkJaWYgKFhGU19GT1JDRURfU0hVVERPV04obXApKSB7Ci0JCQkJVk9QX1RPU1NfUEFHRVModnAsIDAsIC0xLCBGSV9SRU1BUEYpOworCQkJCWJodl92b3BfdG9zc19wYWdlcyh2cCwgMCwgLTEsIEZJX1JFTUFQRik7CiAJCQl9IGVsc2UgewotCQkJCVZPUF9GTFVTSElOVkFMX1BBR0VTKHZwLCAwLCAtMSwgRklfUkVNQVBGKTsKKwkJCQliaHZfdm9wX2ZsdXNoaW52YWxfcGFnZXModnAsIDAsIC0xLCBGSV9SRU1BUEYpOwogCQkJfQogCiAJCQl4ZnNfaWxvY2soaXAsIFhGU19JTE9DS19TSEFSRUQpOwpAQCAtMTE3OCw4ICsxMTY5LDggQEAKIAkJCQkgKiBhY3Jvc3MgY2FsbHMgdG8gdGhlIGJ1ZmZlciBjYWNoZS4KIAkJCQkgKi8KIAkJCQl4ZnNfaXVubG9jayhpcCwgWEZTX0lMT0NLX1NIQVJFRCk7Ci0JCQkJVk9QX0ZMVVNIX1BBR0VTKHZwLCAoeGZzX29mZl90KTAsIC0xLAotCQkJCQkJCWZmbGFnLCBGSV9OT05FLCBlcnJvcik7CisJCQkJZXJyb3IgPSBiaHZfdm9wX2ZsdXNoX3BhZ2VzKHZwLCAoeGZzX29mZl90KTAsCisJCQkJCQkJLTEsIGZmbGFnLCBGSV9OT05FKTsKIAkJCQl4ZnNfaWxvY2soaXAsIFhGU19JTE9DS19TSEFSRUQpOwogCQkJfQogCkBAIC0xMjMxLDkgKzEyMjIsNyBAQAogCQkJCQkJICogbWFya2VyIGFuZCBmcmVlIGl0LgogCQkJCQkJICovCiAJCQkJCQlYRlNfTU9VTlRfSUxPQ0sobXApOwotCiAJCQkJCQlJUE9JTlRFUl9SRU1PVkUoaXAsIG1wKTsKLQogCQkJCQkJWEZTX01PVU5UX0lVTkxPQ0sobXApOwogCiAJCQkJCQlBU1NFUlQoIShsb2NrX2ZsYWdzICYKQEAgLTE0MjEsNyArMTQxMCw3IEBACiAvKgogICogeGZzIHN5bmMgcm91dGluZSBmb3IgaW50ZXJuYWwgdXNlCiAgKgotICogVGhpcyByb3V0aW5lIHN1cHBvcnRzIGFsbCBvZiB0aGUgZmxhZ3MgZGVmaW5lZCBmb3IgdGhlIGdlbmVyaWMgVkZTX1NZTkMKKyAqIFRoaXMgcm91dGluZSBzdXBwb3J0cyBhbGwgb2YgdGhlIGZsYWdzIGRlZmluZWQgZm9yIHRoZSBnZW5lcmljIHZmc19zeW5jCiAgKiBpbnRlcmZhY2UgYXMgZXhwbGFpbmVkIGFib3ZlIHVuZGVyIHhmc19zeW5jLiAgSW4gdGhlIGludGVyZXN0cyBvZiBub3QKICAqIGNoYW5naW5nIGludGVyZmFjZXMgd2l0aGluIHRoZSA2LjUgZmFtaWx5LCBhZGRpdGlvbmFsIGludGVybmFsbHktCiAgKiByZXF1aXJlZCBmdW5jdGlvbnMgYXJlIHNwZWNpZmllZCB3aXRoaW4gYSBzZXBhcmF0ZSB4ZmxhZ3MgcGFyYW1ldGVyLApAQCAtMTU3NCw3ICsxNTYzLDcgQEAKIFNUQVRJQyBpbnQKIHhmc192Z2V0KAogCWJodl9kZXNjX3QJKmJkcCwKLQl2bm9kZV90CQkqKnZwcCwKKwliaHZfdm5vZGVfdAkqKnZwcCwKIAlmaWRfdAkJKmZpZHApCiB7CiAJeGZzX21vdW50X3QJKm1wID0gWEZTX0JIVlRPTShiZHApOwpAQCAtMTY1NywxMCArMTY0NiwxMCBAQAogI2RlZmluZSBNTlRPUFRfTk9BVFRSMgkibm9hdHRyMiIJLyogZG8gbm90IHVzZSBhdHRyMiBhdHRyaWJ1dGUgZm9ybWF0ICovCiAKIFNUQVRJQyB1bnNpZ25lZCBsb25nCi1zdWZmaXhfc3RydG91bChjb25zdCBjaGFyICpjcCwgY2hhciAqKmVuZHAsIHVuc2lnbmVkIGludCBiYXNlKQorc3VmZml4X3N0cnRvdWwoY2hhciAqcywgY2hhciAqKmVuZHAsIHVuc2lnbmVkIGludCBiYXNlKQogewogCWludAlsYXN0LCBzaGlmdF9sZWZ0X2ZhY3RvciA9IDA7Ci0JY2hhcgkqdmFsdWUgPSAoY2hhciAqKWNwOworCWNoYXIJKnZhbHVlID0gczsKIAogCWxhc3QgPSBzdHJsZW4odmFsdWUpIC0gMTsKIAlpZiAodmFsdWVbbGFzdF0gPT0gJ0snIHx8IHZhbHVlW2xhc3RdID09ICdrJykgewpAQCAtMTY3Niw3ICsxNjY1LDcgQEAKIAkJdmFsdWVbbGFzdF0gPSAnXDAnOwogCX0KIAotCXJldHVybiBzaW1wbGVfc3RydG91bChjcCwgZW5kcCwgYmFzZSkgPDwgc2hpZnRfbGVmdF9mYWN0b3I7CisJcmV0dXJuIHNpbXBsZV9zdHJ0b3VsKChjb25zdCBjaGFyICopcywgZW5kcCwgYmFzZSkgPDwgc2hpZnRfbGVmdF9mYWN0b3I7CiB9CiAKIFNUQVRJQyBpbnQKQEAgLTE2ODYsNyArMTY3NSw3IEBACiAJc3RydWN0IHhmc19tb3VudF9hcmdzCSphcmdzLAogCWludAkJCXVwZGF0ZSkKIHsKLQlzdHJ1Y3QgdmZzCQkqdmZzcCA9IGJodnRvdmZzKGJodik7CisJYmh2X3Zmc190CQkqdmZzcCA9IGJodnRvdmZzKGJodik7CiAJY2hhcgkJCSp0aGlzX2NoYXIsICp2YWx1ZSwgKmVvdjsKIAlpbnQJCQlkc3VuaXQsIGRzd2lkdGgsIHZvbF9kc3VuaXQsIHZvbF9kc3dpZHRoOwogCWludAkJCWlvc2l6ZTsKQEAgLTE3MDgsNDIgKzE2OTcsNDggQEAKIAogCQlpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF9MT0dCVUZTKSkgewogCQkJaWYgKCF2YWx1ZSB8fCAhKnZhbHVlKSB7Ci0JCQkJcHJpbnRrKCJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudFxuIiwKKwkJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJCSJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIsCiAJCQkJCXRoaXNfY2hhcik7CiAJCQkJcmV0dXJuIEVJTlZBTDsKIAkJCX0KIAkJCWFyZ3MtPmxvZ2J1ZnMgPSBzaW1wbGVfc3RydG91bCh2YWx1ZSwgJmVvdiwgMTApOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAodGhpc19jaGFyLCBNTlRPUFRfTE9HQlNJWkUpKSB7CiAJCQlpZiAoIXZhbHVlIHx8ICEqdmFsdWUpIHsKLQkJCQlwcmludGsoIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorCQkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkJIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiwKIAkJCQkJdGhpc19jaGFyKTsKIAkJCQlyZXR1cm4gRUlOVkFMOwogCQkJfQogCQkJYXJncy0+bG9nYnVmc2l6ZSA9IHN1ZmZpeF9zdHJ0b3VsKHZhbHVlLCAmZW92LCAxMCk7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF9MT0dERVYpKSB7CiAJCQlpZiAoIXZhbHVlIHx8ICEqdmFsdWUpIHsKLQkJCQlwcmludGsoIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorCQkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkJIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiwKIAkJCQkJdGhpc19jaGFyKTsKIAkJCQlyZXR1cm4gRUlOVkFMOwogCQkJfQogCQkJc3RybmNweShhcmdzLT5sb2duYW1lLCB2YWx1ZSwgTUFYTkFNRUxFTik7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF9NVFBUKSkgewogCQkJaWYgKCF2YWx1ZSB8fCAhKnZhbHVlKSB7Ci0JCQkJcHJpbnRrKCJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudFxuIiwKKwkJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJCSJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIsCiAJCQkJCXRoaXNfY2hhcik7CiAJCQkJcmV0dXJuIEVJTlZBTDsKIAkJCX0KIAkJCXN0cm5jcHkoYXJncy0+bXRwdCwgdmFsdWUsIE1BWE5BTUVMRU4pOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAodGhpc19jaGFyLCBNTlRPUFRfUlRERVYpKSB7CiAJCQlpZiAoIXZhbHVlIHx8ICEqdmFsdWUpIHsKLQkJCQlwcmludGsoIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorCQkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkJIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiwKIAkJCQkJdGhpc19jaGFyKTsKIAkJCQlyZXR1cm4gRUlOVkFMOwogCQkJfQogCQkJc3RybmNweShhcmdzLT5ydG5hbWUsIHZhbHVlLCBNQVhOQU1FTEVOKTsKIAkJfSBlbHNlIGlmICghc3RyY21wKHRoaXNfY2hhciwgTU5UT1BUX0JJT1NJWkUpKSB7CiAJCQlpZiAoIXZhbHVlIHx8ICEqdmFsdWUpIHsKLQkJCQlwcmludGsoIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorCQkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkJIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiwKIAkJCQkJdGhpc19jaGFyKTsKIAkJCQlyZXR1cm4gRUlOVkFMOwogCQkJfQpAQCAtMTc1Miw3ICsxNzQ3LDggQEAKIAkJCWFyZ3MtPmlvc2l6ZWxvZyA9ICh1aW50OF90KSBpb3NpemU7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF9BTExPQ1NJWkUpKSB7CiAJCQlpZiAoIXZhbHVlIHx8ICEqdmFsdWUpIHsKLQkJCQlwcmludGsoIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorCQkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkJIlhGUzogJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiwKIAkJCQkJdGhpc19jaGFyKTsKIAkJCQlyZXR1cm4gRUlOVkFMOwogCQkJfQpAQCAtMTc2MSw3ICsxNzU3LDggQEAKIAkJCWFyZ3MtPmlvc2l6ZWxvZyA9IGZmcyhpb3NpemUpIC0gMTsKIAkJfSBlbHNlIGlmICghc3RyY21wKHRoaXNfY2hhciwgTU5UT1BUX0lIQVNIU0laRSkpIHsKIAkJCWlmICghdmFsdWUgfHwgISp2YWx1ZSkgewotCQkJCXByaW50aygiWEZTOiAlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnRcbiIsCisJCQkJY21uX2VycihDRV9XQVJOLAorCQkJCQkiWEZTOiAlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiLAogCQkJCQl0aGlzX2NoYXIpOwogCQkJCXJldHVybiBFSU5WQUw7CiAJCQl9CkBAIC0xNzgyLDcgKzE3NzksOCBAQAogCQl9IGVsc2UgaWYgKCFzdHJjbXAodGhpc19jaGFyLCBNTlRPUFRfSU5PNjQpKSB7CiAJCQlhcmdzLT5mbGFncyB8PSBYRlNNTlRfSU5PNjQ7CiAjaWYgIVhGU19CSUdfSU5VTVMKLQkJCXByaW50aygiWEZTOiAlcyBvcHRpb24gbm90IGFsbG93ZWQgb24gdGhpcyBzeXN0ZW1cbiIsCisJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJIlhGUzogJXMgb3B0aW9uIG5vdCBhbGxvd2VkIG9uIHRoaXMgc3lzdGVtIiwKIAkJCQl0aGlzX2NoYXIpOwogCQkJcmV0dXJuIEVJTlZBTDsKICNlbmRpZgpAQCAtMTc5MiwxNCArMTc5MCwxNiBAQAogCQkJYXJncy0+ZmxhZ3MgfD0gWEZTTU5UX1NXQUxMT0M7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF9TVU5JVCkpIHsKIAkJCWlmICghdmFsdWUgfHwgISp2YWx1ZSkgewotCQkJCXByaW50aygiWEZTOiAlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnRcbiIsCisJCQkJY21uX2VycihDRV9XQVJOLAorCQkJCQkiWEZTOiAlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiLAogCQkJCQl0aGlzX2NoYXIpOwogCQkJCXJldHVybiBFSU5WQUw7CiAJCQl9CiAJCQlkc3VuaXQgPSBzaW1wbGVfc3RydG91bCh2YWx1ZSwgJmVvdiwgMTApOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAodGhpc19jaGFyLCBNTlRPUFRfU1dJRFRIKSkgewogCQkJaWYgKCF2YWx1ZSB8fCAhKnZhbHVlKSB7Ci0JCQkJcHJpbnRrKCJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudFxuIiwKKwkJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJCSJYRlM6ICVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIsCiAJCQkJCXRoaXNfY2hhcik7CiAJCQkJcmV0dXJuIEVJTlZBTDsKIAkJCX0KQEAgLTE4MDcsNyArMTgwNyw4IEBACiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsIE1OVE9QVF82NEJJVElOT0RFKSkgewogCQkJYXJncy0+ZmxhZ3MgJj0gflhGU01OVF8zMkJJVElOT0RFUzsKICNpZiAhWEZTX0JJR19JTlVNUwotCQkJcHJpbnRrKCJYRlM6ICVzIG9wdGlvbiBub3QgYWxsb3dlZCBvbiB0aGlzIHN5c3RlbVxuIiwKKwkJCWNtbl9lcnIoQ0VfV0FSTiwKKwkJCQkiWEZTOiAlcyBvcHRpb24gbm90IGFsbG93ZWQgb24gdGhpcyBzeXN0ZW0iLAogCQkJCXRoaXNfY2hhcik7CiAJCQlyZXR1cm4gRUlOVkFMOwogI2VuZGlmCkBAIC0xODMxLDM2ICsxODMyLDQxIEBACiAJCQlhcmdzLT5mbGFncyAmPSB+WEZTTU5UX0FUVFIyOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAodGhpc19jaGFyLCAib3N5bmNpc2RzeW5jIikpIHsKIAkJCS8qIG5vLW9wLCB0aGlzIGlzIG5vdyB0aGUgZGVmYXVsdCAqLwotcHJpbnRrKCJYRlM6IG9zeW5jaXNkc3luYyBpcyBub3cgdGhlIGRlZmF1bHQsIG9wdGlvbiBpcyBkZXByZWNhdGVkLlxuIik7CisJCQljbW5fZXJyKENFX1dBUk4sCisJIlhGUzogb3N5bmNpc2RzeW5jIGlzIG5vdyB0aGUgZGVmYXVsdCwgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIik7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcCh0aGlzX2NoYXIsICJpcml4c2dpZCIpKSB7Ci1wcmludGsoIlhGUzogaXJpeHNnaWQgaXMgbm93IGEgc3lzY3RsKDIpIHZhcmlhYmxlLCBvcHRpb24gaXMgZGVwcmVjYXRlZC5cbiIpOworCQkJY21uX2VycihDRV9XQVJOLAorCSJYRlM6IGlyaXhzZ2lkIGlzIG5vdyBhIHN5c2N0bCgyKSB2YXJpYWJsZSwgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIik7CiAJCX0gZWxzZSB7Ci0JCQlwcmludGsoIlhGUzogdW5rbm93biBtb3VudCBvcHRpb24gWyVzXS5cbiIsIHRoaXNfY2hhcik7CisJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJIlhGUzogdW5rbm93biBtb3VudCBvcHRpb24gWyVzXS4iLCB0aGlzX2NoYXIpOwogCQkJcmV0dXJuIEVJTlZBTDsKIAkJfQogCX0KIAogCWlmIChhcmdzLT5mbGFncyAmIFhGU01OVF9OT1JFQ09WRVJZKSB7CiAJCWlmICgodmZzcC0+dmZzX2ZsYWcgJiBWRlNfUkRPTkxZKSA9PSAwKSB7Ci0JCQlwcmludGsoIlhGUzogbm8tcmVjb3ZlcnkgbW91bnRzIG11c3QgYmUgcmVhZC1vbmx5LlxuIik7CisJCQljbW5fZXJyKENFX1dBUk4sCisJCQkJIlhGUzogbm8tcmVjb3ZlcnkgbW91bnRzIG11c3QgYmUgcmVhZC1vbmx5LiIpOwogCQkJcmV0dXJuIEVJTlZBTDsKIAkJfQogCX0KIAogCWlmICgoYXJncy0+ZmxhZ3MgJiBYRlNNTlRfTk9BTElHTikgJiYgKGRzdW5pdCB8fCBkc3dpZHRoKSkgewotCQlwcmludGsoCi0JIlhGUzogc3VuaXQgYW5kIHN3aWR0aCBvcHRpb25zIGluY29tcGF0aWJsZSB3aXRoIHRoZSBub2FsaWduIG9wdGlvblxuIik7CisJCWNtbl9lcnIoQ0VfV0FSTiwKKwkiWEZTOiBzdW5pdCBhbmQgc3dpZHRoIG9wdGlvbnMgaW5jb21wYXRpYmxlIHdpdGggdGhlIG5vYWxpZ24gb3B0aW9uIik7CiAJCXJldHVybiBFSU5WQUw7CiAJfQogCiAJaWYgKChkc3VuaXQgJiYgIWRzd2lkdGgpIHx8ICghZHN1bml0ICYmIGRzd2lkdGgpKSB7Ci0JCXByaW50aygiWEZTOiBzdW5pdCBhbmQgc3dpZHRoIG11c3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyXG4iKTsKKwkJY21uX2VycihDRV9XQVJOLAorCQkJIlhGUzogc3VuaXQgYW5kIHN3aWR0aCBtdXN0IGJlIHNwZWNpZmllZCB0b2dldGhlciIpOwogCQlyZXR1cm4gRUlOVkFMOwogCX0KIAogCWlmIChkc3VuaXQgJiYgKGRzd2lkdGggJSBkc3VuaXQgIT0gMCkpIHsKLQkJcHJpbnRrKAotCSJYRlM6IHN0cmlwZSB3aWR0aCAoJWQpIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3RyaXBlIHVuaXQgKCVkKVxuIiwKKwkJY21uX2VycihDRV9XQVJOLAorCSJYRlM6IHN0cmlwZSB3aWR0aCAoJWQpIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3RyaXBlIHVuaXQgKCVkKSIsCiAJCQlkc3dpZHRoLCBkc3VuaXQpOwogCQlyZXR1cm4gRUlOVkFMOwogCX0KQEAgLTE5MDcsNyArMTkxMyw3IEBACiAJfTsKIAlzdHJ1Y3QgcHJvY194ZnNfaW5mbwkqeGZzX2luZm9wOwogCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gWEZTX0JIVlRPTShiaHYpOwotCXN0cnVjdCB2ZnMJCSp2ZnNwID0gWEZTX01UT1ZGUyhtcCk7CisJc3RydWN0IGJodl92ZnMJCSp2ZnNwID0gWEZTX01UT1ZGUyhtcCk7CiAKIAlmb3IgKHhmc19pbmZvcCA9IHhmc19pbmZvOyB4ZnNfaW5mb3AtPmZsYWc7IHhmc19pbmZvcCsrKSB7CiAJCWlmIChtcC0+bV9mbGFncyAmIHhmc19pbmZvcC0+ZmxhZykKQEAgLTE5NjcsNyArMTk3Myw3IEBACiB9CiAKIAotdmZzb3BzX3QgeGZzX3Zmc29wcyA9IHsKK2Jodl92ZnNvcHNfdCB4ZnNfdmZzb3BzID0gewogCUJIVl9JREVOVElUWV9JTklUKFZGU19CSFZfWEZTLFZGU19QT1NJVElPTl9YRlMpLAogCS52ZnNfcGFyc2VhcmdzCQk9IHhmc19wYXJzZWFyZ3MsCiAJLnZmc19zaG93YXJncwkJPSB4ZnNfc2hvd2FyZ3MsCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3Zub2Rlb3BzLmMgYi9mcy94ZnMveGZzX3Zub2Rlb3BzLmMKaW5kZXggNzAyN2FlNi4uMDBhNmI3ZCAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc192bm9kZW9wcy5jCisrKyBiL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE2LDggKzE2LDYgQEAKICAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+Ci0KICNpbmNsdWRlICJ4ZnMuaCIKICNpbmNsdWRlICJ4ZnNfZnMuaCIKICNpbmNsdWRlICJ4ZnNfdHlwZXMuaCIKQEAgLTI3LDcgKzI1LDYgQEAKICNpbmNsdWRlICJ4ZnNfdHJhbnMuaCIKICNpbmNsdWRlICJ4ZnNfc2IuaCIKICNpbmNsdWRlICJ4ZnNfYWcuaCIKLSNpbmNsdWRlICJ4ZnNfZGlyLmgiCiAjaW5jbHVkZSAieGZzX2RpcjIuaCIKICNpbmNsdWRlICJ4ZnNfZG1hcGkuaCIKICNpbmNsdWRlICJ4ZnNfbW91bnQuaCIKQEAgLTM1LDEzICszMiwxMSBAQAogI2luY2x1ZGUgInhmc19ibWFwX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2FsbG9jX2J0cmVlLmgiCiAjaW5jbHVkZSAieGZzX2lhbGxvY19idHJlZS5oIgotI2luY2x1ZGUgInhmc19kaXJfc2YuaCIKICNpbmNsdWRlICJ4ZnNfZGlyMl9zZi5oIgogI2luY2x1ZGUgInhmc19hdHRyX3NmLmgiCiAjaW5jbHVkZSAieGZzX2Rpbm9kZS5oIgogI2luY2x1ZGUgInhmc19pbm9kZS5oIgogI2luY2x1ZGUgInhmc19pbm9kZV9pdGVtLmgiCi0jaW5jbHVkZSAieGZzX2Rpcl9sZWFmLmgiCiAjaW5jbHVkZSAieGZzX2l0YWJsZS5oIgogI2luY2x1ZGUgInhmc19idHJlZS5oIgogI2luY2x1ZGUgInhmc19pYWxsb2MuaCIKQEAgLTU4LDMyICs1MywxNCBAQAogI2luY2x1ZGUgInhmc19sb2dfcHJpdi5oIgogI2luY2x1ZGUgInhmc19tYWMuaCIKIAotCi0vKgotICogVGhlIG1heGltdW0gcGF0aGxlbiBpcyAxMDI0IGJ5dGVzLiBTaW5jZSB0aGUgbWluaW11bSBmaWxlIHN5c3RlbQotICogYmxvY2tzaXplIGlzIDUxMiBieXRlcywgd2UgY2FuIGdldCBhIG1heCBvZiAyIGV4dGVudHMgYmFjayBmcm9tCi0gKiBibWFwaS4KLSAqLwotI2RlZmluZSBTWU1MSU5LX01BUFMgMgotCi0vKgotICogRm9yIHhmcywgd2UgY2hlY2sgdGhhdCB0aGUgZmlsZSBpc24ndCB0b28gYmlnIHRvIGJlIG9wZW5lZCBieSB0aGlzIGtlcm5lbC4KLSAqIE5vIG90aGVyIG9wZW4gYWN0aW9uIGlzIHJlcXVpcmVkIGZvciByZWd1bGFyIGZpbGVzLiAgRGV2aWNlcyBhcmUgaGFuZGxlZAotICogdGhyb3VnaCB0aGUgc3BlY2ZzIGZpbGUgc3lzdGVtLCBwaXBlcyB0aHJvdWdoIGZpZm9mcy4gIERldmljZSBhbmQKLSAqIGZpZm8gdm5vZGVzIGFyZSAid3JhcHBlZCIgYnkgc3BlY2ZzIGFuZCBmaWZvZnMgdm5vZGVzLCByZXNwZWN0aXZlbHksCi0gKiB3aGVuIGEgbmV3IHZub2RlIGlzIGZpcnN0IGxvb2tlZCB1cCBvciBjcmVhdGVkLgotICovCiBTVEFUSUMgaW50CiB4ZnNfb3BlbigKIAliaHZfZGVzY190CSpiZHAsCiAJY3JlZF90CQkqY3JlZHApCiB7CiAJaW50CQltb2RlOwotCXZub2RlX3QJCSp2cDsKLQl4ZnNfaW5vZGVfdAkqaXA7Ci0KLQl2cCA9IEJIVl9UT19WTk9ERShiZHApOwotCWlwID0gWEZTX0JIVlRPSShiZHApOworCWJodl92bm9kZV90CSp2cCA9IEJIVl9UT19WTk9ERShiZHApOworCXhmc19pbm9kZV90CSppcCA9IFhGU19CSFZUT0koYmRwKTsKIAogCWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKGlwLT5pX21vdW50KSkKIAkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwpAQCAtMTAxLDYgKzc4LDM1IEBACiAJcmV0dXJuIDA7CiB9CiAKK1NUQVRJQyBpbnQKK3hmc19jbG9zZSgKKwliaHZfZGVzY190CSpiZHAsCisJaW50CQlmbGFncywKKwlsYXN0Y2xvc2VfdAlsYXN0Y2xvc2UsCisJY3JlZF90CQkqY3JlZHApCit7CisJYmh2X3Zub2RlX3QJKnZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CisJeGZzX2lub2RlX3QJKmlwID0gWEZTX0JIVlRPSShiZHApOworCisJaWYgKFhGU19GT1JDRURfU0hVVERPV04oaXAtPmlfbW91bnQpKQorCQlyZXR1cm4gWEZTX0VSUk9SKEVJTyk7CisKKwlpZiAobGFzdGNsb3NlICE9IExfVFJVRSB8fCAhVk5fSVNSRUcodnApKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSWYgd2UgcHJldmlvdXNseSB0cnVuY2F0ZWQgdGhpcyBmaWxlIGFuZCByZW1vdmVkIG9sZCBkYXRhIGluCisJICogdGhlIHByb2Nlc3MsIHdlIHdhbnQgdG8gaW5pdGlhdGUgImVhcmx5IiB3cml0ZW91dCBvbiB0aGUgbGFzdAorCSAqIGNsb3NlLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGNvbWJhdCB0aGUgbm90b3Jpb3VzIE5VTEwgZmlsZXMKKwkgKiBwcm9ibGVtIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBub3RpY2FibGUgZnJvbSBhIHRydW5jYXRlIGRvd24sCisJICogYnVmZmVyZWQgKHJlLSl3cml0ZSAoZGVsYWxsb2MpLCBmb2xsb3dlZCBieSBhIGNyYXNoLiAgV2hhdCB3ZQorCSAqIGFyZSBlZmZlY3RpdmVseSBkb2luZyBoZXJlIGlzIHNpZ25pZmljYW50bHkgcmVkdWNpbmcgdGhlIHRpbWUKKwkgKiB3aW5kb3cgd2hlcmUgd2UnZCBvdGhlcndpc2UgYmUgZXhwb3NlZCB0byB0aGF0IHByb2JsZW0uCisJICovCisJaWYgKFZVTlRSVU5DQVRFKHZwKSAmJiBWTl9ESVJUWSh2cCkgJiYgaXAtPmlfZGVsYXllZF9ibGtzID4gMCkKKwkJcmV0dXJuIGJodl92b3BfZmx1c2hfcGFnZXModnAsIDAsIC0xLCBYRlNfQl9BU1lOQywgRklfTk9ORSk7CisJcmV0dXJuIDA7Cit9CiAKIC8qCiAgKiB4ZnNfZ2V0YXR0cgpAQCAtMTA4LDEzICsxMTQsMTMgQEAKIFNUQVRJQyBpbnQKIHhmc19nZXRhdHRyKAogCWJodl9kZXNjX3QJKmJkcCwKLQl2YXR0cl90CQkqdmFwLAorCWJodl92YXR0cl90CSp2YXAsCiAJaW50CQlmbGFncywKIAljcmVkX3QJCSpjcmVkcCkKIHsKIAl4ZnNfaW5vZGVfdAkqaXA7CiAJeGZzX21vdW50X3QJKm1wOwotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAl2cCAgPSBCSFZfVE9fVk5PREUoYmRwKTsKIAl2bl90cmFjZV9lbnRyeSh2cCwgX19GVU5DVElPTl9fLCAoaW5zdF90ICopX19yZXR1cm5fYWRkcmVzcyk7CkBAIC0yNDEsNyArMjQ3LDcgQEAKIGludAogeGZzX3NldGF0dHIoCiAJYmh2X2Rlc2NfdAkJKmJkcCwKLQl2YXR0cl90CQkJKnZhcCwKKwliaHZfdmF0dHJfdAkJKnZhcCwKIAlpbnQJCQlmbGFncywKIAljcmVkX3QJCQkqY3JlZHApCiB7CkBAIC0yNTUsNyArMjYxLDcgQEAKIAl1aWRfdAkJCXVpZD0wLCBpdWlkPTA7CiAJZ2lkX3QJCQlnaWQ9MCwgaWdpZD0wOwogCWludAkJCXRpbWVmbGFncyA9IDA7Ci0Jdm5vZGVfdAkJCSp2cDsKKwliaHZfdm5vZGVfdAkJKnZwOwogCXhmc19wcmlkX3QJCXByb2ppZD0wLCBpcHJvamlkPTA7CiAJaW50CQkJbWFuZGxvY2tfYmVmb3JlLCBtYW5kbG9ja19hZnRlcjsKIAlzdHJ1Y3QgeGZzX2RxdW90CSp1ZHFwLCAqZ2RxcCwgKm9sZGRxdW90MSwgKm9sZGRxdW90MjsKQEAgLTM0Nyw3ICszNTMsNiBAQAogCSAqLwogCXRwID0gTlVMTDsKIAlsb2NrX2ZsYWdzID0gWEZTX0lMT0NLX0VYQ0w7Ci0JQVNTRVJUKGZsYWdzICYgQVRUUl9OT0xPQ0sgPyBmbGFncyAmIEFUVFJfRE1JIDogMSk7CiAJaWYgKGZsYWdzICYgQVRUUl9OT0xPQ0spCiAJCW5lZWRfaW9sb2NrID0gMDsKIAlpZiAoIShtYXNrICYgWEZTX0FUX1NJWkUpKSB7CkBAIC02NjYsOSArNjcxLDE3IEBACiAJCQkJCSAgICAoKGlwLT5pX2QuZGlfbmxpbmsgIT0gMCB8fAogCQkJCQkgICAgICAhKG1wLT5tX2ZsYWdzICYgWEZTX01PVU5UX1dTWU5DKSkKIAkJCQkJICAgICA/IDEgOiAwKSk7Ci0JCQlpZiAoY29kZSkgeworCQkJaWYgKGNvZGUpCiAJCQkJZ290byBhYm9ydF9yZXR1cm47Ci0JCQl9CisJCQkvKgorCQkJICogVHJ1bmNhdGVkICJkb3duIiwgc28gd2UncmUgcmVtb3ZpbmcgcmVmZXJlbmNlcworCQkJICogdG8gb2xkIGRhdGEgaGVyZSAtIGlmIHdlIG5vdyBkZWxheSBmbHVzaGluZyBmb3IKKwkJCSAqIGEgbG9uZyB0aW1lLCB3ZSBleHBvc2Ugb3Vyc2VsdmVzIHVuZHVseSB0byB0aGUKKwkJCSAqIG5vdG9yaW91cyBOVUxMIGZpbGVzIHByb2JsZW0uICBTbywgd2UgbWFyayB0aGlzCisJCQkgKiB2bm9kZSBhbmQgZmx1c2ggaXQgd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQsIGFuZAorCQkJICogZG8gbm90IHdhaXQgdGhlIHVzdWFsIChsb25nKSB0aW1lIGZvciB3cml0ZW91dC4KKwkJCSAqLworCQkJVlRSVU5DQVRFKHZwKTsKIAkJfQogCQkvKgogCQkgKiBIYXZlIHRvIGRvIHRoaXMgZXZlbiBpZiB0aGUgZmlsZSdzIHNpemUgZG9lc24ndCBjaGFuZ2UuCkBAIC04MDAsNiArODEzLDggQEAKIAkJCQlkaV9mbGFncyB8PSBYRlNfRElGTEFHX05PRFVNUDsKIAkJCWlmICh2YXAtPnZhX3hmbGFncyAmIFhGU19YRkxBR19QUk9KSU5IRVJJVCkKIAkJCQlkaV9mbGFncyB8PSBYRlNfRElGTEFHX1BST0pJTkhFUklUOworCQkJaWYgKHZhcC0+dmFfeGZsYWdzICYgWEZTX1hGTEFHX05PREVGUkFHKQorCQkJCWRpX2ZsYWdzIHw9IFhGU19ESUZMQUdfTk9ERUZSQUc7CiAJCQlpZiAoKGlwLT5pX2QuZGlfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUikgewogCQkJCWlmICh2YXAtPnZhX3hmbGFncyAmIFhGU19YRkxBR19SVElOSEVSSVQpCiAJCQkJCWRpX2ZsYWdzIHw9IFhGU19ESUZMQUdfUlRJTkhFUklUOwpAQCAtODY5LDcgKzg4NCw3IEBACiAJICovCiAJbWFuZGxvY2tfYWZ0ZXIgPSBNQU5ETE9DSyh2cCwgaXAtPmlfZC5kaV9tb2RlKTsKIAlpZiAobWFuZGxvY2tfYmVmb3JlICE9IG1hbmRsb2NrX2FmdGVyKSB7Ci0JCVZPUF9WTk9ERV9DSEFOR0UodnAsIFZDSEFOR0VfRkxBR1NfRU5GX0xPQ0tJTkcsCisJCWJodl92b3Bfdm5vZGVfY2hhbmdlKHZwLCBWQ0hBTkdFX0ZMQUdTX0VORl9MT0NLSU5HLAogCQkJCSBtYW5kbG9ja19hZnRlcik7CiAJfQogCkBAIC05MzYsNiArOTUxLDEzIEBACiAKIAogLyoKKyAqIFRoZSBtYXhpbXVtIHBhdGhsZW4gaXMgMTAyNCBieXRlcy4gU2luY2UgdGhlIG1pbmltdW0gZmlsZSBzeXN0ZW0KKyAqIGJsb2Nrc2l6ZSBpcyA1MTIgYnl0ZXMsIHdlIGNhbiBnZXQgYSBtYXggb2YgMiBleHRlbnRzIGJhY2sgZnJvbQorICogYm1hcGkuCisgKi8KKyNkZWZpbmUgU1lNTElOS19NQVBTIDIKKworLyoKICAqIHhmc19yZWFkbGluawogICoKICAqLwpAQCAtOTUwLDcgKzk3Miw3IEBACiAJaW50CQljb3VudDsKIAl4ZnNfb2ZmX3QJb2Zmc2V0OwogCWludAkJcGF0aGxlbjsKLQl2bm9kZV90CQkqdnA7CisJYmh2X3Zub2RlX3QJKnZwOwogCWludAkJZXJyb3IgPSAwOwogCXhmc19tb3VudF90CSptcDsKIAlpbnQgICAgICAgICAgICAgbm1hcHM7CkBAIC0xMDAwLDcgKzEwMjIsNyBAQAogCQlubWFwcyA9IFNZTUxJTktfTUFQUzsKIAogCQllcnJvciA9IHhmc19ibWFwaShOVUxMLCBpcCwgMCwgWEZTX0JfVE9fRlNCKG1wLCBwYXRobGVuKSwKLQkJCQkgIDAsIE5VTEwsIDAsIG12YWwsICZubWFwcywgTlVMTCk7CisJCQkJICAwLCBOVUxMLCAwLCBtdmFsLCAmbm1hcHMsIE5VTEwsIE5VTEwpOwogCiAJCWlmIChlcnJvcikgewogCQkJZ290byBlcnJvcl9yZXR1cm47CkBAIC0xMjA4LDggKzEyMzAsOCBAQAogCiAJbmltYXBzID0gMTsKIAl4ZnNfaWxvY2soaXAsIFhGU19JTE9DS19TSEFSRUQpOwotCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIGlwLCBlbmRfZnNiLCBtYXBfbGVuLCAwLAotCQkJICBOVUxMLCAwLCAmaW1hcCwgJm5pbWFwcywgTlVMTCk7CisJZXJyb3IgPSBYRlNfQk1BUEkobXAsIE5VTEwsICZpcC0+aV9pb2NvcmUsIGVuZF9mc2IsIG1hcF9sZW4sIDAsCisJCQkgIE5VTEwsIDAsICZpbWFwLCAmbmltYXBzLCBOVUxMLCBOVUxMKTsKIAl4ZnNfaXVubG9jayhpcCwgWEZTX0lMT0NLX1NIQVJFRCk7CiAKIAlpZiAoIWVycm9yICYmIChuaW1hcHMgIT0gMCkgJiYKQEAgLTEzMzgsNyArMTM2MCw3IEBACiAJbm1hcHMgPSBBUlJBWV9TSVpFKG12YWwpOwogCWlmICgoZXJyb3IgPSB4ZnNfYm1hcGkodHAsIGlwLCAwLCBYRlNfQl9UT19GU0IobXAsIHNpemUpLAogCQkJWEZTX0JNQVBJX01FVEFEQVRBLCAmZmlyc3RfYmxvY2ssIDAsIG12YWwsICZubWFwcywKLQkJCSZmcmVlX2xpc3QpKSkKKwkJCSZmcmVlX2xpc3QsIE5VTEwpKSkKIAkJZ290byBlcnJvcjA7CiAJLyoKIAkgKiBJbnZhbGlkYXRlIHRoZSBibG9jayhzKS4KQEAgLTEzNTMsNyArMTM3NSw3IEBACiAJICogVW5tYXAgdGhlIGRlYWQgYmxvY2socykgdG8gdGhlIGZyZWVfbGlzdC4KIAkgKi8KIAlpZiAoKGVycm9yID0geGZzX2J1bm1hcGkodHAsIGlwLCAwLCBzaXplLCBYRlNfQk1BUElfTUVUQURBVEEsIG5tYXBzLAotCQkJJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCAmZG9uZSkpKQorCQkJJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCBOVUxMLCAmZG9uZSkpKQogCQlnb3RvIGVycm9yMTsKIAlBU1NFUlQoZG9uZSk7CiAJLyoKQEAgLTE0NjksOSArMTQ5MSw2IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qCi0gKgotICovCiBTVEFUSUMgaW50CiB4ZnNfaW5hY3RpdmVfYXR0cnMoCiAJeGZzX2lub2RlX3QJKmlwLApAQCAtMTUyNCwxNiArMTU0MywxNiBAQAogCWJodl9kZXNjX3QJKmJkcCkKIHsKIAl4ZnNfaW5vZGVfdAkqaXA7Ci0Jdm5vZGVfdAkJKnZwOworCWJodl92bm9kZV90CSp2cDsKIAl4ZnNfbW91bnRfdAkqbXA7CiAJaW50CQllcnJvcjsKIAogCXZwID0gQkhWX1RPX1ZOT0RFKGJkcCk7CiAJaXAgPSBYRlNfQkhWVE9JKGJkcCk7CisJbXAgPSBpcC0+aV9tb3VudDsKIAotCWlmICghVk5fSVNSRUcodnApIHx8IChpcC0+aV9kLmRpX21vZGUgPT0gMCkpIHsKKwlpZiAoIVZOX0lTUkVHKHZwKSB8fCAoaXAtPmlfZC5kaV9tb2RlID09IDApKQogCQlyZXR1cm4gMDsKLQl9CiAKIAkvKiBJZiB0aGlzIGlzIGEgcmVhZC1vbmx5IG1vdW50LCBkb24ndCBkbyB0aGlzICh3b3VsZCBnZW5lcmF0ZSBJL08pICovCiAJaWYgKHZwLT52X3Zmc3AtPnZmc19mbGFnICYgVkZTX1JET05MWSkKQEAgLTE1NDUsOCArMTU2NCw2IEBACiAJCXJldHVybiAwOwogI2VuZGlmCiAKLQltcCA9IGlwLT5pX21vdW50OwotCiAJaWYgKGlwLT5pX2QuZGlfbmxpbmsgIT0gMCkgewogCQlpZiAoKCgoaXAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSAmJgogCQkgICAgICgoaXAtPmlfZC5kaV9zaXplID4gMCkgfHwgKFZOX0NBQ0hFRCh2cCkgPiAwIHx8CkBAIC0xNTc5LDggKzE1OTYsOCBAQAogCWNyZWRfdAkJKmNyZWRwKQogewogCXhmc19pbm9kZV90CSppcDsKLQl2bm9kZV90CQkqdnA7Ci0JeGZzX2JtYXBfZnJlZV90CWZyZWVfbGlzdDsgCisJYmh2X3Zub2RlX3QJKnZwOworCXhmc19ibWFwX2ZyZWVfdAlmcmVlX2xpc3Q7CiAJeGZzX2ZzYmxvY2tfdAlmaXJzdF9ibG9jazsKIAlpbnQJCWNvbW1pdHRlZDsKIAl4ZnNfdHJhbnNfdAkqdHA7CkBAIC0xNzYwLDcgKzE3NzcsNyBAQAogCQkJY21uX2VycihDRV9OT1RFLAogCQkieGZzX2luYWN0aXZlOgl4ZnNfaWZyZWUoKSByZXR1cm5lZCBhbiBlcnJvciA9ICVkIG9uICVzIiwKIAkJCQllcnJvciwgbXAtPm1fZnNuYW1lKTsKLQkJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgWEZTX01FVEFEQVRBX0lPX0VSUk9SKTsKKwkJCXhmc19mb3JjZV9zaHV0ZG93bihtcCwgU0hVVERPV05fTUVUQV9JT19FUlJPUik7CiAJCX0KIAkJeGZzX3RyYW5zX2NhbmNlbCh0cCwgWEZTX1RSQU5TX1JFTEVBU0VfTE9HX1JFU3xYRlNfVFJBTlNfQUJPUlQpOwogCX0gZWxzZSB7CkBAIC0xNzk1LDE3ICsxODEyLDE3IEBACiBTVEFUSUMgaW50CiB4ZnNfbG9va3VwKAogCWJodl9kZXNjX3QJCSpkaXJfYmRwLAotCXZuYW1lX3QJCQkqZGVudHJ5LAotCXZub2RlX3QJCQkqKnZwcCwKKwliaHZfdm5hbWVfdAkJKmRlbnRyeSwKKwliaHZfdm5vZGVfdAkJKip2cHAsCiAJaW50CQkJZmxhZ3MsCi0Jdm5vZGVfdAkJCSpyZGlyLAorCWJodl92bm9kZV90CQkqcmRpciwKIAljcmVkX3QJCQkqY3JlZHApCiB7CiAJeGZzX2lub2RlX3QJCSpkcCwgKmlwOwogCXhmc19pbm9fdAkJZV9pbnVtOwogCWludAkJCWVycm9yOwogCXVpbnQJCQlsb2NrX21vZGU7Ci0Jdm5vZGVfdAkJCSpkaXJfdnA7CisJYmh2X3Zub2RlX3QJCSpkaXJfdnA7CiAKIAlkaXJfdnAgPSBCSFZfVE9fVk5PREUoZGlyX2JkcCk7CiAJdm5fdHJhY2VfZW50cnkoZGlyX3ZwLCBfX0ZVTkNUSU9OX18sIChpbnN0X3QgKilfX3JldHVybl9hZGRyZXNzKTsKQEAgLTE4MzIsMTUgKzE4NDksMTUgQEAKIFNUQVRJQyBpbnQKIHhmc19jcmVhdGUoCiAJYmh2X2Rlc2NfdAkJKmRpcl9iZHAsCi0Jdm5hbWVfdAkJCSpkZW50cnksCi0JdmF0dHJfdAkJCSp2YXAsCi0Jdm5vZGVfdAkJCSoqdnBwLAorCWJodl92bmFtZV90CQkqZGVudHJ5LAorCWJodl92YXR0cl90CQkqdmFwLAorCWJodl92bm9kZV90CQkqKnZwcCwKIAljcmVkX3QJCQkqY3JlZHApCiB7CiAJY2hhcgkJCSpuYW1lID0gVk5BTUUoZGVudHJ5KTsKLQl2bm9kZV90CQkJKmRpcl92cDsKKwliaHZfdm5vZGVfdAkJKmRpcl92cDsKIAl4ZnNfaW5vZGVfdAkJKmRwLCAqaXA7Ci0Jdm5vZGVfdAkJICAgICAgICAqdnA9TlVMTDsKKwliaHZfdm5vZGVfdAkgICAgICAgICp2cCA9IE5VTEw7CiAJeGZzX3RyYW5zX3QJCSp0cDsKIAl4ZnNfbW91bnRfdAkgICAgICAgICptcDsKIAl4ZnNfZGV2X3QJCXJkZXY7CkBAIC0xOTM4LDggKzE5NTUsNyBAQAogCWlmIChlcnJvcikKIAkJZ290byBlcnJvcl9yZXR1cm47CiAKLQlpZiAocmVzYmxrcyA9PSAwICYmCi0JICAgIChlcnJvciA9IFhGU19ESVJfQ0FORU5URVIobXAsIHRwLCBkcCwgbmFtZSwgbmFtZWxlbikpKQorCWlmIChyZXNibGtzID09IDAgJiYgKGVycm9yID0geGZzX2Rpcl9jYW5lbnRlcih0cCwgZHAsIG5hbWUsIG5hbWVsZW4pKSkKIAkJZ290byBlcnJvcl9yZXR1cm47CiAJcmRldiA9ICh2YXAtPnZhX21hc2sgJiBYRlNfQVRfUkRFVikgPyB2YXAtPnZhX3JkZXYgOiAwOwogCWVycm9yID0geGZzX2Rpcl9pYWxsb2MoJnRwLCBkcCwgdmFwLT52YV9tb2RlLCAxLApAQCAtMTk3MCw5ICsxOTg2LDkgQEAKIAl4ZnNfdHJhbnNfaWpvaW4odHAsIGRwLCBYRlNfSUxPQ0tfRVhDTCk7CiAJZHBfam9pbmVkX3RvX3RyYW5zID0gQl9UUlVFOwogCi0JZXJyb3IgPSBYRlNfRElSX0NSRUFURU5BTUUobXAsIHRwLCBkcCwgbmFtZSwgbmFtZWxlbiwgaXAtPmlfaW5vLAotCQkmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsCi0JCXJlc2Jsa3MgPyByZXNibGtzIC0gWEZTX0lBTExPQ19TUEFDRV9SRVMobXApIDogMCk7CisJZXJyb3IgPSB4ZnNfZGlyX2NyZWF0ZW5hbWUodHAsIGRwLCBuYW1lLCBuYW1lbGVuLCBpcC0+aV9pbm8sCisJCQkJCSZmaXJzdF9ibG9jaywgJmZyZWVfbGlzdCwgcmVzYmxrcyA/CisJCQkJCXJlc2Jsa3MgLSBYRlNfSUFMTE9DX1NQQUNFX1JFUyhtcCkgOiAwKTsKIAlpZiAoZXJyb3IpIHsKIAkJQVNTRVJUKGVycm9yICE9IEVOT1NQQyk7CiAJCWdvdG8gYWJvcnRfcmV0dXJuOwpAQCAtMjAyNiw3ICsyMDQyLDcgQEAKIAkgKiBQcm9wYWdhdGUgdGhlIGZhY3QgdGhhdCB0aGUgdm5vZGUgY2hhbmdlZCBhZnRlciB0aGUKIAkgKiB4ZnNfaW5vZGUgbG9ja3MgaGF2ZSBiZWVuIHJlbGVhc2VkLgogCSAqLwotCVZPUF9WTk9ERV9DSEFOR0UodnAsIFZDSEFOR0VfRkxBR1NfVFJVTkNBVEVELCAzKTsKKwliaHZfdm9wX3Zub2RlX2NoYW5nZSh2cCwgVkNIQU5HRV9GTEFHU19UUlVOQ0FURUQsIDMpOwogCiAJKnZwcCA9IHZwOwogCkBAIC0yMTA3LDcgKzIxMjMsNyBAQAogU1RBVElDIGludAogeGZzX2xvY2tfZGlyX2FuZF9lbnRyeSgKIAl4ZnNfaW5vZGVfdAkqZHAsCi0Jdm5hbWVfdAkJKmRlbnRyeSwKKwliaHZfdm5hbWVfdAkqZGVudHJ5LAogCXhmc19pbm9kZV90CSppcCkJLyogaW5vZGUgb2YgZW50cnkgJ25hbWUnICovCiB7CiAJaW50CQlhdHRlbXB0czsKQEAgLTIzMjEsMTAgKzIzMzcsMTAgQEAKIFNUQVRJQyBpbnQKIHhmc19yZW1vdmUoCiAJYmh2X2Rlc2NfdAkJKmRpcl9iZHAsCi0Jdm5hbWVfdAkJCSpkZW50cnksCisJYmh2X3ZuYW1lX3QJCSpkZW50cnksCiAJY3JlZF90CQkJKmNyZWRwKQogewotCXZub2RlX3QJCQkqZGlyX3ZwOworCWJodl92bm9kZV90CQkqZGlyX3ZwOwogCWNoYXIJCQkqbmFtZSA9IFZOQU1FKGRlbnRyeSk7CiAJeGZzX2lub2RlX3QgICAgICAgICAgICAgKmRwLCAqaXA7CiAJeGZzX3RyYW5zX3QgICAgICAgICAgICAgKnRwID0gTlVMTDsKQEAgLTI0NDgsOCArMjQ2NCw4IEBACiAJICogRW50cnkgbXVzdCBleGlzdCBzaW5jZSB3ZSBkaWQgYSBsb29rdXAgaW4geGZzX2xvY2tfZGlyX2FuZF9lbnRyeS4KIAkgKi8KIAlYRlNfQk1BUF9JTklUKCZmcmVlX2xpc3QsICZmaXJzdF9ibG9jayk7Ci0JZXJyb3IgPSBYRlNfRElSX1JFTU9WRU5BTUUobXAsIHRwLCBkcCwgbmFtZSwgbmFtZWxlbiwgaXAtPmlfaW5vLAotCQkmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIDApOworCWVycm9yID0geGZzX2Rpcl9yZW1vdmVuYW1lKHRwLCBkcCwgbmFtZSwgbmFtZWxlbiwgaXAtPmlfaW5vLAorCQkJCQkmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIDApOwogCWlmIChlcnJvcikgewogCQlBU1NFUlQoZXJyb3IgIT0gRU5PRU5UKTsKIAkJUkVNT1ZFX0RFQlVHX1RSQUNFKF9fTElORV9fKTsKQEAgLTI1MTEsNyArMjUyNyw3IEBACiAJLyoKIAkgKiBMZXQgaW50ZXJwb3NlZCBmaWxlIHN5c3RlbXMga25vdyBhYm91dCByZW1vdmVkIGxpbmtzLgogCSAqLwotCVZPUF9MSU5LX1JFTU9WRUQoWEZTX0lUT1YoaXApLCBkaXJfdnAsIGxpbmtfemVybyk7CisJYmh2X3ZvcF9saW5rX3JlbW92ZWQoWEZTX0lUT1YoaXApLCBkaXJfdnAsIGxpbmtfemVybyk7CiAKIAlJUkVMRShpcCk7CiAKQEAgLTI1NjQsOCArMjU4MCw4IEBACiBTVEFUSUMgaW50CiB4ZnNfbGluaygKIAliaHZfZGVzY190CQkqdGFyZ2V0X2Rpcl9iZHAsCi0Jdm5vZGVfdAkJCSpzcmNfdnAsCi0Jdm5hbWVfdAkJCSpkZW50cnksCisJYmh2X3Zub2RlX3QJCSpzcmNfdnAsCisJYmh2X3ZuYW1lX3QJCSpkZW50cnksCiAJY3JlZF90CQkJKmNyZWRwKQogewogCXhmc19pbm9kZV90CQkqdGRwLCAqc2lwOwpAQCAtMjU3Nyw3ICsyNTkzLDcgQEAKIAl4ZnNfZnNibG9ja190ICAgICAgICAgICBmaXJzdF9ibG9jazsKIAlpbnQJCQljYW5jZWxfZmxhZ3M7CiAJaW50CQkJY29tbWl0dGVkOwotCXZub2RlX3QJCQkqdGFyZ2V0X2Rpcl92cDsKKwliaHZfdm5vZGVfdAkJKnRhcmdldF9kaXJfdnA7CiAJaW50CQkJcmVzYmxrczsKIAljaGFyCQkJKnRhcmdldF9uYW1lID0gVk5BTUUoZGVudHJ5KTsKIAlpbnQJCQl0YXJnZXRfbmFtZWxlbjsKQEAgLTI2NjgsMTMgKzI2ODQsMTIgQEAKIAl9CiAKIAlpZiAocmVzYmxrcyA9PSAwICYmCi0JICAgIChlcnJvciA9IFhGU19ESVJfQ0FORU5URVIobXAsIHRwLCB0ZHAsIHRhcmdldF9uYW1lLAotCQkJdGFyZ2V0X25hbWVsZW4pKSkKKwkgICAgKGVycm9yID0geGZzX2Rpcl9jYW5lbnRlcih0cCwgdGRwLCB0YXJnZXRfbmFtZSwgdGFyZ2V0X25hbWVsZW4pKSkKIAkJZ290byBlcnJvcl9yZXR1cm47CiAKIAlYRlNfQk1BUF9JTklUKCZmcmVlX2xpc3QsICZmaXJzdF9ibG9jayk7CiAKLQllcnJvciA9IFhGU19ESVJfQ1JFQVRFTkFNRShtcCwgdHAsIHRkcCwgdGFyZ2V0X25hbWUsIHRhcmdldF9uYW1lbGVuLAorCWVycm9yID0geGZzX2Rpcl9jcmVhdGVuYW1lKHRwLCB0ZHAsIHRhcmdldF9uYW1lLCB0YXJnZXRfbmFtZWxlbiwKIAkJCQkgICBzaXAtPmlfaW5vLCAmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsCiAJCQkJICAgcmVzYmxrcyk7CiAJaWYgKGVycm9yKQpAQCAtMjczNCwxNSArMjc0OSwxNSBAQAogU1RBVElDIGludAogeGZzX21rZGlyKAogCWJodl9kZXNjX3QJCSpkaXJfYmRwLAotCXZuYW1lX3QJCQkqZGVudHJ5LAotCXZhdHRyX3QJCQkqdmFwLAotCXZub2RlX3QJCQkqKnZwcCwKKwliaHZfdm5hbWVfdAkJKmRlbnRyeSwKKwliaHZfdmF0dHJfdAkJKnZhcCwKKwliaHZfdm5vZGVfdAkJKip2cHAsCiAJY3JlZF90CQkJKmNyZWRwKQogewogCWNoYXIJCQkqZGlyX25hbWUgPSBWTkFNRShkZW50cnkpOwogCXhmc19pbm9kZV90ICAgICAgICAgICAgICpkcDsKIAl4ZnNfaW5vZGVfdAkJKmNkcDsJLyogaW5vZGUgb2YgY3JlYXRlZCBkaXIgKi8KLQl2bm9kZV90CQkJKmN2cDsJLyogdm5vZGUgb2YgY3JlYXRlZCBkaXIgKi8KKwliaHZfdm5vZGVfdAkJKmN2cDsJLyogdm5vZGUgb2YgY3JlYXRlZCBkaXIgKi8KIAl4ZnNfdHJhbnNfdAkJKnRwOwogCXhmc19tb3VudF90CQkqbXA7CiAJaW50CQkJY2FuY2VsX2ZsYWdzOwpAQCAtMjc1MCw3ICsyNzY1LDcgQEAKIAlpbnQJCQljb21taXR0ZWQ7CiAJeGZzX2JtYXBfZnJlZV90ICAgICAgICAgZnJlZV9saXN0OwogCXhmc19mc2Jsb2NrX3QgICAgICAgICAgIGZpcnN0X2Jsb2NrOwotCXZub2RlX3QJCQkqZGlyX3ZwOworCWJodl92bm9kZV90CQkqZGlyX3ZwOwogCWJvb2xlYW5fdAkJZHBfam9pbmVkX3RvX3RyYW5zOwogCWJvb2xlYW5fdAkJY3JlYXRlZCA9IEJfRkFMU0U7CiAJaW50CQkJZG1fZXZlbnRfc2VudCA9IDA7CkBAIC0yODQwLDcgKzI4NTUsNyBAQAogCQlnb3RvIGVycm9yX3JldHVybjsKIAogCWlmIChyZXNibGtzID09IDAgJiYKLQkgICAgKGVycm9yID0gWEZTX0RJUl9DQU5FTlRFUihtcCwgdHAsIGRwLCBkaXJfbmFtZSwgZGlyX25hbWVsZW4pKSkKKwkgICAgKGVycm9yID0geGZzX2Rpcl9jYW5lbnRlcih0cCwgZHAsIGRpcl9uYW1lLCBkaXJfbmFtZWxlbikpKQogCQlnb3RvIGVycm9yX3JldHVybjsKIAkvKgogCSAqIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGlub2RlLgpAQCAtMjg2Nyw5ICsyODgyLDkgQEAKIAogCVhGU19CTUFQX0lOSVQoJmZyZWVfbGlzdCwgJmZpcnN0X2Jsb2NrKTsKIAotCWVycm9yID0gWEZTX0RJUl9DUkVBVEVOQU1FKG1wLCB0cCwgZHAsIGRpcl9uYW1lLCBkaXJfbmFtZWxlbiwKLQkJCWNkcC0+aV9pbm8sICZmaXJzdF9ibG9jaywgJmZyZWVfbGlzdCwKLQkJCXJlc2Jsa3MgPyByZXNibGtzIC0gWEZTX0lBTExPQ19TUEFDRV9SRVMobXApIDogMCk7CisJZXJyb3IgPSB4ZnNfZGlyX2NyZWF0ZW5hbWUodHAsIGRwLCBkaXJfbmFtZSwgZGlyX25hbWVsZW4sIGNkcC0+aV9pbm8sCisJCQkJICAgJmZpcnN0X2Jsb2NrLCAmZnJlZV9saXN0LCByZXNibGtzID8KKwkJCQkgICByZXNibGtzIC0gWEZTX0lBTExPQ19TUEFDRV9SRVMobXApIDogMCk7CiAJaWYgKGVycm9yKSB7CiAJCUFTU0VSVChlcnJvciAhPSBFTk9TUEMpOwogCQlnb3RvIGVycm9yMTsKQEAgLTI4ODMsMTYgKzI4OTgsMTQgQEAKIAkgKi8KIAlkcC0+aV9nZW4rKzsKIAotCWVycm9yID0gWEZTX0RJUl9JTklUKG1wLCB0cCwgY2RwLCBkcCk7Ci0JaWYgKGVycm9yKSB7CisJZXJyb3IgPSB4ZnNfZGlyX2luaXQodHAsIGNkcCwgZHApOworCWlmIChlcnJvcikKIAkJZ290byBlcnJvcjI7Ci0JfQogCiAJY2RwLT5pX2dlbiA9IDE7CiAJZXJyb3IgPSB4ZnNfYnVtcGxpbmsodHAsIGRwKTsKLQlpZiAoZXJyb3IpIHsKKwlpZiAoZXJyb3IpCiAJCWdvdG8gZXJyb3IyOwotCX0KIAogCWN2cCA9IFhGU19JVE9WKGNkcCk7CiAKQEAgLTI5NjksNyArMjk4Miw3IEBACiBTVEFUSUMgaW50CiB4ZnNfcm1kaXIoCiAJYmh2X2Rlc2NfdAkJKmRpcl9iZHAsCi0Jdm5hbWVfdAkJCSpkZW50cnksCisJYmh2X3ZuYW1lX3QJCSpkZW50cnksCiAJY3JlZF90CQkJKmNyZWRwKQogewogCWNoYXIJCQkqbmFtZSA9IFZOQU1FKGRlbnRyeSk7CkBAIC0yOTgyLDcgKzI5OTUsNyBAQAogCXhmc19mc2Jsb2NrX3QgICAgICAgICAgIGZpcnN0X2Jsb2NrOwogCWludAkJCWNhbmNlbF9mbGFnczsKIAlpbnQJCQljb21taXR0ZWQ7Ci0Jdm5vZGVfdAkJCSpkaXJfdnA7CisJYmh2X3Zub2RlX3QJCSpkaXJfdnA7CiAJaW50CQkJZG1fZGlfbW9kZSA9IDA7CiAJaW50CQkJbGFzdF9jZHBfbGluazsKIAlpbnQJCQluYW1lbGVuOwpAQCAtMzEwMSwxNiArMzExNCwxNSBAQAogCQllcnJvciA9IFhGU19FUlJPUihFTk9URU1QVFkpOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9Ci0JaWYgKCFYRlNfRElSX0lTRU1QVFkobXAsIGNkcCkpIHsKKwlpZiAoIXhmc19kaXJfaXNlbXB0eShjZHApKSB7CiAJCWVycm9yID0gWEZTX0VSUk9SKEVOT1RFTVBUWSk7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIAotCWVycm9yID0gWEZTX0RJUl9SRU1PVkVOQU1FKG1wLCB0cCwgZHAsIG5hbWUsIG5hbWVsZW4sIGNkcC0+aV9pbm8sCi0JCSZmaXJzdF9ibG9jaywgJmZyZWVfbGlzdCwgcmVzYmxrcyk7Ci0JaWYgKGVycm9yKSB7CisJZXJyb3IgPSB4ZnNfZGlyX3JlbW92ZW5hbWUodHAsIGRwLCBuYW1lLCBuYW1lbGVuLCBjZHAtPmlfaW5vLAorCQkJCQkmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIHJlc2Jsa3MpOworCWlmIChlcnJvcikKIAkJZ290byBlcnJvcjE7Ci0JfQogCiAJeGZzX2ljaGd0aW1lKGRwLCBYRlNfSUNIR1RJTUVfTU9EIHwgWEZTX0lDSEdUSU1FX0NIRyk7CiAKQEAgLTMxODEsNyArMzE5Myw3IEBACiAJLyoKIAkgKiBMZXQgaW50ZXJwb3NlZCBmaWxlIHN5c3RlbXMga25vdyBhYm91dCByZW1vdmVkIGxpbmtzLgogCSAqLwotCVZPUF9MSU5LX1JFTU9WRUQoWEZTX0lUT1YoY2RwKSwgZGlyX3ZwLCBsYXN0X2NkcF9saW5rKTsKKwliaHZfdm9wX2xpbmtfcmVtb3ZlZChYRlNfSVRPVihjZHApLCBkaXJfdnAsIGxhc3RfY2RwX2xpbmspOwogCiAJSVJFTEUoY2RwKTsKIApAQCAtMzIwOSw4ICszMjIxLDYgQEAKIAogCiAvKgotICogeGZzX3JlYWRkaXIKLSAqCiAgKiBSZWFkIGRwJ3MgZW50cmllcyBzdGFydGluZyBhdCB1aW9wLT51aW9fb2Zmc2V0IGFuZCB0cmFuc2xhdGUgdGhlbSBpbnRvCiAgKiBidWZzaXplIGJ5dGVzIHdvcnRoIG9mIHN0cnVjdCBkaXJlbnRzIHN0YXJ0aW5nIGF0IGJ1ZmJhc2UuCiAgKi8KQEAgLTMyMzAsMjggKzMyNDAsMjMgQEAKIAkJCQkJICAgICAgIChpbnN0X3QgKilfX3JldHVybl9hZGRyZXNzKTsKIAlkcCA9IFhGU19CSFZUT0koZGlyX2JkcCk7CiAKLQlpZiAoWEZTX0ZPUkNFRF9TSFVURE9XTihkcC0+aV9tb3VudCkpIHsKKwlpZiAoWEZTX0ZPUkNFRF9TSFVURE9XTihkcC0+aV9tb3VudCkpCiAJCXJldHVybiBYRlNfRVJST1IoRUlPKTsKLQl9CiAKIAlsb2NrX21vZGUgPSB4ZnNfaWxvY2tfbWFwX3NoYXJlZChkcCk7Ci0JZXJyb3IgPSBYRlNfRElSX0dFVERFTlRTKGRwLT5pX21vdW50LCB0cCwgZHAsIHVpb3AsIGVvZnApOworCWVycm9yID0geGZzX2Rpcl9nZXRkZW50cyh0cCwgZHAsIHVpb3AsIGVvZnApOwogCXhmc19pdW5sb2NrX21hcF9zaGFyZWQoZHAsIGxvY2tfbW9kZSk7CiAJcmV0dXJuIGVycm9yOwogfQogCiAKLS8qCi0gKiB4ZnNfc3ltbGluawotICoKLSAqLwogU1RBVElDIGludAogeGZzX3N5bWxpbmsoCiAJYmh2X2Rlc2NfdAkJKmRpcl9iZHAsCi0Jdm5hbWVfdAkJCSpkZW50cnksCi0JdmF0dHJfdAkJCSp2YXAsCisJYmh2X3ZuYW1lX3QJCSpkZW50cnksCisJYmh2X3ZhdHRyX3QJCSp2YXAsCiAJY2hhcgkJCSp0YXJnZXRfcGF0aCwKLQl2bm9kZV90CQkJKip2cHAsCisJYmh2X3Zub2RlX3QJCSoqdnBwLAogCWNyZWRfdAkJCSpjcmVkcCkKIHsKIAl4ZnNfdHJhbnNfdAkJKnRwOwpAQCAtMzI2Myw3ICszMjY4LDcgQEAKIAl4ZnNfYm1hcF9mcmVlX3QJCWZyZWVfbGlzdDsKIAl4ZnNfZnNibG9ja190CQlmaXJzdF9ibG9jazsKIAlib29sZWFuX3QJCWRwX2pvaW5lZF90b190cmFuczsKLQl2bm9kZV90CQkJKmRpcl92cDsKKwliaHZfdm5vZGVfdAkJKmRpcl92cDsKIAl1aW50CQkJY2FuY2VsX2ZsYWdzOwogCWludAkJCWNvbW1pdHRlZDsKIAl4ZnNfZmlsZW9mZl90CQlmaXJzdF9mc2I7CkBAIC0zMzA4LDcgKzMzMTMsNyBAQAogCQlpbnQgbGVuLCB0b3RhbDsKIAkJY2hhciAqcGF0aDsKIAotCQlmb3IodG90YWwgPSAwLCBwYXRoID0gdGFyZ2V0X3BhdGg7IHRvdGFsIDwgcGF0aGxlbjspIHsKKwkJZm9yICh0b3RhbCA9IDAsIHBhdGggPSB0YXJnZXRfcGF0aDsgdG90YWwgPCBwYXRobGVuOykgewogCQkJLyoKIAkJCSAqIFNraXAgYW55IHNsYXNoZXMuCiAJCQkgKi8KQEAgLTM0MDIsNyArMzQwNyw3IEBACiAJICogQ2hlY2sgZm9yIGFiaWxpdHkgdG8gZW50ZXIgZGlyZWN0b3J5IGVudHJ5LCBpZiBubyBzcGFjZSByZXNlcnZlZC4KIAkgKi8KIAlpZiAocmVzYmxrcyA9PSAwICYmCi0JICAgIChlcnJvciA9IFhGU19ESVJfQ0FORU5URVIobXAsIHRwLCBkcCwgbGlua19uYW1lLCBsaW5rX25hbWVsZW4pKSkKKwkgICAgKGVycm9yID0geGZzX2Rpcl9jYW5lbnRlcih0cCwgZHAsIGxpbmtfbmFtZSwgbGlua19uYW1lbGVuKSkpCiAJCWdvdG8gZXJyb3JfcmV0dXJuOwogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgYm1hcCBmcmVlbGlzdCBwcmlvciB0byBjYWxsaW5nIGVpdGhlcgpAQCAtMzQ1Nyw3ICszNDYyLDcgQEAKIAkJZXJyb3IgPSB4ZnNfYm1hcGkodHAsIGlwLCBmaXJzdF9mc2IsIGZzX2Jsb2NrcywKIAkJCQkgIFhGU19CTUFQSV9XUklURSB8IFhGU19CTUFQSV9NRVRBREFUQSwKIAkJCQkgICZmaXJzdF9ibG9jaywgcmVzYmxrcywgbXZhbCwgJm5tYXBzLAotCQkJCSAgJmZyZWVfbGlzdCk7CisJCQkJICAmZnJlZV9saXN0LCBOVUxMKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlnb3RvIGVycm9yMTsKIAkJfQpAQCAtMzQ4OSwxMSArMzQ5NCwxMCBAQAogCS8qCiAJICogQ3JlYXRlIHRoZSBkaXJlY3RvcnkgZW50cnkgZm9yIHRoZSBzeW1saW5rLgogCSAqLwotCWVycm9yID0gWEZTX0RJUl9DUkVBVEVOQU1FKG1wLCB0cCwgZHAsIGxpbmtfbmFtZSwgbGlua19uYW1lbGVuLAotCQkJaXAtPmlfaW5vLCAmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIHJlc2Jsa3MpOwotCWlmIChlcnJvcikgeworCWVycm9yID0geGZzX2Rpcl9jcmVhdGVuYW1lKHRwLCBkcCwgbGlua19uYW1lLCBsaW5rX25hbWVsZW4sIGlwLT5pX2lubywKKwkJCQkgICAmZmlyc3RfYmxvY2ssICZmcmVlX2xpc3QsIHJlc2Jsa3MpOworCWlmIChlcnJvcikKIAkJZ290byBlcnJvcjE7Ci0JfQogCXhmc19pY2hndGltZShkcCwgWEZTX0lDSEdUSU1FX01PRCB8IFhGU19JQ0hHVElNRV9DSEcpOwogCXhmc190cmFuc19sb2dfaW5vZGUodHAsIGRwLCBYRlNfSUxPR19DT1JFKTsKIApAQCAtMzU0MSw3ICszNTQ1LDcgQEAKIAl9CiAKIAlpZiAoIWVycm9yKSB7Ci0JCXZub2RlX3QgKnZwOworCQliaHZfdm5vZGVfdCAqdnA7CiAKIAkJQVNTRVJUKGlwKTsKIAkJdnAgPSBYRlNfSVRPVihpcCk7CkBAIC0zNjA2LDEwICszNjEwLDEwIEBACiBpbnQKIHhmc19yd2xvY2soCiAJYmh2X2Rlc2NfdAkqYmRwLAotCXZyd2xvY2tfdAlsb2NrdHlwZSkKKwliaHZfdnJ3bG9ja190CWxvY2t0eXBlKQogewogCXhmc19pbm9kZV90CSppcDsKLQl2bm9kZV90CQkqdnA7CisJYmh2X3Zub2RlX3QJKnZwOwogCiAJdnAgPSBCSFZfVE9fVk5PREUoYmRwKTsKIAlpZiAoVk5fSVNESVIodnApKQpAQCAtMzYzNywxMCArMzY0MSwxMCBAQAogdm9pZAogeGZzX3J3dW5sb2NrKAogCWJodl9kZXNjX3QJKmJkcCwKLQl2cndsb2NrX3QJbG9ja3R5cGUpCisJYmh2X3Zyd2xvY2tfdAlsb2NrdHlwZSkKIHsKIAl4ZnNfaW5vZGVfdCAgICAgKmlwOwotCXZub2RlX3QJCSp2cDsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAl2cCA9IEJIVl9UT19WTk9ERShiZHApOwogCWlmIChWTl9JU0RJUih2cCkpCkBAIC0zNzQ0LDcgKzM3NDgsNiBAQAogCXJldHVybiBlcnJvcjsKIH0KIAotCiBpbnQKIHhmc19zZXRfZG1hdHRycyAoCiAJYmh2X2Rlc2NfdAkqYmRwLApAQCAtMzc4NSwxNiArMzc4OCwxMiBAQAogCXJldHVybiBlcnJvcjsKIH0KIAotCi0vKgotICogeGZzX3JlY2xhaW0KLSAqLwogU1RBVElDIGludAogeGZzX3JlY2xhaW0oCiAJYmh2X2Rlc2NfdAkqYmRwKQogewogCXhmc19pbm9kZV90CSppcDsKLQl2bm9kZV90CQkqdnA7CisJYmh2X3Zub2RlX3QJKnZwOwogCiAJdnAgPSBCSFZfVE9fVk5PREUoYmRwKTsKIAlpcCA9IFhGU19CSFZUT0koYmRwKTsKQEAgLTM4NDksNyArMzg0OCw3IEBACiAJaW50CQlzeW5jX21vZGUpCiB7CiAJeGZzX2loYXNoX3QJKmloID0gaXAtPmlfaGFzaDsKLQl2bm9kZV90CQkqdnAgPSBYRlNfSVRPVl9OVUxMKGlwKTsKKwliaHZfdm5vZGVfdAkqdnAgPSBYRlNfSVRPVl9OVUxMKGlwKTsKIAlpbnQJCWVycm9yOwogCiAJaWYgKHZwICYmIFZOX0JBRCh2cCkpCkBAIC00MTE2LDEwICs0MTE1LDEwIEBACiAJCSAqIElzc3VlIHRoZSB4ZnNfYm1hcGkoKSBjYWxsIHRvIGFsbG9jYXRlIHRoZSBibG9ja3MKIAkJICovCiAJCVhGU19CTUFQX0lOSVQoJmZyZWVfbGlzdCwgJmZpcnN0ZnNiKTsKLQkJZXJyb3IgPSB4ZnNfYm1hcGkodHAsIGlwLCBzdGFydG9mZnNldF9mc2IsCisJCWVycm9yID0gWEZTX0JNQVBJKG1wLCB0cCwgJmlwLT5pX2lvY29yZSwgc3RhcnRvZmZzZXRfZnNiLAogCQkJCSAgYWxsb2NhdGVzaXplX2ZzYiwgYm1hcGlfZmxhZywKIAkJCQkgICZmaXJzdGZzYiwgMCwgaW1hcHAsICZuaW1hcHMsCi0JCQkJICAmZnJlZV9saXN0KTsKKwkJCQkgICZmcmVlX2xpc3QsIE5VTEwpOwogCQlpZiAoZXJyb3IpIHsKIAkJCWdvdG8gZXJyb3IwOwogCQl9CkBAIC00MTk5LDggKzQxOTgsOCBAQAogCWZvciAob2Zmc2V0ID0gc3RhcnRvZmY7IG9mZnNldCA8PSBlbmRvZmY7IG9mZnNldCA9IGxhc3RvZmZzZXQgKyAxKSB7CiAJCW9mZnNldF9mc2IgPSBYRlNfQl9UT19GU0JUKG1wLCBvZmZzZXQpOwogCQluaW1hcCA9IDE7Ci0JCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIGlwLCBvZmZzZXRfZnNiLCAxLCAwLCBOVUxMLCAwLCAmaW1hcCwKLQkJCSZuaW1hcCwgTlVMTCk7CisJCWVycm9yID0gWEZTX0JNQVBJKG1wLCBOVUxMLCAmaXAtPmlfaW9jb3JlLCBvZmZzZXRfZnNiLCAxLCAwLAorCQkJTlVMTCwgMCwgJmltYXAsICZuaW1hcCwgTlVMTCwgTlVMTCk7CiAJCWlmIChlcnJvciB8fCBuaW1hcCA8IDEpCiAJCQlicmVhazsKIAkJQVNTRVJUKGltYXAuYnJfYmxvY2tjb3VudCA+PSAxKTsKQEAgLTQyNTksNyArNDI1OCw3IEBACiAJeGZzX29mZl90CQlsZW4sCiAJaW50CQkJYXR0cl9mbGFncykKIHsKLQl2bm9kZV90CQkJKnZwOworCWJodl92bm9kZV90CQkqdnA7CiAJaW50CQkJY29tbWl0dGVkOwogCWludAkJCWRvbmU7CiAJeGZzX29mZl90CQllbmRfZG1pX29mZnNldDsKQEAgLTQzMDgsNyArNDMwNyw2IEBACiAJCQlyZXR1cm4gZXJyb3I7CiAJfQogCi0JQVNTRVJUKGF0dHJfZmxhZ3MgJiBBVFRSX05PTE9DSyA/IGF0dHJfZmxhZ3MgJiBBVFRSX0RNSSA6IDEpOwogCWlmIChhdHRyX2ZsYWdzICYgQVRUUl9OT0xPQ0spCiAJCW5lZWRfaW9sb2NrID0gMDsKIAlpZiAobmVlZF9pb2xvY2spIHsKQEAgLTQzMjYsNyArNDMyNCw3IEBACiAJaWYgKFZOX0NBQ0hFRCh2cCkgIT0gMCkgewogCQl4ZnNfaW52YWxfY2FjaGVkX3RyYWNlKCZpcC0+aV9pb2NvcmUsIGlvZmZzZXQsIC0xLAogCQkJCWN0b29mZihvZmZ0b2N0KGlvZmZzZXQpKSwgLTEpOwotCQlWT1BfRkxVU0hJTlZBTF9QQUdFUyh2cCwgY3Rvb2ZmKG9mZnRvY3QoaW9mZnNldCkpLAorCQliaHZfdm9wX2ZsdXNoaW52YWxfcGFnZXModnAsIGN0b29mZihvZmZ0b2N0KGlvZmZzZXQpKSwKIAkJCQktMSwgRklfUkVNQVBGX0xPQ0tFRCk7CiAJfQogCkBAIC00MzM4LDggKzQzMzYsOCBAQAogCSAqLwogCWlmIChydCAmJiAhWEZTX1NCX1ZFUlNJT05fSEFTRVhURkxHQklUKCZtcC0+bV9zYikpIHsKIAkJbmltYXAgPSAxOwotCQllcnJvciA9IHhmc19ibWFwaShOVUxMLCBpcCwgc3RhcnRvZmZzZXRfZnNiLCAxLCAwLCBOVUxMLCAwLAotCQkJJmltYXAsICZuaW1hcCwgTlVMTCk7CisJCWVycm9yID0gWEZTX0JNQVBJKG1wLCBOVUxMLCAmaXAtPmlfaW9jb3JlLCBzdGFydG9mZnNldF9mc2IsCisJCQkxLCAwLCBOVUxMLCAwLCAmaW1hcCwgJm5pbWFwLCBOVUxMLCBOVUxMKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfdW5sb2NrX2lvbG9jazsKIAkJQVNTRVJUKG5pbWFwID09IDAgfHwgbmltYXAgPT0gMSk7CkBAIC00MzUzLDggKzQzNTEsOCBAQAogCQkJCXN0YXJ0b2Zmc2V0X2ZzYiArPSBtcC0+bV9zYi5zYl9yZXh0c2l6ZSAtIG1vZDsKIAkJfQogCQluaW1hcCA9IDE7Ci0JCWVycm9yID0geGZzX2JtYXBpKE5VTEwsIGlwLCBlbmRvZmZzZXRfZnNiIC0gMSwgMSwgMCwgTlVMTCwgMCwKLQkJCSZpbWFwLCAmbmltYXAsIE5VTEwpOworCQllcnJvciA9IFhGU19CTUFQSShtcCwgTlVMTCwgJmlwLT5pX2lvY29yZSwgZW5kb2Zmc2V0X2ZzYiAtIDEsCisJCQkxLCAwLCBOVUxMLCAwLCAmaW1hcCwgJm5pbWFwLCBOVUxMLCBOVUxMKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfdW5sb2NrX2lvbG9jazsKIAkJQVNTRVJUKG5pbWFwID09IDAgfHwgbmltYXAgPT0gMSk7CkBAIC00NDI2LDkgKzQ0MjQsOSBAQAogCQkgKiBpc3N1ZSB0aGUgYnVubWFwaSgpIGNhbGwgdG8gZnJlZSB0aGUgYmxvY2tzCiAJCSAqLwogCQlYRlNfQk1BUF9JTklUKCZmcmVlX2xpc3QsICZmaXJzdGZzYik7Ci0JCWVycm9yID0geGZzX2J1bm1hcGkodHAsIGlwLCBzdGFydG9mZnNldF9mc2IsCisJCWVycm9yID0gWEZTX0JVTk1BUEkobXAsIHRwLCAmaXAtPmlfaW9jb3JlLCBzdGFydG9mZnNldF9mc2IsCiAJCQkJICBlbmRvZmZzZXRfZnNiIC0gc3RhcnRvZmZzZXRfZnNiLAotCQkJCSAgMCwgMiwgJmZpcnN0ZnNiLCAmZnJlZV9saXN0LCAmZG9uZSk7CisJCQkJICAwLCAyLCAmZmlyc3Rmc2IsICZmcmVlX2xpc3QsIE5VTEwsICZkb25lKTsKIAkJaWYgKGVycm9yKSB7CiAJCQlnb3RvIGVycm9yMDsKIAkJfQpAQCAtNDQ4OCw4ICs0NDg2LDggQEAKIAl4ZnNfb2ZmX3QJc3RhcnRvZmZzZXQ7CiAJeGZzX29mZl90CWxsZW47CiAJeGZzX3RyYW5zX3QJKnRwOwotCXZhdHRyX3QJCXZhOwotCXZub2RlX3QJCSp2cDsKKwliaHZfdmF0dHJfdAl2YTsKKwliaHZfdm5vZGVfdAkqdnA7CiAKIAl2cCA9IEJIVl9UT19WTk9ERShiZHApOwogCXZuX3RyYWNlX2VudHJ5KHZwLCBfX0ZVTkNUSU9OX18sIChpbnN0X3QgKilfX3JldHVybl9hZGRyZXNzKTsKQEAgLTQ2NDIsOSArNDY0MCwxMCBAQAogCXJldHVybiBlcnJvcjsKIH0KIAotdm5vZGVvcHNfdCB4ZnNfdm5vZGVvcHMgPSB7CitiaHZfdm5vZGVvcHNfdCB4ZnNfdm5vZGVvcHMgPSB7CiAJQkhWX0lERU5USVRZX0lOSVQoVk5fQkhWX1hGUyxWTk9ERV9QT1NJVElPTl9YRlMpLAogCS52b3Bfb3BlbgkJPSB4ZnNfb3BlbiwKKwkudm9wX2Nsb3NlCQk9IHhmc19jbG9zZSwKIAkudm9wX3JlYWQJCT0geGZzX3JlYWQsCiAjaWZkZWYgSEFWRV9TRU5ERklMRQogCS52b3Bfc2VuZGZpbGUJCT0geGZzX3NlbmRmaWxlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjY29uZmlnLmggYi9pbmNsdWRlL2FjcGkvYWNjb25maWcuaAppbmRleCBlMjdkYzhmLi5iOWJlY2ViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNjb25maWcuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNjb25maWcuaApAQCAtNjMsNyArNjMsNyBAQAogCiAvKiBDdXJyZW50IEFDUElDQSBzdWJzeXN0ZW0gdmVyc2lvbiBpbiBZWVlZTU1ERCBmb3JtYXQgKi8KIAotI2RlZmluZSBBQ1BJX0NBX1ZFUlNJT04gICAgICAgICAgICAgICAgIDB4MjAwNjAxMjcKKyNkZWZpbmUgQUNQSV9DQV9WRVJTSU9OICAgICAgICAgICAgICAgICAweDIwMDYwNjA4CiAKIC8qCiAgKiBPUyBuYW1lLCB1c2VkIGZvciB0aGUgX09TIG9iamVjdC4gIFRoZSBfT1Mgb2JqZWN0IGlzIGVzc2VudGlhbGx5IG9ic29sZXRlLApAQCAtODEsNiArODEsNyBAQAogI2RlZmluZSBBQ1BJX01BWF9QQVJTRV9DQUNIRV9ERVBUSCAgICAgIDk2CS8qIFBhcnNlIHRyZWUgb2JqZWN0cyAqLwogI2RlZmluZSBBQ1BJX01BWF9FWFRQQVJTRV9DQUNIRV9ERVBUSCAgIDk2CS8qIFBhcnNlIHRyZWUgb2JqZWN0cyAqLwogI2RlZmluZSBBQ1BJX01BWF9PQkpFQ1RfQ0FDSEVfREVQVEggICAgIDk2CS8qIEludGVycHJldGVyIG9wZXJhbmQgb2JqZWN0cyAqLworI2RlZmluZSBBQ1BJX01BWF9OQU1FU1BBQ0VfQ0FDSEVfREVQVEggIDk2CS8qIE5hbWVzcGFjZSBvYmplY3RzICovCiAKIC8qCiAgKiBTaG91bGQgdGhlIHN1YnN5c3RlbSBhYm9ydCB0aGUgbG9hZGluZyBvZiBhbiBBQ1BJIHRhYmxlIGlmIHRoZQpAQCAtMTAyLDkgKzEwMyw5IEBACiAKICNkZWZpbmUgQUNQSV9NQVhfU0VNQVBIT1JFX0NPVU5UICAgICAgICAyNTYKIAotLyogTWF4IHJlZmVyZW5jZSBjb3VudCAoZm9yIGRlYnVnIG9ubHkpICovCisvKiBNYXhpbXVtIG9iamVjdCByZWZlcmVuY2UgY291bnQgKGRldGVjdHMgb2JqZWN0IGRlbGV0aW9uIGlzc3VlcykgKi8KIAotI2RlZmluZSBBQ1BJX01BWF9SRUZFUkVOQ0VfQ09VTlQgICAgICAgIDB4NDAwCisjZGVmaW5lIEFDUElfTUFYX1JFRkVSRU5DRV9DT1VOVCAgICAgICAgMHg4MDAKIAogLyogU2l6ZSBvZiBjYWNoZWQgbWVtb3J5IG1hcHBpbmcgZm9yIHN5c3RlbSBtZW1vcnkgb3BlcmF0aW9uIHJlZ2lvbiAqLwogCkBAIC0xNzEsMTIgKzE3Miw3IEBACiAKIC8qIEFycmF5IHNpemVzLiAgVXNlZCBmb3IgcmFuZ2UgY2hlY2tpbmcgYWxzbyAqLwogCi0jZGVmaW5lIEFDUElfTlVNX0FDQ0VTU19UWVBFUyAgICAgICAgICAgNgotI2RlZmluZSBBQ1BJX05VTV9VUERBVEVfUlVMRVMgICAgICAgICAgIDMKLSNkZWZpbmUgQUNQSV9OVU1fTE9DS19SVUxFUyAgICAgICAgICAgICAyCi0jZGVmaW5lIEFDUElfTlVNX01BVENIX09QUyAgICAgICAgICAgICAgNgotI2RlZmluZSBBQ1BJX05VTV9PUENPREVTICAgICAgICAgICAgICAgIDI1NgotI2RlZmluZSBBQ1BJX05VTV9GSUVMRF9OQU1FUyAgICAgICAgICAgIDIKKyNkZWZpbmUgQUNQSV9NQVhfTUFUQ0hfT1BDT0RFICAgICAgICAgICA1CiAKIC8qIFJTRFAgY2hlY2tzdW1zICovCiAKQEAgLTE4NywxMCArMTgzLDYgQEAKIAogI2RlZmluZSBBQ1BJX1NNQlVTX0JVRkZFUl9TSVpFICAgICAgICAgIDM0CiAKLS8qIE51bWJlciBvZiBzdHJpbmdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgX09TSSByZXNlcnZlZCBtZXRob2QgKi8KLQotI2RlZmluZSBBQ1BJX05VTV9PU0lfU1RSSU5HUyAgICAgICAgICAgIDEwCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBQ1BJIEFNTCBEZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjZGlzYXNtLmggYi9pbmNsdWRlL2FjcGkvYWNkaXNhc20uaAppbmRleCAxMWE4ZmUzLi45YTdkNjkyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNkaXNhc20uaAorKysgYi9pbmNsdWRlL2FjcGkvYWNkaXNhc20uaApAQCAtNTAsMjYgKzUwLDcyIEBACiAjZGVmaW5lIEJMT0NLX1BBUkVOICAgICAgICAgICAgIDEKICNkZWZpbmUgQkxPQ0tfQlJBQ0UgICAgICAgICAgICAgMgogI2RlZmluZSBCTE9DS19DT01NQV9MSVNUICAgICAgICA0CisjZGVmaW5lIEFDUElfREVGQVVMVF9SRVNOQU1FICAgICoodTMyICopICJfX1JEIgogCiBzdHJ1Y3QgYWNwaV9leHRlcm5hbF9saXN0IHsKIAljaGFyICpwYXRoOworCWNoYXIgKmludGVybmFsX3BhdGg7CiAJc3RydWN0IGFjcGlfZXh0ZXJuYWxfbGlzdCAqbmV4dDsKKwl1MzIgdmFsdWU7CisJdTE2IGxlbmd0aDsKKwl1OCB0eXBlOwogfTsKIAogZXh0ZXJuIHN0cnVjdCBhY3BpX2V4dGVybmFsX2xpc3QgKmFjcGlfZ2JsX2V4dGVybmFsX2xpc3Q7CiAKLS8qIFN0cmluZ3MgdXNlZCBmb3IgZGVjb2RpbmcgZmxhZ3MgdG8gQVNMIGtleXdvcmRzICovCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyB7CisJdTggb3Bjb2RlOworCXU4IG9mZnNldDsKKwljaGFyICpuYW1lOwogCi1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfd29yZF9kZWNvZGVbNF07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfaXJxX2RlY29kZVsyXTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9sb2NrX3J1bGVbQUNQSV9OVU1fTE9DS19SVUxFU107Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfYWNjZXNzX3R5cGVzW0FDUElfTlVNX0FDQ0VTU19UWVBFU107Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfdXBkYXRlX3J1bGVzW0FDUElfTlVNX1VQREFURV9SVUxFU107Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbWF0Y2hfb3BzW0FDUElfTlVNX01BVENIX09QU107Cit9IGFjcGlfZG10YWJsZV9pbmZvOworCisvKgorICogVmFsdWVzIGZvciBPcGNvZGUgYWJvdmUuCisgKiBOb3RlOiAwLTcgbXVzdCBub3QgY2hhbmdlLCB1c2VkIGFzIGEgZmxhZyBzaGlmdCB2YWx1ZQorICovCisjZGVmaW5lIEFDUElfRE1UX0ZMQUcwICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBBQ1BJX0RNVF9GTEFHMSAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgQUNQSV9ETVRfRkxBRzIgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIEFDUElfRE1UX0ZMQUczICAgICAgICAgICAgICAgICAgMworI2RlZmluZSBBQ1BJX0RNVF9GTEFHNCAgICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgQUNQSV9ETVRfRkxBRzUgICAgICAgICAgICAgICAgICA1CisjZGVmaW5lIEFDUElfRE1UX0ZMQUc2ICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBBQ1BJX0RNVF9GTEFHNyAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgQUNQSV9ETVRfRkxBR1MwICAgICAgICAgICAgICAgICA4CisjZGVmaW5lIEFDUElfRE1UX0ZMQUdTMiAgICAgICAgICAgICAgICAgOQorI2RlZmluZSBBQ1BJX0RNVF9VSU5UOCAgICAgICAgICAgICAgICAgIDEwCisjZGVmaW5lIEFDUElfRE1UX1VJTlQxNiAgICAgICAgICAgICAgICAgMTEKKyNkZWZpbmUgQUNQSV9ETVRfVUlOVDI0ICAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBBQ1BJX0RNVF9VSU5UMzIgICAgICAgICAgICAgICAgIDEzCisjZGVmaW5lIEFDUElfRE1UX1VJTlQ1NiAgICAgICAgICAgICAgICAgMTQKKyNkZWZpbmUgQUNQSV9ETVRfVUlOVDY0ICAgICAgICAgICAgICAgICAxNQorI2RlZmluZSBBQ1BJX0RNVF9TVFJJTkcgICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIEFDUElfRE1UX05BTUU0ICAgICAgICAgICAgICAgICAgMTcKKyNkZWZpbmUgQUNQSV9ETVRfTkFNRTYgICAgICAgICAgICAgICAgICAxOAorI2RlZmluZSBBQ1BJX0RNVF9OQU1FOCAgICAgICAgICAgICAgICAgIDE5CisjZGVmaW5lIEFDUElfRE1UX0NIS1NVTSAgICAgICAgICAgICAgICAgMjAKKyNkZWZpbmUgQUNQSV9ETVRfU1BBQ0VJRCAgICAgICAgICAgICAgICAyMQorI2RlZmluZSBBQ1BJX0RNVF9HQVMgICAgICAgICAgICAgICAgICAgIDIyCisjZGVmaW5lIEFDUElfRE1UX01BRFQgICAgICAgICAgICAgICAgICAgMjMKKyNkZWZpbmUgQUNQSV9ETVRfU1JBVCAgICAgICAgICAgICAgICAgICAyNAorI2RlZmluZSBBQ1BJX0RNVF9FWElUICAgICAgICAgICAgICAgICAgIDI1CisKK3R5cGVkZWYKK3ZvaWQgKCpBQ1BJX1RBQkxFX0hBTkRMRVIpIChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKiB0YWJsZSk7CisKK3N0cnVjdCBhY3BpX2RtdGFibGVfZGF0YSB7CisJY2hhciAqc2lnbmF0dXJlOworCXN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyAqdGFibGVfaW5mbzsKKwlBQ1BJX1RBQkxFX0hBTkRMRVIgdGFibGVfaGFuZGxlcjsKK307CiAKIHN0cnVjdCBhY3BpX29wX3dhbGtfaW5mbyB7CiAJdTMyIGxldmVsOworCXUzMiBsYXN0X2xldmVsOworCXUzMiBjb3VudDsKIAl1MzIgYml0X29mZnNldDsKKwl1MzIgZmxhZ3M7CiAJc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZTsKIH07CiAKQEAgLTc3LDYgKzEyMywxMDAgQEAKIGFjcGlfc3RhdHVzKCphc2xfd2Fsa19jYWxsYmFjaykgKHVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICogb3AsCiAJCQkJIHUzMiBsZXZlbCwgdm9pZCAqY29udGV4dCk7CiAKK3N0cnVjdCBhY3BpX3Jlc291cmNlX3RhZyB7CisJdTMyIGJpdF9pbmRleDsKKwljaGFyICp0YWc7Cit9OworCisvKiBTdHJpbmdzIHVzZWQgZm9yIGRlY29kaW5nIGZsYWdzIHRvIEFTTCBrZXl3b3JkcyAqLworCitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfd29yZF9kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9pcnFfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbG9ja19ydWxlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfYWNjZXNzX3R5cGVzW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfdXBkYXRlX3J1bGVzW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbWF0Y2hfb3BzW107CisKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZjBbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZjFbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZjJbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZjNbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZjRbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2FzZl9oZHJbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2Jvb3RbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2NwZXBbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2NwZXAwW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19kYmdwW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19lY2R0W107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19mYWNzW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19mYWR0MVtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fZmFkdDJbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX2dhc1tdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9faGVhZGVyW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19ocGV0W107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19tYWR0W107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19tYWR0MFtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fbWFkdDFbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX21hZHQyW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19tYWR0M1tdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fbWFkdDRbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX21hZHQ1W107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19tYWR0NltdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fbWFkdDdbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX21hZHQ4W107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19tYWR0X2hkcltdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fbWNmZ1tdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fbWNmZzBbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX3JzZHAxW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb19yc2RwMltdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc2JzdFtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc2xpdFtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc3BjcltdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc3BtaVtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc3JhdFtdOworZXh0ZXJuIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyBhY3BpX2RtX3RhYmxlX2luZm9fc3JhdDBbXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV9kbXRhYmxlX2luZm8gYWNwaV9kbV90YWJsZV9pbmZvX3NyYXQxW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb190Y3BhW107CitleHRlcm4gc3RydWN0IGFjcGlfZG10YWJsZV9pbmZvIGFjcGlfZG1fdGFibGVfaW5mb193ZHJ0W107CisKKy8qCisgKiBkbXRhYmxlCisgKi8KK3ZvaWQgYWNwaV9kbV9kdW1wX2RhdGFfdGFibGUoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSk7CisKK3ZvaWQKK2FjcGlfZG1fZHVtcF90YWJsZSh1MzIgdGFibGVfbGVuZ3RoLAorCQkgICB1MzIgdGFibGVfb2Zmc2V0LAorCQkgICB2b2lkICp0YWJsZSwKKwkJICAgdTMyIHN1Yl90YWJsZV9sZW5ndGgsIHN0cnVjdCBhY3BpX2RtdGFibGVfaW5mbyAqaW5mbyk7CisKK3ZvaWQgYWNwaV9kbV9saW5lX2hlYWRlcih1MzIgb2Zmc2V0LCB1MzIgYnl0ZV9sZW5ndGgsIGNoYXIgKm5hbWUpOworCit2b2lkIGFjcGlfZG1fbGluZV9oZWFkZXIyKHUzMiBvZmZzZXQsIHUzMiBieXRlX2xlbmd0aCwgY2hhciAqbmFtZSwgdTMyIHZhbHVlKTsKKworLyoKKyAqIGRtdGJkdW1wCisgKi8KK3ZvaWQgYWNwaV9kbV9kdW1wX2FzZihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordm9pZCBhY3BpX2RtX2R1bXBfY3BlcChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordm9pZCBhY3BpX2RtX2R1bXBfZmFkdChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordm9pZCBhY3BpX2RtX2R1bXBfc3JhdChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordm9pZCBhY3BpX2RtX2R1bXBfbWNmZyhzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordm9pZCBhY3BpX2RtX2R1bXBfbWFkdChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKTsKKwordTMyIGFjcGlfZG1fZHVtcF9yc2RwKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUpOworCit2b2lkIGFjcGlfZG1fZHVtcF9yc2R0KHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUpOworCit2b2lkIGFjcGlfZG1fZHVtcF9zbGl0KHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUpOworCit2b2lkIGFjcGlfZG1fZHVtcF94c2R0KHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqdGFibGUpOworCiAvKgogICogZG13YWxrCiAgKi8KQEAgLTg0LDYgKzIyNCwxMSBAQAogYWNwaV9kbV9kaXNhc3NlbWJsZShzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlLAogCQkgICAgdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm9yaWdpbiwgdTMyIG51bV9vcGNvZGVzKTsKIAordm9pZAorYWNwaV9kbV93YWxrX3BhcnNlX3RyZWUodW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm9wLAorCQkJYXNsX3dhbGtfY2FsbGJhY2sgZGVzY2VuZGluZ19jYWxsYmFjaywKKwkJCWFzbF93YWxrX2NhbGxiYWNrIGFzY2VuZGluZ19jYWxsYmFjaywgdm9pZCAqY29udGV4dCk7CisKIC8qCiAgKiBkbW9wY29kZQogICovCkBAIC0xNjYsNiArMzExLDcgQEAKIAogdm9pZAogYWNwaV9kbV9yZXNvdXJjZV90ZW1wbGF0ZShzdHJ1Y3QgYWNwaV9vcF93YWxrX2luZm8gKmluZm8sCisJCQkgIHVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpvcCwKIAkJCSAgdTggKiBieXRlX2RhdGEsIHUzMiBieXRlX2NvdW50KTsKIAogdTggYWNwaV9kbV9pc19yZXNvdXJjZV90ZW1wbGF0ZSh1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqb3ApOwpAQCAtMTc2LDYgKzMyMiw4IEBACiAKIHZvaWQgYWNwaV9kbV9kZWNvZGVfYXR0cmlidXRlKHU4IGF0dHJpYnV0ZSk7CiAKK3ZvaWQgYWNwaV9kbV9kZXNjcmlwdG9yX25hbWUodm9pZCk7CisKIC8qCiAgKiBkbXJlc3JjbAogICovCkBAIC0yNDgsNiArMzk2LDE1IEBACiAvKgogICogZG11dGlscwogICovCi12b2lkIGFjcGlfZG1fYWRkX3RvX2V4dGVybmFsX2xpc3QoY2hhciAqcGF0aCk7Cit2b2lkIGFjcGlfZG1fYWRkX3RvX2V4dGVybmFsX2xpc3QoY2hhciAqcGF0aCwgdTggdHlwZSwgdTMyIHZhbHVlKTsKKworLyoKKyAqIGRtcmVzdGFnCisgKi8KK3ZvaWQgYWNwaV9kbV9maW5kX3Jlc291cmNlcyh1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqcm9vdCk7CisKK3ZvaWQKK2FjcGlfZG1fY2hlY2tfcmVzb3VyY2VfcmVmZXJlbmNlKHVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpvcCwKKwkJCQkgc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSk7CiAKICNlbmRpZgkJCQkvKiBfX0FDRElTQVNNX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjZGlzcGF0LmggYi9pbmNsdWRlL2FjcGkvYWNkaXNwYXQuaAppbmRleCBjNDFhOTI2Li4yODhmODQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNkaXNwYXQuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNkaXNwYXQuaApAQCAtMTk0LDcgKzE5NCw5IEBACiBhY3BpX2RzX3Jlc3RhcnRfY29udHJvbF9tZXRob2Qoc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSwKIAkJCSAgICAgICB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZXR1cm5fZGVzYyk7CiAKLXZvaWQgYWNwaV9kc190ZXJtaW5hdGVfY29udHJvbF9tZXRob2Qoc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSk7Cit2b2lkCithY3BpX2RzX3Rlcm1pbmF0ZV9jb250cm9sX21ldGhvZCh1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICptZXRob2RfZGVzYywKKwkJCQkgc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSk7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX2RzX2JlZ2luX21ldGhvZF9leGVjdXRpb24oc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm1ldGhvZF9ub2RlLApAQCAtMzAyLDcgKzMwNCw3IEBACiAJCSAgICAgIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICptZXRob2Rfbm9kZSwKIAkJICAgICAgdTggKiBhbWxfc3RhcnQsCiAJCSAgICAgIHUzMiBhbWxfbGVuZ3RoLAotCQkgICAgICBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbywgdTggcGFzc19udW1iZXIpOworCQkgICAgICBzdHJ1Y3QgYWNwaV9ldmFsdWF0ZV9pbmZvICppbmZvLCB1OCBwYXNzX251bWJlcik7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX2RzX29ial9zdGFja19wb3BfYW5kX2RlbGV0ZSh1MzIgcG9wX2NvdW50LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjZXZlbnRzLmggYi9pbmNsdWRlL2FjcGkvYWNldmVudHMuaAppbmRleCBmMjcxN2JlLi4yMzQxNDI4MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjZXZlbnRzLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjZXZlbnRzLmgKQEAgLTkzLDcgKzkzLDcgQEAKICAqLwogdTggYWNwaV9ldl92YWxpZF9ncGVfZXZlbnQoc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvKTsKIAotYWNwaV9zdGF0dXMgYWNwaV9ldl93YWxrX2dwZV9saXN0KEFDUElfR1BFX0NBTExCQUNLIGdwZV93YWxrX2NhbGxiYWNrKTsKK2FjcGlfc3RhdHVzIGFjcGlfZXZfd2Fsa19ncGVfbGlzdChhY3BpX2dwZV9jYWxsYmFjayBncGVfd2Fsa19jYWxsYmFjayk7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX2V2X2RlbGV0ZV9ncGVfaGFuZGxlcnMoc3RydWN0IGFjcGlfZ3BlX3hydXB0X2luZm8gKmdwZV94cnVwdF9pbmZvLApAQCAtMTM4LDcgKzEzOCw3IEBACiBhY3BpX2V2X2FkZHJlc3Nfc3BhY2VfZGlzcGF0Y2godW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVnaW9uX29iaiwKIAkJCSAgICAgICB1MzIgZnVuY3Rpb24sCiAJCQkgICAgICAgYWNwaV9waHlzaWNhbF9hZGRyZXNzIGFkZHJlc3MsCi0JCQkgICAgICAgdTMyIGJpdF93aWR0aCwgdm9pZCAqdmFsdWUpOworCQkJICAgICAgIHUzMiBiaXRfd2lkdGgsIGFjcGlfaW50ZWdlciAqIHZhbHVlKTsKIAogYWNwaV9zdGF0dXMKIGFjcGlfZXZfYXR0YWNoX3JlZ2lvbih1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpoYW5kbGVyX29iaiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY2V4Y2VwLmggYi9pbmNsdWRlL2FjcGkvYWNleGNlcC5oCmluZGV4IGRjNzY4YWEuLjc5N2NhMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9hY2V4Y2VwLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjZXhjZXAuaApAQCAtMTYwLDggKzE2MCw5IEBACiAjZGVmaW5lIEFFX0FNTF9CQURfUkVTT1VSQ0VfVkFMVUUgICAgICAgKGFjcGlfc3RhdHVzKSAoMHgwMDFGIHwgQUVfQ09ERV9BTUwpCiAjZGVmaW5lIEFFX0FNTF9DSVJDVUxBUl9SRUZFUkVOQ0UgICAgICAgKGFjcGlfc3RhdHVzKSAoMHgwMDIwIHwgQUVfQ09ERV9BTUwpCiAjZGVmaW5lIEFFX0FNTF9CQURfUkVTT1VSQ0VfTEVOR1RIICAgICAgKGFjcGlfc3RhdHVzKSAoMHgwMDIxIHwgQUVfQ09ERV9BTUwpCisjZGVmaW5lIEFFX0FNTF9JTExFR0FMX0FERFJFU1MgICAgICAgICAgKGFjcGlfc3RhdHVzKSAoMHgwMDIyIHwgQUVfQ09ERV9BTUwpCiAKLSNkZWZpbmUgQUVfQ09ERV9BTUxfTUFYICAgICAgICAgICAgICAgICAweDAwMjEKKyNkZWZpbmUgQUVfQ09ERV9BTUxfTUFYICAgICAgICAgICAgICAgICAweDAwMjIKIAogLyoKICAqIEludGVybmFsIGV4Y2VwdGlvbnMgdXNlZCBmb3IgY29udHJvbApAQCAtMjc1LDcgKzI3Niw4IEBACiAJIkFFX0FNTF9OT19SRVNPVVJDRV9FTkRfVEFHIiwKIAkiQUVfQU1MX0JBRF9SRVNPVVJDRV9WQUxVRSIsCiAJIkFFX0FNTF9DSVJDVUxBUl9SRUZFUkVOQ0UiLAotCSJBRV9BTUxfQkFEX1JFU09VUkNFX0xFTkdUSCIKKwkiQUVfQU1MX0JBRF9SRVNPVVJDRV9MRU5HVEgiLAorCSJBRV9BTUxfSUxMRUdBTF9BRERSRVNTIgogfTsKIAogY2hhciBjb25zdCAqYWNwaV9nYmxfZXhjZXB0aW9uX25hbWVzX2N0cmxbXSA9IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY2dsb2JhbC5oIGIvaW5jbHVkZS9hY3BpL2FjZ2xvYmFsLmgKaW5kZXggNzM0Y2M3Ny4uMTQ1MzFkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjZ2xvYmFsLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjZ2xvYmFsLmgKQEAgLTEwNyw2ICsxMDcsNyBAQAogICogMykgQWxsb3cgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgbG9jYWxzL2FyZ3MgKGF1dG8taW5pdCB0byBpbnRlZ2VyIDApCiAgKiA0KSBBbGxvdyBBTlkgb2JqZWN0IHR5cGUgdG8gYmUgYSBzb3VyY2Ugb3BlcmFuZCBmb3IgdGhlIFN0b3JlKCkgb3BlcmF0b3IKICAqIDUpIEFsbG93IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyAoaW52YWxpZCB0YXJnZXQgbmFtZSkgaW4gcGFja2FnZSBvYmplY3RzCisgKiA2KSBFbmFibGUgd2FybmluZyBtZXNzYWdlcyBmb3IgYmVoYXZpb3IgdGhhdCBpcyBub3QgQUNQSSBzcGVjIGNvbXBsaWFudAogICovCiBBQ1BJX0VYVEVSTiB1OCBBQ1BJX0lOSVRfR0xPQkFMKGFjcGlfZ2JsX2VuYWJsZV9pbnRlcnByZXRlcl9zbGFjaywgRkFMU0UpOwogCkBAIC0xMTQsNyArMTE1LDcgQEAKICAqIEF1dG9tYXRpY2FsbHkgc2VyaWFsaXplIEFMTCBjb250cm9sIG1ldGhvZHM/IERlZmF1bHQgaXMgRkFMU0UsIG1lYW5pbmcKICAqIHRvIHVzZSB0aGUgU2VyaWFsaXplZC9ub3Rfc2VyaWFsaXplZCBtZXRob2QgZmxhZ3Mgb24gYSBwZXIgbWV0aG9kIGJhc2lzLgogICogT25seSBjaGFuZ2UgdGhpcyBpZiB0aGUgQVNMIGNvZGUgaXMgcG9vcmx5IHdyaXR0ZW4gYW5kIGNhbm5vdCBoYW5kbGUKLSAqIHJlZW50cmFuY3kgZXZlbiB0aG91Z2ggbWV0aG9kcyBhcmUgbWFya2VkICJub3Rfc2VyaWFsaXplZCIuCisgKiByZWVudHJhbmN5IGV2ZW4gdGhvdWdoIG1ldGhvZHMgYXJlIG1hcmtlZCAiTm90U2VyaWFsaXplZCIuCiAgKi8KIEFDUElfRVhURVJOIHU4IEFDUElfSU5JVF9HTE9CQUwoYWNwaV9nYmxfYWxsX21ldGhvZHNfc2VyaWFsaXplZCwgRkFMU0UpOwogCkBAIC0xNDksMTAgKzE1MCwxMCBAQAogQUNQSV9FWFRFUk4gdTMyIGFjcGlfZ2JsX3RhYmxlX2ZsYWdzOwogQUNQSV9FWFRFUk4gdTMyIGFjcGlfZ2JsX3JzZHRfdGFibGVfY291bnQ7CiBBQ1BJX0VYVEVSTiBzdHJ1Y3QgcnNkcF9kZXNjcmlwdG9yICphY3BpX2dibF9SU0RQOwotQUNQSV9FWFRFUk4gWFNEVF9ERVNDUklQVE9SICphY3BpX2dibF9YU0RUOwotQUNQSV9FWFRFUk4gRkFEVF9ERVNDUklQVE9SICphY3BpX2dibF9GQURUOworQUNQSV9FWFRFUk4gc3RydWN0IHhzZHRfZGVzY3JpcHRvciAqYWNwaV9nYmxfWFNEVDsKK0FDUElfRVhURVJOIHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgKmFjcGlfZ2JsX0ZBRFQ7CiBBQ1BJX0VYVEVSTiBzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKmFjcGlfZ2JsX0RTRFQ7Ci1BQ1BJX0VYVEVSTiBGQUNTX0RFU0NSSVBUT1IgKmFjcGlfZ2JsX0ZBQ1M7CitBQ1BJX0VYVEVSTiBzdHJ1Y3QgZmFjc19kZXNjcmlwdG9yICphY3BpX2dibF9GQUNTOwogQUNQSV9FWFRFUk4gc3RydWN0IGFjcGlfY29tbW9uX2ZhY3MgYWNwaV9nYmxfY29tbW9uX2ZBQ1M7CiAvKgogICogU2luY2UgdGhlcmUgbWF5IGJlIG11bHRpcGxlIFNTRFRzIGFuZCBQU0RUcywgYSBzaW5nbGUgcG9pbnRlciBpcyBub3QKQEAgLTE3NywxNSArMTc4LDE1IEBACiAvKgogICogQUNQSSBUYWJsZSBpbmZvIGFycmF5cwogICovCi1leHRlcm4gc3RydWN0IGFjcGlfdGFibGVfbGlzdCBhY3BpX2dibF90YWJsZV9saXN0c1tOVU1fQUNQSV9UQUJMRV9UWVBFU107Ci1leHRlcm4gc3RydWN0IGFjcGlfdGFibGVfc3VwcG9ydCBhY3BpX2dibF90YWJsZV9kYXRhW05VTV9BQ1BJX1RBQkxFX1RZUEVTXTsKK2V4dGVybiBzdHJ1Y3QgYWNwaV90YWJsZV9saXN0IGFjcGlfZ2JsX3RhYmxlX2xpc3RzW0FDUElfVEFCTEVfSURfTUFYICsgMV07CitleHRlcm4gc3RydWN0IGFjcGlfdGFibGVfc3VwcG9ydCBhY3BpX2dibF90YWJsZV9kYXRhW0FDUElfVEFCTEVfSURfTUFYICsgMV07CiAKIC8qCiAgKiBQcmVkZWZpbmVkIG11dGV4IG9iamVjdHMuICBUaGlzIGFycmF5IGNvbnRhaW5zIHRoZQogICogYWN0dWFsIE9TIG11dGV4IGhhbmRsZXMsIGluZGV4ZWQgYnkgdGhlIGxvY2FsIEFDUElfTVVURVhfSEFORExFcy4KICAqIChUaGUgdGFibGUgbWFwcyBsb2NhbCBoYW5kbGVzIHRvIHRoZSByZWFsIE9TIGhhbmRsZXMpCiAgKi8KLUFDUElfRVhURVJOIHN0cnVjdCBhY3BpX211dGV4X2luZm8gYWNwaV9nYmxfbXV0ZXhfaW5mb1tOVU1fTVVURVhdOworQUNQSV9FWFRFUk4gc3RydWN0IGFjcGlfbXV0ZXhfaW5mbyBhY3BpX2dibF9tdXRleF9pbmZvW0FDUElfTlVNX01VVEVYXTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjAzLDYgKzIwNCw3IEBACiAKIC8qIE9iamVjdCBjYWNoZXMgKi8KIAorQUNQSV9FWFRFUk4gYWNwaV9jYWNoZV90ICphY3BpX2dibF9uYW1lc3BhY2VfY2FjaGU7CiBBQ1BJX0VYVEVSTiBhY3BpX2NhY2hlX3QgKmFjcGlfZ2JsX3N0YXRlX2NhY2hlOwogQUNQSV9FWFRFUk4gYWNwaV9jYWNoZV90ICphY3BpX2dibF9wc19ub2RlX2NhY2hlOwogQUNQSV9FWFRFUk4gYWNwaV9jYWNoZV90ICphY3BpX2dibF9wc19ub2RlX2V4dF9jYWNoZTsKQEAgLTI0NCw3ICsyNDYsNiBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX2hpZ2hlc3RfZHN0YXRlX25hbWVzWzRdOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBhY3BpX29wY29kZV9pbmZvIGFjcGlfZ2JsX2FtbF9vcF9pbmZvW0FNTF9OVU1fT1BDT0RFU107CiBleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfcmVnaW9uX3R5cGVzW0FDUElfTlVNX1BSRURFRklORURfUkVHSU9OU107Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfdmFsaWRfb3NpX3N0cmluZ3NbQUNQSV9OVU1fT1NJX1NUUklOR1NdOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yOTEsMTQgKzI5Miw2IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIFBhcnNlciBnbG9iYWxzCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLUFDUElfRVhURVJOIHVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICphY3BpX2dibF9wYXJzZWRfbmFtZXNwYWNlX3Jvb3Q7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKICAqIEhhcmR3YXJlIGdsb2JhbHMKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTMyMSw3ICszMTQsMTEgQEAKIEFDUElfRVhURVJOIHN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvICphY3BpX2dibF9ncGVfeHJ1cHRfbGlzdF9oZWFkOwogQUNQSV9FWFRFUk4gc3RydWN0IGFjcGlfZ3BlX2Jsb2NrX2luZm8KICAgICAqYWNwaV9nYmxfZ3BlX2ZhZHRfYmxvY2tzW0FDUElfTUFYX0dQRV9CTE9DS1NdOworCisvKiBTcGlubG9ja3MgKi8KKwogQUNQSV9FWFRFUk4gYWNwaV9oYW5kbGUgYWNwaV9nYmxfZ3BlX2xvY2s7CitBQ1BJX0VYVEVSTiBhY3BpX2hhbmRsZSBhY3BpX2dibF9oYXJkd2FyZV9sb2NrOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWNsb2NhbC5oIGIvaW5jbHVkZS9hY3BpL2FjbG9jYWwuaAppbmRleCA4MzYxODIwLi4xZWVjYTdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNsb2NhbC5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY2xvY2FsLmgKQEAgLTQ0LDcgKzQ0LDEwIEBACiAjaWZuZGVmIF9fQUNMT0NBTF9IX18KICNkZWZpbmUgX19BQ0xPQ0FMX0hfXwogCisvKiBhY3Bpc3JjOnN0cnVjdF9kZWZzIC0tIGZvciBhY3Bpc3JjIGNvbnZlcnNpb24gKi8KKwogI2RlZmluZSBBQ1BJX1dBSVRfRk9SRVZFUiAgICAgICAgICAgICAgIDB4RkZGRgkvKiB1MTYsIGFzIHBlciBBQ1BJIHNwZWMgKi8KKyNkZWZpbmUgQUNQSV9JTkZJTklURV9DT05DVVJSRU5DWSAgICAgICAweEZGCiAKIHR5cGVkZWYgdm9pZCAqYWNwaV9tdXRleDsKIHR5cGVkZWYgdTMyIGFjcGlfbXV0ZXhfaGFuZGxlOwpAQCAtNjksNTIgKzcyLDU1IEBACiAgKiBQcmVkZWZpbmVkIGhhbmRsZXMgZm9yIHRoZSBtdXRleCBvYmplY3RzIHVzZWQgd2l0aGluIHRoZSBzdWJzeXN0ZW0KICAqIEFsbCBtdXRleCBvYmplY3RzIGFyZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgYWNwaV91dF9tdXRleF9pbml0aWFsaXplLgogICoKLSAqIFRoZSBhY3F1aXJlL3JlbGVhc2Ugb3JkZXJpbmcgcHJvdG9jb2wgaXMgaW1wbGllZCB2aWEgdGhpcyBsaXN0LiAgTXV0ZXhlcworICogVGhlIGFjcXVpcmUvcmVsZWFzZSBvcmRlcmluZyBwcm90b2NvbCBpcyBpbXBsaWVkIHZpYSB0aGlzIGxpc3QuIE11dGV4ZXMKICAqIHdpdGggYSBsb3dlciB2YWx1ZSBtdXN0IGJlIGFjcXVpcmVkIGJlZm9yZSBtdXRleGVzIHdpdGggYSBoaWdoZXIgdmFsdWUuCiAgKgotICogTk9URTogYW55IGNoYW5nZXMgaGVyZSBtdXN0IGJlIHJlZmxlY3RlZCBpbiB0aGUgYWNwaV9nYmxfbXV0ZXhfbmFtZXMgdGFibGUgYWxzbyEKKyAqIE5PVEU6IGFueSBjaGFuZ2VzIGhlcmUgbXVzdCBiZSByZWZsZWN0ZWQgaW4gdGhlIGFjcGlfZ2JsX211dGV4X25hbWVzCisgKiB0YWJsZSBiZWxvdyBhbHNvIQogICovCi0jZGVmaW5lIEFDUElfTVRYX0VYRUNVVEUgICAgICAgICAgICAgICAgMAotI2RlZmluZSBBQ1BJX01UWF9JTlRFUlBSRVRFUiAgICAgICAgICAgIDEKLSNkZWZpbmUgQUNQSV9NVFhfUEFSU0VSICAgICAgICAgICAgICAgICAyCi0jZGVmaW5lIEFDUElfTVRYX0RJU1BBVENIRVIgICAgICAgICAgICAgMwotI2RlZmluZSBBQ1BJX01UWF9UQUJMRVMgICAgICAgICAgICAgICAgIDQKLSNkZWZpbmUgQUNQSV9NVFhfT1BfUkVHSU9OUyAgICAgICAgICAgICA1Ci0jZGVmaW5lIEFDUElfTVRYX05BTUVTUEFDRSAgICAgICAgICAgICAgNgotI2RlZmluZSBBQ1BJX01UWF9FVkVOVFMgICAgICAgICAgICAgICAgIDcKLSNkZWZpbmUgQUNQSV9NVFhfSEFSRFdBUkUgICAgICAgICAgICAgICA4Ci0jZGVmaW5lIEFDUElfTVRYX0NBQ0hFUyAgICAgICAgICAgICAgICAgOQotI2RlZmluZSBBQ1BJX01UWF9NRU1PUlkgICAgICAgICAgICAgICAgIDEwCi0jZGVmaW5lIEFDUElfTVRYX0RFQlVHX0NNRF9DT01QTEVURSAgICAgMTEKLSNkZWZpbmUgQUNQSV9NVFhfREVCVUdfQ01EX1JFQURZICAgICAgICAxMgorI2RlZmluZSBBQ1BJX01UWF9JTlRFUlBSRVRFUiAgICAgICAgICAgIDAJLyogQU1MIEludGVycHJldGVyLCBtYWluIGxvY2sgKi8KKyNkZWZpbmUgQUNQSV9NVFhfQ09OVFJPTF9NRVRIT0QgICAgICAgICAxCS8qIENvbnRyb2wgbWV0aG9kIHRlcm1pbmF0aW9uIFtUQkQ6IG1heSBubyBsb25nZXIgYmUgbmVjZXNzYXJ5XSAqLworI2RlZmluZSBBQ1BJX01UWF9UQUJMRVMgICAgICAgICAgICAgICAgIDIJLyogRGF0YSBmb3IgQUNQSSB0YWJsZXMgKi8KKyNkZWZpbmUgQUNQSV9NVFhfTkFNRVNQQUNFICAgICAgICAgICAgICAzCS8qIEFDUEkgTmFtZXNwYWNlICovCisjZGVmaW5lIEFDUElfTVRYX0VWRU5UUyAgICAgICAgICAgICAgICAgNAkvKiBEYXRhIGZvciBBQ1BJIGV2ZW50cyAqLworI2RlZmluZSBBQ1BJX01UWF9DQUNIRVMgICAgICAgICAgICAgICAgIDUJLyogSW50ZXJuYWwgY2FjaGVzLCBnZW5lcmFsIHB1cnBvc2VzICovCisjZGVmaW5lIEFDUElfTVRYX01FTU9SWSAgICAgICAgICAgICAgICAgNgkvKiBEZWJ1ZyBtZW1vcnkgdHJhY2tpbmcgbGlzdHMgKi8KKyNkZWZpbmUgQUNQSV9NVFhfREVCVUdfQ01EX0NPTVBMRVRFICAgICA3CS8qIEFNTCBkZWJ1Z2dlciAqLworI2RlZmluZSBBQ1BJX01UWF9ERUJVR19DTURfUkVBRFkgICAgICAgIDgJLyogQU1MIGRlYnVnZ2VyICovCiAKLSNkZWZpbmUgTUFYX01VVEVYICAgICAgICAgICAgICAgICAgICAgICAxMgotI2RlZmluZSBOVU1fTVVURVggICAgICAgICAgICAgICAgICAgICAgIE1BWF9NVVRFWCsxCisjZGVmaW5lIEFDUElfTUFYX01VVEVYICAgICAgICAgICAgICAgICAgOAorI2RlZmluZSBBQ1BJX05VTV9NVVRFWCAgICAgICAgICAgICAgICAgIEFDUElfTUFYX01VVEVYKzEKIAogI2lmIGRlZmluZWQoQUNQSV9ERUJVR19PVVRQVVQpIHx8IGRlZmluZWQoQUNQSV9ERUJVR0dFUikKICNpZmRlZiBERUZJTkVfQUNQSV9HTE9CQUxTCiAKLS8qIE5hbWVzIGZvciB0aGUgbXV0ZXhlcyB1c2VkIGluIHRoZSBzdWJzeXN0ZW0gKi8KKy8qIERlYnVnIG5hbWVzIGZvciB0aGUgbXV0ZXhlcyBhYm92ZSAqLwogCi1zdGF0aWMgY2hhciAqYWNwaV9nYmxfbXV0ZXhfbmFtZXNbXSA9IHsKLQkiQUNQSV9NVFhfRXhlY3V0ZSIsCitzdGF0aWMgY2hhciAqYWNwaV9nYmxfbXV0ZXhfbmFtZXNbQUNQSV9OVU1fTVVURVhdID0gewogCSJBQ1BJX01UWF9JbnRlcnByZXRlciIsCi0JIkFDUElfTVRYX1BhcnNlciIsCi0JIkFDUElfTVRYX0Rpc3BhdGNoZXIiLAorCSJBQ1BJX01UWF9NZXRob2QiLAogCSJBQ1BJX01UWF9UYWJsZXMiLAotCSJBQ1BJX01UWF9vcF9yZWdpb25zIiwKIAkiQUNQSV9NVFhfTmFtZXNwYWNlIiwKIAkiQUNQSV9NVFhfRXZlbnRzIiwKLQkiQUNQSV9NVFhfSGFyZHdhcmUiLAogCSJBQ1BJX01UWF9DYWNoZXMiLAogCSJBQ1BJX01UWF9NZW1vcnkiLAotCSJBQ1BJX01UWF9kZWJ1Z19jbWRfY29tcGxldGUiLAotCSJBQ1BJX01UWF9kZWJ1Z19jbWRfcmVhZHkiLAorCSJBQ1BJX01UWF9EZWJ1Z0NtZENvbXBsZXRlIiwKKwkiQUNQSV9NVFhfRGVidWdDbWRSZWFkeSIKIH07CiAKICNlbmRpZgogI2VuZGlmCiAKKy8qCisgKiBQcmVkZWZpbmVkIGhhbmRsZXMgZm9yIHNwaW5sb2NrcyB1c2VkIHdpdGhpbiB0aGUgc3Vic3lzdGVtLgorICogVGhlc2Ugc3BpbmxvY2tzIGFyZSBjcmVhdGVkIGJ5IGFjcGlfdXRfbXV0ZXhfaW5pdGlhbGl6ZQorICovCisjZGVmaW5lIEFDUElfTE9DS19HUEVTICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBBQ1BJX0xPQ0tfSEFSRFdBUkUgICAgICAgICAgICAgIDEKKworI2RlZmluZSBBQ1BJX01BWF9MT0NLICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgQUNQSV9OVU1fTE9DSyAgICAgICAgICAgICAgICAgICBBQ1BJX01BWF9MT0NLKzEKKwogLyogT3duZXIgSURzIGFyZSB1c2VkIHRvIHRyYWNrIG5hbWVzcGFjZSBub2RlcyBmb3Igc2VsZWN0aXZlIGRlbGV0aW9uICovCiAKIHR5cGVkZWYgdTggYWNwaV9vd25lcl9pZDsKQEAgLTEyOSw3ICsxMzUsNyBAQAogc3RydWN0IGFjcGlfbXV0ZXhfaW5mbyB7CiAJYWNwaV9tdXRleCBtdXRleDsKIAl1MzIgdXNlX2NvdW50OwotCXUzMiB0aHJlYWRfaWQ7CisJYWNwaV90aHJlYWRfaWQgdGhyZWFkX2lkOwogfTsKIAogLyogTG9jayBmbGFnIHBhcmFtZXRlciBmb3IgdmFyaW91cyBpbnRlcmZhY2VzICovCkBAIC0xNDQsNiArMTUwLDggQEAKICNkZWZpbmUgQUNQSV9GSUVMRF9EV09SRF9HUkFOVUxBUklUWSAgICA0CiAjZGVmaW5lIEFDUElfRklFTERfUVdPUkRfR1JBTlVMQVJJVFkgICAgOAogCisjZGVmaW5lIEFDUElfRU5UUllfTk9UX0ZPVU5EICAgICAgICAgICAgTlVMTAorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBOYW1lc3BhY2UgdHlwZWRlZnMgYW5kIHN0cnVjdHMKQEAgLTE1OCw0OSArMTY2LDU1IEBACiAJQUNQSV9JTU9ERV9FWEVDVVRFID0gMHgwRQogfSBhY3BpX2ludGVycHJldGVyX21vZGU7CiAKLS8qCi0gKiBUaGUgTm9kZSBkZXNjcmliZXMgYSBuYW1lZCBvYmplY3QgdGhhdCBhcHBlYXJzIGluIHRoZSBBTUwKLSAqIEFuIGFjcGlfbm9kZSBpcyB1c2VkIHRvIHN0b3JlIE5vZGVzLgotICoKLSAqIGRhdGFfdHlwZSBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcm5hbCBkZXNjcmlwdG9ycywgYW5kIE1VU1QKLSAqIGJlIHRoZSBmaXJzdCBieXRlIGluIHRoaXMgc3RydWN0dXJlLgotICovCiB1bmlvbiBhY3BpX25hbWVfdW5pb24gewogCXUzMiBpbnRlZ2VyOwogCWNoYXIgYXNjaWlbNF07CiB9OwogCisvKgorICogVGhlIE5hbWVzcGFjZSBOb2RlIGRlc2NyaWJlcyBhIG5hbWVkIG9iamVjdCB0aGF0IGFwcGVhcnMgaW4gdGhlIEFNTC4KKyAqIGRlc2NyaXB0b3JfdHlwZSBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcm5hbCBkZXNjcmlwdG9ycy4KKyAqCisgKiBUaGUgbm9kZSBpcyBvcHRpbWl6ZWQgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgcGxhdGZvcm1zOgorICogMjAgYnl0ZXMgZm9yIHRoZSAzMi1iaXQgY2FzZSwgMzIgYnl0ZXMgZm9yIHRoZSA2NC1iaXQgY2FzZS4KKyAqCisgKiBOb3RlOiBUaGUgZGVzY3JpcHRvcl90eXBlIGFuZCBUeXBlIGZpZWxkcyBtdXN0IGFwcGVhciBpbiB0aGUgaWRlbnRpY2FsCisgKiBwb3NpdGlvbiBpbiBib3RoIHRoZSBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSBhbmQgdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdAorICogc3RydWN0dXJlcy4KKyAqLwogc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgewotCXU4IGRlc2NyaXB0b3I7CQkvKiBVc2VkIHRvIGRpZmZlcmVudGlhdGUgb2JqZWN0IGRlc2NyaXB0b3IgdHlwZXMgKi8KLQl1OCB0eXBlOwkJLyogVHlwZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lICovCi0JdTE2IHJlZmVyZW5jZV9jb3VudDsJLyogQ3VycmVudCBjb3VudCBvZiByZWZlcmVuY2VzIGFuZCBjaGlsZHJlbiAqLworCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9iamVjdDsJLyogSW50ZXJwcmV0ZXIgb2JqZWN0ICovCisJdTggZGVzY3JpcHRvcl90eXBlOwkvKiBEaWZmZXJlbnRpYXRlIG9iamVjdCBkZXNjcmlwdG9yIHR5cGVzICovCisJdTggdHlwZTsJCS8qIEFDUEkgVHlwZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lICovCisJdTggZmxhZ3M7CQkvKiBNaXNjZWxsYW5lb3VzIGZsYWdzICovCisJYWNwaV9vd25lcl9pZCBvd25lcl9pZDsJLyogTm9kZSBjcmVhdG9yICovCiAJdW5pb24gYWNwaV9uYW1lX3VuaW9uIG5hbWU7CS8qIEFDUEkgTmFtZSwgYWx3YXlzIDQgY2hhcnMgcGVyIEFDUEkgc3BlYyAqLwotCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9iamVjdDsJLyogUG9pbnRlciB0byBhdHRhY2hlZCBBQ1BJIG9iamVjdCAob3B0aW9uYWwpICovCiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKmNoaWxkOwkvKiBGaXJzdCBjaGlsZCAqLwotCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwZWVyOwkvKiBOZXh0IHBlZXIgKi8KLQl1OCBvd25lcl9pZDsJCS8qIFdobyBjcmVhdGVkIHRoaXMgbm9kZSAqLwotCXU4IGZsYWdzOworCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwZWVyOwkvKiBQZWVyLiBQYXJlbnQgaWYgQU5PQkpfRU5EX09GX1BFRVJfTElTVCBzZXQgKi8KIAotCS8qIEZpZWxkcyB1c2VkIGJ5IHRoZSBBU0wgY29tcGlsZXIgb25seSAqLwotCi0jaWZkZWYgQUNQSV9BU0xfQ09NUElMRVIKLQl1MzIgdmFsdWU7CisJLyoKKwkgKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgQVNMIGNvbXBpbGVyIGFuZCBkaXNhc3NlbWJsZXIgb25seQorCSAqLworI2lmZGVmIEFDUElfTEFSR0VfTkFNRVNQQUNFX05PREUKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqb3A7CisJdTMyIHZhbHVlOworCXUzMiBsZW5ndGg7CiAjZW5kaWYKIH07CiAKLSNkZWZpbmUgQUNQSV9FTlRSWV9OT1RfRk9VTkQgICAgICAgICAgICBOVUxMCisvKiBOYW1lc3BhY2UgTm9kZSBmbGFncyAqLwogCi0vKiBOb2RlIGZsYWdzICovCisjZGVmaW5lIEFOT0JKX0VORF9PRl9QRUVSX0xJU1QgICAgICAgICAgMHgwMQkvKiBFbmQtb2YtbGlzdCwgUGVlciBmaWVsZCBwb2ludHMgdG8gcGFyZW50ICovCisjZGVmaW5lIEFOT0JKX0RBVEFfV0lEVEhfMzIgICAgICAgICAgICAgMHgwMgkvKiBQYXJlbnQgdGFibGUgdXNlcyAzMi1iaXQgbWF0aCAqLworI2RlZmluZSBBTk9CSl9NRVRIT0RfQVJHICAgICAgICAgICAgICAgIDB4MDQJLyogTm9kZSBpcyBhIG1ldGhvZCBhcmd1bWVudCAqLworI2RlZmluZSBBTk9CSl9NRVRIT0RfTE9DQUwgICAgICAgICAgICAgIDB4MDgJLyogTm9kZSBpcyBhIG1ldGhvZCBsb2NhbCAqLworI2RlZmluZSBBTk9CSl9TVUJUUkVFX0hBU19JTkkgICAgICAgICAgIDB4MTAJLyogVXNlZCB0byBvcHRpbWl6ZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gKi8KIAotI2RlZmluZSBBTk9CSl9SRVNFUlZFRCAgICAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgQU5PQkpfRU5EX09GX1BFRVJfTElTVCAgICAgICAgICAweDAyCi0jZGVmaW5lIEFOT0JKX0RBVEFfV0lEVEhfMzIgICAgICAgICAgICAgMHgwNAkvKiBQYXJlbnQgdGFibGUgaXMgNjQtYml0cyAqLwotI2RlZmluZSBBTk9CSl9NRVRIT0RfQVJHICAgICAgICAgICAgICAgIDB4MDgKLSNkZWZpbmUgQU5PQkpfTUVUSE9EX0xPQ0FMICAgICAgICAgICAgICAweDEwCi0jZGVmaW5lIEFOT0JKX01FVEhPRF9OT19SRVRWQUwgICAgICAgICAgMHgyMAotI2RlZmluZSBBTk9CSl9NRVRIT0RfU09NRV9OT19SRVRWQUwgICAgIDB4NDAKLSNkZWZpbmUgQU5PQkpfSVNfQklUX09GRlNFVCAgICAgICAgICAgICAweDgwCisjZGVmaW5lIEFOT0JKX0lTX0VYVEVSTkFMICAgICAgICAgICAgICAgMHgwOAkvKiBpX2FTTCBvbmx5OiBUaGlzIG9iamVjdCBjcmVhdGVkIHZpYSBFeHRlcm5hbCgpICovCisjZGVmaW5lIEFOT0JKX01FVEhPRF9OT19SRVRWQUwgICAgICAgICAgMHgxMAkvKiBpX2FTTCBvbmx5OiBNZXRob2QgaGFzIG5vIHJldHVybiB2YWx1ZSAqLworI2RlZmluZSBBTk9CSl9NRVRIT0RfU09NRV9OT19SRVRWQUwgICAgIDB4MjAJLyogaV9hU0wgb25seTogTWV0aG9kIGhhcyBhdCBsZWFzdCBvbmUgcmV0dXJuIHZhbHVlICovCisjZGVmaW5lIEFOT0JKX0lTX0JJVF9PRkZTRVQgICAgICAgICAgICAgMHg0MAkvKiBpX2FTTCBvbmx5OiBSZWZlcmVuY2UgaXMgYSBiaXQgb2Zmc2V0ICovCisjZGVmaW5lIEFOT0JKX0lTX1JFRkVSRU5DRUQgICAgICAgICAgICAgMHg4MAkvKiBpX2FTTCBvbmx5OiBPYmplY3Qgd2FzIHJlZmVyZW5jZWQgKi8KIAogLyoKICAqIEFDUEkgVGFibGUgRGVzY3JpcHRvci4gIE9uZSBwZXIgQUNQSSB0YWJsZQpAQCAtMjEyLDggKzIyNiw4IEBACiAJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpwb2ludGVyOwogCXU4ICphbWxfc3RhcnQ7CiAJdTY0IHBoeXNpY2FsX2FkZHJlc3M7Ci0JdTMyIGFtbF9sZW5ndGg7CiAJYWNwaV9zaXplIGxlbmd0aDsKKwl1MzIgYW1sX2xlbmd0aDsKIAlhY3BpX293bmVyX2lkIG93bmVyX2lkOwogCXU4IHR5cGU7CiAJdTggYWxsb2NhdGlvbjsKQEAgLTI3Niw2ICsyOTAsOSBAQAogCXU4IGZpZWxkX3R5cGU7CiB9OwogCit0eXBlZGVmCithY3BpX3N0YXR1cygqQUNQSV9JTlRFUk5BTF9NRVRIT0QpIChzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICogd2Fsa19zdGF0ZSk7CisKIC8qCiAgKiBCaXRtYXBwZWQgQUNQSSB0eXBlcy4gIFVzZWQgaW50ZXJuYWxseSBvbmx5CiAgKi8KQEAgLTM3Nyw3ICszOTQsNyBAQAogCXN0cnVjdCBhY3BpX2dwZV9ibG9ja19pbmZvICpncGVfYmxvY2s7CiB9OwogCi10eXBlZGVmIGFjcGlfc3RhdHVzKCpBQ1BJX0dQRV9DQUxMQkFDSykgKHN0cnVjdCBhY3BpX2dwZV94cnVwdF9pbmZvICoKK3R5cGVkZWYgYWNwaV9zdGF0dXMoKmFjcGlfZ3BlX2NhbGxiYWNrKSAoc3RydWN0IGFjcGlfZ3BlX3hydXB0X2luZm8gKgogCQkJCQkgZ3BlX3hydXB0X2luZm8sCiAJCQkJCSBzdHJ1Y3QgYWNwaV9ncGVfYmxvY2tfaW5mbyAqCiAJCQkJCSBncGVfYmxvY2spOwpAQCAtNDE2LDEzICs0MzMsMTQgQEAKICNkZWZpbmUgQUNQSV9DT05UUk9MX1BSRURJQ0FURV9GQUxTRSAgICAgICAgIDB4QzMKICNkZWZpbmUgQUNQSV9DT05UUk9MX1BSRURJQ0FURV9UUlVFICAgICAgICAgIDB4QzQKIAotI2RlZmluZSBBQ1BJX1NUQVRFX0NPTU1PTiAgIC8qIFR3byAzMi1iaXQgZmllbGRzIGFuZCBhIHBvaW50ZXIgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV90eXBlOyAgLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7ICAgICAgXAotCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOyAgICAgIFwKLQl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTsgICAgICBcCi0JdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQ7ICAgXAotCXZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXh0OworI2RlZmluZSBBQ1BJX1NUQVRFX0NPTU1PTiBcCisJdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmV4dDsgXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcl90eXBlOyAvKiBUbyBkaWZmZXJlbnRpYXRlIHZhcmlvdXMgaW50ZXJuYWwgb2JqcyAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyBcCisJdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsgXAorCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU7CisKKwkvKiBUaGVyZSBhcmUgMiBieXRlcyBhdmFpbGFibGUgaGVyZSB1bnRpbCB0aGUgbmV4dCBuYXR1cmFsIGFsaWdubWVudCBib3VuZGFyeSAqLwogCiBzdHJ1Y3QgYWNwaV9jb21tb25fc3RhdGUgewogQUNQSV9TVEFURV9DT01NT059OwpAQCAtNDM4LDEyICs0NTYsMTIgQEAKICAqIFBrZyBzdGF0ZSAtIHVzZWQgdG8gdHJhdmVyc2UgbmVzdGVkIHBhY2thZ2Ugc3RydWN0dXJlcwogICovCiBzdHJ1Y3QgYWNwaV9wa2dfc3RhdGUgewotCUFDUElfU1RBVEVfQ09NTU9OIHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnNvdXJjZV9vYmplY3Q7CisJQUNQSV9TVEFURV9DT01NT04gdTE2IGluZGV4OworCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnNvdXJjZV9vYmplY3Q7CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqZGVzdF9vYmplY3Q7CiAJc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZTsKIAl2b2lkICp0aGlzX3RhcmdldF9vYmo7CiAJdTMyIG51bV9wYWNrYWdlczsKLQl1MTYgaW5kZXg7CiB9OwogCiAvKgpAQCAtNDUxLDEwICs0NjksMTAgQEAKICAqIEFsbG93cyBuZXN0aW5nIG9mIHRoZXNlIGNvbnN0cnVjdHMKICAqLwogc3RydWN0IGFjcGlfY29udHJvbF9zdGF0ZSB7Ci0JQUNQSV9TVEFURV9DT01NT04gdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKnByZWRpY2F0ZV9vcDsKKwlBQ1BJX1NUQVRFX0NPTU1PTiB1MTYgb3Bjb2RlOworCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpwcmVkaWNhdGVfb3A7CiAJdTggKmFtbF9wcmVkaWNhdGVfc3RhcnQ7CS8qIFN0YXJ0IG9mIGlmL3doaWxlIHByZWRpY2F0ZSAqLwogCXU4ICpwYWNrYWdlX2VuZDsJLyogRW5kIG9mIGlmL3doaWxlIGJsb2NrICovCi0JdTE2IG9wY29kZTsKIH07CiAKIC8qCkBAIC00NjUsMTEgKzQ4MywxMSBAQAogfTsKIAogc3RydWN0IGFjcGlfcHNjb3BlX3N0YXRlIHsKLQlBQ1BJX1NUQVRFX0NPTU1PTiB1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqb3A7CS8qIEN1cnJlbnQgb3AgYmVpbmcgcGFyc2VkICovCisJQUNQSV9TVEFURV9DT01NT04gdTMyIGFyZ19jb3VudDsJLyogTnVtYmVyIG9mIGZpeGVkIGFyZ3VtZW50cyAqLworCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpvcDsJLyogQ3VycmVudCBvcCBiZWluZyBwYXJzZWQgKi8KIAl1OCAqYXJnX2VuZDsJCS8qIEN1cnJlbnQgYXJndW1lbnQgZW5kICovCiAJdTggKnBrZ19lbmQ7CQkvKiBDdXJyZW50IHBhY2thZ2UgZW5kICovCiAJdTMyIGFyZ19saXN0OwkJLyogTmV4dCBhcmd1bWVudCB0byBwYXJzZSAqLwotCXUzMiBhcmdfY291bnQ7CQkvKiBOdW1iZXIgb2YgZml4ZWQgYXJndW1lbnRzICovCiB9OwogCiAvKgpAQCAtNDc3LDEwICs0OTUsMTAgQEAKICAqIHN0YXRlcyBhcmUgY3JlYXRlZCB3aGVuIHRoZXJlIGFyZSBuZXN0ZWQgY29udHJvbCBtZXRob2RzIGV4ZWN1dGluZy4KICAqLwogc3RydWN0IGFjcGlfdGhyZWFkX3N0YXRlIHsKLQlBQ1BJX1NUQVRFX0NPTU1PTiBzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlX2xpc3Q7CS8qIEhlYWQgb2YgbGlzdCBvZiB3YWxrX3N0YXRlcyBmb3IgdGhpcyB0aHJlYWQgKi8KKwlBQ1BJX1NUQVRFX0NPTU1PTiB1OCBjdXJyZW50X3N5bmNfbGV2ZWw7CS8qIE11dGV4IFN5bmMgKG5lc3RlZCBhY3F1aXJlKSBsZXZlbCAqLworCXN0cnVjdCBhY3BpX3dhbGtfc3RhdGUgKndhbGtfc3RhdGVfbGlzdDsJLyogSGVhZCBvZiBsaXN0IG9mIHdhbGtfc3RhdGVzIGZvciB0aGlzIHRocmVhZCAqLwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKmFjcXVpcmVkX211dGV4X2xpc3Q7CS8qIExpc3Qgb2YgYWxsIGN1cnJlbnRseSBhY3F1aXJlZCBtdXRleGVzICovCi0JdTMyIHRocmVhZF9pZDsJCS8qIFJ1bm5pbmcgdGhyZWFkIElEICovCi0JdTggY3VycmVudF9zeW5jX2xldmVsOwkvKiBNdXRleCBTeW5jIChuZXN0ZWQgYWNxdWlyZSkgbGV2ZWwgKi8KKwlhY3BpX3RocmVhZF9pZCB0aHJlYWRfaWQ7CS8qIFJ1bm5pbmcgdGhyZWFkIElEICovCiB9OwogCiAvKgpAQCAtNDg4LDEwICs1MDYsOSBAQAogICogQU1MIGFyZ3VtZW50cwogICovCiBzdHJ1Y3QgYWNwaV9yZXN1bHRfdmFsdWVzIHsKLQlBQ1BJX1NUQVRFX0NPTU1PTgotCSAgICB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvYmpfZGVzY1tBQ1BJX09CSl9OVU1fT1BFUkFORFNdOwotCXU4IG51bV9yZXN1bHRzOworCUFDUElfU1RBVEVfQ09NTU9OIHU4IG51bV9yZXN1bHRzOwogCXU4IGxhc3RfaW5zZXJ0OworCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjW0FDUElfT0JKX05VTV9PUEVSQU5EU107CiB9OwogCiB0eXBlZGVmCkBAIC01NDYsNyArNTYzLDcgQEAKICNlbmRpZgogCXUzMiBwYXJzZV9hcmdzOwkJLyogR3JhbW1hci9QYXJzZSB0aW1lIGFyZ3VtZW50cyAqLwogCXUzMiBydW50aW1lX2FyZ3M7CS8qIEludGVycHJldCB0aW1lIGFyZ3VtZW50cyAqLwotCXUzMiBmbGFnczsJCS8qIE1pc2MgZmxhZ3MgKi8KKwl1MTYgZmxhZ3M7CQkvKiBNaXNjIGZsYWdzICovCiAJdTggb2JqZWN0X3R5cGU7CQkvKiBDb3JyZXNwb25kaW5nIGludGVybmFsIG9iamVjdCB0eXBlICovCiAJdTggY2xhc3M7CQkvKiBPcGNvZGUgY2xhc3MgKi8KIAl1OCB0eXBlOwkJLyogT3Bjb2RlIHR5cGUgKi8KQEAgLTU2MywyOSArNTgwLDMxIEBACiB9OwogCiAjZGVmaW5lIEFDUElfUEFSU0VfQ09NTU9OIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3R5cGU7ICAgICAgLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7ICAgICAgICAgIC8qIFR5cGUgb2YgT3AgKi9cCi0JdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1sX29wY29kZTsgICAgIC8qIEFNTCBvcGNvZGUgKi9cCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1sX29mZnNldDsgICAgIC8qIE9mZnNldCBvZiBkZWNsYXJhdGlvbiBpbiBBTUwgKi9cCi0JdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgICAgICAgICAgICAgKnBhcmVudDsgICAgICAgIC8qIFBhcmVudCBvcCAqL1wKLQl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAgICAgICAgICAgICAqbmV4dDsgICAgICAgICAgLyogTmV4dCBvcCAqL1wKKwl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAgICAgICAgICpwYXJlbnQ7ICAgICAgICAvKiBQYXJlbnQgb3AgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yX3R5cGU7IC8qIFRvIGRpZmZlcmVudGlhdGUgdmFyaW91cyBpbnRlcm5hbCBvYmpzICovXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7ICAgICAgICAgIC8qIFR5cGUgb2YgT3AgKi9cCisJdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWxfb3Bjb2RlOyAgICAgLyogQU1MIG9wY29kZSAqL1wKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtbF9vZmZzZXQ7ICAgICAvKiBPZmZzZXQgb2YgZGVjbGFyYXRpb24gaW4gQU1MICovXAorCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICAgICAgICAgKm5leHQ7ICAgICAgICAgIC8qIE5leHQgb3AgKi9cCisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgICAgICAqbm9kZTsgICAgICAgICAgLyogRm9yIHVzZSBieSBpbnRlcnByZXRlciAqL1wKKwl1bmlvbiBhY3BpX3BhcnNlX3ZhbHVlICAgICAgICAgIHZhbHVlOyAgICAgICAgICAvKiBWYWx1ZSBvciBhcmdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3Bjb2RlICovXAogCUFDUElfRElTQVNNX09OTFlfTUVNQkVSUyAoXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FzbV9mbGFnczsgICAvKiBVc2VkIGR1cmluZyBBTUwgZGlzYXNzZW1ibHkgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYXNtX29wY29kZTsgIC8qIFN1YnR5cGUgdXNlZCBmb3IgZGlzYXNzZW1ibHkgKi9cCi0JY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1sX29wX25hbWVbMTZdKSAvKiBPcCBuYW1lIChkZWJ1ZyBvbmx5KSAqL1wKLQkJCSAgIC8qIE5PTi1ERUJVRyBtZW1iZXJzIGJlbG93OiAqL1wKLQlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAgICAgICAgICAqbm9kZTsgICAgICAgICAgLyogRm9yIHVzZSBieSBpbnRlcnByZXRlciAqL1wKLQl1bmlvbiBhY3BpX3BhcnNlX3ZhbHVlICAgICAgICAgICAgICB2YWx1ZTsJLyogVmFsdWUgb3IgYXJncyBhc3NvY2lhdGVkIHdpdGggdGhlIG9wY29kZSAqLworCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYXNtX2ZsYWdzOyAgIC8qIFVzZWQgZHVyaW5nIEFNTCBkaXNhc3NlbWJseSAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FzbV9vcGNvZGU7ICAvKiBTdWJ0eXBlIHVzZWQgZm9yIGRpc2Fzc2VtYmx5ICovXAorCWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1sX29wX25hbWVbMTZdKQkvKiBPcCBuYW1lIChkZWJ1ZyBvbmx5KSAqLwogCi0jZGVmaW5lIEFDUElfREFTTV9CVUZGRVIgICAgICAgIDB4MDAKLSNkZWZpbmUgQUNQSV9EQVNNX1JFU09VUkNFICAgICAgMHgwMQotI2RlZmluZSBBQ1BJX0RBU01fU1RSSU5HICAgICAgICAweDAyCi0jZGVmaW5lIEFDUElfREFTTV9VTklDT0RFICAgICAgIDB4MDMKLSNkZWZpbmUgQUNQSV9EQVNNX0VJU0FJRCAgICAgICAgMHgwNAotI2RlZmluZSBBQ1BJX0RBU01fTUFUQ0hPUCAgICAgICAweDA1CisjZGVmaW5lIEFDUElfREFTTV9CVUZGRVIgICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBBQ1BJX0RBU01fUkVTT1VSQ0UgICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQUNQSV9EQVNNX1NUUklORyAgICAgICAgICAgICAgICAweDAyCisjZGVmaW5lIEFDUElfREFTTV9VTklDT0RFICAgICAgICAgICAgICAgMHgwMworI2RlZmluZSBBQ1BJX0RBU01fRUlTQUlEICAgICAgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgQUNQSV9EQVNNX01BVENIT1AgICAgICAgICAgICAgICAweDA1CisjZGVmaW5lIEFDUElfREFTTV9MTk9UX1BSRUZJWCAgICAgICAgICAgMHgwNgorI2RlZmluZSBBQ1BJX0RBU01fTE5PVF9TVUZGSVggICAgICAgICAgIDB4MDcKKyNkZWZpbmUgQUNQSV9EQVNNX0lHTk9SRSAgICAgICAgICAgICAgICAweDA4CiAKIC8qCi0gKiBnZW5lcmljIG9wZXJhdGlvbiAoZm9yIGV4YW1wbGU6ICBJZiwgV2hpbGUsIFN0b3JlKQorICogR2VuZXJpYyBvcGVyYXRpb24gKGZvciBleGFtcGxlOiAgSWYsIFdoaWxlLCBTdG9yZSkKICAqLwogc3RydWN0IGFjcGlfcGFyc2Vfb2JqX2NvbW1vbiB7CiBBQ1BJX1BBUlNFX0NPTU1PTn07CkBAIC02MDEsNyArNjIwLDcgQEAKIAl1MzIgbmFtZTsJCS8qIDQtYnl0ZSBuYW1lIG9yIHplcm8gaWYgbm8gbmFtZSAqLwogfTsKIAotLyogVGhlIHBhcnNlIG5vZGUgaXMgdGhlIGZ1bmRhbWVudGFsIGVsZW1lbnQgb2YgdGhlIHBhcnNlIHRyZWUgKi8KKy8qIFRoaXMgdmVyc2lvbiBpcyB1c2VkIGJ5IHRoZSBpX2FTTCBjb21waWxlciBvbmx5ICovCiAKICNkZWZpbmUgQUNQSV9NQVhfUEFSU0VPUF9OQU1FICAgMjAKIApAQCAtNjQzLDcgKzY2Miw2IEBACiAgKiBtZXRob2QuCiAgKi8KIHN0cnVjdCBhY3BpX3BhcnNlX3N0YXRlIHsKLQl1MzIgYW1sX3NpemU7CiAJdTggKmFtbF9zdGFydDsJCS8qIEZpcnN0IEFNTCBieXRlICovCiAJdTggKmFtbDsJCS8qIE5leHQgQU1MIGJ5dGUgKi8KIAl1OCAqYW1sX2VuZDsJCS8qIChsYXN0ICsgMSkgQU1MIGJ5dGUgKi8KQEAgLTY1MywyMiArNjcxLDIzIEBACiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnN0YXJ0X25vZGU7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzY29wZTsJLyogQ3VycmVudCBzY29wZSAqLwogCXVuaW9uIGFjcGlfcGFyc2Vfb2JqZWN0ICpzdGFydF9zY29wZTsKKwl1MzIgYW1sX3NpemU7CiB9OwogCiAvKiBQYXJzZSBvYmplY3QgZmxhZ3MgKi8KIAotI2RlZmluZSBBQ1BJX1BBUlNFT1BfR0VORVJJQyAgICAgICAgICAgICAgICAgICAgMHgwMQotI2RlZmluZSBBQ1BJX1BBUlNFT1BfTkFNRUQgICAgICAgICAgICAgICAgICAgICAgMHgwMgotI2RlZmluZSBBQ1BJX1BBUlNFT1BfREVGRVJSRUQgICAgICAgICAgICAgICAgICAgMHgwNAotI2RlZmluZSBBQ1BJX1BBUlNFT1BfQllURUxJU1QgICAgICAgICAgICAgICAgICAgMHgwOAotI2RlZmluZSBBQ1BJX1BBUlNFT1BfSU5fQ0FDSEUgICAgICAgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBBQ1BJX1BBUlNFT1BfR0VORVJJQyAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQUNQSV9QQVJTRU9QX05BTUVEICAgICAgICAgICAgICAweDAyCisjZGVmaW5lIEFDUElfUEFSU0VPUF9ERUZFUlJFRCAgICAgICAgICAgMHgwNAorI2RlZmluZSBBQ1BJX1BBUlNFT1BfQllURUxJU1QgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgQUNQSV9QQVJTRU9QX0lOX0NBQ0hFICAgICAgICAgICAweDgwCiAKIC8qIFBhcnNlIG9iamVjdCBkaXNhc21fZmxhZ3MgKi8KIAotI2RlZmluZSBBQ1BJX1BBUlNFT1BfSUdOT1JFICAgICAgICAgICAgICAgICAgICAgMHgwMQotI2RlZmluZSBBQ1BJX1BBUlNFT1BfUEFSQU1MSVNUICAgICAgICAgICAgICAgICAgMHgwMgotI2RlZmluZSBBQ1BJX1BBUlNFT1BfRU1QVFlfVEVSTUxJU1QgICAgICAgICAgICAgMHgwNAotI2RlZmluZSBBQ1BJX1BBUlNFT1BfU1BFQ0lBTCAgICAgICAgICAgICAgICAgICAgMHgxMAorI2RlZmluZSBBQ1BJX1BBUlNFT1BfSUdOT1JFICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQUNQSV9QQVJTRU9QX1BBUkFNTElTVCAgICAgICAgICAweDAyCisjZGVmaW5lIEFDUElfUEFSU0VPUF9FTVBUWV9URVJNTElTVCAgICAgMHgwNAorI2RlZmluZSBBQ1BJX1BBUlNFT1BfU1BFQ0lBTCAgICAgICAgICAgIDB4MTAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtNjc2LDggKzY5NSw4IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSNkZWZpbmUgUENJX1JPT1RfSElEX1NUUklORyAgICAgICAgICJQTlAwQTAzIgotI2RlZmluZSBQQ0lfRVhQUkVTU19ST09UX0hJRF9TVFJJTkcgIlBOUDBBMDgiCisjZGVmaW5lIFBDSV9ST09UX0hJRF9TVFJJTkcgICAgICAgICAgICAgIlBOUDBBMDMiCisjZGVmaW5lIFBDSV9FWFBSRVNTX1JPT1RfSElEX1NUUklORyAgICAgIlBOUDBBMDgiCiAKIHN0cnVjdCBhY3BpX2JpdF9yZWdpc3Rlcl9pbmZvIHsKIAl1OCBwYXJlbnRfcmVnaXN0ZXI7CkBAIC03MTAsMTMgKzcyOSwxNCBAQAogI2RlZmluZSBBQ1BJX0JJVE1BU0tfUENJRVhQX1dBS0VfU1RBVFVTICAgICAgICAgMHg0MDAwCS8qIEFDUEkgMy4wICovCiAjZGVmaW5lIEFDUElfQklUTUFTS19XQUtFX1NUQVRVUyAgICAgICAgICAgICAgICAweDgwMDAKIAotI2RlZmluZSBBQ1BJX0JJVE1BU0tfQUxMX0ZJWEVEX1NUQVRVUyAgICAgICAgICAgKEFDUElfQklUTUFTS19USU1FUl9TVEFUVVMgICAgICAgICAgfCBcCi0JCQkgQUNQSV9CSVRNQVNLX0JVU19NQVNURVJfU1RBVFVTICAgICB8IFwKLQkJCSBBQ1BJX0JJVE1BU0tfR0xPQkFMX0xPQ0tfU1RBVFVTICAgIHwgXAotCQkJIEFDUElfQklUTUFTS19QT1dFUl9CVVRUT05fU1RBVFVTICAgfCBcCi0JCQkgQUNQSV9CSVRNQVNLX1NMRUVQX0JVVFRPTl9TVEFUVVMgICB8IFwKLQkJCSBBQ1BJX0JJVE1BU0tfUlRfQ0xPQ0tfU1RBVFVTICAgICAgIHwgXAotCQkJIEFDUElfQklUTUFTS19XQUtFX1NUQVRVUykKKyNkZWZpbmUgQUNQSV9CSVRNQVNLX0FMTF9GSVhFRF9TVEFUVVMgICAgICAgICAgIChcCisJQUNQSV9CSVRNQVNLX1RJTUVSX1NUQVRVUyAgICAgICAgICB8IFwKKwlBQ1BJX0JJVE1BU0tfQlVTX01BU1RFUl9TVEFUVVMgICAgIHwgXAorCUFDUElfQklUTUFTS19HTE9CQUxfTE9DS19TVEFUVVMgICAgfCBcCisJQUNQSV9CSVRNQVNLX1BPV0VSX0JVVFRPTl9TVEFUVVMgICB8IFwKKwlBQ1BJX0JJVE1BU0tfU0xFRVBfQlVUVE9OX1NUQVRVUyAgIHwgXAorCUFDUElfQklUTUFTS19SVF9DTE9DS19TVEFUVVMgICAgICAgfCBcCisJQUNQSV9CSVRNQVNLX1dBS0VfU1RBVFVTKQogCiAjZGVmaW5lIEFDUElfQklUTUFTS19USU1FUl9FTkFCTEUgICAgICAgICAgICAgICAweDAwMDEKICNkZWZpbmUgQUNQSV9CSVRNQVNLX0dMT0JBTF9MT0NLX0VOQUJMRSAgICAgICAgIDB4MDAyMApAQCAtODIwLDcgKzg0MCw3IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSNkZWZpbmUgQUNQSV9BU0NJSV9aRVJPICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAKKyNkZWZpbmUgQUNQSV9BU0NJSV9aRVJPICAgICAgICAgICAgICAgICAweDMwCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTg0Miw5ICs4NjIsOSBAQAogCXUzMiBvYmplY3RzOwogfTsKIAotI2RlZmluZSBBQ1BJX0RCX1JFRElSRUNUQUJMRV9PVVRQVVQgIDB4MDEKLSNkZWZpbmUgQUNQSV9EQl9DT05TT0xFX09VVFBVVCAgICAgICAweDAyCi0jZGVmaW5lIEFDUElfREJfRFVQTElDQVRFX09VVFBVVCAgICAgMHgwMworI2RlZmluZSBBQ1BJX0RCX1JFRElSRUNUQUJMRV9PVVRQVVQgICAgIDB4MDEKKyNkZWZpbmUgQUNQSV9EQl9DT05TT0xFX09VVFBVVCAgICAgICAgICAweDAyCisjZGVmaW5lIEFDUElfREJfRFVQTElDQVRFX09VVFBVVCAgICAgICAgMHgwMwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC04NTQsMTggKzg3NCwxOCBAQAogCiAvKiBFbnRyeSBmb3IgYSBtZW1vcnkgYWxsb2NhdGlvbiAoZGVidWcgb25seSkgKi8KIAotI2RlZmluZSBBQ1BJX01FTV9NQUxMT0MgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBBQ1BJX01FTV9DQUxMT0MgICAgICAgICAgICAgICAgICAgICAgMQotI2RlZmluZSBBQ1BJX01BWF9NT0RVTEVfTkFNRSAgICAgICAgICAgICAgICAgMTYKKyNkZWZpbmUgQUNQSV9NRU1fTUFMTE9DICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIEFDUElfTUVNX0NBTExPQyAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBBQ1BJX01BWF9NT0RVTEVfTkFNRSAgICAgICAgICAgIDE2CiAKICNkZWZpbmUgQUNQSV9DT01NT05fREVCVUdfTUVNX0hFQURFUiBcCi0Jc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICAgICAgICAgKnByZXZpb3VzOyBcCi0Jc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICAgICAgICAgKm5leHQ7IFwKLQl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTsgXAotCWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVtBQ1BJX01BWF9NT0RVTEVfTkFNRV07IFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY190eXBlOworCXN0cnVjdCBhY3BpX2RlYnVnX21lbV9ibG9jayAgICAgKnByZXZpb3VzOyBcCisJc3RydWN0IGFjcGlfZGVidWdfbWVtX2Jsb2NrICAgICAqbmV4dDsgXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsgXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OyBcCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOyBcCisJY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVbQUNQSV9NQVhfTU9EVUxFX05BTUVdOyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY190eXBlOwogCiBzdHJ1Y3QgYWNwaV9kZWJ1Z19tZW1faGVhZGVyIHsKIEFDUElfQ09NTU9OX0RFQlVHX01FTV9IRUFERVJ9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjbWFjcm9zLmggYi9pbmNsdWRlL2FjcGkvYWNtYWNyb3MuaAppbmRleCBmMmJlMmE4Li4zOGY5YWE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNtYWNyb3MuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNtYWNyb3MuaApAQCAtNTYsNiArNTYsMTAgQEAKICNkZWZpbmUgQUNQSV9DTEVBUl9CSVQodGFyZ2V0LGJpdCkgICAgICAoKHRhcmdldCkgJj0gfihiaXQpKQogI2RlZmluZSBBQ1BJX01JTihhLGIpICAgICAgICAgICAgICAgICAgICgoKGEpPChiKSk/KGEpOihiKSkKIAorLyogU2l6ZSBjYWxjdWxhdGlvbiAqLworCisjZGVmaW5lIEFDUElfQVJSQVlfTEVOR1RIKHgpICAgICAgICAgICAgKHNpemVvZih4KSAvIHNpemVvZigoeClbMF0pKQorCiAjaWYgQUNQSV9NQUNISU5FX1dJRFRIID09IDE2CiAKIC8qCkBAIC05OSw3ICsxMDMsNyBAQAogICogcHJpbnRmKCkgZm9ybWF0IGhlbHBlcnMKICAqLwogCi0vKiBTcGxpdCA2NC1iaXQgaW50ZWdlciBpbnRvIHR3byAzMi1iaXQgdmFsdWVzLiBVc2Ugd2l0aCAlOC44WCU4LjhYICovCisvKiBTcGxpdCA2NC1iaXQgaW50ZWdlciBpbnRvIHR3byAzMi1iaXQgdmFsdWVzLiBVc2Ugd2l0aCAlOC44X3glOC44X3ggKi8KIAogI2RlZmluZSBBQ1BJX0ZPUk1BVF9VSU5UNjQoaSkgICAgICAgICAgIEFDUElfSElEV09SRChpKSxBQ1BJX0xPRFdPUkQoaSkKIApAQCAtMTMwLDcgKzEzNCw2IEBACiAjZGVmaW5lIEFDUElfVE9fUE9JTlRFUihpKSAgICAgICAgICAgICAgQUNQSV9BRERfUFRSICh2b2lkLCh2b2lkICopIE5VTEwsKGFjcGlfbmF0aXZlX3VpbnQpIGkpCiAjZGVmaW5lIEFDUElfVE9fSU5URUdFUihwKSAgICAgICAgICAgICAgQUNQSV9QVFJfRElGRiAocCwodm9pZCAqKSBOVUxMKQogI2RlZmluZSBBQ1BJX09GRlNFVChkLGYpICAgICAgICAgICAgICAgIChhY3BpX3NpemUpIEFDUElfUFRSX0RJRkYgKCYoKChkICopMCktPmYpLCh2b2lkICopIE5VTEwpCi0jZGVmaW5lIEFDUElfRkFEVF9PRkZTRVQoZikgICAgICAgICAgICAgQUNQSV9PRkZTRVQgKEZBRFRfREVTQ1JJUFRPUiwgZikKIAogI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSAxNgogI2RlZmluZSBBQ1BJX1NUT1JFX1BPSU5URVIoZCxzKSAgICAgICAgIEFDUElfTU9WRV8zMl9UT18zMihkLHMpCkBAIC0xNDEsNiArMTQ0LDEyIEBACiAjZGVmaW5lIEFDUElfUFRSX1RPX1BIWVNBRERSKGkpICAgICAgICAgQUNQSV9UT19JTlRFR0VSKGkpCiAjZW5kaWYKIAorI2lmbmRlZiBBQ1BJX01JU0FMSUdOTUVOVF9OT1RfU1VQUE9SVEVECisjZGVmaW5lIEFDUElfQ09NUEFSRV9OQU1FKGEsYikgICAgICAgICAgKCpBQ1BJX0NBU1RfUFRSICh1MzIsKGEpKSA9PSAqQUNQSV9DQVNUX1BUUiAodTMyLChiKSkpCisjZWxzZQorI2RlZmluZSBBQ1BJX0NPTVBBUkVfTkFNRShhLGIpICAgICAgICAgICghQUNQSV9TVFJOQ01QIChBQ1BJX0NBU1RfUFRSIChjaGFyLChhKSksIEFDUElfQ0FTVF9QVFIgKGNoYXIsKGIpKSwgQUNQSV9OQU1FX1NJWkUpKQorI2VuZGlmCisKIC8qCiAgKiBNYWNyb3MgZm9yIG1vdmluZyBkYXRhIGFyb3VuZCB0by9mcm9tIGJ1ZmZlcnMgdGhhdCBhcmUgcG9zc2libHkgdW5hbGlnbmVkLgogICogSWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIHRoZSB0cmFuc2ZlciBvZiB1bmFsaWduZWQgZGF0YSwganVzdCBkbyB0aGUgc3RvcmUuCkBAIC0zNDEsMjkgKzM1MCwzMyBAQAogLyoKICAqIFJvdW5kaW5nIG1hY3JvcyAoUG93ZXIgb2YgdHdvIGJvdW5kYXJpZXMgb25seSkKICAqLwotI2RlZmluZSBBQ1BJX1JPVU5EX0RPV04odmFsdWUsYm91bmRhcnkpICAgICAgKCgoYWNwaV9uYXRpdmVfdWludCkodmFsdWUpKSAmIFwKKyNkZWZpbmUgQUNQSV9ST1VORF9ET1dOKHZhbHVlLGJvdW5kYXJ5KSAgICAgKCgoYWNwaV9uYXRpdmVfdWludCkodmFsdWUpKSAmIFwKIAkJCQkJCQkJCQkJCSh+KCgoYWNwaV9uYXRpdmVfdWludCkgYm91bmRhcnkpLTEpKSkKIAotI2RlZmluZSBBQ1BJX1JPVU5EX1VQKHZhbHVlLGJvdW5kYXJ5KSAgICAgICAgKCgoKGFjcGlfbmF0aXZlX3VpbnQpKHZhbHVlKSkgKyBcCisjZGVmaW5lIEFDUElfUk9VTkRfVVAodmFsdWUsYm91bmRhcnkpICAgICAgICgoKChhY3BpX25hdGl2ZV91aW50KSh2YWx1ZSkpICsgXAogCQkJCQkJCQkJCQkJKCgoYWNwaV9uYXRpdmVfdWludCkgYm91bmRhcnkpLTEpKSAmIFwKIAkJCQkJCQkJCQkJCSh+KCgoYWNwaV9uYXRpdmVfdWludCkgYm91bmRhcnkpLTEpKSkKIAotI2RlZmluZSBBQ1BJX1JPVU5EX0RPV05fVE9fMzJfQklUUyhhKSAgICAgICAgQUNQSV9ST1VORF9ET1dOKGEsNCkKLSNkZWZpbmUgQUNQSV9ST1VORF9ET1dOX1RPXzY0X0JJVFMoYSkgICAgICAgIEFDUElfUk9VTkRfRE9XTihhLDgpCi0jZGVmaW5lIEFDUElfUk9VTkRfRE9XTl9UT19OQVRJVkVfV09SRChhKSAgICBBQ1BJX1JPVU5EX0RPV04oYSxBTElHTkVEX0FERFJFU1NfQk9VTkRBUlkpCisvKiBOb3RlOiBzaXplb2YoYWNwaV9uYXRpdmVfdWludCkgZXZhbHVhdGVzIHRvIGVpdGhlciAyLCA0LCBvciA4ICovCiAKLSNkZWZpbmUgQUNQSV9ST1VORF9VUF90b18zMl9iSVRTKGEpICAgICAgICAgIEFDUElfUk9VTkRfVVAoYSw0KQotI2RlZmluZSBBQ1BJX1JPVU5EX1VQX3RvXzY0X2JJVFMoYSkgICAgICAgICAgQUNQSV9ST1VORF9VUChhLDgpCi0jZGVmaW5lIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQoYSkgICAgICBBQ1BJX1JPVU5EX1VQKGEsQUxJR05FRF9BRERSRVNTX0JPVU5EQVJZKQorI2RlZmluZSBBQ1BJX1JPVU5EX0RPV05fVE9fMzJCSVQoYSkgICAgICAgICBBQ1BJX1JPVU5EX0RPV04oYSw0KQorI2RlZmluZSBBQ1BJX1JPVU5EX0RPV05fVE9fNjRCSVQoYSkgICAgICAgICBBQ1BJX1JPVU5EX0RPV04oYSw4KQorI2RlZmluZSBBQ1BJX1JPVU5EX0RPV05fVE9fTkFUSVZFX1dPUkQoYSkgICBBQ1BJX1JPVU5EX0RPV04oYSxzaXplb2YoYWNwaV9uYXRpdmVfdWludCkpCiAKLSNkZWZpbmUgQUNQSV9ST1VORF9CSVRTX1VQX1RPX0JZVEVTKGEpICAgICAgIEFDUElfRElWXzgoKGEpICsgNykKLSNkZWZpbmUgQUNQSV9ST1VORF9CSVRTX0RPV05fVE9fQllURVMoYSkgICAgIEFDUElfRElWXzgoKGEpKQorI2RlZmluZSBBQ1BJX1JPVU5EX1VQX1RPXzMyQklUKGEpICAgICAgICAgICBBQ1BJX1JPVU5EX1VQKGEsNCkKKyNkZWZpbmUgQUNQSV9ST1VORF9VUF9UT182NEJJVChhKSAgICAgICAgICAgQUNQSV9ST1VORF9VUChhLDgpCisjZGVmaW5lIEFDUElfUk9VTkRfVVBfVE9fTkFUSVZFX1dPUkQoYSkgICAgIEFDUElfUk9VTkRfVVAoYSxzaXplb2YoYWNwaV9uYXRpdmVfdWludCkpCiAKLSNkZWZpbmUgQUNQSV9ST1VORF9VUF9UT18xSyhhKSAgICAgICAgICAgICAgICgoKGEpICsgMTAyMykgPj4gMTApCisjZGVmaW5lIEFDUElfUk9VTkRfQklUU19VUF9UT19CWVRFUyhhKSAgICAgIEFDUElfRElWXzgoKGEpICsgNykKKyNkZWZpbmUgQUNQSV9ST1VORF9CSVRTX0RPV05fVE9fQllURVMoYSkgICAgQUNQSV9ESVZfOCgoYSkpCisKKyNkZWZpbmUgQUNQSV9ST1VORF9VUF9UT18xSyhhKSAgICAgICAgICAgICAgKCgoYSkgKyAxMDIzKSA+PiAxMCkKIAogLyogR2VuZXJpYyAobm9uLXBvd2VyLW9mLXR3bykgcm91bmRpbmcgKi8KIAotI2RlZmluZSBBQ1BJX1JPVU5EX1VQX1RPKHZhbHVlLGJvdW5kYXJ5KSAgICAgKCgodmFsdWUpICsgKChib3VuZGFyeSktMSkpIC8gKGJvdW5kYXJ5KSkKKyNkZWZpbmUgQUNQSV9ST1VORF9VUF9UTyh2YWx1ZSxib3VuZGFyeSkgICAgKCgodmFsdWUpICsgKChib3VuZGFyeSktMSkpIC8gKGJvdW5kYXJ5KSkKKworI2RlZmluZSBBQ1BJX0lTX01JU0FMSUdORUQodmFsdWUpICAgICAgICAgICAoKChhY3BpX25hdGl2ZV91aW50KXZhbHVlKSAmIChzaXplb2YoYWNwaV9uYXRpdmVfdWludCktMSkpCiAKIC8qCiAgKiBCaXRtYXNrIGNyZWF0aW9uCkBAIC0zNzEsMTAgKzM4NCwxMCBAQAogICogTUFTS19CSVRTX0FCT1ZFIGNyZWF0ZXMgYSBtYXNrIHN0YXJ0aW5nIEFUIHRoZSBwb3NpdGlvbiBhbmQgYWJvdmUKICAqIE1BU0tfQklUU19CRUxPVyBjcmVhdGVzIGEgbWFzayBzdGFydGluZyBvbmUgYml0IEJFTE9XIHRoZSBwb3NpdGlvbgogICovCi0jZGVmaW5lIEFDUElfTUFTS19CSVRTX0FCT1ZFKHBvc2l0aW9uKSAgICAgICAofigoQUNQSV9JTlRFR0VSX01BWCkgPDwgKCh1MzIpIChwb3NpdGlvbikpKSkKLSNkZWZpbmUgQUNQSV9NQVNLX0JJVFNfQkVMT1cocG9zaXRpb24pICAgICAgICgoQUNQSV9JTlRFR0VSX01BWCkgPDwgKCh1MzIpIChwb3NpdGlvbikpKQorI2RlZmluZSBBQ1BJX01BU0tfQklUU19BQk9WRShwb3NpdGlvbikgICAgICAofigoQUNQSV9JTlRFR0VSX01BWCkgPDwgKCh1MzIpIChwb3NpdGlvbikpKSkKKyNkZWZpbmUgQUNQSV9NQVNLX0JJVFNfQkVMT1cocG9zaXRpb24pICAgICAgKChBQ1BJX0lOVEVHRVJfTUFYKSA8PCAoKHUzMikgKHBvc2l0aW9uKSkpCiAKLSNkZWZpbmUgQUNQSV9JU19PQ1RBTF9ESUdJVChkKSAgICAgICAgICAgICAgICgoKGNoYXIpKGQpID49ICcwJykgJiYgKChjaGFyKShkKSA8PSAnNycpKQorI2RlZmluZSBBQ1BJX0lTX09DVEFMX0RJR0lUKGQpICAgICAgICAgICAgICAoKChjaGFyKShkKSA+PSAnMCcpICYmICgoY2hhcikoZCkgPD0gJzcnKSkKIAogLyogQml0ZmllbGRzIHdpdGhpbiBBQ1BJIHJlZ2lzdGVycyAqLwogCkBAIC0zOTYsOCArNDA5LDggQEAKICAqCiAgKiBUaGUgIkRlc2NyaXB0b3IiIGZpZWxkIGlzIHRoZSBmaXJzdCBmaWVsZCBpbiBib3RoIHN0cnVjdHVyZXMuCiAgKi8KLSNkZWZpbmUgQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKGQpICAgICAoKCh1bmlvbiBhY3BpX2Rlc2NyaXB0b3IgKikodm9pZCAqKShkKSktPmRlc2NyaXB0b3JfaWQpCi0jZGVmaW5lIEFDUElfU0VUX0RFU0NSSVBUT1JfVFlQRShkLHQpICAgKCgodW5pb24gYWNwaV9kZXNjcmlwdG9yICopKHZvaWQgKikoZCkpLT5kZXNjcmlwdG9yX2lkID0gdCkKKyNkZWZpbmUgQUNQSV9HRVRfREVTQ1JJUFRPUl9UWVBFKGQpICAgICAoKCh1bmlvbiBhY3BpX2Rlc2NyaXB0b3IgKikodm9pZCAqKShkKSktPmNvbW1vbi5kZXNjcmlwdG9yX3R5cGUpCisjZGVmaW5lIEFDUElfU0VUX0RFU0NSSVBUT1JfVFlQRShkLHQpICAgKCgodW5pb24gYWNwaV9kZXNjcmlwdG9yICopKHZvaWQgKikoZCkpLT5jb21tb24uZGVzY3JpcHRvcl90eXBlID0gdCkKIAogLyogTWFjcm8gdG8gdGVzdCB0aGUgb2JqZWN0IHR5cGUgKi8KIApAQCAtNDg2LDcgKzQ5OSw2IEBACiAjZGVmaW5lIEFDUElfRVJST1IocGxpc3QpCiAjZGVmaW5lIEFDUElfRVJST1JfTkFNRVNQQUNFKHMsZSkKICNkZWZpbmUgQUNQSV9FUlJPUl9NRVRIT0QocyxuLHAsZSkKLQogI2VuZGlmCiAKIC8qCkBAIC01MTQsMTIgKzUyNiwxMiBAQAogI2RlZmluZSBBQ1BJX0dFVF9GVU5DVElPTl9OQU1FICAgICAgICAgIF9hY3BpX2Z1bmN0aW9uX25hbWUKIC8qCiAgKiBUaGUgTmFtZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBwcm9jZWR1cmUgbmFtZSBhcyBhIHF1b3RlZCBzdHJpbmcuCi0gKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGEgbG9jYWwgc3RyaW5nICgibXlfZnVuY3Rpb25fbmFtZSIpIHNvIHRoYXQgaXQgY2FuCisgKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGEgbG9jYWwgc3RyaW5nICgiTXlGdW5jdGlvbk5hbWUiKSBzbyB0aGF0IGl0IGNhbgogICogYmUgYWxzbyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiBleGl0IG1hY3JvcyBiZWxvdy4KICAqIE5vdGU6IChjb25zdCBjaGFyKSBpcyB1c2VkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVidWcgaW50ZXJmYWNlcwogICogYW5kIG1hY3JvcyBzdWNoIGFzIF9fRlVOQ1RJT05fXy4KICAqLwotI2RlZmluZSBBQ1BJX0ZVTkNUSU9OX05BTUUobmFtZSkgICAgICAgIGNvbnN0IGNoYXIgKl9hY3BpX2Z1bmN0aW9uX25hbWUgPSBuYW1lOworI2RlZmluZSBBQ1BJX0ZVTkNUSU9OX05BTUUobmFtZSkgICAgICAgIGNvbnN0IGNoYXIgKl9hY3BpX2Z1bmN0aW9uX25hbWUgPSAjbmFtZTsKIAogI2Vsc2UKIC8qIENvbXBpbGVyIHN1cHBvcnRzIF9fRlVOQ1RJT05fXyAob3IgZXF1aXZhbGVudCkgLS0gSWdub3JlIHRoaXMgbWFjcm8gKi8KQEAgLTUyOCwxMyArNTQwLDEzIEBACiAjZW5kaWYKIAogI2RlZmluZSBBQ1BJX0ZVTkNUSU9OX1RSQUNFKGEpICAgICAgICAgIEFDUElfRlVOQ1RJT05fTkFNRShhKSBcCi0JCQkJCQkJCQkgIGFjcGlfdXRfdHJhY2UoQUNQSV9ERUJVR19QQVJBTUVURVJTKQorCQkJICBhY3BpX3V0X3RyYWNlKEFDUElfREVCVUdfUEFSQU1FVEVSUykKICNkZWZpbmUgQUNQSV9GVU5DVElPTl9UUkFDRV9QVFIoYSxiKSAgICBBQ1BJX0ZVTkNUSU9OX05BTUUoYSkgXAotCQkJCQkJCQkJCQlhY3BpX3V0X3RyYWNlX3B0cihBQ1BJX0RFQlVHX1BBUkFNRVRFUlMsKHZvaWQgKiliKQorCQkJCQkgICBhY3BpX3V0X3RyYWNlX3B0cihBQ1BJX0RFQlVHX1BBUkFNRVRFUlMsKHZvaWQgKiliKQogI2RlZmluZSBBQ1BJX0ZVTkNUSU9OX1RSQUNFX1UzMihhLGIpICAgIEFDUElfRlVOQ1RJT05fTkFNRShhKSBcCi0JCQkJCQkJCQkJCWFjcGlfdXRfdHJhY2VfdTMyKEFDUElfREVCVUdfUEFSQU1FVEVSUywodTMyKWIpCisJCQkJCQkJIGFjcGlfdXRfdHJhY2VfdTMyKEFDUElfREVCVUdfUEFSQU1FVEVSUywodTMyKWIpCiAjZGVmaW5lIEFDUElfRlVOQ1RJT05fVFJBQ0VfU1RSKGEsYikgICAgQUNQSV9GVU5DVElPTl9OQU1FKGEpIFwKLQkJCQkJCQkJCQkJYWNwaV91dF90cmFjZV9zdHIoQUNQSV9ERUJVR19QQVJBTUVURVJTLChjaGFyICopYikKKwkJCQkJCQkJCSAgYWNwaV91dF90cmFjZV9zdHIoQUNQSV9ERUJVR19QQVJBTUVURVJTLChjaGFyICopYikKIAogI2RlZmluZSBBQ1BJX0ZVTkNUSU9OX0VOVFJZKCkgICAgICAgICAgIGFjcGlfdXRfdHJhY2tfc3RhY2tfcHRyKCkKIApAQCAtNTQzLDcgKzU1NSw3IEBACiAgKiBXQVJOSU5HOiBUaGVzZSBtYWNyb3MgaW5jbHVkZSBhIHJldHVybiBzdGF0ZW1lbnQuICBUaGlzIGlzIHVzdWFsbHkgY29uc2lkZXJlZAogICogYmFkIGZvcm0sIGJ1dCBoYXZpbmcgYSBzZXBhcmF0ZSBleGl0IG1hY3JvIGlzIHZlcnkgdWdseSBhbmQgZGlmZmljdWx0IHRvIG1haW50YWluLgogICogT25lIG9mIHRoZSBGVU5DVElPTl9UUkFDRSBtYWNyb3MgYWJvdmUgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlc2UgbWFjcm9zCi0gKiBzbyB0aGF0ICJfYWNwaV9mdW5jdGlvbl9uYW1lIiBpcyBkZWZpbmVkLgorICogc28gdGhhdCAiX0FjcGlGdW5jdGlvbk5hbWUiIGlzIGRlZmluZWQuCiAgKgogICogTm90ZTogdGhlIERPX1dISUxFMCBtYWNybyBpcyB1c2VkIHRvIHByZXZlbnQgc29tZSBjb21waWxlcnMgZnJvbSBjb21wbGFpbmluZwogICogYWJvdXQgdGhlc2UgY29uc3RydWN0cy4KQEAgLTY1NCw2ICs2NjYsNyBAQAogI2RlZmluZSBBQ1BJX0RVTVBfU1RBQ0tfRU5UUlkoYSkKICNkZWZpbmUgQUNQSV9EVU1QX09QRVJBTkRTKGEsYixjLGQsZSkKICNkZWZpbmUgQUNQSV9EVU1QX0VOVFJZKGEsYikKKyNkZWZpbmUgQUNQSV9EVU1QX1RBQkxFUyhhLGIpCiAjZGVmaW5lIEFDUElfRFVNUF9QQVRITkFNRShhLGIsYyxkKQogI2RlZmluZSBBQ1BJX0RVTVBfUkVTT1VSQ0VfTElTVChhKQogI2RlZmluZSBBQ1BJX0RVTVBfQlVGRkVSKGEsYikKQEAgLTcwOSwxOSArNzIyLDE5IEBACiAKIC8qIE1lbW9yeSBhbGxvY2F0aW9uICovCiAKLSNkZWZpbmUgQUNQSV9NRU1fQUxMT0NBVEUoYSkgICAgICAgICAgICBhY3BpX3V0X2FsbG9jYXRlKChhY3BpX3NpemUpKGEpLF9DT01QT05FTlQsX2FjcGlfbW9kdWxlX25hbWUsX19MSU5FX18pCi0jZGVmaW5lIEFDUElfTUVNX0NBTExPQ0FURShhKSAgICAgICAgICAgYWNwaV91dF9jYWxsb2NhdGUoKGFjcGlfc2l6ZSkoYSksIF9DT01QT05FTlQsX2FjcGlfbW9kdWxlX25hbWUsX19MSU5FX18pCi0jZGVmaW5lIEFDUElfTUVNX0ZSRUUoYSkgICAgICAgICAgICAgICAgYWNwaV9vc19mcmVlKGEpCisjZGVmaW5lIEFDUElfQUxMT0NBVEUoYSkgICAgICAgICAgICBhY3BpX3V0X2FsbG9jYXRlKChhY3BpX3NpemUpKGEpLF9DT01QT05FTlQsX2FjcGlfbW9kdWxlX25hbWUsX19MSU5FX18pCisjZGVmaW5lIEFDUElfQUxMT0NBVEVfWkVST0VEKGEpICAgICBhY3BpX3V0X2FsbG9jYXRlX3plcm9lZCgoYWNwaV9zaXplKShhKSwgX0NPTVBPTkVOVCxfYWNwaV9tb2R1bGVfbmFtZSxfX0xJTkVfXykKKyNkZWZpbmUgQUNQSV9GUkVFKGEpICAgICAgICAgICAgICAgIGFjcGlfb3NfZnJlZShhKQogI2RlZmluZSBBQ1BJX01FTV9UUkFDS0lORyhhKQogCiAjZWxzZQogCiAvKiBNZW1vcnkgYWxsb2NhdGlvbiAqLwogCi0jZGVmaW5lIEFDUElfTUVNX0FMTE9DQVRFKGEpICAgICAgICAgICAgYWNwaV91dF9hbGxvY2F0ZV9hbmRfdHJhY2soKGFjcGlfc2l6ZSkoYSksX0NPTVBPTkVOVCxfYWNwaV9tb2R1bGVfbmFtZSxfX0xJTkVfXykKLSNkZWZpbmUgQUNQSV9NRU1fQ0FMTE9DQVRFKGEpICAgICAgICAgICBhY3BpX3V0X2NhbGxvY2F0ZV9hbmRfdHJhY2soKGFjcGlfc2l6ZSkoYSksIF9DT01QT05FTlQsX2FjcGlfbW9kdWxlX25hbWUsX19MSU5FX18pCi0jZGVmaW5lIEFDUElfTUVNX0ZSRUUoYSkgICAgICAgICAgICAgICAgYWNwaV91dF9mcmVlX2FuZF90cmFjayhhLF9DT01QT05FTlQsX2FjcGlfbW9kdWxlX25hbWUsX19MSU5FX18pCi0jZGVmaW5lIEFDUElfTUVNX1RSQUNLSU5HKGEpICAgICAgICAgICAgYQorI2RlZmluZSBBQ1BJX0FMTE9DQVRFKGEpICAgICAgICAgICAgYWNwaV91dF9hbGxvY2F0ZV9hbmRfdHJhY2soKGFjcGlfc2l6ZSkoYSksX0NPTVBPTkVOVCxfYWNwaV9tb2R1bGVfbmFtZSxfX0xJTkVfXykKKyNkZWZpbmUgQUNQSV9BTExPQ0FURV9aRVJPRUQoYSkgICAgIGFjcGlfdXRfYWxsb2NhdGVfemVyb2VkX2FuZF90cmFjaygoYWNwaV9zaXplKShhKSwgX0NPTVBPTkVOVCxfYWNwaV9tb2R1bGVfbmFtZSxfX0xJTkVfXykKKyNkZWZpbmUgQUNQSV9GUkVFKGEpICAgICAgICAgICAgICAgIGFjcGlfdXRfZnJlZV9hbmRfdHJhY2soYSxfQ09NUE9ORU5ULF9hY3BpX21vZHVsZV9uYW1lLF9fTElORV9fKQorI2RlZmluZSBBQ1BJX01FTV9UUkFDS0lORyhhKSAgICAgICAgYQogCiAjZW5kaWYJCQkJLyogQUNQSV9EQkdfVFJBQ0tfQUxMT0NBVElPTlMgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjbmFtZXNwLmggYi9pbmNsdWRlL2FjcGkvYWNuYW1lc3AuaAppbmRleCBiNjY3YTgwLi44M2I1MmY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNuYW1lc3AuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNuYW1lc3AuaApAQCAtNjMsNiArNjMsOCBAQAogI2RlZmluZSBBQ1BJX05TX0RPTlRfT1BFTl9TQ09QRSAgICAgMHgwMgogI2RlZmluZSBBQ1BJX05TX05PX1BFRVJfU0VBUkNIICAgICAgMHgwNAogI2RlZmluZSBBQ1BJX05TX0VSUk9SX0lGX0ZPVU5EICAgICAgMHgwOAorI2RlZmluZSBBQ1BJX05TX1BSRUZJWF9JU19TQ09QRSAgICAgMHgxMAorI2RlZmluZSBBQ1BJX05TX0VYVEVSTkFMICAgICAgICAgICAgMHgyMAogCiAjZGVmaW5lIEFDUElfTlNfV0FMS19VTkxPQ0sgICAgICAgICBUUlVFCiAjZGVmaW5lIEFDUElfTlNfV0FMS19OT19VTkxPQ0sgICAgICBGQUxTRQpAQCAtMTcxLDE5ICsxNzMsMTcgQEAKIC8qCiAgKiBuc2V2YWwgLSBOYW1lc3BhY2UgZXZhbHVhdGlvbiBmdW5jdGlvbnMKICAqLwotYWNwaV9zdGF0dXMgYWNwaV9uc19ldmFsdWF0ZV9ieV9oYW5kbGUoc3RydWN0IGFjcGlfcGFyYW1ldGVyX2luZm8gKmluZm8pOwotCi1hY3BpX3N0YXR1cwotYWNwaV9uc19ldmFsdWF0ZV9ieV9uYW1lKGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbyk7Ci0KLWFjcGlfc3RhdHVzCi1hY3BpX25zX2V2YWx1YXRlX3JlbGF0aXZlKGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyAqaW5mbyk7CithY3BpX3N0YXR1cyBhY3BpX25zX2V2YWx1YXRlKHN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmluZm8pOwogCiAvKgogICogbnNuYW1lcyAtIE5hbWUgYW5kIFNjb3BlIG1hbmlwdWxhdGlvbgogICovCiB1MzIgYWNwaV9uc19vcGVuc19zY29wZShhY3BpX29iamVjdF90eXBlIHR5cGUpOwogCit2b2lkCithY3BpX25zX2J1aWxkX2V4dGVybmFsX3BhdGgoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGUsCisJCQkgICAgYWNwaV9zaXplIHNpemUsIGNoYXIgKm5hbWVfYnVmZmVyKTsKKwogY2hhciAqYWNwaV9uc19nZXRfZXh0ZXJuYWxfcGF0aG5hbWUoc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGUpOwogCiBjaGFyICphY3BpX25zX25hbWVfb2ZfY3VycmVudF9zY29wZShzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICp3YWxrX3N0YXRlKTsKQEAgLTE5Niw5ICsxOTYsOSBAQAogYWNwaV9uc19wYXR0ZXJuX21hdGNoKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpvYmpfbm9kZSwgY2hhciAqc2VhcmNoX2Zvcik7CiAKIGFjcGlfc3RhdHVzCi1hY3BpX25zX2dldF9ub2RlX2J5X3BhdGgoY2hhciAqZXh0ZXJuYWxfcGF0aG5hbWUsCi0JCQkgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKmluX3ByZWZpeF9ub2RlLAotCQkJIHUzMiBmbGFncywgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKipvdXRfbm9kZSk7CithY3BpX25zX2dldF9ub2RlKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpwcmVmaXhfbm9kZSwKKwkJIGNoYXIgKmV4dGVybmFsX3BhdGhuYW1lLAorCQkgdTMyIGZsYWdzLCBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKm91dF9ub2RlKTsKIAogYWNwaV9zaXplIGFjcGlfbnNfZ2V0X3BhdGhuYW1lX2xlbmd0aChzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSk7CiAKQEAgLTI0MSwxMCArMjQxLDEwIEBACiAJCQkgdTMyIGZsYWdzLCBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKnJldF9ub2RlKTsKIAogYWNwaV9zdGF0dXMKLWFjcGlfbnNfc2VhcmNoX25vZGUodTMyIGVudHJ5X25hbWUsCi0JCSAgICBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKLQkJICAgIGFjcGlfb2JqZWN0X3R5cGUgdHlwZSwKLQkJICAgIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICoqcmV0X25vZGUpOworYWNwaV9uc19zZWFyY2hfb25lX3Njb3BlKHUzMiBlbnRyeV9uYW1lLAorCQkJIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlLAorCQkJIGFjcGlfb2JqZWN0X3R5cGUgdHlwZSwKKwkJCSBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqKnJldF9ub2RlKTsKIAogdm9pZAogYWNwaV9uc19pbnN0YWxsX25vZGUoc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqd2Fsa19zdGF0ZSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY29iamVjdC5oIGIvaW5jbHVkZS9hY3BpL2Fjb2JqZWN0LmgKaW5kZXggZDEzMGNmZS4uMTc0N2Q5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2Fjb2JqZWN0LmgKKysrIGIvaW5jbHVkZS9hY3BpL2Fjb2JqZWN0LmgKQEAgLTEsNyArMSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBOYW1lOiBhY29iamVjdC5oIC0gRGVmaW5pdGlvbiBvZiB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgIChJbnRlcm5hbCBvYmplY3Qgb25seSkKKyAqIE5hbWU6IGFjb2JqZWN0LmggLSBEZWZpbml0aW9uIG9mIHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgIChJbnRlcm5hbCBvYmplY3Qgb25seSkKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTQ1LDEwICs0NSwxMiBAQAogI2lmbmRlZiBfQUNPQkpFQ1RfSAogI2RlZmluZSBfQUNPQkpFQ1RfSAogCisvKiBhY3Bpc3JjOnN0cnVjdF9kZWZzIC0tIGZvciBhY3Bpc3JjIGNvbnZlcnNpb24gKi8KKwogLyoKLSAqIFRoZSB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgIGlzIHVzZWQgdG8gcGFzcyBBTUwgb3BlcmFuZHMgZnJvbSB0aGUgZGlzcGF0Y2hlcgorICogVGhlIHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgaXMgdXNlZCB0byBwYXNzIEFNTCBvcGVyYW5kcyBmcm9tIHRoZSBkaXNwYXRjaGVyCiAgKiB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCB0byBrZWVwIHRyYWNrIG9mIHRoZSB2YXJpb3VzIGhhbmRsZXJzIHN1Y2ggYXMKLSAqIGFkZHJlc3Mgc3BhY2UgaGFuZGxlcnMgYW5kIG5vdGlmeSBoYW5kbGVycy4gIFRoZSBvYmplY3QgaXMgYSBjb25zdGFudAorICogYWRkcmVzcyBzcGFjZSBoYW5kbGVycyBhbmQgbm90aWZ5IGhhbmRsZXJzLiBUaGUgb2JqZWN0IGlzIGEgY29uc3RhbnQKICAqIHNpemUgaW4gb3JkZXIgdG8gYWxsb3cgaXQgdG8gYmUgY2FjaGVkIGFuZCByZXVzZWQuCiAgKi8KIApAQCAtNjEsMTcgKzYzLDI1IEBACiAvKgogICogQ29tbW9uIGFyZWEgZm9yIGFsbCBvYmplY3RzLgogICoKLSAqIGRhdGFfdHlwZSBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcm5hbCBkZXNjcmlwdG9ycywgYW5kIE1VU1QKLSAqIGJlIHRoZSBmaXJzdCBieXRlIGluIHRoaXMgc3RydWN0dXJlLgorICogZGVzY3JpcHRvcl90eXBlIGlzIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGludGVybmFsIGRlc2NyaXB0b3JzLCBhbmQKKyAqIG11c3QgYmUgaW4gdGhlIHNhbWUgcGxhY2UgYWNyb3NzIGFsbCBkZXNjcmlwdG9ycworICoKKyAqIE5vdGU6IFRoZSBkZXNjcmlwdG9yX3R5cGUgYW5kIFR5cGUgZmllbGRzIG11c3QgYXBwZWFyIGluIHRoZSBpZGVudGljYWwKKyAqIHBvc2l0aW9uIGluIGJvdGggdGhlIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlIGFuZCB1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0CisgKiBzdHJ1Y3R1cmVzLgogICovCi0jZGVmaW5lIEFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgICAvKiBTSVpFL0FMSUdOTUVOVDogMzIgYml0cywgb25lIHB0ciBwbHVzIHRyYWlsaW5nIDgtYml0IGZsYWcgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I7ICAgICAgICAgLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7ICAgICAgICAgICAgICAgLyogYWNwaV9vYmplY3RfdHlwZSAqL1wKLQl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX2NvdW50OyAgICAvKiBGb3Igb2JqZWN0IGRlbGV0aW9uIG1hbmFnZW1lbnQgKi9cCi0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAgICAgICAgICAgICAgICpuZXh0X29iamVjdDsgICAgICAgLyogT2JqZWN0cyBsaW5rZWQgdG8gcGFyZW50IE5TIG5vZGUgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOworI2RlZmluZSBBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIFwKKwl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgICAgICpuZXh0X29iamVjdDsgICAgICAgLyogT2JqZWN0cyBsaW5rZWQgdG8gcGFyZW50IE5TIG5vZGUgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yX3R5cGU7ICAgIC8qIFRvIGRpZmZlcmVudGlhdGUgdmFyaW91cyBpbnRlcm5hbCBvYmpzICovXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTsgICAgICAgICAgICAgICAvKiBhY3BpX29iamVjdF90eXBlICovXAorCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX2NvdW50OyAgICAvKiBGb3Igb2JqZWN0IGRlbGV0aW9uIG1hbmFnZW1lbnQgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczsKKwkvKgorCSAqIE5vdGU6IFRoZXJlIGFyZSAzIGJ5dGVzIGF2YWlsYWJsZSBoZXJlIGJlZm9yZSB0aGUKKwkgKiBuZXh0IG5hdHVyYWwgYWxpZ25tZW50IGJvdW5kYXJ5IChmb3IgYm90aCAzMi82NCBjYXNlcykKKwkgKi8KIAotLyogVmFsdWVzIGZvciBmbGFnIGJ5dGUgYWJvdmUgKi8KKy8qIFZhbHVlcyBmb3IgRmxhZyBieXRlIGFib3ZlICovCiAKICNkZWZpbmUgQU9QT0JKX0FNTF9DT05TVEFOVCAgICAgICAgIDB4MDEKICNkZWZpbmUgQU9QT0JKX1NUQVRJQ19QT0lOVEVSICAgICAgIDB4MDIKQEAgLTc5LDM2ICs4OSw3IEBACiAjZGVmaW5lIEFPUE9CSl9PQkpFQ1RfSU5JVElBTElaRUQgICAweDA4CiAjZGVmaW5lIEFPUE9CSl9TRVRVUF9DT01QTEVURSAgICAgICAweDEwCiAjZGVmaW5lIEFPUE9CSl9TSU5HTEVfREFUVU0gICAgICAgICAweDIwCi0KLS8qCi0gKiBDb21tb24gYml0ZmllbGQgZm9yIHRoZSBmaWVsZCBvYmplY3RzCi0gKiAiRmllbGQgRGF0dW0iICAtLSBhIGRhdHVtIGZyb20gdGhlIGFjdHVhbCBmaWVsZCBvYmplY3QKLSAqICJCdWZmZXIgRGF0dW0iIC0tIGEgZGF0dW0gZnJvbSBhIHVzZXIgYnVmZmVyLCByZWFkIGZyb20gb3IgdG8gYmUgd3JpdHRlbiB0byB0aGUgZmllbGQKLSAqLwotI2RlZmluZSBBQ1BJX0NPTU1PTl9GSUVMRF9JTkZPICAgICAgLyogU0laRS9BTElHTk1FTlQ6IDI0IGJpdHMgKyB0aHJlZSAzMi1iaXQgdmFsdWVzICovXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9mbGFnczsgICAgICAgIC8qIEFjY2VzcywgdXBkYXRlLCBhbmQgbG9jayBiaXRzICovXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU7ICAgICAgICAgIC8qIEZyb20gYWNjZXNzX2FzIGtleXdvcmQgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19ieXRlX3dpZHRoOyAgLyogUmVhZC9Xcml0ZSBzaXplIGluIGJ5dGVzICovXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRfbGVuZ3RoOyAgICAgICAgIC8qIExlbmd0aCBvZiBmaWVsZCBpbiBiaXRzICovXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX2J5dGVfb2Zmc2V0OyAgIC8qIEJ5dGUgb2Zmc2V0IHdpdGhpbiBjb250YWluaW5nIG9iamVjdCAqL1wKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfZmllbGRfYml0X29mZnNldDsvKiBCaXQgb2Zmc2V0IHdpdGhpbiBmaXJzdCBmaWVsZCBkYXR1bSAoMC02MykgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19iaXRfd2lkdGg7ICAgLyogUmVhZC9Xcml0ZSBzaXplIGluIGJpdHMgKDgtNjQpICovXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsgICAgICAgICAgICAgIC8qIFZhbHVlIHRvIHN0b3JlIGludG8gdGhlIEJhbmsgb3IgSW5kZXggcmVnaXN0ZXIgKi9cCi0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgICAgICAgICAgICAgICpub2RlOwkvKiBMaW5rIGJhY2sgdG8gcGFyZW50IG5vZGUgKi8KLQotLyoKLSAqIEZpZWxkcyBjb21tb24gdG8gYm90aCBTdHJpbmdzIGFuZCBCdWZmZXJzCi0gKi8KLSNkZWZpbmUgQUNQSV9DT01NT05fQlVGRkVSX0lORk8gXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7Ci0KLS8qCi0gKiBDb21tb24gZmllbGRzIGZvciBvYmplY3RzIHRoYXQgc3VwcG9ydCBBU0wgbm90aWZpY2F0aW9ucwotICovCi0jZGVmaW5lIEFDUElfQ09NTU9OX05PVElGWV9JTkZPIFwKLQl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgICAgICAgICAgICAgKnN5c3RlbV9ub3RpZnk7ICAgICAvKiBIYW5kbGVyIGZvciBzeXN0ZW0gbm90aWZpZXMgKi9cCi0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAgICAgICAgICAgICAgICpkZXZpY2Vfbm90aWZ5OyAgICAgLyogSGFuZGxlciBmb3IgZHJpdmVyIG5vdGlmaWVzICovXAotCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgICAgICAgICAgICAgICAqaGFuZGxlcjsJLyogSGFuZGxlciBmb3IgQWRkcmVzcyBzcGFjZSAqLworI2RlZmluZSBBT1BPQkpfSU5WQUxJRCAgICAgICAgICAgICAgMHg0MAkvKiBVc2VkIGlmIGhvc3QgT1Mgd29uJ3QgYWxsb3cgYW4gb3BfcmVnaW9uIGFkZHJlc3MgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTEyNSwyNSArMTA2LDMxIEBACiAKIC8qCiAgKiBOb3RlOiBUaGUgU3RyaW5nIGFuZCBCdWZmZXIgb2JqZWN0IG11c3QgYmUgaWRlbnRpY2FsIHRocm91Z2ggdGhlIFBvaW50ZXIKLSAqIGVsZW1lbnQuICBUaGVyZSBpcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGlzLgorICogYW5kIGxlbmd0aCBlbGVtZW50cy4gIFRoZXJlIGlzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoaXMuCisgKgorICogRmllbGRzIGNvbW1vbiB0byBib3RoIFN0cmluZ3MgYW5kIEJ1ZmZlcnMKICAqLworI2RlZmluZSBBQ1BJX0NPTU1PTl9CVUZGRVJfSU5GTyhfdHlwZSkgXAorCV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXI7IFwKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKKwogc3RydWN0IGFjcGlfb2JqZWN0X3N0cmluZyB7CS8qIE51bGwgdGVybWluYXRlZCwgQVNDSUkgY2hhcmFjdGVycyBvbmx5ICovCi0JQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiBBQ1BJX0NPTU1PTl9CVUZGRVJfSU5GTyBjaGFyICpwb2ludGVyOwkvKiBTdHJpbmcgaW4gQU1MIHN0cmVhbSBvciBhbGxvY2F0ZWQgc3RyaW5nICovCisJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiBBQ1BJX0NPTU1PTl9CVUZGRVJfSU5GTyhjaGFyKQkvKiBTdHJpbmcgaW4gQU1MIHN0cmVhbSBvciBhbGxvY2F0ZWQgc3RyaW5nICovCiB9OwogCiBzdHJ1Y3QgYWNwaV9vYmplY3RfYnVmZmVyIHsKLQlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIEFDUElfQ09NTU9OX0JVRkZFUl9JTkZPIHU4ICogcG9pbnRlcjsJLyogQnVmZmVyIGluIEFNTCBzdHJlYW0gb3IgYWxsb2NhdGVkIGJ1ZmZlciAqLwotCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwkvKiBMaW5rIGJhY2sgdG8gcGFyZW50IG5vZGUgKi8KLQl1OCAqYW1sX3N0YXJ0OworCUFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgQUNQSV9DT01NT05fQlVGRkVSX0lORk8odTgpCS8qIEJ1ZmZlciBpbiBBTUwgc3RyZWFtIG9yIGFsbG9jYXRlZCBidWZmZXIgKi8KIAl1MzIgYW1sX2xlbmd0aDsKKwl1OCAqYW1sX3N0YXJ0OworCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwkvKiBMaW5rIGJhY2sgdG8gcGFyZW50IG5vZGUgKi8KIH07CiAKIHN0cnVjdCBhY3BpX29iamVjdF9wYWNrYWdlIHsKLQlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIHUzMiBjb3VudDsJLyogIyBvZiBlbGVtZW50cyBpbiBwYWNrYWdlICovCi0JdTMyIGFtbF9sZW5ndGg7Ci0JdTggKmFtbF9zdGFydDsKLQlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsJLyogTGluayBiYWNrIHRvIHBhcmVudCBub2RlICovCisJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiBzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZTsJLyogTGluayBiYWNrIHRvIHBhcmVudCBub2RlICovCiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqKmVsZW1lbnRzOwkvKiBBcnJheSBvZiBwb2ludGVycyB0byBhY3BpX29iamVjdHMgKi8KKwl1OCAqYW1sX3N0YXJ0OworCXUzMiBhbWxfbGVuZ3RoOworCXUzMiBjb3VudDsJCS8qICMgb2YgZWxlbWVudHMgaW4gcGFja2FnZSAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTU2LDIzICsxNDMsNiBAQAogCUFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgdm9pZCAqc2VtYXBob3JlOwogfTsKIAotI2RlZmluZSBBQ1BJX0lORklOSVRFX0NPTkNVUlJFTkNZICAgMHhGRgotCi10eXBlZGVmCi1hY3BpX3N0YXR1cygqQUNQSV9JTlRFUk5BTF9NRVRIT0QpIChzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICogd2Fsa19zdGF0ZSk7Ci0KLXN0cnVjdCBhY3BpX29iamVjdF9tZXRob2QgewotCUFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgdTggbWV0aG9kX2ZsYWdzOwotCXU4IHBhcmFtX2NvdW50OwotCXUzMiBhbWxfbGVuZ3RoOwotCXZvaWQgKnNlbWFwaG9yZTsKLQl1OCAqYW1sX3N0YXJ0OwotCUFDUElfSU5URVJOQUxfTUVUSE9EIGltcGxlbWVudGF0aW9uOwotCXU4IGNvbmN1cnJlbmN5OwotCXU4IHRocmVhZF9jb3VudDsKLQlhY3BpX293bmVyX2lkIG93bmVyX2lkOwotfTsKLQogc3RydWN0IGFjcGlfb2JqZWN0X211dGV4IHsKIAlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIHU4IHN5bmNfbGV2ZWw7CS8qIDAtMTUsIHNwZWNpZmllZCBpbiBNdXRleCgpIGNhbGwgKi8KIAl1MTYgYWNxdWlzaXRpb25fZGVwdGg7CS8qIEFsbG93IG11bHRpcGxlIEFjcXVpcmVzLCBzYW1lIHRocmVhZCAqLwpAQCAtMTg2LDExICsxNTYsMjMgQEAKIAogc3RydWN0IGFjcGlfb2JqZWN0X3JlZ2lvbiB7CiAJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiB1OCBzcGFjZV9pZDsKLQl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpoYW5kbGVyOwkvKiBIYW5kbGVyIGZvciByZWdpb24gYWNjZXNzICovCiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CS8qIENvbnRhaW5pbmcgbmFtZXNwYWNlIG5vZGUgKi8KKwl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpoYW5kbGVyOwkvKiBIYW5kbGVyIGZvciByZWdpb24gYWNjZXNzICovCiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqbmV4dDsKLQl1MzIgbGVuZ3RoOwogCWFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyZXNzOworCXUzMiBsZW5ndGg7Cit9OworCitzdHJ1Y3QgYWNwaV9vYmplY3RfbWV0aG9kIHsKKwlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIHU4IG1ldGhvZF9mbGFnczsKKwl1OCBwYXJhbV9jb3VudDsKKwl1OCBjb25jdXJyZW5jeTsKKwl2b2lkICpzZW1hcGhvcmU7CisJdTggKmFtbF9zdGFydDsKKwlBQ1BJX0lOVEVSTkFMX01FVEhPRCBpbXBsZW1lbnRhdGlvbjsKKwl1MzIgYW1sX2xlbmd0aDsKKwl1OCB0aHJlYWRfY291bnQ7CisJYWNwaV9vd25lcl9pZCBvd25lcl9pZDsKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE5OSw2ICsxODEsMTQgQEAKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qCisgKiBDb21tb24gZmllbGRzIGZvciBvYmplY3RzIHRoYXQgc3VwcG9ydCBBU0wgbm90aWZpY2F0aW9ucworICovCisjZGVmaW5lIEFDUElfQ09NTU9OX05PVElGWV9JTkZPIFwKKwl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICAgICAgICpzeXN0ZW1fbm90aWZ5OyAgICAgLyogSGFuZGxlciBmb3Igc3lzdGVtIG5vdGlmaWVzICovXAorCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgICAgICAgKmRldmljZV9ub3RpZnk7ICAgICAvKiBIYW5kbGVyIGZvciBkcml2ZXIgbm90aWZpZXMgKi9cCisJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAgICAgICAqaGFuZGxlcjsJLyogSGFuZGxlciBmb3IgQWRkcmVzcyBzcGFjZSAqLworCiBzdHJ1Y3QgYWNwaV9vYmplY3Rfbm90aWZ5X2NvbW1vbiB7CS8qIENPTU1PTiBOT1RJRlkgZm9yIFBPV0VSLCBQUk9DRVNTT1IsIERFVklDRSwgYW5kIFRIRVJNQUwgKi8KIEFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgQUNQSV9DT01NT05fTk9USUZZX0lORk99OwogCkBAIC0yMTMsOSArMjAzLDkgQEAKIH07CiAKIHN0cnVjdCBhY3BpX29iamVjdF9wcm9jZXNzb3IgewotCUFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgQUNQSV9DT01NT05fTk9USUZZX0lORk8gdTMyIHByb2NfaWQ7Ci0JdTMyIGxlbmd0aDsKLQlhY3BpX2lvX2FkZHJlc3MgYWRkcmVzczsKKwlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIHU4IHByb2NfaWQ7CisJdTggbGVuZ3RoOworCSBBQ1BJX0NPTU1PTl9OT1RJRllfSU5GTyBhY3BpX2lvX2FkZHJlc3MgYWRkcmVzczsKIH07CiAKIHN0cnVjdCBhY3BpX29iamVjdF90aGVybWFsX3pvbmUgewpAQCAtMjI3LDkgKzIxNywyNCBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorLyoKKyAqIENvbW1vbiBiaXRmaWVsZCBmb3IgdGhlIGZpZWxkIG9iamVjdHMKKyAqICJGaWVsZCBEYXR1bSIgIC0tIGEgZGF0dW0gZnJvbSB0aGUgYWN0dWFsIGZpZWxkIG9iamVjdAorICogIkJ1ZmZlciBEYXR1bSIgLS0gYSBkYXR1bSBmcm9tIGEgdXNlciBidWZmZXIsIHJlYWQgZnJvbSBvciB0byBiZSB3cml0dGVuIHRvIHRoZSBmaWVsZAorICovCisjZGVmaW5lIEFDUElfQ09NTU9OX0ZJRUxEX0lORk8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfZmxhZ3M7ICAgICAgICAvKiBBY2Nlc3MsIHVwZGF0ZSwgYW5kIGxvY2sgYml0cyAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTsgICAgICAgICAgLyogRnJvbSBhY2Nlc3NfYXMga2V5d29yZCAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19ieXRlX3dpZHRoOyAgLyogUmVhZC9Xcml0ZSBzaXplIGluIGJ5dGVzICovXAorCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICAgICAgKm5vZGU7ICAgICAgICAgICAgICAvKiBMaW5rIGJhY2sgdG8gcGFyZW50IG5vZGUgKi9cCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRfbGVuZ3RoOyAgICAgICAgIC8qIExlbmd0aCBvZiBmaWVsZCBpbiBiaXRzICovXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9ieXRlX29mZnNldDsgICAvKiBCeXRlIG9mZnNldCB3aXRoaW4gY29udGFpbmluZyBvYmplY3QgKi9cCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsgICAgICAgICAgICAgIC8qIFZhbHVlIHRvIHN0b3JlIGludG8gdGhlIEJhbmsgb3IgSW5kZXggcmVnaXN0ZXIgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9maWVsZF9iaXRfb2Zmc2V0Oy8qIEJpdCBvZmZzZXQgd2l0aGluIGZpcnN0IGZpZWxkIGRhdHVtICgwLTYzKSAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19iaXRfd2lkdGg7CS8qIFJlYWQvV3JpdGUgc2l6ZSBpbiBiaXRzICg4LTY0KSAqLworCiBzdHJ1Y3QgYWNwaV9vYmplY3RfZmllbGRfY29tbW9uIHsJLyogQ09NTU9OIEZJRUxEIChmb3IgQlVGRkVSLCBSRUdJT04sIEJBTkssIGFuZCBJTkRFWCBmaWVsZHMpICovCi0JQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiBBQ1BJX0NPTU1PTl9GSUVMRF9JTkZPIHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnJlZ2lvbl9vYmo7CS8qIENvbnRhaW5pbmcgT3BlcmF0aW9uIFJlZ2lvbiBvYmplY3QgKi8KLQkvKiAoUkVHSU9OL0JBTksgZmllbGRzIG9ubHkpICovCisJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiBBQ1BJX0NPTU1PTl9GSUVMRF9JTkZPIHVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnJlZ2lvbl9vYmo7CS8qIFBhcmVudCBPcGVyYXRpb24gUmVnaW9uIG9iamVjdCAoUkVHSU9OL0JBTksgZmllbGRzIG9ubHkpICovCiB9OwogCiBzdHJ1Y3QgYWNwaV9vYmplY3RfcmVnaW9uX2ZpZWxkIHsKQEAgLTI0NCw3ICsyNDksNyBAQAogc3RydWN0IGFjcGlfb2JqZWN0X2luZGV4X2ZpZWxkIHsKIAlBQ1BJX09CSkVDVF9DT01NT05fSEVBREVSIEFDUElfQ09NTU9OX0ZJRUxEX0lORk8KIAkgICAgLyoKLQkgICAgICogTm8gInJlZ2lvbl9vYmoiIHBvaW50ZXIgbmVlZGVkIHNpbmNlIHRoZSBJbmRleCBhbmQgRGF0YSByZWdpc3RlcnMKKwkgICAgICogTm8gIlJlZ2lvbk9iaiIgcG9pbnRlciBuZWVkZWQgc2luY2UgdGhlIEluZGV4IGFuZCBEYXRhIHJlZ2lzdGVycwogCSAgICAgKiBhcmUgZWFjaCBmaWVsZCBkZWZpbml0aW9ucyB1bnRvIHRoZW1zZWx2ZXMuCiAJICAgICAqLwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKmluZGV4X29iajsJLyogSW5kZXggcmVnaXN0ZXIgKi8KQEAgLTI2OSwxMyArMjc0LDkgQEAKIAl2b2lkICpjb250ZXh0OwogfTsKIAotLyogRmxhZ3MgZm9yIGFkZHJlc3MgaGFuZGxlciAqLwotCi0jZGVmaW5lIEFDUElfQUREUl9IQU5ETEVSX0RFRkFVTFRfSU5TVEFMTEVEICAweDEKLQogc3RydWN0IGFjcGlfb2JqZWN0X2FkZHJfaGFuZGxlciB7CiAJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiB1OCBzcGFjZV9pZDsKLQl1MTYgaGZsYWdzOworCXU4IGhhbmRsZXJfZmxhZ3M7CiAJYWNwaV9hZHJfc3BhY2VfaGFuZGxlciBoYW5kbGVyOwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwkvKiBQYXJlbnQgZGV2aWNlICovCiAJdm9pZCAqY29udGV4dDsKQEAgLTI4NCw2ICsyODUsMTAgQEAKIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpuZXh0OwogfTsKIAorLyogRmxhZ3MgZm9yIGFkZHJlc3MgaGFuZGxlciAoaGFuZGxlcl9mbGFncykgKi8KKworI2RlZmluZSBBQ1BJX0FERFJfSEFORExFUl9ERUZBVUxUX0lOU1RBTExFRCAgMHgwMQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU3BlY2lhbCBpbnRlcm5hbCBvYmplY3RzCkBAIC0yOTcsMTAgKzMwMiwxMCBAQAogc3RydWN0IGFjcGlfb2JqZWN0X3JlZmVyZW5jZSB7CiAJQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiB1OCB0YXJnZXRfdHlwZTsJLyogVXNlZCBmb3IgaW5kZXhfb3AgKi8KIAl1MTYgb3Bjb2RlOwotCXUzMiBvZmZzZXQ7CQkvKiBVc2VkIGZvciBhcmdfb3AsIGxvY2FsX29wLCBhbmQgaW5kZXhfb3AgKi8KLQl2b2lkICpvYmplY3Q7CQkvKiBuYW1lX29wPT5IQU5ETEUgdG8gb2JqLCBpbmRleF9vcD0+dW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAgKi8KKwl2b2lkICpvYmplY3Q7CQkvKiBuYW1lX29wPT5IQU5ETEUgdG8gb2JqLCBpbmRleF9vcD0+dW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqLwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKip3aGVyZTsKKwl1MzIgb2Zmc2V0OwkJLyogVXNlZCBmb3IgYXJnX29wLCBsb2NhbF9vcCwgYW5kIGluZGV4X29wICovCiB9OwogCiAvKgpAQCAtMzExLDEyICszMTYsMTAgQEAKICAqIEN1cnJlbnRseTogUmVnaW9uIGFuZCBmaWVsZF91bml0IHR5cGVzCiAgKi8KIHN0cnVjdCBhY3BpX29iamVjdF9leHRyYSB7Ci0JQUNQSV9PQkpFQ1RfQ09NTU9OX0hFQURFUiB1OCBieXRlX2ZpbGwxOwotCXUxNiB3b3JkX2ZpbGwxOwotCXUzMiBhbWxfbGVuZ3RoOwotCXU4ICphbWxfc3RhcnQ7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm1ldGhvZF9SRUc7CS8qIF9SRUcgbWV0aG9kIGZvciB0aGlzIHJlZ2lvbiAoaWYgYW55KSAqLworCUFDUElfT0JKRUNUX0NPTU1PTl9IRUFERVIgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm1ldGhvZF9SRUc7CS8qIF9SRUcgbWV0aG9kIGZvciB0aGlzIHJlZ2lvbiAoaWYgYW55KSAqLwogCXZvaWQgKnJlZ2lvbl9jb250ZXh0OwkvKiBSZWdpb24tc3BlY2lmaWMgZGF0YSAqLworCXU4ICphbWxfc3RhcnQ7CisJdTMyIGFtbF9sZW5ndGg7CiB9OwogCiAvKiBBZGRpdGlvbmFsIGRhdGEgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gbmFtZXNwYWNlIG5vZGVzICovCkBAIC0zOTEsOCArMzk0LDEzIEBACiAjZGVmaW5lIEFDUElfREVTQ19UWVBFX05BTUVEICAgICAgICAgICAgMHgwRgogI2RlZmluZSBBQ1BJX0RFU0NfVFlQRV9NQVggICAgICAgICAgICAgIDB4MEYKIAorc3RydWN0IGFjcGlfY29tbW9uX2Rlc2NyaXB0b3IgeworCXZvaWQgKmNvbW1vbl9wb2ludGVyOworCXU4IGRlc2NyaXB0b3JfdHlwZTsJLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi8KK307CisKIHVuaW9uIGFjcGlfZGVzY3JpcHRvciB7Ci0JdTggZGVzY3JpcHRvcl9pZDsJLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi8KKwlzdHJ1Y3QgYWNwaV9jb21tb25fZGVzY3JpcHRvciBjb21tb247CiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCBvYmplY3Q7CiAJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgbm9kZTsKIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCBvcDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY29wY29kZS5oIGIvaW5jbHVkZS9hY3BpL2Fjb3Bjb2RlLmgKaW5kZXggZTZkNzhiZC4uNzY1OWE0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2Fjb3Bjb2RlLmgKKysrIGIvaW5jbHVkZS9hY3BpL2Fjb3Bjb2RlLmgKQEAgLTk0LDcgKzk0LDcgQEAKICNkZWZpbmUgQVJHUF9DT05DQVRfUkVTX09QICAgICAgICAgICAgICBBUkdQX0xJU1QzIChBUkdQX1RFUk1BUkcsICAgIEFSR1BfVEVSTUFSRywgICAgICAgQVJHUF9UQVJHRVQpCiAjZGVmaW5lIEFSR1BfQ09ORF9SRUZfT0ZfT1AgICAgICAgICAgICAgQVJHUF9MSVNUMiAoQVJHUF9TVVBFUk5BTUUsICBBUkdQX1NVUEVSTkFNRSkKICNkZWZpbmUgQVJHUF9DT05USU5VRV9PUCAgICAgICAgICAgICAgICBBUkdfTk9ORQotI2RlZmluZSBBUkdQX0NPUFlfT1AgICAgICAgICAgICAgICAgICAgIEFSR1BfTElTVDIgKEFSR1BfU1VQRVJOQU1FLCAgQVJHUF9TSU1QTEVOQU1FKQorI2RlZmluZSBBUkdQX0NPUFlfT1AgICAgICAgICAgICAgICAgICAgIEFSR1BfTElTVDIgKEFSR1BfVEVSTUFSRywgICAgQVJHUF9TSU1QTEVOQU1FKQogI2RlZmluZSBBUkdQX0NSRUFURV9CSVRfRklFTERfT1AgICAgICAgIEFSR1BfTElTVDMgKEFSR1BfVEVSTUFSRywgICAgQVJHUF9URVJNQVJHLCAgICAgICBBUkdQX05BTUUpCiAjZGVmaW5lIEFSR1BfQ1JFQVRFX0JZVEVfRklFTERfT1AgICAgICAgQVJHUF9MSVNUMyAoQVJHUF9URVJNQVJHLCAgICBBUkdQX1RFUk1BUkcsICAgICAgIEFSR1BfTkFNRSkKICNkZWZpbmUgQVJHUF9DUkVBVEVfRFdPUkRfRklFTERfT1AgICAgICBBUkdQX0xJU1QzIChBUkdQX1RFUk1BUkcsICAgIEFSR1BfVEVSTUFSRywgICAgICAgQVJHUF9OQU1FKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2Fjb3V0cHV0LmggYi9pbmNsdWRlL2FjcGkvYWNvdXRwdXQuaAppbmRleCA3Nzg1ZDQ4Li44ZDUwMzlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNvdXRwdXQuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNvdXRwdXQuaApAQCAtNTAsNyArNTAsNyBAQAogICogY29tcG9uZW50IGJhc2lzIGFuZCBhIHBlci1leGNlcHRpb24tdHlwZSBiYXNpcy4KICAqLwogCi0vKiBDb21wb25lbnQgSURzIGFyZSB1c2VkIGluIHRoZSBnbG9iYWwgImRlYnVnX2xheWVyIiAqLworLyogQ29tcG9uZW50IElEcyBhcmUgdXNlZCBpbiB0aGUgZ2xvYmFsICJEZWJ1Z0xheWVyIiAqLwogCiAjZGVmaW5lIEFDUElfVVRJTElUSUVTICAgICAgICAgICAgICAweDAwMDAwMDAxCiAjZGVmaW5lIEFDUElfSEFSRFdBUkUgICAgICAgICAgICAgICAweDAwMDAwMDAyCkBAIC0xMjEsNyArMTIxLDcgQEAKICNkZWZpbmUgQUNQSV9MVl9JTlRFUlJVUFRTICAgICAgICAgIDB4MDgwMDAwMDAKICNkZWZpbmUgQUNQSV9MVl9WRVJCT1NJVFkzICAgICAgICAgIDB4MEYwMDAwMDAgfCBBQ1BJX0xWX1ZFUkJPU0lUWTIKIAotLyogRXhjZXB0aW9uYWxseSB2ZXJib3NlIG91dHB1dCAtLSBhbHNvIHVzZWQgaW4gdGhlIGdsb2JhbCAiZGVidWdfbGV2ZWwiICovCisvKiBFeGNlcHRpb25hbGx5IHZlcmJvc2Ugb3V0cHV0IC0tIGFsc28gdXNlZCBpbiB0aGUgZ2xvYmFsICJEZWJ1Z0xldmVsIiAgKi8KIAogI2RlZmluZSBBQ1BJX0xWX0FNTF9ESVNBU1NFTUJMRSAgICAgMHgxMDAwMDAwMAogI2RlZmluZSBBQ1BJX0xWX1ZFUkJPU0VfSU5GTyAgICAgICAgMHgyMDAwMDAwMApAQCAtMTM1LDcgKzEzNSw3IEBACiAgKi8KICNkZWZpbmUgQUNQSV9ERUJVR19MRVZFTChkbCkgICAgICAgICh1MzIpIGRsLEFDUElfREVCVUdfUEFSQU1FVEVSUwogCi0vKiBFeGNlcHRpb24gbGV2ZWwgLS0gdXNlZCBpbiB0aGUgZ2xvYmFsICJkZWJ1Z19sZXZlbCIgKi8KKy8qIEV4Y2VwdGlvbiBsZXZlbCAtLSB1c2VkIGluIHRoZSBnbG9iYWwgIkRlYnVnTGV2ZWwiICovCiAKICNkZWZpbmUgQUNQSV9EQl9JTklUICAgICAgICAgICAgICAgIEFDUElfREVCVUdfTEVWRUwgKEFDUElfTFZfSU5JVCkKICNkZWZpbmUgQUNQSV9EQl9ERUJVR19PQkpFQ1QgICAgICAgIEFDUElfREVCVUdfTEVWRUwgKEFDUElfTFZfREVCVUdfT0JKRUNUKQpAQCAtMTQ0LDEzICsxNDQsMTMgQEAKIAogLyoKICAqIFRoZXNlIHR3byBsZXZlbHMgYXJlIGVzc2VudGlhbGx5IG9ic29sZXRlLCBhbGwgaW5zdGFuY2VzIGluIHRoZQotICogQUNQSUNBIGNvcmUgY29kZSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgUkVQT1JUX0VSUk9SIGFuZCBSRVBPUlRfV0FSTklORworICogQUNQSUNBIGNvcmUgY29kZSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgQUNQSV9FUlJPUiBhbmQgQUNQSV9XQVJOSU5HCiAgKiAoS2VwdCBoZXJlIGJlY2F1c2Ugc29tZSBkcml2ZXJzIG1heSBzdGlsbCB1c2UgdGhlbSkKICAqLwogI2RlZmluZSBBQ1BJX0RCX0VSUk9SICAgICAgICAgICAgICAgQUNQSV9ERUJVR19MRVZFTCAoQUNQSV9MVl9FUlJPUikKICNkZWZpbmUgQUNQSV9EQl9XQVJOICAgICAgICAgICAgICAgIEFDUElfREVCVUdfTEVWRUwgKEFDUElfTFZfV0FSTikKIAotLyogVHJhY2UgbGV2ZWwgLS0gYWxzbyB1c2VkIGluIHRoZSBnbG9iYWwgImRlYnVnX2xldmVsIiAqLworLyogVHJhY2UgbGV2ZWwgLS0gYWxzbyB1c2VkIGluIHRoZSBnbG9iYWwgIkRlYnVnTGV2ZWwiICovCiAKICNkZWZpbmUgQUNQSV9EQl9JTklUX05BTUVTICAgICAgICAgIEFDUElfREVCVUdfTEVWRUwgKEFDUElfTFZfSU5JVF9OQU1FUykKICNkZWZpbmUgQUNQSV9EQl9USFJFQURTICAgICAgICAgICAgIEFDUElfREVCVUdfTEVWRUwgKEFDUElfTFZfVEhSRUFEUykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3BhcnNlci5oIGIvaW5jbHVkZS9hY3BpL2FjcGFyc2VyLmgKaW5kZXggNWExZmY0OC4uOWQ0OWQzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjcGFyc2VyLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjcGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogI2RlZmluZSBPUF9IQVNfUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDEKIAotLyogdmFyaWFibGUgIyBhcmd1bWVudHMgKi8KKy8qIFZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMuIFRoaXMgZmllbGQgbXVzdCBiZSAzMiBiaXRzICovCiAKICNkZWZpbmUgQUNQSV9WQVJfQVJHUyAgICAgICAgICAgICAgICAgICBBQ1BJX1VJTlQzMl9NQVgKIApAQCAtNzEsNyArNzEsNyBAQAogLyoKICAqIHBzeGZhY2UgLSBQYXJzZXIgZXh0ZXJuYWwgaW50ZXJmYWNlcwogICovCi1hY3BpX3N0YXR1cyBhY3BpX3BzX2V4ZWN1dGVfbWV0aG9kKHN0cnVjdCBhY3BpX3BhcmFtZXRlcl9pbmZvICppbmZvKTsKK2FjcGlfc3RhdHVzIGFjcGlfcHNfZXhlY3V0ZV9tZXRob2Qoc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyAqaW5mbyk7CiAKIC8qCiAgKiBwc2FyZ3MgLSBQYXJzZSBBTUwgb3Bjb2RlIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjcGlfYnVzLmggYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaAppbmRleCA2ZGNhM2Q1Li5hMmIzZTM5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNwaV9idXMuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBfX0FDUElfQlVTX0hfXwogI2RlZmluZSBfX0FDUElfQlVTX0hfXwogCi0jaW5jbHVkZSA8bGludXgva29iamVjdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogCiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAKQEAgLTU5LDcgKzU5LDcgQEAKIAogI2RlZmluZSBBQ1BJX0JVU19GSUxFX1JPT1QJImFjcGkiCiBleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICphY3BpX3Jvb3RfZGlyOwotZXh0ZXJuIEZBRFRfREVTQ1JJUFRPUiBhY3BpX2ZhZHQ7CitleHRlcm4gc3RydWN0IGZhZHRfZGVzY3JpcHRvciBhY3BpX2ZhZHQ7CiAKIGVudW0gYWNwaV9idXNfcmVtb3ZhbF90eXBlIHsKIAlBQ1BJX0JVU19SRU1PVkFMX05PUk1BTCA9IDAsCkBAIC0xNjksNyArMTY5LDggQEAKIAl1MzIgcG93ZXJfbWFuYWdlYWJsZToxOwogCXUzMiBwZXJmb3JtYW5jZV9tYW5hZ2VhYmxlOjE7CiAJdTMyIHdha2VfY2FwYWJsZToxOwkvKiBXYWtldXAoX1BSVykgc3VwcG9ydGVkPyAqLwotCXUzMiByZXNlcnZlZDoyMDsKKwl1MzIgZm9yY2VfcG93ZXJfc3RhdGU6MTsKKwl1MzIgcmVzZXJ2ZWQ6MTk7CiB9OwogCiAvKiBGaWxlIFN5c3RlbSAqLwpAQCAtMjk2LDYgKzI5Nyw3IEBACiAJc3RydWN0IGFjcGlfZHJpdmVyICpkcml2ZXI7CiAJdm9pZCAqZHJpdmVyX2RhdGE7CiAJc3RydWN0IGtvYmplY3Qga29iajsKKwlzdHJ1Y3QgZGV2aWNlIGRldjsKIH07CiAKICNkZWZpbmUgYWNwaV9kcml2ZXJfZGF0YShkKQkoKGQpLT5kcml2ZXJfZGF0YSkKQEAgLTMyNyw3ICszMjksNyBAQAogaW50IGFjcGlfYnVzX2dlbmVyYXRlX2V2ZW50KHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlLCB1OCB0eXBlLCBpbnQgZGF0YSk7CiBpbnQgYWNwaV9idXNfcmVjZWl2ZV9ldmVudChzdHJ1Y3QgYWNwaV9idXNfZXZlbnQgKmV2ZW50KTsKIGludCBhY3BpX2J1c19yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGFjcGlfZHJpdmVyICpkcml2ZXIpOwotaW50IGFjcGlfYnVzX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBhY3BpX2RyaXZlciAqZHJpdmVyKTsKK3ZvaWQgYWNwaV9idXNfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGFjcGlfZHJpdmVyICpkcml2ZXIpOwogaW50IGFjcGlfYnVzX2FkZChzdHJ1Y3QgYWNwaV9kZXZpY2UgKipjaGlsZCwgc3RydWN0IGFjcGlfZGV2aWNlICpwYXJlbnQsCiAJCSBhY3BpX2hhbmRsZSBoYW5kbGUsIGludCB0eXBlKTsKIGludCBhY3BpX2J1c190cmltKHN0cnVjdCBhY3BpX2RldmljZSAqc3RhcnQsIGludCBybWRldmljZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWNwaV9udW1hLmggYi9pbmNsdWRlL2FjcGkvYWNwaV9udW1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0OWYyYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYWNwaS9hY3BpX251bWEuaApAQCAtMCwwICsxLDIzIEBACisjaWZuZGVmIF9fQUNQSV9OVU1BX0gKKyNkZWZpbmUgX19BQ1BJX05VTUFfSAorCisjaWZkZWYgQ09ORklHX0FDUElfTlVNQQorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorCisvKiBQcm94aW1pdHkgYml0bWFwIGxlbmd0aCAqLworI2lmIE1BWF9OVU1OT0RFUyA+IDI1NgorI2RlZmluZSBNQVhfUFhNX0RPTUFJTlMgTUFYX05VTU5PREVTCisjZWxzZQorI2RlZmluZSBNQVhfUFhNX0RPTUFJTlMgKDI1NikgLyogT2xkIHB4bSBzcGVjIGlzIGRlZmluZWQgOCBiaXQgKi8KKyNlbmRpZgorCitleHRlcm4gaW50IF9fY3B1aW5pdGRhdGEgcHhtX3RvX25vZGVfbWFwW01BWF9QWE1fRE9NQUlOU107CitleHRlcm4gaW50IF9fY3B1aW5pdGRhdGEgbm9kZV90b19weG1fbWFwW01BWF9OVU1OT0RFU107CisKK2V4dGVybiBpbnQgX19jcHVpbml0IHB4bV90b19ub2RlKGludCk7CitleHRlcm4gaW50IF9fY3B1aW5pdCBub2RlX3RvX3B4bShpbnQpOworZXh0ZXJuIGludCBfX2NwdWluaXQgYWNwaV9tYXBfcHhtX3RvX25vZGUoaW50KTsKK2V4dGVybiB2b2lkIF9fY3B1aW5pdCBhY3BpX3VubWFwX3B4bV90b19ub2RlKGludCk7CisKKyNlbmRpZgkJCQkvKiBDT05GSUdfQUNQSV9OVU1BICovCisjZW5kaWYJCQkJLyogX19BQ1BfTlVNQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWNwaW9zeGYuaCBiL2luY2x1ZGUvYWNwaS9hY3Bpb3N4Zi5oCmluZGV4IDk3MGU5YTYuLjhmNDczYzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9hY3Bpb3N4Zi5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY3Bpb3N4Zi5oCkBAIC01MCwxMiArNTAsMTYgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9hY2Vudi5oIgogI2luY2x1ZGUgImFjdHlwZXMuaCIKIAotLyogUHJpb3JpdGllcyBmb3IgYWNwaV9vc19xdWV1ZV9mb3JfZXhlY3V0aW9uICovCisvKiBUeXBlcyBmb3IgYWNwaV9vc19leGVjdXRlICovCiAKLSNkZWZpbmUgT1NEX1BSSU9SSVRZX0dQRSAgICAgICAgICAgIDEKLSNkZWZpbmUgT1NEX1BSSU9SSVRZX0hJR0ggICAgICAgICAgIDIKLSNkZWZpbmUgT1NEX1BSSU9SSVRZX01FRCAgICAgICAgICAgIDMKLSNkZWZpbmUgT1NEX1BSSU9SSVRZX0xPICAgICAgICAgICAgIDQKK3R5cGVkZWYgZW51bSB7CisJT1NMX0dMT0JBTF9MT0NLX0hBTkRMRVIsCisJT1NMX05PVElGWV9IQU5ETEVSLAorCU9TTF9HUEVfSEFORExFUiwKKwlPU0xfREVCVUdHRVJfVEhSRUFELAorCU9TTF9FQ19QT0xMX0hBTkRMRVIsCisJT1NMX0VDX0JVUlNUX0hBTkRMRVIKK30gYWNwaV9leGVjdXRlX3R5cGU7CiAKICNkZWZpbmUgQUNQSV9OT19VTklUX0xJTUlUICAgICAgICAgICgodTMyKSAtMSkKICNkZWZpbmUgQUNQSV9NVVRFWF9TRU0gICAgICAgICAgICAgIDEKQEAgLTE2MSwxMyArMTY1LDExIEBACiAvKgogICogVGhyZWFkcyBhbmQgU2NoZWR1bGluZwogICovCi11MzIgYWNwaV9vc19nZXRfdGhyZWFkX2lkKHZvaWQpOworYWNwaV90aHJlYWRfaWQgYWNwaV9vc19nZXRfdGhyZWFkX2lkKHZvaWQpOwogCiBhY3BpX3N0YXR1cwotYWNwaV9vc19xdWV1ZV9mb3JfZXhlY3V0aW9uKHUzMiBwcmlvcml0eSwKLQkJCSAgICBhY3BpX29zZF9leGVjX2NhbGxiYWNrIGZ1bmN0aW9uLCB2b2lkICpjb250ZXh0KTsKLQotdm9pZCBhY3BpX29zX3dhaXRfZXZlbnRzX2NvbXBsZXRlKHZvaWQgKmNvbnRleHQpOworYWNwaV9vc19leGVjdXRlKGFjcGlfZXhlY3V0ZV90eXBlIHR5cGUsCisJCWFjcGlfb3NkX2V4ZWNfY2FsbGJhY2sgZnVuY3Rpb24sIHZvaWQgKmNvbnRleHQpOwogCiB2b2lkIGFjcGlfb3Nfd2FpdF9ldmVudHNfY29tcGxldGUodm9pZCAqY29udGV4dCk7CiAKQEAgLTIxNCw2ICsyMTYsMTIgQEAKIC8qCiAgKiBNaXNjZWxsYW5lb3VzCiAgKi8KK2FjcGlfc3RhdHVzIGFjcGlfb3NfdmFsaWRhdGVfaW50ZXJmYWNlKGNoYXIgKmludGVyZmFjZSk7CisKK2FjcGlfc3RhdHVzCithY3BpX29zX3ZhbGlkYXRlX2FkZHJlc3ModTggc3BhY2VfaWQsCisJCQkgYWNwaV9waHlzaWNhbF9hZGRyZXNzIGFkZHJlc3MsIGFjcGlfc2l6ZSBsZW5ndGgpOworCiB1OCBhY3BpX29zX3JlYWRhYmxlKHZvaWQgKnBvaW50ZXIsIGFjcGlfc2l6ZSBsZW5ndGgpOwogCiAjaWZkZWYgQUNQSV9GVVRVUkVfVVNBR0UKQEAgLTI1NSwxMSArMjYzLDQgQEAKIAogdm9pZCBhY3BpX29zX2Nsb3NlX2RpcmVjdG9yeSh2b2lkICpkaXJfaGFuZGxlKTsKIAotLyoKLSAqIERlYnVnCi0gKi8KLXZvaWQKLWFjcGlfb3NfZGJnX2Fzc2VydCh2b2lkICpmYWlsZWRfYXNzZXJ0aW9uLAotCQkgICB2b2lkICpmaWxlX25hbWUsIHUzMiBsaW5lX251bWJlciwgY2hhciAqbWVzc2FnZSk7Ci0KICNlbmRpZgkJCQkvKiBfX0FDUElPU1hGX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjcGl4Zi5oIGIvaW5jbHVkZS9hY3BpL2FjcGl4Zi5oCmluZGV4IDY2Y2YyZWMuLjA0OWU5YWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9hY3BpeGYuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNwaXhmLmgKQEAgLTI2OCw3ICsyNjgsNyBAQAogICogUmVzb3VyY2UgaW50ZXJmYWNlcwogICovCiB0eXBlZGVmCi1hY3BpX3N0YXR1cygqQUNQSV9XQUxLX1JFU09VUkNFX0NBTExCQUNLKSAoc3RydWN0IGFjcGlfcmVzb3VyY2UgKiByZXNvdXJjZSwKK2FjcGlfc3RhdHVzKCphY3BpX3dhbGtfcmVzb3VyY2VfY2FsbGJhY2spIChzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqIHJlc291cmNlLAogCQkJCQkgICB2b2lkICpjb250ZXh0KTsKIAogYWNwaV9zdGF0dXMKQEAgLTI5MCw3ICsyOTAsNyBAQAogYWNwaV9zdGF0dXMKIGFjcGlfd2Fsa19yZXNvdXJjZXMoYWNwaV9oYW5kbGUgZGV2aWNlX2hhbmRsZSwKIAkJICAgIGNoYXIgKm5hbWUsCi0JCSAgICBBQ1BJX1dBTEtfUkVTT1VSQ0VfQ0FMTEJBQ0sgdXNlcl9mdW5jdGlvbiwgdm9pZCAqY29udGV4dCk7CisJCSAgICBhY3BpX3dhbGtfcmVzb3VyY2VfY2FsbGJhY2sgdXNlcl9mdW5jdGlvbiwgdm9pZCAqY29udGV4dCk7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX3NldF9jdXJyZW50X3Jlc291cmNlcyhhY3BpX2hhbmRsZSBkZXZpY2VfaGFuZGxlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjcmVzcmMuaCBiL2luY2x1ZGUvYWNwaS9hY3Jlc3JjLmgKaW5kZXggZmEwMmU4MC4uYWQxMWZjMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjcmVzcmMuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNyZXNyYy5oCkBAIC0xNjQsMjMgKzE2NCwyNiBAQAogLyoKICAqIHJzdXRpbHMKICAqLwotYWNwaV9zdGF0dXMKLWFjcGlfcnNfZ2V0X3BydF9tZXRob2RfZGF0YShhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0X2J1ZmZlcik7CiAKIGFjcGlfc3RhdHVzCi1hY3BpX3JzX2dldF9jcnNfbWV0aG9kX2RhdGEoYWNwaV9oYW5kbGUgaGFuZGxlLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpOworYWNwaV9yc19nZXRfcHJ0X21ldGhvZF9kYXRhKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlLAorCQkJICAgIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0X2J1ZmZlcik7CiAKLSNpZmRlZglBQ1BJX0ZVVFVSRV9VU0FHRQogYWNwaV9zdGF0dXMKLWFjcGlfcnNfZ2V0X3Byc19tZXRob2RfZGF0YShhY3BpX2hhbmRsZSBoYW5kbGUsIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0X2J1ZmZlcik7Ci0jZW5kaWYJCQkJLyogQUNQSV9GVVRVUkVfVVNBR0UgKi8KK2FjcGlfcnNfZ2V0X2Nyc19tZXRob2RfZGF0YShzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKKwkJCSAgICBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpOworCithY3BpX3N0YXR1cworYWNwaV9yc19nZXRfcHJzX21ldGhvZF9kYXRhKHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpub2RlLAorCQkJICAgIHN0cnVjdCBhY3BpX2J1ZmZlciAqcmV0X2J1ZmZlcik7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX3JzX2dldF9tZXRob2RfZGF0YShhY3BpX2hhbmRsZSBoYW5kbGUsCiAJCQljaGFyICpwYXRoLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpOwogCiBhY3BpX3N0YXR1cwotYWNwaV9yc19zZXRfc3JzX21ldGhvZF9kYXRhKGFjcGlfaGFuZGxlIGhhbmRsZSwgc3RydWN0IGFjcGlfYnVmZmVyICpyZXRfYnVmZmVyKTsKK2FjcGlfcnNfc2V0X3Nyc19tZXRob2RfZGF0YShzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbm9kZSwKKwkJCSAgICBzdHJ1Y3QgYWNwaV9idWZmZXIgKnJldF9idWZmZXIpOwogCiAvKgogICogcnNjYWxjCkBAIC0xOTgsOCArMjAxLDkgQEAKIAkJCQkgICAgIGFjcGlfc2l6ZSAqIGJ1ZmZlcl9zaXplX25lZWRlZCk7CiAKIGFjcGlfc3RhdHVzCi1hY3BpX3JzX2NvbnZlcnRfYW1sX3RvX3Jlc291cmNlcyh1OCAqIGFtbF9idWZmZXIsCi0JCQkJIHUzMiBhbWxfYnVmZmVyX2xlbmd0aCwgdTggKiBvdXRwdXRfYnVmZmVyKTsKK2FjcGlfcnNfY29udmVydF9hbWxfdG9fcmVzb3VyY2VzKHU4ICogYW1sLAorCQkJCSB1MzIgbGVuZ3RoLAorCQkJCSB1MzIgb2Zmc2V0LCB1OCByZXNvdXJjZV9pbmRleCwgdm9pZCAqKmNvbnRleHQpOwogCiBhY3BpX3N0YXR1cwogYWNwaV9yc19jb252ZXJ0X3Jlc291cmNlc190b19hbWwoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlc291cmNlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2Fjc3RydWN0LmggYi9pbmNsdWRlL2FjcGkvYWNzdHJ1Y3QuaAppbmRleCBkOGMxYzJjLi41ZTgwOTVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWNzdHJ1Y3QuaAorKysgYi9pbmNsdWRlL2FjcGkvYWNzdHJ1Y3QuaApAQCAtNDQsNiArNDQsOCBAQAogI2lmbmRlZiBfX0FDU1RSVUNUX0hfXwogI2RlZmluZSBfX0FDU1RSVUNUX0hfXwogCisvKiBhY3Bpc3JjOnN0cnVjdF9kZWZzIC0tIGZvciBhY3Bpc3JjIGNvbnZlcnNpb24gKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogVHJlZSB3YWxraW5nIHR5cGVkZWZzIGFuZCBzdHJ1Y3RzCkBAIC01MSw2NyArNTMsNzYgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgotICogV2FsayBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2YgYSBwYXJzZSB0cmVlIHdhbGsuICBVc2VkIGZvciBib3RoIGEgbGVpc3VyZWx5IHN0cm9sbCB0aHJvdWdoCi0gKiB0aGUgdHJlZSAoZm9yIHdoYXRldmVyIHJlYXNvbiksIGFuZCBmb3IgY29udHJvbCBtZXRob2QgZXhlY3V0aW9uLgorICogV2FsayBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2YgYSBwYXJzZSB0cmVlIHdhbGsuICBVc2VkIGZvciBib3RoIGEgbGVpc3VyZWx5CisgKiBzdHJvbGwgdGhyb3VnaCB0aGUgdHJlZSAoZm9yIHdoYXRldmVyIHJlYXNvbiksIGFuZCBmb3IgY29udHJvbCBtZXRob2QKKyAqIGV4ZWN1dGlvbi4KICAqLwogI2RlZmluZSBBQ1BJX05FWFRfT1BfRE9XTldBUkQgICAgICAgMQogI2RlZmluZSBBQ1BJX05FWFRfT1BfVVBXQVJEICAgICAgICAgMgogCisvKgorICogR3JvdXBzIG9mIGRlZmluaXRpb25zIGZvciB3YWxrX3R5cGUgdXNlZCBmb3IgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZgorICogd2Fsa2VycyAobmV2ZXIgc2ltdWx0YW5lb3VzbHkpIC0gZmxhZ3MgZm9yIGludGVycHJldGVyOgorICovCiAjZGVmaW5lIEFDUElfV0FMS19OT05fTUVUSE9EICAgICAgICAwCi0jZGVmaW5lIEFDUElfV0FMS19NRVRIT0QgICAgICAgICAgICAxCi0jZGVmaW5lIEFDUElfV0FMS19NRVRIT0RfUkVTVEFSVCAgICAyCi0jZGVmaW5lIEFDUElfV0FMS19DT05TVF9SRVFVSVJFRCAgICAzCi0jZGVmaW5lIEFDUElfV0FMS19DT05TVF9PUFRJT05BTCAgICA0CisjZGVmaW5lIEFDUElfV0FMS19NRVRIT0QgICAgICAgICAgICAweDAxCisjZGVmaW5lIEFDUElfV0FMS19NRVRIT0RfUkVTVEFSVCAgICAweDAyCisKKy8qIEZsYWdzIGZvciBpX2FTTCBjb21waWxlciBvbmx5ICovCisKKyNkZWZpbmUgQUNQSV9XQUxLX0NPTlNUX1JFUVVJUkVEICAgIDB4MTAKKyNkZWZpbmUgQUNQSV9XQUxLX0NPTlNUX09QVElPTkFMICAgIDB4MjAKIAogc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSB7Ci0JdTggZGF0YV90eXBlOwkJLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgTVVTVCBCRSBGSVJTVCEgKi8KKwlzdHJ1Y3QgYWNwaV93YWxrX3N0YXRlICpuZXh0OwkvKiBOZXh0IHdhbGtfc3RhdGUgaW4gbGlzdCAqLworCXU4IGRlc2NyaXB0b3JfdHlwZTsJLyogVG8gZGlmZmVyZW50aWF0ZSB2YXJpb3VzIGludGVybmFsIG9ianMgKi8KIAl1OCB3YWxrX3R5cGU7Ci0JYWNwaV9vd25lcl9pZCBvd25lcl9pZDsJLyogT3duZXIgb2Ygb2JqZWN0cyBjcmVhdGVkIGR1cmluZyB0aGUgd2FsayAqLwotCXU4IGxhc3RfcHJlZGljYXRlOwkvKiBSZXN1bHQgb2YgbGFzdCBwcmVkaWNhdGUgKi8KLQl1OCBjdXJyZW50X3Jlc3VsdDsJLyogKi8KKwl1MTYgb3Bjb2RlOwkJLyogQ3VycmVudCBBTUwgb3Bjb2RlICovCiAJdTggbmV4dF9vcF9pbmZvOwkvKiBJbmZvIGFib3V0IG5leHRfb3AgKi8KIAl1OCBudW1fb3BlcmFuZHM7CS8qIFN0YWNrIHBvaW50ZXIgZm9yIE9wZXJhbmRzW10gYXJyYXkgKi8KKwlhY3BpX293bmVyX2lkIG93bmVyX2lkOwkvKiBPd25lciBvZiBvYmplY3RzIGNyZWF0ZWQgZHVyaW5nIHRoZSB3YWxrICovCisJdTggbGFzdF9wcmVkaWNhdGU7CS8qIFJlc3VsdCBvZiBsYXN0IHByZWRpY2F0ZSAqLworCXU4IGN1cnJlbnRfcmVzdWx0OwogCXU4IHJldHVybl91c2VkOwotCXUxNiBvcGNvZGU7CQkvKiBDdXJyZW50IEFNTCBvcGNvZGUgKi8KIAl1OCBzY29wZV9kZXB0aDsKIAl1OCBwYXNzX251bWJlcjsJCS8qIFBhcnNlIHBhc3MgZHVyaW5nIHRhYmxlIGxvYWQgKi8KLQl1MzIgYXJnX2NvdW50OwkJLyogcHVzaCBmb3IgZml4ZWQgb3IgdmFyIGFyZ3MgKi8KIAl1MzIgYW1sX29mZnNldDsKIAl1MzIgYXJnX3R5cGVzOwogCXUzMiBtZXRob2RfYnJlYWtwb2ludDsJLyogRm9yIHNpbmdsZSBzdGVwcGluZyAqLwogCXUzMiB1c2VyX2JyZWFrcG9pbnQ7CS8qIFVzZXIgQU1MIGJyZWFrcG9pbnQgKi8KIAl1MzIgcGFyc2VfZmxhZ3M7CisKKwlzdHJ1Y3QgYWNwaV9wYXJzZV9zdGF0ZSBwYXJzZXJfc3RhdGU7CS8qIEN1cnJlbnQgc3RhdGUgb2YgcGFyc2VyICovCiAJdTMyIHByZXZfYXJnX3R5cGVzOworCXUzMiBhcmdfY291bnQ7CQkvKiBwdXNoIGZvciBmaXhlZCBvciB2YXIgYXJncyAqLworCisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgYXJndW1lbnRzW0FDUElfTUVUSE9EX05VTV9BUkdTXTsJLyogQ29udHJvbCBtZXRob2QgYXJndW1lbnRzICovCisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgbG9jYWxfdmFyaWFibGVzW0FDUElfTUVUSE9EX05VTV9MT0NBTFNdOwkvKiBDb250cm9sIG1ldGhvZCBsb2NhbHMgKi8KKwl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpvcGVyYW5kc1tBQ1BJX09CSl9OVU1fT1BFUkFORFMgKyAxXTsJLyogT3BlcmFuZHMgcGFzc2VkIHRvIHRoZSBpbnRlcnByZXRlciAoKzEgZm9yIE5VTEwgdGVybWluYXRvcikgKi8KKwl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICoqcGFyYW1zOwogCiAJdTggKmFtbF9sYXN0X3doaWxlOwotCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlIGFyZ3VtZW50c1tBQ1BJX01FVEhPRF9OVU1fQVJHU107CS8qIENvbnRyb2wgbWV0aG9kIGFyZ3VtZW50cyAqLwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKipjYWxsZXJfcmV0dXJuX2Rlc2M7CiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpjb250cm9sX3N0YXRlOwkvKiBMaXN0IG9mIGNvbnRyb2wgc3RhdGVzIChuZXN0ZWQgSUZzKSAqLwogCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpkZWZlcnJlZF9ub2RlOwkvKiBVc2VkIHdoZW4gZXhlY3V0aW5nIGRlZmVycmVkIG9wY29kZXMgKi8KIAlzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbyAqZ3BlX2V2ZW50X2luZm87CS8qIEluZm8gZm9yIEdQRSAoX0x4eC9fRXh4IG1ldGhvZHMgb25seSAqLwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKmltcGxpY2l0X3JldHVybl9vYmo7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgbG9jYWxfdmFyaWFibGVzW0FDUElfTUVUSE9EX05VTV9MT0NBTFNdOwkvKiBDb250cm9sIG1ldGhvZCBsb2NhbHMgKi8KIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbWV0aG9kX2NhbGxfbm9kZTsJLyogQ2FsbGVkIG1ldGhvZCBOb2RlICovCiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm1ldGhvZF9jYWxsX29wOwkvKiBtZXRob2RfY2FsbCBPcCBpZiBydW5uaW5nIGEgbWV0aG9kICovCiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqbWV0aG9kX2Rlc2M7CS8qIE1ldGhvZCBkZXNjcmlwdG9yIGlmIHJ1bm5pbmcgYSBtZXRob2QgKi8KIAlzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbWV0aG9kX25vZGU7CS8qIE1ldGhvZCBub2RlIGlmIHJ1bm5pbmcgYSBtZXRob2QuICovCiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm9wOwkvKiBDdXJyZW50IHBhcnNlciBvcCAqLwotCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9wZXJhbmRzW0FDUElfT0JKX05VTV9PUEVSQU5EUyArIDFdOwkvKiBPcGVyYW5kcyBwYXNzZWQgdG8gdGhlIGludGVycHJldGVyICgrMSBmb3IgTlVMTCB0ZXJtaW5hdG9yKSAqLwogCWNvbnN0IHN0cnVjdCBhY3BpX29wY29kZV9pbmZvICpvcF9pbmZvOwkvKiBJbmZvIG9uIGN1cnJlbnQgb3Bjb2RlICovCiAJdW5pb24gYWNwaV9wYXJzZV9vYmplY3QgKm9yaWdpbjsJLyogU3RhcnQgb2Ygd2FsayBbT2Jzb2xldGVdICovCi0JdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqKnBhcmFtczsKLQlzdHJ1Y3QgYWNwaV9wYXJzZV9zdGF0ZSBwYXJzZXJfc3RhdGU7CS8qIEN1cnJlbnQgc3RhdGUgb2YgcGFyc2VyICovCiAJdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqcmVzdWx0X29iajsKIAl1bmlvbiBhY3BpX2dlbmVyaWNfc3RhdGUgKnJlc3VsdHM7CS8qIFN0YWNrIG9mIGFjY3VtdWxhdGVkIHJlc3VsdHMgKi8KIAl1bmlvbiBhY3BpX29wZXJhbmRfb2JqZWN0ICpyZXR1cm5fZGVzYzsJLyogUmV0dXJuIG9iamVjdCwgaWYgYW55ICovCiAJdW5pb24gYWNwaV9nZW5lcmljX3N0YXRlICpzY29wZV9pbmZvOwkvKiBTdGFjayBvZiBuZXN0ZWQgc2NvcGVzICovCi0KIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqcHJldl9vcDsJLyogTGFzdCBvcCB0aGF0IHdhcyBwcm9jZXNzZWQgKi8KIAl1bmlvbiBhY3BpX3BhcnNlX29iamVjdCAqbmV4dF9vcDsJLyogbmV4dCBvcCB0byBiZSBwcm9jZXNzZWQgKi8KKwlzdHJ1Y3QgYWNwaV90aHJlYWRfc3RhdGUgKnRocmVhZDsKIAlhY3BpX3BhcnNlX2Rvd253YXJkcyBkZXNjZW5kaW5nX2NhbGxiYWNrOwogCWFjcGlfcGFyc2VfdXB3YXJkcyBhc2NlbmRpbmdfY2FsbGJhY2s7Ci0Jc3RydWN0IGFjcGlfdGhyZWFkX3N0YXRlICp0aHJlYWQ7Ci0Jc3RydWN0IGFjcGlfd2Fsa19zdGF0ZSAqbmV4dDsJLyogTmV4dCB3YWxrX3N0YXRlIGluIGxpc3QgKi8KIH07CiAKIC8qIEluZm8gdXNlZCBieSBhY3BpX3BzX2luaXRfb2JqZWN0cyAqLwpAQCAtMTMxLDMyICsxNDIsNiBAQAogCXN0cnVjdCBhY3BpX3RhYmxlX2Rlc2MgKnRhYmxlX2Rlc2M7CiB9OwogCi0vKiBJbmZvIHVzZWQgYnkgYWNwaV9uc19pbml0aWFsaXplX2RldmljZXMgKi8KLQotc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbyB7Ci0JdTE2IGRldmljZV9jb3VudDsKLQl1MTYgbnVtX1NUQTsKLQl1MTYgbnVtX0lOSTsKLQlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9kZXNjOwotfTsKLQotLyogVEJEOiBbUmVzdHJ1Y3R1cmVdIE1lcmdlIHdpdGggc3RydWN0IGFib3ZlICovCi0KLXN0cnVjdCBhY3BpX3dhbGtfaW5mbyB7Ci0JdTMyIGRlYnVnX2xldmVsOwotCXUzMiBjb3VudDsKLQlhY3BpX293bmVyX2lkIG93bmVyX2lkOwotCXU4IGRpc3BsYXlfdHlwZTsKLX07Ci0KLS8qIERpc3BsYXkgVHlwZXMgKi8KLQotI2RlZmluZSBBQ1BJX0RJU1BMQVlfU1VNTUFSWSAgICAodTgpIDAKLSNkZWZpbmUgQUNQSV9ESVNQTEFZX09CSkVDVFMgICAgKHU4KSAxCi0jZGVmaW5lIEFDUElfRElTUExBWV9NQVNLICAgICAgICh1OCkgMQotCi0jZGVmaW5lIEFDUElfRElTUExBWV9TSE9SVCAgICAgICh1OCkgMgotCiBzdHJ1Y3QgYWNwaV9nZXRfZGV2aWNlc19pbmZvIHsKIAlhY3BpX3dhbGtfY2FsbGJhY2sgdXNlcl9mdW5jdGlvbjsKIAl2b2lkICpjb250ZXh0OwpAQCAtMTg5LDE2ICsxNzQsMjEgQEAKIAl9IG1pZDsKIH07CiAKLS8qIEludGVybmFsIG1ldGhvZCBwYXJhbWV0ZXIgbGlzdCAqLwotCi1zdHJ1Y3QgYWNwaV9wYXJhbWV0ZXJfaW5mbyB7Ci0Jc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm5vZGU7CisvKgorICogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBvYmplY3QgZXZhbHVhdGlvbiBwYXJhbWV0ZXJzLgorICogUHVycG9zZSBpcyB0byByZWR1Y2UgQ1BVIHN0YWNrIHVzZS4KKyAqLworc3RydWN0IGFjcGlfZXZhbHVhdGVfaW5mbyB7CisJc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKnByZWZpeF9ub2RlOworCWNoYXIgKnBhdGhuYW1lOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKm9ial9kZXNjOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKipwYXJhbWV0ZXJzOworCXN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpyZXNvbHZlZF9ub2RlOwogCXVuaW9uIGFjcGlfb3BlcmFuZF9vYmplY3QgKnJldHVybl9vYmplY3Q7CiAJdTggcGFzc19udW1iZXI7CiAJdTggcGFyYW1ldGVyX3R5cGU7CiAJdTggcmV0dXJuX29iamVjdF90eXBlOworCXU4IGZsYWdzOwogfTsKIAogLyogVHlwZXMgZm9yIHBhcmFtZXRlcl90eXBlIGFib3ZlICovCkBAIC0yMDYsNCArMTk2LDM1IEBACiAjZGVmaW5lIEFDUElfUEFSQU1fQVJHUyAgICAgICAgICAgICAgICAgMAogI2RlZmluZSBBQ1BJX1BBUkFNX0dQRSAgICAgICAgICAgICAgICAgIDEKIAorLyogVmFsdWVzIGZvciBGbGFncyBhYm92ZSAqLworCisjZGVmaW5lIEFDUElfSUdOT1JFX1JFVFVSTl9WQUxVRSAgICAgICAgMQorCisvKiBJbmZvIHVzZWQgYnkgYWNwaV9uc19pbml0aWFsaXplX2RldmljZXMgKi8KKworc3RydWN0IGFjcGlfZGV2aWNlX3dhbGtfaW5mbyB7CisJdTE2IGRldmljZV9jb3VudDsKKwl1MTYgbnVtX1NUQTsKKwl1MTYgbnVtX0lOSTsKKwlzdHJ1Y3QgYWNwaV90YWJsZV9kZXNjICp0YWJsZV9kZXNjOworCXN0cnVjdCBhY3BpX2V2YWx1YXRlX2luZm8gKmV2YWx1YXRlX2luZm87Cit9OworCisvKiBUQkQ6IFtSZXN0cnVjdHVyZV0gTWVyZ2Ugd2l0aCBzdHJ1Y3QgYWJvdmUgKi8KKworc3RydWN0IGFjcGlfd2Fsa19pbmZvIHsKKwl1MzIgZGVidWdfbGV2ZWw7CisJdTMyIGNvdW50OworCWFjcGlfb3duZXJfaWQgb3duZXJfaWQ7CisJdTggZGlzcGxheV90eXBlOworfTsKKworLyogRGlzcGxheSBUeXBlcyAqLworCisjZGVmaW5lIEFDUElfRElTUExBWV9TVU1NQVJZICAgICAgICAodTgpIDAKKyNkZWZpbmUgQUNQSV9ESVNQTEFZX09CSkVDVFMgICAgICAgICh1OCkgMQorI2RlZmluZSBBQ1BJX0RJU1BMQVlfTUFTSyAgICAgICAgICAgKHU4KSAxCisKKyNkZWZpbmUgQUNQSV9ESVNQTEFZX1NIT1JUICAgICAgICAgICh1OCkgMgorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3RhYmxlcy5oIGIvaW5jbHVkZS9hY3BpL2FjdGFibGVzLmgKaW5kZXggMzBhNDc1NC4uNGRiYWYwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjdGFibGVzLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjdGFibGVzLmgKQEAgLTEzNiw3ICsxMzYsMTEgQEAKIGFjcGlfc3RhdHVzCiBhY3BpX3RiX3ZlcmlmeV90YWJsZV9jaGVja3N1bShzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlX2hlYWRlcik7CiAKLXU4IGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0odm9pZCAqYnVmZmVyLCB1MzIgbGVuZ3RoKTsKK3U4IGFjcGlfdGJfc3VtX3RhYmxlKHZvaWQgKmJ1ZmZlciwgdTMyIGxlbmd0aCk7CisKK3U4IGFjcGlfdGJfZ2VuZXJhdGVfY2hlY2tzdW0oc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSk7CisKK3ZvaWQgYWNwaV90Yl9zZXRfY2hlY2tzdW0oc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSk7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX3RiX3ZhbGlkYXRlX3RhYmxlX2hlYWRlcihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlX2hlYWRlcik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWN0YmwuaCBiL2luY2x1ZGUvYWNwaS9hY3RibC5oCmluZGV4IGVkNTNmODQuLmIxMjVjZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9hY3RibC5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY3RibC5oCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIE5hbWU6IGFjdGJsLmggLSBUYWJsZSBkYXRhIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiBBQ1BJIHNwZWNpZmljYXRpb24KKyAqIE5hbWU6IGFjdGJsLmggLSBCYXNpYyBBQ1BJIFRhYmxlIERlZmluaXRpb25zCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC00NSw2NiArNDUsNDUgQEAKICNkZWZpbmUgX19BQ1RCTF9IX18KIAogLyoKKyAqIFZhbHVlcyBmb3IgZGVzY3JpcHRpb24gdGFibGUgaGVhZGVyIHNpZ25hdHVyZXMuIFVzZWZ1bCBiZWNhdXNlIHRoZXkgbWFrZQorICogaXQgbW9yZSBkaWZmaWN1bHQgdG8gaW5hZHZlcnRlbnRseSB0eXBlIGluIHRoZSB3cm9uZyBzaWduYXR1cmUuCisgKi8KKyNkZWZpbmUgRFNEVF9TSUcgICAgICAgICAgICAgICAgIkRTRFQiCS8qIERpZmZlcmVudGlhdGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBGQURUX1NJRyAgICAgICAgICAgICAgICAiRkFDUCIJLyogRml4ZWQgQUNQSSBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBGQUNTX1NJRyAgICAgICAgICAgICAgICAiRkFDUyIJLyogRmlybXdhcmUgQUNQSSBDb250cm9sIFN0cnVjdHVyZSAqLworI2RlZmluZSBQU0RUX1NJRyAgICAgICAgICAgICAgICAiUFNEVCIJLyogUGVyc2lzdGVudCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgKi8KKyNkZWZpbmUgUlNEUF9TSUcgICAgICAgICAgICAgICAgIlJTRCBQVFIgIgkvKiBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyICovCisjZGVmaW5lIFJTRFRfU0lHICAgICAgICAgICAgICAgICJSU0RUIgkvKiBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBYU0RUX1NJRyAgICAgICAgICAgICAgICAiWFNEVCIJLyogRXh0ZW5kZWQgIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBTU0RUX1NJRyAgICAgICAgICAgICAgICAiU1NEVCIJLyogU2Vjb25kYXJ5IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBSU0RQX05BTUUgICAgICAgICAgICAgICAiUlNEUCIKKworLyoKKyAqIEFsbCB0YWJsZXMgYW5kIHN0cnVjdHVyZXMgbXVzdCBiZSBieXRlLXBhY2tlZCB0byBtYXRjaCB0aGUgQUNQSQorICogc3BlY2lmaWNhdGlvbiwgc2luY2UgdGhlIHRhYmxlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSBCSU9TCisgKi8KKyNwcmFnbWEgcGFjaygxKQorCisvKgorICogVGhlc2UgYXJlIHRoZSBBQ1BJIHRhYmxlcyB0aGF0IGFyZSBkaXJlY3RseSBjb25zdW1lZCBieSB0aGUgc3Vic3lzdGVtLgorICoKKyAqIFRoZSBSU0RQIGFuZCBGQUNTIGRvIG5vdCB1c2UgdGhlIGNvbW1vbiBBQ1BJIHRhYmxlIGhlYWRlci4gQWxsIG90aGVyIEFDUEkKKyAqIHRhYmxlcyB1c2UgdGhlIGhlYWRlci4KKyAqCiAgKiBOb3RlIGFib3V0IGJpdGZpZWxkczogVGhlIHU4IHR5cGUgaXMgdXNlZCBmb3IgYml0ZmllbGRzIGluIEFDUEkgdGFibGVzLgogICogVGhpcyBpcyB0aGUgb25seSB0eXBlIHRoYXQgaXMgZXZlbiByZW1vdGVseSBwb3J0YWJsZS4gQW55dGhpbmcgZWxzZSBpcyBub3QKICAqIHBvcnRhYmxlLCBzbyBkbyBub3QgdXNlIGFueSBvdGhlciBiaXRmaWVsZCB0eXBlcy4KICAqLwogCi0vKgotICogIFZhbHVlcyBmb3IgZGVzY3JpcHRpb24gdGFibGUgaGVhZGVyIHNpZ25hdHVyZXMKLSAqLwotI2RlZmluZSBSU0RQX05BTUUgICAgICAgICAgICAgICAiUlNEUCIKLSNkZWZpbmUgUlNEUF9TSUcgICAgICAgICAgICAgICAgIlJTRCBQVFIgIgkvKiBSU0RUIFBvaW50ZXIgc2lnbmF0dXJlICovCi0jZGVmaW5lIEFQSUNfU0lHICAgICAgICAgICAgICAgICJBUElDIgkvKiBNdWx0aXBsZSBBUElDIERlc2NyaXB0aW9uIFRhYmxlICovCi0jZGVmaW5lIERTRFRfU0lHICAgICAgICAgICAgICAgICJEU0RUIgkvKiBEaWZmZXJlbnRpYXRlZCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgKi8KLSNkZWZpbmUgRkFEVF9TSUcgICAgICAgICAgICAgICAgIkZBQ1AiCS8qIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKi8KLSNkZWZpbmUgRkFDU19TSUcgICAgICAgICAgICAgICAgIkZBQ1MiCS8qIEZpcm13YXJlIEFDUEkgQ29udHJvbCBTdHJ1Y3R1cmUgKi8KLSNkZWZpbmUgUFNEVF9TSUcgICAgICAgICAgICAgICAgIlBTRFQiCS8qIFBlcnNpc3RlbnQgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlICovCi0jZGVmaW5lIFJTRFRfU0lHICAgICAgICAgICAgICAgICJSU0RUIgkvKiBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLwotI2RlZmluZSBYU0RUX1NJRyAgICAgICAgICAgICAgICAiWFNEVCIJLyogRXh0ZW5kZWQgIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLwotI2RlZmluZSBTU0RUX1NJRyAgICAgICAgICAgICAgICAiU1NEVCIJLyogU2Vjb25kYXJ5IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLwotI2RlZmluZSBTQlNUX1NJRyAgICAgICAgICAgICAgICAiU0JTVCIJLyogU21hcnQgQmF0dGVyeSBTcGVjaWZpY2F0aW9uIFRhYmxlICovCi0jZGVmaW5lIFNQSUNfU0lHICAgICAgICAgICAgICAgICJTUElDIgkvKiBJT1NBUElDIHRhYmxlICovCi0jZGVmaW5lIEJPT1RfU0lHICAgICAgICAgICAgICAgICJCT09UIgkvKiBCb290IHRhYmxlICovCi0KLSNkZWZpbmUgR0xfT1dORUQgICAgICAgICAgICAgICAgMHgwMgkvKiBPd25lcnNoaXAgb2YgZ2xvYmFsIGxvY2sgaXMgYml0IDEgKi8KLQotLyoKLSAqIENvbW1vbiB0YWJsZSB0eXBlcy4gIFRoZSBiYXNlIGNvZGUgY2FuIHJlbWFpbgotICogY29uc3RhbnQgaWYgdGhlIHVuZGVybHlpbmcgdGFibGVzIGFyZSBjaGFuZ2VkCi0gKi8KLSNkZWZpbmUgUlNEVF9ERVNDUklQVE9SICAgICAgICAgc3RydWN0IHJzZHRfZGVzY3JpcHRvcl9yZXYyCi0jZGVmaW5lIFhTRFRfREVTQ1JJUFRPUiAgICAgICAgIHN0cnVjdCB4c2R0X2Rlc2NyaXB0b3JfcmV2MgotI2RlZmluZSBGQUNTX0RFU0NSSVBUT1IgICAgICAgICBzdHJ1Y3QgZmFjc19kZXNjcmlwdG9yX3JldjIKLSNkZWZpbmUgRkFEVF9ERVNDUklQVE9SICAgICAgICAgc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYyCi0KLSNwcmFnbWEgcGFjaygxKQotCi0vKgotICogQUNQSSBWZXJzaW9uLWluZGVwZW5kZW50IHRhYmxlcworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBOT1RFOiBUaGUgdGFibGVzIHRoYXQgYXJlIHNwZWNpZmljIHRvIEFDUEkgdmVyc2lvbnMgKDEuMCwgMi4wLCBldGMuKQotICogYXJlIGluIHNlcGFyYXRlIGZpbGVzLgotICovCi1zdHJ1Y3QgcnNkcF9kZXNjcmlwdG9yIHsJLyogUm9vdCBTeXN0ZW0gRGVzY3JpcHRvciBQb2ludGVyICovCi0JY2hhciBzaWduYXR1cmVbOF07CS8qIEFDUEkgc2lnbmF0dXJlLCBjb250YWlucyAiUlNEIFBUUiAiICovCi0JdTggY2hlY2tzdW07CQkvKiBBQ1BJIDEuMCBjaGVja3N1bSAqLwotCWNoYXIgb2VtX2lkWzZdOwkJLyogT0VNIGlkZW50aWZpY2F0aW9uICovCi0JdTggcmV2aXNpb247CQkvKiBNdXN0IGJlICgwKSBmb3IgQUNQSSAxLjAgb3IgKDIpIGZvciBBQ1BJIDIuMCsgKi8KLQl1MzIgcnNkdF9waHlzaWNhbF9hZGRyZXNzOwkvKiAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgUlNEVCAqLwotCXUzMiBsZW5ndGg7CQkvKiBYU0RUIExlbmd0aCBpbiBieXRlcywgaW5jbHVkaW5nIGhlYWRlciAqLwotCXU2NCB4c2R0X3BoeXNpY2FsX2FkZHJlc3M7CS8qIDY0LWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBYU0RUICovCi0JdTggZXh0ZW5kZWRfY2hlY2tzdW07CS8qIENoZWNrc3VtIG9mIGVudGlyZSB0YWJsZSAoQUNQSSAyLjApICovCi0JY2hhciByZXNlcnZlZFszXTsJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotfTsKKyAqIEFDUEkgVGFibGUgSGVhZGVyLiBUaGlzIGNvbW1vbiBoZWFkZXIgaXMgdXNlZCBieSBhbGwgdGFibGVzIGV4Y2VwdCB0aGUKKyAqIFJTRFAgYW5kIEZBQ1MuIFRoZSBkZWZpbmUgaXMgdXNlZCBmb3IgZGlyZWN0IGluY2x1c2lvbiBvZiBoZWFkZXIgaW50bworICogb3RoZXIgQUNQSSB0YWJsZXMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdHJ1Y3QgYWNwaV9jb21tb25fZmFjcyB7CS8qIENvbW1vbiBGQUNTIGZvciBpbnRlcm5hbCB1c2UgKi8KLQl1MzIgKmdsb2JhbF9sb2NrOwotCXU2NCAqZmlybXdhcmVfd2FraW5nX3ZlY3RvcjsKLQl1OCB2ZWN0b3Jfd2lkdGg7Ci19OwotCi0jZGVmaW5lIEFDUElfVEFCTEVfSEVBREVSX0RFRiAgIC8qIEFDUEkgY29tbW9uIHRhYmxlIGhlYWRlciAqLyBcCisjZGVmaW5lIEFDUElfVEFCTEVfSEVBREVSX0RFRiBcCiAJY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVbNF07ICAgICAgICAgICAvKiBBU0NJSSB0YWJsZSBzaWduYXR1cmUgKi9cCiAJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7ICAgICAgICAgICAgICAgICAvKiBMZW5ndGggb2YgdGFibGUgaW4gYnl0ZXMsIGluY2x1ZGluZyB0aGlzIGhlYWRlciAqL1wKIAl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uOyAgICAgICAgICAgICAgIC8qIEFDUEkgU3BlY2lmaWNhdGlvbiBtaW5vciB2ZXJzaW9uICMgKi9cCkBAIC0xMTIsMTU0ICs5MSwyMzkgQEAKIAljaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lbV9pZFs2XTsgICAgICAgICAgICAgIC8qIEFTQ0lJIE9FTSBpZGVudGlmaWNhdGlvbiAqL1wKIAljaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lbV90YWJsZV9pZFs4XTsgICAgICAgIC8qIEFTQ0lJIE9FTSB0YWJsZSBpZGVudGlmaWNhdGlvbiAqL1wKIAl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lbV9yZXZpc2lvbjsgICAgICAgICAgIC8qIE9FTSByZXZpc2lvbiBudW1iZXIgKi9cCi0JY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2xfY29tcGlsZXJfaWQgWzRdOyAgICAvKiBBU0NJSSBBU0wgY29tcGlsZXIgdmVuZG9yIElEICovXAorCWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNsX2NvbXBpbGVyX2lkWzRdOyAgICAgLyogQVNDSUkgQVNMIGNvbXBpbGVyIHZlbmRvciBJRCAqL1wKIAl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbF9jb21waWxlcl9yZXZpc2lvbjsJLyogQVNMIGNvbXBpbGVyIHZlcnNpb24gKi8KIAotc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyIHsJLyogQUNQSSBjb21tb24gdGFibGUgaGVhZGVyICovCitzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgewogQUNQSV9UQUJMRV9IRUFERVJfREVGfTsKIAogLyoKLSAqIE1BRFQgdmFsdWVzIGFuZCBzdHJ1Y3R1cmVzCisgKiBHQVMgLSBHZW5lcmljIEFkZHJlc3MgU3RydWN0dXJlIChBQ1BJIDIuMCspCiAgKi8KK3N0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB7CisJdTggYWRkcmVzc19zcGFjZV9pZDsJLyogQWRkcmVzcyBzcGFjZSB3aGVyZSBzdHJ1Y3Qgb3IgcmVnaXN0ZXIgZXhpc3RzICovCisJdTggcmVnaXN0ZXJfYml0X3dpZHRoOwkvKiBTaXplIGluIGJpdHMgb2YgZ2l2ZW4gcmVnaXN0ZXIgKi8KKwl1OCByZWdpc3Rlcl9iaXRfb2Zmc2V0OwkvKiBCaXQgb2Zmc2V0IHdpdGhpbiB0aGUgcmVnaXN0ZXIgKi8KKwl1OCBhY2Nlc3Nfd2lkdGg7CS8qIE1pbmltdW0gQWNjZXNzIHNpemUgKEFDUEkgMy4wKSAqLworCXU2NCBhZGRyZXNzOwkJLyogNjQtYml0IGFkZHJlc3Mgb2Ygc3RydWN0IG9yIHJlZ2lzdGVyICovCit9OwogCi0vKiBWYWx1ZXMgZm9yIE1BRFQgUENBVENvbXBhdCAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBSU0RQIC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoU2lnbmF0dXJlIGlzICJSU0QgUFRSICIpCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2RlZmluZSBEVUFMX1BJQyAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIE1VTFRJUExFX0FQSUMgICAgICAgICAgIDEKK3N0cnVjdCByc2RwX2Rlc2NyaXB0b3IgeworCWNoYXIgc2lnbmF0dXJlWzhdOwkvKiBBQ1BJIHNpZ25hdHVyZSwgY29udGFpbnMgIlJTRCBQVFIgIiAqLworCXU4IGNoZWNrc3VtOwkJLyogQUNQSSAxLjAgY2hlY2tzdW0gKi8KKwljaGFyIG9lbV9pZFs2XTsJCS8qIE9FTSBpZGVudGlmaWNhdGlvbiAqLworCXU4IHJldmlzaW9uOwkJLyogTXVzdCBiZSAoMCkgZm9yIEFDUEkgMS4wIG9yICgyKSBmb3IgQUNQSSAyLjArICovCisJdTMyIHJzZHRfcGh5c2ljYWxfYWRkcmVzczsJLyogMzItYml0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFJTRFQgKi8KKwl1MzIgbGVuZ3RoOwkJLyogVGFibGUgbGVuZ3RoIGluIGJ5dGVzLCBpbmNsdWRpbmcgaGVhZGVyIChBQ1BJIDIuMCspICovCisJdTY0IHhzZHRfcGh5c2ljYWxfYWRkcmVzczsJLyogNjQtYml0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFhTRFQgKEFDUEkgMi4wKykgKi8KKwl1OCBleHRlbmRlZF9jaGVja3N1bTsJLyogQ2hlY2tzdW0gb2YgZW50aXJlIHRhYmxlIChBQ1BJIDIuMCspICovCisJdTggcmVzZXJ2ZWRbM107CQkvKiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCit9OwogCi0vKiBNYXN0ZXIgTUFEVCAqLworI2RlZmluZSBBQ1BJX1JTRFBfUkVWMF9TSVpFICAgICAyMAkvKiBTaXplIG9mIG9yaWdpbmFsIEFDUEkgMS4wIFJTRFAgKi8KIAotc3RydWN0IG11bHRpcGxlX2FwaWNfdGFibGUgewotCUFDUElfVEFCTEVfSEVBREVSX0RFRgkvKiBBQ1BJIGNvbW1vbiB0YWJsZSBoZWFkZXIgKi8KLQl1MzIgbG9jYWxfYXBpY19hZGRyZXNzOwkvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIGxvY2FsIEFQSUMgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogUlNEVC9YU0RUIC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGVzCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IHJzZHRfZGVzY3JpcHRvciB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHUzMiB0YWJsZV9vZmZzZXRfZW50cnlbMV07CS8qIEFycmF5IG9mIHBvaW50ZXJzIHRvIEFDUEkgdGFibGVzICovCit9OworCitzdHJ1Y3QgeHNkdF9kZXNjcmlwdG9yIHsKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTY0IHRhYmxlX29mZnNldF9lbnRyeVsxXTsJLyogQXJyYXkgb2YgcG9pbnRlcnMgdG8gQUNQSSB0YWJsZXMgKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRkFDUyAtIEZpcm13YXJlIEFDUEkgQ29udHJvbCBTdHJ1Y3R1cmUgKEZBQ1MpCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGZhY3NfZGVzY3JpcHRvciB7CisJY2hhciBzaWduYXR1cmVbNF07CS8qIEFTQ0lJIHRhYmxlIHNpZ25hdHVyZSAqLworCXUzMiBsZW5ndGg7CQkvKiBMZW5ndGggb2Ygc3RydWN0dXJlLCBpbiBieXRlcyAqLworCXUzMiBoYXJkd2FyZV9zaWduYXR1cmU7CS8qIEhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2lnbmF0dXJlICovCisJdTMyIGZpcm13YXJlX3dha2luZ192ZWN0b3I7CS8qIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBGaXJtd2FyZSBXYWtpbmcgVmVjdG9yICovCisJdTMyIGdsb2JhbF9sb2NrOwkvKiBHbG9iYWwgTG9jayBmb3Igc2hhcmVkIGhhcmR3YXJlIHJlc291cmNlcyAqLwogCiAJLyogRmxhZ3MgKDMyIGJpdHMpICovCiAKLQl1OCBQQ0FUY29tcGF0OjE7CS8qIDAwOiAgICBTeXN0ZW0gYWxzbyBoYXMgZHVhbCA4MjU5cyAqLworCXU4IFM0Ymlvc19mOjE7CQkvKiAwMDogICAgUzRCSU9TIHN1cHBvcnQgaXMgcHJlc2VudCAqLwogCSB1ODo3OwkJCS8qIDAxLTA3OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCiAJdTggcmVzZXJ2ZWQxWzNdOwkvKiAwOC0zMTogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLworCisJdTY0IHhmaXJtd2FyZV93YWtpbmdfdmVjdG9yOwkvKiA2NC1iaXQgdmVyc2lvbiBvZiB0aGUgRmlybXdhcmUgV2FraW5nIFZlY3RvciAoQUNQSSAyLjArKSAqLworCXU4IHZlcnNpb247CQkvKiBWZXJzaW9uIG9mIHRoaXMgdGFibGUgKEFDUEkgMi4wKykgKi8KKwl1OCByZXNlcnZlZFszMV07CS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KIH07CiAKLS8qIFZhbHVlcyBmb3IgVHlwZSBpbiBBUElDX0hFQURFUl9ERUYgKi8KLQotI2RlZmluZSBBUElDX1BST0NFU1NPUiAgICAgICAgICAwCi0jZGVmaW5lIEFQSUNfSU8gICAgICAgICAgICAgICAgIDEKLSNkZWZpbmUgQVBJQ19YUlVQVF9PVkVSUklERSAgICAgMgotI2RlZmluZSBBUElDX05NSSAgICAgICAgICAgICAgICAzCi0jZGVmaW5lIEFQSUNfTE9DQUxfTk1JICAgICAgICAgIDQKLSNkZWZpbmUgQVBJQ19BRERSRVNTX09WRVJSSURFICAgNQotI2RlZmluZSBBUElDX0lPX1NBUElDICAgICAgICAgICA2Ci0jZGVmaW5lIEFQSUNfTE9DQUxfU0FQSUMgICAgICAgIDcKLSNkZWZpbmUgQVBJQ19YUlVQVF9TT1VSQ0UgICAgICAgOAotI2RlZmluZSBBUElDX1JFU0VSVkVEICAgICAgICAgICA5CS8qIDkgYW5kIGdyZWF0ZXIgYXJlIHJlc2VydmVkICovCisjZGVmaW5lIEFDUElfR0xPQ0tfUEVORElORyAgICAgIDB4MDEJLyogMDA6IFBlbmRpbmcgZ2xvYmFsIGxvY2sgb3duZXJzaGlwICovCisjZGVmaW5lIEFDUElfR0xPQ0tfT1dORUQgICAgICAgIDB4MDIJLyogMDE6IEdsb2JhbCBsb2NrIGlzIG93bmVkICovCiAKIC8qCi0gKiBNQURUIHN1Yi1zdHJ1Y3R1cmVzIChGb2xsb3cgTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRSkKKyAqIENvbW1vbiBGQUNTIC0gVGhpcyBpcyBhIHZlcnNpb24taW5kZXBlbmRlbnQgRkFDUyBzdHJ1Y3R1cmUgdXNlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkKICAqLwotI2RlZmluZSBBUElDX0hFQURFUl9ERUYgICAgICAgICAgICAgICAgICAgICAvKiBDb21tb24gQVBJQyBzdWItc3RydWN0dXJlIGhlYWRlciAqL1wKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7IFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKLQotc3RydWN0IGFwaWNfaGVhZGVyIHsKLUFQSUNfSEVBREVSX0RFRn07Ci0KLS8qIFZhbHVlcyBmb3IgTVBTIElOVEkgZmxhZ3MgKi8KLQotI2RlZmluZSBQT0xBUklUWV9DT05GT1JNUyAgICAgICAwCi0jZGVmaW5lIFBPTEFSSVRZX0FDVElWRV9ISUdIICAgIDEKLSNkZWZpbmUgUE9MQVJJVFlfUkVTRVJWRUQgICAgICAgMgotI2RlZmluZSBQT0xBUklUWV9BQ1RJVkVfTE9XICAgICAzCi0KLSNkZWZpbmUgVFJJR0dFUl9DT05GT1JNUyAgICAgICAgMAotI2RlZmluZSBUUklHR0VSX0VER0UgICAgICAgICAgICAxCi0jZGVmaW5lIFRSSUdHRVJfUkVTRVJWRUQgICAgICAgIDIKLSNkZWZpbmUgVFJJR0dFUl9MRVZFTCAgICAgICAgICAgMwotCi0vKiBDb21tb24gZmxhZyBkZWZpbml0aW9ucyAoMTYgYml0cyBlYWNoKSAqLwotCi0jZGVmaW5lIE1QU19JTlRJX0ZMQUdTIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5ICAgICAgICA6IDI7ICAgIC8qIDAwLTAxOiBQb2xhcml0eSBvZiBBUElDIEkvTyBpbnB1dCBzaWduYWxzICovXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9tb2RlICAgIDogMjsgICAgLyogMDItMDM6IFRyaWdnZXIgbW9kZSBvZiBBUElDIGlucHV0IHNpZ25hbHMgKi9cCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAvKiAwNC0wNzogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqL1wKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkMTsJLyogMDgtMTU6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQotI2RlZmluZSBMT0NBTF9BUElDX0ZMQUdTIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvcl9lbmFibGVkOiAxOyAgIC8qIDAwOiAgICBQcm9jZXNzb3IgaXMgdXNhYmxlIGlmIHNldCAqL1wKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDc7ICAgIC8qIDAxLTA3OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQyOwkvKiAwOC0xNTogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCi0vKiBTdWItc3RydWN0dXJlcyBmb3IgTUFEVCAqLwotCi1zdHJ1Y3QgbWFkdF9wcm9jZXNzb3JfYXBpYyB7Ci0JQVBJQ19IRUFERVJfREVGIHU4IHByb2Nlc3Nvcl9pZDsJLyogQUNQSSBwcm9jZXNzb3IgaWQgKi8KLQl1OCBsb2NhbF9hcGljX2lkOwkvKiBQcm9jZXNzb3IncyBsb2NhbCBBUElDIGlkICovCi0gTE9DQUxfQVBJQ19GTEFHU307Ci0KLXN0cnVjdCBtYWR0X2lvX2FwaWMgewotCUFQSUNfSEVBREVSX0RFRiB1OCBpb19hcGljX2lkOwkvKiBJL08gQVBJQyBJRCAqLwotCXU4IHJlc2VydmVkOwkJLyogUmVzZXJ2ZWQgLSBtdXN0IGJlIHplcm8gKi8KLQl1MzIgYWRkcmVzczsJCS8qIEFQSUMgcGh5c2ljYWwgYWRkcmVzcyAqLwotCXUzMiBpbnRlcnJ1cHQ7CQkvKiBHbG9iYWwgc3lzdGVtIGludGVycnVwdCB3aGVyZSBJTlRJCi0JCQkJICogbGluZXMgc3RhcnQgKi8KK3N0cnVjdCBhY3BpX2NvbW1vbl9mYWNzIHsKKwl1MzIgKmdsb2JhbF9sb2NrOworCXU2NCAqZmlybXdhcmVfd2FraW5nX3ZlY3RvcjsKKwl1OCB2ZWN0b3Jfd2lkdGg7CiB9OwogCi1zdHJ1Y3QgbWFkdF9pbnRlcnJ1cHRfb3ZlcnJpZGUgewotCUFQSUNfSEVBREVSX0RFRiB1OCBidXM7CS8qIDAgLSBJU0EgKi8KLQl1OCBzb3VyY2U7CQkvKiBJbnRlcnJ1cHQgc291cmNlIChJUlEpICovCi0JdTMyIGludGVycnVwdDsJCS8qIEdsb2JhbCBzeXN0ZW0gaW50ZXJydXB0ICovCi0gTVBTX0lOVElfRkxBR1N9OworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGQURUIC0gRml4ZWQgQUNQSSBEZXNjcmlwdGlvbiBUYWJsZSAoU2lnbmF0dXJlICJGQUNQIikKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdHJ1Y3QgbWFkdF9ubWlfc291cmNlIHsKLQlBUElDX0hFQURFUl9ERUYgTVBTX0lOVElfRkxBR1MgdTMyIGludGVycnVwdDsJLyogR2xvYmFsIHN5c3RlbSBpbnRlcnJ1cHQgKi8KLX07CisvKiBGaWVsZHMgY29tbW9uIHRvIGFsbCB2ZXJzaW9ucyBvZiB0aGUgRkFEVCAqLwogCi1zdHJ1Y3QgbWFkdF9sb2NhbF9hcGljX25taSB7Ci0JQVBJQ19IRUFERVJfREVGIHU4IHByb2Nlc3Nvcl9pZDsJLyogQUNQSSBwcm9jZXNzb3IgaWQgKi8KLQlNUFNfSU5USV9GTEFHUyB1OCBsaW50OwkvKiBMSU5UbiB0byB3aGljaCBOTUkgaXMgY29ubmVjdGVkICovCi19OworI2RlZmluZSBBQ1BJX0ZBRFRfQ09NTU9OIFwKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfZmlybXdhcmVfY3RybDsgICAvKiAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiBGQUNTICovIFwKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX2RzZHQ7ICAgICAgICAgICAgLyogMzItYml0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgRFNEVCAqLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZDE7ICAgICAgICAgIC8qIFN5c3RlbSBJbnRlcnJ1cHQgTW9kZWwgaXNuJ3QgdXNlZCBpbiBBQ1BJIDIuMCovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcl9QTV9wcm9maWxlOyAgLyogQ29udmV5cyBwcmVmZXJyZWQgcG93ZXIgbWFuYWdlbWVudCBwcm9maWxlIHRvIE9TUE0uICovIFwKKwl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaV9pbnQ7ICAgICAgICAgICAgLyogU3lzdGVtIHZlY3RvciBvZiBTQ0kgaW50ZXJydXB0ICovIFwKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtaV9jbWQ7ICAgICAgICAgICAgLyogUG9ydCBhZGRyZXNzIG9mIFNNSSBjb21tYW5kIHBvcnQgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9lbmFibGU7ICAgICAgICAvKiBWYWx1ZSB0byB3cml0ZSB0byBzbWlfY21kIHRvIGVuYWJsZSBBQ1BJICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfZGlzYWJsZTsgICAgICAgLyogVmFsdWUgdG8gd3JpdGUgdG8gc21pX2NtZCB0byBkaXNhYmxlIEFDUEkgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUzRiaW9zX3JlcTsgICAgICAgICAvKiBWYWx1ZSB0byB3cml0ZSB0byBTTUkgQ01EIHRvIGVudGVyIFM0QklPUyBzdGF0ZSAqLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3RhdGVfY250OyAgICAgICAgIC8qIFByb2Nlc3NvciBwZXJmb3JtYW5jZSBzdGF0ZSBjb250cm9sKi8gXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfcG0xYV9ldnRfYmxrOyAgICAvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDFhIEV2ZW50IFJlZyBCbGsgKi8gXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfcG0xYl9ldnRfYmxrOyAgICAvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDFiIEV2ZW50IFJlZyBCbGsgKi8gXAorCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfcG0xYV9jbnRfYmxrOyAgICAvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDFhIENvbnRyb2wgUmVnIEJsayAqLyBcCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9wbTFiX2NudF9ibGs7ICAgIC8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgMWIgQ29udHJvbCBSZWcgQmxrICovIFwKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX3BtMl9jbnRfYmxrOyAgICAgLyogUG9ydCBhZGRyZXNzIG9mIFBvd2VyIE1ndCAyIENvbnRyb2wgUmVnIEJsayAqLyBcCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9wbV90bXJfYmxrOyAgICAgIC8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgVGltZXIgQ3RybCBSZWcgQmxrICovIFwKKwl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX2dwZTBfYmxrOyAgICAgICAgLyogUG9ydCBhZGRyIG9mIEdlbmVyYWwgUHVycG9zZSBhY3BpX2V2ZW50IDAgUmVnIEJsayAqLyBcCisJdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9ncGUxX2JsazsgICAgICAgIC8qIFBvcnQgYWRkciBvZiBHZW5lcmFsIFB1cnBvc2UgYWNwaV9ldmVudCAxIFJlZyBCbGsgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG0xX2V2dF9sZW47ICAgICAgICAvKiBCeXRlIExlbmd0aCBvZiBwb3J0cyBhdCBwbTFfeF9ldnRfYmxrICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtMV9jbnRfbGVuOyAgICAgICAgLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgcG0xX3hfY250X2JsayAqLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbTJfY250X2xlbjsgICAgICAgIC8qIEJ5dGUgTGVuZ3RoIG9mIHBvcnRzIGF0IHBtMl9jbnRfYmxrICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX3RtX2xlbjsgICAgICAgICAgLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgcG1fdG1fYmxrICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwZTBfYmxrX2xlbjsgICAgICAgLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgZ3BlMF9ibGsgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BlMV9ibGtfbGVuOyAgICAgICAvKiBCeXRlIExlbmd0aCBvZiBwb3J0cyBhdCBncGUxX2JsayAqLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGUxX2Jhc2U7ICAgICAgICAgIC8qIE9mZnNldCBpbiBncGUgbW9kZWwgd2hlcmUgZ3BlMSBldmVudHMgc3RhcnQgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0X2NudDsgICAgICAgICAgICAvKiBTdXBwb3J0IGZvciB0aGUgX0NTVCBvYmplY3QgYW5kIEMgU3RhdGVzIGNoYW5nZSBub3RpZmljYXRpb24uKi8gXAorCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx2bDJfbGF0OyAgICAgICAgICAvKiBXb3JzdCBjYXNlIEhXIGxhdGVuY3kgdG8gZW50ZXIvZXhpdCBDMiBzdGF0ZSAqLyBcCisJdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHZsM19sYXQ7ICAgICAgICAgIC8qIFdvcnN0IGNhc2UgSFcgbGF0ZW5jeSB0byBlbnRlci9leGl0IEMzIHN0YXRlICovIFwKKwl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX3NpemU7ICAgICAgICAgLyogUHJvY2Vzc29yJ3MgbWVtb3J5IGNhY2hlIGxpbmUgd2lkdGgsIGluIGJ5dGVzICovIFwKKwl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX3N0cmlkZTsgICAgICAgLyogTnVtYmVyIG9mIGZsdXNoIHN0cmlkZXMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHV0eV9vZmZzZXQ7ICAgICAgICAvKiBQcm9jZXNzb3IncyBkdXR5IGN5Y2xlIGluZGV4IGluIHByb2Nlc3NvcidzIFBfQ05UIHJlZyovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1dHlfd2lkdGg7ICAgICAgICAgLyogUHJvY2Vzc29yJ3MgZHV0eSBjeWNsZSB2YWx1ZSBiaXQgd2lkdGggaW4gUF9DTlQgcmVnaXN0ZXIuKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5X2Fscm07ICAgICAgICAgICAvKiBJbmRleCB0byBkYXktb2YtbW9udGggYWxhcm0gaW4gUlRDIENNT1MgUkFNICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbl9hbHJtOyAgICAgICAgICAgLyogSW5kZXggdG8gbW9udGgtb2YteWVhciBhbGFybSBpbiBSVEMgQ01PUyBSQU0gKi8gXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudHVyeTsgICAgICAgICAgICAvKiBJbmRleCB0byBjZW50dXJ5IGluIFJUQyBDTU9TIFJBTSAqLyBcCisJdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYXBjX2Jvb3RfYXJjaDsgICAgIC8qIElBLVBDIEJvb3QgQXJjaGl0ZWN0dXJlIEZsYWdzLiBTZWUgVGFibGUgNS0xMCBmb3IgZGVzY3JpcHRpb24qLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZDI7ICAgICAgICAgIC8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KIAotc3RydWN0IG1hZHRfYWRkcmVzc19vdmVycmlkZSB7Ci0JQVBJQ19IRUFERVJfREVGIHUxNiByZXNlcnZlZDsJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCXU2NCBhZGRyZXNzOwkJLyogQVBJQyBwaHlzaWNhbCBhZGRyZXNzICovCi19OworLyoKKyAqIEFDUEkgMi4wKyBGQURUCisgKi8KK3N0cnVjdCBmYWR0X2Rlc2NyaXB0b3IgeworCUFDUElfRkFEVF9DT01NT04KKwkgICAgLyogRmxhZ3MgKDMyIGJpdHMpICovCisJdTggd2JfaW52ZDoxOwkJLyogMDA6ICAgIFRoZSB3YmludmQgaW5zdHJ1Y3Rpb24gd29ya3MgcHJvcGVybHkgKi8KKwl1OCB3Yl9pbnZkX2ZsdXNoOjE7CS8qIDAxOiAgICBUaGUgd2JpbnZkIGZsdXNoZXMgYnV0IGRvZXMgbm90IGludmFsaWRhdGUgKi8KKwl1OCBwcm9jX2MxOjE7CQkvKiAwMjogICAgQWxsIHByb2Nlc3NvcnMgc3VwcG9ydCBDMSBzdGF0ZSAqLworCXU4IHBsdmwyX3VwOjE7CQkvKiAwMzogICAgQzIgc3RhdGUgd29ya3Mgb24gTVAgc3lzdGVtICovCisJdTggcHdyX2J1dHRvbjoxOwkvKiAwNDogICAgUG93ZXIgYnV0dG9uIGlzIGhhbmRsZWQgYXMgYSBnZW5lcmljIGZlYXR1cmUgKi8KKwl1OCBzbGVlcF9idXR0b246MTsJLyogMDU6ICAgIFNsZWVwIGJ1dHRvbiBpcyBoYW5kbGVkIGFzIGEgZ2VuZXJpYyBmZWF0dXJlLCBvciBub3QgcHJlc2VudCAqLworCXU4IGZpeGVkX3JUQzoxOwkJLyogMDY6ICAgIFJUQyB3YWtldXAgc3RhdCBub3QgaW4gZml4ZWQgcmVnaXN0ZXIgc3BhY2UgKi8KKwl1OCBydGNzNDoxOwkJLyogMDc6ICAgIFJUQyB3YWtldXAgc3RhdCBub3QgcG9zc2libGUgZnJvbSBTNCAqLworCXU4IHRtcl92YWxfZXh0OjE7CS8qIDA4OiAgICB0bXJfdmFsIGlzIDMyIGJpdHMgMD0yNC1iaXRzICovCisJdTggZG9ja19jYXA6MTsJCS8qIDA5OiAgICBEb2NraW5nIHN1cHBvcnRlZCAqLworCXU4IHJlc2V0X3JlZ19zdXA6MTsJLyogMTA6ICAgIFN5c3RlbSByZXNldCB2aWEgdGhlIEZBRFQgUkVTRVRfUkVHIHN1cHBvcnRlZCAqLworCXU4IHNlYWxlZF9jYXNlOjE7CS8qIDExOiAgICBObyBpbnRlcm5hbCBleHBhbnNpb24gY2FwYWJpbGl0aWVzIGFuZCBjYXNlIGlzIHNlYWxlZCAqLworCXU4IGhlYWRsZXNzOjE7CQkvKiAxMjogICAgTm8gbG9jYWwgdmlkZW8gY2FwYWJpbGl0aWVzIG9yIGxvY2FsIGlucHV0IGRldmljZXMgKi8KKwl1OCBjcHVfc3dfc2xlZXA6MTsJLyogMTM6ICAgIE11c3QgZXhlY3V0ZSBuYXRpdmUgaW5zdHJ1Y3Rpb24gYWZ0ZXIgd3JpdGluZyBTTFBfVFlQeCByZWdpc3RlciAqLwogCi1zdHJ1Y3QgbWFkdF9pb19zYXBpYyB7Ci0JQVBJQ19IRUFERVJfREVGIHU4IGlvX3NhcGljX2lkOwkvKiBJL08gU0FQSUMgSUQgKi8KLQl1OCByZXNlcnZlZDsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQl1MzIgaW50ZXJydXB0X2Jhc2U7CS8qIEdsb2NhbCBpbnRlcnJ1cHQgZm9yIFNBUElDIHN0YXJ0ICovCi0JdTY0IGFkZHJlc3M7CQkvKiBTQVBJQyBwaHlzaWNhbCBhZGRyZXNzICovCi19OworCXU4IHBjaV9leHBfd2FrOjE7CS8qIDE0OiAgICBTeXN0ZW0gc3VwcG9ydHMgUENJRVhQX1dBS0UgKFNUUy9FTikgYml0cyAoQUNQSSAzLjApICovCisJdTggdXNlX3BsYXRmb3JtX2Nsb2NrOjE7CS8qIDE1OiAgICBPU1BNIHNob3VsZCB1c2UgcGxhdGZvcm0tcHJvdmlkZWQgdGltZXIgKEFDUEkgMy4wKSAqLworCXU4IFM0cnRjX3N0c192YWxpZDoxOwkvKiAxNjogICAgQ29udGVudHMgb2YgUlRDX1NUUyB2YWxpZCBhZnRlciBTNCB3YWtlIChBQ1BJIDMuMCkgKi8KKwl1OCByZW1vdGVfcG93ZXJfb25fY2FwYWJsZToxOwkvKiAxNzogICAgU3lzdGVtIGlzIGNvbXBhdGlibGUgd2l0aCByZW1vdGUgcG93ZXIgb24gKEFDUEkgMy4wKSAqLworCXU4IGZvcmNlX2FwaWNfY2x1c3Rlcl9tb2RlbDoxOwkvKiAxODogICAgQWxsIGxvY2FsIEFQSUNzIG11c3QgdXNlIGNsdXN0ZXIgbW9kZWwgKEFDUEkgMy4wKSAqLworCXU4IGZvcmNlX2FwaWNfcGh5c2ljYWxfZGVzdGluYXRpb25fbW9kZToxOwkvKiAxOTogICBBbGwgbG9jYWwgeF9hUElDcyBtdXN0IHVzZSBwaHlzaWNhbCBkZXN0IG1vZGUgKEFDUEkgMy4wKSAqLworCSB1ODo0OwkJCS8qIDIwLTIzOiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCisJdTggcmVzZXJ2ZWQzOwkJLyogMjQtMzE6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KIAotc3RydWN0IG1hZHRfbG9jYWxfc2FwaWMgewotCUFQSUNfSEVBREVSX0RFRiB1OCBwcm9jZXNzb3JfaWQ7CS8qIEFDUEkgcHJvY2Vzc29yIGlkICovCi0JdTggbG9jYWxfc2FwaWNfaWQ7CS8qIFNBUElDIElEICovCi0JdTggbG9jYWxfc2FwaWNfZWlkOwkvKiBTQVBJQyBFSUQgKi8KLQl1OCByZXNlcnZlZFszXTsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQkgTE9DQUxfQVBJQ19GTEFHUyB1MzIgcHJvY2Vzc29yX3VJRDsJLyogTnVtZXJpYyBVSUQgLSBBQ1BJIDMuMCAqLwotCWNoYXIgcHJvY2Vzc29yX3VJRHN0cmluZ1sxXTsJLyogU3RyaW5nIFVJRCAgLSBBQ1BJIDMuMCAqLwotfTsKLQotc3RydWN0IG1hZHRfaW50ZXJydXB0X3NvdXJjZSB7Ci0JQVBJQ19IRUFERVJfREVGIE1QU19JTlRJX0ZMQUdTIHU4IGludGVycnVwdF90eXBlOwkvKiAxPVBNSSwgMj1JTklULCAzPWNvcnJlY3RlZCAqLwotCXU4IHByb2Nlc3Nvcl9pZDsJLyogUHJvY2Vzc29yIElEICovCi0JdTggcHJvY2Vzc29yX2VpZDsJLyogUHJvY2Vzc29yIEVJRCAqLwotCXU4IGlvX3NhcGljX3ZlY3RvcjsJLyogVmVjdG9yIHZhbHVlIGZvciBQTUkgaW50ZXJydXB0cyAqLwotCXUzMiBpbnRlcnJ1cHQ7CQkvKiBHbG9iYWwgc3lzdGVtIGludGVycnVwdCAqLwotCXUzMiBmbGFnczsJCS8qIEludGVycnVwdCBTb3VyY2UgRmxhZ3MgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgcmVzZXRfcmVnaXN0ZXI7CS8qIFJlc2V0IHJlZ2lzdGVyIGFkZHJlc3MgaW4gR0FTIGZvcm1hdCAqLworCXU4IHJlc2V0X3ZhbHVlOwkJLyogVmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlc2V0X3JlZ2lzdGVyIHBvcnQgdG8gcmVzZXQgdGhlIHN5c3RlbSAqLworCXU4IHJlc2VydmVkNFszXTsJLyogVGhlc2UgdGhyZWUgYnl0ZXMgbXVzdCBiZSB6ZXJvICovCisJdTY0IHhmaXJtd2FyZV9jdHJsOwkvKiA2NC1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiBGQUNTICovCisJdTY0IFhkc2R0OwkJLyogNjQtYml0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgRFNEVCAqLworCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4cG0xYV9ldnRfYmxrOwkvKiBFeHRlbmRlZCBQb3dlciBNZ3QgMWEgYWNwaV9ldmVudCBSZWcgQmxrIGFkZHJlc3MgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgeHBtMWJfZXZ0X2JsazsJLyogRXh0ZW5kZWQgUG93ZXIgTWd0IDFiIGFjcGlfZXZlbnQgUmVnIEJsayBhZGRyZXNzICovCisJc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIHhwbTFhX2NudF9ibGs7CS8qIEV4dGVuZGVkIFBvd2VyIE1ndCAxYSBDb250cm9sIFJlZyBCbGsgYWRkcmVzcyAqLworCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4cG0xYl9jbnRfYmxrOwkvKiBFeHRlbmRlZCBQb3dlciBNZ3QgMWIgQ29udHJvbCBSZWcgQmxrIGFkZHJlc3MgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgeHBtMl9jbnRfYmxrOwkvKiBFeHRlbmRlZCBQb3dlciBNZ3QgMiBDb250cm9sIFJlZyBCbGsgYWRkcmVzcyAqLworCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4cG1fdG1yX2JsazsJLyogRXh0ZW5kZWQgUG93ZXIgTWd0IFRpbWVyIEN0cmwgUmVnIEJsayBhZGRyZXNzICovCisJc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIHhncGUwX2JsazsJLyogRXh0ZW5kZWQgR2VuZXJhbCBQdXJwb3NlIGFjcGlfZXZlbnQgMCBSZWcgQmxrIGFkZHJlc3MgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgeGdwZTFfYmxrOwkvKiBFeHRlbmRlZCBHZW5lcmFsIFB1cnBvc2UgYWNwaV9ldmVudCAxIFJlZyBCbGsgYWRkcmVzcyAqLwogfTsKIAogLyoKLSAqIFNtYXJ0IEJhdHRlcnkKKyAqICJEb3duLXJldnZlZCIgQUNQSSAyLjAgRkFEVCBkZXNjcmlwdG9yCisgKiBEZWZpbmVkIGhlcmUgdG8gYWxsb3cgY29tcGlsZXIgdG8gZ2VuZXJhdGUgdGhlIGxlbmd0aCBvZiB0aGUgc3RydWN0CiAgKi8KLXN0cnVjdCBzbWFydF9iYXR0ZXJ5X3RhYmxlIHsKLQlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTMyIHdhcm5pbmdfbGV2ZWw7Ci0JdTMyIGxvd19sZXZlbDsKLQl1MzIgY3JpdGljYWxfbGV2ZWw7CitzdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjJfbWludXMgeworCUFDUElfRkFEVF9DT01NT04gdTMyIGZsYWdzOworCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyByZXNldF9yZWdpc3RlcjsJLyogUmVzZXQgcmVnaXN0ZXIgYWRkcmVzcyBpbiBHQVMgZm9ybWF0ICovCisJdTggcmVzZXRfdmFsdWU7CQkvKiBWYWx1ZSB0byB3cml0ZSB0byB0aGUgcmVzZXRfcmVnaXN0ZXIgcG9ydCB0byByZXNldCB0aGUgc3lzdGVtLiAqLworCXU4IHJlc2VydmVkN1szXTsJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwogfTsKIAorLyoKKyAqIEFDUEkgMS4wIEZBRFQKKyAqIERlZmluZWQgaGVyZSB0byBhbGxvdyBjb21waWxlciB0byBnZW5lcmF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJ1Y3QKKyAqLworc3RydWN0IGZhZHRfZGVzY3JpcHRvcl9yZXYxIHsKKwlBQ1BJX0ZBRFRfQ09NTU9OIHUzMiBmbGFnczsKK307CisKKy8qIEZBRFQ6IFByZWZlcmVkIFBvd2VyIE1hbmFnZW1lbnQgUHJvZmlsZXMgKi8KKworI2RlZmluZSBQTV9VTlNQRUNJRklFRCAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUE1fREVTS1RPUCAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFBNX01PQklMRSAgICAgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBQTV9XT1JLU1RBVElPTiAgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgUE1fRU5URVJQUklTRV9TRVJWRVIgICAgICAgICAgICA0CisjZGVmaW5lIFBNX1NPSE9fU0VSVkVSICAgICAgICAgICAgICAgICAgNQorI2RlZmluZSBQTV9BUFBMSUFOQ0VfUEMgICAgICAgICAgICAgICAgIDYKKworLyogRkFEVDogQm9vdCBBcmNoIEZsYWdzICovCisKKyNkZWZpbmUgQkFGX0xFR0FDWV9ERVZJQ0VTICAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgQkFGXzgwNDJfS0VZQk9BUkRfQ09OVFJPTExFUiAgICAweDAwMDIKKworI2RlZmluZSBGQURUMl9SRVZJU0lPTl9JRCAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgRkFEVDJfTUlOVVNfUkVWSVNJT05fSUQgICAgICAgICAyCisKKy8qIFJlc2V0IHRvIGRlZmF1bHQgcGFja2luZyAqLworCiAjcHJhZ21hIHBhY2soKQogCiAvKgorICogVGhpcyBtYWNybyBpcyB0ZW1wb3JhcnkgdW50aWwgdGhlIHRhYmxlIGJpdGZpZWxkIGZsYWcgZGVmaW5pdGlvbnMKKyAqIGFyZSByZW1vdmVkIGFuZCByZXBsYWNlZCBieSBhIEZsYWdzIGZpZWxkLgorICovCisjZGVmaW5lIEFDUElfRkxBR19PRkZTRVQoZCxmLG8pICAgICAgICAgKHU4KSAoQUNQSV9PRkZTRVQgKGQsZikgKyBcCisJCQkgIHNpemVvZigoKGQgKikwKS0+ZikgKyBvKQorLyoKKyAqIEdldCB0aGUgcmVtYWluaW5nIEFDUEkgdGFibGVzCisgKi8KKyNpbmNsdWRlICJhY3RibDEuaCIKKworLyoKICAqIEFDUEkgVGFibGUgaW5mb3JtYXRpb24uICBXZSBzYXZlIHRoZSB0YWJsZSBhZGRyZXNzLCBsZW5ndGgsCiAgKiBhbmQgdHlwZSBvZiBtZW1vcnkgYWxsb2NhdGlvbiAobWFwcGVkIG9yIGFsbG9jYXRlZCkgZm9yIGVhY2gKICAqIHRhYmxlIGZvciAxKSB3aGVuIHdlIGV4aXQsIGFuZCAyKSBpZiBhIG5ldyB0YWJsZSBpcyBpbnN0YWxsZWQKQEAgLTI5MCwyNyArMzU0LDE3IEBACiAJdTggZmxhZ3M7CiB9OwogCi0vKgotICogR2V0IHRoZSBBQ1BJIHZlcnNpb24tc3BlY2lmaWMgdGFibGVzCi0gKi8KLSNpbmNsdWRlICJhY3RibDEuaCIJCS8qIEFjcGkgMS4wIHRhYmxlIGRlZmluaXRpb25zICovCi0jaW5jbHVkZSAiYWN0YmwyLmgiCQkvKiBBY3BpIDIuMCB0YWJsZSBkZWZpbml0aW9ucyAqLwotCiBleHRlcm4gdTggYWNwaV9mYWR0X2lzX3YxOwkvKiBpcyBzZXQgdG8gMSBpZiBGQURUIGlzIHJldmlzaW9uIDEsCiAJCQkJICogbmVlZGVkIGZvciBjZXJ0YWluIHdvcmthcm91bmRzICovCisvKiBNYWNyb3MgdXNlZCB0byBnZW5lcmF0ZSBvZmZzZXRzIHRvIHNwZWNpZmljIHRhYmxlIGZpZWxkcyAqLwogCi0jcHJhZ21hIHBhY2soMSkKLS8qCi0gKiBIaWdoIHBlcmZvcm1hbmNlIHRpbWVyCi0gKi8KLXN0cnVjdCBocGV0X3RhYmxlIHsKLQlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTMyIGhhcmR3YXJlX2lkOwotCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyBiYXNlX2FkZHJlc3M7Ci0JdTggaHBldF9udW1iZXI7Ci0JdTE2IGNsb2NrX3RpY2s7Ci0JdTggYXR0cmlidXRlczsKLX07CisjZGVmaW5lIEFDUElfRkFDU19PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGZhY3NfZGVzY3JpcHRvcixmKQorI2RlZmluZSBBQ1BJX0ZBRFRfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IsIGYpCisjZGVmaW5lIEFDUElfR0FTX09GRlNFVChmKSAgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzLGYpCisjZGVmaW5lIEFDUElfSERSX09GRlNFVChmKSAgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyLGYpCisjZGVmaW5lIEFDUElfUlNEUF9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IHJzZHBfZGVzY3JpcHRvcixmKQogCi0jcHJhZ21hIHBhY2soKQorI2RlZmluZSBBQ1BJX0ZBRFRfRkxBR19PRkZTRVQoZixvKSAgICAgIEFDUElfRkxBR19PRkZTRVQgKHN0cnVjdCBmYWR0X2Rlc2NyaXB0b3IsZixvKQorI2RlZmluZSBBQ1BJX0ZBQ1NfRkxBR19PRkZTRVQoZixvKSAgICAgIEFDUElfRkxBR19PRkZTRVQgKHN0cnVjdCBmYWNzX2Rlc2NyaXB0b3IsZixvKQogCiAjZW5kaWYJCQkJLyogX19BQ1RCTF9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3RibDEuaCBiL2luY2x1ZGUvYWNwaS9hY3RibDEuaAppbmRleCBjZDQyOGQ1Li43NDVhNjQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWN0YmwxLmgKKysrIGIvaW5jbHVkZS9hY3BpL2FjdGJsMS5oCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKLSAqIE5hbWU6IGFjdGJsMS5oIC0gQUNQSSAxLjAgdGFibGVzCisgKiBOYW1lOiBhY3RibDEuaCAtIEFkZGl0aW9uYWwgQUNQSSB0YWJsZSBkZWZpbml0aW9ucwogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtNDQsOTIgKzQ0LDU5OSBAQAogI2lmbmRlZiBfX0FDVEJMMV9IX18KICNkZWZpbmUgX19BQ1RCTDFfSF9fCiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQWRkaXRpb25hbCBBQ1BJIFRhYmxlcworICoKKyAqIFRoZXNlIHRhYmxlcyBhcmUgbm90IGNvbnN1bWVkIGRpcmVjdGx5IGJ5IHRoZSBBQ1BJQ0Egc3Vic3lzdGVtLCBidXQgYXJlCisgKiBpbmNsdWRlZCBoZXJlIHRvIHN1cHBvcnQgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZSBBTUwgZGlzYXNzZW1ibGVyLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBWYWx1ZXMgZm9yIGRlc2NyaXB0aW9uIHRhYmxlIGhlYWRlciBzaWduYXR1cmVzLiBVc2VmdWwgYmVjYXVzZSB0aGV5IG1ha2UKKyAqIGl0IG1vcmUgZGlmZmljdWx0IHRvIGluYWR2ZXJ0ZW50bHkgdHlwZSBpbiB0aGUgd3Jvbmcgc2lnbmF0dXJlLgorICovCisjZGVmaW5lIEFDUElfU0lHX0FTRiAgICAgICAgICAgICJBU0YhIgkvKiBBbGVydCBTdGFuZGFyZCBGb3JtYXQgdGFibGUgKi8KKyNkZWZpbmUgQUNQSV9TSUdfQk9PVCAgICAgICAgICAgIkJPT1QiCS8qIFNpbXBsZSBCb290IEZsYWcgVGFibGUgKi8KKyNkZWZpbmUgQUNQSV9TSUdfQ1BFUCAgICAgICAgICAgIkNQRVAiCS8qIENvcnJlY3RlZCBQbGF0Zm9ybSBFcnJvciBQb2xsaW5nIHRhYmxlICovCisjZGVmaW5lIEFDUElfU0lHX0RCR1AgICAgICAgICAgICJEQkdQIgkvKiBEZWJ1ZyBQb3J0IHRhYmxlICovCisjZGVmaW5lIEFDUElfU0lHX0VDRFQgICAgICAgICAgICJFQ0RUIgkvKiBFbWJlZGRlZCBDb250cm9sbGVyIEJvb3QgUmVzb3VyY2VzIFRhYmxlICovCisjZGVmaW5lIEFDUElfU0lHX0hQRVQgICAgICAgICAgICJIUEVUIgkvKiBIaWdoIFByZWNpc2lvbiBFdmVudCBUaW1lciB0YWJsZSAqLworI2RlZmluZSBBQ1BJX1NJR19NQURUICAgICAgICAgICAiQVBJQyIJLyogTXVsdGlwbGUgQVBJQyBEZXNjcmlwdGlvbiBUYWJsZSAqLworI2RlZmluZSBBQ1BJX1NJR19NQ0ZHICAgICAgICAgICAiTUNGRyIJLyogUENJIE1lbW9yeSBNYXBwZWQgQ29uZmlndXJhdGlvbiB0YWJsZSAqLworI2RlZmluZSBBQ1BJX1NJR19TQlNUICAgICAgICAgICAiU0JTVCIJLyogU21hcnQgQmF0dGVyeSBTcGVjaWZpY2F0aW9uIFRhYmxlICovCisjZGVmaW5lIEFDUElfU0lHX1NMSVQgICAgICAgICAgICJTTElUIgkvKiBTeXN0ZW0gTG9jYWxpdHkgRGlzdGFuY2UgSW5mb3JtYXRpb24gVGFibGUgKi8KKyNkZWZpbmUgQUNQSV9TSUdfU1BDUiAgICAgICAgICAgIlNQQ1IiCS8qIFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gdGFibGUgKi8KKyNkZWZpbmUgQUNQSV9TSUdfU1BNSSAgICAgICAgICAgIlNQTUkiCS8qIFNlcnZlciBQbGF0Zm9ybSBNYW5hZ2VtZW50IEludGVyZmFjZSB0YWJsZSAqLworI2RlZmluZSBBQ1BJX1NJR19TUkFUICAgICAgICAgICAiU1JBVCIJLyogU3lzdGVtIFJlc291cmNlIEFmZmluaXR5IFRhYmxlICovCisjZGVmaW5lIEFDUElfU0lHX1RDUEEgICAgICAgICAgICJUQ1BBIgkvKiBUcnVzdGVkIENvbXB1dGluZyBQbGF0Zm9ybSBBbGxpYW5jZSB0YWJsZSAqLworI2RlZmluZSBBQ1BJX1NJR19XRFJUICAgICAgICAgICAiV0RSVCIJLyogV2F0Y2hkb2cgUmVzb3VyY2UgVGFibGUgKi8KKworLyogTGVnYWN5IG5hbWVzICovCisKKyNkZWZpbmUgQVBJQ19TSUcgICAgICAgICAgICAgICAgIkFQSUMiCS8qIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRpb24gVGFibGUgKi8KKyNkZWZpbmUgQk9PVF9TSUcgICAgICAgICAgICAgICAgIkJPT1QiCS8qIFNpbXBsZSBCb290IEZsYWcgVGFibGUgKi8KKyNkZWZpbmUgU0JTVF9TSUcgICAgICAgICAgICAgICAgIlNCU1QiCS8qIFNtYXJ0IEJhdHRlcnkgU3BlY2lmaWNhdGlvbiBUYWJsZSAqLworCisvKgorICogQWxsIHRhYmxlcyBtdXN0IGJlIGJ5dGUtcGFja2VkIHRvIG1hdGNoIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24sIHNpbmNlCisgKiB0aGUgdGFibGVzIGFyZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtIEJJT1MuCisgKi8KICNwcmFnbWEgcGFjaygxKQogCiAvKgotICogQUNQSSAxLjAgUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgKFJTRFQpCisgKiBOb3RlIGFib3V0IGJpdGZpZWxkczogVGhlIHU4IHR5cGUgaXMgdXNlZCBmb3IgYml0ZmllbGRzIGluIEFDUEkgdGFibGVzLgorICogVGhpcyBpcyB0aGUgb25seSB0eXBlIHRoYXQgaXMgZXZlbiByZW1vdGVseSBwb3J0YWJsZS4gQW55dGhpbmcgZWxzZSBpcyBub3QKKyAqIHBvcnRhYmxlLCBzbyBkbyBub3QgdXNlIGFueSBvdGhlciBiaXRmaWVsZCB0eXBlcy4KICAqLwotc3RydWN0IHJzZHRfZGVzY3JpcHRvcl9yZXYxIHsKLQlBQ1BJX1RBQkxFX0hFQURFUl9ERUYJLyogQUNQSSBjb21tb24gdGFibGUgaGVhZGVyICovCi0JdTMyIHRhYmxlX29mZnNldF9lbnRyeVsxXTsJLyogQXJyYXkgb2YgcG9pbnRlcnMgdG8gQUNQSSB0YWJsZXMgKi8KLX07CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQVNGIC0gQWxlcnQgU3RhbmRhcmQgRm9ybWF0IHRhYmxlIChTaWduYXR1cmUgIkFTRiEiKQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCBhY3BpX3RhYmxlX2FzZiB7CitBQ1BJX1RBQkxFX0hFQURFUl9ERUZ9OworCisjZGVmaW5lIEFDUElfQVNGX0hFQURFUl9ERUYgXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTsgXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQ7IFwKKwl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKKworc3RydWN0IGFjcGlfYXNmX2hlYWRlciB7CitBQ1BJX0FTRl9IRUFERVJfREVGfTsKKworLyogVmFsdWVzIGZvciBUeXBlIGZpZWxkICovCisKKyNkZWZpbmUgQVNGX0lORk8gICAgICAgICAgICAgICAgMAorI2RlZmluZSBBU0ZfQUxFUlQgICAgICAgICAgICAgICAxCisjZGVmaW5lIEFTRl9DT05UUk9MICAgICAgICAgICAgIDIKKyNkZWZpbmUgQVNGX0JPT1QgICAgICAgICAgICAgICAgMworI2RlZmluZSBBU0ZfQUREUkVTUyAgICAgICAgICAgICA0CisjZGVmaW5lIEFTRl9SRVNFUlZFRCAgICAgICAgICAgIDUKIAogLyoKLSAqIEFDUEkgMS4wIEZpcm13YXJlIEFDUEkgQ29udHJvbCBTdHJ1Y3R1cmUgKEZBQ1MpCisgKiBBU0Ygc3VidGFibGVzCiAgKi8KLXN0cnVjdCBmYWNzX2Rlc2NyaXB0b3JfcmV2MSB7Ci0JY2hhciBzaWduYXR1cmVbNF07CS8qIEFTQ0lJIHRhYmxlIHNpZ25hdHVyZSAqLwotCXUzMiBsZW5ndGg7CQkvKiBMZW5ndGggb2Ygc3RydWN0dXJlIGluIGJ5dGVzICovCi0JdTMyIGhhcmR3YXJlX3NpZ25hdHVyZTsJLyogSGFyZHdhcmUgY29uZmlndXJhdGlvbiBzaWduYXR1cmUgKi8KLQl1MzIgZmlybXdhcmVfd2FraW5nX3ZlY3RvcjsJLyogQUNQSSBPUyB3YWtpbmcgdmVjdG9yICovCi0JdTMyIGdsb2JhbF9sb2NrOwkvKiBHbG9iYWwgTG9jayAqLworCisvKiAwOiBBU0YgSW5mb3JtYXRpb24gKi8KKworc3RydWN0IGFjcGlfYXNmX2luZm8geworCUFDUElfQVNGX0hFQURFUl9ERUYgdTggbWluX3Jlc2V0X3ZhbHVlOworCXU4IG1pbl9wb2xsX2ludGVydmFsOworCXUxNiBzeXN0ZW1faWQ7CisJdTMyIG1mZ19pZDsKKwl1OCBmbGFnczsKKwl1OCByZXNlcnZlZDJbM107Cit9OworCisvKiAxOiBBU0YgQWxlcnRzICovCisKK3N0cnVjdCBhY3BpX2FzZl9hbGVydCB7CisJQUNQSV9BU0ZfSEVBREVSX0RFRiB1OCBhc3NlcnRfbWFzazsKKwl1OCBkZWFzc2VydF9tYXNrOworCXU4IGFsZXJ0czsKKwl1OCBkYXRhX2xlbmd0aDsKKwl1OCBhcnJheVsxXTsKK307CisKKy8qIDI6IEFTRiBSZW1vdGUgQ29udHJvbCAqLworCitzdHJ1Y3QgYWNwaV9hc2ZfcmVtb3RlIHsKKwlBQ1BJX0FTRl9IRUFERVJfREVGIHU4IGNvbnRyb2xzOworCXU4IGRhdGFfbGVuZ3RoOworCXUxNiByZXNlcnZlZDI7CisJdTggYXJyYXlbMV07Cit9OworCisvKiAzOiBBU0YgUk1DUCBCb290IE9wdGlvbnMgKi8KKworc3RydWN0IGFjcGlfYXNmX3JtY3AgeworCUFDUElfQVNGX0hFQURFUl9ERUYgdTggY2FwYWJpbGl0aWVzWzddOworCXU4IGNvbXBsZXRpb25fY29kZTsKKwl1MzIgZW50ZXJwcmlzZV9pZDsKKwl1OCBjb21tYW5kOworCXUxNiBwYXJhbWV0ZXI7CisJdTE2IGJvb3Rfb3B0aW9uczsKKwl1MTYgb2VtX3BhcmFtZXRlcnM7Cit9OworCisvKiA0OiBBU0YgQWRkcmVzcyAqLworCitzdHJ1Y3QgYWNwaV9hc2ZfYWRkcmVzcyB7CisJQUNQSV9BU0ZfSEVBREVSX0RFRiB1OCBlcHJvbV9hZGRyZXNzOworCXU4IGRldmljZXM7CisJdTggc21idXNfYWRkcmVzc2VzWzFdOworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBCT09UIC0gU2ltcGxlIEJvb3QgRmxhZyBUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCBhY3BpX3RhYmxlX2Jvb3QgeworCUFDUElfVEFCTEVfSEVBREVSX0RFRiB1OCBjbW9zX2luZGV4OwkvKiBJbmRleCBpbiBDTU9TIFJBTSBmb3IgdGhlIGJvb3QgcmVnaXN0ZXIgKi8KKwl1OCByZXNlcnZlZFszXTsKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ1BFUCAtIENvcnJlY3RlZCBQbGF0Zm9ybSBFcnJvciBQb2xsaW5nIHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfdGFibGVfY3BlcCB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHU2NCByZXNlcnZlZDsKK307CisKKy8qIFN1YnRhYmxlICovCisKK3N0cnVjdCBhY3BpX2NwZXBfcG9sbGluZyB7CisJdTggdHlwZTsKKwl1OCBsZW5ndGg7CisJdTggcHJvY2Vzc29yX2lkOwkvKiBQcm9jZXNzb3IgSUQgKi8KKwl1OCBwcm9jZXNzb3JfZWlkOwkvKiBQcm9jZXNzb3IgRUlEICovCisJdTMyIHBvbGxpbmdfaW50ZXJ2YWw7CS8qIFBvbGxpbmcgaW50ZXJ2YWwgKG1zZWMpICovCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERCR1AgLSBEZWJ1ZyBQb3J0IHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfdGFibGVfZGJncCB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHU4IGludGVyZmFjZV90eXBlOwkvKiAwPWZ1bGwgMTY1NTAsIDE9c3Vic2V0IG9mIDE2NTUwICovCisJdTggcmVzZXJ2ZWRbM107CisJc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIGRlYnVnX3BvcnQ7Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEVDRFQgLSBFbWJlZGRlZCBDb250cm9sbGVyIEJvb3QgUmVzb3VyY2VzIFRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGVjX2Jvb3RfcmVzb3VyY2VzIHsKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIGVjX2NvbnRyb2w7CS8qIEFkZHJlc3Mgb2YgRUMgY29tbWFuZC9zdGF0dXMgcmVnaXN0ZXIgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgZWNfZGF0YTsJLyogQWRkcmVzcyBvZiBFQyBkYXRhIHJlZ2lzdGVyICovCisJdTMyIHVpZDsJCS8qIFVuaXF1ZSBJRCAtIG11c3QgYmUgc2FtZSBhcyB0aGUgRUMgX1VJRCBtZXRob2QgKi8KKwl1OCBncGVfYml0OwkJLyogVGhlIEdQRSBmb3IgdGhlIEVDICovCisJdTggZWNfaWRbMV07CQkvKiBGdWxsIG5hbWVwYXRoIG9mIHRoZSBFQyBpbiB0aGUgQUNQSSBuYW1lc3BhY2UgKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogSFBFVCAtIEhpZ2ggUHJlY2lzaW9uIEV2ZW50IFRpbWVyIHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfaHBldF90YWJsZSB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHUzMiBoYXJkd2FyZV9pZDsJLyogSGFyZHdhcmUgSUQgb2YgZXZlbnQgdGltZXIgYmxvY2sgKi8KKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgYmFzZV9hZGRyZXNzOwkvKiBBZGRyZXNzIG9mIGV2ZW50IHRpbWVyIGJsb2NrICovCisJdTggaHBldF9udW1iZXI7CQkvKiBIUEVUIHNlcXVlbmNlIG51bWJlciAqLworCXUxNiBjbG9ja190aWNrOwkJLyogTWFpbiBjb3VudGVyIG1pbiB0aWNrLCBwZXJpb2RpYyBtb2RlICovCisJdTggYXR0cmlidXRlczsKK307CisKKyNpZiAwCQkJCS8qIEhQRVQgZmxhZ3MgdG8gYmUgY29udmVydGVkIHRvIG1hY3JvcyAqLworc3RydWN0IHsJCQkvKiBGbGFncyAoOCBiaXRzKSAqLworCXU4IHBhZ2VfcHJvdGVjdDoxOwkvKiAwMDogICAgTm8gcGFnZSBwcm90ZWN0aW9uICovCisJdTggcGFnZV9wcm90ZWN0NDoxOwkvKiAwMTogICAgNF9rQiBwYWdlIHByb3RlY3RlZCAqLworCXU4IHBhZ2VfcHJvdGVjdDY0OjE7CS8qIDAyOiAgICA2NF9rQiBwYWdlIHByb3RlY3RlZCAqLworCSB1ODo1OwkJCS8qIDAzLTA3OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCit9IGZsYWdzOworI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogTUFEVCAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRpb24gVGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdHJ1Y3QgbXVsdGlwbGVfYXBpY190YWJsZSB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHUzMiBsb2NhbF9hcGljX2FkZHJlc3M7CS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgbG9jYWwgQVBJQyAqLwogCiAJLyogRmxhZ3MgKDMyIGJpdHMpICovCiAKLQl1OCBTNGJpb3NfZjoxOwkJLyogMDA6ICAgIFM0QklPUyBzdXBwb3J0IGlzIHByZXNlbnQgKi8KKwl1OCBQQ0FUY29tcGF0OjE7CS8qIDAwOiAgICBTeXN0ZW0gYWxzbyBoYXMgZHVhbCA4MjU5cyAqLwogCSB1ODo3OwkJCS8qIDAxLTA3OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCiAJdTggcmVzZXJ2ZWQxWzNdOwkvKiAwOC0zMTogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCi0JdTggcmVzZXJ2ZWQyWzQwXTsJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwogfTsKIAorLyogVmFsdWVzIGZvciBNQURUIFBDQVRDb21wYXQgKi8KKworI2RlZmluZSBEVUFMX1BJQyAgICAgICAgICAgICAgICAwCisjZGVmaW5lIE1VTFRJUExFX0FQSUMgICAgICAgICAgIDEKKworLyogQ29tbW9uIE1BRFQgU3ViLXRhYmxlIGhlYWRlciAqLworCisjZGVmaW5lIEFQSUNfSEVBREVSX0RFRiBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7CisKK3N0cnVjdCBhcGljX2hlYWRlciB7CitBUElDX0hFQURFUl9ERUZ9OworCisvKiBWYWx1ZXMgZm9yIFR5cGUgaW4gc3RydWN0IGFwaWNfaGVhZGVyICovCisKKyNkZWZpbmUgQVBJQ19QUk9DRVNTT1IgICAgICAgICAgMAorI2RlZmluZSBBUElDX0lPICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIEFQSUNfWFJVUFRfT1ZFUlJJREUgICAgIDIKKyNkZWZpbmUgQVBJQ19OTUkgICAgICAgICAgICAgICAgMworI2RlZmluZSBBUElDX0xPQ0FMX05NSSAgICAgICAgICA0CisjZGVmaW5lIEFQSUNfQUREUkVTU19PVkVSUklERSAgIDUKKyNkZWZpbmUgQVBJQ19JT19TQVBJQyAgICAgICAgICAgNgorI2RlZmluZSBBUElDX0xPQ0FMX1NBUElDICAgICAgICA3CisjZGVmaW5lIEFQSUNfWFJVUFRfU09VUkNFICAgICAgIDgKKyNkZWZpbmUgQVBJQ19SRVNFUlZFRCAgICAgICAgICAgOQkvKiA5IGFuZCBncmVhdGVyIGFyZSByZXNlcnZlZCAqLworCisvKiBGbGFnIGRlZmluaXRpb25zIGZvciBNQURUIHN1Yi10YWJsZXMgKi8KKworI2RlZmluZSBBQ1BJX01BRFRfSUZMQUdTIC8qIElOVEkgZmxhZ3MgKDE2IGJpdHMpICovIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5ICAgICAgICA6IDI7ICAgIC8qIDAwLTAxOiBQb2xhcml0eSBvZiBBUElDIEkvTyBpbnB1dCBzaWduYWxzICovXAorCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9tb2RlICAgIDogMjsgICAgLyogMDItMDM6IFRyaWdnZXIgbW9kZSBvZiBBUElDIGlucHV0IHNpZ25hbHMgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAvKiAwNC0wNzogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkMTsJLyogMDgtMTU6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KKworI2RlZmluZSBBQ1BJX01BRFRfTEZMQUdTIC8qIExvY2FsIFNhcGljIGZsYWdzICgzMiBiaXRzKSAqLyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JfZW5hYmxlZDogMTsgICAvKiAwMDogICAgUHJvY2Vzc29yIGlzIHVzYWJsZSBpZiBzZXQgKi9cCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA3OyAgICAvKiAwMS0wNzogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqL1wKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkMlszXTsJLyogMDgtMzE6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KKworLyogVmFsdWVzIGZvciBNUFMgSU5USSBmbGFncyAqLworCisjZGVmaW5lIFBPTEFSSVRZX0NPTkZPUk1TICAgICAgIDAKKyNkZWZpbmUgUE9MQVJJVFlfQUNUSVZFX0hJR0ggICAgMQorI2RlZmluZSBQT0xBUklUWV9SRVNFUlZFRCAgICAgICAyCisjZGVmaW5lIFBPTEFSSVRZX0FDVElWRV9MT1cgICAgIDMKKworI2RlZmluZSBUUklHR0VSX0NPTkZPUk1TICAgICAgICAwCisjZGVmaW5lIFRSSUdHRVJfRURHRSAgICAgICAgICAgIDEKKyNkZWZpbmUgVFJJR0dFUl9SRVNFUlZFRCAgICAgICAgMgorI2RlZmluZSBUUklHR0VSX0xFVkVMICAgICAgICAgICAzCisKIC8qCi0gKiBBQ1BJIDEuMCBGaXhlZCBBQ1BJIERlc2NyaXB0aW9uIFRhYmxlIChGQURUKQorICogTUFEVCBTdWItdGFibGVzLCBjb3JyZXNwb25kIHRvIFR5cGUgaW4gc3RydWN0IGFwaWNfaGVhZGVyCiAgKi8KLXN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MSB7Ci0JQUNQSV9UQUJMRV9IRUFERVJfREVGCS8qIEFDUEkgY29tbW9uIHRhYmxlIGhlYWRlciAqLwotCXUzMiBmaXJtd2FyZV9jdHJsOwkvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIEZBQ1MgKi8KLQl1MzIgZHNkdDsJCS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgRFNEVCAqLwotCXU4IG1vZGVsOwkJLyogU3lzdGVtIEludGVycnVwdCBNb2RlbCAqLwotCXU4IHJlc2VydmVkMTsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQl1MTYgc2NpX2ludDsJCS8qIFN5c3RlbSB2ZWN0b3Igb2YgU0NJIGludGVycnVwdCAqLwotCXUzMiBzbWlfY21kOwkJLyogUG9ydCBhZGRyZXNzIG9mIFNNSSBjb21tYW5kIHBvcnQgKi8KLQl1OCBhY3BpX2VuYWJsZTsJCS8qIFZhbHVlIHRvIHdyaXRlIHRvIHNtaV9jbWQgdG8gZW5hYmxlIEFDUEkgKi8KLQl1OCBhY3BpX2Rpc2FibGU7CS8qIFZhbHVlIHRvIHdyaXRlIHRvIHNtaV9jbWQgdG8gZGlzYWJsZSBBQ1BJICovCi0JdTggUzRiaW9zX3JlcTsJCS8qIFZhbHVlIHRvIHdyaXRlIHRvIFNNSSBDTUQgdG8gZW50ZXIgUzRCSU9TIHN0YXRlICovCi0JdTggcmVzZXJ2ZWQyOwkJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCXUzMiBwbTFhX2V2dF9ibGs7CS8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgMWEgYWNwaV9ldmVudCBSZWcgQmxrICovCi0JdTMyIHBtMWJfZXZ0X2JsazsJLyogUG9ydCBhZGRyZXNzIG9mIFBvd2VyIE1ndCAxYiBhY3BpX2V2ZW50IFJlZyBCbGsgKi8KLQl1MzIgcG0xYV9jbnRfYmxrOwkvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDFhIENvbnRyb2wgUmVnIEJsayAqLwotCXUzMiBwbTFiX2NudF9ibGs7CS8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgMWIgQ29udHJvbCBSZWcgQmxrICovCi0JdTMyIHBtMl9jbnRfYmxrOwkvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDIgQ29udHJvbCBSZWcgQmxrICovCi0JdTMyIHBtX3Rtcl9ibGs7CQkvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IFRpbWVyIEN0cmwgUmVnIEJsayAqLwotCXUzMiBncGUwX2JsazsJCS8qIFBvcnQgYWRkciBvZiBHZW5lcmFsIFB1cnBvc2UgYWNwaV9ldmVudCAwIFJlZyBCbGsgKi8KLQl1MzIgZ3BlMV9ibGs7CQkvKiBQb3J0IGFkZHIgb2YgR2VuZXJhbCBQdXJwb3NlIGFjcGlfZXZlbnQgMSBSZWcgQmxrICovCi0JdTggcG0xX2V2dF9sZW47CQkvKiBCeXRlIGxlbmd0aCBvZiBwb3J0cyBhdCBwbTFfeF9ldnRfYmxrICovCi0JdTggcG0xX2NudF9sZW47CQkvKiBCeXRlIGxlbmd0aCBvZiBwb3J0cyBhdCBwbTFfeF9jbnRfYmxrICovCi0JdTggcG0yX2NudF9sZW47CQkvKiBCeXRlIExlbmd0aCBvZiBwb3J0cyBhdCBwbTJfY250X2JsayAqLwotCXU4IHBtX3RtX2xlbjsJCS8qIEJ5dGUgTGVuZ3RoIG9mIHBvcnRzIGF0IHBtX3RtX2JsayAqLwotCXU4IGdwZTBfYmxrX2xlbjsJLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgZ3BlMF9ibGsgKi8KLQl1OCBncGUxX2Jsa19sZW47CS8qIEJ5dGUgTGVuZ3RoIG9mIHBvcnRzIGF0IGdwZTFfYmxrICovCi0JdTggZ3BlMV9iYXNlOwkJLyogT2Zmc2V0IGluIGdwZSBtb2RlbCB3aGVyZSBncGUxIGV2ZW50cyBzdGFydCAqLwotCXU4IHJlc2VydmVkMzsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQl1MTYgcGx2bDJfbGF0OwkJLyogV29yc3QgY2FzZSBIVyBsYXRlbmN5IHRvIGVudGVyL2V4aXQgQzIgc3RhdGUgKi8KLQl1MTYgcGx2bDNfbGF0OwkJLyogV29yc3QgY2FzZSBIVyBsYXRlbmN5IHRvIGVudGVyL2V4aXQgQzMgc3RhdGUgKi8KLQl1MTYgZmx1c2hfc2l6ZTsJCS8qIFNpemUgb2YgYXJlYSByZWFkIHRvIGZsdXNoIGNhY2hlcyAqLwotCXUxNiBmbHVzaF9zdHJpZGU7CS8qIFN0cmlkZSB1c2VkIGluIGZsdXNoaW5nIGNhY2hlcyAqLwotCXU4IGR1dHlfb2Zmc2V0OwkJLyogQml0IGxvY2F0aW9uIG9mIGR1dHkgY3ljbGUgZmllbGQgaW4gcF9jbnQgcmVnICovCi0JdTggZHV0eV93aWR0aDsJCS8qIEJpdCB3aWR0aCBvZiBkdXR5IGN5Y2xlIGZpZWxkIGluIHBfY250IHJlZyAqLwotCXU4IGRheV9hbHJtOwkJLyogSW5kZXggdG8gZGF5LW9mLW1vbnRoIGFsYXJtIGluIFJUQyBDTU9TIFJBTSAqLwotCXU4IG1vbl9hbHJtOwkJLyogSW5kZXggdG8gbW9udGgtb2YteWVhciBhbGFybSBpbiBSVEMgQ01PUyBSQU0gKi8KLQl1OCBjZW50dXJ5OwkJLyogSW5kZXggdG8gY2VudHVyeSBpbiBSVEMgQ01PUyBSQU0gKi8KLQl1OCByZXNlcnZlZDRbM107CS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KKworLyogMDogcHJvY2Vzc29yIEFQSUMgKi8KKworc3RydWN0IG1hZHRfcHJvY2Vzc29yX2FwaWMgeworCUFQSUNfSEVBREVSX0RFRiB1OCBwcm9jZXNzb3JfaWQ7CS8qIEFDUEkgcHJvY2Vzc29yIGlkICovCisJdTggbG9jYWxfYXBpY19pZDsJLyogUHJvY2Vzc29yJ3MgbG9jYWwgQVBJQyBpZCAqLworIEFDUElfTUFEVF9MRkxBR1N9OworCisvKiAxOiBJTyBBUElDICovCisKK3N0cnVjdCBtYWR0X2lvX2FwaWMgeworCUFQSUNfSEVBREVSX0RFRiB1OCBpb19hcGljX2lkOwkvKiBJL08gQVBJQyBJRCAqLworCXU4IHJlc2VydmVkOwkJLyogUmVzZXJ2ZWQgLSBtdXN0IGJlIHplcm8gKi8KKwl1MzIgYWRkcmVzczsJCS8qIEFQSUMgcGh5c2ljYWwgYWRkcmVzcyAqLworCXUzMiBpbnRlcnJ1cHQ7CQkvKiBHbG9iYWwgc3lzdGVtIGludGVycnVwdCB3aGVyZSBJTlRJIGxpbmVzIHN0YXJ0ICovCit9OworCisvKiAyOiBJbnRlcnJ1cHQgT3ZlcnJpZGUgKi8KKworc3RydWN0IG1hZHRfaW50ZXJydXB0X292ZXJyaWRlIHsKKwlBUElDX0hFQURFUl9ERUYgdTggYnVzOwkvKiAwIC0gSVNBICovCisJdTggc291cmNlOwkJLyogSW50ZXJydXB0IHNvdXJjZSAoSVJRKSAqLworCXUzMiBpbnRlcnJ1cHQ7CQkvKiBHbG9iYWwgc3lzdGVtIGludGVycnVwdCAqLworIEFDUElfTUFEVF9JRkxBR1N9OworCisvKiAzOiBOTUkgU291cmNlcyAqLworCitzdHJ1Y3QgbWFkdF9ubWlfc291cmNlIHsKKwlBUElDX0hFQURFUl9ERUYgQUNQSV9NQURUX0lGTEFHUyB1MzIgaW50ZXJydXB0OwkvKiBHbG9iYWwgc3lzdGVtIGludGVycnVwdCAqLworfTsKKworLyogNDogTG9jYWwgQVBJQyBOTUkgKi8KKworc3RydWN0IG1hZHRfbG9jYWxfYXBpY19ubWkgeworCUFQSUNfSEVBREVSX0RFRiB1OCBwcm9jZXNzb3JfaWQ7CS8qIEFDUEkgcHJvY2Vzc29yIGlkICovCisJQUNQSV9NQURUX0lGTEFHUyB1OCBsaW50OwkvKiBMSU5UbiB0byB3aGljaCBOTUkgaXMgY29ubmVjdGVkICovCit9OworCisvKiA1OiBBZGRyZXNzIE92ZXJyaWRlICovCisKK3N0cnVjdCBtYWR0X2FkZHJlc3Nfb3ZlcnJpZGUgeworCUFQSUNfSEVBREVSX0RFRiB1MTYgcmVzZXJ2ZWQ7CS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KKwl1NjQgYWRkcmVzczsJCS8qIEFQSUMgcGh5c2ljYWwgYWRkcmVzcyAqLworfTsKKworLyogNjogSS9PIFNhcGljICovCisKK3N0cnVjdCBtYWR0X2lvX3NhcGljIHsKKwlBUElDX0hFQURFUl9ERUYgdTggaW9fc2FwaWNfaWQ7CS8qIEkvTyBTQVBJQyBJRCAqLworCXU4IHJlc2VydmVkOwkJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLworCXUzMiBpbnRlcnJ1cHRfYmFzZTsJLyogR2xvY2FsIGludGVycnVwdCBmb3IgU0FQSUMgc3RhcnQgKi8KKwl1NjQgYWRkcmVzczsJCS8qIFNBUElDIHBoeXNpY2FsIGFkZHJlc3MgKi8KK307CisKKy8qIDc6IExvY2FsIFNhcGljICovCisKK3N0cnVjdCBtYWR0X2xvY2FsX3NhcGljIHsKKwlBUElDX0hFQURFUl9ERUYgdTggcHJvY2Vzc29yX2lkOwkvKiBBQ1BJIHByb2Nlc3NvciBpZCAqLworCXU4IGxvY2FsX3NhcGljX2lkOwkvKiBTQVBJQyBJRCAqLworCXU4IGxvY2FsX3NhcGljX2VpZDsJLyogU0FQSUMgRUlEICovCisJdTggcmVzZXJ2ZWRbM107CQkvKiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCisJIEFDUElfTUFEVF9MRkxBR1MgdTMyIHByb2Nlc3Nvcl91SUQ7CS8qIE51bWVyaWMgVUlEIC0gQUNQSSAzLjAgKi8KKwljaGFyIHByb2Nlc3Nvcl91SURzdHJpbmdbMV07CS8qIFN0cmluZyBVSUQgIC0gQUNQSSAzLjAgKi8KK307CisKKy8qIDg6IFBsYXRmb3JtIEludGVycnVwdCBTb3VyY2UgKi8KKworc3RydWN0IG1hZHRfaW50ZXJydXB0X3NvdXJjZSB7CisJQVBJQ19IRUFERVJfREVGIEFDUElfTUFEVF9JRkxBR1MgdTggaW50ZXJydXB0X3R5cGU7CS8qIDE9UE1JLCAyPUlOSVQsIDM9Y29ycmVjdGVkICovCisJdTggcHJvY2Vzc29yX2lkOwkvKiBQcm9jZXNzb3IgSUQgKi8KKwl1OCBwcm9jZXNzb3JfZWlkOwkvKiBQcm9jZXNzb3IgRUlEICovCisJdTggaW9fc2FwaWNfdmVjdG9yOwkvKiBWZWN0b3IgdmFsdWUgZm9yIFBNSSBpbnRlcnJ1cHRzICovCisJdTMyIGludGVycnVwdDsJCS8qIEdsb2JhbCBzeXN0ZW0gaW50ZXJydXB0ICovCisJdTMyIGZsYWdzOwkJLyogSW50ZXJydXB0IFNvdXJjZSBGbGFncyAqLworfTsKKworI2lmZGVmIERVUExJQ0FURV9ERUZJTklUSU9OX1dJVEhfTElOVVhfQUNQSV9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIE1DRkcgLSBQQ0kgTWVtb3J5IE1hcHBlZCBDb25maWd1cmF0aW9uIHRhYmxlIGFuZCBzdWItdGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdHJ1Y3QgYWNwaV90YWJsZV9tY2ZnIHsKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTggcmVzZXJ2ZWRbOF07Cit9OworCitzdHJ1Y3QgYWNwaV9tY2ZnX2FsbG9jYXRpb24geworCXU2NCBiYXNlX2FkZHJlc3M7CS8qIEJhc2UgYWRkcmVzcywgcHJvY2Vzc29yLXJlbGF0aXZlICovCisJdTE2IHBjaV9zZWdtZW50OwkvKiBQQ0kgc2VnbWVudCBncm91cCBudW1iZXIgKi8KKwl1OCBzdGFydF9idXNfbnVtYmVyOwkvKiBTdGFydGluZyBQQ0kgQnVzIG51bWJlciAqLworCXU4IGVuZF9idXNfbnVtYmVyOwkvKiBGaW5hbCBQQ0kgQnVzIG51bWJlciAqLworCXUzMiByZXNlcnZlZDsKK307CisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTQlNUIC0gU21hcnQgQmF0dGVyeSBTcGVjaWZpY2F0aW9uIFRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IHNtYXJ0X2JhdHRlcnlfdGFibGUgeworCUFDUElfVEFCTEVfSEVBREVSX0RFRiB1MzIgd2FybmluZ19sZXZlbDsKKwl1MzIgbG93X2xldmVsOworCXUzMiBjcml0aWNhbF9sZXZlbDsKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0xJVCAtIFN5c3RlbSBMb2NhbGl0eSBEaXN0YW5jZSBJbmZvcm1hdGlvbiBUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCBzeXN0ZW1fbG9jYWxpdHlfaW5mbyB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHU2NCBsb2NhbGl0eV9jb3VudDsKKwl1OCBlbnRyeVsxXVsxXTsKK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU1BDUiAtIFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gdGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdHJ1Y3QgYWNwaV90YWJsZV9zcGNyIHsKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTggaW50ZXJmYWNlX3R5cGU7CS8qIDA9ZnVsbCAxNjU1MCwgMT1zdWJzZXQgb2YgMTY1NTAgKi8KKwl1OCByZXNlcnZlZFszXTsKKwlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3Mgc2VyaWFsX3BvcnQ7CisJdTggaW50ZXJydXB0X3R5cGU7CisJdTggcGNfaW50ZXJydXB0OworCXUzMiBpbnRlcnJ1cHQ7CisJdTggYmF1ZF9yYXRlOworCXU4IHBhcml0eTsKKwl1OCBzdG9wX2JpdHM7CisJdTggZmxvd19jb250cm9sOworCXU4IHRlcm1pbmFsX3R5cGU7CisJdTggcmVzZXJ2ZWQyOworCXUxNiBwY2lfZGV2aWNlX2lkOworCXUxNiBwY2lfdmVuZG9yX2lkOworCXU4IHBjaV9idXM7CisJdTggcGNpX2RldmljZTsKKwl1OCBwY2lfZnVuY3Rpb247CisJdTMyIHBjaV9mbGFnczsKKwl1OCBwY2lfc2VnbWVudDsKKwl1MzIgcmVzZXJ2ZWQzOworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTUE1JIC0gU2VydmVyIFBsYXRmb3JtIE1hbmFnZW1lbnQgSW50ZXJmYWNlIHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfdGFibGVfc3BtaSB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHU4IHJlc2VydmVkOworCXU4IGludGVyZmFjZV90eXBlOworCXUxNiBzcGVjX3JldmlzaW9uOwkvKiBWZXJzaW9uIG9mIElQTUkgKi8KKwl1OCBpbnRlcnJ1cHRfdHlwZTsKKwl1OCBncGVfbnVtYmVyOwkJLyogR1BFIGFzc2lnbmVkICovCisJdTggcmVzZXJ2ZWQyOworCXU4IHBjaV9kZXZpY2VfZmxhZzsKKwl1MzIgaW50ZXJydXB0OworCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyBpcG1pX3JlZ2lzdGVyOworCXU4IHBjaV9zZWdtZW50OworCXU4IHBjaV9idXM7CisJdTggcGNpX2RldmljZTsKKwl1OCBwY2lfZnVuY3Rpb247Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNSQVQgLSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdHJ1Y3Qgc3lzdGVtX3Jlc291cmNlX2FmZmluaXR5IHsKKwlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTMyIHJlc2VydmVkMTsJLyogTXVzdCBiZSB2YWx1ZSAnMScgKi8KKwl1NjQgcmVzZXJ2ZWQyOwkJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLworfTsKKworLyogU1JBVCBjb21tb24gc3ViLXRhYmxlIGhlYWRlciAqLworCisjZGVmaW5lIFNSQVRfU1VCVEFCTEVfSEVBREVSIFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7IFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKKworLyogVmFsdWVzIGZvciBUeXBlIGFib3ZlICovCisKKyNkZWZpbmUgU1JBVF9DUFVfQUZGSU5JVFkgICAgICAgMAorI2RlZmluZSBTUkFUX01FTU9SWV9BRkZJTklUWSAgICAxCisjZGVmaW5lIFNSQVRfUkVTRVJWRUQgICAgICAgICAgIDIKKworLyogU1JBVCBzdWItdGFibGVzICovCisKK3N0cnVjdCBzdGF0aWNfcmVzb3VyY2VfYWxsb2MgeworCVNSQVRfU1VCVEFCTEVfSEVBREVSIHU4IHByb3hpbWl0eV9kb21haW5fbG87CisJdTggYXBpY19pZDsKIAogCS8qIEZsYWdzICgzMiBiaXRzKSAqLwogCi0JdTggd2JfaW52ZDoxOwkJLyogMDA6ICAgIFRoZSB3YmludmQgaW5zdHJ1Y3Rpb24gd29ya3MgcHJvcGVybHkgKi8KLQl1OCB3Yl9pbnZkX2ZsdXNoOjE7CS8qIDAxOiAgICBUaGUgd2JpbnZkIGZsdXNoZXMgYnV0IGRvZXMgbm90IGludmFsaWRhdGUgKi8KLQl1OCBwcm9jX2MxOjE7CQkvKiAwMjogICAgQWxsIHByb2Nlc3NvcnMgc3VwcG9ydCBDMSBzdGF0ZSAqLwotCXU4IHBsdmwyX3VwOjE7CQkvKiAwMzogICAgQzIgc3RhdGUgd29ya3Mgb24gTVAgc3lzdGVtICovCi0JdTggcHdyX2J1dHRvbjoxOwkvKiAwNDogICAgUG93ZXIgYnV0dG9uIGlzIGhhbmRsZWQgYXMgYSBnZW5lcmljIGZlYXR1cmUgKi8KLQl1OCBzbGVlcF9idXR0b246MTsJLyogMDU6ICAgIFNsZWVwIGJ1dHRvbiBpcyBoYW5kbGVkIGFzIGEgZ2VuZXJpYyBmZWF0dXJlLCBvciBub3QgcHJlc2VudCAqLwotCXU4IGZpeGVkX3JUQzoxOwkJLyogMDY6ICAgIFJUQyB3YWtldXAgc3RhdCBub3QgaW4gZml4ZWQgcmVnaXN0ZXIgc3BhY2UgKi8KLQl1OCBydGNzNDoxOwkJLyogMDc6ICAgIFJUQyB3YWtldXAgc3RhdCBub3QgcG9zc2libGUgZnJvbSBTNCAqLwotCXU4IHRtcl92YWxfZXh0OjE7CS8qIDA4OiAgICB0bXJfdmFsIHdpZHRoIGlzIDMyIGJpdHMgKDAgPSAyNCBiaXRzKSAqLwotCSB1ODo3OwkJCS8qIDA5LTE1OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCi0JdTggcmVzZXJ2ZWQ1WzJdOwkvKiAxNi0zMTogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLworCXU4IGVuYWJsZWQ6MTsJCS8qIDAwOiAgICBVc2UgYWZmaW5pdHkgc3RydWN0dXJlICovCisJIHU4Ojc7CQkJLyogMDEtMDc6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KKwl1OCByZXNlcnZlZDNbM107CS8qIDA4LTMxOiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCisKKwl1OCBsb2NhbF9zYXBpY19laWQ7CisJdTggcHJveGltaXR5X2RvbWFpbl9oaVszXTsKKwl1MzIgcmVzZXJ2ZWQ0OwkJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwogfTsKIAorc3RydWN0IG1lbW9yeV9hZmZpbml0eSB7CisJU1JBVF9TVUJUQUJMRV9IRUFERVIgdTMyIHByb3hpbWl0eV9kb21haW47CisJdTE2IHJlc2VydmVkMzsKKwl1NjQgYmFzZV9hZGRyZXNzOworCXU2NCBhZGRyZXNzX2xlbmd0aDsKKwl1MzIgcmVzZXJ2ZWQ0OworCisJLyogRmxhZ3MgKDMyIGJpdHMpICovCisKKwl1OCBlbmFibGVkOjE7CQkvKiAwMDogICAgVXNlIGFmZmluaXR5IHN0cnVjdHVyZSAqLworCXU4IGhvdF9wbHVnZ2FibGU6MTsJLyogMDE6ICAgIE1lbW9yeSByZWdpb24gaXMgaG90IHBsdWdnYWJsZSAqLworCXU4IG5vbl92b2xhdGlsZToxOwkvKiAwMjogICAgTWVtb3J5IGlzIG5vbi12b2xhdGlsZSAqLworCSB1ODo1OwkJCS8qIDAzLTA3OiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCisJdTggcmVzZXJ2ZWQ1WzNdOwkvKiAwOC0zMTogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLworCisJdTY0IHJlc2VydmVkNjsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogVENQQSAtIFRydXN0ZWQgQ29tcHV0aW5nIFBsYXRmb3JtIEFsbGlhbmNlIHRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfdGFibGVfdGNwYSB7CisJQUNQSV9UQUJMRV9IRUFERVJfREVGIHUxNiByZXNlcnZlZDsKKwl1MzIgbWF4X2xvZ19sZW5ndGg7CS8qIE1heGltdW0gbGVuZ3RoIGZvciB0aGUgZXZlbnQgbG9nIGFyZWEgKi8KKwl1NjQgbG9nX2FkZHJlc3M7CS8qIEFkZHJlc3Mgb2YgdGhlIGV2ZW50IGxvZyBhcmVhICovCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFdEUlQgLSBXYXRjaGRvZyBSZXNvdXJjZSBUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCBhY3BpX3RhYmxlX3dkcnQgeworCUFDUElfVEFCTEVfSEVBREVSX0RFRiB1MzIgaGVhZGVyX2xlbmd0aDsJLyogV2F0Y2hkb2cgSGVhZGVyIExlbmd0aCAqLworCXU4IHBjaV9zZWdtZW50OwkJLyogUENJIFNlZ21lbnQgbnVtYmVyICovCisJdTggcGNpX2J1czsJCS8qIFBDSSBCdXMgbnVtYmVyICovCisJdTggcGNpX2RldmljZTsJCS8qIFBDSSBEZXZpY2UgbnVtYmVyICovCisJdTggcGNpX2Z1bmN0aW9uOwkvKiBQQ0kgRnVuY3Rpb24gbnVtYmVyICovCisJdTMyIHRpbWVyX3BlcmlvZDsJLyogUGVyaW9kIG9mIG9uZSB0aW1lciBjb3VudCAobXNlYykgKi8KKwl1MzIgbWF4X2NvdW50OwkJLyogTWF4aW11bSBjb3VudGVyIHZhbHVlIHN1cHBvcnRlZCAqLworCXUzMiBtaW5fY291bnQ7CQkvKiBNaW5pbXVtIGNvdW50ZXIgdmFsdWUgKi8KKwl1OCBmbGFnczsKKwl1OCByZXNlcnZlZFszXTsKKwl1MzIgZW50cmllczsJCS8qIE51bWJlciBvZiB3YXRjaGRvZyBlbnRyaWVzIHRoYXQgZm9sbG93ICovCit9OworCisjaWYgMAkJCQkvKiBGbGFncywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gbWFjcm9zICovCit1OCBlbmFibGVkOjE7CQkJLyogMDA6ICAgIFRpbWVyIGVuYWJsZWQgKi8KK3U4OjY7CQkJCS8qIDAxLTA2OiBSZXNlcnZlZCAqLwordTggc2xlZXBfc3RvcDoxOwkJLyogMDc6ICAgIFRpbWVyIHN0b3BwZWQgaW4gc2xlZXAgc3RhdGUgKi8KKyNlbmRpZgorCisvKiBNYWNyb3MgdXNlZCB0byBnZW5lcmF0ZSBvZmZzZXRzIHRvIHNwZWNpZmljIHRhYmxlIGZpZWxkcyAqLworCisjZGVmaW5lIEFDUElfQVNGMF9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfYXNmX2luZm8sZikKKyNkZWZpbmUgQUNQSV9BU0YxX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV9hc2ZfYWxlcnQsZikKKyNkZWZpbmUgQUNQSV9BU0YyX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV9hc2ZfcmVtb3RlLGYpCisjZGVmaW5lIEFDUElfQVNGM19PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfYXNmX3JtY3AsZikKKyNkZWZpbmUgQUNQSV9BU0Y0X09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV9hc2ZfYWRkcmVzcyxmKQorI2RlZmluZSBBQ1BJX0JPT1RfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBhY3BpX3RhYmxlX2Jvb3QsZikKKyNkZWZpbmUgQUNQSV9DUEVQX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV90YWJsZV9jcGVwLGYpCisjZGVmaW5lIEFDUElfQ1BFUDBfT0ZGU0VUKGYpICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfY3BlcF9wb2xsaW5nLGYpCisjZGVmaW5lIEFDUElfREJHUF9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfdGFibGVfZGJncCxmKQorI2RlZmluZSBBQ1BJX0VDRFRfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBlY19ib290X3Jlc291cmNlcyxmKQorI2RlZmluZSBBQ1BJX0hQRVRfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBocGV0X3RhYmxlLGYpCisjZGVmaW5lIEFDUElfTUFEVF9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IG11bHRpcGxlX2FwaWNfdGFibGUsZikKKyNkZWZpbmUgQUNQSV9NQURUMF9PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9wcm9jZXNzb3JfYXBpYyxmKQorI2RlZmluZSBBQ1BJX01BRFQxX09GRlNFVChmKSAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBtYWR0X2lvX2FwaWMsZikKKyNkZWZpbmUgQUNQSV9NQURUMl9PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9pbnRlcnJ1cHRfb3ZlcnJpZGUsZikKKyNkZWZpbmUgQUNQSV9NQURUM19PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9ubWlfc291cmNlLGYpCisjZGVmaW5lIEFDUElfTUFEVDRfT0ZGU0VUKGYpICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IG1hZHRfbG9jYWxfYXBpY19ubWksZikKKyNkZWZpbmUgQUNQSV9NQURUNV9PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9hZGRyZXNzX292ZXJyaWRlLGYpCisjZGVmaW5lIEFDUElfTUFEVDZfT0ZGU0VUKGYpICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IG1hZHRfaW9fc2FwaWMsZikKKyNkZWZpbmUgQUNQSV9NQURUN19PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9sb2NhbF9zYXBpYyxmKQorI2RlZmluZSBBQ1BJX01BRFQ4X09GRlNFVChmKSAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBtYWR0X2ludGVycnVwdF9zb3VyY2UsZikKKyNkZWZpbmUgQUNQSV9NQURUSF9PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYXBpY19oZWFkZXIsZikKKyNkZWZpbmUgQUNQSV9NQ0ZHX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV90YWJsZV9tY2ZnLGYpCisjZGVmaW5lIEFDUElfTUNGRzBfT0ZGU0VUKGYpICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfbWNmZ19hbGxvY2F0aW9uLGYpCisjZGVmaW5lIEFDUElfU0JTVF9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IHNtYXJ0X2JhdHRlcnlfdGFibGUsZikKKyNkZWZpbmUgQUNQSV9TTElUX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3Qgc3lzdGVtX2xvY2FsaXR5X2luZm8sZikKKyNkZWZpbmUgQUNQSV9TUENSX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV90YWJsZV9zcGNyLGYpCisjZGVmaW5lIEFDUElfU1BNSV9PRkZTRVQoZikgICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IGFjcGlfdGFibGVfc3BtaSxmKQorI2RlZmluZSBBQ1BJX1NSQVRfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBzeXN0ZW1fcmVzb3VyY2VfYWZmaW5pdHksZikKKyNkZWZpbmUgQUNQSV9TUkFUMF9PRkZTRVQoZikgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3Qgc3RhdGljX3Jlc291cmNlX2FsbG9jLGYpCisjZGVmaW5lIEFDUElfU1JBVDFfT0ZGU0VUKGYpICAgICAgICAgICAgKHU4KSBBQ1BJX09GRlNFVCAoc3RydWN0IG1lbW9yeV9hZmZpbml0eSxmKQorI2RlZmluZSBBQ1BJX1RDUEFfT0ZGU0VUKGYpICAgICAgICAgICAgICh1OCkgQUNQSV9PRkZTRVQgKHN0cnVjdCBhY3BpX3RhYmxlX3RjcGEsZikKKyNkZWZpbmUgQUNQSV9XRFJUX09GRlNFVChmKSAgICAgICAgICAgICAodTgpIEFDUElfT0ZGU0VUIChzdHJ1Y3QgYWNwaV90YWJsZV93ZHJ0LGYpCisKKyNkZWZpbmUgQUNQSV9IUEVUX0ZMQUdfT0ZGU0VUKGYsbykgICAgICBBQ1BJX0ZMQUdfT0ZGU0VUIChzdHJ1Y3QgaHBldF90YWJsZSxmLG8pCisjZGVmaW5lIEFDUElfU1JBVDBfRkxBR19PRkZTRVQoZixvKSAgICAgQUNQSV9GTEFHX09GRlNFVCAoc3RydWN0IHN0YXRpY19yZXNvdXJjZV9hbGxvYyxmLG8pCisjZGVmaW5lIEFDUElfU1JBVDFfRkxBR19PRkZTRVQoZixvKSAgICAgQUNQSV9GTEFHX09GRlNFVCAoc3RydWN0IG1lbW9yeV9hZmZpbml0eSxmLG8pCisjZGVmaW5lIEFDUElfTUFEVF9GTEFHX09GRlNFVChmLG8pICAgICAgQUNQSV9GTEFHX09GRlNFVCAoc3RydWN0IG11bHRpcGxlX2FwaWNfdGFibGUsZixvKQorI2RlZmluZSBBQ1BJX01BRFQwX0ZMQUdfT0ZGU0VUKGYsbykgICAgIEFDUElfRkxBR19PRkZTRVQgKHN0cnVjdCBtYWR0X3Byb2Nlc3Nvcl9hcGljLGYsbykKKyNkZWZpbmUgQUNQSV9NQURUMl9GTEFHX09GRlNFVChmLG8pICAgICBBQ1BJX0ZMQUdfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9pbnRlcnJ1cHRfb3ZlcnJpZGUsZixvKQorI2RlZmluZSBBQ1BJX01BRFQzX0ZMQUdfT0ZGU0VUKGYsbykgICAgIEFDUElfRkxBR19PRkZTRVQgKHN0cnVjdCBtYWR0X25taV9zb3VyY2UsZixvKQorI2RlZmluZSBBQ1BJX01BRFQ0X0ZMQUdfT0ZGU0VUKGYsbykgICAgIEFDUElfRkxBR19PRkZTRVQgKHN0cnVjdCBtYWR0X2xvY2FsX2FwaWNfbm1pLGYsbykKKyNkZWZpbmUgQUNQSV9NQURUN19GTEFHX09GRlNFVChmLG8pICAgICBBQ1BJX0ZMQUdfT0ZGU0VUIChzdHJ1Y3QgbWFkdF9sb2NhbF9zYXBpYyxmLG8pCisjZGVmaW5lIEFDUElfTUFEVDhfRkxBR19PRkZTRVQoZixvKSAgICAgQUNQSV9GTEFHX09GRlNFVCAoc3RydWN0IG1hZHRfaW50ZXJydXB0X3NvdXJjZSxmLG8pCisKKy8qIFJlc2V0IHRvIGRlZmF1bHQgcGFja2luZyAqLworCiAjcHJhZ21hIHBhY2soKQogCiAjZW5kaWYJCQkJLyogX19BQ1RCTDFfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWN0YmwyLmggYi9pbmNsdWRlL2FjcGkvYWN0YmwyLmgKaW5kZXggZGZjN2FjMS4uNjdlZmU2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FjdGJsMi5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY3RibDIuaApAQCAtNDQsMjM0ICs0NCw2IEBACiAjaWZuZGVmIF9fQUNUQkwyX0hfXwogI2RlZmluZSBfX0FDVEJMMl9IX18KIAotLyoKLSAqIFByZWZlcmVkIFBvd2VyIE1hbmFnZW1lbnQgUHJvZmlsZXMKLSAqLwotI2RlZmluZSBQTV9VTlNQRUNJRklFRCAgICAgICAgICAgICAgICAgIDAKLSNkZWZpbmUgUE1fREVTS1RPUCAgICAgICAgICAgICAgICAgICAgICAxCi0jZGVmaW5lIFBNX01PQklMRSAgICAgICAgICAgICAgICAgICAgICAgMgotI2RlZmluZSBQTV9XT1JLU1RBVElPTiAgICAgICAgICAgICAgICAgIDMKLSNkZWZpbmUgUE1fRU5URVJQUklTRV9TRVJWRVIgICAgICAgICAgICA0Ci0jZGVmaW5lIFBNX1NPSE9fU0VSVkVSICAgICAgICAgICAgICAgICAgNQotI2RlZmluZSBQTV9BUFBMSUFOQ0VfUEMgICAgICAgICAgICAgICAgIDYKLQotLyoKLSAqIEFDUEkgQm9vdCBBcmNoIEZsYWdzCi0gKi8KLSNkZWZpbmUgQkFGX0xFR0FDWV9ERVZJQ0VTICAgICAgICAgICAgICAweDAwMDEKLSNkZWZpbmUgQkFGXzgwNDJfS0VZQk9BUkRfQ09OVFJPTExFUiAgICAweDAwMDIKLQotI2RlZmluZSBGQURUMl9SRVZJU0lPTl9JRCAgICAgICAgICAgICAgIDMKLSNkZWZpbmUgRkFEVDJfTUlOVVNfUkVWSVNJT05fSUQgICAgICAgICAyCi0KLSNwcmFnbWEgcGFjaygxKQotCi0vKgotICogQUNQSSAyLjAgUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgKFJTRFQpCi0gKi8KLXN0cnVjdCByc2R0X2Rlc2NyaXB0b3JfcmV2MiB7Ci0JQUNQSV9UQUJMRV9IRUFERVJfREVGCS8qIEFDUEkgY29tbW9uIHRhYmxlIGhlYWRlciAqLwotCXUzMiB0YWJsZV9vZmZzZXRfZW50cnlbMV07CS8qIEFycmF5IG9mIHBvaW50ZXJzIHRvIEFDUEkgdGFibGVzICovCi19OwotCi0vKgotICogQUNQSSAyLjAgRXh0ZW5kZWQgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlIChYU0RUKQotICovCi1zdHJ1Y3QgeHNkdF9kZXNjcmlwdG9yX3JldjIgewotCUFDUElfVEFCTEVfSEVBREVSX0RFRgkvKiBBQ1BJIGNvbW1vbiB0YWJsZSBoZWFkZXIgKi8KLQl1NjQgdGFibGVfb2Zmc2V0X2VudHJ5WzFdOwkvKiBBcnJheSBvZiBwb2ludGVycyB0byBBQ1BJIHRhYmxlcyAqLwotfTsKLQotLyoKLSAqIEFDUEkgMi4wIEZpcm13YXJlIEFDUEkgQ29udHJvbCBTdHJ1Y3R1cmUgKEZBQ1MpCi0gKi8KLXN0cnVjdCBmYWNzX2Rlc2NyaXB0b3JfcmV2MiB7Ci0JY2hhciBzaWduYXR1cmVbNF07CS8qIEFTQ0lJIHRhYmxlIHNpZ25hdHVyZSAqLwotCXUzMiBsZW5ndGg7CQkvKiBMZW5ndGggb2Ygc3RydWN0dXJlLCBpbiBieXRlcyAqLwotCXUzMiBoYXJkd2FyZV9zaWduYXR1cmU7CS8qIEhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2lnbmF0dXJlICovCi0JdTMyIGZpcm13YXJlX3dha2luZ192ZWN0b3I7CS8qIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBGaXJtd2FyZSBXYWtpbmcgVmVjdG9yLiAqLwotCXUzMiBnbG9iYWxfbG9jazsJLyogR2xvYmFsIExvY2sgdXNlZCB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gc2hhcmVkIGhhcmR3YXJlIHJlc291cmNlcyAqLwotCi0JLyogRmxhZ3MgKDMyIGJpdHMpICovCi0KLQl1OCBTNGJpb3NfZjoxOwkJLyogMDA6ICAgIFM0QklPUyBzdXBwb3J0IGlzIHByZXNlbnQgKi8KLQkgdTg6NzsJCQkvKiAwMS0wNzogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCXU4IHJlc2VydmVkMVszXTsJLyogMDgtMzE6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQotCXU2NCB4ZmlybXdhcmVfd2FraW5nX3ZlY3RvcjsJLyogNjQtYml0IHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIEZpcm13YXJlIFdha2luZyBWZWN0b3IuICovCi0JdTggdmVyc2lvbjsJCS8qIFZlcnNpb24gb2YgdGhpcyB0YWJsZSAqLwotCXU4IHJlc2VydmVkM1szMV07CS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLX07Ci0KLS8qCi0gKiBBQ1BJIDIuMCsgR2VuZXJpYyBBZGRyZXNzIFN0cnVjdHVyZSAoR0FTKQotICovCi1zdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgewotCXU4IGFkZHJlc3Nfc3BhY2VfaWQ7CS8qIEFkZHJlc3Mgc3BhY2Ugd2hlcmUgc3RydWN0IG9yIHJlZ2lzdGVyIGV4aXN0cy4gKi8KLQl1OCByZWdpc3Rlcl9iaXRfd2lkdGg7CS8qIFNpemUgaW4gYml0cyBvZiBnaXZlbiByZWdpc3RlciAqLwotCXU4IHJlZ2lzdGVyX2JpdF9vZmZzZXQ7CS8qIEJpdCBvZmZzZXQgd2l0aGluIHRoZSByZWdpc3RlciAqLwotCXU4IGFjY2Vzc193aWR0aDsJLyogTWluaW11bSBBY2Nlc3Mgc2l6ZSAoQUNQSSAzLjApICovCi0JdTY0IGFkZHJlc3M7CQkvKiA2NC1iaXQgYWRkcmVzcyBvZiBzdHJ1Y3Qgb3IgcmVnaXN0ZXIgKi8KLX07Ci0KLSNkZWZpbmUgRkFEVF9SRVYyX0NPTU1PTiBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9maXJtd2FyZV9jdHJsOyAgIC8qIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9mIEZBQ1MgKi8gXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfZHNkdDsgICAgICAgICAgICAvKiAzMi1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiBEU0RUICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkMTsgICAgICAgICAgLyogU3lzdGVtIEludGVycnVwdCBNb2RlbCBpc24ndCB1c2VkIGluIEFDUEkgMi4wKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVyX1BNX3Byb2ZpbGU7ICAvKiBDb252ZXlzIHByZWZlcnJlZCBwb3dlciBtYW5hZ2VtZW50IHByb2ZpbGUgdG8gT1NQTS4gKi8gXAotCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NpX2ludDsgICAgICAgICAgICAvKiBTeXN0ZW0gdmVjdG9yIG9mIFNDSSBpbnRlcnJ1cHQgKi8gXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21pX2NtZDsgICAgICAgICAgICAvKiBQb3J0IGFkZHJlc3Mgb2YgU01JIGNvbW1hbmQgcG9ydCAqLyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX2VuYWJsZTsgICAgICAgIC8qIFZhbHVlIHRvIHdyaXRlIHRvIHNtaV9jbWQgdG8gZW5hYmxlIEFDUEkgKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNwaV9kaXNhYmxlOyAgICAgICAvKiBWYWx1ZSB0byB3cml0ZSB0byBzbWlfY21kIHRvIGRpc2FibGUgQUNQSSAqLyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTNGJpb3NfcmVxOyAgICAgICAgIC8qIFZhbHVlIHRvIHdyaXRlIHRvIFNNSSBDTUQgdG8gZW50ZXIgUzRCSU9TIHN0YXRlICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzdGF0ZV9jbnQ7ICAgICAgICAgLyogUHJvY2Vzc29yIHBlcmZvcm1hbmNlIHN0YXRlIGNvbnRyb2wqLyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9wbTFhX2V2dF9ibGs7ICAgIC8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgMWEgYWNwaV9ldmVudCBSZWcgQmxrICovIFwKLQl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX3BtMWJfZXZ0X2JsazsgICAgLyogUG9ydCBhZGRyZXNzIG9mIFBvd2VyIE1ndCAxYiBhY3BpX2V2ZW50IFJlZyBCbGsgKi8gXAotCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjFfcG0xYV9jbnRfYmxrOyAgICAvKiBQb3J0IGFkZHJlc3Mgb2YgUG93ZXIgTWd0IDFhIENvbnRyb2wgUmVnIEJsayAqLyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9wbTFiX2NudF9ibGs7ICAgIC8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgMWIgQ29udHJvbCBSZWcgQmxrICovIFwKLQl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX3BtMl9jbnRfYmxrOyAgICAgLyogUG9ydCBhZGRyZXNzIG9mIFBvd2VyIE1ndCAyIENvbnRyb2wgUmVnIEJsayAqLyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9wbV90bXJfYmxrOyAgICAgIC8qIFBvcnQgYWRkcmVzcyBvZiBQb3dlciBNZ3QgVGltZXIgQ3RybCBSZWcgQmxrICovIFwKLQl1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYxX2dwZTBfYmxrOyAgICAgICAgLyogUG9ydCBhZGRyIG9mIEdlbmVyYWwgUHVycG9zZSBhY3BpX2V2ZW50IDAgUmVnIEJsayAqLyBcCi0JdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWMV9ncGUxX2JsazsgICAgICAgIC8qIFBvcnQgYWRkciBvZiBHZW5lcmFsIFB1cnBvc2UgYWNwaV9ldmVudCAxIFJlZyBCbGsgKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG0xX2V2dF9sZW47ICAgICAgICAvKiBCeXRlIGxlbmd0aCBvZiBwb3J0cyBhdCBwbTFfeF9ldnRfYmxrICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtMV9jbnRfbGVuOyAgICAgICAgLyogQnl0ZSBsZW5ndGggb2YgcG9ydHMgYXQgcG0xX3hfY250X2JsayAqLyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbTJfY250X2xlbjsgICAgICAgIC8qIEJ5dGUgTGVuZ3RoIG9mIHBvcnRzIGF0IHBtMl9jbnRfYmxrICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX3RtX2xlbjsgICAgICAgICAgLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgcG1fdG1fYmxrICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwZTBfYmxrX2xlbjsgICAgICAgLyogQnl0ZSBMZW5ndGggb2YgcG9ydHMgYXQgZ3BlMF9ibGsgKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BlMV9ibGtfbGVuOyAgICAgICAvKiBCeXRlIExlbmd0aCBvZiBwb3J0cyBhdCBncGUxX2JsayAqLyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncGUxX2Jhc2U7ICAgICAgICAgIC8qIE9mZnNldCBpbiBncGUgbW9kZWwgd2hlcmUgZ3BlMSBldmVudHMgc3RhcnQgKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3N0X2NudDsgICAgICAgICAgICAvKiBTdXBwb3J0IGZvciB0aGUgX0NTVCBvYmplY3QgYW5kIEMgU3RhdGVzIGNoYW5nZSBub3RpZmljYXRpb24uKi8gXAotCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx2bDJfbGF0OyAgICAgICAgICAvKiBXb3JzdCBjYXNlIEhXIGxhdGVuY3kgdG8gZW50ZXIvZXhpdCBDMiBzdGF0ZSAqLyBcCi0JdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHZsM19sYXQ7ICAgICAgICAgIC8qIFdvcnN0IGNhc2UgSFcgbGF0ZW5jeSB0byBlbnRlci9leGl0IEMzIHN0YXRlICovIFwKLQl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX3NpemU7ICAgICAgICAgLyogTnVtYmVyIG9mIGZsdXNoIHN0cmlkZXMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgKi8gXAotCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfc3RyaWRlOyAgICAgICAvKiBQcm9jZXNzb3IncyBtZW1vcnkgY2FjaGUgbGluZSB3aWR0aCwgaW4gYnl0ZXMgKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHV0eV9vZmZzZXQ7ICAgICAgICAvKiBQcm9jZXNzb3IncyBkdXR5IGN5Y2xlIGluZGV4IGluIHByb2Nlc3NvcidzIFBfQ05UIHJlZyovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1dHlfd2lkdGg7ICAgICAgICAgLyogUHJvY2Vzc29yJ3MgZHV0eSBjeWNsZSB2YWx1ZSBiaXQgd2lkdGggaW4gUF9DTlQgcmVnaXN0ZXIuKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5X2Fscm07ICAgICAgICAgICAvKiBJbmRleCB0byBkYXktb2YtbW9udGggYWxhcm0gaW4gUlRDIENNT1MgUkFNICovIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbl9hbHJtOyAgICAgICAgICAgLyogSW5kZXggdG8gbW9udGgtb2YteWVhciBhbGFybSBpbiBSVEMgQ01PUyBSQU0gKi8gXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudHVyeTsgICAgICAgICAgICAvKiBJbmRleCB0byBjZW50dXJ5IGluIFJUQyBDTU9TIFJBTSAqLyBcCi0JdTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYXBjX2Jvb3RfYXJjaDsgICAgIC8qIElBLVBDIEJvb3QgQXJjaGl0ZWN0dXJlIEZsYWdzLiBTZWUgVGFibGUgNS0xMCBmb3IgZGVzY3JpcHRpb24qLwotCi0vKgotICogQUNQSSAyLjArIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKEZBRFQpCi0gKi8KLXN0cnVjdCBmYWR0X2Rlc2NyaXB0b3JfcmV2MiB7Ci0JQUNQSV9UQUJMRV9IRUFERVJfREVGCS8qIEFDUEkgY29tbW9uIHRhYmxlIGhlYWRlciAqLwotCUZBRFRfUkVWMl9DT01NT04gdTggcmVzZXJ2ZWQyOwkvKiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCi0KLQkvKiBGbGFncyAoMzIgYml0cykgKi8KLQotCXU4IHdiX2ludmQ6MTsJCS8qIDAwOiAgICBUaGUgd2JpbnZkIGluc3RydWN0aW9uIHdvcmtzIHByb3Blcmx5ICovCi0JdTggd2JfaW52ZF9mbHVzaDoxOwkvKiAwMTogICAgVGhlIHdiaW52ZCBmbHVzaGVzIGJ1dCBkb2VzIG5vdCBpbnZhbGlkYXRlICovCi0JdTggcHJvY19jMToxOwkJLyogMDI6ICAgIEFsbCBwcm9jZXNzb3JzIHN1cHBvcnQgQzEgc3RhdGUgKi8KLQl1OCBwbHZsMl91cDoxOwkJLyogMDM6ICAgIEMyIHN0YXRlIHdvcmtzIG9uIE1QIHN5c3RlbSAqLwotCXU4IHB3cl9idXR0b246MTsJLyogMDQ6ICAgIFBvd2VyIGJ1dHRvbiBpcyBoYW5kbGVkIGFzIGEgZ2VuZXJpYyBmZWF0dXJlICovCi0JdTggc2xlZXBfYnV0dG9uOjE7CS8qIDA1OiAgICBTbGVlcCBidXR0b24gaXMgaGFuZGxlZCBhcyBhIGdlbmVyaWMgZmVhdHVyZSwgb3Igbm90IHByZXNlbnQgKi8KLQl1OCBmaXhlZF9yVEM6MTsJCS8qIDA2OiAgICBSVEMgd2FrZXVwIHN0YXQgbm90IGluIGZpeGVkIHJlZ2lzdGVyIHNwYWNlICovCi0JdTggcnRjczQ6MTsJCS8qIDA3OiAgICBSVEMgd2FrZXVwIHN0YXQgbm90IHBvc3NpYmxlIGZyb20gUzQgKi8KLQl1OCB0bXJfdmFsX2V4dDoxOwkvKiAwODogICAgdG1yX3ZhbCBpcyAzMiBiaXRzIDA9MjQtYml0cyAqLwotCXU4IGRvY2tfY2FwOjE7CQkvKiAwOTogICAgRG9ja2luZyBzdXBwb3J0ZWQgKi8KLQl1OCByZXNldF9yZWdfc3VwOjE7CS8qIDEwOiAgICBTeXN0ZW0gcmVzZXQgdmlhIHRoZSBGQURUIFJFU0VUX1JFRyBzdXBwb3J0ZWQgKi8KLQl1OCBzZWFsZWRfY2FzZToxOwkvKiAxMTogICAgTm8gaW50ZXJuYWwgZXhwYW5zaW9uIGNhcGFiaWxpdGllcyBhbmQgY2FzZSBpcyBzZWFsZWQgKi8KLQl1OCBoZWFkbGVzczoxOwkJLyogMTI6ICAgIE5vIGxvY2FsIHZpZGVvIGNhcGFiaWxpdGllcyBvciBsb2NhbCBpbnB1dCBkZXZpY2VzICovCi0JdTggY3B1X3N3X3NsZWVwOjE7CS8qIDEzOiAgICBNdXN0IGV4ZWN1dGUgbmF0aXZlIGluc3RydWN0aW9uIGFmdGVyIHdyaXRpbmcgU0xQX1RZUHggcmVnaXN0ZXIgKi8KLQotCXU4IHBjaV9leHBfd2FrOjE7CS8qIDE0OiAgICBTeXN0ZW0gc3VwcG9ydHMgUENJRVhQX1dBS0UgKFNUUy9FTikgYml0cyAoQUNQSSAzLjApICovCi0JdTggdXNlX3BsYXRmb3JtX2Nsb2NrOjE7CS8qIDE1OiAgICBPU1BNIHNob3VsZCB1c2UgcGxhdGZvcm0tcHJvdmlkZWQgdGltZXIgKEFDUEkgMy4wKSAqLwotCXU4IFM0cnRjX3N0c192YWxpZDoxOwkvKiAxNjogICAgQ29udGVudHMgb2YgUlRDX1NUUyB2YWxpZCBhZnRlciBTNCB3YWtlIChBQ1BJIDMuMCkgKi8KLQl1OCByZW1vdGVfcG93ZXJfb25fY2FwYWJsZToxOwkvKiAxNzogICAgU3lzdGVtIGlzIGNvbXBhdGlibGUgd2l0aCByZW1vdGUgcG93ZXIgb24gKEFDUEkgMy4wKSAqLwotCXU4IGZvcmNlX2FwaWNfY2x1c3Rlcl9tb2RlbDoxOwkvKiAxODogICAgQWxsIGxvY2FsIEFQSUNzIG11c3QgdXNlIGNsdXN0ZXIgbW9kZWwgKEFDUEkgMy4wKSAqLwotCXU4IGZvcmNlX2FwaWNfcGh5c2ljYWxfZGVzdGluYXRpb25fbW9kZToxOwkvKiAxOTogICBhbGwgbG9jYWwgeF9hUElDcyBtdXN0IHVzZSBwaHlzaWNhbCBkZXN0IG1vZGUgKEFDUEkgMy4wKSAqLwotCSB1ODo0OwkJCS8qIDIwLTIzOiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCi0JdTggcmVzZXJ2ZWQzOwkJLyogMjQtMzE6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQotCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyByZXNldF9yZWdpc3RlcjsJLyogUmVzZXQgcmVnaXN0ZXIgYWRkcmVzcyBpbiBHQVMgZm9ybWF0ICovCi0JdTggcmVzZXRfdmFsdWU7CQkvKiBWYWx1ZSB0byB3cml0ZSB0byB0aGUgcmVzZXRfcmVnaXN0ZXIgcG9ydCB0byByZXNldCB0aGUgc3lzdGVtICovCi0JdTggcmVzZXJ2ZWQ0WzNdOwkvKiBUaGVzZSB0aHJlZSBieXRlcyBtdXN0IGJlIHplcm8gKi8KLQl1NjQgeGZpcm13YXJlX2N0cmw7CS8qIDY0LWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9mIEZBQ1MgKi8KLQl1NjQgWGRzZHQ7CQkvKiA2NC1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiBEU0RUICovCi0Jc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIHhwbTFhX2V2dF9ibGs7CS8qIEV4dGVuZGVkIFBvd2VyIE1ndCAxYSBhY3BpX2V2ZW50IFJlZyBCbGsgYWRkcmVzcyAqLwotCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4cG0xYl9ldnRfYmxrOwkvKiBFeHRlbmRlZCBQb3dlciBNZ3QgMWIgYWNwaV9ldmVudCBSZWcgQmxrIGFkZHJlc3MgKi8KLQlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgeHBtMWFfY250X2JsazsJLyogRXh0ZW5kZWQgUG93ZXIgTWd0IDFhIENvbnRyb2wgUmVnIEJsayBhZGRyZXNzICovCi0Jc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIHhwbTFiX2NudF9ibGs7CS8qIEV4dGVuZGVkIFBvd2VyIE1ndCAxYiBDb250cm9sIFJlZyBCbGsgYWRkcmVzcyAqLwotCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4cG0yX2NudF9ibGs7CS8qIEV4dGVuZGVkIFBvd2VyIE1ndCAyIENvbnRyb2wgUmVnIEJsayBhZGRyZXNzICovCi0Jc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIHhwbV90bXJfYmxrOwkvKiBFeHRlbmRlZCBQb3dlciBNZ3QgVGltZXIgQ3RybCBSZWcgQmxrIGFkZHJlc3MgKi8KLQlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgeGdwZTBfYmxrOwkvKiBFeHRlbmRlZCBHZW5lcmFsIFB1cnBvc2UgYWNwaV9ldmVudCAwIFJlZyBCbGsgYWRkcmVzcyAqLwotCXN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyB4Z3BlMV9ibGs7CS8qIEV4dGVuZGVkIEdlbmVyYWwgUHVycG9zZSBhY3BpX2V2ZW50IDEgUmVnIEJsayBhZGRyZXNzICovCi19OwotCi0vKiAiRG93bi1yZXZ2ZWQiIEFDUEkgMi4wIEZBRFQgZGVzY3JpcHRvciAqLwotCi1zdHJ1Y3QgZmFkdF9kZXNjcmlwdG9yX3JldjJfbWludXMgewotCUFDUElfVEFCTEVfSEVBREVSX0RFRgkvKiBBQ1BJIGNvbW1vbiB0YWJsZSBoZWFkZXIgKi8KLQlGQURUX1JFVjJfQ09NTU9OIHU4IHJlc2VydmVkMjsJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCXUzMiBmbGFnczsKLQlzdHJ1Y3QgYWNwaV9nZW5lcmljX2FkZHJlc3MgcmVzZXRfcmVnaXN0ZXI7CS8qIFJlc2V0IHJlZ2lzdGVyIGFkZHJlc3MgaW4gR0FTIGZvcm1hdCAqLwotCXU4IHJlc2V0X3ZhbHVlOwkJLyogVmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlc2V0X3JlZ2lzdGVyIHBvcnQgdG8gcmVzZXQgdGhlIHN5c3RlbS4gKi8KLQl1OCByZXNlcnZlZDdbM107CS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLX07Ci0KLS8qIEVDRFQgLSBFbWJlZGRlZCBDb250cm9sbGVyIEJvb3QgUmVzb3VyY2VzIFRhYmxlICovCi0KLXN0cnVjdCBlY19ib290X3Jlc291cmNlcyB7Ci0JQUNQSV9UQUJMRV9IRUFERVJfREVGIHN0cnVjdCBhY3BpX2dlbmVyaWNfYWRkcmVzcyBlY19jb250cm9sOwkvKiBBZGRyZXNzIG9mIEVDIGNvbW1hbmQvc3RhdHVzIHJlZ2lzdGVyICovCi0Jc3RydWN0IGFjcGlfZ2VuZXJpY19hZGRyZXNzIGVjX2RhdGE7CS8qIEFkZHJlc3Mgb2YgRUMgZGF0YSByZWdpc3RlciAqLwotCXUzMiB1aWQ7CQkvKiBVbmlxdWUgSUQgLSBtdXN0IGJlIHNhbWUgYXMgdGhlIEVDIF9VSUQgbWV0aG9kICovCi0JdTggZ3BlX2JpdDsJCS8qIFRoZSBHUEUgZm9yIHRoZSBFQyAqLwotCXU4IGVjX2lkWzFdOwkJLyogRnVsbCBuYW1lcGF0aCBvZiB0aGUgRUMgaW4gdGhlIEFDUEkgbmFtZXNwYWNlICovCi19OwotCi0vKiBTUkFUIC0gU3lzdGVtIFJlc291cmNlIEFmZmluaXR5IFRhYmxlICovCi0KLXN0cnVjdCBzdGF0aWNfcmVzb3VyY2VfYWxsb2MgewotCXU4IHR5cGU7Ci0JdTggbGVuZ3RoOwotCXU4IHByb3hpbWl0eV9kb21haW5fbG87Ci0JdTggYXBpY19pZDsKLQotCS8qIEZsYWdzICgzMiBiaXRzKSAqLwotCi0JdTggZW5hYmxlZDoxOwkJLyogMDA6ICAgIFVzZSBhZmZpbml0eSBzdHJ1Y3R1cmUgKi8KLQkgdTg6NzsJCQkvKiAwMS0wNzogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotCXU4IHJlc2VydmVkM1szXTsJLyogMDgtMzE6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQotCXU4IGxvY2FsX3NhcGljX2VpZDsKLQl1OCBwcm94aW1pdHlfZG9tYWluX2hpWzNdOwotCXUzMiByZXNlcnZlZDQ7CQkvKiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCi19OwotCi1zdHJ1Y3QgbWVtb3J5X2FmZmluaXR5IHsKLQl1OCB0eXBlOwotCXU4IGxlbmd0aDsKLQl1MzIgcHJveGltaXR5X2RvbWFpbjsKLQl1MTYgcmVzZXJ2ZWQzOwotCXU2NCBiYXNlX2FkZHJlc3M7Ci0JdTY0IGFkZHJlc3NfbGVuZ3RoOwotCXUzMiByZXNlcnZlZDQ7Ci0KLQkvKiBGbGFncyAoMzIgYml0cykgKi8KLQotCXU4IGVuYWJsZWQ6MTsJCS8qIDAwOiAgICBVc2UgYWZmaW5pdHkgc3RydWN0dXJlICovCi0JdTggaG90X3BsdWdnYWJsZToxOwkvKiAwMTogICAgTWVtb3J5IHJlZ2lvbiBpcyBob3QgcGx1Z2dhYmxlICovCi0JdTggbm9uX3ZvbGF0aWxlOjE7CS8qIDAyOiAgICBNZW1vcnkgaXMgbm9uLXZvbGF0aWxlICovCi0JIHU4OjU7CQkJLyogMDMtMDc6IFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLQl1OCByZXNlcnZlZDVbM107CS8qIDA4LTMxOiBSZXNlcnZlZCwgbXVzdCBiZSB6ZXJvICovCi0KLQl1NjQgcmVzZXJ2ZWQ2OwkJLyogUmVzZXJ2ZWQsIG11c3QgYmUgemVybyAqLwotfTsKLQotc3RydWN0IHN5c3RlbV9yZXNvdXJjZV9hZmZpbml0eSB7Ci0JQUNQSV9UQUJMRV9IRUFERVJfREVGIHUzMiByZXNlcnZlZDE7CS8qIE11c3QgYmUgdmFsdWUgJzEnICovCi0JdTY0IHJlc2VydmVkMjsJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHplcm8gKi8KLX07Ci0KLS8qIFNMSVQgLSBTeXN0ZW0gTG9jYWxpdHkgRGlzdGFuY2UgSW5mb3JtYXRpb24gVGFibGUgKi8KLQotc3RydWN0IHN5c3RlbV9sb2NhbGl0eV9pbmZvIHsKLQlBQ1BJX1RBQkxFX0hFQURFUl9ERUYgdTY0IGxvY2FsaXR5X2NvdW50OwotCXU4IGVudHJ5WzFdWzFdOwotfTsKLQotI3ByYWdtYSBwYWNrKCkKKy8qIENvZGUgbW92ZWQgdG8gYm90aCBhY3RibC5oIGFuZCBhY3RibDEuaCAqLwogCiAjZW5kaWYJCQkJLyogX19BQ1RCTDJfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWN0eXBlcy5oIGIvaW5jbHVkZS9hY3BpL2FjdHlwZXMuaAppbmRleCA3Y2E4OWNkLi43N2NmMTIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWN0eXBlcy5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY3R5cGVzLmgKQEAgLTQ0LDYgKzQ0LDggQEAKICNpZm5kZWYgX19BQ1RZUEVTX0hfXwogI2RlZmluZSBfX0FDVFlQRVNfSF9fCiAKKy8qIGFjcGlzcmM6c3RydWN0X2RlZnMgLS0gZm9yIGFjcGlzcmMgY29udmVyc2lvbiAqLworCiAvKgogICogQUNQSV9NQUNISU5FX1dJRFRIIG11c3QgYmUgc3BlY2lmaWVkIGluIGFuIE9TLSBvciBjb21waWxlci1kZXBlbmRlbnQgaGVhZGVyCiAgKiBhbmQgbXVzdCBiZSBlaXRoZXIgMTYsIDMyLCBvciA2NApAQCAtMTU0LDcgKzE1Niw2IEBACiAjZGVmaW5lIEFDUElfTUFYX1BUUiAgICAgICAgICAgICAgICAgICAgQUNQSV9VSU5UNjRfTUFYCiAjZGVmaW5lIEFDUElfU0laRV9NQVggICAgICAgICAgICAgICAgICAgQUNQSV9VSU5UNjRfTUFYCiAKLSNkZWZpbmUgQUxJR05FRF9BRERSRVNTX0JPVU5EQVJZICAgICAgICAweDAwMDAwMDA4CiAjZGVmaW5lIEFDUElfVVNFX05BVElWRV9ESVZJREUJLyogSGFzIG5hdGl2ZSA2NC1iaXQgaW50ZWdlciBzdXBwb3J0ICovCiAKIC8qCkBAIC0xOTUsOCArMTk2LDYgQEAKICNkZWZpbmUgQUNQSV9NQVhfUFRSICAgICAgICAgICAgICAgICAgICBBQ1BJX1VJTlQzMl9NQVgKICNkZWZpbmUgQUNQSV9TSVpFX01BWCAgICAgICAgICAgICAgICAgICBBQ1BJX1VJTlQzMl9NQVgKIAotI2RlZmluZSBBTElHTkVEX0FERFJFU1NfQk9VTkRBUlkgICAgICAgIDB4MDAwMDAwMDQKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBUeXBlcyBzcGVjaWZpYyB0byAxNi1iaXQgdGFyZ2V0cwpAQCAtMjIzLDcgKzIyMiw2IEBACiAjZGVmaW5lIEFDUElfTUFYX1BUUiAgICAgICAgICAgICAgICAgICAgQUNQSV9VSU5UMTZfTUFYCiAjZGVmaW5lIEFDUElfU0laRV9NQVggICAgICAgICAgICAgICAgICAgQUNQSV9VSU5UMTZfTUFYCiAKLSNkZWZpbmUgQUxJR05FRF9BRERSRVNTX0JPVU5EQVJZICAgICAgICAweDAwMDAwMDAyCiAjZGVmaW5lIEFDUElfVVNFX05BVElWRV9ESVZJREUJLyogTm8gNjQtYml0IGludGVnZXJzLCBvayB0byB1c2UgbmF0aXZlIGRpdmlkZSAqLwogCiAvKiA2NC1iaXQgaW50ZWdlcnMgY2Fubm90IGJlIHN1cHBvcnRlZCAqLwpAQCAtMjU0LDcgKzI1Miw3IEBACiAvKiBVc2UgQzk5IHVpbnRwdHJfdCBmb3IgcG9pbnRlciBjYXN0aW5nIGlmIGF2YWlsYWJsZSwgInZvaWQgKiIgb3RoZXJ3aXNlICovCiAKICNpZm5kZWYgYWNwaV91aW50cHRyX3QKLSNkZWZpbmUgYWNwaV91aW50cHRyX3QgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKgorI2RlZmluZSBhY3BpX3VpbnRwdHJfdCAgICAgICAgICAgICAgICAgIHZvaWQgKgogI2VuZGlmCiAKIC8qCkBAIC0yNjMsNyArMjYxLDcgQEAKICAqIG1hbmFnZXIgaW1wbGVtZW50YXRpb24gaXMgdG8gYmUgdXNlZCAoQUNQSV9VU0VfTE9DQUxfQ0FDSEUpCiAgKi8KICNpZm5kZWYgYWNwaV9jYWNoZV90Ci0jZGVmaW5lIGFjcGlfY2FjaGVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNwaV9tZW1vcnlfbGlzdAorI2RlZmluZSBhY3BpX2NhY2hlX3QgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX21lbW9yeV9saXN0CiAjZW5kaWYKIAogLyoKQEAgLTI3MSw3ICsyNjksNyBAQAogICogbG9jayBhbmQgdW5sb2NrIE9TTCBpbnRlcmZhY2VzLgogICovCiAjaWZuZGVmIGFjcGlfY3B1X2ZsYWdzCi0jZGVmaW5lIGFjcGlfY3B1X2ZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICBhY3BpX25hdGl2ZV91aW50CisjZGVmaW5lIGFjcGlfY3B1X2ZsYWdzICAgICAgICAgICAgICAgICAgYWNwaV9uYXRpdmVfdWludAogI2VuZGlmCiAKIC8qCkBAIC0yOTIsNiArMjkwLDIxIEBACiAjZGVmaW5lIEFDUElfVU5VU0VEX1ZBUgogI2VuZGlmCiAKKy8qCisgKiBBbGwgQUNQSUNBIGZ1bmN0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBhcmUKKyAqIHRhZ2dlZCB3aXRoIHRoaXMgbWFjcm8gd2hpY2ggY2FuIGJlIGRlZmluZWQgYXMgYXBwcm9wcmlhdGUgZm9yIHRoZSBob3N0LgorICovCisjaWZuZGVmIEFDUElfRVhQT1JUX1NZTUJPTAorI2RlZmluZSBBQ1BJX0VYUE9SVF9TWU1CT0woc3ltYm9sKQorI2VuZGlmCisKKy8qCisgKiB0aHJlYWRfaWQgaXMgcmV0dXJuZWQgYnkgYWNwaV9vc19nZXRfdGhyZWFkX2lkLgorICovCisjaWZuZGVmIGFjcGlfdGhyZWFkX2lkCisjZGVmaW5lIGFjcGlfdGhyZWFkX2lkICAgICAgICAgICAgICAgICAgYWNwaV9uYXRpdmVfdWludAorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogSW5kZXBlbmRlbnQgdHlwZXMKQEAgLTQ3NywxNSArNDkwLDE1IEBACiAgKi8KIHR5cGVkZWYgdTMyIGFjcGlfdGFibGVfdHlwZTsKIAotI2RlZmluZSBBQ1BJX1RBQkxFX1JTRFAgICAgICAgICAgICAgICAgIChhY3BpX3RhYmxlX3R5cGUpIDAKLSNkZWZpbmUgQUNQSV9UQUJMRV9EU0RUICAgICAgICAgICAgICAgICAoYWNwaV90YWJsZV90eXBlKSAxCi0jZGVmaW5lIEFDUElfVEFCTEVfRkFEVCAgICAgICAgICAgICAgICAgKGFjcGlfdGFibGVfdHlwZSkgMgotI2RlZmluZSBBQ1BJX1RBQkxFX0ZBQ1MgICAgICAgICAgICAgICAgIChhY3BpX3RhYmxlX3R5cGUpIDMKLSNkZWZpbmUgQUNQSV9UQUJMRV9QU0RUICAgICAgICAgICAgICAgICAoYWNwaV90YWJsZV90eXBlKSA0Ci0jZGVmaW5lIEFDUElfVEFCTEVfU1NEVCAgICAgICAgICAgICAgICAgKGFjcGlfdGFibGVfdHlwZSkgNQotI2RlZmluZSBBQ1BJX1RBQkxFX1hTRFQgICAgICAgICAgICAgICAgIChhY3BpX3RhYmxlX3R5cGUpIDYKLSNkZWZpbmUgQUNQSV9UQUJMRV9NQVggICAgICAgICAgICAgICAgICA2Ci0jZGVmaW5lIE5VTV9BQ1BJX1RBQkxFX1RZUEVTICAgICAgICAgICAgKEFDUElfVEFCTEVfTUFYKzEpCisjZGVmaW5lIEFDUElfVEFCTEVfSURfUlNEUCAgICAgICAgICAgICAgKGFjcGlfdGFibGVfdHlwZSkgMAorI2RlZmluZSBBQ1BJX1RBQkxFX0lEX0RTRFQgICAgICAgICAgICAgIChhY3BpX3RhYmxlX3R5cGUpIDEKKyNkZWZpbmUgQUNQSV9UQUJMRV9JRF9GQURUICAgICAgICAgICAgICAoYWNwaV90YWJsZV90eXBlKSAyCisjZGVmaW5lIEFDUElfVEFCTEVfSURfRkFDUyAgICAgICAgICAgICAgKGFjcGlfdGFibGVfdHlwZSkgMworI2RlZmluZSBBQ1BJX1RBQkxFX0lEX1BTRFQgICAgICAgICAgICAgIChhY3BpX3RhYmxlX3R5cGUpIDQKKyNkZWZpbmUgQUNQSV9UQUJMRV9JRF9TU0RUICAgICAgICAgICAgICAoYWNwaV90YWJsZV90eXBlKSA1CisjZGVmaW5lIEFDUElfVEFCTEVfSURfWFNEVCAgICAgICAgICAgICAgKGFjcGlfdGFibGVfdHlwZSkgNgorI2RlZmluZSBBQ1BJX1RBQkxFX0lEX01BWCAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgQUNQSV9OVU1fVEFCTEVfVFlQRVMgICAgICAgICAgICAoQUNQSV9UQUJMRV9JRF9NQVgrMSkKIAogLyoKICAqIFR5cGVzIGFzc29jaWF0ZWQgd2l0aCBBQ1BJIG5hbWVzIGFuZCBvYmplY3RzLiAgVGhlIGZpcnN0IGdyb3VwIG9mCkBAIC04MTYsNyArODI5LDcgQEAKIAl1MzIgZGVidWdfbGV2ZWw7CiAJdTMyIGRlYnVnX2xheWVyOwogCXUzMiBudW1fdGFibGVfdHlwZXM7Ci0Jc3RydWN0IGFjcGlfdGFibGVfaW5mbyB0YWJsZV9pbmZvW05VTV9BQ1BJX1RBQkxFX1RZUEVTXTsKKwlzdHJ1Y3QgYWNwaV90YWJsZV9pbmZvIHRhYmxlX2luZm9bQUNQSV9UQUJMRV9JRF9NQVggKyAxXTsKIH07CiAKIC8qCkBAIC04NTgsNyArODcxLDcgQEAKIAkJCQkgICAgICB2b2lkICpoYW5kbGVyX2NvbnRleHQsCiAJCQkJICAgICAgdm9pZCAqcmVnaW9uX2NvbnRleHQpOwogCi0jZGVmaW5lIEFDUElfREVGQVVMVF9IQU5ETEVSICAgICAgICBOVUxMCisjZGVmaW5lIEFDUElfREVGQVVMVF9IQU5ETEVSICAgICAgICAgICAgTlVMTAogCiB0eXBlZGVmCiBhY3BpX3N0YXR1cygqYWNwaV9hZHJfc3BhY2Vfc2V0dXApIChhY3BpX2hhbmRsZSByZWdpb25faGFuZGxlLApAQCAtOTExLDEyICs5MjQsMTMgQEAKICNkZWZpbmUgQUNQSV9TVEFfREVWSUNFX1BSRVNFTlQgICAgICAgICAweDAxCiAjZGVmaW5lIEFDUElfU1RBX0RFVklDRV9FTkFCTEVEICAgICAgICAgMHgwMgogI2RlZmluZSBBQ1BJX1NUQV9ERVZJQ0VfVUkgICAgICAgICAgICAgIDB4MDQKLSNkZWZpbmUgQUNQSV9TVEFfREVWSUNFX09LICAgICAgICAgICAgICAweDA4CisjZGVmaW5lIEFDUElfU1RBX0RFVklDRV9GVU5DVElPTklORyAgICAgMHgwOAorI2RlZmluZSBBQ1BJX1NUQV9ERVZJQ0VfT0sgICAgICAgICAgICAgIDB4MDgJLyogU3lub255bSAqLwogI2RlZmluZSBBQ1BJX1NUQV9CQVRURVJZX1BSRVNFTlQgICAgICAgIDB4MTAKIAogI2RlZmluZSBBQ1BJX0NPTU1PTl9PQkpfSU5GTyBcCi0JYWNwaV9vYmplY3RfdHlwZSAgICAgICAgICAgICAgICAgICAgdHlwZTsgICAgICAgICAgIC8qIEFDUEkgb2JqZWN0IHR5cGUgKi8gXAotCWFjcGlfbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUJLyogQUNQSSBvYmplY3QgTmFtZSAqLworCWFjcGlfb2JqZWN0X3R5cGUgICAgICAgICAgICAgICAgdHlwZTsgICAgICAgICAgIC8qIEFDUEkgb2JqZWN0IHR5cGUgKi8gXAorCWFjcGlfbmFtZSAgICAgICAgICAgICAgICAgICAgICAgbmFtZQkvKiBBQ1BJIG9iamVjdCBOYW1lICovCiAKIHN0cnVjdCBhY3BpX29ial9pbmZvX2hlYWRlciB7CiAJQUNQSV9DT01NT05fT0JKX0lORk87CkBAIC05NTcsNyArOTcxLDcgQEAKICAqIERlZmluaXRpb25zIGZvciBSZXNvdXJjZSBBdHRyaWJ1dGVzCiAgKi8KIHR5cGVkZWYgdTE2IGFjcGlfcnNfbGVuZ3RoOwkvKiBSZXNvdXJjZSBMZW5ndGggZmllbGQgaXMgZml4ZWQgYXQgMTYgYml0cyAqLwotdHlwZWRlZiB1MzIgYWNwaV9yc2Rlc2Nfc2l6ZTsJLyogTWF4IFJlc291cmNlIERlc2NyaXB0b3Igc2l6ZSBpcyAobGVuZ3RoKzMpID0gKDY0X2stMSkrMyAqLwordHlwZWRlZiB1MzIgYWNwaV9yc2Rlc2Nfc2l6ZTsJLyogTWF4IFJlc291cmNlIERlc2NyaXB0b3Igc2l6ZSBpcyAoTGVuZ3RoKzMpID0gKDY0X2stMSkrMyAqLwogCiAvKgogICogIE1lbW9yeSBBdHRyaWJ1dGVzCkBAIC05NzIsOCArOTg2LDggQEAKIAogLyoKICAqICBJTyBBdHRyaWJ1dGVzCi0gKiAgVGhlIElTQSBJbyByYW5nZXMgYXJlOiAgICAgbjAwMC1uMF9mZmgsIG40MDAtbjRfZmZoLCBuODAwLW44X2ZmaCwgbl9jMDAtbl9jRkZoLgotICogIFRoZSBub24tSVNBIElvIHJhbmdlcyBhcmU6IG4xMDAtbjNfZmZoLCBuNTAwLW43X2ZmaCwgbjkwMC1uX2JGZmgsIG5fY2QwLW5fZkZGaC4KKyAqICBUaGUgSVNBIElPIHJhbmdlcyBhcmU6ICAgICBuMDAwLW4wX2ZGaCwgbjQwMC1uNF9mRmgsIG44MDAtbjhfZkZoLCBuX2MwMC1uX2NGRmguCisgKiAgVGhlIG5vbi1JU0EgSU8gcmFuZ2VzIGFyZTogbjEwMC1uM19mRmgsIG41MDAtbjdfZkZoLCBuOTAwLW5fYkZGaCwgbl9jZDAtbl9mRkZoLgogICovCiAjZGVmaW5lIEFDUElfTk9OX0lTQV9PTkxZX1JBTkdFUyAgICAgICAgKHU4KSAweDAxCiAjZGVmaW5lIEFDUElfSVNBX09OTFlfUkFOR0VTICAgICAgICAgICAgKHU4KSAweDAyCkBAIC0xMTcxLDEyICsxMTg1LDEyIEBACiAvKiBGaWVsZHMgY29tbW9uIHRvIGFsbCBhZGRyZXNzIGRlc2NyaXB0b3JzLCAxNi8zMi82NCBiaXQgKi8KIAogI2RlZmluZSBBQ1BJX1JFU09VUkNFX0FERFJFU1NfQ09NTU9OIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZV90eXBlOyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXJfY29uc3VtZXI7IFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGU7IFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fYWRkcmVzc19maXhlZDsgXAotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9hZGRyZXNzX2ZpeGVkOyBcCi0JdW5pb24gYWNwaV9yZXNvdXJjZV9hdHRyaWJ1dGUgICAgICAgaW5mbzsKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlX3R5cGU7IFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VyX2NvbnN1bWVyOyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGU7IFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9hZGRyZXNzX2ZpeGVkOyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfYWRkcmVzc19maXhlZDsgXAorCXVuaW9uIGFjcGlfcmVzb3VyY2VfYXR0cmlidXRlICAgaW5mbzsKIAogc3RydWN0IGFjcGlfcmVzb3VyY2VfYWRkcmVzcyB7CiBBQ1BJX1JFU09VUkNFX0FERFJFU1NfQ09NTU9OfTsKQEAgLTEyOTcsMTYgKzEzMTEsNiBAQAogCiAjZGVmaW5lIEFDUElfTkVYVF9SRVNPVVJDRShyZXMpICAgICAgICAgICAgIChzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqKSgodTggKikgcmVzICsgcmVzLT5sZW5ndGgpCiAKLSNpZm5kZWYgQUNQSV9NSVNBTElHTk1FTlRfTk9UX1NVUFBPUlRFRAotI2RlZmluZSBBQ1BJX0FMSUdOX1JFU09VUkNFX1NJWkUobGVuZ3RoKSAgICAobGVuZ3RoKQotI2Vsc2UKLSNkZWZpbmUgQUNQSV9BTElHTl9SRVNPVVJDRV9TSVpFKGxlbmd0aCkgICAgQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRChsZW5ndGgpCi0jZW5kaWYKLQotLyoKLSAqIEVORDogb2YgZGVmaW5pdGlvbnMgZm9yIFJlc291cmNlIEF0dHJpYnV0ZXMKLSAqLwotCiBzdHJ1Y3QgYWNwaV9wY2lfcm91dGluZ190YWJsZSB7CiAJdTMyIGxlbmd0aDsKIAl1MzIgcGluOwpAQCAtMTMxNSw4ICsxMzE5LDQgQEAKIAljaGFyIHNvdXJjZVs0XTsJCS8qIHBhZCB0byA2NCBiaXRzIHNvIHNpemVvZigpIHdvcmtzIGluIGFsbCBjYXNlcyAqLwogfTsKIAotLyoKLSAqIEVORDogb2YgZGVmaW5pdGlvbnMgZm9yIFBDSSBSb3V0aW5nIHRhYmxlcwotICovCi0KICNlbmRpZgkJCQkvKiBfX0FDVFlQRVNfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYWN1dGlscy5oIGIvaW5jbHVkZS9hY3BpL2FjdXRpbHMuaAppbmRleCAwOTI3NzY1Li5iYTAzOWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWN1dGlscy5oCisrKyBiL2luY2x1ZGUvYWNwaS9hY3V0aWxzLmgKQEAgLTUwLDI0ICs1MCwyNCBAQAogCiAjaWYgZGVmaW5lZChBQ1BJX0RJU0FTU0VNQkxFUikgfHwgZGVmaW5lZCAoQUNQSV9ERUJVR0dFUikKIAotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX0JNZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX2NvbmZpZ19kZWNvZGVbNF07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfY29uc3VtZV9kZWNvZGVbMl07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfREVDZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX0hFZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX2lvX2RlY29kZVsyXTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9MTGRlY29kZVsyXTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9tYXhfZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX01FTWRlY29kZVs0XTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9taW5fZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX01UUGRlY29kZVs0XTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9STkdkZWNvZGVbNF07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfUldkZWNvZGVbMl07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfU0hSZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX1NJWmRlY29kZVs0XTsKLWV4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9UUlNkZWNvZGVbMl07Ci1leHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfVFRQZGVjb2RlWzJdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX1RZUGRlY29kZVs0XTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9ibV9kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9jb25maWdfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfY29uc3VtZV9kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9kZWNfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfaGVfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfaW9fZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbGxfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbWF4X2RlY29kZVtdOworZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX21lbV9kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9taW5fZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfbXRwX2RlY29kZVtdOworZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX3JuZ19kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9yd19kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF9zaHJfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfc2l6X2RlY29kZVtdOworZXh0ZXJuIGNvbnN0IGNoYXIgKmFjcGlfZ2JsX3Ryc19kZWNvZGVbXTsKK2V4dGVybiBjb25zdCBjaGFyICphY3BpX2dibF90dHBfZGVjb2RlW107CitleHRlcm4gY29uc3QgY2hhciAqYWNwaV9nYmxfdHlwX2RlY29kZVtdOwogI2VuZGlmCiAKIC8qIFR5cGVzIGZvciBSZXNvdXJjZSBkZXNjcmlwdG9yIGVudHJpZXMgKi8KQEAgLTc4LDYgKzc4LDEyIEBACiAjZGVmaW5lIEFDUElfU01BTExfVkFSSUFCTEVfTEVOR1RIICAgICAgMwogCiB0eXBlZGVmCithY3BpX3N0YXR1cygqYWNwaV93YWxrX2FtbF9jYWxsYmFjaykgKHU4ICogYW1sLAorCQkJCSAgICAgIHUzMiBsZW5ndGgsCisJCQkJICAgICAgdTMyIG9mZnNldCwKKwkJCQkgICAgICB1OCByZXNvdXJjZV9pbmRleCwgdm9pZCAqKmNvbnRleHQpOworCit0eXBlZGVmCiBhY3BpX3N0YXR1cygqYWNwaV9wa2dfY2FsbGJhY2spICh1OCBvYmplY3RfdHlwZSwKIAkJCQkgdW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqIHNvdXJjZV9vYmplY3QsCiAJCQkJIHVuaW9uIGFjcGlfZ2VuZXJpY19zdGF0ZSAqIHN0YXRlLApAQCAtMjc3LDYgKzI4Myw4IEBACiAKIHZvaWQgYWNwaV91dF9kdW1wX2J1ZmZlcih1OCAqIGJ1ZmZlciwgdTMyIGNvdW50LCB1MzIgZGlzcGxheSwgdTMyIGNvbXBvbmVudF9pZCk7CiAKK3ZvaWQgYWNwaV91dF9kdW1wX2J1ZmZlcjIodTggKiBidWZmZXIsIHUzMiBjb3VudCwgdTMyIGRpc3BsYXkpOworCiB2b2lkIGFjcGlfdXRfcmVwb3J0X2Vycm9yKGNoYXIgKm1vZHVsZV9uYW1lLCB1MzIgbGluZV9udW1iZXIpOwogCiB2b2lkIGFjcGlfdXRfcmVwb3J0X2luZm8oY2hhciAqbW9kdWxlX25hbWUsIHUzMiBsaW5lX251bWJlcik7CkBAIC00NDUsNiArNDUzLDggQEAKIC8qCiAgKiB1dG1pc2MKICAqLwordTggYWNwaV91dF9pc19hbWxfdGFibGUoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSk7CisKIGFjcGlfc3RhdHVzIGFjcGlfdXRfYWxsb2NhdGVfb3duZXJfaWQoYWNwaV9vd25lcl9pZCAqIG93bmVyX2lkKTsKIAogdm9pZCBhY3BpX3V0X3JlbGVhc2Vfb3duZXJfaWQoYWNwaV9vd25lcl9pZCAqIG93bmVyX2lkKTsKQEAgLTQ2MCw3ICs0NzAsOSBAQAogCiB1OCBhY3BpX3V0X3ZhbGlkX2FjcGlfbmFtZSh1MzIgbmFtZSk7CiAKLXU4IGFjcGlfdXRfdmFsaWRfYWNwaV9jaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIpOworYWNwaV9uYW1lIGFjcGlfdXRfcmVwYWlyX25hbWUoYWNwaV9uYW1lIG5hbWUpOworCit1OCBhY3BpX3V0X3ZhbGlkX2FjcGlfY2hhcihjaGFyIGNoYXJhY3RlciwgYWNwaV9uYXRpdmVfdWludCBwb3NpdGlvbik7CiAKIGFjcGlfc3RhdHVzCiBhY3BpX3V0X3N0cnRvdWw2NChjaGFyICpzdHJpbmcsIHUzMiBiYXNlLCBhY3BpX2ludGVnZXIgKiByZXRfaW50ZWdlcik7CkBAIC00NjksNiArNDgxLDI1IEBACiAKICNkZWZpbmUgQUNQSV9BTllfQkFTRSAgICAgICAgMAogCit1MzIgYWNwaV91dF9kd29yZF9ieXRlX3N3YXAodTMyIHZhbHVlKTsKKwordm9pZCBhY3BpX3V0X3NldF9pbnRlZ2VyX3dpZHRoKHU4IHJldmlzaW9uKTsKKworI2lmZGVmIEFDUElfREVCVUdfT1VUUFVUCit2b2lkCithY3BpX3V0X2Rpc3BsYXlfaW5pdF9wYXRobmFtZSh1OCB0eXBlLAorCQkJICAgICAgc3RydWN0IGFjcGlfbmFtZXNwYWNlX25vZGUgKm9ial9oYW5kbGUsCisJCQkgICAgICBjaGFyICpwYXRoKTsKKyNlbmRpZgorCisvKgorICogdXRyZXNyYworICovCithY3BpX3N0YXR1cworYWNwaV91dF93YWxrX2FtbF9yZXNvdXJjZXModTggKiBhbWwsCisJCQkgICBhY3BpX3NpemUgYW1sX2xlbmd0aCwKKwkJCSAgIGFjcGlfd2Fsa19hbWxfY2FsbGJhY2sgdXNlcl9mdW5jdGlvbiwgdm9pZCAqKmNvbnRleHQpOworCiBhY3BpX3N0YXR1cyBhY3BpX3V0X3ZhbGlkYXRlX3Jlc291cmNlKHZvaWQgKmFtbCwgdTggKiByZXR1cm5faW5kZXgpOwogCiB1MzIgYWNwaV91dF9nZXRfZGVzY3JpcHRvcl9sZW5ndGgodm9pZCAqYW1sKTsKQEAgLTQ4MywyMCArNTE0LDYgQEAKIGFjcGlfdXRfZ2V0X3Jlc291cmNlX2VuZF90YWcodW5pb24gYWNwaV9vcGVyYW5kX29iamVjdCAqb2JqX2Rlc2MsCiAJCQkgICAgIHU4ICoqIGVuZF90YWcpOwogCi11OCBhY3BpX3V0X2dlbmVyYXRlX2NoZWNrc3VtKHU4ICogYnVmZmVyLCB1MzIgbGVuZ3RoKTsKLQotdTMyIGFjcGlfdXRfZHdvcmRfYnl0ZV9zd2FwKHUzMiB2YWx1ZSk7Ci0KLXZvaWQgYWNwaV91dF9zZXRfaW50ZWdlcl93aWR0aCh1OCByZXZpc2lvbik7Ci0KLSNpZmRlZiBBQ1BJX0RFQlVHX09VVFBVVAotdm9pZAotYWNwaV91dF9kaXNwbGF5X2luaXRfcGF0aG5hbWUodTggdHlwZSwKLQkJCSAgICAgIHN0cnVjdCBhY3BpX25hbWVzcGFjZV9ub2RlICpvYmpfaGFuZGxlLAotCQkJICAgICAgY2hhciAqcGF0aCk7Ci0KLSNlbmRpZgotCiAvKgogICogdXRtdXRleCAtIG11dGV4IHN1cHBvcnQKICAqLwpAQCAtNTIzLDE0ICs1NDAsMTUgQEAKIAogdm9pZCAqYWNwaV91dF9hbGxvY2F0ZShhY3BpX3NpemUgc2l6ZSwgdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSk7CiAKLXZvaWQgKmFjcGlfdXRfY2FsbG9jYXRlKGFjcGlfc2l6ZSBzaXplLCB1MzIgY29tcG9uZW50LCBjaGFyICptb2R1bGUsIHUzMiBsaW5lKTsKK3ZvaWQgKmFjcGlfdXRfYWxsb2NhdGVfemVyb2VkKGFjcGlfc2l6ZSBzaXplLAorCQkJICAgICAgdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSk7CiAKICNpZmRlZiBBQ1BJX0RCR19UUkFDS19BTExPQ0FUSU9OUwogdm9pZCAqYWNwaV91dF9hbGxvY2F0ZV9hbmRfdHJhY2soYWNwaV9zaXplIHNpemUsCiAJCQkJIHUzMiBjb21wb25lbnQsIGNoYXIgKm1vZHVsZSwgdTMyIGxpbmUpOwogCi12b2lkICphY3BpX3V0X2NhbGxvY2F0ZV9hbmRfdHJhY2soYWNwaV9zaXplIHNpemUsCi0JCQkJICB1MzIgY29tcG9uZW50LCBjaGFyICptb2R1bGUsIHUzMiBsaW5lKTsKK3ZvaWQgKmFjcGlfdXRfYWxsb2NhdGVfemVyb2VkX2FuZF90cmFjayhhY3BpX3NpemUgc2l6ZSwKKwkJCQkJdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSk7CiAKIHZvaWQKIGFjcGlfdXRfZnJlZV9hbmRfdHJhY2sodm9pZCAqYWRkcmVzcywgdTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlLCB1MzIgbGluZSk7CkBAIC01NDAsNiArNTU4LDExIEBACiAjZW5kaWYJCQkJLyogQUNQSV9GVVRVUkVfVVNBR0UgKi8KIAogdm9pZCBhY3BpX3V0X2R1bXBfYWxsb2NhdGlvbnModTMyIGNvbXBvbmVudCwgY2hhciAqbW9kdWxlKTsKKworYWNwaV9zdGF0dXMKK2FjcGlfdXRfY3JlYXRlX2xpc3QoY2hhciAqbGlzdF9uYW1lLAorCQkgICAgdTE2IG9iamVjdF9zaXplLCBzdHJ1Y3QgYWNwaV9tZW1vcnlfbGlzdCAqKnJldHVybl9jYWNoZSk7CisKICNlbmRpZgogCiAjZW5kaWYJCQkJLyogX0FDVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FtbGNvZGUuaCBiL2luY2x1ZGUvYWNwaS9hbWxjb2RlLmgKaW5kZXggMzc5NjRhNS4uY2YxODQyNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hY3BpL2FtbGNvZGUuaAorKysgYi9pbmNsdWRlL2FjcGkvYW1sY29kZS5oCkBAIC0xODAsOCArMTgwLDEwIEBACiAjZGVmaW5lIEFNTF9CQU5LX0ZJRUxEX09QICAgICAgICAgICAodTE2KSAweDViODcKICNkZWZpbmUgQU1MX0RBVEFfUkVHSU9OX09QICAgICAgICAgICh1MTYpIDB4NWI4OAkvKiBBQ1BJIDIuMCAqLwogCi0vKiBCb2d1cyBvcGNvZGVzICh0aGV5IGFyZSBhY3R1YWxseSB0d28gc2VwYXJhdGUgb3Bjb2RlcykgKi8KLQorLyoKKyAqIENvbWJpbmF0aW9uIG9wY29kZXMgKGFjdHVhbGx5IHR3byBvbmUtYnl0ZSBvcGNvZGVzKQorICogVXNlZCBieSB0aGUgZGlzYXNzZW1ibGVyIGFuZCBpX2FTTCBjb21waWxlcgorICovCiAjZGVmaW5lIEFNTF9MR1JFQVRFUkVRVUFMX09QICAgICAgICAodTE2KSAweDkyOTUKICNkZWZpbmUgQU1MX0xMRVNTRVFVQUxfT1AgICAgICAgICAgICh1MTYpIDB4OTI5NAogI2RlZmluZSBBTUxfTE5PVEVRVUFMX09QICAgICAgICAgICAgKHUxNikgMHg5MjkzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvYW1scmVzcmMuaCBiL2luY2x1ZGUvYWNwaS9hbWxyZXNyYy5oCmluZGV4IGZiNDczNTMuLmJlMDM4MTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9hbWxyZXNyYy5oCisrKyBiL2luY2x1ZGUvYWNwaS9hbWxyZXNyYy5oCkBAIC00MiwzOSArNDIsNDUgQEAKICAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KICAqLwogCisvKiBhY3Bpc3JjOnN0cnVjdF9kZWZzIC0tIGZvciBhY3Bpc3JjIGNvbnZlcnNpb24gKi8KKwogI2lmbmRlZiBfX0FNTFJFU1JDX0gKICNkZWZpbmUgX19BTUxSRVNSQ19ICiAKLSNkZWZpbmUgQVNMX1JFU05BTUVfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgICJfQURSIgotI2RlZmluZSBBU0xfUkVTTkFNRV9BTElHTk1FTlQgICAgICAgICAgICAgICAgICAgIl9BTE4iCi0jZGVmaW5lIEFTTF9SRVNOQU1FX0FERFJFU1NTUEFDRSAgICAgICAgICAgICAgICAiX0FTSSIKLSNkZWZpbmUgQVNMX1JFU05BTUVfQUNDRVNTU0laRSAgICAgICAgICAgICAgICAgICJfQVNaIgotI2RlZmluZSBBU0xfUkVTTkFNRV9UWVBFU1BFQ0lGSUNBVFRSSUJVVEVTICAgICAgIl9BVFQiCi0jZGVmaW5lIEFTTF9SRVNOQU1FX0JBU0VBRERSRVNTICAgICAgICAgICAgICAgICAiX0JBUyIKLSNkZWZpbmUgQVNMX1JFU05BTUVfQlVTTUFTVEVSICAgICAgICAgICAgICAgICAgICJfQk1fIgkvKiBNYXN0ZXIoMSksIFNsYXZlKDApICovCi0jZGVmaW5lIEFTTF9SRVNOQU1FX0RFQ09ERSAgICAgICAgICAgICAgICAgICAgICAiX0RFQyIKLSNkZWZpbmUgQVNMX1JFU05BTUVfRE1BICAgICAgICAgICAgICAgICAgICAgICAgICJfRE1BIgotI2RlZmluZSBBU0xfUkVTTkFNRV9ETUFUWVBFICAgICAgICAgICAgICAgICAgICAgIl9UWVAiCS8qIENvbXBhdGlibGUoMCksIEEoMSksIEIoMiksIEYoMykgKi8KLSNkZWZpbmUgQVNMX1JFU05BTUVfR1JBTlVMQVJJVFkgICAgICAgICAgICAgICAgICJfR1JBIgotI2RlZmluZSBBU0xfUkVTTkFNRV9JTlRFUlJVUFQgICAgICAgICAgICAgICAgICAgIl9JTlQiCi0jZGVmaW5lIEFTTF9SRVNOQU1FX0lOVEVSUlVQVExFVkVMICAgICAgICAgICAgICAiX0xMXyIJLyogYWN0aXZlX2xvKDEpLCBhY3RpdmVfaGkoMCkgKi8KLSNkZWZpbmUgQVNMX1JFU05BTUVfSU5URVJSVVBUU0hBUkUgICAgICAgICAgICAgICJfU0hSIgkvKiBTaGFyZWFibGUoMSksIG5vX3NoYXJlKDApICovCi0jZGVmaW5lIEFTTF9SRVNOQU1FX0lOVEVSUlVQVFRZUEUgICAgICAgICAgICAgICAiX0hFXyIJLyogRWRnZSgxKSwgTGV2ZWwoMCkgKi8KLSNkZWZpbmUgQVNMX1JFU05BTUVfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgICJfTEVOIgotI2RlZmluZSBBU0xfUkVTTkFNRV9NRU1BVFRSSUJVVEVTICAgICAgICAgICAgICAgIl9NVFAiCS8qIE1lbW9yeSgwKSwgUmVzZXJ2ZWQoMSksIEFDUEkoMiksIE5WUygzKSAqLwotI2RlZmluZSBBU0xfUkVTTkFNRV9NRU1UWVBFICAgICAgICAgICAgICAgICAgICAgIl9NRU0iCS8qIG5vbl9jYWNoZSgwKSwgQ2FjaGVhYmxlKDEpIENhY2hlK2NvbWJpbmUoMiksIENhY2hlK3ByZWZldGNoKDMpICovCi0jZGVmaW5lIEFTTF9SRVNOQU1FX01BWEFERFIgICAgICAgICAgICAgICAgICAgICAiX01BWCIKLSNkZWZpbmUgQVNMX1JFU05BTUVfTUlOQUREUiAgICAgICAgICAgICAgICAgICAgICJfTUlOIgotI2RlZmluZSBBU0xfUkVTTkFNRV9NQVhUWVBFICAgICAgICAgICAgICAgICAgICAgIl9NQUYiCi0jZGVmaW5lIEFTTF9SRVNOQU1FX01JTlRZUEUgICAgICAgICAgICAgICAgICAgICAiX01JRiIKLSNkZWZpbmUgQVNMX1JFU05BTUVfUkVHSVNURVJCSVRPRkZTRVQgICAgICAgICAgICJfUkJPIgotI2RlZmluZSBBU0xfUkVTTkFNRV9SRUdJU1RFUkJJVFdJRFRIICAgICAgICAgICAgIl9SQlciCi0jZGVmaW5lIEFTTF9SRVNOQU1FX1JBTkdFVFlQRSAgICAgICAgICAgICAgICAgICAiX1JORyIKLSNkZWZpbmUgQVNMX1JFU05BTUVfUkVBRFdSSVRFVFlQRSAgICAgICAgICAgICAgICJfUldfIgkvKiByZWFkX29ubHkoMCksIFdyaXRlYWJsZSAoMSkgKi8KLSNkZWZpbmUgQVNMX1JFU05BTUVfVFJBTlNMQVRJT04gICAgICAgICAgICAgICAgICJfVFJBIgotI2RlZmluZSBBU0xfUkVTTkFNRV9UUkFOU1RZUEUgICAgICAgICAgICAgICAgICAgIl9UUlMiCS8qIFNwYXJzZSgxKSwgRGVuc2UoMCkgKi8KLSNkZWZpbmUgQVNMX1JFU05BTUVfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICJfVFRQIgkvKiBUcmFuc2xhdGlvbigxKSwgU3RhdGljICgwKSAqLwotI2RlZmluZSBBU0xfUkVTTkFNRV9YRkVSVFlQRSAgICAgICAgICAgICAgICAgICAgIl9TSXoiCS8qIDgoMCksIDhfYW5kMTYoMSksIDE2KDIpICovCisvKgorICogUmVzb3VyY2UgZGVzY3JpcHRvciB0YWdzLCBhcyBkZWZpbmVkIGluIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24uCisgKiBVc2VkIHRvIHN5bWJvbGljYWxseSByZWZlcmVuY2UgZmllbGRzIHdpdGhpbiBhIGRlc2NyaXB0b3IuCisgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgICJfQURSIgorI2RlZmluZSBBQ1BJX1JFU1RBR19BTElHTk1FTlQgICAgICAgICAgICAgICAgICAgIl9BTE4iCisjZGVmaW5lIEFDUElfUkVTVEFHX0FERFJFU1NTUEFDRSAgICAgICAgICAgICAgICAiX0FTSSIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfQUNDRVNTU0laRSAgICAgICAgICAgICAgICAgICJfQVNaIgorI2RlZmluZSBBQ1BJX1JFU1RBR19UWVBFU1BFQ0lGSUNBVFRSSUJVVEVTICAgICAgIl9BVFQiCisjZGVmaW5lIEFDUElfUkVTVEFHX0JBU0VBRERSRVNTICAgICAgICAgICAgICAgICAiX0JBUyIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfQlVTTUFTVEVSICAgICAgICAgICAgICAgICAgICJfQk1fIgkvKiBNYXN0ZXIoMSksIFNsYXZlKDApICovCisjZGVmaW5lIEFDUElfUkVTVEFHX0RFQ09ERSAgICAgICAgICAgICAgICAgICAgICAiX0RFQyIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfRE1BICAgICAgICAgICAgICAgICAgICAgICAgICJfRE1BIgorI2RlZmluZSBBQ1BJX1JFU1RBR19ETUFUWVBFICAgICAgICAgICAgICAgICAgICAgIl9UWVAiCS8qIENvbXBhdGlibGUoMCksIEEoMSksIEIoMiksIEYoMykgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfR1JBTlVMQVJJVFkgICAgICAgICAgICAgICAgICJfR1JBIgorI2RlZmluZSBBQ1BJX1JFU1RBR19JTlRFUlJVUFQgICAgICAgICAgICAgICAgICAgIl9JTlQiCisjZGVmaW5lIEFDUElfUkVTVEFHX0lOVEVSUlVQVExFVkVMICAgICAgICAgICAgICAiX0xMXyIJLyogYWN0aXZlX2xvKDEpLCBhY3RpdmVfaGkoMCkgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfSU5URVJSVVBUU0hBUkUgICAgICAgICAgICAgICJfU0hSIgkvKiBTaGFyZWFibGUoMSksIG5vX3NoYXJlKDApICovCisjZGVmaW5lIEFDUElfUkVTVEFHX0lOVEVSUlVQVFRZUEUgICAgICAgICAgICAgICAiX0hFXyIJLyogRWRnZSgxKSwgTGV2ZWwoMCkgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgICJfTEVOIgorI2RlZmluZSBBQ1BJX1JFU1RBR19NRU1BVFRSSUJVVEVTICAgICAgICAgICAgICAgIl9NVFAiCS8qIE1lbW9yeSgwKSwgUmVzZXJ2ZWQoMSksIEFDUEkoMiksIE5WUygzKSAqLworI2RlZmluZSBBQ1BJX1JFU1RBR19NRU1UWVBFICAgICAgICAgICAgICAgICAgICAgIl9NRU0iCS8qIG5vbl9jYWNoZSgwKSwgQ2FjaGVhYmxlKDEpIENhY2hlK2NvbWJpbmUoMiksIENhY2hlK3ByZWZldGNoKDMpICovCisjZGVmaW5lIEFDUElfUkVTVEFHX01BWEFERFIgICAgICAgICAgICAgICAgICAgICAiX01BWCIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfTUlOQUREUiAgICAgICAgICAgICAgICAgICAgICJfTUlOIgorI2RlZmluZSBBQ1BJX1JFU1RBR19NQVhUWVBFICAgICAgICAgICAgICAgICAgICAgIl9NQUYiCisjZGVmaW5lIEFDUElfUkVTVEFHX01JTlRZUEUgICAgICAgICAgICAgICAgICAgICAiX01JRiIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfUkVHSVNURVJCSVRPRkZTRVQgICAgICAgICAgICJfUkJPIgorI2RlZmluZSBBQ1BJX1JFU1RBR19SRUdJU1RFUkJJVFdJRFRIICAgICAgICAgICAgIl9SQlciCisjZGVmaW5lIEFDUElfUkVTVEFHX1JBTkdFVFlQRSAgICAgICAgICAgICAgICAgICAiX1JORyIKKyNkZWZpbmUgQUNQSV9SRVNUQUdfUkVBRFdSSVRFVFlQRSAgICAgICAgICAgICAgICJfUldfIgkvKiByZWFkX29ubHkoMCksIFdyaXRlYWJsZSAoMSkgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfVFJBTlNMQVRJT04gICAgICAgICAgICAgICAgICJfVFJBIgorI2RlZmluZSBBQ1BJX1JFU1RBR19UUkFOU1RZUEUgICAgICAgICAgICAgICAgICAgIl9UUlMiCS8qIFNwYXJzZSgxKSwgRGVuc2UoMCkgKi8KKyNkZWZpbmUgQUNQSV9SRVNUQUdfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICJfVFRQIgkvKiBUcmFuc2xhdGlvbigxKSwgU3RhdGljICgwKSAqLworI2RlZmluZSBBQ1BJX1JFU1RBR19YRkVSVFlQRSAgICAgICAgICAgICAgICAgICAgIl9TSVoiCS8qIDgoMCksIDhfYW5kMTYoMSksIDE2KDIpICovCiAKIC8qIERlZmF1bHQgc2l6ZXMgZm9yICJzbWFsbCIgcmVzb3VyY2UgZGVzY3JpcHRvcnMgKi8KIApAQCAtMTA5LDcgKzExNSw3IEBACiAgKiBTTUFMTCBkZXNjcmlwdG9ycwogICovCiAjZGVmaW5lIEFNTF9SRVNPVVJDRV9TTUFMTF9IRUFERVJfQ09NTU9OIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yX3R5cGU7CisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yX3R5cGU7CiAKIHN0cnVjdCBhbWxfcmVzb3VyY2Vfc21hbGxfaGVhZGVyIHsKIEFNTF9SRVNPVVJDRV9TTUFMTF9IRUFERVJfQ09NTU9OfTsKQEAgLTE2Miw4ICsxNjgsOCBAQAogICogTEFSR0UgZGVzY3JpcHRvcnMKICAqLwogI2RlZmluZSBBTUxfUkVTT1VSQ0VfTEFSR0VfSEVBREVSX0NPTU1PTiBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcl90eXBlO1wKLQl1MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZV9sZW5ndGg7CisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yX3R5cGU7XAorCXUxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfbGVuZ3RoOwogCiBzdHJ1Y3QgYW1sX3Jlc291cmNlX2xhcmdlX2hlYWRlciB7CiBBTUxfUkVTT1VSQ0VfTEFSR0VfSEVBREVSX0NPTU1PTn07CkBAIC0xOTQsOSArMjAwLDkgQEAKIH07CiAKICNkZWZpbmUgQU1MX1JFU09VUkNFX0FERFJFU1NfQ09NTU9OIFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZV90eXBlOyBcCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7IFwKLQl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY19mbGFnczsKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlX3R5cGU7IFwKKwl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyBcCisJdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY19mbGFnczsKIAogc3RydWN0IGFtbF9yZXNvdXJjZV9hZGRyZXNzIHsKIEFNTF9SRVNPVVJDRV9MQVJHRV9IRUFERVJfQ09NTU9OIEFNTF9SRVNPVVJDRV9BRERSRVNTX0NPTU1PTn07CkBAIC0yNjYsNiArMjcyLDcgQEAKIHVuaW9uIGFtbF9yZXNvdXJjZSB7CiAJLyogRGVzY3JpcHRvciBoZWFkZXJzICovCiAKKwl1OCBkZXNjcmlwdG9yX3R5cGU7CiAJc3RydWN0IGFtbF9yZXNvdXJjZV9zbWFsbF9oZWFkZXIgc21hbGxfaGVhZGVyOwogCXN0cnVjdCBhbWxfcmVzb3VyY2VfbGFyZ2VfaGVhZGVyIGxhcmdlX2hlYWRlcjsKIApAQCAtMjk2LDkgKzMwMyw5IEBACiAJLyogVXRpbGl0eSBvdmVybGF5cyAqLwogCiAJc3RydWN0IGFtbF9yZXNvdXJjZV9hZGRyZXNzIGFkZHJlc3M7Ci0JdTMyIHUzMl9pdGVtOwotCXUxNiB1MTZfaXRlbTsKLQl1OCBVOGl0ZW07CisJdTMyIGR3b3JkX2l0ZW07CisJdTE2IHdvcmRfaXRlbTsKKwl1OCBieXRlX2l0ZW07CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9wZGNfaW50ZWwuaCBiL2luY2x1ZGUvYWNwaS9wZGNfaW50ZWwuaAppbmRleCAzZmE4MWQ1Li5jNTQ3MmJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvcGRjX2ludGVsLmgKKysrIGIvaW5jbHVkZS9hY3BpL3BkY19pbnRlbC5oCkBAIC0xOCw2ICsxOCwxMSBAQAogCQkJCQkgQUNQSV9QRENfQ19DMV9IQUxUIHwgXAogCQkJCQkgQUNQSV9QRENfUF9GRkgpCiAKKyNkZWZpbmUgQUNQSV9QRENfRVNUX0NBUEFCSUxJVFlfU1dTTVAJKEFDUElfUERDX1NNUF9DMVBUIHwgXAorCQkJCQkgQUNQSV9QRENfQ19DMV9IQUxUIHwgXAorCQkJCQkgQUNQSV9QRENfU01QX1BfU1dDT09SRCB8IFwKKwkJCQkJIEFDUElfUERDX1BfRkZIKQorCiAjZGVmaW5lIEFDUElfUERDX0NfQ0FQQUJJTElUWV9TTVAJKEFDUElfUERDX1NNUF9DMkMzIHwgXAogCQkJCQkgQUNQSV9QRENfU01QX0MxUFQgfCBcCiAJCQkJCSBBQ1BJX1BEQ19DX0MxX0hBTFQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FjcGkvcGxhdGZvcm0vYWNlbnYuaCBiL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2Vudi5oCmluZGV4IDIyM2VjNjQuLjQ1M2E0NjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2Vudi5oCisrKyBiL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2Vudi5oCkBAIC00OSwzMyArNDksNDEgQEAKICAqLwogCiAjaWZkZWYgQUNQSV9MSUJSQVJZCisvKgorICogTm90ZTogVGhlIG5vbi1kZWJ1ZyB2ZXJzaW9uIG9mIHRoZSBhY3BpX2xpYnJhcnkgZG9lcyBub3QgY29udGFpbiBhbnkKKyAqIGRlYnVnIHN1cHBvcnQsIGZvciBtaW5pbWltYWwgc2l6ZS4gVGhlIGRlYnVnIHZlcnNpb24gdXNlcyBBQ1BJX0ZVTExfREVCVUcKKyAqLwogI2RlZmluZSBBQ1BJX1VTRV9MT0NBTF9DQUNIRQogI2VuZGlmCiAKLSNpZmRlZiBBQ1BJX0RVTVBfQVBQCi0jaWZuZGVmIE1TRE9TCi0jZGVmaW5lIEFDUElfREVCVUdfT1VUUFVUCi0jZW5kaWYKLSNkZWZpbmUgQUNQSV9BUFBMSUNBVElPTgotI2RlZmluZSBBQ1BJX0RJU0FTU0VNQkxFUgotI2RlZmluZSBBQ1BJX05PX01FVEhPRF9FWEVDVVRJT04KLSNlbmRpZgotCi0jaWZkZWYgQUNQSV9FWEVDX0FQUAotI3VuZGVmIERFQlVHR0VSX1RIUkVBRElORwotI2RlZmluZSBERUJVR0dFUl9USFJFQURJTkcgICAgICBERUJVR0dFUl9TSU5HTEVfVEhSRUFERUQKLSNkZWZpbmUgQUNQSV9ERUJVR19PVVRQVVQKLSNkZWZpbmUgQUNQSV9BUFBMSUNBVElPTgotI2RlZmluZSBBQ1BJX0RFQlVHR0VSCi0jZGVmaW5lIEFDUElfRElTQVNTRU1CTEVSCi0jZGVmaW5lIEFDUElfTVVURVhfREVCVUcKLSNlbmRpZgotCiAjaWZkZWYgQUNQSV9BU0xfQ09NUElMRVIKICNkZWZpbmUgQUNQSV9ERUJVR19PVVRQVVQKICNkZWZpbmUgQUNQSV9BUFBMSUNBVElPTgogI2RlZmluZSBBQ1BJX0RJU0FTU0VNQkxFUgogI2RlZmluZSBBQ1BJX0NPTlNUQU5UX0VWQUxfT05MWQorI2RlZmluZSBBQ1BJX0xBUkdFX05BTUVTUEFDRV9OT0RFCisjZGVmaW5lIEFDUElfREFUQV9UQUJMRV9ESVNBU1NFTUJMWQorI2VuZGlmCisKKyNpZmRlZiBBQ1BJX0VYRUNfQVBQCisjdW5kZWYgREVCVUdHRVJfVEhSRUFESU5HCisjZGVmaW5lIERFQlVHR0VSX1RIUkVBRElORyAgICAgIERFQlVHR0VSX1NJTkdMRV9USFJFQURFRAorI2RlZmluZSBBQ1BJX0ZVTExfREVCVUcKKyNkZWZpbmUgQUNQSV9BUFBMSUNBVElPTgorI2RlZmluZSBBQ1BJX0RFQlVHR0VSCisjZGVmaW5lIEFDUElfTVVURVhfREVCVUcKKyNkZWZpbmUgQUNQSV9EQkdfVFJBQ0tfQUxMT0NBVElPTlMKKyNlbmRpZgorCisjaWZkZWYgQUNQSV9EQVNNX0FQUAorI2lmbmRlZiBNU0RPUworI2RlZmluZSBBQ1BJX0RFQlVHX09VVFBVVAorI2VuZGlmCisjZGVmaW5lIEFDUElfQVBQTElDQVRJT04KKyNkZWZpbmUgQUNQSV9ESVNBU1NFTUJMRVIKKyNkZWZpbmUgQUNQSV9OT19NRVRIT0RfRVhFQ1VUSU9OCisjZGVmaW5lIEFDUElfTEFSR0VfTkFNRVNQQUNFX05PREUKKyNkZWZpbmUgQUNQSV9EQVRBX1RBQkxFX0RJU0FTU0VNQkxZCiAjZW5kaWYKIAogI2lmZGVmIEFDUElfQVBQTElDQVRJT04KQEAgLTgzLDYgKzkxLDEyIEBACiAjZGVmaW5lIEFDUElfVVNFX0xPQ0FMX0NBQ0hFCiAjZW5kaWYKIAorI2lmZGVmIEFDUElfRlVMTF9ERUJVRworI2RlZmluZSBBQ1BJX0RFQlVHR0VSCisjZGVmaW5lIEFDUElfREVCVUdfT1VUUFVUCisjZGVmaW5lIEFDUElfRElTQVNTRU1CTEVSCisjZW5kaWYKKwogLyoKICAqIEVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24uICBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gaW50ZXJmYWNlIHRvIHRoZQogICogbG9jYWwgZ2VuZXJhdGlvbiBlbnZpcm9ubWVudC4KQEAgLTEzNyw3ICsxNTEsNyBAQAogI2VsaWYgZGVmaW5lZChNU0RPUykJCS8qIE11c3QgYXBwZWFyIGFmdGVyIFdJTjMyIGFuZCBXSU42NCBjaGVjayAqLwogI2luY2x1ZGUgImFjZG9zMTYuaCIKIAotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQogI2luY2x1ZGUgImFjZnJlZWJzZC5oIgogCiAjZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCkBAIC0xNjMsMTcgKzE3Nyw2IEBACiAKICNlbmRpZgogCi0vKgotICogTWVtb3J5IGFsbG9jYXRpb24gdHJhY2tpbmcuICBVc2VkIG9ubHkgaWYKLSAqIDEpIFRoaXMgaXMgdGhlIGRlYnVnIHZlcnNpb24KLSAqIDIpIFRoaXMgaXMgTk9UIGEgMTYtYml0IHZlcnNpb24gb2YgdGhlIGNvZGUgKG5vdCBlbm91Z2ggcmVhbC1tb2RlIG1lbW9yeSkKLSAqLwotI2lmZGVmIEFDUElfREVCVUdfT1VUUFVUCi0jaWYgQUNQSV9NQUNISU5FX1dJRFRIICE9IDE2Ci0jZGVmaW5lIEFDUElfREJHX1RSQUNLX0FMTE9DQVRJT05TCi0jZW5kaWYKLSNlbmRpZgotCiAvKiEgW0VuZF0gbm8gc291cmNlIGNvZGUgdHJhbnNsYXRpb24gISovCiAKIC8qCkBAIC0yNzEsOCArMjc0LDggQEAKIC8qCiAgKiBTdG9yYWdlIGFsaWdubWVudCBwcm9wZXJ0aWVzCiAgKi8KLSNkZWZpbmUgIF9BVVBCTkQgICAgICAgICAgICAgICAgKHNpemVvZiAoYWNwaV9uYXRpdmVfdWludCkgLSAxKQotI2RlZmluZSAgX0FETkJORCAgICAgICAgICAgICAgICAoc2l6ZW9mIChhY3BpX25hdGl2ZV91aW50KSAtIDEpCisjZGVmaW5lICBfQVVQQk5EICAgICAgICAgICAgICAgIChzaXplb2YgKGFjcGlfbmF0aXZlX2ludCkgLSAxKQorI2RlZmluZSAgX0FETkJORCAgICAgICAgICAgICAgICAoc2l6ZW9mIChhY3BpX25hdGl2ZV9pbnQpIC0gMSkKIAogLyoKICAqIFZhcmlhYmxlIGFyZ3VtZW50IGxpc3QgbWFjcm8gZGVmaW5pdGlvbnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2xpbnV4LmggYi9pbmNsdWRlL2FjcGkvcGxhdGZvcm0vYWNsaW51eC5oCmluZGV4IDNjNmE2MjAuLjI3N2QzNWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2xpbnV4LmgKKysrIGIvaW5jbHVkZS9hY3BpL3BsYXRmb3JtL2FjbGludXguaApAQCAtNTEsMjcgKzUxLDIyIEBACiAKICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CiAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+CiAjaW5jbHVkZSA8YXNtL2FjcGkuaD4KLQotI2RlZmluZSBzdHJ0b3VsIHNpbXBsZV9zdHJ0b3VsCi0KLSNkZWZpbmUgQUNQSV9NQUNISU5FX1dJRFRIICBCSVRTX1BFUl9MT05HCi0KLS8qIFR5cGUocykgZm9yIHRoZSBPU0wgKi8KLQotI2lmZGVmIEFDUElfVVNFX0xPQ0FMX0NBQ0hFCi0jZGVmaW5lIGFjcGlfY2FjaGVfdAlzdHJ1Y3QgYWNwaV9tZW1vcnlfbGlzdAotI2Vsc2UKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jZGVmaW5lIGFjcGlfY2FjaGVfdAlrbWVtX2NhY2hlX3QKLSNlbmRpZgorCisvKiBIb3N0LWRlcGVuZGVudCB0eXBlcyBhbmQgZGVmaW5lcyAqLworCisjZGVmaW5lIEFDUElfTUFDSElORV9XSURUSCAgICAgICAgICBCSVRTX1BFUl9MT05HCisjZGVmaW5lIGFjcGlfY2FjaGVfdCAgICAgICAgICAgICAgICAgICAgICAgIGttZW1fY2FjaGVfdAorI2RlZmluZSBBQ1BJX0VYUE9SVF9TWU1CT0woc3ltYm9sKSAgRVhQT1JUX1NZTUJPTChzeW1ib2wpOworI2RlZmluZSBzdHJ0b3VsICAgICAgICAgICAgICAgICAgICAgc2ltcGxlX3N0cnRvdWwKIAogLyogRnVsbCBuYW1lc3BhY2UgcGF0aG5hbWUgbGVuZ3RoIGxpbWl0IC0gYXJiaXRyYXJ5ICovCi0KICNkZWZpbmUgQUNQSV9QQVRITkFNRV9NQVggICAgICAgICAgICAgIDI1NgogCiAjZWxzZQkJCQkvKiAhX19LRVJORUxfXyAqLwpAQCAtMTAzLDQgKzk4LDggQEAKIAogI2RlZmluZSBhY3BpX2NwdV9mbGFncyB1bnNpZ25lZCBsb25nCiAKKyNkZWZpbmUgYWNwaV90aHJlYWRfaWQgdTMyCisKK3N0YXRpYyBpbmxpbmUgYWNwaV90aHJlYWRfaWQgYWNwaV9vc19nZXRfdGhyZWFkX2lkKHZvaWQpIHsgcmV0dXJuIDA7IH0KKwogI2VuZGlmCQkJCS8qIF9fQUNMSU5VWF9IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYWNwaS9wcm9jZXNzb3IuaAppbmRleCBlZjdkODNhLi43NzM3MWIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvcHJvY2Vzc29yLmgKKysrIGIvaW5jbHVkZS9hY3BpL3Byb2Nlc3Nvci5oCkBAIC0yLDYgKzIsNyBAQAogI2RlZmluZSBfX0FDUElfUFJPQ0VTU09SX0gKIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgogCiAjaW5jbHVkZSA8YXNtL2FjcGkuaD4KIApAQCAtMTcsNiArMTgsMTcgQEAKIAogI2RlZmluZSBBQ1BJX1BEQ19SRVZJU0lPTl9JRAkJMHgxCiAKKyNkZWZpbmUgQUNQSV9QU0RfUkVWMF9SRVZJU0lPTgkJMCAvKiBTdXBwb3J0IGZvciBfUFNEIGFzIGluIEFDUEkgMy4wICovCisjZGVmaW5lIEFDUElfUFNEX1JFVjBfRU5UUklFUwkJNQorCisvKgorICogVHlwZXMgb2YgY29vcmRpbmF0aW9uIGRlZmluZWQgaW4gQUNQSSAzLjAuIFNhbWUgbWFjcm9zIGNhbiBiZSB1c2VkIGFjcm9zcworICogUCwgQyBhbmQgVCBzdGF0ZXMKKyAqLworI2RlZmluZSBET01BSU5fQ09PUkRfVFlQRV9TV19BTEwJMHhmYworI2RlZmluZSBET01BSU5fQ09PUkRfVFlQRV9TV19BTlkJMHhmZAorI2RlZmluZSBET01BSU5fQ09PUkRfVFlQRV9IV19BTEwJMHhmZQorCiAvKiBQb3dlciBNYW5hZ2VtZW50ICovCiAKIHN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9jeDsKQEAgLTY1LDYgKzc3LDE0IEBACiAKIC8qIFBlcmZvcm1hbmNlIE1hbmFnZW1lbnQgKi8KIAorc3RydWN0IGFjcGlfcHNkX3BhY2thZ2UgeworCWFjcGlfaW50ZWdlciBudW1fZW50cmllczsKKwlhY3BpX2ludGVnZXIgcmV2aXNpb247CisJYWNwaV9pbnRlZ2VyIGRvbWFpbjsKKwlhY3BpX2ludGVnZXIgY29vcmRfdHlwZTsKKwlhY3BpX2ludGVnZXIgbnVtX3Byb2Nlc3NvcnM7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKwogc3RydWN0IGFjcGlfcGN0X3JlZ2lzdGVyIHsKIAl1OCBkZXNjcmlwdG9yOwogCXUxNiBsZW5ndGg7CkBAIC05MSw3ICsxMTEsOSBAQAogCXN0cnVjdCBhY3BpX3BjdF9yZWdpc3RlciBzdGF0dXNfcmVnaXN0ZXI7CiAJdW5zaWduZWQgaW50IHN0YXRlX2NvdW50OwogCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9weCAqc3RhdGVzOwotCisJc3RydWN0IGFjcGlfcHNkX3BhY2thZ2UgZG9tYWluX2luZm87CisJY3B1bWFza190IHNoYXJlZF9jcHVfbWFwOworCXVuc2lnbmVkIGludCBzaGFyZWRfdHlwZTsKIH07CiAKIC8qIFRocm90dGxpbmcgQ29udHJvbCAqLwpAQCAtMTYwLDYgKzE4Miw5IEBACiAJfSBwaWl4NDsKIH07CiAKK2V4dGVybiBpbnQgYWNwaV9wcm9jZXNzb3JfcHJlcmVnaXN0ZXJfcGVyZm9ybWFuY2UoCisJCXN0cnVjdCBhY3BpX3Byb2Nlc3Nvcl9wZXJmb3JtYW5jZSAqKnBlcmZvcm1hbmNlKTsKKwogZXh0ZXJuIGludCBhY3BpX3Byb2Nlc3Nvcl9yZWdpc3Rlcl9wZXJmb3JtYW5jZShzdHJ1Y3QgYWNwaV9wcm9jZXNzb3JfcGVyZm9ybWFuY2UKIAkJCQkJICAgICAgICpwZXJmb3JtYW5jZSwgdW5zaWduZWQgaW50IGNwdSk7CiBleHRlcm4gdm9pZCBhY3BpX3Byb2Nlc3Nvcl91bnJlZ2lzdGVyX3BlcmZvcm1hbmNlKHN0cnVjdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYWxwaGEvaXJxLmggYi9pbmNsdWRlL2FzbS1hbHBoYS9pcnEuaAppbmRleCBmNmRlMDMzLi45MTdiOWZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hbHBoYS9pcnEuaAorKysgYi9pbmNsdWRlL2FzbS1hbHBoYS9pcnEuaApAQCAtOTIsOCArOTIsNCBAQAogc3RydWN0IHB0X3JlZ3M7CiBleHRlcm4gdm9pZCAoKnBlcmZfaXJxKSh1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgcHRfcmVncyAqKTsKIAotc3RydWN0IGlycWFjdGlvbjsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQotCiAjZW5kaWYgLyogX0FMUEhBX0lSUV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hbHBoYS92Z2EuaCBiL2luY2x1ZGUvYXNtLWFscGhhL3ZnYS5oCmluZGV4IDhjYTRmNmIuLmVkMDZmNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFscGhhL3ZnYS5oCisrKyBiL2luY2x1ZGUvYXNtLWFscGhhL3ZnYS5oCkBAIC00Niw2ICs0Niw2IEBACiAjZGVmaW5lIHZnYV9yZWFkYihhKQlyZWFkYigodTggX19pb21lbSAqKShhKSkKICNkZWZpbmUgdmdhX3dyaXRlYih2LGEpCXdyaXRlYih2LCAodTggX19pb21lbSAqKShhKSkKIAotI2RlZmluZSBWR0FfTUFQX01FTSh4KQkoKHVuc2lnbmVkIGxvbmcpIGlvcmVtYXAoeCwgMCkpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykJKCh1bnNpZ25lZCBsb25nKSBpb3JlbWFwKHgsIHMpKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF9zcGkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF9zcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmY1ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwX3NwaS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfc3BpLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgSXZhbiBLb2tzaGF5c2t5CisgKiBDb3B5cmlnaHQgKEMpIFNBTiBQZW9wbGUKKyAqCisgKiBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UgKFNQSSkgcmVnaXN0ZXJzLgorICogQmFzZWQgb24gQVQ5MVJNOTIwMCBkYXRhc2hlZXQgcmV2aXNpb24gRS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgQVQ5MVJNOTIwMF9TUElfSAorI2RlZmluZSBBVDkxUk05MjAwX1NQSV9ICisKKyNkZWZpbmUgQVQ5MV9TUElfQ1IJCQkweDAwCQkvKiBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1NQSV9TUElFTgkJKDEgPDwgIDApCQkvKiBTUEkgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1NQSV9TUElESVMJCSgxIDw8ICAxKQkJLyogU1BJIERpc2FibGUgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX1NXUlNUCQkoMSA8PCAgNykJCS8qIFNQSSBTb2Z0d2FyZSBSZXNldCAqLworI2RlZmluZQkJQVQ5MV9TUElfTEFTVFhGRVIJKDEgPDwgMjQpCQkvKiBMYXN0IFRyYW5zZmVyIFtTQU05MjYxIG9ubHldICovCisKKyNkZWZpbmUgQVQ5MV9TUElfTVIJCQkweDA0CQkvKiBNb2RlIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1NQSV9NU1RSCQkoMSAgICA8PCAgMCkJCS8qIE1hc3Rlci9TbGF2ZSBNb2RlICovCisjZGVmaW5lCQlBVDkxX1NQSV9QUwkJKDEgICAgPDwgIDEpCQkvKiBQZXJpcGhlcmFsIFNlbGVjdCAqLworI2RlZmluZQkJCUFUOTFfU1BJX1BTX0ZJWEVECSgwIDw8IDEpCisjZGVmaW5lCQkJQVQ5MV9TUElfUFNfVkFSSUFCTEUJKDEgPDwgMSkKKyNkZWZpbmUJCUFUOTFfU1BJX1BDU0RFQwkJKDEgICAgPDwgIDIpCQkvKiBDaGlwIFNlbGVjdCBEZWNvZGUgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX0RJVjMyCQkoMSAgICA8PCAgMykJCS8qIENsb2NrIFNlbGVjdGlvbiAqLworI2RlZmluZQkJQVQ5MV9TUElfTU9ERkRJUwkoMSAgICA8PCAgNCkJCS8qIE1vZGUgRmF1bHQgRGV0ZWN0aW9uICovCisjZGVmaW5lCQlBVDkxX1NQSV9MTEIJCSgxICAgIDw8ICA3KQkJLyogTG9jYWwgTG9vcGJhY2sgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1NQSV9QQ1MJCSgweGYgIDw8IDE2KQkJLyogUGVyaXBoZXJhbCBDaGlwIFNlbGVjdCAqLworI2RlZmluZQkJQVQ5MV9TUElfRExZQkNTCQkoMHhmZiA8PCAyNCkJCS8qIERlbGF5IEJldHdlZW4gQ2hpcCBTZWxlY3RzICovCisKKyNkZWZpbmUgQVQ5MV9TUElfUkRSCQkweDA4CQkJLyogUmVjZWl2ZSBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1NQSV9SRAkJKDB4ZmZmZiA8PCAgMCkJCS8qIFJlY2VpdmUgRGF0YSAqLworI2RlZmluZQkJQVQ5MV9TUElfUENTCQkoMHhmCTw8IDE2KQkJLyogUGVyaXBoZXJhbCBDaGlwIFNlbGVjdCAqLworCisjZGVmaW5lIEFUOTFfU1BJX1REUgkJMHgwYwkJCS8qIFRyYW5zbWl0IERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX1RECQkoMHhmZmZmIDw8ICAwKQkJLyogVHJhbnNtaXQgRGF0YSAqLworI2RlZmluZQkJQVQ5MV9TUElfUENTCQkoMHhmCTw8IDE2KQkJLyogUGVyaXBoZXJhbCBDaGlwIFNlbGVjdCAqLworI2RlZmluZQkJQVQ5MV9TUElfTEFTVFhGRVIJKDEJPDwgMjQpCQkvKiBMYXN0IFRyYW5zZmVyIFtTQU05MjYxIG9ubHldICovCisKKyNkZWZpbmUgQVQ5MV9TUElfU1IJCTB4MTAJCQkvKiBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX1JEUkYJCSgxIDw8ICAwKQkJLyogUmVjZWl2ZSBEYXRhIFJlZ2lzdGVyIEZ1bGwgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX1REUkUJCSgxIDw8ICAxKQkJLyogVHJhbnNtaXQgRGF0YSBSZWdpc3RlciBGdWxsICovCisjZGVmaW5lCQlBVDkxX1NQSV9NT0RGCQkoMSA8PCAgMikJCS8qIE1vZGUgRmF1bHQgRXJyb3IgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX09WUkVTCQkoMSA8PCAgMykJCS8qIE92ZXJydW4gRXJyb3IgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1NQSV9FTkRSWAkJKDEgPDwgIDQpCQkvKiBFbmQgb2YgUlggYnVmZmVyICovCisjZGVmaW5lCQlBVDkxX1NQSV9FTkRUWAkJKDEgPDwgIDUpCQkvKiBFbmQgb2YgVFggYnVmZmVyICovCisjZGVmaW5lCQlBVDkxX1NQSV9SWEJVRkYJCSgxIDw8ICA2KQkJLyogUlggQnVmZmVyIEZ1bGwgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX1RYQlVGRQkJKDEgPDwgIDcpCQkvKiBUWCBCdWZmZXIgRW1wdHkgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX05TU1IJCSgxIDw8ICA4KQkJLyogTlNTIFJpc2luZyBbU0FNOTI2MSBvbmx5XSAqLworI2RlZmluZQkJQVQ5MV9TUElfVFhFTVBUWQkoMSA8PCAgOSkJCS8qIFRyYW5zbWlzc2lvbiBSZWdpc3RlciBFbXB0eSBbU0FNOTI2MSBvbmx5XSAqLworI2RlZmluZQkJQVQ5MV9TUElfU1BJRU5TCQkoMSA8PCAxNikJCS8qIFNQSSBFbmFibGUgU3RhdHVzICovCisKKyNkZWZpbmUgQVQ5MV9TUElfSUVSCQkweDE0CQkJLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1NQSV9JRFIJCTB4MTgJCQkvKiBJbnRlcnJ1cHQgRGlzYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1NQSV9JTVIJCTB4MWMJCQkvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLworCisjZGVmaW5lIEFUOTFfU1BJX0NTUihuKQkJKDB4MzAgKyAoKG4pICogNCkpCS8qIENoaXAgU2VsZWN0IFJlZ2lzdGVycyAwLTMgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX0NQT0wJCSgxICAgIDw8ICAwKQkJLyogQ2xvY2sgUG9sYXJpdHkgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX05DUEhBCQkoMSAgICA8PCAgMSkJCS8qIENsb2NrIFBoYXNlICovCisjZGVmaW5lCQlBVDkxX1NQSV9DU0FBVAkJKDEgICAgPDwgIDMpCQkvKiBDaGlwIFNlbGVjdCBBY3RpdmUgQWZ0ZXIgVHJhbnNmZXIgW1NBTTkyNjEgb25seV0gKi8KKyNkZWZpbmUJCUFUOTFfU1BJX0JJVFMJCSgweGYgIDw8ICA0KQkJLyogQml0cyBQZXIgVHJhbnNmZXIgKi8KKyNkZWZpbmUJCQlBVDkxX1NQSV9CSVRTXzgJCSgwIDw8IDQpCisjZGVmaW5lCQkJQVQ5MV9TUElfQklUU185CQkoMSA8PCA0KQorI2RlZmluZQkJCUFUOTFfU1BJX0JJVFNfMTAJKDIgPDwgNCkKKyNkZWZpbmUJCQlBVDkxX1NQSV9CSVRTXzExCSgzIDw8IDQpCisjZGVmaW5lCQkJQVQ5MV9TUElfQklUU18xMgkoNCA8PCA0KQorI2RlZmluZQkJCUFUOTFfU1BJX0JJVFNfMTMJKDUgPDwgNCkKKyNkZWZpbmUJCQlBVDkxX1NQSV9CSVRTXzE0CSg2IDw8IDQpCisjZGVmaW5lCQkJQVQ5MV9TUElfQklUU18xNQkoNyA8PCA0KQorI2RlZmluZQkJCUFUOTFfU1BJX0JJVFNfMTYJKDggPDwgNCkKKyNkZWZpbmUJCUFUOTFfU1BJX1NDQlIJCSgweGZmIDw8ICA4KQkJLyogU2VyaWFsIENsb2NrIEJhdWQgUmF0ZSAqLworI2RlZmluZQkJQVQ5MV9TUElfRExZQlMJCSgweGZmIDw8IDE2KQkJLyogRGVsYXkgYmVmb3JlIFNQQ0sgKi8KKyNkZWZpbmUJCUFUOTFfU1BJX0RMWUJDVAkJKDB4ZmYgPDwgMjQpCQkvKiBEZWxheSBiZXR3ZWVuIENvbnNlY3V0aXZlIFRyYW5zZmVycyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF9zc2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF9zc2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzg4MDIyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwX3NzYy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfc3NjLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIFNBTiBQZW9wbGUKKyAqCisgKiBTZXJpYWwgU3luY2hyb25vdXMgQ29udHJvbGxlciAoU1NDKSByZWdpc3RlcnMuCisgKiBCYXNlZCBvbiBBVDkxUk05MjAwIGRhdGFzaGVldCByZXZpc2lvbiBFLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBBVDkxUk05MjAwX1NTQ19ICisjZGVmaW5lIEFUOTFSTTkyMDBfU1NDX0gKKworI2RlZmluZSBBVDkxX1NTQ19DUgkJMHgwMAkvKiBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1NTQ19SWEVOCQkoMSA8PCAgMCkJLyogUmVjZWl2ZSBFbmFibGUgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1JYRElTCQkoMSA8PCAgMSkJLyogUmVjZWl2ZSBEaXNhYmxlICovCisjZGVmaW5lCQlBVDkxX1NTQ19UWEVOCQkoMSA8PCAgOCkJLyogVHJhbnNtaXQgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1NTQ19UWERJUwkJKDEgPDwgIDkpCS8qIFRyYW5zbWl0IERpc2FibGUgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1NXUlNUCQkoMSA8PCAxNSkJLyogU29mdHdhcmUgUmVzZXQgKi8KKworI2RlZmluZSBBVDkxX1NTQ19DTVIJCTB4MDQJLyogQ2xvY2sgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9TU0NfQ01SX0RJVgkoMHhmZmYgPDwgMCkJLyogQ2xvY2sgRGl2aWRlciAqLworCisjZGVmaW5lIEFUOTFfU1NDX1JDTVIJCTB4MTAJLyogUmVjZWl2ZSBDbG9jayBNb2RlIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1NTQ19DS1MJCSgzICAgIDw8ICAwKQkvKiBDbG9jayBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1NTQ19DS1NfRElWCQkoMCA8PCAwKQorI2RlZmluZQkJCUFUOTFfU1NDX0NLU19DTE9DSwkJKDEgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX1NTQ19DS1NfUElOCQkoMiA8PCAwKQorI2RlZmluZQkJQVQ5MV9TU0NfQ0tPCQkoNyAgICA8PCAgMikJLyogQ2xvY2sgT3V0cHV0IE1vZGUgU2VsZWN0aW9uICovCisjZGVmaW5lCQkJQVQ5MV9TU0NfQ0tPX05PTkUJCSgwIDw8IDIpCisjZGVmaW5lCQkJQVQ5MV9TU0NfQ0tPX0NPTlRJTlVPVVMJCSgxIDw8IDIpCisjZGVmaW5lCQlBVDkxX1NTQ19DS0kJCSgxICAgIDw8ICA1KQkvKiBDbG9jayBJbnZlcnNpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1NTQ19DS0lfRkFMTElORwkJKDAgPDwgNSkKKyNkZWZpbmUJCQlBVDkxX1NTQ19DS19SSVNJTkcJCSgxIDw8IDUpCisjZGVmaW5lCQlBVDkxX1NTQ19TVEFSVAkJKDB4ZiAgPDwgIDgpCS8qIFN0YXJ0IFNlbGVjdGlvbiAqLworI2RlZmluZQkJCUFUOTFfU1NDX1NUQVJUX0NPTlRJTlVPVVMJKDAgPDwgOCkKKyNkZWZpbmUJCQlBVDkxX1NTQ19TVEFSVF9UWF9SWAkJKDEgPDwgOCkKKyNkZWZpbmUJCQlBVDkxX1NTQ19TVEFSVF9MT1dfUkYJCSgyIDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9TU0NfU1RBUlRfSElHSF9SRgkJKDMgPDwgOCkKKyNkZWZpbmUJCQlBVDkxX1NTQ19TVEFSVF9GQUxMSU5HX1JGCSg0IDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9TU0NfU1RBUlRfUklTSU5HX1JGCSg1IDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9TU0NfU1RBUlRfTEVWRUxfUkYJCSg2IDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9TU0NfU1RBUlRfRURHRV9SRgkJKDcgPDwgOCkKKyNkZWZpbmUJCUFUOTFfU1NDX1NUVERMWQkJKDB4ZmYgPDwgMTYpCS8qIFN0YXJ0IERlbGF5ICovCisjZGVmaW5lCQlBVDkxX1NTQ19QRVJJT0QJCSgweGZmIDw8IDI0KQkvKiBQZXJpb2QgRGl2aWRlciBTZWxlY3Rpb24gKi8KKworI2RlZmluZSBBVDkxX1NTQ19SRk1SCQkweDE0CS8qIFJlY2VpdmUgRnJhbWUgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9TU0NfREFUQUxFTgkoMHgxZiA8PCAgMCkJLyogRGF0YSBMZW5ndGggKi8KKyNkZWZpbmUJCUFUOTFfU1NDX0xPT1AJCSgxICAgIDw8ICA1KQkvKiBMb29wIE1vZGUgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX01TQkYJCSgxICAgIDw8ICA3KQkvKiBNb3N0IFNpZ25pZmljYW50IEJpdCBGaXJzdCAqLworI2RlZmluZQkJQVQ5MV9TU0NfREFUTkIJCSgweGYgIDw8ICA4KQkvKiBEYXRhIE51bWJlciBwZXIgRnJhbWUgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX0ZTTEVOCQkoMHhmICA8PCAxNikJLyogRnJhbWUgU3luYyBMZW5ndGggKi8KKyNkZWZpbmUJCUFUOTFfU1NDX0ZTT1MJCSg3ICAgIDw8IDIwKQkvKiBGcmFtZSBTeW5jIE91dHB1dCBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1NTQ19GU09TX05PTkUJCSgwIDw8IDIwKQorI2RlZmluZQkJCUFUOTFfU1NDX0ZTT1NfTkVHQVRJVkUJCSgxIDw8IDIwKQorI2RlZmluZQkJCUFUOTFfU1NDX0ZTT1NfUE9TSVRJVkUJCSgyIDw8IDIwKQorI2RlZmluZQkJCUFUOTFfU1NDX0ZTT1NfTE9XCQkoMyA8PCAyMCkKKyNkZWZpbmUJCQlBVDkxX1NTQ19GU09TX0hJR0gJCSg0IDw8IDIwKQorI2RlZmluZQkJCUFUOTFfU1NDX0ZTT1NfVE9HR0xFCQkoNSA8PCAyMCkKKyNkZWZpbmUJCUFUOTFfU1NDX0ZTRURHRQkJKDEgICAgPDwgMjQpCS8qIEZyYW1lIFN5bmMgRWRnZSBEZXRlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1NTQ19GU0VER0VfUE9TSVRJVkUJKDAgPDwgMjQpCisjZGVmaW5lCQkJQVQ5MV9TU0NfRlNFREdFX05FR0FUSVZFCSgxIDw8IDI0KQorCisjZGVmaW5lIEFUOTFfU1NDX1RDTVIJCTB4MTgJLyogVHJhbnNtaXQgQ2xvY2sgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1NTQ19URk1SCQkweDFjCS8qIFRyYW5zbWl0IEZyYW0gTW9kZSBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9TU0NfREFUREVGCQkoMSA8PCAgNSkJLyogRGF0YSBEZWZhdWx0IFZhbHVlICovCisjZGVmaW5lCQlBVDkxX1NTQ19GU0RFTgkJKDEgPDwgMjMpCS8qIEZyYW1lIFN5bmMgRGF0YSBFbmFibGUgKi8KKworI2RlZmluZSBBVDkxX1NTQ19SSFIJCTB4MjAJLyogUmVjZWl2ZSBIb2xkaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfU1NDX1RIUgkJMHgyNAkvKiBUcmFuc21pdCBIb2xkaW5nIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfU1NDX1JTSFIJCTB4MzAJLyogUmVjZWl2ZSBTeW5jIEhvbGRpbmcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVQ5MV9TU0NfVFNIUgkJMHgzNAkvKiBUcmFuc21pdCBTeW5jIEhvbGRpbmcgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBBVDkxX1NTQ19TUgkJMHg0MAkvKiBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1RYUkRZCQkoMSA8PCAgMCkJLyogVHJhbnNtaXQgUmVhZHkgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1RYRU1QVFkJKDEgPDwgIDEpCS8qIFRyYW5zbWl0IEVtcHR5ICovCisjZGVmaW5lCQlBVDkxX1NTQ19FTkRUWAkJKDEgPDwgIDIpCS8qIEVuZCBvZiBUcmFuc21pc3Npb24gKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1RYQlVGRQkJKDEgPDwgIDMpCS8qIFRyYW5zbWl0IEJ1ZmZlciBFbXB0eSAqLworI2RlZmluZQkJQVQ5MV9TU0NfUlhSRFkJCSgxIDw8ICA0KQkvKiBSZWNlaXZlIFJlYWR5ICovCisjZGVmaW5lCQlBVDkxX1NTQ19PVlJVTgkJKDEgPDwgIDUpCS8qIFJlY2VpdmUgT3ZlcnJ1biAqLworI2RlZmluZQkJQVQ5MV9TU0NfRU5EUlgJCSgxIDw8ICA2KQkvKiBFbmQgb2YgUmVjZXB0aW9uICovCisjZGVmaW5lCQlBVDkxX1NTQ19SWEJVRkYJCSgxIDw8ICA3KQkvKiBSZWNlaXZlIEJ1ZmZlciBGdWxsICovCisjZGVmaW5lCQlBVDkxX1NTQ19UWFNZTgkJKDEgPDwgMTApCS8qIFRyYW5zbWl0IFN5bmMgKi8KKyNkZWZpbmUJCUFUOTFfU1NDX1JYU1lOCQkoMSA8PCAxMSkJLyogUmVjZWl2ZSBTeW5jICovCisjZGVmaW5lCQlBVDkxX1NTQ19UWEVOQQkJKDEgPDwgMTYpCS8qIFRyYW5zbWl0IEVuYWJsZSAqLworI2RlZmluZQkJQVQ5MV9TU0NfUlhFTkEJCSgxIDw8IDE3KQkvKiBSZWNlaXZlIEVuYWJsZSAqLworCisjZGVmaW5lIEFUOTFfU1NDX0lFUgkJMHg0NAkvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfU1NDX0lEUgkJMHg0OAkvKiBJbnRlcnJ1cHQgRGlzYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1NTQ19JTVIJCTB4NGMJLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfc3lzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfc3lzLmgKaW5kZXggMjkxMGQzNS4uMGY0YzEyZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwX3N5cy5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF9zeXMuaApAQCAtNjgsOCArNjgsMTcgQEAKICNkZWZpbmUgQVQ5MV9EQkdVX1JIUgkJKEFUOTFfREJHVSArIDB4MTgpCS8qIFJlY2VpdmVyIEhvbGRpbmcgUmVnaXN0ZXIgKi8KICNkZWZpbmUgQVQ5MV9EQkdVX1RIUgkJKEFUOTFfREJHVSArIDB4MWMpCS8qIFRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKi8KICNkZWZpbmUgQVQ5MV9EQkdVX0JSR1IJCShBVDkxX0RCR1UgKyAweDIwKQkvKiBCYXVkIFJhdGUgR2VuZXJhdG9yIFJlZ2lzdGVyICovCisKICNkZWZpbmUgQVQ5MV9EQkdVX0NJRFIJCShBVDkxX0RCR1UgKyAweDQwKQkvKiBDaGlwIElEIFJlZ2lzdGVyICovCiAjZGVmaW5lIEFUOTFfREJHVV9FWElECQkoQVQ5MV9EQkdVICsgMHg0NCkJLyogQ2hpcCBJRCBFeHRlbnNpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfQ0lEUl9WRVJTSU9OCSgweDFmIDw8IDApCQkvKiBWZXJzaW9uIG9mIHRoZSBEZXZpY2UgKi8KKyNkZWZpbmUJCUFUOTFfQ0lEUl9FUFJPQwkJKDcgICAgPDwgNSkJCS8qIEVtYmVkZGVkIFByb2Nlc3NvciAqLworI2RlZmluZQkJQVQ5MV9DSURSX05WUFNJWgkoMHhmICA8PCA4KQkJLyogTm9udm9sYXRpbGUgUHJvZ3JhbSBNZW1vcnkgU2l6ZSAqLworI2RlZmluZQkJQVQ5MV9DSURSX05WUFNJWjIJKDB4ZiAgPDwgMTIpCQkvKiBTZWNvbmQgTm9udm9sYXRpbGUgUHJvZ3JhbSBNZW1vcnkgU2l6ZSAqLworI2RlZmluZQkJQVQ5MV9DSURSX1NSQU1TSVoJKDB4ZiAgPDwgMTYpCQkvKiBJbnRlcm5hbCBTUkFNIFNpemUgKi8KKyNkZWZpbmUJCUFUOTFfQ0lEUl9BUkNICQkoMHhmZiA8PCAyMCkJCS8qIEFyY2hpdGVjdHVyZSBJZGVudGlmaWVyICovCisjZGVmaW5lCQlBVDkxX0NJRFJfTlZQVFlQCSg3ICAgIDw8IDI4KQkJLyogTm9udm9sYXRpbGUgUHJvZ3JhbSBNZW1vcnkgVHlwZSAqLworI2RlZmluZQkJQVQ5MV9DSURSX0VYVAkJKDEgICAgPDwgMzEpCQkvKiBFeHRlbnNpb24gRmxhZyAqLwogCiAKIC8qCkBAIC0yNDEsNyArMjUwLDcgQEAKICNkZWZpbmUJCUFUOTFfUlRDX1NFQwkJKDB4N2YgPDwgIDApCQkvKiBDdXJyZW50IFNlY29uZCAqLwogI2RlZmluZQkJQVQ5MV9SVENfTUlOCQkoMHg3ZiA8PCAgOCkJCS8qIEN1cnJlbnQgTWludXRlICovCiAjZGVmaW5lCQlBVDkxX1JUQ19IT1VSIAkJKDB4M2YgPDwgMTYpCQkvKiBDdXJyZW50IEhvdXIgKi8KLSNkZWZpbmUJCUF0OTFfUlRDX0FNUE0JCSgxICAgIDw8IDIyKQkJLyogQW50ZSBNZXJpZGllbSBQb3N0IE1lcmlkaWVtIEluZGljYXRvciAqLworI2RlZmluZQkJQVQ5MV9SVENfQU1QTQkJKDEgICAgPDwgMjIpCQkvKiBBbnRlIE1lcmlkaWVtIFBvc3QgTWVyaWRpZW0gSW5kaWNhdG9yICovCiAKICNkZWZpbmUJQVQ5MV9SVENfQ0FMUgkJKEFUOTFfUlRDICsgMHgwYykJLyogQ2FsZW5kYXIgUmVnaXN0ZXIgKi8KICNkZWZpbmUJCUFUOTFfUlRDX0NFTlQJCSgweDdmIDw8ICAwKQkJLyogQ3VycmVudCBDZW50dXJ5ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfdGMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF90Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZGE3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfdGMuaApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF90Yy5oCisgKgorICogQ29weXJpZ2h0IChDKSBTQU4gUGVvcGxlCisgKgorICogVGltZXIvQ291bnRlciBVbml0IChUQykgcmVnaXN0ZXJzLgorICogQmFzZWQgb24gQVQ5MVJNOTIwMCBkYXRhc2hlZXQgcmV2aXNpb24gRS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgQVQ5MVJNOTIwMF9UQ19ICisjZGVmaW5lIEFUOTFSTTkyMDBfVENfSAorCisjZGVmaW5lIEFUOTFfVENfQkNSCQkweGMwCQkvKiBUQyBCbG9jayBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1RDX1NZTkMJCSgxIDw8IDApCS8qIFN5bmNocm8gQ29tbWFuZCAqLworCisjZGVmaW5lIEFUOTFfVENfQk1SCQkweGM0CQkvKiBUQyBCbG9jayBNb2RlIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1RDX1RDMFhDMFMJCSgzIDw8IDApCS8qIEV4dGVybmFsIENsb2NrIFNpZ25hbCAwIFNlbGVjdGlvbiAqLworI2RlZmluZQkJCUFUOTFfVENfVEMwWEMwU19UQ0xLMAkJKDAgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX1RDX1RDMFhDMFNfTk9ORQkJKDEgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX1RDX1RDMFhDMFNfVElPQTEJCSgyIDw8IDApCisjZGVmaW5lCQkJQVQ5MV9UQ19UQzBYQzBTX1RJT0EyCQkoMyA8PCAwKQorI2RlZmluZQkJQVQ5MV9UQ19UQzFYQzFTCQkoMyA8PCAyKQkvKiBFeHRlcm5hbCBDbG9jayBTaWduYWwgMSBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1RDX1RDMVhDMVNfVENMSzEJCSgwIDw8IDIpCisjZGVmaW5lCQkJQVQ5MV9UQ19UQzFYQzFTX05PTkUJCSgxIDw8IDIpCisjZGVmaW5lCQkJQVQ5MV9UQ19UQzFYQzFTX1RJT0EwCQkoMiA8PCAyKQorI2RlZmluZQkJCUFUOTFfVENfVEMxWEMxU19USU9BMgkJKDMgPDwgMikKKyNkZWZpbmUJCUFUOTFfVENfVEMyWEMyUwkJKDMgPDwgNCkJLyogRXh0ZXJuYWwgQ2xvY2sgU2lnbmFsIDIgU2VsZWN0aW9uICovCisjZGVmaW5lCQkJQVQ5MV9UQ19UQzJYQzJTX1RDTEsyCQkoMCA8PCA0KQorI2RlZmluZQkJCUFUOTFfVENfVEMyWEMyU19OT05FCQkoMSA8PCA0KQorI2RlZmluZQkJCUFUOTFfVENfVEMyWEMyU19USU9BMAkJKDIgPDwgNCkKKyNkZWZpbmUJCQlBVDkxX1RDX1RDMlhDMlNfVElPQTEJCSgzIDw8IDQpCisKKworI2RlZmluZSBBVDkxX1RDX0NDUgkJMHgwMAkJLyogQ2hhbm5lbCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1RDX0NMS0VOCQkoMSA8PCAwKQkvKiBDb3VudGVyIENsb2NrIEVuYWJsZSBDb21tYW5kICovCisjZGVmaW5lCQlBVDkxX1RDX0NMS0RJUwkJKDEgPDwgMSkJLyogQ291bnRlciBDTG9jayBEaXNhYmxlIENvbW1hbmQgKi8KKyNkZWZpbmUJCUFUOTFfVENfU1dUUkcJCSgxIDw8IDIpCS8qIFNvZnR3YXJlIFRyaWdnZXIgQ29tbWFuZCAqLworCisjZGVmaW5lIEFUOTFfVENfQ01SCQkweDA0CQkvKiBDaGFubmVsIE1vZGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfVENfVENDTEtTCQkoNyA8PCAwKQkvKiBDYXB0dXJlL1dhdmVmb3JtIE1vZGU6IENsb2NrIFNlbGVjdGlvbiAqLworI2RlZmluZQkJCUFUOTFfVENfVElNRVJfQ0xPQ0sxCQkoMCA8PCAwKQorI2RlZmluZQkJCUFUOTFfVENfVElNRVJfQ0xPQ0syCQkoMSA8PCAwKQorI2RlZmluZQkJCUFUOTFfVENfVElNRVJfQ0xPQ0szCQkoMiA8PCAwKQorI2RlZmluZQkJCUFUOTFfVENfVElNRVJfQ0xPQ0s0CQkoMyA8PCAwKQorI2RlZmluZQkJCUFUOTFfVENfVElNRVJfQ0xPQ0s1CQkoNCA8PCAwKQorI2RlZmluZQkJCUFUOTFfVENfWEMwCQkJKDUgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX1RDX1hDMQkJCSg2IDw8IDApCisjZGVmaW5lCQkJQVQ5MV9UQ19YQzIJCQkoNyA8PCAwKQorI2RlZmluZQkJQVQ5MV9UQ19DTEtJCQkoMSA8PCAzKQkvKiBDYXB0dXJlL1dhdmVmb3JtIE1vZGU6IENsb2NrIEludmVydCAqLworI2RlZmluZQkJQVQ5MV9UQ19CVVJTVAkJKDMgPDwgNCkJLyogQ2FwdHVyZS9XYXZlZm9ybSBNb2RlOiBCdXJzdCBTaWduYWwgU2VsZWN0aW9uICovCisjZGVmaW5lCQlBVDkxX1RDX0xEQlNUT1AJCSgxIDw8IDYpCS8qIENhcHR1cmUgTW9kZTogQ291bnRlciBDbG9jayBTdG9wcGVkIHdpdGggVEIgTG9hZGluZyAqLworI2RlZmluZQkJQVQ5MV9UQ19MREJESVMJCSgxIDw8IDcpCS8qIENhcHR1cmUgTW9kZTogQ291bnRlciBDbG9jayBEaXNhYmxlIHdpdGggUkIgTG9hZGluZyAqLworI2RlZmluZQkJQVQ5MV9UQ19FVFJHRURHCQkoMyA8PCA4KQkvKiBDYXB0dXJlIE1vZGU6IEV4dGVybmFsIFRyaWdnZXIgRWRnZSBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCUFUOTFfVENfQUJFVFJHCQkoMSA8PCAxMCkJLyogQ2FwdHVyZSBNb2RlOiBUSU9BIG9yIFRJT0IgRXh0ZXJuYWwgVHJpZ2dlciBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCUFUOTFfVENfQ1BDVFJHCQkoMSA8PCAxNCkJLyogQ2FwdHVyZSBNb2RlOiBSQyBDb21wYXJlIFRyaWdnZXIgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1RDX1dBVkUJCSgxIDw8IDE1KQkvKiBDYXB0dXJlL1dhdmVmb3JtIG1vZGUgKi8KKyNkZWZpbmUJCUFUOTFfVENfTERSQQkJKDMgPDwgMTYpCS8qIENhcHR1cmUgTW9kZTogUkEgTG9hZGluZyBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCUFUOTFfVENfTERSQgkJKDMgPDwgMTgpCS8qIENhcHR1cmUgTW9kZTogUkIgTG9hZGluZyBTZWxlY3Rpb24gKi8KKworI2RlZmluZQkJQVQ5MV9UQ19DUENTVE9QCQkoMSA8PCAgNikJLyogV2F2ZWZvcm0gTW9kZTogQ291bnRlciBDbG9jayBTdG9wcGVkIHdpdGggUkMgQ29tcGFyZSAqLworI2RlZmluZQkJQVQ5MV9UQ19DUENESVMJCSgxIDw8ICA3KQkvKiBXYXZlZm9ybSBNb2RlOiBDb3VudGVyIENsb2NrIERpc2FibGUgd2l0aCBSQyBDb21wYXJlICovCisjZGVmaW5lCQlBVDkxX1RDX0VFVlRFREcJCSgzIDw8ICA4KQkvKiBXYXZlZm9ybSBNb2RlOiBFeHRlcm5hbCBFdmVudCBFZGdlIFNlbGVjdGlvbiAqLworI2RlZmluZQkJCUFUOTFfVENfRUVWVEVER19OT05FCQkoMCA8PCA4KQorI2RlZmluZQkJCUFUOTFfVENfRUVWVEVER19SSVNJTkcJCSgxIDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9UQ19FRVZURURHX0ZBTExJTkcJCSgyIDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9UQ19FRVZURURHX0JPVEgJCSgzIDw8IDgpCisjZGVmaW5lCQlBVDkxX1RDX0VFVlQJCSgzIDw8IDEwKQkvKiBXYXZlZm9ybSBNb2RlOiBFeHRlcm5hbCBFdmVudCBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1RDX0VFVlRfVElPQgkJKDAgPDwgMTApCisjZGVmaW5lCQkJQVQ5MV9UQ19FRVZUX1hDMAkJKDEgPDwgMTApCisjZGVmaW5lCQkJQVQ5MV9UQ19FRVZUX1hDMQkJKDIgPDwgMTApCisjZGVmaW5lCQkJQVQ5MV9UQ19FRVZUX1hDMgkJKDMgPDwgMTApCisjZGVmaW5lCQlBVDkxX1RDX0VORVRSRwkJKDEgPDwgMTIpCS8qIFdhdmVmb3JtIE1vZGU6IEV4dGVybmFsIEV2ZW50IFRyaWdnZXIgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1RDX1dBVkVTRUwJCSgzIDw8IDEzKQkvKiBXYXZlZm9ybSBNb2RlOiBXYXZlZm9ybSBTZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX1RDX1dBVkVTRUxfVVAJCSgwIDw8IDEzKQorI2RlZmluZQkJCUFUOTFfVENfV0FWRVNFTF9VUF9BVVRPCQkoMiA8PCAxMykKKyNkZWZpbmUJCQlBVDkxX1RDX1dBVkVTRUxfVVBET1dOCQkoMSA8PCAxMykKKyNkZWZpbmUJCQlBVDkxX1RDX1dBVkVTRUxfVVBET1dOX0FVVE8JKDMgPDwgMTMpCisjZGVmaW5lCQlBVDkxX1RDX0FDUEEJCSgzIDw8IDE2KQkvKiBXYXZlZm9ybSBNb2RlOiBSQSBDb21wYXJlIEVmZmVjdCBvbiBUSU9BICovCisjZGVmaW5lCQkJQVQ5MV9UQ19BQ1BBX05PTkUJCSgwIDw8IDE2KQorI2RlZmluZQkJCUFUOTFfVENfQUNQQV9TRVQJCSgxIDw8IDE2KQorI2RlZmluZQkJCUFUOTFfVENfQUNQQV9DTEVBUgkJKDIgPDwgMTYpCisjZGVmaW5lCQkJQVQ5MV9UQ19BQ1BBX1RPR0dMRQkJKDMgPDwgMTYpCisjZGVmaW5lCQlBVDkxX1RDX0FDUEMJCSgzIDw8IDE4KQkvKiBXYXZlZm9ybSBNb2RlOiBSQyBDb21wcmUgRWZmZWN0IG9uIFRJT0EgKi8KKyNkZWZpbmUJCQlBVDkxX1RDX0FDUENfTk9ORQkJKDAgPDwgMTgpCisjZGVmaW5lCQkJQVQ5MV9UQ19BQ1BDX1NFVAkJKDEgPDwgMTgpCisjZGVmaW5lCQkJQVQ5MV9UQ19BQ1BDX0NMRUFSCQkoMiA8PCAxOCkKKyNkZWZpbmUJCQlBVDkxX1RDX0FDUENfVE9HR0xFCQkoMyA8PCAxOCkKKyNkZWZpbmUJCUFUOTFfVENfQUVFVlQJCSgzIDw8IDIwKQkvKiBXYXZlZm9ybSBNb2RlOiBFeHRlcm5hbCBFdmVudCBFZmZlY3Qgb24gVElPQSAqLworI2RlZmluZQkJCUFUOTFfVENfQUVFVlRfTk9ORQkJKDAgPDwgMjApCisjZGVmaW5lCQkJQVQ5MV9UQ19BRUVWVF9TRVQJCSgxIDw8IDIwKQorI2RlZmluZQkJCUFUOTFfVENfQUVFVlRfQ0xFQVIJCSgyIDw8IDIwKQorI2RlZmluZQkJCUFUOTFfVENfQUVFVlRfVE9HR0xFCQkoMyA8PCAyMCkKKyNkZWZpbmUJCUFUOTFfVENfQVNXVFJHCQkoMyA8PCAyMikJLyogV2F2ZWZvcm0gTW9kZTogU29mdHdhcmUgVHJpZ2dlciBFZmZlY3Qgb24gVElPQSAqLworI2RlZmluZQkJCUFUOTFfVENfQVNXVFJHX05PTkUJCSgwIDw8IDIyKQorI2RlZmluZQkJCUFUOTFfVENfQVNXVFJHX1NFVAkJKDEgPDwgMjIpCisjZGVmaW5lCQkJQVQ5MV9UQ19BU1dUUkdfQ0xFQVIJCSgyIDw8IDIyKQorI2RlZmluZQkJCUFUOTFfVENfQVNXVFJHX1RPR0dMRQkJKDMgPDwgMjIpCisjZGVmaW5lCQlBVDkxX1RDX0JDUEIJCSgzIDw8IDI0KQkvKiBXYXZlZm9ybSBNb2RlOiBSQiBDb21wYXJlIEVmZmVjdCBvbiBUSU9CICovCisjZGVmaW5lCQkJQVQ5MV9UQ19CQ1BCX05PTkUJCSgwIDw8IDI0KQorI2RlZmluZQkJCUFUOTFfVENfQkNQQl9TRVQJCSgxIDw8IDI0KQorI2RlZmluZQkJCUFUOTFfVENfQkNQQl9DTEVBUgkJKDIgPDwgMjQpCisjZGVmaW5lCQkJQVQ5MV9UQ19CQ1BCX1RPR0dMRQkJKDMgPDwgMjQpCisjZGVmaW5lCQlBVDkxX1RDX0JDUEMJCSgzIDw8IDI2KQkvKiBXYXZlZm9ybSBNb2RlOiBSQyBDb21wYXJlIEVmZmVjdCBvbiBUSU9CICovCisjZGVmaW5lCQkJQVQ5MV9UQ19CQ1BDX05PTkUJCSgwIDw8IDI2KQorI2RlZmluZQkJCUFUOTFfVENfQkNQQ19TRVQJCSgxIDw8IDI2KQorI2RlZmluZQkJCUFUOTFfVENfQkNQQ19DTEVBUgkJKDIgPDwgMjYpCisjZGVmaW5lCQkJQVQ5MV9UQ19CQ1BDX1RPR0dMRQkJKDMgPDwgMjYpCisjZGVmaW5lCQlBVDkxX1RDX0JFRVZUCQkoMyA8PCAyOCkJLyogV2F2ZWZvcm0gTW9kZTogRXh0ZXJuYWwgRXZlbnQgRWZmZWN0IG9uIFRJT0IgKi8KKyNkZWZpbmUJCQlBVDkxX1RDX0JFRVZUX05PTkUJCSgwIDw8IDI4KQorI2RlZmluZQkJCUFUOTFfVENfQkVFVlRfU0VUCQkoMSA8PCAyOCkKKyNkZWZpbmUJCQlBVDkxX1RDX0JFRVZUX0NMRUFSCQkoMiA8PCAyOCkKKyNkZWZpbmUJCQlBVDkxX1RDX0JFRVZUX1RPR0dMRQkJKDMgPDwgMjgpCisjZGVmaW5lCQlBVDkxX1RDX0JTV1RSRwkJKDMgPDwgMzApCS8qIFdhdmVmb3JtIE1vZGU6IFNvZnR3YXJlIFRyaWdnZXIgRWZmZWN0IG9uIFRJT0IgKi8KKyNkZWZpbmUJCQlBVDkxX1RDX0JTV1RSR19OT05FCQkoMCA8PCAzMCkKKyNkZWZpbmUJCQlBVDkxX1RDX0JTV1RSR19TRVQJCSgxIDw8IDMwKQorI2RlZmluZQkJCUFUOTFfVENfQlNXVFJHX0NMRUFSCQkoMiA8PCAzMCkKKyNkZWZpbmUJCQlBVDkxX1RDX0JTV1RSR19UT0dHTEUJCSgzIDw8IDMwKQorCisjZGVmaW5lIEFUOTFfVENfQ1YJCTB4MTAJCS8qIENvdW50ZXIgVmFsdWUgKi8KKyNkZWZpbmUgQVQ5MV9UQ19SQQkJMHgxNAkJLyogUmVnaXN0ZXIgQSAqLworI2RlZmluZSBBVDkxX1RDX1JCCQkweDE4CQkvKiBSZWdpc3RlciBCICovCisjZGVmaW5lIEFUOTFfVENfUkMJCTB4MWMJCS8qIFJlZ2lzdGVyIEMgKi8KKworI2RlZmluZSBBVDkxX1RDX1NSCQkweDIwCQkvKiBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfVENfQ09WRlMJCSgxIDw8ICAwKQkvKiBDb3VudGVyIE92ZXJmbG93IFN0YXR1cyAqLworI2RlZmluZQkJQVQ5MV9UQ19MT1ZSUwkJKDEgPDwgIDEpCS8qIExvYWQgT3ZlcnJ1biBTdGF0dXMgKi8KKyNkZWZpbmUJCUFUOTFfVENfQ1BBUwkJKDEgPDwgIDIpCS8qIFJBIENvbXBhcmUgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1RDX0NQQlMJCSgxIDw8ICAzKQkvKiBSQiBDb21wYXJlIFN0YXR1cyAqLworI2RlZmluZQkJQVQ5MV9UQ19DUENTCQkoMSA8PCAgNCkJLyogUkMgQ29tcGFyZSBTdGF0dXMgKi8KKyNkZWZpbmUJCUFUOTFfVENfTERSQVMJCSgxIDw8ICA1KQkvKiBSQSBMb2FkaW5nIFN0YXR1cyAqLworI2RlZmluZQkJQVQ5MV9UQ19MRFJCUwkJKDEgPDwgIDYpCS8qIFJCIExvYWRpbmcgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1RDX0VUUkdTCQkoMSA8PCAgNykJLyogRXh0ZXJuYWwgVHJpZ2dlciBTdGF0dXMgKi8KKyNkZWZpbmUJCUFUOTFfVENfQ0xLU1RBCQkoMSA8PCAxNikJLyogQ2xvY2sgRW5hYmxpbmcgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1RDX01USU9BCQkoMSA8PCAxNykJLyogVElPQSBNaXJyb3IgKi8KKyNkZWZpbmUJCUFUOTFfVENfTVRJT0IJCSgxIDw8IDE4KQkvKiBUSU9CIE1pcnJvciAqLworCisjZGVmaW5lIEFUOTFfVENfSUVSCQkweDI0CQkvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfVENfSURSCQkweDI4CQkvKiBJbnRlcnJ1cHQgRGlzYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1RDX0lNUgkJMHgyYwkJLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfdWRwLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfdWRwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUxZTNmNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF91ZHAuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwX3VkcC5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEl2YW4gS29rc2hheXNreQorICogQ29weXJpZ2h0IChDKSBTQU4gUGVvcGxlCisgKgorICogVVNCIERldmljZSBQb3J0IChVRFApIHJlZ2lzdGVycy4KKyAqIEJhc2VkIG9uIEFUOTFSTTkyMDAgZGF0YXNoZWV0IHJldmlzaW9uIEUuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIEFUOTFSTTkyMDBfVURQX0gKKyNkZWZpbmUgQVQ5MVJNOTIwMF9VRFBfSAorCisjZGVmaW5lIEFUOTFfVURQX0ZSTV9OVU0JMHgwMAkJLyogRnJhbWUgTnVtYmVyIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1VEUF9OVU0JCSgweDdmZiA8PCAgMCkJCS8qIEZyYW1lIE51bWJlciAqLworI2RlZmluZQkJQVQ5MV9VRFBfRlJNX0VSUgkoMSAgICAgPDwgMTYpCQkvKiBGcmFtZSBFcnJvciAqLworI2RlZmluZQkJQVQ5MV9VRFBfRlJNX09LCQkoMSAgICAgPDwgMTcpCQkvKiBGcmFtZSBPSyAqLworCisjZGVmaW5lIEFUOTFfVURQX0dMQl9TVEFUCTB4MDQJCS8qIEdsb2JhbCBTdGF0ZSBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9VRFBfRkFEREVOCQkoMSA8PCAgMCkJCS8qIEZ1bmN0aW9uIEFkZHJlc3MgRW5hYmxlICovCisjZGVmaW5lCQlBVDkxX1VEUF9DT05GRwkJKDEgPDwgIDEpCQkvKiBDb25maWd1cmVkICovCisjZGVmaW5lCQlBVDkxX1VEUF9FU1IJCSgxIDw8ICAyKQkJLyogRW5hYmxlIFNlbmQgUmVzdW1lICovCisjZGVmaW5lCQlBVDkxX1VEUF9SU01JTlBSCSgxIDw8ICAzKQkJLyogUmVzdW1lIGhhcyBiZWVuIHNlbnQgKi8KKyNkZWZpbmUJCUFUOTFfVURQX1JNV1VQRQkJKDEgPDwgIDQpCQkvKiBSZW1vdGUgV2FrZSBVcCBFbmFibGUgKi8KKworI2RlZmluZSBBVDkxX1VEUF9GQUREUgkJMHgwOAkJLyogRnVuY3Rpb24gQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9VRFBfRkFERAkJKDB4N2YgPDwgMCkJCS8qIEZ1bmN0aW9uIEFkZHJlc3MgVmFsdWUgKi8KKyNkZWZpbmUJCUFUOTFfVURQX0ZFTgkJKDEgICAgPDwgOCkJCS8qIEZ1bmN0aW9uIEVuYWJsZSAqLworCisjZGVmaW5lIEFUOTFfVURQX0lFUgkJMHgxMAkJLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxX1VEUF9JRFIJCTB4MTQJCS8qIEludGVycnVwdCBEaXNhYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfVURQX0lNUgkJMHgxOAkJLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBBVDkxX1VEUF9JU1IJCTB4MWMJCS8qIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfVURQX0VQKG4pCQkoMSA8PCAobikpCQkvKiBFbmRwb2ludCBJbnRlcnJ1cHQgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1VEUF9SWFNVU1AJCSgxIDw8ICA4KQkJLyogVVNCIFN1c3BlbmQgSW50ZXJydXB0IFN0YXR1cyAqLworI2RlZmluZQkJQVQ5MV9VRFBfUlhSU00JCSgxIDw8ICA5KQkJLyogVVNCIFJlc3VtZSBJbnRlcnJ1cHQgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1VEUF9FWFRSU00JCSgxIDw8IDEwKQkJLyogRXh0ZXJuYWwgUmVzdW1lIEludGVycnVwdCBTdGF0dXMgKi8KKyNkZWZpbmUJCUFUOTFfVURQX1NPRklOVAkJKDEgPDwgMTEpCQkvKiBTdGFydCBvZiBGcmFtZSBJbnRlcnJ1cHQgU3RhdHVzICovCisjZGVmaW5lCQlBVDkxX1VEUF9FTkRCVVNSRVMJKDEgPDwgMTIpCQkvKiBFbmQgb2YgQnVzIFJlc2V0IEludGVycnB0IFN0YXR1cyAqLworI2RlZmluZQkJQVQ5MV9VRFBfV0FLRVVQCQkoMSA8PCAxMykJCS8qIFVTQiBXYWtldXAgSW50ZXJydXB0IFN0YXR1cyAqLworCisjZGVmaW5lIEFUOTFfVURQX0lDUgkJMHgyMAkJLyogSW50ZXJydXB0IENsZWFyIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfVURQX1JTVF9FUAkJMHgyOAkJLyogUmVzZXQgRW5kcG9pbnQgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBBVDkxX1VEUF9DU1IobikJCSgweDMwICsgKChuKSAqIDQpKQkvKiBFbmRwb2ludCBDb250cm9sL1N0YXR1cyBSZWdpc3RlcnMgMC03ICovCisjZGVmaW5lCQlBVDkxX1VEUF9UWENPTVAJCSgxIDw8ICAwKQkJLyogR2VuZXJhdGVzIElOIHBhY2tldCB3aXRoIGRhdGEgcHJldmlvdXNseSB3cml0dGVuIGluIERQUiAqLworI2RlZmluZQkJQVQ5MV9VRFBfUlhfREFUQV9CSzAJKDEgPDwgIDEpCQkvKiBSZWNlaXZlIERhdGEgQmFuayAwICovCisjZGVmaW5lCQlBVDkxX1VEUF9SWFNFVFVQCSgxIDw8ICAyKQkJLyogU2VuZCBTVEFMTCB0byB0aGUgaG9zdCAqLworI2RlZmluZQkJQVQ5MV9VRFBfU1RBTExTRU5UCSgxIDw8ICAzKQkJLyogU3RhbGwgU2VudCAvIElzb2Nocm9ub3VzIGVycm9yIChJc29jaHJvbm91cyBlbmRwb2ludHMpICovCisjZGVmaW5lCQlBVDkxX1VEUF9UWFBLVFJEWQkoMSA8PCAgNCkJCS8qIFRyYW5zbWl0IFBhY2tldCBSZWFkeSAqLworI2RlZmluZQkJQVQ5MV9VRFBfRk9SQ0VTVEFMTAkoMSA8PCAgNSkJCS8qIEZvcmNlIFN0YWxsICovCisjZGVmaW5lCQlBVDkxX1VEUF9SWF9EQVRBX0JLMQkoMSA8PCAgNikJCS8qIFJlY2VpdmUgRGF0YSBCYW5rIDEgKi8KKyNkZWZpbmUJCUFUOTFfVURQX0RJUgkJKDEgPDwgIDcpCQkvKiBUcmFuc2ZlciBEaXJlY3Rpb24gKi8KKyNkZWZpbmUJCUFUOTFfVURQX0VQVFlQRQkJKDcgPDwgIDgpCQkvKiBFbmRwb2ludCBUeXBlICovCisjZGVmaW5lCQkJQVQ5MV9VRFBfRVBUWVBFX0NUUkwJCSgwIDw8ICA4KQorI2RlZmluZQkJCUFUOTFfVURQX0VQVFlQRV9JU09fT1VUCQkoMSA8PCAgOCkKKyNkZWZpbmUJCQlBVDkxX1VEUF9FUFRZUEVfQlVMS19PVVQJKDIgPDwgIDgpCisjZGVmaW5lCQkJQVQ5MV9VRFBfRVBUWVBFX0lOVF9PVVQJCSgzIDw8ICA4KQorI2RlZmluZQkJCUFUOTFfVURQX0VQVFlQRV9JU09fSU4JCSg1IDw8ICA4KQorI2RlZmluZQkJCUFUOTFfVURQX0VQVFlQRV9CVUxLX0lOCQkoNiA8PCAgOCkKKyNkZWZpbmUJCQlBVDkxX1VEUF9FUFRZUEVfSU5UX0lOCQkoNyA8PCAgOCkKKyNkZWZpbmUJCUFUOTFfVURQX0RUR0xFCQkoMSA8PCAxMSkJCS8qIERhdGEgVG9nZ2xlICovCisjZGVmaW5lCQlBVDkxX1VEUF9FUEVEUwkJKDEgPDwgMTUpCQkvKiBFbmRwb2ludCBFbmFibGUvRGlzYWJsZSAqLworI2RlZmluZQkJQVQ5MV9VRFBfUlhCWVRFQ05UCSgweDdmZiA8PCAxNikJCS8qIE51bWJlciBvZiBieXRlcyBpbiBGSUZPICovCisKKyNkZWZpbmUgQVQ5MV9VRFBfRkRSKG4pCQkoMHg1MCArICgobikgKiA0KSkJLyogRW5kcG9pbnQgRklGTyBEYXRhIFJlZ2lzdGVycyAwLTcgKi8KKworI2RlZmluZSBBVDkxX1VEUF9UWFZDCQkweDc0CQkvKiBUcmFuc2NlaXZlciBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX1VEUF9UWFZDX1RYVkRJUwkoMSA8PCA4KQkJLyogVHJhbnNjZWl2ZXIgRGlzYWJsZSAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYm9hcmQuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvYm9hcmQuaAppbmRleCA0ZmRlZjEzLi4xZmRkNzBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2JvYXJkLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9ib2FyZC5oCkBAIC0zMSwxNCArMzEsOSBAQAogI2lmbmRlZiBfX0FTTV9BUkNIX0JPQVJEX0gKICNkZWZpbmUgX19BU01fQVJDSF9CT0FSRF9ICiAKLSAvKiBDbG9ja3MgKi8KLWV4dGVybiB1bnNpZ25lZCBsb25nIGF0OTFfbWFzdGVyX2Nsb2NrOwotCi0gLyogU2VyaWFsIFBvcnQgKi8KLWV4dGVybiBpbnQgYXQ5MV9zZXJpYWxfbWFwW0FUOTFfTlJfVUFSVF07Ci1leHRlcm4gaW50IGF0OTFfY29uc29sZV9wb3J0OwotCiAjaW5jbHVkZSA8bGludXgvbXRkL3BhcnRpdGlvbnMuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+CiAKICAvKiBVU0IgRGV2aWNlICovCiBzdHJ1Y3QgYXQ5MV91ZGNfZGF0YSB7CkBAIC05MSwxMCArODYsMjUgQEAKIGV4dGVybiB2b2lkIF9faW5pdCBhdDkxX2FkZF9kZXZpY2VfbmFuZChzdHJ1Y3QgYXQ5MV9uYW5kX2RhdGEgKmRhdGEpOwogCiAgLyogSTJDKi8KLXZvaWQgX19pbml0IGF0OTFfYWRkX2RldmljZV9pMmModm9pZCk7CitleHRlcm4gdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX2kyYyh2b2lkKTsKIAotIC8qIFJUQyAqLwotdm9pZCBfX2luaXQgYXQ5MV9hZGRfZGV2aWNlX3J0Yyh2b2lkKTsKKyAvKiBTUEkgKi8KK2V4dGVybiB2b2lkIF9faW5pdCBhdDkxX2FkZF9kZXZpY2Vfc3BpKHN0cnVjdCBzcGlfYm9hcmRfaW5mbyAqZGV2aWNlcywgaW50IG5yX2RldmljZXMpOworCisgLyogU2VyaWFsICovCitzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyB7CisJdW5zaWduZWQgc2hvcnQJY29uc29sZV90dHk7CS8qIHR0eSBudW1iZXIgb2Ygc2VyaWFsIGNvbnNvbGUgKi8KKwl1bnNpZ25lZCBzaG9ydAlucl90dHk7CQkvKiBudW1iZXIgb2Ygc2VyaWFsIHR0eSdzICovCisJc2hvcnQJCXR0eV9tYXBbXTsJLyogbWFwIFVBUlQgdG8gdHR5IG51bWJlciAqLworfTsKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICphdDkxX2RlZmF1bHRfY29uc29sZV9kZXZpY2U7CitleHRlcm4gdm9pZCBfX2luaXQgYXQ5MV9pbml0X3NlcmlhbChzdHJ1Y3QgYXQ5MV91YXJ0X2NvbmZpZyAqY29uZmlnKTsKKworc3RydWN0IGF0OTFfdWFydF9kYXRhIHsKKwlzaG9ydAkJdXNlX2RtYV90eDsJLyogdXNlIHRyYW5zbWl0IERNQT8gKi8KKwlzaG9ydAkJdXNlX2RtYV9yeDsJLyogdXNlIHJlY2VpdmUgRE1BPyAqLworfTsKK2V4dGVybiB2b2lkIF9faW5pdCBhdDkxX2FkZF9kZXZpY2Vfc2VyaWFsKHZvaWQpOwogCiAgLyogTEVEcyAqLwogZXh0ZXJuIHU4IGF0OTFfbGVkc19jcHU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2dwaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvZ3Bpby5oCmluZGV4IDYxNzZhYjIuLmRiZGUxYmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvZ3Bpby5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvZ3Bpby5oCkBAIC0xMyw2ICsxMyw4IEBACiAjaWZuZGVmIF9fQVNNX0FSQ0hfQVQ5MVJNOTIwMF9HUElPX0gKICNkZWZpbmUgX19BU01fQVJDSF9BVDkxUk05MjAwX0dQSU9fSAogCisjaW5jbHVkZSA8YXNtL2lycS5oPgorCiAjZGVmaW5lIFBJTl9CQVNFCQlOUl9BSUNfSVJRUwogCiAjZGVmaW5lIFBRRlBfR1BJT19CQU5LUwkJMwkvKiBQUUZQIHBhY2thZ2UgaGFzIDMgYmFua3MgKi8KQEAgLTE4OCw2ICsxOTAsOSBAQAogLyogY2FsbGFibGUgYXQgYW55IHRpbWUgKi8KIGV4dGVybiBpbnQgYXQ5MV9zZXRfZ3Bpb192YWx1ZSh1bnNpZ25lZCBwaW4sIGludCB2YWx1ZSk7CiBleHRlcm4gaW50IGF0OTFfZ2V0X2dwaW9fdmFsdWUodW5zaWduZWQgcGluKTsKKworZXh0ZXJuIHZvaWQgYXQ5MV9ncGlvX3N1c3BlbmQodm9pZCk7CitleHRlcm4gdm9pZCBhdDkxX2dwaW9fcmVzdW1lKHZvaWQpOwogI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9oYXJkd2FyZS5oCmluZGV4IDU5ZTZmNDQuLjIzNWQzOWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvaGFyZHdhcmUuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2hhcmR3YXJlLmgKQEAgLTUwLDkgKzUwLDEyIEBACiAjZGVmaW5lIEFUOTFfVkFfQkFTRV9UQ0IwCUFUOTFfSU9fUDJWKEFUOTFfQkFTRV9UQ0IwKQogCiAvKiBJbnRlcm5hbCBTUkFNICovCi0jZGVmaW5lIEFUOTFfQkFTRV9TUkFNCQkweDAwMjAwMDAwCS8qIEludGVybmFsIFNSQU0gYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIEFUOTFfU1JBTV9CQVNFCQkweDAwMjAwMDAwCS8qIEludGVybmFsIFNSQU0gYmFzZSBhZGRyZXNzICovCiAjZGVmaW5lIEFUOTFfU1JBTV9TSVpFCQkweDAwMDA0MDAwCS8qIEludGVybmFsIFNSQU0gU0laRSAoMTZLYikgKi8KIAorIC8qIEludGVybmFsIFNSQU0gaXMgbWFwcGVkIGJlbG93IHRoZSBJTyBkZXZpY2VzICovCisjZGVmaW5lIEFUOTFfU1JBTV9WSVJUX0JBU0UJKEFUOTFfSU9fVklSVF9CQVNFIC0gQVQ5MV9TUkFNX1NJWkUpCisKIC8qIFNlcmlhbCBwb3J0cyAqLwogI2RlZmluZSBBVDkxX05SX1VBUlQJCTUJCS8qIDQgVVNBUlQzJ3MgYW5kIG9uZSBEQkdVIHBvcnQgKi8KIApAQCAtODEsMTQgKzg0LDE0IEBACiB7CiAJdm9pZCBfX2lvbWVtICphZGRyID0gKHZvaWQgX19pb21lbSAqKUFUOTFfVkFfQkFTRV9TWVM7CiAKLQlyZXR1cm4gcmVhZGwoYWRkciArIHJlZ19vZmZzZXQpOworCXJldHVybiBfX3Jhd19yZWFkbChhZGRyICsgcmVnX29mZnNldCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX3N5c193cml0ZSh1bnNpZ25lZCBpbnQgcmVnX29mZnNldCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKIHsKIAl2b2lkIF9faW9tZW0gKmFkZHIgPSAodm9pZCBfX2lvbWVtICopQVQ5MV9WQV9CQVNFX1NZUzsKIAotCXdyaXRlbCh2YWx1ZSwgYWRkciArIHJlZ19vZmZzZXQpOworCV9fcmF3X3dyaXRlbCh2YWx1ZSwgYWRkciArIHJlZ19vZmZzZXQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvaW8uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvaW8uaAppbmRleCAyM2U2NzBkLi44OGZkMWJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2lvLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9pby5oCkBAIC0yMSw3ICsyMSw2IEBACiAjaWZuZGVmIF9fQVNNX0FSQ0hfSU9fSAogI2RlZmluZSBfX0FTTV9BUkNIX0lPX0gKIAotI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFybTkyMDAuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KIAogI2RlZmluZSBJT19TUEFDRV9MSU1JVAkJMHhGRkZGRkZGRgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2lycXMuaAppbmRleCAyN2IwNDk3Li4yZGM5M2IxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2lycXMuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2lycXMuaApAQCAtMzcsOCArMzcsNiBAQAogICogc3ltYm9scyBpbiBncGlvLmggZm9yIG9uZXMgaGFuZGxlZCBpbmRpcmVjdGx5IGFzIEdQSU9zLgogICogV2UgbWFrZSBwcm92aXNpb24gZm9yIDQgYmFua3Mgb2YgR1BJTy4KICAqLwotI2luY2x1ZGUgPGFzbS9hcmNoL2dwaW8uaD4KLQogI2RlZmluZQlOUl9JUlFTCQkoTlJfQUlDX0lSUVMgKyAoNCAqIDMyKSkKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9tZW1vcnkuaAppbmRleCA0NjJmMWYwLi4zYzMyN2M0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL21lbW9yeS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvbWVtb3J5LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAogI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICiAKLSNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogCiAjZGVmaW5lIFBIWVNfT0ZGU0VUCShBVDkxX1NEUkFNX0JBU0UpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvcGlvLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3Bpby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODk1MDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvcGlvLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvcGlvLmgKLSAqCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzIFNBTiBQZW9wbGUKLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqLwotCi0jaWZuZGVmIF9fQVNNX0FSQ0hfUElPX0gKLSNkZWZpbmUgX19BU01fQVJDSF9QSU9fSAotCi0jaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KLQotc3RhdGljIGlubGluZSB2b2lkIEFUOTFfQ2ZnUElPX1VTQVJUMCh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTE3X1RYRDAgfCBBVDkxX1BBMThfUlhEMCB8IEFUOTFfUEEyMF9DVFMwKTsKLQotCS8qCi0JICogRXJyYXRhICMzOSAtIFJUUzAgaXMgbm90IGludGVybmFsbHkgY29ubmVjdGVkIHRvIFBBMjEuICBXZSBuZWVkIHRvIGRyaXZlCi0JICogIHRoZSBwaW4gbWFudWFsbHkuICBEZWZhdWx0IGlzIG9mZiAoUlRTIGlzIGFjdGl2ZSBsb3cpLgotCSAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19QRVIsIEFUOTFfUEEyMV9SVFMwKTsKLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0EgKyBQSU9fT0VSLCBBVDkxX1BBMjFfUlRTMCk7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1NPRFIsIEFUOTFfUEEyMV9SVFMwKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIEFUOTFfQ2ZnUElPX1VTQVJUMSh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9CICsgUElPX1BEUiwgQVQ5MV9QQjE4X1JJMSB8IEFUOTFfUEIxOV9EVFIxCi0JCQl8IEFUOTFfUEIyMF9UWEQxIHwgQVQ5MV9QQjIxX1JYRDEgfCBBVDkxX1BCMjNfRENEMQotCQkJfCBBVDkxX1BCMjRfQ1RTMSB8IEFUOTFfUEIyNV9EU1IxIHwgQVQ5MV9QQjI2X1JUUzEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fVVNBUlQyKHZvaWQpIHsKLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0EgKyBQSU9fUERSLCBBVDkxX1BBMjJfUlhEMiB8IEFUOTFfUEEyM19UWEQyKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIEFUOTFfQ2ZnUElPX1VTQVJUMyh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTVfVFhEMyB8IEFUOTFfUEE2X1JYRDMpOwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19CU1IsIEFUOTFfUEE1X1RYRDMgfCBBVDkxX1BBNl9SWEQzKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIEFUOTFfQ2ZnUElPX0RCR1Uodm9pZCkgewotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19QRFIsIEFUOTFfUEEzMV9EVFhEIHwgQVQ5MV9QQTMwX0RSWEQpOwotfQotCi0vKgotICogRW5hYmxlIHRoZSBUd28tV2lyZSBpbnRlcmZhY2UuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBBVDkxX0NmZ1BJT19UV0kodm9pZCkgewotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQSArIFBJT19QRFIsIEFUOTFfUEEyNV9UV0QgfCBBVDkxX1BBMjZfVFdDSyk7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX0FTUiwgQVQ5MV9QQTI1X1RXRCB8IEFUOTFfUEEyNl9UV0NLKTsKLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0EgKyBQSU9fTURFUiwgQVQ5MV9QQTI1X1RXRCB8IEFUOTFfUEEyNl9UV0NLKTsJCS8qIG9wZW4gZHJhaW4gKi8KLX0KLQotLyoKLSAqIEVuYWJsZSB0aGUgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlLgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fU1BJKHZvaWQpIHsKLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0EgKyBQSU9fUERSLCBBVDkxX1BBMF9NSVNPIHwgQVQ5MV9QQTFfTU9TSSB8IEFUOTFfUEEyX1NQQ0spOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fU1BJX0NTMCh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTNfTlBDUzApOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fU1BJX0NTMSh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTRfTlBDUzEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fU1BJX0NTMih2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTVfTlBDUzIpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgQVQ5MV9DZmdQSU9fU1BJX0NTMyh2b2lkKSB7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9BICsgUElPX1BEUiwgQVQ5MV9QQTZfTlBDUzMpOwotfQotCi0vKgotICogU2VsZWN0IHRoZSBEYXRhRmxhc2ggY2FyZC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIEFUOTFfQ2ZnUElPX0RhdGFGbGFzaENhcmQodm9pZCkgewotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQiArIFBJT19QRVIsIEFUOTFfUElPX1AoNykpOwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQiArIFBJT19PRVIsIEFUOTFfUElPX1AoNykpOwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQiArIFBJT19DT0RSLCBBVDkxX1BJT19QKDcpKTsKLX0KLQotLyoKLSAqIEVuYWJsZSBOQU5EIEZsYXNoIChTbWFydE1lZGlhKSBpbnRlcmZhY2UuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBBVDkxX0NmZ1BJT19TbWFydE1lZGlhKHZvaWQpIHsKLQkvKiBlbmFibGUgUEMwPVNNQ0UsIFBDMT1TTU9FLCBQQzM9U01XRSwgQTIxPUNMRSwgQTIyPUFMRSAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQyArIFBJT19BU1IsIEFUOTFfUEMwX0JGQ0sgfCBBVDkxX1BDMV9CRlJEWV9TTU9FIHwgQVQ5MV9QQzNfQkZCQUFfU01XRSk7Ci0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9DICsgUElPX1BEUiwgQVQ5MV9QQzBfQkZDSyB8IEFUOTFfUEMxX0JGUkRZX1NNT0UgfCBBVDkxX1BDM19CRkJBQV9TTVdFKTsKLQotCS8qIENvbmZpZ3VyZSBQQzIgYXMgaW5wdXQgKHNpZ25hbCBSRUFEWSBvZiB0aGUgU21hcnRNZWRpYSkgKi8KLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0MgKyBQSU9fUEVSLCBBVDkxX1BDMl9CRkFWRCk7CS8qIGVuYWJsZSBkaXJlY3Qgb3V0cHV0IGVuYWJsZSAqLwotCWF0OTFfc3lzX3dyaXRlKEFUOTFfUElPQyArIFBJT19PRFIsIEFUOTFfUEMyX0JGQVZEKTsJLyogZGlzYWJsZSBvdXRwdXQgKi8KLQotCS8qIENvbmZpZ3VyZSBQQjEgYXMgaW5wdXQgKHNpZ25hbCBDYXJkIERldGVjdCBvZiB0aGUgU21hcnRNZWRpYSkgKi8KLQlhdDkxX3N5c193cml0ZShBVDkxX1BJT0IgKyBQSU9fUEVSLCBBVDkxX1BJT19QKDEpKTsJLyogZW5hYmxlIGRpcmVjdCBvdXRwdXQgZW5hYmxlICovCi0JYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QSU9CICsgUElPX09EUiwgQVQ5MV9QSU9fUCgxKSk7CS8qIGRpc2FibGUgb3V0cHV0ICovCi19Ci0KLXN0YXRpYyBpbmxpbmUgaW50IEFUOTFfUElPX1NtYXJ0TWVkaWFfUkRZKHZvaWQpIHsKLQlyZXR1cm4gKGF0OTFfc3lzX3JlYWQoQVQ5MV9QSU9DICsgUElPX1BEU1IpICYgQVQ5MV9QSU9fUCgyKSkgPyAxIDogMDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgQVQ5MV9QSU9fU21hcnRNZWRpYV9DYXJkRGV0ZWN0KHZvaWQpIHsKLQlyZXR1cm4gKGF0OTFfc3lzX3JlYWQoQVQ5MV9QSU9CICsgUElPX1BEU1IpICYgQVQ5MV9QSU9fUCgxKSkgPyAxIDogMDsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9zeXN0ZW0uaAppbmRleCAyOWM0MjY1Li44YTJmZjQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvc3lzdGVtLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19BU01fQVJDSF9TWVNURU1fSAogI2RlZmluZSBfX0FTTV9BUkNIX1NZU1RFTV9ICiAKLSNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCiB7CkBAIC00OCw0ICs0OCwxMiBAQAogCWF0OTFfc3lzX3dyaXRlKEFUOTFfU1RfQ1IsIEFUOTFfU1RfV0RSU1QpOwogfQogCisjZGVmaW5lIEFSQ0hfSURfQVQ5MVJNOTIwMAkweDA5MjAwMDgwCisjZGVmaW5lIEFSQ0hfSURfQVQ5MVNBTTkyNjEJMHgwMTkwMDBhMAorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgYXJjaF9pZGVudGlmeSh2b2lkKQoreworCXJldHVybiBhdDkxX3N5c19yZWFkKEFUOTFfREJHVV9DSURSKSAmIChBVDkxX0NJRFJfRVBST0MgfCBBVDkxX0NJRFJfQVJDSCk7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC90aW1leC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC90aW1leC5oCmluZGV4IDNmMTEyZGQuLjg4Njg3Y2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvdGltZXguaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3RpbWV4LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19BU01fQVJDSF9USU1FWF9ICiAjZGVmaW5lIF9fQVNNX0FSQ0hfVElNRVhfSAogCi0jaW5jbHVkZSA8YXNtL2FyY2gvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KIAogI2RlZmluZSBDTE9DS19USUNLX1JBVEUJCShBVDkxX1NMT1dfQ0xPQ0spCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvdW5jb21wcmVzcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC91bmNvbXByZXNzLmgKaW5kZXggN2IzODQ5Ny4uZWM3ODExYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC91bmNvbXByZXNzLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC91bmNvbXByZXNzLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19BU01fQVJDSF9VTkNPTVBSRVNTX0gKICNkZWZpbmUgX19BU01fQVJDSF9VTkNPTVBSRVNTX0gKIAotI2luY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAKIC8qCiAgKiBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGUgc2VyaWFsIHBvcnQgaGFzIGFscmVhZHkgYmVlbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3ZtYWxsb2MuaAppbmRleCAzNGQ5NzE4Li40YzM2N2ViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3ZtYWxsb2MuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL3ZtYWxsb2MuaApAQCAtMjEsNiArMjEsNiBAQAogI2lmbmRlZiBfX0FTTV9BUkNIX1ZNQUxMT0NfSAogI2RlZmluZSBfX0FTTV9BUkNIX1ZNQUxMT0NfSAogCi0jZGVmaW5lIFZNQUxMT0NfRU5ECQkoQVQ5MV9JT19WSVJUX0JBU0UgJiBQR0RJUl9NQVNLKQorI2RlZmluZSBWTUFMTE9DX0VORAkJKEFUOTFfU1JBTV9WSVJUX0JBU0UgJiBQR0RJUl9NQVNLKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9pbXgtZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1pbXgvaW14LWRtYS5oCmluZGV4IGYyMDYzYzEuLjU5OWYwM2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWlteC9pbXgtZG1hLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14L2lteC1kbWEuaApAQCAtNDYsNyArNDYsNyBAQAogc3RydWN0IGlteF9kbWFfY2hhbm5lbCB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl2b2lkICgqaXJxX2hhbmRsZXIpIChpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7Ci0Jdm9pZCAoKmVycl9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopOworCXZvaWQgKCplcnJfaGFuZGxlcikgKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqLCBpbnQgZXJyY29kZSk7CiAJdm9pZCAqZGF0YTsKIAlkbWFtb2RlX3QgIGRtYV9tb2RlOwogCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CkBAIC01OCw2ICs1OCwxMCBAQAogCiBleHRlcm4gc3RydWN0IGlteF9kbWFfY2hhbm5lbCBpbXhfZG1hX2NoYW5uZWxzW0lNWF9ETUFfQ0hBTk5FTFNdOwogCisjZGVmaW5lIElNWF9ETUFfRVJSX0JVUlNUICAgICAxCisjZGVmaW5lIElNWF9ETUFfRVJSX1JFUVVFU1QgICAyCisjZGVmaW5lIElNWF9ETUFfRVJSX1RSQU5TRkVSICA0CisjZGVmaW5lIElNWF9ETUFfRVJSX0JVRkZFUiAgICA4CiAKIC8qIFRoZSB0eXBlIHRvIGRpc3Rpbmd1aXNoIGNoYW5uZWwgbnVtYmVycyBwYXJhbWV0ZXIgZnJvbSBvcmRpbmFsIGludCB0eXBlICovCiB0eXBlZGVmIGludCBpbXhfZG1hY2hfdDsKQEAgLTc0LDcgKzc4LDcgQEAKIGludAogaW14X2RtYV9zZXR1cF9oYW5kbGVycyhpbXhfZG1hY2hfdCBkbWFfY2gsCiAJCXZvaWQgKCppcnFfaGFuZGxlcikgKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSwKLQkJdm9pZCAoKmVycl9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLCB2b2lkICpkYXRhKTsKKwkJdm9pZCAoKmVycl9oYW5kbGVyKSAoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICosIGludCksIHZvaWQgKmRhdGEpOwogCiB2b2lkIGlteF9kbWFfZW5hYmxlKGlteF9kbWFjaF90IGRtYV9jaCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvZW50cnktbWFjcm8uUyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvZW50cnktbWFjcm8uUwppbmRleCAwZWY0ZTYwLi44Njc3NjE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyM3h4L2VudHJ5LW1hY3JvLlMKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjN4eC9lbnRyeS1tYWNyby5TCkBAIC04LDcgKzgsNyBAQAogCQkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCiAJCWxkcglcaXJxbnIsID0oSVhQMjNYWF9JTlRDX1ZJUlQgKyBJWFAyM1hYX0lOVFJfSVJRX0VOQ19TVF9PRkZTRVQpCiAJCWxkcglcaXJxbnIsIFtcaXJxbnJdCUAgZ2V0IGludGVycnVwdCBudW1iZXIKLQkJY21wCVxpcnFuciwgIzB4MAkJQCBzdXByaW91cyBpbnRlcnJ1cHQgPworCQljbXAJXGlycW5yLCAjMHgwCQlAIHNwdXJpb3VzIGludGVycnVwdCA/CiAJCW1vdm5lCVxpcnFuciwgXGlycW5yLCBsc3IgIzIJQCBza2lwIHVud2FudGVkIGxvdyBvcmRlciBiaXRzCiAJCXN1Ym5lCVxpcnFuciwgXGlycW5yLCAjMQlAIGNvbnZlcnQgdG8gMCBiYXNlZAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyM3h4L2l4cDIzeHguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvaXhwMjN4eC5oCmluZGV4IGU0OWUxY2EuLmQwYTcyMjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvaXhwMjN4eC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvaXhwMjN4eC5oCkBAIC0xMjQsNiArMTI0LDcgQEAKIAogI2RlZmluZSBJWFAyM1hYX0VYUF9VTklUX0ZVU0UJCUlYUDIzWFhfRVhQX0NGR19SRUcoMHgyOCkKICNkZWZpbmUgSVhQMjNYWF9FWFBfTVNGX01VWAkJSVhQMjNYWF9FWFBfQ0ZHX1JFRygweDMwKQorI2RlZmluZSBJWFAyM1hYX0VYUF9DRkdfRlVTRQkJSVhQMjNYWF9FWFBfQ0ZHX1JFRygweDM0KQogCiAjZGVmaW5lIElYUDIzWFhfRVhQX0JVU19QSFlTCQkweDkwMDAwMDAwCiAjZGVmaW5lIElYUDIzWFhfRVhQX0JVU19XSU5ET1dfU0laRQkweDAxMDAwMDAwCkBAIC0yNTEsNyArMjUyLDcgQEAKICAqIENBUCBDU1JzLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIElYUDIzWFhfR0xPQkFMX1JFRyh4KQkJKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKElYUDIzWFhfQ0FQX0NTUl9WSVJUICsgMHg0YTAwICsgKHgpKSkKLSNkZWZpbmUgSVhQMjNYWF9QUk9EX0lERwkJSVhQMjNYWF9HTE9CQUxfUkVHKDB4MDApCisjZGVmaW5lIElYUDIzWFhfUFJPRFVDVF9JRAkJSVhQMjNYWF9HTE9CQUxfUkVHKDB4MDApCiAjZGVmaW5lIElYUDIzWFhfTUlTQ19DT05UUk9MCQlJWFAyM1hYX0dMT0JBTF9SRUcoMHgwNCkKICNkZWZpbmUgSVhQMjNYWF9NU0ZfQ0xLX0NOVFJMCQlJWFAyM1hYX0dMT0JBTF9SRUcoMHgwOCkKICNkZWZpbmUgSVhQMjNYWF9SRVNFVDAJCQlJWFAyM1hYX0dMT0JBTF9SRUcoMHgwYykKQEAgLTI2NSw2ICsyNjYsOCBAQAogI2RlZmluZSBJWFAyM1hYX1BDSV9VTklUX1JFU0VUCQkoMSA8PCAxKQogI2RlZmluZSBJWFAyM1hYX1hTQ0FMRV9SRVNFVAkJKDEgPDwgMCkKIAorI2RlZmluZSBJWFAyM1hYX1VFTkdJTkVfQ1NSX1ZJUlRfQkFTRQkoSVhQMjNYWF9DQVBfQ1NSX1ZJUlQgKyAweDE4MDAwKQorCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBQQ0kgQ1NScy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvcGxhdGZvcm0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWl4cDIzeHgvcGxhdGZvcm0uaAppbmRleCBlNGQ5OTA2Li4xOWE3M2IzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1peHAyM3h4L3BsYXRmb3JtLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtaXhwMjN4eC9wbGF0Zm9ybS5oCkBAIC0xNCw2ICsxNCwyMSBAQAogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCitleHRlcm4gaW5saW5lIHVuc2lnbmVkIGxvbmcgaXhwMjAwMF9yZWdfcmVhZCh2b2xhdGlsZSB2b2lkICpyZWcpCit7CisJcmV0dXJuICooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilyZWcpOworfQorCitleHRlcm4gaW5saW5lIHZvaWQgaXhwMjAwMF9yZWdfd3JpdGUodm9sYXRpbGUgdm9pZCAqcmVnLCB1bnNpZ25lZCBsb25nIHZhbCkKK3sKKwkqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopcmVnKSA9IHZhbDsKK30KKworZXh0ZXJuIGlubGluZSB2b2lkIGl4cDIwMDBfcmVnX3dyYih2b2xhdGlsZSB2b2lkICpyZWcsIHVuc2lnbmVkIGxvbmcgdmFsKQoreworCSooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKilyZWcpID0gdmFsOworfQorCiBzdHJ1Y3QgcGNpX3N5c19kYXRhOwogCiB2b2lkIGl4cDIzeHhfbWFwX2lvKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9kZWJ1Zy1tYWNyby5TIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9kZWJ1Zy1tYWNyby5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NDBkMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2RlYnVnLW1hY3JvLlMKQEAgLTAsMCArMSwzOCBAQAorLyogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9kZWJ1Zy1tYWNyby5TCisgKgorICogRGVidWdnaW5nIG1hY3JvIGluY2x1ZGUgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk5IFJ1c3NlbGwgS2luZworICogIE1vdmVkIGZyb20gbGludXgvYXJjaC9hcm0va2VybmVsL2RlYnVnLlMgYnkgQmVuIERvb2tzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisqLworCisjaW5jbHVkZSAiaGFyZHdhcmUuaCIKKworCQkubWFjcm8JYWRkcnVhcnQscngKKwkJbXJjCXAxNSwgMCwgXHJ4LCBjMSwgYzAKKwkJdHN0CVxyeCwgIzEJCQlAIE1NVSBlbmFibGVkPworCQltb3ZlcQlccngsICMweDAwMTAwMDAwCQlAIHBoeXNpY2FsCisJCW1vdm5lCVxyeCwgI2lvX3AydigweDAwMTAwMDAwKQlAIHZpcnR1YWwKKwkJb3JyCVxyeCwgXHJ4LCAjMHgwMDAwMGEwMAorCQkuZW5kbQorCisJCS5tYWNybwlzZW5kdWFydCxyZCxyeAorCQlzdHIJXHJkLCBbXHJ4LCAjMF0KKwkJLmVuZG0KKworCQkubWFjcm8JYnVzeXVhcnQscmQscngKKzEwMDI6CQlsZHIJXHJkLCBbXHJ4LCAjMHgxOF0KKwkJdHN0CVxyZCwgIygxIDw8IDMpCisJCWJuZQkxMDAyYgorCQkuZW5kbQorCisJCS5tYWNybwl3YWl0dWFydCxyZCxyeAorMTAwMToJCWxkcglccmQsIFtccngsICMweDE4XQorCQl0c3QJXHJkLCAjKDEgPDwgMykKKwkJYm5lCTEwMDFiCisJCS5lbmRtCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2RtYS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWRhNWZlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9kbWEuaApAQCAtMCwwICsxLDIxIEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvZG1hLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBNQVhfRE1BX0NIQU5ORUxTIDAKKyNkZWZpbmUgTUFYX0RNQV9BRERSRVNTIH4wCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2VudHJ5LW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2VudHJ5LW1hY3JvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU4ZGY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvZW50cnktbWFjcm8uUwpAQCAtMCwwICsxLDM1IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9lbnRyeS1tYWNyby5TCisgKgorICogTG93LWxldmVsIElSUSBoZWxwZXIgbWFjcm9zIGZvciBIaWxzY2hlciBuZXRYIGJhc2VkIHBsYXRmb3JtcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorCisJCS5tYWNybyAgZGlzYWJsZV9maXEKKwkJLmVuZG0KKworCQkubWFjcm8gIGdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAorCQltb3YJXGJhc2UsICNpb19wMnYoMHgwMDEwMDAwMCkKKwkJYWRkCVxiYXNlLCBcYmFzZSwgIzB4MDAwZmYwMDAKKworCQlsZHIJXGlycXN0YXQsIFtcYmFzZSwgIzBdCisJCWNseglcaXJxbnIsIFxpcnFzdGF0CisJCXJzYiAgICAgXGlycW5yLCBcaXJxbnIsICMzMQorCQljbXAJXGlycXN0YXQsICMwCisJCS5lbmRtCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvZXRoLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2V0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0M2M5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2V0aC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2V0aC5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgQVNNQVJNX0FSQ0hfRVRIX0gKKyNkZWZpbmUgQVNNQVJNX0FSQ0hfRVRIX0gKKworc3RydWN0IG5ldHhldGhfcGxhdGZvcm1fZGF0YSB7CisJdW5zaWduZWQgaW50IHhjbm87CS8qIG51bWJlciBvZiB4bWFjL3hwZWMgZW5naW5lIHRoaXMgZXRoIHVzZXMgKi8KK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9oYXJkd2FyZS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ODZjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2hhcmR3YXJlLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvaGFyZHdhcmUuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKyNkZWZpbmUgX19BU01fQVJDSF9IQVJEV0FSRV9ICisKKyNkZWZpbmUgTkVUWF9JT19QSFlTCTB4MDAxMDAwMDAKKyNkZWZpbmUgTkVUWF9JT19WSVJUCTB4ZTAwMDAwMDAKKyNkZWZpbmUgTkVUWF9JT19TSVpFCTB4MDAxMDAwMDAKKworI2RlZmluZSBTUkFNX0lOVEVSTkFMX1BIWVNfMCAweDAwMDAwCisjZGVmaW5lIFNSQU1fSU5URVJOQUxfUEhZU18xIDB4MDgwMDAKKyNkZWZpbmUgU1JBTV9JTlRFUk5BTF9QSFlTXzIgMHgxMDAwMAorI2RlZmluZSBTUkFNX0lOVEVSTkFMX1BIWVNfMyAweDE4MDAwCisjZGVmaW5lIFNSQU1fSU5URVJOQUxfUEhZUyhubykgKChubykgKiAweDgwMDApCisKKyNkZWZpbmUgWFBFQ19NRU1fU0laRSAweDQwMDAKKyNkZWZpbmUgWE1BQ19NRU1fU0laRSAweDEwMDAKKyNkZWZpbmUgU1JBTV9NRU1fU0laRSAweDgwMDAKKworI2RlZmluZSBpb19wMnYoeCkgKCh4KSAtIE5FVFhfSU9fUEhZUyArIE5FVFhfSU9fVklSVCkKKyNkZWZpbmUgaW9fdjJwKHgpICgoeCkgLSBORVRYX0lPX1ZJUlQgKyBORVRYX0lPX1BIWVMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9pby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjdiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2lvLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2lvLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fQVJDSF9JT19ICisjZGVmaW5lIF9fQVNNX0FSTV9BUkNIX0lPX0gKKworI2RlZmluZSBJT19TUEFDRV9MSU1JVCAweGZmZmZmZmZmCisKKyNkZWZpbmUgX19pbyhhKSAgICAgICAgICgodm9pZCBfX2lvbWVtICopKGEpKQorI2RlZmluZSBfX21lbV9wY2koYSkgICAgICAgICAgICAoYSkKKyNkZWZpbmUgX19tZW1faXNhKGEpICAgICAgICAgICAgKGEpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9pcnFzLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L2lycXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDg3ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9pcnFzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvaXJxcy5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNkZWZpbmUgTkVUWF9JUlFfVklDX1NUQVJUICAgMAorI2RlZmluZSBORVRYX0lSUV9TT0ZUSU5UICAgICAwCisjZGVmaW5lIE5FVFhfSVJRX1RJTUVSMCAgICAgIDEKKyNkZWZpbmUgTkVUWF9JUlFfVElNRVIxICAgICAgMgorI2RlZmluZSBORVRYX0lSUV9USU1FUjIgICAgICAzCisjZGVmaW5lIE5FVFhfSVJRX1NZU1RJTUVfTlMgIDQKKyNkZWZpbmUgTkVUWF9JUlFfU1lTVElNRV9TICAgNQorI2RlZmluZSBORVRYX0lSUV9HUElPXzE1ICAgICA2CisjZGVmaW5lIE5FVFhfSVJRX1dBVENIRE9HICAgIDcKKyNkZWZpbmUgTkVUWF9JUlFfVUFSVDAgICAgICAgOAorI2RlZmluZSBORVRYX0lSUV9VQVJUMSAgICAgICA5CisjZGVmaW5lIE5FVFhfSVJRX1VBUlQyICAgICAgMTAKKyNkZWZpbmUgTkVUWF9JUlFfVVNCICAgICAgICAxMQorI2RlZmluZSBORVRYX0lSUV9TUEkgICAgICAgIDEyCisjZGVmaW5lIE5FVFhfSVJRX0kyQyAgICAgICAgMTMKKyNkZWZpbmUgTkVUWF9JUlFfTENEICAgICAgICAxNAorI2RlZmluZSBORVRYX0lSUV9ISUYgICAgICAgIDE1CisjZGVmaW5lIE5FVFhfSVJRX0dQSU9fMF8xNCAgMTYKKyNkZWZpbmUgTkVUWF9JUlFfWFBFQzAgICAgICAxNworI2RlZmluZSBORVRYX0lSUV9YUEVDMSAgICAgIDE4CisjZGVmaW5lIE5FVFhfSVJRX1hQRUMyICAgICAgMTkKKyNkZWZpbmUgTkVUWF9JUlFfWFBFQzMgICAgICAyMAorI2RlZmluZSBORVRYX0lSUV9YUEVDKG5vKSAgICgxNyArIChubykpCisjZGVmaW5lIE5FVFhfSVJRX01TWU5DMCAgICAgMjEKKyNkZWZpbmUgTkVUWF9JUlFfTVNZTkMxICAgICAyMgorI2RlZmluZSBORVRYX0lSUV9NU1lOQzIgICAgIDIzCisjZGVmaW5lIE5FVFhfSVJRX01TWU5DMyAgICAgMjQKKyNkZWZpbmUgTkVUWF9JUlFfSVJRX1BIWSAgICAyNQorI2RlZmluZSBORVRYX0lSUV9JU09fQVJFQSAgIDI2CisvKiBpbnQgMjcgaXMgcmVzZXJ2ZWQgKi8KKy8qIGludCAyOCBpcyByZXNlcnZlZCAqLworI2RlZmluZSBORVRYX0lSUV9USU1FUjMgICAgIDI5CisjZGVmaW5lIE5FVFhfSVJRX1RJTUVSNCAgICAgMzAKKy8qIGludCAzMSBpcyByZXNlcnZlZCAqLworCisjZGVmaW5lIE5FVFhfSVJRUyAzMgorCisvKiBmb3IgbXVsdGlwbGV4ZWQgaXJxcyBvbiBncGlvIDAuLjE0ICovCisjZGVmaW5lIE5FVFhfSVJRX0dQSU8oeCkgKE5FVFhfSVJRUyArICh4KSkKKyNkZWZpbmUgTkVUWF9JUlFfR1BJT19MQVNUIE5FVFhfSVJRX0dQSU8oMTQpCisKKy8qIEhvc3QgaW50ZXJmYWNlIGludGVycnVwdHMgKi8KKyNkZWZpbmUgTkVUWF9JUlFfSElGX0NIQUlORUQoeCkgICAgKE5FVFhfSVJRX0dQSU9fTEFTVCArIDEgKyAoeCkpCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9QSU8zNSAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDApCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9QSU8zNiAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDEpCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9QSU80MCAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDIpCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9QSU80NyAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDMpCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9QSU83MiAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDQpCisjZGVmaW5lIE5FVFhfSVJRX0hJRl9MQVNUICAgICAgICAgIE5FVFhfSVJRX0hJRl9DSEFJTkVEKDQpCisKKyNkZWZpbmUgTlJfSVJRUyAoTkVUWF9JUlFfSElGX0xBU1QgKyAxKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9tZW1vcnkuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4ZDJkZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvbWVtb3J5LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L21lbW9yeS5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9NRU1PUllfSAorI2RlZmluZSBfX0FTTV9BUkNIX01FTU9SWV9ICisKKyNkZWZpbmUgUEhZU19PRkZTRVQgVUwoMHg4MDAwMDAwMCkKKworLyoKKyAqIFZpcnR1YWwgdmlldyA8LT4gRE1BIHZpZXcgbWVtb3J5IGFkZHJlc3MgdHJhbnNsYXRpb25zCisgKiB2aXJ0X3RvX2J1czogVXNlZCB0byB0cmFuc2xhdGUgdGhlIHZpcnR1YWwgYWRkcmVzcyB0byBhbgorICogICAgICAgICAgICAgIGFkZHJlc3Mgc3VpdGFibGUgdG8gYmUgcGFzc2VkIHRvIHNldF9kbWFfYWRkcgorICogYnVzX3RvX3ZpcnQ6IFVzZWQgdG8gY29udmVydCBhbiBhZGRyZXNzIGZvciBETUEgb3BlcmF0aW9ucworICogICAgICAgICAgICAgIHRvIGFuIGFkZHJlc3MgdGhhdCB0aGUga2VybmVsIGNhbiB1c2UuCisgKi8KKyNkZWZpbmUgX192aXJ0X3RvX2J1cyh4KSAgICAgICAgIF9fdmlydF90b19waHlzKHgpCisjZGVmaW5lIF9fYnVzX3RvX3ZpcnQoeCkgICAgICAgICBfX3BoeXNfdG9fdmlydCh4KQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9uZXR4LXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvbmV0eC1yZWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiNDViZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvbmV0eC1yZWdzLmgKQEAgLTAsMCArMSw0MTAgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L25ldHgtcmVncy5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA1IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9ORVRYX1JFR1NfSAorI2RlZmluZSBfX0FTTV9BUkNIX05FVFhfUkVHU19ICisKKy8qIG9mZnNldHMgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW8gc3BhY2UgKi8KKyNkZWZpbmUgTkVUWF9PRlNfU1lTVEVNICAweDAwMDAwCisjZGVmaW5lIE5FVFhfT0ZTX01FTUNSICAgMHgwMDEwMAorI2RlZmluZSBORVRYX09GU19EUE1BUyAgIDB4MDMwMDAKKyNkZWZpbmUgTkVUWF9PRlNfR1BJTyAgICAweDAwODAwCisjZGVmaW5lIE5FVFhfT0ZTX1BJTyAgICAgMHgwMDkwMAorI2RlZmluZSBORVRYX09GU19VQVJUMCAgIDB4MDBhMDAKKyNkZWZpbmUgTkVUWF9PRlNfVUFSVDEgICAweDAwYTQwCisjZGVmaW5lIE5FVFhfT0ZTX1VBUlQyICAgMHgwMGE4MAorI2RlZmluZSBORVRYX09GX01JSU1VICAgIDB4MDBiMDAKKyNkZWZpbmUgTkVUWF9PRlNfU1BJICAgICAweDAwYzAwCisjZGVmaW5lIE5FVFhfT0ZTX0kyQyAgICAgMHgwMGQwMAorI2RlZmluZSBORVRYX09GU19TWVNUSU1FIDB4MDExMDAKKyNkZWZpbmUgTkVUWF9PRlNfUlRDICAgICAweDAxMjAwCisjZGVmaW5lIE5FVFhfT0ZTX0VYVEJVUyAgMHgwMzYwMAorI2RlZmluZSBORVRYX09GU19MQ0QgICAgIDB4MDQwMDAKKyNkZWZpbmUgTkVUWF9PRlNfVVNCICAgICAweDIwMDAwCisjZGVmaW5lIE5FVFhfT0ZTX1hNQUMwICAgMHg2MDAwMAorI2RlZmluZSBORVRYX09GU19YTUFDMSAgIDB4NjEwMDAKKyNkZWZpbmUgTkVUWF9PRlNfWE1BQzIgICAweDYyMDAwCisjZGVmaW5lIE5FVFhfT0ZTX1hNQUMzICAgMHg2MzAwMAorI2RlZmluZSBORVRYX09GU19YTUFDKG5vKSAoMHg2MDAwMCArIChubykgKiAweDEwMDApCisjZGVmaW5lIE5FVFhfT0ZTX1BGSUZPICAgMHg2NDAwMAorI2RlZmluZSBORVRYX09GU19YUEVDMCAgIDB4NzAwMDAKKyNkZWZpbmUgTkVUWF9PRlNfWFBFQzEgICAweDc0MDAwCisjZGVmaW5lIE5FVFhfT0ZTX1hQRUMyICAgMHg3ODAwMAorI2RlZmluZSBORVRYX09GU19YUEVDMyAgIDB4N2MwMDAKKyNkZWZpbmUgTkVUWF9PRlNfWFBFQyhubykgKDB4NzAwMDAgKyAobm8pICogMHg0MDAwKQorI2RlZmluZSBORVRYX09GU19WSUMgICAgIDB4ZmYwMDAKKworLyogcGh5c2ljYWwgYWRkcmVzc2VzICovCisjZGVmaW5lIE5FVFhfUEFfU1lTVEVNICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1NZU1RFTSkKKyNkZWZpbmUgTkVUWF9QQV9NRU1DUiAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfTUVNQ1IpCisjZGVmaW5lIE5FVFhfUEFfRFBNQVMgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX0RQTUFTKQorI2RlZmluZSBORVRYX1BBX0dQSU8gICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19HUElPKQorI2RlZmluZSBORVRYX1BBX1BJTyAgICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19QSU8pCisjZGVmaW5lIE5FVFhfUEFfVUFSVDAgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1VBUlQwKQorI2RlZmluZSBORVRYX1BBX1VBUlQxICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19VQVJUMSkKKyNkZWZpbmUgTkVUWF9QQV9VQVJUMiAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfVUFSVDIpCisjZGVmaW5lIE5FVFhfUEFfTUlJTVUgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZfTUlJTVUpCisjZGVmaW5lIE5FVFhfUEFfU1BJICAgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1NQSSkKKyNkZWZpbmUgTkVUWF9QQV9JMkMgICAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfSTJDKQorI2RlZmluZSBORVRYX1BBX1NZU1RJTUUgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19TWVNUSU1FKQorI2RlZmluZSBORVRYX1BBX1JUQyAgICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19SVEMpCisjZGVmaW5lIE5FVFhfUEFfRVhUQlVTICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX0VYVEJVUykKKyNkZWZpbmUgTkVUWF9QQV9MQ0QgICAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfTENEKQorI2RlZmluZSBORVRYX1BBX1VTQiAgICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19VU0IpCisjZGVmaW5lIE5FVFhfUEFfWE1BQzAgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1hNQUMwKQorI2RlZmluZSBORVRYX1BBX1hNQUMxICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19YTUFDMSkKKyNkZWZpbmUgTkVUWF9QQV9YTUFDMiAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfWE1BQzIpCisjZGVmaW5lIE5FVFhfUEFfWE1BQzMgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1hNQUMzKQorI2RlZmluZSBORVRYX1BBX1hNQUMobm8pIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19YTUFDKG5vKSkKKyNkZWZpbmUgTkVUWF9QQV9QRklGTyAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfUEZJRk8pCisjZGVmaW5lIE5FVFhfUEFfWFBFQzAgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1hQRUMwKQorI2RlZmluZSBORVRYX1BBX1hQRUMxICAgIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19YUEVDMSkKKyNkZWZpbmUgTkVUWF9QQV9YUEVDMiAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfWFBFQzIpCisjZGVmaW5lIE5FVFhfUEFfWFBFQzMgICAgKE5FVFhfSU9fUEhZUyArIE5FVFhfT0ZTX1hQRUMzKQorI2RlZmluZSBORVRYX1BBX1hQRUMobm8pIChORVRYX0lPX1BIWVMgKyBORVRYX09GU19YUEVDKG5vKSkKKyNkZWZpbmUgTkVUWF9QQV9WSUMgICAgICAoTkVUWF9JT19QSFlTICsgTkVUWF9PRlNfVklDKQorCisvKiB2aXJ1YWwgYWRkcmVzc2VzICovCisjZGVmaW5lIE5FVFhfVkFfU1lTVEVNICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1NZU1RFTSkKKyNkZWZpbmUgTkVUWF9WQV9NRU1DUiAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfTUVNQ1IpCisjZGVmaW5lIE5FVFhfVkFfRFBNQVMgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX0RQTUFTKQorI2RlZmluZSBORVRYX1ZBX0dQSU8gICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19HUElPKQorI2RlZmluZSBORVRYX1ZBX1BJTyAgICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19QSU8pCisjZGVmaW5lIE5FVFhfVkFfVUFSVDAgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1VBUlQwKQorI2RlZmluZSBORVRYX1ZBX1VBUlQxICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19VQVJUMSkKKyNkZWZpbmUgTkVUWF9WQV9VQVJUMiAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfVUFSVDIpCisjZGVmaW5lIE5FVFhfVkFfTUlJTVUgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZfTUlJTVUpCisjZGVmaW5lIE5FVFhfVkFfU1BJICAgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1NQSSkKKyNkZWZpbmUgTkVUWF9WQV9JMkMgICAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfSTJDKQorI2RlZmluZSBORVRYX1ZBX1NZU1RJTUUgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19TWVNUSU1FKQorI2RlZmluZSBORVRYX1ZBX1JUQyAgICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19SVEMpCisjZGVmaW5lIE5FVFhfVkFfRVhUQlVTICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX0VYVEJVUykKKyNkZWZpbmUgTkVUWF9WQV9MQ0QgICAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfTENEKQorI2RlZmluZSBORVRYX1ZBX1VTQiAgICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19VU0IpCisjZGVmaW5lIE5FVFhfVkFfWE1BQzAgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1hNQUMwKQorI2RlZmluZSBORVRYX1ZBX1hNQUMxICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19YTUFDMSkKKyNkZWZpbmUgTkVUWF9WQV9YTUFDMiAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfWE1BQzIpCisjZGVmaW5lIE5FVFhfVkFfWE1BQzMgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1hNQUMzKQorI2RlZmluZSBORVRYX1ZBX1hNQUMobm8pIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19YTUFDKG5vKSkKKyNkZWZpbmUgTkVUWF9WQV9QRklGTyAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfUEZJRk8pCisjZGVmaW5lIE5FVFhfVkFfWFBFQzAgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1hQRUMwKQorI2RlZmluZSBORVRYX1ZBX1hQRUMxICAgIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19YUEVDMSkKKyNkZWZpbmUgTkVUWF9WQV9YUEVDMiAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfWFBFQzIpCisjZGVmaW5lIE5FVFhfVkFfWFBFQzMgICAgKE5FVFhfSU9fVklSVCArIE5FVFhfT0ZTX1hQRUMzKQorI2RlZmluZSBORVRYX1ZBX1hQRUMobm8pIChORVRYX0lPX1ZJUlQgKyBORVRYX09GU19YUEVDKG5vKSkKKyNkZWZpbmUgTkVUWF9WQV9WSUMgICAgICAoTkVUWF9JT19WSVJUICsgTkVUWF9PRlNfVklDKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTeXN0ZW0gZnVuY3Rpb25zICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVHKG9mcykgICAgICAgICAgICBfX2lvKE5FVFhfVkFfU1lTVEVNICsgKG9mcykpCisjZGVmaW5lIE5FVFhfU1lTVEVNX0JPT19TUiAgICAgICAgICBORVRYX1NZU1RFTV9SRUcoMHgwMCkKKyNkZWZpbmUgTkVUWF9TWVNURU1fSU9DX0NSICAgICAgICAgIE5FVFhfU1lTVEVNX1JFRygweDA0KQorI2RlZmluZSBORVRYX1NZU1RFTV9JT0NfTVIgICAgICAgICAgTkVUWF9TWVNURU1fUkVHKDB4MDgpCisKKy8qIEZJWE1FOiBEb2NzIGFyZSBub3QgY29uc2lzdGVudCAqLworI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1IgICAgICAgICAgTkVUWF9TWVNURU1fUkVHKDB4MDgpCisvKiAjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUiAgICAgICAgICBORVRYX1NZU1RFTV9SRUcoMHgwYykgKi8KKworI2RlZmluZSBORVRYX1NZU1RFTV9QSFlfQ09OVFJPTCAgICAgTkVUWF9TWVNURU1fUkVHKDB4MTApCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFViAgICAgICAgICAgICBORVRYX1NZU1RFTV9SRUcoMHgzNCkKKyNkZWZpbmUgTkVUWF9TWVNURU1fSU9DX0FDQ0VTU19LRVkgIE5FVFhfU1lTVEVNX1JFRygweDcwKQorI2RlZmluZSBORVRYX1NZU1RFTV9XREdfVFIgICAgICAgICAgTkVUWF9TWVNURU1fUkVHKDB4MjAwKQorI2RlZmluZSBORVRYX1NZU1RFTV9XREdfQ1RSICAgICAgICAgTkVUWF9TWVNURU1fUkVHKDB4MjA0KQorI2RlZmluZSBORVRYX1NZU1RFTV9XREdfSVJRX1RJTUVPVVQgTkVUWF9TWVNURU1fUkVHKDB4MjA4KQorI2RlZmluZSBORVRYX1NZU1RFTV9XREdfUkVTX1RJTUVPVVQgTkVUWF9TWVNURU1fUkVHKDB4MjBjKQorCisvKiBCaXRzICovCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9SU1RJTiAgICAgICAgICgxPDwwKQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfV0RHX1JFUyAgICAgICAoMTw8MSkKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX0hPU1RfUkVTICAgICAgKDE8PDIpCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9GSVJNV19SRVMgICAgICgxPDwzKQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfWFBFQzBfUkVTICAgICAoMTw8NCkKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX1hQRUMxX1JFUyAgICAgKDE8PDUpCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9YUEVDMl9SRVMgICAgICgxPDw2KQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfWFBFQzNfUkVTICAgICAoMTw8NykKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX0RJU19YUEVDMF9SRVMgKDE8PDE2KQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfRElTX1hQRUMxX1JFUyAoMTw8MTcpCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9ESVNfWFBFQzJfUkVTICgxPDwxOCkKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX0RJU19YUEVDM19SRVMgKDE8PDE5KQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfRklSTVdfRkxHMCAgICAoMTw8MjApCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9GSVJNV19GTEcxICAgICgxPDwyMSkKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX0ZJUk1XX0ZMRzIgICAgKDE8PDIyKQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfRklSTVdfRkxHMyAgICAoMTw8MjMpCisjZGVmaW5lIE5FVFhfU1lTVEVNX1JFU19DUl9GSVJNV19SRVNfRU4gICgxPDwyNCkKKyNkZWZpbmUgTkVUWF9TWVNURU1fUkVTX0NSX1JTVE9VVCAgICAgICAgKDE8PDI1KQorI2RlZmluZSBORVRYX1NZU1RFTV9SRVNfQ1JfRU5fUlNUT1VUICAgICAoMTw8MjYpCisKKyNkZWZpbmUgUEhZX0NPTlRST0xfUkVTRVQgICAgICAgICAgICAoMTw8MzEpCisjZGVmaW5lIFBIWV9DT05UUk9MX1NJTV9CWVAgICAgICAgICAgKDE8PDMwKQorI2RlZmluZSBQSFlfQ09OVFJPTF9DTEtfWExBVElOICAgICAgICgxPDwyOSkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMV9FTiAgICAgICAgICAoMTw8MjEpCisjZGVmaW5lIFBIWV9DT05UUk9MX1BIWTFfTlBfTVNHX0NPREUKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMV9BVVRPTURJWCAgICAoMTw8MTcpCisjZGVmaW5lIFBIWV9DT05UUk9MX1BIWTFfRklYTU9ERSAgICAgKDE8PDE2KQorI2RlZmluZSBQSFlfQ09OVFJPTF9QSFkxX01PREUobW9kZSkgICgoKG1vZGUpICYgMHg3KSA8PCAxMykKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMF9FTiAgICAgICAgICAoMTw8MTIpCisjZGVmaW5lIFBIWV9DT05UUk9MX1BIWTBfTlBfTVNHX0NPREUKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMF9BVVRPTURJWCAgICAoMTw8OCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMF9GSVhNT0RFICAgICAoMTw8NykKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZMF9NT0RFKG1vZGUpICAoKChtb2RlKSAmIDB4NykgPDwgNCkKKyNkZWZpbmUgUEhZX0NPTlRST0xfUEhZX0FERFJFU1MoYWRyKSAoKGFkcikgJiAweGYpCisKKyNkZWZpbmUgUEhZX01PREVfMTBCQVNFX1RfSEFMRiAgICAgIDAKKyNkZWZpbmUgUEhZX01PREVfMTBCQVNFX1RfRlVMTCAgICAgIDEKKyNkZWZpbmUgUEhZX01PREVfMTAwQkFTRV9UWF9GWF9GVUxMIDIKKyNkZWZpbmUgUEhZX01PREVfMTAwQkFTRV9UWF9GWF9IQUxGIDMKKyNkZWZpbmUgUEhZX01PREVfMTAwQkFTRV9UWF9IQUxGICAgIDQKKyNkZWZpbmUgUEhZX01PREVfUkVQRUFURVIgICAgICAgICAgIDUKKyNkZWZpbmUgUEhZX01PREVfUE9XRVJfRE9XTiAgICAgICAgIDYKKyNkZWZpbmUgUEhZX01PREVfQUxMICAgICAgICAgICAgICAgIDcKKworLyogQml0cyAqLworI2RlZmluZSBWRUNUX0NOVExfRU5BQkxFICAgICAgICAgICAgICAgKDEgPDwgNSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEdQSU8gYW5kIHRpbWVyIG1vZHVsZSAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogUmVnaXN0ZXJzICovCisjZGVmaW5lIE5FVFhfR1BJT19SRUcob2ZzKSAgICAgICAgICAgICAgICAgICAgIF9faW8oTkVUWF9WQV9HUElPICsgKG9mcykpCisjZGVmaW5lIE5FVFhfR1BJT19DRkcoZ3BpbykgICAgICAgICAgICAgICAgTkVUWF9HUElPX1JFRygweDAgICsgKChncGlvKTw8MikpCisjZGVmaW5lIE5FVFhfR1BJT19USFJFU0hPTERfQ0FQVFVSRShncGlvKSAgTkVUWF9HUElPX1JFRygweDQwICsgKChncGlvKTw8MikpCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX0NUUkwoY291bnRlcikgICAgTkVUWF9HUElPX1JFRygweDgwICsgKChjb3VudGVyKTw8MikpCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX01BWChjb3VudGVyKSAgICAgTkVUWF9HUElPX1JFRygweDk0ICsgKChjb3VudGVyKTw8MikpCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX0NVUlJFTlQoY291bnRlcikgTkVUWF9HUElPX1JFRygweGE4ICsgKChjb3VudGVyKTw8MikpCisjZGVmaW5lIE5FVFhfR1BJT19JUlFfRU5BQkxFICAgICAgICAgICAgICAgTkVUWF9HUElPX1JFRygweGJjKQorI2RlZmluZSBORVRYX0dQSU9fSVJRX0RJU0FCTEUgICAgICAgICAgICAgIE5FVFhfR1BJT19SRUcoMHhjMCkKKyNkZWZpbmUgTkVUWF9HUElPX1NZU1RJTUVfTlNfQ01QICAgICAgICAgICBORVRYX0dQSU9fUkVHKDB4YzQpCisjZGVmaW5lIE5FVFhfR1BJT19MSU5FICAgICAgICAgICAgICAgICAgICAgTkVUWF9HUElPX1JFRygweGM4KQorI2RlZmluZSBORVRYX0dQSU9fSVJRICAgICAgICAgICAgICAgICAgICAgIE5FVFhfR1BJT19SRUcoMHhkMCkKKworLyogQml0cyAqLworI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0lPQ0ZHX0dQX0lOUFVUICAgICAgICAgICAgICAgICAoMHgwKQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0lPQ0ZHX0dQX09VVFBVVCAgICAgICAgICAgICAgICAoMHgxKQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0lPQ0ZHX0dQX1VBUlQgICAgICAgICAgICAgICAgICAoMHgyKQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0lOViAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8MikKKyNkZWZpbmUgTkVUWF9HUElPX0NGR19NT0RFX0lOUFVUX1JFQUQgICAgICAgICAgICAgICAgKDA8PDMpCisjZGVmaW5lIE5FVFhfR1BJT19DRkdfTU9ERV9JTlBVVF9DQVBUVVJFX0NPTlRfUklTSU5HICgxPDwzKQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX01PREVfSU5QVVRfQ0FQVFVSRV9PTkNFX1JJU0lORyAoMjw8MykKKyNkZWZpbmUgTkVUWF9HUElPX0NGR19NT0RFX0lOUFVUX0NBUFRVUkVfSElHSF9MRVZFTCAgKDM8PDMpCisjZGVmaW5lIE5FVFhfR1BJT19DRkdfQ09VTlRfUkVGX0NPVU5URVIwICAgICAgICAgICAgICgwPDw1KQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0NPVU5UX1JFRl9DT1VOVEVSMSAgICAgICAgICAgICAoMTw8NSkKKyNkZWZpbmUgTkVUWF9HUElPX0NGR19DT1VOVF9SRUZfQ09VTlRFUjIgICAgICAgICAgICAgKDI8PDUpCisjZGVmaW5lIE5FVFhfR1BJT19DRkdfQ09VTlRfUkVGX0NPVU5URVIzICAgICAgICAgICAgICgzPDw1KQorI2RlZmluZSBORVRYX0dQSU9fQ0ZHX0NPVU5UX1JFRl9DT1VOVEVSNCAgICAgICAgICAgICAoNDw8NSkKKyNkZWZpbmUgTkVUWF9HUElPX0NGR19DT1VOVF9SRUZfU1lTVElNRSAgICAgICAgICAgICAgKDc8PDUpCisKKyNkZWZpbmUgTkVUWF9HUElPX0NPVU5URVJfQ1RSTF9SVU4gICAgICAgICAgICAgICAgICAgKDE8PDApCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX0NUUkxfU1lNICAgICAgICAgICAgICAgICAgICgxPDwxKQorI2RlZmluZSBORVRYX0dQSU9fQ09VTlRFUl9DVFJMX09OQ0UgICAgICAgICAgICAgICAgICAoMTw8MikKKyNkZWZpbmUgTkVUWF9HUElPX0NPVU5URVJfQ1RSTF9JUlFfRU4gICAgICAgICAgICAgICAgKDE8PDMpCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX0NUUkxfQ05UX0VWRU5UICAgICAgICAgICAgICgxPDw0KQorI2RlZmluZSBORVRYX0dQSU9fQ09VTlRFUl9DVFJMX1JTVF9FTiAgICAgICAgICAgICAgICAoMTw8NSkKKyNkZWZpbmUgTkVUWF9HUElPX0NPVU5URVJfQ1RSTF9TRUxfRVZFTlQgICAgICAgICAgICAgKDE8PDYpCisjZGVmaW5lIE5FVFhfR1BJT19DT1VOVEVSX0NUUkxfR1BJT19SRUYgLyogRklYTUUgKi8KKworI2RlZmluZSBHUElPX0JJVChncGlvKSAgICAgICAgICAgICAgICAgICAgICgxPDwoZ3BpbykpCisjZGVmaW5lIENPVU5URVJfQklUKGNvdW50ZXIpICAgICAgICAgICAgICAgKCgxPDwxNik8PChjb3VudGVyKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFBJTyAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogUmVnaXN0ZXJzICovCisjZGVmaW5lIE5FVFhfUElPX1JFRyhvZnMpICAgICAgICBfX2lvKE5FVFhfVkFfUElPICsgKG9mcykpCisjZGVmaW5lIE5FVFhfUElPX0lOUElPICAgICAgIE5FVFhfUElPX1JFRygweDApCisjZGVmaW5lIE5FVFhfUElPX09VVFBJTyAgICAgIE5FVFhfUElPX1JFRygweDQpCisjZGVmaW5lIE5FVFhfUElPX09FUElPICAgICAgIE5FVFhfUElPX1JFRygweDgpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNSUkgVW5pdCAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFJlZ2lzdGVycyAqLworI2RlZmluZSBORVRYX01JSU1VICAgICAgICAgICBfX2lvKE5FVFhfVkFfTUlJTVUpCisKKy8qIEJpdHMgKi8KKyNkZWZpbmUgTUlJTVVfU05SRFkgICAgICAgICgxPDwwKQorI2RlZmluZSBNSUlNVV9QUkVBTUJMRSAgICAgKDE8PDEpCisjZGVmaW5lIE1JSU1VX09QTU9ERV9XUklURSAoMTw8MikKKyNkZWZpbmUgTUlJTVVfTURDX1BFUklPRCAgICgxPDwzKQorI2RlZmluZSBNSUlNVV9QSFlfTlJFUyAgICAgKDE8PDQpCisjZGVmaW5lIE1JSU1VX1JUQSAgICAgICAgICAoMTw8NSkKKyNkZWZpbmUgTUlJTVVfUkVHQUREUihhZHIpICgoKGFkcikgJiAweDFmKSA8PCA2KQorI2RlZmluZSBNSUlNVV9QSFlBRERSKGFkcikgKCgoYWRyKSAmIDB4MWYpIDw8IDExKQorI2RlZmluZSBNSUlNVV9EQVRBKGRhdGEpICAgKCgoZGF0YSkgJiAweGZmZmYpIDw8IDE2KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogeG1hYyAvIHhwZWMgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBYUEVDIHJlZ2lzdGVyIG9mZnNldHMgcmVsYXRpdmUgdG8gTkVUWF9WQV9YUEVDKG5vKSAqLworI2RlZmluZSBORVRYX1hQRUNfUjBfT0ZTICAgICAgICAgICAweDAwCisjZGVmaW5lIE5FVFhfWFBFQ19SMV9PRlMgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgTkVUWF9YUEVDX1IyX09GUyAgICAgICAgICAgMHgwOAorI2RlZmluZSBORVRYX1hQRUNfUjNfT0ZTICAgICAgICAgICAweDBjCisjZGVmaW5lIE5FVFhfWFBFQ19SNF9PRlMgICAgICAgICAgIDB4MTAKKyNkZWZpbmUgTkVUWF9YUEVDX1I1X09GUyAgICAgICAgICAgMHgxNAorI2RlZmluZSBORVRYX1hQRUNfUjZfT0ZTICAgICAgICAgICAweDE4CisjZGVmaW5lIE5FVFhfWFBFQ19SN19PRlMgICAgICAgICAgIDB4MWMKKyNkZWZpbmUgTkVUWF9YUEVDX1JBTkdFMDFfT0ZTICAgICAgMHgyMAorI2RlZmluZSBORVRYX1hQRUNfUkFOR0UyM19PRlMgICAgICAweDI0CisjZGVmaW5lIE5FVFhfWFBFQ19SQU5HRTQ1X09GUyAgICAgIDB4MjgKKyNkZWZpbmUgTkVUWF9YUEVDX1JBTkdFNjdfT0ZTICAgICAgMHgyYworI2RlZmluZSBORVRYX1hQRUNfUENfT0ZTICAgICAgICAgICAweDQ4CisjZGVmaW5lIE5FVFhfWFBFQ19USU1FUl9PRlModGltZXIpICgweDMwICsgKCh0aW1lcik8PDIpKQorI2RlZmluZSBORVRYX1hQRUNfSVJRX09GUyAgICAgICAgICAweDhjCisjZGVmaW5lIE5FVFhfWFBFQ19TWVNUSU1FX05TX09GUyAgIDB4OTAKKyNkZWZpbmUgTkVUWF9YUEVDX0ZJRk9fREFUQV9PRlMgICAgMHg5NAorI2RlZmluZSBORVRYX1hQRUNfU1lTVElNRV9TX09GUyAgICAweDk4CisjZGVmaW5lIE5FVFhfWFBFQ19BRENfT0ZTICAgICAgICAgIDB4OWMKKyNkZWZpbmUgTkVUWF9YUEVDX1VSWF9DT1VOVF9PRlMgICAgMHg0MAorI2RlZmluZSBORVRYX1hQRUNfVVRYX0NPVU5UX09GUyAgICAweDQ0CisjZGVmaW5lIE5FVFhfWFBFQ19QQ19PRlMgICAgICAgICAgIDB4NDgKKyNkZWZpbmUgTkVUWF9YUEVDX1pFUk9fT0ZTICAgICAgICAgMHg0YworI2RlZmluZSBORVRYX1hQRUNfU1RBVENGR19PRlMgICAgICAweDUwCisjZGVmaW5lIE5FVFhfWFBFQ19FQ19NQVNLQV9PRlMgICAgIDB4NTQKKyNkZWZpbmUgTkVUWF9YUEVDX0VDX01BU0tCX09GUyAgICAgMHg1OAorI2RlZmluZSBORVRYX1hQRUNfRUNfTUFTSzBfT0ZTICAgICAweDVjCisjZGVmaW5lIE5FVFhfWFBFQ19FQ19NQVNLOF9PRlMgICAgIDB4N2MKKyNkZWZpbmUgTkVUWF9YUEVDX0VDX01BU0s5X09GUyAgICAgMHg4MAorI2RlZmluZSBORVRYX1hQRUNfWFBVX0hPTERfUENfT0ZTICAweDEwMAorI2RlZmluZSBORVRYX1hQRUNfUkFNX1NUQVJUX09GUyAgICAweDIwMDAKKworLyogQml0cyAqLworI2RlZmluZSBYUFVfSE9MRF9QQyAoMTw8MCkKKworLyogWE1BQyByZWdpc3RlciBvZmZzZXRzIHJlbGF0aXZlIHRvIE5FVFhfVkFfWE1BQyhubykgKi8KKyNkZWZpbmUgTkVUWF9YTUFDX1JQVV9QUk9HUkFNX1NUQVJUX09GUyAgICAgICAweDAwMAorI2RlZmluZSBORVRYX1hNQUNfUlBVX1BST0dSQU1fRU5EX09GUyAgICAgICAgIDB4M2ZmCisjZGVmaW5lIE5FVFhfWE1BQ19UUFVfUFJPR1JBTV9TVEFSVF9PRlMgICAgICAgMHg0MDAKKyNkZWZpbmUgTkVUWF9YTUFDX1RQVV9QUk9HUkFNX0VORF9PRlMgICAgICAgICAweDdmZgorI2RlZmluZSBORVRYX1hNQUNfUlBVX0hPTERfUENfT0ZTICAgICAgICAgICAgIDB4YTAwCisjZGVmaW5lIE5FVFhfWE1BQ19UUFVfSE9MRF9QQ19PRlMgICAgICAgICAgICAgMHhhMDQKKyNkZWZpbmUgTkVUWF9YTUFDX1NUQVRVU19TSEFSRUQwX09GUyAgICAgICAgICAweDg0MAorI2RlZmluZSBORVRYX1hNQUNfQ09ORklHX1NIQVJFRDBfT0ZTICAgICAgICAgIDB4ODQ0CisjZGVmaW5lIE5FVFhfWE1BQ19TVEFUVVNfU0hBUkVEMV9PRlMgICAgICAgICAgMHg4NDgKKyNkZWZpbmUgTkVUWF9YTUFDX0NPTkZJR19TSEFSRUQxX09GUyAgICAgICAgICAweDg0YworI2RlZmluZSBORVRYX1hNQUNfU1RBVFVTX1NIQVJFRDJfT0ZTICAgICAgICAgIDB4ODUwCisjZGVmaW5lIE5FVFhfWE1BQ19DT05GSUdfU0hBUkVEMl9PRlMgICAgICAgICAgMHg4NTQKKyNkZWZpbmUgTkVUWF9YTUFDX1NUQVRVU19TSEFSRUQzX09GUyAgICAgICAgICAweDg1OAorI2RlZmluZSBORVRYX1hNQUNfQ09ORklHX1NIQVJFRDNfT0ZTICAgICAgICAgIDB4ODVjCisKKyNkZWZpbmUgUlBVX0hPTERfUEMgICAgICAgICAgICAoMTw8MTUpCisjZGVmaW5lIFRQVV9IT0xEX1BDICAgICAgICAgICAgKDE8PDE1KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUG9pbnRlciBGSUZPICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgTkVUWF9QRklGT19SRUcob2ZzKSAgICAgICAgICAgICAgIF9faW8oTkVUWF9WQV9QRklGTyArIChvZnMpKQorI2RlZmluZSBORVRYX1BGSUZPX0JBU0UocGZpZm8pICAgICAgICBORVRYX1BGSUZPX1JFRygweDAwICsgKChwZmlmbyk8PDIpKQorI2RlZmluZSBORVRYX1BGSUZPX0JPUkRFUl9CQVNFKHBmaWZvKSBORVRYX1BGSUZPX1JFRygweDgwICsgKChwZmlmbyk8PDIpKQorI2RlZmluZSBORVRYX1BGSUZPX1JFU0VUICAgICAgICAgICAgICBORVRYX1BGSUZPX1JFRygweDEwMCkKKyNkZWZpbmUgTkVUWF9QRklGT19GVUxMICAgICAgICAgICAgICAgTkVUWF9QRklGT19SRUcoMHgxMDQpCisjZGVmaW5lIE5FVFhfUEZJRk9fRU1QVFkgICAgICAgICAgICAgIE5FVFhfUEZJRk9fUkVHKDB4MTA4KQorI2RlZmluZSBORVRYX1BGSUZPX09WRUZMT1cgICAgICAgICAgICBORVRYX1BGSUZPX1JFRygweDEwYykKKyNkZWZpbmUgTkVUWF9QRklGT19VTkRFUlJVTiAgICAgICAgICAgTkVUWF9QRklGT19SRUcoMHgxMTApCisjZGVmaW5lIE5FVFhfUEZJRk9fRklMTF9MRVZFTChwZmlmbykgIE5FVFhfUEZJRk9fUkVHKDB4MTgwICsgKChwZmlmbyk8PDIpKQorI2RlZmluZSBORVRYX1BGSUZPX1hQRUNfSVNSKHhwZWMpICAgICBORVRYX1BGSUZPX1JFRygweDQwMCArICgoeHBlYykgPDwgMikpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBEdWFsIFBvcnQgTWVtb3J5ICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFJlZ2lzdGVycyAqLworI2RlZmluZSBORVRYX0RQTUFTX1JFRyhvZnMpICAgICAgICAgICAgICAgX19pbyhORVRYX1ZBX0RQTUFTICsgKG9mcykpCisjZGVmaW5lIE5FVFhfRFBNQVNfU1lTX1NUQVQgICAgICAgICAgIE5FVFhfRFBNQVNfUkVHKDB4NGQ4KQorI2RlZmluZSBORVRYX0RQTUFTX0lOVF9TVEFUICAgICAgICAgICBORVRYX0RQTUFTX1JFRygweDRlMCkKKyNkZWZpbmUgTkVUWF9EUE1BU19JTlRfRU4gICAgICAgICAgICAgTkVUWF9EUE1BU19SRUcoMHg0ZjApCisjZGVmaW5lIE5FVFhfRFBNQVNfSUZfQ09ORjAgICAgICAgICAgIE5FVFhfRFBNQVNfUkVHKDB4NjA4KQorI2RlZmluZSBORVRYX0RQTUFTX0lGX0NPTkYxICAgICAgICAgICBORVRYX0RQTUFTX1JFRygweDYwYykKKyNkZWZpbmUgTkVUWF9EUE1BU19FWFRfQ09ORklHKGNzKSAgICAgTkVUWF9EUE1BU19SRUcoMHg2MTAgKyA0ICogKGNzKSkKKyNkZWZpbmUgTkVUWF9EUE1BU19JT19NT0RFMCAgICAgICAgICAgTkVUWF9EUE1BU19SRUcoMHg2MjApIC8qIEkvTyAzMi4uNjMgKi8KKyNkZWZpbmUgTkVUWF9EUE1BU19EUlZfRU4wICAgICAgICAgICAgTkVUWF9EUE1BU19SRUcoMHg2MjQpCisjZGVmaW5lIE5FVFhfRFBNQVNfREFUQTAgICAgICAgICAgICAgIE5FVFhfRFBNQVNfUkVHKDB4NjI4KQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxICAgICAgICAgICBORVRYX0RQTUFTX1JFRygweDYzMCkgLyogSS9PIDY0Li44NCAqLworI2RlZmluZSBORVRYX0RQTUFTX0RSVl9FTjEgICAgICAgICAgICBORVRYX0RQTUFTX1JFRygweDYzNCkKKyNkZWZpbmUgTkVUWF9EUE1BU19EQVRBMSAgICAgICAgICAgICAgTkVUWF9EUE1BU19SRUcoMHg2MzgpCisKKy8qIEJpdHMgKi8KKyNkZWZpbmUgTkVUWF9EUE1BU19JTlRfRU5fR0xCX0VOICAgICAgICAgKDE8PDMxKQorI2RlZmluZSBORVRYX0RQTUFTX0lOVF9FTl9NRU1fTENLICAgICAgICAoMTw8MzApCisjZGVmaW5lIE5FVFhfRFBNQVNfSU5UX0VOX1dERyAgICAgICAgICAgICgxPDwyOSkKKyNkZWZpbmUgTkVUWF9EUE1BU19JTlRfRU5fUElPNzIgICAgICAgICAgKDE8PDI4KQorI2RlZmluZSBORVRYX0RQTUFTX0lOVF9FTl9QSU80NyAgICAgICAgICAoMTw8MjcpCisjZGVmaW5lIE5FVFhfRFBNQVNfSU5UX0VOX1BJTzQwICAgICAgICAgICgxPDwyNikKKyNkZWZpbmUgTkVUWF9EUE1BU19JTlRfRU5fUElPMzYgICAgICAgICAgKDE8PDI1KQorI2RlZmluZSBORVRYX0RQTUFTX0lOVF9FTl9QSU8zNSAgICAgICAgICAoMTw8MjQpCisKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMF9ISUZfRElTQUJMRUQgKDA8PDI4KQorI2RlZmluZSBORVRYX0RQTUFTX0lGX0NPTkYwX0hJRl9FWFRfQlVTICAoMTw8MjgpCisjZGVmaW5lIE5FVFhfRFBNQVNfSUZfQ09ORjBfSElGX1VQXzhCSVQgICgyPDwyOCkKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMF9ISUZfVVBfMTZCSVQgKDM8PDI4KQorI2RlZmluZSBORVRYX0RQTUFTX0lGX0NPTkYwX0hJRl9JTyAgICAgICAoNDw8MjgpCisjZGVmaW5lIE5FVFhfRFBNQVNfSUZfQ09ORjBfV0FJVF9EUlZfUFAgICgxPDwxNCkKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMF9XQUlUX0RSVl9PRCAgKDI8PDE0KQorI2RlZmluZSBORVRYX0RQTUFTX0lGX0NPTkYwX1dBSVRfRFJWX1RSSSAoMzw8MTQpCisKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMV9JUlFfUE9MX1BJTzM1ICgxPDwyNikKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMV9JUlFfUE9MX1BJTzM2ICgxPDwyNykKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMV9JUlFfUE9MX1BJTzQwICgxPDwyOCkKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMV9JUlFfUE9MX1BJTzQ3ICgxPDwyOSkKKyNkZWZpbmUgTkVUWF9EUE1BU19JRl9DT05GMV9JUlFfUE9MX1BJTzcyICgxPDwzMCkKKworI2RlZmluZSBORVRYX0VYVF9DT05GSUdfVEFMRVdJRFRIKHgpICgoKHgpICYgMHg3KSA8PCAyOSkKKyNkZWZpbmUgTkVUWF9FWFRfQ09ORklHX1RBRFJIT0xEKHgpICAoKCh4KSAmIDB4NykgPDwgMjYpCisjZGVmaW5lIE5FVFhfRVhUX0NPTkZJR19UQ1NPTih4KSAgICAgKCgoeCkgJiAweDcpIDw8IDIzKQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfVFJET04oeCkgICAgICgoKHgpICYgMHg3KSA8PCAyMCkKKyNkZWZpbmUgTkVUWF9FWFRfQ09ORklHX1RXUk9OKHgpICAgICAoKCh4KSAmIDB4NykgIDw8IDE3KQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfVFdST0ZGKHgpICAgICgoKHgpICYgMHgxZikgPDwgMTIpCisjZGVmaW5lIE5FVFhfRVhUX0NPTkZJR19UUkRXUkNZQyh4KSAgKCgoeCkgJiAweDFmKSA8PCA3KQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfV0FJVF9QT0wgICAgICgxPDw2KQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfV0FJVF9FTiAgICAgICgxPDw1KQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfTlJEX01PREUgICAgICgxPDw0KQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfRFNfTU9ERSAgICAgICgxPDwzKQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfTldSX01PREUgICAgICgxPDwyKQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfMTZCSVQgICAgICAgICgxPDwxKQorI2RlZmluZSBORVRYX0VYVF9DT05GSUdfQ1NfRU5BQkxFICAgICgxPDwwKQorCisjZGVmaW5lIE5FVFhfRFBNQVNfSU9fTU9ERTBfV1JMICAgKDE8PDEzKQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUwX1dBSVQgICgxPDwxNCkKKyNkZWZpbmUgTkVUWF9EUE1BU19JT19NT0RFMF9SRUFEWSAoMTw8MTUpCisjZGVmaW5lIE5FVFhfRFBNQVNfSU9fTU9ERTBfQ1MwICAgKDE8PDE5KQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUwX0VYVFJEICgxPDwyMCkKKworI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX0NTMiAgICAgICAgICAgKDE8PDE1KQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX0NTMSAgICAgICAgICAgKDE8PDE2KQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX1NBTVBMRV9OUE9SICAgKDA8PDMwKQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX1NBTVBMRV8xMDBNSFogKDE8PDMwKQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX1NBTVBMRV9OUElPMzYgKDI8PDMwKQorI2RlZmluZSBORVRYX0RQTUFTX0lPX01PREUxX1NBTVBMRV9QSU8zNiAgKDM8PDMwKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSTJDICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBORVRYX0kyQ19SRUcob2ZzKQlfX2lvKE5FVFhfVkFfSTJDLCAob2ZzKSkKKyNkZWZpbmUgTkVUWF9JMkNfQ1RSTAlORVRYX0kyQ19SRUcoMHgwKQorI2RlZmluZSBORVRYX0kyQ19EQVRBCU5FVFhfSTJDX1JFRygweDQpCisKKyNlbmRpZiAvKiBfX0FTTV9BUkNIX05FVFhfUkVHU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3BhcmFtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3BhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4MGMyNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvcGFyYW0uaApAQCAtMCwwICsxLDE4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvcGFyYW0uaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9wZmlmby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9wZmlmby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZjJlZTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3BmaWZvLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIGluY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvcGZpZm8uaAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisKKyNpZm5kZWYgQVNNX0FSQ0hfUEZJRk9fSAorI2RlZmluZSBBU01fQVJDSF9QRklGT19ICisKK3N0YXRpYyBpbmxpbmUgaW50IHBmaWZvX3B1c2goaW50IG5vLCB1bnNpZ25lZCBpbnQgcG9pbnRlcikKK3sKKwl3cml0ZWwocG9pbnRlciwgTkVUWF9QRklGT19CQVNFKG5vKSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHBmaWZvX3BvcChpbnQgbm8pCit7CisJcmV0dXJuIHJlYWRsKE5FVFhfUEZJRk9fQkFTRShubykpOworfQorCitzdGF0aWMgaW5saW5lIGludCBwZmlmb19maWxsX2xldmVsKGludCBubykKK3sKKworCXJldHVybiByZWFkbChORVRYX1BGSUZPX0ZJTExfTEVWRUwobm8pKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgcGZpZm9fZnVsbChpbnQgbm8pCit7CisJcmV0dXJuIHJlYWRsKE5FVFhfUEZJRk9fRlVMTCkgJiAoMTw8bm8pID8gMSA6IDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHBmaWZvX2VtcHR5KGludCBubykKK3sKKwlyZXR1cm4gcmVhZGwoTkVUWF9QRklGT19FTVBUWSkgJiAoMTw8bm8pID8gMSA6IDA7Cit9CisKK2ludCBwZmlmb19yZXF1ZXN0KHVuc2lnbmVkIGludCBwZmlmb19tYXNrKTsKK3ZvaWQgcGZpZm9fZnJlZSh1bnNpZ25lZCBpbnQgcGZpZm9fbWFzayk7CisKKyNlbmRpZiAvKiBBU01fQVJDSF9QRklGT19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmFkZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9zeXN0ZW0uaApAQCAtMCwwICsxLDM4IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC9zeXN0ZW0uaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2lmbmRlZiBfX0FTTV9BUkNIX1NZU1RFTV9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfU1lTVEVNX0gKKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgIm5ldHgtcmVncy5oIgorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pZGxlKHZvaWQpCit7CisJY3B1X2RvX2lkbGUoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFyY2hfcmVzZXQoY2hhciBtb2RlKQoreworCXdyaXRlbChORVRYX1NZU1RFTV9SRVNfQ1JfRklSTVdfUkVTX0VOIHwgTkVUWF9TWVNURU1fUkVTX0NSX0ZJUk1XX1JFUywKKwkgICAgICAgTkVUWF9TWVNURU1fUkVTX0NSKTsKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvdGltZXguaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvdGltZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmRiNDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC90aW1leC5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3RpbWV4LmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2RlZmluZSBDTE9DS19USUNLX1JBVEUgMTAwMDAwMDAwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3VuY29tcHJlc3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW5ldHgvdW5jb21wcmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4OTQzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3VuY29tcHJlc3MuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC91bmNvbXByZXNzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHRoZSBzZXJpYWwgcG9ydCBoYXMgYWxyZWFkeSBiZWVuCisgKiBpbml0aWFsaXplZCBieSB0aGUgYm9vdGxvYWRlci4gIFdlIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGVuYWJsZWQKKyAqIHBvcnQgaW4gdGhlIG1vc3QgcHJvYmFibGUgb3JkZXIuICBJZiB5b3UgZGlkbid0IHNldHVwIGEgcG9ydCBpbgorICogeW91ciBib290bG9hZGVyIHRoZW4gbm90aGluZyB3aWxsIGFwcGVhciAod2hpY2ggbWlnaHQgYmUgZGVzaXJlZCkuCisgKgorICogVGhpcyBkb2VzIG5vdCBhcHBlbmQgYSBuZXdsaW5lCisgKi8KKworI2RlZmluZSBSRUcoeCkgKCoodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSh4KSkKKworI2RlZmluZSBVQVJUMV9CQVNFIDB4MTAwYTAwCisjZGVmaW5lIFVBUlQyX0JBU0UgMHgxMDBhODAKKworI2RlZmluZSBVQVJUX0RSIDB4MAorCisjZGVmaW5lIFVBUlRfQ1IgMHgxNAorI2RlZmluZSBDUl9VQVJUX0VOICgxPDwwKQorCisjZGVmaW5lIFVBUlRfRlIgMHgxOAorI2RlZmluZSBGUl9CVVNZICgxPDwzKQorI2RlZmluZSBGUl9UWEZGICgxPDw1KQorCitzdGF0aWMgdm9pZCBwdXRjKGNoYXIgYykKK3sKKwl1bnNpZ25lZCBsb25nIGJhc2U7CisKKwlpZiAoUkVHKFVBUlQxX0JBU0UgKyBVQVJUX0NSKSAmIENSX1VBUlRfRU4pCisJCWJhc2UgPSBVQVJUMV9CQVNFOworCWVsc2UgaWYgKFJFRyhVQVJUMl9CQVNFICsgVUFSVF9DUikgJiBDUl9VQVJUX0VOKQorCQliYXNlID0gVUFSVDJfQkFTRTsKKwllbHNlCisJCXJldHVybjsKKworCXdoaWxlIChSRUcoYmFzZSArIFVBUlRfRlIpICYgRlJfVFhGRik7CisJUkVHKGJhc2UgKyBVQVJUX0RSKSA9IGM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgYmFzZTsKKworCWlmIChSRUcoVUFSVDFfQkFTRSArIFVBUlRfQ1IpICYgQ1JfVUFSVF9FTikKKwkJYmFzZSA9IFVBUlQxX0JBU0U7CisJZWxzZSBpZiAoUkVHKFVBUlQyX0JBU0UgKyBVQVJUX0NSKSAmIENSX1VBUlRfRU4pCisJCWJhc2UgPSBVQVJUMl9CQVNFOworCWVsc2UKKwkJcmV0dXJuOworCisJd2hpbGUgKFJFRyhiYXNlICsgVUFSVF9GUikgJiBGUl9CVVNZKTsKK30KKworLyoKKyAqIG5vdGhpbmcgdG8gZG8KKyAqLworI2RlZmluZSBhcmNoX2RlY29tcF9zZXR1cCgpCisjZGVmaW5lIGFyY2hfZGVjb21wX3dkb2coKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC92bWFsbG9jLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3ZtYWxsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTJkYTVhCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC92bWFsbG9jLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3ZtYWxsb2MuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworI2RlZmluZSBWTUFMTE9DX0VORCAgICAgICAoUEFHRV9PRkZTRVQgKyAweDEwMDAwMDAwKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC94Yy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtbmV0eC94Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OWFmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3hjLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vYXJjaC1uZXR4L3hjLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX1hDX0gKKyNkZWZpbmUgX19BU01fQVJDSF9YQ19ICisKK3N0cnVjdCB4YyB7CisJaW50IG5vOworCXVuc2lnbmVkIGludCB0eXBlOworCXVuc2lnbmVkIGludCB2ZXJzaW9uOworCXZvaWQgX19pb21lbSAqeHBlY19iYXNlOworCXZvaWQgX19pb21lbSAqeG1hY19iYXNlOworCXZvaWQgX19pb21lbSAqc3JhbV9iYXNlOworCWludCBpcnE7CisJc3RydWN0IGRldmljZSAqZGV2OworfTsKKworaW50IHhjX3Jlc2V0KHN0cnVjdCB4YyAqeCk7CitpbnQgeGNfc3RvcChzdHJ1Y3QgeGMqIHgpOworaW50IHhjX3N0YXJ0KHN0cnVjdCB4YyAqeCk7CitpbnQgeGNfcnVubmluZyhzdHJ1Y3QgeGMgKngpOworaW50IHhjX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IHhjKiB4KTsKK3N0cnVjdCB4YyogcmVxdWVzdF94YyhpbnQgeGNubywgc3RydWN0IGRldmljZSAqZGV2KTsKK3ZvaWQgZnJlZV94YyhzdHJ1Y3QgeGMgKngpOworCisjZW5kaWYgLyogX19BU01fQVJDSF9YQ19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1wbng0MDA4L2RlYnVnLW1hY3JvLlMgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1wbng0MDA4L2RlYnVnLW1hY3JvLlMKaW5kZXggZWIzODM5ZC4uNjdkMThhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcG54NDAwOC9kZWJ1Zy1tYWNyby5TCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXBueDQwMDgvZGVidWctbWFjcm8uUwpAQCAtMTksOSArMTksNSBAQAogCQlhZGRuZQlccngsIFxyeCwgIzB4ZjQwMDAwMDAKIAkJLmVuZG0KIAotCQkubWFjcm8Jc2VuZHVhcnQscmQscngKLQkJc3RyYglccmQsIFtccngsICMweDBdCi0JCS5lbmRtCi0KICNkZWZpbmUgVUFSVF9TSElGVAkyCiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2RlYnVnLTgyNTAuUz4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXBueDQwMDgvZ3Bpby5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcG54NDAwOC9ncGlvLmgKaW5kZXggMWZhNWE3Ny4uZDAxYmY4MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcG54NDAwOC9ncGlvLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcG54NDAwOC9ncGlvLmgKQEAgLTEyNyw2ICsxMjcsNzkgQEAKICNkZWZpbmUgR1BJT19JU09VVChLKSAoKEdQSU9fVFlQRV9NQVNLKEspID09IEdQSU9fT1VUKSAmJiAoR1BJT19CSVQoSykgJiBHUElPX09VVF9NQVNLKSkKICNkZWZpbmUgR1BJT19JU0lOKEspICAoKEdQSU9fVFlQRV9NQVNLKEspID09IEdQSU9fSU4pICYmIChHUElPX0JJVChLKSAmIEdQSU9fSU5fTUFTSykpCiAKKy8qIFN0YXJ0IEVuYWJsZSBQaW4gSW50ZXJydXB0cyAtIHRhYmxlIDU4IHBhZ2UgNjYgKi8KKworI2RlZmluZSBTRV9QSU5fQkFTRV9JTlQgICAzMgorCisjZGVmaW5lIFNFX1U3X1JYX0lOVCAgICAgICAgICAgIDYzCisjZGVmaW5lIFNFX1U3X0hDVFNfSU5UICAgICAgICAgIDYyCisjZGVmaW5lIFNFX0JUX0NMS1JFUV9JTlQgICAgICAgIDYxCisjZGVmaW5lIFNFX1U2X0lSUlhfSU5UICAgICAgICAgIDYwCisvKjU5IHVudXNlZCovCisjZGVmaW5lIFNFX1U1X1JYX0lOVCAgICAgICAgICAgIDU4CisjZGVmaW5lIFNFX0dQSV8xMV9JTlQgICAgICAgICAgIDU3CisjZGVmaW5lIFNFX1UzX1JYX0lOVCAgICAgICAgICAgIDU2CisjZGVmaW5lIFNFX1UyX0hDVFNfSU5UICAgICAgICAgIDU1CisjZGVmaW5lIFNFX1UyX1JYX0lOVCAgICAgICAgICAgIDU0CisjZGVmaW5lIFNFX1UxX1JYX0lOVCAgICAgICAgICAgIDUzCisjZGVmaW5lIFNFX0RJU1BfU1lOQ19JTlQgICAgICAgIDUyCisvKjUxIHVudXNlZCovCisjZGVmaW5lIFNFX1NESU9fSU5UX04gICAgICAgICAgIDUwCisjZGVmaW5lIFNFX01TRElPX1NUQVJUX0lOVCAgICAgIDQ5CisjZGVmaW5lIFNFX0dQSV8wNl9JTlQgICAgICAgICAgIDQ4CisjZGVmaW5lIFNFX0dQSV8wNV9JTlQgICAgICAgICAgIDQ3CisjZGVmaW5lIFNFX0dQSV8wNF9JTlQgICAgICAgICAgIDQ2CisjZGVmaW5lIFNFX0dQSV8wM19JTlQgICAgICAgICAgIDQ1CisjZGVmaW5lIFNFX0dQSV8wMl9JTlQgICAgICAgICAgIDQ0CisjZGVmaW5lIFNFX0dQSV8wMV9JTlQgICAgICAgICAgIDQzCisjZGVmaW5lIFNFX0dQSV8wMF9JTlQgICAgICAgICAgIDQyCisjZGVmaW5lIFNFX1NZU0NMS0VOX1BJTl9JTlQgICAgIDQxCisjZGVmaW5lIFNFX1NQSTFfREFUQUlOX0lOVCAgICAgIDQwCisjZGVmaW5lIFNFX0dQSV8wN19JTlQgICAgICAgICAgIDM5CisjZGVmaW5lIFNFX1NQSTJfREFUQUlOX0lOVCAgICAgIDM4CisjZGVmaW5lIFNFX0dQSV8xMF9JTlQgICAgICAgICAgIDM3CisjZGVmaW5lIFNFX0dQSV8wOV9JTlQgICAgICAgICAgIDM2CisjZGVmaW5lIFNFX0dQSV8wOF9JTlQgICAgICAgICAgIDM1CisvKjM0LTMyIHVudXNlZCovCisKKy8qIFN0YXJ0IEVuYWJsZSBJbnRlcm5hbCBJbnRlcnJ1cHRzIC0gdGFibGUgNTcgcGFnZSA2NSAqLworCisjZGVmaW5lIFNFX0lOVF9CQVNFX0lOVCAgIDAKKworI2RlZmluZSBTRV9UU19JUlEgICAgICAgICAgICAgICAzMQorI2RlZmluZSBTRV9UU19QX0lOVCAgICAgICAgICAgICAzMAorI2RlZmluZSBTRV9UU19BVVhfSU5UICAgICAgICAgICAyOQorLyoyNy0yOCB1bnVzZWQqLworI2RlZmluZSBTRV9VU0JfQUhCX05FRURfQ0xLX0lOVCAyNgorI2RlZmluZSBTRV9NU1RJTUVSX0lOVCAgICAgICAgICAyNQorI2RlZmluZSBTRV9SVENfSU5UICAgICAgICAgICAgICAyNAorI2RlZmluZSBTRV9VU0JfTkVFRF9DTEtfSU5UICAgICAyMworI2RlZmluZSBTRV9VU0JfSU5UICAgICAgICAgICAgICAyMgorI2RlZmluZSBTRV9VU0JfSTJDX0lOVCAgICAgICAgICAyMQorI2RlZmluZSBTRV9VU0JfT1RHX1RJTUVSX0lOVCAgICAyMAorI2RlZmluZSBTRV9VU0JfT1RHX0FUWF9JTlRfTiAgICAxOQorLyoxOCB1bnVzZWQqLworI2RlZmluZSBTRV9EU1BfR1BJTzRfSU5UICAgICAgICAxNworI2RlZmluZSBTRV9LRVlfSVJRICAgICAgICAgICAgICAxNgorI2RlZmluZSBTRV9EU1BfU0xBVkVQT1JUX0lOVCAgICAxNQorI2RlZmluZSBTRV9EU1BfR1BJTzFfSU5UICAgICAgICAxNAorI2RlZmluZSBTRV9EU1BfR1BJTzBfSU5UICAgICAgICAxMworI2RlZmluZSBTRV9EU1BfQUhCX0lOVCAgICAgICAgICAxMgorLyoxMS02IHVudXNlZCovCisjZGVmaW5lIFNFX0dQSU9fMDVfSU5UICAgICAgICAgIDUKKyNkZWZpbmUgU0VfR1BJT18wNF9JTlQgICAgICAgICAgNAorI2RlZmluZSBTRV9HUElPXzAzX0lOVCAgICAgICAgICAzCisjZGVmaW5lIFNFX0dQSU9fMDJfSU5UICAgICAgICAgIDIKKyNkZWZpbmUgU0VfR1BJT18wMV9JTlQgICAgICAgICAgMQorI2RlZmluZSBTRV9HUElPXzAwX0lOVCAgICAgICAgICAwCisKKyNkZWZpbmUgU1RBUlRfSU5UX1JFR19CSVQoaXJxKSAoMTw8KChpcnEpJjB4MUYpKQorCisjZGVmaW5lIFNUQVJUX0lOVF9FUl9SRUcoaXJxKSAgICAgSU9fQUREUkVTUygoUE5YNDAwOF9QV1JNQU5fQkFTRSArIDB4MjAgKyAoKChpcnEpJigweDE8PDUpKT4+MSkpKQorI2RlZmluZSBTVEFSVF9JTlRfUlNSX1JFRyhpcnEpICAgIElPX0FERFJFU1MoKFBOWDQwMDhfUFdSTUFOX0JBU0UgKyAweDI0ICsgKCgoaXJxKSYoMHgxPDw1KSk+PjEpKSkKKyNkZWZpbmUgU1RBUlRfSU5UX1NSX1JFRyhpcnEpICAgICBJT19BRERSRVNTKChQTlg0MDA4X1BXUk1BTl9CQVNFICsgMHgyOCArICgoKGlycSkmKDB4MTw8NSkpPj4xKSkpCisjZGVmaW5lIFNUQVJUX0lOVF9BUFJfUkVHKGlycSkgICAgSU9fQUREUkVTUygoUE5YNDAwOF9QV1JNQU5fQkFTRSArIDB4MkMgKyAoKChpcnEpJigweDE8PDUpKT4+MSkpKQorCiBleHRlcm4gaW50IHBueDQwMDhfZ3Bpb19yZWdpc3Rlcl9waW4odW5zaWduZWQgc2hvcnQgcGluKTsKIGV4dGVybiBpbnQgcG54NDAwOF9ncGlvX3VucmVnaXN0ZXJfcGluKHVuc2lnbmVkIHNob3J0IHBpbik7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBwbng0MDA4X2dwaW9fcmVhZF9waW4odW5zaWduZWQgc2hvcnQgcGluKTsKQEAgLTEzNiw0ICsyMDksMzMgQEAKIGV4dGVybiBpbnQgcG54NDAwOF9ncGlvX3NldF9waW5fbXV4KHVuc2lnbmVkIHNob3J0IHBpbiwgaW50IG91dHB1dCk7CiBleHRlcm4gaW50IHBueDQwMDhfZ3Bpb19yZWFkX3Bpbl9tdXgodW5zaWduZWQgc2hvcnQgcGluKTsKIAorc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0X2ludF91bWFzayh1OCBpcnEpCit7CisJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKFNUQVJUX0lOVF9FUl9SRUcoaXJxKSkgfAorCQkgICAgIFNUQVJUX0lOVF9SRUdfQklUKGlycSksIFNUQVJUX0lOVF9FUl9SRUcoaXJxKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdGFydF9pbnRfbWFzayh1OCBpcnEpCit7CisJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKFNUQVJUX0lOVF9FUl9SRUcoaXJxKSkgJgorCQkgICAgIH5TVEFSVF9JTlRfUkVHX0JJVChpcnEpLCBTVEFSVF9JTlRfRVJfUkVHKGlycSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRfaW50X2Fjayh1OCBpcnEpCit7CisJX19yYXdfd3JpdGVsKFNUQVJUX0lOVF9SRUdfQklUKGlycSksIFNUQVJUX0lOVF9SU1JfUkVHKGlycSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRfaW50X3NldF9mYWxsaW5nX2VkZ2UodTggaXJxKQoreworCV9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbChTVEFSVF9JTlRfQVBSX1JFRyhpcnEpKSAmCisJCSAgICAgflNUQVJUX0lOVF9SRUdfQklUKGlycSksIFNUQVJUX0lOVF9BUFJfUkVHKGlycSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRfaW50X3NldF9yaXNpbmdfZWRnZSh1OCBpcnEpCit7CisJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKFNUQVJUX0lOVF9BUFJfUkVHKGlycSkpIHwKKwkJICAgICBTVEFSVF9JTlRfUkVHX0JJVChpcnEpLCBTVEFSVF9JTlRfQVBSX1JFRyhpcnEpKTsKK30KKwogI2VuZGlmCQkJCS8qIF9QTlg0MDA4X0dQSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXBueDQwMDgvcG0uaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXBueDQwMDgvcG0uaAppbmRleCBjNjYwNDg2Li5iYWMxNjM0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcG54NDAwOC9wbS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXBueDQwMDgvcG0uaApAQCAtMjksMzQgKzI5LDUgQEAKIGV4dGVybiBpbnQgcG54NDAwOF9zdGFydHVwX3BsbChzdHJ1Y3QgY2xrICopOwogZXh0ZXJuIGludCBwbng0MDA4X3NodXRkb3duX3BsbChzdHJ1Y3QgY2xrICopOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRfaW50X3VtYXNrKHU4IGlycSkKLXsKLQlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoU1RBUlRfSU5UX0VSX1JFRyhpcnEpKSB8Ci0JCSAgICAgU1RBUlRfSU5UX1JFR19CSVQoaXJxKSwgU1RBUlRfSU5UX0VSX1JFRyhpcnEpKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0X2ludF9tYXNrKHU4IGlycSkKLXsKLQlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoU1RBUlRfSU5UX0VSX1JFRyhpcnEpKSAmCi0JCSAgICAgflNUQVJUX0lOVF9SRUdfQklUKGlycSksIFNUQVJUX0lOVF9FUl9SRUcoaXJxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydF9pbnRfYWNrKHU4IGlycSkKLXsKLQlfX3Jhd193cml0ZWwoU1RBUlRfSU5UX1JFR19CSVQoaXJxKSwgU1RBUlRfSU5UX1JTUl9SRUcoaXJxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydF9pbnRfc2V0X2ZhbGxpbmdfZWRnZSh1OCBpcnEpCi17Ci0JX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKFNUQVJUX0lOVF9BUFJfUkVHKGlycSkpICYKLQkJICAgICB+U1RBUlRfSU5UX1JFR19CSVQoaXJxKSwgU1RBUlRfSU5UX0FQUl9SRUcoaXJxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydF9pbnRfc2V0X3Jpc2luZ19lZGdlKHU4IGlycSkKLXsKLQlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoU1RBUlRfSU5UX0FQUl9SRUcoaXJxKSkgfAotCQkgICAgIFNUQVJUX0lOVF9SRUdfQklUKGlycSksIFNUQVJUX0lOVF9BUFJfUkVHKGlycSkpOwotfQotCiAjZW5kaWYJCQkJLyogQVNTRU1CTEVSICovCiAjZW5kaWYJCQkJLyogX19BU01fQVJDSF9QTlg0MDA4X1BNX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9wb29kbGUuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9wb29kbGUuaAppbmRleCA2YjVhYzUxLi40ZDZhNDAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcG9vZGxlLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3Bvb2RsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIFBPT0RMRV9HUElPX0NGX0NECQkoMTQpCiAjZGVmaW5lIFBPT0RMRV9HUElPX0NGX1NUU0NIRwkJKDE0KQogI2RlZmluZSBQT09ETEVfR1BJT19TRF9QV1IJCSgzMykKKyNkZWZpbmUgUE9PRExFX0dQSU9fU0RfUFdSMQkJKDMpCiAjZGVmaW5lIFBPT0RMRV9HUElPX25TRF9DTEsJCSg2KQogI2RlZmluZSBQT09ETEVfR1BJT19uU0RfV1AJCSg3KQogI2RlZmluZSBQT09ETEVfR1BJT19uU0RfSU5UCQkoOCkKQEAgLTQyLDYgKzQzLDcgQEAKICNkZWZpbmUgUE9PRExFX0dQSU9fQllQQVNTX09OCQkoMzYpCiAjZGVmaW5lIFBPT0RMRV9HUElPX0NIUkdfT04JCSgzOCkKICNkZWZpbmUgUE9PRExFX0dQSU9fQ0hSR19GVUxMCQkoMTYpCisjZGVmaW5lIFBPT0RMRV9HUElPX0RJU0NIQVJHRV9PTiAgICAgICAgKDQyKSAvKiBFbmFibGUgYmF0dGVyeSBkaXNjaGFyZ2UgKi8KIAogLyogUFhBIEdQSU9zICovCiAjZGVmaW5lIFBPT0RMRV9JUlFfR1BJT19PTl9LRVkJCUlSUV9HUElPKDApCkBAIC02OCw0ICs3MCw2IEBACiAjZGVmaW5lIFBPT0RMRV9TQ09PUF9JT19ESVIJKCBQT09ETEVfU0NPT1BfVlBFTiB8IFBPT0RMRV9TQ09PUF9IU19PVVQgKQogI2RlZmluZSBQT09ETEVfU0NPT1BfSU9fT1VUCSggMCApCiAKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHBvb2RsZV9sb2NvbW9fZGV2aWNlOworCiAjZW5kaWYgLyogX19BU01fQVJDSF9QT09ETEVfSCAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKaW5kZXggNjY1MGQ0ZC4uOWY4M2Y0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3B4YS1yZWdzLmgKQEAgLTE2MjUsNyArMTYyNSw3IEBACiAjZGVmaW5lIFNTQ1IwX1JJTQkoMSA8PCAyMikJLyogUmVjZWl2ZSBGSUZPIG92ZXJycnVuIGludGVycnVwdCBtYXNrICovCiAjZGVmaW5lIFNTQ1IwX1RVTQkoMSA8PCAyMykJLyogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biBpbnRlcnJ1cHQgbWFzayAqLwogI2RlZmluZSBTU0NSMF9GUkRDCSgweDA3MDAwMDAwKQkvKiBGcmFtZSByYXRlIGRpdmlkZXIgY29udHJvbCAobWFzaykgKi8KLSNkZWZpbmUgU1NDUjBfU2xvdHNQZXJGcm0oYykgKCh4KSAtIDEpCS8qIFRpbWUgc2xvdHMgcGVyIGZyYW1lIFsxLi44XSAqLworI2RlZmluZSBTU0NSMF9TbG90c1BlckZybSh4KSAoKHgpIC0gMSkJLyogVGltZSBzbG90cyBwZXIgZnJhbWUgWzEuLjhdICovCiAjZGVmaW5lIFNTQ1IwX0FEQwkoMSA8PCAzMCkJLyogQXVkaW8gY2xvY2sgc2VsZWN0ICovCiAjZGVmaW5lIFNTQ1IwX01PRAkoMSA8PCAzMSkJLyogTW9kZSAobm9ybWFsIG9yIG5ldHdvcmspICovCiAjZW5kaWYKQEAgLTE3MDYsNiArMTcwNiwxMCBAQAogI2lmIGRlZmluZWQgKENPTkZJR19QWEEyN3gpCiAjZGVmaW5lIFNTVE9fUDEJCV9fUkVHKDB4NDEwMDAwMjgpICAvKiBTU1AgUG9ydCAxIFRpbWUgT3V0IFJlZ2lzdGVyICovCiAjZGVmaW5lIFNTUFNQX1AxCV9fUkVHKDB4NDEwMDAwMkMpICAvKiBTU1AgUG9ydCAxIFByb2dyYW1tYWJsZSBTZXJpYWwgUHJvdG9jb2wgKi8KKyNkZWZpbmUgU1NUU0FfUDEJX19SRUcoMHg0MTAwMDAzMCkgIC8qIFNTUCBQb3J0IDEgVHggVGltZXNsb3QgQWN0aXZlICovCisjZGVmaW5lIFNTUlNBX1AxCV9fUkVHKDB4NDEwMDAwMzQpICAvKiBTU1AgUG9ydCAxIFJ4IFRpbWVzbG90IEFjdGl2ZSAqLworI2RlZmluZSBTU1RTU19QMQlfX1JFRygweDQxMDAwMDM4KSAgLyogU1NQIFBvcnQgMSBUaW1lc2xvdCBTdGF0dXMgKi8KKyNkZWZpbmUgU1NBQ0RfUDEJX19SRUcoMHg0MTAwMDAzQykgIC8qIFNTUCBQb3J0IDEgQXVkaW8gQ2xvY2sgRGl2aWRlciAqLwogI2RlZmluZSBTU0NSMF9QMglfX1JFRygweDQxNzAwMDAwKSAgLyogU1NQIFBvcnQgMiBDb250cm9sIFJlZ2lzdGVyIDAgKi8KICNkZWZpbmUgU1NDUjFfUDIJX19SRUcoMHg0MTcwMDAwNCkgIC8qIFNTUCBQb3J0IDIgQ29udHJvbCBSZWdpc3RlciAxICovCiAjZGVmaW5lIFNTU1JfUDIJCV9fUkVHKDB4NDE3MDAwMDgpICAvKiBTU1AgUG9ydCAyIFN0YXR1cyBSZWdpc3RlciAqLwpAQCAtMTcxMyw2ICsxNzE3LDEwIEBACiAjZGVmaW5lIFNTRFJfUDIJCV9fUkVHKDB4NDE3MDAwMTApICAvKiAoV3JpdGUgLyBSZWFkKSBTU1AgUG9ydCAyIERhdGEgV3JpdGUgUmVnaXN0ZXIvU1NQIERhdGEgUmVhZCBSZWdpc3RlciAqLwogI2RlZmluZSBTU1RPX1AyCQlfX1JFRygweDQxNzAwMDI4KSAgLyogU1NQIFBvcnQgMiBUaW1lIE91dCBSZWdpc3RlciAqLwogI2RlZmluZSBTU1BTUF9QMglfX1JFRygweDQxNzAwMDJDKSAgLyogU1NQIFBvcnQgMiBQcm9ncmFtbWFibGUgU2VyaWFsIFByb3RvY29sICovCisjZGVmaW5lIFNTVFNBX1AyCV9fUkVHKDB4NDE3MDAwMzApICAvKiBTU1AgUG9ydCAyIFR4IFRpbWVzbG90IEFjdGl2ZSAqLworI2RlZmluZSBTU1JTQV9QMglfX1JFRygweDQxNzAwMDM0KSAgLyogU1NQIFBvcnQgMiBSeCBUaW1lc2xvdCBBY3RpdmUgKi8KKyNkZWZpbmUgU1NUU1NfUDIJX19SRUcoMHg0MTcwMDAzOCkgIC8qIFNTUCBQb3J0IDIgVGltZXNsb3QgU3RhdHVzICovCisjZGVmaW5lIFNTQUNEX1AyCV9fUkVHKDB4NDE3MDAwM0MpICAvKiBTU1AgUG9ydCAyIEF1ZGlvIENsb2NrIERpdmlkZXIgKi8KICNkZWZpbmUgU1NDUjBfUDMJX19SRUcoMHg0MTkwMDAwMCkgIC8qIFNTUCBQb3J0IDMgQ29udHJvbCBSZWdpc3RlciAwICovCiAjZGVmaW5lIFNTQ1IxX1AzCV9fUkVHKDB4NDE5MDAwMDQpICAvKiBTU1AgUG9ydCAzIENvbnRyb2wgUmVnaXN0ZXIgMSAqLwogI2RlZmluZSBTU1NSX1AzCQlfX1JFRygweDQxOTAwMDA4KSAgLyogU1NQIFBvcnQgMyBTdGF0dXMgUmVnaXN0ZXIgKi8KQEAgLTE3MjAsNiArMTcyOCwxMCBAQAogI2RlZmluZSBTU0RSX1AzCQlfX1JFRygweDQxOTAwMDEwKSAgLyogKFdyaXRlIC8gUmVhZCkgU1NQIFBvcnQgMyBEYXRhIFdyaXRlIFJlZ2lzdGVyL1NTUCBEYXRhIFJlYWQgUmVnaXN0ZXIgKi8KICNkZWZpbmUgU1NUT19QMwkJX19SRUcoMHg0MTkwMDAyOCkgIC8qIFNTUCBQb3J0IDMgVGltZSBPdXQgUmVnaXN0ZXIgKi8KICNkZWZpbmUgU1NQU1BfUDMJX19SRUcoMHg0MTkwMDAyQykgIC8qIFNTUCBQb3J0IDMgUHJvZ3JhbW1hYmxlIFNlcmlhbCBQcm90b2NvbCAqLworI2RlZmluZSBTU1RTQV9QMwlfX1JFRygweDQxOTAwMDMwKSAgLyogU1NQIFBvcnQgMyBUeCBUaW1lc2xvdCBBY3RpdmUgKi8KKyNkZWZpbmUgU1NSU0FfUDMJX19SRUcoMHg0MTkwMDAzNCkgIC8qIFNTUCBQb3J0IDMgUnggVGltZXNsb3QgQWN0aXZlICovCisjZGVmaW5lIFNTVFNTX1AzCV9fUkVHKDB4NDE5MDAwMzgpICAvKiBTU1AgUG9ydCAzIFRpbWVzbG90IFN0YXR1cyAqLworI2RlZmluZSBTU0FDRF9QMwlfX1JFRygweDQxOTAwMDNDKSAgLyogU1NQIFBvcnQgMyBBdWRpbyBDbG9jayBEaXZpZGVyICovCiAjZWxzZSAvKiBQWEEyNTUgKG9ubHkgcG9ydCAyKSBhbmQgUFhBMjZ4IHBvcnRzKi8KICNkZWZpbmUgU1NUT19QMQkJX19SRUcoMHg0MTAwMDAyOCkgIC8qIFNTUCBQb3J0IDEgVGltZSBPdXQgUmVnaXN0ZXIgKi8KICNkZWZpbmUgU1NQU1BfUDEJX19SRUcoMHg0MTAwMDAyQykgIC8qIFNTUCBQb3J0IDEgUHJvZ3JhbW1hYmxlIFNlcmlhbCBQcm90b2NvbCAqLwpAQCAtMTc0Niw2ICsxNzU4LDEwIEBACiAjZGVmaW5lIFNTRFJfUCh4KSAoKigoKHgpID09IDEpID8gJlNTRFJfUDEgOiAoKHgpID09IDIpID8gJlNTRFJfUDIgOiAoKHgpID09IDMpID8gJlNTRFJfUDMgOiBOVUxMKSkKICNkZWZpbmUgU1NUT19QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NUT19QMSA6ICgoeCkgPT0gMikgPyAmU1NUT19QMiA6ICgoeCkgPT0gMykgPyAmU1NUT19QMyA6IE5VTEwpKQogI2RlZmluZSBTU1BTUF9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NQU1BfUDEgOiAoKHgpID09IDIpID8gJlNTUFNQX1AyIDogKCh4KSA9PSAzKSA/ICZTU1BTUF9QMyA6IE5VTEwpKQorI2RlZmluZSBTU1RTQV9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NUU0FfUDEgOiAoKHgpID09IDIpID8gJlNTVFNBX1AyIDogKCh4KSA9PSAzKSA/ICZTU1RTQV9QMyA6IE5VTEwpKQorI2RlZmluZSBTU1JTQV9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NSU0FfUDEgOiAoKHgpID09IDIpID8gJlNTUlNBX1AyIDogKCh4KSA9PSAzKSA/ICZTU1JTQV9QMyA6IE5VTEwpKQorI2RlZmluZSBTU1RTU19QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NUU1NfUDEgOiAoKHgpID09IDIpID8gJlNTVFNTX1AyIDogKCh4KSA9PSAzKSA/ICZTU1RTU19QMyA6IE5VTEwpKQorI2RlZmluZSBTU0FDRF9QKHgpICgqKCgoeCkgPT0gMSkgPyAmU1NBQ0RfUDEgOiAoKHgpID09IDIpID8gJlNTQUNEX1AyIDogKCh4KSA9PSAzKSA/ICZTU0FDRF9QMyA6IE5VTEwpKQogCiAvKgogICogTXVsdGlNZWRpYUNhcmQgKE1NQykgY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3N5c3RlbS5oCmluZGV4IDg0MGE0NmIuLjFkNTZhM2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9zeXN0ZW0uaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvc3lzdGVtLmgKQEAgLTEwLDYgKzEwLDcgQEAKICAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogICovCiAKKyNpbmNsdWRlIDxhc20vcHJvYy1mbnMuaD4KICNpbmNsdWRlICJoYXJkd2FyZS5oIgogI2luY2x1ZGUgInB4YS1yZWdzLmgiCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1kc2MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvcmVncy1kc2MuaAppbmRleCBhMDIzYjA0Li5iYTEzYTJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3JlZ3MtZHNjLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9yZWdzLWRzYy5oCkBAIC0xNzAsNyArMTcwLDcgQEAKICNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMV80bUEgICAgKDM8PDIpCiAjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzFfTUFTSyAgICgzPDwyKQogCi0jZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzAgICAgICAgIChTM0MyNDQwX1NFTEVDVF9EU0MxIHwgMAorI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MwICAgICAgICAoUzNDMjQ0MF9TRUxFQ1RfRFNDMSB8IDApCiAjZGVmaW5lIFMzQzI0NDBfRFNDMV9DUzBfMTBtQSAgICgwPDwwKQogI2RlZmluZSBTM0MyNDQwX0RTQzFfQ1MwXzhtQSAgICAoMTw8MCkKICNkZWZpbmUgUzNDMjQ0MF9EU0MxX0NTMF82bUEgICAgKDI8PDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC12ZXJzYXRpbGUvc3lzdGVtLmgKaW5kZXggODg4OWExOC4uNzFjNjI1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtdmVyc2F0aWxlL3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXZlcnNhdGlsZS9zeXN0ZW0uaApAQCAtMzYsMTYgKzM2LDE0IEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX3Jlc2V0KGNoYXIgbW9kZSkKIHsKLQl1bnNpZ25lZCBpbnQgaGRyX2N0cmwgPQkoSU9fQUREUkVTUyhWRVJTQVRJTEVfU1lTX0JBU0UpICsgVkVSU0FUSUxFX1NZU19SRVNFVENUTF9PRkZTRVQpOwotCXVuc2lnbmVkIGludCB2YWw7CisJdTMyIHZhbDsKIAotCS8qCi0JICogVG8gcmVzZXQsIHdlIGhpdCB0aGUgb24tYm9hcmQgcmVzZXQgcmVnaXN0ZXIKLQkgKiBpbiB0aGUgc3lzdGVtIEZQR0EKLQkgKi8KLQl2YWwgPSBfX3Jhd19yZWFkbChoZHJfY3RybCk7Ci0JdmFsIHw9IFZFUlNBVElMRV9TWVNfQ1RSTF9SRVNFVF9DT05GSUdDTFI7Ci0JX19yYXdfd3JpdGVsKHZhbCwgaGRyX2N0cmwpOworCXZhbCA9IF9fcmF3X3JlYWRsKElPX0FERFJFU1MoVkVSU0FUSUxFX1NZU19SRVNFVENUTCkpICYgfjB4NzsKKwl2YWwgfD0gMHgxMDU7CisKKwlfX3Jhd193cml0ZWwoMHhhMDVmLCBJT19BRERSRVNTKFZFUlNBVElMRV9TWVNfTE9DSykpOworCV9fcmF3X3dyaXRlbCh2YWwsIElPX0FERFJFU1MoVkVSU0FUSUxFX1NZU19SRVNFVENUTCkpOworCV9fcmF3X3dyaXRlbCgwLCBJT19BRERSRVNTKFZFUlNBVElMRV9TWVNfTE9DSykpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaCBiL2luY2x1ZGUvYXNtLWFybS9ieXRlb3JkZXIuaAppbmRleCAxN2VhZjhiLi5lNmY3ZmNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYnl0ZW9yZGVyLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2J5dGVvcmRlci5oCkBAIC0yMiwxNiArMjIsMTggQEAKIHsKIAlfX3UzMiB0OwogCi0JaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHgpKSB7Ci0JCXQgPSB4IF4gKCh4IDw8IDE2KSB8ICh4ID4+IDE2KSk7IC8qIGVvciByMSxyMCxyMCxyb3IgIzE2ICovCi0JfSBlbHNlIHsKKyNpZm5kZWYgX190aHVtYl9fCisJaWYgKCFfX2J1aWx0aW5fY29uc3RhbnRfcCh4KSkgewogCQkvKgogCQkgKiBUaGUgY29tcGlsZXIgbmVlZHMgYSBiaXQgb2YgYSBoaW50IGhlcmUgdG8gYWx3YXlzIGRvIHRoZQogCQkgKiByaWdodCB0aGluZyBhbmQgbm90IHNjcmV3IGl0IHVwIHRvIGRpZmZlcmVudCBkZWdyZWVzCiAJCSAqIGRlcGVuZGluZyBvbiB0aGUgZ2NjIHZlcnNpb24uCiAJCSAqLwogCQlhc20gKCJlb3JcdCUwLCAlMSwgJTEsIHJvciAjMTYiIDogIj1yIiAodCkgOiAiciIgKHgpKTsKLQl9CisJfSBlbHNlCisjZW5kaWYKKwkJdCA9IHggXiAoKHggPDwgMTYpIHwgKHggPj4gMTYpKTsgLyogZW9yIHIxLHIwLHIwLHJvciAjMTYgKi8KKwogCXggPSAoeCA8PCAyNCkgfCAoeCA+PiA4KTsJCS8qIG1vdiByMCxyMCxyb3IgIzggICAgICAqLwogCXQgJj0gfjB4MDBGRjAwMDA7CQkJLyogYmljIHIxLHIxLCMweDAwRkYwMDAwICovCiAJeCBePSAodCA+PiA4KTsJCQkJLyogZW9yIHIwLHIwLHIxLGxzciAjOCAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2hhcnBzbF9wbS5oIGIvaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL3NoYXJwc2xfcG0uaAppbmRleCAzNjk4M2U1Li5lY2YxNWI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vaGFyZHdhcmUvc2hhcnBzbF9wbS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9zaGFycHNsX3BtLmgKQEAgLTE2LDYgKzE2LDcgQEAKIAl2b2lkICgqZXhpdCkodm9pZCk7CiAJaW50IGdwaW9fYWNpbjsKIAlpbnQgZ3Bpb19iYXRmdWxsOworCWludCBiYXRmdWxsX2lycTsKIAlpbnQgZ3Bpb19iYXRsb2NrOwogCWludCBncGlvX2ZhdGFsOwogCXZvaWQgKCpkaXNjaGFyZ2UpKGludCk7CkBAIC0zNCw5ICszNSwxOSBAQAogI2RlZmluZSBTSEFSUFNMX1NUQVRVU19GQVRBTCAgICA3CiAJdW5zaWduZWQgbG9uZyAoKmNoYXJnZXJfd2FrZXVwKSh2b2lkKTsKIAlpbnQgKCpzaG91bGRfd2FrZXVwKSh1bnNpZ25lZCBpbnQgcmVzdW1lX29uX2FsYXJtKTsKKwl2b2lkICgqYmFja2xpZ2h0X2xpbWl0KShpbnQpOworCWludCAoKmJhY2tsaWdodF9nZXRfc3RhdHVzKSAodm9pZCk7CisJaW50IGNoYXJnZV9vbl92b2x0OworCWludCBjaGFyZ2Vfb25fdGVtcDsKKwlpbnQgY2hhcmdlX2FjaW5faGlnaDsKKwlpbnQgY2hhcmdlX2FjaW5fbG93OworCWludCBmYXRhbF9hY2luX3ZvbHQ7CisJaW50IGZhdGFsX25vYWNpbl92b2x0OwogCWludCBiYXRfbGV2ZWxzOwogCXN0cnVjdCBiYXR0ZXJ5X3RocmVzaCAqYmF0X2xldmVsc19ub2FjOwogCXN0cnVjdCBiYXR0ZXJ5X3RocmVzaCAqYmF0X2xldmVsc19hY2luOworCXN0cnVjdCBiYXR0ZXJ5X3RocmVzaCAqYmF0X2xldmVsc19ub2FjX2JsOworCXN0cnVjdCBiYXR0ZXJ5X3RocmVzaCAqYmF0X2xldmVsc19hY2luX2JsOwogCWludCBzdGF0dXNfaGlnaF9hY2luOwogCWludCBzdGF0dXNfbG93X2FjaW47CiAJaW50IHN0YXR1c19oaWdoX25vYWM7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vaXJxLmggYi9pbmNsdWRlL2FzbS1hcm0vaXJxLmgKaW5kZXggNjBiNTEwNS4uNjZlNjdlNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2lycS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9pcnEuaApAQCAtNDcsMTAgKzQ3LDYgQEAKIHZvaWQgZW5hYmxlX2lycV93YWtlKHVuc2lnbmVkIGludCBpcnEpOwogaW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQsIHN0cnVjdCBpcnFhY3Rpb24gKik7CiAKLXN0cnVjdCBpcnFhY3Rpb247Ci1zdHJ1Y3QgcHRfcmVnczsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogZXh0ZXJuIHZvaWQgbWlncmF0ZV9pcnFzKHZvaWQpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tYWNoL3NlcmlhbF9hdDkxcm05MjAwLmggYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zZXJpYWxfYXQ5MS5oCnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIGluY2x1ZGUvYXNtLWFybS9tYWNoL3NlcmlhbF9hdDkxcm05MjAwLmgKcmVuYW1lIHRvIGluY2x1ZGUvYXNtLWFybS9tYWNoL3NlcmlhbF9hdDkxLmgKaW5kZXggYTAyNjlkZS4uMTI5MGJiMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL21hY2gvc2VyaWFsX2F0OTFybTkyMDAuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zZXJpYWxfYXQ5MS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vbWFjaC9zZXJpYWxfYXQ5MXJtOTIwMC5oCisgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL21hY2gvc2VyaWFsX2F0OTEuaAogICoKICAqICBCYXNlZCBvbiBzZXJpYWxfc2ExMTAwLmggIGJ5IE5pY29sYXMgUGl0cmUKICAqCkBAIC0xNCw3ICsxNCw3IEBACiAgKiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHN0cnVjdHVyZSBmb3IgcmVnaXN0ZXJpbmcgdGhlc2UKICAqIGZ1bmN0aW9uczsgaXQgaXMgaW50ZW5kZWQgdG8gYmUgZGlzY2FyZGVkIGFmdGVyIGJvb3QuCiAgKi8KLXN0cnVjdCBhdDkxcm05MjAwX3BvcnRfZm5zIHsKK3N0cnVjdCBhdDkxX3BvcnRfZm5zIHsKIAl2b2lkCSgqc2V0X21jdHJsKShzdHJ1Y3QgdWFydF9wb3J0ICosIHVfaW50KTsKIAl1X2ludAkoKmdldF9tY3RybCkoc3RydWN0IHVhcnRfcG9ydCAqKTsKIAl2b2lkCSgqZW5hYmxlX21zKShzdHJ1Y3QgdWFydF9wb3J0ICopOwpAQCAtMjUsMTEgKzI1LDkgQEAKIH07CiAKICNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfQVQ5MSkKLXZvaWQgYXQ5MV9yZWdpc3Rlcl91YXJ0X2ZucyhzdHJ1Y3QgYXQ5MXJtOTIwMF9wb3J0X2ZucyAqZm5zKTsKLXZvaWQgYXQ5MV9yZWdpc3Rlcl91YXJ0KGludCBpZHgsIGludCBwb3J0KTsKK3ZvaWQgYXQ5MV9yZWdpc3Rlcl91YXJ0X2ZucyhzdHJ1Y3QgYXQ5MV9wb3J0X2ZucyAqZm5zKTsKICNlbHNlCiAjZGVmaW5lIGF0OTFfcmVnaXN0ZXJfdWFydF9mbnMoZm5zKSBkbyB7IH0gd2hpbGUgKDApCi0jZGVmaW5lIGF0OTFfcmVnaXN0ZXJfdWFydChpZHgscG9ydCkgZG8geyB9IHdoaWxlICgwKQogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tYXJtL3N5c3RlbS5oCmluZGV4IDljNzQ0YWUuLjYwMDFmZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9zeXN0ZW0uaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vc3lzdGVtLmgKQEAgLTEwNyw2ICsxMDcsOSBAQAogZXh0ZXJuIGludCBjcHVfYXJjaGl0ZWN0dXJlKHZvaWQpOwogZXh0ZXJuIHZvaWQgY3B1X2luaXQodm9pZCk7CiAKK3ZvaWQgYXJtX21hY2hpbmVfcmVzdGFydChjaGFyIG1vZGUpOworZXh0ZXJuIHZvaWQgKCphcm1fcG1fcmVzdGFydCkoY2hhciBzdHIpOworCiAvKgogICogSW50ZWwncyBYU2NhbGUzIGNvcmUgc3VwcG9ydHMgc29tZSB2NiBmZWF0dXJlcyAoc3VwZXJzZWN0aW9ucywgTDIpCiAgKiBidXQgYWR2ZXJ0aXNlcyBpdHNlbGYgYXMgdjUgYXMgaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdjYgSVNBLiAgRm9yCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vdGhyZWFkX25vdGlmeS5oIGIvaW5jbHVkZS9hc20tYXJtL3RocmVhZF9ub3RpZnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODY2ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL3RocmVhZF9ub3RpZnkuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogIGxpbnV4L2luY2x1ZGUvYXNtLWFybS90aHJlYWRfbm90aWZ5LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IFJ1c3NlbGwgS2luZy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaWZuZGVmIEFTTUFSTV9USFJFQURfTk9USUZZX0gKKyNkZWZpbmUgQVNNQVJNX1RIUkVBRF9OT1RJRllfSAorCisjaWZkZWYgX19LRVJORUxfXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4KKyNpbmNsdWRlIDxhc20vdGhyZWFkX2luZm8uaD4KKworc3RhdGljIGlubGluZSBpbnQgdGhyZWFkX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbikKK3sKKwlleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIHRocmVhZF9ub3RpZnlfaGVhZDsKKwlyZXR1cm4gYXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZ0aHJlYWRfbm90aWZ5X2hlYWQsIG4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkX3VucmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKQoreworCWV4dGVybiBzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgdGhyZWFkX25vdGlmeV9oZWFkOworCWF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZ0aHJlYWRfbm90aWZ5X2hlYWQsIG4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkX25vdGlmeSh1bnNpZ25lZCBsb25nIHJjLCBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCkKK3sKKwlleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIHRocmVhZF9ub3RpZnlfaGVhZDsKKwlhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbigmdGhyZWFkX25vdGlmeV9oZWFkLCByYywgdGhyZWFkKTsKK30KKworI2VuZGlmCisKKy8qCisgKiBUaGVzZSBhcmUgdGhlIHJlYXNvbiBjb2RlcyBmb3IgdGhlIHRocmVhZCBub3RpZmllci4KKyAqLworI2RlZmluZSBUSFJFQURfTk9USUZZX0ZMVVNICTAKKyNkZWZpbmUgVEhSRUFEX05PVElGWV9SRUxFQVNFCTEKKyNkZWZpbmUgVEhSRUFEX05PVElGWV9TV0lUQ0gJMgorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3ZnYS5oIGIvaW5jbHVkZS9hc20tYXJtL3ZnYS5oCmluZGV4IDkyNmU1ZWUuLjFlMGI5MTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS92Z2EuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vdmdhLmgKQEAgLTQsNyArNCw3IEBACiAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKLSNkZWZpbmUgVkdBX01BUF9NRU0oeCkJKFBDSU1FTV9CQVNFICsgKHgpKQorI2RlZmluZSBWR0FfTUFQX01FTSh4LHMpCShQQ0lNRU1fQkFTRSArICh4KSkKIAogI2RlZmluZSB2Z2FfcmVhZGIoeCkJKCooKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKil4KSkKICNkZWZpbmUgdmdhX3dyaXRlYih4LHkpCSgqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopeSkgPSAoeCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0yNi9pcnEuaCBiL2luY2x1ZGUvYXNtLWFybTI2L2lycS5oCmluZGV4IDA2YmQ1YTUuLjlhYWFjODcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybTI2L2lycS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybTI2L2lycS5oCkBAIC00NCw5ICs0NCw1IEBACiAKIGludCBzZXRfaXJxX3R5cGUodW5zaWduZWQgaW50IGlycSwgdW5zaWduZWQgaW50IHR5cGUpOwogCi1pbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCwgc3RydWN0IGlycWFjdGlvbiAqKTsKLXN0cnVjdCBwdF9yZWdzOwotaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwotCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZnJ2L2F0b21pYy5oIGIvaW5jbHVkZS9hc20tZnJ2L2F0b21pYy5oCmluZGV4IDlhNGZmMDMuLjA2NjM4NmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWZydi9hdG9taWMuaAorKysgYi9pbmNsdWRlL2FzbS1mcnYvYXRvbWljLmgKQEAgLTIyNyw3ICsyMjcsNyBAQAogCQlicmVhazsJCQkJCQkJCVwKIAkJCQkJCQkJCQlcCiAJZGVmYXVsdDoJCQkJCQkJCVwKLQkJX194Z19vcmlnID0gMDsJCQkJCQkJXAorCQlfX3hnX29yaWcgPSAoX190eXBlb2ZfXyhfX3hnX29yaWcpKTA7CQkJCVwKIAkJYXNtIHZvbGF0aWxlKCJicmVhayIpOwkJCQkJCVwKIAkJYnJlYWs7CQkJCQkJCQlcCiAJfQkJCQkJCQkJCVwKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCXN3aXRjaCAoc2l6ZW9mKF9feGdfb3JpZykpIHsJCQkJCQkJCVwKIAljYXNlIDQ6IF9feGdfb3JpZyA9IChfX3R5cGVvZl9fKCoocHRyKSkpIF9feGNoZ18zMigodWludDMyX3QpIHgsIF9feGdfcHRyKTsJYnJlYWs7CVwKIAlkZWZhdWx0OgkJCQkJCQkJCQlcCi0JCV9feGdfb3JpZyA9IDA7CQkJCQkJCQkJXAorCQlfX3hnX29yaWcgPSAoX190eXBlb2ZfXyhfX3hnX29yaWcpKTA7CQkJCQkJCQkJXAogCQlhc20gdm9sYXRpbGUoImJyZWFrIik7CQkJCQkJCQlcCiAJCWJyZWFrOwkJCQkJCQkJCQlcCiAJfQkJCQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZnJ2L2NoZWNrc3VtLmggYi9pbmNsdWRlL2FzbS1mcnYvY2hlY2tzdW0uaAppbmRleCAxMDIzNmY2OC4uNDJiZjBkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZnJ2L2NoZWNrc3VtLmgKKysrIGIvaW5jbHVkZS9hc20tZnJ2L2NoZWNrc3VtLmgKQEAgLTQzLDcgKzQzLDcgQEAKICAqIGhlcmUgZXZlbiBtb3JlIGltcG9ydGFudCB0byBhbGlnbiBzcmMgYW5kIGRzdCBvbiBhIDMyLWJpdCAob3IgZXZlbgogICogYmV0dGVyIDY0LWJpdCkgYm91bmRhcnkKICAqLwotZXh0ZXJuIHVuc2lnbmVkIGludCBjc3VtX3BhcnRpYWxfY29weV9mcm9tX3VzZXIoY29uc3QgY2hhciAqc3JjLCBjaGFyICpkc3QsCitleHRlcm4gdW5zaWduZWQgaW50IGNzdW1fcGFydGlhbF9jb3B5X2Zyb21fdXNlcihjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBjaGFyICpkc3QsCiAJCQkJCQlpbnQgbGVuLCBpbnQgc3VtLCBpbnQgKmNzdW1fZXJyKTsKIAogI2RlZmluZSBjc3VtX3BhcnRpYWxfY29weV9ub2NoZWNrKHNyYywgZHN0LCBsZW4sIHN1bSkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZnJ2L2hpZ2htZW0uaCBiL2luY2x1ZGUvYXNtLWZydi9oaWdobWVtLmgKaW5kZXggY2ZiZjdkMy4uZTIyNDdjMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZnJ2L2hpZ2htZW0uaAorKysgYi9pbmNsdWRlL2FzbS1mcnYvaGlnaG1lbS5oCkBAIC0xMzQsNyArMTM0LDcgQEAKIAogCWRlZmF1bHQ6CiAJCUJVRygpOwotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYvaW8uaCBiL2luY2x1ZGUvYXNtLWZydi9pby5oCmluZGV4IGI1NmViYTUuLjc3NjVmNTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWZydi9pby5oCisrKyBiL2luY2x1ZGUvYXNtLWZydi9pby5oCkBAIC00MCwxMyArNDAsMTMgQEAKIC8vI2RlZmluZSBfX2lvcm1iKCkgYXNtIHZvbGF0aWxlKCJtZW1iYXIiKQogLy8jZGVmaW5lIF9faW93bWIoKSBhc20gdm9sYXRpbGUoIm1lbWJhciIpCiAKLSNkZWZpbmUgX19yYXdfcmVhZGIoYWRkcikgX19idWlsdGluX3JlYWQ4KCh2b2lkICopIChhZGRyKSkKLSNkZWZpbmUgX19yYXdfcmVhZHcoYWRkcikgX19idWlsdGluX3JlYWQxNigodm9pZCAqKSAoYWRkcikpCi0jZGVmaW5lIF9fcmF3X3JlYWRsKGFkZHIpIF9fYnVpbHRpbl9yZWFkMzIoKHZvaWQgKikgKGFkZHIpKQorI2RlZmluZSBfX3Jhd19yZWFkYiBfX2J1aWx0aW5fcmVhZDgKKyNkZWZpbmUgX19yYXdfcmVhZHcgX19idWlsdGluX3JlYWQxNgorI2RlZmluZSBfX3Jhd19yZWFkbCBfX2J1aWx0aW5fcmVhZDMyCiAKLSNkZWZpbmUgX19yYXdfd3JpdGViKGRhdHVtLCBhZGRyKSBfX2J1aWx0aW5fd3JpdGU4KCh2b2lkICopIChhZGRyKSwgZGF0dW0pCi0jZGVmaW5lIF9fcmF3X3dyaXRldyhkYXR1bSwgYWRkcikgX19idWlsdGluX3dyaXRlMTYoKHZvaWQgKikgKGFkZHIpLCBkYXR1bSkKLSNkZWZpbmUgX19yYXdfd3JpdGVsKGRhdHVtLCBhZGRyKSBfX2J1aWx0aW5fd3JpdGUzMigodm9pZCAqKSAoYWRkciksIGRhdHVtKQorI2RlZmluZSBfX3Jhd193cml0ZWIoZGF0dW0sIGFkZHIpIF9fYnVpbHRpbl93cml0ZTgoYWRkciwgZGF0dW0pCisjZGVmaW5lIF9fcmF3X3dyaXRldyhkYXR1bSwgYWRkcikgX19idWlsdGluX3dyaXRlMTYoYWRkciwgZGF0dW0pCisjZGVmaW5lIF9fcmF3X3dyaXRlbChkYXR1bSwgYWRkcikgX19idWlsdGluX3dyaXRlMzIoYWRkciwgZGF0dW0pCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpb19vdXRzYih1bnNpZ25lZCBpbnQgYWRkciwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbGVuKQogewpAQCAtMTE2LDcgKzExNiw3IEBACiAJbWVtc2V0KCh2b2lkIF9fZm9yY2UgKikgYWRkciwgdmFsLCBjb3VudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtZW1jcHlfZnJvbWlvKHZvaWQgKmRzdCwgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICpzcmMsIGludCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBtZW1jcHlfZnJvbWlvKHZvaWQgKmRzdCwgY29uc3Qgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICpzcmMsIGludCBjb3VudCkKIHsKIAltZW1jcHkoZHN0LCAodm9pZCBfX2ZvcmNlICopIHNyYywgY291bnQpOwogfQpAQCAtMTI4LDEyICsxMjgsMTIgQEAKIAogc3RhdGljIGlubGluZSB1aW50OF90IGluYih1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0JcmV0dXJuIF9fYnVpbHRpbl9yZWFkOCgodm9pZCAqKWFkZHIpOworCXJldHVybiBfX2J1aWx0aW5fcmVhZDgoKHZvaWQgX19pb21lbSAqKWFkZHIpOwogfQogCiBzdGF0aWMgaW5saW5lIHVpbnQxNl90IGludyh1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0JdWludDE2X3QgcmV0ID0gX19idWlsdGluX3JlYWQxNigodm9pZCAqKWFkZHIpOworCXVpbnQxNl90IHJldCA9IF9fYnVpbHRpbl9yZWFkMTYoKHZvaWQgX19pb21lbSAqKWFkZHIpOwogCiAJaWYgKF9faXNfUENJX0lPKGFkZHIpKQogCQlyZXQgPSBfc3dhcHcocmV0KTsKQEAgLTE0Myw3ICsxNDMsNyBAQAogCiBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGlubCh1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0JdWludDMyX3QgcmV0ID0gX19idWlsdGluX3JlYWQzMigodm9pZCAqKWFkZHIpOworCXVpbnQzMl90IHJldCA9IF9fYnVpbHRpbl9yZWFkMzIoKHZvaWQgX19pb21lbSAqKWFkZHIpOwogCiAJaWYgKF9faXNfUENJX0lPKGFkZHIpKQogCQlyZXQgPSBfc3dhcGwocmV0KTsKQEAgLTE1MywyMSArMTUzLDIxIEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBvdXRiKHVpbnQ4X3QgZGF0dW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKLQlfX2J1aWx0aW5fd3JpdGU4KCh2b2lkICopYWRkciwgZGF0dW0pOworCV9fYnVpbHRpbl93cml0ZTgoKHZvaWQgX19pb21lbSAqKWFkZHIsIGRhdHVtKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIG91dHcodWludDE2X3QgZGF0dW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKIAlpZiAoX19pc19QQ0lfSU8oYWRkcikpCiAJCWRhdHVtID0gX3N3YXB3KGRhdHVtKTsKLQlfX2J1aWx0aW5fd3JpdGUxNigodm9pZCAqKWFkZHIsIGRhdHVtKTsKKwlfX2J1aWx0aW5fd3JpdGUxNigodm9pZCBfX2lvbWVtICopYWRkciwgZGF0dW0pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgb3V0bCh1aW50MzJfdCBkYXR1bSwgdW5zaWduZWQgbG9uZyBhZGRyKQogewogCWlmIChfX2lzX1BDSV9JTyhhZGRyKSkKIAkJZGF0dW0gPSBfc3dhcGwoZGF0dW0pOwotCV9fYnVpbHRpbl93cml0ZTMyKCh2b2lkICopYWRkciwgZGF0dW0pOworCV9fYnVpbHRpbl93cml0ZTMyKCh2b2lkIF9faW9tZW0gKilhZGRyLCBkYXR1bSk7CiB9CiAKICNkZWZpbmUgaW5iX3AoYWRkcikJaW5iKGFkZHIpCkBAIC0xODksMTIgKzE4OSwxMiBAQAogCiBzdGF0aWMgaW5saW5lIHVpbnQ4X3QgcmVhZGIoY29uc3Qgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICphZGRyKQogewotCXJldHVybiBfX2J1aWx0aW5fcmVhZDgoKHZvbGF0aWxlIHVpbnQ4X3QgX19mb3JjZSAqKSBhZGRyKTsKKwlyZXR1cm4gX19idWlsdGluX3JlYWQ4KChfX2ZvcmNlIHZvaWQgdm9sYXRpbGUgX19pb21lbSAqKSBhZGRyKTsKIH0KIAogc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkdyhjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKmFkZHIpCiB7Ci0JdWludDE2X3QgcmV0ID0JX19idWlsdGluX3JlYWQxNigodm9sYXRpbGUgdWludDE2X3QgX19mb3JjZSAqKWFkZHIpOworCXVpbnQxNl90IHJldCA9CV9fYnVpbHRpbl9yZWFkMTYoKF9fZm9yY2Ugdm9pZCB2b2xhdGlsZSBfX2lvbWVtICopYWRkcik7CiAKIAlpZiAoX19pc19QQ0lfTUVNKGFkZHIpKQogCQlyZXQgPSBfc3dhcHcocmV0KTsKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRsKGNvbnN0IHZvbGF0aWxlIHZvaWQgX19pb21lbSAqYWRkcikKIHsKLQl1aW50MzJfdCByZXQgPQlfX2J1aWx0aW5fcmVhZDMyKCh2b2xhdGlsZSB1aW50MzJfdCBfX2ZvcmNlICopYWRkcik7CisJdWludDMyX3QgcmV0ID0JX19idWlsdGluX3JlYWQzMigoX19mb3JjZSB2b2lkIHZvbGF0aWxlIF9faW9tZW0gKilhZGRyKTsKIAogCWlmIChfX2lzX1BDSV9NRU0oYWRkcikpCiAJCXJldCA9IF9zd2FwbChyZXQpOwpAQCAtMjE3LDcgKzIxNyw3IEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZWIodWludDhfdCBkYXR1bSwgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICphZGRyKQogewotCV9fYnVpbHRpbl93cml0ZTgoKHZvbGF0aWxlIHVpbnQ4X3QgX19mb3JjZSAqKSBhZGRyLCBkYXR1bSk7CisJX19idWlsdGluX3dyaXRlOChhZGRyLCBkYXR1bSk7CiAJaWYgKF9faXNfUENJX01FTShhZGRyKSkKIAkJX19mbHVzaF9QQ0lfd3JpdGVzKCk7CiB9CkBAIC0yMjcsNyArMjI3LDcgQEAKIAlpZiAoX19pc19QQ0lfTUVNKGFkZHIpKQogCQlkYXR1bSA9IF9zd2FwdyhkYXR1bSk7CiAKLQlfX2J1aWx0aW5fd3JpdGUxNigodm9sYXRpbGUgdWludDE2X3QgX19mb3JjZSAqKSBhZGRyLCBkYXR1bSk7CisJX19idWlsdGluX3dyaXRlMTYoYWRkciwgZGF0dW0pOwogCWlmIChfX2lzX1BDSV9NRU0oYWRkcikpCiAJCV9fZmx1c2hfUENJX3dyaXRlcygpOwogfQpAQCAtMjM3LDcgKzIzNyw3IEBACiAJaWYgKF9faXNfUENJX01FTShhZGRyKSkKIAkJZGF0dW0gPSBfc3dhcGwoZGF0dW0pOwogCi0JX19idWlsdGluX3dyaXRlMzIoKHZvbGF0aWxlIHVpbnQzMl90IF9fZm9yY2UgKikgYWRkciwgZGF0dW0pOworCV9fYnVpbHRpbl93cml0ZTMyKGFkZHIsIGRhdHVtKTsKIAlpZiAoX19pc19QQ0lfTUVNKGFkZHIpKQogCQlfX2ZsdXNoX1BDSV93cml0ZXMoKTsKIH0KQEAgLTI3MSw3ICsyNzEsNyBAQAogCXJldHVybiBfX2lvcmVtYXAocGh5c2FkZHIsIHNpemUsIElPTUFQX0ZVTExfQ0FDSElORyk7CiB9CiAKLWV4dGVybiB2b2lkIGlvdW5tYXAodm9pZCBfX2lvbWVtICphZGRyKTsKK2V4dGVybiB2b2lkIGlvdW5tYXAodm9pZCB2b2xhdGlsZSBfX2lvbWVtICphZGRyKTsKIAogc3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlvcG9ydF9tYXAodW5zaWduZWQgbG9uZyBwb3J0LCB1bnNpZ25lZCBpbnQgbnIpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYvbWItcmVncy5oIGIvaW5jbHVkZS9hc20tZnJ2L21iLXJlZ3MuaAppbmRleCA5M2ZhNzMyLi4yMTllNWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1mcnYvbWItcmVncy5oCisrKyBiL2luY2x1ZGUvYXNtLWZydi9tYi1yZWdzLmgKQEAgLTE2LDYgKzE2LDE3IEBACiAjaW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+CiAjaW5jbHVkZSA8YXNtL21lbS1sYXlvdXQuaD4KIAorI2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIGdjYyBidWlsdGlucywgYW5ub3RhdGVkICovCisKK3Vuc2lnbmVkIGxvbmcgX19idWlsdGluX3JlYWQ4KHZvbGF0aWxlIHZvaWQgX19pb21lbSAqKTsKK3Vuc2lnbmVkIGxvbmcgX19idWlsdGluX3JlYWQxNih2b2xhdGlsZSB2b2lkIF9faW9tZW0gKik7Cit1bnNpZ25lZCBsb25nIF9fYnVpbHRpbl9yZWFkMzIodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopOwordm9pZCBfX2J1aWx0aW5fd3JpdGU4KHZvbGF0aWxlIHZvaWQgX19pb21lbSAqLCB1bnNpZ25lZCBjaGFyKTsKK3ZvaWQgX19idWlsdGluX3dyaXRlMTYodm9sYXRpbGUgdm9pZCBfX2lvbWVtICosIHVuc2lnbmVkIHNob3J0KTsKK3ZvaWQgX19idWlsdGluX3dyaXRlMzIodm9sYXRpbGUgdm9pZCBfX2lvbWVtICosIHVuc2lnbmVkIGxvbmcpOworI2VuZGlmCisKICNkZWZpbmUgX19yZWdpb25fSU8JS0VSTkVMX0lPX1NUQVJUCS8qIHRoZSByZWdpb24gZnJvbSAweGUwMDAwMDAwIHRvIDB4ZmZmZmZmZmYgaGFzIHN1aXRhYmxlCiAJCQkJCSAqIHByb3RlY3Rpb24gbGFpZCBvdmVyIHRoZSB0b3AgZm9yIHVzZSBpbiBtZW1vcnktbWFwcGVkCiAJCQkJCSAqIEkvTwpAQCAtNTksNyArNzAsNyBAQAogI2RlZmluZSBfX3JlZ2lvbl9QQ0lfTUVNCShfX3JlZ2lvbl9DUzIgKyAweDA4MDAwMDAwVUwpCiAjZGVmaW5lIF9fZmx1c2hfUENJX3dyaXRlcygpCQkJCQkJXAogZG8gewkJCQkJCQkJCVwKLQlfX2J1aWx0aW5fd3JpdGU4KCh2b2xhdGlsZSB2b2lkICopIF9fcmVnaW9uX1BDSV9NRU0sIDApOwlcCisJX19idWlsdGluX3dyaXRlOCgodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopIF9fcmVnaW9uX1BDSV9NRU0sIDApOwlcCiB9IHdoaWxlKDApCiAKICNkZWZpbmUgX19pc19QQ0lfSU8oYWRkcikgXApAQCAtODMsMTUgKzk0LDE1IEBACiAjZGVmaW5lIF9fc2V0X0xFRFMoWCkJCQkJCQkJXAogZG8gewkJCQkJCQkJCVwKIAlpZiAobWI5MzA5MF9tYjAwX2RldGVjdGVkKQkJCQkJXAotCQlfX2J1aWx0aW5fd3JpdGUzMigodm9pZCAqKSBfX2FkZHJfTEVEUygpLCB+KFgpKTsJXAorCQlfX2J1aWx0aW5fd3JpdGUzMigodm9pZCBfX2lvbWVtICopIF9fYWRkcl9MRURTKCksIH4oWCkpOwlcCiB9IHdoaWxlICgwKQogI2Vsc2UKICNkZWZpbmUgX19zZXRfTEVEUyhYKQogI2VuZGlmCiAKICNkZWZpbmUgX19hZGRyX0xDRCgpCQkoX19yZWdpb25fQ1MyICsgMHgwMTIwMDAwOFVMKQotI2RlZmluZSBfX2dldF9MQ0QoQikJCV9fYnVpbHRpbl9yZWFkMzIoKHZvbGF0aWxlIHZvaWQgKikgKEIpKQotI2RlZmluZSBfX3NldF9MQ0QoQixYKQkJX19idWlsdGluX3dyaXRlMzIoKHZvbGF0aWxlIHZvaWQgKikgKEIpLCAoWCkpCisjZGVmaW5lIF9fZ2V0X0xDRChCKQkJX19idWlsdGluX3JlYWQzMigodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopIChCKSkKKyNkZWZpbmUgX19zZXRfTENEKEIsWCkJCV9fYnVpbHRpbl93cml0ZTMyKCh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKikgKEIpLCAoWCkpCiAKICNkZWZpbmUgTENEX0QJCQkweDAwMDAwMGZmCQkvKiBMQ0QgZGF0YSBidXMgKi8KICNkZWZpbmUgTENEX1JXCQkJMHgwMDAwMDEwMAkJLyogTENEIFIvVyBzaWduYWwgKi8KQEAgLTE2MSwxMSArMTcyLDExIEBACiAjZGVmaW5lIF9fZ2V0X0NMS0lOKCkJCTY2MDAwMDAwVUwKIAogI2RlZmluZSBfX2FkZHJfTEVEUygpCQkoX19yZWdpb25fQ1MyICsgMHgwMDAwMDAyM1VMKQotI2RlZmluZSBfX3NldF9MRURTKFgpCQlfX2J1aWx0aW5fd3JpdGU4KCh2b2xhdGlsZSB2b2lkICopIF9fYWRkcl9MRURTKCksIChYKSkKKyNkZWZpbmUgX19zZXRfTEVEUyhYKQkJX19idWlsdGluX3dyaXRlOCgodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopIF9fYWRkcl9MRURTKCksIChYKSkKIAogI2RlZmluZSBfX2FkZHJfRlBHQVRSKCkJCShfX3JlZ2lvbl9DUzIgKyAweDAwMDAwMDMwVUwpCi0jZGVmaW5lIF9fc2V0X0ZQR0FUUihYKQkJX19idWlsdGluX3dyaXRlMzIoKHZvbGF0aWxlIHZvaWQgKikgX19hZGRyX0ZQR0FUUigpLCAoWCkpCi0jZGVmaW5lIF9fZ2V0X0ZQR0FUUigpCQlfX2J1aWx0aW5fcmVhZDMyKCh2b2xhdGlsZSB2b2lkICopIF9fYWRkcl9GUEdBVFIoKSkKKyNkZWZpbmUgX19zZXRfRlBHQVRSKFgpCQlfX2J1aWx0aW5fd3JpdGUzMigodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopIF9fYWRkcl9GUEdBVFIoKSwgKFgpKQorI2RlZmluZSBfX2dldF9GUEdBVFIoKQkJX19idWlsdGluX3JlYWQzMigodm9sYXRpbGUgdm9pZCBfX2lvbWVtICopIF9fYWRkcl9GUEdBVFIoKSkKIAogI2RlZmluZSBNQjkzMDkzX0ZQR0FfRlBHQVRSX0FVRElPX0NMSwkweDAwMDAwMDAzCiAKQEAgLTE4MCw3ICsxOTEsNyBAQAogI2RlZmluZSBNQjkzMDkzX0ZQR0FfU1dSX1BVU0hTV01BU0sJKDB4MUY8PDI2KQogI2RlZmluZSBNQjkzMDkzX0ZQR0FfU1dSX1BVU0hTVzQJKDE8PDI5KQogCi0jZGVmaW5lIF9fYWRkcl9GUEdBX1NXUgkJKCh2b2xhdGlsZSB2b2lkICopKF9fcmVnaW9uX0NTMiArIDB4MjhVTCkpCisjZGVmaW5lIF9fYWRkcl9GUEdBX1NXUgkJKCh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKikoX19yZWdpb25fQ1MyICsgMHgyOFVMKSkKICNkZWZpbmUgX19nZXRfRlBHQV9QVVNIU1cxXzUoKQkoX19idWlsdGluX3JlYWQzMihfX2FkZHJfRlBHQV9TV1IpICYgTUI5MzA5M19GUEdBX1NXUl9QVVNIU1dNQVNLKQogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWZydi9zaWduYWwuaCBiL2luY2x1ZGUvYXNtLWZydi9zaWduYWwuaAppbmRleCA2NzM2Njg5Li5kY2MxYjM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1mcnYvc2lnbmFsLmgKKysrIGIvaW5jbHVkZS9hc20tZnJ2L3NpZ25hbC5oCkBAIC0xMTQsMTMgKzExNCwxMyBAQAogCV9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAJb2xkX3NpZ3NldF90IHNhX21hc2s7CiAJdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKLQl2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOworCV9fc2lncmVzdG9yZV90IHNhX3Jlc3RvcmVyOwogfTsKIAogc3RydWN0IHNpZ2FjdGlvbiB7CiAJX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKIAl1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwotCXZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7CisJX19zaWdyZXN0b3JlX3Qgc2FfcmVzdG9yZXI7CiAJc2lnc2V0X3Qgc2FfbWFzazsJCS8qIG1hc2sgbGFzdCBmb3IgZXh0ZW5zaWJpbGl0eSAqLwogfTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBACiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogCiB0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7Ci0Jdm9pZCAqc3Nfc3A7CisJdm9pZCBfX3VzZXIgKnNzX3NwOwogCWludCBzc19mbGFnczsKIAlzaXplX3Qgc3Nfc2l6ZTsKIH0gc3RhY2tfdDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWZydi91YWNjZXNzLmggYi9pbmNsdWRlL2FzbS1mcnYvdWFjY2Vzcy5oCmluZGV4IGExZDE0MDQuLjNkOTBlMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWZydi91YWNjZXNzLmgKKysrIGIvaW5jbHVkZS9hc20tZnJ2L3VhY2Nlc3MuaApAQCAtMjIsNyArMjIsNyBAQAogCiAjZGVmaW5lIEhBVkVfQVJDSF9VTk1BUFBFRF9BUkVBCS8qIHdlIGRlY2lkZSB3aGVyZSB0byBwdXQgbW1hcHMgKi8KIAotI2RlZmluZSBfX3B0cih4KSAoKHVuc2lnbmVkIGxvbmcgKikoeCkpCisjZGVmaW5lIF9fcHRyKHgpICgodW5zaWduZWQgbG9uZyBfX2ZvcmNlICopKHgpKQogCiAjZGVmaW5lIFZFUklGWV9SRUFECTAKICNkZWZpbmUgVkVSSUZZX1dSSVRFCTEKQEAgLTY0LDcgKzY0LDcgQEAKIAogI2RlZmluZSBfX3JhbmdlX29rKGFkZHIsc2l6ZSkgX19fcmFuZ2Vfb2soKHVuc2lnbmVkIGxvbmcpIChhZGRyKSwgKHVuc2lnbmVkIGxvbmcpIChzaXplKSkKIAotI2RlZmluZSBhY2Nlc3Nfb2sodHlwZSxhZGRyLHNpemUpIChfX3JhbmdlX29rKChhZGRyKSwgKHNpemUpKSA9PSAwKQorI2RlZmluZSBhY2Nlc3Nfb2sodHlwZSxhZGRyLHNpemUpIChfX3JhbmdlX29rKCh2b2lkIF9fdXNlciAqKShhZGRyKSwgKHNpemUpKSA9PSAwKQogI2RlZmluZSBfX2FjY2Vzc19vayhhZGRyLHNpemUpIChfX3JhbmdlX29rKChhZGRyKSwgKHNpemUpKSA9PSAwKQogCiAvKgpAQCAtOTcsNiArOTcsNyBAQAogCWludCBfX3B1X2VyciA9IDA7CQkJCQkJXAogCQkJCQkJCQkJXAogCXR5cGVvZigqKHB0cikpIF9fcHVfdmFsID0gKHgpOwkJCQkJXAorCV9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQkJXAogCQkJCQkJCQkJXAogCXN3aXRjaCAoc2l6ZW9mICgqKHB0cikpKSB7CQkJCQlcCiAJY2FzZSAxOgkJCQkJCQkJXApAQCAtMTIwLDcgKzEyMSw3IEBACiAKICNkZWZpbmUgcHV0X3VzZXIoeCwgcHRyKQkJCVwKICh7CQkJCQkJXAotCXR5cGVvZigmKnB0cikgX3AgPSAocHRyKTsJCVwKKwl0eXBlb2YoKihwdHIpKSBfX3VzZXIgKl9wID0gKHB0cik7CVwKIAlpbnQgX2U7CQkJCQlcCiAJCQkJCQlcCiAJX2UgPSBfX3JhbmdlX29rKF9wLCBzaXplb2YoKl9wKSk7CVwKQEAgLTE3NSwzMyArMTc2LDQ0IEBACiAgKi8KICNkZWZpbmUgX19nZXRfdXNlcih4LCBwdHIpCQkJCQkJXAogKHsJCQkJCQkJCQlcCi0JdHlwZW9mKCoocHRyKSkgX19ndV92YWwgPSAwOwkJCQkJXAogCWludCBfX2d1X2VyciA9IDA7CQkJCQkJXAorCV9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQkJXAogCQkJCQkJCQkJXAogCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJCVwKLQljYXNlIDE6CQkJCQkJCQlcCi0JCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCAqKHU4KikmX19ndV92YWwsIHB0ciwgInViIiwgIj1yIik7IFwKKwljYXNlIDE6IHsJCQkJCQkJXAorCQl1bnNpZ25lZCBjaGFyIF9fZ3VfdmFsOwkJCQkJXAorCQlfX2dldF91c2VyX2FzbShfX2d1X2VyciwgX19ndV92YWwsIHB0ciwgInViIiwgIj1yIik7CVwKKwkJKHgpID0gKihfX2ZvcmNlIF9fdHlwZW9mX18oKihwdHIpKSAqKSAmX19ndV92YWw7CVwKIAkJYnJlYWs7CQkJCQkJCVwKLQljYXNlIDI6CQkJCQkJCQlcCi0JCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCAqKHUxNiopJl9fZ3VfdmFsLCBwdHIsICJ1aCIsICI9ciIpOyBcCisJfQkJCQkJCQkJXAorCWNhc2UgMjogewkJCQkJCQlcCisJCXVuc2lnbmVkIHNob3J0IF9fZ3VfdmFsOwkJCQlcCisJCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCBfX2d1X3ZhbCwgcHRyLCAidWgiLCAiPXIiKTsJXAorCQkoeCkgPSAqKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikpICopICZfX2d1X3ZhbDsJXAogCQlicmVhazsJCQkJCQkJXAotCWNhc2UgNDoJCQkJCQkJCVwKLQkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsICoodTMyKikmX19ndV92YWwsIHB0ciwgIiIsICI9ciIpOyBcCisJfQkJCQkJCQkJXAorCWNhc2UgNDogewkJCQkJCQlcCisJCXVuc2lnbmVkIGludCBfX2d1X3ZhbDsJCQkJCVwKKwkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsIF9fZ3VfdmFsLCBwdHIsICIiLCAiPXIiKTsJXAorCQkoeCkgPSAqKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikpICopICZfX2d1X3ZhbDsJXAogCQlicmVhazsJCQkJCQkJXAotCWNhc2UgODoJCQkJCQkJCVwKLQkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsICoodTY0KikmX19ndV92YWwsIHB0ciwgImQiLCAiPWUiKTsgXAorCX0JCQkJCQkJCVwKKwljYXNlIDg6IHsJCQkJCQkJXAorCQl1bnNpZ25lZCBsb25nIGxvbmcgX19ndV92YWw7CQkJCVwKKwkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsIF9fZ3VfdmFsLCBwdHIsICJkIiwgIj1lIik7CVwKKwkJKHgpID0gKihfX2ZvcmNlIF9fdHlwZW9mX18oKihwdHIpKSAqKSAmX19ndV92YWw7CVwKIAkJYnJlYWs7CQkJCQkJCVwKKwl9CQkJCQkJCQlcCiAJZGVmYXVsdDoJCQkJCQkJXAogCQlfX2d1X2VyciA9IF9fZ2V0X3VzZXJfYmFkKCk7CQkJCVwKIAkJYnJlYWs7CQkJCQkJCVwKIAl9CQkJCQkJCQlcCi0JKHgpID0gX19ndV92YWw7CQkJCQkJCVwKIAlfX2d1X2VycjsJCQkJCQkJXAogfSkKIAogI2RlZmluZSBnZXRfdXNlcih4LCBwdHIpCQkJXAogKHsJCQkJCQlcCi0JdHlwZW9mKCYqcHRyKSBfcCA9IChwdHIpOwkJXAorCWNvbnN0IHR5cGVvZigqKHB0cikpIF9fdXNlciAqX3AgPSAocHRyKTtcCiAJaW50IF9lOwkJCQkJXAogCQkJCQkJXAogCV9lID0gX19yYW5nZV9vayhfcCwgc2l6ZW9mKCpfcCkpOwlcCkBAIC0yNDgsMTkgKzI2MCwyMCBAQAogLyoKICAqCiAgKi8KKyNkZWZpbmUgX19fX2ZvcmNlKHgpIChfX2ZvcmNlIHZvaWQgKikodm9pZCBfX3VzZXIgKikoeCkKICNpZmRlZiBDT05GSUdfTU1VCiBleHRlcm4gbG9uZyBfX21lbXNldF91c2VyKHZvaWQgKmRzdCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CiBleHRlcm4gbG9uZyBfX21lbWNweV91c2VyKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCB1bnNpZ25lZCBsb25nIGNvdW50KTsKIAotI2RlZmluZSBjbGVhcl91c2VyKGRzdCxjb3VudCkJCQlfX21lbXNldF91c2VyKChkc3QpLCAoY291bnQpKQotI2RlZmluZSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljKHRvLCBmcm9tLCBuKQlfX21lbWNweV91c2VyKCh0byksIChmcm9tKSwgKG4pKQotI2RlZmluZSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbikJX19tZW1jcHlfdXNlcigodG8pLCAoZnJvbSksIChuKSkKKyNkZWZpbmUgY2xlYXJfdXNlcihkc3QsY291bnQpCQkJX19tZW1zZXRfdXNlcihfX19fZm9yY2UoZHN0KSwgKGNvdW50KSkKKyNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbikJX19tZW1jcHlfdXNlcigodG8pLCBfX19fZm9yY2UoZnJvbSksIChuKSkKKyNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWModG8sIGZyb20sIG4pCV9fbWVtY3B5X3VzZXIoX19fX2ZvcmNlKHRvKSwgKGZyb20pLCAobikpCiAKICNlbHNlCiAKLSNkZWZpbmUgY2xlYXJfdXNlcihkc3QsY291bnQpCQkJKG1lbXNldCgoZHN0KSwgMCwgKGNvdW50KSksIDApCi0jZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWModG8sIGZyb20sIG4pCShtZW1jcHkoKHRvKSwgKGZyb20pLCAobikpLCAwKQotI2RlZmluZSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbikJKG1lbWNweSgodG8pLCAoZnJvbSksIChuKSksIDApCisjZGVmaW5lIGNsZWFyX3VzZXIoZHN0LGNvdW50KQkJCShtZW1zZXQoX19fX2ZvcmNlKGRzdCksIDAsIChjb3VudCkpLCAwKQorI2RlZmluZSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljKHRvLCBmcm9tLCBuKQkobWVtY3B5KCh0byksIF9fX19mb3JjZShmcm9tKSwgKG4pKSwgMCkKKyNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWModG8sIGZyb20sIG4pCShtZW1jcHkoX19fX2ZvcmNlKHRvKSwgKGZyb20pLCAobikpLCAwKQogCiAjZW5kaWYKIApAQCAtMjc4LDcgKzI5MSw3IEBACiAgICAgICAgcmV0dXJuIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWModG8sIGZyb20sIG4pOwogfQogCi1zdGF0aWMgaW5saW5lIGxvbmcgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKIAl1bnNpZ25lZCBsb25nIHJldCA9IG47CiAKQEAgLTI5MSwxNiArMzA0LDEzIEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSBsb25nIGNvcHlfdG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKIAlyZXR1cm4gbGlrZWx5KF9fYWNjZXNzX29rKHRvLCBuKSkgPyBfX2NvcHlfdG9fdXNlcih0bywgZnJvbSwgbikgOiBuOwogfQogCi0jZGVmaW5lIGNvcHlfdG9fdXNlcl9yZXQodG8sZnJvbSxuLHJldHZhbCkJKHsgaWYgKGNvcHlfdG9fdXNlcih0byxmcm9tLG4pKSByZXR1cm4gcmV0dmFsOyB9KQotI2RlZmluZSBjb3B5X2Zyb21fdXNlcl9yZXQodG8sZnJvbSxuLHJldHZhbCkJKHsgaWYgKGNvcHlfZnJvbV91c2VyKHRvLGZyb20sbikpIHJldHVybiByZXR2YWw7IH0pCi0KLWV4dGVybiBsb25nIHN0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKLWV4dGVybiBsb25nIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOworZXh0ZXJuIGxvbmcgc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KTsKK2V4dGVybiBsb25nIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KTsKIAogI2RlZmluZSBzdHJsZW5fdXNlcihzdHIpIHN0cm5sZW5fdXNlcihzdHIsIDMyNzY3KQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1mcnYvdW5pc3RkLmggYi9pbmNsdWRlL2FzbS1mcnYvdW5pc3RkLmgKaW5kZXggN2MyZTcxMi4uYjgwZGJkOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZnJ2L3VuaXN0ZC5oCisrKyBiL2luY2x1ZGUvYXNtLWZydi91bmlzdGQuaApAQCAtMzA2LDcgKzMwNiw3IEBACiAjZGVmaW5lIF9fTlJfbWtub2RhdAkJMjk3CiAjZGVmaW5lIF9fTlJfZmNob3duYXQJCTI5OAogI2RlZmluZSBfX05SX2Z1dGltZXNhdAkJMjk5Ci0jZGVmaW5lIF9fTlJfbmV3ZnN0YXRhdAkJMzAwCisjZGVmaW5lIF9fTlJfZnN0YXRhdDY0CQkzMDAKICNkZWZpbmUgX19OUl91bmxpbmthdAkJMzAxCiAjZGVmaW5lIF9fTlJfcmVuYW1lYXQJCTMwMgogI2RlZmluZSBfX05SX2xpbmthdAkJMzAzCkBAIC00NjAsMjQgKzQ2MCw3IEBACiAgKiBzb21lIG90aGVycyB0b28uCiAgKi8KICNkZWZpbmUgX19OUl9fZXhpdCBfX05SX2V4aXQKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwwKGludCxwYXVzZSkKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwwKGludCxzeW5jKQotc3RhdGljIGlubGluZSBfc3lzY2FsbDAocGlkX3Qsc2V0c2lkKQotc3RhdGljIGlubGluZSBfc3lzY2FsbDMoaW50LHdyaXRlLGludCxmZCxjb25zdCBjaGFyICosYnVmLG9mZl90LGNvdW50KQotc3RhdGljIGlubGluZSBfc3lzY2FsbDMoaW50LHJlYWQsaW50LGZkLGNoYXIgKixidWYsb2ZmX3QsY291bnQpCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMyhvZmZfdCxsc2VlayxpbnQsZmQsb2ZmX3Qsb2Zmc2V0LGludCxjb3VudCkKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwxKGludCxkdXAsaW50LGZkKQogc3RhdGljIGlubGluZSBfc3lzY2FsbDMoaW50LGV4ZWN2ZSxjb25zdCBjaGFyICosZmlsZSxjaGFyICoqLGFyZ3YsY2hhciAqKixlbnZwKQotc3RhdGljIGlubGluZSBfc3lzY2FsbDMoaW50LG9wZW4sY29uc3QgY2hhciAqLGZpbGUsaW50LGZsYWcsaW50LG1vZGUpCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMShpbnQsY2xvc2UsaW50LGZkKQotc3RhdGljIGlubGluZSBfc3lzY2FsbDEoaW50LF9leGl0LGludCxleGl0Y29kZSkKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwzKHBpZF90LHdhaXRwaWQscGlkX3QscGlkLGludCAqLHdhaXRfc3RhdCxpbnQsb3B0aW9ucykKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwxKGludCxkZWxldGVfbW9kdWxlLGNvbnN0IGNoYXIgKixuYW1lKQotCi1zdGF0aWMgaW5saW5lIHBpZF90IHdhaXQoaW50ICogd2FpdF9zdGF0KQotewotCXJldHVybiB3YWl0cGlkKC0xLHdhaXRfc3RhdCwwKTsKLX0KIAogI2VuZGlmIC8qIF9fS0VSTkVMX1NZU0NBTExTX18gKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvbWVtb3J5X21vZGVsLmgKaW5kZXggMGNmYjA4Ni4uODA3OGNiZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oCkBAIC0yMywyOSArMjMsMjMgQEAKIAogI2VuZGlmIC8qIENPTkZJR19ESVNDT05USUdNRU0gKi8KIAotI2lmZGVmIENPTkZJR19PVVRfT0ZfTElORV9QRk5fVE9fUEFHRQotc3RydWN0IHBhZ2U7Ci0vKiB0aGlzIGlzIHVzZWZ1bCB3aGVuIGlubGluZWQgcGZuX3RvX3BhZ2UgaXMgdG9vIGJpZyAqLwotZXh0ZXJuIHN0cnVjdCBwYWdlICpwZm5fdG9fcGFnZSh1bnNpZ25lZCBsb25nIHBmbik7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX3RvX3BmbihzdHJ1Y3QgcGFnZSAqcGFnZSk7Ci0jZWxzZQogLyoKICAqIHN1cHBvcnRzIDMgbWVtb3J5IG1vZGVscy4KICAqLwogI2lmIGRlZmluZWQoQ09ORklHX0ZMQVRNRU0pCiAKLSNkZWZpbmUgcGZuX3RvX3BhZ2UocGZuKQkobWVtX21hcCArICgocGZuKSAtIEFSQ0hfUEZOX09GRlNFVCkpCi0jZGVmaW5lIHBhZ2VfdG9fcGZuKHBhZ2UpCSgodW5zaWduZWQgbG9uZykoKHBhZ2UpIC0gbWVtX21hcCkgKyBcCisjZGVmaW5lIF9fcGZuX3RvX3BhZ2UocGZuKQkobWVtX21hcCArICgocGZuKSAtIEFSQ0hfUEZOX09GRlNFVCkpCisjZGVmaW5lIF9fcGFnZV90b19wZm4ocGFnZSkJKCh1bnNpZ25lZCBsb25nKSgocGFnZSkgLSBtZW1fbWFwKSArIFwKIAkJCQkgQVJDSF9QRk5fT0ZGU0VUKQogI2VsaWYgZGVmaW5lZChDT05GSUdfRElTQ09OVElHTUVNKQogCi0jZGVmaW5lIHBmbl90b19wYWdlKHBmbikJCQlcCisjZGVmaW5lIF9fcGZuX3RvX3BhZ2UocGZuKQkJCVwKICh7CXVuc2lnbmVkIGxvbmcgX19wZm4gPSAocGZuKTsJCVwKIAl1bnNpZ25lZCBsb25nIF9fbmlkID0gYXJjaF9wZm5fdG9fbmlkKHBmbik7ICBcCiAJTk9ERV9EQVRBKF9fbmlkKS0+bm9kZV9tZW1fbWFwICsgYXJjaF9sb2NhbF9wYWdlX29mZnNldChfX3BmbiwgX19uaWQpO1wKIH0pCiAKLSNkZWZpbmUgcGFnZV90b19wZm4ocGcpCQkJCQkJCVwKKyNkZWZpbmUgX19wYWdlX3RvX3BmbihwZykJCQkJCQlcCiAoewlzdHJ1Y3QgcGFnZSAqX19wZyA9IChwZyk7CQkJCQlcCiAJc3RydWN0IHBnbGlzdF9kYXRhICpfX3BnZGF0ID0gTk9ERV9EQVRBKHBhZ2VfdG9fbmlkKF9fcGcpKTsJXAogCSh1bnNpZ25lZCBsb25nKShfX3BnIC0gX19wZ2RhdC0+bm9kZV9tZW1fbWFwKSArCQkJXApAQCAtNTcsMTggKzUxLDI3IEBACiAgKiBOb3RlOiBzZWN0aW9uJ3MgbWVtX21hcCBpcyBlbmNvcmRlZCB0byByZWZsZWN0IGl0cyBzdGFydF9wZm4uCiAgKiBzZWN0aW9uW2ldLnNlY3Rpb25fbWVtX21hcCA9PSBtZW1fbWFwJ3MgYWRkcmVzcyAtIHN0YXJ0X3BmbjsKICAqLwotI2RlZmluZSBwYWdlX3RvX3BmbihwZykJCQkJCVwKKyNkZWZpbmUgX19wYWdlX3RvX3BmbihwZykJCQkJCVwKICh7CXN0cnVjdCBwYWdlICpfX3BnID0gKHBnKTsJCQkJXAogCWludCBfX3NlYyA9IHBhZ2VfdG9fc2VjdGlvbihfX3BnKTsJCQlcCiAJX19wZyAtIF9fc2VjdGlvbl9tZW1fbWFwX2FkZHIoX19ucl90b19zZWN0aW9uKF9fc2VjKSk7CVwKIH0pCiAKLSNkZWZpbmUgcGZuX3RvX3BhZ2UocGZuKQkJCQlcCisjZGVmaW5lIF9fcGZuX3RvX3BhZ2UocGZuKQkJCQlcCiAoewl1bnNpZ25lZCBsb25nIF9fcGZuID0gKHBmbik7CQkJXAogCXN0cnVjdCBtZW1fc2VjdGlvbiAqX19zZWMgPSBfX3Bmbl90b19zZWN0aW9uKF9fcGZuKTsJXAogCV9fc2VjdGlvbl9tZW1fbWFwX2FkZHIoX19zZWMpICsgX19wZm47CQlcCiB9KQogI2VuZGlmIC8qIENPTkZJR19GTEFUTUVNL0RJU0NPTlRJR01FTS9TUEFSU0VNRU0gKi8KKworI2lmZGVmIENPTkZJR19PVVRfT0ZfTElORV9QRk5fVE9fUEFHRQorc3RydWN0IHBhZ2U7CisvKiB0aGlzIGlzIHVzZWZ1bCB3aGVuIGlubGluZWQgcGZuX3RvX3BhZ2UgaXMgdG9vIGJpZyAqLworZXh0ZXJuIHN0cnVjdCBwYWdlICpwZm5fdG9fcGFnZSh1bnNpZ25lZCBsb25nIHBmbik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX3RvX3BmbihzdHJ1Y3QgcGFnZSAqcGFnZSk7CisjZWxzZQorI2RlZmluZSBwYWdlX3RvX3BmbiBfX3BhZ2VfdG9fcGZuCisjZGVmaW5lIHBmbl90b19wYWdlIF9fcGZuX3RvX3BhZ2UKICNlbmRpZiAvKiBDT05GSUdfT1VUX09GX0xJTkVfUEZOX1RPX1BBR0UgKi8KIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taDgzMDAvaXJxLmggYi9pbmNsdWRlL2FzbS1oODMwMC9pcnEuaAppbmRleCA3MzA2NWY1Li40MmEzYWM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1oODMwMC9pcnEuaAorKysgYi9pbmNsdWRlL2FzbS1oODMwMC9pcnEuaApAQCAtNjMsOCArNjMsNCBAQAogZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnEodW5zaWduZWQgaW50KTsKICNkZWZpbmUgZGlzYWJsZV9pcnFfbm9zeW5jKHgpCWRpc2FibGVfaXJxKHgpCiAKLXN0cnVjdCBpcnFhY3Rpb247Ci1zdHJ1Y3QgcHRfcmVnczsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogI2VuZGlmIC8qIF9IODMwMF9JUlFfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYvYWx0ZXJuYXRpdmUuaCBiL2luY2x1ZGUvYXNtLWkzODYvYWx0ZXJuYXRpdmUuaAppbmRleCBlMjAxZGVjLi5kNzllOWVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pMzg2L2FsdGVybmF0aXZlLmgKKysrIGIvaW5jbHVkZS9hc20taTM4Ni9hbHRlcm5hdGl2ZS5oCkBAIC0zLDYgKzMsOCBAQAogCiAjaWZkZWYgX19LRVJORUxfXwogCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKIHN0cnVjdCBhbHRfaW5zdHIgewogCXU4ICppbnN0cjsgCQkvKiBvcmlnaW5hbCBpbnN0cnVjdGlvbiAqLwogCXU4ICpyZXBsYWNlbWVudDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYvYXBpYy5oIGIvaW5jbHVkZS9hc20taTM4Ni9hcGljLmgKaW5kZXggY2M5Yjk0MC4uMWQ4MzYyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4Ni9hcGljLmgKKysrIGIvaW5jbHVkZS9hc20taTM4Ni9hcGljLmgKQEAgLTEzOCw4ICsxMzgsNiBAQAogCiBleHRlcm4gaW50IHRpbWVyX292ZXJfODI1NDsKIAotZXh0ZXJuIGludCBtb2Rlcm5fYXBpYyh2b2lkKTsKLQogI2Vsc2UgLyogIUNPTkZJR19YODZfTE9DQUxfQVBJQyAqLwogc3RhdGljIGlubGluZSB2b2lkIGxhcGljX3NodXRkb3duKHZvaWQpIHsgfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pMzg2L2FwaWNkZWYuaCBiL2luY2x1ZGUvYXNtLWkzODYvYXBpY2RlZi5oCmluZGV4IDVlNGEzNWEuLjlmNjk5NTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWkzODYvYXBpY2RlZi5oCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvYXBpY2RlZi5oCkBAIC0xMjEsNyArMTIxLDYgQEAKICAqLwogI2RlZmluZSB1MzIgdW5zaWduZWQgaW50CiAKLSNkZWZpbmUgbGFwaWMgKCh2b2xhdGlsZSBzdHJ1Y3QgbG9jYWxfYXBpYyAqKUFQSUNfQkFTRSkKIAogc3RydWN0IGxvY2FsX2FwaWMgewogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pMzg2L2NwdWZlYXR1cmUuaCBiL2luY2x1ZGUvYXNtLWkzODYvY3B1ZmVhdHVyZS5oCmluZGV4IGI0NGJmYzYuLjNlY2VkYmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWkzODYvY3B1ZmVhdHVyZS5oCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvY3B1ZmVhdHVyZS5oCkBAIC04OCw2ICs4OCwxMiBAQAogI2RlZmluZSBYODZfRkVBVFVSRV9YU1RPUkVfRU4JKDUqMzIrIDMpIC8qIG9uLUNQVSBSTkcgZW5hYmxlZCAqLwogI2RlZmluZSBYODZfRkVBVFVSRV9YQ1JZUFQJKDUqMzIrIDYpIC8qIG9uLUNQVSBjcnlwdG8gKHhjcnlwdCBpbnNuKSAqLwogI2RlZmluZSBYODZfRkVBVFVSRV9YQ1JZUFRfRU4JKDUqMzIrIDcpIC8qIG9uLUNQVSBjcnlwdG8gZW5hYmxlZCAqLworI2RlZmluZSBYODZfRkVBVFVSRV9BQ0UyCSg1KjMyKyA4KSAvKiBBZHZhbmNlZCBDcnlwdG9ncmFwaHkgRW5naW5lIHYyICovCisjZGVmaW5lIFg4Nl9GRUFUVVJFX0FDRTJfRU4JKDUqMzIrIDkpIC8qIEFDRSB2MiBlbmFibGVkICovCisjZGVmaW5lIFg4Nl9GRUFUVVJFX1BIRQkJKDUqMzIrIDEwKSAvKiBQYWRMb2NrIEhhc2ggRW5naW5lICovCisjZGVmaW5lIFg4Nl9GRUFUVVJFX1BIRV9FTgkoNSozMisgMTEpIC8qIFBIRSBlbmFibGVkICovCisjZGVmaW5lIFg4Nl9GRUFUVVJFX1BNTQkJKDUqMzIrIDEyKSAvKiBQYWRMb2NrIE1vbnRnb21lcnkgTXVsdGlwbGllciAqLworI2RlZmluZSBYODZfRkVBVFVSRV9QTU1fRU4JKDUqMzIrIDEzKSAvKiBQTU0gZW5hYmxlZCAqLwogCiAvKiBNb3JlIGV4dGVuZGVkIEFNRCBmbGFnczogQ1BVSUQgbGV2ZWwgMHg4MDAwMDAwMSwgZWN4LCB3b3JkIDYgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfTEFIRl9MTQkoNiozMisgMCkgLyogTEFIRi9TQUhGIGluIGxvbmcgbW9kZSAqLwpAQCAtMTIxLDYgKzEyNywxMiBAQAogI2RlZmluZSBjcHVfaGFzX3hzdG9yZV9lbmFibGVkCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YU1RPUkVfRU4pCiAjZGVmaW5lIGNwdV9oYXNfeGNyeXB0CQlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWENSWVBUKQogI2RlZmluZSBjcHVfaGFzX3hjcnlwdF9lbmFibGVkCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YQ1JZUFRfRU4pCisjZGVmaW5lIGNwdV9oYXNfYWNlMgkJYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FDRTIpCisjZGVmaW5lIGNwdV9oYXNfYWNlMl9lbmFibGVkCWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BQ0UyX0VOKQorI2RlZmluZSBjcHVfaGFzX3BoZQkJYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BIRSkKKyNkZWZpbmUgY3B1X2hhc19waGVfZW5hYmxlZAlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUEhFX0VOKQorI2RlZmluZSBjcHVfaGFzX3BtbQkJYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BNTSkKKyNkZWZpbmUgY3B1X2hhc19wbW1fZW5hYmxlZAlib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUE1NX0VOKQogCiAjZW5kaWYgLyogX19BU01fSTM4Nl9DUFVGRUFUVVJFX0ggKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni9tY2UuaCBiL2luY2x1ZGUvYXNtLWkzODYvbWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NjMWE5NzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L21jZS5oCkBAIC0wLDAgKzEsNSBAQAorI2lmZGVmIENPTkZJR19YODZfTUNFCitleHRlcm4gdm9pZCBtY2hlY2tfaW5pdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOworI2Vsc2UKKyNkZWZpbmUgbWNoZWNrX2luaXQoYykgZG8ge30gd2hpbGUoMCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni9tc2kuaCBiL2luY2x1ZGUvYXNtLWkzODYvbXNpLmgKaW5kZXggZjA0MWQ0NC4uYjExYzRiNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4Ni9tc2kuaAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L21zaS5oCkBAIC05LDcgKzksMTUgQEAKICNpbmNsdWRlIDxhc20vZGVzYy5oPgogI2luY2x1ZGUgPG1hY2hfYXBpYy5oPgogCi0jZGVmaW5lIExBU1RfREVWSUNFX1ZFQ1RPUgkJMjMyCisjZGVmaW5lIExBU1RfREVWSUNFX1ZFQ1RPUgkoRklSU1RfU1lTVEVNX1ZFQ1RPUiAtIDEpCiAjZGVmaW5lIE1TSV9UQVJHRVRfQ1BVX1NISUZUCTEyCiAKK2V4dGVybiBzdHJ1Y3QgbXNpX29wcyBtc2lfYXBpY19vcHM7CisKK3N0YXRpYyBpbmxpbmUgaW50IG1zaV9hcmNoX2luaXQodm9pZCkKK3sKKwltc2lfcmVnaXN0ZXIoJm1zaV9hcGljX29wcyk7CisJcmV0dXJuIDA7Cit9CisKICNlbmRpZiAvKiBBU01fTVNJX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYvbXRyci5oIGIvaW5jbHVkZS9hc20taTM4Ni9tdHJyLmgKaW5kZXggNWE0NmRlMC4uMDdmMDYzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4Ni9tdHJyLmgKKysrIGIvaW5jbHVkZS9hc20taTM4Ni9tdHJyLmgKQEAgLTc2LDYgKzc2LDggQEAKIGV4dGVybiBpbnQgbXRycl9kZWwgKGludCByZWcsIHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBzaXplKTsKIGV4dGVybiBpbnQgbXRycl9kZWxfcGFnZSAoaW50IHJlZywgdW5zaWduZWQgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUpOwogZXh0ZXJuIHZvaWQgbXRycl9jZW50YXVyX3JlcG9ydF9tY3IoaW50IG1jciwgdTMyIGxvLCB1MzIgaGkpOworZXh0ZXJuIHZvaWQgbXRycl9hcF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgbXRycl9icF9pbml0KHZvaWQpOwogIyAgZWxzZQogc3RhdGljIF9faW5saW5lX18gaW50IG10cnJfYWRkICh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKIAkJCQl1bnNpZ25lZCBpbnQgdHlwZSwgY2hhciBpbmNyZW1lbnQpCkBAIC0xMDAsNiArMTAyLDggQEAKIAogc3RhdGljIF9faW5saW5lX18gdm9pZCBtdHJyX2NlbnRhdXJfcmVwb3J0X21jcihpbnQgbWNyLCB1MzIgbG8sIHUzMiBoaSkgezt9CiAKKyNkZWZpbmUgbXRycl9hcF9pbml0KCkgZG8ge30gd2hpbGUgKDApCisjZGVmaW5lIG10cnJfYnBfaW5pdCgpIGRvIHt9IHdoaWxlICgwKQogIyAgZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nlc3Nvci5oIGIvaW5jbHVkZS9hc20taTM4Ni9wcm9jZXNzb3IuaAppbmRleCA0ZGYzODE4Li4wYzgzY2YxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nlc3Nvci5oCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvcHJvY2Vzc29yLmgKQEAgLTcyOCwxOCArNzI4LDQgQEAKIGV4dGVybiB2b2lkIGVuYWJsZV9zZXBfY3B1KHZvaWQpOwogZXh0ZXJuIGludCBzeXNlbnRlcl9zZXR1cCh2b2lkKTsKIAotI2lmZGVmIENPTkZJR19NVFJSCi1leHRlcm4gdm9pZCBtdHJyX2FwX2luaXQodm9pZCk7Ci1leHRlcm4gdm9pZCBtdHJyX2JwX2luaXQodm9pZCk7Ci0jZWxzZQotI2RlZmluZSBtdHJyX2FwX2luaXQoKSBkbyB7fSB3aGlsZSAoMCkKLSNkZWZpbmUgbXRycl9icF9pbml0KCkgZG8ge30gd2hpbGUgKDApCi0jZW5kaWYKLQotI2lmZGVmIENPTkZJR19YODZfTUNFCi1leHRlcm4gdm9pZCBtY2hlY2tfaW5pdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwotI2Vsc2UKLSNkZWZpbmUgbWNoZWNrX2luaXQoYykgZG8ge30gd2hpbGUoMCkKLSNlbmRpZgotCiAjZW5kaWYgLyogX19BU01fSTM4Nl9QUk9DRVNTT1JfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni91YWNjZXNzLmggYi9pbmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaAppbmRleCAxZWM2NTUyLi44NDYyZjhlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaApAQCAtNTgsNyArNTgsNyBAQAogCV9fY2hrX3VzZXJfcHRyKGFkZHIpOyBcCiAJYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgXAogCQk6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIFwKLQkJOiIxIiAoYWRkciksImciICgoaW50KShzaXplKSksImciIChjdXJyZW50X3RocmVhZF9pbmZvKCktPmFkZHJfbGltaXQuc2VnKSk7IFwKKwkJOiIxIiAoYWRkciksImciICgoaW50KShzaXplKSksInJtIiAoY3VycmVudF90aHJlYWRfaW5mbygpLT5hZGRyX2xpbWl0LnNlZykpOyBcCiAJZmxhZzsgfSkKIAogLyoqCkBAIC0zOTAsNiArMzkwLDggQEAKIAkJCQljb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pOwogdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sgX19jb3B5X2Zyb21fdXNlcl9sbCh2b2lkICp0bywKIAkJCQljb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKTsKK3Vuc2lnbmVkIGxvbmcgX19tdXN0X2NoZWNrIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh2b2lkICp0bywKKwkJCQljb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKTsKIAogLyoKICAqIEhlcmUgd2Ugc3BlY2lhbC1jYXNlIDEsIDIgYW5kIDQtYnl0ZSBjb3B5XypfdXNlciBpbnZvY2F0aW9ucy4gIE9uIGEgZmF1bHQKQEAgLTQ3OCwxMiArNDgwLDQzIEBACiAJcmV0dXJuIF9fY29weV9mcm9tX3VzZXJfbGwodG8sIGZyb20sIG4pOwogfQogCisjZGVmaW5lIEFSQ0hfSEFTX05PQ0FDSEVfVUFDQ0VTUworCitzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pY19ub2NhY2hlKHZvaWQgKnRvLAorCQkJCWNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisJaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pKSB7CisJCXVuc2lnbmVkIGxvbmcgcmV0OworCisJCXN3aXRjaCAobikgeworCQljYXNlIDE6CisJCQlfX2dldF91c2VyX3NpemUoKih1OCAqKXRvLCBmcm9tLCAxLCByZXQsIDEpOworCQkJcmV0dXJuIHJldDsKKwkJY2FzZSAyOgorCQkJX19nZXRfdXNlcl9zaXplKCoodTE2ICopdG8sIGZyb20sIDIsIHJldCwgMik7CisJCQlyZXR1cm4gcmV0OworCQljYXNlIDQ6CisJCQlfX2dldF91c2VyX3NpemUoKih1MzIgKil0bywgZnJvbSwgNCwgcmV0LCA0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJcmV0dXJuIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh0bywgZnJvbSwgbik7Cit9CisKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZwogX19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKICAgICAgICBtaWdodF9zbGVlcCgpOwogICAgICAgIHJldHVybiBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljKHRvLCBmcm9tLCBuKTsKIH0KKworc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nCitfX2NvcHlfZnJvbV91c2VyX25vY2FjaGUodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7CisgICAgICAgbWlnaHRfc2xlZXAoKTsKKyAgICAgICByZXR1cm4gX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pY19ub2NhY2hlKHRvLCBmcm9tLCBuKTsKK30KKwogdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sgY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywKIAkJCQljb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pOwogdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pMzg2L3VuaXN0ZC5oIGIvaW5jbHVkZS9hc20taTM4Ni91bmlzdGQuaAppbmRleCBkZTJjY2MxLi5mYzFjOGRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pMzg2L3VuaXN0ZC5oCisrKyBiL2luY2x1ZGUvYXNtLWkzODYvdW5pc3RkLmgKQEAgLTMyMiwxMCArMzIyLDExIEBACiAjZGVmaW5lIF9fTlJfc3luY19maWxlX3JhbmdlCTMxNAogI2RlZmluZSBfX05SX3RlZQkJMzE1CiAjZGVmaW5lIF9fTlJfdm1zcGxpY2UJCTMxNgorI2RlZmluZSBfX05SX21vdmVfcGFnZXMJCTMxNwogCiAjaWZkZWYgX19LRVJORUxfXwogCi0jZGVmaW5lIE5SX3N5c2NhbGxzIDMxNworI2RlZmluZSBOUl9zeXNjYWxscyAzMTgKIAogLyoKICAqIHVzZXItdmlzaWJsZSBlcnJvciBudW1iZXJzIGFyZSBpbiB0aGUgcmFuZ2UgLTEgLSAtMTI4OiBzZWUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWkzODYvdmdhLmggYi9pbmNsdWRlL2FzbS1pMzg2L3ZnYS5oCmluZGV4IGVmMGMwZTUuLjBlY2Y2OGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWkzODYvdmdhLmgKKysrIGIvaW5jbHVkZS9hc20taTM4Ni92Z2EuaApAQCAtMTIsNyArMTIsNyBAQAogICoJYWNjZXNzIHRoZSB2aWRlb3JhbSBkaXJlY3RseSB3aXRob3V0IGFueSBibGFjayBtYWdpYy4KICAqLwogCi0jZGVmaW5lIFZHQV9NQVBfTUVNKHgpICh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh4KQorI2RlZmluZSBWR0FfTUFQX01FTSh4LHMpICh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydCh4KQogCiAjZGVmaW5lIHZnYV9yZWFkYih4KSAoKih4KSkKICNkZWZpbmUgdmdhX3dyaXRlYih4LHkpICgqKHkpID0gKHgpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taWE2NC9od19pcnEuaCBiL2luY2x1ZGUvYXNtLWlhNjQvaHdfaXJxLmgKaW5kZXggMGNmMTE5Yi4uZWE4YjhjNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC9od19pcnEuaAorKysgYi9pbmNsdWRlL2FzbS1pYTY0L2h3X2lycS5oCkBAIC00Nyw5ICs0NywxOSBAQAogI2RlZmluZSBJQTY0X0NNQ19WRUNUT1IJCQkweDFmCS8qIGNvcnJlY3RlZCBtYWNoaW5lLWNoZWNrIGludGVycnVwdCB2ZWN0b3IgKi8KIC8qCiAgKiBWZWN0b3JzIDB4MjAtMHgyZiBhcmUgcmVzZXJ2ZWQgZm9yIGxlZ2FjeSBJU0EgSVJRcy4KKyAqIFVzZSB2ZWN0b3JzIDB4MzAtMHhlNyBhcyB0aGUgZGVmYXVsdCBkZXZpY2UgdmVjdG9yIHJhbmdlIGZvciBpYTY0LgorICogUGxhdGZvcm1zIG1heSBjaG9vc2UgdG8gcmVkdWNlIHRoaXMgcmFuZ2UgaW4gcGxhdGZvcm1faXJxX3NldHVwLCBidXQgdGhlCisgKiBwbGF0Zm9ybSByYW5nZSBtdXN0IGZhbGwgd2l0aGluCisgKglbSUE2NF9ERUZfRklSU1RfREVWSUNFX1ZFQ1RPUi4uSUE2NF9ERUZfTEFTVF9ERVZJQ0VfVkVDVE9SXQogICovCi0jZGVmaW5lIElBNjRfRklSU1RfREVWSUNFX1ZFQ1RPUgkweDMwCi0jZGVmaW5lIElBNjRfTEFTVF9ERVZJQ0VfVkVDVE9SCQkweGU3CitleHRlcm4gaW50IGlhNjRfZmlyc3RfZGV2aWNlX3ZlY3RvcjsKK2V4dGVybiBpbnQgaWE2NF9sYXN0X2RldmljZV92ZWN0b3I7CisKKyNkZWZpbmUgSUE2NF9ERUZfRklSU1RfREVWSUNFX1ZFQ1RPUgkweDMwCisjZGVmaW5lIElBNjRfREVGX0xBU1RfREVWSUNFX1ZFQ1RPUgkweGU3CisjZGVmaW5lIElBNjRfRklSU1RfREVWSUNFX1ZFQ1RPUglpYTY0X2ZpcnN0X2RldmljZV92ZWN0b3IKKyNkZWZpbmUgSUE2NF9MQVNUX0RFVklDRV9WRUNUT1IJCWlhNjRfbGFzdF9kZXZpY2VfdmVjdG9yCisjZGVmaW5lIElBNjRfTUFYX0RFVklDRV9WRUNUT1JTCQkoSUE2NF9ERUZfTEFTVF9ERVZJQ0VfVkVDVE9SIC0gSUE2NF9ERUZfRklSU1RfREVWSUNFX1ZFQ1RPUiArIDEpCiAjZGVmaW5lIElBNjRfTlVNX0RFVklDRV9WRUNUT1JTCQkoSUE2NF9MQVNUX0RFVklDRV9WRUNUT1IgLSBJQTY0X0ZJUlNUX0RFVklDRV9WRUNUT1IgKyAxKQogCiAjZGVmaW5lIElBNjRfTUNBX1JFTkRFWl9WRUNUT1IJCTB4ZTgJLyogTUNBIHJlbmRleiBpbnRlcnJ1cHQgKi8KQEAgLTgzLDYgKzkzLDcgQEAKIAogZXh0ZXJuIGludCBhc3NpZ25faXJxX3ZlY3RvciAoaW50IGlycSk7CS8qIGFsbG9jYXRlIGEgZnJlZSB2ZWN0b3IgKi8KIGV4dGVybiB2b2lkIGZyZWVfaXJxX3ZlY3RvciAoaW50IHZlY3Rvcik7CitleHRlcm4gaW50IHJlc2VydmVfaXJxX3ZlY3RvciAoaW50IHZlY3Rvcik7CiBleHRlcm4gdm9pZCBpYTY0X3NlbmRfaXBpIChpbnQgY3B1LCBpbnQgdmVjdG9yLCBpbnQgZGVsaXZlcnlfbW9kZSwgaW50IHJlZGlyZWN0KTsKIGV4dGVybiB2b2lkIHJlZ2lzdGVyX3BlcmNwdV9pcnEgKGlhNjRfdmVjdG9yIHZlYywgc3RydWN0IGlycWFjdGlvbiAqYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taWE2NC9pby5oIGIvaW5jbHVkZS9hc20taWE2NC9pby5oCmluZGV4IGMyZTM3NDIuLjc4MWVlMmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWlhNjQvaW8uaAorKysgYi9pbmNsdWRlL2FzbS1pYTY0L2lvLmgKQEAgLTg4LDYgKzg4LDcgQEAKIH0KIAogI2RlZmluZSBBUkNIX0hBU19WQUxJRF9QSFlTX0FERFJfUkFOR0UKK2V4dGVybiB1NjQga2Vybl9tZW1fYXR0cmlidXRlICh1bnNpZ25lZCBsb25nIHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsKIGV4dGVybiBpbnQgdmFsaWRfcGh5c19hZGRyX3JhbmdlICh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBjb3VudCk7IC8qIGVmaS5jICovCiBleHRlcm4gaW50IHZhbGlkX21tYXBfcGh5c19hZGRyX3JhbmdlICh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBjb3VudCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQvbWFjaHZlYy5oIGIvaW5jbHVkZS9hc20taWE2NC9tYWNodmVjLmgKaW5kZXggMGRmNzJhMS4uMTViNTQ1YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC9tYWNodmVjLmgKKysrIGIvaW5jbHVkZS9hc20taWE2NC9tYWNodmVjLmgKQEAgLTc1LDYgKzc1LDcgQEAKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaWE2NF9tdl9yZWFkd19yZWxheGVkX3QgKGNvbnN0IHZvbGF0aWxlIHZvaWQgX19pb21lbSAqKTsKIHR5cGVkZWYgdW5zaWduZWQgaW50IGlhNjRfbXZfcmVhZGxfcmVsYXhlZF90IChjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKik7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaWE2NF9tdl9yZWFkcV9yZWxheGVkX3QgKGNvbnN0IHZvbGF0aWxlIHZvaWQgX19pb21lbSAqKTsKK3R5cGVkZWYgaW50IGlhNjRfbXZfbXNpX2luaXRfdCAodm9pZCk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAogbWFjaHZlY19ub29wICh2b2lkKQpAQCAtMTUzLDYgKzE1NCw3IEBACiAjICBkZWZpbmUgcGxhdGZvcm1fcmVhZGxfcmVsYXhlZCAgICAgICAgaWE2NF9tdi5yZWFkbF9yZWxheGVkCiAjICBkZWZpbmUgcGxhdGZvcm1fcmVhZHFfcmVsYXhlZCAgICAgICAgaWE2NF9tdi5yZWFkcV9yZWxheGVkCiAjICBkZWZpbmUgcGxhdGZvcm1fbWlncmF0ZQkJaWE2NF9tdi5taWdyYXRlCisjICBkZWZpbmUgcGxhdGZvcm1fbXNpX2luaXQJCWlhNjRfbXYubXNpX2luaXQKICMgZW5kaWYKIAogLyogX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkgaXMgcmVxdWlyZWQgdG8gbWFrZSBzaXplIG9mIHRoZQpAQCAtMjAyLDYgKzIwNCw3IEBACiAJaWE2NF9tdl9yZWFkbF9yZWxheGVkX3QgKnJlYWRsX3JlbGF4ZWQ7CiAJaWE2NF9tdl9yZWFkcV9yZWxheGVkX3QgKnJlYWRxX3JlbGF4ZWQ7CiAJaWE2NF9tdl9taWdyYXRlX3QgKm1pZ3JhdGU7CisJaWE2NF9tdl9tc2lfaW5pdF90ICptc2lfaW5pdDsKIH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7IC8qIGFsaWduIGF0dHJpYj8gc2VlIGFib3ZlIGNvbW1lbnQgKi8KIAogI2RlZmluZSBNQUNIVkVDX0lOSVQobmFtZSkJCQlcCkBAIC0yNDcsNiArMjUwLDcgQEAKIAlwbGF0Zm9ybV9yZWFkbF9yZWxheGVkLAkJCVwKIAlwbGF0Zm9ybV9yZWFkcV9yZWxheGVkLAkJCVwKIAlwbGF0Zm9ybV9taWdyYXRlLAkJCVwKKwlwbGF0Zm9ybV9tc2lfaW5pdCwJCQlcCiB9CiAKIGV4dGVybiBzdHJ1Y3QgaWE2NF9tYWNoaW5lX3ZlY3RvciBpYTY0X212OwpAQCAtNDAwLDUgKzQwNCw4IEBACiAjaWZuZGVmIHBsYXRmb3JtX21pZ3JhdGUKICMgZGVmaW5lIHBsYXRmb3JtX21pZ3JhdGUgbWFjaHZlY19ub29wX3Rhc2sKICNlbmRpZgorI2lmbmRlZiBwbGF0Zm9ybV9tc2lfaW5pdAorIyBkZWZpbmUgcGxhdGZvcm1fbXNpX2luaXQJKChpYTY0X212X21zaV9pbml0X3QqKU5VTEwpCisjZW5kaWYKIAogI2VuZGlmIC8qIF9BU01fSUE2NF9NQUNIVkVDX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQvbWFjaHZlY19zbjIuaCBiL2luY2x1ZGUvYXNtLWlhNjQvbWFjaHZlY19zbjIuaAppbmRleCBkYTFkNDM3Li5jZjcyNGRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L21hY2h2ZWNfc24yLmgKKysrIGIvaW5jbHVkZS9hc20taWE2NC9tYWNodmVjX3NuMi5oCkBAIC02Nyw2ICs2Nyw4IEBACiBleHRlcm4gaWE2NF9tdl9kbWFfbWFwcGluZ19lcnJvcglzbl9kbWFfbWFwcGluZ19lcnJvcjsKIGV4dGVybiBpYTY0X212X2RtYV9zdXBwb3J0ZWQJCXNuX2RtYV9zdXBwb3J0ZWQ7CiBleHRlcm4gaWE2NF9tdl9taWdyYXRlX3QJCXNuX21pZ3JhdGU7CitleHRlcm4gaWE2NF9tdl9tc2lfaW5pdF90CQlzbl9tc2lfaW5pdDsKKwogCiAvKgogICogVGhpcyBzdHVmZiBoYXMgZHVhbCB1c2UhCkBAIC0xMTcsNiArMTE5LDExIEBACiAjZGVmaW5lIHBsYXRmb3JtX2RtYV9tYXBwaW5nX2Vycm9yCQlzbl9kbWFfbWFwcGluZ19lcnJvcgogI2RlZmluZSBwbGF0Zm9ybV9kbWFfc3VwcG9ydGVkCQlzbl9kbWFfc3VwcG9ydGVkCiAjZGVmaW5lIHBsYXRmb3JtX21pZ3JhdGUJCXNuX21pZ3JhdGUKKyNpZmRlZiBDT05GSUdfUENJX01TSQorI2RlZmluZSBwbGF0Zm9ybV9tc2lfaW5pdAkJc25fbXNpX2luaXQKKyNlbHNlCisjZGVmaW5lIHBsYXRmb3JtX21zaV9pbml0CQkoKGlhNjRfbXZfbXNpX2luaXRfdCopTlVMTCkKKyNlbmRpZgogCiAjaW5jbHVkZSA8YXNtL3NuL2lvLmg+CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQvbWNhLmggYi9pbmNsdWRlL2FzbS1pYTY0L21jYS5oCmluZGV4IDljNTM4OWIuLmVlOTdmN2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWlhNjQvbWNhLmgKKysrIGIvaW5jbHVkZS9hc20taWE2NC9tY2EuaApAQCAtNjksMTQgKzY5LDE2IEBACiAgKi8KIAogc3RydWN0IGlhNjRfc2FsX29zX3N0YXRlIHsKLQkvKiBTQUwgdG8gT1MsIG11c3QgYmUgYXQgb2Zmc2V0IDAgKi8KKworCS8qIFNBTCB0byBPUyAqLwogCXU2NAkJCW9zX2dwOwkJCS8qIEdQIG9mIHRoZSBvcyByZWdpc3RlcmVkIHdpdGggdGhlIFNBTCwgcGh5c2ljYWwgKi8KIAl1NjQJCQlwYWxfcHJvYzsJCS8qIFBBTF9QUk9DIGVudHJ5IHBvaW50LCBwaHlzaWNhbCAqLwogCXU2NAkJCXNhbF9wcm9jOwkJLyogU0FMX1BST0MgZW50cnkgcG9pbnQsIHBoeXNpY2FsICovCiAJdTY0CQkJcnZfcmM7CQkJLyogTUNBIC0gUmVuZGV6dm91cyBzdGF0ZSwgSU5JVCAtIHJlYXNvbiBjb2RlICovCiAJdTY0CQkJcHJvY19zdGF0ZV9wYXJhbTsJLyogZnJvbSBSMTggKi8KIAl1NjQJCQltb25hcmNoOwkJLyogMSBmb3IgYSBtb25hcmNoIGV2ZW50LCAwIGZvciBhIHNsYXZlICovCi0JLyogY29tbW9uLCBtdXN0IGZvbGxvdyBTQUwgdG8gT1MgKi8KKworCS8qIGNvbW1vbiAqLwogCXU2NAkJCXNhbF9yYTsJCQkvKiBSZXR1cm4gYWRkcmVzcyBpbiBTQUwsIHBoeXNpY2FsICovCiAJdTY0CQkJc2FsX2dwOwkJCS8qIEdQIG9mIHRoZSBTQUwgLSBwaHlzaWNhbCAqLwogCXBhbF9taW5fc3RhdGVfYXJlYV90CSpwYWxfbWluX3N0YXRlOwkJLyogZnJvbSBSMTcuICBwaHlzaWNhbCBpbiBhc20sIHZpcnR1YWwgaW4gQyAqLwpAQCAtOTgsNyArMTAwLDggQEAKIAl1NjQJCQlpaXBhOwogCXU2NAkJCWlpbTsKIAl1NjQJCQlpaGE7Ci0JLyogT1MgdG8gU0FMLCBtdXN0IGZvbGxvdyBjb21tb24gKi8KKworCS8qIE9TIHRvIFNBTCAqLwogCXU2NAkJCW9zX3N0YXR1czsJCS8qIE9TIHN0YXR1cyB0byBTQUwsIGVudW0gYmVsb3cgKi8KIAl1NjQJCQljb250ZXh0OwkJLyogMCBpZiByZXR1cm4gdG8gc2FtZSBjb250ZXh0CiAJCQkJCQkJICAgMSBpZiByZXR1cm4gdG8gbmV3IGNvbnRleHQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQvbXNpLmggYi9pbmNsdWRlL2FzbS1pYTY0L21zaS5oCmluZGV4IDk3ODkwZjcuLmJiOTJiMGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWlhNjQvbXNpLmgKKysrIGIvaW5jbHVkZS9hc20taWE2NC9tc2kuaApAQCAtMTQsNCArMTQsMTYgQEAKICNkZWZpbmUgYWNrX0FQSUNfaXJxCQlpYTY0X2VvaQogI2RlZmluZSBNU0lfVEFSR0VUX0NQVV9TSElGVAk0CiAKK2V4dGVybiBzdHJ1Y3QgbXNpX29wcyBtc2lfYXBpY19vcHM7CisKK3N0YXRpYyBpbmxpbmUgaW50IG1zaV9hcmNoX2luaXQodm9pZCkKK3sKKwlpZiAocGxhdGZvcm1fbXNpX2luaXQpCisJCXJldHVybiBwbGF0Zm9ybV9tc2lfaW5pdCgpOworCisJLyogZGVmYXVsdCBvcHMgZm9yIG1vc3QgaWE2NCBwbGF0Zm9ybXMgKi8KKwltc2lfcmVnaXN0ZXIoJm1zaV9hcGljX29wcyk7CisJcmV0dXJuIDA7Cit9CisKICNlbmRpZiAvKiBBU01fTVNJX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWlhNjQvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20taWE2NC9wZ3RhYmxlLmgKaW5kZXggZWFhYzA4ZC4uMjI4OTgxYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC9wZ3RhYmxlLmgKKysrIGIvaW5jbHVkZS9hc20taWE2NC9wZ3RhYmxlLmgKQEAgLTMxNiwyMiArMzE2LDIwIEBACiAjZGVmaW5lIHB0ZV9ta2h1Z2UocHRlKQkJKF9fcHRlKHB0ZV92YWwocHRlKSkpCiAKIC8qCi0gKiBNYWNybyB0byBhIHBhZ2UgcHJvdGVjdGlvbiB2YWx1ZSBhcyAidW5jYWNoZWFibGUiLiAgTm90ZSB0aGF0ICJwcm90ZWN0aW9uIiBpcyByZWFsbHkgYQotICogbWlzbm9tZXIgaGVyZSBhcyB0aGUgcHJvdGVjdGlvbiB2YWx1ZSBjb250YWlucyB0aGUgbWVtb3J5IGF0dHJpYnV0ZSBiaXRzLCBkaXJ0eSBiaXRzLAotICogYW5kIHZhcmlvdXMgb3RoZXIgYml0cyBhcyB3ZWxsLgorICogTWFrZSBwYWdlIHByb3RlY3Rpb24gdmFsdWVzIGNhY2hlYWJsZSwgdW5jYWNoZWFibGUsIG9yIHdyaXRlLQorICogY29tYmluaW5nLiAgTm90ZSB0aGF0ICJwcm90ZWN0aW9uIiBpcyByZWFsbHkgYSBtaXNub21lciBoZXJlIGFzIHRoZQorICogcHJvdGVjdGlvbiB2YWx1ZSBjb250YWlucyB0aGUgbWVtb3J5IGF0dHJpYnV0ZSBiaXRzLCBkaXJ0eSBiaXRzLCBhbmQKKyAqIHZhcmlvdXMgb3RoZXIgYml0cyBhcyB3ZWxsLgogICovCisjZGVmaW5lIHBncHJvdF9jYWNoZWFibGUocHJvdCkJCV9fcGdwcm90KChwZ3Byb3RfdmFsKHByb3QpICYgfl9QQUdFX01BX01BU0spIHwgX1BBR0VfTUFfV0IpCiAjZGVmaW5lIHBncHJvdF9ub25jYWNoZWQocHJvdCkJCV9fcGdwcm90KChwZ3Byb3RfdmFsKHByb3QpICYgfl9QQUdFX01BX01BU0spIHwgX1BBR0VfTUFfVUMpCi0KLS8qCi0gKiBNYWNybyB0byBtYWtlIG1hcmsgYSBwYWdlIHByb3RlY3Rpb24gdmFsdWUgYXMgIndyaXRlLWNvbWJpbmluZyIuCi0gKiBOb3RlIHRoYXQgInByb3RlY3Rpb24iIGlzIHJlYWxseSBhIG1pc25vbWVyIGhlcmUgYXMgdGhlIHByb3RlY3Rpb24KLSAqIHZhbHVlIGNvbnRhaW5zIHRoZSBtZW1vcnkgYXR0cmlidXRlIGJpdHMsIGRpcnR5IGJpdHMsIGFuZCB2YXJpb3VzCi0gKiBvdGhlciBiaXRzIGFzIHdlbGwuICBBY2Nlc3NlcyB0aHJvdWdoIGEgd3JpdGUtY29tYmluaW5nIHRyYW5zbGF0aW9uCi0gKiB3b3JrcyBieXBhc3NlcyB0aGUgY2FjaGVzLCBidXQgZG9lcyBhbGxvdyBmb3IgY29uc2VjdXRpdmUgd3JpdGVzIHRvCi0gKiBiZSBjb21iaW5lZCBpbnRvIHNpbmdsZSAoYnV0IGxhcmdlcikgd3JpdGUgdHJhbnNhY3Rpb25zLgotICovCiAjZGVmaW5lIHBncHJvdF93cml0ZWNvbWJpbmUocHJvdCkJX19wZ3Byb3QoKHBncHJvdF92YWwocHJvdCkgJiB+X1BBR0VfTUFfTUFTSykgfCBfUEFHRV9NQV9XQykKIAorc3RydWN0IGZpbGU7CitleHRlcm4gcGdwcm90X3QgcGh5c19tZW1fYWNjZXNzX3Byb3Qoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcGZuLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCB2bWFfcHJvdCk7CisjZGVmaW5lIF9fSEFWRV9QSFlTX01FTV9BQ0NFU1NfUFJPVAorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIHBnZF9pbmRleCAodW5zaWduZWQgbG9uZyBhZGRyZXNzKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taWE2NC9zbi9pbnRyLmggYi9pbmNsdWRlL2FzbS1pYTY0L3NuL2ludHIuaAppbmRleCA2MGE1MWE0Li4xMmI1NGRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L3NuL2ludHIuaAorKysgYi9pbmNsdWRlL2FzbS1pYTY0L3NuL2ludHIuaApAQCAtMTAsNiArMTAsNyBAQAogI2RlZmluZSBfQVNNX0lBNjRfU05fSU5UUl9ICiAKICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgorI2luY2x1ZGUgPGFzbS9zbi90eXBlcy5oPgogCiAjZGVmaW5lIFNHSV9VQVJUX1ZFQ1RPUgkJMHhlOQogCkBAIC00MCw2ICs0MSw3IEBACiAJaW50CQlpcnFfY3B1aWQ7CS8qIGtlcm5lbCBsb2dpY2FsIGNwdWlkCSAgICAgKi8KIAlpbnQJCWlycV9pcnE7CS8qIHRoZSBJUlEgbnVtYmVyICovCiAJaW50CQlpcnFfaW50X2JpdDsJLyogQnJpZGdlIGludGVycnVwdCBwaW4gKi8KKwkJCQkJLyogPDAgbWVhbnMgTVNJICovCiAJdTY0CWlycV94dGFsa2FkZHI7CS8qIHh0YWxrYWRkciBJUlEgaXMgc2VudCB0byAgKi8KIAlpbnQJCWlycV9icmlkZ2VfdHlwZTsvKiBwY2lpbyBhc2ljIHR5cGUgKHBjaWlvLmgpICovCiAJdm9pZAkgICAgICAgKmlycV9icmlkZ2U7CS8qIGJyaWRnZSBnZW5lcmF0aW5nIGlycSAgICAgKi8KQEAgLTUzLDYgKzU1LDEyIEBACiB9OwogCiBleHRlcm4gdm9pZCBzbl9zZW5kX0lQSV9waHlzKGludCwgbG9uZywgaW50LCBpbnQpOworZXh0ZXJuIHU2NCBzbl9pbnRyX2FsbG9jKG5hc2lkX3QsIGludCwKKwkJCSAgICAgIHN0cnVjdCBzbl9pcnFfaW5mbyAqLAorCQkJICAgICAgaW50LCBuYXNpZF90LCBpbnQpOworZXh0ZXJuIHZvaWQgc25faW50cl9mcmVlKG5hc2lkX3QsIGludCwgc3RydWN0IHNuX2lycV9pbmZvICopOworZXh0ZXJuIHN0cnVjdCBzbl9pcnFfaW5mbyAqc25fcmV0YXJnZXRfdmVjdG9yKHN0cnVjdCBzbl9pcnFfaW5mbyAqLCBuYXNpZF90LCBpbnQpOworZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgKipzbl9pcnFfbGg7CiAKICNkZWZpbmUgQ1BVX1ZFQ1RPUl9UT19JUlEoY3B1aWQsdmVjdG9yKSAodmVjdG9yKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3NuL3BjaWJyX3Byb3ZpZGVyLmggYi9pbmNsdWRlL2FzbS1pYTY0L3NuL3BjaWJyX3Byb3ZpZGVyLmgKaW5kZXggNTEyNjBhYi4uZTNiMGMzZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC9zbi9wY2licl9wcm92aWRlci5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvc24vcGNpYnJfcHJvdmlkZXIuaApAQCAtNTUsNiArNTUsNyBAQAogI2RlZmluZSBQQ0kzMl9BVEVfViAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkKICNkZWZpbmUgUENJMzJfQVRFX0NPICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDEpCiAjZGVmaW5lIFBDSTMyX0FURV9QUkVDICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQorI2RlZmluZSBQQ0kzMl9BVEVfTVNJICAgICAgICAgICAgICAgICAgICgweDEgPDwgMikKICNkZWZpbmUgUENJMzJfQVRFX1BSRUYgICAgICAgICAgICAgICAgICAoMHgxIDw8IDMpCiAjZGVmaW5lIFBDSTMyX0FURV9CQVIgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA0KQogI2RlZmluZSBQQ0kzMl9BVEVfQUREUl9TSEZUICAgICAgICAgICAgIDEyCkBAIC0xMTcsOCArMTE4LDggQEAKIAogZXh0ZXJuIGludCAgcGNpYnJfaW5pdF9wcm92aWRlcih2b2lkKTsKIGV4dGVybiB2b2lkICpwY2licl9idXNfZml4dXAoc3RydWN0IHBjaWJ1c19idXNzb2Z0ICosIHN0cnVjdCBwY2lfY29udHJvbGxlciAqKTsKLWV4dGVybiBkbWFfYWRkcl90IHBjaWJyX2RtYV9tYXAoc3RydWN0IHBjaV9kZXYgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKLWV4dGVybiBkbWFfYWRkcl90IHBjaWJyX2RtYV9tYXBfY29uc2lzdGVudChzdHJ1Y3QgcGNpX2RldiAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QpOworZXh0ZXJuIGRtYV9hZGRyX3QgcGNpYnJfZG1hX21hcChzdHJ1Y3QgcGNpX2RldiAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QsIGludCB0eXBlKTsKK2V4dGVybiBkbWFfYWRkcl90IHBjaWJyX2RtYV9tYXBfY29uc2lzdGVudChzdHJ1Y3QgcGNpX2RldiAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QsIGludCB0eXBlKTsKIGV4dGVybiB2b2lkIHBjaWJyX2RtYV91bm1hcChzdHJ1Y3QgcGNpX2RldiAqLCBkbWFfYWRkcl90LCBpbnQpOwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taWE2NC9zbi9wY2lidXNfcHJvdmlkZXJfZGVmcy5oIGIvaW5jbHVkZS9hc20taWE2NC9zbi9wY2lidXNfcHJvdmlkZXJfZGVmcy5oCmluZGV4IGNlM2Y2YzMuLjhmN2M4M2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWlhNjQvc24vcGNpYnVzX3Byb3ZpZGVyX2RlZnMuaAorKysgYi9pbmNsdWRlL2FzbS1pYTY0L3NuL3BjaWJ1c19wcm92aWRlcl9kZWZzLmgKQEAgLTMsNyArMyw3IEBACiAgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCiAgKiBmb3IgbW9yZSBkZXRhaWxzLgogICoKLSAqIENvcHlyaWdodCAoQykgMTk5MiAtIDE5OTcsIDIwMDAtMjAwNCBTaWxpY29uIEdyYXBoaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTIgLSAxOTk3LCAyMDAwLTIwMDUgU2lsaWNvbiBHcmFwaGljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICovCiAjaWZuZGVmIF9BU01fSUE2NF9TTl9QQ0lfUENJQlVTX1BST1ZJREVSX0gKICNkZWZpbmUgX0FTTV9JQTY0X1NOX1BDSV9QQ0lCVVNfUFJPVklERVJfSApAQCAtNDUsMTMgKzQ1LDI0IEBACiAgKi8KIAogc3RydWN0IHNuX3BjaWJ1c19wcm92aWRlciB7Ci0JZG1hX2FkZHJfdAkoKmRtYV9tYXApKHN0cnVjdCBwY2lfZGV2ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCk7Ci0JZG1hX2FkZHJfdAkoKmRtYV9tYXBfY29uc2lzdGVudCkoc3RydWN0IHBjaV9kZXYgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKKwlkbWFfYWRkcl90CSgqZG1hX21hcCkoc3RydWN0IHBjaV9kZXYgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90LCBpbnQgZmxhZ3MpOworCWRtYV9hZGRyX3QJKCpkbWFfbWFwX2NvbnNpc3RlbnQpKHN0cnVjdCBwY2lfZGV2ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgaW50IGZsYWdzKTsKIAl2b2lkCQkoKmRtYV91bm1hcCkoc3RydWN0IHBjaV9kZXYgKiwgZG1hX2FkZHJfdCwgaW50KTsKIAl2b2lkICoJCSgqYnVzX2ZpeHVwKShzdHJ1Y3QgcGNpYnVzX2J1c3NvZnQgKiwgc3RydWN0IHBjaV9jb250cm9sbGVyICopOwogIAl2b2lkCQkoKmZvcmNlX2ludGVycnVwdCkoc3RydWN0IHNuX2lycV9pbmZvICopOwogIAl2b2lkCQkoKnRhcmdldF9pbnRlcnJ1cHQpKHN0cnVjdCBzbl9pcnFfaW5mbyAqKTsKIH07CiAKKy8qCisgKiBGbGFncyB1c2VkIGJ5IHRoZSBtYXAgaW50ZXJmYWNlcworICogYml0cyAzOjAgc3BlY2lmaWVzIGZvcm1hdCBvZiBwYXNzZWQgaW4gYWRkcmVzcworICogYml0ICA0ICAgc3BlY2lmaWVzIHRoYXQgYWRkcmVzcyBpcyB0byBiZSB1c2VkIGZvciBNU0kKKyAqLworCisjZGVmaW5lIFNOX0RNQV9BRERSVFlQRSh4KQkoKHgpICYgMHhmKQorI2RlZmluZSAgICAgU05fRE1BX0FERFJfUEhZUwkxCS8qIGFkZHJlc3MgaXMgYW4geGlvIGFkZHJlc3MuICovCisjZGVmaW5lICAgICBTTl9ETUFfQUREUl9YSU8JMgkvKiBhZGRyZXNzIGlzIHBoeXMgbWVtb3J5ICovCisjZGVmaW5lIFNOX0RNQV9NU0kJCTB4MTAJLyogQnVzIGFkZHJlc3MgaXMgdG8gYmUgdXNlZCBmb3IgTVNJICovCisKIGV4dGVybiBzdHJ1Y3Qgc25fcGNpYnVzX3Byb3ZpZGVyICpzbl9wY2lfcHJvdmlkZXJbXTsKICNlbmRpZgkJCQkvKiBfQVNNX0lBNjRfU05fUENJX1BDSUJVU19QUk9WSURFUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3NuL3NuX3NhbC5oIGIvaW5jbHVkZS9hc20taWE2NC9zbi9zbl9zYWwuaAppbmRleCA4Yzg2NWU0Li5jZDQ5MGIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L3NuL3NuX3NhbC5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvc24vc25fc2FsLmgKQEAgLTM0NSw3ICszNDUsNyBAQAogCXJldF9zdHVmZi52MSA9IDA7CiAJcmV0X3N0dWZmLnYyID0gMDsKIAlTQUxfQ0FMTF9SRUVOVFJBTlQocmV0X3N0dWZmLCBTTl9TQUxfU0VUX0VSUk9SX0hBTkRMSU5HX0ZFQVRVUkVTLAotCQkoU0FMX0VSUl9GRUFUX01DQV9TTFZfVE9fT1NfSU5JVF9TTFYgfCBTQUxfRVJSX0ZFQVRfTE9HX1NCRVMpLAorCQlTQUxfRVJSX0ZFQVRfTE9HX1NCRVMsCiAJCTAsIDAsIDAsIDAsIDAsIDApOwogCiAJcmV0dXJuIHJldF9zdHVmZi5zdGF0dXM7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3NuL3Rpb2NwLmggYi9pbmNsdWRlL2FzbS1pYTY0L3NuL3Rpb2NwLmgKaW5kZXggZjQ3YzA4YS4uZThhZDBiYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taWE2NC9zbi90aW9jcC5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvc24vdGlvY3AuaApAQCAtMywxMyArMywxNCBAQAogICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSAiQ09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQogICogZm9yIG1vcmUgZGV0YWlscy4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBTaWxpY29uIEdyYXBoaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKi8KICNpZm5kZWYgX0FTTV9JQTY0X1NOX1BDSV9USU9DUF9ICiAjZGVmaW5lIF9BU01fSUE2NF9TTl9QQ0lfVElPQ1BfSAogCiAjZGVmaW5lIFRJT0NQX0hPU1RfSU5UUl9BRERSICAgICAgICAgICAgMHgwMDNGRkZGRkZGRkZGRkZGVUwKICNkZWZpbmUgVElPQ1BfUENJNjRfQ01EVFlQRV9NRU0gICAgICAgICAoMHgxdWxsIDw8IDYwKQorI2RlZmluZSBUSU9DUF9QQ0k2NF9DTURUWVBFX01TSSAgICAgICAgICgweDN1bGwgPDwgNjApCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3VuaXN0ZC5oIGIvaW5jbHVkZS9hc20taWE2NC91bmlzdGQuaAppbmRleCA2MzJmMmVlLi5iYjBlYjcyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L3VuaXN0ZC5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvdW5pc3RkLmgKQEAgLTI2NSw3ICsyNjUsNyBAQAogI2RlZmluZSBfX05SX2tleWN0bAkJCTEyNzMKICNkZWZpbmUgX19OUl9pb3ByaW9fc2V0CQkJMTI3NAogI2RlZmluZSBfX05SX2lvcHJpb19nZXQJCQkxMjc1Ci0vKiAxMjc2IGlzIGF2YWlsYWJsZSBmb3IgcmV1c2UgKHdhcyBicmllZmx5IHN5c19zZXRfem9uZV9yZWNsYWltKSAqLworI2RlZmluZSBfX05SX21vdmVfcGFnZXMJCQkxMjc2CiAjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0CQkxMjc3CiAjZGVmaW5lIF9fTlJfaW5vdGlmeV9hZGRfd2F0Y2gJCTEyNzgKICNkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoCQkxMjc5CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1pYTY0L3ZnYS5oIGIvaW5jbHVkZS9hc20taWE2NC92Z2EuaAppbmRleCAwOTExNzdjLi4wMjE4NGVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1pYTY0L3ZnYS5oCisrKyBiL2luY2x1ZGUvYXNtLWlhNjQvdmdhLmgKQEAgLTE3LDcgKzE3LDcgQEAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHZnYV9jb25zb2xlX2lvYmFzZTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIHZnYV9jb25zb2xlX21lbWJhc2U7CiAKLSNkZWZpbmUgVkdBX01BUF9NRU0oeCkJKCh1bnNpZ25lZCBsb25nKSBpb3JlbWFwX25vY2FjaGUodmdhX2NvbnNvbGVfbWVtYmFzZSArICh4KSwgMCkpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykJKCh1bnNpZ25lZCBsb25nKSBpb3JlbWFwX25vY2FjaGUodmdhX2NvbnNvbGVfbWVtYmFzZSArICh4KSwgcykpCiAKICNkZWZpbmUgdmdhX3JlYWRiKHgpCSgqKHgpKQogI2RlZmluZSB2Z2Ffd3JpdGViKHgseSkJKCooeSkgPSAoeCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tMzJyL3ZnYS5oIGIvaW5jbHVkZS9hc20tbTMyci92Z2EuaAppbmRleCBkMGY0YjZlLi41MzMxNjM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1tMzJyL3ZnYS5oCisrKyBiL2luY2x1ZGUvYXNtLW0zMnIvdmdhLmgKQEAgLTE0LDcgKzE0LDcgQEAKICAqCWFjY2VzcyB0aGUgdmlkZW9yYW0gZGlyZWN0bHkgd2l0aG91dCBhbnkgYmxhY2sgbWFnaWMuCiAgKi8KIAotI2RlZmluZSBWR0FfTUFQX01FTSh4KSAodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQoeCkKKyNkZWZpbmUgVkdBX01BUF9NRU0oeCxzKSAodW5zaWduZWQgbG9uZylwaHlzX3RvX3ZpcnQoeCkKIAogI2RlZmluZSB2Z2FfcmVhZGIoeCkgKCooeCkpCiAjZGVmaW5lIHZnYV93cml0ZWIoeCx5KSAoKih5KSA9ICh4KSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW02OGsvaXJxLmggYi9pbmNsdWRlL2FzbS1tNjhrL2lycS5oCmluZGV4IGI0ZjQ4YjIuLjk3MjdjYTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW02OGsvaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tbTY4ay9pcnEuaApAQCAtMTMwLDggKzEzMCw0IEBACiAgKi8KIGV4dGVybiBpcnFfbm9kZV90ICpuZXdfaXJxX25vZGUodm9pZCk7CiAKLXN0cnVjdCBpcnFhY3Rpb247Ci1zdHJ1Y3QgcHRfcmVnczsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogI2VuZGlmIC8qIF9NNjhLX0lSUV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbTY4ay9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYXNtLW02OGsvcHJvY2Vzc29yLmgKaW5kZXggMzUyNzk5ZS4uODQ1NWY3NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbTY4ay9wcm9jZXNzb3IuaAorKysgYi9pbmNsdWRlL2FzbS1tNjhrL3Byb2Nlc3Nvci5oCkBAIC03MSwxMCArNzEsMTAgQEAKIH07CiAKICNkZWZpbmUgSU5JVF9USFJFQUQgIHsJCQkJCQkJXAotCWtzcDoJc2l6ZW9mKGluaXRfc3RhY2spICsgKHVuc2lnbmVkIGxvbmcpIGluaXRfc3RhY2ssCVwKLQlzcjoJUFNfUywJCQkJCQkJXAotCWZzOglfX0tFUk5FTF9EUywJCQkJCQlcCi0JaW5mbzoJSU5JVF9USFJFQURfSU5GTyhpbml0X3Rhc2spCQkJCVwKKwkua3NwCT0gc2l6ZW9mKGluaXRfc3RhY2spICsgKHVuc2lnbmVkIGxvbmcpIGluaXRfc3RhY2ssCVwKKwkuc3IJPSBQU19TLAkJCQkJCQlcCisJLmZzCT0gX19LRVJORUxfRFMsCQkJCQkJXAorCS5pbmZvCT0gSU5JVF9USFJFQURfSU5GTyhpbml0X3Rhc2spLAkJCQlcCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tNjhrL3VhY2Nlc3MuaCBiL2luY2x1ZGUvYXNtLW02OGsvdWFjY2Vzcy5oCmluZGV4IDJmZmQ4N2IuLmI3NjFlZjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW02OGsvdWFjY2Vzcy5oCisrKyBiL2luY2x1ZGUvYXNtLW02OGsvdWFjY2Vzcy5oCkBAIC00LDggKzQsOSBAQAogLyoKICAqIFVzZXIgc3BhY2UgbWVtb3J5IGFjY2VzcyBmdW5jdGlvbnMKICAqLworI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KLSNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3NlZ21lbnQuaD4KIAogI2RlZmluZSBWRVJJRllfUkVBRAkwCkBAIC0zMiw4NTggKzMzLDMxNSBAQAogCXVuc2lnbmVkIGxvbmcgaW5zbiwgZml4dXA7CiB9OwogCitleHRlcm4gaW50IF9fcHV0X3VzZXJfYmFkKHZvaWQpOworZXh0ZXJuIGludCBfX2dldF91c2VyX2JhZCh2b2lkKTsKKworI2RlZmluZSBfX3B1dF91c2VyX2FzbShyZXMsIHgsIHB0ciwgYndsLCByZWcsIGVycikJXAorYXNtIHZvbGF0aWxlICgiXG4iCQkJCQlcCisJIjE6CW1vdmVzLiIjYndsIgklMiwlMVxuIgkJXAorCSIyOlxuIgkJCQkJCVwKKwkiCS5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIJCVwKKwkiCS5ldmVuXG4iCQkJCVwKKwkiMTA6CW1vdmVxLmwJJTMsJTBcbiIJCQlcCisJIglqcmEgMmJcbiIJCQkJXAorCSIJLnByZXZpb3VzXG4iCQkJCVwKKwkiXG4iCQkJCQkJXAorCSIJLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgkJXAorCSIJLmFsaWduCTRcbiIJCQkJXAorCSIJLmxvbmcJMWIsMTBiXG4iCQkJXAorCSIJLmxvbmcJMmIsMTBiXG4iCQkJXAorCSIJLnByZXZpb3VzIgkJCQlcCisJOiAiK2QiIChyZXMpLCAiPW0iICgqKHB0cikpCQkJXAorCTogI3JlZyAoeCksICJpIiAoZXJyKSkKIAogLyoKICAqIFRoZXNlIGFyZSB0aGUgbWFpbiBzaW5nbGUtdmFsdWUgdHJhbnNmZXIgcm91dGluZXMuICBUaGV5IGF1dG9tYXRpY2FsbHkKICAqIHVzZSB0aGUgcmlnaHQgc2l6ZSBpZiB3ZSBqdXN0IGhhdmUgdGhlIHJpZ2h0IHBvaW50ZXIgdHlwZS4KICAqLwogCi0jZGVmaW5lIHB1dF91c2VyKHgsIHB0cikJCQkJXAotKHsJCQkJCQkJXAotICAgIGludCBfX3B1X2VycjsJCQkJCVwKLSAgICB0eXBlb2YoKihwdHIpKSBfX3B1X3ZhbCA9ICh4KTsJCQlcCi0gICAgX19jaGtfdXNlcl9wdHIocHRyKTsJCQkJXAotICAgIHN3aXRjaCAoc2l6ZW9mICgqKHB0cikpKSB7CQkJCVwKLSAgICBjYXNlIDE6CQkJCQkJXAotCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCBiKTsJXAotCWJyZWFrOwkJCQkJCVwKLSAgICBjYXNlIDI6CQkJCQkJXAotCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCB3KTsJXAotCWJyZWFrOwkJCQkJCVwKLSAgICBjYXNlIDQ6CQkJCQkJXAotCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCBsKTsJXAotCWJyZWFrOwkJCQkJCVwKLSAgICBjYXNlIDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIF9fcHVfZXJyID0gX19jb25zdGFudF9jb3B5X3RvX3VzZXIocHRyLCAmX19wdV92YWwsIDgpOyAgICAgICAgXAotICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGVmYXVsdDoJCQkJCQlcCi0JX19wdV9lcnIgPSBfX3B1dF91c2VyX2JhZCgpOwkJCVwKLQlicmVhazsJCQkJCQlcCi0gICAgfQkJCQkJCQlcCi0gICAgX19wdV9lcnI7CQkJCQkJXAorI2RlZmluZSBfX3B1dF91c2VyKHgsIHB0cikJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBlb2YoKihwdHIpKSBfX3B1X3ZhbCA9ICh4KTsJCQkJCVwKKwlpbnQgX19wdV9lcnIgPSAwOwkJCQkJCVwKKwlfX2Noa191c2VyX3B0cihwdHIpOwkJCQkJCVwKKwlzd2l0Y2ggKHNpemVvZiAoKihwdHIpKSkgewkJCQkJXAorCWNhc2UgMToJCQkJCQkJCVwKKwkJX19wdXRfdXNlcl9hc20oX19wdV9lcnIsIF9fcHVfdmFsLCBwdHIsIGIsIGQsIC1FRkFVTFQpOwlcCisJCWJyZWFrOwkJCQkJCQlcCisJY2FzZSAyOgkJCQkJCQkJXAorCQlfX3B1dF91c2VyX2FzbShfX3B1X2VyciwgX19wdV92YWwsIHB0ciwgdywgZCwgLUVGQVVMVCk7CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwljYXNlIDQ6CQkJCQkJCQlcCisJCV9fcHV0X3VzZXJfYXNtKF9fcHVfZXJyLCBfX3B1X3ZhbCwgcHRyLCBsLCByLCAtRUZBVUxUKTsJXAorCQlicmVhazsJCQkJCQkJXAorCWNhc2UgODoJCQkJCQkJCVwKKyAJICAgIHsJCQkJCQkJCVwKKyAJCWNvbnN0IHZvaWQgKl9fcHVfcHRyID0gKHB0cik7CQkJCVwKKwkJYXNtIHZvbGF0aWxlICgiXG4iCQkJCQlcCisJCQkiMToJbW92ZXMubAklMiwoJTEpK1xuIgkJCVwKKwkJCSIyOgltb3Zlcy5sCSVSMiwoJTEpXG4iCQkJXAorCQkJIjM6XG4iCQkJCQkJXAorCQkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQlcCisJCQkiCS5ldmVuXG4iCQkJCVwKKwkJCSIxMDoJbW92ZWwgJTMsJTBcbiIJCQkJXAorCQkJIglqcmEgM2JcbiIJCQkJXAorCQkJIgkucHJldmlvdXNcbiIJCQkJXAorCQkJIlxuIgkJCQkJCVwKKwkJCSIJLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgkJXAorCQkJIgkuYWxpZ24gNFxuIgkJCQlcCisJCQkiCS5sb25nIDFiLDEwYlxuIgkJCQlcCisJCQkiCS5sb25nIDJiLDEwYlxuIgkJCQlcCisJCQkiCS5sb25nIDNiLDEwYlxuIgkJCQlcCisJCQkiCS5wcmV2aW91cyIJCQkJXAorCQkJOiAiK2QiIChfX3B1X2VyciksICIrYSIgKF9fcHVfcHRyKQkJXAorCQkJOiAiciIgKF9fcHVfdmFsKSwgImkiICgtRUZBVUxUKQkJCVwKKwkJCTogIm1lbW9yeSIpOwkJCQkJXAorCQlicmVhazsJCQkJCQkJXAorCSAgICB9CQkJCQkJCQlcCisJZGVmYXVsdDoJCQkJCQkJXAorCQlfX3B1X2VyciA9IF9fcHV0X3VzZXJfYmFkKCk7CQkJCVwKKwkJYnJlYWs7CQkJCQkJCVwKKwl9CQkJCQkJCQlcCisJX19wdV9lcnI7CQkJCQkJCVwKIH0pCi0jZGVmaW5lIF9fcHV0X3VzZXIoeCwgcHRyKSBwdXRfdXNlcih4LCBwdHIpCisjZGVmaW5lIHB1dF91c2VyKHgsIHB0cikJX19wdXRfdXNlcih4LCBwdHIpCiAKLWV4dGVybiBpbnQgX19wdXRfdXNlcl9iYWQodm9pZCk7CiAKLS8qCi0gKiBUZWxsIGdjYyB3ZSByZWFkIGZyb20gbWVtb3J5IGluc3RlYWQgb2Ygd3JpdGluZzogdGhpcyBpcyBiZWNhdXNlCi0gKiB3ZSBkbyBub3Qgd3JpdGUgdG8gYW55IG1lbW9yeSBnY2Mga25vd3MgYWJvdXQsIHNvIHRoZXJlIGFyZSBubwotICogYWxpYXNpbmcgaXNzdWVzLgotICovCi0jZGVmaW5lIF9fcHV0X3VzZXJfYXNtKGVycix4LHB0cixid2wpCQkJXAotX19hc21fXyBfX3ZvbGF0aWxlX18JCQkJCVwKLSAgICAoIjIxOm1vdmVzIiAjYndsICIgJTIsJTFcbiIJCQkJXAotICAgICAiMTpcbiIJCQkJCQlcCi0gICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJCVwKLSAgICAgIiAgIC5ldmVuXG4iCQkJCQlcCi0gICAgICIyOiBtb3ZlbCAlMywlMFxuIgkJCQkJXAotICAgICAiICAganJhIDFiXG4iCQkJCQlcCi0gICAgICIucHJldmlvdXNcbiIJCQkJCVwKLSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCi0gICAgICIgICAuYWxpZ24gNFxuIgkJCQkJXAotICAgICAiICAgLmxvbmcgMjFiLDJiXG4iCQkJCVwKLSAgICAgIiAgIC5sb25nIDFiLDJiXG4iCQkJCQlcCi0gICAgICIucHJldmlvdXMiCQkJCQlcCi0gICAgIDogIj1kIihlcnIpCQkJCQlcCi0gICAgIDogIm0iKCoocHRyKSksICJyIih4KSwgImkiKC1FRkFVTFQpLCAiMCIoMCkpCi0KLSNkZWZpbmUgZ2V0X3VzZXIoeCwgcHRyKQkJCQkJXAotKHsJCQkJCQkJCVwKLSAgICBpbnQgX19ndV9lcnI7CQkJCQkJXAotICAgIHR5cGVvZigqKHB0cikpIF9fZ3VfdmFsOwkJCQkJXAotICAgIF9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQlcCi0gICAgc3dpdGNoIChzaXplb2YoKihwdHIpKSkgewkJCQkJXAotICAgIGNhc2UgMToJCQkJCQkJXAotCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCBfX2d1X3ZhbCwgcHRyLCBiLCAiPWQiKTsJXAotCWJyZWFrOwkJCQkJCQlcCi0gICAgY2FzZSAyOgkJCQkJCQlcCi0JX19nZXRfdXNlcl9hc20oX19ndV9lcnIsIF9fZ3VfdmFsLCBwdHIsIHcsICI9ciIpOwlcCi0JYnJlYWs7CQkJCQkJCVwKLSAgICBjYXNlIDQ6CQkJCQkJCVwKLQlfX2dldF91c2VyX2FzbShfX2d1X2VyciwgX19ndV92YWwsIHB0ciwgbCwgIj1yIik7CVwKLQlicmVhazsJCQkJCQkJXAotICAgIGNhc2UgODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX19ndV9lcnIgPSBfX2NvbnN0YW50X2NvcHlfZnJvbV91c2VyKCZfX2d1X3ZhbCwgcHRyLCA4KTsgIFwKLSAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGVmYXVsdDoJCQkJCQkJXAotCV9fZ3VfdmFsID0gKHR5cGVvZigqKHB0cikpKTA7CQkJCVwKLQlfX2d1X2VyciA9IF9fZ2V0X3VzZXJfYmFkKCk7CQkJCVwKLQlicmVhazsJCQkJCQkJXAotICAgIH0JCQkJCQkJCVwKLSAgICAoeCkgPSBfX2d1X3ZhbDsJCQkJCQlcCi0gICAgX19ndV9lcnI7CQkJCQkJCVwKKyNkZWZpbmUgX19nZXRfdXNlcl9hc20ocmVzLCB4LCBwdHIsIHR5cGUsIGJ3bCwgcmVnLCBlcnIpICh7CVwKKwl0eXBlIF9fZ3VfdmFsOwkJCQkJCVwKKwlhc20gdm9sYXRpbGUgKCJcbiIJCQkJCVwKKwkJIjE6CW1vdmVzLiIjYndsIgklMiwlMVxuIgkJXAorCQkiMjpcbiIJCQkJCQlcCisJCSIJLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJXAorCQkiCS5ldmVuXG4iCQkJCVwKKwkJIjEwOgltb3ZlLmwJJTMsJTBcbiIJCQlcCisJCSIJc3ViLiIjYndsIgklMSwlMVxuIgkJXAorCQkiCWpyYQkyYlxuIgkJCQlcCisJCSIJLnByZXZpb3VzXG4iCQkJCVwKKwkJIlxuIgkJCQkJCVwKKwkJIgkuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCQlcCisJCSIJLmFsaWduCTRcbiIJCQkJXAorCQkiCS5sb25nCTFiLDEwYlxuIgkJCVwKKwkJIgkucHJldmlvdXMiCQkJCVwKKwkJOiAiK2QiIChyZXMpLCAiPSYiICNyZWcgKF9fZ3VfdmFsKQkJXAorCQk6ICJtIiAoKihwdHIpKSwgImkiIChlcnIpKTsJCQlcCisJKHgpID0gKHR5cGVvZigqKHB0cikpKShsb25nKV9fZ3VfdmFsOwkJCVwKIH0pCi0jZGVmaW5lIF9fZ2V0X3VzZXIoeCwgcHRyKSBnZXRfdXNlcih4LCBwdHIpCiAKLWV4dGVybiBpbnQgX19nZXRfdXNlcl9iYWQodm9pZCk7CisjZGVmaW5lIF9fZ2V0X3VzZXIoeCwgcHRyKQkJCQkJCVwKKyh7CQkJCQkJCQkJXAorCWludCBfX2d1X2VyciA9IDA7CQkJCQkJXAorCV9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQkJXAorCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJCVwKKwljYXNlIDE6CQkJCQkJCQlcCisJCV9fZ2V0X3VzZXJfYXNtKF9fZ3VfZXJyLCB4LCBwdHIsIHU4LCBiLCBkLCAtRUZBVUxUKTsJXAorCQlicmVhazsJCQkJCQkJXAorCWNhc2UgMjoJCQkJCQkJCVwKKwkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsIHgsIHB0ciwgdTE2LCB3LCBkLCAtRUZBVUxUKTsJXAorCQlicmVhazsJCQkJCQkJXAorCWNhc2UgNDoJCQkJCQkJCVwKKwkJX19nZXRfdXNlcl9hc20oX19ndV9lcnIsIHgsIHB0ciwgdTMyLCBsLCByLCAtRUZBVUxUKTsJXAorCQlicmVhazsJCQkJCQkJXAorLyoJY2FzZSA4OglkaXNhYmxlZCBiZWNhdXNlIGdjYy00LjEgaGFzIGEgYnJva2VuIHR5cGVvZgkJXAorIAkgICAgewkJCQkJCQkJXAorIAkJY29uc3Qgdm9pZCAqX19ndV9wdHIgPSAocHRyKTsJCQkJXAorIAkJdTY0IF9fZ3VfdmFsOwkJCQkJCVwKKwkJYXNtIHZvbGF0aWxlICgiXG4iCQkJCQlcCisJCQkiMToJbW92ZXMubAkoJTIpKywlMVxuIgkJCVwKKwkJCSIyOgltb3Zlcy5sCSglMiksJVIxXG4iCQkJXAorCQkJIjM6XG4iCQkJCQkJXAorCQkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQlcCisJCQkiCS5ldmVuXG4iCQkJCVwKKwkJCSIxMDoJbW92ZS5sCSUzLCUwXG4iCQkJXAorCQkJIglzdWIubAklMSwlMVxuIgkJCVwKKwkJCSIJc3ViLmwJJVIxLCVSMVxuIgkJCVwKKwkJCSIJanJhCTNiXG4iCQkJCVwKKwkJCSIJLnByZXZpb3VzXG4iCQkJCVwKKwkJCSJcbiIJCQkJCQlcCisJCQkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCVwKKwkJCSIJLmFsaWduCTRcbiIJCQkJXAorCQkJIgkubG9uZwkxYiwxMGJcbiIJCQlcCisJCQkiCS5sb25nCTJiLDEwYlxuIgkJCVwKKwkJCSIJLnByZXZpb3VzIgkJCQlcCisJCQk6ICIrZCIgKF9fZ3VfZXJyKSwgIj0mciIgKF9fZ3VfdmFsKSwJCVwKKwkJCSAgIithIiAoX19ndV9wdHIpCQkJCVwKKwkJCTogImkiICgtRUZBVUxUKQkJCQkJXAorCQkJOiAibWVtb3J5Iik7CQkJCQlcCisJCSh4KSA9ICh0eXBlb2YoKihwdHIpKSlfX2d1X3ZhbDsJCQkJXAorCQlicmVhazsJCQkJCQkJXAorCSAgICB9CSovCQkJCQkJCVwKKwlkZWZhdWx0OgkJCQkJCQlcCisJCV9fZ3VfZXJyID0gX19nZXRfdXNlcl9iYWQoKTsJCQkJXAorCQlicmVhazsJCQkJCQkJXAorCX0JCQkJCQkJCVwKKwlfX2d1X2VycjsJCQkJCQkJXAorfSkKKyNkZWZpbmUgZ2V0X3VzZXIoeCwgcHRyKSBfX2dldF91c2VyKHgsIHB0cikKIAotI2RlZmluZSBfX2dldF91c2VyX2FzbShlcnIseCxwdHIsYndsLHJlZykJXAotX19hc21fXyBfX3ZvbGF0aWxlX18JCQkJXAotICAgICgiMTogbW92ZXMiICNid2wgIiAlMiwlMVxuIgkJCVwKLSAgICAgIjI6XG4iCQkJCQlcCi0gICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJXAotICAgICAiICAgLmV2ZW5cbiIJCQkJXAotICAgICAiMzogbW92ZWwgJTMsJTBcbiIJCQkJXAotICAgICAiICAgc3ViIiAjYndsICIgJTEsJTFcbiIJCQlcCi0gICAgICIgICBqcmEgMmJcbiIJCQkJXAotICAgICAiLnByZXZpb3VzXG4iCQkJCVwKLSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCVwKLSAgICAgIiAgIC5hbGlnbiA0XG4iCQkJCVwKLSAgICAgIiAgIC5sb25nIDFiLDNiXG4iCQkJCVwKLSAgICAgIi5wcmV2aW91cyIJCQkJXAotICAgICA6ICI9ZCIoZXJyKSwgcmVnKHgpCQkJXAotICAgICA6ICJtIigqKHB0cikpLCAiaSIgKC1FRkFVTFQpLCAiMCIoMCkpCit1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbik7Cit1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pOwogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKLV9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRtcDsKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotCSgiICAgdHN0bCAlMlxuIgotCSAiICAgamVxIDJmXG4iCi0JICIxOiBtb3Zlc2wgKCUxKSssJTNcbiIKLQkgIiAgIG1vdmVsICUzLCglMCkrXG4iCi0JICIgICBzdWJxbCAjMSwlMlxuIgotCSAiICAgam5lIDFiXG4iCi0JICIyOiBtb3ZlbCAlNCwlMlxuIgotCSAiICAgYmNsciAjMSwlMlxuIgotCSAiICAgamVxIDRmXG4iCi0JICIzOiBtb3Zlc3cgKCUxKSssJTNcbiIKLQkgIiAgIG1vdmV3ICUzLCglMCkrXG4iCi0JICI0OiBiY2xyICMwLCUyXG4iCi0JICIgICBqZXEgNmZcbiIKLQkgIjU6IG1vdmVzYiAoJTEpKywlM1xuIgotCSAiICAgbW92ZWIgJTMsKCUwKStcbiIKLQkgIjY6XG4iCi0JICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICIgICAuZXZlblxuIgotCSAiNzogbW92ZWwgJTIsJSVkMFxuIgotCSAiNzE6Y2xybCAoJTApK1xuIgotCSAiICAgc3VicWwgIzEsJSVkMFxuIgotCSAiICAgam5lIDcxYlxuIgotCSAiICAgbHNsbCAjMiwlMlxuIgotCSAiICAgYWRkbCAlNCwlMlxuIgotCSAiICAgYnRzdCAjMSwlNFxuIgotCSAiICAgam5lIDgxZlxuIgotCSAiICAgYnRzdCAjMCwlNFxuIgotCSAiICAgam5lIDkxZlxuIgotCSAiICAganJhIDZiXG4iCi0JICI4OiBhZGRxbCAjMiwlMlxuIgotCSAiODE6Y2xydyAoJTApK1xuIgotCSAiICAgYnRzdCAjMCwlNFxuIgotCSAiICAgam5lIDkxZlxuIgotCSAiICAganJhIDZiXG4iCi0JICI5OiBhZGRxbCAjMSwlMlxuIgotCSAiOTE6Y2xyYiAoJTApK1xuIgotCSAiICAganJhIDZiXG4iCi0gICAgICAgICAiLnByZXZpb3VzXG4iCi0JICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICIgICAuYWxpZ24gNFxuIgotCSAiICAgLmxvbmcgMWIsN2JcbiIKLQkgIiAgIC5sb25nIDNiLDhiXG4iCi0JICIgICAubG9uZyA1Yiw5YlxuIgotCSAiLnByZXZpb3VzIgotCSA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pLCAiPSZkIih0bXApCi0JIDogImQiKG4gJiAzKSwgIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIobi80KQotCSA6ICJkMCIsICJtZW1vcnkiKTsKLSAgICByZXR1cm4gbjsKLX0KLQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCi1fX2dlbmVyaWNfY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQotewotICAgIHVuc2lnbmVkIGxvbmcgdG1wOwotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0JKCIgICB0c3RsICUyXG4iCi0JICIgICBqZXEgM2ZcbiIKLQkgIjE6IG1vdmVsICglMSkrLCUzXG4iCi0JICIyMjptb3Zlc2wgJTMsKCUwKStcbiIKLQkgIjI6IHN1YnFsICMxLCUyXG4iCi0JICIgICBqbmUgMWJcbiIKLQkgIjM6IG1vdmVsICU0LCUyXG4iCi0JICIgICBiY2xyICMxLCUyXG4iCi0JICIgICBqZXEgNGZcbiIKLQkgIiAgIG1vdmV3ICglMSkrLCUzXG4iCi0JICIyNDptb3Zlc3cgJTMsKCUwKStcbiIKLQkgIjQ6IGJjbHIgIzAsJTJcbiIKLQkgIiAgIGplcSA1ZlxuIgotCSAiICAgbW92ZWIgKCUxKSssJTNcbiIKLQkgIjI1Om1vdmVzYiAlMywoJTApK1xuIgotCSAiNTpcbiIKLQkgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkgIiAgIC5ldmVuXG4iCi0JICI2MDphZGRxbCAjMSwlMlxuIgotCSAiNjogbHNsbCAjMiwlMlxuIgotCSAiICAgYWRkbCAlNCwlMlxuIgotCSAiICAganJhIDViXG4iCi0JICI3OiBhZGRxbCAjMiwlMlxuIgotCSAiICAganJhIDViXG4iCi0JICI4OiBhZGRxbCAjMSwlMlxuIgotCSAiICAganJhIDViXG4iCi0JICIucHJldmlvdXNcbiIKLQkgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgIiAgIC5hbGlnbiA0XG4iCi0JICIgICAubG9uZyAxYiw2MGJcbiIKLQkgIiAgIC5sb25nIDIyYiw2YlxuIgotCSAiICAgLmxvbmcgMmIsNmJcbiIKLQkgIiAgIC5sb25nIDI0Yiw3YlxuIgotCSAiICAgLmxvbmcgM2IsNjBiXG4iCi0JICIgICAubG9uZyA0Yiw3YlxuIgotCSAiICAgLmxvbmcgMjViLDhiXG4iCi0JICIgICAubG9uZyA1Yiw4YlxuIgotCSAiLnByZXZpb3VzIgotCSA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pLCAiPSZkIih0bXApCi0JIDogInIiKG4gJiAzKSwgIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIobiAvIDQpCi0JIDogIm1lbW9yeSIpOwotICAgIHJldHVybiBuOwotfQotCi0jZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfYmlnKHRvLCBmcm9tLCBuLCBmaXh1cCwgY29weSkJXAotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCQkJCVwKLQkoIjEwOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgkJCVwKLQkgIiAgICBtb3ZlbCAlJWQwLCglMCkrXG4iCQkJXAotCSAiICAgIHN1YnFsICMxLCUyXG4iCQkJCVwKLQkgIiAgICBqbmUgMTBiXG4iCQkJCVwKLQkgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIJCQlcCi0JICIgICAgLmV2ZW5cbiIJCQkJCVwKLQkgIjExOiBtb3ZlbCAlMiwlJWQwXG4iCQkJCVwKLQkgIjEzOiBjbHJsICglMCkrXG4iCQkJCVwKLQkgIiAgICBzdWJxbCAjMSwlJWQwXG4iCQkJCVwKLQkgIiAgICBqbmUgMTNiXG4iCQkJCVwKLQkgIiAgICBsc2xsICMyLCUyXG4iCQkJCVwKLQkgZml4dXAgIlxuIgkJCQkJXAotCSAiICAgIGpyYSAxMmZcbiIJCQkJXAotCSAiLnByZXZpb3VzXG4iCQkJCQlcCi0JICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCQkJXAotCSAiICAgIC5hbGlnbiA0XG4iCQkJCVwKLQkgIiAgICAubG9uZyAxMGIsMTFiXG4iCQkJCVwKLQkgIi5wcmV2aW91c1xuIgkJCQkJXAotCSBjb3B5ICJcbiIJCQkJCVwKLQkgIjEyOiIJCQkJCQlcCi0JIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikJCVwKLQkgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIihuLzQpCQkJXAotCSA6ICJkMCIsICJtZW1vcnkiKQotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZwogX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLSAgICBzd2l0Y2ggKG4pIHsKLSAgICBjYXNlIDA6Ci0JYnJlYWs7Ci0gICAgY2FzZSAxOgotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JICAgICgiMTogbW92ZXNiICglMSkrLCUlZDBcbiIKLQkgICAgICIgICBtb3ZlYiAlJWQwLCglMCkrXG4iCi0JICAgICAiMjpcbiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICIzOiBhZGRxbCAjMSwlMlxuIgotCSAgICAgIiAgIGNscmIgKCUwKStcbiIKLQkgICAgICIgICBqcmEgMmJcbiIKLQkgICAgICIucHJldmlvdXNcbiIKLQkgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICAgICAiICAgLmFsaWduIDRcbiIKLQkgICAgICIgICAubG9uZyAxYiwzYlxuIgotCSAgICAgIi5wcmV2aW91cyIKLQkgICAgIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikKLQkgICAgIDogIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIoMCkKLQkgICAgIDogImQwIiwgIm1lbW9yeSIpOwotCWJyZWFrOwotICAgIGNhc2UgMjoKLQlfX2FzbV9fIF9fdm9sYXRpbGVfXwotCSAgICAoIjE6IG1vdmVzdyAoJTEpKywlJWQwXG4iCi0JICAgICAiICAgbW92ZXcgJSVkMCwoJTApK1xuIgotCSAgICAgIjI6XG4iCi0JICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgotCSAgICAgIiAgIC5ldmVuXG4iCi0JICAgICAiMzogYWRkcWwgIzIsJTJcbiIKLQkgICAgICIgICBjbHJ3ICglMCkrXG4iCi0JICAgICAiICAganJhIDJiXG4iCi0JICAgICAiLnByZXZpb3VzXG4iCi0JICAgICAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgotCSAgICAgIiAgIC5hbGlnbiA0XG4iCi0JICAgICAiICAgLmxvbmcgMWIsM2JcbiIKLQkgICAgICIucHJldmlvdXMiCi0JICAgICA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pCi0JICAgICA6ICIwIih0byksICIxIihmcm9tKSwgIjIiKDApCi0JICAgICA6ICJkMCIsICJtZW1vcnkiKTsKLQlicmVhazsKLSAgICBjYXNlIDM6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIxOiBtb3Zlc3cgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmV3ICUlZDAsKCUwKStcbiIKLQkgICAgICIyOiBtb3Zlc2IgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmViICUlZDAsKCUwKStcbiIKLQkgICAgICIzOiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICI0OiBhZGRxbCAjMiwlMlxuIgotCSAgICAgIiAgIGNscncgKCUwKStcbiIKLQkgICAgICI1OiBhZGRxbCAjMSwlMlxuIgotCSAgICAgIiAgIGNscmIgKCUwKStcbiIKLQkgICAgICIgICBqcmEgM2JcbiIKLQkgICAgICIucHJldmlvdXNcbiIKLQkgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICAgICAiICAgLmFsaWduIDRcbiIKLQkgICAgICIgICAubG9uZyAxYiw0YlxuIgotCSAgICAgIiAgIC5sb25nIDJiLDViXG4iCi0JICAgICAiLnByZXZpb3VzIgotCSAgICAgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQotCSAgICAgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIigwKQotCSAgICAgOiAiZDAiLCAibWVtb3J5Iik7Ci0JYnJlYWs7Ci0gICAgY2FzZSA0OgotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JICAgICgiMTogbW92ZXNsICglMSkrLCUlZDBcbiIKLQkgICAgICIgICBtb3ZlbCAlJWQwLCglMCkrXG4iCi0JICAgICAiMjoiCi0JICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgotCSAgICAgIiAgIC5ldmVuXG4iCi0JICAgICAiMzogYWRkcWwgIzQsJTJcbiIKLQkgICAgICIgICBjbHJsICglMCkrXG4iCi0JICAgICAiICAganJhIDJiXG4iCi0JICAgICAiLnByZXZpb3VzXG4iCi0JICAgICAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgotCSAgICAgIiAgIC5hbGlnbiA0XG4iCi0JICAgICAiICAgLmxvbmcgMWIsM2JcbiIKLQkgICAgICIucHJldmlvdXMiCi0JICAgICA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pCi0JICAgICA6ICIwIih0byksICIxIihmcm9tKSwgIjIiKDApCi0JICAgICA6ICJkMCIsICJtZW1vcnkiKTsKLQlicmVhazsKLSAgICBjYXNlIDg6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIxOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICIyOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICIzOiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICI0OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICI1OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICIgICBqcmEgM2JcbiIKLQkgICAgICIucHJldmlvdXNcbiIKLQkgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICAgICAiICAgLmFsaWduIDRcbiIKLQkgICAgICIgICAubG9uZyAxYiw0YlxuIgotCSAgICAgIiAgIC5sb25nIDJiLDViXG4iCi0JICAgICAiLnByZXZpb3VzIgotCSAgICAgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQotCSAgICAgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIigwKQotCSAgICAgOiAiZDAiLCAibWVtb3J5Iik7Ci0JYnJlYWs7Ci0gICAgY2FzZSAxMjoKLQlfX2FzbV9fIF9fdm9sYXRpbGVfXwotCSAgICAoIjE6IG1vdmVzbCAoJTEpKywlJWQwXG4iCi0JICAgICAiICAgbW92ZWwgJSVkMCwoJTApK1xuIgotCSAgICAgIjI6IG1vdmVzbCAoJTEpKywlJWQwXG4iCi0JICAgICAiICAgbW92ZWwgJSVkMCwoJTApK1xuIgotCSAgICAgIjM6IG1vdmVzbCAoJTEpKywlJWQwXG4iCi0JICAgICAiICAgbW92ZWwgJSVkMCwoJTApK1xuIgotCSAgICAgIjQ6IgotCSAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkgICAgICIgICAuZXZlblxuIgotCSAgICAgIjU6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiICAgY2xybCAoJTApK1xuIgotCSAgICAgIjY6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiICAgY2xybCAoJTApK1xuIgotCSAgICAgIjc6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiICAgY2xybCAoJTApK1xuIgotCSAgICAgIiAgIGpyYSA0YlxuIgotCSAgICAgIi5wcmV2aW91c1xuIgotCSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgICAgICIgICAuYWxpZ24gNFxuIgotCSAgICAgIiAgIC5sb25nIDFiLDViXG4iCi0JICAgICAiICAgLmxvbmcgMmIsNmJcbiIKLQkgICAgICIgICAubG9uZyAzYiw3YlxuIgotCSAgICAgIi5wcmV2aW91cyIKLQkgICAgIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikKLQkgICAgIDogIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIoMCkKLQkgICAgIDogImQwIiwgIm1lbW9yeSIpOwotCWJyZWFrOwotICAgIGNhc2UgMTY6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIxOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICIyOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICIzOiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICI0OiBtb3Zlc2wgKCUxKSssJSVkMFxuIgotCSAgICAgIiAgIG1vdmVsICUlZDAsKCUwKStcbiIKLQkgICAgICI1OiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICI2OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICI3OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICI4OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICI5OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGNscmwgKCUwKStcbiIKLQkgICAgICIgICBqcmEgNWJcbiIKLQkgICAgICIucHJldmlvdXNcbiIKLQkgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICAgICAiICAgLmFsaWduIDRcbiIKLQkgICAgICIgICAubG9uZyAxYiw2YlxuIgotCSAgICAgIiAgIC5sb25nIDJiLDdiXG4iCi0JICAgICAiICAgLmxvbmcgM2IsOGJcbiIKLQkgICAgICIgICAubG9uZyA0Yiw5YlxuIgotCSAgICAgIi5wcmV2aW91cyIKLQkgICAgIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikKLQkgICAgIDogIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIoMCkKLQkgICAgIDogImQwIiwgIm1lbW9yeSIpOwotCWJyZWFrOwotICAgIGRlZmF1bHQ6Ci0Jc3dpdGNoIChuICYgMykgewotCWNhc2UgMDoKLQkgICAgX19jb3B5X2Zyb21fdXNlcl9iaWcodG8sIGZyb20sIG4sICIiLCAiIik7Ci0JICAgIGJyZWFrOworCXVuc2lnbmVkIGxvbmcgcmVzID0gMCwgdG1wOworCisJLyogbGltaXQgdGhlIGlubGluZWQgdmVyc2lvbiB0byAzIG1vdmVzICovCisJaWYgKG4gPT0gMTEgfHwgbiA+IDEyKQorCQlyZXR1cm4gX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKKworCXN3aXRjaCAobikgewogCWNhc2UgMToKLQkgICAgX19jb3B5X2Zyb21fdXNlcl9iaWcodG8sIGZyb20sIG4sCi0JCQkJIC8qIGZpeHVwICovCi0JCQkJICIxOiBhZGRxbCAjMSwlMlxuIgotCQkJCSAiICAgY2xyYiAoJTApKyIsCi0JCQkJIC8qIGNvcHkgKi8KLQkJCQkgIjI6IG1vdmVzYiAoJTEpKywlJWQwXG4iCi0JCQkJICIgICBtb3ZlYiAlJWQwLCglMCkrXG4iCi0JCQkJICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JCQkJICIgICAubG9uZyAyYiwxYlxuIgotCQkJCSAiLnByZXZpb3VzIik7Ci0JICAgIGJyZWFrOworCQlfX2dldF91c2VyX2FzbShyZXMsICoodTggKil0bywgKHU4ICopZnJvbSwgdTgsIGIsIGQsIDEpOworCQlyZXR1cm4gcmVzOwogCWNhc2UgMjoKLQkgICAgX19jb3B5X2Zyb21fdXNlcl9iaWcodG8sIGZyb20sIG4sCi0JCQkJIC8qIGZpeHVwICovCi0JCQkJICIxOiBhZGRxbCAjMiwlMlxuIgotCQkJCSAiICAgY2xydyAoJTApKyIsCi0JCQkJIC8qIGNvcHkgKi8KLQkJCQkgIjI6IG1vdmVzdyAoJTEpKywlJWQwXG4iCi0JCQkJICIgICBtb3ZldyAlJWQwLCglMCkrXG4iCi0JCQkJICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JCQkJICIgICAubG9uZyAyYiwxYlxuIgotCQkJCSAiLnByZXZpb3VzIik7Ci0JICAgIGJyZWFrOwotCWNhc2UgMzoKLQkgICAgX19jb3B5X2Zyb21fdXNlcl9iaWcodG8sIGZyb20sIG4sCi0JCQkJIC8qIGZpeHVwICovCi0JCQkJICIxOiBhZGRxbCAjMiwlMlxuIgotCQkJCSAiICAgY2xydyAoJTApK1xuIgotCQkJCSAiMjogYWRkcWwgIzEsJTJcbiIKLQkJCQkgIiAgIGNscmIgKCUwKSsiLAotCQkJCSAvKiBjb3B5ICovCi0JCQkJICIzOiBtb3Zlc3cgKCUxKSssJSVkMFxuIgotCQkJCSAiICAgbW92ZXcgJSVkMCwoJTApK1xuIgotCQkJCSAiNDogbW92ZXNiICglMSkrLCUlZDBcbiIKLQkJCQkgIiAgIG1vdmViICUlZDAsKCUwKStcbiIKLQkJCQkgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkJCQkgIiAgIC5sb25nIDNiLDFiXG4iCi0JCQkJICIgICAubG9uZyA0YiwyYlxuIgotCQkJCSAiLnByZXZpb3VzIik7Ci0JICAgIGJyZWFrOworCQlfX2dldF91c2VyX2FzbShyZXMsICoodTE2ICopdG8sICh1MTYgKilmcm9tLCB1MTYsIHcsIGQsIDIpOworCQlyZXR1cm4gcmVzOworCWNhc2UgNDoKKwkJX19nZXRfdXNlcl9hc20ocmVzLCAqKHUzMiAqKXRvLCAodTMyICopZnJvbSwgdTMyLCBsLCByLCA0KTsKKwkJcmV0dXJuIHJlczsKIAl9Ci0JYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBuOworCisJYXNtIHZvbGF0aWxlICgiXG4iCisJCSIJLmlmbmRlZgkuTGZyb21fdXNlclxuIgorCQkiCS5zZXQJLkxmcm9tX3VzZXIsMVxuIgorCQkiCS5tYWNybwljb3B5X2Zyb21fdXNlciB0byxmcm9tLHRtcFxuIgorCQkiCS5pZgkuTGNudCA+PSA0XG4iCisJCSIxOgltb3Zlcy5sCShcXGZyb20pKyxcXHRtcFxuIgorCQkiCW1vdmUubAlcXHRtcCwoXFx0bykrXG4iCisJCSIJLnNldAkuTGNudCwuTGNudC00XG4iCisJCSIJLmVsc2VpZgkuTGNudCAmIDJcbiIKKwkJIjE6CW1vdmVzLncJKFxcZnJvbSkrLFxcdG1wXG4iCisJCSIJbW92ZS53CVxcdG1wLChcXHRvKStcbiIKKwkJIgkuc2V0CS5MY250LC5MY250LTJcbiIKKwkJIgkuZWxzZWlmCS5MY250ICYgMVxuIgorCQkiMToJbW92ZXMuYgkoXFxmcm9tKSssXFx0bXBcbiIKKwkJIgltb3ZlLmIJXFx0bXAsKFxcdG8pK1xuIgorCQkiCS5zZXQJLkxjbnQsLkxjbnQtMVxuIgorCQkiCS5lbHNlXG4iCisJCSIJLmV4aXRtXG4iCisJCSIJLmVuZGlmXG4iCisJCSJcbiIKKwkJIgkuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisJCSIJLmFsaWduCTRcbiIKKwkJIgkubG9uZwkxYiwzZlxuIgorCQkiCS5wcmV2aW91c1xuIgorCQkiCS5lbmRtXG4iCisJCSIJLmVuZGlmXG4iCisJCSJcbiIKKwkJIgkuc2V0CS5MY250LCVjNFxuIgorCQkiCWNvcHlfZnJvbV91c2VyICUxLCUyLCUzXG4iCisJCSIJY29weV9mcm9tX3VzZXIgJTEsJTIsJTNcbiIKKwkJIgljb3B5X2Zyb21fdXNlciAlMSwlMiwlM1xuIgorCQkiMjpcbiIKKwkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCisJCSIJLmV2ZW5cbiIKKwkJIjM6CW1vdmVxLmwJJTQsJTBcbiIKKwkJIgltb3ZlLmwJJTUsJTFcbiIKKwkJIgkucmVwdAklYzQgLyA0XG4iCisJCSIJY2xyLmwJKCUxKStcbiIKKwkJIgkuZW5kclxuIgorCQkiCS5pZgklYzQgJiAyXG4iCisJCSIJY2xyLncJKCUxKStcbiIKKwkJIgkuZW5kaWZcbiIKKwkJIgkuaWYJJWM0ICYgMVxuIgorCQkiCWNsci5iCSglMSkrXG4iCisJCSIJLmVuZGlmXG4iCisJCSIJanJhCTJiXG4iCisJCSIJLnByZXZpb3VzXG4iCisJCTogIityIiAocmVzKSwgIithIiAodG8pLCAiK2EiIChmcm9tKSwgIj0mZCIgKHRtcCkKKwkJOiAiaSIgKG4pLCAiZyIgKHRvKQorCQk6ICJtZW1vcnkiKTsKKworCXJldHVybiByZXM7CiB9CiAKLSNkZWZpbmUgX19jb3B5X3RvX3VzZXJfYmlnKHRvLCBmcm9tLCBuLCBmaXh1cCwgY29weSkJXAotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCQkJCVwKLQkoIjEwOiBtb3ZlbCAoJTEpKywlJWQwXG4iCQkJXAotCSAiMzE6IG1vdmVzbCAlJWQwLCglMCkrXG4iCQkJXAotCSAiMTE6IHN1YnFsICMxLCUyXG4iCQkJCVwKLQkgIiAgICBqbmUgMTBiXG4iCQkJCVwKLQkgIjQxOlxuIgkJCQkJXAotCSAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJCVwKLQkgIiAgIC5ldmVuXG4iCQkJCQlcCi0JICIyMjogYWRkcWwgIzEsJTJcbiIJCQkJXAotCSAiMTI6IGxzbGwgIzIsJTJcbiIJCQkJXAotCSBmaXh1cCAiXG4iCQkJCQlcCi0JICIgICAganJhIDEzZlxuIgkJCQlcCi0JICIucHJldmlvdXNcbiIJCQkJCVwKLQkgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIJCQlcCi0JICIgICAgLmFsaWduIDRcbiIJCQkJXAotCSAiICAgIC5sb25nIDEwYiwyMmJcbiIJCQkJXAotCSAiICAgIC5sb25nIDMxYiwxMmJcbiIJCQkJXAotCSAiICAgIC5sb25nIDExYiwxMmJcbiIJCQkJXAotCSAiICAgIC5sb25nIDQxYiwyMmJcbiIJCQkJXAotCSAiLnByZXZpb3VzXG4iCQkJCQlcCi0JIGNvcHkgIlxuIgkJCQkJXAotCSAiMTM6IgkJCQkJCVwKLQkgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQkJXAotCSA6ICIwIih0byksICIxIihmcm9tKSwgIjIiKG4vNCkJCQlcCi0JIDogImQwIiwgIm1lbW9yeSIpCi0KLSNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWMgX19jb3B5X3RvX3VzZXIKLSNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyBfX2NvcHlfZnJvbV91c2VyCi0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZworc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nCiBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLSAgICBzd2l0Y2ggKG4pIHsKLSAgICBjYXNlIDA6Ci0JYnJlYWs7Ci0gICAgY2FzZSAxOgotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JICAgICgiICAgbW92ZWIgKCUxKSssJSVkMFxuIgotCSAgICAgIjIxOm1vdmVzYiAlJWQwLCglMCkrXG4iCi0JICAgICAiMTpcbiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICIyOiBhZGRxbCAjMSwlMlxuIgotCSAgICAgIiAgIGpyYSAxYlxuIgotCSAgICAgIi5wcmV2aW91c1xuIgotCSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgICAgICIgICAuYWxpZ24gNFxuICAiCi0JICAgICAiICAgLmxvbmcgMjFiLDJiXG4iCi0JICAgICAiICAgLmxvbmcgMWIsMmJcbiIKLQkgICAgICIucHJldmlvdXMiCi0JICAgICA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pCi0JICAgICA6ICIwIih0byksICIxIihmcm9tKSwgIjIiKDApCi0JICAgICA6ICJkMCIsICJtZW1vcnkiKTsKLQlicmVhazsKLSAgICBjYXNlIDI6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIgICBtb3ZldyAoJTEpKywlJWQwXG4iCi0JICAgICAiMjE6bW92ZXN3ICUlZDAsKCUwKStcbiIKLQkgICAgICIxOlxuIgotCSAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkgICAgICIgICAuZXZlblxuIgotCSAgICAgIjI6IGFkZHFsICMyLCUyXG4iCi0JICAgICAiICAganJhIDFiXG4iCi0JICAgICAiLnByZXZpb3VzXG4iCi0JICAgICAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgotCSAgICAgIiAgIC5hbGlnbiA0XG4iCi0JICAgICAiICAgLmxvbmcgMjFiLDJiXG4iCi0JICAgICAiICAgLmxvbmcgMWIsMmJcbiIKLQkgICAgICIucHJldmlvdXMiCi0JICAgICA6ICI9YSIodG8pLCAiPWEiKGZyb20pLCAiPWQiKG4pCi0JICAgICA6ICIwIih0byksICIxIihmcm9tKSwgIjIiKDApCi0JICAgICA6ICJkMCIsICJtZW1vcnkiKTsKLQlicmVhazsKLSAgICBjYXNlIDM6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIgICBtb3ZldyAoJTEpKywlJWQwXG4iCi0JICAgICAiMjE6bW92ZXN3ICUlZDAsKCUwKStcbiIKLQkgICAgICIxOiBtb3ZlYiAoJTEpKywlJWQwXG4iCi0JICAgICAiMjI6bW92ZXNiICUlZDAsKCUwKStcbiIKLQkgICAgICIyOlxuIgotCSAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkgICAgICIgICAuZXZlblxuIgotCSAgICAgIjM6IGFkZHFsICMyLCUyXG4iCi0JICAgICAiNDogYWRkcWwgIzEsJTJcbiIKLQkgICAgICIgICBqcmEgMmJcbiIKLQkgICAgICIucHJldmlvdXNcbiIKLQkgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICAgICAiICAgLmFsaWduIDRcbiIKLQkgICAgICIgICAubG9uZyAyMWIsM2JcbiIKLQkgICAgICIgICAubG9uZyAxYiwzYlxuIgotCSAgICAgIiAgIC5sb25nIDIyYiw0YlxuIgotCSAgICAgIiAgIC5sb25nIDJiLDRiXG4iCi0JICAgICAiLnByZXZpb3VzIgotCSAgICAgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQotCSAgICAgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIigwKQotCSAgICAgOiAiZDAiLCAibWVtb3J5Iik7Ci0JYnJlYWs7Ci0gICAgY2FzZSA0OgotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JICAgICgiICAgbW92ZWwgKCUxKSssJSVkMFxuIgotCSAgICAgIjIxOm1vdmVzbCAlJWQwLCglMCkrXG4iCi0JICAgICAiMTpcbiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICIyOiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGpyYSAxYlxuIgotCSAgICAgIi5wcmV2aW91c1xuIgotCSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgICAgICIgICAuYWxpZ24gNFxuIgotCSAgICAgIiAgIC5sb25nIDIxYiwyYlxuIgotCSAgICAgIiAgIC5sb25nIDFiLDJiXG4iCi0JICAgICAiLnByZXZpb3VzIgotCSAgICAgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQotCSAgICAgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIigwKQotCSAgICAgOiAiZDAiLCAibWVtb3J5Iik7Ci0JYnJlYWs7Ci0gICAgY2FzZSA4OgotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JICAgICgiICAgbW92ZWwgKCUxKSssJSVkMFxuIgotCSAgICAgIjIxOm1vdmVzbCAlJWQwLCglMCkrXG4iCi0JICAgICAiMTogbW92ZWwgKCUxKSssJSVkMFxuIgotCSAgICAgIjIyOm1vdmVzbCAlJWQwLCglMCkrXG4iCi0JICAgICAiMjpcbiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICIzOiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIjQ6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiICAganJhIDJiXG4iCi0JICAgICAiLnByZXZpb3VzXG4iCi0JICAgICAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgotCSAgICAgIiAgIC5hbGlnbiA0XG4iCi0JICAgICAiICAgLmxvbmcgMjFiLDNiXG4iCi0JICAgICAiICAgLmxvbmcgMWIsM2JcbiIKLQkgICAgICIgICAubG9uZyAyMmIsNGJcbiIKLQkgICAgICIgICAubG9uZyAyYiw0YlxuIgotCSAgICAgIi5wcmV2aW91cyIKLQkgICAgIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikKLQkgICAgIDogIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIoMCkKLQkgICAgIDogImQwIiwgIm1lbW9yeSIpOwotCWJyZWFrOwotICAgIGNhc2UgMTI6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIgICBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjE6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIxOiBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjI6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIyOiBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjM6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIzOlxuIgotCSAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkgICAgICIgICAuZXZlblxuIgotCSAgICAgIjQ6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiNTogYWRkcWwgIzQsJTJcbiIKLQkgICAgICI2OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGpyYSAzYlxuIgotCSAgICAgIi5wcmV2aW91c1xuIgotCSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgICAgICIgICAuYWxpZ24gNFxuIgotCSAgICAgIiAgIC5sb25nIDIxYiw0YlxuIgotCSAgICAgIiAgIC5sb25nIDFiLDRiXG4iCi0JICAgICAiICAgLmxvbmcgMjJiLDViXG4iCi0JICAgICAiICAgLmxvbmcgMmIsNWJcbiIKLQkgICAgICIgICAubG9uZyAyM2IsNmJcbiIKLQkgICAgICIgICAubG9uZyAzYiw2YlxuIgotCSAgICAgIi5wcmV2aW91cyIKLQkgICAgIDogIj1hIih0byksICI9YSIoZnJvbSksICI9ZCIobikKLQkgICAgIDogIjAiKHRvKSwgIjEiKGZyb20pLCAiMiIoMCkKLQkgICAgIDogImQwIiwgIm1lbW9yeSIpOwotCWJyZWFrOwotICAgIGNhc2UgMTY6Ci0JX19hc21fXyBfX3ZvbGF0aWxlX18KLQkgICAgKCIgICBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjE6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIxOiBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjI6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIyOiBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjM6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICIzOiBtb3ZlbCAoJTEpKywlJWQwXG4iCi0JICAgICAiMjQ6bW92ZXNsICUlZDAsKCUwKStcbiIKLQkgICAgICI0OiIKLQkgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICAgICAiICAgLmV2ZW5cbiIKLQkgICAgICI1OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIjY6IGFkZHFsICM0LCUyXG4iCi0JICAgICAiNzogYWRkcWwgIzQsJTJcbiIKLQkgICAgICI4OiBhZGRxbCAjNCwlMlxuIgotCSAgICAgIiAgIGpyYSA0YlxuIgotCSAgICAgIi5wcmV2aW91c1xuIgotCSAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKLQkgICAgICIgICAuYWxpZ24gNFxuIgotCSAgICAgIiAgIC5sb25nIDIxYiw1YlxuIgotCSAgICAgIiAgIC5sb25nIDFiLDViXG4iCi0JICAgICAiICAgLmxvbmcgMjJiLDZiXG4iCi0JICAgICAiICAgLmxvbmcgMmIsNmJcbiIKLQkgICAgICIgICAubG9uZyAyM2IsN2JcbiIKLQkgICAgICIgICAubG9uZyAzYiw3YlxuIgotCSAgICAgIiAgIC5sb25nIDI0Yiw4YlxuIgotCSAgICAgIiAgIC5sb25nIDRiLDhiXG4iCi0JICAgICAiLnByZXZpb3VzIgotCSAgICAgOiAiPWEiKHRvKSwgIj1hIihmcm9tKSwgIj1kIihuKQotCSAgICAgOiAiMCIodG8pLCAiMSIoZnJvbSksICIyIigwKQotCSAgICAgOiAiZDAiLCAibWVtb3J5Iik7Ci0JYnJlYWs7Ci0gICAgZGVmYXVsdDoKLQlzd2l0Y2ggKG4gJiAzKSB7Ci0JY2FzZSAwOgotCSAgICBfX2NvcHlfdG9fdXNlcl9iaWcodG8sIGZyb20sIG4sICIiLCAiIik7Ci0JICAgIGJyZWFrOworCXVuc2lnbmVkIGxvbmcgcmVzID0gMCwgdG1wOworCisJLyogbGltaXQgdGhlIGlubGluZWQgdmVyc2lvbiB0byAzIG1vdmVzICovCisJaWYgKG4gPT0gMTEgfHwgbiA+IDEyKQorCQlyZXR1cm4gX19nZW5lcmljX2NvcHlfdG9fdXNlcih0bywgZnJvbSwgbik7CisKKwlzd2l0Y2ggKG4pIHsKIAljYXNlIDE6Ci0JICAgIF9fY29weV90b191c2VyX2JpZyh0bywgZnJvbSwgbiwKLQkJCSAgICAgICAvKiBmaXh1cCAqLwotCQkJICAgICAgICIxOiBhZGRxbCAjMSwlMiIsCi0JCQkgICAgICAgLyogY29weSAqLwotCQkJICAgICAgICIgICBtb3ZlYiAoJTEpKywlJWQwXG4iCi0JCQkgICAgICAgIjIyOm1vdmVzYiAlJWQwLCglMCkrXG4iCi0JCQkgICAgICAgIjI6IgotCQkJICAgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JCQkgICAgICAgIiAgIC5sb25nIDIyYiwxYlxuIgotCQkJICAgICAgICIgICAubG9uZyAyYiwxYlxuIgotCQkJICAgICAgICIucHJldmlvdXMiKTsKLQkgICAgYnJlYWs7CisJCV9fcHV0X3VzZXJfYXNtKHJlcywgKih1OCAqKWZyb20sICh1OCAqKXRvLCBiLCBkLCAxKTsKKwkJcmV0dXJuIHJlczsKIAljYXNlIDI6Ci0JICAgIF9fY29weV90b191c2VyX2JpZyh0bywgZnJvbSwgbiwKLQkJCSAgICAgICAvKiBmaXh1cCAqLwotCQkJICAgICAgICIxOiBhZGRxbCAjMiwlMiIsCi0JCQkgICAgICAgLyogY29weSAqLwotCQkJICAgICAgICIgICBtb3ZldyAoJTEpKywlJWQwXG4iCi0JCQkgICAgICAgIjIyOm1vdmVzdyAlJWQwLCglMCkrXG4iCi0JCQkgICAgICAgIjI6IgotCQkJICAgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JCQkgICAgICAgIiAgIC5sb25nIDIyYiwxYlxuIgotCQkJICAgICAgICIgICAubG9uZyAyYiwxYlxuIgotCQkJICAgICAgICIucHJldmlvdXMiKTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAzOgotCSAgICBfX2NvcHlfdG9fdXNlcl9iaWcodG8sIGZyb20sIG4sCi0JCQkgICAgICAgLyogZml4dXAgKi8KLQkJCSAgICAgICAiMTogYWRkcWwgIzIsJTJcbiIKLQkJCSAgICAgICAiMjogYWRkcWwgIzEsJTIiLAotCQkJICAgICAgIC8qIGNvcHkgKi8KLQkJCSAgICAgICAiICAgbW92ZXcgKCUxKSssJSVkMFxuIgotCQkJICAgICAgICIyMzptb3Zlc3cgJSVkMCwoJTApK1xuIgotCQkJICAgICAgICIzOiBtb3ZlYiAoJTEpKywlJWQwXG4iCi0JCQkgICAgICAgIjI0Om1vdmVzYiAlJWQwLCglMCkrXG4iCi0JCQkgICAgICAgIjQ6IgotCQkJICAgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JCQkgICAgICAgIiAgIC5sb25nIDIzYiwxYlxuIgotCQkJICAgICAgICIgICAubG9uZyAzYiwxYlxuIgotCQkJICAgICAgICIgICAubG9uZyAyNGIsMmJcbiIKLQkJCSAgICAgICAiICAgLmxvbmcgNGIsMmJcbiIKLQkJCSAgICAgICAiLnByZXZpb3VzIik7Ci0JICAgIGJyZWFrOworCQlfX3B1dF91c2VyX2FzbShyZXMsICoodTE2ICopZnJvbSwgKHUxNiAqKXRvLCB3LCBkLCAyKTsKKwkJcmV0dXJuIHJlczsKKwljYXNlIDQ6CisJCV9fcHV0X3VzZXJfYXNtKHJlcywgKih1MzIgKilmcm9tLCAodTMyICopdG8sIGwsIHIsIDQpOworCQlyZXR1cm4gcmVzOwogCX0KLQlicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIG47CisKKwlhc20gdm9sYXRpbGUgKCJcbiIKKwkJIgkuaWZuZGVmCS5MdG9fdXNlclxuIgorCQkiCS5zZXQJLkx0b191c2VyLDFcbiIKKwkJIgkubWFjcm8JY29weV90b191c2VyIHRvLGZyb20sdG1wXG4iCisJCSIJLmlmCS5MY250ID49IDRcbiIKKwkJIgltb3ZlLmwJKFxcZnJvbSkrLFxcdG1wXG4iCisJCSIxMToJbW92ZXMubAlcXHRtcCwoXFx0bykrXG4iCisJCSIxMjoJLnNldAkuTGNudCwuTGNudC00XG4iCisJCSIJLmVsc2VpZgkuTGNudCAmIDJcbiIKKwkJIgltb3ZlLncJKFxcZnJvbSkrLFxcdG1wXG4iCisJCSIxMToJbW92ZXMudwlcXHRtcCwoXFx0bykrXG4iCisJCSIxMjoJLnNldAkuTGNudCwuTGNudC0yXG4iCisJCSIJLmVsc2VpZgkuTGNudCAmIDFcbiIKKwkJIgltb3ZlLmIJKFxcZnJvbSkrLFxcdG1wXG4iCisJCSIxMToJbW92ZXMuYglcXHRtcCwoXFx0bykrXG4iCisJCSIxMjoJLnNldAkuTGNudCwuTGNudC0xXG4iCisJCSIJLmVsc2VcbiIKKwkJIgkuZXhpdG1cbiIKKwkJIgkuZW5kaWZcbiIKKwkJIlxuIgorCQkiCS5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKKwkJIgkuYWxpZ24JNFxuIgorCQkiCS5sb25nCTExYiwzZlxuIgorCQkiCS5sb25nCTEyYiwzZlxuIgorCQkiCS5wcmV2aW91c1xuIgorCQkiCS5lbmRtXG4iCisJCSIJLmVuZGlmXG4iCisJCSJcbiIKKwkJIgkuc2V0CS5MY250LCVjNFxuIgorCQkiCWNvcHlfdG9fdXNlciAlMSwlMiwlM1xuIgorCQkiCWNvcHlfdG9fdXNlciAlMSwlMiwlM1xuIgorCQkiCWNvcHlfdG9fdXNlciAlMSwlMiwlM1xuIgorCQkiMjpcbiIKKwkJIgkuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCisJCSIJLmV2ZW5cbiIKKwkJIjM6CW1vdmVxLmwJJTQsJTBcbiIKKwkJIglqcmEJMmJcbiIKKwkJIgkucHJldmlvdXNcbiIKKwkJOiAiK3IiIChyZXMpLCAiK2EiICh0byksICIrYSIgKGZyb20pLCAiPSZkIiAodG1wKQorCQk6ICJpIiAobikKKwkJOiAibWVtb3J5Iik7CisKKwlyZXR1cm4gcmVzOwogfQogCi0jZGVmaW5lIGNvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKQkJXAorI2RlZmluZSBfX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKQkJXAogKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8JCQlcCiAgX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbikgOglcCiAgX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKSkKIAotI2RlZmluZSBjb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pCQlcCisjZGVmaW5lIF9fY29weV90b191c2VyKHRvLCBmcm9tLCBuKQkJXAogKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8JCQlcCiAgX19jb25zdGFudF9jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pIDoJCVwKICBfX2dlbmVyaWNfY29weV90b191c2VyKHRvLCBmcm9tLCBuKSkKIAotI2RlZmluZSBfX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKSBjb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbikKLSNkZWZpbmUgX19jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pIGNvcHlfdG9fdXNlcih0bywgZnJvbSwgbikKKyNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWMJCV9fY29weV90b191c2VyCisjZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMJX19jb3B5X2Zyb21fdXNlcgogCi0vKgotICogQ29weSBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcgZnJvbSB1c2Vyc3BhY2UuCi0gKi8KKyNkZWZpbmUgY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4pCV9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4pCisjZGVmaW5lIGNvcHlfdG9fdXNlcih0bywgZnJvbSwgbikJX19jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pCiAKLXN0YXRpYyBpbmxpbmUgbG9uZwotc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KQotewotICAgIGxvbmcgcmVzOwotICAgIGlmIChjb3VudCA9PSAwKSByZXR1cm4gY291bnQ7Ci0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLQkoIjE6IG1vdmVzYiAoJTIpKywlJWQwXG4iCi0JICIxMjptb3ZlYiAlJWQwLCglMSkrXG4iCi0JICIgICBqZXEgMmZcbiIKLQkgIiAgIHN1YnFsICMxLCUzXG4iCi0JICIgICBqbmUgMWJcbiIKLQkgIjI6IHN1YmwgJTMsJTBcbiIKLQkgIjM6XG4iCi0JICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICIgICAuZXZlblxuIgotCSAiNDogbW92ZWwgJTQsJTBcbiIKLQkgIiAgIGpyYSAzYlxuIgotCSAiLnByZXZpb3VzXG4iCi0JICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICIgICAuYWxpZ24gNFxuIgotCSAiICAgLmxvbmcgMWIsNGJcbiIKLQkgIiAgIC5sb25nIDEyYiw0YlxuIgotCSAiLnByZXZpb3VzIgotCSA6ICI9ZCIocmVzKSwgIj1hIihkc3QpLCAiPWEiKHNyYyksICI9ZCIoY291bnQpCi0JIDogImkiKC1FRkFVTFQpLCAiMCIoY291bnQpLCAiMSIoZHN0KSwgIjIiKHNyYyksICIzIihjb3VudCkKLQkgOiAiZDAiLCAibWVtb3J5Iik7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIFJldHVybiB0aGUgc2l6ZSBvZiBhIHN0cmluZyAoaW5jbHVkaW5nIHRoZSBlbmRpbmcgMCkKLSAqCi0gKiBSZXR1cm4gMCBvbiBleGNlcHRpb24sIGEgdmFsdWUgZ3JlYXRlciB0aGFuIE4gaWYgdG9vIGxvbmcKLSAqLwotc3RhdGljIGlubGluZSBsb25nIHN0cm5sZW5fdXNlcihjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIG4pCi17Ci0JbG9uZyByZXM7Ci0KLQlyZXMgPSAtKHVuc2lnbmVkIGxvbmcpc3JjOwotCV9fYXNtX18gX192b2xhdGlsZV9fCi0JCSgiMTpcbiIKLQkJICIgICB0c3RsICUyXG4iCi0JCSAiICAgamVxIDNmXG4iCi0JCSAiMjogbW92ZXNiICglMSkrLCUlZDBcbiIKLQkJICIyMjpcbiIKLQkJICIgICBzdWJxbCAjMSwlMlxuIgotCQkgIiAgIHRzdGIgJSVkMFxuIgotCQkgIiAgIGpuZSAxYlxuIgotCQkgIiAgIGpyYSA0ZlxuIgotCQkgIjM6XG4iCi0JCSAiICAgYWRkcWwgIzEsJTBcbiIKLQkJICI0OlxuIgotCQkgIiAgIGFkZGwgJTEsJTBcbiIKLQkJICI1OlxuIgotCQkgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKLQkJICIgICAuZXZlblxuIgotCQkgIjY6IG1vdmVxICUzLCUwXG4iCi0JCSAiICAganJhIDViXG4iCi0JCSAiLnByZXZpb3VzXG4iCi0JCSAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgotCQkgIiAgIC5hbGlnbiA0XG4iCi0JCSAiICAgLmxvbmcgMmIsNmJcbiIKLQkJICIgICAubG9uZyAyMmIsNmJcbiIKLQkJICIucHJldmlvdXMiCi0JCSA6ICI9ZCIocmVzKSwgIj1hIihzcmMpLCAiPWQiKG4pCi0JCSA6ICJpIigwKSwgIjAiKHJlcyksICIxIihzcmMpLCAiMiIobikKLQkJIDogImQwIik7Ci0JcmV0dXJuIHJlczsKLX0KK2xvbmcgc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyIF9fdXNlciAqc3JjLCBsb25nIGNvdW50KTsKK2xvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgX191c2VyICpzcmMsIGxvbmcgbik7Cit1bnNpZ25lZCBsb25nIGNsZWFyX3VzZXIodm9pZCBfX3VzZXIgKnRvLCB1bnNpZ25lZCBsb25nIG4pOwogCiAjZGVmaW5lIHN0cmxlbl91c2VyKHN0cikgc3Rybmxlbl91c2VyKHN0ciwgMzI3NjcpCiAKLS8qCi0gKiBaZXJvIFVzZXJzcGFjZQotICovCi0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwotY2xlYXJfdXNlcih2b2lkIF9fdXNlciAqdG8sIHVuc2lnbmVkIGxvbmcgbikKLXsKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotCSgiICAgdHN0bCAlMVxuIgotCSAiICAgamVxIDNmXG4iCi0JICIxOiBtb3Zlc2wgJTMsKCUwKStcbiIKLQkgIjI6IHN1YnFsICMxLCUxXG4iCi0JICIgICBqbmUgMWJcbiIKLQkgIjM6IG1vdmVsICUyLCUxXG4iCi0JICIgICBiY2xyICMxLCUxXG4iCi0JICIgICBqZXEgNGZcbiIKLQkgIjI0Om1vdmVzdyAlMywoJTApK1xuIgotCSAiNDogYmNsciAjMCwlMVxuIgotCSAiICAgamVxIDVmXG4iCi0JICIyNTptb3Zlc2IgJTMsKCUwKStcbiIKLQkgIjU6XG4iCi0JICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCi0JICIgICAuZXZlblxuIgotCSAiNjE6YWRkcWwgIzEsJTFcbiIKLQkgIjY6IGxzbGwgIzIsJTFcbiIKLQkgIiAgIGFkZGwgJTIsJTFcbiIKLQkgIiAgIGpyYSA1YlxuIgotCSAiNzogYWRkcWwgIzIsJTFcbiIKLQkgIiAgIGpyYSA1YlxuIgotCSAiODogYWRkcWwgIzEsJTFcbiIKLQkgIiAgIGpyYSA1YlxuIgotCSAiLnByZXZpb3VzXG4iCi0JICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCi0JICIgICAuYWxpZ24gNFxuIgotCSAiICAgLmxvbmcgMWIsNjFiXG4iCi0JICIgICAubG9uZyAyYiw2YlxuIgotCSAiICAgLmxvbmcgM2IsNjFiXG4iCi0JICIgICAubG9uZyAyNGIsN2JcbiIKLQkgIiAgIC5sb25nIDRiLDdiXG4iCi0JICIgICAubG9uZyAyNWIsOGJcbiIKLQkgIiAgIC5sb25nIDViLDhiXG4iCi0JICIucHJldmlvdXMiCi0JIDogIj1hIih0byksICI9ZCIobikKLQkgOiAiciIobiAmIDMpLCAiciIoMCksICIwIih0byksICIxIihuLzQpKTsKLSAgICByZXR1cm4gbjsKLX0KLQogI2VuZGlmIC8qIF9NNjhLX1VBQ0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbTY4ay91bmlzdGQuaCBiL2luY2x1ZGUvYXNtLW02OGsvdW5pc3RkLmgKaW5kZXggZjIzNmZlOS4uN2MwYjYyOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbTY4ay91bmlzdGQuaAorKysgYi9pbmNsdWRlL2FzbS1tNjhrL3VuaXN0ZC5oCkBAIC00MTAsNDYgKzQxMCw3IEBACiAKICNpZmRlZiBfX0tFUk5FTF9TWVNDQUxMU19fCiAKLSNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgotI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0KLS8qCi0gKiB3ZSBuZWVkIHRoaXMgaW5saW5lIC0gZm9ya2luZyBmcm9tIGtlcm5lbCBzcGFjZSB3aWxsIHJlc3VsdAotICogaW4gTk8gQ09QWSBPTiBXUklURSAoISEhKSwgdW50aWwgYW4gZXhlY3ZlIGlzIGV4ZWN1dGVkLiBUaGlzCi0gKiBpcyBubyBwcm9ibGVtLCBidXQgZm9yIHRoZSBzdGFjay4gVGhpcyBpcyBoYW5kbGVkIGJ5IG5vdCBsZXR0aW5nCi0gKiBtYWluKCkgdXNlIHRoZSBzdGFjayBhdCBhbGwgYWZ0ZXIgZm9yaygpLiBUaHVzLCBubyBmdW5jdGlvbgotICogY2FsbHMgLSB3aGljaCBtZWFucyBpbmxpbmUgY29kZSBmb3IgZm9yayB0b28sIGFzIG90aGVyd2lzZSB3ZQotICogd291bGQgdXNlIHRoZSBzdGFjayB1cG9uIGV4aXQgZnJvbSAnZm9yaygpJy4KLSAqCi0gKiBBY3R1YWxseSBvbmx5IHBhdXNlIGFuZCBmb3JrIGFyZSBuZWVkZWQgaW5saW5lLCBzbyB0aGF0IHRoZXJlCi0gKiB3b24ndCBiZSBhbnkgbWVzc2luZyB3aXRoIHRoZSBzdGFjayBmcm9tIG1haW4oKSwgYnV0IHdlIGRlZmluZQotICogc29tZSBvdGhlcnMgdG9vLgotICovCi0jZGVmaW5lIF9fTlJfX2V4aXQgX19OUl9leGl0Ci1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMChwaWRfdCxzZXRzaWQpCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMyhpbnQsd3JpdGUsaW50LGZkLGNvbnN0IGNoYXIgKixidWYsb2ZmX3QsY291bnQpCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMyhpbnQscmVhZCxpbnQsZmQsY2hhciAqLGJ1ZixvZmZfdCxjb3VudCkKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwzKG9mZl90LGxzZWVrLGludCxmZCxvZmZfdCxvZmZzZXQsaW50LGNvdW50KQotc3RhdGljIGlubGluZSBfc3lzY2FsbDEoaW50LGR1cCxpbnQsZmQpCiBzdGF0aWMgaW5saW5lIF9zeXNjYWxsMyhpbnQsZXhlY3ZlLGNvbnN0IGNoYXIgKixmaWxlLGNoYXIgKiosYXJndixjaGFyICoqLGVudnApCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMyhpbnQsb3Blbixjb25zdCBjaGFyICosZmlsZSxpbnQsZmxhZyxpbnQsbW9kZSkKLXN0YXRpYyBpbmxpbmUgX3N5c2NhbGwxKGludCxjbG9zZSxpbnQsZmQpCi1zdGF0aWMgaW5saW5lIF9zeXNjYWxsMShpbnQsX2V4aXQsaW50LGV4aXRjb2RlKQotc3RhdGljIGlubGluZSBfc3lzY2FsbDMocGlkX3Qsd2FpdHBpZCxwaWRfdCxwaWQsaW50ICosd2FpdF9zdGF0LGludCxvcHRpb25zKQotCi1hc21saW5rYWdlIGxvbmcgc3lzX21tYXAyKAotCQkJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwKLQkJCXVuc2lnbmVkIGxvbmcgcHJvdCwgdW5zaWduZWQgbG9uZyBmbGFncywKLQkJCXVuc2lnbmVkIGxvbmcgZmQsIHVuc2lnbmVkIGxvbmcgcGdvZmYpOwotYXNtbGlua2FnZSBpbnQgc3lzX2V4ZWN2ZShjaGFyICpuYW1lLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnApOwotYXNtbGlua2FnZSBpbnQgc3lzX3BpcGUodW5zaWduZWQgbG9uZyAqZmlsZGVzKTsKLXN0cnVjdCBwdF9yZWdzOwotc3RydWN0IHNpZ2FjdGlvbjsKLWFzbWxpbmthZ2UgbG9uZyBzeXNfcnRfc2lnYWN0aW9uKGludCBzaWcsCi0JCQkJY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiBfX3VzZXIgKmFjdCwKLQkJCQlzdHJ1Y3Qgc2lnYWN0aW9uIF9fdXNlciAqb2FjdCwKLQkJCQlzaXplX3Qgc2lnc2V0c2l6ZSk7CiAKICNlbmRpZiAvKiBfX0tFUk5FTF9TWVNDQUxMU19fICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW02OGtub21tdS9pcnEuaCBiL2luY2x1ZGUvYXNtLW02OGtub21tdS9pcnEuaAppbmRleCAyYjQwODg0Li5jNTI0NzUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1tNjhrbm9tbXUvaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tbTY4a25vbW11L2lycS5oCkBAIC04Nyw4ICs4Nyw0IEBACiAjZGVmaW5lIGRpc2FibGVfaXJxKHgpCWRvIHsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZGlzYWJsZV9pcnFfbm9zeW5jKHgpCWRpc2FibGVfaXJxKHgpCiAKLXN0cnVjdCBpcnFhY3Rpb247Ci1zdHJ1Y3QgcHRfcmVnczsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogI2VuZGlmIC8qIF9NNjhLX0lSUV9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbTY4a25vbW11L3B0cmFjZS5oIGIvaW5jbHVkZS9hc20tbTY4a25vbW11L3B0cmFjZS5oCmluZGV4IGY2NWJkOTAuLjFlMTljNDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW02OGtub21tdS9wdHJhY2UuaAorKysgYi9pbmNsdWRlL2FzbS1tNjhrbm9tbXUvcHRyYWNlLmgKQEAgLTcwLDcgKzcwLDcgQEAKIC8qIEFyYml0cmFyaWx5IGNob29zZSB0aGUgc2FtZSBwdHJhY2UgbnVtYmVycyBhcyB1c2VkIGJ5IHRoZSBTcGFyYyBjb2RlLiAqLwogI2RlZmluZSBQVFJBQ0VfR0VUUkVHUyAgICAgICAgICAgIDEyCiAjZGVmaW5lIFBUUkFDRV9TRVRSRUdTICAgICAgICAgICAgMTMKLSNpZmRlZiBDT0ZOSUdfRlBVCisjaWZkZWYgQ09ORklHX0ZQVQogI2RlZmluZSBQVFJBQ0VfR0VURlBSRUdTICAgICAgICAgIDE0CiAjZGVmaW5lIFBUUkFDRV9TRVRGUFJFR1MgICAgICAgICAgMTUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTF4eHhfcHNjLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9wc2MuaAppbmRleCA1YzNlMmEzLi5kN2NiYWNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9wc2MuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtYXUxeDAwL2F1MXh4eF9wc2MuaApAQCAtMzksNyArMzksMTIgQEAKICNkZWZpbmUgUFNDMF9CQVNFX0FERFIJCTB4YjFhMDAwMDAKICNkZWZpbmUgUFNDMV9CQVNFX0FERFIJCTB4YjFiMDAwMDAKICNkZWZpbmUgUFNDMl9CQVNFX0FERFIJCTB4YjBhMDAwMDAKLSNkZWZpbmUgUFNDM19CQVNFX0FERFIJCTB4YjBkMDAwMDAKKyNkZWZpbmUgUFNDM19CQVNFX0FERFIJCTB4YjBiMDAwMDAKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NPQ19BVTEyMDAKKyNkZWZpbmUgUFNDMF9CQVNFX0FERFIJCTB4YjFhMDAwMDAKKyNkZWZpbmUgUFNDMV9CQVNFX0FERFIJCTB4YjFiMDAwMDAKICNlbmRpZgogCiAvKiBUaGUgUFNDIHNlbGVjdCBhbmQgY29udHJvbCByZWdpc3RlcnMgYXJlIGNvbW1vbiB0bwpAQCAtMjI3LDYgKzIzMiw4IEBACiAjZGVmaW5lIFBTQ19JMlNDRkdfRERfRElTQUJMRQkoMSA8PCAyNykKICNkZWZpbmUgUFNDX0kyU0NGR19ERV9FTkFCTEUJKDEgPDwgMjYpCiAjZGVmaW5lIFBTQ19JMlNDRkdfU0VUX1dTKHgpCSgoKCgoeCkgLyAyKSAtIDEpICYgMHg3ZikgPDwgMTYpCisjZGVmaW5lIFBTQ19JMlNDRkdfV1MobikJKChuICYgMHhGRikgPDwgMTYpCisjZGVmaW5lIFBTQ19JMlNDRkdfV1NfTUFTSwkoUFNDX0kyU0NGR19XUygweDNGKSkKICNkZWZpbmUgUFNDX0kyU0NGR19XSQkJKDEgPDwgMTUpCiAKICNkZWZpbmUgUFNDX0kyU0NGR19ESVZfTUFTSwkoMyA8PCAxMykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1kYjF4MDAvZGIxeDAwLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtZGIxeDAwL2RiMXgwMC5oCmluZGV4IDhmYmI0YjQuLjBmNWY0YzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1kYjF4MDAvZGIxeDAwLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWRiMXgwMC9kYjF4MDAuaApAQCAtMzAsOCArMzAsMjAgQEAKIAogCiAjaWZkZWYgQ09ORklHX01JUFNfREIxNTUwCisKKyNkZWZpbmUgREJETUFfQUM5N19UWF9DSEFOIERTQ1JfQ01EMF9QU0MxX1RYCisjZGVmaW5lIERCRE1BX0FDOTdfUlhfQ0hBTiBEU0NSX0NNRDBfUFNDMV9SWAorI2RlZmluZSBEQkRNQV9JMlNfVFhfQ0hBTiAgRFNDUl9DTUQwX1BTQzNfVFgKKyNkZWZpbmUgREJETUFfSTJTX1JYX0NIQU4gIERTQ1JfQ01EMF9QU0MzX1JYCisKKyNkZWZpbmUgU1BJX1BTQ19CQVNFICAgICAgIFBTQzBfQkFTRV9BRERSCisjZGVmaW5lIEFDOTdfUFNDX0JBU0UgICAgICBQU0MxX0JBU0VfQUREUgorI2RlZmluZSBTTUJVU19QU0NfQkFTRSAgICAgUFNDMl9CQVNFX0FERFIKKyNkZWZpbmUgSTJTX1BTQ19CQVNFICAgICAgIFBTQzNfQkFTRV9BRERSCisKICNkZWZpbmUgQkNTUl9LU0VHMV9BRERSIDB4QUYwMDAwMDAKICNkZWZpbmUgTkFORF9QSFlTX0FERFIgIDB4MjAwMDAwMDAKKwogI2Vsc2UKICNkZWZpbmUgQkNTUl9LU0VHMV9BRERSIDB4QUUwMDAwMDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tbWlwcy9tbXpvbmUuaCBiL2luY2x1ZGUvYXNtLW1pcHMvbW16b25lLmgKaW5kZXggZGMyMzFjOC4uZjUzZWM1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbWlwcy9tbXpvbmUuaAorKysgYi9pbmNsdWRlL2FzbS1taXBzL21tem9uZS5oCkBAIC0xMCw3ICsxMCw2IEBACiAKICNpZmRlZiBDT05GSUdfRElTQ09OVElHTUVNCiAKLSNkZWZpbmUga3ZhZGRyX3RvX25pZChrdmFkZHIpCXBhX3RvX25pZChfX3BhKGt2YWRkcikpCiAjZGVmaW5lIHBmbl90b19uaWQocGZuKQkJcGFfdG9fbmlkKChwZm4pIDw8IFBBR0VfU0hJRlQpCiAKICNlbmRpZiAvKiBDT05GSUdfRElTQ09OVElHTUVNICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taXBzL3ZnYS5oIGIvaW5jbHVkZS9hc20tbWlwcy92Z2EuaAppbmRleCAzNDc1NWMwLi5jMWRkMGIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL3ZnYS5oCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMvdmdhLmgKQEAgLTEzLDcgKzEzLDcgQEAKICAqCWFjY2VzcyB0aGUgdmlkZW9yYW0gZGlyZWN0bHkgd2l0aG91dCBhbnkgYmxhY2sgbWFnaWMuCiAgKi8KIAotI2RlZmluZSBWR0FfTUFQX01FTSh4KQkoMHhiMDAwMDAwMEwgKyAodW5zaWduZWQgbG9uZykoeCkpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykJKDB4YjAwMDAwMDBMICsgKHVuc2lnbmVkIGxvbmcpKHgpKQogCiAjZGVmaW5lIHZnYV9yZWFkYih4KQkoKih4KSkKICNkZWZpbmUgdmdhX3dyaXRlYih4LHkpCSgqKHkpID0gKHgpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcGFyaXNjL21tem9uZS5oIGIvaW5jbHVkZS9hc20tcGFyaXNjL21tem9uZS5oCmluZGV4IGNlYjliNzMuLmM4NzgxMzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBhcmlzYy9tbXpvbmUuaAorKysgYi9pbmNsdWRlL2FzbS1wYXJpc2MvbW16b25lLmgKQEAgLTE0LDExICsxNCw2IEBACiAKICNkZWZpbmUgTk9ERV9EQVRBKG5pZCkgICAgICAgICAgKCZub2RlX2RhdGFbbmlkXS5wZ19kYXRhKQogCi0vKgotICogR2l2ZW4gYSBrZXJuZWwgYWRkcmVzcywgZmluZCB0aGUgaG9tZSBub2RlIG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KLSAqLwotI2RlZmluZSBrdmFkZHJfdG9fbmlkKGthZGRyKQlwZm5fdG9fbmlkKF9fcGEoa2FkZHIpID4+IFBBR0VfU0hJRlQpCi0KICNkZWZpbmUgbm9kZV9zdGFydF9wZm4obmlkKQkoTk9ERV9EQVRBKG5pZCktPm5vZGVfc3RhcnRfcGZuKQogI2RlZmluZSBub2RlX2VuZF9wZm4obmlkKQkJCQkJCVwKICh7CQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9iaXRvcHMuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvYml0b3BzLmgKaW5kZXggZDFjMmE0NC4uNzZlMmYwOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9iaXRvcHMuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2JpdG9wcy5oCkBAIC0yODgsOCArMjg4LDggQEAKICNkZWZpbmUgX190ZXN0X2FuZF9jbGVhcl9sZV9iaXQobnIsIGFkZHIpIFwKIAlfX3Rlc3RfYW5kX2NsZWFyX2JpdCgobnIpIF4gQklUT1BfTEVfU1dJWlpMRSwgKGFkZHIpKQogCi0jZGVmaW5lIGZpbmRfZmlyc3RfemVyb19sZV9iaXQoYWRkciwgc2l6ZSkgZmluZF9uZXh0X3plcm9fbGVfYml0KChhZGRyKSwgKHNpemUpLCAwKQotdW5zaWduZWQgbG9uZyBmaW5kX25leHRfemVyb19sZV9iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkciwKKyNkZWZpbmUgZmluZF9maXJzdF96ZXJvX2xlX2JpdChhZGRyLCBzaXplKSBnZW5lcmljX2ZpbmRfbmV4dF96ZXJvX2xlX2JpdCgoYWRkciksIChzaXplKSwgMCkKK3Vuc2lnbmVkIGxvbmcgZ2VuZXJpY19maW5kX25leHRfemVyb19sZV9iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkciwKIAkJCQkgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAKIC8qIEJpdG1hcCBmdW5jdGlvbnMgZm9yIHRoZSBleHQyIGZpbGVzeXN0ZW0gKi8KQEAgLTMwOSw3ICszMDksNyBAQAogI2RlZmluZSBleHQyX2ZpbmRfZmlyc3RfemVyb19iaXQoYWRkciwgc2l6ZSkgXAogCWZpbmRfZmlyc3RfemVyb19sZV9iaXQoKHVuc2lnbmVkIGxvbmcqKWFkZHIsIHNpemUpCiAjZGVmaW5lIGV4dDJfZmluZF9uZXh0X3plcm9fYml0KGFkZHIsIHNpemUsIG9mZikgXAotCWZpbmRfbmV4dF96ZXJvX2xlX2JpdCgodW5zaWduZWQgbG9uZyopYWRkciwgc2l6ZSwgb2ZmKQorCWdlbmVyaWNfZmluZF9uZXh0X3plcm9fbGVfYml0KCh1bnNpZ25lZCBsb25nKilhZGRyLCBzaXplLCBvZmYpCiAKIC8qIEJpdG1hcCBmdW5jdGlvbnMgZm9yIHRoZSBtaW5peCBmaWxlc3lzdGVtLiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9jcHV0YWJsZS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9jcHV0YWJsZS5oCmluZGV4IGY2MjY1YzIuLmZhYjQxYzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvY3B1dGFibGUuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2NwdXRhYmxlLmgKQEAgLTI0LDYgKzI0LDkgQEAKICNkZWZpbmUgUFBDX0ZFQVRVUkVfSUNBQ0hFX1NOT09QCTB4MDAwMDIwMDAKICNkZWZpbmUgUFBDX0ZFQVRVUkVfQVJDSF8yXzA1CQkweDAwMDAxMDAwCiAKKyNkZWZpbmUgUFBDX0ZFQVRVUkVfVFJVRV9MRQkJMHgwMDAwMDAwMgorI2RlZmluZSBQUENfRkVBVFVSRV9QUENfTEUJCTB4MDAwMDAwMDEKKwogI2lmZGVmIF9fS0VSTkVMX18KICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKQEAgLTY5LDYgKzcyLDEzIEBACiAJLyogUHJvY2Vzc29yIHNwZWNpZmljIG9wcm9maWxlIG9wZXJhdGlvbnMgKi8KIAllbnVtIHBvd2VycGNfb3Byb2ZpbGVfdHlwZSBvcHJvZmlsZV90eXBlOwogCisJLyogQml0IGxvY2F0aW9ucyBpbnNpZGUgdGhlIG1tY3JhIGNoYW5nZSAqLworCXVuc2lnbmVkIGxvbmcJb3Byb2ZpbGVfbW1jcmFfc2lodjsKKwl1bnNpZ25lZCBsb25nCW9wcm9maWxlX21tY3JhX3NpcHI7CisKKwkvKiBCaXRzIHRvIGNsZWFyIGR1cmluZyBhbiBvcHJvZmlsZSBleGNlcHRpb24gKi8KKwl1bnNpZ25lZCBsb25nCW9wcm9maWxlX21tY3JhX2NsZWFyOworCiAJLyogTmFtZSBvZiBwcm9jZXNzb3IgY2xhc3MsIGZvciB0aGUgRUxGIEFUX1BMQVRGT1JNIGVudHJ5ICovCiAJY2hhcgkJKnBsYXRmb3JtOwogfTsKQEAgLTEwNCw2ICsxMTQsOCBAQAogI2RlZmluZSBDUFVfRlRSX05PX0JUSUMJCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwMDQwMDAwKQogI2RlZmluZSBDUFVfRlRSX0JJR19QSFlTCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwMDgwMDAwKQogI2RlZmluZSBDUFVfRlRSX05PRFNJU1JBTElHTgkJQVNNX0NPTlNUKDB4MDAwMDAwMDAwMDEwMDAwMCkKKyNkZWZpbmUgQ1BVX0ZUUl9QUENfTEUJCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwMjAwMDAwKQorI2RlZmluZSBDUFVfRlRSX1JFQUxfTEUJCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwNDAwMDAwKQogCiAjaWZkZWYgX19wb3dlcnBjNjRfXwogLyogQWRkIHRoZSA2NGIgcHJvY2Vzc29yIHVuaXF1ZSBmZWF0dXJlcyBpbiB0aGUgdG9wIGhhbGYgb2YgdGhlIHdvcmQgKi8KQEAgLTExNyw3ICsxMjksNiBAQAogI2RlZmluZSBDUFVfRlRSX1NNVAkJCUFTTV9DT05TVCgweDAwMDAwMTAwMDAwMDAwMDApCiAjZGVmaW5lIENQVV9GVFJfQ09IRVJFTlRfSUNBQ0hFCQlBU01fQ09OU1QoMHgwMDAwMDIwMDAwMDAwMDAwKQogI2RlZmluZSBDUFVfRlRSX0xPQ0tMRVNTX1RMQklFCQlBU01fQ09OU1QoMHgwMDAwMDQwMDAwMDAwMDAwKQotI2RlZmluZSBDUFVfRlRSX01NQ1JBX1NJSFYJCUFTTV9DT05TVCgweDAwMDAwODAwMDAwMDAwMDApCiAjZGVmaW5lIENQVV9GVFJfQ0lfTEFSR0VfUEFHRQkJQVNNX0NPTlNUKDB4MDAwMDEwMDAwMDAwMDAwMCkKICNkZWZpbmUgQ1BVX0ZUUl9QQVVTRV9aRVJPCQlBU01fQ09OU1QoMHgwMDAwMjAwMDAwMDAwMDAwKQogI2RlZmluZSBDUFVfRlRSX1BVUlIJCQlBU01fQ09OU1QoMHgwMDAwNDAwMDAwMDAwMDAwKQpAQCAtMTM0LDcgKzE0NSw2IEBACiAjZGVmaW5lIENQVV9GVFJfU01UCQkJQVNNX0NPTlNUKDB4MCkKICNkZWZpbmUgQ1BVX0ZUUl9DT0hFUkVOVF9JQ0FDSEUJCUFTTV9DT05TVCgweDApCiAjZGVmaW5lIENQVV9GVFJfTE9DS0xFU1NfVExCSUUJCUFTTV9DT05TVCgweDApCi0jZGVmaW5lIENQVV9GVFJfTU1DUkFfU0lIVgkJQVNNX0NPTlNUKDB4MCkKICNkZWZpbmUgQ1BVX0ZUUl9DSV9MQVJHRV9QQUdFCQlBU01fQ09OU1QoMHgwKQogI2RlZmluZSBDUFVfRlRSX1BVUlIJCQlBU01fQ09OU1QoMHgwKQogI2VuZGlmCkBAIC0xOTIsOTIgKzIwMiw5NSBAQAogI2RlZmluZSBDUFVfRlRSU19QUEM2MDEJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl82MDEgfCBDUFVfRlRSX0hQVEVfVEFCTEUpCiAjZGVmaW5lIENQVV9GVFJTXzYwMwkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX01BWUJFX0NBTl9ET1pFIHwgQ1BVX0ZUUl9VU0VfVEIgfCBcCi0JICAgIENQVV9GVFJfTUFZQkVfQ0FOX05BUCkKKwkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzYwNAkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAotCSAgICBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfNjA0X1BFUkZfTU9OIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFKQorCSAgICBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfNjA0X1BFUkZfTU9OIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgXAorCSAgICBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQwX05PVEFVCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfTDJDUiB8IFwKLQkgICAgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQKQorCSAgICBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX01BWUJFX0NBTl9OQVAgfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQwCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfTDJDUiB8IFwKLQkgICAgQ1BVX0ZUUl9UQVUgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX01BWUJFX0NBTl9OQVApCisJICAgIENQVV9GVFJfVEFVIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgXAorCSAgICBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzUwCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfTDJDUiB8IFwKLQkgICAgQ1BVX0ZUUl9UQVUgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX01BWUJFX0NBTl9OQVApCisJICAgIENQVV9GVFJfVEFVIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgXAorCSAgICBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzUwRlgxCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfTDJDUiB8IFwKIAkgICAgQ1BVX0ZUUl9UQVUgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX01BWUJFX0NBTl9OQVAgfCBcCi0JICAgIENQVV9GVFJfRFVBTF9QTExfNzUwRlggfCBDUFVfRlRSX05PX0RQTSkKKwkgICAgQ1BVX0ZUUl9EVUFMX1BMTF83NTBGWCB8IENQVV9GVFJfTk9fRFBNIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzc1MEZYMgkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX01BWUJFX0NBTl9ET1pFIHwgQ1BVX0ZUUl9VU0VfVEIgfCBDUFVfRlRSX0wyQ1IgfCBcCiAJICAgIENQVV9GVFJfVEFVIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgXAotCSAgICBDUFVfRlRSX05PX0RQTSkKKwkgICAgQ1BVX0ZUUl9OT19EUE0gfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzUwRlgJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fRE9aRSB8IENQVV9GVFJfVVNFX1RCIHwgQ1BVX0ZUUl9MMkNSIHwgXAogCSAgICBDUFVfRlRSX1RBVSB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfTUFZQkVfQ0FOX05BUCB8IFwKLQkgICAgQ1BVX0ZUUl9EVUFMX1BMTF83NTBGWCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUykKKwkgICAgQ1BVX0ZUUl9EVUFMX1BMTF83NTBGWCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUyB8IENQVV9GVFJfUFBDX0xFKQogI2RlZmluZSBDUFVfRlRSU183NTBHWAkoQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBcCiAJICAgIENQVV9GVFJfVVNFX1RCIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9UQVUgfCBcCiAJICAgIENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfTUFZQkVfQ0FOX05BUCB8IFwKLQkgICAgQ1BVX0ZUUl9EVUFMX1BMTF83NTBGWCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUykKKwkgICAgQ1BVX0ZUUl9EVUFMX1BMTF83NTBGWCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUyB8IENQVV9GVFJfUFBDX0xFKQogI2RlZmluZSBDUFVfRlRSU183NDAwX05PVEFVCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfTDJDUiB8IFwKIAkgICAgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBcCi0JICAgIENQVV9GVFJfTUFZQkVfQ0FOX05BUCkKKwkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzc0MDAJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fRE9aRSB8IENQVV9GVFJfVVNFX1RCIHwgQ1BVX0ZUUl9MMkNSIHwgXAogCSAgICBDUFVfRlRSX1RBVSB8IENQVV9GVFJfQUxUSVZFQ19DT01QIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgXAotCSAgICBDUFVfRlRSX01BWUJFX0NBTl9OQVApCisJICAgIENQVV9GVFJfTUFZQkVfQ0FOX05BUCB8IENQVV9GVFJfUFBDX0xFKQogI2RlZmluZSBDUFVfRlRSU183NDUwXzIwCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfVVNFX1RCIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBcCiAJICAgIENQVV9GVFJfTDNDUiB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfU1BFQzc0NTAgfCBcCi0JICAgIENQVV9GVFJfTkVFRF9DT0hFUkVOVCkKKwkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzc0NTBfMjEJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9VU0VfVEIgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX05BUCB8IENQVV9GVFJfTDJDUiB8IENQVV9GVFJfQUxUSVZFQ19DT01QIHwgXAogCSAgICBDUFVfRlRSX0wzQ1IgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX1NQRUM3NDUwIHwgXAogCSAgICBDUFVfRlRSX05BUF9ESVNBQkxFX0wyX1BSIHwgQ1BVX0ZUUl9MM19ESVNBQkxFX05BUCB8IFwKLQkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UKQorCSAgICBDUFVfRlRSX05FRURfQ09IRVJFTlQgfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQ1MF8yMwkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX1VTRV9UQiB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBcCiAJICAgIENQVV9GVFJfTDNDUiB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfU1BFQzc0NTAgfCBcCi0JICAgIENQVV9GVFJfTkFQX0RJU0FCTEVfTDJfUFIgfCBDUFVfRlRSX05FRURfQ09IRVJFTlQpCisJICAgIENQVV9GVFJfTkFQX0RJU0FCTEVfTDJfUFIgfCBDUFVfRlRSX05FRURfQ09IRVJFTlQgfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQ1NV8xCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfVVNFX1RCIHwgXAogCSAgICBDUFVfRlRSX0wyQ1IgfCBDUFVfRlRSX0FMVElWRUNfQ09NUCB8IENQVV9GVFJfTDNDUiB8IFwKIAkgICAgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9TUEVDNzQ1MCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUyB8IFwKLQkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UKQorCSAgICBDUFVfRlRSX05FRURfQ09IRVJFTlQgfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQ1NV8yMAkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX1VTRV9UQiB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBcCiAJICAgIENQVV9GVFJfTDNDUiB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfU1BFQzc0NTAgfCBcCiAJICAgIENQVV9GVFJfTkFQX0RJU0FCTEVfTDJfUFIgfCBDUFVfRlRSX0wzX0RJU0FCTEVfTkFQIHwgXAotCSAgICBDUFVfRlRSX05FRURfQ09IRVJFTlQgfCBDUFVfRlRSX0hBU19ISUdIX0JBVFMpCisJICAgIENQVV9GVFJfTkVFRF9DT0hFUkVOVCB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUyB8IENQVV9GVFJfUFBDX0xFKQogI2RlZmluZSBDUFVfRlRSU183NDU1CShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCiAJICAgIENQVV9GVFJfVVNFX1RCIHwgXAogCSAgICBDUFVfRlRSX01BWUJFX0NBTl9OQVAgfCBDUFVfRlRSX0wyQ1IgfCBDUFVfRlRSX0FMVElWRUNfQ09NUCB8IFwKIAkgICAgQ1BVX0ZUUl9MM0NSIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9TUEVDNzQ1MCB8IFwKIAkgICAgQ1BVX0ZUUl9OQVBfRElTQUJMRV9MMl9QUiB8IENQVV9GVFJfSEFTX0hJR0hfQkFUUyB8IFwKLQkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UKQorCSAgICBDUFVfRlRSX05FRURfQ09IRVJFTlQgfCBDUFVfRlRSX1BQQ19MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfNzQ0N18xMAkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX1VTRV9UQiB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBcCiAJICAgIENQVV9GVFJfTDNDUiB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfU1BFQzc0NTAgfCBcCiAJICAgIENQVV9GVFJfTkFQX0RJU0FCTEVfTDJfUFIgfCBDUFVfRlRSX0hBU19ISUdIX0JBVFMgfCBcCi0JICAgIENQVV9GVFJfTkVFRF9DT0hFUkVOVCB8IENQVV9GVFJfTk9fQlRJQykKKwkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UIHwgQ1BVX0ZUUl9OT19CVElDIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzc0NDcJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9VU0VfVEIgfCBcCiAJICAgIENQVV9GVFJfTUFZQkVfQ0FOX05BUCB8IENQVV9GVFJfTDJDUiB8IENQVV9GVFJfQUxUSVZFQ19DT01QIHwgXAogCSAgICBDUFVfRlRSX0wzQ1IgfCBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX1NQRUM3NDUwIHwgXAogCSAgICBDUFVfRlRSX05BUF9ESVNBQkxFX0wyX1BSIHwgQ1BVX0ZUUl9IQVNfSElHSF9CQVRTIHwgXAotCSAgICBDUFVfRlRSX05FRURfQ09IRVJFTlQpCisJICAgIENQVV9GVFJfTkVFRF9DT0hFUkVOVCB8IENQVV9GVFJfUFBDX0xFKQogI2RlZmluZSBDUFVfRlRSU183NDQ3QQkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAogCSAgICBDUFVfRlRSX1VTRV9UQiB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fTkFQIHwgQ1BVX0ZUUl9MMkNSIHwgQ1BVX0ZUUl9BTFRJVkVDX0NPTVAgfCBcCiAJICAgIENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfU1BFQzc0NTAgfCBcCiAJICAgIENQVV9GVFJfTkFQX0RJU0FCTEVfTDJfUFIgfCBDUFVfRlRSX0hBU19ISUdIX0JBVFMgfCBcCi0JICAgIENQVV9GVFJfTkVFRF9DT0hFUkVOVCkKKwkgICAgQ1BVX0ZUUl9ORUVEX0NPSEVSRU5UIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTXzgyWFgJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9NQVlCRV9DQU5fRE9aRSB8IENQVV9GVFJfVVNFX1RCKQogI2RlZmluZSBDUFVfRlRSU19HMl9MRQkoQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IENQVV9GVFJfTUFZQkVfQ0FOX0RPWkUgfCBcCkBAIC0yODcsMTMgKzMwMCw2IEBACiAJICAgIENQVV9GVFJfQ09NTU9OKQogI2RlZmluZSBDUFVfRlRSU19DTEFTU0lDMzIJKENQVV9GVFJfQ09NTU9OIHwgQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IFwKIAkgICAgQ1BVX0ZUUl9VU0VfVEIgfCBDUFVfRlRSX0hQVEVfVEFCTEUpCi0jZGVmaW5lIENQVV9GVFJTX1BPV0VSM18zMgkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAotCSAgICBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfSFBURV9UQUJMRSkKLSNkZWZpbmUgQ1BVX0ZUUlNfUE9XRVI0XzMyCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBcCi0JICAgIENQVV9GVFJfVVNFX1RCIHwgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9OT0RTSVNSQUxJR04pCi0jZGVmaW5lIENQVV9GVFJTXzk3MF8zMgkoQ1BVX0ZUUl9DT01NT04gfCBDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgXAotCSAgICBDUFVfRlRSX1VTRV9UQiB8IENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfQUxUSVZFQ19DT01QIHwgXAotCSAgICBDUFVfRlRSX01BWUJFX0NBTl9OQVAgfCBDUFVfRlRSX05PRFNJU1JBTElHTikKICNkZWZpbmUgQ1BVX0ZUUlNfOFhYCShDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgQ1BVX0ZUUl9VU0VfVEIpCiAjZGVmaW5lIENQVV9GVFJTXzQwWAkoQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IENQVV9GVFJfVVNFX1RCIHwgXAogCSAgICBDUFVfRlRSX05PRFNJU1JBTElHTikKQEAgLTMwNyw3ICszMTMsNyBAQAogI2RlZmluZSBDUFVfRlRSU19HRU5FUklDXzMyCShDUFVfRlRSX0NPTU1PTiB8IENQVV9GVFJfTk9EU0lTUkFMSUdOKQogI2lmZGVmIF9fcG93ZXJwYzY0X18KICNkZWZpbmUgQ1BVX0ZUUlNfUE9XRVIzCShDUFVfRlRSX1NQTElUX0lEX0NBQ0hFIHwgQ1BVX0ZUUl9VU0VfVEIgfCBcCi0JICAgIENQVV9GVFJfSFBURV9UQUJMRSB8IENQVV9GVFJfSUFCUikKKwkgICAgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9JQUJSIHwgQ1BVX0ZUUl9QUENfTEUpCiAjZGVmaW5lIENQVV9GVFJTX1JTNjQJKENQVV9GVFJfU1BMSVRfSURfQ0FDSEUgfCBDUFVfRlRSX1VTRV9UQiB8IFwKIAkgICAgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9JQUJSIHwgXAogCSAgICBDUFVfRlRSX01NQ1JBIHwgQ1BVX0ZUUl9DVFJMKQpAQCAtMzIwLDEyICszMjYsMTIgQEAKIAkgICAgQ1BVX0ZUUl9IUFRFX1RBQkxFIHwgQ1BVX0ZUUl9QUENBU19BUkNIX1YyIHwgXAogCSAgICBDUFVfRlRSX01NQ1JBIHwgQ1BVX0ZUUl9TTVQgfCBcCiAJICAgIENQVV9GVFJfQ09IRVJFTlRfSUNBQ0hFIHwgQ1BVX0ZUUl9MT0NLTEVTU19UTEJJRSB8IFwKLQkgICAgQ1BVX0ZUUl9NTUNSQV9TSUhWIHwgQ1BVX0ZUUl9QVVJSKQorCSAgICBDUFVfRlRSX1BVUlIpCiAjZGVmaW5lIENQVV9GVFJTX1BPV0VSNiAoQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IENQVV9GVFJfVVNFX1RCIHwgXAogCSAgICBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX1BQQ0FTX0FSQ0hfVjIgfCBcCiAJICAgIENQVV9GVFJfTU1DUkEgfCBDUFVfRlRSX1NNVCB8IFwKIAkgICAgQ1BVX0ZUUl9DT0hFUkVOVF9JQ0FDSEUgfCBDUFVfRlRSX0xPQ0tMRVNTX1RMQklFIHwgXAotCSAgICBDUFVfRlRSX1BVUlIgfCBDUFVfRlRSX0NJX0xBUkdFX1BBR0UpCisJICAgIENQVV9GVFJfUFVSUiB8IENQVV9GVFJfQ0lfTEFSR0VfUEFHRSB8IENQVV9GVFJfUkVBTF9MRSkKICNkZWZpbmUgQ1BVX0ZUUlNfQ0VMTAkoQ1BVX0ZUUl9TUExJVF9JRF9DQUNIRSB8IENQVV9GVFJfVVNFX1RCIHwgXAogCSAgICBDUFVfRlRSX0hQVEVfVEFCTEUgfCBDUFVfRlRSX1BQQ0FTX0FSQ0hfVjIgfCBcCiAJICAgIENQVV9GVFJfQUxUSVZFQ19DT01QIHwgQ1BVX0ZUUl9NTUNSQSB8IENQVV9GVFJfU01UIHwgXApAQCAtMzU0LDEyICszNjAsNiBAQAogI2Vsc2UKIAkgICAgQ1BVX0ZUUlNfR0VORVJJQ18zMiB8CiAjZW5kaWYKLSNpZmRlZiBDT05GSUdfUFBDNjRCUklER0UKLQkgICAgQ1BVX0ZUUlNfUE9XRVIzXzMyIHwKLSNlbmRpZgotI2lmZGVmIENPTkZJR19QT1dFUjQKLQkgICAgQ1BVX0ZUUlNfUE9XRVI0XzMyIHwgQ1BVX0ZUUlNfOTcwXzMyIHwKLSNlbmRpZgogI2lmZGVmIENPTkZJR184eHgKIAkgICAgQ1BVX0ZUUlNfOFhYIHwKICNlbmRpZgpAQCAtMzk5LDEyICszOTksNiBAQAogI2Vsc2UKIAkgICAgQ1BVX0ZUUlNfR0VORVJJQ18zMiAmCiAjZW5kaWYKLSNpZmRlZiBDT05GSUdfUFBDNjRCUklER0UKLQkgICAgQ1BVX0ZUUlNfUE9XRVIzXzMyICYKLSNlbmRpZgotI2lmZGVmIENPTkZJR19QT1dFUjQKLQkgICAgQ1BVX0ZUUlNfUE9XRVI0XzMyICYgQ1BVX0ZUUlNfOTcwXzMyICYKLSNlbmRpZgogI2lmZGVmIENPTkZJR184eHgKIAkgICAgQ1BVX0ZUUlNfOFhYICYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9kZWxheS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9kZWxheS5oCmluZGV4IDA1N2E2MDkuLmY5MjAwYTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvZGVsYXkuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2RlbGF5LmgKQEAgLTE3LDUgKzE3LDE4IEBACiBleHRlcm4gdm9pZCBfX2RlbGF5KHVuc2lnbmVkIGxvbmcgbG9vcHMpOwogZXh0ZXJuIHZvaWQgdWRlbGF5KHVuc2lnbmVkIGxvbmcgdXNlY3MpOwogCisvKgorICogT24gc2hhcmVkIHByb2Nlc3NvciBtYWNoaW5lcyB0aGUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBtZGVsYXkgY2FuCisgKiByZXN1bHQgaW4gbGFyZ2UgZXJyb3JzLiBXaGlsZSBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcCBpbnNpZGUgbWRlbGF5CisgKiBpcyBzdXBwb3NlZCB0byB0YWtlIDFtcywgdGhlIGh5cGVydmlzb3IgY291bGQgc2xlZXAgb3VyIHBhcnRpdGlvbiBmb3IKKyAqIGxvbmdlciAoZWcgMTBtcykuIFdpdGggdGhlIHJpZ2h0IHRpbWluZyB0aGVzZSBlcnJvcnMgY2FuIGFkZCB1cC4KKyAqCisgKiBTaW5jZSB0aGVyZSBpcyBubyAzMmJpdCBvdmVyZmxvdyBpc3N1ZSBvbiA2NGJpdCBrZXJuZWxzLCBqdXN0IGNhbGwKKyAqIHVkZWxheSBkaXJlY3RseS4KKyAqLworI2lmZGVmIENPTkZJR19QUEM2NAorI2RlZmluZSBtZGVsYXkobikJdWRlbGF5KChuKSAqIDEwMDApCisjZW5kaWYKKwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KICNlbmRpZiAvKiBfQVNNX1BPV0VSUENfREVMQVlfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9lZWguaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvZWVoLmgKaW5kZXggZTljODZiMS4uNGRmM2U4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9lZWguaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2VlaC5oCkBAIC0yOTIsOCArMjkyLDYgQEAKIHN0YXRpYyBpbmxpbmUgdTggZWVoX2luYih1bnNpZ25lZCBsb25nIHBvcnQpCiB7CiAJdTggdmFsOwotCWlmICghX0lPX0lTX1ZBTElEKHBvcnQpKQotCQlyZXR1cm4gfjA7CiAJdmFsID0gaW5fOCgodTggX19pb21lbSAqKShwb3J0K3BjaV9pb19iYXNlKSk7CiAJaWYgKEVFSF9QT1NTSUJMRV9FUlJPUih2YWwsIHU4KSkKIAkJcmV0dXJuIGVlaF9jaGVja19mYWlsdXJlKCh2b2lkIF9faW9tZW0gKikocG9ydCksIHZhbCk7CkBAIC0zMDIsMTUgKzMwMCwxMiBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgZWVoX291dGIodTggdmFsLCB1bnNpZ25lZCBsb25nIHBvcnQpCiB7Ci0JaWYgKF9JT19JU19WQUxJRChwb3J0KSkKLQkJb3V0XzgoKHU4IF9faW9tZW0gKikocG9ydCtwY2lfaW9fYmFzZSksIHZhbCk7CisJb3V0XzgoKHU4IF9faW9tZW0gKikocG9ydCtwY2lfaW9fYmFzZSksIHZhbCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdTE2IGVlaF9pbncodW5zaWduZWQgbG9uZyBwb3J0KQogewogCXUxNiB2YWw7Ci0JaWYgKCFfSU9fSVNfVkFMSUQocG9ydCkpCi0JCXJldHVybiB+MDsKIAl2YWwgPSBpbl9sZTE2KCh1MTYgX19pb21lbSAqKShwb3J0K3BjaV9pb19iYXNlKSk7CiAJaWYgKEVFSF9QT1NTSUJMRV9FUlJPUih2YWwsIHUxNikpCiAJCXJldHVybiBlZWhfY2hlY2tfZmFpbHVyZSgodm9pZCBfX2lvbWVtICopKHBvcnQpLCB2YWwpOwpAQCAtMzE5LDE1ICszMTQsMTIgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIGVlaF9vdXR3KHUxNiB2YWwsIHVuc2lnbmVkIGxvbmcgcG9ydCkKIHsKLQlpZiAoX0lPX0lTX1ZBTElEKHBvcnQpKQotCQlvdXRfbGUxNigodTE2IF9faW9tZW0gKikocG9ydCtwY2lfaW9fYmFzZSksIHZhbCk7CisJb3V0X2xlMTYoKHUxNiBfX2lvbWVtICopKHBvcnQrcGNpX2lvX2Jhc2UpLCB2YWwpOwogfQogCiBzdGF0aWMgaW5saW5lIHUzMiBlZWhfaW5sKHVuc2lnbmVkIGxvbmcgcG9ydCkKIHsKIAl1MzIgdmFsOwotCWlmICghX0lPX0lTX1ZBTElEKHBvcnQpKQotCQlyZXR1cm4gfjA7CiAJdmFsID0gaW5fbGUzMigodTMyIF9faW9tZW0gKikocG9ydCtwY2lfaW9fYmFzZSkpOwogCWlmIChFRUhfUE9TU0lCTEVfRVJST1IodmFsLCB1MzIpKQogCQlyZXR1cm4gZWVoX2NoZWNrX2ZhaWx1cmUoKHZvaWQgX19pb21lbSAqKShwb3J0KSwgdmFsKTsKQEAgLTMzNiw4ICszMjgsNyBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgZWVoX291dGwodTMyIHZhbCwgdW5zaWduZWQgbG9uZyBwb3J0KQogewotCWlmIChfSU9fSVNfVkFMSUQocG9ydCkpCi0JCW91dF9sZTMyKCh1MzIgX19pb21lbSAqKShwb3J0K3BjaV9pb19iYXNlKSwgdmFsKTsKKwlvdXRfbGUzMigodTMyIF9faW9tZW0gKikocG9ydCtwY2lfaW9fYmFzZSksIHZhbCk7CiB9CiAKIC8qIGluLXN0cmluZyBlZWggbWFjcm9zICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2VlaF9ldmVudC5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9lZWhfZXZlbnQuaAppbmRleCA5M2Q1NWEyLi5kYzZiZjBmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2VlaF9ldmVudC5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvZWVoX2V2ZW50LmgKQEAgLTE4LDggKzE4LDggQEAKICAqIENvcHlyaWdodCAoYykgMjAwNSBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+CiAgKi8KIAotI2lmbmRlZiBBU01fUFBDNjRfRUVIX0VWRU5UX0gKLSNkZWZpbmUgQVNNX1BQQzY0X0VFSF9FVkVOVF9ICisjaWZuZGVmIEFTTV9QT1dFUlBDX0VFSF9FVkVOVF9ICisjZGVmaW5lIEFTTV9QT1dFUlBDX0VFSF9FVkVOVF9ICiAjaWZkZWYgX19LRVJORUxfXwogCiAvKiogRUVIIGV2ZW50IC0tIHN0cnVjdHVyZSBob2xkaW5nIHBjaSBjb250cm9sbGVyIGRhdGEgdGhhdCBkZXNjcmliZXMKQEAgLTM5LDcgKzM5LDcgQEAKICAqIEBkZXYgcGNpIGRldmljZQogICoKICAqIFRoaXMgcm91dGluZSBidWlsZHMgYSBQQ0kgZXJyb3IgZXZlbnQgd2hpY2ggd2lsbCBiZSBkZWxpdmVyZWQKLSAqIHRvIGFsbCBsaXN0ZW5lcnMgb24gdGhlIHBlaF9ub3RpZmllcl9jaGFpbi4KKyAqIHRvIGFsbCBsaXN0ZW5lcnMgb24gdGhlIGVlaF9ub3RpZmllcl9jaGFpbi4KICAqCiAgKiBUaGlzIHJvdXRpbmUgY2FuIGJlIGNhbGxlZCB3aXRoaW4gYW4gaW50ZXJydXB0IGNvbnRleHQ7CiAgKiB0aGUgYWN0dWFsIGV2ZW50IHdpbGwgYmUgZGVsaXZlcmVkIGluIGEgbm9ybWFsIGNvbnRleHQKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZV91bmF2YWlsKTsKIAogLyogTWFpbiByZWNvdmVyeSBmdW5jdGlvbiAqLwotdm9pZCBoYW5kbGVfZWVoX2V2ZW50cyAoc3RydWN0IGVlaF9ldmVudCAqKTsKK3N0cnVjdCBwY2lfZG4gKiBoYW5kbGVfZWVoX2V2ZW50cyAoc3RydWN0IGVlaF9ldmVudCAqKTsKIAogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KLSNlbmRpZiAvKiBBU01fUFBDNjRfRUVIX0VWRU5UX0ggKi8KKyNlbmRpZiAvKiBBU01fUE9XRVJQQ19FRUhfRVZFTlRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9lbGYuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvZWxmLmgKaW5kZXggOTljMThiNy4uOWE4M2E5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9lbGYuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2VsZi5oCkBAIC0yOTMsNyArMjkzLDcgQEAKIAlORVdfQVVYX0VOVChBVF9EQ0FDSEVCU0laRSwgZGNhY2hlX2JzaXplKTsJCQlcCiAJTkVXX0FVWF9FTlQoQVRfSUNBQ0hFQlNJWkUsIGljYWNoZV9ic2l6ZSk7CQkJXAogCU5FV19BVVhfRU5UKEFUX1VDQUNIRUJTSVpFLCB1Y2FjaGVfYnNpemUpOwkJCVwKLQlWRFNPX0FVWF9FTlQoQVRfU1lTSU5GT19FSERSLCBjdXJyZW50LT50aHJlYWQudmRzb19iYXNlKQlcCisJVkRTT19BVVhfRU5UKEFUX1NZU0lORk9fRUhEUiwgY3VycmVudC0+bW0tPmNvbnRleHQudmRzb19iYXNlKQlcCiB9IHdoaWxlICgwKQogCiAvKiBQb3dlclBDNjQgcmVsb2NhdGlvbnMgZGVmaW5lZCBieSB0aGUgQUJJcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9odmNhbGwuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvaHZjYWxsLmgKaW5kZXggNmNjN2UxZi4uMGQzYzRlOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9odmNhbGwuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2h2Y2FsbC5oCkBAIC0xMDIsNiArMTAyLDE1IEBACiAjZGVmaW5lIEhfUFAxCQkJKDFVTDw8KDYzLTYyKSkKICNkZWZpbmUgSF9QUDIJCQkoMVVMPDwoNjMtNjMpKQogCisvKiBWQVNJIFN0YXRlcyAqLworI2RlZmluZSBIX1ZBU0lfSU5WQUxJRCAgICAgICAgICAwCisjZGVmaW5lIEhfVkFTSV9FTkFCTEVEICAgICAgICAgIDEKKyNkZWZpbmUgSF9WQVNJX0FCT1JURUQgICAgICAgICAgMgorI2RlZmluZSBIX1ZBU0lfU1VTUEVORElORyAgICAgICAzCisjZGVmaW5lIEhfVkFTSV9TVVNQRU5ERUQgICAgICAgIDQKKyNkZWZpbmUgSF9WQVNJX1JFU1VNRUQgICAgICAgICAgNQorI2RlZmluZSBIX1ZBU0lfQ09NUExFVEVEICAgICAgICA2CisKIC8qIERBQlJYIGZsYWdzICovCiAjZGVmaW5lIEhfREFCUlhfSFlQRVJWSVNPUgkoMVVMPDwoNjMtNjEpKQogI2RlZmluZSBIX0RBQlJYX0tFUk5FTAkJKDFVTDw8KDYzLTYyKSkKQEAgLTE5MCw2ICsxOTksNyBAQAogI2RlZmluZSBIX1FVRVJZX0lOVF9TVEFURSAgICAgICAweDFFNAogI2RlZmluZSBIX1BPTExfUEVORElORwkJMHgxRDgKICNkZWZpbmUgSF9KT0lOCQkJMHgyOTgKKyNkZWZpbmUgSF9WQVNJX1NUQVRFICAgICAgICAgICAgMHgyQTQKICNkZWZpbmUgSF9FTkFCTEVfQ1JRCQkweDJCMAogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9pbW1hcF84Nnh4LmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2ltbWFwXzg2eHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTA1YjY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9pbW1hcF84Nnh4LmgKQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBNUEM4Nnh4IEludGVybmFsIE1lbW9yeSBNYXAKKyAqCisgKiBBdXRob3I6IEplZmYgQnJvd24KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKworI2lmbmRlZiBfX0FTTV9QT1dFUlBDX0lNTUFQXzg2WFhfSF9fCisjZGVmaW5lIF9fQVNNX1BPV0VSUENfSU1NQVBfODZYWF9IX18KKyNpZmRlZiBfX0tFUk5FTF9fCisKKy8qIEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgZGVmaW5lIGFsbCB0aGUgSU8gYmxvY2sgcmVnaXN0ZXJzIGluIDg2eHggKi8KKworLyogUENJIFJlZ2lzdGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgY2Nzcl9wY2kgeworCXVpbnQJY2ZnX2FkZHI7CS8qIDB4LjAwMCAtIFBDSSBDb25maWd1cmF0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKwl1aW50CWNmZ19kYXRhOwkvKiAweC4wMDQgLSBQQ0kgQ29uZmlndXJhdGlvbiBEYXRhIFJlZ2lzdGVyICovCisJdWludAlpbnRfYWNrOwkvKiAweC4wMDggLSBQQ0kgSW50ZXJydXB0IEFja25vd2xlZGdlIFJlZ2lzdGVyICovCisJY2hhcglyZXMxWzMwNjBdOworCXVpbnQJcG90YXIwOwkJLyogMHguYzAwIC0gUENJIE91dGJvdW5kIFRyYW5zYWN0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgMCAqLworCXVpbnQJcG90ZWFyMDsJLyogMHguYzA0IC0gUENJIE91dGJvdW5kIFRyYW5zbGF0aW9uIEV4dGVuZGVkIEFkZHJlc3MgUmVnaXN0ZXIgMCAqLworCXVpbnQJcG93YmFyMDsJLyogMHguYzA4IC0gUENJIE91dGJvdW5kIFdpbmRvdyBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgMCAqLworCWNoYXIJcmVzMls0XTsKKwl1aW50CXBvd2FyMDsJCS8qIDB4LmMxMCAtIFBDSSBPdXRib3VuZCBXaW5kb3cgQXR0cmlidXRlcyBSZWdpc3RlciAwICovCisJY2hhcglyZXMzWzEyXTsKKwl1aW50CXBvdGFyMTsJCS8qIDB4LmMyMCAtIFBDSSBPdXRib3VuZCBUcmFuc2FjdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIDEgKi8KKwl1aW50CXBvdGVhcjE7CS8qIDB4LmMyNCAtIFBDSSBPdXRib3VuZCBUcmFuc2xhdGlvbiBFeHRlbmRlZCBBZGRyZXNzIFJlZ2lzdGVyIDEgKi8KKwl1aW50CXBvd2JhcjE7CS8qIDB4LmMyOCAtIFBDSSBPdXRib3VuZCBXaW5kb3cgQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIDEgKi8KKwljaGFyCXJlczRbNF07CisJdWludAlwb3dhcjE7CQkvKiAweC5jMzAgLSBQQ0kgT3V0Ym91bmQgV2luZG93IEF0dHJpYnV0ZXMgUmVnaXN0ZXIgMSAqLworCWNoYXIJcmVzNVsxMl07CisJdWludAlwb3RhcjI7CQkvKiAweC5jNDAgLSBQQ0kgT3V0Ym91bmQgVHJhbnNhY3Rpb24gQWRkcmVzcyBSZWdpc3RlciAyICovCisJdWludAlwb3RlYXIyOwkvKiAweC5jNDQgLSBQQ0kgT3V0Ym91bmQgVHJhbnNsYXRpb24gRXh0ZW5kZWQgQWRkcmVzcyBSZWdpc3RlciAyICovCisJdWludAlwb3diYXIyOwkvKiAweC5jNDggLSBQQ0kgT3V0Ym91bmQgV2luZG93IEJhc2UgQWRkcmVzcyBSZWdpc3RlciAyICovCisJY2hhcglyZXM2WzRdOworCXVpbnQJcG93YXIyOwkJLyogMHguYzUwIC0gUENJIE91dGJvdW5kIFdpbmRvdyBBdHRyaWJ1dGVzIFJlZ2lzdGVyIDIgKi8KKwljaGFyCXJlczdbMTJdOworCXVpbnQJcG90YXIzOwkJLyogMHguYzYwIC0gUENJIE91dGJvdW5kIFRyYW5zYWN0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgMyAqLworCXVpbnQJcG90ZWFyMzsJLyogMHguYzY0IC0gUENJIE91dGJvdW5kIFRyYW5zbGF0aW9uIEV4dGVuZGVkIEFkZHJlc3MgUmVnaXN0ZXIgMyAqLworCXVpbnQJcG93YmFyMzsJLyogMHguYzY4IC0gUENJIE91dGJvdW5kIFdpbmRvdyBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgMyAqLworCWNoYXIJcmVzOFs0XTsKKwl1aW50CXBvd2FyMzsJCS8qIDB4LmM3MCAtIFBDSSBPdXRib3VuZCBXaW5kb3cgQXR0cmlidXRlcyBSZWdpc3RlciAzICovCisJY2hhcglyZXM5WzEyXTsKKwl1aW50CXBvdGFyNDsJCS8qIDB4LmM4MCAtIFBDSSBPdXRib3VuZCBUcmFuc2FjdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIDQgKi8KKwl1aW50CXBvdGVhcjQ7CS8qIDB4LmM4NCAtIFBDSSBPdXRib3VuZCBUcmFuc2xhdGlvbiBFeHRlbmRlZCBBZGRyZXNzIFJlZ2lzdGVyIDQgKi8KKwl1aW50CXBvd2JhcjQ7CS8qIDB4LmM4OCAtIFBDSSBPdXRib3VuZCBXaW5kb3cgQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIDQgKi8KKwljaGFyCXJlczEwWzRdOworCXVpbnQJcG93YXI0OwkJLyogMHguYzkwIC0gUENJIE91dGJvdW5kIFdpbmRvdyBBdHRyaWJ1dGVzIFJlZ2lzdGVyIDQgKi8KKwljaGFyCXJlczExWzI2OF07CisJdWludAlwaXRhcjM7CQkvKiAweC5kYTAgLSBQQ0kgSW5ib3VuZCBUcmFuc2xhdGlvbiBBZGRyZXNzIFJlZ2lzdGVyIDMgICovCisJY2hhcglyZXMxMls0XTsKKwl1aW50CXBpd2JhcjM7CS8qIDB4LmRhOCAtIFBDSSBJbmJvdW5kIFdpbmRvdyBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgMyAqLworCXVpbnQJcGl3YmVhcjM7CS8qIDB4LmRhYyAtIFBDSSBJbmJvdW5kIFdpbmRvdyBCYXNlIEV4dGVuZGVkIEFkZHJlc3MgUmVnaXN0ZXIgMyAqLworCXVpbnQJcGl3YXIzOwkJLyogMHguZGIwIC0gUENJIEluYm91bmQgV2luZG93IEF0dHJpYnV0ZXMgUmVnaXN0ZXIgMyAqLworCWNoYXIJcmVzMTNbMTJdOworCXVpbnQJcGl0YXIyOwkJLyogMHguZGMwIC0gUENJIEluYm91bmQgVHJhbnNsYXRpb24gQWRkcmVzcyBSZWdpc3RlciAyICAqLworCWNoYXIJcmVzMTRbNF07CisJdWludAlwaXdiYXIyOwkvKiAweC5kYzggLSBQQ0kgSW5ib3VuZCBXaW5kb3cgQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIDIgKi8KKwl1aW50CXBpd2JlYXIyOwkvKiAweC5kY2MgLSBQQ0kgSW5ib3VuZCBXaW5kb3cgQmFzZSBFeHRlbmRlZCBBZGRyZXNzIFJlZ2lzdGVyIDIgKi8KKwl1aW50CXBpd2FyMjsJCS8qIDB4LmRkMCAtIFBDSSBJbmJvdW5kIFdpbmRvdyBBdHRyaWJ1dGVzIFJlZ2lzdGVyIDIgKi8KKwljaGFyCXJlczE1WzEyXTsKKwl1aW50CXBpdGFyMTsJCS8qIDB4LmRlMCAtIFBDSSBJbmJvdW5kIFRyYW5zbGF0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgMSAgKi8KKwljaGFyCXJlczE2WzRdOworCXVpbnQJcGl3YmFyMTsJLyogMHguZGU4IC0gUENJIEluYm91bmQgV2luZG93IEJhc2UgQWRkcmVzcyBSZWdpc3RlciAxICovCisJY2hhcglyZXMxN1s0XTsKKwl1aW50CXBpd2FyMTsJCS8qIDB4LmRmMCAtIFBDSSBJbmJvdW5kIFdpbmRvdyBBdHRyaWJ1dGVzIFJlZ2lzdGVyIDEgKi8KKwljaGFyCXJlczE4WzEyXTsKKwl1aW50CWVycl9kcjsJCS8qIDB4LmUwMCAtIFBDSSBFcnJvciBEZXRlY3QgUmVnaXN0ZXIgKi8KKwl1aW50CWVycl9jYXBfZHI7CS8qIDB4LmUwNCAtIFBDSSBFcnJvciBDYXB0dXJlIERpc2FibGUgUmVnaXN0ZXIgKi8KKwl1aW50CWVycl9lbjsJCS8qIDB4LmUwOCAtIFBDSSBFcnJvciBFbmFibGUgUmVnaXN0ZXIgKi8KKwl1aW50CWVycl9hdHRyaWI7CS8qIDB4LmUwYyAtIFBDSSBFcnJvciBBdHRyaWJ1dGVzIENhcHR1cmUgUmVnaXN0ZXIgKi8KKwl1aW50CWVycl9hZGRyOwkvKiAweC5lMTAgLSBQQ0kgRXJyb3IgQWRkcmVzcyBDYXB0dXJlIFJlZ2lzdGVyICovCisJdWludAllcnJfZXh0X2FkZHI7CS8qIDB4LmUxNCAtIFBDSSBFcnJvciBFeHRlbmRlZCBBZGRyZXNzIENhcHR1cmUgUmVnaXN0ZXIgKi8KKwl1aW50CWVycl9kbDsJCS8qIDB4LmUxOCAtIFBDSSBFcnJvciBEYXRhIExvdyBDYXB0dXJlIFJlZ2lzdGVyICovCisJdWludAllcnJfZGg7CQkvKiAweC5lMWMgLSBQQ0kgRXJyb3IgRGF0YSBIaWdoIENhcHR1cmUgUmVnaXN0ZXIgKi8KKwl1aW50CWdhc190aW1yOwkvKiAweC5lMjAgLSBQQ0kgR2Fza2V0IFRpbWVyIFJlZ2lzdGVyICovCisJdWludAlwY2lfdGltcjsJLyogMHguZTI0IC0gUENJIFRpbWVyIFJlZ2lzdGVyICovCisJY2hhcglyZXMxOVs0NzJdOworfSBjY3NyX3BjaV90OworCisvKiBQQ0kgRXhwcmVzcyBSZWdpc3RlcnMgKi8KK3R5cGVkZWYgc3RydWN0IGNjc3JfcGV4IHsKKwl1aW50ICAgIHBleF9jb25maWdfYWRkcjsgICAgICAgIC8qIDB4LjAwMCAtIFBDSSBFeHByZXNzIENvbmZpZ3VyYXRpb24gQWRkcmVzcyBSZWdpc3RlciAqLworCXVpbnQgICAgcGV4X2NvbmZpZ19kYXRhOyAgICAgICAgLyogMHguMDA0IC0gUENJIEV4cHJlc3MgQ29uZmlndXJhdGlvbiBEYXRhIFJlZ2lzdGVyICovCisJY2hhciAgICByZXMxWzRdOworCXVpbnQgICAgcGV4X290Yl9jcGxfdG9yOyAgICAgICAgLyogMHguMDBjIC0gUENJIEV4cHJlc3MgT3V0Ym91bmQgY29tcGxldGlvbiB0aW1lb3V0IHJlZ2lzdGVyICovCisJdWludCAgICBwZXhfY29uZl90b3I7ICAgICAgICAgICAvKiAweC4wMTAgLSBQQ0kgRXhwcmVzcyBjb25maWd1cmF0aW9uIHRpbWVvdXQgcmVnaXN0ZXIgKi8KKwljaGFyICAgIHJlczJbMTJdOworCXVpbnQgICAgcGV4X3BtZV9tZXNfZHI7ICAgICAgICAgLyogMHguMDIwIC0gUENJIEV4cHJlc3MgUE1FIGFuZCBtZXNzYWdlIGRldGVjdCByZWdpc3RlciAqLworCXVpbnQgICAgcGV4X3BtZV9tZXNfZGlzcjsgICAgICAgLyogMHguMDI0IC0gUENJIEV4cHJlc3MgUE1FIGFuZCBtZXNzYWdlIGRpc2FibGUgcmVnaXN0ZXIgKi8KKwl1aW50ICAgIHBleF9wbWVfbWVzX2llcjsgICAgICAgIC8qIDB4LjAyOCAtIFBDSSBFeHByZXNzIFBNRSBhbmQgbWVzc2FnZSBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVyICovCisJdWludCAgICBwZXhfcG1jcjsgICAgICAgICAgICAgICAvKiAweC4wMmMgLSBQQ0kgRXhwcmVzcyBwb3dlciBtYW5hZ2VtZW50IGNvbW1hbmQgcmVnaXN0ZXIgKi8KKwljaGFyICAgIHJlczNbMzAyNF07CisJdWludCAgICBwZXhvdGFyMDsgICAgICAgICAgICAgICAvKiAweC5jMDAgLSBQQ0kgRXhwcmVzcyBvdXRib3VuZCB0cmFuc2xhdGlvbiBhZGRyZXNzIHJlZ2lzdGVyIDAgKi8KKwl1aW50ICAgIHBleG90ZWFyMDsgICAgICAgICAgICAgIC8qIDB4LmMwNCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHRyYW5zbGF0aW9uIGV4dGVuZGVkIGFkZHJlc3MgcmVnaXN0ZXIgMCovCisJY2hhciAgICByZXM0WzhdOworCXVpbnQgICAgcGV4b3dhcjA7ICAgICAgICAgICAgICAgLyogMHguYzEwIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGF0dHJpYnV0ZXMgcmVnaXN0ZXIgMCovCisJY2hhciAgICByZXM1WzEyXTsKKwl1aW50ICAgIHBleG90YXIxOyAgICAgICAgICAgICAgIC8qIDB4LmMyMCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHRyYW5zbGF0aW9uIGFkZHJlc3MgcmVnaXN0ZXIgMSAqLworCXVpbnQgICAgcGV4b3RlYXIxOyAgICAgICAgICAgICAgLyogMHguYzI0IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlciAxKi8KKwl1aW50ICAgIHBleG93YmFyMTsgICAgICAgICAgICAgIC8qIDB4LmMyOCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHdpbmRvdyBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgMSovCisJY2hhciAgICByZXM2WzRdOworCXVpbnQgICAgcGV4b3dhcjE7ICAgICAgICAgICAgICAgLyogMHguYzMwIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGF0dHJpYnV0ZXMgcmVnaXN0ZXIgMSovCisJY2hhciAgICByZXM3WzEyXTsKKwl1aW50ICAgIHBleG90YXIyOyAgICAgICAgICAgICAgIC8qIDB4LmM0MCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHRyYW5zbGF0aW9uIGFkZHJlc3MgcmVnaXN0ZXIgMiAqLworCXVpbnQgICAgcGV4b3RlYXIyOyAgICAgICAgICAgICAgLyogMHguYzQ0IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlciAyKi8KKwl1aW50ICAgIHBleG93YmFyMjsgICAgICAgICAgICAgIC8qIDB4LmM0OCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHdpbmRvdyBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgMiovCisJY2hhciAgICByZXM4WzRdOworCXVpbnQgICAgcGV4b3dhcjI7ICAgICAgICAgICAgICAgLyogMHguYzUwIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGF0dHJpYnV0ZXMgcmVnaXN0ZXIgMiovCisJY2hhciAgICByZXM5WzEyXTsKKwl1aW50ICAgIHBleG90YXIzOyAgICAgICAgICAgICAgIC8qIDB4LmM2MCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHRyYW5zbGF0aW9uIGFkZHJlc3MgcmVnaXN0ZXIgMyAqLworCXVpbnQgICAgcGV4b3RlYXIzOyAgICAgICAgICAgICAgLyogMHguYzY0IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlciAzKi8KKwl1aW50ICAgIHBleG93YmFyMzsgICAgICAgICAgICAgIC8qIDB4LmM2OCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHdpbmRvdyBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgMyovCisJY2hhciAgICByZXMxMFs0XTsKKwl1aW50ICAgIHBleG93YXIzOyAgICAgICAgICAgICAgIC8qIDB4LmM3MCAtIFBDSSBFeHByZXNzIG91dGJvdW5kIHdpbmRvdyBhdHRyaWJ1dGVzIHJlZ2lzdGVyIDMqLworCWNoYXIgICAgcmVzMTFbMTJdOworCXVpbnQgICAgcGV4b3RhcjQ7ICAgICAgICAgICAgICAgLyogMHguYzgwIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgdHJhbnNsYXRpb24gYWRkcmVzcyByZWdpc3RlciA0ICovCisJdWludCAgICBwZXhvdGVhcjQ7ICAgICAgICAgICAgICAvKiAweC5jODQgLSBQQ0kgRXhwcmVzcyBvdXRib3VuZCB0cmFuc2xhdGlvbiBleHRlbmRlZCBhZGRyZXNzIHJlZ2lzdGVyIDQqLworCXVpbnQgICAgcGV4b3diYXI0OyAgICAgICAgICAgICAgLyogMHguYzg4IC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGJhc2UgYWRkcmVzcyByZWdpc3RlciA0Ki8KKwljaGFyICAgIHJlczEyWzRdOworCXVpbnQgICAgcGV4b3dhcjQ7ICAgICAgICAgICAgICAgLyogMHguYzkwIC0gUENJIEV4cHJlc3Mgb3V0Ym91bmQgd2luZG93IGF0dHJpYnV0ZXMgcmVnaXN0ZXIgNCovCisJY2hhciAgICByZXMxM1sxMl07CisJY2hhciAgICByZXMxNFsyNTZdOworCXVpbnQgICAgcGV4aXRhcjM7ICAgICAgICAgICAgICAgLyogMHguZGEwIC0gUENJIEV4cHJlc3MgaW5ib3VuZCB0cmFuc2xhdGlvbiBhZGRyZXNzIHJlZ2lzdGVyIDMgKi8KKwljaGFyICAgIHJlczE1WzRdOworCXVpbnQgICAgcGV4aXdiYXIzOyAgICAgICAgICAgICAgLyogMHguZGE4IC0gUENJIEV4cHJlc3MgaW5ib3VuZCB3aW5kb3cgYmFzZSBhZGRyZXNzIHJlZ2lzdGVyIDMgKi8KKwl1aW50ICAgIHBleGl3YmVhcjM7ICAgICAgICAgICAgIC8qIDB4LmRhYyAtIFBDSSBFeHByZXNzIGluYm91bmQgd2luZG93IGJhc2UgZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlciAzICovCisJdWludCAgICBwZXhpd2FyMzsgICAgICAgICAgICAgICAvKiAweC5kYjAgLSBQQ0kgRXhwcmVzcyBpbmJvdW5kIHdpbmRvdyBhdHRyaWJ1dGVzIHJlZ2lzdGVyIDMgKi8KKwljaGFyICAgIHJlczE2WzEyXTsKKwl1aW50ICAgIHBleGl0YXIyOyAgICAgICAgICAgICAgIC8qIDB4LmRjMCAtIFBDSSBFeHByZXNzIGluYm91bmQgdHJhbnNsYXRpb24gYWRkcmVzcyByZWdpc3RlciAyICovCisJY2hhciAgICByZXMxN1s0XTsKKwl1aW50ICAgIHBleGl3YmFyMjsgICAgICAgICAgICAgIC8qIDB4LmRjOCAtIFBDSSBFeHByZXNzIGluYm91bmQgd2luZG93IGJhc2UgYWRkcmVzcyByZWdpc3RlciAyICovCisJdWludCAgICBwZXhpd2JlYXIyOyAgICAgICAgICAgICAvKiAweC5kY2MgLSBQQ0kgRXhwcmVzcyBpbmJvdW5kIHdpbmRvdyBiYXNlIGV4dGVuZGVkIGFkZHJlc3MgcmVnaXN0ZXIgMiAqLworCXVpbnQgICAgcGV4aXdhcjI7ICAgICAgICAgICAgICAgLyogMHguZGQwIC0gUENJIEV4cHJlc3MgaW5ib3VuZCB3aW5kb3cgYXR0cmlidXRlcyByZWdpc3RlciAyICovCisJY2hhciAgICByZXMxOFsxMl07CisJdWludCAgICBwZXhpdGFyMTsgICAgICAgICAgICAgICAvKiAweC5kZTAgLSBQQ0kgRXhwcmVzcyBpbmJvdW5kIHRyYW5zbGF0aW9uIGFkZHJlc3MgcmVnaXN0ZXIgMiAqLworCWNoYXIgICAgcmVzMTlbNF07CisJdWludCAgICBwZXhpd2JhcjE7ICAgICAgICAgICAgICAvKiAweC5kZTggLSBQQ0kgRXhwcmVzcyBpbmJvdW5kIHdpbmRvdyBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgMiAqLworCXVpbnQgICAgcGV4aXdiZWFyMTsgICAgICAgICAgICAgLyogMHguZGVjIC0gUENJIEV4cHJlc3MgaW5ib3VuZCB3aW5kb3cgYmFzZSBleHRlbmRlZCBhZGRyZXNzIHJlZ2lzdGVyIDIgKi8KKwl1aW50ICAgIHBleGl3YXIxOyAgICAgICAgICAgICAgIC8qIDB4LmRmMCAtIFBDSSBFeHByZXNzIGluYm91bmQgd2luZG93IGF0dHJpYnV0ZXMgcmVnaXN0ZXIgMiAqLworCWNoYXIgICAgcmVzMjBbMTJdOworCXVpbnQgICAgcGV4X2Vycl9kcjsgICAgICAgICAgICAgLyogMHguZTAwIC0gUENJIEV4cHJlc3MgZXJyb3IgZGV0ZWN0IHJlZ2lzdGVyICovCisJY2hhciAgICByZXMyMVs0XTsKKwl1aW50ICAgIHBleF9lcnJfZW47ICAgICAgICAgICAgIC8qIDB4LmUwOCAtIFBDSSBFeHByZXNzIGVycm9yIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgKi8KKwljaGFyICAgIHJlczIyWzRdOworCXVpbnQgICAgcGV4X2Vycl9kaXNyOyAgICAgICAgICAgLyogMHguZTEwIC0gUENJIEV4cHJlc3MgZXJyb3IgZGlzYWJsZSByZWdpc3RlciAqLworCWNoYXIgICAgcmVzMjNbMTJdOworCXVpbnQgICAgcGV4X2Vycl9jYXBfc3RhdDsgICAgICAgLyogMHguZTIwIC0gUENJIEV4cHJlc3MgZXJyb3IgY2FwdHVyZSBzdGF0dXMgcmVnaXN0ZXIgKi8KKwljaGFyICAgIHJlczI0WzRdOworCXVpbnQgICAgcGV4X2Vycl9jYXBfcjA7ICAgICAgICAgLyogMHguZTI4IC0gUENJIEV4cHJlc3MgZXJyb3IgY2FwdHVyZSByZWdpc3RlciAwICovCisJdWludCAgICBwZXhfZXJyX2NhcF9yMTsgICAgICAgICAvKiAweC5lMmMgLSBQQ0kgRXhwcmVzcyBlcnJvciBjYXB0dXJlIHJlZ2lzdGVyIDAgKi8KKwl1aW50ICAgIHBleF9lcnJfY2FwX3IyOyAgICAgICAgIC8qIDB4LmUzMCAtIFBDSSBFeHByZXNzIGVycm9yIGNhcHR1cmUgcmVnaXN0ZXIgMCAqLworCXVpbnQgICAgcGV4X2Vycl9jYXBfcjM7ICAgICAgICAgLyogMHguZTM0IC0gUENJIEV4cHJlc3MgZXJyb3IgY2FwdHVyZSByZWdpc3RlciAwICovCit9IGNjc3JfcGV4X3Q7CisKKy8qIEdsb2JhbCBVdGlsaXR5IFJlZ2lzdGVycyAqLwordHlwZWRlZiBzdHJ1Y3QgY2Nzcl9ndXRzIHsKKwl1aW50CXBvcnBsbHNyOwkvKiAweC4wMDAwIC0gUE9SIFBMTCBSYXRpbyBTdGF0dXMgUmVnaXN0ZXIgKi8KKwl1aW50CXBvcmJtc3I7CS8qIDB4LjAwMDQgLSBQT1IgQm9vdCBNb2RlIFN0YXR1cyBSZWdpc3RlciAqLworCXVpbnQJcG9yaW1wc2NyOwkvKiAweC4wMDA4IC0gUE9SIEkvTyBJbXBlZGFuY2UgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyICovCisJdWludAlwb3JkZXZzcjsJLyogMHguMDAwYyAtIFBPUiBJL08gRGV2aWNlIFN0YXR1cyBSZWdpc3RlciAqLworCXVpbnQJcG9yZGJnbXNyOwkvKiAweC4wMDEwIC0gUE9SIERlYnVnIE1vZGUgU3RhdHVzIFJlZ2lzdGVyICovCisJY2hhcglyZXMxWzEyXTsKKwl1aW50CWdwcG9yY3I7CS8qIDB4LjAwMjAgLSBHZW5lcmFsLVB1cnBvc2UgUE9SIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKwljaGFyCXJlczJbMTJdOworCXVpbnQJZ3Bpb2NyOwkJLyogMHguMDAzMCAtIEdQSU8gQ29udHJvbCBSZWdpc3RlciAqLworCWNoYXIJcmVzM1sxMl07CisJdWludAlncG91dGRyOwkvKiAweC4wMDQwIC0gR2VuZXJhbC1QdXJwb3NlIE91dHB1dCBEYXRhIFJlZ2lzdGVyICovCisJY2hhcglyZXM0WzEyXTsKKwl1aW50CWdwaW5kcjsJCS8qIDB4LjAwNTAgLSBHZW5lcmFsLVB1cnBvc2UgSW5wdXQgRGF0YSBSZWdpc3RlciAqLworCWNoYXIJcmVzNVsxMl07CisJdWludAlwbXV4Y3I7CQkvKiAweC4wMDYwIC0gQWx0ZXJuYXRlIEZ1bmN0aW9uIFNpZ25hbCBNdWx0aXBsZXggQ29udHJvbCAqLworCWNoYXIJcmVzNlsxMl07CisJdWludAlkZXZkaXNyOwkvKiAweC4wMDcwIC0gRGV2aWNlIERpc2FibGUgQ29udHJvbCAqLworCWNoYXIJcmVzN1sxMl07CisJdWludAlwb3dtZ3Rjc3I7CS8qIDB4LjAwODAgLSBQb3dlciBNYW5hZ2VtZW50IFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3RlciAqLworCWNoYXIJcmVzOFsxMl07CisJdWludAltY3BzdW1yOwkvKiAweC4wMDkwIC0gTWFjaGluZSBDaGVjayBTdW1tYXJ5IFJlZ2lzdGVyICovCisJY2hhcglyZXM5WzEyXTsKKwl1aW50CXB2cjsJCS8qIDB4LjAwYTAgLSBQcm9jZXNzb3IgVmVyc2lvbiBSZWdpc3RlciAqLworCXVpbnQJc3ZyOwkJLyogMHguMDBhNCAtIFN5c3RlbSBWZXJzaW9uIFJlZ2lzdGVyICovCisJY2hhcglyZXMxMFszNDE2XTsKKwl1aW50CWNsa29jcjsJCS8qIDB4LjBlMDAgLSBDbG9jayBPdXQgU2VsZWN0IFJlZ2lzdGVyICovCisJY2hhcglyZXMxMVsxMl07CisJdWludAlkZHJkbGxjcjsJLyogMHguMGUxMCAtIEREUiBETEwgQ29udHJvbCBSZWdpc3RlciAqLworCWNoYXIJcmVzMTJbMTJdOworCXVpbnQJbGJjZGxsY3I7CS8qIDB4LjBlMjAgLSBMQkMgRExMIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwljaGFyCXJlczEzWzYxOTE2XTsKK30gY2Nzcl9ndXRzX3Q7CisKKyNlbmRpZiAvKiBfX0FTTV9QT1dFUlBDX0lNTUFQXzg2WFhfSF9fICovCisjZW5kaWYgLyogX19LRVJORUxfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9pby5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9pby5oCmluZGV4IGYxYzI0NjkuLmE5NDk2ZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvaW8uaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2lvLmgKQEAgLTQwLDEyICs0MCw2IEBACiAKIGV4dGVybiB1bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGNpX2lvX2Jhc2U7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBpb19wYWdlX21hc2s7Ci0KLSNkZWZpbmUgTUFYX0lTQV9QT1JUIDB4MTAwMDAKLQotI2RlZmluZSBfSU9fSVNfVkFMSUQocG9ydCkgKChwb3J0KSA+PSBNQVhfSVNBX1BPUlQgfHwgKDEgPDwgKHBvcnQ+PlBBR0VfU0hJRlQpKSBcCi0JCQkgICAgJiBpb19wYWdlX21hc2spCiAKICNpZmRlZiBDT05GSUdfUFBDX0lTRVJJRVMKIC8qIF9fcmF3XyogYWNjZXNzb3JzIGFyZW4ndCBzdXBwb3J0ZWQgb24gaVNlcmllcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9pb21tdS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9pb21tdS5oCmluZGV4IDJhY2Y3YjIuLmE1ZTk4NjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvaW9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2lvbW11LmgKQEAgLTY2LDcgKzY2LDggQEAKIC8qIEluaXRpYWxpemVzIGFuIGlvbW11X3RhYmxlIGJhc2VkIGluIHZhbHVlcyBzZXQgaW4gdGhlIHBhc3NlZC1pbgogICogc3RydWN0dXJlCiAgKi8KLWV4dGVybiBzdHJ1Y3QgaW9tbXVfdGFibGUgKmlvbW11X2luaXRfdGFibGUoc3RydWN0IGlvbW11X3RhYmxlICogdGJsKTsKK2V4dGVybiBzdHJ1Y3QgaW9tbXVfdGFibGUgKmlvbW11X2luaXRfdGFibGUoc3RydWN0IGlvbW11X3RhYmxlICogdGJsLAorCQkJCQkgICAgaW50IG5pZCk7CiAKIGV4dGVybiBpbnQgaW9tbXVfbWFwX3NnKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGlvbW11X3RhYmxlICp0YmwsCiAJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dsaXN0LCBpbnQgbmVsZW1zLCB1bnNpZ25lZCBsb25nIG1hc2ssCkBAIC03NSw3ICs3Niw4IEBACiAJCWludCBuZWxlbXMsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbik7CiAKIGV4dGVybiB2b2lkICppb21tdV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwgc2l6ZV90IHNpemUsCi0JCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIHVuc2lnbmVkIGxvbmcgbWFzaywgZ2ZwX3QgZmxhZyk7CisJCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIHVuc2lnbmVkIGxvbmcgbWFzaywKKwkJZ2ZwX3QgZmxhZywgaW50IG5vZGUpOwogZXh0ZXJuIHZvaWQgaW9tbXVfZnJlZV9jb2hlcmVudChzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwgc2l6ZV90IHNpemUsCiAJCXZvaWQgKnZhZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUpOwogZXh0ZXJuIGRtYV9hZGRyX3QgaW9tbXVfbWFwX3NpbmdsZShzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwgdm9pZCAqdmFkZHIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2lycS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9pcnEuaAppbmRleCAxZTlmMjUzLi5hMTBmZWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2lycS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvaXJxLmgKQEAgLTM0Nyw2ICszNDcsOTIgQEAKICNkZWZpbmUJU0lVX0lOVF9QQzEJCSgodWludCkweDNlK0NQTV9JUlFfT0ZGU0VUKQogI2RlZmluZQlTSVVfSU5UX1BDMAkJKCh1aW50KTB4M2YrQ1BNX0lSUV9PRkZTRVQpCiAKKyNlbGlmIGRlZmluZWQoQ09ORklHX1BQQ184Nnh4KQorI2luY2x1ZGUgPGFzbS9tcGM4Nnh4Lmg+CisKKyNkZWZpbmUgTlJfRVBJQ19JTlRTIDQ4CisjaWZuZGVmIE5SXzgyNTlfSU5UUworI2RlZmluZSBOUl84MjU5X0lOVFMgMTYgLypVTEkgMTU3NSBjYW4gcm91dGUgMTIgaW50ZXJydXB0cyAqLworI2VuZGlmCisjZGVmaW5lIE5VTV84MjU5X0lOVEVSUlVQVFMgTlJfODI1OV9JTlRTCisKKyNpZm5kZWYgSTgyNTlfT0ZGU0VUCisjZGVmaW5lIEk4MjU5X09GRlNFVCAwCisjZW5kaWYKKworI2RlZmluZSBOUl9JUlFTIDI1NgorCisvKiBJbnRlcm5hbCBJUlFzIG9uIE1QQzg2eHggT3BlblBJQyAqLworCisjaWZuZGVmIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUCisjZGVmaW5lIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUIE5SXzgyNTlfSU5UUworI2VuZGlmCisKKy8qIFRoZSA0OCBpbnRlcm5hbCBzb3VyY2VzICovCisjZGVmaW5lIE1QQzg2eHhfSVJRX05VTEwgICAgICAgICggMCArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9NQ00gICAgICAgICAoIDEgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfRERSICAgICAgICAgKCAyICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX0xCQyAgICAgICAgICggMyArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9ETUEwICAgICAgICAoIDQgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfRE1BMSAgICAgICAgKCA1ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX0RNQTIgICAgICAgICggNiArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9ETUEzICAgICAgICAoIDcgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKworLyogbm8gMTAsMTEgKi8KKyNkZWZpbmUgTVBDODZ4eF9JUlFfVUFSVDIgICAgICAgKDEyICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX1RTRUMxX1RYICAgICgxMyArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9UU0VDMV9SWCAgICAoMTQgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfVFNFQzNfVFggICAgKDE1ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX1RTRUMzX1JYICAgICgxNiArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9UU0VDM19FUlJPUiAoMTcgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfVFNFQzFfRVJST1IgKDE4ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX1RTRUMyX1RYICAgICgxOSArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9UU0VDMl9SWCAgICAoMjAgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfVFNFQzRfVFggICAgKDIxICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX1RTRUM0X1JYICAgICgyMiArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9UU0VDNF9FUlJPUiAoMjMgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfVFNFQzJfRVJST1IgKDI0ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisvKiBubyAyNSAqLworI2RlZmluZSBNUEM4Nnh4X0lSUV9VQVJUMSAgICAgICAoMjYgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfSUlDICAgICAgICAgKDI3ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX1BFUkZNT04gICAgICAgKDI4ICsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisvKiBubyAyOSwzMCwzMSAqLworI2RlZmluZSBNUEM4Nnh4X0lSUV9TUklPX0VSUk9SICAgICgzMiArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9TUklPX09VVF9CRUxMICgzMyArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9TUklPX0lOX0JFTEwgICgzNCArIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorLyogbm8gMzUsMzYgKi8KKyNkZWZpbmUgTVBDODZ4eF9JUlFfU1JJT19PVVRfTVNHMSAoMzcgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfU1JJT19JTl9NU0cxICAoMzggKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfU1JJT19PVVRfTVNHMiAoMzkgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKyNkZWZpbmUgTVBDODZ4eF9JUlFfU1JJT19JTl9NU0cyICAoNDAgKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKworLyogVGhlIDEyIGV4dGVybmFsIGludGVycnVwdCBsaW5lcyAqLworI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFRfQkFTRQk0OAorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQwCSgwICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQxCSgxICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQyCSgyICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQzCSgzICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ0CSg0ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ1CSg1ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ2CSg2ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ3CSg3ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ4CSg4ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQ5CSg5ICsgTVBDODZ4eF9JUlFfRVhUX0JBU0UgXAorCQkrIE1QQzg2eHhfT1BFTlBJQ19JUlFfT0ZGU0VUKQorI2RlZmluZSBNUEM4Nnh4X0lSUV9FWFQxMAkoMTAgKyBNUEM4Nnh4X0lSUV9FWFRfQkFTRSBcCisJCSsgTVBDODZ4eF9PUEVOUElDX0lSUV9PRkZTRVQpCisjZGVmaW5lIE1QQzg2eHhfSVJRX0VYVDExCSgxMSArIE1QQzg2eHhfSVJRX0VYVF9CQVNFIFwKKwkJKyBNUEM4Nnh4X09QRU5QSUNfSVJRX09GRlNFVCkKKwogI2Vsc2UgLyogQ09ORklHXzQweCArIENPTkZJR184eHggKi8KIC8qCiAgKiB0aGlzIGlzIHRoZSAjIGlycSdzIGZvciBhbGwgcHBjIGFyY2gncyAocG1hYy9jaHJwL3ByZXApCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaW9tbXUuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvaXNlcmllcy9pb21tdS5oCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9pb21tdS5oCnJlbmFtZSB0byBpbmNsdWRlL2FzbS1wb3dlcnBjL2lzZXJpZXMvaW9tbXUuaAppbmRleCBjYjU2NThmLi4wZWRiZmUxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvaW9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2lzZXJpZXMvaW9tbXUuaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgX1BMQVRGT1JNU19JU0VSSUVTX0lPTU1VX0gKLSNkZWZpbmUgX1BMQVRGT1JNU19JU0VSSUVTX0lPTU1VX0gKKyNpZm5kZWYgX0FTTV9QT1dFUlBDX0lTRVJJRVNfSU9NTVVfSAorI2RlZmluZSBfQVNNX1BPV0VSUENfSVNFUklFU19JT01NVV9ICiAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgIFN0ZXBoZW4gUm90aHdlbGwsIElCTSBDb3Jwb3JhdGlvbgpAQCAtMzIsNCArMzIsNCBAQAogCQl1bnNpZ25lZCBjaGFyIHNsb3RubywgdW5zaWduZWQgY2hhciB2aXJ0YnVzLAogCQlzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCk7CiAKLSNlbmRpZiAvKiBfUExBVEZPUk1TX0lTRVJJRVNfSU9NTVVfSCAqLworI2VuZGlmIC8qIF9BU01fUE9XRVJQQ19JU0VSSUVTX0lPTU1VX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMva2R1bXAuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMva2R1bXAuaAppbmRleCBhODdhZWQwLi41YTVjM2I1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2tkdW1wLmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9rZHVtcC5oCkBAIC0xLDEzICsxLDM4IEBACiAjaWZuZGVmIF9QUEM2NF9LRFVNUF9ICiAjZGVmaW5lIF9QUEM2NF9LRFVNUF9ICiAKKy8qIEtkdW1wIGtlcm5lbCBydW5zIGF0IDMyIE1CLCBjaGFuZ2UgYXQgeW91ciBwZXJpbC4gKi8KKyNkZWZpbmUgS0RVTVBfS0VSTkVMQkFTRQkweDIwMDAwMDAKKwogLyogSG93IG1hbnkgYnl0ZXMgdG8gcmVzZXJ2ZSBhdCB6ZXJvIGZvciBrZHVtcC4gVGhlIHJlc2VydmUgbGltaXQgc2hvdWxkCi0gKiBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0cmFtcG9saW5lJ3MgZW5kIGFkZHJlc3MuICovCisgKiBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0cmFtcG9saW5lJ3MgZW5kIGFkZHJlc3MuCisgKiBSZXNlcnZlIHRvIHRoZSBlbmQgb2YgdGhlIEZXTk1JIGFyZWEsIHNlZSBoZWFkXzY0LlMgKi8KICNkZWZpbmUgS0RVTVBfUkVTRVJWRV9MSU1JVAkweDgwMDAKIAorI2lmZGVmIENPTkZJR19DUkFTSF9EVU1QCisKKyNkZWZpbmUgUEhZU0lDQUxfU1RBUlQJS0RVTVBfS0VSTkVMQkFTRQogI2RlZmluZSBLRFVNUF9UUkFNUE9MSU5FX1NUQVJUCTB4MDEwMAogI2RlZmluZSBLRFVNUF9UUkFNUE9MSU5FX0VORAkweDMwMDAKIAotZXh0ZXJuIHZvaWQga2R1bXBfc2V0dXAodm9pZCk7CisjZWxzZSAvKiAhQ09ORklHX0NSQVNIX0RVTVAgKi8KKworI2RlZmluZSBQSFlTSUNBTF9TVEFSVAkweDAKKworI2VuZGlmIC8qIENPTkZJR19DUkFTSF9EVU1QICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjaWZkZWYgQ09ORklHX0NSQVNIX0RVTVAKKworZXh0ZXJuIHZvaWQgcmVzZXJ2ZV9rZHVtcF90cmFtcG9saW5lKHZvaWQpOworZXh0ZXJuIHZvaWQgc2V0dXBfa2R1bXBfdHJhbXBvbGluZSh2b2lkKTsKKworI2Vsc2UgLyogIUNPTkZJR19DUkFTSF9EVU1QICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZCByZXNlcnZlX2tkdW1wX3RyYW1wb2xpbmUodm9pZCkgeyA7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXR1cF9rZHVtcF90cmFtcG9saW5lKHZvaWQpIHsgOyB9CisKKyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfRFVNUCAqLworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogCiAjZW5kaWYgLyogX19QUEM2NF9LRFVNUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2tleGVjLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2tleGVjLmgKaW5kZXggNmEyYWYyZi4uZWZlODg3MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9rZXhlYy5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMva2V4ZWMuaApAQCAtMzEsOSArMzEsMTAgQEAKICNkZWZpbmUgS0VYRUNfQVJDSCBLRVhFQ19BUkNIX1BQQwogI2VuZGlmCiAKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKICNpZmRlZiBDT05GSUdfS0VYRUMKIAotI2lmbmRlZiBfX0FTU0VNQkxZX18KICNpZmRlZiBfX3Bvd2VycGM2NF9fCiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2FwdHVyaW5nIHJlZ2lzdGVyIHN0YXRlcyBpZiBjb21pbmcKQEAgLTEyMyw4ICsxMjQsMTkgQEAKIGV4dGVybiB2b2lkIGRlZmF1bHRfbWFjaGluZV9jcmFzaF9zaHV0ZG93bihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAKIGV4dGVybiB2b2lkIG1hY2hpbmVfa2V4ZWNfc2ltcGxlKHN0cnVjdCBraW1hZ2UgKmltYWdlKTsKK2V4dGVybiBpbnQgb3ZlcmxhcHNfY3Jhc2hrZXJuZWwodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKTsKK2V4dGVybiB2b2lkIHJlc2VydmVfY3Jhc2hrZXJuZWwodm9pZCk7CiAKLSNlbmRpZiAvKiAhIF9fQVNTRU1CTFlfXyAqLworI2Vsc2UgLyogIUNPTkZJR19LRVhFQyAqLworCitzdGF0aWMgaW5saW5lIGludCBvdmVybGFwc19jcmFzaGtlcm5lbCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCByZXNlcnZlX2NyYXNoa2VybmVsKHZvaWQpIHsgOyB9CisKICNlbmRpZiAvKiBDT05GSUdfS0VYRUMgKi8KKyNlbmRpZiAvKiAhIF9fQVNTRU1CTFlfXyAqLwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KICNlbmRpZiAvKiBfQVNNX1BPV0VSUENfS0VYRUNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9tYWNoZGVwLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL21hY2hkZXAuaAppbmRleCAzZTdkMzdhLi43M2RiMWY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL21hY2hkZXAuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL21hY2hkZXAuaApAQCAtMjM3LDYgKzIzNywxMSBAQAogCSAqLwogCXZvaWQgKCptYWNoaW5lX2tleGVjKShzdHJ1Y3Qga2ltYWdlICppbWFnZSk7CiAjZW5kaWYgLyogQ09ORklHX0tFWEVDICovCisKKyNpZmRlZiBDT05GSUdfUENJX01TSQorCWludCAoKmVuYWJsZV9tc2kpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKKwl2b2lkICgqZGlzYWJsZV9tc2kpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKKyNlbmRpZiAvKiBDT05GSUdfUENJX01TSSAqLwogfTsKIAogZXh0ZXJuIHZvaWQgcG93ZXI0X2lkbGUodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL21tdS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9tbXUuaAppbmRleCAzMWY3MjE5Li4zYTVlYmUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL21tdS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvbW11LmgKQEAgLTk2LDYgKzk2LDggQEAKICNkZWZpbmUgSFBURV9SX0ZMQUdTCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwMDAwM2ZmKQogI2RlZmluZSBIUFRFX1JfUFAJCUFTTV9DT05TVCgweDAwMDAwMDAwMDAwMDAwMDMpCiAjZGVmaW5lIEhQVEVfUl9OCQlBU01fQ09OU1QoMHgwMDAwMDAwMDAwMDAwMDA0KQorI2RlZmluZSBIUFRFX1JfQwkJQVNNX0NPTlNUKDB4MDAwMDAwMDAwMDAwMDA4MCkKKyNkZWZpbmUgSFBURV9SX1IJCUFTTV9DT05TVCgweDAwMDAwMDAwMDAwMDAxMDApCiAKIC8qIFZhbHVlcyBmb3IgUFAgKGFzc3VtZXMgS3M9MCwgS3A9MSkgKi8KIC8qIHBwMCB3aWxsIGFsd2F5cyBiZSAwIGZvciBsaW51eCAgICAgKi8KQEAgLTE2Myw2ICsxNjUsMTYgQEAKIGV4dGVybiBzdHJ1Y3QgbW11X3BzaXplX2RlZiBtbXVfcHNpemVfZGVmc1tNTVVfUEFHRV9DT1VOVF07CiBleHRlcm4gaW50IG1tdV9saW5lYXJfcHNpemU7CiBleHRlcm4gaW50IG1tdV92aXJ0dWFsX3BzaXplOworZXh0ZXJuIGludCBtbXVfdm1hbGxvY19wc2l6ZTsKK2V4dGVybiBpbnQgbW11X2lvX3BzaXplOworCisvKgorICogSWYgdGhlIHByb2Nlc3NvciBzdXBwb3J0cyA2NGsgbm9ybWFsIHBhZ2VzIGJ1dCBub3QgNjRrIGNhY2hlCisgKiBpbmhpYml0ZWQgcGFnZXMsIHdlIGhhdmUgdG8gYmUgcHJlcGFyZWQgdG8gc3dpdGNoIHByb2Nlc3NlcworICogdG8gdXNlIDRrIHBhZ2VzIHdoZW4gdGhleSBjcmVhdGUgY2FjaGUtaW5oaWJpdGVkIG1hcHBpbmdzLgorICogSWYgdGhpcyBpcyB0aGUgY2FzZSwgbW11X2NpX3Jlc3RyaWN0aW9ucyB3aWxsIGJlIHNldCB0byAxLgorICovCitleHRlcm4gaW50IG1tdV9jaV9yZXN0cmljdGlvbnM7CiAKICNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFCiAvKgpAQCAtMjU0LDYgKzI2Niw3IEBACiAKIGV4dGVybiB2b2lkIHN0YWJzX2FsbG9jKHZvaWQpOwogZXh0ZXJuIHZvaWQgc2xiX2luaXRpYWxpemUodm9pZCk7CitleHRlcm4gdm9pZCBzbGJfZmx1c2hfYW5kX3JlYm9sdCh2b2lkKTsKIGV4dGVybiB2b2lkIHN0YWJfaW5pdGlhbGl6ZSh1bnNpZ25lZCBsb25nIHN0YWIpOwogCiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCkBAIC0zNTcsOSArMzcwLDEyIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKIAltbV9jb250ZXh0X2lkX3QgaWQ7CisJdTE2IHVzZXJfcHNpemU7CQkJLyogcGFnZSBzaXplIGluZGV4ICovCisJdTE2IHNsbHA7CQkJLyogU0xCIGVudHJ5IHBhZ2Ugc2l6ZSBlbmNvZGluZyAqLwogI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAl1MTYgbG93X2h0bGJfYXJlYXMsIGhpZ2hfaHRsYl9hcmVhczsKICNlbmRpZgorCXVuc2lnbmVkIGxvbmcgdmRzb19iYXNlOwogfSBtbV9jb250ZXh0X3Q7CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9tbXVfY29udGV4dC5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9tbXVfY29udGV4dC5oCmluZGV4IDFiOGEyNWYuLjhjNmIxYTZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL21tdV9jb250ZXh0LmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9tbXVfY29udGV4dC5oCkBAIC0yMCwxNiArMjAsOSBAQAogICogMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqLwogCi0vKgotICogR2V0dGluZyBpbnRvIGEga2VybmVsIHRocmVhZCwgdGhlcmUgaXMgbm8gdmFsaWQgdXNlciBzZWdtZW50LCBtYXJrCi0gKiBwYWNhLT5wZ2RpciBOVUxMIHNvIHRoYXQgU0xCIG1pc3Mgb24gdXNlciBhZGRyZXNzZXMgd2lsbCBmYXVsdAotICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZW50ZXJfbGF6eV90bGIoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQkJICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIHsKLSNpZmRlZiBDT05GSUdfUFBDXzY0S19QQUdFUwotCWdldF9wYWNhKCktPnBnZGlyID0gTlVMTDsKLSNlbmRpZiAvKiBDT05GSUdfUFBDXzY0S19QQUdFUyAqLwogfQogCiAjZGVmaW5lIE5PX0NPTlRFWFQJMApAQCAtNTIsMTMgKzQ1LDggQEAKIAkJY3B1X3NldChzbXBfcHJvY2Vzc29yX2lkKCksIG5leHQtPmNwdV92bV9tYXNrKTsKIAogCS8qIE5vIG5lZWQgdG8gZmx1c2ggdXNlcnNwYWNlIHNlZ21lbnRzIGlmIHRoZSBtbSBkb2VzbnQgY2hhbmdlICovCi0jaWZkZWYgQ09ORklHX1BQQ182NEtfUEFHRVMKLQlpZiAocHJldiA9PSBuZXh0ICYmIGdldF9wYWNhKCktPnBnZGlyID09IG5leHQtPnBnZCkKLQkJcmV0dXJuOwotI2Vsc2UKIAlpZiAocHJldiA9PSBuZXh0KQogCQlyZXR1cm47Ci0jZW5kaWYgLyogQ09ORklHX1BQQ182NEtfUEFHRVMgKi8KIAogI2lmZGVmIENPTkZJR19BTFRJVkVDCiAJaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX0FMVElWRUMpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9tcGM4Nnh4LmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL21wYzg2eHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGE2NzE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9tcGM4Nnh4LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIE1QQzg2eHggZGVmaW5pdGlvbnMKKyAqCisgKiBBdXRob3I6IEplZmYgQnJvd24KKyAqCisgKiBDb3B5cmlnaHQgMjAwNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgorICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZkZWYgX19LRVJORUxfXworI2lmbmRlZiBfX0FTTV9QT1dFUlBDX01QQzg2eHhfSF9fCisjZGVmaW5lIF9fQVNNX1BPV0VSUENfTVBDODZ4eF9IX18KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworI2lmZGVmIENPTkZJR19QUENfODZ4eAorCisjaWZkZWYgQ09ORklHX01QQzg2NDFfSFBDTgorI2luY2x1ZGUgPHBsYXRmb3Jtcy84Nnh4L21wYzg2NDFfaHBjbi5oPgorI2VuZGlmCisKKyNkZWZpbmUgX0lPX0JBU0UgICAgICAgIGlzYV9pb19iYXNlCisjZGVmaW5lIF9JU0FfTUVNX0JBU0UgICBpc2FfbWVtX2Jhc2UKKyNpZmRlZiBDT05GSUdfUENJCisjZGVmaW5lIFBDSV9EUkFNX09GRlNFVCBwY2lfZHJhbV9vZmZzZXQKKyNlbHNlCisjZGVmaW5lIFBDSV9EUkFNX09GRlNFVCAwCisjZW5kaWYKKworI2RlZmluZSBDUFUwX0JPT1RfUkVMRUFTRSAweDAxMDAwMDAwCisjZGVmaW5lIENQVTFfQk9PVF9SRUxFQVNFIDB4MDIwMDAwMDAKKyNkZWZpbmUgQ1BVX0FMTF9SRUxFQVNFRCAoQ1BVMF9CT09UX1JFTEVBU0UgfCBDUFUxX0JPT1RfUkVMRUFTRSkKKyNkZWZpbmUgTUNNX1BPUlRfQ09ORklHX09GRlNFVCAweDEwMTAKKworLyogT2Zmc2V0IGZyb20gQ0NTUkJBUiAqLworI2RlZmluZSBNUEM4Nnh4X09QRU5QSUNfT0ZGU0VUCSgweDQwMDAwKQorI2RlZmluZSBNUEM4Nnh4X01DTV9PRkZTRVQgICAgICAoMHgwMDAwMCkKKyNkZWZpbmUgTVBDODZ4eF9NQ01fU0laRSAgICAgICAgKDB4MDIwMDApCisKKyNlbmRpZiAvKiBDT05GSUdfUFBDXzg2eHggKi8KKyNlbmRpZiAvKiBfX0FTTV9QT1dFUlBDX01QQzg2eHhfSF9fICovCisjZW5kaWYgLyogX19LRVJORUxfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9tcGljLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL21waWMuaAppbmRleCA2YjllNzgxLi5mMGQyMmFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL21waWMuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL21waWMuaApAQCAtMjIsNiArMjIsMTAgQEAKICNkZWZpbmUJCU1QSUNfR1JFR19HQ09ORl84MjU5X1BUSFJPVV9ESVMJCTB4MjAwMDAwMDAKICNkZWZpbmUJCU1QSUNfR1JFR19HQ09ORl9CQVNFX01BU0sJCTB4MDAwZmZmZmYKICNkZWZpbmUgTVBJQ19HUkVHX0dMT0JBTF9DT05GXzEJCTB4MDAwMzAKKyNkZWZpbmUJCU1QSUNfR1JFR19HTE9CQUxfQ09ORl8xX1NJRQkJMHgwODAwMDAwMAorI2RlZmluZQkJTVBJQ19HUkVHX0dMT0JBTF9DT05GXzFfQ0xLX1JBVElPX01BU0sJMHg3MDAwMDAwMAorI2RlZmluZQkJTVBJQ19HUkVHX0dMT0JBTF9DT05GXzFfQ0xLX1JBVElPKHIpCVwKKwkJCSgoKHIpIDw8IDI4KSAmIE1QSUNfR1JFR19HTE9CQUxfQ09ORl8xX0NMS19SQVRJT19NQVNLKQogI2RlZmluZSBNUElDX0dSRUdfVkVORE9SXzAJCTB4MDAwNDAKICNkZWZpbmUgTVBJQ19HUkVHX1ZFTkRPUl8xCQkweDAwMDUwCiAjZGVmaW5lIE1QSUNfR1JFR19WRU5ET1JfMgkJMHgwMDA2MApAQCAtMjg0LDYgKzI4OCwxMiBAQAogLyogVGhpcyBvbmUgZ2V0cyB0byB0aGUgcHJpbWFyeSBtcGljICovCiBleHRlcm4gaW50IG1waWNfZ2V0X2lycShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAKKy8qIFNldCB0aGUgRVBJQyBjbG9jayByYXRpbyAqLwordm9pZCBtcGljX3NldF9jbGtfcmF0aW8oc3RydWN0IG1waWMgKm1waWMsIHUzMiBjbG9ja19yYXRpbyk7CisKKy8qIEVuYWJsZS9EaXNhYmxlIEVQSUMgc2VyaWFsIGludGVycnVwdCBtb2RlICovCit2b2lkIG1waWNfc2V0X3NlcmlhbF9pbnQoc3RydWN0IG1waWMgKm1waWMsIGludCBlbmFibGUpOworCiAvKiBnbG9iYWwgbXBpYyBmb3IgcFNlcmllcyAqLwogZXh0ZXJuIHN0cnVjdCBtcGljICpwU2VyaWVzX21waWM7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGFjYS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKaW5kZXggM2M2ZjY0NC4uMmQ0NTg1ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKQEAgLTc4LDExICs3OCw5IEBACiAJdTY0IGV4bWNbMTBdOwkJLyogdXNlZCBmb3IgbWFjaGluZSBjaGVja3MgKi8KIAl1NjQgZXhzbGJbMTBdOwkJLyogdXNlZCBmb3IgU0xCL3NlZ21lbnQgdGFibGUgbWlzc2VzCiAgCQkJCSAqIG9uIHRoZSBsaW5lYXIgbWFwcGluZyAqLwotI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCi0JcGdkX3QgKnBnZGlyOwotI2VuZGlmIC8qIENPTkZJR19QUENfNjRLX1BBR0VTICovCiAKIAltbV9jb250ZXh0X3QgY29udGV4dDsKKwl1MTYgdm1hbGxvY19zbGxwOwogCXUxNiBzbGJfY2FjaGVbU0xCX0NBQ0hFX0VOVFJJRVNdOwogCXUxNiBzbGJfY2FjaGVfcHRyOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3BhZ2UuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGFnZS5oCmluZGV4IGYwNDY5YjkuLmZiNTk3YjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGFnZS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGFnZS5oCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpZmRlZiBfX0tFUk5FTF9fCiAjaW5jbHVkZSA8YXNtL2FzbS1jb21wYXQuaD4KKyNpbmNsdWRlIDxhc20va2R1bXAuaD4KIAogLyoKICAqIE9uIFBQQzMyIHBhZ2Ugc2l6ZSBpcyA0Sy4gRm9yIFBQQzY0IHdlIHN1cHBvcnQgZWl0aGVyIDRLIG9yIDY0SyBzb2Z0d2FyZQpAQCAtNTEsMTMgKzUyLDYgQEAKICAqIElmIHlvdSB3YW50IHRvIHRlc3QgaWYgc29tZXRoaW5nJ3MgYSBrZXJuZWwgYWRkcmVzcywgdXNlIGlzX2tlcm5lbF9hZGRyKCkuCiAgKi8KIAotI2lmZGVmIENPTkZJR19DUkFTSF9EVU1QCi0vKiBLZHVtcCBrZXJuZWwgcnVucyBhdCAzMiBNQiwgY2hhbmdlIGF0IHlvdXIgcGVyaWwuICovCi0jZGVmaW5lIFBIWVNJQ0FMX1NUQVJUCTB4MjAwMDAwMAotI2Vsc2UKLSNkZWZpbmUgUEhZU0lDQUxfU1RBUlQJMHgwCi0jZW5kaWYKLQogI2RlZmluZSBQQUdFX09GRlNFVCAgICAgQVNNX0NPTlNUKENPTkZJR19LRVJORUxfU1RBUlQpCiAjZGVmaW5lIEtFUk5FTEJBU0UgICAgICAoUEFHRV9PRkZTRVQgKyBQSFlTSUNBTF9TVEFSVCkKIApAQCAtMTk3LDYgKzE5MSw5IEBACiAJCXN0cnVjdCBwYWdlICpwKTsKIGV4dGVybiBpbnQgcGFnZV9pc19yYW0odW5zaWduZWQgbG9uZyBwZm4pOwogCitzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CitleHRlcm4gY29uc3QgY2hhciAqYXJjaF92bWFfbmFtZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CisKICNpbmNsdWRlIDxhc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaD4KICNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wY2ktYnJpZGdlLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3BjaS1icmlkZ2UuaAppbmRleCAzOGRlOTJkLi40ZjU1NTczIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3BjaS1icmlkZ2UuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3BjaS1icmlkZ2UuaApAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlIDxhc20tcHBjL3BjaS1icmlkZ2UuaD4KICNlbHNlCiAKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAKQEAgLTIyLDYgKzIzLDcgQEAKIHN0cnVjdCBwY2lfY29udHJvbGxlciB7CiAJc3RydWN0IHBjaV9idXMgKmJ1czsKIAljaGFyIGlzX2R5bmFtaWM7CisJaW50IG5vZGU7CiAJdm9pZCAqYXJjaF9kYXRhOwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdF9ub2RlOwogCkBAIC03OCwxMiArODAsNiBAQAogCXN0cnVjdAlpb21tdV90YWJsZSAqaW9tbXVfdGFibGU7CS8qIGZvciBwaGIncyBvciBicmlkZ2VzICovCiAJc3RydWN0CXBjaV9kZXYgKnBjaWRldjsJLyogYmFjay1wb2ludGVyIHRvIHRoZSBwY2kgZGV2aWNlICovCiAJc3RydWN0CWRldmljZV9ub2RlICpub2RlOwkvKiBiYWNrLXBvaW50ZXIgdG8gdGhlIGRldmljZV9ub2RlICovCi0jaWZkZWYgQ09ORklHX1BQQ19JU0VSSUVTCi0Jc3RydWN0CWxpc3RfaGVhZCBEZXZpY2VfTGlzdDsKLQlpbnQJSXJxOwkJCS8qIEFzc2lnbmVkIElSUSAqLwotCWludAlGbGFnczsJCQkvKiBQb3NzaWJsZSBmbGFncyhkaXNhYmxlL2Jpc3QpKi8KLQl1OAlMb2dpY2FsU2xvdDsJCS8qIEh2IFNsb3QgSW5kZXggZm9yIFRjZXMgKi8KLSNlbmRpZgogCXUzMgljb25maWdfc3BhY2VbMTZdOwkvKiBzYXZlZCBQQ0kgY29uZmlnIHNwYWNlICovCiB9OwogCkBAIC0xNzEsNiArMTY3LDEyIEBACiAjZGVmaW5lIFBDSV9QUk9CRV9OT1JNQUwJMAkvKiBEbyBub3JtYWwgUENJIHByb2JpbmcgKi8KICNkZWZpbmUgUENJX1BST0JFX0RFVlRSRUUJMQkvKiBJbnN0YW50aWF0ZSBmcm9tIGRldmljZSB0cmVlICovCiAKKyNpZmRlZiBDT05GSUdfTlVNQQorI2RlZmluZSBQSEJfU0VUX05PREUoUEhCLCBOT0RFKQkJKChQSEIpLT5ub2RlID0gKE5PREUpKQorI2Vsc2UKKyNkZWZpbmUgUEhCX1NFVF9OT0RFKFBIQiwgTk9ERSkJCSgoUEhCKS0+bm9kZSA9IC0xKQorI2VuZGlmCisKICNlbmRpZiAvKiBDT05GSUdfUFBDNjQgKi8KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS00ay5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wZ3RhYmxlLTRrLmgKaW5kZXggYjJlMTg2Mi4uZTcwMzYxNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wZ3RhYmxlLTRrLmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wZ3RhYmxlLTRrLmgKQEAgLTc4LDYgKzc4LDggQEAKIAogI2RlZmluZSBwdGVfaXRlcmF0ZV9oYXNoZWRfZW5kKCkgfSB3aGlsZSgwKQogCisjZGVmaW5lIHB0ZV9wYWdlc2l6ZV9pbmRleChwdGUpCU1NVV9QQUdFXzRLCisKIC8qCiAgKiA0LWxldmVsIHBhZ2UgdGFibGVzIHJlbGF0ZWQgYml0cwogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3BndGFibGUtNjRrLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3BndGFibGUtNjRrLmgKaW5kZXggNjUzOTE1MC4uNGI3MTI2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wZ3RhYmxlLTY0ay5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS02NGsuaApAQCAtOTAsNiArOTAsOCBAQAogCiAjZGVmaW5lIHB0ZV9pdGVyYXRlX2hhc2hlZF9lbmQoKSB9IHdoaWxlKDApOyB9IH0gd2hpbGUoMCkKIAorI2RlZmluZSBwdGVfcGFnZXNpemVfaW5kZXgocHRlKQlcCisJKCgocHRlKSAmIF9QQUdFX0NPTUJPKT8gTU1VX1BBR0VfNEs6IE1NVV9QQUdFXzY0SykKIAogI2VuZGlmIC8qICBfX0FTU0VNQkxZX18gKi8KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3BndGFibGUuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS5oCmluZGV4IDk2NGUzMTIuLjhkYmY1YWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcGd0YWJsZS5oCkBAIC00Niw4ICs0Niw4IEBACiAvKgogICogRGVmaW5lIHRoZSBhZGRyZXNzIHJhbmdlIG9mIHRoZSB2bWFsbG9jIFZNIGFyZWEuCiAgKi8KLSNkZWZpbmUgVk1BTExPQ19TVEFSVCAoMHhEMDAwMDAwMDAwMDAwMDAwdWwpCi0jZGVmaW5lIFZNQUxMT0NfU0laRSAgKDB4ODAwMDAwMDAwMDBVTCkKKyNkZWZpbmUgVk1BTExPQ19TVEFSVCBBU01fQ09OU1QoMHhEMDAwMDAwMDAwMDAwMDAwKQorI2RlZmluZSBWTUFMTE9DX1NJWkUgIEFTTV9DT05TVCgweDgwMDAwMDAwMDAwKQogI2RlZmluZSBWTUFMTE9DX0VORCAgIChWTUFMTE9DX1NUQVJUICsgVk1BTExPQ19TSVpFKQogCiAvKgpAQCAtNDEyLDEyICs0MTIsNiBAQAogCQlmbHVzaF90bGJfcGVuZGluZygpOwogCX0KIAlwdGUgPSBfX3B0ZShwdGVfdmFsKHB0ZSkgJiB+X1BBR0VfSFBURUZMQUdTKTsKLQotI2lmZGVmIENPTkZJR19QUENfNjRLX1BBR0VTCi0JaWYgKG1tdV92aXJ0dWFsX3BzaXplICE9IE1NVV9QQUdFXzY0SykKLQkJcHRlID0gX19wdGUocHRlX3ZhbChwdGUpIHwgX1BBR0VfQ09NQk8pOwotI2VuZGlmIC8qIENPTkZJR19QUENfNjRLX1BBR0VTICovCi0KIAkqcHRlcCA9IHB0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wcm9jZXNzb3IuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcHJvY2Vzc29yLmgKaW5kZXggOTNmODNlZi4uMjJlNTRhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wcm9jZXNzb3IuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3Byb2Nlc3Nvci5oCkBAIC0xNDksMTEgKzE0OSwxMSBAQAogCQl1bnNpZ25lZCBpbnQgdmFsOwkvKiBGbG9hdGluZyBwb2ludCBzdGF0dXMgKi8KIAl9IGZwc2NyOwogCWludAkJZnBleGNfbW9kZTsJLyogZmxvYXRpbmctcG9pbnQgZXhjZXB0aW9uIG1vZGUgKi8KKwl1bnNpZ25lZCBpbnQJYWxpZ25fY3RsOwkvKiBhbGlnbm1lbnQgaGFuZGxpbmcgY29udHJvbCAqLwogI2lmZGVmIENPTkZJR19QUEM2NAogCXVuc2lnbmVkIGxvbmcJc3RhcnRfdGI7CS8qIFN0YXJ0IHB1cnIgd2hlbiBwcm9jIHN3aXRjaGVkIGluICovCiAJdW5zaWduZWQgbG9uZwlhY2N1bV90YjsJLyogVG90YWwgYWNjdW1pbGF0ZWQgcHVyciBmb3IgcHJvY2VzcyAqLwogI2VuZGlmCi0JdW5zaWduZWQgbG9uZwl2ZHNvX2Jhc2U7CS8qIGJhc2Ugb2YgdGhlIHZEU08gbGlicmFyeSAqLwogCXVuc2lnbmVkIGxvbmcJZGFicjsJCS8qIERhdGEgYWRkcmVzcyBicmVha3BvaW50IHJlZ2lzdGVyICovCiAjaWZkZWYgQ09ORklHX0FMVElWRUMKIAkvKiBDb21wbGV0ZSBBbHRpVmVjIHJlZ2lzdGVyIHNldCAqLwpAQCAtMTkwLDcgKzE5MCw3IEBACiAJLmZzID0gS0VSTkVMX0RTLCBcCiAJLmZwciA9IHswfSwgXAogCS5mcHNjciA9IHsgLnZhbCA9IDAsIH0sIFwKLQkuZnBleGNfbW9kZSA9IE1TUl9GRTB8TVNSX0ZFMSwgXAorCS5mcGV4Y19tb2RlID0gMCwgXAogfQogI2VuZGlmCiAKQEAgLTIxMiw2ICsyMTIsMTggQEAKIGV4dGVybiBpbnQgZ2V0X2ZwZXhjX21vZGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRyKTsKIGV4dGVybiBpbnQgc2V0X2ZwZXhjX21vZGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCB2YWwpOwogCisjZGVmaW5lIEdFVF9FTkRJQU4odHNrLCBhZHIpIGdldF9lbmRpYW4oKHRzayksIChhZHIpKQorI2RlZmluZSBTRVRfRU5ESUFOKHRzaywgdmFsKSBzZXRfZW5kaWFuKCh0c2spLCAodmFsKSkKKworZXh0ZXJuIGludCBnZXRfZW5kaWFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIGFkcik7CitleHRlcm4gaW50IHNldF9lbmRpYW4oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCB2YWwpOworCisjZGVmaW5lIEdFVF9VTkFMSUdOX0NUTCh0c2ssIGFkcikJZ2V0X3VuYWxpZ25fY3RsKCh0c2spLCAoYWRyKSkKKyNkZWZpbmUgU0VUX1VOQUxJR05fQ1RMKHRzaywgdmFsKQlzZXRfdW5hbGlnbl9jdGwoKHRzayksICh2YWwpKQorCitleHRlcm4gaW50IGdldF91bmFsaWduX2N0bChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBhZHIpOworZXh0ZXJuIGludCBzZXRfdW5hbGlnbl9jdGwoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCB2YWwpOworCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX3VucGFja19mZTAxKHVuc2lnbmVkIGxvbmcgbXNyX2JpdHMpCiB7CiAJcmV0dXJuICgobXNyX2JpdHMgJiBNU1JfRkUwKSA+PiAxMCkgfCAoKG1zcl9iaXRzICYgTVNSX0ZFMSkgPj4gOCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3Byb20uaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcHJvbS5oCmluZGV4IGY0ZTJjYTYuLjAxMGQxODYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcHJvbS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcHJvbS5oCkBAIC0yMjksNyArMjI5LDE2IEBACiBleHRlcm4gaW50IG9mX3BjaV9hZGRyZXNzX3RvX3Jlc291cmNlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2LCBpbnQgYmFyLAogCQkJCSAgICAgIHN0cnVjdCByZXNvdXJjZSAqcik7CiAKKy8qIFBhcnNlIHRoZSBpYm0sZG1hLXdpbmRvdyBwcm9wZXJ0eSBvZiBhbiBPRiBub2RlIGludG8gdGhlIGJ1c25vLCBwaHlzIGFuZAorICogc2l6ZSBwYXJhbWV0ZXJzLgorICovCit2b2lkIG9mX3BhcnNlX2RtYV93aW5kb3coc3RydWN0IGRldmljZV9ub2RlICpkbiwgdW5zaWduZWQgY2hhciAqZG1hX3dpbmRvd19wcm9wLAorCQl1bnNpZ25lZCBsb25nICpidXNubywgdW5zaWduZWQgbG9uZyAqcGh5cywgdW5zaWduZWQgbG9uZyAqc2l6ZSk7CisKIGV4dGVybiB2b2lkIGtkdW1wX21vdmVfZGV2aWNlX3RyZWUodm9pZCk7CiAKKy8qIENQVSBPRiBub2RlIG1hdGNoaW5nICovCitzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX2dldF9jcHVfbm9kZShpbnQgY3B1LCB1bnNpZ25lZCBpbnQgKnRocmVhZCk7CisKICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYgLyogX1BPV0VSUENfUFJPTV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3B0cmFjZS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wdHJhY2UuaAppbmRleCA5YzU1MGIzLi5kYzRjYjljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3B0cmFjZS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcHRyYWNlLmgKQEAgLTIyOSwxMyArMjI5LDEzIEBACiAjZGVmaW5lIFBUUkFDRV9HRVRfREVCVUdSRUcJMjUKICNkZWZpbmUgUFRSQUNFX1NFVF9ERUJVR1JFRwkyNgogCi0jaWZkZWYgX19wb3dlcnBjNjRfXwogLyogQWRkaXRpb25hbCBQVFJBQ0UgcmVxdWVzdHMgaW1wbGVtZW50ZWQgb24gUG93ZXJQQy4gKi8KICNkZWZpbmUgUFBDX1BUUkFDRV9HRVRSRUdTCTB4OTkJLyogR2V0IEdQUnMgMCAtIDMxICovCiAjZGVmaW5lIFBQQ19QVFJBQ0VfU0VUUkVHUwkweDk4CS8qIFNldCBHUFJzIDAgLSAzMSAqLwogI2RlZmluZSBQUENfUFRSQUNFX0dFVEZQUkVHUwkweDk3CS8qIEdldCBGUFJzIDAgLSAzMSAqLwogI2RlZmluZSBQUENfUFRSQUNFX1NFVEZQUkVHUwkweDk2CS8qIFNldCBGUFJzIDAgLSAzMSAqLwogCisjaWZkZWYgX19wb3dlcnBjNjRfXwogLyogQ2FsbHMgdG8gdHJhY2UgYSA2NGJpdCBwcm9ncmFtIGZyb20gYSAzMmJpdCBwcm9ncmFtICovCiAjZGVmaW5lIFBQQ19QVFJBQ0VfUEVFS1RFWFRfMzI2NCAweDk1CiAjZGVmaW5lIFBQQ19QVFJBQ0VfUEVFS0RBVEFfMzI2NCAweDk0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3JlZy5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9yZWcuaAppbmRleCBiZDQ2N2JmLi5jZjczNDc1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3JlZy5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvcmVnLmgKQEAgLTkzLDggKzkzLDggQEAKICNkZWZpbmUgTVNSX0xFCQlfX01BU0soTVNSX0xFX0xHKQkvKiBMaXR0bGUgRW5kaWFuICovCiAKICNpZmRlZiBDT05GSUdfUFBDNjQKLSNkZWZpbmUgTVNSXwkJTVNSX01FIHwgTVNSX1JJIHwgTVNSX0lSIHwgTVNSX0RSIHwgTVNSX0lTRgotI2RlZmluZSBNU1JfS0VSTkVMICAgICAgTVNSXyB8IE1TUl9TRiB8IE1TUl9IVgorI2RlZmluZSBNU1JfCQlNU1JfTUUgfCBNU1JfUkkgfCBNU1JfSVIgfCBNU1JfRFIgfCBNU1JfSVNGIHxNU1JfSFYKKyNkZWZpbmUgTVNSX0tFUk5FTCAgICAgIE1TUl8gfCBNU1JfU0YKIAogI2RlZmluZSBNU1JfVVNFUjMyCU1TUl8gfCBNU1JfUFIgfCBNU1JfRUUKICNkZWZpbmUgTVNSX1VTRVI2NAlNU1JfVVNFUjMyIHwgTVNSX1NGCkBAIC0xNTMsNyArMTUzLDcgQEAKICNkZWZpbmUgU1BSTl9EQUJSCTB4M0Y1CS8qIERhdGEgQWRkcmVzcyBCcmVha3BvaW50IFJlZ2lzdGVyICovCiAjZGVmaW5lICAgREFCUl9UUkFOU0xBVElPTgkoMVVMIDw8IDIpCiAjZGVmaW5lIFNQUk5fREFSCTB4MDEzCS8qIERhdGEgQWRkcmVzcyBSZWdpc3RlciAqLwotI2RlZmluZQlTUFJOX0RTSVNSCTB4MDEyCS8qIERhdGEgU3RvcmFnZSBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIFNQUk5fRFNJU1IJMHgwMTIJLyogRGF0YSBTdG9yYWdlIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KICNkZWZpbmUgICBEU0lTUl9OT0hQVEUJCTB4NDAwMDAwMDAJLyogbm8gdHJhbnNsYXRpb24gZm91bmQgKi8KICNkZWZpbmUgICBEU0lTUl9QUk9URkFVTFQJMHgwODAwMDAwMAkvKiBwcm90ZWN0aW9uIGZhdWx0ICovCiAjZGVmaW5lICAgRFNJU1JfSVNTVE9SRQkJMHgwMjAwMDAwMAkvKiBhY2Nlc3Mgd2FzIGEgc3RvcmUgKi8KQEAgLTI1OCwxNiArMjU4LDE2IEBACiAjZGVmaW5lIFNQUk5fSUFCUgkweDNGMgkvKiBJbnN0cnVjdGlvbiBBZGRyZXNzIEJyZWFrcG9pbnQgUmVnaXN0ZXIgKi8KICNkZWZpbmUgU1BSTl9ISUQ0CTB4M0Y0CQkvKiA5NzAgSElENCAqLwogI2RlZmluZSBTUFJOX0hJRDUJMHgzRjYJCS8qIDk3MCBISUQ1ICovCi0jZGVmaW5lCVNQUk5fSElENgkweDNGOQkvKiBCRSBISUQgNiAqLwotI2RlZmluZQkgIEhJRDZfTEIJKDB4MEY8PDEyKSAvKiBDb25jdXJyZW50IExhcmdlIFBhZ2UgTW9kZXMgKi8KLSNkZWZpbmUJICBISUQ2X0RMUAkoMTw8MjApCS8qIERpc2FibGUgYWxsIGxhcmdlIHBhZ2UgbW9kZXMgKDRLIG9ubHkpICovCi0jZGVmaW5lCVNQUk5fVFNDX0NFTEwJMHgzOTkJLyogVGhyZWFkIHN3aXRjaCBjb250cm9sIG9uIENlbGwgKi8KLSNkZWZpbmUJICBUU0NfQ0VMTF9ERUNfRU5BQkxFXzAJMHg0MDAwMDAgLyogRGVjcmVtZW50ZXIgSW50ZXJydXB0ICovCi0jZGVmaW5lCSAgVFNDX0NFTExfREVDX0VOQUJMRV8xCTB4MjAwMDAwIC8qIERlY3JlbWVudGVyIEludGVycnVwdCAqLwotI2RlZmluZQkgIFRTQ19DRUxMX0VFX0VOQUJMRQkweDEwMDAwMCAvKiBFeHRlcm5hbCBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUJICBUU0NfQ0VMTF9FRV9CT09TVAkweDA4MDAwMCAvKiBFeHRlcm5hbCBJbnRlcnJ1cHQgQm9vc3QgKi8KLSNkZWZpbmUJU1BSTl9UU0MgCTB4M0ZECS8qIFRocmVhZCBzd2l0Y2ggY29udHJvbCBvbiBvdGhlcnMgKi8KLSNkZWZpbmUJU1BSTl9UU1QgCTB4M0ZDCS8qIFRocmVhZCBzd2l0Y2ggdGltZW91dCBvbiBvdGhlcnMgKi8KKyNkZWZpbmUgU1BSTl9ISUQ2CTB4M0Y5CS8qIEJFIEhJRCA2ICovCisjZGVmaW5lICAgSElENl9MQgkoMHgwRjw8MTIpIC8qIENvbmN1cnJlbnQgTGFyZ2UgUGFnZSBNb2RlcyAqLworI2RlZmluZSAgIEhJRDZfRExQCSgxPDwyMCkJLyogRGlzYWJsZSBhbGwgbGFyZ2UgcGFnZSBtb2RlcyAoNEsgb25seSkgKi8KKyNkZWZpbmUgU1BSTl9UU0NfQ0VMTAkweDM5OQkvKiBUaHJlYWQgc3dpdGNoIGNvbnRyb2wgb24gQ2VsbCAqLworI2RlZmluZSAgIFRTQ19DRUxMX0RFQ19FTkFCTEVfMAkweDQwMDAwMCAvKiBEZWNyZW1lbnRlciBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgICBUU0NfQ0VMTF9ERUNfRU5BQkxFXzEJMHgyMDAwMDAgLyogRGVjcmVtZW50ZXIgSW50ZXJydXB0ICovCisjZGVmaW5lICAgVFNDX0NFTExfRUVfRU5BQkxFCTB4MTAwMDAwIC8qIEV4dGVybmFsIEludGVycnVwdCAqLworI2RlZmluZSAgIFRTQ19DRUxMX0VFX0JPT1NUCTB4MDgwMDAwIC8qIEV4dGVybmFsIEludGVycnVwdCBCb29zdCAqLworI2RlZmluZSBTUFJOX1RTQyAJMHgzRkQJLyogVGhyZWFkIHN3aXRjaCBjb250cm9sIG9uIG90aGVycyAqLworI2RlZmluZSBTUFJOX1RTVCAJMHgzRkMJLyogVGhyZWFkIHN3aXRjaCB0aW1lb3V0IG9uIG90aGVycyAqLwogI2lmICFkZWZpbmVkKFNQUk5fSUFDMSkgJiYgIWRlZmluZWQoU1BSTl9JQUMyKQogI2RlZmluZSBTUFJOX0lBQzEJMHgzRjQJCS8qIEluc3RydWN0aW9uIEFkZHJlc3MgQ29tcGFyZSAxICovCiAjZGVmaW5lIFNQUk5fSUFDMgkweDNGNQkJLyogSW5zdHJ1Y3Rpb24gQWRkcmVzcyBDb21wYXJlIDIgKi8KQEAgLTM2Miw3ICszNjIsNyBAQAogI2VuZGlmCiAjZGVmaW5lIFNQUk5fUFRFSEkJMHgzRDUJLyogOTgxIDc0NTAgUFRFIEhJIHdvcmQgKFMvVyBUTEIgbG9hZCkgKi8KICNkZWZpbmUgU1BSTl9QVEVMTwkweDNENgkvKiA5ODIgNzQ1MCBQVEUgTE8gd29yZCAoUy9XIFRMQiBsb2FkKSAqLwotI2RlZmluZQlTUFJOX1BVUlIJMHgxMzUJLyogUHJvY2Vzc29yIFV0aWxpemF0aW9uIG9mIFJlc291cmNlcyBSZWcgKi8KKyNkZWZpbmUgU1BSTl9QVVJSCTB4MTM1CS8qIFByb2Nlc3NvciBVdGlsaXphdGlvbiBvZiBSZXNvdXJjZXMgUmVnICovCiAjZGVmaW5lIFNQUk5fUFZSCTB4MTFGCS8qIFByb2Nlc3NvciBWZXJzaW9uIFJlZ2lzdGVyICovCiAjZGVmaW5lIFNQUk5fUlBBCTB4M0Q2CS8qIFJlcXVpcmVkIFBoeXNpY2FsIEFkZHJlc3MgUmVnaXN0ZXIgKi8KICNkZWZpbmUgU1BSTl9TREEJMHgzQkYJLyogU2FtcGxlZCBEYXRhIEFkZHJlc3MgUmVnaXN0ZXIgKi8KQEAgLTM4Niw2ICszODYsOCBAQAogI2RlZmluZSAgIFNSUjFfV0FLRU1UCQkweDAwMjgwMDAwIC8qIG10Y3RybCAqLwogI2RlZmluZSAgIFNSUjFfV0FLRURFQwkJMHgwMDE4MDAwMCAvKiBEZWNyZW1lbnRlciBpbnRlcnJ1cHQgKi8KICNkZWZpbmUgICBTUlIxX1dBS0VUSEVSTQkweDAwMTAwMDAwIC8qIFRoZXJtYWwgbWFuYWdlbWVudCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgU1BSTl9IU1JSMAkweDEzQQkvKiBTYXZlL1Jlc3RvcmUgUmVnaXN0ZXIgMCAqLworI2RlZmluZSBTUFJOX0hTUlIxCTB4MTNCCS8qIFNhdmUvUmVzdG9yZSBSZWdpc3RlciAxICovCiAKICNpZm5kZWYgU1BSTl9TVlIKICNkZWZpbmUgU1BSTl9TVlIJMHgxMUUJLyogU3lzdGVtIFZlcnNpb24gUmVnaXN0ZXIgKi8KQEAgLTQ0Myw2ICs0NDUsMTAgQEAKICNkZWZpbmUgICBNTUNSQV9TSUhWCTB4MTAwMDAwMDBVTCAvKiBzdGF0ZSBvZiBNU1IgSFYgd2hlbiBTSUFSIHNldCAqLwogI2RlZmluZSAgIE1NQ1JBX1NJUFIJMHgwODAwMDAwMFVMIC8qIHN0YXRlIG9mIE1TUiBQUiB3aGVuIFNJQVIgc2V0ICovCiAjZGVmaW5lICAgTU1DUkFfU0FNUExFX0VOQUJMRSAweDAwMDAwMDAxVUwgLyogZW5hYmxlIHNhbXBsaW5nICovCisjZGVmaW5lICAgUE9XRVI2X01NQ1JBX1NJSFYgICAweDAwMDAwNDAwMDAwMDAwMDBVTEwKKyNkZWZpbmUgICBQT1dFUjZfTU1DUkFfU0lQUiAgIDB4MDAwMDAyMDAwMDAwMDAwMFVMTAorI2RlZmluZSAgIFBPV0VSNl9NTUNSQV9USFJNCTB4MDAwMDAwMjBVTAorI2RlZmluZSAgIFBPV0VSNl9NTUNSQV9PVEhFUgkweDAwMDAwMDBFVUwKICNkZWZpbmUgU1BSTl9QTUMxCTc4NwogI2RlZmluZSBTUFJOX1BNQzIJNzg4CiAjZGVmaW5lIFNQUk5fUE1DMwk3ODkKQEAgLTQ5NSw2ICs1MDEsMTkgQEAKICNkZWZpbmUgTU1DUjBfUE1DMl9MT0FETUlTU1RJTUUJMHg1CiAjZW5kaWYKIAorLyoKKyAqIEFuIG10ZnNmIGluc3RydWN0aW9uIHdpdGggdGhlIEwgYml0IHNldC4gT24gQ1BVcyB0aGF0IHN1cHBvcnQgdGhpcyBhCisgKiBmdWxsIDY0Yml0cyBvZiBGUFNDUiBpcyByZXN0b3JlZCBhbmQgb24gb3RoZXIgQ1BVcyBpdCBpcyBpZ25vcmVkLgorICoKKyAqIFVudGlsIGJpbnV0aWxzIGdldHMgdGhlIG5ldyBmb3JtIG9mIG10ZnNmLCBoYXJkd2lyZSB0aGUgaW5zdHJ1Y3Rpb24uCisgKi8KKyNpZmRlZiBDT05GSUdfUFBDNjQKKyNkZWZpbmUgTVRGU0ZfTChSRUcpIFwKKwkubG9uZyAoMHhmYzAwMDU4ZSB8ICgoMHhmZikgPDwgMTcpIHwgKChSRUcpIDw8IDExKSB8ICgxIDw8IDI1KSkKKyNlbHNlCisjZGVmaW5lIE1URlNGX0woUkVHKQltdGZzZgkweGZmLCAoUkVHKQorI2VuZGlmCisKIC8qIFByb2Nlc3NvciBWZXJzaW9uIFJlZ2lzdGVyIChQVlIpIGZpZWxkIGV4dHJhY3Rpb24gKi8KIAogI2RlZmluZSBQVlJfVkVSKHB2cikJKCgocHZyKSA+PiAgMTYpICYgMHhGRkZGKQkvKiBWZXJzaW9uIGZpZWxkICovCkBAIC01NTksMjAgKzU3OCwyMCBAQAogCiAvKiA2NC1iaXQgcHJvY2Vzc29ycyAqLwogLyogWFhYIHRoZSBwcmVmaXggc2hvdWxkIGJlIFBWUl8sIHdlJ2xsIGRvIGEgZ2xvYmFsIHN3ZWVwIHRvIGZpeCBpdCBvbmUgZGF5ICovCi0jZGVmaW5lCVBWX05PUlRIU1RBUgkweDAwMzMKLSNkZWZpbmUJUFZfUFVMU0FSCTB4MDAzNAotI2RlZmluZQlQVl9QT1dFUjQJMHgwMDM1Ci0jZGVmaW5lCVBWX0lDRVNUQVIJMHgwMDM2Ci0jZGVmaW5lCVBWX1NTVEFSCTB4MDAzNwotI2RlZmluZQlQVl9QT1dFUjRwCTB4MDAzOAorI2RlZmluZSBQVl9OT1JUSFNUQVIJMHgwMDMzCisjZGVmaW5lIFBWX1BVTFNBUgkweDAwMzQKKyNkZWZpbmUgUFZfUE9XRVI0CTB4MDAzNQorI2RlZmluZSBQVl9JQ0VTVEFSCTB4MDAzNgorI2RlZmluZSBQVl9TU1RBUgkweDAwMzcKKyNkZWZpbmUgUFZfUE9XRVI0cAkweDAwMzgKICNkZWZpbmUgUFZfOTcwCQkweDAwMzkKLSNkZWZpbmUJUFZfUE9XRVI1CTB4MDAzQQorI2RlZmluZSBQVl9QT1dFUjUJMHgwMDNBCiAjZGVmaW5lIFBWX1BPV0VSNXAJMHgwMDNCCiAjZGVmaW5lIFBWXzk3MEZYCTB4MDAzQwotI2RlZmluZQlQVl82MzAJCTB4MDA0MAotI2RlZmluZQlQVl82MzBwCTB4MDA0MQotI2RlZmluZQlQVl85NzBNUAkweDAwNDQKLSNkZWZpbmUJUFZfQkUJCTB4MDA3MAorI2RlZmluZSBQVl82MzAJCTB4MDA0MAorI2RlZmluZSBQVl82MzBwCTB4MDA0MQorI2RlZmluZSBQVl85NzBNUAkweDAwNDQKKyNkZWZpbmUgUFZfQkUJCTB4MDA3MAogCiAvKgogICogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIFNMQi4gSWYgdGhpcyBldmVyIGNoYW5nZXMgd2Ugc2hvdWxkIGhhbmRsZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9ydGFzLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3J0YXMuaAppbmRleCBmNDNjNjgzLi4wMmUyMTNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3J0YXMuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3J0YXMuaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBSVEFTX1JNT0JVRl9NQVggKDY0ICogMTAyNCkKIAogLyogUlRBUyByZXR1cm4gc3RhdHVzIGNvZGVzICovCisjZGVmaW5lIFJUQVNfTk9UX1NVU1BFTkRBQkxFCS05MDA0CiAjZGVmaW5lIFJUQVNfQlVTWQkJLTIgICAgLyogUlRBUyBCdXN5ICovCiAjZGVmaW5lIFJUQVNfRVhURU5ERURfREVMQVlfTUlOCTk5MDAKICNkZWZpbmUgUlRBU19FWFRFTkRFRF9ERUxBWV9NQVgJOTkwNQpAQCAtMTc3LDEyICsxNzgsOCBAQAogZXh0ZXJuIHZvaWQgcnRhc19nZXRfcnRjX3RpbWUoc3RydWN0IHJ0Y190aW1lICpydGNfdGltZSk7CiBleHRlcm4gaW50IHJ0YXNfc2V0X3J0Y190aW1lKHN0cnVjdCBydGNfdGltZSAqcnRjX3RpbWUpOwogCi0vKiBHaXZlbiBhbiBSVEFTIHN0YXR1cyBjb2RlIG9mIDk5MDAuLjk5MDUgY29tcHV0ZSB0aGUgaGludGVkIGRlbGF5ICovCi11bnNpZ25lZCBpbnQgcnRhc19leHRlbmRlZF9idXN5X2RlbGF5X3RpbWUoaW50IHN0YXR1cyk7Ci1zdGF0aWMgaW5saW5lIGludCBydGFzX2lzX2V4dGVuZGVkX2J1c3koaW50IHN0YXR1cykKLXsKLQlyZXR1cm4gc3RhdHVzID49IDk5MDAgJiYgc3RhdHVzIDw9IDk5MDk7Ci19CitleHRlcm4gdW5zaWduZWQgaW50IHJ0YXNfYnVzeV9kZWxheV90aW1lKGludCBzdGF0dXMpOworZXh0ZXJuIHVuc2lnbmVkIGludCBydGFzX2J1c3lfZGVsYXkoaW50IHN0YXR1cyk7CiAKIGV4dGVybiB2b2lkIHBTZXJpZXNfbG9nX2Vycm9yKGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGVycl90eXBlLCBpbnQgZmF0YWwpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9zcHUuaAppbmRleCA5NTcxM2YzLi45NjA5ZDNlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvc3B1LmgKQEAgLTI0LDggKzI0LDggQEAKICNkZWZpbmUgX1NQVV9ICiAjaWZkZWYgX19LRVJORUxfXwogCi0jaW5jbHVkZSA8bGludXgva3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2Rldi5oPgogCiAjZGVmaW5lIExTX1NJWkUgKDI1NiAqIDEwMjQpCiAjZGVmaW5lIExTX0FERFJfTUFTSyAoTFNfU0laRSAtIDEpCkBAIC0xMjIsNyArMTIyLDYgQEAKIAl1NjQgZmxhZ3M7CiAJdTY0IGRhcjsKIAl1NjQgZHNpc3I7Ci0Jc3RydWN0IGtyZWYga3JlZjsKIAlzaXplX3QgbHNfc2l6ZTsKIAl1bnNpZ25lZCBpbnQgc2xiX3JlcGxhY2U7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW07CkBAIC0xMzQsNyArMTMzLDYgQEAKIAlpbnQgY2xhc3NfMF9wZW5kaW5nOwogCXNwaW5sb2NrX3QgcmVnaXN0ZXJfbG9jazsKIAotCXUzMiBzdG9wX2NvZGU7CiAJdm9pZCAoKiB3Ym94X2NhbGxiYWNrKShzdHJ1Y3Qgc3B1ICpzcHUpOwogCXZvaWQgKCogaWJveF9jYWxsYmFjaykoc3RydWN0IHNwdSAqc3B1KTsKIAl2b2lkICgqIHN0b3BfY2FsbGJhY2spKHN0cnVjdCBzcHUgKnNwdSk7CkBAIC0xNDMsNiArMTQxLDggQEAKIAljaGFyIGlycV9jMFs4XTsKIAljaGFyIGlycV9jMVs4XTsKIAljaGFyIGlycV9jMls4XTsKKworCXN0cnVjdCBzeXNfZGV2aWNlIHN5c2RldjsKIH07CiAKIHN0cnVjdCBzcHUgKnNwdV9hbGxvYyh2b2lkKTsKQEAgLTE4MSwyOSArMTgxLDYgQEAKICNlbmRpZiAvKiBNT0RVTEUgKi8KIAogCi0vKiBhY2Nlc3MgdG8gcHJpdjEgcmVnaXN0ZXJzICovCi12b2lkIHNwdV9pbnRfbWFza19hbmQoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKTsKLXZvaWQgc3B1X2ludF9tYXNrX29yKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzLCB1NjQgbWFzayk7Ci12b2lkIHNwdV9pbnRfbWFza19zZXQoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKTsKLXU2NCBzcHVfaW50X21hc2tfZ2V0KHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzKTsKLXZvaWQgc3B1X2ludF9zdGF0X2NsZWFyKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzLCB1NjQgc3RhdCk7Ci11NjQgc3B1X2ludF9zdGF0X2dldChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcyk7Ci12b2lkIHNwdV9pbnRfcm91dGVfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHJvdXRlKTsKLXU2NCBzcHVfbWZjX2Rhcl9nZXQoc3RydWN0IHNwdSAqc3B1KTsKLXU2NCBzcHVfbWZjX2RzaXNyX2dldChzdHJ1Y3Qgc3B1ICpzcHUpOwotdm9pZCBzcHVfbWZjX2RzaXNyX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBkc2lzcik7Ci12b2lkIHNwdV9tZmNfc2RyX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBzZHIpOwotdm9pZCBzcHVfbWZjX3NyMV9zZXQoc3RydWN0IHNwdSAqc3B1LCB1NjQgc3IxKTsKLXU2NCBzcHVfbWZjX3NyMV9nZXQoc3RydWN0IHNwdSAqc3B1KTsKLXZvaWQgc3B1X21mY190Y2xhc3NfaWRfc2V0KHN0cnVjdCBzcHUgKnNwdSwgdTY0IHRjbGFzc19pZCk7Ci11NjQgc3B1X21mY190Y2xhc3NfaWRfZ2V0KHN0cnVjdCBzcHUgKnNwdSk7Ci12b2lkIHNwdV90bGJfaW52YWxpZGF0ZShzdHJ1Y3Qgc3B1ICpzcHUpOwotdm9pZCBzcHVfcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBpZCk7Ci11NjQgc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9nZXQoc3RydWN0IHNwdSAqc3B1KTsKLXZvaWQgc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBlbmFibGUpOwotdTY0IHNwdV9yZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9nZXQoc3RydWN0IHNwdSAqc3B1KTsKLQotCiAvKgogICogVGhpcyBkZWZpbmVzIHRoZSBMb2NhbCBTdG9yZSwgUHJvYmxlbSBBcmVhIGFuZCBQcml2bGVnZSBBcmVhIG9mIGFuIFNQVS4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy9zcHVfY3NhLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdV9jc2EuaAppbmRleCBiYTE4ZDdkLi45NjRjMmQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdV9jc2EuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdV9jc2EuaApAQCAtODYsMTAgKzg2LDE4IEBACiAJc3RydWN0IHNwdV9yZWcxMjggZXZlbnRfbWFzazsKIAlzdHJ1Y3Qgc3B1X3JlZzEyOCBzcnIwOwogCXN0cnVjdCBzcHVfcmVnMTI4IHN0b3BwZWRfc3RhdHVzOwotCXN0cnVjdCBzcHVfcmVnMTI4IHBhZFsxMTldOwkvKiAnbHMnIG11c3QgYmUgcGFnZS1hbGlnbmVkLiAqLwotCXVuc2lnbmVkIGNoYXIgbHNbTFNfU0laRV07CisKKwkvKgorCSAqICdscycgbXVzdCBiZSBwYWdlLWFsaWduZWQgb24gYWxsIGNvbmZpZ3VyYXRpb25zLgorCSAqIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gcmVseSBvbiBoYXZpbmcgdGhlIHNwdS1nY2MKKwkgKiBpbnN0YWxsZWQgdG8gYnVpbGQgdGhlIGtlcm5lbCBhbmQgdGhpcyBzdHJ1Y3R1cmUKKwkgKiBpcyB1c2VkIGluIHRoZSBTUFUtc2lkZSBjb2RlLCBtYWtlIGl0IDY0ay1wYWdlCisJICogYWxpZ25lZCBmb3Igbm93LgorCSAqLworCXVuc2lnbmVkIGNoYXIgbHNbTFNfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg2NTUzNikpKTsKIH07CiAKKyNpZm5kZWYgX19TUFVfXwogLyoKICAqIHN0cnVjdCBzcHVfcHJvYmxlbV9jb2xsYXBzZWQgLSBjb25kZW5zZWQgcHJvYmxlbSBzdGF0ZSBhcmVhLCB3L28gcGFkcy4KICAqLwpAQCAtMjUwLDYgKzI1OCw3IEBACiBleHRlcm4gaW50IHNwdV9zd2l0Y2goc3RydWN0IHNwdV9zdGF0ZSAqcHJldiwgc3RydWN0IHNwdV9zdGF0ZSAqbmV3LAogCQkgICAgICBzdHJ1Y3Qgc3B1ICpzcHUpOwogCisjZW5kaWYgLyogIV9fU1BVX18gKi8KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwogI2VuZGlmIC8qIF9TUFVfQ1NBX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3NwdV9wcml2MS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9zcHVfcHJpdjEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDBjNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9zcHVfcHJpdjEuaApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIERlZmluZXMgYW4gc3B1IGh5cGVydmlzb3IgYWJzdHJhY3Rpb24gbGF5ZXIuCisgKgorICogIENvcHlyaWdodCAyMDA2IFNvbnkgQ29ycC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaWYgIWRlZmluZWQoX1NQVV9QUklWMV9IKQorI2RlZmluZSBfU1BVX1BSSVYxX0gKKyNpZiBkZWZpbmVkKF9fS0VSTkVMX18pCisKK3N0cnVjdCBzcHU7CisKKy8qIGFjY2VzcyB0byBwcml2MSByZWdpc3RlcnMgKi8KKworc3RydWN0IHNwdV9wcml2MV9vcHMKK3sKKwl2b2lkICgqaW50X21hc2tfYW5kKSAoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKTsKKwl2b2lkICgqaW50X21hc2tfb3IpIChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IG1hc2spOworCXZvaWQgKCppbnRfbWFza19zZXQpIChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IG1hc2spOworCXU2NCAoKmludF9tYXNrX2dldCkgKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzKTsKKwl2b2lkICgqaW50X3N0YXRfY2xlYXIpIChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IHN0YXQpOworCXU2NCAoKmludF9zdGF0X2dldCkgKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzKTsKKwl2b2lkICgqY3B1X2FmZmluaXR5X3NldCkgKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNwdSk7CisJdTY0ICgqbWZjX2Rhcl9nZXQpIChzdHJ1Y3Qgc3B1ICpzcHUpOworCXU2NCAoKm1mY19kc2lzcl9nZXQpIChzdHJ1Y3Qgc3B1ICpzcHUpOworCXZvaWQgKCptZmNfZHNpc3Jfc2V0KSAoc3RydWN0IHNwdSAqc3B1LCB1NjQgZHNpc3IpOworCXZvaWQgKCptZmNfc2RyX3NldCkgKHN0cnVjdCBzcHUgKnNwdSwgdTY0IHNkcik7CisJdm9pZCAoKm1mY19zcjFfc2V0KSAoc3RydWN0IHNwdSAqc3B1LCB1NjQgc3IxKTsKKwl1NjQgKCptZmNfc3IxX2dldCkgKHN0cnVjdCBzcHUgKnNwdSk7CisJdm9pZCAoKm1mY190Y2xhc3NfaWRfc2V0KSAoc3RydWN0IHNwdSAqc3B1LCB1NjQgdGNsYXNzX2lkKTsKKwl1NjQgKCptZmNfdGNsYXNzX2lkX2dldCkgKHN0cnVjdCBzcHUgKnNwdSk7CisJdm9pZCAoKnRsYl9pbnZhbGlkYXRlKSAoc3RydWN0IHNwdSAqc3B1KTsKKwl2b2lkICgqcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX3NldCkgKHN0cnVjdCBzcHUgKnNwdSwgdTY0IGlkKTsKKwl1NjQgKCpyZXNvdXJjZV9hbGxvY2F0aW9uX2dyb3VwSURfZ2V0KSAoc3RydWN0IHNwdSAqc3B1KTsKKwl2b2lkICgqcmVzb3VyY2VfYWxsb2NhdGlvbl9lbmFibGVfc2V0KSAoc3RydWN0IHNwdSAqc3B1LCB1NjQgZW5hYmxlKTsKKwl1NjQgKCpyZXNvdXJjZV9hbGxvY2F0aW9uX2VuYWJsZV9nZXQpIChzdHJ1Y3Qgc3B1ICpzcHUpOworfTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcHVfcHJpdjFfb3BzKiBzcHVfcHJpdjFfb3BzOworCitzdGF0aWMgaW5saW5lIHZvaWQKK3NwdV9pbnRfbWFza19hbmQgKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzLCB1NjQgbWFzaykKK3sKKwlzcHVfcHJpdjFfb3BzLT5pbnRfbWFza19hbmQoc3B1LCBjbGFzcywgbWFzayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X2ludF9tYXNrX29yIChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IG1hc2spCit7CisJc3B1X3ByaXYxX29wcy0+aW50X21hc2tfb3Ioc3B1LCBjbGFzcywgbWFzayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X2ludF9tYXNrX3NldCAoc3RydWN0IHNwdSAqc3B1LCBpbnQgY2xhc3MsIHU2NCBtYXNrKQoreworCXNwdV9wcml2MV9vcHMtPmludF9tYXNrX3NldChzcHUsIGNsYXNzLCBtYXNrKTsKK30KKworc3RhdGljIGlubGluZSB1NjQKK3NwdV9pbnRfbWFza19nZXQgKHN0cnVjdCBzcHUgKnNwdSwgaW50IGNsYXNzKQoreworCXJldHVybiBzcHVfcHJpdjFfb3BzLT5pbnRfbWFza19nZXQoc3B1LCBjbGFzcyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X2ludF9zdGF0X2NsZWFyIChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcywgdTY0IHN0YXQpCit7CisJc3B1X3ByaXYxX29wcy0+aW50X3N0YXRfY2xlYXIoc3B1LCBjbGFzcywgc3RhdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0CitzcHVfaW50X3N0YXRfZ2V0IChzdHJ1Y3Qgc3B1ICpzcHUsIGludCBjbGFzcykKK3sKKwlyZXR1cm4gc3B1X3ByaXYxX29wcy0+aW50X3N0YXRfZ2V0IChzcHUsIGNsYXNzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzcHVfY3B1X2FmZmluaXR5X3NldCAoc3RydWN0IHNwdSAqc3B1LCBpbnQgY3B1KQoreworCXNwdV9wcml2MV9vcHMtPmNwdV9hZmZpbml0eV9zZXQoc3B1LCBjcHUpOworfQorCitzdGF0aWMgaW5saW5lIHU2NAorc3B1X21mY19kYXJfZ2V0IChzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJcmV0dXJuIHNwdV9wcml2MV9vcHMtPm1mY19kYXJfZ2V0KHNwdSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0CitzcHVfbWZjX2RzaXNyX2dldCAoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBzcHVfcHJpdjFfb3BzLT5tZmNfZHNpc3JfZ2V0KHNwdSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X21mY19kc2lzcl9zZXQgKHN0cnVjdCBzcHUgKnNwdSwgdTY0IGRzaXNyKQoreworCXNwdV9wcml2MV9vcHMtPm1mY19kc2lzcl9zZXQoc3B1LCBkc2lzcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X21mY19zZHJfc2V0IChzdHJ1Y3Qgc3B1ICpzcHUsIHU2NCBzZHIpCit7CisJc3B1X3ByaXYxX29wcy0+bWZjX3Nkcl9zZXQoc3B1LCBzZHIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3NwdV9tZmNfc3IxX3NldCAoc3RydWN0IHNwdSAqc3B1LCB1NjQgc3IxKQoreworCXNwdV9wcml2MV9vcHMtPm1mY19zcjFfc2V0KHNwdSwgc3IxKTsKK30KKworc3RhdGljIGlubGluZSB1NjQKK3NwdV9tZmNfc3IxX2dldCAoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBzcHVfcHJpdjFfb3BzLT5tZmNfc3IxX2dldChzcHUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3NwdV9tZmNfdGNsYXNzX2lkX3NldCAoc3RydWN0IHNwdSAqc3B1LCB1NjQgdGNsYXNzX2lkKQoreworCXNwdV9wcml2MV9vcHMtPm1mY190Y2xhc3NfaWRfc2V0KHNwdSwgdGNsYXNzX2lkKTsKK30KKworc3RhdGljIGlubGluZSB1NjQKK3NwdV9tZmNfdGNsYXNzX2lkX2dldCAoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBzcHVfcHJpdjFfb3BzLT5tZmNfdGNsYXNzX2lkX2dldChzcHUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3NwdV90bGJfaW52YWxpZGF0ZSAoc3RydWN0IHNwdSAqc3B1KQoreworCXNwdV9wcml2MV9vcHMtPnRsYl9pbnZhbGlkYXRlKHNwdSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9zZXQgKHN0cnVjdCBzcHUgKnNwdSwgdTY0IGlkKQoreworCXNwdV9wcml2MV9vcHMtPnJlc291cmNlX2FsbG9jYXRpb25fZ3JvdXBJRF9zZXQoc3B1LCBpZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0CitzcHVfcmVzb3VyY2VfYWxsb2NhdGlvbl9ncm91cElEX2dldCAoc3RydWN0IHNwdSAqc3B1KQoreworCXJldHVybiBzcHVfcHJpdjFfb3BzLT5yZXNvdXJjZV9hbGxvY2F0aW9uX2dyb3VwSURfZ2V0KHNwdSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3B1X3Jlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldCAoc3RydWN0IHNwdSAqc3B1LCB1NjQgZW5hYmxlKQoreworCXNwdV9wcml2MV9vcHMtPnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX3NldChzcHUsIGVuYWJsZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0CitzcHVfcmVzb3VyY2VfYWxsb2NhdGlvbl9lbmFibGVfZ2V0IChzdHJ1Y3Qgc3B1ICpzcHUpCit7CisJcmV0dXJuIHNwdV9wcml2MV9vcHMtPnJlc291cmNlX2FsbG9jYXRpb25fZW5hYmxlX2dldChzcHUpOworfQorCisvKiBUaGUgZGVjbGFyYXRpb25zIGZvbG93aW5nIGFyZSBwdXQgaGVyZSBmb3IgY29udmVuaWVuY2UKKyAqIGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIHBsYXRmb3JtIHNldHVwIGNvZGUKKyAqIGZvciBpbml0aWFsaXppbmcgc3B1X3ByaXYxX29wcy4KKyAqLworCitleHRlcm4gY29uc3Qgc3RydWN0IHNwdV9wcml2MV9vcHMgc3B1X3ByaXYxX21taW9fb3BzOworCisjZW5kaWYgLyogX19LRVJORUxfXyAqLworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3N5c3RibC5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9zeXN0YmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWM4NWNlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9zeXN0YmwuaApAQCAtMCwwICsxLDMwNiBAQAorLyoKKyAqIExpc3Qgb2YgcG93ZXJwYyBzeXNjYWxscy4gRm9yIHRoZSBtZWFuaW5nIG9mIHRoZSBfU1BVIHN1ZmZpeCBzZWUKKyAqIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVfY2FsbGJhY2tzLmMKKyAqLworCitTWVNDQUxMKHJlc3RhcnRfc3lzY2FsbCkKK1NZU0NBTEwoZXhpdCkKK1BQQ19TWVMoZm9yaykKK1NZU0NBTExfU1BVKHJlYWQpCitTWVNDQUxMX1NQVSh3cml0ZSkKK0NPTVBBVF9TWVNfU1BVKG9wZW4pCitTWVNDQUxMX1NQVShjbG9zZSkKK0NPTVBBVF9TWVNfU1BVKHdhaXRwaWQpCitDT01QQVRfU1lTX1NQVShjcmVhdCkKK1NZU0NBTExfU1BVKGxpbmspCitTWVNDQUxMX1NQVSh1bmxpbmspCitDT01QQVRfU1lTKGV4ZWN2ZSkKK1NZU0NBTExfU1BVKGNoZGlyKQorQ09NUEFUX1NZU19TUFUodGltZSkKK1NZU0NBTExfU1BVKG1rbm9kKQorU1lTQ0FMTF9TUFUoY2htb2QpCitTWVNDQUxMX1NQVShsY2hvd24pCitTWVNDQUxMKG5pX3N5c2NhbGwpCitPTERTWVMoc3RhdCkKK1NZU1hfU1BVKHN5c19sc2VlayxwcGMzMl9sc2VlayxzeXNfbHNlZWspCitTWVNDQUxMX1NQVShnZXRwaWQpCitDT01QQVRfU1lTKG1vdW50KQorU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfb2xkdW1vdW50LHN5c19vbGR1bW91bnQpCitTWVNDQUxMX1NQVShzZXR1aWQpCitTWVNDQUxMX1NQVShnZXR1aWQpCitDT01QQVRfU1lTX1NQVShzdGltZSkKK0NPTVBBVF9TWVMocHRyYWNlKQorU1lTQ0FMTF9TUFUoYWxhcm0pCitPTERTWVMoZnN0YXQpCitDT01QQVRfU1lTKHBhdXNlKQorQ09NUEFUX1NZUyh1dGltZSkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK0NPTVBBVF9TWVNfU1BVKGFjY2VzcykKK0NPTVBBVF9TWVNfU1BVKG5pY2UpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitTWVNDQUxMX1NQVShzeW5jKQorQ09NUEFUX1NZU19TUFUoa2lsbCkKK1NZU0NBTExfU1BVKHJlbmFtZSkKK0NPTVBBVF9TWVNfU1BVKG1rZGlyKQorU1lTQ0FMTF9TUFUocm1kaXIpCitTWVNDQUxMX1NQVShkdXApCitTWVNDQUxMX1NQVShwaXBlKQorQ09NUEFUX1NZU19TUFUodGltZXMpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitTWVNDQUxMX1NQVShicmspCitTWVNDQUxMX1NQVShzZXRnaWQpCitTWVNDQUxMX1NQVShnZXRnaWQpCitTWVNDQUxMKHNpZ25hbCkKK1NZU0NBTExfU1BVKGdldGV1aWQpCitTWVNDQUxMX1NQVShnZXRlZ2lkKQorU1lTQ0FMTChhY2N0KQorU1lTQ0FMTCh1bW91bnQpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitDT01QQVRfU1lTX1NQVShpb2N0bCkKK0NPTVBBVF9TWVNfU1BVKGZjbnRsKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorQ09NUEFUX1NZU19TUFUoc2V0cGdpZCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU1goc3lzX25pX3N5c2NhbGwsc3lzX29sZHVuYW1lLCBzeXNfb2xkdW5hbWUpCitDT01QQVRfU1lTX1NQVSh1bWFzaykKK1NZU0NBTExfU1BVKGNocm9vdCkKK1NZU0NBTEwodXN0YXQpCitTWVNDQUxMX1NQVShkdXAyKQorU1lTQ0FMTF9TUFUoZ2V0cHBpZCkKK1NZU0NBTExfU1BVKGdldHBncnApCitTWVNDQUxMX1NQVShzZXRzaWQpCitTWVMzMk9OTFkoc2lnYWN0aW9uKQorU1lTQ0FMTF9TUFUoc2dldG1hc2spCitDT01QQVRfU1lTX1NQVShzc2V0bWFzaykKK1NZU0NBTExfU1BVKHNldHJldWlkKQorU1lTQ0FMTF9TUFUoc2V0cmVnaWQpCitTWVMzMk9OTFkoc2lnc3VzcGVuZCkKK0NPTVBBVF9TWVMoc2lncGVuZGluZykKK0NPTVBBVF9TWVNfU1BVKHNldGhvc3RuYW1lKQorQ09NUEFUX1NZU19TUFUoc2V0cmxpbWl0KQorQ09NUEFUX1NZUyhvbGRfZ2V0cmxpbWl0KQorQ09NUEFUX1NZU19TUFUoZ2V0cnVzYWdlKQorQ09NUEFUX1NZU19TUFUoZ2V0dGltZW9mZGF5KQorQ09NUEFUX1NZU19TUFUoc2V0dGltZW9mZGF5KQorQ09NUEFUX1NZU19TUFUoZ2V0Z3JvdXBzKQorQ09NUEFUX1NZU19TUFUoc2V0Z3JvdXBzKQorU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfbmlfc3lzY2FsbCxwcGNfc2VsZWN0KQorU1lTQ0FMTF9TUFUoc3ltbGluaykKK09MRFNZUyhsc3RhdCkKK0NPTVBBVF9TWVNfU1BVKHJlYWRsaW5rKQorU1lTQ0FMTCh1c2VsaWIpCitTWVNDQUxMKHN3YXBvbikKK1NZU0NBTEwocmVib290KQorU1lTWChzeXNfbmlfc3lzY2FsbCxvbGQzMl9yZWFkZGlyLG9sZF9yZWFkZGlyKQorU1lTQ0FMTF9TUFUobW1hcCkKK1NZU0NBTExfU1BVKG11bm1hcCkKK1NZU0NBTExfU1BVKHRydW5jYXRlKQorU1lTQ0FMTF9TUFUoZnRydW5jYXRlKQorU1lTQ0FMTF9TUFUoZmNobW9kKQorU1lTQ0FMTF9TUFUoZmNob3duKQorQ09NUEFUX1NZU19TUFUoZ2V0cHJpb3JpdHkpCitDT01QQVRfU1lTX1NQVShzZXRwcmlvcml0eSkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK0NPTVBBVF9TWVMoc3RhdGZzKQorQ09NUEFUX1NZUyhmc3RhdGZzKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorQ09NUEFUX1NZU19TUFUoc29ja2V0Y2FsbCkKK0NPTVBBVF9TWVNfU1BVKHN5c2xvZykKK0NPTVBBVF9TWVNfU1BVKHNldGl0aW1lcikKK0NPTVBBVF9TWVNfU1BVKGdldGl0aW1lcikKK0NPTVBBVF9TWVNfU1BVKG5ld3N0YXQpCitDT01QQVRfU1lTX1NQVShuZXdsc3RhdCkKK0NPTVBBVF9TWVNfU1BVKG5ld2ZzdGF0KQorU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfdW5hbWUsc3lzX3VuYW1lKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorU1lTQ0FMTF9TUFUodmhhbmd1cCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK0NPTVBBVF9TWVNfU1BVKHdhaXQ0KQorU1lTQ0FMTChzd2Fwb2ZmKQorQ09NUEFUX1NZU19TUFUoc3lzaW5mbykKK0NPTVBBVF9TWVMoaXBjKQorU1lTQ0FMTF9TUFUoZnN5bmMpCitTWVMzMk9OTFkoc2lncmV0dXJuKQorUFBDX1NZUyhjbG9uZSkKK0NPTVBBVF9TWVNfU1BVKHNldGRvbWFpbm5hbWUpCitQUENfU1lTX1NQVShuZXd1bmFtZSkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK0NPTVBBVF9TWVNfU1BVKGFkanRpbWV4KQorU1lTQ0FMTF9TUFUobXByb3RlY3QpCitTWVNYKHN5c19uaV9zeXNjYWxsLGNvbXBhdF9zeXNfc2lncHJvY21hc2ssc3lzX3NpZ3Byb2NtYXNrKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorU1lTQ0FMTChpbml0X21vZHVsZSkKK1NZU0NBTEwoZGVsZXRlX21vZHVsZSkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTEwocXVvdGFjdGwpCitDT01QQVRfU1lTX1NQVShnZXRwZ2lkKQorU1lTQ0FMTF9TUFUoZmNoZGlyKQorU1lTQ0FMTF9TUFUoYmRmbHVzaCkKK0NPTVBBVF9TWVMoc3lzZnMpCitTWVNYX1NQVShwcGM2NF9wZXJzb25hbGl0eSxwcGM2NF9wZXJzb25hbGl0eSxzeXNfcGVyc29uYWxpdHkpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitTWVNDQUxMX1NQVShzZXRmc3VpZCkKK1NZU0NBTExfU1BVKHNldGZzZ2lkKQorU1lTQ0FMTF9TUFUobGxzZWVrKQorQ09NUEFUX1NZU19TUFUoZ2V0ZGVudHMpCitTWVNYX1NQVShzeXNfc2VsZWN0LHBwYzMyX3NlbGVjdCxwcGNfc2VsZWN0KQorU1lTQ0FMTF9TUFUoZmxvY2spCitTWVNDQUxMX1NQVShtc3luYykKK0NPTVBBVF9TWVNfU1BVKHJlYWR2KQorQ09NUEFUX1NZU19TUFUod3JpdGV2KQorQ09NUEFUX1NZU19TUFUoZ2V0c2lkKQorU1lTQ0FMTF9TUFUoZmRhdGFzeW5jKQorQ09NUEFUX1NZUyhzeXNjdGwpCitTWVNDQUxMX1NQVShtbG9jaykKK1NZU0NBTExfU1BVKG11bmxvY2spCitTWVNDQUxMX1NQVShtbG9ja2FsbCkKK1NZU0NBTExfU1BVKG11bmxvY2thbGwpCitDT01QQVRfU1lTX1NQVShzY2hlZF9zZXRwYXJhbSkKK0NPTVBBVF9TWVNfU1BVKHNjaGVkX2dldHBhcmFtKQorQ09NUEFUX1NZU19TUFUoc2NoZWRfc2V0c2NoZWR1bGVyKQorQ09NUEFUX1NZU19TUFUoc2NoZWRfZ2V0c2NoZWR1bGVyKQorU1lTQ0FMTF9TUFUoc2NoZWRfeWllbGQpCitDT01QQVRfU1lTX1NQVShzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KQorQ09NUEFUX1NZU19TUFUoc2NoZWRfZ2V0X3ByaW9yaXR5X21pbikKK0NPTVBBVF9TWVNfU1BVKHNjaGVkX3JyX2dldF9pbnRlcnZhbCkKK0NPTVBBVF9TWVNfU1BVKG5hbm9zbGVlcCkKK1NZU0NBTExfU1BVKG1yZW1hcCkKK1NZU0NBTExfU1BVKHNldHJlc3VpZCkKK1NZU0NBTExfU1BVKGdldHJlc3VpZCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTExfU1BVKHBvbGwpCitDT01QQVRfU1lTKG5mc3NlcnZjdGwpCitTWVNDQUxMX1NQVShzZXRyZXNnaWQpCitTWVNDQUxMX1NQVShnZXRyZXNnaWQpCitDT01QQVRfU1lTX1NQVShwcmN0bCkKK0NPTVBBVF9TWVMocnRfc2lncmV0dXJuKQorQ09NUEFUX1NZUyhydF9zaWdhY3Rpb24pCitDT01QQVRfU1lTKHJ0X3NpZ3Byb2NtYXNrKQorQ09NUEFUX1NZUyhydF9zaWdwZW5kaW5nKQorQ09NUEFUX1NZUyhydF9zaWd0aW1lZHdhaXQpCitDT01QQVRfU1lTKHJ0X3NpZ3F1ZXVlaW5mbykKK0NPTVBBVF9TWVMocnRfc2lnc3VzcGVuZCkKK0NPTVBBVF9TWVNfU1BVKHByZWFkNjQpCitDT01QQVRfU1lTX1NQVShwd3JpdGU2NCkKK1NZU0NBTExfU1BVKGNob3duKQorU1lTQ0FMTF9TUFUoZ2V0Y3dkKQorU1lTQ0FMTF9TUFUoY2FwZ2V0KQorU1lTQ0FMTF9TUFUoY2Fwc2V0KQorQ09NUEFUX1NZUyhzaWdhbHRzdGFjaykKK1NZU1hfU1BVKHN5c19zZW5kZmlsZTY0LGNvbXBhdF9zeXNfc2VuZGZpbGUsc3lzX3NlbmRmaWxlKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorU1lTQ0FMTChuaV9zeXNjYWxsKQorUFBDX1NZUyh2Zm9yaykKK0NPTVBBVF9TWVNfU1BVKGdldHJsaW1pdCkKK0NPTVBBVF9TWVNfU1BVKHJlYWRhaGVhZCkKK1NZUzMyT05MWShtbWFwMikKK1NZUzMyT05MWSh0cnVuY2F0ZTY0KQorU1lTMzJPTkxZKGZ0cnVuY2F0ZTY0KQorU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfc3RhdDY0LHN5c19zdGF0NjQpCitTWVNYKHN5c19uaV9zeXNjYWxsLHN5c19sc3RhdDY0LHN5c19sc3RhdDY0KQorU1lTWChzeXNfbmlfc3lzY2FsbCxzeXNfZnN0YXQ2NCxzeXNfZnN0YXQ2NCkKK1NZU0NBTEwocGNpY29uZmlnX3JlYWQpCitTWVNDQUxMKHBjaWNvbmZpZ193cml0ZSkKK1NZU0NBTEwocGNpY29uZmlnX2lvYmFzZSkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTExfU1BVKGdldGRlbnRzNjQpCitTWVNDQUxMX1NQVShwaXZvdF9yb290KQorU1lTWChzeXNfbmlfc3lzY2FsbCxjb21wYXRfc3lzX2ZjbnRsNjQsc3lzX2ZjbnRsNjQpCitTWVNDQUxMX1NQVShtYWR2aXNlKQorU1lTQ0FMTF9TUFUobWluY29yZSkKK1NZU0NBTExfU1BVKGdldHRpZCkKK1NZU0NBTExfU1BVKHRraWxsKQorU1lTQ0FMTF9TUFUoc2V0eGF0dHIpCitTWVNDQUxMX1NQVShsc2V0eGF0dHIpCitTWVNDQUxMX1NQVShmc2V0eGF0dHIpCitTWVNDQUxMX1NQVShnZXR4YXR0cikKK1NZU0NBTExfU1BVKGxnZXR4YXR0cikKK1NZU0NBTExfU1BVKGZnZXR4YXR0cikKK1NZU0NBTExfU1BVKGxpc3R4YXR0cikKK1NZU0NBTExfU1BVKGxsaXN0eGF0dHIpCitTWVNDQUxMX1NQVShmbGlzdHhhdHRyKQorU1lTQ0FMTF9TUFUocmVtb3ZleGF0dHIpCitTWVNDQUxMX1NQVShscmVtb3ZleGF0dHIpCitTWVNDQUxMX1NQVShmcmVtb3ZleGF0dHIpCitDT01QQVRfU1lTX1NQVShmdXRleCkKK0NPTVBBVF9TWVNfU1BVKHNjaGVkX3NldGFmZmluaXR5KQorQ09NUEFUX1NZU19TUFUoc2NoZWRfZ2V0YWZmaW5pdHkpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitTWVNDQUxMKG5pX3N5c2NhbGwpCitTWVMzMk9OTFkoc2VuZGZpbGU2NCkKK0NPTVBBVF9TWVNfU1BVKGlvX3NldHVwKQorU1lTQ0FMTF9TUFUoaW9fZGVzdHJveSkKK0NPTVBBVF9TWVNfU1BVKGlvX2dldGV2ZW50cykKK0NPTVBBVF9TWVNfU1BVKGlvX3N1Ym1pdCkKK1NZU0NBTExfU1BVKGlvX2NhbmNlbCkKK1NZU0NBTEwoc2V0X3RpZF9hZGRyZXNzKQorU1lTWF9TUFUoc3lzX2ZhZHZpc2U2NCxwcGMzMl9mYWR2aXNlNjQsc3lzX2ZhZHZpc2U2NCkKK1NZU0NBTEwoZXhpdF9ncm91cCkKK1NZU1goc3lzX2xvb2t1cF9kY29va2llLHBwYzMyX2xvb2t1cF9kY29va2llLHN5c19sb29rdXBfZGNvb2tpZSkKK1NZU0NBTExfU1BVKGVwb2xsX2NyZWF0ZSkKK1NZU0NBTExfU1BVKGVwb2xsX2N0bCkKK1NZU0NBTExfU1BVKGVwb2xsX3dhaXQpCitTWVNDQUxMX1NQVShyZW1hcF9maWxlX3BhZ2VzKQorU1lTWF9TUFUoc3lzX3RpbWVyX2NyZWF0ZSxjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZSxzeXNfdGltZXJfY3JlYXRlKQorQ09NUEFUX1NZU19TUFUodGltZXJfc2V0dGltZSkKK0NPTVBBVF9TWVNfU1BVKHRpbWVyX2dldHRpbWUpCitTWVNDQUxMX1NQVSh0aW1lcl9nZXRvdmVycnVuKQorU1lTQ0FMTF9TUFUodGltZXJfZGVsZXRlKQorQ09NUEFUX1NZU19TUFUoY2xvY2tfc2V0dGltZSkKK0NPTVBBVF9TWVNfU1BVKGNsb2NrX2dldHRpbWUpCitDT01QQVRfU1lTX1NQVShjbG9ja19nZXRyZXMpCitDT01QQVRfU1lTX1NQVShjbG9ja19uYW5vc2xlZXApCitTWVNYKHBwYzY0X3N3YXBjb250ZXh0LHBwYzMyX3N3YXBjb250ZXh0LHBwY19zd2FwY29udGV4dCkKK0NPTVBBVF9TWVNfU1BVKHRna2lsbCkKK0NPTVBBVF9TWVNfU1BVKHV0aW1lcykKK0NPTVBBVF9TWVNfU1BVKHN0YXRmczY0KQorQ09NUEFUX1NZU19TUFUoZnN0YXRmczY0KQorU1lTWChzeXNfbmlfc3lzY2FsbCwgcHBjX2ZhZHZpc2U2NF82NCwgcHBjX2ZhZHZpc2U2NF82NCkKK1BQQ19TWVNfU1BVKHJ0YXMpCitPTERTWVMoZGVidWdfc2V0Y29udGV4dCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK1NZU0NBTEwobmlfc3lzY2FsbCkKK0NPTVBBVF9TWVMobWJpbmQpCitDT01QQVRfU1lTKGdldF9tZW1wb2xpY3kpCitDT01QQVRfU1lTKHNldF9tZW1wb2xpY3kpCitDT01QQVRfU1lTKG1xX29wZW4pCitTWVNDQUxMKG1xX3VubGluaykKK0NPTVBBVF9TWVMobXFfdGltZWRzZW5kKQorQ09NUEFUX1NZUyhtcV90aW1lZHJlY2VpdmUpCitDT01QQVRfU1lTKG1xX25vdGlmeSkKK0NPTVBBVF9TWVMobXFfZ2V0c2V0YXR0cikKK0NPTVBBVF9TWVMoa2V4ZWNfbG9hZCkKK0NPTVBBVF9TWVMoYWRkX2tleSkKK0NPTVBBVF9TWVMocmVxdWVzdF9rZXkpCitDT01QQVRfU1lTKGtleWN0bCkKK0NPTVBBVF9TWVMod2FpdGlkKQorQ09NUEFUX1NZUyhpb3ByaW9fc2V0KQorQ09NUEFUX1NZUyhpb3ByaW9fZ2V0KQorU1lTQ0FMTChpbm90aWZ5X2luaXQpCitTWVNDQUxMKGlub3RpZnlfYWRkX3dhdGNoKQorU1lTQ0FMTChpbm90aWZ5X3JtX3dhdGNoKQorU1lTQ0FMTChzcHVfcnVuKQorU1lTQ0FMTChzcHVfY3JlYXRlKQorQ09NUEFUX1NZUyhwc2VsZWN0NikKK0NPTVBBVF9TWVMocHBvbGwpCitTWVNDQUxMX1NQVSh1bnNoYXJlKQorU1lTQ0FMTF9TUFUoc3BsaWNlKQorU1lTQ0FMTF9TUFUodGVlKQorU1lTQ0FMTF9TUFUodm1zcGxpY2UpCitDT01QQVRfU1lTX1NQVShvcGVuYXQpCitTWVNDQUxMX1NQVShta2RpcmF0KQorU1lTQ0FMTF9TUFUobWtub2RhdCkKK1NZU0NBTExfU1BVKGZjaG93bmF0KQorQ09NUEFUX1NZU19TUFUoZnV0aW1lc2F0KQorU1lTWF9TUFUoc3lzX25ld2ZzdGF0YXQsIHN5c19mc3RhdGF0NjQsIHN5c19mc3RhdGF0NjQpCitTWVNDQUxMX1NQVSh1bmxpbmthdCkKK1NZU0NBTExfU1BVKHJlbmFtZWF0KQorU1lTQ0FMTF9TUFUobGlua2F0KQorU1lTQ0FMTF9TUFUoc3ltbGlua2F0KQorU1lTQ0FMTF9TUFUocmVhZGxpbmthdCkKK1NZU0NBTExfU1BVKGZjaG1vZGF0KQorU1lTQ0FMTF9TUFUoZmFjY2Vzc2F0KQorQ09NUEFUX1NZU19TUFUoZ2V0X3JvYnVzdF9saXN0KQorQ09NUEFUX1NZU19TUFUoc2V0X3JvYnVzdF9saXN0KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcG93ZXJwYy90Y2UuaCBiL2luY2x1ZGUvYXNtLXBvd2VycGMvdGNlLmgKaW5kZXggNmZhMjAwYS4uYzk0ODNhZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy90Y2UuaAorKysgYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3RjZS5oCkBAIC0zNSwzMiArMzUsMTUgQEAKICNkZWZpbmUgVENFX1BBR0VfU0laRQkoMSA8PCBUQ0VfU0hJRlQpCiAjZGVmaW5lIFRDRV9QQUdFX0ZBQ1RPUgkoUEFHRV9TSElGVCAtIFRDRV9TSElGVCkKIAorI2RlZmluZSBUQ0VfRU5UUllfU0laRQkJOAkJLyogZWFjaCBUQ0UgaXMgNjQgYml0cyAqLwogCi0vKiB0Y2VfZW50cnkKLSAqIFVzZWQgYnkgcFNlcmllcyAoU01QKSBhbmQgaVNlcmllcy9wU2VyaWVzIExQQVIsIGJ1dCB0aGVyZSBpdCdzCi0gKiBhYnN0cmFjdGVkIHNvIGxheW91dCBpcyBpcnJlbGV2YW50LgotICovCi11bmlvbiB0Y2VfZW50cnkgewotICAgCXVuc2lnbmVkIGxvbmcgdGVfd29yZDsKLQlzdHJ1Y3QgewotCQl1bnNpZ25lZCBpbnQgIHRiX2NhY2hlQml0cyA6NjsJLyogQ2FjaGUgaGFzaCBiaXRzIC0gbm90IHVzZWQgKi8KLQkJdW5zaWduZWQgaW50ICB0Yl9yc3ZkICAgICAgOjY7Ci0JCXVuc2lnbmVkIGxvbmcgdGJfcnBuICAgICAgIDo0MDsJLyogUmVhbCBwYWdlIG51bWJlciAqLwotCQl1bnNpZ25lZCBpbnQgIHRiX3ZhbGlkICAgICA6MTsJLyogVGNlIGlzIHZhbGlkICh2YiBvbmx5KSAqLwotCQl1bnNpZ25lZCBpbnQgIHRiX2FsbGlvICAgICA6MTsJLyogVGNlIGlzIHZhbGlkIGZvciBhbGwgbHBzICh2YiBvbmx5KSAqLwotCQl1bnNpZ25lZCBpbnQgIHRiX2xwaW5kZXggICA6ODsJLyogTHBJbmRleCBmb3IgdXNlciBvZiBUQ0UgKHZiIG9ubHkpICovCi0JCXVuc2lnbmVkIGludCAgdGJfcGNpd3IgICAgIDoxOwkvKiBXcml0ZSBhbGxvd2VkIChwY2kgb25seSkgKi8KLQkJdW5zaWduZWQgaW50ICB0Yl9yZHdyICAgICAgOjE7CS8qIFJlYWQgYWxsb3dlZCAgKHBjaSksIFdyaXRlIGFsbG93ZWQgKHZiKSAqLwotCX0gdGVfYml0czsKLSNkZWZpbmUgdGVfY2FjaGVCaXRzIHRlX2JpdHMudGJfY2FjaGVCaXRzCi0jZGVmaW5lIHRlX3JwbiAgICAgICB0ZV9iaXRzLnRiX3JwbgotI2RlZmluZSB0ZV92YWxpZCAgICAgdGVfYml0cy50Yl92YWxpZAotI2RlZmluZSB0ZV9hbGxpbyAgICAgdGVfYml0cy50Yl9hbGxpbwotI2RlZmluZSB0ZV9scGluZGV4ICAgdGVfYml0cy50Yl9scGluZGV4Ci0jZGVmaW5lIHRlX3BjaXdyICAgICB0ZV9iaXRzLnRiX3BjaXdyCi0jZGVmaW5lIHRlX3Jkd3IgICAgICB0ZV9iaXRzLnRiX3Jkd3IKLX07Ci0KKyNkZWZpbmUgVENFX1JQTl9NQVNLCQkweGZmZmZmZmZmZmZ1bCAgLyogNDAtYml0IFJQTiAoNEsgcGFnZXMpICovCisjZGVmaW5lIFRDRV9SUE5fU0hJRlQJCTEyCisjZGVmaW5lIFRDRV9WQUxJRAkJMHg4MDAJCS8qIFRDRSB2YWxpZCAqLworI2RlZmluZSBUQ0VfQUxMSU8JCTB4NDAwCQkvKiBUQ0UgdmFsaWQgZm9yIGFsbCBscGFycyAqLworI2RlZmluZSBUQ0VfUENJX1dSSVRFCQkweDIJCS8qIHdyaXRlIGZyb20gUENJIGFsbG93ZWQgKi8KKyNkZWZpbmUgVENFX1BDSV9SRUFECQkweDEJCS8qIHJlYWQgZnJvbSBQQ0kgYWxsb3dlZCAqLworI2RlZmluZSBUQ0VfVkJfV1JJVEUJCTB4MQkJLyogd3JpdGUgZnJvbSBWQiBhbGxvd2VkICovCiAKICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYgLyogX0FTTV9QT1dFUlBDX1RDRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3RvcG9sb2d5LmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3RvcG9sb2d5LmgKaW5kZXggMTljNTc1Zi4uOTJmM2U1NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy90b3BvbG9neS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvdG9wb2xvZ3kuaApAQCAtMzEsOCArMzEsMTMgQEAKIAogaW50IG9mX25vZGVfdG9fbmlkKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2aWNlKTsKIAotI2RlZmluZSBwY2lidXNfdG9fbm9kZShub2RlKSAgICAoLTEpCi0jZGVmaW5lIHBjaWJ1c190b19jcHVtYXNrKGJ1cykJKGNwdV9vbmxpbmVfbWFwKQorc3RydWN0IHBjaV9idXM7CitleHRlcm4gaW50IHBjaWJ1c190b19ub2RlKHN0cnVjdCBwY2lfYnVzICpidXMpOworCisjZGVmaW5lIHBjaWJ1c190b19jcHVtYXNrKGJ1cykJKHBjaWJ1c190b19ub2RlKGJ1cykgPT0gLTEgPyBcCisJCQkJCUNQVV9NQVNLX0FMTCA6IFwKKwkJCQkJbm9kZV90b19jcHVtYXNrKHBjaWJ1c190b19ub2RlKGJ1cykpIFwKKwkJCQkpCiAKIC8qIHNjaGVkX2RvbWFpbnMgU0RfTk9ERV9JTklUIGZvciBQUEM2NCBtYWNoaW5lcyAqLwogI2RlZmluZSBTRF9OT0RFX0lOSVQgKHN0cnVjdCBzY2hlZF9kb21haW4pIHsJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMvdWRiZy5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy91ZGJnLmgKaW5kZXggNWM0MjM2Yy4uMTlhMTUxNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy91ZGJnLmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy91ZGJnLmgKQEAgLTIzLDcgKzIzLDggQEAKIGV4dGVybiBpbnQgdWRiZ19yZWFkKGNoYXIgKmJ1ZiwgaW50IGJ1Zmxlbik7CiAKIGV4dGVybiB2b2lkIHJlZ2lzdGVyX2Vhcmx5X3VkYmdfY29uc29sZSh2b2lkKTsKLWV4dGVybiB2b2lkIHVkYmdfcHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2V4dGVybiB2b2lkIHVkYmdfcHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKIGV4dGVybiB2b2lkIHVkYmdfcHJvZ3Jlc3MoY2hhciAqcywgdW5zaWduZWQgc2hvcnQgaGV4KTsKIAogZXh0ZXJuIHZvaWQgdWRiZ19pbml0X3VhcnQodm9pZCBfX2lvbWVtICpjb21wb3J0LCB1bnNpZ25lZCBpbnQgc3BlZWQsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3ZnYS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy92Z2EuaAppbmRleCBlYWRhZjJmLi5hMmVhYzQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3ZnYS5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvdmdhLmgKQEAgLTQxLDkgKzQxLDkgQEAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHZnYWNvbl9yZW1hcF9iYXNlOwogCiAjaWZkZWYgX19wb3dlcnBjNjRfXwotI2RlZmluZSBWR0FfTUFQX01FTSh4KSAoKHVuc2lnbmVkIGxvbmcpIGlvcmVtYXAoKHgpLCAwKSkKKyNkZWZpbmUgVkdBX01BUF9NRU0oeCxzKSAoKHVuc2lnbmVkIGxvbmcpIGlvcmVtYXAoKHgpLCBzKSkKICNlbHNlCi0jZGVmaW5lIFZHQV9NQVBfTUVNKHgpICh4ICsgdmdhY29uX3JlbWFwX2Jhc2UpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykgKHggKyB2Z2Fjb25fcmVtYXBfYmFzZSkKICNlbmRpZgogCiAjZGVmaW5lIHZnYV9yZWFkYih4KSAoKih4KSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMvdmlvLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL3Zpby5oCmluZGV4IGJlMTRjNTkuLmRjOWJkMTAxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wb3dlcnBjL3Zpby5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvdmlvLmgKQEAgLTYzLDMyICs2MywyMiBAQAogCXN0cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjsKIH07CiAKLXN0cnVjdCB2aW9fYnVzX29wcyB7Ci0JaW50ICgqbWF0Y2gpKGNvbnN0IHN0cnVjdCB2aW9fZGV2aWNlX2lkICppZCwgY29uc3Qgc3RydWN0IHZpb19kZXYgKmRldik7Ci0Jdm9pZCAoKnVucmVnaXN0ZXJfZGV2aWNlKShzdHJ1Y3QgdmlvX2RldiAqKTsKLQl2b2lkICgqcmVsZWFzZV9kZXZpY2UpKHN0cnVjdCBkZXZpY2UgKik7Ci19OwotCiBleHRlcm4gc3RydWN0IGRtYV9tYXBwaW5nX29wcyB2aW9fZG1hX29wczsKIGV4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgdmlvX2J1c190eXBlOwotZXh0ZXJuIHN0cnVjdCB2aW9fZGV2IHZpb19idXNfZGV2aWNlOwogCiBleHRlcm4gaW50IHZpb19yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHZpb19kcml2ZXIgKmRydik7CiBleHRlcm4gdm9pZCB2aW9fdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHZpb19kcml2ZXIgKmRydik7CiAKLWV4dGVybiBzdHJ1Y3QgdmlvX2RldiAqIF9fZGV2aW5pdCB2aW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB2aW9fZGV2ICp2aW9kZXYpOwogZXh0ZXJuIHZvaWQgX19kZXZpbml0IHZpb191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdmlvX2RldiAqZGV2KTsKIAotZXh0ZXJuIGludCB2aW9fYnVzX2luaXQoc3RydWN0IHZpb19idXNfb3BzICopOwotCi0jaWZkZWYgQ09ORklHX1BQQ19QU0VSSUVTCiBzdHJ1Y3QgZGV2aWNlX25vZGU7CiAKIGV4dGVybiBzdHJ1Y3QgdmlvX2RldiAqIF9fZGV2aW5pdCB2aW9fcmVnaXN0ZXJfZGV2aWNlX25vZGUoCiAJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZV92ZGV2KTsKLWV4dGVybiBzdHJ1Y3QgdmlvX2RldiAqdmlvX2ZpbmRfbm9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKnZub2RlKTsKLWV4dGVybiBjb25zdCB2b2lkICp2aW9fZ2V0X2F0dHJpYnV0ZShzdHJ1Y3QgdmlvX2RldiAqdmRldiwgdm9pZCAqd2hpY2gsCitleHRlcm4gY29uc3Qgdm9pZCAqdmlvX2dldF9hdHRyaWJ1dGUoc3RydWN0IHZpb19kZXYgKnZkZXYsIGNoYXIgKndoaWNoLAogCQlpbnQgKmxlbmd0aCk7CisjaWZkZWYgQ09ORklHX1BQQ19QU0VSSUVTCitleHRlcm4gc3RydWN0IHZpb19kZXYgKnZpb19maW5kX25vZGUoc3RydWN0IGRldmljZV9ub2RlICp2bm9kZSk7CiBleHRlcm4gaW50IHZpb19lbmFibGVfaW50ZXJydXB0cyhzdHJ1Y3QgdmlvX2RldiAqZGV2KTsKIGV4dGVybiBpbnQgdmlvX2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgdmlvX2RldiAqZGV2KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL21tdS5oIGIvaW5jbHVkZS9hc20tcHBjL21tdS5oCmluZGV4IDBhNzBiMDUuLjE0NTg0ZTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXBwYy9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvbW11LmgKQEAgLTIzLDI1ICsyMywxOCBAQAogI2RlZmluZSBQSFlTX0ZNVAkiJTE2THgiCiAjZW5kaWYKIAotLyogRGVmYXVsdCAidW5zaWduZWQgbG9uZyIgY29udGV4dCAqLwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIG1tX2NvbnRleHRfdDsKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIGlkOworCXVuc2lnbmVkIGxvbmcgdmRzb19iYXNlOworfSBtbV9jb250ZXh0X3Q7CiAKIC8qIEhhcmR3YXJlIFBhZ2UgVGFibGUgRW50cnkgKi8KIHR5cGVkZWYgc3RydWN0IF9QVEUgewotI2lmZGVmIENPTkZJR19QUEM2NEJSSURHRQotCXVuc2lnbmVkIGxvbmcgbG9uZyB2c2lkOjUyOwotCXVuc2lnbmVkIGxvbmcgYXBpOjU7Ci0JdW5zaWduZWQgbG9uZyA6NTsKLQl1bnNpZ25lZCBsb25nIGg6MTsKLQl1bnNpZ25lZCBsb25nIHY6MTsKLQl1bnNpZ25lZCBsb25nIGxvbmcgcnBuOjUyOwotI2Vsc2UgLyogQ09ORklHX1BQQzY0QlJJREdFICovCiAJdW5zaWduZWQgbG9uZyB2OjE7CS8qIEVudHJ5IGlzIHZhbGlkICovCiAJdW5zaWduZWQgbG9uZyB2c2lkOjI0OwkvKiBWaXJ0dWFsIHNlZ21lbnQgaWRlbnRpZmllciAqLwogCXVuc2lnbmVkIGxvbmcgaDoxOwkvKiBIYXNoIGFsZ29yaXRobSBpbmRpY2F0b3IgKi8KIAl1bnNpZ25lZCBsb25nIGFwaTo2OwkvKiBBYmJyZXZpYXRlZCBwYWdlIGluZGV4ICovCiAJdW5zaWduZWQgbG9uZyBycG46MjA7CS8qIFJlYWwgKHBoeXNpY2FsKSBwYWdlIG51bWJlciAqLwotI2VuZGlmIC8qIENPTkZJR19QUEM2NEJSSURHRSAqLwogCXVuc2lnbmVkIGxvbmcgICAgOjM7CS8qIFVudXNlZCAqLwogCXVuc2lnbmVkIGxvbmcgcjoxOwkvKiBSZWZlcmVuY2VkICovCiAJdW5zaWduZWQgbG9uZyBjOjE7CS8qIENoYW5nZWQgKi8KQEAgLTgyLDExICs3NSw3IEBACiB9IFA2MDFfQkFUVTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0JBVFUgewkJLyogVXBwZXIgcGFydCBvZiBCQVQgKGFsbCBleGNlcHQgNjAxKSAqLwotI2lmZGVmIENPTkZJR19QUEM2NEJSSURHRQotCXVuc2lnbmVkIGxvbmcgbG9uZyBiZXBpOjQ3OwotI2Vsc2UgLyogQ09ORklHX1BQQzY0QlJJREdFICovCiAJdW5zaWduZWQgbG9uZyBiZXBpOjE1OwkvKiBFZmZlY3RpdmUgcGFnZSBpbmRleCAodmlydHVhbCBhZGRyZXNzKSAqLwotI2VuZGlmIC8qIENPTkZJR19QUEM2NEJSSURHRSAqLwogCXVuc2lnbmVkIGxvbmcgOjQ7CS8qIFVudXNlZCAqLwogCXVuc2lnbmVkIGxvbmcgYmw6MTE7CS8qIEJsb2NrIHNpemUgbWFzayAqLwogCXVuc2lnbmVkIGxvbmcgdnM6MTsJLyogU3VwZXJ2aXNvciB2YWxpZCAqLwpAQCAtMTAxLDExICs5MCw3IEBACiB9IFA2MDFfQkFUTDsKIAogdHlwZWRlZiBzdHJ1Y3QgX0JBVEwgewkJLyogTG93ZXIgcGFydCBvZiBCQVQgKGFsbCBleGNlcHQgNjAxKSAqLwotI2lmZGVmIENPTkZJR19QUEM2NEJSSURHRQotCXVuc2lnbmVkIGxvbmcgbG9uZyBicnBuOjQ3OwotI2Vsc2UgLyogQ09ORklHX1BQQzY0QlJJREdFICovCiAJdW5zaWduZWQgbG9uZyBicnBuOjE1OwkvKiBSZWFsIHBhZ2UgaW5kZXggKHBoeXNpY2FsIGFkZHJlc3MpICovCi0jZW5kaWYgLyogQ09ORklHX1BQQzY0QlJJREdFICovCiAJdW5zaWduZWQgbG9uZyA6MTA7CS8qIFVudXNlZCAqLwogCXVuc2lnbmVkIGxvbmcgdzoxOwkvKiBXcml0ZS10aHJ1IGNhY2hlICovCiAJdW5zaWduZWQgbG9uZyBpOjE7CS8qIENhY2hlIGluaGliaXQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBwYy9tbXVfY29udGV4dC5oIGIvaW5jbHVkZS9hc20tcHBjL21tdV9jb250ZXh0LmgKaW5kZXggOTRmMmJmNy4uMmJjODU4OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL21tdV9jb250ZXh0LmgKKysrIGIvaW5jbHVkZS9hc20tcHBjL21tdV9jb250ZXh0LmgKQEAgLTcwLDcgKzcwLDcgQEAKICNlbHNlCiAKIC8qIFBQQyA2eHgsIDd4eCBDUFVzICovCi0jZGVmaW5lIE5PX0NPTlRFWFQgICAgICAJKChtbV9jb250ZXh0X3QpIC0xKQorI2RlZmluZSBOT19DT05URVhUICAgICAgCSgodW5zaWduZWQgbG9uZykgLTEpCiAjZGVmaW5lIExBU1RfQ09OVEVYVCAgICAJMzI3NjcKICNkZWZpbmUgRklSU1RfQ09OVEVYVCAgICAJMQogI2VuZGlmCkBAIC04NSw3ICs4NSw3IEBACiAgKiBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nIG9uIGFsbCBwcm9jZXNzb3JzIChpZiB5b3UgaGFwcGVuIHRvIGhhdmUKICAqIGFuIEFiYXRyb24pLgogICovCi1leHRlcm4gdm9pZCBzZXRfY29udGV4dChtbV9jb250ZXh0X3QgY29udGV4dCwgcGdkX3QgKnBnZCk7CitleHRlcm4gdm9pZCBzZXRfY29udGV4dCh1bnNpZ25lZCBsb25nIGNvbnRleHRpZCwgcGdkX3QgKnBnZCk7CiAKIC8qCiAgKiBCaXRtYXAgb2YgY29udGV4dHMgaW4gdXNlLgpAQCAtOTgsNyArOTgsNyBAQAogICogSXRzIHVzZSBpcyBhbiBvcHRpbWl6YXRpb24gb25seSwgd2UgY2FuJ3QgcmVseSBvbiB0aGlzIGNvbnRleHQKICAqIG51bWJlciB0byBiZSBmcmVlLCBidXQgaXQgdXN1YWxseSB3aWxsIGJlLgogICovCi1leHRlcm4gbW1fY29udGV4dF90IG5leHRfbW11X2NvbnRleHQ7CitleHRlcm4gdW5zaWduZWQgbG9uZyBuZXh0X21tdV9jb250ZXh0OwogCiAvKgogICogSWYgd2UgZG9uJ3QgaGF2ZSBzdWZmaWNpZW50IGNvbnRleHRzIHRvIGdpdmUgb25lIHRvIGV2ZXJ5IHRhc2sKQEAgLTExNyw5ICsxMTcsOSBAQAogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X21tdV9jb250ZXh0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewotCW1tX2NvbnRleHRfdCBjdHg7CisJdW5zaWduZWQgbG9uZyBjdHg7CiAKLQlpZiAobW0tPmNvbnRleHQgIT0gTk9fQ09OVEVYVCkKKwlpZiAobW0tPmNvbnRleHQuaWQgIT0gTk9fQ09OVEVYVCkKIAkJcmV0dXJuOwogI2lmZGVmIEZFV19DT05URVhUUwogCXdoaWxlIChhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKCZucl9mcmVlX2NvbnRleHRzKSA8IDApCkBAIC0xMzIsNyArMTMyLDcgQEAKIAkJCWN0eCA9IDA7CiAJfQogCW5leHRfbW11X2NvbnRleHQgPSAoY3R4ICsgMSkgJiBMQVNUX0NPTlRFWFQ7Ci0JbW0tPmNvbnRleHQgPSBjdHg7CisJbW0tPmNvbnRleHQuaWQgPSBjdHg7CiAjaWZkZWYgRkVXX0NPTlRFWFRTCiAJY29udGV4dF9tbVtjdHhdID0gbW07CiAjZW5kaWYKQEAgLTE0MSw3ICsxNDEsMTIgQEAKIC8qCiAgKiBTZXQgdXAgdGhlIGNvbnRleHQgZm9yIGEgbmV3IGFkZHJlc3Mgc3BhY2UuCiAgKi8KLSNkZWZpbmUgaW5pdF9uZXdfY29udGV4dCh0c2ssbW0pCSgoKG1tKS0+Y29udGV4dCA9IE5PX0NPTlRFWFQpLCAwKQorc3RhdGljIGlubGluZSBpbnQgaW5pdF9uZXdfY29udGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQoreworCW1tLT5jb250ZXh0LmlkID0gTk9fQ09OVEVYVDsKKwltbS0+Y29udGV4dC52ZHNvX2Jhc2UgPSAwOworCXJldHVybiAwOworfQogCiAvKgogICogV2UncmUgZmluaXNoZWQgdXNpbmcgdGhlIGNvbnRleHQgZm9yIGFuIGFkZHJlc3Mgc3BhY2UuCkBAIC0xNDksOSArMTU0LDkgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkZXN0cm95X2NvbnRleHQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7CiAJcHJlZW1wdF9kaXNhYmxlKCk7Ci0JaWYgKG1tLT5jb250ZXh0ICE9IE5PX0NPTlRFWFQpIHsKLQkJY2xlYXJfYml0KG1tLT5jb250ZXh0LCBjb250ZXh0X21hcCk7Ci0JCW1tLT5jb250ZXh0ID0gTk9fQ09OVEVYVDsKKwlpZiAobW0tPmNvbnRleHQuaWQgIT0gTk9fQ09OVEVYVCkgeworCQljbGVhcl9iaXQobW0tPmNvbnRleHQuaWQsIGNvbnRleHRfbWFwKTsKKwkJbW0tPmNvbnRleHQuaWQgPSBOT19DT05URVhUOwogI2lmZGVmIEZFV19DT05URVhUUwogCQlhdG9taWNfaW5jKCZucl9mcmVlX2NvbnRleHRzKTsKICNlbmRpZgpAQCAtMTc5LDcgKzE4NCw3IEBACiAKIAkvKiBTZXR1cCBuZXcgdXNlcnNwYWNlIGNvbnRleHQgKi8KIAlnZXRfbW11X2NvbnRleHQobmV4dCk7Ci0Jc2V0X2NvbnRleHQobmV4dC0+Y29udGV4dCwgbmV4dC0+cGdkKTsKKwlzZXRfY29udGV4dChuZXh0LT5jb250ZXh0LmlkLCBuZXh0LT5wZ2QpOwogfQogCiAjZGVmaW5lIGRlYWN0aXZhdGVfbW0odHNrLG1tKQlkbyB7IH0gd2hpbGUgKDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvbXBjODV4eC5oIGIvaW5jbHVkZS9hc20tcHBjL21wYzg1eHguaAppbmRleCBjMjViZGQ5Li45YjQ4NTExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wcGMvbXBjODV4eC5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9tcGM4NXh4LmgKQEAgLTI3LDYgKzI3LDkgQEAKICNpZiBkZWZpbmVkKENPTkZJR19NUEM4NTU1X0NEUykgfHwgZGVmaW5lZChDT05GSUdfTVBDODU0OF9DRFMpCiAjaW5jbHVkZSA8cGxhdGZvcm1zLzg1eHgvbXBjODU1NV9jZHMuaD4KICNlbmRpZgorI2lmZGVmIENPTkZJR19NUEM4NXh4X0NEUworI2luY2x1ZGUgPHBsYXRmb3Jtcy84NXh4L21wYzg1eHhfY2RzLmg+CisjZW5kaWYKICNpZmRlZiBDT05GSUdfTVBDODU2MF9BRFMKICNpbmNsdWRlIDxwbGF0Zm9ybXMvODV4eC9tcGM4NTYwX2Fkcy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tcHBjL3BndGFibGUuaAppbmRleCA5Y2I4MzY3Li41MWZhN2M2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1wcGMvcGd0YWJsZS5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9wZ3RhYmxlLmgKQEAgLTY2Miw3ICs2NjIsNyBAQAogCXJldHVybiAob2xkICYgX1BBR0VfQUNDRVNTRUQpICE9IDA7CiB9CiAjZGVmaW5lIHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcoX192bWEsIF9fYWRkciwgX19wdGVwKSBcCi0JX19wdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKChfX3ZtYSktPnZtX21tLT5jb250ZXh0LCBfX2FkZHIsIF9fcHRlcCkKKwlfX3B0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcoKF9fdm1hKS0+dm1fbW0tPmNvbnRleHQuaWQsIF9fYWRkciwgX19wdGVwKQogCiAjZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfVEVTVF9BTkRfQ0xFQVJfRElSVFkKIHN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zMzkwL2lvLmggYi9pbmNsdWRlL2FzbS1zMzkwL2lvLmgKaW5kZXggYjA1ODI1ZC4uZDQ2MTRiMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tczM5MC9pby5oCisrKyBiL2luY2x1ZGUvYXNtLXMzOTAvaW8uaApAQCAtODYsMjAgKzg2LDI1IEBACiAjZGVmaW5lIHJlYWRiKGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgX19pb192aXJ0KGFkZHIpKQogI2RlZmluZSByZWFkdyhhZGRyKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSBfX2lvX3ZpcnQoYWRkcikpCiAjZGVmaW5lIHJlYWRsKGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBfX2lvX3ZpcnQoYWRkcikpCisjZGVmaW5lIHJlYWRxKGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZyAqKSBfX2lvX3ZpcnQoYWRkcikpCiAKICNkZWZpbmUgcmVhZGJfcmVsYXhlZChhZGRyKSByZWFkYihhZGRyKQogI2RlZmluZSByZWFkd19yZWxheGVkKGFkZHIpIHJlYWR3KGFkZHIpCiAjZGVmaW5lIHJlYWRsX3JlbGF4ZWQoYWRkcikgcmVhZGwoYWRkcikKKyNkZWZpbmUgcmVhZHFfcmVsYXhlZChhZGRyKSByZWFkcShhZGRyKQogI2RlZmluZSBfX3Jhd19yZWFkYiByZWFkYgogI2RlZmluZSBfX3Jhd19yZWFkdyByZWFkdwogI2RlZmluZSBfX3Jhd19yZWFkbCByZWFkbAorI2RlZmluZSBfX3Jhd19yZWFkcSByZWFkcQogCiAjZGVmaW5lIHdyaXRlYihiLGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgX19pb192aXJ0KGFkZHIpID0gKGIpKQogI2RlZmluZSB3cml0ZXcoYixhZGRyKSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSBfX2lvX3ZpcnQoYWRkcikgPSAoYikpCiAjZGVmaW5lIHdyaXRlbChiLGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBfX2lvX3ZpcnQoYWRkcikgPSAoYikpCisjZGVmaW5lIHdyaXRlcShiLGFkZHIpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZyAqKSBfX2lvX3ZpcnQoYWRkcikgPSAoYikpCiAjZGVmaW5lIF9fcmF3X3dyaXRlYiB3cml0ZWIKICNkZWZpbmUgX19yYXdfd3JpdGV3IHdyaXRldwogI2RlZmluZSBfX3Jhd193cml0ZWwgd3JpdGVsCisjZGVmaW5lIF9fcmF3X3dyaXRlcSB3cml0ZXEKIAogI2RlZmluZSBtZW1zZXRfaW8oYSxiLGMpICAgICAgICBtZW1zZXQoX19pb192aXJ0KGEpLChiKSwoYykpCiAjZGVmaW5lIG1lbWNweV9mcm9taW8oYSxiLGMpICAgIG1lbWNweSgoYSksX19pb192aXJ0KGIpLChjKSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXMzOTAvaXJxLmggYi9pbmNsdWRlL2FzbS1zMzkwL2lycS5oCmluZGV4IDkxNmExYWEuLmJkMWE3MjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXMzOTAvaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tczM5MC9pcnEuaApAQCAtMjEsMTAgKzIxLDYgQEAKIAogI2RlZmluZSB0b3VjaF9ubWlfd2F0Y2hkb2coKSBkbyB7IH0gd2hpbGUoMCkKIAotc3RydWN0IGlycWFjdGlvbjsKLXN0cnVjdCBwdF9yZWdzOwotaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwotCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjL2lycS5oIGIvaW5jbHVkZS9hc20tc3BhcmMvaXJxLmgKaW5kZXggZGJjNjg3NC4uMzE0MWRkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmMvaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmMvaXJxLmgKQEAgLTE2LDggKzE2LDYgQEAKIAogI2RlZmluZSBfX2lycV9pbm8oaXJxKSBpcnEKICNkZWZpbmUgX19pcnFfcGlsKGlycSkgaXJxCi1CVEZJWFVQREVGX0NBTEwoY2hhciAqLCBfX2lycV9pdG9hLCB1bnNpZ25lZCBpbnQpCi0jZGVmaW5lIF9faXJxX2l0b2EoaXJxKSBCVEZJWFVQX0NBTEwoX19pcnFfaXRvYSkoaXJxKQogCiAjZGVmaW5lIE5SX0lSUVMgICAgMTYKIApAQCAtMTgzLDggKzE4MSw0IEBACiAjZGVmaW5lIFNVTjRNX0lOVF9TQlVTKHgpCSgxIDw8ICh4KzcpKQogI2RlZmluZSBTVU40TV9JTlRfVk1FKHgpCSgxIDw8ICh4KSkKIAotc3RydWN0IGlycWFjdGlvbjsKLXN0cnVjdCBwdF9yZWdzOwotaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjL3NtcC5oIGIvaW5jbHVkZS9hc20tc3BhcmMvc21wLmgKaW5kZXggNWExYjdlNC4uYjlkYTlhNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmMvc21wLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmMvc21wLmgKQEAgLTE0NSw2ICsxNDUsOCBAQAogI2RlZmluZSBwcm9mX211bHRpcGxpZXIoX19jcHUpCQljcHVfZGF0YShfX2NwdSkubXVsdGlwbGllcgogI2RlZmluZSBwcm9mX2NvdW50ZXIoX19jcHUpCQljcHVfZGF0YShfX2NwdSkuY291bnRlcgogCit2b2lkIHNtcF9zZXR1cF9jcHVfcG9zc2libGVfbWFwKHZvaWQpOworCiAjZW5kaWYgLyogIShfX0FTU0VNQkxZX18pICovCiAKIC8qIFNwYXJjIHNwZWNpZmljIG1lc3NhZ2VzLiAqLwpAQCAtMTYxLDcgKzE2MywxMSBAQAogI2RlZmluZSBNQk9YX0lETEVDUFUyICAgICAgICAgMHhGRAogI2RlZmluZSBNQk9YX1NUT1BDUFUyICAgICAgICAgMHhGRQogCi0jZW5kaWYgLyogU01QICovCisjZWxzZSAvKiBTTVAgKi8KKworI2RlZmluZSBzbXBfc2V0dXBfY3B1X3Bvc3NpYmxlX21hcCgpIGRvIHsgfSB3aGlsZSAoMCkKKworI2VuZGlmIC8qICEoU01QKSAqLwogCiAjZGVmaW5lIE5PX1BST0NfSUQgICAgICAgICAgICAweEZGCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjL3NwaW5sb2NrLmggYi9pbmNsdWRlL2FzbS1zcGFyYy9zcGlubG9jay5oCmluZGV4IDMzNTBjOTAuLjFjNzU0NzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXNwYXJjL3NwaW5sb2NrLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmMvc3BpbmxvY2suaApAQCAtMTU0LDYgKzE1NCw5IEBACiAjZGVmaW5lIF9fcmF3X3NwaW5fbG9ja19mbGFncyhsb2NrLCBmbGFncykgX19yYXdfc3Bpbl9sb2NrKGxvY2spCiAjZGVmaW5lIF9fcmF3X3JlYWRfdHJ5bG9jayhsb2NrKSBnZW5lcmljX19yYXdfcmVhZF90cnlsb2NrKGxvY2spCiAKKyNkZWZpbmUgX19yYXdfcmVhZF9jYW5fbG9jayhydykgKCEoKHJ3KS0+bG9jayAmIDB4ZmYpKQorI2RlZmluZSBfX3Jhd193cml0ZV9jYW5fbG9jayhydykgKCEocncpLT5sb2NrKQorCiAjZW5kaWYgLyogIShfX0FTU0VNQkxZX18pICovCiAKICNlbmRpZiAvKiBfX1NQQVJDX1NQSU5MT0NLX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvY3B1ZGF0YS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9jcHVkYXRhLmgKaW5kZXggOWQ2YTZkYi4uZjJjYzk0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9jcHVkYXRhLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9jcHVkYXRhLmgKQEAgLTc0LDggKzc0LDEwIEBACiAJdW5zaWduZWQgbG9uZwkJdHNiX2h1Z2U7CiAJdW5zaWduZWQgbG9uZwkJdHNiX2h1Z2VfdGVtcDsKIAotLyogRGNhY2hlIGxpbmUgODogVW51c2VkLCBuZWVkZWQgdG8ga2VlcCB0cmFwX2Jsb2NrIGEgcG93ZXItb2YtMiBpbiBzaXplLiAgKi8KLQl1bnNpZ25lZCBsb25nCQlfX3BhZDJbNF07CisvKiBEY2FjaGUgbGluZSA4OiBJUlEgd29yayBsaXN0LCBhbmQga2VlcCB0cmFwX2Jsb2NrIGEgcG93ZXItb2YtMiBpbiBzaXplLiAgKi8KKwl1bnNpZ25lZCBpbnQJCWlycV93b3JrbGlzdDsKKwl1bnNpZ25lZCBpbnQJCV9fcGFkMTsKKwl1bnNpZ25lZCBsb25nCQlfX3BhZDJbM107CiB9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoNjQpKSk7CiBleHRlcm4gc3RydWN0IHRyYXBfcGVyX2NwdSB0cmFwX2Jsb2NrW05SX0NQVVNdOwogZXh0ZXJuIHZvaWQgaW5pdF9jdXJfY3B1X3RyYXAoc3RydWN0IHRocmVhZF9pbmZvICopOwpAQCAtMTE5LDYgKzEyMSw3IEBACiAjZGVmaW5lIFRSQVBfUEVSX0NQVV9DUFVfTElTVF9QQQkweGM4CiAjZGVmaW5lIFRSQVBfUEVSX0NQVV9UU0JfSFVHRQkJMHhkMAogI2RlZmluZSBUUkFQX1BFUl9DUFVfVFNCX0hVR0VfVEVNUAkweGQ4CisjZGVmaW5lIFRSQVBfUEVSX0NQVV9JUlFfV09SS0xJU1QJMHhlMAogCiAjZGVmaW5lIFRSQVBfQkxPQ0tfU1pfU0hJRlQJCTgKIApAQCAtMTcxLDExICsxNzQsOCBAQAogCiAvKiBDbG9iYmVycyBUTVAsIGxvYWRzIGxvY2FsIHByb2Nlc3NvcidzIElSUSB3b3JrIGFyZWEgaW50byBERVNULiAgKi8KICNkZWZpbmUgVFJBUF9MT0FEX0lSUV9XT1JLKERFU1QsIFRNUCkJCVwKLQlfX0dFVF9DUFVJRChUTVApCQkJXAotCXNldGhpCSVoaShfX2lycV93b3JrKSwgREVTVDsJCVwKLQlzbGx4CVRNUCwgNiwgVE1QOwkJCVwKLQlvcglERVNULCAlbG8oX19pcnFfd29yayksIERFU1Q7CVwKLQlhZGQJREVTVCwgVE1QLCBERVNUOworCVRSQVBfTE9BRF9UUkFQX0JMT0NLKERFU1QsIFRNUCkJCVwKKwlhZGQJREVTVCwgVFJBUF9QRVJfQ1BVX0lSUV9XT1JLTElTVCwgREVTVDsKIAogLyogQ2xvYmJlcnMgVE1QLCBsb2FkcyBERVNUIHdpdGggY3VycmVudCB0aHJlYWQgaW5mbyBwb2ludGVyLiAgKi8KICNkZWZpbmUgVFJBUF9MT0FEX1RIUkVBRF9SRUcoREVTVCwgVE1QKQkJXApAQCAtMjExLDkgKzIxMSwxMCBAQAogCVRSQVBfTE9BRF9UUkFQX0JMT0NLKERFU1QsIFRNUCkJCVwKIAlsZHgJW0RFU1QgKyBUUkFQX1BFUl9DUFVfUEdEX1BBRERSXSwgREVTVDsKIAorLyogQ2xvYmJlcnMgVE1QLCBsb2FkcyBsb2NhbCBwcm9jZXNzb3IncyBJUlEgd29yayBhcmVhIGludG8gREVTVC4gICovCiAjZGVmaW5lIFRSQVBfTE9BRF9JUlFfV09SSyhERVNULCBUTVApCQlcCi0Jc2V0aGkJJWhpKF9faXJxX3dvcmspLCBERVNUOwkJXAotCW9yCURFU1QsICVsbyhfX2lycV93b3JrKSwgREVTVDsKKwlUUkFQX0xPQURfVFJBUF9CTE9DSyhERVNULCBUTVApCQlcCisJYWRkCURFU1QsIFRSQVBfUEVSX0NQVV9JUlFfV09SS0xJU1QsIERFU1Q7CiAKICNkZWZpbmUgVFJBUF9MT0FEX1RIUkVBRF9SRUcoREVTVCwgVE1QKQkJXAogCVRSQVBfTE9BRF9UUkFQX0JMT0NLKERFU1QsIFRNUCkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXNwYXJjNjQvaGFyZGlycS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9oYXJkaXJxLmgKaW5kZXggZjBjZjcxMy4uN2MyOWZkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9oYXJkaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9oYXJkaXJxLmgKQEAgLTEyLDYgKzEyLDggQEAKICNkZWZpbmUgbG9jYWxfc29mdGlycV9wZW5kaW5nKCkgXAogCShsb2NhbF9jcHVfZGF0YSgpLl9fc29mdGlycV9wZW5kaW5nKQogCit2b2lkIGFja19iYWRfaXJxKHVuc2lnbmVkIGludCBpcnEpOworCiAjZGVmaW5lIEhBUkRJUlFfQklUUwk4CiAKICNlbmRpZiAvKiAhKF9fU1BBUkM2NF9IQVJESVJRX0gpICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2h3X2lycS5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9od19pcnEuaAppbmRleCAxNTNjYWUyLi41OTliM2IwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L2h3X2lycS5oCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvaHdfaXJxLmgKQEAgLTEsNiArMSw2IEBACiAjaWZuZGVmIF9fQVNNX1NQQVJDNjRfSFdfSVJRX0gKICNkZWZpbmUgX19BU01fU1BBUkM2NF9IV19JUlFfSAogCi0vKiBEdW1teSBpbmNsdWRlLiAqLworZXh0ZXJuIHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmhhbmRsZXIsIHVuc2lnbmVkIGludCB2aXJ0X2lycSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9pcnEuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvaXJxLmgKaW5kZXggZmExNjRkMy4uOTA1ZTU5YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC9pcnEuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L2lycS5oCkBAIC0xNSw1OCArMTUsNiBAQAogI2luY2x1ZGUgPGFzbS9waWwuaD4KICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAKLXN0cnVjdCBpbm9fYnVja2V0OwotCi0jZGVmaW5lIE1BWF9JUlFfREVTQ19BQ1RJT04JNAotCi1zdHJ1Y3QgaXJxX2Rlc2MgewotCXZvaWQJCQkoKnByZV9oYW5kbGVyKShzdHJ1Y3QgaW5vX2J1Y2tldCAqLCB2b2lkICosIHZvaWQgKik7Ci0Jdm9pZAkJCSpwcmVfaGFuZGxlcl9hcmcxOwotCXZvaWQJCQkqcHJlX2hhbmRsZXJfYXJnMjsKLQl1MzIJCQlhY3Rpb25fYWN0aXZlX21hc2s7Ci0Jc3RydWN0IGlycWFjdGlvbglhY3Rpb25bTUFYX0lSUV9ERVNDX0FDVElPTl07Ci19OwotCi0vKiBZb3Ugc2hvdWxkIG5vdCBtZXNzIHdpdGggdGhpcyBkaXJlY3RseS4gVGhhdCdzIHRoZSBqb2Igb2YgaXJxLmMuCi0gKgotICogSWYgeW91IG1ha2UgY2hhbmdlcyBoZXJlLCBwbGVhc2UgdXBkYXRlIGhhbmQgY29kZWQgYXNzZW1ibGVyIG9mCi0gKiB0aGUgdmVjdG9yZWQgaW50ZXJydXB0IHRyYXAgaGFuZGxlciBpbiBlbnRyeS5TIC1EYXZlTQotICoKLSAqIFRoaXMgaXMgY3VycmVudGx5IG9uZSBEQ0FDSEUgbGluZSwgdHdvIGJ1Y2tldHMgcGVyIEwyIGNhY2hlCi0gKiBsaW5lLiAgS2VlcCB0aGlzIGluIG1pbmQgcGxlYXNlLgotICovCi1zdHJ1Y3QgaW5vX2J1Y2tldCB7Ci0JLyogTmV4dCBoYW5kbGVyIGluIHBlci1DUFUgUElMIHdvcmtsaXN0LiAgV2Uga25vdyB0aGF0Ci0JICogYnVja2V0IHBvaW50ZXJzIGhhdmUgdGhlIGhpZ2ggMzItYml0cyBjbGVhciwgc28gdG8KLQkgKiBzYXZlIHNwYWNlIHdlIG9ubHkgc3RvcmUgdGhlIGJpdHMgd2UgbmVlZC4KLQkgKi8KLS8qMHgwMCovdW5zaWduZWQgaW50IGlycV9jaGFpbjsKLQotCS8qIFBJTCB0byBzY2hlZHVsZSB0aGlzIElWRUMgYXQuICovCi0vKjB4MDQqL3Vuc2lnbmVkIGNoYXIgcGlsOwotCi0JLyogSWYgYW4gSVZFQyBhcnJpdmVzIHdoaWxlIGlycV9pbmZvIGlzIE5VTEwsIHdlCi0JICogc2V0IHRoaXMgdG8gbm90aWZ5IHJlcXVlc3RfaXJxKCkgYWJvdXQgdGhlIGV2ZW50LgotCSAqLwotLyoweDA1Ki91bnNpZ25lZCBjaGFyIHBlbmRpbmc7Ci0KLQkvKiBNaXNjZWxsYW5lb3VzIGZsYWdzLiAqLwotLyoweDA2Ki91bnNpZ25lZCBjaGFyIGZsYWdzOwotCi0JLyogQ3VycmVudGx5IHVudXNlZC4gICovCi0vKjB4MDcqL3Vuc2lnbmVkIGNoYXIgX19wYWQ7Ci0KLQkvKiBSZWZlcmVuY2UgdG8gSVJRIGRlc2NyaXB0b3IgZm9yIHRoaXMgYnVja2V0LiAqLwotLyoweDA4Ki9zdHJ1Y3QgaXJxX2Rlc2MgKmlycV9pbmZvOwotCi0JLyogU3VuNSBJbnRlcnJ1cHQgQ2xlYXIgUmVnaXN0ZXIuICovCi0vKjB4MTAqL3Vuc2lnbmVkIGxvbmcgaWNscjsKLQotCS8qIFN1bjUgSW50ZXJydXB0IE1hcHBpbmcgUmVnaXN0ZXIuICovCi0vKjB4MTgqL3Vuc2lnbmVkIGxvbmcgaW1hcDsKLQotfTsKLQogLyogSU1BUC9JQ0xSIHJlZ2lzdGVyIGRlZmluZXMgKi8KICNkZWZpbmUgSU1BUF9WQUxJRAkJMHg4MDAwMDAwMAkvKiBJUlEgRW5hYmxlZAkJKi8KICNkZWZpbmUgSU1BUF9USURfVVBBCQkweDdjMDAwMDAwCS8qIFVQQSBUYXJnZXRJRAkJKi8KQEAgLTg0LDM2ICszMiwyMCBAQAogI2RlZmluZSBJQ0xSX1RSQU5TTUlUCQkweDAwMDAwMDAxCS8qIFRyYW5zbWl0IHN0YXRlCSovCiAjZGVmaW5lIElDTFJfUEVORElORwkJMHgwMDAwMDAwMwkvKiBQZW5kaW5nIHN0YXRlCSovCiAKLS8qIE9ubHkgOC1iaXRzIGFyZSBhdmFpbGFibGUsIGJlIGNhcmVmdWwuICAtRGF2ZU0gKi8KLSNkZWZpbmUgSUJGX1BDSQkJMHgwMgkvKiBQU1lDSE8vU0FCUkUvU0NISVpPIFBDSSBpbnRlcnJ1cHQuCSAqLwotI2RlZmluZSBJQkZfQUNUSVZFCTB4MDQJLyogSW50ZXJydXB0IGlzIGFjdGl2ZSBhbmQgaGFzIGEgaGFuZGxlci4qLwotI2RlZmluZSBJQkZfSU5QUk9HUkVTUwkweDEwCS8qIElSUSBpcyBiZWluZyBzZXJ2aWNlZC4JCSAqLworLyogVGhlIGxhcmdlc3QgbnVtYmVyIG9mIHVuaXF1ZSBpbnRlcnJ1cHQgc291cmNlcyB3ZSBzdXBwb3J0LgorICogSWYgdGhpcyBuZWVkcyB0byBldmVyIGJlIGxhcmdlciB0aGFuIDI1NSwgeW91IG5lZWQgdG8gY2hhbmdlCisgKiB0aGUgdHlwZSBvZiBpbm9fYnVja2V0LT52aXJ0X2lycSBhcyBhcHByb3ByaWF0ZS4KKyAqCisgKiBpbm9fYnVja2V0LT52aXJ0X2lycSBhbGxvY2F0aW9uIGlzIG1hZGUgZHVyaW5nIHtzdW40dl8sfWJ1aWxkX2lycSgpLgorICovCisjZGVmaW5lIE5SX0lSUVMgICAgMjU1CiAKLSNkZWZpbmUgTlVNX0lWRUNTCShJTUFQX0lOUiArIDEpCi1leHRlcm4gc3RydWN0IGlub19idWNrZXQgaXZlY3Rvcl90YWJsZVtOVU1fSVZFQ1NdOwotCi0jZGVmaW5lIF9faXJxX2lubyhpcnEpIFwKLSAgICAgICAgKCgoc3RydWN0IGlub19idWNrZXQgKikodW5zaWduZWQgbG9uZykoaXJxKSkgLSAmaXZlY3Rvcl90YWJsZVswXSkKLSNkZWZpbmUgX19pcnFfcGlsKGlycSkgKChzdHJ1Y3QgaW5vX2J1Y2tldCAqKSh1bnNpZ25lZCBsb25nKShpcnEpKS0+cGlsCi0jZGVmaW5lIF9fYnVja2V0KGlycSkgKChzdHJ1Y3QgaW5vX2J1Y2tldCAqKSh1bnNpZ25lZCBsb25nKShpcnEpKQotI2RlZmluZSBfX2lycShidWNrZXQpICgodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKShidWNrZXQpKQotCi1zdGF0aWMgX19pbmxpbmVfXyBjaGFyICpfX2lycV9pdG9hKHVuc2lnbmVkIGludCBpcnEpCi17Ci0Jc3RhdGljIGNoYXIgYnVmZlsxNl07Ci0KLQlzcHJpbnRmKGJ1ZmYsICIlZCwleCIsIF9faXJxX3BpbChpcnEpLCAodW5zaWduZWQgaW50KV9faXJxX2lubyhpcnEpKTsKLQlyZXR1cm4gYnVmZjsKLX0KLQotI2RlZmluZSBOUl9JUlFTICAgIDE2Ci0KK2V4dGVybiB2b2lkIGlycV9pbnN0YWxsX3ByZV9oYW5kbGVyKGludCB2aXJ0X2lycSwKKwkJCQkgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGludCwgdm9pZCAqLCB2b2lkICopLAorCQkJCSAgICB2b2lkICphcmcxLCB2b2lkICphcmcyKTsKICNkZWZpbmUgaXJxX2Nhbm9uaWNhbGl6ZShpcnEpCShpcnEpCi1leHRlcm4gdm9pZCBkaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQpOwotI2RlZmluZSBkaXNhYmxlX2lycV9ub3N5bmMgZGlzYWJsZV9pcnEKLWV4dGVybiB2b2lkIGVuYWJsZV9pcnEodW5zaWduZWQgaW50KTsKLWV4dGVybiB1bnNpZ25lZCBpbnQgYnVpbGRfaXJxKGludCBwaWwsIGludCBpbm9maXh1cCwgdW5zaWduZWQgbG9uZyBpY2xyLCB1bnNpZ25lZCBsb25nIGltYXApOwotZXh0ZXJuIHVuc2lnbmVkIGludCBzdW40dl9idWlsZF9pcnEodTMyIGRldmhhbmRsZSwgdW5zaWduZWQgaW50IGRldmlubywgaW50IHBpbCwgdW5zaWduZWQgY2hhciBmbGFncyk7CitleHRlcm4gdW5zaWduZWQgaW50IGJ1aWxkX2lycShpbnQgaW5vZml4dXAsIHVuc2lnbmVkIGxvbmcgaWNsciwgdW5zaWduZWQgbG9uZyBpbWFwKTsKK2V4dGVybiB1bnNpZ25lZCBpbnQgc3VuNHZfYnVpbGRfaXJxKHUzMiBkZXZoYW5kbGUsIHVuc2lnbmVkIGludCBkZXZpbm8pOwogZXh0ZXJuIHVuc2lnbmVkIGludCBzYnVzX2J1aWxkX2lycSh2b2lkICpzYnVzLCB1bnNpZ25lZCBpbnQgaW5vKTsKIAogc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfc29mdGludCh1bnNpZ25lZCBsb25nIGJpdHMpCkBAIC0xMzksOCArNzEsNCBAQAogCXJldHVybiByZXR2YWw7CiB9CiAKLXN0cnVjdCBpcnFhY3Rpb247Ci1zdHJ1Y3QgcHRfcmVnczsKLWludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zcGFyYzY0L3BpbC5oIGIvaW5jbHVkZS9hc20tc3BhcmM2NC9waWwuaAppbmRleCA3OWY4MjdlLi43MjkyNzc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L3BpbC5oCisrKyBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvcGlsLmgKQEAgLTUsOSArNSw5IEBACiAvKiBUbyBhdm9pZCBzb21lIGxvY2tpbmcgcHJvYmxlbXMsIHdlIGhhcmQgYWxsb2NhdGUgY2VydGFpbiBQSUxzCiAgKiBmb3IgU01QIGNyb3NzIGNhbGwgbWVzc2FnZXMgdGhhdCBtdXN0IGRvIGEgZXRyYXAvcnRyYXAuCiAgKgotICogQSBjbGkoKSBkb2VzIG5vdCBibG9jayB0aGUgY3Jvc3MgY2FsbCBkZWxpdmVyeSwgc28gd2hlbiBTTVAKLSAqIGxvY2tpbmcgaXMgYW4gaXNzdWUgd2UgcmVzY2hlZHVsZSB0aGUgZXZlbnQgaW50byBhIFBJTCBpbnRlcnJ1cHQKLSAqIHdoaWNoIGlzIGJsb2NrZWQgYnkgY2xpKCkuCisgKiBBIGxvY2FsX2lycV9kaXNhYmxlKCkgZG9lcyBub3QgYmxvY2sgdGhlIGNyb3NzIGNhbGwgZGVsaXZlcnksIHNvCisgKiB3aGVuIFNNUCBsb2NraW5nIGlzIGFuIGlzc3VlIHdlIHJlc2NoZWR1bGUgdGhlIGV2ZW50IGludG8gYSBQSUwKKyAqIGludGVycnVwdCB3aGljaCBpcyBibG9ja2VkIGJ5IGxvY2FsX2lycV9kaXNhYmxlKCkuCiAgKgogICogSW4gZmFjdCBhbnkgWENBTEwgd2hpY2ggaGFzIHRvIGV0cmFwL3J0cmFwIGhhcyBhIHByb2JsZW0gYmVjYXVzZQogICogaXQgaXMgZGlmZmljdWx0IHRvIHByZXZlbnQgcnRyYXAgZnJvbSBydW5uaW5nIEJIJ3MsIGFuZCB0aGF0IHdvdWxkCkBAIC0xNyw2ICsxNyw3IEBACiAjZGVmaW5lIFBJTF9TTVBfUkVDRUlWRV9TSUdOQUwJMgogI2RlZmluZSBQSUxfU01QX0NBUFRVUkUJCTMKICNkZWZpbmUgUElMX1NNUF9DVFhfTkVXX1ZFUlNJT04JNAorI2RlZmluZSBQSUxfREVWSUNFX0lSUQkJNQogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2RlZmluZSBQSUxfUkVTRVJWRUQoUElMKQkoKFBJTCkgPT0gUElMX1NNUF9DQUxMX0ZVTkMgfHwgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc3BhcmM2NC92Z2EuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvdmdhLmgKaW5kZXggOWM1N2ViMy4uYzY5ZDViMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc3BhcmM2NC92Z2EuaAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L3ZnYS5oCkBAIC0yOCw2ICsyOCw2IEBACiAJcmV0dXJuICphZGRyOwogfQogCi0jZGVmaW5lIFZHQV9NQVBfTUVNKHgpICh4KQorI2RlZmluZSBWR0FfTUFQX01FTSh4LHMpICh4KQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXY4NTAvaXJxLmggYi9pbmNsdWRlL2FzbS12ODUwL2lycS5oCmluZGV4IDQ0NDMxMTUuLjFiZjA5NmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXY4NTAvaXJxLmgKKysrIGIvaW5jbHVkZS9hc20tdjg1MC9pcnEuaApAQCAtNjIsOCArNjIsNiBAQAogLyogRGlzYWJsZSBhbiBpcnEgd2l0aG91dCB3YWl0aW5nLiAqLwogZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnFfbm9zeW5jICh1bnNpZ25lZCBpbnQgaXJxKTsKIAotZXh0ZXJuIGludCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKLQogI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KIAogI2VuZGlmIC8qIF9fVjg1MF9JUlFfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODZfNjQvYWNwaS5oIGIvaW5jbHVkZS9hc20teDg2XzY0L2FjcGkuaAppbmRleCBhYTFjN2IyLi4yYzk1YTMxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODZfNjQvYWNwaS5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Nl82NC9hY3BpLmgKQEAgLTE2Miw2ICsxNjIsOCBAQAogCiBleHRlcm4gdTggeDg2X2FjcGlpZF90b19hcGljaWRbXTsKIAorI2RlZmluZSBBUkNIX0hBU19QT1dFUl9JTklUIDEKKwogZXh0ZXJuIGludCBhY3BpX3NraXBfdGltZXJfb3ZlcnJpZGU7CiAKICNlbmRpZiAvKl9fS0VSTkVMX18qLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2XzY0L2FwaWNkZWYuaCBiL2luY2x1ZGUvYXNtLXg4Nl82NC9hcGljZGVmLmgKaW5kZXggNWE0OGU5Yi4uMWRkNDAwNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2XzY0L2FwaWNkZWYuaAorKysgYi9pbmNsdWRlL2FzbS14ODZfNjQvYXBpY2RlZi5oCkBAIC0xMzcsOCArMTM3LDYgQEAKICAqLwogI2RlZmluZSB1MzIgdW5zaWduZWQgaW50CiAKLSNkZWZpbmUgbGFwaWMgKCh2b2xhdGlsZSBzdHJ1Y3QgbG9jYWxfYXBpYyAqKUFQSUNfQkFTRSkKLQogc3RydWN0IGxvY2FsX2FwaWMgewogCiAvKjAwMCovCXN0cnVjdCB7IHUzMiBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14ODZfNjQvbW16b25lLmggYi9pbmNsdWRlL2FzbS14ODZfNjQvbW16b25lLmgKaW5kZXggNzBiYjk5Ni4uYzM4ZWJkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2XzY0L21tem9uZS5oCisrKyBiL2luY2x1ZGUvYXNtLXg4Nl82NC9tbXpvbmUuaApAQCAtNDIsNyArNDIsNiBAQAogCiAjaWZkZWYgQ09ORklHX0RJU0NPTlRJR01FTQogI2RlZmluZSBwZm5fdG9fbmlkKHBmbikgcGh5c190b19uaWQoKHVuc2lnbmVkIGxvbmcpKHBmbikgPDwgUEFHRV9TSElGVCkKLSNkZWZpbmUga3ZhZGRyX3RvX25pZChrYWRkcikJcGh5c190b19uaWQoX19wYShrYWRkcikpCiAKIGV4dGVybiBpbnQgcGZuX3ZhbGlkKHVuc2lnbmVkIGxvbmcgcGZuKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2XzY0L21zaS5oIGIvaW5jbHVkZS9hc20teDg2XzY0L21zaS5oCmluZGV4IDM1NmUwZTguLjNhZDIzNDY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODZfNjQvbXNpLmgKKysrIGIvaW5jbHVkZS9hc20teDg2XzY0L21zaS5oCkBAIC0xMCw3ICsxMCwxNSBAQAogI2luY2x1ZGUgPGFzbS9tYWNoX2FwaWMuaD4KICNpbmNsdWRlIDxhc20vc21wLmg+CiAKLSNkZWZpbmUgTEFTVF9ERVZJQ0VfVkVDVE9SCQkyMzIKKyNkZWZpbmUgTEFTVF9ERVZJQ0VfVkVDVE9SCShGSVJTVF9TWVNURU1fVkVDVE9SIC0gMSkKICNkZWZpbmUgTVNJX1RBUkdFVF9DUFVfU0hJRlQJMTIKIAorZXh0ZXJuIHN0cnVjdCBtc2lfb3BzIG1zaV9hcGljX29wczsKKworc3RhdGljIGlubGluZSBpbnQgbXNpX2FyY2hfaW5pdCh2b2lkKQoreworCW1zaV9yZWdpc3RlcigmbXNpX2FwaWNfb3BzKTsKKwlyZXR1cm4gMDsKK30KKwogI2VuZGlmIC8qIEFTTV9NU0lfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teDg2XzY0L251bWEuaCBiL2luY2x1ZGUvYXNtLXg4Nl82NC9udW1hLmgKaW5kZXggMWNjOTJmZS4uOTMzZmYxMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2XzY0L251bWEuaAorKysgYi9pbmNsdWRlL2FzbS14ODZfNjQvbnVtYS5oCkBAIC04LDcgKzgsNiBAQAogfTsKIAogZXh0ZXJuIGludCBjb21wdXRlX2hhc2hfc2hpZnQoc3RydWN0IGJvb3Rub2RlICpub2RlcywgaW50IG51bW5vZGVzKTsKLWV4dGVybiBpbnQgcHhtX3RvX25vZGUoaW50IG5pZCk7CiAKICNkZWZpbmUgWk9ORV9BTElHTiAoMVVMIDw8IChNQVhfT1JERVIrUEFHRV9TSElGVCkpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Nl82NC91bmlzdGQuaCBiL2luY2x1ZGUvYXNtLXg4Nl82NC91bmlzdGQuaAppbmRleCAwYWZmMjJiLi45NDM4N2M5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODZfNjQvdW5pc3RkLmgKKysrIGIvaW5jbHVkZS9hc20teDg2XzY0L3VuaXN0ZC5oCkBAIC02MTcsMTAgKzYxNywxMiBAQAogX19TWVNDQUxMKF9fTlJfc3luY19maWxlX3JhbmdlLCBzeXNfc3luY19maWxlX3JhbmdlKQogI2RlZmluZSBfX05SX3Ztc3BsaWNlCQkyNzgKIF9fU1lTQ0FMTChfX05SX3Ztc3BsaWNlLCBzeXNfdm1zcGxpY2UpCisjZGVmaW5lIF9fTlJfbW92ZV9wYWdlcwkJMjc5CitfX1NZU0NBTEwoX19OUl9tb3ZlX3BhZ2VzLCBzeXNfbW92ZV9wYWdlcykKIAogI2lmZGVmIF9fS0VSTkVMX18KIAotI2RlZmluZSBfX05SX3N5c2NhbGxfbWF4IF9fTlJfdm1zcGxpY2UKKyNkZWZpbmUgX19OUl9zeXNjYWxsX21heCBfX05SX21vdmVfcGFnZXMKIAogI2lmbmRlZiBfX05PX1NUVUJTCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Nl82NC92Z2EuaCBiL2luY2x1ZGUvYXNtLXg4Nl82NC92Z2EuaAppbmRleCBlZjBjMGU1Li4wZWNmNjhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS14ODZfNjQvdmdhLmgKKysrIGIvaW5jbHVkZS9hc20teDg2XzY0L3ZnYS5oCkBAIC0xMiw3ICsxMiw3IEBACiAgKglhY2Nlc3MgdGhlIHZpZGVvcmFtIGRpcmVjdGx5IHdpdGhvdXQgYW55IGJsYWNrIG1hZ2ljLgogICovCiAKLSNkZWZpbmUgVkdBX01BUF9NRU0oeCkgKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHgpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykgKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHgpCiAKICNkZWZpbmUgdmdhX3JlYWRiKHgpICgqKHgpKQogI2RlZmluZSB2Z2Ffd3JpdGViKHgseSkgKCooeSkgPSAoeCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS14dGVuc2EvY2hlY2tzdW0uaCBiL2luY2x1ZGUvYXNtLXh0ZW5zYS9jaGVja3N1bS5oCmluZGV4IGJkYzAwYWUuLjAzMTE0ZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXh0ZW5zYS9jaGVja3N1bS5oCisrKyBiL2luY2x1ZGUvYXNtLXh0ZW5zYS9jaGVja3N1bS5oCkBAIC00Myw4ICs0Myw3IEBACiAgKglOb3RlOiB3aGVuIHlvdSBnZXQgYSBOVUxMIHBvaW50ZXIgZXhjZXB0aW9uIGhlcmUgdGhpcyBtZWFucyBzb21lb25lCiAgKglwYXNzZWQgaW4gYW4gaW5jb3JyZWN0IGtlcm5lbCBhZGRyZXNzIHRvIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgKgotICoJSWYgeW91IHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgcGxlYXNlIGRvbid0IGZvcmdldCB0aGUKLSAqCXZlcmlmeV9hcmVhKCkuCisgKglJZiB5b3UgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHRoZSBhY2Nlc3Nfb2soKS4KICAqLwogc3RhdGljIGlubGluZQogdW5zaWduZWQgaW50IGNzdW1fcGFydGlhbF9jb3B5X25vY2hlY2sgKCBjb25zdCBjaGFyICpzcmMsIGNoYXIgKmRzdCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXh0ZW5zYS9yd3NlbS5oIGIvaW5jbHVkZS9hc20teHRlbnNhL3J3c2VtLmgKaW5kZXggM2MwMmIwZS4uYWJjZDg2ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teHRlbnNhL3J3c2VtLmgKKysrIGIvaW5jbHVkZS9hc20teHRlbnNhL3J3c2VtLmgKQEAgLTE3Miw0ICsxNzIsOSBAQAogCXJldHVybiBhdG9taWNfYWRkX3JldHVybihkZWx0YSwgKGF0b21pY190ICopKCZzZW0tPmNvdW50KSk7CiB9CiAKLSNlbmRpZgkvKiBfWFRFTlNBX1JXU0VNX1hBRERfSCAqLworc3RhdGljIGlubGluZSBpbnQgcndzZW1faXNfbG9ja2VkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKK3sKKwlyZXR1cm4gKHNlbS0+Y291bnQgIT0gMCk7Cit9CisKKyNlbmRpZgkvKiBfWFRFTlNBX1JXU0VNX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXh0ZW5zYS91YWNjZXNzLmggYi9pbmNsdWRlL2FzbS14dGVuc2EvdWFjY2Vzcy5oCmluZGV4IDA2YTIyYjguLjg4YTY0ZTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXh0ZW5zYS91YWNjZXNzLmgKKysrIGIvaW5jbHVkZS9hc20teHRlbnNhL3VhY2Nlc3MuaApAQCAtMTU0LDM1ICsxNTQsNiBAQAogLkxhY2Nlc3Nfb2tfXEA6CiAJLmVuZG0KIAotLyoKLSAqIHZlcmlmeV9hcmVhIGRldGVybWluZXMgd2hldGhlciBhIG1lbW9yeSBhY2Nlc3MgaXMgYWxsb3dlZC4gIEl0J3MKLSAqIG1vc3RseSBhbiB1bm5lY2Vzc2FyeSB3cmFwcGVyIGZvciBhY2Nlc3Nfb2ssIGJ1dCB3ZSBwcm92aWRlIGl0IGFzIGEKLSAqIGR1cGxpY2F0ZSBvZiB0aGUgdmVyaWZ5X2FyZWEoKSBDIGlubGluZSBmdW5jdGlvbiBiZWxvdy4gIFNlZSB0aGUKLSAqIGVxdWl2YWxlbnQgQyB2ZXJzaW9uIGJlbG93IGZvciBjbGFyaXR5LgotICoKLSAqIE9uIGVycm9yLCB2ZXJpZnlfYXJlYSBicmFuY2hlcyB0byBhIGxhYmVsIGluZGljYXRlZCBieSBwYXJhbWV0ZXIKLSAqIDxlcnJvcj4uICBUaGlzIGltcGxpZXMgdGhhdCB0aGUgbWFjcm8gZmFsbHMgdGhyb3VnaCB0byB0aGUgbmV4dAotICogaW5zdHJ1Y3Rpb24gb24gc3VjY2Vzcy4KLSAqCi0gKiBOb3RlIHRoYXQgd2UgYXNzdW1lIHN1Y2Nlc3MgaXMgdGhlIGNvbW1vbiBjYXNlLCBhbmQgd2Ugb3B0aW1pemUgdGhlCi0gKiBicmFuY2ggZmFsbC10aHJvdWdoIGNhc2Ugb24gc3VjY2Vzcy4KLSAqCi0gKiBPbiBFbnRyeToKLSAqIAk8YWE+CXJlZ2lzdGVyIGNvbnRhaW5pbmcgbWVtb3J5IGFkZHJlc3MKLSAqIAk8YXM+CXJlZ2lzdGVyIGNvbnRhaW5pbmcgbWVtb3J5IHNpemUKLSAqIAk8YXQ+CXRlbXAgcmVnaXN0ZXIKLSAqIAk8ZXJyb3I+CWxhYmVsIHRvIGJyYW5jaCB0byBvbiBlcnJvcjsgaW1wbGllcyBmYWxsLXRocm91Z2gKLSAqIAkJbWFjcm8gb24gc3VjY2VzcwotICogT24gRXhpdDoKLSAqIAk8YWE+CXByZXNlcnZlZAotICogCTxhcz4JcHJlc2VydmVkCi0gKiAJPGF0PglkZXN0cm95ZWQKLSAqLwotCS5tYWNybwl2ZXJpZnlfYXJlYQlhYSwgYXMsIGF0LCBzcCwgZXJyb3IKLQlhY2Nlc3Nfb2sgIFxhdCwgXGFhLCBcYXMsIFxzcCwgXGVycm9yCi0JLmVuZG0KLQotCiAjZWxzZSAvKiBfX0FTU0VNQkxZX18gbm90IGRlZmluZWQgKi8KIAogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CkBAIC0yMTEsMTEgKzE4Miw2IEBACiAjZGVmaW5lIF9fYWNjZXNzX29rKGFkZHIsc2l6ZSkgKF9fa2VybmVsX29rIHx8IF9fdXNlcl9vaygoYWRkciksKHNpemUpKSkKICNkZWZpbmUgYWNjZXNzX29rKHR5cGUsYWRkcixzaXplKSBfX2FjY2Vzc19vaygodW5zaWduZWQgbG9uZykoYWRkciksKHNpemUpKQogCi1zdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfYXJlYShpbnQgdHlwZSwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKLXsKLQlyZXR1cm4gYWNjZXNzX29rKHR5cGUsYWRkcixzaXplKSA/IDAgOiAtRUZBVUxUOwotfQotCiAvKgogICogVGhlc2UgYXJlIHRoZSBtYWluIHNpbmdsZS12YWx1ZSB0cmFuc2ZlciByb3V0aW5lcy4gIFRoZXkKICAqIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSByaWdodCBzaXplIGlmIHdlIGp1c3QgaGF2ZSB0aGUgcmlnaHQgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20teHRlbnNhL3ZnYS5oIGIvaW5jbHVkZS9hc20teHRlbnNhL3ZnYS5oCmluZGV4IDIzZDgyZjYuLjFmZDhjYWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXh0ZW5zYS92Z2EuaAorKysgYi9pbmNsdWRlL2FzbS14dGVuc2EvdmdhLmgKQEAgLTExLDcgKzExLDcgQEAKICNpZm5kZWYgX1hURU5TQV9WR0FfSAogI2RlZmluZSBfWFRFTlNBX1ZHQV9ICiAKLSNkZWZpbmUgVkdBX01BUF9NRU0oeCkgKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHgpCisjZGVmaW5lIFZHQV9NQVBfTUVNKHgscykgKHVuc2lnbmVkIGxvbmcpcGh5c190b192aXJ0KHgpCiAKICNkZWZpbmUgdmdhX3JlYWRiKHgpCSgqKHgpKQogI2RlZmluZSB2Z2Ffd3JpdGViKHgseSkJKCooeSkgPSAoeCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2FjcGkuaCBiL2luY2x1ZGUvbGludXgvYWNwaS5oCmluZGV4IDFjZjBiOTEuLjkwZDZkZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYWNwaS5oCisrKyBiL2luY2x1ZGUvbGludXgvYWNwaS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpX2J1cy5oPgogI2luY2x1ZGUgPGFjcGkvYWNwaV9kcml2ZXJzLmg+CisjaW5jbHVkZSA8YWNwaS9hY3BpX251bWEuaD4KICNpbmNsdWRlIDxhc20vYWNwaS5oPgogCiAKQEAgLTQwNywxMCArNDA4LDE4IEBACiB2b2lkIGFjcGlfdGFibGVfcHJpbnRfc3JhdF9lbnRyeSAoYWNwaV90YWJsZV9lbnRyeV9oZWFkZXIgKnNyYXQpOwogCiAvKiB0aGUgZm9sbG93aW5nIGZvdXIgZnVuY3Rpb25zIGFyZSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50ICovCisjaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9QQVJTRV9TUkFUCisjZGVmaW5lIE5SX05PREVfTUVNQkxLUyBNQVhfTlVNTk9ERVMKKyNkZWZpbmUgYWNwaV9udW1hX3NsaXRfaW5pdChzbGl0KSBkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgYWNwaV9udW1hX3Byb2Nlc3Nvcl9hZmZpbml0eV9pbml0KHBhKSBkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgYWNwaV9udW1hX21lbW9yeV9hZmZpbml0eV9pbml0KG1hKSBkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgYWNwaV9udW1hX2FyY2hfZml4dXAoKSBkbyB7fSB3aGlsZSAoMCkKKyNlbHNlCiB2b2lkIGFjcGlfbnVtYV9zbGl0X2luaXQgKHN0cnVjdCBhY3BpX3RhYmxlX3NsaXQgKnNsaXQpOwogdm9pZCBhY3BpX251bWFfcHJvY2Vzc29yX2FmZmluaXR5X2luaXQgKHN0cnVjdCBhY3BpX3RhYmxlX3Byb2Nlc3Nvcl9hZmZpbml0eSAqcGEpOwogdm9pZCBhY3BpX251bWFfbWVtb3J5X2FmZmluaXR5X2luaXQgKHN0cnVjdCBhY3BpX3RhYmxlX21lbW9yeV9hZmZpbml0eSAqbWEpOwogdm9pZCBhY3BpX251bWFfYXJjaF9maXh1cCh2b2lkKTsKKyNlbmRpZgogCiAjaWZkZWYgQ09ORklHX0FDUElfSE9UUExVR19DUFUKIC8qIEFyY2ggZGVwZW5kZW50IGZ1bmN0aW9ucyBmb3IgY3B1IGhvdHBsdWcgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hdGEuaCBiL2luY2x1ZGUvbGludXgvYXRhLmgKaW5kZXggMzEyYTJjMC4uMzY3MWFmOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9hdGEuaAorKysgYi9pbmNsdWRlL2xpbnV4L2F0YS5oCkBAIC05Nyw2ICs5Nyw5IEBACiAJQVRBX0RSUQkJCT0gKDEgPDwgMyksCS8qIGRhdGEgcmVxdWVzdCBpL28gKi8KIAlBVEFfRVJSCQkJPSAoMSA8PCAwKSwJLyogaGF2ZSBhbiBlcnJvciAqLwogCUFUQV9TUlNUCQk9ICgxIDw8IDIpLAkvKiBzb2Z0d2FyZSByZXNldCAqLworCUFUQV9JQ1JDCQk9ICgxIDw8IDcpLAkvKiBpbnRlcmZhY2UgQ1JDIGVycm9yICovCisJQVRBX1VOQwkJCT0gKDEgPDwgNiksCS8qIHVuY29ycmVjdGFibGUgbWVkaWEgZXJyb3IgKi8KKwlBVEFfSURORgkJPSAoMSA8PCA0KSwJLyogSUQgbm90IGZvdW5kICovCiAJQVRBX0FCT1JURUQJCT0gKDEgPDwgMiksCS8qIGNvbW1hbmQgYWJvcnRlZCAqLwogCiAJLyogQVRBIGNvbW1hbmQgYmxvY2sgcmVnaXN0ZXJzICovCkBAIC0xMzAsNiArMTMzLDggQEAKIAlBVEFfQ01EX1dSSVRFCQk9IDB4Q0EsCiAJQVRBX0NNRF9XUklURV9FWFQJPSAweDM1LAogCUFUQV9DTURfV1JJVEVfRlVBX0VYVAk9IDB4M0QsCisJQVRBX0NNRF9GUERNQV9SRUFECT0gMHg2MCwKKwlBVEFfQ01EX0ZQRE1BX1dSSVRFCT0gMHg2MSwKIAlBVEFfQ01EX1BJT19SRUFECT0gMHgyMCwKIAlBVEFfQ01EX1BJT19SRUFEX0VYVAk9IDB4MjQsCiAJQVRBX0NNRF9QSU9fV1JJVEUJPSAweDMwLApAQCAtMTQ4LDYgKzE1MywxMCBAQAogCUFUQV9DTURfSU5JVF9ERVZfUEFSQU1TCT0gMHg5MSwKIAlBVEFfQ01EX1JFQURfTkFUSVZFX01BWAk9IDB4RjgsCiAJQVRBX0NNRF9SRUFEX05BVElWRV9NQVhfRVhUID0gMHgyNywKKwlBVEFfQ01EX1JFQURfTE9HX0VYVAk9IDB4MmYsCisKKwkvKiBSRUFEX0xPR19FWFQgcGFnZXMgKi8KKwlBVEFfTE9HX1NBVEFfTkNRCT0gMHgxMCwKIAogCS8qIFNFVEZFQVRVUkVTIHN0dWZmICovCiAJU0VURkVBVFVSRVNfWEZFUgk9IDB4MDMsCkBAIC0xNzIsNiArMTgxLDkgQEAKIAlYRkVSX1BJT18wCQk9IDB4MDgsCiAJWEZFUl9QSU9fU0xPVwkJPSAweDAwLAogCisJU0VURkVBVFVSRVNfV0NfT04JPSAweDAyLCAvKiBFbmFibGUgd3JpdGUgY2FjaGUgKi8KKwlTRVRGRUFUVVJFU19XQ19PRkYJPSAweDgyLCAvKiBEaXNhYmxlIHdyaXRlIGNhY2hlICovCisKIAkvKiBBVEFQSSBzdHVmZiAqLwogCUFUQVBJX1BLVF9ETUEJCT0gKDEgPDwgMCksCiAJQVRBUElfRE1BRElSCQk9ICgxIDw8IDIpLAkvKiBBVEFQSSBkYXRhIGRpcjoKQEAgLTE5Miw2ICsyMDQsMTYgQEAKIAlTQ1JfQUNUSVZFCQk9IDMsCiAJU0NSX05PVElGSUNBVElPTgk9IDQsCiAKKwkvKiBTRXJyb3IgYml0cyAqLworCVNFUlJfREFUQV9SRUNPVkVSRUQJPSAoMSA8PCAwKSwgLyogcmVjb3ZlcmVkIGRhdGEgZXJyb3IgKi8KKwlTRVJSX0NPTU1fUkVDT1ZFUkVECT0gKDEgPDwgMSksIC8qIHJlY292ZXJlZCBjb21tIGZhaWx1cmUgKi8KKwlTRVJSX0RBVEEJCT0gKDEgPDwgOCksIC8qIHVucmVjb3ZlcmVkIGRhdGEgZXJyb3IgKi8KKwlTRVJSX1BFUlNJU1RFTlQJCT0gKDEgPDwgOSksIC8qIHBlcnNpc3RlbnQgZGF0YS9jb21tIGVycm9yICovCisJU0VSUl9QUk9UT0NPTAkJPSAoMSA8PCAxMCksIC8qIHByb3RvY29sIHZpb2xhdGlvbiAqLworCVNFUlJfSU5URVJOQUwJCT0gKDEgPDwgMTEpLCAvKiBob3N0IGludGVybmFsIGVycm9yICovCisJU0VSUl9QSFlSRFlfQ0hHCQk9ICgxIDw8IDE2KSwgLyogUEhZIFJEWSBjaGFuZ2VkICovCisJU0VSUl9ERVZfWENIRwkJPSAoMSA8PCAyNiksIC8qIGRldmljZSBleGNoYW5nZWQgKi8KKwogCS8qIHN0cnVjdCBhdGFfdGFza2ZpbGUgZmxhZ3MgKi8KIAlBVEFfVEZMQUdfTEJBNDgJCT0gKDEgPDwgMCksIC8qIGVuYWJsZSA0OC1iaXQgTEJBIGFuZCAiSE9CIiAqLwogCUFUQV9URkxBR19JU0FERFIJPSAoMSA8PCAxKSwgLyogZW5hYmxlIHIvdyB0byBuc2VjdC9sYmEgcmVncyAqLwpAQCAtMTk5LDYgKzIyMSw3IEBACiAJQVRBX1RGTEFHX1dSSVRFCQk9ICgxIDw8IDMpLCAvKiBkYXRhIGRpcjogaG9zdC0+ZGV2PT0xICh3cml0ZSkgKi8KIAlBVEFfVEZMQUdfTEJBCQk9ICgxIDw8IDQpLCAvKiBlbmFibGUgTEJBICovCiAJQVRBX1RGTEFHX0ZVQQkJPSAoMSA8PCA1KSwgLyogZW5hYmxlIEZVQSAqLworCUFUQV9URkxBR19QT0xMSU5HCT0gKDEgPDwgNiksIC8qIHNldCBuSUVOIHRvIDEgYW5kIHVzZSBwb2xsaW5nICovCiB9OwogCiBlbnVtIGF0YV90Zl9wcm90b2NvbHMgewpAQCAtMjA3LDYgKzIzMCw3IEBACiAJQVRBX1BST1RfTk9EQVRBLAkvKiBubyBkYXRhICovCiAJQVRBX1BST1RfUElPLAkJLyogUElPIHNpbmdsZSBzZWN0b3IgKi8KIAlBVEFfUFJPVF9ETUEsCQkvKiBETUEgKi8KKwlBVEFfUFJPVF9OQ1EsCQkvKiBOQ1EgKi8KIAlBVEFfUFJPVF9BVEFQSSwJCS8qIHBhY2tldCBjb21tYW5kLCBQSU8gZGF0YSB4ZmVyKi8KIAlBVEFfUFJPVF9BVEFQSV9OT0RBVEEsCS8qIHBhY2tldCBjb21tYW5kLCBubyBkYXRhICovCiAJQVRBX1BST1RfQVRBUElfRE1BLAkvKiBwYWNrZXQgY29tbWFuZCB3aXRoIHNwZWNpYWwgRE1BIHNhdWNlICovCkBAIC0yNjIsNiArMjg2LDggQEAKICNkZWZpbmUgYXRhX2lkX2hhc19wbShpZCkJKChpZClbODJdICYgKDEgPDwgMykpCiAjZGVmaW5lIGF0YV9pZF9oYXNfbGJhKGlkKQkoKGlkKVs0OV0gJiAoMSA8PCA5KSkKICNkZWZpbmUgYXRhX2lkX2hhc19kbWEoaWQpCSgoaWQpWzQ5XSAmICgxIDw8IDgpKQorI2RlZmluZSBhdGFfaWRfaGFzX25jcShpZCkJKChpZClbNzZdICYgKDEgPDwgOCkpCisjZGVmaW5lIGF0YV9pZF9xdWV1ZV9kZXB0aChpZCkJKCgoaWQpWzc1XSAmIDB4MWYpICsgMSkKICNkZWZpbmUgYXRhX2lkX3JlbW92ZWFibGUoaWQpCSgoaWQpWzBdICYgKDEgPDwgNykpCiAjZGVmaW5lIGF0YV9pZF9oYXNfZHdvcmRfaW8oaWQpCSgoaWQpWzUwXSAmICgxIDw8IDApKQogI2RlZmluZSBhdGFfaWRfdTMyKGlkLG4pCVwKQEAgLTI3Miw2ICsyOTgsOCBAQAogCSAgKCh1NjQpIChpZClbKG4pICsgMV0gPDwgMTYpIHwJXAogCSAgKCh1NjQpIChpZClbKG4pICsgMF0pICkKIAorI2RlZmluZSBhdGFfaWRfY2RiX2ludHIoaWQpCSgoKGlkKVswXSAmIDB4NjApID09IDB4MjApCisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9pZF9tYWpvcl92ZXJzaW9uKGNvbnN0IHUxNiAqaWQpCiB7CiAJdW5zaWduZWQgaW50IG12ZXI7CkBAIC0zMTEsNiArMzM5LDE1IEBACiAJICAgICAgICh0Zi0+cHJvdG9jb2wgPT0gQVRBX1BST1RfQVRBUElfRE1BKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgaXNfbXVsdGlfdGFza2ZpbGUoc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpCit7CisJcmV0dXJuICh0Zi0+Y29tbWFuZCA9PSBBVEFfQ01EX1JFQURfTVVMVEkpIHx8CisJICAgICAgICh0Zi0+Y29tbWFuZCA9PSBBVEFfQ01EX1dSSVRFX01VTFRJKSB8fAorCSAgICAgICAodGYtPmNvbW1hbmQgPT0gQVRBX0NNRF9SRUFEX01VTFRJX0VYVCkgfHwKKwkgICAgICAgKHRmLT5jb21tYW5kID09IEFUQV9DTURfV1JJVEVfTVVMVElfRVhUKSB8fAorCSAgICAgICAodGYtPmNvbW1hbmQgPT0gQVRBX0NNRF9XUklURV9NVUxUSV9GVUFfRVhUKTsKK30KKwogc3RhdGljIGlubGluZSBpbnQgYXRhX29rKHU4IHN0YXR1cykKIHsKIAlyZXR1cm4gKChzdGF0dXMgJiAoQVRBX0JVU1kgfCBBVEFfRFJEWSB8IEFUQV9ERiB8IEFUQV9EUlEgfCBBVEFfRVJSKSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCmluZGV4IDVkMzI3MzEuLmFhZmU4MjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApAQCAtMTUxLDExICsxNTEsOSBAQAogCXZvaWQgKmVsZXZhdG9yX3ByaXZhdGU7CiAJdm9pZCAqY29tcGxldGlvbl9kYXRhOwogCi0JdW5zaWduZWQgc2hvcnQgaW9wcmlvOwotCiAJaW50IHJxX3N0YXR1czsJLyogc2hvdWxkIHNwbGl0IHRoaXMgaW50byBhIGZldyBzdGF0dXMgYml0cyAqLwotCXN0cnVjdCBnZW5kaXNrICpycV9kaXNrOwogCWludCBlcnJvcnM7CisJc3RydWN0IGdlbmRpc2sgKnJxX2Rpc2s7CiAJdW5zaWduZWQgbG9uZyBzdGFydF90aW1lOwogCiAJLyogTnVtYmVyIG9mIHNjYXR0ZXItZ2F0aGVyIERNQSBhZGRyK2xlbiBwYWlycyBhZnRlcgpAQCAtMTcwLDggKzE2OCw5IEBACiAJICovCiAJdW5zaWduZWQgc2hvcnQgbnJfaHdfc2VnbWVudHM7CiAKKwl1bnNpZ25lZCBzaG9ydCBpb3ByaW87CisKIAlpbnQgdGFnOwotCWNoYXIgKmJ1ZmZlcjsKIAogCWludCByZWZfY291bnQ7CiAJcmVxdWVzdF9xdWV1ZV90ICpxOwpAQCAtMTc5LDYgKzE3OCw3IEBACiAKIAlzdHJ1Y3QgY29tcGxldGlvbiAqd2FpdGluZzsKIAl2b2lkICpzcGVjaWFsOworCWNoYXIgKmJ1ZmZlcjsKIAogCS8qCiAJICogd2hlbiByZXF1ZXN0IGlzIHVzZWQgYXMgYSBwYWNrZXQgY29tbWFuZCBjYXJyaWVyCkBAIC0xODcsMjAgKzE4NywxNCBAQAogCXVuc2lnbmVkIGNoYXIgY21kW0JMS19NQVhfQ0RCXTsKIAogCXVuc2lnbmVkIGludCBkYXRhX2xlbjsKLQl2b2lkICpkYXRhOwotCiAJdW5zaWduZWQgaW50IHNlbnNlX2xlbjsKKwl2b2lkICpkYXRhOwogCXZvaWQgKnNlbnNlOwogCiAJdW5zaWduZWQgaW50IHRpbWVvdXQ7CiAJaW50IHJldHJpZXM7CiAKIAkvKgotCSAqIEZvciBQb3dlciBNYW5hZ2VtZW50IHJlcXVlc3RzCi0JICovCi0Jc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtOwotCi0JLyoKIAkgKiBjb21wbGV0aW9uIGNhbGxiYWNrLiBlbmRfaW9fZGF0YSBzaG91bGQgYmUgZm9sZGVkIGluIHdpdGggd2FpdGluZwogCSAqLwogCXJxX2VuZF9pb19mbiAqZW5kX2lvOwpAQCAtMjQxLDYgKzIzNSw3IEBACiAJX19SRVFfUE1fUkVTVU1FLAkvKiByZXN1bWUgcmVxdWVzdCAqLwogCV9fUkVRX1BNX1NIVVRET1dOLAkvKiBzaHV0ZG93biByZXF1ZXN0ICovCiAJX19SRVFfT1JERVJFRF9DT0xPUiwJLyogaXMgYmVmb3JlIG9yIGFmdGVyIGJhcnJpZXIgKi8KKwlfX1JFUV9SV19TWU5DLAkJLyogcmVxdWVzdCBpcyBzeW5jIChPX0RJUkVDVCkgKi8KIAlfX1JFUV9OUl9CSVRTLAkJLyogc3RvcHMgaGVyZSAqLwogfTsKIApAQCAtMjcwLDYgKzI2NSw3IEBACiAjZGVmaW5lIFJFUV9QTV9SRVNVTUUJKDEgPDwgX19SRVFfUE1fUkVTVU1FKQogI2RlZmluZSBSRVFfUE1fU0hVVERPV04JKDEgPDwgX19SRVFfUE1fU0hVVERPV04pCiAjZGVmaW5lIFJFUV9PUkRFUkVEX0NPTE9SCSgxIDw8IF9fUkVRX09SREVSRURfQ09MT1IpCisjZGVmaW5lIFJFUV9SV19TWU5DCSgxIDw8IF9fUkVRX1JXX1NZTkMpCiAKIC8qCiAgKiBTdGF0ZSBpbmZvcm1hdGlvbiBjYXJyaWVkIGZvciBSRVFfUE1fU1VTUEVORCBhbmQgUkVRX1BNX1JFU1VNRQpAQCAtNDM4LDkgKzQzNCw2IEBACiAKICNkZWZpbmUgUlFfSU5BQ1RJVkUJCSgtMSkKICNkZWZpbmUgUlFfQUNUSVZFCQkxCi0jZGVmaW5lIFJRX1NDU0lfQlVTWQkJMHhmZmZmCi0jZGVmaW5lIFJRX1NDU0lfRE9ORQkJMHhmZmZlCi0jZGVmaW5lIFJRX1NDU0lfRElTQ09OTkVDVElORwkweGZmZTAKIAogI2RlZmluZSBRVUVVRV9GTEFHX0NMVVNURVIJMAkvKiBjbHVzdGVyIHNldmVyYWwgc2VnbWVudHMgaW50byAxICovCiAjZGVmaW5lIFFVRVVFX0ZMQUdfUVVFVUVECTEJLyogdXNlcyBnZW5lcmljIHRhZyBxdWV1ZWluZyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGt0cmFjZV9hcGkuaCBiL2luY2x1ZGUvbGludXgvYmxrdHJhY2VfYXBpLmgKaW5kZXggZWIxYTg2Ny4uYTdlOGNlZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibGt0cmFjZV9hcGkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa3RyYWNlX2FwaS5oCkBAIC05MCw5ICs5MCw5IEBACiAgKiBUaGUgcmVtYXAgZXZlbnQKICAqLwogc3RydWN0IGJsa19pb190cmFjZV9yZW1hcCB7Ci0JdTMyIGRldmljZTsKKwlfX2JlMzIgZGV2aWNlOwogCXUzMiBfX3BhZDsKLQl1NjQgc2VjdG9yOworCV9fYmU2NCBzZWN0b3I7CiB9OwogCiBlbnVtIHsKQEAgLTIyNCw3ICsyMjQsNyBAQAogCQkJCQkgc3RydWN0IGJpbyAqYmlvLCB1bnNpZ25lZCBpbnQgcGR1KQogewogCXN0cnVjdCBibGtfdHJhY2UgKmJ0ID0gcS0+YmxrX3RyYWNlOwotCXU2NCBycGR1ID0gY3B1X3RvX2JlNjQocGR1KTsKKwlfX2JlNjQgcnBkdSA9IGNwdV90b19iZTY0KHBkdSk7CiAKIAlpZiAobGlrZWx5KCFidCkpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYm9vdG1lbS5oIGIvaW5jbHVkZS9saW51eC9ib290bWVtLmgKaW5kZXggZGEyZDEwNy4uMjI4NjZmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ib290bWVtLmgKKysrIGIvaW5jbHVkZS9saW51eC9ib290bWVtLmgKQEAgLTkxLDggKzkxLDggQEAKIH0KICNlbmRpZgogCi1leHRlcm4gdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIG5yX2tlcm5lbF9wYWdlczsKLWV4dGVybiB1bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgbnJfYWxsX3BhZ2VzOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnJfa2VybmVsX3BhZ2VzOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnJfYWxsX3BhZ2VzOwogCiBleHRlcm4gdm9pZCAqX19pbml0IGFsbG9jX2xhcmdlX3N5c3RlbV9oYXNoKGNvbnN0IGNoYXIgKnRhYmxlbmFtZSwKIAkJCQkJICAgIHVuc2lnbmVkIGxvbmcgYnVja2V0c2l6ZSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY25fcHJvYy5oIGIvaW5jbHVkZS9saW51eC9jbl9wcm9jLmgKaW5kZXggMTQxN2RlOS4uZGJiNzc2OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jbl9wcm9jLmgKKysrIGIvaW5jbHVkZS9saW51eC9jbl9wcm9jLmgKQEAgLTMsMzEgKzMsMjIgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIE1hdHQgSGVsc2xleSwgSUJNIENvcnAuIDIwMDUKICAqIEJhc2VkIG9uIGNuX2ZvcmsuaCBieSBOZ3V5ZW4gQW5oIFF1eW5oIGFuZCBHdWlsbGF1bWUgVGhvdXZlbmluCi0gKiBPcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGZvbGxvd3M6CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTmd1eWVuIEFuaCBRdXluaCA8YXF1eW5oQGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwNSBHdWlsbGF1bWUgVGhvdXZlbmluIDxndWlsbGF1bWUudGhvdXZlbmluQGJ1bGwubmV0PgogICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMi4xIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUgdXNlZnVsLCBidXQKKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KICAqLwogCiAjaWZuZGVmIENOX1BST0NfSAogI2RlZmluZSBDTl9QUk9DX0gKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgvdGltZS5oPgotI2luY2x1ZGUgPGxpbnV4L2Nvbm5lY3Rvci5oPgogCiAvKgogICogVXNlcnNwYWNlIHNlbmRzIHRoaXMgZW51bSB0byByZWdpc3RlciB3aXRoIHRoZSBrZXJuZWwgdGhhdCBpdCBpcyBsaXN0ZW5pbmcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29kYV9saW51eC5oIGIvaW5jbHVkZS9saW51eC9jb2RhX2xpbnV4LmgKaW5kZXggYjNlY2Y4Zi4uN2I1YzVkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jb2RhX2xpbnV4LmgKKysrIGIvaW5jbHVkZS9saW51eC9jb2RhX2xpbnV4LmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogLyogb3BlcmF0aW9ucyBzaGFyZWQgb3ZlciBtb3JlIHRoYW4gb25lIGZpbGUgKi8KIGludCBjb2RhX29wZW4oc3RydWN0IGlub2RlICppLCBzdHJ1Y3QgZmlsZSAqZik7Ci1pbnQgY29kYV9mbHVzaChzdHJ1Y3QgZmlsZSAqZik7CitpbnQgY29kYV9mbHVzaChzdHJ1Y3QgZmlsZSAqZiwgZmxfb3duZXJfdCBpZCk7CiBpbnQgY29kYV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaSwgc3RydWN0IGZpbGUgKmYpOwogaW50IGNvZGFfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaywgc3RydWN0IG5hbWVpZGF0YSAqbmQpOwogaW50IGNvZGFfcmV2YWxpZGF0ZV9pbm9kZShzdHJ1Y3QgZGVudHJ5ICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb2RhX3BzZGV2LmggYi9pbmNsdWRlL2xpbnV4L2NvZGFfcHNkZXYuaAppbmRleCBkNTM5MjYyLi45OGY2YzUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvZGFfcHNkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NvZGFfcHNkZXYuaApAQCAtNzAsNyArNzAsNyBAQAogCQkgdW5zaWduZWQgaW50IGNtZCwgc3RydWN0IFBpb2N0bERhdGEgKmRhdGEpOwogaW50IGNvZGFfZG93bmNhbGwoaW50IG9wY29kZSwgdW5pb24gb3V0cHV0QXJncyAqb3V0LCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKIGludCB2ZW51c19mc3luYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgQ29kYUZpZCAqZmlkKTsKLWludCB2ZW51c19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtzdGF0ZnMgKnNmcyk7CitpbnQgdmVudXNfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ZnMgKnNmcyk7CiAKIAogLyogbWVzc2FnZXMgYmV0d2VlbiBjb2RhIGZpbGVzeXN0ZW0gaW4ga2VybmVsIGFuZCBWZW51cyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb25uZWN0b3IuaCBiL2luY2x1ZGUvbGludXgvY29ubmVjdG9yLmgKaW5kZXggYWQxYTIyYy4uNGMwMjExOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jb25uZWN0b3IuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nvbm5lY3Rvci5oCkBAIC0zNCw4ICszNCwxMSBAQAogI2RlZmluZSBDTl9WQUxfUFJPQwkJCTB4MQogI2RlZmluZSBDTl9JRFhfQ0lGUwkJCTB4MgogI2RlZmluZSBDTl9WQUxfQ0lGUyAgICAgICAgICAgICAgICAgICAgIDB4MQorI2RlZmluZSBDTl9XMV9JRFgJCQkweDMJLyogdzEgY29tbXVuaWNhdGlvbiAqLworI2RlZmluZSBDTl9XMV9WQUwJCQkweDEKIAotI2RlZmluZSBDTl9ORVRMSU5LX1VTRVJTCQkxCisKKyNkZWZpbmUgQ05fTkVUTElOS19VU0VSUwkJNAogCiAvKgogICogTWF4aW11bSBjb25uZWN0b3IncyBtZXNzYWdlIHNpemUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NwdWZyZXEuaCBiL2luY2x1ZGUvbGludXgvY3B1ZnJlcS5oCmluZGV4IDVhYTk1MDEuLjQ2NmZiZTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3B1ZnJlcS5oCisrKyBiL2luY2x1ZGUvbGludXgvY3B1ZnJlcS5oCkBAIC03Miw2ICs3Miw4IEBACiAKIHN0cnVjdCBjcHVmcmVxX3BvbGljeSB7CiAJY3B1bWFza190CQljcHVzOwkvKiBhZmZlY3RlZCBDUFVzICovCisJdW5zaWduZWQgaW50CQlzaGFyZWRfdHlwZTsgLyogQU5ZIG9yIEFMTCBhZmZlY3RlZCBDUFVzCisJCQkJCQlzaG91bGQgc2V0IGNwdWZyZXEgKi8KIAl1bnNpZ25lZCBpbnQJCWNwdTsgICAgLyogY3B1IG5yIG9mIHJlZ2lzdGVyZWQgQ1BVICovCiAJc3RydWN0IGNwdWZyZXFfY3B1aW5mbwljcHVpbmZvOy8qIHNlZSBhYm92ZSAqLwogCkBAIC05OCw2ICsxMDAsOCBAQAogI2RlZmluZSBDUFVGUkVRX0lOQ09NUEFUSUJMRQkoMSkKICNkZWZpbmUgQ1BVRlJFUV9OT1RJRlkJCSgyKQogCisjZGVmaW5lIENQVUZSRVFfU0hBUkVEX1RZUEVfQUxMCSgwKSAvKiBBbGwgZGVwZW5kZW50IENQVXMgc2hvdWxkIHNldCBmcmVxICovCisjZGVmaW5lIENQVUZSRVFfU0hBUkVEX1RZUEVfQU5ZCSgxKSAvKiBGcmVxIGNhbiBiZSBzZXQgZnJvbSBhbnkgZGVwZW5kZW50IENQVSAqLwogCiAvKioqKioqKioqKioqKioqKioqKiogY3B1ZnJlcSB0cmFuc2l0aW9uIG5vdGlmaWVycyAqKioqKioqKioqKioqKioqKioqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIGIvaW5jbHVkZS9saW51eC9kY2FjaGUuaAppbmRleCA4MzYzMjVlLi4wZGQxNjEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oCisrKyBiL2luY2x1ZGUvbGludXgvZGNhY2hlLmgKQEAgLTIxNyw3ICsyMTcsNiBAQAogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX3NwbGljZV9hbGlhcyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIGV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwogZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9wYXJlbnQoc3RydWN0IGRlbnRyeSAqKTsKLWV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfYW5vbihzdHJ1Y3QgaGxpc3RfaGVhZCAqKTsKIGV4dGVybiBpbnQgZF9pbnZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKik7CiAKIC8qIG9ubHkgdXNlZCBhdCBtb3VudC10aW1lICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RlbGF5LmggYi9pbmNsdWRlL2xpbnV4L2RlbGF5LmgKaW5kZXggYWNiNzQ4Ni4uMTdkZGI1NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kZWxheS5oCisrKyBiL2luY2x1ZGUvbGludXgvZGVsYXkuaApAQCAtMjUsMTAgKzI1LDcgQEAKICNkZWZpbmUgTUFYX1VERUxBWV9NUwk1CiAjZW5kaWYKIAotI2lmZGVmIG5vdGRlZgotI2RlZmluZSBtZGVsYXkobikgKFwKLQl7dW5zaWduZWQgbG9uZyBfX21zPShuKTsgd2hpbGUgKF9fbXMtLSkgdWRlbGF5KDEwMDApO30pCi0jZWxzZQorI2lmbmRlZiBtZGVsYXkKICNkZWZpbmUgbWRlbGF5KG4pIChcCiAJKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pICYmIChuKTw9TUFYX1VERUxBWV9NUykgPyB1ZGVsYXkoKG4pKjEwMDApIDogXAogCSh7dW5zaWduZWQgbG9uZyBfX21zPShuKTsgd2hpbGUgKF9fbXMtLSkgdWRlbGF5KDEwMDApO30pKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgKaW5kZXggYjJlNWRhMi4uMWU1ZjMwZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oCkBAIC02MCwxMSArNjAsNiBAQAogCiBleHRlcm4gdm9pZCBidXNfcmVzY2FuX2RldmljZXMoc3RydWN0IGJ1c190eXBlICogYnVzKTsKIAotZXh0ZXJuIHN0cnVjdCBidXNfdHlwZSAqIGdldF9idXMoc3RydWN0IGJ1c190eXBlICogYnVzKTsKLWV4dGVybiB2b2lkIHB1dF9idXMoc3RydWN0IGJ1c190eXBlICogYnVzKTsKLQotZXh0ZXJuIHN0cnVjdCBidXNfdHlwZSAqIGZpbmRfYnVzKGNoYXIgKiBuYW1lKTsKLQogLyogaXRlcmF0b3IgaGVscGVycyBmb3IgYnVzZXMgKi8KIAogaW50IGJ1c19mb3JfZWFjaF9kZXYoc3RydWN0IGJ1c190eXBlICogYnVzLCBzdHJ1Y3QgZGV2aWNlICogc3RhcnQsIHZvaWQgKiBkYXRhLApAQCAtMTQ3LDYgKzE0Miw3IEBACiAKIAlzdHJ1Y3Qgc3Vic3lzdGVtCXN1YnN5czsKIAlzdHJ1Y3QgbGlzdF9oZWFkCWNoaWxkcmVuOworCXN0cnVjdCBsaXN0X2hlYWQJZGV2aWNlczsKIAlzdHJ1Y3QgbGlzdF9oZWFkCWludGVyZmFjZXM7CiAJc3RydWN0IHNlbWFwaG9yZQlzZW07CS8qIGxvY2tzIGJvdGggdGhlIGNoaWxkcmVuIGFuZCBpbnRlcmZhY2VzIGxpc3RzICovCiAKQEAgLTE2Myw5ICsxNTksNiBAQAogZXh0ZXJuIGludCBjbGFzc19yZWdpc3RlcihzdHJ1Y3QgY2xhc3MgKik7CiBleHRlcm4gdm9pZCBjbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBjbGFzcyAqKTsKIAotZXh0ZXJuIHN0cnVjdCBjbGFzcyAqIGNsYXNzX2dldChzdHJ1Y3QgY2xhc3MgKik7Ci1leHRlcm4gdm9pZCBjbGFzc19wdXQoc3RydWN0IGNsYXNzICopOwotCiAKIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgewogCXN0cnVjdCBhdHRyaWJ1dGUJYXR0cjsKQEAgLTMxMyw2ICszMDYsNyBAQAogCXN0cnVjdCBrb2JqZWN0IGtvYmo7CiAJY2hhcglidXNfaWRbQlVTX0lEX1NJWkVdOwkvKiBwb3NpdGlvbiBvbiBwYXJlbnQgYnVzICovCiAJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgdWV2ZW50X2F0dHI7CisJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldnRfYXR0cjsKIAogCXN0cnVjdCBzZW1hcGhvcmUJc2VtOwkvKiBzZW1hcGhvcmUgdG8gc3luY2hyb25pemUgY2FsbHMgdG8KIAkJCQkJICogaXRzIGRyaXZlci4KQEAgLTM0MCw2ICszMzQsMTEgQEAKIAlzdHJ1Y3QgZG1hX2NvaGVyZW50X21lbQkqZG1hX21lbTsgLyogaW50ZXJuYWwgZm9yIGNvaGVyZW50IG1lbQogCQkJCQkgICAgIG92ZXJyaWRlICovCiAKKwkvKiBjbGFzc19kZXZpY2UgbWlncmF0aW9uIHBhdGggKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCW5vZGU7CisJc3RydWN0IGNsYXNzCQkqY2xhc3M7CQkvKiBvcHRpb25hbCovCisJZGV2X3QJCQlkZXZ0OwkJLyogZGV2X3QsIGNyZWF0ZXMgdGhlIHN5c2ZzICJkZXYiICovCisKIAl2b2lkCSgqcmVsZWFzZSkoc3RydWN0IGRldmljZSAqIGRldik7CiB9OwogCkBAIC0zODEsNiArMzgwLDEzIEBACiBleHRlcm4gdm9pZCBkcml2ZXJfYXR0YWNoKHN0cnVjdCBkZXZpY2VfZHJpdmVyICogZHJ2KTsKIGV4dGVybiB2b2lkIGRldmljZV9yZXByb2JlKHN0cnVjdCBkZXZpY2UgKmRldik7CiAKKy8qCisgKiBFYXN5IGZ1bmN0aW9ucyBmb3IgZHluYW1pY2FsbHkgY3JlYXRpbmcgZGV2aWNlcyBvbiB0aGUgZmx5CisgKi8KK2V4dGVybiBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfY3JlYXRlKHN0cnVjdCBjbGFzcyAqY2xzLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCisJCQkJICAgIGRldl90IGRldnQsIGNoYXIgKmZtdCwgLi4uKQorCQkJCSAgICBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLDQsNSkpKTsKK2V4dGVybiB2b2lkIGRldmljZV9kZXN0cm95KHN0cnVjdCBjbGFzcyAqY2xzLCBkZXZfdCBkZXZ0KTsKIAogLyoKICAqIFBsYXRmb3JtICJmaXh1cCIgZnVuY3Rpb25zIC0gYWxsb3cgdGhlIHBsYXRmb3JtIHRvIGhhdmUgdGhlaXIgc2F5CkBAIC00MTAsOCArNDE2LDkgQEAKIGV4dGVybiB2b2lkIGZpcm13YXJlX3VucmVnaXN0ZXIoc3RydWN0IHN1YnN5c3RlbSAqKTsKIAogLyogZGVidWdnaW5nIGFuZCB0cm91Ymxlc2hvb3RpbmcvZGlhZ25vc3RpYyBoZWxwZXJzLiAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKmRldl9kcml2ZXJfc3RyaW5nKHN0cnVjdCBkZXZpY2UgKmRldik7CiAjZGVmaW5lIGRldl9wcmludGsobGV2ZWwsIGRldiwgZm9ybWF0LCBhcmcuLi4pCVwKLQlwcmludGsobGV2ZWwgIiVzICVzOiAiIGZvcm1hdCAsIChkZXYpLT5kcml2ZXIgPyAoZGV2KS0+ZHJpdmVyLT5uYW1lIDogIiIgLCAoZGV2KS0+YnVzX2lkICwgIyMgYXJnKQorCXByaW50ayhsZXZlbCAiJXMgJXM6ICIgZm9ybWF0ICwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSAsIChkZXYpLT5idXNfaWQgLCAjIyBhcmcpCiAKICNpZmRlZiBERUJVRwogI2RlZmluZSBkZXZfZGJnKGRldiwgZm9ybWF0LCBhcmcuLi4pCQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2VmaS5oIGIvaW5jbHVkZS9saW51eC9lZmkuaAppbmRleCBlMjAzNjEzLi42NmQ2MjFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2VmaS5oCisrKyBiL2luY2x1ZGUvbGludXgvZWZpLmgKQEAgLTI5NCw2ICsyOTQsNyBAQAogZXh0ZXJuIHU2NCBlZmlfZ2V0X2lvYmFzZSAodm9pZCk7CiBleHRlcm4gdTMyIGVmaV9tZW1fdHlwZSAodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIpOwogZXh0ZXJuIHU2NCBlZmlfbWVtX2F0dHJpYnV0ZXMgKHVuc2lnbmVkIGxvbmcgcGh5c19hZGRyKTsKK2V4dGVybiB1NjQgZWZpX21lbV9hdHRyaWJ1dGUgKHVuc2lnbmVkIGxvbmcgcGh5c19hZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpOwogZXh0ZXJuIGludCBlZmlfbWVtX2F0dHJpYnV0ZV9yYW5nZSAodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKIAkJCQkgICAgdTY0IGF0dHIpOwogZXh0ZXJuIGludCBfX2luaXQgZWZpX3VhcnRfY29uc29sZV9vbmx5ICh2b2lkKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKaW5kZXggY2YyYWJlYy4uYzYzMTBhZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKQEAgLTQxMSw2ICs0MTEsOCBAQAogI2RlZmluZSBFVEhUT09MX0dQRVJNQUREUgkweDAwMDAwMDIwIC8qIEdldCBwZXJtYW5lbnQgaGFyZHdhcmUgYWRkcmVzcyAqLwogI2RlZmluZSBFVEhUT09MX0dVRk8JCTB4MDAwMDAwMjEgLyogR2V0IFVGTyBlbmFibGUgKGV0aHRvb2xfdmFsdWUpICovCiAjZGVmaW5lIEVUSFRPT0xfU1VGTwkJMHgwMDAwMDAyMiAvKiBTZXQgVUZPIGVuYWJsZSAoZXRodG9vbF92YWx1ZSkgKi8KKyNkZWZpbmUgRVRIVE9PTF9HR1NPCQkweDAwMDAwMDIzIC8qIEdldCBHU08gZW5hYmxlIChldGh0b29sX3ZhbHVlKSAqLworI2RlZmluZSBFVEhUT09MX1NHU08JCTB4MDAwMDAwMjQgLyogU2V0IEdTTyBlbmFibGUgKGV0aHRvb2xfdmFsdWUpICovCiAKIC8qIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBjb2RlICovCiAjZGVmaW5lIFNQQVJDX0VUSF9HU0VUCQlFVEhUT09MX0dTRVQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaAppbmRleCAyZDVhMTEyLi4yZDhiMzQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9mcy5oCkBAIC0zNzYsNyArMzc2LDggQEAKIAlzdHJ1Y3QgcGFnZSogKCpnZXRfeGlwX3BhZ2UpKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHNlY3Rvcl90LAogCQkJaW50KTsKIAkvKiBtaWdyYXRlIHRoZSBjb250ZW50cyBvZiBhIHBhZ2UgdG8gdGhlIHNwZWNpZmllZCB0YXJnZXQgKi8KLQlpbnQgKCptaWdyYXRlcGFnZSkgKHN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOworCWludCAoKm1pZ3JhdGVwYWdlKSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKKwkJCXN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOwogfTsKIAogc3RydWN0IGJhY2tpbmdfZGV2X2luZm87CkBAIC02ODIsNiArNjgzLDcgQEAKICNkZWZpbmUgRkxfRkxPQ0sJMgogI2RlZmluZSBGTF9BQ0NFU1MJOAkvKiBub3QgdHJ5aW5nIHRvIGxvY2ssIGp1c3QgbG9va2luZyAqLwogI2RlZmluZSBGTF9MRUFTRQkzMgkvKiBsZWFzZSBoZWxkIG9uIHRoaXMgZmlsZSAqLworI2RlZmluZSBGTF9DTE9TRQk2NAkvKiB1bmxvY2sgb24gY2xvc2UgKi8KICNkZWZpbmUgRkxfU0xFRVAJMTI4CS8qIEEgYmxvY2tpbmcgbG9jayAqLwogCiAvKgpAQCAtNzc0LDcgKzc3Niw2IEBACiBleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwogZXh0ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGVfd2FpdChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwogZXh0ZXJuIGludCBwb3NpeF91bmJsb2NrX2xvY2soc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKLWV4dGVybiBpbnQgcG9zaXhfbG9ja3NfZGVhZGxvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwogZXh0ZXJuIGludCBmbG9ja19sb2NrX2ZpbGVfd2FpdChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGZpbGVfbG9jayAqZmwpOwogZXh0ZXJuIGludCBfX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBmbGFncyk7CiBleHRlcm4gdm9pZCBsZWFzZV9nZXRfbXRpbWUoc3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYyAqdGltZSk7CkBAIC03ODIsNyArNzgzLDYgQEAKIGV4dGVybiBpbnQgbGVhc2VfbW9kaWZ5KHN0cnVjdCBmaWxlX2xvY2sgKiosIGludCk7CiBleHRlcm4gaW50IGxvY2tfbWF5X3JlYWQoc3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CiBleHRlcm4gaW50IGxvY2tfbWF5X3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwotZXh0ZXJuIHZvaWQgc3RlYWxfbG9ja3MoZmxfb3duZXJfdCBmcm9tKTsKIAogc3RydWN0IGZhc3luY19zdHJ1Y3QgewogCWludAltYWdpYzsKQEAgLTEwMjUsNyArMTAyNSw3IEBACiAJbG9uZyAoKmNvbXBhdF9pb2N0bCkgKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAJaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKIAlpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwotCWludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CisJaW50ICgqZmx1c2gpIChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90IGlkKTsKIAlpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogCWludCAoKmZzeW5jKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQgZGF0YXN5bmMpOwogCWludCAoKmFpb19mc3luYykgKHN0cnVjdCBraW9jYiAqLCBpbnQgZGF0YXN5bmMpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAKIAlpbnQgKCpzeW5jX2ZzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdCk7CiAJdm9pZCAoKndyaXRlX3N1cGVyX2xvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIAl2b2lkICgqdW5sb2NrZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7Ci0JaW50ICgqc3RhdGZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrc3RhdGZzICopOworCWludCAoKnN0YXRmcykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CiAJaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKIAl2b2lkICgqY2xlYXJfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAJdm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpAQCAtMTI3MCwyMyArMTI3MCwyNiBAQAogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IGZzX2ZsYWdzOwotCXN0cnVjdCBzdXBlcl9ibG9jayAqKCpnZXRfc2IpIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBpbnQsCi0JCQkJICAgICAgIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKKwlpbnQgKCpnZXRfc2IpIChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBpbnQsCisJCSAgICAgICBjb25zdCBjaGFyICosIHZvaWQgKiwgc3RydWN0IHZmc21vdW50ICopOwogCXZvaWQgKCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogCXN0cnVjdCBtb2R1bGUgKm93bmVyOwogCXN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKIH07CiAKLXN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3NiX2JkZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCitleHRlcm4gaW50IGdldF9zYl9iZGV2KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAogCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsCi0JaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSk7Ci1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zYl9zaW5nbGUoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CitleHRlcm4gaW50IGdldF9zYl9zaW5nbGUoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiAJaW50IGZsYWdzLCB2b2lkICpkYXRhLAotCWludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICosIGludCkpOwotc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc2Jfbm9kZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CitleHRlcm4gaW50IGdldF9zYl9ub2RldihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKIAlpbnQgZmxhZ3MsIHZvaWQgKmRhdGEsCi0JaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSk7CisJaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSwKKwlzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CiB2b2lkIGdlbmVyaWNfc2h1dGRvd25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CiB2b2lkIGtpbGxfYmxvY2tfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CiB2b2lkIGtpbGxfYW5vbl9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKQEAgLTEyOTcsOCArMTMwMCwxMCBAQAogCQkJaW50ICgqdGVzdCkoc3RydWN0IHN1cGVyX2Jsb2NrICosdm9pZCAqKSwKIAkJCWludCAoKnNldCkoc3RydWN0IHN1cGVyX2Jsb2NrICosdm9pZCAqKSwKIAkJCXZvaWQgKmRhdGEpOwotc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc2JfcHNldWRvKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICosIGNoYXIgKiwKLQkJCXN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpvcHMsIHVuc2lnbmVkIGxvbmcpOworZXh0ZXJuIGludCBnZXRfc2JfcHNldWRvKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICosIGNoYXIgKiwKKwlzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyAqb3BzLCB1bnNpZ25lZCBsb25nLAorCXN0cnVjdCB2ZnNtb3VudCAqbW50KTsKK2V4dGVybiBpbnQgc2ltcGxlX3NldF9tbnQoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogaW50IF9fcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogaW50IF9fcHV0X3N1cGVyX2FuZF9uZWVkX3Jlc3RhcnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CiB2b2lkIHVubmFtZWRfZGV2X2luaXQodm9pZCk7CkBAIC0xMzIxLDcgKzEzMjYsNyBAQAogZXh0ZXJuIHZvaWQgbW50X3NldF9tb3VudHBvaW50KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAJCQkJICBzdHJ1Y3QgdmZzbW91bnQgKik7CiAKLWV4dGVybiBpbnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtzdGF0ZnMgKik7CitleHRlcm4gaW50IHZmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKIAogLyogL3N5cy9mcyAqLwogZXh0ZXJuIHN0cnVjdCBzdWJzeXN0ZW0gZnNfc3Vic3lzOwpAQCAtMTc0Miw3ICsxNzQ3LDcgQEAKIGV4dGVybiBsb2ZmX3QgZGNhY2hlX2Rpcl9sc2VlayhzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiBleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKIGV4dGVybiBpbnQgc2ltcGxlX2dldGF0dHIoc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ICopOwotZXh0ZXJuIGludCBzaW1wbGVfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKK2V4dGVybiBpbnQgc2ltcGxlX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICopOwogZXh0ZXJuIGludCBzaW1wbGVfbGluayhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogZXh0ZXJuIGludCBzaW1wbGVfdW5saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogZXh0ZXJuIGludCBzaW1wbGVfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CkBAIC0xNzY4LDcgKzE3NzMsOCBAQAogZXh0ZXJuIHNzaXplX3Qgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodm9pZCBfX3VzZXIgKiwgc2l6ZV90LCBsb2ZmX3QgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogCiAjaWZkZWYgQ09ORklHX01JR1JBVElPTgotZXh0ZXJuIGludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOworZXh0ZXJuIGludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosCisJCQkJc3RydWN0IHBhZ2UgKiwgc3RydWN0IHBhZ2UgKik7CiAjZWxzZQogI2RlZmluZSBidWZmZXJfbWlncmF0ZV9wYWdlIE5VTEwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZW5hbGxvYy5oIGIvaW5jbHVkZS9saW51eC9nZW5hbGxvYy5oCmluZGV4IDdmZDA1NzYuLjY5MGM0MjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZ2VuYWxsb2MuaAorKysgYi9pbmNsdWRlL2xpbnV4L2dlbmFsbG9jLmgKQEAgLTQsMzcgKzQsMzIgQEAKICAqIFVzZXMgZm9yIHRoaXMgaW5jbHVkZXMgb24tZGV2aWNlIHNwZWNpYWwgbWVtb3J5LCB1bmNhY2hlZCBtZW1vcnkKICAqIGV0Yy4KICAqCi0gKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGJ1ZGR5IGFsbG9jYXRvciBmb3VuZCBpbiB0aGUgc3ltNTNjOHh4XzIKLSAqIGRyaXZlciwgYWRhcHRlZCBmb3IgZ2VuZXJhbCBwdXJwb3NlIHVzZS4KLSAqCiAgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKICAqIFZlcnNpb24gMi4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBtb3JlIGRldGFpbHMuCiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Ci0KLSNkZWZpbmUgQUxMT0NfTUlOX1NISUZUCQk1IC8qIDMyIGJ5dGVzIG1pbmltdW0gKi8KLS8qCi0gKiAgTGluayBiZXR3ZWVuIGZyZWUgbWVtb3J5IGNodW5rcyBvZiBhIGdpdmVuIHNpemUuCi0gKi8KLXN0cnVjdCBnZW5fcG9vbF9saW5rIHsKLQlzdHJ1Y3QgZ2VuX3Bvb2xfbGluayAqbmV4dDsKLX07CiAKIC8qCi0gKiAgTWVtb3J5IHBvb2wgZGVzY3JpcHRvci4KKyAqICBHZW5lcmFsIHB1cnBvc2Ugc3BlY2lhbCBtZW1vcnkgcG9vbCBkZXNjcmlwdG9yLgogICovCiBzdHJ1Y3QgZ2VuX3Bvb2wgewotCXNwaW5sb2NrX3QgbG9jazsKLQl1bnNpZ25lZCBsb25nICgqZ2V0X25ld19jaHVuaykoc3RydWN0IGdlbl9wb29sICopOwotCXN0cnVjdCBnZW5fcG9vbCAqbmV4dDsKLQlzdHJ1Y3QgZ2VuX3Bvb2xfbGluayAqaDsKLQl1bnNpZ25lZCBsb25nIHByaXZhdGU7Ci0JaW50IG1heF9jaHVua19zaGlmdDsKKwlyd2xvY2tfdCBsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgY2h1bmtzOwkvKiBsaXN0IG9mIGNodW5rcyBpbiB0aGlzIHBvb2wgKi8KKwlpbnQgbWluX2FsbG9jX29yZGVyOwkJLyogbWluaW11bSBhbGxvY2F0aW9uIG9yZGVyICovCiB9OwogCi11bnNpZ25lZCBsb25nIGdlbl9wb29sX2FsbG9jKHN0cnVjdCBnZW5fcG9vbCAqcG9vbHAsIGludCBzaXplKTsKLXZvaWQgZ2VuX3Bvb2xfZnJlZShzdHJ1Y3QgZ2VuX3Bvb2wgKm1wLCB1bnNpZ25lZCBsb25nIHB0ciwgaW50IHNpemUpOwotc3RydWN0IGdlbl9wb29sICpnZW5fcG9vbF9jcmVhdGUoaW50IG5yX2NodW5rcywgaW50IG1heF9jaHVua19zaGlmdCwKLQkJCQkgdW5zaWduZWQgbG9uZyAoKmZwKShzdHJ1Y3QgZ2VuX3Bvb2wgKiksCi0JCQkJIHVuc2lnbmVkIGxvbmcgZGF0YSk7CisvKgorICogIEdlbmVyYWwgcHVycG9zZSBzcGVjaWFsIG1lbW9yeSBwb29sIGNodW5rIGRlc2NyaXB0b3IuCisgKi8KK3N0cnVjdCBnZW5fcG9vbF9jaHVuayB7CisJc3BpbmxvY2tfdCBsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgbmV4dF9jaHVuazsJLyogbmV4dCBjaHVuayBpbiBwb29sICovCisJdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyOwkvKiBzdGFydGluZyBhZGRyZXNzIG9mIG1lbW9yeSBjaHVuayAqLworCXVuc2lnbmVkIGxvbmcgZW5kX2FkZHI7CQkvKiBlbmRpbmcgYWRkcmVzcyBvZiBtZW1vcnkgY2h1bmsgKi8KKwl1bnNpZ25lZCBsb25nIGJpdHNbMF07CQkvKiBiaXRtYXAgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGNodW5rICovCit9OworCitleHRlcm4gc3RydWN0IGdlbl9wb29sICpnZW5fcG9vbF9jcmVhdGUoaW50LCBpbnQpOworZXh0ZXJuIGludCBnZW5fcG9vbF9hZGQoc3RydWN0IGdlbl9wb29sICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgaW50KTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGdlbl9wb29sX2FsbG9jKHN0cnVjdCBnZW5fcG9vbCAqLCBzaXplX3QpOworZXh0ZXJuIHZvaWQgZ2VuX3Bvb2xfZnJlZShzdHJ1Y3QgZ2VuX3Bvb2wgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGRsYy5oIGIvaW5jbHVkZS9saW51eC9oZGxjLmgKaW5kZXggZGY2OTVlOWEuLjQ1MTNmOWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaGRsYy5oCisrKyBiL2luY2x1ZGUvbGludXgvaGRsYy5oCkBAIC0xODgsNyArMTg4LDcgQEAKIGludCBoZGxjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKTsKIAogLyogTXVzdCBiZSB1c2VkIGJ5IGhhcmR3YXJlIGRyaXZlciBvbiBtb2R1bGUgc3RhcnR1cC9leGl0ICovCi1pbnQgcmVnaXN0ZXJfaGRsY19kZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisjZGVmaW5lIHJlZ2lzdGVyX2hkbGNfZGV2aWNlKGRldikJcmVnaXN0ZXJfbmV0ZGV2KGRldikKIHZvaWQgdW5yZWdpc3Rlcl9oZGxjX2RldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAogc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2hkbGNkZXYodm9pZCAqcHJpdik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaCBiL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oCmluZGV4IDRjNWU2MTAuLmMyNWEzOGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oCisrKyBiL2luY2x1ZGUvbGludXgvaHVnZXRsYi5oCkBAIC0yMyw2ICsyMyw4IEBACiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfdG90YWxfcGFnZXModm9pZCk7CiBpbnQgaHVnZXRsYl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCQl1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOworaW50IGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGZyb20sIGxvbmcgdG8pOwordm9pZCBodWdldGxiX3VucmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIG9mZnNldCwgbG9uZyBmcmVlZCk7CiAKIGV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9odWdlX3BhZ2VzOwogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgaHVnZXRsYl96ZXJvLCBodWdldGxiX2luZmluaXR5OwpAQCAtMTM5LDggKzE0MSw2IEBACiAKIHN0cnVjdCBodWdldGxiZnNfaW5vZGVfaW5mbyB7CiAJc3RydWN0IHNoYXJlZF9wb2xpY3kgcG9saWN5OwotCS8qIFByb3RlY3RlZCBieSB0aGUgKGdsb2JhbCkgaHVnZXRsYl9sb2NrICovCi0JdW5zaWduZWQgbG9uZyBwcmVyZXNlcnZlZF9ocGFnZXM7CiAJc3RydWN0IGlub2RlIHZmc19pbm9kZTsKIH07CiAKQEAgLTE1NywxMCArMTU3LDYgQEAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGh1Z2V0bGJmc19maWxlX29wZXJhdGlvbnM7CiBleHRlcm4gc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGh1Z2V0bGJfdm1fb3BzOwogc3RydWN0IGZpbGUgKmh1Z2V0bGJfemVyb19zZXR1cChzaXplX3QpOwotaW50IGh1Z2V0bGJfZXh0ZW5kX3Jlc2VydmF0aW9uKHN0cnVjdCBodWdldGxiZnNfaW5vZGVfaW5mbyAqaW5mbywKLQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGF0bGVhc3RfaHBhZ2VzKTsKLXZvaWQgaHVnZXRsYl90cnVuY2F0ZV9yZXNlcnZhdGlvbihzdHJ1Y3QgaHVnZXRsYmZzX2lub2RlX2luZm8gKmluZm8sCi0JCQkJICB1bnNpZ25lZCBsb25nIGF0bW9zdF9ocGFnZXMpOwogaW50IGh1Z2V0bGJfZ2V0X3F1b3RhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKIHZvaWQgaHVnZXRsYl9wdXRfcXVvdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2kyYy1vY29yZXMuaCBiL2luY2x1ZGUvbGludXgvaTJjLW9jb3Jlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDU5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2kyYy1vY29yZXMuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogaTJjLW9jb3Jlcy5oIC0gZGVmaW5pdGlvbnMgZm9yIHRoZSBpMmMtb2NvcmVzIGludGVyZmFjZQorICoKKyAqIFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+CisgKgorICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIHZlcnNpb24gMi4gIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKi8KKworI2lmbmRlZiBfTElOVVhfSTJDX09DT1JFU19ICisjZGVmaW5lIF9MSU5VWF9JMkNfT0NPUkVTX0gKKworc3RydWN0IG9jb3Jlc19pMmNfcGxhdGZvcm1fZGF0YSB7CisJdTMyIHJlZ3N0ZXA7ICAgLyogZGlzdGFuY2UgYmV0d2VlbiByZWdpc3RlcnMgKi8KKwl1MzIgY2xvY2tfa2h6OyAvKiBpbnB1dCBjbG9jayBpbiBrSHogKi8KK307CisKKyNlbmRpZiAvKiBfTElOVVhfSTJDX09DT1JFU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2kyYy5oIGIvaW5jbHVkZS9saW51eC9pMmMuaAppbmRleCAwNTEwNDMwLi41MjZkZGM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2kyYy5oCisrKyBiL2luY2x1ZGUvbGludXgvaTJjLmgKQEAgLTk3LDEzICs5NywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IGNvbW1hbmQsIHUxNiB2YWx1ZSk7CiBleHRlcm4gczMyIGkyY19zbWJ1c193cml0ZV9ibG9ja19kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICogY2xpZW50LAogCQkJCSAgICAgIHU4IGNvbW1hbmQsIHU4IGxlbmd0aCwKLQkJCQkgICAgICB1OCAqdmFsdWVzKTsKKwkJCQkgICAgICBjb25zdCB1OCAqdmFsdWVzKTsKIC8qIFJldHVybnMgdGhlIG51bWJlciBvZiByZWFkIGJ5dGVzICovCiBleHRlcm4gczMyIGkyY19zbWJ1c19yZWFkX2kyY19ibG9ja19kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICogY2xpZW50LAogCQkJCQkgdTggY29tbWFuZCwgdTggKnZhbHVlcyk7CiBleHRlcm4gczMyIGkyY19zbWJ1c193cml0ZV9pMmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqIGNsaWVudCwKIAkJCQkJICB1OCBjb21tYW5kLCB1OCBsZW5ndGgsCi0JCQkJCSAgdTggKnZhbHVlcyk7CisJCQkJCSAgY29uc3QgdTggKnZhbHVlcyk7CiAKIC8qCiAgKiBBIGRyaXZlciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIG9uZSBvciBtb3JlIHBoeXNpY2FsIGRldmljZXMgcHJlc2VudCBvbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCBiL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKaW5kZXggOWUwZmVmZC4uNzA3NDFlMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oCkBAIC03LDMyICs3LDEzIEBACiAjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+CiAjaW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgogI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KKyNpbmNsdWRlIDxsaW51eC9pcnFyZXR1cm4uaD4KICNpbmNsdWRlIDxsaW51eC9oYXJkaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KIAotLyoKLSAqIEZvciAyLjQueCBjb21wYXRpYmlsaXR5LCAyLjQueCBjYW4gdXNlCi0gKgotICoJdHlwZWRlZiB2b2lkIGlycXJldHVybl90OwotICoJI2RlZmluZSBJUlFfTk9ORQotICoJI2RlZmluZSBJUlFfSEFORExFRAotICoJI2RlZmluZSBJUlFfUkVUVkFMKHgpCi0gKgotICogVG8gbWl4IG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGlycSBoYW5kbGVyIHJldHVybnMuCi0gKgotICogSVJRX05PTkUgbWVhbnMgd2UgZGlkbid0IGhhbmRsZSBpdC4KLSAqIElSUV9IQU5ETEVEIG1lYW5zIHRoYXQgd2UgZGlkIGhhdmUgYSB2YWxpZCBpbnRlcnJ1cHQgYW5kIGhhbmRsZWQgaXQuCi0gKiBJUlFfUkVUVkFMKHgpIHNlbGVjdHMgb24gdGhlIHR3byBkZXBlbmRpbmcgb24geCBiZWluZyBub24temVybyAoZm9yIGhhbmRsZWQpCi0gKi8KLXR5cGVkZWYgaW50IGlycXJldHVybl90OwotCi0jZGVmaW5lIElSUV9OT05FCSgwKQotI2RlZmluZSBJUlFfSEFORExFRAkoMSkKLSNkZWZpbmUgSVJRX1JFVFZBTCh4KQkoKHgpICE9IDApCi0KIHN0cnVjdCBpcnFhY3Rpb24gewogCWlycXJldHVybl90ICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvLmggYi9pbmNsdWRlL2xpbnV4L2lvLmgKaW5kZXggODU1MzNlYy4uNDIwZTJmZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pby5oCisrKyBiL2luY2x1ZGUvbGludXgvaW8uaApAQCAtMjEsNSArMjEsNiBAQAogI2luY2x1ZGUgPGFzbS9pby5oPgogCiB2b2lkIF9faW93cml0ZTMyX2NvcHkodm9pZCBfX2lvbWVtICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGNvdW50KTsKK3ZvaWQgX19pb3dyaXRlNjRfY29weSh2b2lkIF9faW9tZW0gKnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgY291bnQpOwogCiAjZW5kaWYgLyogX0xJTlVYX0lPX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW9jNC5oIGIvaW5jbHVkZS9saW51eC9pb2M0LmgKaW5kZXggM2RkMThiNy4uZGU3M2EzMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pb2M0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pb2M0LmgKQEAgLTE0Nyw2ICsxNDcsMTAgQEAKICNkZWZpbmUgSU9DNF9HUENSX0VER0VfNiAweDQwCiAjZGVmaW5lIElPQzRfR1BDUl9FREdFXzcgMHg4MAogCisjZGVmaW5lIElPQzRfVkFSSUFOVF9JTzkJMHgwOTAwCisjZGVmaW5lIElPQzRfVkFSSUFOVF9QQ0lfUlQJMHgwOTAxCisjZGVmaW5lIElPQzRfVkFSSUFOVF9JTzEwCTB4MTAwMAorCiAvKiBPbmUgb2YgdGhlc2UgcGVyIElPQzQgKi8KIHN0cnVjdCBpb2M0X2RyaXZlcl9kYXRhIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGlkZF9saXN0OwpAQCAtMTU2LDYgKzE2MCw3IEBACiAJc3RydWN0IF9faW9tZW0gaW9jNF9taXNjX3JlZ3MgKmlkZF9taXNjX3JlZ3M7CiAJdW5zaWduZWQgbG9uZyBjb3VudF9wZXJpb2Q7CiAJdm9pZCAqaWRkX3NlcmlhbF9kYXRhOworCXVuc2lnbmVkIGludCBpZGRfdmFyaWFudDsKIH07CiAKIC8qIE9uZSBwZXIgc3VibW9kdWxlICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lycS5oIGIvaW5jbHVkZS9saW51eC9pcnEuaAppbmRleCA0MmM5Y2Q1Li42NzZlMDBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lycS5oCisrKyBiL2luY2x1ZGUvbGludXgvaXJxLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDxsaW51eC9jYWNoZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvY3B1bWFzay5oPgorI2luY2x1ZGUgPGxpbnV4L2lycXJldHVybi5oPgogCiAjaW5jbHVkZSA8YXNtL2lycS5oPgogI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KQEAgLTE2NCwxMCArMTY1LDE4IEBACiAKICNlbmRpZiAvLyBDT05GSUdfU01QCiAKKyNpZmRlZiBDT05GSUdfSVJRQkFMQU5DRQorZXh0ZXJuIHZvaWQgc2V0X2JhbGFuY2VfaXJxX2FmZmluaXR5KHVuc2lnbmVkIGludCBpcnEsIGNwdW1hc2tfdCBtYXNrKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2JhbGFuY2VfaXJxX2FmZmluaXR5KHVuc2lnbmVkIGludCBpcnEsIGNwdW1hc2tfdCBtYXNrKQoreworfQorI2VuZGlmCisKIGV4dGVybiBpbnQgbm9faXJxX2FmZmluaXR5OwogZXh0ZXJuIGludCBub2lycWRlYnVnX3NldHVwKGNoYXIgKnN0cik7CiAKLWV4dGVybiBmYXN0Y2FsbCBpbnQgaGFuZGxlX0lSUV9ldmVudCh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKK2V4dGVybiBmYXN0Y2FsbCBpcnFyZXR1cm5fdCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCQkJCQlzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb24pOwogZXh0ZXJuIGZhc3RjYWxsIHVuc2lnbmVkIGludCBfX2RvX0lSUSh1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiBleHRlcm4gdm9pZCBub3RlX2ludGVycnVwdCh1bnNpZ25lZCBpbnQgaXJxLCBpcnFfZGVzY190ICpkZXNjLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcnFyZXR1cm4uaCBiL2luY2x1ZGUvbGludXgvaXJxcmV0dXJuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgxODgzYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvaXJxcmV0dXJuLmgKQEAgLTAsMCArMSwyNSBAQAorLyogaXJxcmV0dXJuLmggKi8KKyNpZm5kZWYgX0xJTlVYX0lSUVJFVFVSTl9ICisjZGVmaW5lIF9MSU5VWF9JUlFSRVRVUk5fSAorCisvKgorICogRm9yIDIuNC54IGNvbXBhdGliaWxpdHksIDIuNC54IGNhbiB1c2UKKyAqCisgKgl0eXBlZGVmIHZvaWQgaXJxcmV0dXJuX3Q7CisgKgkjZGVmaW5lIElSUV9OT05FCisgKgkjZGVmaW5lIElSUV9IQU5ETEVECisgKgkjZGVmaW5lIElSUV9SRVRWQUwoeCkKKyAqCisgKiBUbyBtaXggb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgaXJxIGhhbmRsZXIgcmV0dXJucy4KKyAqCisgKiBJUlFfTk9ORSBtZWFucyB3ZSBkaWRuJ3QgaGFuZGxlIGl0LgorICogSVJRX0hBTkRMRUQgbWVhbnMgdGhhdCB3ZSBkaWQgaGF2ZSBhIHZhbGlkIGludGVycnVwdCBhbmQgaGFuZGxlZCBpdC4KKyAqIElSUV9SRVRWQUwoeCkgc2VsZWN0cyBvbiB0aGUgdHdvIGRlcGVuZGluZyBvbiB4IGJlaW5nIG5vbi16ZXJvIChmb3IgaGFuZGxlZCkKKyAqLwordHlwZWRlZiBpbnQgaXJxcmV0dXJuX3Q7CisKKyNkZWZpbmUgSVJRX05PTkUJKDApCisjZGVmaW5lIElSUV9IQU5ETEVECSgxKQorI2RlZmluZSBJUlFfUkVUVkFMKHgpCSgoeCkgIT0gMCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lzYS5oIGIvaW5jbHVkZS9saW51eC9pc2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjg1NTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9pc2EuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogSVNBIGJ1cy4KKyAqLworCisjaWZuZGVmIF9fTElOVVhfSVNBX0gKKyNkZWZpbmUgX19MSU5VWF9JU0FfSAorCisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisKK3N0cnVjdCBpc2FfZHJpdmVyIHsKKwlpbnQgKCptYXRjaCkoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBpbnQpOworCWludCAoKnByb2JlKShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGludCk7CisJaW50ICgqcmVtb3ZlKShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGludCk7CisJdm9pZCAoKnNodXRkb3duKShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGludCk7CisJaW50ICgqc3VzcGVuZCkoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBpbnQsIHBtX21lc3NhZ2VfdCk7CisJaW50ICgqcmVzdW1lKShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGludCk7CisKKwlzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXI7CisJc3RydWN0IGRldmljZSAqZGV2aWNlczsKK307CisKKyNkZWZpbmUgdG9faXNhX2RyaXZlcih4KSBjb250YWluZXJfb2YoKHgpLCBzdHJ1Y3QgaXNhX2RyaXZlciwgZHJpdmVyKQorCitpbnQgaXNhX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgaXNhX2RyaXZlciAqLCB1bnNpZ25lZCBpbnQpOwordm9pZCBpc2FfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGlzYV9kcml2ZXIgKik7CisKKyNlbmRpZiAvKiBfX0xJTlVYX0lTQV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2piZC5oIGIvaW5jbHVkZS9saW51eC9qYmQuaAppbmRleCA2YTQyNWUzLi4yMGViMzQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2piZC5oCisrKyBiL2luY2x1ZGUvbGludXgvamJkLmgKQEAgLTUwMSw2ICs1MDEsMTIgQEAKIAlzdHJ1Y3Qgam91cm5hbF9oZWFkCSp0X2NoZWNrcG9pbnRfbGlzdDsKIAogCS8qCisJICogRG91Ymx5LWxpbmtlZCBjaXJjdWxhciBsaXN0IG9mIGFsbCBidWZmZXJzIHN1Ym1pdHRlZCBmb3IgSU8gd2hpbGUKKwkgKiBjaGVja3BvaW50aW5nLiBbal9saXN0X2xvY2tdCisJICovCisJc3RydWN0IGpvdXJuYWxfaGVhZAkqdF9jaGVja3BvaW50X2lvX2xpc3Q7CisKKwkvKgogCSAqIERvdWJseS1saW5rZWQgY2lyY3VsYXIgbGlzdCBvZiB0ZW1wb3JhcnkgYnVmZmVycyBjdXJyZW50bHkgdW5kZXJnb2luZwogCSAqIElPIGluIHRoZSBsb2cgW2pfbGlzdF9sb2NrXQogCSAqLwpAQCAtODQ5LDcgKzg1NSw3IEBACiAKIC8qIENoZWNrcG9pbnQgbGlzdCBtYW5hZ2VtZW50ICovCiBpbnQgX19qb3VybmFsX2NsZWFuX2NoZWNrcG9pbnRfbGlzdChqb3VybmFsX3QgKmpvdXJuYWwpOwotdm9pZCBfX2pvdXJuYWxfcmVtb3ZlX2NoZWNrcG9pbnQoc3RydWN0IGpvdXJuYWxfaGVhZCAqKTsKK2ludCBfX2pvdXJuYWxfcmVtb3ZlX2NoZWNrcG9pbnQoc3RydWN0IGpvdXJuYWxfaGVhZCAqKTsKIHZvaWQgX19qb3VybmFsX2luc2VydF9jaGVja3BvaW50KHN0cnVjdCBqb3VybmFsX2hlYWQgKiwgdHJhbnNhY3Rpb25fdCAqKTsKIAogLyogQnVmZmVyIElPICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIGIvaW5jbHVkZS9saW51eC9rZXJuZWwuaAppbmRleCBmNGZjNTc2Li44YzIxYWFhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oCisrKyBiL2luY2x1ZGUvbGludXgva2VybmVsLmgKQEAgLTI0LDYgKzI0LDkgQEAKICNkZWZpbmUgTE9OR19NQVgJKChsb25nKSh+MFVMPj4xKSkKICNkZWZpbmUgTE9OR19NSU4JKC1MT05HX01BWCAtIDEpCiAjZGVmaW5lIFVMT05HX01BWAkofjBVTCkKKyNkZWZpbmUgTExPTkdfTUFYCSgobG9uZyBsb25nKSh+MFVMTD4+MSkpCisjZGVmaW5lIExMT05HX01JTgkoLUxMT05HX01BWCAtIDEpCisjZGVmaW5lIFVMTE9OR19NQVgJKH4wVUxMKQogCiAjZGVmaW5lIFNUQUNLX01BR0lDCTB4ZGVhZGJlZWYKIApAQCAtNzUsNyArNzgsNyBAQAogIyBkZWZpbmUgbWlnaHRfc2xlZXAoKSBkbyB7IG1pZ2h0X3Jlc2NoZWQoKTsgfSB3aGlsZSAoMCkKICNlbmRpZgogCi0jZGVmaW5lIG1pZ2h0X3NsZWVwX2lmKGNvbmQpIGRvIHsgaWYgKHVubGlrZWx5KGNvbmQpKSBtaWdodF9zbGVlcCgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBtaWdodF9zbGVlcF9pZihjb25kKSBkbyB7IGlmIChjb25kKSBtaWdodF9zbGVlcCgpOyB9IHdoaWxlICgwKQogCiAjZGVmaW5lIGFicyh4KSAoewkJCQlcCiAJCWludCBfX3ggPSAoeCk7CQkJXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rZXhlYy5oIGIvaW5jbHVkZS9saW51eC9rZXhlYy5oCmluZGV4IGNmYjM0MTAuLjY0Mjc5NDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva2V4ZWMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2tleGVjLmgKQEAgLTEwNiw2ICsxMDYsNyBAQAogZXh0ZXJuIHZvaWQgY3Jhc2hfa2V4ZWMoc3RydWN0IHB0X3JlZ3MgKik7CiBpbnQga2V4ZWNfc2hvdWxkX2NyYXNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKIGV4dGVybiBzdHJ1Y3Qga2ltYWdlICprZXhlY19pbWFnZTsKK2V4dGVybiBzdHJ1Y3Qga2ltYWdlICprZXhlY19jcmFzaF9pbWFnZTsKIAogI2RlZmluZSBLRVhFQ19PTl9DUkFTSCAgMHgwMDAwMDAwMQogI2RlZmluZSBLRVhFQ19BUkNIX01BU0sgMHhmZmZmMDAwMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rZXkuaCBiL2luY2x1ZGUvbGludXgva2V5LmgKaW5kZXggY2JmNDY0YS4uZTgxZWJmOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rZXkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2tleS5oCkBAIC0yMDUsNiArMjA1LDExIEBACiAJLyogbWF0Y2ggYSBrZXkgYWdhaW5zdCBhIGRlc2NyaXB0aW9uICovCiAJaW50ICgqbWF0Y2gpKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgY29uc3Qgdm9pZCAqZGVzYyk7CiAKKwkvKiBjbGVhciBzb21lIG9mIHRoZSBkYXRhIGZyb20gYSBrZXkgb24gcmV2b2thdGlvbiAob3B0aW9uYWwpCisJICogLSB0aGUga2V5J3Mgc2VtYXBob3JlIHdpbGwgYmUgd3JpdGUtbG9ja2VkIGJ5IHRoZSBjYWxsZXIKKwkgKi8KKwl2b2lkICgqcmV2b2tlKShzdHJ1Y3Qga2V5ICprZXkpOworCiAJLyogY2xlYXIgdGhlIGRhdGEgZnJvbSBhIGtleSAob3B0aW9uYWwpICovCiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBrZXkgKmtleSk7CiAKQEAgLTI0MSw4ICsyNDYsOSBAQAogCiBleHRlcm4gc3RydWN0IGtleSAqa2V5X2FsbG9jKHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKIAkJCSAgICAgY29uc3QgY2hhciAqZGVzYywKLQkJCSAgICAgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIGtleV9wZXJtX3QgcGVybSwKLQkJCSAgICAgaW50IG5vdF9pbl9xdW90YSk7CisJCQkgICAgIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAorCQkJICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN0eCwKKwkJCSAgICAga2V5X3Blcm1fdCBwZXJtLCBpbnQgbm90X2luX3F1b3RhKTsKIGV4dGVybiBpbnQga2V5X3BheWxvYWRfcmVzZXJ2ZShzdHJ1Y3Qga2V5ICprZXksIHNpemVfdCBkYXRhbGVuKTsKIGV4dGVybiBpbnQga2V5X2luc3RhbnRpYXRlX2FuZF9saW5rKHN0cnVjdCBrZXkgKmtleSwKIAkJCQkgICAgY29uc3Qgdm9pZCAqZGF0YSwKQEAgLTI5Miw3ICsyOTgsOSBAQAogCQkgICAgICBzdHJ1Y3Qga2V5ICprZXkpOwogCiBleHRlcm4gc3RydWN0IGtleSAqa2V5cmluZ19hbGxvYyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCi0JCQkJIGludCBub3RfaW5fcXVvdGEsIHN0cnVjdCBrZXkgKmRlc3QpOworCQkJCSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN0eCwKKwkJCQkgaW50IG5vdF9pbl9xdW90YSwKKwkJCQkgc3RydWN0IGtleSAqZGVzdCk7CiAKIGV4dGVybiBpbnQga2V5cmluZ19jbGVhcihzdHJ1Y3Qga2V5ICprZXlyaW5nKTsKIApAQCAtMzEzLDcgKzMyMSw4IEBACiAgKiB0aGUgdXNlcnNwYWNlIGludGVyZmFjZQogICovCiBleHRlcm4gc3RydWN0IGtleSByb290X3VzZXJfa2V5cmluZywgcm9vdF9zZXNzaW9uX2tleXJpbmc7Ci1leHRlcm4gaW50IGFsbG9jX3VpZF9rZXlyaW5nKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcik7CitleHRlcm4gaW50IGFsbG9jX3VpZF9rZXlyaW5nKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwKKwkJCSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpjdHgpOwogZXh0ZXJuIHZvaWQgc3dpdGNoX3VpZF9rZXlyaW5nKHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV3X3VzZXIpOwogZXh0ZXJuIGludCBjb3B5X2tleXModW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwogZXh0ZXJuIGludCBjb3B5X3RocmVhZF9ncm91cF9rZXlzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKQEAgLTM0Miw3ICszNTEsNyBAQAogI2RlZmluZSBtYWtlX2tleV9yZWYoaykJCQkoeyBOVUxMOyB9KQogI2RlZmluZSBrZXlfcmVmX3RvX3B0cihrKQkJKHsgTlVMTDsgfSkKICNkZWZpbmUgaXNfa2V5X3Bvc3Nlc3NlZChrKQkJMAotI2RlZmluZSBhbGxvY191aWRfa2V5cmluZyh1KQkJMAorI2RlZmluZSBhbGxvY191aWRfa2V5cmluZyh1LGMpCQkwCiAjZGVmaW5lIHN3aXRjaF91aWRfa2V5cmluZyh1KQkJZG8geyB9IHdoaWxlKDApCiAjZGVmaW5lIF9faW5zdGFsbF9zZXNzaW9uX2tleXJpbmcodCwgaykJKHsgTlVMTDsgfSkKICNkZWZpbmUgY29weV9rZXlzKGYsdCkJCQkwCkBAIC0zNTUsNiArMzY0LDEwIEBACiAjZGVmaW5lIGtleV9mc2dpZF9jaGFuZ2VkKHQpCQlkbyB7IH0gd2hpbGUoMCkKICNkZWZpbmUga2V5X2luaXQoKQkJCWRvIHsgfSB3aGlsZSgwKQogCisvKiBJbml0aWFsIGtleXJpbmdzICovCitleHRlcm4gc3RydWN0IGtleSByb290X3VzZXJfa2V5cmluZzsKK2V4dGVybiBzdHJ1Y3Qga2V5IHJvb3Rfc2Vzc2lvbl9rZXlyaW5nOworCiAjZW5kaWYgLyogQ09ORklHX0tFWVMgKi8KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYgLyogX0xJTlVYX0tFWV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCBiL2luY2x1ZGUvbGludXgva29iamVjdC5oCmluZGV4IGMxODdjNTMuLjJkMjI5MzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva29iamVjdC5oCisrKyBiL2luY2x1ZGUvbGludXgva29iamVjdC5oCkBAIC0xOTAsNiArMTkwLDggQEAKIAogLyogVGhlIGdsb2JhbCAvc3lzL2tlcm5lbC8gc3Vic3lzdGVtIGZvciBwZW9wbGUgdG8gY2hhaW4gb2ZmIG9mICovCiBleHRlcm4gc3RydWN0IHN1YnN5c3RlbSBrZXJuZWxfc3Vic3lzOworLyogVGhlIGdsb2JhbCAvc3lzL2h5cGVydmlzb3IvIHN1YnN5c3RlbSAgKi8KK2V4dGVybiBzdHJ1Y3Qgc3Vic3lzdGVtIGh5cGVydmlzb3Jfc3Vic3lzOwogCiAvKioKICAqIEhlbHBlcnMgZm9yIHNldHRpbmcgdGhlIGtzZXQgb2YgcmVnaXN0ZXJlZCBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWJhdGEuaCBiL2luY2x1ZGUvbGludXgvbGliYXRhLmgKaW5kZXggYjgwZDJlNy4uMjBiMWNmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9saWJhdGEuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8bGludXgvYXRhLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3QuaD4KIAogLyoKICAqIGNvbXBpbGUtdGltZSBvcHRpb25zOiB0byBiZSByZW1vdmVkIGFzIHNvb24gYXMgYWxsIHRoZSBkcml2ZXJzIGFyZQpAQCAtNDQsNyArNDUsNiBAQAogI3VuZGVmIEFUQV9OREVCVUcJCS8qIGRlZmluZSB0byBkaXNhYmxlIHF1aWNrIHJ1bnRpbWUgY2hlY2tzICovCiAjdW5kZWYgQVRBX0VOQUJMRV9QQVRBCQkvKiBkZWZpbmUgdG8gZW5hYmxlIFBBVEEgc3VwcG9ydCBpbiBzb21lCiAJCQkJICogbG93LWxldmVsIGRyaXZlcnMgKi8KLSN1bmRlZiBBVEFQSV9FTkFCTEVfRE1BRElSCS8qIGVuYWJsZXMgQVRBUEkgRE1BRElSIGJyaWRnZSBzdXBwb3J0ICovCiAKIAogLyogbm90ZTogcHJpbnRzIGZ1bmN0aW9uIG5hbWUgZm9yIHlvdSAqLwpAQCAtMTA4LDggKzEwOCwxMSBAQAogCUxJQkFUQV9NQVhfUFJECQk9IEFUQV9NQVhfUFJEIC8gMiwKIAlBVEFfTUFYX1BPUlRTCQk9IDgsCiAJQVRBX0RFRl9RVUVVRQkJPSAxLAotCUFUQV9NQVhfUVVFVUUJCT0gMSwKKwkvKiB0YWcgQVRBX01BWF9RVUVVRSAtIDEgaXMgcmVzZXJ2ZWQgZm9yIGludGVybmFsIGNvbW1hbmRzICovCisJQVRBX01BWF9RVUVVRQkJPSAzMiwKKwlBVEFfVEFHX0lOVEVSTkFMCT0gQVRBX01BWF9RVUVVRSAtIDEsCiAJQVRBX01BWF9TRUNUT1JTCQk9IDIwMCwJLyogRklYTUUgKi8KKwlBVEFfTUFYX1NFQ1RPUlNfTEJBNDgJPSA2NTUzNSwKIAlBVEFfTUFYX0JVUwkJPSAyLAogCUFUQV9ERUZfQlVTWV9XQUlUCT0gMTAwMDAsCiAJQVRBX1NIT1JUX1BBVVNFCQk9IChIWiA+PiA2KSArIDEsCkBAIC0xMjAsOSArMTIzLDE3IEBACiAJQVRBX1NIVF9VU0VfQ0xVU1RFUklORwk9IDEsCiAKIAkvKiBzdHJ1Y3QgYXRhX2RldmljZSBzdHVmZiAqLwotCUFUQV9ERkxBR19MQkE0OAkJPSAoMSA8PCAwKSwgLyogZGV2aWNlIHN1cHBvcnRzIExCQTQ4ICovCi0JQVRBX0RGTEFHX1BJTwkJPSAoMSA8PCAxKSwgLyogZGV2aWNlIGN1cnJlbnRseSBpbiBQSU8gbW9kZSAqLwotCUFUQV9ERkxBR19MQkEJCT0gKDEgPDwgMiksIC8qIGRldmljZSBzdXBwb3J0cyBMQkEgKi8KKwlBVEFfREZMQUdfTEJBCQk9ICgxIDw8IDApLCAvKiBkZXZpY2Ugc3VwcG9ydHMgTEJBICovCisJQVRBX0RGTEFHX0xCQTQ4CQk9ICgxIDw8IDEpLCAvKiBkZXZpY2Ugc3VwcG9ydHMgTEJBNDggKi8KKwlBVEFfREZMQUdfQ0RCX0lOVFIJPSAoMSA8PCAyKSwgLyogZGV2aWNlIGFzc2VydHMgSU5UUlEgd2hlbiByZWFkeSBmb3IgQ0RCICovCisJQVRBX0RGTEFHX05DUQkJPSAoMSA8PCAzKSwgLyogZGV2aWNlIHN1cHBvcnRzIE5DUSAqLworCUFUQV9ERkxBR19DRkdfTUFTSwk9ICgxIDw8IDgpIC0gMSwKKworCUFUQV9ERkxBR19QSU8JCT0gKDEgPDwgOCksIC8qIGRldmljZSBjdXJyZW50bHkgaW4gUElPIG1vZGUgKi8KKwlBVEFfREZMQUdfSU5JVF9NQVNLCT0gKDEgPDwgMTYpIC0gMSwKKworCUFUQV9ERkxBR19ERVRBQ0gJPSAoMSA8PCAxNiksCisJQVRBX0RGTEFHX0RFVEFDSEVECT0gKDEgPDwgMTcpLAogCiAJQVRBX0RFVl9VTktOT1dOCQk9IDAsCS8qIHVua25vd24gZGV2aWNlICovCiAJQVRBX0RFVl9BVEEJCT0gMSwJLyogQVRBIGRldmljZSAqLwpAQCAtMTMyLDQzICsxNDMsNTcgQEAKIAlBVEFfREVWX05PTkUJCT0gNSwJLyogbm8gZGV2aWNlICovCiAKIAkvKiBzdHJ1Y3QgYXRhX3BvcnQgZmxhZ3MgKi8KLQlBVEFfRkxBR19TTEFWRV9QT1NTCT0gKDEgPDwgMSksIC8qIGhvc3Qgc3VwcG9ydHMgc2xhdmUgZGV2ICovCisJQVRBX0ZMQUdfU0xBVkVfUE9TUwk9ICgxIDw8IDApLCAvKiBob3N0IHN1cHBvcnRzIHNsYXZlIGRldiAqLwogCQkJCQkgICAgLyogKGRvZXNuJ3QgaW1wbHkgcHJlc2VuY2UpICovCi0JQVRBX0ZMQUdfUE9SVF9ESVNBQkxFRAk9ICgxIDw8IDIpLCAvKiBwb3J0IGlzIGRpc2FibGVkLCBpZ25vcmUgaXQgKi8KLQlBVEFfRkxBR19TQVRBCQk9ICgxIDw8IDMpLAotCUFUQV9GTEFHX05PX0xFR0FDWQk9ICgxIDw8IDQpLCAvKiBubyBsZWdhY3kgbW9kZSBjaGVjayAqLwotCUFUQV9GTEFHX1NSU1QJCT0gKDEgPDwgNSksIC8qIChvYnNvbGV0ZSkgdXNlIEFUQSBTUlNULCBub3QgRS5ELkQuICovCi0JQVRBX0ZMQUdfTU1JTwkJPSAoMSA8PCA2KSwgLyogdXNlIE1NSU8sIG5vdCBQSU8gKi8KLQlBVEFfRkxBR19TQVRBX1JFU0VUCT0gKDEgPDwgNyksIC8qIChvYnNvbGV0ZSkgdXNlIENPTVJFU0VUICovCi0JQVRBX0ZMQUdfUElPX0RNQQk9ICgxIDw8IDgpLCAvKiBQSU8gY21kcyB2aWEgRE1BICovCi0JQVRBX0ZMQUdfTk9JTlRSCQk9ICgxIDw8IDkpLCAvKiBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZQotCQkJCQkgICAgICogcHJvcGVyIEhTTSBpcyBpbiBwbGFjZS4gKi8KLQlBVEFfRkxBR19ERUJVR01TRwk9ICgxIDw8IDEwKSwKLQlBVEFfRkxBR19OT19BVEFQSQk9ICgxIDw8IDExKSwgLyogTm8gQVRBUEkgc3VwcG9ydCAqLworCUFUQV9GTEFHX1NBVEEJCT0gKDEgPDwgMSksCisJQVRBX0ZMQUdfTk9fTEVHQUNZCT0gKDEgPDwgMiksIC8qIG5vIGxlZ2FjeSBtb2RlIGNoZWNrICovCisJQVRBX0ZMQUdfTU1JTwkJPSAoMSA8PCAzKSwgLyogdXNlIE1NSU8sIG5vdCBQSU8gKi8KKwlBVEFfRkxBR19TUlNUCQk9ICgxIDw8IDQpLCAvKiAob2Jzb2xldGUpIHVzZSBBVEEgU1JTVCwgbm90IEUuRC5ELiAqLworCUFUQV9GTEFHX1NBVEFfUkVTRVQJPSAoMSA8PCA1KSwgLyogKG9ic29sZXRlKSB1c2UgQ09NUkVTRVQgKi8KKwlBVEFfRkxBR19OT19BVEFQSQk9ICgxIDw8IDYpLCAvKiBObyBBVEFQSSBzdXBwb3J0ICovCisJQVRBX0ZMQUdfUElPX0RNQQk9ICgxIDw8IDcpLCAvKiBQSU8gY21kcyB2aWEgRE1BICovCisJQVRBX0ZMQUdfUElPX0xCQTQ4CT0gKDEgPDwgOCksIC8qIEhvc3QgRE1BIGVuZ2luZSBpcyBMQkEyOCBvbmx5ICovCisJQVRBX0ZMQUdfUElPX1BPTExJTkcJPSAoMSA8PCA5KSwgLyogdXNlIHBvbGxpbmcgUElPIGlmIExMRAorCQkJCQkgICAgICogZG9lc24ndCBoYW5kbGUgUElPIGludGVycnVwdHMgKi8KKwlBVEFfRkxBR19OQ1EJCT0gKDEgPDwgMTApLCAvKiBob3N0IHN1cHBvcnRzIE5DUSAqLworCUFUQV9GTEFHX0hSU1RfVE9fUkVTVU1FCT0gKDEgPDwgMTEpLCAvKiBoYXJkcmVzZXQgdG8gcmVzdW1lIHBoeSAqLworCUFUQV9GTEFHX1NLSVBfRDJIX0JTWQk9ICgxIDw8IDEyKSwgLyogY2FuJ3Qgd2FpdCBmb3IgdGhlIGZpcnN0IEQySAorCQkJCQkgICAgICAqIFJlZ2lzdGVyIEZJUyBjbGVhcmluZyBCU1kgKi8KIAotCUFUQV9GTEFHX1NVU1BFTkRFRAk9ICgxIDw8IDEyKSwgLyogcG9ydCBpcyBzdXNwZW5kZWQgKi8KKwlBVEFfRkxBR19ERUJVR01TRwk9ICgxIDw8IDEzKSwKKwlBVEFfRkxBR19GTFVTSF9QT1JUX1RBU0sgPSAoMSA8PCAxNCksIC8qIGZsdXNoIHBvcnQgdGFzayAqLwogCi0JQVRBX0ZMQUdfUElPX0xCQTQ4CT0gKDEgPDwgMTMpLCAvKiBIb3N0IERNQSBlbmdpbmUgaXMgTEJBMjggb25seSAqLwotCUFUQV9GTEFHX0lSUV9NQVNLCT0gKDEgPDwgMTQpLCAvKiBNYXNrIElSUSBpbiBQSU8geGZlcnMgKi8KKwlBVEFfRkxBR19FSF9QRU5ESU5HCT0gKDEgPDwgMTUpLCAvKiBFSCBwZW5kaW5nICovCisJQVRBX0ZMQUdfRUhfSU5fUFJPR1JFU1MJPSAoMSA8PCAxNiksIC8qIEVIIGluIHByb2dyZXNzICovCisJQVRBX0ZMQUdfRlJPWkVOCQk9ICgxIDw8IDE3KSwgLyogcG9ydCBpcyBmcm96ZW4gKi8KKwlBVEFfRkxBR19SRUNPVkVSRUQJPSAoMSA8PCAxOCksIC8qIHJlY292ZXJ5IGFjdGlvbiBwZXJmb3JtZWQgKi8KKwlBVEFfRkxBR19MT0FESU5HCT0gKDEgPDwgMTkpLCAvKiBib290L2xvYWRpbmcgcHJvYmUgKi8KKwlBVEFfRkxBR19VTkxPQURJTkcJPSAoMSA8PCAyMCksIC8qIG1vZHVsZSBpcyB1bmxvYWRpbmcgKi8KKwlBVEFfRkxBR19TQ1NJX0hPVFBMVUcJPSAoMSA8PCAyMSksIC8qIFNDU0kgaG90cGx1ZyBzY2hlZHVsZWQgKi8KIAotCUFUQV9GTEFHX0ZMVVNIX1BPUlRfVEFTSyA9ICgxIDw8IDE1KSwgLyogRmx1c2ggcG9ydCB0YXNrICovCi0JQVRBX0ZMQUdfSU5fRUgJCT0gKDEgPDwgMTYpLCAvKiBFSCBpbiBwcm9ncmVzcyAqLworCUFUQV9GTEFHX0RJU0FCTEVECT0gKDEgPDwgMjIpLCAvKiBwb3J0IGlzIGRpc2FibGVkLCBpZ25vcmUgaXQgKi8KKwlBVEFfRkxBR19TVVNQRU5ERUQJPSAoMSA8PCAyMyksIC8qIHBvcnQgaXMgc3VzcGVuZGVkIChwb3dlcikgKi8KIAotCUFUQV9RQ0ZMQUdfQUNUSVZFCT0gKDEgPDwgMSksIC8qIGNtZCBub3QgeWV0IGFjaydkIHRvIHNjc2kgbHllciAqLwotCUFUQV9RQ0ZMQUdfU0cJCT0gKDEgPDwgMyksIC8qIGhhdmUgcy9nIHRhYmxlPyAqLwotCUFUQV9RQ0ZMQUdfU0lOR0xFCT0gKDEgPDwgNCksIC8qIG5vIHMvZywganVzdCBhIHNpbmdsZSBidWZmZXIgKi8KKwkvKiBiaXRzIDI0OjMxIG9mIGFwLT5mbGFncyBhcmUgcmVzZXJ2ZWQgZm9yIExMREQgc3BlY2lmaWMgZmxhZ3MgKi8KKworCS8qIHN0cnVjdCBhdGFfcXVldWVkX2NtZCBmbGFncyAqLworCUFUQV9RQ0ZMQUdfQUNUSVZFCT0gKDEgPDwgMCksIC8qIGNtZCBub3QgeWV0IGFjaydkIHRvIHNjc2kgbHllciAqLworCUFUQV9RQ0ZMQUdfU0cJCT0gKDEgPDwgMSksIC8qIGhhdmUgcy9nIHRhYmxlPyAqLworCUFUQV9RQ0ZMQUdfU0lOR0xFCT0gKDEgPDwgMiksIC8qIG5vIHMvZywganVzdCBhIHNpbmdsZSBidWZmZXIgKi8KIAlBVEFfUUNGTEFHX0RNQU1BUAk9IEFUQV9RQ0ZMQUdfU0cgfCBBVEFfUUNGTEFHX1NJTkdMRSwKLQlBVEFfUUNGTEFHX0VIX1NDSEVEVUxFRCA9ICgxIDw8IDUpLCAvKiBFSCBzY2hlZHVsZWQgKi8KKwlBVEFfUUNGTEFHX0lPCQk9ICgxIDw8IDMpLCAvKiBzdGFuZGFyZCBJTyBjb21tYW5kICovCisJQVRBX1FDRkxBR19SRVNVTFRfVEYJPSAoMSA8PCA0KSwgLyogcmVzdWx0IFRGIHJlcXVlc3RlZCAqLworCisJQVRBX1FDRkxBR19GQUlMRUQJPSAoMSA8PCAxNiksIC8qIGNtZCBmYWlsZWQgYW5kIGlzIG93bmVkIGJ5IEVIICovCisJQVRBX1FDRkxBR19TRU5TRV9WQUxJRAk9ICgxIDw8IDE3KSwgLyogc2Vuc2UgZGF0YSB2YWxpZCAqLworCUFUQV9RQ0ZMQUdfRUhfU0NIRURVTEVEID0gKDEgPDwgMTgpLCAvKiBFSCBzY2hlZHVsZWQgKG9ic29sZXRlKSAqLwogCiAJLyogaG9zdCBzZXQgZmxhZ3MgKi8KIAlBVEFfSE9TVF9TSU1QTEVYCT0gKDEgPDwgMCksCS8qIEhvc3QgaXMgc2ltcGxleCwgb25lIERNQSBjaGFubmVsIHBlciBob3N0X3NldCBvbmx5ICovCiAJCiAJLyogdmFyaW91cyBsZW5ndGhzIG9mIHRpbWUgKi8KLQlBVEFfVE1PVVRfUElPCQk9IDMwICogSFosCiAJQVRBX1RNT1VUX0JPT1QJCT0gMzAgKiBIWiwJLyogaGV1cmlzdGljICovCiAJQVRBX1RNT1VUX0JPT1RfUVVJQ0sJPSA3ICogSFosCS8qIGhldXJpc3RpYyAqLwotCUFUQV9UTU9VVF9DREIJCT0gMzAgKiBIWiwKLQlBVEFfVE1PVVRfQ0RCX1FVSUNLCT0gNSAqIEhaLAogCUFUQV9UTU9VVF9JTlRFUk5BTAk9IDMwICogSFosCiAJQVRBX1RNT1VUX0lOVEVSTkFMX1FVSUNLID0gNSAqIEhaLAogCkBAIC0yMDcsMjEgKzIzMiw1NiBAQAogCS8qIHNpemUgb2YgYnVmZmVyIHRvIHBhZCB4ZmVycyBlbmRpbmcgb24gdW5hbGlnbmVkIGJvdW5kYXJpZXMgKi8KIAlBVEFfRE1BX1BBRF9TWgkJPSA0LAogCUFUQV9ETUFfUEFEX0JVRl9TWgk9IEFUQV9ETUFfUEFEX1NaICogQVRBX01BWF9RVUVVRSwKLQkKLQkvKiBNYXNrcyBmb3IgcG9ydCBmdW5jdGlvbnMgKi8KKworCS8qIG1hc2tzIGZvciBwb3J0IGZ1bmN0aW9ucyAqLwogCUFUQV9QT1JUX1BSSU1BUlkJPSAoMSA8PCAwKSwKIAlBVEFfUE9SVF9TRUNPTkRBUlkJPSAoMSA8PCAxKSwKKworCS8qIGVyaW5nIHNpemUgKi8KKwlBVEFfRVJJTkdfU0laRQkJPSAzMiwKKworCS8qIGRlc2NfbGVuIGZvciBhdGFfZWhfaW5mbyBhbmQgY29udGV4dCAqLworCUFUQV9FSF9ERVNDX0xFTgkJPSA4MCwKKworCS8qIHJlc2V0IC8gcmVjb3ZlcnkgYWN0aW9uIHR5cGVzICovCisJQVRBX0VIX1JFVkFMSURBVEUJPSAoMSA8PCAwKSwKKwlBVEFfRUhfU09GVFJFU0VUCT0gKDEgPDwgMSksCisJQVRBX0VIX0hBUkRSRVNFVAk9ICgxIDw8IDIpLAorCisJQVRBX0VIX1JFU0VUX01BU0sJPSBBVEFfRUhfU09GVFJFU0VUIHwgQVRBX0VIX0hBUkRSRVNFVCwKKwlBVEFfRUhfUEVSREVWX01BU0sJPSBBVEFfRUhfUkVWQUxJREFURSwKKworCS8qIGF0YV9laF9pbmZvLT5mbGFncyAqLworCUFUQV9FSElfSE9UUExVR0dFRAk9ICgxIDw8IDApLCAgLyogY291bGQgaGF2ZSBiZWVuIGhvdHBsdWdnZWQgKi8KKworCUFUQV9FSElfRElEX1JFU0VUCT0gKDEgPDwgMTYpLCAvKiBhbHJlYWR5IHJlc2V0IHRoaXMgcG9ydCAqLworCisJLyogbWF4IHJlcGVhdCBpZiBlcnJvciBjb25kaXRpb24gaXMgc3RpbGwgc2V0IGFmdGVyIC0+ZXJyb3JfaGFuZGxlciAqLworCUFUQV9FSF9NQVhfUkVQRUFUCT0gNSwKKworCS8qIGhvdyBoYXJkIGFyZSB3ZSBnb25uYSB0cnkgdG8gcHJvYmUvcmVjb3ZlciBkZXZpY2VzICovCisJQVRBX1BST0JFX01BWF9UUklFUwk9IDMsCisJQVRBX0VIX1JFU0VUX1RSSUVTCT0gMywKKwlBVEFfRUhfREVWX1RSSUVTCT0gMywKKworCS8qIERyaXZlIHNwaW51cCB0aW1lICh0aW1lIGZyb20gcG93ZXItb24gdG8gdGhlIGZpcnN0IEQySCBGSVMpCisJICogaW4gbXNlY3MgLSA4cyBjdXJyZW50bHkuICBGYWlsaW5nIHRvIGdldCByZWFkeSBpbiB0aGlzIHRpbWUKKwkgKiBpc24ndCBjcml0aWNhbC4gIEl0IHdpbGwgcmVzdWx0IGluIHJlc2V0IGZhaWx1cmUgZm9yCisJICogY29udHJvbGxlcnMgd2hpY2ggY2FuJ3Qgd2FpdCBmb3IgdGhlIGZpcnN0IEQySCBGSVMuICBsaWJhdGEKKwkgKiB3aWxsIHJldHJ5LCBzbyBpdCBqdXN0IGhhcyB0byBiZSBsb25nIGVub3VnaCB0byBzcGluIHVwCisJICogbW9zdCBkZXZpY2VzLgorCSAqLworCUFUQV9TUElOVVBfV0FJVAkJPSA4MDAwLAogfTsKIAogZW51bSBoc21fdGFza19zdGF0ZXMgewotCUhTTV9TVF9VTktOT1dOLAotCUhTTV9TVF9JRExFLAotCUhTTV9TVF9QT0xMLAotCUhTTV9TVF9UTU9VVCwKLQlIU01fU1QsCi0JSFNNX1NUX0xBU1QsCi0JSFNNX1NUX0xBU1RfUE9MTCwKLQlIU01fU1RfRVJSLAorCUhTTV9TVF9VTktOT1dOLAkJLyogc3RhdGUgdW5rbm93biAqLworCUhTTV9TVF9JRExFLAkJLyogbm8gY29tbWFuZCBvbiBnb2luZyAqLworCUhTTV9TVCwJCQkvKiAod2FpdGluZyB0aGUgZGV2aWNlIHRvKSB0cmFuc2ZlciBkYXRhICovCisJSFNNX1NUX0xBU1QsCQkvKiAod2FpdGluZyB0aGUgZGV2aWNlIHRvKSBjb21wbGV0ZSBjb21tYW5kICovCisJSFNNX1NUX0VSUiwJCS8qIGVycm9yICovCisJSFNNX1NUX0ZJUlNULAkJLyogKHdhaXRpbmcgdGhlIGRldmljZSB0bykKKwkJCQkgICB3cml0ZSBDREIgb3IgZmlyc3QgZGF0YSBibG9jayAqLwogfTsKIAogZW51bSBhdGFfY29tcGxldGlvbl9lcnJvcnMgewpAQCAtMjQ0LDkgKzMwNCw5IEBACiAKIC8qIHR5cGVkZWZzICovCiB0eXBlZGVmIHZvaWQgKCphdGFfcWNfY2JfdCkgKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwotdHlwZWRlZiB2b2lkICgqYXRhX3Byb2JlaW5pdF9mbl90KShzdHJ1Y3QgYXRhX3BvcnQgKik7Ci10eXBlZGVmIGludCAoKmF0YV9yZXNldF9mbl90KShzdHJ1Y3QgYXRhX3BvcnQgKiwgaW50LCB1bnNpZ25lZCBpbnQgKik7Ci10eXBlZGVmIHZvaWQgKCphdGFfcG9zdHJlc2V0X2ZuX3QpKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCAqKTsKK3R5cGVkZWYgaW50ICgqYXRhX3ByZXJlc2V0X2ZuX3QpKHN0cnVjdCBhdGFfcG9ydCAqYXApOwordHlwZWRlZiBpbnQgKCphdGFfcmVzZXRfZm5fdCkoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKTsKK3R5cGVkZWYgdm9pZCAoKmF0YV9wb3N0cmVzZXRfZm5fdCkoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKTsKIAogc3RydWN0IGF0YV9pb3BvcnRzIHsKIAl1bnNpZ25lZCBsb25nCQljbWRfYWRkcjsKQEAgLTI5Nyw3ICszNTcsOCBAQAogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwogCWludAkJCXNpbXBsZXhfY2xhaW1lZDsJLyogS2VlcCBzZXBlcmF0ZSBpbiBjYXNlIHdlCiAJCQkJCQkJICAgZXZlciBuZWVkIHRvIGRvIHRoaXMgbG9ja2VkICovCi0Jc3RydWN0IGF0YV9wb3J0ICoJcG9ydHNbMF07CisJc3RydWN0IGF0YV9ob3N0X3NldAkqbmV4dDsJCS8qIGZvciBsZWdhY3kgbW9kZSAqLworCXN0cnVjdCBhdGFfcG9ydAkJKnBvcnRzWzBdOwogfTsKIAogc3RydWN0IGF0YV9xdWV1ZWRfY21kIHsKQEAgLTMzNiw3ICszOTcsNyBAQAogCXN0cnVjdCBzY2F0dGVybGlzdAkqX19zZzsKIAogCXVuc2lnbmVkIGludAkJZXJyX21hc2s7Ci0KKwlzdHJ1Y3QgYXRhX3Rhc2tmaWxlCXJlc3VsdF90ZjsKIAlhdGFfcWNfY2JfdAkJY29tcGxldGVfZm47CiAKIAl2b2lkCQkJKnByaXZhdGVfZGF0YTsKQEAgLTM0OCwxMiArNDA5LDI2IEBACiAJdW5zaWduZWQgbG9uZwkJcndfcmVxYnVmOwogfTsKIAorc3RydWN0IGF0YV9lcmluZ19lbnRyeSB7CisJaW50CQkJaXNfaW87CisJdW5zaWduZWQgaW50CQllcnJfbWFzazsKKwl1NjQJCQl0aW1lc3RhbXA7Cit9OworCitzdHJ1Y3QgYXRhX2VyaW5nIHsKKwlpbnQJCQljdXJzb3I7CisJc3RydWN0IGF0YV9lcmluZ19lbnRyeQlyaW5nW0FUQV9FUklOR19TSVpFXTsKK307CisKIHN0cnVjdCBhdGFfZGV2aWNlIHsKLQl1NjQJCQluX3NlY3RvcnM7CS8qIHNpemUgb2YgZGV2aWNlLCBpZiBBVEEgKi8KLQl1bnNpZ25lZCBsb25nCQlmbGFnczsJCS8qIEFUQV9ERkxBR194eHggKi8KLQl1bnNpZ25lZCBpbnQJCWNsYXNzOwkJLyogQVRBX0RFVl94eHggKi8KKwlzdHJ1Y3QgYXRhX3BvcnQJCSphcDsKIAl1bnNpZ25lZCBpbnQJCWRldm5vOwkJLyogMCBvciAxICovCi0JdTE2CQkJKmlkOwkJLyogSURFTlRJRlkgeHh4IERFVklDRSBkYXRhICovCisJdW5zaWduZWQgbG9uZwkJZmxhZ3M7CQkvKiBBVEFfREZMQUdfeHh4ICovCisJc3RydWN0IHNjc2lfZGV2aWNlCSpzZGV2OwkJLyogYXR0YWNoZWQgU0NTSSBkZXZpY2UgKi8KKwkvKiBuX3NlY3RvciBpcyB1c2VkIGFzIENMRUFSX09GRlNFVCwgcmVhZCBjb21tZW50IGFib3ZlIENMRUFSX09GRlNFVCAqLworCXU2NAkJCW5fc2VjdG9yczsJLyogc2l6ZSBvZiBkZXZpY2UsIGlmIEFUQSAqLworCXVuc2lnbmVkIGludAkJY2xhc3M7CQkvKiBBVEFfREVWX3h4eCAqLworCXUxNgkJCWlkW0FUQV9JRF9XT1JEU107IC8qIElERU5USUZZIHh4eCBERVZJQ0UgZGF0YSAqLwogCXU4CQkJcGlvX21vZGU7CiAJdTgJCQlkbWFfbW9kZTsKIAl1OAkJCXhmZXJfbW9kZTsKQEAgLTM3MywxMSArNDQ4LDQyIEBACiAJdTE2CQkJY3lsaW5kZXJzOwkvKiBOdW1iZXIgb2YgY3lsaW5kZXJzICovCiAJdTE2CQkJaGVhZHM7CQkvKiBOdW1iZXIgb2YgaGVhZHMgKi8KIAl1MTYJCQlzZWN0b3JzOwkvKiBOdW1iZXIgb2Ygc2VjdG9ycyBwZXIgdHJhY2sgKi8KKworCS8qIGVycm9yIGhpc3RvcnkgKi8KKwlzdHJ1Y3QgYXRhX2VyaW5nCWVyaW5nOworfTsKKworLyogT2Zmc2V0IGludG8gc3RydWN0IGF0YV9kZXZpY2UuICBGaWVsZHMgYWJvdmUgaXQgYXJlIG1haW50YWluZWQKKyAqIGFjcmVzcyBkZXZpY2UgaW5pdC4gIEZpZWxkcyBiZWxvdyBhcmUgemVyb2VkLgorICovCisjZGVmaW5lIEFUQV9ERVZJQ0VfQ0xFQVJfT0ZGU0VUCQlvZmZzZXRvZihzdHJ1Y3QgYXRhX2RldmljZSwgbl9zZWN0b3JzKQorCitzdHJ1Y3QgYXRhX2VoX2luZm8geworCXN0cnVjdCBhdGFfZGV2aWNlCSpkZXY7CQkvKiBvZmZlbmRpbmcgZGV2aWNlICovCisJdTMyCQkJc2Vycm9yOwkJLyogU0Vycm9yIGZyb20gTExERCAqLworCXVuc2lnbmVkIGludAkJZXJyX21hc2s7CS8qIHBvcnQtd2lkZSBlcnJfbWFzayAqLworCXVuc2lnbmVkIGludAkJYWN0aW9uOwkJLyogQVRBX0VIXyogYWN0aW9uIG1hc2sgKi8KKwl1bnNpZ25lZCBpbnQJCWRldl9hY3Rpb25bQVRBX01BWF9ERVZJQ0VTXTsgLyogZGV2IEVIIGFjdGlvbiAqLworCXVuc2lnbmVkIGludAkJZmxhZ3M7CQkvKiBBVEFfRUhJXyogZmxhZ3MgKi8KKworCXVuc2lnbmVkIGxvbmcJCWhvdHBsdWdfdGltZXN0YW1wOworCXVuc2lnbmVkIGludAkJcHJvYmVfbWFzazsKKworCWNoYXIJCQlkZXNjW0FUQV9FSF9ERVNDX0xFTl07CisJaW50CQkJZGVzY19sZW47Cit9OworCitzdHJ1Y3QgYXRhX2VoX2NvbnRleHQgeworCXN0cnVjdCBhdGFfZWhfaW5mbwlpOworCWludAkJCXRyaWVzW0FUQV9NQVhfREVWSUNFU107CisJdW5zaWduZWQgaW50CQljbGFzc2VzW0FUQV9NQVhfREVWSUNFU107CisJdW5zaWduZWQgaW50CQlkaWRfcHJvYmVfbWFzazsKIH07CiAKIHN0cnVjdCBhdGFfcG9ydCB7CiAJc3RydWN0IFNjc2lfSG9zdAkqaG9zdDsJLyogb3VyIGNvLWFsbG9jYXRlZCBzY3NpIGhvc3QgKi8KIAljb25zdCBzdHJ1Y3QgYXRhX3BvcnRfb3BlcmF0aW9ucyAqb3BzOworCXNwaW5sb2NrX3QJCSpsb2NrOwogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwkvKiBBVEFfRkxBR194eHggKi8KIAl1bnNpZ25lZCBpbnQJCWlkOwkvKiB1bmlxdWUgaWQgcmVxJ2QgYnkgc2NzaSBtaWRseXIgKi8KIAl1bnNpZ25lZCBpbnQJCXBvcnRfbm87IC8qIHVuaXF1ZSBwb3J0ICM7IGZyb20gemVybyAqLwpAQCAtMzk3LDI2ICs1MDMsNDAgQEAKIAl1bnNpZ25lZCBpbnQJCW13ZG1hX21hc2s7CiAJdW5zaWduZWQgaW50CQl1ZG1hX21hc2s7CiAJdW5zaWduZWQgaW50CQljYmw7CS8qIGNhYmxlIHR5cGU7IEFUQV9DQkxfeHh4ICovCisJdW5zaWduZWQgaW50CQlod19zYXRhX3NwZF9saW1pdDsKKwl1bnNpZ25lZCBpbnQJCXNhdGFfc3BkX2xpbWl0OwkvKiBTQVRBIFBIWSBzcGVlZCBsaW1pdCAqLworCisJLyogcmVjb3JkIHJ1bnRpbWUgZXJyb3IgaW5mbywgcHJvdGVjdGVkIGJ5IGhvc3Rfc2V0IGxvY2sgKi8KKwlzdHJ1Y3QgYXRhX2VoX2luZm8JZWhfaW5mbzsKKwkvKiBFSCBjb250ZXh0IG93bmVkIGJ5IEVIICovCisJc3RydWN0IGF0YV9laF9jb250ZXh0CWVoX2NvbnRleHQ7CiAKIAlzdHJ1Y3QgYXRhX2RldmljZQlkZXZpY2VbQVRBX01BWF9ERVZJQ0VTXTsKIAogCXN0cnVjdCBhdGFfcXVldWVkX2NtZAlxY21kW0FUQV9NQVhfUVVFVUVdOwotCXVuc2lnbmVkIGxvbmcJCXFhY3RpdmU7CisJdW5zaWduZWQgbG9uZwkJcWNfYWxsb2NhdGVkOworCXVuc2lnbmVkIGludAkJcWNfYWN0aXZlOworCiAJdW5zaWduZWQgaW50CQlhY3RpdmVfdGFnOworCXUzMgkJCXNhY3RpdmU7CiAKIAlzdHJ1Y3QgYXRhX2hvc3Rfc3RhdHMJc3RhdHM7CiAJc3RydWN0IGF0YV9ob3N0X3NldAkqaG9zdF9zZXQ7CiAJc3RydWN0IGRldmljZSAJCSpkZXY7CiAKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJcG9ydF90YXNrOworCXN0cnVjdCB3b3JrX3N0cnVjdAlob3RwbHVnX3Rhc2s7CisJc3RydWN0IHdvcmtfc3RydWN0CXNjc2lfcmVzY2FuX3Rhc2s7CiAKIAl1bnNpZ25lZCBpbnQJCWhzbV90YXNrX3N0YXRlOwotCXVuc2lnbmVkIGxvbmcJCXBpb190YXNrX3RpbWVvdXQ7CiAKIAl1MzIJCQltc2dfZW5hYmxlOwogCXN0cnVjdCBsaXN0X2hlYWQJZWhfZG9uZV9xOworCXdhaXRfcXVldWVfaGVhZF90CWVoX3dhaXRfcTsKIAogCXZvaWQJCQkqcHJpdmF0ZV9kYXRhOworCisJdTgJCQlzZWN0b3JfYnVmW0FUQV9TRUNUX1NJWkVdOyAvKiBvd25lZCBieSBFSCAqLwogfTsKIAogc3RydWN0IGF0YV9wb3J0X29wZXJhdGlvbnMgewpAQCAtNDM4LDcgKzU1OCw2IEBACiAKIAl2b2lkICgqcGh5X3Jlc2V0KSAoc3RydWN0IGF0YV9wb3J0ICphcCk7IC8qIG9ic29sZXRlICovCiAJdm9pZCAoKnNldF9tb2RlKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7Ci0JaW50ICgqcHJvYmVfcmVzZXQpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpOwogCiAJdm9pZCAoKnBvc3Rfc2V0X21vZGUpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIApAQCAtNDQ3LDEwICs1NjYsMjAgQEAKIAl2b2lkICgqYm1kbWFfc2V0dXApIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIAl2b2lkICgqYm1kbWFfc3RhcnQpIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIAorCXZvaWQgKCpkYXRhX3hmZXIpIChzdHJ1Y3QgYXRhX2RldmljZSAqLCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCwgaW50KTsKKwogCXZvaWQgKCpxY19wcmVwKSAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiAJdW5zaWduZWQgaW50ICgqcWNfaXNzdWUpIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIAotCXZvaWQgKCplbmdfdGltZW91dCkgKHN0cnVjdCBhdGFfcG9ydCAqYXApOworCS8qIEVycm9yIGhhbmRsZXJzLiAgLT5lcnJvcl9oYW5kbGVyIG92ZXJyaWRlcyAtPmVuZ190aW1lb3V0IGFuZAorCSAqIGluZGljYXRlcyB0aGF0IG5ldy1zdHlsZSBFSCBpcyBpbiBwbGFjZS4KKwkgKi8KKwl2b2lkICgqZW5nX3RpbWVvdXQpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsgLyogb2Jzb2xldGUgKi8KKworCXZvaWQgKCpmcmVlemUpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKKwl2b2lkICgqdGhhdykgKHN0cnVjdCBhdGFfcG9ydCAqYXApOworCXZvaWQgKCplcnJvcl9oYW5kbGVyKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CisJdm9pZCAoKnBvc3RfaW50ZXJuYWxfY21kKSAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiAKIAlpcnFyZXR1cm5fdCAoKmlycV9oYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiAJdm9pZCAoKmlycV9jbGVhcikgKHN0cnVjdCBhdGFfcG9ydCAqKTsKQEAgLTQ5MiwyMiArNjIxLDIyIEBACiAKICNkZWZpbmUgRklUKHYsdm1pbix2bWF4KQltYXhfdChzaG9ydCxtaW5fdChzaG9ydCx2LHZtYXgpLHZtaW4pCiAKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nIHNhdGFfZGViX3RpbWluZ19ib290W107CitleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBzYXRhX2RlYl90aW1pbmdfZWhbXTsKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nIHNhdGFfZGViX3RpbWluZ19iZWZvcmVfZnNyc3RbXTsKKwogZXh0ZXJuIHZvaWQgYXRhX3BvcnRfcHJvYmUoc3RydWN0IGF0YV9wb3J0ICopOwogZXh0ZXJuIHZvaWQgX19zYXRhX3BoeV9yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIGV4dGVybiB2b2lkIHNhdGFfcGh5X3Jlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXApOwogZXh0ZXJuIHZvaWQgYXRhX2J1c19yZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKLWV4dGVybiBpbnQgYXRhX2RyaXZlX3Byb2JlX3Jlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsCi0JCQlhdGFfcHJvYmVpbml0X2ZuX3QgcHJvYmVpbml0LAotCQkJYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LCBhdGFfcmVzZXRfZm5fdCBoYXJkcmVzZXQsCi0JCQlhdGFfcG9zdHJlc2V0X2ZuX3QgcG9zdHJlc2V0LCB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpOwotZXh0ZXJuIHZvaWQgYXRhX3N0ZF9wcm9iZWluaXQoc3RydWN0IGF0YV9wb3J0ICphcCk7Ci1leHRlcm4gaW50IGF0YV9zdGRfc29mdHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCB2ZXJib3NlLAotCQkJICAgICB1bnNpZ25lZCBpbnQgKmNsYXNzZXMpOwotZXh0ZXJuIGludCBzYXRhX3N0ZF9oYXJkcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHZlcmJvc2UsCi0JCQkgICAgICB1bnNpZ25lZCBpbnQgKmNsYXNzKTsKK2V4dGVybiBpbnQgc2F0YV9zZXRfc3BkKHN0cnVjdCBhdGFfcG9ydCAqYXApOworZXh0ZXJuIGludCBzYXRhX3BoeV9kZWJvdW5jZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBjb25zdCB1bnNpZ25lZCBsb25nICpwYXJhbSk7CitleHRlcm4gaW50IHNhdGFfcGh5X3Jlc3VtZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBjb25zdCB1bnNpZ25lZCBsb25nICpwYXJhbSk7CitleHRlcm4gaW50IGF0YV9zdGRfcHJlcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gaW50IGF0YV9zdGRfc29mdHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCAqY2xhc3Nlcyk7CitleHRlcm4gaW50IHNhdGFfc3RkX2hhcmRyZXNldChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgKmNsYXNzKTsKIGV4dGVybiB2b2lkIGF0YV9zdGRfcG9zdHJlc2V0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCAqY2xhc3Nlcyk7Ci1leHRlcm4gaW50IGF0YV9kZXZfcmV2YWxpZGF0ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2LAotCQkJICAgICAgaW50IHBvc3RfcmVzZXQpOworZXh0ZXJuIGludCBhdGFfZGV2X3JldmFsaWRhdGUoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgaW50IHBvc3RfcmVzZXQpOwogZXh0ZXJuIHZvaWQgYXRhX3BvcnRfZGlzYWJsZShzdHJ1Y3QgYXRhX3BvcnQgKik7CiBleHRlcm4gdm9pZCBhdGFfc3RkX3BvcnRzKHN0cnVjdCBhdGFfaW9wb3J0cyAqaW9hZGRyKTsKICNpZmRlZiBDT05GSUdfUENJCkBAIC01MTksMjQgKzY0OCwzMiBAQAogZXh0ZXJuIGludCBhdGFfcGNpX2NsZWFyX3NpbXBsZXgoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8KIGV4dGVybiBpbnQgYXRhX2RldmljZV9hZGQoY29uc3Qgc3RydWN0IGF0YV9wcm9iZV9lbnQgKmVudCk7CitleHRlcm4gdm9pZCBhdGFfcG9ydF9kZXRhY2goc3RydWN0IGF0YV9wb3J0ICphcCk7CiBleHRlcm4gdm9pZCBhdGFfaG9zdF9zZXRfcmVtb3ZlKHN0cnVjdCBhdGFfaG9zdF9zZXQgKmhvc3Rfc2V0KTsKIGV4dGVybiBpbnQgYXRhX3Njc2lfZGV0ZWN0KHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgKnNodCk7CiBleHRlcm4gaW50IGF0YV9zY3NpX2lvY3RsKHN0cnVjdCBzY3NpX2RldmljZSAqZGV2LCBpbnQgY21kLCB2b2lkIF9fdXNlciAqYXJnKTsKIGV4dGVybiBpbnQgYXRhX3Njc2lfcXVldWVjbWQoc3RydWN0IHNjc2lfY21uZCAqY21kLCB2b2lkICgqZG9uZSkoc3RydWN0IHNjc2lfY21uZCAqKSk7Ci1leHRlcm4gdm9pZCBhdGFfZWhfcWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7Ci1leHRlcm4gdm9pZCBhdGFfZWhfcWNfcmV0cnkoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiBleHRlcm4gaW50IGF0YV9zY3NpX3JlbGVhc2Uoc3RydWN0IFNjc2lfSG9zdCAqaG9zdCk7CiBleHRlcm4gdW5zaWduZWQgaW50IGF0YV9ob3N0X2ludHIoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CitleHRlcm4gaW50IHNhdGFfc2NyX3ZhbGlkKHN0cnVjdCBhdGFfcG9ydCAqYXApOworZXh0ZXJuIGludCBzYXRhX3Njcl9yZWFkKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCByZWcsIHUzMiAqdmFsKTsKK2V4dGVybiBpbnQgc2F0YV9zY3Jfd3JpdGUoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHJlZywgdTMyIHZhbCk7CitleHRlcm4gaW50IHNhdGFfc2NyX3dyaXRlX2ZsdXNoKHN0cnVjdCBhdGFfcG9ydCAqYXAsIGludCByZWcsIHUzMiB2YWwpOworZXh0ZXJuIGludCBhdGFfcG9ydF9vbmxpbmUoc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gaW50IGF0YV9wb3J0X29mZmxpbmUoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBleHRlcm4gaW50IGF0YV9zY3NpX2RldmljZV9yZXN1bWUoc3RydWN0IHNjc2lfZGV2aWNlICopOwogZXh0ZXJuIGludCBhdGFfc2NzaV9kZXZpY2Vfc3VzcGVuZChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKLWV4dGVybiBpbnQgYXRhX2RldmljZV9yZXN1bWUoc3RydWN0IGF0YV9wb3J0ICosIHN0cnVjdCBhdGFfZGV2aWNlICopOwotZXh0ZXJuIGludCBhdGFfZGV2aWNlX3N1c3BlbmQoc3RydWN0IGF0YV9wb3J0ICosIHN0cnVjdCBhdGFfZGV2aWNlICosIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CitleHRlcm4gaW50IGF0YV9kZXZpY2VfcmVzdW1lKHN0cnVjdCBhdGFfZGV2aWNlICopOworZXh0ZXJuIGludCBhdGFfZGV2aWNlX3N1c3BlbmQoc3RydWN0IGF0YV9kZXZpY2UgKiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKIGV4dGVybiBpbnQgYXRhX3JhdGVsaW1pdCh2b2lkKTsKIGV4dGVybiB1bnNpZ25lZCBpbnQgYXRhX2J1c3lfc2xlZXAoc3RydWN0IGF0YV9wb3J0ICphcCwKIAkJCQkgICB1bnNpZ25lZCBsb25nIHRpbWVvdXRfcGF0LAogCQkJCSAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiBleHRlcm4gdm9pZCBhdGFfcG9ydF9xdWV1ZV90YXNrKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHZvaWQgKCpmbikodm9pZCAqKSwKIAkJCQl2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIGRlbGF5KTsKK2V4dGVybiB1MzIgYXRhX3dhaXRfcmVnaXN0ZXIodm9pZCBfX2lvbWVtICpyZWcsIHUzMiBtYXNrLCB1MzIgdmFsLAorCQkJICAgICB1bnNpZ25lZCBsb25nIGludGVydmFsX21zZWMsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dF9tc2VjKTsKIAogLyoKICAqIERlZmF1bHQgZHJpdmVyIG9wcyBpbXBsZW1lbnRhdGlvbnMKQEAgLTU1MCwxMSArNjg3LDE2IEBACiBleHRlcm4gdTggYXRhX2NoZWNrX3N0YXR1cyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKIGV4dGVybiB1OCBhdGFfYWx0c3RhdHVzKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogZXh0ZXJuIHZvaWQgYXRhX2V4ZWNfY29tbWFuZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBjb25zdCBzdHJ1Y3QgYXRhX3Rhc2tmaWxlICp0Zik7Ci1leHRlcm4gaW50IGF0YV9zdGRfcHJvYmVfcmVzZXQoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50ICpjbGFzc2VzKTsKIGV4dGVybiBpbnQgYXRhX3BvcnRfc3RhcnQgKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogZXh0ZXJuIHZvaWQgYXRhX3BvcnRfc3RvcCAoc3RydWN0IGF0YV9wb3J0ICphcCk7CiBleHRlcm4gdm9pZCBhdGFfaG9zdF9zdG9wIChzdHJ1Y3QgYXRhX2hvc3Rfc2V0ICpob3N0X3NldCk7CiBleHRlcm4gaXJxcmV0dXJuX3QgYXRhX2ludGVycnVwdCAoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitleHRlcm4gdm9pZCBhdGFfbW1pb19kYXRhX3hmZXIoc3RydWN0IGF0YV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgYnVmbGVuLCBpbnQgd3JpdGVfZGF0YSk7CitleHRlcm4gdm9pZCBhdGFfcGlvX2RhdGFfeGZlcihzdHJ1Y3QgYXRhX2RldmljZSAqYWRldiwgdW5zaWduZWQgY2hhciAqYnVmLAorCQkJICAgICAgdW5zaWduZWQgaW50IGJ1ZmxlbiwgaW50IHdyaXRlX2RhdGEpOworZXh0ZXJuIHZvaWQgYXRhX3Bpb19kYXRhX3hmZXJfbm9pcnEoc3RydWN0IGF0YV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBidWZsZW4sIGludCB3cml0ZV9kYXRhKTsKIGV4dGVybiB2b2lkIGF0YV9xY19wcmVwKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwogZXh0ZXJuIHZvaWQgYXRhX25vb3BfcWNfcHJlcChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKIGV4dGVybiB1bnNpZ25lZCBpbnQgYXRhX3FjX2lzc3VlX3Byb3Qoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CkBAIC01NzIsMTcgKzcxNCwyOSBAQAogZXh0ZXJuIHZvaWQgYXRhX2JtZG1hX3N0b3Aoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CiBleHRlcm4gdTggICBhdGFfYm1kbWFfc3RhdHVzKHN0cnVjdCBhdGFfcG9ydCAqYXApOwogZXh0ZXJuIHZvaWQgYXRhX2JtZG1hX2lycV9jbGVhcihzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKLWV4dGVybiB2b2lkIF9fYXRhX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOwotZXh0ZXJuIHZvaWQgYXRhX2VuZ190aW1lb3V0KHN0cnVjdCBhdGFfcG9ydCAqYXApOwotZXh0ZXJuIHZvaWQgYXRhX3Njc2lfc2ltdWxhdGUoc3RydWN0IGF0YV9wb3J0ICphcCwgc3RydWN0IGF0YV9kZXZpY2UgKmRldiwKLQkJCSAgICAgIHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKK2V4dGVybiB2b2lkIGF0YV9ibWRtYV9mcmVlemUoc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gdm9pZCBhdGFfYm1kbWFfdGhhdyhzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK2V4dGVybiB2b2lkIGF0YV9ibWRtYV9kcml2ZV9laChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBhdGFfcHJlcmVzZXRfZm5fdCBwcmVyZXNldCwKKwkJCSAgICAgICBhdGFfcmVzZXRfZm5fdCBzb2Z0cmVzZXQsCisJCQkgICAgICAgYXRhX3Jlc2V0X2ZuX3QgaGFyZHJlc2V0LAorCQkJICAgICAgIGF0YV9wb3N0cmVzZXRfZm5fdCBwb3N0cmVzZXQpOworZXh0ZXJuIHZvaWQgYXRhX2JtZG1hX2Vycm9yX2hhbmRsZXIoc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gdm9pZCBhdGFfYm1kbWFfcG9zdF9pbnRlcm5hbF9jbWQoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CitleHRlcm4gaW50IGF0YV9oc21fbW92ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjLAorCQkJdTggc3RhdHVzLCBpbnQgaW5fd3EpOworZXh0ZXJuIHZvaWQgYXRhX3FjX2NvbXBsZXRlKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOworZXh0ZXJuIGludCBhdGFfcWNfY29tcGxldGVfbXVsdGlwbGUoc3RydWN0IGF0YV9wb3J0ICphcCwgdTMyIHFjX2FjdGl2ZSwKKwkJCQkgICAgdm9pZCAoKmZpbmlzaF9xYykoc3RydWN0IGF0YV9xdWV1ZWRfY21kICopKTsKK2V4dGVybiB2b2lkIGF0YV9zY3NpX3NpbXVsYXRlKHN0cnVjdCBhdGFfZGV2aWNlICpkZXYsIHN0cnVjdCBzY3NpX2NtbmQgKmNtZCwKIAkJCSAgICAgIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKTsKIGV4dGVybiBpbnQgYXRhX3N0ZF9iaW9zX3BhcmFtKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwKIAkJCSAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAJCQkgICAgICBzZWN0b3JfdCBjYXBhY2l0eSwgaW50IGdlb21bXSk7CiBleHRlcm4gaW50IGF0YV9zY3NpX3NsYXZlX2NvbmZpZyhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpOwotZXh0ZXJuIHN0cnVjdCBhdGFfZGV2aWNlICphdGFfZGV2X3BhaXIoc3RydWN0IGF0YV9wb3J0ICphcCwgCi0JCQkJICAgICAgIHN0cnVjdCBhdGFfZGV2aWNlICphZGV2KTsKK2V4dGVybiB2b2lkIGF0YV9zY3NpX3NsYXZlX2Rlc3Ryb3koc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KTsKK2V4dGVybiBpbnQgYXRhX3Njc2lfY2hhbmdlX3F1ZXVlX2RlcHRoKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldiwKKwkJCQkgICAgICAgaW50IHF1ZXVlX2RlcHRoKTsKK2V4dGVybiBzdHJ1Y3QgYXRhX2RldmljZSAqYXRhX2Rldl9wYWlyKHN0cnVjdCBhdGFfZGV2aWNlICphZGV2KTsKIAogLyoKICAqIFRpbWluZyBoZWxwZXJzCkBAIC02MjgsNyArNzgyLDY0IEBACiBleHRlcm4gdW5zaWduZWQgbG9uZyBhdGFfcGNpX2RlZmF1bHRfZmlsdGVyKGNvbnN0IHN0cnVjdCBhdGFfcG9ydCAqLCBzdHJ1Y3QgYXRhX2RldmljZSAqLCB1bnNpZ25lZCBsb25nKTsKICNlbmRpZiAvKiBDT05GSUdfUENJICovCiAKKy8qCisgKiBFSAorICovCitleHRlcm4gdm9pZCBhdGFfZW5nX3RpbWVvdXQoc3RydWN0IGF0YV9wb3J0ICphcCk7CiAKK2V4dGVybiB2b2lkIGF0YV9wb3J0X3NjaGVkdWxlX2VoKHN0cnVjdCBhdGFfcG9ydCAqYXApOworZXh0ZXJuIGludCBhdGFfcG9ydF9hYm9ydChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK2V4dGVybiBpbnQgYXRhX3BvcnRfZnJlZXplKHN0cnVjdCBhdGFfcG9ydCAqYXApOworCitleHRlcm4gdm9pZCBhdGFfZWhfZnJlZXplX3BvcnQoc3RydWN0IGF0YV9wb3J0ICphcCk7CitleHRlcm4gdm9pZCBhdGFfZWhfdGhhd19wb3J0KHN0cnVjdCBhdGFfcG9ydCAqYXApOworCitleHRlcm4gdm9pZCBhdGFfZWhfcWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CitleHRlcm4gdm9pZCBhdGFfZWhfcWNfcmV0cnkoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CisKK2V4dGVybiB2b2lkIGF0YV9kb19laChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBhdGFfcHJlcmVzZXRfZm5fdCBwcmVyZXNldCwKKwkJICAgICAgYXRhX3Jlc2V0X2ZuX3Qgc29mdHJlc2V0LCBhdGFfcmVzZXRfZm5fdCBoYXJkcmVzZXQsCisJCSAgICAgIGF0YV9wb3N0cmVzZXRfZm5fdCBwb3N0cmVzZXQpOworCisvKgorICogcHJpbnRrIGhlbHBlcnMKKyAqLworI2RlZmluZSBhdGFfcG9ydF9wcmludGsoYXAsIGx2LCBmbXQsIGFyZ3MuLi4pIFwKKwlwcmludGsobHYiYXRhJXU6ICJmbXQsIChhcCktPmlkICwgIyNhcmdzKQorCisjZGVmaW5lIGF0YV9kZXZfcHJpbnRrKGRldiwgbHYsIGZtdCwgYXJncy4uLikgXAorCXByaW50ayhsdiJhdGEldS4lMDJ1OiAiZm10LCAoZGV2KS0+YXAtPmlkLCAoZGV2KS0+ZGV2bm8gLCAjI2FyZ3MpCisKKy8qCisgKiBhdGFfZWhfaW5mbyBoZWxwZXJzCisgKi8KKyNkZWZpbmUgYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCBmbXQsIGFyZ3MuLi4pIGRvIHsgXAorCShlaGkpLT5kZXNjX2xlbiArPSBzY25wcmludGYoKGVoaSktPmRlc2MgKyAoZWhpKS0+ZGVzY19sZW4sIFwKKwkJCQkgICAgIEFUQV9FSF9ERVNDX0xFTiAtIChlaGkpLT5kZXNjX2xlbiwgXAorCQkJCSAgICAgZm10ICwgIyNhcmdzKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBhdGFfZWhpX2NsZWFyX2Rlc2MoZWhpKSBkbyB7IFwKKwkoZWhpKS0+ZGVzY1swXSA9ICdcMCc7IFwKKwkoZWhpKS0+ZGVzY19sZW4gPSAwOyBcCit9IHdoaWxlICgwKQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXRhX2VoaV9ob3RwbHVnZ2VkKHN0cnVjdCBhdGFfZWhfaW5mbyAqZWhpKQoreworCWlmIChlaGktPmZsYWdzICYgQVRBX0VISV9IT1RQTFVHR0VEKQorCQlyZXR1cm47CisKKwllaGktPmZsYWdzIHw9IEFUQV9FSElfSE9UUExVR0dFRDsKKwllaGktPmhvdHBsdWdfdGltZXN0YW1wID0gamlmZmllczsKKworCWVoaS0+ZXJyX21hc2sgfD0gQUNfRVJSX0FUQV9CVVM7CisJZWhpLT5hY3Rpb24gfD0gQVRBX0VIX1NPRlRSRVNFVDsKKwllaGktPnByb2JlX21hc2sgfD0gKDEgPDwgQVRBX01BWF9ERVZJQ0VTKSAtIDE7Cit9CisKKy8qCisgKiBxYyBoZWxwZXJzCisgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiBhdGFfc2dfaXNfbGFzdChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKQogewpAQCAtNjcxLDE0ICs4ODIsMzkgQEAKIAlyZXR1cm4gKHRhZyA8IEFUQV9NQVhfUVVFVUUpID8gMSA6IDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9jbGFzc19wcmVzZW50KHVuc2lnbmVkIGludCBjbGFzcykKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV90YWdfaW50ZXJuYWwodW5zaWduZWQgaW50IHRhZykKK3sKKwlyZXR1cm4gdGFnID09IEFUQV9NQVhfUVVFVUUgLSAxOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhdGFfY2xhc3NfZW5hYmxlZCh1bnNpZ25lZCBpbnQgY2xhc3MpCiB7CiAJcmV0dXJuIGNsYXNzID09IEFUQV9ERVZfQVRBIHx8IGNsYXNzID09IEFUQV9ERVZfQVRBUEk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9kZXZfcHJlc2VudChjb25zdCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYXRhX2NsYXNzX2Rpc2FibGVkKHVuc2lnbmVkIGludCBjbGFzcykKIHsKLQlyZXR1cm4gYXRhX2NsYXNzX3ByZXNlbnQoZGV2LT5jbGFzcyk7CisJcmV0dXJuIGNsYXNzID09IEFUQV9ERVZfQVRBX1VOU1VQIHx8IGNsYXNzID09IEFUQV9ERVZfQVRBUElfVU5TVVA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9jbGFzc19hYnNlbnQodW5zaWduZWQgaW50IGNsYXNzKQoreworCXJldHVybiAhYXRhX2NsYXNzX2VuYWJsZWQoY2xhc3MpICYmICFhdGFfY2xhc3NfZGlzYWJsZWQoY2xhc3MpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhdGFfZGV2X2VuYWJsZWQoY29uc3Qgc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gYXRhX2NsYXNzX2VuYWJsZWQoZGV2LT5jbGFzcyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGF0YV9kZXZfZGlzYWJsZWQoY29uc3Qgc3RydWN0IGF0YV9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gYXRhX2NsYXNzX2Rpc2FibGVkKGRldi0+Y2xhc3MpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhdGFfZGV2X2Fic2VudChjb25zdCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQoreworCXJldHVybiBhdGFfY2xhc3NfYWJzZW50KGRldi0+Y2xhc3MpOwogfQogCiBzdGF0aWMgaW5saW5lIHU4IGF0YV9jaGtfc3RhdHVzKHN0cnVjdCBhdGFfcG9ydCAqYXApCkBAIC03NTksMjAgKzk5NSwzNSBAQAogCXFjLT50Zi5jdGwgfD0gQVRBX05JRU47CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGF0YV9xdWV1ZWRfY21kICphdGFfcWNfZnJvbV90YWcgKHN0cnVjdCBhdGFfcG9ydCAqYXAsCi0JCQkJCQkgICAgICB1bnNpZ25lZCBpbnQgdGFnKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKl9fYXRhX3FjX2Zyb21fdGFnKHN0cnVjdCBhdGFfcG9ydCAqYXAsCisJCQkJCQkgICAgICAgdW5zaWduZWQgaW50IHRhZykKIHsKIAlpZiAobGlrZWx5KGF0YV90YWdfdmFsaWQodGFnKSkpCiAJCXJldHVybiAmYXAtPnFjbWRbdGFnXTsKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGF0YV90Zl9pbml0KHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmLCB1bnNpZ25lZCBpbnQgZGV2aWNlKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKmF0YV9xY19mcm9tX3RhZyhzdHJ1Y3QgYXRhX3BvcnQgKmFwLAorCQkJCQkJICAgICB1bnNpZ25lZCBpbnQgdGFnKQoreworCXN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMgPSBfX2F0YV9xY19mcm9tX3RhZyhhcCwgdGFnKTsKKworCWlmICh1bmxpa2VseSghcWMpIHx8ICFhcC0+b3BzLT5lcnJvcl9oYW5kbGVyKQorCQlyZXR1cm4gcWM7CisKKwlpZiAoKHFjLT5mbGFncyAmIChBVEFfUUNGTEFHX0FDVElWRSB8CisJCQkgIEFUQV9RQ0ZMQUdfRkFJTEVEKSkgPT0gQVRBX1FDRkxBR19BQ1RJVkUpCisJCXJldHVybiBxYzsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXRhX3RmX2luaXQoc3RydWN0IGF0YV9kZXZpY2UgKmRldiwgc3RydWN0IGF0YV90YXNrZmlsZSAqdGYpCiB7CiAJbWVtc2V0KHRmLCAwLCBzaXplb2YoKnRmKSk7CiAKLQl0Zi0+Y3RsID0gYXAtPmN0bDsKLQlpZiAoZGV2aWNlID09IDApCisJdGYtPmN0bCA9IGRldi0+YXAtPmN0bDsKKwlpZiAoZGV2LT5kZXZubyA9PSAwKQogCQl0Zi0+ZGV2aWNlID0gQVRBX0RFVklDRV9PQlM7CiAJZWxzZQogCQl0Zi0+ZGV2aWNlID0gQVRBX0RFVklDRV9PQlMgfCBBVEFfREVWMTsKQEAgLTc4NywyNiArMTAzOCwxMSBAQAogCXFjLT5uYnl0ZXMgPSBxYy0+Y3VyYnl0ZXMgPSAwOwogCXFjLT5lcnJfbWFzayA9IDA7CiAKLQlhdGFfdGZfaW5pdChxYy0+YXAsICZxYy0+dGYsIHFjLT5kZXYtPmRldm5vKTsKLX0KKwlhdGFfdGZfaW5pdChxYy0+ZGV2LCAmcWMtPnRmKTsKIAotLyoqCi0gKglhdGFfcWNfY29tcGxldGUgLSBDb21wbGV0ZSBhbiBhY3RpdmUgQVRBIGNvbW1hbmQKLSAqCUBxYzogQ29tbWFuZCB0byBjb21wbGV0ZQotICoJQGVycl9tYXNrOiBBVEEgU3RhdHVzIHJlZ2lzdGVyIGNvbnRlbnRzCi0gKgotICoJSW5kaWNhdGUgdG8gdGhlIG1pZCBhbmQgdXBwZXIgbGF5ZXJzIHRoYXQgYW4gQVRBCi0gKgljb21tYW5kIGhhcyBjb21wbGV0ZWQsIHdpdGggZWl0aGVyIGFuIG9rIG9yIG5vdC1vayBzdGF0dXMuCi0gKgotICoJTE9DS0lORzoKLSAqCXNwaW5fbG9ja19pcnFzYXZlKGhvc3Rfc2V0IGxvY2spCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBhdGFfcWNfY29tcGxldGUoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKLXsKLQlpZiAodW5saWtlbHkocWMtPmZsYWdzICYgQVRBX1FDRkxBR19FSF9TQ0hFRFVMRUQpKQotCQlyZXR1cm47Ci0KLQlfX2F0YV9xY19jb21wbGV0ZShxYyk7CisJLyogaW5pdCByZXN1bHRfdGYgc3VjaCB0aGF0IGl0IGluZGljYXRlcyBub3JtYWwgY29tcGxldGlvbiAqLworCXFjLT5yZXN1bHRfdGYuY29tbWFuZCA9IEFUQV9EUkRZOworCXFjLT5yZXN1bHRfdGYuZmVhdHVyZSA9IDA7CiB9CiAKIC8qKgpAQCAtODg1LDI4ICsxMTIxLDYgQEAKIAlyZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW5saW5lIHUzMiBzY3JfcmVhZChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgcmVnKQotewotCXJldHVybiBhcC0+b3BzLT5zY3JfcmVhZChhcCwgcmVnKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHNjcl93cml0ZShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgcmVnLCB1MzIgdmFsKQotewotCWFwLT5vcHMtPnNjcl93cml0ZShhcCwgcmVnLCB2YWwpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2NyX3dyaXRlX2ZsdXNoKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCByZWcsCi0JCQkJICAgdTMyIHZhbCkKLXsKLQlhcC0+b3BzLT5zY3Jfd3JpdGUoYXAsIHJlZywgdmFsKTsKLQkodm9pZCkgYXAtPm9wcy0+c2NyX3JlYWQoYXAsIHJlZyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNhdGFfZGV2X3ByZXNlbnQoc3RydWN0IGF0YV9wb3J0ICphcCkKLXsKLQlyZXR1cm4gKChzY3JfcmVhZChhcCwgU0NSX1NUQVRVUykgJiAweGYpID09IDB4MykgPyAxIDogMDsKLX0KLQogc3RhdGljIGlubGluZSBpbnQgYXRhX3RyeV9mbHVzaF9jYWNoZShjb25zdCBzdHJ1Y3QgYXRhX2RldmljZSAqZGV2KQogewogCXJldHVybiBhdGFfaWRfd2NhY2hlX2VuYWJsZWQoZGV2LT5pZCkgfHwKQEAgLTkxNiw3ICsxMTMwLDcgQEAKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYWNfZXJyX21hc2sodTggc3RhdHVzKQogewotCWlmIChzdGF0dXMgJiBBVEFfQlVTWSkKKwlpZiAoc3RhdHVzICYgKEFUQV9CVVNZIHwgQVRBX0RSUSkpCiAJCXJldHVybiBBQ19FUlJfSFNNOwogCWlmIChzdGF0dXMgJiAoQVRBX0VSUiB8IEFUQV9ERikpCiAJCXJldHVybiBBQ19FUlJfREVWOwpAQCAtOTQ0LDQgKzExNTgsOSBAQAogCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgQVRBX0RNQV9QQURfQlVGX1NaLCBhcC0+cGFkLCBhcC0+cGFkX2RtYSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGF0YV9wb3J0ICphdGFfc2hvc3RfdG9fcG9ydChzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0KQoreworCXJldHVybiAoc3RydWN0IGF0YV9wb3J0ICopICZob3N0LT5ob3N0ZGF0YVswXTsKK30KKwogI2VuZGlmIC8qIF9fTElOVVhfTElCQVRBX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saXN0LmggYi9pbmNsdWRlL2xpbnV4L2xpc3QuaAppbmRleCA3NmYwNTcxLi5hMDI2NDJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xpc3QuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpc3QuaApAQCAtMTk3LDEyICsxOTcsMzUgQEAKIAllbnRyeS0+cHJldiA9IExJU1RfUE9JU09OMjsKIH0KIAorLyoqCisgKiBsaXN0X3JlcGxhY2UgLSByZXBsYWNlIG9sZCBlbnRyeSBieSBuZXcgb25lCisgKiBAb2xkIDogdGhlIGVsZW1lbnQgdG8gYmUgcmVwbGFjZWQKKyAqIEBuZXcgOiB0aGUgbmV3IGVsZW1lbnQgdG8gaW5zZXJ0CisgKiBOb3RlOiBpZiAnb2xkJyB3YXMgZW1wdHksIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3JlcGxhY2Uoc3RydWN0IGxpc3RfaGVhZCAqb2xkLAorCQkJCXN0cnVjdCBsaXN0X2hlYWQgKm5ldykKK3sKKwluZXctPm5leHQgPSBvbGQtPm5leHQ7CisJbmV3LT5uZXh0LT5wcmV2ID0gbmV3OworCW5ldy0+cHJldiA9IG9sZC0+cHJldjsKKwluZXctPnByZXYtPm5leHQgPSBuZXc7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3JlcGxhY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpvbGQsCisJCQkJCXN0cnVjdCBsaXN0X2hlYWQgKm5ldykKK3sKKwlsaXN0X3JlcGxhY2Uob2xkLCBuZXcpOworCUlOSVRfTElTVF9IRUFEKG9sZCk7Cit9CisKIC8qCiAgKiBsaXN0X3JlcGxhY2VfcmN1IC0gcmVwbGFjZSBvbGQgZW50cnkgYnkgbmV3IG9uZQogICogQG9sZCA6IHRoZSBlbGVtZW50IHRvIGJlIHJlcGxhY2VkCiAgKiBAbmV3IDogdGhlIG5ldyBlbGVtZW50IHRvIGluc2VydAogICoKICAqIFRoZSBvbGQgZW50cnkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBuZXcgZW50cnkgYXRvbWljYWxseS4KKyAqIE5vdGU6ICdvbGQnIHNob3VsZCBub3QgYmUgZW1wdHkuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm9sZCwKIAkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L200MXQwMC5oIGIvaW5jbHVkZS9saW51eC9tNDF0MDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDIzMzYwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9tNDF0MDAuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogRGVmaW5pdGlvbnMgZm9yIHRoZSBTVCBNNDFUMDAgZmFtaWx5IG9mIGkyYyBydGMgY2hpcHMuCisgKgorICogQXV0aG9yOiBNYXJrIEEuIEdyZWVyIDxtZ3JlZXJAbXZpc3RhLmNvbT4KKyAqCisgKiAyMDA1LCAyMDA2IChjKSBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlcgorICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbQorICogaXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBvZiBhbnkga2luZCwgd2hldGhlciBleHByZXNzCisgKiBvciBpbXBsaWVkLgorICovCisKKyNpZm5kZWYgX000MVQwMF9ICisjZGVmaW5lIF9NNDFUMDBfSAorCisjZGVmaW5lCU00MVQwMF9EUlZfTkFNRQkJIm00MXQwMCIKKyNkZWZpbmUJTTQxVDAwX0kyQ19BRERSCQkweDY4CisKKyNkZWZpbmUJTTQxVDAwX1RZUEVfTTQxVDAwCTAKKyNkZWZpbmUJTTQxVDAwX1RZUEVfTTQxVDgxCTgxCisjZGVmaW5lCU00MVQwMF9UWVBFX000MVQ4NQk4NQorCitzdHJ1Y3QgbTQxdDAwX3BsYXRmb3JtX2RhdGEgeworCXU4CXR5cGU7CisJdTgJaTJjX2FkZHI7CisJdTgJc3F3X2ZyZXE7Cit9OworCisvKiBTUVcgb3V0cHV0IGRpc2FibGVkLCB0aGlzIGlzIGRlZmF1bHQgdmFsdWUgYnkgcG93ZXIgb24gKi8KKyNkZWZpbmUgTTQxVDAwX1NRV19ESVNBQkxFCSgwKQorCisjZGVmaW5lIE00MVQwMF9TUVdfMzJLSFoJKDE8PDQpCQkvKiAzMi43NjggS0h6ICovCisjZGVmaW5lIE00MVQwMF9TUVdfOEtIWgkJKDI8PDQpCQkvKiA4LjE5MiBLSHogKi8KKyNkZWZpbmUgTTQxVDAwX1NRV180S0haCQkoMzw8NCkJCS8qIDQuMDk2IEtIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzJLSFoJCSg0PDw0KQkJLyogMi4wNDggS0h6ICovCisjZGVmaW5lIE00MVQwMF9TUVdfMUtIWgkJKDU8PDQpCQkvKiAxLjAyNCBLSHogKi8KKyNkZWZpbmUgTTQxVDAwX1NRV181MTJIWgkoNjw8NCkJCS8qIDUxMiBIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzI1NkhaCSg3PDw0KQkJLyogMjU2IEh6ICovCisjZGVmaW5lIE00MVQwMF9TUVdfMTI4SFoJKDg8PDQpCQkvKiAxMjggSHogKi8KKyNkZWZpbmUgTTQxVDAwX1NRV182NEhaCQkoOTw8NCkJCS8qIDY0IEh6ICovCisjZGVmaW5lIE00MVQwMF9TUVdfMzJIWgkJKDEwPDw0KQkJLyogMzIgSHogKi8KKyNkZWZpbmUgTTQxVDAwX1NRV18xNkhaCQkoMTE8PDQpCQkvKiAxNiBIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzhIWgkJKDEyPDw0KQkJLyogOCBIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzRIWgkJKDEzPDw0KQkJLyogNCBIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzJIWgkJKDE0PDw0KQkJLyogMiBIeiAqLworI2RlZmluZSBNNDFUMDBfU1FXXzFIWgkJKDE1PDw0KQkJLyogMSBIeiAqLworCitleHRlcm4gdWxvbmcgbTQxdDAwX2dldF9ydGNfdGltZSh2b2lkKTsKK2V4dGVybiBpbnQgbTQxdDAwX3NldF9ydGNfdGltZSh1bG9uZyBub3d0aW1lKTsKKworI2VuZGlmIC8qIF9NNDFUMDBfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9taWdyYXRlLmggYi9pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaAppbmRleCA2Nzg5YzQ5Li41ZGJhMjNhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaApAQCAtMywxNyArMywxNyBAQAogCiAjaW5jbHVkZSA8bGludXgvbW0uaD4KIAordHlwZWRlZiBzdHJ1Y3QgcGFnZSAqbmV3X3BhZ2VfdChzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nIHByaXZhdGUsIGludCAqKik7CisKICNpZmRlZiBDT05GSUdfTUlHUkFUSU9OCiBleHRlcm4gaW50IGlzb2xhdGVfbHJ1X3BhZ2Uoc3RydWN0IHBhZ2UgKnAsIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KTsKIGV4dGVybiBpbnQgcHV0YmFja19scnVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqbCk7Ci1leHRlcm4gaW50IG1pZ3JhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKLWV4dGVybiB2b2lkIG1pZ3JhdGVfcGFnZV9jb3B5KHN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOwotZXh0ZXJuIGludCBtaWdyYXRlX3BhZ2VfcmVtb3ZlX3JlZmVyZW5jZXMoc3RydWN0IHBhZ2UgKiwgc3RydWN0IHBhZ2UgKiwgaW50KTsKLWV4dGVybiBpbnQgbWlncmF0ZV9wYWdlcyhzdHJ1Y3QgbGlzdF9oZWFkICpsLCBzdHJ1Y3QgbGlzdF9oZWFkICp0LAotCQlzdHJ1Y3QgbGlzdF9oZWFkICptb3ZlZCwgc3RydWN0IGxpc3RfaGVhZCAqZmFpbGVkKTsKLWV4dGVybiBpbnQgbWlncmF0ZV9wYWdlc190byhzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlbGlzdCwKLQkJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBpbnQgZGVzdCk7Ci1leHRlcm4gaW50IGZhaWxfbWlncmF0ZV9wYWdlKHN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOworZXh0ZXJuIGludCBtaWdyYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKKwkJCXN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOworZXh0ZXJuIGludCBtaWdyYXRlX3BhZ2VzKHN0cnVjdCBsaXN0X2hlYWQgKmwsIG5ld19wYWdlX3QgeCwgdW5zaWduZWQgbG9uZyk7CisKK2V4dGVybiBpbnQgZmFpbF9taWdyYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKKwkJCXN0cnVjdCBwYWdlICosIHN0cnVjdCBwYWdlICopOwogCiBleHRlcm4gaW50IG1pZ3JhdGVfcHJlcCh2b2lkKTsKIApAQCAtMjIsOCArMjIsOCBAQAogc3RhdGljIGlubGluZSBpbnQgaXNvbGF0ZV9scnVfcGFnZShzdHJ1Y3QgcGFnZSAqcCwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKIAkJCQkJeyByZXR1cm4gLUVOT1NZUzsgfQogc3RhdGljIGlubGluZSBpbnQgcHV0YmFja19scnVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqbCkgeyByZXR1cm4gMDsgfQotc3RhdGljIGlubGluZSBpbnQgbWlncmF0ZV9wYWdlcyhzdHJ1Y3QgbGlzdF9oZWFkICpsLCBzdHJ1Y3QgbGlzdF9oZWFkICp0LAotCXN0cnVjdCBsaXN0X2hlYWQgKm1vdmVkLCBzdHJ1Y3QgbGlzdF9oZWFkICpmYWlsZWQpIHsgcmV0dXJuIC1FTk9TWVM7IH0KK3N0YXRpYyBpbmxpbmUgaW50IG1pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqbCwgbmV3X3BhZ2VfdCB4LAorCQl1bnNpZ25lZCBsb25nIHByaXZhdGUpIHsgcmV0dXJuIC1FTk9TWVM7IH0KIAogc3RhdGljIGlubGluZSBpbnQgbWlncmF0ZV9wYWdlc190byhzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlbGlzdCwKIAkJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBpbnQgZGVzdCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IGUyZmEzNzUuLjNiMDk0NDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTE5OSw2ICsxOTksMTAgQEAKIAl2b2lkICgqY2xvc2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEpOwogCXN0cnVjdCBwYWdlICogKCpub3BhZ2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50ICp0eXBlKTsKIAlpbnQgKCpwb3B1bGF0ZSkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICogYXJlYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIGxlbiwgcGdwcm90X3QgcHJvdCwgdW5zaWduZWQgbG9uZyBwZ29mZiwgaW50IG5vbmJsb2NrKTsKKworCS8qIG5vdGlmaWNhdGlvbiB0aGF0IGEgcHJldmlvdXNseSByZWFkLW9ubHkgcGFnZSBpcyBhYm91dCB0byBiZWNvbWUKKwkgKiB3cml0YWJsZSwgaWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQgaXQgd2lsbCBjYXVzZSBhIFNJR0JVUyAqLworCWludCAoKnBhZ2VfbWt3cml0ZSkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlKTsKICNpZmRlZiBDT05GSUdfTlVNQQogCWludCAoKnNldF9wb2xpY3kpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3QgbWVtcG9saWN5ICpuZXcpOwogCXN0cnVjdCBtZW1wb2xpY3kgKigqZ2V0X3BvbGljeSkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCkBAIC00NjUsMTAgKzQ2OSwxMyBAQAogc3RydWN0IHpvbmU7CiBleHRlcm4gc3RydWN0IHpvbmUgKnpvbmVfdGFibGVbXTsKIAorc3RhdGljIGlubGluZSBpbnQgcGFnZV96b25lX2lkKHN0cnVjdCBwYWdlICpwYWdlKQoreworCXJldHVybiAocGFnZS0+ZmxhZ3MgPj4gWk9ORVRBQkxFX1BHU0hJRlQpICYgWk9ORVRBQkxFX01BU0s7Cit9CiBzdGF0aWMgaW5saW5lIHN0cnVjdCB6b25lICpwYWdlX3pvbmUoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7Ci0JcmV0dXJuIHpvbmVfdGFibGVbKHBhZ2UtPmZsYWdzID4+IFpPTkVUQUJMRV9QR1NISUZUKSAmCi0JCQlaT05FVEFCTEVfTUFTS107CisJcmV0dXJuIHpvbmVfdGFibGVbcGFnZV96b25lX2lkKHBhZ2UpXTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHBhZ2VfdG9fbmlkKHN0cnVjdCBwYWdlICpwYWdlKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaCBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKaW5kZXggOTc0MmUzYy4uZDYxMjBmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0xOTcsNyArMTk3LDcgQEAKIAogCS8qCiAJICogd2FpdF90YWJsZQkJLS0gdGhlIGFycmF5IGhvbGRpbmcgdGhlIGhhc2ggdGFibGUKLQkgKiB3YWl0X3RhYmxlX3NpemUJLS0gdGhlIHNpemUgb2YgdGhlIGhhc2ggdGFibGUgYXJyYXkKKwkgKiB3YWl0X3RhYmxlX2hhc2hfbnJfZW50cmllcwktLSB0aGUgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSBhcnJheQogCSAqIHdhaXRfdGFibGVfYml0cwktLSB3YWl0X3RhYmxlX3NpemUgPT0gKDEgPDwgd2FpdF90YWJsZV9iaXRzKQogCSAqCiAJICogVGhlIHB1cnBvc2Ugb2YgYWxsIHRoZXNlIGlzIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHBlb3BsZQpAQCAtMjIwLDcgKzIyMCw3IEBACiAJICogZnJlZV9hcmVhX2luaXRfY29yZSgpIHBlcmZvcm1zIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGVtLgogCSAqLwogCXdhaXRfcXVldWVfaGVhZF90CSogd2FpdF90YWJsZTsKLQl1bnNpZ25lZCBsb25nCQl3YWl0X3RhYmxlX3NpemU7CisJdW5zaWduZWQgbG9uZwkJd2FpdF90YWJsZV9oYXNoX25yX2VudHJpZXM7CiAJdW5zaWduZWQgbG9uZwkJd2FpdF90YWJsZV9iaXRzOwogCiAJLyoKQEAgLTMzMyw2ICszMzMsOSBAQAogaW50IHpvbmVfd2F0ZXJtYXJrX29rKHN0cnVjdCB6b25lICp6LCBpbnQgb3JkZXIsIHVuc2lnbmVkIGxvbmcgbWFyaywKIAkJaW50IGNsYXNzem9uZV9pZHgsIGludCBhbGxvY19mbGFncyk7CiAKK2V4dGVybiBpbnQgaW5pdF9jdXJyZW50bHlfZW1wdHlfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCisJCQkJICAgICB1bnNpZ25lZCBsb25nIHNpemUpOworCiAjaWZkZWYgQ09ORklHX0hBVkVfTUVNT1JZX1BSRVNFTlQKIHZvaWQgbWVtb3J5X3ByZXNlbnQoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwogI2Vsc2UKQEAgLTUwNiw2ICs1MDksMTAgQEAKIAkgKiBwYWdlcy4gIEhvd2V2ZXIsIGl0IGlzIHN0b3JlZCB3aXRoIHNvbWUgb3RoZXIgbWFnaWMuCiAJICogKHNlZSBzcGFyc2UuYzo6c3BhcnNlX2luaXRfb25lX3NlY3Rpb24oKSkKIAkgKgorCSAqIEFkZGl0aW9uYWxseSBkdXJpbmcgZWFybHkgYm9vdCB3ZSBlbmNvZGUgbm9kZSBpZCBvZgorCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgc2VjdGlvbiBoZXJlIHRvIGd1aWRlIGFsbG9jYXRpb24uCisJICogKHNlZSBzcGFyc2UuYzo6bWVtb3J5X3ByZXNlbnQoKSkKKwkgKgogCSAqIE1ha2luZyBpdCBhIFVMIGF0IGxlYXN0IG1ha2VzIHNvbWVvbmUgZG8gYSBjYXN0CiAJICogYmVmb3JlIHVzaW5nIGl0IHdyb25nLgogCSAqLwpAQCAtNTQ1LDYgKzU1Miw3IEBACiAjZGVmaW5lIFNFQ1RJT05fSEFTX01FTV9NQVAJKDFVTDw8MSkKICNkZWZpbmUgU0VDVElPTl9NQVBfTEFTVF9CSVQJKDFVTDw8MikKICNkZWZpbmUgU0VDVElPTl9NQVBfTUFTSwkofihTRUNUSU9OX01BUF9MQVNUX0JJVC0xKSkKKyNkZWZpbmUgU0VDVElPTl9OSURfU0hJRlQJMgogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpfX3NlY3Rpb25fbWVtX21hcF9hZGRyKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW9kdWxlLmggYi9pbmNsdWRlL2xpbnV4L21vZHVsZS5oCmluZGV4IGMyZDg5ZTAuLjJkMzY2MDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW9kdWxlLmgKKysrIGIvaW5jbHVkZS9saW51eC9tb2R1bGUuaApAQCAtMTA1LDYgKzEwNSw4IEBACiAgKgkiR1BMIGFuZCBhZGRpdGlvbmFsIHJpZ2h0cyIJW0dOVSBQdWJsaWMgTGljZW5zZSB2MiByaWdodHMgYW5kIG1vcmVdCiAgKgkiRHVhbCBCU0QvR1BMIgkJCVtHTlUgUHVibGljIExpY2Vuc2UgdjIKICAqCQkJCQkgb3IgQlNEIGxpY2Vuc2UgY2hvaWNlXQorICoJIkR1YWwgTUlUL0dQTCIJCQlbR05VIFB1YmxpYyBMaWNlbnNlIHYyCisgKgkJCQkJIG9yIE1JVCBsaWNlbnNlIGNob2ljZV0KICAqCSJEdWFsIE1QTC9HUEwiCQkJW0dOVSBQdWJsaWMgTGljZW5zZSB2MgogICoJCQkJCSBvciBNb3ppbGxhIGxpY2Vuc2UgY2hvaWNlXQogICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW91bnQuaCBiL2luY2x1ZGUvbGludXgvbW91bnQuaAppbmRleCA5YjRlMDA3Li40MDNkMWE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21vdW50LmgKKysrIGIvaW5jbHVkZS9saW51eC9tb3VudC5oCkBAIC0xNyw2ICsxNywxMSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgogCitzdHJ1Y3Qgc3VwZXJfYmxvY2s7CitzdHJ1Y3QgdmZzbW91bnQ7CitzdHJ1Y3QgZGVudHJ5Oworc3RydWN0IG5hbWVzcGFjZTsKKwogI2RlZmluZSBNTlRfTk9TVUlECTB4MDEKICNkZWZpbmUgTU5UX05PREVWCTB4MDIKICNkZWZpbmUgTU5UX05PRVhFQwkweDA0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAppbmRleCA1ZThlMmQ1Li5iYzc0N2U1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKQEAgLTIzMiw2ICsyMzIsNyBAQAogCV9fTElOS19TVEFURV9SWF9TQ0hFRCwKIAlfX0xJTktfU1RBVEVfTElOS1dBVENIX1BFTkRJTkcsCiAJX19MSU5LX1NUQVRFX0RPUk1BTlQsCisJX19MSU5LX1NUQVRFX1FESVNDX1JVTk5JTkcsCiB9OwogCiAKQEAgLTMwNyw5ICszMDgsMTMgQEAKICNkZWZpbmUgTkVUSUZfRl9IV19WTEFOX1JYCTI1NgkvKiBSZWNlaXZlIFZMQU4gaHcgYWNjZWxlcmF0aW9uICovCiAjZGVmaW5lIE5FVElGX0ZfSFdfVkxBTl9GSUxURVIJNTEyCS8qIFJlY2VpdmUgZmlsdGVyaW5nIG9uIFZMQU4gKi8KICNkZWZpbmUgTkVUSUZfRl9WTEFOX0NIQUxMRU5HRUQJMTAyNAkvKiBEZXZpY2UgY2Fubm90IGhhbmRsZSBWTEFOIHBhY2tldHMgKi8KLSNkZWZpbmUgTkVUSUZfRl9UU08JCTIwNDgJLyogQ2FuIG9mZmxvYWQgVENQL0lQIHNlZ21lbnRhdGlvbiAqLworI2RlZmluZSBORVRJRl9GX0dTTwkJMjA0OAkvKiBFbmFibGUgc29mdHdhcmUgR1NPLiAqLwogI2RlZmluZSBORVRJRl9GX0xMVFgJCTQwOTYJLyogTG9ja0xlc3MgVFggKi8KLSNkZWZpbmUgTkVUSUZfRl9VRk8gICAgICAgICAgICAgODE5MiAgICAvKiBDYW4gb2ZmbG9hZCBVRFAgTGFyZ2UgU2VuZCovCisKKwkvKiBTZWdtZW50YXRpb24gb2ZmbG9hZCBmZWF0dXJlcyAqLworI2RlZmluZSBORVRJRl9GX0dTT19TSElGVAkxNgorI2RlZmluZSBORVRJRl9GX1RTTwkJKFNLQl9HU09fVENQVjQgPDwgTkVUSUZfRl9HU09fU0hJRlQpCisjZGVmaW5lIE5FVElGX0ZfVUZPCQkoU0tCX0dTT19VRFBWNCA8PCBORVRJRl9GX0dTT19TSElGVCkKIAogI2RlZmluZSBORVRJRl9GX0dFTl9DU1VNCShORVRJRl9GX05PX0NTVU0gfCBORVRJRl9GX0hXX0NTVU0pCiAjZGVmaW5lIE5FVElGX0ZfQUxMX0NTVU0JKE5FVElGX0ZfSVBfQ1NVTSB8IE5FVElGX0ZfR0VOX0NTVU0pCkBAIC00MDEsNiArNDA2LDkgQEAKIAlzdHJ1Y3QgbGlzdF9oZWFkCXFkaXNjX2xpc3Q7CiAJdW5zaWduZWQgbG9uZwkJdHhfcXVldWVfbGVuOwkvKiBNYXggZnJhbWVzIHBlciBxdWV1ZSBhbGxvd2VkICovCiAKKwkvKiBQYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgR1NPIHBhY2tldC4gKi8KKwlzdHJ1Y3Qgc2tfYnVmZgkJKmdzb19za2I7CisKIAkvKiBpbmdyZXNzIHBhdGggc3luY2hyb25pemVyICovCiAJc3BpbmxvY2tfdAkJaW5ncmVzc19sb2NrOwogCXN0cnVjdCBRZGlzYwkJKnFkaXNjX2luZ3Jlc3M7CkBAIC01MzUsNiArNTQzLDcgQEAKIAkJCQkJIHN0cnVjdCBuZXRfZGV2aWNlICosCiAJCQkJCSBzdHJ1Y3QgcGFja2V0X3R5cGUgKiwKIAkJCQkJIHN0cnVjdCBuZXRfZGV2aWNlICopOworCXN0cnVjdCBza19idWZmCQkqKCpnc29fc2VnbWVudCkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNnKTsKIAl2b2lkCQkJKmFmX3BhY2tldF9wcml2OwogCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKIH07CkBAIC02ODUsNyArNjk0LDggQEAKIGV4dGVybiBpbnQJCWRldl9zZXRfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICosIGludCk7CiBleHRlcm4gaW50CQlkZXZfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICosCiAJCQkJCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKik7Ci1leHRlcm4gdm9pZAkJZGV2X3F1ZXVlX3htaXRfbml0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworZXh0ZXJuIGludAkJZGV2X2hhcmRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCQkgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAKIGV4dGVybiB2b2lkCQlkZXZfaW5pdCh2b2lkKTsKIApAQCAtOTU5LDYgKzk2OSw3IEBACiBleHRlcm4gaW50CQl3ZWlnaHRfcDsKIGV4dGVybiBpbnQJCW5ldGRldl9zZXRfbWFzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIpOwogZXh0ZXJuIGludCBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaW53YXJkKTsKK2V4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2dzb19zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBzZyk7CiAjaWZkZWYgQ09ORklHX0JVRwogZXh0ZXJuIHZvaWQgbmV0ZGV2X3J4X2NzdW1fZmF1bHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAjZWxzZQpAQCAtOTc4LDYgKzk4OSwxMyBAQAogCiBleHRlcm4gdm9pZCBsaW5rd2F0Y2hfcnVuX3F1ZXVlKHZvaWQpOwogCitzdGF0aWMgaW5saW5lIGludCBuZXRpZl9uZWVkc19nc28oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlpbnQgZmVhdHVyZSA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGUgPDwgTkVUSUZfRl9HU09fU0hJRlQ7CisJcmV0dXJuIHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgJiYKKwkgICAgICAgKGRldi0+ZmVhdHVyZXMgJiBmZWF0dXJlKSAhPSBmZWF0dXJlOworfQorCiAjZW5kaWYgLyogX19LRVJORUxfXyAqLwogCiAjZW5kaWYJLyogX0xJTlVYX0RFVl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGxpbmsuaCBiL2luY2x1ZGUvbGludXgvbmV0bGluay5oCmluZGV4IDg3YjhhNTcuLjg1NWI0NDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0bGluay5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0bGluay5oCkBAIC01LDcgKzUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKICNkZWZpbmUgTkVUTElOS19ST1VURQkJMAkvKiBSb3V0aW5nL2RldmljZSBob29rCQkJCSovCi0jZGVmaW5lIE5FVExJTktfVzEJCTEJLyogMS13aXJlIHN1YnN5c3RlbQkJCQkqLworI2RlZmluZSBORVRMSU5LX1VOVVNFRAkJMQkvKiBVbnVzZWQgbnVtYmVyCQkJCSovCiAjZGVmaW5lIE5FVExJTktfVVNFUlNPQ0sJMgkvKiBSZXNlcnZlZCBmb3IgdXNlciBtb2RlIHNvY2tldCBwcm90b2NvbHMgCSovCiAjZGVmaW5lIE5FVExJTktfRklSRVdBTEwJMwkvKiBGaXJld2FsbGluZyBob29rCQkJCSovCiAjZGVmaW5lIE5FVExJTktfSU5FVF9ESUFHCTQJLyogSU5FVCBzb2NrZXQgbW9uaXRvcmluZwkJCSovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCBiL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCmluZGV4IGQyNzZhNGUuLjBjMDc2ZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCisrKyBiL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCkBAIC03LDYgKzcsOCBAQAogCiAjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvY2FjaGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KIAogLyoKQEAgLTg4LDcgKzkwLDE3IEBACiAjZGVmaW5lIFBHX25vc2F2ZV9mcmVlCQkxOAkvKiBGcmVlLCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gKi8KICNkZWZpbmUgUEdfYnVkZHkJCTE5CS8qIFBhZ2UgaXMgZnJlZSwgb24gYnVkZHkgbGlzdHMgKi8KIAotI2RlZmluZSBQR191bmNhY2hlZAkJMjAJLyogUGFnZSBoYXMgYmVlbiBtYXBwZWQgYXMgdW5jYWNoZWQgKi8KKworI2lmIChCSVRTX1BFUl9MT05HID4gMzIpCisvKgorICogNjQtYml0LW9ubHkgZmxhZ3MgYnVpbGQgZG93biBmcm9tIGJpdCAzMQorICoKKyAqIDMyIGJpdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgRklFTERTIHwgICAgICAgRkxBR1MgICAgICAgICB8CisgKiA2NCBiaXQgIHwgICAgICAgICAgIEZJRUxEUyAgICAgICAgICAgICB8ID8/Pz8/PyAgICAgICAgIEZMQUdTICAgICAgICAgfAorICogICAgICAgICA2MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAqLworI2RlZmluZSBQR191bmNhY2hlZAkJMzEJLyogUGFnZSBoYXMgYmVlbiBtYXBwZWQgYXMgdW5jYWNoZWQgKi8KKyNlbmRpZgogCiAvKgogICogR2xvYmFsIHBhZ2UgYWNjb3VudGluZy4gIE9uZSBpbnN0YW5jZSBwZXIgQ1BVLiAgT25seSB1bnNpZ25lZCBsb25ncyBhcmUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFnZW1hcC5oIGIvaW5jbHVkZS9saW51eC9wYWdlbWFwLmgKaW5kZXggN2ExYWY1Ny4uMTI0NWRmNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wYWdlbWFwLmgKKysrIGIvaW5jbHVkZS9saW51eC9wYWdlbWFwLmgKQEAgLTk5LDYgKzk5LDEzIEBACiBleHRlcm4gaW50IHJlYWRfY2FjaGVfcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCXN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzLCBmaWxsZXJfdCAqZmlsbGVyLCB2b2lkICpkYXRhKTsKIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqcmVhZF9tYXBwaW5nX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCisJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBpbmRleCwgdm9pZCAqZGF0YSkKK3sKKwlmaWxsZXJfdCAqZmlsbGVyID0gKGZpbGxlcl90ICopbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlOworCXJldHVybiByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgaW5kZXgsIGZpbGxlciwgZGF0YSk7Cit9CisKIGludCBhZGRfdG9fcGFnZV9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCQkJdW5zaWduZWQgbG9uZyBpbmRleCwgZ2ZwX3QgZ2ZwX21hc2spOwogaW50IGFkZF90b19wYWdlX2NhY2hlX2xydShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaAppbmRleCA2YzRiYzc3Li42MmE4YzIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oCisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmgKQEAgLTE2Miw2ICsxNjIsOSBAQAogCXVuc2lnbmVkIGludAlpc19idXNtYXN0ZXI6MTsgLyogZGV2aWNlIGlzIGJ1c21hc3RlciAqLwogCXVuc2lnbmVkIGludAlub19tc2k6MTsJLyogZGV2aWNlIG1heSBub3QgdXNlIG1zaSAqLwogCXVuc2lnbmVkIGludAlibG9ja191Y2ZnX2FjY2VzczoxOwkvKiB1c2Vyc3BhY2UgY29uZmlnIHNwYWNlIGFjY2VzcyBpcyBibG9ja2VkICovCisJdW5zaWduZWQgaW50CWJyb2tlbl9wYXJpdHlfc3RhdHVzOjE7CS8qIERldmljZSBnZW5lcmF0ZXMgZmFsc2UgcG9zaXRpdmUgcGFyaXR5ICovCisJdW5zaWduZWQgaW50IAltc2lfZW5hYmxlZDoxOworCXVuc2lnbmVkIGludAltc2l4X2VuYWJsZWQ6MTsKIAogCXUzMgkJc2F2ZWRfY29uZmlnX3NwYWNlWzE2XTsgLyogY29uZmlnIHNwYWNlIHNhdmVkIGF0IHN1c3BlbmQgdGltZSAqLwogCXN0cnVjdCBobGlzdF9oZWFkIHNhdmVkX2NhcF9zcGFjZTsKQEAgLTQ5Niw2ICs0OTksNyBAQAogaW50IHBjaV9zZXRfY29uc2lzdGVudF9kbWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1NjQgbWFzayk7CiB2b2lkIHBjaV91cGRhdGVfcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHJlc291cmNlICpyZXMsIGludCByZXNubyk7CiBpbnQgcGNpX2Fzc2lnbl9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgaSk7CitpbnQgcGNpX2Fzc2lnbl9yZXNvdXJjZV9maXhlZChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgaSk7CiB2b2lkIHBjaV9yZXN0b3JlX2JhcnMoc3RydWN0IHBjaV9kZXYgKmRldik7CiAKIC8qIFJPTSBjb250cm9sIHJlbGF0ZWQgcm91dGluZXMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpX2lkcy5oIGIvaW5jbHVkZS9saW51eC9wY2lfaWRzLmgKaW5kZXggYmNmZTlkNC4uYzJmZDJkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wY2lfaWRzLmgKKysrIGIvaW5jbHVkZS9saW51eC9wY2lfaWRzLmgKQEAgLTM1Miw4ICszNTIsMTEgQEAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9BVElfUlM0ODAgICAgICAgICAweDU5NTAKIC8qIEFUSSBJWFAgQ2hpcHNldCAqLwogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FUSV9JWFAyMDBfSURFCTB4NDM0OQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FUSV9JWFAyMDBfU01CVVMJMHg0MzUzCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfQVRJX0lYUDMwMF9TTUJVUwkweDQzNjMKICNkZWZpbmUgUENJX0RFVklDRV9JRF9BVElfSVhQMzAwX0lERQkweDQzNjkKICNkZWZpbmUgUENJX0RFVklDRV9JRF9BVElfSVhQMzAwX1NBVEEgICAweDQzNmUKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9BVElfSVhQNDAwX1NNQlVTCTB4NDM3MgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FUSV9JWFA0MDBfSURFCTB4NDM3NgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FUSV9JWFA0MDBfU0FUQSAgIDB4NDM3OQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0FUSV9JWFA0MDBfU0FUQTIJMHg0MzdhCkBAIC04NDgsNyArODUxLDEyIEBACiAKIAogI2RlZmluZSBQQ0lfVkVORE9SX0lEX1FMT0dJQwkJMHgxMDc3CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfUUxPR0lDX0lTUDEwMTYwCTB4MTAxNgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AxMDIwCTB4MTAyMAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AxMDgwCTB4MTA4MAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1FMT0dJQ19JU1AxMjE2MAkweDEyMTYKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTI0MAkweDEyNDAKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMTI4MAkweDEyODAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjEwMAkweDIxMDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjIwMAkweDIyMDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9RTE9HSUNfSVNQMjMwMAkweDIzMDAKQEAgLTEwMTgsNiArMTAyNiw3IEBACiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF84CQkweDAwNTYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzkJCTB4MDA1NwogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9DSzgwNF9BVURJTwkweDAwNTkKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfQ0s4MDRfUENJRQkJMHgwMDVkCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTJfU01CVVMJMHgwMDY0CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTJfSURFCTB4MDA2NQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMgkJMHgwMDY2CkBAIC0xMTI3LDkgKzExMzYsMTEgQEAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfUVVBRFJPNF85MDBYR0wJMHgwMjU4CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX1FVQURSTzRfNzUwWEdMCTB4MDI1OQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFEUk80XzcwMFhHTAkweDAyNUIKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDUxX1NNQlVTCTB4MDI2NAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTFfSURFCTB4MDI2NQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTFfU0FUQQkweDAyNjYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDUxX1NBVEEyCTB4MDI2NworI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTVfU01CVVMJMHgwMzY4CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A1NV9JREUJMHgwMzZFCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRV9NQ1A1NV9TQVRBCTB4MDM3RQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQNTVfU0FUQTIJMHgwMzdGCkBAIC0xMTg1LDggKzExOTYsMTIgQEAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE1ICAgICAgICAgICAgICAweDAzNzMKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE2ICAgICAgICAgICAgICAweDAzRTUKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE3ICAgICAgICAgICAgICAweDAzRTYKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX1NBVEEgICAgICAweDAzRTcKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX0lERSAgICAgICAweDAzRUMKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE4ICAgICAgICAgICAgICAweDAzRUUKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzE5ICAgICAgICAgICAgICAweDAzRUYKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX1NBVEEyICAgICAweDAzRjYKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFX01DUDYxX1NBVEEzICAgICAweDAzRjcKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzIwICAgICAgICAgICAgICAweDA0NTAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzIxICAgICAgICAgICAgICAweDA0NTEKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzIyICAgICAgICAgICAgICAweDA0NTIKQEAgLTEyNDQsNiArMTI1OSw3IEBACiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBX1BYOFgwXzAJMHgwMjU5CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzMyNjlfMAkweDAyNjkKICNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfSzhUODAwUFJPXzAJMHgwMjgyCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzMyOTZfMAkweDAyOTYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfODM2M18wCTB4MDMwNQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV9QNE04MDBDRQkweDAzMTQKICNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfODM3MV8wCTB4MDM5MQpAQCAtMTI1MSw2ICsxMjY3LDcgQEAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfODJDNTYxCTB4MDU2MQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MkM1ODZfMQkweDA1NzEKICNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfODJDNTc2CTB4MDU3NgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV9TQVRBX0VJREUJMHgwNTgxCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgyQzU4Nl8wCTB4MDU4NgogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MkM1OTYJMHgwNTk2CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgyQzU5N18wCTB4MDU5NwpAQCAtMTI5MSwxMCArMTMwOCwxMSBAQAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84NzgzXzAJMHgzMjA4CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgyMzcJCTB4MzIyNwogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MjUxCQkweDMyODcKLSNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfMzI5Nl8wCTB4MDI5NgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MjM3QQkJMHgzMzM3CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgyMzEJCTB4ODIzMQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MjMxXzQJMHg4MjM1CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgzNjVfMQkweDgzMDUKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9WSUFfQ1g3MDAJCTB4ODMyNAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MzcxXzEJMHg4MzkxCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklBXzgyQzU5OF8xCTB4ODU5OAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MzhYXzEJMHhCMTg4CkBAIC0xOTQ2LDYgKzE5NjQsNyBAQAogCiAjZGVmaW5lIFBDSV9WRU5ET1JfSURfTUVMTEFOT1gJCTB4MTViMwogI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FTExBTk9YX1RBVk9SCTB4NWE0NAorI2RlZmluZSBQQ0lfREVWSUNFX0lEX01FTExBTk9YX1RBVk9SX0JSSURHRQkweDVhNDYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9NRUxMQU5PWF9BUkJFTF9DT01QQVQgMHg2Mjc4CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVMTEFOT1hfQVJCRUwJMHg2MjgyCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTUVMTEFOT1hfU0lOQUlfT0xEIDB4NWU4YwpAQCAtMTk2OSw2ICsxOTg4LDkgQEAKICNkZWZpbmUgUENJX1ZFTkRPUl9JRF9ORVRDRUxMCQkweDE2OWMKICNkZWZpbmUgUENJX0RFVklDRV9JRF9SRVZPTFVUSU9OCTB4MDA0NAogCisjZGVmaW5lIFBDSV9WRU5ET1JfSURfVklURVNTRQkJMHgxNzI1CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfVklURVNTRV9WU0M3MTc0CTB4NzE3NAorCiAjZGVmaW5lIFBDSV9WRU5ET1JfSURfTElOS1NZUwkJMHgxNzM3CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTElOS1NZU19FRzEwNjQJMHgxMDY0CiAKQEAgLTIxNDgsNiArMjE3MCw3IEBACiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfSUNIOF80CTB4MjgxNQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0lDSDhfNQkweDI4M2UKICNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9JQ0g4XzYJMHgyODUwCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfR0QzMTI0NAkweDMyMDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF84Mjg1NVBNX0hCCTB4MzM0MAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODMwX0hCCTB4MzU3NQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODMwX0NHQwkweDM1NzcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpX3JlZ3MuaCBiL2luY2x1ZGUvbGludXgvcGNpX3JlZ3MuaAppbmRleCBkMjdhNzhiLi42YmNlNGEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaV9yZWdzLmgKKysrIGIvaW5jbHVkZS9saW51eC9wY2lfcmVncy5oCkBAIC0xOTcsNiArMTk3LDcgQEAKICNkZWZpbmUgIFBDSV9DQVBfSURfQ0hTV1AJMHgwNgkvKiBDb21wYWN0UENJIEhvdFN3YXAgKi8KICNkZWZpbmUgIFBDSV9DQVBfSURfUENJWAkweDA3CS8qIFBDSS1YICovCiAjZGVmaW5lICBQQ0lfQ0FQX0lEX0hUX0lSUUNPTkYJMHgwOAkvKiBIeXBlclRyYW5zcG9ydCBJUlEgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSAgUENJX0NBUF9JRF9WTkRSCTB4MDkJLyogVmVuZG9yIHNwZWNpZmljIGNhcGFiaWxpdHkgKi8KICNkZWZpbmUgIFBDSV9DQVBfSURfU0hQQyAJMHgwQwkvKiBQQ0kgU3RhbmRhcmQgSG90LVBsdWcgQ29udHJvbGxlciAqLwogI2RlZmluZSAgUENJX0NBUF9JRF9FWFAgCTB4MTAJLyogUENJIEV4cHJlc3MgKi8KICNkZWZpbmUgIFBDSV9DQVBfSURfTVNJWAkweDExCS8qIE1TSS1YICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmgKaW5kZXggNjZiNWRlNC4uZjVhYTU5MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHVfY291bnRlci5oCisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1X2NvdW50ZXIuaApAQCAtMTAsMTMgKzEwLDE0IEBACiAjaW5jbHVkZSA8bGludXgvc21wLmg+CiAjaW5jbHVkZSA8bGludXgvdGhyZWFkcy5oPgogI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKICNpZmRlZiBDT05GSUdfU01QCiAKIHN0cnVjdCBwZXJjcHVfY291bnRlciB7CiAJc3BpbmxvY2tfdCBsb2NrOwotCWxvbmcgY291bnQ7Ci0JbG9uZyAqY291bnRlcnM7CisJczY0IGNvdW50OworCXMzMiAqY291bnRlcnM7CiB9OwogCiAjaWYgTlJfQ1BVUyA+PSAxNgpAQCAtMjUsMTEgKzI2LDExIEBACiAjZGVmaW5lIEZCQ19CQVRDSAkoTlJfQ1BVUyo0KQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfY291bnRlcl9pbml0KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQorc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9jb3VudGVyX2luaXQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHM2NCBhbW91bnQpCiB7CiAJc3Bpbl9sb2NrX2luaXQoJmZiYy0+bG9jayk7Ci0JZmJjLT5jb3VudCA9IDA7Ci0JZmJjLT5jb3VudGVycyA9IGFsbG9jX3BlcmNwdShsb25nKTsKKwlmYmMtPmNvdW50ID0gYW1vdW50OworCWZiYy0+Y291bnRlcnMgPSBhbGxvY19wZXJjcHUoczMyKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCkBAIC0zNywxMCArMzgsMTAgQEAKIAlmcmVlX3BlcmNwdShmYmMtPmNvdW50ZXJzKTsKIH0KIAotdm9pZCBwZXJjcHVfY291bnRlcl9tb2Qoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIGxvbmcgYW1vdW50KTsKLWxvbmcgcGVyY3B1X2NvdW50ZXJfc3VtKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKTsKK3ZvaWQgcGVyY3B1X2NvdW50ZXJfbW9kKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzMzIgYW1vdW50KTsKK3M2NCBwZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpOwogCi1zdGF0aWMgaW5saW5lIGxvbmcgcGVyY3B1X2NvdW50ZXJfcmVhZChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKK3N0YXRpYyBpbmxpbmUgczY0IHBlcmNwdV9jb3VudGVyX3JlYWQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCiB7CiAJcmV0dXJuIGZiYy0+Y291bnQ7CiB9CkBAIC00OCwxMyArNDksMTQgQEAKIC8qCiAgKiBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBlcmNwdV9jb3VudGVyX3JlYWQoKSB0byByZXR1cm4gYSBzbWFsbCBuZWdhdGl2ZQogICogbnVtYmVyIGZvciBzb21lIGNvdW50ZXIgd2hpY2ggc2hvdWxkIG5ldmVyIGJlIG5lZ2F0aXZlLgorICoKICAqLwotc3RhdGljIGlubGluZSBsb25nIHBlcmNwdV9jb3VudGVyX3JlYWRfcG9zaXRpdmUoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCitzdGF0aWMgaW5saW5lIHM2NCBwZXJjcHVfY291bnRlcl9yZWFkX3Bvc2l0aXZlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQogewotCWxvbmcgcmV0ID0gZmJjLT5jb3VudDsKKwlzNjQgcmV0ID0gZmJjLT5jb3VudDsKIAogCWJhcnJpZXIoKTsJCS8qIFByZXZlbnQgcmVsb2FkcyBvZiBmYmMtPmNvdW50ICovCi0JaWYgKHJldCA+IDApCisJaWYgKHJldCA+PSAwKQogCQlyZXR1cm4gcmV0OwogCXJldHVybiAxOwogfQpAQCAtNjIsMTIgKzY0LDEyIEBACiAjZWxzZQogCiBzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgewotCWxvbmcgY291bnQ7CisJczY0IGNvdW50OwogfTsKIAotc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9jb3VudGVyX2luaXQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCitzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X2NvdW50ZXJfaW5pdChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgczY0IGFtb3VudCkKIHsKLQlmYmMtPmNvdW50ID0gMDsKKwlmYmMtPmNvdW50ID0gYW1vdW50OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X2NvdW50ZXJfZGVzdHJveShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKQEAgLTc1LDI0ICs3NywyNCBAQAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKLXBlcmNwdV9jb3VudGVyX21vZChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgbG9uZyBhbW91bnQpCitwZXJjcHVfY291bnRlcl9tb2Qoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHMzMiBhbW91bnQpCiB7CiAJcHJlZW1wdF9kaXNhYmxlKCk7CiAJZmJjLT5jb3VudCArPSBhbW91bnQ7CiAJcHJlZW1wdF9lbmFibGUoKTsKIH0KIAotc3RhdGljIGlubGluZSBsb25nIHBlcmNwdV9jb3VudGVyX3JlYWQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCitzdGF0aWMgaW5saW5lIHM2NCBwZXJjcHVfY291bnRlcl9yZWFkKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQogewogCXJldHVybiBmYmMtPmNvdW50OwogfQogCi1zdGF0aWMgaW5saW5lIGxvbmcgcGVyY3B1X2NvdW50ZXJfcmVhZF9wb3NpdGl2ZShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKK3N0YXRpYyBpbmxpbmUgczY0IHBlcmNwdV9jb3VudGVyX3JlYWRfcG9zaXRpdmUoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCiB7CiAJcmV0dXJuIGZiYy0+Y291bnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgbG9uZyBwZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCitzdGF0aWMgaW5saW5lIHM2NCBwZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCiB7CiAJcmV0dXJuIHBlcmNwdV9jb3VudGVyX3JlYWRfcG9zaXRpdmUoZmJjKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHJjdGwuaCBiL2luY2x1ZGUvbGludXgvcHJjdGwuaAppbmRleCBiZjAyMmM0Li41MmE5YmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ByY3RsLmgKKysrIGIvaW5jbHVkZS9saW51eC9wcmN0bC5oCkBAIC01Miw0ICs1MiwxMSBAQAogI2RlZmluZSBQUl9TRVRfTkFNRSAgICAxNQkJLyogU2V0IHByb2Nlc3MgbmFtZSAqLwogI2RlZmluZSBQUl9HRVRfTkFNRSAgICAxNgkJLyogR2V0IHByb2Nlc3MgbmFtZSAqLwogCisvKiBHZXQvc2V0IHByb2Nlc3MgZW5kaWFuICovCisjZGVmaW5lIFBSX0dFVF9FTkRJQU4JMTkKKyNkZWZpbmUgUFJfU0VUX0VORElBTgkyMAorIyBkZWZpbmUgUFJfRU5ESUFOX0JJRwkJMAorIyBkZWZpbmUgUFJfRU5ESUFOX0xJVFRMRQkxCS8qIFRydWUgbGl0dGxlIGVuZGlhbiBtb2RlICovCisjIGRlZmluZSBQUl9FTkRJQU5fUFBDX0xJVFRMRQkyCS8qICJQb3dlclBDIiBwc2V1ZG8gbGl0dGxlIGVuZGlhbiAqLworCiAjZW5kaWYgLyogX0xJTlVYX1BSQ1RMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHRyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oCmluZGV4IDBkMzY3NTAuLmVlOTE4YmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcHRyYWNlLmgKKysrIGIvaW5jbHVkZS9saW51eC9wdHJhY2UuaApAQCAtNTEsNiArNTEsMTAgQEAKICNpZmRlZiBfX0tFUk5FTF9fCiAvKgogICogUHRyYWNlIGZsYWdzCisgKgorICogVGhlIG93bmVyIHNoaXAgcnVsZXMgZm9yIHRhc2stPnB0cmFjZSB3aGljaCBob2xkcyB0aGUgcHRyYWNlCisgKiBmbGFncyBpcyBzaW1wbGUuICBXaGVuIGEgdGFzayBpcyBydW5uaW5nIGl0IG93bnMgaXQncyB0YXNrLT5wdHJhY2UKKyAqIGZsYWdzLiAgV2hlbiB0aGUgYSB0YXNrIGlzIHN0b3BwZWQgdGhlIHB0cmFjZXIgb3ducyB0YXNrLT5wdHJhY2UuCiAgKi8KIAogI2RlZmluZSBQVF9QVFJBQ0VECTB4MDAwMDAwMDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIGIvaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgKaW5kZXggZGQ4M2NjYS4uOTE1OGE2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgKKysrIGIvaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgKQEAgLTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlIDxsaW51eC9wcmVlbXB0Lmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAorI2RlZmluZSBSQURJWF9UUkVFX01BWF9UQUdTIDIKKworLyogcm9vdCB0YWdzIGFyZSBzdG9yZWQgaW4gZ2ZwX21hc2ssIHNoaWZ0ZWQgYnkgX19HRlBfQklUU19TSElGVCAqLwogc3RydWN0IHJhZGl4X3RyZWVfcm9vdCB7CiAJdW5zaWduZWQgaW50CQloZWlnaHQ7CiAJZ2ZwX3QJCQlnZnBfbWFzazsKQEAgLTQ1LDggKzQ4LDYgQEAKIAkocm9vdCktPnJub2RlID0gTlVMTDsJCQkJCQlcCiB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFJBRElYX1RSRUVfTUFYX1RBR1MgMgotCiBpbnQgcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwogdm9pZCAqcmFkaXhfdHJlZV9sb29rdXAoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqLCB1bnNpZ25lZCBsb25nKTsKIHZvaWQgKipyYWRpeF90cmVlX2xvb2t1cF9zbG90KHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKiwgdW5zaWduZWQgbG9uZyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JhbWZzLmggYi9pbmNsdWRlL2xpbnV4L3JhbWZzLmgKaW5kZXggNzhlY2ZhMi4uMDBiMzQwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yYW1mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvcmFtZnMuaApAQCAtMiw4ICsyLDggQEAKICNkZWZpbmUgX0xJTlVYX1JBTUZTX0gKIAogc3RydWN0IGlub2RlICpyYW1mc19nZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IG1vZGUsIGRldl90IGRldik7Ci1zdHJ1Y3Qgc3VwZXJfYmxvY2sgKnJhbWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSk7CitleHRlcm4gaW50IHJhbWZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpOwogCiAjaWZuZGVmIENPTkZJR19NTVUKIGV4dGVybiB1bnNpZ25lZCBsb25nIHJhbWZzX25vbW11X2dldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICpmaWxlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yYnRyZWUuaCBiL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgKaW5kZXggZjM3MDA2Zi4uOGQ1MzgyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yYnRyZWUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oCkBAIC0xMzIsNiArMTMyLDEwIEBACiAjZGVmaW5lIFJCX1JPT1QJKHN0cnVjdCByYl9yb290KSB7IE5VTEwsIH0KICNkZWZpbmUJcmJfZW50cnkocHRyLCB0eXBlLCBtZW1iZXIpIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikKIAorI2RlZmluZSBSQl9FTVBUWV9ST09UKHJvb3QpCSgocm9vdCktPnJiX25vZGUgPT0gTlVMTCkKKyNkZWZpbmUgUkJfRU1QVFlfTk9ERShub2RlKQkocmJfcGFyZW50KG5vZGUpICE9IG5vZGUpCisjZGVmaW5lIFJCX0NMRUFSX05PREUobm9kZSkJKHJiX3NldF9wYXJlbnQobm9kZSwgbm9kZSkpCisKIGV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihzdHJ1Y3QgcmJfbm9kZSAqLCBzdHJ1Y3QgcmJfcm9vdCAqKTsKIGV4dGVybiB2b2lkIHJiX2VyYXNlKHN0cnVjdCByYl9ub2RlICosIHN0cnVjdCByYl9yb290ICopOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmggYi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgKaW5kZXggOTcwMjg0Zi4uNjMxMjc1OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oCisrKyBiL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaApAQCAtMjQ2LDcgKzI0Niw3IEBACiAgKiBzb2Z0aXJxIGhhbmRsZXJzIHdpbGwgaGF2ZSBjb21wbGV0ZWQsIHNpbmNlIGluIHNvbWUga2VybmVscywgdGhlc2UKICAqIGhhbmRsZXJzIGNhbiBydW4gaW4gcHJvY2VzcyBjb250ZXh0LCBhbmQgY2FuIGJsb2NrLgogICoKLSAqIFRoaXMgcHJpbWl0aXZlIHByb3ZpZGVzIHRoZSBndWFyYW50ZWVzIG1hZGUgYnkgdGhlIChkZXByZWNhdGVkKQorICogVGhpcyBwcmltaXRpdmUgcHJvdmlkZXMgdGhlIGd1YXJhbnRlZXMgbWFkZSBieSB0aGUgKG5vdyByZW1vdmVkKQogICogc3luY2hyb25pemVfa2VybmVsKCkgQVBJLiAgSW4gY29udHJhc3QsIHN5bmNocm9uaXplX3JjdSgpIG9ubHkKICAqIGd1YXJhbnRlZXMgdGhhdCByY3VfcmVhZF9sb2NrKCkgc2VjdGlvbnMgd2lsbCBoYXZlIGNvbXBsZXRlZC4KICAqIEluICJjbGFzc2ljIFJDVSIsIHRoZXNlIHR3byBndWFyYW50ZWVzIGhhcHBlbiB0byBiZSBvbmUgYW5kCkBAIC0yNjQsNyArMjY0LDYgQEAKIAkJCQl2b2lkICgqZnVuYykoc3RydWN0IHJjdV9oZWFkICpoZWFkKSkpOwogZXh0ZXJuIHZvaWQgRkFTVENBTEwoY2FsbF9yY3VfYmgoc3RydWN0IHJjdV9oZWFkICpoZWFkLAogCQkJCXZvaWQgKCpmdW5jKShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpKSk7Ci1leHRlcm4gX19kZXByZWNhdGVkX2Zvcl9tb2R1bGVzIHZvaWQgc3luY2hyb25pemVfa2VybmVsKHZvaWQpOwogZXh0ZXJuIHZvaWQgc3luY2hyb25pemVfcmN1KHZvaWQpOwogdm9pZCBzeW5jaHJvbml6ZV9pZGxlKHZvaWQpOwogZXh0ZXJuIHZvaWQgcmN1X2JhcnJpZXIodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JtYXAuaCBiL2luY2x1ZGUvbGludXgvcm1hcC5oCmluZGV4IDJkNGM4MWEuLmJmOTdiMDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcm1hcC5oCisrKyBiL2luY2x1ZGUvbGludXgvcm1hcC5oCkBAIC05MSw3ICs5MSw2IEBACiAgKi8KIGludCBwYWdlX3JlZmVyZW5jZWQoc3RydWN0IHBhZ2UgKiwgaW50IGlzX2xvY2tlZCk7CiBpbnQgdHJ5X3RvX3VubWFwKHN0cnVjdCBwYWdlICosIGludCBpZ25vcmVfcmVmcyk7Ci12b2lkIHJlbW92ZV9mcm9tX3N3YXAoc3RydWN0IHBhZ2UgKnBhZ2UpOwogCiAvKgogICogQ2FsbGVkIGZyb20gbW0vZmlsZW1hcF94aXAuYyB0byB1bm1hcCBlbXB0eSB6ZXJvIHBhZ2UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCAyNjdmMTUyLi4zOGI0NzkxZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApAQCAtOTQxLDEyICs5NDEsMTEgQEAKICNkZWZpbmUgUEZfS1NXQVBECTB4MDAwNDAwMDAJLyogSSBhbSBrc3dhcGQgKi8KICNkZWZpbmUgUEZfU1dBUE9GRgkweDAwMDgwMDAwCS8qIEkgYW0gaW4gc3dhcG9mZiAqLwogI2RlZmluZSBQRl9MRVNTX1RIUk9UVExFIDB4MDAxMDAwMDAJLyogVGhyb3R0bGUgbWUgbGVzczogSSBjbGVhbiBtZW1vcnkgKi8KLSNkZWZpbmUgUEZfU1lOQ1dSSVRFCTB4MDAyMDAwMDAJLyogSSBhbSBkb2luZyBhIHN5bmMgd3JpdGUgKi8KLSNkZWZpbmUgUEZfQk9SUk9XRURfTU0JMHgwMDQwMDAwMAkvKiBJIGFtIGEga3RocmVhZCBkb2luZyB1c2VfbW0gKi8KLSNkZWZpbmUgUEZfUkFORE9NSVpFCTB4MDA4MDAwMDAJLyogcmFuZG9taXplIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSAqLwotI2RlZmluZSBQRl9TV0FQV1JJVEUJMHgwMTAwMDAwMAkvKiBBbGxvd2VkIHRvIHdyaXRlIHRvIHN3YXAgKi8KLSNkZWZpbmUgUEZfU1BSRUFEX1BBR0UJMHgwNDAwMDAwMAkvKiBTcHJlYWQgcGFnZSBjYWNoZSBvdmVyIGNwdXNldCAqLwotI2RlZmluZSBQRl9TUFJFQURfU0xBQgkweDA4MDAwMDAwCS8qIFNwcmVhZCBzb21lIHNsYWIgY2FjaGVzIG92ZXIgY3B1c2V0ICovCisjZGVmaW5lIFBGX0JPUlJPV0VEX01NCTB4MDAyMDAwMDAJLyogSSBhbSBhIGt0aHJlYWQgZG9pbmcgdXNlX21tICovCisjZGVmaW5lIFBGX1JBTkRPTUlaRQkweDAwNDAwMDAwCS8qIHJhbmRvbWl6ZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgKi8KKyNkZWZpbmUgUEZfU1dBUFdSSVRFCTB4MDA4MDAwMDAJLyogQWxsb3dlZCB0byB3cml0ZSB0byBzd2FwICovCisjZGVmaW5lIFBGX1NQUkVBRF9QQUdFCTB4MDEwMDAwMDAJLyogU3ByZWFkIHBhZ2UgY2FjaGUgb3ZlciBjcHVzZXQgKi8KKyNkZWZpbmUgUEZfU1BSRUFEX1NMQUIJMHgwMjAwMDAwMAkvKiBTcHJlYWQgc29tZSBzbGFiIGNhY2hlcyBvdmVyIGNwdXNldCAqLwogI2RlZmluZSBQRl9NRU1QT0xJQ1kJMHgxMDAwMDAwMAkvKiBOb24tZGVmYXVsdCBOVU1BIG1lbXBvbGljeSAqLwogCiAvKgpAQCAtMTIyNSw3ICsxMjI0LDcgQEAKIAkJKHRocmVhZF9ncm91cF9sZWFkZXIocCkgJiYgIXRocmVhZF9ncm91cF9lbXB0eShwKSkKIAogLyoKLSAqIFByb3RlY3RzIC0+ZnMsIC0+ZmlsZXMsIC0+bW0sIC0+cHRyYWNlLCAtPmdyb3VwX2luZm8sIC0+Y29tbSwga2V5cmluZworICogUHJvdGVjdHMgLT5mcywgLT5maWxlcywgLT5tbSwgLT5ncm91cF9pbmZvLCAtPmNvbW0sIGtleXJpbmcKICAqIHN1YnNjcmlwdGlvbnMgYW5kIHN5bmNocm9uaXNlcyB3aXRoIHdhaXQ0KCkuICBBbHNvIHVzZWQgaW4gcHJvY2ZzLiAgQWxzbwogICogcGlucyB0aGUgZmluYWwgcmVsZWFzZSBvZiB0YXNrLmlvX2NvbnRleHQuICBBbHNvIHByb3RlY3RzIC0+Y3B1c2V0LgogICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2VjdXJpdHkuaCBiL2luY2x1ZGUvbGludXgvc2VjdXJpdHkuaAppbmRleCA0ZGZiMWI4Li5kMmMxN2JkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgKKysrIGIvaW5jbHVkZS9saW51eC9zZWN1cml0eS5oCkBAIC0xNzEsOSArMTcxLDkgQEAKICAqCURlYWxsb2NhdGUgYW5kIGNsZWFyIHRoZSBzYi0+c19zZWN1cml0eSBmaWVsZC4KICAqCUBzYiBjb250YWlucyB0aGUgc3VwZXJfYmxvY2sgc3RydWN0dXJlIHRvIGJlIG1vZGlmaWVkLgogICogQHNiX3N0YXRmczoKLSAqCUNoZWNrIHBlcm1pc3Npb24gYmVmb3JlIG9idGFpbmluZyBmaWxlc3lzdGVtIHN0YXRpc3RpY3MgZm9yIHRoZSBAc2IKLSAqCWZpbGVzeXN0ZW0uCi0gKglAc2IgY29udGFpbnMgdGhlIHN1cGVyX2Jsb2NrIHN0cnVjdHVyZSBmb3IgdGhlIGZpbGVzeXN0ZW0uCisgKglDaGVjayBwZXJtaXNzaW9uIGJlZm9yZSBvYnRhaW5pbmcgZmlsZXN5c3RlbSBzdGF0aXN0aWNzIGZvciB0aGUgQG1udAorICoJbW91bnRwb2ludC4KKyAqCUBkZW50cnkgaXMgYSBoYW5kbGUgb24gdGhlIHN1cGVyYmxvY2sgZm9yIHRoZSBmaWxlc3lzdGVtLgogICoJUmV0dXJuIDAgaWYgcGVybWlzc2lvbiBpcyBncmFudGVkLiAgCiAgKiBAc2JfbW91bnQ6CiAgKglDaGVjayBwZXJtaXNzaW9uIGJlZm9yZSBhbiBvYmplY3Qgc3BlY2lmaWVkIGJ5IEBkZXZfbmFtZSBpcyBtb3VudGVkIG9uCkBAIC01NzcsNiArNTc3LDExIEBACiAgKglAcCBjb250YWlucyB0aGUgdGFza19zdHJ1Y3Qgb2YgcHJvY2Vzcy4KICAqCUBuaWNlIGNvbnRhaW5zIHRoZSBuZXcgbmljZSB2YWx1ZS4KICAqCVJldHVybiAwIGlmIHBlcm1pc3Npb24gaXMgZ3JhbnRlZC4KKyAqIEB0YXNrX3NldGlvcHJpbworICoJQ2hlY2sgcGVybWlzc2lvbiBiZWZvcmUgc2V0dGluZyB0aGUgaW9wcmlvIHZhbHVlIG9mIEBwIHRvIEBpb3ByaW8uCisgKglAcCBjb250YWlucyB0aGUgdGFza19zdHJ1Y3Qgb2YgcHJvY2Vzcy4KKyAqCUBpb3ByaW8gY29udGFpbnMgdGhlIG5ldyBpb3ByaW8gdmFsdWUKKyAqCVJldHVybiAwIGlmIHBlcm1pc3Npb24gaXMgZ3JhbnRlZC4KICAqIEB0YXNrX3NldHJsaW1pdDoKICAqCUNoZWNrIHBlcm1pc3Npb24gYmVmb3JlIHNldHRpbmcgdGhlIHJlc291cmNlIGxpbWl0cyBvZiB0aGUgY3VycmVudAogICoJcHJvY2VzcyBmb3IgQHJlc291cmNlIHRvIEBuZXdfcmxpbS4gIFRoZSBvbGQgcmVzb3VyY2UgbGltaXQgdmFsdWVzIGNhbgpAQCAtNTk2LDYgKzYwMSwxMCBAQAogICoJQHAuCiAgKglAcCBjb250YWlucyB0aGUgdGFza19zdHJ1Y3QgZm9yIHByb2Nlc3MuCiAgKglSZXR1cm4gMCBpZiBwZXJtaXNzaW9uIGlzIGdyYW50ZWQuCisgKiBAdGFza19tb3ZlbWVtb3J5CisgKglDaGVjayBwZXJtaXNzaW9uIGJlZm9yZSBtb3ZpbmcgbWVtb3J5IG93bmVkIGJ5IHByb2Nlc3MgQHAuCisgKglAcCBjb250YWlucyB0aGUgdGFza19zdHJ1Y3QgZm9yIHByb2Nlc3MuCisgKglSZXR1cm4gMCBpZiBwZXJtaXNzaW9uIGlzIGdyYW50ZWQuCiAgKiBAdGFza19raWxsOgogICoJQ2hlY2sgcGVybWlzc2lvbiBiZWZvcmUgc2VuZGluZyBzaWduYWwgQHNpZyB0byBAcC4gIEBpbmZvIGNhbiBiZSBOVUxMLAogICoJdGhlIGNvbnN0YW50IDEsIG9yIGEgcG9pbnRlciB0byBhIHNpZ2luZm8gc3RydWN0dXJlLiAgSWYgQGluZm8gaXMgMSBvcgpAQCAtMTEyNyw3ICsxMTM2LDcgQEAKIAlpbnQgKCpzYl9jb3B5X2RhdGEpKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICp0eXBlLAogCQkJICAgIHZvaWQgKm9yaWcsIHZvaWQgKmNvcHkpOwogCWludCAoKnNiX2tlcm5fbW91bnQpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhKTsKLQlpbnQgKCpzYl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYik7CisJaW50ICgqc2Jfc3RhdGZzKSAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKIAlpbnQgKCpzYl9tb3VudCkgKGNoYXIgKmRldl9uYW1lLCBzdHJ1Y3QgbmFtZWlkYXRhICogbmQsCiAJCQkgY2hhciAqdHlwZSwgdW5zaWduZWQgbG9uZyBmbGFncywgdm9pZCAqZGF0YSk7CiAJaW50ICgqc2JfY2hlY2tfc2IpIChzdHJ1Y3QgdmZzbW91bnQgKiBtbnQsIHN0cnVjdCBuYW1laWRhdGEgKiBuZCk7CkBAIC0xMjEwLDEwICsxMjE5LDEyIEBACiAJaW50ICgqdGFza19nZXRzaWQpIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKTsKIAlpbnQgKCp0YXNrX3NldGdyb3VwcykgKHN0cnVjdCBncm91cF9pbmZvICpncm91cF9pbmZvKTsKIAlpbnQgKCp0YXNrX3NldG5pY2UpIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCBpbnQgbmljZSk7CisJaW50ICgqdGFza19zZXRpb3ByaW8pIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCBpbnQgaW9wcmlvKTsKIAlpbnQgKCp0YXNrX3NldHJsaW1pdCkgKHVuc2lnbmVkIGludCByZXNvdXJjZSwgc3RydWN0IHJsaW1pdCAqIG5ld19ybGltKTsKIAlpbnQgKCp0YXNrX3NldHNjaGVkdWxlcikgKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHAsIGludCBwb2xpY3ksCiAJCQkJICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKiBscCk7CiAJaW50ICgqdGFza19nZXRzY2hlZHVsZXIpIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKTsKKwlpbnQgKCp0YXNrX21vdmVtZW1vcnkpIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKTsKIAlpbnQgKCp0YXNrX2tpbGwpIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLAogCQkJICBzdHJ1Y3Qgc2lnaW5mbyAqIGluZm8sIGludCBzaWcpOwogCWludCAoKnRhc2tfd2FpdCkgKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApOwpAQCAtMTMxMyw3ICsxMzI0LDcgQEAKIAogCS8qIGtleSBtYW5hZ2VtZW50IHNlY3VyaXR5IGhvb2tzICovCiAjaWZkZWYgQ09ORklHX0tFWVMKLQlpbnQgKCprZXlfYWxsb2MpKHN0cnVjdCBrZXkgKmtleSk7CisJaW50ICgqa2V5X2FsbG9jKShzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKIAl2b2lkICgqa2V5X2ZyZWUpKHN0cnVjdCBrZXkgKmtleSk7CiAJaW50ICgqa2V5X3Blcm1pc3Npb24pKGtleV9yZWZfdCBrZXlfcmVmLAogCQkJICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpjb250ZXh0LApAQCAtMTQ1MCw5ICsxNDYxLDkgQEAKIAlyZXR1cm4gc2VjdXJpdHlfb3BzLT5zYl9rZXJuX21vdW50IChzYiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3NiX3N0YXRmcyAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3N0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3NiX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogewotCXJldHVybiBzZWN1cml0eV9vcHMtPnNiX3N0YXRmcyAoc2IpOworCXJldHVybiBzZWN1cml0eV9vcHMtPnNiX3N0YXRmcyAoZGVudHJ5KTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfc2JfbW91bnQgKGNoYXIgKmRldl9uYW1lLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCwKQEAgLTE4MzYsNiArMTg0NywxMSBAQAogCXJldHVybiBzZWN1cml0eV9vcHMtPnRhc2tfc2V0bmljZSAocCwgbmljZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3Rhc2tfc2V0aW9wcmlvIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBpb3ByaW8pCit7CisJcmV0dXJuIHNlY3VyaXR5X29wcy0+dGFza19zZXRpb3ByaW8gKHAsIGlvcHJpbyk7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3Rhc2tfc2V0cmxpbWl0ICh1bnNpZ25lZCBpbnQgcmVzb3VyY2UsCiAJCQkJCSAgIHN0cnVjdCBybGltaXQgKm5ld19ybGltKQogewpAQCAtMTg1NCw2ICsxODcwLDExIEBACiAJcmV0dXJuIHNlY3VyaXR5X29wcy0+dGFza19nZXRzY2hlZHVsZXIgKHApOwogfQogCitzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV90YXNrX21vdmVtZW1vcnkgKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKK3sKKwlyZXR1cm4gc2VjdXJpdHlfb3BzLT50YXNrX21vdmVtZW1vcnkgKHApOworfQorCiBzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV90YXNrX2tpbGwgKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2lnaW5mbyAqaW5mbywgaW50IHNpZykKIHsKQEAgLTIxNjIsNyArMjE4Myw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3NiX3N0YXRmcyAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3N0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3NiX3N0YXRmcyAoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogewogCXJldHVybiAwOwogfQpAQCAtMjQ3OCw2ICsyNDk5LDExIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3Rhc2tfc2V0aW9wcmlvIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBpb3ByaW8pCit7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3Rhc2tfc2V0cmxpbWl0ICh1bnNpZ25lZCBpbnQgcmVzb3VyY2UsCiAJCQkJCSAgIHN0cnVjdCBybGltaXQgKm5ld19ybGltKQogewpAQCAtMjQ5Niw2ICsyNTIyLDExIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X3Rhc2tfbW92ZW1lbW9yeSAoc3RydWN0IHRhc2tfc3RydWN0ICpwKQoreworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV90YXNrX2tpbGwgKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2lnaW5mbyAqaW5mbywgaW50IHNpZykKIHsKQEAgLTMwMDgsOSArMzAzOSwxMCBAQAogCiAjaWZkZWYgQ09ORklHX0tFWVMKICNpZmRlZiBDT05GSUdfU0VDVVJJVFkKLXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2tleV9hbGxvYyhzdHJ1Y3Qga2V5ICprZXkpCitzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV9rZXlfYWxsb2Moc3RydWN0IGtleSAqa2V5LAorCQkJCSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiB7Ci0JcmV0dXJuIHNlY3VyaXR5X29wcy0+a2V5X2FsbG9jKGtleSk7CisJcmV0dXJuIHNlY3VyaXR5X29wcy0+a2V5X2FsbG9jKGtleSwgdHNrKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNlY3VyaXR5X2tleV9mcmVlKHN0cnVjdCBrZXkgKmtleSkKQEAgLTMwMjcsNyArMzA1OSw4IEBACiAKICNlbHNlCiAKLXN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2tleV9hbGxvYyhzdHJ1Y3Qga2V5ICprZXkpCitzdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV9rZXlfYWxsb2Moc3RydWN0IGtleSAqa2V5LAorCQkJCSAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiB7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L3NlcmlhbF9jb3JlLmgKaW5kZXggOTRiOTI4Ni4uMGVmNTBiYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zZXJpYWxfY29yZS5oCisrKyBiL2luY2x1ZGUvbGludXgvc2VyaWFsX2NvcmUuaApAQCAtNjcsOCArNjcsOCBAQAogLyogUGFyaXNjIHR5cGUgbnVtYmVycy4gKi8KICNkZWZpbmUgUE9SVF9NVVgJNDgKIAotLyogQXRtZWwgQVQ5MVJNOTIwMCBTb0MgKi8KLSNkZWZpbmUgUE9SVF9BVDkxUk05MjAwIDQ5CisvKiBBdG1lbCBBVDkxeHh4IFNvQyAqLworI2RlZmluZSBQT1JUX0FUOTEJNDkKIAogLyogTWFjaW50b3NoIFppbG9nIHR5cGUgbnVtYmVycyAqLwogI2RlZmluZSBQT1JUX01BQ19aSUxPRwk1MAkvKiBtNjhrIDogbm90IHlldCBpbXBsZW1lbnRlZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggNjZmODgxOS4uMTZlZWYwMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCkBAIC0xMzQsOSArMTM0LDEwIEBACiBzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvIHsKIAlhdG9taWNfdAlkYXRhcmVmOwogCXVuc2lnbmVkIHNob3J0CW5yX2ZyYWdzOwotCXVuc2lnbmVkIHNob3J0CXRzb19zaXplOwotCXVuc2lnbmVkIHNob3J0CXRzb19zZWdzOwotCXVuc2lnbmVkIHNob3J0ICB1Zm9fc2l6ZTsKKwl1bnNpZ25lZCBzaG9ydAlnc29fc2l6ZTsKKwkvKiBXYXJuaW5nOiB0aGlzIGZpZWxkIGlzIG5vdCBhbHdheXMgZmlsbGVkIGluIChVRk8pISAqLworCXVuc2lnbmVkIHNob3J0CWdzb19zZWdzOworCXVuc2lnbmVkIHNob3J0ICBnc29fdHlwZTsKIAl1bnNpZ25lZCBpbnQgICAgaXA2X2ZyYWdfaWQ7CiAJc3RydWN0IHNrX2J1ZmYJKmZyYWdfbGlzdDsKIAlza2JfZnJhZ190CWZyYWdzW01BWF9TS0JfRlJBR1NdOwpAQCAtMTY4LDYgKzE2OSwxMSBAQAogCVNLQl9GQ0xPTkVfQ0xPTkUsCiB9OwogCitlbnVtIHsKKwlTS0JfR1NPX1RDUFY0ID0gMSA8PCAwLAorCVNLQl9HU09fVURQVjQgPSAxIDw8IDEsCit9OworCiAvKiogCiAgKglzdHJ1Y3Qgc2tfYnVmZiAtIHNvY2tldCBidWZmZXIKICAqCUBuZXh0OiBOZXh0IGJ1ZmZlciBpbiBsaXN0CkBAIC0yMDksNiArMjE1LDggQEAKICAqCUBuZl9icmlkZ2U6IFNhdmVkIGRhdGEgYWJvdXQgYSBicmlkZ2VkIGZyYW1lIC0gc2VlIGJyX25ldGZpbHRlci5jCiAgKglAdGNfaW5kZXg6IFRyYWZmaWMgY29udHJvbCBpbmRleAogICoJQHRjX3ZlcmQ6IHRyYWZmaWMgY29udHJvbCB2ZXJkaWN0CisgKglAZG1hX2Nvb2tpZTogYSBjb29raWUgdG8gb25lIG9mIHNldmVyYWwgcG9zc2libGUgRE1BIG9wZXJhdGlvbnMKKyAqCQlkb25lIGJ5IHNrYiBETUEgZnVuY3Rpb25zCiAgKglAc2VjbWFyazogc2VjdXJpdHkgbWFya2luZwogICovCiAKQEAgLTM0NSw3ICszNTMsNyBAQAogZXh0ZXJuIHN0cnVjdCBza19idWZmICpza2JfY29weV9leHBhbmQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICAgICAgaW50IG5ld2hlYWRyb29tLCBpbnQgbmV3dGFpbHJvb20sCiAJCQkJICAgICAgIGdmcF90IHByaW9yaXR5KTsKLWV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqCQlza2JfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpOworZXh0ZXJuIGludAkgICAgICAgc2tiX3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKTsKICNkZWZpbmUgZGV2X2tmcmVlX3NrYihhKQlrZnJlZV9za2IoYSkKIGV4dGVybiB2b2lkCSAgICAgIHNrYl9vdmVyX3BhbmljKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4sCiAJCQkJICAgICB2b2lkICpoZXJlKTsKQEAgLTExMjIsMTYgKzExMzAsMTUgQEAKICAqCiAgKglQYWRzIHVwIGEgYnVmZmVyIHRvIGVuc3VyZSB0aGUgdHJhaWxpbmcgYnl0ZXMgZXhpc3QgYW5kIGFyZQogICoJYmxhbmtlZC4gSWYgdGhlIGJ1ZmZlciBhbHJlYWR5IGNvbnRhaW5zIHN1ZmZpY2llbnQgZGF0YSBpdAotICoJaXMgdW50b3VjaGVkLiBSZXR1cm5zIHRoZSBidWZmZXIsIHdoaWNoIG1heSBiZSBhIHJlcGxhY2VtZW50Ci0gKglmb3IgdGhlIG9yaWdpbmFsLCBvciBOVUxMIGZvciBvdXQgb2YgbWVtb3J5IC0gaW4gd2hpY2ggY2FzZQotICoJdGhlIG9yaWdpbmFsIGJ1ZmZlciBpcyBzdGlsbCBmcmVlZC4KKyAqCWlzIHVudG91Y2hlZC4gT3RoZXJ3aXNlIGl0IGlzIGV4dGVuZGVkLiBSZXR1cm5zIHplcm8gb24KKyAqCXN1Y2Nlc3MuIFRoZSBza2IgaXMgZnJlZWQgb24gZXJyb3IuCiAgKi8KICAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9wYWR0byhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQorc3RhdGljIGlubGluZSBpbnQgc2tiX3BhZHRvKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJdW5zaWduZWQgaW50IHNpemUgPSBza2ItPmxlbjsKIAlpZiAobGlrZWx5KHNpemUgPj0gbGVuKSkKLQkJcmV0dXJuIHNrYjsKKwkJcmV0dXJuIDA7CiAJcmV0dXJuIHNrYl9wYWQoc2tiLCBsZW4tc2l6ZSk7CiB9CiAKQEAgLTEyOTIsNiArMTI5OSw3IEBACiAJCQkJIHN0cnVjdCBza19idWZmICpza2IxLCBjb25zdCB1MzIgbGVuKTsKIAogZXh0ZXJuIHZvaWQJICAgICAgIHNrYl9yZWxlYXNlX2RhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYik7CitleHRlcm4gc3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBzZyk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqc2tiX2hlYWRlcl9wb2ludGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsCiAJCQkJICAgICAgIGludCBsZW4sIHZvaWQgKmJ1ZmZlcikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKaW5kZXggOWRjOTMxNjMuLjQ1YWQ1NWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2xhYi5oCisrKyBiL2luY2x1ZGUvbGludXgvc2xhYi5oCkBAIC04Niw2ICs4Niw1MSBAQAogICAgIF9fa21hbGxvY190cmFja19jYWxsZXIoc2l6ZSwgZmxhZ3MsIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSkKICNlbmRpZgogCisvKioKKyAqIGttYWxsb2MgLSBhbGxvY2F0ZSBtZW1vcnkKKyAqIEBzaXplOiBob3cgbWFueSBieXRlcyBvZiBtZW1vcnkgYXJlIHJlcXVpcmVkLgorICogQGZsYWdzOiB0aGUgdHlwZSBvZiBtZW1vcnkgdG8gYWxsb2NhdGUuCisgKgorICoga21hbGxvYyBpcyB0aGUgbm9ybWFsIG1ldGhvZCBvZiBhbGxvY2F0aW5nIG1lbW9yeQorICogaW4gdGhlIGtlcm5lbC4KKyAqCisgKiBUaGUgQGZsYWdzIGFyZ3VtZW50IG1heSBiZSBvbmUgb2Y6CisgKgorICogJUdGUF9VU0VSIC0gQWxsb2NhdGUgbWVtb3J5IG9uIGJlaGFsZiBvZiB1c2VyLiAgTWF5IHNsZWVwLgorICoKKyAqICVHRlBfS0VSTkVMIC0gQWxsb2NhdGUgbm9ybWFsIGtlcm5lbCByYW0uICBNYXkgc2xlZXAuCisgKgorICogJUdGUF9BVE9NSUMgLSBBbGxvY2F0aW9uIHdpbGwgbm90IHNsZWVwLgorICogICBGb3IgZXhhbXBsZSwgdXNlIHRoaXMgaW5zaWRlIGludGVycnVwdCBoYW5kbGVycy4KKyAqCisgKiAlR0ZQX0hJR0hVU0VSIC0gQWxsb2NhdGUgcGFnZXMgZnJvbSBoaWdoIG1lbW9yeS4KKyAqCisgKiAlR0ZQX05PSU8gLSBEbyBub3QgZG8gYW55IEkvTyBhdCBhbGwgd2hpbGUgdHJ5aW5nIHRvIGdldCBtZW1vcnkuCisgKgorICogJUdGUF9OT0ZTIC0gRG8gbm90IG1ha2UgYW55IGZzIGNhbGxzIHdoaWxlIHRyeWluZyB0byBnZXQgbWVtb3J5LgorICoKKyAqIEFsc28gaXQgaXMgcG9zc2libGUgdG8gc2V0IGRpZmZlcmVudCBmbGFncyBieSBPUidpbmcKKyAqIGluIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBAZmxhZ3M6CisgKgorICogJV9fR0ZQX0NPTEQgLSBSZXF1ZXN0IGNhY2hlLWNvbGQgcGFnZXMgaW5zdGVhZCBvZgorICogICB0cnlpbmcgdG8gcmV0dXJuIGNhY2hlLXdhcm0gcGFnZXMuCisgKgorICogJV9fR0ZQX0RNQSAtIFJlcXVlc3QgbWVtb3J5IGZyb20gdGhlIERNQS1jYXBhYmxlIHpvbmUuCisgKgorICogJV9fR0ZQX0hJR0ggLSBUaGlzIGFsbG9jYXRpb24gaGFzIGhpZ2ggcHJpb3JpdHkgYW5kIG1heSB1c2UgZW1lcmdlbmN5IHBvb2xzLgorICoKKyAqICVfX0dGUF9ISUdITUVNIC0gQWxsb2NhdGVkIG1lbW9yeSBtYXkgYmUgZnJvbSBoaWdobWVtLgorICoKKyAqICVfX0dGUF9OT0ZBSUwgLSBJbmRpY2F0ZSB0aGF0IHRoaXMgYWxsb2NhdGlvbiBpcyBpbiBubyB3YXkgYWxsb3dlZCB0byBmYWlsCisgKiAgICh0aGluayB0d2ljZSBiZWZvcmUgdXNpbmcpLgorICoKKyAqICVfX0dGUF9OT1JFVFJZIC0gSWYgbWVtb3J5IGlzIG5vdCBpbW1lZGlhdGVseSBhdmFpbGFibGUsCisgKiAgIHRoZW4gZ2l2ZSB1cCBhdCBvbmNlLgorICoKKyAqICVfX0dGUF9OT1dBUk4gLSBJZiBhbGxvY2F0aW9uIGZhaWxzLCBkb24ndCBpc3N1ZSBhbnkgd2FybmluZ3MuCisgKgorICogJV9fR0ZQX1JFUEVBVCAtIElmIGFsbG9jYXRpb24gZmFpbHMgaW5pdGlhbGx5LCB0cnkgb25jZSBtb3JlIGJlZm9yZSBmYWlsaW5nLgorICovCiBzdGF0aWMgaW5saW5lIHZvaWQgKmttYWxsb2Moc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQogewogCWlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplKSkgewpAQCAtMTExLDYgKzE1NiwxMSBAQAogCiBleHRlcm4gdm9pZCAqX19remFsbG9jKHNpemVfdCwgZ2ZwX3QpOwogCisvKioKKyAqIGt6YWxsb2MgLSBhbGxvY2F0ZSBtZW1vcnkuIFRoZSBtZW1vcnkgaXMgc2V0IHRvIHplcm8uCisgKiBAc2l6ZTogaG93IG1hbnkgYnl0ZXMgb2YgbWVtb3J5IGFyZSByZXF1aXJlZC4KKyAqIEBmbGFnczogdGhlIHR5cGUgb2YgbWVtb3J5IHRvIGFsbG9jYXRlIChzZWUga21hbGxvYykuCisgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCAqa3phbGxvYyhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCiB7CiAJaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIGIvaW5jbHVkZS9saW51eC9zdHJpbmcuaAppbmRleCBjNjEzMDZkLi5lNGM3NTU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N0cmluZy5oCisrKyBiL2luY2x1ZGUvbGludXgvc3RyaW5nLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNpZm5kZWYgX19IQVZFX0FSQ0hfU1RSUkNIUgogZXh0ZXJuIGNoYXIgKiBzdHJyY2hyKGNvbnN0IGNoYXIgKixpbnQpOwogI2VuZGlmCitleHRlcm4gY2hhciAqIHN0cnN0cmlwKGNoYXIgKik7CiAjaWZuZGVmIF9fSEFWRV9BUkNIX1NUUlNUUgogZXh0ZXJuIGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VzcGVuZC5oIGIvaW5jbHVkZS9saW51eC9zdXNwZW5kLmgKaW5kZXggOTZlMzFhYS4uZTgyY2IxMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zdXNwZW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9zdXNwZW5kLmgKQEAgLTcxLDYgKzcxLDcgQEAKIHZvaWQgX19zYXZlX3Byb2Nlc3Nvcl9zdGF0ZShzdHJ1Y3Qgc2F2ZWRfY29udGV4dCAqY3R4dCk7CiB2b2lkIF9fcmVzdG9yZV9wcm9jZXNzb3Jfc3RhdGUoc3RydWN0IHNhdmVkX2NvbnRleHQgKmN0eHQpOwogdW5zaWduZWQgbG9uZyBnZXRfc2FmZV9wYWdlKGdmcF90IGdmcF9tYXNrKTsKK2ludCBzd3N1c3BfYWRkX2FyY2hfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwogCiAvKgogICogWFhYOiBXZSB0cnkgdG8ga2VlcCBzb21lIG1vcmUgcGFnZXMgZnJlZSBzbyB0aGF0IEkvTyBvcGVyYXRpb25zIHN1Y2NlZWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3dhcC5oIGIvaW5jbHVkZS9saW51eC9zd2FwLmgKaW5kZXggYWNhOWJmYS4uZGMzZjNhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmgKKysrIGIvaW5jbHVkZS9saW51eC9zd2FwLmgKQEAgLTI4LDcgKzI4LDE0IEBACiAgKiB0aGUgdHlwZS9vZmZzZXQgaW50byB0aGUgcHRlIGFzIDUvMjcgYXMgd2VsbC4KICAqLwogI2RlZmluZSBNQVhfU1dBUEZJTEVTX1NISUZUCTUKKyNpZm5kZWYgQ09ORklHX01JR1JBVElPTgogI2RlZmluZSBNQVhfU1dBUEZJTEVTCQkoMSA8PCBNQVhfU1dBUEZJTEVTX1NISUZUKQorI2Vsc2UKKy8qIFVzZSBsYXN0IHR3byBlbnRyaWVzIGZvciBwYWdlIG1pZ3JhdGlvbiBzd2FwIGVudHJpZXMgKi8KKyNkZWZpbmUgTUFYX1NXQVBGSUxFUwkJKCgxIDw8IE1BWF9TV0FQRklMRVNfU0hJRlQpLTIpCisjZGVmaW5lIFNXUF9NSUdSQVRJT05fUkVBRAlNQVhfU1dBUEZJTEVTCisjZGVmaW5lIFNXUF9NSUdSQVRJT05fV1JJVEUJKE1BWF9TV0FQRklMRVMgKyAxKQorI2VuZGlmCiAKIC8qCiAgKiBNYWdpYyBoZWFkZXIgZm9yIGEgc3dhcCBhcmVhLiBUaGUgZmlyc3QgcGFydCBvZiB0aGUgdW5pb24gaXMKQEAgLTQ4LDEyICs1NSwxNCBAQAogCQljaGFyIG1hZ2ljWzEwXTsJCQkvKiBTV0FQLVNQQUNFIG9yIFNXQVBTUEFDRTIgKi8KIAl9IG1hZ2ljOwogCXN0cnVjdCB7Ci0JCWNoYXIJICAgICBib290Yml0c1sxMDI0XTsJLyogU3BhY2UgZm9yIGRpc2tsYWJlbCBldGMuICovCi0JCXVuc2lnbmVkIGludCB2ZXJzaW9uOwotCQl1bnNpZ25lZCBpbnQgbGFzdF9wYWdlOwotCQl1bnNpZ25lZCBpbnQgbnJfYmFkcGFnZXM7Ci0JCXVuc2lnbmVkIGludCBwYWRkaW5nWzEyNV07Ci0JCXVuc2lnbmVkIGludCBiYWRwYWdlc1sxXTsKKwkJY2hhcgkJYm9vdGJpdHNbMTAyNF07CS8qIFNwYWNlIGZvciBkaXNrbGFiZWwgZXRjLiAqLworCQlfX3UzMgkJdmVyc2lvbjsKKwkJX191MzIJCWxhc3RfcGFnZTsKKwkJX191MzIJCW5yX2JhZHBhZ2VzOworCQl1bnNpZ25lZCBjaGFyCXN3c191dWlkWzE2XTsKKwkJdW5zaWduZWQgY2hhcglzd3Nfdm9sdW1lWzE2XTsKKwkJX191MzIJCXBhZGRpbmdbMTE3XTsKKwkJX191MzIJCWJhZHBhZ2VzWzFdOwogCX0gaW5mbzsKIH07CiAKQEAgLTE3NiwyMCArMTg1LDcgQEAKIGV4dGVybiB1bnNpZ25lZCBsb25nIHNocmlua19hbGxfbWVtb3J5KHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwogZXh0ZXJuIGludCB2bV9zd2FwcGluZXNzOwogZXh0ZXJuIGludCByZW1vdmVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgc3RydWN0IHBhZ2UgKnBhZ2UpOwotCi0vKiBwb3NzaWJsZSBvdXRjb21lIG9mIHBhZ2VvdXQoKSAqLwotdHlwZWRlZiBlbnVtIHsKLQkvKiBmYWlsZWQgdG8gd3JpdGUgcGFnZSBvdXQsIHBhZ2UgaXMgbG9ja2VkICovCi0JUEFHRV9LRUVQLAotCS8qIG1vdmUgcGFnZSB0byB0aGUgYWN0aXZlIGxpc3QsIHBhZ2UgaXMgbG9ja2VkICovCi0JUEFHRV9BQ1RJVkFURSwKLQkvKiBwYWdlIGhhcyBiZWVuIHNlbnQgdG8gdGhlIGRpc2sgc3VjY2Vzc2Z1bGx5LCBwYWdlIGlzIHVubG9ja2VkICovCi0JUEFHRV9TVUNDRVNTLAotCS8qIHBhZ2UgaXMgY2xlYW4gYW5kIGxvY2tlZCAqLwotCVBBR0VfQ0xFQU4sCi19IHBhZ2VvdXRfdDsKLQotZXh0ZXJuIHBhZ2VvdXRfdCBwYWdlb3V0KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CitleHRlcm4gbG9uZyB2bV90b3RhbF9wYWdlczsKIAogI2lmZGVmIENPTkZJR19OVU1BCiBleHRlcm4gaW50IHpvbmVfcmVjbGFpbV9tb2RlOwpAQCAtMjUwLDcgKzI0Niw2IEBACiBzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbzsKIAogZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcF9sb2NrOwotZXh0ZXJuIGludCByZW1vdmVfdm1hX3N3YXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlKTsKIAogLyogbGludXgvbW0vdGhyYXNoLmMgKi8KIGV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogc3dhcF90b2tlbl9tbTsKQEAgLTI4OCwxOCArMjgzLDYwIEBACiAjZGVmaW5lIGZyZWVfcGFnZXNfYW5kX3N3YXBfY2FjaGUocGFnZXMsIG5yKSBcCiAJcmVsZWFzZV9wYWdlcygocGFnZXMpLCAobnIpLCAwKTsKIAotI2RlZmluZSBzaG93X3N3YXBfY2FjaGVfaW5mbygpCQkJLypOT1RISU5HKi8KLSNkZWZpbmUgZnJlZV9zd2FwX2FuZF9jYWNoZShzd3ApCQkvKk5PVEhJTkcqLwotI2RlZmluZSBzd2FwX2R1cGxpY2F0ZShzd3ApCQkJLypOT1RISU5HKi8KLSNkZWZpbmUgc3dhcF9mcmVlKHN3cCkJCQkJLypOT1RISU5HKi8KLSNkZWZpbmUgcmVhZF9zd2FwX2NhY2hlX2FzeW5jKHN3cCx2bWEsYWRkcikJTlVMTAotI2RlZmluZSBsb29rdXBfc3dhcF9jYWNoZShzd3ApCQkJTlVMTAotI2RlZmluZSB2YWxpZF9zd2FwaGFuZGxlcyhzd3AsIG9mZikJCTAKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9zd2FwX2FuZF9jYWNoZShzd3BfZW50cnlfdCBzd3ApCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHN3YXBfZHVwbGljYXRlKHN3cF9lbnRyeV90IHN3cCkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN3YXBfZnJlZShzd3BfZW50cnlfdCBzd3ApCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKnJlYWRfc3dhcF9jYWNoZV9hc3luYyhzd3BfZW50cnlfdCBzd3AsCisJCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKQoreworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpsb29rdXBfc3dhcF9jYWNoZShzd3BfZW50cnlfdCBzd3ApCit7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHZhbGlkX3N3YXBoYW5kbGVzKHN3cF9lbnRyeV90IGVudHJ5LCB1bnNpZ25lZCBsb25nICpvZmZzZXQpCit7CisJcmV0dXJuIDA7Cit9CisKICNkZWZpbmUgY2FuX3NoYXJlX3N3YXBfcGFnZShwKQkJCShwYWdlX21hcGNvdW50KHApID09IDEpCi0jZGVmaW5lIG1vdmVfdG9fc3dhcF9jYWNoZShwLCBzd3ApCQkxCi0jZGVmaW5lIG1vdmVfZnJvbV9zd2FwX2NhY2hlKHAsIGksIG0pCQkxCi0jZGVmaW5lIF9fZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShwKQkJLypOT1RISU5HKi8KLSNkZWZpbmUgZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShwKQkJLypOT1RISU5HKi8KKworc3RhdGljIGlubGluZSBpbnQgbW92ZV90b19zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlLCBzd3BfZW50cnlfdCBlbnRyeSkKK3sKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbW92ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgaW5kZXgsCisJCQkJCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoreworCXJldHVybiAxOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19kZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKK30KKwogI2RlZmluZSBzd2FwX3Rva2VuX2RlZmF1bHRfdGltZW91dAkJMAogCiBzdGF0aWMgaW5saW5lIGludCByZW1vdmVfZXhjbHVzaXZlX3N3YXBfcGFnZShzdHJ1Y3QgcGFnZSAqcCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3dhcG9wcy5oIGIvaW5jbHVkZS9saW51eC9zd2Fwb3BzLmgKaW5kZXggODdiOWQxNC4uZWM2MzlhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zd2Fwb3BzLmgKKysrIGIvaW5jbHVkZS9saW51eC9zd2Fwb3BzLmgKQEAgLTY3LDMgKzY3LDU2IEBACiAJQlVHX09OKHB0ZV9maWxlKF9fc3dwX2VudHJ5X3RvX3B0ZShhcmNoX2VudHJ5KSkpOwogCXJldHVybiBfX3N3cF9lbnRyeV90b19wdGUoYXJjaF9lbnRyeSk7CiB9CisKKyNpZmRlZiBDT05GSUdfTUlHUkFUSU9OCitzdGF0aWMgaW5saW5lIHN3cF9lbnRyeV90IG1ha2VfbWlncmF0aW9uX2VudHJ5KHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgd3JpdGUpCit7CisJQlVHX09OKCFQYWdlTG9ja2VkKHBhZ2UpKTsKKwlyZXR1cm4gc3dwX2VudHJ5KHdyaXRlID8gU1dQX01JR1JBVElPTl9XUklURSA6IFNXUF9NSUdSQVRJT05fUkVBRCwKKwkJCXBhZ2VfdG9fcGZuKHBhZ2UpKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgaXNfbWlncmF0aW9uX2VudHJ5KHN3cF9lbnRyeV90IGVudHJ5KQoreworCXJldHVybiB1bmxpa2VseShzd3BfdHlwZShlbnRyeSkgPT0gU1dQX01JR1JBVElPTl9SRUFEIHx8CisJCQlzd3BfdHlwZShlbnRyeSkgPT0gU1dQX01JR1JBVElPTl9XUklURSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGlzX3dyaXRlX21pZ3JhdGlvbl9lbnRyeShzd3BfZW50cnlfdCBlbnRyeSkKK3sKKwlyZXR1cm4gdW5saWtlbHkoc3dwX3R5cGUoZW50cnkpID09IFNXUF9NSUdSQVRJT05fV1JJVEUpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICptaWdyYXRpb25fZW50cnlfdG9fcGFnZShzd3BfZW50cnlfdCBlbnRyeSkKK3sKKwlzdHJ1Y3QgcGFnZSAqcCA9IHBmbl90b19wYWdlKHN3cF9vZmZzZXQoZW50cnkpKTsKKwkvKgorCSAqIEFueSB1c2Ugb2YgbWlncmF0aW9uIGVudHJpZXMgbWF5IG9ubHkgb2NjdXIgd2hpbGUgdGhlCisJICogY29ycmVzcG9uZGluZyBwYWdlIGlzIGxvY2tlZAorCSAqLworCUJVR19PTighUGFnZUxvY2tlZChwKSk7CisJcmV0dXJuIHA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtYWtlX21pZ3JhdGlvbl9lbnRyeV9yZWFkKHN3cF9lbnRyeV90ICplbnRyeSkKK3sKKwkqZW50cnkgPSBzd3BfZW50cnkoU1dQX01JR1JBVElPTl9SRUFELCBzd3Bfb2Zmc2V0KCplbnRyeSkpOworfQorCitleHRlcm4gdm9pZCBtaWdyYXRpb25fZW50cnlfd2FpdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwKKwkJCQkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKKyNlbHNlCisKKyNkZWZpbmUgbWFrZV9taWdyYXRpb25fZW50cnkocGFnZSwgd3JpdGUpIHN3cF9lbnRyeSgwLCAwKQorI2RlZmluZSBpc19taWdyYXRpb25fZW50cnkoc3dwKSAwCisjZGVmaW5lIG1pZ3JhdGlvbl9lbnRyeV90b19wYWdlKHN3cCkgTlVMTAorc3RhdGljIGlubGluZSB2b2lkIG1ha2VfbWlncmF0aW9uX2VudHJ5X3JlYWQoc3dwX2VudHJ5X3QgKmVudHJ5cCkgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgbWlncmF0aW9uX2VudHJ5X3dhaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsCisJCQkJCSB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIHsgfQorc3RhdGljIGlubGluZSBpbnQgaXNfd3JpdGVfbWlncmF0aW9uX2VudHJ5KHN3cF9lbnRyeV90IGVudHJ5KQoreworCXJldHVybiAwOworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zeXNjYWxscy5oIGIvaW5jbHVkZS9saW51eC9zeXNjYWxscy5oCmluZGV4IGJkNjdhNDQuLjMzNzg1YjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3lzY2FsbHMuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgKQEAgLTUxNiw2ICs1MTYsMTYgQEAKIGFzbWxpbmthZ2UgbG9uZyBzeXNfbWlncmF0ZV9wYWdlcyhwaWRfdCBwaWQsIHVuc2lnbmVkIGxvbmcgbWF4bm9kZSwKIAkJCQljb25zdCB1bnNpZ25lZCBsb25nIF9fdXNlciAqZnJvbSwKIAkJCQljb25zdCB1bnNpZ25lZCBsb25nIF9fdXNlciAqdG8pOworYXNtbGlua2FnZSBsb25nIHN5c19tb3ZlX3BhZ2VzKHBpZF90IHBpZCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJCQljb25zdCB2b2lkIF9fdXNlciAqIF9fdXNlciAqcGFnZXMsCisJCQkJY29uc3QgaW50IF9fdXNlciAqbm9kZXMsCisJCQkJaW50IF9fdXNlciAqc3RhdHVzLAorCQkJCWludCBmbGFncyk7Cithc21saW5rYWdlIGxvbmcgY29tcGF0X3N5c19tb3ZlX3BhZ2VzKHBpZF90IHBpZCwgdW5zaWduZWQgbG9uZyBucl9wYWdlLAorCQkJCV9fdTMyIF9fdXNlciAqcGFnZXMsCisJCQkJY29uc3QgaW50IF9fdXNlciAqbm9kZXMsCisJCQkJaW50IF9fdXNlciAqc3RhdHVzLAorCQkJCWludCBmbGFncyk7CiBhc21saW5rYWdlIGxvbmcgc3lzX21iaW5kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuLAogCQkJCXVuc2lnbmVkIGxvbmcgbW9kZSwKIAkJCQl1bnNpZ25lZCBsb25nIF9fdXNlciAqbm1hc2ssCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIGIvaW5jbHVkZS9saW51eC9zeXNjdGwuaAppbmRleCBjZWU5NDRkLi5jNzEzMjAyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oCisrKyBiL2luY2x1ZGUvbGludXgvc3lzY3RsLmgKQEAgLTE4Niw2ICsxODYsNyBAQAogCVZNX1BFUkNQVV9QQUdFTElTVF9GUkFDVElPTj0zMCwvKiBpbnQ6IGZyYWN0aW9uIG9mIHBhZ2VzIGluIGVhY2ggcGVyY3B1X3BhZ2VsaXN0ICovCiAJVk1fWk9ORV9SRUNMQUlNX01PREU9MzEsIC8qIHJlY2xhaW0gbG9jYWwgem9uZSBtZW1vcnkgYmVmb3JlIGdvaW5nIG9mZiBub2RlICovCiAJVk1fWk9ORV9SRUNMQUlNX0lOVEVSVkFMPTMyLCAvKiB0aW1lIHBlcmlvZCB0byB3YWl0IGFmdGVyIHJlY2xhaW0gZmFpbHVyZSAqLworCVZNX1BBTklDX09OX09PTT0zMywJLyogcGFuaWMgYXQgb3V0LW9mLW1lbW9yeSAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N5c2Rldi5oIGIvaW5jbHVkZS9saW51eC9zeXNkZXYuaAppbmRleCAyYTRiNDMyLi4xNjZhMmU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N5c2Rldi5oCisrKyBiL2luY2x1ZGUvbGludXgvc3lzZGV2LmgKQEAgLTM3LDExICszNywyNyBAQAogCXN0cnVjdCBrc2V0CQlrc2V0OwogfTsKIAorc3RydWN0IHN5c2Rldl9jbGFzc19hdHRyaWJ1dGUgeworCXN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKKwlzc2l6ZV90ICgqc2hvdykoc3RydWN0IHN5c2Rldl9jbGFzcyAqLCBjaGFyICopOworCXNzaXplX3QgKCpzdG9yZSkoc3RydWN0IHN5c2Rldl9jbGFzcyAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7Cit9OworCisjZGVmaW5lIFNZU0RFVl9DTEFTU19BVFRSKF9uYW1lLF9tb2RlLF9zaG93LF9zdG9yZSkgCQlcCitzdHJ1Y3Qgc3lzZGV2X2NsYXNzX2F0dHJpYnV0ZSBhdHRyXyMjX25hbWUgPSB7IAkJCVwKKwkuYXR0ciA9IHsubmFtZSA9IF9fc3RyaW5naWZ5KF9uYW1lKSwgLm1vZGUgPSBfbW9kZSB9LAlcCisJLnNob3cJPSBfc2hvdywJCQkJCVwKKwkuc3RvcmUJPSBfc3RvcmUsCQkJCQlcCit9OworCiAKIGV4dGVybiBpbnQgc3lzZGV2X2NsYXNzX3JlZ2lzdGVyKHN0cnVjdCBzeXNkZXZfY2xhc3MgKik7CiBleHRlcm4gdm9pZCBzeXNkZXZfY2xhc3NfdW5yZWdpc3RlcihzdHJ1Y3Qgc3lzZGV2X2NsYXNzICopOwogCi0KK2V4dGVybiBpbnQgc3lzZGV2X2NsYXNzX2NyZWF0ZV9maWxlKHN0cnVjdCBzeXNkZXZfY2xhc3MgKiwKKwlzdHJ1Y3Qgc3lzZGV2X2NsYXNzX2F0dHJpYnV0ZSAqKTsKK2V4dGVybiB2b2lkIHN5c2Rldl9jbGFzc19yZW1vdmVfZmlsZShzdHJ1Y3Qgc3lzZGV2X2NsYXNzICosCisJc3RydWN0IHN5c2Rldl9jbGFzc19hdHRyaWJ1dGUgKik7CiAvKioKICAqIEF1eGlsbGFyeSBzeXN0ZW0gZGV2aWNlIGRyaXZlcnMuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGNwLmggYi9pbmNsdWRlL2xpbnV4L3RjcC5oCmluZGV4IDQyMGE2ODkuLjhlYmY0OTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdGNwLmgKKysrIGIvaW5jbHVkZS9saW51eC90Y3AuaApAQCAtMTgsNyArMTgsNiBAQAogI2RlZmluZSBfTElOVVhfVENQX0gKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgvZG1hZW5naW5lLmg+CiAjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgogCiBzdHJ1Y3QgdGNwaGRyIHsKQEAgLTE2MSw2ICsxNjAsNyBAQAogI2lmZGVmIF9fS0VSTkVMX18KIAogI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgogI2luY2x1ZGUgPG5ldC9zb2NrLmg+CiAjaW5jbHVkZSA8bmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg+CiAjaW5jbHVkZSA8bmV0L2luZXRfdGltZXdhaXRfc29jay5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90dHkuaCBiL2luY2x1ZGUvbGludXgvdHR5LmgKaW5kZXggZTg5OGVlYi4uY2IzNWNhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90dHkuaAorKysgYi9pbmNsdWRlL2xpbnV4L3R0eS5oCkBAIC0yOTAsNyArMjkwLDkgQEAKIGV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MpOwogZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIpOwogZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7Ci1leHRlcm4gdm9pZCB0dHlfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGluZGV4LCBzdHJ1Y3QgZGV2aWNlICpkZXYpOworZXh0ZXJuIHN0cnVjdCBjbGFzc19kZXZpY2UgKnR0eV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwKKwkJCQkJCXVuc2lnbmVkIGluZGV4LAorCQkJCQkJc3RydWN0IGRldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIHR0eV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBpbmRleCk7CiBleHRlcm4gaW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgKmJ1ZnAsCiAJCQkgICAgIGludCBidWZsZW4pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91YWNjZXNzLmggYi9pbmNsdWRlL2xpbnV4L3VhY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTFlN2VkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC91YWNjZXNzLmgKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBfX0xJTlVYX1VBQ0NFU1NfSF9fCisjZGVmaW5lIF9fTElOVVhfVUFDQ0VTU19IX18KKworI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisKKyNpZm5kZWYgQVJDSF9IQVNfTk9DQUNIRV9VQUNDRVNTCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljX25vY2FjaGUodm9pZCAqdG8sCisJCQkJY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3sKKwlyZXR1cm4gX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NvcHlfZnJvbV91c2VyX25vY2FjaGUodm9pZCAqdG8sCisJCQkJY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKK3sKKwlyZXR1cm4gX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbik7Cit9CisKKyNlbmRpZgkJLyogQVJDSF9IQVNfTk9DQUNIRV9VQUNDRVNTICovCisKKyNlbmRpZgkJLyogX19MSU5VWF9VQUNDRVNTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmgKaW5kZXggMWY0OTJjMC4uOGRlYWQzMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi5oCkBAIC00MCw2ICs0MCw4IEBACiAgKiBEZXZpY2VzIG1heSBhbHNvIGhhdmUgY2xhc3Mtc3BlY2lmaWMgb3IgdmVuZG9yLXNwZWNpZmljIGRlc2NyaXB0b3JzLgogICovCiAKK3N0cnVjdCBlcF9kZXZpY2U7CisKIC8qKgogICogc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50IC0gaG9zdC1zaWRlIGVuZHBvaW50IGRlc2NyaXB0b3IgYW5kIHF1ZXVlCiAgKiBAZGVzYzogZGVzY3JpcHRvciBmb3IgdGhpcyBlbmRwb2ludCwgd01heFBhY2tldFNpemUgaW4gbmF0aXZlIGJ5dGVvcmRlcgpAQCAtNTcsNyArNTksNyBAQAogCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvcglkZXNjOwogCXN0cnVjdCBsaXN0X2hlYWQJCXVyYl9saXN0OwogCXZvaWQJCQkJKmhjcHJpdjsKLQlzdHJ1Y3Qga29iamVjdAkJCSprb2JqOwkvKiBGb3Igc3lzZnMgaW5mbyAqLworCXN0cnVjdCBlcF9kZXZpY2UgCQkqZXBfZGV2OwkvKiBGb3Igc3lzZnMgaW5mbyAqLwogCiAJdW5zaWduZWQgY2hhciAqZXh0cmE7ICAgLyogRXh0cmEgZGVzY3JpcHRvcnMgKi8KIAlpbnQgZXh0cmFsZW47CkBAIC0xMDEsNyArMTAzLDggQEAKICAqIEBjb25kaXRpb246IGJpbmRpbmcgc3RhdGUgb2YgdGhlIGludGVyZmFjZTogbm90IGJvdW5kLCBiaW5kaW5nCiAgKgkoaW4gcHJvYmUoKSksIGJvdW5kIHRvIGEgZHJpdmVyLCBvciB1bmJpbmRpbmcgKGluIGRpc2Nvbm5lY3QoKSkKICAqIEBkZXY6IGRyaXZlciBtb2RlbCdzIHZpZXcgb2YgdGhpcyBkZXZpY2UKLSAqIEBjbGFzc19kZXY6IGRyaXZlciBtb2RlbCdzIGNsYXNzIHZpZXcgb2YgdGhpcyBkZXZpY2UuCisgKiBAdXNiX2RldjogaWYgYW4gaW50ZXJmYWNlIGlzIGJvdW5kIHRvIHRoZSBVU0IgbWFqb3IsIHRoaXMgd2lsbCBwb2ludAorICoJdG8gdGhlIHN5c2ZzIHJlcHJlc2VudGF0aW9uIGZvciB0aGF0IGRldmljZS4KICAqCiAgKiBVU0IgZGV2aWNlIGRyaXZlcnMgYXR0YWNoIHRvIGludGVyZmFjZXMgb24gYSBwaHlzaWNhbCBkZXZpY2UuICBFYWNoCiAgKiBpbnRlcmZhY2UgZW5jYXBzdWxhdGVzIGEgc2luZ2xlIGhpZ2ggbGV2ZWwgZnVuY3Rpb24sIHN1Y2ggYXMgZmVlZGluZwpAQCAtMTQxLDcgKzE0NCw3IEBACiAJCQkJCSAqIGJvdW5kIHRvICovCiAJZW51bSB1c2JfaW50ZXJmYWNlX2NvbmRpdGlvbiBjb25kaXRpb247CQkvKiBzdGF0ZSBvZiBiaW5kaW5nICovCiAJc3RydWN0IGRldmljZSBkZXY7CQkvKiBpbnRlcmZhY2Ugc3BlY2lmaWMgZGV2aWNlIGluZm8gKi8KLQlzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXY7CisJc3RydWN0IGRldmljZSAqdXNiX2RldjsJCS8qIHBvaW50ZXIgdG8gdGhlIHVzYiBjbGFzcydzIGRldmljZSwgaWYgYW55ICovCiB9OwogI2RlZmluZQl0b191c2JfaW50ZXJmYWNlKGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSwgZGV2KQogI2RlZmluZQlpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpIFwKQEAgLTM1OCw3ICszNjEsNyBAQAogCWNoYXIgKnNlcmlhbDsJCQkvKiBpU2VyaWFsTnVtYmVyIHN0cmluZywgaWYgcHJlc2VudCAqLwogCiAJc3RydWN0IGxpc3RfaGVhZCBmaWxlbGlzdDsKLQlzdHJ1Y3QgY2xhc3NfZGV2aWNlICpjbGFzc19kZXY7CisJc3RydWN0IGRldmljZSAqdXNiZnNfZGV2OwogCXN0cnVjdCBkZW50cnkgKnVzYmZzX2RlbnRyeTsJLyogdXNiZnMgZGVudHJ5IGVudHJ5IGZvciB0aGUgZGV2aWNlICovCiAKIAkvKgpAQCAtMzg2LDYgKzM4OSw4IEBACiAKIC8qIFVTQiBwb3J0IHJlc2V0IGZvciBkZXZpY2UgcmVpbml0aWFsaXphdGlvbiAqLwogZXh0ZXJuIGludCB1c2JfcmVzZXRfZGV2aWNlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYpOworZXh0ZXJuIGludCB1c2JfcmVzZXRfY29tcG9zaXRlX2RldmljZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LAorCQlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaWZhY2UpOwogCiBleHRlcm4gc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9maW5kX2RldmljZSh1MTYgdmVuZG9yX2lkLCB1MTYgcHJvZHVjdF9pZCk7CiAKQEAgLTU1NCw2ICs1NTksMTAgQEAKICAqCWRvIChvciBkb24ndCkgc2hvdyB1cCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzeXN0ZW0uCiAgKiBAc3VzcGVuZDogQ2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBnb2luZyB0byBiZSBzdXNwZW5kZWQgYnkgdGhlIHN5c3RlbS4KICAqIEByZXN1bWU6IENhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgYmVpbmcgcmVzdW1lZCBieSB0aGUgc3lzdGVtLgorICogQHByZV9yZXNldDogQ2FsbGVkIGJ5IHVzYl9yZXNldF9jb21wb3NpdGVfZGV2aWNlKCkgd2hlbiB0aGUgZGV2aWNlCisgKglpcyBhYm91dCB0byBiZSByZXNldC4KKyAqIEBwb3N0X3Jlc2V0OiBDYWxsZWQgYnkgdXNiX3Jlc2V0X2NvbXBvc2l0ZV9kZXZpY2UoKSBhZnRlciB0aGUgZGV2aWNlCisgKgloYXMgYmVlbiByZXNldC4KICAqIEBpZF90YWJsZTogVVNCIGRyaXZlcnMgdXNlIElEIHRhYmxlIHRvIHN1cHBvcnQgaG90cGx1Z2dpbmcuCiAgKglFeHBvcnQgdGhpcyB3aXRoIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLC4uLikuICBUaGlzIG11c3QgYmUgc2V0CiAgKglvciB5b3VyIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgZ2V0IGNhbGxlZC4KQEAgLTU5Miw2ICs2MDEsOSBAQAogCWludCAoKnN1c3BlbmQpIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpOwogCWludCAoKnJlc3VtZSkgKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKIAorCXZvaWQgKCpwcmVfcmVzZXQpIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisJdm9pZCAoKnBvc3RfcmVzZXQpIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisKIAljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWRfdGFibGU7CiAKIAlzdHJ1Y3QgdXNiX2R5bmlkcyBkeW5pZHM7CkBAIC0xMDA4LDYgKzEwMjAsOCBAQAogZXh0ZXJuIGludCB1c2JfY29udHJvbF9tc2coc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJX191OCByZXF1ZXN0LCBfX3U4IHJlcXVlc3R0eXBlLCBfX3UxNiB2YWx1ZSwgX191MTYgaW5kZXgsCiAJdm9pZCAqZGF0YSwgX191MTYgc2l6ZSwgaW50IHRpbWVvdXQpOworZXh0ZXJuIGludCB1c2JfaW50ZXJydXB0X21zZyhzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgdW5zaWduZWQgaW50IHBpcGUsCisJdm9pZCAqZGF0YSwgaW50IGxlbiwgaW50ICphY3R1YWxfbGVuZ3RoLCBpbnQgdGltZW91dCk7CiBleHRlcm4gaW50IHVzYl9idWxrX21zZyhzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJdm9pZCAqZGF0YSwgaW50IGxlbiwgaW50ICphY3R1YWxfbGVuZ3RoLAogCWludCB0aW1lb3V0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiX2NkYy5oIGIvaW5jbHVkZS9saW51eC91c2IvY2RjLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGluY2x1ZGUvbGludXgvdXNiX2NkYy5oCnJlbmFtZSB0byBpbmNsdWRlL2xpbnV4L3VzYi9jZGMuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2JfaW5wdXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL2lucHV0LmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGluY2x1ZGUvbGludXgvdXNiX2lucHV0LmgKcmVuYW1lIHRvIGluY2x1ZGUvbGludXgvdXNiL2lucHV0LmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiX2lzcDExNnguaCBiL2luY2x1ZGUvbGludXgvdXNiL2lzcDExNnguaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW5jbHVkZS9saW51eC91c2JfaXNwMTE2eC5oCnJlbmFtZSB0byBpbmNsdWRlL2xpbnV4L3VzYi9pc3AxMTZ4LmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiX3NsODExLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9zbDgxMS5oCnNpbWlsYXJpdHkgaW5kZXggNzAlCnJlbmFtZSBmcm9tIGluY2x1ZGUvbGludXgvdXNiX3NsODExLmgKcmVuYW1lIHRvIGluY2x1ZGUvbGludXgvdXNiL3NsODExLmgKaW5kZXggNGYyZDAxMi4uMzk3ZWUzYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2Jfc2w4MTEuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9zbDgxMS5oCkBAIC0xNCwxMyArMTQsMTMgQEAKIAl1OAkJcG93ZXI7CiAKIAkvKiBzbDgxMSByZWxpZXMgb24gYW4gZXh0ZXJuYWwgc291cmNlIG9mIFZCVVMgY3VycmVudCAqLwotCXZvaWQgCQkoKnBvcnRfcG93ZXIpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlzX29uKTsKKwl2b2lkCQkoKnBvcnRfcG93ZXIpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlzX29uKTsKIAogCS8qIHB1bHNlIHNsODExIG5SU1QgKHByb2JhYmx5IHdpdGggYSBHUElPKSAqLwotCXZvaWQgCQkoKnJlc2V0KShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCXZvaWQJCSgqcmVzZXQpKHN0cnVjdCBkZXZpY2UgKmRldik7CiAKIAkvLyBzb21lIGJvYXJkcyBuZWVkIHNvbWV0aGluZyBsaWtlIHRoZXNlOgotIAkvLyBpbnQgCQkoKmNoZWNrX292ZXJjdXJyZW50KShzdHJ1Y3QgZGV2aWNlICpkZXYpOwotIAkvLyB2b2lkIAkoKmNsb2NrX2VuYWJsZSkoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgaXNfb24pOworCS8vIGludAkJKCpjaGVja19vdmVyY3VycmVudCkoc3RydWN0IGRldmljZSAqZGV2KTsKKwkvLyB2b2lkCQkoKmNsb2NrX2VuYWJsZSkoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgaXNfb24pOwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC92bWFsbG9jLmggYi9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaAppbmRleCAxZDU1NzdiLi5mNjAyNGFiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaAorKysgYi9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaApAQCAtNCwxMCArNCwxMyBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4JCS8qIHBncHJvdF90ICovCiAKK3N0cnVjdCB2bV9hcmVhX3N0cnVjdDsKKwogLyogYml0cyBpbiB2bV9zdHJ1Y3QtPmZsYWdzICovCiAjZGVmaW5lIFZNX0lPUkVNQVAJMHgwMDAwMDAwMQkvKiBpb3JlbWFwKCkgYW5kIGZyaWVuZHMgKi8KICNkZWZpbmUgVk1fQUxMT0MJMHgwMDAwMDAwMgkvKiB2bWFsbG9jKCkgKi8KICNkZWZpbmUgVk1fTUFQCQkweDAwMDAwMDA0CS8qIHZtYXAoKWVkIHBhZ2VzICovCisjZGVmaW5lIFZNX1VTRVJNQVAJMHgwMDAwMDAwOAkvKiBzdWl0YWJsZSBmb3IgcmVtYXBfdm1hbGxvY19yYW5nZSAqLwogLyogYml0cyBbMjAuLjMyXSByZXNlcnZlZCBmb3IgYXJjaCBzcGVjaWZpYyBpb3JlbWFwIGludGVybmFscyAqLwogCiAvKgpAQCAtMzIsOSArMzUsMTEgQEAKICAqCUhpZ2hsZXZlbCBBUElzIGZvciBkcml2ZXIgdXNlCiAgKi8KIGV4dGVybiB2b2lkICp2bWFsbG9jKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CitleHRlcm4gdm9pZCAqdm1hbGxvY191c2VyKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiBleHRlcm4gdm9pZCAqdm1hbGxvY19ub2RlKHVuc2lnbmVkIGxvbmcgc2l6ZSwgaW50IG5vZGUpOwogZXh0ZXJuIHZvaWQgKnZtYWxsb2NfZXhlYyh1bnNpZ25lZCBsb25nIHNpemUpOwogZXh0ZXJuIHZvaWQgKnZtYWxsb2NfMzIodW5zaWduZWQgbG9uZyBzaXplKTsKK2V4dGVybiB2b2lkICp2bWFsbG9jXzMyX3VzZXIodW5zaWduZWQgbG9uZyBzaXplKTsKIGV4dGVybiB2b2lkICpfX3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzaXplLCBnZnBfdCBnZnBfbWFzaywgcGdwcm90X3QgcHJvdCk7CiBleHRlcm4gdm9pZCAqX192bWFsbG9jX2FyZWEoc3RydWN0IHZtX3N0cnVjdCAqYXJlYSwgZ2ZwX3QgZ2ZwX21hc2ssCiAJCQkJcGdwcm90X3QgcHJvdCk7CkBAIC00NSw2ICs1MCw5IEBACiBleHRlcm4gdm9pZCAqdm1hcChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB1bnNpZ25lZCBpbnQgY291bnQsCiAJCQl1bnNpZ25lZCBsb25nIGZsYWdzLCBwZ3Byb3RfdCBwcm90KTsKIGV4dGVybiB2b2lkIHZ1bm1hcCh2b2lkICphZGRyKTsKKworZXh0ZXJuIGludCByZW1hcF92bWFsbG9jX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB2b2lkICphZGRyLAorCQkJCQkJCXVuc2lnbmVkIGxvbmcgcGdvZmYpOwogIAogLyoKICAqCUxvd2xldmVsLUFQSXMgKG5vdCBmb3IgZHJpdmVyIHVzZSEpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3dyaXRlYmFjay5oIGIvaW5jbHVkZS9saW51eC93cml0ZWJhY2suaAppbmRleCA1NmY5MmZjLi45ZTM4YjU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3dyaXRlYmFjay5oCisrKyBiL2luY2x1ZGUvbGludXgvd3JpdGViYWNrLmgKQEAgLTUwLDE0ICs1MCwxNSBAQAogCSAqIGEgaGludCB0aGF0IHRoZSBmaWxlc3lzdGVtIG5lZWQgb25seSB3cml0ZSBvdXQgdGhlIHBhZ2VzIGluc2lkZSB0aGF0CiAJICogYnl0ZXJhbmdlLiAgVGhlIGJ5dGUgYXQgYGVuZCcgaXMgaW5jbHVkZWQgaW4gdGhlIHdyaXRlb3V0IHJlcXVlc3QuCiAJICovCi0JbG9mZl90IHN0YXJ0OwotCWxvZmZfdCBlbmQ7CisJbG9mZl90IHJhbmdlX3N0YXJ0OworCWxvZmZfdCByYW5nZV9lbmQ7CiAKIAl1bnNpZ25lZCBub25ibG9ja2luZzoxOwkJLyogRG9uJ3QgZ2V0IHN0dWNrIG9uIHJlcXVlc3QgcXVldWVzICovCiAJdW5zaWduZWQgZW5jb3VudGVyZWRfY29uZ2VzdGlvbjoxOyAvKiBBbiBvdXRwdXQ6IGEgcXVldWUgaXMgZnVsbCAqLwogCXVuc2lnbmVkIGZvcl9rdXBkYXRlOjE7CQkvKiBBIGt1cGRhdGUgd3JpdGViYWNrICovCiAJdW5zaWduZWQgZm9yX3JlY2xhaW06MTsJCS8qIEludm9rZWQgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKi8KIAl1bnNpZ25lZCBmb3Jfd3JpdGVwYWdlczoxOwkvKiBUaGlzIGlzIGEgd3JpdGVwYWdlcygpIGNhbGwgKi8KKwl1bnNpZ25lZCByYW5nZV9jeWNsaWM6MTsJLyogcmFuZ2Vfc3RhcnQgaXMgY3ljbGljICovCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC96Y29uZi5oIGIvaW5jbHVkZS9saW51eC96Y29uZi5oCmluZGV4IGYxY2ZkNjYuLjBiZWI3NWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvemNvbmYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3pjb25mLmgKQEAgLTM1LDYgKzM1LDE4IEBACiAjICBkZWZpbmUgTUFYX1dCSVRTICAgMTUgLyogMzJLIExaNzcgd2luZG93ICovCiAjZW5kaWYKIAorLyogZGVmYXVsdCB3aW5kb3dCaXRzIGZvciBkZWNvbXByZXNzaW9uLiBNQVhfV0JJVFMgaXMgZm9yIGNvbXByZXNzaW9uIG9ubHkgKi8KKyNpZm5kZWYgREVGX1dCSVRTCisjICBkZWZpbmUgREVGX1dCSVRTIE1BWF9XQklUUworI2VuZGlmCisKKy8qIGRlZmF1bHQgbWVtTGV2ZWwgKi8KKyNpZiBNQVhfTUVNX0xFVkVMID49IDgKKyMgIGRlZmluZSBERUZfTUVNX0xFVkVMIDgKKyNlbHNlCisjICBkZWZpbmUgREVGX01FTV9MRVZFTCAgTUFYX01FTV9MRVZFTAorI2VuZGlmCisKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFR5cGUgZGVjbGFyYXRpb25zICovCiAKIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgQnl0ZTsgIC8qIDggYml0cyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC96bGliLmggYi9pbmNsdWRlL2xpbnV4L3psaWIuaAppbmRleCA0ZmEzMmYwLi45ZTMxOTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3psaWIuaAorKysgYi9pbmNsdWRlL2xpbnV4L3psaWIuaApAQCAtMSw3ICsxLDYgQEAKIC8qIHpsaWIuaCAtLSBpbnRlcmZhY2Ugb2YgdGhlICd6bGliJyBnZW5lcmFsIHB1cnBvc2UgY29tcHJlc3Npb24gbGlicmFyeQotICB2ZXJzaW9uIDEuMS4zLCBKdWx5IDl0aCwgMTk5OAogCi0gIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKKyAgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgogCiAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCiAgIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKQEAgLTI0LDcgKzIzLDcgQEAKIAogCiAgIFRoZSBkYXRhIGZvcm1hdCB1c2VkIGJ5IHRoZSB6bGliIGxpYnJhcnkgaXMgZGVzY3JpYmVkIGJ5IFJGQ3MgKFJlcXVlc3QgZm9yCi0gIENvbW1lbnRzKSAxOTUwIHRvIDE5NTIgaW4gdGhlIGZpbGVzIGZ0cDovL2RzLmludGVybmljLm5ldC9yZmMvcmZjMTk1MC50eHQKKyAgQ29tbWVudHMpIDE5NTAgdG8gMTk1MiBpbiB0aGUgZmlsZXMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MC50eHQKICAgKHpsaWIgZm9ybWF0KSwgcmZjMTk1MS50eHQgKGRlZmxhdGUgZm9ybWF0KSBhbmQgcmZjMTk1Mi50eHQgKGd6aXAgZm9ybWF0KS4KICovCiAKQEAgLTMzLDcgKzMyLDIyIEBACiAKICNpbmNsdWRlIDxsaW51eC96Y29uZi5oPgogCi0jZGVmaW5lIFpMSUJfVkVSU0lPTiAiMS4xLjMiCisvKiB6bGliIGRlZmxhdGUgYmFzZWQgb24gWkxJQl9WRVJTSU9OICIxLjEuMyIgKi8KKy8qIHpsaWIgaW5mbGF0ZSBiYXNlZCBvbiBaTElCX1ZFUlNJT04gIjEuMi4zIiAqLworCisvKgorICBUaGlzIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB6bGliIGZvciB1c2UgaW5zaWRlIHRoZSBMaW51eCBrZXJuZWwuCisgIFRoZSBtYWluIGNoYW5nZXMgYXJlIHRvIHBlcmZvcm0gYWxsIG1lbW9yeSBhbGxvY2F0aW9uIGluIGFkdmFuY2UuCisKKyAgSW5mbGF0aW9uIENoYW5nZXM6CisgICAgKiBaX1BBQ0tFVF9GTFVTSCBpcyBhZGRlZCBhbmQgdXNlZCBieSBwcHBfZGVmbGF0ZS4gQmVmb3JlIHJldHVybmluZworICAgICAgdGhpcyBjaGVja3MgdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBkYXRhIGF2YWlsYWJsZSBhbmQgdGhlIG5leHQgZGF0YQorICAgICAgaXMgYSBTVE9SRUQgYmxvY2suIEl0IGFsc28gcmVzZXRzIHRoZSBtb2RlIHRvIGJlIHJlYWQgZm9yIHRoZSBuZXh0CisgICAgICBkYXRhLCBhbGwgYXMgcGVyIFBQUCByZXF1aXJlbWVudHMuCisgICAgKiBBZGRpdGlvbiBvZiB6bGliX2luZmxhdGVJbmNvbXAgd2hpY2ggY29waWVzIGluY29tcHJlc3NpYmxlIGRhdGEgaW50bworICAgICAgdGhlIGhpc3Rvcnkgd2luZG93IGFuZCBhZGp1c3RzIHRoZSBhY2NvdXRuaW5nIHdpdGhvdXQgY2FsbGluZworICAgICAgemxpYl9pbmZsYXRlIGl0c2VsZiB0byBpbmZsYXRlIHRoZSBkYXRhLgorKi8KIAogLyogCiAgICAgIFRoZSAnemxpYicgY29tcHJlc3Npb24gbGlicmFyeSBwcm92aWRlcyBpbi1tZW1vcnkgY29tcHJlc3Npb24gYW5kCkBAIC00OCw5ICs2MiwxOCBAQAogICBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtZSB0aGUgb3V0cHV0CiAgIChwcm92aWRpbmcgbW9yZSBvdXRwdXQgc3BhY2UpIGJlZm9yZSBlYWNoIGNhbGwuCiAKKyAgICAgVGhlIGNvbXByZXNzZWQgZGF0YSBmb3JtYXQgdXNlZCBieSBkZWZhdWx0IGJ5IHRoZSBpbi1tZW1vcnkgZnVuY3Rpb25zIGlzCisgIHRoZSB6bGliIGZvcm1hdCwgd2hpY2ggaXMgYSB6bGliIHdyYXBwZXIgZG9jdW1lbnRlZCBpbiBSRkMgMTk1MCwgd3JhcHBlZAorICBhcm91bmQgYSBkZWZsYXRlIHN0cmVhbSwgd2hpY2ggaXMgaXRzZWxmIGRvY3VtZW50ZWQgaW4gUkZDIDE5NTEuCisKICAgICAgVGhlIGxpYnJhcnkgYWxzbyBzdXBwb3J0cyByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIGd6aXAgKC5neikgZm9ybWF0CiAgIHdpdGggYW4gaW50ZXJmYWNlIHNpbWlsYXIgdG8gdGhhdCBvZiBzdGRpby4KIAorICAgICBUaGUgemxpYiBmb3JtYXQgd2FzIGRlc2lnbmVkIHRvIGJlIGNvbXBhY3QgYW5kIGZhc3QgZm9yIHVzZSBpbiBtZW1vcnkKKyAgYW5kIG9uIGNvbW11bmljYXRpb25zIGNoYW5uZWxzLiAgVGhlIGd6aXAgZm9ybWF0IHdhcyBkZXNpZ25lZCBmb3Igc2luZ2xlLQorICBmaWxlIGNvbXByZXNzaW9uIG9uIGZpbGUgc3lzdGVtcywgaGFzIGEgbGFyZ2VyIGhlYWRlciB0aGFuIHpsaWIgdG8gbWFpbnRhaW4KKyAgZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhbmQgdXNlcyBhIGRpZmZlcmVudCwgc2xvd2VyIGNoZWNrIG1ldGhvZCB0aGFuIHpsaWIuCisKICAgICAgVGhlIGxpYnJhcnkgZG9lcyBub3QgaW5zdGFsbCBhbnkgc2lnbmFsIGhhbmRsZXIuIFRoZSBkZWNvZGVyIGNoZWNrcwogICB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSwgc28gdGhlIGxpYnJhcnkgc2hvdWxkIG5ldmVyCiAgIGNyYXNoIGV2ZW4gaW4gY2FzZSBvZiBjb3JydXB0ZWQgaW5wdXQuCkBAIC0xMTksNyArMTQyLDggQEAKICNkZWZpbmUgWl9TWU5DX0ZMVVNIICAgIDMKICNkZWZpbmUgWl9GVUxMX0ZMVVNIICAgIDQKICNkZWZpbmUgWl9GSU5JU0ggICAgICAgIDUKLS8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovCisjZGVmaW5lIFpfQkxPQ0sgICAgICAgICA2IC8qIE9ubHkgZm9yIGluZmxhdGUgYXQgcHJlc2VudCAqLworLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLwogCiAjZGVmaW5lIFpfT0sgICAgICAgICAgICAwCiAjZGVmaW5lIFpfU1RSRUFNX0VORCAgICAxCkBAIC0xNTUsMTMgKzE3OSw2IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhc2ljIGZ1bmN0aW9ucyAqLwogCi1leHRlcm4gY29uc3QgY2hhciAqIHpsaWJfemxpYlZlcnNpb24gKHZvaWQpOwotLyogVGhlIGFwcGxpY2F0aW9uIGNhbiBjb21wYXJlIHpsaWJWZXJzaW9uIGFuZCBaTElCX1ZFUlNJT04gZm9yIGNvbnNpc3RlbmN5LgotICAgSWYgdGhlIGZpcnN0IGNoYXJhY3RlciBkaWZmZXJzLCB0aGUgbGlicmFyeSBjb2RlIGFjdHVhbGx5IHVzZWQgaXMKLSAgIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHpsaWIuaCBoZWFkZXIgZmlsZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KLSAgIFRoaXMgY2hlY2sgaXMgYXV0b21hdGljYWxseSBtYWRlIGJ5IGRlZmxhdGVJbml0IGFuZCBpbmZsYXRlSW5pdC4KLSAqLwotCiBleHRlcm4gaW50IHpsaWJfZGVmbGF0ZV93b3Jrc3BhY2VzaXplICh2b2lkKTsKIC8qCiAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBuZWVkcyB0byBiZSBhbGxvY2F0ZWQgZm9yIGEgcGVyLQpAQCAtMzE1LDkgKzMzMiw5IEBACiBleHRlcm4gaW50IHpsaWJfaW5mbGF0ZSAoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCk7CiAvKgogICAgIGluZmxhdGUgZGVjb21wcmVzc2VzIGFzIG11Y2ggZGF0YSBhcyBwb3NzaWJsZSwgYW5kIHN0b3BzIHdoZW4gdGhlIGlucHV0Ci0gIGJ1ZmZlciBiZWNvbWVzIGVtcHR5IG9yIHRoZSBvdXRwdXQgYnVmZmVyIGJlY29tZXMgZnVsbC4gSXQgbWF5IHNvbWUKLSAgaW50cm9kdWNlIHNvbWUgb3V0cHV0IGxhdGVuY3kgKHJlYWRpbmcgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYW55IG91dHB1dCkKLSAgZXhjZXB0IHdoZW4gZm9yY2VkIHRvIGZsdXNoLgorICBidWZmZXIgYmVjb21lcyBlbXB0eSBvciB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNvbWVzIGZ1bGwuIEl0IG1heSBpbnRyb2R1Y2UKKyAgc29tZSBvdXRwdXQgbGF0ZW5jeSAocmVhZGluZyBpbnB1dCB3aXRob3V0IHByb2R1Y2luZyBhbnkgb3V0cHV0KSBleGNlcHQgd2hlbgorICBmb3JjZWQgdG8gZmx1c2guCiAKICAgVGhlIGRldGFpbGVkIHNlbWFudGljcyBhcmUgYXMgZm9sbG93cy4gaW5mbGF0ZSBwZXJmb3JtcyBvbmUgb3IgYm90aCBvZiB0aGUKICAgZm9sbG93aW5nIGFjdGlvbnM6CkBAIC0zNDEsMTEgKzM1OCwyNiBAQAogICBtdXN0IGJlIGNhbGxlZCBhZ2FpbiBhZnRlciBtYWtpbmcgcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciBiZWNhdXNlIHRoZXJlCiAgIG1pZ2h0IGJlIG1vcmUgb3V0cHV0IHBlbmRpbmcuCiAKLSAgICBJZiB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIHNldCB0byBaX1NZTkNfRkxVU0gsIGluZmxhdGUgZmx1c2hlcyBhcyBtdWNoCi0gIG91dHB1dCBhcyBwb3NzaWJsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhlIGZsdXNoaW5nIGJlaGF2aW9yIG9mIGluZmxhdGUgaXMKLSAgbm90IHNwZWNpZmllZCBmb3IgdmFsdWVzIG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgb3RoZXIgdGhhbiBaX1NZTkNfRkxVU0gKLSAgYW5kIFpfRklOSVNILCBidXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgZmx1c2hlcyBhcyBtdWNoIG91dHB1dAotICBhcyBwb3NzaWJsZSBhbnl3YXkuCisgICAgVGhlIGZsdXNoIHBhcmFtZXRlciBvZiBpbmZsYXRlKCkgY2FuIGJlIFpfTk9fRkxVU0gsIFpfU1lOQ19GTFVTSCwKKyAgWl9GSU5JU0gsIG9yIFpfQkxPQ0suIFpfU1lOQ19GTFVTSCByZXF1ZXN0cyB0aGF0IGluZmxhdGUoKSBmbHVzaCBhcyBtdWNoCisgIG91dHB1dCBhcyBwb3NzaWJsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlci4gWl9CTE9DSyByZXF1ZXN0cyB0aGF0IGluZmxhdGUoKSBzdG9wCisgIGlmIGFuZCB3aGVuIGl0IGdldHMgdG8gdGhlIG5leHQgZGVmbGF0ZSBibG9jayBib3VuZGFyeS4gV2hlbiBkZWNvZGluZyB0aGUKKyAgemxpYiBvciBnemlwIGZvcm1hdCwgdGhpcyB3aWxsIGNhdXNlIGluZmxhdGUoKSB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIKKyAgdGhlIGhlYWRlciBhbmQgYmVmb3JlIHRoZSBmaXJzdCBibG9jay4gV2hlbiBkb2luZyBhIHJhdyBpbmZsYXRlLCBpbmZsYXRlKCkKKyAgd2lsbCBnbyBhaGVhZCBhbmQgcHJvY2VzcyB0aGUgZmlyc3QgYmxvY2ssIGFuZCB3aWxsIHJldHVybiB3aGVuIGl0IGdldHMgdG8KKyAgdGhlIGVuZCBvZiB0aGF0IGJsb2NrLCBvciB3aGVuIGl0IHJ1bnMgb3V0IG9mIGRhdGEuCisKKyAgICBUaGUgWl9CTE9DSyBvcHRpb24gYXNzaXN0cyBpbiBhcHBlbmRpbmcgdG8gb3IgY29tYmluaW5nIGRlZmxhdGUgc3RyZWFtcy4KKyAgQWxzbyB0byBhc3Npc3QgaW4gdGhpcywgb24gcmV0dXJuIGluZmxhdGUoKSB3aWxsIHNldCBzdHJtLT5kYXRhX3R5cGUgdG8gdGhlCisgIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBieXRlIHRha2VuIGZyb20gc3RybS0+bmV4dF9pbiwgcGx1cyA2NAorICBpZiBpbmZsYXRlKCkgaXMgY3VycmVudGx5IGRlY29kaW5nIHRoZSBsYXN0IGJsb2NrIGluIHRoZSBkZWZsYXRlIHN0cmVhbSwKKyAgcGx1cyAxMjggaWYgaW5mbGF0ZSgpIHJldHVybmVkIGltbWVkaWF0ZWx5IGFmdGVyIGRlY29kaW5nIGFuIGVuZC1vZi1ibG9jaworICBjb2RlIG9yIGRlY29kaW5nIHRoZSBjb21wbGV0ZSBoZWFkZXIgdXAgdG8ganVzdCBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlCisgIGRlZmxhdGUgc3RyZWFtLiBUaGUgZW5kLW9mLWJsb2NrIHdpbGwgbm90IGJlIGluZGljYXRlZCB1bnRpbCBhbGwgb2YgdGhlCisgIHVuY29tcHJlc3NlZCBkYXRhIGZyb20gdGhhdCBibG9jayBoYXMgYmVlbiB3cml0dGVuIHRvIHN0cm0tPm5leHRfb3V0LiAgVGhlCisgIG51bWJlciBvZiB1bnVzZWQgYml0cyBtYXkgaW4gZ2VuZXJhbCBiZSBncmVhdGVyIHRoYW4gc2V2ZW4sIGV4Y2VwdCB3aGVuCisgIGJpdCA3IG9mIGRhdGFfdHlwZSBpcyBzZXQsIGluIHdoaWNoIGNhc2UgdGhlIG51bWJlciBvZiB1bnVzZWQgYml0cyB3aWxsIGJlCisgIGxlc3MgdGhhbiBlaWdodC4KIAogICAgIGluZmxhdGUoKSBzaG91bGQgbm9ybWFsbHkgYmUgY2FsbGVkIHVudGlsIGl0IHJldHVybnMgWl9TVFJFQU1fRU5EIG9yIGFuCiAgIGVycm9yLiBIb3dldmVyIGlmIGFsbCBkZWNvbXByZXNzaW9uIGlzIHRvIGJlIHBlcmZvcm1lZCBpbiBhIHNpbmdsZSBzdGVwCkBAIC0zNTUsMjkgKzM4Nyw0NCBAQAogICB1bmNvbXByZXNzZWQgZGF0YS4gKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtYXkgaGF2ZSBiZWVuIHNhdmVkCiAgIGJ5IHRoZSBjb21wcmVzc29yIGZvciB0aGlzIHB1cnBvc2UuKSBUaGUgbmV4dCBvcGVyYXRpb24gb24gdGhpcyBzdHJlYW0gbXVzdAogICBiZSBpbmZsYXRlRW5kIHRvIGRlYWxsb2NhdGUgdGhlIGRlY29tcHJlc3Npb24gc3RhdGUuIFRoZSB1c2Ugb2YgWl9GSU5JU0gKLSAgaXMgbmV2ZXIgcmVxdWlyZWQsIGJ1dCBjYW4gYmUgdXNlZCB0byBpbmZvcm0gaW5mbGF0ZSB0aGF0IGEgZmFzdGVyIHJvdXRpbmUKKyAgaXMgbmV2ZXIgcmVxdWlyZWQsIGJ1dCBjYW4gYmUgdXNlZCB0byBpbmZvcm0gaW5mbGF0ZSB0aGF0IGEgZmFzdGVyIGFwcHJvYWNoCiAgIG1heSBiZSB1c2VkIGZvciB0aGUgc2luZ2xlIGluZmxhdGUoKSBjYWxsLgogCi0gICAgIElmIGEgcHJlc2V0IGRpY3Rpb25hcnkgaXMgbmVlZGVkIGF0IHRoaXMgcG9pbnQgKHNlZSBpbmZsYXRlU2V0RGljdGlvbmFyeQotICBiZWxvdyksIGluZmxhdGUgc2V0cyBzdHJtLWFkbGVyIHRvIHRoZSBhZGxlcjMyIGNoZWNrc3VtIG9mIHRoZQotICBkaWN0aW9uYXJ5IGNob3NlbiBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX05FRURfRElDVDsgb3RoZXJ3aXNlIAotICBpdCBzZXRzIHN0cm0tPmFkbGVyIHRvIHRoZSBhZGxlcjMyIGNoZWNrc3VtIG9mIGFsbCBvdXRwdXQgcHJvZHVjZWQKLSAgc28gZmFyICh0aGF0IGlzLCB0b3RhbF9vdXQgYnl0ZXMpIGFuZCByZXR1cm5zIFpfT0ssIFpfU1RSRUFNX0VORCBvcgotICBhbiBlcnJvciBjb2RlIGFzIGRlc2NyaWJlZCBiZWxvdy4gQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkKLSAgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzIgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUKLSAgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KKyAgICAgSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaW5mbGF0ZSgpIGFsd2F5cyBmbHVzaGVzIGFzIG11Y2ggb3V0cHV0IGFzCisgIHBvc3NpYmxlIHRvIHRoZSBvdXRwdXQgYnVmZmVyLCBhbmQgYWx3YXlzIHVzZXMgdGhlIGZhc3RlciBhcHByb2FjaCBvbiB0aGUKKyAgZmlyc3QgY2FsbC4gU28gdGhlIG9ubHkgZWZmZWN0IG9mIHRoZSBmbHVzaCBwYXJhbWV0ZXIgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbgorICBpcyBvbiB0aGUgcmV0dXJuIHZhbHVlIG9mIGluZmxhdGUoKSwgYXMgbm90ZWQgYmVsb3csIG9yIHdoZW4gaXQgcmV0dXJucyBlYXJseQorICBiZWNhdXNlIFpfQkxPQ0sgaXMgdXNlZC4KKworICAgICBJZiBhIHByZXNldCBkaWN0aW9uYXJ5IGlzIG5lZWRlZCBhZnRlciB0aGlzIGNhbGwgKHNlZSBpbmZsYXRlU2V0RGljdGlvbmFyeQorICBiZWxvdyksIGluZmxhdGUgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiB0aGUgZGljdGlvbmFyeQorICBjaG9zZW4gYnkgdGhlIGNvbXByZXNzb3IgYW5kIHJldHVybnMgWl9ORUVEX0RJQ1Q7IG90aGVyd2lzZSBpdCBzZXRzCisgIHN0cm0tPmFkbGVyIHRvIHRoZSBhZGxlcjMyIGNoZWNrc3VtIG9mIGFsbCBvdXRwdXQgcHJvZHVjZWQgc28gZmFyICh0aGF0IGlzLAorICB0b3RhbF9vdXQgYnl0ZXMpIGFuZCByZXR1cm5zIFpfT0ssIFpfU1RSRUFNX0VORCBvciBhbiBlcnJvciBjb2RlIGFzIGRlc2NyaWJlZAorICBiZWxvdy4gQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzIKKyAgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQKKyAgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KKworICAgIGluZmxhdGUoKSB3aWxsIGRlY29tcHJlc3MgYW5kIGNoZWNrIGVpdGhlciB6bGliLXdyYXBwZWQgb3IgZ3ppcC13cmFwcGVkCisgIGRlZmxhdGUgZGF0YS4gIFRoZSBoZWFkZXIgdHlwZSBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LiAgQW55IGluZm9ybWF0aW9uCisgIGNvbnRhaW5lZCBpbiB0aGUgZ3ppcCBoZWFkZXIgaXMgbm90IHJldGFpbmVkLCBzbyBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRoYXQKKyAgaW5mb3JtYXRpb24gc2hvdWxkIGluc3RlYWQgdXNlIHJhdyBpbmZsYXRlLCBzZWUgaW5mbGF0ZUluaXQyKCkgYmVsb3csIG9yCisgIGluZmxhdGVCYWNrKCkgYW5kIHBlcmZvcm0gdGhlaXIgb3duIHByb2Nlc3Npbmcgb2YgdGhlIGd6aXAgaGVhZGVyIGFuZAorICB0cmFpbGVyLgogCiAgICAgaW5mbGF0ZSgpIHJldHVybnMgWl9PSyBpZiBzb21lIHByb2dyZXNzIGhhcyBiZWVuIG1hZGUgKG1vcmUgaW5wdXQgcHJvY2Vzc2VkCiAgIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlmIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMKICAgYmVlbiByZWFjaGVkIGFuZCBhbGwgdW5jb21wcmVzc2VkIG91dHB1dCBoYXMgYmVlbiBwcm9kdWNlZCwgWl9ORUVEX0RJQ1QgaWYgYQogICBwcmVzZXQgZGljdGlvbmFyeSBpcyBuZWVkZWQgYXQgdGhpcyBwb2ludCwgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcwotICBjb3JydXB0ZWQgKGlucHV0IHN0cmVhbSBub3QgY29uZm9ybWluZyB0byB0aGUgemxpYiBmb3JtYXQgb3IgaW5jb3JyZWN0Ci0gIGFkbGVyMzIgY2hlY2tzdW0pLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50Ci0gIChmb3IgZXhhbXBsZSBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBOVUxMKSwgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAotICBlbm91Z2ggbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90Ci0gIGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyIHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4gSW4gdGhlIFpfREFUQV9FUlJPUgotICBjYXNlLCB0aGUgYXBwbGljYXRpb24gbWF5IHRoZW4gY2FsbCBpbmZsYXRlU3luYyB0byBsb29rIGZvciBhIGdvb2QKLSAgY29tcHJlc3Npb24gYmxvY2suCisgIGNvcnJ1cHRlZCAoaW5wdXQgc3RyZWFtIG5vdCBjb25mb3JtaW5nIHRvIHRoZSB6bGliIGZvcm1hdCBvciBpbmNvcnJlY3QgY2hlY2sKKyAgdmFsdWUpLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0cnVjdHVyZSB3YXMgaW5jb25zaXN0ZW50IChmb3IgZXhhbXBsZQorICBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBOVUxMKSwgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggbWVtb3J5LAorICBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZQorICBvdXRwdXQgYnVmZmVyIHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4gTm90ZSB0aGF0IFpfQlVGX0VSUk9SIGlzIG5vdCBmYXRhbCwgYW5kCisgIGluZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8KKyAgY29udGludWUgZGVjb21wcmVzc2luZy4gSWYgWl9EQVRBX0VSUk9SIGlzIHJldHVybmVkLCB0aGUgYXBwbGljYXRpb24gbWF5IHRoZW4KKyAgY2FsbCBpbmZsYXRlU3luYygpIHRvIGxvb2sgZm9yIGEgZ29vZCBjb21wcmVzc2lvbiBibG9jayBpZiBhIHBhcnRpYWwgcmVjb3ZlcnkKKyAgb2YgdGhlIGRhdGEgaXMgZGVzaXJlZC4KICovCiAKIApAQCAtNTQ3LDE2ICs1OTQsMzYgQEAKICAgICAgVGhlIHdpbmRvd0JpdHMgcGFyYW1ldGVyIGlzIHRoZSBiYXNlIHR3byBsb2dhcml0aG0gb2YgdGhlIG1heGltdW0gd2luZG93CiAgICBzaXplICh0aGUgc2l6ZSBvZiB0aGUgaGlzdG9yeSBidWZmZXIpLiAgSXQgc2hvdWxkIGJlIGluIHRoZSByYW5nZSA4Li4xNSBmb3IKICAgIHRoaXMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUgaWYgaW5mbGF0ZUluaXQgaXMgdXNlZAotICAgaW5zdGVhZC4gSWYgYSBjb21wcmVzc2VkIHN0cmVhbSB3aXRoIGEgbGFyZ2VyIHdpbmRvdyBzaXplIGlzIGdpdmVuIGFzCi0gICBpbnB1dCwgaW5mbGF0ZSgpIHdpbGwgcmV0dXJuIHdpdGggdGhlIGVycm9yIGNvZGUgWl9EQVRBX0VSUk9SIGluc3RlYWQgb2YKLSAgIHRyeWluZyB0byBhbGxvY2F0ZSBhIGxhcmdlciB3aW5kb3cuCisgICBpbnN0ZWFkLiB3aW5kb3dCaXRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB3aW5kb3dCaXRzIHZhbHVlCisgICBwcm92aWRlZCB0byBkZWZsYXRlSW5pdDIoKSB3aGlsZSBjb21wcmVzc2luZywgb3IgaXQgbXVzdCBiZSBlcXVhbCB0byAxNSBpZgorICAgZGVmbGF0ZUluaXQyKCkgd2FzIG5vdCB1c2VkLiBJZiBhIGNvbXByZXNzZWQgc3RyZWFtIHdpdGggYSBsYXJnZXIgd2luZG93CisgICBzaXplIGlzIGdpdmVuIGFzIGlucHV0LCBpbmZsYXRlKCkgd2lsbCByZXR1cm4gd2l0aCB0aGUgZXJyb3IgY29kZQorICAgWl9EQVRBX0VSUk9SIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFsbG9jYXRlIGEgbGFyZ2VyIHdpbmRvdy4KIAotICAgICAgaW5mbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAotICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBhIHBhcmFtZXRlciBpcyBpbnZhbGlkIChzdWNoIGFzIGEgbmVnYXRpdmUKLSAgIG1lbUxldmVsKS4gbXNnIGlzIHNldCB0byBudWxsIGlmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UuICBpbmZsYXRlSW5pdDIKLSAgIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24gYXBhcnQgZnJvbSByZWFkaW5nIHRoZSB6bGliIGhlYWRlciBpZgotICAgcHJlc2VudDogdGhpcyB3aWxsIGJlIGRvbmUgYnkgaW5mbGF0ZSgpLiAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlCi0gICBtb2RpZmllZCwgYnV0IG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVuY2hhbmdlZC4pCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgLTguLi0xNSBmb3IgcmF3IGluZmxhdGUuIEluIHRoaXMgY2FzZSwgLXdpbmRvd0JpdHMKKyAgIGRldGVybWluZXMgdGhlIHdpbmRvdyBzaXplLiBpbmZsYXRlKCkgd2lsbCB0aGVuIHByb2Nlc3MgcmF3IGRlZmxhdGUgZGF0YSwKKyAgIG5vdCBsb29raW5nIGZvciBhIHpsaWIgb3IgZ3ppcCBoZWFkZXIsIG5vdCBnZW5lcmF0aW5nIGEgY2hlY2sgdmFsdWUsIGFuZCBub3QKKyAgIGxvb2tpbmcgZm9yIGFueSBjaGVjayB2YWx1ZXMgZm9yIGNvbXBhcmlzb24gYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLiBUaGlzCisgICBpcyBmb3IgdXNlIHdpdGggb3RoZXIgZm9ybWF0cyB0aGF0IHVzZSB0aGUgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0CisgICBzdWNoIGFzIHppcC4gIFRob3NlIGZvcm1hdHMgcHJvdmlkZSB0aGVpciBvd24gY2hlY2sgdmFsdWVzLiBJZiBhIGN1c3RvbQorICAgZm9ybWF0IGlzIGRldmVsb3BlZCB1c2luZyB0aGUgcmF3IGRlZmxhdGUgZm9ybWF0IGZvciBjb21wcmVzc2VkIGRhdGEsIGl0IGlzCisgICByZWNvbW1lbmRlZCB0aGF0IGEgY2hlY2sgdmFsdWUgc3VjaCBhcyBhbiBhZGxlcjMyIG9yIGEgY3JjMzIgYmUgYXBwbGllZCB0bworICAgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGFzIGlzIGRvbmUgaW4gdGhlIHpsaWIsIGd6aXAsIGFuZCB6aXAgZm9ybWF0cy4gIEZvcgorICAgbW9zdCBhcHBsaWNhdGlvbnMsIHRoZSB6bGliIGZvcm1hdCBzaG91bGQgYmUgdXNlZCBhcyBpcy4gTm90ZSB0aGF0IGNvbW1lbnRzCisgICBhYm92ZSBvbiB0aGUgdXNlIGluIGRlZmxhdGVJbml0MigpIGFwcGxpZXMgdG8gdGhlIG1hZ25pdHVkZSBvZiB3aW5kb3dCaXRzLgorCisgICAgIHdpbmRvd0JpdHMgY2FuIGFsc28gYmUgZ3JlYXRlciB0aGFuIDE1IGZvciBvcHRpb25hbCBnemlwIGRlY29kaW5nLiBBZGQKKyAgIDMyIHRvIHdpbmRvd0JpdHMgdG8gZW5hYmxlIHpsaWIgYW5kIGd6aXAgZGVjb2Rpbmcgd2l0aCBhdXRvbWF0aWMgaGVhZGVyCisgICBkZXRlY3Rpb24sIG9yIGFkZCAxNiB0byBkZWNvZGUgb25seSB0aGUgZ3ppcCBmb3JtYXQgKHRoZSB6bGliIGZvcm1hdCB3aWxsCisgICByZXR1cm4gYSBaX0RBVEFfRVJST1IpLiAgSWYgYSBnemlwIHN0cmVhbSBpcyBiZWluZyBkZWNvZGVkLCBzdHJtLT5hZGxlciBpcworICAgYSBjcmMzMiBpbnN0ZWFkIG9mIGFuIGFkbGVyMzIuCisKKyAgICAgaW5mbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAorICAgbWVtb3J5LCBaX1NUUkVBTV9FUlJPUiBpZiBhIHBhcmFtZXRlciBpcyBpbnZhbGlkIChzdWNoIGFzIGEgbnVsbCBzdHJtKS4gbXNnCisgICBpcyBzZXQgdG8gbnVsbCBpZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgaW5mbGF0ZUluaXQyIGRvZXMgbm90IHBlcmZvcm0KKyAgIGFueSBkZWNvbXByZXNzaW9uIGFwYXJ0IGZyb20gcmVhZGluZyB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogdGhpcyB3aWxsCisgICBiZSBkb25lIGJ5IGluZmxhdGUoKS4gKFNvIG5leHRfaW4gYW5kIGF2YWlsX2luIG1heSBiZSBtb2RpZmllZCwgYnV0IG5leHRfb3V0CisgICBhbmQgYXZhaWxfb3V0IGFyZSB1bmNoYW5nZWQuKQogKi8KIAogZXh0ZXJuIGludCB6bGliX2luZmxhdGVTZXREaWN0aW9uYXJ5ICh6X3N0cmVhbXAgc3RybSwKQEAgLTU2NCwxNiArNjMxLDE5IEBACiAJCQkJCQkgICAgIHVJbnQgIGRpY3RMZW5ndGgpOwogLyoKICAgICAgSW5pdGlhbGl6ZXMgdGhlIGRlY29tcHJlc3Npb24gZGljdGlvbmFyeSBmcm9tIHRoZSBnaXZlbiB1bmNvbXByZXNzZWQgYnl0ZQotICAgc2VxdWVuY2UuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIG9mIGluZmxhdGUKLSAgIGlmIHRoaXMgY2FsbCByZXR1cm5lZCBaX05FRURfRElDVC4gVGhlIGRpY3Rpb25hcnkgY2hvc2VuIGJ5IHRoZSBjb21wcmVzc29yCi0gICBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBBZGxlcjMyIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgY2FsbCBvZgotICAgaW5mbGF0ZS4gVGhlIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBtdXN0IHVzZSBleGFjdGx5IHRoZSBzYW1lCi0gICBkaWN0aW9uYXJ5IChzZWUgZGVmbGF0ZVNldERpY3Rpb25hcnkpLgorICAgc2VxdWVuY2UuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjYWxsIG9mIGluZmxhdGUsCisgICBpZiB0aGF0IGNhbGwgcmV0dXJuZWQgWl9ORUVEX0RJQ1QuIFRoZSBkaWN0aW9uYXJ5IGNob3NlbiBieSB0aGUgY29tcHJlc3NvcgorICAgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgYWRsZXIzMiB2YWx1ZSByZXR1cm5lZCBieSB0aGF0IGNhbGwgb2YgaW5mbGF0ZS4KKyAgIFRoZSBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3IgbXVzdCB1c2UgZXhhY3RseSB0aGUgc2FtZSBkaWN0aW9uYXJ5IChzZWUKKyAgIGRlZmxhdGVTZXREaWN0aW9uYXJ5KS4gIEZvciByYXcgaW5mbGF0ZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkCisgICBpbW1lZGlhdGVseSBhZnRlciBpbmZsYXRlSW5pdDIoKSBvciBpbmZsYXRlUmVzZXQoKSBhbmQgYmVmb3JlIGFueSBjYWxsIG9mCisgICBpbmZsYXRlKCkgdG8gc2V0IHRoZSBkaWN0aW9uYXJ5LiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgaW5zdXJlIHRoYXQgdGhlCisgICBkaWN0aW9uYXJ5IHRoYXQgd2FzIHVzZWQgZm9yIGNvbXByZXNzaW9uIGlzIHByb3ZpZGVkLgogCiAgICAgIGluZmxhdGVTZXREaWN0aW9uYXJ5IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiBhCiAgICBwYXJhbWV0ZXIgaXMgaW52YWxpZCAoc3VjaCBhcyBOVUxMIGRpY3Rpb25hcnkpIG9yIHRoZSBzdHJlYW0gc3RhdGUgaXMKICAgIGluY29uc2lzdGVudCwgWl9EQVRBX0VSUk9SIGlmIHRoZSBnaXZlbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgbWF0Y2ggdGhlCi0gICBleHBlY3RlZCBvbmUgKGluY29ycmVjdCBBZGxlcjMyIHZhbHVlKS4gaW5mbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QKKyAgIGV4cGVjdGVkIG9uZSAoaW5jb3JyZWN0IGFkbGVyMzIgdmFsdWUpLiBpbmZsYXRlU2V0RGljdGlvbmFyeSBkb2VzIG5vdAogICAgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbjogdGhpcyB3aWxsIGJlIGRvbmUgYnkgc3Vic2VxdWVudCBjYWxscyBvZgogICAgaW5mbGF0ZSgpLgogKi8KQEAgLTYxNCw0MCArNjg0LDE5IEBACiAgICBjb250YWluaW5nIHRoZSBkYXRhIGF0IG5leHRfaW4gKGV4Y2VwdCB0aGF0IHRoZSBkYXRhIGlzIG5vdCBvdXRwdXQpLgogKi8KIAotICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFyaW91cyBoYWNrcywgZG9uJ3QgbG9vayA6KSAqLwotCi0vKiBkZWZsYXRlSW5pdCBhbmQgaW5mbGF0ZUluaXQgYXJlIG1hY3JvcyB0byBhbGxvdyBjaGVja2luZyB0aGUgemxpYiB2ZXJzaW9uCi0gKiBhbmQgdGhlIGNvbXBpbGVyJ3MgdmlldyBvZiB6X3N0cmVhbToKLSAqLwotZXh0ZXJuIGludCB6bGliX2RlZmxhdGVJbml0XyAoel9zdHJlYW1wIHN0cm0sIGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpOwotZXh0ZXJuIGludCB6bGliX2luZmxhdGVJbml0XyAoel9zdHJlYW1wIHN0cm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmVyc2lvbiwgaW50IHN0cmVhbV9zaXplKTsKLWV4dGVybiBpbnQgemxpYl9kZWZsYXRlSW5pdDJfICh6X3N0cmVhbXAgc3RybSwgaW50ICBsZXZlbCwgaW50ICBtZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aW5kb3dCaXRzLCBpbnQgbWVtTGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSwgY29uc3QgY2hhciAqdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbV9zaXplKTsKLWV4dGVybiBpbnQgemxpYl9pbmZsYXRlSW5pdDJfICh6X3N0cmVhbXAgc3RybSwgaW50ICB3aW5kb3dCaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLCBpbnQgc3RyZWFtX3NpemUpOwogI2RlZmluZSB6bGliX2RlZmxhdGVJbml0KHN0cm0sIGxldmVsKSBcCi0gICAgICAgIHpsaWJfZGVmbGF0ZUluaXRfKChzdHJtKSwgKGxldmVsKSwgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQorCXpsaWJfZGVmbGF0ZUluaXQyKChzdHJtKSwgKGxldmVsKSwgWl9ERUZMQVRFRCwgTUFYX1dCSVRTLCBcCisJCQkgICAgICBERUZfTUVNX0xFVkVMLCBaX0RFRkFVTFRfU1RSQVRFR1kpCiAjZGVmaW5lIHpsaWJfaW5mbGF0ZUluaXQoc3RybSkgXAotICAgICAgICB6bGliX2luZmxhdGVJbml0Xygoc3RybSksIFpMSUJfVkVSU0lPTiwgc2l6ZW9mKHpfc3RyZWFtKSkKLSNkZWZpbmUgemxpYl9kZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIG1ldGhvZCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5KSBcCi0gICAgICAgIHpsaWJfZGVmbGF0ZUluaXQyXygoc3RybSksKGxldmVsKSwobWV0aG9kKSwod2luZG93Qml0cyksKG1lbUxldmVsKSxcCi0gICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQotI2RlZmluZSB6bGliX2luZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSBcCi0gICAgICAgIHpsaWJfaW5mbGF0ZUluaXQyXygoc3RybSksICh3aW5kb3dCaXRzKSwgWkxJQl9WRVJTSU9OLCBzaXplb2Yoel9zdHJlYW0pKQorCXpsaWJfaW5mbGF0ZUluaXQyKChzdHJtKSwgREVGX1dCSVRTKQogCitleHRlcm4gaW50IHpsaWJfZGVmbGF0ZUluaXQyKHpfc3RyZWFtcCBzdHJtLCBpbnQgIGxldmVsLCBpbnQgIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpbmRvd0JpdHMsIGludCBtZW1MZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmF0ZWd5KTsKK2V4dGVybiBpbnQgemxpYl9pbmZsYXRlSW5pdDIoel9zdHJlYW1wIHN0cm0sIGludCAgd2luZG93Qml0cyk7CiAKICNpZiAhZGVmaW5lZChfWl9VVElMX0gpICYmICFkZWZpbmVkKE5PX0RVTU1ZX0RFQ0wpCiAgICAgc3RydWN0IGludGVybmFsX3N0YXRlIHtpbnQgZHVtbXk7fTsgLyogaGFjayBmb3IgYnVnZ3kgY29tcGlsZXJzICovCiAjZW5kaWYKIAotZXh0ZXJuIGNvbnN0IGNoYXIgICogemxpYl96RXJyb3IgICAgICAgICAgIChpbnQgZXJyKTsKLSNpZiAwCi1leHRlcm4gaW50ICAgICAgICAgICB6bGliX2luZmxhdGVTeW5jUG9pbnQgKHpfc3RyZWFtcCB6KTsKLSNlbmRpZgotZXh0ZXJuIGNvbnN0IHVMb25nICogemxpYl9nZXRfY3JjX3RhYmxlICAgICh2b2lkKTsKLQogI2VuZGlmIC8qIF9aTElCX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvem9ycm8uaCBiL2luY2x1ZGUvbGludXgvem9ycm8uaAppbmRleCAyZjEzNWNmLi45MTNiZmMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3pvcnJvLmgKKysrIGIvaW5jbHVkZS9saW51eC96b3Jyby5oCkBAIC0xMSw4ICsxMSw2IEBACiAjaWZuZGVmIF9MSU5VWF9aT1JST19ICiAjZGVmaW5lIF9MSU5VWF9aT1JST19ICiAKLSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KIAogCkBAIC0xMTIsNDUgKzExMCw2IEBACiAgICAgX191MzIJCWNkX1VudXNlZFs0XTsJLyogZm9yIHdoYXRldmVyIHRoZSBkcml2ZXIgd2FudHMgKi8KIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogCi0jZWxzZSAvKiBfX0FTU0VNQkxZX18gKi8KLQotTE5fU3VjYwkJPSAwCi1MTl9QcmVkCQk9IExOX1N1Y2MrNAotTE5fVHlwZQkJPSBMTl9QcmVkKzQKLUxOX1ByaQkJPSBMTl9UeXBlKzEKLUxOX05hbWUJCT0gTE5fUHJpKzEKLUxOX3NpemVvZgk9IExOX05hbWUrNAotCi1FUl9UeXBlCQk9IDAKLUVSX1Byb2R1Y3QJPSBFUl9UeXBlKzEKLUVSX0ZsYWdzCT0gRVJfUHJvZHVjdCsxCi1FUl9SZXNlcnZlZDAzCT0gRVJfRmxhZ3MrMQotRVJfTWFudWZhY3R1cmVyCT0gRVJfUmVzZXJ2ZWQwMysxCi1FUl9TZXJpYWxOdW1iZXIJPSBFUl9NYW51ZmFjdHVyZXIrMgotRVJfSW5pdERpYWdWZWMJPSBFUl9TZXJpYWxOdW1iZXIrNAotRVJfUmVzZXJ2ZWQwYwk9IEVSX0luaXREaWFnVmVjKzIKLUVSX1Jlc2VydmVkMGQJPSBFUl9SZXNlcnZlZDBjKzEKLUVSX1Jlc2VydmVkMGUJPSBFUl9SZXNlcnZlZDBkKzEKLUVSX1Jlc2VydmVkMGYJPSBFUl9SZXNlcnZlZDBlKzEKLUVSX3NpemVvZgk9IEVSX1Jlc2VydmVkMGYrMQotCi1DRF9Ob2RlCQk9IDAKLUNEX0ZsYWdzCT0gQ0RfTm9kZStMTl9zaXplb2YKLUNEX1BhZAkJPSBDRF9GbGFncysxCi1DRF9Sb20JCT0gQ0RfUGFkKzEKLUNEX0JvYXJkQWRkcgk9IENEX1JvbStFUl9zaXplb2YKLUNEX0JvYXJkU2l6ZQk9IENEX0JvYXJkQWRkcis0Ci1DRF9TbG90QWRkcgk9IENEX0JvYXJkU2l6ZSs0Ci1DRF9TbG90U2l6ZQk9IENEX1Nsb3RBZGRyKzIKLUNEX0RyaXZlcgk9IENEX1Nsb3RTaXplKzIKLUNEX05leHRDRAk9IENEX0RyaXZlcis0Ci1DRF9VbnVzZWQJPSBDRF9OZXh0Q0QrNAotQ0Rfc2l6ZW9mCT0gQ0RfVW51c2VkKyg0KjQpCi0KLSNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KLQotI2lmbmRlZiBfX0FTU0VNQkxZX18KLQogI2RlZmluZSBaT1JST19OVU1fQVVUTwkJMTYKIAogI2lmZGVmIF9fS0VSTkVMX18KQEAgLTI5MCw3ICsyNDksNiBAQAogI2RlZmluZSBaMlJBTV9DSFVOS1NISUZUCSgxNikKIAogCi0jZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KIAogI2VuZGlmIC8qIF9MSU5VWF9aT1JST19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3p1dGlsLmggYi9pbmNsdWRlL2xpbnV4L3p1dGlsLmgKaW5kZXggZWUwYzU5Yy4uNmFkZmE5YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC96dXRpbC5oCisrKyBiL2luY2x1ZGUvbGludXgvenV0aWwuaApAQCAtMjMsMTggKzIzLDYgQEAKIAogICAgICAgICAvKiBjb21tb24gY29uc3RhbnRzICovCiAKLSNpZm5kZWYgREVGX1dCSVRTCi0jICBkZWZpbmUgREVGX1dCSVRTIE1BWF9XQklUUwotI2VuZGlmCi0vKiBkZWZhdWx0IHdpbmRvd0JpdHMgZm9yIGRlY29tcHJlc3Npb24uIE1BWF9XQklUUyBpcyBmb3IgY29tcHJlc3Npb24gb25seSAqLwotCi0jaWYgTUFYX01FTV9MRVZFTCA+PSA4Ci0jICBkZWZpbmUgREVGX01FTV9MRVZFTCA4Ci0jZWxzZQotIyAgZGVmaW5lIERFRl9NRU1fTEVWRUwgIE1BWF9NRU1fTEVWRUwKLSNlbmRpZgotLyogZGVmYXVsdCBtZW1MZXZlbCAqLwotCiAjZGVmaW5lIFNUT1JFRF9CTE9DSyAwCiAjZGVmaW5lIFNUQVRJQ19UUkVFUyAxCiAjZGVmaW5lIERZTl9UUkVFUyAgICAyCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pZWVlODAyMTEuaCBiL2luY2x1ZGUvbmV0L2llZWU4MDIxMS5oCmluZGV4IGQ1MTQ3NzcuLmVjYzQyODYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2llZWU4MDIxMS5oCisrKyBiL2luY2x1ZGUvbmV0L2llZWU4MDIxMS5oCkBAIC05NjgsNiArOTY4LDcgQEAKIAogZW51bSB7CiAJSUVFRTgwMjExX0NIX1BBU1NJVkVfT05MWSA9ICgxIDw8IDApLAorCUlFRUU4MDIxMV9DSF84MDIxMUhfUlVMRVMgPSAoMSA8PCAxKSwKIAlJRUVFODAyMTFfQ0hfQl9PTkxZID0gKDEgPDwgMiksCiAJSUVFRTgwMjExX0NIX05PX0lCU1MgPSAoMSA8PCAzKSwKIAlJRUVFODAyMTFfQ0hfVU5JRk9STV9TUFJFQURJTkcgPSAoMSA8PCA0KSwKQEAgLTk3NiwxMCArOTc3LDEwIEBACiB9OwogCiBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgewotCXUzMiBmcmVxOworCXUzMiBmcmVxOwkvKiBpbiBNSHogKi8KIAl1OCBjaGFubmVsOwogCXU4IGZsYWdzOwotCXU4IG1heF9wb3dlcjsKKwl1OCBtYXhfcG93ZXI7CS8qIGluIGRCbSAqLwogfTsKIAogc3RydWN0IGllZWU4MDIxMV9nZW8gewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGt0X3NjaGVkLmggYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAppbmRleCBiOTRkMWFkLi43NWI1YjkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAorKysgYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaApAQCAtMjE4LDEyICsyMTgsMTMgQEAKIAkJc3RydWN0IHJ0YXR0ciAqdGFiKTsKIGV4dGVybiB2b2lkIHFkaXNjX3B1dF9ydGFiKHN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICp0YWIpOwogCi1leHRlcm4gaW50IHFkaXNjX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZCBfX3FkaXNjX3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAogc3RhdGljIGlubGluZSB2b2lkIHFkaXNjX3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewotCXdoaWxlICghbmV0aWZfcXVldWVfc3RvcHBlZChkZXYpICYmIHFkaXNjX3Jlc3RhcnQoZGV2KSA8IDApCi0JCS8qIE5PVEhJTkcgKi87CisJaWYgKCFuZXRpZl9xdWV1ZV9zdG9wcGVkKGRldikgJiYKKwkgICAgIXRlc3RfYW5kX3NldF9iaXQoX19MSU5LX1NUQVRFX1FESVNDX1JVTk5JTkcsICZkZXYtPnN0YXRlKSkKKwkJX19xZGlzY19ydW4oZGV2KTsKIH0KIAogZXh0ZXJuIGludCB0Y19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Byb3RvY29sLmggYi9pbmNsdWRlL25ldC9wcm90b2NvbC5oCmluZGV4IGJjYWVlMzkuLjNiNmRjMTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3Byb3RvY29sLmgKKysrIGIvaW5jbHVkZS9uZXQvcHJvdG9jb2wuaApAQCAtMzYsNiArMzYsNyBAQAogc3RydWN0IG5ldF9wcm90b2NvbCB7CiAJaW50CQkJKCpoYW5kbGVyKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIAl2b2lkCQkJKCplcnJfaGFuZGxlcikoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm8pOworCXN0cnVjdCBza19idWZmCSAgICAgICAqKCpnc29fc2VnbWVudCkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNnKTsKIAlpbnQJCQlub19wb2xpY3k7CiB9OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL3NjdHAuaCBiL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCmluZGV4IDIzN2Y4MmIuLmE5NjYzYjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvc2N0cC5oCkBAIC0yNTQsNyArMjU0LDcgQEAKICNkZWZpbmUgU0NUUF9ERUJVR19QUklOVEtfSVBBRERSKHdoYXRldmVyLi4uKQogI2RlZmluZSBTQ1RQX0VOQUJMRV9ERUJVRwogI2RlZmluZSBTQ1RQX0RJU0FCTEVfREVCVUcKLSNkZWZpbmUgU0NUUF9BU1NFUlQoZXhwciwgc3RyLCBmdW5jKSBCVUdfT04oIShleHByKSkKKyNkZWZpbmUgU0NUUF9BU1NFUlQoZXhwciwgc3RyLCBmdW5jKQogCiAjZW5kaWYgLyogU0NUUF9ERUJVRyAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zb2NrLmggYi9pbmNsdWRlL25ldC9zb2NrLmgKaW5kZXggZDEwZGZlYy4uMmQ4ZDZhZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc29jay5oCisrKyBiL2luY2x1ZGUvbmV0L3NvY2suaApAQCAtMTAzMCw5ICsxMDMwLDEzIEBACiB7CiAJX19za19kc3Rfc2V0KHNrLCBkc3QpOwogCXNrLT5za19yb3V0ZV9jYXBzID0gZHN0LT5kZXYtPmZlYXR1cmVzOworCWlmIChzay0+c2tfcm91dGVfY2FwcyAmIE5FVElGX0ZfR1NPKQorCQlzay0+c2tfcm91dGVfY2FwcyB8PSBORVRJRl9GX1RTTzsKIAlpZiAoc2stPnNrX3JvdXRlX2NhcHMgJiBORVRJRl9GX1RTTykgewogCQlpZiAoc29ja19mbGFnKHNrLCBTT0NLX05PX0xBUkdFU0VORCkgfHwgZHN0LT5oZWFkZXJfbGVuKQogCQkJc2stPnNrX3JvdXRlX2NhcHMgJj0gfk5FVElGX0ZfVFNPOworCQllbHNlIAorCQkJc2stPnNrX3JvdXRlX2NhcHMgfD0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSFdfQ1NVTTsKIAl9CiB9CiAKQEAgLTEyNjUsNiArMTI2OSw3IEBACiAgKiBza19lYXRfc2tiIC0gUmVsZWFzZSBhIHNrYiBpZiBpdCBpcyBubyBsb25nZXIgbmVlZGVkCiAgKiBAc2s6IHNvY2tldCB0byBlYXQgdGhpcyBza2IgZnJvbQogICogQHNrYjogc29ja2V0IGJ1ZmZlciB0byBlYXQKKyAqIEBjb3BpZWRfZWFybHk6IGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIERNQSBvcGVyYXRpb25zIGNvcGllZCB0aGlzIGRhdGEgZWFybHkKICAqCiAgKiBUaGlzIHJvdXRpbmUgbXVzdCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkIG9yIHdpdGggdGhlIHNvY2tldAogICogbG9ja2VkIHNvIHRoYXQgdGhlIHNrX2J1ZmYgcXVldWUgb3BlcmF0aW9uIGlzIG9rLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaAppbmRleCA1ZjRlYjVjLi5jYTNkMzhkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAorKysgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtNTY5LDEzICs1NjksMTMgQEAKICAqLwogc3RhdGljIGlubGluZSBpbnQgdGNwX3NrYl9wY291bnQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQlyZXR1cm4gc2tiX3NoaW5mbyhza2IpLT50c29fc2VnczsKKwlyZXR1cm4gc2tiX3NoaW5mbyhza2IpLT5nc29fc2VnczsKIH0KIAogLyogVGhpcyBpcyB2YWxpZCBpZmYgdGNwX3NrYl9wY291bnQoKSA+IDEuICovCiBzdGF0aWMgaW5saW5lIGludCB0Y3Bfc2tiX21zcyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewotCXJldHVybiBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplOworCXJldHVybiBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNwX2RlY19wY291bnRfYXBwcm94KF9fdTMyICpjb3VudCwKQEAgLTEwODYsNiArMTA4Niw4IEBACiAKIGV4dGVybiBpbnQgdGNwX3Y0X2Rlc3Ryb3lfc29jayhzdHJ1Y3Qgc29jayAqc2spOwogCitleHRlcm4gc3RydWN0IHNrX2J1ZmYgKnRjcF90c29fc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2cpOworCiAjaWZkZWYgQ09ORklHX1BST0NfRlMKIGV4dGVybiBpbnQgIHRjcDRfcHJvY19pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgdGNwNF9wcm9jX2V4aXQodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaCBiL2luY2x1ZGUvc2NzaS9pc2NzaV9pZi5oCmluZGV4IGU1NjE4YjkuLjI1Mzc5N2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9pc2NzaV9pZi5oCisrKyBiL2luY2x1ZGUvc2NzaS9pc2NzaV9pZi5oCkBAIC00Myw2ICs0MywxMCBAQAogCUlTQ1NJX1VFVkVOVF9HRVRfU1RBVFMJCT0gVUVWRU5UX0JBU0UgKyAxMCwKIAlJU0NTSV9VRVZFTlRfR0VUX1BBUkFNCQk9IFVFVkVOVF9CQVNFICsgMTEsCiAKKwlJU0NTSV9VRVZFTlRfVFJBTlNQT1JUX0VQX0NPTk5FQ1QJPSBVRVZFTlRfQkFTRSArIDEyLAorCUlTQ1NJX1VFVkVOVF9UUkFOU1BPUlRfRVBfUE9MTAkJPSBVRVZFTlRfQkFTRSArIDEzLAorCUlTQ1NJX1VFVkVOVF9UUkFOU1BPUlRfRVBfRElTQ09OTkVDVAk9IFVFVkVOVF9CQVNFICsgMTQsCisKIAkvKiB1cCBldmVudHMgKi8KIAlJU0NTSV9LRVZFTlRfUkVDVl9QRFUJCT0gS0VWRU5UX0JBU0UgKyAxLAogCUlTQ1NJX0tFVkVOVF9DT05OX0VSUk9SCQk9IEtFVkVOVF9CQVNFICsgMiwKQEAgLTYwLDYxICs2NCw4MyBAQAogCQkJdWludDMyX3QJaW5pdGlhbF9jbWRzbjsKIAkJfSBjX3Nlc3Npb247CiAJCXN0cnVjdCBtc2dfZGVzdHJveV9zZXNzaW9uIHsKLQkJCXVpbnQ2NF90CXNlc3Npb25faGFuZGxlOwogCQkJdWludDMyX3QJc2lkOwogCQl9IGRfc2Vzc2lvbjsKIAkJc3RydWN0IG1zZ19jcmVhdGVfY29ubiB7Ci0JCQl1aW50NjRfdAlzZXNzaW9uX2hhbmRsZTsKLQkJCXVpbnQzMl90CWNpZDsKIAkJCXVpbnQzMl90CXNpZDsKKwkJCXVpbnQzMl90CWNpZDsKIAkJfSBjX2Nvbm47CiAJCXN0cnVjdCBtc2dfYmluZF9jb25uIHsKLQkJCXVpbnQ2NF90CXNlc3Npb25faGFuZGxlOwotCQkJdWludDY0X3QJY29ubl9oYW5kbGU7Ci0JCQl1aW50MzJfdAl0cmFuc3BvcnRfZmQ7CisJCQl1aW50MzJfdAlzaWQ7CisJCQl1aW50MzJfdAljaWQ7CisJCQl1aW50NjRfdAl0cmFuc3BvcnRfZXBoOwogCQkJdWludDMyX3QJaXNfbGVhZGluZzsKIAkJfSBiX2Nvbm47CiAJCXN0cnVjdCBtc2dfZGVzdHJveV9jb25uIHsKLQkJCXVpbnQ2NF90CWNvbm5faGFuZGxlOworCQkJdWludDMyX3QJc2lkOwogCQkJdWludDMyX3QJY2lkOwogCQl9IGRfY29ubjsKIAkJc3RydWN0IG1zZ19zZW5kX3BkdSB7CisJCQl1aW50MzJfdAlzaWQ7CisJCQl1aW50MzJfdAljaWQ7CiAJCQl1aW50MzJfdAloZHJfc2l6ZTsKIAkJCXVpbnQzMl90CWRhdGFfc2l6ZTsKLQkJCXVpbnQ2NF90CWNvbm5faGFuZGxlOwogCQl9IHNlbmRfcGR1OwogCQlzdHJ1Y3QgbXNnX3NldF9wYXJhbSB7Ci0JCQl1aW50NjRfdAljb25uX2hhbmRsZTsKKwkJCXVpbnQzMl90CXNpZDsKKwkJCXVpbnQzMl90CWNpZDsKIAkJCXVpbnQzMl90CXBhcmFtOyAvKiBlbnVtIGlzY3NpX3BhcmFtICovCi0JCQl1aW50MzJfdAl2YWx1ZTsKKwkJCXVpbnQzMl90CWxlbjsKIAkJfSBzZXRfcGFyYW07CiAJCXN0cnVjdCBtc2dfc3RhcnRfY29ubiB7Ci0JCQl1aW50NjRfdAljb25uX2hhbmRsZTsKKwkJCXVpbnQzMl90CXNpZDsKKwkJCXVpbnQzMl90CWNpZDsKIAkJfSBzdGFydF9jb25uOwogCQlzdHJ1Y3QgbXNnX3N0b3BfY29ubiB7CisJCQl1aW50MzJfdAlzaWQ7CisJCQl1aW50MzJfdAljaWQ7CiAJCQl1aW50NjRfdAljb25uX2hhbmRsZTsKIAkJCXVpbnQzMl90CWZsYWc7CiAJCX0gc3RvcF9jb25uOwogCQlzdHJ1Y3QgbXNnX2dldF9zdGF0cyB7Ci0JCQl1aW50NjRfdAljb25uX2hhbmRsZTsKKwkJCXVpbnQzMl90CXNpZDsKKwkJCXVpbnQzMl90CWNpZDsKIAkJfSBnZXRfc3RhdHM7CisJCXN0cnVjdCBtc2dfdHJhbnNwb3J0X2Nvbm5lY3QgeworCQkJdWludDMyX3QJbm9uX2Jsb2NraW5nOworCQl9IGVwX2Nvbm5lY3Q7CisJCXN0cnVjdCBtc2dfdHJhbnNwb3J0X3BvbGwgeworCQkJdWludDY0X3QJZXBfaGFuZGxlOworCQkJdWludDMyX3QJdGltZW91dF9tczsKKwkJfSBlcF9wb2xsOworCQlzdHJ1Y3QgbXNnX3RyYW5zcG9ydF9kaXNjb25uZWN0IHsKKwkJCXVpbnQ2NF90CWVwX2hhbmRsZTsKKwkJfSBlcF9kaXNjb25uZWN0OwogCX0gdTsKIAl1bmlvbiB7CiAJCS8qIG1lc3NhZ2VzIGsgLT4gdSAqLwotCQl1aW50NjRfdAkJaGFuZGxlOwogCQlpbnQJCQlyZXRjb2RlOwogCQlzdHJ1Y3QgbXNnX2NyZWF0ZV9zZXNzaW9uX3JldCB7Ci0JCQl1aW50NjRfdAlzZXNzaW9uX2hhbmRsZTsKIAkJCXVpbnQzMl90CXNpZDsKKwkJCXVpbnQzMl90CWhvc3Rfbm87CiAJCX0gY19zZXNzaW9uX3JldDsKKwkJc3RydWN0IG1zZ19jcmVhdGVfY29ubl9yZXQgeworCQkJdWludDMyX3QJc2lkOworCQkJdWludDMyX3QJY2lkOworCQl9IGNfY29ubl9yZXQ7CiAJCXN0cnVjdCBtc2dfcmVjdl9yZXEgeworCQkJdWludDMyX3QJc2lkOworCQkJdWludDMyX3QJY2lkOwogCQkJdWludDY0X3QJcmVjdl9oYW5kbGU7Ci0JCQl1aW50NjRfdAljb25uX2hhbmRsZTsKIAkJfSByZWN2X3JlcTsKIAkJc3RydWN0IG1zZ19jb25uX2Vycm9yIHsKLQkJCXVpbnQ2NF90CWNvbm5faGFuZGxlOworCQkJdWludDMyX3QJc2lkOworCQkJdWludDMyX3QJY2lkOwogCQkJdWludDMyX3QJZXJyb3I7IC8qIGVudW0gaXNjc2lfZXJyICovCiAJCX0gY29ubmVycm9yOworCQlzdHJ1Y3QgbXNnX3RyYW5zcG9ydF9jb25uZWN0X3JldCB7CisJCQl1aW50NjRfdAloYW5kbGU7CisJCX0gZXBfY29ubmVjdF9yZXQ7CiAJfSByOwogfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoc2l6ZW9mKHVpbnQ2NF90KSkpKTsKIApAQCAtMTM5LDI5ICsxNjUsNjYgQEAKIAlJU0NTSV9FUlJfU0VTU0lPTl9GQUlMRUQJPSBJU0NTSV9FUlJfQkFTRSArIDEzLAogCUlTQ1NJX0VSUl9IRFJfREdTVAkJPSBJU0NTSV9FUlJfQkFTRSArIDE0LAogCUlTQ1NJX0VSUl9EQVRBX0RHU1QJCT0gSVNDU0lfRVJSX0JBU0UgKyAxNSwKLQlJU0NTSV9FUlJfUEFSQU1fTk9UX0ZPVU5ECT0gSVNDU0lfRVJSX0JBU0UgKyAxNgorCUlTQ1NJX0VSUl9QQVJBTV9OT1RfRk9VTkQJPSBJU0NTSV9FUlJfQkFTRSArIDE2LAorCUlTQ1NJX0VSUl9OT19TQ1NJX0NNRAkJPSBJU0NTSV9FUlJfQkFTRSArIDE3LAogfTsKIAogLyoKICAqIGlTQ1NJIFBhcmFtZXRlcnMgKFJGQzM3MjApCiAgKi8KIGVudW0gaXNjc2lfcGFyYW0gewotCUlTQ1NJX1BBUkFNX01BWF9SRUNWX0RMRU5HVEgJPSAwLAotCUlTQ1NJX1BBUkFNX01BWF9YTUlUX0RMRU5HVEgJPSAxLAotCUlTQ1NJX1BBUkFNX0hEUkRHU1RfRU4JCT0gMiwKLQlJU0NTSV9QQVJBTV9EQVRBREdTVF9FTgkJPSAzLAotCUlTQ1NJX1BBUkFNX0lOSVRJQUxfUjJUX0VOCT0gNCwKLQlJU0NTSV9QQVJBTV9NQVhfUjJUCQk9IDUsCi0JSVNDU0lfUEFSQU1fSU1NX0RBVEFfRU4JCT0gNiwKLQlJU0NTSV9QQVJBTV9GSVJTVF9CVVJTVAkJPSA3LAotCUlTQ1NJX1BBUkFNX01BWF9CVVJTVAkJPSA4LAotCUlTQ1NJX1BBUkFNX1BEVV9JTk9SREVSX0VOCT0gOSwKLQlJU0NTSV9QQVJBTV9EQVRBU0VRX0lOT1JERVJfRU4JPSAxMCwKLQlJU0NTSV9QQVJBTV9FUkwJCQk9IDExLAotCUlTQ1NJX1BBUkFNX0lGTUFSS0VSX0VOCQk9IDEyLAotCUlTQ1NJX1BBUkFNX09GTUFSS0VSX0VOCQk9IDEzLAorCS8qIHBhc3NlZCBpbiB1c2luZyBuZXRsaW5rIHNldCBwYXJhbSAqLworCUlTQ1NJX1BBUkFNX01BWF9SRUNWX0RMRU5HVEgsCisJSVNDU0lfUEFSQU1fTUFYX1hNSVRfRExFTkdUSCwKKwlJU0NTSV9QQVJBTV9IRFJER1NUX0VOLAorCUlTQ1NJX1BBUkFNX0RBVEFER1NUX0VOLAorCUlTQ1NJX1BBUkFNX0lOSVRJQUxfUjJUX0VOLAorCUlTQ1NJX1BBUkFNX01BWF9SMlQsCisJSVNDU0lfUEFSQU1fSU1NX0RBVEFfRU4sCisJSVNDU0lfUEFSQU1fRklSU1RfQlVSU1QsCisJSVNDU0lfUEFSQU1fTUFYX0JVUlNULAorCUlTQ1NJX1BBUkFNX1BEVV9JTk9SREVSX0VOLAorCUlTQ1NJX1BBUkFNX0RBVEFTRVFfSU5PUkRFUl9FTiwKKwlJU0NTSV9QQVJBTV9FUkwsCisJSVNDU0lfUEFSQU1fSUZNQVJLRVJfRU4sCisJSVNDU0lfUEFSQU1fT0ZNQVJLRVJfRU4sCisJSVNDU0lfUEFSQU1fRVhQX1NUQVRTTiwKKwlJU0NTSV9QQVJBTV9UQVJHRVRfTkFNRSwKKwlJU0NTSV9QQVJBTV9UUEdULAorCUlTQ1NJX1BBUkFNX1BFUlNJU1RFTlRfQUREUkVTUywKKwlJU0NTSV9QQVJBTV9QRVJTSVNURU5UX1BPUlQsCisJSVNDU0lfUEFSQU1fU0VTU19SRUNPVkVSWV9UTU8sCisKKwkvKiBwYXNlZCBpbiB0aHJvdWdoIGJpbmQgY29ubiB1c2luZyB0cmFuc3BvcnRfZmQgKi8KKwlJU0NTSV9QQVJBTV9DT05OX1BPUlQsCisJSVNDU0lfUEFSQU1fQ09OTl9BRERSRVNTLAorCisJLyogbXVzdCBhbHdheXMgYmUgbGFzdCAqLworCUlTQ1NJX1BBUkFNX01BWCwKIH07Ci0jZGVmaW5lIElTQ1NJX1BBUkFNX01BWAkJCTE0CisKKyNkZWZpbmUgSVNDU0lfTUFYX1JFQ1ZfRExFTkdUSAkJKDEgPDwgSVNDU0lfUEFSQU1fTUFYX1JFQ1ZfRExFTkdUSCkKKyNkZWZpbmUgSVNDU0lfTUFYX1hNSVRfRExFTkdUSAkJKDEgPDwgSVNDU0lfUEFSQU1fTUFYX1hNSVRfRExFTkdUSCkKKyNkZWZpbmUgSVNDU0lfSERSREdTVF9FTgkJKDEgPDwgSVNDU0lfUEFSQU1fSERSREdTVF9FTikKKyNkZWZpbmUgSVNDU0lfREFUQURHU1RfRU4JCSgxIDw8IElTQ1NJX1BBUkFNX0RBVEFER1NUX0VOKQorI2RlZmluZSBJU0NTSV9JTklUSUFMX1IyVF9FTgkJKDEgPDwgSVNDU0lfUEFSQU1fSU5JVElBTF9SMlRfRU4pCisjZGVmaW5lIElTQ1NJX01BWF9SMlQJCQkoMSA8PCBJU0NTSV9QQVJBTV9NQVhfUjJUKQorI2RlZmluZSBJU0NTSV9JTU1fREFUQV9FTgkJKDEgPDwgSVNDU0lfUEFSQU1fSU1NX0RBVEFfRU4pCisjZGVmaW5lIElTQ1NJX0ZJUlNUX0JVUlNUCQkoMSA8PCBJU0NTSV9QQVJBTV9GSVJTVF9CVVJTVCkKKyNkZWZpbmUgSVNDU0lfTUFYX0JVUlNUCQkJKDEgPDwgSVNDU0lfUEFSQU1fTUFYX0JVUlNUKQorI2RlZmluZSBJU0NTSV9QRFVfSU5PUkRFUl9FTgkJKDEgPDwgSVNDU0lfUEFSQU1fUERVX0lOT1JERVJfRU4pCisjZGVmaW5lIElTQ1NJX0RBVEFTRVFfSU5PUkRFUl9FTgkoMSA8PCBJU0NTSV9QQVJBTV9EQVRBU0VRX0lOT1JERVJfRU4pCisjZGVmaW5lIElTQ1NJX0VSTAkJCSgxIDw8IElTQ1NJX1BBUkFNX0VSTCkKKyNkZWZpbmUgSVNDU0lfSUZNQVJLRVJfRU4JCSgxIDw8IElTQ1NJX1BBUkFNX0lGTUFSS0VSX0VOKQorI2RlZmluZSBJU0NTSV9PRk1BUktFUl9FTgkJKDEgPDwgSVNDU0lfUEFSQU1fT0ZNQVJLRVJfRU4pCisjZGVmaW5lIElTQ1NJX0VYUF9TVEFUU04JCSgxIDw8IElTQ1NJX1BBUkFNX0VYUF9TVEFUU04pCisjZGVmaW5lIElTQ1NJX1RBUkdFVF9OQU1FCQkoMSA8PCBJU0NTSV9QQVJBTV9UQVJHRVRfTkFNRSkKKyNkZWZpbmUgSVNDU0lfVFBHVAkJCSgxIDw8IElTQ1NJX1BBUkFNX1RQR1QpCisjZGVmaW5lIElTQ1NJX1BFUlNJU1RFTlRfQUREUkVTUwkoMSA8PCBJU0NTSV9QQVJBTV9QRVJTSVNURU5UX0FERFJFU1MpCisjZGVmaW5lIElTQ1NJX1BFUlNJU1RFTlRfUE9SVAkJKDEgPDwgSVNDU0lfUEFSQU1fUEVSU0lTVEVOVF9QT1JUKQorI2RlZmluZSBJU0NTSV9TRVNTX1JFQ09WRVJZX1RNTwkJKDEgPDwgSVNDU0lfUEFSQU1fU0VTU19SRUNPVkVSWV9UTU8pCisjZGVmaW5lIElTQ1NJX0NPTk5fUE9SVAkJCSgxIDw8IElTQ1NJX1BBUkFNX0NPTk5fUE9SVCkKKyNkZWZpbmUgSVNDU0lfQ09OTl9BRERSRVNTCQkoMSA8PCBJU0NTSV9QQVJBTV9DT05OX0FERFJFU1MpCiAKICNkZWZpbmUgaXNjc2lfcHRyKF9oYW5kbGUpICgodm9pZCopKHVuc2lnbmVkIGxvbmcpX2hhbmRsZSkKICNkZWZpbmUgaXNjc2lfaGFuZGxlKF9wdHIpICgodWludDY0X3QpKHVuc2lnbmVkIGxvbmcpX3B0cikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9pc2NzaV9wcm90by5oIGIvaW5jbHVkZS9zY3NpL2lzY3NpX3Byb3RvLmgKaW5kZXggNGZlZGEwNS4uMDJmNmU0YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL2lzY3NpX3Byb3RvLmgKKysrIGIvaW5jbHVkZS9zY3NpL2lzY3NpX3Byb3RvLmgKQEAgLTIxLDggKzIxLDYgQEAKICNpZm5kZWYgSVNDU0lfUFJPVE9fSAogI2RlZmluZSBJU0NTSV9QUk9UT19ICiAKLSNkZWZpbmUgSVNDU0lfVkVSU0lPTl9TVFIJIjAuMyIKLSNkZWZpbmUgSVNDU0lfREFURV9TVFIJCSIyMi1BcHItMjAwNSIKICNkZWZpbmUgSVNDU0lfRFJBRlQyMF9WRVJTSU9OCTB4MDAKIAogLyogZGVmYXVsdCBpU0NTSSBsaXN0ZW4gcG9ydCBmb3IgaW5jb21pbmcgY29ubmVjdGlvbnMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9saWJpc2NzaS5oIGIvaW5jbHVkZS9zY3NpL2xpYmlzY3NpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmN2U1OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvc2NzaS9saWJpc2NzaS5oCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogaVNDU0kgbGliIGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDA2IE1pa2UgQ2hyaXN0aWUKKyAqIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMDUgRG1pdHJ5IFl1c3Vwb3YKKyAqIENvcHlyaWdodCAoQykgMjAwNCAtIDIwMDUgQWxleCBBaXptYW4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisjaWZuZGVmIExJQklTQ1NJX0gKKyNkZWZpbmUgTElCSVNDU0lfSAorCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPHNjc2kvaXNjc2lfcHJvdG8uaD4KKyNpbmNsdWRlIDxzY3NpL2lzY3NpX2lmLmg+CisKK3N0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZTsKK3N0cnVjdCBzY3NpX2RldmljZTsKK3N0cnVjdCBTY3NpX0hvc3Q7CitzdHJ1Y3Qgc2NzaV9jbW5kOworc3RydWN0IHNvY2tldDsKK3N0cnVjdCBpc2NzaV90cmFuc3BvcnQ7CitzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb247CitzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm47CitzdHJ1Y3QgaXNjc2lfc2Vzc2lvbjsKK3N0cnVjdCBpc2NzaV9ub3BpbjsKKworLyogI2RlZmluZSBERUJVR19TQ1NJICovCisjaWZkZWYgREVCVUdfU0NTSQorI2RlZmluZSBkZWJ1Z19zY3NpKGZtdC4uLikgcHJpbnRrKEtFUk5fSU5GTyAiaXNjc2k6ICIgZm10KQorI2Vsc2UKKyNkZWZpbmUgZGVidWdfc2NzaShmbXQuLi4pCisjZW5kaWYKKworI2RlZmluZSBJU0NTSV9YTUlUX0NNRFNfTUFYCTEyOAkvKiBtdXN0IGJlIHBvd2VyIG9mIDIgKi8KKyNkZWZpbmUgSVNDU0lfTUdNVF9DTURTX01BWAkzMgkvKiBtdXN0IGJlIHBvd2VyIG9mIDIgKi8KKyNkZWZpbmUgSVNDU0lfQ09OTl9NQVgJCQkxCisKKyNkZWZpbmUgSVNDU0lfTUdNVF9JVFRfT0ZGU0VUCTB4YTAwCisKKyNkZWZpbmUgSVNDU0lfREVGX0NNRF9QRVJfTFVOCQkzMgorI2RlZmluZSBJU0NTSV9NQVhfQ01EX1BFUl9MVU4JCTEyOAorCisvKiBUYXNrIE1nbXQgc3RhdGVzICovCisjZGVmaW5lIFRNQUJPUlRfSU5JVElBTAkJCTB4MAorI2RlZmluZSBUTUFCT1JUX1NVQ0NFU1MJCQkweDEKKyNkZWZpbmUgVE1BQk9SVF9GQUlMRUQJCQkweDIKKyNkZWZpbmUgVE1BQk9SVF9USU1FRE9VVAkJMHgzCisKKy8qIENvbm5lY3Rpb24gc3VzcGVuZCAiYml0IiAqLworI2RlZmluZSBJU0NTSV9TVVNQRU5EX0JJVAkJMQorCisjZGVmaW5lIElTQ1NJX0lUVF9NQVNLCQkJKDB4ZmZmKQorI2RlZmluZSBJU0NTSV9DSURfU0hJRlQJCQkxMgorI2RlZmluZSBJU0NTSV9DSURfTUFTSwkJCSgweGZmZmYgPDwgSVNDU0lfQ0lEX1NISUZUKQorI2RlZmluZSBJU0NTSV9BR0VfU0hJRlQJCQkyOAorI2RlZmluZSBJU0NTSV9BR0VfTUFTSwkJCSgweGYgPDwgSVNDU0lfQUdFX1NISUZUKQorCitzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrIHsKKwkvKgorCSAqIEJlY3VhZSBMTERzIGFsbG9jYXRlIHRoZWlyIGhkciBkaWZmZXJlbnRseSwgdGhpcyBpcyBhIHBvaW50ZXIgdG8KKwkgKiB0aGF0IHN0b3JhZ2UuIEl0IG11c3QgYmUgc2V0dXAgYXQgc2Vzc2lvbiBjcmVhdGlvbiB0aW1lLgorCSAqLworCXN0cnVjdCBpc2NzaV9oZHIJKmhkcjsKKwljaGFyCQkJKmRhdGE7CQkvKiBtZ210IHBheWxvYWQgKi8KKwlpbnQJCQlkYXRhX2NvdW50OwkvKiBjb3VudHMgZGF0YSB0byBiZSBzZW50ICovCisJdWludDMyX3QJCWl0dDsJCS8qIHRoaXMgSVRUICovCisJdm9pZAkJCSpkZF9kYXRhOwkvKiBkcml2ZXIvdHJhbnNwb3J0IGRhdGEgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCXJ1bm5pbmc7Cit9OworCitzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgeworCS8qCisJICogQmVjdWFlIExMRHMgYWxsb2NhdGUgdGhlaXIgaGRyIGRpZmZlcmVudGx5LCB0aGlzIGlzIGEgcG9pbnRlciB0bworCSAqIHRoYXQgc3RvcmFnZS4gSXQgbXVzdCBiZSBzZXR1cCBhdCBzZXNzaW9uIGNyZWF0aW9uIHRpbWUuCisJICovCisJc3RydWN0IGlzY3NpX2NtZAkqaGRyOworCWludAkJCWl0dDsJCS8qIHRoaXMgSVRUICovCisJaW50CQkJZGF0YXNuOwkJLyogRGF0YVNOICovCisKKwl1aW50MzJfdAkJdW5zb2xfZGF0YXNuOworCWludAkJCWltbV9jb3VudDsJLyogaW1tLWRhdGEgKGJ5dGVzKSAgICovCisJaW50CQkJdW5zb2xfY291bnQ7CS8qIHVuc29saWNpdGVkIChieXRlcykqLworCWludAkJCWRhdGFfY291bnQ7CS8qIHJlbWFpbmluZyBEYXRhLU91dCAqLworCXN0cnVjdCBzY3NpX2NtbmQJKnNjOwkJLyogYXNzb2NpYXRlZCBTQ1NJIGNtZCovCisJaW50CQkJdG90YWxfbGVuZ3RoOworCXN0cnVjdCBpc2NzaV9jb25uCSpjb25uOwkJLyogdXNlZCBjb25uZWN0aW9uICAgICovCisJc3RydWN0IGlzY3NpX21nbXRfdGFzawkqbXRhc2s7CQkvKiB0bWYgbXRhc2sgaW4gcHJvZ3IgKi8KKworCXN0cnVjdCBsaXN0X2hlYWQJcnVubmluZzsJLyogcnVubmluZyBjbWQgbGlzdCAqLworCXZvaWQJCQkqZGRfZGF0YTsJLyogZHJpdmVyL3RyYW5zcG9ydCBkYXRhICovCit9OworCitzdHJ1Y3QgaXNjc2lfY29ubiB7CisJc3RydWN0IGlzY3NpX2Nsc19jb25uCSpjbHNfY29ubjsJLyogcHRyIHRvIGNsYXNzIGNvbm5lY3Rpb24gKi8KKwl2b2lkCQkJKmRkX2RhdGE7CS8qIGlzY3NpX3RyYW5zcG9ydCBkYXRhICovCisJc3RydWN0IGlzY3NpX3Nlc3Npb24JKnNlc3Npb247CS8qIHBhcmVudCBzZXNzaW9uICovCisJLyoKKwkgKiBMTERzIHNob3VsZCBzZXQgdGhpcyBsb2NrLiBJdCBwcm90ZWN0cyB0aGUgdHJhbnNwb3J0IHJlY3YKKwkgKiBjb2RlCisJICovCisJcndsb2NrX3QJCSpyZWN2X2xvY2s7CisJLyoKKwkgKiBjb25uX3N0b3AoKSBmbGFnOiBzdG9wIHRvIHJlY292ZXIsIHN0b3AgdG8gdGVybWluYXRlCisJICovCisgICAgICAgIGludAkJCXN0b3Bfc3RhZ2U7CisKKwkvKiBpU0NTSSBjb25uZWN0aW9uLXdpZGUgc2VxdWVuY2luZyAqLworCXVpbnQzMl90CQlleHBfc3RhdHNuOworCisJLyogY29udHJvbCBkYXRhICovCisJaW50CQkJaWQ7CQkvKiBDSUQgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCWl0ZW07CQkvKiBtYWludGFpbnMgbGlzdCBvZiBjb25ucyAqLworCWludAkJCWNfc3RhZ2U7CS8qIGNvbm5lY3Rpb24gc3RhdGUgKi8KKwlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrCSpsb2dpbl9tdGFzazsJLyogbXRhc2sgdXNlZCBmb3IgbG9naW4vdGV4dCAqLworCXN0cnVjdCBpc2NzaV9tZ210X3Rhc2sJKm10YXNrOwkJLyogeG1pdCBtdGFzayBpbiBwcm9ncmVzcyAqLworCXN0cnVjdCBpc2NzaV9jbWRfdGFzawkqY3Rhc2s7CQkvKiB4bWl0IGN0YXNrIGluIHByb2dyZXNzICovCisKKwkvKiB4bWl0ICovCisJc3RydWN0IGtmaWZvCQkqaW1tcXVldWU7CS8qIGltbWVkaWF0ZSB4bWl0IHF1ZXVlICovCisJc3RydWN0IGtmaWZvCQkqbWdtdHF1ZXVlOwkvKiBtZ210IChjb250cm9sKSB4bWl0IHF1ZXVlICovCisJc3RydWN0IGxpc3RfaGVhZAltZ210X3J1bl9saXN0OwkvKiBsaXN0IG9mIGNvbnRyb2wgdGFza3MgKi8KKwlzdHJ1Y3Qga2ZpZm8JCSp4bWl0cXVldWU7CS8qIGRhdGEtcGF0aCBjbWQgcXVldWUgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCXJ1bl9saXN0OwkvKiBsaXN0IG9mIGNtZHMgaW4gcHJvZ3Jlc3MgKi8KKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QJeG1pdHdvcms7CS8qIHBlci1jb25uLiB4bWl0IHdvcmtxdWV1ZSAqLworCS8qCisJICogc2VyaWFsaXplcyBjb25uZWN0aW9uIHhtaXQsIGFjY2VzcyB0byBrZmlmb3M6CisJICogeG1pdHF1ZXVlLCBpbW1xdWV1ZSwgbWdtdHF1ZXVlCisJICovCisJc3RydWN0IG11dGV4CQl4bWl0bXV0ZXg7CisKKwl1bnNpZ25lZCBsb25nCQlzdXNwZW5kX3R4OwkvKiBzdXNwZW5kIFR4ICovCisJdW5zaWduZWQgbG9uZwkJc3VzcGVuZF9yeDsJLyogc3VzcGVuZCBSeCAqLworCisJLyogYWJvcnQgKi8KKwl3YWl0X3F1ZXVlX2hlYWRfdAllaHdhaXQ7CQkvKiB1c2VkIGluIGVoX2Fib3J0KCkgKi8KKwlzdHJ1Y3QgaXNjc2lfdG0JCXRtaGRyOworCXN0cnVjdCB0aW1lcl9saXN0CXRtYWJvcnRfdGltZXI7CisJaW50CQkJdG1hYm9ydF9zdGF0ZTsJLyogc2VlIFRNQUJPUlRfSU5JVElBTCwgZXRjLiovCisKKwkvKiBuZWdvdGlhdGVkIHBhcmFtcyAqLworCWludAkJCW1heF9yZWN2X2RsZW5ndGg7IC8qIGluaXRpYXRvcl9tYXhfcmVjdl9kc2wqLworCWludAkJCW1heF94bWl0X2RsZW5ndGg7IC8qIHRhcmdldF9tYXhfcmVjdl9kc2wgKi8KKwlpbnQJCQloZHJkZ3N0X2VuOworCWludAkJCWRhdGFkZ3N0X2VuOworCisJLyogTUlCLXN0YXRpc3RpY3MgKi8KKwl1aW50NjRfdAkJdHhkYXRhX29jdGV0czsKKwl1aW50NjRfdAkJcnhkYXRhX29jdGV0czsKKwl1aW50MzJfdAkJc2NzaWNtZF9wZHVzX2NudDsKKwl1aW50MzJfdAkJZGF0YW91dF9wZHVzX2NudDsKKwl1aW50MzJfdAkJc2NzaXJzcF9wZHVzX2NudDsKKwl1aW50MzJfdAkJZGF0YWluX3BkdXNfY250OworCXVpbnQzMl90CQlyMnRfcGR1c19jbnQ7CisJdWludDMyX3QJCXRtZmNtZF9wZHVzX2NudDsKKwlpbnQzMl90CQkJdG1mcnNwX3BkdXNfY250OworCisJLyogY3VzdG9tIHN0YXRpc3RpY3MgKi8KKwl1aW50MzJfdAkJZWhfYWJvcnRfY250OworfTsKKworc3RydWN0IGlzY3NpX3F1ZXVlIHsKKwlzdHJ1Y3Qga2ZpZm8JCSpxdWV1ZTsJCS8qIEZJRk8gUXVldWUgKi8KKwl2b2lkCQkJKipwb29sOwkJLyogUG9vbCBvZiBlbGVtZW50cyAqLworCWludAkJCW1heDsJCS8qIE1heCBudW1iZXIgb2YgZWxlbWVudHMgKi8KK307CisKK3N0cnVjdCBpc2NzaV9zZXNzaW9uIHsKKwkvKiBpU0NTSSBzZXNzaW9uLXdpZGUgc2VxdWVuY2luZyAqLworCXVpbnQzMl90CQljbWRzbjsKKwl1aW50MzJfdAkJZXhwX2NtZHNuOworCXVpbnQzMl90CQltYXhfY21kc247CisKKwkvKiBjb25maWd1cmF0aW9uICovCisJaW50CQkJaW5pdGlhbF9yMnRfZW47CisJaW50CQkJbWF4X3IydDsKKwlpbnQJCQlpbW1fZGF0YV9lbjsKKwlpbnQJCQlmaXJzdF9idXJzdDsKKwlpbnQJCQltYXhfYnVyc3Q7CisJaW50CQkJdGltZTJ3YWl0OworCWludAkJCXRpbWUycmV0YWluOworCWludAkJCXBkdV9pbm9yZGVyX2VuOworCWludAkJCWRhdGFzZXFfaW5vcmRlcl9lbjsKKwlpbnQJCQllcmw7CisJaW50CQkJaWZtYXJrZXJfZW47CisJaW50CQkJb2ZtYXJrZXJfZW47CisKKwkvKiBjb250cm9sIGRhdGEgKi8KKwlzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0CSp0dDsKKwlzdHJ1Y3QgU2NzaV9Ib3N0CSpob3N0OworCXN0cnVjdCBpc2NzaV9jb25uCSpsZWFkY29ubjsJLyogbGVhZGluZyBjb25uZWN0aW9uICovCisJc3BpbmxvY2tfdAkJbG9jazsJCS8qIHByb3RlY3RzIHNlc3Npb24gc3RhdGUsICoKKwkJCQkJCSAqIHNlcXVlbmNlIG51bWJlcnMsICAgICAgICoKKwkJCQkJCSAqIHNlc3Npb24gcmVzb3VyY2VzOiAgICAgICoKKwkJCQkJCSAqIC0gY21kcG9vbCwJCSAgICoKKwkJCQkJCSAqIC0gbWdtdHBvb2wsCQkgICAqCisJCQkJCQkgKiAtIHIydHBvb2wJCSAgICovCisJaW50CQkJc3RhdGU7CQkvKiBzZXNzaW9uIHN0YXRlICAgICAgICAgICAqLworCXN0cnVjdCBsaXN0X2hlYWQJaXRlbTsKKwlpbnQJCQlhZ2U7CQkvKiBjb3VudHMgc2Vzc2lvbiByZS1vcGVucyAqLworCisJc3RydWN0IGxpc3RfaGVhZAljb25uZWN0aW9uczsJLyogbGlzdCBvZiBjb25uZWN0aW9ucyAqLworCWludAkJCWNtZHNfbWF4OwkvKiBzaXplIG9mIGNtZHMgYXJyYXkgKi8KKwlzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sJKipjbWRzOwkJLyogT3JpZ2luYWwgQ21kcyBhcnIgKi8KKwlzdHJ1Y3QgaXNjc2lfcXVldWUJY21kcG9vbDsJLyogUERVJ3MgcG9vbCAqLworCWludAkJCW1nbXRwb29sX21heDsJLyogc2l6ZSBvZiBtZ210IGFycmF5ICovCisJc3RydWN0IGlzY3NpX21nbXRfdGFzawkqKm1nbXRfY21kczsJLyogT3JpZ2luYWwgbWdtdCBhcnIgKi8KKwlzdHJ1Y3QgaXNjc2lfcXVldWUJbWdtdHBvb2w7CS8qIE1nbXQgUERVJ3MgcG9vbCAqLworfTsKKworLyoKKyAqIHNjc2kgaG9zdCB0ZW1wbGF0ZQorICovCitleHRlcm4gaW50IGlzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIGludCBkZXB0aCk7CitleHRlcm4gaW50IGlzY3NpX2VoX2Fib3J0KHN0cnVjdCBzY3NpX2NtbmQgKnNjKTsKK2V4dGVybiBpbnQgaXNjc2lfZWhfaG9zdF9yZXNldChzdHJ1Y3Qgc2NzaV9jbW5kICpzYyk7CitleHRlcm4gaW50IGlzY3NpX3F1ZXVlY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICpzYywKKwkJCSAgICAgIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKTsKKworLyoKKyAqIHNlc3Npb24gbWFuYWdlbWVudAorICovCitleHRlcm4gc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICoKK2lzY3NpX3Nlc3Npb25fc2V0dXAoc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqLCBzdHJ1Y3Qgc2NzaV90cmFuc3BvcnRfdGVtcGxhdGUgKiwKKwkJICAgIGludCwgaW50LCB1aW50MzJfdCwgdWludDMyX3QgKik7CitleHRlcm4gdm9pZCBpc2NzaV9zZXNzaW9uX3RlYXJkb3duKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqKTsKK2V4dGVybiBzdHJ1Y3QgaXNjc2lfc2Vzc2lvbiAqY2xhc3NfdG9fdHJhbnNwb3J0X3Nlc3Npb24oc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICopOworZXh0ZXJuIHZvaWQgaXNjc2lfc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKik7CisKKyNkZWZpbmUgc2Vzc2lvbl90b19jbHMoX3Nlc3MpIFwKKwlob3N0ZGF0YV9zZXNzaW9uKF9zZXNzLT5ob3N0LT5ob3N0ZGF0YSkKKworLyoKKyAqIGNvbm5lY3Rpb24gbWFuYWdlbWVudAorICovCitleHRlcm4gc3RydWN0IGlzY3NpX2Nsc19jb25uICppc2NzaV9jb25uX3NldHVwKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqLAorCQkJCQkgICAgICAgdWludDMyX3QpOworZXh0ZXJuIHZvaWQgaXNjc2lfY29ubl90ZWFyZG93bihzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKik7CitleHRlcm4gaW50IGlzY3NpX2Nvbm5fc3RhcnQoc3RydWN0IGlzY3NpX2Nsc19jb25uICopOworZXh0ZXJuIHZvaWQgaXNjc2lfY29ubl9zdG9wKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqLCBpbnQpOworZXh0ZXJuIGludCBpc2NzaV9jb25uX2JpbmQoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICosIHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqLAorCQkJICAgaW50KTsKK2V4dGVybiB2b2lkIGlzY3NpX2Nvbm5fZmFpbHVyZShzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwgZW51bSBpc2NzaV9lcnIgZXJyKTsKKworLyoKKyAqIHBkdSBhbmQgdGFzayBwcm9jZXNzaW5nCisgKi8KK2V4dGVybiBpbnQgaXNjc2lfY2hlY2tfYXNzaWduX2NtZHNuKHN0cnVjdCBpc2NzaV9zZXNzaW9uICosCisJCQkJICAgIHN0cnVjdCBpc2NzaV9ub3BpbiAqKTsKK2V4dGVybiB2b2lkIGlzY3NpX3ByZXBfdW5zb2xpY2l0X2RhdGFfcGR1KHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqLAorCQkJCQlzdHJ1Y3QgaXNjc2lfZGF0YSAqaGRyLAorCQkJCQlpbnQgdHJhbnNwb3J0X2RhdGFfY250KTsKK2V4dGVybiBpbnQgaXNjc2lfY29ubl9zZW5kX3BkdShzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKiwgc3RydWN0IGlzY3NpX2hkciAqLAorCQkJCWNoYXIgKiwgdWludDMyX3QpOworZXh0ZXJuIGludCBpc2NzaV9jb21wbGV0ZV9wZHUoc3RydWN0IGlzY3NpX2Nvbm4gKiwgc3RydWN0IGlzY3NpX2hkciAqLAorCQkJICAgICAgY2hhciAqLCBpbnQpOworZXh0ZXJuIGludCBfX2lzY3NpX2NvbXBsZXRlX3BkdShzdHJ1Y3QgaXNjc2lfY29ubiAqLCBzdHJ1Y3QgaXNjc2lfaGRyICosCisJCQkJY2hhciAqLCBpbnQpOworZXh0ZXJuIGludCBpc2NzaV92ZXJpZnlfaXR0KHN0cnVjdCBpc2NzaV9jb25uICosIHN0cnVjdCBpc2NzaV9oZHIgKiwKKwkJCSAgICB1aW50MzJfdCAqKTsKKworLyoKKyAqIGdlbmVyaWMgaGVscGVycworICovCitleHRlcm4gdm9pZCBpc2NzaV9wb29sX2ZyZWUoc3RydWN0IGlzY3NpX3F1ZXVlICosIHZvaWQgKiopOworZXh0ZXJuIGludCBpc2NzaV9wb29sX2luaXQoc3RydWN0IGlzY3NpX3F1ZXVlICosIGludCwgdm9pZCAqKiosIGludCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2lfY21uZC5oIGIvaW5jbHVkZS9zY3NpL3Njc2lfY21uZC5oCmluZGV4IDFhY2UxYjkuLmU0NmNkNDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9zY3NpX2NtbmQuaAorKysgYi9pbmNsdWRlL3Njc2kvc2NzaV9jbW5kLmgKQEAgLTksNyArOSw2IEBACiBzdHJ1Y3QgcmVxdWVzdDsKIHN0cnVjdCBzY2F0dGVybGlzdDsKIHN0cnVjdCBzY3NpX2RldmljZTsKLXN0cnVjdCBzY3NpX3JlcXVlc3Q7CiAKIAogLyogZW1iZWRkZWQgaW4gc2NzaV9jbW5kICovCkBAIC0yOSwxMyArMjgsOCBAQAogfTsKIAogc3RydWN0IHNjc2lfY21uZCB7Ci0JaW50ICAgICBzY19tYWdpYzsKLQogCXN0cnVjdCBzY3NpX2RldmljZSAqZGV2aWNlOwotCXN0cnVjdCBzY3NpX3JlcXVlc3QgKnNjX3JlcXVlc3Q7Ci0KIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7ICAvKiBzY3NpX2NtbmQgcGFydGljaXBhdGVzIGluIHF1ZXVlIGxpc3RzICovCi0KIAlzdHJ1Y3QgbGlzdF9oZWFkIGVoX2VudHJ5OyAvKiBlbnRyeSBmb3IgdGhlIGhvc3QgZWhfY21kX3EgKi8KIAlpbnQgZWhfZWZsYWdzOwkJLyogVXNlZCBieSBlcnJvciBoYW5kbHIgKi8KIAl2b2lkICgqZG9uZSkgKHN0cnVjdCBzY3NpX2NtbmQgKik7CS8qIE1pZC1sZXZlbCBkb25lIGZ1bmN0aW9uICovCkBAIC0xNTEsNSArMTQ1LDEwIEBACiBleHRlcm4gdm9pZCBzY3NpX3B1dF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKik7CiBleHRlcm4gdm9pZCBzY3NpX2lvX2NvbXBsZXRpb24oc3RydWN0IHNjc2lfY21uZCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CiBleHRlcm4gdm9pZCBzY3NpX2ZpbmlzaF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKmNtZCk7CitleHRlcm4gdm9pZCBzY3NpX3JlcV9hYm9ydF9jbWQoc3RydWN0IHNjc2lfY21uZCAqY21kKTsKKworZXh0ZXJuIHZvaWQgKnNjc2lfa21hcF9hdG9taWNfc2coc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IHNnX2NvdW50LAorCQkJCSBzaXplX3QgKm9mZnNldCwgc2l6ZV90ICpsZW4pOworZXh0ZXJuIHZvaWQgc2NzaV9rdW5tYXBfYXRvbWljX3NnKHZvaWQgKnZpcnQpOwogCiAjZW5kaWYgLyogX1NDU0lfU0NTSV9DTU5EX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zY3NpX2RiZy5oIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGJnLmgKaW5kZXggNGQ2OWRlZS4uM2JiYmZiZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2lfZGJnLmgKKysrIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGJnLmgKQEAgLTIsMTQgKzIsMTIgQEAKICNkZWZpbmUgX1NDU0lfU0NTSV9EQkdfSAogCiBzdHJ1Y3Qgc2NzaV9jbW5kOwotc3RydWN0IHNjc2lfcmVxdWVzdDsKIHN0cnVjdCBzY3NpX3NlbnNlX2hkcjsKIAogZXh0ZXJuIHZvaWQgc2NzaV9wcmludF9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQgKik7CiBleHRlcm4gdm9pZCBzY3NpX3ByaW50X3NlbnNlX2hkcihjb25zdCBjaGFyICosIHN0cnVjdCBzY3NpX3NlbnNlX2hkciAqKTsKIGV4dGVybiB2b2lkIF9fc2NzaV9wcmludF9jb21tYW5kKHVuc2lnbmVkIGNoYXIgKik7CiBleHRlcm4gdm9pZCBzY3NpX3ByaW50X3NlbnNlKGNvbnN0IGNoYXIgKiwgc3RydWN0IHNjc2lfY21uZCAqKTsKLWV4dGVybiB2b2lkIHNjc2lfcHJpbnRfcmVxX3NlbnNlKGNvbnN0IGNoYXIgKiwgc3RydWN0IHNjc2lfcmVxdWVzdCAqKTsKIGV4dGVybiB2b2lkIF9fc2NzaV9wcmludF9zZW5zZShjb25zdCBjaGFyICpuYW1lLAogCQkJICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlbnNlX2J1ZmZlciwKIAkJCSAgICAgICBpbnQgc2Vuc2VfbGVuKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zY3NpX2RldmluZm8uaCBiL2luY2x1ZGUvc2NzaS9zY3NpX2RldmluZm8uaAppbmRleCBkMzFiMTZkLi5iNGRkZDNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpbmZvLmgKKysrIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aW5mby5oCkBAIC0yOSw0ICsyOSw1IEBACiAjZGVmaW5lIEJMSVNUX1NFTEVDVF9OT19BVE4JMHgyMDAwMDAgLyogc2VsZWN0IHdpdGhvdXQgQVROICovCiAjZGVmaW5lIEJMSVNUX1JFVFJZX0hXRVJST1IJMHg0MDAwMDAgLyogcmV0cnkgSEFSRFdBUkVfRVJST1IgKi8KICNkZWZpbmUgQkxJU1RfTUFYXzUxMgkJMHg4MDAwMDAgLyogbWF4aW11bSA1MTIgc2VjdG9yIGNkYiBsZW5ndGggKi8KKyNkZWZpbmUgQkxJU1RfQVRUQUNIX1BRMwkweDEwMDAwMDAgLyogU2NhbjogQXR0YWNoIHRvIFBRMyBkZXZpY2VzICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zY3NpX2VoLmggYi9pbmNsdWRlL3Njc2kvc2NzaV9laC5oCmluZGV4IGQxNjA4ODAuLmM1YzBmNjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9zY3NpX2VoLmgKKysrIGIvaW5jbHVkZS9zY3NpL3Njc2lfZWguaApAQCAtMyw3ICszLDYgQEAKIAogc3RydWN0IHNjc2lfY21uZDsKIHN0cnVjdCBzY3NpX2RldmljZTsKLXN0cnVjdCBzY3NpX3JlcXVlc3Q7CiBzdHJ1Y3QgU2NzaV9Ib3N0OwogCiAvKgpAQCAtNDMsOCArNDIsNiBAQAogZXh0ZXJuIGludCBzY3NpX2Jsb2NrX3doZW5fcHJvY2Vzc2luZ19lcnJvcnMoc3RydWN0IHNjc2lfZGV2aWNlICopOwogZXh0ZXJuIGludCBzY3NpX25vcm1hbGl6ZV9zZW5zZShjb25zdCB1OCAqc2Vuc2VfYnVmZmVyLCBpbnQgc2JfbGVuLAogCQlzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIgKnNzaGRyKTsKLWV4dGVybiBpbnQgc2NzaV9yZXF1ZXN0X25vcm1hbGl6ZV9zZW5zZShzdHJ1Y3Qgc2NzaV9yZXF1ZXN0ICpzcmVxLAotCQlzdHJ1Y3Qgc2NzaV9zZW5zZV9oZHIgKnNzaGRyKTsKIGV4dGVybiBpbnQgc2NzaV9jb21tYW5kX25vcm1hbGl6ZV9zZW5zZShzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQsCiAJCXN0cnVjdCBzY3NpX3NlbnNlX2hkciAqc3NoZHIpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmggYi9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKaW5kZXggZGU2Y2U1NC4uYTQyZWZkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2lfaG9zdC5oCisrKyBiL2luY2x1ZGUvc2NzaS9zY3NpX2hvc3QuaApAQCAtNDcyLDYgKzQ3Miw3IEBACiAJICovCiAJdW5zaWduZWQgaW50IGhvc3RfYnVzeTsJCSAgIC8qIGNvbW1hbmRzIGFjdHVhbGx5IGFjdGl2ZSBvbiBsb3ctbGV2ZWwgKi8KIAl1bnNpZ25lZCBpbnQgaG9zdF9mYWlsZWQ7CSAgIC8qIGNvbW1hbmRzIHRoYXQgZmFpbGVkLiAqLworCXVuc2lnbmVkIGludCBob3N0X2VoX3NjaGVkdWxlZDsgICAgLyogRUggc2NoZWR1bGVkIHdpdGhvdXQgY29tbWFuZCAqLwogICAgIAogCXVuc2lnbmVkIHNob3J0IGhvc3Rfbm87ICAvKiBVc2VkIGZvciBJT0NUTF9HRVRfSURMVU4sIC9wcm9jL3Njc2kgZXQgYWwuICovCiAJaW50IHJlc2V0dGluZzsgLyogaWYgc2V0LCBpdCBtZWFucyB0aGF0IGxhc3RfcmVzZXQgaXMgYSB2YWxpZCB2YWx1ZSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2lfcmVxdWVzdC5oIGIvaW5jbHVkZS9zY3NpL3Njc2lfcmVxdWVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ2OWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvc2NzaS9zY3NpX3JlcXVlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLSNpZm5kZWYgX1NDU0lfU0NTSV9SRVFVRVNUX0gKLSNkZWZpbmUgX1NDU0lfU0NTSV9SRVFVRVNUX0gKLQotI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+Ci0KLXN0cnVjdCByZXF1ZXN0Owotc3RydWN0IHNjc2lfY21uZDsKLXN0cnVjdCBzY3NpX2RldmljZTsKLXN0cnVjdCBTY3NpX0hvc3Q7Ci0KLQotLyoKLSAqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzbGltbWVkIGRvd24gdmVyc2lvbiBvZiBTY3NpX0NtbmQuICBUaGUgcG9pbnQgb2YKLSAqIGhhdmluZyB0aGlzIGlzIHRoYXQgcmVxdWVzdHMgdGhhdCBhcmUgaW5qZWN0ZWQgaW50byB0aGUgcXVldWUgYXMgcmVzdWx0Ci0gKiBvZiB0aGluZ3MgbGlrZSBpb2N0bHMgYW5kIGNoYXJhY3RlciBkZXZpY2VzIHNob3VsZG4ndCBiZSB1c2luZyBhCi0gKiBTY3NpX0NtbmQgdW50aWwgc3VjaCBhIHRpbWUgdGhhdCB0aGUgY29tbWFuZCBpcyBhY3R1YWxseSBhdCB0aGUgaGVhZAotICogb2YgdGhlIHF1ZXVlIGFuZCBiZWluZyBzZW50IHRvIHRoZSBkcml2ZXIuCi0gKi8KLXN0cnVjdCBzY3NpX3JlcXVlc3QgewotCWludCAgICAgc3JfbWFnaWM7Ci0JaW50ICAgICBzcl9yZXN1bHQ7CS8qIFN0YXR1cyBjb2RlIGZyb20gbG93ZXIgbGV2ZWwgZHJpdmVyICovCi0JdW5zaWduZWQgY2hhciBzcl9zZW5zZV9idWZmZXJbU0NTSV9TRU5TRV9CVUZGRVJTSVpFXTsJCS8qIG9idGFpbmVkIGJ5IFJFUVVFU1QgU0VOU0UKLQkJCQkJCSAqIHdoZW4gQ0hFQ0sgQ09ORElUSU9OIGlzCi0JCQkJCQkgKiByZWNlaXZlZCBvbiBvcmlnaW5hbCBjb21tYW5kIAotCQkJCQkJICogKGF1dG8tc2Vuc2UpICovCi0KLQlzdHJ1Y3QgU2NzaV9Ib3N0ICpzcl9ob3N0OwotCXN0cnVjdCBzY3NpX2RldmljZSAqc3JfZGV2aWNlOwotCXN0cnVjdCBzY3NpX2NtbmQgKnNyX2NvbW1hbmQ7Ci0Jc3RydWN0IHJlcXVlc3QgKnNyX3JlcXVlc3Q7CS8qIEEgY29weSBvZiB0aGUgY29tbWFuZCB3ZSBhcmUKLQkJCQkgICB3b3JraW5nIG9uICovCi0JdW5zaWduZWQgc3JfYnVmZmxlbjsJLyogU2l6ZSBvZiBkYXRhIGJ1ZmZlciAqLwotCXZvaWQgKnNyX2J1ZmZlcjsJCS8qIERhdGEgYnVmZmVyICovCi0JaW50IHNyX2FsbG93ZWQ7Ci0JZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gc3JfZGF0YV9kaXJlY3Rpb247Ci0JdW5zaWduZWQgY2hhciBzcl9jbWRfbGVuOwotCXVuc2lnbmVkIGNoYXIgc3JfY21uZFtNQVhfQ09NTUFORF9TSVpFXTsKLQl2b2lkICgqc3JfZG9uZSkgKHN0cnVjdCBzY3NpX2NtbmQgKik7CS8qIE1pZC1sZXZlbCBkb25lIGZ1bmN0aW9uICovCi0JaW50IHNyX3RpbWVvdXRfcGVyX2NvbW1hbmQ7Ci0JdW5zaWduZWQgc2hvcnQgc3JfdXNlX3NnOwkvKiBOdW1iZXIgb2YgcGllY2VzIG9mIHNjYXR0ZXItZ2F0aGVyICovCi0JdW5zaWduZWQgc2hvcnQgc3Jfc2dsaXN0X2xlbjsJLyogc2l6ZSBvZiBtYWxsb2MnZCBzY2F0dGVyLWdhdGhlciBsaXN0ICovCi0JdW5zaWduZWQgc3JfdW5kZXJmbG93OwkvKiBSZXR1cm4gZXJyb3IgaWYgbGVzcyB0aGFuCi0JCQkJICAgdGhpcyBhbW91bnQgaXMgdHJhbnNmZXJyZWQgKi8KLSAJdm9pZCAqdXBwZXJfcHJpdmF0ZV9kYXRhOwkvKiByZXNlcnZlZCBmb3Igb3duZXIgKHVzdWFsbHkgdXBwZXIKLSAJCQkJCSAgIGxldmVsIGRyaXZlcikgb2YgdGhpcyByZXF1ZXN0ICovCi19OwotCi1leHRlcm4gc3RydWN0IHNjc2lfcmVxdWVzdCAqc2NzaV9hbGxvY2F0ZV9yZXF1ZXN0KHN0cnVjdCBzY3NpX2RldmljZSAqLCBnZnBfdCk7Ci1leHRlcm4gdm9pZCBzY3NpX3JlbGVhc2VfcmVxdWVzdChzdHJ1Y3Qgc2NzaV9yZXF1ZXN0ICopOwotZXh0ZXJuIHZvaWQgc2NzaV9kb19yZXEoc3RydWN0IHNjc2lfcmVxdWVzdCAqLCBjb25zdCB2b2lkICpjbW5kLAotCQkJdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBidWZmbGVuLAotCQkJdm9pZCAoKmRvbmUpIChzdHJ1Y3Qgc2NzaV9jbW5kICopLAotCQkJaW50IHRpbWVvdXQsIGludCByZXRyaWVzKTsKLSNlbmRpZiAvKiBfU0NTSV9TQ1NJX1JFUVVFU1RfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2lfdHJhbnNwb3J0X2lzY3NpLmggYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuaAppbmRleCBiNDFjZjA3Li5iNjg0NDI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuaAorKysgYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuaApAQCAtMiw3ICsyLDcgQEAKICAqIGlTQ1NJIHRyYW5zcG9ydCBjbGFzcyBkZWZpbml0aW9ucwogICoKICAqIENvcHlyaWdodCAoQykgSUJNIENvcnBvcmF0aW9uLCAyMDA0Ci0gKiBDb3B5cmlnaHQgKEMpIE1pa2UgQ2hyaXN0aWUsIDIwMDQgLSAyMDA1CisgKiBDb3B5cmlnaHQgKEMpIE1pa2UgQ2hyaXN0aWUsIDIwMDQgLSAyMDA2CiAgKiBDb3B5cmlnaHQgKEMpIERtaXRyeSBZdXN1cG92LCAyMDA0IC0gMjAwNQogICogQ29weXJpZ2h0IChDKSBBbGV4IEFpem1hbiwgMjAwNCAtIDIwMDUKICAqCkBAIC0yNyw5ICsyNywxMyBAQAogI2luY2x1ZGUgPHNjc2kvaXNjc2lfaWYuaD4KIAogc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlOworc3RydWN0IGlzY3NpX3RyYW5zcG9ydDsKIHN0cnVjdCBTY3NpX0hvc3Q7CiBzdHJ1Y3QgbWVtcG9vbF96b25lOwogc3RydWN0IGlzY3NpX2Nsc19jb25uOworc3RydWN0IGlzY3NpX2Nvbm47CitzdHJ1Y3QgaXNjc2lfY21kX3Rhc2s7CitzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrOwogCiAvKioKICAqIHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgLSBpU0NTSSBUcmFuc3BvcnQgdGVtcGxhdGUKQEAgLTQ2LDYgKzUwLDI0IEBACiAgKiBAc3RhcnRfY29ubjoJCXNldCBjb25uZWN0aW9uIHRvIGJlIG9wZXJhdGlvbmFsCiAgKiBAc3RvcF9jb25uOgkJc3VzcGVuZC9yZWNvdmVyL3Rlcm1pbmF0ZSBjb25uZWN0aW9uCiAgKiBAc2VuZF9wZHU6CQlzZW5kIGlTQ1NJIFBEVSwgTG9naW4sIExvZ291dCwgTk9QLU91dCwgUmVqZWN0LCBUZXh0LgorICogQHNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQ6IG5vdGlmeSBMTEQgYSBibG9jayBkdXJpbmcgcmVjb3ZlcnkgdGltZWQgb3V0CisgKiBAc3VzcGVuZF9jb25uX3JlY3Y6CXN1c2VwZW5kIHRoZSByZWN2IHNpZGUgb2YgdGhlIGNvbm5lY3Rpb24KKyAqIEB0ZXJtaW5jYXRlX2Nvbm46CWRlc3Ryb3kgc29ja2V0IGNvbm5lY3Rpb24uIENhbGxlZCB3aXRoIG11dGV4IGxvY2suCisgKiBAaW5pdF9jbWRfdGFzazoJSW5pdGlhbGl6ZSBhIGlzY3NpX2NtZF90YXNrIGFuZCBhbnkgaW50ZXJuYWwgc3RydWN0cy4KKyAqCQkJQ2FsbGVkIGZyb20gcXVldWVjb21tYW5kIHdpdGggc2Vzc2lvbiBsb2NrIGhlbGQuCisgKiBAaW5pdF9tZ210X3Rhc2s6CUluaXRpYWxpemUgYSBpc2NzaV9tZ210X3Rhc2sgYW5kIGFueSBpbnRlcm5hbCBzdHJ1Y3RzLgorICoJCQlDYWxsZWQgZnJvbSBpc2NzaV9jb25uX3NlbmRfZ2VuZXJpYyB3aXRoIHhtaXRtdXRleC4KKyAqIEB4bWl0X2NtZF90YXNrOglSZXF1ZXN0cyBMTEQgdG8gdHJhbnNmZXIgY21kIHRhc2suIFJldHVybnMgMCBvciB0aGUKKyAqCQkJdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBvbiBzdWNjZXNzLCBhbmQgLUV4eXoKKyAqCQkJdmFsdWUgb24gZXJyb3IuCisgKiBAeG1pdF9tZ210X3Rhc2s6CVJlcXVlc3RzIExMRCB0byB0cmFuc2ZlciBtZ210IHRhc2suIFJldHVybnMgMCBvciB0aGUKKyAqCQkJdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBvbiBzdWNjZXNzLCBhbmQgLUV4eXoKKyAqCQkJdmFsdWUgb24gZXJyb3IuCisgKiBAY2xlYW51cF9jbWRfdGFzazoJcmVxdWVzdHMgTExEIHRvIGZhaWwgY21kIHRhc2suIENhbGxlZCB3aXRoIHhtaXRtdXRleAorICoJCQlhbmQgc2Vzc2lvbi0+bG9jayBhZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbgorICoJCQlzdXNwZW5kZWQgYW5kIHRlcm1pbmF0ZWQgZHVyaW5nIHJlY292ZXJ5LiBJZiBjYWxsZWQKKyAqCQkJZnJvbSBhYm9ydCB0YXNrIHRoZW4gY29ubmVjdGlvbiBpcyBub3Qgc3VzcGVuZGVkCisgKgkJCW9yIHRlcm1pbmF0ZWQgYnV0IHNrX2NhbGxiYWNrX2xvY2sgaXMgaGVsZAogICoKICAqIFRlbXBsYXRlIEFQSSBwcm92aWRlZCBieSBpU0NTSSBUcmFuc3BvcnQKICAqLwpAQCAtNTMsMzggKzc1LDU4IEBACiAJc3RydWN0IG1vZHVsZSAqb3duZXI7CiAJY2hhciAqbmFtZTsKIAl1bnNpZ25lZCBpbnQgY2FwczsKKwkvKiBMTEQgc2V0cyB0aGlzIHRvIGluZGljYXRlIHdoYXQgdmFsdWVzIGl0IGNhbiBleHBvcnQgdG8gc3lzZnMgKi8KKwl1bnNpZ25lZCBpbnQgcGFyYW1fbWFzazsKIAlzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlICpob3N0X3RlbXBsYXRlOwotCS8qIExMRCBzZXNzaW9uL3Njc2lfaG9zdCBkYXRhIHNpemUgKi8KLQlpbnQgaG9zdGRhdGFfc2l6ZTsKLQkvKiBMTEQgaXNjc2lfaG9zdCBkYXRhIHNpemUgKi8KLQlpbnQgaWhvc3RkYXRhX3NpemU7CiAJLyogTExEIGNvbm5lY3Rpb24gZGF0YSBzaXplICovCiAJaW50IGNvbm5kYXRhX3NpemU7CisJLyogTExEIHNlc3Npb24gZGF0YSBzaXplICovCisJaW50IHNlc3Npb25kYXRhX3NpemU7CiAJaW50IG1heF9sdW47CiAJdW5zaWduZWQgaW50IG1heF9jb25uOwogCXVuc2lnbmVkIGludCBtYXhfY21kX2xlbjsKLQlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKigqY3JlYXRlX3Nlc3Npb24pCi0JCShzdHJ1Y3Qgc2NzaV90cmFuc3BvcnRfdGVtcGxhdGUgKnQsIHVpbnQzMl90IHNuLCB1aW50MzJfdCAqc2lkKTsKKwlzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKigqY3JlYXRlX3Nlc3Npb24pIChzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICppdCwKKwkJc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICp0LCB1aW50MzJfdCBzbiwgdWludDMyX3QgKmhuKTsKIAl2b2lkICgqZGVzdHJveV9zZXNzaW9uKSAoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uKTsKIAlzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKigqY3JlYXRlX2Nvbm4pIChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3MsCiAJCQkJdWludDMyX3QgY2lkKTsKIAlpbnQgKCpiaW5kX2Nvbm4pIChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24sCiAJCQkgIHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY2xzX2Nvbm4sCi0JCQkgIHVpbnQzMl90IHRyYW5zcG9ydF9mZCwgaW50IGlzX2xlYWRpbmcpOworCQkJICB1aW50NjRfdCB0cmFuc3BvcnRfZXBoLCBpbnQgaXNfbGVhZGluZyk7CiAJaW50ICgqc3RhcnRfY29ubikgKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubik7CiAJdm9pZCAoKnN0b3BfY29ubikgKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwgaW50IGZsYWcpOwogCXZvaWQgKCpkZXN0cm95X2Nvbm4pIChzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4pOwogCWludCAoKnNldF9wYXJhbSkgKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwgZW51bSBpc2NzaV9wYXJhbSBwYXJhbSwKIAkJCSAgdWludDMyX3QgdmFsdWUpOwogCWludCAoKmdldF9jb25uX3BhcmFtKSAoc3RydWN0IGlzY3NpX2Nsc19jb25uICpjb25uLAotCQkJICAgICAgIGVudW0gaXNjc2lfcGFyYW0gcGFyYW0sCi0JCQkgICAgICAgdWludDMyX3QgKnZhbHVlKTsKKwkJCSAgICAgICBlbnVtIGlzY3NpX3BhcmFtIHBhcmFtLCB1aW50MzJfdCAqdmFsdWUpOwogCWludCAoKmdldF9zZXNzaW9uX3BhcmFtKSAoc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uLAogCQkJCSAgZW51bSBpc2NzaV9wYXJhbSBwYXJhbSwgdWludDMyX3QgKnZhbHVlKTsKKwlpbnQgKCpnZXRfY29ubl9zdHJfcGFyYW0pIChzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4sCisJCQkJICAgZW51bSBpc2NzaV9wYXJhbSBwYXJhbSwgY2hhciAqYnVmKTsKKwlpbnQgKCpnZXRfc2Vzc2lvbl9zdHJfcGFyYW0pIChzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24sCisJCQkJICAgICAgZW51bSBpc2NzaV9wYXJhbSBwYXJhbSwgY2hhciAqYnVmKTsKIAlpbnQgKCpzZW5kX3BkdSkgKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAogCQkJIGNoYXIgKmRhdGEsIHVpbnQzMl90IGRhdGFfc2l6ZSk7CiAJdm9pZCAoKmdldF9zdGF0cykgKHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwKIAkJCSAgIHN0cnVjdCBpc2NzaV9zdGF0cyAqc3RhdHMpOworCXZvaWQgKCpzdXNwZW5kX2Nvbm5fcmVjdikgKHN0cnVjdCBpc2NzaV9jb25uICpjb25uKTsKKwl2b2lkICgqdGVybWluYXRlX2Nvbm4pIChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubik7CisJdm9pZCAoKmluaXRfY21kX3Rhc2spIChzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKTsKKwl2b2lkICgqaW5pdF9tZ210X3Rhc2spIChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwKKwkJCQlzdHJ1Y3QgaXNjc2lfbWdtdF90YXNrICptdGFzaywKKwkJCQljaGFyICpkYXRhLCB1aW50MzJfdCBkYXRhX3NpemUpOworCWludCAoKnhtaXRfY21kX3Rhc2spIChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubiwKKwkJCSAgICAgIHN0cnVjdCBpc2NzaV9jbWRfdGFzayAqY3Rhc2spOworCXZvaWQgKCpjbGVhbnVwX2NtZF90YXNrKSAoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4sCisJCQkJICBzdHJ1Y3QgaXNjc2lfY21kX3Rhc2sgKmN0YXNrKTsKKwlpbnQgKCp4bWl0X21nbXRfdGFzaykgKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLAorCQkJICAgICAgIHN0cnVjdCBpc2NzaV9tZ210X3Rhc2sgKm10YXNrKTsKKwl2b2lkICgqc2Vzc2lvbl9yZWNvdmVyeV90aW1lZG91dCkgKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2Vzc2lvbik7CisJaW50ICgqZXBfY29ubmVjdCkgKHN0cnVjdCBzb2NrYWRkciAqZHN0X2FkZHIsIGludCBub25fYmxvY2tpbmcsCisJCQkgICB1aW50NjRfdCAqZXBfaGFuZGxlKTsKKwlpbnQgKCplcF9wb2xsKSAodWludDY0X3QgZXBfaGFuZGxlLCBpbnQgdGltZW91dF9tcyk7CisJdm9pZCAoKmVwX2Rpc2Nvbm5lY3QpICh1aW50NjRfdCBlcF9oYW5kbGUpOwogfTsKIAogLyoKQEAgLTEwMCwxMCArMTQyLDI2IEBACiBleHRlcm4gaW50IGlzY3NpX3JlY3ZfcGR1KHN0cnVjdCBpc2NzaV9jbHNfY29ubiAqY29ubiwgc3RydWN0IGlzY3NpX2hkciAqaGRyLAogCQkJICBjaGFyICpkYXRhLCB1aW50MzJfdCBkYXRhX3NpemUpOwogCisKKy8qIENvbm5lY3Rpb24ncyBzdGF0ZXMgKi8KKyNkZWZpbmUgSVNDU0lfQ09OTl9JTklUSUFMX1NUQUdFCTAKKyNkZWZpbmUgSVNDU0lfQ09OTl9TVEFSVEVECQkxCisjZGVmaW5lIElTQ1NJX0NPTk5fU1RPUFBFRAkJMgorI2RlZmluZSBJU0NTSV9DT05OX0NMRUFOVVBfV0FJVAkJMworCiBzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gewogCXN0cnVjdCBsaXN0X2hlYWQgY29ubl9saXN0OwkvKiBpdGVtIGluIGNvbm5saXN0ICovCiAJdm9pZCAqZGRfZGF0YTsJCQkvKiBMTEQgcHJpdmF0ZSBkYXRhICovCiAJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworCXVpbnQzMl90IGNpZDsJCQkvKiBjb25uZWN0aW9uIGlkICovCisKKwkvKiBwb3J0YWwvZ3JvdXAgdmFsdWVzIHdlIGdvdCBkdXJpbmcgZGlzY292ZXJ5ICovCisJY2hhciAqcGVyc2lzdGVudF9hZGRyZXNzOworCWludCBwZXJzaXN0ZW50X3BvcnQ7CisJLyogcG9ydGFsL2dyb3VwIHZhbHVlcyB3ZSBhcmUgY3VycmVudGx5IHVzaW5nICovCisJY2hhciAqYWRkcmVzczsKKwlpbnQgcG9ydDsKKwogCWludCBhY3RpdmU7CQkJLyogbXVzdCBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb25ubG9jayAqLwogCXN0cnVjdCBkZXZpY2UgZGV2OwkJLyogc3lzZnMgdHJhbnNwb3J0L2NvbnRhaW5lciBkZXZpY2UgKi8KIAlzdHJ1Y3QgbWVtcG9vbF96b25lICp6X2Vycm9yOwpAQCAtMTE0LDkgKzE3MiwzMiBAQAogI2RlZmluZSBpc2NzaV9kZXZfdG9fY29ubihfZGV2KSBcCiAJY29udGFpbmVyX29mKF9kZXYsIHN0cnVjdCBpc2NzaV9jbHNfY29ubiwgZGV2KQogCisvKiBTZXNzaW9uJ3Mgc3RhdGVzICovCisjZGVmaW5lIElTQ1NJX1NUQVRFX0ZSRUUJCTEKKyNkZWZpbmUgSVNDU0lfU1RBVEVfTE9HR0VEX0lOCQkyCisjZGVmaW5lIElTQ1NJX1NUQVRFX0ZBSUxFRAkJMworI2RlZmluZSBJU0NTSV9TVEFURV9URVJNSU5BVEUJCTQKKyNkZWZpbmUgSVNDU0lfU1RBVEVfSU5fUkVDT1ZFUlkJCTUKKyNkZWZpbmUgSVNDU0lfU1RBVEVfUkVDT1ZFUllfRkFJTEVECTYKKwogc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNlc3NfbGlzdDsJCS8qIGl0ZW0gaW4gc2Vzc2lvbl9saXN0ICovCisJc3RydWN0IGxpc3RfaGVhZCBob3N0X2xpc3Q7CiAJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworCisJLyogaVNDU0kgdmFsdWVzIHVzZWQgYXMgdW5pcXVlIGlkIGJ5IHVzZXJzcGFjZS4gKi8KKwljaGFyICp0YXJnZXRuYW1lOworCWludCB0cGd0OworCisJLyogcmVjb3ZlcnkgZmllbGRzICovCisJaW50IHJlY292ZXJ5X3RtbzsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVjb3Zlcnlfd29yazsKKworCWludCB0YXJnZXRfaWQ7CisJaW50IGNoYW5uZWw7CisKKwlpbnQgc2lkOwkJCQkvKiBzZXNzaW9uIGlkICovCisJdm9pZCAqZGRfZGF0YTsJCQkJLyogTExEIHByaXZhdGUgZGF0YSAqLwogCXN0cnVjdCBkZXZpY2UgZGV2OwkvKiBzeXNmcyB0cmFuc3BvcnQvY29udGFpbmVyIGRldmljZSAqLwogfTsKIApAQCAtMTI2LDIyICsyMDcsMjIgQEAKICNkZWZpbmUgaXNjc2lfc2Vzc2lvbl90b19zaG9zdChfc2Vzc2lvbikgXAogCWRldl90b19zaG9zdChfc2Vzc2lvbi0+ZGV2LnBhcmVudCkKIAorc3RydWN0IGlzY3NpX2hvc3QgeworCWludCBuZXh0X3RhcmdldF9pZDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHNlc3Npb25zOworCXN0cnVjdCBtdXRleCBtdXRleDsKK307CisKIC8qCiAgKiBzZXNzaW9uIGFuZCBjb25uZWN0aW9uIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGJ5IEhXIGlTQ1NJIExMRHMKICAqLwogZXh0ZXJuIHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqaXNjc2lfY3JlYXRlX3Nlc3Npb24oc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsCi0JCQkJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdCk7CisJCQkJc3RydWN0IGlzY3NpX3RyYW5zcG9ydCAqdCwgaW50IGNoYW5uZWwpOwogZXh0ZXJuIGludCBpc2NzaV9kZXN0cm95X3Nlc3Npb24oc3RydWN0IGlzY3NpX2Nsc19zZXNzaW9uICpzZXNzaW9uKTsKIGV4dGVybiBzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmlzY3NpX2NyZWF0ZV9jb25uKHN0cnVjdCBpc2NzaV9jbHNfc2Vzc2lvbiAqc2VzcywKIAkJCQkJICAgIHVpbnQzMl90IGNpZCk7CiBleHRlcm4gaW50IGlzY3NpX2Rlc3Ryb3lfY29ubihzdHJ1Y3QgaXNjc2lfY2xzX2Nvbm4gKmNvbm4pOwotCi0vKgotICogc2Vzc2lvbiBmdW5jdGlvbnMgdXNlZCBieSBzb2Z0d2FyZSBpc2NzaQotICovCi1leHRlcm4gc3RydWN0IFNjc2lfSG9zdCAqCi1pc2NzaV90cmFuc3BvcnRfY3JlYXRlX3Nlc3Npb24oc3RydWN0IHNjc2lfdHJhbnNwb3J0X3RlbXBsYXRlICpzY3NpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNjc2lfdHJhbnNwb3J0ICp0cmFuc3BvcnQpOwotZXh0ZXJuIGludCBpc2NzaV90cmFuc3BvcnRfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0KTsKK2V4dGVybiB2b2lkIGlzY3NpX3VuYmxvY2tfc2Vzc2lvbihzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24pOworZXh0ZXJuIHZvaWQgaXNjc2lfYmxvY2tfc2Vzc2lvbihzdHJ1Y3QgaXNjc2lfY2xzX3Nlc3Npb24gKnNlc3Npb24pOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zZ19yZXF1ZXN0LmggYi9pbmNsdWRlL3Njc2kvc2dfcmVxdWVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2ZmNTI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvc2NzaS9zZ19yZXF1ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi10eXBlZGVmIHN0cnVjdCBzY3NpX3JlcXVlc3QgU2NzaV9SZXF1ZXN0OwotCi1zdGF0aWMgU2NzaV9SZXF1ZXN0ICpkdW1teV9jbWRwOwkvKiBvbmx5IHVzZWQgZm9yIHNpemVvZiAqLwotCi10eXBlZGVmIHN0cnVjdCBzZ19zY2F0dGVyX2hvbGQgeyAvKiBob2xkaW5nIGFyZWEgZm9yIHNjc2kgc2NhdHRlciBnYXRoZXIgaW5mbyAqLwotCXVuc2lnbmVkIHNob3J0IGtfdXNlX3NnOyAvKiBDb3VudCBvZiBrZXJuZWwgc2NhdHRlci1nYXRoZXIgcGllY2VzICovCi0JdW5zaWduZWQgc2hvcnQgc2dsaXN0X2xlbjsgLyogc2l6ZSBvZiBtYWxsb2MnZCBzY2F0dGVyLWdhdGhlciBsaXN0ICsrICovCi0JdW5zaWduZWQgYnVmZmxlbjsJLyogU2l6ZSBvZiAoYWdncmVnYXRlKSBkYXRhIGJ1ZmZlciAqLwotCXVuc2lnbmVkIGJfbWFsbG9jX2xlbjsJLyogYWN0dWFsIGxlbiBtYWxsb2MnZWQgaW4gYnVmZmVyICovCi0Jdm9pZCAqYnVmZmVyOwkJLyogRGF0YSBidWZmZXIgb3Igc2NhdHRlciBsaXN0IChrX3VzZV9zZz4wKSAqLwotCWNoYXIgZGlvX2luX3VzZTsJLyogMC0+aW5kaXJlY3QgSU8gKG9yIG1tYXApLCAxLT5kaW8gKi8KLQl1bnNpZ25lZCBjaGFyIGNtZF9vcGNvZGU7IC8qIGZpcnN0IGJ5dGUgb2YgY29tbWFuZCAqLwotfSBTZ19zY2F0dGVyX2hvbGQ7Ci0KLXR5cGVkZWYgc3RydWN0IHNnX3JlcXVlc3QgewkvKiBTR19NQVhfUVVFVUUgcmVxdWVzdHMgb3V0c3RhbmRpbmcgcGVyIGZpbGUgKi8KLQlTY3NpX1JlcXVlc3QgKm15X2NtZHA7CS8qICE9IDAgIHdoZW4gcmVxdWVzdCB3aXRoIGxvd2VyIGxldmVscyAqLwotCXN0cnVjdCBzZ19yZXF1ZXN0ICpuZXh0cnA7CS8qIE5VTEwgLT4gdGFpbCByZXF1ZXN0IChzbGlzdCkgKi8KLQlzdHJ1Y3Qgc2dfZmQgKnBhcmVudGZwOwkvKiBOVUxMIC0+IG5vdCBpbiB1c2UgKi8KLQlTZ19zY2F0dGVyX2hvbGQgZGF0YTsJLyogaG9sZCBidWZmZXIsIHBlcmhhcHMgc2NhdHRlciBsaXN0ICovCi0Jc2dfaW9faGRyX3QgaGVhZGVyOwkvKiBzY3NpIGNvbW1hbmQraW5mbywgc2VlIDxzY3NpL3NnLmg+ICovCi0JdW5zaWduZWQgY2hhciBzZW5zZV9iW3NpemVvZiAoZHVtbXlfY21kcC0+c3Jfc2Vuc2VfYnVmZmVyKV07Ci0JY2hhciByZXNfdXNlZDsJCS8qIDEgLT4gdXNpbmcgcmVzZXJ2ZSBidWZmZXIsIDAgLT4gbm90IC4uLiAqLwotCWNoYXIgb3JwaGFuOwkJLyogMSAtPiBkcm9wIG9uIHNpZ2h0LCAwIC0+IG5vcm1hbCAqLwotCWNoYXIgc2dfaW9fb3duZWQ7CS8qIDEgLT4gcGFja2V0IGJlbG9uZ3MgdG8gU0dfSU8gKi8KLQl2b2xhdGlsZSBjaGFyIGRvbmU7CS8qIDAtPmJlZm9yZSBiaCwgMS0+YmVmb3JlIHJlYWQsIDItPnJlYWQgKi8KLX0gU2dfcmVxdWVzdDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvYWM5N19jb2RlYy5oIGIvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKaW5kZXggYjQ1YTczNy4uNDQ2YWZjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKQEAgLTM3OCw2ICszNzgsNyBAQAogI2RlZmluZSBBQzk3X0hBU19OT19NSUMJKDE8PDE1KSAvKiBubyBNSUMgdm9sdW1lICovCiAjZGVmaW5lIEFDOTdfSEFTX05PX1RPTkUJKDE8PDE2KSAvKiBubyBUb25lIHZvbHVtZSAqLwogI2RlZmluZSBBQzk3X0hBU19OT19TVERfUENNCSgxPDwxNykJLyogbm8gc3RhbmRhcmQgQUM5NyBQQ00gdm9sdW1lIGFuZCBtdXRlICovCisjZGVmaW5lIEFDOTdfSEFTX05PX0FVWAkJKDE8PDE4KSAvKiBubyBzdGFuZGFyZCBBQzk3IEFVWCB2b2x1bWUgYW5kIG11dGUgKi8KIAogLyogcmF0ZXMgaW5kZXhlcyAqLwogI2RlZmluZSBBQzk3X1JBVEVTX0ZST05UX0RBQwkwCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaCBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCmluZGV4IDY2OTFlNGEuLjNmMmY0MDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCisrKyBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCkBAIC02MDUsNiArNjA1LDEwIEBACiAjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfRElSRUNUX1NBTVBMRSAoMTw8MTEpCS8qIFNhbXBsaW5nIGRldmljZSAoc3VwcG9ydCBzYW1wbGUgZG93bmxvYWQpICovCiAjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU0FNUExFCSgxPDwxMikJLyogU2FtcGxpbmcgZGV2aWNlIChzYW1wbGUgY2FuIGJlIGRvd25sb2FkZWQgYXQgYW55IHRpbWUpICovCiAvKi4uLiovCisjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUJKDE8PDE2KQkvKiBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgZGV2aWNlICovCisjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUJKDE8PDE3KQkvKiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSAqLworI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSCSgxPDwxOCkJLyogZ2VuZXJhdGVzIHNvdW5kICovCisjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfUE9SVAkoMTw8MTkpCS8qIGNvbm5lY3RzIHRvIG90aGVyIGRldmljZShzKSAqLwogI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0FQUExJQ0FUSU9OCSgxPDwyMCkJLyogYXBwbGljYXRpb24gKHNlcXVlbmNlci9lZGl0b3IpICovCiAKIC8qIG1pc2MuIGNvbmRpdGlvbmluZyBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaCBiL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKaW5kZXggOWNjMDIxYy4uNDE4ODVmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaAorKysgYi9pbmNsdWRlL3NvdW5kL2Fzb3VuZC5oCkBAIC0xMzcsNyArMTM3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIFNORFJWX1BDTV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDcpCisjZGVmaW5lIFNORFJWX1BDTV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDgpCiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBzbmRfcGNtX3VmcmFtZXNfdDsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgc25kX3BjbV9zZnJhbWVzX3Q7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2NvcmUuaCBiL2luY2x1ZGUvc291bmQvY29yZS5oCmluZGV4IDUxMzUxNDcuLjVkMTg0YmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvY29yZS5oCisrKyBiL2luY2x1ZGUvc291bmQvY29yZS5oCkBAIC0yMzMsOSArMjMzLDggQEAKIAogLyogaW5pdC5jICovCiAKLWV4dGVybiB1bnNpZ25lZCBpbnQgc25kX2NhcmRzX2xvY2s7CiBleHRlcm4gc3RydWN0IHNuZF9jYXJkICpzbmRfY2FyZHNbU05EUlZfQ0FSRFNdOwotZXh0ZXJuIHJ3bG9ja190IHNuZF9jYXJkX3J3bG9jazsKK2ludCBzbmRfY2FyZF9sb2NrZWQoaW50IGNhcmQpOwogI2lmIGRlZmluZWQoQ09ORklHX1NORF9NSVhFUl9PU1MpIHx8IGRlZmluZWQoQ09ORklHX1NORF9NSVhFUl9PU1NfTU9EVUxFKQogI2RlZmluZSBTTkRfTUlYRVJfT1NTX05PVElGWV9SRUdJU1RFUgkwCiAjZGVmaW5lIFNORF9NSVhFUl9PU1NfTk9USUZZX0RJU0NPTk5FQ1QJMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAppbmRleCAxODZlMDBhLi44ODRiYmY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAorKysgYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaApAQCAtMjQ1LDYgKzI0NSw3IEBACiAjZGVmaW5lIEFfSU9DRkdfR1BPVVQwCQkweDAwNDQJCS8qIGFuYWxvZy9kaWdpdGFsCQkJCSovCiAjZGVmaW5lIEFfSU9DRkdfRElTQUJMRV9BTkFMT0cJMHgwMDQwCQkvKiA9ICdlbmFibGUnIGZvciBBdWRpZ3kyIChjaGlwcmV2PTQpCQkqLwogI2RlZmluZSBBX0lPQ0ZHX0VOQUJMRV9ESUdJVEFMCTB4MDAwNAorI2RlZmluZSBBX0lPQ0ZHX0VOQUJMRV9ESUdJVEFMX0FVRElHWTQJMHgwMDgwCiAjZGVmaW5lIEFfSU9DRkdfVU5LTk9XTl8yMCAgICAgIDB4MDAyMAogI2RlZmluZSBBX0lPQ0ZHX0RJU0FCTEVfQUM5N19GUk9OVCAgICAgIDB4MDA4MCAgLyogdHVybiBvZmYgYWM5NyBmcm9udCAtPiBmcm9udCAoMTBrMi4xKQkqLwogI2RlZmluZSBBX0lPQ0ZHX0dQT1VUMQkJMHgwMDAyCQkvKiBJUj8gZHJpdmUncyBpbnRlcm5hbCBieXBhc3MgKD8pCQkqLwpAQCAtMTA2NSw2ICsxMDY2LDcgQEAKIAl1bnNpZ25lZCBjaGFyIGVtdTEyMTJtOyAgICAgLyogRU1VIDEyMTJtIGNhcmQgKi8KIAl1bnNpZ25lZCBjaGFyIHNwaV9kYWM7ICAgICAgLyogU1BJIGludGVyZmFjZSBmb3IgREFDICovCiAJdW5zaWduZWQgY2hhciBpMmNfYWRjOyAgICAgIC8qIEkyQyBpbnRlcmZhY2UgZm9yIEFEQyAqLworCXVuc2lnbmVkIGNoYXIgYWRjXzEzNjF0OyAgICAvKiBVc2UgUGhpbGlwcyAxMzYxVCBBREMgKi8KIAljb25zdCBjaGFyICpkcml2ZXI7CiAJY29uc3QgY2hhciAqbmFtZTsKIAljb25zdCBjaGFyICppZDsJCS8qIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IC0gY2FuIGJlIE5VTEwgaWYgbm90IG5lZWRlZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9pbmZvLmggYi9pbmNsdWRlL3NvdW5kL2luZm8uaAppbmRleCBmMjNkODM4Li43NGY2OTk2NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9pbmZvLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9pbmZvLmgKQEAgLTI3LDkgKzI3LDkgQEAKIC8qIGJ1ZmZlciBmb3IgaW5mb3JtYXRpb24gKi8KIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgewogCWNoYXIgKmJ1ZmZlcjsJCS8qIHBvaW50ZXIgdG8gYmVnaW4gb2YgYnVmZmVyICovCi0JY2hhciAqY3VycjsJCS8qIGN1cnJlbnQgcG9zaXRpb24gaW4gYnVmZmVyICovCi0JdW5zaWduZWQgbG9uZyBzaXplOwkvKiBjdXJyZW50IHNpemUgKi8KLQl1bnNpZ25lZCBsb25nIGxlbjsJLyogdG90YWwgbGVuZ3RoIG9mIGJ1ZmZlciAqLworCXVuc2lnbmVkIGludCBjdXJyOwkvKiBjdXJyZW50IHBvc2l0aW9uIGluIGJ1ZmZlciAqLworCXVuc2lnbmVkIGludCBzaXplOwkvKiBjdXJyZW50IHNpemUgKi8KKwl1bnNpZ25lZCBpbnQgbGVuOwkvKiB0b3RhbCBsZW5ndGggb2YgYnVmZmVyICovCiAJaW50IHN0b3A7CQkvKiBzdG9wIGZsYWcgKi8KIAlpbnQgZXJyb3I7CQkvKiBlcnJvciBjb2RlICovCiB9OwpAQCAtNDAsOCArNDAsNiBAQAogc3RydWN0IHNuZF9pbmZvX2VudHJ5OwogCiBzdHJ1Y3Qgc25kX2luZm9fZW50cnlfdGV4dCB7Ci0JdW5zaWduZWQgbG9uZyByZWFkX3NpemU7Ci0JdW5zaWduZWQgbG9uZyB3cml0ZV9zaXplOwogCXZvaWQgKCpyZWFkKSAoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwgc3RydWN0IHNuZF9pbmZvX2J1ZmZlciAqYnVmZmVyKTsKIAl2b2lkICgqd3JpdGUpIChzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LCBzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWZmZXIpOwogfTsKQEAgLTEzMiwxMSArMTMwLDkgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHNuZF9pbmZvX3NldF90ZXh0X29wcyhzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LCAKIAkJCQkJIHZvaWQgKnByaXZhdGVfZGF0YSwKLQkJCQkJIGxvbmcgcmVhZF9zaXplLAogCQkJCQkgdm9pZCAoKnJlYWQpKHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqLCBzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICopKQogewogCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBwcml2YXRlX2RhdGE7Ci0JZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSByZWFkX3NpemU7CiAJZW50cnktPmMudGV4dC5yZWFkID0gcmVhZDsKIH0KIApAQCAtMTY3LDcgKzE2Myw2IEBACiAJCQkJICAgIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqKmVudHJ5cCkgeyByZXR1cm4gLUVJTlZBTDsgfQogc3RhdGljIGlubGluZSB2b2lkIHNuZF9pbmZvX3NldF90ZXh0X29wcyhzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5IF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAogCQkJCQkgdm9pZCAqcHJpdmF0ZV9kYXRhLAotCQkJCQkgbG9uZyByZWFkX3NpemUsCiAJCQkJCSB2b2lkICgqcmVhZCkoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICosIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKikpIHt9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9pbmZvX2NoZWNrX3Jlc2VydmVkX3dvcmRzKGNvbnN0IGNoYXIgKnN0cikgeyByZXR1cm4gMTsgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9tcHU0MDEuaCBiL2luY2x1ZGUvc291bmQvbXB1NDAxLmgKaW5kZXggOGU5N2FjZS4uYWM1MDQzMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9tcHU0MDEuaAorKysgYi9pbmNsdWRlL3NvdW5kL21wdTQwMS5oCkBAIC00NSw2ICs0NSwxMiBAQAogI2RlZmluZSBNUFU0MDFfSFdfUEM5OElJCQkxOAkvKiBSb2xhbmQgUEM5OElJICovCiAjZGVmaW5lIE1QVTQwMV9IV19BVVJFQUwJCTE5CS8qIEF1cmVhbCBWb3J0ZXggKi8KIAorI2RlZmluZSBNUFU0MDFfSU5GT19JTlBVVAkoMSA8PCAwKQkvKiBpbnB1dCBzdHJlYW0gKi8KKyNkZWZpbmUgTVBVNDAxX0lORk9fT1VUUFVUCSgxIDw8IDEpCS8qIG91dHB1dCBzdHJlYW0gKi8KKyNkZWZpbmUgTVBVNDAxX0lORk9fSU5URUdSQVRFRAkoMSA8PCAyKQkvKiBpbnRlZ3JhdGVkIGgvdyBwb3J0ICovCisjZGVmaW5lIE1QVTQwMV9JTkZPX01NSU8JKDEgPDwgMykJLyogTU1JTyBhY2Nlc3MgKi8KKyNkZWZpbmUgTVBVNDAxX0lORk9fVFhfSVJRCSgxIDw8IDQpCS8qIGluZGVwZW5kZW50IFRYIGlycSAqLworCiAjZGVmaW5lIE1QVTQwMV9NT0RFX0JJVF9JTlBVVAkJMAogI2RlZmluZSBNUFU0MDFfTU9ERV9CSVRfT1VUUFVUCQkxCiAjZGVmaW5lIE1QVTQwMV9NT0RFX0JJVF9JTlBVVF9UUklHR0VSCTIKQEAgLTYyLDYgKzY4LDcgQEAKIAlzdHJ1Y3Qgc25kX3Jhd21pZGkgKnJtaWRpOwogCiAJdW5zaWduZWQgc2hvcnQgaGFyZHdhcmU7CS8qIE1QVTQwMV9IV19YWFhYICovCisJdW5zaWduZWQgaW50IGluZm9fZmxhZ3M7CS8qIE1QVTQwMV9JTkZPX1hYWCAqLwogCXVuc2lnbmVkIGxvbmcgcG9ydDsJCS8qIGJhc2UgcG9ydCBvZiBNUFUtNDAxIGNoaXAgKi8KIAl1bnNpZ25lZCBsb25nIGNwb3J0OwkJLyogcG9ydCArIDEgKHVzdWFsbHkpICovCiAJc3RydWN0IHJlc291cmNlICpyZXM7CQkvKiBwb3J0IHJlc291cmNlICovCkBAIC05OSwxMyArMTA2LDE2IEBACiAKICAqLwogCi1pcnFyZXR1cm5fdCBzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworaXJxcmV0dXJuX3Qgc25kX21wdTQwMV91YXJ0X2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworaXJxcmV0dXJuX3Qgc25kX21wdTQwMV91YXJ0X2ludGVycnVwdF90eChpbnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJCSBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiAKIGludCBzbmRfbXB1NDAxX3VhcnRfbmV3KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAkJCWludCBkZXZpY2UsCiAJCQl1bnNpZ25lZCBzaG9ydCBoYXJkd2FyZSwKIAkJCXVuc2lnbmVkIGxvbmcgcG9ydCwKLQkJCWludCBpbnRlZ3JhdGVkLAorCQkJdW5zaWduZWQgaW50IGluZm9fZmxhZ3MsCiAJCQlpbnQgaXJxLAogCQkJaW50IGlycV9mbGFncywKIAkJCXN0cnVjdCBzbmRfcmF3bWlkaSAqKiBycmF3bWlkaSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3BjbS5oIGIvaW5jbHVkZS9zb3VuZC9wY20uaAppbmRleCAzNzM0MjU4Li5mODRkODQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kL3BjbS5oCisrKyBiL2luY2x1ZGUvc291bmQvcGNtLmgKQEAgLTMwMCw3ICszMDAsNiBAQAogCS8qIC0tIG1tYXAgLS0gKi8KIAl2b2xhdGlsZSBzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyAqc3RhdHVzOwogCXZvbGF0aWxlIHN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCAqY29udHJvbDsKLQlhdG9taWNfdCBtbWFwX2NvdW50OwogCiAJLyogLS0gbG9ja2luZyAvIHNjaGVkdWxpbmcgLS0gKi8KIAl3YWl0X3F1ZXVlX2hlYWRfdCBzbGVlcDsKQEAgLTM2OCw3ICszNjcsOSBAQAogCXN0cnVjdCBzbmRfcGNtX2dyb3VwICpncm91cDsJCS8qIHBvaW50ZXIgdG8gY3VycmVudCBncm91cCAqLwogCS8qIC0tIGFzc2lnbmVkIGZpbGVzIC0tICovCiAJdm9pZCAqZmlsZTsKLQlzdHJ1Y3QgZmlsZSAqZmZpbGU7CisJaW50IHJlZl9jb3VudDsKKwlhdG9taWNfdCBtbWFwX2NvdW50OworCXVuc2lnbmVkIGludCBmX2ZsYWdzOwogCXZvaWQgKCpwY21fcmVsZWFzZSkoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICopOwogI2lmIGRlZmluZWQoQ09ORklHX1NORF9QQ01fT1NTKSB8fCBkZWZpbmVkKENPTkZJR19TTkRfUENNX09TU19NT0RVTEUpCiAJLyogLS0gT1NTIHRoaW5ncyAtLSAqLwpAQCAtMzg3LDcgKzM4OCw3IEBACiAJdW5zaWduZWQgaW50IGh3X29wZW5lZDogMTsKIH07CiAKLSNkZWZpbmUgU1VCU1RSRUFNX0JVU1koc3Vic3RyZWFtKSAoKHN1YnN0cmVhbSktPmZpbGUgIT0gTlVMTCkKKyNkZWZpbmUgU1VCU1RSRUFNX0JVU1koc3Vic3RyZWFtKSAoKHN1YnN0cmVhbSktPnJlZl9jb3VudCA+IDApCiAKIAogc3RydWN0IHNuZF9wY21fc3RyIHsKQEAgLTgyNSwxNCArODI2LDYgQEAKIAogdm9pZCBfc25kX3BjbV9od19wYXJhbXNfYW55KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKTsKIHZvaWQgX3NuZF9wY21faHdfcGFyYW1fc2V0ZW1wdHkoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsIHNuZF9wY21faHdfcGFyYW1fdCB2YXIpOwotaW50IHNuZF9wY21faHdfcGFyYW1fbmVhcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgCi0JCQkgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJICBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCAKLQkJCSAgdW5zaWduZWQgaW50IHZhbCwgaW50ICpkaXIpOwotaW50IHNuZF9wY21faHdfcGFyYW1fc2V0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLAotCQkJIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsCi0JCQkgdW5zaWduZWQgaW50IHZhbCwgaW50IGRpcik7CiBpbnQgc25kX3BjbV9od19wYXJhbXNfY2hvb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcyk7CiAKIGludCBzbmRfcGNtX2h3X3JlZmluZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMpOwpAQCAtOTc5LDEzICs5NzIsMTMgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzbmRfcGNtX21tYXBfZGF0YV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqYXJlYSkKIHsKIAlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSA9IChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKilhcmVhLT52bV9wcml2YXRlX2RhdGE7Ci0JYXRvbWljX2luYygmc3Vic3RyZWFtLT5ydW50aW1lLT5tbWFwX2NvdW50KTsKKwlhdG9taWNfaW5jKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc25kX3BjbV9tbWFwX2RhdGFfY2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICphcmVhKQogewogCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtID0gKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqKWFyZWEtPnZtX3ByaXZhdGVfZGF0YTsKLQlhdG9taWNfZGVjKCZzdWJzdHJlYW0tPnJ1bnRpbWUtPm1tYXBfY291bnQpOworCWF0b21pY19kZWMoJnN1YnN0cmVhbS0+bW1hcF9jb3VudCk7CiB9CiAKIC8qIG1tYXAgZm9yIGlvLW1lbW9yeSBhcmVhICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3BjbV9wYXJhbXMuaCBiL2luY2x1ZGUvc291bmQvcGNtX3BhcmFtcy5oCmluZGV4IGZiMThhZWY3Li44NWNmMWNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kL3BjbV9wYXJhbXMuaAorKysgYi9pbmNsdWRlL3NvdW5kL3BjbV9wYXJhbXMuaApAQCAtMjIsMjkgKzIyLDIxIEBACiAgKgogICovCiAKLWV4dGVybiBpbnQgc25kX3BjbV9od19wYXJhbV9tYXNrKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkgc25kX3BjbV9od19wYXJhbV90IHZhciwgY29uc3Qgc3RydWN0IHNuZF9tYXNrICp2YWwpOwotZXh0ZXJuIHVuc2lnbmVkIGludCBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21pbihjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkJICAgICAgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIGludCAqZGlyKTsKLWV4dGVybiB1bnNpZ25lZCBpbnQgc25kX3BjbV9od19wYXJhbV92YWx1ZV9tYXgoY29uc3Qgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCi0JCQkJCSAgICAgICBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCBpbnQgKmRpcik7Ci1leHRlcm4gaW50IF9zbmRfcGNtX2h3X3BhcmFtX21pbihzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkgc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwgaW50IGRpcik7Ci1leHRlcm4gaW50IF9zbmRfcGNtX2h3X3BhcmFtX3NldGludGVnZXIoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCi0JCQkJCXNuZF9wY21faHdfcGFyYW1fdCB2YXIpOwotZXh0ZXJuIGludCBfc25kX3BjbV9od19wYXJhbV9zZXQoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCi0JCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCB2YWwsIGludCBkaXIpOwotCi0vKiBUbyBzaGFyZSB0aGUgc2FtZSBjb2RlIHdlIGhhdmUgIGFsc2EtbGliICovCi0jZGVmaW5lIElOTElORSBzdGF0aWMgaW5saW5lCi0jZGVmaW5lIGFzc2VydChhKSAodm9pZCkoYSkKK2ludCBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCAKKwkJCSAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJICAgc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpOworaW50IHNuZF9wY21faHdfcGFyYW1fbGFzdChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwgCisJCQkgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJICBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCBpbnQgKmRpcik7CitpbnQgc25kX3BjbV9od19wYXJhbV92YWx1ZShjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCSAgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIGludCAqZGlyKTsKIAogI2RlZmluZSBTTkRSVl9NQVNLX0JJVFMJNjQJLyogd2UgdXNlIHNvIGZhciA2NGJpdHMgb25seSAqLwogI2RlZmluZSBTTkRSVl9NQVNLX1NJWkUJKFNORFJWX01BU0tfQklUUyAvIDMyKQogI2RlZmluZSBNQVNLX09GUyhpKQkoKGkpID4+IDUpCiAjZGVmaW5lIE1BU0tfQklUKGkpCSgxVSA8PCAoKGkpICYgMzEpKQogCi1JTkxJTkUgdW5zaWduZWQgaW50IGxkMih1X2ludDMyX3QgdikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGxkMih1X2ludDMyX3QgdikKIHsKICAgICAgICAgdW5zaWduZWQgciA9IDA7CiAKQEAgLTY5LDIyICs2MSwyMiBAQAogICAgICAgICByZXR1cm4gcjsKIH0KIAotSU5MSU5FIHNpemVfdCBzbmRfbWFza19zaXplb2Yodm9pZCkKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IHNuZF9tYXNrX3NpemVvZih2b2lkKQogewogCXJldHVybiBzaXplb2Yoc3RydWN0IHNuZF9tYXNrKTsKIH0KIAotSU5MSU5FIHZvaWQgc25kX21hc2tfbm9uZShzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgc25kX21hc2tfbm9uZShzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCiB7CiAJbWVtc2V0KG1hc2ssIDAsIHNpemVvZigqbWFzaykpOwogfQogCi1JTkxJTkUgdm9pZCBzbmRfbWFza19hbnkoc3RydWN0IHNuZF9tYXNrICptYXNrKQorc3RhdGljIGlubGluZSB2b2lkIHNuZF9tYXNrX2FueShzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCiB7CiAJbWVtc2V0KG1hc2ssIDB4ZmYsIFNORFJWX01BU0tfU0laRSAqIHNpemVvZih1X2ludDMyX3QpKTsKIH0KIAotSU5MSU5FIGludCBzbmRfbWFza19lbXB0eShjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19lbXB0eShjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IFNORFJWX01BU0tfU0laRTsgaSsrKQpAQCAtOTMsMTAgKzg1LDkgQEAKIAlyZXR1cm4gMTsKIH0KIAotSU5MSU5FIHVuc2lnbmVkIGludCBzbmRfbWFza19taW4oY29uc3Qgc3RydWN0IHNuZF9tYXNrICptYXNrKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc25kX21hc2tfbWluKGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzaykKIHsKIAlpbnQgaTsKLQlhc3NlcnQoIXNuZF9tYXNrX2VtcHR5KG1hc2spKTsKIAlmb3IgKGkgPSAwOyBpIDwgU05EUlZfTUFTS19TSVpFOyBpKyspIHsKIAkJaWYgKG1hc2stPmJpdHNbaV0pCiAJCQlyZXR1cm4gZmZzKG1hc2stPmJpdHNbaV0pIC0gMSArIChpIDw8IDUpOwpAQCAtMTA0LDEwICs5NSw5IEBACiAJcmV0dXJuIDA7CiB9CiAKLUlOTElORSB1bnNpZ25lZCBpbnQgc25kX21hc2tfbWF4KGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzaykKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNuZF9tYXNrX21heChjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCiB7CiAJaW50IGk7Ci0JYXNzZXJ0KCFzbmRfbWFza19lbXB0eShtYXNrKSk7CiAJZm9yIChpID0gU05EUlZfTUFTS19TSVpFIC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJaWYgKG1hc2stPmJpdHNbaV0pCiAJCQlyZXR1cm4gbGQyKG1hc2stPmJpdHNbaV0pICsgKGkgPDwgNSk7CkBAIC0xMTUsNzAgKzEwNSw2OCBAQAogCXJldHVybiAwOwogfQogCi1JTkxJTkUgdm9pZCBzbmRfbWFza19zZXQoc3RydWN0IHNuZF9tYXNrICptYXNrLCB1bnNpZ25lZCBpbnQgdmFsKQorc3RhdGljIGlubGluZSB2b2lkIHNuZF9tYXNrX3NldChzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCB2YWwpCiB7Ci0JYXNzZXJ0KHZhbCA8PSBTTkRSVl9NQVNLX0JJVFMpOwogCW1hc2stPmJpdHNbTUFTS19PRlModmFsKV0gfD0gTUFTS19CSVQodmFsKTsKIH0KIAotSU5MSU5FIHZvaWQgc25kX21hc2tfcmVzZXQoc3RydWN0IHNuZF9tYXNrICptYXNrLCB1bnNpZ25lZCBpbnQgdmFsKQorc3RhdGljIGlubGluZSB2b2lkIHNuZF9tYXNrX3Jlc2V0KHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IHZhbCkKIHsKLQlhc3NlcnQodmFsIDw9IFNORFJWX01BU0tfQklUUyk7CiAJbWFzay0+Yml0c1tNQVNLX09GUyh2YWwpXSAmPSB+TUFTS19CSVQodmFsKTsKIH0KIAotSU5MSU5FIHZvaWQgc25kX21hc2tfc2V0X3JhbmdlKHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IGZyb20sIHVuc2lnbmVkIGludCB0bykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbmRfbWFza19zZXRfcmFuZ2Uoc3RydWN0IHNuZF9tYXNrICptYXNrLAorCQkJCSAgICAgIHVuc2lnbmVkIGludCBmcm9tLCB1bnNpZ25lZCBpbnQgdG8pCiB7CiAJdW5zaWduZWQgaW50IGk7Ci0JYXNzZXJ0KHRvIDw9IFNORFJWX01BU0tfQklUUyAmJiBmcm9tIDw9IHRvKTsKIAlmb3IgKGkgPSBmcm9tOyBpIDw9IHRvOyBpKyspCiAJCW1hc2stPmJpdHNbTUFTS19PRlMoaSldIHw9IE1BU0tfQklUKGkpOwogfQogCi1JTkxJTkUgdm9pZCBzbmRfbWFza19yZXNldF9yYW5nZShzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCBmcm9tLCB1bnNpZ25lZCBpbnQgdG8pCitzdGF0aWMgaW5saW5lIHZvaWQgc25kX21hc2tfcmVzZXRfcmFuZ2Uoc3RydWN0IHNuZF9tYXNrICptYXNrLAorCQkJCQl1bnNpZ25lZCBpbnQgZnJvbSwgdW5zaWduZWQgaW50IHRvKQogewogCXVuc2lnbmVkIGludCBpOwotCWFzc2VydCh0byA8PSBTTkRSVl9NQVNLX0JJVFMgJiYgZnJvbSA8PSB0byk7CiAJZm9yIChpID0gZnJvbTsgaSA8PSB0bzsgaSsrKQogCQltYXNrLT5iaXRzW01BU0tfT0ZTKGkpXSAmPSB+TUFTS19CSVQoaSk7CiB9CiAKLUlOTElORSB2b2lkIHNuZF9tYXNrX2xlYXZlKHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IHZhbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbmRfbWFza19sZWF2ZShzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCB2YWwpCiB7CiAJdW5zaWduZWQgaW50IHY7Ci0JYXNzZXJ0KHZhbCA8PSBTTkRSVl9NQVNLX0JJVFMpOwogCXYgPSBtYXNrLT5iaXRzW01BU0tfT0ZTKHZhbCldICYgTUFTS19CSVQodmFsKTsKIAlzbmRfbWFza19ub25lKG1hc2spOwogCW1hc2stPmJpdHNbTUFTS19PRlModmFsKV0gPSB2OwogfQogCi1JTkxJTkUgdm9pZCBzbmRfbWFza19pbnRlcnNlY3Qoc3RydWN0IHNuZF9tYXNrICptYXNrLCBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnYpCitzdGF0aWMgaW5saW5lIHZvaWQgc25kX21hc2tfaW50ZXJzZWN0KHN0cnVjdCBzbmRfbWFzayAqbWFzaywKKwkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnYpCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IFNORFJWX01BU0tfU0laRTsgaSsrKQogCQltYXNrLT5iaXRzW2ldICY9IHYtPmJpdHNbaV07CiB9CiAKLUlOTElORSBpbnQgc25kX21hc2tfZXEoY29uc3Qgc3RydWN0IHNuZF9tYXNrICptYXNrLCBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnYpCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19lcShjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssCisJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnYpCiB7CiAJcmV0dXJuICEgbWVtY21wKG1hc2ssIHYsIFNORFJWX01BU0tfU0laRSAqIHNpemVvZih1X2ludDMyX3QpKTsKIH0KIAotSU5MSU5FIHZvaWQgc25kX21hc2tfY29weShzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqdikKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbmRfbWFza19jb3B5KHN0cnVjdCBzbmRfbWFzayAqbWFzaywKKwkJCQkgY29uc3Qgc3RydWN0IHNuZF9tYXNrICp2KQogewogCSptYXNrID0gKnY7CiB9CiAKLUlOTElORSBpbnQgc25kX21hc2tfdGVzdChjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCB2YWwpCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza190ZXN0KGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IHZhbCkKIHsKLQlhc3NlcnQodmFsIDw9IFNORFJWX01BU0tfQklUUyk7CiAJcmV0dXJuIG1hc2stPmJpdHNbTUFTS19PRlModmFsKV0gJiBNQVNLX0JJVCh2YWwpOwogfQogCi1JTkxJTkUgaW50IHNuZF9tYXNrX3NpbmdsZShjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19zaW5nbGUoY29uc3Qgc3RydWN0IHNuZF9tYXNrICptYXNrKQogewogCWludCBpLCBjID0gMDsKLQlhc3NlcnQoIXNuZF9tYXNrX2VtcHR5KG1hc2spKTsKIAlmb3IgKGkgPSAwOyBpIDwgU05EUlZfTUFTS19TSVpFOyBpKyspIHsKIAkJaWYgKCEgbWFzay0+Yml0c1tpXSkKIAkJCWNvbnRpbnVlOwpAQCAtMTkxLDEwICsxNzksMTAgQEAKIAlyZXR1cm4gMTsKIH0KIAotSU5MSU5FIGludCBzbmRfbWFza19yZWZpbmUoc3RydWN0IHNuZF9tYXNrICptYXNrLCBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnYpCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19yZWZpbmUoc3RydWN0IHNuZF9tYXNrICptYXNrLAorCQkJCSAgY29uc3Qgc3RydWN0IHNuZF9tYXNrICp2KQogewogCXN0cnVjdCBzbmRfbWFzayBvbGQ7Ci0JYXNzZXJ0KCFzbmRfbWFza19lbXB0eShtYXNrKSk7CiAJc25kX21hc2tfY29weSgmb2xkLCBtYXNrKTsKIAlzbmRfbWFza19pbnRlcnNlY3QobWFzaywgdik7CiAJaWYgKHNuZF9tYXNrX2VtcHR5KG1hc2spKQpAQCAtMjAyLDI3ICsxOTAsMjQgQEAKIAlyZXR1cm4gIXNuZF9tYXNrX2VxKG1hc2ssICZvbGQpOwogfQogCi1JTkxJTkUgaW50IHNuZF9tYXNrX3JlZmluZV9maXJzdChzdHJ1Y3Qgc25kX21hc2sgKm1hc2spCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19yZWZpbmVfZmlyc3Qoc3RydWN0IHNuZF9tYXNrICptYXNrKQogewotCWFzc2VydCghc25kX21hc2tfZW1wdHkobWFzaykpOwogCWlmIChzbmRfbWFza19zaW5nbGUobWFzaykpCiAJCXJldHVybiAwOwogCXNuZF9tYXNrX2xlYXZlKG1hc2ssIHNuZF9tYXNrX21pbihtYXNrKSk7CiAJcmV0dXJuIDE7CiB9CiAKLUlOTElORSBpbnQgc25kX21hc2tfcmVmaW5lX2xhc3Qoc3RydWN0IHNuZF9tYXNrICptYXNrKQorc3RhdGljIGlubGluZSBpbnQgc25kX21hc2tfcmVmaW5lX2xhc3Qoc3RydWN0IHNuZF9tYXNrICptYXNrKQogewotCWFzc2VydCghc25kX21hc2tfZW1wdHkobWFzaykpOwogCWlmIChzbmRfbWFza19zaW5nbGUobWFzaykpCiAJCXJldHVybiAwOwogCXNuZF9tYXNrX2xlYXZlKG1hc2ssIHNuZF9tYXNrX21heChtYXNrKSk7CiAJcmV0dXJuIDE7CiB9CiAKLUlOTElORSBpbnQgc25kX21hc2tfcmVmaW5lX21pbihzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCB2YWwpCitzdGF0aWMgaW5saW5lIGludCBzbmRfbWFza19yZWZpbmVfbWluKHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IHZhbCkKIHsKLQlhc3NlcnQoIXNuZF9tYXNrX2VtcHR5KG1hc2spKTsKIAlpZiAoc25kX21hc2tfbWluKG1hc2spID49IHZhbCkKIAkJcmV0dXJuIDA7CiAJc25kX21hc2tfcmVzZXRfcmFuZ2UobWFzaywgMCwgdmFsIC0gMSk7CkBAIC0yMzEsOSArMjE2LDggQEAKIAlyZXR1cm4gMTsKIH0KIAotSU5MSU5FIGludCBzbmRfbWFza19yZWZpbmVfbWF4KHN0cnVjdCBzbmRfbWFzayAqbWFzaywgdW5zaWduZWQgaW50IHZhbCkKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9tYXNrX3JlZmluZV9tYXgoc3RydWN0IHNuZF9tYXNrICptYXNrLCB1bnNpZ25lZCBpbnQgdmFsKQogewotCWFzc2VydCghc25kX21hc2tfZW1wdHkobWFzaykpOwogCWlmIChzbmRfbWFza19tYXgobWFzaykgPD0gdmFsKQogCQlyZXR1cm4gMDsKIAlzbmRfbWFza19yZXNldF9yYW5nZShtYXNrLCB2YWwgKyAxLCBTTkRSVl9NQVNLX0JJVFMpOwpAQCAtMjQyLDEwICsyMjYsOSBAQAogCXJldHVybiAxOwogfQogCi1JTkxJTkUgaW50IHNuZF9tYXNrX3JlZmluZV9zZXQoc3RydWN0IHNuZF9tYXNrICptYXNrLCB1bnNpZ25lZCBpbnQgdmFsKQorc3RhdGljIGlubGluZSBpbnQgc25kX21hc2tfcmVmaW5lX3NldChzdHJ1Y3Qgc25kX21hc2sgKm1hc2ssIHVuc2lnbmVkIGludCB2YWwpCiB7CiAJaW50IGNoYW5nZWQ7Ci0JYXNzZXJ0KCFzbmRfbWFza19lbXB0eShtYXNrKSk7CiAJY2hhbmdlZCA9ICFzbmRfbWFza19zaW5nbGUobWFzayk7CiAJc25kX21hc2tfbGVhdmUobWFzaywgdmFsKTsKIAlpZiAoc25kX21hc2tfZW1wdHkobWFzaykpCkBAIC0yNTMsMTMgKzIzNiwxMiBAQAogCXJldHVybiBjaGFuZ2VkOwogfQogCi1JTkxJTkUgaW50IHNuZF9tYXNrX3ZhbHVlKGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzaykKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9tYXNrX3ZhbHVlKGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzaykKIHsKLQlhc3NlcnQoIXNuZF9tYXNrX2VtcHR5KG1hc2spKTsKIAlyZXR1cm4gc25kX21hc2tfbWluKG1hc2spOwogfQogCi1JTkxJTkUgdm9pZCBzbmRfaW50ZXJ2YWxfYW55KHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkpCitzdGF0aWMgaW5saW5lIHZvaWQgc25kX2ludGVydmFsX2FueShzdHJ1Y3Qgc25kX2ludGVydmFsICppKQogewogCWktPm1pbiA9IDA7CiAJaS0+b3Blbm1pbiA9IDA7CkBAIC0yNjksNjMgKzI1MSw1OSBAQAogCWktPmVtcHR5ID0gMDsKIH0KIAotSU5MSU5FIHZvaWQgc25kX2ludGVydmFsX25vbmUoc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbmRfaW50ZXJ2YWxfbm9uZShzdHJ1Y3Qgc25kX2ludGVydmFsICppKQogewogCWktPmVtcHR5ID0gMTsKIH0KIAotSU5MSU5FIGludCBzbmRfaW50ZXJ2YWxfY2hlY2tlbXB0eShjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppKQorc3RhdGljIGlubGluZSBpbnQgc25kX2ludGVydmFsX2NoZWNrZW1wdHkoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKIHsKIAlyZXR1cm4gKGktPm1pbiA+IGktPm1heCB8fAogCQkoaS0+bWluID09IGktPm1heCAmJiAoaS0+b3Blbm1pbiB8fCBpLT5vcGVubWF4KSkpOwogfQogCi1JTkxJTkUgaW50IHNuZF9pbnRlcnZhbF9lbXB0eShjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppKQorc3RhdGljIGlubGluZSBpbnQgc25kX2ludGVydmFsX2VtcHR5KGNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkpCiB7CiAJcmV0dXJuIGktPmVtcHR5OwogfQogCi1JTkxJTkUgaW50IHNuZF9pbnRlcnZhbF9zaW5nbGUoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9pbnRlcnZhbF9zaW5nbGUoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKIHsKLQlhc3NlcnQoIXNuZF9pbnRlcnZhbF9lbXB0eShpKSk7CiAJcmV0dXJuIChpLT5taW4gPT0gaS0+bWF4IHx8IAogCQkoaS0+bWluICsgMSA9PSBpLT5tYXggJiYgaS0+b3Blbm1heCkpOwogfQogCi1JTkxJTkUgaW50IHNuZF9pbnRlcnZhbF92YWx1ZShjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppKQorc3RhdGljIGlubGluZSBpbnQgc25kX2ludGVydmFsX3ZhbHVlKGNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkpCiB7Ci0JYXNzZXJ0KHNuZF9pbnRlcnZhbF9zaW5nbGUoaSkpOwogCXJldHVybiBpLT5taW47CiB9CiAKLUlOTElORSBpbnQgc25kX2ludGVydmFsX21pbihjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppKQorc3RhdGljIGlubGluZSBpbnQgc25kX2ludGVydmFsX21pbihjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppKQogewotCWFzc2VydCghc25kX2ludGVydmFsX2VtcHR5KGkpKTsKIAlyZXR1cm4gaS0+bWluOwogfQogCi1JTkxJTkUgaW50IHNuZF9pbnRlcnZhbF9tYXgoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9pbnRlcnZhbF9tYXgoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKIHsKIAl1bnNpZ25lZCBpbnQgdjsKLQlhc3NlcnQoIXNuZF9pbnRlcnZhbF9lbXB0eShpKSk7CiAJdiA9IGktPm1heDsKIAlpZiAoaS0+b3Blbm1heCkKIAkJdi0tOwogCXJldHVybiB2OwogfQogCi1JTkxJTkUgaW50IHNuZF9pbnRlcnZhbF90ZXN0KGNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmksIHVuc2lnbmVkIGludCB2YWwpCitzdGF0aWMgaW5saW5lIGludCBzbmRfaW50ZXJ2YWxfdGVzdChjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppLCB1bnNpZ25lZCBpbnQgdmFsKQogewogCXJldHVybiAhKChpLT5taW4gPiB2YWwgfHwgKGktPm1pbiA9PSB2YWwgJiYgaS0+b3Blbm1pbikgfHwKIAkJICBpLT5tYXggPCB2YWwgfHwgKGktPm1heCA9PSB2YWwgJiYgaS0+b3Blbm1heCkpKTsKIH0KIAotSU5MSU5FIHZvaWQgc25kX2ludGVydmFsX2NvcHkoc3RydWN0IHNuZF9pbnRlcnZhbCAqZCwgY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqcykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzbmRfaW50ZXJ2YWxfY29weShzdHJ1Y3Qgc25kX2ludGVydmFsICpkLCBjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICpzKQogewogCSpkID0gKnM7CiB9CiAKLUlOTElORSBpbnQgc25kX2ludGVydmFsX3NldGludGVnZXIoc3RydWN0IHNuZF9pbnRlcnZhbCAqaSkKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9pbnRlcnZhbF9zZXRpbnRlZ2VyKHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkpCiB7CiAJaWYgKGktPmludGVnZXIpCiAJCXJldHVybiAwOwpAQCAtMzM1LDcgKzMxMyw3IEBACiAJcmV0dXJuIDE7CiB9CiAKLUlOTElORSBpbnQgc25kX2ludGVydmFsX2VxKGNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkxLCBjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppMikKK3N0YXRpYyBpbmxpbmUgaW50IHNuZF9pbnRlcnZhbF9lcShjb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppMSwgY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqaTIpCiB7CiAJaWYgKGkxLT5lbXB0eSkKIAkJcmV0dXJuIGkyLT5lbXB0eTsKQEAgLTM1OSw4ICszMzcsNSBAQAogCXJldHVybiAwOwogfQogCi0jdW5kZWYgSU5MSU5FCi0jdW5kZWYgYXNzZXJ0Ci0KICNlbmRpZiAvKiBfX1NPVU5EX1BDTV9QQVJBTVNfSCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3Jhd21pZGkuaCBiL2luY2x1ZGUvc291bmQvcmF3bWlkaS5oCmluZGV4IDU4NGU3M2QuLjdkYmNkMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvcmF3bWlkaS5oCisrKyBiL2luY2x1ZGUvc291bmQvcmF3bWlkaS5oCkBAIC00Niw2ICs0Niw3IEBACiAKIHN0cnVjdCBzbmRfcmF3bWlkaTsKIHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW07CitzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm87CiAKIHN0cnVjdCBzbmRfcmF3bWlkaV9vcHMgewogCWludCAoKm9wZW4pIChzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICogc3Vic3RyZWFtKTsKQEAgLTU3LDYgKzU4LDggQEAKIHN0cnVjdCBzbmRfcmF3bWlkaV9nbG9iYWxfb3BzIHsKIAlpbnQgKCpkZXZfcmVnaXN0ZXIpIChzdHJ1Y3Qgc25kX3Jhd21pZGkgKiBybWlkaSk7CiAJaW50ICgqZGV2X3VucmVnaXN0ZXIpIChzdHJ1Y3Qgc25kX3Jhd21pZGkgKiBybWlkaSk7CisJdm9pZCAoKmdldF9wb3J0X2luZm8pKHN0cnVjdCBzbmRfcmF3bWlkaSAqcm1pZGksIGludCBudW1iZXIsCisJCQkgICAgICBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8gKmluZm8pOwogfTsKIAogc3RydWN0IHNuZF9yYXdtaWRpX3J1bnRpbWUgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC92ZXJzaW9uLmggYi9pbmNsdWRlL3NvdW5kL3ZlcnNpb24uaAppbmRleCA0ZjBlNjU4Li4yZWU4NDlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kL3ZlcnNpb24uaAorKysgYi9pbmNsdWRlL3NvdW5kL3ZlcnNpb24uaApAQCAtMSwzICsxLDMgQEAKIC8qIGluY2x1ZGUvdmVyc2lvbi5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gICovCi0jZGVmaW5lIENPTkZJR19TTkRfVkVSU0lPTiAiMS4wLjExcmM0IgotI2RlZmluZSBDT05GSUdfU05EX0RBVEUgIiAoV2VkIE1hciAyMiAxMDoyNzoyNCAyMDA2IFVUQykiCisjZGVmaW5lIENPTkZJR19TTkRfVkVSU0lPTiAiMS4wLjEycmMxIgorI2RlZmluZSBDT05GSUdfU05EX0RBVEUgIiAoVGh1IEp1biAyMiAxMzo1NTo1MCAyMDA2IFVUQykiCmRpZmYgLS1naXQgYS9pcGMvbXF1ZXVlLmMgYi9pcGMvbXF1ZXVlLmMKaW5kZXggMTUxMTcxNC4uMDJlNmY2NyAxMDA2NDQKLS0tIGEvaXBjL21xdWV1ZS5jCisrKyBiL2lwYy9tcXVldWUuYwpAQCAtMjA1LDExICsyMDUsMTEgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAqbXF1ZXVlX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKLQkJCQkJIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCi0JCQkJCSB2b2lkICpkYXRhKQorc3RhdGljIGludCBtcXVldWVfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsCisJCQkgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIG1xdWV1ZV9maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgbXF1ZXVlX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRfb25jZSh2b2lkICpmb28sIGttZW1fY2FjaGVfdCAqIGNhY2hlcCwgdW5zaWduZWQgbG9uZyBmbGFncykKQEAgLTM1OSw3ICszNTksNyBAQAogCXJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIGludCBtcXVldWVfZmx1c2hfZmlsZShzdHJ1Y3QgZmlsZSAqZmlscCkKK3N0YXRpYyBpbnQgbXF1ZXVlX2ZsdXNoX2ZpbGUoc3RydWN0IGZpbGUgKmZpbHAsIGZsX293bmVyX3QgaWQpCiB7CiAJc3RydWN0IG1xdWV1ZV9pbm9kZV9pbmZvICppbmZvID0gTVFVRVVFX0koZmlscC0+Zl9kZW50cnktPmRfaW5vZGUpOwogCmRpZmYgLS1naXQgYS9pcGMvc2htLmMgYi9pcGMvc2htLmMKaW5kZXggNGYxMzNkMi4uZmU3YWU3MyAxMDA2NDQKLS0tIGEvaXBjL3NobS5jCisrKyBiL2lwYy9zaG0uYwpAQCAtNjk4LDcgKzY5OCw2IEBACiAJaW50ICAgIGVycjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGxvbmcgcHJvdDsKLQl1bnNpZ25lZCBsb25nIG9fZmxhZ3M7CiAJaW50IGFjY19tb2RlOwogCXZvaWQgKnVzZXJfYWRkcjsKIApAQCAtNzI1LDExICs3MjQsOSBAQAogCiAJaWYgKHNobWZsZyAmIFNITV9SRE9OTFkpIHsKIAkJcHJvdCA9IFBST1RfUkVBRDsKLQkJb19mbGFncyA9IE9fUkRPTkxZOwogCQlhY2NfbW9kZSA9IFNfSVJVR087CiAJfSBlbHNlIHsKIAkJcHJvdCA9IFBST1RfUkVBRCB8IFBST1RfV1JJVEU7Ci0JCW9fZmxhZ3MgPSBPX1JEV1I7CiAJCWFjY19tb2RlID0gU19JUlVHTyB8IFNfSVdVR087CiAJfQogCWlmIChzaG1mbGcgJiBTSE1fRVhFQykgewpkaWZmIC0tZ2l0IGEva2VybmVsL2FjY3QuYyBiL2tlcm5lbC9hY2N0LmMKaW5kZXggYjMyN2Y0ZC4uNjgwMjAyMCAxMDA2NDQKLS0tIGEva2VybmVsL2FjY3QuYworKysgYi9rZXJuZWwvYWNjdC5jCkBAIC0xMTgsNyArMTE4LDcgQEAKIAlzcGluX3VubG9jaygmYWNjdF9nbG9iYWxzLmxvY2spOwogCiAJLyogTWF5IGJsb2NrICovCi0JaWYgKHZmc19zdGF0ZnMoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfc2IsICZzYnVmKSkKKwlpZiAodmZzX3N0YXRmcyhmaWxlLT5mX2RlbnRyeSwgJnNidWYpKQogCQlyZXR1cm4gcmVzOwogCXN1c3BlbmQgPSBzYnVmLmZfYmxvY2tzICogU1VTUEVORDsKIAlyZXN1bWUgPSBzYnVmLmZfYmxvY2tzICogUkVTVU1FOwpkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0c2MuYyBiL2tlcm5lbC9hdWRpdHNjLmMKaW5kZXggYjA5N2NjYi4uOWViZDk2ZiAxMDA2NDQKLS0tIGEva2VybmVsL2F1ZGl0c2MuYworKysgYi9rZXJuZWwvYXVkaXRzYy5jCkBAIC0xNTU4LDYgKzE1NTgsNyBAQAogICogQHVpZDogbXNncSB1c2VyIGlkCiAgKiBAZ2lkOiBtc2dxIGdyb3VwIGlkCiAgKiBAbW9kZTogbXNncSBtb2RlIChwZXJtaXNzaW9ucykKKyAqIEBpcGNwOiBpbi1rZXJuZWwgSVBDIHBlcm1pc3Npb25zCiAgKgogICogUmV0dXJucyAwIGZvciBzdWNjZXNzIG9yIE5VTEwgY29udGV4dCBvciA8IDAgb24gZXJyb3IuCiAgKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9jb21wYXQuYyBiL2tlcm5lbC9jb21wYXQuYwppbmRleCBjMTYwMWE4Li4yZjY3MjMzIDEwMDY0NAotLS0gYS9rZXJuZWwvY29tcGF0LmMKKysrIGIva2VybmVsL2NvbXBhdC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+CiAjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4KICNpbmNsdWRlIDxsaW51eC90aW1leC5oPgorI2luY2x1ZGUgPGxpbnV4L21pZ3JhdGUuaD4KIAogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAKQEAgLTkzNCwzICs5MzUsMjUgQEAKIAogCXJldHVybiByZXQ7CiB9CisKKyNpZmRlZiBDT05GSUdfTlVNQQorYXNtbGlua2FnZSBsb25nIGNvbXBhdF9zeXNfbW92ZV9wYWdlcyhwaWRfdCBwaWQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCWNvbXBhdF91cHRyX3QgX191c2VyICpwYWdlczMyLAorCQljb25zdCBpbnQgX191c2VyICpub2RlcywKKwkJaW50IF9fdXNlciAqc3RhdHVzLAorCQlpbnQgZmxhZ3MpCit7CisJY29uc3Qgdm9pZCBfX3VzZXIgKiBfX3VzZXIgKnBhZ2VzOworCWludCBpOworCisJcGFnZXMgPSBjb21wYXRfYWxsb2NfdXNlcl9zcGFjZShucl9wYWdlcyAqIHNpemVvZih2b2lkICopKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykgeworCQljb21wYXRfdXB0cl90IHA7CisKKwkJaWYgKGdldF91c2VyKHAsIHBhZ2VzMzIgKyBpKSB8fAorCQkJcHV0X3VzZXIoY29tcGF0X3B0cihwKSwgcGFnZXMgKyBpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0KKwlyZXR1cm4gc3lzX21vdmVfcGFnZXMocGlkLCBucl9wYWdlcywgcGFnZXMsIG5vZGVzLCBzdGF0dXMsIGZsYWdzKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEva2VybmVsL2NwdXNldC5jIGIva2VybmVsL2NwdXNldC5jCmluZGV4IGFiODFmZGQuLmI2MDJmNzMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9jcHVzZXQuYworKysgYi9rZXJuZWwvY3B1c2V0LmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zbXBfbG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CkBAIC0zOTIsMTEgKzM5MywxMSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpjcHVzZXRfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAotCQkJCQlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKnVudXNlZF9kZXZfbmFtZSwKLQkJCQkJdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgY3B1c2V0X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJCSBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKnVudXNlZF9kZXZfbmFtZSwKKwkJCSB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgY3B1c2V0X2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBjcHVzZXRfZmlsbF9zdXBlciwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGNwdXNldF9mc190eXBlID0gewpAQCAtMTE3Nyw2ICsxMTc4LDcgQEAKIAljcHVtYXNrX3QgY3B1czsKIAlub2RlbWFza190IGZyb20sIHRvOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOworCWludCByZXR2YWw7CiAKIAlpZiAoc3NjYW5mKHBpZGJ1ZiwgIiVkIiwgJnBpZCkgIT0gMSkKIAkJcmV0dXJuIC1FSU87CkBAIC0xMjA1LDYgKzEyMDcsMTIgQEAKIAkJZ2V0X3Rhc2tfc3RydWN0KHRzayk7CiAJfQogCisJcmV0dmFsID0gc2VjdXJpdHlfdGFza19zZXRzY2hlZHVsZXIodHNrLCAwLCBOVUxMKTsKKwlpZiAocmV0dmFsKSB7CisJCXB1dF90YXNrX3N0cnVjdCh0c2spOworCQlyZXR1cm4gcmV0dmFsOworCX0KKwogCW11dGV4X2xvY2soJmNhbGxiYWNrX211dGV4KTsKIAogCXRhc2tfbG9jayh0c2spOwpkaWZmIC0tZ2l0IGEva2VybmVsL2V4aXQuYyBiL2tlcm5lbC9leGl0LmMKaW5kZXggZTA2ZDBjMS4uYTNiYWY5MiAxMDA2NDQKLS0tIGEva2VybmVsL2V4aXQuYworKysgYi9rZXJuZWwvZXhpdC5jCkBAIC01NzksNyArNTc5LDcgQEAKIAkJZG93bl9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCX0KIAlhdG9taWNfaW5jKCZtbS0+bW1fY291bnQpOwotCWlmIChtbSAhPSB0c2stPmFjdGl2ZV9tbSkgQlVHKCk7CisJQlVHX09OKG1tICE9IHRzay0+YWN0aXZlX21tKTsKIAkvKiBtb3JlIGEgbWVtb3J5IGJhcnJpZXIgdGhhbiBhIHJlYWwgbG9jayAqLwogCXRhc2tfbG9jayh0c2spOwogCXRzay0+bW0gPSBOVUxMOwpAQCAtMTUzMCw4ICsxNTMwLDcgQEAKIAkJaWYgKG9wdGlvbnMgJiBfX1dOT1RIUkVBRCkKIAkJCWJyZWFrOwogCQl0c2sgPSBuZXh0X3RocmVhZCh0c2spOwotCQlpZiAodHNrLT5zaWduYWwgIT0gY3VycmVudC0+c2lnbmFsKQotCQkJQlVHKCk7CisJCUJVR19PTih0c2stPnNpZ25hbCAhPSBjdXJyZW50LT5zaWduYWwpOwogCX0gd2hpbGUgKHRzayAhPSBjdXJyZW50KTsKIAogCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmluZGV4IGFjODEwMGUuLjQ5YWRjMGUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9mb3JrLmMKKysrIGIva2VybmVsL2ZvcmsuYwpAQCAtMzY4LDYgKzM2OCw4IEBACiAgKi8KIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7CisJbWlnaHRfc2xlZXAoKTsKKwogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fdXNlcnMpKSB7CiAJCWV4aXRfYWlvKG1tKTsKIAkJZXhpdF9tbWFwKG1tKTsKQEAgLTYyMyw2ICs2MjUsNyBAQAogLyoKICAqIEFsbG9jYXRlIGEgbmV3IGZpbGVzIHN0cnVjdHVyZSBhbmQgY29weSBjb250ZW50cyBmcm9tIHRoZQogICogcGFzc2VkIGluIGZpbGVzIHN0cnVjdHVyZS4KKyAqIGVycm9ycCB3aWxsIGJlIHZhbGlkIG9ubHkgd2hlbiB0aGUgcmV0dXJuZWQgZmlsZXNfc3RydWN0IGlzIE5VTEwuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpkdXBfZmQoc3RydWN0IGZpbGVzX3N0cnVjdCAqb2xkZiwgaW50ICplcnJvcnApCiB7CkBAIC02MzEsNiArNjM0LDcgQEAKIAlpbnQgb3Blbl9maWxlcywgc2l6ZSwgaSwgZXhwYW5kOwogCXN0cnVjdCBmZHRhYmxlICpvbGRfZmR0LCAqbmV3X2ZkdDsKIAorCSplcnJvcnAgPSAtRU5PTUVNOwogCW5ld2YgPSBhbGxvY19maWxlcygpOwogCWlmICghbmV3ZikKIAkJZ290byBvdXQ7CkBAIC03NDQsNyArNzQ4LDYgQEAKIAkgKiBicmVhayB0aGlzLgogCSAqLwogCXRzay0+ZmlsZXMgPSBOVUxMOwotCWVycm9yID0gLUVOT01FTTsKIAluZXdmID0gZHVwX2ZkKG9sZGYsICZlcnJvcik7CiAJaWYgKCFuZXdmKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2tlcm5lbC9mdXRleC5jIGIva2VybmVsL2Z1dGV4LmMKaW5kZXggNTY5OWM1MS4uZTFhMzgwYyAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMKQEAgLTEwNTYsMTEgKzEwNTYsMTEgQEAKIAkJCSh1bnNpZ25lZCBsb25nKXVhZGRyMiwgdmFsMiwgdmFsMyk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKgotZnV0ZXhmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JICAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGZ1dGV4ZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCQkJICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLAorCQkJICBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAiZnV0ZXgiLCBOVUxMLCAweEJBRDFERUEpOworCXJldHVybiBnZXRfc2JfcHNldWRvKGZzX3R5cGUsICJmdXRleCIsIE5VTEwsIDB4QkFEMURFQSwgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGZ1dGV4X2ZzX3R5cGUgPSB7CmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2hhbmRsZS5jIGIva2VybmVsL2lycS9oYW5kbGUuYwppbmRleCA1MWRmMzM3Li4wZjY1MzAxIDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL2hhbmRsZS5jCisrKyBiL2tlcm5lbC9pcnEvaGFuZGxlLmMKQEAgLTc2LDEwICs3NiwxMSBAQAogLyoKICAqIEhhdmUgZ290IGFuIGV2ZW50IHRvIGhhbmRsZToKICAqLwotZmFzdGNhbGwgaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50IGlycSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCitmYXN0Y2FsbCBpcnFyZXR1cm5fdCBoYW5kbGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCBpcnEsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCQkJCXN0cnVjdCBpcnFhY3Rpb24gKmFjdGlvbikKIHsKLQlpbnQgcmV0LCByZXR2YWwgPSAwLCBzdGF0dXMgPSAwOworCWlycXJldHVybl90IHJldCwgcmV0dmFsID0gSVJRX05PTkU7CisJdW5zaWduZWQgaW50IHN0YXR1cyA9IDA7CiAKIAlpZiAoIShhY3Rpb24tPmZsYWdzICYgU0FfSU5URVJSVVBUKSkKIAkJbG9jYWxfaXJxX2VuYWJsZSgpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9taWdyYXRpb24uYyBiL2tlcm5lbC9pcnEvbWlncmF0aW9uLmMKaW5kZXggMTM0ZjlmMi4uYTEyZDAwZSAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9taWdyYXRpb24uYworKysgYi9rZXJuZWwvaXJxL21pZ3JhdGlvbi5jCkBAIC0zMCw3ICszMCw3IEBACiAKIAlkZXNjLT5tb3ZlX2lycSA9IDA7CiAKLQlpZiAobGlrZWx5KGNwdXNfZW1wdHkocGVuZGluZ19pcnFfY3B1bWFza1tpcnFdKSkpCisJaWYgKHVubGlrZWx5KGNwdXNfZW1wdHkocGVuZGluZ19pcnFfY3B1bWFza1tpcnFdKSkpCiAJCXJldHVybjsKIAogCWlmICghZGVzYy0+aGFuZGxlci0+c2V0X2FmZmluaXR5KQpAQCAtNDksNyArNDksNyBAQAogCSAqIGNhdXNlIHNvbWUgaW9hcGljcyB0byBtYWwtZnVuY3Rpb24uCiAJICogQmVpbmcgcGFyYW5vaWQgaSBndWVzcyEKIAkgKi8KLQlpZiAodW5saWtlbHkoIWNwdXNfZW1wdHkodG1wKSkpIHsKKwlpZiAobGlrZWx5KCFjcHVzX2VtcHR5KHRtcCkpKSB7CiAJCWlmIChsaWtlbHkoIShkZXNjLT5zdGF0dXMgJiBJUlFfRElTQUJMRUQpKSkKIAkJCWRlc2MtPmhhbmRsZXItPmRpc2FibGUoaXJxKTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9wcm9jLmMgYi9rZXJuZWwvaXJxL3Byb2MuYwppbmRleCBkMDNiNWVlLi5hZmFjZDZmIDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL3Byb2MuYworKysgYi9rZXJuZWwvaXJxL3Byb2MuYwpAQCAtMjQsNiArMjQsOCBAQAogI2lmZGVmIENPTkZJR19HRU5FUklDX1BFTkRJTkdfSVJRCiB2b2lkIHByb2Nfc2V0X2lycV9hZmZpbml0eSh1bnNpZ25lZCBpbnQgaXJxLCBjcHVtYXNrX3QgbWFza192YWwpCiB7CisJc2V0X2JhbGFuY2VfaXJxX2FmZmluaXR5KGlycSwgbWFza192YWwpOworCiAJLyoKIAkgKiBTYXZlIHRoZXNlIGF3YXkgZm9yIGxhdGVyIHVzZS4gUmUtcHJvZ2FtIHdoZW4gdGhlCiAJICogaW50ZXJydXB0IGlzIHBlbmRpbmcKQEAgLTMzLDYgKzM1LDcgQEAKICNlbHNlCiB2b2lkIHByb2Nfc2V0X2lycV9hZmZpbml0eSh1bnNpZ25lZCBpbnQgaXJxLCBjcHVtYXNrX3QgbWFza192YWwpCiB7CisJc2V0X2JhbGFuY2VfaXJxX2FmZmluaXR5KGlycSwgbWFza192YWwpOwogCWlycV9hZmZpbml0eVtpcnFdID0gbWFza192YWw7CiAJaXJxX2Rlc2NbaXJxXS5oYW5kbGVyLT5zZXRfYWZmaW5pdHkoaXJxLCBtYXNrX3ZhbCk7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL3NwdXJpb3VzLmMgYi9rZXJuZWwvaXJxL3NwdXJpb3VzLmMKaW5kZXggN2RmOWFiZC4uYjJmYjNjMSAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9zcHVyaW91cy5jCisrKyBiL2tlcm5lbC9pcnEvc3B1cmlvdXMuYwpAQCAtMTEsNyArMTEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2thbGxzeW1zLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAKLXN0YXRpYyBpbnQgaXJxZml4dXA7CitzdGF0aWMgaW50IGlycWZpeHVwIF9fcmVhZF9tb3N0bHk7CiAKIC8qCiAgKiBSZWNvdmVyeSBoYW5kbGVyIGZvciBtaXNyb3V0ZWQgaW50ZXJydXB0cy4KQEAgLTEzNiw5ICsxMzYsOSBAQAogdm9pZCBub3RlX2ludGVycnVwdCh1bnNpZ25lZCBpbnQgaXJxLCBpcnFfZGVzY190ICpkZXNjLCBpcnFyZXR1cm5fdCBhY3Rpb25fcmV0LAogCQkJc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7Ci0JaWYgKGFjdGlvbl9yZXQgIT0gSVJRX0hBTkRMRUQpIHsKKwlpZiAodW5saWtlbHkoYWN0aW9uX3JldCAhPSBJUlFfSEFORExFRCkpIHsKIAkJZGVzYy0+aXJxc191bmhhbmRsZWQrKzsKLQkJaWYgKGFjdGlvbl9yZXQgIT0gSVJRX05PTkUpCisJCWlmICh1bmxpa2VseShhY3Rpb25fcmV0ICE9IElSUV9OT05FKSkKIAkJCXJlcG9ydF9iYWRfaXJxKGlycSwgZGVzYywgYWN0aW9uX3JldCk7CiAJfQogCkBAIC0xNTIsMTEgKzE1MiwxMSBAQAogCX0KIAogCWRlc2MtPmlycV9jb3VudCsrOwotCWlmIChkZXNjLT5pcnFfY291bnQgPCAxMDAwMDApCisJaWYgKGxpa2VseShkZXNjLT5pcnFfY291bnQgPCAxMDAwMDApKQogCQlyZXR1cm47CiAKIAlkZXNjLT5pcnFfY291bnQgPSAwOwotCWlmIChkZXNjLT5pcnFzX3VuaGFuZGxlZCA+IDk5OTAwKSB7CisJaWYgKHVubGlrZWx5KGRlc2MtPmlycXNfdW5oYW5kbGVkID4gOTk5MDApKSB7CiAJCS8qCiAJCSAqIFRoZSBpbnRlcnJ1cHQgaXMgc3R1Y2sKIAkJICovCkBAIC0xNzEsNyArMTcxLDcgQEAKIAlkZXNjLT5pcnFzX3VuaGFuZGxlZCA9IDA7CiB9CiAKLWludCBub2lycWRlYnVnOworaW50IG5vaXJxZGVidWcgX19yZWFkX21vc3RseTsKIAogaW50IF9faW5pdCBub2lycWRlYnVnX3NldHVwKGNoYXIgKnN0cikKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9rZXhlYy5jIGIva2VybmVsL2tleGVjLmMKaW5kZXggYmYzOWQyOC4uNThmMGYzOCAxMDA2NDQKLS0tIGEva2VybmVsL2tleGVjLmMKKysrIGIva2VybmVsL2tleGVjLmMKQEAgLTkwMiwxNCArOTAyLDE0IEBACiAgKiBrZXhlYyBkb2VzIG5vdCBzeW5jLCBvciB1bm1vdW50IGZpbGVzeXN0ZW1zIHNvIGlmIHlvdSBuZWVkCiAgKiB0aGF0IHRvIGhhcHBlbiB5b3UgbmVlZCB0byBkbyB0aGF0IHlvdXJzZWxmLgogICovCi1zdHJ1Y3Qga2ltYWdlICprZXhlY19pbWFnZSA9IE5VTEw7Ci1zdGF0aWMgc3RydWN0IGtpbWFnZSAqa2V4ZWNfY3Jhc2hfaW1hZ2UgPSBOVUxMOworc3RydWN0IGtpbWFnZSAqa2V4ZWNfaW1hZ2U7CitzdHJ1Y3Qga2ltYWdlICprZXhlY19jcmFzaF9pbWFnZTsKIC8qCiAgKiBBIGhvbWUgZ3Jvd24gYmluYXJ5IG11dGV4LgogICogTm90aGluZyBjYW4gd2FpdCBzbyB0aGlzIG11dGV4IGlzIHNhZmUgdG8gdXNlCiAgKiBpbiBpbnRlcnJ1cHQgY29udGV4dCA6KQogICovCi1zdGF0aWMgaW50IGtleGVjX2xvY2sgPSAwOworc3RhdGljIGludCBrZXhlY19sb2NrOwogCiBhc21saW5rYWdlIGxvbmcgc3lzX2tleGVjX2xvYWQodW5zaWduZWQgbG9uZyBlbnRyeSwgdW5zaWduZWQgbG9uZyBucl9zZWdtZW50cywKIAkJCQlzdHJ1Y3Qga2V4ZWNfc2VnbWVudCBfX3VzZXIgKnNlZ21lbnRzLApkaWZmIC0tZ2l0IGEva2VybmVsL2tzeXNmcy5jIGIva2VybmVsL2tzeXNmcy5jCmluZGV4IGYxMTllMDkuLjllMjg0NzggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9rc3lzZnMuYworKysgYi9rZXJuZWwva3N5c2ZzLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPgogCiAjZGVmaW5lIEtFUk5FTF9BVFRSX1JPKF9uYW1lKSBcCiBzdGF0aWMgc3RydWN0IHN1YnN5c19hdHRyaWJ1dGUgX25hbWUjI19hdHRyID0gX19BVFRSX1JPKF9uYW1lKQpAQCAtNDgsNiArNDksMjAgQEAKIEtFUk5FTF9BVFRSX1JXKHVldmVudF9oZWxwZXIpOwogI2VuZGlmCiAKKyNpZmRlZiBDT05GSUdfS0VYRUMKK3N0YXRpYyBzc2l6ZV90IGtleGVjX2xvYWRlZF9zaG93KHN0cnVjdCBzdWJzeXN0ZW0gKnN1YnN5cywgY2hhciAqcGFnZSkKK3sKKwlyZXR1cm4gc3ByaW50ZihwYWdlLCAiJWRcbiIsICEha2V4ZWNfaW1hZ2UpOworfQorS0VSTkVMX0FUVFJfUk8oa2V4ZWNfbG9hZGVkKTsKKworc3RhdGljIHNzaXplX3Qga2V4ZWNfY3Jhc2hfbG9hZGVkX3Nob3coc3RydWN0IHN1YnN5c3RlbSAqc3Vic3lzLCBjaGFyICpwYWdlKQoreworCXJldHVybiBzcHJpbnRmKHBhZ2UsICIlZFxuIiwgISFrZXhlY19jcmFzaF9pbWFnZSk7Cit9CitLRVJORUxfQVRUUl9STyhrZXhlY19jcmFzaF9sb2FkZWQpOworI2VuZGlmIC8qIENPTkZJR19LRVhFQyAqLworCiBkZWNsX3N1YnN5cyhrZXJuZWwsIE5VTEwsIE5VTEwpOwogRVhQT1JUX1NZTUJPTF9HUEwoa2VybmVsX3N1YnN5cyk7CiAKQEAgLTU2LDYgKzcxLDEwIEBACiAJJnVldmVudF9zZXFudW1fYXR0ci5hdHRyLAogCSZ1ZXZlbnRfaGVscGVyX2F0dHIuYXR0ciwKICNlbmRpZgorI2lmZGVmIENPTkZJR19LRVhFQworCSZrZXhlY19sb2FkZWRfYXR0ci5hdHRyLAorCSZrZXhlY19jcmFzaF9sb2FkZWRfYXR0ci5hdHRyLAorI2VuZGlmCiAJTlVMTAogfTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL21haW4uYyBiL2tlcm5lbC9wb3dlci9tYWluLmMKaW5kZXggMGE5MDdmMC4uY2RmMGYwNyAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL21haW4uYworKysgYi9rZXJuZWwvcG93ZXIvbWFpbi5jCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvcG0uaD4KLQorI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KIAogI2luY2x1ZGUgInBvd2VyLmgiCiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9wb3dlci5oIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgKaW5kZXggZjA2ZjEyZi4uOThjNDE0MiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL3Bvd2VyLmgKKysrIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgKQEAgLTU1LDcgKzU1LDcgQEAKIAl1bnNpZ25lZCBpbnQJcGFnZTsKIAl1bnNpZ25lZCBpbnQJcGFnZV9vZmZzZXQ7CiAJdW5zaWduZWQgaW50CXByZXY7Ci0Jc3RydWN0IHBiZQkqcGJlOworCXN0cnVjdCBwYmUJKnBiZSwgKmxhc3RfcGJlOwogCXZvaWQJCSpidWZmZXI7CiAJdW5zaWduZWQgaW50CWJ1Zl9vZmZzZXQ7CiB9OwpAQCAtMTA1LDYgKzEwNSwxMCBAQAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYWxsb2Nfc3dhcF9wYWdlKGludCBzd2FwLCBzdHJ1Y3QgYml0bWFwX3BhZ2UgKmJpdG1hcCk7CiBleHRlcm4gdm9pZCBmcmVlX2FsbF9zd2FwX3BhZ2VzKGludCBzd2FwLCBzdHJ1Y3QgYml0bWFwX3BhZ2UgKmJpdG1hcCk7CiAKK2V4dGVybiB1bnNpZ25lZCBpbnQgY291bnRfc3BlY2lhbF9wYWdlcyh2b2lkKTsKK2V4dGVybiBpbnQgc2F2ZV9zcGVjaWFsX21lbSh2b2lkKTsKK2V4dGVybiBpbnQgcmVzdG9yZV9zcGVjaWFsX21lbSh2b2lkKTsKKwogZXh0ZXJuIGludCBzd3N1c3BfY2hlY2sodm9pZCk7CiBleHRlcm4gaW50IHN3c3VzcF9zaHJpbmtfbWVtb3J5KHZvaWQpOwogZXh0ZXJuIHZvaWQgc3dzdXNwX2ZyZWUodm9pZCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvc25hcHNob3QuYyBiL2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jCmluZGV4IDNlZWVkYmIuLjNkOTI4NDEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jCisrKyBiL2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jCkBAIC0zOSw4ICszOSw5MCBAQAogc3RhdGljIHVuc2lnbmVkIGludCBucl9tZXRhX3BhZ2VzOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcjsKIAorc3RydWN0IGFyY2hfc2F2ZWFibGVfcGFnZSB7CisJdW5zaWduZWQgbG9uZyBzdGFydDsKKwl1bnNpZ25lZCBsb25nIGVuZDsKKwljaGFyICpkYXRhOworCXN0cnVjdCBhcmNoX3NhdmVhYmxlX3BhZ2UgKm5leHQ7Cit9Oworc3RhdGljIHN0cnVjdCBhcmNoX3NhdmVhYmxlX3BhZ2UgKmFyY2hfcGFnZXM7CisKK2ludCBzd3N1c3BfYWRkX2FyY2hfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJc3RydWN0IGFyY2hfc2F2ZWFibGVfcGFnZSAqdG1wOworCisJd2hpbGUgKHN0YXJ0IDwgZW5kKSB7CisJCXRtcCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhcmNoX3NhdmVhYmxlX3BhZ2UpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF0bXApCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJdG1wLT5zdGFydCA9IHN0YXJ0OworCQl0bXAtPmVuZCA9ICgoc3RhcnQgPj4gUEFHRV9TSElGVCkgKyAxKSA8PCBQQUdFX1NISUZUOworCQlpZiAodG1wLT5lbmQgPiBlbmQpCisJCQl0bXAtPmVuZCA9IGVuZDsKKwkJdG1wLT5uZXh0ID0gYXJjaF9wYWdlczsKKwkJc3RhcnQgPSB0bXAtPmVuZDsKKwkJYXJjaF9wYWdlcyA9IHRtcDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY291bnRfYXJjaF9wYWdlcyh2b2lkKQoreworCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CisJc3RydWN0IGFyY2hfc2F2ZWFibGVfcGFnZSAqdG1wID0gYXJjaF9wYWdlczsKKwl3aGlsZSAodG1wKSB7CisJCWNvdW50Kys7CisJCXRtcCA9IHRtcC0+bmV4dDsKKwl9CisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgaW50IHNhdmVfYXJjaF9tZW0odm9pZCkKK3sKKwljaGFyICprYWRkcjsKKwlzdHJ1Y3QgYXJjaF9zYXZlYWJsZV9wYWdlICp0bXAgPSBhcmNoX3BhZ2VzOworCWludCBvZmZzZXQ7CisKKwlwcl9kZWJ1Zygic3dzdXNwOiBTYXZpbmcgYXJjaCBzcGVjaWZpYyBtZW1vcnkiKTsKKwl3aGlsZSAodG1wKSB7CisJCXRtcC0+ZGF0YSA9IChjaGFyICopX19nZXRfZnJlZV9wYWdlKEdGUF9BVE9NSUMpOworCQlpZiAoIXRtcC0+ZGF0YSkKKwkJCXJldHVybiAtRU5PTUVNOworCQlvZmZzZXQgPSB0bXAtPnN0YXJ0IC0gKHRtcC0+c3RhcnQgJiBQQUdFX01BU0spOworCQkvKiBhcmNoIHBhZ2VzIG1pZ2h0IGhhdmVuJ3QgYSAnc3RydWN0IHBhZ2UnICovCisJCWthZGRyID0ga21hcF9hdG9taWNfcGZuKHRtcC0+c3RhcnQgPj4gUEFHRV9TSElGVCwgS01fVVNFUjApOworCQltZW1jcHkodG1wLT5kYXRhICsgb2Zmc2V0LCBrYWRkciArIG9mZnNldCwKKwkJCXRtcC0+ZW5kIC0gdG1wLT5zdGFydCk7CisJCWt1bm1hcF9hdG9taWMoa2FkZHIsIEtNX1VTRVIwKTsKKworCQl0bXAgPSB0bXAtPm5leHQ7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlc3RvcmVfYXJjaF9tZW0odm9pZCkKK3sKKwljaGFyICprYWRkcjsKKwlzdHJ1Y3QgYXJjaF9zYXZlYWJsZV9wYWdlICp0bXAgPSBhcmNoX3BhZ2VzOworCWludCBvZmZzZXQ7CisKKwl3aGlsZSAodG1wKSB7CisJCWlmICghdG1wLT5kYXRhKQorCQkJY29udGludWU7CisJCW9mZnNldCA9IHRtcC0+c3RhcnQgLSAodG1wLT5zdGFydCAmIFBBR0VfTUFTSyk7CisJCWthZGRyID0ga21hcF9hdG9taWNfcGZuKHRtcC0+c3RhcnQgPj4gUEFHRV9TSElGVCwgS01fVVNFUjApOworCQltZW1jcHkoa2FkZHIgKyBvZmZzZXQsIHRtcC0+ZGF0YSArIG9mZnNldCwKKwkJCXRtcC0+ZW5kIC0gdG1wLT5zdGFydCk7CisJCWt1bm1hcF9hdG9taWMoa2FkZHIsIEtNX1VTRVIwKTsKKwkJZnJlZV9wYWdlKChsb25nKXRtcC0+ZGF0YSk7CisJCXRtcC0+ZGF0YSA9IE5VTEw7CisJCXRtcCA9IHRtcC0+bmV4dDsKKwl9CisJcmV0dXJuIDA7Cit9CisKICNpZmRlZiBDT05GSUdfSElHSE1FTQotdW5zaWduZWQgaW50IGNvdW50X2hpZ2htZW1fcGFnZXModm9pZCkKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY291bnRfaGlnaG1lbV9wYWdlcyh2b2lkKQogewogCXN0cnVjdCB6b25lICp6b25lOwogCXVuc2lnbmVkIGxvbmcgem9uZV9wZm47CkBAIC0xMTcsNyArMTk5LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IHNhdmVfaGlnaG1lbSh2b2lkKQorc3RhdGljIGludCBzYXZlX2hpZ2htZW0odm9pZCkKIHsKIAlzdHJ1Y3Qgem9uZSAqem9uZTsKIAlpbnQgcmVzID0gMDsKQEAgLTEzNCw3ICsyMTYsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgcmVzdG9yZV9oaWdobWVtKHZvaWQpCitzdGF0aWMgaW50IHJlc3RvcmVfaGlnaG1lbSh2b2lkKQogewogCXByaW50aygic3dzdXNwOiBSZXN0b3JpbmcgSGlnaG1lbVxuIik7CiAJd2hpbGUgKGhpZ2htZW1fY29weSkgewpAQCAtMTUwLDggKzIzMiwzNSBAQAogCX0KIAlyZXR1cm4gMDsKIH0KKyNlbHNlCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjb3VudF9oaWdobWVtX3BhZ2VzKHZvaWQpIHtyZXR1cm4gMDt9CitzdGF0aWMgaW5saW5lIGludCBzYXZlX2hpZ2htZW0odm9pZCkge3JldHVybiAwO30KK3N0YXRpYyBpbmxpbmUgaW50IHJlc3RvcmVfaGlnaG1lbSh2b2lkKSB7cmV0dXJuIDA7fQogI2VuZGlmCiAKK3Vuc2lnbmVkIGludCBjb3VudF9zcGVjaWFsX3BhZ2VzKHZvaWQpCit7CisJcmV0dXJuIGNvdW50X2FyY2hfcGFnZXMoKSArIGNvdW50X2hpZ2htZW1fcGFnZXMoKTsKK30KKworaW50IHNhdmVfc3BlY2lhbF9tZW0odm9pZCkKK3sKKwlpbnQgcmV0OworCXJldCA9IHNhdmVfYXJjaF9tZW0oKTsKKwlpZiAoIXJldCkKKwkJcmV0ID0gc2F2ZV9oaWdobWVtKCk7CisJcmV0dXJuIHJldDsKK30KKworaW50IHJlc3RvcmVfc3BlY2lhbF9tZW0odm9pZCkKK3sKKwlpbnQgcmV0OworCXJldCA9IHJlc3RvcmVfYXJjaF9tZW0oKTsKKwlpZiAoIXJldCkKKwkJcmV0ID0gcmVzdG9yZV9oaWdobWVtKCk7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBwZm5faXNfbm9zYXZlKHVuc2lnbmVkIGxvbmcgcGZuKQogewogCXVuc2lnbmVkIGxvbmcgbm9zYXZlX2JlZ2luX3BmbiA9IF9fcGEoJl9fbm9zYXZlX2JlZ2luKSA+PiBQQUdFX1NISUZUOwpAQCAtMTc3LDcgKzI4Niw2IEBACiAJCXJldHVybiAwOwogCiAJcGFnZSA9IHBmbl90b19wYWdlKHBmbik7Ci0JQlVHX09OKFBhZ2VSZXNlcnZlZChwYWdlKSAmJiBQYWdlTm9zYXZlKHBhZ2UpKTsKIAlpZiAoUGFnZU5vc2F2ZShwYWdlKSkKIAkJcmV0dXJuIDA7CiAJaWYgKFBhZ2VSZXNlcnZlZChwYWdlKSAmJiBwZm5faXNfbm9zYXZlKHBmbikpCkBAIC0yOTMsNjIgKzQwMSwyOSBAQAogCX0KIH0KIAotLyoqCi0gKglPbiByZXN1bWUgaXQgaXMgbmVjZXNzYXJ5IHRvIHRyYWNlIGFuZCBldmVudHVhbGx5IGZyZWUgdGhlIHVuc2FmZQotICoJcGFnZXMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkLCBiZWNhdXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgSS9PCi0gKgkob24geDg2LTY0IHdlIGxpa2VseSB3aWxsICJlYXQiIHRoZXNlIHBhZ2VzIG9uY2UgYWdhaW4gd2hpbGUKLSAqCWNyZWF0aW5nIHRoZSB0ZW1wb3JhcnkgcGFnZSB0cmFuc2xhdGlvbiB0YWJsZXMpCi0gKi8KLQotc3RydWN0IGVhdGVuX3BhZ2UgewotCXN0cnVjdCBlYXRlbl9wYWdlICpuZXh0OwotCWNoYXIgcGFkZGluZ1tQQUdFX1NJWkUgLSBzaXplb2Yodm9pZCAqKV07Ci19OwotCi1zdGF0aWMgc3RydWN0IGVhdGVuX3BhZ2UgKmVhdGVuX3BhZ2VzID0gTlVMTDsKLQotc3RhdGljIHZvaWQgcmVsZWFzZV9lYXRlbl9wYWdlcyh2b2lkKQotewotCXN0cnVjdCBlYXRlbl9wYWdlICpwLCAqcTsKLQotCXAgPSBlYXRlbl9wYWdlczsKLQl3aGlsZSAocCkgewotCQlxID0gcC0+bmV4dDsKLQkJLyogV2UgZG9uJ3Qgd2FudCBzd3N1c3BfZnJlZSgpIHRvIGZyZWUgdGhpcyBwYWdlIGFnYWluICovCi0JCUNsZWFyUGFnZU5vc2F2ZSh2aXJ0X3RvX3BhZ2UocCkpOwotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcCk7Ci0JCXAgPSBxOwotCX0KLQllYXRlbl9wYWdlcyA9IE5VTEw7Ci19CitzdGF0aWMgdW5zaWduZWQgaW50IHVuc2FmZV9wYWdlczsKIAogLyoqCiAgKglAc2FmZV9uZWVkZWQgLSBvbiByZXN1bWUsIGZvciBzdG9yaW5nIHRoZSBQQkUgbGlzdCBhbmQgdGhlIGltYWdlLAogICoJd2UgY2FuIG9ubHkgdXNlIG1lbW9yeSBwYWdlcyB0aGF0IGRvIG5vdCBjb25mbGljdCB3aXRoIHRoZSBwYWdlcwotICoJd2hpY2ggaGFkIGJlZW4gdXNlZCBiZWZvcmUgc3VzcGVuZC4KKyAqCXVzZWQgYmVmb3JlIHN1c3BlbmQuCiAgKgogICoJVGhlIHVuc2FmZSBwYWdlcyBhcmUgbWFya2VkIHdpdGggdGhlIFBHX25vc2F2ZV9mcmVlIGZsYWcKLSAqCi0gKglBbGxvY2F0ZWQgYnV0IHVudXNhYmxlIChpZSBlYXRlbikgbWVtb3J5IHBhZ2VzIHNob3VsZCBiZSBtYXJrZWQKLSAqCXNvIHRoYXQgc3dzdXNwX2ZyZWUoKSBjYW4gcmVsZWFzZSB0aGVtCisgKglhbmQgd2UgY291bnQgdGhlbSB1c2luZyB1bnNhZmVfcGFnZXMKICAqLwogCiBzdGF0aWMgaW5saW5lIHZvaWQgKmFsbG9jX2ltYWdlX3BhZ2UoZ2ZwX3QgZ2ZwX21hc2ssIGludCBzYWZlX25lZWRlZCkKIHsKIAl2b2lkICpyZXM7CiAKKwlyZXMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShnZnBfbWFzayk7CiAJaWYgKHNhZmVfbmVlZGVkKQotCQlkbyB7CisJCXdoaWxlIChyZXMgJiYgUGFnZU5vc2F2ZUZyZWUodmlydF90b19wYWdlKHJlcykpKSB7CisJCQkvKiBUaGUgcGFnZSBpcyB1bnNhZmUsIG1hcmsgaXQgZm9yIHN3c3VzcF9mcmVlKCkgKi8KKwkJCVNldFBhZ2VOb3NhdmUodmlydF90b19wYWdlKHJlcykpOworCQkJdW5zYWZlX3BhZ2VzKys7CiAJCQlyZXMgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShnZnBfbWFzayk7Ci0JCQlpZiAocmVzICYmIFBhZ2VOb3NhdmVGcmVlKHZpcnRfdG9fcGFnZShyZXMpKSkgewotCQkJCS8qIFRoaXMgaXMgZm9yIHN3c3VzcF9mcmVlKCkgKi8KLQkJCQlTZXRQYWdlTm9zYXZlKHZpcnRfdG9fcGFnZShyZXMpKTsKLQkJCQkoKHN0cnVjdCBlYXRlbl9wYWdlICopcmVzKS0+bmV4dCA9IGVhdGVuX3BhZ2VzOwotCQkJCWVhdGVuX3BhZ2VzID0gcmVzOwotCQkJfQotCQl9IHdoaWxlIChyZXMgJiYgUGFnZU5vc2F2ZUZyZWUodmlydF90b19wYWdlKHJlcykpKTsKLQllbHNlCi0JCXJlcyA9ICh2b2lkICopZ2V0X3plcm9lZF9wYWdlKGdmcF9tYXNrKTsKKwkJfQogCWlmIChyZXMpIHsKIAkJU2V0UGFnZU5vc2F2ZSh2aXJ0X3RvX3BhZ2UocmVzKSk7CiAJCVNldFBhZ2VOb3NhdmVGcmVlKHZpcnRfdG9fcGFnZShyZXMpKTsKQEAgLTM3NCw3ICs0NDksOCBAQAogICoJT24gZWFjaCBwYWdlIHdlIHNldCB1cCBhIGxpc3Qgb2Ygc3RydWN0X3BiZSBlbGVtZW50cy4KICAqLwogCi1zdHJ1Y3QgcGJlICphbGxvY19wYWdlZGlyKHVuc2lnbmVkIGludCBucl9wYWdlcywgZ2ZwX3QgZ2ZwX21hc2ssIGludCBzYWZlX25lZWRlZCkKK3N0YXRpYyBzdHJ1Y3QgcGJlICphbGxvY19wYWdlZGlyKHVuc2lnbmVkIGludCBucl9wYWdlcywgZ2ZwX3QgZ2ZwX21hc2ssCisJCQkJIGludCBzYWZlX25lZWRlZCkKIHsKIAl1bnNpZ25lZCBpbnQgbnVtOwogCXN0cnVjdCBwYmUgKnBibGlzdCwgKnBiZTsKQEAgLTY0Miw2ICs3MTgsOCBAQAogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCisJdW5zYWZlX3BhZ2VzID0gMDsKKwogCXJldHVybiAwOwogfQogCkBAIC03MTksNDIgKzc5Nyw5OSBAQAogfQogCiAvKioKLSAqCWNyZWF0ZV9pbWFnZSAtIHVzZSBtZXRhZGF0YSBjb250YWluZWQgaW4gdGhlIFBCRSBsaXN0CisgKglwcmVwYXJlX2ltYWdlIC0gdXNlIG1ldGFkYXRhIGNvbnRhaW5lZCBpbiB0aGUgUEJFIGxpc3QKICAqCXBvaW50ZWQgdG8gYnkgcGFnZWRpcl9ub3NhdmUgdG8gbWFyayB0aGUgcGFnZXMgdGhhdCB3aWxsCiAgKgliZSBvdmVyd3JpdHRlbiBpbiB0aGUgcHJvY2VzcyBvZiByZXN0b3JpbmcgdGhlIHN5c3RlbQotICoJbWVtb3J5IHN0YXRlIGZyb20gdGhlIGltYWdlIGFuZCBhbGxvY2F0ZSBtZW1vcnkgZm9yCi0gKgl0aGUgaW1hZ2UgYXZvaWRpbmcgdGhlc2UgcGFnZXMKKyAqCW1lbW9yeSBzdGF0ZSBmcm9tIHRoZSBpbWFnZSAoInVuc2FmZSIgcGFnZXMpIGFuZCBhbGxvY2F0ZQorICoJbWVtb3J5IGZvciB0aGUgaW1hZ2UKKyAqCisgKglUaGUgaWRlYSBpcyB0byBhbGxvY2F0ZSB0aGUgUEJFIGxpc3QgZmlyc3QgYW5kIHRoZW4KKyAqCWFsbG9jYXRlIGFzIG1hbnkgcGFnZXMgYXMgaXQncyBuZWVkZWQgZm9yIHRoZSBpbWFnZSBkYXRhLAorICoJYnV0IG5vdCB0byBhc3NpZ24gdGhlc2UgcGFnZXMgdG8gdGhlIFBCRXMgaW5pdGlhbGx5LgorICoJSW5zdGVhZCwgd2UganVzdCBtYXJrIHRoZW0gYXMgYWxsb2NhdGVkIGFuZCBjcmVhdGUgYSBsaXN0CisgKglvZiAic2FmZSIgd2hpY2ggd2lsbCBiZSB1c2VkIGxhdGVyCiAgKi8KIAotc3RhdGljIGludCBjcmVhdGVfaW1hZ2Uoc3RydWN0IHNuYXBzaG90X2hhbmRsZSAqaGFuZGxlKQorc3RydWN0IHNhZmVfcGFnZSB7CisJc3RydWN0IHNhZmVfcGFnZSAqbmV4dDsKKwljaGFyIHBhZGRpbmdbUEFHRV9TSVpFIC0gc2l6ZW9mKHZvaWQgKildOworfTsKKworc3RhdGljIHN0cnVjdCBzYWZlX3BhZ2UgKnNhZmVfcGFnZXM7CisKK3N0YXRpYyBpbnQgcHJlcGFyZV9pbWFnZShzdHJ1Y3Qgc25hcHNob3RfaGFuZGxlICpoYW5kbGUpCiB7CiAJaW50IGVycm9yID0gMDsKLQlzdHJ1Y3QgcGJlICpwLCAqcGJsaXN0OworCXVuc2lnbmVkIGludCBucl9wYWdlcyA9IG5yX2NvcHlfcGFnZXM7CisJc3RydWN0IHBiZSAqcCwgKnBibGlzdCA9IE5VTEw7CiAKIAlwID0gcGFnZWRpcl9ub3NhdmU7CiAJZXJyb3IgPSBtYXJrX3Vuc2FmZV9wYWdlcyhwKTsKIAlpZiAoIWVycm9yKSB7Ci0JCXBibGlzdCA9IGFsbG9jX3BhZ2VkaXIobnJfY29weV9wYWdlcywgR0ZQX0FUT01JQywgMSk7CisJCXBibGlzdCA9IGFsbG9jX3BhZ2VkaXIobnJfcGFnZXMsIEdGUF9BVE9NSUMsIDEpOwogCQlpZiAocGJsaXN0KQogCQkJY29weV9wYWdlX2JhY2t1cF9saXN0KHBibGlzdCwgcCk7CiAJCWZyZWVfcGFnZWRpcihwLCAwKTsKIAkJaWYgKCFwYmxpc3QpCiAJCQllcnJvciA9IC1FTk9NRU07CiAJfQotCWlmICghZXJyb3IpCi0JCWVycm9yID0gYWxsb2NfZGF0YV9wYWdlcyhwYmxpc3QsIEdGUF9BVE9NSUMsIDEpOworCXNhZmVfcGFnZXMgPSBOVUxMOworCWlmICghZXJyb3IgJiYgbnJfcGFnZXMgPiB1bnNhZmVfcGFnZXMpIHsKKwkJbnJfcGFnZXMgLT0gdW5zYWZlX3BhZ2VzOworCQl3aGlsZSAobnJfcGFnZXMtLSkgeworCQkJc3RydWN0IHNhZmVfcGFnZSAqcHRyOworCisJCQlwdHIgPSAoc3RydWN0IHNhZmVfcGFnZSAqKWdldF96ZXJvZWRfcGFnZShHRlBfQVRPTUlDKTsKKwkJCWlmICghcHRyKSB7CisJCQkJZXJyb3IgPSAtRU5PTUVNOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKCFQYWdlTm9zYXZlRnJlZSh2aXJ0X3RvX3BhZ2UocHRyKSkpIHsKKwkJCQkvKiBUaGUgcGFnZSBpcyAic2FmZSIsIGFkZCBpdCB0byB0aGUgbGlzdCAqLworCQkJCXB0ci0+bmV4dCA9IHNhZmVfcGFnZXM7CisJCQkJc2FmZV9wYWdlcyA9IHB0cjsKKwkJCX0KKwkJCS8qIE1hcmsgdGhlIHBhZ2UgYXMgYWxsb2NhdGVkICovCisJCQlTZXRQYWdlTm9zYXZlKHZpcnRfdG9fcGFnZShwdHIpKTsKKwkJCVNldFBhZ2VOb3NhdmVGcmVlKHZpcnRfdG9fcGFnZShwdHIpKTsKKwkJfQorCX0KIAlpZiAoIWVycm9yKSB7Ci0JCXJlbGVhc2VfZWF0ZW5fcGFnZXMoKTsKIAkJcGFnZWRpcl9ub3NhdmUgPSBwYmxpc3Q7CiAJfSBlbHNlIHsKLQkJcGFnZWRpcl9ub3NhdmUgPSBOVUxMOwogCQloYW5kbGUtPnBiZSA9IE5VTEw7Ci0JCW5yX2NvcHlfcGFnZXMgPSAwOwotCQlucl9tZXRhX3BhZ2VzID0gMDsKKwkJc3dzdXNwX2ZyZWUoKTsKIAl9CiAJcmV0dXJuIGVycm9yOwogfQogCitzdGF0aWMgdm9pZCAqZ2V0X2J1ZmZlcihzdHJ1Y3Qgc25hcHNob3RfaGFuZGxlICpoYW5kbGUpCit7CisJc3RydWN0IHBiZSAqcGJlID0gaGFuZGxlLT5wYmUsICpsYXN0ID0gaGFuZGxlLT5sYXN0X3BiZTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShwYmUtPm9yaWdfYWRkcmVzcyk7CisKKwlpZiAoUGFnZU5vc2F2ZShwYWdlKSAmJiBQYWdlTm9zYXZlRnJlZShwYWdlKSkgeworCQkvKgorCQkgKiBXZSBoYXZlIGFsbG9jYXRlZCB0aGUgIm9yaWdpbmFsIiBwYWdlIGZyYW1lIGFuZCB3ZSBjYW4KKwkJICogdXNlIGl0IGRpcmVjdGx5IHRvIHN0b3JlIHRoZSByZWFkIHBhZ2UKKwkJICovCisJCXBiZS0+YWRkcmVzcyA9IDA7CisJCWlmIChsYXN0ICYmIGxhc3QtPm5leHQpCisJCQlsYXN0LT5uZXh0ID0gTlVMTDsKKwkJcmV0dXJuICh2b2lkICopcGJlLT5vcmlnX2FkZHJlc3M7CisJfQorCS8qCisJICogVGhlICJvcmlnaW5hbCIgcGFnZSBmcmFtZSBoYXMgbm90IGJlZW4gYWxsb2NhdGVkIGFuZCB3ZSBoYXZlIHRvCisJICogdXNlIGEgInNhZmUiIHBhZ2UgZnJhbWUgdG8gc3RvcmUgdGhlIHJlYWQgcGFnZQorCSAqLworCXBiZS0+YWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKXNhZmVfcGFnZXM7CisJc2FmZV9wYWdlcyA9IHNhZmVfcGFnZXMtPm5leHQ7CisJaWYgKGxhc3QpCisJCWxhc3QtPm5leHQgPSBwYmU7CisJaGFuZGxlLT5sYXN0X3BiZSA9IHBiZTsKKwlyZXR1cm4gKHZvaWQgKilwYmUtPmFkZHJlc3M7Cit9CisKIC8qKgogICoJc25hcHNob3Rfd3JpdGVfbmV4dCAtIHVzZWQgZm9yIHdyaXRpbmcgdGhlIHN5c3RlbSBtZW1vcnkgc25hcHNob3QuCiAgKgpAQCAtNzk5LDE1ICs5MzQsMTYgQEAKIAkJfSBlbHNlIGlmIChoYW5kbGUtPnByZXYgPD0gbnJfbWV0YV9wYWdlcykgewogCQkJaGFuZGxlLT5wYmUgPSB1bnBhY2tfb3JpZ19hZGRyZXNzZXMoYnVmZmVyLCBoYW5kbGUtPnBiZSk7CiAJCQlpZiAoIWhhbmRsZS0+cGJlKSB7Ci0JCQkJZXJyb3IgPSBjcmVhdGVfaW1hZ2UoaGFuZGxlKTsKKwkJCQllcnJvciA9IHByZXBhcmVfaW1hZ2UoaGFuZGxlKTsKIAkJCQlpZiAoZXJyb3IpCiAJCQkJCXJldHVybiBlcnJvcjsKIAkJCQloYW5kbGUtPnBiZSA9IHBhZ2VkaXJfbm9zYXZlOwotCQkJCWhhbmRsZS0+YnVmZmVyID0gKHZvaWQgKiloYW5kbGUtPnBiZS0+YWRkcmVzczsKKwkJCQloYW5kbGUtPmxhc3RfcGJlID0gTlVMTDsKKwkJCQloYW5kbGUtPmJ1ZmZlciA9IGdldF9idWZmZXIoaGFuZGxlKTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWhhbmRsZS0+cGJlID0gaGFuZGxlLT5wYmUtPm5leHQ7Ci0JCQloYW5kbGUtPmJ1ZmZlciA9ICh2b2lkICopaGFuZGxlLT5wYmUtPmFkZHJlc3M7CisJCQloYW5kbGUtPmJ1ZmZlciA9IGdldF9idWZmZXIoaGFuZGxlKTsKIAkJfQogCQloYW5kbGUtPnByZXYgPSBoYW5kbGUtPnBhZ2U7CiAJfQpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3N3c3VzcC5jIGIva2VybmVsL3Bvd2VyL3N3c3VzcC5jCmluZGV4IGM0MDE2Y2IuLmYwZWU0ZTcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9zd3N1c3AuYworKysgYi9rZXJuZWwvcG93ZXIvc3dzdXNwLmMKQEAgLTYyLDE2ICs2Miw2IEBACiAKIGludCBpbl9zdXNwZW5kIF9fbm9zYXZlZGF0YSA9IDA7CiAKLSNpZmRlZiBDT05GSUdfSElHSE1FTQotdW5zaWduZWQgaW50IGNvdW50X2hpZ2htZW1fcGFnZXModm9pZCk7Ci1pbnQgc2F2ZV9oaWdobWVtKHZvaWQpOwotaW50IHJlc3RvcmVfaGlnaG1lbSh2b2lkKTsKLSNlbHNlCi1zdGF0aWMgaW50IHNhdmVfaGlnaG1lbSh2b2lkKSB7IHJldHVybiAwOyB9Ci1zdGF0aWMgaW50IHJlc3RvcmVfaGlnaG1lbSh2b2lkKSB7IHJldHVybiAwOyB9Ci1zdGF0aWMgdW5zaWduZWQgaW50IGNvdW50X2hpZ2htZW1fcGFnZXModm9pZCkgeyByZXR1cm4gMDsgfQotI2VuZGlmCi0KIC8qKgogICoJVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIHRyYWNpbmcgdGhlIGFsbG9jYXRlZAogICoJc3dhcCBwYWdlcywgc28gdGhhdCB0aGV5IGNhbiBiZSBmcmVlZCBpbiBjYXNlIG9mIGFuIGVycm9yLgpAQCAtMTc1LDYgKzE2NSwxMiBAQAogICovCiAKICNkZWZpbmUgU0hSSU5LX0JJVEUJMTAwMDAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3Nocmlua19tZW1vcnkobG9uZyB0bXApCit7CisJaWYgKHRtcCA+IFNIUklOS19CSVRFKQorCQl0bXAgPSBTSFJJTktfQklURTsKKwlyZXR1cm4gc2hyaW5rX2FsbF9tZW1vcnkodG1wKTsKK30KIAogaW50IHN3c3VzcF9zaHJpbmtfbWVtb3J5KHZvaWQpCiB7CkBAIC0xODYsMjEgKzE4MiwyMyBAQAogCiAJcHJpbnRrKCJTaHJpbmtpbmcgbWVtb3J5Li4uICAiKTsKIAlkbyB7Ci0JCXNpemUgPSAyICogY291bnRfaGlnaG1lbV9wYWdlcygpOworCQlzaXplID0gMiAqIGNvdW50X3NwZWNpYWxfcGFnZXMoKTsKIAkJc2l6ZSArPSBzaXplIC8gNTAgKyBjb3VudF9kYXRhX3BhZ2VzKCk7CiAJCXNpemUgKz0gKHNpemUgKyBQQkVTX1BFUl9QQUdFIC0gMSkgLyBQQkVTX1BFUl9QQUdFICsKIAkJCVBBR0VTX0ZPUl9JTzsKIAkJdG1wID0gc2l6ZTsKIAkJZm9yX2VhY2hfem9uZSAoem9uZSkKLQkJCWlmICghaXNfaGlnaG1lbSh6b25lKSkKKwkJCWlmICghaXNfaGlnaG1lbSh6b25lKSAmJiBwb3B1bGF0ZWRfem9uZSh6b25lKSkgewogCQkJCXRtcCAtPSB6b25lLT5mcmVlX3BhZ2VzOworCQkJCXRtcCArPSB6b25lLT5sb3dtZW1fcmVzZXJ2ZVtaT05FX05PUk1BTF07CisJCQl9CiAJCWlmICh0bXAgPiAwKSB7Ci0JCQl0bXAgPSBzaHJpbmtfYWxsX21lbW9yeShTSFJJTktfQklURSk7CisJCQl0bXAgPSBfX3Nocmlua19tZW1vcnkodG1wKTsKIAkJCWlmICghdG1wKQogCQkJCXJldHVybiAtRU5PTUVNOwogCQkJcGFnZXMgKz0gdG1wOwogCQl9IGVsc2UgaWYgKHNpemUgPiBpbWFnZV9zaXplIC8gUEFHRV9TSVpFKSB7Ci0JCQl0bXAgPSBzaHJpbmtfYWxsX21lbW9yeShTSFJJTktfQklURSk7CisJCQl0bXAgPSBfX3Nocmlua19tZW1vcnkoc2l6ZSAtIChpbWFnZV9zaXplIC8gUEFHRV9TSVpFKSk7CiAJCQlwYWdlcyArPSB0bXA7CiAJCX0KIAkJcHJpbnRrKCJcYiVjIiwgcFtpKyslNF0pOwpAQCAtMjI4LDcgKzIyNiw3IEBACiAJCWdvdG8gRW5hYmxlX2lycXM7CiAJfQogCi0JaWYgKChlcnJvciA9IHNhdmVfaGlnaG1lbSgpKSkgeworCWlmICgoZXJyb3IgPSBzYXZlX3NwZWNpYWxfbWVtKCkpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAic3dzdXNwOiBOb3QgZW5vdWdoIGZyZWUgcGFnZXMgZm9yIGhpZ2htZW1cbiIpOwogCQlnb3RvIFJlc3RvcmVfaGlnaG1lbTsKIAl9CkBAIC0yMzksNyArMjM3LDcgQEAKIAkvKiBSZXN0b3JlIGNvbnRyb2wgZmxvdyBtYWdpY2FsbHkgYXBwZWFycyBoZXJlICovCiAJcmVzdG9yZV9wcm9jZXNzb3Jfc3RhdGUoKTsKIFJlc3RvcmVfaGlnaG1lbToKLQlyZXN0b3JlX2hpZ2htZW0oKTsKKwlyZXN0b3JlX3NwZWNpYWxfbWVtKCk7CiAJZGV2aWNlX3Bvd2VyX3VwKCk7CiBFbmFibGVfaXJxczoKIAlsb2NhbF9pcnFfZW5hYmxlKCk7CkBAIC0yNjUsNyArMjYzLDcgQEAKIAkgKi8KIAlzd3N1c3BfZnJlZSgpOwogCXJlc3RvcmVfcHJvY2Vzc29yX3N0YXRlKCk7Ci0JcmVzdG9yZV9oaWdobWVtKCk7CisJcmVzdG9yZV9zcGVjaWFsX21lbSgpOwogCXRvdWNoX3NvZnRsb2NrdXBfd2F0Y2hkb2coKTsKIAlkZXZpY2VfcG93ZXJfdXAoKTsKIAlsb2NhbF9pcnFfZW5hYmxlKCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvcmN1cGRhdGUuYyBiL2tlcm5lbC9yY3VwZGF0ZS5jCmluZGV4IDIwNThmODguLjIwZTk3MTAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9yY3VwZGF0ZS5jCisrKyBiL2tlcm5lbC9yY3VwZGF0ZS5jCkBAIC02MTIsMTQgKzYxMiw2IEBACiAJd2FpdF9mb3JfY29tcGxldGlvbigmcmN1LmNvbXBsZXRpb24pOwogfQogCi0vKgotICogRGVwcmVjYXRlZCwgdXNlIHN5bmNocm9uaXplX3JjdSgpIG9yIHN5bmNocm9uaXplX3NjaGVkKCkgaW5zdGVhZC4KLSAqLwotdm9pZCBzeW5jaHJvbml6ZV9rZXJuZWwodm9pZCkKLXsKLQlzeW5jaHJvbml6ZV9yY3UoKTsKLX0KLQogbW9kdWxlX3BhcmFtKGJsaW1pdCwgaW50LCAwKTsKIG1vZHVsZV9wYXJhbShxaGltYXJrLCBpbnQsIDApOwogbW9kdWxlX3BhcmFtKHFsb3dtYXJrLCBpbnQsIDApOwpAQCAtNjI3LDcgKzYxOSw2IEBACiBtb2R1bGVfcGFyYW0ocnNpbnRlcnZhbCwgaW50LCAwKTsKICNlbmRpZgogRVhQT1JUX1NZTUJPTF9HUEwocmN1X2JhdGNoZXNfY29tcGxldGVkKTsKLUVYUE9SVF9TWU1CT0xfR1BMX0ZVVFVSRShjYWxsX3JjdSk7CS8qIFdBUk5JTkc6IEdQTC1vbmx5IGluIEFwcmlsIDIwMDYuICovCi1FWFBPUlRfU1lNQk9MX0dQTF9GVVRVUkUoY2FsbF9yY3VfYmgpOwkvKiBXQVJOSU5HOiBHUEwtb25seSBpbiBBcHJpbCAyMDA2LiAqLworRVhQT1JUX1NZTUJPTF9HUEwoY2FsbF9yY3UpOworRVhQT1JUX1NZTUJPTF9HUEwoY2FsbF9yY3VfYmgpOwogRVhQT1JUX1NZTUJPTF9HUEwoc3luY2hyb25pemVfcmN1KTsKLUVYUE9SVF9TWU1CT0xfR1BMX0ZVVFVSRShzeW5jaHJvbml6ZV9rZXJuZWwpOyAvKiBXQVJOSU5HOiBHUEwtb25seSBpbiBBcHJpbCAyMDA2LiAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkLmMgYi9rZXJuZWwvc2NoZWQuYwppbmRleCBjMTNmMWJkLi41ZGJjNDI2IDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWQuYworKysgYi9rZXJuZWwvc2NoZWQuYwpAQCAtMzg4Niw2ICszODg2LDEwIEBACiAJCQkhY2FwYWJsZShDQVBfU1lTX05JQ0UpKQogCQlnb3RvIG91dF91bmxvY2s7CiAKKwlyZXR2YWwgPSBzZWN1cml0eV90YXNrX3NldHNjaGVkdWxlcihwLCAwLCBOVUxMKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dF91bmxvY2s7CisKIAljcHVzX2FsbG93ZWQgPSBjcHVzZXRfY3B1c19hbGxvd2VkKHApOwogCWNwdXNfYW5kKG5ld19tYXNrLCBuZXdfbWFzaywgY3B1c19hbGxvd2VkKTsKIAlyZXR2YWwgPSBzZXRfY3B1c19hbGxvd2VkKHAsIG5ld19tYXNrKTsKQEAgLTM5NTQsNyArMzk1OCwxMCBAQAogCWlmICghcCkKIAkJZ290byBvdXRfdW5sb2NrOwogCi0JcmV0dmFsID0gMDsKKwlyZXR2YWwgPSBzZWN1cml0eV90YXNrX2dldHNjaGVkdWxlcihwKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dF91bmxvY2s7CisKIAljcHVzX2FuZCgqbWFzaywgcC0+Y3B1c19hbGxvd2VkLCBjcHVfb25saW5lX21hcCk7CiAKIG91dF91bmxvY2s6CkBAIC00MDQ2LDYgKzQwNTMsOSBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgX19jb25kX3Jlc2NoZWQodm9pZCkKIHsKKyNpZmRlZiBDT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVAKKwlfX21pZ2h0X3NsZWVwKF9fRklMRV9fLCBfX0xJTkVfXyk7CisjZW5kaWYKIAkvKgogCSAqIFRoZSBCS1MgbWlnaHQgYmUgcmVhY3F1aXJlZCBiZWZvcmUgd2UgaGF2ZSBkcm9wcGVkCiAJICogUFJFRU1QVF9BQ1RJVkUsIHdoaWNoIGNvdWxkIHRyaWdnZXIgYSBzZWNvbmQKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuYwppbmRleCAwYjZlYzBlLi45MDkzMGIyIDEwMDY0NAotLS0gYS9rZXJuZWwvc3lzLmMKKysrIGIva2VybmVsL3N5cy5jCkBAIC0xMyw3ICsxMyw2IEBACiAjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KICNpbmNsdWRlIDxsaW51eC9wcmN0bC5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9oaWdodWlkLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KQEAgLTU3LDYgKzU2LDEyIEBACiAjaWZuZGVmIEdFVF9GUEVYQ19DVEwKICMgZGVmaW5lIEdFVF9GUEVYQ19DVEwoYSxiKQkoLUVJTlZBTCkKICNlbmRpZgorI2lmbmRlZiBHRVRfRU5ESUFOCisjIGRlZmluZSBHRVRfRU5ESUFOKGEsYikJKC1FSU5WQUwpCisjZW5kaWYKKyNpZm5kZWYgU0VUX0VORElBTgorIyBkZWZpbmUgU0VUX0VORElBTihhLGIpCSgtRUlOVkFMKQorI2VuZGlmCiAKIC8qCiAgKiB0aGlzIGlzIHdoZXJlIHRoZSBzeXN0ZW0td2lkZSBvdmVyZmxvdyBVSUQgYW5kIEdJRCBhcmUgZGVmaW5lZCwgZm9yCkBAIC0xODYwLDIzICsxODY1LDIwIEBACiAgKiBmaWVsZHMgd2hlbiByZWFwaW5nLCBzbyBhIHNhbXBsZSBlaXRoZXIgZ2V0cyBhbGwgdGhlIGFkZGl0aW9ucyBvZiBhCiAgKiBnaXZlbiBjaGlsZCBhZnRlciBpdCdzIHJlYXBlZCwgb3Igbm9uZSBzbyB0aGlzIHNhbXBsZSBpcyBiZWZvcmUgcmVhcGluZy4KICAqCi0gKiB0YXNrbGlzdF9sb2NrIGxvY2tpbmcgb3B0aW1pc2F0aW9uOgotICogSWYgd2UgYXJlIGN1cnJlbnQgYW5kIHNpbmdsZSB0aHJlYWRlZCwgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSB0aGUgdGFza2xpc3QKLSAqIGxvY2sgb3IgdGhlIHNpZ2xvY2suICBObyBvbmUgZWxzZSBjYW4gdGFrZSBvdXIgc2lnbmFsX3N0cnVjdCBhd2F5LAotICogbm8gb25lIGVsc2UgY2FuIHJlYXAgdGhlIGNoaWxkcmVuIHRvIHVwZGF0ZSBzaWduYWwtPmMqIGNvdW50ZXJzLCBhbmQKLSAqIG5vIG9uZSBlbHNlIGNhbiByYWNlIHdpdGggdGhlIHNpZ25hbC0+IGZpZWxkcy4KLSAqIElmIHdlIGRvIG5vdCB0YWtlIHRoZSB0YXNrbGlzdF9sb2NrLCB0aGUgc2lnbmFsLT4gZmllbGRzIGNvdWxkIGJlIHJlYWQKLSAqIG91dCBvZiBvcmRlciB3aGlsZSBhbm90aGVyIHRocmVhZCB3YXMganVzdCBleGl0aW5nLiBTbyB3ZSBwbGFjZSBhCi0gKiByZWFkIG1lbW9yeSBiYXJyaWVyIHdoZW4gd2UgYXZvaWQgdGhlIGxvY2suICBPbiB0aGUgd3JpdGVyIHNpZGUsCi0gKiB3cml0ZSBtZW1vcnkgYmFycmllciBpcyBpbXBsaWVkIGluICBfX2V4aXRfc2lnbmFsIGFzIF9fZXhpdF9zaWduYWwgcmVsZWFzZXMKLSAqIHRoZSBzaWdsb2NrIHNwaW5sb2NrIGFmdGVyIHVwZGF0aW5nIHRoZSBzaWduYWwtPiBmaWVsZHMuCi0gKgotICogV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhlIHNpZ2xvY2sgd2hlbiB3ZSBhY2Nlc3MgdGhlIG5vbiBjKiBmaWVsZHMKLSAqIG9mIHRoZSBzaWduYWxfc3RydWN0IChmb3IgUlVTQUdFX1NFTEYpIGV2ZW4gaW4gbXVsdGl0aHJlYWRlZAotICogY2FzZSwgc2luY2Ugd2UgdGFrZSB0aGUgdGFza2xpc3QgbG9jayBmb3IgcmVhZCBhbmQgdGhlIG5vbiBjKiBzaWduYWwtPgotICogZmllbGRzIGFyZSB1cGRhdGVkIG9ubHkgaW4gX19leGl0X3NpZ25hbCwgd2hpY2ggaXMgY2FsbGVkIHdpdGgKLSAqIHRhc2tsaXN0X2xvY2sgdGFrZW4gZm9yIHdyaXRlLCBoZW5jZSB0aGVzZSB0d28gdGhyZWFkcyBjYW5ub3QgZXhlY3V0ZQotICogY29uY3VycmVudGx5LgorICogTG9ja2luZzoKKyAqIFdlIG5lZWQgdG8gdGFrZSB0aGUgc2lnbG9jayBmb3IgQ0hJTERFUkVOLCBTRUxGIGFuZCBCT1RICisgKiBmb3IgIHRoZSBjYXNlcyBjdXJyZW50IG11bHRpdGhyZWFkZWQsIG5vbi1jdXJyZW50IHNpbmdsZSB0aHJlYWRlZAorICogbm9uLWN1cnJlbnQgbXVsdGl0aHJlYWRlZC4gIFRocmVhZCB0cmF2ZXJzYWwgaXMgbm93IHNhZmUgd2l0aAorICogdGhlIHNpZ2xvY2sgaGVsZC4KKyAqIFN0cmljdGx5IHNwZWFraW5nLCB3ZSBkb25vdCBuZWVkIHRvIHRha2UgdGhlIHNpZ2xvY2sgaWYgd2UgYXJlIGN1cnJlbnQgYW5kCisgKiBzaW5nbGUgdGhyZWFkZWQsICBhcyBubyBvbmUgZWxzZSBjYW4gdGFrZSBvdXIgc2lnbmFsX3N0cnVjdCBhd2F5LCBubyBvbmUKKyAqIGVsc2UgY2FuICByZWFwIHRoZSAgY2hpbGRyZW4gdG8gdXBkYXRlIHNpZ25hbC0+YyogY291bnRlcnMsIGFuZCBubyBvbmUgZWxzZQorICogY2FuIHJhY2Ugd2l0aCB0aGUgc2lnbmFsLT4gZmllbGRzLiBJZiB3ZSBkbyBub3QgdGFrZSBhbnkgbG9jaywgdGhlCisgKiBzaWduYWwtPiBmaWVsZHMgY291bGQgYmUgcmVhZCBvdXQgb2Ygb3JkZXIgd2hpbGUgYW5vdGhlciB0aHJlYWQgd2FzIGp1c3QKKyAqIGV4aXRpbmcuIFNvIHdlIHNob3VsZCAgcGxhY2UgYSByZWFkIG1lbW9yeSBiYXJyaWVyIHdoZW4gd2UgYXZvaWQgdGhlIGxvY2suCisgKiBPbiB0aGUgd3JpdGVyIHNpZGUsICB3cml0ZSBtZW1vcnkgYmFycmllciBpcyBpbXBsaWVkIGluICBfX2V4aXRfc2lnbmFsCisgKiBhcyBfX2V4aXRfc2lnbmFsIHJlbGVhc2VzICB0aGUgc2lnbG9jayBzcGlubG9jayBhZnRlciB1cGRhdGluZyB0aGUgc2lnbmFsLT4KKyAqIGZpZWxkcy4gQnV0IHdlIGRvbid0IGRvIHRoaXMgeWV0IHRvIGtlZXAgdGhpbmdzIHNpbXBsZS4KICAqCiAgKi8KIApAQCAtMTg4NSwzNSArMTg4NywyNSBAQAogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWNwdXRpbWVfdCB1dGltZSwgc3RpbWU7Ci0JaW50IG5lZWRfbG9jayA9IDA7CiAKIAltZW1zZXQoKGNoYXIgKikgciwgMCwgc2l6ZW9mICpyKTsKIAl1dGltZSA9IHN0aW1lID0gY3B1dGltZV96ZXJvOwogCi0JaWYgKHAgIT0gY3VycmVudCB8fCAhdGhyZWFkX2dyb3VwX2VtcHR5KHApKQotCQluZWVkX2xvY2sgPSAxOwotCi0JaWYgKG5lZWRfbG9jaykgewotCQlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwotCQlpZiAodW5saWtlbHkoIXAtPnNpZ25hbCkpIHsKLQkJCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKLQkJCXJldHVybjsKLQkJfQotCX0gZWxzZQotCQkvKiBTZWUgbG9ja2luZyBjb21tZW50cyBhYm92ZSAqLwotCQlzbXBfcm1iKCk7CisJcmN1X3JlYWRfbG9jaygpOworCWlmICghbG9ja190YXNrX3NpZ2hhbmQocCwgJmZsYWdzKSkgeworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJcmV0dXJuOworCX0KIAogCXN3aXRjaCAod2hvKSB7CiAJCWNhc2UgUlVTQUdFX0JPVEg6CiAJCWNhc2UgUlVTQUdFX0NISUxEUkVOOgotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnAtPnNpZ2hhbmQtPnNpZ2xvY2ssIGZsYWdzKTsKIAkJCXV0aW1lID0gcC0+c2lnbmFsLT5jdXRpbWU7CiAJCQlzdGltZSA9IHAtPnNpZ25hbC0+Y3N0aW1lOwogCQkJci0+cnVfbnZjc3cgPSBwLT5zaWduYWwtPmNudmNzdzsKIAkJCXItPnJ1X25pdmNzdyA9IHAtPnNpZ25hbC0+Y25pdmNzdzsKIAkJCXItPnJ1X21pbmZsdCA9IHAtPnNpZ25hbC0+Y21pbl9mbHQ7CiAJCQlyLT5ydV9tYWpmbHQgPSBwLT5zaWduYWwtPmNtYWpfZmx0OwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcC0+c2lnaGFuZC0+c2lnbG9jaywgZmxhZ3MpOwogCiAJCQlpZiAod2hvID09IFJVU0FHRV9DSElMRFJFTikKIAkJCQlicmVhazsKQEAgLTE5NDEsOCArMTkzMyw5IEBACiAJCQlCVUcoKTsKIAl9CiAKLQlpZiAobmVlZF9sb2NrKQotCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJdW5sb2NrX3Rhc2tfc2lnaGFuZChwLCAmZmxhZ3MpOworCXJjdV9yZWFkX3VubG9jaygpOworCiAJY3B1dGltZV90b190aW1ldmFsKHV0aW1lLCAmci0+cnVfdXRpbWUpOwogCWNwdXRpbWVfdG9fdGltZXZhbChzdGltZSwgJnItPnJ1X3N0aW1lKTsKIH0KQEAgLTIwNTcsNiArMjA1MCwxMyBAQAogCQkJCXJldHVybiAtRUZBVUxUOwogCQkJcmV0dXJuIDA7CiAJCX0KKwkJY2FzZSBQUl9HRVRfRU5ESUFOOgorCQkJZXJyb3IgPSBHRVRfRU5ESUFOKGN1cnJlbnQsIGFyZzIpOworCQkJYnJlYWs7CisJCWNhc2UgUFJfU0VUX0VORElBTjoKKwkJCWVycm9yID0gU0VUX0VORElBTihjdXJyZW50LCBhcmcyKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllcnJvciA9IC1FSU5WQUw7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXNfbmkuYyBiL2tlcm5lbC9zeXNfbmkuYwppbmRleCA1NDMzMTk1Li42OTkxYmVjIDEwMDY0NAotLS0gYS9rZXJuZWwvc3lzX25pLmMKKysrIGIva2VybmVsL3N5c19uaS5jCkBAIC04Nyw2ICs4Nyw3IEBACiBjb25kX3N5c2NhbGwoc3lzX2lub3RpZnlfYWRkX3dhdGNoKTsKIGNvbmRfc3lzY2FsbChzeXNfaW5vdGlmeV9ybV93YXRjaCk7CiBjb25kX3N5c2NhbGwoc3lzX21pZ3JhdGVfcGFnZXMpOworY29uZF9zeXNjYWxsKHN5c19tb3ZlX3BhZ2VzKTsKIGNvbmRfc3lzY2FsbChzeXNfY2hvd24xNik7CiBjb25kX3N5c2NhbGwoc3lzX2ZjaG93bjE2KTsKIGNvbmRfc3lzY2FsbChzeXNfZ2V0ZWdpZDE2KTsKQEAgLTEzMiwzICsxMzMsNCBAQAogY29uZF9zeXNjYWxsKHN5c19tYWR2aXNlKTsKIGNvbmRfc3lzY2FsbChzeXNfbXJlbWFwKTsKIGNvbmRfc3lzY2FsbChzeXNfcmVtYXBfZmlsZV9wYWdlcyk7Citjb25kX3N5c2NhbGwoY29tcGF0X3N5c19tb3ZlX3BhZ2VzKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXNjdGwuYyBiL2tlcm5lbC9zeXNjdGwuYwppbmRleCAwZDY1NmU2Li5lYjhiZDIxIDEwMDY0NAotLS0gYS9rZXJuZWwvc3lzY3RsLmMKKysrIGIva2VybmVsL3N5c2N0bC5jCkBAIC01OSw2ICs1OSw3IEBACiBleHRlcm4gaW50IENfQV9EOwogZXh0ZXJuIGludCBzeXNjdGxfb3ZlcmNvbW1pdF9tZW1vcnk7CiBleHRlcm4gaW50IHN5c2N0bF9vdmVyY29tbWl0X3JhdGlvOworZXh0ZXJuIGludCBzeXNjdGxfcGFuaWNfb25fb29tOwogZXh0ZXJuIGludCBtYXhfdGhyZWFkczsKIGV4dGVybiBpbnQgc3lzcnFfZW5hYmxlZDsKIGV4dGVybiBpbnQgY29yZV91c2VzX3BpZDsKQEAgLTM5OCw3ICszOTksNyBAQAogCQkuc3RyYXRlZ3kJPSAmc3lzY3RsX3N0cmluZywKIAl9LAogI2VuZGlmCi0jaWZkZWYgQ09ORklHX0hPVFBMVUcKKyNpZiBkZWZpbmVkKENPTkZJR19IT1RQTFVHKSAmJiBkZWZpbmVkKENPTkZJR19ORVQpCiAJewogCQkuY3RsX25hbWUJPSBLRVJOX0hPVFBMVUcsCiAJCS5wcm9jbmFtZQk9ICJob3RwbHVnIiwKQEAgLTcwMiw2ICs3MDMsMTQgQEAKIAkJLnByb2NfaGFuZGxlcgk9ICZwcm9jX2RvaW50dmVjLAogCX0sCiAJeworCQkuY3RsX25hbWUJPSBWTV9QQU5JQ19PTl9PT00sCisJCS5wcm9jbmFtZQk9ICJwYW5pY19vbl9vb20iLAorCQkuZGF0YQkJPSAmc3lzY3RsX3BhbmljX29uX29vbSwKKwkJLm1heGxlbgkJPSBzaXplb2Yoc3lzY3RsX3BhbmljX29uX29vbSksCisJCS5tb2RlCQk9IDA2NDQsCisJCS5wcm9jX2hhbmRsZXIJPSAmcHJvY19kb2ludHZlYywKKwl9LAorCXsKIAkJLmN0bF9uYW1lCT0gVk1fT1ZFUkNPTU1JVF9SQVRJTywKIAkJLnByb2NuYW1lCT0gIm92ZXJjb21taXRfcmF0aW8iLAogCQkuZGF0YQkJPSAmc3lzY3RsX292ZXJjb21taXRfcmF0aW8sCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZXIuYyBiL2tlcm5lbC90aW1lci5jCmluZGV4IDllNDlkZWUuLmYzNWIzOTMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lci5jCisrKyBiL2tlcm5lbC90aW1lci5jCkBAIC0zODMsMjMgKzM4MywxOSBAQAogc3RhdGljIGludCBjYXNjYWRlKHR2ZWNfYmFzZV90ICpiYXNlLCB0dmVjX3QgKnR2LCBpbnQgaW5kZXgpCiB7CiAJLyogY2FzY2FkZSBhbGwgdGhlIHRpbWVycyBmcm9tIHR2IHVwIG9uZSBsZXZlbCAqLwotCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsICpjdXJyOworCXN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgKnRtcDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHR2X2xpc3Q7CiAKLQloZWFkID0gdHYtPnZlYyArIGluZGV4OwotCWN1cnIgPSBoZWFkLT5uZXh0OworCWxpc3RfcmVwbGFjZV9pbml0KHR2LT52ZWMgKyBpbmRleCwgJnR2X2xpc3QpOworCiAJLyoKLQkgKiBXZSBhcmUgcmVtb3ZpbmcgX2FsbF8gdGltZXJzIGZyb20gdGhlIGxpc3QsIHNvIHdlIGRvbid0ICBoYXZlIHRvCi0JICogZGV0YWNoIHRoZW0gaW5kaXZpZHVhbGx5LCBqdXN0IGNsZWFyIHRoZSBsaXN0IGFmdGVyd2FyZHMuCisJICogV2UgYXJlIHJlbW92aW5nIF9hbGxfIHRpbWVycyBmcm9tIHRoZSBsaXN0LCBzbyB3ZQorCSAqIGRvbid0IGhhdmUgdG8gZGV0YWNoIHRoZW0gaW5kaXZpZHVhbGx5LgogCSAqLwotCXdoaWxlIChjdXJyICE9IGhlYWQpIHsKLQkJc3RydWN0IHRpbWVyX2xpc3QgKnRtcDsKLQotCQl0bXAgPSBsaXN0X2VudHJ5KGN1cnIsIHN0cnVjdCB0aW1lcl9saXN0LCBlbnRyeSk7Ci0JCUJVR19PTih0bXAtPmJhc2UgIT0gYmFzZSk7Ci0JCWN1cnIgPSBjdXJyLT5uZXh0OwotCQlpbnRlcm5hbF9hZGRfdGltZXIoYmFzZSwgdG1wKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGltZXIsIHRtcCwgJnR2X2xpc3QsIGVudHJ5KSB7CisJCUJVR19PTih0aW1lci0+YmFzZSAhPSBiYXNlKTsKKwkJaW50ZXJuYWxfYWRkX3RpbWVyKGJhc2UsIHRpbWVyKTsKIAl9Ci0JSU5JVF9MSVNUX0hFQUQoaGVhZCk7CiAKIAlyZXR1cm4gaW5kZXg7CiB9CkBAIC00MTksMTAgKzQxNSwxMCBAQAogCiAJc3Bpbl9sb2NrX2lycSgmYmFzZS0+bG9jayk7CiAJd2hpbGUgKHRpbWVfYWZ0ZXJfZXEoamlmZmllcywgYmFzZS0+dGltZXJfamlmZmllcykpIHsKLQkJc3RydWN0IGxpc3RfaGVhZCB3b3JrX2xpc3QgPSBMSVNUX0hFQURfSU5JVCh3b3JrX2xpc3QpOworCQlzdHJ1Y3QgbGlzdF9oZWFkIHdvcmtfbGlzdDsKIAkJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCA9ICZ3b3JrX2xpc3Q7CiAgCQlpbnQgaW5kZXggPSBiYXNlLT50aW1lcl9qaWZmaWVzICYgVFZSX01BU0s7Ci0gCisKIAkJLyoKIAkJICogQ2FzY2FkZSB0aW1lcnM6CiAJCSAqLwpAQCAtNDMxLDggKzQyNyw4IEBACiAJCQkJKCFjYXNjYWRlKGJhc2UsICZiYXNlLT50djMsIElOREVYKDEpKSkgJiYKIAkJCQkJIWNhc2NhZGUoYmFzZSwgJmJhc2UtPnR2NCwgSU5ERVgoMikpKQogCQkJY2FzY2FkZShiYXNlLCAmYmFzZS0+dHY1LCBJTkRFWCgzKSk7Ci0JCSsrYmFzZS0+dGltZXJfamlmZmllczsgCi0JCWxpc3Rfc3BsaWNlX2luaXQoYmFzZS0+dHYxLnZlYyArIGluZGV4LCAmd29ya19saXN0KTsKKwkJKytiYXNlLT50aW1lcl9qaWZmaWVzOworCQlsaXN0X3JlcGxhY2VfaW5pdChiYXNlLT50djEudmVjICsgaW5kZXgsICZ3b3JrX2xpc3QpOwogCQl3aGlsZSAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKIAkJCXZvaWQgKCpmbikodW5zaWduZWQgbG9uZyk7CiAJCQl1bnNpZ25lZCBsb25nIGRhdGE7CmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci5jIGIva2VybmVsL3VzZXIuYwppbmRleCA0YjFlYjc0Li42NDA4YzA0IDEwMDY0NAotLS0gYS9rZXJuZWwvdXNlci5jCisrKyBiL2tlcm5lbC91c2VyLmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogCQluZXctPm1xX2J5dGVzID0gMDsKIAkJbmV3LT5sb2NrZWRfc2htID0gMDsKIAotCQlpZiAoYWxsb2NfdWlkX2tleXJpbmcobmV3KSA8IDApIHsKKwkJaWYgKGFsbG9jX3VpZF9rZXlyaW5nKG5ldywgY3VycmVudCkgPCAwKSB7CiAJCQlrbWVtX2NhY2hlX2ZyZWUodWlkX2NhY2hlcCwgbmV3KTsKIAkJCXJldHVybiBOVUxMOwogCQl9CmRpZmYgLS1naXQgYS9rZXJuZWwvd29ya3F1ZXVlLmMgYi9rZXJuZWwvd29ya3F1ZXVlLmMKaW5kZXggODgwZmI0MS4uNzQwYzVhYiAxMDA2NDQKLS0tIGEva2VybmVsL3dvcmtxdWV1ZS5jCisrKyBiL2tlcm5lbC93b3JrcXVldWUuYwpAQCAtNTMxLDExICs1MzEsMTEgQEAKIHN0YXRpYyB2b2lkIHRha2Vfb3Zlcl93b3JrKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwgdW5zaWduZWQgaW50IGNwdSkKIHsKIAlzdHJ1Y3QgY3B1X3dvcmtxdWV1ZV9zdHJ1Y3QgKmN3cSA9IHBlcl9jcHVfcHRyKHdxLT5jcHVfd3EsIGNwdSk7Ci0JTElTVF9IRUFEKGxpc3QpOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcms7CiAKIAlzcGluX2xvY2tfaXJxKCZjd3EtPmxvY2spOwotCWxpc3Rfc3BsaWNlX2luaXQoJmN3cS0+d29ya2xpc3QsICZsaXN0KTsKKwlsaXN0X3JlcGxhY2VfaW5pdCgmY3dxLT53b3JrbGlzdCwgJmxpc3QpOwogCiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZsaXN0KSkgewogCQlwcmludGsoIlRha2luZyB3b3JrIGZvciAlc1xuIiwgd3EtPm5hbWUpOwpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCmluZGV4IGI4MzBjOWEuLjc5MzU4YWQgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZQorKysgYi9saWIvTWFrZWZpbGUKQEAgLTQ2LDYgKzQ2LDcgQEAKIG9iai0kKENPTkZJR19URVhUU0VBUkNIX0tNUCkgKz0gdHNfa21wLm8KIG9iai0kKENPTkZJR19URVhUU0VBUkNIX0JNKSArPSB0c19ibS5vCiBvYmotJChDT05GSUdfVEVYVFNFQVJDSF9GU00pICs9IHRzX2ZzbS5vCitvYmotJChDT05GSUdfU01QKSArPSBwZXJjcHVfY291bnRlci5vCiAKIG9iai0kKENPTkZJR19TV0lPVExCKSArPSBzd2lvdGxiLm8KIApkaWZmIC0tZ2l0IGEvbGliL2dlbmFsbG9jLmMgYi9saWIvZ2VuYWxsb2MuYwppbmRleCA5Y2UwYTZhLi43MTMzOGI0IDEwMDY0NAotLS0gYS9saWIvZ2VuYWxsb2MuYworKysgYi9saWIvZ2VuYWxsb2MuYwpAQCAtNCwxMCArNCw2IEBACiAgKiBVc2VzIGZvciB0aGlzIGluY2x1ZGVzIG9uLWRldmljZSBzcGVjaWFsIG1lbW9yeSwgdW5jYWNoZWQgbWVtb3J5CiAgKiBldGMuCiAgKgotICogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBidWRkeSBhbGxvY2F0b3IgZm91bmQgaW4gdGhlIHN5bTUzYzh4eF8yCi0gKiBkcml2ZXIgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgIEdlcmFyZCBSb3VkaWVyIDxncm91ZGllckBmcmVlLmZyPiwKLSAqIGFuZCBhZGFwdGVkIGZvciBnZW5lcmFsIHB1cnBvc2UgdXNlLgotICoKICAqIENvcHlyaWdodCAyMDA1IChDKSBKZXMgU29yZW5zZW4gPGplc0B0cmFpbmVkLW1vbmtleS5vcmc+CiAgKgogICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCkBAIC0xNSwxNzIgKzExLDE1NSBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9zdGRkZWYuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC9nZW5hbGxvYy5oPgogCi0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAotCi1zdHJ1Y3QgZ2VuX3Bvb2wgKmdlbl9wb29sX2NyZWF0ZShpbnQgbnJfY2h1bmtzLCBpbnQgbWF4X2NodW5rX3NoaWZ0LAotCQkJCSB1bnNpZ25lZCBsb25nICgqZnApKHN0cnVjdCBnZW5fcG9vbCAqKSwKLQkJCQkgdW5zaWduZWQgbG9uZyBkYXRhKQorLyoKKyAqIENyZWF0ZSBhIG5ldyBzcGVjaWFsIG1lbW9yeSBwb29sLgorICoKKyAqIEBtaW5fYWxsb2Nfb3JkZXI6IGxvZyBiYXNlIDIgb2YgbnVtYmVyIG9mIGJ5dGVzIGVhY2ggYml0bWFwIGJpdCByZXByZXNlbnRzCisgKiBAbmlkOiBub2RlIGlkIG9mIHRoZSBub2RlIHRoZSBwb29sIHN0cnVjdHVyZSBzaG91bGQgYmUgYWxsb2NhdGVkIG9uLCBvciAtMQorICovCitzdHJ1Y3QgZ2VuX3Bvb2wgKmdlbl9wb29sX2NyZWF0ZShpbnQgbWluX2FsbG9jX29yZGVyLCBpbnQgbmlkKQogewotCXN0cnVjdCBnZW5fcG9vbCAqcG9vbHA7Ci0JdW5zaWduZWQgbG9uZyB0bXA7Ci0JaW50IGk7CisJc3RydWN0IGdlbl9wb29sICpwb29sOwogCi0JLyoKLQkgKiBUaGlzIGlzIHJlYWxseSBhbiBhcmJpdHJhcnkgbGltaXQsICsxMCBpcyBlbm91Z2ggZm9yCi0JICogSUE2NF9HUkFOVUxFX1NISUZULCBha2EgMTZNQi4gSWYgYW55b25lIG5lZWRzIGEgbGFyZ2UgbGltaXQKLQkgKiB0aGlzIGNhbiBiZSBpbmNyZWFzZWQgd2l0aG91dCBwcm9ibGVtcy4KLQkgKi8KLQlpZiAoKG1heF9jaHVua19zaGlmdCA+IChQQUdFX1NISUZUICsgMTApKSB8fAotCSAgICAoKG1heF9jaHVua19zaGlmdCA8IEFMTE9DX01JTl9TSElGVCkgJiYgbWF4X2NodW5rX3NoaWZ0KSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlpZiAoIW1heF9jaHVua19zaGlmdCkKLQkJbWF4X2NodW5rX3NoaWZ0ID0gUEFHRV9TSElGVDsKLQotCXBvb2xwID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGdlbl9wb29sKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwb29scCkKLQkJcmV0dXJuIE5VTEw7Ci0JbWVtc2V0KHBvb2xwLCAwLCBzaXplb2Yoc3RydWN0IGdlbl9wb29sKSk7Ci0JcG9vbHAtPmggPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZ2VuX3Bvb2xfbGluaykgKgotCQkJICAgKG1heF9jaHVua19zaGlmdCAtIEFMTE9DX01JTl9TSElGVCArIDEpLAotCQkJICAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwb29scC0+aCkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJnZW5fcG9vbF9hbGxvYygpIGZhaWxlZCB0byBhbGxvY2F0ZVxuIik7Ci0JCWtmcmVlKHBvb2xwKTsKLQkJcmV0dXJuIE5VTEw7CisJcG9vbCA9IGttYWxsb2Nfbm9kZShzaXplb2Yoc3RydWN0IGdlbl9wb29sKSwgR0ZQX0tFUk5FTCwgbmlkKTsKKwlpZiAocG9vbCAhPSBOVUxMKSB7CisJCXJ3bG9ja19pbml0KCZwb29sLT5sb2NrKTsKKwkJSU5JVF9MSVNUX0hFQUQoJnBvb2wtPmNodW5rcyk7CisJCXBvb2wtPm1pbl9hbGxvY19vcmRlciA9IG1pbl9hbGxvY19vcmRlcjsKIAl9Ci0JbWVtc2V0KHBvb2xwLT5oLCAwLCBzaXplb2Yoc3RydWN0IGdlbl9wb29sX2xpbmspICoKLQkgICAgICAgKG1heF9jaHVua19zaGlmdCAtIEFMTE9DX01JTl9TSElGVCArIDEpKTsKLQotCXNwaW5fbG9ja19pbml0KCZwb29scC0+bG9jayk7Ci0JcG9vbHAtPmdldF9uZXdfY2h1bmsgPSBmcDsKLQlwb29scC0+bWF4X2NodW5rX3NoaWZ0ID0gbWF4X2NodW5rX3NoaWZ0OwotCXBvb2xwLT5wcml2YXRlID0gZGF0YTsKLQotCWZvciAoaSA9IDA7IGkgPCBucl9jaHVua3M7IGkrKykgewotCQl0bXAgPSBwb29scC0+Z2V0X25ld19jaHVuayhwb29scCk7Ci0JCXByaW50ayhLRVJOX0lORk8gImFsbG9jYXRlZCAlbHhcbiIsIHRtcCk7Ci0JCWlmICghdG1wKQotCQkJYnJlYWs7Ci0JCWdlbl9wb29sX2ZyZWUocG9vbHAsIHRtcCwgKDEgPDwgcG9vbHAtPm1heF9jaHVua19zaGlmdCkpOwotCX0KLQotCXJldHVybiBwb29scDsKKwlyZXR1cm4gcG9vbDsKIH0KIEVYUE9SVF9TWU1CT0woZ2VuX3Bvb2xfY3JlYXRlKTsKIAogCiAvKgotICogIFNpbXBsZSBwb3dlciBvZiB0d28gYnVkZHktbGlrZSBnZW5lcmljIGFsbG9jYXRvci4KLSAqICBQcm92aWRlcyBuYXR1cmFsbHkgYWxpZ25lZCBtZW1vcnkgY2h1bmtzLgorICogQWRkIGEgbmV3IGNodW5rIG9mIG1lbW9yeSB0byB0aGUgc3BlY2lmaWVkIHBvb2wuCisgKgorICogQHBvb2w6IHBvb2wgdG8gYWRkIG5ldyBtZW1vcnkgY2h1bmsgdG8KKyAqIEBhZGRyOiBzdGFydGluZyBhZGRyZXNzIG9mIG1lbW9yeSBjaHVuayB0byBhZGQgdG8gcG9vbAorICogQHNpemU6IHNpemUgaW4gYnl0ZXMgb2YgdGhlIG1lbW9yeSBjaHVuayB0byBhZGQgdG8gcG9vbAorICogQG5pZDogbm9kZSBpZCBvZiB0aGUgbm9kZSB0aGUgY2h1bmsgc3RydWN0dXJlIGFuZCBiaXRtYXAgc2hvdWxkIGJlCisgKiAgICAgICBhbGxvY2F0ZWQgb24sIG9yIC0xCiAgKi8KLXVuc2lnbmVkIGxvbmcgZ2VuX3Bvb2xfYWxsb2Moc3RydWN0IGdlbl9wb29sICpwb29scCwgaW50IHNpemUpCitpbnQgZ2VuX3Bvb2xfYWRkKHN0cnVjdCBnZW5fcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwKKwkJIGludCBuaWQpCiB7Ci0JaW50IGosIGksIHMsIG1heF9jaHVua19zaXplOwotCXVuc2lnbmVkIGxvbmcgYSwgZmxhZ3M7Ci0Jc3RydWN0IGdlbl9wb29sX2xpbmsgKmggPSBwb29scC0+aDsKKwlzdHJ1Y3QgZ2VuX3Bvb2xfY2h1bmsgKmNodW5rOworCWludCBuYml0cyA9IHNpemUgPj4gcG9vbC0+bWluX2FsbG9jX29yZGVyOworCWludCBuYnl0ZXMgPSBzaXplb2Yoc3RydWN0IGdlbl9wb29sX2NodW5rKSArCisJCQkJKG5iaXRzICsgQklUU19QRVJfQllURSAtIDEpIC8gQklUU19QRVJfQllURTsKIAotCW1heF9jaHVua19zaXplID0gMSA8PCBwb29scC0+bWF4X2NodW5rX3NoaWZ0OworCWNodW5rID0ga21hbGxvY19ub2RlKG5ieXRlcywgR0ZQX0tFUk5FTCwgbmlkKTsKKwlpZiAodW5saWtlbHkoY2h1bmsgPT0gTlVMTCkpCisJCXJldHVybiAtMTsKIAotCWlmIChzaXplID4gbWF4X2NodW5rX3NpemUpCisJbWVtc2V0KGNodW5rLCAwLCBuYnl0ZXMpOworCXNwaW5fbG9ja19pbml0KCZjaHVuay0+bG9jayk7CisJY2h1bmstPnN0YXJ0X2FkZHIgPSBhZGRyOworCWNodW5rLT5lbmRfYWRkciA9IGFkZHIgKyBzaXplOworCisJd3JpdGVfbG9jaygmcG9vbC0+bG9jayk7CisJbGlzdF9hZGQoJmNodW5rLT5uZXh0X2NodW5rLCAmcG9vbC0+Y2h1bmtzKTsKKwl3cml0ZV91bmxvY2soJnBvb2wtPmxvY2spOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGdlbl9wb29sX2FkZCk7CisKKworLyoKKyAqIEFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLgorICogVXNlcyBhIGZpcnN0LWZpdCBhbGdvcml0aG0uCisgKgorICogQHBvb2w6IHBvb2wgdG8gYWxsb2NhdGUgZnJvbQorICogQHNpemU6IG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZSBmcm9tIHRoZSBwb29sCisgKi8KK3Vuc2lnbmVkIGxvbmcgZ2VuX3Bvb2xfYWxsb2Moc3RydWN0IGdlbl9wb29sICpwb29sLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpfY2h1bms7CisJc3RydWN0IGdlbl9wb29sX2NodW5rICpjaHVuazsKKwl1bnNpZ25lZCBsb25nIGFkZHIsIGZsYWdzOworCWludCBvcmRlciA9IHBvb2wtPm1pbl9hbGxvY19vcmRlcjsKKwlpbnQgbmJpdHMsIGJpdCwgc3RhcnRfYml0LCBlbmRfYml0OworCisJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlzaXplID0gbWF4KHNpemUsIDEgPDwgQUxMT0NfTUlOX1NISUZUKTsKLQlpID0gZmxzKHNpemUgLSAxKTsKLQlzID0gMSA8PCBpOwotCWogPSBpIC09IEFMTE9DX01JTl9TSElGVDsKKwluYml0cyA9IChzaXplICsgKDFVTCA8PCBvcmRlcikgLSAxKSA+PiBvcmRlcjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZwb29scC0+bG9jaywgZmxhZ3MpOwotCXdoaWxlICghaFtqXS5uZXh0KSB7Ci0JCWlmIChzID09IG1heF9jaHVua19zaXplKSB7Ci0JCQlzdHJ1Y3QgZ2VuX3Bvb2xfbGluayAqcHRyOwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbHAtPmxvY2ssIGZsYWdzKTsKLQkJCXB0ciA9IChzdHJ1Y3QgZ2VuX3Bvb2xfbGluayAqKXBvb2xwLT5nZXRfbmV3X2NodW5rKHBvb2xwKTsKLQkJCXNwaW5fbG9ja19pcnFzYXZlKCZwb29scC0+bG9jaywgZmxhZ3MpOwotCQkJaFtqXS5uZXh0ID0gcHRyOwotCQkJaWYgKGhbal0ubmV4dCkKLQkJCQloW2pdLm5leHQtPm5leHQgPSBOVUxMOwotCQkJYnJlYWs7CisJcmVhZF9sb2NrKCZwb29sLT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoKF9jaHVuaywgJnBvb2wtPmNodW5rcykgeworCQljaHVuayA9IGxpc3RfZW50cnkoX2NodW5rLCBzdHJ1Y3QgZ2VuX3Bvb2xfY2h1bmssIG5leHRfY2h1bmspOworCisJCWVuZF9iaXQgPSAoY2h1bmstPmVuZF9hZGRyIC0gY2h1bmstPnN0YXJ0X2FkZHIpID4+IG9yZGVyOworCQllbmRfYml0IC09IG5iaXRzICsgMTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmY2h1bmstPmxvY2ssIGZsYWdzKTsKKwkJYml0ID0gLTE7CisJCXdoaWxlIChiaXQgKyAxIDwgZW5kX2JpdCkgeworCQkJYml0ID0gZmluZF9uZXh0X3plcm9fYml0KGNodW5rLT5iaXRzLCBlbmRfYml0LCBiaXQgKyAxKTsKKwkJCWlmIChiaXQgPj0gZW5kX2JpdCkKKwkJCQlicmVhazsKKworCQkJc3RhcnRfYml0ID0gYml0OworCQkJaWYgKG5iaXRzID4gMSkgeworCQkJCWJpdCA9IGZpbmRfbmV4dF9iaXQoY2h1bmstPmJpdHMsIGJpdCArIG5iaXRzLAorCQkJCQkJCWJpdCArIDEpOworCQkJCWlmIChiaXQgLSBzdGFydF9iaXQgPCBuYml0cykKKwkJCQkJY29udGludWU7CisJCQl9CisKKwkJCWFkZHIgPSBjaHVuay0+c3RhcnRfYWRkciArCisJCQkJCSAgICAoKHVuc2lnbmVkIGxvbmcpc3RhcnRfYml0IDw8IG9yZGVyKTsKKwkJCXdoaWxlIChuYml0cy0tKQorCQkJCV9fc2V0X2JpdChzdGFydF9iaXQrKywgJmNodW5rLT5iaXRzKTsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNodW5rLT5sb2NrLCBmbGFncyk7CisJCQlyZWFkX3VubG9jaygmcG9vbC0+bG9jayk7CisJCQlyZXR1cm4gYWRkcjsKIAkJfQotCQlqKys7Ci0JCXMgPDw9IDE7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNodW5rLT5sb2NrLCBmbGFncyk7CiAJfQotCWEgPSAodW5zaWduZWQgbG9uZykgaFtqXS5uZXh0OwotCWlmIChhKSB7Ci0JCWhbal0ubmV4dCA9IGhbal0ubmV4dC0+bmV4dDsKLQkJLyoKLQkJICogVGhpcyBzaG91bGQgYmUgc3BsaXQgaW50byBhIHNlcGVyYXRlIGZ1bmN0aW9uIGRvaW5nCi0JCSAqIHRoZSBjaHVuayBzcGxpdCBpbiBvcmRlciB0byBzdXBwb3J0IGN1c3RvbQotCQkgKiBoYW5kbGluZyBtZW1vcnkgbm90IHBoeXNpY2FsbHkgYWNjZXNzaWJsZSBieSBob3N0Ci0JCSAqLwotCQl3aGlsZSAoaiA+IGkpIHsKLQkJCWogLT0gMTsKLQkJCXMgPj49IDE7Ci0JCQloW2pdLm5leHQgPSAoc3RydWN0IGdlbl9wb29sX2xpbmsgKikgKGEgKyBzKTsKLQkJCWhbal0ubmV4dC0+bmV4dCA9IE5VTEw7Ci0JCX0KLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbHAtPmxvY2ssIGZsYWdzKTsKLQlyZXR1cm4gYTsKKwlyZWFkX3VubG9jaygmcG9vbC0+bG9jayk7CisJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKGdlbl9wb29sX2FsbG9jKTsKIAogCiAvKgotICogIENvdW50ZXItcGFydCBvZiB0aGUgZ2VuZXJpYyBhbGxvY2F0b3IuCisgKiBGcmVlIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGJhY2sgdG8gdGhlIHNwZWNpZmllZCBwb29sLgorICoKKyAqIEBwb29sOiBwb29sIHRvIGZyZWUgdG8KKyAqIEBhZGRyOiBzdGFydGluZyBhZGRyZXNzIG9mIG1lbW9yeSB0byBmcmVlIGJhY2sgdG8gcG9vbAorICogQHNpemU6IHNpemUgaW4gYnl0ZXMgb2YgbWVtb3J5IHRvIGZyZWUKICAqLwotdm9pZCBnZW5fcG9vbF9mcmVlKHN0cnVjdCBnZW5fcG9vbCAqcG9vbHAsIHVuc2lnbmVkIGxvbmcgcHRyLCBpbnQgc2l6ZSkKK3ZvaWQgZ2VuX3Bvb2xfZnJlZShzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2wsIHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZV90IHNpemUpCiB7Ci0Jc3RydWN0IGdlbl9wb29sX2xpbmsgKnE7Ci0Jc3RydWN0IGdlbl9wb29sX2xpbmsgKmggPSBwb29scC0+aDsKLQl1bnNpZ25lZCBsb25nIGEsIGIsIGZsYWdzOwotCWludCBpLCBzLCBtYXhfY2h1bmtfc2l6ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpfY2h1bms7CisJc3RydWN0IGdlbl9wb29sX2NodW5rICpjaHVuazsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBvcmRlciA9IHBvb2wtPm1pbl9hbGxvY19vcmRlcjsKKwlpbnQgYml0LCBuYml0czsKIAotCW1heF9jaHVua19zaXplID0gMSA8PCBwb29scC0+bWF4X2NodW5rX3NoaWZ0OworCW5iaXRzID0gKHNpemUgKyAoMVVMIDw8IG9yZGVyKSAtIDEpID4+IG9yZGVyOwogCi0JaWYgKHNpemUgPiBtYXhfY2h1bmtfc2l6ZSkKLQkJcmV0dXJuOworCXJlYWRfbG9jaygmcG9vbC0+bG9jayk7CisJbGlzdF9mb3JfZWFjaChfY2h1bmssICZwb29sLT5jaHVua3MpIHsKKwkJY2h1bmsgPSBsaXN0X2VudHJ5KF9jaHVuaywgc3RydWN0IGdlbl9wb29sX2NodW5rLCBuZXh0X2NodW5rKTsKIAotCXNpemUgPSBtYXgoc2l6ZSwgMSA8PCBBTExPQ19NSU5fU0hJRlQpOwotCWkgPSBmbHMoc2l6ZSAtIDEpOwotCXMgPSAxIDw8IGk7Ci0JaSAtPSBBTExPQ19NSU5fU0hJRlQ7Ci0KLQlhID0gcHRyOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnBvb2xwLT5sb2NrLCBmbGFncyk7Ci0Jd2hpbGUgKDEpIHsKLQkJaWYgKHMgPT0gbWF4X2NodW5rX3NpemUpIHsKLQkJCSgoc3RydWN0IGdlbl9wb29sX2xpbmsgKilhKS0+bmV4dCA9IGhbaV0ubmV4dDsKLQkJCWhbaV0ubmV4dCA9IChzdHJ1Y3QgZ2VuX3Bvb2xfbGluayAqKWE7CisJCWlmIChhZGRyID49IGNodW5rLT5zdGFydF9hZGRyICYmIGFkZHIgPCBjaHVuay0+ZW5kX2FkZHIpIHsKKwkJCUJVR19PTihhZGRyICsgc2l6ZSA+IGNodW5rLT5lbmRfYWRkcik7CisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmY2h1bmstPmxvY2ssIGZsYWdzKTsKKwkJCWJpdCA9IChhZGRyIC0gY2h1bmstPnN0YXJ0X2FkZHIpID4+IG9yZGVyOworCQkJd2hpbGUgKG5iaXRzLS0pCisJCQkJX19jbGVhcl9iaXQoYml0KyssICZjaHVuay0+Yml0cyk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaHVuay0+bG9jaywgZmxhZ3MpOwogCQkJYnJlYWs7CiAJCX0KLQkJYiA9IGEgXiBzOwotCQlxID0gJmhbaV07Ci0KLQkJd2hpbGUgKHEtPm5leHQgJiYgcS0+bmV4dCAhPSAoc3RydWN0IGdlbl9wb29sX2xpbmsgKiliKQotCQkJcSA9IHEtPm5leHQ7Ci0KLQkJaWYgKCFxLT5uZXh0KSB7Ci0JCQkoKHN0cnVjdCBnZW5fcG9vbF9saW5rICopYSktPm5leHQgPSBoW2ldLm5leHQ7Ci0JCQloW2ldLm5leHQgPSAoc3RydWN0IGdlbl9wb29sX2xpbmsgKilhOwotCQkJYnJlYWs7Ci0JCX0KLQkJcS0+bmV4dCA9IHEtPm5leHQtPm5leHQ7Ci0JCWEgPSBhICYgYjsKLQkJcyA8PD0gMTsKLQkJaSsrOwogCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwb29scC0+bG9jaywgZmxhZ3MpOworCUJVR19PTihuYml0cyA+IDApOworCXJlYWRfdW5sb2NrKCZwb29sLT5sb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0woZ2VuX3Bvb2xfZnJlZSk7CmRpZmYgLS1naXQgYS9saWIvaW9tYXBfY29weS5jIGIvbGliL2lvbWFwX2NvcHkuYwppbmRleCAzNTEwNDVmLi44NjRmYzVlIDEwMDY0NAotLS0gYS9saWIvaW9tYXBfY29weS5jCisrKyBiL2xpYi9pb21hcF9jb3B5LmMKQEAgLTQwLDMgKzQwLDMxIEBACiAJCV9fcmF3X3dyaXRlbCgqc3JjKyssIGRzdCsrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKF9faW93cml0ZTMyX2NvcHkpOworCisvKioKKyAqIF9faW93cml0ZTY0X2NvcHkgLSBjb3B5IGRhdGEgdG8gTU1JTyBzcGFjZSwgaW4gNjQtYml0IG9yIDMyLWJpdCB1bml0cworICogQHRvOiBkZXN0aW5hdGlvbiwgaW4gTU1JTyBzcGFjZSAobXVzdCBiZSA2NC1iaXQgYWxpZ25lZCkKKyAqIEBmcm9tOiBzb3VyY2UgKG11c3QgYmUgNjQtYml0IGFsaWduZWQpCisgKiBAY291bnQ6IG51bWJlciBvZiA2NC1iaXQgcXVhbnRpdGllcyB0byBjb3B5CisgKgorICogQ29weSBkYXRhIGZyb20ga2VybmVsIHNwYWNlIHRvIE1NSU8gc3BhY2UsIGluIHVuaXRzIG9mIDMyIG9yIDY0IGJpdHMgYXQgYQorICogdGltZS4gIE9yZGVyIG9mIGFjY2VzcyBpcyBub3QgZ3VhcmFudGVlZCwgbm9yIGlzIGEgbWVtb3J5IGJhcnJpZXIKKyAqIHBlcmZvcm1lZCBhZnRlcndhcmRzLgorICovCit2b2lkIF9fYXR0cmlidXRlX18oKHdlYWspKSBfX2lvd3JpdGU2NF9jb3B5KHZvaWQgX19pb21lbSAqdG8sCisJCQkJCSAgICBjb25zdCB2b2lkICpmcm9tLAorCQkJCQkgICAgc2l6ZV90IGNvdW50KQoreworI2lmZGVmIENPTkZJR182NEJJVAorCXU2NCBfX2lvbWVtICpkc3QgPSB0bzsKKwljb25zdCB1NjQgKnNyYyA9IGZyb207CisJY29uc3QgdTY0ICplbmQgPSBzcmMgKyBjb3VudDsKKworCXdoaWxlIChzcmMgPCBlbmQpCisJCV9fcmF3X3dyaXRlcSgqc3JjKyssIGRzdCsrKTsKKyNlbHNlCisJX19pb3dyaXRlMzJfY29weSh0bywgZnJvbSwgY291bnQgKiAyKTsKKyNlbmRpZgorfQorCitFWFBPUlRfU1lNQk9MX0dQTChfX2lvd3JpdGU2NF9jb3B5KTsKZGlmZiAtLWdpdCBhL2xpYi9rb2JqZWN0LmMgYi9saWIva29iamVjdC5jCmluZGV4IDY4N2FiNDEuLjhlN2M3MTkgMTAwNjQ0Ci0tLSBhL2xpYi9rb2JqZWN0LmMKKysrIGIvbGliL2tvYmplY3QuYwpAQCAtMTk4LDE0ICsxOTgsMTQgQEAKIAogCQkvKiBiZSBub2lzeSBvbiBlcnJvciBpc3N1ZXMgKi8KIAkJaWYgKGVycm9yID09IC1FRVhJU1QpCi0JCQlwcl9kZWJ1Zygia29iamVjdF9hZGQgZmFpbGVkIGZvciAlcyB3aXRoIC1FRVhJU1QsICIKKwkJCXByaW50aygia29iamVjdF9hZGQgZmFpbGVkIGZvciAlcyB3aXRoIC1FRVhJU1QsICIKIAkJCSAgICAgICAiZG9uJ3QgdHJ5IHRvIHJlZ2lzdGVyIHRoaW5ncyB3aXRoIHRoZSAiCiAJCQkgICAgICAgInNhbWUgbmFtZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4iLAogCQkJICAgICAgIGtvYmplY3RfbmFtZShrb2JqKSk7CiAJCWVsc2UKLQkJCXByX2RlYnVnKCJrb2JqZWN0X2FkZCBmYWlsZWQgZm9yICVzICglZClcbiIsCisJCQlwcmludGsoImtvYmplY3RfYWRkIGZhaWxlZCBmb3IgJXMgKCVkKVxuIiwKIAkJCSAgICAgICBrb2JqZWN0X25hbWUoa29iaiksIGVycm9yKTsKLQkJLyogZHVtcF9zdGFjaygpOyAqLworCQkgZHVtcF9zdGFjaygpOwogCX0KIAogCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL2xpYi9wZXJjcHVfY291bnRlci5jIGIvbGliL3BlcmNwdV9jb3VudGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwNDQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9wZXJjcHVfY291bnRlci5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBGYXN0IGJhdGNoaW5nIHBlcmNwdSBjb3VudGVycy4KKyAqLworCisjaW5jbHVkZSA8bGludXgvcGVyY3B1X2NvdW50ZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKwordm9pZCBwZXJjcHVfY291bnRlcl9tb2Qoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHMzMiBhbW91bnQpCit7CisJbG9uZyBjb3VudDsKKwlzMzIgKnBjb3VudDsKKwlpbnQgY3B1ID0gZ2V0X2NwdSgpOworCisJcGNvdW50ID0gcGVyX2NwdV9wdHIoZmJjLT5jb3VudGVycywgY3B1KTsKKwljb3VudCA9ICpwY291bnQgKyBhbW91bnQ7CisJaWYgKGNvdW50ID49IEZCQ19CQVRDSCB8fCBjb3VudCA8PSAtRkJDX0JBVENIKSB7CisJCXNwaW5fbG9jaygmZmJjLT5sb2NrKTsKKwkJZmJjLT5jb3VudCArPSBjb3VudDsKKwkJKnBjb3VudCA9IDA7CisJCXNwaW5fdW5sb2NrKCZmYmMtPmxvY2spOworCX0gZWxzZSB7CisJCSpwY291bnQgPSBjb3VudDsKKwl9CisJcHV0X2NwdSgpOworfQorRVhQT1JUX1NZTUJPTChwZXJjcHVfY291bnRlcl9tb2QpOworCisvKgorICogQWRkIHVwIGFsbCB0aGUgcGVyLWNwdSBjb3VudHMsIHJldHVybiB0aGUgcmVzdWx0LiAgVGhpcyBpcyBhIG1vcmUgYWNjdXJhdGUKKyAqIGJ1dCBtdWNoIHNsb3dlciB2ZXJzaW9uIG9mIHBlcmNwdV9jb3VudGVyX3JlYWRfcG9zaXRpdmUoKQorICovCitzNjQgcGVyY3B1X2NvdW50ZXJfc3VtKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQoreworCXM2NCByZXQ7CisJaW50IGNwdTsKKworCXNwaW5fbG9jaygmZmJjLT5sb2NrKTsKKwlyZXQgPSBmYmMtPmNvdW50OworCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKKwkJczMyICpwY291bnQgPSBwZXJfY3B1X3B0cihmYmMtPmNvdW50ZXJzLCBjcHUpOworCQlyZXQgKz0gKnBjb3VudDsKKwl9CisJc3Bpbl91bmxvY2soJmZiYy0+bG9jayk7CisJcmV0dXJuIHJldCA8IDAgPyAwIDogcmV0OworfQorRVhQT1JUX1NZTUJPTChwZXJjcHVfY291bnRlcl9zdW0pOwpkaWZmIC0tZ2l0IGEvbGliL3JhZGl4LXRyZWUuYyBiL2xpYi9yYWRpeC10cmVlLmMKaW5kZXggNzA5N2JiMi4uYjMyZWZhZSAxMDA2NDQKLS0tIGEvbGliL3JhZGl4LXRyZWUuYworKysgYi9saWIvcmFkaXgtdHJlZS5jCkBAIC0zMyw3ICszMyw3IEBACiAKIAogI2lmZGVmIF9fS0VSTkVMX18KLSNkZWZpbmUgUkFESVhfVFJFRV9NQVBfU0hJRlQJNgorI2RlZmluZSBSQURJWF9UUkVFX01BUF9TSElGVAkoQ09ORklHX0JBU0VfU01BTEwgPyA0IDogNikKICNlbHNlCiAjZGVmaW5lIFJBRElYX1RSRUVfTUFQX1NISUZUCTMJLyogRm9yIG1vcmUgc3RyZXNzZnVsIHRlc3RpbmcgKi8KICNlbmRpZgpAQCAtNzQsNiArNzQsMTEgQEAKIH07CiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcmFkaXhfdHJlZV9wcmVsb2FkLCByYWRpeF90cmVlX3ByZWxvYWRzKSA9IHsgMCwgfTsKIAorc3RhdGljIGlubGluZSBnZnBfdCByb290X2dmcF9tYXNrKHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QpCit7CisJcmV0dXJuIHJvb3QtPmdmcF9tYXNrICYgX19HRlBfQklUU19NQVNLOworfQorCiAvKgogICogVGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlciBoYXMgcGVyZm9ybWVkIGFwcHJvcHJpYXRlIHByZWFsbG9jYXRpb24sIGFuZAogICogdGhhdCB0aGUgY2FsbGVyIGhhcyBwaW5uZWQgdGhpcyB0aHJlYWQgb2YgY29udHJvbCB0byB0aGUgY3VycmVudCBDUFUuCkBAIC04Miw5ICs4NywxMCBAQAogcmFkaXhfdHJlZV9ub2RlX2FsbG9jKHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QpCiB7CiAJc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqcmV0OworCWdmcF90IGdmcF9tYXNrID0gcm9vdF9nZnBfbWFzayhyb290KTsKIAotCXJldCA9IGttZW1fY2FjaGVfYWxsb2MocmFkaXhfdHJlZV9ub2RlX2NhY2hlcCwgcm9vdC0+Z2ZwX21hc2spOwotCWlmIChyZXQgPT0gTlVMTCAmJiAhKHJvb3QtPmdmcF9tYXNrICYgX19HRlBfV0FJVCkpIHsKKwlyZXQgPSBrbWVtX2NhY2hlX2FsbG9jKHJhZGl4X3RyZWVfbm9kZV9jYWNoZXAsIGdmcF9tYXNrKTsKKwlpZiAocmV0ID09IE5VTEwgJiYgIShnZnBfbWFzayAmIF9fR0ZQX1dBSVQpKSB7CiAJCXN0cnVjdCByYWRpeF90cmVlX3ByZWxvYWQgKnJ0cDsKIAogCQlydHAgPSAmX19nZXRfY3B1X3ZhcihyYWRpeF90cmVlX3ByZWxvYWRzKTsKQEAgLTE1Miw2ICsxNTgsMjcgQEAKIAlyZXR1cm4gdGVzdF9iaXQob2Zmc2V0LCBub2RlLT50YWdzW3RhZ10pOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgcm9vdF90YWdfc2V0KHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsIHVuc2lnbmVkIGludCB0YWcpCit7CisJcm9vdC0+Z2ZwX21hc2sgfD0gKDEgPDwgKHRhZyArIF9fR0ZQX0JJVFNfU0hJRlQpKTsKK30KKworCitzdGF0aWMgaW5saW5lIHZvaWQgcm9vdF90YWdfY2xlYXIoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwgdW5zaWduZWQgaW50IHRhZykKK3sKKwlyb290LT5nZnBfbWFzayAmPSB+KDEgPDwgKHRhZyArIF9fR0ZQX0JJVFNfU0hJRlQpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJvb3RfdGFnX2NsZWFyX2FsbChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290KQoreworCXJvb3QtPmdmcF9tYXNrICY9IF9fR0ZQX0JJVFNfTUFTSzsKK30KKworc3RhdGljIGlubGluZSBpbnQgcm9vdF90YWdfZ2V0KHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsIHVuc2lnbmVkIGludCB0YWcpCit7CisJcmV0dXJuIHJvb3QtPmdmcF9tYXNrICYgKDEgPDwgKHRhZyArIF9fR0ZQX0JJVFNfU0hJRlQpKTsKK30KKwogLyoKICAqIFJldHVybnMgMSBpZiBhbnkgc2xvdCBpbiB0aGUgbm9kZSBoYXMgdGhpcyB0YWcgc2V0LgogICogT3RoZXJ3aXNlIHJldHVybnMgMC4KQEAgLTE4Miw3ICsyMDksNiBAQAogewogCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGU7CiAJdW5zaWduZWQgaW50IGhlaWdodDsKLQljaGFyIHRhZ3NbUkFESVhfVFJFRV9NQVhfVEFHU107CiAJaW50IHRhZzsKIAogCS8qIEZpZ3VyZSBvdXQgd2hhdCB0aGUgaGVpZ2h0IHNob3VsZCBiZS4gICovCkBAIC0xOTUsMTYgKzIyMSw2IEBACiAJCWdvdG8gb3V0OwogCX0KIAotCS8qCi0JICogUHJlcGFyZSB0aGUgdGFnIHN0YXR1cyBvZiB0aGUgdG9wLWxldmVsIG5vZGUgZm9yIHByb3BhZ2F0aW9uCi0JICogaW50byB0aGUgbmV3bHktcHVzaGVkIHRvcC1sZXZlbCBub2RlKHMpCi0JICovCi0JZm9yICh0YWcgPSAwOyB0YWcgPCBSQURJWF9UUkVFX01BWF9UQUdTOyB0YWcrKykgewotCQl0YWdzW3RhZ10gPSAwOwotCQlpZiAoYW55X3RhZ19zZXQocm9vdC0+cm5vZGUsIHRhZykpCi0JCQl0YWdzW3RhZ10gPSAxOwotCX0KLQogCWRvIHsKIAkJaWYgKCEobm9kZSA9IHJhZGl4X3RyZWVfbm9kZV9hbGxvYyhyb290KSkpCiAJCQlyZXR1cm4gLUVOT01FTTsKQEAgLTIxNCw3ICsyMzAsNyBAQAogCiAJCS8qIFByb3BhZ2F0ZSB0aGUgYWdncmVnYXRlZCB0YWcgaW5mbyBpbnRvIHRoZSBuZXcgcm9vdCAqLwogCQlmb3IgKHRhZyA9IDA7IHRhZyA8IFJBRElYX1RSRUVfTUFYX1RBR1M7IHRhZysrKSB7Ci0JCQlpZiAodGFnc1t0YWddKQorCQkJaWYgKHJvb3RfdGFnX2dldChyb290LCB0YWcpKQogCQkJCXRhZ19zZXQobm9kZSwgdGFnLCAwKTsKIAkJfQogCkBAIC0yNDMsOCArMjU5LDcgQEAKIAlpbnQgZXJyb3I7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHRyZWUgaXMgaGlnaCBlbm91Z2guICAqLwotCWlmICgoIWluZGV4ICYmICFyb290LT5ybm9kZSkgfHwKLQkJCWluZGV4ID4gcmFkaXhfdHJlZV9tYXhpbmRleChyb290LT5oZWlnaHQpKSB7CisJaWYgKGluZGV4ID4gcmFkaXhfdHJlZV9tYXhpbmRleChyb290LT5oZWlnaHQpKSB7CiAJCWVycm9yID0gcmFkaXhfdHJlZV9leHRlbmQocm9vdCwgaW5kZXgpOwogCQlpZiAoZXJyb3IpCiAJCQlyZXR1cm4gZXJyb3I7CkBAIC0yNTUsNyArMjcwLDcgQEAKIAlzaGlmdCA9IChoZWlnaHQtMSkgKiBSQURJWF9UUkVFX01BUF9TSElGVDsKIAogCW9mZnNldCA9IDA7CQkJLyogdW5pbml0aWFsaXNlZCB2YXIgd2FybmluZyAqLwotCWRvIHsKKwl3aGlsZSAoaGVpZ2h0ID4gMCkgewogCQlpZiAoc2xvdCA9PSBOVUxMKSB7CiAJCQkvKiBIYXZlIHRvIGFkZCBhIGNoaWxkIG5vZGUuICAqLwogCQkJaWYgKCEoc2xvdCA9IHJhZGl4X3RyZWVfbm9kZV9hbGxvYyhyb290KSkpCkBAIC0yNzMsMTYgKzI4OCwyMSBAQAogCQlzbG90ID0gbm9kZS0+c2xvdHNbb2Zmc2V0XTsKIAkJc2hpZnQgLT0gUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAJCWhlaWdodC0tOwotCX0gd2hpbGUgKGhlaWdodCA+IDApOworCX0KIAogCWlmIChzbG90ICE9IE5VTEwpCiAJCXJldHVybiAtRUVYSVNUOwogCi0JQlVHX09OKCFub2RlKTsKLQlub2RlLT5jb3VudCsrOwotCW5vZGUtPnNsb3RzW29mZnNldF0gPSBpdGVtOwotCUJVR19PTih0YWdfZ2V0KG5vZGUsIDAsIG9mZnNldCkpOwotCUJVR19PTih0YWdfZ2V0KG5vZGUsIDEsIG9mZnNldCkpOworCWlmIChub2RlKSB7CisJCW5vZGUtPmNvdW50Kys7CisJCW5vZGUtPnNsb3RzW29mZnNldF0gPSBpdGVtOworCQlCVUdfT04odGFnX2dldChub2RlLCAwLCBvZmZzZXQpKTsKKwkJQlVHX09OKHRhZ19nZXQobm9kZSwgMSwgb2Zmc2V0KSk7CisJfSBlbHNlIHsKKwkJcm9vdC0+cm5vZGUgPSBpdGVtOworCQlCVUdfT04ocm9vdF90YWdfZ2V0KHJvb3QsIDApKTsKKwkJQlVHX09OKHJvb3RfdGFnX2dldChyb290LCAxKSk7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC0yOTUsOSArMzE1LDEzIEBACiAJc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqKnNsb3Q7CiAKIAloZWlnaHQgPSByb290LT5oZWlnaHQ7CisKIAlpZiAoaW5kZXggPiByYWRpeF90cmVlX21heGluZGV4KGhlaWdodCkpCiAJCXJldHVybiBOVUxMOwogCisJaWYgKGhlaWdodCA9PSAwICYmIHJvb3QtPnJub2RlKQorCQlyZXR1cm4gKHZvaWQgKiopJnJvb3QtPnJub2RlOworCiAJc2hpZnQgPSAoaGVpZ2h0LTEpICogUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAJc2xvdCA9ICZyb290LT5ybm9kZTsKIApAQCAtMzY1LDExICszODksMTAgQEAKIAlzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICpzbG90OwogCiAJaGVpZ2h0ID0gcm9vdC0+aGVpZ2h0OwotCWlmIChpbmRleCA+IHJhZGl4X3RyZWVfbWF4aW5kZXgoaGVpZ2h0KSkKLQkJcmV0dXJuIE5VTEw7CisJQlVHX09OKGluZGV4ID4gcmFkaXhfdHJlZV9tYXhpbmRleChoZWlnaHQpKTsKIAotCXNoaWZ0ID0gKGhlaWdodCAtIDEpICogUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAJc2xvdCA9IHJvb3QtPnJub2RlOworCXNoaWZ0ID0gKGhlaWdodCAtIDEpICogUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAKIAl3aGlsZSAoaGVpZ2h0ID4gMCkgewogCQlpbnQgb2Zmc2V0OwpAQCAtMzgzLDYgKzQwNiwxMCBAQAogCQloZWlnaHQtLTsKIAl9CiAKKwkvKiBzZXQgdGhlIHJvb3QncyB0YWcgYml0ICovCisJaWYgKHNsb3QgJiYgIXJvb3RfdGFnX2dldChyb290LCB0YWcpKQorCQlyb290X3RhZ19zZXQocm9vdCwgdGFnKTsKKwogCXJldHVybiBzbG90OwogfQogRVhQT1JUX1NZTUJPTChyYWRpeF90cmVlX3RhZ19zZXQpOwpAQCAtNDA1LDkgKzQzMiw4IEBACiAJCQl1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBpbnQgdGFnKQogewogCXN0cnVjdCByYWRpeF90cmVlX3BhdGggcGF0aFtSQURJWF9UUkVFX01BWF9QQVRIXSwgKnBhdGhwID0gcGF0aDsKLQlzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICpzbG90OworCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKnNsb3QgPSBOVUxMOwogCXVuc2lnbmVkIGludCBoZWlnaHQsIHNoaWZ0OwotCXZvaWQgKnJldCA9IE5VTEw7CiAKIAloZWlnaHQgPSByb290LT5oZWlnaHQ7CiAJaWYgKGluZGV4ID4gcmFkaXhfdHJlZV9tYXhpbmRleChoZWlnaHQpKQpAQCAtNDMyLDIwICs0NTgsMjQgQEAKIAkJaGVpZ2h0LS07CiAJfQogCi0JcmV0ID0gc2xvdDsKLQlpZiAocmV0ID09IE5VTEwpCisJaWYgKHNsb3QgPT0gTlVMTCkKIAkJZ290byBvdXQ7CiAKLQlkbyB7CisJd2hpbGUgKHBhdGhwLT5ub2RlKSB7CiAJCWlmICghdGFnX2dldChwYXRocC0+bm9kZSwgdGFnLCBwYXRocC0+b2Zmc2V0KSkKIAkJCWdvdG8gb3V0OwogCQl0YWdfY2xlYXIocGF0aHAtPm5vZGUsIHRhZywgcGF0aHAtPm9mZnNldCk7CiAJCWlmIChhbnlfdGFnX3NldChwYXRocC0+bm9kZSwgdGFnKSkKIAkJCWdvdG8gb3V0OwogCQlwYXRocC0tOwotCX0gd2hpbGUgKHBhdGhwLT5ub2RlKTsKKwl9CisKKwkvKiBjbGVhciB0aGUgcm9vdCdzIHRhZyBiaXQgKi8KKwlpZiAocm9vdF90YWdfZ2V0KHJvb3QsIHRhZykpCisJCXJvb3RfdGFnX2NsZWFyKHJvb3QsIHRhZyk7CisKIG91dDoKLQlyZXR1cm4gcmV0OworCXJldHVybiBzbG90OwogfQogRVhQT1JUX1NZTUJPTChyYWRpeF90cmVlX3RhZ19jbGVhcik7CiAKQEAgLTQ1OCw5ICs0ODgsOCBAQAogICoKICAqIFJldHVybiB2YWx1ZXM6CiAgKgotICogIDA6IHRhZyBub3QgcHJlc2VudAotICogIDE6IHRhZyBwcmVzZW50LCBzZXQKLSAqIC0xOiB0YWcgcHJlc2VudCwgdW5zZXQKKyAqICAwOiB0YWcgbm90IHByZXNlbnQgb3Igbm90IHNldAorICogIDE6IHRhZyBzZXQKICAqLwogaW50IHJhZGl4X3RyZWVfdGFnX2dldChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LAogCQkJdW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgaW50IHRhZykKQEAgLTQ3Myw2ICs1MDIsMTMgQEAKIAlpZiAoaW5kZXggPiByYWRpeF90cmVlX21heGluZGV4KGhlaWdodCkpCiAJCXJldHVybiAwOwogCisJLyogY2hlY2sgdGhlIHJvb3QncyB0YWcgYml0ICovCisJaWYgKCFyb290X3RhZ19nZXQocm9vdCwgdGFnKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaGVpZ2h0ID09IDApCisJCXJldHVybiAxOworCiAJc2hpZnQgPSAoaGVpZ2h0IC0gMSkgKiBSQURJWF9UUkVFX01BUF9TSElGVDsKIAlzbG90ID0gcm9vdC0+cm5vZGU7CiAKQEAgLTQ5NCw3ICs1MzAsNyBAQAogCQkJaW50IHJldCA9IHRhZ19nZXQoc2xvdCwgdGFnLCBvZmZzZXQpOwogCiAJCQlCVUdfT04ocmV0ICYmIHNhd191bnNldF90YWcpOwotCQkJcmV0dXJuIHJldCA/IDEgOiAtMTsKKwkJCXJldHVybiByZXQ7CiAJCX0KIAkJc2xvdCA9IHNsb3QtPnNsb3RzW29mZnNldF07CiAJCXNoaWZ0IC09IFJBRElYX1RSRUVfTUFQX1NISUZUOwpAQCAtNTE0LDggKzU1MCwxMSBAQAogCXVuc2lnbmVkIGxvbmcgaTsKIAogCWhlaWdodCA9IHJvb3QtPmhlaWdodDsKLQlpZiAoaGVpZ2h0ID09IDApCisJaWYgKGhlaWdodCA9PSAwKSB7CisJCWlmIChyb290LT5ybm9kZSAmJiBpbmRleCA9PSAwKQorCQkJcmVzdWx0c1tucl9mb3VuZCsrXSA9IHJvb3QtPnJub2RlOwogCQlnb3RvIG91dDsKKwl9CiAKIAlzaGlmdCA9IChoZWlnaHQtMSkgKiBSQURJWF9UUkVFX01BUF9TSElGVDsKIAlzbG90ID0gcm9vdC0+cm5vZGU7CkBAIC02MDMsMTAgKzY0MiwxNiBAQAogCXVuc2lnbmVkIGludCBoZWlnaHQgPSByb290LT5oZWlnaHQ7CiAJc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqc2xvdDsKIAorCWlmIChoZWlnaHQgPT0gMCkgeworCQlpZiAocm9vdC0+cm5vZGUgJiYgaW5kZXggPT0gMCkKKwkJCXJlc3VsdHNbbnJfZm91bmQrK10gPSByb290LT5ybm9kZTsKKwkJZ290byBvdXQ7CisJfQorCiAJc2hpZnQgPSAoaGVpZ2h0IC0gMSkgKiBSQURJWF9UUkVFX01BUF9TSElGVDsKIAlzbG90ID0gcm9vdC0+cm5vZGU7CiAKLQl3aGlsZSAoaGVpZ2h0ID4gMCkgeworCWRvIHsKIAkJdW5zaWduZWQgbG9uZyBpID0gKGluZGV4ID4+IHNoaWZ0KSAmIFJBRElYX1RSRUVfTUFQX01BU0s7CiAKIAkJZm9yICggOyBpIDwgUkFESVhfVFJFRV9NQVBfU0laRTsgaSsrKSB7CkBAIC02MzcsNyArNjgyLDcgQEAKIAkJfQogCQlzaGlmdCAtPSBSQURJWF9UUkVFX01BUF9TSElGVDsKIAkJc2xvdCA9IHNsb3QtPnNsb3RzW2ldOwotCX0KKwl9IHdoaWxlIChoZWlnaHQgPiAwKTsKIG91dDoKIAkqbmV4dF9pbmRleCA9IGluZGV4OwogCXJldHVybiBucl9mb3VuZDsKQEAgLTY2NSw2ICs3MTAsMTAgQEAKIAl1bnNpZ25lZCBsb25nIGN1cl9pbmRleCA9IGZpcnN0X2luZGV4OwogCXVuc2lnbmVkIGludCByZXQgPSAwOwogCisJLyogY2hlY2sgdGhlIHJvb3QncyB0YWcgYml0ICovCisJaWYgKCFyb290X3RhZ19nZXQocm9vdCwgdGFnKSkKKwkJcmV0dXJuIDA7CisKIAl3aGlsZSAocmV0IDwgbWF4X2l0ZW1zKSB7CiAJCXVuc2lnbmVkIGludCBucl9mb3VuZDsKIAkJdW5zaWduZWQgbG9uZyBuZXh0X2luZGV4OwkvKiBJbmRleCBvZiBuZXh0IHNlYXJjaCAqLwpAQCAtNjg5LDcgKzczOCw3IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgcmFkaXhfdHJlZV9zaHJpbmsoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCkKIHsKIAkvKiB0cnkgdG8gc2hyaW5rIHRyZWUgaGVpZ2h0ICovCi0Jd2hpbGUgKHJvb3QtPmhlaWdodCA+IDEgJiYKKwl3aGlsZSAocm9vdC0+aGVpZ2h0ID4gMCAmJgogCQkJcm9vdC0+cm5vZGUtPmNvdW50ID09IDEgJiYKIAkJCXJvb3QtPnJub2RlLT5zbG90c1swXSkgewogCQlzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICp0b19mcmVlID0gcm9vdC0+cm5vZGU7CkBAIC03MTcsMTIgKzc2Niw4IEBACiB2b2lkICpyYWRpeF90cmVlX2RlbGV0ZShzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4KQogewogCXN0cnVjdCByYWRpeF90cmVlX3BhdGggcGF0aFtSQURJWF9UUkVFX01BWF9QQVRIXSwgKnBhdGhwID0gcGF0aDsKLQlzdHJ1Y3QgcmFkaXhfdHJlZV9wYXRoICpvcmlnX3BhdGhwOwotCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKnNsb3Q7CisJc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqc2xvdCA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGhlaWdodCwgc2hpZnQ7Ci0Jdm9pZCAqcmV0ID0gTlVMTDsKLQljaGFyIHRhZ3NbUkFESVhfVFJFRV9NQVhfVEFHU107Ci0JaW50IG5yX2NsZWFyZWRfdGFnczsKIAlpbnQgdGFnOwogCWludCBvZmZzZXQ7CiAKQEAgLTczMCwxMSArNzc1LDE3IEBACiAJaWYgKGluZGV4ID4gcmFkaXhfdHJlZV9tYXhpbmRleChoZWlnaHQpKQogCQlnb3RvIG91dDsKIAorCXNsb3QgPSByb290LT5ybm9kZTsKKwlpZiAoaGVpZ2h0ID09IDAgJiYgcm9vdC0+cm5vZGUpIHsKKwkJcm9vdF90YWdfY2xlYXJfYWxsKHJvb3QpOworCQlyb290LT5ybm9kZSA9IE5VTEw7CisJCWdvdG8gb3V0OworCX0KKwogCXNoaWZ0ID0gKGhlaWdodCAtIDEpICogUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAJcGF0aHAtPm5vZGUgPSBOVUxMOwotCXNsb3QgPSByb290LT5ybm9kZTsKIAotCWZvciAoIDsgaGVpZ2h0ID4gMDsgaGVpZ2h0LS0pIHsKKwlkbyB7CiAJCWlmIChzbG90ID09IE5VTEwpCiAJCQlnb3RvIG91dDsKIApAQCAtNzQ0LDQ0ICs3OTUsMjIgQEAKIAkJcGF0aHAtPm5vZGUgPSBzbG90OwogCQlzbG90ID0gc2xvdC0+c2xvdHNbb2Zmc2V0XTsKIAkJc2hpZnQgLT0gUkFESVhfVFJFRV9NQVBfU0hJRlQ7Ci0JfQorCQloZWlnaHQtLTsKKwl9IHdoaWxlIChoZWlnaHQgPiAwKTsKIAotCXJldCA9IHNsb3Q7Ci0JaWYgKHJldCA9PSBOVUxMKQorCWlmIChzbG90ID09IE5VTEwpCiAJCWdvdG8gb3V0OwogCi0Jb3JpZ19wYXRocCA9IHBhdGhwOwotCiAJLyoKIAkgKiBDbGVhciBhbGwgdGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIGp1c3QtZGVsZXRlZCBpdGVtCiAJICovCi0JbnJfY2xlYXJlZF90YWdzID0gMDsKIAlmb3IgKHRhZyA9IDA7IHRhZyA8IFJBRElYX1RSRUVfTUFYX1RBR1M7IHRhZysrKSB7Ci0JCXRhZ3NbdGFnXSA9IDE7Ci0JCWlmICh0YWdfZ2V0KHBhdGhwLT5ub2RlLCB0YWcsIHBhdGhwLT5vZmZzZXQpKSB7Ci0JCQl0YWdfY2xlYXIocGF0aHAtPm5vZGUsIHRhZywgcGF0aHAtPm9mZnNldCk7Ci0JCQlpZiAoIWFueV90YWdfc2V0KHBhdGhwLT5ub2RlLCB0YWcpKSB7Ci0JCQkJdGFnc1t0YWddID0gMDsKLQkJCQlucl9jbGVhcmVkX3RhZ3MrKzsKLQkJCX0KLQkJfQotCX0KLQotCWZvciAocGF0aHAtLTsgbnJfY2xlYXJlZF90YWdzICYmIHBhdGhwLT5ub2RlOyBwYXRocC0tKSB7Ci0JCWZvciAodGFnID0gMDsgdGFnIDwgUkFESVhfVFJFRV9NQVhfVEFHUzsgdGFnKyspIHsKLQkJCWlmICh0YWdzW3RhZ10pCi0JCQkJY29udGludWU7Ci0KLQkJCXRhZ19jbGVhcihwYXRocC0+bm9kZSwgdGFnLCBwYXRocC0+b2Zmc2V0KTsKLQkJCWlmIChhbnlfdGFnX3NldChwYXRocC0+bm9kZSwgdGFnKSkgewotCQkJCXRhZ3NbdGFnXSA9IDE7Ci0JCQkJbnJfY2xlYXJlZF90YWdzLS07Ci0JCQl9Ci0JCX0KKwkJaWYgKHRhZ19nZXQocGF0aHAtPm5vZGUsIHRhZywgcGF0aHAtPm9mZnNldCkpCisJCQlyYWRpeF90cmVlX3RhZ19jbGVhcihyb290LCBpbmRleCwgdGFnKTsKIAl9CiAKIAkvKiBOb3cgZnJlZSB0aGUgbm9kZXMgd2UgZG8gbm90IG5lZWQgYW55bW9yZSAqLwotCWZvciAocGF0aHAgPSBvcmlnX3BhdGhwOyBwYXRocC0+bm9kZTsgcGF0aHAtLSkgeworCXdoaWxlIChwYXRocC0+bm9kZSkgewogCQlwYXRocC0+bm9kZS0+c2xvdHNbcGF0aHAtPm9mZnNldF0gPSBOVUxMOwogCQlwYXRocC0+bm9kZS0+Y291bnQtLTsKIApAQCAtNzkzLDExICs4MjIsMTUgQEAKIAogCQkvKiBOb2RlIHdpdGggemVybyBzbG90cyBpbiB1c2Ugc28gZnJlZSBpdCAqLwogCQlyYWRpeF90cmVlX25vZGVfZnJlZShwYXRocC0+bm9kZSk7CisKKwkJcGF0aHAtLTsKIAl9Ci0Jcm9vdC0+cm5vZGUgPSBOVUxMOworCXJvb3RfdGFnX2NsZWFyX2FsbChyb290KTsKIAlyb290LT5oZWlnaHQgPSAwOworCXJvb3QtPnJub2RlID0gTlVMTDsKKwogb3V0OgotCXJldHVybiByZXQ7CisJcmV0dXJuIHNsb3Q7CiB9CiBFWFBPUlRfU1lNQk9MKHJhZGl4X3RyZWVfZGVsZXRlKTsKIApAQCAtODA4LDExICs4NDEsNyBAQAogICovCiBpbnQgcmFkaXhfdHJlZV90YWdnZWQoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwgdW5zaWduZWQgaW50IHRhZykKIHsKLSAgCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKnJub2RlOwotICAJcm5vZGUgPSByb290LT5ybm9kZTsKLSAgCWlmICghcm5vZGUpCi0gIAkJcmV0dXJuIDA7Ci0JcmV0dXJuIGFueV90YWdfc2V0KHJub2RlLCB0YWcpOworCXJldHVybiByb290X3RhZ19nZXQocm9vdCwgdGFnKTsKIH0KIEVYUE9SVF9TWU1CT0wocmFkaXhfdHJlZV90YWdnZWQpOwogCmRpZmYgLS1naXQgYS9saWIvc3RyaW5nLmMgYi9saWIvc3RyaW5nLmMKaW5kZXggMDY0ZjYzMS4uNjMwNzcyNiAxMDA2NDQKLS0tIGEvbGliL3N0cmluZy5jCisrKyBiL2xpYi9zdHJpbmcuYwpAQCAtMzAxLDYgKzMwMSwzNiBAQAogRVhQT1JUX1NZTUJPTChzdHJuY2hyKTsKICNlbmRpZgogCisvKioKKyAqIHN0cnN0cmlwIC0gUmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gQHMuCisgKiBAczogVGhlIHN0cmluZyB0byBiZSBzdHJpcHBlZC4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIGZpcnN0IHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVwbGFjZWQgd2l0aCBhICVOVUwtdGVybWluYXRvcgorICogaW4gdGhlIGdpdmVuIHN0cmluZyBAcy4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG5vbi13aGl0ZXNwYWNlCisgKiBjaGFyYWN0ZXIgaW4gQHMuCisgKi8KK2NoYXIgKnN0cnN0cmlwKGNoYXIgKnMpCit7CisJc2l6ZV90IHNpemU7CisJY2hhciAqZW5kOworCisJc2l6ZSA9IHN0cmxlbihzKTsKKworCWlmICghc2l6ZSkKKwkJcmV0dXJuIHM7CisKKwllbmQgPSBzICsgc2l6ZSAtIDE7CisJd2hpbGUgKGVuZCAhPSBzICYmIGlzc3BhY2UoKmVuZCkpCisJCWVuZC0tOworCSooZW5kICsgMSkgPSAnXDAnOworCisJd2hpbGUgKCpzICYmIGlzc3BhY2UoKnMpKQorCQlzKys7CisKKwlyZXR1cm4gczsKK30KK0VYUE9SVF9TWU1CT0woc3Ryc3RyaXApOworCiAjaWZuZGVmIF9fSEFWRV9BUkNIX1NUUkxFTgogLyoqCiAgKiBzdHJsZW4gLSBGaW5kIHRoZSBsZW5ndGggb2YgYSBzdHJpbmcKZGlmZiAtLWdpdCBhL2xpYi96bGliX2RlZmxhdGUvZGVmbGF0ZS5jIGIvbGliL3psaWJfZGVmbGF0ZS9kZWZsYXRlLmMKaW5kZXggMTY1M2RkOS4uYzNlNGEyYmEgMTAwNjQ0Ci0tLSBhL2xpYi96bGliX2RlZmxhdGUvZGVmbGF0ZS5jCisrKyBiL2xpYi96bGliX2RlZmxhdGUvZGVmbGF0ZS5jCkBAIC0xNjQsMzQgKzE2NCwxNyBAQAogICAgIG1lbXNldCgoY2hhciAqKXMtPmhlYWQsIDAsICh1bnNpZ25lZCkocy0+aGFzaF9zaXplLTEpKnNpemVvZigqcy0+aGVhZCkpOwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi1pbnQgemxpYl9kZWZsYXRlSW5pdF8oCi0Jel9zdHJlYW1wIHN0cm0sCi0JaW50IGxldmVsLAotCWNvbnN0IGNoYXIgKnZlcnNpb24sCi0JaW50IHN0cmVhbV9zaXplCi0pCi17Ci0gICAgcmV0dXJuIHpsaWJfZGVmbGF0ZUluaXQyXyhzdHJtLCBsZXZlbCwgWl9ERUZMQVRFRCwgTUFYX1dCSVRTLAotCQkJICAgICAgREVGX01FTV9MRVZFTCwKLQkJCSAgICAgIFpfREVGQVVMVF9TVFJBVEVHWSwgdmVyc2lvbiwgc3RyZWFtX3NpemUpOwotICAgIC8qIFRvIGRvOiBpZ25vcmUgc3RybS0+bmV4dF9pbiBpZiB3ZSB1c2UgaXQgYXMgd2luZG93ICovCi19Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLWludCB6bGliX2RlZmxhdGVJbml0Ml8oCitpbnQgemxpYl9kZWZsYXRlSW5pdDIoCiAJel9zdHJlYW1wIHN0cm0sCiAJaW50ICBsZXZlbCwKIAlpbnQgIG1ldGhvZCwKIAlpbnQgIHdpbmRvd0JpdHMsCiAJaW50ICBtZW1MZXZlbCwKLQlpbnQgIHN0cmF0ZWd5LAotCWNvbnN0IGNoYXIgKnZlcnNpb24sCi0JaW50IHN0cmVhbV9zaXplCisJaW50ICBzdHJhdGVneQogKQogewogICAgIGRlZmxhdGVfc3RhdGUgKnM7CiAgICAgaW50IG5vaGVhZGVyID0gMDsKLSAgICBzdGF0aWMgY2hhciogbXlfdmVyc2lvbiA9IFpMSUJfVkVSU0lPTjsKICAgICBkZWZsYXRlX3dvcmtzcGFjZSAqbWVtOwogCiAgICAgdXNoICpvdmVybGF5OwpAQCAtMTk5LDEwICsxODIsNiBAQAogICAgICAqIG91dHB1dCBzaXplIGZvciAobGVuZ3RoLGRpc3RhbmNlKSBjb2RlcyBpcyA8PSAyNCBiaXRzLgogICAgICAqLwogCi0gICAgaWYgKHZlcnNpb24gPT0gTlVMTCB8fCB2ZXJzaW9uWzBdICE9IG15X3ZlcnNpb25bMF0gfHwKLSAgICAgICAgc3RyZWFtX3NpemUgIT0gc2l6ZW9mKHpfc3RyZWFtKSkgewotCXJldHVybiBaX1ZFUlNJT05fRVJST1I7Ci0gICAgfQogICAgIGlmIChzdHJtID09IE5VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKIAogICAgIHN0cm0tPm1zZyA9IE5VTEw7CmRpZmYgLS1naXQgYS9saWIvemxpYl9kZWZsYXRlL2RlZmxhdGVfc3ltcy5jIGIvbGliL3psaWJfZGVmbGF0ZS9kZWZsYXRlX3N5bXMuYwppbmRleCA3NjdiNTczLi5jY2ZlMjVmIDEwMDY0NAotLS0gYS9saWIvemxpYl9kZWZsYXRlL2RlZmxhdGVfc3ltcy5jCisrKyBiL2xpYi96bGliX2RlZmxhdGUvZGVmbGF0ZV9zeW1zLmMKQEAgLTEyLDggKzEyLDcgQEAKIAogRVhQT1JUX1NZTUJPTCh6bGliX2RlZmxhdGVfd29ya3NwYWNlc2l6ZSk7CiBFWFBPUlRfU1lNQk9MKHpsaWJfZGVmbGF0ZSk7Ci1FWFBPUlRfU1lNQk9MKHpsaWJfZGVmbGF0ZUluaXRfKTsKLUVYUE9SVF9TWU1CT0woemxpYl9kZWZsYXRlSW5pdDJfKTsKK0VYUE9SVF9TWU1CT0woemxpYl9kZWZsYXRlSW5pdDIpOwogRVhQT1JUX1NZTUJPTCh6bGliX2RlZmxhdGVFbmQpOwogRVhQT1JUX1NZTUJPTCh6bGliX2RlZmxhdGVSZXNldCk7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL01ha2VmaWxlIGIvbGliL3psaWJfaW5mbGF0ZS9NYWtlZmlsZQppbmRleCAyMjFjMTM5Li5iZjA2NTQ4IDEwMDY0NAotLS0gYS9saWIvemxpYl9pbmZsYXRlL01ha2VmaWxlCisrKyBiL2xpYi96bGliX2luZmxhdGUvTWFrZWZpbGUKQEAgLTE1LDUgKzE1LDUgQEAKIAogb2JqLSQoQ09ORklHX1pMSUJfSU5GTEFURSkgKz0gemxpYl9pbmZsYXRlLm8KIAotemxpYl9pbmZsYXRlLW9ianMgOj0gaW5mYmxvY2subyBpbmZjb2Rlcy5vIGluZmZhc3QubyBpbmZsYXRlLm8gXAotCQkgICAgIGluZmxhdGVfc3luYy5vIGluZnRyZWVzLm8gaW5mdXRpbC5vIGluZmxhdGVfc3ltcy5vCit6bGliX2luZmxhdGUtb2JqcyA6PSBpbmZmYXN0Lm8gaW5mbGF0ZS5vIFwKKwkJICAgICBpbmZ0cmVlcy5vIGluZmxhdGVfc3ltcy5vCmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL2luZmJsb2NrLmMgYi9saWIvemxpYl9pbmZsYXRlL2luZmJsb2NrLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNmNkZWYuLjAwMDAwMDAKLS0tIGEvbGliL3psaWJfaW5mbGF0ZS9pbmZibG9jay5jCisrKyAvZGV2L251bGwKQEAgLTEsMzY1ICswLDAgQEAKLS8qIGluZmJsb2NrLmMgLS0gaW50ZXJwcmV0IGFuZCBwcm9jZXNzIGJsb2NrIHR5cGVzIHRvIGxhc3QgYmxvY2sKLSAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmggCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L3p1dGlsLmg+Ci0jaW5jbHVkZSAiaW5mYmxvY2suaCIKLSNpbmNsdWRlICJpbmZ0cmVlcy5oIgotI2luY2x1ZGUgImluZmNvZGVzLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgotCi1zdHJ1Y3QgaW5mbGF0ZV9jb2Rlc19zdGF0ZTsKLQotLyogc2ltcGxpZnkgdGhlIHVzZSBvZiB0aGUgaW5mbGF0ZV9odWZ0IHR5cGUgd2l0aCBzb21lIGRlZmluZXMgKi8KLSNkZWZpbmUgZXhvcCB3b3JkLndoYXQuRXhvcAotI2RlZmluZSBiaXRzIHdvcmQud2hhdC5CaXRzCi0KLS8qIFRhYmxlIGZvciBkZWZsYXRlIGZyb20gUEtaSVAncyBhcHBub3RlLnR4dC4gKi8KLXN0YXRpYyBjb25zdCB1SW50IGJvcmRlcltdID0geyAvKiBPcmRlciBvZiB0aGUgYml0IGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KLSAgICAgICAgMTYsIDE3LCAxOCwgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNX07Ci0KLS8qCi0gICBOb3RlcyBiZXlvbmQgdGhlIDEuOTNhIGFwcG5vdGUudHh0OgotCi0gICAxLiBEaXN0YW5jZSBwb2ludGVycyBuZXZlciBwb2ludCBiZWZvcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgb3V0cHV0Ci0gICAgICBzdHJlYW0uCi0gICAyLiBEaXN0YW5jZSBwb2ludGVycyBjYW4gcG9pbnQgYmFjayBhY3Jvc3MgYmxvY2tzLCB1cCB0byAzMmsgYXdheS4KLSAgIDMuIFRoZXJlIGlzIGFuIGltcGxpZWQgbWF4aW11bSBvZiA3IGJpdHMgZm9yIHRoZSBiaXQgbGVuZ3RoIHRhYmxlIGFuZAotICAgICAgMTUgYml0cyBmb3IgdGhlIGFjdHVhbCBkYXRhLgotICAgNC4gSWYgb25seSBvbmUgY29kZSBleGlzdHMsIHRoZW4gaXQgaXMgZW5jb2RlZCB1c2luZyBvbmUgYml0LiAgKFplcm8KLSAgICAgIHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LCBidXQgcGVyaGFwcyBhIGxpdHRsZSBjb25mdXNpbmcuKSAgSWYgdHdvCi0gICAgICBjb2RlcyBleGlzdCwgdGhleSBhcmUgY29kZWQgdXNpbmcgb25lIGJpdCBlYWNoICgwIGFuZCAxKS4KLSAgIDUuIFRoZXJlIGlzIG5vIHdheSBvZiBzZW5kaW5nIHplcm8gZGlzdGFuY2UgY29kZXMtLWEgZHVtbXkgbXVzdCBiZQotICAgICAgc2VudCBpZiB0aGVyZSBhcmUgbm9uZS4gIChIaXN0b3J5OiBhIHByZSAyLjAgdmVyc2lvbiBvZiBQS1pJUCB3b3VsZAotICAgICAgc3RvcmUgYmxvY2tzIHdpdGggbm8gZGlzdGFuY2UgY29kZXMsIGJ1dCB0aGlzIHdhcyBkaXNjb3ZlcmVkIHRvIGJlCi0gICAgICB0b28gaGFyc2ggYSBjcml0ZXJpb24uKSAgVmFsaWQgb25seSBmb3IgMS45M2EuICAyLjA0YyBkb2VzIGFsbG93Ci0gICAgICB6ZXJvIGRpc3RhbmNlIGNvZGVzLCB3aGljaCBpcyBzZW50IGFzIG9uZSBjb2RlIG9mIHplcm8gYml0cyBpbgotICAgICAgbGVuZ3RoLgotICAgNi4gVGhlcmUgYXJlIHVwIHRvIDI4NiBsaXRlcmFsL2xlbmd0aCBjb2Rlcy4gIENvZGUgMjU2IHJlcHJlc2VudHMgdGhlCi0gICAgICBlbmQtb2YtYmxvY2suICBOb3RlIGhvd2V2ZXIgdGhhdCB0aGUgc3RhdGljIGxlbmd0aCB0cmVlIGRlZmluZXMKLSAgICAgIDI4OCBjb2RlcyBqdXN0IHRvIGZpbGwgb3V0IHRoZSBIdWZmbWFuIGNvZGVzLiAgQ29kZXMgMjg2IGFuZCAyODcKLSAgICAgIGNhbm5vdCBiZSB1c2VkIHRob3VnaCwgc2luY2UgdGhlcmUgaXMgbm8gbGVuZ3RoIGJhc2Ugb3IgZXh0cmEgYml0cwotICAgICAgZGVmaW5lZCBmb3IgdGhlbS4gIFNpbWlsYXJpbHksIHRoZXJlIGFyZSB1cCB0byAzMCBkaXN0YW5jZSBjb2Rlcy4KLSAgICAgIEhvd2V2ZXIsIHN0YXRpYyB0cmVlcyBkZWZpbmUgMzIgY29kZXMgKGFsbCA1IGJpdHMpIHRvIGZpbGwgb3V0IHRoZQotICAgICAgSHVmZm1hbiBjb2RlcywgYnV0IHRoZSBsYXN0IHR3byBoYWQgYmV0dGVyIG5vdCBzaG93IHVwIGluIHRoZSBkYXRhLgotICAgNy4gVW56aXAgY2FuIGNoZWNrIGR5bmFtaWMgSHVmZm1hbiBibG9ja3MgZm9yIGNvbXBsZXRlIGNvZGUgc2V0cy4KLSAgICAgIFRoZSBleGNlcHRpb24gaXMgdGhhdCBhIHNpbmdsZSBjb2RlIHdvdWxkIG5vdCBiZSBjb21wbGV0ZSAoc2VlICM0KS4KLSAgIDguIFRoZSBmaXZlIGJpdHMgZm9sbG93aW5nIHRoZSBibG9jayB0eXBlIGlzIHJlYWxseSB0aGUgbnVtYmVyIG9mCi0gICAgICBsaXRlcmFsIGNvZGVzIHNlbnQgbWludXMgMjU3LgotICAgOS4gTGVuZ3RoIGNvZGVzIDgsMTYsMTYgYXJlIGludGVycHJldGVkIGFzIDEzIGxlbmd0aCBjb2RlcyBvZiA4IGJpdHMKLSAgICAgICgxKzYrNikuICBUaGVyZWZvcmUsIHRvIG91dHB1dCB0aHJlZSB0aW1lcyB0aGUgbGVuZ3RoLCB5b3Ugb3V0cHV0Ci0gICAgICB0aHJlZSBjb2RlcyAoMSsxKzEpLCB3aGVyZWFzIHRvIG91dHB1dCBmb3VyIHRpbWVzIHRoZSBzYW1lIGxlbmd0aCwKLSAgICAgIHlvdSBvbmx5IG5lZWQgdHdvIGNvZGVzICgxKzMpLiAgSG1tLgotICAxMC4gSW4gdGhlIHRyZWUgcmVjb25zdHJ1Y3Rpb24gYWxnb3JpdGhtLCBDb2RlID0gQ29kZSArIEluY3JlbWVudAotICAgICAgb25seSBpZiBCaXRMZW5ndGgoaSkgaXMgbm90IHplcm8uICAoUHJldHR5IG9idmlvdXMuKQotICAxMS4gQ29ycmVjdGlvbjogNCBCaXRzOiAjIG9mIEJpdCBMZW5ndGggY29kZXMgLSA0ICAgICAoNCAtIDE5KQotICAxMi4gTm90ZTogbGVuZ3RoIGNvZGUgMjg0IGNhbiByZXByZXNlbnQgMjI3LTI1OCwgYnV0IGxlbmd0aCBjb2RlIDI4NQotICAgICAgcmVhbGx5IGlzIDI1OC4gIFRoZSBsYXN0IGxlbmd0aCBkZXNlcnZlcyBpdHMgb3duLCBzaG9ydCBjb2RlCi0gICAgICBzaW5jZSBpdCBnZXRzIHVzZWQgYSBsb3QgaW4gdmVyeSByZWR1bmRhbnQgZmlsZXMuICBUaGUgbGVuZ3RoCi0gICAgICAyNTggaXMgc3BlY2lhbCBzaW5jZSAyNTggLSAzICh0aGUgbWluIG1hdGNoIGxlbmd0aCkgaXMgMjU1LgotICAxMy4gVGhlIGxpdGVyYWwvbGVuZ3RoIGFuZCBkaXN0YW5jZSBjb2RlIGJpdCBsZW5ndGhzIGFyZSByZWFkIGFzIGEKLSAgICAgIHNpbmdsZSBzdHJlYW0gb2YgbGVuZ3Rocy4gIEl0IGlzIHBvc3NpYmxlIChhbmQgYWR2YW50YWdlb3VzKSBmb3IKLSAgICAgIGEgcmVwZWF0IGNvZGUgKDE2LCAxNywgb3IgMTgpIHRvIGdvIGFjcm9zcyB0aGUgYm91bmRhcnkgYmV0d2VlbgotICAgICAgdGhlIHR3byBzZXRzIG9mIGxlbmd0aHMuCi0gKi8KLQotCi12b2lkIHpsaWJfaW5mbGF0ZV9ibG9ja3NfcmVzZXQoCi0JaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzLAotCXpfc3RyZWFtcCB6LAotCXVMb25nICpjCi0pCi17Ci0gIGlmIChjICE9IE5VTEwpCi0gICAgKmMgPSBzLT5jaGVjazsKLSAgaWYgKHMtPm1vZGUgPT0gQ09ERVMpCi0gICAgemxpYl9pbmZsYXRlX2NvZGVzX2ZyZWUocy0+c3ViLmRlY29kZS5jb2Rlcywgeik7Ci0gIHMtPm1vZGUgPSBUWVBFOwotICBzLT5iaXRrID0gMDsKLSAgcy0+Yml0YiA9IDA7Ci0gIHMtPnJlYWQgPSBzLT53cml0ZSA9IHMtPndpbmRvdzsKLSAgaWYgKHMtPmNoZWNrZm4gIT0gTlVMTCkKLSAgICB6LT5hZGxlciA9IHMtPmNoZWNrID0gKCpzLT5jaGVja2ZuKSgwTCwgTlVMTCwgMCk7Ci19Ci0KLWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqemxpYl9pbmZsYXRlX2Jsb2Nrc19uZXcoCi0Jel9zdHJlYW1wIHosCi0JY2hlY2tfZnVuYyBjLAotCXVJbnQgdwotKQotewotICBpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnM7Ci0KLSAgcyA9ICZXUyh6KS0+d29ya2luZ19ibG9ja3Nfc3RhdGU7Ci0gIHMtPmh1ZnRzID0gV1MoeiktPndvcmtpbmdfaHVmdHM7Ci0gIHMtPndpbmRvdyA9IFdTKHopLT53b3JraW5nX3dpbmRvdzsKLSAgcy0+ZW5kID0gcy0+d2luZG93ICsgdzsKLSAgcy0+Y2hlY2tmbiA9IGM7Ci0gIHMtPm1vZGUgPSBUWVBFOwotICB6bGliX2luZmxhdGVfYmxvY2tzX3Jlc2V0KHMsIHosIE5VTEwpOwotICByZXR1cm4gczsKLX0KLQotCi1pbnQgemxpYl9pbmZsYXRlX2Jsb2NrcygKLQlpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMsCi0Jel9zdHJlYW1wIHosCi0JaW50IHIKLSkKLXsKLSAgdUludCB0OyAgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBzdG9yYWdlICovCi0gIHVMb25nIGI7ICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovCi0gIHVJbnQgazsgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi8KLSAgQnl0ZSAqcDsgICAgICAgICAgICAgIC8qIGlucHV0IGRhdGEgcG9pbnRlciAqLwotICB1SW50IG47ICAgICAgICAgICAgICAgLyogYnl0ZXMgYXZhaWxhYmxlIHRoZXJlICovCi0gIEJ5dGUgKnE7ICAgICAgICAgICAgICAvKiBvdXRwdXQgd2luZG93IHdyaXRlIHBvaW50ZXIgKi8KLSAgdUludCBtOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGVuZCBvZiB3aW5kb3cgb3IgcmVhZCBwb2ludGVyICovCi0KLSAgLyogY29weSBpbnB1dC9vdXRwdXQgaW5mb3JtYXRpb24gdG8gbG9jYWxzIChVUERBVEUgbWFjcm8gcmVzdG9yZXMpICovCi0gIExPQUQKLQotICAvKiBwcm9jZXNzIGlucHV0IGJhc2VkIG9uIGN1cnJlbnQgc3RhdGUgKi8KLSAgd2hpbGUgKDEpIHN3aXRjaCAocy0+bW9kZSkKLSAgewotICAgIGNhc2UgVFlQRToKLSAgICAgIE5FRURCSVRTKDMpCi0gICAgICB0ID0gKHVJbnQpYiAmIDc7Ci0gICAgICBzLT5sYXN0ID0gdCAmIDE7Ci0gICAgICBzd2l0Y2ggKHQgPj4gMSkKLSAgICAgIHsKLSAgICAgICAgY2FzZSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgKi8KLSAgICAgICAgICBEVU1QQklUUygzKQotICAgICAgICAgIHQgPSBrICYgNzsgICAgICAgICAgICAgICAgICAgIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi8KLSAgICAgICAgICBEVU1QQklUUyh0KQotICAgICAgICAgIHMtPm1vZGUgPSBMRU5TOyAgICAgICAgICAgICAgIC8qIGdldCBsZW5ndGggb2Ygc3RvcmVkIGJsb2NrICovCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICB1SW50IGJsLCBiZDsKLSAgICAgICAgICAgIGluZmxhdGVfaHVmdCAqdGwsICp0ZDsKLQotICAgICAgICAgICAgemxpYl9pbmZsYXRlX3RyZWVzX2ZpeGVkKCZibCwgJmJkLCAmdGwsICZ0ZCwgcy0+aHVmdHMsIHopOwotICAgICAgICAgICAgcy0+c3ViLmRlY29kZS5jb2RlcyA9IHpsaWJfaW5mbGF0ZV9jb2Rlc19uZXcoYmwsIGJkLCB0bCwgdGQsIHopOwotICAgICAgICAgICAgaWYgKHMtPnN1Yi5kZWNvZGUuY29kZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgciA9IFpfTUVNX0VSUk9SOwotICAgICAgICAgICAgICBMRUFWRQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBEVU1QQklUUygzKQotICAgICAgICAgIHMtPm1vZGUgPSBDT0RFUzsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkeW5hbWljICovCi0gICAgICAgICAgRFVNUEJJVFMoMykKLSAgICAgICAgICBzLT5tb2RlID0gVEFCTEU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAgICAgLyogaWxsZWdhbCAqLwotICAgICAgICAgIERVTVBCSVRTKDMpCi0gICAgICAgICAgcy0+bW9kZSA9IEJfQkFEOwotICAgICAgICAgIHotPm1zZyA9IChjaGFyKikiaW52YWxpZCBibG9jayB0eXBlIjsKLSAgICAgICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgICAgICAgIExFQVZFCi0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExFTlM6Ci0gICAgICBORUVEQklUUygzMikKLSAgICAgIGlmICgoKCh+YikgPj4gMTYpICYgMHhmZmZmKSAhPSAoYiAmIDB4ZmZmZikpCi0gICAgICB7Ci0gICAgICAgIHMtPm1vZGUgPSBCX0JBRDsKLSAgICAgICAgei0+bXNnID0gKGNoYXIqKSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIjsKLSAgICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgICAgTEVBVkUKLSAgICAgIH0KLSAgICAgIHMtPnN1Yi5sZWZ0ID0gKHVJbnQpYiAmIDB4ZmZmZjsKLSAgICAgIGIgPSBrID0gMDsgICAgICAgICAgICAgICAgICAgICAgLyogZHVtcCBiaXRzICovCi0gICAgICBzLT5tb2RlID0gcy0+c3ViLmxlZnQgPyBTVE9SRUQgOiAocy0+bGFzdCA/IERSWSA6IFRZUEUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVE9SRUQ6Ci0gICAgICBpZiAobiA9PSAwKQotICAgICAgICBMRUFWRQotICAgICAgTkVFRE9VVAotICAgICAgdCA9IHMtPnN1Yi5sZWZ0OwotICAgICAgaWYgKHQgPiBuKSB0ID0gbjsKLSAgICAgIGlmICh0ID4gbSkgdCA9IG07Ci0gICAgICBtZW1jcHkocSwgcCwgdCk7Ci0gICAgICBwICs9IHQ7ICBuIC09IHQ7Ci0gICAgICBxICs9IHQ7ICBtIC09IHQ7Ci0gICAgICBpZiAoKHMtPnN1Yi5sZWZ0IC09IHQpICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgcy0+bW9kZSA9IHMtPmxhc3QgPyBEUlkgOiBUWVBFOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRToKLSAgICAgIE5FRURCSVRTKDE0KQotICAgICAgcy0+c3ViLnRyZWVzLnRhYmxlID0gdCA9ICh1SW50KWIgJiAweDNmZmY7Ci0jaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECi0gICAgICBpZiAoKHQgJiAweDFmKSA+IDI5IHx8ICgodCA+PiA1KSAmIDB4MWYpID4gMjkpCi0gICAgICB7Ci0gICAgICAgIHMtPm1vZGUgPSBCX0JBRDsKLSAgICAgICAgei0+bXNnID0gKGNoYXIqKSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyI7Ci0gICAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICAgIExFQVZFCi0gICAgICB9Ci0jZW5kaWYKLSAgICAgIHsKLSAgICAgIAlzLT5zdWIudHJlZXMuYmxlbnMgPSBXUyh6KS0+d29ya2luZ19ibGVuczsKLSAgICAgIH0KLSAgICAgIERVTVBCSVRTKDE0KQotICAgICAgcy0+c3ViLnRyZWVzLmluZGV4ID0gMDsKLSAgICAgIHMtPm1vZGUgPSBCVFJFRTsKLSAgICBjYXNlIEJUUkVFOgotICAgICAgd2hpbGUgKHMtPnN1Yi50cmVlcy5pbmRleCA8IDQgKyAocy0+c3ViLnRyZWVzLnRhYmxlID4+IDEwKSkKLSAgICAgIHsKLSAgICAgICAgTkVFREJJVFMoMykKLSAgICAgICAgcy0+c3ViLnRyZWVzLmJsZW5zW2JvcmRlcltzLT5zdWIudHJlZXMuaW5kZXgrK11dID0gKHVJbnQpYiAmIDc7Ci0gICAgICAgIERVTVBCSVRTKDMpCi0gICAgICB9Ci0gICAgICB3aGlsZSAocy0+c3ViLnRyZWVzLmluZGV4IDwgMTkpCi0gICAgICAgIHMtPnN1Yi50cmVlcy5ibGVuc1tib3JkZXJbcy0+c3ViLnRyZWVzLmluZGV4KytdXSA9IDA7Ci0gICAgICBzLT5zdWIudHJlZXMuYmIgPSA3OwotICAgICAgdCA9IHpsaWJfaW5mbGF0ZV90cmVlc19iaXRzKHMtPnN1Yi50cmVlcy5ibGVucywgJnMtPnN1Yi50cmVlcy5iYiwKLQkJCQkgICZzLT5zdWIudHJlZXMudGIsIHMtPmh1ZnRzLCB6KTsKLSAgICAgIGlmICh0ICE9IFpfT0spCi0gICAgICB7Ci0gICAgICAgIHIgPSB0OwotICAgICAgICBpZiAociA9PSBaX0RBVEFfRVJST1IpCi0gICAgICAgICAgcy0+bW9kZSA9IEJfQkFEOwotICAgICAgICBMRUFWRQotICAgICAgfQotICAgICAgcy0+c3ViLnRyZWVzLmluZGV4ID0gMDsKLSAgICAgIHMtPm1vZGUgPSBEVFJFRTsKLSAgICBjYXNlIERUUkVFOgotICAgICAgd2hpbGUgKHQgPSBzLT5zdWIudHJlZXMudGFibGUsCi0gICAgICAgICAgICAgcy0+c3ViLnRyZWVzLmluZGV4IDwgMjU4ICsgKHQgJiAweDFmKSArICgodCA+PiA1KSAmIDB4MWYpKQotICAgICAgewotICAgICAgICBpbmZsYXRlX2h1ZnQgKmg7Ci0gICAgICAgIHVJbnQgaSwgaiwgYzsKLQotICAgICAgICB0ID0gcy0+c3ViLnRyZWVzLmJiOwotICAgICAgICBORUVEQklUUyh0KQotICAgICAgICBoID0gcy0+c3ViLnRyZWVzLnRiICsgKCh1SW50KWIgJiB6bGliX2luZmxhdGVfbWFza1t0XSk7Ci0gICAgICAgIHQgPSBoLT5iaXRzOwotICAgICAgICBjID0gaC0+YmFzZTsKLSAgICAgICAgaWYgKGMgPCAxNikKLSAgICAgICAgewotICAgICAgICAgIERVTVBCSVRTKHQpCi0gICAgICAgICAgcy0+c3ViLnRyZWVzLmJsZW5zW3MtPnN1Yi50cmVlcy5pbmRleCsrXSA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvKiBjID09IDE2Li4xOCAqLwotICAgICAgICB7Ci0gICAgICAgICAgaSA9IGMgPT0gMTggPyA3IDogYyAtIDE0OwotICAgICAgICAgIGogPSBjID09IDE4ID8gMTEgOiAzOwotICAgICAgICAgIE5FRURCSVRTKHQgKyBpKQotICAgICAgICAgIERVTVBCSVRTKHQpCi0gICAgICAgICAgaiArPSAodUludCliICYgemxpYl9pbmZsYXRlX21hc2tbaV07Ci0gICAgICAgICAgRFVNUEJJVFMoaSkKLSAgICAgICAgICBpID0gcy0+c3ViLnRyZWVzLmluZGV4OwotICAgICAgICAgIHQgPSBzLT5zdWIudHJlZXMudGFibGU7Ci0gICAgICAgICAgaWYgKGkgKyBqID4gMjU4ICsgKHQgJiAweDFmKSArICgodCA+PiA1KSAmIDB4MWYpIHx8Ci0gICAgICAgICAgICAgIChjID09IDE2ICYmIGkgPCAxKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBzLT5tb2RlID0gQl9CQUQ7Ci0gICAgICAgICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiOwotICAgICAgICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgICAgICAgIExFQVZFCi0gICAgICAgICAgfQotICAgICAgICAgIGMgPSBjID09IDE2ID8gcy0+c3ViLnRyZWVzLmJsZW5zW2kgLSAxXSA6IDA7Ci0gICAgICAgICAgZG8gewotICAgICAgICAgICAgcy0+c3ViLnRyZWVzLmJsZW5zW2krK10gPSBjOwotICAgICAgICAgIH0gd2hpbGUgKC0taik7Ci0gICAgICAgICAgcy0+c3ViLnRyZWVzLmluZGV4ID0gaTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgcy0+c3ViLnRyZWVzLnRiID0gTlVMTDsKLSAgICAgIHsKLSAgICAgICAgdUludCBibCwgYmQ7Ci0gICAgICAgIGluZmxhdGVfaHVmdCAqdGwsICp0ZDsKLSAgICAgICAgaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKmM7Ci0KLSAgICAgICAgYmwgPSA5OyAgICAgICAgIC8qIG11c3QgYmUgPD0gOSBmb3IgbG9va2FoZWFkIGFzc3VtcHRpb25zICovCi0gICAgICAgIGJkID0gNjsgICAgICAgICAvKiBtdXN0IGJlIDw9IDkgZm9yIGxvb2thaGVhZCBhc3N1bXB0aW9ucyAqLwotICAgICAgICB0ID0gcy0+c3ViLnRyZWVzLnRhYmxlOwotICAgICAgICB0ID0gemxpYl9pbmZsYXRlX3RyZWVzX2R5bmFtaWMoMjU3ICsgKHQgJiAweDFmKSwgMSArICgodCA+PiA1KSAmIDB4MWYpLAotCQkJCSAgICAgICBzLT5zdWIudHJlZXMuYmxlbnMsICZibCwgJmJkLCAmdGwsICZ0ZCwKLQkJCQkgICAgICAgcy0+aHVmdHMsIHopOwotICAgICAgICBpZiAodCAhPSBaX09LKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKHQgPT0gKHVJbnQpWl9EQVRBX0VSUk9SKQotICAgICAgICAgICAgcy0+bW9kZSA9IEJfQkFEOwotICAgICAgICAgIHIgPSB0OwotICAgICAgICAgIExFQVZFCi0gICAgICAgIH0KLSAgICAgICAgaWYgKChjID0gemxpYl9pbmZsYXRlX2NvZGVzX25ldyhibCwgYmQsIHRsLCB0ZCwgeikpID09IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICByID0gWl9NRU1fRVJST1I7Ci0gICAgICAgICAgTEVBVkUKLSAgICAgICAgfQotICAgICAgICBzLT5zdWIuZGVjb2RlLmNvZGVzID0gYzsKLSAgICAgIH0KLSAgICAgIHMtPm1vZGUgPSBDT0RFUzsKLSAgICBjYXNlIENPREVTOgotICAgICAgVVBEQVRFCi0gICAgICBpZiAoKHIgPSB6bGliX2luZmxhdGVfY29kZXMocywgeiwgcikpICE9IFpfU1RSRUFNX0VORCkKLSAgICAgICAgcmV0dXJuIHpsaWJfaW5mbGF0ZV9mbHVzaChzLCB6LCByKTsKLSAgICAgIHIgPSBaX09LOwotICAgICAgemxpYl9pbmZsYXRlX2NvZGVzX2ZyZWUocy0+c3ViLmRlY29kZS5jb2Rlcywgeik7Ci0gICAgICBMT0FECi0gICAgICBpZiAoIXMtPmxhc3QpCi0gICAgICB7Ci0gICAgICAgIHMtPm1vZGUgPSBUWVBFOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHMtPm1vZGUgPSBEUlk7Ci0gICAgY2FzZSBEUlk6Ci0gICAgICBGTFVTSAotICAgICAgaWYgKHMtPnJlYWQgIT0gcy0+d3JpdGUpCi0gICAgICAgIExFQVZFCi0gICAgICBzLT5tb2RlID0gQl9ET05FOwotICAgIGNhc2UgQl9ET05FOgotICAgICAgciA9IFpfU1RSRUFNX0VORDsKLSAgICAgIExFQVZFCi0gICAgY2FzZSBCX0JBRDoKLSAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICBMRUFWRQotICAgIGRlZmF1bHQ6Ci0gICAgICByID0gWl9TVFJFQU1fRVJST1I7Ci0gICAgICBMRUFWRQotICB9Ci19Ci0KLQotaW50IHpsaWJfaW5mbGF0ZV9ibG9ja3NfZnJlZSgKLQlpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMsCi0Jel9zdHJlYW1wIHoKLSkKLXsKLSAgemxpYl9pbmZsYXRlX2Jsb2Nrc19yZXNldChzLCB6LCBOVUxMKTsKLSAgcmV0dXJuIFpfT0s7Ci19Ci0KLQotI2lmIDAKLXZvaWQgemxpYl9pbmZsYXRlX3NldF9kaWN0aW9uYXJ5KAotCWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcywKLQljb25zdCBCeXRlICpkLAotCXVJbnQgIG4KLSkKLXsKLSAgbWVtY3B5KHMtPndpbmRvdywgZCwgbik7Ci0gIHMtPnJlYWQgPSBzLT53cml0ZSA9IHMtPndpbmRvdyArIG47Ci19Ci0jZW5kaWYgIC8qICAwICAqLwotCi0KLS8qIFJldHVybnMgdHJ1ZSBpZiBpbmZsYXRlIGlzIGN1cnJlbnRseSBhdCB0aGUgZW5kIG9mIGEgYmxvY2sgZ2VuZXJhdGVkCi0gKiBieSBaX1NZTkNfRkxVU0ggb3IgWl9GVUxMX0ZMVVNILiAKLSAqIElOIGFzc2VydGlvbjogcyAhPSBOVUxMCi0gKi8KLSNpZiAwCi1pbnQgemxpYl9pbmZsYXRlX2Jsb2Nrc19zeW5jX3BvaW50KAotCWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcwotKQotewotICByZXR1cm4gcy0+bW9kZSA9PSBMRU5TOwotfQotI2VuZGlmICAvKiAgMCAgKi8KZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mYmxvY2suaCBiL2xpYi96bGliX2luZmxhdGUvaW5mYmxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VlZTYwYi4uMDAwMDAwMAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZmJsb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKiBpbmZibG9jay5oIC0tIGhlYWRlciB0byB1c2UgaW5mYmxvY2suYwotICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggTWFyayBBZGxlcgotICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaCAKLSAqLwotCi0vKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcwotICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCi0gICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCi0gKi8KLQotI2lmbmRlZiBfSU5GQkxPQ0tfSAotI2RlZmluZSBfSU5GQkxPQ0tfSAotCi1zdHJ1Y3QgaW5mbGF0ZV9ibG9ja3Nfc3RhdGU7Ci10eXBlZGVmIHN0cnVjdCBpbmZsYXRlX2Jsb2Nrc19zdGF0ZSBpbmZsYXRlX2Jsb2Nrc19zdGF0ZWY7Ci0KLWV4dGVybiBpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKiB6bGliX2luZmxhdGVfYmxvY2tzX25ldyAoCi0gICAgel9zdHJlYW1wIHosCi0gICAgY2hlY2tfZnVuYyBjLCAgICAgICAgICAgICAgLyogY2hlY2sgZnVuY3Rpb24gKi8KLSAgICB1SW50IHcpOyAgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSAqLwotCi1leHRlcm4gaW50IHpsaWJfaW5mbGF0ZV9ibG9ja3MgKAotICAgIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAqLAotICAgIHpfc3RyZWFtcCAsCi0gICAgaW50KTsgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbCByZXR1cm4gY29kZSAqLwotCi1leHRlcm4gdm9pZCB6bGliX2luZmxhdGVfYmxvY2tzX3Jlc2V0ICgKLSAgICBpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKiwKLSAgICB6X3N0cmVhbXAgLAotICAgIHVMb25nICopOyAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHZhbHVlIG9uIG91dHB1dCAqLwotCi1leHRlcm4gaW50IHpsaWJfaW5mbGF0ZV9ibG9ja3NfZnJlZSAoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wKTsKLQotI2lmIDAKLWV4dGVybiB2b2lkIHpsaWJfaW5mbGF0ZV9zZXRfZGljdGlvbmFyeSAoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzLAotICAgIGNvbnN0IEJ5dGUgKmQsICAvKiBkaWN0aW9uYXJ5ICovCi0gICAgdUludCAgbik7ICAgICAgIC8qIGRpY3Rpb25hcnkgbGVuZ3RoICovCi0jZW5kaWYgIC8qICAwICAqLwotCi0jaWYgMAotZXh0ZXJuIGludCB6bGliX2luZmxhdGVfYmxvY2tzX3N5bmNfcG9pbnQgKAotICAgIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcyk7Ci0jZW5kaWYgIC8qICAwICAqLwotCi0jZW5kaWYgLyogX0lORkJMT0NLX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mY29kZXMuYyBiL2xpYi96bGliX2luZmxhdGUvaW5mY29kZXMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdjZDc1OS4uMDAwMDAwMAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZmNvZGVzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyogaW5mY29kZXMuYyAtLSBwcm9jZXNzIGxpdGVyYWxzIGFuZCBsZW5ndGgvZGlzdGFuY2UgcGFpcnMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmggCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L3p1dGlsLmg+Ci0jaW5jbHVkZSAiaW5mdHJlZXMuaCIKLSNpbmNsdWRlICJpbmZibG9jay5oIgotI2luY2x1ZGUgImluZmNvZGVzLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgotI2luY2x1ZGUgImluZmZhc3QuaCIKLQotLyogc2ltcGxpZnkgdGhlIHVzZSBvZiB0aGUgaW5mbGF0ZV9odWZ0IHR5cGUgd2l0aCBzb21lIGRlZmluZXMgKi8KLSNkZWZpbmUgZXhvcCB3b3JkLndoYXQuRXhvcAotI2RlZmluZSBiaXRzIHdvcmQud2hhdC5CaXRzCi0KLWluZmxhdGVfY29kZXNfc3RhdGVmICp6bGliX2luZmxhdGVfY29kZXNfbmV3KAotCXVJbnQgYmwsCi0JdUludCBiZCwKLQlpbmZsYXRlX2h1ZnQgKnRsLAotCWluZmxhdGVfaHVmdCAqdGQsIC8qIG5lZWQgc2VwYXJhdGUgZGVjbGFyYXRpb24gZm9yIEJvcmxhbmQgQysrICovCi0Jel9zdHJlYW1wIHoKLSkKLXsKLSAgaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKmM7Ci0KLSAgYyA9ICZXUyh6KS0+d29ya2luZ19zdGF0ZTsKLSAgewotICAgIGMtPm1vZGUgPSBTVEFSVDsKLSAgICBjLT5sYml0cyA9IChCeXRlKWJsOwotICAgIGMtPmRiaXRzID0gKEJ5dGUpYmQ7Ci0gICAgYy0+bHRyZWUgPSB0bDsKLSAgICBjLT5kdHJlZSA9IHRkOwotICB9Ci0gIHJldHVybiBjOwotfQotCi0KLWludCB6bGliX2luZmxhdGVfY29kZXMoCi0JaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzLAotCXpfc3RyZWFtcCB6LAotCWludCByCi0pCi17Ci0gIHVJbnQgajsgICAgICAgICAgICAgICAvKiB0ZW1wb3Jhcnkgc3RvcmFnZSAqLwotICBpbmZsYXRlX2h1ZnQgKnQ7ICAgICAgLyogdGVtcG9yYXJ5IHBvaW50ZXIgKi8KLSAgdUludCBlOyAgICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgb3Igb3BlcmF0aW9uICovCi0gIHVMb25nIGI7ICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovCi0gIHVJbnQgazsgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi8KLSAgQnl0ZSAqcDsgICAgICAgICAgICAgIC8qIGlucHV0IGRhdGEgcG9pbnRlciAqLwotICB1SW50IG47ICAgICAgICAgICAgICAgLyogYnl0ZXMgYXZhaWxhYmxlIHRoZXJlICovCi0gIEJ5dGUgKnE7ICAgICAgICAgICAgICAvKiBvdXRwdXQgd2luZG93IHdyaXRlIHBvaW50ZXIgKi8KLSAgdUludCBtOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGVuZCBvZiB3aW5kb3cgb3IgcmVhZCBwb2ludGVyICovCi0gIEJ5dGUgKmY7ICAgICAgICAgICAgICAvKiBwb2ludGVyIHRvIGNvcHkgc3RyaW5ncyBmcm9tICovCi0gIGluZmxhdGVfY29kZXNfc3RhdGVmICpjID0gcy0+c3ViLmRlY29kZS5jb2RlczsgIC8qIGNvZGVzIHN0YXRlICovCi0KLSAgLyogY29weSBpbnB1dC9vdXRwdXQgaW5mb3JtYXRpb24gdG8gbG9jYWxzIChVUERBVEUgbWFjcm8gcmVzdG9yZXMpICovCi0gIExPQUQKLQotICAvKiBwcm9jZXNzIGlucHV0IGFuZCBvdXRwdXQgYmFzZWQgb24gY3VycmVudCBzdGF0ZSAqLwotICB3aGlsZSAoMSkgc3dpdGNoIChjLT5tb2RlKQotICB7ICAgICAgICAgICAgIC8qIHdhaXRpbmcgZm9yICJpOiI9aW5wdXQsICJvOiI9b3V0cHV0LCAieDoiPW5vdGhpbmcgKi8KLSAgICBjYXNlIFNUQVJUOiAgICAgICAgIC8qIHg6IHNldCB1cCBmb3IgTEVOICovCi0jaWZuZGVmIFNMT1cKLSAgICAgIGlmIChtID49IDI1OCAmJiBuID49IDEwKQotICAgICAgewotICAgICAgICBVUERBVEUKLSAgICAgICAgciA9IHpsaWJfaW5mbGF0ZV9mYXN0KGMtPmxiaXRzLCBjLT5kYml0cywgYy0+bHRyZWUsIGMtPmR0cmVlLCBzLCB6KTsKLSAgICAgICAgTE9BRAotICAgICAgICBpZiAociAhPSBaX09LKQotICAgICAgICB7Ci0gICAgICAgICAgYy0+bW9kZSA9IHIgPT0gWl9TVFJFQU1fRU5EID8gV0FTSCA6IEJBRENPREU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSNlbmRpZiAvKiAhU0xPVyAqLwotICAgICAgYy0+c3ViLmNvZGUubmVlZCA9IGMtPmxiaXRzOwotICAgICAgYy0+c3ViLmNvZGUudHJlZSA9IGMtPmx0cmVlOwotICAgICAgYy0+bW9kZSA9IExFTjsKLSAgICBjYXNlIExFTjogICAgICAgICAgIC8qIGk6IGdldCBsZW5ndGgvbGl0ZXJhbC9lb2IgbmV4dCAqLwotICAgICAgaiA9IGMtPnN1Yi5jb2RlLm5lZWQ7Ci0gICAgICBORUVEQklUUyhqKQotICAgICAgdCA9IGMtPnN1Yi5jb2RlLnRyZWUgKyAoKHVJbnQpYiAmIHpsaWJfaW5mbGF0ZV9tYXNrW2pdKTsKLSAgICAgIERVTVBCSVRTKHQtPmJpdHMpCi0gICAgICBlID0gKHVJbnQpKHQtPmV4b3ApOwotICAgICAgaWYgKGUgPT0gMCkgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovCi0gICAgICB7Ci0gICAgICAgIGMtPnN1Yi5saXQgPSB0LT5iYXNlOwotICAgICAgICBjLT5tb2RlID0gTElUOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmIChlICYgMTYpICAgICAgICAgICAgICAgLyogbGVuZ3RoICovCi0gICAgICB7Ci0gICAgICAgIGMtPnN1Yi5jb3B5LmdldCA9IGUgJiAxNTsKLSAgICAgICAgYy0+bGVuID0gdC0+YmFzZTsKLSAgICAgICAgYy0+bW9kZSA9IExFTkVYVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAoKGUgJiA2NCkgPT0gMCkgICAgICAgIC8qIG5leHQgdGFibGUgKi8KLSAgICAgIHsKLSAgICAgICAgYy0+c3ViLmNvZGUubmVlZCA9IGU7Ci0gICAgICAgIGMtPnN1Yi5jb2RlLnRyZWUgPSB0ICsgdC0+YmFzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZiAoZSAmIDMyKSAgICAgICAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqLwotICAgICAgewotICAgICAgICBjLT5tb2RlID0gV0FTSDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjLT5tb2RlID0gQkFEQ09ERTsgICAgICAgIC8qIGludmFsaWQgY29kZSAqLwotICAgICAgei0+bXNnID0gKGNoYXIqKSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiOwotICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICAgIExFQVZFCi0gICAgY2FzZSBMRU5FWFQ6ICAgICAgICAvKiBpOiBnZXR0aW5nIGxlbmd0aCBleHRyYSAoaGF2ZSBiYXNlKSAqLwotICAgICAgaiA9IGMtPnN1Yi5jb3B5LmdldDsKLSAgICAgIE5FRURCSVRTKGopCi0gICAgICBjLT5sZW4gKz0gKHVJbnQpYiAmIHpsaWJfaW5mbGF0ZV9tYXNrW2pdOwotICAgICAgRFVNUEJJVFMoaikKLSAgICAgIGMtPnN1Yi5jb2RlLm5lZWQgPSBjLT5kYml0czsKLSAgICAgIGMtPnN1Yi5jb2RlLnRyZWUgPSBjLT5kdHJlZTsKLSAgICAgIGMtPm1vZGUgPSBESVNUOwotICAgIGNhc2UgRElTVDogICAgICAgICAgLyogaTogZ2V0IGRpc3RhbmNlIG5leHQgKi8KLSAgICAgIGogPSBjLT5zdWIuY29kZS5uZWVkOwotICAgICAgTkVFREJJVFMoaikKLSAgICAgIHQgPSBjLT5zdWIuY29kZS50cmVlICsgKCh1SW50KWIgJiB6bGliX2luZmxhdGVfbWFza1tqXSk7Ci0gICAgICBEVU1QQklUUyh0LT5iaXRzKQotICAgICAgZSA9ICh1SW50KSh0LT5leG9wKTsKLSAgICAgIGlmIChlICYgMTYpICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgKi8KLSAgICAgIHsKLSAgICAgICAgYy0+c3ViLmNvcHkuZ2V0ID0gZSAmIDE1OwotICAgICAgICBjLT5zdWIuY29weS5kaXN0ID0gdC0+YmFzZTsKLSAgICAgICAgYy0+bW9kZSA9IERJU1RFWFQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKChlICYgNjQpID09IDApICAgICAgICAvKiBuZXh0IHRhYmxlICovCi0gICAgICB7Ci0gICAgICAgIGMtPnN1Yi5jb2RlLm5lZWQgPSBlOwotICAgICAgICBjLT5zdWIuY29kZS50cmVlID0gdCArIHQtPmJhc2U7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgYy0+bW9kZSA9IEJBRENPREU7ICAgICAgICAvKiBpbnZhbGlkIGNvZGUgKi8KLSAgICAgIHotPm1zZyA9IChjaGFyKikiaW52YWxpZCBkaXN0YW5jZSBjb2RlIjsKLSAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICBMRUFWRQotICAgIGNhc2UgRElTVEVYVDogICAgICAgLyogaTogZ2V0dGluZyBkaXN0YW5jZSBleHRyYSAqLwotICAgICAgaiA9IGMtPnN1Yi5jb3B5LmdldDsKLSAgICAgIE5FRURCSVRTKGopCi0gICAgICBjLT5zdWIuY29weS5kaXN0ICs9ICh1SW50KWIgJiB6bGliX2luZmxhdGVfbWFza1tqXTsKLSAgICAgIERVTVBCSVRTKGopCi0gICAgICBjLT5tb2RlID0gQ09QWTsKLSAgICBjYXNlIENPUFk6ICAgICAgICAgIC8qIG86IGNvcHlpbmcgYnl0ZXMgaW4gd2luZG93LCB3YWl0aW5nIGZvciBzcGFjZSAqLwotICAgICAgZiA9IHEgLSBjLT5zdWIuY29weS5kaXN0OwotICAgICAgd2hpbGUgKGYgPCBzLT53aW5kb3cpICAgICAgICAgICAgIC8qIG1vZHVsbyB3aW5kb3cgc2l6ZS0id2hpbGUiIGluc3RlYWQgKi8KLSAgICAgICAgZiArPSBzLT5lbmQgLSBzLT53aW5kb3c7ICAgICAgICAvKiBvZiAiaWYiIGhhbmRsZXMgaW52YWxpZCBkaXN0YW5jZXMgKi8KLSAgICAgIHdoaWxlIChjLT5sZW4pCi0gICAgICB7Ci0gICAgICAgIE5FRURPVVQKLSAgICAgICAgT1VUQllURSgqZisrKQotICAgICAgICBpZiAoZiA9PSBzLT5lbmQpCi0gICAgICAgICAgZiA9IHMtPndpbmRvdzsKLSAgICAgICAgYy0+bGVuLS07Ci0gICAgICB9Ci0gICAgICBjLT5tb2RlID0gU1RBUlQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExJVDogICAgICAgICAgIC8qIG86IGdvdCBsaXRlcmFsLCB3YWl0aW5nIGZvciBvdXRwdXQgc3BhY2UgKi8KLSAgICAgIE5FRURPVVQKLSAgICAgIE9VVEJZVEUoYy0+c3ViLmxpdCkKLSAgICAgIGMtPm1vZGUgPSBTVEFSVDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgV0FTSDogICAgICAgICAgLyogbzogZ290IGVvYiwgcG9zc2libHkgbW9yZSBvdXRwdXQgKi8KLSAgICAgIGlmIChrID4gNykgICAgICAgIC8qIHJldHVybiB1bnVzZWQgYnl0ZSwgaWYgYW55ICovCi0gICAgICB7Ci0gICAgICAgIGsgLT0gODsKLSAgICAgICAgbisrOwotICAgICAgICBwLS07ICAgICAgICAgICAgLyogY2FuIGFsd2F5cyByZXR1cm4gb25lICovCi0gICAgICB9Ci0gICAgICBGTFVTSAotICAgICAgaWYgKHMtPnJlYWQgIT0gcy0+d3JpdGUpCi0gICAgICAgIExFQVZFCi0gICAgICBjLT5tb2RlID0gRU5EOwotICAgIGNhc2UgRU5EOgotICAgICAgciA9IFpfU1RSRUFNX0VORDsKLSAgICAgIExFQVZFCi0gICAgY2FzZSBCQURDT0RFOiAgICAgICAvKiB4OiBnb3QgZXJyb3IgKi8KLSAgICAgIHIgPSBaX0RBVEFfRVJST1I7Ci0gICAgICBMRUFWRQotICAgIGRlZmF1bHQ6Ci0gICAgICByID0gWl9TVFJFQU1fRVJST1I7Ci0gICAgICBMRUFWRQotICB9Ci0jaWZkZWYgTkVFRF9EVU1NWV9SRVRVUk4KLSAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyAgLyogU29tZSBkdW1iIGNvbXBpbGVycyBjb21wbGFpbiB3aXRob3V0IHRoaXMgKi8KLSNlbmRpZgotfQotCi0KLXZvaWQgemxpYl9pbmZsYXRlX2NvZGVzX2ZyZWUoCi0JaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKmMsCi0Jel9zdHJlYW1wIHoKLSkKLXsKLX0KZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mY29kZXMuaCBiL2xpYi96bGliX2luZmxhdGUvaW5mY29kZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmZjQxNy4uMDAwMDAwMAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZmNvZGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKiBpbmZjb2Rlcy5oIC0tIGhlYWRlciB0byB1c2UgaW5mY29kZXMuYwotICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggTWFyayBBZGxlcgotICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaCAKLSAqLwotCi0vKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcwotICAgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kIGlzCi0gICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCi0gKi8KLQotI2lmbmRlZiBfSU5GQ09ERVNfSAotI2RlZmluZSBfSU5GQ09ERVNfSAotCi0jaW5jbHVkZSAiaW5mYmxvY2suaCIKLQotc3RydWN0IGluZmxhdGVfY29kZXNfc3RhdGU7Ci10eXBlZGVmIHN0cnVjdCBpbmZsYXRlX2NvZGVzX3N0YXRlIGluZmxhdGVfY29kZXNfc3RhdGVmOwotCi1leHRlcm4gaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKnpsaWJfaW5mbGF0ZV9jb2Rlc19uZXcgKAotICAgIHVJbnQsIHVJbnQsCi0gICAgaW5mbGF0ZV9odWZ0ICosIGluZmxhdGVfaHVmdCAqLAotICAgIHpfc3RyZWFtcCApOwotCi1leHRlcm4gaW50IHpsaWJfaW5mbGF0ZV9jb2RlcyAoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wICwKLSAgICBpbnQpOwotCi1leHRlcm4gdm9pZCB6bGliX2luZmxhdGVfY29kZXNfZnJlZSAoCi0gICAgaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgKiwKLSAgICB6X3N0cmVhbXAgKTsKLQotI2VuZGlmIC8qIF9JTkZDT0RFU19IICovCmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL2luZmZhc3QuYyBiL2xpYi96bGliX2luZmxhdGUvaW5mZmFzdC5jCmluZGV4IDBiZDc2MjMuLjAyYTE2ZWEgMTAwNjQ0Ci0tLSBhL2xpYi96bGliX2luZmxhdGUvaW5mZmFzdC5jCisrKyBiL2xpYi96bGliX2luZmxhdGUvaW5mZmFzdC5jCkBAIC0xLDE3NiArMSwzMTIgQEAKLS8qIGluZmZhc3QuYyAtLSBwcm9jZXNzIGxpdGVyYWxzIGFuZCBsZW5ndGgvZGlzdGFuY2UgcGFpcnMgZmFzdAotICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggTWFyayBBZGxlcgotICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaCAKKy8qIGluZmZhc3QuYyAtLSBmYXN0IGRlY29kaW5nCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNCBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L3p1dGlsLmg+CiAjaW5jbHVkZSAiaW5mdHJlZXMuaCIKLSNpbmNsdWRlICJpbmZibG9jay5oIgotI2luY2x1ZGUgImluZmNvZGVzLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgorI2luY2x1ZGUgImluZmxhdGUuaCIKICNpbmNsdWRlICJpbmZmYXN0LmgiCiAKLXN0cnVjdCBpbmZsYXRlX2NvZGVzX3N0YXRlOworI2lmbmRlZiBBU01JTkYKIAotLyogc2ltcGxpZnkgdGhlIHVzZSBvZiB0aGUgaW5mbGF0ZV9odWZ0IHR5cGUgd2l0aCBzb21lIGRlZmluZXMgKi8KLSNkZWZpbmUgZXhvcCB3b3JkLndoYXQuRXhvcAotI2RlZmluZSBiaXRzIHdvcmQud2hhdC5CaXRzCisvKiBBbGxvdyBtYWNoaW5lIGRlcGVuZGVudCBvcHRpbWl6YXRpb24gZm9yIHBvc3QtaW5jcmVtZW50IG9yIHByZS1pbmNyZW1lbnQuCisgICBCYXNlZCBvbiB0ZXN0aW5nIHRvIGRhdGUsCisgICBQcmUtaW5jcmVtZW50IHByZWZlcnJlZCBmb3I6CisgICAtIFBvd2VyUEMgRzMgKEFkbGVyKQorICAgLSBNSVBTIFI1MDAwIChSYW5kZXJzLVBlaHJzb24pCisgICBQb3N0LWluY3JlbWVudCBwcmVmZXJyZWQgZm9yOgorICAgLSBub25lCisgICBObyBtZWFzdXJhYmxlIGRpZmZlcmVuY2U6CisgICAtIFBlbnRpdW0gSUlJIChBbmRlcnNvbikKKyAgIC0gTTY4MDYwIChOaWtsKQorICovCisjaWZkZWYgUE9TVElOQworIyAgZGVmaW5lIE9GRiAwCisjICBkZWZpbmUgUFVQKGEpICooYSkrKworI2Vsc2UKKyMgIGRlZmluZSBPRkYgMQorIyAgZGVmaW5lIFBVUChhKSAqKysoYSkKKyNlbmRpZgogCi0vKiBtYWNyb3MgZm9yIGJpdCBpbnB1dCB3aXRoIG5vIGNoZWNraW5nIGFuZCBmb3IgcmV0dXJuaW5nIHVudXNlZCBieXRlcyAqLwotI2RlZmluZSBHUkFCQklUUyhqKSB7d2hpbGUoazwoaikpe2J8PSgodUxvbmcpTkVYVEJZVEUpPDxrO2srPTg7fX0KLSNkZWZpbmUgVU5HUkFCIHtjPXotPmF2YWlsX2luLW47Yz0oaz4+Myk8Yz9rPj4zOmM7bis9YztwLT1jO2stPWM8PDM7fQorLyoKKyAgIERlY29kZSBsaXRlcmFsLCBsZW5ndGgsIGFuZCBkaXN0YW5jZSBjb2RlcyBhbmQgd3JpdGUgb3V0IHRoZSByZXN1bHRpbmcKKyAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpcworICAgYXZhaWxhYmxlLCBhbiBlbmQtb2YtYmxvY2sgaXMgZW5jb3VudGVyZWQsIG9yIGEgZGF0YSBlcnJvciBpcyBlbmNvdW50ZXJlZC4KKyAgIFdoZW4gbGFyZ2UgZW5vdWdoIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBhcmUgc3VwcGxpZWQgdG8gaW5mbGF0ZSgpLCBmb3IKKyAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGUKKyAgIGluZmxhdGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgaW4gdGhpcyByb3V0aW5lLgogCi0vKiBDYWxsZWQgd2l0aCBudW1iZXIgb2YgYnl0ZXMgbGVmdCB0byB3cml0ZSBpbiB3aW5kb3cgYXQgbGVhc3QgMjU4Ci0gICAodGhlIG1heGltdW0gc3RyaW5nIGxlbmd0aCkgYW5kIG51bWJlciBvZiBpbnB1dCBieXRlcyBhdmFpbGFibGUKLSAgIGF0IGxlYXN0IHRlbi4gIFRoZSB0ZW4gYnl0ZXMgYXJlIHNpeCBieXRlcyBmb3IgdGhlIGxvbmdlc3QgbGVuZ3RoLwotICAgZGlzdGFuY2UgcGFpciBwbHVzIGZvdXIgYnl0ZXMgZm9yIG92ZXJsb2FkaW5nIHRoZSBiaXQgYnVmZmVyLiAqLworICAgRW50cnkgYXNzdW1wdGlvbnM6CiAKLWludCB6bGliX2luZmxhdGVfZmFzdCgKLQl1SW50IGJsLAotCXVJbnQgYmQsCi0JaW5mbGF0ZV9odWZ0ICp0bCwKLQlpbmZsYXRlX2h1ZnQgKnRkLCAvKiBuZWVkIHNlcGFyYXRlIGRlY2xhcmF0aW9uIGZvciBCb3JsYW5kIEMrKyAqLwotCWluZmxhdGVfYmxvY2tzX3N0YXRlZiAqcywKLQl6X3N0cmVhbXAgegotKQorICAgICAgICBzdGF0ZS0+bW9kZSA9PSBMRU4KKyAgICAgICAgc3RybS0+YXZhaWxfaW4gPj0gNgorICAgICAgICBzdHJtLT5hdmFpbF9vdXQgPj0gMjU4CisgICAgICAgIHN0YXJ0ID49IHN0cm0tPmF2YWlsX291dAorICAgICAgICBzdGF0ZS0+Yml0cyA8IDgKKworICAgT24gcmV0dXJuLCBzdGF0ZS0+bW9kZSBpcyBvbmUgb2Y6CisKKyAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0CisgICAgICAgIFRZUEUgLS0gcmVhY2hlZCBlbmQgb2YgYmxvY2sgY29kZSwgaW5mbGF0ZSgpIHRvIGludGVycHJldCBuZXh0IGJsb2NrCisgICAgICAgIEJBRCAtLSBlcnJvciBpbiBibG9jayBkYXRhCisKKyAgIE5vdGVzOgorCisgICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGUKKyAgICAgIGxlbmd0aCBjb2RlLCA1IGJpdHMgZm9yIHRoZSBsZW5ndGggZXh0cmEsIDE1IGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBjb2RlLAorICAgICAgYW5kIDEzIGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBleHRyYS4gIFRoaXMgdG90YWxzIDQ4IGJpdHMsIG9yIHNpeCBieXRlcy4KKyAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLT5hdmFpbF9pbiA+PSA2LCB0aGVuIHRoZXJlIGlzIGVub3VnaCBpbnB1dCB0byBhdm9pZAorICAgICAgY2hlY2tpbmcgZm9yIGF2YWlsYWJsZSBpbnB1dCB3aGlsZSBkZWNvZGluZy4KKworICAgIC0gVGhlIG1heGltdW0gYnl0ZXMgdGhhdCBhIHNpbmdsZSBsZW5ndGgvZGlzdGFuY2UgcGFpciBjYW4gb3V0cHV0IGlzIDI1OAorICAgICAgYnl0ZXMsIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IGNhbiBiZSBjb2RlZC4gIGluZmxhdGVfZmFzdCgpCisgICAgICByZXF1aXJlcyBzdHJtLT5hdmFpbF9vdXQgPj0gMjU4IGZvciBlYWNoIGxvb3AgdG8gYXZvaWQgY2hlY2tpbmcgZm9yCisgICAgICBvdXRwdXQgc3BhY2UuCisgKi8KK3ZvaWQgaW5mbGF0ZV9mYXN0KHN0cm0sIHN0YXJ0KQorel9zdHJlYW1wIHN0cm07Cit1bnNpZ25lZCBzdGFydDsgICAgICAgICAvKiBpbmZsYXRlKCkncyBzdGFydGluZyB2YWx1ZSBmb3Igc3RybS0+YXZhaWxfb3V0ICovCiB7Ci0gIGluZmxhdGVfaHVmdCAqdDsgICAgICAvKiB0ZW1wb3JhcnkgcG9pbnRlciAqLwotICB1SW50IGU7ICAgICAgICAgICAgICAgLyogZXh0cmEgYml0cyBvciBvcGVyYXRpb24gKi8KLSAgdUxvbmcgYjsgICAgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KLSAgdUludCBrOyAgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqLwotICBCeXRlICpwOyAgICAgICAgICAgICAgLyogaW5wdXQgZGF0YSBwb2ludGVyICovCi0gIHVJbnQgbjsgICAgICAgICAgICAgICAvKiBieXRlcyBhdmFpbGFibGUgdGhlcmUgKi8KLSAgQnl0ZSAqcTsgICAgICAgICAgICAgIC8qIG91dHB1dCB3aW5kb3cgd3JpdGUgcG9pbnRlciAqLwotICB1SW50IG07ICAgICAgICAgICAgICAgLyogYnl0ZXMgdG8gZW5kIG9mIHdpbmRvdyBvciByZWFkIHBvaW50ZXIgKi8KLSAgdUludCBtbDsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxpdGVyYWwvbGVuZ3RoIHRyZWUgKi8KLSAgdUludCBtZDsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGRpc3RhbmNlIHRyZWUgKi8KLSAgdUludCBjOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGNvcHkgKi8KLSAgdUludCBkOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgdG8gY29weSBmcm9tICovCi0gIEJ5dGUgKnI7ICAgICAgICAgICAgICAvKiBjb3B5IHNvdXJjZSBwb2ludGVyICovCisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgKnN0YXRlOworICAgIHVuc2lnbmVkIGNoYXIgKmluOyAgICAgIC8qIGxvY2FsIHN0cm0tPm5leHRfaW4gKi8KKyAgICB1bnNpZ25lZCBjaGFyICpsYXN0OyAgICAvKiB3aGlsZSBpbiA8IGxhc3QsIGVub3VnaCBpbnB1dCBhdmFpbGFibGUgKi8KKyAgICB1bnNpZ25lZCBjaGFyICpvdXQ7ICAgICAvKiBsb2NhbCBzdHJtLT5uZXh0X291dCAqLworICAgIHVuc2lnbmVkIGNoYXIgKmJlZzsgICAgIC8qIGluZmxhdGUoKSdzIGluaXRpYWwgc3RybS0+bmV4dF9vdXQgKi8KKyAgICB1bnNpZ25lZCBjaGFyICplbmQ7ICAgICAvKiB3aGlsZSBvdXQgPCBlbmQsIGVub3VnaCBzcGFjZSBhdmFpbGFibGUgKi8KKyNpZmRlZiBJTkZMQVRFX1NUUklDVAorICAgIHVuc2lnbmVkIGRtYXg7ICAgICAgICAgICAgICAvKiBtYXhpbXVtIGRpc3RhbmNlIGZyb20gemxpYiBoZWFkZXIgKi8KKyNlbmRpZgorICAgIHVuc2lnbmVkIHdzaXplOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KKyAgICB1bnNpZ25lZCB3aGF2ZTsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdyaXRlOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KKyAgICB1bnNpZ25lZCBjaGFyICp3aW5kb3c7ICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIHdzaXplICE9IDAgKi8KKyAgICB1bnNpZ25lZCBsb25nIGhvbGQ7ICAgICAgICAgLyogbG9jYWwgc3RybS0+aG9sZCAqLworICAgIHVuc2lnbmVkIGJpdHM7ICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLT5iaXRzICovCisgICAgY29kZSBjb25zdCAqbGNvZGU7ICAgICAgLyogbG9jYWwgc3RybS0+bGVuY29kZSAqLworICAgIGNvZGUgY29uc3QgKmRjb2RlOyAgICAgIC8qIGxvY2FsIHN0cm0tPmRpc3Rjb2RlICovCisgICAgdW5zaWduZWQgbG1hc2s7ICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGZpcnN0IGxldmVsIG9mIGxlbmd0aCBjb2RlcyAqLworICAgIHVuc2lnbmVkIGRtYXNrOyAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBkaXN0YW5jZSBjb2RlcyAqLworICAgIGNvZGUgdGhpczsgICAgICAgICAgICAgICAgICAvKiByZXRyaWV2ZWQgdGFibGUgZW50cnkgKi8KKyAgICB1bnNpZ25lZCBvcDsgICAgICAgICAgICAgICAgLyogY29kZSBiaXRzLCBvcGVyYXRpb24sIGV4dHJhIGJpdHMsIG9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICB3aW5kb3cgcG9zaXRpb24sIHdpbmRvdyBieXRlcyB0byBjb3B5ICovCisgICAgdW5zaWduZWQgbGVuOyAgICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0aCwgdW51c2VkIGJ5dGVzICovCisgICAgdW5zaWduZWQgZGlzdDsgICAgICAgICAgICAgIC8qIG1hdGNoIGRpc3RhbmNlICovCisgICAgdW5zaWduZWQgY2hhciAqZnJvbTsgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBmcm9tICovCiAKLSAgLyogbG9hZCBpbnB1dCwgb3V0cHV0LCBiaXQgdmFsdWVzICovCi0gIExPQUQKKyAgICAvKiBjb3B5IHN0YXRlIHRvIGxvY2FsIHZhcmlhYmxlcyAqLworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlICopc3RybS0+c3RhdGU7CisgICAgaW4gPSBzdHJtLT5uZXh0X2luIC0gT0ZGOworICAgIGxhc3QgPSBpbiArIChzdHJtLT5hdmFpbF9pbiAtIDUpOworICAgIG91dCA9IHN0cm0tPm5leHRfb3V0IC0gT0ZGOworICAgIGJlZyA9IG91dCAtIChzdGFydCAtIHN0cm0tPmF2YWlsX291dCk7CisgICAgZW5kID0gb3V0ICsgKHN0cm0tPmF2YWlsX291dCAtIDI1Nyk7CisjaWZkZWYgSU5GTEFURV9TVFJJQ1QKKyAgICBkbWF4ID0gc3RhdGUtPmRtYXg7CisjZW5kaWYKKyAgICB3c2l6ZSA9IHN0YXRlLT53c2l6ZTsKKyAgICB3aGF2ZSA9IHN0YXRlLT53aGF2ZTsKKyAgICB3cml0ZSA9IHN0YXRlLT53cml0ZTsKKyAgICB3aW5kb3cgPSBzdGF0ZS0+d2luZG93OworICAgIGhvbGQgPSBzdGF0ZS0+aG9sZDsKKyAgICBiaXRzID0gc3RhdGUtPmJpdHM7CisgICAgbGNvZGUgPSBzdGF0ZS0+bGVuY29kZTsKKyAgICBkY29kZSA9IHN0YXRlLT5kaXN0Y29kZTsKKyAgICBsbWFzayA9ICgxVSA8PCBzdGF0ZS0+bGVuYml0cykgLSAxOworICAgIGRtYXNrID0gKDFVIDw8IHN0YXRlLT5kaXN0Yml0cykgLSAxOwogCi0gIC8qIGluaXRpYWxpemUgbWFza3MgKi8KLSAgbWwgPSB6bGliX2luZmxhdGVfbWFza1tibF07Ci0gIG1kID0gemxpYl9pbmZsYXRlX21hc2tbYmRdOwotCi0gIC8qIGRvIHVudGlsIG5vdCBlbm91Z2ggaW5wdXQgb3Igb3V0cHV0IHNwYWNlIGZvciBmYXN0IGxvb3AgKi8KLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXNzdW1lIGNhbGxlZCB3aXRoIG0gPj0gMjU4ICYmIG4gPj0gMTAgKi8KLSAgICAvKiBnZXQgbGl0ZXJhbC9sZW5ndGggY29kZSAqLwotICAgIEdSQUJCSVRTKDIwKSAgICAgICAgICAgICAgICAvKiBtYXggYml0cyBmb3IgbGl0ZXJhbC9sZW5ndGggY29kZSAqLwotICAgIGlmICgoZSA9ICh0ID0gdGwgKyAoKHVJbnQpYiAmIG1sKSktPmV4b3ApID09IDApCi0gICAgewotICAgICAgRFVNUEJJVFModC0+Yml0cykKLSAgICAgICpxKysgPSAoQnl0ZSl0LT5iYXNlOwotICAgICAgbS0tOwotICAgICAgY29udGludWU7Ci0gICAgfQorICAgIC8qIGRlY29kZSBsaXRlcmFscyBhbmQgbGVuZ3RoL2Rpc3RhbmNlcyB1bnRpbCBlbmQtb2YtYmxvY2sgb3Igbm90IGVub3VnaAorICAgICAgIGlucHV0IGRhdGEgb3Igb3V0cHV0IHNwYWNlICovCiAgICAgZG8gewotICAgICAgRFVNUEJJVFModC0+Yml0cykKLSAgICAgIGlmIChlICYgMTYpCi0gICAgICB7Ci0gICAgICAgIC8qIGdldCBleHRyYSBiaXRzIGZvciBsZW5ndGggKi8KLSAgICAgICAgZSAmPSAxNTsKLSAgICAgICAgYyA9IHQtPmJhc2UgKyAoKHVJbnQpYiAmIHpsaWJfaW5mbGF0ZV9tYXNrW2VdKTsKLSAgICAgICAgRFVNUEJJVFMoZSkKLQotICAgICAgICAvKiBkZWNvZGUgZGlzdGFuY2UgYmFzZSBvZiBibG9jayB0byBjb3B5ICovCi0gICAgICAgIEdSQUJCSVRTKDE1KTsgICAgICAgICAgIC8qIG1heCBiaXRzIGZvciBkaXN0YW5jZSBjb2RlICovCi0gICAgICAgIGUgPSAodCA9IHRkICsgKCh1SW50KWIgJiBtZCkpLT5leG9wOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgRFVNUEJJVFModC0+Yml0cykKLSAgICAgICAgICBpZiAoZSAmIDE2KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIGdldCBleHRyYSBiaXRzIHRvIGFkZCB0byBkaXN0YW5jZSBiYXNlICovCi0gICAgICAgICAgICBlICY9IDE1OwotICAgICAgICAgICAgR1JBQkJJVFMoZSkgICAgICAgICAvKiBnZXQgZXh0cmEgYml0cyAodXAgdG8gMTMpICovCi0gICAgICAgICAgICBkID0gdC0+YmFzZSArICgodUludCliICYgemxpYl9pbmZsYXRlX21hc2tbZV0pOwotICAgICAgICAgICAgRFVNUEJJVFMoZSkKLQotICAgICAgICAgICAgLyogZG8gdGhlIGNvcHkgKi8KLSAgICAgICAgICAgIG0gLT0gYzsKLSAgICAgICAgICAgIHIgPSBxIC0gZDsKLSAgICAgICAgICAgIGlmIChyIDwgcy0+d2luZG93KSAgICAgICAgICAgICAgICAgIC8qIHdyYXAgaWYgbmVlZGVkICovCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICByICs9IHMtPmVuZCAtIHMtPndpbmRvdzsgICAgICAgIC8qIGZvcmNlIHBvaW50ZXIgaW4gd2luZG93ICovCi0gICAgICAgICAgICAgIH0gd2hpbGUgKHIgPCBzLT53aW5kb3cpOyAgICAgICAgICAvKiBjb3ZlcnMgaW52YWxpZCBkaXN0YW5jZXMgKi8KLSAgICAgICAgICAgICAgZSA9IHMtPmVuZCAtIHI7Ci0gICAgICAgICAgICAgIGlmIChjID4gZSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGMgLT0gZTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogd3JhcHBlZCBjb3B5ICovCi0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAqcSsrID0gKnIrKzsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWUpOwotICAgICAgICAgICAgICAgIHIgPSBzLT53aW5kb3c7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAqcSsrID0gKnIrKzsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWMpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3JtYWwgY29weSAqLwotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICpyKys7ICBjLS07Ci0gICAgICAgICAgICAgICAgKnErKyA9ICpyKys7ICBjLS07Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAqcSsrID0gKnIrKzsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWMpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3JtYWwgY29weSAqLwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAqcSsrID0gKnIrKzsgIGMtLTsKLSAgICAgICAgICAgICAgKnErKyA9ICpyKys7ICBjLS07Ci0gICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAqcSsrID0gKnIrKzsKLSAgICAgICAgICAgICAgfSB3aGlsZSAoLS1jKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICgoZSAmIDY0KSA9PSAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHQgKz0gdC0+YmFzZTsKLSAgICAgICAgICAgIGUgPSAodCArPSAoKHVJbnQpYiAmIHpsaWJfaW5mbGF0ZV9tYXNrW2VdKSktPmV4b3A7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB6LT5tc2cgPSAoY2hhciopImludmFsaWQgZGlzdGFuY2UgY29kZSI7Ci0gICAgICAgICAgICBVTkdSQUIKLSAgICAgICAgICAgIFVQREFURQotICAgICAgICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKDEpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmICgoZSAmIDY0KSA9PSAwKQotICAgICAgewotICAgICAgICB0ICs9IHQtPmJhc2U7Ci0gICAgICAgIGlmICgoZSA9ICh0ICs9ICgodUludCliICYgemxpYl9pbmZsYXRlX21hc2tbZV0pKS0+ZXhvcCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIERVTVBCSVRTKHQtPmJpdHMpCi0gICAgICAgICAgKnErKyA9IChCeXRlKXQtPmJhc2U7Ci0gICAgICAgICAgbS0tOwotICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoYml0cyA8IDE1KSB7CisgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoZSAmIDMyKQotICAgICAgewotICAgICAgICBVTkdSQUIKLSAgICAgICAgVVBEQVRFCi0gICAgICAgIHJldHVybiBaX1NUUkVBTV9FTkQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHotPm1zZyA9IChjaGFyKikiaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIjsKLSAgICAgICAgVU5HUkFCCi0gICAgICAgIFVQREFURQotICAgICAgICByZXR1cm4gWl9EQVRBX0VSUk9SOwotICAgICAgfQotICAgIH0gd2hpbGUgKDEpOwotICB9IHdoaWxlIChtID49IDI1OCAmJiBuID49IDEwKTsKKyAgICAgICAgdGhpcyA9IGxjb2RlW2hvbGQgJiBsbWFza107CisgICAgICBkb2xlbjoKKyAgICAgICAgb3AgPSAodW5zaWduZWQpKHRoaXMuYml0cyk7CisgICAgICAgIGhvbGQgPj49IG9wOworICAgICAgICBiaXRzIC09IG9wOworICAgICAgICBvcCA9ICh1bnNpZ25lZCkodGhpcy5vcCk7CisgICAgICAgIGlmIChvcCA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovCisgICAgICAgICAgICBQVVAob3V0KSA9ICh1bnNpZ25lZCBjaGFyKSh0aGlzLnZhbCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBiYXNlICovCisgICAgICAgICAgICBsZW4gPSAodW5zaWduZWQpKHRoaXMudmFsKTsKKyAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCisgICAgICAgICAgICBpZiAob3ApIHsKKyAgICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGVuICs9ICh1bnNpZ25lZClob2xkICYgKCgxVSA8PCBvcCkgLSAxKTsKKyAgICAgICAgICAgICAgICBob2xkID4+PSBvcDsKKyAgICAgICAgICAgICAgICBiaXRzIC09IG9wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJpdHMgPCAxNSkgeworICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgYml0cyArPSA4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcyA9IGRjb2RlW2hvbGQgJiBkbWFza107CisgICAgICAgICAgZG9kaXN0OgorICAgICAgICAgICAgb3AgPSAodW5zaWduZWQpKHRoaXMuYml0cyk7CisgICAgICAgICAgICBob2xkID4+PSBvcDsKKyAgICAgICAgICAgIGJpdHMgLT0gb3A7CisgICAgICAgICAgICBvcCA9ICh1bnNpZ25lZCkodGhpcy5vcCk7CisgICAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovCisgICAgICAgICAgICAgICAgZGlzdCA9ICh1bnNpZ25lZCkodGhpcy52YWwpOworICAgICAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi8KKyAgICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXN0ICs9ICh1bnNpZ25lZClob2xkICYgKCgxVSA8PCBvcCkgLSAxKTsKKyNpZmRlZiBJTkZMQVRFX1NUUklDVAorICAgICAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkgeworICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICBob2xkID4+PSBvcDsKKyAgICAgICAgICAgICAgICBiaXRzIC09IG9wOworICAgICAgICAgICAgICAgIG9wID0gKHVuc2lnbmVkKShvdXQgLSBiZWcpOyAgICAgLyogbWF4IGRpc3RhbmNlIGluIG91dHB1dCAqLworICAgICAgICAgICAgICAgIGlmIChkaXN0ID4gb3ApIHsgICAgICAgICAgICAgICAgLyogc2VlIGlmIGNvcHkgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgb3AgPSBkaXN0IC0gb3A7ICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChvcCA+IHdoYXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZyb20gPSB3aW5kb3cgLSBPRkY7CisgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZSA9PSAwKSB7ICAgICAgICAgICAvKiB2ZXJ5IGNvbW1vbiBjYXNlICovCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JpdGUgPCBvcCkgeyAgICAgIC8qIHdyYXAgYXJvdW5kIHdpbmRvdyAqLworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSArIHdyaXRlIC0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBvcCAtPSB3cml0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSBlbmQgb2Ygd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHdpbmRvdyAtIE9GRjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod3JpdGUgPCBsZW4pIHsgIC8qIHNvbWUgZnJvbSBzdGFydCBvZiB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSB3cml0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OyAgICAgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHdyaXRlIC0gb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSAzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OyAgICAgICAgICAvKiBjb3B5IGRpcmVjdCBmcm9tIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBsZW5ndGggaXMgdGhyZWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSAzOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PSAwKSB7ICAgICAgICAgIC8qIDJuZCBsZXZlbCBkaXN0YW5jZSBjb2RlICovCisgICAgICAgICAgICAgICAgdGhpcyA9IGRjb2RlW3RoaXMudmFsICsgKGhvbGQgJiAoKDFVIDw8IG9wKSAtIDEpKV07CisgICAgICAgICAgICAgICAgZ290byBkb2Rpc3Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi8KKyAgICAgICAgICAgIHRoaXMgPSBsY29kZVt0aGlzLnZhbCArIChob2xkICYgKCgxVSA8PCBvcCkgLSAxKSldOworICAgICAgICAgICAgZ290byBkb2xlbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvcCAmIDMyKSB7ICAgICAgICAgICAgICAgICAgICAgLyogZW5kLW9mLWJsb2NrICovCisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSI7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSB3aGlsZSAoaW4gPCBsYXN0ICYmIG91dCA8IGVuZCk7CiAKLSAgLyogbm90IGVub3VnaCBpbnB1dCBvciBvdXRwdXQtLXJlc3RvcmUgcG9pbnRlcnMgYW5kIHJldHVybiAqLwotICBVTkdSQUIKLSAgVVBEQVRFCi0gIHJldHVybiBaX09LOworICAgIC8qIHJldHVybiB1bnVzZWQgYnl0ZXMgKG9uIGVudHJ5LCBiaXRzIDwgOCwgc28gaW4gd29uJ3QgZ28gdG9vIGZhciBiYWNrKSAqLworICAgIGxlbiA9IGJpdHMgPj4gMzsKKyAgICBpbiAtPSBsZW47CisgICAgYml0cyAtPSBsZW4gPDwgMzsKKyAgICBob2xkICY9ICgxVSA8PCBiaXRzKSAtIDE7CisKKyAgICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqLworICAgIHN0cm0tPm5leHRfaW4gPSBpbiArIE9GRjsKKyAgICBzdHJtLT5uZXh0X291dCA9IG91dCArIE9GRjsKKyAgICBzdHJtLT5hdmFpbF9pbiA9ICh1bnNpZ25lZCkoaW4gPCBsYXN0ID8gNSArIChsYXN0IC0gaW4pIDogNSAtIChpbiAtIGxhc3QpKTsKKyAgICBzdHJtLT5hdmFpbF9vdXQgPSAodW5zaWduZWQpKG91dCA8IGVuZCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTcgKyAoZW5kIC0gb3V0KSA6IDI1NyAtIChvdXQgLSBlbmQpKTsKKyAgICBzdGF0ZS0+aG9sZCA9IGhvbGQ7CisgICAgc3RhdGUtPmJpdHMgPSBiaXRzOworICAgIHJldHVybjsKIH0KKworLyoKKyAgIGluZmxhdGVfZmFzdCgpIHNwZWVkdXBzIHRoYXQgdHVybmVkIG91dCBzbG93ZXIgKG9uIGEgUG93ZXJQQyBHMyA3NTBDWGUpOgorICAgLSBVc2luZyBiaXQgZmllbGRzIGZvciBjb2RlIHN0cnVjdHVyZQorICAgLSBEaWZmZXJlbnQgb3AgZGVmaW5pdGlvbiB0byBhdm9pZCAmIGZvciBleHRyYSBiaXRzIChkbyAmIGZvciB0YWJsZSBiaXRzKQorICAgLSBUaHJlZSBzZXBhcmF0ZSBkZWNvZGluZyBkby1sb29wcyBmb3IgZGlyZWN0LCB3aW5kb3csIGFuZCB3cml0ZSA9PSAwCisgICAtIFNwZWNpYWwgY2FzZSBmb3IgZGlzdGFuY2UgPiAxIGNvcGllcyB0byBkbyBvdmVybGFwcGVkIGxvYWQgYW5kIHN0b3JlIGNvcHkKKyAgIC0gRXhwbGljaXQgYnJhbmNoIHByZWRpY3Rpb25zIChiYXNlZCBvbiBtZWFzdXJlZCBicmFuY2ggcHJvYmFiaWxpdGllcykKKyAgIC0gRGVmZXJyaW5nIG1hdGNoIGNvcHkgYW5kIGludGVyc3BlcnNlZCBpdCB3aXRoIGRlY29kaW5nIHN1YnNlcXVlbnQgY29kZXMKKyAgIC0gU3dhcHBpbmcgbGl0ZXJhbC9sZW5ndGggZWxzZQorICAgLSBTd2FwcGluZyB3aW5kb3cvZGlyZWN0IGVsc2UKKyAgIC0gTGFyZ2VyIHVucm9sbGVkIGNvcHkgbG9vcHMgKHRocmVlIGlzIGFib3V0IHJpZ2h0KQorICAgLSBNb3ZpbmcgbGVuIC09IDMgc3RhdGVtZW50IGludG8gbWlkZGxlIG9mIGxvb3AKKyAqLworCisjZW5kaWYgLyogIUFTTUlORiAqLwpkaWZmIC0tZ2l0IGEvbGliL3psaWJfaW5mbGF0ZS9pbmZmYXN0LmggYi9saWIvemxpYl9pbmZsYXRlL2luZmZhc3QuaAppbmRleCBmYzcyMGYwLi40MDMxNWQ5IDEwMDY0NAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZmZhc3QuaAorKysgYi9saWIvemxpYl9pbmZsYXRlL2luZmZhc3QuaApAQCAtMSw2ICsxLDYgQEAKIC8qIGluZmZhc3QuaCAtLSBoZWFkZXIgdG8gdXNlIGluZmZhc3QuYwotICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggTWFyayBBZGxlcgotICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaCAKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAzIE1hcmsgQWRsZXIKKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCiAvKiBXQVJOSU5HOiB0aGlzIGZpbGUgc2hvdWxkICpub3QqIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLiBJdCBpcwpAQCAtOCwxMCArOCw0IEBACiAgICBzdWJqZWN0IHRvIGNoYW5nZS4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IHVzZSB6bGliLmguCiAgKi8KIAotZXh0ZXJuIGludCB6bGliX2luZmxhdGVfZmFzdCAoCi0gICAgdUludCwKLSAgICB1SW50LAotICAgIGluZmxhdGVfaHVmdCAqLAotICAgIGluZmxhdGVfaHVmdCAqLAotICAgIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAqLAotICAgIHpfc3RyZWFtcCApOwordm9pZCBpbmZsYXRlX2Zhc3QgKHpfc3RyZWFtcCBzdHJtLCB1bnNpZ25lZCBzdGFydCk7CmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL2luZmZpeGVkLmggYi9saWIvemxpYl9pbmZsYXRlL2luZmZpeGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVlZDRiNQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi96bGliX2luZmxhdGUvaW5mZml4ZWQuaApAQCAtMCwwICsxLDk0IEBACisgICAgLyogaW5mZml4ZWQuaCAtLSB0YWJsZSBmb3IgZGVjb2RpbmcgZml4ZWQgY29kZXMKKyAgICAgKiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBtYWtlZml4ZWQoKS4KKyAgICAgKi8KKworICAgIC8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0CisgICAgICAgaXMgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYW5kCisgICAgICAgaXMgc3ViamVjdCB0byBjaGFuZ2UuIEFwcGxpY2F0aW9ucyBzaG91bGQgb25seSB1c2UgemxpYi5oLgorICAgICAqLworCisgICAgc3RhdGljIGNvbnN0IGNvZGUgbGVuZml4WzUxMl0gPSB7CisgICAgICAgIHs5Niw3LDB9LHswLDgsODB9LHswLDgsMTZ9LHsyMCw4LDExNX0sezE4LDcsMzF9LHswLDgsMTEyfSx7MCw4LDQ4fSwKKyAgICAgICAgezAsOSwxOTJ9LHsxNiw3LDEwfSx7MCw4LDk2fSx7MCw4LDMyfSx7MCw5LDE2MH0sezAsOCwwfSx7MCw4LDEyOH0sCisgICAgICAgIHswLDgsNjR9LHswLDksMjI0fSx7MTYsNyw2fSx7MCw4LDg4fSx7MCw4LDI0fSx7MCw5LDE0NH0sezE5LDcsNTl9LAorICAgICAgICB7MCw4LDEyMH0sezAsOCw1Nn0sezAsOSwyMDh9LHsxNyw3LDE3fSx7MCw4LDEwNH0sezAsOCw0MH0sezAsOSwxNzZ9LAorICAgICAgICB7MCw4LDh9LHswLDgsMTM2fSx7MCw4LDcyfSx7MCw5LDI0MH0sezE2LDcsNH0sezAsOCw4NH0sezAsOCwyMH0sCisgICAgICAgIHsyMSw4LDIyN30sezE5LDcsNDN9LHswLDgsMTE2fSx7MCw4LDUyfSx7MCw5LDIwMH0sezE3LDcsMTN9LHswLDgsMTAwfSwKKyAgICAgICAgezAsOCwzNn0sezAsOSwxNjh9LHswLDgsNH0sezAsOCwxMzJ9LHswLDgsNjh9LHswLDksMjMyfSx7MTYsNyw4fSwKKyAgICAgICAgezAsOCw5Mn0sezAsOCwyOH0sezAsOSwxNTJ9LHsyMCw3LDgzfSx7MCw4LDEyNH0sezAsOCw2MH0sezAsOSwyMTZ9LAorICAgICAgICB7MTgsNywyM30sezAsOCwxMDh9LHswLDgsNDR9LHswLDksMTg0fSx7MCw4LDEyfSx7MCw4LDE0MH0sezAsOCw3Nn0sCisgICAgICAgIHswLDksMjQ4fSx7MTYsNywzfSx7MCw4LDgyfSx7MCw4LDE4fSx7MjEsOCwxNjN9LHsxOSw3LDM1fSx7MCw4LDExNH0sCisgICAgICAgIHswLDgsNTB9LHswLDksMTk2fSx7MTcsNywxMX0sezAsOCw5OH0sezAsOCwzNH0sezAsOSwxNjR9LHswLDgsMn0sCisgICAgICAgIHswLDgsMTMwfSx7MCw4LDY2fSx7MCw5LDIyOH0sezE2LDcsN30sezAsOCw5MH0sezAsOCwyNn0sezAsOSwxNDh9LAorICAgICAgICB7MjAsNyw2N30sezAsOCwxMjJ9LHswLDgsNTh9LHswLDksMjEyfSx7MTgsNywxOX0sezAsOCwxMDZ9LHswLDgsNDJ9LAorICAgICAgICB7MCw5LDE4MH0sezAsOCwxMH0sezAsOCwxMzh9LHswLDgsNzR9LHswLDksMjQ0fSx7MTYsNyw1fSx7MCw4LDg2fSwKKyAgICAgICAgezAsOCwyMn0sezY0LDgsMH0sezE5LDcsNTF9LHswLDgsMTE4fSx7MCw4LDU0fSx7MCw5LDIwNH0sezE3LDcsMTV9LAorICAgICAgICB7MCw4LDEwMn0sezAsOCwzOH0sezAsOSwxNzJ9LHswLDgsNn0sezAsOCwxMzR9LHswLDgsNzB9LHswLDksMjM2fSwKKyAgICAgICAgezE2LDcsOX0sezAsOCw5NH0sezAsOCwzMH0sezAsOSwxNTZ9LHsyMCw3LDk5fSx7MCw4LDEyNn0sezAsOCw2Mn0sCisgICAgICAgIHswLDksMjIwfSx7MTgsNywyN30sezAsOCwxMTB9LHswLDgsNDZ9LHswLDksMTg4fSx7MCw4LDE0fSx7MCw4LDE0Mn0sCisgICAgICAgIHswLDgsNzh9LHswLDksMjUyfSx7OTYsNywwfSx7MCw4LDgxfSx7MCw4LDE3fSx7MjEsOCwxMzF9LHsxOCw3LDMxfSwKKyAgICAgICAgezAsOCwxMTN9LHswLDgsNDl9LHswLDksMTk0fSx7MTYsNywxMH0sezAsOCw5N30sezAsOCwzM30sezAsOSwxNjJ9LAorICAgICAgICB7MCw4LDF9LHswLDgsMTI5fSx7MCw4LDY1fSx7MCw5LDIyNn0sezE2LDcsNn0sezAsOCw4OX0sezAsOCwyNX0sCisgICAgICAgIHswLDksMTQ2fSx7MTksNyw1OX0sezAsOCwxMjF9LHswLDgsNTd9LHswLDksMjEwfSx7MTcsNywxN30sezAsOCwxMDV9LAorICAgICAgICB7MCw4LDQxfSx7MCw5LDE3OH0sezAsOCw5fSx7MCw4LDEzN30sezAsOCw3M30sezAsOSwyNDJ9LHsxNiw3LDR9LAorICAgICAgICB7MCw4LDg1fSx7MCw4LDIxfSx7MTYsOCwyNTh9LHsxOSw3LDQzfSx7MCw4LDExN30sezAsOCw1M30sezAsOSwyMDJ9LAorICAgICAgICB7MTcsNywxM30sezAsOCwxMDF9LHswLDgsMzd9LHswLDksMTcwfSx7MCw4LDV9LHswLDgsMTMzfSx7MCw4LDY5fSwKKyAgICAgICAgezAsOSwyMzR9LHsxNiw3LDh9LHswLDgsOTN9LHswLDgsMjl9LHswLDksMTU0fSx7MjAsNyw4M30sezAsOCwxMjV9LAorICAgICAgICB7MCw4LDYxfSx7MCw5LDIxOH0sezE4LDcsMjN9LHswLDgsMTA5fSx7MCw4LDQ1fSx7MCw5LDE4Nn0sezAsOCwxM30sCisgICAgICAgIHswLDgsMTQxfSx7MCw4LDc3fSx7MCw5LDI1MH0sezE2LDcsM30sezAsOCw4M30sezAsOCwxOX0sezIxLDgsMTk1fSwKKyAgICAgICAgezE5LDcsMzV9LHswLDgsMTE1fSx7MCw4LDUxfSx7MCw5LDE5OH0sezE3LDcsMTF9LHswLDgsOTl9LHswLDgsMzV9LAorICAgICAgICB7MCw5LDE2Nn0sezAsOCwzfSx7MCw4LDEzMX0sezAsOCw2N30sezAsOSwyMzB9LHsxNiw3LDd9LHswLDgsOTF9LAorICAgICAgICB7MCw4LDI3fSx7MCw5LDE1MH0sezIwLDcsNjd9LHswLDgsMTIzfSx7MCw4LDU5fSx7MCw5LDIxNH0sezE4LDcsMTl9LAorICAgICAgICB7MCw4LDEwN30sezAsOCw0M30sezAsOSwxODJ9LHswLDgsMTF9LHswLDgsMTM5fSx7MCw4LDc1fSx7MCw5LDI0Nn0sCisgICAgICAgIHsxNiw3LDV9LHswLDgsODd9LHswLDgsMjN9LHs2NCw4LDB9LHsxOSw3LDUxfSx7MCw4LDExOX0sezAsOCw1NX0sCisgICAgICAgIHswLDksMjA2fSx7MTcsNywxNX0sezAsOCwxMDN9LHswLDgsMzl9LHswLDksMTc0fSx7MCw4LDd9LHswLDgsMTM1fSwKKyAgICAgICAgezAsOCw3MX0sezAsOSwyMzh9LHsxNiw3LDl9LHswLDgsOTV9LHswLDgsMzF9LHswLDksMTU4fSx7MjAsNyw5OX0sCisgICAgICAgIHswLDgsMTI3fSx7MCw4LDYzfSx7MCw5LDIyMn0sezE4LDcsMjd9LHswLDgsMTExfSx7MCw4LDQ3fSx7MCw5LDE5MH0sCisgICAgICAgIHswLDgsMTV9LHswLDgsMTQzfSx7MCw4LDc5fSx7MCw5LDI1NH0sezk2LDcsMH0sezAsOCw4MH0sezAsOCwxNn0sCisgICAgICAgIHsyMCw4LDExNX0sezE4LDcsMzF9LHswLDgsMTEyfSx7MCw4LDQ4fSx7MCw5LDE5M30sezE2LDcsMTB9LHswLDgsOTZ9LAorICAgICAgICB7MCw4LDMyfSx7MCw5LDE2MX0sezAsOCwwfSx7MCw4LDEyOH0sezAsOCw2NH0sezAsOSwyMjV9LHsxNiw3LDZ9LAorICAgICAgICB7MCw4LDg4fSx7MCw4LDI0fSx7MCw5LDE0NX0sezE5LDcsNTl9LHswLDgsMTIwfSx7MCw4LDU2fSx7MCw5LDIwOX0sCisgICAgICAgIHsxNyw3LDE3fSx7MCw4LDEwNH0sezAsOCw0MH0sezAsOSwxNzd9LHswLDgsOH0sezAsOCwxMzZ9LHswLDgsNzJ9LAorICAgICAgICB7MCw5LDI0MX0sezE2LDcsNH0sezAsOCw4NH0sezAsOCwyMH0sezIxLDgsMjI3fSx7MTksNyw0M30sezAsOCwxMTZ9LAorICAgICAgICB7MCw4LDUyfSx7MCw5LDIwMX0sezE3LDcsMTN9LHswLDgsMTAwfSx7MCw4LDM2fSx7MCw5LDE2OX0sezAsOCw0fSwKKyAgICAgICAgezAsOCwxMzJ9LHswLDgsNjh9LHswLDksMjMzfSx7MTYsNyw4fSx7MCw4LDkyfSx7MCw4LDI4fSx7MCw5LDE1M30sCisgICAgICAgIHsyMCw3LDgzfSx7MCw4LDEyNH0sezAsOCw2MH0sezAsOSwyMTd9LHsxOCw3LDIzfSx7MCw4LDEwOH0sezAsOCw0NH0sCisgICAgICAgIHswLDksMTg1fSx7MCw4LDEyfSx7MCw4LDE0MH0sezAsOCw3Nn0sezAsOSwyNDl9LHsxNiw3LDN9LHswLDgsODJ9LAorICAgICAgICB7MCw4LDE4fSx7MjEsOCwxNjN9LHsxOSw3LDM1fSx7MCw4LDExNH0sezAsOCw1MH0sezAsOSwxOTd9LHsxNyw3LDExfSwKKyAgICAgICAgezAsOCw5OH0sezAsOCwzNH0sezAsOSwxNjV9LHswLDgsMn0sezAsOCwxMzB9LHswLDgsNjZ9LHswLDksMjI5fSwKKyAgICAgICAgezE2LDcsN30sezAsOCw5MH0sezAsOCwyNn0sezAsOSwxNDl9LHsyMCw3LDY3fSx7MCw4LDEyMn0sezAsOCw1OH0sCisgICAgICAgIHswLDksMjEzfSx7MTgsNywxOX0sezAsOCwxMDZ9LHswLDgsNDJ9LHswLDksMTgxfSx7MCw4LDEwfSx7MCw4LDEzOH0sCisgICAgICAgIHswLDgsNzR9LHswLDksMjQ1fSx7MTYsNyw1fSx7MCw4LDg2fSx7MCw4LDIyfSx7NjQsOCwwfSx7MTksNyw1MX0sCisgICAgICAgIHswLDgsMTE4fSx7MCw4LDU0fSx7MCw5LDIwNX0sezE3LDcsMTV9LHswLDgsMTAyfSx7MCw4LDM4fSx7MCw5LDE3M30sCisgICAgICAgIHswLDgsNn0sezAsOCwxMzR9LHswLDgsNzB9LHswLDksMjM3fSx7MTYsNyw5fSx7MCw4LDk0fSx7MCw4LDMwfSwKKyAgICAgICAgezAsOSwxNTd9LHsyMCw3LDk5fSx7MCw4LDEyNn0sezAsOCw2Mn0sezAsOSwyMjF9LHsxOCw3LDI3fSx7MCw4LDExMH0sCisgICAgICAgIHswLDgsNDZ9LHswLDksMTg5fSx7MCw4LDE0fSx7MCw4LDE0Mn0sezAsOCw3OH0sezAsOSwyNTN9LHs5Niw3LDB9LAorICAgICAgICB7MCw4LDgxfSx7MCw4LDE3fSx7MjEsOCwxMzF9LHsxOCw3LDMxfSx7MCw4LDExM30sezAsOCw0OX0sezAsOSwxOTV9LAorICAgICAgICB7MTYsNywxMH0sezAsOCw5N30sezAsOCwzM30sezAsOSwxNjN9LHswLDgsMX0sezAsOCwxMjl9LHswLDgsNjV9LAorICAgICAgICB7MCw5LDIyN30sezE2LDcsNn0sezAsOCw4OX0sezAsOCwyNX0sezAsOSwxNDd9LHsxOSw3LDU5fSx7MCw4LDEyMX0sCisgICAgICAgIHswLDgsNTd9LHswLDksMjExfSx7MTcsNywxN30sezAsOCwxMDV9LHswLDgsNDF9LHswLDksMTc5fSx7MCw4LDl9LAorICAgICAgICB7MCw4LDEzN30sezAsOCw3M30sezAsOSwyNDN9LHsxNiw3LDR9LHswLDgsODV9LHswLDgsMjF9LHsxNiw4LDI1OH0sCisgICAgICAgIHsxOSw3LDQzfSx7MCw4LDExN30sezAsOCw1M30sezAsOSwyMDN9LHsxNyw3LDEzfSx7MCw4LDEwMX0sezAsOCwzN30sCisgICAgICAgIHswLDksMTcxfSx7MCw4LDV9LHswLDgsMTMzfSx7MCw4LDY5fSx7MCw5LDIzNX0sezE2LDcsOH0sezAsOCw5M30sCisgICAgICAgIHswLDgsMjl9LHswLDksMTU1fSx7MjAsNyw4M30sezAsOCwxMjV9LHswLDgsNjF9LHswLDksMjE5fSx7MTgsNywyM30sCisgICAgICAgIHswLDgsMTA5fSx7MCw4LDQ1fSx7MCw5LDE4N30sezAsOCwxM30sezAsOCwxNDF9LHswLDgsNzd9LHswLDksMjUxfSwKKyAgICAgICAgezE2LDcsM30sezAsOCw4M30sezAsOCwxOX0sezIxLDgsMTk1fSx7MTksNywzNX0sezAsOCwxMTV9LHswLDgsNTF9LAorICAgICAgICB7MCw5LDE5OX0sezE3LDcsMTF9LHswLDgsOTl9LHswLDgsMzV9LHswLDksMTY3fSx7MCw4LDN9LHswLDgsMTMxfSwKKyAgICAgICAgezAsOCw2N30sezAsOSwyMzF9LHsxNiw3LDd9LHswLDgsOTF9LHswLDgsMjd9LHswLDksMTUxfSx7MjAsNyw2N30sCisgICAgICAgIHswLDgsMTIzfSx7MCw4LDU5fSx7MCw5LDIxNX0sezE4LDcsMTl9LHswLDgsMTA3fSx7MCw4LDQzfSx7MCw5LDE4M30sCisgICAgICAgIHswLDgsMTF9LHswLDgsMTM5fSx7MCw4LDc1fSx7MCw5LDI0N30sezE2LDcsNX0sezAsOCw4N30sezAsOCwyM30sCisgICAgICAgIHs2NCw4LDB9LHsxOSw3LDUxfSx7MCw4LDExOX0sezAsOCw1NX0sezAsOSwyMDd9LHsxNyw3LDE1fSx7MCw4LDEwM30sCisgICAgICAgIHswLDgsMzl9LHswLDksMTc1fSx7MCw4LDd9LHswLDgsMTM1fSx7MCw4LDcxfSx7MCw5LDIzOX0sezE2LDcsOX0sCisgICAgICAgIHswLDgsOTV9LHswLDgsMzF9LHswLDksMTU5fSx7MjAsNyw5OX0sezAsOCwxMjd9LHswLDgsNjN9LHswLDksMjIzfSwKKyAgICAgICAgezE4LDcsMjd9LHswLDgsMTExfSx7MCw4LDQ3fSx7MCw5LDE5MX0sezAsOCwxNX0sezAsOCwxNDN9LHswLDgsNzl9LAorICAgICAgICB7MCw5LDI1NX0KKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGNvZGUgZGlzdGZpeFszMl0gPSB7CisgICAgICAgIHsxNiw1LDF9LHsyMyw1LDI1N30sezE5LDUsMTd9LHsyNyw1LDQwOTd9LHsxNyw1LDV9LHsyNSw1LDEwMjV9LAorICAgICAgICB7MjEsNSw2NX0sezI5LDUsMTYzODV9LHsxNiw1LDN9LHsyNCw1LDUxM30sezIwLDUsMzN9LHsyOCw1LDgxOTN9LAorICAgICAgICB7MTgsNSw5fSx7MjYsNSwyMDQ5fSx7MjIsNSwxMjl9LHs2NCw1LDB9LHsxNiw1LDJ9LHsyMyw1LDM4NX0sCisgICAgICAgIHsxOSw1LDI1fSx7MjcsNSw2MTQ1fSx7MTcsNSw3fSx7MjUsNSwxNTM3fSx7MjEsNSw5N30sezI5LDUsMjQ1Nzd9LAorICAgICAgICB7MTYsNSw0fSx7MjQsNSw3Njl9LHsyMCw1LDQ5fSx7MjgsNSwxMjI4OX0sezE4LDUsMTN9LHsyNiw1LDMwNzN9LAorICAgICAgICB7MjIsNSwxOTN9LHs2NCw1LDB9CisgICAgfTsKZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mbGF0ZS5jIGIvbGliL3psaWJfaW5mbGF0ZS9pbmZsYXRlLmMKaW5kZXggMzFiOWU5MC4uN2Y5MjJkYyAxMDA2NDQKLS0tIGEvbGliL3psaWJfaW5mbGF0ZS9pbmZsYXRlLmMKKysrIGIvbGliL3psaWJfaW5mbGF0ZS9pbmZsYXRlLmMKQEAgLTEsODkgKzEsMTQ4IEBACi0vKiBpbmZsYXRlLmMgLS0gemxpYiBpbnRlcmZhY2UgdG8gaW5mbGF0ZSBtb2R1bGVzCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBNYXJrIEFkbGVyCi0gKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oIAorLyogaW5mbGF0ZS5jIC0tIHpsaWIgZGVjb21wcmVzc2lvbgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICoKKyAqIEJhc2VkIG9uIHpsaWIgMS4yLjMgYnV0IG1vZGlmaWVkIGZvciB0aGUgTGludXggS2VybmVsIGJ5CisgKiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZEBvcGVuZWRoYW5kLmNvbT4KKyAqCisgKiBDaGFuZ2VzIG1haW5seSBmb3Igc3RhdGljIGluc3RlYWQgb2YgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbgorICoKICAqLwogCiAjaW5jbHVkZSA8bGludXgvenV0aWwuaD4KLSNpbmNsdWRlICJpbmZibG9jay5oIgorI2luY2x1ZGUgImluZnRyZWVzLmgiCisjaW5jbHVkZSAiaW5mbGF0ZS5oIgorI2luY2x1ZGUgImluZmZhc3QuaCIKICNpbmNsdWRlICJpbmZ1dGlsLmgiCiAKIGludCB6bGliX2luZmxhdGVfd29ya3NwYWNlc2l6ZSh2b2lkKQogewotICByZXR1cm4gc2l6ZW9mKHN0cnVjdCBpbmZsYXRlX3dvcmtzcGFjZSk7CisgICAgcmV0dXJuIHNpemVvZihzdHJ1Y3QgaW5mbGF0ZV93b3Jrc3BhY2UpOworfQorCitpbnQgemxpYl9pbmZsYXRlUmVzZXQoel9zdHJlYW1wIHN0cm0pCit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgKnN0YXRlOworCisgICAgaWYgKHN0cm0gPT0gTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBOVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgKilzdHJtLT5zdGF0ZTsKKyAgICBzdHJtLT50b3RhbF9pbiA9IHN0cm0tPnRvdGFsX291dCA9IHN0YXRlLT50b3RhbCA9IDA7CisgICAgc3RybS0+bXNnID0gTlVMTDsKKyAgICBzdHJtLT5hZGxlciA9IDE7ICAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovCisgICAgc3RhdGUtPm1vZGUgPSBIRUFEOworICAgIHN0YXRlLT5sYXN0ID0gMDsKKyAgICBzdGF0ZS0+aGF2ZWRpY3QgPSAwOworICAgIHN0YXRlLT5kbWF4ID0gMzI3NjhVOworICAgIHN0YXRlLT5ob2xkID0gMDsKKyAgICBzdGF0ZS0+Yml0cyA9IDA7CisgICAgc3RhdGUtPmxlbmNvZGUgPSBzdGF0ZS0+ZGlzdGNvZGUgPSBzdGF0ZS0+bmV4dCA9IHN0YXRlLT5jb2RlczsKKworICAgIC8qIEluaXRpYWxpc2UgV2luZG93ICovCisgICAgc3RhdGUtPndzaXplID0gMVUgPDwgc3RhdGUtPndiaXRzOworICAgIHN0YXRlLT53cml0ZSA9IDA7CisgICAgc3RhdGUtPndoYXZlID0gMDsKKworICAgIHJldHVybiBaX09LOworfQorCisjaWYgMAoraW50IHpsaWJfaW5mbGF0ZVByaW1lKHpfc3RyZWFtcCBzdHJtLCBpbnQgYml0cywgaW50IHZhbHVlKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IE5VTEwgfHwgc3RybS0+c3RhdGUgPT0gTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlICopc3RybS0+c3RhdGU7CisgICAgaWYgKGJpdHMgPiAxNiB8fCBzdGF0ZS0+Yml0cyArIGJpdHMgPiAzMikgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHZhbHVlICY9ICgxTCA8PCBiaXRzKSAtIDE7CisgICAgc3RhdGUtPmhvbGQgKz0gdmFsdWUgPDwgc3RhdGUtPmJpdHM7CisgICAgc3RhdGUtPmJpdHMgKz0gYml0czsKKyAgICByZXR1cm4gWl9PSzsKK30KKyNlbmRpZgorCitpbnQgemxpYl9pbmZsYXRlSW5pdDIoel9zdHJlYW1wIHN0cm0sIGludCB3aW5kb3dCaXRzKQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IE5VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzdHJtLT5tc2cgPSBOVUxMOyAgICAgICAgICAgICAgICAgLyogaW4gY2FzZSB3ZSByZXR1cm4gYW4gZXJyb3IgKi8KKworICAgIHN0YXRlID0gJldTKHN0cm0pLT5pbmZsYXRlX3N0YXRlOworICAgIHN0cm0tPnN0YXRlID0gKHN0cnVjdCBpbnRlcm5hbF9zdGF0ZSAqKXN0YXRlOworCisgICAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7CisgICAgICAgIHN0YXRlLT53cmFwID0gMDsKKyAgICAgICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUtPndyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7CisgICAgfQorICAgIGlmICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIH0KKyAgICBzdGF0ZS0+d2JpdHMgPSAodW5zaWduZWQpd2luZG93Qml0czsKKyAgICBzdGF0ZS0+d2luZG93ID0gJldTKHN0cm0pLT53b3JraW5nX3dpbmRvd1swXTsKKworICAgIHJldHVybiB6bGliX2luZmxhdGVSZXNldChzdHJtKTsKK30KKworLyoKKyAgIFJldHVybiBzdGF0ZSB3aXRoIGxlbmd0aCBhbmQgZGlzdGFuY2UgZGVjb2RpbmcgdGFibGVzIGFuZCBpbmRleCBzaXplcyBzZXQgdG8KKyAgIGZpeGVkIGNvZGUgZGVjb2RpbmcuICBUaGlzIHJldHVybnMgZml4ZWQgdGFibGVzIGZyb20gaW5mZml4ZWQuaC4KKyAqLworc3RhdGljIHZvaWQgemxpYl9maXhlZHRhYmxlcyhzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSAqc3RhdGUpCit7CisjICAgaW5jbHVkZSAiaW5mZml4ZWQuaCIKKyAgICBzdGF0ZS0+bGVuY29kZSA9IGxlbmZpeDsKKyAgICBzdGF0ZS0+bGVuYml0cyA9IDk7CisgICAgc3RhdGUtPmRpc3Rjb2RlID0gZGlzdGZpeDsKKyAgICBzdGF0ZS0+ZGlzdGJpdHMgPSA1OwogfQogCiAKLWludCB6bGliX2luZmxhdGVSZXNldCgKLQl6X3N0cmVhbXAgegotKQorLyoKKyAgIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmUKKyAgIHJldHVybmluZy4gVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIGEgd2luZG93IGlzIGFscmVhZHkgaW4gdXNlLCBvciB3aGVuCisgICBvdXRwdXQgaGFzIGJlZW4gd3JpdHRlbiBkdXJpbmcgdGhpcyBpbmZsYXRlIGNhbGwsIGJ1dCB0aGUgZW5kIG9mIHRoZSBkZWZsYXRlCisgICBzdHJlYW0gaGFzIG5vdCBiZWVuIHJlYWNoZWQgeWV0LiBJdCBpcyBhbHNvIGNhbGxlZCB0byB3aW5kb3cgZGljdGlvbmFyeSBkYXRhCisgICB3aGVuIGEgZGljdGlvbmFyeSBpcyBsb2FkZWQuCisKKyAgIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWQKKyAgIGFkdmFudGFnZSwgc2luY2Ugb25seSB0aGUgbGFzdCAzMksgb2Ygb3V0cHV0IGlzIGNvcGllZCB0byB0aGUgc2xpZGluZyB3aW5kb3cKKyAgIHVwb24gcmV0dXJuIGZyb20gaW5mbGF0ZSgpLCBhbmQgc2luY2UgYWxsIGRpc3RhbmNlcyBhZnRlciB0aGUgZmlyc3QgMzJLIG9mCisgICBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuCisgICBUaGUgYWR2YW50YWdlIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIHNpemUgb2YgdGhlIHByb2Nlc3NvcidzIGRhdGEgY2FjaGVzLgorICovCitzdGF0aWMgdm9pZCB6bGliX3VwZGF0ZXdpbmRvdyh6X3N0cmVhbXAgc3RybSwgdW5zaWduZWQgb3V0KQogewotICBpZiAoeiA9PSBOVUxMIHx8IHotPnN0YXRlID09IE5VTEwgfHwgei0+d29ya3NwYWNlID09IE5VTEwpCi0gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwotICB6LT50b3RhbF9pbiA9IHotPnRvdGFsX291dCA9IDA7Ci0gIHotPm1zZyA9IE5VTEw7Ci0gIHotPnN0YXRlLT5tb2RlID0gei0+c3RhdGUtPm5vd3JhcCA/IEJMT0NLUyA6IE1FVEhPRDsKLSAgemxpYl9pbmZsYXRlX2Jsb2Nrc19yZXNldCh6LT5zdGF0ZS0+YmxvY2tzLCB6LCBOVUxMKTsKLSAgcmV0dXJuIFpfT0s7Ci19CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgKnN0YXRlOworICAgIHVuc2lnbmVkIGNvcHksIGRpc3Q7CiAKKyAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSAqKXN0cm0tPnN0YXRlOwogCi1pbnQgemxpYl9pbmZsYXRlRW5kKAotCXpfc3RyZWFtcCB6Ci0pCi17Ci0gIGlmICh6ID09IE5VTEwgfHwgei0+c3RhdGUgPT0gTlVMTCB8fCB6LT53b3Jrc3BhY2UgPT0gTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIGlmICh6LT5zdGF0ZS0+YmxvY2tzICE9IE5VTEwpCi0gICAgemxpYl9pbmZsYXRlX2Jsb2Nrc19mcmVlKHotPnN0YXRlLT5ibG9ja3MsIHopOwotICB6LT5zdGF0ZSA9IE5VTEw7Ci0gIHJldHVybiBaX09LOwotfQotCi0KLWludCB6bGliX2luZmxhdGVJbml0Ml8oCi0Jel9zdHJlYW1wIHosCi0JaW50IHcsCi0JY29uc3QgY2hhciAqdmVyc2lvbiwKLQlpbnQgc3RyZWFtX3NpemUKLSkKLXsKLSAgaWYgKHZlcnNpb24gPT0gTlVMTCB8fCB2ZXJzaW9uWzBdICE9IFpMSUJfVkVSU0lPTlswXSB8fAotICAgICAgc3RyZWFtX3NpemUgIT0gc2l6ZW9mKHpfc3RyZWFtKSB8fCB6LT53b3Jrc3BhY2UgPT0gTlVMTCkKLSAgICAgIHJldHVybiBaX1ZFUlNJT05fRVJST1I7Ci0KLSAgLyogaW5pdGlhbGl6ZSBzdGF0ZSAqLwotICB6LT5tc2cgPSBOVUxMOwotICB6LT5zdGF0ZSA9ICZXUyh6KS0+aW50ZXJuYWxfc3RhdGU7Ci0gIHotPnN0YXRlLT5ibG9ja3MgPSBOVUxMOwotCi0gIC8qIGhhbmRsZSB1bmRvY3VtZW50ZWQgbm93cmFwIG9wdGlvbiAobm8gemxpYiBoZWFkZXIgb3IgY2hlY2spICovCi0gIHotPnN0YXRlLT5ub3dyYXAgPSAwOwotICBpZiAodyA8IDApCi0gIHsKLSAgICB3ID0gLSB3OwotICAgIHotPnN0YXRlLT5ub3dyYXAgPSAxOwotICB9Ci0KLSAgLyogc2V0IHdpbmRvdyBzaXplICovCi0gIGlmICh3IDwgOCB8fCB3ID4gMTUpCi0gIHsKLSAgICB6bGliX2luZmxhdGVFbmQoeik7Ci0gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwotICB9Ci0gIHotPnN0YXRlLT53Yml0cyA9ICh1SW50KXc7Ci0KLSAgLyogY3JlYXRlIGluZmxhdGVfYmxvY2tzIHN0YXRlICovCi0gIGlmICgoei0+c3RhdGUtPmJsb2NrcyA9Ci0gICAgICB6bGliX2luZmxhdGVfYmxvY2tzX25ldyh6LCB6LT5zdGF0ZS0+bm93cmFwID8gTlVMTCA6IHpsaWJfYWRsZXIzMiwgKHVJbnQpMSA8PCB3KSkKLSAgICAgID09IE5VTEwpCi0gIHsKLSAgICB6bGliX2luZmxhdGVFbmQoeik7Ci0gICAgcmV0dXJuIFpfTUVNX0VSUk9SOwotICB9Ci0KLSAgLyogcmVzZXQgc3RhdGUgKi8KLSAgemxpYl9pbmZsYXRlUmVzZXQoeik7Ci0gIHJldHVybiBaX09LOworICAgIC8qIGNvcHkgc3RhdGUtPndzaXplIG9yIGxlc3Mgb3V0cHV0IGJ5dGVzIGludG8gdGhlIGNpcmN1bGFyIHdpbmRvdyAqLworICAgIGNvcHkgPSBvdXQgLSBzdHJtLT5hdmFpbF9vdXQ7CisgICAgaWYgKGNvcHkgPj0gc3RhdGUtPndzaXplKSB7CisgICAgICAgIG1lbWNweShzdGF0ZS0+d2luZG93LCBzdHJtLT5uZXh0X291dCAtIHN0YXRlLT53c2l6ZSwgc3RhdGUtPndzaXplKTsKKyAgICAgICAgc3RhdGUtPndyaXRlID0gMDsKKyAgICAgICAgc3RhdGUtPndoYXZlID0gc3RhdGUtPndzaXplOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGlzdCA9IHN0YXRlLT53c2l6ZSAtIHN0YXRlLT53cml0ZTsKKyAgICAgICAgaWYgKGRpc3QgPiBjb3B5KSBkaXN0ID0gY29weTsKKyAgICAgICAgbWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d3JpdGUsIHN0cm0tPm5leHRfb3V0IC0gY29weSwgZGlzdCk7CisgICAgICAgIGNvcHkgLT0gZGlzdDsKKyAgICAgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgICAgIG1lbWNweShzdGF0ZS0+d2luZG93LCBzdHJtLT5uZXh0X291dCAtIGNvcHksIGNvcHkpOworICAgICAgICAgICAgc3RhdGUtPndyaXRlID0gY29weTsKKyAgICAgICAgICAgIHN0YXRlLT53aGF2ZSA9IHN0YXRlLT53c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRlLT53cml0ZSArPSBkaXN0OworICAgICAgICAgICAgaWYgKHN0YXRlLT53cml0ZSA9PSBzdGF0ZS0+d3NpemUpIHN0YXRlLT53cml0ZSA9IDA7CisgICAgICAgICAgICBpZiAoc3RhdGUtPndoYXZlIDwgc3RhdGUtPndzaXplKSBzdGF0ZS0+d2hhdmUgKz0gZGlzdDsKKyAgICAgICAgfQorICAgIH0KIH0KIAogCkBAIC05MSwxNTcgKzE1MCw3NjQgQEAKICAqIEF0IHRoZSBlbmQgb2YgYSBEZWZsYXRlLWNvbXByZXNzZWQgUFBQIHBhY2tldCwgd2UgZXhwZWN0IHRvIGhhdmUgc2VlbgogICogYSBgc3RvcmVkJyBibG9jayB0eXBlIHZhbHVlIGJ1dCBub3QgdGhlICh6ZXJvKSBsZW5ndGggYnl0ZXMuCiAgKi8KLXN0YXRpYyBpbnQgemxpYl9pbmZsYXRlX3BhY2tldF9mbHVzaChpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMpCisvKgorICAgUmV0dXJucyB0cnVlIGlmIGluZmxhdGUgaXMgY3VycmVudGx5IGF0IHRoZSBlbmQgb2YgYSBibG9jayBnZW5lcmF0ZWQgYnkKKyAgIFpfU1lOQ19GTFVTSCBvciBaX0ZVTExfRkxVU0guIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBvbmUgUFBQCisgICBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlIGFuIGFkZGl0aW9uYWwgc2FmZXR5IGNoZWNrLiBQUFAgdXNlcworICAgWl9TWU5DX0ZMVVNIIGJ1dCByZW1vdmVzIHRoZSBsZW5ndGggYnl0ZXMgb2YgdGhlIHJlc3VsdGluZyBlbXB0eSBzdG9yZWQKKyAgIGJsb2NrLiBXaGVuIGRlY29tcHJlc3NpbmcsIFBQUCBjaGVja3MgdGhhdCBhdCB0aGUgZW5kIG9mIGlucHV0IHBhY2tldCwKKyAgIGluZmxhdGUgaXMgd2FpdGluZyBmb3IgdGhlc2UgbGVuZ3RoIGJ5dGVzLgorICovCitzdGF0aWMgaW50IHpsaWJfaW5mbGF0ZVN5bmNQYWNrZXQoel9zdHJlYW1wIHN0cm0pCiB7Ci0gICAgaWYgKHMtPm1vZGUgIT0gTEVOUykKLQlyZXR1cm4gWl9EQVRBX0VSUk9SOwotICAgIHMtPm1vZGUgPSBUWVBFOworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlICpzdGF0ZTsKKworICAgIGlmIChzdHJtID09IE5VTEwgfHwgc3RybS0+c3RhdGUgPT0gTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlICopc3RybS0+c3RhdGU7CisKKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gU1RPUkVEICYmIHN0YXRlLT5iaXRzID09IDApIHsKKwlzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgIHJldHVybiBaX09LOworICAgIH0KKyAgICByZXR1cm4gWl9EQVRBX0VSUk9SOworfQorCisvKiBNYWNyb3MgZm9yIGluZmxhdGUoKTogKi8KKworLyogY2hlY2sgZnVuY3Rpb24gdG8gdXNlIGFkbGVyMzIoKSBmb3IgemxpYiBvciBjcmMzMigpIGZvciBnemlwICovCisjZGVmaW5lIFVQREFURShjaGVjaywgYnVmLCBsZW4pIHpsaWJfYWRsZXIzMihjaGVjaywgYnVmLCBsZW4pCisKKy8qIExvYWQgcmVnaXN0ZXJzIHdpdGggc3RhdGUgaW4gaW5mbGF0ZSgpIGZvciBzcGVlZCAqLworI2RlZmluZSBMT0FEKCkgXAorICAgIGRvIHsgXAorICAgICAgICBwdXQgPSBzdHJtLT5uZXh0X291dDsgXAorICAgICAgICBsZWZ0ID0gc3RybS0+YXZhaWxfb3V0OyBcCisgICAgICAgIG5leHQgPSBzdHJtLT5uZXh0X2luOyBcCisgICAgICAgIGhhdmUgPSBzdHJtLT5hdmFpbF9pbjsgXAorICAgICAgICBob2xkID0gc3RhdGUtPmhvbGQ7IFwKKyAgICAgICAgYml0cyA9IHN0YXRlLT5iaXRzOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVzdG9yZSBzdGF0ZSBmcm9tIHJlZ2lzdGVycyBpbiBpbmZsYXRlKCkgKi8KKyNkZWZpbmUgUkVTVE9SRSgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc3RybS0+bmV4dF9vdXQgPSBwdXQ7IFwKKyAgICAgICAgc3RybS0+YXZhaWxfb3V0ID0gbGVmdDsgXAorICAgICAgICBzdHJtLT5uZXh0X2luID0gbmV4dDsgXAorICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IGhhdmU7IFwKKyAgICAgICAgc3RhdGUtPmhvbGQgPSBob2xkOyBcCisgICAgICAgIHN0YXRlLT5iaXRzID0gYml0czsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIENsZWFyIHRoZSBpbnB1dCBiaXQgYWNjdW11bGF0b3IgKi8KKyNkZWZpbmUgSU5JVEJJVFMoKSBcCisgICAgZG8geyBcCisgICAgICAgIGhvbGQgPSAwOyBcCisgICAgICAgIGJpdHMgPSAwOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogR2V0IGEgYnl0ZSBvZiBpbnB1dCBpbnRvIHRoZSBiaXQgYWNjdW11bGF0b3IsIG9yIHJldHVybiBmcm9tIGluZmxhdGUoKQorICAgaWYgdGhlcmUgaXMgbm8gaW5wdXQgYXZhaWxhYmxlLiAqLworI2RlZmluZSBQVUxMQllURSgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKGhhdmUgPT0gMCkgZ290byBpbmZfbGVhdmU7IFwKKyAgICAgICAgaGF2ZS0tOyBcCisgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCpuZXh0KyspIDw8IGJpdHM7IFwKKyAgICAgICAgYml0cyArPSA4OyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogQXNzdXJlIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IG4gYml0cyBpbiB0aGUgYml0IGFjY3VtdWxhdG9yLiAgSWYgdGhlcmUgaXMKKyAgIG5vdCBlbm91Z2ggYXZhaWxhYmxlIGlucHV0IHRvIGRvIHRoYXQsIHRoZW4gcmV0dXJuIGZyb20gaW5mbGF0ZSgpLiAqLworI2RlZmluZSBORUVEQklUUyhuKSBcCisgICAgZG8geyBcCisgICAgICAgIHdoaWxlIChiaXRzIDwgKHVuc2lnbmVkKShuKSkgXAorICAgICAgICAgICAgUFVMTEJZVEUoKTsgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJldHVybiB0aGUgbG93IG4gYml0cyBvZiB0aGUgYml0IGFjY3VtdWxhdG9yIChuIDwgMTYpICovCisjZGVmaW5lIEJJVFMobikgXAorICAgICgodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgKG4pKSAtIDEpKQorCisvKiBSZW1vdmUgbiBiaXRzIGZyb20gdGhlIGJpdCBhY2N1bXVsYXRvciAqLworI2RlZmluZSBEUk9QQklUUyhuKSBcCisgICAgZG8geyBcCisgICAgICAgIGhvbGQgPj49IChuKTsgXAorICAgICAgICBiaXRzIC09ICh1bnNpZ25lZCkobik7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZW1vdmUgemVybyB0byBzZXZlbiBiaXRzIGFzIG5lZWRlZCB0byBnbyB0byBhIGJ5dGUgYm91bmRhcnkgKi8KKyNkZWZpbmUgQllURUJJVFMoKSBcCisgICAgZG8geyBcCisgICAgICAgIGhvbGQgPj49IGJpdHMgJiA3OyBcCisgICAgICAgIGJpdHMgLT0gYml0cyAmIDc7IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZXZlcnNlIHRoZSBieXRlcyBpbiBhIDMyLWJpdCB2YWx1ZSAqLworI2RlZmluZSBSRVZFUlNFKHEpIFwKKyAgICAoKCgocSkgPj4gMjQpICYgMHhmZikgKyAoKChxKSA+PiA4KSAmIDB4ZmYwMCkgKyBcCisgICAgICgoKHEpICYgMHhmZjAwKSA8PCA4KSArICgoKHEpICYgMHhmZikgPDwgMjQpKQorCisvKgorICAgaW5mbGF0ZSgpIHVzZXMgYSBzdGF0ZSBtYWNoaW5lIHRvIHByb2Nlc3MgYXMgbXVjaCBpbnB1dCBkYXRhIGFuZCBnZW5lcmF0ZSBhcworICAgbXVjaCBvdXRwdXQgZGF0YSBhcyBwb3NzaWJsZSBiZWZvcmUgcmV0dXJuaW5nLiAgVGhlIHN0YXRlIG1hY2hpbmUgaXMKKyAgIHN0cnVjdHVyZWQgcm91Z2hseSBhcyBmb2xsb3dzOgorCisgICAgZm9yICg7Oykgc3dpdGNoIChzdGF0ZSkgeworICAgIC4uLgorICAgIGNhc2UgU1RBVEVuOgorICAgICAgICBpZiAobm90IGVub3VnaCBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSB0byBtYWtlIHByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAuLi4gbWFrZSBwcm9ncmVzcyAuLi4KKyAgICAgICAgc3RhdGUgPSBTVEFURW07CisgICAgICAgIGJyZWFrOworICAgIC4uLgorICAgIH0KKworICAgc28gd2hlbiBpbmZsYXRlKCkgaXMgY2FsbGVkIGFnYWluLCB0aGUgc2FtZSBjYXNlIGlzIGF0dGVtcHRlZCBhZ2FpbiwgYW5kCisgICBpZiB0aGUgYXBwcm9wcmlhdGUgcmVzb3VyY2VzIGFyZSBwcm92aWRlZCwgdGhlIG1hY2hpbmUgcHJvY2VlZHMgdG8gdGhlCisgICBuZXh0IHN0YXRlLiAgVGhlIE5FRURCSVRTKCkgbWFjcm8gaXMgdXN1YWxseSB0aGUgd2F5IHRoZSBzdGF0ZSBldmFsdWF0ZXMKKyAgIHdoZXRoZXIgaXQgY2FuIHByb2NlZWQgb3Igc2hvdWxkIHJldHVybi4gIE5FRURCSVRTKCkgZG9lcyB0aGUgcmV0dXJuIGlmCisgICB0aGUgcmVxdWVzdGVkIGJpdHMgYXJlIG5vdCBhdmFpbGFibGUuICBUaGUgdHlwaWNhbCB1c2Ugb2YgdGhlIEJJVFMgbWFjcm9zCisgICBpczoKKworICAgICAgICBORUVEQklUUyhuKTsKKyAgICAgICAgLi4uIGRvIHNvbWV0aGluZyB3aXRoIEJJVFMobikgLi4uCisgICAgICAgIERST1BCSVRTKG4pOworCisgICB3aGVyZSBORUVEQklUUyhuKSBlaXRoZXIgcmV0dXJucyBmcm9tIGluZmxhdGUoKSBpZiB0aGVyZSBpc24ndCBlbm91Z2gKKyAgIGlucHV0IGxlZnQgdG8gbG9hZCBuIGJpdHMgaW50byB0aGUgYWNjdW11bGF0b3IsIG9yIGl0IGNvbnRpbnVlcy4gIEJJVFMobikKKyAgIGdpdmVzIHRoZSBsb3cgbiBiaXRzIGluIHRoZSBhY2N1bXVsYXRvci4gIFdoZW4gZG9uZSwgRFJPUEJJVFMobikgZHJvcHMKKyAgIHRoZSBsb3cgbiBiaXRzIG9mZiB0aGUgYWNjdW11bGF0b3IuICBJTklUQklUUygpIGNsZWFycyB0aGUgYWNjdW11bGF0b3IKKyAgIGFuZCBzZXRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGJpdHMgdG8gemVyby4gIEJZVEVCSVRTKCkgZGlzY2FyZHMganVzdAorICAgZW5vdWdoIGJpdHMgdG8gcHV0IHRoZSBhY2N1bXVsYXRvciBvbiBhIGJ5dGUgYm91bmRhcnkuICBBZnRlciBCWVRFQklUUygpCisgICBhbmQgYSBORUVEQklUUyg4KSwgdGhlbiBCSVRTKDgpIHdvdWxkIHJldHVybiB0aGUgbmV4dCBieXRlIGluIHRoZSBzdHJlYW0uCisKKyAgIE5FRURCSVRTKG4pIHVzZXMgUFVMTEJZVEUoKSB0byBnZXQgYW4gYXZhaWxhYmxlIGJ5dGUgb2YgaW5wdXQsIG9yIHRvIHJldHVybgorICAgaWYgdGhlcmUgaXMgbm8gaW5wdXQgYXZhaWxhYmxlLiAgVGhlIGRlY29kaW5nIG9mIHZhcmlhYmxlIGxlbmd0aCBjb2RlcyB1c2VzCisgICBQVUxMQllURSgpIGRpcmVjdGx5IGluIG9yZGVyIHRvIHB1bGwganVzdCBlbm91Z2ggYnl0ZXMgdG8gZGVjb2RlIHRoZSBuZXh0CisgICBjb2RlLCBhbmQgbm8gbW9yZS4KKworICAgU29tZSBzdGF0ZXMgbG9vcCB1bnRpbCB0aGV5IGdldCBlbm91Z2ggaW5wdXQsIG1ha2luZyBzdXJlIHRoYXQgZW5vdWdoCisgICBzdGF0ZSBpbmZvcm1hdGlvbiBpcyBtYWludGFpbmVkIHRvIGNvbnRpbnVlIHRoZSBsb29wIHdoZXJlIGl0IGxlZnQgb2ZmCisgICBpZiBORUVEQklUUygpIHJldHVybnMgaW4gdGhlIGxvb3AuICBGb3IgZXhhbXBsZSwgd2FudCwgbmVlZCwgYW5kIGtlZXAKKyAgIHdvdWxkIGFsbCBoYXZlIHRvIGFjdHVhbGx5IGJlIHBhcnQgb2YgdGhlIHNhdmVkIHN0YXRlIGluIGNhc2UgTkVFREJJVFMoKQorICAgcmV0dXJuczoKKworICAgIGNhc2UgU1RBVEV3OgorICAgICAgICB3aGlsZSAod2FudCA8IG5lZWQpIHsKKyAgICAgICAgICAgIE5FRURCSVRTKG4pOworICAgICAgICAgICAga2VlcFt3YW50KytdID0gQklUUyhuKTsKKyAgICAgICAgICAgIERST1BCSVRTKG4pOworICAgICAgICB9CisgICAgICAgIHN0YXRlID0gU1RBVEV4OworICAgIGNhc2UgU1RBVEV4OgorCisgICBBcyBzaG93biBhYm92ZSwgaWYgdGhlIG5leHQgc3RhdGUgaXMgYWxzbyB0aGUgbmV4dCBjYXNlLCB0aGVuIHRoZSBicmVhaworICAgaXMgb21pdHRlZC4KKworICAgQSBzdGF0ZSBtYXkgYWxzbyByZXR1cm4gaWYgdGhlcmUgaXMgbm90IGVub3VnaCBvdXRwdXQgc3BhY2UgYXZhaWxhYmxlIHRvCisgICBjb21wbGV0ZSB0aGF0IHN0YXRlLiAgVGhvc2Ugc3RhdGVzIGFyZSBjb3B5aW5nIHN0b3JlZCBkYXRhLCB3cml0aW5nIGEKKyAgIGxpdGVyYWwgYnl0ZSwgYW5kIGNvcHlpbmcgYSBtYXRjaGluZyBzdHJpbmcuCisKKyAgIFdoZW4gcmV0dXJuaW5nLCBhICJnb3RvIGluZl9sZWF2ZSIgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHRvdGFsIGNvdW50ZXJzLAorICAgdXBkYXRlIHRoZSBjaGVjayB2YWx1ZSwgYW5kIGRldGVybWluZSB3aGV0aGVyIGFueSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlCisgICBkdXJpbmcgdGhhdCBpbmZsYXRlKCkgY2FsbCBpbiBvcmRlciB0byByZXR1cm4gdGhlIHByb3BlciByZXR1cm4gY29kZS4KKyAgIFByb2dyZXNzIGlzIGRlZmluZWQgYXMgYSBjaGFuZ2UgaW4gZWl0aGVyIHN0cm0tPmF2YWlsX2luIG9yIHN0cm0tPmF2YWlsX291dC4KKyAgIFdoZW4gdGhlcmUgaXMgYSB3aW5kb3csIGdvdG8gaW5mX2xlYXZlIHdpbGwgdXBkYXRlIHRoZSB3aW5kb3cgd2l0aCB0aGUgbGFzdAorICAgb3V0cHV0IHdyaXR0ZW4uICBJZiBhIGdvdG8gaW5mX2xlYXZlIG9jY3VycyBpbiB0aGUgbWlkZGxlIG9mIGRlY29tcHJlc3Npb24KKyAgIGFuZCB0aGVyZSBpcyBubyB3aW5kb3cgY3VycmVudGx5LCBnb3RvIGluZl9sZWF2ZSB3aWxsIGNyZWF0ZSBvbmUgYW5kIGNvcHkKKyAgIG91dHB1dCB0byB0aGUgd2luZG93IGZvciB0aGUgbmV4dCBjYWxsIG9mIGluZmxhdGUoKS4KKworICAgSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgdGhlIGZsdXNoIHBhcmFtZXRlciBvZiBpbmZsYXRlKCkgb25seSBhZmZlY3RzIHRoZQorICAgcmV0dXJuIGNvZGUgKHBlciB6bGliLmgpLiAgaW5mbGF0ZSgpIGFsd2F5cyB3cml0ZXMgYXMgbXVjaCBhcyBwb3NzaWJsZSB0bworICAgc3RybS0+bmV4dF9vdXQsIGdpdmVuIHRoZSBzcGFjZSBhdmFpbGFibGUgYW5kIHRoZSBwcm92aWRlZCBpbnB1dC0tdGhlIGVmZmVjdAorICAgZG9jdW1lbnRlZCBpbiB6bGliLmggb2YgWl9TWU5DX0ZMVVNILiAgRnVydGhlcm1vcmUsIGluZmxhdGUoKSBhbHdheXMgZGVmZXJzCisgICB0aGUgYWxsb2NhdGlvbiBvZiBhbmQgY29weWluZyBpbnRvIGEgc2xpZGluZyB3aW5kb3cgdW50aWwgbmVjZXNzYXJ5LCB3aGljaAorICAgcHJvdmlkZXMgdGhlIGVmZmVjdCBkb2N1bWVudGVkIGluIHpsaWIuaCBmb3IgWl9GSU5JU0ggd2hlbiB0aGUgZW50aXJlIGlucHV0CisgICBzdHJlYW0gYXZhaWxhYmxlLiAgU28gdGhlIG9ubHkgdGhpbmcgdGhlIGZsdXNoIHBhcmFtZXRlciBhY3R1YWxseSBkb2VzIGlzOgorICAgd2hlbiBmbHVzaCBpcyBzZXQgdG8gWl9GSU5JU0gsIGluZmxhdGUoKSBjYW5ub3QgcmV0dXJuIFpfT0suICBJbnN0ZWFkIGl0CisgICB3aWxsIHJldHVybiBaX0JVRl9FUlJPUiBpZiBpdCBoYXMgbm90IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgorICovCisKK2ludCB6bGliX2luZmxhdGUoel9zdHJlYW1wIHN0cm0sIGludCBmbHVzaCkKK3sKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSAqc3RhdGU7CisgICAgdW5zaWduZWQgY2hhciAqbmV4dDsgICAgLyogbmV4dCBpbnB1dCAqLworICAgIHVuc2lnbmVkIGNoYXIgKnB1dDsgICAgIC8qIG5leHQgb3V0cHV0ICovCisgICAgdW5zaWduZWQgaGF2ZSwgbGVmdDsgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCisgICAgdW5zaWduZWQgbG9uZyBob2xkOyAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KKyAgICB1bnNpZ25lZCBiaXRzOyAgICAgICAgICAgICAgLyogYml0cyBpbiBiaXQgYnVmZmVyICovCisgICAgdW5zaWduZWQgaW4sIG91dDsgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi8KKyAgICB1bnNpZ25lZCBjb3B5OyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovCisgICAgdW5zaWduZWQgY2hhciAqZnJvbTsgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovCisgICAgY29kZSB0aGlzOyAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi8KKyAgICBjb2RlIGxhc3Q7ICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHRhYmxlIGVudHJ5ICovCisgICAgdW5zaWduZWQgbGVuOyAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi8KKyAgICBpbnQgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi8KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgb3JkZXJbMTldID0gLyogcGVybXV0YXRpb24gb2YgY29kZSBsZW5ndGhzICovCisgICAgICAgIHsxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1fTsKKworICAgIGlmIChzdHJtID09IE5VTEwgfHwgc3RybS0+c3RhdGUgPT0gTlVMTCB8fCBzdHJtLT5uZXh0X291dCA9PSBOVUxMIHx8CisgICAgICAgIChzdHJtLT5uZXh0X2luID09IE5VTEwgJiYgc3RybS0+YXZhaWxfaW4gIT0gMCkpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlICopc3RybS0+c3RhdGU7CisKKyAgICBpZiAoc3RhdGUtPm1vZGUgPT0gVFlQRSkgc3RhdGUtPm1vZGUgPSBUWVBFRE87ICAgICAgLyogc2tpcCBjaGVjayAqLworICAgIExPQUQoKTsKKyAgICBpbiA9IGhhdmU7CisgICAgb3V0ID0gbGVmdDsKKyAgICByZXQgPSBaX09LOworICAgIGZvciAoOzspCisgICAgICAgIHN3aXRjaCAoc3RhdGUtPm1vZGUpIHsKKyAgICAgICAgY2FzZSBIRUFEOgorICAgICAgICAgICAgaWYgKHN0YXRlLT53cmFwID09IDApIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEVETzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAoKEJJVFMoOCkgPDwgOCkgKyAoaG9sZCA+PiA4KSkgJSAzMSkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImluY29ycmVjdCBoZWFkZXIgY2hlY2siOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEJJVFMoNCkgIT0gWl9ERUZMQVRFRCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKDQpOworICAgICAgICAgICAgbGVuID0gQklUUyg0KSArIDg7CisgICAgICAgICAgICBpZiAobGVuID4gc3RhdGUtPndiaXRzKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCB3aW5kb3cgc2l6ZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZG1heCA9IDFVIDw8IGxlbjsKKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0gemxpYl9hZGxlcjMyKDBMLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTsKKyAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESUNUSUQ6CisgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT5jaGVjayA9IFJFVkVSU0UoaG9sZCk7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBESUNUOworICAgICAgICBjYXNlIERJQ1Q6CisgICAgICAgICAgICBpZiAoc3RhdGUtPmhhdmVkaWN0ID09IDApIHsKKyAgICAgICAgICAgICAgICBSRVNUT1JFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPSB6bGliX2FkbGVyMzIoMEwsIE5VTEwsIDApOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUWVBFOworICAgICAgICBjYXNlIFRZUEU6CisgICAgICAgICAgICBpZiAoZmx1c2ggPT0gWl9CTE9DSykgZ290byBpbmZfbGVhdmU7CisgICAgICAgIGNhc2UgVFlQRURPOgorICAgICAgICAgICAgaWYgKHN0YXRlLT5sYXN0KSB7CisgICAgICAgICAgICAgICAgQllURUJJVFMoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IENIRUNLOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVFREJJVFMoMyk7CisgICAgICAgICAgICBzdGF0ZS0+bGFzdCA9IEJJVFMoMSk7CisgICAgICAgICAgICBEUk9QQklUUygxKTsKKyAgICAgICAgICAgIHN3aXRjaCAoQklUUygyKSkgeworICAgICAgICAgICAgY2FzZSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RvcmVkIGJsb2NrICovCisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBTVE9SRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXhlZCBibG9jayAqLworICAgICAgICAgICAgICAgIHpsaWJfZml4ZWR0YWJsZXMoc3RhdGUpOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOOyAgICAgICAgICAgICAgLyogZGVjb2RlIGNvZGVzICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkeW5hbWljIGJsb2NrICovCisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUQUJMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGJsb2NrIHR5cGUiOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFJPUEJJVFMoMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVE9SRUQ6CisgICAgICAgICAgICBCWVRFQklUUygpOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnbyB0byBieXRlIGJvdW5kYXJ5ICovCisgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9ICgoaG9sZCA+PiAxNikgXiAweGZmZmYpKSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoID0gKHVuc2lnbmVkKWhvbGQgJiAweGZmZmY7CisgICAgICAgICAgICBJTklUQklUUygpOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBDT1BZOworICAgICAgICBjYXNlIENPUFk6CisgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPmxlbmd0aDsKKyAgICAgICAgICAgIGlmIChjb3B5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSBjb3B5ID0gaGF2ZTsKKyAgICAgICAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgICAgIGlmIChjb3B5ID09IDApIGdvdG8gaW5mX2xlYXZlOworICAgICAgICAgICAgICAgIG1lbWNweShwdXQsIG5leHQsIGNvcHkpOworICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKKyAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgICAgIHB1dCArPSBjb3B5OworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggLT0gY29weTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRBQkxFOgorICAgICAgICAgICAgTkVFREJJVFMoMTQpOworICAgICAgICAgICAgc3RhdGUtPm5sZW4gPSBCSVRTKDUpICsgMjU3OworICAgICAgICAgICAgRFJPUEJJVFMoNSk7CisgICAgICAgICAgICBzdGF0ZS0+bmRpc3QgPSBCSVRTKDUpICsgMTsKKyAgICAgICAgICAgIERST1BCSVRTKDUpOworICAgICAgICAgICAgc3RhdGUtPm5jb2RlID0gQklUUyg0KSArIDQ7CisgICAgICAgICAgICBEUk9QQklUUyg0KTsKKyNpZm5kZWYgUEtaSVBfQlVHX1dPUktBUk9VTkQKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+bmxlbiA+IDI4NiB8fCBzdGF0ZS0+bmRpc3QgPiAzMCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopInRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgc3RhdGUtPmhhdmUgPSAwOworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBMRU5MRU5TOworICAgICAgICBjYXNlIExFTkxFTlM6CisgICAgICAgICAgICB3aGlsZSAoc3RhdGUtPmhhdmUgPCBzdGF0ZS0+bmNvZGUpIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUygzKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bGVuc1tvcmRlcltzdGF0ZS0+aGF2ZSsrXV0gPSAodW5zaWduZWQgc2hvcnQpQklUUygzKTsKKyAgICAgICAgICAgICAgICBEUk9QQklUUygzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlIChzdGF0ZS0+aGF2ZSA8IDE5KQorICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW29yZGVyW3N0YXRlLT5oYXZlKytdXSA9IDA7CisgICAgICAgICAgICBzdGF0ZS0+bmV4dCA9IHN0YXRlLT5jb2RlczsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5jb2RlID0gKGNvZGUgY29uc3QgKikoc3RhdGUtPm5leHQpOworICAgICAgICAgICAgc3RhdGUtPmxlbmJpdHMgPSA3OworICAgICAgICAgICAgcmV0ID0gemxpYl9pbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS0+bGVucywgMTksICYoc3RhdGUtPm5leHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRlLT5sZW5iaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgY29kZSBsZW5ndGhzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+aGF2ZSA9IDA7CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IENPREVMRU5TOworICAgICAgICBjYXNlIENPREVMRU5TOgorICAgICAgICAgICAgd2hpbGUgKHN0YXRlLT5oYXZlIDwgc3RhdGUtPm5sZW4gKyBzdGF0ZS0+bmRpc3QpIHsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBzdGF0ZS0+bGVuY29kZVtCSVRTKHN0YXRlLT5sZW5iaXRzKV07CisgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKHRoaXMuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbCA8IDE2KSB7CisgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKHRoaXMuYml0cyk7CisgICAgICAgICAgICAgICAgICAgIERST1BCSVRTKHRoaXMuYml0cyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlKytdID0gdGhpcy52YWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWwgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKHRoaXMuYml0cyArIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFModGhpcy5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGF2ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS0+bGVuc1tzdGF0ZS0+aGF2ZSAtIDFdOworICAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IDMgKyBCSVRTKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YWwgPT0gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKHRoaXMuYml0cyArIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFModGhpcy5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5ID0gMyArIEJJVFMoMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBEUk9QQklUUygzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FRURCSVRTKHRoaXMuYml0cyArIDcpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFModGhpcy5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5ID0gMTEgKyBCSVRTKDcpOworICAgICAgICAgICAgICAgICAgICAgICAgRFJPUEJJVFMoNyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oYXZlICsgY29weSA+IHN0YXRlLT5ubGVuICsgc3RhdGUtPm5kaXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNvcHktLSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5zW3N0YXRlLT5oYXZlKytdID0gKHVuc2lnbmVkIHNob3J0KWxlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi8KKyAgICAgICAgICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBCQUQpIGJyZWFrOworCisgICAgICAgICAgICAvKiBidWlsZCBjb2RlIHRhYmxlcyAqLworICAgICAgICAgICAgc3RhdGUtPm5leHQgPSBzdGF0ZS0+Y29kZXM7CisgICAgICAgICAgICBzdGF0ZS0+bGVuY29kZSA9IChjb2RlIGNvbnN0ICopKHN0YXRlLT5uZXh0KTsKKyAgICAgICAgICAgIHN0YXRlLT5sZW5iaXRzID0gOTsKKyAgICAgICAgICAgIHJldCA9IHpsaWJfaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS0+bGVucywgc3RhdGUtPm5sZW4sICYoc3RhdGUtPm5leHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHN0YXRlLT5sZW5iaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZGlzdGNvZGUgPSAoY29kZSBjb25zdCAqKShzdGF0ZS0+bmV4dCk7CisgICAgICAgICAgICBzdGF0ZS0+ZGlzdGJpdHMgPSA2OworICAgICAgICAgICAgcmV0ID0gemxpYl9pbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS0+bGVucyArIHN0YXRlLT5ubGVuLCBzdGF0ZS0+bmRpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+bmV4dCksICYoc3RhdGUtPmRpc3RiaXRzKSwgc3RhdGUtPndvcmspOworICAgICAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2VzIHNldCI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExFTjsKKyAgICAgICAgY2FzZSBMRU46CisgICAgICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7CisgICAgICAgICAgICAgICAgUkVTVE9SRSgpOworICAgICAgICAgICAgICAgIGluZmxhdGVfZmFzdChzdHJtLCBvdXQpOworICAgICAgICAgICAgICAgIExPQUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICB0aGlzID0gc3RhdGUtPmxlbmNvZGVbQklUUyhzdGF0ZS0+bGVuYml0cyldOworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKHRoaXMuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLm9wICYmICh0aGlzLm9wICYgMHhmMCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGxhc3QgPSB0aGlzOworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHN0YXRlLT5sZW5jb2RlW2xhc3QudmFsICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSA+PiBsYXN0LmJpdHMpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkobGFzdC5iaXRzICsgdGhpcy5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgUFVMTEJZVEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRFJPUEJJVFMobGFzdC5iaXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERST1BCSVRTKHRoaXMuYml0cyk7CisgICAgICAgICAgICBzdGF0ZS0+bGVuZ3RoID0gKHVuc2lnbmVkKXRoaXMudmFsOworICAgICAgICAgICAgaWYgKChpbnQpKHRoaXMub3ApID09IDApIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IExJVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLm9wICYgMzIpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IFRZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGhpcy5vcCAmIDY0KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIjsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLT5leHRyYSA9ICh1bnNpZ25lZCkodGhpcy5vcCkgJiAxNTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVORVhUOworICAgICAgICBjYXNlIExFTkVYVDoKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+ZXh0cmEpIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggKz0gQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgICAgIERST1BCSVRTKHN0YXRlLT5leHRyYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERJU1Q7CisgICAgICAgIGNhc2UgRElTVDoKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICB0aGlzID0gc3RhdGUtPmRpc3Rjb2RlW0JJVFMoc3RhdGUtPmRpc3RiaXRzKV07CisgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkodGhpcy5iaXRzKSA8PSBiaXRzKSBicmVhazsKKyAgICAgICAgICAgICAgICBQVUxMQllURSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCh0aGlzLm9wICYgMHhmMCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGxhc3QgPSB0aGlzOworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHN0YXRlLT5kaXN0Y29kZVtsYXN0LnZhbCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkgPj4gbGFzdC5iaXRzKV07CisgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQpKGxhc3QuYml0cyArIHRoaXMuYml0cykgPD0gYml0cykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFBVTExCWVRFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERST1BCSVRTKGxhc3QuYml0cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBEUk9QQklUUyh0aGlzLmJpdHMpOworICAgICAgICAgICAgaWYgKHRoaXMub3AgJiA2NCkgeworICAgICAgICAgICAgICAgIHN0cm0tPm1zZyA9IChjaGFyICopImludmFsaWQgZGlzdGFuY2UgY29kZSI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+b2Zmc2V0ID0gKHVuc2lnbmVkKXRoaXMudmFsOworICAgICAgICAgICAgc3RhdGUtPmV4dHJhID0gKHVuc2lnbmVkKSh0aGlzLm9wKSAmIDE1OworICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBESVNURVhUOworICAgICAgICBjYXNlIERJU1RFWFQ6CisgICAgICAgICAgICBpZiAoc3RhdGUtPmV4dHJhKSB7CisgICAgICAgICAgICAgICAgTkVFREJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+b2Zmc2V0ICs9IEJJVFMoc3RhdGUtPmV4dHJhKTsKKyAgICAgICAgICAgICAgICBEUk9QQklUUyhzdGF0ZS0+ZXh0cmEpOworICAgICAgICAgICAgfQorI2lmZGVmIElORkxBVEVfU1RSSUNUCisgICAgICAgICAgICBpZiAoc3RhdGUtPm9mZnNldCA+IHN0YXRlLT5kbWF4KSB7CisgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siOworICAgICAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gQkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBpZiAoc3RhdGUtPm9mZnNldCA+IHN0YXRlLT53aGF2ZSArIG91dCAtIGxlZnQpIHsKKyAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7CisgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IE1BVENIOworICAgICAgICBjYXNlIE1BVENIOgorICAgICAgICAgICAgaWYgKGxlZnQgPT0gMCkgZ290byBpbmZfbGVhdmU7CisgICAgICAgICAgICBjb3B5ID0gb3V0IC0gbGVmdDsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+b2Zmc2V0ID4gY29weSkgeyAgICAgICAgIC8qIGNvcHkgZnJvbSB3aW5kb3cgKi8KKyAgICAgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPm9mZnNldCAtIGNvcHk7CisgICAgICAgICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS0+d3JpdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29weSAtPSBzdGF0ZS0+d3JpdGU7CisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzdGF0ZS0+d2luZG93ICsgKHN0YXRlLT53c2l6ZSAtIGNvcHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzdGF0ZS0+d2luZG93ICsgKHN0YXRlLT53cml0ZSAtIGNvcHkpOworICAgICAgICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUtPmxlbmd0aCkgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovCisgICAgICAgICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLT5vZmZzZXQ7CisgICAgICAgICAgICAgICAgY29weSA9IHN0YXRlLT5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIGNvcHkgPSBsZWZ0OworICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCAtPSBjb3B5OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICpwdXQrKyA9ICpmcm9tKys7CisgICAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpOworICAgICAgICAgICAgaWYgKHN0YXRlLT5sZW5ndGggPT0gMCkgc3RhdGUtPm1vZGUgPSBMRU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMSVQ6CisgICAgICAgICAgICBpZiAobGVmdCA9PSAwKSBnb3RvIGluZl9sZWF2ZTsKKyAgICAgICAgICAgICpwdXQrKyA9ICh1bnNpZ25lZCBjaGFyKShzdGF0ZS0+bGVuZ3RoKTsKKyAgICAgICAgICAgIGxlZnQtLTsKKyAgICAgICAgICAgIHN0YXRlLT5tb2RlID0gTEVOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0hFQ0s6CisgICAgICAgICAgICBpZiAoc3RhdGUtPndyYXApIHsKKyAgICAgICAgICAgICAgICBORUVEQklUUygzMik7CisgICAgICAgICAgICAgICAgb3V0IC09IGxlZnQ7CisgICAgICAgICAgICAgICAgc3RybS0+dG90YWxfb3V0ICs9IG91dDsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OworICAgICAgICAgICAgICAgIGlmIChvdXQpCisgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0KKyAgICAgICAgICAgICAgICAgICAgICAgIFVQREFURShzdGF0ZS0+Y2hlY2ssIHB1dCAtIG91dCwgb3V0KTsKKyAgICAgICAgICAgICAgICBvdXQgPSBsZWZ0OworICAgICAgICAgICAgICAgIGlmICgoCisgICAgICAgICAgICAgICAgICAgICBSRVZFUlNFKGhvbGQpKSAhPSBzdGF0ZS0+Y2hlY2spIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybS0+bXNnID0gKGNoYXIgKikiaW5jb3JyZWN0IGRhdGEgY2hlY2siOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIElOSVRCSVRTKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IERPTkU7CisgICAgICAgIGNhc2UgRE9ORToKKyAgICAgICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDsKKyAgICAgICAgICAgIGdvdG8gaW5mX2xlYXZlOworICAgICAgICBjYXNlIEJBRDoKKyAgICAgICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjsKKyAgICAgICAgICAgIGdvdG8gaW5mX2xlYXZlOworICAgICAgICBjYXNlIE1FTToKKyAgICAgICAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKKyAgICAgICAgY2FzZSBTWU5DOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgICAgICB9CisKKyAgICAvKgorICAgICAgIFJldHVybiBmcm9tIGluZmxhdGUoKSwgdXBkYXRpbmcgdGhlIHRvdGFsIGNvdW50cyBhbmQgdGhlIGNoZWNrIHZhbHVlLgorICAgICAgIElmIHRoZXJlIHdhcyBubyBwcm9ncmVzcyBkdXJpbmcgdGhlIGluZmxhdGUoKSBjYWxsLCByZXR1cm4gYSBidWZmZXIKKyAgICAgICBlcnJvci4gIENhbGwgemxpYl91cGRhdGV3aW5kb3coKSB0byBjcmVhdGUgYW5kL29yIHVwZGF0ZSB0aGUgd2luZG93IHN0YXRlLgorICAgICAqLworICBpbmZfbGVhdmU6CisgICAgUkVTVE9SRSgpOworICAgIGlmIChzdGF0ZS0+d3NpemUgfHwgKHN0YXRlLT5tb2RlIDwgQ0hFQ0sgJiYgb3V0ICE9IHN0cm0tPmF2YWlsX291dCkpCisgICAgICAgIHpsaWJfdXBkYXRld2luZG93KHN0cm0sIG91dCk7CisKKyAgICBpbiAtPSBzdHJtLT5hdmFpbF9pbjsKKyAgICBvdXQgLT0gc3RybS0+YXZhaWxfb3V0OworICAgIHN0cm0tPnRvdGFsX2luICs9IGluOworICAgIHN0cm0tPnRvdGFsX291dCArPSBvdXQ7CisgICAgc3RhdGUtPnRvdGFsICs9IG91dDsKKyAgICBpZiAoc3RhdGUtPndyYXAgJiYgb3V0KQorICAgICAgICBzdHJtLT5hZGxlciA9IHN0YXRlLT5jaGVjayA9CisgICAgICAgICAgICBVUERBVEUoc3RhdGUtPmNoZWNrLCBzdHJtLT5uZXh0X291dCAtIG91dCwgb3V0KTsKKworICAgIHN0cm0tPmRhdGFfdHlwZSA9IHN0YXRlLT5iaXRzICsgKHN0YXRlLT5sYXN0ID8gNjQgOiAwKSArCisgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IFRZUEUgPyAxMjggOiAwKTsKKyAgICBpZiAoKChpbiA9PSAwICYmIG91dCA9PSAwKSB8fCBmbHVzaCA9PSBaX0ZJTklTSCkgJiYgcmV0ID09IFpfT0spCisgICAgICAgIHJldCA9IFpfQlVGX0VSUk9SOworCisgICAgaWYgKGZsdXNoID09IFpfUEFDS0VUX0ZMVVNIICYmIHJldCA9PSBaX09LICYmCisgICAgICAgICAgICAoc3RybS0+YXZhaWxfb3V0ICE9IDAgfHwgc3RybS0+YXZhaWxfaW4gPT0gMCkpCisJCXJldHVybiB6bGliX2luZmxhdGVTeW5jUGFja2V0KHN0cm0pOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCB6bGliX2luZmxhdGVFbmQoel9zdHJlYW1wIHN0cm0pCit7CisgICAgaWYgKHN0cm0gPT0gTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgcmV0dXJuIFpfT0s7CiB9CiAKLQotaW50IHpsaWJfaW5mbGF0ZUluaXRfKAotCXpfc3RyZWFtcCB6LAotCWNvbnN0IGNoYXIgKnZlcnNpb24sCi0JaW50IHN0cmVhbV9zaXplCi0pCisjaWYgMAoraW50IHpsaWJfaW5mbGF0ZVNldERpY3Rpb25hcnkoel9zdHJlYW1wIHN0cm0sIGNvbnN0IEJ5dGUgKmRpY3Rpb25hcnksCisgICAgICAgIHVJbnQgZGljdExlbmd0aCkKIHsKLSAgcmV0dXJuIHpsaWJfaW5mbGF0ZUluaXQyXyh6LCBERUZfV0JJVFMsIHZlcnNpb24sIHN0cmVhbV9zaXplKTsKKyAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSAqc3RhdGU7CisgICAgdW5zaWduZWQgbG9uZyBpZDsKKworICAgIC8qIGNoZWNrIHN0YXRlICovCisgICAgaWYgKHN0cm0gPT0gTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBOVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgKilzdHJtLT5zdGF0ZTsKKyAgICBpZiAoc3RhdGUtPndyYXAgIT0gMCAmJiBzdGF0ZS0+bW9kZSAhPSBESUNUKQorICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisKKyAgICAvKiBjaGVjayBmb3IgY29ycmVjdCBkaWN0aW9uYXJ5IGlkICovCisgICAgaWYgKHN0YXRlLT5tb2RlID09IERJQ1QpIHsKKyAgICAgICAgaWQgPSB6bGliX2FkbGVyMzIoMEwsIE5VTEwsIDApOworICAgICAgICBpZCA9IHpsaWJfYWRsZXIzMihpZCwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7CisgICAgICAgIGlmIChpZCAhPSBzdGF0ZS0+Y2hlY2spCisgICAgICAgICAgICByZXR1cm4gWl9EQVRBX0VSUk9SOworICAgIH0KKworICAgIC8qIGNvcHkgZGljdGlvbmFyeSB0byB3aW5kb3cgKi8KKyAgICB6bGliX3VwZGF0ZXdpbmRvdyhzdHJtLCBzdHJtLT5hdmFpbF9vdXQpOworCisgICAgaWYgKGRpY3RMZW5ndGggPiBzdGF0ZS0+d3NpemUpIHsKKyAgICAgICAgbWVtY3B5KHN0YXRlLT53aW5kb3csIGRpY3Rpb25hcnkgKyBkaWN0TGVuZ3RoIC0gc3RhdGUtPndzaXplLAorICAgICAgICAgICAgICAgIHN0YXRlLT53c2l6ZSk7CisgICAgICAgIHN0YXRlLT53aGF2ZSA9IHN0YXRlLT53c2l6ZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1lbWNweShzdGF0ZS0+d2luZG93ICsgc3RhdGUtPndzaXplIC0gZGljdExlbmd0aCwgZGljdGlvbmFyeSwKKyAgICAgICAgICAgICAgICBkaWN0TGVuZ3RoKTsKKyAgICAgICAgc3RhdGUtPndoYXZlID0gZGljdExlbmd0aDsKKyAgICB9CisgICAgc3RhdGUtPmhhdmVkaWN0ID0gMTsKKyAgICByZXR1cm4gWl9PSzsKIH0KKyNlbmRpZgogCi0jdW5kZWYgTkVFREJZVEUKLSN1bmRlZiBORVhUQllURQotI2RlZmluZSBORUVEQllURSB7aWYoei0+YXZhaWxfaW49PTApZ290byBlbXB0eTtyPXRydjt9Ci0jZGVmaW5lIE5FWFRCWVRFICh6LT5hdmFpbF9pbi0tLHotPnRvdGFsX2luKyssKnotPm5leHRfaW4rKykKLQotaW50IHpsaWJfaW5mbGF0ZSgKLQl6X3N0cmVhbXAgeiwKLQlpbnQgZgotKQorI2lmIDAKKy8qCisgICBTZWFyY2ggYnVmWzAuLmxlbi0xXSBmb3IgdGhlIHBhdHRlcm46IDAsIDAsIDB4ZmYsIDB4ZmYuICBSZXR1cm4gd2hlbiBmb3VuZAorICAgb3Igd2hlbiBvdXQgb2YgaW5wdXQuICBXaGVuIGNhbGxlZCwgKmhhdmUgaXMgdGhlIG51bWJlciBvZiBwYXR0ZXJuIGJ5dGVzCisgICBmb3VuZCBpbiBvcmRlciBzbyBmYXIsIGluIDAuLjMuICBPbiByZXR1cm4gKmhhdmUgaXMgdXBkYXRlZCB0byB0aGUgbmV3CisgICBzdGF0ZS4gIElmIG9uIHJldHVybiAqaGF2ZSBlcXVhbHMgZm91ciwgdGhlbiB0aGUgcGF0dGVybiB3YXMgZm91bmQgYW5kIHRoZQorICAgcmV0dXJuIHZhbHVlIGlzIGhvdyBtYW55IGJ5dGVzIHdlcmUgcmVhZCBpbmNsdWRpbmcgdGhlIGxhc3QgYnl0ZSBvZiB0aGUKKyAgIHBhdHRlcm4uICBJZiAqaGF2ZSBpcyBsZXNzIHRoYW4gZm91ciwgdGhlbiB0aGUgcGF0dGVybiBoYXMgbm90IGJlZW4gZm91bmQKKyAgIHlldCBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBsZW4uICBJbiB0aGUgbGF0dGVyIGNhc2UsIHpsaWJfc3luY3NlYXJjaCgpIGNhbiBiZQorICAgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBkYXRhIGFuZCB0aGUgKmhhdmUgc3RhdGUuICAqaGF2ZSBpcyBpbml0aWFsaXplZCB0bworICAgemVybyBmb3IgdGhlIGZpcnN0IGNhbGwuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCB6bGliX3N5bmNzZWFyY2godW5zaWduZWQgKmhhdmUsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKKyAgICAgICAgdW5zaWduZWQgbGVuKQogewotICBpbnQgciwgdHJ2OwotICB1SW50IGI7CisgICAgdW5zaWduZWQgZ290OworICAgIHVuc2lnbmVkIG5leHQ7CiAKLSAgaWYgKHogPT0gTlVMTCB8fCB6LT5zdGF0ZSA9PSBOVUxMIHx8IHotPm5leHRfaW4gPT0gTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIHRydiA9IGYgPT0gWl9GSU5JU0ggPyBaX0JVRl9FUlJPUiA6IFpfT0s7Ci0gIHIgPSBaX0JVRl9FUlJPUjsKLSAgd2hpbGUgKDEpIHN3aXRjaCAoei0+c3RhdGUtPm1vZGUpCi0gIHsKLSAgICBjYXNlIE1FVEhPRDoKLSAgICAgIE5FRURCWVRFCi0gICAgICBpZiAoKCh6LT5zdGF0ZS0+c3ViLm1ldGhvZCA9IE5FWFRCWVRFKSAmIDB4ZikgIT0gWl9ERUZMQVRFRCkKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBJX0JBRDsKLSAgICAgICAgei0+bXNnID0gKGNoYXIqKSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCh6LT5zdGF0ZS0+c3ViLm1ldGhvZCA+PiA0KSArIDggPiB6LT5zdGF0ZS0+d2JpdHMpCi0gICAgICB7Ci0gICAgICAgIHotPnN0YXRlLT5tb2RlID0gSV9CQUQ7Ci0gICAgICAgIHotPm1zZyA9IChjaGFyKikiaW52YWxpZCB3aW5kb3cgc2l6ZSI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgei0+c3RhdGUtPm1vZGUgPSBGTEFHOwotICAgIGNhc2UgRkxBRzoKLSAgICAgIE5FRURCWVRFCi0gICAgICBiID0gTkVYVEJZVEU7Ci0gICAgICBpZiAoKCh6LT5zdGF0ZS0+c3ViLm1ldGhvZCA8PCA4KSArIGIpICUgMzEpCi0gICAgICB7Ci0gICAgICAgIHotPnN0YXRlLT5tb2RlID0gSV9CQUQ7Ci0gICAgICAgIHotPm1zZyA9IChjaGFyKikiaW5jb3JyZWN0IGhlYWRlciBjaGVjayI7Ci0gICAgICAgIHotPnN0YXRlLT5zdWIubWFya2VyID0gNTsgICAgICAgLyogY2FuJ3QgdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCEoYiAmIFBSRVNFVF9ESUNUKSkKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBCTE9DS1M7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgei0+c3RhdGUtPm1vZGUgPSBESUNUNDsKLSAgICBjYXNlIERJQ1Q0OgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCA9ICh1TG9uZylORVhUQllURSA8PCAyNDsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gRElDVDM7Ci0gICAgY2FzZSBESUNUMzoKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFIDw8IDE2OwotICAgICAgei0+c3RhdGUtPm1vZGUgPSBESUNUMjsKLSAgICBjYXNlIERJQ1QyOgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCArPSAodUxvbmcpTkVYVEJZVEUgPDwgODsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gRElDVDE7Ci0gICAgY2FzZSBESUNUMToKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFOwotICAgICAgei0+YWRsZXIgPSB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQ7Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IERJQ1QwOwotICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUOwotICAgIGNhc2UgRElDVDA6Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IElfQkFEOwotICAgICAgei0+bXNnID0gKGNoYXIqKSJuZWVkIGRpY3Rpb25hcnkiOwotICAgICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSAwOyAgICAgICAvKiBjYW4gdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gICAgY2FzZSBCTE9DS1M6Ci0gICAgICByID0gemxpYl9pbmZsYXRlX2Jsb2Nrcyh6LT5zdGF0ZS0+YmxvY2tzLCB6LCByKTsKLSAgICAgIGlmIChmID09IFpfUEFDS0VUX0ZMVVNIICYmIHotPmF2YWlsX2luID09IDAgJiYgei0+YXZhaWxfb3V0ICE9IDApCi0JICByID0gemxpYl9pbmZsYXRlX3BhY2tldF9mbHVzaCh6LT5zdGF0ZS0+YmxvY2tzKTsKLSAgICAgIGlmIChyID09IFpfREFUQV9FUlJPUikKLSAgICAgIHsKLSAgICAgICAgei0+c3RhdGUtPm1vZGUgPSBJX0JBRDsKLSAgICAgICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSAwOyAgICAgICAvKiBjYW4gdHJ5IGluZmxhdGVTeW5jICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKHIgPT0gWl9PSykKLSAgICAgICAgciA9IHRydjsKLSAgICAgIGlmIChyICE9IFpfU1RSRUFNX0VORCkKLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgICByID0gdHJ2OwotICAgICAgemxpYl9pbmZsYXRlX2Jsb2Nrc19yZXNldCh6LT5zdGF0ZS0+YmxvY2tzLCB6LCAmei0+c3RhdGUtPnN1Yi5jaGVjay53YXMpOwotICAgICAgaWYgKHotPnN0YXRlLT5ub3dyYXApCi0gICAgICB7Ci0gICAgICAgIHotPnN0YXRlLT5tb2RlID0gSV9ET05FOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHotPnN0YXRlLT5tb2RlID0gQ0hFQ0s0OwotICAgIGNhc2UgQ0hFQ0s0OgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCA9ICh1TG9uZylORVhUQllURSA8PCAyNDsKLSAgICAgIHotPnN0YXRlLT5tb2RlID0gQ0hFQ0szOwotICAgIGNhc2UgQ0hFQ0szOgotICAgICAgTkVFREJZVEUKLSAgICAgIHotPnN0YXRlLT5zdWIuY2hlY2submVlZCArPSAodUxvbmcpTkVYVEJZVEUgPDwgMTY7Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IENIRUNLMjsKLSAgICBjYXNlIENIRUNLMjoKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFIDw8IDg7Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IENIRUNLMTsKLSAgICBjYXNlIENIRUNLMToKLSAgICAgIE5FRURCWVRFCi0gICAgICB6LT5zdGF0ZS0+c3ViLmNoZWNrLm5lZWQgKz0gKHVMb25nKU5FWFRCWVRFOworICAgIGdvdCA9ICpoYXZlOworICAgIG5leHQgPSAwOworICAgIHdoaWxlIChuZXh0IDwgbGVuICYmIGdvdCA8IDQpIHsKKyAgICAgICAgaWYgKChpbnQpKGJ1ZltuZXh0XSkgPT0gKGdvdCA8IDIgPyAwIDogMHhmZikpCisgICAgICAgICAgICBnb3QrKzsKKyAgICAgICAgZWxzZSBpZiAoYnVmW25leHRdKQorICAgICAgICAgICAgZ290ID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ290ID0gNCAtIGdvdDsKKyAgICAgICAgbmV4dCsrOworICAgIH0KKyAgICAqaGF2ZSA9IGdvdDsKKyAgICByZXR1cm4gbmV4dDsKK30KKyNlbmRpZgogCi0gICAgICBpZiAoei0+c3RhdGUtPnN1Yi5jaGVjay53YXMgIT0gei0+c3RhdGUtPnN1Yi5jaGVjay5uZWVkKQotICAgICAgewotICAgICAgICB6LT5zdGF0ZS0+bW9kZSA9IElfQkFEOwotICAgICAgICB6LT5tc2cgPSAoY2hhciopImluY29ycmVjdCBkYXRhIGNoZWNrIjsKLSAgICAgICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSA1OyAgICAgICAvKiBjYW4ndCB0cnkgaW5mbGF0ZVN5bmMgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICB6LT5zdGF0ZS0+bW9kZSA9IElfRE9ORTsKLSAgICBjYXNlIElfRE9ORToKLSAgICAgIHJldHVybiBaX1NUUkVBTV9FTkQ7Ci0gICAgY2FzZSBJX0JBRDoKLSAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKLSAgfQotIGVtcHR5OgotICBpZiAoZiAhPSBaX1BBQ0tFVF9GTFVTSCkKLSAgICByZXR1cm4gcjsKLSAgei0+c3RhdGUtPm1vZGUgPSBJX0JBRDsKLSAgei0+bXNnID0gKGNoYXIgKikibmVlZCBtb3JlIGZvciBwYWNrZXQgZmx1c2giOwotICB6LT5zdGF0ZS0+c3ViLm1hcmtlciA9IDA7ICAgICAgIC8qIGNhbiB0cnkgaW5mbGF0ZVN5bmMgKi8KLSAgcmV0dXJuIFpfREFUQV9FUlJPUjsKKyNpZiAwCitpbnQgemxpYl9pbmZsYXRlU3luYyh6X3N0cmVhbXAgc3RybSkKK3sKKyAgICB1bnNpZ25lZCBsZW47ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIHRvIGxvb2sgYXQgb3IgbG9va2VkIGF0ICovCisgICAgdW5zaWduZWQgbG9uZyBpbiwgb3V0OyAgICAgIC8qIHRlbXBvcmFyeSB0byBzYXZlIHRvdGFsX2luIGFuZCB0b3RhbF9vdXQgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls0XTsgICAgICAgLyogdG8gcmVzdG9yZSBiaXQgYnVmZmVyIHRvIGJ5dGUgc3RyaW5nICovCisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgKnN0YXRlOworCisgICAgLyogY2hlY2sgcGFyYW1ldGVycyAqLworICAgIGlmIChzdHJtID09IE5VTEwgfHwgc3RybS0+c3RhdGUgPT0gTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0cm0tPmF2YWlsX2luID09IDAgJiYgc3RhdGUtPmJpdHMgPCA4KSByZXR1cm4gWl9CVUZfRVJST1I7CisKKyAgICAvKiBpZiBmaXJzdCB0aW1lLCBzdGFydCBzZWFyY2ggaW4gYml0IGJ1ZmZlciAqLworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBTWU5DKSB7CisgICAgICAgIHN0YXRlLT5tb2RlID0gU1lOQzsKKyAgICAgICAgc3RhdGUtPmhvbGQgPDw9IHN0YXRlLT5iaXRzICYgNzsKKyAgICAgICAgc3RhdGUtPmJpdHMgLT0gc3RhdGUtPmJpdHMgJiA3OworICAgICAgICBsZW4gPSAwOworICAgICAgICB3aGlsZSAoc3RhdGUtPmJpdHMgPj0gOCkgeworICAgICAgICAgICAgYnVmW2xlbisrXSA9ICh1bnNpZ25lZCBjaGFyKShzdGF0ZS0+aG9sZCk7CisgICAgICAgICAgICBzdGF0ZS0+aG9sZCA+Pj0gODsKKyAgICAgICAgICAgIHN0YXRlLT5iaXRzIC09IDg7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGUtPmhhdmUgPSAwOworICAgICAgICB6bGliX3N5bmNzZWFyY2goJihzdGF0ZS0+aGF2ZSksIGJ1ZiwgbGVuKTsKKyAgICB9CisKKyAgICAvKiBzZWFyY2ggYXZhaWxhYmxlIGlucHV0ICovCisgICAgbGVuID0gemxpYl9zeW5jc2VhcmNoKCYoc3RhdGUtPmhhdmUpLCBzdHJtLT5uZXh0X2luLCBzdHJtLT5hdmFpbF9pbik7CisgICAgc3RybS0+YXZhaWxfaW4gLT0gbGVuOworICAgIHN0cm0tPm5leHRfaW4gKz0gbGVuOworICAgIHN0cm0tPnRvdGFsX2luICs9IGxlbjsKKworICAgIC8qIHJldHVybiBubyBqb3kgb3Igc2V0IHVwIHRvIHJlc3RhcnQgaW5mbGF0ZSgpIG9uIGEgbmV3IGJsb2NrICovCisgICAgaWYgKHN0YXRlLT5oYXZlICE9IDQpIHJldHVybiBaX0RBVEFfRVJST1I7CisgICAgaW4gPSBzdHJtLT50b3RhbF9pbjsgIG91dCA9IHN0cm0tPnRvdGFsX291dDsKKyAgICB6bGliX2luZmxhdGVSZXNldChzdHJtKTsKKyAgICBzdHJtLT50b3RhbF9pbiA9IGluOyAgc3RybS0+dG90YWxfb3V0ID0gb3V0OworICAgIHN0YXRlLT5tb2RlID0gVFlQRTsKKyAgICByZXR1cm4gWl9PSzsKK30KKyNlbmRpZgorCisvKgorICogVGhpcyBzdWJyb3V0aW5lIGFkZHMgdGhlIGRhdGEgYXQgbmV4dF9pbi9hdmFpbF9pbiB0byB0aGUgb3V0cHV0IGhpc3RvcnkKKyAqIHdpdGhvdXQgcGVyZm9ybWluZyBhbnkgb3V0cHV0LiAgVGhlIG91dHB1dCBidWZmZXIgbXVzdCBiZSAiY2F1Z2h0IHVwIjsKKyAqIGkuZS4gbm8gcGVuZGluZyBvdXRwdXQgYnV0IHRoaXMgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY2FzZS4gVGhlIHN0YXRlIG11c3QKKyAqIGJlIHdhaXRpbmcgb24gdGhlIHN0YXJ0IG9mIGEgYmxvY2sgKGkuZS4gbW9kZSA9PSBUWVBFIG9yIEhFQUQpLiAgT24gZXhpdCwKKyAqIHRoZSBvdXRwdXQgd2lsbCBhbHNvIGJlIGNhdWdodCB1cCwgYW5kIHRoZSBjaGVja3N1bSB3aWxsIGhhdmUgYmVlbiB1cGRhdGVkCisgKiBpZiBuZWVkIGJlLgorICovCitpbnQgemxpYl9pbmZsYXRlSW5jb21wKHpfc3RyZWFtICp6KQoreworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlICpzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSAqKXotPnN0YXRlOworICAgIEJ5dGUgKnNhdmVkX25vID0gei0+bmV4dF9vdXQ7CisgICAgdUludCBzYXZlZF9hbyA9IHotPmF2YWlsX291dDsKKworICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBUWVBFICYmIHN0YXRlLT5tb2RlICE9IEhFQUQpCisJcmV0dXJuIFpfREFUQV9FUlJPUjsKKworICAgIC8qIFNldHVwIHNvbWUgdmFyaWFibGVzIHRvIGFsbG93IG1pc3VzZSBvZiB1cGRhdGVXaW5kb3cgKi8KKyAgICB6LT5hdmFpbF9vdXQgPSAwOworICAgIHotPm5leHRfb3V0ID0gei0+bmV4dF9pbiArIHotPmF2YWlsX2luOworCisgICAgemxpYl91cGRhdGV3aW5kb3coeiwgei0+YXZhaWxfaW4pOworCisgICAgLyogUmVzdG9yZSBzYXZlZCB2YXJpYWJsZXMgKi8KKyAgICB6LT5hdmFpbF9vdXQgPSBzYXZlZF9hbzsKKyAgICB6LT5uZXh0X291dCA9IHNhdmVkX25vOworCisgICAgei0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQorICAgICAgICBVUERBVEUoc3RhdGUtPmNoZWNrLCB6LT5uZXh0X2luLCB6LT5hdmFpbF9pbik7CisKKyAgICB6LT50b3RhbF9vdXQgKz0gei0+YXZhaWxfaW47CisgICAgei0+dG90YWxfaW4gKz0gei0+YXZhaWxfaW47CisgICAgei0+bmV4dF9pbiArPSB6LT5hdmFpbF9pbjsKKyAgICBzdGF0ZS0+dG90YWwgKz0gei0+YXZhaWxfaW47CisgICAgei0+YXZhaWxfaW4gPSAwOworCisgICAgcmV0dXJuIFpfT0s7CiB9CmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL2luZmxhdGUuaCBiL2xpYi96bGliX2luZmxhdGUvaW5mbGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmOGE2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvemxpYl9pbmZsYXRlL2luZmxhdGUuaApAQCAtMCwwICsxLDEwNyBAQAorLyogaW5mbGF0ZS5oIC0tIGludGVybmFsIGluZmxhdGUgc3RhdGUgZGVmaW5pdGlvbgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDQgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAorICovCisKKy8qIFdBUk5JTkc6IHRoaXMgZmlsZSBzaG91bGQgKm5vdCogYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMuIEl0IGlzCisgICBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGlicmFyeSBhbmQgaXMKKyAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KKyAqLworCisvKiBQb3NzaWJsZSBpbmZsYXRlIG1vZGVzIGJldHdlZW4gaW5mbGF0ZSgpIGNhbGxzICovCit0eXBlZGVmIGVudW0geworICAgIEhFQUQsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1hZ2ljIGhlYWRlciAqLworICAgIEZMQUdTLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovCisgICAgVElNRSwgICAgICAgLyogaTogd2FpdGluZyBmb3IgbW9kaWZpY2F0aW9uIHRpbWUgKGd6aXApICovCisgICAgT1MsICAgICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgZmxhZ3MgYW5kIG9wZXJhdGluZyBzeXN0ZW0gKGd6aXApICovCisgICAgRVhMRU4sICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgbGVuZ3RoIChnemlwKSAqLworICAgIEVYVFJBLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGJ5dGVzIChnemlwKSAqLworICAgIE5BTUUsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGVuZCBvZiBmaWxlIG5hbWUgKGd6aXApICovCisgICAgQ09NTUVOVCwgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGNvbW1lbnQgKGd6aXApICovCisgICAgSENSQywgICAgICAgLyogaTogd2FpdGluZyBmb3IgaGVhZGVyIGNyYyAoZ3ppcCkgKi8KKyAgICBESUNUSUQsICAgICAvKiBpOiB3YWl0aW5nIGZvciBkaWN0aW9uYXJ5IGNoZWNrIHZhbHVlICovCisgICAgRElDVCwgICAgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBjYWxsICovCisgICAgICAgIFRZUEUsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi8KKyAgICAgICAgVFlQRURPLCAgICAgLyogaTogc2FtZSwgYnV0IHNraXAgY2hlY2sgdG8gZXhpdCBpbmZsYXRlIG9uIG5ldyBibG9jayAqLworICAgICAgICBTVE9SRUQsICAgICAvKiBpOiB3YWl0aW5nIGZvciBzdG9yZWQgc2l6ZSAobGVuZ3RoIGFuZCBjb21wbGVtZW50KSAqLworICAgICAgICBDT1BZLCAgICAgICAvKiBpL286IHdhaXRpbmcgZm9yIGlucHV0IG9yIG91dHB1dCB0byBjb3B5IHN0b3JlZCBibG9jayAqLworICAgICAgICBUQUJMRSwgICAgICAvKiBpOiB3YWl0aW5nIGZvciBkeW5hbWljIGJsb2NrIHRhYmxlIGxlbmd0aHMgKi8KKyAgICAgICAgTEVOTEVOUywgICAgLyogaTogd2FpdGluZyBmb3IgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovCisgICAgICAgIENPREVMRU5TLCAgIC8qIGk6IHdhaXRpbmcgZm9yIGxlbmd0aC9saXQgYW5kIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqLworICAgICAgICAgICAgTEVOLCAgICAgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBjb2RlICovCisgICAgICAgICAgICBMRU5FWFQsICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGggZXh0cmEgYml0cyAqLworICAgICAgICAgICAgRElTVCwgICAgICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgY29kZSAqLworICAgICAgICAgICAgRElTVEVYVCwgICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqLworICAgICAgICAgICAgTUFUQ0gsICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIGNvcHkgc3RyaW5nICovCisgICAgICAgICAgICBMSVQsICAgICAgICAvKiBvOiB3YWl0aW5nIGZvciBvdXRwdXQgc3BhY2UgdG8gd3JpdGUgbGl0ZXJhbCAqLworICAgIENIRUNLLCAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqLworICAgIExFTkdUSCwgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBsZW5ndGggKGd6aXApICovCisgICAgRE9ORSwgICAgICAgLyogZmluaXNoZWQgY2hlY2ssIGRvbmUgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KKyAgICBCQUQsICAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCisgICAgTUVNLCAgICAgICAgLyogZ290IGFuIGluZmxhdGUoKSBtZW1vcnkgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KKyAgICBTWU5DICAgICAgICAvKiBsb29raW5nIGZvciBzeW5jaHJvbml6YXRpb24gYnl0ZXMgdG8gcmVzdGFydCBpbmZsYXRlKCkgKi8KK30gaW5mbGF0ZV9tb2RlOworCisvKgorICAgIFN0YXRlIHRyYW5zaXRpb25zIGJldHdlZW4gYWJvdmUgbW9kZXMgLQorCisgICAgKG1vc3QgbW9kZXMgY2FuIGdvIHRvIHRoZSBCQUQgb3IgTUVNIG1vZGUgLS0gbm90IHNob3duIGZvciBjbGFyaXR5KQorCisgICAgUHJvY2VzcyBoZWFkZXI6CisgICAgICAgIEhFQUQgLT4gKGd6aXApIG9yICh6bGliKQorICAgICAgICAoZ3ppcCkgLT4gRkxBR1MgLT4gVElNRSAtPiBPUyAtPiBFWExFTiAtPiBFWFRSQSAtPiBOQU1FCisgICAgICAgIE5BTUUgLT4gQ09NTUVOVCAtPiBIQ1JDIC0+IFRZUEUKKyAgICAgICAgKHpsaWIpIC0+IERJQ1RJRCBvciBUWVBFCisgICAgICAgIERJQ1RJRCAtPiBESUNUIC0+IFRZUEUKKyAgICBSZWFkIGRlZmxhdGUgYmxvY2tzOgorICAgICAgICAgICAgVFlQRSAtPiBTVE9SRUQgb3IgVEFCTEUgb3IgTEVOIG9yIENIRUNLCisgICAgICAgICAgICBTVE9SRUQgLT4gQ09QWSAtPiBUWVBFCisgICAgICAgICAgICBUQUJMRSAtPiBMRU5MRU5TIC0+IENPREVMRU5TIC0+IExFTgorICAgIFJlYWQgZGVmbGF0ZSBjb2RlczoKKyAgICAgICAgICAgICAgICBMRU4gLT4gTEVORVhUIG9yIExJVCBvciBUWVBFCisgICAgICAgICAgICAgICAgTEVORVhUIC0+IERJU1QgLT4gRElTVEVYVCAtPiBNQVRDSCAtPiBMRU4KKyAgICAgICAgICAgICAgICBMSVQgLT4gTEVOCisgICAgUHJvY2VzcyB0cmFpbGVyOgorICAgICAgICBDSEVDSyAtPiBMRU5HVEggLT4gRE9ORQorICovCisKKy8qIHN0YXRlIG1haW50YWluZWQgYmV0d2VlbiBpbmZsYXRlKCkgY2FsbHMuICBBcHByb3hpbWF0ZWx5IDdLIGJ5dGVzLiAqLworc3RydWN0IGluZmxhdGVfc3RhdGUgeworICAgIGluZmxhdGVfbW9kZSBtb2RlOyAgICAgICAgICAvKiBjdXJyZW50IGluZmxhdGUgbW9kZSAqLworICAgIGludCBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqLworICAgIGludCB3cmFwOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovCisgICAgaW50IGhhdmVkaWN0OyAgICAgICAgICAgICAgIC8qIHRydWUgaWYgZGljdGlvbmFyeSBwcm92aWRlZCAqLworICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlmIHpsaWIpICovCisgICAgdW5zaWduZWQgZG1heDsgICAgICAgICAgICAgIC8qIHpsaWIgaGVhZGVyIG1heCBkaXN0YW5jZSAoSU5GTEFURV9TVFJJQ1QpICovCisgICAgdW5zaWduZWQgbG9uZyBjaGVjazsgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIGNoZWNrIHZhbHVlICovCisgICAgdW5zaWduZWQgbG9uZyB0b3RhbDsgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIG91dHB1dCBjb3VudCAqLworIC8qICAgZ3pfaGVhZGVycCBoZWFkOyAqLyAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqLworICAgICAgICAvKiBzbGlkaW5nIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdiaXRzOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqLworICAgIHVuc2lnbmVkIHdzaXplOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KKyAgICB1bnNpZ25lZCB3aGF2ZTsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLworICAgIHVuc2lnbmVkIHdyaXRlOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KKyAgICB1bnNpZ25lZCBjaGFyICp3aW5kb3c7ICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIG5lZWRlZCAqLworICAgICAgICAvKiBiaXQgYWNjdW11bGF0b3IgKi8KKyAgICB1bnNpZ25lZCBsb25nIGhvbGQ7ICAgICAgICAgLyogaW5wdXQgYml0IGFjY3VtdWxhdG9yICovCisgICAgdW5zaWduZWQgYml0czsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluICJpbiIgKi8KKyAgICAgICAgLyogZm9yIHN0cmluZyBhbmQgc3RvcmVkIGJsb2NrIGNvcHlpbmcgKi8KKyAgICB1bnNpZ25lZCBsZW5ndGg7ICAgICAgICAgICAgLyogbGl0ZXJhbCBvciBsZW5ndGggb2YgZGF0YSB0byBjb3B5ICovCisgICAgdW5zaWduZWQgb2Zmc2V0OyAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgdG8gY29weSBzdHJpbmcgZnJvbSAqLworICAgICAgICAvKiBmb3IgdGFibGUgYW5kIGNvZGUgZGVjb2RpbmcgKi8KKyAgICB1bnNpZ25lZCBleHRyYTsgICAgICAgICAgICAgLyogZXh0cmEgYml0cyBuZWVkZWQgKi8KKyAgICAgICAgLyogZml4ZWQgYW5kIGR5bmFtaWMgY29kZSB0YWJsZXMgKi8KKyAgICBjb2RlIGNvbnN0ICpsZW5jb2RlOyAgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgbGVuZ3RoL2xpdGVyYWwgY29kZXMgKi8KKyAgICBjb2RlIGNvbnN0ICpkaXN0Y29kZTsgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgZGlzdGFuY2UgY29kZXMgKi8KKyAgICB1bnNpZ25lZCBsZW5iaXRzOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqLworICAgIHVuc2lnbmVkIGRpc3RiaXRzOyAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBkaXN0Y29kZSAqLworICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovCisgICAgdW5zaWduZWQgbmNvZGU7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBubGVuOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KKyAgICB1bnNpZ25lZCBuZGlzdDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqLworICAgIHVuc2lnbmVkIGhhdmU7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGhzIGluIGxlbnNbXSAqLworICAgIGNvZGUgKm5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIGNvZGVzW10gKi8KKyAgICB1bnNpZ25lZCBzaG9ydCBsZW5zWzMyMF07ICAgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqLworICAgIHVuc2lnbmVkIHNob3J0IHdvcmtbMjg4XTsgICAvKiB3b3JrIGFyZWEgZm9yIGNvZGUgdGFibGUgYnVpbGRpbmcgKi8KKyAgICBjb2RlIGNvZGVzW0VOT1VHSF07ICAgICAgICAgLyogc3BhY2UgZm9yIGNvZGUgdGFibGVzICovCit9OwpkaWZmIC0tZ2l0IGEvbGliL3psaWJfaW5mbGF0ZS9pbmZsYXRlX3N5bXMuYyBiL2xpYi96bGliX2luZmxhdGUvaW5mbGF0ZV9zeW1zLmMKaW5kZXggZWY0OTczOC4uMjA2MWQ0ZiAxMDA2NDQKLS0tIGEvbGliL3psaWJfaW5mbGF0ZS9pbmZsYXRlX3N5bXMuYworKysgYi9saWIvemxpYl9pbmZsYXRlL2luZmxhdGVfc3ltcy5jCkBAIC0xMiw4ICsxMiw3IEBACiAKIEVYUE9SVF9TWU1CT0woemxpYl9pbmZsYXRlX3dvcmtzcGFjZXNpemUpOwogRVhQT1JUX1NZTUJPTCh6bGliX2luZmxhdGUpOwotRVhQT1JUX1NZTUJPTCh6bGliX2luZmxhdGVJbml0Xyk7Ci1FWFBPUlRfU1lNQk9MKHpsaWJfaW5mbGF0ZUluaXQyXyk7CitFWFBPUlRfU1lNQk9MKHpsaWJfaW5mbGF0ZUluaXQyKTsKIEVYUE9SVF9TWU1CT0woemxpYl9pbmZsYXRlRW5kKTsKIEVYUE9SVF9TWU1CT0woemxpYl9pbmZsYXRlUmVzZXQpOwogRVhQT1JUX1NZTUJPTCh6bGliX2luZmxhdGVJbmNvbXApOyAKZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mbGF0ZV9zeW5jLmMgYi9saWIvemxpYl9pbmZsYXRlL2luZmxhdGVfc3luYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTQxMWZmLi4wMDAwMDAwCi0tLSBhL2xpYi96bGliX2luZmxhdGUvaW5mbGF0ZV9zeW5jLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyogaW5mbGF0ZS5jIC0tIHpsaWIgaW50ZXJmYWNlIHRvIGluZmxhdGUgbW9kdWxlcwotICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggTWFyayBBZGxlcgotICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAotICovCi0KLSNpbmNsdWRlIDxsaW51eC96dXRpbC5oPgotI2luY2x1ZGUgImluZmJsb2NrLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgotCi0jaWYgMAotaW50IHpsaWJfaW5mbGF0ZVN5bmMoCi0Jel9zdHJlYW1wIHoKLSkKLXsKLSAgdUludCBuOyAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gbG9vayBhdCAqLwotICBCeXRlICpwOyAgICAgIC8qIHBvaW50ZXIgdG8gYnl0ZXMgKi8KLSAgdUludCBtOyAgICAgICAvKiBudW1iZXIgb2YgbWFya2VyIGJ5dGVzIGZvdW5kIGluIGEgcm93ICovCi0gIHVMb25nIHIsIHc7ICAgLyogdGVtcG9yYXJpZXMgdG8gc2F2ZSB0b3RhbF9pbiBhbmQgdG90YWxfb3V0ICovCi0KLSAgLyogc2V0IHVwICovCi0gIGlmICh6ID09IE5VTEwgfHwgei0+c3RhdGUgPT0gTlVMTCkKLSAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gIGlmICh6LT5zdGF0ZS0+bW9kZSAhPSBJX0JBRCkKLSAgewotICAgIHotPnN0YXRlLT5tb2RlID0gSV9CQUQ7Ci0gICAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSAwOwotICB9Ci0gIGlmICgobiA9IHotPmF2YWlsX2luKSA9PSAwKQotICAgIHJldHVybiBaX0JVRl9FUlJPUjsKLSAgcCA9IHotPm5leHRfaW47Ci0gIG0gPSB6LT5zdGF0ZS0+c3ViLm1hcmtlcjsKLQotICAvKiBzZWFyY2ggKi8KLSAgd2hpbGUgKG4gJiYgbSA8IDQpCi0gIHsKLSAgICBzdGF0aWMgY29uc3QgQnl0ZSBtYXJrWzRdID0gezAsIDAsIDB4ZmYsIDB4ZmZ9OwotICAgIGlmICgqcCA9PSBtYXJrW21dKQotICAgICAgbSsrOwotICAgIGVsc2UgaWYgKCpwKQotICAgICAgbSA9IDA7Ci0gICAgZWxzZQotICAgICAgbSA9IDQgLSBtOwotICAgIHArKywgbi0tOwotICB9Ci0KLSAgLyogcmVzdG9yZSAqLwotICB6LT50b3RhbF9pbiArPSBwIC0gei0+bmV4dF9pbjsKLSAgei0+bmV4dF9pbiA9IHA7Ci0gIHotPmF2YWlsX2luID0gbjsKLSAgei0+c3RhdGUtPnN1Yi5tYXJrZXIgPSBtOwotCi0gIC8qIHJldHVybiBubyBqb3kgb3Igc2V0IHVwIHRvIHJlc3RhcnQgb24gYSBuZXcgYmxvY2sgKi8KLSAgaWYgKG0gIT0gNCkKLSAgICByZXR1cm4gWl9EQVRBX0VSUk9SOwotICByID0gei0+dG90YWxfaW47ICB3ID0gei0+dG90YWxfb3V0OwotICB6bGliX2luZmxhdGVSZXNldCh6KTsKLSAgei0+dG90YWxfaW4gPSByOyAgei0+dG90YWxfb3V0ID0gdzsKLSAgei0+c3RhdGUtPm1vZGUgPSBCTE9DS1M7Ci0gIHJldHVybiBaX09LOwotfQotI2VuZGlmICAvKiAgMCAgKi8KLQotCi0vKiBSZXR1cm5zIHRydWUgaWYgaW5mbGF0ZSBpcyBjdXJyZW50bHkgYXQgdGhlIGVuZCBvZiBhIGJsb2NrIGdlbmVyYXRlZAotICogYnkgWl9TWU5DX0ZMVVNIIG9yIFpfRlVMTF9GTFVTSC4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IG9uZSBQUFAKLSAqIGltcGxlbWVudGF0aW9uIHRvIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBzYWZldHkgY2hlY2suIFBQUCB1c2VzIFpfU1lOQ19GTFVTSAotICogYnV0IHJlbW92ZXMgdGhlIGxlbmd0aCBieXRlcyBvZiB0aGUgcmVzdWx0aW5nIGVtcHR5IHN0b3JlZCBibG9jay4gV2hlbgotICogZGVjb21wcmVzc2luZywgUFBQIGNoZWNrcyB0aGF0IGF0IHRoZSBlbmQgb2YgaW5wdXQgcGFja2V0LCBpbmZsYXRlIGlzCi0gKiB3YWl0aW5nIGZvciB0aGVzZSBsZW5ndGggYnl0ZXMuCi0gKi8KLSNpZiAwCi1pbnQgemxpYl9pbmZsYXRlU3luY1BvaW50KAotCXpfc3RyZWFtcCB6Ci0pCi17Ci0gIGlmICh6ID09IE5VTEwgfHwgei0+c3RhdGUgPT0gTlVMTCB8fCB6LT5zdGF0ZS0+YmxvY2tzID09IE5VTEwpCi0gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwotICByZXR1cm4gemxpYl9pbmZsYXRlX2Jsb2Nrc19zeW5jX3BvaW50KHotPnN0YXRlLT5ibG9ja3MpOwotfQotI2VuZGlmICAvKiAgMCAgKi8KLQotLyoKLSAqIFRoaXMgc3Vicm91dGluZSBhZGRzIHRoZSBkYXRhIGF0IG5leHRfaW4vYXZhaWxfaW4gdG8gdGhlIG91dHB1dCBoaXN0b3J5Ci0gKiB3aXRob3V0IHBlcmZvcm1pbmcgYW55IG91dHB1dC4gIFRoZSBvdXRwdXQgYnVmZmVyIG11c3QgYmUgImNhdWdodCB1cCI7Ci0gKiBpLmUuIG5vIHBlbmRpbmcgb3V0cHV0IChoZW5jZSBzLT5yZWFkIGVxdWFscyBzLT53cml0ZSksIGFuZCB0aGUgc3RhdGUgbXVzdAotICogYmUgQkxPQ0tTIChpLmUuIHdlIHNob3VsZCBiZSB3aWxsaW5nIHRvIHNlZSB0aGUgc3RhcnQgb2YgYSBzZXJpZXMgb2YKLSAqIEJMT0NLUykuICBPbiBleGl0LCB0aGUgb3V0cHV0IHdpbGwgYWxzbyBiZSBjYXVnaHQgdXAsIGFuZCB0aGUgY2hlY2tzdW0KLSAqIHdpbGwgaGF2ZSBiZWVuIHVwZGF0ZWQgaWYgbmVlZCBiZS4KLSAqLwotc3RhdGljIGludCB6bGliX2luZmxhdGVfYWRkaGlzdG9yeShpbmZsYXRlX2Jsb2Nrc19zdGF0ZWYgKnMsCi0JCQkJICAgICAgel9zdHJlYW0gICAgICAgICAgICAgICp6KQotewotICAgIHVMb25nIGI7ICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovICAvKiBOT1QgVVNFRCBIRVJFICovCi0gICAgdUludCBrOyAgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqLyAvKiBOT1QgVVNFRCBIRVJFICovCi0gICAgdUludCB0OyAgICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBzdG9yYWdlICovCi0gICAgQnl0ZSAqcDsgICAgICAgICAgICAgIC8qIGlucHV0IGRhdGEgcG9pbnRlciAqLwotICAgIHVJbnQgbjsgICAgICAgICAgICAgICAvKiBieXRlcyBhdmFpbGFibGUgdGhlcmUgKi8KLSAgICBCeXRlICpxOyAgICAgICAgICAgICAgLyogb3V0cHV0IHdpbmRvdyB3cml0ZSBwb2ludGVyICovCi0gICAgdUludCBtOyAgICAgICAgICAgICAgIC8qIGJ5dGVzIHRvIGVuZCBvZiB3aW5kb3cgb3IgcmVhZCBwb2ludGVyICovCi0KLSAgICBpZiAocy0+cmVhZCAhPSBzLT53cml0ZSkKLQlyZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gICAgaWYgKHMtPm1vZGUgIT0gVFlQRSkKLQlyZXR1cm4gWl9EQVRBX0VSUk9SOwotCi0gICAgLyogd2UncmUgcmVhZHkgdG8gcm9jayAqLwotICAgIExPQUQKLSAgICAvKiB3aGlsZSB0aGVyZSBpcyBpbnB1dCByZWFkeSwgY29weSB0byBvdXRwdXQgYnVmZmVyLCBtb3ZpbmcKLSAgICAgKiBwb2ludGVycyBhcyBuZWVkZWQuCi0gICAgICovCi0gICAgd2hpbGUgKG4pIHsKLQl0ID0gbjsgIC8qIGhvdyBtYW55IHRvIGRvICovCi0JLyogaXMgdGhlcmUgcm9vbSB1bnRpbCBlbmQgb2YgYnVmZmVyPyAqLwotCWlmICh0ID4gbSkgdCA9IG07Ci0JLyogdXBkYXRlIGNoZWNrIGluZm9ybWF0aW9uICovCi0JaWYgKHMtPmNoZWNrZm4gIT0gTlVMTCkKLQkgICAgcy0+Y2hlY2sgPSAoKnMtPmNoZWNrZm4pKHMtPmNoZWNrLCBxLCB0KTsKLQltZW1jcHkocSwgcCwgdCk7Ci0JcSArPSB0OwotCXAgKz0gdDsKLQluIC09IHQ7Ci0Jei0+dG90YWxfb3V0ICs9IHQ7Ci0Jcy0+cmVhZCA9IHE7ICAgIC8qIGRyYWcgcmVhZCBwb2ludGVyIGZvcndhcmQgKi8KLS8qICAgICAgV1dSQVAgICovIAkvKiBleHBhbmQgV1dSQVAgbWFjcm8gYnkgaGFuZCB0byBoYW5kbGUgcy0+cmVhZCAqLwotCWlmIChxID09IHMtPmVuZCkgewotCSAgICBzLT5yZWFkID0gcSA9IHMtPndpbmRvdzsKLQkgICAgbSA9IFdBVkFJTDsKLQl9Ci0gICAgfQotICAgIFVQREFURQotICAgIHJldHVybiBaX09LOwotfQotCi0KLS8qCi0gKiBUaGlzIHN1YnJvdXRpbmUgYWRkcyB0aGUgZGF0YSBhdCBuZXh0X2luL2F2YWlsX2luIHRvIHRoZSBvdXRwdXQgaGlzdG9yeQotICogd2l0aG91dCBwZXJmb3JtaW5nIGFueSBvdXRwdXQuICBUaGUgb3V0cHV0IGJ1ZmZlciBtdXN0IGJlICJjYXVnaHQgdXAiOwotICogaS5lLiBubyBwZW5kaW5nIG91dHB1dCAoaGVuY2Ugcy0+cmVhZCBlcXVhbHMgcy0+d3JpdGUpLCBhbmQgdGhlIHN0YXRlIG11c3QKLSAqIGJlIEJMT0NLUyAoaS5lLiB3ZSBzaG91bGQgYmUgd2lsbGluZyB0byBzZWUgdGhlIHN0YXJ0IG9mIGEgc2VyaWVzIG9mCi0gKiBCTE9DS1MpLiAgT24gZXhpdCwgdGhlIG91dHB1dCB3aWxsIGFsc28gYmUgY2F1Z2h0IHVwLCBhbmQgdGhlIGNoZWNrc3VtCi0gKiB3aWxsIGhhdmUgYmVlbiB1cGRhdGVkIGlmIG5lZWQgYmUuCi0gKi8KLQotaW50IHpsaWJfaW5mbGF0ZUluY29tcCgKLQl6X3N0cmVhbSAqegotCi0pCi17Ci0gICAgaWYgKHotPnN0YXRlLT5tb2RlICE9IEJMT0NLUykKLQlyZXR1cm4gWl9EQVRBX0VSUk9SOwotICAgIHJldHVybiB6bGliX2luZmxhdGVfYWRkaGlzdG9yeSh6LT5zdGF0ZS0+YmxvY2tzLCB6KTsKLX0KZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mdHJlZXMuYyBiL2xpYi96bGliX2luZmxhdGUvaW5mdHJlZXMuYwppbmRleCA4NzQ5NTBlLi42MjM0M2M1IDEwMDY0NAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZnRyZWVzLmMKKysrIGIvbGliL3psaWJfaW5mbGF0ZS9pbmZ0cmVlcy5jCkBAIC0xLDQxMiArMSwzMjkgQEAKIC8qIGluZnRyZWVzLmMgLS0gZ2VuZXJhdGUgSHVmZm1hbiB0cmVlcyBmb3IgZWZmaWNpZW50IGRlY29kaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBNYXJrIEFkbGVyCi0gKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oIAorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMDUgTWFyayBBZGxlcgorICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKICNpbmNsdWRlIDxsaW51eC96dXRpbC5oPgogI2luY2x1ZGUgImluZnRyZWVzLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgogCi1zdGF0aWMgY29uc3QgY2hhciBpbmZsYXRlX2NvcHlyaWdodFtdIF9fYXR0cmlidXRlX3VzZWRfXyA9Ci0gICAiIGluZmxhdGUgMS4xLjMgQ29weXJpZ2h0IDE5OTUtMTk5OCBNYXJrIEFkbGVyICI7CisjZGVmaW5lIE1BWEJJVFMgMTUKKworY29uc3QgY2hhciBpbmZsYXRlX2NvcHlyaWdodFtdID0KKyAgICIgaW5mbGF0ZSAxLjIuMyBDb3B5cmlnaHQgMTk5NS0yMDA1IE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdAogICBpbmNsdWRlIHN1Y2ggYW4gYWNrbm93bGVkZ21lbnQsIEkgd291bGQgYXBwcmVjaWF0ZSB0aGF0IHlvdSBrZWVwIHRoaXMKICAgY29weXJpZ2h0IHN0cmluZyBpbiB0aGUgZXhlY3V0YWJsZSBvZiB5b3VyIHByb2R1Y3QuCiAgKi8KLXN0cnVjdCBpbnRlcm5hbF9zdGF0ZTsKLQotLyogc2ltcGxpZnkgdGhlIHVzZSBvZiB0aGUgaW5mbGF0ZV9odWZ0IHR5cGUgd2l0aCBzb21lIGRlZmluZXMgKi8KLSNkZWZpbmUgZXhvcCB3b3JkLndoYXQuRXhvcAotI2RlZmluZSBiaXRzIHdvcmQud2hhdC5CaXRzCi0KLQotc3RhdGljIGludCBodWZ0X2J1aWxkICgKLSAgICB1SW50ICosICAgICAgICAgICAgIC8qIGNvZGUgbGVuZ3RocyBpbiBiaXRzICovCi0gICAgdUludCwgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZXMgKi8KLSAgICB1SW50LCAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiAic2ltcGxlIiBjb2RlcyAqLwotICAgIGNvbnN0IHVJbnQgKiwgICAgICAgLyogbGlzdCBvZiBiYXNlIHZhbHVlcyBmb3Igbm9uLXNpbXBsZSBjb2RlcyAqLwotICAgIGNvbnN0IHVJbnQgKiwgICAgICAgLyogbGlzdCBvZiBleHRyYSBiaXRzIGZvciBub24tc2ltcGxlIGNvZGVzICovCi0gICAgaW5mbGF0ZV9odWZ0ICoqLCAgICAvKiByZXN1bHQ6IHN0YXJ0aW5nIHRhYmxlICovCi0gICAgdUludCAqLCAgICAgICAgICAgICAvKiBtYXhpbXVtIGxvb2t1cCBiaXRzIChyZXR1cm5zIGFjdHVhbCkgKi8KLSAgICBpbmZsYXRlX2h1ZnQgKiwgICAgIC8qIHNwYWNlIGZvciB0cmVlcyAqLwotICAgIHVJbnQgKiwgICAgICAgICAgICAgLyogaHVmdHMgdXNlZCBpbiBzcGFjZSAqLwotICAgIHVJbnQgKiApOyAgICAgICAgICAgLyogc3BhY2UgZm9yIHZhbHVlcyAqLwotCi0vKiBUYWJsZXMgZm9yIGRlZmxhdGUgZnJvbSBQS1pJUCdzIGFwcG5vdGUudHh0LiAqLwotc3RhdGljIGNvbnN0IHVJbnQgY3BsZW5zWzMxXSA9IHsgLyogQ29weSBsZW5ndGhzIGZvciBsaXRlcmFsIGNvZGVzIDI1Ny4uMjg1ICovCi0gICAgICAgIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsCi0gICAgICAgIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwfTsKLSAgICAgICAgLyogc2VlIG5vdGUgIzEzIGFib3ZlIGFib3V0IDI1OCAqLwotc3RhdGljIGNvbnN0IHVJbnQgY3BsZXh0WzMxXSA9IHsgLyogRXh0cmEgYml0cyBmb3IgbGl0ZXJhbCBjb2RlcyAyNTcuLjI4NSAqLwotICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLAotICAgICAgICAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCAwLCAxMTIsIDExMn07IC8qIDExMj09aW52YWxpZCAqLwotc3RhdGljIGNvbnN0IHVJbnQgY3BkaXN0WzMwXSA9IHsgLyogQ29weSBvZmZzZXRzIGZvciBkaXN0YW5jZSBjb2RlcyAwLi4yOSAqLwotICAgICAgICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsCi0gICAgICAgIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSwKLSAgICAgICAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3N307Ci1zdGF0aWMgY29uc3QgdUludCBjcGRleHRbMzBdID0geyAvKiBFeHRyYSBiaXRzIGZvciBkaXN0YW5jZSBjb2RlcyAqLwotICAgICAgICAwLCAwLCAwLCAwLCAxLCAxLCAyLCAyLCAzLCAzLCA0LCA0LCA1LCA1LCA2LCA2LAotICAgICAgICA3LCA3LCA4LCA4LCA5LCA5LCAxMCwgMTAsIDExLCAxMSwKLSAgICAgICAgMTIsIDEyLCAxMywgMTN9OwogCiAvKgotICAgSHVmZm1hbiBjb2RlIGRlY29kaW5nIGlzIHBlcmZvcm1lZCB1c2luZyBhIG11bHRpLWxldmVsIHRhYmxlIGxvb2t1cC4KLSAgIFRoZSBmYXN0ZXN0IHdheSB0byBkZWNvZGUgaXMgdG8gc2ltcGx5IGJ1aWxkIGEgbG9va3VwIHRhYmxlIHdob3NlCi0gICBzaXplIGlzIGRldGVybWluZWQgYnkgdGhlIGxvbmdlc3QgY29kZS4gIEhvd2V2ZXIsIHRoZSB0aW1lIGl0IHRha2VzCi0gICB0byBidWlsZCB0aGlzIHRhYmxlIGNhbiBhbHNvIGJlIGEgZmFjdG9yIGlmIHRoZSBkYXRhIGJlaW5nIGRlY29kZWQKLSAgIGlzIG5vdCB2ZXJ5IGxvbmcuICBUaGUgbW9zdCBjb21tb24gY29kZXMgYXJlIG5lY2Vzc2FyaWx5IHRoZQotICAgc2hvcnRlc3QgY29kZXMsIHNvIHRob3NlIGNvZGVzIGRvbWluYXRlIHRoZSBkZWNvZGluZyB0aW1lLCBhbmQgaGVuY2UKLSAgIHRoZSBzcGVlZC4gIFRoZSBpZGVhIGlzIHlvdSBjYW4gaGF2ZSBhIHNob3J0ZXIgdGFibGUgdGhhdCBkZWNvZGVzIHRoZQotICAgc2hvcnRlciwgbW9yZSBwcm9iYWJsZSBjb2RlcywgYW5kIHRoZW4gcG9pbnQgdG8gc3Vic2lkaWFyeSB0YWJsZXMgZm9yCi0gICB0aGUgbG9uZ2VyIGNvZGVzLiAgVGhlIHRpbWUgaXQgY29zdHMgdG8gZGVjb2RlIHRoZSBsb25nZXIgY29kZXMgaXMKLSAgIHRoZW4gdHJhZGVkIGFnYWluc3QgdGhlIHRpbWUgaXQgdGFrZXMgdG8gbWFrZSBsb25nZXIgdGFibGVzLgotCi0gICBUaGlzIHJlc3VsdHMgb2YgdGhpcyB0cmFkZSBhcmUgaW4gdGhlIHZhcmlhYmxlcyBsYml0cyBhbmQgZGJpdHMKLSAgIGJlbG93LiAgbGJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRoZSBmaXJzdCBsZXZlbCB0YWJsZSBmb3IgbGl0ZXJhbC8KLSAgIGxlbmd0aCBjb2RlcyBjYW4gZGVjb2RlIGluIG9uZSBzdGVwLCBhbmQgZGJpdHMgaXMgdGhlIHNhbWUgdGhpbmcgZm9yCi0gICB0aGUgZGlzdGFuY2UgY29kZXMuICBTdWJzZXF1ZW50IHRhYmxlcyBhcmUgYWxzbyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KLSAgIHRob3NlIHNpemVzLiAgVGhlc2UgdmFsdWVzIG1heSBiZSBhZGp1c3RlZCBlaXRoZXIgd2hlbiBhbGwgb2YgdGhlCi0gICBjb2RlcyBhcmUgc2hvcnRlciB0aGFuIHRoYXQsIGluIHdoaWNoIGNhc2UgdGhlIGxvbmdlc3QgY29kZSBsZW5ndGggaW4KLSAgIGJpdHMgaXMgdXNlZCwgb3Igd2hlbiB0aGUgc2hvcnRlc3QgY29kZSBpcyAqbG9uZ2VyKiB0aGFuIHRoZSByZXF1ZXN0ZWQKLSAgIHRhYmxlIHNpemUsIGluIHdoaWNoIGNhc2UgdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgY29kZSBpbiBiaXRzIGlzCi0gICB1c2VkLgotCi0gICBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRoZSB0d28gdGFibGVzLCBzaW5jZSB0aGV5IGNvZGUgYQotICAgZGlmZmVyZW50IG51bWJlciBvZiBwb3NzaWJpbGl0aWVzIGVhY2guICBUaGUgbGl0ZXJhbC9sZW5ndGggdGFibGUKLSAgIGNvZGVzIDI4NiBwb3NzaWJsZSB2YWx1ZXMsIG9yIGluIGEgZmxhdCBjb2RlLCBhIGxpdHRsZSBvdmVyIGVpZ2h0Ci0gICBiaXRzLiAgVGhlIGRpc3RhbmNlIHRhYmxlIGNvZGVzIDMwIHBvc3NpYmxlIHZhbHVlcywgb3IgYSBsaXR0bGUgbGVzcwotICAgdGhhbiBmaXZlIGJpdHMsIGZsYXQuICBUaGUgb3B0aW11bSB2YWx1ZXMgZm9yIHNwZWVkIGVuZCB1cCBiZWluZwotICAgYWJvdXQgb25lIGJpdCBtb3JlIHRoYW4gdGhvc2UsIHNvIGxiaXRzIGlzIDgrMSBhbmQgZGJpdHMgaXMgNSsxLgotICAgVGhlIG9wdGltdW0gdmFsdWVzIG1heSBkaWZmZXIgdGhvdWdoIGZyb20gbWFjaGluZSB0byBtYWNoaW5lLCBhbmQKLSAgIHBvc3NpYmx5IGV2ZW4gYmV0d2VlbiBjb21waWxlcnMuICBZb3VyIG1pbGVhZ2UgbWF5IHZhcnkuCisgICBCdWlsZCBhIHNldCBvZiB0YWJsZXMgdG8gZGVjb2RlIHRoZSBwcm92aWRlZCBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLgorICAgVGhlIGNvZGUgbGVuZ3RocyBhcmUgbGVuc1swLi5jb2Rlcy0xXS4gIFRoZSByZXN1bHQgc3RhcnRzIGF0ICp0YWJsZSwKKyAgIHdob3NlIGluZGljZXMgYXJlIDAuLjJeYml0cy0xLiAgd29yayBpcyBhIHdyaXRhYmxlIGFycmF5IG9mIGF0IGxlYXN0CisgICBsZW5zIHNob3J0cywgd2hpY2ggaXMgdXNlZCBhcyBhIHdvcmsgYXJlYS4gIHR5cGUgaXMgdGhlIHR5cGUgb2YgY29kZQorICAgdG8gYmUgZ2VuZXJhdGVkLCBDT0RFUywgTEVOUywgb3IgRElTVFMuICBPbiByZXR1cm4sIHplcm8gaXMgc3VjY2VzcywKKyAgIC0xIGlzIGFuIGludmFsaWQgY29kZSwgYW5kICsxIG1lYW5zIHRoYXQgRU5PVUdIIGlzbid0IGVub3VnaC4gIHRhYmxlCisgICBvbiByZXR1cm4gcG9pbnRzIHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBlbnRyeSdzIGFkZHJlc3MuICBiaXRzIGlzIHRoZQorICAgcmVxdWVzdGVkIHJvb3QgdGFibGUgaW5kZXggYml0cywgYW5kIG9uIHJldHVybiBpdCBpcyB0aGUgYWN0dWFsIHJvb3QKKyAgIHRhYmxlIGluZGV4IGJpdHMuICBJdCB3aWxsIGRpZmZlciBpZiB0aGUgcmVxdWVzdCBpcyBncmVhdGVyIHRoYW4gdGhlCisgICBsb25nZXN0IGNvZGUgb3IgaWYgaXQgaXMgbGVzcyB0aGFuIHRoZSBzaG9ydGVzdCBjb2RlLgogICovCi0KLQotLyogSWYgQk1BWCBuZWVkcyB0byBiZSBsYXJnZXIgdGhhbiAxNiwgdGhlbiBoIGFuZCB4W10gc2hvdWxkIGJlIHVMb25nLiAqLwotI2RlZmluZSBCTUFYIDE1ICAgICAgICAgLyogbWF4aW11bSBiaXQgbGVuZ3RoIG9mIGFueSBjb2RlICovCi0KLXN0YXRpYyBpbnQgaHVmdF9idWlsZCgKLQl1SW50ICpiLCAgICAgICAgICAgICAgIC8qIGNvZGUgbGVuZ3RocyBpbiBiaXRzIChhbGwgYXNzdW1lZCA8PSBCTUFYKSAqLwotCXVJbnQgbiwgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGVzIChhc3N1bWVkIDw9IDI4OCkgKi8KLQl1SW50IHMsICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzaW1wbGUtdmFsdWVkIGNvZGVzICgwLi5zLTEpICovCi0JY29uc3QgdUludCAqZCwgICAgICAgICAvKiBsaXN0IG9mIGJhc2UgdmFsdWVzIGZvciBub24tc2ltcGxlIGNvZGVzICovCi0JY29uc3QgdUludCAqZSwgICAgICAgICAvKiBsaXN0IG9mIGV4dHJhIGJpdHMgZm9yIG5vbi1zaW1wbGUgY29kZXMgKi8KLQlpbmZsYXRlX2h1ZnQgKip0LCAgICAgIC8qIHJlc3VsdDogc3RhcnRpbmcgdGFibGUgKi8KLQl1SW50ICptLCAgICAgICAgICAgICAgIC8qIG1heGltdW0gbG9va3VwIGJpdHMsIHJldHVybnMgYWN0dWFsICovCi0JaW5mbGF0ZV9odWZ0ICpocCwgICAgICAvKiBzcGFjZSBmb3IgdHJlZXMgKi8KLQl1SW50ICpobiwgICAgICAgICAgICAgIC8qIGh1ZnRzIHVzZWQgaW4gc3BhY2UgKi8KLQl1SW50ICp2ICAgICAgICAgICAgICAgIC8qIHdvcmtpbmcgYXJlYTogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGggKi8KLSkKLS8qIEdpdmVuIGEgbGlzdCBvZiBjb2RlIGxlbmd0aHMgYW5kIGEgbWF4aW11bSB0YWJsZSBzaXplLCBtYWtlIGEgc2V0IG9mCi0gICB0YWJsZXMgdG8gZGVjb2RlIHRoYXQgc2V0IG9mIGNvZGVzLiAgUmV0dXJuIFpfT0sgb24gc3VjY2VzcywgWl9CVUZfRVJST1IKLSAgIGlmIHRoZSBnaXZlbiBjb2RlIHNldCBpcyBpbmNvbXBsZXRlICh0aGUgdGFibGVzIGFyZSBzdGlsbCBidWlsdCBpbiB0aGlzCi0gICBjYXNlKSwgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBpcyBpbnZhbGlkIChhbiBvdmVyLXN1YnNjcmliZWQgc2V0IG9mCi0gICBsZW5ndGhzKSwgb3IgWl9NRU1fRVJST1IgaWYgbm90IGVub3VnaCBtZW1vcnkuICovCitpbnQgemxpYl9pbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGNvZGVzLCB0YWJsZSwgYml0cywgd29yaykKK2NvZGV0eXBlIHR5cGU7Cit1bnNpZ25lZCBzaG9ydCAqbGVuczsKK3Vuc2lnbmVkIGNvZGVzOworY29kZSAqKnRhYmxlOwordW5zaWduZWQgKmJpdHM7Cit1bnNpZ25lZCBzaG9ydCAqd29yazsKIHsKKyAgICB1bnNpZ25lZCBsZW47ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi8KKyAgICB1bnNpZ25lZCBzeW07ICAgICAgICAgICAgICAgLyogaW5kZXggb2YgY29kZSBzeW1ib2xzICovCisgICAgdW5zaWduZWQgbWluLCBtYXg7ICAgICAgICAgIC8qIG1pbmltdW0gYW5kIG1heGltdW0gY29kZSBsZW5ndGhzICovCisgICAgdW5zaWduZWQgcm9vdDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciByb290IHRhYmxlICovCisgICAgdW5zaWduZWQgY3VycjsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovCisgICAgdW5zaWduZWQgZHJvcDsgICAgICAgICAgICAgIC8qIGNvZGUgYml0cyB0byBkcm9wIGZvciBzdWItdGFibGUgKi8KKyAgICBpbnQgbGVmdDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi8KKyAgICB1bnNpZ25lZCB1c2VkOyAgICAgICAgICAgICAgLyogY29kZSBlbnRyaWVzIGluIHRhYmxlIHVzZWQgKi8KKyAgICB1bnNpZ25lZCBodWZmOyAgICAgICAgICAgICAgLyogSHVmZm1hbiBjb2RlICovCisgICAgdW5zaWduZWQgaW5jcjsgICAgICAgICAgICAgIC8qIGZvciBpbmNyZW1lbnRpbmcgY29kZSwgaW5kZXggKi8KKyAgICB1bnNpZ25lZCBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi8KKyAgICB1bnNpZ25lZCBsb3c7ICAgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqLworICAgIHVuc2lnbmVkIG1hc2s7ICAgICAgICAgICAgICAvKiBtYXNrIGZvciBsb3cgcm9vdCBiaXRzICovCisgICAgY29kZSB0aGlzOyAgICAgICAgICAgICAgICAgIC8qIHRhYmxlIGVudHJ5IGZvciBkdXBsaWNhdGlvbiAqLworICAgIGNvZGUgKm5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKmJhc2U7ICAgICAvKiBiYXNlIHZhbHVlIHRhYmxlIHRvIHVzZSAqLworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpleHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi8KKyAgICBpbnQgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogdXNlIGJhc2UgYW5kIGV4dHJhIGZvciBzeW1ib2wgPiBlbmQgKi8KKyAgICB1bnNpZ25lZCBzaG9ydCBjb3VudFtNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KKyAgICB1bnNpZ25lZCBzaG9ydCBvZmZzW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqLworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsYmFzZVszMV0gPSB7IC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovCisgICAgICAgIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsCisgICAgICAgIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwfTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGV4dFszMV0gPSB7IC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBleHRyYSAqLworICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE3LCAxOCwgMTgsIDE4LCAxOCwKKyAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMTYsIDIwMSwgMTk2fTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBiYXNlICovCisgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKKyAgICAgICAgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LAorICAgICAgICA4MTkzLCAxMjI4OSwgMTYzODUsIDI0NTc3LCAwLCAwfTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGV4dFszMl0gPSB7IC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovCisgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLAorICAgICAgICAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNywKKyAgICAgICAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NH07CiAKLSAgdUludCBhOyAgICAgICAgICAgICAgICAgICAgICAgLyogY291bnRlciBmb3IgY29kZXMgb2YgbGVuZ3RoIGsgKi8KLSAgdUludCBjW0JNQVgrMV07ICAgICAgICAgICAgICAgLyogYml0IGxlbmd0aCBjb3VudCB0YWJsZSAqLwotICB1SW50IGY7ICAgICAgICAgICAgICAgICAgICAgICAvKiBpIHJlcGVhdHMgaW4gdGFibGUgZXZlcnkgZiBlbnRyaWVzICovCi0gIGludCBnOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gY29kZSBsZW5ndGggKi8KLSAgaW50IGg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogdGFibGUgbGV2ZWwgKi8KLSAgcmVnaXN0ZXIgdUludCBpOyAgICAgICAgICAgICAgLyogY291bnRlciwgY3VycmVudCBjb2RlICovCi0gIHJlZ2lzdGVyIHVJbnQgajsgICAgICAgICAgICAgIC8qIGNvdW50ZXIgKi8KLSAgcmVnaXN0ZXIgaW50IGs7ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgaW4gY3VycmVudCBjb2RlICovCi0gIGludCBsOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgcGVyIHRhYmxlIChyZXR1cm5lZCBpbiBtKSAqLwotICB1SW50IG1hc2s7ICAgICAgICAgICAgICAgICAgICAvKiAoMSA8PCB3KSAtIDEsIHRvIGF2b2lkIGNjIC1PIGJ1ZyBvbiBIUCAqLwotICByZWdpc3RlciB1SW50ICpwOyAgICAgICAgICAgICAvKiBwb2ludGVyIGludG8gY1tdLCBiW10sIG9yIHZbXSAqLwotICBpbmZsYXRlX2h1ZnQgKnE7ICAgICAgICAgICAgICAvKiBwb2ludHMgdG8gY3VycmVudCB0YWJsZSAqLwotICBzdHJ1Y3QgaW5mbGF0ZV9odWZ0X3MgcjsgICAgICAvKiB0YWJsZSBlbnRyeSBmb3Igc3RydWN0dXJlIGFzc2lnbm1lbnQgKi8KLSAgaW5mbGF0ZV9odWZ0ICp1W0JNQVhdOyAgICAgICAgLyogdGFibGUgc3RhY2sgKi8KLSAgcmVnaXN0ZXIgaW50IHc7ICAgICAgICAgICAgICAgLyogYml0cyBiZWZvcmUgdGhpcyB0YWJsZSA9PSAobCAqIGgpICovCi0gIHVJbnQgeFtCTUFYKzFdOyAgICAgICAgICAgICAgIC8qIGJpdCBvZmZzZXRzLCB0aGVuIGNvZGUgc3RhY2sgKi8KLSAgdUludCAqeHA7ICAgICAgICAgICAgICAgICAgICAgLyogcG9pbnRlciBpbnRvIHggKi8KLSAgaW50IHk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGR1bW15IGNvZGVzIGFkZGVkICovCi0gIHVJbnQgejsgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbnRyaWVzIGluIGN1cnJlbnQgdGFibGUgKi8KKyAgICAvKgorICAgICAgIFByb2Nlc3MgYSBzZXQgb2YgY29kZSBsZW5ndGhzIHRvIGNyZWF0ZSBhIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUuICBUaGUKKyAgICAgICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGUKKyAgICAgICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZQorICAgICAgIHN5bWJvbHMgYnkgbGVuZ3RoIGZyb20gc2hvcnQgdG8gbG9uZywgYW5kIHJldGFpbmluZyB0aGUgc3ltYm9sIG9yZGVyCisgICAgICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0cworICAgICAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyCisgICAgICAgaW5jcmVtZW50cyBmb3IgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgemVyb3MgYXJlIGFwcGVuZGVkIGFzIHRoZSBsZW5ndGgKKyAgICAgICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzCisgICAgICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcyBhcmUgYnVpbHQgaW4gdGhlIGxhcmdlIGxvb3AgYmVsb3csIHRoZSBpbnRlZ2VyIGNvZGVzCisgICAgICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy4KIAorICAgICAgIFRoaXMgcm91dGluZSBhc3N1bWVzLCBidXQgZG9lcyBub3QgY2hlY2ssIHRoYXQgYWxsIG9mIHRoZSBlbnRyaWVzIGluCisgICAgICAgbGVuc1tdIGFyZSBpbiB0aGUgcmFuZ2UgMC4uTUFYQklUUy4gIFRoZSBjYWxsZXIgbXVzdCBhc3N1cmUgdGhpcy4KKyAgICAgICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdAorICAgICAgIHN5bWJvbCBkb2VzIG5vdCBvY2N1ciBpbiB0aGlzIGNvZGUuCiAKLSAgLyogR2VuZXJhdGUgY291bnRzIGZvciBlYWNoIGJpdCBsZW5ndGggKi8KLSAgcCA9IGM7Ci0jZGVmaW5lIEMwICpwKysgPSAwOwotI2RlZmluZSBDMiBDMCBDMCBDMCBDMAotI2RlZmluZSBDNCBDMiBDMiBDMiBDMgotICBDNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciBjW10tLWFzc3VtZSBCTUFYKzEgaXMgMTYgKi8KLSAgcCA9IGI7ICBpID0gbjsKLSAgZG8gewotICAgIGNbKnArK10rKzsgICAgICAgICAgICAgICAgICAvKiBhc3N1bWUgYWxsIGVudHJpZXMgPD0gQk1BWCAqLwotICB9IHdoaWxlICgtLWkpOwotICBpZiAoY1swXSA9PSBuKSAgICAgICAgICAgICAgICAvKiBudWxsIGlucHV0LS1hbGwgemVybyBsZW5ndGggY29kZXMgKi8KLSAgewotICAgICp0ID0gTlVMTDsKLSAgICAqbSA9IDA7Ci0gICAgcmV0dXJuIFpfT0s7Ci0gIH0KKyAgICAgICBUaGUgY29kZXMgYXJlIHNvcnRlZCBieSBjb21wdXRpbmcgYSBjb3VudCBvZiBjb2RlcyBmb3IgZWFjaCBsZW5ndGgsCisgICAgICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlCisgICAgICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkCisgICAgICAgdGFibGUuICBUaGUgc29ydGVkIHRhYmxlIGlzIHdvcmtbXSwgd2l0aCB0aGF0IHNwYWNlIGJlaW5nIHByb3ZpZGVkIGJ5CisgICAgICAgdGhlIGNhbGxlci4KIAorICAgICAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmcKKyAgICAgICB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggY29kZXMsIGRldGVybWluaW5nIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZAorICAgICAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZQorICAgICAgIGRlY29kaW5nIHRhYmxlcy4KKyAgICAgKi8KIAotICAvKiBGaW5kIG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoLCBib3VuZCAqbSBieSB0aG9zZSAqLwotICBsID0gKm07Ci0gIGZvciAoaiA9IDE7IGogPD0gQk1BWDsgaisrKQotICAgIGlmIChjW2pdKQotICAgICAgYnJlYWs7Ci0gIGsgPSBqOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gY29kZSBsZW5ndGggKi8KLSAgaWYgKCh1SW50KWwgPCBqKQotICAgIGwgPSBqOwotICBmb3IgKGkgPSBCTUFYOyBpOyBpLS0pCi0gICAgaWYgKGNbaV0pCi0gICAgICBicmVhazsKLSAgZyA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBjb2RlIGxlbmd0aCAqLwotICBpZiAoKHVJbnQpbCA+IGkpCi0gICAgbCA9IGk7Ci0gICptID0gbDsKKyAgICAvKiBhY2N1bXVsYXRlIGxlbmd0aHMgZm9yIGNvZGVzIChhc3N1bWVzIGxlbnNbXSBhbGwgaW4gMC4uTUFYQklUUykgKi8KKyAgICBmb3IgKGxlbiA9IDA7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykKKyAgICAgICAgY291bnRbbGVuXSA9IDA7CisgICAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspCisgICAgICAgIGNvdW50W2xlbnNbc3ltXV0rKzsKIAorICAgIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovCisgICAgcm9vdCA9ICpiaXRzOworICAgIGZvciAobWF4ID0gTUFYQklUUzsgbWF4ID49IDE7IG1heC0tKQorICAgICAgICBpZiAoY291bnRbbWF4XSAhPSAwKSBicmVhazsKKyAgICBpZiAocm9vdCA+IG1heCkgcm9vdCA9IG1heDsKKyAgICBpZiAobWF4ID09IDApIHsgICAgICAgICAgICAgICAgICAgICAvKiBubyBzeW1ib2xzIHRvIGNvZGUgYXQgYWxsICovCisgICAgICAgIHRoaXMub3AgPSAodW5zaWduZWQgY2hhcik2NDsgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqLworICAgICAgICB0aGlzLmJpdHMgPSAodW5zaWduZWQgY2hhcikxOworICAgICAgICB0aGlzLnZhbCA9ICh1bnNpZ25lZCBzaG9ydCkwOworICAgICAgICAqKCp0YWJsZSkrKyA9IHRoaXM7ICAgICAgICAgICAgIC8qIG1ha2UgYSB0YWJsZSB0byBmb3JjZSBhbiBlcnJvciAqLworICAgICAgICAqKCp0YWJsZSkrKyA9IHRoaXM7CisgICAgICAgICpiaXRzID0gMTsKKyAgICAgICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovCisgICAgfQorICAgIGZvciAobWluID0gMTsgbWluIDw9IE1BWEJJVFM7IG1pbisrKQorICAgICAgICBpZiAoY291bnRbbWluXSAhPSAwKSBicmVhazsKKyAgICBpZiAocm9vdCA8IG1pbikgcm9vdCA9IG1pbjsKIAotICAvKiBBZGp1c3QgbGFzdCBsZW5ndGggY291bnQgdG8gZmlsbCBvdXQgY29kZXMsIGlmIG5lZWRlZCAqLwotICBmb3IgKHkgPSAxIDw8IGo7IGogPCBpOyBqKyssIHkgPDw9IDEpCi0gICAgaWYgKCh5IC09IGNbal0pIDwgMCkKLSAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7Ci0gIGlmICgoeSAtPSBjW2ldKSA8IDApCi0gICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKLSAgY1tpXSArPSB5OworICAgIC8qIGNoZWNrIGZvciBhbiBvdmVyLXN1YnNjcmliZWQgb3IgaW5jb21wbGV0ZSBzZXQgb2YgbGVuZ3RocyAqLworICAgIGxlZnQgPSAxOworICAgIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7CisgICAgICAgIGxlZnQgPDw9IDE7CisgICAgICAgIGxlZnQgLT0gY291bnRbbGVuXTsKKyAgICAgICAgaWYgKGxlZnQgPCAwKSByZXR1cm4gLTE7ICAgICAgICAvKiBvdmVyLXN1YnNjcmliZWQgKi8KKyAgICB9CisgICAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09IENPREVTIHx8IG1heCAhPSAxKSkKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlIHNldCAqLwogCisgICAgLyogZ2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHN5bWJvbCB0YWJsZSBmb3IgZWFjaCBsZW5ndGggZm9yIHNvcnRpbmcgKi8KKyAgICBvZmZzWzFdID0gMDsKKyAgICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKQorICAgICAgICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgY291bnRbbGVuXTsKIAotICAvKiBHZW5lcmF0ZSBzdGFydGluZyBvZmZzZXRzIGludG8gdGhlIHZhbHVlIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqLwotICB4WzFdID0gaiA9IDA7Ci0gIHAgPSBjICsgMTsgIHhwID0geCArIDI7Ci0gIHdoaWxlICgtLWkpIHsgICAgICAgICAgICAgICAgIC8qIG5vdGUgdGhhdCBpID09IGcgZnJvbSBhYm92ZSAqLwotICAgICp4cCsrID0gKGogKz0gKnArKyk7Ci0gIH0KKyAgICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovCisgICAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspCisgICAgICAgIGlmIChsZW5zW3N5bV0gIT0gMCkgd29ya1tvZmZzW2xlbnNbc3ltXV0rK10gPSAodW5zaWduZWQgc2hvcnQpc3ltOwogCisgICAgLyoKKyAgICAgICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmcKKyAgICAgICBmaWxsZWQgaXMgYXQgbmV4dCBhbmQgaGFzIGN1cnIgaW5kZXggYml0cy4gIFRoZSBjb2RlIGJlaW5nIHVzZWQgaXMgaHVmZgorICAgICAgIHdpdGggbGVuZ3RoIGxlbi4gIFRoYXQgY29kZSBpcyBjb252ZXJ0ZWQgdG8gYW4gaW5kZXggYnkgZHJvcHBpbmcgZHJvcAorICAgICAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VyciwKKyAgICAgICB0aG9zZSB0b3AgZHJvcCArIGN1cnIgLSBsZW4gYml0cyBhcmUgaW5jcmVtZW50ZWQgdGhyb3VnaCBhbGwgdmFsdWVzIHRvCisgICAgICAgZmlsbCB0aGUgdGFibGUgd2l0aCByZXBsaWNhdGVkIGVudHJpZXMuCiAKLSAgLyogTWFrZSBhIHRhYmxlIG9mIHZhbHVlcyBpbiBvcmRlciBvZiBiaXQgbGVuZ3RocyAqLwotICBwID0gYjsgIGkgPSAwOwotICBkbyB7Ci0gICAgaWYgKChqID0gKnArKykgIT0gMCkKLSAgICAgIHZbeFtqXSsrXSA9IGk7Ci0gIH0gd2hpbGUgKCsraSA8IG4pOwotICBuID0geFtnXTsgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgbiB0byBsZW5ndGggb2YgdiAqLworICAgICAgIHJvb3QgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciB0aGUgcm9vdCB0YWJsZS4gIFdoZW4gbGVuIGV4Y2VlZHMKKyAgICAgICByb290LCBzdWItdGFibGVzIGFyZSBjcmVhdGVkIHBvaW50ZWQgdG8gYnkgdGhlIHJvb3QgZW50cnkgd2l0aCBhbiBpbmRleAorICAgICAgIG9mIHRoZSBsb3cgcm9vdCBiaXRzIG9mIGh1ZmYuICBUaGlzIGlzIHNhdmVkIGluIGxvdyB0byBjaGVjayBmb3Igd2hlbiBhCisgICAgICAgbmV3IHN1Yi10YWJsZSBzaG91bGQgYmUgc3RhcnRlZC4gIGRyb3AgaXMgemVybyB3aGVuIHRoZSByb290IHRhYmxlIGlzCisgICAgICAgYmVpbmcgZmlsbGVkLCBhbmQgZHJvcCBpcyByb290IHdoZW4gc3ViLXRhYmxlcyBhcmUgYmVpbmcgZmlsbGVkLgogCisgICAgICAgV2hlbiBhIG5ldyBzdWItdGFibGUgaXMgbmVlZGVkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9vayBhaGVhZCBpbiB0aGUKKyAgICAgICBjb2RlIGxlbmd0aHMgdG8gZGV0ZXJtaW5lIHdoYXQgc2l6ZSBzdWItdGFibGUgaXMgbmVlZGVkLiAgVGhlIGxlbmd0aAorICAgICAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlCisgICAgICAgZW50ZXJlZCBpbiB0aGUgdGFibGVzLgogCi0gIC8qIEdlbmVyYXRlIHRoZSBIdWZmbWFuIGNvZGVzIGFuZCBmb3IgZWFjaCwgbWFrZSB0aGUgdGFibGUgZW50cmllcyAqLwotICB4WzBdID0gaSA9IDA7ICAgICAgICAgICAgICAgICAvKiBmaXJzdCBIdWZmbWFuIGNvZGUgaXMgemVybyAqLwotICBwID0gdjsgICAgICAgICAgICAgICAgICAgICAgICAvKiBncmFiIHZhbHVlcyBpbiBiaXQgb3JkZXIgKi8KLSAgaCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gdGFibGVzIHlldC0tbGV2ZWwgLTEgKi8KLSAgdyA9IC1sOyAgICAgICAgICAgICAgICAgICAgICAgLyogYml0cyBkZWNvZGVkID09IChsICogaCkgKi8KLSAgdVswXSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgLyoganVzdCB0byBrZWVwIGNvbXBpbGVycyBoYXBweSAqLwotICBxID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAvKiBkaXR0byAqLwotICB6ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXR0byAqLworICAgICAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlCisgICAgICAgcHJvdmlkZWQgKnRhYmxlIHNwYWNlLiAgSXQgaXMgY2hlY2tlZCB3aGVuIGEgTEVOUyB0YWJsZSBpcyBiZWluZyBtYWRlCisgICAgICAgYWdhaW5zdCB0aGUgc3BhY2UgaW4gKnRhYmxlLCBFTk9VR0gsIG1pbnVzIHRoZSBtYXhpbXVtIHNwYWNlIG5lZWRlZCBieQorICAgICAgIHRoZSB3b3JzdCBjYXNlIGRpc3RhbmNlIGNvZGUsIE1BWEQuICBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCB0aGUKKyAgICAgICBzdWZmaWNpZW5jeSBvZiBFTk9VR0ggaGFzIG5vdCBiZWVuIHByb3ZlbiBleGhhdXN0aXZlbHksIGhlbmNlIHRoZSBjaGVjay4KKyAgICAgICBUaGlzIGFzc3VtZXMgdGhhdCB3aGVuIHR5cGUgPT0gTEVOUywgYml0cyA9PSA5LgogCi0gIC8qIGdvIHRocm91Z2ggdGhlIGJpdCBsZW5ndGhzIChrIGFscmVhZHkgaXMgYml0cyBpbiBzaG9ydGVzdCBjb2RlKSAqLwotICBmb3IgKDsgayA8PSBnOyBrKyspCi0gIHsKLSAgICBhID0gY1trXTsKLSAgICB3aGlsZSAoYS0tKQotICAgIHsKLSAgICAgIC8qIGhlcmUgaSBpcyB0aGUgSHVmZm1hbiBjb2RlIG9mIGxlbmd0aCBrIGJpdHMgZm9yIHZhbHVlICpwICovCi0gICAgICAvKiBtYWtlIHRhYmxlcyB1cCB0byByZXF1aXJlZCBsZXZlbCAqLwotICAgICAgd2hpbGUgKGsgPiB3ICsgbCkKLSAgICAgIHsKLSAgICAgICAgaCsrOwotICAgICAgICB3ICs9IGw7ICAgICAgICAgICAgICAgICAvKiBwcmV2aW91cyB0YWJsZSBhbHdheXMgbCBiaXRzICovCisgICAgICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlbgorICAgICAgIGFsbCBjb2RlcyBvZiBsZW5ndGggbWF4LCBpLmUuIGFsbCBjb2RlcywgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gIFRoaXMKKyAgICAgICByb3V0aW5lIHBlcm1pdHMgaW5jb21wbGV0ZSBjb2Rlcywgc28gYW5vdGhlciBsb29wIGFmdGVyIHRoaXMgb25lIGZpbGxzCisgICAgICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLgorICAgICAqLwogCi0gICAgICAgIC8qIGNvbXB1dGUgbWluaW11bSBzaXplIHRhYmxlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBsIGJpdHMgKi8KLSAgICAgICAgeiA9IGcgLSB3OwotICAgICAgICB6ID0geiA+ICh1SW50KWwgPyBsIDogejsgICAgICAgIC8qIHRhYmxlIHNpemUgdXBwZXIgbGltaXQgKi8KLSAgICAgICAgaWYgKChmID0gMSA8PCAoaiA9IGsgLSB3KSkgPiBhICsgMSkgICAgIC8qIHRyeSBhIGstdyBiaXQgdGFibGUgKi8KLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgLyogdG9vIGZldyBjb2RlcyBmb3Igay13IGJpdCB0YWJsZSAqLwotICAgICAgICAgIGYgLT0gYSArIDE7ICAgICAgICAgICAvKiBkZWR1Y3QgY29kZXMgZnJvbSBwYXR0ZXJucyBsZWZ0ICovCi0gICAgICAgICAgeHAgPSBjICsgazsKLSAgICAgICAgICBpZiAoaiA8IHopCi0gICAgICAgICAgICB3aGlsZSAoKytqIDwgeikgICAgIC8qIHRyeSBzbWFsbGVyIHRhYmxlcyB1cCB0byB6IGJpdHMgKi8KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKChmIDw8PSAxKSA8PSAqKyt4cCkKLSAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgLyogZW5vdWdoIGNvZGVzIHRvIHVzZSB1cCBqIGJpdHMgKi8KLSAgICAgICAgICAgICAgZiAtPSAqeHA7ICAgICAgICAgLyogZWxzZSBkZWR1Y3QgY29kZXMgZnJvbSBwYXR0ZXJucyAqLwotICAgICAgICAgICAgfQorICAgIC8qIHNldCB1cCBmb3IgY29kZSB0eXBlICovCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDT0RFUzoKKyAgICAgICAgYmFzZSA9IGV4dHJhID0gd29yazsgICAgLyogZHVtbXkgdmFsdWUtLW5vdCB1c2VkICovCisgICAgICAgIGVuZCA9IDE5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExFTlM6CisgICAgICAgIGJhc2UgPSBsYmFzZTsKKyAgICAgICAgYmFzZSAtPSAyNTc7CisgICAgICAgIGV4dHJhID0gbGV4dDsKKyAgICAgICAgZXh0cmEgLT0gMjU3OworICAgICAgICBlbmQgPSAyNTY7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgLyogRElTVFMgKi8KKyAgICAgICAgYmFzZSA9IGRiYXNlOworICAgICAgICBleHRyYSA9IGRleHQ7CisgICAgICAgIGVuZCA9IC0xOworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgc3RhdGUgZm9yIGxvb3AgKi8KKyAgICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqLworICAgIHN5bSA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIHN5bWJvbCAqLworICAgIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqLworICAgIG5leHQgPSAqdGFibGU7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi8KKyAgICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovCisgICAgZHJvcCA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgYml0cyB0byBkcm9wIGZyb20gY29kZSBmb3IgaW5kZXggKi8KKyAgICBsb3cgPSAodW5zaWduZWQpKC0xKTsgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqLworICAgIHVzZWQgPSAxVSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovCisgICAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi8KKworICAgIC8qIGNoZWNrIGF2YWlsYWJsZSB0YWJsZSBzcGFjZSAqLworICAgIGlmICh0eXBlID09IExFTlMgJiYgdXNlZCA+PSBFTk9VR0ggLSBNQVhEKQorICAgICAgICByZXR1cm4gMTsKKworICAgIC8qIHByb2Nlc3MgYWxsIGNvZGVzIGFuZCBtYWtlIHRhYmxlIGVudHJpZXMgKi8KKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqLworICAgICAgICB0aGlzLmJpdHMgPSAodW5zaWduZWQgY2hhcikobGVuIC0gZHJvcCk7CisgICAgICAgIGlmICgoaW50KSh3b3JrW3N5bV0pIDwgZW5kKSB7CisgICAgICAgICAgICB0aGlzLm9wID0gKHVuc2lnbmVkIGNoYXIpMDsKKyAgICAgICAgICAgIHRoaXMudmFsID0gd29ya1tzeW1dOwogICAgICAgICB9Ci0gICAgICAgIHogPSAxIDw8IGo7ICAgICAgICAgICAgIC8qIHRhYmxlIGVudHJpZXMgZm9yIGotYml0IHRhYmxlICovCisgICAgICAgIGVsc2UgaWYgKChpbnQpKHdvcmtbc3ltXSkgPiBlbmQpIHsKKyAgICAgICAgICAgIHRoaXMub3AgPSAodW5zaWduZWQgY2hhcikoZXh0cmFbd29ya1tzeW1dXSk7CisgICAgICAgICAgICB0aGlzLnZhbCA9IGJhc2Vbd29ya1tzeW1dXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMub3AgPSAodW5zaWduZWQgY2hhcikoMzIgKyA2NCk7ICAgICAgICAgLyogZW5kIG9mIGJsb2NrICovCisgICAgICAgICAgICB0aGlzLnZhbCA9IDA7CisgICAgICAgIH0KIAotICAgICAgICAvKiBhbGxvY2F0ZSBuZXcgdGFibGUgKi8KLSAgICAgICAgaWYgKCpobiArIHogPiBNQU5ZKSAgICAgLyogKG5vdGU6IGRvZXNuJ3QgbWF0dGVyIGZvciBmaXhlZCkgKi8KLSAgICAgICAgICByZXR1cm4gWl9EQVRBX0VSUk9SOyAgLyogb3ZlcmZsb3cgb2YgTUFOWSAqLwotICAgICAgICB1W2hdID0gcSA9IGhwICsgKmhuOwotICAgICAgICAqaG4gKz0gejsKKyAgICAgICAgLyogcmVwbGljYXRlIGZvciB0aG9zZSBpbmRpY2VzIHdpdGggbG93IGxlbiBiaXRzIGVxdWFsIHRvIGh1ZmYgKi8KKyAgICAgICAgaW5jciA9IDFVIDw8IChsZW4gLSBkcm9wKTsKKyAgICAgICAgZmlsbCA9IDFVIDw8IGN1cnI7CisgICAgICAgIG1pbiA9IGZpbGw7ICAgICAgICAgICAgICAgICAvKiBzYXZlIG9mZnNldCB0byBuZXh0IHRhYmxlICovCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGZpbGwgLT0gaW5jcjsKKyAgICAgICAgICAgIG5leHRbKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IHRoaXM7CisgICAgICAgIH0gd2hpbGUgKGZpbGwgIT0gMCk7CiAKLSAgICAgICAgLyogY29ubmVjdCB0byBsYXN0IHRhYmxlLCBpZiB0aGVyZSBpcyBvbmUgKi8KLSAgICAgICAgaWYgKGgpCi0gICAgICAgIHsKLSAgICAgICAgICB4W2hdID0gaTsgICAgICAgICAgICAgLyogc2F2ZSBwYXR0ZXJuIGZvciBiYWNraW5nIHVwICovCi0gICAgICAgICAgci5iaXRzID0gKEJ5dGUpbDsgICAgIC8qIGJpdHMgdG8gZHVtcCBiZWZvcmUgdGhpcyB0YWJsZSAqLwotICAgICAgICAgIHIuZXhvcCA9IChCeXRlKWo7ICAgICAvKiBiaXRzIGluIHRoaXMgdGFibGUgKi8KLSAgICAgICAgICBqID0gaSA+PiAodyAtIGwpOwotICAgICAgICAgIHIuYmFzZSA9ICh1SW50KShxIC0gdVtoLTFdIC0gaik7ICAgLyogb2Zmc2V0IHRvIHRoaXMgdGFibGUgKi8KLSAgICAgICAgICB1W2gtMV1bal0gPSByOyAgICAgICAgLyogY29ubmVjdCB0byBsYXN0IHRhYmxlICovCisgICAgICAgIC8qIGJhY2t3YXJkcyBpbmNyZW1lbnQgdGhlIGxlbi1iaXQgY29kZSBodWZmICovCisgICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gMSk7CisgICAgICAgIHdoaWxlIChodWZmICYgaW5jcikKKyAgICAgICAgICAgIGluY3IgPj49IDE7CisgICAgICAgIGlmIChpbmNyICE9IDApIHsKKyAgICAgICAgICAgIGh1ZmYgJj0gaW5jciAtIDE7CisgICAgICAgICAgICBodWZmICs9IGluY3I7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICp0ID0gcTsgICAgICAgICAgICAgICAvKiBmaXJzdCB0YWJsZSBpcyByZXR1cm5lZCByZXN1bHQgKi8KLSAgICAgIH0KKyAgICAgICAgICAgIGh1ZmYgPSAwOwogCi0gICAgICAvKiBzZXQgdXAgdGFibGUgZW50cnkgaW4gciAqLwotICAgICAgci5iaXRzID0gKEJ5dGUpKGsgLSB3KTsKLSAgICAgIGlmIChwID49IHYgKyBuKQotICAgICAgICByLmV4b3AgPSAxMjggKyA2NDsgICAgICAvKiBvdXQgb2YgdmFsdWVzLS1pbnZhbGlkIGNvZGUgKi8KLSAgICAgIGVsc2UgaWYgKCpwIDwgcykKLSAgICAgIHsKLSAgICAgICAgci5leG9wID0gKEJ5dGUpKCpwIDwgMjU2ID8gMCA6IDMyICsgNjQpOyAgICAgLyogMjU2IGlzIGVuZC1vZi1ibG9jayAqLwotICAgICAgICByLmJhc2UgPSAqcCsrOyAgICAgICAgICAvKiBzaW1wbGUgY29kZSBpcyBqdXN0IHRoZSB2YWx1ZSAqLwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICByLmV4b3AgPSAoQnl0ZSkoZVsqcCAtIHNdICsgMTYgKyA2NCk7Lyogbm9uLXNpbXBsZS0tbG9vayB1cCBpbiBsaXN0cyAqLwotICAgICAgICByLmJhc2UgPSBkWypwKysgLSBzXTsKLSAgICAgIH0KKyAgICAgICAgLyogZ28gdG8gbmV4dCBzeW1ib2wsIHVwZGF0ZSBjb3VudCwgbGVuICovCisgICAgICAgIHN5bSsrOworICAgICAgICBpZiAoLS0oY291bnRbbGVuXSkgPT0gMCkgeworICAgICAgICAgICAgaWYgKGxlbiA9PSBtYXgpIGJyZWFrOworICAgICAgICAgICAgbGVuID0gbGVuc1t3b3JrW3N5bV1dOworICAgICAgICB9CiAKLSAgICAgIC8qIGZpbGwgY29kZS1saWtlIGVudHJpZXMgd2l0aCByICovCi0gICAgICBmID0gMSA8PCAoayAtIHcpOwotICAgICAgZm9yIChqID0gaSA+PiB3OyBqIDwgejsgaiArPSBmKQotICAgICAgICBxW2pdID0gcjsKKyAgICAgICAgLyogY3JlYXRlIG5ldyBzdWItdGFibGUgaWYgbmVlZGVkICovCisgICAgICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT0gbG93KSB7CisgICAgICAgICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi8KKyAgICAgICAgICAgIGlmIChkcm9wID09IDApCisgICAgICAgICAgICAgICAgZHJvcCA9IHJvb3Q7CiAKLSAgICAgIC8qIGJhY2t3YXJkcyBpbmNyZW1lbnQgdGhlIGstYml0IGNvZGUgaSAqLwotICAgICAgZm9yIChqID0gMSA8PCAoayAtIDEpOyBpICYgajsgaiA+Pj0gMSkKLSAgICAgICAgaSBePSBqOwotICAgICAgaSBePSBqOworICAgICAgICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqLworICAgICAgICAgICAgbmV4dCArPSBtaW47ICAgICAgICAgICAgLyogaGVyZSBtaW4gaXMgMSA8PCBjdXJyICovCiAKLSAgICAgIC8qIGJhY2t1cCBvdmVyIGZpbmlzaGVkIHRhYmxlcyAqLwotICAgICAgbWFzayA9ICgxIDw8IHcpIC0gMTsgICAgICAvKiBuZWVkZWQgb24gSFAsIGNjIC1PIGJ1ZyAqLwotICAgICAgd2hpbGUgKChpICYgbWFzaykgIT0geFtoXSkKLSAgICAgIHsKLSAgICAgICAgaC0tOyAgICAgICAgICAgICAgICAgICAgLyogZG9uJ3QgbmVlZCB0byB1cGRhdGUgcSAqLwotICAgICAgICB3IC09IGw7Ci0gICAgICAgIG1hc2sgPSAoMSA8PCB3KSAtIDE7Ci0gICAgICB9CisgICAgICAgICAgICAvKiBkZXRlcm1pbmUgbGVuZ3RoIG9mIG5leHQgdGFibGUgKi8KKyAgICAgICAgICAgIGN1cnIgPSBsZW4gLSBkcm9wOworICAgICAgICAgICAgbGVmdCA9IChpbnQpKDEgPDwgY3Vycik7CisgICAgICAgICAgICB3aGlsZSAoY3VyciArIGRyb3AgPCBtYXgpIHsKKyAgICAgICAgICAgICAgICBsZWZ0IC09IGNvdW50W2N1cnIgKyBkcm9wXTsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA8PSAwKSBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJyKys7CisgICAgICAgICAgICAgICAgbGVmdCA8PD0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqLworICAgICAgICAgICAgdXNlZCArPSAxVSA8PCBjdXJyOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gTEVOUyAmJiB1c2VkID49IEVOT1VHSCAtIE1BWEQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgICAgICAgIC8qIHBvaW50IGVudHJ5IGluIHJvb3QgdGFibGUgdG8gc3ViLXRhYmxlICovCisgICAgICAgICAgICBsb3cgPSBodWZmICYgbWFzazsKKyAgICAgICAgICAgICgqdGFibGUpW2xvd10ub3AgPSAodW5zaWduZWQgY2hhciljdXJyOworICAgICAgICAgICAgKCp0YWJsZSlbbG93XS5iaXRzID0gKHVuc2lnbmVkIGNoYXIpcm9vdDsKKyAgICAgICAgICAgICgqdGFibGUpW2xvd10udmFsID0gKHVuc2lnbmVkIHNob3J0KShuZXh0IC0gKnRhYmxlKTsKKyAgICAgICAgfQogICAgIH0KLSAgfQogCisgICAgLyoKKyAgICAgICBGaWxsIGluIHJlc3Qgb2YgdGFibGUgZm9yIGluY29tcGxldGUgY29kZXMuICBUaGlzIGxvb3AgaXMgc2ltaWxhciB0byB0aGUKKyAgICAgICBsb29wIGFib3ZlIGluIGluY3JlbWVudGluZyBodWZmIGZvciB0YWJsZSBpbmRpY2VzLiAgSXQgaXMgYXNzdW1lZCB0aGF0CisgICAgICAgbGVuIGlzIGVxdWFsIHRvIGN1cnIgKyBkcm9wLCBzbyB0aGVyZSBpcyBubyBsb29wIG5lZWRlZCB0byBpbmNyZW1lbnQKKyAgICAgICB0aHJvdWdoIGhpZ2ggaW5kZXggYml0cy4gIFdoZW4gdGhlIGN1cnJlbnQgc3ViLXRhYmxlIGlzIGZpbGxlZCwgdGhlIGxvb3AKKyAgICAgICBkcm9wcyBiYWNrIHRvIHRoZSByb290IHRhYmxlIHRvIGZpbGwgaW4gYW55IHJlbWFpbmluZyBlbnRyaWVzIHRoZXJlLgorICAgICAqLworICAgIHRoaXMub3AgPSAodW5zaWduZWQgY2hhcik2NDsgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqLworICAgIHRoaXMuYml0cyA9ICh1bnNpZ25lZCBjaGFyKShsZW4gLSBkcm9wKTsKKyAgICB0aGlzLnZhbCA9ICh1bnNpZ25lZCBzaG9ydCkwOworICAgIHdoaWxlIChodWZmICE9IDApIHsKKyAgICAgICAgLyogd2hlbiBkb25lIHdpdGggc3ViLXRhYmxlLCBkcm9wIGJhY2sgdG8gcm9vdCB0YWJsZSAqLworICAgICAgICBpZiAoZHJvcCAhPSAwICYmIChodWZmICYgbWFzaykgIT0gbG93KSB7CisgICAgICAgICAgICBkcm9wID0gMDsKKyAgICAgICAgICAgIGxlbiA9IHJvb3Q7CisgICAgICAgICAgICBuZXh0ID0gKnRhYmxlOworICAgICAgICAgICAgdGhpcy5iaXRzID0gKHVuc2lnbmVkIGNoYXIpbGVuOworICAgICAgICB9CiAKLSAgLyogUmV0dXJuIFpfQlVGX0VSUk9SIGlmIHdlIHdlcmUgZ2l2ZW4gYW4gaW5jb21wbGV0ZSB0YWJsZSAqLwotICByZXR1cm4geSAhPSAwICYmIGcgIT0gMSA/IFpfQlVGX0VSUk9SIDogWl9PSzsKLX0KKyAgICAgICAgLyogcHV0IGludmFsaWQgY29kZSBtYXJrZXIgaW4gdGFibGUgKi8KKyAgICAgICAgbmV4dFtodWZmID4+IGRyb3BdID0gdGhpczsKIAotCi1pbnQgemxpYl9pbmZsYXRlX3RyZWVzX2JpdHMoCi0JdUludCAqYywgICAgICAgICAgICAgICAgLyogMTkgY29kZSBsZW5ndGhzICovCi0JdUludCAqYmIsICAgICAgICAgICAgICAgLyogYml0cyB0cmVlIGRlc2lyZWQvYWN0dWFsIGRlcHRoICovCi0JaW5mbGF0ZV9odWZ0ICoqdGIsICAgICAgLyogYml0cyB0cmVlIHJlc3VsdCAqLwotCWluZmxhdGVfaHVmdCAqaHAsICAgICAgIC8qIHNwYWNlIGZvciB0cmVlcyAqLwotCXpfc3RyZWFtcCB6ICAgICAgICAgICAgIC8qIGZvciBtZXNzYWdlcyAqLwotKQotewotICBpbnQgcjsKLSAgdUludCBobiA9IDA7ICAgICAgICAgIC8qIGh1ZnRzIHVzZWQgaW4gc3BhY2UgKi8KLSAgdUludCAqdjsgICAgICAgICAgICAgIC8qIHdvcmsgYXJlYSBmb3IgaHVmdF9idWlsZCAqLwotICAKLSAgdiA9IFdTKHopLT50cmVlX3dvcmtfYXJlYV8xOwotICByID0gaHVmdF9idWlsZChjLCAxOSwgMTksIE5VTEwsIE5VTEwsIHRiLCBiYiwgaHAsICZobiwgdik7Ci0gIGlmIChyID09IFpfREFUQV9FUlJPUikKLSAgICB6LT5tc2cgPSAoY2hhciopIm92ZXJzdWJzY3JpYmVkIGR5bmFtaWMgYml0IGxlbmd0aHMgdHJlZSI7Ci0gIGVsc2UgaWYgKHIgPT0gWl9CVUZfRVJST1IgfHwgKmJiID09IDApCi0gIHsKLSAgICB6LT5tc2cgPSAoY2hhciopImluY29tcGxldGUgZHluYW1pYyBiaXQgbGVuZ3RocyB0cmVlIjsKLSAgICByID0gWl9EQVRBX0VSUk9SOwotICB9Ci0gIHJldHVybiByOwotfQotCi1pbnQgemxpYl9pbmZsYXRlX3RyZWVzX2R5bmFtaWMoCi0JdUludCBubCwgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGxpdGVyYWwvbGVuZ3RoIGNvZGVzICovCi0JdUludCBuZCwgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGVzICovCi0JdUludCAqYywgICAgICAgICAgICAgICAgLyogdGhhdCBtYW55ICh0b3RhbCkgY29kZSBsZW5ndGhzICovCi0JdUludCAqYmwsICAgICAgICAgICAgICAgLyogbGl0ZXJhbCBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLQl1SW50ICpiZCwgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLQlpbmZsYXRlX2h1ZnQgKip0bCwgICAgICAvKiBsaXRlcmFsL2xlbmd0aCB0cmVlIHJlc3VsdCAqLwotCWluZmxhdGVfaHVmdCAqKnRkLCAgICAgIC8qIGRpc3RhbmNlIHRyZWUgcmVzdWx0ICovCi0JaW5mbGF0ZV9odWZ0ICpocCwgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi0Jel9zdHJlYW1wIHogICAgICAgICAgICAgLyogZm9yIG1lc3NhZ2VzICovCi0pCi17Ci0gIGludCByOwotICB1SW50IGhuID0gMDsgICAgICAgICAgLyogaHVmdHMgdXNlZCBpbiBzcGFjZSAqLwotICB1SW50ICp2OyAgICAgICAgICAgICAgLyogd29yayBhcmVhIGZvciBodWZ0X2J1aWxkICovCi0KLSAgLyogYWxsb2NhdGUgd29yayBhcmVhICovCi0gIHYgPSBXUyh6KS0+dHJlZV93b3JrX2FyZWFfMjsKLQotICAvKiBidWlsZCBsaXRlcmFsL2xlbmd0aCB0cmVlICovCi0gIHIgPSBodWZ0X2J1aWxkKGMsIG5sLCAyNTcsIGNwbGVucywgY3BsZXh0LCB0bCwgYmwsIGhwLCAmaG4sIHYpOwotICBpZiAociAhPSBaX09LIHx8ICpibCA9PSAwKQotICB7Ci0gICAgaWYgKHIgPT0gWl9EQVRBX0VSUk9SKQotICAgICAgei0+bXNnID0gKGNoYXIqKSJvdmVyc3Vic2NyaWJlZCBsaXRlcmFsL2xlbmd0aCB0cmVlIjsKLSAgICBlbHNlIGlmIChyICE9IFpfTUVNX0VSUk9SKQotICAgIHsKLSAgICAgIHotPm1zZyA9IChjaGFyKikiaW5jb21wbGV0ZSBsaXRlcmFsL2xlbmd0aCB0cmVlIjsKLSAgICAgIHIgPSBaX0RBVEFfRVJST1I7CisgICAgICAgIC8qIGJhY2t3YXJkcyBpbmNyZW1lbnQgdGhlIGxlbi1iaXQgY29kZSBodWZmICovCisgICAgICAgIGluY3IgPSAxVSA8PCAobGVuIC0gMSk7CisgICAgICAgIHdoaWxlIChodWZmICYgaW5jcikKKyAgICAgICAgICAgIGluY3IgPj49IDE7CisgICAgICAgIGlmIChpbmNyICE9IDApIHsKKyAgICAgICAgICAgIGh1ZmYgJj0gaW5jciAtIDE7CisgICAgICAgICAgICBodWZmICs9IGluY3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaHVmZiA9IDA7CiAgICAgfQotICAgIHJldHVybiByOwotICB9CiAKLSAgLyogYnVpbGQgZGlzdGFuY2UgdHJlZSAqLwotICByID0gaHVmdF9idWlsZChjICsgbmwsIG5kLCAwLCBjcGRpc3QsIGNwZGV4dCwgdGQsIGJkLCBocCwgJmhuLCB2KTsKLSAgaWYgKHIgIT0gWl9PSyB8fCAoKmJkID09IDAgJiYgbmwgPiAyNTcpKQotICB7Ci0gICAgaWYgKHIgPT0gWl9EQVRBX0VSUk9SKQotICAgICAgei0+bXNnID0gKGNoYXIqKSJvdmVyc3Vic2NyaWJlZCBkaXN0YW5jZSB0cmVlIjsKLSAgICBlbHNlIGlmIChyID09IFpfQlVGX0VSUk9SKSB7Ci0jaWZkZWYgUEtaSVBfQlVHX1dPUktBUk9VTkQKLSAgICAgIHIgPSBaX09LOwotICAgIH0KLSNlbHNlCi0gICAgICB6LT5tc2cgPSAoY2hhciopImluY29tcGxldGUgZGlzdGFuY2UgdHJlZSI7Ci0gICAgICByID0gWl9EQVRBX0VSUk9SOwotICAgIH0KLSAgICBlbHNlIGlmIChyICE9IFpfTUVNX0VSUk9SKQotICAgIHsKLSAgICAgIHotPm1zZyA9IChjaGFyKikiZW1wdHkgZGlzdGFuY2UgdHJlZSB3aXRoIGxlbmd0aHMiOwotICAgICAgciA9IFpfREFUQV9FUlJPUjsKLSAgICB9Ci0gICAgcmV0dXJuIHI7Ci0jZW5kaWYKLSAgfQotCi0gIC8qIGRvbmUgKi8KLSAgcmV0dXJuIFpfT0s7Ci19Ci0KLQotaW50IHpsaWJfaW5mbGF0ZV90cmVlc19maXhlZCgKLQl1SW50ICpibCwgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLQl1SW50ICpiZCwgICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi0JaW5mbGF0ZV9odWZ0ICoqdGwsICAgICAgIC8qIGxpdGVyYWwvbGVuZ3RoIHRyZWUgcmVzdWx0ICovCi0JaW5mbGF0ZV9odWZ0ICoqdGQsICAgICAgIC8qIGRpc3RhbmNlIHRyZWUgcmVzdWx0ICovCi0JaW5mbGF0ZV9odWZ0ICpocCwgICAgICAgLyogc3BhY2UgZm9yIHRyZWVzICovCi0Jel9zdHJlYW1wIHogICAgICAgICAgICAgIC8qIGZvciBtZW1vcnkgYWxsb2NhdGlvbiAqLwotKQotewotICBpbnQgaTsgICAgICAgICAgICAgICAgLyogdGVtcG9yYXJ5IHZhcmlhYmxlICovCi0gIHVuc2lnbmVkIGxbMjg4XTsgICAgICAvKiBsZW5ndGggbGlzdCBmb3IgaHVmdF9idWlsZCAqLwotICB1SW50ICp2OyAgICAgICAgICAgICAgLyogd29yayBhcmVhIGZvciBodWZ0X2J1aWxkICovCi0KLSAgLyogc2V0IHVwIGxpdGVyYWwgdGFibGUgKi8KLSAgZm9yIChpID0gMDsgaSA8IDE0NDsgaSsrKQotICAgIGxbaV0gPSA4OwotICBmb3IgKDsgaSA8IDI1NjsgaSsrKQotICAgIGxbaV0gPSA5OwotICBmb3IgKDsgaSA8IDI4MDsgaSsrKQotICAgIGxbaV0gPSA3OwotICBmb3IgKDsgaSA8IDI4ODsgaSsrKSAgICAgICAgICAvKiBtYWtlIGEgY29tcGxldGUsIGJ1dCB3cm9uZyBjb2RlIHNldCAqLwotICAgIGxbaV0gPSA4OwotICAqYmwgPSA5OwotICB2ID0gV1MoeiktPnRyZWVfd29ya19hcmVhXzE7Ci0gIGlmICgoaSA9IGh1ZnRfYnVpbGQobCwgMjg4LCAyNTcsIGNwbGVucywgY3BsZXh0LCB0bCwgYmwsIGhwLCAgJmksIHYpKSAhPSAwKQotICAgIHJldHVybiBpOwotCi0gIC8qIHNldCB1cCBkaXN0YW5jZSB0YWJsZSAqLwotICBmb3IgKGkgPSAwOyBpIDwgMzA7IGkrKykgICAgICAvKiBtYWtlIGFuIGluY29tcGxldGUgY29kZSBzZXQgKi8KLSAgICBsW2ldID0gNTsKLSAgKmJkID0gNTsKLSAgaWYgKChpID0gaHVmdF9idWlsZChsLCAzMCwgMCwgY3BkaXN0LCBjcGRleHQsIHRkLCBiZCwgaHAsICZpLCB2KSkgPiAxKQotICAgIHJldHVybiBpOwotCi0gIHJldHVybiBaX09LOworICAgIC8qIHNldCByZXR1cm4gcGFyYW1ldGVycyAqLworICAgICp0YWJsZSArPSB1c2VkOworICAgICpiaXRzID0gcm9vdDsKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi96bGliX2luZmxhdGUvaW5mdHJlZXMuaCBiL2xpYi96bGliX2luZmxhdGUvaW5mdHJlZXMuaAppbmRleCBlMzc3MDVhLi41ZjUyMTliIDEwMDY0NAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZnRyZWVzLmgKKysrIGIvbGliL3psaWJfaW5mbGF0ZS9pbmZ0cmVlcy5oCkBAIC0xLDYgKzEsNiBAQAogLyogaW5mdHJlZXMuaCAtLSBoZWFkZXIgdG8gdXNlIGluZnRyZWVzLmMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmggCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSBNYXJrIEFkbGVyCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIAogLyogV0FSTklORzogdGhpcyBmaWxlIHNob3VsZCAqbm90KiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4gSXQgaXMKQEAgLTgsNTcgKzgsNDggQEAKICAgIHN1YmplY3QgdG8gY2hhbmdlLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG9ubHkgdXNlIHpsaWIuaC4KICAqLwogCi0vKiBIdWZmbWFuIGNvZGUgbG9va3VwIHRhYmxlIGVudHJ5LS10aGlzIGVudHJ5IGlzIGZvdXIgYnl0ZXMgZm9yIG1hY2hpbmVzCi0gICB0aGF0IGhhdmUgMTYtYml0IHBvaW50ZXJzIChlLmcuIFBDJ3MgaW4gdGhlIHNtYWxsIG9yIG1lZGl1bSBtb2RlbCkuICovCisvKiBTdHJ1Y3R1cmUgZm9yIGRlY29kaW5nIHRhYmxlcy4gIEVhY2ggZW50cnkgcHJvdmlkZXMgZWl0aGVyIHRoZQorICAgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGRvIHRoZSBvcGVyYXRpb24gcmVxdWVzdGVkIGJ5IHRoZSBjb2RlIHRoYXQKKyAgIGluZGV4ZWQgdGhhdCB0YWJsZSBlbnRyeSwgb3IgaXQgcHJvdmlkZXMgYSBwb2ludGVyIHRvIGFub3RoZXIKKyAgIHRhYmxlIHRoYXQgaW5kZXhlcyBtb3JlIGJpdHMgb2YgdGhlIGNvZGUuICBvcCBpbmRpY2F0ZXMgd2hldGhlcgorICAgdGhlIGVudHJ5IGlzIGEgcG9pbnRlciB0byBhbm90aGVyIHRhYmxlLCBhIGxpdGVyYWwsIGEgbGVuZ3RoIG9yCisgICBkaXN0YW5jZSwgYW4gZW5kLW9mLWJsb2NrLCBvciBhbiBpbnZhbGlkIGNvZGUuICBGb3IgYSB0YWJsZQorICAgcG9pbnRlciwgdGhlIGxvdyBmb3VyIGJpdHMgb2Ygb3AgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIG9mCisgICB0aGF0IHRhYmxlLiAgRm9yIGEgbGVuZ3RoIG9yIGRpc3RhbmNlLCB0aGUgbG93IGZvdXIgYml0cyBvZiBvcAorICAgaXMgdGhlIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIGdldCBhZnRlciB0aGUgY29kZS4gIGJpdHMgaXMKKyAgIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGlzIGNvZGUgb3IgcGFydCBvZiB0aGUgY29kZSB0byBkcm9wIG9mZgorICAgb2YgdGhlIGJpdCBidWZmZXIuICB2YWwgaXMgdGhlIGFjdHVhbCBieXRlIHRvIG91dHB1dCBpbiB0aGUgY2FzZQorICAgb2YgYSBsaXRlcmFsLCB0aGUgYmFzZSBsZW5ndGggb3IgZGlzdGFuY2UsIG9yIHRoZSBvZmZzZXQgZnJvbQorICAgdGhlIGN1cnJlbnQgdGFibGUgdG8gdGhlIG5leHQgdGFibGUuICBFYWNoIGVudHJ5IGlzIGZvdXIgYnl0ZXMuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgY2hhciBvcDsgICAgICAgICAgIC8qIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgdGFibGUgYml0cyAqLworICAgIHVuc2lnbmVkIGNoYXIgYml0czsgICAgICAgICAvKiBiaXRzIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZSAqLworICAgIHVuc2lnbmVkIHNob3J0IHZhbDsgICAgICAgICAvKiBvZmZzZXQgaW4gdGFibGUgb3IgY29kZSB2YWx1ZSAqLworfSBjb2RlOwogCi0jaWZuZGVmIF9JTkZUUkVFU19ICi0jZGVmaW5lIF9JTkZUUkVFU19ICi0KLXR5cGVkZWYgc3RydWN0IGluZmxhdGVfaHVmdF9zIGluZmxhdGVfaHVmdDsKLQotc3RydWN0IGluZmxhdGVfaHVmdF9zIHsKLSAgdW5pb24gewotICAgIHN0cnVjdCB7Ci0gICAgICBCeXRlIEV4b3A7ICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyBvciBvcGVyYXRpb24gKi8KLSAgICAgIEJ5dGUgQml0czsgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIHRoaXMgY29kZSBvciBzdWJjb2RlICovCi0gICAgfSB3aGF0OwotICAgIHVJbnQgcGFkOyAgICAgICAgICAgLyogcGFkIHN0cnVjdHVyZSB0byBhIHBvd2VyIG9mIDIgKDQgYnl0ZXMgZm9yICovCi0gIH0gd29yZDsgICAgICAgICAgICAgICAvKiAgMTYtYml0LCA4IGJ5dGVzIGZvciAzMi1iaXQgaW50J3MpICovCi0gIHVJbnQgYmFzZTsgICAgICAgICAgICAvKiBsaXRlcmFsLCBsZW5ndGggYmFzZSwgZGlzdGFuY2UgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRhYmxlIG9mZnNldCAqLwotfTsKKy8qIG9wIHZhbHVlcyBhcyBzZXQgYnkgaW5mbGF0ZV90YWJsZSgpOgorICAgIDAwMDAwMDAwIC0gbGl0ZXJhbAorICAgIDAwMDB0dHR0IC0gdGFibGUgbGluaywgdHR0dCAhPSAwIGlzIHRoZSBudW1iZXIgb2YgdGFibGUgaW5kZXggYml0cworICAgIDAwMDFlZWVlIC0gbGVuZ3RoIG9yIGRpc3RhbmNlLCBlZWVlIGlzIHRoZSBudW1iZXIgb2YgZXh0cmEgYml0cworICAgIDAxMTAwMDAwIC0gZW5kIG9mIGJsb2NrCisgICAgMDEwMDAwMDAgLSBpbnZhbGlkIGNvZGUKKyAqLwogCiAvKiBNYXhpbXVtIHNpemUgb2YgZHluYW1pYyB0cmVlLiAgVGhlIG1heGltdW0gZm91bmQgaW4gYSBsb25nIGJ1dCBub24tCi0gICBleGhhdXN0aXZlIHNlYXJjaCB3YXMgMTAwNCBodWZ0IHN0cnVjdHVyZXMgKDg1MCBmb3IgbGVuZ3RoL2xpdGVyYWxzCi0gICBhbmQgMTU0IGZvciBkaXN0YW5jZXMsIHRoZSBsYXR0ZXIgYWN0dWFsbHkgdGhlIHJlc3VsdCBvZiBhbgotICAgZXhoYXVzdGl2ZSBzZWFyY2gpLiAgVGhlIGFjdHVhbCBtYXhpbXVtIGlzIG5vdCBrbm93biwgYnV0IHRoZQotICAgdmFsdWUgYmVsb3cgaXMgbW9yZSB0aGFuIHNhZmUuICovCi0jZGVmaW5lIE1BTlkgMTQ0MAorICAgZXhoYXVzdGl2ZSBzZWFyY2ggd2FzIDE0NDQgY29kZSBzdHJ1Y3R1cmVzICg4NTIgZm9yIGxlbmd0aC9saXRlcmFscworICAgYW5kIDU5MiBmb3IgZGlzdGFuY2VzLCB0aGUgbGF0dGVyIGFjdHVhbGx5IHRoZSByZXN1bHQgb2YgYW4KKyAgIGV4aGF1c3RpdmUgc2VhcmNoKS4gIFRoZSB0cnVlIG1heGltdW0gaXMgbm90IGtub3duLCBidXQgdGhlIHZhbHVlCisgICBiZWxvdyBpcyBtb3JlIHRoYW4gc2FmZS4gKi8KKyNkZWZpbmUgRU5PVUdIIDIwNDgKKyNkZWZpbmUgTUFYRCA1OTIKIAotZXh0ZXJuIGludCB6bGliX2luZmxhdGVfdHJlZXNfYml0cyAoCi0gICAgdUludCAqLCAgICAgICAgICAgICAgICAgICAgIC8qIDE5IGNvZGUgbGVuZ3RocyAqLwotICAgIHVJbnQgKiwgICAgICAgICAgICAgICAgICAgICAvKiBiaXRzIHRyZWUgZGVzaXJlZC9hY3R1YWwgZGVwdGggKi8KLSAgICBpbmZsYXRlX2h1ZnQgKiosICAgICAgICAgICAgLyogYml0cyB0cmVlIHJlc3VsdCAqLwotICAgIGluZmxhdGVfaHVmdCAqLCAgICAgICAgICAgICAvKiBzcGFjZSBmb3IgdHJlZXMgKi8KLSAgICB6X3N0cmVhbXApOyAgICAgICAgICAgICAgICAgLyogZm9yIG1lc3NhZ2VzICovCisvKiBUeXBlIG9mIGNvZGUgdG8gYnVpbGQgZm9yIGluZnRhYmxlKCkgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgQ09ERVMsCisgICAgTEVOUywKKyAgICBESVNUUworfSBjb2RldHlwZTsKIAotZXh0ZXJuIGludCB6bGliX2luZmxhdGVfdHJlZXNfZHluYW1pYyAoCi0gICAgdUludCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsaXRlcmFsL2xlbmd0aCBjb2RlcyAqLwotICAgIHVJbnQsICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi8KLSAgICB1SW50ICosICAgICAgICAgICAgICAgICAgICAgLyogdGhhdCBtYW55ICh0b3RhbCkgY29kZSBsZW5ndGhzICovCi0gICAgdUludCAqLCAgICAgICAgICAgICAgICAgICAgIC8qIGxpdGVyYWwgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi0gICAgdUludCAqLCAgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGRlc2lyZWQvYWN0dWFsIGJpdCBkZXB0aCAqLwotICAgIGluZmxhdGVfaHVmdCAqKiwgICAgICAgICAgICAvKiBsaXRlcmFsL2xlbmd0aCB0cmVlIHJlc3VsdCAqLwotICAgIGluZmxhdGVfaHVmdCAqKiwgICAgICAgICAgICAvKiBkaXN0YW5jZSB0cmVlIHJlc3VsdCAqLwotICAgIGluZmxhdGVfaHVmdCAqLCAgICAgICAgICAgICAvKiBzcGFjZSBmb3IgdHJlZXMgKi8KLSAgICB6X3N0cmVhbXApOyAgICAgICAgICAgICAgICAgLyogZm9yIG1lc3NhZ2VzICovCi0KLWV4dGVybiBpbnQgemxpYl9pbmZsYXRlX3RyZWVzX2ZpeGVkICgKLSAgICB1SW50ICosICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCBkZXNpcmVkL2FjdHVhbCBiaXQgZGVwdGggKi8KLSAgICB1SW50ICosICAgICAgICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgZGVzaXJlZC9hY3R1YWwgYml0IGRlcHRoICovCi0gICAgaW5mbGF0ZV9odWZ0ICoqLCAgICAgICAgICAgIC8qIGxpdGVyYWwvbGVuZ3RoIHRyZWUgcmVzdWx0ICovCi0gICAgaW5mbGF0ZV9odWZ0ICoqLCAgICAgICAgICAgIC8qIGRpc3RhbmNlIHRyZWUgcmVzdWx0ICovCi0gICAgaW5mbGF0ZV9odWZ0ICosICAgICAgICAgICAgIC8qIHNwYWNlIGZvciB0cmVlcyAqLwotICAgIHpfc3RyZWFtcCk7ICAgICAgICAgICAgICAgICAvKiBmb3IgbWVtb3J5IGFsbG9jYXRpb24gKi8KLQotI2VuZGlmIC8qIF9JTkZUUkVFU19IICovCitleHRlcm4gaW50IHpsaWJfaW5mbGF0ZV90YWJsZSAoY29kZXR5cGUgdHlwZSwgdW5zaWduZWQgc2hvcnQgKmxlbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVzLCBjb2RlICoqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpiaXRzLCB1bnNpZ25lZCBzaG9ydCAqd29yayk7CmRpZmYgLS1naXQgYS9saWIvemxpYl9pbmZsYXRlL2luZnV0aWwuYyBiL2xpYi96bGliX2luZmxhdGUvaW5mdXRpbC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDIwMmIzLi4wMDAwMDAwCi0tLSBhL2xpYi96bGliX2luZmxhdGUvaW5mdXRpbC5jCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyogaW5mbGF0ZV91dGlsLmMgLS0gZGF0YSBhbmQgcm91dGluZXMgY29tbW9uIHRvIGJsb2NrcyBhbmQgY29kZXMKLSAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk4IE1hcmsgQWRsZXIKLSAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmggCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L3p1dGlsLmg+Ci0jaW5jbHVkZSAiaW5mYmxvY2suaCIKLSNpbmNsdWRlICJpbmZ0cmVlcy5oIgotI2luY2x1ZGUgImluZmNvZGVzLmgiCi0jaW5jbHVkZSAiaW5mdXRpbC5oIgotCi1zdHJ1Y3QgaW5mbGF0ZV9jb2Rlc19zdGF0ZTsKLQotLyogQW5kJ2luZyB3aXRoIG1hc2tbbl0gbWFza3MgdGhlIGxvd2VyIG4gYml0cyAqLwotdUludCB6bGliX2luZmxhdGVfbWFza1sxN10gPSB7Ci0gICAgMHgwMDAwLAotICAgIDB4MDAwMSwgMHgwMDAzLCAweDAwMDcsIDB4MDAwZiwgMHgwMDFmLCAweDAwM2YsIDB4MDA3ZiwgMHgwMGZmLAotICAgIDB4MDFmZiwgMHgwM2ZmLCAweDA3ZmYsIDB4MGZmZiwgMHgxZmZmLCAweDNmZmYsIDB4N2ZmZiwgMHhmZmZmCi19OwotCi0KLS8qIGNvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBzbGlkaW5nIHdpbmRvdyB0byB0aGUgb3V0cHV0IGFyZWEgKi8KLWludCB6bGliX2luZmxhdGVfZmx1c2goCi0JaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICpzLAotCXpfc3RyZWFtcCB6LAotCWludCByCi0pCi17Ci0gIHVJbnQgbjsKLSAgQnl0ZSAqcDsKLSAgQnl0ZSAqcTsKLQotICAvKiBsb2NhbCBjb3BpZXMgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiBwb2ludGVycyAqLwotICBwID0gei0+bmV4dF9vdXQ7Ci0gIHEgPSBzLT5yZWFkOwotCi0gIC8qIGNvbXB1dGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkgYXMgZmFyIGFzIGVuZCBvZiB3aW5kb3cgKi8KLSAgbiA9ICh1SW50KSgocSA8PSBzLT53cml0ZSA/IHMtPndyaXRlIDogcy0+ZW5kKSAtIHEpOwotICBpZiAobiA+IHotPmF2YWlsX291dCkgbiA9IHotPmF2YWlsX291dDsKLSAgaWYgKG4gJiYgciA9PSBaX0JVRl9FUlJPUikgciA9IFpfT0s7Ci0KLSAgLyogdXBkYXRlIGNvdW50ZXJzICovCi0gIHotPmF2YWlsX291dCAtPSBuOwotICB6LT50b3RhbF9vdXQgKz0gbjsKLQotICAvKiB1cGRhdGUgY2hlY2sgaW5mb3JtYXRpb24gKi8KLSAgaWYgKHMtPmNoZWNrZm4gIT0gTlVMTCkKLSAgICB6LT5hZGxlciA9IHMtPmNoZWNrID0gKCpzLT5jaGVja2ZuKShzLT5jaGVjaywgcSwgbik7Ci0KLSAgLyogY29weSBhcyBmYXIgYXMgZW5kIG9mIHdpbmRvdyAqLwotICBtZW1jcHkocCwgcSwgbik7Ci0gIHAgKz0gbjsKLSAgcSArPSBuOwotCi0gIC8qIHNlZSBpZiBtb3JlIHRvIGNvcHkgYXQgYmVnaW5uaW5nIG9mIHdpbmRvdyAqLwotICBpZiAocSA9PSBzLT5lbmQpCi0gIHsKLSAgICAvKiB3cmFwIHBvaW50ZXJzICovCi0gICAgcSA9IHMtPndpbmRvdzsKLSAgICBpZiAocy0+d3JpdGUgPT0gcy0+ZW5kKQotICAgICAgcy0+d3JpdGUgPSBzLT53aW5kb3c7Ci0KLSAgICAvKiBjb21wdXRlIGJ5dGVzIHRvIGNvcHkgKi8KLSAgICBuID0gKHVJbnQpKHMtPndyaXRlIC0gcSk7Ci0gICAgaWYgKG4gPiB6LT5hdmFpbF9vdXQpIG4gPSB6LT5hdmFpbF9vdXQ7Ci0gICAgaWYgKG4gJiYgciA9PSBaX0JVRl9FUlJPUikgciA9IFpfT0s7Ci0KLSAgICAvKiB1cGRhdGUgY291bnRlcnMgKi8KLSAgICB6LT5hdmFpbF9vdXQgLT0gbjsKLSAgICB6LT50b3RhbF9vdXQgKz0gbjsKLQotICAgIC8qIHVwZGF0ZSBjaGVjayBpbmZvcm1hdGlvbiAqLwotICAgIGlmIChzLT5jaGVja2ZuICE9IE5VTEwpCi0gICAgICB6LT5hZGxlciA9IHMtPmNoZWNrID0gKCpzLT5jaGVja2ZuKShzLT5jaGVjaywgcSwgbik7Ci0KLSAgICAvKiBjb3B5ICovCi0gICAgbWVtY3B5KHAsIHEsIG4pOwotICAgIHAgKz0gbjsKLSAgICBxICs9IG47Ci0gIH0KLQotICAvKiB1cGRhdGUgcG9pbnRlcnMgKi8KLSAgei0+bmV4dF9vdXQgPSBwOwotICBzLT5yZWFkID0gcTsKLQotICAvKiBkb25lICovCi0gIHJldHVybiByOwotfQpkaWZmIC0tZ2l0IGEvbGliL3psaWJfaW5mbGF0ZS9pbmZ1dGlsLmggYi9saWIvemxpYl9pbmZsYXRlL2luZnV0aWwuaAppbmRleCBhMTU4NzVmLi5lYjFhOTAwIDEwMDY0NAotLS0gYS9saWIvemxpYl9pbmZsYXRlL2luZnV0aWwuaAorKysgYi9saWIvemxpYl9pbmZsYXRlL2luZnV0aWwuaApAQCAtMTEsMTg0ICsxMSwxMiBAQAogI2lmbmRlZiBfSU5GVVRJTF9ICiAjZGVmaW5lIF9JTkZVVElMX0gKIAotI2luY2x1ZGUgPGxpbnV4L3pjb25mLmg+Ci0jaW5jbHVkZSAiaW5mdHJlZXMuaCIKLSNpbmNsdWRlICJpbmZjb2Rlcy5oIgotCi10eXBlZGVmIGVudW0gewotICAgICAgVFlQRSwgICAgIC8qIGdldCB0eXBlIGJpdHMgKDMsIGluY2x1ZGluZyBlbmQgYml0KSAqLwotICAgICAgTEVOUywgICAgIC8qIGdldCBsZW5ndGhzIGZvciBzdG9yZWQgKi8KLSAgICAgIFNUT1JFRCwgICAvKiBwcm9jZXNzaW5nIHN0b3JlZCBibG9jayAqLwotICAgICAgVEFCTEUsICAgIC8qIGdldCB0YWJsZSBsZW5ndGhzICovCi0gICAgICBCVFJFRSwgICAgLyogZ2V0IGJpdCBsZW5ndGhzIHRyZWUgZm9yIGEgZHluYW1pYyBibG9jayAqLwotICAgICAgRFRSRUUsICAgIC8qIGdldCBsZW5ndGgsIGRpc3RhbmNlIHRyZWVzIGZvciBhIGR5bmFtaWMgYmxvY2sgKi8KLSAgICAgIENPREVTLCAgICAvKiBwcm9jZXNzaW5nIGZpeGVkIG9yIGR5bmFtaWMgYmxvY2sgKi8KLSAgICAgIERSWSwgICAgICAvKiBvdXRwdXQgcmVtYWluaW5nIHdpbmRvdyBieXRlcyAqLwotICAgICAgQl9ET05FLCAgIC8qIGZpbmlzaGVkIGxhc3QgYmxvY2ssIGRvbmUgKi8KLSAgICAgIEJfQkFEfSAgICAvKiBnb3QgYSBkYXRhIGVycm9yLS1zdHVjayBoZXJlICovCi1pbmZsYXRlX2Jsb2NrX21vZGU7Ci0KLS8qIGluZmxhdGUgYmxvY2tzIHNlbWktcHJpdmF0ZSBzdGF0ZSAqLwotc3RydWN0IGluZmxhdGVfYmxvY2tzX3N0YXRlIHsKLQotICAvKiBtb2RlICovCi0gIGluZmxhdGVfYmxvY2tfbW9kZSAgbW9kZTsgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZV9ibG9jayBtb2RlICovCi0KLSAgLyogbW9kZSBkZXBlbmRlbnQgaW5mb3JtYXRpb24gKi8KLSAgdW5pb24gewotICAgIHVJbnQgbGVmdDsgICAgICAgICAgLyogaWYgU1RPUkVELCBieXRlcyBsZWZ0IHRvIGNvcHkgKi8KLSAgICBzdHJ1Y3QgewotICAgICAgdUludCB0YWJsZTsgICAgICAgICAgICAgICAvKiB0YWJsZSBsZW5ndGhzICgxNCBiaXRzKSAqLwotICAgICAgdUludCBpbmRleDsgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIGJsZW5zIChvciBib3JkZXIpICovCi0gICAgICB1SW50ICpibGVuczsgICAgICAgICAgICAgIC8qIGJpdCBsZW5ndGhzIG9mIGNvZGVzICovCi0gICAgICB1SW50IGJiOyAgICAgICAgICAgICAgICAgIC8qIGJpdCBsZW5ndGggdHJlZSBkZXB0aCAqLwotICAgICAgaW5mbGF0ZV9odWZ0ICp0YjsgICAgICAgICAvKiBiaXQgbGVuZ3RoIGRlY29kaW5nIHRyZWUgKi8KLSAgICB9IHRyZWVzOyAgICAgICAgICAgIC8qIGlmIERUUkVFLCBkZWNvZGluZyBpbmZvIGZvciB0cmVlcyAqLwotICAgIHN0cnVjdCB7Ci0gICAgICBpbmZsYXRlX2NvZGVzX3N0YXRlZiAKLSAgICAgICAgICpjb2RlczsKLSAgICB9IGRlY29kZTsgICAgICAgICAgIC8qIGlmIENPREVTLCBjdXJyZW50IHN0YXRlICovCi0gIH0gc3ViOyAgICAgICAgICAgICAgICAvKiBzdWJtb2RlICovCi0gIHVJbnQgbGFzdDsgICAgICAgICAgICAvKiB0cnVlIGlmIHRoaXMgYmxvY2sgaXMgdGhlIGxhc3QgYmxvY2sgKi8KLQotICAvKiBtb2RlIGluZGVwZW5kZW50IGluZm9ybWF0aW9uICovCi0gIHVJbnQgYml0azsgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi8KLSAgdUxvbmcgYml0YjsgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KLSAgaW5mbGF0ZV9odWZ0ICpodWZ0czsgIC8qIHNpbmdsZSBtYWxsb2MgZm9yIHRyZWUgc3BhY2UgKi8KLSAgQnl0ZSAqd2luZG93OyAgICAgICAgIC8qIHNsaWRpbmcgd2luZG93ICovCi0gIEJ5dGUgKmVuZDsgICAgICAgICAgICAvKiBvbmUgYnl0ZSBhZnRlciBzbGlkaW5nIHdpbmRvdyAqLwotICBCeXRlICpyZWFkOyAgICAgICAgICAgLyogd2luZG93IHJlYWQgcG9pbnRlciAqLwotICBCeXRlICp3cml0ZTsgICAgICAgICAgLyogd2luZG93IHdyaXRlIHBvaW50ZXIgKi8KLSAgY2hlY2tfZnVuYyBjaGVja2ZuOyAgIC8qIGNoZWNrIGZ1bmN0aW9uICovCi0gIHVMb25nIGNoZWNrOyAgICAgICAgICAvKiBjaGVjayBvbiBvdXRwdXQgKi8KLQotfTsKLQotCi0vKiBkZWZpbmVzIGZvciBpbmZsYXRlIGlucHV0L291dHB1dCAqLwotLyogICB1cGRhdGUgcG9pbnRlcnMgYW5kIHJldHVybiAqLwotI2RlZmluZSBVUERCSVRTIHtzLT5iaXRiPWI7cy0+Yml0az1rO30KLSNkZWZpbmUgVVBESU4ge3otPmF2YWlsX2luPW47ei0+dG90YWxfaW4rPXAtei0+bmV4dF9pbjt6LT5uZXh0X2luPXA7fQotI2RlZmluZSBVUERPVVQge3MtPndyaXRlPXE7fQotI2RlZmluZSBVUERBVEUge1VQREJJVFMgVVBESU4gVVBET1VUfQotI2RlZmluZSBMRUFWRSB7VVBEQVRFIHJldHVybiB6bGliX2luZmxhdGVfZmx1c2gocyx6LHIpO30KLS8qICAgZ2V0IGJ5dGVzIGFuZCBiaXRzICovCi0jZGVmaW5lIExPQURJTiB7cD16LT5uZXh0X2luO249ei0+YXZhaWxfaW47Yj1zLT5iaXRiO2s9cy0+Yml0azt9Ci0jZGVmaW5lIE5FRURCWVRFIHtpZihuKXI9Wl9PSztlbHNlIExFQVZFfQotI2RlZmluZSBORVhUQllURSAobi0tLCpwKyspCi0jZGVmaW5lIE5FRURCSVRTKGopIHt3aGlsZShrPChqKSl7TkVFREJZVEU7Ynw9KCh1TG9uZylORVhUQllURSk8PGs7ays9ODt9fQotI2RlZmluZSBEVU1QQklUUyhqKSB7Yj4+PShqKTtrLT0oaik7fQotLyogICBvdXRwdXQgYnl0ZXMgKi8KLSNkZWZpbmUgV0FWQUlMICh1SW50KShxPHMtPnJlYWQ/cy0+cmVhZC1xLTE6cy0+ZW5kLXEpCi0jZGVmaW5lIExPQURPVVQge3E9cy0+d3JpdGU7bT0odUludClXQVZBSUw7fQotI2RlZmluZSBXUkFQIHtpZihxPT1zLT5lbmQmJnMtPnJlYWQhPXMtPndpbmRvdyl7cT1zLT53aW5kb3c7bT0odUludClXQVZBSUw7fX0KLSNkZWZpbmUgRkxVU0gge1VQRE9VVCByPXpsaWJfaW5mbGF0ZV9mbHVzaChzLHoscik7IExPQURPVVR9Ci0jZGVmaW5lIE5FRURPVVQge2lmKG09PTApe1dSQVAgaWYobT09MCl7RkxVU0ggV1JBUCBpZihtPT0wKSBMRUFWRX19cj1aX09LO30KLSNkZWZpbmUgT1VUQllURShhKSB7KnErKz0oQnl0ZSkoYSk7bS0tO30KLS8qICAgbG9hZCBsb2NhbCBwb2ludGVycyAqLwotI2RlZmluZSBMT0FEIHtMT0FESU4gTE9BRE9VVH0KLQotLyogbWFza3MgZm9yIGxvd2VyIGJpdHMgKHNpemUgZ2l2ZW4gdG8gYXZvaWQgc2lsbHkgd2FybmluZ3Mgd2l0aCBWaXN1YWwgQysrKSAqLwotZXh0ZXJuIHVJbnQgemxpYl9pbmZsYXRlX21hc2tbMTddOwotCi0vKiBjb3B5IGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSB0aGUgc2xpZGluZyB3aW5kb3cgdG8gdGhlIG91dHB1dCBhcmVhICovCi1leHRlcm4gaW50IHpsaWJfaW5mbGF0ZV9mbHVzaCAoCi0gICAgaW5mbGF0ZV9ibG9ja3Nfc3RhdGVmICosCi0gICAgel9zdHJlYW1wICwKLSAgICBpbnQpOwotCi0vKiBpbmZsYXRlIHByaXZhdGUgc3RhdGUgKi8KLXR5cGVkZWYgZW51bSB7Ci0gICAgICBNRVRIT0QsICAgLyogd2FpdGluZyBmb3IgbWV0aG9kIGJ5dGUgKi8KLSAgICAgIEZMQUcsICAgICAvKiB3YWl0aW5nIGZvciBmbGFnIGJ5dGUgKi8KLSAgICAgIERJQ1Q0LCAgICAvKiBmb3VyIGRpY3Rpb25hcnkgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIERJQ1QzLCAgICAvKiB0aHJlZSBkaWN0aW9uYXJ5IGNoZWNrIGJ5dGVzIHRvIGdvICovCi0gICAgICBESUNUMiwgICAgLyogdHdvIGRpY3Rpb25hcnkgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIERJQ1QxLCAgICAvKiBvbmUgZGljdGlvbmFyeSBjaGVjayBieXRlIHRvIGdvICovCi0gICAgICBESUNUMCwgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkgKi8KLSAgICAgIEJMT0NLUywgICAvKiBkZWNvbXByZXNzaW5nIGJsb2NrcyAqLwotICAgICAgQ0hFQ0s0LCAgIC8qIGZvdXIgY2hlY2sgYnl0ZXMgdG8gZ28gKi8KLSAgICAgIENIRUNLMywgICAvKiB0aHJlZSBjaGVjayBieXRlcyB0byBnbyAqLwotICAgICAgQ0hFQ0syLCAgIC8qIHR3byBjaGVjayBieXRlcyB0byBnbyAqLwotICAgICAgQ0hFQ0sxLCAgIC8qIG9uZSBjaGVjayBieXRlIHRvIGdvICovCi0gICAgICBJX0RPTkUsICAgLyogZmluaXNoZWQgY2hlY2ssIGRvbmUgKi8KLSAgICAgIElfQkFEfSAgICAvKiBnb3QgYW4gZXJyb3ItLXN0YXkgaGVyZSAqLwotaW5mbGF0ZV9tb2RlOwotCi1zdHJ1Y3QgaW50ZXJuYWxfc3RhdGUgewotCi0gIC8qIG1vZGUgKi8KLSAgaW5mbGF0ZV9tb2RlICBtb2RlOyAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovCi0KLSAgLyogbW9kZSBkZXBlbmRlbnQgaW5mb3JtYXRpb24gKi8KLSAgdW5pb24gewotICAgIHVJbnQgbWV0aG9kOyAgICAgICAgLyogaWYgRkxBR1MsIG1ldGhvZCBieXRlICovCi0gICAgc3RydWN0IHsKLSAgICAgIHVMb25nIHdhczsgICAgICAgICAgICAgICAgLyogY29tcHV0ZWQgY2hlY2sgdmFsdWUgKi8KLSAgICAgIHVMb25nIG5lZWQ7ICAgICAgICAgICAgICAgLyogc3RyZWFtIGNoZWNrIHZhbHVlICovCi0gICAgfSBjaGVjazsgICAgICAgICAgICAvKiBpZiBDSEVDSywgY2hlY2sgdmFsdWVzIHRvIGNvbXBhcmUgKi8KLSAgICB1SW50IG1hcmtlcjsgICAgICAgIC8qIGlmIEJBRCwgaW5mbGF0ZVN5bmMncyBtYXJrZXIgYnl0ZXMgY291bnQgKi8KLSAgfSBzdWI7ICAgICAgICAvKiBzdWJtb2RlICovCi0KLSAgLyogbW9kZSBpbmRlcGVuZGVudCBpbmZvcm1hdGlvbiAqLwotICBpbnQgIG5vd3JhcDsgICAgICAgICAgLyogZmxhZyBmb3Igbm8gd3JhcHBlciAqLwotICB1SW50IHdiaXRzOyAgICAgICAgICAgLyogbG9nMih3aW5kb3cgc2l6ZSkgICg4Li4xNSwgZGVmYXVsdHMgdG8gMTUpICovCi0gIGluZmxhdGVfYmxvY2tzX3N0YXRlZiAKLSAgICAqYmxvY2tzOyAgICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZV9ibG9ja3Mgc3RhdGUgKi8KLQotfTsKLQotLyogaW5mbGF0ZSBjb2RlcyBwcml2YXRlIHN0YXRlICovCi10eXBlZGVmIGVudW0geyAgICAgICAgLyogd2FpdGluZyBmb3IgImk6Ij1pbnB1dCwgIm86Ij1vdXRwdXQsICJ4OiI9bm90aGluZyAqLwotICAgICAgU1RBUlQsICAgIC8qIHg6IHNldCB1cCBmb3IgTEVOICovCi0gICAgICBMRU4sICAgICAgLyogaTogZ2V0IGxlbmd0aC9saXRlcmFsL2VvYiBuZXh0ICovCi0gICAgICBMRU5FWFQsICAgLyogaTogZ2V0dGluZyBsZW5ndGggZXh0cmEgKGhhdmUgYmFzZSkgKi8KLSAgICAgIERJU1QsICAgICAvKiBpOiBnZXQgZGlzdGFuY2UgbmV4dCAqLwotICAgICAgRElTVEVYVCwgIC8qIGk6IGdldHRpbmcgZGlzdGFuY2UgZXh0cmEgKi8KLSAgICAgIENPUFksICAgICAvKiBvOiBjb3B5aW5nIGJ5dGVzIGluIHdpbmRvdywgd2FpdGluZyBmb3Igc3BhY2UgKi8KLSAgICAgIExJVCwgICAgICAvKiBvOiBnb3QgbGl0ZXJhbCwgd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlICovCi0gICAgICBXQVNILCAgICAgLyogbzogZ290IGVvYiwgcG9zc2libHkgc3RpbGwgb3V0cHV0IHdhaXRpbmcgKi8KLSAgICAgIEVORCwgICAgICAvKiB4OiBnb3QgZW9iIGFuZCBhbGwgZGF0YSBmbHVzaGVkICovCi0gICAgICBCQURDT0RFfSAgLyogeDogZ290IGVycm9yICovCi1pbmZsYXRlX2NvZGVzX21vZGU7Ci0KLXN0cnVjdCBpbmZsYXRlX2NvZGVzX3N0YXRlIHsKLQotICAvKiBtb2RlICovCi0gIGluZmxhdGVfY29kZXNfbW9kZSBtb2RlOyAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZV9jb2RlcyBtb2RlICovCi0KLSAgLyogbW9kZSBkZXBlbmRlbnQgaW5mb3JtYXRpb24gKi8KLSAgdUludCBsZW47Ci0gIHVuaW9uIHsKLSAgICBzdHJ1Y3QgewotICAgICAgaW5mbGF0ZV9odWZ0ICp0cmVlOyAgICAgICAvKiBwb2ludGVyIGludG8gdHJlZSAqLwotICAgICAgdUludCBuZWVkOyAgICAgICAgICAgICAgICAvKiBiaXRzIG5lZWRlZCAqLwotICAgIH0gY29kZTsgICAgICAgICAgICAgLyogaWYgTEVOIG9yIERJU1QsIHdoZXJlIGluIHRyZWUgKi8KLSAgICB1SW50IGxpdDsgICAgICAgICAgIC8qIGlmIExJVCwgbGl0ZXJhbCAqLwotICAgIHN0cnVjdCB7Ci0gICAgICB1SW50IGdldDsgICAgICAgICAgICAgICAgIC8qIGJpdHMgdG8gZ2V0IGZvciBleHRyYSAqLwotICAgICAgdUludCBkaXN0OyAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgZnJvbSAqLwotICAgIH0gY29weTsgICAgICAgICAgICAgLyogaWYgRVhUIG9yIENPUFksIHdoZXJlIGFuZCBob3cgbXVjaCAqLwotICB9IHN1YjsgICAgICAgICAgICAgICAgLyogc3VibW9kZSAqLwotCi0gIC8qIG1vZGUgaW5kZXBlbmRlbnQgaW5mb3JtYXRpb24gKi8KLSAgQnl0ZSBsYml0czsgICAgICAgICAgIC8qIGx0cmVlIGJpdHMgZGVjb2RlZCBwZXIgYnJhbmNoICovCi0gIEJ5dGUgZGJpdHM7ICAgICAgICAgICAvKiBkdHJlZSBiaXRzIGRlY29kZXIgcGVyIGJyYW5jaCAqLwotICBpbmZsYXRlX2h1ZnQgKmx0cmVlOyAgICAgICAgICAvKiBsaXRlcmFsL2xlbmd0aC9lb2IgdHJlZSAqLwotICBpbmZsYXRlX2h1ZnQgKmR0cmVlOyAgICAgICAgICAvKiBkaXN0YW5jZSB0cmVlICovCi0KLX07CisjaW5jbHVkZSA8bGludXgvemxpYi5oPgogCiAvKiBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgaW5mbGF0aW9uICovCiAKIHN0cnVjdCBpbmZsYXRlX3dvcmtzcGFjZSB7Ci0JaW5mbGF0ZV9jb2Rlc19zdGF0ZWYgd29ya2luZ19zdGF0ZTsKLQlzdHJ1Y3QgaW5mbGF0ZV9ibG9ja3Nfc3RhdGUgd29ya2luZ19ibG9ja3Nfc3RhdGU7Ci0Jc3RydWN0IGludGVybmFsX3N0YXRlIGludGVybmFsX3N0YXRlOwotCXVuc2lnbmVkIGludCB0cmVlX3dvcmtfYXJlYV8xWzE5XTsKLQl1bnNpZ25lZCBpbnQgdHJlZV93b3JrX2FyZWFfMlsyODhdOwotCXVuc2lnbmVkIHdvcmtpbmdfYmxlbnNbMjU4ICsgMHgxZiArIDB4MWZdOwotCWluZmxhdGVfaHVmdCB3b3JraW5nX2h1ZnRzW01BTlldOworCXN0cnVjdCBpbmZsYXRlX3N0YXRlIGluZmxhdGVfc3RhdGU7CiAJdW5zaWduZWQgY2hhciB3b3JraW5nX3dpbmRvd1sxIDw8IE1BWF9XQklUU107CiB9OwogCmRpZmYgLS1naXQgYS9tbS9LY29uZmlnIGIvbW0vS2NvbmZpZwppbmRleCAzMzJmNWMyLi42NmU2NWFiIDEwMDY0NAotLS0gYS9tbS9LY29uZmlnCisrKyBiL21tL0tjb25maWcKQEAgLTEzOCw4ICsxMzgsOCBAQAogIwogY29uZmlnIE1JR1JBVElPTgogCWJvb2wgIlBhZ2UgbWlncmF0aW9uIgotCWRlZl9ib29sIHkgaWYgTlVNQQotCWRlcGVuZHMgb24gU1dBUCAmJiBOVU1BCisJZGVmX2Jvb2wgeQorCWRlcGVuZHMgb24gTlVNQQogCWhlbHAKIAkgIEFsbG93cyB0aGUgbWlncmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiBwYWdlcyBvZiBwcm9jZXNzZXMKIAkgIHdoaWxlIHRoZSB2aXJ0dWFsIGFkZHJlc3NlcyBhcmUgbm90IGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVsIGZvcgpkaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jCmluZGV4IGZkNTc0NDIuLjgwN2E0NjNmIDEwMDY0NAotLS0gYS9tbS9maWxlbWFwLmMKKysrIGIvbW0vZmlsZW1hcC5jCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvYWlvLmg+CiAjaW5jbHVkZSA8bGludXgvY2FwYWJpbGl0eS5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbF9zdGF0Lmg+CkBAIC0zOCw3ICszOSw2IEBACiAgKi8KICNpbmNsdWRlIDxsaW51eC9idWZmZXJfaGVhZC5oPiAvKiBmb3IgZ2VuZXJpY19vc3luY19pbm9kZSAqLwogCi0jaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vbW1hbi5oPgogCiBzdGF0aWMgc3NpemVfdApAQCAtMTcxLDE1ICsxNzEsMTcgQEAKIH0KIAogLyoqCi0gKiBmaWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2UgLSBzdGFydCB3cml0ZWJhY2sgYWdhaW5zdCBhbGwgb2YgYSBtYXBwaW5nJ3MKLSAqIGRpcnR5IHBhZ2VzIHRoYXQgbGllIHdpdGhpbiB0aGUgYnl0ZSBvZmZzZXRzIDxzdGFydCwgZW5kPgorICogX19maWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2UgLSBzdGFydCB3cml0ZWJhY2sgb24gbWFwcGluZyBkaXJ0eSBwYWdlcyBpbiByYW5nZQogICogQG1hcHBpbmc6CWFkZHJlc3Mgc3BhY2Ugc3RydWN0dXJlIHRvIHdyaXRlCiAgKiBAc3RhcnQ6CW9mZnNldCBpbiBieXRlcyB3aGVyZSB0aGUgcmFuZ2Ugc3RhcnRzCiAgKiBAZW5kOglvZmZzZXQgaW4gYnl0ZXMgd2hlcmUgdGhlIHJhbmdlIGVuZHMgKGluY2x1c2l2ZSkKICAqIEBzeW5jX21vZGU6CWVuYWJsZSBzeW5jaHJvbm91cyBvcGVyYXRpb24KICAqCisgKiBTdGFydCB3cml0ZWJhY2sgYWdhaW5zdCBhbGwgb2YgYSBtYXBwaW5nJ3MgZGlydHkgcGFnZXMgdGhhdCBsaWUKKyAqIHdpdGhpbiB0aGUgYnl0ZSBvZmZzZXRzIDxzdGFydCwgZW5kPiBpbmNsdXNpdmUuCisgKgogICogSWYgc3luY19tb2RlIGlzIFdCX1NZTkNfQUxMIHRoZW4gdGhpcyBpcyBhICJkYXRhIGludGVncml0eSIgb3BlcmF0aW9uLCBhcwotICogb3Bwb3NlZCB0byBhIHJlZ3VsYXIgbWVtb3J5ICogY2xlYW5zaW5nIHdyaXRlYmFjay4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAqIG9wcG9zZWQgdG8gYSByZWd1bGFyIG1lbW9yeSBjbGVhbnNpbmcgd3JpdGViYWNrLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgogICogdGhlc2UgdHdvIG9wZXJhdGlvbnMgaXMgdGhhdCBpZiBhIGRpcnR5IHBhZ2UvYnVmZmVyIGlzIGVuY291bnRlcmVkLCBpdCBtdXN0CiAgKiBiZSB3YWl0ZWQgdXBvbiwgYW5kIG5vdCBqdXN0IHNraXBwZWQgb3Zlci4KICAqLwpAQCAtMTkwLDggKzE5Miw4IEBACiAJc3RydWN0IHdyaXRlYmFja19jb250cm9sIHdiYyA9IHsKIAkJLnN5bmNfbW9kZSA9IHN5bmNfbW9kZSwKIAkJLm5yX3RvX3dyaXRlID0gbWFwcGluZy0+bnJwYWdlcyAqIDIsCi0JCS5zdGFydCA9IHN0YXJ0LAotCQkuZW5kID0gZW5kLAorCQkucmFuZ2Vfc3RhcnQgPSBzdGFydCwKKwkJLnJhbmdlX2VuZCA9IGVuZCwKIAl9OwogCiAJaWYgKCFtYXBwaW5nX2NhcF93cml0ZWJhY2tfZGlydHkobWFwcGluZykpCkBAIC0yMDQsNyArMjA2LDcgQEAKIHN0YXRpYyBpbmxpbmUgaW50IF9fZmlsZW1hcF9mZGF0YXdyaXRlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCWludCBzeW5jX21vZGUpCiB7Ci0JcmV0dXJuIF9fZmlsZW1hcF9mZGF0YXdyaXRlX3JhbmdlKG1hcHBpbmcsIDAsIDAsIHN5bmNfbW9kZSk7CisJcmV0dXJuIF9fZmlsZW1hcF9mZGF0YXdyaXRlX3JhbmdlKG1hcHBpbmcsIDAsIExMT05HX01BWCwgc3luY19tb2RlKTsKIH0KIAogaW50IGZpbGVtYXBfZmRhdGF3cml0ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKQEAgLTIxOSw3ICsyMjEsMTAgQEAKIAlyZXR1cm4gX19maWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2UobWFwcGluZywgc3RhcnQsIGVuZCwgV0JfU1lOQ19BTEwpOwogfQogCi0vKgorLyoqCisgKiBmaWxlbWFwX2ZsdXNoIC0gbW9zdGx5IGEgbm9uLWJsb2NraW5nIGZsdXNoCisgKiBAbWFwcGluZzoJdGFyZ2V0IGFkZHJlc3Nfc3BhY2UKKyAqCiAgKiBUaGlzIGlzIGEgbW9zdGx5IG5vbi1ibG9ja2luZyBmbHVzaC4gIE5vdCBzdWl0YWJsZSBmb3IgZGF0YS1pbnRlZ3JpdHkKICAqIHB1cnBvc2VzIC0gSS9PIG1heSBub3QgYmUgc3RhcnRlZCBhZ2FpbnN0IGFsbCBkaXJ0eSBwYWdlcy4KICAqLwpAQCAtMjI5LDcgKzIzNCwxMiBAQAogfQogRVhQT1JUX1NZTUJPTChmaWxlbWFwX2ZsdXNoKTsKIAotLyoKKy8qKgorICogd2FpdF9vbl9wYWdlX3dyaXRlYmFja19yYW5nZSAtIHdhaXQgZm9yIHdyaXRlYmFjayB0byBjb21wbGV0ZQorICogQG1hcHBpbmc6CXRhcmdldCBhZGRyZXNzX3NwYWNlCisgKiBAc3RhcnQ6CWJlZ2lubmluZyBwYWdlIGluZGV4CisgKiBAZW5kOgllbmRpbmcgcGFnZSBpbmRleAorICoKICAqIFdhaXQgZm9yIHdyaXRlYmFjayB0byBjb21wbGV0ZSBhZ2FpbnN0IHBhZ2VzIGluZGV4ZWQgYnkgc3RhcnQtPmVuZAogICogaW5jbHVzaXZlCiAgKi8KQEAgLTI3Niw3ICsyODYsMTMgQEAKIAlyZXR1cm4gcmV0OwogfQogCi0vKgorLyoqCisgKiBzeW5jX3BhZ2VfcmFuZ2UgLSB3cml0ZSBhbmQgd2FpdCBvbiBhbGwgcGFnZXMgaW4gdGhlIHBhc3NlZCByYW5nZQorICogQGlub2RlOgl0YXJnZXQgaW5vZGUKKyAqIEBtYXBwaW5nOgl0YXJnZXQgYWRkcmVzc19zcGFjZQorICogQHBvczoJYmVnaW5uaW5nIG9mZnNldCBpbiBwYWdlcyB0byB3cml0ZQorICogQGNvdW50OgludW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUKKyAqCiAgKiBXcml0ZSBhbmQgd2FpdCB1cG9uIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHBhc3NlZCByYW5nZS4gIFRoaXMgaXMgYSAiZGF0YQogICogaW50ZWdyaXR5IiBvcGVyYXRpb24uICBJdCB3YWl0cyB1cG9uIGluLWZsaWdodCB3cml0ZW91dCBiZWZvcmUgc3RhcnRpbmcgYW5kCiAgKiB3YWl0aW5nIHVwb24gbmV3IHdyaXRlb3V0LiAgSWYgdGhlcmUgd2FzIGFuIElPIGVycm9yLCByZXR1cm4gaXQuCkBAIC0zMDUsNyArMzIxLDEzIEBACiB9CiBFWFBPUlRfU1lNQk9MKHN5bmNfcGFnZV9yYW5nZSk7CiAKLS8qCisvKioKKyAqIHN5bmNfcGFnZV9yYW5nZV9ub2xvY2sKKyAqIEBpbm9kZToJdGFyZ2V0IGlub2RlCisgKiBAbWFwcGluZzoJdGFyZ2V0IGFkZHJlc3Nfc3BhY2UKKyAqIEBwb3M6CWJlZ2lubmluZyBvZmZzZXQgaW4gcGFnZXMgdG8gd3JpdGUKKyAqIEBjb3VudDoJbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCisgKgogICogTm90ZTogSG9sZGluZyBpX211dGV4IGFjcm9zcyBzeW5jX3BhZ2VfcmFuZ2Vfbm9sb2NrIGlzIG5vdCBhIGdvb2QgaWRlYQogICogYXMgaXQgZm9yY2VzIE9fU1lOQyB3cml0ZXJzIHRvIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgc2FtZSBmaWxlCiAgKiB0byBiZSBzZXJpYWxpc2VkIHJpZ2h0IHVudGlsIGlvIGNvbXBsZXRpb24uCkBAIC0zMjksMTAgKzM1MSwxMSBAQAogRVhQT1JUX1NZTUJPTChzeW5jX3BhZ2VfcmFuZ2Vfbm9sb2NrKTsKIAogLyoqCi0gKiBmaWxlbWFwX2ZkYXRhd2FpdCAtIHdhbGsgdGhlIGxpc3Qgb2YgdW5kZXItd3JpdGViYWNrIHBhZ2VzIG9mIHRoZSBnaXZlbgotICogICAgIGFkZHJlc3Mgc3BhY2UgYW5kIHdhaXQgZm9yIGFsbCBvZiB0aGVtLgotICoKKyAqIGZpbGVtYXBfZmRhdGF3YWl0IC0gd2FpdCBmb3IgYWxsIHVuZGVyLXdyaXRlYmFjayBwYWdlcyB0byBjb21wbGV0ZQogICogQG1hcHBpbmc6IGFkZHJlc3Mgc3BhY2Ugc3RydWN0dXJlIHRvIHdhaXQgZm9yCisgKgorICogV2FsayB0aGUgbGlzdCBvZiB1bmRlci13cml0ZWJhY2sgcGFnZXMgb2YgdGhlIGdpdmVuIGFkZHJlc3Mgc3BhY2UKKyAqIGFuZCB3YWl0IGZvciBhbGwgb2YgdGhlbS4KICAqLwogaW50IGZpbGVtYXBfZmRhdGF3YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQogewpAQCAtMzY4LDcgKzM5MSwxMiBAQAogfQogRVhQT1JUX1NZTUJPTChmaWxlbWFwX3dyaXRlX2FuZF93YWl0KTsKIAotLyoKKy8qKgorICogZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZSAtIHdyaXRlIG91dCAmIHdhaXQgb24gYSBmaWxlIHJhbmdlCisgKiBAbWFwcGluZzoJdGhlIGFkZHJlc3Nfc3BhY2UgZm9yIHRoZSBwYWdlcworICogQGxzdGFydDoJb2Zmc2V0IGluIGJ5dGVzIHdoZXJlIHRoZSByYW5nZSBzdGFydHMKKyAqIEBsZW5kOglvZmZzZXQgaW4gYnl0ZXMgd2hlcmUgdGhlIHJhbmdlIGVuZHMgKGluY2x1c2l2ZSkKKyAqCiAgKiBXcml0ZSBvdXQgYW5kIHdhaXQgdXBvbiBmaWxlIG9mZnNldHMgbHN0YXJ0LT5sZW5kLCBpbmNsdXNpdmUuCiAgKgogICogTm90ZSB0aGF0IGBsZW5kJyBpcyBpbmNsdXNpdmUgKGRlc2NyaWJlcyB0aGUgbGFzdCBieXRlIHRvIGJlIHdyaXR0ZW4pIHNvCkBAIC0zOTQsOCArNDIyLDE0IEBACiAJcmV0dXJuIGVycjsKIH0KIAotLyoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGQgbmV3bHkgYWxsb2NhdGVkIHBhZ2VjYWNoZSBwYWdlczoKKy8qKgorICogYWRkX3RvX3BhZ2VfY2FjaGUgLSBhZGQgbmV3bHkgYWxsb2NhdGVkIHBhZ2VjYWNoZSBwYWdlcworICogQHBhZ2U6CXBhZ2UgdG8gYWRkCisgKiBAbWFwcGluZzoJdGhlIHBhZ2UncyBhZGRyZXNzX3NwYWNlCisgKiBAb2Zmc2V0OglwYWdlIGluZGV4CisgKiBAZ2ZwX21hc2s6CXBhZ2UgYWxsb2NhdGlvbiBtb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCBuZXdseSBhbGxvY2F0ZWQgcGFnZWNhY2hlIHBhZ2VzOwogICogdGhlIHBhZ2UgaXMgbmV3LCBzbyB3ZSBjYW4ganVzdCBydW4gU2V0UGFnZUxvY2tlZCgpIGFnYWluc3QgaXQuCiAgKiBUaGUgb3RoZXIgcGFnZSBzdGF0ZSBmbGFncyB3ZXJlIHNldCBieSBybXF1ZXVlKCkuCiAgKgpAQCAtNDIyLDcgKzQ1Niw2IEBACiAJfQogCXJldHVybiBlcnJvcjsKIH0KLQogRVhQT1JUX1NZTUJPTChhZGRfdG9fcGFnZV9jYWNoZSk7CiAKIGludCBhZGRfdG9fcGFnZV9jYWNoZV9scnUoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLApAQCAtNDg5LDggKzUyMiw3IEBACiBFWFBPUlRfU1lNQk9MKHdhaXRfb25fcGFnZV9iaXQpOwogCiAvKioKLSAqIHVubG9ja19wYWdlKCkgLSB1bmxvY2sgYSBsb2NrZWQgcGFnZQotICoKKyAqIHVubG9ja19wYWdlIC0gdW5sb2NrIGEgbG9ja2VkIHBhZ2UKICAqIEBwYWdlOiB0aGUgcGFnZQogICoKICAqIFVubG9ja3MgdGhlIHBhZ2UgYW5kIHdha2VzIHVwIHNsZWVwZXJzIGluIF9fX3dhaXRfb25fcGFnZV9sb2NrZWQoKS4KQEAgLTUxMyw4ICs1NDUsOSBAQAogfQogRVhQT1JUX1NZTUJPTCh1bmxvY2tfcGFnZSk7CiAKLS8qCi0gKiBFbmQgd3JpdGViYWNrIGFnYWluc3QgYSBwYWdlLgorLyoqCisgKiBlbmRfcGFnZV93cml0ZWJhY2sgLSBlbmQgd3JpdGViYWNrIGFnYWluc3QgYSBwYWdlCisgKiBAcGFnZTogdGhlIHBhZ2UKICAqLwogdm9pZCBlbmRfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CkBAIC01MjcsMTAgKzU2MCwxMSBAQAogfQogRVhQT1JUX1NZTUJPTChlbmRfcGFnZV93cml0ZWJhY2spOwogCi0vKgotICogR2V0IGEgbG9jayBvbiB0aGUgcGFnZSwgYXNzdW1pbmcgd2UgbmVlZCB0byBzbGVlcCB0byBnZXQgaXQuCisvKioKKyAqIF9fbG9ja19wYWdlIC0gZ2V0IGEgbG9jayBvbiB0aGUgcGFnZSwgYXNzdW1pbmcgd2UgbmVlZCB0byBzbGVlcCB0byBnZXQgaXQKKyAqIEBwYWdlOiB0aGUgcGFnZSB0byBsb2NrCiAgKgotICogVWdseTogcnVubmluZyBzeW5jX3BhZ2UoKSBpbiBzdGF0ZSBUQVNLX1VOSU5URVJSVVBUSUJMRSBpcyBzY2FyeS4gIElmIHNvbWUKKyAqIFVnbHkuIFJ1bm5pbmcgc3luY19wYWdlKCkgaW4gc3RhdGUgVEFTS19VTklOVEVSUlVQVElCTEUgaXMgc2NhcnkuICBJZiBzb21lCiAgKiByYW5kb20gZHJpdmVyJ3MgcmVxdWVzdGZuIHNldHMgVEFTS19SVU5OSU5HLCB3ZSBjb3VsZCBidXN5d2FpdC4gIEhvd2V2ZXIKICAqIGNoYW5jZXMgYXJlIHRoYXQgb24gdGhlIHNlY29uZCBsb29wLCB0aGUgYmxvY2sgbGF5ZXIncyBwbHVnIGxpc3QgaXMgZW1wdHksCiAgKiBzbyBzeW5jX3BhZ2UoKSB3aWxsIHRoZW4gcmV0dXJuIGluIHN0YXRlIFRBU0tfVU5JTlRFUlJVUFRJQkxFLgpAQCAtNTQ0LDggKzU3OCwxMiBAQAogfQogRVhQT1JUX1NZTUJPTChfX2xvY2tfcGFnZSk7CiAKLS8qCi0gKiBhIHJhdGhlciBsaWdodHdlaWdodCBmdW5jdGlvbiwgZmluZGluZyBhbmQgZ2V0dGluZyBhIHJlZmVyZW5jZSB0byBhCisvKioKKyAqIGZpbmRfZ2V0X3BhZ2UgLSBmaW5kIGFuZCBnZXQgYSBwYWdlIHJlZmVyZW5jZQorICogQG1hcHBpbmc6IHRoZSBhZGRyZXNzX3NwYWNlIHRvIHNlYXJjaAorICogQG9mZnNldDogdGhlIHBhZ2UgaW5kZXgKKyAqCisgKiBBIHJhdGhlciBsaWdodHdlaWdodCBmdW5jdGlvbiwgZmluZGluZyBhbmQgZ2V0dGluZyBhIHJlZmVyZW5jZSB0byBhCiAgKiBoYXNoZWQgcGFnZSBhdG9taWNhbGx5LgogICovCiBzdHJ1Y3QgcGFnZSAqIGZpbmRfZ2V0X3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQpAQCAtNTU5LDExICs1OTcsMTQgQEAKIAlyZWFkX3VubG9ja19pcnEoJm1hcHBpbmctPnRyZWVfbG9jayk7CiAJcmV0dXJuIHBhZ2U7CiB9Ci0KIEVYUE9SVF9TWU1CT0woZmluZF9nZXRfcGFnZSk7CiAKLS8qCi0gKiBTYW1lIGFzIGFib3ZlLCBidXQgdHJ5bG9jayBpdCBpbnN0ZWFkIG9mIGluY3JlbWVudGluZyB0aGUgY291bnQuCisvKioKKyAqIGZpbmRfdHJ5bG9ja19wYWdlIC0gZmluZCBhbmQgbG9jayBhIHBhZ2UKKyAqIEBtYXBwaW5nOiB0aGUgYWRkcmVzc19zcGFjZSB0byBzZWFyY2gKKyAqIEBvZmZzZXQ6IHRoZSBwYWdlIGluZGV4CisgKgorICogU2FtZSBhcyBmaW5kX2dldF9wYWdlKCksIGJ1dCB0cnlsb2NrIGl0IGluc3RlYWQgb2YgaW5jcmVtZW50aW5nIHRoZSBjb3VudC4KICAqLwogc3RydWN0IHBhZ2UgKmZpbmRfdHJ5bG9ja19wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKIHsKQEAgLTU3NiwxMiArNjE3LDEwIEBACiAJcmVhZF91bmxvY2tfaXJxKCZtYXBwaW5nLT50cmVlX2xvY2spOwogCXJldHVybiBwYWdlOwogfQotCiBFWFBPUlRfU1lNQk9MKGZpbmRfdHJ5bG9ja19wYWdlKTsKIAogLyoqCiAgKiBmaW5kX2xvY2tfcGFnZSAtIGxvY2F0ZSwgcGluIGFuZCBsb2NrIGEgcGFnZWNhY2hlIHBhZ2UKLSAqCiAgKiBAbWFwcGluZzogdGhlIGFkZHJlc3Nfc3BhY2UgdG8gc2VhcmNoCiAgKiBAb2Zmc2V0OiB0aGUgcGFnZSBpbmRleAogICoKQEAgLTYxNywxMiArNjU2LDEwIEBACiAJcmVhZF91bmxvY2tfaXJxKCZtYXBwaW5nLT50cmVlX2xvY2spOwogCXJldHVybiBwYWdlOwogfQotCiBFWFBPUlRfU1lNQk9MKGZpbmRfbG9ja19wYWdlKTsKIAogLyoqCiAgKiBmaW5kX29yX2NyZWF0ZV9wYWdlIC0gbG9jYXRlIG9yIGFkZCBhIHBhZ2VjYWNoZSBwYWdlCi0gKgogICogQG1hcHBpbmc6IHRoZSBwYWdlJ3MgYWRkcmVzc19zcGFjZQogICogQGluZGV4OiB0aGUgcGFnZSdzIGluZGV4IGludG8gdGhlIG1hcHBpbmcKICAqIEBnZnBfbWFzazogcGFnZSBhbGxvY2F0aW9uIG1vZGUKQEAgLTY2Myw3ICs3MDAsNiBAQAogCQlwYWdlX2NhY2hlX3JlbGVhc2UoY2FjaGVkX3BhZ2UpOwogCXJldHVybiBwYWdlOwogfQotCiBFWFBPUlRfU1lNQk9MKGZpbmRfb3JfY3JlYXRlX3BhZ2UpOwogCiAvKioKQEAgLTcyOSw5ICs3NjUsMTYgQEAKIAlyZXR1cm4gaTsKIH0KIAotLyoKKy8qKgorICogZmluZF9nZXRfcGFnZXNfdGFnIC0gZmluZCBhbmQgcmV0dXJuIHBhZ2VzIHRoYXQgbWF0Y2ggQHRhZworICogQG1hcHBpbmc6CXRoZSBhZGRyZXNzX3NwYWNlIHRvIHNlYXJjaAorICogQGluZGV4Ogl0aGUgc3RhcnRpbmcgcGFnZSBpbmRleAorICogQHRhZzoJdGhlIHRhZyBpbmRleAorICogQG5yX3BhZ2VzOgl0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKKyAqIEBwYWdlczoJd2hlcmUgdGhlIHJlc3VsdGluZyBwYWdlcyBhcmUgcGxhY2VkCisgKgogICogTGlrZSBmaW5kX2dldF9wYWdlcywgZXhjZXB0IHdlIG9ubHkgcmV0dXJuIHBhZ2VzIHdoaWNoIGFyZSB0YWdnZWQgd2l0aAotICogYHRhZycuICAgV2UgdXBkYXRlICppbmRleCB0byBpbmRleCB0aGUgbmV4dCBwYWdlIGZvciB0aGUgdHJhdmVyc2FsLgorICogQHRhZy4gICBXZSB1cGRhdGUgQGluZGV4IHRvIGluZGV4IHRoZSBuZXh0IHBhZ2UgZm9yIHRoZSB0cmF2ZXJzYWwuCiAgKi8KIHVuc2lnbmVkIGZpbmRfZ2V0X3BhZ2VzX3RhZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgcGdvZmZfdCAqaW5kZXgsCiAJCQlpbnQgdGFnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZXMpCkBAIC03NTAsNyArNzkzLDExIEBACiAJcmV0dXJuIHJldDsKIH0KIAotLyoKKy8qKgorICogZ3JhYl9jYWNoZV9wYWdlX25vd2FpdCAtIHJldHVybnMgbG9ja2VkIHBhZ2UgYXQgZ2l2ZW4gaW5kZXggaW4gZ2l2ZW4gY2FjaGUKKyAqIEBtYXBwaW5nOiB0YXJnZXQgYWRkcmVzc19zcGFjZQorICogQGluZGV4OiB0aGUgcGFnZSBpbmRleAorICoKICAqIFNhbWUgYXMgZ3JhYl9jYWNoZV9wYWdlLCBidXQgZG8gbm90IHdhaXQgaWYgdGhlIHBhZ2UgaXMgdW5hdmFpbGFibGUuCiAgKiBUaGlzIGlzIGludGVuZGVkIGZvciBzcGVjdWxhdGl2ZSBkYXRhIGdlbmVyYXRvcnMsIHdoZXJlIHRoZSBkYXRhIGNhbgogICogYmUgcmVnZW5lcmF0ZWQgaWYgdGhlIHBhZ2UgY291bGRuJ3QgYmUgZ3JhYmJlZC4gIFRoaXMgcm91dGluZSBzaG91bGQKQEAgLTc3OSwxOSArODI2LDI1IEBACiAJfQogCXJldHVybiBwYWdlOwogfQotCiBFWFBPUlRfU1lNQk9MKGdyYWJfY2FjaGVfcGFnZV9ub3dhaXQpOwogCi0vKgorLyoqCisgKiBkb19nZW5lcmljX21hcHBpbmdfcmVhZCAtIGdlbmVyaWMgZmlsZSByZWFkIHJvdXRpbmUKKyAqIEBtYXBwaW5nOglhZGRyZXNzX3NwYWNlIHRvIGJlIHJlYWQKKyAqIEBfcmE6CWZpbGUncyByZWFkYWhlYWQgc3RhdGUKKyAqIEBmaWxwOgl0aGUgZmlsZSB0byByZWFkCisgKiBAcHBvczoJY3VycmVudCBmaWxlIHBvc2l0aW9uCisgKiBAZGVzYzoJcmVhZF9kZXNjcmlwdG9yCisgKiBAYWN0b3I6CXJlYWQgbWV0aG9kCisgKgogICogVGhpcyBpcyBhIGdlbmVyaWMgZmlsZSByZWFkIHJvdXRpbmUsIGFuZCB1c2VzIHRoZQotICogbWFwcGluZy0+YV9vcHMtPnJlYWRwYWdlKCkgZnVuY3Rpb24gZm9yIHRoZSBhY3R1YWwgbG93LWxldmVsCi0gKiBzdHVmZi4KKyAqIG1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSgpIGZ1bmN0aW9uIGZvciB0aGUgYWN0dWFsIGxvdy1sZXZlbCBzdHVmZi4KICAqCiAgKiBUaGlzIGlzIHJlYWxseSB1Z2x5LiBCdXQgdGhlIGdvdG8ncyBhY3R1YWxseSB0cnkgdG8gY2xhcmlmeSBzb21lCiAgKiBvZiB0aGUgbG9naWMgd2hlbiBpdCBjb21lcyB0byBlcnJvciBoYW5kbGluZyBldGMuCiAgKgotICogTm90ZSB0aGUgc3RydWN0IGZpbGUqIGlzIG9ubHkgcGFzc2VkIGZvciB0aGUgdXNlIG9mIHJlYWRwYWdlLiAgSXQgbWF5IGJlCi0gKiBOVUxMLgorICogTm90ZSB0aGUgc3RydWN0IGZpbGUqIGlzIG9ubHkgcGFzc2VkIGZvciB0aGUgdXNlIG9mIHJlYWRwYWdlLgorICogSXQgbWF5IGJlIE5VTEwuCiAgKi8KIHZvaWQgZG9fZ2VuZXJpY19tYXBwaW5nX3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJCQkgICAgIHN0cnVjdCBmaWxlX3JhX3N0YXRlICpfcmEsCkBAIC0xMDA0LDcgKzEwNTcsNiBAQAogCWlmIChmaWxwKQogCQlmaWxlX2FjY2Vzc2VkKGZpbHApOwogfQotCiBFWFBPUlRfU1lNQk9MKGRvX2dlbmVyaWNfbWFwcGluZ19yZWFkKTsKIAogaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqZGVzYywgc3RydWN0IHBhZ2UgKnBhZ2UsCkBAIC0xMDQ1LDcgKzEwOTcsMTMgQEAKIAlyZXR1cm4gc2l6ZTsKIH0KIAotLyoKKy8qKgorICogX19nZW5lcmljX2ZpbGVfYWlvX3JlYWQgLSBnZW5lcmljIGZpbGVzeXN0ZW0gcmVhZCByb3V0aW5lCisgKiBAaW9jYjoJa2VybmVsIEkvTyBjb250cm9sIGJsb2NrCisgKiBAaW92OglpbyB2ZWN0b3IgcmVxdWVzdAorICogQG5yX3NlZ3M6CW51bWJlciBvZiBzZWdtZW50cyBpbiB0aGUgaW92ZWMKKyAqIEBwcG9zOgljdXJyZW50IGZpbGUgcG9zaXRpb24KKyAqCiAgKiBUaGlzIGlzIHRoZSAicmVhZCgpIiByb3V0aW5lIGZvciBhbGwgZmlsZXN5c3RlbXMKICAqIHRoYXQgY2FuIHVzZSB0aGUgcGFnZSBjYWNoZSBkaXJlY3RseS4KICAqLwpAQCAtMTEyNCw3ICsxMTgyLDYgQEAKIG91dDoKIAlyZXR1cm4gcmV0dmFsOwogfQotCiBFWFBPUlRfU1lNQk9MKF9fZ2VuZXJpY19maWxlX2Fpb19yZWFkKTsKIAogc3NpemVfdApAQCAtMTEzNSw3ICsxMTkyLDYgQEAKIAlCVUdfT04oaW9jYi0+a2lfcG9zICE9IHBvcyk7CiAJcmV0dXJuIF9fZ2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsICZsb2NhbF9pb3YsIDEsICZpb2NiLT5raV9wb3MpOwogfQotCiBFWFBPUlRfU1lNQk9MKGdlbmVyaWNfZmlsZV9haW9fcmVhZCk7CiAKIHNzaXplX3QKQEAgLTExNTEsNyArMTIwNyw2IEBACiAJCXJldCA9IHdhaXRfb25fc3luY19raW9jYigma2lvY2IpOwogCXJldHVybiByZXQ7CiB9Ci0KIEVYUE9SVF9TWU1CT0woZ2VuZXJpY19maWxlX3JlYWQpOwogCiBpbnQgZmlsZV9zZW5kX2FjdG9yKHJlYWRfZGVzY3JpcHRvcl90ICogZGVzYywgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCkBAIC0xMTkyLDcgKzEyNDcsNiBAQAogCQlyZXR1cm4gZGVzYy53cml0dGVuOwogCXJldHVybiBkZXNjLmVycm9yOwogfQotCiBFWFBPUlRfU1lNQk9MKGdlbmVyaWNfZmlsZV9zZW5kZmlsZSk7CiAKIHN0YXRpYyBzc2l6ZV90CkBAIC0xMjI4LDExICsxMjgyLDE1IEBACiB9CiAKICNpZmRlZiBDT05GSUdfTU1VCi0vKgorc3RhdGljIGludCBGQVNUQ0FMTChwYWdlX2NhY2hlX3JlYWQoc3RydWN0IGZpbGUgKiBmaWxlLCB1bnNpZ25lZCBsb25nIG9mZnNldCkpOworLyoqCisgKiBwYWdlX2NhY2hlX3JlYWQgLSBhZGRzIHJlcXVlc3RlZCBwYWdlIHRvIHRoZSBwYWdlIGNhY2hlIGlmIG5vdCBhbHJlYWR5IHRoZXJlCisgKiBAZmlsZToJZmlsZSB0byByZWFkCisgKiBAb2Zmc2V0OglwYWdlIGluZGV4CisgKgogICogVGhpcyBhZGRzIHRoZSByZXF1ZXN0ZWQgcGFnZSB0byB0aGUgcGFnZSBjYWNoZSBpZiBpdCBpc24ndCBhbHJlYWR5IHRoZXJlLAogICogYW5kIHNjaGVkdWxlcyBhbiBJL08gdG8gcmVhZCBpbiBpdHMgY29udGVudHMgZnJvbSBkaXNrLgogICovCi1zdGF0aWMgaW50IEZBU1RDQUxMKHBhZ2VfY2FjaGVfcmVhZChzdHJ1Y3QgZmlsZSAqIGZpbGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KSk7CiBzdGF0aWMgaW50IGZhc3RjYWxsIHBhZ2VfY2FjaGVfcmVhZChzdHJ1Y3QgZmlsZSAqIGZpbGUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQogewogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlsZS0+Zl9tYXBwaW5nOwpAQCAtMTI1OSw3ICsxMzE3LDEyIEBACiAKICNkZWZpbmUgTU1BUF9MT1RTQU1JU1MgICgxMDApCiAKLS8qCisvKioKKyAqIGZpbGVtYXBfbm9wYWdlIC0gcmVhZCBpbiBmaWxlIGRhdGEgZm9yIHBhZ2UgZmF1bHQgaGFuZGxpbmcKKyAqIEBhcmVhOgl0aGUgYXBwbGljYWJsZSB2bV9hcmVhCisgKiBAYWRkcmVzczoJdGFyZ2V0IGFkZHJlc3MgdG8gcmVhZCBpbgorICogQHR5cGU6CXJldHVybmVkIHdpdGggVk1fRkFVTFRfe01JTk9SLE1BSk9SfSBpZiBub3QgJU5VTEwKKyAqCiAgKiBmaWxlbWFwX25vcGFnZSgpIGlzIGludm9rZWQgdmlhIHRoZSB2bWEgb3BlcmF0aW9ucyB2ZWN0b3IgZm9yIGEKICAqIG1hcHBlZCBtZW1vcnkgcmVnaW9uIHRvIHJlYWQgaW4gZmlsZSBkYXRhIGR1cmluZyBhIHBhZ2UgZmF1bHQuCiAgKgpAQCAtMTQ2Miw3ICsxNTI1LDYgQEAKIAlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CiAJcmV0dXJuIE5VTEw7CiB9Ci0KIEVYUE9SVF9TWU1CT0woZmlsZW1hcF9ub3BhZ2UpOwogCiBzdGF0aWMgc3RydWN0IHBhZ2UgKiBmaWxlbWFwX2dldHBhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcGdvZmYsCkBAIC0xNzE2LDcgKzE3NzgsMTMgQEAKIAlyZXR1cm4gcGFnZTsKIH0KIAotLyoKKy8qKgorICogcmVhZF9jYWNoZV9wYWdlIC0gcmVhZCBpbnRvIHBhZ2UgY2FjaGUsIGZpbGwgaXQgaWYgbmVlZGVkCisgKiBAbWFwcGluZzoJdGhlIHBhZ2UncyBhZGRyZXNzX3NwYWNlCisgKiBAaW5kZXg6CXRoZSBwYWdlIGluZGV4CisgKiBAZmlsbGVyOglmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSByZWFkCisgKiBAZGF0YToJZGVzdGluYXRpb24gZm9yIHJlYWQgZGF0YQorICoKICAqIFJlYWQgaW50byB0aGUgcGFnZSBjYWNoZS4gSWYgYSBwYWdlIGFscmVhZHkgZXhpc3RzLAogICogYW5kIFBhZ2VVcHRvZGF0ZSgpIGlzIG5vdCBzZXQsIHRyeSB0byBmaWxsIHRoZSBwYWdlLgogICovCkBAIC0xNzU0LDcgKzE4MjIsNiBAQAogIG91dDoKIAlyZXR1cm4gcGFnZTsKIH0KLQogRVhQT1JUX1NZTUJPTChyZWFkX2NhY2hlX3BhZ2UpOwogCiAvKgpAQCAtMTgzNSw3ICsxOTAyLDcgQEAKIAkJaW50IGNvcHkgPSBtaW4oYnl0ZXMsIGlvdi0+aW92X2xlbiAtIGJhc2UpOwogCiAJCWJhc2UgPSAwOwotCQlsZWZ0ID0gX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyh2YWRkciwgYnVmLCBjb3B5KTsKKwkJbGVmdCA9IF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWNfbm9jYWNoZSh2YWRkciwgYnVmLCBjb3B5KTsKIAkJY29waWVkICs9IGNvcHk7CiAJCWJ5dGVzIC09IGNvcHk7CiAJCXZhZGRyICs9IGNvcHk7CkBAIC0xODU0LDcgKzE5MjEsNyBAQAogLyoKICAqIFBlcmZvcm1zIG5lY2Vzc2FyeSBjaGVja3MgYmVmb3JlIGRvaW5nIGEgd3JpdGUKICAqCi0gKiBDYW4gYWRqdXN0IHdyaXRpbmcgcG9zaXRpb24gYW9yIGFtb3VudCBvZiBieXRlcyB0byB3cml0ZS4KKyAqIENhbiBhZGp1c3Qgd3JpdGluZyBwb3NpdGlvbiBvciBhbW91bnQgb2YgYnl0ZXMgdG8gd3JpdGUuCiAgKiBSZXR1cm5zIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgdGhhdCBjYWxsZXIgc2hvdWxkIHJldHVybiBvcgogICogemVybyBpbiBjYXNlIHRoYXQgd3JpdGUgc2hvdWxkIGJlIGFsbG93ZWQuCiAgKi8KZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuaCBiL21tL2ZpbGVtYXAuaAppbmRleCAxMzc5M2JhLi41NjgzY2RlIDEwMDY0NAotLS0gYS9tbS9maWxlbWFwLmgKKysrIGIvbW0vZmlsZW1hcC5oCkBAIC0xMyw3ICsxMyw3IEBACiAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgogI2luY2x1ZGUgPGxpbnV4L3Vpby5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgotI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogCiBzaXplX3QKIF9fZmlsZW1hcF9jb3B5X2Zyb21fdXNlcl9pb3ZlYyhjaGFyICp2YWRkciwKQEAgLTM0LDEzICszNCwxMyBAQAogCWludCBsZWZ0OwogCiAJa2FkZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7Ci0JbGVmdCA9IF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMoa2FkZHIgKyBvZmZzZXQsIGJ1ZiwgYnl0ZXMpOworCWxlZnQgPSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljX25vY2FjaGUoa2FkZHIgKyBvZmZzZXQsIGJ1ZiwgYnl0ZXMpOwogCWt1bm1hcF9hdG9taWMoa2FkZHIsIEtNX1VTRVIwKTsKIAogCWlmIChsZWZ0ICE9IDApIHsKIAkJLyogRG8gaXQgdGhlIHNsb3cgd2F5ICovCiAJCWthZGRyID0ga21hcChwYWdlKTsKLQkJbGVmdCA9IF9fY29weV9mcm9tX3VzZXIoa2FkZHIgKyBvZmZzZXQsIGJ1ZiwgYnl0ZXMpOworCQlsZWZ0ID0gX19jb3B5X2Zyb21fdXNlcl9ub2NhY2hlKGthZGRyICsgb2Zmc2V0LCBidWYsIGJ5dGVzKTsKIAkJa3VubWFwKHBhZ2UpOwogCX0KIAlyZXR1cm4gYnl0ZXMgLSBsZWZ0OwpkaWZmIC0tZ2l0IGEvbW0vZnJlbWFwLmMgYi9tbS9mcmVtYXAuYwppbmRleCA5ZjM4MWU1Li4yMWI3ZDBjIDEwMDY0NAotLS0gYS9tbS9mcmVtYXAuYworKysgYi9tbS9mcmVtYXAuYwpAQCAtODMsNiArODMsNyBAQAogCXBhZ2VfYWRkX2ZpbGVfcm1hcChwYWdlKTsKIAlwdGVfdmFsID0gKnB0ZTsKIAl1cGRhdGVfbW11X2NhY2hlKHZtYSwgYWRkciwgcHRlX3ZhbCk7CisJbGF6eV9tbXVfcHJvdF91cGRhdGUocHRlX3ZhbCk7CiAJZXJyID0gMDsKIHVubG9jazoKIAlwdGVfdW5tYXBfdW5sb2NrKHB0ZSwgcHRsKTsKQEAgLTExNCw3ICsxMTUsMTMgQEAKIAogCXNldF9wdGVfYXQobW0sIGFkZHIsIHB0ZSwgcGdvZmZfdG9fcHRlKHBnb2ZmKSk7CiAJcHRlX3ZhbCA9ICpwdGU7Ci0JdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHIsIHB0ZV92YWwpOworCS8qCisJICogV2UgZG9uJ3QgbmVlZCB0byBydW4gdXBkYXRlX21tdV9jYWNoZSgpIGhlcmUgYmVjYXVzZSB0aGUgImZpbGUgcHRlIgorCSAqIGJlaW5nIGluc3RhbGxlZCBieSBpbnN0YWxsX2ZpbGVfcHRlKCkgaXMgbm90IGEgcmVhbCBwdGUgLSBpdCdzIGEKKwkgKiBub24tcHJlc2VudCBlbnRyeSAobGlrZSBhIHN3YXAgZW50cnkpLCBub3Rpbmcgd2hhdCBmaWxlIG9mZnNldCBzaG91bGQKKwkgKiBiZSBtYXBwZWQgdGhlcmUgd2hlbiB0aGVyZSdzIGEgZmF1bHQgKGluIGEgbm9uLWxpbmVhciB2bWEgd2hlcmUKKwkgKiB0aGF0J3Mgbm90IG9idmlvdXMpLgorCSAqLwogCXB0ZV91bm1hcF91bmxvY2socHRlLCBwdGwpOwogCWVyciA9IDA7CiBvdXQ6CmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMKaW5kZXggODMyZjY3Ni4uZGY0OTk5NyAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgImludGVybmFsLmgiCiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgaHVnZXRsYl96ZXJvID0gMCwgaHVnZXRsYl9pbmZpbml0eSA9IH4wVUw7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBucl9odWdlX3BhZ2VzLCBmcmVlX2h1Z2VfcGFnZXMsIHJlc2VydmVkX2h1Z2VfcGFnZXM7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBucl9odWdlX3BhZ2VzLCBmcmVlX2h1Z2VfcGFnZXMsIHJlc3ZfaHVnZV9wYWdlczsKIHVuc2lnbmVkIGxvbmcgbWF4X2h1Z2VfcGFnZXM7CiBzdGF0aWMgc3RydWN0IGxpc3RfaGVhZCBodWdlcGFnZV9mcmVlbGlzdHNbTUFYX05VTU5PREVTXTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbnJfaHVnZV9wYWdlc19ub2RlW01BWF9OVU1OT0RFU107CkBAIC0xMjMsMzkgKzEyMywxMyBAQAogc3RhdGljIHN0cnVjdCBwYWdlICphbGxvY19odWdlX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCQkJICAgIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gdm1hLT52bV9maWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKLQlpbnQgdXNlX3Jlc2VydmUgPSAwOwotCXVuc2lnbmVkIGxvbmcgaWR4OwogCiAJc3Bpbl9sb2NrKCZodWdldGxiX2xvY2spOwotCi0JaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9NQVlTSEFSRSkgewotCi0JCS8qIGlkeCA9IHJhZGl4IHRyZWUgaW5kZXgsIGkuZS4gb2Zmc2V0IGludG8gZmlsZSBpbgotCQkgKiBIUEFHRV9TSVpFIHVuaXRzICovCi0JCWlkeCA9ICgoYWRkciAtIHZtYS0+dm1fc3RhcnQpID4+IEhQQUdFX1NISUZUKQotCQkJKyAodm1hLT52bV9wZ29mZiA+PiAoSFBBR0VfU0hJRlQgLSBQQUdFX1NISUZUKSk7Ci0KLQkJLyogVGhlIGh1Z2V0bGJmcyBzcGVjaWZpYyBpbm9kZSBpbmZvIHN0b3JlcyB0aGUgbnVtYmVyCi0JCSAqIG9mICJndWFyYW50ZWVkIGF2YWlsYWJsZSIgKGh1Z2UpIHBhZ2VzLiAgVGhhdCBpcywKLQkJICogdGhlIGZpcnN0ICdwcmVyZXNlcnZlZF9ocGFnZXMnIHBhZ2VzIG9mIHRoZSBpbm9kZQotCQkgKiBhcmUgZWl0aGVyIGFscmVhZHkgaW5zdGFudGlhdGVkLCBvciBoYXZlIGJlZW4KLQkJICogcHJlLXJlc2VydmVkIChieSBodWdldGxiX3Jlc2VydmVfZm9yX2lub2RlKCkpLiBIZXJlCi0JCSAqIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGluc3RhbnRpYXRpbmcgdGhlIHBhZ2UsIHNvCi0JCSAqIHdlIHVzZSB0aGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGRyYXcgZnJvbSB0aGUKLQkJICogcHJlLXJlc2VydmVkIHBvb2wgb3IgdGhlIHRydWx5IGZyZWUgcG9vbC4gKi8KLQkJaWYgKGlkeCA8IEhVR0VUTEJGU19JKGlub2RlKS0+cHJlcmVzZXJ2ZWRfaHBhZ2VzKQotCQkJdXNlX3Jlc2VydmUgPSAxOwotCX0KLQotCWlmICghdXNlX3Jlc2VydmUpIHsKLQkJaWYgKGZyZWVfaHVnZV9wYWdlcyA8PSByZXNlcnZlZF9odWdlX3BhZ2VzKQotCQkJZ290byBmYWlsOwotCX0gZWxzZSB7Ci0JCUJVR19PTihyZXNlcnZlZF9odWdlX3BhZ2VzID09IDApOwotCQlyZXNlcnZlZF9odWdlX3BhZ2VzLS07Ci0JfQorCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fTUFZU0hBUkUpCisJCXJlc3ZfaHVnZV9wYWdlcy0tOworCWVsc2UgaWYgKGZyZWVfaHVnZV9wYWdlcyA8PSByZXN2X2h1Z2VfcGFnZXMpCisJCWdvdG8gZmFpbDsKIAogCXBhZ2UgPSBkZXF1ZXVlX2h1Z2VfcGFnZSh2bWEsIGFkZHIpOwogCWlmICghcGFnZSkKQEAgLTE2NSw5NiArMTM5LDExIEBACiAJc2V0X3BhZ2VfcmVmY291bnRlZChwYWdlKTsKIAlyZXR1cm4gcGFnZTsKIAotIGZhaWw6Ci0JV0FSTl9PTih1c2VfcmVzZXJ2ZSk7IC8qIHJlc2VydmVkIGFsbG9jYXRpb25zIHNob3VsZG4ndCBmYWlsICovCitmYWlsOgogCXNwaW5fdW5sb2NrKCZodWdldGxiX2xvY2spOwogCXJldHVybiBOVUxMOwogfQogCi0vKiBodWdldGxiX2V4dGVuZF9yZXNlcnZhdGlvbigpCi0gKgotICogRW5zdXJlIHRoYXQgYXQgbGVhc3QgJ2F0bGVhc3QnIGh1Z2VwYWdlcyBhcmUsIGFuZCB3aWxsIHJlbWFpbiwKLSAqIGF2YWlsYWJsZSB0byBpbnN0YW50aWF0ZSB0aGUgZmlyc3QgJ2F0bGVhc3QnIHBhZ2VzIG9mIHRoZSBnaXZlbgotICogaW5vZGUuICBJZiB0aGUgaW5vZGUgZG9lc24ndCBhbHJlYWR5IGhhdmUgdGhpcyBtYW55IHBhZ2VzIHJlc2VydmVkCi0gKiBvciBpbnN0YW50aWF0ZWQsIHNldCBhc2lkZSBzb21lIGh1Z2VwYWdlcyBpbiB0aGUgcmVzZXJ2ZWQgcG9vbCB0bwotICogc2F0aXNmeSBsYXRlciBmYXVsdHMgKG9yIGZhaWwgbm93IGlmIHRoZXJlIGFyZW4ndCBlbm91Z2gsIHJhdGhlcgotICogdGhhbiBnZXR0aW5nIHRoZSBTSUdCVVMgbGF0ZXIpLgotICovCi1pbnQgaHVnZXRsYl9leHRlbmRfcmVzZXJ2YXRpb24oc3RydWN0IGh1Z2V0bGJmc19pbm9kZV9pbmZvICppbmZvLAotCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYXRsZWFzdCkKLXsKLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gJmluZm8tPnZmc19pbm9kZTsKLQl1bnNpZ25lZCBsb25nIGNoYW5nZV9pbl9yZXNlcnZlID0gMDsKLQlpbnQgcmV0ID0gMDsKLQotCXNwaW5fbG9jaygmaHVnZXRsYl9sb2NrKTsKLQlyZWFkX2xvY2tfaXJxKCZpbm9kZS0+aV9tYXBwaW5nLT50cmVlX2xvY2spOwotCi0JaWYgKGluZm8tPnByZXJlc2VydmVkX2hwYWdlcyA+PSBhdGxlYXN0KQotCQlnb3RvIG91dDsKLQotCS8qIEJlY2F1c2Ugd2UgYWx3YXlzIGNhbGwgdGhpcyBvbiBzaGFyZWQgbWFwcGluZ3MsIG5vbmUgb2YgdGhlCi0JICogcGFnZXMgYmV5b25kIGluZm8tPnByZXJlc2VydmVkX2hwYWdlcyBjYW4gaGF2ZSBiZWVuCi0JICogaW5zdGFudGlhdGVkLCBzbyB3ZSBuZWVkIHRvIHJlc2VydmUgYWxsIG9mIHRoZW0gbm93LiAqLwotCWNoYW5nZV9pbl9yZXNlcnZlID0gYXRsZWFzdCAtIGluZm8tPnByZXJlc2VydmVkX2hwYWdlczsKLQotCWlmICgocmVzZXJ2ZWRfaHVnZV9wYWdlcyArIGNoYW5nZV9pbl9yZXNlcnZlKSA+IGZyZWVfaHVnZV9wYWdlcykgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKLQl9Ci0KLQlyZXNlcnZlZF9odWdlX3BhZ2VzICs9IGNoYW5nZV9pbl9yZXNlcnZlOwotCWluZm8tPnByZXJlc2VydmVkX2hwYWdlcyA9IGF0bGVhc3Q7Ci0KLSBvdXQ6Ci0JcmVhZF91bmxvY2tfaXJxKCZpbm9kZS0+aV9tYXBwaW5nLT50cmVlX2xvY2spOwotCXNwaW5fdW5sb2NrKCZodWdldGxiX2xvY2spOwotCi0JcmV0dXJuIHJldDsKLX0KLQotLyogaHVnZXRsYl90cnVuY2F0ZV9yZXNlcnZhdGlvbigpCi0gKgotICogVGhpcyByZXR1cm5zIHBhZ2VzIHJlc2VydmVkIGZvciB0aGUgZ2l2ZW4gaW5vZGUgdG8gdGhlIGdlbmVyYWwgZnJlZQotICogaHVnZXBhZ2UgcG9vbC4gIElmIHRoZSBpbm9kZSBoYXMgYW55IHBhZ2VzIHByZXJlc2VydmVkLCBidXQgbm90Ci0gKiBpbnN0YW50aWF0ZWQsIGJleW9uZCBvZmZzZXQgKGF0bW9zdCA8PCBIUEFHRV9TSVpFKSwgdGhlbiByZWxlYXNlCi0gKiB0aGVtLgotICovCi12b2lkIGh1Z2V0bGJfdHJ1bmNhdGVfcmVzZXJ2YXRpb24oc3RydWN0IGh1Z2V0bGJmc19pbm9kZV9pbmZvICppbmZvLAotCQkJCSAgdW5zaWduZWQgbG9uZyBhdG1vc3QpCi17Ci0Jc3RydWN0IGlub2RlICppbm9kZSA9ICZpbmZvLT52ZnNfaW5vZGU7Ci0Jc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBpbm9kZS0+aV9tYXBwaW5nOwotCXVuc2lnbmVkIGxvbmcgaWR4OwotCXVuc2lnbmVkIGxvbmcgY2hhbmdlX2luX3Jlc2VydmUgPSAwOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCi0Jc3Bpbl9sb2NrKCZodWdldGxiX2xvY2spOwotCXJlYWRfbG9ja19pcnEoJmlub2RlLT5pX21hcHBpbmctPnRyZWVfbG9jayk7Ci0KLQlpZiAoaW5mby0+cHJlcmVzZXJ2ZWRfaHBhZ2VzIDw9IGF0bW9zdCkKLQkJZ290byBvdXQ7Ci0KLQkvKiBDb3VudCBwYWdlcyB3aGljaCB3ZXJlIHJlc2VydmVkLCBidXQgbm90IGluc3RhbnRpYXRlZCwgYW5kCi0JICogd2hpY2ggd2UgY2FuIG5vdyByZWxlYXNlLiAqLwotCWZvciAoaWR4ID0gYXRtb3N0OyBpZHggPCBpbmZvLT5wcmVyZXNlcnZlZF9ocGFnZXM7IGlkeCsrKSB7Ci0JCXBhZ2UgPSByYWRpeF90cmVlX2xvb2t1cCgmbWFwcGluZy0+cGFnZV90cmVlLCBpZHgpOwotCQlpZiAoIXBhZ2UpCi0JCQkvKiBQYWdlcyB3aGljaCBhcmUgYWxyZWFkeSBpbnN0YW50aWF0ZWQgY2FuJ3QKLQkJCSAqIGJlIHVucmVzZXJ2ZWQgKGFuZCBpbiBmYWN0IGhhdmUgYWxyZWFkeQotCQkJICogYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlc2VydmVkIHBvb2wpICovCi0JCQljaGFuZ2VfaW5fcmVzZXJ2ZSsrOwotCX0KLQotCUJVR19PTihyZXNlcnZlZF9odWdlX3BhZ2VzIDwgY2hhbmdlX2luX3Jlc2VydmUpOwotCXJlc2VydmVkX2h1Z2VfcGFnZXMgLT0gY2hhbmdlX2luX3Jlc2VydmU7Ci0JaW5mby0+cHJlcmVzZXJ2ZWRfaHBhZ2VzID0gYXRtb3N0OwotCi0gb3V0OgotCXJlYWRfdW5sb2NrX2lycSgmaW5vZGUtPmlfbWFwcGluZy0+dHJlZV9sb2NrKTsKLQlzcGluX3VubG9jaygmaHVnZXRsYl9sb2NrKTsKLX0KLQogc3RhdGljIGludCBfX2luaXQgaHVnZXRsYl9pbml0KHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBpOwpAQCAtMzM0LDcgKzIyMyw3IEBACiAJCXJldHVybiBucl9odWdlX3BhZ2VzOwogCiAJc3Bpbl9sb2NrKCZodWdldGxiX2xvY2spOwotCWNvdW50ID0gbWF4KGNvdW50LCByZXNlcnZlZF9odWdlX3BhZ2VzKTsKKwljb3VudCA9IG1heChjb3VudCwgcmVzdl9odWdlX3BhZ2VzKTsKIAl0cnlfdG9fZnJlZV9sb3coY291bnQpOwogCXdoaWxlIChjb3VudCA8IG5yX2h1Z2VfcGFnZXMpIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBkZXF1ZXVlX2h1Z2VfcGFnZShOVUxMLCAwKTsKQEAgLTM2MSwxMSArMjUwLDExIEBACiAJcmV0dXJuIHNwcmludGYoYnVmLAogCQkJIkh1Z2VQYWdlc19Ub3RhbDogJTVsdVxuIgogCQkJIkh1Z2VQYWdlc19GcmVlOiAgJTVsdVxuIgotCQkgICAgICAgICJIdWdlUGFnZXNfUnN2ZDogICU1bHVcbiIKKwkJCSJIdWdlUGFnZXNfUnN2ZDogICU1bHVcbiIKIAkJCSJIdWdlcGFnZXNpemU6ICAgICU1bHUga0JcbiIsCiAJCQlucl9odWdlX3BhZ2VzLAogCQkJZnJlZV9odWdlX3BhZ2VzLAotCQkgICAgICAgIHJlc2VydmVkX2h1Z2VfcGFnZXMsCisJCQlyZXN2X2h1Z2VfcGFnZXMsCiAJCQlIUEFHRV9TSVpFLzEwMjQpOwogfQogCkBAIC03NTQsMyArNjQzLDE1NiBAQAogCWZsdXNoX3RsYl9yYW5nZSh2bWEsIHN0YXJ0LCBlbmQpOwogfQogCitzdHJ1Y3QgZmlsZV9yZWdpb24geworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKKwlsb25nIGZyb207CisJbG9uZyB0bzsKK307CisKK3N0YXRpYyBsb25nIHJlZ2lvbl9hZGQoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgbG9uZyBmLCBsb25nIHQpCit7CisJc3RydWN0IGZpbGVfcmVnaW9uICpyZywgKm5yZywgKnRyZzsKKworCS8qIExvY2F0ZSB0aGUgcmVnaW9uIHdlIGFyZSBlaXRoZXIgaW4gb3IgYmVmb3JlLiAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocmcsIGhlYWQsIGxpbmspCisJCWlmIChmIDw9IHJnLT50bykKKwkJCWJyZWFrOworCisJLyogUm91bmQgb3VyIGxlZnQgZWRnZSB0byB0aGUgY3VycmVudCBzZWdtZW50IGlmIGl0IGVuY2xvc2VzIHVzLiAqLworCWlmIChmID4gcmctPmZyb20pCisJCWYgPSByZy0+ZnJvbTsKKworCS8qIENoZWNrIGZvciBhbmQgY29uc3VtZSBhbnkgcmVnaW9ucyB3ZSBub3cgb3ZlcmxhcCB3aXRoLiAqLworCW5yZyA9IHJnOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZywgdHJnLCByZy0+bGluay5wcmV2LCBsaW5rKSB7CisJCWlmICgmcmctPmxpbmsgPT0gaGVhZCkKKwkJCWJyZWFrOworCQlpZiAocmctPmZyb20gPiB0KQorCQkJYnJlYWs7CisKKwkJLyogSWYgdGhpcyBhcmVhIHJlYWNoZXMgaGlnaGVyIHRoZW4gZXh0ZW5kIG91ciBhcmVhIHRvCisJCSAqIGluY2x1ZGUgaXQgY29tcGxldGVseS4gIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBhcmVhCisJCSAqIHdoaWNoIHdlIGludGVuZCB0byByZXVzZSwgZnJlZSBpdC4gKi8KKwkJaWYgKHJnLT50byA+IHQpCisJCQl0ID0gcmctPnRvOworCQlpZiAocmcgIT0gbnJnKSB7CisJCQlsaXN0X2RlbCgmcmctPmxpbmspOworCQkJa2ZyZWUocmcpOworCQl9CisJfQorCW5yZy0+ZnJvbSA9IGY7CisJbnJnLT50byA9IHQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIHJlZ2lvbl9jaGcoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgbG9uZyBmLCBsb25nIHQpCit7CisJc3RydWN0IGZpbGVfcmVnaW9uICpyZywgKm5yZzsKKwlsb25nIGNoZyA9IDA7CisKKwkvKiBMb2NhdGUgdGhlIHJlZ2lvbiB3ZSBhcmUgYmVmb3JlIG9yIGluLiAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocmcsIGhlYWQsIGxpbmspCisJCWlmIChmIDw9IHJnLT50bykKKwkJCWJyZWFrOworCisJLyogSWYgd2UgYXJlIGJlbG93IHRoZSBjdXJyZW50IHJlZ2lvbiB0aGVuIGEgbmV3IHJlZ2lvbiBpcyByZXF1aXJlZC4KKwkgKiBTdWJ0bGUsIGFsbG9jYXRlIGEgbmV3IHJlZ2lvbiBhdCB0aGUgcG9zaXRpb24gYnV0IG1ha2UgaXQgemVybworCSAqIHNpemUgc3VjaCB0aGF0IHdlIGNhbiBndWFyZW50ZWUgdG8gcmVjb3JkIHRoZSByZXNlcnZhdGlvbi4gKi8KKwlpZiAoJnJnLT5saW5rID09IGhlYWQgfHwgdCA8IHJnLT5mcm9tKSB7CisJCW5yZyA9IGttYWxsb2Moc2l6ZW9mKCpucmcpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKG5yZyA9PSAwKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCW5yZy0+ZnJvbSA9IGY7CisJCW5yZy0+dG8gICA9IGY7CisJCUlOSVRfTElTVF9IRUFEKCZucmctPmxpbmspOworCQlsaXN0X2FkZCgmbnJnLT5saW5rLCByZy0+bGluay5wcmV2KTsKKworCQlyZXR1cm4gdCAtIGY7CisJfQorCisJLyogUm91bmQgb3VyIGxlZnQgZWRnZSB0byB0aGUgY3VycmVudCBzZWdtZW50IGlmIGl0IGVuY2xvc2VzIHVzLiAqLworCWlmIChmID4gcmctPmZyb20pCisJCWYgPSByZy0+ZnJvbTsKKwljaGcgPSB0IC0gZjsKKworCS8qIENoZWNrIGZvciBhbmQgY29uc3VtZSBhbnkgcmVnaW9ucyB3ZSBub3cgb3ZlcmxhcCB3aXRoLiAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkocmcsIHJnLT5saW5rLnByZXYsIGxpbmspIHsKKwkJaWYgKCZyZy0+bGluayA9PSBoZWFkKQorCQkJYnJlYWs7CisJCWlmIChyZy0+ZnJvbSA+IHQpCisJCQlyZXR1cm4gY2hnOworCisJCS8qIFdlIG92ZXJsYXAgd2l0aCB0aGlzIGFyZWEsIGlmIGl0IGV4dGVuZHMgZnV0aGVyIHRoYW4KKwkJICogdXMgdGhlbiB3ZSBtdXN0IGV4dGVuZCBvdXJzZWx2ZXMuICBBY2NvdW50IGZvciBpdHMKKwkJICogZXhpc3RpbmcgcmVzZXJ2YXRpb24uICovCisJCWlmIChyZy0+dG8gPiB0KSB7CisJCQljaGcgKz0gcmctPnRvIC0gdDsKKwkJCXQgPSByZy0+dG87CisJCX0KKwkJY2hnIC09IHJnLT50byAtIHJnLT5mcm9tOworCX0KKwlyZXR1cm4gY2hnOworfQorCitzdGF0aWMgbG9uZyByZWdpb25fdHJ1bmNhdGUoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgbG9uZyBlbmQpCit7CisJc3RydWN0IGZpbGVfcmVnaW9uICpyZywgKnRyZzsKKwlsb25nIGNoZyA9IDA7CisKKwkvKiBMb2NhdGUgdGhlIHJlZ2lvbiB3ZSBhcmUgZWl0aGVyIGluIG9yIGJlZm9yZS4gKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJnLCBoZWFkLCBsaW5rKQorCQlpZiAoZW5kIDw9IHJnLT50bykKKwkJCWJyZWFrOworCWlmICgmcmctPmxpbmsgPT0gaGVhZCkKKwkJcmV0dXJuIDA7CisKKwkvKiBJZiB3ZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIHJlZ2lvbiB0aGVuIGFkanVzdCBpdC4gKi8KKwlpZiAoZW5kID4gcmctPmZyb20pIHsKKwkJY2hnID0gcmctPnRvIC0gZW5kOworCQlyZy0+dG8gPSBlbmQ7CisJCXJnID0gbGlzdF9lbnRyeShyZy0+bGluay5uZXh0LCB0eXBlb2YoKnJnKSwgbGluayk7CisJfQorCisJLyogRHJvcCBhbnkgcmVtYWluaW5nIHJlZ2lvbnMuICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJnLCB0cmcsIHJnLT5saW5rLnByZXYsIGxpbmspIHsKKwkJaWYgKCZyZy0+bGluayA9PSBoZWFkKQorCQkJYnJlYWs7CisJCWNoZyArPSByZy0+dG8gLSByZy0+ZnJvbTsKKwkJbGlzdF9kZWwoJnJnLT5saW5rKTsKKwkJa2ZyZWUocmcpOworCX0KKwlyZXR1cm4gY2hnOworfQorCitzdGF0aWMgaW50IGh1Z2V0bGJfYWNjdF9tZW1vcnkobG9uZyBkZWx0YSkKK3sKKwlpbnQgcmV0ID0gLUVOT01FTTsKKworCXNwaW5fbG9jaygmaHVnZXRsYl9sb2NrKTsKKwlpZiAoKGRlbHRhICsgcmVzdl9odWdlX3BhZ2VzKSA8PSBmcmVlX2h1Z2VfcGFnZXMpIHsKKwkJcmVzdl9odWdlX3BhZ2VzICs9IGRlbHRhOworCQlyZXQgPSAwOworCX0KKwlzcGluX3VubG9jaygmaHVnZXRsYl9sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaHVnZXRsYl9yZXNlcnZlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgZnJvbSwgbG9uZyB0bykKK3sKKwlsb25nIHJldCwgY2hnOworCisJY2hnID0gcmVnaW9uX2NoZygmaW5vZGUtPmlfbWFwcGluZy0+cHJpdmF0ZV9saXN0LCBmcm9tLCB0byk7CisJaWYgKGNoZyA8IDApCisJCXJldHVybiBjaGc7CisJcmV0ID0gaHVnZXRsYl9hY2N0X21lbW9yeShjaGcpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCXJlZ2lvbl9hZGQoJmlub2RlLT5pX21hcHBpbmctPnByaXZhdGVfbGlzdCwgZnJvbSwgdG8pOworCXJldHVybiAwOworfQorCit2b2lkIGh1Z2V0bGJfdW5yZXNlcnZlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgb2Zmc2V0LCBsb25nIGZyZWVkKQoreworCWxvbmcgY2hnID0gcmVnaW9uX3RydW5jYXRlKCZpbm9kZS0+aV9tYXBwaW5nLT5wcml2YXRlX2xpc3QsIG9mZnNldCk7CisJaHVnZXRsYl9hY2N0X21lbW9yeShmcmVlZCAtIGNoZyk7Cit9CmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCmluZGV4IDBlYzdiYzYuLjI0N2I1YzMgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS5jCisrKyBiL21tL21lbW9yeS5jCkBAIC00MzQsNyArNDM0LDkgQEAKIAkvKiBwdGUgY29udGFpbnMgcG9zaXRpb24gaW4gc3dhcCBvciBmaWxlLCBzbyBjb3B5LiAqLwogCWlmICh1bmxpa2VseSghcHRlX3ByZXNlbnQocHRlKSkpIHsKIAkJaWYgKCFwdGVfZmlsZShwdGUpKSB7Ci0JCQlzd2FwX2R1cGxpY2F0ZShwdGVfdG9fc3dwX2VudHJ5KHB0ZSkpOworCQkJc3dwX2VudHJ5X3QgZW50cnkgPSBwdGVfdG9fc3dwX2VudHJ5KHB0ZSk7CisKKwkJCXN3YXBfZHVwbGljYXRlKGVudHJ5KTsKIAkJCS8qIG1ha2Ugc3VyZSBkc3RfbW0gaXMgb24gc3dhcG9mZidzIG1tbGlzdC4gKi8KIAkJCWlmICh1bmxpa2VseShsaXN0X2VtcHR5KCZkc3RfbW0tPm1tbGlzdCkpKSB7CiAJCQkJc3Bpbl9sb2NrKCZtbWxpc3RfbG9jayk7CkBAIC00NDMsNiArNDQ1LDE2IEBACiAJCQkJCQkgJnNyY19tbS0+bW1saXN0KTsKIAkJCQlzcGluX3VubG9jaygmbW1saXN0X2xvY2spOwogCQkJfQorCQkJaWYgKGlzX3dyaXRlX21pZ3JhdGlvbl9lbnRyeShlbnRyeSkgJiYKKwkJCQkJaXNfY293X21hcHBpbmcodm1fZmxhZ3MpKSB7CisJCQkJLyoKKwkJCQkgKiBDT1cgbWFwcGluZ3MgcmVxdWlyZSBwYWdlcyBpbiBib3RoIHBhcmVudAorCQkJCSAqIGFuZCBjaGlsZCB0byBiZSBzZXQgdG8gcmVhZC4KKwkJCQkgKi8KKwkJCQltYWtlX21pZ3JhdGlvbl9lbnRyeV9yZWFkKCZlbnRyeSk7CisJCQkJcHRlID0gc3dwX2VudHJ5X3RvX3B0ZShlbnRyeSk7CisJCQkJc2V0X3B0ZV9hdChzcmNfbW0sIGFkZHIsIHNyY19wdGUsIHB0ZSk7CisJCQl9CiAJCX0KIAkJZ290byBvdXRfc2V0X3B0ZTsKIAl9CkBAIC0xNDQ1LDI1ICsxNDU3LDYwIEBACiB7CiAJc3RydWN0IHBhZ2UgKm9sZF9wYWdlLCAqbmV3X3BhZ2U7CiAJcHRlX3QgZW50cnk7Ci0JaW50IHJldCA9IFZNX0ZBVUxUX01JTk9SOworCWludCByZXVzZSwgcmV0ID0gVk1fRkFVTFRfTUlOT1I7CiAKIAlvbGRfcGFnZSA9IHZtX25vcm1hbF9wYWdlKHZtYSwgYWRkcmVzcywgb3JpZ19wdGUpOwogCWlmICghb2xkX3BhZ2UpCiAJCWdvdG8gZ290dGVuOwogCi0JaWYgKFBhZ2VBbm9uKG9sZF9wYWdlKSAmJiAhVGVzdFNldFBhZ2VMb2NrZWQob2xkX3BhZ2UpKSB7Ci0JCWludCByZXVzZSA9IGNhbl9zaGFyZV9zd2FwX3BhZ2Uob2xkX3BhZ2UpOwotCQl1bmxvY2tfcGFnZShvbGRfcGFnZSk7Ci0JCWlmIChyZXVzZSkgewotCQkJZmx1c2hfY2FjaGVfcGFnZSh2bWEsIGFkZHJlc3MsIHB0ZV9wZm4ob3JpZ19wdGUpKTsKLQkJCWVudHJ5ID0gcHRlX21reW91bmcob3JpZ19wdGUpOwotCQkJZW50cnkgPSBtYXliZV9ta3dyaXRlKHB0ZV9ta2RpcnR5KGVudHJ5KSwgdm1hKTsKLQkJCXB0ZXBfc2V0X2FjY2Vzc19mbGFncyh2bWEsIGFkZHJlc3MsIHBhZ2VfdGFibGUsIGVudHJ5LCAxKTsKLQkJCXVwZGF0ZV9tbXVfY2FjaGUodm1hLCBhZGRyZXNzLCBlbnRyeSk7Ci0JCQlsYXp5X21tdV9wcm90X3VwZGF0ZShlbnRyeSk7Ci0JCQlyZXQgfD0gVk1fRkFVTFRfV1JJVEU7Ci0JCQlnb3RvIHVubG9jazsKKwlpZiAodW5saWtlbHkoKHZtYS0+dm1fZmxhZ3MgJiAoVk1fU0hBUkVEfFZNX1dSSVRFKSkgPT0KKwkJCQkoVk1fU0hBUkVEfFZNX1dSSVRFKSkpIHsKKwkJaWYgKHZtYS0+dm1fb3BzICYmIHZtYS0+dm1fb3BzLT5wYWdlX21rd3JpdGUpIHsKKwkJCS8qCisJCQkgKiBOb3RpZnkgdGhlIGFkZHJlc3Mgc3BhY2UgdGhhdCB0aGUgcGFnZSBpcyBhYm91dCB0bworCQkJICogYmVjb21lIHdyaXRhYmxlIHNvIHRoYXQgaXQgY2FuIHByb2hpYml0IHRoaXMgb3Igd2FpdAorCQkJICogZm9yIHRoZSBwYWdlIHRvIGdldCBpbnRvIGFuIGFwcHJvcHJpYXRlIHN0YXRlLgorCQkJICoKKwkJCSAqIFdlIGRvIHRoaXMgd2l0aG91dCB0aGUgbG9jayBoZWxkLCBzbyB0aGF0IGl0IGNhbgorCQkJICogc2xlZXAgaWYgaXQgbmVlZHMgdG8uCisJCQkgKi8KKwkJCXBhZ2VfY2FjaGVfZ2V0KG9sZF9wYWdlKTsKKwkJCXB0ZV91bm1hcF91bmxvY2socGFnZV90YWJsZSwgcHRsKTsKKworCQkJaWYgKHZtYS0+dm1fb3BzLT5wYWdlX21rd3JpdGUodm1hLCBvbGRfcGFnZSkgPCAwKQorCQkJCWdvdG8gdW53cml0YWJsZV9wYWdlOworCisJCQlwYWdlX2NhY2hlX3JlbGVhc2Uob2xkX3BhZ2UpOworCisJCQkvKgorCQkJICogU2luY2Ugd2UgZHJvcHBlZCB0aGUgbG9jayB3ZSBuZWVkIHRvIHJldmFsaWRhdGUKKwkJCSAqIHRoZSBQVEUgYXMgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNoYW5nZWQgaXQuICBJZgorCQkJICogdGhleSBkaWQsIHdlIGp1c3QgcmV0dXJuLCBhcyB3ZSBjYW4gY291bnQgb24gdGhlCisJCQkgKiBNTVUgdG8gdGVsbCB1cyBpZiB0aGV5IGRpZG4ndCBhbHNvIG1ha2UgaXQgd3JpdGFibGUuCisJCQkgKi8KKwkJCXBhZ2VfdGFibGUgPSBwdGVfb2Zmc2V0X21hcF9sb2NrKG1tLCBwbWQsIGFkZHJlc3MsCisJCQkJCQkJICZwdGwpOworCQkJaWYgKCFwdGVfc2FtZSgqcGFnZV90YWJsZSwgb3JpZ19wdGUpKQorCQkJCWdvdG8gdW5sb2NrOwogCQl9CisKKwkJcmV1c2UgPSAxOworCX0gZWxzZSBpZiAoUGFnZUFub24ob2xkX3BhZ2UpICYmICFUZXN0U2V0UGFnZUxvY2tlZChvbGRfcGFnZSkpIHsKKwkJcmV1c2UgPSBjYW5fc2hhcmVfc3dhcF9wYWdlKG9sZF9wYWdlKTsKKwkJdW5sb2NrX3BhZ2Uob2xkX3BhZ2UpOworCX0gZWxzZSB7CisJCXJldXNlID0gMDsKKwl9CisKKwlpZiAocmV1c2UpIHsKKwkJZmx1c2hfY2FjaGVfcGFnZSh2bWEsIGFkZHJlc3MsIHB0ZV9wZm4ob3JpZ19wdGUpKTsKKwkJZW50cnkgPSBwdGVfbWt5b3VuZyhvcmlnX3B0ZSk7CisJCWVudHJ5ID0gbWF5YmVfbWt3cml0ZShwdGVfbWtkaXJ0eShlbnRyeSksIHZtYSk7CisJCXB0ZXBfc2V0X2FjY2Vzc19mbGFncyh2bWEsIGFkZHJlc3MsIHBhZ2VfdGFibGUsIGVudHJ5LCAxKTsKKwkJdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIGVudHJ5KTsKKwkJbGF6eV9tbXVfcHJvdF91cGRhdGUoZW50cnkpOworCQlyZXQgfD0gVk1fRkFVTFRfV1JJVEU7CisJCWdvdG8gdW5sb2NrOwogCX0KIAogCS8qCkBAIC0xNTIzLDYgKzE1NzAsMTAgQEAKIAlpZiAob2xkX3BhZ2UpCiAJCXBhZ2VfY2FjaGVfcmVsZWFzZShvbGRfcGFnZSk7CiAJcmV0dXJuIFZNX0ZBVUxUX09PTTsKKwordW53cml0YWJsZV9wYWdlOgorCXBhZ2VfY2FjaGVfcmVsZWFzZShvbGRfcGFnZSk7CisJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKIH0KIAogLyoKQEAgLTE4NzksNyArMTkzMCwxMCBAQAogCQlnb3RvIG91dDsKIAogCWVudHJ5ID0gcHRlX3RvX3N3cF9lbnRyeShvcmlnX3B0ZSk7Ci1hZ2FpbjoKKwlpZiAoaXNfbWlncmF0aW9uX2VudHJ5KGVudHJ5KSkgeworCQltaWdyYXRpb25fZW50cnlfd2FpdChtbSwgcG1kLCBhZGRyZXNzKTsKKwkJZ290byBvdXQ7CisJfQogCXBhZ2UgPSBsb29rdXBfc3dhcF9jYWNoZShlbnRyeSk7CiAJaWYgKCFwYWdlKSB7CiAgCQlzd2FwaW5fcmVhZGFoZWFkKGVudHJ5LCBhZGRyZXNzLCB2bWEpOwpAQCAtMTkwMywxMiArMTk1Nyw2IEBACiAKIAltYXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7CiAJbG9ja19wYWdlKHBhZ2UpOwotCWlmICghUGFnZVN3YXBDYWNoZShwYWdlKSkgewotCQkvKiBQYWdlIG1pZ3JhdGlvbiBoYXMgb2NjdXJlZCAqLwotCQl1bmxvY2tfcGFnZShwYWdlKTsKLQkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwotCQlnb3RvIGFnYWluOwotCX0KIAogCS8qCiAJICogQmFjayBvdXQgaWYgc29tZWJvZHkgZWxzZSBhbHJlYWR5IGZhdWx0ZWQgaW4gdGhpcyBwdGUuCkBAIC0yMDc0LDE4ICsyMTIyLDMxIEBACiAJLyoKIAkgKiBTaG91bGQgd2UgZG8gYW4gZWFybHkgQy1PLVcgYnJlYWs/CiAJICovCi0JaWYgKHdyaXRlX2FjY2VzcyAmJiAhKHZtYS0+dm1fZmxhZ3MgJiBWTV9TSEFSRUQpKSB7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOworCWlmICh3cml0ZV9hY2Nlc3MpIHsKKwkJaWYgKCEodm1hLT52bV9mbGFncyAmIFZNX1NIQVJFRCkpIHsKKwkJCXN0cnVjdCBwYWdlICpwYWdlOwogCi0JCWlmICh1bmxpa2VseShhbm9uX3ZtYV9wcmVwYXJlKHZtYSkpKQotCQkJZ290byBvb207Ci0JCXBhZ2UgPSBhbGxvY19wYWdlX3ZtYShHRlBfSElHSFVTRVIsIHZtYSwgYWRkcmVzcyk7Ci0JCWlmICghcGFnZSkKLQkJCWdvdG8gb29tOwotCQljb3B5X3VzZXJfaGlnaHBhZ2UocGFnZSwgbmV3X3BhZ2UsIGFkZHJlc3MpOwotCQlwYWdlX2NhY2hlX3JlbGVhc2UobmV3X3BhZ2UpOwotCQluZXdfcGFnZSA9IHBhZ2U7Ci0JCWFub24gPSAxOworCQkJaWYgKHVubGlrZWx5KGFub25fdm1hX3ByZXBhcmUodm1hKSkpCisJCQkJZ290byBvb207CisJCQlwYWdlID0gYWxsb2NfcGFnZV92bWEoR0ZQX0hJR0hVU0VSLCB2bWEsIGFkZHJlc3MpOworCQkJaWYgKCFwYWdlKQorCQkJCWdvdG8gb29tOworCQkJY29weV91c2VyX2hpZ2hwYWdlKHBhZ2UsIG5ld19wYWdlLCBhZGRyZXNzKTsKKwkJCXBhZ2VfY2FjaGVfcmVsZWFzZShuZXdfcGFnZSk7CisJCQluZXdfcGFnZSA9IHBhZ2U7CisJCQlhbm9uID0gMTsKKworCQl9IGVsc2UgeworCQkJLyogaWYgdGhlIHBhZ2Ugd2lsbCBiZSBzaGFyZWFibGUsIHNlZSBpZiB0aGUgYmFja2luZworCQkJICogYWRkcmVzcyBzcGFjZSB3YW50cyB0byBrbm93IHRoYXQgdGhlIHBhZ2UgaXMgYWJvdXQKKwkJCSAqIHRvIGJlY29tZSB3cml0YWJsZSAqLworCQkJaWYgKHZtYS0+dm1fb3BzLT5wYWdlX21rd3JpdGUgJiYKKwkJCSAgICB2bWEtPnZtX29wcy0+cGFnZV9ta3dyaXRlKHZtYSwgbmV3X3BhZ2UpIDwgMAorCQkJICAgICkgeworCQkJCXBhZ2VfY2FjaGVfcmVsZWFzZShuZXdfcGFnZSk7CisJCQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKwkJCX0KKwkJfQogCX0KIAogCXBhZ2VfdGFibGUgPSBwdGVfb2Zmc2V0X21hcF9sb2NrKG1tLCBwbWQsIGFkZHJlc3MsICZwdGwpOwpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmMKaW5kZXggNzBkZjVjMC4uODQxYTA3NyAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5X2hvdHBsdWcuYworKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jCkBAIC0yNiw3ICsyNiw3IEBACiAKIGV4dGVybiB2b2lkIHpvbmV0YWJsZV9hZGQoc3RydWN0IHpvbmUgKnpvbmUsIGludCBuaWQsIGludCB6aWQsIHVuc2lnbmVkIGxvbmcgcGZuLAogCQkJICB1bnNpZ25lZCBsb25nIHNpemUpOwotc3RhdGljIHZvaWQgX19hZGRfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBwaHlzX3N0YXJ0X3BmbikKK3N0YXRpYyBpbnQgX19hZGRfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBwaHlzX3N0YXJ0X3BmbikKIHsKIAlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gem9uZS0+em9uZV9wZ2RhdDsKIAlpbnQgbnJfcGFnZXMgPSBQQUdFU19QRVJfU0VDVElPTjsKQEAgLTM0LDggKzM0LDE1IEBACiAJaW50IHpvbmVfdHlwZTsKIAogCXpvbmVfdHlwZSA9IHpvbmUgLSBwZ2RhdC0+bm9kZV96b25lczsKKwlpZiAoIXBvcHVsYXRlZF96b25lKHpvbmUpKSB7CisJCWludCByZXQgPSAwOworCQlyZXQgPSBpbml0X2N1cnJlbnRseV9lbXB0eV96b25lKHpvbmUsIHBoeXNfc3RhcnRfcGZuLCBucl9wYWdlcyk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CiAJbWVtbWFwX2luaXRfem9uZShucl9wYWdlcywgbmlkLCB6b25lX3R5cGUsIHBoeXNfc3RhcnRfcGZuKTsKIAl6b25ldGFibGVfYWRkKHpvbmUsIG5pZCwgem9uZV90eXBlLCBwaHlzX3N0YXJ0X3BmbiwgbnJfcGFnZXMpOworCXJldHVybiAwOwogfQogCiBleHRlcm4gaW50IHNwYXJzZV9hZGRfb25lX3NlY3Rpb24oc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLApAQCAtNTAsNyArNTcsMTEgQEAKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAotCV9fYWRkX3pvbmUoem9uZSwgcGh5c19zdGFydF9wZm4pOworCXJldCA9IF9fYWRkX3pvbmUoem9uZSwgcGh5c19zdGFydF9wZm4pOworCisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKIAlyZXR1cm4gcmVnaXN0ZXJfbmV3X21lbW9yeShfX3Bmbl90b19zZWN0aW9uKHBoeXNfc3RhcnRfcGZuKSk7CiB9CiAKQEAgLTExNiw2ICsxMjcsNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgbG9uZyBvbmxpbmVkX3BhZ2VzID0gMDsKIAlzdHJ1Y3Qgem9uZSAqem9uZTsKKwlpbnQgbmVlZF96b25lbGlzdHNfcmVidWlsZCA9IDA7CiAKIAkvKgogCSAqIFRoaXMgZG9lc24ndCBuZWVkIGEgbG9jayB0byBkbyBwZm5fdG9fcGFnZSgpLgpAQCAtMTI4LDYgKzE0MCwxNCBAQAogCWdyb3dfcGdkYXRfc3Bhbih6b25lLT56b25lX3BnZGF0LCBwZm4sIHBmbiArIG5yX3BhZ2VzKTsKIAlwZ2RhdF9yZXNpemVfdW5sb2NrKHpvbmUtPnpvbmVfcGdkYXQsICZmbGFncyk7CiAKKwkvKgorCSAqIElmIHRoaXMgem9uZSBpcyBub3QgcG9wdWxhdGVkLCB0aGVuIGl0IGlzIG5vdCBpbiB6b25lbGlzdC4KKwkgKiBUaGlzIG1lYW5zIHRoZSBwYWdlIGFsbG9jYXRvciBpZ25vcmVzIHRoaXMgem9uZS4KKwkgKiBTbywgem9uZWxpc3QgbXVzdCBiZSB1cGRhdGVkIGFmdGVyIG9ubGluZS4KKwkgKi8KKwlpZiAoIXBvcHVsYXRlZF96b25lKHpvbmUpKQorCQluZWVkX3pvbmVsaXN0c19yZWJ1aWxkID0gMTsKKwogCWZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKSB7CiAJCXN0cnVjdCBwYWdlICpwYWdlID0gcGZuX3RvX3BhZ2UocGZuICsgaSk7CiAJCW9ubGluZV9wYWdlKHBhZ2UpOwpAQCAtMTM4LDUgKzE1OCw4IEBACiAKIAlzZXR1cF9wZXJfem9uZV9wYWdlc19taW4oKTsKIAorCWlmIChuZWVkX3pvbmVsaXN0c19yZWJ1aWxkKQorCQlidWlsZF9hbGxfem9uZWxpc3RzKCk7CisJdm1fdG90YWxfcGFnZXMgPSBucl9mcmVlX3BhZ2VjYWNoZV9wYWdlcygpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbW0vbWVtcG9saWN5LmMgYi9tbS9tZW1wb2xpY3kuYwppbmRleCA4Nzc4ZjU4Li5lYzRhMWE5IDEwMDY0NAotLS0gYS9tbS9tZW1wb2xpY3kuYworKysgYi9tbS9tZW1wb2xpY3kuYwpAQCAtODcsNiArODcsOCBAQAogI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgogI2luY2x1ZGUgPGxpbnV4L21pZ3JhdGUuaD4KKyNpbmNsdWRlIDxsaW51eC9ybWFwLmg+CisjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4KIAogI2luY2x1ZGUgPGFzbS90bGJmbHVzaC5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CkBAIC01ODcsNiArNTg5LDExIEBACiAJCWlzb2xhdGVfbHJ1X3BhZ2UocGFnZSwgcGFnZWxpc3QpOwogfQogCitzdGF0aWMgc3RydWN0IHBhZ2UgKm5ld19ub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgbm9kZSwgaW50ICoqeCkKK3sKKwlyZXR1cm4gYWxsb2NfcGFnZXNfbm9kZShub2RlLCBHRlBfSElHSFVTRVIsIDApOworfQorCiAvKgogICogTWlncmF0ZSBwYWdlcyBmcm9tIG9uZSBub2RlIHRvIGEgdGFyZ2V0IG5vZGUuCiAgKiBSZXR1cm5zIGVycm9yIG9yIHRoZSBudW1iZXIgb2YgcGFnZXMgbm90IG1pZ3JhdGVkLgpAQCAtNjAzLDExICs2MTAsOSBAQAogCWNoZWNrX3JhbmdlKG1tLCBtbS0+bW1hcC0+dm1fc3RhcnQsIFRBU0tfU0laRSwgJm5tYXNrLAogCQkJZmxhZ3MgfCBNUE9MX01GX0RJU0NPTlRJR19PSywgJnBhZ2VsaXN0KTsKIAotCWlmICghbGlzdF9lbXB0eSgmcGFnZWxpc3QpKSB7Ci0JCWVyciA9IG1pZ3JhdGVfcGFnZXNfdG8oJnBhZ2VsaXN0LCBOVUxMLCBkZXN0KTsKLQkJaWYgKCFsaXN0X2VtcHR5KCZwYWdlbGlzdCkpCi0JCQlwdXRiYWNrX2xydV9wYWdlcygmcGFnZWxpc3QpOwotCX0KKwlpZiAoIWxpc3RfZW1wdHkoJnBhZ2VsaXN0KSkKKwkJZXJyID0gbWlncmF0ZV9wYWdlcygmcGFnZWxpc3QsIG5ld19ub2RlX3BhZ2UsIGRlc3QpOworCiAJcmV0dXJuIGVycjsKIH0KIApAQCAtNjk0LDYgKzY5OSwxMiBAQAogCiB9CiAKK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqbmV3X3ZtYV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHByaXZhdGUsIGludCAqKngpCit7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICopcHJpdmF0ZTsKKworCXJldHVybiBhbGxvY19wYWdlX3ZtYShHRlBfSElHSFVTRVIsIHZtYSwgcGFnZV9hZGRyZXNzX2luX3ZtYShwYWdlLCB2bWEpKTsKK30KICNlbHNlCiAKIHN0YXRpYyB2b2lkIG1pZ3JhdGVfcGFnZV9hZGQoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0LApAQCAtNzA2LDYgKzcxNywxMSBAQAogewogCXJldHVybiAtRU5PU1lTOwogfQorCitzdGF0aWMgc3RydWN0IHBhZ2UgKm5ld192bWFfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBwcml2YXRlKQoreworCXJldHVybiBOVUxMOworfQogI2VuZGlmCiAKIGxvbmcgZG9fbWJpbmQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sCkBAIC03NjcsMTUgKzc4MywxMyBAQAogCQllcnIgPSBtYmluZF9yYW5nZSh2bWEsIHN0YXJ0LCBlbmQsIG5ldyk7CiAKIAkJaWYgKCFsaXN0X2VtcHR5KCZwYWdlbGlzdCkpCi0JCQlucl9mYWlsZWQgPSBtaWdyYXRlX3BhZ2VzX3RvKCZwYWdlbGlzdCwgdm1hLCAtMSk7CisJCQlucl9mYWlsZWQgPSBtaWdyYXRlX3BhZ2VzKCZwYWdlbGlzdCwgbmV3X3ZtYV9wYWdlLAorCQkJCQkJKHVuc2lnbmVkIGxvbmcpdm1hKTsKIAogCQlpZiAoIWVyciAmJiBucl9mYWlsZWQgJiYgKGZsYWdzICYgTVBPTF9NRl9TVFJJQ1QpKQogCQkJZXJyID0gLUVJTzsKIAl9CiAKLQlpZiAoIWxpc3RfZW1wdHkoJnBhZ2VsaXN0KSkKLQkJcHV0YmFja19scnVfcGFnZXMoJnBhZ2VsaXN0KTsKLQogCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwogCW1wb2xfZnJlZShuZXcpOwogCXJldHVybiBlcnI7CkBAIC05MjksNiArOTQzLDEwIEBACiAJCWdvdG8gb3V0OwogCX0KIAorCWVyciA9IHNlY3VyaXR5X3Rhc2tfbW92ZW1lbW9yeSh0YXNrKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKwogCWVyciA9IGRvX21pZ3JhdGVfcGFnZXMobW0sICZvbGQsICZuZXcsCiAJCWNhcGFibGUoQ0FQX1NZU19OSUNFKSA/IE1QT0xfTUZfTU9WRV9BTEwgOiBNUE9MX01GX01PVkUpOwogb3V0OgpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IDFjMjUwNDAuLjFjMmE3MWFhIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKKysrIGIvbW0vbWlncmF0ZS5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgvbWlncmF0ZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3N3YXAuaD4KKyNpbmNsdWRlIDxsaW51eC9zd2Fwb3BzLmg+CiAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2J1ZmZlcl9oZWFkLmg+CiAjaW5jbHVkZSA8bGludXgvbW1faW5saW5lLmg+CkBAIC0yMywxMyArMjQsMTMgQEAKICNpbmNsdWRlIDxsaW51eC90b3BvbG9neS5oPgogI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgogI2luY2x1ZGUgPGxpbnV4L2NwdXNldC5oPgotI2luY2x1ZGUgPGxpbnV4L3N3YXBvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC93cml0ZWJhY2suaD4KKyNpbmNsdWRlIDxsaW51eC9tZW1wb2xpY3kuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4KIAogI2luY2x1ZGUgImludGVybmFsLmgiCiAKLS8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0byB0YWtlIG9mZiB0aGUgTFJVIGZvciBtaWdyYXRpb24gKi8KLSNkZWZpbmUgTUlHUkFURV9DSFVOS19TSVpFIDI1NgotCiAjZGVmaW5lIGxydV90b19wYWdlKF9oZWFkKSAobGlzdF9lbnRyeSgoX2hlYWQpLT5wcmV2LCBzdHJ1Y3QgcGFnZSwgbHJ1KSkKIAogLyoKQEAgLTY0LDE2ICs2NSwxMSBAQAogfQogCiAvKgotICogbWlncmF0ZV9wcmVwKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGFmdGVyIHdlIGhhdmUgY29tcGlsZWQgdGhlIGxpc3Qgb2YgcGFnZXMKLSAqIHRvIGJlIG1pZ3JhdGVkIHVzaW5nIGlzb2xhdGVfbHJ1X3BhZ2UoKSBidXQgYmVmb3JlIHdlIGJlZ2luIGEgc2VyaWVzIG9mIGNhbGxzCi0gKiB0byBtaWdyYXRlX3BhZ2VzKCkuCisgKiBtaWdyYXRlX3ByZXAoKSBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIHdlIHN0YXJ0IGNvbXBpbGluZyBhIGxpc3Qgb2YgcGFnZXMKKyAqIHRvIGJlIG1pZ3JhdGVkIHVzaW5nIGlzb2xhdGVfbHJ1X3BhZ2UoKS4KICAqLwogaW50IG1pZ3JhdGVfcHJlcCh2b2lkKQogewotCS8qIE11c3QgaGF2ZSBzd2FwIGRldmljZSBmb3IgbWlncmF0aW9uICovCi0JaWYgKG5yX3N3YXBfcGFnZXMgPD0gMCkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KIAkvKgogCSAqIENsZWFyIHRoZSBMUlUgbGlzdHMgc28gcGFnZXMgY2FuIGJlIGlzb2xhdGVkLgogCSAqIE5vdGUgdGhhdCBwYWdlcyBtYXkgYmUgbW92ZWQgb2ZmIHRoZSBMUlUgYWZ0ZXIgd2UgaGF2ZQpAQCAtODcsNyArODMsNiBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgbW92ZV90b19scnUoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7Ci0JbGlzdF9kZWwoJnBhZ2UtPmxydSk7CiAJaWYgKFBhZ2VBY3RpdmUocGFnZSkpIHsKIAkJLyoKIAkJICogbHJ1X2NhY2hlX2FkZF9hY3RpdmUgY2hlY2tzIHRoYXQKQEAgLTExMywxMTMgKzEwOCwyMDAgQEAKIAlpbnQgY291bnQgPSAwOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBhZ2UsIHBhZ2UyLCBsLCBscnUpIHsKKwkJbGlzdF9kZWwoJnBhZ2UtPmxydSk7CiAJCW1vdmVfdG9fbHJ1KHBhZ2UpOwogCQljb3VudCsrOwogCX0KIAlyZXR1cm4gY291bnQ7CiB9CiAKLS8qCi0gKiBOb24gbWlncmF0YWJsZSBwYWdlCi0gKi8KLWludCBmYWlsX21pZ3JhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCitzdGF0aWMgaW5saW5lIGludCBpc19zd2FwX3B0ZShwdGVfdCBwdGUpCiB7Ci0JcmV0dXJuIC1FSU87Ci19Ci1FWFBPUlRfU1lNQk9MKGZhaWxfbWlncmF0ZV9wYWdlKTsKLQotLyoKLSAqIHN3YXBvdXQgYSBzaW5nbGUgcGFnZQotICogcGFnZSBpcyBsb2NrZWQgdXBvbiBlbnRyeSwgdW5sb2NrZWQgb24gZXhpdAotICovCi1zdGF0aWMgaW50IHN3YXBfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKLXsKLQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHBhZ2VfbWFwcGluZyhwYWdlKTsKLQotCWlmIChwYWdlX21hcHBlZChwYWdlKSAmJiBtYXBwaW5nKQotCQlpZiAodHJ5X3RvX3VubWFwKHBhZ2UsIDEpICE9IFNXQVBfU1VDQ0VTUykKLQkJCWdvdG8gdW5sb2NrX3JldHJ5OwotCi0JaWYgKFBhZ2VEaXJ0eShwYWdlKSkgewotCQkvKiBQYWdlIGlzIGRpcnR5LCB0cnkgdG8gd3JpdGUgaXQgb3V0IGhlcmUgKi8KLQkJc3dpdGNoKHBhZ2VvdXQocGFnZSwgbWFwcGluZykpIHsKLQkJY2FzZSBQQUdFX0tFRVA6Ci0JCWNhc2UgUEFHRV9BQ1RJVkFURToKLQkJCWdvdG8gdW5sb2NrX3JldHJ5OwotCi0JCWNhc2UgUEFHRV9TVUNDRVNTOgotCQkJZ290byByZXRyeTsKLQotCQljYXNlIFBBR0VfQ0xFQU46Ci0JCQk7IC8qIHRyeSB0byBmcmVlIHRoZSBwYWdlIGJlbG93ICovCi0JCX0KLQl9Ci0KLQlpZiAoUGFnZVByaXZhdGUocGFnZSkpIHsKLQkJaWYgKCF0cnlfdG9fcmVsZWFzZV9wYWdlKHBhZ2UsIEdGUF9LRVJORUwpIHx8Ci0JCSAgICAoIW1hcHBpbmcgJiYgcGFnZV9jb3VudChwYWdlKSA9PSAxKSkKLQkJCWdvdG8gdW5sb2NrX3JldHJ5OwotCX0KLQotCWlmIChyZW1vdmVfbWFwcGluZyhtYXBwaW5nLCBwYWdlKSkgewotCQkvKiBTdWNjZXNzICovCi0JCXVubG9ja19wYWdlKHBhZ2UpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLXVubG9ja19yZXRyeToKLQl1bmxvY2tfcGFnZShwYWdlKTsKLQotcmV0cnk6Ci0JcmV0dXJuIC1FQUdBSU47CisJcmV0dXJuICFwdGVfbm9uZShwdGUpICYmICFwdGVfcHJlc2VudChwdGUpICYmICFwdGVfZmlsZShwdGUpOwogfQogCiAvKgotICogUmVtb3ZlIHJlZmVyZW5jZXMgZm9yIGEgcGFnZSBhbmQgZXN0YWJsaXNoIHRoZSBuZXcgcGFnZSB3aXRoIHRoZSBjb3JyZWN0Ci0gKiBiYXNpYyBzZXR0aW5ncyB0byBiZSBhYmxlIHRvIHN0b3AgYWNjZXNzZXMgdG8gdGhlIHBhZ2UuCisgKiBSZXN0b3JlIGEgcG90ZW50aWFsIG1pZ3JhdGlvbiBwdGUgdG8gYSB3b3JraW5nIHB0ZSBlbnRyeQogICovCi1pbnQgbWlncmF0ZV9wYWdlX3JlbW92ZV9yZWZlcmVuY2VzKHN0cnVjdCBwYWdlICpuZXdwYWdlLAotCQkJCXN0cnVjdCBwYWdlICpwYWdlLCBpbnQgbnJfcmVmcykKK3N0YXRpYyB2b2lkIHJlbW92ZV9taWdyYXRpb25fcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQlzdHJ1Y3QgcGFnZSAqb2xkLCBzdHJ1Y3QgcGFnZSAqbmV3KQogewotCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZV9tYXBwaW5nKHBhZ2UpOworCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKKwlzd3BfZW50cnlfdCBlbnRyeTsKKyAJcGdkX3QgKnBnZDsKKyAJcHVkX3QgKnB1ZDsKKyAJcG1kX3QgKnBtZDsKKwlwdGVfdCAqcHRlcCwgcHRlOworIAlzcGlubG9ja190ICpwdGw7CisJdW5zaWduZWQgbG9uZyBhZGRyID0gcGFnZV9hZGRyZXNzX2luX3ZtYShuZXcsIHZtYSk7CisKKwlpZiAoYWRkciA9PSAtRUZBVUxUKQorCQlyZXR1cm47CisKKyAJcGdkID0gcGdkX29mZnNldChtbSwgYWRkcik7CisJaWYgKCFwZ2RfcHJlc2VudCgqcGdkKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKwlwdWQgPSBwdWRfb2Zmc2V0KHBnZCwgYWRkcik7CisJaWYgKCFwdWRfcHJlc2VudCgqcHVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKwlwbWQgPSBwbWRfb2Zmc2V0KHB1ZCwgYWRkcik7CisJaWYgKCFwbWRfcHJlc2VudCgqcG1kKSkKKwkJcmV0dXJuOworCisJcHRlcCA9IHB0ZV9vZmZzZXRfbWFwKHBtZCwgYWRkcik7CisKKwlpZiAoIWlzX3N3YXBfcHRlKCpwdGVwKSkgeworCQlwdGVfdW5tYXAocHRlcCk7CisgCQlyZXR1cm47CisgCX0KKworIAlwdGwgPSBwdGVfbG9ja3B0cihtbSwgcG1kKTsKKyAJc3Bpbl9sb2NrKHB0bCk7CisJcHRlID0gKnB0ZXA7CisJaWYgKCFpc19zd2FwX3B0ZShwdGUpKQorCQlnb3RvIG91dDsKKworCWVudHJ5ID0gcHRlX3RvX3N3cF9lbnRyeShwdGUpOworCisJaWYgKCFpc19taWdyYXRpb25fZW50cnkoZW50cnkpIHx8IG1pZ3JhdGlvbl9lbnRyeV90b19wYWdlKGVudHJ5KSAhPSBvbGQpCisJCWdvdG8gb3V0OworCisJZ2V0X3BhZ2UobmV3KTsKKwlwdGUgPSBwdGVfbWtvbGQobWtfcHRlKG5ldywgdm1hLT52bV9wYWdlX3Byb3QpKTsKKwlpZiAoaXNfd3JpdGVfbWlncmF0aW9uX2VudHJ5KGVudHJ5KSkKKwkJcHRlID0gcHRlX21rd3JpdGUocHRlKTsKKwlzZXRfcHRlX2F0KG1tLCBhZGRyLCBwdGVwLCBwdGUpOworCisJaWYgKFBhZ2VBbm9uKG5ldykpCisJCXBhZ2VfYWRkX2Fub25fcm1hcChuZXcsIHZtYSwgYWRkcik7CisJZWxzZQorCQlwYWdlX2FkZF9maWxlX3JtYXAobmV3KTsKKworCS8qIE5vIG5lZWQgdG8gaW52YWxpZGF0ZSAtIGl0IHdhcyBub24tcHJlc2VudCBiZWZvcmUgKi8KKwl1cGRhdGVfbW11X2NhY2hlKHZtYSwgYWRkciwgcHRlKTsKKwlsYXp5X21tdV9wcm90X3VwZGF0ZShwdGUpOworCitvdXQ6CisJcHRlX3VubWFwX3VubG9jayhwdGVwLCBwdGwpOworfQorCisvKgorICogTm90ZSB0aGF0IHJlbW92ZV9maWxlX21pZ3JhdGlvbl9wdGVzIHdpbGwgb25seSB3b3JrIG9uIHJlZ3VsYXIgbWFwcGluZ3MsCisgKiBOb25saW5lYXIgbWFwcGluZ3MgZG8gbm90IHVzZSBtaWdyYXRpb24gZW50cmllcy4KKyAqLworc3RhdGljIHZvaWQgcmVtb3ZlX2ZpbGVfbWlncmF0aW9uX3B0ZXMoc3RydWN0IHBhZ2UgKm9sZCwgc3RydWN0IHBhZ2UgKm5ldykKK3sKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHBhZ2VfbWFwcGluZyhuZXcpOworCXN0cnVjdCBwcmlvX3RyZWVfaXRlciBpdGVyOworCXBnb2ZmX3QgcGdvZmYgPSBuZXctPmluZGV4IDw8IChQQUdFX0NBQ0hFX1NISUZUIC0gUEFHRV9TSElGVCk7CisKKwlpZiAoIW1hcHBpbmcpCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmbWFwcGluZy0+aV9tbWFwX2xvY2spOworCisJdm1hX3ByaW9fdHJlZV9mb3JlYWNoKHZtYSwgJml0ZXIsICZtYXBwaW5nLT5pX21tYXAsIHBnb2ZmLCBwZ29mZikKKwkJcmVtb3ZlX21pZ3JhdGlvbl9wdGUodm1hLCBvbGQsIG5ldyk7CisKKwlzcGluX3VubG9jaygmbWFwcGluZy0+aV9tbWFwX2xvY2spOworfQorCisvKgorICogTXVzdCBob2xkIG1tYXBfc2VtIGxvY2sgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSB2bWFzIGNvbnRhaW5pbmcKKyAqIHRoZSBwYWdlIHNvIHRoYXQgdGhlIGFub25fdm1hIGNhbm5vdCB2YW5pc2guCisgKi8KK3N0YXRpYyB2b2lkIHJlbW92ZV9hbm9uX21pZ3JhdGlvbl9wdGVzKHN0cnVjdCBwYWdlICpvbGQsIHN0cnVjdCBwYWdlICpuZXcpCit7CisJc3RydWN0IGFub25fdm1hICphbm9uX3ZtYTsKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKwl1bnNpZ25lZCBsb25nIG1hcHBpbmc7CisKKwltYXBwaW5nID0gKHVuc2lnbmVkIGxvbmcpbmV3LT5tYXBwaW5nOworCisJaWYgKCFtYXBwaW5nIHx8IChtYXBwaW5nICYgUEFHRV9NQVBQSU5HX0FOT04pID09IDApCisJCXJldHVybjsKKworCS8qCisJICogV2UgaG9sZCB0aGUgbW1hcF9zZW0gbG9jay4gU28gbm8gbmVlZCB0byBjYWxsIHBhZ2VfbG9ja19hbm9uX3ZtYS4KKwkgKi8KKwlhbm9uX3ZtYSA9IChzdHJ1Y3QgYW5vbl92bWEgKikgKG1hcHBpbmcgLSBQQUdFX01BUFBJTkdfQU5PTik7CisJc3Bpbl9sb2NrKCZhbm9uX3ZtYS0+bG9jayk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJmFub25fdm1hLT5oZWFkLCBhbm9uX3ZtYV9ub2RlKQorCQlyZW1vdmVfbWlncmF0aW9uX3B0ZSh2bWEsIG9sZCwgbmV3KTsKKworCXNwaW5fdW5sb2NrKCZhbm9uX3ZtYS0+bG9jayk7Cit9CisKKy8qCisgKiBHZXQgcmlkIG9mIGFsbCBtaWdyYXRpb24gZW50cmllcyBhbmQgcmVwbGFjZSB0aGVtIGJ5CisgKiByZWZlcmVuY2VzIHRvIHRoZSBpbmRpY2F0ZWQgcGFnZS4KKyAqLworc3RhdGljIHZvaWQgcmVtb3ZlX21pZ3JhdGlvbl9wdGVzKHN0cnVjdCBwYWdlICpvbGQsIHN0cnVjdCBwYWdlICpuZXcpCit7CisJaWYgKFBhZ2VBbm9uKG5ldykpCisJCXJlbW92ZV9hbm9uX21pZ3JhdGlvbl9wdGVzKG9sZCwgbmV3KTsKKwllbHNlCisJCXJlbW92ZV9maWxlX21pZ3JhdGlvbl9wdGVzKG9sZCwgbmV3KTsKK30KKworLyoKKyAqIFNvbWV0aGluZyB1c2VkIHRoZSBwdGUgb2YgYSBwYWdlIHVuZGVyIG1pZ3JhdGlvbi4gV2UgbmVlZCB0bworICogZ2V0IHRvIHRoZSBwYWdlIGFuZCB3YWl0IHVudGlsIG1pZ3JhdGlvbiBpcyBmaW5pc2hlZC4KKyAqIFdoZW4gd2UgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiB0aGUgZmF1bHQgd2lsbCBiZSByZXRyaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gZG9fc3dhcF9wYWdlKCkuCisgKi8KK3ZvaWQgbWlncmF0aW9uX2VudHJ5X3dhaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsCisJCQkJdW5zaWduZWQgbG9uZyBhZGRyZXNzKQoreworCXB0ZV90ICpwdGVwLCBwdGU7CisJc3BpbmxvY2tfdCAqcHRsOworCXN3cF9lbnRyeV90IGVudHJ5OworCXN0cnVjdCBwYWdlICpwYWdlOworCisJcHRlcCA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sobW0sIHBtZCwgYWRkcmVzcywgJnB0bCk7CisJcHRlID0gKnB0ZXA7CisJaWYgKCFpc19zd2FwX3B0ZShwdGUpKQorCQlnb3RvIG91dDsKKworCWVudHJ5ID0gcHRlX3RvX3N3cF9lbnRyeShwdGUpOworCWlmICghaXNfbWlncmF0aW9uX2VudHJ5KGVudHJ5KSkKKwkJZ290byBvdXQ7CisKKwlwYWdlID0gbWlncmF0aW9uX2VudHJ5X3RvX3BhZ2UoZW50cnkpOworCisJZ2V0X3BhZ2UocGFnZSk7CisJcHRlX3VubWFwX3VubG9jayhwdGVwLCBwdGwpOworCXdhaXRfb25fcGFnZV9sb2NrZWQocGFnZSk7CisJcHV0X3BhZ2UocGFnZSk7CisJcmV0dXJuOworb3V0OgorCXB0ZV91bm1hcF91bmxvY2socHRlcCwgcHRsKTsKK30KKworLyoKKyAqIFJlcGxhY2UgdGhlIHBhZ2UgaW4gdGhlIG1hcHBpbmcuCisgKgorICogVGhlIG51bWJlciBvZiByZW1haW5pbmcgcmVmZXJlbmNlcyBtdXN0IGJlOgorICogMSBmb3IgYW5vbnltb3VzIHBhZ2VzIHdpdGhvdXQgYSBtYXBwaW5nCisgKiAyIGZvciBwYWdlcyB3aXRoIGEgbWFwcGluZworICogMyBmb3IgcGFnZXMgd2l0aCBhIG1hcHBpbmcgYW5kIFBhZ2VQcml2YXRlIHNldC4KKyAqLworc3RhdGljIGludCBtaWdyYXRlX3BhZ2VfbW92ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAorCQlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7CiAJc3RydWN0IHBhZ2UgKipyYWRpeF9wb2ludGVyOwogCi0JLyoKLQkgKiBBdm9pZCBkb2luZyBhbnkgb2YgdGhlIGZvbGxvd2luZyB3b3JrIGlmIHRoZSBwYWdlIGNvdW50Ci0JICogaW5kaWNhdGVzIHRoYXQgdGhlIHBhZ2UgaXMgaW4gdXNlIG9yIHRydW5jYXRlIGhhcyByZW1vdmVkCi0JICogdGhlIHBhZ2UuCi0JICovCi0JaWYgKCFtYXBwaW5nIHx8IHBhZ2VfbWFwY291bnQocGFnZSkgKyBucl9yZWZzICE9IHBhZ2VfY291bnQocGFnZSkpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JLyoKLQkgKiBFc3RhYmxpc2ggc3dhcCBwdGVzIGZvciBhbm9ueW1vdXMgcGFnZXMgb3IgZGVzdHJveSBwdGUKLQkgKiBtYXBzIGZvciBmaWxlcy4KLQkgKgotCSAqIEluIG9yZGVyIHRvIHJlZXN0YWJsaXNoIGZpbGUgYmFja2VkIG1hcHBpbmdzIHRoZSBmYXVsdCBoYW5kbGVycwotCSAqIHdpbGwgdGFrZSB0aGUgcmFkaXggdHJlZV9sb2NrIHdoaWNoIG1heSB0aGVuIGJlIHVzZWQgdG8gc3RvcAotICAJICogcHJvY2Vzc3NlcyBmcm9tIGFjY2Vzc2luZyB0aGlzIHBhZ2UgdW50aWwgdGhlIG5ldyBwYWdlIGlzIHJlYWR5LgotCSAqCi0JICogQSBwcm9jZXNzIGFjY2Vzc2luZyB2aWEgYSBzd2FwIHB0ZSAoYW4gYW5vbnltb3VzIHBhZ2UpIHdpbGwgdGFrZSBhCi0JICogcGFnZV9sb2NrIG9uIHRoZSBvbGQgcGFnZSB3aGljaCB3aWxsIGJsb2NrIHRoZSBwcm9jZXNzIHVudGlsIHRoZQotCSAqIG1pZ3JhdGlvbiBhdHRlbXB0IGlzIGNvbXBsZXRlLiBBdCB0aGF0IHRpbWUgdGhlIFBhZ2VTd2FwQ2FjaGUgYml0Ci0JICogd2lsbCBiZSBleGFtaW5lZC4gSWYgdGhlIHBhZ2Ugd2FzIG1pZ3JhdGVkIHRoZW4gdGhlIFBhZ2VTd2FwQ2FjaGUKLQkgKiBiaXQgd2lsbCBiZSBjbGVhciBhbmQgdGhlIG9wZXJhdGlvbiB0byByZXRyaWV2ZSB0aGUgcGFnZSB3aWxsIGJlCi0JICogcmV0cmllZCB3aGljaCB3aWxsIGZpbmQgdGhlIG5ldyBwYWdlIGluIHRoZSByYWRpeCB0cmVlLiBUaGVuIGEgbmV3Ci0JICogZGlyZWN0IG1hcHBpbmcgbWF5IGJlIGdlbmVyYXRlZCBiYXNlZCBvbiB0aGUgcmFkaXggdHJlZSBjb250ZW50cy4KLQkgKgotCSAqIElmIHRoZSBwYWdlIHdhcyBub3QgbWlncmF0ZWQgdGhlbiB0aGUgUGFnZVN3YXBDYWNoZSBiaXQKLQkgKiBpcyBzdGlsbCBzZXQgYW5kIHRoZSBvcGVyYXRpb24gbWF5IGNvbnRpbnVlLgotCSAqLwotCWlmICh0cnlfdG9fdW5tYXAocGFnZSwgMSkgPT0gU1dBUF9GQUlMKQotCQkvKiBBIHZtYSBoYXMgVk1fTE9DS0VEIHNldCAtPiBwZXJtYW5lbnQgZmFpbHVyZSAqLwotCQlyZXR1cm4gLUVQRVJNOwotCi0JLyoKLQkgKiBHaXZlIHVwIGlmIHdlIHdlcmUgdW5hYmxlIHRvIHJlbW92ZSBhbGwgbWFwcGluZ3MuCi0JICovCi0JaWYgKHBhZ2VfbWFwY291bnQocGFnZSkpCi0JCXJldHVybiAtRUFHQUlOOworCWlmICghbWFwcGluZykgeworCQkvKiBBbm9ueW1vdXMgcGFnZSAqLworCQlpZiAocGFnZV9jb3VudChwYWdlKSAhPSAxKQorCQkJcmV0dXJuIC1FQUdBSU47CisJCXJldHVybiAwOworCX0KIAogCXdyaXRlX2xvY2tfaXJxKCZtYXBwaW5nLT50cmVlX2xvY2spOwogCkBAIC0yMjcsNyArMzA5LDcgQEAKIAkJCQkJCSZtYXBwaW5nLT5wYWdlX3RyZWUsCiAJCQkJCQlwYWdlX2luZGV4KHBhZ2UpKTsKIAotCWlmICghcGFnZV9tYXBwaW5nKHBhZ2UpIHx8IHBhZ2VfY291bnQocGFnZSkgIT0gbnJfcmVmcyB8fAorCWlmIChwYWdlX2NvdW50KHBhZ2UpICE9IDIgKyAhIVBhZ2VQcml2YXRlKHBhZ2UpIHx8CiAJCQkqcmFkaXhfcG9pbnRlciAhPSBwYWdlKSB7CiAJCXdyaXRlX3VubG9ja19pcnEoJm1hcHBpbmctPnRyZWVfbG9jayk7CiAJCXJldHVybiAtRUFHQUlOOwpAQCAtMjM1LDE5ICszMTcsMTQgQEAKIAogCS8qCiAJICogTm93IHdlIGtub3cgdGhhdCBubyBvbmUgZWxzZSBpcyBsb29raW5nIGF0IHRoZSBwYWdlLgotCSAqCi0JICogQ2VydGFpbiBtaW5pbWFsIGluZm9ybWF0aW9uIGFib3V0IGEgcGFnZSBtdXN0IGJlIGF2YWlsYWJsZQotCSAqIGluIG9yZGVyIGZvciBvdGhlciBzdWJzeXN0ZW1zIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgcGFnZSBpZiB0aGV5Ci0JICogZmluZCBpdCB0aHJvdWdoIHRoZSByYWRpeCB0cmVlIHVwZGF0ZSBiZWZvcmUgd2UgYXJlIGZpbmlzaGVkCi0JICogY29weWluZyB0aGUgcGFnZS4KIAkgKi8KIAlnZXRfcGFnZShuZXdwYWdlKTsKLQluZXdwYWdlLT5pbmRleCA9IHBhZ2UtPmluZGV4OwotCW5ld3BhZ2UtPm1hcHBpbmcgPSBwYWdlLT5tYXBwaW5nOworI2lmZGVmIENPTkZJR19TV0FQCiAJaWYgKFBhZ2VTd2FwQ2FjaGUocGFnZSkpIHsKIAkJU2V0UGFnZVN3YXBDYWNoZShuZXdwYWdlKTsKIAkJc2V0X3BhZ2VfcHJpdmF0ZShuZXdwYWdlLCBwYWdlX3ByaXZhdGUocGFnZSkpOwogCX0KKyNlbmRpZgogCiAJKnJhZGl4X3BvaW50ZXIgPSBuZXdwYWdlOwogCV9fcHV0X3BhZ2UocGFnZSk7CkBAIC0yNTUsMTIgKzMzMiwxMSBAQAogCiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfcGFnZV9yZW1vdmVfcmVmZXJlbmNlcyk7CiAKIC8qCiAgKiBDb3B5IHRoZSBwYWdlIHRvIGl0cyBuZXcgbG9jYXRpb24KICAqLwotdm9pZCBtaWdyYXRlX3BhZ2VfY29weShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCitzdGF0aWMgdm9pZCBtaWdyYXRlX3BhZ2VfY29weShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CiAJY29weV9oaWdocGFnZShuZXdwYWdlLCBwYWdlKTsKIApAQCAtMjgyLDcgKzM1OCw5IEBACiAJCXNldF9wYWdlX2RpcnR5KG5ld3BhZ2UpOwogIAl9CiAKKyNpZmRlZiBDT05GSUdfU1dBUAogCUNsZWFyUGFnZVN3YXBDYWNoZShwYWdlKTsKKyNlbmRpZgogCUNsZWFyUGFnZUFjdGl2ZShwYWdlKTsKIAlDbGVhclBhZ2VQcml2YXRlKHBhZ2UpOwogCXNldF9wYWdlX3ByaXZhdGUocGFnZSwgMCk7CkBAIC0yOTUsNyArMzczLDE4IEBACiAJaWYgKFBhZ2VXcml0ZWJhY2sobmV3cGFnZSkpCiAJCWVuZF9wYWdlX3dyaXRlYmFjayhuZXdwYWdlKTsKIH0KLUVYUE9SVF9TWU1CT0wobWlncmF0ZV9wYWdlX2NvcHkpOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgTWlncmF0aW9uIGZ1bmN0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBBbHdheXMgZmFpbCBtaWdyYXRpb24uIFVzZWQgZm9yIG1hcHBpbmdzIHRoYXQgYXJlIG5vdCBtb3ZhYmxlICovCitpbnQgZmFpbF9taWdyYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCisJCQlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJcmV0dXJuIC1FSU87Cit9CitFWFBPUlRfU1lNQk9MKGZhaWxfbWlncmF0ZV9wYWdlKTsKIAogLyoKICAqIENvbW1vbiBsb2dpYyB0byBkaXJlY3RseSBtaWdyYXRlIGEgc2luZ2xlIHBhZ2Ugc3VpdGFibGUgZm9yCkBAIC0zMDMsMjUxICszOTIsNDAgQEAKICAqCiAgKiBQYWdlcyBhcmUgbG9ja2VkIHVwb24gZW50cnkgYW5kIGV4aXQuCiAgKi8KLWludCBtaWdyYXRlX3BhZ2Uoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKQoraW50IG1pZ3JhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKQogewogCWludCByYzsKIAogCUJVR19PTihQYWdlV3JpdGViYWNrKHBhZ2UpKTsJLyogV3JpdGViYWNrIG11c3QgYmUgY29tcGxldGUgKi8KIAotCXJjID0gbWlncmF0ZV9wYWdlX3JlbW92ZV9yZWZlcmVuY2VzKG5ld3BhZ2UsIHBhZ2UsIDIpOworCXJjID0gbWlncmF0ZV9wYWdlX21vdmVfbWFwcGluZyhtYXBwaW5nLCBuZXdwYWdlLCBwYWdlKTsKIAogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCiAJbWlncmF0ZV9wYWdlX2NvcHkobmV3cGFnZSwgcGFnZSk7Ci0KLQkvKgotCSAqIFJlbW92ZSBhdXhpbGlhcnkgc3dhcCBlbnRyaWVzIGFuZCByZXBsYWNlCi0JICogdGhlbSB3aXRoIHJlYWwgcHRlcy4KLQkgKgotCSAqIE5vdGUgdGhhdCBhIHJlYWwgcHRlIGVudHJ5IHdpbGwgYWxsb3cgcHJvY2Vzc2VzIHRoYXQgYXJlIG5vdAotCSAqIHdhaXRpbmcgb24gdGhlIHBhZ2UgbG9jayB0byB1c2UgdGhlIG5ldyBwYWdlIHZpYSB0aGUgcGFnZSB0YWJsZXMKLQkgKiBiZWZvcmUgdGhlIG5ldyBwYWdlIGlzIHVubG9ja2VkLgotCSAqLwotCXJlbW92ZV9mcm9tX3N3YXAobmV3cGFnZSk7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfcGFnZSk7CiAKIC8qCi0gKiBtaWdyYXRlX3BhZ2VzCi0gKgotICogVHdvIGxpc3RzIGFyZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4gVGhlIGZpcnN0IGxpc3QKLSAqIGNvbnRhaW5zIHRoZSBwYWdlcyBpc29sYXRlZCBmcm9tIHRoZSBMUlUgdG8gYmUgbWlncmF0ZWQuCi0gKiBUaGUgc2Vjb25kIGxpc3QgY29udGFpbnMgbmV3IHBhZ2VzIHRoYXQgdGhlIHBhZ2VzIGlzb2xhdGVkCi0gKiBjYW4gYmUgbW92ZWQgdG8uIElmIHRoZSBzZWNvbmQgbGlzdCBpcyBOVUxMIHRoZW4gYWxsCi0gKiBwYWdlcyBhcmUgc3dhcHBlZCBvdXQuCi0gKgotICogVGhlIGZ1bmN0aW9uIHJldHVybnMgYWZ0ZXIgMTAgYXR0ZW1wdHMgb3IgaWYgbm8gcGFnZXMKLSAqIGFyZSBtb3ZhYmxlIGFueW1vcmUgYmVjYXVzZSB0byBoYXMgYmVjb21lIGVtcHR5Ci0gKiBvciBubyByZXRyeWFibGUgcGFnZXMgZXhpc3QgYW55bW9yZS4KLSAqCi0gKiBSZXR1cm46IE51bWJlciBvZiBwYWdlcyBub3QgbWlncmF0ZWQgd2hlbiAidG8iIHJhbiBlbXB0eS4KLSAqLwotaW50IG1pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZnJvbSwgc3RydWN0IGxpc3RfaGVhZCAqdG8sCi0JCSAgc3RydWN0IGxpc3RfaGVhZCAqbW92ZWQsIHN0cnVjdCBsaXN0X2hlYWQgKmZhaWxlZCkKLXsKLQlpbnQgcmV0cnk7Ci0JaW50IG5yX2ZhaWxlZCA9IDA7Ci0JaW50IHBhc3MgPSAwOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCXN0cnVjdCBwYWdlICpwYWdlMjsKLQlpbnQgc3dhcHdyaXRlID0gY3VycmVudC0+ZmxhZ3MgJiBQRl9TV0FQV1JJVEU7Ci0JaW50IHJjOwotCi0JaWYgKCFzd2Fwd3JpdGUpCi0JCWN1cnJlbnQtPmZsYWdzIHw9IFBGX1NXQVBXUklURTsKLQotcmVkbzoKLQlyZXRyeSA9IDA7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGFnZSwgcGFnZTIsIGZyb20sIGxydSkgewotCQlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSA9IE5VTEw7Ci0JCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwotCi0JCWNvbmRfcmVzY2hlZCgpOwotCi0JCXJjID0gMDsKLQkJaWYgKHBhZ2VfY291bnQocGFnZSkgPT0gMSkKLQkJCS8qIHBhZ2Ugd2FzIGZyZWVkIGZyb20gdW5kZXIgdXMuIFNvIHdlIGFyZSBkb25lLiAqLwotCQkJZ290byBuZXh0OwotCi0JCWlmICh0byAmJiBsaXN0X2VtcHR5KHRvKSkKLQkJCWJyZWFrOwotCi0JCS8qCi0JCSAqIFNraXAgbG9ja2VkIHBhZ2VzIGR1cmluZyB0aGUgZmlyc3QgdHdvIHBhc3NlcyB0byBnaXZlIHRoZQotCQkgKiBmdW5jdGlvbnMgaG9sZGluZyB0aGUgbG9jayB0aW1lIHRvIHJlbGVhc2UgdGhlIHBhZ2UuIExhdGVyIHdlCi0JCSAqIHVzZSBsb2NrX3BhZ2UoKSB0byBoYXZlIGEgaGlnaGVyIGNoYW5jZSBvZiBhY3F1aXJpbmcgdGhlCi0JCSAqIGxvY2suCi0JCSAqLwotCQlyYyA9IC1FQUdBSU47Ci0JCWlmIChwYXNzID4gMikKLQkJCWxvY2tfcGFnZShwYWdlKTsKLQkJZWxzZQotCQkJaWYgKFRlc3RTZXRQYWdlTG9ja2VkKHBhZ2UpKQotCQkJCWdvdG8gbmV4dDsKLQotCQkvKgotCQkgKiBPbmx5IHdhaXQgb24gd3JpdGViYWNrIGlmIHdlIGhhdmUgYWxyZWFkeSBkb25lIGEgcGFzcyB3aGVyZQotCQkgKiB3ZSB3ZSBtYXkgaGF2ZSB0cmlnZ2VyZWQgd3JpdGVvdXRzIGZvciBsb3RzIG9mIHBhZ2VzLgotCQkgKi8KLQkJaWYgKHBhc3MgPiAwKSB7Ci0JCQl3YWl0X29uX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOwotCQl9IGVsc2UgewotCQkJaWYgKFBhZ2VXcml0ZWJhY2socGFnZSkpCi0JCQkJZ290byB1bmxvY2tfcGFnZTsKLQkJfQotCi0JCS8qCi0JCSAqIEFub255bW91cyBwYWdlcyBtdXN0IGhhdmUgc3dhcCBjYWNoZSByZWZlcmVuY2VzIG90aGVyd2lzZQotCQkgKiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZSBwYWdlIG1hcHMgY2Fubm90IGJlCi0JCSAqIHByZXNlcnZlZC4KLQkJICovCi0JCWlmIChQYWdlQW5vbihwYWdlKSAmJiAhUGFnZVN3YXBDYWNoZShwYWdlKSkgewotCQkJaWYgKCFhZGRfdG9fc3dhcChwYWdlLCBHRlBfS0VSTkVMKSkgewotCQkJCXJjID0gLUVOT01FTTsKLQkJCQlnb3RvIHVubG9ja19wYWdlOwotCQkJfQotCQl9Ci0KLQkJaWYgKCF0bykgewotCQkJcmMgPSBzd2FwX3BhZ2UocGFnZSk7Ci0JCQlnb3RvIG5leHQ7Ci0JCX0KLQotCQluZXdwYWdlID0gbHJ1X3RvX3BhZ2UodG8pOwotCQlsb2NrX3BhZ2UobmV3cGFnZSk7Ci0KLQkJLyoKLQkJICogUGFnZXMgYXJlIHByb3Blcmx5IGxvY2tlZCBhbmQgd3JpdGViYWNrIGlzIGNvbXBsZXRlLgotCQkgKiBUcnkgdG8gbWlncmF0ZSB0aGUgcGFnZS4KLQkJICovCi0JCW1hcHBpbmcgPSBwYWdlX21hcHBpbmcocGFnZSk7Ci0JCWlmICghbWFwcGluZykKLQkJCWdvdG8gdW5sb2NrX2JvdGg7Ci0KLQkJaWYgKG1hcHBpbmctPmFfb3BzLT5taWdyYXRlcGFnZSkgewotCQkJLyoKLQkJCSAqIE1vc3QgcGFnZXMgaGF2ZSBhIG1hcHBpbmcgYW5kIG1vc3QgZmlsZXN5c3RlbXMKLQkJCSAqIHNob3VsZCBwcm92aWRlIGEgbWlncmF0aW9uIGZ1bmN0aW9uLiBBbm9ueW1vdXMKLQkJCSAqIHBhZ2VzIGFyZSBwYXJ0IG9mIHN3YXAgc3BhY2Ugd2hpY2ggYWxzbyBoYXMgaXRzCi0JCQkgKiBvd24gbWlncmF0aW9uIGZ1bmN0aW9uLiBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbgotCQkJICogcGF0aCBmb3IgcGFnZSBtaWdyYXRpb24uCi0JCQkgKi8KLQkJCXJjID0gbWFwcGluZy0+YV9vcHMtPm1pZ3JhdGVwYWdlKG5ld3BhZ2UsIHBhZ2UpOwotCQkJZ290byB1bmxvY2tfYm90aDsKLSAgICAgICAgICAgICAgICB9Ci0KLQkJLyogTWFrZSBzdXJlIHRoZSBkaXJ0eSBiaXQgaXMgdXAgdG8gZGF0ZSAqLwotCQlpZiAodHJ5X3RvX3VubWFwKHBhZ2UsIDEpID09IFNXQVBfRkFJTCkgewotCQkJcmMgPSAtRVBFUk07Ci0JCQlnb3RvIHVubG9ja19ib3RoOwotCQl9Ci0KLQkJaWYgKHBhZ2VfbWFwY291bnQocGFnZSkpIHsKLQkJCXJjID0gLUVBR0FJTjsKLQkJCWdvdG8gdW5sb2NrX2JvdGg7Ci0JCX0KLQotCQkvKgotCQkgKiBEZWZhdWx0IGhhbmRsaW5nIGlmIGEgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcm92aWRlCi0JCSAqIGEgbWlncmF0aW9uIGZ1bmN0aW9uLiBXZSBjYW4gb25seSBtaWdyYXRlIGNsZWFuCi0JCSAqIHBhZ2VzIHNvIHRyeSB0byB3cml0ZSBvdXQgYW55IGRpcnR5IHBhZ2VzIGZpcnN0LgotCQkgKi8KLQkJaWYgKFBhZ2VEaXJ0eShwYWdlKSkgewotCQkJc3dpdGNoIChwYWdlb3V0KHBhZ2UsIG1hcHBpbmcpKSB7Ci0JCQljYXNlIFBBR0VfS0VFUDoKLQkJCWNhc2UgUEFHRV9BQ1RJVkFURToKLQkJCQlnb3RvIHVubG9ja19ib3RoOwotCi0JCQljYXNlIFBBR0VfU1VDQ0VTUzoKLQkJCQl1bmxvY2tfcGFnZShuZXdwYWdlKTsKLQkJCQlnb3RvIG5leHQ7Ci0KLQkJCWNhc2UgUEFHRV9DTEVBTjoKLQkJCQk7IC8qIHRyeSB0byBtaWdyYXRlIHRoZSBwYWdlIGJlbG93ICovCi0JCQl9Ci0gICAgICAgICAgICAgICAgfQotCi0JCS8qCi0JCSAqIEJ1ZmZlcnMgYXJlIG1hbmFnZWQgaW4gYSBmaWxlc3lzdGVtIHNwZWNpZmljIHdheS4KLQkJICogV2UgbXVzdCBoYXZlIG5vIGJ1ZmZlcnMgb3IgZHJvcCB0aGVtLgotCQkgKi8KLQkJaWYgKCFwYWdlX2hhc19idWZmZXJzKHBhZ2UpIHx8Ci0JCSAgICB0cnlfdG9fcmVsZWFzZV9wYWdlKHBhZ2UsIEdGUF9LRVJORUwpKSB7Ci0JCQlyYyA9IG1pZ3JhdGVfcGFnZShuZXdwYWdlLCBwYWdlKTsKLQkJCWdvdG8gdW5sb2NrX2JvdGg7Ci0JCX0KLQotCQkvKgotCQkgKiBPbiBlYXJseSBwYXNzZXMgd2l0aCBtYXBwZWQgcGFnZXMgc2ltcGx5Ci0JCSAqIHJldHJ5LiBUaGVyZSBtYXkgYmUgYSBsb2NrIGhlbGQgZm9yIHNvbWUKLQkJICogYnVmZmVycyB0aGF0IG1heSBnbyBhd2F5LiBMYXRlcgotCQkgKiBzd2FwIHRoZW0gb3V0LgotCQkgKi8KLQkJaWYgKHBhc3MgPiA0KSB7Ci0JCQkvKgotCQkJICogUGVyc2lzdGVudGx5IHVuYWJsZSB0byBkcm9wIGJ1ZmZlcnMuLi4uLiBBcyBhCi0JCQkgKiBtZWFzdXJlIG9mIGxhc3QgcmVzb3J0IHdlIGZhbGwgYmFjayB0bwotCQkJICogc3dhcF9wYWdlKCkuCi0JCQkgKi8KLQkJCXVubG9ja19wYWdlKG5ld3BhZ2UpOwotCQkJbmV3cGFnZSA9IE5VTEw7Ci0JCQlyYyA9IHN3YXBfcGFnZShwYWdlKTsKLQkJCWdvdG8gbmV4dDsKLQkJfQotCi11bmxvY2tfYm90aDoKLQkJdW5sb2NrX3BhZ2UobmV3cGFnZSk7Ci0KLXVubG9ja19wYWdlOgotCQl1bmxvY2tfcGFnZShwYWdlKTsKLQotbmV4dDoKLQkJaWYgKHJjID09IC1FQUdBSU4pIHsKLQkJCXJldHJ5Kys7Ci0JCX0gZWxzZSBpZiAocmMpIHsKLQkJCS8qIFBlcm1hbmVudCBmYWlsdXJlICovCi0JCQlsaXN0X21vdmUoJnBhZ2UtPmxydSwgZmFpbGVkKTsKLQkJCW5yX2ZhaWxlZCsrOwotCQl9IGVsc2UgewotCQkJaWYgKG5ld3BhZ2UpIHsKLQkJCQkvKiBTdWNjZXNzZnVsIG1pZ3JhdGlvbi4gUmV0dXJuIHBhZ2UgdG8gTFJVICovCi0JCQkJbW92ZV90b19scnUobmV3cGFnZSk7Ci0JCQl9Ci0JCQlsaXN0X21vdmUoJnBhZ2UtPmxydSwgbW92ZWQpOwotCQl9Ci0JfQotCWlmIChyZXRyeSAmJiBwYXNzKysgPCAxMCkKLQkJZ290byByZWRvOwotCi0JaWYgKCFzd2Fwd3JpdGUpCi0JCWN1cnJlbnQtPmZsYWdzICY9IH5QRl9TV0FQV1JJVEU7Ci0KLQlyZXR1cm4gbnJfZmFpbGVkICsgcmV0cnk7Ci19Ci0KLS8qCiAgKiBNaWdyYXRpb24gZnVuY3Rpb24gZm9yIHBhZ2VzIHdpdGggYnVmZmVycy4gVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkCiAgKiBpZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIGd1YXJhbnRlZXMgdGhhdCBubyBvdGhlciByZWZlcmVuY2VzIHRvICJwYWdlIgogICogZXhpc3QuCiAgKi8KLWludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBwYWdlICpuZXdwYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKK2ludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAorCQlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCiB7Ci0Jc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBwYWdlLT5tYXBwaW5nOwogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmgsICpoZWFkOwogCWludCByYzsKIAotCWlmICghbWFwcGluZykKLQkJcmV0dXJuIC1FQUdBSU47Ci0KIAlpZiAoIXBhZ2VfaGFzX2J1ZmZlcnMocGFnZSkpCi0JCXJldHVybiBtaWdyYXRlX3BhZ2UobmV3cGFnZSwgcGFnZSk7CisJCXJldHVybiBtaWdyYXRlX3BhZ2UobWFwcGluZywgbmV3cGFnZSwgcGFnZSk7CiAKIAloZWFkID0gcGFnZV9idWZmZXJzKHBhZ2UpOwogCi0JcmMgPSBtaWdyYXRlX3BhZ2VfcmVtb3ZlX3JlZmVyZW5jZXMobmV3cGFnZSwgcGFnZSwgMyk7CisJcmMgPSBtaWdyYXRlX3BhZ2VfbW92ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld3BhZ2UsIHBhZ2UpOwogCiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CkBAIC01OTAsNzMgKzQ2OCw1MTEgQEAKIEVYUE9SVF9TWU1CT0woYnVmZmVyX21pZ3JhdGVfcGFnZSk7CiAKIC8qCi0gKiBNaWdyYXRlIHRoZSBsaXN0ICdwYWdlbGlzdCcgb2YgcGFnZXMgdG8gYSBjZXJ0YWluIGRlc3RpbmF0aW9uLgotICoKLSAqIFNwZWNpZnkgZGVzdGluYXRpb24gd2l0aCBlaXRoZXIgbm9uLU5VTEwgdm1hIG9yIGRlc3Rfbm9kZSA+PSAwCi0gKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwYWdlcyBub3QgbWlncmF0ZWQgb3IgZXJyb3IgY29kZQorICogV3JpdGViYWNrIGEgcGFnZSB0byBjbGVhbiB0aGUgZGlydHkgc3RhdGUKICAqLwotaW50IG1pZ3JhdGVfcGFnZXNfdG8oc3RydWN0IGxpc3RfaGVhZCAqcGFnZWxpc3QsCi0JCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgaW50IGRlc3QpCitzdGF0aWMgaW50IHdyaXRlb3V0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKLQlMSVNUX0hFQUQobmV3bGlzdCk7Ci0JTElTVF9IRUFEKG1vdmVkKTsKLQlMSVNUX0hFQUQoZmFpbGVkKTsKLQlpbnQgZXJyID0gMDsKLQl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7Ci0JaW50IG5yX3BhZ2VzOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisJc3RydWN0IHdyaXRlYmFja19jb250cm9sIHdiYyA9IHsKKwkJLnN5bmNfbW9kZSA9IFdCX1NZTkNfTk9ORSwKKwkJLm5yX3RvX3dyaXRlID0gMSwKKwkJLnJhbmdlX3N0YXJ0ID0gMCwKKwkJLnJhbmdlX2VuZCA9IExMT05HX01BWCwKKwkJLm5vbmJsb2NraW5nID0gMSwKKwkJLmZvcl9yZWNsYWltID0gMQorCX07CisJaW50IHJjOwogCi1yZWRvOgotCW5yX3BhZ2VzID0gMDsKLQlsaXN0X2Zvcl9lYWNoKHAsIHBhZ2VsaXN0KSB7Ci0JCWlmICh2bWEpIHsKLQkJCS8qCi0JCQkgKiBUaGUgYWRkcmVzcyBwYXNzZWQgdG8gYWxsb2NfcGFnZV92bWEgaXMgdXNlZCB0bwotCQkJICogZ2VuZXJhdGUgdGhlIHByb3BlciBpbnRlcmxlYXZlIGJlaGF2aW9yLiBXZSBmYWtlCi0JCQkgKiB0aGUgYWRkcmVzcyBoZXJlIGJ5IGFuIGluY3JlYXNpbmcgb2Zmc2V0IGluIG9yZGVyCi0JCQkgKiB0byBnZXQgdGhlIHByb3BlciBkaXN0cmlidXRpb24gb2YgcGFnZXMuCi0JCQkgKgotCQkJICogTm8gZGVjaXNpb24gaGFzIGJlZW4gbWFkZSBhcyB0byB3aGljaCBwYWdlCi0JCQkgKiBhIGNlcnRhaW4gb2xkIHBhZ2UgaXMgbW92ZWQgdG8gc28gd2UgY2Fubm90Ci0JCQkgKiBzcGVjaWZ5IHRoZSBjb3JyZWN0IGFkZHJlc3MuCi0JCQkgKi8KLQkJCXBhZ2UgPSBhbGxvY19wYWdlX3ZtYShHRlBfSElHSFVTRVIsIHZtYSwKLQkJCQkJb2Zmc2V0ICsgdm1hLT52bV9zdGFydCk7Ci0JCQlvZmZzZXQgKz0gUEFHRV9TSVpFOwotCQl9Ci0JCWVsc2UKLQkJCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKGRlc3QsIEdGUF9ISUdIVVNFUiwgMCk7CisJaWYgKCFtYXBwaW5nLT5hX29wcy0+d3JpdGVwYWdlKQorCQkvKiBObyB3cml0ZSBtZXRob2QgZm9yIHRoZSBhZGRyZXNzIHNwYWNlICovCisJCXJldHVybiAtRUlOVkFMOwogCi0JCWlmICghcGFnZSkgewotCQkJZXJyID0gLUVOT01FTTsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JCWxpc3RfYWRkX3RhaWwoJnBhZ2UtPmxydSwgJm5ld2xpc3QpOwotCQlucl9wYWdlcysrOwotCQlpZiAobnJfcGFnZXMgPiBNSUdSQVRFX0NIVU5LX1NJWkUpCi0JCQlicmVhazsKLQl9Ci0JZXJyID0gbWlncmF0ZV9wYWdlcyhwYWdlbGlzdCwgJm5ld2xpc3QsICZtb3ZlZCwgJmZhaWxlZCk7CisJaWYgKCFjbGVhcl9wYWdlX2RpcnR5X2Zvcl9pbyhwYWdlKSkKKwkJLyogU29tZW9uZSBlbHNlIGFscmVhZHkgdHJpZ2dlcmVkIGEgd3JpdGUgKi8KKwkJcmV0dXJuIC1FQUdBSU47CiAKLQlwdXRiYWNrX2xydV9wYWdlcygmbW92ZWQpOwkvKiBDYWxsIHJlbGVhc2UgcGFnZXMgaW5zdGVhZCA/PyAqLworCS8qCisJICogQSBkaXJ0eSBwYWdlIG1heSBpbXBseSB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0gaGFzCisJICogdGhlIHBhZ2Ugb24gc29tZSBxdWV1ZS4gU28gdGhlIHBhZ2UgbXVzdCBiZSBjbGVhbiBmb3IKKwkgKiBtaWdyYXRpb24uIFdyaXRlb3V0IG1heSBtZWFuIHdlIGxvb3NlIHRoZSBsb2NrIGFuZCB0aGUKKwkgKiBwYWdlIHN0YXRlIGlzIG5vIGxvbmdlciB3aGF0IHdlIGNoZWNrZWQgZm9yIGVhcmxpZXIuCisJICogQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlIG1pZ3JhdGlvbiBhdHRlbXB0IGNhbm5vdAorCSAqIGJlIHN1Y2Nlc3NmdWwuCisJICovCisJcmVtb3ZlX21pZ3JhdGlvbl9wdGVzKHBhZ2UsIHBhZ2UpOwogCi0JaWYgKGVyciA+PSAwICYmIGxpc3RfZW1wdHkoJm5ld2xpc3QpICYmICFsaXN0X2VtcHR5KHBhZ2VsaXN0KSkKLQkJZ290byByZWRvOwotb3V0OgotCS8qIFJldHVybiBsZWZ0b3ZlciBhbGxvY2F0ZWQgcGFnZXMgKi8KLQl3aGlsZSAoIWxpc3RfZW1wdHkoJm5ld2xpc3QpKSB7Ci0JCXBhZ2UgPSBsaXN0X2VudHJ5KG5ld2xpc3QubmV4dCwgc3RydWN0IHBhZ2UsIGxydSk7Ci0JCWxpc3RfZGVsKCZwYWdlLT5scnUpOwotCQlfX2ZyZWVfcGFnZShwYWdlKTsKLQl9Ci0JbGlzdF9zcGxpY2UoJmZhaWxlZCwgcGFnZWxpc3QpOwotCWlmIChlcnIgPCAwKQotCQlyZXR1cm4gZXJyOworCXJjID0gbWFwcGluZy0+YV9vcHMtPndyaXRlcGFnZShwYWdlLCAmd2JjKTsKKwlpZiAocmMgPCAwKQorCQkvKiBJL08gRXJyb3Igd3JpdGluZyAqLworCQlyZXR1cm4gLUVJTzsKIAotCS8qIENhbGN1bGF0ZSBudW1iZXIgb2YgbGVmdG92ZXIgcGFnZXMgKi8KLQlucl9wYWdlcyA9IDA7Ci0JbGlzdF9mb3JfZWFjaChwLCBwYWdlbGlzdCkKLQkJbnJfcGFnZXMrKzsKLQlyZXR1cm4gbnJfcGFnZXM7CisJaWYgKHJjICE9IEFPUF9XUklURVBBR0VfQUNUSVZBVEUpCisJCS8qIHVubG9ja2VkLiBSZWxvY2sgKi8KKwkJbG9ja19wYWdlKHBhZ2UpOworCisJcmV0dXJuIC1FQUdBSU47CiB9CisKKy8qCisgKiBEZWZhdWx0IGhhbmRsaW5nIGlmIGEgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIGEgbWlncmF0aW9uIGZ1bmN0aW9uLgorICovCitzdGF0aWMgaW50IGZhbGxiYWNrX21pZ3JhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJaWYgKFBhZ2VEaXJ0eShwYWdlKSkKKwkJcmV0dXJuIHdyaXRlb3V0KG1hcHBpbmcsIHBhZ2UpOworCisJLyoKKwkgKiBCdWZmZXJzIG1heSBiZSBtYW5hZ2VkIGluIGEgZmlsZXN5c3RlbSBzcGVjaWZpYyB3YXkuCisJICogV2UgbXVzdCBoYXZlIG5vIGJ1ZmZlcnMgb3IgZHJvcCB0aGVtLgorCSAqLworCWlmIChwYWdlX2hhc19idWZmZXJzKHBhZ2UpICYmCisJICAgICF0cnlfdG9fcmVsZWFzZV9wYWdlKHBhZ2UsIEdGUF9LRVJORUwpKQorCQlyZXR1cm4gLUVBR0FJTjsKKworCXJldHVybiBtaWdyYXRlX3BhZ2UobWFwcGluZywgbmV3cGFnZSwgcGFnZSk7Cit9CisKKy8qCisgKiBNb3ZlIGEgcGFnZSB0byBhIG5ld2x5IGFsbG9jYXRlZCBwYWdlCisgKiBUaGUgcGFnZSBpcyBsb2NrZWQgYW5kIGFsbCBwdGVzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KKyAqCisgKiBUaGUgbmV3IHBhZ2Ugd2lsbCBoYXZlIHJlcGxhY2VkIHRoZSBvbGQgcGFnZSBpZiB0aGlzIGZ1bmN0aW9uCisgKiBpcyBzdWNjZXNzZnVsLgorICovCitzdGF0aWMgaW50IG1vdmVfdG9fbmV3X3BhZ2Uoc3RydWN0IHBhZ2UgKm5ld3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKQoreworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOworCWludCByYzsKKworCS8qCisJICogQmxvY2sgb3RoZXJzIGZyb20gYWNjZXNzaW5nIHRoZSBwYWdlIHdoZW4gd2UgZ2V0IGFyb3VuZCB0bworCSAqIGVzdGFibGlzaGluZyBhZGRpdGlvbmFsIHJlZmVyZW5jZXMuIFdlIGFyZSB0aGUgb25seSBvbmUKKwkgKiBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgcGFnZSBhdCB0aGlzIHBvaW50LgorCSAqLworCWlmIChUZXN0U2V0UGFnZUxvY2tlZChuZXdwYWdlKSkKKwkJQlVHKCk7CisKKwkvKiBQcmVwYXJlIG1hcHBpbmcgZm9yIHRoZSBuZXcgcGFnZS4qLworCW5ld3BhZ2UtPmluZGV4ID0gcGFnZS0+aW5kZXg7CisJbmV3cGFnZS0+bWFwcGluZyA9IHBhZ2UtPm1hcHBpbmc7CisKKwltYXBwaW5nID0gcGFnZV9tYXBwaW5nKHBhZ2UpOworCWlmICghbWFwcGluZykKKwkJcmMgPSBtaWdyYXRlX3BhZ2UobWFwcGluZywgbmV3cGFnZSwgcGFnZSk7CisJZWxzZSBpZiAobWFwcGluZy0+YV9vcHMtPm1pZ3JhdGVwYWdlKQorCQkvKgorCQkgKiBNb3N0IHBhZ2VzIGhhdmUgYSBtYXBwaW5nIGFuZCBtb3N0IGZpbGVzeXN0ZW1zCisJCSAqIHNob3VsZCBwcm92aWRlIGEgbWlncmF0aW9uIGZ1bmN0aW9uLiBBbm9ueW1vdXMKKwkJICogcGFnZXMgYXJlIHBhcnQgb2Ygc3dhcCBzcGFjZSB3aGljaCBhbHNvIGhhcyBpdHMKKwkJICogb3duIG1pZ3JhdGlvbiBmdW5jdGlvbi4gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24KKwkJICogcGF0aCBmb3IgcGFnZSBtaWdyYXRpb24uCisJCSAqLworCQlyYyA9IG1hcHBpbmctPmFfb3BzLT5taWdyYXRlcGFnZShtYXBwaW5nLAorCQkJCQkJbmV3cGFnZSwgcGFnZSk7CisJZWxzZQorCQlyYyA9IGZhbGxiYWNrX21pZ3JhdGVfcGFnZShtYXBwaW5nLCBuZXdwYWdlLCBwYWdlKTsKKworCWlmICghcmMpCisJCXJlbW92ZV9taWdyYXRpb25fcHRlcyhwYWdlLCBuZXdwYWdlKTsKKwllbHNlCisJCW5ld3BhZ2UtPm1hcHBpbmcgPSBOVUxMOworCisJdW5sb2NrX3BhZ2UobmV3cGFnZSk7CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhlIGxvY2sgb24gcGFnZSwgcmVtb3ZlIGFsbCBwdGVzIGFuZCBtaWdyYXRlIHRoZSBwYWdlCisgKiB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHBhZ2UgaW4gbmV3cGFnZS4KKyAqLworc3RhdGljIGludCB1bm1hcF9hbmRfbW92ZShuZXdfcGFnZV90IGdldF9uZXdfcGFnZSwgdW5zaWduZWQgbG9uZyBwcml2YXRlLAorCQkJc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBmb3JjZSkKK3sKKwlpbnQgcmMgPSAwOworCWludCAqcmVzdWx0ID0gTlVMTDsKKwlzdHJ1Y3QgcGFnZSAqbmV3cGFnZSA9IGdldF9uZXdfcGFnZShwYWdlLCBwcml2YXRlLCAmcmVzdWx0KTsKKworCWlmICghbmV3cGFnZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAocGFnZV9jb3VudChwYWdlKSA9PSAxKQorCQkvKiBwYWdlIHdhcyBmcmVlZCBmcm9tIHVuZGVyIHVzLiBTbyB3ZSBhcmUgZG9uZS4gKi8KKwkJZ290byBtb3ZlX25ld3BhZ2U7CisKKwlyYyA9IC1FQUdBSU47CisJaWYgKFRlc3RTZXRQYWdlTG9ja2VkKHBhZ2UpKSB7CisJCWlmICghZm9yY2UpCisJCQlnb3RvIG1vdmVfbmV3cGFnZTsKKwkJbG9ja19wYWdlKHBhZ2UpOworCX0KKworCWlmIChQYWdlV3JpdGViYWNrKHBhZ2UpKSB7CisJCWlmICghZm9yY2UpCisJCQlnb3RvIHVubG9jazsKKwkJd2FpdF9vbl9wYWdlX3dyaXRlYmFjayhwYWdlKTsKKwl9CisKKwkvKgorCSAqIEVzdGFibGlzaCBtaWdyYXRpb24gcHRlcyBvciByZW1vdmUgcHRlcworCSAqLworCWlmICh0cnlfdG9fdW5tYXAocGFnZSwgMSkgIT0gU1dBUF9GQUlMKSB7CisJCWlmICghcGFnZV9tYXBwZWQocGFnZSkpCisJCQlyYyA9IG1vdmVfdG9fbmV3X3BhZ2UobmV3cGFnZSwgcGFnZSk7CisJfSBlbHNlCisJCS8qIEEgdm1hIGhhcyBWTV9MT0NLRUQgc2V0IC0+IHBlcm1hbmVudCBmYWlsdXJlICovCisJCXJjID0gLUVQRVJNOworCisJaWYgKHJjKQorCQlyZW1vdmVfbWlncmF0aW9uX3B0ZXMocGFnZSwgcGFnZSk7Cit1bmxvY2s6CisJdW5sb2NrX3BhZ2UocGFnZSk7CisKKwlpZiAocmMgIT0gLUVBR0FJTikgeworIAkJLyoKKyAJCSAqIEEgcGFnZSB0aGF0IGhhcyBiZWVuIG1pZ3JhdGVkIGhhcyBhbGwgcmVmZXJlbmNlcworIAkJICogcmVtb3ZlZCBhbmQgd2lsbCBiZSBmcmVlZC4gQSBwYWdlIHRoYXQgaGFzIG5vdCBiZWVuCisgCQkgKiBtaWdyYXRlZCB3aWxsIGhhdmUga2VwdHMgaXRzIHJlZmVyZW5jZXMgYW5kIGJlCisgCQkgKiByZXN0b3JlZC4KKyAJCSAqLworIAkJbGlzdF9kZWwoJnBhZ2UtPmxydSk7CisgCQltb3ZlX3RvX2xydShwYWdlKTsKKwl9CisKK21vdmVfbmV3cGFnZToKKwkvKgorCSAqIE1vdmUgdGhlIG5ldyBwYWdlIHRvIHRoZSBMUlUuIElmIG1pZ3JhdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwKKwkgKiB0aGVuIHRoaXMgd2lsbCBmcmVlIHRoZSBwYWdlLgorCSAqLworCW1vdmVfdG9fbHJ1KG5ld3BhZ2UpOworCWlmIChyZXN1bHQpIHsKKwkJaWYgKHJjKQorCQkJKnJlc3VsdCA9IHJjOworCQllbHNlCisJCQkqcmVzdWx0ID0gcGFnZV90b19uaWQobmV3cGFnZSk7CisJfQorCXJldHVybiByYzsKK30KKworLyoKKyAqIG1pZ3JhdGVfcGFnZXMKKyAqCisgKiBUaGUgZnVuY3Rpb24gdGFrZXMgb25lIGxpc3Qgb2YgcGFnZXMgdG8gbWlncmF0ZSBhbmQgYSBmdW5jdGlvbgorICogdGhhdCBkZXRlcm1pbmVzIGZyb20gdGhlIHBhZ2UgdG8gYmUgbWlncmF0ZWQgYW5kIHRoZSBwcml2YXRlIGRhdGEKKyAqIHRoZSB0YXJnZXQgb2YgdGhlIG1vdmUgYW5kIGFsbG9jYXRlcyB0aGUgcGFnZS4KKyAqCisgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhZnRlciAxMCBhdHRlbXB0cyBvciBpZiBubyBwYWdlcworICogYXJlIG1vdmFibGUgYW55bW9yZSBiZWNhdXNlIHRvIGhhcyBiZWNvbWUgZW1wdHkKKyAqIG9yIG5vIHJldHJ5YWJsZSBwYWdlcyBleGlzdCBhbnltb3JlLiBBbGwgcGFnZXMgd2lsbCBiZQorICogcmV0cnVuZWQgdG8gdGhlIExSVSBvciBmcmVlZC4KKyAqCisgKiBSZXR1cm46IE51bWJlciBvZiBwYWdlcyBub3QgbWlncmF0ZWQgb3IgZXJyb3IgY29kZS4KKyAqLworaW50IG1pZ3JhdGVfcGFnZXMoc3RydWN0IGxpc3RfaGVhZCAqZnJvbSwKKwkJbmV3X3BhZ2VfdCBnZXRfbmV3X3BhZ2UsIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZSkKK3sKKwlpbnQgcmV0cnkgPSAxOworCWludCBucl9mYWlsZWQgPSAwOworCWludCBwYXNzID0gMDsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTI7CisJaW50IHN3YXB3cml0ZSA9IGN1cnJlbnQtPmZsYWdzICYgUEZfU1dBUFdSSVRFOworCWludCByYzsKKworCWlmICghc3dhcHdyaXRlKQorCQljdXJyZW50LT5mbGFncyB8PSBQRl9TV0FQV1JJVEU7CisKKwlmb3IocGFzcyA9IDA7IHBhc3MgPCAxMCAmJiByZXRyeTsgcGFzcysrKSB7CisJCXJldHJ5ID0gMDsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGFnZSwgcGFnZTIsIGZyb20sIGxydSkgeworCQkJY29uZF9yZXNjaGVkKCk7CisKKwkJCXJjID0gdW5tYXBfYW5kX21vdmUoZ2V0X25ld19wYWdlLCBwcml2YXRlLAorCQkJCQkJcGFnZSwgcGFzcyA+IDIpOworCisJCQlzd2l0Y2gocmMpIHsKKwkJCWNhc2UgLUVOT01FTToKKwkJCQlnb3RvIG91dDsKKwkJCWNhc2UgLUVBR0FJTjoKKwkJCQlyZXRyeSsrOworCQkJCWJyZWFrOworCQkJY2FzZSAwOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQkvKiBQZXJtYW5lbnQgZmFpbHVyZSAqLworCQkJCW5yX2ZhaWxlZCsrOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCXJjID0gMDsKK291dDoKKwlpZiAoIXN3YXB3cml0ZSkKKwkJY3VycmVudC0+ZmxhZ3MgJj0gflBGX1NXQVBXUklURTsKKworCXB1dGJhY2tfbHJ1X3BhZ2VzKGZyb20pOworCisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisKKwlyZXR1cm4gbnJfZmFpbGVkICsgcmV0cnk7Cit9CisKKyNpZmRlZiBDT05GSUdfTlVNQQorLyoKKyAqIE1vdmUgYSBsaXN0IG9mIGluZGl2aWR1YWwgcGFnZXMKKyAqLworc3RydWN0IHBhZ2VfdG9fbm9kZSB7CisJdW5zaWduZWQgbG9uZyBhZGRyOworCXN0cnVjdCBwYWdlICpwYWdlOworCWludCBub2RlOworCWludCBzdGF0dXM7Cit9OworCitzdGF0aWMgc3RydWN0IHBhZ2UgKm5ld19wYWdlX25vZGUoc3RydWN0IHBhZ2UgKnAsIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZSwKKwkJaW50ICoqcmVzdWx0KQoreworCXN0cnVjdCBwYWdlX3RvX25vZGUgKnBtID0gKHN0cnVjdCBwYWdlX3RvX25vZGUgKilwcml2YXRlOworCisJd2hpbGUgKHBtLT5ub2RlICE9IE1BWF9OVU1OT0RFUyAmJiBwbS0+cGFnZSAhPSBwKQorCQlwbSsrOworCisJaWYgKHBtLT5ub2RlID09IE1BWF9OVU1OT0RFUykKKwkJcmV0dXJuIE5VTEw7CisKKwkqcmVzdWx0ID0gJnBtLT5zdGF0dXM7CisKKwlyZXR1cm4gYWxsb2NfcGFnZXNfbm9kZShwbS0+bm9kZSwgR0ZQX0hJR0hVU0VSLCAwKTsKK30KKworLyoKKyAqIE1vdmUgYSBzZXQgb2YgcGFnZXMgYXMgaW5kaWNhdGVkIGluIHRoZSBwbSBhcnJheS4gVGhlIGFkZHIKKyAqIGZpZWxkIG11c3QgYmUgc2V0IHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHBhZ2UgdG8gYmUgbW92ZWQKKyAqIGFuZCB0aGUgbm9kZSBudW1iZXIgbXVzdCBjb250YWluIGEgdmFsaWQgdGFyZ2V0IG5vZGUuCisgKi8KK3N0YXRpYyBpbnQgZG9fbW92ZV9wYWdlcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHBhZ2VfdG9fbm9kZSAqcG0sCisJCQkJaW50IG1pZ3JhdGVfYWxsKQoreworCWludCBlcnI7CisJc3RydWN0IHBhZ2VfdG9fbm9kZSAqcHA7CisJTElTVF9IRUFEKHBhZ2VsaXN0KTsKKworCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKworCS8qCisJICogQnVpbGQgYSBsaXN0IG9mIHBhZ2VzIHRvIG1pZ3JhdGUKKwkgKi8KKwltaWdyYXRlX3ByZXAoKTsKKwlmb3IgKHBwID0gcG07IHBwLT5ub2RlICE9IE1BWF9OVU1OT0RFUzsgcHArKykgeworCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKwkJc3RydWN0IHBhZ2UgKnBhZ2U7CisKKwkJLyoKKwkJICogQSB2YWxpZCBwYWdlIHBvaW50ZXIgdGhhdCB3aWxsIG5vdCBtYXRjaCBhbnkgb2YgdGhlCisJCSAqIHBhZ2VzIHRoYXQgd2lsbCBiZSBtb3ZlZC4KKwkJICovCisJCXBwLT5wYWdlID0gWkVST19QQUdFKDApOworCisJCWVyciA9IC1FRkFVTFQ7CisJCXZtYSA9IGZpbmRfdm1hKG1tLCBwcC0+YWRkcik7CisJCWlmICghdm1hKQorCQkJZ290byBzZXRfc3RhdHVzOworCisJCXBhZ2UgPSBmb2xsb3dfcGFnZSh2bWEsIHBwLT5hZGRyLCBGT0xMX0dFVCk7CisJCWVyciA9IC1FTk9FTlQ7CisJCWlmICghcGFnZSkKKwkJCWdvdG8gc2V0X3N0YXR1czsKKworCQlpZiAoUGFnZVJlc2VydmVkKHBhZ2UpKQkJLyogQ2hlY2sgZm9yIHplcm8gcGFnZSAqLworCQkJZ290byBwdXRfYW5kX3NldDsKKworCQlwcC0+cGFnZSA9IHBhZ2U7CisJCWVyciA9IHBhZ2VfdG9fbmlkKHBhZ2UpOworCisJCWlmIChlcnIgPT0gcHAtPm5vZGUpCisJCQkvKgorCQkJICogTm9kZSBhbHJlYWR5IGluIHRoZSByaWdodCBwbGFjZQorCQkJICovCisJCQlnb3RvIHB1dF9hbmRfc2V0OworCisJCWVyciA9IC1FQUNDRVM7CisJCWlmIChwYWdlX21hcGNvdW50KHBhZ2UpID4gMSAmJgorCQkJCSFtaWdyYXRlX2FsbCkKKwkJCWdvdG8gcHV0X2FuZF9zZXQ7CisKKwkJZXJyID0gaXNvbGF0ZV9scnVfcGFnZShwYWdlLCAmcGFnZWxpc3QpOworcHV0X2FuZF9zZXQ6CisJCS8qCisJCSAqIEVpdGhlciByZW1vdmUgdGhlIGR1cGxpY2F0ZSByZWZjb3VudCBmcm9tCisJCSAqIGlzb2xhdGVfbHJ1X3BhZ2UoKSBvciBkcm9wIHRoZSBwYWdlIHJlZiBpZiBpdCB3YXMKKwkJICogbm90IGlzb2xhdGVkLgorCQkgKi8KKwkJcHV0X3BhZ2UocGFnZSk7CitzZXRfc3RhdHVzOgorCQlwcC0+c3RhdHVzID0gZXJyOworCX0KKworCWlmICghbGlzdF9lbXB0eSgmcGFnZWxpc3QpKQorCQllcnIgPSBtaWdyYXRlX3BhZ2VzKCZwYWdlbGlzdCwgbmV3X3BhZ2Vfbm9kZSwKKwkJCQkodW5zaWduZWQgbG9uZylwbSk7CisJZWxzZQorCQllcnIgPSAtRU5PRU5UOworCisJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwlyZXR1cm4gZXJyOworfQorCisvKgorICogRGV0ZXJtaW5lIHRoZSBub2RlcyBvZiBhIGxpc3Qgb2YgcGFnZXMuIFRoZSBhZGRyIGluIHRoZSBwbSBhcnJheQorICogbXVzdCBoYXZlIGJlZW4gc2V0IHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Ygd2hpY2ggd2Ugd2FudCB0byBkZXRlcm1pbmUKKyAqIHRoZSBub2RlIG51bWJlci4KKyAqLworc3RhdGljIGludCBkb19wYWdlc19zdGF0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3QgcGFnZV90b19ub2RlICpwbSkKK3sKKwlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisKKwlmb3IgKCA7IHBtLT5ub2RlICE9IE1BWF9OVU1OT0RFUzsgcG0rKykgeworCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKwkJc3RydWN0IHBhZ2UgKnBhZ2U7CisJCWludCBlcnI7CisKKwkJZXJyID0gLUVGQVVMVDsKKwkJdm1hID0gZmluZF92bWEobW0sIHBtLT5hZGRyKTsKKwkJaWYgKCF2bWEpCisJCQlnb3RvIHNldF9zdGF0dXM7CisKKwkJcGFnZSA9IGZvbGxvd19wYWdlKHZtYSwgcG0tPmFkZHIsIDApOworCQllcnIgPSAtRU5PRU5UOworCQkvKiBVc2UgUGFnZVJlc2VydmVkIHRvIGNoZWNrIGZvciB6ZXJvIHBhZ2UgKi8KKwkJaWYgKCFwYWdlIHx8IFBhZ2VSZXNlcnZlZChwYWdlKSkKKwkJCWdvdG8gc2V0X3N0YXR1czsKKworCQllcnIgPSBwYWdlX3RvX25pZChwYWdlKTsKK3NldF9zdGF0dXM6CisJCXBtLT5zdGF0dXMgPSBlcnI7CisJfQorCisJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIE1vdmUgYSBsaXN0IG9mIHBhZ2VzIGluIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nCisgKiBwcm9jZXNzLgorICovCithc21saW5rYWdlIGxvbmcgc3lzX21vdmVfcGFnZXMocGlkX3QgcGlkLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkJY29uc3Qgdm9pZCBfX3VzZXIgKiBfX3VzZXIgKnBhZ2VzLAorCQkJY29uc3QgaW50IF9fdXNlciAqbm9kZXMsCisJCQlpbnQgX191c2VyICpzdGF0dXMsIGludCBmbGFncykKK3sKKwlpbnQgZXJyID0gMDsKKwlpbnQgaTsKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CisJbm9kZW1hc2tfdCB0YXNrX25vZGVzOworCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOworCXN0cnVjdCBwYWdlX3RvX25vZGUgKnBtID0gTlVMTDsKKworCS8qIENoZWNrIGZsYWdzICovCisJaWYgKGZsYWdzICYgfihNUE9MX01GX01PVkV8TVBPTF9NRl9NT1ZFX0FMTCkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKChmbGFncyAmIE1QT0xfTUZfTU9WRV9BTEwpICYmICFjYXBhYmxlKENBUF9TWVNfTklDRSkpCisJCXJldHVybiAtRVBFUk07CisKKwkvKiBGaW5kIHRoZSBtbV9zdHJ1Y3QgKi8KKwlyZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOworCXRhc2sgPSBwaWQgPyBmaW5kX3Rhc2tfYnlfcGlkKHBpZCkgOiBjdXJyZW50OworCWlmICghdGFzaykgeworCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJCXJldHVybiAtRVNSQ0g7CisJfQorCW1tID0gZ2V0X3Rhc2tfbW0odGFzayk7CisJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOworCisJaWYgKCFtbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoaXMgcHJvY2VzcyBoYXMgdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGUgc3BlY2lmaWVkCisJICogcHJvY2Vzcy4gVGhlIHJpZ2h0IGV4aXN0cyBpZiB0aGUgcHJvY2VzcyBoYXMgYWRtaW5pc3RyYXRpdmUKKwkgKiBjYXBhYmlsaXRpZXMsIHN1cGVydXNlciBwcml2aWxlZ2VzIG9yIHRoZSBzYW1lCisJICogdXNlcmlkIGFzIHRoZSB0YXJnZXQgcHJvY2Vzcy4KKwkgKi8KKwlpZiAoKGN1cnJlbnQtPmV1aWQgIT0gdGFzay0+c3VpZCkgJiYgKGN1cnJlbnQtPmV1aWQgIT0gdGFzay0+dWlkKSAmJgorCSAgICAoY3VycmVudC0+dWlkICE9IHRhc2stPnN1aWQpICYmIChjdXJyZW50LT51aWQgIT0gdGFzay0+dWlkKSAmJgorCSAgICAhY2FwYWJsZShDQVBfU1lTX05JQ0UpKSB7CisJCWVyciA9IC1FUEVSTTsKKwkJZ290byBvdXQyOworCX0KKworIAllcnIgPSBzZWN1cml0eV90YXNrX21vdmVtZW1vcnkodGFzayk7CisgCWlmIChlcnIpCisgCQlnb3RvIG91dDI7CisKKworCXRhc2tfbm9kZXMgPSBjcHVzZXRfbWVtc19hbGxvd2VkKHRhc2spOworCisJLyogTGltaXQgbnJfcGFnZXMgc28gdGhhdCB0aGUgbXVsdGlwbGljYXRpb24gbWF5IG5vdCBvdmVyZmxvdyAqLworCWlmIChucl9wYWdlcyA+PSBVTE9OR19NQVggLyBzaXplb2Yoc3RydWN0IHBhZ2VfdG9fbm9kZSkgLSAxKSB7CisJCWVyciA9IC1FMkJJRzsKKwkJZ290byBvdXQyOworCX0KKworCXBtID0gdm1hbGxvYygobnJfcGFnZXMgKyAxKSAqIHNpemVvZihzdHJ1Y3QgcGFnZV90b19ub2RlKSk7CisJaWYgKCFwbSkgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIG91dDI7CisJfQorCisJLyoKKwkgKiBHZXQgcGFyYW1ldGVycyBmcm9tIHVzZXIgc3BhY2UgYW5kIGluaXRpYWxpemUgdGhlIHBtCisJICogYXJyYXkuIFJldHVybiB2YXJpb3VzIGVycm9ycyBpZiB0aGUgdXNlciBkaWQgc29tZXRoaW5nIHdyb25nLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKSB7CisJCWNvbnN0IHZvaWQgKnA7CisKKwkJZXJyID0gLUVGQVVMVDsKKwkJaWYgKGdldF91c2VyKHAsIHBhZ2VzICsgaSkpCisJCQlnb3RvIG91dDsKKworCQlwbVtpXS5hZGRyID0gKHVuc2lnbmVkIGxvbmcpcDsKKwkJaWYgKG5vZGVzKSB7CisJCQlpbnQgbm9kZTsKKworCQkJaWYgKGdldF91c2VyKG5vZGUsIG5vZGVzICsgaSkpCisJCQkJZ290byBvdXQ7CisKKwkJCWVyciA9IC1FTk9ERVY7CisJCQlpZiAoIW5vZGVfb25saW5lKG5vZGUpKQorCQkJCWdvdG8gb3V0OworCisJCQllcnIgPSAtRUFDQ0VTOworCQkJaWYgKCFub2RlX2lzc2V0KG5vZGUsIHRhc2tfbm9kZXMpKQorCQkJCWdvdG8gb3V0OworCisJCQlwbVtpXS5ub2RlID0gbm9kZTsKKwkJfQorCX0KKwkvKiBFbmQgbWFya2VyICovCisJcG1bbnJfcGFnZXNdLm5vZGUgPSBNQVhfTlVNTk9ERVM7CisKKwlpZiAobm9kZXMpCisJCWVyciA9IGRvX21vdmVfcGFnZXMobW0sIHBtLCBmbGFncyAmIE1QT0xfTUZfTU9WRV9BTEwpOworCWVsc2UKKwkJZXJyID0gZG9fcGFnZXNfc3RhdChtbSwgcG0pOworCisJaWYgKGVyciA+PSAwKQorCQkvKiBSZXR1cm4gc3RhdHVzIGluZm9ybWF0aW9uICovCisJCWZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKQorCQkJaWYgKHB1dF91c2VyKHBtW2ldLnN0YXR1cywgc3RhdHVzICsgaSkpCisJCQkJZXJyID0gLUVGQVVMVDsKKworb3V0OgorCXZmcmVlKHBtKTsKK291dDI6CisJbW1wdXQobW0pOworCXJldHVybiBlcnI7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvbW0vbW1hcC5jIGIvbW0vbW1hcC5jCmluZGV4IGU2ZWUxMjMuLjY0NDZjNjEgMTAwNjQ0Ci0tLSBhL21tL21tYXAuYworKysgYi9tbS9tbWFwLmMKQEAgLTEwNjUsNyArMTA2NSw4IEBACiAJdm1hLT52bV9zdGFydCA9IGFkZHI7CiAJdm1hLT52bV9lbmQgPSBhZGRyICsgbGVuOwogCXZtYS0+dm1fZmxhZ3MgPSB2bV9mbGFnczsKLQl2bWEtPnZtX3BhZ2VfcHJvdCA9IHByb3RlY3Rpb25fbWFwW3ZtX2ZsYWdzICYgMHgwZl07CisJdm1hLT52bV9wYWdlX3Byb3QgPSBwcm90ZWN0aW9uX21hcFt2bV9mbGFncyAmCisJCQkJKFZNX1JFQUR8Vk1fV1JJVEV8Vk1fRVhFQ3xWTV9TSEFSRUQpXTsKIAl2bWEtPnZtX3Bnb2ZmID0gcGdvZmY7CiAKIAlpZiAoZmlsZSkgewpAQCAtMTA4OSw2ICsxMDkwLDEyIEBACiAJCQlnb3RvIGZyZWVfdm1hOwogCX0KIAorCS8qIERvbid0IG1ha2UgdGhlIFZNQSBhdXRvbWF0aWNhbGx5IHdyaXRhYmxlIGlmIGl0J3Mgc2hhcmVkLCBidXQgdGhlCisJICogYmFja2VyIHdpc2hlcyB0byBrbm93IHdoZW4gcGFnZXMgYXJlIGZpcnN0IHdyaXR0ZW4gdG8gKi8KKwlpZiAodm1hLT52bV9vcHMgJiYgdm1hLT52bV9vcHMtPnBhZ2VfbWt3cml0ZSkKKwkJdm1hLT52bV9wYWdlX3Byb3QgPQorCQkJcHJvdGVjdGlvbl9tYXBbdm1fZmxhZ3MgJiAoVk1fUkVBRHxWTV9XUklURXxWTV9FWEVDKV07CisKIAkvKiBXZSBzZXQgVk1fQUNDT1VOVCBpbiBhIHNoYXJlZCBtYXBwaW5nJ3Mgdm1fZmxhZ3MsIHRvIGluZm9ybQogCSAqIHNobWVtX3plcm9fc2V0dXAgKHBlcmhhcHMgY2FsbGVkIHRocm91Z2ggL2Rldi96ZXJvJ3MgLT5tbWFwKQogCSAqIHRoYXQgbWVtb3J5IHJlc2VydmF0aW9uIG11c3QgYmUgY2hlY2tlZDsgYnV0IHRoYXQgcmVzZXJ2YXRpb24KQEAgLTE5MjEsNyArMTkyOCw4IEBACiAJdm1hLT52bV9lbmQgPSBhZGRyICsgbGVuOwogCXZtYS0+dm1fcGdvZmYgPSBwZ29mZjsKIAl2bWEtPnZtX2ZsYWdzID0gZmxhZ3M7Ci0Jdm1hLT52bV9wYWdlX3Byb3QgPSBwcm90ZWN0aW9uX21hcFtmbGFncyAmIDB4MGZdOworCXZtYS0+dm1fcGFnZV9wcm90ID0gcHJvdGVjdGlvbl9tYXBbZmxhZ3MgJgorCQkJCShWTV9SRUFEfFZNX1dSSVRFfFZNX0VYRUN8Vk1fU0hBUkVEKV07CiAJdm1hX2xpbmsobW0sIHZtYSwgcHJldiwgcmJfbGluaywgcmJfcGFyZW50KTsKIG91dDoKIAltbS0+dG90YWxfdm0gKz0gbGVuID4+IFBBR0VfU0hJRlQ7CmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuYwppbmRleCA0YzE0ZDQyLi42MzhlZGFiIDEwMDY0NAotLS0gYS9tbS9tcHJvdGVjdC5jCisrKyBiL21tL21wcm90ZWN0LmMKQEAgLTE5LDcgKzE5LDggQEAKICNpbmNsdWRlIDxsaW51eC9tZW1wb2xpY3kuaD4KICNpbmNsdWRlIDxsaW51eC9wZXJzb25hbGl0eS5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+Ci0KKyNpbmNsdWRlIDxsaW51eC9zd2FwLmg+CisjaW5jbHVkZSA8bGludXgvc3dhcG9wcy5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KICNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPgpAQCAtMjgsMTIgKzI5LDEzIEBACiBzdGF0aWMgdm9pZCBjaGFuZ2VfcHRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLAogCQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLCBwZ3Byb3RfdCBuZXdwcm90KQogewotCXB0ZV90ICpwdGU7CisJcHRlX3QgKnB0ZSwgb2xkcHRlOwogCXNwaW5sb2NrX3QgKnB0bDsKIAogCXB0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sobW0sIHBtZCwgYWRkciwgJnB0bCk7CiAJZG8gewotCQlpZiAocHRlX3ByZXNlbnQoKnB0ZSkpIHsKKwkJb2xkcHRlID0gKnB0ZTsKKwkJaWYgKHB0ZV9wcmVzZW50KG9sZHB0ZSkpIHsKIAkJCXB0ZV90IHB0ZW50OwogCiAJCQkvKiBBdm9pZCBhbiBTTVAgcmFjZSB3aXRoIGhhcmR3YXJlIHVwZGF0ZWQgZGlydHkvY2xlYW4KQEAgLTQzLDcgKzQ1LDIyIEBACiAJCQlwdGVudCA9IHB0ZV9tb2RpZnkocHRlcF9nZXRfYW5kX2NsZWFyKG1tLCBhZGRyLCBwdGUpLCBuZXdwcm90KTsKIAkJCXNldF9wdGVfYXQobW0sIGFkZHIsIHB0ZSwgcHRlbnQpOwogCQkJbGF6eV9tbXVfcHJvdF91cGRhdGUocHRlbnQpOworI2lmZGVmIENPTkZJR19NSUdSQVRJT04KKwkJfSBlbHNlIGlmICghcHRlX2ZpbGUob2xkcHRlKSkgeworCQkJc3dwX2VudHJ5X3QgZW50cnkgPSBwdGVfdG9fc3dwX2VudHJ5KG9sZHB0ZSk7CisKKwkJCWlmIChpc193cml0ZV9taWdyYXRpb25fZW50cnkoZW50cnkpKSB7CisJCQkJLyoKKwkJCQkgKiBBIHByb3RlY3Rpb24gY2hlY2sgaXMgZGlmZmljdWx0IHNvCisJCQkJICoganVzdCBiZSBzYWZlIGFuZCBkaXNhYmxlIHdyaXRlCisJCQkJICovCisJCQkJbWFrZV9taWdyYXRpb25fZW50cnlfcmVhZCgmZW50cnkpOworCQkJCXNldF9wdGVfYXQobW0sIGFkZHIsIHB0ZSwKKwkJCQkJc3dwX2VudHJ5X3RvX3B0ZShlbnRyeSkpOworCQkJfQorI2VuZGlmCiAJCX0KKwogCX0gd2hpbGUgKHB0ZSsrLCBhZGRyICs9IFBBR0VfU0laRSwgYWRkciAhPSBlbmQpOwogCXB0ZV91bm1hcF91bmxvY2socHRlIC0gMSwgcHRsKTsKIH0KQEAgLTEwNiw2ICsxMjMsNyBAQAogCXVuc2lnbmVkIGxvbmcgb2xkZmxhZ3MgPSB2bWEtPnZtX2ZsYWdzOwogCWxvbmcgbnJwYWdlcyA9IChlbmQgLSBzdGFydCkgPj4gUEFHRV9TSElGVDsKIAl1bnNpZ25lZCBsb25nIGNoYXJnZWQgPSAwOworCXVuc2lnbmVkIGludCBtYXNrOwogCXBncHJvdF90IG5ld3Byb3Q7CiAJcGdvZmZfdCBwZ29mZjsKIAlpbnQgZXJyb3I7CkBAIC0xMzIsOCArMTUwLDYgQEAKIAkJfQogCX0KIAotCW5ld3Byb3QgPSBwcm90ZWN0aW9uX21hcFtuZXdmbGFncyAmIDB4Zl07Ci0KIAkvKgogCSAqIEZpcnN0IHRyeSB0byBtZXJnZSB3aXRoIHByZXZpb3VzIGFuZC9vciBuZXh0IHZtYS4KIAkgKi8KQEAgLTE2MCw2ICsxNzYsMTQgQEAKIAl9CiAKIHN1Y2Nlc3M6CisJLyogRG9uJ3QgbWFrZSB0aGUgVk1BIGF1dG9tYXRpY2FsbHkgd3JpdGFibGUgaWYgaXQncyBzaGFyZWQsIGJ1dCB0aGUKKwkgKiBiYWNrZXIgd2lzaGVzIHRvIGtub3cgd2hlbiBwYWdlcyBhcmUgZmlyc3Qgd3JpdHRlbiB0byAqLworCW1hc2sgPSBWTV9SRUFEfFZNX1dSSVRFfFZNX0VYRUN8Vk1fU0hBUkVEOworCWlmICh2bWEtPnZtX29wcyAmJiB2bWEtPnZtX29wcy0+cGFnZV9ta3dyaXRlKQorCQltYXNrICY9IH5WTV9TSEFSRUQ7CisKKwluZXdwcm90ID0gcHJvdGVjdGlvbl9tYXBbbmV3ZmxhZ3MgJiBtYXNrXTsKKwogCS8qCiAJICogdm1fZmxhZ3MgYW5kIHZtX3BhZ2VfcHJvdCBhcmUgcHJvdGVjdGVkIGJ5IHRoZSBtbWFwX3NlbQogCSAqIGhlbGQgaW4gd3JpdGUgbW9kZS4KQEAgLTIwNSw4ICsyMjksNyBAQAogCS8qCiAJICogRG9lcyB0aGUgYXBwbGljYXRpb24gZXhwZWN0IFBST1RfUkVBRCB0byBpbXBseSBQUk9UX0VYRUM6CiAJICovCi0JaWYgKHVubGlrZWx5KChwcm90ICYgUFJPVF9SRUFEKSAmJgotCQkJKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgUkVBRF9JTVBMSUVTX0VYRUMpKSkKKwlpZiAoKHByb3QgJiBQUk9UX1JFQUQpICYmIChjdXJyZW50LT5wZXJzb25hbGl0eSAmIFJFQURfSU1QTElFU19FWEVDKSkKIAkJcHJvdCB8PSBQUk9UX0VYRUM7CiAKIAl2bV9mbGFncyA9IGNhbGNfdm1fcHJvdF9iaXRzKHByb3QpOwpkaWZmIC0tZ2l0IGEvbW0vbXN5bmMuYyBiL21tL21zeW5jLmMKaW5kZXggYmM2Yzk1My4uZDA4MzU0NCAxMDA2NDQKLS0tIGEvbW0vbXN5bmMuYworKysgYi9tbS9tc3luYy5jCkBAIC0xNzAsOCArMTcwLDYgQEAKIAkgKiBqdXN0IGlnbm9yZSB0aGVtLCBidXQgcmV0dXJuIC1FTk9NRU0gYXQgdGhlIGVuZC4KIAkgKi8KIAlkb3duX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7Ci0JaWYgKGZsYWdzICYgTVNfU1lOQykKLQkJY3VycmVudC0+ZmxhZ3MgfD0gUEZfU1lOQ1dSSVRFOwogCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1tLCBzdGFydCk7CiAJaWYgKCF2bWEpIHsKIAkJZXJyb3IgPSAtRU5PTUVNOwpAQCAtMjI4LDcgKzIyNiw2IEBACiAJCX0KIAl9IHdoaWxlICh2bWEgJiYgIWRvbmUpOwogb3V0X3VubG9jazoKLQljdXJyZW50LT5mbGFncyAmPSB+UEZfU1lOQ1dSSVRFOwogCXVwX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CiBvdXQ6CiAJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9raWxsLmMKaW5kZXggMDQyZTY0My4uZDQ2ZWQwZiAxMDA2NDQKLS0tIGEvbW0vb29tX2tpbGwuYworKysgYi9tbS9vb21fa2lsbC5jCkBAIC0yMiwxMCArMjIsMTEgQEAKICNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CiAjaW5jbHVkZSA8bGludXgvY3B1c2V0Lmg+CiAKK2ludCBzeXNjdGxfcGFuaWNfb25fb29tOwogLyogI2RlZmluZSBERUJVRyAqLwogCiAvKioKLSAqIG9vbV9iYWRuZXNzIC0gY2FsY3VsYXRlIGEgbnVtZXJpYyB2YWx1ZSBmb3IgaG93IGJhZCB0aGlzIHRhc2sgaGFzIGJlZW4KKyAqIGJhZG5lc3MgLSBjYWxjdWxhdGUgYSBudW1lcmljIHZhbHVlIGZvciBob3cgYmFkIHRoaXMgdGFzayBoYXMgYmVlbgogICogQHA6IHRhc2sgc3RydWN0IG9mIHdoaWNoIHRhc2sgd2Ugc2hvdWxkIGNhbGN1bGF0ZQogICogQHVwdGltZTogY3VycmVudCB1cHRpbWUgaW4gc2Vjb25kcwogICoKQEAgLTIwMCw3ICsyMDEsNyBAQAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogVGhpcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiByZWxlYXNpbmcgbWVtb3J5IHNvIGZvciB3YWl0IGl0CisJCSAqIFRoaXMgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgcmVsZWFzaW5nIG1lbW9yeSBzbyB3YWl0IGZvciBpdAogCQkgKiB0byBmaW5pc2ggYmVmb3JlIGtpbGxpbmcgc29tZSBvdGhlciB0YXNrIGJ5IG1pc3Rha2UuCiAJCSAqLwogCQlyZWxlYXNpbmcgPSB0ZXN0X3Rza190aHJlYWRfZmxhZyhwLCBUSUZfTUVNRElFKSB8fApAQCAtMzA2LDcgKzMwNyw3IEBACiB9CiAKIC8qKgotICogb29tX2tpbGwgLSBraWxsIHRoZSAiYmVzdCIgcHJvY2VzcyB3aGVuIHdlIHJ1biBvdXQgb2YgbWVtb3J5CisgKiBvdXRfb2ZfbWVtb3J5IC0ga2lsbCB0aGUgImJlc3QiIHByb2Nlc3Mgd2hlbiB3ZSBydW4gb3V0IG9mIG1lbW9yeQogICoKICAqIElmIHdlIHJ1biBvdXQgb2YgbWVtb3J5LCB3ZSBoYXZlIHRoZSBjaG9pY2UgYmV0d2VlbiBlaXRoZXIKICAqIGtpbGxpbmcgYSByYW5kb20gdGFzayAoYmFkKSwgbGV0dGluZyB0aGUgc3lzdGVtIGNyYXNoICh3b3JzZSkKQEAgLTM0NCw2ICszNDUsOCBAQAogCQlicmVhazsKIAogCWNhc2UgQ09OU1RSQUlOVF9OT05FOgorCQlpZiAoc3lzY3RsX3BhbmljX29uX29vbSkKKwkJCXBhbmljKCJvdXQgb2YgbWVtb3J5LiBwYW5pY19vbl9vb20gaXMgc2VsZWN0ZWRcbiIpOwogcmV0cnk6CiAJCS8qCiAJCSAqIFJhbWJvIG1vZGU6IFNob290IGRvd24gYSBwcm9jZXNzIGFuZCBob3BlIGl0IHNvbHZlcyB3aGF0ZXZlcgpkaWZmIC0tZ2l0IGEvbW0vcGFnZS13cml0ZWJhY2suYyBiL21tL3BhZ2Utd3JpdGViYWNrLmMKaW5kZXggNzVkN2Y0OC4uOGNjZjZmMSAxMDA2NDQKLS0tIGEvbW0vcGFnZS13cml0ZWJhY2suYworKysgYi9tbS9wYWdlLXdyaXRlYmFjay5jCkBAIC0yMDQsNiArMjA0LDcgQEAKIAkJCS5zeW5jX21vZGUJPSBXQl9TWU5DX05PTkUsCiAJCQkub2xkZXJfdGhhbl90aGlzID0gTlVMTCwKIAkJCS5ucl90b193cml0ZQk9IHdyaXRlX2NodW5rLAorCQkJLnJhbmdlX2N5Y2xpYwk9IDEsCiAJCX07CiAKIAkJZ2V0X2RpcnR5X2xpbWl0cygmd2JzLCAmYmFja2dyb3VuZF90aHJlc2gsCkBAIC0zMzEsNiArMzMyLDcgQEAKIAkJLm9sZGVyX3RoYW5fdGhpcyA9IE5VTEwsCiAJCS5ucl90b193cml0ZQk9IDAsCiAJCS5ub25ibG9ja2luZwk9IDEsCisJCS5yYW5nZV9jeWNsaWMJPSAxLAogCX07CiAKIAlmb3IgKCA7IDsgKSB7CkBAIC00MDcsNiArNDA5LDcgQEAKIAkJLm5yX3RvX3dyaXRlCT0gMCwKIAkJLm5vbmJsb2NraW5nCT0gMSwKIAkJLmZvcl9rdXBkYXRlCT0gMSwKKwkJLnJhbmdlX2N5Y2xpYwk9IDEsCiAJfTsKIAogCXN5bmNfc3VwZXJzKCk7CmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmMKaW5kZXggMjUzYTQ1MC4uNDIzZGIwZCAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCisrKyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L25vZGVtYXNrLmg+CiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgogI2luY2x1ZGUgPGxpbnV4L21lbXBvbGljeS5oPgorI2luY2x1ZGUgPGxpbnV4L3N0b3BfbWFjaGluZS5oPgogCiAjaW5jbHVkZSA8YXNtL3RsYmZsdXNoLmg+CiAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+CkBAIC04Myw4ICs4NCw4IEBACiBzdGF0aWMgY2hhciAqem9uZV9uYW1lc1tNQVhfTlJfWk9ORVNdID0geyAiRE1BIiwgIkRNQTMyIiwgIk5vcm1hbCIsICJIaWdoTWVtIiB9OwogaW50IG1pbl9mcmVlX2tieXRlcyA9IDEwMjQ7CiAKLXVuc2lnbmVkIGxvbmcgX19pbml0ZGF0YSBucl9rZXJuZWxfcGFnZXM7Ci11bnNpZ25lZCBsb25nIF9faW5pdGRhdGEgbnJfYWxsX3BhZ2VzOwordW5zaWduZWQgbG9uZyBfX21lbWluaXRkYXRhIG5yX2tlcm5lbF9wYWdlczsKK3Vuc2lnbmVkIGxvbmcgX19tZW1pbml0ZGF0YSBucl9hbGxfcGFnZXM7CiAKICNpZmRlZiBDT05GSUdfREVCVUdfVk0KIHN0YXRpYyBpbnQgcGFnZV9vdXRzaWRlX3pvbmVfYm91bmRhcmllcyhzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCkBAIC0yODYsMjIgKzI4NywyNyBAQAogICogd2UgY2FuIGRvIGNvYWxlc2NlIGEgcGFnZSBhbmQgaXRzIGJ1ZGR5IGlmCiAgKiAoYSkgdGhlIGJ1ZGR5IGlzIG5vdCBpbiBhIGhvbGUgJiYKICAqIChiKSB0aGUgYnVkZHkgaXMgaW4gdGhlIGJ1ZGR5IHN5c3RlbSAmJgotICogKGMpIGEgcGFnZSBhbmQgaXRzIGJ1ZGR5IGhhdmUgdGhlIHNhbWUgb3JkZXIuCisgKiAoYykgYSBwYWdlIGFuZCBpdHMgYnVkZHkgaGF2ZSB0aGUgc2FtZSBvcmRlciAmJgorICogKGQpIGEgcGFnZSBhbmQgaXRzIGJ1ZGR5IGFyZSBpbiB0aGUgc2FtZSB6b25lLgogICoKICAqIEZvciByZWNvcmRpbmcgd2hldGhlciBhIHBhZ2UgaXMgaW4gdGhlIGJ1ZGR5IHN5c3RlbSwgd2UgdXNlIFBHX2J1ZGR5LgogICogU2V0dGluZywgY2xlYXJpbmcsIGFuZCB0ZXN0aW5nIFBHX2J1ZGR5IGlzIHNlcmlhbGl6ZWQgYnkgem9uZS0+bG9jay4KICAqCiAgKiBGb3IgcmVjb3JkaW5nIHBhZ2UncyBvcmRlciwgd2UgdXNlIHBhZ2VfcHJpdmF0ZShwYWdlKS4KICAqLwotc3RhdGljIGlubGluZSBpbnQgcGFnZV9pc19idWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9yZGVyKQorc3RhdGljIGlubGluZSBpbnQgcGFnZV9pc19idWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHBhZ2UgKmJ1ZGR5LAorCQkJCQkJCQlpbnQgb3JkZXIpCiB7CiAjaWZkZWYgQ09ORklHX0hPTEVTX0lOX1pPTkUKLQlpZiAoIXBmbl92YWxpZChwYWdlX3RvX3BmbihwYWdlKSkpCisJaWYgKCFwZm5fdmFsaWQocGFnZV90b19wZm4oYnVkZHkpKSkKIAkJcmV0dXJuIDA7CiAjZW5kaWYKIAotCWlmIChQYWdlQnVkZHkocGFnZSkgJiYgcGFnZV9vcmRlcihwYWdlKSA9PSBvcmRlcikgewotCQlCVUdfT04ocGFnZV9jb3VudChwYWdlKSAhPSAwKTsKKwlpZiAocGFnZV96b25lX2lkKHBhZ2UpICE9IHBhZ2Vfem9uZV9pZChidWRkeSkpCisJCXJldHVybiAwOworCisJaWYgKFBhZ2VCdWRkeShidWRkeSkgJiYgcGFnZV9vcmRlcihidWRkeSkgPT0gb3JkZXIpIHsKKwkJQlVHX09OKHBhZ2VfY291bnQoYnVkZHkpICE9IDApOwogCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJuIDA7CkBAIC0zNTIsNyArMzU4LDcgQEAKIAkJc3RydWN0IHBhZ2UgKmJ1ZGR5OwogCiAJCWJ1ZGR5ID0gX19wYWdlX2ZpbmRfYnVkZHkocGFnZSwgcGFnZV9pZHgsIG9yZGVyKTsKLQkJaWYgKCFwYWdlX2lzX2J1ZGR5KGJ1ZGR5LCBvcmRlcikpCisJCWlmICghcGFnZV9pc19idWRkeShwYWdlLCBidWRkeSwgb3JkZXIpKQogCQkJYnJlYWs7CQkvKiBNb3ZlIHRoZSBidWRkeSB1cCBvbmUgbGV2ZWwuICovCiAKIAkJbGlzdF9kZWwoJmJ1ZGR5LT5scnUpOwpAQCAtMTQ4NSw3ICsxNDkxLDcgQEAKIAl9CiAKIAlmb3JfZWFjaF96b25lKHpvbmUpIHsKLSAJCXVuc2lnbmVkIGxvbmcgbnIsIGZsYWdzLCBvcmRlciwgdG90YWwgPSAwOworIAkJdW5zaWduZWQgbG9uZyBucltNQVhfT1JERVJdLCBmbGFncywgb3JkZXIsIHRvdGFsID0gMDsKIAogCQlzaG93X25vZGUoem9uZSk7CiAJCXByaW50aygiJXM6ICIsIHpvbmUtPm5hbWUpOwpAQCAtMTQ5NiwxMSArMTUwMiwxMiBAQAogCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZ6b25lLT5sb2NrLCBmbGFncyk7CiAJCWZvciAob3JkZXIgPSAwOyBvcmRlciA8IE1BWF9PUkRFUjsgb3JkZXIrKykgewotCQkJbnIgPSB6b25lLT5mcmVlX2FyZWFbb3JkZXJdLm5yX2ZyZWU7Ci0JCQl0b3RhbCArPSBuciA8PCBvcmRlcjsKLQkJCXByaW50aygiJWx1KiVsdWtCICIsIG5yLCBLKDFVTCkgPDwgb3JkZXIpOworCQkJbnJbb3JkZXJdID0gem9uZS0+ZnJlZV9hcmVhW29yZGVyXS5ucl9mcmVlOworCQkJdG90YWwgKz0gbnJbb3JkZXJdIDw8IG9yZGVyOwogCQl9CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnpvbmUtPmxvY2ssIGZsYWdzKTsKKwkJZm9yIChvcmRlciA9IDA7IG9yZGVyIDwgTUFYX09SREVSOyBvcmRlcisrKQorCQkJcHJpbnRrKCIlbHUqJWx1a0IgIiwgbnJbb3JkZXJdLCBLKDFVTCkgPDwgb3JkZXIpOwogCQlwcmludGsoIj0gJWx1a0JcbiIsIEsodG90YWwpKTsKIAl9CiAKQEAgLTE1MTIsNyArMTUxOSw3IEBACiAgKgogICogQWRkIGFsbCBwb3B1bGF0ZWQgem9uZXMgb2YgYSBub2RlIHRvIHRoZSB6b25lbGlzdC4KICAqLwotc3RhdGljIGludCBfX2luaXQgYnVpbGRfem9uZWxpc3RzX25vZGUocGdfZGF0YV90ICpwZ2RhdCwKK3N0YXRpYyBpbnQgX19tZW1pbml0IGJ1aWxkX3pvbmVsaXN0c19ub2RlKHBnX2RhdGFfdCAqcGdkYXQsCiAJCQlzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0LCBpbnQgbnJfem9uZXMsIGludCB6b25lX3R5cGUpCiB7CiAJc3RydWN0IHpvbmUgKnpvbmU7CkBAIC0xNTQ4LDcgKzE1NTUsNyBAQAogCiAjaWZkZWYgQ09ORklHX05VTUEKICNkZWZpbmUgTUFYX05PREVfTE9BRCAobnVtX29ubGluZV9ub2RlcygpKQotc3RhdGljIGludCBfX2luaXRkYXRhIG5vZGVfbG9hZFtNQVhfTlVNTk9ERVNdOworc3RhdGljIGludCBfX21lbWluaXRkYXRhIG5vZGVfbG9hZFtNQVhfTlVNTk9ERVNdOwogLyoqCiAgKiBmaW5kX25leHRfYmVzdF9ub2RlIC0gZmluZCB0aGUgbmV4dCBub2RlIHRoYXQgc2hvdWxkIGFwcGVhciBpbiBhIGdpdmVuIG5vZGUncyBmYWxsYmFjayBsaXN0CiAgKiBAbm9kZTogbm9kZSB3aG9zZSBmYWxsYmFjayBsaXN0IHdlJ3JlIGFwcGVuZGluZwpAQCAtMTU2Myw3ICsxNTcwLDcgQEAKICAqIG9uIHRoZW0gb3RoZXJ3aXNlLgogICogSXQgcmV0dXJucyAtMSBpZiBubyBub2RlIGlzIGZvdW5kLgogICovCi1zdGF0aWMgaW50IF9faW5pdCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzaykKK3N0YXRpYyBpbnQgX19tZW1pbml0IGZpbmRfbmV4dF9iZXN0X25vZGUoaW50IG5vZGUsIG5vZGVtYXNrX3QgKnVzZWRfbm9kZV9tYXNrKQogewogCWludCBuLCB2YWw7CiAJaW50IG1pbl92YWwgPSBJTlRfTUFYOwpAQCAtMTYwOSw3ICsxNjE2LDcgQEAKIAlyZXR1cm4gYmVzdF9ub2RlOwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgYnVpbGRfem9uZWxpc3RzKHBnX2RhdGFfdCAqcGdkYXQpCitzdGF0aWMgdm9pZCBfX21lbWluaXQgYnVpbGRfem9uZWxpc3RzKHBnX2RhdGFfdCAqcGdkYXQpCiB7CiAJaW50IGksIGosIGssIG5vZGUsIGxvY2FsX25vZGU7CiAJaW50IHByZXZfbm9kZSwgbG9hZDsKQEAgLTE2NjEsNyArMTY2OCw3IEBACiAKICNlbHNlCS8qIENPTkZJR19OVU1BICovCiAKLXN0YXRpYyB2b2lkIF9faW5pdCBidWlsZF96b25lbGlzdHMocGdfZGF0YV90ICpwZ2RhdCkKK3N0YXRpYyB2b2lkIF9fbWVtaW5pdCBidWlsZF96b25lbGlzdHMocGdfZGF0YV90ICpwZ2RhdCkKIHsKIAlpbnQgaSwgaiwgaywgbm9kZSwgbG9jYWxfbm9kZTsKIApAQCAtMTY5OSwxNCArMTcwNiwyOSBAQAogCiAjZW5kaWYJLyogQ09ORklHX05VTUEgKi8KIAotdm9pZCBfX2luaXQgYnVpbGRfYWxsX3pvbmVsaXN0cyh2b2lkKQorLyogcmV0dXJuIHZhbHVlcyBpbnQgLi4uLmp1c3QgZm9yIHN0b3BfbWFjaGluZV9ydW4oKSAqLworc3RhdGljIGludCBfX21lbWluaXQgX19idWlsZF9hbGxfem9uZWxpc3RzKHZvaWQgKmR1bW15KQogewotCWludCBpOworCWludCBuaWQ7CisJZm9yX2VhY2hfb25saW5lX25vZGUobmlkKQorCQlidWlsZF96b25lbGlzdHMoTk9ERV9EQVRBKG5pZCkpOworCXJldHVybiAwOworfQogCi0JZm9yX2VhY2hfb25saW5lX25vZGUoaSkKLQkJYnVpbGRfem9uZWxpc3RzKE5PREVfREFUQShpKSk7Ci0JcHJpbnRrKCJCdWlsdCAlaSB6b25lbGlzdHNcbiIsIG51bV9vbmxpbmVfbm9kZXMoKSk7Ci0JY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQoKTsKK3ZvaWQgX19tZW1pbml0IGJ1aWxkX2FsbF96b25lbGlzdHModm9pZCkKK3sKKwlpZiAoc3lzdGVtX3N0YXRlID09IFNZU1RFTV9CT09USU5HKSB7CisJCV9fYnVpbGRfYWxsX3pvbmVsaXN0cygwKTsKKwkJY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQoKTsKKwl9IGVsc2UgeworCQkvKiB3ZSBoYXZlIHRvIHN0b3AgYWxsIGNwdXMgdG8gZ3VhcmFubnRlZSB0aGVyZSBpcyBubyB1c2VyCisJCSAgIG9mIHpvbmVsaXN0ICovCisJCXN0b3BfbWFjaGluZV9ydW4oX19idWlsZF9hbGxfem9uZWxpc3RzLCBOVUxMLCBOUl9DUFVTKTsKKwkJLyogY3B1c2V0IHJlZnJlc2ggcm91dGluZSBzaG91bGQgYmUgaGVyZSAqLworCX0KKwl2bV90b3RhbF9wYWdlcyA9IG5yX2ZyZWVfcGFnZWNhY2hlX3BhZ2VzKCk7CisJcHJpbnRrKCJCdWlsdCAlaSB6b25lbGlzdHMuICBUb3RhbCBwYWdlczogJWxkXG4iLAorCQkJbnVtX29ubGluZV9ub2RlcygpLCB2bV90b3RhbF9wYWdlcyk7CiB9CiAKIC8qCkBAIC0xNzIyLDcgKzE3NDQsOCBAQAogICovCiAjZGVmaW5lIFBBR0VTX1BFUl9XQUlUUVVFVUUJMjU2CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB3YWl0X3RhYmxlX3NpemUodW5zaWduZWQgbG9uZyBwYWdlcykKKyNpZm5kZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgd2FpdF90YWJsZV9oYXNoX25yX2VudHJpZXModW5zaWduZWQgbG9uZyBwYWdlcykKIHsKIAl1bnNpZ25lZCBsb25nIHNpemUgPSAxOwogCkBAIC0xNzQwLDYgKzE3NjMsMjkgQEAKIAogCXJldHVybiBtYXgoc2l6ZSwgNFVMKTsKIH0KKyNlbHNlCisvKgorICogQSB6b25lJ3Mgc2l6ZSBtaWdodCBiZSBjaGFuZ2VkIGJ5IGhvdC1hZGQsIHNvIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUKKyAqIGEgc3VpdGFibGUgc2l6ZSBmb3IgaXRzIHdhaXRfdGFibGUuICBTbyB3ZSB1c2UgdGhlIG1heGltdW0gc2l6ZSBub3cuCisgKgorICogVGhlIG1heCB3YWl0IHRhYmxlIHNpemUgPSA0MDk2IHggc2l6ZW9mKHdhaXRfcXVldWVfaGVhZF90KS4gICBpZToKKyAqCisgKiAgICBpMzg2IChwcmVlbXB0aW9uIGNvbmZpZykgICAgOiA0MDk2IHggMTYgPSA2NEtieXRlLgorICogICAgaWE2NCwgeDg2LTY0IChubyBwcmVlbXB0aW9uKTogNDA5NiB4IDIwID0gODBLYnl0ZS4KKyAqICAgIGlhNjQsIHg4Ni02NCAocHJlZW1wdGlvbikgICA6IDQwOTYgeCAyNCA9IDk2S2J5dGUuCisgKgorICogVGhlIG1heGltdW0gZW50cmllcyBhcmUgcHJlcGFyZWQgd2hlbiBhIHpvbmUncyBtZW1vcnkgaXMgKDUxMksgKyAyNTYpIHBhZ2VzCisgKiBvciBtb3JlIGJ5IHRoZSB0cmFkaXRpb25hbCB3YXkuIChTZWUgYWJvdmUpLiAgSXQgZXF1YWxzOgorICoKKyAqICAgIGkzODYsIHg4Ni02NCwgcG93ZXJwYyg0SyBwYWdlIHNpemUpIDogPSAgKCAyRyArIDFNKWJ5dGUuCisgKiAgICBpYTY0KDE2SyBwYWdlIHNpemUpICAgICAgICAgICAgICAgICA6ID0gICggOEcgKyA0TSlieXRlLgorICogICAgcG93ZXJwYyAoNjRLIHBhZ2Ugc2l6ZSkgICAgICAgICAgICAgOiA9ICAoMzJHICsxNk0pYnl0ZS4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHdhaXRfdGFibGVfaGFzaF9ucl9lbnRyaWVzKHVuc2lnbmVkIGxvbmcgcGFnZXMpCit7CisJcmV0dXJuIDQwOTZVTDsKK30KKyNlbmRpZgogCiAvKgogICogVGhpcyBpcyBhbiBpbnRlZ2VyIGxvZ2FyaXRobSBzbyB0aGF0IHNoaWZ0cyBjYW4gYmUgdXNlZCBsYXRlcgpAQCAtMjAwNSwyMyArMjA1MSw0NiBAQAogI2VuZGlmCiAKIHN0YXRpYyBfX21lbWluaXQKLXZvaWQgem9uZV93YWl0X3RhYmxlX2luaXQoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGxvbmcgem9uZV9zaXplX3BhZ2VzKQoraW50IHpvbmVfd2FpdF90YWJsZV9pbml0KHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBsb25nIHpvbmVfc2l6ZV9wYWdlcykKIHsKIAlpbnQgaTsKIAlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gem9uZS0+em9uZV9wZ2RhdDsKKwlzaXplX3QgYWxsb2Nfc2l6ZTsKIAogCS8qCiAJICogVGhlIHBlci1wYWdlIHdhaXRxdWV1ZSBtZWNoYW5pc20gdXNlcyBoYXNoZWQgd2FpdHF1ZXVlcwogCSAqIHBlciB6b25lLgogCSAqLwotCXpvbmUtPndhaXRfdGFibGVfc2l6ZSA9IHdhaXRfdGFibGVfc2l6ZSh6b25lX3NpemVfcGFnZXMpOwotCXpvbmUtPndhaXRfdGFibGVfYml0cyA9CXdhaXRfdGFibGVfYml0cyh6b25lLT53YWl0X3RhYmxlX3NpemUpOwotCXpvbmUtPndhaXRfdGFibGUgPSAod2FpdF9xdWV1ZV9oZWFkX3QgKikKLQkJYWxsb2NfYm9vdG1lbV9ub2RlKHBnZGF0LCB6b25lLT53YWl0X3RhYmxlX3NpemUKLQkJCQkJKiBzaXplb2Yod2FpdF9xdWV1ZV9oZWFkX3QpKTsKKwl6b25lLT53YWl0X3RhYmxlX2hhc2hfbnJfZW50cmllcyA9CisJCSB3YWl0X3RhYmxlX2hhc2hfbnJfZW50cmllcyh6b25lX3NpemVfcGFnZXMpOworCXpvbmUtPndhaXRfdGFibGVfYml0cyA9CisJCXdhaXRfdGFibGVfYml0cyh6b25lLT53YWl0X3RhYmxlX2hhc2hfbnJfZW50cmllcyk7CisJYWxsb2Nfc2l6ZSA9IHpvbmUtPndhaXRfdGFibGVfaGFzaF9ucl9lbnRyaWVzCisJCQkJCSogc2l6ZW9mKHdhaXRfcXVldWVfaGVhZF90KTsKIAotCWZvcihpID0gMDsgaSA8IHpvbmUtPndhaXRfdGFibGVfc2l6ZTsgKytpKQorIAlpZiAoc3lzdGVtX3N0YXRlID09IFNZU1RFTV9CT09USU5HKSB7CisJCXpvbmUtPndhaXRfdGFibGUgPSAod2FpdF9xdWV1ZV9oZWFkX3QgKikKKwkJCWFsbG9jX2Jvb3RtZW1fbm9kZShwZ2RhdCwgYWxsb2Nfc2l6ZSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogVGhpcyBjYXNlIG1lYW5zIHRoYXQgYSB6b25lIHdob3NlIHNpemUgd2FzIDAgZ2V0cyBuZXcgbWVtb3J5CisJCSAqIHZpYSBtZW1vcnkgaG90LWFkZC4KKwkJICogQnV0IGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGEgbmV3IG5vZGUgd2FzIGhvdC1hZGRlZC4gIEluCisJCSAqIHRoaXMgY2FzZSB2bWFsbG9jKCkgd2lsbCBub3QgYmUgYWJsZSB0byB1c2UgdGhpcyBuZXcgbm9kZSdzCisJCSAqIG1lbW9yeSAtIHRoaXMgd2FpdF90YWJsZSBtdXN0IGJlIGluaXRpYWxpemVkIHRvIHVzZSB0aGlzIG5ldworCQkgKiBub2RlIGl0c2VsZiBhcyB3ZWxsLgorCQkgKiBUbyB1c2UgdGhpcyBuZXcgbm9kZSdzIG1lbW9yeSwgZnVydGhlciBjb25zaWRlcmF0aW9uIHdpbGwgYmUKKwkJICogbmVjZXNzYXJ5LgorCQkgKi8KKwkJem9uZS0+d2FpdF90YWJsZSA9ICh3YWl0X3F1ZXVlX2hlYWRfdCAqKXZtYWxsb2MoYWxsb2Nfc2l6ZSk7CisJfQorCWlmICghem9uZS0+d2FpdF90YWJsZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IoaSA9IDA7IGkgPCB6b25lLT53YWl0X3RhYmxlX2hhc2hfbnJfZW50cmllczsgKytpKQogCQlpbml0X3dhaXRxdWV1ZV9oZWFkKHpvbmUtPndhaXRfdGFibGUgKyBpKTsKKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgX19tZW1pbml0IHZvaWQgem9uZV9wY3BfaW5pdChzdHJ1Y3Qgem9uZSAqem9uZSkKQEAgLTIwNDMsMTIgKzIxMTIsMTUgQEAKIAkJCXpvbmUtPm5hbWUsIHpvbmUtPnByZXNlbnRfcGFnZXMsIGJhdGNoKTsKIH0KIAotc3RhdGljIF9fbWVtaW5pdCB2b2lkIGluaXRfY3VycmVudGx5X2VtcHR5X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsCi0JCXVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK19fbWVtaW5pdCBpbnQgaW5pdF9jdXJyZW50bHlfZW1wdHlfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwKKwkJCQkJdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BmbiwKKwkJCQkJdW5zaWduZWQgbG9uZyBzaXplKQogewogCXN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSB6b25lLT56b25lX3BnZGF0OwotCi0Jem9uZV93YWl0X3RhYmxlX2luaXQoem9uZSwgc2l6ZSk7CisJaW50IHJldDsKKwlyZXQgPSB6b25lX3dhaXRfdGFibGVfaW5pdCh6b25lLCBzaXplKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCXBnZGF0LT5ucl96b25lcyA9IHpvbmVfaWR4KHpvbmUpICsgMTsKIAogCXpvbmUtPnpvbmVfc3RhcnRfcGZuID0gem9uZV9zdGFydF9wZm47CkBAIC0yMDU2LDYgKzIxMjgsOCBAQAogCW1lbW1hcF9pbml0KHNpemUsIHBnZGF0LT5ub2RlX2lkLCB6b25lX2lkeCh6b25lKSwgem9uZV9zdGFydF9wZm4pOwogCiAJem9uZV9pbml0X2ZyZWVfbGlzdHMocGdkYXQsIHpvbmUsIHpvbmUtPnNwYW5uZWRfcGFnZXMpOworCisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0yMDY0LDEyICsyMTM4LDEzIEBACiAgKiAgIC0gbWFyayBhbGwgbWVtb3J5IHF1ZXVlcyBlbXB0eQogICogICAtIGNsZWFyIHRoZSBtZW1vcnkgYml0bWFwcwogICovCi1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV9hcmVhX2luaXRfY29yZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LAorc3RhdGljIHZvaWQgX19tZW1pbml0IGZyZWVfYXJlYV9pbml0X2NvcmUoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKIAkJdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUpCiB7CiAJdW5zaWduZWQgbG9uZyBqOwogCWludCBuaWQgPSBwZ2RhdC0+bm9kZV9pZDsKIAl1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGZuID0gcGdkYXQtPm5vZGVfc3RhcnRfcGZuOworCWludCByZXQ7CiAKIAlwZ2RhdF9yZXNpemVfaW5pdChwZ2RhdCk7CiAJcGdkYXQtPm5yX3pvbmVzID0gMDsKQEAgLTIxMTEsNyArMjE4Niw4IEBACiAJCQljb250aW51ZTsKIAogCQl6b25ldGFibGVfYWRkKHpvbmUsIG5pZCwgaiwgem9uZV9zdGFydF9wZm4sIHNpemUpOwotCQlpbml0X2N1cnJlbnRseV9lbXB0eV96b25lKHpvbmUsIHpvbmVfc3RhcnRfcGZuLCBzaXplKTsKKwkJcmV0ID0gaW5pdF9jdXJyZW50bHlfZW1wdHlfem9uZSh6b25lLCB6b25lX3N0YXJ0X3Bmbiwgc2l6ZSk7CisJCUJVR19PTihyZXQpOwogCQl6b25lX3N0YXJ0X3BmbiArPSBzaXplOwogCX0KIH0KQEAgLTIxNTIsNyArMjIyOCw3IEBACiAjZW5kaWYgLyogQ09ORklHX0ZMQVRfTk9ERV9NRU1fTUFQICovCiB9CiAKLXZvaWQgX19pbml0IGZyZWVfYXJlYV9pbml0X25vZGUoaW50IG5pZCwgc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKK3ZvaWQgX19tZW1pbml0IGZyZWVfYXJlYV9pbml0X25vZGUoaW50IG5pZCwgc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKIAkJdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3BmbiwKIAkJdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUpCiB7CkBAIC0yODA0LDQyICsyODgwLDE0IEBACiB9CiAKICNpZmRlZiBDT05GSUdfT1VUX09GX0xJTkVfUEZOX1RPX1BBR0UKLS8qCi0gKiBwZm4gPC0+IHBhZ2UgdHJhbnNsYXRpb24uIG91dC1vZi1saW5lIHZlcnNpb24uCi0gKiAoc2VlIGFzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oKQotICovCi0jaWYgZGVmaW5lZChDT05GSUdfRkxBVE1FTSkKIHN0cnVjdCBwYWdlICpwZm5fdG9fcGFnZSh1bnNpZ25lZCBsb25nIHBmbikKIHsKLQlyZXR1cm4gbWVtX21hcCArIChwZm4gLSBBUkNIX1BGTl9PRkZTRVQpOworCXJldHVybiBfX3Bmbl90b19wYWdlKHBmbik7CiB9CiB1bnNpZ25lZCBsb25nIHBhZ2VfdG9fcGZuKHN0cnVjdCBwYWdlICpwYWdlKQogewotCXJldHVybiAocGFnZSAtIG1lbV9tYXApICsgQVJDSF9QRk5fT0ZGU0VUOworCXJldHVybiBfX3BhZ2VfdG9fcGZuKHBhZ2UpOwogfQotI2VsaWYgZGVmaW5lZChDT05GSUdfRElTQ09OVElHTUVNKQotc3RydWN0IHBhZ2UgKnBmbl90b19wYWdlKHVuc2lnbmVkIGxvbmcgcGZuKQotewotCWludCBuaWQgPSBhcmNoX3Bmbl90b19uaWQocGZuKTsKLQlyZXR1cm4gTk9ERV9EQVRBKG5pZCktPm5vZGVfbWVtX21hcCArIGFyY2hfbG9jYWxfcGFnZV9vZmZzZXQocGZuLG5pZCk7Ci19Ci11bnNpZ25lZCBsb25nIHBhZ2VfdG9fcGZuKHN0cnVjdCBwYWdlICpwYWdlKQotewotCXN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBOT0RFX0RBVEEocGFnZV90b19uaWQocGFnZSkpOwotCXJldHVybiAocGFnZSAtIHBnZGF0LT5ub2RlX21lbV9tYXApICsgcGdkYXQtPm5vZGVfc3RhcnRfcGZuOwotfQotI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNKQotc3RydWN0IHBhZ2UgKnBmbl90b19wYWdlKHVuc2lnbmVkIGxvbmcgcGZuKQotewotCXJldHVybiBfX3NlY3Rpb25fbWVtX21hcF9hZGRyKF9fcGZuX3RvX3NlY3Rpb24ocGZuKSkgKyBwZm47Ci19Ci0KLXVuc2lnbmVkIGxvbmcgcGFnZV90b19wZm4oc3RydWN0IHBhZ2UgKnBhZ2UpCi17Ci0JbG9uZyBzZWN0aW9uX2lkID0gcGFnZV90b19zZWN0aW9uKHBhZ2UpOwotCXJldHVybiBwYWdlIC0gX19zZWN0aW9uX21lbV9tYXBfYWRkcihfX25yX3RvX3NlY3Rpb24oc2VjdGlvbl9pZCkpOwotfQotI2VuZGlmIC8qIENPTkZJR19GTEFUTUVNL0RJU0NPTlRJR01NRS9TUEFSU0VNRU0gKi8KIEVYUE9SVF9TWU1CT0wocGZuX3RvX3BhZ2UpOwogRVhQT1JUX1NZTUJPTChwYWdlX3RvX3Bmbik7CiAjZW5kaWYgLyogQ09ORklHX09VVF9PRl9MSU5FX1BGTl9UT19QQUdFICovCmRpZmYgLS1naXQgYS9tbS9wZGZsdXNoLmMgYi9tbS9wZGZsdXNoLmMKaW5kZXggYzRiNmQwYS4uZGY3ZTUwYiAxMDA2NDQKLS0tIGEvbW0vcGRmbHVzaC5jCisrKyBiL21tL3BkZmx1c2guYwpAQCAtMjAyLDggKzIwMiw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChmbiA9PSBOVUxMKQotCQlCVUcoKTsJCS8qIEhhcmQgdG8gZGlhZ25vc2UgaWYgaXQncyBkZWZlcnJlZCAqLworCUJVR19PTihmbiA9PSBOVUxMKTsJLyogSGFyZCB0byBkaWFnbm9zZSBpZiBpdCdzIGRlZmVycmVkICovCiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcGRmbHVzaF9sb2NrLCBmbGFncyk7CiAJaWYgKGxpc3RfZW1wdHkoJnBkZmx1c2hfbGlzdCkpIHsKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwppbmRleCAxOTYzZTI2Li44ODJhODU4IDEwMDY0NAotLS0gYS9tbS9ybWFwLmMKKysrIGIvbW0vcm1hcC5jCkBAIC0xMDMsNyArMTAzLDcgQEAKIAkJc3Bpbl9sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsKIAkJaWYgKGxpa2VseSghdm1hLT5hbm9uX3ZtYSkpIHsKIAkJCXZtYS0+YW5vbl92bWEgPSBhbm9uX3ZtYTsKLQkJCWxpc3RfYWRkKCZ2bWEtPmFub25fdm1hX25vZGUsICZhbm9uX3ZtYS0+aGVhZCk7CisJCQlsaXN0X2FkZF90YWlsKCZ2bWEtPmFub25fdm1hX25vZGUsICZhbm9uX3ZtYS0+aGVhZCk7CiAJCQlhbGxvY2F0ZWQgPSBOVUxMOwogCQl9CiAJCXNwaW5fdW5sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsKQEAgLTEyNyw3ICsxMjcsNyBAQAogCXN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWEgPSB2bWEtPmFub25fdm1hOwogCiAJaWYgKGFub25fdm1hKSB7Ci0JCWxpc3RfYWRkKCZ2bWEtPmFub25fdm1hX25vZGUsICZhbm9uX3ZtYS0+aGVhZCk7CisJCWxpc3RfYWRkX3RhaWwoJnZtYS0+YW5vbl92bWFfbm9kZSwgJmFub25fdm1hLT5oZWFkKTsKIAkJdmFsaWRhdGVfYW5vbl92bWEodm1hKTsKIAl9CiB9CkBAIC0xMzgsNyArMTM4LDcgQEAKIAogCWlmIChhbm9uX3ZtYSkgewogCQlzcGluX2xvY2soJmFub25fdm1hLT5sb2NrKTsKLQkJbGlzdF9hZGQoJnZtYS0+YW5vbl92bWFfbm9kZSwgJmFub25fdm1hLT5oZWFkKTsKKwkJbGlzdF9hZGRfdGFpbCgmdm1hLT5hbm9uX3ZtYV9ub2RlLCAmYW5vbl92bWEtPmhlYWQpOwogCQl2YWxpZGF0ZV9hbm9uX3ZtYSh2bWEpOwogCQlzcGluX3VubG9jaygmYW5vbl92bWEtPmxvY2spOwogCX0KQEAgLTIwNSw0NCArMjA1LDYgQEAKIAlyZXR1cm4gYW5vbl92bWE7CiB9CiAKLSNpZmRlZiBDT05GSUdfTUlHUkFUSU9OCi0vKgotICogUmVtb3ZlIGFuIGFub255bW91cyBwYWdlIGZyb20gc3dhcCByZXBsYWNpbmcgdGhlIHN3YXAgcHRlJ3MKLSAqIHRocm91Z2ggcmVhbCBwdGUncyBwb2ludGluZyB0byB2YWxpZCBwYWdlcyBhbmQgdGhlbiByZWxlYXNpbmcKLSAqIHRoZSBwYWdlIGZyb20gdGhlIHN3YXAgY2FjaGUuCi0gKgotICogTXVzdCBob2xkIHBhZ2UgbG9jayBvbiBwYWdlIGFuZCBtbWFwX3NlbSBvZiBvbmUgdm1hIHRoYXQgY29udGFpbnMKLSAqIHRoZSBwYWdlLgotICovCi12b2lkIHJlbW92ZV9mcm9tX3N3YXAoc3RydWN0IHBhZ2UgKnBhZ2UpCi17Ci0Jc3RydWN0IGFub25fdm1hICphbm9uX3ZtYTsKLQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKLQl1bnNpZ25lZCBsb25nIG1hcHBpbmc7Ci0KLQlpZiAoIVBhZ2VTd2FwQ2FjaGUocGFnZSkpCi0JCXJldHVybjsKLQotCW1hcHBpbmcgPSAodW5zaWduZWQgbG9uZylwYWdlLT5tYXBwaW5nOwotCi0JaWYgKCFtYXBwaW5nIHx8IChtYXBwaW5nICYgUEFHRV9NQVBQSU5HX0FOT04pID09IDApCi0JCXJldHVybjsKLQotCS8qCi0JICogV2UgaG9sZCB0aGUgbW1hcF9zZW0gbG9jay4gU28gbm8gbmVlZCB0byBjYWxsIHBhZ2VfbG9ja19hbm9uX3ZtYS4KLQkgKi8KLQlhbm9uX3ZtYSA9IChzdHJ1Y3QgYW5vbl92bWEgKikgKG1hcHBpbmcgLSBQQUdFX01BUFBJTkdfQU5PTik7Ci0Jc3Bpbl9sb2NrKCZhbm9uX3ZtYS0+bG9jayk7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJmFub25fdm1hLT5oZWFkLCBhbm9uX3ZtYV9ub2RlKQotCQlyZW1vdmVfdm1hX3N3YXAodm1hLCBwYWdlKTsKLQotCXNwaW5fdW5sb2NrKCZhbm9uX3ZtYS0+bG9jayk7Ci0JZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShwYWdlKTsKLX0KLUVYUE9SVF9TWU1CT0wocmVtb3ZlX2Zyb21fc3dhcCk7Ci0jZW5kaWYKLQogLyoKICAqIEF0IHdoYXQgdXNlciB2aXJ0dWFsIGFkZHJlc3MgaXMgcGFnZSBleHBlY3RlZCBpbiB2bWE/CiAgKi8KQEAgLTU3OCw3ICs1NDAsNyBAQAogICogcmVwZWF0ZWRseSBmcm9tIGVpdGhlciB0cnlfdG9fdW5tYXBfYW5vbiBvciB0cnlfdG9fdW5tYXBfZmlsZS4KICAqLwogc3RhdGljIGludCB0cnlfdG9fdW5tYXBfb25lKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKLQkJCQlpbnQgaWdub3JlX3JlZnMpCisJCQkJaW50IG1pZ3JhdGlvbikKIHsKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IHZtYS0+dm1fbW07CiAJdW5zaWduZWQgbG9uZyBhZGRyZXNzOwpAQCAtNjAyLDcgKzU2NCw3IEBACiAJICovCiAJaWYgKCh2bWEtPnZtX2ZsYWdzICYgVk1fTE9DS0VEKSB8fAogCQkJKHB0ZXBfY2xlYXJfZmx1c2hfeW91bmcodm1hLCBhZGRyZXNzLCBwdGUpCi0JCQkJJiYgIWlnbm9yZV9yZWZzKSkgeworCQkJCSYmICFtaWdyYXRpb24pKSB7CiAJCXJldCA9IFNXQVBfRkFJTDsKIAkJZ290byBvdXRfdW5tYXA7CiAJfQpAQCAtNjIwLDI0ICs1ODIsNDUgQEAKIAogCWlmIChQYWdlQW5vbihwYWdlKSkgewogCQlzd3BfZW50cnlfdCBlbnRyeSA9IHsgLnZhbCA9IHBhZ2VfcHJpdmF0ZShwYWdlKSB9OwotCQkvKgotCQkgKiBTdG9yZSB0aGUgc3dhcCBsb2NhdGlvbiBpbiB0aGUgcHRlLgotCQkgKiBTZWUgaGFuZGxlX3B0ZV9mYXVsdCgpIC4uLgotCQkgKi8KLQkJQlVHX09OKCFQYWdlU3dhcENhY2hlKHBhZ2UpKTsKLQkJc3dhcF9kdXBsaWNhdGUoZW50cnkpOwotCQlpZiAobGlzdF9lbXB0eSgmbW0tPm1tbGlzdCkpIHsKLQkJCXNwaW5fbG9jaygmbW1saXN0X2xvY2spOwotCQkJaWYgKGxpc3RfZW1wdHkoJm1tLT5tbWxpc3QpKQotCQkJCWxpc3RfYWRkKCZtbS0+bW1saXN0LCAmaW5pdF9tbS5tbWxpc3QpOwotCQkJc3Bpbl91bmxvY2soJm1tbGlzdF9sb2NrKTsKKworCQlpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSkgeworCQkJLyoKKwkJCSAqIFN0b3JlIHRoZSBzd2FwIGxvY2F0aW9uIGluIHRoZSBwdGUuCisJCQkgKiBTZWUgaGFuZGxlX3B0ZV9mYXVsdCgpIC4uLgorCQkJICovCisJCQlzd2FwX2R1cGxpY2F0ZShlbnRyeSk7CisJCQlpZiAobGlzdF9lbXB0eSgmbW0tPm1tbGlzdCkpIHsKKwkJCQlzcGluX2xvY2soJm1tbGlzdF9sb2NrKTsKKwkJCQlpZiAobGlzdF9lbXB0eSgmbW0tPm1tbGlzdCkpCisJCQkJCWxpc3RfYWRkKCZtbS0+bW1saXN0LCAmaW5pdF9tbS5tbWxpc3QpOworCQkJCXNwaW5fdW5sb2NrKCZtbWxpc3RfbG9jayk7CisJCQl9CisJCQlkZWNfbW1fY291bnRlcihtbSwgYW5vbl9yc3MpOworI2lmZGVmIENPTkZJR19NSUdSQVRJT04KKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiBTdG9yZSB0aGUgcGZuIG9mIHRoZSBwYWdlIGluIGEgc3BlY2lhbCBtaWdyYXRpb24KKwkJCSAqIHB0ZS4gZG9fc3dhcF9wYWdlKCkgd2lsbCB3YWl0IHVudGlsIHRoZSBtaWdyYXRpb24KKwkJCSAqIHB0ZSBpcyByZW1vdmVkIGFuZCB0aGVuIHJlc3RhcnQgZmF1bHQgaGFuZGxpbmcuCisJCQkgKi8KKwkJCUJVR19PTighbWlncmF0aW9uKTsKKwkJCWVudHJ5ID0gbWFrZV9taWdyYXRpb25fZW50cnkocGFnZSwgcHRlX3dyaXRlKHB0ZXZhbCkpOworI2VuZGlmCiAJCX0KIAkJc2V0X3B0ZV9hdChtbSwgYWRkcmVzcywgcHRlLCBzd3BfZW50cnlfdG9fcHRlKGVudHJ5KSk7CiAJCUJVR19PTihwdGVfZmlsZSgqcHRlKSk7Ci0JCWRlY19tbV9jb3VudGVyKG1tLCBhbm9uX3Jzcyk7CiAJfSBlbHNlCisjaWZkZWYgQ09ORklHX01JR1JBVElPTgorCWlmIChtaWdyYXRpb24pIHsKKwkJLyogRXN0YWJsaXNoIG1pZ3JhdGlvbiBlbnRyeSBmb3IgYSBmaWxlIHBhZ2UgKi8KKwkJc3dwX2VudHJ5X3QgZW50cnk7CisJCWVudHJ5ID0gbWFrZV9taWdyYXRpb25fZW50cnkocGFnZSwgcHRlX3dyaXRlKHB0ZXZhbCkpOworCQlzZXRfcHRlX2F0KG1tLCBhZGRyZXNzLCBwdGUsIHN3cF9lbnRyeV90b19wdGUoZW50cnkpKTsKKwl9IGVsc2UKKyNlbmRpZgogCQlkZWNfbW1fY291bnRlcihtbSwgZmlsZV9yc3MpOwogCisKIAlwYWdlX3JlbW92ZV9ybWFwKHBhZ2UpOwogCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKIApAQCAtNzM2LDcgKzcxOSw3IEBACiAJcHRlX3VubWFwX3VubG9jayhwdGUgLSAxLCBwdGwpOwogfQogCi1zdGF0aWMgaW50IHRyeV90b191bm1hcF9hbm9uKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgaWdub3JlX3JlZnMpCitzdGF0aWMgaW50IHRyeV90b191bm1hcF9hbm9uKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgbWlncmF0aW9uKQogewogCXN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWE7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CkBAIC03NDcsNyArNzMwLDcgQEAKIAkJcmV0dXJuIHJldDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmYW5vbl92bWEtPmhlYWQsIGFub25fdm1hX25vZGUpIHsKLQkJcmV0ID0gdHJ5X3RvX3VubWFwX29uZShwYWdlLCB2bWEsIGlnbm9yZV9yZWZzKTsKKwkJcmV0ID0gdHJ5X3RvX3VubWFwX29uZShwYWdlLCB2bWEsIG1pZ3JhdGlvbik7CiAJCWlmIChyZXQgPT0gU1dBUF9GQUlMIHx8ICFwYWdlX21hcHBlZChwYWdlKSkKIAkJCWJyZWFrOwogCX0KQEAgLTc2NCw3ICs3NDcsNyBAQAogICoKICAqIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZnJvbSB0cnlfdG9fdW5tYXAgZm9yIG9iamVjdC1iYXNlZCBwYWdlcy4KICAqLwotc3RhdGljIGludCB0cnlfdG9fdW5tYXBfZmlsZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IGlnbm9yZV9yZWZzKQorc3RhdGljIGludCB0cnlfdG9fdW5tYXBfZmlsZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG1pZ3JhdGlvbikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHBhZ2UtPm1hcHBpbmc7CiAJcGdvZmZfdCBwZ29mZiA9IHBhZ2UtPmluZGV4IDw8IChQQUdFX0NBQ0hFX1NISUZUIC0gUEFHRV9TSElGVCk7CkBAIC03NzgsNyArNzYxLDcgQEAKIAogCXNwaW5fbG9jaygmbWFwcGluZy0+aV9tbWFwX2xvY2spOwogCXZtYV9wcmlvX3RyZWVfZm9yZWFjaCh2bWEsICZpdGVyLCAmbWFwcGluZy0+aV9tbWFwLCBwZ29mZiwgcGdvZmYpIHsKLQkJcmV0ID0gdHJ5X3RvX3VubWFwX29uZShwYWdlLCB2bWEsIGlnbm9yZV9yZWZzKTsKKwkJcmV0ID0gdHJ5X3RvX3VubWFwX29uZShwYWdlLCB2bWEsIG1pZ3JhdGlvbik7CiAJCWlmIChyZXQgPT0gU1dBUF9GQUlMIHx8ICFwYWdlX21hcHBlZChwYWdlKSkKIAkJCWdvdG8gb3V0OwogCX0KQEAgLTg2MywxNiArODQ2LDE2IEBACiAgKiBTV0FQX0FHQUlOCS0gd2UgbWlzc2VkIGEgbWFwcGluZywgdHJ5IGFnYWluIGxhdGVyCiAgKiBTV0FQX0ZBSUwJLSB0aGUgcGFnZSBpcyB1bnN3YXBwYWJsZQogICovCi1pbnQgdHJ5X3RvX3VubWFwKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgaWdub3JlX3JlZnMpCitpbnQgdHJ5X3RvX3VubWFwKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgbWlncmF0aW9uKQogewogCWludCByZXQ7CiAKIAlCVUdfT04oIVBhZ2VMb2NrZWQocGFnZSkpOwogCiAJaWYgKFBhZ2VBbm9uKHBhZ2UpKQotCQlyZXQgPSB0cnlfdG9fdW5tYXBfYW5vbihwYWdlLCBpZ25vcmVfcmVmcyk7CisJCXJldCA9IHRyeV90b191bm1hcF9hbm9uKHBhZ2UsIG1pZ3JhdGlvbik7CiAJZWxzZQotCQlyZXQgPSB0cnlfdG9fdW5tYXBfZmlsZShwYWdlLCBpZ25vcmVfcmVmcyk7CisJCXJldCA9IHRyeV90b191bm1hcF9maWxlKHBhZ2UsIG1pZ3JhdGlvbik7CiAKIAlpZiAoIXBhZ2VfbWFwcGVkKHBhZ2UpKQogCQlyZXQgPSBTV0FQX1NVQ0NFU1M7CmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRleCA3OTdlZWYzLi4zOGJjMzMzIDEwMDY0NAotLS0gYS9tbS9zaG1lbS5jCisrKyBiL21tL3NobWVtLmMKQEAgLTEwODEsMTQgKzEwODEsNiBAQAogCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHN3YXBwYWdlKTsKIAkJCWdvdG8gcmVwZWF0OwogCQl9Ci0JCWlmICghUGFnZVN3YXBDYWNoZShzd2FwcGFnZSkpIHsKLQkJCS8qIFBhZ2UgbWlncmF0aW9uIGhhcyBvY2N1cmVkICovCi0JCQlzaG1lbV9zd3BfdW5tYXAoZW50cnkpOwotCQkJc3Bpbl91bmxvY2soJmluZm8tPmxvY2spOwotCQkJdW5sb2NrX3BhZ2Uoc3dhcHBhZ2UpOwotCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHN3YXBwYWdlKTsKLQkJCWdvdG8gcmVwZWF0OwotCQl9CiAJCWlmIChQYWdlV3JpdGViYWNrKHN3YXBwYWdlKSkgewogCQkJc2htZW1fc3dwX3VubWFwKGVudHJ5KTsKIAkJCXNwaW5fdW5sb2NrKCZpbmZvLT5sb2NrKTsKQEAgLTE2NTQsOSArMTY0Niw5IEBACiAJcmV0dXJuIGRlc2MuZXJyb3I7CiB9CiAKLXN0YXRpYyBpbnQgc2htZW1fc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpCitzdGF0aWMgaW50IHNobWVtX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IHNobWVtX3NiX2luZm8gKnNiaW5mbyA9IFNITUVNX1NCKHNiKTsKKwlzdHJ1Y3Qgc2htZW1fc2JfaW5mbyAqc2JpbmZvID0gU0hNRU1fU0IoZGVudHJ5LT5kX3NiKTsKIAogCWJ1Zi0+Zl90eXBlID0gVE1QRlNfTUFHSUM7CiAJYnVmLT5mX2JzaXplID0gUEFHRV9DQUNIRV9TSVpFOwpAQCAtMjIzMywxMCArMjIyNSwxMCBAQAogfTsKIAogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpzaG1lbV9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgc2htZW1fZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHNobWVtX2ZpbGxfc3VwZXIpOworCXJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHNobWVtX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB0bXBmc19mc190eXBlID0gewpkaWZmIC0tZ2l0IGEvbW0vc2xhYi5jIGIvbW0vc2xhYi5jCmluZGV4IGYxYjY0NGUuLjk4YWMyMGIgMTAwNjQ0Ci0tLSBhL21tL3NsYWIuYworKysgYi9tbS9zbGFiLmMKQEAgLTMzMSw2ICszMzEsOCBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNsYWJfZWFybHlfaW5pdCA9IDE7CisKICNkZWZpbmUgSU5ERVhfQUMgaW5kZXhfb2Yoc2l6ZW9mKHN0cnVjdCBhcnJheWNhY2hlX2luaXQpKQogI2RlZmluZSBJTkRFWF9MMyBpbmRleF9vZihzaXplb2Yoc3RydWN0IGttZW1fbGlzdDMpKQogCkBAIC01OTIsNiArNTk0LDcgQEAKIHsKIAlpZiAodW5saWtlbHkoUGFnZUNvbXBvdW5kKHBhZ2UpKSkKIAkJcGFnZSA9IChzdHJ1Y3QgcGFnZSAqKXBhZ2VfcHJpdmF0ZShwYWdlKTsKKwlCVUdfT04oIVBhZ2VTbGFiKHBhZ2UpKTsKIAlyZXR1cm4gKHN0cnVjdCBrbWVtX2NhY2hlICopcGFnZS0+bHJ1Lm5leHQ7CiB9CiAKQEAgLTYwNCw2ICs2MDcsNyBAQAogewogCWlmICh1bmxpa2VseShQYWdlQ29tcG91bmQocGFnZSkpKQogCQlwYWdlID0gKHN0cnVjdCBwYWdlICopcGFnZV9wcml2YXRlKHBhZ2UpOworCUJVR19PTighUGFnZVNsYWIocGFnZSkpOwogCXJldHVybiAoc3RydWN0IHNsYWIgKilwYWdlLT5scnUucHJldjsKIH0KIApAQCAtMTAyNCw2ICsxMDI4LDQwIEBACiAJCX0KIAl9CiB9CisKK3N0YXRpYyBpbmxpbmUgaW50IGNhY2hlX2ZyZWVfYWxpZW4oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgdm9pZCAqb2JqcCkKK3sKKwlzdHJ1Y3Qgc2xhYiAqc2xhYnAgPSB2aXJ0X3RvX3NsYWIob2JqcCk7CisJaW50IG5vZGVpZCA9IHNsYWJwLT5ub2RlaWQ7CisJc3RydWN0IGttZW1fbGlzdDMgKmwzOworCXN0cnVjdCBhcnJheV9jYWNoZSAqYWxpZW4gPSBOVUxMOworCisJLyoKKwkgKiBNYWtlIHN1cmUgd2UgYXJlIG5vdCBmcmVlaW5nIGEgb2JqZWN0IGZyb20gYW5vdGhlciBub2RlIHRvIHRoZSBhcnJheQorCSAqIGNhY2hlIG9uIHRoaXMgY3B1LgorCSAqLworCWlmIChsaWtlbHkoc2xhYnAtPm5vZGVpZCA9PSBudW1hX25vZGVfaWQoKSkpCisJCXJldHVybiAwOworCisJbDMgPSBjYWNoZXAtPm5vZGVsaXN0c1tudW1hX25vZGVfaWQoKV07CisJU1RBVFNfSU5DX05PREVGUkVFUyhjYWNoZXApOworCWlmIChsMy0+YWxpZW4gJiYgbDMtPmFsaWVuW25vZGVpZF0pIHsKKwkJYWxpZW4gPSBsMy0+YWxpZW5bbm9kZWlkXTsKKwkJc3Bpbl9sb2NrKCZhbGllbi0+bG9jayk7CisJCWlmICh1bmxpa2VseShhbGllbi0+YXZhaWwgPT0gYWxpZW4tPmxpbWl0KSkgeworCQkJU1RBVFNfSU5DX0FDT1ZFUkZMT1coY2FjaGVwKTsKKwkJCV9fZHJhaW5fYWxpZW5fY2FjaGUoY2FjaGVwLCBhbGllbiwgbm9kZWlkKTsKKwkJfQorCQlhbGllbi0+ZW50cnlbYWxpZW4tPmF2YWlsKytdID0gb2JqcDsKKwkJc3Bpbl91bmxvY2soJmFsaWVuLT5sb2NrKTsKKwl9IGVsc2UgeworCQlzcGluX2xvY2soJihjYWNoZXAtPm5vZGVsaXN0c1tub2RlaWRdKS0+bGlzdF9sb2NrKTsKKwkJZnJlZV9ibG9jayhjYWNoZXAsICZvYmpwLCAxLCBub2RlaWQpOworCQlzcGluX3VubG9jaygmKGNhY2hlcC0+bm9kZWxpc3RzW25vZGVpZF0pLT5saXN0X2xvY2spOworCX0KKwlyZXR1cm4gMTsKK30KKwogI2Vsc2UKIAogI2RlZmluZSBkcmFpbl9hbGllbl9jYWNoZShjYWNoZXAsIGFsaWVuKSBkbyB7IH0gd2hpbGUgKDApCkBAIC0xMDM4LDYgKzEwNzYsMTEgQEAKIHsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgY2FjaGVfZnJlZV9hbGllbihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwLCB2b2lkICpvYmpwKQoreworCXJldHVybiAwOworfQorCiAjZW5kaWYKIAogc3RhdGljIGludCBjcHV1cF9jYWxsYmFjayhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5mYiwKQEAgLTEzMzUsNiArMTM3OCw4IEBACiAJCQkJTlVMTCwgTlVMTCk7CiAJfQogCisJc2xhYl9lYXJseV9pbml0ID0gMDsKKwogCXdoaWxlIChzaXplcy0+Y3Nfc2l6ZSAhPSBVTE9OR19NQVgpIHsKIAkJLyoKIAkJICogRm9yIHBlcmZvcm1hbmNlLCBhbGwgdGhlIGdlbmVyYWwgY2FjaGVzIGFyZSBMMSBhbGlnbmVkLgpAQCAtMTQ1MCwzMSArMTQ5NSwyOSBAQAogc3RhdGljIHZvaWQgKmttZW1fZ2V0cGFnZXMoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlaWQpCiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7Ci0Jdm9pZCAqYWRkcjsKKwlpbnQgbnJfcGFnZXM7CiAJaW50IGk7CiAKLQlmbGFncyB8PSBjYWNoZXAtPmdmcGZsYWdzOwogI2lmbmRlZiBDT05GSUdfTU1VCi0JLyogbm9tbXUgdXNlcyBzbGFiJ3MgZm9yIHByb2Nlc3MgYW5vbnltb3VzIG1lbW9yeSBhbGxvY2F0aW9ucywgc28KLQkgKiByZXF1aXJlcyBfX0dGUF9DT01QIHRvIHByb3Blcmx5IHJlZmNvdW50IGhpZ2hlciBvcmRlciBhbGxvY2F0aW9ucyIKKwkvKgorCSAqIE5vbW11IHVzZXMgc2xhYidzIGZvciBwcm9jZXNzIGFub255bW91cyBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCB0aHVzCisJICogcmVxdWlyZXMgX19HRlBfQ09NUCB0byBwcm9wZXJseSByZWZjb3VudCBoaWdoZXIgb3JkZXIgYWxsb2NhdGlvbnMKIAkgKi8KLQlwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShub2RlaWQsIChmbGFncyB8IF9fR0ZQX0NPTVApLCBjYWNoZXAtPmdmcG9yZGVyKTsKLSNlbHNlCi0JcGFnZSA9IGFsbG9jX3BhZ2VzX25vZGUobm9kZWlkLCBmbGFncywgY2FjaGVwLT5nZnBvcmRlcik7CisJZmxhZ3MgfD0gX19HRlBfQ09NUDsKICNlbmRpZgorCWZsYWdzIHw9IGNhY2hlcC0+Z2ZwZmxhZ3M7CisKKwlwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShub2RlaWQsIGZsYWdzLCBjYWNoZXAtPmdmcG9yZGVyKTsKIAlpZiAoIXBhZ2UpCiAJCXJldHVybiBOVUxMOwotCWFkZHIgPSBwYWdlX2FkZHJlc3MocGFnZSk7CiAKLQlpID0gKDEgPDwgY2FjaGVwLT5nZnBvcmRlcik7CisJbnJfcGFnZXMgPSAoMSA8PCBjYWNoZXAtPmdmcG9yZGVyKTsKIAlpZiAoY2FjaGVwLT5mbGFncyAmIFNMQUJfUkVDTEFJTV9BQ0NPVU5UKQotCQlhdG9taWNfYWRkKGksICZzbGFiX3JlY2xhaW1fcGFnZXMpOwotCWFkZF9wYWdlX3N0YXRlKG5yX3NsYWIsIGkpOwotCXdoaWxlIChpLS0pIHsKLQkJX19TZXRQYWdlU2xhYihwYWdlKTsKLQkJcGFnZSsrOwotCX0KLQlyZXR1cm4gYWRkcjsKKwkJYXRvbWljX2FkZChucl9wYWdlcywgJnNsYWJfcmVjbGFpbV9wYWdlcyk7CisJYWRkX3BhZ2Vfc3RhdGUobnJfc2xhYiwgbnJfcGFnZXMpOworCWZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKQorCQlfX1NldFBhZ2VTbGFiKHBhZ2UgKyBpKTsKKwlyZXR1cm4gcGFnZV9hZGRyZXNzKHBhZ2UpOwogfQogCiAvKgpAQCAtMTkxMyw4ICsxOTU2LDcgQEAKIAl2b2lkICgqZHRvcikodm9pZCosIHN0cnVjdCBrbWVtX2NhY2hlICosIHVuc2lnbmVkIGxvbmcpKQogewogCXNpemVfdCBsZWZ0X292ZXIsIHNsYWJfc2l6ZSwgcmFsaWduOwotCXN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAgPSBOVUxMOwotCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisJc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCA9IE5VTEwsICpwYzsKIAogCS8qCiAJICogU2FuaXR5IGNoZWNrcy4uLiB0aGVzZSBhcmUgYWxsIHNlcmlvdXMgdXNhZ2UgYnVncy4KQEAgLTE5MzQsOCArMTk3Niw3IEBACiAKIAltdXRleF9sb2NrKCZjYWNoZV9jaGFpbl9tdXRleCk7CiAKLQlsaXN0X2Zvcl9lYWNoKHAsICZjYWNoZV9jaGFpbikgewotCQlzdHJ1Y3Qga21lbV9jYWNoZSAqcGMgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBrbWVtX2NhY2hlLCBuZXh0KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBjLCAmY2FjaGVfY2hhaW4sIG5leHQpIHsKIAkJbW1fc2VnbWVudF90IG9sZF9mcyA9IGdldF9mcygpOwogCQljaGFyIHRtcDsKIAkJaW50IHJlczsKQEAgLTIwNjksOCArMjExMCwxMiBAQAogI2VuZGlmCiAjZW5kaWYKIAotCS8qIERldGVybWluZSBpZiB0aGUgc2xhYiBtYW5hZ2VtZW50IGlzICdvbicgb3IgJ29mZicgc2xhYi4gKi8KLQlpZiAoc2l6ZSA+PSAoUEFHRV9TSVpFID4+IDMpKQorCS8qCisJICogRGV0ZXJtaW5lIGlmIHRoZSBzbGFiIG1hbmFnZW1lbnQgaXMgJ29uJyBvciAnb2ZmJyBzbGFiLgorCSAqIChib290c3RyYXBwaW5nIGNhbm5vdCBjb3BlIHdpdGggb2Zmc2xhYiBjYWNoZXMgc28gZG9uJ3QgZG8KKwkgKiBpdCB0b28gZWFybHkgb24uKQorCSAqLworCWlmICgoc2l6ZSA+PSAoUEFHRV9TSVpFID4+IDMpKSAmJiAhc2xhYl9lYXJseV9pbml0KQogCQkvKgogCQkgKiBTaXplIGlzIGxhcmdlLCBhc3N1bWUgYmVzdCB0byBwbGFjZSB0aGUgc2xhYiBtYW5hZ2VtZW50IG9iagogCQkgKiBvZmYtc2xhYiAoc2hvdWxkIGFsbG93IGJldHRlciBwYWNraW5nIG9mIG9ianMpLgpAQCAtMjQ2MCwyMyArMjUwNSwyOCBAQAogCXNsYWJwLT5pbnVzZS0tOwogfQogCi1zdGF0aWMgdm9pZCBzZXRfc2xhYl9hdHRyKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAsIHN0cnVjdCBzbGFiICpzbGFicCwKLQkJCXZvaWQgKm9ianApCisvKgorICogTWFwIHBhZ2VzIGJlZ2lubmluZyBhdCBhZGRyIHRvIHRoZSBnaXZlbiBjYWNoZSBhbmQgc2xhYi4gVGhpcyBpcyByZXF1aXJlZAorICogZm9yIHRoZSBzbGFiIGFsbG9jYXRvciB0byBiZSBhYmxlIHRvIGxvb2t1cCB0aGUgY2FjaGUgYW5kIHNsYWIgb2YgYQorICogdmlydHVhbCBhZGRyZXNzIGZvciBrZnJlZSwga3NpemUsIGttZW1fcHRyX3ZhbGlkYXRlLCBhbmQgc2xhYiBkZWJ1Z2dpbmcuCisgKi8KK3N0YXRpYyB2b2lkIHNsYWJfbWFwX3BhZ2VzKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgc3RydWN0IHNsYWIgKnNsYWIsCisJCQkgICB2b2lkICphZGRyKQogewotCWludCBpOworCWludCBucl9wYWdlczsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAotCS8qIE5hc3R5ISEhISEhIEkgaG9wZSB0aGlzIGlzIE9LLiAqLwotCXBhZ2UgPSB2aXJ0X3RvX3BhZ2Uob2JqcCk7CisJcGFnZSA9IHZpcnRfdG9fcGFnZShhZGRyKTsKIAotCWkgPSAxOworCW5yX3BhZ2VzID0gMTsKIAlpZiAobGlrZWx5KCFQYWdlQ29tcG91bmQocGFnZSkpKQotCQlpIDw8PSBjYWNoZXAtPmdmcG9yZGVyOworCQlucl9wYWdlcyA8PD0gY2FjaGUtPmdmcG9yZGVyOworCiAJZG8gewotCQlwYWdlX3NldF9jYWNoZShwYWdlLCBjYWNoZXApOwotCQlwYWdlX3NldF9zbGFiKHBhZ2UsIHNsYWJwKTsKKwkJcGFnZV9zZXRfY2FjaGUocGFnZSwgY2FjaGUpOworCQlwYWdlX3NldF9zbGFiKHBhZ2UsIHNsYWIpOwogCQlwYWdlKys7Ci0JfSB3aGlsZSAoLS1pKTsKKwl9IHdoaWxlICgtLW5yX3BhZ2VzKTsKIH0KIAogLyoKQEAgLTI1NDgsNyArMjU5OCw3IEBACiAJCWdvdG8gb3BwczE7CiAKIAlzbGFicC0+bm9kZWlkID0gbm9kZWlkOwotCXNldF9zbGFiX2F0dHIoY2FjaGVwLCBzbGFicCwgb2JqcCk7CisJc2xhYl9tYXBfcGFnZXMoY2FjaGVwLCBzbGFicCwgb2JqcCk7CiAKIAljYWNoZV9pbml0X29ianMoY2FjaGVwLCBzbGFicCwgY3Rvcl9mbGFncyk7CiAKQEAgLTI1OTYsNiArMjY0NiwyOCBAQAogCX0KIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHZlcmlmeV9yZWR6b25lX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmopCit7CisJdW5zaWduZWQgbG9uZyByZWR6b25lMSwgcmVkem9uZTI7CisKKwlyZWR6b25lMSA9ICpkYmdfcmVkem9uZTEoY2FjaGUsIG9iaik7CisJcmVkem9uZTIgPSAqZGJnX3JlZHpvbmUyKGNhY2hlLCBvYmopOworCisJLyoKKwkgKiBSZWR6b25lIGlzIG9rLgorCSAqLworCWlmIChyZWR6b25lMSA9PSBSRURfQUNUSVZFICYmIHJlZHpvbmUyID09IFJFRF9BQ1RJVkUpCisJCXJldHVybjsKKworCWlmIChyZWR6b25lMSA9PSBSRURfSU5BQ1RJVkUgJiYgcmVkem9uZTIgPT0gUkVEX0lOQUNUSVZFKQorCQlzbGFiX2Vycm9yKGNhY2hlLCAiZG91YmxlIGZyZWUgZGV0ZWN0ZWQiKTsKKwllbHNlCisJCXNsYWJfZXJyb3IoY2FjaGUsICJtZW1vcnkgb3V0c2lkZSBvYmplY3Qgd2FzIG92ZXJ3cml0dGVuIik7CisKKwlwcmludGsoS0VSTl9FUlIgIiVwOiByZWR6b25lIDE6MHglbHgsIHJlZHpvbmUgMjoweCVseC5cbiIsCisJCQlvYmosIHJlZHpvbmUxLCByZWR6b25lMik7Cit9CisKIHN0YXRpYyB2b2lkICpjYWNoZV9mcmVlX2RlYnVnY2hlY2soc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgdm9pZCAqb2JqcCwKIAkJCQkgICB2b2lkICpjYWxsZXIpCiB7CkBAIC0yNjA3LDI3ICsyNjc5LDEwIEBACiAJa2ZyZWVfZGVidWdjaGVjayhvYmpwKTsKIAlwYWdlID0gdmlydF90b19wYWdlKG9ianApOwogCi0JaWYgKHBhZ2VfZ2V0X2NhY2hlKHBhZ2UpICE9IGNhY2hlcCkgewotCQlwcmludGsoS0VSTl9FUlIgIm1pc21hdGNoIGluIGttZW1fY2FjaGVfZnJlZTogZXhwZWN0ZWQgIgotCQkJCSJjYWNoZSAlcCwgZ290ICVwXG4iLAotCQkgICAgICAgcGFnZV9nZXRfY2FjaGUocGFnZSksIGNhY2hlcCk7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXAgaXMgJXMuXG4iLCBjYWNoZXAsIGNhY2hlcC0+bmFtZSk7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXAgaXMgJXMuXG4iLCBwYWdlX2dldF9jYWNoZShwYWdlKSwKLQkJICAgICAgIHBhZ2VfZ2V0X2NhY2hlKHBhZ2UpLT5uYW1lKTsKLQkJV0FSTl9PTigxKTsKLQl9CiAJc2xhYnAgPSBwYWdlX2dldF9zbGFiKHBhZ2UpOwogCiAJaWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFRF9aT05FKSB7Ci0JCWlmICgqZGJnX3JlZHpvbmUxKGNhY2hlcCwgb2JqcCkgIT0gUkVEX0FDVElWRSB8fAotCQkJCSpkYmdfcmVkem9uZTIoY2FjaGVwLCBvYmpwKSAhPSBSRURfQUNUSVZFKSB7Ci0JCQlzbGFiX2Vycm9yKGNhY2hlcCwgImRvdWJsZSBmcmVlLCBvciBtZW1vcnkgb3V0c2lkZSIKLQkJCQkJCSIgb2JqZWN0IHdhcyBvdmVyd3JpdHRlbiIpOwotCQkJcHJpbnRrKEtFUk5fRVJSICIlcDogcmVkem9uZSAxOjB4JWx4LCAiCi0JCQkJCSJyZWR6b25lIDI6MHglbHguXG4iLAotCQkJICAgICAgIG9ianAsICpkYmdfcmVkem9uZTEoY2FjaGVwLCBvYmpwKSwKLQkJCSAgICAgICAqZGJnX3JlZHpvbmUyKGNhY2hlcCwgb2JqcCkpOwotCQl9CisJCXZlcmlmeV9yZWR6b25lX2ZyZWUoY2FjaGVwLCBvYmpwKTsKIAkJKmRiZ19yZWR6b25lMShjYWNoZXAsIG9ianApID0gUkVEX0lOQUNUSVZFOwogCQkqZGJnX3JlZHpvbmUyKGNhY2hlcCwgb2JqcCkgPSBSRURfSU5BQ1RJVkU7CiAJfQpAQCAtMzA4Nyw0MSArMzE0Miw5IEBACiAJY2hlY2tfaXJxX29mZigpOwogCW9ianAgPSBjYWNoZV9mcmVlX2RlYnVnY2hlY2soY2FjaGVwLCBvYmpwLCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkpOwogCi0JLyogTWFrZSBzdXJlIHdlIGFyZSBub3QgZnJlZWluZyBhIG9iamVjdCBmcm9tIGFub3RoZXIKLQkgKiBub2RlIHRvIHRoZSBhcnJheSBjYWNoZSBvbiB0aGlzIGNwdS4KLQkgKi8KLSNpZmRlZiBDT05GSUdfTlVNQQotCXsKLQkJc3RydWN0IHNsYWIgKnNsYWJwOwotCQlzbGFicCA9IHZpcnRfdG9fc2xhYihvYmpwKTsKLQkJaWYgKHVubGlrZWx5KHNsYWJwLT5ub2RlaWQgIT0gbnVtYV9ub2RlX2lkKCkpKSB7Ci0JCQlzdHJ1Y3QgYXJyYXlfY2FjaGUgKmFsaWVuID0gTlVMTDsKLQkJCWludCBub2RlaWQgPSBzbGFicC0+bm9kZWlkOwotCQkJc3RydWN0IGttZW1fbGlzdDMgKmwzOworCWlmIChjYWNoZV9mcmVlX2FsaWVuKGNhY2hlcCwgb2JqcCkpCisJCXJldHVybjsKIAotCQkJbDMgPSBjYWNoZXAtPm5vZGVsaXN0c1tudW1hX25vZGVfaWQoKV07Ci0JCQlTVEFUU19JTkNfTk9ERUZSRUVTKGNhY2hlcCk7Ci0JCQlpZiAobDMtPmFsaWVuICYmIGwzLT5hbGllbltub2RlaWRdKSB7Ci0JCQkJYWxpZW4gPSBsMy0+YWxpZW5bbm9kZWlkXTsKLQkJCQlzcGluX2xvY2soJmFsaWVuLT5sb2NrKTsKLQkJCQlpZiAodW5saWtlbHkoYWxpZW4tPmF2YWlsID09IGFsaWVuLT5saW1pdCkpIHsKLQkJCQkJU1RBVFNfSU5DX0FDT1ZFUkZMT1coY2FjaGVwKTsKLQkJCQkJX19kcmFpbl9hbGllbl9jYWNoZShjYWNoZXAsCi0JCQkJCQkJICAgIGFsaWVuLCBub2RlaWQpOwotCQkJCX0KLQkJCQlhbGllbi0+ZW50cnlbYWxpZW4tPmF2YWlsKytdID0gb2JqcDsKLQkJCQlzcGluX3VubG9jaygmYWxpZW4tPmxvY2spOwotCQkJfSBlbHNlIHsKLQkJCQlzcGluX2xvY2soJihjYWNoZXAtPm5vZGVsaXN0c1tub2RlaWRdKS0+Ci0JCQkJCSAgbGlzdF9sb2NrKTsKLQkJCQlmcmVlX2Jsb2NrKGNhY2hlcCwgJm9ianAsIDEsIG5vZGVpZCk7Ci0JCQkJc3Bpbl91bmxvY2soJihjYWNoZXAtPm5vZGVsaXN0c1tub2RlaWRdKS0+Ci0JCQkJCSAgICBsaXN0X2xvY2spOwotCQkJfQotCQkJcmV0dXJuOwotCQl9Ci0JfQotI2VuZGlmCiAJaWYgKGxpa2VseShhYy0+YXZhaWwgPCBhYy0+bGltaXQpKSB7CiAJCVNUQVRTX0lOQ19GUkVFSElUKGNhY2hlcCk7CiAJCWFjLT5lbnRyeVthYy0+YXZhaWwrK10gPSBvYmpwOwpAQCAtMzI1NCwyNiArMzI3NywxMCBAQAogI2VuZGlmCiAKIC8qKgotICoga21hbGxvYyAtIGFsbG9jYXRlIG1lbW9yeQorICogX19kb19rbWFsbG9jIC0gYWxsb2NhdGUgbWVtb3J5CiAgKiBAc2l6ZTogaG93IG1hbnkgYnl0ZXMgb2YgbWVtb3J5IGFyZSByZXF1aXJlZC4KLSAqIEBmbGFnczogdGhlIHR5cGUgb2YgbWVtb3J5IHRvIGFsbG9jYXRlLgorICogQGZsYWdzOiB0aGUgdHlwZSBvZiBtZW1vcnkgdG8gYWxsb2NhdGUgKHNlZSBrbWFsbG9jKS4KICAqIEBjYWxsZXI6IGZ1bmN0aW9uIGNhbGxlciBmb3IgZGVidWcgdHJhY2tpbmcgb2YgdGhlIGNhbGxlcgotICoKLSAqIGttYWxsb2MgaXMgdGhlIG5vcm1hbCBtZXRob2Qgb2YgYWxsb2NhdGluZyBtZW1vcnkKLSAqIGluIHRoZSBrZXJuZWwuCi0gKgotICogVGhlIEBmbGFncyBhcmd1bWVudCBtYXkgYmUgb25lIG9mOgotICoKLSAqICVHRlBfVVNFUiAtIEFsbG9jYXRlIG1lbW9yeSBvbiBiZWhhbGYgb2YgdXNlci4gIE1heSBzbGVlcC4KLSAqCi0gKiAlR0ZQX0tFUk5FTCAtIEFsbG9jYXRlIG5vcm1hbCBrZXJuZWwgcmFtLiAgTWF5IHNsZWVwLgotICoKLSAqICVHRlBfQVRPTUlDIC0gQWxsb2NhdGlvbiB3aWxsIG5vdCBzbGVlcC4gIFVzZSBpbnNpZGUgaW50ZXJydXB0IGhhbmRsZXJzLgotICoKLSAqIEFkZGl0aW9uYWxseSwgdGhlICVHRlBfRE1BIGZsYWcgbWF5IGJlIHNldCB0byBpbmRpY2F0ZSB0aGUgbWVtb3J5Ci0gKiBtdXN0IGJlIHN1aXRhYmxlIGZvciBETUEuICBUaGlzIGNhbiBtZWFuIGRpZmZlcmVudCB0aGluZ3Mgb24gZGlmZmVyZW50Ci0gKiBwbGF0Zm9ybXMuICBGb3IgZXhhbXBsZSwgb24gaTM4NiwgaXQgbWVhbnMgdGhhdCB0aGUgbWVtb3J5IG11c3QgY29tZQotICogZnJvbSB0aGUgZmlyc3QgMTZNQi4KICAqLwogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkICpfX2RvX2ttYWxsb2Moc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLAogCQkJCQkgIHZvaWQgKmNhbGxlcikKQEAgLTMzNzEsNiArMzM3OCw4IEBACiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAorCUJVR19PTih2aXJ0X3RvX2NhY2hlKG9ianApICE9IGNhY2hlcCk7CisKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAJX19jYWNoZV9mcmVlKGNhY2hlcCwgb2JqcCk7CiAJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwpAQCAtMzY4MCw3ICszNjg5LDcgQEAKICAqLwogc3RhdGljIHZvaWQgY2FjaGVfcmVhcCh2b2lkICp1bnVzZWQpCiB7Ci0Jc3RydWN0IGxpc3RfaGVhZCAqd2FsazsKKwlzdHJ1Y3Qga21lbV9jYWNoZSAqc2VhcmNocDsKIAlzdHJ1Y3Qga21lbV9saXN0MyAqbDM7CiAJaW50IG5vZGUgPSBudW1hX25vZGVfaWQoKTsKIApAQCAtMzY5MSwxMyArMzcwMCwxMSBAQAogCQlyZXR1cm47CiAJfQogCi0JbGlzdF9mb3JfZWFjaCh3YWxrLCAmY2FjaGVfY2hhaW4pIHsKLQkJc3RydWN0IGttZW1fY2FjaGUgKnNlYXJjaHA7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShzZWFyY2hwLCAmY2FjaGVfY2hhaW4sIG5leHQpIHsKIAkJc3RydWN0IGxpc3RfaGVhZCAqcDsKIAkJaW50IHRvZnJlZTsKIAkJc3RydWN0IHNsYWIgKnNsYWJwOwogCi0JCXNlYXJjaHAgPSBsaXN0X2VudHJ5KHdhbGssIHN0cnVjdCBrbWVtX2NhY2hlLCBuZXh0KTsKIAkJY2hlY2tfaXJxX29uKCk7CiAKIAkJLyoKQEAgLTM4MjUsNyArMzgzMiw2IEBACiBzdGF0aWMgaW50IHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnApCiB7CiAJc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCA9IHA7Ci0Jc3RydWN0IGxpc3RfaGVhZCAqcTsKIAlzdHJ1Y3Qgc2xhYiAqc2xhYnA7CiAJdW5zaWduZWQgbG9uZyBhY3RpdmVfb2JqczsKIAl1bnNpZ25lZCBsb25nIG51bV9vYmpzOwpAQCAtMzg0NiwxNSArMzg1MiwxMyBAQAogCQljaGVja19pcnFfb24oKTsKIAkJc3Bpbl9sb2NrX2lycSgmbDMtPmxpc3RfbG9jayk7CiAKLQkJbGlzdF9mb3JfZWFjaChxLCAmbDMtPnNsYWJzX2Z1bGwpIHsKLQkJCXNsYWJwID0gbGlzdF9lbnRyeShxLCBzdHJ1Y3Qgc2xhYiwgbGlzdCk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2xhYnAsICZsMy0+c2xhYnNfZnVsbCwgbGlzdCkgewogCQkJaWYgKHNsYWJwLT5pbnVzZSAhPSBjYWNoZXAtPm51bSAmJiAhZXJyb3IpCiAJCQkJZXJyb3IgPSAic2xhYnNfZnVsbCBhY2NvdW50aW5nIGVycm9yIjsKIAkJCWFjdGl2ZV9vYmpzICs9IGNhY2hlcC0+bnVtOwogCQkJYWN0aXZlX3NsYWJzKys7CiAJCX0KLQkJbGlzdF9mb3JfZWFjaChxLCAmbDMtPnNsYWJzX3BhcnRpYWwpIHsKLQkJCXNsYWJwID0gbGlzdF9lbnRyeShxLCBzdHJ1Y3Qgc2xhYiwgbGlzdCk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2xhYnAsICZsMy0+c2xhYnNfcGFydGlhbCwgbGlzdCkgewogCQkJaWYgKHNsYWJwLT5pbnVzZSA9PSBjYWNoZXAtPm51bSAmJiAhZXJyb3IpCiAJCQkJZXJyb3IgPSAic2xhYnNfcGFydGlhbCBpbnVzZSBhY2NvdW50aW5nIGVycm9yIjsKIAkJCWlmICghc2xhYnAtPmludXNlICYmICFlcnJvcikKQEAgLTM4NjIsOCArMzg2Niw3IEBACiAJCQlhY3RpdmVfb2JqcyArPSBzbGFicC0+aW51c2U7CiAJCQlhY3RpdmVfc2xhYnMrKzsKIAkJfQotCQlsaXN0X2Zvcl9lYWNoKHEsICZsMy0+c2xhYnNfZnJlZSkgewotCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHEsIHN0cnVjdCBzbGFiLCBsaXN0KTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShzbGFicCwgJmwzLT5zbGFic19mcmVlLCBsaXN0KSB7CiAJCQlpZiAoc2xhYnAtPmludXNlICYmICFlcnJvcikKIAkJCQllcnJvciA9ICJzbGFic19mcmVlL2ludXNlIGFjY291bnRpbmcgZXJyb3IiOwogCQkJbnVtX3NsYWJzKys7CkBAIC0zOTU2LDcgKzM5NTksNyBAQAogewogCWNoYXIga2J1ZltNQVhfU0xBQklORk9fV1JJVEUgKyAxXSwgKnRtcDsKIAlpbnQgbGltaXQsIGJhdGNoY291bnQsIHNoYXJlZCwgcmVzOwotCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisJc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcDsKIAogCWlmIChjb3VudCA+IE1BWF9TTEFCSU5GT19XUklURSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0zOTc1LDEwICszOTc4LDcgQEAKIAkvKiBGaW5kIHRoZSBjYWNoZSBpbiB0aGUgY2hhaW4gb2YgY2FjaGVzLiAqLwogCW11dGV4X2xvY2soJmNhY2hlX2NoYWluX211dGV4KTsKIAlyZXMgPSAtRUlOVkFMOwotCWxpc3RfZm9yX2VhY2gocCwgJmNhY2hlX2NoYWluKSB7Ci0JCXN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXA7Ci0KLQkJY2FjaGVwID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3Qga21lbV9jYWNoZSwgbmV4dCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjYWNoZXAsICZjYWNoZV9jaGFpbiwgbmV4dCkgewogCQlpZiAoIXN0cmNtcChjYWNoZXAtPm5hbWUsIGtidWYpKSB7CiAJCQlpZiAobGltaXQgPCAxIHx8IGJhdGNoY291bnQgPCAxIHx8CiAJCQkJCWJhdGNoY291bnQgPiBsaW1pdCB8fCBzaGFyZWQgPCAwKSB7CkBAIC00MDgwLDcgKzQwODAsNiBAQAogc3RhdGljIGludCBsZWFrc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqcCkKIHsKIAlzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwID0gcDsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpxOwogCXN0cnVjdCBzbGFiICpzbGFicDsKIAlzdHJ1Y3Qga21lbV9saXN0MyAqbDM7CiAJY29uc3QgY2hhciAqbmFtZTsKQEAgLTQxMDUsMTQgKzQxMDQsMTAgQEAKIAkJY2hlY2tfaXJxX29uKCk7CiAJCXNwaW5fbG9ja19pcnEoJmwzLT5saXN0X2xvY2spOwogCi0JCWxpc3RfZm9yX2VhY2gocSwgJmwzLT5zbGFic19mdWxsKSB7Ci0JCQlzbGFicCA9IGxpc3RfZW50cnkocSwgc3RydWN0IHNsYWIsIGxpc3QpOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNsYWJwLCAmbDMtPnNsYWJzX2Z1bGwsIGxpc3QpCiAJCQloYW5kbGVfc2xhYihuLCBjYWNoZXAsIHNsYWJwKTsKLQkJfQotCQlsaXN0X2Zvcl9lYWNoKHEsICZsMy0+c2xhYnNfcGFydGlhbCkgewotCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHEsIHN0cnVjdCBzbGFiLCBsaXN0KTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShzbGFicCwgJmwzLT5zbGFic19wYXJ0aWFsLCBsaXN0KQogCQkJaGFuZGxlX3NsYWIobiwgY2FjaGVwLCBzbGFicCk7Ci0JCX0KIAkJc3Bpbl91bmxvY2tfaXJxKCZsMy0+bGlzdF9sb2NrKTsKIAl9CiAJbmFtZSA9IGNhY2hlcC0+bmFtZTsKZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5jIGIvbW0vc3BhcnNlLmMKaW5kZXggMTAwMDQwYy4uZTBhM2ZlNCAxMDA2NDQKLS0tIGEvbW0vc3BhcnNlLmMKKysrIGIvbW0vc3BhcnNlLmMKQEAgLTk5LDYgKzk5LDIyIEBACiAJcmV0dXJuIChyb290X25yICogU0VDVElPTlNfUEVSX1JPT1QpICsgKG1zIC0gcm9vdCk7CiB9CiAKKy8qCisgKiBEdXJpbmcgZWFybHkgYm9vdCwgYmVmb3JlIHNlY3Rpb25fbWVtX21hcCBpcyB1c2VkIGZvciBhbiBhY3R1YWwKKyAqIG1lbV9tYXAsIHdlIHVzZSBzZWN0aW9uX21lbV9tYXAgdG8gc3RvcmUgdGhlIHNlY3Rpb24ncyBOVU1BCisgKiBub2RlLiAgVGhpcyBrZWVwcyB1cyBmcm9tIGhhdmluZyB0byB1c2UgYW5vdGhlciBkYXRhIHN0cnVjdHVyZS4gIFRoZQorICogbm9kZSBpbmZvcm1hdGlvbiBpcyBjbGVhcmVkIGp1c3QgYmVmb3JlIHdlIHN0b3JlIHRoZSByZWFsIG1lbV9tYXAuCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBzcGFyc2VfZW5jb2RlX2Vhcmx5X25pZChpbnQgbmlkKQoreworCXJldHVybiAobmlkIDw8IFNFQ1RJT05fTklEX1NISUZUKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgc3BhcnNlX2Vhcmx5X25pZChzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pCit7CisJcmV0dXJuIChzZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgPj4gU0VDVElPTl9OSURfU0hJRlQpOworfQorCiAvKiBSZWNvcmQgYSBtZW1vcnkgYXJlYSBhZ2FpbnN0IGEgbm9kZS4gKi8KIHZvaWQgbWVtb3J5X3ByZXNlbnQoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiB7CkBAIC0xMTMsNyArMTI5LDggQEAKIAogCQltcyA9IF9fbnJfdG9fc2VjdGlvbihzZWN0aW9uKTsKIAkJaWYgKCFtcy0+c2VjdGlvbl9tZW1fbWFwKQotCQkJbXMtPnNlY3Rpb25fbWVtX21hcCA9IFNFQ1RJT05fTUFSS0VEX1BSRVNFTlQ7CisJCQltcy0+c2VjdGlvbl9tZW1fbWFwID0gc3BhcnNlX2VuY29kZV9lYXJseV9uaWQobmlkKSB8CisJCQkJCQkJU0VDVElPTl9NQVJLRURfUFJFU0VOVDsKIAl9CiB9CiAKQEAgLTE2NCw2ICsxODEsNyBAQAogCWlmICghdmFsaWRfc2VjdGlvbihtcykpCiAJCXJldHVybiAtRUlOVkFMOwogCisJbXMtPnNlY3Rpb25fbWVtX21hcCAmPSB+U0VDVElPTl9NQVBfTUFTSzsKIAltcy0+c2VjdGlvbl9tZW1fbWFwIHw9IHNwYXJzZV9lbmNvZGVfbWVtX21hcChtZW1fbWFwLCBwbnVtKTsKIAogCXJldHVybiAxOwpAQCAtMTcyLDggKzE5MCw4IEBACiBzdGF0aWMgc3RydWN0IHBhZ2UgKnNwYXJzZV9lYXJseV9tZW1fbWFwX2FsbG9jKHVuc2lnbmVkIGxvbmcgcG51bSkKIHsKIAlzdHJ1Y3QgcGFnZSAqbWFwOwotCWludCBuaWQgPSBlYXJseV9wZm5fdG9fbmlkKHNlY3Rpb25fbnJfdG9fcGZuKHBudW0pKTsKIAlzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zID0gX19ucl90b19zZWN0aW9uKHBudW0pOworCWludCBuaWQgPSBzcGFyc2VfZWFybHlfbmlkKG1zKTsKIAogCW1hcCA9IGFsbG9jX3JlbWFwKG5pZCwgc2l6ZW9mKHN0cnVjdCBwYWdlKSAqIFBBR0VTX1BFUl9TRUNUSU9OKTsKIAlpZiAobWFwKQpkaWZmIC0tZ2l0IGEvbW0vc3dhcC5jIGIvbW0vc3dhcC5jCmluZGV4IDg4ODk1YzIuLjAzYWUyMDcgMTAwNjQ0Ci0tLSBhL21tL3N3YXAuYworKysgYi9tbS9zd2FwLmMKQEAgLTQ4MCw0OCArNDgwLDYgQEAKICNlbmRpZiAvKiBDT05GSUdfSE9UUExVR19DUFUgKi8KICNlbmRpZiAvKiBDT05GSUdfU01QICovCiAKLSNpZmRlZiBDT05GSUdfU01QCi12b2lkIHBlcmNwdV9jb3VudGVyX21vZChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgbG9uZyBhbW91bnQpCi17Ci0JbG9uZyBjb3VudDsKLQlsb25nICpwY291bnQ7Ci0JaW50IGNwdSA9IGdldF9jcHUoKTsKLQotCXBjb3VudCA9IHBlcl9jcHVfcHRyKGZiYy0+Y291bnRlcnMsIGNwdSk7Ci0JY291bnQgPSAqcGNvdW50ICsgYW1vdW50OwotCWlmIChjb3VudCA+PSBGQkNfQkFUQ0ggfHwgY291bnQgPD0gLUZCQ19CQVRDSCkgewotCQlzcGluX2xvY2soJmZiYy0+bG9jayk7Ci0JCWZiYy0+Y291bnQgKz0gY291bnQ7Ci0JCSpwY291bnQgPSAwOwotCQlzcGluX3VubG9jaygmZmJjLT5sb2NrKTsKLQl9IGVsc2UgewotCQkqcGNvdW50ID0gY291bnQ7Ci0JfQotCXB1dF9jcHUoKTsKLX0KLUVYUE9SVF9TWU1CT0wocGVyY3B1X2NvdW50ZXJfbW9kKTsKLQotLyoKLSAqIEFkZCB1cCBhbGwgdGhlIHBlci1jcHUgY291bnRzLCByZXR1cm4gdGhlIHJlc3VsdC4gIFRoaXMgaXMgYSBtb3JlIGFjY3VyYXRlCi0gKiBidXQgbXVjaCBzbG93ZXIgdmVyc2lvbiBvZiBwZXJjcHVfY291bnRlcl9yZWFkX3Bvc2l0aXZlKCkKLSAqLwotbG9uZyBwZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCi17Ci0JbG9uZyByZXQ7Ci0JaW50IGNwdTsKLQotCXNwaW5fbG9jaygmZmJjLT5sb2NrKTsKLQlyZXQgPSBmYmMtPmNvdW50OwotCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKLQkJbG9uZyAqcGNvdW50ID0gcGVyX2NwdV9wdHIoZmJjLT5jb3VudGVycywgY3B1KTsKLQkJcmV0ICs9ICpwY291bnQ7Ci0JfQotCXNwaW5fdW5sb2NrKCZmYmMtPmxvY2spOwotCXJldHVybiByZXQgPCAwID8gMCA6IHJldDsKLX0KLUVYUE9SVF9TWU1CT0wocGVyY3B1X2NvdW50ZXJfc3VtKTsKLSNlbmRpZgotCiAvKgogICogUGVyZm9ybSBhbnkgc2V0dXAgZm9yIHRoZSBzd2FwIHN5c3RlbQogICovCmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuYwppbmRleCBlNWZkNTM4Li5jYzM2N2Y3IDEwMDY0NAotLS0gYS9tbS9zd2FwZmlsZS5jCisrKyBiL21tL3N3YXBmaWxlLmMKQEAgLTM5NSw2ICszOTUsOSBAQAogCXN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICogcDsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiAKKwlpZiAoaXNfbWlncmF0aW9uX2VudHJ5KGVudHJ5KSkKKwkJcmV0dXJuOworCiAJcCA9IHN3YXBfaW5mb19nZXQoZW50cnkpOwogCWlmIChwKSB7CiAJCWlmIChzd2FwX2VudHJ5X2ZyZWUocCwgc3dwX29mZnNldChlbnRyeSkpID09IDEpIHsKQEAgLTYxNSwxNSArNjE4LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotI2lmZGVmIENPTkZJR19NSUdSQVRJT04KLWludCByZW1vdmVfdm1hX3N3YXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlKQotewotCXN3cF9lbnRyeV90IGVudHJ5ID0geyAudmFsID0gcGFnZV9wcml2YXRlKHBhZ2UpIH07Ci0KLQlyZXR1cm4gdW51c2Vfdm1hKHZtYSwgZW50cnksIHBhZ2UpOwotfQotI2VuZGlmCi0KIC8qCiAgKiBTY2FuIHN3YXBfbWFwIGZyb20gY3VycmVudCBwb3NpdGlvbiB0byBuZXh0IGVudHJ5IHN0aWxsIGluIHVzZS4KICAqIFJlY3ljbGUgdG8gc3RhcnQgb24gcmVhY2hpbmcgdGhlIGVuZCwgcmV0dXJuaW5nIDAgd2hlbiBlbXB0eS4KQEAgLTcxNiw3ICs3MTAsNiBAQAogCQkgKi8KIAkJc3dhcF9tYXAgPSAmc2ktPnN3YXBfbWFwW2ldOwogCQllbnRyeSA9IHN3cF9lbnRyeSh0eXBlLCBpKTsKLWFnYWluOgogCQlwYWdlID0gcmVhZF9zd2FwX2NhY2hlX2FzeW5jKGVudHJ5LCBOVUxMLCAwKTsKIAkJaWYgKCFwYWdlKSB7CiAJCQkvKgpAQCAtNzUxLDEyICs3NDQsNiBAQAogCQl3YWl0X29uX3BhZ2VfbG9ja2VkKHBhZ2UpOwogCQl3YWl0X29uX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOwogCQlsb2NrX3BhZ2UocGFnZSk7Ci0JCWlmICghUGFnZVN3YXBDYWNoZShwYWdlKSkgewotCQkJLyogUGFnZSBtaWdyYXRpb24gaGFzIG9jY3VyZWQgKi8KLQkJCXVubG9ja19wYWdlKHBhZ2UpOwotCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwotCQkJZ290byBhZ2FpbjsKLQkJfQogCQl3YWl0X29uX3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOwogCiAJCS8qCkBAIC03ODUsMTAgKzc3Miw4IEBACiAJCQl3aGlsZSAoKnN3YXBfbWFwID4gMSAmJiAhcmV0dmFsICYmCiAJCQkJCShwID0gcC0+bmV4dCkgIT0gJnN0YXJ0X21tLT5tbWxpc3QpIHsKIAkJCQltbSA9IGxpc3RfZW50cnkocCwgc3RydWN0IG1tX3N0cnVjdCwgbW1saXN0KTsKLQkJCQlpZiAoYXRvbWljX2luY19yZXR1cm4oJm1tLT5tbV91c2VycykgPT0gMSkgewotCQkJCQlhdG9taWNfZGVjKCZtbS0+bW1fdXNlcnMpOworCQkJCWlmICghYXRvbWljX2luY19ub3RfemVybygmbW0tPm1tX3VzZXJzKSkKIAkJCQkJY29udGludWU7Ci0JCQkJfQogCQkJCXNwaW5fdW5sb2NrKCZtbWxpc3RfbG9jayk7CiAJCQkJbW1wdXQocHJldl9tbSk7CiAJCQkJcHJldl9tbSA9IG1tOwpAQCAtMTQwNywxOSArMTM5Miw3IEBACiAJCWlmICghKHAtPmZsYWdzICYgU1dQX1VTRUQpKQogCQkJYnJlYWs7CiAJZXJyb3IgPSAtRVBFUk07Ci0JLyoKLQkgKiBUZXN0IGlmIGFkZGluZyBhbm90aGVyIHN3YXAgZGV2aWNlIGlzIHBvc3NpYmxlLiBUaGVyZSBhcmUKLQkgKiB0d28gbGltaXRpbmcgZmFjdG9yczogMSkgdGhlIG51bWJlciBvZiBiaXRzIGZvciB0aGUgc3dhcAotCSAqIHR5cGUgc3dwX2VudHJ5X3QgZGVmaW5pdGlvbiBhbmQgMikgdGhlIG51bWJlciBvZiBiaXRzIGZvcgotCSAqIHRoZSBzd2FwIHR5cGUgaW4gdGhlIHN3YXAgcHRlcyBhcyBkZWZpbmVkIGJ5IHRoZSBkaWZmZXJlbnQKLQkgKiBhcmNoaXRlY3R1cmVzLiBUbyBob25vciBib3RoIGxpbWl0YXRpb25zIGEgc3dhcCBlbnRyeQotCSAqIHdpdGggc3dhcCBvZmZzZXQgMCBhbmQgc3dhcCB0eXBlIH4wVUwgaXMgY3JlYXRlZCwgZW5jb2RlZAotCSAqIHRvIGEgc3dhcCBwdGUsIGRlY29kZWQgdG8gYSBzd3BfZW50cnlfdCBhZ2FpbiBhbmQgZmluYWxseQotCSAqIHRoZSBzd2FwIHR5cGUgcGFydCBpcyBleHRyYWN0ZWQuIFRoaXMgd2lsbCBtYXNrIGFsbCBiaXRzCi0JICogZnJvbSB0aGUgaW5pdGlhbCB+MFVMIHRoYXQgY2FuJ3QgYmUgZW5jb2RlZCBpbiBlaXRoZXIgdGhlCi0JICogc3dwX2VudHJ5X3Qgb3IgdGhlIGFyY2hpdGVjdHVyZSBkZWZpbml0aW9uIG9mIGEgc3dhcCBwdGUuCi0JICovCi0JaWYgKHR5cGUgPiBzd3BfdHlwZShwdGVfdG9fc3dwX2VudHJ5KHN3cF9lbnRyeV90b19wdGUoc3dwX2VudHJ5KH4wVUwsMCkpKSkpIHsKKwlpZiAodHlwZSA+PSBNQVhfU1dBUEZJTEVTKSB7CiAJCXNwaW5fdW5sb2NrKCZzd2FwX2xvY2spOwogCQlnb3RvIG91dDsKIAl9CkBAIC0xNTA0LDggKzE0NzcsNyBAQAogCQllcnJvciA9IC1FSU5WQUw7CiAJCWdvdG8gYmFkX3N3YXA7CiAJfQotCXBhZ2UgPSByZWFkX2NhY2hlX3BhZ2UobWFwcGluZywgMCwKLQkJCShmaWxsZXJfdCAqKW1hcHBpbmctPmFfb3BzLT5yZWFkcGFnZSwgc3dhcF9maWxlKTsKKwlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgMCwgc3dhcF9maWxlKTsKIAlpZiAoSVNfRVJSKHBhZ2UpKSB7CiAJCWVycm9yID0gUFRSX0VSUihwYWdlKTsKIAkJZ290byBiYWRfc3dhcDsKQEAgLTE3MDksNiArMTY4MSw5IEBACiAJdW5zaWduZWQgbG9uZyBvZmZzZXQsIHR5cGU7CiAJaW50IHJlc3VsdCA9IDA7CiAKKwlpZiAoaXNfbWlncmF0aW9uX2VudHJ5KGVudHJ5KSkKKwkJcmV0dXJuIDE7CisKIAl0eXBlID0gc3dwX3R5cGUoZW50cnkpOwogCWlmICh0eXBlID49IG5yX3N3YXBmaWxlcykKIAkJZ290byBiYWRfZmlsZTsKZGlmZiAtLWdpdCBhL21tL3RydW5jYXRlLmMgYi9tbS90cnVuY2F0ZS5jCmluZGV4IDZjYjNmZmYuLmNmMWIwMTUgMTAwNjQ0Ci0tLSBhL21tL3RydW5jYXRlLmMKKysrIGIvbW0vdHJ1bmNhdGUuYwpAQCAtMjMwLDE0ICsyMzAsMjQgQEAKIAkJCXBhZ2V2ZWNfbG9va3VwKCZwdmVjLCBtYXBwaW5nLCBuZXh0LCBQQUdFVkVDX1NJWkUpKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBwYWdldmVjX2NvdW50KCZwdmVjKTsgaSsrKSB7CiAJCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHB2ZWMucGFnZXNbaV07CisJCQlwZ29mZl90IGluZGV4OworCQkJaW50IGxvY2tfZmFpbGVkOwogCi0JCQlpZiAoVGVzdFNldFBhZ2VMb2NrZWQocGFnZSkpIHsKLQkJCQluZXh0Kys7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0JCQlpZiAocGFnZS0+aW5kZXggPiBuZXh0KQotCQkJCW5leHQgPSBwYWdlLT5pbmRleDsKKwkJCWxvY2tfZmFpbGVkID0gVGVzdFNldFBhZ2VMb2NrZWQocGFnZSk7CisKKwkJCS8qCisJCQkgKiBXZSByZWFsbHkgc2hvdWxkbid0IGJlIGxvb2tpbmcgYXQgdGhlIC0+aW5kZXggb2YgYW4KKwkJCSAqIHVubG9ja2VkIHBhZ2UuICBCdXQgd2UncmUgbm90IGFsbG93ZWQgdG8gbG9jayB0aGVzZQorCQkJICogcGFnZXMuICBTbyB3ZSByZWx5IHVwb24gbm9ib2R5IGFsdGVyaW5nIHRoZSAtPmluZGV4CisJCQkgKiBvZiB0aGlzIChwaW5uZWQtYnktdXMpIHBhZ2UuCisJCQkgKi8KKwkJCWluZGV4ID0gcGFnZS0+aW5kZXg7CisJCQlpZiAoaW5kZXggPiBuZXh0KQorCQkJCW5leHQgPSBpbmRleDsKIAkJCW5leHQrKzsKKwkJCWlmIChsb2NrX2ZhaWxlZCkKKwkJCQljb250aW51ZTsKKwogCQkJaWYgKFBhZ2VEaXJ0eShwYWdlKSB8fCBQYWdlV3JpdGViYWNrKHBhZ2UpKQogCQkJCWdvdG8gdW5sb2NrOwogCQkJaWYgKHBhZ2VfbWFwcGVkKHBhZ2UpKQpkaWZmIC0tZ2l0IGEvbW0vdm1hbGxvYy5jIGIvbW0vdm1hbGxvYy5jCmluZGV4IGMwNTA0ZjEuLjM1Zjg1NTMgMTAwNjQ0Ci0tLSBhL21tL3ZtYWxsb2MuYworKysgYi9tbS92bWFsbG9jLmMKQEAgLTI1Nyw2ICsyNTcsMTkgQEAKIH0KIAogLyogQ2FsbGVyIG11c3QgaG9sZCB2bWxpc3RfbG9jayAqLworc3RhdGljIHN0cnVjdCB2bV9zdHJ1Y3QgKl9fZmluZF92bV9hcmVhKHZvaWQgKmFkZHIpCit7CisJc3RydWN0IHZtX3N0cnVjdCAqdG1wOworCisJZm9yICh0bXAgPSB2bWxpc3Q7IHRtcCAhPSBOVUxMOyB0bXAgPSB0bXAtPm5leHQpIHsKKwkJIGlmICh0bXAtPmFkZHIgPT0gYWRkcikKKwkJCWJyZWFrOworCX0KKworCXJldHVybiB0bXA7Cit9CisKKy8qIENhbGxlciBtdXN0IGhvbGQgdm1saXN0X2xvY2sgKi8KIHN0cnVjdCB2bV9zdHJ1Y3QgKl9fcmVtb3ZlX3ZtX2FyZWEodm9pZCAqYWRkcikKIHsKIAlzdHJ1Y3Qgdm1fc3RydWN0ICoqcCwgKnRtcDsKQEAgLTQ5OCwxMSArNTExLDMzIEBACiAgKi8KIHZvaWQgKnZtYWxsb2ModW5zaWduZWQgbG9uZyBzaXplKQogewotICAgICAgIHJldHVybiBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX0hJR0hNRU0sIFBBR0VfS0VSTkVMKTsKKwlyZXR1cm4gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNLCBQQUdFX0tFUk5FTCk7CiB9CiBFWFBPUlRfU1lNQk9MKHZtYWxsb2MpOwogCiAvKioKKyAqCXZtYWxsb2NfdXNlciAgLSAgYWxsb2NhdGUgdmlydHVhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5IHdoaWNoIGhhcworICoJCQkgICBiZWVuIHplcm9lZCBzbyBpdCBjYW4gYmUgbWFwcGVkIHRvIHVzZXJzcGFjZSB3aXRob3V0CisgKgkJCSAgIGxlYWtpbmcgZGF0YS4KKyAqCisgKglAc2l6ZToJCWFsbG9jYXRpb24gc2l6ZQorICovCit2b2lkICp2bWFsbG9jX3VzZXIodW5zaWduZWQgbG9uZyBzaXplKQoreworCXN0cnVjdCB2bV9zdHJ1Y3QgKmFyZWE7CisJdm9pZCAqcmV0OworCisJcmV0ID0gX192bWFsbG9jKHNpemUsIEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNIHwgX19HRlBfWkVSTywgUEFHRV9LRVJORUwpOworCXdyaXRlX2xvY2soJnZtbGlzdF9sb2NrKTsKKwlhcmVhID0gX19maW5kX3ZtX2FyZWEocmV0KTsKKwlhcmVhLT5mbGFncyB8PSBWTV9VU0VSTUFQOworCXdyaXRlX3VubG9jaygmdm1saXN0X2xvY2spOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0wodm1hbGxvY191c2VyKTsKKworLyoqCiAgKgl2bWFsbG9jX25vZGUgIC0gIGFsbG9jYXRlIG1lbW9yeSBvbiBhIHNwZWNpZmljIG5vZGUKICAqCiAgKglAc2l6ZToJCWFsbG9jYXRpb24gc2l6ZQpAQCAtNTE2LDcgKzU1MSw3IEBACiAgKi8KIHZvaWQgKnZtYWxsb2Nfbm9kZSh1bnNpZ25lZCBsb25nIHNpemUsIGludCBub2RlKQogewotICAgICAgIHJldHVybiBfX3ZtYWxsb2Nfbm9kZShzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfSElHSE1FTSwgUEFHRV9LRVJORUwsIG5vZGUpOworCXJldHVybiBfX3ZtYWxsb2Nfbm9kZShzaXplLCBHRlBfS0VSTkVMIHwgX19HRlBfSElHSE1FTSwgUEFHRV9LRVJORUwsIG5vZGUpOwogfQogRVhQT1JUX1NZTUJPTCh2bWFsbG9jX25vZGUpOwogCkBAIC01NTYsNiArNTkxLDI4IEBACiB9CiBFWFBPUlRfU1lNQk9MKHZtYWxsb2NfMzIpOwogCisvKioKKyAqCXZtYWxsb2NfMzJfdXNlciAgLSAgYWxsb2NhdGUgdmlydHVhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5ICgzMmJpdAorICoJCQkgICAgICBhZGRyZXNzYWJsZSkgd2hpY2ggaXMgemVyb2VkIHNvIGl0IGNhbiBiZQorICoJCQkgICAgICBtYXBwZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgbGVha2luZyBkYXRhLgorICoKKyAqCUBzaXplOgkJYWxsb2NhdGlvbiBzaXplCisgKi8KK3ZvaWQgKnZtYWxsb2NfMzJfdXNlcih1bnNpZ25lZCBsb25nIHNpemUpCit7CisJc3RydWN0IHZtX3N0cnVjdCAqYXJlYTsKKwl2b2lkICpyZXQ7CisKKwlyZXQgPSBfX3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sIFBBR0VfS0VSTkVMKTsKKwl3cml0ZV9sb2NrKCZ2bWxpc3RfbG9jayk7CisJYXJlYSA9IF9fZmluZF92bV9hcmVhKHJldCk7CisJYXJlYS0+ZmxhZ3MgfD0gVk1fVVNFUk1BUDsKKwl3cml0ZV91bmxvY2soJnZtbGlzdF9sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKHZtYWxsb2NfMzJfdXNlcik7CisKIGxvbmcgdnJlYWQoY2hhciAqYnVmLCBjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KQogewogCXN0cnVjdCB2bV9zdHJ1Y3QgKnRtcDsKQEAgLTYzMCwzICs2ODcsNjQgQEAKIAlyZWFkX3VubG9jaygmdm1saXN0X2xvY2spOwogCXJldHVybiBidWYgLSBidWZfc3RhcnQ7CiB9CisKKy8qKgorICoJcmVtYXBfdm1hbGxvY19yYW5nZSAgLSAgbWFwIHZtYWxsb2MgcGFnZXMgdG8gdXNlcnNwYWNlCisgKgorICoJQHZtYToJCXZtYSB0byBjb3ZlciAobWFwIGZ1bGwgcmFuZ2Ugb2Ygdm1hKQorICoJQGFkZHI6CQl2bWFsbG9jIG1lbW9yeQorICoJQHBnb2ZmOgkJbnVtYmVyIG9mIHBhZ2VzIGludG8gYWRkciBiZWZvcmUgZmlyc3QgcGFnZSB0byBtYXAKKyAqCUByZXR1cm5zOgkwIGZvciBzdWNjZXNzLCAtRXh4eCBvbiBmYWlsdXJlCisgKgorICoJVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCBhZGRyIGlzIGEgdmFsaWQgdm1hbGxvYydlZCBhcmVhLCBhbmQKKyAqCXRoYXQgaXQgaXMgYmlnIGVub3VnaCB0byBjb3ZlciB0aGUgdm1hLiBXaWxsIHJldHVybiBmYWlsdXJlIGlmCisgKgl0aGF0IGNyaXRlcmlhIGlzbid0IG1ldC4KKyAqCisgKglTaW1pbGFyIHRvIHJlbWFwX3Bmbl9yYW5nZSAoc2VlIG1tL21lbW9yeS5jKQorICovCitpbnQgcmVtYXBfdm1hbGxvY19yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdm9pZCAqYWRkciwKKwkJCQkJCXVuc2lnbmVkIGxvbmcgcGdvZmYpCit7CisJc3RydWN0IHZtX3N0cnVjdCAqYXJlYTsKKwl1bnNpZ25lZCBsb25nIHVhZGRyID0gdm1hLT52bV9zdGFydDsKKwl1bnNpZ25lZCBsb25nIHVzaXplID0gdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0OworCWludCByZXQ7CisKKwlpZiAoKFBBR0VfU0laRS0xKSAmICh1bnNpZ25lZCBsb25nKWFkZHIpCisJCXJldHVybiAtRUlOVkFMOworCisJcmVhZF9sb2NrKCZ2bWxpc3RfbG9jayk7CisJYXJlYSA9IF9fZmluZF92bV9hcmVhKGFkZHIpOworCWlmICghYXJlYSkKKwkJZ290byBvdXRfZWludmFsX2xvY2tlZDsKKworCWlmICghKGFyZWEtPmZsYWdzICYgVk1fVVNFUk1BUCkpCisJCWdvdG8gb3V0X2VpbnZhbF9sb2NrZWQ7CisKKwlpZiAodXNpemUgKyAocGdvZmYgPDwgUEFHRV9TSElGVCkgPiBhcmVhLT5zaXplIC0gUEFHRV9TSVpFKQorCQlnb3RvIG91dF9laW52YWxfbG9ja2VkOworCXJlYWRfdW5sb2NrKCZ2bWxpc3RfbG9jayk7CisKKwlhZGRyICs9IHBnb2ZmIDw8IFBBR0VfU0hJRlQ7CisJZG8geworCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZtYWxsb2NfdG9fcGFnZShhZGRyKTsKKwkJcmV0ID0gdm1faW5zZXJ0X3BhZ2Uodm1hLCB1YWRkciwgcGFnZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXVhZGRyICs9IFBBR0VfU0laRTsKKwkJYWRkciArPSBQQUdFX1NJWkU7CisJCXVzaXplIC09IFBBR0VfU0laRTsKKwl9IHdoaWxlICh1c2l6ZSA+IDApOworCisJLyogUHJldmVudCAidGhpbmdzIiBsaWtlIG1lbW9yeSBtaWdyYXRpb24/IFZNX2ZsYWdzIG5lZWQgYSBjbGVhbnVwLi4uICovCisJdm1hLT52bV9mbGFncyB8PSBWTV9SRVNFUlZFRDsKKworCXJldHVybiByZXQ7CisKK291dF9laW52YWxfbG9ja2VkOgorCXJlYWRfdW5sb2NrKCZ2bWxpc3RfbG9jayk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CitFWFBPUlRfU1lNQk9MKHJlbWFwX3ZtYWxsb2NfcmFuZ2UpOworCmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jCmluZGV4IDQ0MGE3MzMuLjcyYmFiYWMgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC02MSw2ICs2MSw4IEBACiAJICogSW4gdGhpcyBjb250ZXh0LCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IHdlIHNjYW4gdGhlCiAJICogd2hvbGUgbGlzdCBhdCBvbmNlLiAqLwogCWludCBzd2FwX2NsdXN0ZXJfbWF4OworCisJaW50IHN3YXBwaW5lc3M7CiB9OwogCiAvKgpAQCAtMTA4LDcgKzExMCw3IEBACiAgKiBGcm9tIDAgLi4gMTAwLiAgSGlnaGVyIG1lYW5zIG1vcmUgc3dhcHB5LgogICovCiBpbnQgdm1fc3dhcHBpbmVzcyA9IDYwOwotc3RhdGljIGxvbmcgdG90YWxfbWVtb3J5OworbG9uZyB2bV90b3RhbF9wYWdlczsJLyogVGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyB3aGljaCB0aGUgVk0gY29udHJvbHMgKi8KIAogc3RhdGljIExJU1RfSEVBRChzaHJpbmtlcl9saXN0KTsKIHN0YXRpYyBERUNMQVJFX1JXU0VNKHNocmlua2VyX3J3c2VtKTsKQEAgLTI4OCwxMSArMjkwLDIzIEBACiAJdW5sb2NrX3BhZ2UocGFnZSk7CiB9CiAKKy8qIHBvc3NpYmxlIG91dGNvbWUgb2YgcGFnZW91dCgpICovCit0eXBlZGVmIGVudW0geworCS8qIGZhaWxlZCB0byB3cml0ZSBwYWdlIG91dCwgcGFnZSBpcyBsb2NrZWQgKi8KKwlQQUdFX0tFRVAsCisJLyogbW92ZSBwYWdlIHRvIHRoZSBhY3RpdmUgbGlzdCwgcGFnZSBpcyBsb2NrZWQgKi8KKwlQQUdFX0FDVElWQVRFLAorCS8qIHBhZ2UgaGFzIGJlZW4gc2VudCB0byB0aGUgZGlzayBzdWNjZXNzZnVsbHksIHBhZ2UgaXMgdW5sb2NrZWQgKi8KKwlQQUdFX1NVQ0NFU1MsCisJLyogcGFnZSBpcyBjbGVhbiBhbmQgbG9ja2VkICovCisJUEFHRV9DTEVBTiwKK30gcGFnZW91dF90OworCiAvKgogICogcGFnZW91dCBpcyBjYWxsZWQgYnkgc2hyaW5rX3BhZ2VfbGlzdCgpIGZvciBlYWNoIGRpcnR5IHBhZ2UuCiAgKiBDYWxscyAtPndyaXRlcGFnZSgpLgogICovCi1wYWdlb3V0X3QgcGFnZW91dChzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCitzdGF0aWMgcGFnZW91dF90IHBhZ2VvdXQoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQogewogCS8qCiAJICogSWYgdGhlIHBhZ2UgaXMgZGlydHksIG9ubHkgcGVyZm9ybSB3cml0ZWJhY2sgaWYgdGhhdCB3cml0ZQpAQCAtMzM3LDYgKzM1MSw4IEBACiAJCXN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCB3YmMgPSB7CiAJCQkuc3luY19tb2RlID0gV0JfU1lOQ19OT05FLAogCQkJLm5yX3RvX3dyaXRlID0gU1dBUF9DTFVTVEVSX01BWCwKKwkJCS5yYW5nZV9zdGFydCA9IDAsCisJCQkucmFuZ2VfZW5kID0gTExPTkdfTUFYLAogCQkJLm5vbmJsb2NraW5nID0gMSwKIAkJCS5mb3JfcmVjbGFpbSA9IDEsCiAJCX07CkBAIC03MjcsNyArNzQzLDcgQEAKIAkJICogaG93IG11Y2ggbWVtb3J5CiAJCSAqIGlzIG1hcHBlZC4KIAkJICovCi0JCW1hcHBlZF9yYXRpbyA9IChzYy0+bnJfbWFwcGVkICogMTAwKSAvIHRvdGFsX21lbW9yeTsKKwkJbWFwcGVkX3JhdGlvID0gKHNjLT5ucl9tYXBwZWQgKiAxMDApIC8gdm1fdG90YWxfcGFnZXM7CiAKIAkJLyoKIAkJICogTm93IGRlY2lkZSBob3cgbXVjaCB3ZSByZWFsbHkgd2FudCB0byB1bm1hcCBzb21lIHBhZ2VzLiAgVGhlCkBAIC03NDEsNyArNzU3LDcgQEAKIAkJICogQSAxMDAlIHZhbHVlIG9mIHZtX3N3YXBwaW5lc3Mgb3ZlcnJpZGVzIHRoaXMgYWxnb3JpdGhtCiAJCSAqIGFsdG9nZXRoZXIuCiAJCSAqLwotCQlzd2FwX3RlbmRlbmN5ID0gbWFwcGVkX3JhdGlvIC8gMiArIGRpc3RyZXNzICsgdm1fc3dhcHBpbmVzczsKKwkJc3dhcF90ZW5kZW5jeSA9IG1hcHBlZF9yYXRpbyAvIDIgKyBkaXN0cmVzcyArIHNjLT5zd2FwcGluZXNzOwogCiAJCS8qCiAJCSAqIE5vdyB1c2UgdGhpcyBtZXRyaWMgdG8gZGVjaWRlIHdoZXRoZXIgdG8gc3RhcnQgbW92aW5nIG1hcHBlZApAQCAtOTU3LDYgKzk3Myw3IEBACiAJCS5tYXlfd3JpdGVwYWdlID0gIWxhcHRvcF9tb2RlLAogCQkuc3dhcF9jbHVzdGVyX21heCA9IFNXQVBfQ0xVU1RFUl9NQVgsCiAJCS5tYXlfc3dhcCA9IDEsCisJCS5zd2FwcGluZXNzID0gdm1fc3dhcHBpbmVzcywKIAl9OwogCiAJaW5jX3BhZ2Vfc3RhdGUoYWxsb2NzdGFsbCk7CkBAIC0xMDIxLDEwICsxMDM4LDYgQEAKICAqIEZvciBrc3dhcGQsIGJhbGFuY2VfcGdkYXQoKSB3aWxsIHdvcmsgYWNyb3NzIGFsbCB0aGlzIG5vZGUncyB6b25lcyB1bnRpbAogICogdGhleSBhcmUgYWxsIGF0IHBhZ2VzX2hpZ2guCiAgKgotICogSWYgYG5yX3BhZ2VzJyBpcyBub24temVybyB0aGVuIGl0IGlzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggYXJlIHRvIGJlCi0gKiByZWNsYWltZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHpvbmUgb2NjdXBhbmNpZXMuICBUaGlzIGlzIGEgc29mdHdhcmUgc3VzcGVuZAotICogc3BlY2lhbC4KLSAqCiAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggd2VyZSBhY3R1YWxseSBmcmVlZC4KICAqCiAgKiBUaGVyZSBpcyBzcGVjaWFsIGhhbmRsaW5nIGhlcmUgZm9yIHpvbmVzIHdoaWNoIGFyZSBmdWxsIG9mIHBpbm5lZCBwYWdlcy4KQEAgLTEwNDIsMTAgKzEwNTUsOCBAQAogICogdGhlIHBhZ2UgYWxsb2NhdG9yIGZhbGxiYWNrIHNjaGVtZSB0byBlbnN1cmUgdGhhdCBhZ2luZyBvZiBwYWdlcyBpcyBiYWxhbmNlZAogICogYWNyb3NzIHRoZSB6b25lcy4KICAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgYmFsYW5jZV9wZ2RhdChwZ19kYXRhX3QgKnBnZGF0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAotCQkJCWludCBvcmRlcikKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGJhbGFuY2VfcGdkYXQocGdfZGF0YV90ICpwZ2RhdCwgaW50IG9yZGVyKQogewotCXVuc2lnbmVkIGxvbmcgdG9fZnJlZSA9IG5yX3BhZ2VzOwogCWludCBhbGxfem9uZXNfb2s7CiAJaW50IHByaW9yaXR5OwogCWludCBpOwpAQCAtMTA1NSw3ICsxMDY2LDggQEAKIAlzdHJ1Y3Qgc2Nhbl9jb250cm9sIHNjID0gewogCQkuZ2ZwX21hc2sgPSBHRlBfS0VSTkVMLAogCQkubWF5X3N3YXAgPSAxLAotCQkuc3dhcF9jbHVzdGVyX21heCA9IG5yX3BhZ2VzID8gbnJfcGFnZXMgOiBTV0FQX0NMVVNURVJfTUFYLAorCQkuc3dhcF9jbHVzdGVyX21heCA9IFNXQVBfQ0xVU1RFUl9NQVgsCisJCS5zd2FwcGluZXNzID0gdm1fc3dhcHBpbmVzcywKIAl9OwogCiBsb29wX2FnYWluOgpAQCAtMTA4MiwzMSArMTA5NCwyNiBAQAogCiAJCWFsbF96b25lc19vayA9IDE7CiAKLQkJaWYgKG5yX3BhZ2VzID09IDApIHsKLQkJCS8qCi0JCQkgKiBTY2FuIGluIHRoZSBoaWdobWVtLT5kbWEgZGlyZWN0aW9uIGZvciB0aGUgaGlnaGVzdAotCQkJICogem9uZSB3aGljaCBuZWVkcyBzY2FubmluZwotCQkJICovCi0JCQlmb3IgKGkgPSBwZ2RhdC0+bnJfem9uZXMgLSAxOyBpID49IDA7IGktLSkgewotCQkJCXN0cnVjdCB6b25lICp6b25lID0gcGdkYXQtPm5vZGVfem9uZXMgKyBpOworCQkvKgorCQkgKiBTY2FuIGluIHRoZSBoaWdobWVtLT5kbWEgZGlyZWN0aW9uIGZvciB0aGUgaGlnaGVzdAorCQkgKiB6b25lIHdoaWNoIG5lZWRzIHNjYW5uaW5nCisJCSAqLworCQlmb3IgKGkgPSBwZ2RhdC0+bnJfem9uZXMgLSAxOyBpID49IDA7IGktLSkgeworCQkJc3RydWN0IHpvbmUgKnpvbmUgPSBwZ2RhdC0+bm9kZV96b25lcyArIGk7CiAKLQkJCQlpZiAoIXBvcHVsYXRlZF96b25lKHpvbmUpKQotCQkJCQljb250aW51ZTsKKwkJCWlmICghcG9wdWxhdGVkX3pvbmUoem9uZSkpCisJCQkJY29udGludWU7CiAKLQkJCQlpZiAoem9uZS0+YWxsX3VucmVjbGFpbWFibGUgJiYKLQkJCQkJCXByaW9yaXR5ICE9IERFRl9QUklPUklUWSkKLQkJCQkJY29udGludWU7CisJCQlpZiAoem9uZS0+YWxsX3VucmVjbGFpbWFibGUgJiYgcHJpb3JpdHkgIT0gREVGX1BSSU9SSVRZKQorCQkJCWNvbnRpbnVlOwogCi0JCQkJaWYgKCF6b25lX3dhdGVybWFya19vayh6b25lLCBvcmRlciwKLQkJCQkJCXpvbmUtPnBhZ2VzX2hpZ2gsIDAsIDApKSB7Ci0JCQkJCWVuZF96b25lID0gaTsKLQkJCQkJZ290byBzY2FuOwotCQkJCX0KKwkJCWlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIHpvbmUtPnBhZ2VzX2hpZ2gsCisJCQkJCSAgICAgICAwLCAwKSkgeworCQkJCWVuZF96b25lID0gaTsKKwkJCQlnb3RvIHNjYW47CiAJCQl9Ci0JCQlnb3RvIG91dDsKLQkJfSBlbHNlIHsKLQkJCWVuZF96b25lID0gcGdkYXQtPm5yX3pvbmVzIC0gMTsKIAkJfQorCQlnb3RvIG91dDsKIHNjYW46CiAJCWZvciAoaSA9IDA7IGkgPD0gZW5kX3pvbmU7IGkrKykgewogCQkJc3RydWN0IHpvbmUgKnpvbmUgPSBwZ2RhdC0+bm9kZV96b25lcyArIGk7CkBAIC0xMTMzLDExICsxMTQwLDkgQEAKIAkJCWlmICh6b25lLT5hbGxfdW5yZWNsYWltYWJsZSAmJiBwcmlvcml0eSAhPSBERUZfUFJJT1JJVFkpCiAJCQkJY29udGludWU7CiAKLQkJCWlmIChucl9wYWdlcyA9PSAwKSB7CS8qIE5vdCBzb2Z0d2FyZSBzdXNwZW5kICovCi0JCQkJaWYgKCF6b25lX3dhdGVybWFya19vayh6b25lLCBvcmRlciwKLQkJCQkJCXpvbmUtPnBhZ2VzX2hpZ2gsIGVuZF96b25lLCAwKSkKLQkJCQkJYWxsX3pvbmVzX29rID0gMDsKLQkJCX0KKwkJCWlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIHpvbmUtPnBhZ2VzX2hpZ2gsCisJCQkJCSAgICAgICBlbmRfem9uZSwgMCkpCisJCQkJYWxsX3pvbmVzX29rID0gMDsKIAkJCXpvbmUtPnRlbXBfcHJpb3JpdHkgPSBwcmlvcml0eTsKIAkJCWlmICh6b25lLT5wcmV2X3ByaW9yaXR5ID4gcHJpb3JpdHkpCiAJCQkJem9uZS0+cHJldl9wcmlvcml0eSA9IHByaW9yaXR5OwpAQCAtMTE2Miw4ICsxMTY3LDYgQEAKIAkJCSAgICB0b3RhbF9zY2FubmVkID4gbnJfcmVjbGFpbWVkICsgbnJfcmVjbGFpbWVkIC8gMikKIAkJCQlzYy5tYXlfd3JpdGVwYWdlID0gMTsKIAkJfQotCQlpZiAobnJfcGFnZXMgJiYgdG9fZnJlZSA+IG5yX3JlY2xhaW1lZCkKLQkJCWNvbnRpbnVlOwkvKiBzd3N1c3A6IG5lZWQgdG8gZG8gbW9yZSB3b3JrICovCiAJCWlmIChhbGxfem9uZXNfb2spCiAJCQlicmVhazsJCS8qIGtzd2FwZDogYWxsIGRvbmUgKi8KIAkJLyoKQEAgLTExNzksNyArMTE4Miw3IEBACiAJCSAqIG1hdGNoZXMgdGhlIGRpcmVjdCByZWNsYWltIHBhdGggYmVoYXZpb3VyIGluIHRlcm1zIG9mIGltcGFjdAogCQkgKiBvbiB6b25lLT4qX3ByaW9yaXR5LgogCQkgKi8KLQkJaWYgKChucl9yZWNsYWltZWQgPj0gU1dBUF9DTFVTVEVSX01BWCkgJiYgIW5yX3BhZ2VzKQorCQlpZiAobnJfcmVjbGFpbWVkID49IFNXQVBfQ0xVU1RFUl9NQVgpCiAJCQlicmVhazsKIAl9CiBvdXQ6CkBAIC0xMjYxLDcgKzEyNjQsNyBAQAogCQl9CiAJCWZpbmlzaF93YWl0KCZwZ2RhdC0+a3N3YXBkX3dhaXQsICZ3YWl0KTsKIAotCQliYWxhbmNlX3BnZGF0KHBnZGF0LCAwLCBvcmRlcik7CisJCWJhbGFuY2VfcGdkYXQocGdkYXQsIG9yZGVyKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0xMjkwLDM1ICsxMjkzLDE1NCBAQAogCiAjaWZkZWYgQ09ORklHX1BNCiAvKgotICogVHJ5IHRvIGZyZWUgYG5yX3BhZ2VzJyBvZiBtZW1vcnksIHN5c3RlbS13aWRlLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZyZWVkCi0gKiBwYWdlcy4KKyAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc2hyaW5rX2FsbF9tZW1vcnkoKS4gIFRyaWVzIHRvIHJlY2xhaW0gJ25yX3BhZ2VzJyBwYWdlcworICogZnJvbSBMUlUgbGlzdHMgc3lzdGVtLXdpZGUsIGZvciBnaXZlbiBwYXNzIGFuZCBwcmlvcml0eSwgYW5kIHJldHVybnMgdGhlCisgKiBudW1iZXIgb2YgcmVjbGFpbWVkIHBhZ2VzCisgKgorICogRm9yIHBhc3MgPiAzIHdlIGFsc28gdHJ5IHRvIHNocmluayB0aGUgTFJVIGxpc3RzIHRoYXQgY29udGFpbiBhIGZldyBwYWdlcworICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfYWxsX3pvbmVzKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsIGludCBwYXNzLAorCQkJCSAgICAgIGludCBwcmlvLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKK3sKKwlzdHJ1Y3Qgem9uZSAqem9uZTsKKwl1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHJldCA9IDA7CisKKwlmb3JfZWFjaF96b25lKHpvbmUpIHsKKworCQlpZiAoIXBvcHVsYXRlZF96b25lKHpvbmUpKQorCQkJY29udGludWU7CisKKwkJaWYgKHpvbmUtPmFsbF91bnJlY2xhaW1hYmxlICYmIHByaW8gIT0gREVGX1BSSU9SSVRZKQorCQkJY29udGludWU7CisKKwkJLyogRm9yIHBhc3MgPSAwIHdlIGRvbid0IHNocmluayB0aGUgYWN0aXZlIGxpc3QgKi8KKwkJaWYgKHBhc3MgPiAwKSB7CisJCQl6b25lLT5ucl9zY2FuX2FjdGl2ZSArPSAoem9uZS0+bnJfYWN0aXZlID4+IHByaW8pICsgMTsKKwkJCWlmICh6b25lLT5ucl9zY2FuX2FjdGl2ZSA+PSBucl9wYWdlcyB8fCBwYXNzID4gMykgeworCQkJCXpvbmUtPm5yX3NjYW5fYWN0aXZlID0gMDsKKwkJCQlucl90b19zY2FuID0gbWluKG5yX3BhZ2VzLCB6b25lLT5ucl9hY3RpdmUpOworCQkJCXNocmlua19hY3RpdmVfbGlzdChucl90b19zY2FuLCB6b25lLCBzYyk7CisJCQl9CisJCX0KKworCQl6b25lLT5ucl9zY2FuX2luYWN0aXZlICs9ICh6b25lLT5ucl9pbmFjdGl2ZSA+PiBwcmlvKSArIDE7CisJCWlmICh6b25lLT5ucl9zY2FuX2luYWN0aXZlID49IG5yX3BhZ2VzIHx8IHBhc3MgPiAzKSB7CisJCQl6b25lLT5ucl9zY2FuX2luYWN0aXZlID0gMDsKKwkJCW5yX3RvX3NjYW4gPSBtaW4obnJfcGFnZXMsIHpvbmUtPm5yX2luYWN0aXZlKTsKKwkJCXJldCArPSBzaHJpbmtfaW5hY3RpdmVfbGlzdChucl90b19zY2FuLCB6b25lLCBzYyk7CisJCQlpZiAocmV0ID49IG5yX3BhZ2VzKQorCQkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogVHJ5IHRvIGZyZWUgYG5yX3BhZ2VzJyBvZiBtZW1vcnksIHN5c3RlbS13aWRlLCBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAqIGZyZWVkIHBhZ2VzLgorICoKKyAqIFJhdGhlciB0aGFuIHRyeWluZyB0byBhZ2UgTFJVcyB0aGUgYWltIGlzIHRvIHByZXNlcnZlIHRoZSBvdmVyYWxsCisgKiBMUlUgb3JkZXIgYnkgcmVjbGFpbWluZyBwcmVmZXJlbnRpYWxseQorICogaW5hY3RpdmUgPiBhY3RpdmUgPiBhY3RpdmUgcmVmZXJlbmNlZCA+IGFjdGl2ZSBtYXBwZWQKICAqLwogdW5zaWduZWQgbG9uZyBzaHJpbmtfYWxsX21lbW9yeSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQogewotCXBnX2RhdGFfdCAqcGdkYXQ7Ci0JdW5zaWduZWQgbG9uZyBucl90b19mcmVlID0gbnJfcGFnZXM7CisJdW5zaWduZWQgbG9uZyBscnVfcGFnZXMsIG5yX3NsYWI7CiAJdW5zaWduZWQgbG9uZyByZXQgPSAwOwotCXVuc2lnbmVkIHJldHJ5ID0gMjsKLQlzdHJ1Y3QgcmVjbGFpbV9zdGF0ZSByZWNsYWltX3N0YXRlID0gewotCQkucmVjbGFpbWVkX3NsYWIgPSAwLAorCWludCBwYXNzOworCXN0cnVjdCByZWNsYWltX3N0YXRlIHJlY2xhaW1fc3RhdGU7CisJc3RydWN0IHpvbmUgKnpvbmU7CisJc3RydWN0IHNjYW5fY29udHJvbCBzYyA9IHsKKwkJLmdmcF9tYXNrID0gR0ZQX0tFUk5FTCwKKwkJLm1heV9zd2FwID0gMCwKKwkJLnN3YXBfY2x1c3Rlcl9tYXggPSBucl9wYWdlcywKKwkJLm1heV93cml0ZXBhZ2UgPSAxLAorCQkuc3dhcHBpbmVzcyA9IHZtX3N3YXBwaW5lc3MsCiAJfTsKIAogCWN1cnJlbnQtPnJlY2xhaW1fc3RhdGUgPSAmcmVjbGFpbV9zdGF0ZTsKLXJlcGVhdDoKLQlmb3JfZWFjaF9vbmxpbmVfcGdkYXQocGdkYXQpIHsKLQkJdW5zaWduZWQgbG9uZyBmcmVlZDsKIAotCQlmcmVlZCA9IGJhbGFuY2VfcGdkYXQocGdkYXQsIG5yX3RvX2ZyZWUsIDApOwotCQlyZXQgKz0gZnJlZWQ7Ci0JCW5yX3RvX2ZyZWUgLT0gZnJlZWQ7Ci0JCWlmICgobG9uZylucl90b19mcmVlIDw9IDApCisJbHJ1X3BhZ2VzID0gMDsKKwlmb3JfZWFjaF96b25lKHpvbmUpCisJCWxydV9wYWdlcyArPSB6b25lLT5ucl9hY3RpdmUgKyB6b25lLT5ucl9pbmFjdGl2ZTsKKworCW5yX3NsYWIgPSByZWFkX3BhZ2Vfc3RhdGUobnJfc2xhYik7CisJLyogSWYgc2xhYiBjYWNoZXMgYXJlIGh1Z2UsIGl0J3MgYmV0dGVyIHRvIGhpdCB0aGVtIGZpcnN0ICovCisJd2hpbGUgKG5yX3NsYWIgPj0gbHJ1X3BhZ2VzKSB7CisJCXJlY2xhaW1fc3RhdGUucmVjbGFpbWVkX3NsYWIgPSAwOworCQlzaHJpbmtfc2xhYihucl9wYWdlcywgc2MuZ2ZwX21hc2ssIGxydV9wYWdlcyk7CisJCWlmICghcmVjbGFpbV9zdGF0ZS5yZWNsYWltZWRfc2xhYikKIAkJCWJyZWFrOworCisJCXJldCArPSByZWNsYWltX3N0YXRlLnJlY2xhaW1lZF9zbGFiOworCQlpZiAocmV0ID49IG5yX3BhZ2VzKQorCQkJZ290byBvdXQ7CisKKwkJbnJfc2xhYiAtPSByZWNsYWltX3N0YXRlLnJlY2xhaW1lZF9zbGFiOwogCX0KLQlpZiAocmV0cnktLSAmJiByZXQgPCBucl9wYWdlcykgewotCQlibGtfY29uZ2VzdGlvbl93YWl0KFdSSVRFLCBIWi81KTsKLQkJZ290byByZXBlYXQ7CisKKwkvKgorCSAqIFdlIHRyeSB0byBzaHJpbmsgTFJVcyBpbiA1IHBhc3NlczoKKwkgKiAwID0gUmVjbGFpbSBmcm9tIGluYWN0aXZlX2xpc3Qgb25seQorCSAqIDEgPSBSZWNsYWltIGZyb20gYWN0aXZlIGxpc3QgYnV0IGRvbid0IHJlY2xhaW0gbWFwcGVkCisJICogMiA9IDJuZCBwYXNzIG9mIHR5cGUgMQorCSAqIDMgPSBSZWNsYWltIG1hcHBlZCAobm9ybWFsIHJlY2xhaW0pCisJICogNCA9IDJuZCBwYXNzIG9mIHR5cGUgMworCSAqLworCWZvciAocGFzcyA9IDA7IHBhc3MgPCA1OyBwYXNzKyspIHsKKwkJaW50IHByaW87CisKKwkJLyogTmVlZGVkIGZvciBzaHJpbmtpbmcgc2xhYiBjYWNoZXMgbGF0ZXIgb24gKi8KKwkJaWYgKCFscnVfcGFnZXMpCisJCQlmb3JfZWFjaF96b25lKHpvbmUpIHsKKwkJCQlscnVfcGFnZXMgKz0gem9uZS0+bnJfYWN0aXZlOworCQkJCWxydV9wYWdlcyArPSB6b25lLT5ucl9pbmFjdGl2ZTsKKwkJCX0KKworCQkvKiBGb3JjZSByZWNsYWltaW5nIG1hcHBlZCBwYWdlcyBpbiB0aGUgcGFzc2VzICMzIGFuZCAjNCAqLworCQlpZiAocGFzcyA+IDIpIHsKKwkJCXNjLm1heV9zd2FwID0gMTsKKwkJCXNjLnN3YXBwaW5lc3MgPSAxMDA7CisJCX0KKworCQlmb3IgKHByaW8gPSBERUZfUFJJT1JJVFk7IHByaW8gPj0gMDsgcHJpby0tKSB7CisJCQl1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4gPSBucl9wYWdlcyAtIHJldDsKKworCQkJc2MubnJfbWFwcGVkID0gcmVhZF9wYWdlX3N0YXRlKG5yX21hcHBlZCk7CisJCQlzYy5ucl9zY2FubmVkID0gMDsKKworCQkJcmV0ICs9IHNocmlua19hbGxfem9uZXMobnJfdG9fc2NhbiwgcHJpbywgcGFzcywgJnNjKTsKKwkJCWlmIChyZXQgPj0gbnJfcGFnZXMpCisJCQkJZ290byBvdXQ7CisKKwkJCXJlY2xhaW1fc3RhdGUucmVjbGFpbWVkX3NsYWIgPSAwOworCQkJc2hyaW5rX3NsYWIoc2MubnJfc2Nhbm5lZCwgc2MuZ2ZwX21hc2ssIGxydV9wYWdlcyk7CisJCQlyZXQgKz0gcmVjbGFpbV9zdGF0ZS5yZWNsYWltZWRfc2xhYjsKKwkJCWlmIChyZXQgPj0gbnJfcGFnZXMpCisJCQkJZ290byBvdXQ7CisKKwkJCWlmIChzYy5ucl9zY2FubmVkICYmIHByaW8gPCBERUZfUFJJT1JJVFkgLSAyKQorCQkJCWJsa19jb25nZXN0aW9uX3dhaXQoV1JJVEUsIEhaIC8gMTApOworCQl9CisKKwkJbHJ1X3BhZ2VzID0gMDsKIAl9CisKKwkvKgorCSAqIElmIHJldCA9IDAsIHdlIGNvdWxkIG5vdCBzaHJpbmsgTFJVcywgYnV0IHRoZXJlIG1heSBiZSBzb21ldGhpbmcKKwkgKiBpbiBzbGFiIGNhY2hlcworCSAqLworCWlmICghcmV0KQorCQlkbyB7CisJCQlyZWNsYWltX3N0YXRlLnJlY2xhaW1lZF9zbGFiID0gMDsKKwkJCXNocmlua19zbGFiKG5yX3BhZ2VzLCBzYy5nZnBfbWFzaywgbHJ1X3BhZ2VzKTsKKwkJCXJldCArPSByZWNsYWltX3N0YXRlLnJlY2xhaW1lZF9zbGFiOworCQl9IHdoaWxlIChyZXQgPCBucl9wYWdlcyAmJiByZWNsYWltX3N0YXRlLnJlY2xhaW1lZF9zbGFiID4gMCk7CisKK291dDoKIAljdXJyZW50LT5yZWNsYWltX3N0YXRlID0gTlVMTDsKKwogCXJldHVybiByZXQ7CiB9CiAjZW5kaWYKQEAgLTEzNjAsNyArMTQ4Miw2IEBACiAJCXBnZGF0LT5rc3dhcGQgPSBmaW5kX3Rhc2tfYnlfcGlkKHBpZCk7CiAJCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAl9Ci0JdG90YWxfbWVtb3J5ID0gbnJfZnJlZV9wYWdlY2FjaGVfcGFnZXMoKTsKIAlob3RjcHVfbm90aWZpZXIoY3B1X2NhbGxiYWNrLCAwKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE0MTYsNiArMTUzNyw3IEBACiAJCS5zd2FwX2NsdXN0ZXJfbWF4ID0gbWF4X3QodW5zaWduZWQgbG9uZywgbnJfcGFnZXMsCiAJCQkJCVNXQVBfQ0xVU1RFUl9NQVgpLAogCQkuZ2ZwX21hc2sgPSBnZnBfbWFzaywKKwkJLnN3YXBwaW5lc3MgPSB2bV9zd2FwcGluZXNzLAogCX07CiAKIAlkaXNhYmxlX3N3YXBfdG9rZW4oKTsKZGlmZiAtLWdpdCBhL25ldC9hdG0vbXBjLmMgYi9uZXQvYXRtL21wYy5jCmluZGV4IGMzMDRlZjEuLmE0OGE1ZDUgMTAwNjQ0Ci0tLSBhL25ldC9hdG0vbXBjLmMKKysrIGIvbmV0L2F0bS9tcGMuYwpAQCAtMjI5LDIwICsyMjksMTUgQEAKIC8qIHRoaXMgaXMgYnVnZ2VyZWQgLSB3ZSBuZWVkIGxvY2tpbmcgZm9yIHFvc19oZWFkICovCiB2b2lkIGF0bV9tcG9hX2Rpc3BfcW9zKHN0cnVjdCBzZXFfZmlsZSAqbSkKIHsKLQl1bnNpZ25lZCBjaGFyICppcDsKLQljaGFyIGlwYWRkclsxNl07CiAJc3RydWN0IGF0bV9tcG9hX3FvcyAqcW9zOwogCiAJcW9zID0gcW9zX2hlYWQ7CiAJc2VxX3ByaW50ZihtLCAiUW9TIGVudHJpZXMgZm9yIHNob3J0Y3V0czpcbiIpOwogCXNlcV9wcmludGYobSwgIklQIGFkZHJlc3NcbiAgVFg6bWF4X3BjciBwY3IgICAgIG1pbl9wY3IgbWF4X2NkdiBtYXhfc2R1XG4gIFJYOm1heF9wY3IgcGNyICAgICBtaW5fcGNyIG1heF9jZHYgbWF4X3NkdVxuIik7CiAKLQlpcGFkZHJbc2l6ZW9mKGlwYWRkciktMV0gPSAnXDAnOwogCXdoaWxlIChxb3MgIT0gTlVMTCkgewotCQlpcCA9ICh1bnNpZ25lZCBjaGFyICopJnFvcy0+aXBhZGRyOwotCQlzcHJpbnRmKGlwYWRkciwgIiV1LiV1LiV1LiV1IiwgTklQUVVBRChpcCkpOwogCQlzZXFfcHJpbnRmKG0sICIldS4ldS4ldS4ldVxuICAgICAlLTdkICUtN2QgJS03ZCAlLTdkICUtN2RcbiAgICAgJS03ZCAlLTdkICUtN2QgJS03ZCAlLTdkXG4iLAotCQkJCU5JUFFVQUQoaXBhZGRyKSwKKwkJCQlOSVBRVUFEKHFvcy0+aXBhZGRyKSwKIAkJCQlxb3MtPnFvcy50eHRwLm1heF9wY3IsIHFvcy0+cW9zLnR4dHAucGNyLCBxb3MtPnFvcy50eHRwLm1pbl9wY3IsIHFvcy0+cW9zLnR4dHAubWF4X2NkdiwgcW9zLT5xb3MudHh0cC5tYXhfc2R1LAogCQkJCXFvcy0+cW9zLnJ4dHAubWF4X3BjciwgcW9zLT5xb3Mucnh0cC5wY3IsIHFvcy0+cW9zLnJ4dHAubWluX3BjciwgcW9zLT5xb3Mucnh0cC5tYXhfY2R2LCBxb3MtPnFvcy5yeHRwLm1heF9zZHUpOwogCQlxb3MgPSBxb3MtPm5leHQ7CkBAIC0xMDgzLDcgKzEwNzgsNiBAQAogc3RhdGljIHZvaWQgY2hlY2tfcW9zX2FuZF9vcGVuX3Nob3J0Y3V0KHN0cnVjdCBrX21lc3NhZ2UgKm1zZywgc3RydWN0IG1wb2FfY2xpZW50ICpjbGllbnQsIGluX2NhY2hlX2VudHJ5ICplbnRyeSkKIHsKIAl1aW50MzJfdCBkc3RfaXAgPSBtc2ctPmNvbnRlbnQuaW5faW5mby5pbl9kc3RfaXA7Ci0JdW5zaWduZWQgY2hhciAqaXAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gKHVuc2lnbmVkIGNoYXIgKikmZHN0X2lwOwogCXN0cnVjdCBhdG1fbXBvYV9xb3MgKnFvcyA9IGF0bV9tcG9hX3NlYXJjaF9xb3MoZHN0X2lwKTsKIAllZ19jYWNoZV9lbnRyeSAqZWdfZW50cnkgPSBjbGllbnQtPmVnX29wcy0+Z2V0X2J5X3NyY19pcChkc3RfaXAsIGNsaWVudCk7CiAKQEAgLTEwOTcsNyArMTA5MSw3IEBACiAJCQkJICAgIGVudHJ5LT5zaG9ydGN1dCA9IGVnX2VudHJ5LT5zaG9ydGN1dDsKIAkJfQogCSAJaWYoZW50cnktPnNob3J0Y3V0KXsKLQkJCWRwcmludGsoIm1wb2E6ICglcykgdXNpbmcgZWdyZXNzIFNWQyB0byByZWFjaCAldS4ldS4ldS4ldVxuIixjbGllbnQtPmRldi0+bmFtZSwgTklQUVVBRChpcCkpOworCQkJZHByaW50aygibXBvYTogKCVzKSB1c2luZyBlZ3Jlc3MgU1ZDIHRvIHJlYWNoICV1LiV1LiV1LiV1XG4iLGNsaWVudC0+ZGV2LT5uYW1lLCBOSVBRVUFEKGRzdF9pcCkpOwogCQkJY2xpZW50LT5lZ19vcHMtPnB1dChlZ19lbnRyeSk7CiAJCQlyZXR1cm47CiAJCX0KQEAgLTExMjMsOCArMTExNyw3IEBACiAKIAl1aW50MzJfdCBkc3RfaXAgPSBtc2ctPmNvbnRlbnQuaW5faW5mby5pbl9kc3RfaXA7CiAJaW5fY2FjaGVfZW50cnkgKmVudHJ5ID0gbXBjLT5pbl9vcHMtPmdldChkc3RfaXAsIG1wYyk7Ci0JaXAgPSAodW5zaWduZWQgY2hhciAqKSZkc3RfaXA7Ci0JZHByaW50aygibXBvYTogKCVzKSBNUE9BX3Jlc19yZXBseV9yY3ZkOiBpcCAldS4ldS4ldS4ldVxuIiwgbXBjLT5kZXYtPm5hbWUsIE5JUFFVQUQoaXApKTsKKwlkcHJpbnRrKCJtcG9hOiAoJXMpIE1QT0FfcmVzX3JlcGx5X3JjdmQ6IGlwICV1LiV1LiV1LiV1XG4iLCBtcGMtPmRldi0+bmFtZSwgTklQUVVBRChkc3RfaXApKTsKIAlkZHByaW50aygibXBvYTogKCVzKSBNUE9BX3Jlc19yZXBseV9yY3ZkKCkgZW50cnkgPSAlcCIsIG1wYy0+ZGV2LT5uYW1lLCBlbnRyeSk7CiAJaWYoZW50cnkgPT0gTlVMTCl7CiAJCXByaW50aygiXG5tcG9hOiAoJXMpIEFSR0gsIHJlY2VpdmVkIHJlcy4gcmVwbHkgZm9yIGFuIGVudHJ5IHRoYXQgZG9lc24ndCBleGlzdC5cbiIsIG1wYy0+ZGV2LT5uYW1lKTsKZGlmZiAtLWdpdCBhL25ldC9hdG0vbXBvYV9jYWNoZXMuYyBiL25ldC9hdG0vbXBvYV9jYWNoZXMuYwppbmRleCA2NGRkZWJiLi43ODFlZDFiIDEwMDY0NAotLS0gYS9uZXQvYXRtL21wb2FfY2FjaGVzLmMKKysrIGIvbmV0L2F0bS9tcG9hX2NhY2hlcy5jCkBAIC0yMjMsNyArMjIzLDYgQEAKICAgIGJ1dCBhbiBlYXN5IG9uZS4uLiAqLwogc3RhdGljIHZvaWQgY2xlYXJfY291bnRfYW5kX2V4cGlyZWQoc3RydWN0IG1wb2FfY2xpZW50ICpjbGllbnQpCiB7Ci0JdW5zaWduZWQgY2hhciAqaXA7CiAJaW5fY2FjaGVfZW50cnkgKmVudHJ5LCAqbmV4dF9lbnRyeTsKIAlzdHJ1Y3QgdGltZXZhbCBub3c7CiAKQEAgLTIzNiw4ICsyMzUsNyBAQAogCQluZXh0X2VudHJ5ID0gZW50cnktPm5leHQ7CiAJCWlmKChub3cudHZfc2VjIC0gZW50cnktPnR2LnR2X3NlYykKIAkJICAgPiBlbnRyeS0+Y3RybF9pbmZvLmhvbGRpbmdfdGltZSl7Ci0JCQlpcCA9ICh1bnNpZ25lZCBjaGFyKikmZW50cnktPmN0cmxfaW5mby5pbl9kc3RfaXA7Ci0JCQlkcHJpbnRrKCJtcG9hOiBtcG9hX2NhY2hlcy5jOiBob2xkaW5nIHRpbWUgZXhwaXJlZCwgaXAgPSAldS4ldS4ldS4ldVxuIiwgTklQUVVBRChpcCkpOworCQkJZHByaW50aygibXBvYTogbXBvYV9jYWNoZXMuYzogaG9sZGluZyB0aW1lIGV4cGlyZWQsIGlwID0gJXUuJXUuJXUuJXVcbiIsIE5JUFFVQUQoZW50cnktPmN0cmxfaW5mby5pbl9kc3RfaXApKTsKIAkJCWNsaWVudC0+aW5fb3BzLT5yZW1vdmVfZW50cnkoZW50cnksIGNsaWVudCk7CiAJCX0KIAkJZW50cnkgPSBuZXh0X2VudHJ5OwpAQCAtNDU1LDcgKzQ1Myw2IEBACiAKIHN0YXRpYyBlZ19jYWNoZV9lbnRyeSAqZWdfY2FjaGVfYWRkX2VudHJ5KHN0cnVjdCBrX21lc3NhZ2UgKm1zZywgc3RydWN0IG1wb2FfY2xpZW50ICpjbGllbnQpCiB7Ci0JdW5zaWduZWQgY2hhciAqaXA7CiAJZWdfY2FjaGVfZW50cnkgKmVudHJ5ID0ga21hbGxvYyhzaXplb2YoZWdfY2FjaGVfZW50cnkpLCBHRlBfS0VSTkVMKTsKIAogCWlmIChlbnRyeSA9PSBOVUxMKSB7CkBAIC00NjMsOCArNDYwLDcgQEAKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JaXAgPSAodW5zaWduZWQgY2hhciAqKSZtc2ctPmNvbnRlbnQuZWdfaW5mby5lZ19kc3RfaXA7Ci0JZHByaW50aygibXBvYTogbXBvYV9jYWNoZXMuYzogYWRkaW5nIGFuIGVncmVzcyBlbnRyeSwgaXAgPSAldS4ldS4ldS4ldSwgdGhpcyBzaG91bGQgYmUgb3VyIElQXG4iLCBOSVBRVUFEKGlwKSk7CisJZHByaW50aygibXBvYTogbXBvYV9jYWNoZXMuYzogYWRkaW5nIGFuIGVncmVzcyBlbnRyeSwgaXAgPSAldS4ldS4ldS4ldSwgdGhpcyBzaG91bGQgYmUgb3VyIElQXG4iLCBOSVBRVUFEKG1zZy0+Y29udGVudC5lZ19pbmZvLmVnX2RzdF9pcCkpOwogCW1lbXNldChlbnRyeSwgMCwgc2l6ZW9mKGVnX2NhY2hlX2VudHJ5KSk7CiAKIAlhdG9taWNfc2V0KCZlbnRyeS0+dXNlLCAxKTsKQEAgLTQ4MSw4ICs0NzcsOCBAQAogCWRvX2dldHRpbWVvZmRheSgmKGVudHJ5LT50dikpOwogCWVudHJ5LT5lbnRyeV9zdGF0ZSA9IEVHUkVTU19SRVNPTFZFRDsKIAlkcHJpbnRrKCJtcG9hOiBtcG9hX2NhY2hlcy5jOiBuZXdfZWdfY2FjaGVfZW50cnkgY2FjaGVfaWQgJWx1XG4iLCBudG9obChlbnRyeS0+Y3RybF9pbmZvLmNhY2hlX2lkKSk7Ci0JaXAgPSAodW5zaWduZWQgY2hhciAqKSZlbnRyeS0+Y3RybF9pbmZvLm1wc19pcDsKLQlkcHJpbnRrKCJtcG9hOiBtcG9hX2NhY2hlcy5jOiBtcHNfaXAgPSAldS4ldS4ldS4ldVxuIiwgTklQUVVBRChpcCkpOworCWRwcmludGsoIm1wb2E6IG1wb2FfY2FjaGVzLmM6IG1wc19pcCA9ICV1LiV1LiV1LiV1XG4iLAorCQlOSVBRVUFEKGVudHJ5LT5jdHJsX2luZm8ubXBzX2lwKSk7CiAJYXRvbWljX2luYygmZW50cnktPnVzZSk7CiAKIAl3cml0ZV91bmxvY2tfaXJxKCZjbGllbnQtPmVncmVzc19sb2NrKTsKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfZm9yd2FyZC5jIGIvbmV0L2JyaWRnZS9icl9mb3J3YXJkLmMKaW5kZXggMGRjYTAyNy4uOGJlOWYyMSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9mb3J3YXJkLmMKKysrIGIvbmV0L2JyaWRnZS9icl9mb3J3YXJkLmMKQEAgLTM0LDggKzM0LDggQEAKIAogaW50IGJyX2Rldl9xdWV1ZV9wdXNoX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQkvKiBkcm9wIG10dSBvdmVyc2l6ZWQgcGFja2V0cyBleGNlcHQgdHNvICovCi0JaWYgKHBhY2tldF9sZW5ndGgoc2tiKSA+IHNrYi0+ZGV2LT5tdHUgJiYgIXNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUpCisJLyogZHJvcCBtdHUgb3ZlcnNpemVkIHBhY2tldHMgZXhjZXB0IGdzbyAqLworCWlmIChwYWNrZXRfbGVuZ3RoKHNrYikgPiBza2ItPmRldi0+bXR1ICYmICFza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKQogCQlrZnJlZV9za2Ioc2tiKTsKIAllbHNlIHsKICNpZmRlZiBDT05GSUdfQlJJREdFX05FVEZJTFRFUgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9pZi5jIGIvbmV0L2JyaWRnZS9icl9pZi5jCmluZGV4IGZkZWM3NzMuLjA3OTU2ZWMgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfaWYuYworKysgYi9uZXQvYnJpZGdlL2JyX2lmLmMKQEAgLTM3NiwxNSArMzc2LDIwIEBACiAJZmVhdHVyZXMgPSBici0+ZmVhdHVyZV9tYXNrICYgfk5FVElGX0ZfQUxMX0NTVU07CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZici0+cG9ydF9saXN0LCBsaXN0KSB7Ci0JCWlmIChjaGVja3N1bSAmIE5FVElGX0ZfTk9fQ1NVTSAmJgotCQkgICAgIShwLT5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9OT19DU1VNKSkKKwkJdW5zaWduZWQgbG9uZyBmZWF0dXJlID0gcC0+ZGV2LT5mZWF0dXJlczsKKworCQlpZiAoY2hlY2tzdW0gJiBORVRJRl9GX05PX0NTVU0gJiYgIShmZWF0dXJlICYgTkVUSUZfRl9OT19DU1VNKSkKIAkJCWNoZWNrc3VtIF49IE5FVElGX0ZfTk9fQ1NVTSB8IE5FVElGX0ZfSFdfQ1NVTTsKLQkJaWYgKGNoZWNrc3VtICYgTkVUSUZfRl9IV19DU1VNICYmCi0JCSAgICAhKHAtPmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0hXX0NTVU0pKQorCQlpZiAoY2hlY2tzdW0gJiBORVRJRl9GX0hXX0NTVU0gJiYgIShmZWF0dXJlICYgTkVUSUZfRl9IV19DU1VNKSkKIAkJCWNoZWNrc3VtIF49IE5FVElGX0ZfSFdfQ1NVTSB8IE5FVElGX0ZfSVBfQ1NVTTsKLQkJaWYgKCEocC0+ZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfSVBfQ1NVTSkpCisJCWlmICghKGZlYXR1cmUgJiBORVRJRl9GX0lQX0NTVU0pKQogCQkJY2hlY2tzdW0gPSAwOwotCQlmZWF0dXJlcyAmPSBwLT5kZXYtPmZlYXR1cmVzOworCisJCWlmIChmZWF0dXJlICYgTkVUSUZfRl9HU08pCisJCQlmZWF0dXJlIHw9IE5FVElGX0ZfVFNPOworCQlmZWF0dXJlIHw9IE5FVElGX0ZfR1NPOworCisJCWZlYXR1cmVzICY9IGZlYXR1cmU7CiAJfQogCiAJYnItPmRldi0+ZmVhdHVyZXMgPSBmZWF0dXJlcyB8IGNoZWNrc3VtIHwgTkVUSUZfRl9MTFRYOwpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9uZXRmaWx0ZXIuYyBiL25ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyLmMKaW5kZXggM2U0MWY5ZC4uODI5OGE1MSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9uZXRmaWx0ZXIuYworKysgYi9uZXQvYnJpZGdlL2JyX25ldGZpbHRlci5jCkBAIC03NjEsNyArNzYxLDcgQEAKIHsKIAlpZiAoc2tiLT5wcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgJiYKIAkgICAgc2tiLT5sZW4gPiBza2ItPmRldi0+bXR1ICYmCi0JICAgICEoc2tiX3NoaW5mbyhza2IpLT51Zm9fc2l6ZSB8fCBza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplKSkKKwkgICAgIXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCiAJCXJldHVybiBpcF9mcmFnbWVudChza2IsIGJyX2Rldl9xdWV1ZV9wdXNoX3htaXQpOwogCWVsc2UKIAkJcmV0dXJuIGJyX2Rldl9xdWV1ZV9wdXNoX3htaXQoc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5kZXggYWIzOWZlMS4uZWEyNDY5MyAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmMKKysrIGIvbmV0L2NvcmUvZGV2LmMKQEAgLTExNiw2ICsxMTYsNyBAQAogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8bGludXgvYXVkaXQuaD4KICNpbmNsdWRlIDxsaW51eC9kbWFlbmdpbmUuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KIAogLyoKICAqCVRoZSBsaXN0IG9mIHBhY2tldCB0eXBlcyB3ZSB3aWxsIHJlY2VpdmUgKGFzIG9wcG9zZWQgdG8gZGlzY2FyZCkKQEAgLTEwNDgsNyArMTA0OSw3IEBACiAgKgl0YXBzIGN1cnJlbnRseSBpbiB1c2UuCiAgKi8KIAotdm9pZCBkZXZfcXVldWVfeG1pdF9uaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGRldl9xdWV1ZV94bWl0X25pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBwYWNrZXRfdHlwZSAqcHR5cGU7CiAKQEAgLTExODYsNiArMTE4Nyw0MCBAQAogCXJldHVybiByZXQ7CiB9CiAKKy8qKgorICoJc2tiX2dzb19zZWdtZW50IC0gUGVyZm9ybSBzZWdtZW50YXRpb24gb24gc2tiLgorICoJQHNrYjogYnVmZmVyIHRvIHNlZ21lbnQKKyAqCUBzZzogd2hldGhlciBzY2F0dGVyLWdhdGhlciBpcyBzdXBwb3J0ZWQgb24gdGhlIHRhcmdldC4KKyAqCisgKglUaGlzIGZ1bmN0aW9uIHNlZ21lbnRzIHRoZSBnaXZlbiBza2IgYW5kIHJldHVybnMgYSBsaXN0IG9mIHNlZ21lbnRzLgorICovCitzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2dzb19zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBzZykKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VncyA9IEVSUl9QVFIoLUVQUk9UT05PU1VQUE9SVCk7CisJc3RydWN0IHBhY2tldF90eXBlICpwdHlwZTsKKwlpbnQgdHlwZSA9IHNrYi0+cHJvdG9jb2w7CisKKwlCVUdfT04oc2tiX3NoaW5mbyhza2IpLT5mcmFnX2xpc3QpOworCUJVR19PTihza2ItPmlwX3N1bW1lZCAhPSBDSEVDS1NVTV9IVyk7CisKKwlza2ItPm1hYy5yYXcgPSBza2ItPmRhdGE7CisJc2tiLT5tYWNfbGVuID0gc2tiLT5uaC5yYXcgLSBza2ItPmRhdGE7CisJX19za2JfcHVsbChza2IsIHNrYi0+bWFjX2xlbik7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocHR5cGUsICZwdHlwZV9iYXNlW250b2hzKHR5cGUpICYgMTVdLCBsaXN0KSB7CisJCWlmIChwdHlwZS0+dHlwZSA9PSB0eXBlICYmICFwdHlwZS0+ZGV2ICYmIHB0eXBlLT5nc29fc2VnbWVudCkgeworCQkJc2VncyA9IHB0eXBlLT5nc29fc2VnbWVudChza2IsIHNnKTsKKwkJCWJyZWFrOworCQl9CisJfQorCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIHNlZ3M7Cit9CisKK0VYUE9SVF9TWU1CT0woc2tiX2dzb19zZWdtZW50KTsKKwogLyogVGFrZSBhY3Rpb24gd2hlbiBoYXJkd2FyZSByZWNlcHRpb24gY2hlY2tzdW0gZXJyb3JzIGFyZSBkZXRlY3RlZC4gKi8KICNpZmRlZiBDT05GSUdfQlVHCiB2b2lkIG5ldGRldl9yeF9jc3VtX2ZhdWx0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC0xMjIyLDYgKzEyNTcsODYgQEAKICNkZWZpbmUgaWxsZWdhbF9oaWdoZG1hKGRldiwgc2tiKQkoMCkKICNlbmRpZgogCitzdHJ1Y3QgZGV2X2dzb19jYiB7CisJdm9pZCAoKmRlc3RydWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpOworfTsKKworI2RlZmluZSBERVZfR1NPX0NCKHNrYikgKChzdHJ1Y3QgZGV2X2dzb19jYiAqKShza2IpLT5jYikKKworc3RhdGljIHZvaWQgZGV2X2dzb19za2JfZGVzdHJ1Y3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCBkZXZfZ3NvX2NiICpjYjsKKworCWRvIHsKKwkJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2ItPm5leHQ7CisKKwkJc2tiLT5uZXh0ID0gbnNrYi0+bmV4dDsKKwkJbnNrYi0+bmV4dCA9IE5VTEw7CisJCWtmcmVlX3NrYihuc2tiKTsKKwl9IHdoaWxlIChza2ItPm5leHQpOworCisJY2IgPSBERVZfR1NPX0NCKHNrYik7CisJaWYgKGNiLT5kZXN0cnVjdG9yKQorCQljYi0+ZGVzdHJ1Y3Rvcihza2IpOworfQorCisvKioKKyAqCWRldl9nc29fc2VnbWVudCAtIFBlcmZvcm0gZW11bGF0ZWQgaGFyZHdhcmUgc2VnbWVudGF0aW9uIG9uIHNrYi4KKyAqCUBza2I6IGJ1ZmZlciB0byBzZWdtZW50CisgKgorICoJVGhpcyBmdW5jdGlvbiBzZWdtZW50cyB0aGUgZ2l2ZW4gc2tiIGFuZCBzdG9yZXMgdGhlIGxpc3Qgb2Ygc2VnbWVudHMKKyAqCWluIHNrYi0+bmV4dC4KKyAqLworc3RhdGljIGludCBkZXZfZ3NvX3NlZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gc2tiLT5kZXY7CisJc3RydWN0IHNrX2J1ZmYgKnNlZ3M7CisKKwlzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfU0cgJiYKKwkJCQkgICAgIWlsbGVnYWxfaGlnaGRtYShkZXYsIHNrYikpOworCWlmICh1bmxpa2VseShJU19FUlIoc2VncykpKQorCQlyZXR1cm4gUFRSX0VSUihzZWdzKTsKKworCXNrYi0+bmV4dCA9IHNlZ3M7CisJREVWX0dTT19DQihza2IpLT5kZXN0cnVjdG9yID0gc2tiLT5kZXN0cnVjdG9yOworCXNrYi0+ZGVzdHJ1Y3RvciA9IGRldl9nc29fc2tiX2Rlc3RydWN0b3I7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRldl9oYXJkX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlpZiAobGlrZWx5KCFza2ItPm5leHQpKSB7CisJCWlmIChuZXRkZXZfbml0KQorCQkJZGV2X3F1ZXVlX3htaXRfbml0KHNrYiwgZGV2KTsKKworCQlpZiAoIW5ldGlmX25lZWRzX2dzbyhkZXYsIHNrYikpCisJCQlyZXR1cm4gZGV2LT5oYXJkX3N0YXJ0X3htaXQoc2tiLCBkZXYpOworCisJCWlmICh1bmxpa2VseShkZXZfZ3NvX3NlZ21lbnQoc2tiKSkpCisJCQlnb3RvIG91dF9rZnJlZV9za2I7CisJfQorCisJZG8geworCQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IHNrYi0+bmV4dDsKKwkJaW50IHJjOworCisJCXNrYi0+bmV4dCA9IG5za2ItPm5leHQ7CisJCW5za2ItPm5leHQgPSBOVUxMOworCQlyYyA9IGRldi0+aGFyZF9zdGFydF94bWl0KG5za2IsIGRldik7CisJCWlmICh1bmxpa2VseShyYykpIHsKKwkJCXNrYi0+bmV4dCA9IG5za2I7CisJCQlyZXR1cm4gcmM7CisJCX0KKwl9IHdoaWxlIChza2ItPm5leHQpOworCQorCXNrYi0+ZGVzdHJ1Y3RvciA9IERFVl9HU09fQ0Ioc2tiKS0+ZGVzdHJ1Y3RvcjsKKworb3V0X2tmcmVlX3NrYjoKKwlrZnJlZV9za2Ioc2tiKTsKKwlyZXR1cm4gMDsKK30KKwogI2RlZmluZSBIQVJEX1RYX0xPQ0soZGV2LCBjcHUpIHsJCQlcCiAJaWYgKChkZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9MTFRYKSA9PSAwKSB7CVwKIAkJbmV0aWZfdHhfbG9jayhkZXYpOwkJCVwKQEAgLTEyNjYsNiArMTM4MSwxMCBAQAogCXN0cnVjdCBRZGlzYyAqcTsKIAlpbnQgcmMgPSAtRU5PTUVNOwogCisJLyogR1NPIHdpbGwgaGFuZGxlIHRoZSBmb2xsb3dpbmcgZW11bGF0aW9ucyBkaXJlY3RseS4gKi8KKwlpZiAobmV0aWZfbmVlZHNfZ3NvKGRldiwgc2tiKSkKKwkJZ290byBnc287CisKIAlpZiAoc2tiX3NoaW5mbyhza2IpLT5mcmFnX2xpc3QgJiYKIAkgICAgIShkZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9GUkFHTElTVCkgJiYKIAkgICAgX19za2JfbGluZWFyaXplKHNrYikpCkBAIC0xMjkwLDEyICsxNDA5LDEzIEBACiAJICAgICAgCWlmIChza2JfY2hlY2tzdW1faGVscChza2IsIDApKQogCSAgICAgIAkJZ290byBvdXRfa2ZyZWVfc2tiOwogCitnc286CiAJc3Bpbl9sb2NrX3ByZWZldGNoKCZkZXYtPnF1ZXVlX2xvY2spOwogCiAJLyogRGlzYWJsZSBzb2Z0IGlycXMgZm9yIHZhcmlvdXMgbG9ja3MgYmVsb3cuIEFsc28gCiAJICogc3RvcHMgcHJlZW1wdGlvbiBmb3IgUkNVLiAKIAkgKi8KLQlsb2NhbF9iaF9kaXNhYmxlKCk7IAorCXJjdV9yZWFkX2xvY2tfYmgoKTsgCiAKIAkvKiBVcGRhdGVzIG9mIHFkaXNjIGFyZSBzZXJpYWxpemVkIGJ5IHF1ZXVlX2xvY2suIAogCSAqIFRoZSBzdHJ1Y3QgUWRpc2Mgd2hpY2ggaXMgcG9pbnRlZCB0byBieSBxZGlzYyBpcyBub3cgYSAKQEAgLTEzNDYsMTEgKzE0NjYsOCBAQAogCQkJSEFSRF9UWF9MT0NLKGRldiwgY3B1KTsKIAogCQkJaWYgKCFuZXRpZl9xdWV1ZV9zdG9wcGVkKGRldikpIHsKLQkJCQlpZiAobmV0ZGV2X25pdCkKLQkJCQkJZGV2X3F1ZXVlX3htaXRfbml0KHNrYiwgZGV2KTsKLQogCQkJCXJjID0gMDsKLQkJCQlpZiAoIWRldi0+aGFyZF9zdGFydF94bWl0KHNrYiwgZGV2KSkgeworCQkJCWlmICghZGV2X2hhcmRfc3RhcnRfeG1pdChza2IsIGRldikpIHsKIAkJCQkJSEFSRF9UWF9VTkxPQ0soZGV2KTsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQpAQCAtMTM2OSwxMyArMTQ4NiwxMyBAQAogCX0KIAogCXJjID0gLUVORVRET1dOOwotCWxvY2FsX2JoX2VuYWJsZSgpOworCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCiBvdXRfa2ZyZWVfc2tiOgogCWtmcmVlX3NrYihza2IpOwogCXJldHVybiByYzsKIG91dDoKLQlsb2NhbF9iaF9lbmFibGUoKTsKKwlyY3VfcmVhZF91bmxvY2tfYmgoKTsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTI5ODAsNyArMzA5Nyw3IEBACiBzdGF0aWMgREVGSU5FX01VVEVYKG5ldF90b2RvX3J1bl9tdXRleCk7CiB2b2lkIG5ldGRldl9ydW5fdG9kbyh2b2lkKQogewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdCA9IExJU1RfSEVBRF9JTklUKGxpc3QpOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAogCS8qIE5lZWQgdG8gZ3VhcmQgYWdhaW5zdCBtdWx0aXBsZSBjcHUncyBnZXR0aW5nIG91dCBvZiBvcmRlci4gKi8KIAltdXRleF9sb2NrKCZuZXRfdG9kb19ydW5fbXV0ZXgpOwpAQCAtMjk5NSw5ICszMTEyLDkgQEAKIAogCS8qIFNuYXBzaG90IGxpc3QsIGFsbG93IGxhdGVyIHJlcXVlc3RzICovCiAJc3Bpbl9sb2NrKCZuZXRfdG9kb19saXN0X2xvY2spOwotCWxpc3Rfc3BsaWNlX2luaXQoJm5ldF90b2RvX2xpc3QsICZsaXN0KTsKKwlsaXN0X3JlcGxhY2VfaW5pdCgmbmV0X3RvZG9fbGlzdCwgJmxpc3QpOwogCXNwaW5fdW5sb2NrKCZuZXRfdG9kb19saXN0X2xvY2spOwotCQkKKwogCXdoaWxlICghbGlzdF9lbXB0eSgmbGlzdCkpIHsKIAkJc3RydWN0IG5ldF9kZXZpY2UgKmRldgogCQkJPSBsaXN0X2VudHJ5KGxpc3QubmV4dCwgc3RydWN0IG5ldF9kZXZpY2UsIHRvZG9fbGlzdCk7CkBAIC0zMzAxLDggKzM0MTgsOCBAQAogLyoqCiAgKiBuZXRkZXZfZG1hX2V2ZW50IC0gZXZlbnQgY2FsbGJhY2sgZm9yIHRoZSBuZXRfZG1hX2NsaWVudAogICogQGNsaWVudDogc2hvdWxkIGFsd2F5cyBiZSBuZXRfZG1hX2NsaWVudAotICogQGNoYW46Ci0gKiBAZXZlbnQ6CisgKiBAY2hhbjogRE1BIGNoYW5uZWwgZm9yIHRoZSBldmVudAorICogQGV2ZW50OiBldmVudCB0eXBlCiAgKi8KIHN0YXRpYyB2b2lkIG5ldGRldl9kbWFfZXZlbnQoc3RydWN0IGRtYV9jbGllbnQgKmNsaWVudCwgc3RydWN0IGRtYV9jaGFuICpjaGFuLAogCWVudW0gZG1hX2V2ZW50IGV2ZW50KQpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZXRodG9vbC5jIGIvbmV0L2NvcmUvZXRodG9vbC5jCmluZGV4IDMzY2U3ZWQuLjI3Y2UxNjggMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2V0aHRvb2wuYworKysgYi9uZXQvY29yZS9ldGh0b29sLmMKQEAgLTYxNCw2ICs2MTQsMjkgQEAKIAlyZXR1cm4gZGV2LT5ldGh0b29sX29wcy0+c2V0X3VmbyhkZXYsIGVkYXRhLmRhdGEpOwogfQogCitzdGF0aWMgaW50IGV0aHRvb2xfZ2V0X2dzbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjaGFyIF9fdXNlciAqdXNlcmFkZHIpCit7CisJc3RydWN0IGV0aHRvb2xfdmFsdWUgZWRhdGEgPSB7IEVUSFRPT0xfR0dTTyB9OworCisJZWRhdGEuZGF0YSA9IGRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0dTTzsKKwlpZiAoY29weV90b191c2VyKHVzZXJhZGRyLCAmZWRhdGEsIHNpemVvZihlZGF0YSkpKQorCQkgcmV0dXJuIC1FRkFVTFQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXRodG9vbF9zZXRfZ3NvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNoYXIgX191c2VyICp1c2VyYWRkcikKK3sKKwlzdHJ1Y3QgZXRodG9vbF92YWx1ZSBlZGF0YTsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmZWRhdGEsIHVzZXJhZGRyLCBzaXplb2YoZWRhdGEpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisJaWYgKGVkYXRhLmRhdGEpCisJCWRldi0+ZmVhdHVyZXMgfD0gTkVUSUZfRl9HU087CisJZWxzZQorCQlkZXYtPmZlYXR1cmVzICY9IH5ORVRJRl9GX0dTTzsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBldGh0b29sX3NlbGZfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjaGFyIF9fdXNlciAqdXNlcmFkZHIpCiB7CiAJc3RydWN0IGV0aHRvb2xfdGVzdCB0ZXN0OwpAQCAtOTA1LDYgKzkyOCwxMiBAQAogCWNhc2UgRVRIVE9PTF9TVUZPOgogCQlyYyA9IGV0aHRvb2xfc2V0X3VmbyhkZXYsIHVzZXJhZGRyKTsKIAkJYnJlYWs7CisJY2FzZSBFVEhUT09MX0dHU086CisJCXJjID0gZXRodG9vbF9nZXRfZ3NvKGRldiwgdXNlcmFkZHIpOworCQlicmVhazsKKwljYXNlIEVUSFRPT0xfU0dTTzoKKwkJcmMgPSBldGh0b29sX3NldF9nc28oZGV2LCB1c2VyYWRkcik7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJjID0gIC1FT1BOT1RTVVBQOwogCX0KZGlmZiAtLWdpdCBhL25ldC9jb3JlL2xpbmtfd2F0Y2guYyBiL25ldC9jb3JlL2xpbmtfd2F0Y2guYwppbmRleCA2NDY5MzdjLi4wZjM3MjY2IDEwMDY0NAotLS0gYS9uZXQvY29yZS9saW5rX3dhdGNoLmMKKysrIGIvbmV0L2NvcmUvbGlua193YXRjaC5jCkBAIC05MSwxMSArOTEsMTAgQEAKIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHJ0bmwgc2VtYXBob3JlIGhlbGQgKi8KIHZvaWQgbGlua3dhdGNoX3J1bl9xdWV1ZSh2b2lkKQogewotCUxJU1RfSEVBRChoZWFkKTsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpuLCAqbmV4dDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQsICpuLCAqbmV4dDsKIAogCXNwaW5fbG9ja19pcnEoJmx3ZXZlbnRsaXN0X2xvY2spOwotCWxpc3Rfc3BsaWNlX2luaXQoJmx3ZXZlbnRsaXN0LCAmaGVhZCk7CisJbGlzdF9yZXBsYWNlX2luaXQoJmx3ZXZlbnRsaXN0LCAmaGVhZCk7CiAJc3Bpbl91bmxvY2tfaXJxKCZsd2V2ZW50bGlzdF9sb2NrKTsKIAogCWxpc3RfZm9yX2VhY2hfc2FmZShuLCBuZXh0LCAmaGVhZCkgewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuYwppbmRleCBiYjcyMTBmLi44ZTUwNDRiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9za2J1ZmYuYworKysgYi9uZXQvY29yZS9za2J1ZmYuYwpAQCAtMTcyLDkgKzE3Miw5IEBACiAJc2hpbmZvID0gc2tiX3NoaW5mbyhza2IpOwogCWF0b21pY19zZXQoJnNoaW5mby0+ZGF0YXJlZiwgMSk7CiAJc2hpbmZvLT5ucl9mcmFncyAgPSAwOwotCXNoaW5mby0+dHNvX3NpemUgPSAwOwotCXNoaW5mby0+dHNvX3NlZ3MgPSAwOwotCXNoaW5mby0+dWZvX3NpemUgPSAwOworCXNoaW5mby0+Z3NvX3NpemUgPSAwOworCXNoaW5mby0+Z3NvX3NlZ3MgPSAwOworCXNoaW5mby0+Z3NvX3R5cGUgPSAwOwogCXNoaW5mby0+aXA2X2ZyYWdfaWQgPSAwOwogCXNoaW5mby0+ZnJhZ19saXN0ID0gTlVMTDsKIApAQCAtMjM4LDggKzIzOCw5IEBACiAKIAlhdG9taWNfc2V0KCYoc2tiX3NoaW5mbyhza2IpLT5kYXRhcmVmKSwgMSk7CiAJc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFncyAgPSAwOwotCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUgPSAwOwotCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSAwOworCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgPSAwOworCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NlZ3MgPSAwOworCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGUgPSAwOwogCXNrYl9zaGluZm8oc2tiKS0+ZnJhZ19saXN0ID0gTlVMTDsKIG91dDoKIAlyZXR1cm4gc2tiOwpAQCAtNTI4LDggKzUyOSw5IEBACiAjZW5kaWYKIAlza2JfY29weV9zZWNtYXJrKG5ldywgb2xkKTsKIAlhdG9taWNfc2V0KCZuZXctPnVzZXJzLCAxKTsKLQlza2Jfc2hpbmZvKG5ldyktPnRzb19zaXplID0gc2tiX3NoaW5mbyhvbGQpLT50c29fc2l6ZTsKLQlza2Jfc2hpbmZvKG5ldyktPnRzb19zZWdzID0gc2tiX3NoaW5mbyhvbGQpLT50c29fc2VnczsKKwlza2Jfc2hpbmZvKG5ldyktPmdzb19zaXplID0gc2tiX3NoaW5mbyhvbGQpLT5nc29fc2l6ZTsKKwlza2Jfc2hpbmZvKG5ldyktPmdzb19zZWdzID0gc2tiX3NoaW5mbyhvbGQpLT5nc29fc2VnczsKKwlza2Jfc2hpbmZvKG5ldyktPmdzb190eXBlID0gc2tiX3NoaW5mbyhvbGQpLT5nc29fdHlwZTsKIH0KIAogLyoqCkBAIC03ODEsMjQgKzc4Myw0MCBAQAogICoJZmlsbGVkLiBVc2VkIGJ5IG5ldHdvcmsgZHJpdmVycyB3aGljaCBtYXkgRE1BIG9yIHRyYW5zZmVyIGRhdGEKICAqCWJleW9uZCB0aGUgYnVmZmVyIGVuZCBvbnRvIHRoZSB3aXJlLgogICoKLSAqCU1heSByZXR1cm4gTlVMTCBpbiBvdXQgb2YgbWVtb3J5IGNhc2VzLgorICoJTWF5IHJldHVybiBlcnJvciBpbiBvdXQgb2YgbWVtb3J5IGNhc2VzLiBUaGUgc2tiIGlzIGZyZWVkIG9uIGVycm9yLgogICovCiAgCi1zdHJ1Y3Qgc2tfYnVmZiAqc2tiX3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKQoraW50IHNrYl9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZCkKIHsKLQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKKwlpbnQgZXJyOworCWludCBudGFpbDsKIAkKIAkvKiBJZiB0aGUgc2tidWZmIGlzIG5vbiBsaW5lYXIgdGFpbHJvb20gaXMgYWx3YXlzIHplcm8uLiAqLwotCWlmIChza2JfdGFpbHJvb20oc2tiKSA+PSBwYWQpIHsKKwlpZiAoIXNrYl9jbG9uZWQoc2tiKSAmJiBza2JfdGFpbHJvb20oc2tiKSA+PSBwYWQpIHsKIAkJbWVtc2V0KHNrYi0+ZGF0YStza2ItPmxlbiwgMCwgcGFkKTsKLQkJcmV0dXJuIHNrYjsKKwkJcmV0dXJuIDA7CiAJfQotCQotCW5za2IgPSBza2JfY29weV9leHBhbmQoc2tiLCBza2JfaGVhZHJvb20oc2tiKSwgc2tiX3RhaWxyb29tKHNrYikgKyBwYWQsIEdGUF9BVE9NSUMpOworCisJbnRhaWwgPSBza2ItPmRhdGFfbGVuICsgcGFkIC0gKHNrYi0+ZW5kIC0gc2tiLT50YWlsKTsKKwlpZiAobGlrZWx5KHNrYl9jbG9uZWQoc2tiKSB8fCBudGFpbCA+IDApKSB7CisJCWVyciA9IHBza2JfZXhwYW5kX2hlYWQoc2tiLCAwLCBudGFpbCwgR0ZQX0FUT01JQyk7CisJCWlmICh1bmxpa2VseShlcnIpKQorCQkJZ290byBmcmVlX3NrYjsKKwl9CisKKwkvKiBGSVhNRTogVGhlIHVzZSBvZiB0aGlzIGZ1bmN0aW9uIHdpdGggbm9uLWxpbmVhciBza2IncyByZWFsbHkgbmVlZHMKKwkgKiB0byBiZSBhdWRpdGVkLgorCSAqLworCWVyciA9IHNrYl9saW5lYXJpemUoc2tiKTsKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJZ290byBmcmVlX3NrYjsKKworCW1lbXNldChza2ItPmRhdGEgKyBza2ItPmxlbiwgMCwgcGFkKTsKKwlyZXR1cm4gMDsKKworZnJlZV9za2I6CiAJa2ZyZWVfc2tiKHNrYik7Ci0JaWYgKG5za2IpCi0JCW1lbXNldChuc2tiLT5kYXRhK25za2ItPmxlbiwgMCwgcGFkKTsKLQlyZXR1cm4gbnNrYjsKKwlyZXR1cm4gZXJyOwogfQkKICAKIC8qIFRyaW1zIHNrYiB0byBsZW5ndGggbGVuLiBJdCBjYW4gY2hhbmdlIHNrYiBwb2ludGVycy4KQEAgLTE4MjQsNiArMTg0MiwxMzIgQEAKIAogRVhQT1JUX1NZTUJPTF9HUEwoc2tiX3B1bGxfcmNzdW0pOwogCisvKioKKyAqCXNrYl9zZWdtZW50IC0gUGVyZm9ybSBwcm90b2NvbCBzZWdtZW50YXRpb24gb24gc2tiLgorICoJQHNrYjogYnVmZmVyIHRvIHNlZ21lbnQKKyAqCUBzZzogd2hldGhlciBzY2F0dGVyLWdhdGhlciBjYW4gYmUgdXNlZCBmb3IgZ2VuZXJhdGVkIHNlZ21lbnRzCisgKgorICoJVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBzZWdtZW50YXRpb24gb24gdGhlIGdpdmVuIHNrYi4gIEl0IHJldHVybnMKKyAqCXRoZSBzZWdtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gIEl0IHJldHVybnMgTlVMTCBpZiB0aGVyZSBhcmUKKyAqCW5vIG1vcmUgc2VnbWVudHMgdG8gZ2VuZXJhdGUsIG9yIHdoZW4gYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuCisgKi8KK3N0cnVjdCBza19idWZmICpza2Jfc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2cpCit7CisJc3RydWN0IHNrX2J1ZmYgKnNlZ3MgPSBOVUxMOworCXN0cnVjdCBza19idWZmICp0YWlsID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQgbXNzID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsKKwl1bnNpZ25lZCBpbnQgZG9mZnNldCA9IHNrYi0+ZGF0YSAtIHNrYi0+bWFjLnJhdzsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gZG9mZnNldDsKKwl1bnNpZ25lZCBpbnQgaGVhZHJvb207CisJdW5zaWduZWQgaW50IGxlbjsKKwlpbnQgbmZyYWdzID0gc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFnczsKKwlpbnQgZXJyID0gLUVOT01FTTsKKwlpbnQgaSA9IDA7CisJaW50IHBvczsKKworCV9fc2tiX3B1c2goc2tiLCBkb2Zmc2V0KTsKKwloZWFkcm9vbSA9IHNrYl9oZWFkcm9vbShza2IpOworCXBvcyA9IHNrYl9oZWFkbGVuKHNrYik7CisKKwlkbyB7CisJCXN0cnVjdCBza19idWZmICpuc2tiOworCQlza2JfZnJhZ190ICpmcmFnOworCQlpbnQgaHNpemUsIG5zaXplOworCQlpbnQgazsKKwkJaW50IHNpemU7CisKKwkJbGVuID0gc2tiLT5sZW4gLSBvZmZzZXQ7CisJCWlmIChsZW4gPiBtc3MpCisJCQlsZW4gPSBtc3M7CisKKwkJaHNpemUgPSBza2JfaGVhZGxlbihza2IpIC0gb2Zmc2V0OworCQlpZiAoaHNpemUgPCAwKQorCQkJaHNpemUgPSAwOworCQluc2l6ZSA9IGhzaXplICsgZG9mZnNldDsKKwkJaWYgKG5zaXplID4gbGVuICsgZG9mZnNldCB8fCAhc2cpCisJCQluc2l6ZSA9IGxlbiArIGRvZmZzZXQ7CisKKwkJbnNrYiA9IGFsbG9jX3NrYihuc2l6ZSArIGhlYWRyb29tLCBHRlBfQVRPTUlDKTsKKwkJaWYgKHVubGlrZWx5KCFuc2tiKSkKKwkJCWdvdG8gZXJyOworCisJCWlmIChzZWdzKQorCQkJdGFpbC0+bmV4dCA9IG5za2I7CisJCWVsc2UKKwkJCXNlZ3MgPSBuc2tiOworCQl0YWlsID0gbnNrYjsKKworCQluc2tiLT5kZXYgPSBza2ItPmRldjsKKwkJbnNrYi0+cHJpb3JpdHkgPSBza2ItPnByaW9yaXR5OworCQluc2tiLT5wcm90b2NvbCA9IHNrYi0+cHJvdG9jb2w7CisJCW5za2ItPmRzdCA9IGRzdF9jbG9uZShza2ItPmRzdCk7CisJCW1lbWNweShuc2tiLT5jYiwgc2tiLT5jYiwgc2l6ZW9mKHNrYi0+Y2IpKTsKKwkJbnNrYi0+cGt0X3R5cGUgPSBza2ItPnBrdF90eXBlOworCQluc2tiLT5tYWNfbGVuID0gc2tiLT5tYWNfbGVuOworCisJCXNrYl9yZXNlcnZlKG5za2IsIGhlYWRyb29tKTsKKwkJbnNrYi0+bWFjLnJhdyA9IG5za2ItPmRhdGE7CisJCW5za2ItPm5oLnJhdyA9IG5za2ItPmRhdGEgKyBza2ItPm1hY19sZW47CisJCW5za2ItPmgucmF3ID0gbnNrYi0+bmgucmF3ICsgKHNrYi0+aC5yYXcgLSBza2ItPm5oLnJhdyk7CisJCW1lbWNweShza2JfcHV0KG5za2IsIGRvZmZzZXQpLCBza2ItPmRhdGEsIGRvZmZzZXQpOworCisJCWlmICghc2cpIHsKKwkJCW5za2ItPmNzdW0gPSBza2JfY29weV9hbmRfY3N1bV9iaXRzKHNrYiwgb2Zmc2V0LAorCQkJCQkJCSAgICBza2JfcHV0KG5za2IsIGxlbiksCisJCQkJCQkJICAgIGxlbiwgMCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZyYWcgPSBza2Jfc2hpbmZvKG5za2IpLT5mcmFnczsKKwkJayA9IDA7CisKKwkJbnNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fSFc7CisJCW5za2ItPmNzdW0gPSBza2ItPmNzdW07CisJCW1lbWNweShza2JfcHV0KG5za2IsIGhzaXplKSwgc2tiLT5kYXRhICsgb2Zmc2V0LCBoc2l6ZSk7CisKKwkJd2hpbGUgKHBvcyA8IG9mZnNldCArIGxlbikgeworCQkJQlVHX09OKGkgPj0gbmZyYWdzKTsKKworCQkJKmZyYWcgPSBza2Jfc2hpbmZvKHNrYiktPmZyYWdzW2ldOworCQkJZ2V0X3BhZ2UoZnJhZy0+cGFnZSk7CisJCQlzaXplID0gZnJhZy0+c2l6ZTsKKworCQkJaWYgKHBvcyA8IG9mZnNldCkgeworCQkJCWZyYWctPnBhZ2Vfb2Zmc2V0ICs9IG9mZnNldCAtIHBvczsKKwkJCQlmcmFnLT5zaXplIC09IG9mZnNldCAtIHBvczsKKwkJCX0KKworCQkJaysrOworCisJCQlpZiAocG9zICsgc2l6ZSA8PSBvZmZzZXQgKyBsZW4pIHsKKwkJCQlpKys7CisJCQkJcG9zICs9IHNpemU7CisJCQl9IGVsc2UgeworCQkJCWZyYWctPnNpemUgLT0gcG9zICsgc2l6ZSAtIChvZmZzZXQgKyBsZW4pOworCQkJCWJyZWFrOworCQkJfQorCisJCQlmcmFnKys7CisJCX0KKworCQlza2Jfc2hpbmZvKG5za2IpLT5ucl9mcmFncyA9IGs7CisJCW5za2ItPmRhdGFfbGVuID0gbGVuIC0gaHNpemU7CisJCW5za2ItPmxlbiArPSBuc2tiLT5kYXRhX2xlbjsKKwkJbnNrYi0+dHJ1ZXNpemUgKz0gbnNrYi0+ZGF0YV9sZW47CisJfSB3aGlsZSAoKG9mZnNldCArPSBsZW4pIDwgc2tiLT5sZW4pOworCisJcmV0dXJuIHNlZ3M7CisKK2VycjoKKwl3aGlsZSAoKHNrYiA9IHNlZ3MpKSB7CisJCXNlZ3MgPSBza2ItPm5leHQ7CisJCWtmcmVlKHNrYik7CisJfQorCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK0VYUE9SVF9TWU1CT0xfR1BMKHNrYl9zZWdtZW50KTsKKwogdm9pZCBfX2luaXQgc2tiX2luaXQodm9pZCkKIHsKIAlza2J1ZmZfaGVhZF9jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJza2J1ZmZfaGVhZF9jYWNoZSIsCmRpZmYgLS1naXQgYS9uZXQvZGNjcC9LY29uZmlnIGIvbmV0L2RjY3AvS2NvbmZpZwppbmRleCA3ZTA5NmJhLi44NTllMzM1IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9LY29uZmlnCisrKyBiL25ldC9kY2NwL0tjb25maWcKQEAgLTI2LDcgKzI2LDcgQEAKIAogY29uZmlnIElQX0RDQ1BfQUNLVkVDCiAJZGVwZW5kcyBvbiBJUF9EQ0NQCi0JZGVmX2Jvb2wgTgorCWJvb2wKIAogc291cmNlICJuZXQvZGNjcC9jY2lkcy9LY29uZmlnIgogCmRpZmYgLS1naXQgYS9uZXQvaWVlZTgwMjExL3NvZnRtYWMvaWVlZTgwMjExc29mdG1hY193eC5jIGIvbmV0L2llZWU4MDIxMS9zb2Z0bWFjL2llZWU4MDIxMXNvZnRtYWNfd3guYwppbmRleCAyMmFhNjE5Li4wZTY1ZmY0IDEwMDY0NAotLS0gYS9uZXQvaWVlZTgwMjExL3NvZnRtYWMvaWVlZTgwMjExc29mdG1hY193eC5jCisrKyBiL25ldC9pZWVlODAyMTEvc29mdG1hYy9pZWVlODAyMTFzb2Z0bWFjX3d4LmMKQEAgLTM4OCw3ICszODgsNyBAQAogCQltZW1jcHkobWFjLT53cGEuSUUsIGV4dHJhLCB3cnF1LT5kYXRhLmxlbmd0aCk7CiAJCWRwcmludGsoS0VSTl9JTkZPIFBGWCAiZ2VuZXJpYyBJRSBzZXQgdG8gIik7CiAJCWZvciAoaT0wO2k8d3JxdS0+ZGF0YS5sZW5ndGg7aSsrKQotCQkJZHByaW50aygiJS4yeCIsIG1hYy0+d3BhLklFW2ldKTsKKwkJCWRwcmludGsoIiUuMngiLCAodTgpbWFjLT53cGEuSUVbaV0pOwogCQlkcHJpbnRrKCJcbiIpOwogCQltYWMtPndwYS5JRWxlbiA9IHdycXUtPmRhdGEubGVuZ3RoOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9hZl9pbmV0LmMgYi9uZXQvaXB2NC9hZl9pbmV0LmMKaW5kZXggMGEyNzc0NS4uNDYxMjE2YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvYWZfaW5ldC5jCisrKyBiL25ldC9pcHY0L2FmX2luZXQuYwpAQCAtNjgsNiArNjgsNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvc29ja2V0Lmg+CkBAIC0xMDk2LDYgKzEwOTcsNTQgQEAKIAogRVhQT1JUX1NZTUJPTChpbmV0X3NrX3JlYnVpbGRfaGVhZGVyKTsKIAorc3RhdGljIHN0cnVjdCBza19idWZmICppbmV0X2dzb19zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBzZykKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VncyA9IEVSUl9QVFIoLUVJTlZBTCk7CisJc3RydWN0IGlwaGRyICppcGg7CisJc3RydWN0IG5ldF9wcm90b2NvbCAqb3BzOworCWludCBwcm90bzsKKwlpbnQgaWhsOworCWludCBpZDsKKworCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZigqaXBoKSkpCisJCWdvdG8gb3V0OworCisJaXBoID0gc2tiLT5uaC5pcGg7CisJaWhsID0gaXBoLT5paGwgKiA0OworCWlmIChpaGwgPCBzaXplb2YoKmlwaCkpCisJCWdvdG8gb3V0OworCisJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaWhsKSkKKwkJZ290byBvdXQ7CisKKwlza2ItPmgucmF3ID0gX19za2JfcHVsbChza2IsIGlobCk7CisJaXBoID0gc2tiLT5uaC5pcGg7CisJaWQgPSBudG9ocyhpcGgtPmlkKTsKKwlwcm90byA9IGlwaC0+cHJvdG9jb2wgJiAoTUFYX0lORVRfUFJPVE9TIC0gMSk7CisJc2VncyA9IEVSUl9QVFIoLUVQUk9UT05PU1VQUE9SVCk7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJb3BzID0gcmN1X2RlcmVmZXJlbmNlKGluZXRfcHJvdG9zW3Byb3RvXSk7CisJaWYgKG9wcyAmJiBvcHMtPmdzb19zZWdtZW50KQorCQlzZWdzID0gb3BzLT5nc29fc2VnbWVudChza2IsIHNnKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKworCWlmIChJU19FUlIoc2VncykpCisJCWdvdG8gb3V0OworCisJc2tiID0gc2VnczsKKwlkbyB7CisJCWlwaCA9IHNrYi0+bmguaXBoOworCQlpcGgtPmlkID0gaHRvbnMoaWQrKyk7CisJCWlwaC0+dG90X2xlbiA9IGh0b25zKHNrYi0+bGVuIC0gc2tiLT5tYWNfbGVuKTsKKwkJaXBoLT5jaGVjayA9IDA7CisJCWlwaC0+Y2hlY2sgPSBpcF9mYXN0X2NzdW0oc2tiLT5uaC5yYXcsIGlwaC0+aWhsKTsKKwl9IHdoaWxlICgoc2tiID0gc2tiLT5uZXh0KSk7CisKK291dDoKKwlyZXR1cm4gc2VnczsKK30KKwogI2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1QKIHN0YXRpYyBzdHJ1Y3QgbmV0X3Byb3RvY29sIGlnbXBfcHJvdG9jb2wgPSB7CiAJLmhhbmRsZXIgPQlpZ21wX3JjdiwKQEAgLTExMDUsNiArMTE1NCw3IEBACiBzdGF0aWMgc3RydWN0IG5ldF9wcm90b2NvbCB0Y3BfcHJvdG9jb2wgPSB7CiAJLmhhbmRsZXIgPQl0Y3BfdjRfcmN2LAogCS5lcnJfaGFuZGxlciA9CXRjcF92NF9lcnIsCisJLmdzb19zZWdtZW50ID0JdGNwX3Rzb19zZWdtZW50LAogCS5ub19wb2xpY3kgPQkxLAogfTsKIApAQCAtMTE1MCw2ICsxMjAwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGFja2V0X3R5cGUgaXBfcGFja2V0X3R5cGUgPSB7CiAJLnR5cGUgPSBfX2NvbnN0YW50X2h0b25zKEVUSF9QX0lQKSwKIAkuZnVuYyA9IGlwX3JjdiwKKwkuZ3NvX3NlZ21lbnQgPSBpbmV0X2dzb19zZWdtZW50LAogfTsKIAogc3RhdGljIGludCBfX2luaXQgaW5ldF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9vdXRwdXQuYyBiL25ldC9pcHY0L2lwX291dHB1dC5jCmluZGV4IDg1MzhhYWMuLjc2MjRmZDEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX291dHB1dC5jCisrKyBiL25ldC9pcHY0L2lwX291dHB1dC5jCkBAIC0yMTAsOCArMjEwLDcgQEAKIAkJcmV0dXJuIGRzdF9vdXRwdXQoc2tiKTsKIAl9CiAjZW5kaWYKLQlpZiAoc2tiLT5sZW4gPiBkc3RfbXR1KHNrYi0+ZHN0KSAmJgotCSAgICAhKHNrYl9zaGluZm8oc2tiKS0+dWZvX3NpemUgfHwgc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkpCisJaWYgKHNrYi0+bGVuID4gZHN0X210dShza2ItPmRzdCkgJiYgIXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCiAJCXJldHVybiBpcF9mcmFnbWVudChza2IsIGlwX2ZpbmlzaF9vdXRwdXQyKTsKIAllbHNlCiAJCXJldHVybiBpcF9maW5pc2hfb3V0cHV0Mihza2IpOwpAQCAtMzYyLDcgKzM2MSw3IEBACiAJfQogCiAJaXBfc2VsZWN0X2lkZW50X21vcmUoaXBoLCAmcnQtPnUuZHN0LCBzaywKLQkJCSAgICAgKHNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPzogMSkgLSAxKTsKKwkJCSAgICAgKHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NlZ3MgPzogMSkgLSAxKTsKIAogCS8qIEFkZCBhbiBJUCBjaGVja3N1bS4gKi8KIAlpcF9zZW5kX2NoZWNrKGlwaCk7CkBAIC03NDQsNyArNzQzLDggQEAKIAkJCSAgICAgICAobGVuZ3RoIC0gdHJhbnNoZHJsZW4pKTsKIAlpZiAoIWVycikgewogCQkvKiBzcGVjaWZ5IHRoZSBsZW5ndGggb2YgZWFjaCBJUCBkYXRhZ3JhbSBmcmFnbWVudCovCi0JCXNrYl9zaGluZm8oc2tiKS0+dWZvX3NpemUgPSAobXR1IC0gZnJhZ2hlYWRlcmxlbik7CisJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgPSBtdHUgLSBmcmFnaGVhZGVybGVuOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gU0tCX0dTT19VRFBWNDsKIAkJX19za2JfcXVldWVfdGFpbCgmc2stPnNrX3dyaXRlX3F1ZXVlLCBza2IpOwogCiAJCXJldHVybiAwOwpAQCAtMTA4NywxNCArMTA4NywxNiBAQAogCiAJaW5ldC0+Y29yay5sZW5ndGggKz0gc2l6ZTsKIAlpZiAoKHNrLT5za19wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgJiYKLQkgICAgKHJ0LT51LmRzdC5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9VRk8pKQotCQlza2Jfc2hpbmZvKHNrYiktPnVmb19zaXplID0gKG10dSAtIGZyYWdoZWFkZXJsZW4pOworCSAgICAocnQtPnUuZHN0LmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1VGTykpIHsKKwkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSA9IG10dSAtIGZyYWdoZWFkZXJsZW47CisJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGUgPSBTS0JfR1NPX1VEUFY0OworCX0KIAogCiAJd2hpbGUgKHNpemUgPiAwKSB7CiAJCWludCBpOwogCi0JCWlmIChza2Jfc2hpbmZvKHNrYiktPnVmb19zaXplKQorCQlpZiAoc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSkKIAkJCWxlbiA9IHNpemU7CiAJCWVsc2UgewogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IDc0OTk4ZjIuLjBlMDI5YzQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCisrKyBiL25ldC9pcHY0L3RjcC5jCkBAIC0yNTgsNiArMjU4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KICNpbmNsdWRlIDxsaW51eC9ib290bWVtLmg+CiAjaW5jbHVkZSA8bGludXgvY2FjaGUuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KIAogI2luY2x1ZGUgPG5ldC9pY21wLmg+CiAjaW5jbHVkZSA8bmV0L3RjcC5oPgpAQCAtNTcxLDcgKzU3Miw3IEBACiAJCXNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fSFc7CiAJCXRwLT53cml0ZV9zZXEgKz0gY29weTsKIAkJVENQX1NLQl9DQihza2IpLT5lbmRfc2VxICs9IGNvcHk7Ci0JCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSAwOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gMDsKIAogCQlpZiAoIWNvcGllZCkKIAkJCVRDUF9TS0JfQ0Ioc2tiKS0+ZmxhZ3MgJj0gflRDUENCX0ZMQUdfUFNIOwpAQCAtODE4LDcgKzgxOSw3IEBACiAKIAkJCXRwLT53cml0ZV9zZXEgKz0gY29weTsKIAkJCVRDUF9TS0JfQ0Ioc2tiKS0+ZW5kX3NlcSArPSBjb3B5OwotCQkJc2tiX3NoaW5mbyhza2IpLT50c29fc2VncyA9IDA7CisJCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gMDsKIAogCQkJZnJvbSArPSBjb3B5OwogCQkJY29waWVkICs9IGNvcHk7CkBAIC0yMTQ0LDYgKzIxNDUsNjcgQEAKIEVYUE9SVF9TWU1CT0woY29tcGF0X3RjcF9nZXRzb2Nrb3B0KTsKICNlbmRpZgogCitzdHJ1Y3Qgc2tfYnVmZiAqdGNwX3Rzb19zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGludCBzZykKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VncyA9IEVSUl9QVFIoLUVJTlZBTCk7CisJc3RydWN0IHRjcGhkciAqdGg7CisJdW5zaWduZWQgdGhsZW47CisJdW5zaWduZWQgaW50IHNlcTsKKwl1bnNpZ25lZCBpbnQgZGVsdGE7CisJdW5zaWduZWQgaW50IG9sZGxlbjsKKwl1bnNpZ25lZCBpbnQgbGVuOworCisJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKCp0aCkpKQorCQlnb3RvIG91dDsKKworCXRoID0gc2tiLT5oLnRoOworCXRobGVuID0gdGgtPmRvZmYgKiA0OworCWlmICh0aGxlbiA8IHNpemVvZigqdGgpKQorCQlnb3RvIG91dDsKKworCWlmICghcHNrYl9tYXlfcHVsbChza2IsIHRobGVuKSkKKwkJZ290byBvdXQ7CisKKwlvbGRsZW4gPSB+aHRvbmwoc2tiLT5sZW4pOworCV9fc2tiX3B1bGwoc2tiLCB0aGxlbik7CisKKwlzZWdzID0gc2tiX3NlZ21lbnQoc2tiLCBzZyk7CisJaWYgKElTX0VSUihzZWdzKSkKKwkJZ290byBvdXQ7CisKKwlsZW4gPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplOworCWRlbHRhID0gY3N1bV9hZGQob2xkbGVuLCBodG9ubCh0aGxlbiArIGxlbikpOworCisJc2tiID0gc2VnczsKKwl0aCA9IHNrYi0+aC50aDsKKwlzZXEgPSBudG9obCh0aC0+c2VxKTsKKworCWRvIHsKKwkJdGgtPmZpbiA9IHRoLT5wc2ggPSAwOworCisJCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9OT05FKSB7CisJCQl0aC0+Y2hlY2sgPSBjc3VtX2ZvbGQoY3N1bV9wYXJ0aWFsKAorCQkJCXNrYi0+aC5yYXcsIHRobGVuLCBjc3VtX2FkZChza2ItPmNzdW0sIGRlbHRhKSkpOworCQl9CisKKwkJc2VxICs9IGxlbjsKKwkJc2tiID0gc2tiLT5uZXh0OworCQl0aCA9IHNrYi0+aC50aDsKKworCQl0aC0+c2VxID0gaHRvbmwoc2VxKTsKKwkJdGgtPmN3ciA9IDA7CisJfSB3aGlsZSAoc2tiLT5uZXh0KTsKKworCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9OT05FKSB7CisJCWRlbHRhID0gY3N1bV9hZGQob2xkbGVuLCBodG9ubChza2ItPnRhaWwgLSBza2ItPmgucmF3KSk7CisJCXRoLT5jaGVjayA9IGNzdW1fZm9sZChjc3VtX3BhcnRpYWwoCisJCQlza2ItPmgucmF3LCB0aGxlbiwgY3N1bV9hZGQoc2tiLT5jc3VtLCBkZWx0YSkpKTsKKwl9CisKK291dDoKKwlyZXR1cm4gc2VnczsKK30KKwogZXh0ZXJuIHZvaWQgX19za2JfY2JfdG9vX3NtYWxsX2Zvcl90Y3AoaW50LCBpbnQpOwogZXh0ZXJuIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX3Jlbm87CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZTA4MjQ1Yi4uOTRmZTViMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTEwNzMsNyArMTA3Myw3IEBACiAJCQkJZWxzZQogCQkJCQlwa3RfbGVuID0gKGVuZF9zZXEgLQogCQkJCQkJICAgVENQX1NLQl9DQihza2IpLT5zZXEpOwotCQkJCWlmICh0Y3BfZnJhZ21lbnQoc2ssIHNrYiwgcGt0X2xlbiwgc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSkpCisJCQkJaWYgKHRjcF9mcmFnbWVudChzaywgc2tiLCBwa3RfbGVuLCBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSkKIAkJCQkJYnJlYWs7CiAJCQkJcGNvdW50ID0gdGNwX3NrYl9wY291bnQoc2tiKTsKIAkJCX0KZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwppbmRleCAwN2JiNWEyLi5iZGQ3MWRiIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjQvdGNwX291dHB1dC5jCkBAIC01MTUsMTUgKzUxNSwxNyBAQAogCQkvKiBBdm9pZCB0aGUgY29zdGx5IGRpdmlkZSBpbiB0aGUgbm9ybWFsCiAJCSAqIG5vbi1UU08gY2FzZS4KIAkJICovCi0JCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSAxOwotCQlza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplID0gMDsKKwkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2VncyA9IDE7CisJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgPSAwOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gMDsKIAl9IGVsc2UgewogCQl1bnNpZ25lZCBpbnQgZmFjdG9yOwogCiAJCWZhY3RvciA9IHNrYi0+bGVuICsgKG1zc19ub3cgLSAxKTsKIAkJZmFjdG9yIC89IG1zc19ub3c7Ci0JCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSBmYWN0b3I7Ci0JCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NpemUgPSBtc3Nfbm93OworCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gZmFjdG9yOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplID0gbXNzX25vdzsKKwkJc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSA9IFNLQl9HU09fVENQVjQ7CiAJfQogfQogCkBAIC05MTQsNyArOTE2LDcgQEAKIAogCWlmICghdHNvX3NlZ3MgfHwKIAkgICAgKHRzb19zZWdzID4gMSAmJgotCSAgICAgc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSAhPSBtc3Nfbm93KSkgeworCSAgICAgdGNwX3NrYl9tc3Moc2tiKSAhPSBtc3Nfbm93KSkgewogCQl0Y3Bfc2V0X3NrYl90c29fc2Vncyhzaywgc2tiLCBtc3Nfbm93KTsKIAkJdHNvX3NlZ3MgPSB0Y3Bfc2tiX3Bjb3VudChza2IpOwogCX0KQEAgLTE3MjQsOCArMTcyNiw5IEBACiAJICAgdHAtPnNuZF91bmEgPT0gKFRDUF9TS0JfQ0Ioc2tiKS0+ZW5kX3NlcSAtIDEpKSB7CiAJCWlmICghcHNrYl90cmltKHNrYiwgMCkpIHsKIAkJCVRDUF9TS0JfQ0Ioc2tiKS0+c2VxID0gVENQX1NLQl9DQihza2IpLT5lbmRfc2VxIC0gMTsKLQkJCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSAxOwotCQkJc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSA9IDA7CisJCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gMTsKKwkJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgPSAwOworCQkJc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSA9IDA7CiAJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7CiAJCQlza2ItPmNzdW0gPSAwOwogCQl9CkBAIC0xOTMwLDggKzE5MzMsOSBAQAogCQlza2ItPmNzdW0gPSAwOwogCQlUQ1BfU0tCX0NCKHNrYiktPmZsYWdzID0gKFRDUENCX0ZMQUdfQUNLIHwgVENQQ0JfRkxBR19GSU4pOwogCQlUQ1BfU0tCX0NCKHNrYiktPnNhY2tlZCA9IDA7Ci0JCXNrYl9zaGluZm8oc2tiKS0+dHNvX3NlZ3MgPSAxOwotCQlza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplID0gMDsKKwkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2VncyA9IDE7CisJCXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgPSAwOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gMDsKIAogCQkvKiBGSU4gZWF0cyBhIHNlcXVlbmNlIGJ5dGUsIHdyaXRlX3NlcSBhZHZhbmNlZCBieSB0Y3BfcXVldWVfc2tiKCkuICovCiAJCVRDUF9TS0JfQ0Ioc2tiKS0+c2VxID0gdHAtPndyaXRlX3NlcTsKQEAgLTE5NjMsOCArMTk2Nyw5IEBACiAJc2tiLT5jc3VtID0gMDsKIAlUQ1BfU0tCX0NCKHNrYiktPmZsYWdzID0gKFRDUENCX0ZMQUdfQUNLIHwgVENQQ0JfRkxBR19SU1QpOwogCVRDUF9TS0JfQ0Ioc2tiKS0+c2Fja2VkID0gMDsKLQlza2Jfc2hpbmZvKHNrYiktPnRzb19zZWdzID0gMTsKLQlza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplID0gMDsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gMTsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplID0gMDsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gMDsKIAogCS8qIFNlbmQgaXQgb2ZmLiAqLwogCVRDUF9TS0JfQ0Ioc2tiKS0+c2VxID0gdGNwX2FjY2VwdGFibGVfc2VxKHNrLCB0cCk7CkBAIC0yMDQ3LDggKzIwNTIsOSBAQAogCVRDUF9TS0JfQ0Ioc2tiKS0+c2VxID0gdGNwX3JzayhyZXEpLT5zbnRfaXNuOwogCVRDUF9TS0JfQ0Ioc2tiKS0+ZW5kX3NlcSA9IFRDUF9TS0JfQ0Ioc2tiKS0+c2VxICsgMTsKIAlUQ1BfU0tCX0NCKHNrYiktPnNhY2tlZCA9IDA7Ci0Jc2tiX3NoaW5mbyhza2IpLT50c29fc2VncyA9IDE7Ci0Jc2tiX3NoaW5mbyhza2IpLT50c29fc2l6ZSA9IDA7CisJc2tiX3NoaW5mbyhza2IpLT5nc29fc2VncyA9IDE7CisJc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSA9IDA7CisJc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZSA9IDA7CiAJdGgtPnNlcSA9IGh0b25sKFRDUF9TS0JfQ0Ioc2tiKS0+c2VxKTsKIAl0aC0+YWNrX3NlcSA9IGh0b25sKHRjcF9yc2socmVxKS0+cmN2X2lzbiArIDEpOwogCWlmIChyZXEtPnJjdl93bmQgPT0gMCkgeyAvKiBpZ25vcmVkIGZvciByZXRyYW5zbWl0dGVkIHN5bnMgKi8KQEAgLTIxNTIsOCArMjE1OCw5IEBACiAJVENQX1NLQl9DQihidWZmKS0+ZmxhZ3MgPSBUQ1BDQl9GTEFHX1NZTjsKIAlUQ1BfRUNOX3NlbmRfc3luKHNrLCB0cCwgYnVmZik7CiAJVENQX1NLQl9DQihidWZmKS0+c2Fja2VkID0gMDsKLQlza2Jfc2hpbmZvKGJ1ZmYpLT50c29fc2VncyA9IDE7Ci0Jc2tiX3NoaW5mbyhidWZmKS0+dHNvX3NpemUgPSAwOworCXNrYl9zaGluZm8oYnVmZiktPmdzb19zZWdzID0gMTsKKwlza2Jfc2hpbmZvKGJ1ZmYpLT5nc29fc2l6ZSA9IDA7CisJc2tiX3NoaW5mbyhidWZmKS0+Z3NvX3R5cGUgPSAwOwogCWJ1ZmYtPmNzdW0gPSAwOwogCVRDUF9TS0JfQ0IoYnVmZiktPnNlcSA9IHRwLT53cml0ZV9zZXErKzsKIAlUQ1BfU0tCX0NCKGJ1ZmYpLT5lbmRfc2VxID0gdHAtPndyaXRlX3NlcTsKQEAgLTIyNTcsOCArMjI2NCw5IEBACiAJCWJ1ZmYtPmNzdW0gPSAwOwogCQlUQ1BfU0tCX0NCKGJ1ZmYpLT5mbGFncyA9IFRDUENCX0ZMQUdfQUNLOwogCQlUQ1BfU0tCX0NCKGJ1ZmYpLT5zYWNrZWQgPSAwOwotCQlza2Jfc2hpbmZvKGJ1ZmYpLT50c29fc2VncyA9IDE7Ci0JCXNrYl9zaGluZm8oYnVmZiktPnRzb19zaXplID0gMDsKKwkJc2tiX3NoaW5mbyhidWZmKS0+Z3NvX3NlZ3MgPSAxOworCQlza2Jfc2hpbmZvKGJ1ZmYpLT5nc29fc2l6ZSA9IDA7CisJCXNrYl9zaGluZm8oYnVmZiktPmdzb190eXBlID0gMDsKIAogCQkvKiBTZW5kIGl0IG9mZiwgdGhpcyBjbGVhcnMgZGVsYXllZCBhY2tzIGZvciB1cy4gKi8KIAkJVENQX1NLQl9DQihidWZmKS0+c2VxID0gVENQX1NLQl9DQihidWZmKS0+ZW5kX3NlcSA9IHRjcF9hY2NlcHRhYmxlX3NlcShzaywgdHApOwpAQCAtMjI5Myw4ICsyMzAxLDkgQEAKIAlza2ItPmNzdW0gPSAwOwogCVRDUF9TS0JfQ0Ioc2tiKS0+ZmxhZ3MgPSBUQ1BDQl9GTEFHX0FDSzsKIAlUQ1BfU0tCX0NCKHNrYiktPnNhY2tlZCA9IHVyZ2VudDsKLQlza2Jfc2hpbmZvKHNrYiktPnRzb19zZWdzID0gMTsKLQlza2Jfc2hpbmZvKHNrYiktPnRzb19zaXplID0gMDsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0gMTsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplID0gMDsKKwlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gMDsKIAogCS8qIFVzZSBhIHByZXZpb3VzIHNlcXVlbmNlLiAgVGhpcyBzaG91bGQgY2F1c2UgdGhlIG90aGVyCiAJICogZW5kIHRvIHNlbmQgYW4gYWNrLiAgRG9uJ3QgcXVldWUgb3IgY2xvbmUgU0tCLCBqdXN0CmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9vdXRwdXQuYyBiL25ldC9pcHY0L3hmcm00X291dHB1dC5jCmluZGV4IGFjOWQ5MWQuLjE5MzM2M2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3hmcm00X291dHB1dC5jCisrKyBiL25ldC9pcHY0L3hmcm00X291dHB1dC5jCkBAIC05LDYgKzksOCBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgpAQCAtOTcsMTYgKzk5LDEwIEBACiAJZ290byBvdXRfZXhpdDsKIH0KIAotc3RhdGljIGludCB4ZnJtNF9vdXRwdXRfZmluaXNoKHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMgaW50IHhmcm00X291dHB1dF9maW5pc2gyKHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IGVycjsKIAotI2lmZGVmIENPTkZJR19ORVRGSUxURVIKLQlpZiAoIXNrYi0+ZHN0LT54ZnJtKSB7Ci0JCUlQQ0Ioc2tiKS0+ZmxhZ3MgfD0gSVBTS0JfUkVST1VURUQ7Ci0JCXJldHVybiBkc3Rfb3V0cHV0KHNrYik7Ci0JfQotI2VuZGlmCiAJd2hpbGUgKGxpa2VseSgoZXJyID0geGZybTRfb3V0cHV0X29uZShza2IpKSA9PSAwKSkgewogCQluZl9yZXNldChza2IpOwogCkBAIC0xMTksNyArMTE1LDcgQEAKIAkJCXJldHVybiBkc3Rfb3V0cHV0KHNrYik7CiAKIAkJZXJyID0gbmZfaG9vayhQRl9JTkVULCBORl9JUF9QT1NUX1JPVVRJTkcsICZza2IsIE5VTEwsCi0JCQkgICAgICBza2ItPmRzdC0+ZGV2LCB4ZnJtNF9vdXRwdXRfZmluaXNoKTsKKwkJCSAgICAgIHNrYi0+ZHN0LT5kZXYsIHhmcm00X291dHB1dF9maW5pc2gyKTsKIAkJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJCWJyZWFrOwogCX0KQEAgLTEyNyw2ICsxMjMsNDggQEAKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IHhmcm00X291dHB1dF9maW5pc2goc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VnczsKKworI2lmZGVmIENPTkZJR19ORVRGSUxURVIKKwlpZiAoIXNrYi0+ZHN0LT54ZnJtKSB7CisJCUlQQ0Ioc2tiKS0+ZmxhZ3MgfD0gSVBTS0JfUkVST1VURUQ7CisJCXJldHVybiBkc3Rfb3V0cHV0KHNrYik7CisJfQorI2VuZGlmCisKKwlpZiAoIXNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpCisJCXJldHVybiB4ZnJtNF9vdXRwdXRfZmluaXNoMihza2IpOworCisJc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQKTsKKwlzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgMCk7CisJa2ZyZWVfc2tiKHNrYik7CisJaWYgKHVubGlrZWx5KElTX0VSUihzZWdzKSkpCisJCXJldHVybiBQVFJfRVJSKHNlZ3MpOworCisJZG8geworCQlzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiA9IHNlZ3MtPm5leHQ7CisJCWludCBlcnI7CisKKwkJc2Vncy0+bmV4dCA9IE5VTEw7CisJCWVyciA9IHhmcm00X291dHB1dF9maW5pc2gyKHNlZ3MpOworCisJCWlmICh1bmxpa2VseShlcnIpKSB7CisJCQl3aGlsZSAoKHNlZ3MgPSBuc2tiKSkgeworCQkJCW5za2IgPSBzZWdzLT5uZXh0OworCQkJCXNlZ3MtPm5leHQgPSBOVUxMOworCQkJCWtmcmVlX3NrYihzZWdzKTsKKwkJCX0KKwkJCXJldHVybiBlcnI7CisJCX0KKworCQlzZWdzID0gbnNrYjsKKwl9IHdoaWxlIChzZWdzKTsKKworCXJldHVybiAwOworfQorCiBpbnQgeGZybTRfb3V0cHV0KHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJcmV0dXJuIE5GX0hPT0tfQ09ORChQRl9JTkVULCBORl9JUF9QT1NUX1JPVVRJTkcsIHNrYiwgTlVMTCwgc2tiLT5kc3QtPmRldiwKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCmluZGV4IGMyYzI2ZmEuLjRkYTY2NDUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmMKKysrIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwpAQCAtODYyLDYgKzg2Miw4IEBACiAgICogCTIwMDI6Oi8xNgkJMgogICAqIAk6Oi85NgkJCTMKICAgKiAJOjpmZmZmOjA6MC85NgkJNAorICAqCWZjMDA6Oi83CQk1CisgICogCTIwMDE6Oi8zMgkJNgogICAqLwogCWlmICh0eXBlICYgSVBWNl9BRERSX0xPT1BCQUNLKQogCQlyZXR1cm4gMDsKQEAgLTg2OSw4ICs4NzEsMTIgQEAKIAkJcmV0dXJuIDM7CiAJZWxzZSBpZiAodHlwZSAmIElQVjZfQUREUl9NQVBQRUQpCiAJCXJldHVybiA0OworCWVsc2UgaWYgKGFkZHItPnM2X2FkZHIzMlswXSA9PSBodG9ubCgweDIwMDEwMDAwKSkKKwkJcmV0dXJuIDY7CiAJZWxzZSBpZiAoYWRkci0+czZfYWRkcjE2WzBdID09IGh0b25zKDB4MjAwMikpCiAJCXJldHVybiAyOworCWVsc2UgaWYgKChhZGRyLT5zNl9hZGRyWzBdICYgMHhmZSkgPT0gMHhmYykKKwkJcmV0dXJuIDU7CiAJcmV0dXJuIDE7CiB9CiAKQEAgLTEwNjksNiArMTA3NSw5IEBACiAJCQkJaWYgKGhpc2NvcmUuYXR0cnMgJiBJUFY2X1NBRERSX1NDT1JFX1BSSVZBQ1kpCiAJCQkJCWNvbnRpbnVlOwogCQkJfQorI2Vsc2UKKwkJCWlmIChoaXNjb3JlLnJ1bGUgPCA3KQorCQkJCWhpc2NvcmUucnVsZSsrOwogI2VuZGlmCiAJCQkvKiBSdWxlIDg6IFVzZSBsb25nZXN0IG1hdGNoaW5nIHByZWZpeCAqLwogCQkJaWYgKGhpc2NvcmUucnVsZSA8IDgpIHsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCBkMjk2MjBmLi5hYmI5NGRlIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC0xNDgsNyArMTQ4LDcgQEAKIAogaW50IGlwNl9vdXRwdXQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKLQlpZiAoKHNrYi0+bGVuID4gZHN0X210dShza2ItPmRzdCkgJiYgIXNrYl9zaGluZm8oc2tiKS0+dWZvX3NpemUpIHx8CisJaWYgKChza2ItPmxlbiA+IGRzdF9tdHUoc2tiLT5kc3QpICYmICFza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKSB8fAogCQkJCWRzdF9hbGxmcmFnKHNrYi0+ZHN0KSkKIAkJcmV0dXJuIGlwNl9mcmFnbWVudChza2IsIGlwNl9vdXRwdXQyKTsKIAllbHNlCkBAIC04MzMsOCArODMzLDkgQEAKIAkJc3RydWN0IGZyYWdfaGRyIGZoZHI7CiAKIAkJLyogc3BlY2lmeSB0aGUgbGVuZ3RoIG9mIGVhY2ggSVAgZGF0YWdyYW0gZnJhZ21lbnQqLwotCQlza2Jfc2hpbmZvKHNrYiktPnVmb19zaXplID0gKG10dSAtIGZyYWdoZWFkZXJsZW4pIC0gCi0JCQkJCQlzaXplb2Yoc3RydWN0IGZyYWdfaGRyKTsKKwkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSA9IG10dSAtIGZyYWdoZWFkZXJsZW4gLSAKKwkJCQkJICAgIHNpemVvZihzdHJ1Y3QgZnJhZ19oZHIpOworCQlza2Jfc2hpbmZvKHNrYiktPmdzb190eXBlID0gU0tCX0dTT19VRFBWNDsKIAkJaXB2Nl9zZWxlY3RfaWRlbnQoc2tiLCAmZmhkcik7CiAJCXNrYl9zaGluZm8oc2tiKS0+aXA2X2ZyYWdfaWQgPSBmaGRyLmlkZW50aWZpY2F0aW9uOwogCQlfX3NrYl9xdWV1ZV90YWlsKCZzay0+c2tfd3JpdGVfcXVldWUsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9vdXRwdXQuYyBiL25ldC9pcHY2L3hmcm02X291dHB1dC5jCmluZGV4IDE2ZTg0MjUuLjQ4ZmNjYjEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X291dHB1dC5jCisrKyBiL25ldC9pcHY2L3hmcm02X291dHB1dC5jCkBAIC05NCw3ICs5NCw3IEBACiAJZ290byBvdXRfZXhpdDsKIH0KIAotc3RhdGljIGludCB4ZnJtNl9vdXRwdXRfZmluaXNoKHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMgaW50IHhmcm02X291dHB1dF9maW5pc2gyKHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IGVycjsKIApAQCAtMTEwLDcgKzExMCw3IEBACiAJCQlyZXR1cm4gZHN0X291dHB1dChza2IpOwogCiAJCWVyciA9IG5mX2hvb2soUEZfSU5FVDYsIE5GX0lQNl9QT1NUX1JPVVRJTkcsICZza2IsIE5VTEwsCi0JCQkgICAgICBza2ItPmRzdC0+ZGV2LCB4ZnJtNl9vdXRwdXRfZmluaXNoKTsKKwkJCSAgICAgIHNrYi0+ZHN0LT5kZXYsIHhmcm02X291dHB1dF9maW5pc2gyKTsKIAkJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJCWJyZWFrOwogCX0KQEAgLTExOCw2ICsxMTgsNDEgQEAKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IHhmcm02X291dHB1dF9maW5pc2goc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2VnczsKKworCWlmICghc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSkKKwkJcmV0dXJuIHhmcm02X291dHB1dF9maW5pc2gyKHNrYik7CisKKwlza2ItPnByb3RvY29sID0gaHRvbnMoRVRIX1BfSVApOworCXNlZ3MgPSBza2JfZ3NvX3NlZ21lbnQoc2tiLCAwKTsKKwlrZnJlZV9za2Ioc2tiKTsKKwlpZiAodW5saWtlbHkoSVNfRVJSKHNlZ3MpKSkKKwkJcmV0dXJuIFBUUl9FUlIoc2Vncyk7CisKKwlkbyB7CisJCXN0cnVjdCBza19idWZmICpuc2tiID0gc2Vncy0+bmV4dDsKKwkJaW50IGVycjsKKworCQlzZWdzLT5uZXh0ID0gTlVMTDsKKwkJZXJyID0geGZybTZfb3V0cHV0X2ZpbmlzaDIoc2Vncyk7CisKKwkJaWYgKHVubGlrZWx5KGVycikpIHsKKwkJCXdoaWxlICgoc2VncyA9IG5za2IpKSB7CisJCQkJbnNrYiA9IHNlZ3MtPm5leHQ7CisJCQkJc2Vncy0+bmV4dCA9IE5VTEw7CisJCQkJa2ZyZWVfc2tiKHNlZ3MpOworCQkJfQorCQkJcmV0dXJuIGVycjsKKwkJfQorCisJCXNlZ3MgPSBuc2tiOworCX0gd2hpbGUgKHNlZ3MpOworCisJcmV0dXJuIDA7Cit9CisKIGludCB4ZnJtNl9vdXRwdXQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlyZXR1cm4gTkZfSE9PSyhQRl9JTkVUNiwgTkZfSVA2X1BPU1RfUk9VVElORywgc2tiLCBOVUxMLCBza2ItPmRzdC0+ZGV2LApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3NjdHAuYwppbmRleCBiNTExMGU1Li45MzE2Yzc1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3NjdHAuYworKysgYi9uZXQvbmV0ZmlsdGVyL3h0X3NjdHAuYwpAQCAtNjIsNyArNjIsNyBAQAogCiAJZG8gewogCQlzY2ggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmZzZXQsIHNpemVvZihfc2NoKSwgJl9zY2gpOwotCQlpZiAoc2NoID09IE5VTEwpIHsKKwkJaWYgKHNjaCA9PSBOVUxMIHx8IHNjaC0+bGVuZ3RoID09IDApIHsKIAkJCWR1cHJpbnRmKCJEcm9wcGluZyBpbnZhbGlkIFNDVFAgcGFja2V0LlxuIik7CiAJCQkqaG90ZHJvcCA9IDE7CiAJCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jIGIvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKaW5kZXggYjFlNGM1ZS4uNzRkNGExZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKQEAgLTkwLDE0ICs5MCwxNyBAQAogICAgTk9URTogQ2FsbGVkIHVuZGVyIGRldi0+cXVldWVfbG9jayB3aXRoIGxvY2FsbHkgZGlzYWJsZWQgQkguCiAqLwogCi1pbnQgcWRpc2NfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQorc3RhdGljIGlubGluZSBpbnQgcWRpc2NfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBRZGlzYyAqcSA9IGRldi0+cWRpc2M7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAogCS8qIERlcXVldWUgcGFja2V0ICovCi0JaWYgKChza2IgPSBxLT5kZXF1ZXVlKHEpKSAhPSBOVUxMKSB7CisJaWYgKCgoc2tiID0gZGV2LT5nc29fc2tiKSkgfHwgKChza2IgPSBxLT5kZXF1ZXVlKHEpKSkpIHsKIAkJdW5zaWduZWQgbm9sb2NrID0gKGRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0xMVFgpOworCisJCWRldi0+Z3NvX3NrYiA9IE5VTEw7CisKIAkJLyoKIAkJICogV2hlbiB0aGUgZHJpdmVyIGhhcyBMTFRYIHNldCBpdCBkb2VzIGl0cyBvd24gbG9ja2luZwogCQkgKiBpbiBzdGFydF94bWl0LiBObyBuZWVkIHRvIGFkZCBhZGRpdGlvbmFsIG92ZXJoZWFkIGJ5CkBAIC0xMzQsMTAgKzEzNyw4IEBACiAKIAkJCWlmICghbmV0aWZfcXVldWVfc3RvcHBlZChkZXYpKSB7CiAJCQkJaW50IHJldDsKLQkJCQlpZiAobmV0ZGV2X25pdCkKLQkJCQkJZGV2X3F1ZXVlX3htaXRfbml0KHNrYiwgZGV2KTsKIAotCQkJCXJldCA9IGRldi0+aGFyZF9zdGFydF94bWl0KHNrYiwgZGV2KTsKKwkJCQlyZXQgPSBkZXZfaGFyZF9zdGFydF94bWl0KHNrYiwgZGV2KTsKIAkJCQlpZiAocmV0ID09IE5FVERFVl9UWF9PSykgeyAKIAkJCQkJaWYgKCFub2xvY2spIHsKIAkJCQkJCW5ldGlmX3R4X3VubG9jayhkZXYpOwpAQCAtMTcxLDcgKzE3MiwxMCBAQAogCQkgKi8KIAogcmVxdWV1ZToKLQkJcS0+b3BzLT5yZXF1ZXVlKHNrYiwgcSk7CisJCWlmIChza2ItPm5leHQpCisJCQlkZXYtPmdzb19za2IgPSBza2I7CisJCWVsc2UKKwkJCXEtPm9wcy0+cmVxdWV1ZShza2IsIHEpOwogCQluZXRpZl9zY2hlZHVsZShkZXYpOwogCQlyZXR1cm4gMTsKIAl9CkBAIC0xNzksNiArMTgzLDE4IEBACiAJcmV0dXJuIHEtPnEucWxlbjsKIH0KIAordm9pZCBfX3FkaXNjX3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCWlmICh1bmxpa2VseShkZXYtPnFkaXNjID09ICZub29wX3FkaXNjKSkKKwkJZ290byBvdXQ7CisKKwl3aGlsZSAocWRpc2NfcmVzdGFydChkZXYpIDwgMCAmJiAhbmV0aWZfcXVldWVfc3RvcHBlZChkZXYpKQorCQkvKiBOT1RISU5HICovOworCitvdXQ6CisJY2xlYXJfYml0KF9fTElOS19TVEFURV9RRElTQ19SVU5OSU5HLCAmZGV2LT5zdGF0ZSk7Cit9CisKIHN0YXRpYyB2b2lkIGRldl93YXRjaGRvZyh1bnNpZ25lZCBsb25nIGFyZykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gKHN0cnVjdCBuZXRfZGV2aWNlICopYXJnOwpAQCAtNTc1LDEwICs1OTEsMTcgQEAKIAogCWRldl93YXRjaGRvZ19kb3duKGRldik7CiAKLQl3aGlsZSAodGVzdF9iaXQoX19MSU5LX1NUQVRFX1NDSEVELCAmZGV2LT5zdGF0ZSkpCisJLyogV2FpdCBmb3Igb3V0c3RhbmRpbmcgZGV2X3F1ZXVlX3htaXQgY2FsbHMuICovCisJc3luY2hyb25pemVfcmN1KCk7CisKKwkvKiBXYWl0IGZvciBvdXRzdGFuZGluZyBxZGlzY19ydW4gY2FsbHMuICovCisJd2hpbGUgKHRlc3RfYml0KF9fTElOS19TVEFURV9RRElTQ19SVU5OSU5HLCAmZGV2LT5zdGF0ZSkpCiAJCXlpZWxkKCk7CiAKLQlzcGluX3VubG9ja193YWl0KCZkZXYtPl94bWl0X2xvY2spOworCWlmIChkZXYtPmdzb19za2IpIHsKKwkJa2ZyZWVfc2tiKGRldi0+Z3NvX3NrYik7CisJCWRldi0+Z3NvX3NrYiA9IE5VTEw7CisJfQogfQogCiB2b2lkIGRldl9pbml0X3NjaGVkdWxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtNjIwLDYgKzY0Myw1IEBACiBFWFBPUlRfU1lNQk9MKHFkaXNjX2FsbG9jKTsKIEVYUE9SVF9TWU1CT0wocWRpc2NfZGVzdHJveSk7CiBFWFBPUlRfU1lNQk9MKHFkaXNjX3Jlc2V0KTsKLUVYUE9SVF9TWU1CT0wocWRpc2NfcmVzdGFydCk7CiBFWFBPUlRfU1lNQk9MKHFkaXNjX2xvY2tfdHJlZSk7CiBFWFBPUlRfU1lNQk9MKHFkaXNjX3VubG9ja190cmVlKTsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCA1ZTBkZTNjLi4yYTg3NzM2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCkBAIC0xNDAyLDE0ICsxNDAyLDE0IEBACiAJc2cubGVuZ3RoID0gYm9keXNpemU7CiAJa2V5ID0gKGNoYXIgKillcC0+c2VjcmV0X2tleVtlcC0+Y3VycmVudF9rZXldOwogCi0JbWVtc2V0KGRpZ2VzdCwgMHgwMCwgc2l6ZW9mKGRpZ2VzdCkpOworCW1lbXNldChkaWdlc3QsIDB4MDAsIFNDVFBfU0lHTkFUVVJFX1NJWkUpOwogCXNjdHBfY3J5cHRvX2htYWMoc2N0cF9zayhlcC0+YmFzZS5zayktPmhtYWMsIGtleSwgJmtleWxlbiwgJnNnLAogCQkJIDEsIGRpZ2VzdCk7CiAKIAlpZiAobWVtY21wKGRpZ2VzdCwgY29va2llLT5zaWduYXR1cmUsIFNDVFBfU0lHTkFUVVJFX1NJWkUpKSB7CiAJCS8qIFRyeSB0aGUgcHJldmlvdXMga2V5LiAqLwogCQlrZXkgPSAoY2hhciAqKWVwLT5zZWNyZXRfa2V5W2VwLT5sYXN0X2tleV07Ci0JCW1lbXNldChkaWdlc3QsIDB4MDAsIHNpemVvZihkaWdlc3QpKTsKKwkJbWVtc2V0KGRpZ2VzdCwgMHgwMCwgU0NUUF9TSUdOQVRVUkVfU0laRSk7CiAJCXNjdHBfY3J5cHRvX2htYWMoc2N0cF9zayhlcC0+YmFzZS5zayktPmhtYWMsIGtleSwgJmtleWxlbiwKIAkJCQkgJnNnLCAxLCBkaWdlc3QpOwogCmRpZmYgLS1naXQgYS9uZXQvc29ja2V0LmMgYi9uZXQvc29ja2V0LmMKaW5kZXggMDI5NDhiNi4uNTY1ZjVlOCAxMDA2NDQKLS0tIGEvbmV0L3NvY2tldC5jCisrKyBiL25ldC9zb2NrZXQuYwpAQCAtMzM1LDEwICszMzUsMTEgQEAKIAkuc3RhdGZzID0Jc2ltcGxlX3N0YXRmcywKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNvY2tmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgc29ja2ZzX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3BzZXVkbyhmc190eXBlLCAic29ja2V0OiIsICZzb2NrZnNfb3BzLCBTT0NLRlNfTUFHSUMpOworCXJldHVybiBnZXRfc2JfcHNldWRvKGZzX3R5cGUsICJzb2NrZXQ6IiwgJnNvY2tmc19vcHMsIFNPQ0tGU19NQUdJQywKKwkJCSAgICAgbW50KTsKIH0KIAogc3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqc29ja19tbnQgX19yZWFkX21vc3RseTsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvcnBjX3BpcGUuYyBiL25ldC9zdW5ycGMvcnBjX3BpcGUuYwppbmRleCBhNTIyNmRmLi5kYWZlNzkzIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3JwY19waXBlLmMKKysrIGIvbmV0L3N1bnJwYy9ycGNfcGlwZS5jCkBAIC04MTUsMTEgKzgxNSwxMSBAQAogCXJldHVybiAtRU5PTUVNOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICoKK3N0YXRpYyBpbnQKIHJwY19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEpCisJCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQogewotCXJldHVybiBnZXRfc2Jfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBycGNfZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHJwY19maWxsX3N1cGVyLCBtbnQpOwogfQogCiBzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgcnBjX3BpcGVfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2R1bW15LmMgYi9zZWN1cml0eS9kdW1teS5jCmluZGV4IDY0ZjZkYTAuLmMzYzU0OTMgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2R1bW15LmMKKysrIGIvc2VjdXJpdHkvZHVtbXkuYwpAQCAtMTkxLDcgKzE5MSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZHVtbXlfc2Jfc3RhdGZzIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQorc3RhdGljIGludCBkdW1teV9zYl9zdGF0ZnMgKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlyZXR1cm4gMDsKIH0KQEAgLTUxNiw2ICs1MTYsMTEgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBkdW1teV90YXNrX3NldGlvcHJpbyAoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgaW9wcmlvKQoreworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGR1bW15X3Rhc2tfc2V0cmxpbWl0ICh1bnNpZ25lZCBpbnQgcmVzb3VyY2UsIHN0cnVjdCBybGltaXQgKm5ld19ybGltKQogewogCXJldHVybiAwOwpAQCAtNTMyLDYgKzUzNywxMSBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGR1bW15X3Rhc2tfbW92ZW1lbW9yeSAoc3RydWN0IHRhc2tfc3RydWN0ICpwKQoreworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGR1bW15X3Rhc2tfd2FpdCAoc3RydWN0IHRhc2tfc3RydWN0ICpwKQogewogCXJldHVybiAwOwpAQCAtODYwLDcgKzg3MCw3IEBACiB9CiAKICNpZmRlZiBDT05GSUdfS0VZUwotc3RhdGljIGlubGluZSBpbnQgZHVtbXlfa2V5X2FsbG9jKHN0cnVjdCBrZXkgKmtleSkKK3N0YXRpYyBpbmxpbmUgaW50IGR1bW15X2tleV9hbGxvYyhzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3R4KQogewogCXJldHVybiAwOwogfQpAQCAtOTcyLDkgKzk4MiwxMSBAQAogCXNldF90b19kdW1teV9pZl9udWxsKG9wcywgdGFza19nZXRzaWQpOwogCXNldF90b19kdW1teV9pZl9udWxsKG9wcywgdGFza19zZXRncm91cHMpOwogCXNldF90b19kdW1teV9pZl9udWxsKG9wcywgdGFza19zZXRuaWNlKTsKKwlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfc2V0aW9wcmlvKTsKIAlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfc2V0cmxpbWl0KTsKIAlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfc2V0c2NoZWR1bGVyKTsKIAlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfZ2V0c2NoZWR1bGVyKTsKKwlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfbW92ZW1lbW9yeSk7CiAJc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCB0YXNrX3dhaXQpOwogCXNldF90b19kdW1teV9pZl9udWxsKG9wcywgdGFza19raWxsKTsKIAlzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIHRhc2tfcHJjdGwpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW5vZGUuYyBiL3NlY3VyaXR5L2lub2RlLmMKaW5kZXggOGJmNDA2Mi4uOThhMGRmNSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvaW5vZGUuYworKysgYi9zZWN1cml0eS9pbm9kZS5jCkBAIC0xMzUsMTEgKzEzNSwxMSBAQAogCXJldHVybiBzaW1wbGVfZmlsbF9zdXBlcihzYiwgU0VDVVJJVFlGU19NQUdJQywgZmlsZXMpOwogfQogCi1zdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJICAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAotCQkJCQl2b2lkICpkYXRhKQorc3RhdGljIGludCBnZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCSAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwKKwkJICB2b2lkICpkYXRhLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKIHsKLQlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgZmlsbF9zdXBlcik7CisJcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIGZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBmc190eXBlID0gewpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9rZXkuYyBiL3NlY3VyaXR5L2tleXMva2V5LmMKaW5kZXggM2ZkYzQ5Yy4uNTFmODUxNSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkva2V5cy9rZXkuYworKysgYi9zZWN1cml0eS9rZXlzL2tleS5jCkBAIC0yNDcsOCArMjQ3LDggQEAKICAqICAgaW5zdGFudGlhdGUgdGhlIGtleSBvciBkaXNjYXJkIGl0IGJlZm9yZSByZXR1cm5pbmcKICAqLwogc3RydWN0IGtleSAqa2V5X2FsbG9jKHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqZGVzYywKLQkJICAgICAgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIGtleV9wZXJtX3QgcGVybSwKLQkJICAgICAgaW50IG5vdF9pbl9xdW90YSkKKwkJICAgICAgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3R4LAorCQkgICAgICBrZXlfcGVybV90IHBlcm0sIGludCBub3RfaW5fcXVvdGEpCiB7CiAJc3RydWN0IGtleV91c2VyICp1c2VyID0gTlVMTDsKIAlzdHJ1Y3Qga2V5ICprZXk7CkBAIC0zMTgsNyArMzE4LDcgQEAKICNlbmRpZgogCiAJLyogbGV0IHRoZSBzZWN1cml0eSBtb2R1bGUga25vdyBhYm91dCB0aGUga2V5ICovCi0JcmV0ID0gc2VjdXJpdHlfa2V5X2FsbG9jKGtleSk7CisJcmV0ID0gc2VjdXJpdHlfa2V5X2FsbG9jKGtleSwgY3R4KTsKIAlpZiAocmV0IDwgMCkKIAkJZ290byBzZWN1cml0eV9lcnJvcjsKIApAQCAtODIyLDcgKzgyMiw3IEBACiAKIAkvKiBhbGxvY2F0ZSBhIG5ldyBrZXkgKi8KIAlrZXkgPSBrZXlfYWxsb2Moa3R5cGUsIGRlc2NyaXB0aW9uLCBjdXJyZW50LT5mc3VpZCwgY3VycmVudC0+ZnNnaWQsCi0JCQlwZXJtLCBub3RfaW5fcXVvdGEpOworCQkJY3VycmVudCwgcGVybSwgbm90X2luX3F1b3RhKTsKIAlpZiAoSVNfRVJSKGtleSkpIHsKIAkJa2V5X3JlZiA9IEVSUl9QVFIoUFRSX0VSUihrZXkpKTsKIAkJZ290byBlcnJvcl8zOwpAQCAtOTA3LDYgKzkwNywxMCBAQAogCSAqIGl0ICovCiAJZG93bl93cml0ZSgma2V5LT5zZW0pOwogCXNldF9iaXQoS0VZX0ZMQUdfUkVWT0tFRCwgJmtleS0+ZmxhZ3MpOworCisJaWYgKGtleS0+dHlwZS0+cmV2b2tlKQorCQlrZXktPnR5cGUtPnJldm9rZShrZXkpOworCiAJdXBfd3JpdGUoJmtleS0+c2VtKTsKIAogfSAvKiBlbmQga2V5X3Jldm9rZSgpICovCmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleXJpbmcuYyBiL3NlY3VyaXR5L2tleXMva2V5cmluZy5jCmluZGV4IGJmZmE5MjQuLjEzNTcyMDcgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMva2V5cmluZy5jCisrKyBiL3NlY3VyaXR5L2tleXMva2V5cmluZy5jCkBAIC0yNDAsMTMgKzI0MCwxNCBAQAogICogYWxsb2NhdGUgYSBrZXlyaW5nIGFuZCBsaW5rIGludG8gdGhlIGRlc3RpbmF0aW9uIGtleXJpbmcKICAqLwogc3RydWN0IGtleSAqa2V5cmluZ19hbGxvYyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCi0JCQkgIGludCBub3RfaW5fcXVvdGEsIHN0cnVjdCBrZXkgKmRlc3QpCisJCQkgIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3R4LCBpbnQgbm90X2luX3F1b3RhLAorCQkJICBzdHJ1Y3Qga2V5ICpkZXN0KQogewogCXN0cnVjdCBrZXkgKmtleXJpbmc7CiAJaW50IHJldDsKIAogCWtleXJpbmcgPSBrZXlfYWxsb2MoJmtleV90eXBlX2tleXJpbmcsIGRlc2NyaXB0aW9uLAotCQkJICAgIHVpZCwgZ2lkLAorCQkJICAgIHVpZCwgZ2lkLCBjdHgsCiAJCQkgICAgKEtFWV9QT1NfQUxMICYgfktFWV9QT1NfU0VUQVRUUikgfCBLRVlfVVNSX0FMTCwKIAkJCSAgICBub3RfaW5fcXVvdGEpOwogCmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3Byb2Nlc3Nfa2V5cy5jIGIvc2VjdXJpdHkva2V5cy9wcm9jZXNzX2tleXMuYwppbmRleCAyMTdhMGJlLi40ZDk4MjVmIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL3Byb2Nlc3Nfa2V5cy5jCisrKyBiL3NlY3VyaXR5L2tleXMvcHJvY2Vzc19rZXlzLmMKQEAgLTY3LDcgKzY3LDggQEAKIC8qCiAgKiBhbGxvY2F0ZSB0aGUga2V5cmluZ3MgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgVUlECiAgKi8KLWludCBhbGxvY191aWRfa2V5cmluZyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpCitpbnQgYWxsb2NfdWlkX2tleXJpbmcoc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLAorCQkgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN0eCkKIHsKIAlzdHJ1Y3Qga2V5ICp1aWRfa2V5cmluZywgKnNlc3Npb25fa2V5cmluZzsKIAljaGFyIGJ1ZlsyMF07CkBAIC03Niw3ICs3Nyw3IEBACiAJLyogY29uY29jdCBhIGRlZmF1bHQgc2Vzc2lvbiBrZXlyaW5nICovCiAJc3ByaW50ZihidWYsICJfdWlkX3Nlcy4ldSIsIHVzZXItPnVpZCk7CiAKLQlzZXNzaW9uX2tleXJpbmcgPSBrZXlyaW5nX2FsbG9jKGJ1ZiwgdXNlci0+dWlkLCAoZ2lkX3QpIC0xLCAwLCBOVUxMKTsKKwlzZXNzaW9uX2tleXJpbmcgPSBrZXlyaW5nX2FsbG9jKGJ1ZiwgdXNlci0+dWlkLCAoZ2lkX3QpIC0xLCBjdHgsIDAsIE5VTEwpOwogCWlmIChJU19FUlIoc2Vzc2lvbl9rZXlyaW5nKSkgewogCQlyZXQgPSBQVFJfRVJSKHNlc3Npb25fa2V5cmluZyk7CiAJCWdvdG8gZXJyb3I7CkBAIC04Niw3ICs4Nyw3IEBACiAJICoga2V5cmluZyAqLwogCXNwcmludGYoYnVmLCAiX3VpZC4ldSIsIHVzZXItPnVpZCk7CiAKLQl1aWRfa2V5cmluZyA9IGtleXJpbmdfYWxsb2MoYnVmLCB1c2VyLT51aWQsIChnaWRfdCkgLTEsIDAsCisJdWlkX2tleXJpbmcgPSBrZXlyaW5nX2FsbG9jKGJ1ZiwgdXNlci0+dWlkLCAoZ2lkX3QpIC0xLCBjdHgsIDAsCiAJCQkJICAgIHNlc3Npb25fa2V5cmluZyk7CiAJaWYgKElTX0VSUih1aWRfa2V5cmluZykpIHsKIAkJa2V5X3B1dChzZXNzaW9uX2tleXJpbmcpOwpAQCAtMTQzLDcgKzE0NCw3IEBACiAKIAlzcHJpbnRmKGJ1ZiwgIl90aWQuJXUiLCB0c2stPnBpZCk7CiAKLQlrZXlyaW5nID0ga2V5cmluZ19hbGxvYyhidWYsIHRzay0+dWlkLCB0c2stPmdpZCwgMSwgTlVMTCk7CisJa2V5cmluZyA9IGtleXJpbmdfYWxsb2MoYnVmLCB0c2stPnVpZCwgdHNrLT5naWQsIHRzaywgMSwgTlVMTCk7CiAJaWYgKElTX0VSUihrZXlyaW5nKSkgewogCQlyZXQgPSBQVFJfRVJSKGtleXJpbmcpOwogCQlnb3RvIGVycm9yOwpAQCAtMTc3LDcgKzE3OCw3IEBACiAJaWYgKCF0c2stPnNpZ25hbC0+cHJvY2Vzc19rZXlyaW5nKSB7CiAJCXNwcmludGYoYnVmLCAiX3BpZC4ldSIsIHRzay0+dGdpZCk7CiAKLQkJa2V5cmluZyA9IGtleXJpbmdfYWxsb2MoYnVmLCB0c2stPnVpZCwgdHNrLT5naWQsIDEsIE5VTEwpOworCQlrZXlyaW5nID0ga2V5cmluZ19hbGxvYyhidWYsIHRzay0+dWlkLCB0c2stPmdpZCwgdHNrLCAxLCBOVUxMKTsKIAkJaWYgKElTX0VSUihrZXlyaW5nKSkgewogCQkJcmV0ID0gUFRSX0VSUihrZXlyaW5nKTsKIAkJCWdvdG8gZXJyb3I7CkBAIC0yMTcsNyArMjE4LDcgQEAKIAlpZiAoIWtleXJpbmcpIHsKIAkJc3ByaW50ZihidWYsICJfc2VzLiV1IiwgdHNrLT50Z2lkKTsKIAotCQlrZXlyaW5nID0ga2V5cmluZ19hbGxvYyhidWYsIHRzay0+dWlkLCB0c2stPmdpZCwgMSwgTlVMTCk7CisJCWtleXJpbmcgPSBrZXlyaW5nX2FsbG9jKGJ1ZiwgdHNrLT51aWQsIHRzay0+Z2lkLCB0c2ssIDEsIE5VTEwpOwogCQlpZiAoSVNfRVJSKGtleXJpbmcpKQogCQkJcmV0dXJuIFBUUl9FUlIoa2V5cmluZyk7CiAJfQpAQCAtMzkwLDYgKzM5MSw4IEBACiAJc3RydWN0IHJlcXVlc3Rfa2V5X2F1dGggKnJrYTsKIAlrZXlfcmVmX3Qga2V5X3JlZiwgcmV0LCBlcnI7CiAKKwltaWdodF9zbGVlcCgpOworCiAJLyogd2Ugd2FudCB0byByZXR1cm4gLUVBR0FJTiBvciAtRU5PS0VZIGlmIGFueSBvZiB0aGUga2V5cmluZ3Mgd2VyZQogCSAqIHNlYXJjaGFibGUsIGJ1dCB3ZSBmYWlsZWQgdG8gZmluZCBhIGtleSBvciB3ZSBmb3VuZCBhIG5lZ2F0aXZlIGtleTsKIAkgKiBvdGhlcndpc2Ugd2Ugd2FudCB0byByZXR1cm4gYSBzYW1wbGUgZXJyb3IgKHByb2JhYmx5IC1FQUNDRVMpIGlmCkBAIC00OTUsMjcgKzQ5OCwzNSBAQAogCSAqLwogCWlmIChjb250ZXh0LT5yZXF1ZXN0X2tleV9hdXRoICYmCiAJICAgIGNvbnRleHQgPT0gY3VycmVudCAmJgotCSAgICB0eXBlICE9ICZrZXlfdHlwZV9yZXF1ZXN0X2tleV9hdXRoICYmCi0JICAgIGtleV92YWxpZGF0ZShjb250ZXh0LT5yZXF1ZXN0X2tleV9hdXRoKSA9PSAwCisJICAgIHR5cGUgIT0gJmtleV90eXBlX3JlcXVlc3Rfa2V5X2F1dGgKIAkgICAgKSB7Ci0JCXJrYSA9IGNvbnRleHQtPnJlcXVlc3Rfa2V5X2F1dGgtPnBheWxvYWQuZGF0YTsKKwkJLyogZGVmZW5kIGFnYWluc3QgdGhlIGF1dGgga2V5IGJlaW5nIHJldm9rZWQgKi8KKwkJZG93bl9yZWFkKCZjb250ZXh0LT5yZXF1ZXN0X2tleV9hdXRoLT5zZW0pOwogCi0JCWtleV9yZWYgPSBzZWFyY2hfcHJvY2Vzc19rZXlyaW5ncyh0eXBlLCBkZXNjcmlwdGlvbiwgbWF0Y2gsCi0JCQkJCQkgIHJrYS0+Y29udGV4dCk7CisJCWlmIChrZXlfdmFsaWRhdGUoY29udGV4dC0+cmVxdWVzdF9rZXlfYXV0aCkgPT0gMCkgeworCQkJcmthID0gY29udGV4dC0+cmVxdWVzdF9rZXlfYXV0aC0+cGF5bG9hZC5kYXRhOwogCi0JCWlmICghSVNfRVJSKGtleV9yZWYpKQotCQkJZ290byBmb3VuZDsKKwkJCWtleV9yZWYgPSBzZWFyY2hfcHJvY2Vzc19rZXlyaW5ncyh0eXBlLCBkZXNjcmlwdGlvbiwKKwkJCQkJCQkgIG1hdGNoLCBya2EtPmNvbnRleHQpOwogCi0JCXN3aXRjaCAoUFRSX0VSUihrZXlfcmVmKSkgewotCQljYXNlIC1FQUdBSU46IC8qIG5vIGtleSAqLwotCQkJaWYgKHJldCkKKwkJCXVwX3JlYWQoJmNvbnRleHQtPnJlcXVlc3Rfa2V5X2F1dGgtPnNlbSk7CisKKwkJCWlmICghSVNfRVJSKGtleV9yZWYpKQorCQkJCWdvdG8gZm91bmQ7CisKKwkJCXN3aXRjaCAoUFRSX0VSUihrZXlfcmVmKSkgeworCQkJY2FzZSAtRUFHQUlOOiAvKiBubyBrZXkgKi8KKwkJCQlpZiAocmV0KQorCQkJCQlicmVhazsKKwkJCWNhc2UgLUVOT0tFWTogLyogbmVnYXRpdmUga2V5ICovCisJCQkJcmV0ID0ga2V5X3JlZjsKIAkJCQlicmVhazsKLQkJY2FzZSAtRU5PS0VZOiAvKiBuZWdhdGl2ZSBrZXkgKi8KLQkJCXJldCA9IGtleV9yZWY7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVyciA9IGtleV9yZWY7Ci0JCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJyID0ga2V5X3JlZjsKKwkJCQlicmVhazsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXVwX3JlYWQoJmNvbnRleHQtPnJlcXVlc3Rfa2V5X2F1dGgtPnNlbSk7CiAJCX0KIAl9CiAKQEAgLTcxNyw3ICs3MjgsNyBAQAogCWtleXJpbmcgPSBmaW5kX2tleXJpbmdfYnlfbmFtZShuYW1lLCAwKTsKIAlpZiAoUFRSX0VSUihrZXlyaW5nKSA9PSAtRU5PS0VZKSB7CiAJCS8qIG5vdCBmb3VuZCAtIHRyeSBhbmQgY3JlYXRlIGEgbmV3IG9uZSAqLwotCQlrZXlyaW5nID0ga2V5cmluZ19hbGxvYyhuYW1lLCB0c2stPnVpZCwgdHNrLT5naWQsIDAsIE5VTEwpOworCQlrZXlyaW5nID0ga2V5cmluZ19hbGxvYyhuYW1lLCB0c2stPnVpZCwgdHNrLT5naWQsIHRzaywgMCwgTlVMTCk7CiAJCWlmIChJU19FUlIoa2V5cmluZykpIHsKIAkJCXJldCA9IFBUUl9FUlIoa2V5cmluZyk7CiAJCQlnb3RvIGVycm9yMjsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvcmVxdWVzdF9rZXkuYyBiL3NlY3VyaXR5L2tleXMvcmVxdWVzdF9rZXkuYwppbmRleCBmMDMwYTBjLi5lYWI2NmEwIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL3JlcXVlc3Rfa2V5LmMKKysrIGIvc2VjdXJpdHkva2V5cy9yZXF1ZXN0X2tleS5jCkBAIC00OCw3ICs0OCw4IEBACiAJLyogYWxsb2NhdGUgYSBuZXcgc2Vzc2lvbiBrZXlyaW5nICovCiAJc3ByaW50ZihkZXNjLCAiX3JlcS4ldSIsIGtleS0+c2VyaWFsKTsKIAotCWtleXJpbmcgPSBrZXlyaW5nX2FsbG9jKGRlc2MsIGN1cnJlbnQtPmZzdWlkLCBjdXJyZW50LT5mc2dpZCwgMSwgTlVMTCk7CisJa2V5cmluZyA9IGtleXJpbmdfYWxsb2MoZGVzYywgY3VycmVudC0+ZnN1aWQsIGN1cnJlbnQtPmZzZ2lkLAorCQkJCWN1cnJlbnQsIDEsIE5VTEwpOwogCWlmIChJU19FUlIoa2V5cmluZykpIHsKIAkJcmV0ID0gUFRSX0VSUihrZXlyaW5nKTsKIAkJZ290byBlcnJvcl9hbGxvYzsKQEAgLTEzNyw3ICsxMzgsOCBAQAogCiAJLyogY3JlYXRlIGEga2V5IGFuZCBhZGQgaXQgdG8gdGhlIHF1ZXVlICovCiAJa2V5ID0ga2V5X2FsbG9jKHR5cGUsIGRlc2NyaXB0aW9uLAotCQkJY3VycmVudC0+ZnN1aWQsIGN1cnJlbnQtPmZzZ2lkLCBLRVlfUE9TX0FMTCwgMCk7CisJCQljdXJyZW50LT5mc3VpZCwgY3VycmVudC0+ZnNnaWQsCisJCQljdXJyZW50LCBLRVlfUE9TX0FMTCwgMCk7CiAJaWYgKElTX0VSUihrZXkpKQogCQlnb3RvIGFsbG9jX2ZhaWxlZDsKIApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9yZXF1ZXN0X2tleV9hdXRoLmMgYi9zZWN1cml0eS9rZXlzL3JlcXVlc3Rfa2V5X2F1dGguYwppbmRleCBjY2U2YmE2Li5jYjk4MTdjIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL3JlcXVlc3Rfa2V5X2F1dGguYworKysgYi9zZWN1cml0eS9rZXlzL3JlcXVlc3Rfa2V5X2F1dGguYwpAQCAtMjAsNiArMjAsNyBAQAogCiBzdGF0aWMgaW50IHJlcXVlc3Rfa2V5X2F1dGhfaW5zdGFudGlhdGUoc3RydWN0IGtleSAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CiBzdGF0aWMgdm9pZCByZXF1ZXN0X2tleV9hdXRoX2Rlc2NyaWJlKGNvbnN0IHN0cnVjdCBrZXkgKiwgc3RydWN0IHNlcV9maWxlICopOworc3RhdGljIHZvaWQgcmVxdWVzdF9rZXlfYXV0aF9yZXZva2Uoc3RydWN0IGtleSAqKTsKIHN0YXRpYyB2b2lkIHJlcXVlc3Rfa2V5X2F1dGhfZGVzdHJveShzdHJ1Y3Qga2V5ICopOwogc3RhdGljIGxvbmcgcmVxdWVzdF9rZXlfYXV0aF9yZWFkKGNvbnN0IHN0cnVjdCBrZXkgKiwgY2hhciBfX3VzZXIgKiwgc2l6ZV90KTsKIApAQCAtMzEsNiArMzIsNyBAQAogCS5kZWZfZGF0YWxlbgk9IHNpemVvZihzdHJ1Y3QgcmVxdWVzdF9rZXlfYXV0aCksCiAJLmluc3RhbnRpYXRlCT0gcmVxdWVzdF9rZXlfYXV0aF9pbnN0YW50aWF0ZSwKIAkuZGVzY3JpYmUJPSByZXF1ZXN0X2tleV9hdXRoX2Rlc2NyaWJlLAorCS5yZXZva2UJCT0gcmVxdWVzdF9rZXlfYXV0aF9yZXZva2UsCiAJLmRlc3Ryb3kJPSByZXF1ZXN0X2tleV9hdXRoX2Rlc3Ryb3ksCiAJLnJlYWQJCT0gcmVxdWVzdF9rZXlfYXV0aF9yZWFkLAogfTsKQEAgLTkzLDYgKzk1LDI0IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCisgKiBoYW5kbGUgcmV2b2NhdGlvbiBvZiBhbiBhdXRob3Jpc2F0aW9uIHRva2VuIGtleQorICogLSBjYWxsZWQgd2l0aCB0aGUga2V5IHNlbSB3cml0ZS1sb2NrZWQKKyAqLworc3RhdGljIHZvaWQgcmVxdWVzdF9rZXlfYXV0aF9yZXZva2Uoc3RydWN0IGtleSAqa2V5KQoreworCXN0cnVjdCByZXF1ZXN0X2tleV9hdXRoICpya2EgPSBrZXktPnBheWxvYWQuZGF0YTsKKworCWtlbnRlcigieyVkfSIsIGtleS0+c2VyaWFsKTsKKworCWlmIChya2EtPmNvbnRleHQpIHsKKwkJcHV0X3Rhc2tfc3RydWN0KHJrYS0+Y29udGV4dCk7CisJCXJrYS0+Y29udGV4dCA9IE5VTEw7CisJfQorCit9IC8qIGVuZCByZXF1ZXN0X2tleV9hdXRoX3Jldm9rZSgpICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCiAgKiBkZXN0cm95IGFuIGluc3RhbnRpYXRpb24gYXV0aG9yaXNhdGlvbiB0b2tlbiBrZXkKICAqLwogc3RhdGljIHZvaWQgcmVxdWVzdF9rZXlfYXV0aF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKQEAgLTEwMSw2ICsxMjEsMTEgQEAKIAogCWtlbnRlcigieyVkfSIsIGtleS0+c2VyaWFsKTsKIAorCWlmIChya2EtPmNvbnRleHQpIHsKKwkJcHV0X3Rhc2tfc3RydWN0KHJrYS0+Y29udGV4dCk7CisJCXJrYS0+Y29udGV4dCA9IE5VTEw7CisJfQorCiAJa2V5X3B1dChya2EtPnRhcmdldF9rZXkpOwogCWtmcmVlKHJrYSk7CiAKQEAgLTEzMSwxNCArMTU2LDI2IEBACiAJICogYW5vdGhlciBwcm9jZXNzICovCiAJaWYgKGN1cnJlbnQtPnJlcXVlc3Rfa2V5X2F1dGgpIHsKIAkJLyogaXQgaXMgLSB1c2UgdGhhdCBpbnN0YW50aWF0aW9uIGNvbnRleHQgaGVyZSB0b28gKi8KKwkJZG93bl9yZWFkKCZjdXJyZW50LT5yZXF1ZXN0X2tleV9hdXRoLT5zZW0pOworCisJCS8qIGlmIHRoZSBhdXRoIGtleSBoYXMgYmVlbiByZXZva2VkLCB0aGVuIHRoZSBrZXkgd2UncmUKKwkJICogc2VydmljaW5nIGlzIGFscmVhZHkgaW5zdGFudGlhdGVkICovCisJCWlmICh0ZXN0X2JpdChLRVlfRkxBR19SRVZPS0VELAorCQkJICAgICAmY3VycmVudC0+cmVxdWVzdF9rZXlfYXV0aC0+ZmxhZ3MpKQorCQkJZ290byBhdXRoX2tleV9yZXZva2VkOworCiAJCWlya2EgPSBjdXJyZW50LT5yZXF1ZXN0X2tleV9hdXRoLT5wYXlsb2FkLmRhdGE7CiAJCXJrYS0+Y29udGV4dCA9IGlya2EtPmNvbnRleHQ7CiAJCXJrYS0+cGlkID0gaXJrYS0+cGlkOworCQlnZXRfdGFza19zdHJ1Y3QocmthLT5jb250ZXh0KTsKKworCQl1cF9yZWFkKCZjdXJyZW50LT5yZXF1ZXN0X2tleV9hdXRoLT5zZW0pOwogCX0KIAllbHNlIHsKIAkJLyogaXQgaXNuJ3QgLSB1c2UgdGhpcyBwcm9jZXNzIGFzIHRoZSBjb250ZXh0ICovCiAJCXJrYS0+Y29udGV4dCA9IGN1cnJlbnQ7CiAJCXJrYS0+cGlkID0gY3VycmVudC0+cGlkOworCQlnZXRfdGFza19zdHJ1Y3QocmthLT5jb250ZXh0KTsKIAl9CiAKIAlya2EtPnRhcmdldF9rZXkgPSBrZXlfZ2V0KHRhcmdldCk7CkBAIC0xNDgsNyArMTg1LDcgQEAKIAlzcHJpbnRmKGRlc2MsICIleCIsIHRhcmdldC0+c2VyaWFsKTsKIAogCWF1dGhrZXkgPSBrZXlfYWxsb2MoJmtleV90eXBlX3JlcXVlc3Rfa2V5X2F1dGgsIGRlc2MsCi0JCQkgICAgY3VycmVudC0+ZnN1aWQsIGN1cnJlbnQtPmZzZ2lkLAorCQkJICAgIGN1cnJlbnQtPmZzdWlkLCBjdXJyZW50LT5mc2dpZCwgY3VycmVudCwKIAkJCSAgICBLRVlfUE9TX1ZJRVcgfCBLRVlfUE9TX1JFQUQgfCBLRVlfUE9TX1NFQVJDSCB8CiAJCQkgICAgS0VZX1VTUl9WSUVXLCAxKTsKIAlpZiAoSVNfRVJSKGF1dGhrZXkpKSB7CkBAIC0xNjEsOSArMTk4LDE1IEBACiAJaWYgKHJldCA8IDApCiAJCWdvdG8gZXJyb3JfaW5zdDsKIAotCWtsZWF2ZSgiID0geyVkfSkiLCBhdXRoa2V5LT5zZXJpYWwpOworCWtsZWF2ZSgiID0geyVkfSIsIGF1dGhrZXktPnNlcmlhbCk7CiAJcmV0dXJuIGF1dGhrZXk7CiAKK2F1dGhfa2V5X3Jldm9rZWQ6CisJdXBfcmVhZCgmY3VycmVudC0+cmVxdWVzdF9rZXlfYXV0aC0+c2VtKTsKKwlrZnJlZShya2EpOworCWtsZWF2ZSgiPSAtRUtFWVJFVk9LRUQiKTsKKwlyZXR1cm4gRVJSX1BUUigtRUtFWVJFVk9LRUQpOworCiBlcnJvcl9pbnN0OgogCWtleV9yZXZva2UoYXV0aGtleSk7CiAJa2V5X3B1dChhdXRoa2V5KTsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NlbGludXgvaG9va3MuYyBiL3NlY3VyaXR5L3NlbGludXgvaG9va3MuYwppbmRleCA1NGFkYzlkLi43OWMxNmUzIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMKKysrIGIvc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jCkBAIC0xOTAzLDEzICsxOTAzLDEzIEBACiAJcmV0dXJuIHN1cGVyYmxvY2tfaGFzX3Blcm0oY3VycmVudCwgc2IsIEZJTEVTWVNURU1fX01PVU5ULCAmYWQpOwogfQogCi1zdGF0aWMgaW50IHNlbGludXhfc2Jfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCitzdGF0aWMgaW50IHNlbGludXhfc2Jfc3RhdGZzKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIHsKIAlzdHJ1Y3QgYXZjX2F1ZGl0X2RhdGEgYWQ7CiAKIAlBVkNfQVVESVRfREFUQV9JTklUKCZhZCxGUyk7Ci0JYWQudS5mcy5kZW50cnkgPSBzYi0+c19yb290OwotCXJldHVybiBzdXBlcmJsb2NrX2hhc19wZXJtKGN1cnJlbnQsIHNiLCBGSUxFU1lTVEVNX19HRVRBVFRSLCAmYWQpOworCWFkLnUuZnMuZGVudHJ5ID0gZGVudHJ5LT5kX3NiLT5zX3Jvb3Q7CisJcmV0dXJuIHN1cGVyYmxvY2tfaGFzX3Blcm0oY3VycmVudCwgZGVudHJ5LT5kX3NiLCBGSUxFU1lTVEVNX19HRVRBVFRSLCAmYWQpOwogfQogCiBzdGF0aWMgaW50IHNlbGludXhfbW91bnQoY2hhciAqIGRldl9uYW1lLApAQCAtMjY0NSw2ICsyNjQ1LDExIEBACiAJcmV0dXJuIHRhc2tfaGFzX3Blcm0oY3VycmVudCxwLCBQUk9DRVNTX19TRVRTQ0hFRCk7CiB9CiAKK3N0YXRpYyBpbnQgc2VsaW51eF90YXNrX3NldGlvcHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBpb3ByaW8pCit7CisJcmV0dXJuIHRhc2tfaGFzX3Blcm0oY3VycmVudCwgcCwgUFJPQ0VTU19fU0VUU0NIRUQpOworfQorCiBzdGF0aWMgaW50IHNlbGludXhfdGFza19zZXRybGltaXQodW5zaWduZWQgaW50IHJlc291cmNlLCBzdHJ1Y3QgcmxpbWl0ICpuZXdfcmxpbSkKIHsKIAlzdHJ1Y3QgcmxpbWl0ICpvbGRfcmxpbSA9IGN1cnJlbnQtPnNpZ25hbC0+cmxpbSArIHJlc291cmNlOwpAQCAtMjY3NCw2ICsyNjc5LDExIEBACiAJcmV0dXJuIHRhc2tfaGFzX3Blcm0oY3VycmVudCwgcCwgUFJPQ0VTU19fR0VUU0NIRUQpOwogfQogCitzdGF0aWMgaW50IHNlbGludXhfdGFza19tb3ZlbWVtb3J5KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKK3sKKwlyZXR1cm4gdGFza19oYXNfcGVybShjdXJyZW50LCBwLCBQUk9DRVNTX19TRVRTQ0hFRCk7Cit9CisKIHN0YXRpYyBpbnQgc2VsaW51eF90YXNrX2tpbGwoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3Qgc2lnaW5mbyAqaW5mbywgaW50IHNpZykKIHsKIAl1MzIgcGVybTsKQEAgLTQyNTIsNiArNDI2Miw1NyBAQAogCXJldHVybiBzaXplOwogfQogCisjaWZkZWYgQ09ORklHX0tFWVMKKworc3RhdGljIGludCBzZWxpbnV4X2tleV9hbGxvYyhzdHJ1Y3Qga2V5ICprLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKK3sKKwlzdHJ1Y3QgdGFza19zZWN1cml0eV9zdHJ1Y3QgKnRzZWMgPSB0c2stPnNlY3VyaXR5OworCXN0cnVjdCBrZXlfc2VjdXJpdHlfc3RydWN0ICprc2VjOworCisJa3NlYyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBrZXlfc2VjdXJpdHlfc3RydWN0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFrc2VjKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWtzZWMtPm9iaiA9IGs7CisJa3NlYy0+c2lkID0gdHNlYy0+c2lkOworCWstPnNlY3VyaXR5ID0ga3NlYzsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzZWxpbnV4X2tleV9mcmVlKHN0cnVjdCBrZXkgKmspCit7CisJc3RydWN0IGtleV9zZWN1cml0eV9zdHJ1Y3QgKmtzZWMgPSBrLT5zZWN1cml0eTsKKworCWstPnNlY3VyaXR5ID0gTlVMTDsKKwlrZnJlZShrc2VjKTsKK30KKworc3RhdGljIGludCBzZWxpbnV4X2tleV9wZXJtaXNzaW9uKGtleV9yZWZfdCBrZXlfcmVmLAorCQkJICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqY3R4LAorCQkJICAgIGtleV9wZXJtX3QgcGVybSkKK3sKKwlzdHJ1Y3Qga2V5ICprZXk7CisJc3RydWN0IHRhc2tfc2VjdXJpdHlfc3RydWN0ICp0c2VjOworCXN0cnVjdCBrZXlfc2VjdXJpdHlfc3RydWN0ICprc2VjOworCisJa2V5ID0ga2V5X3JlZl90b19wdHIoa2V5X3JlZik7CisKKwl0c2VjID0gY3R4LT5zZWN1cml0eTsKKwlrc2VjID0ga2V5LT5zZWN1cml0eTsKKworCS8qIGlmIG5vIHNwZWNpZmljIHBlcm1pc3Npb25zIGFyZSByZXF1ZXN0ZWQsIHdlIHNraXAgdGhlCisJICAgcGVybWlzc2lvbiBjaGVjay4gTm8gc2VyaW91cywgYWRkaXRpb25hbCBjb3ZlcnQgY2hhbm5lbHMKKwkgICBhcHBlYXIgdG8gYmUgY3JlYXRlZC4gKi8KKwlpZiAocGVybSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBhdmNfaGFzX3Blcm0odHNlYy0+c2lkLCBrc2VjLT5zaWQsCisJCQkgICAgU0VDQ0xBU1NfS0VZLCBwZXJtLCBOVUxMKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfb3BlcmF0aW9ucyBzZWxpbnV4X29wcyA9IHsKIAkucHRyYWNlID0JCQlzZWxpbnV4X3B0cmFjZSwKIAkuY2FwZ2V0ID0JCQlzZWxpbnV4X2NhcGdldCwKQEAgLTQzMzIsOSArNDM5MywxMSBAQAogCS50YXNrX2dldHNpZCA9CQkgICAgICAgIHNlbGludXhfdGFza19nZXRzaWQsCiAJLnRhc2tfc2V0Z3JvdXBzID0JCXNlbGludXhfdGFza19zZXRncm91cHMsCiAJLnRhc2tfc2V0bmljZSA9CQkJc2VsaW51eF90YXNrX3NldG5pY2UsCisJLnRhc2tfc2V0aW9wcmlvID0JCXNlbGludXhfdGFza19zZXRpb3ByaW8sCiAJLnRhc2tfc2V0cmxpbWl0ID0JCXNlbGludXhfdGFza19zZXRybGltaXQsCiAJLnRhc2tfc2V0c2NoZWR1bGVyID0JCXNlbGludXhfdGFza19zZXRzY2hlZHVsZXIsCiAJLnRhc2tfZ2V0c2NoZWR1bGVyID0JCXNlbGludXhfdGFza19nZXRzY2hlZHVsZXIsCisJLnRhc2tfbW92ZW1lbW9yeSA9CQlzZWxpbnV4X3Rhc2tfbW92ZW1lbW9yeSwKIAkudGFza19raWxsID0JCQlzZWxpbnV4X3Rhc2tfa2lsbCwKIAkudGFza193YWl0ID0JCQlzZWxpbnV4X3Rhc2tfd2FpdCwKIAkudGFza19wcmN0bCA9CQkJc2VsaW51eF90YXNrX3ByY3RsLApAQCAtNDQwNiw2ICs0NDY5LDEyIEBACiAJLnhmcm1fc3RhdGVfZGVsZXRlX3NlY3VyaXR5ID0Jc2VsaW51eF94ZnJtX3N0YXRlX2RlbGV0ZSwKIAkueGZybV9wb2xpY3lfbG9va3VwID0gCQlzZWxpbnV4X3hmcm1fcG9saWN5X2xvb2t1cCwKICNlbmRpZgorCisjaWZkZWYgQ09ORklHX0tFWVMKKwkua2V5X2FsbG9jID0gICAgICAgICAgICAgICAgICAgIHNlbGludXhfa2V5X2FsbG9jLAorCS5rZXlfZnJlZSA9ICAgICAgICAgICAgICAgICAgICAgc2VsaW51eF9rZXlfZnJlZSwKKwkua2V5X3Blcm1pc3Npb24gPSAgICAgICAgICAgICAgIHNlbGludXhfa2V5X3Blcm1pc3Npb24sCisjZW5kaWYKIH07CiAKIHN0YXRpYyBfX2luaXQgaW50IHNlbGludXhfaW5pdCh2b2lkKQpAQCAtNDQ0MSw2ICs0NTEwLDEzIEBACiAJfSBlbHNlIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiU0VMaW51eDogIFN0YXJ0aW5nIGluIHBlcm1pc3NpdmUgbW9kZVxuIik7CiAJfQorCisjaWZkZWYgQ09ORklHX0tFWVMKKwkvKiBBZGQgc2VjdXJpdHkgaW5mb3JtYXRpb24gdG8gaW5pdGlhbCBrZXlyaW5ncyAqLworCXNlY3VyaXR5X2tleV9hbGxvYygmcm9vdF91c2VyX2tleXJpbmcsIGN1cnJlbnQpOworCXNlY3VyaXR5X2tleV9hbGxvYygmcm9vdF9zZXNzaW9uX2tleXJpbmcsIGN1cnJlbnQpOworI2VuZGlmCisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL2F2X3Blcm1fdG9fc3RyaW5nLmggYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybV90b19zdHJpbmcuaAppbmRleCA3MGVlNjVhLi5iYzAyMGJkIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybV90b19zdHJpbmcuaAorKysgYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybV90b19zdHJpbmcuaApAQCAtMjQyLDMgKzI0Miw5IEBACiAgICBTXyhTRUNDTEFTU19QQUNLRVQsIFBBQ0tFVF9fU0VORCwgInNlbmQiKQogICAgU18oU0VDQ0xBU1NfUEFDS0VULCBQQUNLRVRfX1JFQ1YsICJyZWN2IikKICAgIFNfKFNFQ0NMQVNTX1BBQ0tFVCwgUEFDS0VUX19SRUxBQkVMVE8sICJyZWxhYmVsdG8iKQorICAgU18oU0VDQ0xBU1NfS0VZLCBLRVlfX1ZJRVcsICJ2aWV3IikKKyAgIFNfKFNFQ0NMQVNTX0tFWSwgS0VZX19SRUFELCAicmVhZCIpCisgICBTXyhTRUNDTEFTU19LRVksIEtFWV9fV1JJVEUsICJ3cml0ZSIpCisgICBTXyhTRUNDTEFTU19LRVksIEtFWV9fU0VBUkNILCAic2VhcmNoIikKKyAgIFNfKFNFQ0NMQVNTX0tFWSwgS0VZX19MSU5LLCAibGluayIpCisgICBTXyhTRUNDTEFTU19LRVksIEtFWV9fU0VUQVRUUiwgInNldGF0dHIiKQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL2F2X3Blcm1pc3Npb25zLmggYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybWlzc2lvbnMuaAppbmRleCAxZDljZjNkLi4xMjA1MjI3IDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybWlzc2lvbnMuaAorKysgYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvYXZfcGVybWlzc2lvbnMuaApAQCAtOTU5LDMgKzk1OSwxMSBAQAogI2RlZmluZSBQQUNLRVRfX1NFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxVUwKICNkZWZpbmUgUEFDS0VUX19SRUNWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMlVMCiAjZGVmaW5lIFBBQ0tFVF9fUkVMQUJFTFRPICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDRVTAorCisjZGVmaW5lIEtFWV9fVklFVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDFVTAorI2RlZmluZSBLRVlfX1JFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyVUwKKyNkZWZpbmUgS0VZX19XUklURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNFVMCisjZGVmaW5lIEtFWV9fU0VBUkNIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDhVTAorI2RlZmluZSBLRVlfX0xJTksgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwVUwKKyNkZWZpbmUgS0VZX19TRVRBVFRSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMFVMCisKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9jbGFzc190b19zdHJpbmcuaCBiL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9jbGFzc190b19zdHJpbmcuaAppbmRleCAzYWVjNzVmLi4yNDMwM2I2IDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvY2xhc3NfdG9fc3RyaW5nLmgKKysrIGIvc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL2NsYXNzX3RvX3N0cmluZy5oCkBAIC02MCwzICs2MCw0IEBACiAgICAgU18oIm5ldGxpbmtfa29iamVjdF91ZXZlbnRfc29ja2V0IikKICAgICBTXygiYXBwbGV0YWxrX3NvY2tldCIpCiAgICAgU18oInBhY2tldCIpCisgICAgU18oImtleSIpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvZmxhc2suaCBiL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9mbGFzay5oCmluZGV4IGEwZWI5ZTIuLjk1ODg3YWUgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9mbGFzay5oCisrKyBiL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9mbGFzay5oCkBAIC02Miw2ICs2Miw3IEBACiAjZGVmaW5lIFNFQ0NMQVNTX05FVExJTktfS09CSkVDVF9VRVZFTlRfU09DS0VUICAgICAgICAgICA1NQogI2RlZmluZSBTRUNDTEFTU19BUFBMRVRBTEtfU09DS0VUICAgICAgICAgICAgICAgICAgICAgICAgNTYKICNkZWZpbmUgU0VDQ0xBU1NfUEFDS0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3CisjZGVmaW5lIFNFQ0NMQVNTX0tFWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OAogCiAvKgogICogU2VjdXJpdHkgaWRlbnRpZmllciBpbmRpY2VzIGZvciBpbml0aWFsIGVudGl0aWVzCmRpZmYgLS1naXQgYS9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvb2Jqc2VjLmggYi9zZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvb2Jqc2VjLmgKaW5kZXggNTRjMDMwNy4uOGY1NTQ3YSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc2VsaW51eC9pbmNsdWRlL29ianNlYy5oCisrKyBiL3NlY3VyaXR5L3NlbGludXgvaW5jbHVkZS9vYmpzZWMuaApAQCAtOTksNiArOTksMTEgQEAKIAl1MzIgcGVlcl9zaWQ7CQkJLyogU0lEIG9mIHBlZXIgKi8KIH07CiAKK3N0cnVjdCBrZXlfc2VjdXJpdHlfc3RydWN0IHsKKwlzdHJ1Y3Qga2V5ICpvYmo7IC8qIGJhY2sgcG9pbnRlciAqLworCXUzMiBzaWQ7ICAgICAgICAgLyogU0lEIG9mIGtleSAqLworfTsKKwogZXh0ZXJuIHVuc2lnbmVkIGludCBzZWxpbnV4X2NoZWNrcmVxcHJvdDsKIAogI2VuZGlmIC8qIF9TRUxJTlVYX09CSlNFQ19IXyAqLwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9zZWxpbnV4ZnMuYyBiL3NlY3VyaXR5L3NlbGludXgvc2VsaW51eGZzLmMKaW5kZXggMmU3M2QzMi4uNzAyOWJiYyAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc2VsaW51eC9zZWxpbnV4ZnMuYworKysgYi9zZWN1cml0eS9zZWxpbnV4L3NlbGludXhmcy5jCkBAIC0xMzQ1LDEwICsxMzQ1LDExIEBACiAJZ290byBvdXQ7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNlbF9nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCi0JCQkJICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgc2VsX2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKKwkJICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSwKKwkJICAgICAgc3RydWN0IHZmc21vdW50ICptbnQpCiB7Ci0JcmV0dXJuIGdldF9zYl9zaW5nbGUoZnNfdHlwZSwgZmxhZ3MsIGRhdGEsIHNlbF9maWxsX3N1cGVyKTsKKwlyZXR1cm4gZ2V0X3NiX3NpbmdsZShmc190eXBlLCBmbGFncywgZGF0YSwgc2VsX2ZpbGxfc3VwZXIsIG1udCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBzZWxfZnNfdHlwZSA9IHsKZGlmZiAtLWdpdCBhL3NvdW5kL0tjb25maWcgYi9zb3VuZC9LY29uZmlnCmluZGV4IGI2NWVlNDcuLmUwZDc5MWEgMTAwNjQ0Ci0tLSBhL3NvdW5kL0tjb25maWcKKysrIGIvc291bmQvS2NvbmZpZwpAQCAtNTgsNiArNTgsOCBAQAogCiBzb3VyY2UgInNvdW5kL3BwYy9LY29uZmlnIgogCitzb3VyY2UgInNvdW5kL2FvYS9LY29uZmlnIgorCiBzb3VyY2UgInNvdW5kL2FybS9LY29uZmlnIgogCiBzb3VyY2UgInNvdW5kL21pcHMvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL3NvdW5kL01ha2VmaWxlIGIvc291bmQvTWFrZWZpbGUKaW5kZXggZjM1MmJiMi4uYTY4MmVhMyAxMDA2NDQKLS0tIGEvc291bmQvTWFrZWZpbGUKKysrIGIvc291bmQvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBACiBvYmotJChDT05GSUdfU09VTkQpICs9IHNvdW5kY29yZS5vCiBvYmotJChDT05GSUdfU09VTkRfUFJJTUUpICs9IG9zcy8KIG9iai0kKENPTkZJR19ETUFTT1VORCkgKz0gb3NzLwotb2JqLSQoQ09ORklHX1NORCkgKz0gY29yZS8gaTJjLyBkcml2ZXJzLyBpc2EvIHBjaS8gcHBjLyBhcm0vIHN5bnRoLyB1c2IvIHNwYXJjLyBwYXJpc2MvIHBjbWNpYS8gbWlwcy8KK29iai0kKENPTkZJR19TTkQpICs9IGNvcmUvIGkyYy8gZHJpdmVycy8gaXNhLyBwY2kvIHBwYy8gYXJtLyBzeW50aC8gdXNiLyBzcGFyYy8gcGFyaXNjLyBwY21jaWEvIG1pcHMvIGFvYS8KIAogaWZlcSAoJChDT05GSUdfU05EKSx5KQogICBvYmoteSArPSBsYXN0Lm8KZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9LY29uZmlnIGIvc291bmQvYW9hL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg1MTk0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9LY29uZmlnCkBAIC0wLDAgKzEsMTcgQEAKK21lbnUgIkFwcGxlIE9uYm9hcmQgQXVkaW8gZHJpdmVyIgorCWRlcGVuZHMgb24gU05EIT1uICYmIFBQQworCitjb25maWcgU05EX0FPQQorCXRyaXN0YXRlICJBcHBsZSBPbmJvYXJkIEF1ZGlvIGRyaXZlciIKKwlkZXBlbmRzIG9uIFNPVU5EICYmIFNORF9QQ00KKwktLS1oZWxwLS0tCisJVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbmV3IGRyaXZlciBmb3IgdGhlIHZhcmlvdXMKKwlBcHBsZSBPbmJvYXJkIEF1ZGlvIGNvbXBvbmVudHMuCisKK3NvdXJjZSAic291bmQvYW9hL2ZhYnJpY3MvS2NvbmZpZyIKKworc291cmNlICJzb3VuZC9hb2EvY29kZWNzL0tjb25maWciCisKK3NvdXJjZSAic291bmQvYW9hL3NvdW5kYnVzL0tjb25maWciCisKK2VuZG1lbnUKZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9NYWtlZmlsZSBiL3NvdW5kL2FvYS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGRlM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL01ha2VmaWxlCkBAIC0wLDAgKzEsNCBAQAorb2JqLSQoQ09ORklHX1NORF9BT0EpICs9IGNvcmUvCitvYmotJChDT05GSUdfU05EX0FPQSkgKz0gY29kZWNzLworb2JqLSQoQ09ORklHX1NORF9BT0EpICs9IGZhYnJpY3MvCitvYmotJChDT05GSUdfU05EX0FPQV9TT1VOREJVUykgKz0gc291bmRidXMvCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvYW9hLWdwaW8uaCBiL3NvdW5kL2FvYS9hb2EtZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNjFmMzEKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvYW9hLWdwaW8uaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQXBwbGUgT25ib2FyZCBBdWRpbyBHUElPIGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisKKyNpZm5kZWYgX19BT0FfR1BJT19ICisjZGVmaW5lIF9fQU9BX0dQSU9fSAorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KKwordHlwZWRlZiB2b2lkICgqbm90aWZ5X2Z1bmNfdCkodm9pZCAqZGF0YSk7CisKK2VudW0gbm90aWZ5X3R5cGUgeworCUFPQV9OT1RJRllfSEVBRFBIT05FLAorCUFPQV9OT1RJRllfTElORV9JTiwKKwlBT0FfTk9USUZZX0xJTkVfT1VULAorfTsKKworc3RydWN0IGdwaW9fcnVudGltZTsKK3N0cnVjdCBncGlvX21ldGhvZHMgeworCS8qIGZvciBpbml0aWFsaXNhdGlvbi9kZS1pbml0aWFsaXNhdGlvbiBvZiB0aGUgR1BJTyBsYXllciAqLworCXZvaWQgKCppbml0KShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCk7CisJdm9pZCAoKmV4aXQpKHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0KTsKKworCS8qIHR1cm4gb2ZmIGhlYWRwaG9uZSwgc3BlYWtlcnMsIGxpbmVvdXQgKi8KKwl2b2lkICgqYWxsX2FtcHNfb2ZmKShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCk7CisJLyogdHVybiBoZWFkcGhvbmUsIHNwZWFrZXJzLCBsaW5lb3V0IGJhY2sgdG8gcHJldmlvdXMgc2V0dGluZyAqLworCXZvaWQgKCphbGxfYW1wc19yZXN0b3JlKShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCk7CisKKwl2b2lkICgqc2V0X2hlYWRwaG9uZSkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsIGludCBvbik7CisJdm9pZCAoKnNldF9zcGVha2Vycykoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsIGludCBvbik7CisJdm9pZCAoKnNldF9saW5lb3V0KShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCwgaW50IG9uKTsKKworCWludCAoKmdldF9oZWFkcGhvbmUpKHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0KTsKKwlpbnQgKCpnZXRfc3BlYWtlcnMpKHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0KTsKKwlpbnQgKCpnZXRfbGluZW91dCkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpOworCisJdm9pZCAoKnNldF9od19yZXNldCkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsIGludCBvbik7CisKKwkvKiB1c2UgdGhpcyB0byBiZSBub3RpZmllZCBvZiBhbnkgZXZlbnRzLiBUaGUgbm90aWZpY2F0aW9uCisJICogZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBkYXRhLCBhbmQgaXMgY2FsbGVkIGluIHByb2Nlc3MKKwkgKiBjb250ZXh0IGJ5IHRoZSB1c2Ugb2Ygc2NoZWR1bGVfd29yay4KKwkgKiBUaGUgaW50ZXJmYWNlIGZvciBpdCBpcyB0aGF0IHNldHRpbmcgYSBmdW5jdGlvbiB0byBOVUxMCisJICogcmVtb3ZlcyBpdCwgYW5kIHRoZXkgcmV0dXJuIDAgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkZWQsCisJICogYW5kIC1FQlVTWSBpZiB0aGUgbm90aWZpY2F0aW9uIGlzIGFscmVhZHkgYXNzaWduZWQgYnkKKwkgKiBzb21lb25lIGVsc2UuICovCisJaW50ICgqc2V0X25vdGlmeSkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsCisJCQkgIGVudW0gbm90aWZ5X3R5cGUgdHlwZSwKKwkJCSAgbm90aWZ5X2Z1bmNfdCBub3RpZnksCisJCQkgIHZvaWQgKmRhdGEpOworCS8qIHJldHVybnMgMCBpZiBub3QgcGx1Z2dlZCBpbiwgMSBpZiBwbHVnZ2VkIGluCisJICogb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlICovCisJaW50ICgqZ2V0X2RldGVjdCkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsCisJCQkgIGVudW0gbm90aWZ5X3R5cGUgdHlwZSk7Cit9OworCitzdHJ1Y3QgZ3Bpb19ub3RpZmljYXRpb24geworCW5vdGlmeV9mdW5jX3Qgbm90aWZ5OworCXZvaWQgKmRhdGE7CisJdm9pZCAqZ3Bpb19wcml2YXRlOworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOworCXN0cnVjdCBtdXRleCBtdXRleDsKK307CisKK3N0cnVjdCBncGlvX3J1bnRpbWUgeworCS8qIHRvIGJlIGFzc2lnbmVkIGJ5IGZhYnJpYyAqLworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKKwkvKiBzaW5jZSBldmVyeW9uZSBuZWVkcyB0aGlzIHBvaW50ZXIgYW55d2F5Li4uICovCisJc3RydWN0IGdwaW9fbWV0aG9kcyAqbWV0aG9kczsKKwkvKiB0byBiZSB1c2VkIGJ5IHRoZSBncGlvIGltcGxlbWVudGF0aW9uICovCisJaW50IGltcGxlbWVudGF0aW9uX3ByaXZhdGU7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uIGhlYWRwaG9uZV9ub3RpZnk7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uIGxpbmVfaW5fbm90aWZ5OworCXN0cnVjdCBncGlvX25vdGlmaWNhdGlvbiBsaW5lX291dF9ub3RpZnk7Cit9OworCisjZW5kaWYgLyogX19BT0FfR1BJT19IICovCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvYW9hLmggYi9zb3VuZC9hb2EvYW9hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc4ZWYxZQotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9hb2EuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIEFwcGxlIE9uYm9hcmQgQXVkaW8gZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorICoKKyAqIEdQTCB2MiwgY2FuIGJlIGZvdW5kIGluIENPUFlJTkcuCisgKi8KKworI2lmbmRlZiBfX0FPQV9ICisjZGVmaW5lIF9fQU9BX0gKKyNpbmNsdWRlIDxhc20vcHJvbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorLyogU28gYXBwYXJlbnRseSB0aGVyZSdzIGEgcmVhc29uIGZvciByZXF1aXJpbmcgZHJpdmVyLmggdG8gYmUgaW5jbHVkZWQgZmlyc3QhICovCisjaW5jbHVkZSA8c291bmQvZHJpdmVyLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorI2luY2x1ZGUgPHNvdW5kL2NvbnRyb2wuaD4KKyNpbmNsdWRlICJhb2EtZ3Bpby5oIgorI2luY2x1ZGUgInNvdW5kYnVzL3NvdW5kYnVzLmgiCisKKyNkZWZpbmUgTUFYX0NPREVDX05BTUVfTEVOCTMyCisKK3N0cnVjdCBhb2FfY29kZWMgeworCWNoYXIJbmFtZVtNQVhfQ09ERUNfTkFNRV9MRU5dOworCisJc3RydWN0IG1vZHVsZSAqb3duZXI7CisKKwkvKiBjYWxsZWQgd2hlbiB0aGUgZmFicmljIHdhbnRzIHRvIGluaXQgdGhpcyBjb2RlYy4KKwkgKiBEbyBhbHNhIGNhcmQgbWFuaXB1bGF0aW9ucyBmcm9tIGhlcmUuICovCisJaW50ICgqaW5pdCkoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpOworCisJLyogY2FsbGVkIHdoZW4gdGhlIGZhYnJpYyBpcyBkb25lIHdpdGggdGhlIGNvZGVjLgorCSAqIFRoZSBhbHNhIGNhcmQgd2lsbCBiZSBjbGVhbmVkIHVwIHNvIGRvbid0IGJvdGhlci4gKi8KKwl2b2lkICgqZXhpdCkoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpOworCisJLyogTWF5IGJlIE5VTEwsIGJ1dCBjYW4gYmUgdXNlZCBieSB0aGUgZmFicmljLgorCSAqIFJlZmNvdW50aW5nIGlzIHRoZSBjb2RlYyBkcml2ZXIncyByZXNwb25zaWJpbGl0eSAqLworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKKworCS8qIGFzc2lnbmVkIGJ5IGZhYnJpYyBiZWZvcmUgaW5pdCgpIGlzIGNhbGxlZCwgcG9pbnRzCisJICogdG8gdGhlIHNvdW5kYnVzIGRldmljZS4gQ2Fubm90IGJlIE5VTEwuICovCisJc3RydWN0IHNvdW5kYnVzX2RldiAqc291bmRidXNfZGV2OworCisJLyogYXNzaWduZWQgYnkgdGhlIGZhYnJpYyBiZWZvcmUgaW5pdCgpIGlzIGNhbGxlZCwgcG9pbnRzCisJICogdG8gdGhlIGZhYnJpYydzIGdwaW8gcnVudGltZSByZWNvcmQgZm9yIHRoZSByZWxldmFudAorCSAqIGRldmljZS4gKi8KKwlzdHJ1Y3QgZ3Bpb19ydW50aW1lICpncGlvOworCisJLyogYXNzaWduZWQgYnkgdGhlIGZhYnJpYyBiZWZvcmUgaW5pdCgpIGlzIGNhbGxlZCwgY29udGFpbnMKKwkgKiBhIGNvZGVjIHNwZWNpZmljIGJpdG1hc2sgb2Ygd2hhdCBvdXRwdXRzIGFuZCBpbnB1dHMgYXJlCisJICogYWN0dWFsbHkgY29ubmVjdGVkICovCisJdTMyIGNvbm5lY3RlZDsKKworCS8qIGRhdGEgdGhlIGZhYnJpYyBjYW4gYXNzb2NpYXRlIHdpdGggdGhpcyBzdHJ1Y3R1cmUgKi8KKwl2b2lkICpmYWJyaWNfZGF0YTsKKworCS8qIHByaXZhdGUhICovCisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBhb2FfZmFicmljICpmYWJyaWM7Cit9OworCisvKiByZXR1cm4gMCBvbiBzdWNjZXNzICovCitleHRlcm4gaW50Cithb2FfY29kZWNfcmVnaXN0ZXIoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpOworZXh0ZXJuIHZvaWQKK2FvYV9jb2RlY191bnJlZ2lzdGVyKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKTsKKworI2RlZmluZSBNQVhfTEFZT1VUX05BTUVfTEVOCTMyCisKK3N0cnVjdCBhb2FfZmFicmljIHsKKwljaGFyCW5hbWVbTUFYX0xBWU9VVF9OQU1FX0xFTl07CisKKwlzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKworCS8qIG9uY2UgY29kZWNzIHJlZ2lzdGVyLCB0aGV5IGFyZSBwYXNzZWQgaGVyZSBhZnRlci4KKwkgKiBUaGV5IGFyZSBvZiBjb3Vyc2Ugbm90IGluaXRpYWxpc2VkLCBzaW5jZSB0aGUKKwkgKiBmYWJyaWMgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpc2luZyBzb21lIGZpZWxkcworCSAqIGluIHRoZSBjb2RlYyBzdHJ1Y3R1cmUhICovCisJaW50ICgqZm91bmRfY29kZWMpKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKTsKKwkvKiBjYWxsZWQgZm9yIGVhY2ggY29kZWMgd2hlbiBpdCBpcyByZW1vdmVkLAorCSAqIGFsc28gaW4gdGhlIGNhc2UgdGhhdCBhb2FfZmFicmljX3VucmVnaXN0ZXIKKwkgKiBpcyBjYWxsZWQgYW5kIGFsbCBjb2RlY3MgYXJlIHJlbW92ZWQKKwkgKiBmcm9tIHRoaXMgZmFicmljLgorCSAqIEFsc28gY2FsbGVkIGlmIGZvdW5kX2NvZGVjIHJldHVybmVkIDAgYnV0CisJICogdGhlIGNvZGVjIGNvdWxkbid0IGluaXRpYWxpc2UuICovCisJdm9pZCAoKnJlbW92ZV9jb2RlYykoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpOworCS8qIElmIGZvdW5kX2NvZGVjIHJldHVybmVkIDAsIGFuZCB0aGUgY29kZWMKKwkgKiBjb3VsZCBiZSBpbml0aWFsaXNlZCwgdGhpcyBpcyBjYWxsZWQuICovCisJdm9pZCAoKmF0dGFjaGVkX2NvZGVjKShzdHJ1Y3QgYW9hX2NvZGVjICpjb2RlYyk7Cit9OworCisvKiByZXR1cm4gMCBvbiBzdWNjZXNzLCAtRUVYSVNUIGlmIGFub3RoZXIgZmFicmljIGlzCisgKiByZWdpc3RlcmVkLCAtRUFMUkVBRFkgaWYgdGhlIHNhbWUgZmFicmljIGlzIHJlZ2lzdGVyZWQuCisgKiBQYXNzaW5nIE5VTEwgY2FuIGJlIHVzZWQgdG8gdGVzdCBmb3IgdGhlIHByZXNlbmNlCisgKiBvZiBhbm90aGVyIGZhYnJpYywgaWYgLUVBTFJFQURZIGlzIHJldHVybmVkIHRoZXJlIGlzCisgKiBubyBvdGhlciBmYWJyaWMgcHJlc2VudC4KKyAqIEluIHRoZSBjYXNlIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgLUVBTFJFQURZCisgKiBhbmQgdGhlIGZhYnJpYyBwYXNzZWQgaXMgbm90IE5VTEwsIGFsbCBjb2RlY3MKKyAqIHRoYXQgYXJlIG5vdCBhc3NpZ25lZCB5ZXQgYXJlIHBhc3NlZCB0byB0aGUgZmFicmljCisgKiBhZ2FpbiBmb3IgcmVjb25zaWRlcmF0aW9uLiAqLworZXh0ZXJuIGludAorYW9hX2ZhYnJpY19yZWdpc3RlcihzdHJ1Y3QgYW9hX2ZhYnJpYyAqZmFicmljKTsKKworLyogaXQgaXMgdml0YWwgdG8gY2FsbCB0aGlzIHdoZW4gdGhlIGZhYnJpYyBleGl0cyEKKyAqIFdoZW4gY2FsbGluZywgdGhlIHJlbW92ZV9jb2RlYyB3aWxsIGJlIGNhbGxlZAorICogZm9yIGFsbCBjb2RlY3MsIHVubGVzcyBpdCBpcyBOVUxMLiAqLworZXh0ZXJuIHZvaWQKK2FvYV9mYWJyaWNfdW5yZWdpc3RlcihzdHJ1Y3QgYW9hX2ZhYnJpYyAqZmFicmljKTsKKworLyogaWYgZm9yIHNvbWUgcmVhc29uIHlvdSB3YW50IHRvIGdldCByaWQgb2YgYSBjb2RlYworICogYmVmb3JlIHRoZSBmYWJyaWMgaXMgcmVtb3ZlZCwgdXNlIHRoaXMuCisgKiBOb3RlIHRoYXQgcmVtb3ZlX2NvZGVjIGlzIGNhbGxlZCBmb3IgaXQhICovCitleHRlcm4gdm9pZAorYW9hX2ZhYnJpY191bmxpbmtfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpOworCisvKiBhbHNhIGhlbHAgbWV0aG9kcyAqLworc3RydWN0IGFvYV9jYXJkIHsKKwlzdHJ1Y3Qgc25kX2NhcmQgKmFsc2FfY2FyZDsKK307CisgICAgICAgIAorZXh0ZXJuIGludCBhb2Ffc25kX2RldmljZV9uZXcoc25kX2RldmljZV90eXBlX3QgdHlwZSwKKwl2b2lkICogZGV2aWNlX2RhdGEsIHN0cnVjdCBzbmRfZGV2aWNlX29wcyAqIG9wcyk7CitleHRlcm4gc3RydWN0IHNuZF9jYXJkICphb2FfZ2V0X2NhcmQodm9pZCk7CitleHRlcm4gaW50IGFvYV9zbmRfY3RsX2FkZChzdHJ1Y3Qgc25kX2tjb250cm9sKiBjb250cm9sKTsKKworLyogR1BJTyBzdHVmZiAqLworZXh0ZXJuIHN0cnVjdCBncGlvX21ldGhvZHMgKnBtZl9ncGlvX21ldGhvZHM7CitleHRlcm4gc3RydWN0IGdwaW9fbWV0aG9kcyAqZnRyX2dwaW9fbWV0aG9kczsKKy8qIGV4dGVybiBzdHJ1Y3QgZ3Bpb19tZXRob2RzICptYXBfZ3Bpb19tZXRob2RzOyAqLworCisjZW5kaWYgLyogX19BT0FfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvZGVjcy9LY29uZmlnIGIvc291bmQvYW9hL2NvZGVjcy9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwY2Y1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29kZWNzL0tjb25maWcKQEAgLTAsMCArMSwzMiBAQAorY29uZmlnIFNORF9BT0FfT05ZWAorCXRyaXN0YXRlICJzdXBwb3J0IE9ueXggY2hpcCIKKwlkZXBlbmRzIG9uIFNORF9BT0EKKwktLS1oZWxwLS0tCisJVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgT255eCAocGNtMzA1MikKKwljb2RlYyBjaGlwIGZvdW5kIGluIHRoZSBsYXRlc3QgQXBwbGUgbWFjaGluZXMKKwkobW9zdCBvZiB0aG9zZSB3aXRoIGRpZ2l0YWwgYXVkaW8gb3V0cHV0KS4KKworI2NvbmZpZyBTTkRfQU9BX1RPUEFaCisjCXRyaXN0YXRlICJzdXBwb3J0IFRvcGF6IGNoaXBzIgorIwlkZXBlbmRzIG9uIFNORF9BT0EKKyMJLS0taGVscC0tLQorIwlUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBUb3BheiAoQ1M4NHh4KQorIwljb2RlYyBjaGlwcyBmb3VuZCBpbiB0aGUgbGF0ZXN0IEFwcGxlIG1hY2hpbmVzLAorIwl0aGVzZSBjaGlwcyBkbyB0aGUgZGlnaXRhbCBpbnB1dCBhbmQgb3V0cHV0IG9uCisjCXNvbWUgUG93ZXJNYWNzLgorCitjb25maWcgU05EX0FPQV9UQVMKKwl0cmlzdGF0ZSAic3VwcG9ydCBUQVMgY2hpcHMiCisJZGVwZW5kcyBvbiBTTkRfQU9BCisJLS0taGVscC0tLQorCVRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIHRhcyBjaGlwcworCWZvdW5kIGluIGEgbG90IG9mIEFwcGxlIE1hY2hpbmVzLCBlc3BlY2lhbGx5CisJaUJvb2tzIGFuZCBQb3dlckJvb2tzIHdpdGhvdXQgZGlnaXRhbC4KKworY29uZmlnIFNORF9BT0FfVE9PTklFCisJdHJpc3RhdGUgInN1cHBvcnQgVG9vbmllIGNoaXAiCisJZGVwZW5kcyBvbiBTTkRfQU9BCisJLS0taGVscC0tLQorCVRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIHRvb25pZSBjb2RlYworCWZvdW5kIGluIHRoZSBNYWMgTWluaS4gSWYgeW91IGhhdmUgYSBNYWMgTWluaSBhbmQKKwl3YW50IHRvIGhlYXIgc291bmQsIHNlbGVjdCB0aGlzIG9wdGlvbi4KZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb2RlY3MvTWFrZWZpbGUgYi9zb3VuZC9hb2EvY29kZWNzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxY2JlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29kZWNzL01ha2VmaWxlCkBAIC0wLDAgKzEsMyBAQAorb2JqLSQoQ09ORklHX1NORF9BT0FfT05ZWCkgKz0gc25kLWFvYS1jb2RlYy1vbnl4Lm8KK29iai0kKENPTkZJR19TTkRfQU9BX1RBUykgKz0gc25kLWFvYS1jb2RlYy10YXMubworb2JqLSQoQ09ORklHX1NORF9BT0FfVE9PTklFKSArPSBzbmQtYW9hLWNvZGVjLXRvb25pZS5vCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtb255eC5jIGIvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLW9ueXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjc2NTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLW9ueXguYwpAQCAtMCwwICsxLDExMTMgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIGRyaXZlciBmb3IgT255eCBjb2RlYworICoKKyAqIENvcHlyaWdodCAyMDA2IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CisgKgorICogR1BMIHYyLCBjYW4gYmUgZm91bmQgaW4gQ09QWUlORy4KKyAqCisgKgorICogVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIHBjbTMwNTIgY29kZWMgY2hpcCAoY29kZW5hbWVkIE9ueXgpCisgKiB0aGF0IGlzIHByZXNlbnQgaW4gbmV3ZXIgQXBwbGUgaGFyZHdhcmUgKHdpdGggZGlnaXRhbCBvdXRwdXQpLgorICoKKyAqIFRoZSBPbnl4IGNvZGVjIGhhcyB0aGUgZm9sbG93aW5nIGNvbm5lY3Rpb25zIChsaXN0ZWQgYnkgdGhlIGJpdAorICogdG8gYmUgdXNlZCBpbiBhb2FfY29kZWMuY29ubmVjdGVkKToKKyAqICAwOiBhbmFsb2cgb3V0cHV0CisgKiAgMTogZGlnaXRhbCBvdXRwdXQKKyAqICAyOiBsaW5lIGlucHV0CisgKiAgMzogbWljcm9waG9uZSBpbnB1dAorICogTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIEkga25vdyBvZiBubyBtYWNoaW5lIHRoYXQgaGFzIGZvciBleGFtcGxlCisgKiB0aGUgZGlnaXRhbCBvdXRwdXQgY29ubmVjdGVkIGJ1dCBub3QgdGhlIGFuYWxvZywgSSBoYXZlIGhhbmRsZWQKKyAqIGFsbCB0aGUgZGlmZmVyZW50IGNhc2VzIGluIHRoZSBjb2RlIHNvIHRoYXQgdGhpcyBkcml2ZXIgbWF5IHNlcnZlCisgKiBhcyBhIGdvb2QgZXhhbXBsZSBvZiB3aGF0IHRvIGRvLgorICoKKyAqIE5PVEU6IFRoaXMgZHJpdmVyIGFzc3VtZXMgdGhhdCB0aGVyZSdzIGF0IG1vc3Qgb25lIGNoaXAgdG8gYmUKKyAqIAkgdXNlZCB3aXRoIG9uZSBhbHNhIGNhcmQsIGluIGZvcm0gb2YgY3JlYXRpbmcgYWxsIGtpbmRzCisgKgkgb2YgbWl4ZXIgZWxlbWVudHMgd2l0aG91dCByZWdhcmQgZm9yIHRoZWlyIGV4aXN0ZW5jZS4KKyAqCSBCdXQgc25kLWFvYSBhc3N1bWVzIHRoYXQgdGhlcmUncyBhdCBtb3N0IG9uZSBjYXJkLCBzbworICoJIHRoaXMgbWVhbnMgeW91IGNhbiBvbmx5IGhhdmUgb25lIG9ueXggb24gYSBzeXN0ZW0uIFRoaXMKKyAqCSBzaG91bGQgcHJvYmFibHkgYmUgZml4ZWQgYnkgY2hhbmdpbmcgdGhlIGFzc3VtcHRpb24gb2YKKyAqCSBoYXZpbmcganVzdCBhIHNpbmdsZSBjYXJkIG9uIGEgc3lzdGVtLCBhbmQgbWFraW5nIHRoZQorICoJICdjYXJkJyBwb2ludGVyIGFjY2Vzc2libGUgdG8gYW55b25lIHdobyBuZWVkcyBpdCBpbnN0ZWFkCisgKgkgb2YgaGlkaW5nIGl0IGluIHRoZSBhb2Ffc25kXyogZnVuY3Rpb25zLi4uCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KK01PRFVMRV9BVVRIT1IoIkpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oInBjbTMwNTIgKG9ueXgpIGNvZGVjIGRyaXZlciBmb3Igc25kLWFvYSIpOworCisjaW5jbHVkZSAic25kLWFvYS1jb2RlYy1vbnl4LmgiCisjaW5jbHVkZSAiLi4vYW9hLmgiCisjaW5jbHVkZSAiLi4vc291bmRidXMvc291bmRidXMuaCIKKworCisjZGVmaW5lIFBGWCAic25kLWFvYS1jb2RlYy1vbnl4OiAiCisKK3N0cnVjdCBvbnl4IHsKKwkvKiBjYWNoZSByZWdpc3RlcnMgNjUgdG8gODAsIHRoZXkgYXJlIHdyaXRlLW9ubHkhICovCisJdTgJCQljYWNoZVsxNl07CisJc3RydWN0IGkyY19jbGllbnQJaTJjOworCXN0cnVjdCBhb2FfY29kZWMJY29kZWM7CisJdTMyCQkJaW5pdGlhbGlzZWQ6MSwKKwkJCQlzcGRpZl9sb2NrZWQ6MSwKKwkJCQlhbmFsb2dfbG9ja2VkOjEsCisJCQkJb3JpZ2luYWxfbXV0ZToyOworCWludAkJCW9wZW5fY291bnQ7CisJc3RydWN0IGNvZGVjX2luZm8JKmNvZGVjX2luZm87CisKKwkvKiBtdXRleCBzZXJpYWxpemVzIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBkZXZpY2UKKwkgKiBhbmQgdGhpcyBzdHJ1Y3R1cmUuCisJICovCisJc3RydWN0IG11dGV4IG11dGV4OworfTsKKyNkZWZpbmUgY29kZWNfdG9fb255eChjKSBjb250YWluZXJfb2YoYywgc3RydWN0IG9ueXgsIGNvZGVjKQorCisvKiBib3RoIHJldHVybiAwIGlmIGFsbCBvaywgZWxzZSBvbiBlcnJvciAqLworc3RhdGljIGludCBvbnl4X3JlYWRfcmVnaXN0ZXIoc3RydWN0IG9ueXggKm9ueXgsIHU4IHJlZywgdTggKnZhbHVlKQoreworCXMzMiB2OworCisJaWYgKHJlZyAhPSBPTllYX1JFR19DT05UUk9MKSB7CisJCSp2YWx1ZSA9IG9ueXgtPmNhY2hlW3JlZy1GSVJTVFJFR0lTVEVSXTsKKwkJcmV0dXJuIDA7CisJfQorCXYgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoJm9ueXgtPmkyYywgcmVnKTsKKwlpZiAodiA8IDApCisJCXJldHVybiAtMTsKKwkqdmFsdWUgPSAodTgpdjsKKwlvbnl4LT5jYWNoZVtPTllYX1JFR19DT05UUk9MLUZJUlNUUkVHSVNURVJdID0gKnZhbHVlOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9ueXhfd3JpdGVfcmVnaXN0ZXIoc3RydWN0IG9ueXggKm9ueXgsIHU4IHJlZywgdTggdmFsdWUpCit7CisJaW50IHJlc3VsdDsKKworCXJlc3VsdCA9IGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoJm9ueXgtPmkyYywgcmVnLCB2YWx1ZSk7CisJaWYgKCFyZXN1bHQpCisJCW9ueXgtPmNhY2hlW3JlZy1GSVJTVFJFR0lTVEVSXSA9IHZhbHVlOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qIGFsc2Egc3R1ZmYgKi8KKworc3RhdGljIGludCBvbnl4X2Rldl9yZWdpc3RlcihzdHJ1Y3Qgc25kX2RldmljZSAqZGV2KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9kZXZpY2Vfb3BzIG9wcyA9IHsKKwkuZGV2X3JlZ2lzdGVyID0gb255eF9kZXZfcmVnaXN0ZXIsCit9OworCisvKiB0aGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgYWxzYSBtaXhlciBwcm9ncmFtcworICogY2FuJ3QgcHJvcGVybHkgaGFuZGxlIHRoZSBuZWdhdGl2ZSByYW5nZSAqLworI2RlZmluZSBWT0xVTUVfUkFOR0VfU0hJRlQJMTI4CisKK3N0YXRpYyBpbnQgb255eF9zbmRfdm9sX2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjsKKwl1aW5mby0+Y291bnQgPSAyOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IC0xMjggKyBWT0xVTUVfUkFOR0VfU0hJRlQ7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gLTEgKyBWT0xVTUVfUkFOR0VfU0hJRlQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zbmRfdm9sX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwlzOCBsLCByOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQVRURU5fTEVGVCwgJmwpOworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQVRURU5fUklHSFQsICZyKTsKKwltdXRleF91bmxvY2soJm9ueXgtPm11dGV4KTsKKworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gbCArIFZPTFVNRV9SQU5HRV9TSElGVDsKKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXSA9IHIgKyBWT0xVTUVfUkFOR0VfU0hJRlQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbnl4X3NuZF92b2xfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCXM4IGwsIHI7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RBQ19BVFRFTl9MRUZULCAmbCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RBQ19BVFRFTl9SSUdIVCwgJnIpOworCisJaWYgKGwgKyBWT0xVTUVfUkFOR0VfU0hJRlQgPT0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gJiYKKwkgICAgciArIFZPTFVNRV9SQU5HRV9TSElGVCA9PSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXSkgeworCQltdXRleF91bmxvY2soJm9ueXgtPm11dGV4KTsKKwkJcmV0dXJuIDA7CisJfQorCisJb255eF93cml0ZV9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQVRURU5fTEVGVCwKKwkJCSAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXQorCQkJICAgICAtIFZPTFVNRV9SQU5HRV9TSElGVCk7CisJb255eF93cml0ZV9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQVRURU5fUklHSFQsCisJCQkgICAgdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMV0KKwkJCSAgICAgLSBWT0xVTUVfUkFOR0VfU0hJRlQpOworCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyB2b2x1bWVfY29udHJvbCA9IHsKKwkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKKwkubmFtZSA9ICJNYXN0ZXIgUGxheWJhY2sgVm9sdW1lIiwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkuaW5mbyA9IG9ueXhfc25kX3ZvbF9pbmZvLAorCS5nZXQgPSBvbnl4X3NuZF92b2xfZ2V0LAorCS5wdXQgPSBvbnl4X3NuZF92b2xfcHV0LAorfTsKKworLyogbGlrZSBhYm92ZSwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBhIGxvdAorICogb2YgYWxzYSBtaXhlciBwcm9ncmFtcyBkb24ndCBoYW5kbGUgcmFuZ2VzCisgKiB0aGF0IGRvbid0IHN0YXJ0IGF0IDAgcHJvcGVybHkuCisgKiBldmVuIGFsc2FtaXhlciBpcyBvbmUgb2YgdGhlbS4uLiAqLworI2RlZmluZSBJTlBVVEdBSU5fUkFOR0VfU0hJRlQJKC0zKQorCitzdGF0aWMgaW50IG9ueXhfc25kX2lucHV0Z2Fpbl9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI7CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5taW4gPSAzICsgSU5QVVRHQUlOX1JBTkdFX1NISUZUOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1heCA9IDI4ICsgSU5QVVRHQUlOX1JBTkdFX1NISUZUOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9ueXhfc25kX2lucHV0Z2Fpbl9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJdTggaWc7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0FEQ19DT05UUk9MLCAmaWcpOworCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPQorCQkoaWcgJiBPTllYX0FEQ19QR0FfR0FJTl9NQVNLKSArIElOUFVUR0FJTl9SQU5HRV9TSElGVDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9ueXhfc25kX2lucHV0Z2Fpbl9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJdTggdiwgbjsKKworCW11dGV4X2xvY2soJm9ueXgtPm11dGV4KTsKKwlvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfQURDX0NPTlRST0wsICZ2KTsKKwluID0gdjsKKwluICY9IH5PTllYX0FEQ19QR0FfR0FJTl9NQVNLOworCW4gfD0gKHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdIC0gSU5QVVRHQUlOX1JBTkdFX1NISUZUKQorCQkmIE9OWVhfQURDX1BHQV9HQUlOX01BU0s7CisJb255eF93cml0ZV9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19BRENfQ09OVFJPTCwgbik7CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwlyZXR1cm4gbiAhPSB2OworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaW5wdXRnYWluX2NvbnRyb2wgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiTWFzdGVyIENhcHR1cmUgVm9sdW1lIiwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkuaW5mbyA9IG9ueXhfc25kX2lucHV0Z2Fpbl9pbmZvLAorCS5nZXQgPSBvbnl4X3NuZF9pbnB1dGdhaW5fZ2V0LAorCS5wdXQgPSBvbnl4X3NuZF9pbnB1dGdhaW5fcHV0LAorfTsKKworc3RhdGljIGludCBvbnl4X3NuZF9jYXB0dXJlX3NvdXJjZV9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJc3RhdGljIGNoYXIgKnRleHRzW10gPSB7ICJMaW5lLUluIiwgIk1pY3JvcGhvbmUiIH07CisKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfRU5VTUVSQVRFRDsKKwl1aW5mby0+Y291bnQgPSAxOworCXVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1zID0gMjsKKwlpZiAodWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbSA+IDEpCisJCXVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPSAxOworCXN0cmNweSh1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5uYW1lLCB0ZXh0c1t1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtXSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zbmRfY2FwdHVyZV9zb3VyY2VfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCXM4IHY7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0FEQ19DT05UUk9MLCAmdik7CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwl1Y29udHJvbC0+dmFsdWUuZW51bWVyYXRlZC5pdGVtWzBdID0gISEodiZPTllYX0FEQ19JTlBVVF9NSUMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG9ueXhfc2V0X2NhcHR1cmVfc291cmNlKHN0cnVjdCBvbnl4ICpvbnl4LCBpbnQgbWljKQoreworCXM4IHY7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0FEQ19DT05UUk9MLCAmdik7CisJdiAmPSB+T05ZWF9BRENfSU5QVVRfTUlDOworCWlmIChtaWMpCisJCXYgfD0gT05ZWF9BRENfSU5QVVRfTUlDOworCW9ueXhfd3JpdGVfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfQURDX0NPTlRST0wsIHYpOworCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworfQorCitzdGF0aWMgaW50IG9ueXhfc25kX2NhcHR1cmVfc291cmNlX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlvbnl4X3NldF9jYXB0dXJlX3NvdXJjZShzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCksCisJCQkJdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSk7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBjYXB0dXJlX3NvdXJjZV9jb250cm9sID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS8qIElmIHdlIG5hbWUgdGhpcyAnSW5wdXQgU291cmNlJywgaXQgcHJvcGVybHkgc2hvd3MgdXAgaW4KKwkgKiBhbHNhbWl4ZXIgYXMgYSBzZWxlY3Rpb24sICogYnV0IGl0J3Mgc2hvd24gdW5kZXIgdGhlIAorCSAqICdQbGF5YmFjaycgY2F0ZWdvcnkuCisJICogSWYgSSBuYW1lIGl0ICdDYXB0dXJlIFNvdXJjZScsIGl0IHNob3dzIHVwIGluIHN0cmFuZ2UKKwkgKiB3YXlzICh0d28gYm9vbHMgb2Ygd2hpY2ggb25lIGNhbiBiZSBzZWxlY3RlZCBhdCBhCisJICogdGltZSkgYnV0IGF0IGxlYXN0IGl0J3Mgc2hvd24gaW4gdGhlICdDYXB0dXJlJworCSAqIGNhdGVnb3J5LgorCSAqIEkgd2FzIHRvbGQgdGhhdCB0aGlzIHdhcyBkdWUgdG8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwKKwkgKiBidXQgSSBkb24ndCB1bmRlcnN0YW5kIHRoZW4gd2h5IHRoZSBtYW5nbGluZyBpcyAqbm90KgorCSAqIGRvbmUgd2hlbiBJIG5hbWUgaXQgIklucHV0IFNvdXJjZSIuLi4uLgorCSAqLworCS5uYW1lID0gIkNhcHR1cmUgU291cmNlIiwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkuaW5mbyA9IG9ueXhfc25kX2NhcHR1cmVfc291cmNlX2luZm8sCisJLmdldCA9IG9ueXhfc25kX2NhcHR1cmVfc291cmNlX2dldCwKKwkucHV0ID0gb255eF9zbmRfY2FwdHVyZV9zb3VyY2VfcHV0LAorfTsKKworc3RhdGljIGludCBvbnl4X3NuZF9tdXRlX2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTjsKKwl1aW5mby0+Y291bnQgPSAyOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IDA7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvbnl4X3NuZF9tdXRlX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwl1OCBjOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQ09OVFJPTCwgJmMpOworCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSAhKGMgJiBPTllYX01VVEVfTEVGVCk7CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMV0gPSAhKGMgJiBPTllYX01VVEVfUklHSFQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zbmRfbXV0ZV9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJdTggdiA9IDAsIGMgPSAwOworCWludCBlcnIgPSAtRUJVU1k7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJaWYgKG9ueXgtPmFuYWxvZ19sb2NrZWQpCisJCWdvdG8gb3V0X3VubG9jazsKKworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQ09OVFJPTCwgJnYpOworCWMgPSB2OworCWMgJj0gfihPTllYX01VVEVfUklHSFQgfCBPTllYX01VVEVfTEVGVCk7CisJaWYgKCF1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSkKKwkJYyB8PSBPTllYX01VVEVfTEVGVDsKKwlpZiAoIXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdKQorCQljIHw9IE9OWVhfTVVURV9SSUdIVDsKKwllcnIgPSBvbnl4X3dyaXRlX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RBQ19DT05UUk9MLCBjKTsKKworIG91dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwlyZXR1cm4gIWVyciA/ICh2ICE9IGMpIDogZXJyOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbXV0ZV9jb250cm9sID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS5uYW1lID0gIk1hc3RlciBQbGF5YmFjayBTd2l0Y2giLAorCS5hY2Nlc3MgPSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLAorCS5pbmZvID0gb255eF9zbmRfbXV0ZV9pbmZvLAorCS5nZXQgPSBvbnl4X3NuZF9tdXRlX2dldCwKKwkucHV0ID0gb255eF9zbmRfbXV0ZV9wdXQsCit9OworCisKK3N0YXRpYyBpbnQgb255eF9zbmRfc2luZ2xlX2JpdF9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU47CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5taW4gPSAwOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1heCA9IDE7CisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgRkxBR19QT0xBUklUWV9JTlZFUlQJMQorI2RlZmluZSBGTEFHX1NQRElGTE9DSwkJMgorCitzdGF0aWMgaW50IG9ueXhfc25kX3NpbmdsZV9iaXRfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCXU4IGM7CisJbG9uZyBpbnQgcHYgPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKKwl1OCBwb2xhcml0eSA9IChwdiA+PiAxNikgJiBGTEFHX1BPTEFSSVRZX0lOVkVSVDsKKwl1OCBhZGRyZXNzID0gKHB2ID4+IDgpICYgMHhmZjsKKwl1OCBtYXNrID0gcHYgJiAweGZmOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBhZGRyZXNzLCAmYyk7CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9ICEhKGMgJiBtYXNrKSBeIHBvbGFyaXR5OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zbmRfc2luZ2xlX2JpdF9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJdTggdiA9IDAsIGMgPSAwOworCWludCBlcnI7CisJbG9uZyBpbnQgcHYgPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKKwl1OCBwb2xhcml0eSA9IChwdiA+PiAxNikgJiBGTEFHX1BPTEFSSVRZX0lOVkVSVDsKKwl1OCBzcGRpZmxvY2sgPSAocHYgPj4gMTYpICYgRkxBR19TUERJRkxPQ0s7CisJdTggYWRkcmVzcyA9IChwdiA+PiA4KSAmIDB4ZmY7CisJdTggbWFzayA9IHB2ICYgMHhmZjsKKworCW11dGV4X2xvY2soJm9ueXgtPm11dGV4KTsKKwlpZiAoc3BkaWZsb2NrICYmIG9ueXgtPnNwZGlmX2xvY2tlZCkgeworCQkvKiBldmVuIGlmIGFsc2FtaXhlciBkb2Vzbid0IGNhcmUuLiAqLworCQllcnIgPSAtRUJVU1k7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIGFkZHJlc3MsICZ2KTsKKwljID0gdjsKKwljICY9IH4obWFzayk7CisJaWYgKCEhdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gXiBwb2xhcml0eSkKKwkJYyB8PSBtYXNrOworCWVyciA9IG9ueXhfd3JpdGVfcmVnaXN0ZXIob255eCwgYWRkcmVzcywgYyk7CisKKyBvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJcmV0dXJuICFlcnIgPyAodiAhPSBjKSA6IGVycjsKK30KKworI2RlZmluZSBTSU5HTEVfQklUKG4sIHR5cGUsIGRlc2NyaXB0aW9uLCBhZGRyZXNzLCBtYXNrLCBmbGFncykJIAlcCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbiMjX2NvbnRyb2wgPSB7CQkJCVwKKwkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV8jI3R5cGUsCQkJCVwKKwkubmFtZSA9IGRlc2NyaXB0aW9uLAkJCQkJCVwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwJCQlcCisJLmluZm8gPSBvbnl4X3NuZF9zaW5nbGVfYml0X2luZm8sCQkJCVwKKwkuZ2V0ID0gb255eF9zbmRfc2luZ2xlX2JpdF9nZXQsCQkJCQlcCisJLnB1dCA9IG9ueXhfc25kX3NpbmdsZV9iaXRfcHV0LAkJCQkJXAorCS5wcml2YXRlX3ZhbHVlID0gKGZsYWdzIDw8IDE2KSB8IChhZGRyZXNzIDw8IDgpIHwgbWFzawkJXAorfQorCitTSU5HTEVfQklUKHNwZGlmLAorCSAgIE1JWEVSLAorCSAgIFNORFJWX0NUTF9OQU1FX0lFQzk1OCgiIiwgUExBWUJBQ0ssIFNXSVRDSCksCisJICAgT05ZWF9SRUdfRElHX0lORk80LAorCSAgIE9OWVhfU1BESUZfRU5BQkxFLAorCSAgIEZMQUdfU1BESUZMT0NLKTsKK1NJTkdMRV9CSVQob3ZyMSwKKwkgICBNSVhFUiwKKwkgICAiT3ZlcnNhbXBsaW5nIFJhdGUiLAorCSAgIE9OWVhfUkVHX0RBQ19DT05UUk9MLAorCSAgIE9OWVhfT1ZSMSwKKwkgICAwKTsKK1NJTkdMRV9CSVQoZmx0MCwKKwkgICBNSVhFUiwKKwkgICAiRmFzdCBEaWdpdGFsIEZpbHRlciBSb2xsb2ZmIiwKKwkgICBPTllYX1JFR19EQUNfRklMVEVSLAorCSAgIE9OWVhfUk9MTE9GRl9GQVNULAorCSAgIEZMQUdfUE9MQVJJVFlfSU5WRVJUKTsKK1NJTkdMRV9CSVQoaHBmLAorCSAgIE1JWEVSLAorCSAgICJIaWdocGFzcyBGaWx0ZXIiLAorCSAgIE9OWVhfUkVHX0FEQ19IUEZfQllQQVNTLAorCSAgIE9OWVhfSFBGX0RJU0FCTEUsCisJICAgRkxBR19QT0xBUklUWV9JTlZFUlQpOworU0lOR0xFX0JJVChkbTEyLAorCSAgIE1JWEVSLAorCSAgICJEaWdpdGFsIERlLUVtcGhhc2lzIiwKKwkgICBPTllYX1JFR19EQUNfREVFTVBILAorCSAgIE9OWVhfRElHREVFTVBIX0NUUkwsCisJICAgMCk7CisKK3N0YXRpYyBpbnQgb255eF9zcGRpZl9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfSUVDOTU4OworCXVpbmZvLT5jb3VudCA9IDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zcGRpZl9tYXNrX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwkvKiBkYXRhc2hlZXQgcGFnZSAzMCwgYWxsIG90aGVycyBhcmUgMCAqLworCXVjb250cm9sLT52YWx1ZS5pZWM5NTguc3RhdHVzWzBdID0gMHgzZTsKKwl1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1sxXSA9IDB4ZmY7CisKKwl1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1szXSA9IDB4M2Y7CisJdWNvbnRyb2wtPnZhbHVlLmllYzk1OC5zdGF0dXNbNF0gPSAweDBmOworCQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgb255eF9zcGRpZl9tYXNrID0geworCS5hY2Nlc3MgPQlTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRCwKKwkuaWZhY2UgPQlTTkRSVl9DVExfRUxFTV9JRkFDRV9QQ00sCisJLm5hbWUgPQkJU05EUlZfQ1RMX05BTUVfSUVDOTU4KCIiLFBMQVlCQUNLLENPTl9NQVNLKSwKKwkuaW5mbyA9CQlvbnl4X3NwZGlmX2luZm8sCisJLmdldCA9CQlvbnl4X3NwZGlmX21hc2tfZ2V0LAorfTsKKworc3RhdGljIGludCBvbnl4X3NwZGlmX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJdTggdjsKKworCW11dGV4X2xvY2soJm9ueXgtPm11dGV4KTsKKwlvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfRElHX0lORk8xLCAmdik7CisJdWNvbnRyb2wtPnZhbHVlLmllYzk1OC5zdGF0dXNbMF0gPSB2ICYgMHgzZTsKKworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19ESUdfSU5GTzIsICZ2KTsKKwl1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1sxXSA9IHY7CisKKwlvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfRElHX0lORk8zLCAmdik7CisJdWNvbnRyb2wtPnZhbHVlLmllYzk1OC5zdGF0dXNbM10gPSB2ICYgMHgzZjsKKworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19ESUdfSU5GTzQsICZ2KTsKKwl1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1s0XSA9IHYgJiAweDBmOworCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb255eF9zcGRpZl9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCXU4IHY7CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RJR19JTkZPMSwgJnYpOworCXYgPSAodiAmIH4weDNlKSB8ICh1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1swXSAmIDB4M2UpOworCW9ueXhfd3JpdGVfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfRElHX0lORk8xLCB2KTsKKworCXYgPSB1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1sxXTsKKwlvbnl4X3dyaXRlX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RJR19JTkZPMiwgdik7CisKKwlvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfRElHX0lORk8zLCAmdik7CisJdiA9ICh2ICYgfjB4M2YpIHwgKHVjb250cm9sLT52YWx1ZS5pZWM5NTguc3RhdHVzWzNdICYgMHgzZik7CisJb255eF93cml0ZV9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19ESUdfSU5GTzMsIHYpOworCisJb255eF9yZWFkX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RJR19JTkZPNCwgJnYpOworCXYgPSAodiAmIH4weDBmKSB8ICh1Y29udHJvbC0+dmFsdWUuaWVjOTU4LnN0YXR1c1s0XSAmIDB4MGYpOworCW9ueXhfd3JpdGVfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfRElHX0lORk80LCB2KTsKKwltdXRleF91bmxvY2soJm9ueXgtPm11dGV4KTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgb255eF9zcGRpZl9jdHJsID0geworCS5hY2Nlc3MgPQlTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLAorCS5pZmFjZSA9CVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTSwKKwkubmFtZSA9CQlTTkRSVl9DVExfTkFNRV9JRUM5NTgoIiIsUExBWUJBQ0ssREVGQVVMVCksCisJLmluZm8gPQkJb255eF9zcGRpZl9pbmZvLAorCS5nZXQgPQkJb255eF9zcGRpZl9nZXQsCisJLnB1dCA9CQlvbnl4X3NwZGlmX3B1dCwKK307CisKKy8qIG91ciByZWdpc3RlcnMgKi8KKworc3RhdGljIHU4IHJlZ2lzdGVyX21hcFtdID0geworCU9OWVhfUkVHX0RBQ19BVFRFTl9MRUZULAorCU9OWVhfUkVHX0RBQ19BVFRFTl9SSUdIVCwKKwlPTllYX1JFR19DT05UUk9MLAorCU9OWVhfUkVHX0RBQ19DT05UUk9MLAorCU9OWVhfUkVHX0RBQ19ERUVNUEgsCisJT05ZWF9SRUdfREFDX0ZJTFRFUiwKKwlPTllYX1JFR19EQUNfT1VUUEhBU0UsCisJT05ZWF9SRUdfQURDX0NPTlRST0wsCisJT05ZWF9SRUdfQURDX0hQRl9CWVBBU1MsCisJT05ZWF9SRUdfRElHX0lORk8xLAorCU9OWVhfUkVHX0RJR19JTkZPMiwKKwlPTllYX1JFR19ESUdfSU5GTzMsCisJT05ZWF9SRUdfRElHX0lORk80Cit9OworCitzdGF0aWMgdTggaW5pdGlhbF92YWx1ZXNbQVJSQVlfU0laRShyZWdpc3Rlcl9tYXApXSA9IHsKKwkweDgwLCAweDgwLCAvKiBtdXRlZCAqLworCU9OWVhfTVJTVCB8IE9OWVhfU1JTVCwgLyogYnV0IGhhbmRsZWQgc3BlY2lhbGx5ISAqLworCU9OWVhfTVVURV9MRUZUIHwgT05ZWF9NVVRFX1JJR0hULAorCTAsIC8qIG5vIGRlZW1waGFzaXMgKi8KKwlPTllYX0RBQ19GSUxURVJfQUxXQVlTLAorCU9OWVhfT1VUUEhBU0VfSU5WRVJURUQsCisJKC0xIC8qZEIqLyArIDgpICYgMHhGLCAvKiBsaW5lIGluIHNlbGVjdGVkLCAtMSBkQiBnYWluKi8KKwlPTllYX0FEQ19IUEZfQUxXQVlTLAorCSgxPDwyKSwJLyogcGNtIGF1ZGlvICovCisJMiwJLyogY2F0ZWdvcnk6IHBjbSBjb2RlciAqLworCTAsCS8qIHNhbXBsaW5nIGZyZXF1ZW5jeSA0NC4xIGtIeiwgY2xvY2sgYWNjdXJhY3kgbGV2ZWwgSUkgKi8KKwkxCS8qIDI0IGJpdCBkZXB0aCAqLworfTsKKworLyogcmVzZXQgcmVnaXN0ZXJzIG9mIGNoaXAsIGVpdGhlciB0byBpbml0aWFsIG9yIHRvIHByZXZpb3VzIHZhbHVlcyAqLworc3RhdGljIGludCBvbnl4X3JlZ2lzdGVyX2luaXQoc3RydWN0IG9ueXggKm9ueXgpCit7CisJaW50IGk7CisJdTggdmFsOworCXU4IHJlZ3Nbc2l6ZW9mKGluaXRpYWxfdmFsdWVzKV07CisKKwlpZiAoIW9ueXgtPmluaXRpYWxpc2VkKSB7CisJCW1lbWNweShyZWdzLCBpbml0aWFsX3ZhbHVlcywgc2l6ZW9mKGluaXRpYWxfdmFsdWVzKSk7CisJCWlmIChvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfQ09OVFJPTCwgJnZhbCkpCisJCQlyZXR1cm4gLTE7CisJCXZhbCAmPSB+T05ZWF9TSUxJQ09OVkVSU0lPTjsKKwkJdmFsIHw9IGluaXRpYWxfdmFsdWVzWzNdOworCQlyZWdzWzNdID0gdmFsOworCX0gZWxzZSB7CisJCWZvciAoaT0wOyBpPHNpemVvZihyZWdpc3Rlcl9tYXApOyBpKyspCisJCQlyZWdzW2ldID0gb255eC0+Y2FjaGVbcmVnaXN0ZXJfbWFwW2ldLUZJUlNUUkVHSVNURVJdOworCX0KKworCWZvciAoaT0wOyBpPHNpemVvZihyZWdpc3Rlcl9tYXApOyBpKyspIHsKKwkJaWYgKG9ueXhfd3JpdGVfcmVnaXN0ZXIob255eCwgcmVnaXN0ZXJfbWFwW2ldLCByZWdzW2ldKSkKKwkJCXJldHVybiAtMTsKKwl9CisJb255eC0+aW5pdGlhbGlzZWQgPSAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHRyYW5zZmVyX2luZm8gb255eF90cmFuc2ZlcnNbXSA9IHsKKwkvKiB0aGlzIGlzIGZpcnN0IHNvIHdlIGNhbiBza2lwIGl0IGlmIG5vIGlucHV0IGlzIHByZXNlbnQuLi4KKwkgKiBObyBoYXJkd2FyZSBleGlzdHMgd2l0aCB0aGF0LCBidXQgaXQncyBoZXJlIGFzIGFuIGV4YW1wbGUKKwkgKiBvZiB3aGF0IHRvIGRvIDopICovCisJeworCQkvKiBhbmFsb2cgaW5wdXQgKi8KKwkJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1M4IHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzE2X0JFIHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFLAorCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAwXzk2MDAwLAorCQkudHJhbnNmZXJfaW4gPSAxLAorCQkubXVzdF9iZV9jbG9ja19zb3VyY2UgPSAwLAorCQkudGFnID0gMCwKKwl9LAorCXsKKwkJLyogaWYgYW5hbG9nIGFuZCBkaWdpdGFsIGFyZSBjdXJyZW50bHkgb2ZmLCBhbnl0aGluZyBzaG91bGQgZ28sCisJCSAqIHNvIHRoaXMgZW50cnkgZGVzY3JpYmVzIGV2ZXJ5dGhpbmcgd2UgY2FuIGRvLi4uICovCisJCS5mb3JtYXRzID0gU05EUlZfUENNX0ZNVEJJVF9TOCB8CisJCQkgICBTTkRSVl9QQ01fRk1UQklUX1MxNl9CRSB8CisJCQkgICBTTkRSVl9QQ01fRk1UQklUX1MyNF9CRQorI2lmZGVmIFNORFJWX1BDTV9GTVRCSVRfQ09NUFJFU1NFRF8xNkJFCisJCQkgICB8IFNORFJWX1BDTV9GTVRCSVRfQ09NUFJFU1NFRF8xNkJFCisjZW5kaWYKKwkJLAorCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAwXzk2MDAwLAorCQkudGFnID0gMCwKKwl9LAorCXsKKwkJLyogYW5hbG9nIG91dHB1dCAqLworCQkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzggfAorCQkJICAgU05EUlZfUENNX0ZNVEJJVF9TMTZfQkUgfAorCQkJICAgU05EUlZfUENNX0ZNVEJJVF9TMjRfQkUsCisJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzgwMDBfOTYwMDAsCisJCS50cmFuc2Zlcl9pbiA9IDAsCisJCS5tdXN0X2JlX2Nsb2NrX3NvdXJjZSA9IDAsCisJCS50YWcgPSAxLAorCX0sCisJeworCQkvKiBkaWdpdGFsIHBjbSBvdXRwdXQsIGFsc28gcG9zc2libGUgZm9yIGFuYWxvZyBvdXQgKi8KKwkJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1M4IHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzE2X0JFIHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFLAorCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV8zMjAwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfNDQxMDAgfAorCQkJIFNORFJWX1BDTV9SQVRFXzQ4MDAwLAorCQkudHJhbnNmZXJfaW4gPSAwLAorCQkubXVzdF9iZV9jbG9ja19zb3VyY2UgPSAwLAorCQkudGFnID0gMiwKKwl9LAorI2lmZGVmIFNORFJWX1BDTV9GTVRCSVRfQ09NUFJFU1NFRF8xNkJFCitPbmNlIGFsc2EgZ2V0cyBzdXBwb3J0cyBmb3IgdGhpcyBraW5kIG9mIHRoaW5nIHdlIGNhbiBhZGQgaXQuLi4KKwl7CisJCS8qIGRpZ2l0YWwgY29tcHJlc3NlZCBvdXRwdXQgKi8KKwkJLmZvcm1hdHMgPSAgU05EUlZfUENNX0ZNVEJJVF9DT01QUkVTU0VEXzE2QkUsCisJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzMyMDAwIHwKKwkJCSBTTkRSVl9QQ01fUkFURV80NDEwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfNDgwMDAsCisJCS50YWcgPSAyLAorCX0sCisjZW5kaWYKKwl7fQorfTsKKworc3RhdGljIGludCBvbnl4X3VzYWJsZShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksCisJCSAgICAgICBzdHJ1Y3QgdHJhbnNmZXJfaW5mbyAqdGksCisJCSAgICAgICBzdHJ1Y3QgdHJhbnNmZXJfaW5mbyAqb3V0KQoreworCXU4IHY7CisJc3RydWN0IG9ueXggKm9ueXggPSBjaWktPmNvZGVjX2RhdGE7CisJaW50IHNwZGlmX2VuYWJsZWQsIGFuYWxvZ19lbmFibGVkOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19ESUdfSU5GTzQsICZ2KTsKKwlzcGRpZl9lbmFibGVkID0gISEodiAmIE9OWVhfU1BESUZfRU5BQkxFKTsKKwlvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfREFDX0NPTlRST0wsICZ2KTsKKwlhbmFsb2dfZW5hYmxlZCA9IAorCQkodiAmIChPTllYX01VVEVfUklHSFR8T05ZWF9NVVRFX0xFRlQpKQorCQkgIT0gKE9OWVhfTVVURV9SSUdIVHxPTllYX01VVEVfTEVGVCk7CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwlzd2l0Y2ggKHRpLT50YWcpIHsKKwljYXNlIDA6IHJldHVybiAxOworCWNhc2UgMToJcmV0dXJuIGFuYWxvZ19lbmFibGVkOworCWNhc2UgMjogcmV0dXJuIHNwZGlmX2VuYWJsZWQ7CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IG9ueXhfcHJlcGFyZShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksCisJCQlzdHJ1Y3QgYnVzX2luZm8gKmJpLAorCQkJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJdTggdjsKKwlzdHJ1Y3Qgb255eCAqb255eCA9IGNpaS0+Y29kZWNfZGF0YTsKKwlpbnQgZXJyID0gLUVCVVNZOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCisjaWZkZWYgU05EUlZfUENNX0ZNVEJJVF9DT01QUkVTU0VEXzE2QkUKKwlpZiAoc3Vic3RyZWFtLT5ydW50aW1lLT5mb3JtYXQgPT0gU05EUlZfUENNX0ZNVEJJVF9DT01QUkVTU0VEXzE2QkUpIHsKKwkJLyogbXV0ZSBhbmQgbG9jayBhbmFsb2cgb3V0cHV0ICovCisJCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19EQUNfQ09OVFJPTCwgJnYpOworCQlpZiAob255eF93cml0ZV9yZWdpc3Rlcihvbnl4CisJCQkJCU9OWVhfUkVHX0RBQ19DT05UUk9MLAorCQkJCQl2IHwgT05ZWF9NVVRFX1JJR0hUIHwgT05ZWF9NVVRFX0xFRlQpKQorCQkJZ290byBvdXRfdW5sb2NrOworCQlvbnl4LT5hbmFsb2dfbG9ja2VkID0gMTsKKwkJZXJyID0gMDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKyNlbmRpZgorCXN3aXRjaCAoc3Vic3RyZWFtLT5ydW50aW1lLT5yYXRlKSB7CisJY2FzZSAzMjAwMDoKKwljYXNlIDQ0MTAwOgorCWNhc2UgNDgwMDA6CisJCS8qIHRoZXNlIHJhdGVzIGFyZSBvayBmb3IgYWxsIG91dHB1dHMgKi8KKwkJLyogRklYTUU6IHByb2dyYW0gc3BkaWYgY2hhbm5lbCBjb250cm9sIGJpdHMgaGVyZSBzbyB0aGF0CisJCSAqCSAgdXNlcnNwYWNlIGRvZXNuJ3QgaGF2ZSB0byBpZiBpdCBvbmx5IHBsYXlzIHBjbSEgKi8KKwkJZXJyID0gMDsKKwkJZ290byBvdXRfdW5sb2NrOworCWRlZmF1bHQ6CisJCS8qIGdvdCBzb21lIHJhdGUgdGhhdCB0aGUgZGlnaXRhbCBvdXRwdXQgY2FuJ3QgZG8sCisJCSAqIHNvIGRpc2FibGUgYW5kIGxvY2sgaXQgKi8KKwkJb255eF9yZWFkX3JlZ2lzdGVyKGNpaS0+Y29kZWNfZGF0YSwgT05ZWF9SRUdfRElHX0lORk80LCAmdik7CisJCWlmIChvbnl4X3dyaXRlX3JlZ2lzdGVyKG9ueXgsCisJCQkJCU9OWVhfUkVHX0RJR19JTkZPNCwKKwkJCQkJdiAmIH5PTllYX1NQRElGX0VOQUJMRSkpCisJCQlnb3RvIG91dF91bmxvY2s7CisJCW9ueXgtPnNwZGlmX2xvY2tlZCA9IDE7CisJCWVyciA9IDA7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKyBvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBvbnl4X29wZW4oc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLAorCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gY2lpLT5jb2RlY19kYXRhOworCisJbXV0ZXhfbG9jaygmb255eC0+bXV0ZXgpOworCW9ueXgtPm9wZW5fY291bnQrKzsKKwltdXRleF91bmxvY2soJm9ueXgtPm11dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9ueXhfY2xvc2Uoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLAorCQkgICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IGNpaS0+Y29kZWNfZGF0YTsKKworCW11dGV4X2xvY2soJm9ueXgtPm11dGV4KTsKKwlvbnl4LT5vcGVuX2NvdW50LS07CisJaWYgKCFvbnl4LT5vcGVuX2NvdW50KQorCQlvbnl4LT5zcGRpZl9sb2NrZWQgPSBvbnl4LT5hbmFsb2dfbG9ja2VkID0gMDsKKwltdXRleF91bmxvY2soJm9ueXgtPm11dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9ueXhfc3dpdGNoX2Nsb2NrKHN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaSwKKwkJCSAgICAgZW51bSBjbG9ja19zd2l0Y2ggd2hhdCkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IGNpaS0+Y29kZWNfZGF0YTsKKworCW11dGV4X2xvY2soJm9ueXgtPm11dGV4KTsKKwkvKiB0aGlzICpNVVNUKiBiZSBtb3JlIGVsYWJvcmF0ZSBsYXRlci4uLiAqLworCXN3aXRjaCAod2hhdCkgeworCWNhc2UgQ0xPQ0tfU1dJVENIX1BSRVBBUkVfU0xBVkU6CisJCW9ueXgtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPmFsbF9hbXBzX29mZihvbnl4LT5jb2RlYy5ncGlvKTsKKwkJYnJlYWs7CisJY2FzZSBDTE9DS19TV0lUQ0hfU0xBVkU6CisJCW9ueXgtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPmFsbF9hbXBzX3Jlc3RvcmUob255eC0+Y29kZWMuZ3Bpbyk7CisJCWJyZWFrOworCWRlZmF1bHQ6IC8qIHNpbGVuY2Ugd2FybmluZyAqLworCQlicmVhazsKKwl9CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTQorCitzdGF0aWMgaW50IG9ueXhfc3VzcGVuZChzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IGNpaS0+Y29kZWNfZGF0YTsKKwl1OCB2OworCWludCBlcnIgPSAtRU5YSU87CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJaWYgKG9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19DT05UUk9MLCAmdikpCisJCWdvdG8gb3V0X3VubG9jazsKKwlvbnl4X3dyaXRlX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0NPTlRST0wsIHYgfCBPTllYX0FEUFNWIHwgT05ZWF9EQVBTVik7CisJLyogQXBwbGUgZG9lcyBhIHNsZWVwIGhlcmUgYnV0IHRoZSBkYXRhc2hlZXQgc2F5cyB0byBkbyBpdCBvbiByZXN1bWUgKi8KKwllcnIgPSAwOworIG91dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZvbnl4LT5tdXRleCk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IG9ueXhfcmVzdW1lKHN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaSkKK3sKKwlzdHJ1Y3Qgb255eCAqb255eCA9IGNpaS0+Y29kZWNfZGF0YTsKKwl1OCB2OworCWludCBlcnIgPSAtRU5YSU87CisKKwltdXRleF9sb2NrKCZvbnl4LT5tdXRleCk7CisJLyogdGFrZSBjb2RlYyBvdXQgb2Ygc3VzcGVuZCAqLworCWlmIChvbnl4X3JlYWRfcmVnaXN0ZXIob255eCwgT05ZWF9SRUdfQ09OVFJPTCwgJnYpKQorCQlnb3RvIG91dF91bmxvY2s7CisJb255eF93cml0ZV9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19DT05UUk9MLCB2ICYgfihPTllYX0FEUFNWIHwgT05ZWF9EQVBTVikpOworCS8qIEZJWE1FOiBzaG91bGQgZGl2aWRlIGJ5IHNhbXBsZSByYXRlLCBidXQgOGsgaXMgdGhlIGxvd2VzdCB3ZSBnbyAqLworCW1zbGVlcCgyMjA1MDAwLzgwMDApOworCS8qIHJlc2V0IGFsbCB2YWx1ZXMgKi8KKwlvbnl4X3JlZ2lzdGVyX2luaXQob255eCk7CisJZXJyID0gMDsKKyBvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmb255eC0+bXV0ZXgpOworCisJcmV0dXJuIGVycjsKK30KKworI2VuZGlmIC8qIENPTkZJR19QTSAqLworCitzdGF0aWMgc3RydWN0IGNvZGVjX2luZm8gb255eF9jb2RlY19pbmZvID0geworCS50cmFuc2ZlcnMgPSBvbnl4X3RyYW5zZmVycywKKwkuc3lzY2xvY2tfZmFjdG9yID0gMjU2LAorCS5idXNfZmFjdG9yID0gNjQsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLnVzYWJsZSA9IG9ueXhfdXNhYmxlLAorCS5wcmVwYXJlID0gb255eF9wcmVwYXJlLAorCS5vcGVuID0gb255eF9vcGVuLAorCS5jbG9zZSA9IG9ueXhfY2xvc2UsCisJLnN3aXRjaF9jbG9jayA9IG9ueXhfc3dpdGNoX2Nsb2NrLAorI2lmZGVmIENPTkZJR19QTQorCS5zdXNwZW5kID0gb255eF9zdXNwZW5kLAorCS5yZXN1bWUgPSBvbnl4X3Jlc3VtZSwKKyNlbmRpZgorfTsKKworc3RhdGljIGludCBvbnl4X2luaXRfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBjb2RlY190b19vbnl4KGNvZGVjKTsKKwlzdHJ1Y3Qgc25kX2tjb250cm9sICpjdGw7CisJc3RydWN0IGNvZGVjX2luZm8gKmNpID0gJm9ueXhfY29kZWNfaW5mbzsKKwl1OCB2OworCWludCBlcnI7CisKKwlpZiAoIW9ueXgtPmNvZGVjLmdwaW8gfHwgIW9ueXgtPmNvZGVjLmdwaW8tPm1ldGhvZHMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiZ3Bpb3Mgbm90IGFzc2lnbmVkISFcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlvbnl4LT5jb2RlYy5ncGlvLT5tZXRob2RzLT5zZXRfaHdfcmVzZXQob255eC0+Y29kZWMuZ3BpbywgMCk7CisJbXNsZWVwKDEpOworCW9ueXgtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPnNldF9od19yZXNldChvbnl4LT5jb2RlYy5ncGlvLCAxKTsKKwltc2xlZXAoMSk7CisJb255eC0+Y29kZWMuZ3Bpby0+bWV0aG9kcy0+c2V0X2h3X3Jlc2V0KG9ueXgtPmNvZGVjLmdwaW8sIDApOworCW1zbGVlcCgxKTsKKwkKKwlpZiAob255eF9yZWdpc3Rlcl9pbml0KG9ueXgpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImZhaWxlZCB0byBpbml0aWFsaXNlIG9ueXggcmVnaXN0ZXJzXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJaWYgKGFvYV9zbmRfZGV2aWNlX25ldyhTTkRSVl9ERVZfTE9XTEVWRUwsIG9ueXgsICZvcHMpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImZhaWxlZCB0byBjcmVhdGUgb255eCBzbmQgZGV2aWNlIVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCS8qIG5vdGhpbmcgY29ubmVjdGVkPyB3aGF0IGEgam9rZSEgKi8KKwlpZiAoKG9ueXgtPmNvZGVjLmNvbm5lY3RlZCAmIDB4RikgPT0gMCkKKwkJcmV0dXJuIC1FTk9UQ09OTjsKKworCS8qIGlmIG5vIGlucHV0cyBhcmUgcHJlc2VudC4uLiAqLworCWlmICgob255eC0+Y29kZWMuY29ubmVjdGVkICYgMHhDKSA9PSAwKSB7CisJCWlmICghb255eC0+Y29kZWNfaW5mbykKKwkJCW9ueXgtPmNvZGVjX2luZm8gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgY29kZWNfaW5mbyksIEdGUF9LRVJORUwpOworCQlpZiAoIW9ueXgtPmNvZGVjX2luZm8pCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJY2kgPSBvbnl4LT5jb2RlY19pbmZvOworCQkqY2kgPSBvbnl4X2NvZGVjX2luZm87CisJCWNpLT50cmFuc2ZlcnMrKzsKKwl9CisKKwkvKiBpZiBubyBvdXRwdXRzIGFyZSBwcmVzZW50Li4uICovCisJaWYgKChvbnl4LT5jb2RlYy5jb25uZWN0ZWQgJiAzKSA9PSAwKSB7CisJCWlmICghb255eC0+Y29kZWNfaW5mbykKKwkJCW9ueXgtPmNvZGVjX2luZm8gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgY29kZWNfaW5mbyksIEdGUF9LRVJORUwpOworCQlpZiAoIW9ueXgtPmNvZGVjX2luZm8pCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJY2kgPSBvbnl4LT5jb2RlY19pbmZvOworCQkvKiB0aGlzIGlzIGZpbmUgYXMgdGhlcmUgaGF2ZSB0byBiZSBpbnB1dHMKKwkJICogaWYgd2UgZW5kIHVwIGluIHRoaXMgcGFydCBvZiB0aGUgY29kZSAqLworCQkqY2kgPSBvbnl4X2NvZGVjX2luZm87CisJCWNpLT50cmFuc2ZlcnNbMV0uZm9ybWF0cyA9IDA7CisJfQorCisJaWYgKG9ueXgtPmNvZGVjLnNvdW5kYnVzX2Rldi0+YXR0YWNoX2NvZGVjKG9ueXgtPmNvZGVjLnNvdW5kYnVzX2RldiwKKwkJCQkJCSAgIGFvYV9nZXRfY2FyZCgpLAorCQkJCQkJICAgY2ksIG9ueXgpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImVycm9yIGNyZWF0aW5nIG9ueXggcGNtXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorI2RlZmluZSBBRERDVEwobikJCQkJCQkJXAorCWRvIHsJCQkJCQkJCVwKKwkJY3RsID0gc25kX2N0bF9uZXcxKCZuLCBvbnl4KTsJCQkJXAorCQlpZiAoY3RsKSB7CQkJCQkJXAorCQkJY3RsLT5pZC5kZXZpY2UgPQkJCQlcCisJCQkJb255eC0+Y29kZWMuc291bmRidXNfZGV2LT5wY20tPmRldmljZTsJXAorCQkJZXJyID0gYW9hX3NuZF9jdGxfYWRkKGN0bCk7CQkJXAorCQkJaWYgKGVycikJCQkJCVwKKwkJCQlnb3RvIGVycm9yOwkJCQlcCisJCX0JCQkJCQkJXAorCX0gd2hpbGUgKDApCisKKwlpZiAob255eC0+Y29kZWMuc291bmRidXNfZGV2LT5wY20pIHsKKwkJLyogZ2l2ZSB0aGUgdXNlciBhcHByb3ByaWF0ZSBjb250cm9scworCQkgKiBkZXBlbmRpbmcgb24gd2hhdCBpbnB1dHMgYXJlIGNvbm5lY3RlZCAqLworCQlpZiAoKG9ueXgtPmNvZGVjLmNvbm5lY3RlZCAmIDB4QykgPT0gMHhDKQorCQkJQUREQ1RMKGNhcHR1cmVfc291cmNlX2NvbnRyb2wpOworCQllbHNlIGlmIChvbnl4LT5jb2RlYy5jb25uZWN0ZWQgJiA0KQorCQkJb255eF9zZXRfY2FwdHVyZV9zb3VyY2Uob255eCwgMCk7CisJCWVsc2UKKwkJCW9ueXhfc2V0X2NhcHR1cmVfc291cmNlKG9ueXgsIDEpOworCQlpZiAob255eC0+Y29kZWMuY29ubmVjdGVkICYgMHhDKQorCQkJQUREQ1RMKGlucHV0Z2Fpbl9jb250cm9sKTsKKworCQkvKiBkZXBlbmRpbmcgb24gd2hhdCBvdXRwdXQgaXMgY29ubmVjdGVkLAorCQkgKiBnaXZlIHRoZSB1c2VyIGFwcHJvcHJpYXRlIGNvbnRyb2xzICovCisJCWlmIChvbnl4LT5jb2RlYy5jb25uZWN0ZWQgJiAxKSB7CisJCQlBRERDVEwodm9sdW1lX2NvbnRyb2wpOworCQkJQUREQ1RMKG11dGVfY29udHJvbCk7CisJCQlBRERDVEwob3ZyMV9jb250cm9sKTsKKwkJCUFERENUTChmbHQwX2NvbnRyb2wpOworCQkJQUREQ1RMKGhwZl9jb250cm9sKTsKKwkJCUFERENUTChkbTEyX2NvbnRyb2wpOworCQkJLyogc3BkaWYgY29udHJvbCBkZWZhdWx0cyB0byBvZmYgKi8KKwkJfQorCQlpZiAob255eC0+Y29kZWMuY29ubmVjdGVkICYgMikgeworCQkJQUREQ1RMKG9ueXhfc3BkaWZfbWFzayk7CisJCQlBRERDVEwob255eF9zcGRpZl9jdHJsKTsKKwkJfQorCQlpZiAoKG9ueXgtPmNvZGVjLmNvbm5lY3RlZCAmIDMpID09IDMpCisJCQlBRERDVEwoc3BkaWZfY29udHJvbCk7CisJCS8qIGlmIG9ubHkgUy9QRElGIGlzIGNvbm5lY3RlZCwgZW5hYmxlIGl0IHVuY29uZGl0aW9uYWxseSAqLworCQlpZiAoKG9ueXgtPmNvZGVjLmNvbm5lY3RlZCAmIDMpID09IDIpIHsKKwkJCW9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19ESUdfSU5GTzQsICZ2KTsKKwkJCXYgfD0gT05ZWF9TUERJRl9FTkFCTEU7CisJCQlvbnl4X3dyaXRlX3JlZ2lzdGVyKG9ueXgsIE9OWVhfUkVHX0RJR19JTkZPNCwgdik7CisJCX0KKwl9CisjdW5kZWYgQUREQ1RMCisJcHJpbnRrKEtFUk5fSU5GTyBQRlggImF0dGFjaGVkIHRvIG9ueXggY29kZWMgdmlhIGkyY1xuIik7CisKKwlyZXR1cm4gMDsKKyBlcnJvcjoKKwlvbnl4LT5jb2RlYy5zb3VuZGJ1c19kZXYtPmRldGFjaF9jb2RlYyhvbnl4LT5jb2RlYy5zb3VuZGJ1c19kZXYsIG9ueXgpOworCXNuZF9kZXZpY2VfZnJlZShhb2FfZ2V0X2NhcmQoKSwgb255eCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgb255eF9leGl0X2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCBvbnl4ICpvbnl4ID0gY29kZWNfdG9fb255eChjb2RlYyk7CisKKwlpZiAoIW9ueXgtPmNvZGVjLnNvdW5kYnVzX2RldikgeworCQlwcmludGsoS0VSTl9FUlIgUEZYICJvbnl4X2V4aXRfY29kZWMgY2FsbGVkIHdpdGhvdXQgc291bmRidXNfZGV2IVxuIik7CisJCXJldHVybjsKKwl9CisJb255eC0+Y29kZWMuc291bmRidXNfZGV2LT5kZXRhY2hfY29kZWMob255eC0+Y29kZWMuc291bmRidXNfZGV2LCBvbnl4KTsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIG9ueXhfZHJpdmVyOworCitzdGF0aWMgaW50IG9ueXhfY3JlYXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKKwkJICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKKwkJICAgICAgIGludCBhZGRyKQoreworCXN0cnVjdCBvbnl4ICpvbnl4OworCXU4IGR1bW15OworCisJb255eCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBvbnl4KSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIW9ueXgpCisJCXJldHVybiAtRU5PTUVNOworCisJbXV0ZXhfaW5pdCgmb255eC0+bXV0ZXgpOworCW9ueXgtPmkyYy5kcml2ZXIgPSAmb255eF9kcml2ZXI7CisJb255eC0+aTJjLmFkYXB0ZXIgPSBhZGFwdGVyOworCW9ueXgtPmkyYy5hZGRyID0gYWRkciAmIDB4N2Y7CisJc3RybGNweShvbnl4LT5pMmMubmFtZSwgIm9ueXggYXVkaW8gY29kZWMiLCBJMkNfTkFNRV9TSVpFLTEpOworCisJaWYgKGkyY19hdHRhY2hfY2xpZW50KCZvbnl4LT5pMmMpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImZhaWxlZCB0byBhdHRhY2ggdG8gaTJjXG4iKTsKKwkJZ290byBmYWlsOworCX0KKworCS8qIHdlIHRyeSB0byByZWFkIGZyb20gcmVnaXN0ZXIgT05ZWF9SRUdfQ09OVFJPTAorCSAqIHRvIGNoZWNrIGlmIHRoZSBjb2RlYyBpcyBwcmVzZW50ICovCisJaWYgKG9ueXhfcmVhZF9yZWdpc3Rlcihvbnl4LCBPTllYX1JFR19DT05UUk9MLCAmZHVtbXkpICE9IDApIHsKKwkJaTJjX2RldGFjaF9jbGllbnQoJm9ueXgtPmkyYyk7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImZhaWxlZCB0byByZWFkIGNvbnRyb2wgcmVnaXN0ZXJcbiIpOworCQlnb3RvIGZhaWw7CisJfQorCisJc3RybGNweShvbnl4LT5jb2RlYy5uYW1lLCAib255eCIsIE1BWF9DT0RFQ19OQU1FX0xFTi0xKTsKKwlvbnl4LT5jb2RlYy5vd25lciA9IFRISVNfTU9EVUxFOworCW9ueXgtPmNvZGVjLmluaXQgPSBvbnl4X2luaXRfY29kZWM7CisJb255eC0+Y29kZWMuZXhpdCA9IG9ueXhfZXhpdF9jb2RlYzsKKwlvbnl4LT5jb2RlYy5ub2RlID0gb2Zfbm9kZV9nZXQobm9kZSk7CisKKwlpZiAoYW9hX2NvZGVjX3JlZ2lzdGVyKCZvbnl4LT5jb2RlYykpIHsKKwkJaTJjX2RldGFjaF9jbGllbnQoJm9ueXgtPmkyYyk7CisJCWdvdG8gZmFpbDsKKwl9CisJcHJpbnRrKEtFUk5fREVCVUcgUEZYICJjcmVhdGVkIGFuZCBhdHRhY2hlZCBvbnl4IGluc3RhbmNlXG4iKTsKKwlyZXR1cm4gMDsKKyBmYWlsOgorCWtmcmVlKG9ueXgpOworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IG9ueXhfaTJjX2F0dGFjaChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpidXNub2RlLCAqZGV2ID0gTlVMTDsKKwlzdHJ1Y3QgcG1hY19pMmNfYnVzICpidXM7CisKKwlidXMgPSBwbWFjX2kyY19hZGFwdGVyX3RvX2J1cyhhZGFwdGVyKTsKKwlpZiAoYnVzID09IE5VTEwpCisJCXJldHVybiAtRU5PREVWOworCWJ1c25vZGUgPSBwbWFjX2kyY19nZXRfYnVzX25vZGUoYnVzKTsKKworCXdoaWxlICgoZGV2ID0gb2ZfZ2V0X25leHRfY2hpbGQoYnVzbm9kZSwgZGV2KSkgIT0gTlVMTCkgeworCQlpZiAoZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LCAicGNtMzA1MiIpKSB7CisJCQl1MzIgKmFkZHI7CisJCQlwcmludGsoS0VSTl9ERUJVRyBQRlggImZvdW5kIHBjbTMwNTJcbiIpOworCQkJYWRkciA9ICh1MzIgKikgZ2V0X3Byb3BlcnR5KGRldiwgInJlZyIsIE5VTEwpOworCQkJaWYgKCFhZGRyKQorCQkJCXJldHVybiAtRU5PREVWOworCQkJcmV0dXJuIG9ueXhfY3JlYXRlKGFkYXB0ZXIsIGRldiwgKCphZGRyKT4+MSk7CisJCX0KKwl9CisKKwkvKiBpZiB0aGF0IGRpZG4ndCB3b3JrLCB0cnkgZGVzcGVyYXRlIG1vZGUgZm9yIG9sZGVyCisJICogbWFjaGluZXMgdGhhdCBoYXZlIHN0dWZmIG1pc3NpbmcgZnJvbSB0aGUgZGV2aWNlIHRyZWUgKi8KKwkKKwlpZiAoIWRldmljZV9pc19jb21wYXRpYmxlKGJ1c25vZGUsICJrMi1pMmMiKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlwcmludGsoS0VSTl9ERUJVRyBQRlggImZvdW5kIGsyLWkyYywgY2hlY2tpbmcgaWYgb255eCBjaGlwIGlzIG9uIGl0XG4iKTsKKwkvKiBwcm9iZSBib3RoIHBvc3NpYmxlIGFkZHJlc3NlcyBmb3IgdGhlIG9ueXggY2hpcCAqLworCWlmIChvbnl4X2NyZWF0ZShhZGFwdGVyLCBOVUxMLCAweDQ2KSA9PSAwKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gb255eF9jcmVhdGUoYWRhcHRlciwgTlVMTCwgMHg0Nyk7Cit9CisKK3N0YXRpYyBpbnQgb255eF9pMmNfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IG9ueXggKm9ueXggPSBjb250YWluZXJfb2YoY2xpZW50LCBzdHJ1Y3Qgb255eCwgaTJjKTsKKwlpbnQgZXJyOworCisJaWYgKChlcnIgPSBpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpKSkKKwkJcmV0dXJuIGVycjsKKwlhb2FfY29kZWNfdW5yZWdpc3Rlcigmb255eC0+Y29kZWMpOworCW9mX25vZGVfcHV0KG9ueXgtPmNvZGVjLm5vZGUpOworCWlmIChvbnl4LT5jb2RlY19pbmZvKQorCQlrZnJlZShvbnl4LT5jb2RlY19pbmZvKTsKKwlrZnJlZShvbnl4KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIG9ueXhfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImFvYV9jb2RlY19vbnl4IiwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJfSwKKwkuYXR0YWNoX2FkYXB0ZXIgPSBvbnl4X2kyY19hdHRhY2gsCisJLmRldGFjaF9jbGllbnQgPSBvbnl4X2kyY19kZXRhY2gsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBvbnl4X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm9ueXhfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IG9ueXhfZXhpdCh2b2lkKQoreworCWkyY19kZWxfZHJpdmVyKCZvbnl4X2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KG9ueXhfaW5pdCk7Cittb2R1bGVfZXhpdChvbnl4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLW9ueXguaCBiL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy1vbnl4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVlZGRhNwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy1vbnl4LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIEFwcGxlIE9uYm9hcmQgQXVkaW8gZHJpdmVyIGZvciBPbnl4IGNvZGVjIChoZWFkZXIpCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisjaWZuZGVmIF9fU05EX0FPQV9DT0RFQ19PTllYX0gKKyNkZWZpbmUgX19TTkRfQU9BX0NPREVDX09OWVhfSAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy1kZXYuaD4KKyNpbmNsdWRlIDxhc20vcG1hY19sb3dfaTJjLmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KKworLyogUENNMzA1MiByZWdpc3RlciBkZWZpbml0aW9ucyAqLworCisvKiB0aGUgYXR0ZW51YXRpb24gcmVnaXN0ZXJzIHRha2UgdmFsdWVzIGZyb20KKyAqIC0xICgwZEIpIHRvIC0xMjcgKC02My4wIGRCKSBvciBvdGhlcnMgKG11dGVkKSAqLworI2RlZmluZSBPTllYX1JFR19EQUNfQVRURU5fTEVGVAkJNjUKKyNkZWZpbmUgRklSU1RSRUdJU1RFUgkJCU9OWVhfUkVHX0RBQ19BVFRFTl9MRUZUCisjZGVmaW5lIE9OWVhfUkVHX0RBQ19BVFRFTl9SSUdIVAk2NgorCisjZGVmaW5lIE9OWVhfUkVHX0NPTlRST0wJCTY3CisjCWRlZmluZSBPTllYX01SU1QJCSgxPDw3KQorIwlkZWZpbmUgT05ZWF9TUlNUCQkoMTw8NikKKyMJZGVmaW5lIE9OWVhfQURQU1YJCSgxPDw1KQorIwlkZWZpbmUgT05ZWF9EQVBTVgkJKDE8PDQpCisjCWRlZmluZSBPTllYX1NJTElDT05WRVJTSU9OCSgxPDwwKQorLyogYWxsIG90aGVycyByZXNlcnZlZCAqLworCisjZGVmaW5lIE9OWVhfUkVHX0RBQ19DT05UUk9MCQk2OAorIwlkZWZpbmUgT05ZWF9PVlIxCQkoMTw8NikKKyMJZGVmaW5lIE9OWVhfTVVURV9SSUdIVAkJKDE8PDEpCisjCWRlZmluZSBPTllYX01VVEVfTEVGVAkJKDE8PDApCisKKyNkZWZpbmUgT05ZWF9SRUdfREFDX0RFRU1QSAkJNjkKKyMJZGVmaW5lIE9OWVhfRElHREVFTVBIX1NISUZUCTUKKyMJZGVmaW5lIE9OWVhfRElHREVFTVBIX01BU0sJKDM8PE9OWVhfRElHREVFTVBIX1NISUZUKQorIwlkZWZpbmUgT05ZWF9ESUdERUVNUEhfQ1RSTAkoMTw8NCkKKworI2RlZmluZSBPTllYX1JFR19EQUNfRklMVEVSCQk3MAorIwlkZWZpbmUgT05ZWF9ST0xMT0ZGX0ZBU1QJKDE8PDUpCisjCWRlZmluZSBPTllYX0RBQ19GSUxURVJfQUxXQVlTCSgxPDwyKQorCisjZGVmaW5lCU9OWVhfUkVHX0RBQ19PVVRQSEFTRQkJNzEKKyMJZGVmaW5lIE9OWVhfT1VUUEhBU0VfSU5WRVJURUQJKDE8PDApCisKKyNkZWZpbmUgT05ZWF9SRUdfQURDX0NPTlRST0wJCTcyCisjCWRlZmluZSBPTllYX0FEQ19JTlBVVF9NSUMJKDE8PDUpCisvKiA4ICsgaW5wdXQgZ2FpbiBpbiBkQiwgdmFsaWQgcmFuZ2UgZm9yIGlucHV0IGdhaW4gaXMgLTQgLi4gMjAgZEIgKi8KKyMJZGVmaW5lIE9OWVhfQURDX1BHQV9HQUlOX01BU0sJMHgxZgorCisjZGVmaW5lIE9OWVhfUkVHX0FEQ19IUEZfQllQQVNTCQk3NQorIwlkZWZpbmUgT05ZWF9IUEZfRElTQUJMRQkJKDE8PDMpCisjCWRlZmluZSBPTllYX0FEQ19IUEZfQUxXQVlTCSgxPDwyKQorCisjZGVmaW5lIE9OWVhfUkVHX0RJR19JTkZPMQkJNzcKKyMJZGVmaW5lIE9OWVhfTUFTS19ESU5fVE9fQlBaCSgxPDw3KQorLyogYml0cyAxLTUgY29udHJvbCBjaGFubmVsIGJpdHMgMS01ICovCisjCWRlZmluZSBPTllYX0RJR09VVF9ESVNBQkxFCSgxPDwwKQorCisjZGVmaW5lIE9OWVhfUkVHX0RJR19JTkZPMgkJNzgKKy8qIGNvbnRyb2xzIGNoYW5uZWwgYml0cyA4LTE1ICovCisKKyNkZWZpbmUgT05ZWF9SRUdfRElHX0lORk8zCQk3OQorLyogY29udHJvbCBjaGFubmVsIGJpdHMgMjQtMjksIGhpZ2ggMiBiaXRzIHJlc2VydmVkICovCisKKyNkZWZpbmUgT05ZWF9SRUdfRElHX0lORk80CQk4MAorIwlkZWZpbmUgT05ZWF9WQUxJREwJCSgxPDw3KQorIwlkZWZpbmUgT05ZWF9WQUxJRFIJCSgxPDw2KQorIwlkZWZpbmUgT05ZWF9TUERJRl9FTkFCTEUJKDE8PDUpCisvKiBsb3dlciA0IGJpdHMgY29udHJvbCBiaXRzIDMyLTM1IG9mIGNoYW5uZWwgY29udHJvbCBhbmQgd29yZCBsZW5ndGggKi8KKyMJZGVmaW5lIE9OWVhfV09SRExFTl9NQVNLCSgweEYpCisKKyNlbmRpZiAvKiBfX1NORF9BT0FfQ09ERUNfT05ZWF9IICovCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtdGFzLWdhaW4tdGFibGUuaCBiL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy10YXMtZ2Fpbi10YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZmE2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtdGFzLWdhaW4tdGFibGUuaApAQCAtMCwwICsxLDIwOSBAQAorLyoKKyBUaGlzIGlzIHRoZSBwcm9ncmFtIHVzZWQgdG8gZ2VuZXJhdGUgYmVsb3cgdGFibGUuCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPG1hdGguaD4KK2ludCBtYWluKCkgeworICBpbnQgZEIyOworICBwcmludGYoIi8iICIqIFRoaXMgZmlsZSBpcyBvbmx5IGluY2x1ZGVkIGV4YWN0bHkgb25jZSFcbiIpOworICBwcmludGYoIiAqXG4iKTsKKyAgcHJpbnRmKCIgKiBJZiB0aGV5J2Qgb25seSB0ZWxsIHVzIHRoYXQgZ2VuZXJhdGluZyB0aGlzIHRhYmxlIHdhc1xuIik7CisgIHByaW50ZigiICogYXMgZWFzeSBhcyBjYWxjdWxhdGluZ1xuIik7CisgIHByaW50ZigiICogICAgICBod3ZhbHVlID0gMTA0ODU3Ni4wKmV4cCgwLjA1NzU2NDYyOCpkQioyKVxuIik7CisgIHByaW50ZigiICogOikgKiIgIi9cbiIpOworICBwcmludGYoInN0YXRpYyBpbnQgdGFzX2dhaW50YWJsZVtdID0ge1xuIik7CisgIHByaW50ZigiCTB4MDAwMDAwLCAvIiAiKiAtaW5maW5pdHkgZEIgKiIgIi9cbiIpOworICBmb3IgKGRCMj0tMTQwO2RCMjw9MzY7ZEIyKyspCisgICAgcHJpbnRmKCIJMHglLjZ4LCAvIiAiKiAlLTAyLjFmIGRCICoiICIvXG4iLCAoaW50KSgxMDQ4NTc2LjAqZXhwKDAuMDU3NTY0NjI4KmRCMikpLCBkQjIvMi4wKTsKKyAgcHJpbnRmKCJ9O1xuXG4iKTsKK30KKworKi8KKworLyogVGhpcyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgZXhhY3RseSBvbmNlIQorICoKKyAqIElmIHRoZXknZCBvbmx5IHRlbGwgdXMgdGhhdCBnZW5lcmF0aW5nIHRoaXMgdGFibGUgd2FzCisgKiBhcyBlYXN5IGFzIGNhbGN1bGF0aW5nCisgKiAgICAgIGh3dmFsdWUgPSAxMDQ4NTc2LjAqZXhwKDAuMDU3NTY0NjI4KmRCKjIpCisgKiA6KSAqLworc3RhdGljIGludCB0YXNfZ2FpbnRhYmxlW10gPSB7CisJMHgwMDAwMDAsIC8qIC1pbmZpbml0eSBkQiAqLworCTB4MDAwMTRiLCAvKiAtNzAuMCBkQiAqLworCTB4MDAwMTVmLCAvKiAtNjkuNSBkQiAqLworCTB4MDAwMTc0LCAvKiAtNjkuMCBkQiAqLworCTB4MDAwMThhLCAvKiAtNjguNSBkQiAqLworCTB4MDAwMWExLCAvKiAtNjguMCBkQiAqLworCTB4MDAwMWJhLCAvKiAtNjcuNSBkQiAqLworCTB4MDAwMWQ0LCAvKiAtNjcuMCBkQiAqLworCTB4MDAwMWYwLCAvKiAtNjYuNSBkQiAqLworCTB4MDAwMjBkLCAvKiAtNjYuMCBkQiAqLworCTB4MDAwMjJjLCAvKiAtNjUuNSBkQiAqLworCTB4MDAwMjRkLCAvKiAtNjUuMCBkQiAqLworCTB4MDAwMjcwLCAvKiAtNjQuNSBkQiAqLworCTB4MDAwMjk1LCAvKiAtNjQuMCBkQiAqLworCTB4MDAwMmJjLCAvKiAtNjMuNSBkQiAqLworCTB4MDAwMmU2LCAvKiAtNjMuMCBkQiAqLworCTB4MDAwMzEyLCAvKiAtNjIuNSBkQiAqLworCTB4MDAwMzQwLCAvKiAtNjIuMCBkQiAqLworCTB4MDAwMzcyLCAvKiAtNjEuNSBkQiAqLworCTB4MDAwM2E2LCAvKiAtNjEuMCBkQiAqLworCTB4MDAwM2RkLCAvKiAtNjAuNSBkQiAqLworCTB4MDAwNDE4LCAvKiAtNjAuMCBkQiAqLworCTB4MDAwNDU2LCAvKiAtNTkuNSBkQiAqLworCTB4MDAwNDk4LCAvKiAtNTkuMCBkQiAqLworCTB4MDAwNGRlLCAvKiAtNTguNSBkQiAqLworCTB4MDAwNTI4LCAvKiAtNTguMCBkQiAqLworCTB4MDAwNTc2LCAvKiAtNTcuNSBkQiAqLworCTB4MDAwNWM5LCAvKiAtNTcuMCBkQiAqLworCTB4MDAwNjIwLCAvKiAtNTYuNSBkQiAqLworCTB4MDAwNjdkLCAvKiAtNTYuMCBkQiAqLworCTB4MDAwNmUwLCAvKiAtNTUuNSBkQiAqLworCTB4MDAwNzQ4LCAvKiAtNTUuMCBkQiAqLworCTB4MDAwN2I3LCAvKiAtNTQuNSBkQiAqLworCTB4MDAwODJjLCAvKiAtNTQuMCBkQiAqLworCTB4MDAwOGE4LCAvKiAtNTMuNSBkQiAqLworCTB4MDAwOTJiLCAvKiAtNTMuMCBkQiAqLworCTB4MDAwOWI2LCAvKiAtNTIuNSBkQiAqLworCTB4MDAwYTQ5LCAvKiAtNTIuMCBkQiAqLworCTB4MDAwYWU1LCAvKiAtNTEuNSBkQiAqLworCTB4MDAwYjhiLCAvKiAtNTEuMCBkQiAqLworCTB4MDAwYzNhLCAvKiAtNTAuNSBkQiAqLworCTB4MDAwY2YzLCAvKiAtNTAuMCBkQiAqLworCTB4MDAwZGI4LCAvKiAtNDkuNSBkQiAqLworCTB4MDAwZTg4LCAvKiAtNDkuMCBkQiAqLworCTB4MDAwZjY0LCAvKiAtNDguNSBkQiAqLworCTB4MDAxMDRlLCAvKiAtNDguMCBkQiAqLworCTB4MDAxMTQ1LCAvKiAtNDcuNSBkQiAqLworCTB4MDAxMjRiLCAvKiAtNDcuMCBkQiAqLworCTB4MDAxMzYxLCAvKiAtNDYuNSBkQiAqLworCTB4MDAxNDg3LCAvKiAtNDYuMCBkQiAqLworCTB4MDAxNWJlLCAvKiAtNDUuNSBkQiAqLworCTB4MDAxNzA4LCAvKiAtNDUuMCBkQiAqLworCTB4MDAxODY1LCAvKiAtNDQuNSBkQiAqLworCTB4MDAxOWQ4LCAvKiAtNDQuMCBkQiAqLworCTB4MDAxYjYwLCAvKiAtNDMuNSBkQiAqLworCTB4MDAxY2ZmLCAvKiAtNDMuMCBkQiAqLworCTB4MDAxZWI3LCAvKiAtNDIuNSBkQiAqLworCTB4MDAyMDg5LCAvKiAtNDIuMCBkQiAqLworCTB4MDAyMjc2LCAvKiAtNDEuNSBkQiAqLworCTB4MDAyNDgxLCAvKiAtNDEuMCBkQiAqLworCTB4MDAyNmFiLCAvKiAtNDAuNSBkQiAqLworCTB4MDAyOGY1LCAvKiAtNDAuMCBkQiAqLworCTB4MDAyYjYzLCAvKiAtMzkuNSBkQiAqLworCTB4MDAyZGY1LCAvKiAtMzkuMCBkQiAqLworCTB4MDAzMGFlLCAvKiAtMzguNSBkQiAqLworCTB4MDAzMzkwLCAvKiAtMzguMCBkQiAqLworCTB4MDAzNjllLCAvKiAtMzcuNSBkQiAqLworCTB4MDAzOWRiLCAvKiAtMzcuMCBkQiAqLworCTB4MDAzZDQ5LCAvKiAtMzYuNSBkQiAqLworCTB4MDA0MGVhLCAvKiAtMzYuMCBkQiAqLworCTB4MDA0NGMzLCAvKiAtMzUuNSBkQiAqLworCTB4MDA0OGQ2LCAvKiAtMzUuMCBkQiAqLworCTB4MDA0ZDI3LCAvKiAtMzQuNSBkQiAqLworCTB4MDA1MWI5LCAvKiAtMzQuMCBkQiAqLworCTB4MDA1NjkxLCAvKiAtMzMuNSBkQiAqLworCTB4MDA1YmIyLCAvKiAtMzMuMCBkQiAqLworCTB4MDA2MTIxLCAvKiAtMzIuNSBkQiAqLworCTB4MDA2NmUzLCAvKiAtMzIuMCBkQiAqLworCTB4MDA2Y2ZiLCAvKiAtMzEuNSBkQiAqLworCTB4MDA3MzcwLCAvKiAtMzEuMCBkQiAqLworCTB4MDA3YTQ4LCAvKiAtMzAuNSBkQiAqLworCTB4MDA4MTg2LCAvKiAtMzAuMCBkQiAqLworCTB4MDA4OTMzLCAvKiAtMjkuNSBkQiAqLworCTB4MDA5MTU0LCAvKiAtMjkuMCBkQiAqLworCTB4MDA5OWYxLCAvKiAtMjguNSBkQiAqLworCTB4MDBhMzEwLCAvKiAtMjguMCBkQiAqLworCTB4MDBhY2JhLCAvKiAtMjcuNSBkQiAqLworCTB4MDBiNmY2LCAvKiAtMjcuMCBkQiAqLworCTB4MDBjMWNkLCAvKiAtMjYuNSBkQiAqLworCTB4MDBjZDQ5LCAvKiAtMjYuMCBkQiAqLworCTB4MDBkOTczLCAvKiAtMjUuNSBkQiAqLworCTB4MDBlNjU1LCAvKiAtMjUuMCBkQiAqLworCTB4MDBmM2ZiLCAvKiAtMjQuNSBkQiAqLworCTB4MDEwMjcwLCAvKiAtMjQuMCBkQiAqLworCTB4MDExMWMwLCAvKiAtMjMuNSBkQiAqLworCTB4MDEyMWY5LCAvKiAtMjMuMCBkQiAqLworCTB4MDEzMzI4LCAvKiAtMjIuNSBkQiAqLworCTB4MDE0NTViLCAvKiAtMjIuMCBkQiAqLworCTB4MDE1OGEyLCAvKiAtMjEuNSBkQiAqLworCTB4MDE2ZDBlLCAvKiAtMjEuMCBkQiAqLworCTB4MDE4MmFmLCAvKiAtMjAuNSBkQiAqLworCTB4MDE5OTk5LCAvKiAtMjAuMCBkQiAqLworCTB4MDFiMWRlLCAvKiAtMTkuNSBkQiAqLworCTB4MDFjYjk0LCAvKiAtMTkuMCBkQiAqLworCTB4MDFlNmNmLCAvKiAtMTguNSBkQiAqLworCTB4MDIwM2E3LCAvKiAtMTguMCBkQiAqLworCTB4MDIyMjM1LCAvKiAtMTcuNSBkQiAqLworCTB4MDI0MjkzLCAvKiAtMTcuMCBkQiAqLworCTB4MDI2NGRiLCAvKiAtMTYuNSBkQiAqLworCTB4MDI4OTJjLCAvKiAtMTYuMCBkQiAqLworCTB4MDJhZmEzLCAvKiAtMTUuNSBkQiAqLworCTB4MDJkODYyLCAvKiAtMTUuMCBkQiAqLworCTB4MDMwMzhhLCAvKiAtMTQuNSBkQiAqLworCTB4MDMzMTQyLCAvKiAtMTQuMCBkQiAqLworCTB4MDM2MWFmLCAvKiAtMTMuNSBkQiAqLworCTB4MDM5NGZhLCAvKiAtMTMuMCBkQiAqLworCTB4MDNjYjUwLCAvKiAtMTIuNSBkQiAqLworCTB4MDQwNGRlLCAvKiAtMTIuMCBkQiAqLworCTB4MDQ0MWQ1LCAvKiAtMTEuNSBkQiAqLworCTB4MDQ4MjY4LCAvKiAtMTEuMCBkQiAqLworCTB4MDRjNmQwLCAvKiAtMTAuNSBkQiAqLworCTB4MDUwZjQ0LCAvKiAtMTAuMCBkQiAqLworCTB4MDU1YzA0LCAvKiAtOS41IGRCICovCisJMHgwNWFkNTAsIC8qIC05LjAgZEIgKi8KKwkweDA2MDM2ZSwgLyogLTguNSBkQiAqLworCTB4MDY1ZWE1LCAvKiAtOC4wIGRCICovCisJMHgwNmJmNDQsIC8qIC03LjUgZEIgKi8KKwkweDA3MjU5ZCwgLyogLTcuMCBkQiAqLworCTB4MDc5MjA3LCAvKiAtNi41IGRCICovCisJMHgwODA0ZGMsIC8qIC02LjAgZEIgKi8KKwkweDA4N2U4MCwgLyogLTUuNSBkQiAqLworCTB4MDhmZjU5LCAvKiAtNS4wIGRCICovCisJMHgwOTg3ZDUsIC8qIC00LjUgZEIgKi8KKwkweDBhMTg2NiwgLyogLTQuMCBkQiAqLworCTB4MGFiMTg5LCAvKiAtMy41IGRCICovCisJMHgwYjUzYmUsIC8qIC0zLjAgZEIgKi8KKwkweDBiZmY5MSwgLyogLTIuNSBkQiAqLworCTB4MGNiNTkxLCAvKiAtMi4wIGRCICovCisJMHgwZDc2NWEsIC8qIC0xLjUgZEIgKi8KKwkweDBlNDI5MCwgLyogLTEuMCBkQiAqLworCTB4MGYxYWRmLCAvKiAtMC41IGRCICovCisJMHgxMDAwMDAsIC8qIDAuMCBkQiAqLworCTB4MTBmMmI0LCAvKiAwLjUgZEIgKi8KKwkweDExZjNjOSwgLyogMS4wIGRCICovCisJMHgxMzA0MWEsIC8qIDEuNSBkQiAqLworCTB4MTQyNDhlLCAvKiAyLjAgZEIgKi8KKwkweDE1NTYxYSwgLyogMi41IGRCICovCisJMHgxNjk5YzAsIC8qIDMuMCBkQiAqLworCTB4MTdmMDk0LCAvKiAzLjUgZEIgKi8KKwkweDE5NWJiOCwgLyogNC4wIGRCICovCisJMHgxYWRjNjEsIC8qIDQuNSBkQiAqLworCTB4MWM3M2Q1LCAvKiA1LjAgZEIgKi8KKwkweDFlMjM2ZCwgLyogNS41IGRCICovCisJMHgxZmVjOTgsIC8qIDYuMCBkQiAqLworCTB4MjFkMGQ5LCAvKiA2LjUgZEIgKi8KKwkweDIzZDFjZCwgLyogNy4wIGRCICovCisJMHgyNWYxMjUsIC8qIDcuNSBkQiAqLworCTB4MjgzMGFmLCAvKiA4LjAgZEIgKi8KKwkweDJhOTI1NCwgLyogOC41IGRCICovCisJMHgyZDE4MTgsIC8qIDkuMCBkQiAqLworCTB4MmZjNDIwLCAvKiA5LjUgZEIgKi8KKwkweDMyOThiMCwgLyogMTAuMCBkQiAqLworCTB4MzU5ODJmLCAvKiAxMC41IGRCICovCisJMHgzOGM1MjgsIC8qIDExLjAgZEIgKi8KKwkweDNjMjI0YywgLyogMTEuNSBkQiAqLworCTB4M2ZiMjc4LCAvKiAxMi4wIGRCICovCisJMHg0Mzc4YjAsIC8qIDEyLjUgZEIgKi8KKwkweDQ3NzgyOSwgLyogMTMuMCBkQiAqLworCTB4NGJiNDQ2LCAvKiAxMy41IGRCICovCisJMHg1MDMwYTEsIC8qIDE0LjAgZEIgKi8KKwkweDU0ZjEwNiwgLyogMTQuNSBkQiAqLworCTB4NTlmOTgwLCAvKiAxNS4wIGRCICovCisJMHg1ZjRlNTIsIC8qIDE1LjUgZEIgKi8KKwkweDY0ZjQwMywgLyogMTYuMCBkQiAqLworCTB4NmFlZjVlLCAvKiAxNi41IGRCICovCisJMHg3MTQ1NzUsIC8qIDE3LjAgZEIgKi8KKwkweDc3ZmJhYSwgLyogMTcuNSBkQiAqLworCTB4N2YxN2FmLCAvKiAxOC4wIGRCICovCit9OworCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtdGFzLmMgYi9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtdGFzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUzOWZmNgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy10YXMuYwpAQCAtMCwwICsxLDY1NCBAQAorLyoKKyAqIEFwcGxlIE9uYm9hcmQgQXVkaW8gZHJpdmVyIGZvciB0YXMgY29kZWMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorICoKKyAqIEdQTCB2MiwgY2FuIGJlIGZvdW5kIGluIENPUFlJTkcuCisgKgorICogT3BlbiBxdWVzdGlvbnM6CisgKiAgLSBIb3cgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAzMDA0IGFuZCB2ZXJzaW9ucz8KKyAqCisgKiBGSVhNRXM6CisgKiAgLSBUaGlzIGNvZGVjIGRyaXZlciBkb2Vzbid0IGhvbm91ciB0aGUgJ2Nvbm5lY3RlZCcKKyAqICAgIHByb3BlcnR5IG9mIHRoZSBhb2FfY29kZWMgc3RydWN0LCBoZW5jZSBpZgorICogICAgaXQgaXMgdXNlZCBpbiBtYWNoaW5lcyB3aGVyZSBub3QgZXZlcnl0aGluZyBpcworICogICAgY29ubmVjdGVkIGl0IHdpbGwgZGlzcGxheSB3cm9uZyBtaXhlciBlbGVtZW50cy4KKyAqICAtIERyaXZlciBhc3N1bWVzIHRoYXQgdGhlIG1pY3JvcGhvbmUgaXMgYWx3YXlzCisgKiAgICBtb25hdXJlYWwgYW5kIGNvbm5lY3RlZCB0byB0aGUgcmlnaHQgY2hhbm5lbCBvZgorICogICAgdGhlIGlucHV0LiBUaGlzIHNob3VsZCBhbHNvIGJlIGEgY29kZWMtZGVwZW5kZW50CisgKiAgICBmbGFnLCBtYXliZSB0aGUgY29kZWMgc2hvdWxkIGhhdmUgMyBkaWZmZXJlbnQKKyAqICAgIGJpdHMgZm9yIHRoZSB0aHJlZSBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyBob3cKKyAqICAgIGl0IGNhbiBiZSBob29rZWQgdXAuLi4KKyAqICAgIEJ1dCBhcyBsb25nIGFzIEkgZG9uJ3Qgc2VlIGFueSBoYXJkd2FyZSBob29rZWQKKyAqICAgIHVwIHRoYXQgd2F5Li4uCisgKiAgLSBBcyBBcHBsZSBub3RlcyBpbiB0aGVpciBjb2RlLCB0aGUgdGFzMzAwNCBzZWVtcworICogICAgdG8gZGVsYXkgdGhlIHJpZ2h0IGNoYW5uZWwgYnkgb25lIHNhbXBsZS4gWW91IGNhbgorICogICAgc2VlIHRoaXMgd2hlbiBmb3IgZXhhbXBsZSByZWNvcmRpbmcgc3RlcmVvIGluCisgKiAgICBhdWRhY2l0eSwgb3IgcmVjb3JkaW5nIHRoZSB0YXMgb3V0cHV0IHZpYSBjYWJsZQorICogICAgb24gYW5vdGhlciBtYWNoaW5lICh1c2UgYSBzaW51cyBnZW5lcmF0b3Igb3Igc28pLgorICogICAgSSB0cmllZCBwcm9ncmFtbWluZyB0aGUgQmlRdWFkcyBidXQgY291bGRuJ3QKKyAqICAgIG1ha2UgdGhlIGRlbGF5IHdvcmssIG1heWJlIHNvbWVvbmUgY2FuIHJlYWQgdGhlCisgKiAgICBkYXRhc2hlZXQgYW5kIGZpeCBpdC4gVGhlIHJlbGV2YW50IEFwcGxlIGNvbW1lbnQKKyAqICAgIGlzIGluIEFwcGxlVEFTMzAwNEF1ZGlvLmNwcCBsaW5lcyAxNjM3IGZmLiBOb3RlCisgKiAgICB0aGF0IHRoZWlyIGNvbW1lbnQgZGVzY3JpYmluZyBob3cgdGhleSBwcm9ncmFtCisgKiAgICB0aGUgZmlsdGVycyBzdWNrcy4uLgorICoKKyAqIE90aGVyIHRoaW5nczoKKyAqICAtIHRoaXMgc2hvdWxkIGFjdHVhbGx5IHJlZ2lzdGVyICp0d28qIGFvYV9jb2RlYworICogICAgc3RydWN0cyBzaW5jZSBpdCBoYXMgdHdvIGlucHV0cy4gVGhlbiBpdCBtdXN0CisgKiAgICB1c2UgdGhlIHByZXBhcmUgY2FsbGJhY2sgdG8gZm9yYmlkIHJ1bm5pbmcgdGhlCisgKiAgICBzZWNvbmRhcnkgb3V0cHV0IG9uIGEgZGlmZmVyZW50IGNsb2NrLgorICogICAgQWxzbywgd2hhdGV2ZXIgYnVzIGtub3dzIGhvdyB0byBkbyB0aGlzIG11c3QKKyAqICAgIHByb3ZpZGUgdHdvIHNvdW5kYnVzX2RldiBkZXZpY2VzIGFuZCB0aGUgZmFicmljCisgKiAgICBtdXN0IGJlIGFibGUgdG8gbGluayB0aGVtIGNvcnJlY3RseS4KKyAqCisgKiAgICBJIGRvbid0IGV2ZW4ga25vdyBpZiBBcHBsZSBldmVyIHVzZXMgdGhlIHNlY29uZAorICogICAgcG9ydCBvbiB0aGUgdGFzMzAwNCB0aG91Z2gsIEkgZG9uJ3QgdGhpbmsgdGhlaXIKKyAqICAgIGkycyBjb250cm9sbGVycyBjYW4gZXZlbiBkbyBpdC4gT1RPSCwgdGhleSBhbGwKKyAqICAgIGRlcml2ZSB0aGUgY2xvY2tzIGZyb20gY29tbW9uIGNsb2Nrcywgc28gaXQKKyAqICAgIG1pZ2h0IGp1c3QgYmUgcG9zc2libGUuIFRoZSBmcmFtZXdvcmsgYWxsb3dzIHRoZQorICogICAgY29kZWMgdG8gcmVmaW5lIHRoZSB0cmFuc2Zlcl9pbmZvIGl0ZW1zIGluIHRoZQorICogICAgdXNhYmxlIGNhbGxiYWNrLCBzbyB3ZSBjYW4gc2ltcGx5IHJlbW92ZSB0aGUKKyAqICAgIHJhdGVzIHRoZSBzZWNvbmQgaW5zdGFuY2UgaXMgbm90IHVzaW5nIHdoZW4gaXQKKyAqICAgIGFjdHVhbGx5IGlzIGluIHVzZS4KKyAqICAgIE1heWJlIHdlJ2xsIG5lZWQgdG8gbWFrZSB0aGUgc291bmQgYnVzc2VzIGhhdmUKKyAqICAgIGEgJ2Nsb2NrIGdyb3VwIGlkJyB2YWx1ZSBzbyB0aGUgY29kZWMgY2FuCisgKiAgICBkZXRlcm1pbmUgaWYgdGhlIHR3byBvdXRwdXRzIGNhbiBiZSBkcml2ZW4gYXQKKyAqICAgIHRoZSBzYW1lIHRpbWUuIEJ1dCB0aGF0IGlzIGxpa2VseSBvdmVya2lsbCwgdXAKKyAqICAgIHRvIHRoZSBmYWJyaWMgdG8gbm90IGxpbmsgdGhlbSB1cCBpbmNvcnJlY3RseSwKKyAqICAgIGFuZCB1cCB0byB0aGUgaGFyZHdhcmUgZGVzaWduZXIgdG8gbm90IHdpcmUKKyAqICAgIHRoZW0gdXAgaW4gc29tZSB3ZWlyZCB1bnVzYWJsZSB3YXkuCisgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMtZGV2Lmg+CisjaW5jbHVkZSA8YXNtL3BtYWNfbG93X2kyYy5oPgorI2luY2x1ZGUgPGFzbS9wcm9tLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KK01PRFVMRV9BVVRIT1IoIkpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oInRhcyBjb2RlYyBkcml2ZXIgZm9yIHNuZC1hb2EiKTsKKworI2luY2x1ZGUgInNuZC1hb2EtY29kZWMtdGFzLmgiCisjaW5jbHVkZSAic25kLWFvYS1jb2RlYy10YXMtZ2Fpbi10YWJsZS5oIgorI2luY2x1ZGUgIi4uL2FvYS5oIgorI2luY2x1ZGUgIi4uL3NvdW5kYnVzL3NvdW5kYnVzLmgiCisKKworI2RlZmluZSBQRlggInNuZC1hb2EtY29kZWMtdGFzOiAiCisKK3N0cnVjdCB0YXMgeworCXN0cnVjdCBhb2FfY29kZWMJY29kZWM7CisJc3RydWN0IGkyY19jbGllbnQJaTJjOworCXUzMgkJCW11dGVkX2w6MSwgbXV0ZWRfcjoxLAorCQkJCWNvbnRyb2xzX2NyZWF0ZWQ6MTsKKwl1OAkJCWNhY2hlZF92b2x1bWVfbCwgY2FjaGVkX3ZvbHVtZV9yOworCXU4CQkJbWl4ZXJfbFszXSwgbWl4ZXJfclszXTsKKwl1OAkJCWFjcjsKK307CisKK3N0YXRpYyBzdHJ1Y3QgdGFzICpjb2RlY190b190YXMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihjb2RlYywgc3RydWN0IHRhcywgY29kZWMpOworfQorCitzdGF0aWMgaW5saW5lIGludCB0YXNfd3JpdGVfcmVnKHN0cnVjdCB0YXMgKnRhcywgdTggcmVnLCB1OCBsZW4sIHU4ICpkYXRhKQoreworCWlmIChsZW4gPT0gMSkKKwkJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoJnRhcy0+aTJjLCByZWcsICpkYXRhKTsKKwllbHNlCisJCXJldHVybiBpMmNfc21idXNfd3JpdGVfaTJjX2Jsb2NrX2RhdGEoJnRhcy0+aTJjLCByZWcsIGxlbiwgZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIHRhc19zZXRfdm9sdW1lKHN0cnVjdCB0YXMgKnRhcykKK3sKKwl1OCBibG9ja1s2XTsKKwlpbnQgdG1wOworCXU4IGxlZnQsIHJpZ2h0OworCisJbGVmdCA9IHRhcy0+Y2FjaGVkX3ZvbHVtZV9sOworCXJpZ2h0ID0gdGFzLT5jYWNoZWRfdm9sdW1lX3I7CisKKwlpZiAobGVmdCA+IDE3NykgbGVmdCA9IDE3NzsKKwlpZiAocmlnaHQgPiAxNzcpIHJpZ2h0ID0gMTc3OworCisJaWYgKHRhcy0+bXV0ZWRfbCkgbGVmdCA9IDA7CisJaWYgKHRhcy0+bXV0ZWRfcikgcmlnaHQgPSAwOworCisJLyogYW5hbHlzaW5nIHRoZSB2b2x1bWUgYW5kIG1peGVyIHRhYmxlcyBzaG93cworCSAqIHRoYXQgdGhleSBhcmUgc2ltaWxhciBlbm91Z2ggd2hlbiB3ZSBzaGlmdAorCSAqIHRoZSBtaXhlciB0YWJsZSBkb3duIGJ5IDQgYml0cy4gVGhlIGVycm9yCisJICogaXMgbWluaXNjdWxlLCBpbiBqdXN0IG9uZSBpdGVtIHRoZSBlcnJvcgorCSAqIGlzIDEsIGF0IGEgdmFsdWUgb2YgMHgwN2YxN2IgKG1peGVyIHRhYmxlCisJICogdmFsdWUgaXMgMHgwN2YxN2EpICovCisJdG1wID0gdGFzX2dhaW50YWJsZVtsZWZ0XTsKKwlibG9ja1swXSA9IHRtcD4+MjA7CisJYmxvY2tbMV0gPSB0bXA+PjEyOworCWJsb2NrWzJdID0gdG1wPj40OworCXRtcCA9IHRhc19nYWludGFibGVbcmlnaHRdOworCWJsb2NrWzNdID0gdG1wPj4yMDsKKwlibG9ja1s0XSA9IHRtcD4+MTI7CisJYmxvY2tbNV0gPSB0bXA+PjQ7CisJdGFzX3dyaXRlX3JlZyh0YXMsIFRBU19SRUdfVk9MLCA2LCBibG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIHRhc19zZXRfbWl4ZXIoc3RydWN0IHRhcyAqdGFzKQoreworCXU4IGJsb2NrWzldOworCWludCB0bXAsIGk7CisJdTggdmFsOworCisJZm9yIChpPTA7aTwzO2krKykgeworCQl2YWwgPSB0YXMtPm1peGVyX2xbaV07CisJCWlmICh2YWwgPiAxNzcpIHZhbCA9IDE3NzsKKwkJdG1wID0gdGFzX2dhaW50YWJsZVt2YWxdOworCQlibG9ja1szKmkrMF0gPSB0bXA+PjE2OworCQlibG9ja1szKmkrMV0gPSB0bXA+Pjg7CisJCWJsb2NrWzMqaSsyXSA9IHRtcDsKKwl9CisJdGFzX3dyaXRlX3JlZyh0YXMsIFRBU19SRUdfTE1JWCwgOSwgYmxvY2spOworCisJZm9yIChpPTA7aTwzO2krKykgeworCQl2YWwgPSB0YXMtPm1peGVyX3JbaV07CisJCWlmICh2YWwgPiAxNzcpIHZhbCA9IDE3NzsKKwkJdG1wID0gdGFzX2dhaW50YWJsZVt2YWxdOworCQlibG9ja1szKmkrMF0gPSB0bXA+PjE2OworCQlibG9ja1szKmkrMV0gPSB0bXA+Pjg7CisJCWJsb2NrWzMqaSsyXSA9IHRtcDsKKwl9CisJdGFzX3dyaXRlX3JlZyh0YXMsIFRBU19SRUdfUk1JWCwgOSwgYmxvY2spOworfQorCisvKiBhbHNhIHN0dWZmICovCisKK3N0YXRpYyBpbnQgdGFzX2Rldl9yZWdpc3RlcihzdHJ1Y3Qgc25kX2RldmljZSAqZGV2KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9kZXZpY2Vfb3BzIG9wcyA9IHsKKwkuZGV2X3JlZ2lzdGVyID0gdGFzX2Rldl9yZWdpc3RlciwKK307CisKK3N0YXRpYyBpbnQgdGFzX3NuZF92b2xfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQoreworCXVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSOworCXVpbmZvLT5jb3VudCA9IDI7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWluID0gMDsKKwl1aW5mby0+dmFsdWUuaW50ZWdlci5tYXggPSAxNzc7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGFzX3NuZF92b2xfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gdGFzLT5jYWNoZWRfdm9sdW1lX2w7CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMV0gPSB0YXMtPmNhY2hlZF92b2x1bWVfcjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0YXNfc25kX3ZvbF9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHRhcyAqdGFzID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCisJaWYgKHRhcy0+Y2FjaGVkX3ZvbHVtZV9sID09IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdCisJICYmIHRhcy0+Y2FjaGVkX3ZvbHVtZV9yID09IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdKQorCQlyZXR1cm4gMDsKKworCXRhcy0+Y2FjaGVkX3ZvbHVtZV9sID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07CisJdGFzLT5jYWNoZWRfdm9sdW1lX3IgPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXTsKKwl0YXNfc2V0X3ZvbHVtZSh0YXMpOworCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgdm9sdW1lX2NvbnRyb2wgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiTWFzdGVyIFBsYXliYWNrIFZvbHVtZSIsCisJLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUsCisJLmluZm8gPSB0YXNfc25kX3ZvbF9pbmZvLAorCS5nZXQgPSB0YXNfc25kX3ZvbF9nZXQsCisJLnB1dCA9IHRhc19zbmRfdm9sX3B1dCwKK307CisKK3N0YXRpYyBpbnQgdGFzX3NuZF9tdXRlX2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTjsKKwl1aW5mby0+Y291bnQgPSAyOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IDA7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0YXNfc25kX211dGVfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gIXRhcy0+bXV0ZWRfbDsKKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXSA9ICF0YXMtPm11dGVkX3I7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGFzX3NuZF9tdXRlX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3QgdGFzICp0YXMgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisKKwlpZiAodGFzLT5tdXRlZF9sID09ICF1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXQorCSAmJiB0YXMtPm11dGVkX3IgPT0gIXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdKQorCQlyZXR1cm4gMDsKKworCXRhcy0+bXV0ZWRfbCA9ICF1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsKKwl0YXMtPm11dGVkX3IgPSAhdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMV07CisJdGFzX3NldF92b2x1bWUodGFzKTsKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG11dGVfY29udHJvbCA9IHsKKwkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKKwkubmFtZSA9ICJNYXN0ZXIgUGxheWJhY2sgU3dpdGNoIiwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkuaW5mbyA9IHRhc19zbmRfbXV0ZV9pbmZvLAorCS5nZXQgPSB0YXNfc25kX211dGVfZ2V0LAorCS5wdXQgPSB0YXNfc25kX211dGVfcHV0LAorfTsKKworc3RhdGljIGludCB0YXNfc25kX21peGVyX2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjsKKwl1aW5mby0+Y291bnQgPSAyOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IDA7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gMTc3OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRhc19zbmRfbWl4ZXJfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwlpbnQgaWR4ID0ga2NvbnRyb2wtPnByaXZhdGVfdmFsdWU7CisKKwl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IHRhcy0+bWl4ZXJfbFtpZHhdOworCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdID0gdGFzLT5taXhlcl9yW2lkeF07CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0YXNfc25kX21peGVyX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3QgdGFzICp0YXMgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJaW50IGlkeCA9IGtjb250cm9sLT5wcml2YXRlX3ZhbHVlOworCisJaWYgKHRhcy0+bWl4ZXJfbFtpZHhdID09IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdCisJICYmIHRhcy0+bWl4ZXJfcltpZHhdID09IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdKQorCQlyZXR1cm4gMDsKKworCXRhcy0+bWl4ZXJfbFtpZHhdID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07CisJdGFzLT5taXhlcl9yW2lkeF0gPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXTsKKworCXRhc19zZXRfbWl4ZXIodGFzKTsKKwlyZXR1cm4gMTsKK30KKworI2RlZmluZSBNSVhFUl9DT05UUk9MKG4sZGVzY3IsaWR4KQkJCVwKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBuIyNfY29udHJvbCA9IHsJCVwKKwkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwJCVwKKwkubmFtZSA9IGRlc2NyICIgUGxheWJhY2sgVm9sdW1lIiwJCVwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwJXAorCS5pbmZvID0gdGFzX3NuZF9taXhlcl9pbmZvLAkJCVwKKwkuZ2V0ID0gdGFzX3NuZF9taXhlcl9nZXQsCQkJXAorCS5wdXQgPSB0YXNfc25kX21peGVyX3B1dCwJCQlcCisJLnByaXZhdGVfdmFsdWUgPSBpZHgsCQkJCVwKK30KKworTUlYRVJfQ09OVFJPTChwY20xLCAiUENNMSIsIDApOworTUlYRVJfQ09OVFJPTChtb25pdG9yLCAiTW9uaXRvciIsIDIpOworCitzdGF0aWMgaW50IHRhc19zbmRfY2FwdHVyZV9zb3VyY2VfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQoreworCXN0YXRpYyBjaGFyICp0ZXh0c1tdID0geyAiTGluZS1JbiIsICJNaWNyb3Bob25lIiB9OworCisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0VOVU1FUkFURUQ7CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtcyA9IDI7CisJaWYgKHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPiAxKQorCQl1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtID0gMTsKKwlzdHJjcHkodWluZm8tPnZhbHVlLmVudW1lcmF0ZWQubmFtZSwgdGV4dHNbdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbV0pOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRhc19zbmRfY2FwdHVyZV9zb3VyY2VfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKworCXVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPSAhISh0YXMtPmFjciAmIFRBU19BQ1JfSU5QVVRfQik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGFzX3NuZF9jYXB0dXJlX3NvdXJjZV9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHRhcyAqdGFzID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCWludCBvbGRhY3IgPSB0YXMtPmFjcjsKKworCXRhcy0+YWNyICY9IH5UQVNfQUNSX0lOUFVUX0I7CisJaWYgKHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0pCisJCXRhcy0+YWNyIHw9IFRBU19BQ1JfSU5QVVRfQjsKKwlpZiAob2xkYWNyID09IHRhcy0+YWNyKQorCQlyZXR1cm4gMDsKKwl0YXNfd3JpdGVfcmVnKHRhcywgVEFTX1JFR19BQ1IsIDEsICZ0YXMtPmFjcik7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBjYXB0dXJlX3NvdXJjZV9jb250cm9sID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS8qIElmIHdlIG5hbWUgdGhpcyAnSW5wdXQgU291cmNlJywgaXQgcHJvcGVybHkgc2hvd3MgdXAgaW4KKwkgKiBhbHNhbWl4ZXIgYXMgYSBzZWxlY3Rpb24sICogYnV0IGl0J3Mgc2hvd24gdW5kZXIgdGhlCisJICogJ1BsYXliYWNrJyBjYXRlZ29yeS4KKwkgKiBJZiBJIG5hbWUgaXQgJ0NhcHR1cmUgU291cmNlJywgaXQgc2hvd3MgdXAgaW4gc3RyYW5nZQorCSAqIHdheXMgKHR3byBib29scyBvZiB3aGljaCBvbmUgY2FuIGJlIHNlbGVjdGVkIGF0IGEKKwkgKiB0aW1lKSBidXQgYXQgbGVhc3QgaXQncyBzaG93biBpbiB0aGUgJ0NhcHR1cmUnCisJICogY2F0ZWdvcnkuCisJICogSSB3YXMgdG9sZCB0aGF0IHRoaXMgd2FzIGR1ZSB0byBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LAorCSAqIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQgdGhlbiB3aHkgdGhlIG1hbmdsaW5nIGlzICpub3QqCisJICogZG9uZSB3aGVuIEkgbmFtZSBpdCAiSW5wdXQgU291cmNlIi4uLi4uCisJICovCisJLm5hbWUgPSAiQ2FwdHVyZSBTb3VyY2UiLAorCS5hY2Nlc3MgPSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLAorCS5pbmZvID0gdGFzX3NuZF9jYXB0dXJlX3NvdXJjZV9pbmZvLAorCS5nZXQgPSB0YXNfc25kX2NhcHR1cmVfc291cmNlX2dldCwKKwkucHV0ID0gdGFzX3NuZF9jYXB0dXJlX3NvdXJjZV9wdXQsCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgdHJhbnNmZXJfaW5mbyB0YXNfdHJhbnNmZXJzW10gPSB7CisJeworCQkvKiBpbnB1dCAqLworCQkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzE2X0JFIHwgU05EUlZfUENNX0ZNVEJJVF9TMTZfQkUgfAorCQkJICAgU05EUlZfUENNX0ZNVEJJVF9TMjRfQkUgfCBTTkRSVl9QQ01fRk1UQklUX1MyNF9CRSwKKwkJLnJhdGVzID0gU05EUlZfUENNX1JBVEVfMzIwMDAgfCBTTkRSVl9QQ01fUkFURV80NDEwMCB8IFNORFJWX1BDTV9SQVRFXzQ4MDAwLAorCQkudHJhbnNmZXJfaW4gPSAxLAorCX0sCisJeworCQkvKiBvdXRwdXQgKi8KKwkJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1MxNl9CRSB8IFNORFJWX1BDTV9GTVRCSVRfUzE2X0JFIHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFIHwgU05EUlZfUENNX0ZNVEJJVF9TMjRfQkUsCisJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzMyMDAwIHwgU05EUlZfUENNX1JBVEVfNDQxMDAgfCBTTkRSVl9QQ01fUkFURV80ODAwMCwKKwkJLnRyYW5zZmVyX2luID0gMCwKKwl9LAorCXt9Cit9OworCitzdGF0aWMgaW50IHRhc191c2FibGUoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLAorCQkgICAgICBzdHJ1Y3QgdHJhbnNmZXJfaW5mbyAqdGksCisJCSAgICAgIHN0cnVjdCB0cmFuc2Zlcl9pbmZvICpvdXQpCit7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgdGFzX3Jlc2V0X2luaXQoc3RydWN0IHRhcyAqdGFzKQoreworCXU4IHRtcDsKKwl0YXMtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPnNldF9od19yZXNldCh0YXMtPmNvZGVjLmdwaW8sIDApOworCW1zbGVlcCgxKTsKKwl0YXMtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPnNldF9od19yZXNldCh0YXMtPmNvZGVjLmdwaW8sIDEpOworCW1zbGVlcCgxKTsKKwl0YXMtPmNvZGVjLmdwaW8tPm1ldGhvZHMtPnNldF9od19yZXNldCh0YXMtPmNvZGVjLmdwaW8sIDApOworCW1zbGVlcCgxKTsKKworCXRhcy0+YWNyICY9IH5UQVNfQUNSX0FOQUxPR19QRE9XTjsKKwl0YXMtPmFjciB8PSBUQVNfQUNSX0JfTU9OQVVSRUFMIHwgVEFTX0FDUl9CX01PTl9TRUxfUklHSFQ7CisJaWYgKHRhc193cml0ZV9yZWcodGFzLCBUQVNfUkVHX0FDUiwgMSwgJnRhcy0+YWNyKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwl0bXAgPSBUQVNfTUNTX1NDTEs2NCB8IFRBU19NQ1NfU1BPUlRfTU9ERV9JMlMgfCBUQVNfTUNTX1NQT1JUX1dMXzI0QklUOworCWlmICh0YXNfd3JpdGVfcmVnKHRhcywgVEFTX1JFR19NQ1MsIDEsICZ0bXApKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXRtcCA9IDA7CisJaWYgKHRhc193cml0ZV9yZWcodGFzLCBUQVNfUkVHX01DUzIsIDEsICZ0bXApKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiAwOworfQorCisvKiB3ZSBhcmUgY29udHJvbGxlZCB2aWEgaTJjIGFuZCBhc3N1bWUgdGhhdCBpcyBhbHdheXMgdXAKKyAqIElmIHRoYXQgd2Fzbid0IHRoZSBjYXNlLCB3ZSdkIGhhdmUgdG8gc3VzcGVuZCBvbmNlCisgKiBvdXIgaTJjIGRldmljZSBpcyBzdXNwZW5kZWQsIGFuZCB0aGVuIHRha2Ugbm90ZSBvZiB0aGF0ISAqLworc3RhdGljIGludCB0YXNfc3VzcGVuZChzdHJ1Y3QgdGFzICp0YXMpCit7CisJdGFzLT5hY3IgfD0gVEFTX0FDUl9BTkFMT0dfUERPV047CisJdGFzX3dyaXRlX3JlZyh0YXMsIFRBU19SRUdfQUNSLCAxLCAmdGFzLT5hY3IpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRhc19yZXN1bWUoc3RydWN0IHRhcyAqdGFzKQoreworCS8qIHJlc2V0IGNvZGVjICovCisJdGFzX3Jlc2V0X2luaXQodGFzKTsKKwl0YXNfc2V0X3ZvbHVtZSh0YXMpOworCXRhc19zZXRfbWl4ZXIodGFzKTsKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBfdGFzX3N1c3BlbmQoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJcmV0dXJuIHRhc19zdXNwZW5kKGNpaS0+Y29kZWNfZGF0YSk7Cit9CisKK3N0YXRpYyBpbnQgX3Rhc19yZXN1bWUoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpKQoreworCXJldHVybiB0YXNfcmVzdW1lKGNpaS0+Y29kZWNfZGF0YSk7Cit9CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBjb2RlY19pbmZvIHRhc19jb2RlY19pbmZvID0geworCS50cmFuc2ZlcnMgPSB0YXNfdHJhbnNmZXJzLAorCS8qIGluIHRoZW9yeSwgd2UgY2FuIGRyaXZlIGl0IGF0IDUxMiB0b28uLi4KKwkgKiBidXQgc28gZmFyIHRoZSBmcmFtZXdvcmsgZG9lc24ndCBhbGxvdworCSAqIGZvciB0aGF0IGFuZCBJIGRvbid0IHNlZSBtdWNoIHBvaW50IGluIGl0LiAqLworCS5zeXNjbG9ja19mYWN0b3IgPSAyNTYsCisJLyogc2FtZSBoZXJlLCBjb3VsZCBiZSAzMiBmb3IganVzdCBvbmUgMTYgYml0IGZvcm1hdCAqLworCS5idXNfZmFjdG9yID0gNjQsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLnVzYWJsZSA9IHRhc191c2FibGUsCisjaWZkZWYgQ09ORklHX1BNCisJLnN1c3BlbmQgPSBfdGFzX3N1c3BlbmQsCisJLnJlc3VtZSA9IF90YXNfcmVzdW1lLAorI2VuZGlmCit9OworCitzdGF0aWMgaW50IHRhc19pbml0X2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IGNvZGVjX3RvX3Rhcyhjb2RlYyk7CisJaW50IGVycjsKKworCWlmICghdGFzLT5jb2RlYy5ncGlvIHx8ICF0YXMtPmNvZGVjLmdwaW8tPm1ldGhvZHMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiZ3Bpb3Mgbm90IGFzc2lnbmVkISFcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAodGFzX3Jlc2V0X2luaXQodGFzKSkgeworCQlwcmludGsoS0VSTl9FUlIgUEZYICJ0YXMgZmFpbGVkIHRvIGluaXRpYWxpc2VcbiIpOworCQlyZXR1cm4gLUVOWElPOworCX0KKworCWlmICh0YXMtPmNvZGVjLnNvdW5kYnVzX2Rldi0+YXR0YWNoX2NvZGVjKHRhcy0+Y29kZWMuc291bmRidXNfZGV2LAorCQkJCQkJICAgYW9hX2dldF9jYXJkKCksCisJCQkJCQkgICAmdGFzX2NvZGVjX2luZm8sIHRhcykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiZXJyb3IgYXR0YWNoaW5nIHRhcyB0byBzb3VuZGJ1c1xuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmIChhb2Ffc25kX2RldmljZV9uZXcoU05EUlZfREVWX0xPV0xFVkVMLCB0YXMsICZvcHMpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImZhaWxlZCB0byBjcmVhdGUgdGFzIHNuZCBkZXZpY2UhXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCWVyciA9IGFvYV9zbmRfY3RsX2FkZChzbmRfY3RsX25ldzEoJnZvbHVtZV9jb250cm9sLCB0YXMpKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZXJyID0gYW9hX3NuZF9jdGxfYWRkKHNuZF9jdGxfbmV3MSgmbXV0ZV9jb250cm9sLCB0YXMpKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZXJyID0gYW9hX3NuZF9jdGxfYWRkKHNuZF9jdGxfbmV3MSgmcGNtMV9jb250cm9sLCB0YXMpKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZXJyID0gYW9hX3NuZF9jdGxfYWRkKHNuZF9jdGxfbmV3MSgmbW9uaXRvcl9jb250cm9sLCB0YXMpKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZXJyID0gYW9hX3NuZF9jdGxfYWRkKHNuZF9jdGxfbmV3MSgmY2FwdHVyZV9zb3VyY2VfY29udHJvbCwgdGFzKSk7CisJaWYgKGVycikKKwkJZ290byBlcnJvcjsKKworCXJldHVybiAwOworIGVycm9yOgorCXRhcy0+Y29kZWMuc291bmRidXNfZGV2LT5kZXRhY2hfY29kZWModGFzLT5jb2RlYy5zb3VuZGJ1c19kZXYsIHRhcyk7CisJc25kX2RldmljZV9mcmVlKGFvYV9nZXRfY2FyZCgpLCB0YXMpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIHRhc19leGl0X2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCB0YXMgKnRhcyA9IGNvZGVjX3RvX3Rhcyhjb2RlYyk7CisKKwlpZiAoIXRhcy0+Y29kZWMuc291bmRidXNfZGV2KQorCQlyZXR1cm47CisJdGFzLT5jb2RlYy5zb3VuZGJ1c19kZXYtPmRldGFjaF9jb2RlYyh0YXMtPmNvZGVjLnNvdW5kYnVzX2RldiwgdGFzKTsKK30KKwkKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRhc19kcml2ZXI7CisKK3N0YXRpYyBpbnQgdGFzX2NyZWF0ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCisJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCisJCSAgICAgICBpbnQgYWRkcikKK3sKKwlzdHJ1Y3QgdGFzICp0YXM7CisKKwl0YXMgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdGFzKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXRhcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl0YXMtPmkyYy5kcml2ZXIgPSAmdGFzX2RyaXZlcjsKKwl0YXMtPmkyYy5hZGFwdGVyID0gYWRhcHRlcjsKKwl0YXMtPmkyYy5hZGRyID0gYWRkcjsKKwlzdHJsY3B5KHRhcy0+aTJjLm5hbWUsICJ0YXMgYXVkaW8gY29kZWMiLCBJMkNfTkFNRV9TSVpFLTEpOworCisJaWYgKGkyY19hdHRhY2hfY2xpZW50KCZ0YXMtPmkyYykpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiZmFpbGVkIHRvIGF0dGFjaCB0byBpMmNcbiIpOworCQlnb3RvIGZhaWw7CisJfQorCisJc3RybGNweSh0YXMtPmNvZGVjLm5hbWUsICJ0YXMiLCBNQVhfQ09ERUNfTkFNRV9MRU4tMSk7CisJdGFzLT5jb2RlYy5vd25lciA9IFRISVNfTU9EVUxFOworCXRhcy0+Y29kZWMuaW5pdCA9IHRhc19pbml0X2NvZGVjOworCXRhcy0+Y29kZWMuZXhpdCA9IHRhc19leGl0X2NvZGVjOworCXRhcy0+Y29kZWMubm9kZSA9IG9mX25vZGVfZ2V0KG5vZGUpOworCisJaWYgKGFvYV9jb2RlY19yZWdpc3RlcigmdGFzLT5jb2RlYykpIHsKKwkJZ290byBkZXRhY2g7CisJfQorCXByaW50ayhLRVJOX0RFQlVHICJzbmQtYW9hLWNvZGVjLXRhczogY3JlYXRlZCBhbmQgYXR0YWNoZWQgdGFzIGluc3RhbmNlXG4iKTsKKwlyZXR1cm4gMDsKKyBkZXRhY2g6CisJaTJjX2RldGFjaF9jbGllbnQoJnRhcy0+aTJjKTsKKyBmYWlsOgorCWtmcmVlKHRhcyk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgdGFzX2kyY19hdHRhY2goc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqYnVzbm9kZSwgKmRldiA9IE5VTEw7CisJc3RydWN0IHBtYWNfaTJjX2J1cyAqYnVzOworCisJYnVzID0gcG1hY19pMmNfYWRhcHRlcl90b19idXMoYWRhcHRlcik7CisJaWYgKGJ1cyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT0RFVjsKKwlidXNub2RlID0gcG1hY19pMmNfZ2V0X2J1c19ub2RlKGJ1cyk7CisKKwl3aGlsZSAoKGRldiA9IG9mX2dldF9uZXh0X2NoaWxkKGJ1c25vZGUsIGRldikpICE9IE5VTEwpIHsKKwkJaWYgKGRldmljZV9pc19jb21wYXRpYmxlKGRldiwgInRhczMwMDQiKSkgeworCQkJdTMyICphZGRyOworCQkJcHJpbnRrKEtFUk5fREVCVUcgUEZYICJmb3VuZCB0YXMzMDA0XG4iKTsKKwkJCWFkZHIgPSAodTMyICopIGdldF9wcm9wZXJ0eShkZXYsICJyZWciLCBOVUxMKTsKKwkJCWlmICghYWRkcikKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiB0YXNfY3JlYXRlKGFkYXB0ZXIsIGRldiwgKCgqYWRkcikgPj4gMSkgJiAweDdmKTsKKwkJfQorCQkvKiBvbGRlciBtYWNoaW5lcyBoYXZlIG5vICdjb2RlYycgbm9kZSB3aXRoIGEgJ2NvbXBhdGlibGUnCisJCSAqIHByb3BlcnR5IHRoYXQgc2F5cyAndGFzMzAwNCcsIHRoZXkganVzdCBoYXZlIGEgJ2RlcScKKwkJICogbm9kZSB3aXRob3V0IGFueSBzdWNoIHByb3BlcnR5Li4uICovCisJCWlmIChzdHJjbXAoZGV2LT5uYW1lLCAiZGVxIikgPT0gMCkgeworCQkJdTMyICpfYWRkciwgYWRkcjsKKwkJCXByaW50ayhLRVJOX0RFQlVHIFBGWCAiZm91bmQgJ2RlcScgbm9kZVxuIik7CisJCQlfYWRkciA9ICh1MzIgKikgZ2V0X3Byb3BlcnR5KGRldiwgImkyYy1hZGRyZXNzIiwgTlVMTCk7CisJCQlpZiAoIV9hZGRyKQorCQkJCWNvbnRpbnVlOworCQkJYWRkciA9ICgoKl9hZGRyKSA+PiAxKSAmIDB4N2Y7CisJCQkvKiBub3csIGlmIHRoZSBhZGRyZXNzIGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSB0d28KKwkJCSAqIHRoYXQgYSB0YXMzMDA0IGNhbiBoYXZlLCB3ZSBjYW5ub3QgaGFuZGxlIHRoaXMuCisJCQkgKiBJIGRvdWJ0IGl0IGV2ZXIgaGFwcGVucyBidXQgaGV5LiAqLworCQkJaWYgKGFkZHIgIT0gMHgzNCAmJiBhZGRyICE9IDB4MzUpCisJCQkJY29udGludWU7CisJCQlyZXR1cm4gdGFzX2NyZWF0ZShhZGFwdGVyLCBkZXYsIGFkZHIpOworCQl9CisJfQorCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgaW50IHRhc19pMmNfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc3RydWN0IHRhcyAqdGFzID0gY29udGFpbmVyX29mKGNsaWVudCwgc3RydWN0IHRhcywgaTJjKTsKKwlpbnQgZXJyOworCXU4IHRtcCA9IFRBU19BQ1JfQU5BTE9HX1BET1dOOworCisJaWYgKChlcnIgPSBpMmNfZGV0YWNoX2NsaWVudChjbGllbnQpKSkKKwkJcmV0dXJuIGVycjsKKwlhb2FfY29kZWNfdW5yZWdpc3RlcigmdGFzLT5jb2RlYyk7CisJb2Zfbm9kZV9wdXQodGFzLT5jb2RlYy5ub2RlKTsKKworCS8qIHBvd2VyIGRvd24gY29kZWMgY2hpcCAqLworCXRhc193cml0ZV9yZWcodGFzLCBUQVNfUkVHX0FDUiwgMSwgJnRtcCk7CisKKwlrZnJlZSh0YXMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgdGFzX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJhb2FfY29kZWNfdGFzIiwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJfSwKKwkuYXR0YWNoX2FkYXB0ZXIgPSB0YXNfaTJjX2F0dGFjaCwKKwkuZGV0YWNoX2NsaWVudCA9IHRhc19pMmNfZGV0YWNoLAorfTsKKworc3RhdGljIGludCBfX2luaXQgdGFzX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRhc19kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgdGFzX2V4aXQodm9pZCkKK3sKKwlpMmNfZGVsX2RyaXZlcigmdGFzX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHRhc19pbml0KTsKK21vZHVsZV9leGl0KHRhc19leGl0KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy10YXMuaCBiL3NvdW5kL2FvYS9jb2RlY3Mvc25kLWFvYS1jb2RlYy10YXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWY4MWY0Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLXRhcy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIGRyaXZlciBmb3IgdGFzIGNvZGVjIChoZWFkZXIpCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisjaWZuZGVmIF9fU05EX0FPQV9DT0RFQ1RBU0gKKyNkZWZpbmUgX19TTkRfQU9BX0NPREVDVEFTSAorCisjZGVmaW5lIFRBU19SRUdfTUNTCTB4MDEJLyogbWFpbiBjb250cm9sICovCisjCWRlZmluZSBUQVNfTUNTX0ZBU1RMT0FECQkoMTw8NykKKyMJZGVmaW5lIFRBU19NQ1NfU0NMSzY0CQkoMTw8NikKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfTU9ERV9NQVNLCSgzPDw0KQorIwlkZWZpbmUgVEFTX01DU19TUE9SVF9NT0RFX0kyUwkoMjw8NCkKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfTU9ERV9SSgkoMTw8NCkKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfTU9ERV9MSgkoMDw8NCkKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfV0xfTUFTSwkoMzw8MCkKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfV0xfMTZCSVQJKDA8PDApCisjCWRlZmluZSBUQVNfTUNTX1NQT1JUX1dMXzE4QklUCSgxPDwwKQorIwlkZWZpbmUgVEFTX01DU19TUE9SVF9XTF8yMEJJVAkoMjw8MCkKKyMJZGVmaW5lIFRBU19NQ1NfU1BPUlRfV0xfMjRCSVQJKDM8PDApCisKKyNkZWZpbmUgVEFTX1JFR19EUkMJMHgwMgorI2RlZmluZSBUQVNfUkVHX1ZPTAkweDA0CisjZGVmaW5lIFRBU19SRUdfVFJFQkxFCTB4MDUKKyNkZWZpbmUgVEFTX1JFR19CQVNTCTB4MDYKKyNkZWZpbmUgVEFTX1JFR19MTUlYCTB4MDcKKyNkZWZpbmUgVEFTX1JFR19STUlYCTB4MDgKKworI2RlZmluZSBUQVNfUkVHX0FDUgkweDQwCS8qIGFuYWxvZyBjb250cm9sICovCisjCWRlZmluZSBUQVNfQUNSX0JfTU9OQVVSRUFMCSgxPDw3KQorIwlkZWZpbmUgVEFTX0FDUl9CX01PTl9TRUxfUklHSFQJKDE8PDYpCisjCWRlZmluZSBUQVNfQUNSX0RFRU1QSF9NQVNLCSgzPDwyKQorIwlkZWZpbmUgVEFTX0FDUl9ERUVNUEhfT0ZGCSgwPDwyKQorIwlkZWZpbmUgVEFTX0FDUl9ERUVNUEhfNDhLSHoJKDE8PDIpCisjCWRlZmluZSBUQVNfQUNSX0RFRU1QSF80NEtIegkoMjw8MikKKyMJZGVmaW5lIFRBU19BQ1JfSU5QVVRfQgkJKDE8PDEpCisjCWRlZmluZSBUQVNfQUNSX0FOQUxPR19QRE9XTgkoMTw8MCkKKworI2RlZmluZSBUQVNfUkVHX01DUzIJMHg0MwkvKiBtYWluIGNvbnRyb2wgMiAqLworIwlkZWZpbmUgVEFTX01DUzJfQUxMUEFTUwkJKDE8PDEpCisKKyNkZWZpbmUgVEFTX1JFR19MRUZUX0JJUVVBRDYJMHgxMAorI2RlZmluZSBUQVNfUkVHX1JJR0hUX0JJUVVBRDYJMHgxOQorCisjZW5kaWYgLyogX19TTkRfQU9BX0NPREVDVEFTSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLXRvb25pZS5jIGIvc291bmQvYW9hL2NvZGVjcy9zbmQtYW9hLWNvZGVjLXRvb25pZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYzU1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29kZWNzL3NuZC1hb2EtY29kZWMtdG9vbmllLmMKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIGRyaXZlciBmb3IgVG9vbmllIGNvZGVjCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICoKKyAqCisgKiBUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgdG9vbmllIGNvZGVjIGNoaXAuIFRoaXMgY2hpcCBpcyBwcmVzZW50CisgKiBvbiB0aGUgTWFjIE1pbmkgYW5kIGlzIG5vdGhpbmcgYnV0IGEgREFDLgorICovCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KK01PRFVMRV9BVVRIT1IoIkpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oInRvb25pZSBjb2RlYyBkcml2ZXIgZm9yIHNuZC1hb2EiKTsKKworI2luY2x1ZGUgIi4uL2FvYS5oIgorI2luY2x1ZGUgIi4uL3NvdW5kYnVzL3NvdW5kYnVzLmgiCisKKworI2RlZmluZSBQRlggInNuZC1hb2EtY29kZWMtdG9vbmllOiAiCisKK3N0cnVjdCB0b29uaWUgeworCXN0cnVjdCBhb2FfY29kZWMJY29kZWM7Cit9OworI2RlZmluZSBjb2RlY190b190b29uaWUoYykgY29udGFpbmVyX29mKGMsIHN0cnVjdCB0b29uaWUsIGNvZGVjKQorCitzdGF0aWMgaW50IHRvb25pZV9kZXZfcmVnaXN0ZXIoc3RydWN0IHNuZF9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfZGV2aWNlX29wcyBvcHMgPSB7CisJLmRldl9yZWdpc3RlciA9IHRvb25pZV9kZXZfcmVnaXN0ZXIsCit9OworCitzdGF0aWMgc3RydWN0IHRyYW5zZmVyX2luZm8gdG9vbmllX3RyYW5zZmVyc1tdID0geworCS8qIFRoaXMgdGhpbmcgKm9ubHkqIGhhcyBhbmFsb2cgb3V0cHV0LAorCSAqIHRoZSByYXRlcyBhcmUgdGFrZW4gZnJvbSBJbmZvLnBsaXN0CisJICogZnJvbSBEYXJ3aW4uICovCisJeworCQkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzE2X0JFIHwKKwkJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFLAorCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV8zMjAwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfNDQxMDAgfAorCQkJIFNORFJWX1BDTV9SQVRFXzQ4MDAwIHwKKwkJCSBTTkRSVl9QQ01fUkFURV84ODIwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfOTYwMDAsCisJfSwKKwl7fQorfTsKKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCB0b29uaWVfc3VzcGVuZChzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwkvKiBjYW4gd2UgdHVybiBpdCBvZmYgc29tZWhvdz8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0b29uaWVfcmVzdW1lKHN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaSkKK3sKKwlyZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8KKworc3RhdGljIHN0cnVjdCBjb2RlY19pbmZvIHRvb25pZV9jb2RlY19pbmZvID0geworCS50cmFuc2ZlcnMgPSB0b29uaWVfdHJhbnNmZXJzLAorCS5zeXNjbG9ja19mYWN0b3IgPSAyNTYsCisJLmJ1c19mYWN0b3IgPSA2NCwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKKyNpZmRlZiBDT05GSUdfUE0KKwkuc3VzcGVuZCA9IHRvb25pZV9zdXNwZW5kLAorCS5yZXN1bWUgPSB0b29uaWVfcmVzdW1lLAorI2VuZGlmCit9OworCitzdGF0aWMgaW50IHRvb25pZV9pbml0X2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCB0b29uaWUgKnRvb25pZSA9IGNvZGVjX3RvX3Rvb25pZShjb2RlYyk7CisKKwlpZiAoYW9hX3NuZF9kZXZpY2VfbmV3KFNORFJWX0RFVl9MT1dMRVZFTCwgdG9vbmllLCAmb3BzKSkgeworCQlwcmludGsoS0VSTl9FUlIgUEZYICJmYWlsZWQgdG8gY3JlYXRlIHRvb25pZSBzbmQgZGV2aWNlIVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCS8qIG5vdGhpbmcgY29ubmVjdGVkPyB3aGF0IGEgam9rZSEgKi8KKwlpZiAodG9vbmllLT5jb2RlYy5jb25uZWN0ZWQgIT0gMSkKKwkJcmV0dXJuIC1FTk9UQ09OTjsKKworCWlmICh0b29uaWUtPmNvZGVjLnNvdW5kYnVzX2Rldi0+YXR0YWNoX2NvZGVjKHRvb25pZS0+Y29kZWMuc291bmRidXNfZGV2LAorCQkJCQkJICAgICBhb2FfZ2V0X2NhcmQoKSwKKwkJCQkJCSAgICAgJnRvb25pZV9jb2RlY19pbmZvLCB0b29uaWUpKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlggImVycm9yIGNyZWF0aW5nIHRvb25pZSBwY21cbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdG9vbmllX2V4aXRfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IHRvb25pZSAqdG9vbmllID0gY29kZWNfdG9fdG9vbmllKGNvZGVjKTsKKworCWlmICghdG9vbmllLT5jb2RlYy5zb3VuZGJ1c19kZXYpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAidG9vbmllX2V4aXRfY29kZWMgY2FsbGVkIHdpdGhvdXQgc291bmRidXNfZGV2IVxuIik7CisJCXJldHVybjsKKwl9CisJdG9vbmllLT5jb2RlYy5zb3VuZGJ1c19kZXYtPmRldGFjaF9jb2RlYyh0b29uaWUtPmNvZGVjLnNvdW5kYnVzX2RldiwgdG9vbmllKTsKK30KKworc3RhdGljIHN0cnVjdCB0b29uaWUgKnRvb25pZTsKKworc3RhdGljIGludCBfX2luaXQgdG9vbmllX2luaXQodm9pZCkKK3sKKwl0b29uaWUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdG9vbmllKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXRvb25pZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzdHJsY3B5KHRvb25pZS0+Y29kZWMubmFtZSwgInRvb25pZSIsIHNpemVvZih0b29uaWUtPmNvZGVjLm5hbWUpKTsKKwl0b29uaWUtPmNvZGVjLm93bmVyID0gVEhJU19NT0RVTEU7CisJdG9vbmllLT5jb2RlYy5pbml0ID0gdG9vbmllX2luaXRfY29kZWM7CisJdG9vbmllLT5jb2RlYy5leGl0ID0gdG9vbmllX2V4aXRfY29kZWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJaWYgKGFvYV9jb2RlY19yZWdpc3RlcigmdG9vbmllLT5jb2RlYykpIHsKKwkJa2ZyZWUodG9vbmllKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB0b29uaWVfZXhpdCh2b2lkKQoreworCWFvYV9jb2RlY191bnJlZ2lzdGVyKCZ0b29uaWUtPmNvZGVjKTsKKwlrZnJlZSh0b29uaWUpOworfQorCittb2R1bGVfaW5pdCh0b29uaWVfaW5pdCk7Cittb2R1bGVfZXhpdCh0b29uaWVfZXhpdCk7CmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvY29yZS9NYWtlZmlsZSBiL3NvdW5kL2FvYS9jb3JlL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZGM3MjgKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29yZS9NYWtlZmlsZQpAQCAtMCwwICsxLDUgQEAKK29iai0kKENPTkZJR19TTkRfQU9BKSArPSBzbmQtYW9hLm8KK3NuZC1hb2Etb2JqcyA6PSBzbmQtYW9hLWNvcmUubyBcCisJCXNuZC1hb2EtYWxzYS5vIFwKKwkJc25kLWFvYS1ncGlvLXBtZi5vIFwKKwkJc25kLWFvYS1ncGlvLWZlYXR1cmUubwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvcmUvc25kLWFvYS1hbHNhLmMgYi9zb3VuZC9hb2EvY29yZS9zbmQtYW9hLWFsc2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDJmZGVhCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL2NvcmUvc25kLWFvYS1hbHNhLmMKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIEFwcGxlIE9uYm9hcmQgQXVkaW8gQWxzYSBoZWxwZXJzCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSAic25kLWFvYS1hbHNhLmgiCisKK3N0YXRpYyBpbnQgaW5kZXggPSAtMTsKK21vZHVsZV9wYXJhbShpbmRleCwgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoaW5kZXgsICJpbmRleCBmb3IgQU9BIHNvdW5kIGNhcmQuIik7CisKK3N0YXRpYyBzdHJ1Y3QgYW9hX2NhcmQgKmFvYV9jYXJkOworCitpbnQgYW9hX2Fsc2FfaW5pdChjaGFyICpuYW1lLCBzdHJ1Y3QgbW9kdWxlICptb2QpCit7CisJc3RydWN0IHNuZF9jYXJkICphbHNhX2NhcmQ7CisJaW50IGVycjsKKworCWlmIChhb2FfY2FyZCkKKwkJLyogY2Fubm90IGJlIEVFWElTVCBkdWUgdG8gdXNhZ2UgaW4gYW9hX2ZhYnJpY19yZWdpc3RlciAqLworCQlyZXR1cm4gLUVCVVNZOworCisJYWxzYV9jYXJkID0gc25kX2NhcmRfbmV3KGluZGV4LCBuYW1lLCBtb2QsIHNpemVvZihzdHJ1Y3QgYW9hX2NhcmQpKTsKKwlpZiAoIWFsc2FfY2FyZCkKKwkJcmV0dXJuIC1FTk9NRU07CisJYW9hX2NhcmQgPSBhbHNhX2NhcmQtPnByaXZhdGVfZGF0YTsKKwlhb2FfY2FyZC0+YWxzYV9jYXJkID0gYWxzYV9jYXJkOworCXN0cmxjcHkoYWxzYV9jYXJkLT5kcml2ZXIsICJBcHBsZU9uYmRBdWRpbyIsIHNpemVvZihhbHNhX2NhcmQtPmRyaXZlcikpOworCXN0cmxjcHkoYWxzYV9jYXJkLT5zaG9ydG5hbWUsIG5hbWUsIHNpemVvZihhbHNhX2NhcmQtPnNob3J0bmFtZSkpOworCXN0cmxjcHkoYWxzYV9jYXJkLT5sb25nbmFtZSwgbmFtZSwgc2l6ZW9mKGFsc2FfY2FyZC0+bG9uZ25hbWUpKTsKKwlzdHJsY3B5KGFsc2FfY2FyZC0+bWl4ZXJuYW1lLCBuYW1lLCBzaXplb2YoYWxzYV9jYXJkLT5taXhlcm5hbWUpKTsKKwllcnIgPSBzbmRfY2FyZF9yZWdpc3Rlcihhb2FfY2FyZC0+YWxzYV9jYXJkKTsKKwlpZiAoZXJyIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgInNuZC1hb2E6IGNvdWxkbid0IHJlZ2lzdGVyIGFsc2EgY2FyZFxuIik7CisJCXNuZF9jYXJkX2ZyZWUoYW9hX2NhcmQtPmFsc2FfY2FyZCk7CisJCWFvYV9jYXJkID0gTlVMTDsKKwkJcmV0dXJuIGVycjsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBzbmRfY2FyZCAqYW9hX2dldF9jYXJkKHZvaWQpCit7CisJaWYgKGFvYV9jYXJkKQorCQlyZXR1cm4gYW9hX2NhcmQtPmFsc2FfY2FyZDsKKwlyZXR1cm4gTlVMTDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGFvYV9nZXRfY2FyZCk7CisKK3ZvaWQgYW9hX2Fsc2FfY2xlYW51cCh2b2lkKQoreworCWlmIChhb2FfY2FyZCkgeworCQlzbmRfY2FyZF9mcmVlKGFvYV9jYXJkLT5hbHNhX2NhcmQpOworCQlhb2FfY2FyZCA9IE5VTEw7CisJfQorfQorCitpbnQgYW9hX3NuZF9kZXZpY2VfbmV3KHNuZF9kZXZpY2VfdHlwZV90IHR5cGUsCisgICAgICAgIHZvaWQgKiBkZXZpY2VfZGF0YSwgc3RydWN0IHNuZF9kZXZpY2Vfb3BzICogb3BzKQoreworCXN0cnVjdCBzbmRfY2FyZCAqY2FyZCA9IGFvYV9nZXRfY2FyZCgpOworCWludCBlcnI7CisJCisJaWYgKCFjYXJkKSByZXR1cm4gLUVOT01FTTsKKworCWVyciA9IHNuZF9kZXZpY2VfbmV3KGNhcmQsIHR5cGUsIGRldmljZV9kYXRhLCBvcHMpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzbmQtYW9hOiBmYWlsZWQgdG8gY3JlYXRlIHNuZCBkZXZpY2UgKCVkKVxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisJZXJyID0gc25kX2RldmljZV9yZWdpc3RlcihjYXJkLCBkZXZpY2VfZGF0YSk7CisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIgInNuZC1hb2E6IGZhaWxlZCB0byByZWdpc3RlciAiCisJCQkJInNuZCBkZXZpY2UgKCVkKVxuIiwgZXJyKTsKKwkJcHJpbnRrKEtFUk5fRVJSICJzbmQtYW9hOiBoYXZlIHlvdSBmb3Jnb3R0ZW4gdGhlICIKKwkJCQkiZGV2X3JlZ2lzdGVyIGNhbGxiYWNrP1xuIik7CisJCXNuZF9kZXZpY2VfZnJlZShjYXJkLCBkZXZpY2VfZGF0YSk7CisJfQorCXJldHVybiBlcnI7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChhb2Ffc25kX2RldmljZV9uZXcpOworCitpbnQgYW9hX3NuZF9jdGxfYWRkKHN0cnVjdCBzbmRfa2NvbnRyb2wqIGNvbnRyb2wpCit7CisJaW50IGVycjsKKworCWlmICghYW9hX2NhcmQpIHJldHVybiAtRU5PREVWOworCisJZXJyID0gc25kX2N0bF9hZGQoYW9hX2NhcmQtPmFsc2FfY2FyZCwgY29udHJvbCk7CisJaWYgKGVycikKKwkJcHJpbnRrKEtFUk5fRVJSICJzbmQtYW9hOiBmYWlsZWQgdG8gYWRkIGFsc2EgY29udHJvbCAoJWQpXG4iLAorCQkgICAgICAgZXJyKTsKKwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZTUJPTF9HUEwoYW9hX3NuZF9jdGxfYWRkKTsKZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtYWxzYS5oIGIvc291bmQvYW9hL2NvcmUvc25kLWFvYS1hbHNhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwZDJmMQotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtYWxzYS5oCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIEFsc2EgcHJpdmF0ZSBoZWxwZXJzCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisKKyNpZm5kZWYgX19TTkRfQU9BX0FMU0FfSAorI2RlZmluZSBfX1NORF9BT0FfQUxTQV9ICisjaW5jbHVkZSAiLi4vYW9hLmgiCisKK2V4dGVybiBpbnQgYW9hX2Fsc2FfaW5pdChjaGFyICpuYW1lLCBzdHJ1Y3QgbW9kdWxlICptb2QpOworZXh0ZXJuIHZvaWQgYW9hX2Fsc2FfY2xlYW51cCh2b2lkKTsKKworI2VuZGlmIC8qIF9fU05EX0FPQV9BTFNBX0ggKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtY29yZS5jIGIvc291bmQvYW9hL2NvcmUvc25kLWFvYS1jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNkMmQ4MgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtY29yZS5jCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQXBwbGUgT25ib2FyZCBBdWRpbyBkcml2ZXIgY29yZQorICoKKyAqIENvcHlyaWdodCAyMDA2IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CisgKgorICogR1BMIHYyLCBjYW4gYmUgZm91bmQgaW4gQ09QWUlORy4KKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlICIuLi9hb2EuaCIKKyNpbmNsdWRlICJzbmQtYW9hLWFsc2EuaCIKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJBcHBsZSBPbmJvYXJkIEF1ZGlvIFNvdW5kIERyaXZlciIpOworTU9EVUxFX0FVVEhPUigiSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworLyogV2UgYWxsb3cgb25seSBvbmUgZmFicmljLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzLAorICogYW5kIG1vcmUgZG9uJ3QgcmVhbGx5IG1ha2UgdGhhdCBtdWNoIHNlbnNlICovCitzdGF0aWMgc3RydWN0IGFvYV9mYWJyaWMgKmZhYnJpYzsKK3N0YXRpYyBMSVNUX0hFQUQoY29kZWNfbGlzdCk7CisKK3N0YXRpYyBpbnQgYXR0YWNoX2NvZGVjX3RvX2ZhYnJpYyhzdHJ1Y3QgYW9hX2NvZGVjICpjKQoreworCWludCBlcnI7CisKKwlpZiAoIXRyeV9tb2R1bGVfZ2V0KGMtPm93bmVyKSkKKwkJcmV0dXJuIC1FQlVTWTsKKwkvKiBmb3VuZF9jb2RlYyBoYXMgdG8gYmUgYXNzaWduZWQgKi8KKwllcnIgPSAtRU5PRU5UOworCWlmIChmYWJyaWMtPmZvdW5kX2NvZGVjKQorCQllcnIgPSBmYWJyaWMtPmZvdW5kX2NvZGVjKGMpOworCWlmIChlcnIpIHsKKwkJbW9kdWxlX3B1dChjLT5vd25lcik7CisJCXByaW50ayhLRVJOX0VSUiAic25kLWFvYTogZmFicmljIGRpZG4ndCBsaWtlIGNvZGVjICVzXG4iLAorCQkJCWMtPm5hbWUpOworCQlyZXR1cm4gZXJyOworCX0KKwljLT5mYWJyaWMgPSBmYWJyaWM7CisKKwllcnIgPSAwOworCWlmIChjLT5pbml0KQorCQllcnIgPSBjLT5pbml0KGMpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzbmQtYW9hOiBjb2RlYyAlcyBkaWRuJ3QgaW5pdFxuIiwgYy0+bmFtZSk7CisJCWMtPmZhYnJpYyA9IE5VTEw7CisJCWlmIChmYWJyaWMtPnJlbW92ZV9jb2RlYykKKwkJCWZhYnJpYy0+cmVtb3ZlX2NvZGVjKGMpOworCQltb2R1bGVfcHV0KGMtPm93bmVyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisJaWYgKGZhYnJpYy0+YXR0YWNoZWRfY29kZWMpCisJCWZhYnJpYy0+YXR0YWNoZWRfY29kZWMoYyk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBhb2FfY29kZWNfcmVnaXN0ZXIoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJaW50IGVyciA9IDA7CisKKwkvKiBpZiB0aGVyZSdzIGEgZmFicmljIGFscmVhZHksIHdlIGNhbiB0ZWxsIGlmIHdlCisJICogd2lsbCB3YW50IHRvIGhhdmUgdGhpcyBjb2RlYywgc28gcHJvcGFnYXRlIGVycm9yCisJICogdGhyb3VnaC4gT3RoZXJ3aXNlLCB0aGlzIHdpbGwgaGFwcGVuIGxhdGVyLi4uICovCisJaWYgKGZhYnJpYykKKwkJZXJyID0gYXR0YWNoX2NvZGVjX3RvX2ZhYnJpYyhjb2RlYyk7CisJaWYgKCFlcnIpCisJCWxpc3RfYWRkKCZjb2RlYy0+bGlzdCwgJmNvZGVjX2xpc3QpOworCXJldHVybiBlcnI7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChhb2FfY29kZWNfcmVnaXN0ZXIpOworCit2b2lkIGFvYV9jb2RlY191bnJlZ2lzdGVyKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCWxpc3RfZGVsKCZjb2RlYy0+bGlzdCk7CisJaWYgKGNvZGVjLT5mYWJyaWMgJiYgY29kZWMtPmV4aXQpCisJCWNvZGVjLT5leGl0KGNvZGVjKTsKKwlpZiAoZmFicmljICYmIGZhYnJpYy0+cmVtb3ZlX2NvZGVjKQorCQlmYWJyaWMtPnJlbW92ZV9jb2RlYyhjb2RlYyk7CisJY29kZWMtPmZhYnJpYyA9IE5VTEw7CisJbW9kdWxlX3B1dChjb2RlYy0+b3duZXIpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoYW9hX2NvZGVjX3VucmVnaXN0ZXIpOworCitpbnQgYW9hX2ZhYnJpY19yZWdpc3RlcihzdHJ1Y3QgYW9hX2ZhYnJpYyAqbmV3X2ZhYnJpYykKK3sKKwlzdHJ1Y3QgYW9hX2NvZGVjICpjOworCWludCBlcnI7CisKKwkvKiBhbGxvdyBxdWVyeWluZyBmb3IgcHJlc2VuY2Ugb2YgZmFicmljCisJICogKGkuZS4gZG8gdGhpcyB0ZXN0IGZpcnN0ISkgKi8KKwlpZiAobmV3X2ZhYnJpYyA9PSBmYWJyaWMpIHsKKwkJZXJyID0gLUVBTFJFQURZOworCQlnb3RvIGF0dGFjaDsKKwl9CisJaWYgKGZhYnJpYykKKwkJcmV0dXJuIC1FRVhJU1Q7CisJaWYgKCFuZXdfZmFicmljKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVyciA9IGFvYV9hbHNhX2luaXQobmV3X2ZhYnJpYy0+bmFtZSwgbmV3X2ZhYnJpYy0+b3duZXIpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlmYWJyaWMgPSBuZXdfZmFicmljOworCisgYXR0YWNoOgorCWxpc3RfZm9yX2VhY2hfZW50cnkoYywgJmNvZGVjX2xpc3QsIGxpc3QpIHsKKwkJaWYgKGMtPmZhYnJpYyAhPSBmYWJyaWMpCisJCQlhdHRhY2hfY29kZWNfdG9fZmFicmljKGMpOworCX0KKwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZTUJPTF9HUEwoYW9hX2ZhYnJpY19yZWdpc3Rlcik7CisKK3ZvaWQgYW9hX2ZhYnJpY191bnJlZ2lzdGVyKHN0cnVjdCBhb2FfZmFicmljICpvbGRfZmFicmljKQoreworCXN0cnVjdCBhb2FfY29kZWMgKmM7CisKKwlpZiAoZmFicmljICE9IG9sZF9mYWJyaWMpCisJCXJldHVybjsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoYywgJmNvZGVjX2xpc3QsIGxpc3QpIHsKKwkJaWYgKGMtPmZhYnJpYykKKwkJCWFvYV9mYWJyaWNfdW5saW5rX2NvZGVjKGMpOworCX0KKworCWFvYV9hbHNhX2NsZWFudXAoKTsKKworCWZhYnJpYyA9IE5VTEw7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChhb2FfZmFicmljX3VucmVnaXN0ZXIpOworCit2b2lkIGFvYV9mYWJyaWNfdW5saW5rX2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCWlmICghY29kZWMtPmZhYnJpYykgeworCQlwcmludGsoS0VSTl9FUlIgInNuZC1hb2E6IGZhYnJpYyB1bmFzc2lnbmVkICIKKwkJCQkiaW4gYW9hX2ZhYnJpY191bmxpbmtfY29kZWNcbiIpOworCQlkdW1wX3N0YWNrKCk7CisJCXJldHVybjsKKwl9CisJaWYgKGNvZGVjLT5leGl0KQorCQljb2RlYy0+ZXhpdChjb2RlYyk7CisJaWYgKGNvZGVjLT5mYWJyaWMtPnJlbW92ZV9jb2RlYykKKwkJY29kZWMtPmZhYnJpYy0+cmVtb3ZlX2NvZGVjKGNvZGVjKTsKKwljb2RlYy0+ZmFicmljID0gTlVMTDsKKwltb2R1bGVfcHV0KGNvZGVjLT5vd25lcik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChhb2FfZmFicmljX3VubGlua19jb2RlYyk7CisKK3N0YXRpYyBpbnQgX19pbml0IGFvYV9pbml0KHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhb2FfZXhpdCh2b2lkKQoreworCWFvYV9hbHNhX2NsZWFudXAoKTsKK30KKworbW9kdWxlX2luaXQoYW9hX2luaXQpOworbW9kdWxlX2V4aXQoYW9hX2V4aXQpOwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvcmUvc25kLWFvYS1ncGlvLWZlYXR1cmUuYyBiL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtZ3Bpby1mZWF0dXJlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2ZWI3NwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9jb3JlL3NuZC1hb2EtZ3Bpby1mZWF0dXJlLmMKQEAgLTAsMCArMSwzOTkgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIGZlYXR1cmUgY2FsbCBHUElPIGNvbnRyb2wKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorICoKKyAqIEdQTCB2MiwgY2FuIGJlIGZvdW5kIGluIENPUFlJTkcuCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHUElPIGNvbnRyb2wgcm91dGluZXMgZm9yIAorICogZGlyZWN0ICh0aHJvdWdoIGZlYXR1cmUgY2FsbHMpIGFjY2VzcyB0byB0aGUgR1BJTworICogcmVnaXN0ZXJzLgorICovCisKKyNpbmNsdWRlIDxhc20vcG1hY19mZWF0dXJlLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSAiLi4vYW9hLmgiCisKKy8qIFRPRE86IHRoZXNlIGFyZSAyMCBnbG9iYWwgdmFyaWFibGVzCisgKiB0aGF0IGFyZW4ndCB1c2VkIG9uIG1vc3QgbWFjaGluZXMuLi4KKyAqIE1vdmUgdGhlbSBpbnRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkCisgKiBzdHJ1Y3R1cmUgYW5kIHVzZSB0aGF0LgorICovCisKKy8qIHRoZXNlIGFyZSB0aGUgR1BJTyBudW1iZXJzIChyZWdpc3RlciBhZGRyZXNzZXMgYXMgb2Zmc2V0cyBpbnRvCisgKiB0aGUgR1BJTyBzcGFjZSkgKi8KK3N0YXRpYyBpbnQgaGVhZHBob25lX211dGVfZ3BpbzsKK3N0YXRpYyBpbnQgYW1wX211dGVfZ3BpbzsKK3N0YXRpYyBpbnQgbGluZW91dF9tdXRlX2dwaW87CitzdGF0aWMgaW50IGh3X3Jlc2V0X2dwaW87CitzdGF0aWMgaW50IGxpbmVvdXRfZGV0ZWN0X2dwaW87CitzdGF0aWMgaW50IGhlYWRwaG9uZV9kZXRlY3RfZ3BpbzsKK3N0YXRpYyBpbnQgbGluZWluX2RldGVjdF9ncGlvOworCisvKiBzZWUgdGhlIFNXSVRDSF9HUElPIG1hY3JvICovCitzdGF0aWMgaW50IGhlYWRwaG9uZV9tdXRlX2dwaW9fYWN0aXZlc3RhdGU7CitzdGF0aWMgaW50IGFtcF9tdXRlX2dwaW9fYWN0aXZlc3RhdGU7CitzdGF0aWMgaW50IGxpbmVvdXRfbXV0ZV9ncGlvX2FjdGl2ZXN0YXRlOworc3RhdGljIGludCBod19yZXNldF9ncGlvX2FjdGl2ZXN0YXRlOworc3RhdGljIGludCBsaW5lb3V0X2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlOworc3RhdGljIGludCBoZWFkcGhvbmVfZGV0ZWN0X2dwaW9fYWN0aXZlc3RhdGU7CitzdGF0aWMgaW50IGxpbmVpbl9kZXRlY3RfZ3Bpb19hY3RpdmVzdGF0ZTsKKworLyogbm9kZSBwb2ludGVycyB0aGF0IHdlIHNhdmUgd2hlbiBnZXR0aW5nIHRoZSBHUElPIG51bWJlcgorICogdG8gZ2V0IHRoZSBpbnRlcnJ1cHQgbGF0ZXIgKi8KK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmxpbmVvdXRfZGV0ZWN0X25vZGU7CitzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlICpsaW5laW5fZGV0ZWN0X25vZGU7CitzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlICpoZWFkcGhvbmVfZGV0ZWN0X25vZGU7CisKK3N0YXRpYyBpbnQgbGluZW91dF9kZXRlY3RfaXJxOworc3RhdGljIGludCBsaW5laW5fZGV0ZWN0X2lycTsKK3N0YXRpYyBpbnQgaGVhZHBob25lX2RldGVjdF9pcnE7CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKmdldF9ncGlvKGNoYXIgKm5hbWUsCisJCQkJICAgIGNoYXIgKmFsdG5hbWUsCisJCQkJICAgIGludCAqZ3Bpb3B0ciwKKwkJCQkgICAgaW50ICpncGlvYWN0aXZlcHRyKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsICpncGlvOworCXUzMiAqcmVnOworCWNoYXIgKmF1ZGlvX2dwaW87CisKKwkqZ3Bpb3B0ciA9IC0xOworCisJLyogY2hlY2sgaWYgd2UgY2FuIGdldCBpdCB0aGUgZWFzeSB3YXkgLi4uICovCisJbnAgPSBvZl9maW5kX25vZGVfYnlfbmFtZShOVUxMLCBuYW1lKTsKKwlpZiAoIW5wKSB7CisJCS8qIHNvbWUgbWFjaGluZXMgaGF2ZSBvbmx5IGdwaW9YL2V4dGludC1ncGlvWCBub2RlcywKKwkJICogYW5kIGFuIGF1ZGlvLWdwaW8gcHJvcGVydHkgc2F5aW5nIHdoYXQgaXQgaXMgLi4uCisJCSAqIFNvIHdoYXQgd2UgaGF2ZSB0byBkbyBpcyBlbnVtZXJhdGUgYWxsIGNoaWxkcmVuCisJCSAqIG9mIHRoZSBncGlvIG5vZGUgYW5kIGNoZWNrIHRoZW0gYWxsLiAqLworCQlncGlvID0gb2ZfZmluZF9ub2RlX2J5X25hbWUoTlVMTCwgImdwaW8iKTsKKwkJaWYgKCFncGlvKQorCQkJcmV0dXJuIE5VTEw7CisJCXdoaWxlICgobnAgPSBvZl9nZXRfbmV4dF9jaGlsZChncGlvLCBucCkpKSB7CisJCQlhdWRpb19ncGlvID0gZ2V0X3Byb3BlcnR5KG5wLCAiYXVkaW8tZ3BpbyIsIE5VTEwpOworCQkJaWYgKCFhdWRpb19ncGlvKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHN0cmNtcChhdWRpb19ncGlvLCBuYW1lKSA9PSAwKQorCQkJCWJyZWFrOworCQkJaWYgKGFsdG5hbWUgJiYgKHN0cmNtcChhdWRpb19ncGlvLCBhbHRuYW1lKSA9PSAwKSkKKwkJCQlicmVhazsKKwkJfQorCQkvKiBzdGlsbCBub3QgZm91bmQsIGFzc3VtZSBub3QgdGhlcmUgKi8KKwkJaWYgKCFucCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXJlZyA9ICh1MzIgKilnZXRfcHJvcGVydHkobnAsICJyZWciLCBOVUxMKTsKKwlpZiAoIXJlZykKKwkJcmV0dXJuIE5VTEw7CisKKwkqZ3Bpb3B0ciA9ICpyZWc7CisKKwkvKiB0aGlzIGlzIGEgaGFjaywgdXN1YWxseSB0aGUgR1BJT3MgJ3JlZycgcHJvcGVydHkKKwkgKiBzaG91bGQgaGF2ZSB0aGUgb2Zmc2V0IGJhc2VkIGZyb20gdGhlIEdQSU8gc3BhY2UKKwkgKiB3aGljaCBpcyBhdCAweDUwLCBidXQgYXBwYXJlbnRseSBub3QgYWx3YXlzLi4uICovCisJaWYgKCpncGlvcHRyIDwgMHg1MCkKKwkJKmdwaW9wdHIgKz0gMHg1MDsKKworCXJlZyA9ICh1MzIgKilnZXRfcHJvcGVydHkobnAsICJhdWRpby1ncGlvLWFjdGl2ZS1zdGF0ZSIsIE5VTEwpOworCWlmICghcmVnKQorCQkvKiBBcHBsZSBzZWVtcyB0byBkZWZhdWx0IHRvIDEsIGJ1dAorCQkgKiB0aGF0IGRvZXNuJ3Qgc2VlbSByaWdodCBhdCBsZWFzdCBvbiBtb3N0CisJCSAqIG1hY2hpbmVzLiBTbyB1bnRpbCBwcm92ZW4gdGhhdCB0aGUgb3Bwb3NpdGUKKwkJICogaXMgbmVjZXNzYXJ5LCB3ZSBkZWZhdWx0IHRvIDAKKwkJICogKHdoaWNoLCBpbmNpZGVudGFsbHksIHNuZC1wb3dlcm1hYyBhbHNvIGRvZXMuLi4pICovCisJCSpncGlvYWN0aXZlcHRyID0gMDsKKwllbHNlCisJCSpncGlvYWN0aXZlcHRyID0gKnJlZzsKKworCXJldHVybiBucDsKK30KKworc3RhdGljIHZvaWQgZ2V0X2lycShzdHJ1Y3QgZGV2aWNlX25vZGUgKiBucCwgaW50ICppcnFwdHIpCit7CisJKmlycXB0ciA9IC0xOworCWlmICghbnApCisJCXJldHVybjsKKwlpZiAobnAtPm5faW50cnMgIT0gMSkKKwkJcmV0dXJuOworCSppcnFwdHIgPSBucC0+aW50cnNbMF0ubGluZTsKK30KKworLyogMHg0IGlzIG91dGVuYWJsZSwgMHgxIGlzIG91dCwgdGh1cyA0IG9yIDUgKi8KKyNkZWZpbmUgU1dJVENIX0dQSU8obmFtZSwgdiwgb24pCQkJCVwKKwkoKCh2KSZ+MSkgfCAoKG9uKT8JCQkJCVwKKwkJCShuYW1lIyNfZ3Bpb19hY3RpdmVzdGF0ZT09MD80OjUpOglcCisJCQkobmFtZSMjX2dwaW9fYWN0aXZlc3RhdGU9PTA/NTo0KSkpCisKKyNkZWZpbmUgRlRSX0dQSU8obmFtZSwgYml0KQkJCQkJXAorc3RhdGljIHZvaWQgZnRyX2dwaW9fc2V0XyMjbmFtZShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCwgaW50IG9uKVwKK3sJCQkJCQkJCVwKKwlpbnQgdjsJCQkJCQkJXAorCQkJCQkJCQlcCisJaWYgKHVubGlrZWx5KCFydCkpIHJldHVybjsJCQkJXAorCQkJCQkJCQlcCisJaWYgKG5hbWUjI19tdXRlX2dwaW8gPCAwKQkJCQlcCisJCXJldHVybjsJCQkJCQlcCisJCQkJCQkJCVwKKwl2ID0gcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfUkVBRF9HUElPLCBOVUxMLAkJXAorCQkJICAgICAgbmFtZSMjX211dGVfZ3BpbywJCQlcCisJCQkgICAgICAwKTsJCQkJXAorCQkJCQkJCQlcCisJLyogbXV0ZWQgPSAhb24uLi4gKi8JCQkJCVwKKwl2ID0gU1dJVENIX0dQSU8obmFtZSMjX211dGUsIHYsICFvbik7CQkJXAorCQkJCQkJCQlcCisJcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfV1JJVEVfR1BJTywgTlVMTCwJCVwKKwkJCSAgbmFtZSMjX211dGVfZ3Bpbywgdik7CQkJXAorCQkJCQkJCQlcCisJcnQtPmltcGxlbWVudGF0aW9uX3ByaXZhdGUgJj0gfigxPDxiaXQpOwkJXAorCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlIHw9ICghIW9uIDw8IGJpdCk7CQlcCit9CQkJCQkJCQlcCitzdGF0aWMgaW50IGZ0cl9ncGlvX2dldF8jI25hbWUoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCQlcCit7CQkJCQkJCQlcCisJaWYgKHVubGlrZWx5KCFydCkpIHJldHVybiAwOwkJCQlcCisJcmV0dXJuIChydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZT4+Yml0KSYxOwkJXAorfQorCitGVFJfR1BJTyhoZWFkcGhvbmUsIDApOworRlRSX0dQSU8oYW1wLCAxKTsKK0ZUUl9HUElPKGxpbmVvdXQsIDIpOworCitzdGF0aWMgdm9pZCBmdHJfZ3Bpb19zZXRfaHdfcmVzZXQoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsIGludCBvbikKK3sKKwlpbnQgdjsKKworCWlmICh1bmxpa2VseSghcnQpKSByZXR1cm47CisJaWYgKGh3X3Jlc2V0X2dwaW8gPCAwKQorCQlyZXR1cm47CisKKwl2ID0gcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfUkVBRF9HUElPLCBOVUxMLAorCQkJICAgICAgaHdfcmVzZXRfZ3BpbywgMCk7CisJdiA9IFNXSVRDSF9HUElPKGh3X3Jlc2V0LCB2LCBvbik7CisJcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfV1JJVEVfR1BJTywgTlVMTCwKKwkJCSAgaHdfcmVzZXRfZ3Bpbywgdik7Cit9CisKK3N0YXRpYyB2b2lkIGZ0cl9ncGlvX2FsbF9hbXBzX29mZihzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCkKK3sKKwlpbnQgc2F2ZWQ7CisKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOworCXNhdmVkID0gcnQtPmltcGxlbWVudGF0aW9uX3ByaXZhdGU7CisJZnRyX2dwaW9fc2V0X2hlYWRwaG9uZShydCwgMCk7CisJZnRyX2dwaW9fc2V0X2FtcChydCwgMCk7CisJZnRyX2dwaW9fc2V0X2xpbmVvdXQocnQsIDApOworCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlID0gc2F2ZWQ7Cit9CisKK3N0YXRpYyB2b2lkIGZ0cl9ncGlvX2FsbF9hbXBzX3Jlc3RvcmUoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCit7CisJaW50IHM7CisKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOworCXMgPSBydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZTsKKwlmdHJfZ3Bpb19zZXRfaGVhZHBob25lKHJ0LCAocz4+MCkmMSk7CisJZnRyX2dwaW9fc2V0X2FtcChydCwgKHM+PjEpJjEpOworCWZ0cl9ncGlvX3NldF9saW5lb3V0KHJ0LCAocz4+MikmMSk7Cit9CisKK3N0YXRpYyB2b2lkIGZ0cl9oYW5kbGVfbm90aWZ5KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uICpub3RpZiA9IGRhdGE7CisKKwltdXRleF9sb2NrKCZub3RpZi0+bXV0ZXgpOworCWlmIChub3RpZi0+bm90aWZ5KQorCQlub3RpZi0+bm90aWZ5KG5vdGlmLT5kYXRhKTsKKwltdXRleF91bmxvY2soJm5vdGlmLT5tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkIGZ0cl9ncGlvX2luaXQoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCit7CisJZ2V0X2dwaW8oImhlYWRwaG9uZS1tdXRlIiwgTlVMTCwKKwkJICZoZWFkcGhvbmVfbXV0ZV9ncGlvLAorCQkgJmhlYWRwaG9uZV9tdXRlX2dwaW9fYWN0aXZlc3RhdGUpOworCWdldF9ncGlvKCJhbXAtbXV0ZSIsIE5VTEwsCisJCSAmYW1wX211dGVfZ3BpbywKKwkJICZhbXBfbXV0ZV9ncGlvX2FjdGl2ZXN0YXRlKTsKKwlnZXRfZ3BpbygibGluZW91dC1tdXRlIiwgTlVMTCwKKwkJICZsaW5lb3V0X211dGVfZ3BpbywKKwkJICZsaW5lb3V0X211dGVfZ3Bpb19hY3RpdmVzdGF0ZSk7CisJZ2V0X2dwaW8oImh3LXJlc2V0IiwgImF1ZGlvLWh3LXJlc2V0IiwKKwkJICZod19yZXNldF9ncGlvLAorCQkgJmh3X3Jlc2V0X2dwaW9fYWN0aXZlc3RhdGUpOworCisJaGVhZHBob25lX2RldGVjdF9ub2RlID0gZ2V0X2dwaW8oImhlYWRwaG9uZS1kZXRlY3QiLCBOVUxMLAorCQkJCQkgJmhlYWRwaG9uZV9kZXRlY3RfZ3BpbywKKwkJCQkJICZoZWFkcGhvbmVfZGV0ZWN0X2dwaW9fYWN0aXZlc3RhdGUpOworCS8qIGdvIEFwcGxlLCBhbmQgdGhhbmtzIGZvciBnaXZpbmcgdGhlc2UgZGlmZmVyZW50IG5hbWVzCisJICogYWNyb3NzIHRoZSBib2FyZC4uLiAqLworCWxpbmVvdXRfZGV0ZWN0X25vZGUgPSBnZXRfZ3BpbygibGluZW91dC1kZXRlY3QiLCAibGluZS1vdXRwdXQtZGV0ZWN0IiwKKwkJCQkgICAgICAgJmxpbmVvdXRfZGV0ZWN0X2dwaW8sCisJCQkJICAgICAgICZsaW5lb3V0X2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlKTsKKwlsaW5laW5fZGV0ZWN0X25vZGUgPSBnZXRfZ3BpbygibGluZWluLWRldGVjdCIsICJsaW5lLWlucHV0LWRldGVjdCIsCisJCQkJICAgICAgJmxpbmVpbl9kZXRlY3RfZ3BpbywKKwkJCQkgICAgICAmbGluZWluX2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlKTsKKworCWdldF9pcnEoaGVhZHBob25lX2RldGVjdF9ub2RlLCAmaGVhZHBob25lX2RldGVjdF9pcnEpOworCWdldF9pcnEobGluZW91dF9kZXRlY3Rfbm9kZSwgJmxpbmVvdXRfZGV0ZWN0X2lycSk7CisJZ2V0X2lycShsaW5laW5fZGV0ZWN0X25vZGUsICZsaW5laW5fZGV0ZWN0X2lycSk7CisKKwlmdHJfZ3Bpb19hbGxfYW1wc19vZmYocnQpOworCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlID0gMDsKKwlJTklUX1dPUksoJnJ0LT5oZWFkcGhvbmVfbm90aWZ5LndvcmssIGZ0cl9oYW5kbGVfbm90aWZ5LAorCQkgICZydC0+aGVhZHBob25lX25vdGlmeSk7CisJSU5JVF9XT1JLKCZydC0+bGluZV9pbl9ub3RpZnkud29yaywgZnRyX2hhbmRsZV9ub3RpZnksCisJCSAgJnJ0LT5saW5lX2luX25vdGlmeSk7CisJSU5JVF9XT1JLKCZydC0+bGluZV9vdXRfbm90aWZ5LndvcmssIGZ0cl9oYW5kbGVfbm90aWZ5LAorCQkgICZydC0+bGluZV9vdXRfbm90aWZ5KTsKKwltdXRleF9pbml0KCZydC0+aGVhZHBob25lX25vdGlmeS5tdXRleCk7CisJbXV0ZXhfaW5pdCgmcnQtPmxpbmVfaW5fbm90aWZ5Lm11dGV4KTsKKwltdXRleF9pbml0KCZydC0+bGluZV9vdXRfbm90aWZ5Lm11dGV4KTsKK30KKworc3RhdGljIHZvaWQgZnRyX2dwaW9fZXhpdChzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCkKK3sKKwlmdHJfZ3Bpb19hbGxfYW1wc19vZmYocnQpOworCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlID0gMDsKKwlpZiAocnQtPmhlYWRwaG9uZV9ub3RpZnkubm90aWZ5KQorCQlmcmVlX2lycShoZWFkcGhvbmVfZGV0ZWN0X2lycSwgJnJ0LT5oZWFkcGhvbmVfbm90aWZ5KTsKKwlpZiAocnQtPmxpbmVfaW5fbm90aWZ5LmdwaW9fcHJpdmF0ZSkKKwkJZnJlZV9pcnEobGluZWluX2RldGVjdF9pcnEsICZydC0+bGluZV9pbl9ub3RpZnkpOworCWlmIChydC0+bGluZV9vdXRfbm90aWZ5LmdwaW9fcHJpdmF0ZSkKKwkJZnJlZV9pcnEobGluZW91dF9kZXRlY3RfaXJxLCAmcnQtPmxpbmVfb3V0X25vdGlmeSk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcnQtPmhlYWRwaG9uZV9ub3RpZnkud29yayk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcnQtPmxpbmVfaW5fbm90aWZ5LndvcmspOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnJ0LT5saW5lX291dF9ub3RpZnkud29yayk7CisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKKwltdXRleF9kZXN0cm95KCZydC0+aGVhZHBob25lX25vdGlmeS5tdXRleCk7CisJbXV0ZXhfZGVzdHJveSgmcnQtPmxpbmVfaW5fbm90aWZ5Lm11dGV4KTsKKwltdXRleF9kZXN0cm95KCZydC0+bGluZV9vdXRfbm90aWZ5Lm11dGV4KTsKK30KKworc3RhdGljIGlycXJldHVybl90IGZ0cl9oYW5kbGVfbm90aWZ5X2lycShpbnQgeHgsCisJCQkJCSB2b2lkICpkYXRhLAorCQkJCQkgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uICpub3RpZiA9IGRhdGE7CisKKwlzY2hlZHVsZV93b3JrKCZub3RpZi0+d29yayk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgZnRyX3NldF9ub3RpZnkoc3RydWN0IGdwaW9fcnVudGltZSAqcnQsCisJCQkgIGVudW0gbm90aWZ5X3R5cGUgdHlwZSwKKwkJCSAgbm90aWZ5X2Z1bmNfdCBub3RpZnksCisJCQkgIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uICpub3RpZjsKKwlub3RpZnlfZnVuY190IG9sZDsKKwlpbnQgaXJxOworCWNoYXIgKm5hbWU7CisJaW50IGVyciA9IC1FQlVTWTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgQU9BX05PVElGWV9IRUFEUEhPTkU6CisJCW5vdGlmID0gJnJ0LT5oZWFkcGhvbmVfbm90aWZ5OworCQluYW1lID0gImhlYWRwaG9uZS1kZXRlY3QiOworCQlpcnEgPSBoZWFkcGhvbmVfZGV0ZWN0X2lycTsKKwkJYnJlYWs7CisJY2FzZSBBT0FfTk9USUZZX0xJTkVfSU46CisJCW5vdGlmID0gJnJ0LT5saW5lX2luX25vdGlmeTsKKwkJbmFtZSA9ICJsaW5laW4tZGV0ZWN0IjsKKwkJaXJxID0gbGluZWluX2RldGVjdF9pcnE7CisJCWJyZWFrOworCWNhc2UgQU9BX05PVElGWV9MSU5FX09VVDoKKwkJbm90aWYgPSAmcnQtPmxpbmVfb3V0X25vdGlmeTsKKwkJbmFtZSA9ICJsaW5lb3V0LWRldGVjdCI7CisJCWlycSA9IGxpbmVvdXRfZGV0ZWN0X2lycTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGlycSA9PSAtMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwltdXRleF9sb2NrKCZub3RpZi0+bXV0ZXgpOworCisJb2xkID0gbm90aWYtPm5vdGlmeTsKKworCWlmICghb2xkICYmICFub3RpZnkpIHsKKwkJZXJyID0gMDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCWlmIChvbGQgJiYgbm90aWZ5KSB7CisJCWlmIChvbGQgPT0gbm90aWZ5ICYmIG5vdGlmLT5kYXRhID09IGRhdGEpCisJCQllcnIgPSAwOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJaWYgKG9sZCAmJiAhbm90aWZ5KQorCQlmcmVlX2lycShpcnEsIG5vdGlmKTsKKworCWlmICghb2xkICYmIG5vdGlmeSkgeworCQllcnIgPSByZXF1ZXN0X2lycShpcnEsIGZ0cl9oYW5kbGVfbm90aWZ5X2lycSwgMCwgbmFtZSwgbm90aWYpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfdW5sb2NrOworCX0KKworCW5vdGlmLT5ub3RpZnkgPSBub3RpZnk7CisJbm90aWYtPmRhdGEgPSBkYXRhOworCisJZXJyID0gMDsKKyBvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmbm90aWYtPm11dGV4KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGZ0cl9nZXRfZGV0ZWN0KHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0LAorCQkJICBlbnVtIG5vdGlmeV90eXBlIHR5cGUpCit7CisJaW50IGdwaW8sIHJldCwgYWN0aXZlOworCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBBT0FfTk9USUZZX0hFQURQSE9ORToKKwkJZ3BpbyA9IGhlYWRwaG9uZV9kZXRlY3RfZ3BpbzsKKwkJYWN0aXZlID0gaGVhZHBob25lX2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlOworCQlicmVhazsKKwljYXNlIEFPQV9OT1RJRllfTElORV9JTjoKKwkJZ3BpbyA9IGxpbmVpbl9kZXRlY3RfZ3BpbzsKKwkJYWN0aXZlID0gbGluZWluX2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlOworCQlicmVhazsKKwljYXNlIEFPQV9OT1RJRllfTElORV9PVVQ6CisJCWdwaW8gPSBsaW5lb3V0X2RldGVjdF9ncGlvOworCQlhY3RpdmUgPSBsaW5lb3V0X2RldGVjdF9ncGlvX2FjdGl2ZXN0YXRlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoZ3BpbyA9PSAtMSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSBwbWFjX2NhbGxfZmVhdHVyZShQTUFDX0ZUUl9SRUFEX0dQSU8sIE5VTEwsIGdwaW8sIDApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCXJldHVybiAoKHJldCA+PiAxKSAmIDEpID09IGFjdGl2ZTsKK30KKworc3RhdGljIHN0cnVjdCBncGlvX21ldGhvZHMgbWV0aG9kcyA9IHsKKwkuaW5pdAkJCT0gZnRyX2dwaW9faW5pdCwKKwkuZXhpdAkJCT0gZnRyX2dwaW9fZXhpdCwKKwkuYWxsX2FtcHNfb2ZmCQk9IGZ0cl9ncGlvX2FsbF9hbXBzX29mZiwKKwkuYWxsX2FtcHNfcmVzdG9yZQk9IGZ0cl9ncGlvX2FsbF9hbXBzX3Jlc3RvcmUsCisJLnNldF9oZWFkcGhvbmUJCT0gZnRyX2dwaW9fc2V0X2hlYWRwaG9uZSwKKwkuc2V0X3NwZWFrZXJzCQk9IGZ0cl9ncGlvX3NldF9hbXAsCisJLnNldF9saW5lb3V0CQk9IGZ0cl9ncGlvX3NldF9saW5lb3V0LAorCS5zZXRfaHdfcmVzZXQJCT0gZnRyX2dwaW9fc2V0X2h3X3Jlc2V0LAorCS5nZXRfaGVhZHBob25lCQk9IGZ0cl9ncGlvX2dldF9oZWFkcGhvbmUsCisJLmdldF9zcGVha2VycwkJPSBmdHJfZ3Bpb19nZXRfYW1wLAorCS5nZXRfbGluZW91dAkJPSBmdHJfZ3Bpb19nZXRfbGluZW91dCwKKwkuc2V0X25vdGlmeQkJPSBmdHJfc2V0X25vdGlmeSwKKwkuZ2V0X2RldGVjdAkJPSBmdHJfZ2V0X2RldGVjdCwKK307CisKK3N0cnVjdCBncGlvX21ldGhvZHMgKmZ0cl9ncGlvX21ldGhvZHMgPSAmbWV0aG9kczsKK0VYUE9SVF9TWU1CT0xfR1BMKGZ0cl9ncGlvX21ldGhvZHMpOwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvcmUvc25kLWFvYS1ncGlvLXBtZi5jIGIvc291bmQvYW9hL2NvcmUvc25kLWFvYS1ncGlvLXBtZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOWI5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvY29yZS9zbmQtYW9hLWdwaW8tcG1mLmMKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIHBtZiBHUElPcworICoKKyAqIENvcHlyaWdodCAyMDA2IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CisgKgorICogR1BMIHYyLCBjYW4gYmUgZm91bmQgaW4gQ09QWUlORy4KKyAqLworCisjaW5jbHVkZSA8YXNtL3BtYWNfZmVhdHVyZS5oPgorI2luY2x1ZGUgPGFzbS9wbWFjX3BmdW5jLmg+CisjaW5jbHVkZSAiLi4vYW9hLmgiCisKKyNkZWZpbmUgUE1GX0dQSU8obmFtZSwgYml0KQkJCQkJXAorc3RhdGljIHZvaWQgcG1mX2dwaW9fc2V0XyMjbmFtZShzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCwgaW50IG9uKVwKK3sJCQkJCQkJCVwKKwlzdHJ1Y3QgcG1mX2FyZ3MgYXJncyA9IHsgLmNvdW50ID0gMSwgLnVbMF0udiA9ICFvbiB9OwlcCisJCQkJCQkJCVwKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOwkJCQlcCisJcG1mX2NhbGxfZnVuY3Rpb24ocnQtPm5vZGUsICNuYW1lICItbXV0ZSIsICZhcmdzKTsJXAorCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlICY9IH4oMTw8Yml0KTsJCVwKKwlydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZSB8PSAoISFvbiA8PCBiaXQpOwkJXAorfQkJCQkJCQkJXAorc3RhdGljIGludCBwbWZfZ3Bpb19nZXRfIyNuYW1lKHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0KQkJXAorewkJCQkJCQkJXAorCWlmICh1bmxpa2VseSghcnQpKSByZXR1cm4gMDsJCQkJXAorCXJldHVybiAocnQtPmltcGxlbWVudGF0aW9uX3ByaXZhdGU+PmJpdCkmMTsJCVwKK30KKworUE1GX0dQSU8oaGVhZHBob25lLCAwKTsKK1BNRl9HUElPKGFtcCwgMSk7CitQTUZfR1BJTyhsaW5lb3V0LCAyKTsKKworc3RhdGljIHZvaWQgcG1mX2dwaW9fc2V0X2h3X3Jlc2V0KHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0LCBpbnQgb24pCit7CisJc3RydWN0IHBtZl9hcmdzIGFyZ3MgPSB7IC5jb3VudCA9IDEsIC51WzBdLnYgPSAhIW9uIH07CisKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOworCXBtZl9jYWxsX2Z1bmN0aW9uKHJ0LT5ub2RlLCAiaHctcmVzZXQiLCAmYXJncyk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9ncGlvX2FsbF9hbXBzX29mZihzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCkKK3sKKwlpbnQgc2F2ZWQ7CisKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOworCXNhdmVkID0gcnQtPmltcGxlbWVudGF0aW9uX3ByaXZhdGU7CisJcG1mX2dwaW9fc2V0X2hlYWRwaG9uZShydCwgMCk7CisJcG1mX2dwaW9fc2V0X2FtcChydCwgMCk7CisJcG1mX2dwaW9fc2V0X2xpbmVvdXQocnQsIDApOworCXJ0LT5pbXBsZW1lbnRhdGlvbl9wcml2YXRlID0gc2F2ZWQ7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9ncGlvX2FsbF9hbXBzX3Jlc3RvcmUoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCit7CisJaW50IHM7CisKKwlpZiAodW5saWtlbHkoIXJ0KSkgcmV0dXJuOworCXMgPSBydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZTsKKwlwbWZfZ3Bpb19zZXRfaGVhZHBob25lKHJ0LCAocz4+MCkmMSk7CisJcG1mX2dwaW9fc2V0X2FtcChydCwgKHM+PjEpJjEpOworCXBtZl9ncGlvX3NldF9saW5lb3V0KHJ0LCAocz4+MikmMSk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9oYW5kbGVfbm90aWZ5KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGdwaW9fbm90aWZpY2F0aW9uICpub3RpZiA9IGRhdGE7CisKKwltdXRleF9sb2NrKCZub3RpZi0+bXV0ZXgpOworCWlmIChub3RpZi0+bm90aWZ5KQorCQlub3RpZi0+bm90aWZ5KG5vdGlmLT5kYXRhKTsKKwltdXRleF91bmxvY2soJm5vdGlmLT5tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9ncGlvX2luaXQoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCit7CisJcG1mX2dwaW9fYWxsX2FtcHNfb2ZmKHJ0KTsKKwlydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZSA9IDA7CisJSU5JVF9XT1JLKCZydC0+aGVhZHBob25lX25vdGlmeS53b3JrLCBwbWZfaGFuZGxlX25vdGlmeSwKKwkJICAmcnQtPmhlYWRwaG9uZV9ub3RpZnkpOworCUlOSVRfV09SSygmcnQtPmxpbmVfaW5fbm90aWZ5LndvcmssIHBtZl9oYW5kbGVfbm90aWZ5LAorCQkgICZydC0+bGluZV9pbl9ub3RpZnkpOworCUlOSVRfV09SSygmcnQtPmxpbmVfb3V0X25vdGlmeS53b3JrLCBwbWZfaGFuZGxlX25vdGlmeSwKKwkJICAmcnQtPmxpbmVfb3V0X25vdGlmeSk7CisJbXV0ZXhfaW5pdCgmcnQtPmhlYWRwaG9uZV9ub3RpZnkubXV0ZXgpOworCW11dGV4X2luaXQoJnJ0LT5saW5lX2luX25vdGlmeS5tdXRleCk7CisJbXV0ZXhfaW5pdCgmcnQtPmxpbmVfb3V0X25vdGlmeS5tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9ncGlvX2V4aXQoc3RydWN0IGdwaW9fcnVudGltZSAqcnQpCit7CisJcG1mX2dwaW9fYWxsX2FtcHNfb2ZmKHJ0KTsKKwlydC0+aW1wbGVtZW50YXRpb25fcHJpdmF0ZSA9IDA7CisKKwlpZiAocnQtPmhlYWRwaG9uZV9ub3RpZnkuZ3Bpb19wcml2YXRlKQorCQlwbWZfdW5yZWdpc3Rlcl9pcnFfY2xpZW50KHJ0LT5oZWFkcGhvbmVfbm90aWZ5LmdwaW9fcHJpdmF0ZSk7CisJaWYgKHJ0LT5saW5lX2luX25vdGlmeS5ncGlvX3ByaXZhdGUpCisJCXBtZl91bnJlZ2lzdGVyX2lycV9jbGllbnQocnQtPmxpbmVfaW5fbm90aWZ5LmdwaW9fcHJpdmF0ZSk7CisJaWYgKHJ0LT5saW5lX291dF9ub3RpZnkuZ3Bpb19wcml2YXRlKQorCQlwbWZfdW5yZWdpc3Rlcl9pcnFfY2xpZW50KHJ0LT5saW5lX291dF9ub3RpZnkuZ3Bpb19wcml2YXRlKTsKKworCS8qIG1ha2Ugc3VyZSBubyB3b3JrIGlzIHBlbmRpbmcgYmVmb3JlIGZyZWVpbmcKKwkgKiBhbGwgdGhpbmdzICovCisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcnQtPmhlYWRwaG9uZV9ub3RpZnkud29yayk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcnQtPmxpbmVfaW5fbm90aWZ5LndvcmspOworCWNhbmNlbF9kZWxheWVkX3dvcmsoJnJ0LT5saW5lX291dF9ub3RpZnkud29yayk7CisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKKworCW11dGV4X2Rlc3Ryb3koJnJ0LT5oZWFkcGhvbmVfbm90aWZ5Lm11dGV4KTsKKwltdXRleF9kZXN0cm95KCZydC0+bGluZV9pbl9ub3RpZnkubXV0ZXgpOworCW11dGV4X2Rlc3Ryb3koJnJ0LT5saW5lX291dF9ub3RpZnkubXV0ZXgpOworCisJaWYgKHJ0LT5oZWFkcGhvbmVfbm90aWZ5LmdwaW9fcHJpdmF0ZSkKKwkJa2ZyZWUocnQtPmhlYWRwaG9uZV9ub3RpZnkuZ3Bpb19wcml2YXRlKTsKKwlpZiAocnQtPmxpbmVfaW5fbm90aWZ5LmdwaW9fcHJpdmF0ZSkKKwkJa2ZyZWUocnQtPmxpbmVfaW5fbm90aWZ5LmdwaW9fcHJpdmF0ZSk7CisJaWYgKHJ0LT5saW5lX291dF9ub3RpZnkuZ3Bpb19wcml2YXRlKQorCQlrZnJlZShydC0+bGluZV9vdXRfbm90aWZ5LmdwaW9fcHJpdmF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZl9oYW5kbGVfbm90aWZ5X2lycSh2b2lkICpkYXRhKQoreworCXN0cnVjdCBncGlvX25vdGlmaWNhdGlvbiAqbm90aWYgPSBkYXRhOworCisJc2NoZWR1bGVfd29yaygmbm90aWYtPndvcmspOworfQorCitzdGF0aWMgaW50IHBtZl9zZXRfbm90aWZ5KHN0cnVjdCBncGlvX3J1bnRpbWUgKnJ0LAorCQkJICBlbnVtIG5vdGlmeV90eXBlIHR5cGUsCisJCQkgIG5vdGlmeV9mdW5jX3Qgbm90aWZ5LAorCQkJICB2b2lkICpkYXRhKQoreworCXN0cnVjdCBncGlvX25vdGlmaWNhdGlvbiAqbm90aWY7CisJbm90aWZ5X2Z1bmNfdCBvbGQ7CisJc3RydWN0IHBtZl9pcnFfY2xpZW50ICppcnFfY2xpZW50OworCWNoYXIgKm5hbWU7CisJaW50IGVyciA9IC1FQlVTWTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgQU9BX05PVElGWV9IRUFEUEhPTkU6CisJCW5vdGlmID0gJnJ0LT5oZWFkcGhvbmVfbm90aWZ5OworCQluYW1lID0gImhlYWRwaG9uZS1kZXRlY3QiOworCQlicmVhazsKKwljYXNlIEFPQV9OT1RJRllfTElORV9JTjoKKwkJbm90aWYgPSAmcnQtPmxpbmVfaW5fbm90aWZ5OworCQluYW1lID0gImxpbmVpbi1kZXRlY3QiOworCQlicmVhazsKKwljYXNlIEFPQV9OT1RJRllfTElORV9PVVQ6CisJCW5vdGlmID0gJnJ0LT5saW5lX291dF9ub3RpZnk7CisJCW5hbWUgPSAibGluZW91dC1kZXRlY3QiOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltdXRleF9sb2NrKCZub3RpZi0+bXV0ZXgpOworCisJb2xkID0gbm90aWYtPm5vdGlmeTsKKworCWlmICghb2xkICYmICFub3RpZnkpIHsKKwkJZXJyID0gMDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCWlmIChvbGQgJiYgbm90aWZ5KSB7CisJCWlmIChvbGQgPT0gbm90aWZ5ICYmIG5vdGlmLT5kYXRhID09IGRhdGEpCisJCQllcnIgPSAwOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJaWYgKG9sZCAmJiAhbm90aWZ5KSB7CisJCWlycV9jbGllbnQgPSBub3RpZi0+Z3Bpb19wcml2YXRlOworCQlwbWZfdW5yZWdpc3Rlcl9pcnFfY2xpZW50KGlycV9jbGllbnQpOworCQlrZnJlZShpcnFfY2xpZW50KTsKKwkJbm90aWYtPmdwaW9fcHJpdmF0ZSA9IE5VTEw7CisJfQorCWlmICghb2xkICYmIG5vdGlmeSkgeworCQlpcnFfY2xpZW50ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHBtZl9pcnFfY2xpZW50KSwKKwkJCQkgICAgIEdGUF9LRVJORUwpOworCQlpcnFfY2xpZW50LT5kYXRhID0gbm90aWY7CisJCWlycV9jbGllbnQtPmhhbmRsZXIgPSBwbWZfaGFuZGxlX25vdGlmeV9pcnE7CisJCWlycV9jbGllbnQtPm93bmVyID0gVEhJU19NT0RVTEU7CisJCWVyciA9IHBtZl9yZWdpc3Rlcl9pcnFfY2xpZW50KHJ0LT5ub2RlLAorCQkJCQkgICAgICBuYW1lLAorCQkJCQkgICAgICBpcnFfY2xpZW50KTsKKwkJaWYgKGVycikgeworCQkJcHJpbnRrKEtFUk5fRVJSICJzbmQtYW9hOiBncGlvIGxheWVyIGZhaWxlZCB0byIKKwkJCQkJIiByZWdpc3RlciAlcyBpcnEgKCVkKVxuIiwgbmFtZSwgZXJyKTsKKwkJCWtmcmVlKGlycV9jbGllbnQpOworCQkJZ290byBvdXRfdW5sb2NrOworCQl9CisJCW5vdGlmLT5ncGlvX3ByaXZhdGUgPSBpcnFfY2xpZW50OworCX0KKwlub3RpZi0+bm90aWZ5ID0gbm90aWZ5OworCW5vdGlmLT5kYXRhID0gZGF0YTsKKworCWVyciA9IDA7Cisgb3V0X3VubG9jazoKKwltdXRleF91bmxvY2soJm5vdGlmLT5tdXRleCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBwbWZfZ2V0X2RldGVjdChzdHJ1Y3QgZ3Bpb19ydW50aW1lICpydCwKKwkJCSAgZW51bSBub3RpZnlfdHlwZSB0eXBlKQoreworCWNoYXIgKm5hbWU7CisJaW50IGVyciA9IC1FQlVTWSwgcmV0OworCXN0cnVjdCBwbWZfYXJncyBhcmdzID0geyAuY291bnQgPSAxLCAudVswXS5wID0gJnJldCB9OworCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBBT0FfTk9USUZZX0hFQURQSE9ORToKKwkJbmFtZSA9ICJoZWFkcGhvbmUtZGV0ZWN0IjsKKwkJYnJlYWs7CisJY2FzZSBBT0FfTk9USUZZX0xJTkVfSU46CisJCW5hbWUgPSAibGluZWluLWRldGVjdCI7CisJCWJyZWFrOworCWNhc2UgQU9BX05PVElGWV9MSU5FX09VVDoKKwkJbmFtZSA9ICJsaW5lb3V0LWRldGVjdCI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWVyciA9IHBtZl9jYWxsX2Z1bmN0aW9uKHJ0LT5ub2RlLCBuYW1lLCAmYXJncyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IGdwaW9fbWV0aG9kcyBtZXRob2RzID0geworCS5pbml0CQkJPSBwbWZfZ3Bpb19pbml0LAorCS5leGl0CQkJPSBwbWZfZ3Bpb19leGl0LAorCS5hbGxfYW1wc19vZmYJCT0gcG1mX2dwaW9fYWxsX2FtcHNfb2ZmLAorCS5hbGxfYW1wc19yZXN0b3JlCT0gcG1mX2dwaW9fYWxsX2FtcHNfcmVzdG9yZSwKKwkuc2V0X2hlYWRwaG9uZQkJPSBwbWZfZ3Bpb19zZXRfaGVhZHBob25lLAorCS5zZXRfc3BlYWtlcnMJCT0gcG1mX2dwaW9fc2V0X2FtcCwKKwkuc2V0X2xpbmVvdXQJCT0gcG1mX2dwaW9fc2V0X2xpbmVvdXQsCisJLnNldF9od19yZXNldAkJPSBwbWZfZ3Bpb19zZXRfaHdfcmVzZXQsCisJLmdldF9oZWFkcGhvbmUJCT0gcG1mX2dwaW9fZ2V0X2hlYWRwaG9uZSwKKwkuZ2V0X3NwZWFrZXJzCQk9IHBtZl9ncGlvX2dldF9hbXAsCisJLmdldF9saW5lb3V0CQk9IHBtZl9ncGlvX2dldF9saW5lb3V0LAorCS5zZXRfbm90aWZ5CQk9IHBtZl9zZXRfbm90aWZ5LAorCS5nZXRfZGV0ZWN0CQk9IHBtZl9nZXRfZGV0ZWN0LAorfTsKKworc3RydWN0IGdwaW9fbWV0aG9kcyAqcG1mX2dwaW9fbWV0aG9kcyA9ICZtZXRob2RzOworRVhQT1JUX1NZTUJPTF9HUEwocG1mX2dwaW9fbWV0aG9kcyk7CmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvZmFicmljcy9LY29uZmlnIGIvc291bmQvYW9hL2ZhYnJpY3MvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2JjNzcwCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL2ZhYnJpY3MvS2NvbmZpZwpAQCAtMCwwICsxLDEyIEBACitjb25maWcgU05EX0FPQV9GQUJSSUNfTEFZT1VUCisJdHJpc3RhdGUgImxheW91dC1pZCBmYWJyaWMiCisJZGVwZW5kcyBTTkRfQU9BCisJc2VsZWN0IFNORF9BT0FfU09VTkRCVVMKKwlzZWxlY3QgU05EX0FPQV9TT1VOREJVU19JMlMKKwktLS1oZWxwLS0tCisJVGhpcyBlbmFibGVzIHRoZSBsYXlvdXQtaWQgZmFicmljIGZvciB0aGUgQXBwbGUgT25ib2FyZAorCUF1ZGlvIGRyaXZlciwgdGhlIG1vZHVsZSBob2xkaW5nIGl0IGFsbCB0b2dldGhlcgorCWJhc2VkIG9uIHRoZSBkZXZpY2UtdHJlZSdzIGxheW91dC1pZCBwcm9wZXJ0eS4KKwkKKwlJZiB5b3UgYXJlIHVuc3VyZSBhbmQgaGF2ZSBhIGxhdGVyIEFwcGxlIG1hY2hpbmUsCisJY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4KZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9mYWJyaWNzL01ha2VmaWxlIGIvc291bmQvYW9hL2ZhYnJpY3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVmYzVlNwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9mYWJyaWNzL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai0kKENPTkZJR19TTkRfQU9BX0ZBQlJJQ19MQVlPVVQpICs9IHNuZC1hb2EtZmFicmljLWxheW91dC5vCmRpZmYgLS1naXQgYS9zb3VuZC9hb2EvZmFicmljcy9zbmQtYW9hLWZhYnJpYy1sYXlvdXQuYyBiL3NvdW5kL2FvYS9mYWJyaWNzL3NuZC1hb2EtZmFicmljLWxheW91dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YTcyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2EvZmFicmljcy9zbmQtYW9hLWZhYnJpYy1sYXlvdXQuYwpAQCAtMCwwICsxLDExMDkgQEAKKy8qCisgKiBBcHBsZSBPbmJvYXJkIEF1ZGlvIGRyaXZlciAtLSBsYXlvdXQgZmFicmljCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICoKKyAqCisgKiBUaGlzIGZhYnJpYyBtb2R1bGUgbG9va3MgZm9yIHNvdW5kIGNvZGVjcworICogYmFzZWQgb24gdGhlIGxheW91dC1pZCBwcm9wZXJ0eSBpbiB0aGUgZGV2aWNlIHRyZWUuCisgKgorICovCisKKyNpbmNsdWRlIDxhc20vcHJvbS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlICIuLi9hb2EuaCIKKyNpbmNsdWRlICIuLi9zb3VuZGJ1cy9zb3VuZGJ1cy5oIgorCitNT0RVTEVfQVVUSE9SKCJKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJMYXlvdXQtSUQgZmFicmljIGZvciBzbmQtYW9hIik7CisKKyNkZWZpbmUgTUFYX0NPREVDU19QRVJfQlVTCTIKKworLyogVGhlc2UgYXJlIHRoZSBjb25uZWN0aW9ucyB0aGUgbGF5b3V0IGZhYnJpYworICoga25vd3MgYWJvdXQuIEl0IGRvZXNuJ3QgcmVhbGx5IGNhcmUgYWJvdXQgdGhlCisgKiBpbnB1dCBvbmVzLCBidXQgSSB0aG91Z2h0IEknZCBzZXBhcmF0ZSB0aGVtCisgKiB0byBnaXZlIHRoZW0gcHJvcGVyIG5hbWVzLiBUaGUgdGhpbmcgaXMgdGhhdAorICogQXBwbGUgdXN1YWxseSB3aWxsIGRpc3Rpbmd1aXNoIHRoZSBhY3RpdmUgb3V0cHV0CisgKiBieSBHUElPcywgd2hpbGUgdGhlIGFjdGl2ZSBpbnB1dCBpcyBzZXQgZGlyZWN0bHkKKyAqIG9uIHRoZSBjb2RlYy4gSGVuY2Ugd2UgaGVyZSB0ZWxsIHRoZSBjb2RlYyB3aGF0CisgKiB3ZSB0aGluayBpcyBjb25uZWN0ZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMgaGFyZC0KKyAqIGNvZGVkIGJlbG93IC4uLiAqLworI2RlZmluZSBDQ19TUEVBS0VSUwkoMTw8MCkKKyNkZWZpbmUgQ0NfSEVBRFBIT05FCSgxPDwxKQorI2RlZmluZSBDQ19MSU5FT1VUCSgxPDwyKQorI2RlZmluZSBDQ19ESUdJVEFMT1VUCSgxPDwzKQorI2RlZmluZSBDQ19MSU5FSU4JKDE8PDQpCisjZGVmaW5lIENDX01JQ1JPUEhPTkUJKDE8PDUpCisjZGVmaW5lIENDX0RJR0lUQUxJTgkoMTw8NikKKy8qIHByZXR0eSBib2d1cyBidXQgdXNlcnMgY29tcGxhaW4uLi4KKyAqIFRoaXMgaXMgYSBmbGFnIHNheWluZyB0aGF0IHRoZSBMSU5FT1VUCisgKiBzaG91bGQgYmUgcmVuYW1lZCB0byBIRUFEUEhPTkUuCisgKiBiZSBjYXJlZnVsIHdpdGggaW5wdXQgZGV0ZWN0aW9uISAqLworI2RlZmluZSBDQ19MSU5FT1VUX0xBQkVMTEVEX0hFQURQSE9ORQkoMTw8NykKKworc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24geworCS8qIENDXyBmbGFncyBmcm9tIGFib3ZlICovCisJaW50IGNvbm5lY3RlZDsKKwkvKiBjb2RlYyBkZXBlbmRlbnQgYml0IHRvIGJlIHNldCBpbiB0aGUgYW9hX2NvZGVjLmNvbm5lY3RlZCBmaWVsZC4KKwkgKiBUaGlzIGludGVudGlvbmFsbHkgZG9lc24ndCBoYXZlIGFueSBnZW5lcmljIGZsYWdzIGJlY2F1c2UgdGhlCisJICogZmFicmljIGhhcyB0byBrbm93IHRoZSBjb2RlYyBhbnl3YXkgYW5kIGFsbCBjb2RlY3MgbWlnaHQgaGF2ZQorCSAqIGRpZmZlcmVudCBjb25uZWN0b3JzICovCisJaW50IGNvZGVjX2JpdDsKK307CisKK3N0cnVjdCBjb2RlY19jb25uZWN0X2luZm8geworCWNoYXIgKm5hbWU7CisJc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb25zOworfTsKKworI2RlZmluZSBMQVlPVVRfRkxBR19DT01CT19MSU5FT1VUX1NQRElGCSgxPDwwKQorCitzdHJ1Y3QgbGF5b3V0IHsKKwl1bnNpZ25lZCBpbnQgbGF5b3V0X2lkOworCXN0cnVjdCBjb2RlY19jb25uZWN0X2luZm8gY29kZWNzW01BWF9DT0RFQ1NfUEVSX0JVU107CisJaW50IGZsYWdzOworCQorCS8qIGlmIGJ1c25hbWUgaXMgbm90IGFzc2lnbmVkLCB3ZSB1c2UgJ01hc3RlcicgYmVsb3csCisJICogc28gdGhhdCBvdXIgbGF5b3V0IHRhYmxlIGRvZXNuJ3QgbmVlZCB0byBiZSBmaWxsZWQKKwkgKiB0b28gbXVjaC4KKwkgKiBXZSBvbmx5IGFzc2lnbiB0aGVzZSB0d28gaWYgd2UgZXhwZWN0IHRvIGZpbmQgbW9yZQorCSAqIHRoYW4gb25lIHNvdW5kYnVzLCBpLmUuIG9uIHRob3NlIG1hY2hpbmVzIHdpdGgKKwkgKiBtdWx0aXBsZSBsYXlvdXQtaWRzICovCisJY2hhciAqYnVzbmFtZTsKKwlpbnQgcGNtaWQ7Cit9OworCitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC00MSIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtNDUiKTsKK01PRFVMRV9BTElBUygic291bmQtbGF5b3V0LTUxIik7CitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC01OCIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtNjAiKTsKK01PRFVMRV9BTElBUygic291bmQtbGF5b3V0LTYxIik7CitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC02NCIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtNjUiKTsKK01PRFVMRV9BTElBUygic291bmQtbGF5b3V0LTY4Iik7CitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC02OSIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtNzAiKTsKK01PRFVMRV9BTElBUygic291bmQtbGF5b3V0LTcyIik7CitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC04MCIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtODIiKTsKK01PRFVMRV9BTElBUygic291bmQtbGF5b3V0LTg0Iik7CitNT0RVTEVfQUxJQVMoInNvdW5kLWxheW91dC04NiIpOworTU9EVUxFX0FMSUFTKCJzb3VuZC1sYXlvdXQtOTIiKTsKKworLyogb255eCB3aXRoIGFsbCBidXQgbWljcm9waG9uZSBjb25uZWN0ZWQgKi8KK3N0YXRpYyBzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiBvbnl4X2Nvbm5lY3Rpb25zX25vbWljW10gPSB7CisJeworCQkuY29ubmVjdGVkID0gQ0NfU1BFQUtFUlMgfCBDQ19IRUFEUEhPTkUgfCBDQ19MSU5FT1VULAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX0RJR0lUQUxPVVQsCisJCS5jb2RlY19iaXQgPSAxLAorCX0sCisJeworCQkuY29ubmVjdGVkID0gQ0NfTElORUlOLAorCQkuY29kZWNfYml0ID0gMiwKKwl9LAorCXt9IC8qIHRlcm1pbmF0ZSBhcnJheSBieSAuY29ubmVjdGVkID09IDAgKi8KK307CisKKy8qIG9ueXggb24gbWFjaGluZXMgd2l0aG91dCBoZWFkcGhvbmUgKi8KK3N0YXRpYyBzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lc1tdID0geworCXsKKwkJLmNvbm5lY3RlZCA9IENDX1NQRUFLRVJTIHwgQ0NfTElORU9VVCB8CisJCQkgICAgIENDX0xJTkVPVVRfTEFCRUxMRURfSEVBRFBIT05FLAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX0RJR0lUQUxPVVQsCisJCS5jb2RlY19iaXQgPSAxLAorCX0sCisJLyogRklYTUU6IGFyZSB0aGVzZSBjb3JyZWN0PyBwcm9iYWJseSBub3QgZm9yIGFsbCB0aGUgbWFjaGluZXMKKwkgKiBiZWxvdyAuLi4gSWYgbm90IHRoaXMgd2lsbCBuZWVkIHNlcGFyYXRpbmcuICovCisJeworCQkuY29ubmVjdGVkID0gQ0NfTElORUlOLAorCQkuY29kZWNfYml0ID0gMiwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX01JQ1JPUEhPTkUsCisJCS5jb2RlY19iaXQgPSAzLAorCX0sCisJe30gLyogdGVybWluYXRlIGFycmF5IGJ5IC5jb25uZWN0ZWQgPT0gMCAqLworfTsKKworLyogb255eCBvbiBtYWNoaW5lcyB3aXRoIHJlYWwgbGluZS1vdXQgKi8KK3N0YXRpYyBzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiBvbnl4X2Nvbm5lY3Rpb25zX3JlYWxsaW5lb3V0W10gPSB7CisJeworCQkuY29ubmVjdGVkID0gQ0NfU1BFQUtFUlMgfCBDQ19MSU5FT1VUIHwgQ0NfSEVBRFBIT05FLAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX0RJR0lUQUxPVVQsCisJCS5jb2RlY19iaXQgPSAxLAorCX0sCisJeworCQkuY29ubmVjdGVkID0gQ0NfTElORUlOLAorCQkuY29kZWNfYml0ID0gMiwKKwl9LAorCXt9IC8qIHRlcm1pbmF0ZSBhcnJheSBieSAuY29ubmVjdGVkID09IDAgKi8KK307CisKKy8qIHRhcyBvbiBtYWNoaW5lcyB3aXRob3V0IGxpbmUgb3V0ICovCitzdGF0aWMgc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gdGFzX2Nvbm5lY3Rpb25zX25vbGluZW91dFtdID0geworCXsKKwkJLmNvbm5lY3RlZCA9IENDX1NQRUFLRVJTIHwgQ0NfSEVBRFBIT05FLAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX0xJTkVJTiwKKwkJLmNvZGVjX2JpdCA9IDIsCisJfSwKKwl7CisJCS5jb25uZWN0ZWQgPSBDQ19NSUNST1BIT05FLAorCQkuY29kZWNfYml0ID0gMywKKwl9LAorCXt9IC8qIHRlcm1pbmF0ZSBhcnJheSBieSAuY29ubmVjdGVkID09IDAgKi8KK307CisKKy8qIHRhcyBvbiBtYWNoaW5lcyB3aXRoIG5laXRoZXIgbGluZSBvdXQgbm9yIGxpbmUgaW4gKi8KK3N0YXRpYyBzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiB0YXNfY29ubmVjdGlvbnNfbm9saW5lW10gPSB7CisJeworCQkuY29ubmVjdGVkID0gQ0NfU1BFQUtFUlMgfCBDQ19IRUFEUEhPTkUsCisJCS5jb2RlY19iaXQgPSAwLAorCX0sCisJeworCQkuY29ubmVjdGVkID0gQ0NfTUlDUk9QSE9ORSwKKwkJLmNvZGVjX2JpdCA9IDMsCisJfSwKKwl7fSAvKiB0ZXJtaW5hdGUgYXJyYXkgYnkgLmNvbm5lY3RlZCA9PSAwICovCit9OworCisvKiB0YXMgb24gbWFjaGluZXMgd2l0aG91dCBtaWNyb3Bob25lICovCitzdGF0aWMgc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gdGFzX2Nvbm5lY3Rpb25zX25vbWljW10gPSB7CisJeworCQkuY29ubmVjdGVkID0gQ0NfU1BFQUtFUlMgfCBDQ19IRUFEUEhPTkUgfCBDQ19MSU5FT1VULAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX0xJTkVJTiwKKwkJLmNvZGVjX2JpdCA9IDIsCisJfSwKKwl7fSAvKiB0ZXJtaW5hdGUgYXJyYXkgYnkgLmNvbm5lY3RlZCA9PSAwICovCit9OworCisvKiB0YXMgb24gbWFjaGluZXMgd2l0aCBldmVyeXRoaW5nIGNvbm5lY3RlZCAqLworc3RhdGljIHN0cnVjdCBjb2RlY19jb25uZWN0aW9uIHRhc19jb25uZWN0aW9uc19hbGxbXSA9IHsKKwl7CisJCS5jb25uZWN0ZWQgPSBDQ19TUEVBS0VSUyB8IENDX0hFQURQSE9ORSB8IENDX0xJTkVPVVQsCisJCS5jb2RlY19iaXQgPSAwLAorCX0sCisJeworCQkuY29ubmVjdGVkID0gQ0NfTElORUlOLAorCQkuY29kZWNfYml0ID0gMiwKKwl9LAorCXsKKwkJLmNvbm5lY3RlZCA9IENDX01JQ1JPUEhPTkUsCisJCS5jb2RlY19iaXQgPSAzLAorCX0sCisJe30gLyogdGVybWluYXRlIGFycmF5IGJ5IC5jb25uZWN0ZWQgPT0gMCAqLworfTsKKworc3RhdGljIHN0cnVjdCBjb2RlY19jb25uZWN0aW9uIHRvb25pZV9jb25uZWN0aW9uc1tdID0geworCXsKKwkJLmNvbm5lY3RlZCA9IENDX1NQRUFLRVJTIHwgQ0NfSEVBRFBIT05FLAorCQkuY29kZWNfYml0ID0gMCwKKwl9LAorCXt9IC8qIHRlcm1pbmF0ZSBhcnJheSBieSAuY29ubmVjdGVkID09IDAgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiB0b3Bhel9pbnB1dFtdID0geworCXsKKwkJLmNvbm5lY3RlZCA9IENDX0RJR0lUQUxJTiwKKwkJLmNvZGVjX2JpdCA9IDAsCisJfSwKKwl7fSAvKiB0ZXJtaW5hdGUgYXJyYXkgYnkgLmNvbm5lY3RlZCA9PSAwICovCit9OworCitzdGF0aWMgc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gdG9wYXpfb3V0cHV0W10gPSB7CisJeworCQkuY29ubmVjdGVkID0gQ0NfRElHSVRBTE9VVCwKKwkJLmNvZGVjX2JpdCA9IDEsCisJfSwKKwl7fSAvKiB0ZXJtaW5hdGUgYXJyYXkgYnkgLmNvbm5lY3RlZCA9PSAwICovCit9OworCitzdGF0aWMgc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gdG9wYXpfaW5vdXRbXSA9IHsKKwl7CisJCS5jb25uZWN0ZWQgPSBDQ19ESUdJVEFMSU4sCisJCS5jb2RlY19iaXQgPSAwLAorCX0sCisJeworCQkuY29ubmVjdGVkID0gQ0NfRElHSVRBTE9VVCwKKwkJLmNvZGVjX2JpdCA9IDEsCisJfSwKKwl7fSAvKiB0ZXJtaW5hdGUgYXJyYXkgYnkgLmNvbm5lY3RlZCA9PSAwICovCit9OworCitzdGF0aWMgc3RydWN0IGxheW91dCBsYXlvdXRzW10gPSB7CisJLyogbGFzdCBQb3dlckJvb2tzICgxNSIgT2N0IDIwMDUpICovCisJeyAubGF5b3V0X2lkID0gODIsCisJICAuZmxhZ3MgPSBMQVlPVVRfRkxBR19DT01CT19MSU5FT1VUX1NQRElGLAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAib255eCIsCisJCS5jb25uZWN0aW9ucyA9IG9ueXhfY29ubmVjdGlvbnNfbm9oZWFkcGhvbmVzLAorCSAgfSwKKwkgIC5jb2RlY3NbMV0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5wdXQsCisJICB9LAorCX0sCisJLyogUG93ZXJNYWM5LDEgKi8KKwl7IC5sYXlvdXRfaWQgPSA2MCwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX3JlYWxsaW5lb3V0LAorCSAgfSwKKwl9LAorCS8qIFBvd2VyTWFjOSwxICovCisJeyAubGF5b3V0X2lkID0gNjEsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwl9LAorCS8qIFBvd2VyQm9vazUsNyAqLworCXsgLmxheW91dF9pZCA9IDY0LAorCSAgLmZsYWdzID0gTEFZT1VUX0ZMQUdfQ09NQk9fTElORU9VVF9TUERJRiwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJfSwKKwkvKiBQb3dlckJvb2s1LDcgKi8KKwl7IC5sYXlvdXRfaWQgPSA2NSwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5wdXQsCisJICB9LAorCX0sCisJLyogUG93ZXJCb29rNSw5IFsxNyIgT2N0IDIwMDVdICovCisJeyAubGF5b3V0X2lkID0gODQsCisJICAuZmxhZ3MgPSBMQVlPVVRfRkxBR19DT01CT19MSU5FT1VUX1NQRElGLAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAib255eCIsCisJCS5jb25uZWN0aW9ucyA9IG9ueXhfY29ubmVjdGlvbnNfbm9oZWFkcGhvbmVzLAorCSAgfSwKKwkgIC5jb2RlY3NbMV0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5wdXQsCisJICB9LAorCX0sCisJLyogUG93ZXJNYWM4LDEgKi8KKwl7IC5sYXlvdXRfaWQgPSA0NSwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJICAuY29kZWNzWzFdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwl9LAorCS8qIFF1YWQgUG93ZXJNYWMgKGFuYWxvZyBpbiwgYW5hbG9nL2RpZ2l0YWwgb3V0KSAqLworCXsgLmxheW91dF9pZCA9IDY4LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAib255eCIsCisJCS5jb25uZWN0aW9ucyA9IG9ueXhfY29ubmVjdGlvbnNfbm9taWMsCisJICB9LAorCX0sCisJLyogUXVhZCBQb3dlck1hYyAoZGlnaXRhbCBpbikgKi8KKwl7IC5sYXlvdXRfaWQgPSA2OSwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5wdXQsCisJICB9LAorCSAgLmJ1c25hbWUgPSAiZGlnaXRhbCBpbiIsIC5wY21pZCA9IDEgfSwKKwkvKiBFYXJseSAyMDA1IFBvd2VyQm9vayAoUG93ZXJCb29rIDUsNikgKi8KKwl7IC5sYXlvdXRfaWQgPSA3MCwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRhcyIsCisJCS5jb25uZWN0aW9ucyA9IHRhc19jb25uZWN0aW9uc19ub2xpbmVvdXQsCisJICB9LAorCX0sCisJLyogUG93ZXJCb29rIDUsNCAqLworCXsgLmxheW91dF9pZCA9IDUxLAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAidGFzIiwKKwkJLmNvbm5lY3Rpb25zID0gdGFzX2Nvbm5lY3Rpb25zX25vbGluZW91dCwKKwkgIH0sCisJfSwKKwkvKiBQb3dlckJvb2s2LDcgKi8KKwl7IC5sYXlvdXRfaWQgPSA4MCwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRhcyIsCisJCS5jb25uZWN0aW9ucyA9IHRhc19jb25uZWN0aW9uc19ub2xpbmUsCisJICB9LAorCX0sCisJLyogUG93ZXJCb29rNiw4ICovCisJeyAubGF5b3V0X2lkID0gNzIsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0YXMiLAorCQkuY29ubmVjdGlvbnMgPSB0YXNfY29ubmVjdGlvbnNfbm9saW5lb3V0LAorCSAgfSwKKwl9LAorCS8qIFBvd2VyTWFjOCwyICovCisJeyAubGF5b3V0X2lkID0gODYsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJvbnl4IiwKKwkJLmNvbm5lY3Rpb25zID0gb255eF9jb25uZWN0aW9uc19ub21pYywKKwkgIH0sCisJICAuY29kZWNzWzFdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwl9LAorCS8qIFBvd2VyQm9vazYsNyAqLworCXsgLmxheW91dF9pZCA9IDkyLAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAidGFzIiwKKwkJLmNvbm5lY3Rpb25zID0gdGFzX2Nvbm5lY3Rpb25zX25vbGluZW91dCwKKwkgIH0sCisJfSwKKwkvKiBQb3dlck1hYzEwLDEgKE1hYyBNaW5pKSAqLworCXsgLmxheW91dF9pZCA9IDU4LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAidG9vbmllIiwKKwkJLmNvbm5lY3Rpb25zID0gdG9vbmllX2Nvbm5lY3Rpb25zLAorCSAgfSwKKwl9LAorCS8qIHVua25vd24sIHVudGVzdGVkLCBidXQgdGhpcyBjb21lcyBmcm9tIEFwcGxlICovCisJeyAubGF5b3V0X2lkID0gNDEsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0YXMiLAorCQkuY29ubmVjdGlvbnMgPSB0YXNfY29ubmVjdGlvbnNfYWxsLAorCSAgfSwKKwl9LAorCXsgLmxheW91dF9pZCA9IDM2LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAidGFzIiwKKwkJLmNvbm5lY3Rpb25zID0gdGFzX2Nvbm5lY3Rpb25zX25vbWljLAorCSAgfSwKKwkgIC5jb2RlY3NbMV0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5vdXQsCisJICB9LAorCX0sCisJeyAubGF5b3V0X2lkID0gNDcsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJvbnl4IiwKKwkJLmNvbm5lY3Rpb25zID0gb255eF9jb25uZWN0aW9uc19ub2hlYWRwaG9uZXMsCisJICB9LAorCX0sCisJeyAubGF5b3V0X2lkID0gNDgsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwl9LAorCXsgLmxheW91dF9pZCA9IDQ5LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAib255eCIsCisJCS5jb25uZWN0aW9ucyA9IG9ueXhfY29ubmVjdGlvbnNfbm9taWMsCisJICB9LAorCX0sCisJeyAubGF5b3V0X2lkID0gNTAsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwl9LAorCXsgLmxheW91dF9pZCA9IDU2LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAib255eCIsCisJCS5jb25uZWN0aW9ucyA9IG9ueXhfY29ubmVjdGlvbnNfbm9oZWFkcGhvbmVzLAorCSAgfSwKKwl9LAorCXsgLmxheW91dF9pZCA9IDU3LAorCSAgLmNvZGVjc1swXSA9IHsKKwkJLm5hbWUgPSAidG9wYXoiLAorCQkuY29ubmVjdGlvbnMgPSB0b3Bhel9pbnB1dCwKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA2MiwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJICAuY29kZWNzWzFdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X291dHB1dCwKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA2NiwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA2NywKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRvcGF6IiwKKwkJLmNvbm5lY3Rpb25zID0gdG9wYXpfaW5wdXQsCisJICB9LAorCX0sCisJeyAubGF5b3V0X2lkID0gNzYsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0YXMiLAorCQkuY29ubmVjdGlvbnMgPSB0YXNfY29ubmVjdGlvbnNfbm9taWMsCisJICB9LAorCSAgLmNvZGVjc1sxXSA9IHsKKwkJLm5hbWUgPSAidG9wYXoiLAorCQkuY29ubmVjdGlvbnMgPSB0b3Bhel9pbm91dCwKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA5MCwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRhcyIsCisJCS5jb25uZWN0aW9ucyA9IHRhc19jb25uZWN0aW9uc19ub2xpbmUsCisJICB9LAorCX0sCisJeyAubGF5b3V0X2lkID0gOTQsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJvbnl4IiwKKwkJLyogYnV0IGl0IGhhcyBhbiBleHRlcm5hbCBtaWM/PyBob3cgdG8gc2VsZWN0PyAqLworCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA5NiwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSA5OCwKKwkgIC5jb2RlY3NbMF0gPSB7CisJCS5uYW1lID0gInRvb25pZSIsCisJCS5jb25uZWN0aW9ucyA9IHRvb25pZV9jb25uZWN0aW9ucywKKwkgIH0sCisJfSwKKwl7IC5sYXlvdXRfaWQgPSAxMDAsCisJICAuY29kZWNzWzBdID0geworCQkubmFtZSA9ICJ0b3BheiIsCisJCS5jb25uZWN0aW9ucyA9IHRvcGF6X2lucHV0LAorCSAgfSwKKwkgIC5jb2RlY3NbMV0gPSB7CisJCS5uYW1lID0gIm9ueXgiLAorCQkuY29ubmVjdGlvbnMgPSBvbnl4X2Nvbm5lY3Rpb25zX25vaGVhZHBob25lcywKKwkgIH0sCisJfSwKKwl7fQorfTsKKworc3RhdGljIHN0cnVjdCBsYXlvdXQgKmZpbmRfbGF5b3V0X2J5X2lkKHVuc2lnbmVkIGludCBpZCkKK3sKKwlzdHJ1Y3QgbGF5b3V0ICpsOworCisJbCA9IGxheW91dHM7CisJd2hpbGUgKGwtPmxheW91dF9pZCkgeworCQlpZiAobC0+bGF5b3V0X2lkID09IGlkKQorCQkJcmV0dXJuIGw7CisJCWwrKzsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHVzZV9sYXlvdXQoc3RydWN0IGxheW91dCAqbCkKK3sKKwlpbnQgaTsKKworCWZvciAoaT0wOyBpPE1BWF9DT0RFQ1NfUEVSX0JVUzsgaSsrKSB7CisJCWlmIChsLT5jb2RlY3NbaV0ubmFtZSkgeworCQkJcmVxdWVzdF9tb2R1bGUoInNuZC1hb2EtY29kZWMtJXMiLCBsLT5jb2RlY3NbaV0ubmFtZSk7CisJCX0KKwl9CisJLyogbm93IHdlIHdhaXQgZm9yIHRoZSBjb2RlY3MgdG8gY2FsbCB1cyBiYWNrICovCit9CisKK3N0cnVjdCBsYXlvdXRfZGV2OworCitzdHJ1Y3QgbGF5b3V0X2Rldl9wdHIgeworCXN0cnVjdCBsYXlvdXRfZGV2ICpwdHI7Cit9OworCitzdHJ1Y3QgbGF5b3V0X2RldiB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBzb3VuZGJ1c19kZXYgKnNkZXY7CisJc3RydWN0IGRldmljZV9ub2RlICpzb3VuZDsKKwlzdHJ1Y3QgYW9hX2NvZGVjICpjb2RlY3NbTUFYX0NPREVDU19QRVJfQlVTXTsKKwlzdHJ1Y3QgbGF5b3V0ICpsYXlvdXQ7CisJc3RydWN0IGdwaW9fcnVudGltZSBncGlvOworCisJLyogd2UgbmVlZCB0aGVzZSBmb3IgaGVhZHBob25lL2xpbmVvdXQgZGV0ZWN0aW9uICovCisJc3RydWN0IHNuZF9rY29udHJvbCAqaGVhZHBob25lX2N0cmw7CisJc3RydWN0IHNuZF9rY29udHJvbCAqbGluZW91dF9jdHJsOworCXN0cnVjdCBzbmRfa2NvbnRyb2wgKnNwZWFrZXJfY3RybDsKKwlzdHJ1Y3Qgc25kX2tjb250cm9sICpoZWFkcGhvbmVfZGV0ZWN0ZWRfY3RybDsKKwlzdHJ1Y3Qgc25kX2tjb250cm9sICpsaW5lb3V0X2RldGVjdGVkX2N0cmw7CisKKwlzdHJ1Y3QgbGF5b3V0X2Rldl9wdHIgc2VsZnB0cl9oZWFkcGhvbmU7CisJc3RydWN0IGxheW91dF9kZXZfcHRyIHNlbGZwdHJfbGluZW91dDsKKworCXUzMiBoYXZlX2xpbmVvdXRfZGV0ZWN0OjEsCisJICAgIGhhdmVfaGVhZHBob25lX2RldGVjdDoxLAorCSAgICBzd2l0Y2hfb25faGVhZHBob25lOjEsCisJICAgIHN3aXRjaF9vbl9saW5lb3V0OjE7Cit9OworCitzdGF0aWMgTElTVF9IRUFEKGxheW91dHNfbGlzdCk7CitzdGF0aWMgaW50IGxheW91dHNfbGlzdF9pdGVtczsKKy8qIHRoaXMgY2FuIGdvIGF3YXkgYnV0IG9ubHkgaWYgd2UgYWxsb3cgbXVsdGlwbGUgY2FyZHMsCisgKiBtYWtlIHRoZSBmYWJyaWMgaGFuZGxlIGFsbCB0aGUgY2FyZCBzdHVmZiwgZXRjLi4uICovCitzdGF0aWMgc3RydWN0IGxheW91dF9kZXYgKmxheW91dF9kZXZpY2U7CisKK3N0YXRpYyBpbnQgY29udHJvbF9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKK3sKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTjsKKwl1aW5mby0+Y291bnQgPSAxOworCXVpbmZvLT52YWx1ZS5pbnRlZ2VyLm1pbiA9IDA7CisJdWluZm8tPnZhbHVlLmludGVnZXIubWF4ID0gMTsKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBBTVBfQ09OVFJPTChuLCBkZXNjcmlwdGlvbikJCQkJCVwKK3N0YXRpYyBpbnQgbiMjX2NvbnRyb2xfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAkJXAorCQkJICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCQlcCit7CQkJCQkJCQkJXAorCXN0cnVjdCBncGlvX3J1bnRpbWUgKmdwaW8gPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CVwKKwlpZiAoZ3Bpby0+bWV0aG9kcyAmJiBncGlvLT5tZXRob2RzLT5nZXRfIyNuKQkJCVwKKwkJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPQkJCVwKKwkJCWdwaW8tPm1ldGhvZHMtPmdldF8jI24oZ3Bpbyk7CQkJXAorCXJldHVybiAwOwkJCQkJCQlcCit9CQkJCQkJCQkJXAorc3RhdGljIGludCBuIyNfY29udHJvbF9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCQlcCisJCQkgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkJCVwKK3sJCQkJCQkJCQlcCisJc3RydWN0IGdwaW9fcnVudGltZSAqZ3BpbyA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsJXAorCWlmIChncGlvLT5tZXRob2RzICYmIGdwaW8tPm1ldGhvZHMtPmdldF8jI24pCQkJXAorCQlncGlvLT5tZXRob2RzLT5zZXRfIyNuKGdwaW8sCQkJCVwKKwkJCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdKTsJCVwKKwlyZXR1cm4gMTsJCQkJCQkJXAorfQkJCQkJCQkJCVwKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBuIyNfY3RsID0gewkJCQlcCisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCQkJCVwKKwkubmFtZSA9IGRlc2NyaXB0aW9uLAkJCQkJCVwKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwgICAgICAgICAgICAgICAgICAgICAgXAorCS5pbmZvID0gY29udHJvbF9pbmZvLAkJCQkJCVwKKwkuZ2V0ID0gbiMjX2NvbnRyb2xfZ2V0LAkJCQkJCVwKKwkucHV0ID0gbiMjX2NvbnRyb2xfcHV0LAkJCQkJCVwKK30KKworQU1QX0NPTlRST0woaGVhZHBob25lLCAiSGVhZHBob25lIFN3aXRjaCIpOworQU1QX0NPTlRST0woc3BlYWtlcnMsICJTcGVha2VycyBTd2l0Y2giKTsKK0FNUF9DT05UUk9MKGxpbmVvdXQsICJMaW5lLU91dCBTd2l0Y2giKTsKKworc3RhdGljIGludCBkZXRlY3RfY2hvaWNlX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCSAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IGxheW91dF9kZXYgKmxkZXYgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisKKwlzd2l0Y2ggKGtjb250cm9sLT5wcml2YXRlX3ZhbHVlKSB7CisJY2FzZSAwOgorCQl1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IGxkZXYtPnN3aXRjaF9vbl9oZWFkcGhvbmU7CisJCWJyZWFrOworCWNhc2UgMToKKwkJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSBsZGV2LT5zd2l0Y2hfb25fbGluZW91dDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRldGVjdF9jaG9pY2VfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldiA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKworCXN3aXRjaCAoa2NvbnRyb2wtPnByaXZhdGVfdmFsdWUpIHsKKwljYXNlIDA6CisJCWxkZXYtPnN3aXRjaF9vbl9oZWFkcGhvbmUgPSAhIXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOworCQlicmVhazsKKwljYXNlIDE6CisJCWxkZXYtPnN3aXRjaF9vbl9saW5lb3V0ID0gISF1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaGVhZHBob25lX2RldGVjdF9jaG9pY2UgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiSGVhZHBob25lIERldGVjdCBBdXRvc3dpdGNoIiwKKwkuaW5mbyA9IGNvbnRyb2xfaW5mbywKKwkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURSwKKwkuZ2V0ID0gZGV0ZWN0X2Nob2ljZV9nZXQsCisJLnB1dCA9IGRldGVjdF9jaG9pY2VfcHV0LAorCS5wcml2YXRlX3ZhbHVlID0gMCwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBsaW5lb3V0X2RldGVjdF9jaG9pY2UgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiTGluZS1PdXQgRGV0ZWN0IEF1dG9zd2l0Y2giLAorCS5pbmZvID0gY29udHJvbF9pbmZvLAorCS5hY2Nlc3MgPSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFLAorCS5nZXQgPSBkZXRlY3RfY2hvaWNlX2dldCwKKwkucHV0ID0gZGV0ZWN0X2Nob2ljZV9wdXQsCisJLnByaXZhdGVfdmFsdWUgPSAxLAorfTsKKworc3RhdGljIGludCBkZXRlY3RlZF9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldiA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwlpbnQgdjsKKworCXN3aXRjaCAoa2NvbnRyb2wtPnByaXZhdGVfdmFsdWUpIHsKKwljYXNlIDA6CisJCXYgPSBsZGV2LT5ncGlvLm1ldGhvZHMtPmdldF9kZXRlY3QoJmxkZXYtPmdwaW8sCisJCQkJCQkgICBBT0FfTk9USUZZX0hFQURQSE9ORSk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJdiA9IGxkZXYtPmdwaW8ubWV0aG9kcy0+Z2V0X2RldGVjdCgmbGRldi0+Z3BpbywKKwkJCQkJCSAgIEFPQV9OT1RJRllfTElORV9PVVQpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSB2OworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaGVhZHBob25lX2RldGVjdGVkID0geworCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS5uYW1lID0gIkhlYWRwaG9uZSBEZXRlY3RlZCIsCisJLmluZm8gPSBjb250cm9sX2luZm8sCisJLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFELAorCS5nZXQgPSBkZXRlY3RlZF9nZXQsCisJLnByaXZhdGVfdmFsdWUgPSAwLAorfTsKKworc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGxpbmVvdXRfZGV0ZWN0ZWQgPSB7CisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCisJLm5hbWUgPSAiTGluZS1PdXQgRGV0ZWN0ZWQiLAorCS5pbmZvID0gY29udHJvbF9pbmZvLAorCS5hY2Nlc3MgPSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRCwKKwkuZ2V0ID0gZGV0ZWN0ZWRfZ2V0LAorCS5wcml2YXRlX3ZhbHVlID0gMSwKK307CisKK3N0YXRpYyBpbnQgY2hlY2tfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMsCisJCSAgICAgICBzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldiwKKwkJICAgICAgIHN0cnVjdCBjb2RlY19jb25uZWN0X2luZm8gKmNjaSkKK3sKKwl1MzIgKnJlZjsKKwljaGFyIHByb3BuYW1lWzMyXTsKKwlzdHJ1Y3QgY29kZWNfY29ubmVjdGlvbiAqY2M7CisKKwkvKiBpZiB0aGUgY29kZWMgaGFzIGEgJ2NvZGVjJyBub2RlLCB3ZSByZXF1aXJlIGEgcmVmZXJlbmNlICovCisJaWYgKGNvZGVjLT5ub2RlICYmIChzdHJjbXAoY29kZWMtPm5vZGUtPm5hbWUsICJjb2RlYyIpID09IDApKSB7CisJCXNucHJpbnRmKHByb3BuYW1lLCBzaXplb2YocHJvcG5hbWUpLAorCQkJICJwbGF0Zm9ybS0lcy1jb2RlYy1yZWYiLCBjb2RlYy0+bmFtZSk7CisJCXJlZiA9ICh1MzIqKWdldF9wcm9wZXJ0eShsZGV2LT5zb3VuZCwgcHJvcG5hbWUsIE5VTEwpOworCQlpZiAoIXJlZikgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAic25kLWFvYS1mYWJyaWMtbGF5b3V0OiAiCisJCQkJInJlcXVpcmVkIHByb3BlcnR5ICVzIG5vdCBwcmVzZW50XG4iLCBwcm9wbmFtZSk7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCQlpZiAoKnJlZiAhPSBjb2RlYy0+bm9kZS0+bGludXhfcGhhbmRsZSkgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAic25kLWFvYS1mYWJyaWMtbGF5b3V0OiAiCisJCQkJIiVzIGRvZXNuJ3QgbWF0Y2ghXG4iLCBwcm9wbmFtZSk7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChsYXlvdXRzX2xpc3RfaXRlbXMgIT0gMSkgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAic25kLWFvYS1mYWJyaWMtbGF5b3V0OiAiCisJCQkJIm1vcmUgdGhhbiBvbmUgc291bmRidXMsIGJ1dCBubyByZWZlcmVuY2VzLlxuIik7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCX0KKwljb2RlYy0+c291bmRidXNfZGV2ID0gbGRldi0+c2RldjsKKwljb2RlYy0+Z3BpbyA9ICZsZGV2LT5ncGlvOworCisJY2MgPSBjY2ktPmNvbm5lY3Rpb25zOworCWlmICghY2MpCisJCXJldHVybiAtRUlOVkFMOworCisJcHJpbnRrKEtFUk5fSU5GTyAic25kLWFvYS1mYWJyaWMtbGF5b3V0OiBjYW4gdXNlIHRoaXMgY29kZWNcbiIpOworCisJY29kZWMtPmNvbm5lY3RlZCA9IDA7CisJY29kZWMtPmZhYnJpY19kYXRhID0gY2M7CisKKwl3aGlsZSAoY2MtPmNvbm5lY3RlZCkgeworCQljb2RlYy0+Y29ubmVjdGVkIHw9IDE8PGNjLT5jb2RlY19iaXQ7CisJCWNjKys7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGF5b3V0X2ZvdW5kX2NvZGVjKHN0cnVjdCBhb2FfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCBsYXlvdXRfZGV2ICpsZGV2OworCWludCBpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShsZGV2LCAmbGF5b3V0c19saXN0LCBsaXN0KSB7CisJCWZvciAoaT0wOyBpPE1BWF9DT0RFQ1NfUEVSX0JVUzsgaSsrKSB7CisJCQlpZiAoIWxkZXYtPmxheW91dC0+Y29kZWNzW2ldLm5hbWUpCisJCQkJY29udGludWU7CisJCQlpZiAoc3RyY21wKGxkZXYtPmxheW91dC0+Y29kZWNzW2ldLm5hbWUsIGNvZGVjLT5uYW1lKSA9PSAwKSB7CisJCQkJaWYgKGNoZWNrX2NvZGVjKGNvZGVjLAorCQkJCQkJbGRldiwKKwkJCQkJCSZsZGV2LT5sYXlvdXQtPmNvZGVjc1tpXSkgPT0gMCkKKwkJCQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyB2b2lkIGxheW91dF9yZW1vdmVfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJaW50IGk7CisJLyogaGVyZSByZW1vdmUgdGhlIGNvZGVjIGZyb20gdGhlIGxheW91dCBkZXYncworCSAqIGNvZGVjIHJlZmVyZW5jZSAqLworCisJY29kZWMtPnNvdW5kYnVzX2RldiA9IE5VTEw7CisJY29kZWMtPmdwaW8gPSBOVUxMOworCWZvciAoaT0wOyBpPE1BWF9DT0RFQ1NfUEVSX0JVUzsgaSsrKSB7CisJfQorfQorCitzdGF0aWMgdm9pZCBsYXlvdXRfbm90aWZ5KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGxheW91dF9kZXZfcHRyICpkcHRyID0gZGF0YTsKKwlzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldjsKKwlpbnQgdiwgdXBkYXRlOworCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmRldGVjdGVkLCAqYzsKKwlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQgPSBhb2FfZ2V0X2NhcmQoKTsKKworCWxkZXYgPSBkcHRyLT5wdHI7CisJaWYgKGRhdGEgPT0gJmxkZXYtPnNlbGZwdHJfaGVhZHBob25lKSB7CisJCXYgPSBsZGV2LT5ncGlvLm1ldGhvZHMtPmdldF9kZXRlY3QoJmxkZXYtPmdwaW8sIEFPQV9OT1RJRllfSEVBRFBIT05FKTsKKwkJZGV0ZWN0ZWQgPSBsZGV2LT5oZWFkcGhvbmVfZGV0ZWN0ZWRfY3RybDsKKwkJdXBkYXRlID0gbGRldi0+c3dpdGNoX29uX2hlYWRwaG9uZTsKKwkJaWYgKHVwZGF0ZSkgeworCQkJbGRldi0+Z3Bpby5tZXRob2RzLT5zZXRfc3BlYWtlcnMoJmxkZXYtPmdwaW8sICF2KTsKKwkJCWxkZXYtPmdwaW8ubWV0aG9kcy0+c2V0X2hlYWRwaG9uZSgmbGRldi0+Z3Bpbywgdik7CisJCQlsZGV2LT5ncGlvLm1ldGhvZHMtPnNldF9saW5lb3V0KCZsZGV2LT5ncGlvLCAwKTsKKwkJfQorCX0gZWxzZSBpZiAoZGF0YSA9PSAmbGRldi0+c2VsZnB0cl9saW5lb3V0KSB7CisJCXYgPSBsZGV2LT5ncGlvLm1ldGhvZHMtPmdldF9kZXRlY3QoJmxkZXYtPmdwaW8sIEFPQV9OT1RJRllfTElORV9PVVQpOworCQlkZXRlY3RlZCA9IGxkZXYtPmxpbmVvdXRfZGV0ZWN0ZWRfY3RybDsKKwkJdXBkYXRlID0gbGRldi0+c3dpdGNoX29uX2xpbmVvdXQ7CisJCWlmICh1cGRhdGUpIHsKKwkJCWxkZXYtPmdwaW8ubWV0aG9kcy0+c2V0X3NwZWFrZXJzKCZsZGV2LT5ncGlvLCAhdik7CisJCQlsZGV2LT5ncGlvLm1ldGhvZHMtPnNldF9oZWFkcGhvbmUoJmxkZXYtPmdwaW8sIDApOworCQkJbGRldi0+Z3Bpby5tZXRob2RzLT5zZXRfbGluZW91dCgmbGRldi0+Z3Bpbywgdik7CisJCX0KKwl9IGVsc2UKKwkJcmV0dXJuOworCisJaWYgKGRldGVjdGVkKQorCQlzbmRfY3RsX25vdGlmeShjYXJkLCBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRSwgJmRldGVjdGVkLT5pZCk7CisJaWYgKHVwZGF0ZSkgeworCQljID0gbGRldi0+aGVhZHBob25lX2N0cmw7CisJCWlmIChjKQorCQkJc25kX2N0bF9ub3RpZnkoY2FyZCwgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUsICZjLT5pZCk7CisJCWMgPSBsZGV2LT5zcGVha2VyX2N0cmw7CisJCWlmIChjKQorCQkJc25kX2N0bF9ub3RpZnkoY2FyZCwgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUsICZjLT5pZCk7CisJCWMgPSBsZGV2LT5saW5lb3V0X2N0cmw7CisJCWlmIChjKQorCQkJc25kX2N0bF9ub3RpZnkoY2FyZCwgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUsICZjLT5pZCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBsYXlvdXRfYXR0YWNoZWRfY29kZWMoc3RydWN0IGFvYV9jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IGNvZGVjX2Nvbm5lY3Rpb24gKmNjOworCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmN0bDsKKwlpbnQgaGVhZHBob25lcywgbGluZW91dDsKKwlzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldiA9IGxheW91dF9kZXZpY2U7CisKKwkvKiBuZWVkIHRvIGFkZCB0aGlzIGNvZGVjIHRvIG91ciBjb2RlYyBhcnJheSEgKi8KKworCWNjID0gY29kZWMtPmZhYnJpY19kYXRhOworCisJaGVhZHBob25lcyA9IGNvZGVjLT5ncGlvLT5tZXRob2RzLT5nZXRfZGV0ZWN0KGNvZGVjLT5ncGlvLAorCQkJCQkJICAgICAgQU9BX05PVElGWV9IRUFEUEhPTkUpOworIAlsaW5lb3V0ID0gY29kZWMtPmdwaW8tPm1ldGhvZHMtPmdldF9kZXRlY3QoY29kZWMtPmdwaW8sCisJCQkJCQkgICBBT0FfTk9USUZZX0xJTkVfT1VUKTsKKworCXdoaWxlIChjYy0+Y29ubmVjdGVkKSB7CisJCWlmIChjYy0+Y29ubmVjdGVkICYgQ0NfU1BFQUtFUlMpIHsKKwkJCWlmIChoZWFkcGhvbmVzIDw9IDAgJiYgbGluZW91dCA8PSAwKQorCQkJCWxkZXYtPmdwaW8ubWV0aG9kcy0+c2V0X3NwZWFrZXJzKGNvZGVjLT5ncGlvLCAxKTsKKwkJCWN0bCA9IHNuZF9jdGxfbmV3MSgmc3BlYWtlcnNfY3RsLCBjb2RlYy0+Z3Bpbyk7CisJCQlsZGV2LT5zcGVha2VyX2N0cmwgPSBjdGw7CisJCQlhb2Ffc25kX2N0bF9hZGQoY3RsKTsKKwkJfQorCQlpZiAoY2MtPmNvbm5lY3RlZCAmIENDX0hFQURQSE9ORSkgeworCQkJaWYgKGhlYWRwaG9uZXMgPT0gMSkKKwkJCQlsZGV2LT5ncGlvLm1ldGhvZHMtPnNldF9oZWFkcGhvbmUoY29kZWMtPmdwaW8sIDEpOworCQkJY3RsID0gc25kX2N0bF9uZXcxKCZoZWFkcGhvbmVfY3RsLCBjb2RlYy0+Z3Bpbyk7CisJCQlsZGV2LT5oZWFkcGhvbmVfY3RybCA9IGN0bDsKKwkJCWFvYV9zbmRfY3RsX2FkZChjdGwpOworCQkJbGRldi0+aGF2ZV9oZWFkcGhvbmVfZGV0ZWN0ID0KKwkJCQkhbGRldi0+Z3Bpby5tZXRob2RzCisJCQkJCS0+c2V0X25vdGlmeSgmbGRldi0+Z3BpbywKKwkJCQkJCSAgICAgQU9BX05PVElGWV9IRUFEUEhPTkUsCisJCQkJCQkgICAgIGxheW91dF9ub3RpZnksCisJCQkJCQkgICAgICZsZGV2LT5zZWxmcHRyX2hlYWRwaG9uZSk7CisJCQlpZiAobGRldi0+aGF2ZV9oZWFkcGhvbmVfZGV0ZWN0KSB7CisJCQkJY3RsID0gc25kX2N0bF9uZXcxKCZoZWFkcGhvbmVfZGV0ZWN0X2Nob2ljZSwKKwkJCQkJCSAgIGxkZXYpOworCQkJCWFvYV9zbmRfY3RsX2FkZChjdGwpOworCQkJCWN0bCA9IHNuZF9jdGxfbmV3MSgmaGVhZHBob25lX2RldGVjdGVkLAorCQkJCQkJICAgbGRldik7CisJCQkJbGRldi0+aGVhZHBob25lX2RldGVjdGVkX2N0cmwgPSBjdGw7CisJCQkJYW9hX3NuZF9jdGxfYWRkKGN0bCk7CisJCQl9CisJCX0KKwkJaWYgKGNjLT5jb25uZWN0ZWQgJiBDQ19MSU5FT1VUKSB7CisJCQlpZiAobGluZW91dCA9PSAxKQorCQkJCWxkZXYtPmdwaW8ubWV0aG9kcy0+c2V0X2xpbmVvdXQoY29kZWMtPmdwaW8sIDEpOworCQkJY3RsID0gc25kX2N0bF9uZXcxKCZsaW5lb3V0X2N0bCwgY29kZWMtPmdwaW8pOworCQkJaWYgKGNjLT5jb25uZWN0ZWQgJiBDQ19MSU5FT1VUX0xBQkVMTEVEX0hFQURQSE9ORSkKKwkJCQlzdHJsY3B5KGN0bC0+aWQubmFtZSwKKwkJCQkJIkhlYWRwaG9uZSBTd2l0Y2giLCBzaXplb2YoY3RsLT5pZC5uYW1lKSk7CisJCQlsZGV2LT5saW5lb3V0X2N0cmwgPSBjdGw7CisJCQlhb2Ffc25kX2N0bF9hZGQoY3RsKTsKKwkJCWxkZXYtPmhhdmVfbGluZW91dF9kZXRlY3QgPQorCQkJCSFsZGV2LT5ncGlvLm1ldGhvZHMKKwkJCQkJLT5zZXRfbm90aWZ5KCZsZGV2LT5ncGlvLAorCQkJCQkJICAgICBBT0FfTk9USUZZX0xJTkVfT1VULAorCQkJCQkJICAgICBsYXlvdXRfbm90aWZ5LAorCQkJCQkJICAgICAmbGRldi0+c2VsZnB0cl9saW5lb3V0KTsKKwkJCWlmIChsZGV2LT5oYXZlX2xpbmVvdXRfZGV0ZWN0KSB7CisJCQkJY3RsID0gc25kX2N0bF9uZXcxKCZsaW5lb3V0X2RldGVjdF9jaG9pY2UsCisJCQkJCQkgICBsZGV2KTsKKwkJCQlpZiAoY2MtPmNvbm5lY3RlZCAmIENDX0xJTkVPVVRfTEFCRUxMRURfSEVBRFBIT05FKQorCQkJCQlzdHJsY3B5KGN0bC0+aWQubmFtZSwKKwkJCQkJCSJIZWFkcGhvbmUgRGV0ZWN0IEF1dG9zd2l0Y2giLAorCQkJCQkJc2l6ZW9mKGN0bC0+aWQubmFtZSkpOworCQkJCWFvYV9zbmRfY3RsX2FkZChjdGwpOworCQkJCWN0bCA9IHNuZF9jdGxfbmV3MSgmbGluZW91dF9kZXRlY3RlZCwKKwkJCQkJCSAgIGxkZXYpOworCQkJCWlmIChjYy0+Y29ubmVjdGVkICYgQ0NfTElORU9VVF9MQUJFTExFRF9IRUFEUEhPTkUpCisJCQkJCXN0cmxjcHkoY3RsLT5pZC5uYW1lLAorCQkJCQkJIkhlYWRwaG9uZSBEZXRlY3RlZCIsCisJCQkJCQlzaXplb2YoY3RsLT5pZC5uYW1lKSk7CisJCQkJbGRldi0+bGluZW91dF9kZXRlY3RlZF9jdHJsID0gY3RsOworCQkJCWFvYV9zbmRfY3RsX2FkZChjdGwpOworCQkJfQorCQl9CisJCWNjKys7CisJfQorCS8qIG5vdyB1cGRhdGUgaW5pdGlhbCBzdGF0ZSAqLworCWlmIChsZGV2LT5oYXZlX2hlYWRwaG9uZV9kZXRlY3QpCisJCWxheW91dF9ub3RpZnkoJmxkZXYtPnNlbGZwdHJfaGVhZHBob25lKTsKKwlpZiAobGRldi0+aGF2ZV9saW5lb3V0X2RldGVjdCkKKwkJbGF5b3V0X25vdGlmeSgmbGRldi0+c2VsZnB0cl9saW5lb3V0KTsKK30KKworc3RhdGljIHN0cnVjdCBhb2FfZmFicmljIGxheW91dF9mYWJyaWMgPSB7CisJLm5hbWUgPSAiU291bmRCeUxheW91dCIsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLmZvdW5kX2NvZGVjID0gbGF5b3V0X2ZvdW5kX2NvZGVjLAorCS5yZW1vdmVfY29kZWMgPSBsYXlvdXRfcmVtb3ZlX2NvZGVjLAorCS5hdHRhY2hlZF9jb2RlYyA9IGxheW91dF9hdHRhY2hlZF9jb2RlYywKK307CisKK3N0YXRpYyBpbnQgYW9hX2ZhYnJpY19sYXlvdXRfcHJvYmUoc3RydWN0IHNvdW5kYnVzX2RldiAqc2RldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnNvdW5kID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQgKmxheW91dF9pZDsKKwlzdHJ1Y3QgbGF5b3V0ICpsYXlvdXQ7CisJc3RydWN0IGxheW91dF9kZXYgKmxkZXYgPSBOVUxMOworCWludCBlcnI7CisKKwkvKiBobSwgY3VycmVudGx5IHdlIGNhbiBvbmx5IGhhdmUgb25lIC4uLiAqLworCWlmIChsYXlvdXRfZGV2aWNlKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qIGJ5IGJyZWFraW5nIG91dCB3ZSBrZWVwIGEgcmVmZXJlbmNlICovCisJd2hpbGUgKChzb3VuZCA9IG9mX2dldF9uZXh0X2NoaWxkKHNkZXYtPm9mZGV2Lm5vZGUsIHNvdW5kKSkpIHsKKwkJaWYgKHNvdW5kLT50eXBlICYmIHN0cmNhc2VjbXAoc291bmQtPnR5cGUsICJzb3VuZGNoaXAiKSA9PSAwKQorCQkJYnJlYWs7CisJfQorCWlmICghc291bmQpIHJldHVybiAtRU5PREVWOworCisJbGF5b3V0X2lkID0gKHVuc2lnbmVkIGludCAqKSBnZXRfcHJvcGVydHkoc291bmQsICJsYXlvdXQtaWQiLCBOVUxMKTsKKwlpZiAoIWxheW91dF9pZCkKKwkJZ290byBvdXRub2RldjsKKwlwcmludGsoS0VSTl9JTkZPICJzbmQtYW9hLWZhYnJpYy1sYXlvdXQ6IGZvdW5kIGJ1cyB3aXRoIGxheW91dCAlZCAiLCAqbGF5b3V0X2lkKTsKKworCWxheW91dCA9IGZpbmRfbGF5b3V0X2J5X2lkKCpsYXlvdXRfaWQpOworCWlmICghbGF5b3V0KSB7CisJCXByaW50aygiKG5vIGlkZWEgaG93IHRvIGhhbmRsZSlcbiIpOworCQlnb3RvIG91dG5vZGV2OworCX0KKworCWxkZXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbGF5b3V0X2RldiksIEdGUF9LRVJORUwpOworCWlmICghbGRldikKKwkJZ290byBvdXRub2RldjsKKworCWxheW91dF9kZXZpY2UgPSBsZGV2OworCWxkZXYtPnNkZXYgPSBzZGV2OworCWxkZXYtPnNvdW5kID0gc291bmQ7CisJbGRldi0+bGF5b3V0ID0gbGF5b3V0OworCWxkZXYtPmdwaW8ubm9kZSA9IHNvdW5kLT5wYXJlbnQ7CisJc3dpdGNoIChsYXlvdXQtPmxheW91dF9pZCkgeworCWNhc2UgNDE6IC8qIHRoYXQgdW5rbm93biBtYWNoaW5lIG5vIG9uZSBzZWVtcyB0byBoYXZlICovCisJY2FzZSA1MTogLyogUG93ZXJCb29rNSw0ICovCisJY2FzZSA1ODogLyogTWFjIE1pbmkgKi8KKwkJbGRldi0+Z3Bpby5tZXRob2RzID0gZnRyX2dwaW9fbWV0aG9kczsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJbGRldi0+Z3Bpby5tZXRob2RzID0gcG1mX2dwaW9fbWV0aG9kczsKKwl9CisJbGRldi0+c2VsZnB0cl9oZWFkcGhvbmUucHRyID0gbGRldjsKKwlsZGV2LT5zZWxmcHRyX2xpbmVvdXQucHRyID0gbGRldjsKKwlzZGV2LT5vZmRldi5kZXYuZHJpdmVyX2RhdGEgPSBsZGV2OworCisJcHJpbnRrKCIodXNpbmcpXG4iKTsKKwlsaXN0X2FkZCgmbGRldi0+bGlzdCwgJmxheW91dHNfbGlzdCk7CisJbGF5b3V0c19saXN0X2l0ZW1zKys7CisKKwkvKiBhc3NpZ24gdGhlc2UgYmVmb3JlIHJlZ2lzdGVyaW5nIG91cnNlbHZlcywgc28KKwkgKiBjYWxsYmFja3MgdGhhdCBhcmUgZG9uZSBkdXJpbmcgcmVnaXN0cmF0aW9uCisJICogYWxyZWFkeSBoYXZlIHRoZSB2YWx1ZXMgKi8KKwlzZGV2LT5wY21pZCA9IGxkZXYtPmxheW91dC0+cGNtaWQ7CisJaWYgKGxkZXYtPmxheW91dC0+YnVzbmFtZSkgeworCQlzZGV2LT5wY21uYW1lID0gbGRldi0+bGF5b3V0LT5idXNuYW1lOworCX0gZWxzZSB7CisJCXNkZXYtPnBjbW5hbWUgPSAiTWFzdGVyIjsKKwl9CisKKwlsZGV2LT5ncGlvLm1ldGhvZHMtPmluaXQoJmxkZXYtPmdwaW8pOworCisJZXJyID0gYW9hX2ZhYnJpY19yZWdpc3RlcigmbGF5b3V0X2ZhYnJpYyk7CisJaWYgKGVyciAmJiBlcnIgIT0gLUVBTFJFQURZKSB7CisJCXByaW50ayhLRVJOX0lORk8gInNuZC1hb2EtZmFicmljLWxheW91dDogY2FuJ3QgdXNlLCIKKwkJCQkgIiBhbm90aGVyIGZhYnJpYyBpcyBhY3RpdmUhXG4iKTsKKwkJZ290byBvdXRsaXN0ZGVsOworCX0KKworCXVzZV9sYXlvdXQobGF5b3V0KTsKKwlsZGV2LT5zd2l0Y2hfb25faGVhZHBob25lID0gMTsKKwlsZGV2LT5zd2l0Y2hfb25fbGluZW91dCA9IDE7CisJcmV0dXJuIDA7Cisgb3V0bGlzdGRlbDoKKwkvKiB3ZSB3b24ndCBiZSB1c2luZyB0aGVzZSB0aGVuLi4uICovCisJbGRldi0+Z3Bpby5tZXRob2RzLT5leGl0KCZsZGV2LT5ncGlvKTsKKwkvKiByZXNldCBpZiB3ZSBkaWRuJ3QgdXNlIGl0ICovCisJc2Rldi0+cGNtbmFtZSA9IE5VTEw7CisJc2Rldi0+cGNtaWQgPSAtMTsKKwlsaXN0X2RlbCgmbGRldi0+bGlzdCk7CisJbGF5b3V0c19saXN0X2l0ZW1zLS07Cisgb3V0bm9kZXY6CisgCWlmIChzb3VuZCkgb2Zfbm9kZV9wdXQoc291bmQpOworIAlsYXlvdXRfZGV2aWNlID0gTlVMTDsKKyAJaWYgKGxkZXYpIGtmcmVlKGxkZXYpOworCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgaW50IGFvYV9mYWJyaWNfbGF5b3V0X3JlbW92ZShzdHJ1Y3Qgc291bmRidXNfZGV2ICpzZGV2KQoreworCXN0cnVjdCBsYXlvdXRfZGV2ICpsZGV2ID0gc2Rldi0+b2ZkZXYuZGV2LmRyaXZlcl9kYXRhOworCWludCBpOworCisJZm9yIChpPTA7IGk8TUFYX0NPREVDU19QRVJfQlVTOyBpKyspIHsKKwkJaWYgKGxkZXYtPmNvZGVjc1tpXSkgeworCQkJYW9hX2ZhYnJpY191bmxpbmtfY29kZWMobGRldi0+Y29kZWNzW2ldKTsKKwkJfQorCQlsZGV2LT5jb2RlY3NbaV0gPSBOVUxMOworCX0KKwlsaXN0X2RlbCgmbGRldi0+bGlzdCk7CisJbGF5b3V0c19saXN0X2l0ZW1zLS07CisJb2Zfbm9kZV9wdXQobGRldi0+c291bmQpOworCisJbGRldi0+Z3Bpby5tZXRob2RzLT5zZXRfbm90aWZ5KCZsZGV2LT5ncGlvLAorCQkJCSAgICAgICBBT0FfTk9USUZZX0hFQURQSE9ORSwKKwkJCQkgICAgICAgTlVMTCwKKwkJCQkgICAgICAgTlVMTCk7CisJbGRldi0+Z3Bpby5tZXRob2RzLT5zZXRfbm90aWZ5KCZsZGV2LT5ncGlvLAorCQkJCSAgICAgICBBT0FfTk9USUZZX0xJTkVfT1VULAorCQkJCSAgICAgICBOVUxMLAorCQkJCSAgICAgICBOVUxMKTsKKworCWxkZXYtPmdwaW8ubWV0aG9kcy0+ZXhpdCgmbGRldi0+Z3Bpbyk7CisJbGF5b3V0X2RldmljZSA9IE5VTEw7CisJa2ZyZWUobGRldik7CisJc2Rldi0+cGNtaWQgPSAtMTsKKwlzZGV2LT5wY21uYW1lID0gTlVMTDsKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBhb2FfZmFicmljX2xheW91dF9zdXNwZW5kKHN0cnVjdCBzb3VuZGJ1c19kZXYgKnNkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwlzdHJ1Y3QgbGF5b3V0X2RldiAqbGRldiA9IHNkZXYtPm9mZGV2LmRldi5kcml2ZXJfZGF0YTsKKworCXByaW50aygiYW9hX2ZhYnJpY19sYXlvdXRfc3VzcGVuZCgpXG4iKTsKKworCWlmIChsZGV2LT5ncGlvLm1ldGhvZHMgJiYgbGRldi0+Z3Bpby5tZXRob2RzLT5hbGxfYW1wc19vZmYpCisJCWxkZXYtPmdwaW8ubWV0aG9kcy0+YWxsX2FtcHNfb2ZmKCZsZGV2LT5ncGlvKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFvYV9mYWJyaWNfbGF5b3V0X3Jlc3VtZShzdHJ1Y3Qgc291bmRidXNfZGV2ICpzZGV2KQoreworCXN0cnVjdCBsYXlvdXRfZGV2ICpsZGV2ID0gc2Rldi0+b2ZkZXYuZGV2LmRyaXZlcl9kYXRhOworCisJcHJpbnRrKCJhb2FfZmFicmljX2xheW91dF9yZXN1bWUoKVxuIik7CisKKwlpZiAobGRldi0+Z3Bpby5tZXRob2RzICYmIGxkZXYtPmdwaW8ubWV0aG9kcy0+YWxsX2FtcHNfb2ZmKQorCQlsZGV2LT5ncGlvLm1ldGhvZHMtPmFsbF9hbXBzX3Jlc3RvcmUoJmxkZXYtPmdwaW8pOworCisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgYW9hX3NvdW5kYnVzX2RyaXZlciA9IHsKKwkubmFtZSA9ICJzbmRfYW9hX3NvdW5kYnVzX2RydiIsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLnByb2JlID0gYW9hX2ZhYnJpY19sYXlvdXRfcHJvYmUsCisJLnJlbW92ZSA9IGFvYV9mYWJyaWNfbGF5b3V0X3JlbW92ZSwKKyNpZmRlZiBDT05GSUdfUE0KKwkuc3VzcGVuZCA9IGFvYV9mYWJyaWNfbGF5b3V0X3N1c3BlbmQsCisJLnJlc3VtZSA9IGFvYV9mYWJyaWNfbGF5b3V0X3Jlc3VtZSwKKyNlbmRpZgorfTsKKworc3RhdGljIGludCBfX2luaXQgYW9hX2ZhYnJpY19sYXlvdXRfaW5pdCh2b2lkKQoreworCWludCBlcnI7CisKKwllcnIgPSBzb3VuZGJ1c19yZWdpc3Rlcl9kcml2ZXIoJmFvYV9zb3VuZGJ1c19kcml2ZXIpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhb2FfZmFicmljX2xheW91dF9leGl0KHZvaWQpCit7CisJc291bmRidXNfdW5yZWdpc3Rlcl9kcml2ZXIoJmFvYV9zb3VuZGJ1c19kcml2ZXIpOworCWFvYV9mYWJyaWNfdW5yZWdpc3RlcigmbGF5b3V0X2ZhYnJpYyk7Cit9CisKK21vZHVsZV9pbml0KGFvYV9mYWJyaWNfbGF5b3V0X2luaXQpOworbW9kdWxlX2V4aXQoYW9hX2ZhYnJpY19sYXlvdXRfZXhpdCk7CmRpZmYgLS1naXQgYS9zb3VuZC9hb2Evc291bmRidXMvS2NvbmZpZyBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MzJkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2Evc291bmRidXMvS2NvbmZpZwpAQCAtMCwwICsxLDE0IEBACitjb25maWcgU05EX0FPQV9TT1VOREJVUworCXRyaXN0YXRlICJBcHBsZSBTb3VuZGJ1cyBzdXBwb3J0IgorCWRlcGVuZHMgb24gU09VTkQgJiYgU05EX1BDTSAmJiBFWFBFUklNRU5UQUwKKwktLS1oZWxwLS0tCisJVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZ2VuZXJpYyBkcml2ZXIgZm9yIHRoZSBzb3VuZGJ1cworCXN1cHBvcnQgb24gQXBwbGUgbWFjaGluZXMuCisJCisJSXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBzb3VuZCBidXMgaW1wbGVtZW50YXRpb25zLgorCitjb25maWcgU05EX0FPQV9TT1VOREJVU19JMlMKKwl0cmlzdGF0ZSAiSTJTIGJ1cyBzdXBwb3J0IgorCWRlcGVuZHMgb24gU05EX0FPQV9TT1VOREJVUyAmJiBQQ0kKKwktLS1oZWxwLS0tCisJVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBBcHBsZSBJMlMgYnVzc2VzLgpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL01ha2VmaWxlIGIvc291bmQvYW9hL3NvdW5kYnVzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNjFmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2Evc291bmRidXMvTWFrZWZpbGUKQEAgLTAsMCArMSwzIEBACitvYmotJChDT05GSUdfU05EX0FPQV9TT1VOREJVUykgKz0gc25kLWFvYS1zb3VuZGJ1cy5vCitzbmQtYW9hLXNvdW5kYnVzLW9ianMgOj0gY29yZS5vIHN5c2ZzLm8KK29iai0kKENPTkZJR19TTkRfQU9BX1NPVU5EQlVTX0kyUykgKz0gaTJzYnVzLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL2NvcmUuYyBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlODRhNwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9jb3JlLmMKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBzb3VuZGJ1cworICoKKyAqIENvcHlyaWdodCAyMDA2IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CisgKgorICogR1BMIHYyLCBjYW4gYmUgZm91bmQgaW4gQ09QWUlORy4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSAic291bmRidXMuaCIKKworTU9EVUxFX0FVVEhPUigiSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiQXBwbGUgU291bmRidXMiKTsKKworc3RydWN0IHNvdW5kYnVzX2RldiAqc291bmRidXNfZGV2X2dldChzdHJ1Y3Qgc291bmRidXNfZGV2ICpkZXYpCit7CisJc3RydWN0IGRldmljZSAqdG1wOworCisJaWYgKCFkZXYpCisJCXJldHVybiBOVUxMOworCXRtcCA9IGdldF9kZXZpY2UoJmRldi0+b2ZkZXYuZGV2KTsKKwlpZiAodG1wKQorCQlyZXR1cm4gdG9fc291bmRidXNfZGV2aWNlKHRtcCk7CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNvdW5kYnVzX2Rldl9nZXQpOworCit2b2lkIHNvdW5kYnVzX2Rldl9wdXQoc3RydWN0IHNvdW5kYnVzX2RldiAqZGV2KQoreworCWlmIChkZXYpCisJCXB1dF9kZXZpY2UoJmRldi0+b2ZkZXYuZGV2KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNvdW5kYnVzX2Rldl9wdXQpOworCitzdGF0aWMgaW50IHNvdW5kYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgZXJyb3IgPSAtRU5PREVWOworCXN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgKmRydjsKKwlzdHJ1Y3Qgc291bmRidXNfZGV2ICpzb3VuZGJ1c19kZXY7CisKKwlkcnYgPSB0b19zb3VuZGJ1c19kcml2ZXIoZGV2LT5kcml2ZXIpOworCXNvdW5kYnVzX2RldiA9IHRvX3NvdW5kYnVzX2RldmljZShkZXYpOworCisJaWYgKCFkcnYtPnByb2JlKQorCQlyZXR1cm4gZXJyb3I7CisKKwlzb3VuZGJ1c19kZXZfZ2V0KHNvdW5kYnVzX2Rldik7CisKKwllcnJvciA9IGRydi0+cHJvYmUoc291bmRidXNfZGV2KTsKKwlpZiAoZXJyb3IpCisJCXNvdW5kYnVzX2Rldl9wdXQoc291bmRidXNfZGV2KTsKKworCXJldHVybiBlcnJvcjsKK30KKworCitzdGF0aWMgaW50IHNvdW5kYnVzX3VldmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKiplbnZwLCBpbnQgbnVtX2VudnAsCisJCQkgICBjaGFyICpidWZmZXIsIGludCBidWZmZXJfc2l6ZSkKK3sKKwlzdHJ1Y3Qgc291bmRidXNfZGV2ICogc291bmRidXNfZGV2OworCXN0cnVjdCBvZl9kZXZpY2UgKiBvZjsKKwljaGFyICpzY3JhdGNoLCAqY29tcGF0LCAqY29tcGF0MjsKKwlpbnQgaSA9IDA7CisJaW50IGxlbmd0aCwgY3BsZW4sIGNwbGVuMiwgc2VlbiA9IDA7CisKKwlpZiAoIWRldikKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlzb3VuZGJ1c19kZXYgPSB0b19zb3VuZGJ1c19kZXZpY2UoZGV2KTsKKwlpZiAoIXNvdW5kYnVzX2RldikKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlvZiA9ICZzb3VuZGJ1c19kZXYtPm9mZGV2OworCisJLyogc3R1ZmYgd2Ugd2FudCB0byBwYXNzIHRvIC9zYmluL2hvdHBsdWcgKi8KKwllbnZwW2krK10gPSBzY3JhdGNoID0gYnVmZmVyOworCWxlbmd0aCA9IHNjbnByaW50ZiAoc2NyYXRjaCwgYnVmZmVyX3NpemUsICJPRl9OQU1FPSVzIiwgb2YtPm5vZGUtPm5hbWUpOworCSsrbGVuZ3RoOworCWJ1ZmZlcl9zaXplIC09IGxlbmd0aDsKKwlpZiAoKGJ1ZmZlcl9zaXplIDw9IDApIHx8IChpID49IG51bV9lbnZwKSkKKwkJcmV0dXJuIC1FTk9NRU07CisJc2NyYXRjaCArPSBsZW5ndGg7CisKKwllbnZwW2krK10gPSBzY3JhdGNoOworCWxlbmd0aCA9IHNjbnByaW50ZiAoc2NyYXRjaCwgYnVmZmVyX3NpemUsICJPRl9UWVBFPSVzIiwgb2YtPm5vZGUtPnR5cGUpOworCSsrbGVuZ3RoOworCWJ1ZmZlcl9zaXplIC09IGxlbmd0aDsKKwlpZiAoKGJ1ZmZlcl9zaXplIDw9IDApIHx8IChpID49IG51bV9lbnZwKSkKKwkJcmV0dXJuIC1FTk9NRU07CisJc2NyYXRjaCArPSBsZW5ndGg7CisKKwkvKiBTaW5jZSB0aGUgY29tcGF0aWJsZSBmaWVsZCBjYW4gY29udGFpbiBwcmV0dHkgbXVjaCBhbnl0aGluZworCSAqIGl0J3Mgbm90IHJlYWxseSBsZWdhbCB0byBzcGxpdCBpdCBvdXQgd2l0aCBjb21tYXMuIFdlIHNwbGl0IGl0CisJICogdXAgdXNpbmcgYSBudW1iZXIgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQuICovCisKKwljb21wYXQgPSAoY2hhciAqKSBnZXRfcHJvcGVydHkob2YtPm5vZGUsICJjb21wYXRpYmxlIiwgJmNwbGVuKTsKKwljb21wYXQyID0gY29tcGF0OworCWNwbGVuMj0gY3BsZW47CisJd2hpbGUgKGNvbXBhdCAmJiBjcGxlbiA+IDApIHsKKwkJZW52cFtpKytdID0gc2NyYXRjaDsKKwkJbGVuZ3RoID0gc2NucHJpbnRmIChzY3JhdGNoLCBidWZmZXJfc2l6ZSwKKwkJCQkgICAgICJPRl9DT01QQVRJQkxFXyVkPSVzIiwgc2VlbiwgY29tcGF0KTsKKwkJKytsZW5ndGg7CisJCWJ1ZmZlcl9zaXplIC09IGxlbmd0aDsKKwkJaWYgKChidWZmZXJfc2l6ZSA8PSAwKSB8fCAoaSA+PSBudW1fZW52cCkpCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJc2NyYXRjaCArPSBsZW5ndGg7CisJCWxlbmd0aCA9IHN0cmxlbiAoY29tcGF0KSArIDE7CisJCWNvbXBhdCArPSBsZW5ndGg7CisJCWNwbGVuIC09IGxlbmd0aDsKKwkJc2VlbisrOworCX0KKworCWVudnBbaSsrXSA9IHNjcmF0Y2g7CisJbGVuZ3RoID0gc2NucHJpbnRmIChzY3JhdGNoLCBidWZmZXJfc2l6ZSwgIk9GX0NPTVBBVElCTEVfTj0lZCIsIHNlZW4pOworCSsrbGVuZ3RoOworCWJ1ZmZlcl9zaXplIC09IGxlbmd0aDsKKwlpZiAoKGJ1ZmZlcl9zaXplIDw9IDApIHx8IChpID49IG51bV9lbnZwKSkKKwkJcmV0dXJuIC1FTk9NRU07CisJc2NyYXRjaCArPSBsZW5ndGg7CisKKwllbnZwW2krK10gPSBzY3JhdGNoOworCWxlbmd0aCA9IHNjbnByaW50ZiAoc2NyYXRjaCwgYnVmZmVyX3NpemUsICJNT0RBTElBUz0lcyIsCisJCQlzb3VuZGJ1c19kZXYtPm1vZGFsaWFzKTsKKworCWJ1ZmZlcl9zaXplIC09IGxlbmd0aDsKKwlpZiAoKGJ1ZmZlcl9zaXplIDw9IDApIHx8IChpID49IG51bV9lbnZwKSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwllbnZwW2ldID0gTlVMTDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNvdW5kYnVzX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBzb3VuZGJ1c19kZXYgKiBzb3VuZGJ1c19kZXYgPSB0b19zb3VuZGJ1c19kZXZpY2UoZGV2KTsKKwlzdHJ1Y3Qgc291bmRidXNfZHJpdmVyICogZHJ2ID0gdG9fc291bmRidXNfZHJpdmVyKGRldi0+ZHJpdmVyKTsKKworCWlmIChkZXYtPmRyaXZlciAmJiBkcnYtPnJlbW92ZSkKKwkJZHJ2LT5yZW1vdmUoc291bmRidXNfZGV2KTsKKwlzb3VuZGJ1c19kZXZfcHV0KHNvdW5kYnVzX2Rldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc291bmRidXNfZGV2aWNlX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgc291bmRidXNfZGV2ICogc291bmRidXNfZGV2ID0gdG9fc291bmRidXNfZGV2aWNlKGRldik7CisJc3RydWN0IHNvdW5kYnVzX2RyaXZlciAqIGRydiA9IHRvX3NvdW5kYnVzX2RyaXZlcihkZXYtPmRyaXZlcik7CisKKwlpZiAoZGV2LT5kcml2ZXIgJiYgZHJ2LT5zaHV0ZG93bikKKwkJZHJ2LT5zaHV0ZG93bihzb3VuZGJ1c19kZXYpOworfQorCisjaWZkZWYgQ09ORklHX1BNCisKK3N0YXRpYyBpbnQgc291bmRidXNfZGV2aWNlX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJc3RydWN0IHNvdW5kYnVzX2RldiAqIHNvdW5kYnVzX2RldiA9IHRvX3NvdW5kYnVzX2RldmljZShkZXYpOworCXN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgKiBkcnYgPSB0b19zb3VuZGJ1c19kcml2ZXIoZGV2LT5kcml2ZXIpOworCisJaWYgKGRldi0+ZHJpdmVyICYmIGRydi0+c3VzcGVuZCkKKwkJcmV0dXJuIGRydi0+c3VzcGVuZChzb3VuZGJ1c19kZXYsIHN0YXRlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzb3VuZGJ1c19kZXZpY2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKiBkZXYpCit7CisJc3RydWN0IHNvdW5kYnVzX2RldiAqIHNvdW5kYnVzX2RldiA9IHRvX3NvdW5kYnVzX2RldmljZShkZXYpOworCXN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgKiBkcnYgPSB0b19zb3VuZGJ1c19kcml2ZXIoZGV2LT5kcml2ZXIpOworCisJaWYgKGRldi0+ZHJpdmVyICYmIGRydi0+cmVzdW1lKQorCQlyZXR1cm4gZHJ2LT5yZXN1bWUoc291bmRidXNfZGV2KTsKKwlyZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIENPTkZJR19QTSAqLworCitleHRlcm4gc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgc291bmRidXNfZGV2X2F0dHJzW107CisKK3N0YXRpYyBzdHJ1Y3QgYnVzX3R5cGUgc291bmRidXNfYnVzX3R5cGUgPSB7CisJLm5hbWUJCT0gImFvYS1zb3VuZGJ1cyIsCisJLnByb2JlCQk9IHNvdW5kYnVzX3Byb2JlLAorCS51ZXZlbnQJCT0gc291bmRidXNfdWV2ZW50LAorCS5yZW1vdmUJCT0gc291bmRidXNfZGV2aWNlX3JlbW92ZSwKKwkuc2h1dGRvd24JPSBzb3VuZGJ1c19kZXZpY2Vfc2h1dGRvd24sCisjaWZkZWYgQ09ORklHX1BNCisJLnN1c3BlbmQJPSBzb3VuZGJ1c19kZXZpY2Vfc3VzcGVuZCwKKwkucmVzdW1lCQk9IHNvdW5kYnVzX2RldmljZV9yZXN1bWUsCisjZW5kaWYKKwkuZGV2X2F0dHJzCT0gc291bmRidXNfZGV2X2F0dHJzLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc291bmRidXNfaW5pdCh2b2lkKQoreworCXJldHVybiBidXNfcmVnaXN0ZXIoJnNvdW5kYnVzX2J1c190eXBlKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHNvdW5kYnVzX2V4aXQodm9pZCkKK3sKKwlidXNfdW5yZWdpc3Rlcigmc291bmRidXNfYnVzX3R5cGUpOworfQorCitpbnQgc291bmRidXNfYWRkX29uZShzdHJ1Y3Qgc291bmRidXNfZGV2ICpkZXYpCit7CisJc3RhdGljIGludCBkZXZjb3VudDsKKworCS8qIHNhbml0eSBjaGVja3MgKi8KKwlpZiAoIWRldi0+YXR0YWNoX2NvZGVjIHx8CisJICAgICFkZXYtPm9mZGV2Lm5vZGUgfHwKKwkgICAgZGV2LT5wY21uYW1lIHx8CisJICAgIGRldi0+cGNtaWQgIT0gLTEpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzb3VuZGJ1czogYWRkaW5nIGRldmljZSBmYWlsZWQgc2FuaXR5IGNoZWNrIVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXNucHJpbnRmKGRldi0+b2ZkZXYuZGV2LmJ1c19pZCwgQlVTX0lEX1NJWkUsICJzb3VuZGJ1czoleCIsICsrZGV2Y291bnQpOworCWRldi0+b2ZkZXYuZGV2LmJ1cyA9ICZzb3VuZGJ1c19idXNfdHlwZTsKKwlyZXR1cm4gb2ZfZGV2aWNlX3JlZ2lzdGVyKCZkZXYtPm9mZGV2KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNvdW5kYnVzX2FkZF9vbmUpOworCit2b2lkIHNvdW5kYnVzX3JlbW92ZV9vbmUoc3RydWN0IHNvdW5kYnVzX2RldiAqZGV2KQoreworCW9mX2RldmljZV91bnJlZ2lzdGVyKCZkZXYtPm9mZGV2KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHNvdW5kYnVzX3JlbW92ZV9vbmUpOworCitpbnQgc291bmRidXNfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgKmRydikKK3sKKwkvKiBpbml0aWFsaXplIGNvbW1vbiBkcml2ZXIgZmllbGRzICovCisJZHJ2LT5kcml2ZXIubmFtZSA9IGRydi0+bmFtZTsKKwlkcnYtPmRyaXZlci5idXMgPSAmc291bmRidXNfYnVzX3R5cGU7CisKKwkvKiByZWdpc3RlciB3aXRoIGNvcmUgKi8KKwlyZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKCZkcnYtPmRyaXZlcik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChzb3VuZGJ1c19yZWdpc3Rlcl9kcml2ZXIpOworCit2b2lkIHNvdW5kYnVzX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBzb3VuZGJ1c19kcml2ZXIgKmRydikKK3sKKwlkcml2ZXJfdW5yZWdpc3RlcigmZHJ2LT5kcml2ZXIpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoc291bmRidXNfdW5yZWdpc3Rlcl9kcml2ZXIpOworCittb2R1bGVfaW5pdChzb3VuZGJ1c19pbml0KTsKK21vZHVsZV9leGl0KHNvdW5kYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9NYWtlZmlsZSBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9pMnNidXMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU3YTVjZgotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9pMnNidXMvTWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACitvYmotJChDT05GSUdfU05EX0FPQV9TT1VOREJVU19JMlMpICs9IHNuZC1hb2EtaTJzYnVzLm8KK3NuZC1hb2EtaTJzYnVzLW9ianMgOj0gaTJzYnVzLWNvcmUubyBpMnNidXMtcGNtLm8gaTJzYnVzLWNvbnRyb2wubwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtY29udHJvbC5jIGIvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtY29udHJvbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MDQwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1jb250cm9sLmMKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBpMnNidXMgZHJpdmVyIC0tIGJ1cyBjb250cm9sIHJvdXRpbmVzCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisKKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGFzbS9wcm9tLmg+CisjaW5jbHVkZSA8YXNtL21hY2lvLmg+CisjaW5jbHVkZSA8YXNtL3BtYWNfZmVhdHVyZS5oPgorI2luY2x1ZGUgPGFzbS9wbWFjX3BmdW5jLmg+CisjaW5jbHVkZSAiaTJzYnVzLmgiCisKK2ludCBpMnNidXNfY29udHJvbF9pbml0KHN0cnVjdCBtYWNpb19kZXYqIGRldiwgc3RydWN0IGkyc2J1c19jb250cm9sICoqYykKK3sKKwkqYyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMnNidXNfY29udHJvbCksIEdGUF9LRVJORUwpOworCWlmICghKmMpCisJCXJldHVybiAtRU5PTUVNOworCisJSU5JVF9MSVNUX0hFQUQoJigqYyktPmxpc3QpOworCisJaWYgKG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UoZGV2LT5vZmRldi5ub2RlLCAwLCAmKCpjKS0+cnNyYykpCisJCWdvdG8gZXJyOworCS8qIHdlIHJlYWxseSBzaG91bGQgYmUgdXNpbmcgZmVhdHVyZSBjYWxscyBpbnN0ZWFkIG9mIG1hcHBpbmcKKwkgKiB0aGVzZSByZWdpc3RlcnMuIEl0J3Mgc2FmZSBmb3Igbm93IHNpbmNlIG5vIG9uZSBlbHNlIGlzCisJICogdG91Y2hpbmcgdGhlbS4uLiAqLworCSgqYyktPmNvbnRyb2xyZWdzID0gaW9yZW1hcCgoKmMpLT5yc3JjLnN0YXJ0LAorCQkJCSAgICBzaXplb2Yoc3RydWN0IGkyc19jb250cm9sX3JlZ3MpKTsKKwlpZiAoISgqYyktPmNvbnRyb2xyZWdzKQorCQlnb3RvIGVycjsKKworCXJldHVybiAwOworIGVycjoKKwlrZnJlZSgqYyk7CisJKmMgPSBOVUxMOworCXJldHVybiAtRU5PREVWOworfQorCit2b2lkIGkyc2J1c19jb250cm9sX2Rlc3Ryb3koc3RydWN0IGkyc2J1c19jb250cm9sICpjKQoreworCWlvdW5tYXAoYy0+Y29udHJvbHJlZ3MpOworCWtmcmVlKGMpOworfQorCisvKiB0aGlzIGlzIHNlcmlhbGlzZWQgZXh0ZXJuYWxseSAqLworaW50IGkyc2J1c19jb250cm9sX2FkZF9kZXYoc3RydWN0IGkyc2J1c19jb250cm9sICpjLAorCQkJICAgc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOworCisJbnAgPSBpMnNkZXYtPnNvdW5kLm9mZGV2Lm5vZGU7CisJaTJzZGV2LT5lbmFibGUgPSBwbWZfZmluZF9mdW5jdGlvbihucCwgImVuYWJsZSIpOworCWkyc2Rldi0+Y2VsbF9lbmFibGUgPSBwbWZfZmluZF9mdW5jdGlvbihucCwgImNlbGwtZW5hYmxlIik7CisJaTJzZGV2LT5jbG9ja19lbmFibGUgPSBwbWZfZmluZF9mdW5jdGlvbihucCwgImNsb2NrLWVuYWJsZSIpOworCWkyc2Rldi0+Y2VsbF9kaXNhYmxlID0gcG1mX2ZpbmRfZnVuY3Rpb24obnAsICJjZWxsLWRpc2FibGUiKTsKKwlpMnNkZXYtPmNsb2NrX2Rpc2FibGUgPSBwbWZfZmluZF9mdW5jdGlvbihucCwgImNsb2NrLWRpc2FibGUiKTsKKworCS8qIGlmIHRoZSBidXMgbnVtYmVyIGlzIG5vdCAwIG9yIDEgd2UgYWJzb2x1dGVseSBuZWVkIHRvIHVzZQorCSAqIHRoZSBwbGF0Zm9ybSBmdW5jdGlvbnMgLS0gdGhlcmUncyBub3RoaW5nIGluIERhcndpbiB0aGF0CisJICogd291bGQgYWxsb3cgc2VlaW5nIGEgc3lzdGVtIGJlaGluZCB3aGF0IHRoZSBGQ1JzIGFyZSB0aGVuLAorCSAqIGFuZCBJIGRvbid0IHdhbnQgdG8gZ28gcGFyc2luZyBhIGJ1bmNoIG9mIHBsYXRmb3JtIGZ1bmN0aW9ucworCSAqIGJ5IGhhbmQgdG8gdHJ5IGZpbmRpbmcgYSBzeXN0ZW0uLi4gKi8KKwlpZiAoaTJzZGV2LT5idXNfbnVtYmVyICE9IDAgJiYgaTJzZGV2LT5idXNfbnVtYmVyICE9IDEgJiYKKwkgICAgKCFpMnNkZXYtPmVuYWJsZSB8fAorCSAgICAgIWkyc2Rldi0+Y2VsbF9lbmFibGUgfHwgIWkyc2Rldi0+Y2xvY2tfZW5hYmxlIHx8CisJICAgICAhaTJzZGV2LT5jZWxsX2Rpc2FibGUgfHwgIWkyc2Rldi0+Y2xvY2tfZGlzYWJsZSkpIHsKKwkJcG1mX3B1dF9mdW5jdGlvbihpMnNkZXYtPmVuYWJsZSk7CisJCXBtZl9wdXRfZnVuY3Rpb24oaTJzZGV2LT5jZWxsX2VuYWJsZSk7CisJCXBtZl9wdXRfZnVuY3Rpb24oaTJzZGV2LT5jbG9ja19lbmFibGUpOworCQlwbWZfcHV0X2Z1bmN0aW9uKGkyc2Rldi0+Y2VsbF9kaXNhYmxlKTsKKwkJcG1mX3B1dF9mdW5jdGlvbihpMnNkZXYtPmNsb2NrX2Rpc2FibGUpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlsaXN0X2FkZCgmaTJzZGV2LT5pdGVtLCAmYy0+bGlzdCk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpMnNidXNfY29udHJvbF9yZW1vdmVfZGV2KHN0cnVjdCBpMnNidXNfY29udHJvbCAqYywKKwkJCSAgICAgICBzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2KQoreworCS8qIHRoaXMgaXMgc2VyaWFsaXNlZCBleHRlcm5hbGx5ICovCisJbGlzdF9kZWwoJmkyc2Rldi0+aXRlbSk7CisJaWYgKGxpc3RfZW1wdHkoJmMtPmxpc3QpKQorCQlpMnNidXNfY29udHJvbF9kZXN0cm95KGMpOworfQorCitpbnQgaTJzYnVzX2NvbnRyb2xfZW5hYmxlKHN0cnVjdCBpMnNidXNfY29udHJvbCAqYywKKwkJCSAgc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldikKK3sKKwlzdHJ1Y3QgcG1mX2FyZ3MgYXJncyA9IHsgLmNvdW50ID0gMCB9OworCWludCBjYzsKKworCWlmIChpMnNkZXYtPmVuYWJsZSkKKwkJcmV0dXJuIHBtZl9jYWxsX29uZShpMnNkZXYtPmVuYWJsZSwgJmFyZ3MpOworCisJc3dpdGNoIChpMnNkZXYtPmJ1c19udW1iZXIpIHsKKwljYXNlIDA6CisJCWNjID0gaW5fbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCk7CisJCW91dF9sZTMyKCZjLT5jb250cm9scmVncy0+Y2VsbF9jb250cm9sLCBjYyB8IENUUkxfQ0xPQ0tfSU5URl8wX0VOQUJMRSk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJY2MgPSBpbl9sZTMyKCZjLT5jb250cm9scmVncy0+Y2VsbF9jb250cm9sKTsKKwkJb3V0X2xlMzIoJmMtPmNvbnRyb2xyZWdzLT5jZWxsX2NvbnRyb2wsIGNjIHwgQ1RSTF9DTE9DS19JTlRGXzFfRU5BQkxFKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCXJldHVybiAwOworfQorCitpbnQgaTJzYnVzX2NvbnRyb2xfY2VsbChzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmMsCisJCQlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LAorCQkJaW50IGVuYWJsZSkKK3sKKwlzdHJ1Y3QgcG1mX2FyZ3MgYXJncyA9IHsgLmNvdW50ID0gMCB9OworCWludCBjYzsKKworCXN3aXRjaCAoZW5hYmxlKSB7CisJY2FzZSAwOgorCQlpZiAoaTJzZGV2LT5jZWxsX2Rpc2FibGUpCisJCQlyZXR1cm4gcG1mX2NhbGxfb25lKGkyc2Rldi0+Y2VsbF9kaXNhYmxlLCAmYXJncyk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJaWYgKGkyc2Rldi0+Y2VsbF9lbmFibGUpCisJCQlyZXR1cm4gcG1mX2NhbGxfb25lKGkyc2Rldi0+Y2VsbF9lbmFibGUsICZhcmdzKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRrKEtFUk5fRVJSICJpMnNidXM6IElOVkFMSUQgQ0VMTCBFTkFCTEUgVkFMVUVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJc3dpdGNoIChpMnNkZXYtPmJ1c19udW1iZXIpIHsKKwljYXNlIDA6CisJCWNjID0gaW5fbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCk7CisJCWNjICY9IH5DVFJMX0NMT0NLX0NFTExfMF9FTkFCTEU7CisJCWNjIHw9IGVuYWJsZSAqIENUUkxfQ0xPQ0tfQ0VMTF8wX0VOQUJMRTsKKwkJb3V0X2xlMzIoJmMtPmNvbnRyb2xyZWdzLT5jZWxsX2NvbnRyb2wsIGNjKTsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQljYyA9IGluX2xlMzIoJmMtPmNvbnRyb2xyZWdzLT5jZWxsX2NvbnRyb2wpOworCQljYyAmPSB+Q1RSTF9DTE9DS19DRUxMXzFfRU5BQkxFOworCQljYyB8PSBlbmFibGUgKiBDVFJMX0NMT0NLX0NFTExfMV9FTkFCTEU7CisJCW91dF9sZTMyKCZjLT5jb250cm9scmVncy0+Y2VsbF9jb250cm9sLCBjYyk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU5PREVWOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IGkyc2J1c19jb250cm9sX2Nsb2NrKHN0cnVjdCBpMnNidXNfY29udHJvbCAqYywKKwkJCSBzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LAorCQkJIGludCBlbmFibGUpCit7CisJc3RydWN0IHBtZl9hcmdzIGFyZ3MgPSB7IC5jb3VudCA9IDAgfTsKKwlpbnQgY2M7CisKKwlzd2l0Y2ggKGVuYWJsZSkgeworCWNhc2UgMDoKKwkJaWYgKGkyc2Rldi0+Y2xvY2tfZGlzYWJsZSkKKwkJCXJldHVybiBwbWZfY2FsbF9vbmUoaTJzZGV2LT5jbG9ja19kaXNhYmxlLCAmYXJncyk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJaWYgKGkyc2Rldi0+Y2xvY2tfZW5hYmxlKQorCQkJcmV0dXJuIHBtZl9jYWxsX29uZShpMnNkZXYtPmNsb2NrX2VuYWJsZSwgJmFyZ3MpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIgImkyc2J1czogSU5WQUxJRCBDTE9DSyBFTkFCTEUgVkFMVUVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJc3dpdGNoIChpMnNkZXYtPmJ1c19udW1iZXIpIHsKKwljYXNlIDA6CisJCWNjID0gaW5fbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCk7CisJCWNjICY9IH5DVFJMX0NMT0NLX0NMT0NLXzBfRU5BQkxFOworCQljYyB8PSBlbmFibGUgKiBDVFJMX0NMT0NLX0NMT0NLXzBfRU5BQkxFOworCQlvdXRfbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCwgY2MpOworCQlicmVhazsKKwljYXNlIDE6CisJCWNjID0gaW5fbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCk7CisJCWNjICY9IH5DVFJMX0NMT0NLX0NMT0NLXzFfRU5BQkxFOworCQljYyB8PSBlbmFibGUgKiBDVFJMX0NMT0NLX0NMT0NLXzFfRU5BQkxFOworCQlvdXRfbGUzMigmYy0+Y29udHJvbHJlZ3MtPmNlbGxfY29udHJvbCwgY2MpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1jb250cm9sLmggYi9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1jb250cm9sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwNTU1MAotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9pMnNidXMvaTJzYnVzLWNvbnRyb2wuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogaTJzYnVzIGRyaXZlciAtLSBidXMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorICoKKyAqIEdQTCB2MiwgY2FuIGJlIGZvdW5kIGluIENPUFlJTkcuCisgKi8KKyNpZm5kZWYgX19JMlNCVVNfQ09OVFJPTFJFR1NfSAorI2RlZmluZSBfX0kyU0JVU19DT05UUk9MUkVHU19ICisKKy8qIGkycyBjb250cm9sIHJlZ2lzdGVycywgYXQgbGVhc3Qgd2hhdCB3ZSBrbm93IGFib3V0IHRoZW0gKi8KKworI2RlZmluZSBfX1BBRChtLG4pIHU4IF9fcGFkIyNtW25dCisjZGVmaW5lIF9QQUQobGluZSwgbikgX19QQUQobGluZSwgbikKKyNkZWZpbmUgUEFEKG4pIF9QQUQoX19MSU5FX18sIChuKSkKK3N0cnVjdCBpMnNfY29udHJvbF9yZWdzIHsKKwlQQUQoMHgzOCk7CisJX19sZTMyIGZjcjA7CQkvKiAweDM4ICh1bmtub3duKSAqLworCV9fbGUzMiBjZWxsX2NvbnRyb2w7CS8qIDB4M2MgKGZjcjEpICovCisJX19sZTMyIGZjcjI7CQkvKiAweDQwICh1bmtub3duKSAqLworCV9fbGUzMiBmY3IzOwkJLyogMHg0NCAoZmNyMykgKi8KKwlfX2xlMzIgY2xvY2tfY29udHJvbDsJLyogMHg0OCAodW5rbm93bikgKi8KKwlQQUQoNCk7CisJLyogdG90YWwgc2l6ZTogMHg1MCBieXRlcyAqLworfSAgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOworCisjZGVmaW5lIENUUkxfQ0xPQ0tfQ0VMTF8wX0VOQUJMRQkoMTw8MTApCisjZGVmaW5lIENUUkxfQ0xPQ0tfQ0xPQ0tfMF9FTkFCTEUJKDE8PDEyKQorI2RlZmluZSBDVFJMX0NMT0NLX1NXUkVTRVRfMAkJKDE8PDExKQorI2RlZmluZSBDVFJMX0NMT0NLX0lOVEZfMF9FTkFCTEUJKDE8PDEzKQorCisjZGVmaW5lIENUUkxfQ0xPQ0tfQ0VMTF8xX0VOQUJMRQkoMTw8MTcpCisjZGVmaW5lIENUUkxfQ0xPQ0tfQ0xPQ0tfMV9FTkFCTEUJKDE8PDE4KQorI2RlZmluZSBDVFJMX0NMT0NLX1NXUkVTRVRfMQkJKDE8PDE5KQorI2RlZmluZSBDVFJMX0NMT0NLX0lOVEZfMV9FTkFCTEUJKDE8PDIwKQorCisjZW5kaWYgLyogX19JMlNCVVNfQ09OVFJPTFJFR1NfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtY29yZS5jIGIvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtY29yZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjhkYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1jb3JlLmMKQEAgLTAsMCArMSwzODcgQEAKKy8qCisgKiBpMnNidXMgZHJpdmVyCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxhc20vbWFjaW8uaD4KKyNpbmNsdWRlIDxhc20vZGJkbWEuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxzb3VuZC9kcml2ZXIuaD4KKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRlICIuLi9zb3VuZGJ1cy5oIgorI2luY2x1ZGUgImkyc2J1cy5oIgorCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQVVUSE9SKCJKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJBcHBsZSBTb3VuZGJ1czogSTJTIHN1cHBvcnQiKTsKKy8qIGZvciBhdXRvLWxvYWRpbmcsIGRlY2xhcmUgdGhhdCB3ZSBoYW5kbGUgdGhpcyB3ZWlyZAorICogc3RyaW5nIHRoYXQgbWFjaW8gcHV0cyBpbnRvIHRoZSByZWxldmFudCBkZXZpY2UgKi8KK01PRFVMRV9BTElBUygib2Y6Tmkyc1RpMnNDIik7CisKK3N0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGkyc2J1c19tYXRjaFtdID0geworCXsgLm5hbWUgPSAiaTJzIiB9LAorCXsgfQorfTsKKworc3RhdGljIGludCBhbGxvY19kYmRtYV9kZXNjcmlwdG9yX3Jpbmcoc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiwKKwkJCQkgICAgICAgc3RydWN0IGRiZG1hX2NvbW1hbmRfbWVtICpyLAorCQkJCSAgICAgICBpbnQgbnVtY21kcykKK3sKKwkvKiBvbmUgbW9yZSBmb3Igcm91bmRpbmcgKi8KKwlyLT5zaXplID0gKG51bWNtZHMrMSkgKiBzaXplb2Yoc3RydWN0IGRiZG1hX2NtZCk7CisJLyogV2UgdXNlIHRoZSBQQ0kgQVBJcyBmb3Igbm93IHVudGlsIHRoZSBnZW5lcmljIG9uZSBnZXRzIGZpeGVkCisJICogZW5vdWdoIG9yIHVudGlsIHdlIGdldCBzb21lIG1hY2lvLXNwZWNpZmljIHZlcnNpb25zCisJICovCisJci0+c3BhY2UgPSBkbWFfYWxsb2NfY29oZXJlbnQoCisJCQkmbWFjaW9fZ2V0X3BjaV9kZXYoaTJzZGV2LT5tYWNpbyktPmRldiwKKwkJCXItPnNpemUsCisJCQkmci0+YnVzX2FkZHIsCisJCQlHRlBfS0VSTkVMKTsKKworCWlmICghci0+c3BhY2UpIHJldHVybiAtRU5PTUVNOworCisJbWVtc2V0KHItPnNwYWNlLCAwLCByLT5zaXplKTsKKwlyLT5jbWRzID0gKHZvaWQqKURCRE1BX0FMSUdOKHItPnNwYWNlKTsKKwlyLT5idXNfY21kX3N0YXJ0ID0gci0+YnVzX2FkZHIgKworCQkJICAgKGRtYV9hZGRyX3QpKChjaGFyKilyLT5jbWRzIC0gKGNoYXIqKXItPnNwYWNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmcmVlX2RiZG1hX2Rlc2NyaXB0b3JfcmluZyhzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgZGJkbWFfY29tbWFuZF9tZW0gKnIpCit7CisJaWYgKCFyLT5zcGFjZSkgcmV0dXJuOworCQorCWRtYV9mcmVlX2NvaGVyZW50KCZtYWNpb19nZXRfcGNpX2RldihpMnNkZXYtPm1hY2lvKS0+ZGV2LAorCQkJICAgIHItPnNpemUsIHItPnNwYWNlLCByLT5idXNfYWRkcik7Cit9CisKK3N0YXRpYyB2b2lkIGkyc2J1c19yZWxlYXNlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldjsKKwlpbnQgaTsKKworCWkyc2RldiA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBpMnNidXNfZGV2LCBzb3VuZC5vZmRldi5kZXYpOworCisgCWlmIChpMnNkZXYtPmludGZyZWdzKSBpb3VubWFwKGkyc2Rldi0+aW50ZnJlZ3MpOworIAlpZiAoaTJzZGV2LT5vdXQuZGJkbWEpIGlvdW5tYXAoaTJzZGV2LT5vdXQuZGJkbWEpOworIAlpZiAoaTJzZGV2LT5pbi5kYmRtYSkgaW91bm1hcChpMnNkZXYtPmluLmRiZG1hKTsKKwlmb3IgKGk9MDtpPDM7aSsrKQorCQlpZiAoaTJzZGV2LT5hbGxvY2F0ZWRfcmVzb3VyY2VbaV0pCisJCQlyZWxlYXNlX2FuZF9mcmVlX3Jlc291cmNlKGkyc2Rldi0+YWxsb2NhdGVkX3Jlc291cmNlW2ldKTsKKwlmcmVlX2RiZG1hX2Rlc2NyaXB0b3JfcmluZyhpMnNkZXYsICZpMnNkZXYtPm91dC5kYmRtYV9yaW5nKTsKKwlmcmVlX2RiZG1hX2Rlc2NyaXB0b3JfcmluZyhpMnNkZXYsICZpMnNkZXYtPmluLmRiZG1hX3JpbmcpOworCWZvciAoaT0wO2k8MztpKyspCisJCWZyZWVfaXJxKGkyc2Rldi0+aW50ZXJydXB0c1tpXSwgaTJzZGV2KTsKKwlpMnNidXNfY29udHJvbF9yZW1vdmVfZGV2KGkyc2Rldi0+Y29udHJvbCwgaTJzZGV2KTsKKwltdXRleF9kZXN0cm95KCZpMnNkZXYtPmxvY2spOworCWtmcmVlKGkyc2Rldik7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBpMnNidXNfYnVzX2ludHIoaW50IGlycSwgdm9pZCAqZGV2aWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICpkZXYgPSBkZXZpZDsKKwl1MzIgaW50cmVnOworCisJc3Bpbl9sb2NrKCZkZXYtPmxvd19sb2NrKTsKKwlpbnRyZWcgPSBpbl9sZTMyKCZkZXYtPmludGZyZWdzLT5pbnRyX2N0bCk7CisKKwkvKiBhY2tub3dsZWRnZSBpbnRlcnJ1cHQgcmVhc29ucyAqLworCW91dF9sZTMyKCZkZXYtPmludGZyZWdzLT5pbnRyX2N0bCwgaW50cmVnKTsKKworCXNwaW5fdW5sb2NrKCZkZXYtPmxvd19sb2NrKTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBmb3JjZTsKK21vZHVsZV9wYXJhbShmb3JjZSwgaW50LCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZm9yY2UsICJGb3JjZSBsb2FkaW5nIGkyc2J1cyBldmVuIHdoZW4iCisJCQkiIG5vIGxheW91dC1pZCBwcm9wZXJ0eSBpcyBwcmVzZW50Iik7CisKKy8qIEZJWE1FOiBsb29rIGF0IGRldmljZSBub2RlIHJlZmNvdW50aW5nICovCitzdGF0aWMgaW50IGkyc2J1c19hZGRfZGV2KHN0cnVjdCBtYWNpb19kZXYgKm1hY2lvLAorCQkJICBzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmNvbnRyb2wsCisJCQkgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCit7CisJc3RydWN0IGkyc2J1c19kZXYgKmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkID0gTlVMTCwgKnNvdW5kID0gTlVMTDsKKwlpbnQgaTsKKwlzdGF0aWMgY29uc3QgY2hhciAqcm5hbWVzW10gPSB7ICJpMnNidXM6ICVzIChjb250cm9sKSIsCisJCQkJCSJpMnNidXM6ICVzICh0eCkiLAorCQkJCQkiaTJzYnVzOiAlcyAocngpIiB9OworCXN0YXRpYyBpcnFyZXR1cm5fdCAoKmludHNbXSkoaW50IGlycSwgdm9pZCAqZGV2aWQsCisJCQkJICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykgPSB7CisJCWkyc2J1c19idXNfaW50ciwKKwkJaTJzYnVzX3R4X2ludHIsCisJCWkyc2J1c19yeF9pbnRyCisJfTsKKworCWlmIChzdHJsZW4obnAtPm5hbWUpICE9IDUpCisJCXJldHVybiAwOworCWlmIChzdHJuY21wKG5wLT5uYW1lLCAiaTJzLSIsIDQpKQorCQlyZXR1cm4gMDsKKworCWlmIChucC0+bl9pbnRycyAhPSAzKQorCQlyZXR1cm4gMDsKKworCWRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMnNidXNfZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkZXYpCisJCXJldHVybiAwOworCisJaSA9IDA7CisJd2hpbGUgKChjaGlsZCA9IG9mX2dldF9uZXh0X2NoaWxkKG5wLCBjaGlsZCkpKSB7CisJCWlmIChzdHJjbXAoY2hpbGQtPm5hbWUsICJzb3VuZCIpID09IDApIHsKKwkJCWkrKzsKKwkJCXNvdW5kID0gY2hpbGQ7CisJCX0KKwl9CisJaWYgKGkgPT0gMSkgeworCQl1MzIgKmxheW91dF9pZDsKKwkJbGF5b3V0X2lkID0gKHUzMiopIGdldF9wcm9wZXJ0eShzb3VuZCwgImxheW91dC1pZCIsIE5VTEwpOworCQlpZiAobGF5b3V0X2lkKSB7CisJCQlzbnByaW50ZihkZXYtPnNvdW5kLm1vZGFsaWFzLCAzMiwKKwkJCQkgInNvdW5kLWxheW91dC0lZCIsICpsYXlvdXRfaWQpOworCQkJZm9yY2UgPSAxOworCQl9CisJfQorCS8qIGZvciB0aGUgdGltZSBiZWluZywgdW50aWwgd2UgY2FuIGhhbmRsZSBub24tbGF5b3V0LWlkCisJICogdGhpbmdzIGluIHNvbWUgZmFicmljLCByZWZ1c2UgdG8gYXR0YWNoIGlmIHRoZXJlIGlzIG5vCisJICogbGF5b3V0LWlkIHByb3BlcnR5IG9yIHdlIGhhdmVuJ3QgYmVlbiBmb3JjZWQgdG8gYXR0YWNoLgorCSAqIFdoZW4gdGhlcmUgYXJlIHR3byBpMnMgYnVzc2VzIGFuZCBvbmx5IG9uZSBoYXMgYSBsYXlvdXQtaWQsCisJICogdGhlbiB0aGlzIGRlcGVuZHMgb24gdGhlIG9yZGVyLCBidXQgdGhhdCBpc24ndCBpbXBvcnRhbnQKKwkgKiBlaXRoZXIgYXMgdGhlIHNlY29uZCBvbmUgaW4gdGhhdCBjYXNlIGlzIGp1c3QgYSBtb2RlbS4gKi8KKwlpZiAoIWZvcmNlKSB7CisJCWtmcmVlKGRldik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCW11dGV4X2luaXQoJmRldi0+bG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJmRldi0+bG93X2xvY2spOworCWRldi0+c291bmQub2ZkZXYubm9kZSA9IG5wOworCWRldi0+c291bmQub2ZkZXYuZG1hX21hc2sgPSBtYWNpby0+b2ZkZXYuZG1hX21hc2s7CisJZGV2LT5zb3VuZC5vZmRldi5kZXYuZG1hX21hc2sgPSAmZGV2LT5zb3VuZC5vZmRldi5kbWFfbWFzazsKKwlkZXYtPnNvdW5kLm9mZGV2LmRldi5wYXJlbnQgPSAmbWFjaW8tPm9mZGV2LmRldjsKKwlkZXYtPnNvdW5kLm9mZGV2LmRldi5yZWxlYXNlID0gaTJzYnVzX3JlbGVhc2VfZGV2OworCWRldi0+c291bmQuYXR0YWNoX2NvZGVjID0gaTJzYnVzX2F0dGFjaF9jb2RlYzsKKwlkZXYtPnNvdW5kLmRldGFjaF9jb2RlYyA9IGkyc2J1c19kZXRhY2hfY29kZWM7CisJZGV2LT5zb3VuZC5wY21pZCA9IC0xOworCWRldi0+bWFjaW8gPSBtYWNpbzsKKwlkZXYtPmNvbnRyb2wgPSBjb250cm9sOworCWRldi0+YnVzX251bWJlciA9IG5wLT5uYW1lWzRdIC0gJ2EnOworCUlOSVRfTElTVF9IRUFEKCZkZXYtPnNvdW5kLmNvZGVjX2xpc3QpOworCisJZm9yIChpPTA7aTwzO2krKykgeworCQlkZXYtPmludGVycnVwdHNbaV0gPSAtMTsKKwkJc25wcmludGYoZGV2LT5ybmFtZXNbaV0sIHNpemVvZihkZXYtPnJuYW1lc1tpXSksIHJuYW1lc1tpXSwgbnAtPm5hbWUpOworCX0KKwlmb3IgKGk9MDtpPDM7aSsrKSB7CisJCWlmIChyZXF1ZXN0X2lycShucC0+aW50cnNbaV0ubGluZSwgaW50c1tpXSwgMCwgZGV2LT5ybmFtZXNbaV0sIGRldikpCisJCQlnb3RvIGVycjsKKwkJZGV2LT5pbnRlcnJ1cHRzW2ldID0gbnAtPmludHJzW2ldLmxpbmU7CisJfQorCisJZm9yIChpPTA7aTwzO2krKykgeworCQlpZiAob2ZfYWRkcmVzc190b19yZXNvdXJjZShucCwgaSwgJmRldi0+cmVzb3VyY2VzW2ldKSkKKwkJCWdvdG8gZXJyOworCQkvKiBpZiBvbmx5IHdlIGNvdWxkIHVzZSBvdXIgcmVzb3VyY2UgZGV2LT5yZXNvdXJjZXNbaV0uLi4KKwkJICogYnV0IHJlcXVlc3RfcmVzb3VyY2UgZG9lc24ndCBrbm93IGFib3V0IHBhcmVudHMgYW5kCisJCSAqIGNvbnRhaW5lZCByZXNvdXJjZXMuLi4gKi8KKwkJZGV2LT5hbGxvY2F0ZWRfcmVzb3VyY2VbaV0gPSAKKwkJCXJlcXVlc3RfbWVtX3JlZ2lvbihkZXYtPnJlc291cmNlc1tpXS5zdGFydCwKKwkJCQkJICAgZGV2LT5yZXNvdXJjZXNbaV0uZW5kIC0KKwkJCQkJICAgZGV2LT5yZXNvdXJjZXNbaV0uc3RhcnQgKyAxLAorCQkJCQkgICBkZXYtPnJuYW1lc1tpXSk7CisJCWlmICghZGV2LT5hbGxvY2F0ZWRfcmVzb3VyY2VbaV0pIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiaTJzYnVzOiBmYWlsZWQgdG8gY2xhaW0gcmVzb3VyY2UgJWQhXG4iLCBpKTsKKwkJCWdvdG8gZXJyOworCQl9CisJfQorCS8qIHNob3VsZCBkbyBzYW5pdHkgY2hlY2tpbmcgaGVyZSBhYm91dCBsZW5ndGggb2YgdGhlbSAqLworCWRldi0+aW50ZnJlZ3MgPSBpb3JlbWFwKGRldi0+cmVzb3VyY2VzWzBdLnN0YXJ0LAorCQkJCWRldi0+cmVzb3VyY2VzWzBdLmVuZC1kZXYtPnJlc291cmNlc1swXS5zdGFydCsxKTsKKwlkZXYtPm91dC5kYmRtYSA9IGlvcmVtYXAoZGV2LT5yZXNvdXJjZXNbMV0uc3RhcnQsCisJCQkgCSBkZXYtPnJlc291cmNlc1sxXS5lbmQtZGV2LT5yZXNvdXJjZXNbMV0uc3RhcnQrMSk7CisJZGV2LT5pbi5kYmRtYSA9IGlvcmVtYXAoZGV2LT5yZXNvdXJjZXNbMl0uc3RhcnQsCisJCQkJZGV2LT5yZXNvdXJjZXNbMl0uZW5kLWRldi0+cmVzb3VyY2VzWzJdLnN0YXJ0KzEpOworCWlmICghZGV2LT5pbnRmcmVncyB8fCAhZGV2LT5vdXQuZGJkbWEgfHwgIWRldi0+aW4uZGJkbWEpCisJCWdvdG8gZXJyOworCisJaWYgKGFsbG9jX2RiZG1hX2Rlc2NyaXB0b3JfcmluZyhkZXYsICZkZXYtPm91dC5kYmRtYV9yaW5nLAorCQkJCQlNQVhfREJETUFfQ09NTUFORFMpKQorCQlnb3RvIGVycjsKKwlpZiAoYWxsb2NfZGJkbWFfZGVzY3JpcHRvcl9yaW5nKGRldiwgJmRldi0+aW4uZGJkbWFfcmluZywKKwkJCQkJTUFYX0RCRE1BX0NPTU1BTkRTKSkKKwkJZ290byBlcnI7CisKKwlpZiAoaTJzYnVzX2NvbnRyb2xfYWRkX2RldihkZXYtPmNvbnRyb2wsIGRldikpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJpMnNidXM6IGNvbnRyb2wgbGF5ZXIgZGlkbid0IGxpa2UgYnVzXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJaWYgKHNvdW5kYnVzX2FkZF9vbmUoJmRldi0+c291bmQpKSB7CisJCXByaW50ayhLRVJOX0RFQlVHICJpMnNidXM6IGRldmljZSByZWdpc3RyYXRpb24gZXJyb3IhXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJLyogZW5hYmxlIHRoaXMgY2VsbCAqLworCWkyc2J1c19jb250cm9sX2NlbGwoZGV2LT5jb250cm9sLCBkZXYsIDEpOworCWkyc2J1c19jb250cm9sX2VuYWJsZShkZXYtPmNvbnRyb2wsIGRldik7CisJaTJzYnVzX2NvbnRyb2xfY2xvY2soZGV2LT5jb250cm9sLCBkZXYsIDEpOworCisJcmV0dXJuIDE7CisgZXJyOgorCWZvciAoaT0wO2k8MztpKyspCisJCWlmIChkZXYtPmludGVycnVwdHNbaV0gIT0gLTEpCisJCQlmcmVlX2lycShkZXYtPmludGVycnVwdHNbaV0sIGRldik7CisJZnJlZV9kYmRtYV9kZXNjcmlwdG9yX3JpbmcoZGV2LCAmZGV2LT5vdXQuZGJkbWFfcmluZyk7CisJZnJlZV9kYmRtYV9kZXNjcmlwdG9yX3JpbmcoZGV2LCAmZGV2LT5pbi5kYmRtYV9yaW5nKTsKKwlpZiAoZGV2LT5pbnRmcmVncykgaW91bm1hcChkZXYtPmludGZyZWdzKTsKKwlpZiAoZGV2LT5vdXQuZGJkbWEpIGlvdW5tYXAoZGV2LT5vdXQuZGJkbWEpOworCWlmIChkZXYtPmluLmRiZG1hKSBpb3VubWFwKGRldi0+aW4uZGJkbWEpOworCWZvciAoaT0wO2k8MztpKyspCisJCWlmIChkZXYtPmFsbG9jYXRlZF9yZXNvdXJjZVtpXSkKKwkJCXJlbGVhc2VfYW5kX2ZyZWVfcmVzb3VyY2UoZGV2LT5hbGxvY2F0ZWRfcmVzb3VyY2VbaV0pOworCW11dGV4X2Rlc3Ryb3koJmRldi0+bG9jayk7CisJa2ZyZWUoZGV2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpMnNidXNfcHJvYmUoc3RydWN0IG1hY2lvX2RldiogZGV2LCBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaCkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gTlVMTDsKKwlpbnQgZ290ID0gMCwgZXJyOworCXN0cnVjdCBpMnNidXNfY29udHJvbCAqY29udHJvbCA9IE5VTEw7CisKKwllcnIgPSBpMnNidXNfY29udHJvbF9pbml0KGRldiwgJmNvbnRyb2wpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJaWYgKCFjb250cm9sKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaTJzYnVzX2NvbnRyb2xfaW5pdCBBUEkgYnJlYWthZ2VcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwl3aGlsZSAoKG5wID0gb2ZfZ2V0X25leHRfY2hpbGQoZGV2LT5vZmRldi5ub2RlLCBucCkpKSB7CisJCWlmIChkZXZpY2VfaXNfY29tcGF0aWJsZShucCwgImkyc2J1cyIpIHx8CisJCSAgICBkZXZpY2VfaXNfY29tcGF0aWJsZShucCwgImkycy1tb2RlbSIpKSB7CisJCQlnb3QgKz0gaTJzYnVzX2FkZF9kZXYoZGV2LCBjb250cm9sLCBucCk7CisJCX0KKwl9CisKKwlpZiAoIWdvdCkgeworCQkvKiBmb3VuZCBub25lLCBjbGVhbiB1cCAqLworCQlpMnNidXNfY29udHJvbF9kZXN0cm95KGNvbnRyb2wpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlkZXYtPm9mZGV2LmRldi5kcml2ZXJfZGF0YSA9IGNvbnRyb2w7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpMnNidXNfcmVtb3ZlKHN0cnVjdCBtYWNpb19kZXYqIGRldikKK3sKKwlzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmNvbnRyb2wgPSBkZXYtPm9mZGV2LmRldi5kcml2ZXJfZGF0YTsKKwlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LCAqdG1wOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGkyc2RldiwgdG1wLCAmY29udHJvbC0+bGlzdCwgaXRlbSkKKwkJc291bmRidXNfcmVtb3ZlX29uZSgmaTJzZGV2LT5zb3VuZCk7CisKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludCBpMnNidXNfc3VzcGVuZChzdHJ1Y3QgbWFjaW9fZGV2KiBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwlzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmNvbnRyb2wgPSBkZXYtPm9mZGV2LmRldi5kcml2ZXJfZGF0YTsKKwlzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWk7CisJc3RydWN0IGkyc2J1c19kZXYqIGkyc2RldjsKKwlpbnQgZXJyLCByZXQgPSAwOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShpMnNkZXYsICZjb250cm9sLT5saXN0LCBpdGVtKSB7CisJCS8qIE5vdGlmeSBBbHNhICovCisJCWlmIChpMnNkZXYtPnNvdW5kLnBjbSkgeworCQkJLyogU3VzcGVuZCBQQ00gc3RyZWFtcyAqLworCQkJc25kX3BjbV9zdXNwZW5kX2FsbChpMnNkZXYtPnNvdW5kLnBjbSk7CisJCQkvKiBQcm9iYWJseSB1c2VsZXNzIGFzIHdlIGhhbmRsZQorCQkJICogcG93ZXIgdHJhbnNpdGlvbnMgb3Vyc2VsdmVzICovCisJCQlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGkyc2Rldi0+c291bmQucGNtLT5jYXJkLAorCQkJCQkgICAgICAgU05EUlZfQ1RMX1BPV0VSX0QzaG90KTsKKwkJfQorCQkvKiBOb3RpZnkgY29kZWNzICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2lpLCAmaTJzZGV2LT5zb3VuZC5jb2RlY19saXN0LCBsaXN0KSB7CisJCQllcnIgPSAwOworCQkJaWYgKGNpaS0+Y29kZWMtPnN1c3BlbmQpCisJCQkJZXJyID0gY2lpLT5jb2RlYy0+c3VzcGVuZChjaWksIHN0YXRlKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0ID0gZXJyOworCQl9CisJfQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX3Jlc3VtZShzdHJ1Y3QgbWFjaW9fZGV2KiBkZXYpCit7CisJc3RydWN0IGkyc2J1c19jb250cm9sICpjb250cm9sID0gZGV2LT5vZmRldi5kZXYuZHJpdmVyX2RhdGE7CisJc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpOworCXN0cnVjdCBpMnNidXNfZGV2KiBpMnNkZXY7CisJaW50IGVyciwgcmV0ID0gMDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoaTJzZGV2LCAmY29udHJvbC0+bGlzdCwgaXRlbSkgeworCQkvKiBOb3RpZnkgY29kZWNzIHNvIHRoZXkgY2FuIHJlLWluaXRpYWxpemUgKi8KKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShjaWksICZpMnNkZXYtPnNvdW5kLmNvZGVjX2xpc3QsIGxpc3QpIHsKKwkJCWVyciA9IDA7CisJCQlpZiAoY2lpLT5jb2RlYy0+cmVzdW1lKQorCQkJCWVyciA9IGNpaS0+Y29kZWMtPnJlc3VtZShjaWkpOworCQkJaWYgKGVycikKKwkJCQlyZXQgPSBlcnI7CisJCX0KKwkJLyogTm90aWZ5IEFsc2EgKi8KKwkJaWYgKGkyc2Rldi0+c291bmQucGNtKSB7CisJCQkvKiBTYW1lIGNvbW1lbnQgYXMgYWJvdmUsIHByb2JhYmx5IHVzZWxlc3MgKi8KKwkJCXNuZF9wb3dlcl9jaGFuZ2Vfc3RhdGUoaTJzZGV2LT5zb3VuZC5wY20tPmNhcmQsCisJCQkJCSAgICAgICBTTkRSVl9DVExfUE9XRVJfRDApOworCQl9CisJfQorCisJcmV0dXJuIHJldDsKK30KKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8KKworc3RhdGljIGludCBpMnNidXNfc2h1dGRvd24oc3RydWN0IG1hY2lvX2RldiogZGV2KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IG1hY2lvX2RyaXZlciBpMnNidXNfZHJ2ID0geworCS5uYW1lID0gInNvdW5kYnVzLWkycyIsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLm1hdGNoX3RhYmxlID0gaTJzYnVzX21hdGNoLAorCS5wcm9iZSA9IGkyc2J1c19wcm9iZSwKKwkucmVtb3ZlID0gaTJzYnVzX3JlbW92ZSwKKyNpZmRlZiBDT05GSUdfUE0KKwkuc3VzcGVuZCA9IGkyc2J1c19zdXNwZW5kLAorCS5yZXN1bWUgPSBpMnNidXNfcmVzdW1lLAorI2VuZGlmCisJLnNodXRkb3duID0gaTJzYnVzX3NodXRkb3duLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc291bmRidXNfaTJzYnVzX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gbWFjaW9fcmVnaXN0ZXJfZHJpdmVyKCZpMnNidXNfZHJ2KTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHNvdW5kYnVzX2kyc2J1c19leGl0KHZvaWQpCit7CisJbWFjaW9fdW5yZWdpc3Rlcl9kcml2ZXIoJmkyc2J1c19kcnYpOworfQorCittb2R1bGVfaW5pdChzb3VuZGJ1c19pMnNidXNfaW5pdCk7Cittb2R1bGVfZXhpdChzb3VuZGJ1c19pMnNidXNfZXhpdCk7CmRpZmYgLS1naXQgYS9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1pbnRlcmZhY2UuaCBiL3NvdW5kL2FvYS9zb3VuZGJ1cy9pMnNidXMvaTJzYnVzLWludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YjVmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1pbnRlcmZhY2UuaApAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIGkyc2J1cyBkcml2ZXIgLS0gaW50ZXJmYWNlIHJlZ2lzdGVyIGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisjaWZuZGVmIF9fSTJTQlVTX0lOVEVSRkFDRV9ICisjZGVmaW5lIF9fSTJTQlVTX0lOVEVSRkFDRV9ICisKKy8qIGkycyBidXMgY29udHJvbCByZWdpc3RlcnMsIGF0IGxlYXN0IHdoYXQgd2Uga25vdyBhYm91dCB0aGVtICovCisKKyNkZWZpbmUgX19QQUQobSxuKSB1OCBfX3BhZCMjbVtuXQorI2RlZmluZSBfUEFEKGxpbmUsIG4pIF9fUEFEKGxpbmUsIG4pCisjZGVmaW5lIFBBRChuKSBfUEFEKF9fTElORV9fLCAobikpCitzdHJ1Y3QgaTJzX2ludGVyZmFjZV9yZWdzIHsKKwlfX2xlMzIgaW50cl9jdGw7CS8qIDB4MDAgKi8KKwlQQUQoMTIpOworCV9fbGUzMiBzZXJpYWxfZm9ybWF0OwkvKiAweDEwICovCisJUEFEKDEyKTsKKwlfX2xlMzIgY29kZWNfbXNnX291dDsJLyogMHgyMCAqLworCVBBRCgxMik7CisJX19sZTMyIGNvZGVjX21zZ19pbjsJLyogMHgzMCAqLworCVBBRCgxMik7CisJX19sZTMyIGZyYW1lX2NvdW50OwkvKiAweDQwICovCisJUEFEKDEyKTsKKwlfX2xlMzIgZnJhbWVfbWF0Y2g7CS8qIDB4NTAgKi8KKwlQQUQoMTIpOworCV9fbGUzMiBkYXRhX3dvcmRfc2l6ZXM7CS8qIDB4NjAgKi8KKwlQQUQoMTIpOworCV9fbGUzMiBwZWFrX2xldmVsX3NlbDsJLyogMHg3MCAqLworCVBBRCgxMik7CisJX19sZTMyIHBlYWtfbGV2ZWxfaW4wOwkvKiAweDgwICovCisJUEFEKDEyKTsKKwlfX2xlMzIgcGVha19sZXZlbF9pbjE7CS8qIDB4OTAgKi8KKwlQQUQoMTIpOworCS8qIHRvdGFsIHNpemU6IDB4MTAwIGJ5dGVzICovCit9ICBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKy8qIGludGVycnVwdCByZWdpc3RlciBpcyBqdXN0IGEgYml0ZmllbGQgd2l0aAorICogaW50ZXJydXB0IGVuYWJsZSBhbmQgcGVuZGluZyBiaXRzICovCisjZGVmaW5lIEkyU19SRUdfSU5UUl9DVEwJCTB4MDAKKyMJZGVmaW5lIEkyU19JTlRfRlJBTUVfQ09VTlQJCSgxPDwzMSkKKyMJZGVmaW5lIEkyU19QRU5ESU5HX0ZSQU1FX0NPVU5UCQkoMTw8MzApCisjCWRlZmluZSBJMlNfSU5UX01FU1NBR0VfRkxBRwkJKDE8PDI5KQorIwlkZWZpbmUgSTJTX1BFTkRJTkdfTUVTU0FHRV9GTEFHCQkoMTw8MjgpCisjCWRlZmluZSBJMlNfSU5UX05FV19QRUFLCQkJKDE8PDI3KQorIwlkZWZpbmUgSTJTX1BFTkRJTkdfTkVXX1BFQUsJCSgxPDwyNikKKyMJZGVmaW5lIEkyU19JTlRfQ0xPQ0tTX1NUT1BQRUQJCSgxPDwyNSkKKyMJZGVmaW5lIEkyU19QRU5ESU5HX0NMT0NLU19TVE9QUEVECSgxPDwyNCkKKyMJZGVmaW5lIEkyU19JTlRfRVhURVJOQUxfU1lOQ19FUlJPUgkoMTw8MjMpCisjCWRlZmluZSBJMlNfUEVORElOR19FWFRFUk5BTF9TWU5DX0VSUk9SCSgxPDwyMikKKyMJZGVmaW5lIEkyU19JTlRfRVhURVJOQUxfU1lOQ19PSwkJKDE8PDIxKQorIwlkZWZpbmUgSTJTX1BFTkRJTkdfRVhURVJOQUxfU1lOQ19PSwkoMTw8MjApCisjCWRlZmluZSBJMlNfSU5UX05FV19TQU1QTEVfUkFURQkJKDE8PDE5KQorIwlkZWZpbmUgSTJTX1BFTkRJTkdfTkVXX1NBTVBMRV9SQVRFCSgxPDwxOCkKKyMJZGVmaW5lIEkyU19JTlRfU1RBVFVTX0ZMQUcJCSgxPDwxNykKKyMJZGVmaW5lIEkyU19QRU5ESU5HX1NUQVRVU19GTEFHCQkoMTw8MTYpCisKKy8qIHNlcmlhbCBmb3JtYXQgcmVnaXN0ZXIgaXMgbW9yZSBpbnRlcmVzdGluZyA6KQorICogSXQgY29udGFpbnM6CisgKiAgLSBjbG9jayBzb3VyY2UKKyAqICAtIE1DbGsgZGl2aXNvcgorICogIC0gU0NsayBkaXZpc29yCisgKiAgLSBTQ2xrIG1hc3RlciBmbGFnCisgKiAgLSBzZXJpYWwgZm9ybWF0IChzb255LCBpMnMgNjR4LCBpMnMgMzJ4LCBkYXYsIHNpbGFicykKKyAqICAtIGV4dGVybmFsIHNhbXBsZSBmcmVxdWVuY3kgaW50ZXJydXB0IChkb24ndCB1bmRlcnN0YW5kKQorICogIC0gZXh0ZXJuYWwgc2FtcGxlIGZyZXF1ZW5jeQorICovCisjZGVmaW5lIEkyU19SRUdfU0VSSUFMX0ZPUk1BVAkJMHgxMAorLyogY2xvY2sgc291cmNlLiBZb3UgZ2V0IGVpdGhlciAxOC40MzIsIDQ1LjE1ODQgb3IgNDkuMTUyMCBNSHogKi8KKyMJZGVmaW5lIEkyU19TRl9DTE9DS19TT1VSQ0VfU0hJRlQJMzAKKyMJZGVmaW5lIEkyU19TRl9DTE9DS19TT1VSQ0VfTUFTSwkJKDM8PEkyU19TRl9DTE9DS19TT1VSQ0VfU0hJRlQpCisjCWRlZmluZSBJMlNfU0ZfQ0xPQ0tfU09VUkNFXzE4TUh6CSgwPDxJMlNfU0ZfQ0xPQ0tfU09VUkNFX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX0NMT0NLX1NPVVJDRV80NU1IegkoMTw8STJTX1NGX0NMT0NLX1NPVVJDRV9TSElGVCkKKyMJZGVmaW5lIEkyU19TRl9DTE9DS19TT1VSQ0VfNDlNSHoJKDI8PEkyU19TRl9DTE9DS19TT1VSQ0VfU0hJRlQpCisvKiBhbHNvLCBsZXQncyBkZWZpbmUgdGhlIGV4YWN0IGNsb2NrIHNwZWVkcyBoZXJlLCBpbiBIeiAqLworI2RlZmluZSBJMlNfQ0xPQ0tfU1BFRURfMThNSHoJMTg0MzIwMDAKKyNkZWZpbmUgSTJTX0NMT0NLX1NQRUVEXzQ1TUh6CTQ1MTU4NDAwCisjZGVmaW5lIEkyU19DTE9DS19TUEVFRF80OU1Iegk0OTE1MjAwMAorLyogTUNsayBpcyB0aGUgY2xvY2sgdGhhdCBkcml2ZXMgdGhlIGNvZGVjLCB1c3VhbGx5IGNhbGxlZCBpdHMgJ3N5c3RlbSBjbG9jaycuCisgKiBJdCBpcyBkZXJpdmVkIGJ5IHRha2luZyBvbmx5IGV2ZXJ5ICdkaXZpc29yJyB0aWNrIG9mIHRoZSBjbG9jay4KKyAqLworIwlkZWZpbmUgSTJTX1NGX01DTEtESVZfU0hJRlQJCTI0CisjCWRlZmluZSBJMlNfU0ZfTUNMS0RJVl9NQVNLCQkoMHgxRjw8STJTX1NGX01DTEtESVZfU0hJRlQpCisjCWRlZmluZSBJMlNfU0ZfTUNMS0RJVl8xCQkJKDB4MTQ8PEkyU19TRl9NQ0xLRElWX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX01DTEtESVZfMwkJCSgweDEzPDxJMlNfU0ZfTUNMS0RJVl9TSElGVCkKKyMJZGVmaW5lIEkyU19TRl9NQ0xLRElWXzUJCQkoMHgxMjw8STJTX1NGX01DTEtESVZfU0hJRlQpCisjCWRlZmluZSBJMlNfU0ZfTUNMS0RJVl8xNAkJKDB4MEU8PEkyU19TRl9NQ0xLRElWX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX01DTEtESVZfT1RIRVIoZGl2KQkoKChkaXYvMi0xKTw8STJTX1NGX01DTEtESVZfU0hJRlQpJkkyU19TRl9NQ0xLRElWX01BU0spCitzdGF0aWMgaW5saW5lIGludCBpMnNfc2ZfbWNsa2RpdihpbnQgZGl2LCBpbnQgKm91dCkKK3sKKwlpbnQgZDsKKworCXN3aXRjaChkaXYpIHsKKwljYXNlIDE6ICpvdXQgfD0gSTJTX1NGX01DTEtESVZfMTsgcmV0dXJuIDA7CisJY2FzZSAzOiAqb3V0IHw9IEkyU19TRl9NQ0xLRElWXzM7IHJldHVybiAwOworCWNhc2UgNTogKm91dCB8PSBJMlNfU0ZfTUNMS0RJVl81OyByZXR1cm4gMDsKKwljYXNlIDE0OiAqb3V0IHw9IEkyU19TRl9NQ0xLRElWXzE0OyByZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlpZiAoZGl2JTIpIHJldHVybiAtMTsKKwkJZCA9IGRpdi8yLTE7CisJCWlmIChkID09IDB4MTQgfHwgZCA9PSAweDEzIHx8IGQgPT0gMHgxMiB8fCBkID09IDB4MEUpCisJCQlyZXR1cm4gLTE7CisJCSpvdXQgfD0gSTJTX1NGX01DTEtESVZfT1RIRVIoZGl2KTsKKwkJcmV0dXJuIDA7CisJfQorfQorLyogU0NsayBpcyB0aGUgY2xvY2sgdGhhdCBkcml2ZXMgdGhlIGkycyB3aXJlIGJ1cy4gTm90ZSB0aGF0IGl0IGlzCisgKiBkZXJpdmVkIGZyb20gdGhlIE1DbGsgYWJvdmUgYnkgdGFraW5nIG9ubHkgZXZlcnkgJ2Rpdmlzb3InIHRpY2sKKyAqIG9mIE1DbGsuCisgKi8KKyMJZGVmaW5lIEkyU19TRl9TQ0xLRElWX1NISUZUCQkyMAorIwlkZWZpbmUgSTJTX1NGX1NDTEtESVZfTUFTSwkJKDB4Rjw8STJTX1NGX1NDTEtESVZfU0hJRlQpCisjCWRlZmluZSBJMlNfU0ZfU0NMS0RJVl8xCQkJKDg8PEkyU19TRl9TQ0xLRElWX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX1NDTEtESVZfMwkJCSg5PDxJMlNfU0ZfU0NMS0RJVl9TSElGVCkKKyMJZGVmaW5lIEkyU19TRl9TQ0xLRElWX09USEVSKGRpdikJKCgoZGl2LzItMSk8PEkyU19TRl9TQ0xLRElWX1NISUZUKSZJMlNfU0ZfU0NMS0RJVl9NQVNLKQorc3RhdGljIGlubGluZSBpbnQgaTJzX3NmX3NjbGtkaXYoaW50IGRpdiwgaW50ICpvdXQpCit7CisJaW50IGQ7CisKKwlzd2l0Y2goZGl2KSB7CisJY2FzZSAxOiAqb3V0IHw9IEkyU19TRl9TQ0xLRElWXzE7IHJldHVybiAwOworCWNhc2UgMzogKm91dCB8PSBJMlNfU0ZfU0NMS0RJVl8zOyByZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlpZiAoZGl2JTIpIHJldHVybiAtMTsKKwkJZCA9IGRpdi8yLTE7CisJCWlmIChkID09IDggfHwgZCA9PSA5KSByZXR1cm4gLTE7CisJCSpvdXQgfD0gSTJTX1NGX1NDTEtESVZfT1RIRVIoZGl2KTsKKwkJcmV0dXJuIDA7CisJfQorfQorIwlkZWZpbmUgSTJTX1NGX1NDTEtfTUFTVEVSCQkoMTw8MTkpCisvKiBzZXJpYWwgZm9ybWF0IGlzIHRoZSB3YXkgdGhlIGRhdGEgaXMgcHV0IHRvIHRoZSBpMnMgd2lyZSBidXMgKi8KKyMJZGVmaW5lIEkyU19TRl9TRVJJQUxfRk9STUFUX1NISUZUCTE2CisjCWRlZmluZSBJMlNfU0ZfU0VSSUFMX0ZPUk1BVF9NQVNLCSg3PDxJMlNfU0ZfU0VSSUFMX0ZPUk1BVF9TSElGVCkKKyMJZGVmaW5lIEkyU19TRl9TRVJJQUxfRk9STUFUX1NPTlkJKDA8PEkyU19TRl9TRVJJQUxfRk9STUFUX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX1NFUklBTF9GT1JNQVRfSTJTXzY0WAkoMTw8STJTX1NGX1NFUklBTF9GT1JNQVRfU0hJRlQpCisjCWRlZmluZSBJMlNfU0ZfU0VSSUFMX0ZPUk1BVF9JMlNfMzJYCSgyPDxJMlNfU0ZfU0VSSUFMX0ZPUk1BVF9TSElGVCkKKyMJZGVmaW5lIEkyU19TRl9TRVJJQUxfRk9STUFUX0kyU19EQVYJKDQ8PEkyU19TRl9TRVJJQUxfRk9STUFUX1NISUZUKQorIwlkZWZpbmUgSTJTX1NGX1NFUklBTF9GT1JNQVRfSTJTX1NJTEFCUwkoNTw8STJTX1NGX1NFUklBTF9GT1JNQVRfU0hJRlQpCisvKiB1bmtub3duICovCisjCWRlZmluZSBJMlNfU0ZfRVhUX1NBTVBMRV9GUkVRX0lOVF9TSElGVAkxMgorIwlkZWZpbmUgSTJTX1NGX0VYVF9TQU1QTEVfRlJFUV9JTlRfTUFTSwkoMHhGPDxJMlNfU0ZfU0FNUExFX0ZSRVFfSU5UX1NISUZUKQorLyogcHJvYmFibHkgZ2l2ZXMgZXh0ZXJuYWwgZnJlcXVlbmN5PyAqLworIwlkZWZpbmUgSTJTX1NGX0VYVF9TQU1QTEVfRlJFUV9NQVNLCTB4RkZGCisKKy8qIHVzZWQgdG8gc2VuZCBjb2RlYyBtZXNzYWdlcywgYnV0IGhvdyBpc24ndCBjbGVhciAqLworI2RlZmluZSBJMlNfUkVHX0NPREVDX01TR19PVVQJCTB4MjAKKworLyogdXNlZCB0byByZWNlaXZlIGNvZGVjIG1lc3NhZ2VzLCBidXQgaG93IGlzbid0IGNsZWFyICovCisjZGVmaW5lIEkyU19SRUdfQ09ERUNfTVNHX0lOCQkweDMwCisKKy8qIGZyYW1lIGNvdW50IHJlZyBpc24ndCBjbGVhciB0byBtZSB5ZXQsIGJ1dCBwcm9iYWJseSB1c2VmdWwgKi8KKyNkZWZpbmUgSTJTX1JFR19GUkFNRV9DT1VOVAkJMHg0MAorCisvKiBwcm9ncmFtIHRvIHNvbWUgdmFsdWUsIGFuZCBnZXQgaW50ZXJydXB0IGlmIGZyYW1lIGNvdW50IHJlYWNoZXMgaXQgKi8KKyNkZWZpbmUgSTJTX1JFR19GUkFNRV9NQVRDSAkJMHg1MAorCisvKiB0aGlzIHJlZ2lzdGVyIGRlc2NyaWJlcyBob3cgdGhlIGJ1cyB0cmFuc2ZlcnMgZGF0YSAqLworI2RlZmluZSBJMlNfUkVHX0RBVEFfV09SRF9TSVpFUwkJMHg2MAorLyogbnVtYmVyIG9mIGludGVybGVhdmVkIGlucHV0IGNoYW5uZWxzICovCisjCWRlZmluZSBJMlNfRFdTX05VTV9DSEFOTkVMU19JTl9TSElGVAkyNAorIwlkZWZpbmUgSTJTX0RXU19OVU1fQ0hBTk5FTFNfSU5fTUFTSwkoMHgxRjw8STJTX0RXU19OVU1fQ0hBTk5FTFNfSU5fU0hJRlQpCisvKiB3b3JkIHNpemUgb2YgaW5wdXQgZGF0YSAqLworIwlkZWZpbmUgSTJTX0RXU19EQVRBX0lOX1NJWkVfU0hJRlQJMTYKKyMJZGVmaW5lIEkyU19EV1NfREFUQV9JTl8xNkJJVAkJKDA8PEkyU19EV1NfREFUQV9JTl9TSVpFX1NISUZUKQorIwlkZWZpbmUgSTJTX0RXU19EQVRBX0lOXzI0QklUCQkoMzw8STJTX0RXU19EQVRBX0lOX1NJWkVfU0hJRlQpCisvKiBudW1iZXIgb2YgaW50ZXJsZWF2ZWQgb3V0cHV0IGNoYW5uZWxzICovCisjCWRlZmluZSBJMlNfRFdTX05VTV9DSEFOTkVMU19PVVRfU0hJRlQJOAorIwlkZWZpbmUgSTJTX0RXU19OVU1fQ0hBTk5FTFNfT1VUX01BU0sJKDB4MUY8PEkyU19EV1NfTlVNX0NIQU5ORUxTX09VVF9TSElGVCkKKy8qIHdvcmQgc2l6ZSBvZiBvdXRwdXQgZGF0YSAqLworIwlkZWZpbmUgSTJTX0RXU19EQVRBX09VVF9TSVpFX1NISUZUCTAKKyMJZGVmaW5lIEkyU19EV1NfREFUQV9PVVRfMTZCSVQJCSgwPDxJMlNfRFdTX0RBVEFfT1VUX1NJWkVfU0hJRlQpCisjCWRlZmluZSBJMlNfRFdTX0RBVEFfT1VUXzI0QklUCQkoMzw8STJTX0RXU19EQVRBX09VVF9TSVpFX1NISUZUKQorCisKKy8qIHVua25vd24gKi8KKyNkZWZpbmUgSTJTX1JFR19QRUFLX0xFVkVMX1NFTAkJMHg3MAorCisvKiB1bmtub3duICovCisjZGVmaW5lIEkyU19SRUdfUEVBS19MRVZFTF9JTjAJCTB4ODAKKworLyogdW5rbm93biAqLworI2RlZmluZSBJMlNfUkVHX1BFQUtfTEVWRUxfSU4xCQkweDkwCisKKyNlbmRpZiAvKiBfX0kyU0JVU19JTlRFUkZBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtcGNtLmMgYi9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy1wY20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ5MDE1Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMtcGNtLmMKQEAgLTAsMCArMSwxMDIxIEBACisvKgorICogaTJzYnVzIGRyaXZlciAtLSBwY20gcm91dGluZXMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorICoKKyAqIEdQTCB2MiwgY2FuIGJlIGZvdW5kIGluIENPUFlJTkcuCisgKi8KKworI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisvKiBTbyBhcHBhcmVudGx5IHRoZXJlJ3MgYSByZWFzb24gZm9yIHJlcXVpcmluZyBkcml2ZXIuaAorICogdG8gYmUgaW5jbHVkZWQgZmlyc3QsIGV2ZW4gaWYgSSBkb24ndCBrbm93IGl0Li4uICovCisjaW5jbHVkZSA8c291bmQvZHJpdmVyLmg+CisjaW5jbHVkZSA8c291bmQvY29yZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNpby5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgIi4uL3NvdW5kYnVzLmgiCisjaW5jbHVkZSAiaTJzYnVzLmgiCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZXRfcGNtX2luZm8oc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiwgaW50IGluLAorCQkJCXN0cnVjdCBwY21faW5mbyAqKnBpLCBzdHJ1Y3QgcGNtX2luZm8gKipvdGhlcikKK3sKKwlpZiAoaW4pIHsKKwkJaWYgKHBpKQorCQkJKnBpID0gJmkyc2Rldi0+aW47CisJCWlmIChvdGhlcikKKwkJCSpvdGhlciA9ICZpMnNkZXYtPm91dDsKKwl9IGVsc2UgeworCQlpZiAocGkpCisJCQkqcGkgPSAmaTJzZGV2LT5vdXQ7CisJCWlmIChvdGhlcikKKwkJCSpvdGhlciA9ICZpMnNkZXYtPmluOworCX0KK30KKworc3RhdGljIGludCBjbG9ja19hbmRfZGl2aXNvcnMoaW50IG1jbGssIGludCBzY2xrLCBpbnQgcmF0ZSwgaW50ICpvdXQpCit7CisJLyogc2NsayBtdXN0IGJlIGRlcml2ZWQgZnJvbSBtY2xrISAqLworCWlmIChtY2xrICUgc2NsaykKKwkJcmV0dXJuIC0xOworCS8qIGRlcml2ZSBzY2xrIHJlZ2lzdGVyIHZhbHVlICovCisJaWYgKGkyc19zZl9zY2xrZGl2KG1jbGsgLyBzY2xrLCBvdXQpKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoSTJTX0NMT0NLX1NQRUVEXzE4TUh6ICUgKHJhdGUgKiBtY2xrKSA9PSAwKSB7CisJCWlmICghaTJzX3NmX21jbGtkaXYoSTJTX0NMT0NLX1NQRUVEXzE4TUh6IC8gKHJhdGUgKiBtY2xrKSwgb3V0KSkgeworCQkJKm91dCB8PSBJMlNfU0ZfQ0xPQ0tfU09VUkNFXzE4TUh6OworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJaWYgKEkyU19DTE9DS19TUEVFRF80NU1IeiAlIChyYXRlICogbWNsaykgPT0gMCkgeworCQlpZiAoIWkyc19zZl9tY2xrZGl2KEkyU19DTE9DS19TUEVFRF80NU1IeiAvIChyYXRlICogbWNsayksIG91dCkpIHsKKwkJCSpvdXQgfD0gSTJTX1NGX0NMT0NLX1NPVVJDRV80NU1IejsKKwkJCXJldHVybiAwOworCQl9CisJfQorCWlmIChJMlNfQ0xPQ0tfU1BFRURfNDlNSHogJSAocmF0ZSAqIG1jbGspID09IDApIHsKKwkJaWYgKCFpMnNfc2ZfbWNsa2RpdihJMlNfQ0xPQ0tfU1BFRURfNDlNSHogLyAocmF0ZSAqIG1jbGspLCBvdXQpKSB7CisJCQkqb3V0IHw9IEkyU19TRl9DTE9DS19TT1VSQ0VfNDlNSHo7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwlyZXR1cm4gLTE7Cit9CisKKyNkZWZpbmUgQ0hFQ0tfUkFURShyYXRlKQkJCQkJCVwKKwlkbyB7IGlmIChyYXRlcyAmIFNORFJWX1BDTV9SQVRFXyAjI3JhdGUpIHsJCQlcCisJCWludCBkdW1teTsJCQkJCQlcCisJCWlmIChjbG9ja19hbmRfZGl2aXNvcnMoc3lzY2xvY2tfZmFjdG9yLAkJCVwKKwkJCQkgICAgICAgYnVzX2ZhY3RvciwgcmF0ZSwgJmR1bW15KSkJXAorCQkJcmF0ZXMgJj0gflNORFJWX1BDTV9SQVRFXyAjI3JhdGU7CQlcCisJfSB9IHdoaWxlICgwKQorCitzdGF0aWMgaW50IGkyc2J1c19wY21fb3BlbihzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LCBpbnQgaW4pCit7CisJc3RydWN0IHBjbV9pbmZvICpwaSwgKm90aGVyOworCXN0cnVjdCBzb3VuZGJ1c19kZXYgKnNkZXY7CisJaW50IG1hc2tzX2luaXRlZCA9IDAsIGVycjsKKwlzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksICpyZXY7CisJc3RydWN0IHNuZF9wY21faGFyZHdhcmUgKmh3OworCXU2NCBmb3JtYXRzID0gMDsKKwl1bnNpZ25lZCBpbnQgcmF0ZXMgPSAwOworCXN0cnVjdCB0cmFuc2Zlcl9pbmZvIHY7CisJaW50IHJlc3VsdCA9IDA7CisJaW50IGJ1c19mYWN0b3IgPSAwLCBzeXNjbG9ja19mYWN0b3IgPSAwOworCWludCBmb3VuZF90aGlzOworCisJbXV0ZXhfbG9jaygmaTJzZGV2LT5sb2NrKTsKKworCWdldF9wY21faW5mbyhpMnNkZXYsIGluLCAmcGksICZvdGhlcik7CisKKwlodyA9ICZwaS0+c3Vic3RyZWFtLT5ydW50aW1lLT5odzsKKwlzZGV2ID0gJmkyc2Rldi0+c291bmQ7CisKKwlpZiAocGktPmFjdGl2ZSkgeworCQkvKiBhbHNhIG1lc3NlZCB1cCAqLworCQlyZXN1bHQgPSAtRUJVU1k7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwkvKiB3ZSBub3cgbmVlZCB0byBhc3NpZ24gdGhlIGh3ICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeShjaWksICZzZGV2LT5jb2RlY19saXN0LCBsaXN0KSB7CisJCXN0cnVjdCB0cmFuc2Zlcl9pbmZvICp0aSA9IGNpaS0+Y29kZWMtPnRyYW5zZmVyczsKKwkJYnVzX2ZhY3RvciA9IGNpaS0+Y29kZWMtPmJ1c19mYWN0b3I7CisJCXN5c2Nsb2NrX2ZhY3RvciA9IGNpaS0+Y29kZWMtPnN5c2Nsb2NrX2ZhY3RvcjsKKwkJd2hpbGUgKHRpLT5mb3JtYXRzICYmIHRpLT5yYXRlcykgeworCQkJdiA9ICp0aTsKKwkJCWlmICh0aS0+dHJhbnNmZXJfaW4gPT0gaW4KKwkJCSAgICAmJiBjaWktPmNvZGVjLT51c2FibGUoY2lpLCB0aSwgJnYpKSB7CisJCQkJaWYgKG1hc2tzX2luaXRlZCkgeworCQkJCQlmb3JtYXRzICY9IHYuZm9ybWF0czsKKwkJCQkJcmF0ZXMgJj0gdi5yYXRlczsKKwkJCQl9IGVsc2UgeworCQkJCQlmb3JtYXRzID0gdi5mb3JtYXRzOworCQkJCQlyYXRlcyA9IHYucmF0ZXM7CisJCQkJCW1hc2tzX2luaXRlZCA9IDE7CisJCQkJfQorCQkJfQorCQkJdGkrKzsKKwkJfQorCX0KKwlpZiAoIW1hc2tzX2luaXRlZCB8fCAhYnVzX2ZhY3RvciB8fCAhc3lzY2xvY2tfZmFjdG9yKSB7CisJCXJlc3VsdCA9IC1FTk9ERVY7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisJLyogYnVzIGRlcGVuZGVudCBzdHVmZiAqLworCWh3LT5pbmZvID0gU05EUlZfUENNX0lORk9fTU1BUCB8IFNORFJWX1BDTV9JTkZPX01NQVBfVkFMSUQgfAorCQkgICBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCB8IFNORFJWX1BDTV9JTkZPX1JFU1VNRTsKKworCUNIRUNLX1JBVEUoNTUxMik7CisJQ0hFQ0tfUkFURSg4MDAwKTsKKwlDSEVDS19SQVRFKDExMDI1KTsKKwlDSEVDS19SQVRFKDE2MDAwKTsKKwlDSEVDS19SQVRFKDIyMDUwKTsKKwlDSEVDS19SQVRFKDMyMDAwKTsKKwlDSEVDS19SQVRFKDQ0MTAwKTsKKwlDSEVDS19SQVRFKDQ4MDAwKTsKKwlDSEVDS19SQVRFKDY0MDAwKTsKKwlDSEVDS19SQVRFKDg4MjAwKTsKKwlDSEVDS19SQVRFKDk2MDAwKTsKKwlDSEVDS19SQVRFKDE3NjQwMCk7CisJQ0hFQ0tfUkFURSgxOTIwMDApOworCWh3LT5yYXRlcyA9IHJhdGVzOworCisJLyogd2VsbC4gdGhlIGNvZGVjIG1pZ2h0IHdhbnQgMjQgYml0cyBvbmx5LCBhbmQgd2UnbGwKKwkgKiBldmVyIG9ubHkgdHJhbnNmZXIgMjQgYml0cywgYnV0IHRoZXkgYXJlIHRvcC1hbGlnbmVkIQorCSAqIFNvIGZvciBhbHNhLCB3ZSBjbGFpbSB0aGF0IHdlJ3JlIGRvaW5nIGZ1bGwgMzIgYml0CisJICogd2hpbGUgaW4gcmVhbGl0eSB3ZSdsbCBpZ25vcmUgdGhlIGxvd2VyIDggYml0cyBvZgorCSAqIHRoYXQgd2hlbiBkb2luZyBwbGF5YmFjayAodGhleSdyZSB0cmFuc2ZlcnJlZCBhcyAwCisJICogYXMgZmFyIGFzIEkga25vdywgbm8gY29kZWNzIHdlIGhhdmUgYXJlIDMyLWJpdCBjYXBhYmxlCisJICogc28gSSBjYW4ndCByZWFsbHkgdGVzdCkgYW5kIHdoZW4gZG9pbmcgcmVjb3JkaW5nIHdlJ2xsCisJICogYWx3YXlzIGhhdmUgdGhvc2UgbG93ZXIgOCBiaXRzIHJlY29yZGVkIGFzIDAgKi8KKwlpZiAoZm9ybWF0cyAmIFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFKQorCQlmb3JtYXRzIHw9IFNORFJWX1BDTV9GTVRCSVRfUzMyX0JFOworCWlmIChmb3JtYXRzICYgU05EUlZfUENNX0ZNVEJJVF9VMjRfQkUpCisJCWZvcm1hdHMgfD0gU05EUlZfUENNX0ZNVEJJVF9VMzJfQkU7CisJLyogbm93IG1hc2sgb2ZmIHdoYXQgd2UgY2FuIHN1cHBvcnQuIEkgc3VwcG9zZSB3ZSBjb3VsZAorCSAqIGFsc28gc3VwcG9ydCBTMjRfM0xFIGFuZCBzb21lIHNpbWlsYXIgZm9ybWF0cywgYnV0IEkKKwkgKiBkb3VidCB0aGVyZSdzIGEgY29kZWMgdGhhdCB3b3VsZCBiZSBhYmxlIHRvIHVzZSB0aGF0LAorCSAqIHNvIHdlIGRvbid0IHN1cHBvcnQgaXQgaGVyZS4gKi8KKwlody0+Zm9ybWF0cyA9IGZvcm1hdHMgJiAoU05EUlZfUENNX0ZNVEJJVF9TMTZfQkUgfAorCQkJCSBTTkRSVl9QQ01fRk1UQklUX1UxNl9CRSB8CisJCQkJIFNORFJWX1BDTV9GTVRCSVRfUzMyX0JFIHwKKwkJCQkgU05EUlZfUENNX0ZNVEJJVF9VMzJfQkUpOworCisJLyogd2UgbmVlZCB0byBzZXQgdGhlIGhpZ2hlc3QgYW5kIGxvd2VzdCByYXRlIHBvc3NpYmxlLgorCSAqIFRoZXNlIGFyZSB0aGUgaGlnaGVzdCBhbmQgbG93ZXN0IHJhdGVzIGFsc2EgY2FuCisJICogc3VwcG9ydCBwcm9wZXJseSBpbiBpdHMgYml0ZmllbGQuCisJICogQmVsb3csIHdlJ2xsIHVzZSB0aGF0IHRvIHJlc3RyaWN0IHRvIHRoZSByYXRlCisJICogY3VycmVudGx5IGluIHVzZSAoaWYgYW55KS4gKi8KKwlody0+cmF0ZV9taW4gPSA1NTEyOworCWh3LT5yYXRlX21heCA9IDE5MjAwMDsKKwkvKiBpZiB0aGUgb3RoZXIgc3RyZWFtIGlzIGFjdGl2ZSwgdGhlbiB3ZSBjYW4gb25seQorCSAqIHN1cHBvcnQgd2hhdCBpdCBpcyBjdXJyZW50bHkgdXNpbmcuCisJICogRklYTUU6IEkgbGllZC4gVGhpcyBjb21tZW50IGlzIHdyb25nLiBXZSBjYW4gc3VwcG9ydAorCSAqIGFueXRoaW5nIHRoYXQgd29ya3Mgd2l0aCB0aGUgc2FtZSBzZXJpYWwgZm9ybWF0LCBpZS4KKwkgKiB3aGVuIHJlY29yZGluZyAyNCBiaXQgc291bmQgd2UgY2FuIHdlbGwgcGxheSAxNiBiaXQKKwkgKiBzb3VuZCBhdCB0aGUgc2FtZSB0aW1lIGlmZiB1c2luZyB0aGUgc2FtZSB0cmFuc2ZlciBtb2RlLgorCSAqLworCWlmIChvdGhlci0+YWN0aXZlKSB7CisJCS8qIEZJWE1FOiBpcyB0aGlzIGd1YXJhbnRlZWQgYnkgdGhlIGFsc2EgYXBpPyAqLworCQlody0+Zm9ybWF0cyAmPSAoMVVMTCA8PCBpMnNkZXYtPmZvcm1hdCk7CisJCS8qIHNlZSBhYm92ZSwgcmVzdHJpY3QgcmF0ZXMgdG8gdGhlIG9uZSB3ZSBhbHJlYWR5IGhhdmUgKi8KKwkJaHctPnJhdGVfbWluID0gaTJzZGV2LT5yYXRlOworCQlody0+cmF0ZV9tYXggPSBpMnNkZXYtPnJhdGU7CisJfQorCisJaHctPmNoYW5uZWxzX21pbiA9IDI7CisJaHctPmNoYW5uZWxzX21heCA9IDI7CisJLyogdGhlc2UgYXJlIHNvbWV3aGF0IGFyYml0cmFyeSAqLworCWh3LT5idWZmZXJfYnl0ZXNfbWF4ID0gMTMxMDcyOworCWh3LT5wZXJpb2RfYnl0ZXNfbWluID0gMjU2OworCWh3LT5wZXJpb2RfYnl0ZXNfbWF4ID0gMTYzODQ7CisJaHctPnBlcmlvZHNfbWluID0gMzsKKwlody0+cGVyaW9kc19tYXggPSBNQVhfREJETUFfQ09NTUFORFM7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjaWksICZzZGV2LT5jb2RlY19saXN0LCBsaXN0KSB7CisJCWlmIChjaWktPmNvZGVjLT5vcGVuKSB7CisJCQllcnIgPSBjaWktPmNvZGVjLT5vcGVuKGNpaSwgcGktPnN1YnN0cmVhbSk7CisJCQlpZiAoZXJyKSB7CisJCQkJcmVzdWx0ID0gZXJyOworCQkJCS8qIHVud2luZCAqLworCQkJCWZvdW5kX3RoaXMgPSAwOworCQkJCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShyZXYsCisJCQkJICAgICZzZGV2LT5jb2RlY19saXN0LCBsaXN0KSB7CisJCQkJCWlmIChmb3VuZF90aGlzICYmIHJldi0+Y29kZWMtPmNsb3NlKSB7CisJCQkJCQlyZXYtPmNvZGVjLT5jbG9zZShyZXYsCisJCQkJCQkJCXBpLT5zdWJzdHJlYW0pOworCQkJCQl9CisJCQkJCWlmIChyZXYgPT0gY2lpKQorCQkJCQkJZm91bmRfdGhpcyA9IDE7CisJCQkJfQorCQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCX0KKwkJfQorCX0KKworIG91dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZpMnNkZXYtPmxvY2spOworCXJldHVybiByZXN1bHQ7Cit9CisKKyN1bmRlZiBDSEVDS19SQVRFCisKK3N0YXRpYyBpbnQgaTJzYnVzX3BjbV9jbG9zZShzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LCBpbnQgaW4pCit7CisJc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpOworCXN0cnVjdCBwY21faW5mbyAqcGk7CisJaW50IGVyciA9IDAsIHRtcDsKKworCW11dGV4X2xvY2soJmkyc2Rldi0+bG9jayk7CisKKwlnZXRfcGNtX2luZm8oaTJzZGV2LCBpbiwgJnBpLCBOVUxMKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2lpLCAmaTJzZGV2LT5zb3VuZC5jb2RlY19saXN0LCBsaXN0KSB7CisJCWlmIChjaWktPmNvZGVjLT5jbG9zZSkgeworCQkJdG1wID0gY2lpLT5jb2RlYy0+Y2xvc2UoY2lpLCBwaS0+c3Vic3RyZWFtKTsKKwkJCWlmICh0bXApCisJCQkJZXJyID0gdG1wOworCQl9CisJfQorCisJcGktPnN1YnN0cmVhbSA9IE5VTEw7CisJcGktPmFjdGl2ZSA9IDA7CisJbXV0ZXhfdW5sb2NrKCZpMnNkZXYtPmxvY2spOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJCSAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykKK3sKKwlyZXR1cm4gc25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzKHN1YnN0cmVhbSwgcGFyYW1zX2J1ZmZlcl9ieXRlcyhwYXJhbXMpKTsKK30KKworc3RhdGljIGludCBpMnNidXNfaHdfZnJlZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzbmRfcGNtX2xpYl9mcmVlX3BhZ2VzKHN1YnN0cmVhbSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX3BjbV9wcmVwYXJlKHN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYsIGludCBpbikKK3sKKwkvKiB3aGVlLiBIYXJkIHdvcmsgbm93LiBUaGUgdXNlciBoYXMgc2VsZWN0ZWQgYSBiaXRyYXRlCisJICogYW5kIGJpdCBmb3JtYXQsIHNvIG5vdyB3ZSBoYXZlIHRvIHByb2dyYW0gb3VyCisJICogSTJTIGNvbnRyb2xsZXIgYXBwcm9wcmlhdGVseS4gKi8KKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lOworCXN0cnVjdCBkYmRtYV9jbWQgKmNvbW1hbmQ7CisJaW50IGksIHBlcmlvZHNpemU7CisJZG1hX2FkZHJfdCBvZmZzZXQ7CisJc3RydWN0IGJ1c19pbmZvIGJpOworCXN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaTsKKwlpbnQgc2ZyID0gMDsJCS8qIHNlcmlhbCBmb3JtYXQgcmVnaXN0ZXIgKi8KKwlpbnQgZHdzID0gMDsJCS8qIGRhdGEgd29yZCBzaXplcyByZWcgKi8KKwlpbnQgaW5wdXRfMTZiaXQ7CisJc3RydWN0IHBjbV9pbmZvICpwaSwgKm90aGVyOworCWludCBjbnQ7CisJaW50IHJlc3VsdCA9IDA7CisKKwltdXRleF9sb2NrKCZpMnNkZXYtPmxvY2spOworCisJZ2V0X3BjbV9pbmZvKGkyc2RldiwgaW4sICZwaSwgJm90aGVyKTsKKworCWlmIChwaS0+ZGJkbWFfcmluZy5ydW5uaW5nKSB7CisJCXJlc3VsdCA9IC1FQlVTWTsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCXJ1bnRpbWUgPSBwaS0+c3Vic3RyZWFtLT5ydW50aW1lOworCXBpLT5hY3RpdmUgPSAxOworCWlmIChvdGhlci0+YWN0aXZlICYmCisJICAgICgoaTJzZGV2LT5mb3JtYXQgIT0gcnVudGltZS0+Zm9ybWF0KQorCSAgICAgfHwgKGkyc2Rldi0+cmF0ZSAhPSBydW50aW1lLT5yYXRlKSkpIHsKKwkJcmVzdWx0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCWkyc2Rldi0+Zm9ybWF0ID0gcnVudGltZS0+Zm9ybWF0OworCWkyc2Rldi0+cmF0ZSA9IHJ1bnRpbWUtPnJhdGU7CisKKwlwZXJpb2RzaXplID0gc25kX3BjbV9saWJfcGVyaW9kX2J5dGVzKHBpLT5zdWJzdHJlYW0pOworCXBpLT5jdXJyZW50X3BlcmlvZCA9IDA7CisKKwkvKiBnZW5lcmF0ZSBkYmRtYSBjb21tYW5kIHJpbmcgZmlyc3QgKi8KKwljb21tYW5kID0gcGktPmRiZG1hX3JpbmcuY21kczsKKwlvZmZzZXQgPSBydW50aW1lLT5kbWFfYWRkcjsKKwlmb3IgKGkgPSAwOyBpIDwgcGktPnN1YnN0cmVhbS0+cnVudGltZS0+cGVyaW9kczsKKwkgICAgIGkrKywgY29tbWFuZCsrLCBvZmZzZXQgKz0gcGVyaW9kc2l6ZSkgeworCQltZW1zZXQoY29tbWFuZCwgMCwgc2l6ZW9mKHN0cnVjdCBkYmRtYV9jbWQpKTsKKwkJY29tbWFuZC0+Y29tbWFuZCA9CisJCSAgICBjcHVfdG9fbGUxNigoaW4gPyBJTlBVVF9NT1JFIDogT1VUUFVUX01PUkUpIHwgSU5UUl9BTFdBWVMpOworCQljb21tYW5kLT5waHlfYWRkciA9IGNwdV90b19sZTMyKG9mZnNldCk7CisJCWNvbW1hbmQtPnJlcV9jb3VudCA9IGNwdV90b19sZTE2KHBlcmlvZHNpemUpOworCQljb21tYW5kLT54ZmVyX3N0YXR1cyA9IGNwdV90b19sZTE2KDApOworCX0KKwkvKiBsYXN0IG9uZSBicmFuY2hlcyBiYWNrIHRvIGZpcnN0ICovCisJY29tbWFuZC0tOworCWNvbW1hbmQtPmNvbW1hbmQgfD0gY3B1X3RvX2xlMTYoQlJfQUxXQVlTKTsKKwljb21tYW5kLT5jbWRfZGVwID0gY3B1X3RvX2xlMzIocGktPmRiZG1hX3JpbmcuYnVzX2NtZF9zdGFydCk7CisKKwkvKiBvaywgbGV0J3Mgc2V0IHRoZSBzZXJpYWwgZm9ybWF0IGFuZCBzdHVmZiAqLworCXN3aXRjaCAocnVudGltZS0+Zm9ybWF0KSB7CisJLyogMTYgYml0IGZvcm1hdHMgKi8KKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzE2X0JFOgorCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9VMTZfQkU6CisJCS8qIEZJWE1FOiBpZiB3ZSBhZGQgZGlmZmVyZW50IGJ1cyBmYWN0b3JzIHdlIG5lZWQgdG8KKwkJICogZG8gbW9yZSBoZXJlISEgKi8KKwkJYmkuYnVzX2ZhY3RvciA9IDA7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2lpLCAmaTJzZGV2LT5zb3VuZC5jb2RlY19saXN0LCBsaXN0KSB7CisJCQliaS5idXNfZmFjdG9yID0gY2lpLT5jb2RlYy0+YnVzX2ZhY3RvcjsKKwkJCWJyZWFrOworCQl9CisJCWlmICghYmkuYnVzX2ZhY3RvcikgeworCQkJcmVzdWx0ID0gLUVOT0RFVjsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCQlpbnB1dF8xNmJpdCA9IDE7CisJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMzJfQkU6CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1UzMl9CRToKKwkJLyogZm9yY2UgNjR4IGJ1cyBzcGVlZCwgb3RoZXJ3aXNlIHRoZSBkYXRhIGNhbm5vdCBiZQorCQkgKiB0cmFuc2ZlcnJlZCBxdWlja2x5IGVub3VnaCEgKi8KKwkJYmkuYnVzX2ZhY3RvciA9IDY0OworCQlpbnB1dF8xNmJpdCA9IDA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJlc3VsdCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisJLyogd2UgYXNzdW1lIGFsbCBzeXNjbG9ja3MgYXJlIHRoZSBzYW1lISAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2lpLCAmaTJzZGV2LT5zb3VuZC5jb2RlY19saXN0LCBsaXN0KSB7CisJCWJpLnN5c2Nsb2NrX2ZhY3RvciA9IGNpaS0+Y29kZWMtPnN5c2Nsb2NrX2ZhY3RvcjsKKwkJYnJlYWs7CisJfQorCisJaWYgKGNsb2NrX2FuZF9kaXZpc29ycyhiaS5zeXNjbG9ja19mYWN0b3IsCisJCQkgICAgICAgYmkuYnVzX2ZhY3RvciwKKwkJCSAgICAgICBydW50aW1lLT5yYXRlLAorCQkJICAgICAgICZzZnIpIDwgMCkgeworCQlyZXN1bHQgPSAtRUlOVkFMOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCXN3aXRjaCAoYmkuYnVzX2ZhY3RvcikgeworCWNhc2UgMzI6CisJCXNmciB8PSBJMlNfU0ZfU0VSSUFMX0ZPUk1BVF9JMlNfMzJYOworCQlicmVhazsKKwljYXNlIDY0OgorCQlzZnIgfD0gSTJTX1NGX1NFUklBTF9GT1JNQVRfSTJTXzY0WDsKKwkJYnJlYWs7CisJfQorCS8qIEZJWE1FOiBUSElTIEFTU1VNRVMgTUFTVEVSIEFMTCBUSEUgVElNRSAqLworCXNmciB8PSBJMlNfU0ZfU0NMS19NQVNURVI7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkgeworCQlpbnQgZXJyID0gMDsKKwkJaWYgKGNpaS0+Y29kZWMtPnByZXBhcmUpCisJCQllcnIgPSBjaWktPmNvZGVjLT5wcmVwYXJlKGNpaSwgJmJpLCBwaS0+c3Vic3RyZWFtKTsKKwkJaWYgKGVycikgeworCQkJcmVzdWx0ID0gZXJyOworCQkJZ290byBvdXRfdW5sb2NrOworCQl9CisJfQorCS8qIGNvZGVjcyBhcmUgZmluZSB3aXRoIGl0LCBzbyBzZXQgb3VyIGNsb2NrcyAqLworCWlmIChpbnB1dF8xNmJpdCkKKwkJZHdzID0JKDIgPDwgSTJTX0RXU19OVU1fQ0hBTk5FTFNfSU5fU0hJRlQpIHwKKwkJCSgyIDw8IEkyU19EV1NfTlVNX0NIQU5ORUxTX09VVF9TSElGVCkgfAorCQkJSTJTX0RXU19EQVRBX0lOXzE2QklUIHwgSTJTX0RXU19EQVRBX09VVF8xNkJJVDsKKwllbHNlCisJCWR3cyA9CSgyIDw8IEkyU19EV1NfTlVNX0NIQU5ORUxTX0lOX1NISUZUKSB8CisJCQkoMiA8PCBJMlNfRFdTX05VTV9DSEFOTkVMU19PVVRfU0hJRlQpIHwKKwkJCUkyU19EV1NfREFUQV9JTl8yNEJJVCB8IEkyU19EV1NfREFUQV9PVVRfMjRCSVQ7CisKKwkvKiBlYXJseSBleGl0IGlmIGFscmVhZHkgcHJvZ3JhbW1lZCBjb3JyZWN0bHkgKi8KKwkvKiBub3QgbG9ja2luZyB0aGVzZSBpcyBmaW5lIHNpbmNlIHdlIHRvdWNoIHRoZW0gb25seSBpbiB0aGlzIGZ1bmN0aW9uICovCisJaWYgKGluX2xlMzIoJmkyc2Rldi0+aW50ZnJlZ3MtPnNlcmlhbF9mb3JtYXQpID09IHNmcgorCSAmJiBpbl9sZTMyKCZpMnNkZXYtPmludGZyZWdzLT5kYXRhX3dvcmRfc2l6ZXMpID09IGR3cykKKwkJZ290byBvdXRfdW5sb2NrOworCisJLyogbGV0J3Mgbm90aWZ5IHRoZSBjb2RlY3MgYWJvdXQgY2xvY2tzIGdvaW5nIGF3YXkuCisJICogRm9yIG5vdyB3ZSBvbmx5IGRvIG1hc3RlcmluZyBvbiB0aGUgaTJzIGNlbGwuLi4gKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkKKwkJaWYgKGNpaS0+Y29kZWMtPnN3aXRjaF9jbG9jaykKKwkJCWNpaS0+Y29kZWMtPnN3aXRjaF9jbG9jayhjaWksIENMT0NLX1NXSVRDSF9QUkVQQVJFX1NMQVZFKTsKKworCWkyc2J1c19jb250cm9sX2VuYWJsZShpMnNkZXYtPmNvbnRyb2wsIGkyc2Rldik7CisJaTJzYnVzX2NvbnRyb2xfY2VsbChpMnNkZXYtPmNvbnRyb2wsIGkyc2RldiwgMSk7CisKKwlvdXRfbGUzMigmaTJzZGV2LT5pbnRmcmVncy0+aW50cl9jdGwsIEkyU19QRU5ESU5HX0NMT0NLU19TVE9QUEVEKTsKKworCWkyc2J1c19jb250cm9sX2Nsb2NrKGkyc2Rldi0+Y29udHJvbCwgaTJzZGV2LCAwKTsKKworCW1zbGVlcCgxKTsKKworCS8qIHdhaXQgZm9yIGNsb2NrIHN0b3BwZWQuIFRoaXMgY2FuIGFwcGFyZW50bHkgdGFrZSBhIHdoaWxlLi4uICovCisJY250ID0gMTAwOworCXdoaWxlIChjbnQtLSAmJgorCSAgICAhKGluX2xlMzIoJmkyc2Rldi0+aW50ZnJlZ3MtPmludHJfY3RsKSAmIEkyU19QRU5ESU5HX0NMT0NLU19TVE9QUEVEKSkgeworCQltc2xlZXAoNSk7CisJfQorCW91dF9sZTMyKCZpMnNkZXYtPmludGZyZWdzLT5pbnRyX2N0bCwgSTJTX1BFTkRJTkdfQ0xPQ0tTX1NUT1BQRUQpOworCisJLyogbm90IGxvY2tpbmcgdGhlc2UgaXMgZmluZSBzaW5jZSB3ZSB0b3VjaCB0aGVtIG9ubHkgaW4gdGhpcyBmdW5jdGlvbiAqLworCW91dF9sZTMyKCZpMnNkZXYtPmludGZyZWdzLT5zZXJpYWxfZm9ybWF0LCBzZnIpOworCW91dF9sZTMyKCZpMnNkZXYtPmludGZyZWdzLT5kYXRhX3dvcmRfc2l6ZXMsIGR3cyk7CisKKyAgICAgICAgaTJzYnVzX2NvbnRyb2xfZW5hYmxlKGkyc2Rldi0+Y29udHJvbCwgaTJzZGV2KTsKKyAgICAgICAgaTJzYnVzX2NvbnRyb2xfY2VsbChpMnNkZXYtPmNvbnRyb2wsIGkyc2RldiwgMSk7CisgICAgICAgIGkyc2J1c19jb250cm9sX2Nsb2NrKGkyc2Rldi0+Y29udHJvbCwgaTJzZGV2LCAxKTsKKwltc2xlZXAoMSk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkKKwkJaWYgKGNpaS0+Y29kZWMtPnN3aXRjaF9jbG9jaykKKwkJCWNpaS0+Y29kZWMtPnN3aXRjaF9jbG9jayhjaWksIENMT0NLX1NXSVRDSF9TTEFWRSk7CisKKyBvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmaTJzZGV2LT5sb2NrKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgc3RydWN0IGRiZG1hX2NtZCBTVE9QX0NNRCA9IHsKKwkuY29tbWFuZCA9IF9fY29uc3RhbnRfY3B1X3RvX2xlMTYoREJETUFfU1RPUCksCit9OworCitzdGF0aWMgaW50IGkyc2J1c19wY21fdHJpZ2dlcihzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2LCBpbnQgaW4sIGludCBjbWQpCit7CisJc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpOworCXN0cnVjdCBwY21faW5mbyAqcGk7CisJaW50IHRpbWVvdXQ7CisJc3RydWN0IGRiZG1hX2NtZCB0bXA7CisJaW50IHJlc3VsdCA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZpMnNkZXYtPmxvd19sb2NrLCBmbGFncyk7CisKKwlnZXRfcGNtX2luZm8oaTJzZGV2LCBpbiwgJnBpLCBOVUxMKTsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVEFSVDoKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1JFU1VNRToKKwkJaWYgKHBpLT5kYmRtYV9yaW5nLnJ1bm5pbmcpIHsKKwkJCXJlc3VsdCA9IC1FQUxSRUFEWTsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkKKwkJCWlmIChjaWktPmNvZGVjLT5zdGFydCkKKwkJCQljaWktPmNvZGVjLT5zdGFydChjaWksIHBpLT5zdWJzdHJlYW0pOworCQlwaS0+ZGJkbWFfcmluZy5ydW5uaW5nID0gMTsKKworCQkvKiByZXNldCBkbWEgZW5naW5lICovCisJCW91dF9sZTMyKCZwaS0+ZGJkbWEtPmNvbnRyb2wsCisJCQkgMCB8IChSVU4gfCBQQVVTRSB8IEZMVVNIIHwgV0FLRSkgPDwgMTYpOworCQl0aW1lb3V0ID0gMTAwOworCQl3aGlsZSAoaW5fbGUzMigmcGktPmRiZG1hLT5zdGF0dXMpICYgUlVOICYmIHRpbWVvdXQtLSkKKwkJCXVkZWxheSgxKTsKKwkJaWYgKHRpbWVvdXQgPD0gMCkgeworCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkgICAgICAgImkyc2J1czogZXJyb3Igd2FpdGluZyBmb3IgZG1hIHJlc2V0XG4iKTsKKwkJCXJlc3VsdCA9IC1FTlhJTzsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCisJCS8qIHdyaXRlIGRtYSBjb21tYW5kIGJ1ZmZlciBhZGRyZXNzIHRvIHRoZSBkYmRtYSBjaGlwICovCisJCW91dF9sZTMyKCZwaS0+ZGJkbWEtPmNtZHB0ciwgcGktPmRiZG1hX3JpbmcuYnVzX2NtZF9zdGFydCk7CisJCS8qIHBvc3QgUENJIHdyaXRlICovCisJCW1iKCk7CisJCSh2b2lkKWluX2xlMzIoJnBpLT5kYmRtYS0+c3RhdHVzKTsKKworCQkvKiBjaGFuZ2UgZmlyc3QgY29tbWFuZCB0byBTVE9QICovCisJCXRtcCA9ICpwaS0+ZGJkbWFfcmluZy5jbWRzOworCQkqcGktPmRiZG1hX3JpbmcuY21kcyA9IFNUT1BfQ01EOworCisJCS8qIHNldCBydW5uaW5nIHN0YXRlLCByZW1lbWJlciB0aGF0IHRoZSBmaXJzdCBjb21tYW5kIGlzIFNUT1AgKi8KKwkJb3V0X2xlMzIoJnBpLT5kYmRtYS0+Y29udHJvbCwgUlVOIHwgKFJVTiA8PCAxNikpOworCQl0aW1lb3V0ID0gMTAwOworCQkvKiB3YWl0IGZvciBTVE9QIHRvIGJlIGV4ZWN1dGVkICovCisJCXdoaWxlIChpbl9sZTMyKCZwaS0+ZGJkbWEtPnN0YXR1cykgJiBBQ1RJVkUgJiYgdGltZW91dC0tKQorCQkJdWRlbGF5KDEpOworCQlpZiAodGltZW91dCA8PSAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIgImkyc2J1czogZXJyb3Igd2FpdGluZyBmb3IgZG1hIHN0b3BcbiIpOworCQkJcmVzdWx0ID0gLUVOWElPOworCQkJZ290byBvdXRfdW5sb2NrOworCQl9CisJCS8qIGFnYWluLCB3cml0ZSBkbWEgY29tbWFuZCBidWZmZXIgYWRkcmVzcyB0byB0aGUgZGJkbWEgY2hpcCwKKwkJICogdGhpcyB0aW1lIG9mIHRoZSBmaXJzdCByZWFsIGNvbW1hbmQgKi8KKwkJKnBpLT5kYmRtYV9yaW5nLmNtZHMgPSB0bXA7CisJCW91dF9sZTMyKCZwaS0+ZGJkbWEtPmNtZHB0ciwgcGktPmRiZG1hX3JpbmcuYnVzX2NtZF9zdGFydCk7CisJCS8qIHBvc3Qgd3JpdGUgKi8KKwkJbWIoKTsKKwkJKHZvaWQpaW5fbGUzMigmcGktPmRiZG1hLT5zdGF0dXMpOworCisJCS8qIHJlc2V0IGRtYSBlbmdpbmUgYWdhaW4gKi8KKwkJb3V0X2xlMzIoJnBpLT5kYmRtYS0+Y29udHJvbCwKKwkJCSAwIHwgKFJVTiB8IFBBVVNFIHwgRkxVU0ggfCBXQUtFKSA8PCAxNik7CisJCXRpbWVvdXQgPSAxMDA7CisJCXdoaWxlIChpbl9sZTMyKCZwaS0+ZGJkbWEtPnN0YXR1cykgJiBSVU4gJiYgdGltZW91dC0tKQorCQkJdWRlbGF5KDEpOworCQlpZiAodGltZW91dCA8PSAwKSB7CisJCQlwcmludGsoS0VSTl9FUlIKKwkJCSAgICAgICAiaTJzYnVzOiBlcnJvciB3YWl0aW5nIGZvciBkbWEgcmVzZXRcbiIpOworCQkJcmVzdWx0ID0gLUVOWElPOworCQkJZ290byBvdXRfdW5sb2NrOworCQl9CisKKwkJLyogd2FrZSB1cCB0aGUgY2hpcCB3aXRoIHRoZSBuZXh0IGRlc2NyaXB0b3IgKi8KKwkJb3V0X2xlMzIoJnBpLT5kYmRtYS0+Y29udHJvbCwKKwkJCSAoUlVOIHwgV0FLRSkgfCAoKFJVTiB8IFdBS0UpIDw8IDE2KSk7CisJCS8qIGdldCB0aGUgZnJhbWUgY291bnQgICovCisJCXBpLT5mcmFtZV9jb3VudCA9IGluX2xlMzIoJmkyc2Rldi0+aW50ZnJlZ3MtPmZyYW1lX2NvdW50KTsKKworCQkvKiBvZmYgeW91IGdvISAqLworCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVVNQRU5EOgorCQlpZiAoIXBpLT5kYmRtYV9yaW5nLnJ1bm5pbmcpIHsKKwkJCXJlc3VsdCA9IC1FQUxSRUFEWTsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQorCisJCS8qIHR1cm4gb2ZmIGFsbCByZWxldmFudCBiaXRzICovCisJCW91dF9sZTMyKCZwaS0+ZGJkbWEtPmNvbnRyb2wsCisJCQkgKFJVTiB8IFdBS0UgfCBGTFVTSCB8IFBBVVNFKSA8PCAxNik7CisJCXsKKwkJCS8qIEZJWE1FOiBtb3ZlIHRvIG93biBmdW5jdGlvbiAqLworCQkJaW50IHRpbWVvdXQgPSA1MDAwOworCQkJd2hpbGUgKChpbl9sZTMyKCZwaS0+ZGJkbWEtPnN0YXR1cykgJiBSVU4pCisJCQkgICAgICAgJiYgLS10aW1lb3V0ID4gMCkKKwkJCQl1ZGVsYXkoMSk7CisJCQlpZiAoIXRpbWVvdXQpCisJCQkJcHJpbnRrKEtFUk5fRVJSCisJCQkJICAgICAgICJpMnNidXM6IHRpbWVkIG91dCB0dXJuaW5nICIKKwkJCQkgICAgICAgIm9mZiBkYmRtYSBlbmdpbmUhXG4iKTsKKwkJfQorCisJCXBpLT5kYmRtYV9yaW5nLnJ1bm5pbmcgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkKKwkJCWlmIChjaWktPmNvZGVjLT5zdG9wKQorCQkJCWNpaS0+Y29kZWMtPnN0b3AoY2lpLCBwaS0+c3Vic3RyZWFtKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmVzdWx0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworIG91dF91bmxvY2s6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTJzZGV2LT5sb3dfbG9jaywgZmxhZ3MpOworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBpMnNidXNfcGNtX3BvaW50ZXIoc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiwgaW50IGluKQoreworCXN0cnVjdCBwY21faW5mbyAqcGk7CisJdTMyIGZjOworCisJZ2V0X3BjbV9pbmZvKGkyc2RldiwgaW4sICZwaSwgTlVMTCk7CisKKwlmYyA9IGluX2xlMzIoJmkyc2Rldi0+aW50ZnJlZ3MtPmZyYW1lX2NvdW50KTsKKwlmYyA9IGZjIC0gcGktPmZyYW1lX2NvdW50OworCisJcmV0dXJuIChieXRlc190b19mcmFtZXMocGktPnN1YnN0cmVhbS0+cnVudGltZSwKKwkJCXBpLT5jdXJyZW50X3BlcmlvZCAqCisJCQlzbmRfcGNtX2xpYl9wZXJpb2RfYnl0ZXMocGktPnN1YnN0cmVhbSkpCisJCSsgZmMpICUgcGktPnN1YnN0cmVhbS0+cnVudGltZS0+YnVmZmVyX3NpemU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfaW50ZXJydXB0KHN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYsIGludCBpbikKK3sKKwlzdHJ1Y3QgcGNtX2luZm8gKnBpOworCXUzMiBmYzsKKwl1MzIgZGVsdGE7CisKKwlzcGluX2xvY2soJmkyc2Rldi0+bG93X2xvY2spOworCWdldF9wY21faW5mbyhpMnNkZXYsIGluLCAmcGksIE5VTEwpOworCisJaWYgKCFwaS0+ZGJkbWFfcmluZy5ydW5uaW5nKSB7CisJCS8qIHRoZXJlIHdhcyBzdGlsbCBhbiBpbnRlcnJ1cHQgcGVuZGluZworCQkgKiB3aGlsZSB3ZSBzdG9wcGVkLiBvciBtYXliZSBhbm90aGVyCisJCSAqIHByb2Nlc3NvciAobm90IHRoZSBvbmUgdGhhdCB3YXMgc3RvcHBpbmcKKwkJICogdGhlIERNQSBlbmdpbmUpIHdhcyBzcGlubmluZyBhYm92ZQorCQkgKiB3YWl0aW5nIGZvciB0aGUgbG9jay4gKi8KKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCWZjID0gaW5fbGUzMigmaTJzZGV2LT5pbnRmcmVncy0+ZnJhbWVfY291bnQpOworCS8qIGEgY291bnRlciBvdmVyZmxvdyBkb2VzIG5vdCBjaGFuZ2UgdGhlIGNhbGN1bGF0aW9uLiAqLworCWRlbHRhID0gZmMgLSBwaS0+ZnJhbWVfY291bnQ7CisKKwkvKiB1cGRhdGUgY3VycmVudF9wZXJpb2QgKi8KKwl3aGlsZSAoZGVsdGEgPj0gcGktPnN1YnN0cmVhbS0+cnVudGltZS0+cGVyaW9kX3NpemUpIHsKKwkJcGktPmN1cnJlbnRfcGVyaW9kKys7CisJCWRlbHRhID0gZGVsdGEgLSBwaS0+c3Vic3RyZWFtLT5ydW50aW1lLT5wZXJpb2Rfc2l6ZTsKKwl9CisKKwlpZiAodW5saWtlbHkoZGVsdGEpKSB7CisJCS8qIFNvbWUgaW50ZXJydXB0IGNhbWUgbGF0ZSwgc28gY2hlY2sgdGhlIGRiZG1hLgorCQkgKiBUaGlzIHNwZWNpYWwgY2FzZSBleGlzdHMgdG8gc3luY3Jvbml6ZSB0aGUgZnJhbWVfY291bnQgd2l0aAorCQkgKiB0aGUgZGJkbWEgdHJhbnNmZXIsIGJ1dCBpcyBoaXQgZXZlcnkgb25jZSBpbiBhIHdoaWxlLiAqLworCQlpbnQgcGVyaW9kOworCisJCXBlcmlvZCA9IChpbl9sZTMyKCZwaS0+ZGJkbWEtPmNtZHB0cikKKwkJICAgICAgICAtIHBpLT5kYmRtYV9yaW5nLmJ1c19jbWRfc3RhcnQpCisJCQkJLyBzaXplb2Yoc3RydWN0IGRiZG1hX2NtZCk7CisJCXBpLT5jdXJyZW50X3BlcmlvZCA9IHBpLT5jdXJyZW50X3BlcmlvZAorCQkJCQklIHBpLT5zdWJzdHJlYW0tPnJ1bnRpbWUtPnBlcmlvZHM7CisKKwkJd2hpbGUgKHBpLT5jdXJyZW50X3BlcmlvZCAhPSBwZXJpb2QpIHsKKwkJCXBpLT5jdXJyZW50X3BlcmlvZCsrOworCQkJcGktPmN1cnJlbnRfcGVyaW9kICU9IHBpLT5zdWJzdHJlYW0tPnJ1bnRpbWUtPnBlcmlvZHM7CisJCQkvKiBTZXQgZGVsdGEgdG8gemVybywgYXMgdGhlIGZyYW1lX2NvdW50IHZhbHVlIGlzIHRvbworCQkJICogaGlnaCAob3RoZXJ3aXNlIHRoZSBjb2RlIHBhdGggd2lsbCBub3QgYmUgZXhlY3V0ZWQpLgorCQkJICogVGhpcyBjb3JyZWN0cyB0aGUgZmFjdCB0aGF0IHRoZSBmcmFtZV9jb3VudCBpcyB0b28KKwkJCSAqIGxvdyBhdCB0aGUgYmVnaW5uaW5nIGR1ZSB0byBidWZmZXJpbmcuICovCisJCQlkZWx0YSA9IDA7CisJCX0KKwl9CisKKwlwaS0+ZnJhbWVfY291bnQgPSBmYyAtIGRlbHRhOworCXBpLT5jdXJyZW50X3BlcmlvZCAlPSBwaS0+c3Vic3RyZWFtLT5ydW50aW1lLT5wZXJpb2RzOworCisJc3Bpbl91bmxvY2soJmkyc2Rldi0+bG93X2xvY2spOworCS8qIG1heSBjYWxsIF90cmlnZ2VyIGFnYWluLCBoZW5jZSBuZWVkcyB0byBiZSB1bmxvY2tlZCAqLworCXNuZF9wY21fcGVyaW9kX2VsYXBzZWQocGktPnN1YnN0cmVhbSk7CisJcmV0dXJuOworIG91dF91bmxvY2s6CisJc3Bpbl91bmxvY2soJmkyc2Rldi0+bG93X2xvY2spOworfQorCitpcnFyZXR1cm5fdCBpMnNidXNfdHhfaW50cihpbnQgaXJxLCB2b2lkICpkZXZpZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJaGFuZGxlX2ludGVycnVwdCgoc3RydWN0IGkyc2J1c19kZXYgKilkZXZpZCwgMCk7CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitpcnFyZXR1cm5fdCBpMnNidXNfcnhfaW50cihpbnQgaXJxLCB2b2lkICpkZXZpZCwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKQoreworCWhhbmRsZV9pbnRlcnJ1cHQoKHN0cnVjdCBpMnNidXNfZGV2ICopZGV2aWQsIDEpOworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBpMnNidXNfcGxheWJhY2tfb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2ID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCisJaWYgKCFpMnNkZXYpCisJCXJldHVybiAtRUlOVkFMOworCWkyc2Rldi0+b3V0LnN1YnN0cmVhbSA9IHN1YnN0cmVhbTsKKwlyZXR1cm4gaTJzYnVzX3BjbV9vcGVuKGkyc2RldiwgMCk7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX3BsYXliYWNrX2Nsb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisJaW50IGVycjsKKworCWlmICghaTJzZGV2KQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoaTJzZGV2LT5vdXQuc3Vic3RyZWFtICE9IHN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJZXJyID0gaTJzYnVzX3BjbV9jbG9zZShpMnNkZXYsIDApOworCWlmICghZXJyKQorCQlpMnNkZXYtPm91dC5zdWJzdHJlYW0gPSBOVUxMOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX3BsYXliYWNrX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKworCWlmICghaTJzZGV2KQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoaTJzZGV2LT5vdXQuc3Vic3RyZWFtICE9IHN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJcmV0dXJuIGkyc2J1c19wY21fcHJlcGFyZShpMnNkZXYsIDApOworfQorCitzdGF0aWMgaW50IGkyc2J1c19wbGF5YmFja190cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY21kKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisKKwlpZiAoIWkyc2RldikKKwkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGkyc2Rldi0+b3V0LnN1YnN0cmVhbSAhPSBzdWJzdHJlYW0pCisJCXJldHVybiAtRUlOVkFMOworCXJldHVybiBpMnNidXNfcGNtX3RyaWdnZXIoaTJzZGV2LCAwLCBjbWQpOworfQorCitzdGF0aWMgc25kX3BjbV91ZnJhbWVzX3QgaTJzYnVzX3BsYXliYWNrX3BvaW50ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtCisJCQkJCQkgKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2ID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCisJaWYgKCFpMnNkZXYpCisJCXJldHVybiAtRUlOVkFMOworCWlmIChpMnNkZXYtPm91dC5zdWJzdHJlYW0gIT0gc3Vic3RyZWFtKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gaTJzYnVzX3BjbV9wb2ludGVyKGkyc2RldiwgMCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9vcHMgaTJzYnVzX3BsYXliYWNrX29wcyA9IHsKKwkub3BlbiA9CQlpMnNidXNfcGxheWJhY2tfb3BlbiwKKwkuY2xvc2UgPQlpMnNidXNfcGxheWJhY2tfY2xvc2UsCisJLmlvY3RsID0Jc25kX3BjbV9saWJfaW9jdGwsCisJLmh3X3BhcmFtcyA9CWkyc2J1c19od19wYXJhbXMsCisJLmh3X2ZyZWUgPQlpMnNidXNfaHdfZnJlZSwKKwkucHJlcGFyZSA9CWkyc2J1c19wbGF5YmFja19wcmVwYXJlLAorCS50cmlnZ2VyID0JaTJzYnVzX3BsYXliYWNrX3RyaWdnZXIsCisJLnBvaW50ZXIgPQlpMnNidXNfcGxheWJhY2tfcG9pbnRlciwKK307CisKK3N0YXRpYyBpbnQgaTJzYnVzX3JlY29yZF9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisKKwlpZiAoIWkyc2RldikKKwkJcmV0dXJuIC1FSU5WQUw7CisJaTJzZGV2LT5pbi5zdWJzdHJlYW0gPSBzdWJzdHJlYW07CisJcmV0dXJuIGkyc2J1c19wY21fb3BlbihpMnNkZXYsIDEpOworfQorCitzdGF0aWMgaW50IGkyc2J1c19yZWNvcmRfY2xvc2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKwlpbnQgZXJyOworCisJaWYgKCFpMnNkZXYpCisJCXJldHVybiAtRUlOVkFMOworCWlmIChpMnNkZXYtPmluLnN1YnN0cmVhbSAhPSBzdWJzdHJlYW0pCisJCXJldHVybiAtRUlOVkFMOworCWVyciA9IGkyc2J1c19wY21fY2xvc2UoaTJzZGV2LCAxKTsKKwlpZiAoIWVycikKKwkJaTJzZGV2LT5pbi5zdWJzdHJlYW0gPSBOVUxMOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaTJzYnVzX3JlY29yZF9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisKKwlpZiAoIWkyc2RldikKKwkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGkyc2Rldi0+aW4uc3Vic3RyZWFtICE9IHN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJcmV0dXJuIGkyc2J1c19wY21fcHJlcGFyZShpMnNkZXYsIDEpOworfQorCitzdGF0aWMgaW50IGkyc2J1c19yZWNvcmRfdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNtZCkKK3sKKwlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2ID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCisJaWYgKCFpMnNkZXYpCisJCXJldHVybiAtRUlOVkFMOworCWlmIChpMnNkZXYtPmluLnN1YnN0cmVhbSAhPSBzdWJzdHJlYW0pCisJCXJldHVybiAtRUlOVkFMOworCXJldHVybiBpMnNidXNfcGNtX3RyaWdnZXIoaTJzZGV2LCAxLCBjbWQpOworfQorCitzdGF0aWMgc25kX3BjbV91ZnJhbWVzX3QgaTJzYnVzX3JlY29yZF9wb2ludGVyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbQorCQkJCQkgICAgICAgKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2ID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworCisJaWYgKCFpMnNkZXYpCisJCXJldHVybiAtRUlOVkFMOworCWlmIChpMnNkZXYtPmluLnN1YnN0cmVhbSAhPSBzdWJzdHJlYW0pCisJCXJldHVybiAwOworCXJldHVybiBpMnNidXNfcGNtX3BvaW50ZXIoaTJzZGV2LCAxKTsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfcGNtX29wcyBpMnNidXNfcmVjb3JkX29wcyA9IHsKKwkub3BlbiA9CQlpMnNidXNfcmVjb3JkX29wZW4sCisJLmNsb3NlID0JaTJzYnVzX3JlY29yZF9jbG9zZSwKKwkuaW9jdGwgPQlzbmRfcGNtX2xpYl9pb2N0bCwKKwkuaHdfcGFyYW1zID0JaTJzYnVzX2h3X3BhcmFtcywKKwkuaHdfZnJlZSA9CWkyc2J1c19od19mcmVlLAorCS5wcmVwYXJlID0JaTJzYnVzX3JlY29yZF9wcmVwYXJlLAorCS50cmlnZ2VyID0JaTJzYnVzX3JlY29yZF90cmlnZ2VyLAorCS5wb2ludGVyID0JaTJzYnVzX3JlY29yZF9wb2ludGVyLAorfTsKKworc3RhdGljIHZvaWQgaTJzYnVzX3ByaXZhdGVfZnJlZShzdHJ1Y3Qgc25kX3BjbSAqcGNtKQoreworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzbmRfcGNtX2NoaXAocGNtKTsKKwlzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpwLCAqdG1wOworCisJaTJzZGV2LT5zb3VuZC5wY20gPSBOVUxMOworCWkyc2Rldi0+b3V0LmNyZWF0ZWQgPSAwOworCWkyc2Rldi0+aW4uY3JlYXRlZCA9IDA7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIHRtcCwgJmkyc2Rldi0+c291bmQuY29kZWNfbGlzdCwgbGlzdCkgeworCQlwcmludGsoS0VSTl9FUlIgImkyc2J1czogYSBjb2RlYyBkaWRuJ3QgdW5yZWdpc3RlciFcbiIpOworCQlsaXN0X2RlbCgmcC0+bGlzdCk7CisJCW1vZHVsZV9wdXQocC0+Y29kZWMtPm93bmVyKTsKKwkJa2ZyZWUocCk7CisJfQorCXNvdW5kYnVzX2Rldl9wdXQoJmkyc2Rldi0+c291bmQpOworCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOworfQorCisvKiBGSVhNRTogdGhpcyBmdW5jdGlvbiBuZWVkcyBhbiBlcnJvciBoYW5kbGluZyBzdHJhdGVneSB3aXRoIGxhYmVscyAqLworaW50CitpMnNidXNfYXR0YWNoX2NvZGVjKHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldiwgc3RydWN0IHNuZF9jYXJkICpjYXJkLAorCQkgICAgc3RydWN0IGNvZGVjX2luZm8gKmNpLCB2b2lkICpkYXRhKQoreworCWludCBlcnIsIGluID0gMCwgb3V0ID0gMDsKKwlzdHJ1Y3QgdHJhbnNmZXJfaW5mbyAqdG1wOworCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYgPSBzb3VuZGJ1c19kZXZfdG9faTJzYnVzX2RldihkZXYpOworCXN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaTsKKworCWlmICghZGV2LT5wY21uYW1lIHx8IGRldi0+cGNtaWQgPT0gLTEpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJpMnNidXM6IHBjbSBuYW1lIGFuZCBpZCBtdXN0IGJlIHNldCFcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmRldi0+Y29kZWNfbGlzdCwgbGlzdCkgeworCQlpZiAoY2lpLT5jb2RlY19kYXRhID09IGRhdGEpCisJCQlyZXR1cm4gLUVBTFJFQURZOworCX0KKworCWlmICghY2ktPnRyYW5zZmVycyB8fCAhY2ktPnRyYW5zZmVycy0+Zm9ybWF0cworCSAgICB8fCAhY2ktPnRyYW5zZmVycy0+cmF0ZXMgfHwgIWNpLT51c2FibGUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogd2UgY3VycmVudGx5IGNvZGUgdGhlIGkycyB0cmFuc2ZlciBvbiB0aGUgY2xvY2ssIGFuZCBzdXBwb3J0IG9ubHkKKwkgKiAzMiBhbmQgNjQgKi8KKwlpZiAoY2ktPmJ1c19mYWN0b3IgIT0gMzIgJiYgY2ktPmJ1c19mYWN0b3IgIT0gNjQpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogSWYgeW91IHdhbnQgdG8gZml4IHRoaXMsIHlvdSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCB0cmFuc3BvcnQgaW5mb3MKKwkgKiBhcmUgdG8gYmUgdXNlZCwgd2hpY2ggY29kZWNzIHRoZXkgYmVsb25nIHRvLCBhbmQgdGhlbiBmaXggYWxsIHRoZQorCSAqIHN5c2Nsb2NrL2J1c2Nsb2NrIHN0dWZmIGFib3ZlIHRvIGRlcGVuZCBvbiB3aGljaCBpcyB1c2FibGUgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNpaSwgJmRldi0+Y29kZWNfbGlzdCwgbGlzdCkgeworCQlpZiAoY2lpLT5jb2RlYy0+c3lzY2xvY2tfZmFjdG9yICE9IGNpLT5zeXNjbG9ja19mYWN0b3IpIHsKKwkJCXByaW50ayhLRVJOX0RFQlVHCisJCQkgICAgICAgImNhbm5vdCB5ZXQgaGFuZGxlIG11bHRpcGxlIGRpZmZlcmVudCBzeXNjbG9ja3MhXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCWlmIChjaWktPmNvZGVjLT5idXNfZmFjdG9yICE9IGNpLT5idXNfZmFjdG9yKSB7CisJCQlwcmludGsoS0VSTl9ERUJVRworCQkJICAgICAgICJjYW5ub3QgeWV0IGhhbmRsZSBtdWx0aXBsZSBkaWZmZXJlbnQgYnVzIGNsb2NrcyFcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisKKwl0bXAgPSBjaS0+dHJhbnNmZXJzOworCXdoaWxlICh0bXAtPmZvcm1hdHMgJiYgdG1wLT5yYXRlcykgeworCQlpZiAodG1wLT50cmFuc2Zlcl9pbikKKwkJCWluID0gMTsKKwkJZWxzZQorCQkJb3V0ID0gMTsKKwkJdG1wKys7CisJfQorCisJY2lpID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNvZGVjX2luZm9faXRlbSksIEdGUF9LRVJORUwpOworCWlmICghY2lpKSB7CisJCXByaW50ayhLRVJOX0RFQlVHICJpMnNidXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBjaWlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiB1c2UgdGhlIHByaXZhdGUgZGF0YSB0byBwb2ludCB0byB0aGUgY29kZWMgaW5mbyAqLworCWNpaS0+c2RldiA9IHNvdW5kYnVzX2Rldl9nZXQoZGV2KTsKKwljaWktPmNvZGVjID0gY2k7CisJY2lpLT5jb2RlY19kYXRhID0gZGF0YTsKKworCWlmICghY2lpLT5zZGV2KSB7CisJCXByaW50ayhLRVJOX0RFQlVHCisJCSAgICAgICAiaTJzYnVzOiBmYWlsZWQgdG8gZ2V0IHNvdW5kYnVzIGRldiByZWZlcmVuY2VcbiIpOworCQlrZnJlZShjaWkpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlpZiAoIXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKSkgeworCQlwcmludGsoS0VSTl9ERUJVRyAiaTJzYnVzOiBmYWlsZWQgdG8gZ2V0IG1vZHVsZSByZWZlcmVuY2UhXG4iKTsKKwkJc291bmRidXNfZGV2X3B1dChkZXYpOworCQlrZnJlZShjaWkpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKworCWlmICghdHJ5X21vZHVsZV9nZXQoY2ktPm93bmVyKSkgeworCQlwcmludGsoS0VSTl9ERUJVRworCQkgICAgICAgImkyc2J1czogZmFpbGVkIHRvIGdldCBtb2R1bGUgcmVmZXJlbmNlIHRvIGNvZGVjIG93bmVyIVxuIik7CisJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOworCQlzb3VuZGJ1c19kZXZfcHV0KGRldik7CisJCWtmcmVlKGNpaSk7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJaWYgKCFkZXYtPnBjbSkgeworCQllcnIgPSBzbmRfcGNtX25ldyhjYXJkLAorCQkJCSAgZGV2LT5wY21uYW1lLAorCQkJCSAgZGV2LT5wY21pZCwKKwkJCQkgIDAsCisJCQkJICAwLAorCQkJCSAgJmRldi0+cGNtKTsKKwkJaWYgKGVycikgeworCQkJcHJpbnRrKEtFUk5fREVCVUcgImkyc2J1czogZmFpbGVkIHRvIGNyZWF0ZSBwY21cbiIpOworCQkJa2ZyZWUoY2lpKTsKKwkJCW1vZHVsZV9wdXQoY2ktPm93bmVyKTsKKwkJCXNvdW5kYnVzX2Rldl9wdXQoZGV2KTsKKwkJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCX0KKworCS8qIEFMU0EgeWV0IGFnYWluIHN1Y2tzLgorCSAqIElmIGl0IGlzIGV2ZXIgZml4ZWQsIHJlbW92ZSB0aGlzIGxpbmUuIFNlZSBiZWxvdy4gKi8KKwlvdXQgPSBpbiA9IDE7CisKKwlpZiAoIWkyc2Rldi0+b3V0LmNyZWF0ZWQgJiYgb3V0KSB7CisJCWlmIChkZXYtPnBjbS0+Y2FyZCAhPSBjYXJkKSB7CisJCQkvKiBlaD8gKi8KKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJDYW4ndCBhdHRhY2ggc2FtZSBidXMgdG8gZGlmZmVyZW50IGNhcmRzIVxuIik7CisJCQltb2R1bGVfcHV0KGNpLT5vd25lcik7CisJCQlrZnJlZShjaWkpOworCQkJc291bmRidXNfZGV2X3B1dChkZXYpOworCQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoKGVyciA9CisJCSAgICAgc25kX3BjbV9uZXdfc3RyZWFtKGRldi0+cGNtLCBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLCAxKSkpIHsKKwkJCW1vZHVsZV9wdXQoY2ktPm93bmVyKTsKKwkJCWtmcmVlKGNpaSk7CisJCQlzb3VuZGJ1c19kZXZfcHV0KGRldik7CisJCQltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKKwkJCXJldHVybiBlcnI7CisJCX0KKwkJc25kX3BjbV9zZXRfb3BzKGRldi0+cGNtLCBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLAorCQkJCSZpMnNidXNfcGxheWJhY2tfb3BzKTsKKwkJaTJzZGV2LT5vdXQuY3JlYXRlZCA9IDE7CisJfQorCisJaWYgKCFpMnNkZXYtPmluLmNyZWF0ZWQgJiYgaW4pIHsKKwkJaWYgKGRldi0+cGNtLT5jYXJkICE9IGNhcmQpIHsKKwkJCXByaW50ayhLRVJOX0VSUgorCQkJICAgICAgICJDYW4ndCBhdHRhY2ggc2FtZSBidXMgdG8gZGlmZmVyZW50IGNhcmRzIVxuIik7CisJCQltb2R1bGVfcHV0KGNpLT5vd25lcik7CisJCQlrZnJlZShjaWkpOworCQkJc291bmRidXNfZGV2X3B1dChkZXYpOworCQkJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlpZiAoKGVyciA9CisJCSAgICAgc25kX3BjbV9uZXdfc3RyZWFtKGRldi0+cGNtLCBTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsIDEpKSkgeworCQkJbW9kdWxlX3B1dChjaS0+b3duZXIpOworCQkJa2ZyZWUoY2lpKTsKKwkJCXNvdW5kYnVzX2Rldl9wdXQoZGV2KTsKKwkJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCQlzbmRfcGNtX3NldF9vcHMoZGV2LT5wY20sIFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKwkJCQkmaTJzYnVzX3JlY29yZF9vcHMpOworCQlpMnNkZXYtPmluLmNyZWF0ZWQgPSAxOworCX0KKworCS8qIHNvIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhlIHBjbSBhZnRlciBhZGRpbmcgYW55IHN1YnN0cmVhbQorCSAqIHRvIGl0IGJlY2F1c2UgYWxzYSBkb2Vzbid0IGNyZWF0ZSB0aGUgZGV2aWNlcyBmb3IgdGhlCisJICogc3Vic3RyZWFtcyB3aGVuIHdlIGFkZCB0aGVtIGxhdGVyLgorCSAqIFRoZXJlZm9yZSwgZm9yY2UgaW4gYW5kIG91dCBvbiBib3RoIGJ1c3NlcyAoYWJvdmUpIGFuZAorCSAqIHJlZ2lzdGVyIHRoZSBwY20gbm93IGluc3RlYWQgb2YganVzdCBhZnRlciBjcmVhdGluZyBpdC4KKwkgKi8KKwllcnIgPSBzbmRfZGV2aWNlX3JlZ2lzdGVyKGNhcmQsIGRldi0+cGNtKTsKKwlpZiAoZXJyKSB7CisJCXByaW50ayhLRVJOX0VSUiAiaTJzYnVzOiBlcnJvciByZWdpc3RlcmluZyBuZXcgcGNtXG4iKTsKKwkJbW9kdWxlX3B1dChjaS0+b3duZXIpOworCQlrZnJlZShjaWkpOworCQlzb3VuZGJ1c19kZXZfcHV0KGRldik7CisJCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOworCQlyZXR1cm4gZXJyOworCX0KKwkvKiBubyBlcnJvcnMgYW55IG1vcmUsIHNvIGxldCdzIGFkZCB0aGlzIHRvIG91ciBsaXN0ICovCisJbGlzdF9hZGQoJmNpaS0+bGlzdCwgJmRldi0+Y29kZWNfbGlzdCk7CisKKwlkZXYtPnBjbS0+cHJpdmF0ZV9kYXRhID0gaTJzZGV2OworCWRldi0+cGNtLT5wcml2YXRlX2ZyZWUgPSBpMnNidXNfcHJpdmF0ZV9mcmVlOworCisJLyogd2VsbCwgd2UgcmVhbGx5IHNob3VsZCBzdXBwb3J0IHNjYXR0ZXIvZ2F0aGVyIERNQSAqLworCXNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwoCisJCWRldi0+cGNtLCBTTkRSVl9ETUFfVFlQRV9ERVYsCisJCXNuZF9kbWFfcGNpX2RhdGEobWFjaW9fZ2V0X3BjaV9kZXYoaTJzZGV2LT5tYWNpbykpLAorCQk2NCAqIDEwMjQsIDY0ICogMTAyNCk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpMnNidXNfZGV0YWNoX2NvZGVjKHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWkgPSBOVUxMLCAqaTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoaSwgJmRldi0+Y29kZWNfbGlzdCwgbGlzdCkgeworCQlpZiAoaS0+Y29kZWNfZGF0YSA9PSBkYXRhKSB7CisJCQljaWkgPSBpOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGNpaSkgeworCQlsaXN0X2RlbCgmY2lpLT5saXN0KTsKKwkJbW9kdWxlX3B1dChjaWktPmNvZGVjLT5vd25lcik7CisJCWtmcmVlKGNpaSk7CisJfQorCS8qIG5vIG1vcmUgY29kZWNzLCBidXQgc3RpbGwgYSBwY20/ICovCisJaWYgKGxpc3RfZW1wdHkoJmRldi0+Y29kZWNfbGlzdCkgJiYgZGV2LT5wY20pIHsKKwkJLyogdGhlIGFjdHVhbCBjbGVhbnVwIGlzIGRvbmUgYnkgdGhlIGNhbGxiYWNrIGFib3ZlISAqLworCQlzbmRfZGV2aWNlX2ZyZWUoZGV2LT5wY20tPmNhcmQsIGRldi0+cGNtKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zb3VuZC9hb2Evc291bmRidXMvaTJzYnVzL2kyc2J1cy5oIGIvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmE1MTYyCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL3NvdW5kYnVzL2kyc2J1cy9pMnNidXMuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIGkyc2J1cyBkcml2ZXIgLS0gcHJpdmF0ZSBkZWZpbml0aW9ucworICoKKyAqIENvcHlyaWdodCAyMDA2IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CisgKgorICogR1BMIHYyLCBjYW4gYmUgZm91bmQgaW4gQ09QWUlORy4KKyAqLworI2lmbmRlZiBfX0kyU0JVU19ICisjZGVmaW5lIF9fSTJTQlVTX0gKKyNpbmNsdWRlIDxhc20vZGJkbWEuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8YXNtL3Byb20uaD4KKyNpbmNsdWRlICJpMnNidXMtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiaTJzYnVzLWNvbnRyb2wuaCIKKyNpbmNsdWRlICIuLi9zb3VuZGJ1cy5oIgorCitzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgeworCXZvbGF0aWxlIHN0cnVjdCBpMnNfY29udHJvbF9yZWdzIF9faW9tZW0gKmNvbnRyb2xyZWdzOworCXN0cnVjdCByZXNvdXJjZSByc3JjOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKKyNkZWZpbmUgTUFYX0RCRE1BX0NPTU1BTkRTCTMyCisKK3N0cnVjdCBkYmRtYV9jb21tYW5kX21lbSB7CisJZG1hX2FkZHJfdCBidXNfYWRkcjsKKwlkbWFfYWRkcl90IGJ1c19jbWRfc3RhcnQ7CisJc3RydWN0IGRiZG1hX2NtZCAqY21kczsKKwl2b2lkICpzcGFjZTsKKwlpbnQgc2l6ZTsKKwl1MzIgcnVubmluZzoxOworfTsKKworc3RydWN0IHBjbV9pbmZvIHsKKwl1MzIgY3JlYXRlZDoxLCAvKiBoYXMgdGhpcyBkaXJlY3Rpb24gYmVlbiBjcmVhdGVkIHdpdGggYWxzYT8gKi8KKwkgICAgYWN0aXZlOjE7ICAvKiBpcyB0aGlzIHN0cmVhbSBhY3RpdmU/ICovCisJLyogcnVudGltZSBpbmZvcm1hdGlvbiAqLworCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworCWludCBjdXJyZW50X3BlcmlvZDsKKwl1MzIgZnJhbWVfY291bnQ7CisJc3RydWN0IGRiZG1hX2NvbW1hbmRfbWVtIGRiZG1hX3Jpbmc7CisJdm9sYXRpbGUgc3RydWN0IGRiZG1hX3JlZ3MgX19pb21lbSAqZGJkbWE7Cit9OworCitzdHJ1Y3QgaTJzYnVzX2RldiB7CisJc3RydWN0IHNvdW5kYnVzX2RldiBzb3VuZDsKKwlzdHJ1Y3QgbWFjaW9fZGV2ICptYWNpbzsKKwlzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmNvbnRyb2w7CisJdm9sYXRpbGUgc3RydWN0IGkyc19pbnRlcmZhY2VfcmVncyBfX2lvbWVtICppbnRmcmVnczsKKworCXN0cnVjdCByZXNvdXJjZSByZXNvdXJjZXNbM107CisJc3RydWN0IHJlc291cmNlICphbGxvY2F0ZWRfcmVzb3VyY2VbM107CisJaW50IGludGVycnVwdHNbM107CisJY2hhciBybmFtZXNbM11bMzJdOworCisJLyogaW5mbyBhYm91dCBjdXJyZW50bHkgYWN0aXZlIHN1YnN0cmVhbXMgKi8KKwlzdHJ1Y3QgcGNtX2luZm8gb3V0LCBpbjsKKwlzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdDsKKwl1bnNpZ25lZCBpbnQgcmF0ZTsKKworCS8qIGxpc3QgZm9yIGEgc2luZ2xlIGNvbnRyb2xsZXIgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGl0ZW07CisJLyogbnVtYmVyIG9mIGJ1cyBvbiBjb250cm9sbGVyICovCisJaW50IGJ1c19udW1iZXI7CisJLyogZm9yIHVzZSBieSBjb250cm9sIGxheWVyICovCisJc3RydWN0IHBtZl9mdW5jdGlvbiAqZW5hYmxlLAorCQkJICAgICpjZWxsX2VuYWJsZSwKKwkJCSAgICAqY2VsbF9kaXNhYmxlLAorCQkJICAgICpjbG9ja19lbmFibGUsCisJCQkgICAgKmNsb2NrX2Rpc2FibGU7CisKKwkvKiBsb2NrcyAqLworCS8qIHNwaW5sb2NrIGZvciBsb3ctbGV2ZWwgaW50ZXJydXB0IGxvY2tpbmcgKi8KKwlzcGlubG9ja190IGxvd19sb2NrOworCS8qIG11dGV4IGZvciBoaWdoLWxldmVsIGNvbnNpc3RlbmN5ICovCisJc3RydWN0IG11dGV4IGxvY2s7Cit9OworCisjZGVmaW5lIHNvdW5kYnVzX2Rldl90b19pMnNidXNfZGV2KHNkZXYpIFwKKwkJY29udGFpbmVyX29mKHNkZXYsIHN0cnVjdCBpMnNidXNfZGV2LCBzb3VuZCkKKworLyogcGNtIHNwZWNpZmljIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGludAoraTJzYnVzX2F0dGFjaF9jb2RlYyhzdHJ1Y3Qgc291bmRidXNfZGV2ICpkZXYsIHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKKwkJICAgIHN0cnVjdCBjb2RlY19pbmZvICpjaSwgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZAoraTJzYnVzX2RldGFjaF9jb2RlYyhzdHJ1Y3Qgc291bmRidXNfZGV2ICpkZXYsIHZvaWQgKmRhdGEpOworZXh0ZXJuIGlycXJldHVybl90CitpMnNidXNfdHhfaW50cihpbnQgaXJxLCB2b2lkICpkZXZpZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworZXh0ZXJuIGlycXJldHVybl90CitpMnNidXNfcnhfaW50cihpbnQgaXJxLCB2b2lkICpkZXZpZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworCisvKiBjb250cm9sIHNwZWNpZmljIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGludCBpMnNidXNfY29udHJvbF9pbml0KHN0cnVjdCBtYWNpb19kZXYqIGRldiwKKwkJCSAgICAgICBzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKipjKTsKK2V4dGVybiB2b2lkIGkyc2J1c19jb250cm9sX2Rlc3Ryb3koc3RydWN0IGkyc2J1c19jb250cm9sICpjKTsKK2V4dGVybiBpbnQgaTJzYnVzX2NvbnRyb2xfYWRkX2RldihzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmMsCisJCQkJICBzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2KTsKK2V4dGVybiB2b2lkIGkyc2J1c19jb250cm9sX3JlbW92ZV9kZXYoc3RydWN0IGkyc2J1c19jb250cm9sICpjLAorCQkJCSAgICAgIHN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYpOworZXh0ZXJuIGludCBpMnNidXNfY29udHJvbF9lbmFibGUoc3RydWN0IGkyc2J1c19jb250cm9sICpjLAorCQkJCSBzdHJ1Y3QgaTJzYnVzX2RldiAqaTJzZGV2KTsKK2V4dGVybiBpbnQgaTJzYnVzX2NvbnRyb2xfY2VsbChzdHJ1Y3QgaTJzYnVzX2NvbnRyb2wgKmMsCisJCQkgICAgICAgc3RydWN0IGkyc2J1c19kZXYgKmkyc2RldiwKKwkJCSAgICAgICBpbnQgZW5hYmxlKTsKK2V4dGVybiBpbnQgaTJzYnVzX2NvbnRyb2xfY2xvY2soc3RydWN0IGkyc2J1c19jb250cm9sICpjLAorCQkJCXN0cnVjdCBpMnNidXNfZGV2ICppMnNkZXYsCisJCQkJaW50IGVuYWJsZSk7CisjZW5kaWYgLyogX19JMlNCVVNfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL3NvdW5kYnVzLmggYi9zb3VuZC9hb2Evc291bmRidXMvc291bmRidXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI3Mjk3Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL3NvdW5kYnVzL3NvdW5kYnVzLmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBzb3VuZGJ1cyBnZW5lcmljIGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IDIwMDYgSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KKyAqCisgKiBHUEwgdjIsIGNhbiBiZSBmb3VuZCBpbiBDT1BZSU5HLgorICovCisjaWZuZGVmIF9fU09VTkRCVVNfSAorI2RlZmluZSBfX1NPVU5EQlVTX0gKKworI2luY2x1ZGUgPGFzbS9vZl9kZXZpY2UuaD4KKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisKKworLyogV2hlbiBzd2l0Y2hpbmcgZnJvbSBtYXN0ZXIgdG8gc2xhdmUgb3IgdGhlIG90aGVyIHdheSBhcm91bmQsCisgKiB5b3UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoZSBjb2RlYyBjaGlwIGFjdGluZyBhcyBjbG9jayBzb3VyY2UKKyAqIHdoaWxlIHRoZSBidXMgc3RpbGwgaXMuCisgKiBNb3JlIGltcG9ydGFudGx5LCB3aGlsZSBzd2l0Y2ggZnJvbSBzbGF2ZSB0byBtYXN0ZXIsIHlvdSBuZWVkCisgKiB0byB0dXJuIG9mZiB0aGUgY2hpcCdzIG1hc3RlciBmdW5jdGlvbiBmaXJzdCwgYnV0IHRoZW4gdGhlcmUncworICogbm8gY2xvY2sgZm9yIGEgd2hpbGUgYW5kIG90aGVyIGNoaXBzIG1pZ2h0IHJlc2V0LCBzbyB3ZSBub3RpZnkKKyAqIHRoZWlyIGRyaXZlcnMgYWZ0ZXIgaGF2aW5nIHN3aXRjaGVkLgorICogVGhlIGNvbnN0YW50cyBoZXJlIGFyZSBjb2RlYy1wb2ludCBvZiB2aWV3LCBzbyB3aGVuIHdlIHN3aXRjaAorICogdGhlIHNvdW5kYnVzIHRvIG1hc3RlciB3ZSB0ZWxsIHRoZSBjb2RlYyB3ZSdyZSBnb2luZyB0byBzd2l0Y2gKKyAqIGFuZCBnaXZlIGl0IENMT0NLX1NXSVRDSF9QUkVQQVJFX1NMQVZFIQorICovCitlbnVtIGNsb2NrX3N3aXRjaCB7CisJQ0xPQ0tfU1dJVENIX1BSRVBBUkVfU0xBVkUsCisJQ0xPQ0tfU1dJVENIX1BSRVBBUkVfTUFTVEVSLAorCUNMT0NLX1NXSVRDSF9TTEFWRSwKKwlDTE9DS19TV0lUQ0hfTUFTVEVSLAorCUNMT0NLX1NXSVRDSF9OT1RJRlksCit9OworCisvKiBpbmZvcm1hdGlvbiBvbiBhIHRyYW5zZmVyIHRoZSBjb2RlYyBjYW4gdGFrZSAqLworc3RydWN0IHRyYW5zZmVyX2luZm8geworCXU2NCBmb3JtYXRzOwkJLyogU05EUlZfUENNX0ZNVEJJVF8qICovCisJdW5zaWduZWQgaW50IHJhdGVzOwkvKiBTTkRSVl9QQ01fUkFURV8qICovCisJLyogZmxhZ3MgKi8KKwl1MzIgdHJhbnNmZXJfaW46MSwgLyogaW5wdXQgPSAxLCBvdXRwdXQgPSAwICovCisJICAgIG11c3RfYmVfY2xvY2tfc291cmNlOjE7CisJLyogZm9yIGNvZGVjcyB0byBkaXN0aW5ndWlzaCBhbW9uZyB0aGVpciBUSXMgKi8KKwlpbnQgdGFnOworfTsKKworc3RydWN0IGNvZGVjX2luZm9faXRlbSB7CisJc3RydWN0IGNvZGVjX2luZm8gKmNvZGVjOworCXZvaWQgKmNvZGVjX2RhdGE7CisJc3RydWN0IHNvdW5kYnVzX2RldiAqc2RldjsKKwkvKiBpbnRlcm5hbCwgdG8gYmUgdXNlZCBieSB0aGUgc291bmRidXMgcHJvdmlkZXIgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OworCisvKiBmb3IgcHJlcGFyZSwgd2hlcmUgdGhlIGNvZGVjcyBuZWVkIHRvIGtub3cKKyAqIHdoYXQgd2UncmUgZ29pbmcgdG8gZHJpdmUgdGhlIGJ1cyB3aXRoICovCitzdHJ1Y3QgYnVzX2luZm8geworCS8qIHNlZSBiZWxvdyAqLworCWludCBzeXNjbG9ja19mYWN0b3I7CisJaW50IGJ1c19mYWN0b3I7Cit9OworCisvKiBpbmZvcm1hdGlvbiBvbiB0aGUgY29kZWMgaXRzZWxmLCBwbHVzIGZ1bmN0aW9uIHBvaW50ZXJzICovCitzdHJ1Y3QgY29kZWNfaW5mbyB7CisJLyogdGhlIG1vZHVsZSB0aGlzIGxpdmVzIGluICovCisJc3RydWN0IG1vZHVsZSAqb3duZXI7CisKKwkvKiBzdXBwb3J0ZWQgdHJhbnNmZXIgcG9zc2liaWxpdGllcywgYXJyYXkgdGVybWluYXRlZCBieQorCSAqIGZvcm1hdHMgb3IgcmF0ZXMgYmVpbmcgMC4gKi8KKwlzdHJ1Y3QgdHJhbnNmZXJfaW5mbyAqdHJhbnNmZXJzOworCisJLyogTWFzdGVyIGNsb2NrIHNwZWVkIGZhY3RvcgorCSAqIHRvIGJlIHVzZWQgKG1hc3RlciBjbG9jayBzcGVlZCA9IHN5c2Nsb2NrX2ZhY3RvciAqIHNhbXBsaW5nIGZyZXEpCisJICogVW51c2VkIGlmIHRoZSBzb3VuZGJ1cyBwcm92aWRlciBoYXMgbm8gc3VjaCBub3Rpb24uCisJICovCisJaW50IHN5c2Nsb2NrX2ZhY3RvcjsKKworCS8qIEJ1cyBmYWN0b3IsIGJ1cyBjbG9jayBzcGVlZCA9IGJ1c19mYWN0b3IgKiBzYW1wbGluZyBmcmVxKQorCSAqIFVudXNlZCBpZiB0aGUgc291bmRidXMgcHJvdmlkZXIgaGFzIG5vIHN1Y2ggbm90aW9uLgorCSAqLworCWludCBidXNfZmFjdG9yOworCisJLyogb3BlcmF0aW9ucyAqLworCS8qIGNsb2NrIHN3aXRjaGluZywgc2VlIGFib3ZlICovCisJaW50ICgqc3dpdGNoX2Nsb2NrKShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksCisJCQkgICAgZW51bSBjbG9ja19zd2l0Y2ggY2xvY2spOworCisJLyogY2FsbGVkIGZvciBlYWNoIHRyYW5zZmVyX2luZm8gd2hlbiB0aGUgdXNlcgorCSAqIG9wZW5zIHRoZSBwY20gZGV2aWNlIHRvIGRldGVybWluZSB3aGF0IHRoZQorCSAqIGhhcmR3YXJlIGNhbiBzdXBwb3J0IGF0IHRoaXMgcG9pbnQgaW4gdGltZS4KKwkgKiBUaGF0IGNhbiBkZXBlbmQgb24gb3RoZXIgdXNlci1zd2l0Y2hhYmxlIGNvbnRyb2xzLgorCSAqIFJldHVybiAxIGlmIHVzYWJsZSwgMCBpZiBub3QuCisJICogb3V0IHBvaW50cyB0byBhbm90aGVyIGluc3RhbmNlIG9mIGEgdHJhbnNmZXJfaW5mbworCSAqIHdoaWNoIGlzIGluaXRpYWxpc2VkIHRvIHRoZSB2YWx1ZXMgaW4gKnRpLCBhbmQKKwkgKiBpdCdzIGZvcm1hdCBhbmQgcmF0ZSB2YWx1ZXMgY2FuIGJlIG1vZGlmaWVkIGJ5CisJICogdGhlIGNhbGxiYWNrIGlmIGl0IGlzIG5lY2Vzc2FyeSB0byBmdXJ0aGVyIHJlc3RyaWN0CisJICogdGhlIGZvcm1hdHMgdGhhdCBjYW4gYmUgdXNlZCBhdCB0aGUgbW9tZW50LCBmb3IKKwkgKiBleGFtcGxlIHdoZW4gb25lIGNvZGVjIGhhcyBtdWx0aXBsZSBsb2dpY2FsIGNvZGVjCisJICogaW5mbyBzdHJ1Y3RzIGZvciBtdWx0aXBsZSBpbnB1dHMuCisJICovCisJaW50ICgqdXNhYmxlKShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksCisJCSAgICAgIHN0cnVjdCB0cmFuc2Zlcl9pbmZvICp0aSwKKwkJICAgICAgc3RydWN0IHRyYW5zZmVyX2luZm8gKm91dCk7CisKKwkvKiBjYWxsZWQgd2hlbiBwY20gc3RyZWFtIGlzIG9wZW5lZCwgcHJvYmFibHkgbm90IGltcGxlbWVudGVkCisJICogbW9zdCBvZiB0aGUgdGltZSBzaW5jZSBpdCBpc24ndCB0b28gdXNlZnVsICovCisJaW50ICgqb3Blbikoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLAorCQkgICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pOworCisJLyogY2FsbGVkIHdoZW4gdGhlIHBjbSBzdHJlYW0gaXMgY2xvc2VkLCBhdCB0aGlzIHBvaW50CisJICogdGhlIHVzZXIgY2hvaWNlcyBjYW4gYWxsIGJlIHVubG9ja2VkIChzZWUgYmVsb3cpICovCisJaW50ICgqY2xvc2UpKHN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaSwKKwkJICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CisKKwkvKiBpZiB0aGUgY29kZWMgbXVzdCBmb3JiaWQgc29tZSB1c2VyIGNob2ljZXMgYmVjYXVzZQorCSAqIHRoZXkgYXJlIG5vdCB2YWxpZCB3aXRoIHRoZSBzdWJzdHJlYW0vdHJhbnNmZXIgaW5mbywKKwkgKiBpdCBtdXN0IGRvIHNvIGhlcmUuIEV4YW1wbGU6IG5vIGRpZ2l0YWwgb3V0cHV0IGZvcgorCSAqIGluY29tcGF0aWJsZSBmcmFtZXJhdGUsIHNheSA4S0h6LCBvbiBPbnl4LgorCSAqIElmIHRoZSBzZWxlY3RlZCBzdHVmZiBpbiB0aGUgc3Vic3RyZWFtIGlzIE5PVAorCSAqIGNvbXBhdGlibGUsIHlvdSBoYXZlIHRvIHJlamVjdCB0aGlzIGNhbGwhICovCisJaW50ICgqcHJlcGFyZSkoc3RydWN0IGNvZGVjX2luZm9faXRlbSAqY2lpLAorCQkgICAgICAgc3RydWN0IGJ1c19pbmZvICpiaSwKKwkJICAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKTsKKworCS8qIHN0YXJ0KCkgaXMgY2FsbGVkIGJlZm9yZSBkYXRhIGlzIHB1c2hlZCB0byB0aGUgY29kZWMuCisJICogTm90ZSB0aGF0IHN0YXJ0KCkgbXVzdCBiZSBhdG9taWMhICovCisJaW50ICgqc3RhcnQpKHN0cnVjdCBjb2RlY19pbmZvX2l0ZW0gKmNpaSwKKwkJICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CisKKwkvKiBzdG9wKCkgaXMgY2FsbGVkIGFmdGVyIGRhdGEgaXMgbm8gbG9uZ2VyIHB1c2hlZCB0byB0aGUgY29kZWMuCisJICogTm90ZSB0aGF0IHN0b3AoKSBtdXN0IGJlIGF0b21pYyEgKi8KKwlpbnQgKCpzdG9wKShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksCisJCSAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CisKKwlpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWksIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CisJaW50ICgqcmVzdW1lKShzdHJ1Y3QgY29kZWNfaW5mb19pdGVtICpjaWkpOworfTsKKworLyogaW5mb3JtYXRpb24gb24gYSBzb3VuZGJ1cyBkZXZpY2UgKi8KK3N0cnVjdCBzb3VuZGJ1c19kZXYgeworCS8qIHRoZSBidXMgaXQgYmVsb25ncyB0byAqLworCXN0cnVjdCBsaXN0X2hlYWQgb25idXNsaXN0OworCisJLyogdGhlIG9mIGRldmljZSBpdCByZXByZXNlbnRzICovCisJc3RydWN0IG9mX2RldmljZSBvZmRldjsKKworCS8qIHdoYXQgbW9kdWxlcyBnbyBieSAqLworCWNoYXIgbW9kYWxpYXNbMzJdOworCisJLyogVGhlc2UgZmllbGRzIG11c3QgYmUgYmVmb3JlIGF0dGFjaF9jb2RlYyBjYW4gYmUgY2FsbGVkLgorCSAqIFRoZXkgc2hvdWxkIGJlIHNldCBieSB0aGUgb3duZXIgb2YgdGhlIGFsc2EgY2FyZCBvYmplY3QKKwkgKiB0aGF0IGlzIG5lZWRlZCwgYW5kIHdob2V2ZXIgc2V0cyB0aGVtIG11c3QgbWFrZSBzdXJlCisJICogdGhhdCB0aGV5IGFyZSB1bmlxdWUgd2l0aGluIHRoYXQgYWxzYSBjYXJkIG9iamVjdC4gKi8KKwljaGFyICpwY21uYW1lOworCWludCBwY21pZDsKKworCS8qIHRoaXMgaXMgYXNzaWduZWQgYnkgdGhlIHNvdW5kYnVzIHByb3ZpZGVyIGluIGF0dGFjaF9jb2RlYyAqLworCXN0cnVjdCBzbmRfcGNtICpwY207CisKKwkvKiBvcGVyYXRpb25zICovCisJLyogYXR0YWNoIGEgY29kZWMgdG8gdGhpcyBzb3VuZGJ1cywgZ2l2ZSB0aGUgYWxzYQorCSAqIGNhcmQgb2JqZWN0IHRoZSBQQ01zIGZvciB0aGlzIHNvdW5kYnVzIHNob3VsZCBiZSBpbi4KKwkgKiBUaGUgJ2RhdGEnIHBvaW50ZXIgbXVzdCBiZSB1bmlxdWUsIGl0IGlzIHVzZWQgYXMgdGhlCisJICoga2V5IGZvciBkZXRhY2hfY29kZWMoKS4gKi8KKwlpbnQgKCphdHRhY2hfY29kZWMpKHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldiwgc3RydWN0IHNuZF9jYXJkICpjYXJkLAorCQkJICAgIHN0cnVjdCBjb2RlY19pbmZvICpjaSwgdm9pZCAqZGF0YSk7CisJdm9pZCAoKmRldGFjaF9jb2RlYykoc3RydWN0IHNvdW5kYnVzX2RldiAqZGV2LCB2b2lkICpkYXRhKTsKKwkvKiBUT0RPOiBzdXNwZW5kL3Jlc3VtZSAqLworCisJLyogcHJpdmF0ZSBmb3IgdGhlIHNvdW5kYnVzIHByb3ZpZGVyICovCisJc3RydWN0IGxpc3RfaGVhZCBjb2RlY19saXN0OworCXUzMiBoYXZlX291dDoxLCBoYXZlX2luOjE7Cit9OworI2RlZmluZSB0b19zb3VuZGJ1c19kZXZpY2UoZCkgY29udGFpbmVyX29mKGQsIHN0cnVjdCBzb3VuZGJ1c19kZXYsIG9mZGV2LmRldikKKyNkZWZpbmUgb2ZfdG9fc291bmRidXNfZGV2aWNlKGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3Qgc291bmRidXNfZGV2LCBvZmRldikKKworZXh0ZXJuIGludCBzb3VuZGJ1c19hZGRfb25lKHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldik7CitleHRlcm4gdm9pZCBzb3VuZGJ1c19yZW1vdmVfb25lKHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldik7CisKK2V4dGVybiBzdHJ1Y3Qgc291bmRidXNfZGV2ICpzb3VuZGJ1c19kZXZfZ2V0KHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldik7CitleHRlcm4gdm9pZCBzb3VuZGJ1c19kZXZfcHV0KHN0cnVjdCBzb3VuZGJ1c19kZXYgKmRldik7CisKK3N0cnVjdCBzb3VuZGJ1c19kcml2ZXIgeworCWNoYXIgKm5hbWU7CisJc3RydWN0IG1vZHVsZSAqb3duZXI7CisKKwkvKiB3ZSBkb24ndCBpbXBsZW1lbnQgYW55IG1hdGNoaW5nIGF0IGFsbCAqLworCisJaW50CSgqcHJvYmUpKHN0cnVjdCBzb3VuZGJ1c19kZXYqIGRldik7CisJaW50CSgqcmVtb3ZlKShzdHJ1Y3Qgc291bmRidXNfZGV2KiBkZXYpOworCisJaW50CSgqc3VzcGVuZCkoc3RydWN0IHNvdW5kYnVzX2RldiogZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworCWludAkoKnJlc3VtZSkoc3RydWN0IHNvdW5kYnVzX2RldiogZGV2KTsKKwlpbnQJKCpzaHV0ZG93bikoc3RydWN0IHNvdW5kYnVzX2RldiogZGV2KTsKKworCXN0cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjsKK307CisjZGVmaW5lIHRvX3NvdW5kYnVzX2RyaXZlcihkcnYpIGNvbnRhaW5lcl9vZihkcnYsc3RydWN0IHNvdW5kYnVzX2RyaXZlciwgZHJpdmVyKQorCitleHRlcm4gaW50IHNvdW5kYnVzX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgc291bmRidXNfZHJpdmVyICpkcnYpOworZXh0ZXJuIHZvaWQgc291bmRidXNfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHNvdW5kYnVzX2RyaXZlciAqZHJ2KTsKKworI2VuZGlmIC8qIF9fU09VTkRCVVNfSCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvYW9hL3NvdW5kYnVzL3N5c2ZzLmMgYi9zb3VuZC9hb2Evc291bmRidXMvc3lzZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzFmODE0Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvYW9hL3NvdW5kYnVzL3N5c2ZzLmMKQEAgLTAsMCArMSw0MyBAQAorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KKy8qIEZJWCBVUCAqLworI2luY2x1ZGUgInNvdW5kYnVzLmgiCisKKyNkZWZpbmUgc291bmRidXNfY29uZmlnX29mX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpCQkJXAorc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKK2ZpZWxkIyNfc2hvdyAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwJXAorICAgICAgICAgICAgICBjaGFyICpidWYpCQkJCQkJXAorewkJCQkJCQkJCVwKKwlzdHJ1Y3Qgc291bmRidXNfZGV2ICptZGV2ID0gdG9fc291bmRidXNfZGV2aWNlIChkZXYpOwkJXAorCXJldHVybiBzcHJpbnRmIChidWYsIGZvcm1hdF9zdHJpbmcsIG1kZXYtPm9mZGV2Lm5vZGUtPmZpZWxkKTsJXAorfQorCitzdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc291bmRidXNfZGV2ICpzZGV2ID0gdG9fc291bmRidXNfZGV2aWNlKGRldik7CisJc3RydWN0IG9mX2RldmljZSAqb2YgPSAmc2Rldi0+b2ZkZXY7CisJaW50IGxlbmd0aDsKKworCWlmICgqc2Rldi0+bW9kYWxpYXMpIHsKKwkJc3RybGNweShidWYsIHNkZXYtPm1vZGFsaWFzLCBzaXplb2Yoc2Rldi0+bW9kYWxpYXMpICsgMSk7CisJCXN0cmNhdChidWYsICJcbiIpOworCQlsZW5ndGggPSBzdHJsZW4oYnVmKTsKKwl9IGVsc2UgeworCQlsZW5ndGggPSBzcHJpbnRmKGJ1ZiwgIm9mOk4lc1Qlc1xuIiwKKwkJCQkgb2YtPm5vZGUtPm5hbWUsIG9mLT5ub2RlLT50eXBlKTsKKwl9CisKKwlyZXR1cm4gbGVuZ3RoOworfQorCitzb3VuZGJ1c19jb25maWdfb2ZfYXR0ciAobmFtZSwgIiVzXG4iKTsKK3NvdW5kYnVzX2NvbmZpZ19vZl9hdHRyICh0eXBlLCAiJXNcbiIpOworCitzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBzb3VuZGJ1c19kZXZfYXR0cnNbXSA9IHsKKwlfX0FUVFJfUk8obmFtZSksCisJX19BVFRSX1JPKHR5cGUpLAorCV9fQVRUUl9STyhtb2RhbGlhcyksCisJX19BVFRSX05VTEwKK307CmRpZmYgLS1naXQgYS9zb3VuZC9hcm0vc2ExMXh4LXVkYTEzNDEuYyBiL3NvdW5kL2FybS9zYTExeHgtdWRhMTM0MS5jCmluZGV4IDEzMDU3ZDkuLmI4OGZiMGMgMTAwNjQ0Ci0tLSBhL3NvdW5kL2FybS9zYTExeHgtdWRhMTM0MS5jCisrKyBiL3NvdW5kL2FybS9zYTExeHgtdWRhMTM0MS5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiU0ExMTAwL1NBMTExMSArIFVEQTEzNDFUUyBkcml2ZXIgZm9yIEFMU0EiKTsKIE1PRFVMRV9TVVBQT1JURURfREVWSUNFKCJ7e1VEQTEzNDEsaVBBUSBIMzYwMCBVREExMzQxVFN9fSIpOwogCi1zdGF0aWMgY2hhciAqaWQgPSBOVUxMOwkvKiBJRCBmb3IgdGhpcyBjYXJkICovCitzdGF0aWMgY2hhciAqaWQ7CS8qIElEIGZvciB0aGlzIGNhcmQgKi8KIAogbW9kdWxlX3BhcmFtKGlkLCBjaGFycCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGlkLCAiSUQgc3RyaW5nIGZvciBTQTExMDAvU0ExMTExICsgVURBMTM0MVRTIHNvdW5kY2FyZC4iKTsKQEAgLTk4NCwxMSArOTg0LDE1IEBACiAJaWYgKChlcnIgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnNhMTF4eF91ZGExMzQxX2RyaXZlcikpIDwgMCkKIAkJcmV0dXJuIGVycjsKIAlkZXZpY2UgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFNBMTFYWF9VREExMzQxX0RSSVZFUiwgLTEsIE5VTEwsIDApOwotCWlmIChJU19FUlIoZGV2aWNlKSkgewotCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc2ExMXh4X3VkYTEzNDFfZHJpdmVyKTsKLQkJcmV0dXJuIFBUUl9FUlIoZGV2aWNlKTsKLQl9Ci0JcmV0dXJuIDA7CisJaWYgKCFJU19FUlIoZGV2aWNlKSkgeworCQlpZiAocGxhdGZvcm1fZ2V0X2RydmRhdGEoZGV2aWNlKSkKKwkJCXJldHVybiAwOworCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihkZXZpY2UpOworCQllcnIgPSAtRU5PREVWCisJfSBlbHNlCisJCWVyciA9IFBUUl9FUlIoZGV2aWNlKTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc2ExMXh4X3VkYTEzNDFfZHJpdmVyKTsKKwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBfX2V4aXQgc2ExMXh4X3VkYTEzNDFfZXhpdCh2b2lkKQpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9jb250cm9sLmMgYi9zb3VuZC9jb3JlL2NvbnRyb2wuYwppbmRleCAyMjU2NWM5Yi4uYmIzOTdlYSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9jb250cm9sLmMKKysrIGIvc291bmQvY29yZS9jb250cm9sLmMKQEAgLTE3Niw2ICsxNzYsOCBAQAogCXJlYWRfdW5sb2NrKCZjYXJkLT5jdGxfZmlsZXNfcndsb2NrKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX25vdGlmeSk7CisKIC8qKgogICogc25kX2N0bF9uZXcgLSBjcmVhdGUgYSBjb250cm9sIGluc3RhbmNlIGZyb20gdGhlIHRlbXBsYXRlCiAgKiBAY29udHJvbDogdGhlIGNvbnRyb2wgdGVtcGxhdGUKQEAgLTIwNCw2ICsyMDYsOCBAQAogCXJldHVybiBrY3RsOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9jdGxfbmV3KTsKKwogLyoqCiAgKiBzbmRfY3RsX25ldzEgLSBjcmVhdGUgYSBjb250cm9sIGluc3RhbmNlIGZyb20gdGhlIHRlbXBsYXRlCiAgKiBAbmNvbnRyb2w6IHRoZSBpbml0aWFsaXphdGlvbiByZWNvcmQKQEAgLTI0Miw2ICsyNDYsOCBAQAogCXJldHVybiBzbmRfY3RsX25ldygma2N0bCwgYWNjZXNzKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX25ldzEpOworCiAvKioKICAqIHNuZF9jdGxfZnJlZV9vbmUgLSByZWxlYXNlIHRoZSBjb250cm9sIGluc3RhbmNlCiAgKiBAa2NvbnRyb2w6IHRoZSBjb250cm9sIGluc3RhbmNlCkBAIC0yNTksNiArMjY1LDggQEAKIAl9CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF9mcmVlX29uZSk7CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc25kX2N0bF9ob2xlX2NoZWNrKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAkJCQkgICAgICAgdW5zaWduZWQgaW50IGNvdW50KQogewpAQCAtMzQ3LDYgKzM1NSw4IEBACiAJcmV0dXJuIGVycjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX2FkZCk7CisKIC8qKgogICogc25kX2N0bF9yZW1vdmUgLSByZW1vdmUgdGhlIGNvbnRyb2wgZnJvbSB0aGUgY2FyZCBhbmQgcmVsZWFzZSBpdAogICogQGNhcmQ6IHRoZSBjYXJkIGluc3RhbmNlCkBAIC0zNzMsNiArMzgzLDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX3JlbW92ZSk7CisKIC8qKgogICogc25kX2N0bF9yZW1vdmVfaWQgLSByZW1vdmUgdGhlIGNvbnRyb2wgb2YgdGhlIGdpdmVuIGlkIGFuZCByZWxlYXNlIGl0CiAgKiBAY2FyZDogdGhlIGNhcmQgaW5zdGFuY2UKQEAgLTM5OSw2ICs0MTEsOCBAQAogCXJldHVybiByZXQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF9yZW1vdmVfaWQpOworCiAvKioKICAqIHNuZF9jdGxfcmVtb3ZlX3VubG9ja2VkX2lkIC0gcmVtb3ZlIHRoZSB1bmxvY2tlZCBjb250cm9sIG9mIHRoZSBnaXZlbiBpZCBhbmQgcmVsZWFzZSBpdAogICogQGZpbGU6IGFjdGl2ZSBjb250cm9sIGhhbmRsZQpAQCAtNDYxLDYgKzQ3NSw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF9yZW5hbWVfaWQpOworCiAvKioKICAqIHNuZF9jdGxfZmluZF9udW1pZCAtIGZpbmQgdGhlIGNvbnRyb2wgaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyLWlkCiAgKiBAY2FyZDogdGhlIGNhcmQgaW5zdGFuY2UKQEAgLTQ4Nyw2ICs1MDMsOCBAQAogCXJldHVybiBOVUxMOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9jdGxfZmluZF9udW1pZCk7CisKIC8qKgogICogc25kX2N0bF9maW5kX2lkIC0gZmluZCB0aGUgY29udHJvbCBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBpZAogICogQGNhcmQ6IHRoZSBjYXJkIGluc3RhbmNlCkBAIC01MjcsNiArNTQ1LDggQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX2ZpbmRfaWQpOworCiBzdGF0aWMgaW50IHNuZF9jdGxfY2FyZF9pbmZvKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHNuZF9jdGxfZmlsZSAqIGN0bCwKIAkJCSAgICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZykKIHsKQEAgLTcwNCw2ICs3MjQsOCBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF9lbGVtX3JlYWQpOworCiBzdGF0aWMgaW50IHNuZF9jdGxfZWxlbV9yZWFkX3VzZXIoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCQkJCSAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSBfX3VzZXIgKl9jb250cm9sKQogewpAQCAtNzY3LDYgKzc4OSw4IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY3RsX2VsZW1fd3JpdGUpOworCiBzdGF0aWMgaW50IHNuZF9jdGxfZWxlbV93cml0ZV91c2VyKHN0cnVjdCBzbmRfY3RsX2ZpbGUgKmZpbGUsCiAJCQkJICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSBfX3VzZXIgKl9jb250cm9sKQogewpAQCAtMTE5OSwxMSArMTIyMywxNSBAQAogCXJldHVybiBfc25kX2N0bF9yZWdpc3Rlcl9pb2N0bChmY24sICZzbmRfY29udHJvbF9pb2N0bHMpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9jdGxfcmVnaXN0ZXJfaW9jdGwpOworCiAjaWZkZWYgQ09ORklHX0NPTVBBVAogaW50IHNuZF9jdGxfcmVnaXN0ZXJfaW9jdGxfY29tcGF0KHNuZF9rY3RsX2lvY3RsX2Z1bmNfdCBmY24pCiB7CiAJcmV0dXJuIF9zbmRfY3RsX3JlZ2lzdGVyX2lvY3RsKGZjbiwgJnNuZF9jb250cm9sX2NvbXBhdF9pb2N0bHMpOwogfQorCitFWFBPUlRfU1lNQk9MKHNuZF9jdGxfcmVnaXN0ZXJfaW9jdGxfY29tcGF0KTsKICNlbmRpZgogCiAvKgpAQCAtMTIzNiwxMiArMTI2NCwxNSBAQAogCXJldHVybiBfc25kX2N0bF91bnJlZ2lzdGVyX2lvY3RsKGZjbiwgJnNuZF9jb250cm9sX2lvY3Rscyk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF91bnJlZ2lzdGVyX2lvY3RsKTsKKwogI2lmZGVmIENPTkZJR19DT01QQVQKIGludCBzbmRfY3RsX3VucmVnaXN0ZXJfaW9jdGxfY29tcGF0KHNuZF9rY3RsX2lvY3RsX2Z1bmNfdCBmY24pCiB7CiAJcmV0dXJuIF9zbmRfY3RsX3VucmVnaXN0ZXJfaW9jdGwoZmNuLCAmc25kX2NvbnRyb2xfY29tcGF0X2lvY3Rscyk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2N0bF91bnJlZ2lzdGVyX2lvY3RsX2NvbXBhdCk7CiAjZW5kaWYKIAogc3RhdGljIGludCBzbmRfY3RsX2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICogZmlsZSwgaW50IG9uKQpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9kZXZpY2UuYyBiL3NvdW5kL2NvcmUvZGV2aWNlLmMKaW5kZXggYjFjZjZlYy4uNmNlNGRhNCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9kZXZpY2UuYworKysgYi9zb3VuZC9jb3JlL2RldmljZS5jCkBAIC02Myw2ICs2Myw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2RldmljZV9uZXcpOworCiAvKioKICAqIHNuZF9kZXZpY2VfZnJlZSAtIHJlbGVhc2UgdGhlIGRldmljZSBmcm9tIHRoZSBjYXJkCiAgKiBAY2FyZDogdGhlIGNhcmQgaW5zdGFuY2UKQEAgLTEwNyw2ICsxMDksOCBAQAogCXJldHVybiAtRU5YSU87CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2RldmljZV9mcmVlKTsKKwogLyoqCiAgKiBzbmRfZGV2aWNlX2Rpc2Nvbm5lY3QgLSBkaXNjb25uZWN0IHRoZSBkZXZpY2UKICAqIEBjYXJkOiB0aGUgY2FyZCBpbnN0YW5jZQpAQCAtMTgyLDYgKzE4Niw4IEBACiAJcmV0dXJuIC1FTlhJTzsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZGV2aWNlX3JlZ2lzdGVyKTsKKwogLyoKICAqIHJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgY2FyZC4KICAqIGNhbGxlZCBmcm9tIGluaXQuYwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9od2RlcC5jIGIvc291bmQvY29yZS9od2RlcC5jCmluZGV4IDI1MjRlNjYuLjhiZDBkY2MgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvaHdkZXAuYworKysgYi9zb3VuZC9jb3JlL2h3ZGVwLmMKQEAgLTQ4Niw3ICs0ODYsNiBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoKGVudHJ5ID0gc25kX2luZm9fY3JlYXRlX21vZHVsZV9lbnRyeShUSElTX01PRFVMRSwgImh3ZGVwIiwgTlVMTCkpICE9IE5VTEwpIHsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSBQQUdFX1NJWkU7CiAJCWVudHJ5LT5jLnRleHQucmVhZCA9IHNuZF9od2RlcF9wcm9jX3JlYWQ7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvaW5mby5jIGIvc291bmQvY29yZS9pbmZvLmMKaW5kZXggMjU4MmI3NC4uMTBjMTc3MiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9pbmZvLmMKKysrIGIvc291bmQvY29yZS9pbmZvLmMKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgPHNvdW5kL2RyaXZlci5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CiAjaW5jbHVkZSA8bGludXgvdGltZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CkBAIC04Miw2ICs4MSwyNCBAQAogc3RhdGljIGludCBzbmRfaW5mb192ZXJzaW9uX2RvbmUodm9pZCk7CiAKIAorLyogcmVzaXplIHRoZSBwcm9jIHIvdyBidWZmZXIgKi8KK3N0YXRpYyBpbnQgcmVzaXplX2luZm9fYnVmZmVyKHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlciwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBuc2l6ZSkKK3sKKwljaGFyICpuYnVmOworCisJbnNpemUgPSBQQUdFX0FMSUdOKG5zaXplKTsKKwluYnVmID0ga21hbGxvYyhuc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCEgbmJ1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltZW1jcHkobmJ1ZiwgYnVmZmVyLT5idWZmZXIsIGJ1ZmZlci0+bGVuKTsKKwlrZnJlZShidWZmZXItPmJ1ZmZlcik7CisJYnVmZmVyLT5idWZmZXIgPSBuYnVmOworCWJ1ZmZlci0+bGVuID0gbnNpemU7CisJcmV0dXJuIDA7Cit9CisKIC8qKgogICogc25kX2lwcmludGYgLSBwcmludGYgb24gdGhlIHByb2NmcyBidWZmZXIKICAqIEBidWZmZXI6IHRoZSBwcm9jZnMgYnVmZmVyCkBAIC05NSwzMCArMTEyLDQzIEBACiB7CiAJdmFfbGlzdCBhcmdzOwogCWludCBsZW4sIHJlczsKKwlpbnQgZXJyID0gMDsKIAorCW1pZ2h0X3NsZWVwKCk7CiAJaWYgKGJ1ZmZlci0+c3RvcCB8fCBidWZmZXItPmVycm9yKQogCQlyZXR1cm4gMDsKIAlsZW4gPSBidWZmZXItPmxlbiAtIGJ1ZmZlci0+c2l6ZTsKIAl2YV9zdGFydChhcmdzLCBmbXQpOwotCXJlcyA9IHZzbnByaW50ZihidWZmZXItPmN1cnIsIGxlbiwgZm10LCBhcmdzKTsKLQl2YV9lbmQoYXJncyk7Ci0JaWYgKHJlcyA+PSBsZW4pIHsKLQkJYnVmZmVyLT5zdG9wID0gMTsKLQkJcmV0dXJuIDA7CisJZm9yICg7OykgeworCQlyZXMgPSB2c25wcmludGYoYnVmZmVyLT5idWZmZXIgKyBidWZmZXItPmN1cnIsIGxlbiwgZm10LCBhcmdzKTsKKwkJaWYgKHJlcyA8IGxlbikKKwkJCWJyZWFrOworCQllcnIgPSByZXNpemVfaW5mb19idWZmZXIoYnVmZmVyLCBidWZmZXItPmxlbiArIFBBR0VfU0laRSk7CisJCWlmIChlcnIgPCAwKQorCQkJYnJlYWs7CisJCWxlbiA9IGJ1ZmZlci0+bGVuIC0gYnVmZmVyLT5zaXplOwogCX0KKwl2YV9lbmQoYXJncyk7CisKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKIAlidWZmZXItPmN1cnIgKz0gcmVzOwogCWJ1ZmZlci0+c2l6ZSArPSByZXM7CiAJcmV0dXJuIHJlczsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaXByaW50Zik7CisKIC8qCiAKICAqLwogCi1zdGF0aWMgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpzbmRfcHJvY19yb290ID0gTlVMTDsKLXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqc25kX3NlcV9yb290ID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnNuZF9wcm9jX3Jvb3Q7CitzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF9zZXFfcm9vdDsKK0VYUE9SVF9TWU1CT0woc25kX3NlcV9yb290KTsKKwogI2lmZGVmIENPTkZJR19TTkRfT1NTRU1VTAotc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfb3NzX3Jvb3QgPSBOVUxMOworc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfb3NzX3Jvb3Q7CiAjZW5kaWYKIAogc3RhdGljIGlubGluZSB2b2lkIHNuZF9pbmZvX2VudHJ5X3ByZXBhcmUoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkZSkKQEAgLTIyMSw3ICsyNTEsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19wcml2YXRlX2RhdGEgKmRhdGE7CiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAlzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWY7Ci0Jc2l6ZV90IHNpemUgPSAwOworCXNzaXplX3Qgc2l6ZSA9IDA7CiAJbG9mZl90IHBvczsKIAogCWRhdGEgPSBmaWxlLT5wcml2YXRlX2RhdGE7CkBAIC0yMzcsMTQgKzI2NywyMCBAQAogCQlidWYgPSBkYXRhLT53YnVmZmVyOwogCQlpZiAoYnVmID09IE5VTEwpCiAJCQlyZXR1cm4gLUVJTzsKLQkJaWYgKHBvcyA+PSBidWYtPmxlbikKLQkJCXJldHVybiAtRU5PTUVNOwotCQlzaXplID0gYnVmLT5sZW4gLSBwb3M7Ci0JCXNpemUgPSBtaW4oY291bnQsIHNpemUpOwotCQlpZiAoY29weV9mcm9tX3VzZXIoYnVmLT5idWZmZXIgKyBwb3MsIGJ1ZmZlciwgc2l6ZSkpCisJCW11dGV4X2xvY2soJmVudHJ5LT5hY2Nlc3MpOworCQlpZiAocG9zICsgY291bnQgPj0gYnVmLT5sZW4pIHsKKwkJCWlmIChyZXNpemVfaW5mb19idWZmZXIoYnVmLCBwb3MgKyBjb3VudCkpIHsKKwkJCQltdXRleF91bmxvY2soJmVudHJ5LT5hY2Nlc3MpOworCQkJCXJldHVybiAtRU5PTUVNOworCQkJfQorCQl9CisJCWlmIChjb3B5X2Zyb21fdXNlcihidWYtPmJ1ZmZlciArIHBvcywgYnVmZmVyLCBjb3VudCkpIHsKKwkJCW11dGV4X3VubG9jaygmZW50cnktPmFjY2Vzcyk7CiAJCQlyZXR1cm4gLUVGQVVMVDsKLQkJaWYgKChsb25nKWJ1Zi0+c2l6ZSA8IHBvcyArIHNpemUpCi0JCQlidWYtPnNpemUgPSBwb3MgKyBzaXplOworCQl9CisJCWJ1Zi0+c2l6ZSA9IHBvcyArIGNvdW50OworCQltdXRleF91bmxvY2soJmVudHJ5LT5hY2Nlc3MpOworCQlzaXplID0gY291bnQ7CiAJCWJyZWFrOwogCWNhc2UgU05EUlZfSU5GT19DT05URU5UX0RBVEE6CiAJCWlmIChlbnRyeS0+Yy5vcHMtPndyaXRlKQpAQCAtMjc5LDE4ICszMTUsMTQgQEAKIAl9CiAJbW9kZSA9IGZpbGUtPmZfZmxhZ3MgJiBPX0FDQ01PREU7CiAJaWYgKG1vZGUgPT0gT19SRE9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKLQkJaWYgKChlbnRyeS0+Y29udGVudCA9PSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVCAmJgotCQkgICAgICFlbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSkgfHwKLQkJICAgIChlbnRyeS0+Y29udGVudCA9PSBTTkRSVl9JTkZPX0NPTlRFTlRfREFUQSAmJgorCQlpZiAoKGVudHJ5LT5jb250ZW50ID09IFNORFJWX0lORk9fQ09OVEVOVF9EQVRBICYmCiAJCSAgICAgZW50cnktPmMub3BzLT5yZWFkID09IE5VTEwpKSB7CiAJCSAgICAJZXJyID0gLUVOT0RFVjsKIAkJICAgIAlnb3RvIF9fZXJyb3I7CiAJCX0KIAl9CiAJaWYgKG1vZGUgPT0gT19XUk9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKLQkJaWYgKChlbnRyeS0+Y29udGVudCA9PSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVCAmJgotCQkgICAgICFlbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUpIHx8Ci0JCSAgICAoZW50cnktPmNvbnRlbnQgPT0gU05EUlZfSU5GT19DT05URU5UX0RBVEEgJiYKKwkJaWYgKChlbnRyeS0+Y29udGVudCA9PSBTTkRSVl9JTkZPX0NPTlRFTlRfREFUQSAmJgogCQkgICAgIGVudHJ5LT5jLm9wcy0+d3JpdGUgPT0gTlVMTCkpIHsKIAkJICAgIAllcnIgPSAtRU5PREVWOwogCQkgICAgCWdvdG8gX19lcnJvcjsKQEAgLTMwNiw0OSArMzM4LDIzIEBACiAJY2FzZSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDoKIAkJaWYgKG1vZGUgPT0gT19SRE9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKIAkJCWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBfS0VSTkVMKTsKLQkJCWlmIChidWZmZXIgPT0gTlVMTCkgewotCQkJCWtmcmVlKGRhdGEpOwotCQkJCWVyciA9IC1FTk9NRU07Ci0JCQkJZ290byBfX2Vycm9yOwotCQkJfQotCQkJYnVmZmVyLT5sZW4gPSAoZW50cnktPmMudGV4dC5yZWFkX3NpemUgKwotCQkJCSAgICAgIChQQUdFX1NJWkUgLSAxKSkgJiB+KFBBR0VfU0laRSAtIDEpOwotCQkJYnVmZmVyLT5idWZmZXIgPSB2bWFsbG9jKGJ1ZmZlci0+bGVuKTsKLQkJCWlmIChidWZmZXItPmJ1ZmZlciA9PSBOVUxMKSB7Ci0JCQkJa2ZyZWUoYnVmZmVyKTsKLQkJCQlrZnJlZShkYXRhKTsKLQkJCQllcnIgPSAtRU5PTUVNOwotCQkJCWdvdG8gX19lcnJvcjsKLQkJCX0KLQkJCWJ1ZmZlci0+Y3VyciA9IGJ1ZmZlci0+YnVmZmVyOworCQkJaWYgKGJ1ZmZlciA9PSBOVUxMKQorCQkJCWdvdG8gX19ub21lbTsKIAkJCWRhdGEtPnJidWZmZXIgPSBidWZmZXI7CisJCQlidWZmZXItPmxlbiA9IFBBR0VfU0laRTsKKwkJCWJ1ZmZlci0+YnVmZmVyID0ga21hbGxvYyhidWZmZXItPmxlbiwgR0ZQX0tFUk5FTCk7CisJCQlpZiAoYnVmZmVyLT5idWZmZXIgPT0gTlVMTCkKKwkJCQlnb3RvIF9fbm9tZW07CiAJCX0KIAkJaWYgKG1vZGUgPT0gT19XUk9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKIAkJCWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBfS0VSTkVMKTsKLQkJCWlmIChidWZmZXIgPT0gTlVMTCkgewotCQkJCWlmIChtb2RlID09IE9fUkRXUikgewotCQkJCQl2ZnJlZShkYXRhLT5yYnVmZmVyLT5idWZmZXIpOwotCQkJCQlrZnJlZShkYXRhLT5yYnVmZmVyKTsKLQkJCQl9Ci0JCQkJa2ZyZWUoZGF0YSk7Ci0JCQkJZXJyID0gLUVOT01FTTsKLQkJCQlnb3RvIF9fZXJyb3I7Ci0JCQl9Ci0JCQlidWZmZXItPmxlbiA9IChlbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgKwotCQkJCSAgICAgIChQQUdFX1NJWkUgLSAxKSkgJiB+KFBBR0VfU0laRSAtIDEpOwotCQkJYnVmZmVyLT5idWZmZXIgPSB2bWFsbG9jKGJ1ZmZlci0+bGVuKTsKLQkJCWlmIChidWZmZXItPmJ1ZmZlciA9PSBOVUxMKSB7Ci0JCQkJaWYgKG1vZGUgPT0gT19SRFdSKSB7Ci0JCQkJCXZmcmVlKGRhdGEtPnJidWZmZXItPmJ1ZmZlcik7Ci0JCQkJCWtmcmVlKGRhdGEtPnJidWZmZXIpOwotCQkJCX0KLQkJCQlrZnJlZShidWZmZXIpOwotCQkJCWtmcmVlKGRhdGEpOwotCQkJCWVyciA9IC1FTk9NRU07Ci0JCQkJZ290byBfX2Vycm9yOwotCQkJfQotCQkJYnVmZmVyLT5jdXJyID0gYnVmZmVyLT5idWZmZXI7CisJCQlpZiAoYnVmZmVyID09IE5VTEwpCisJCQkJZ290byBfX25vbWVtOwogCQkJZGF0YS0+d2J1ZmZlciA9IGJ1ZmZlcjsKKwkJCWJ1ZmZlci0+bGVuID0gUEFHRV9TSVpFOworCQkJYnVmZmVyLT5idWZmZXIgPSBrbWFsbG9jKGJ1ZmZlci0+bGVuLCBHRlBfS0VSTkVMKTsKKwkJCWlmIChidWZmZXItPmJ1ZmZlciA9PSBOVUxMKQorCQkJCWdvdG8gX19ub21lbTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNORFJWX0lORk9fQ09OVEVOVF9EQVRBOgkvKiBkYXRhICovCkBAIC0zNzMsNiArMzc5LDE3IEBACiAJfQogCXJldHVybiAwOwogCisgX19ub21lbToKKwlpZiAoZGF0YS0+cmJ1ZmZlcikgeworCQlrZnJlZShkYXRhLT5yYnVmZmVyLT5idWZmZXIpOworCQlrZnJlZShkYXRhLT5yYnVmZmVyKTsKKwl9CisJaWYgKGRhdGEtPndidWZmZXIpIHsKKwkJa2ZyZWUoZGF0YS0+d2J1ZmZlci0+YnVmZmVyKTsKKwkJa2ZyZWUoZGF0YS0+d2J1ZmZlcik7CisJfQorCWtmcmVlKGRhdGEpOworCWVyciA9IC1FTk9NRU07CiAgICAgICBfX2Vycm9yOgogCW1vZHVsZV9wdXQoZW50cnktPm1vZHVsZSk7CiAgICAgICBfX2Vycm9yMToKQEAgLTM5MSwxMSArNDA4LDExIEBACiAJZW50cnkgPSBkYXRhLT5lbnRyeTsKIAlzd2l0Y2ggKGVudHJ5LT5jb250ZW50KSB7CiAJY2FzZSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDoKLQkJaWYgKG1vZGUgPT0gT19SRE9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKLQkJCXZmcmVlKGRhdGEtPnJidWZmZXItPmJ1ZmZlcik7CisJCWlmIChkYXRhLT5yYnVmZmVyKSB7CisJCQlrZnJlZShkYXRhLT5yYnVmZmVyLT5idWZmZXIpOwogCQkJa2ZyZWUoZGF0YS0+cmJ1ZmZlcik7CiAJCX0KLQkJaWYgKG1vZGUgPT0gT19XUk9OTFkgfHwgbW9kZSA9PSBPX1JEV1IpIHsKKwkJaWYgKGRhdGEtPndidWZmZXIpIHsKIAkJCWlmIChlbnRyeS0+Yy50ZXh0LndyaXRlKSB7CiAJCQkJZW50cnktPmMudGV4dC53cml0ZShlbnRyeSwgZGF0YS0+d2J1ZmZlcik7CiAJCQkJaWYgKGRhdGEtPndidWZmZXItPmVycm9yKSB7CkBAIC00MDQsNyArNDIxLDcgQEAKIAkJCQkJCWRhdGEtPndidWZmZXItPmVycm9yKTsKIAkJCQl9CiAJCQl9Ci0JCQl2ZnJlZShkYXRhLT53YnVmZmVyLT5idWZmZXIpOworCQkJa2ZyZWUoZGF0YS0+d2J1ZmZlci0+YnVmZmVyKTsKIAkJCWtmcmVlKGRhdGEtPndidWZmZXIpOwogCQl9CiAJCWJyZWFrOwpAQCAtNjY0LDI5ICs2ODEsMjkgQEAKIAlpZiAobGVuIDw9IDAgfHwgYnVmZmVyLT5zdG9wIHx8IGJ1ZmZlci0+ZXJyb3IpCiAJCXJldHVybiAxOwogCXdoaWxlICgtLWxlbiA+IDApIHsKLQkJYyA9ICpidWZmZXItPmN1cnIrKzsKKwkJYyA9IGJ1ZmZlci0+YnVmZmVyW2J1ZmZlci0+Y3VycisrXTsKIAkJaWYgKGMgPT0gJ1xuJykgewotCQkJaWYgKChidWZmZXItPmN1cnIgLSBidWZmZXItPmJ1ZmZlcikgPj0gKGxvbmcpYnVmZmVyLT5zaXplKSB7CisJCQlpZiAoYnVmZmVyLT5jdXJyID49IGJ1ZmZlci0+c2l6ZSkKIAkJCQlidWZmZXItPnN0b3AgPSAxOwotCQkJfQogCQkJYnJlYWs7CiAJCX0KIAkJKmxpbmUrKyA9IGM7Ci0JCWlmICgoYnVmZmVyLT5jdXJyIC0gYnVmZmVyLT5idWZmZXIpID49IChsb25nKWJ1ZmZlci0+c2l6ZSkgeworCQlpZiAoYnVmZmVyLT5jdXJyID49IGJ1ZmZlci0+c2l6ZSkgewogCQkJYnVmZmVyLT5zdG9wID0gMTsKIAkJCWJyZWFrOwogCQl9CiAJfQogCXdoaWxlIChjICE9ICdcbicgJiYgIWJ1ZmZlci0+c3RvcCkgewotCQljID0gKmJ1ZmZlci0+Y3VycisrOwotCQlpZiAoKGJ1ZmZlci0+Y3VyciAtIGJ1ZmZlci0+YnVmZmVyKSA+PSAobG9uZylidWZmZXItPnNpemUpIHsKKwkJYyA9IGJ1ZmZlci0+YnVmZmVyW2J1ZmZlci0+Y3VycisrXTsKKwkJaWYgKGJ1ZmZlci0+Y3VyciA+PSBidWZmZXItPnNpemUpCiAJCQlidWZmZXItPnN0b3AgPSAxOwotCQl9CiAJfQogCSpsaW5lID0gJ1wwJzsKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaW5mb19nZXRfbGluZSk7CisKIC8qKgogICogc25kX2luZm9fZ2V0X3N0ciAtIHBhcnNlIGEgc3RyaW5nIHRva2VuCiAgKiBAZGVzdDogdGhlIGJ1ZmZlciB0byBzdG9yZSB0aGUgc3RyaW5nIHRva2VuCkBAIC03MjMsNiArNzQwLDggQEAKIAlyZXR1cm4gc3JjOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pbmZvX2dldF9zdHIpOworCiAvKioKICAqIHNuZF9pbmZvX2NyZWF0ZV9lbnRyeSAtIGNyZWF0ZSBhbiBpbmZvIGVudHJ5CiAgKiBAbmFtZTogdGhlIHByb2MgZmlsZSBuYW1lCkBAIC03NzQsNiArNzkzLDggQEAKIAlyZXR1cm4gZW50cnk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2luZm9fY3JlYXRlX21vZHVsZV9lbnRyeSk7CisKIC8qKgogICogc25kX2luZm9fY3JlYXRlX2NhcmRfZW50cnkgLSBjcmVhdGUgYW4gaW5mbyBlbnRyeSBmb3IgdGhlIGdpdmVuIGNhcmQKICAqIEBjYXJkOiB0aGUgY2FyZCBpbnN0YW5jZQpAQCAtNzk3LDYgKzgxOCw4IEBACiAJcmV0dXJuIGVudHJ5OwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pbmZvX2NyZWF0ZV9jYXJkX2VudHJ5KTsKKwogc3RhdGljIGludCBzbmRfaW5mb19kZXZfZnJlZV9lbnRyeShzdHJ1Y3Qgc25kX2RldmljZSAqZGV2aWNlKQogewogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnkgPSBkZXZpY2UtPmRldmljZV9kYXRhOwpAQCAtODY3LDYgKzg5MCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2NhcmRfcHJvY19uZXcpOworCiAvKioKICAqIHNuZF9pbmZvX2ZyZWVfZW50cnkgLSByZWxlYXNlIHRoZSBpbmZvIGVudHJ5CiAgKiBAZW50cnk6IHRoZSBpbmZvIGVudHJ5CkBAIC04ODMsNiArOTA4LDggQEAKIAlrZnJlZShlbnRyeSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2luZm9fZnJlZV9lbnRyeSk7CisKIC8qKgogICogc25kX2luZm9fcmVnaXN0ZXIgLSByZWdpc3RlciB0aGUgaW5mbyBlbnRyeQogICogQGVudHJ5OiB0aGUgaW5mbyBlbnRyeQpAQCAtOTEzLDYgKzk0MCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2luZm9fcmVnaXN0ZXIpOworCiAvKioKICAqIHNuZF9pbmZvX3VucmVnaXN0ZXIgLSBkZS1yZWdpc3RlciB0aGUgaW5mbyBlbnRyeQogICogQGVudHJ5OiB0aGUgaW5mbyBlbnRyeQpAQCAtOTM3LDExICs5NjYsMTMgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaW5mb191bnJlZ2lzdGVyKTsKKwogLyoKIAogICovCiAKLXN0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF9pbmZvX3ZlcnNpb25fZW50cnkgPSBOVUxMOworc3RhdGljIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqc25kX2luZm9fdmVyc2lvbl9lbnRyeTsKIAogc3RhdGljIHZvaWQgc25kX2luZm9fdmVyc2lvbl9yZWFkKHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnksIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcikKIHsKQEAgLTk1OCw3ICs5ODksNiBAQAogCWVudHJ5ID0gc25kX2luZm9fY3JlYXRlX21vZHVsZV9lbnRyeShUSElTX01PRFVMRSwgInZlcnNpb24iLCBOVUxMKTsKIAlpZiAoZW50cnkgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAyNTY7CiAJZW50cnktPmMudGV4dC5yZWFkID0gc25kX2luZm9fdmVyc2lvbl9yZWFkOwogCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9pbmZvX29zcy5jIGIvc291bmQvY29yZS9pbmZvX29zcy5jCmluZGV4IGY5Y2U4NTQuLmJiMmM0MGQgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvaW5mb19vc3MuYworKysgYi9zb3VuZC9jb3JlL2luZm9fb3NzLmMKQEAgLTY0LDYgKzY0LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfb3NzX2luZm9fcmVnaXN0ZXIpOworCiBleHRlcm4gdm9pZCBzbmRfY2FyZF9pbmZvX3JlYWRfb3NzKHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcik7CiAKIHN0YXRpYyBpbnQgc25kX3NuZHN0YXRfc2hvd19zdHJpbmdzKHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZiwgY2hhciAqaWQsIGludCBkZXYpCkBAIC0xMTcsNyArMTE5LDYgQEAKIAogCW1lbXNldChzbmRfc25kc3RhdF9zdHJpbmdzLCAwLCBzaXplb2Yoc25kX3NuZHN0YXRfc3RyaW5ncykpOwogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfbW9kdWxlX2VudHJ5KFRISVNfTU9EVUxFLCAic25kc3RhdCIsIHNuZF9vc3Nfcm9vdCkpICE9IE5VTEwpIHsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAyMDQ4OwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfc25kc3RhdF9wcm9jX3JlYWQ7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvaW5pdC5jIGIvc291bmQvY29yZS9pbml0LmMKaW5kZXggMzllZDJlNS4uNGQ5MjU4OCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9pbml0LmMKKysrIGIvc291bmQvY29yZS9pbml0LmMKQEAgLTM4LDEyICszOCwxNSBAQAogCXN0cnVjdCBzbmRfc2h1dGRvd25fZl9vcHMgKm5leHQ7CiB9OwogCi11bnNpZ25lZCBpbnQgc25kX2NhcmRzX2xvY2sgPSAwOwkvKiBsb2NrZWQgZm9yIHJlZ2lzdGVyaW5nL3VzaW5nICovCi1zdHJ1Y3Qgc25kX2NhcmQgKnNuZF9jYXJkc1tTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUy0xKV0gPSBOVUxMfTsKLURFRklORV9SV0xPQ0soc25kX2NhcmRfcndsb2NrKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc25kX2NhcmRzX2xvY2s7CS8qIGxvY2tlZCBmb3IgcmVnaXN0ZXJpbmcvdXNpbmcgKi8KK3N0cnVjdCBzbmRfY2FyZCAqc25kX2NhcmRzW1NORFJWX0NBUkRTXTsKK0VYUE9SVF9TWU1CT0woc25kX2NhcmRzKTsKKworc3RhdGljIERFRklORV9NVVRFWChzbmRfY2FyZF9tdXRleCk7CiAKICNpZiBkZWZpbmVkKENPTkZJR19TTkRfTUlYRVJfT1NTKSB8fCBkZWZpbmVkKENPTkZJR19TTkRfTUlYRVJfT1NTX01PRFVMRSkKIGludCAoKnNuZF9taXhlcl9vc3Nfbm90aWZ5X2NhbGxiYWNrKShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIGludCBmcmVlX2ZsYWcpOworRVhQT1JUX1NZTUJPTChzbmRfbWl4ZXJfb3NzX25vdGlmeV9jYWxsYmFjayk7CiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCkBAIC02Niw3ICs2OSw2IEBACiAJCXNuZF9wcmludGQoInVuYWJsZSB0byBjcmVhdGUgY2FyZCBlbnRyeVxuIik7CiAJCXJldHVybiBlcnI7CiAJfQotCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gUEFHRV9TSVpFOwogCWVudHJ5LT5jLnRleHQucmVhZCA9IHNuZF9jYXJkX2lkX3JlYWQ7CiAJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJc25kX2luZm9fZnJlZV9lbnRyeShlbnRyeSk7CkBAIC0xMTAsNyArMTEyLDcgQEAKIAkJc3RybGNweShjYXJkLT5pZCwgeGlkLCBzaXplb2YoY2FyZC0+aWQpKTsKIAl9CiAJZXJyID0gMDsKLQl3cml0ZV9sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAlpZiAoaWR4IDwgMCkgewogCQlpbnQgaWR4MjsKIAkJZm9yIChpZHgyID0gMDsgaWR4MiA8IFNORFJWX0NBUkRTOyBpZHgyKyspCkBAIC0xMjgsMTIgKzEzMCwxMiBAQAogCWVsc2UKIAkJZXJyID0gLUVOT0RFVjsKIAlpZiAoaWR4IDwgMCB8fCBlcnIgPCAwKSB7Ci0JCXdyaXRlX3VubG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzbmRfY2FyZF9tdXRleCk7CiAJCXNuZF9wcmludGsoS0VSTl9FUlIgImNhbm5vdCBmaW5kIHRoZSBzbG90IGZvciBpbmRleCAlZCAocmFuZ2UgMC0laSlcbiIsIGlkeCwgc25kX2VjYXJkc19saW1pdCAtIDEpOwogCQlnb3RvIF9fZXJyb3I7CiAJfQogCXNuZF9jYXJkc19sb2NrIHw9IDEgPDwgaWR4OwkJLyogbG9jayBpdCAqLwotCXdyaXRlX3VubG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKIAljYXJkLT5udW1iZXIgPSBpZHg7CiAJY2FyZC0+bW9kdWxlID0gbW9kdWxlOwogCUlOSVRfTElTVF9IRUFEKCZjYXJkLT5kZXZpY2VzKTsKQEAgLTE2OSw2ICsxNzEsMTkgQEAKICAgICAgIAlyZXR1cm4gTlVMTDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9uZXcpOworCisvKiByZXR1cm4gbm9uLXplcm8gaWYgYSBjYXJkIGlzIGFscmVhZHkgbG9ja2VkICovCitpbnQgc25kX2NhcmRfbG9ja2VkKGludCBjYXJkKQoreworCWludCBsb2NrZWQ7CisKKwltdXRleF9sb2NrKCZzbmRfY2FyZF9tdXRleCk7CisJbG9ja2VkID0gc25kX2NhcmRzX2xvY2sgJiAoMSA8PCBjYXJkKTsKKwltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKKwlyZXR1cm4gbG9ja2VkOworfQorCiBzdGF0aWMgbG9mZl90IHNuZF9kaXNjb25uZWN0X2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWcpCiB7CiAJcmV0dXJuIC1FTk9ERVY7CkBAIC0yMzYsOSArMjUxLDkgQEAKIAlzcGluX3VubG9jaygmY2FyZC0+ZmlsZXNfbG9jayk7CiAKIAkvKiBwaGFzZSAxOiBkaXNhYmxlIGZvcHMgKHVzZXIgc3BhY2UpIG9wZXJhdGlvbnMgZm9yIEFMU0EgQVBJICovCi0Jd3JpdGVfbG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwltdXRleF9sb2NrKCZzbmRfY2FyZF9tdXRleCk7CiAJc25kX2NhcmRzW2NhcmQtPm51bWJlcl0gPSBOVUxMOwotCXdyaXRlX3VubG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKIAkKIAkvKiBwaGFzZSAyOiByZXBsYWNlIGZpbGUtPmZfb3Agd2l0aCBzcGVjaWFsIGR1bW15IG9wZXJhdGlvbnMgKi8KIAkKQEAgLTI5OCw2ICszMTMsOCBAQAogCXJldHVybiAwOwkKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9kaXNjb25uZWN0KTsKKwogLyoqCiAgKiAgc25kX2NhcmRfZnJlZSAtIGZyZWVzIGdpdmVuIHNvdW5kY2FyZCBzdHJ1Y3R1cmUKICAqICBAY2FyZDogc291bmRjYXJkIHN0cnVjdHVyZQpAQCAtMzE1LDkgKzMzMiw5IEBACiAKIAlpZiAoY2FyZCA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKLQl3cml0ZV9sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAlzbmRfY2FyZHNbY2FyZC0+bnVtYmVyXSA9IE5VTEw7Ci0Jd3JpdGVfdW5sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCW11dGV4X3VubG9jaygmc25kX2NhcmRfbXV0ZXgpOwogCiAjaWZkZWYgQ09ORklHX1BNCiAJd2FrZV91cCgmY2FyZC0+cG93ZXJfc2xlZXApOwpAQCAtMzUzLDEzICszNzAsMTUgQEAKIAkJY2FyZC0+c19mX29wcyA9IHNfZl9vcHMtPm5leHQ7CiAJCWtmcmVlKHNfZl9vcHMpOwogCX0KLQl3cml0ZV9sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAlzbmRfY2FyZHNfbG9jayAmPSB+KDEgPDwgY2FyZC0+bnVtYmVyKTsKLQl3cml0ZV91bmxvY2soJnNuZF9jYXJkX3J3bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZzbmRfY2FyZF9tdXRleCk7CiAJa2ZyZWUoY2FyZCk7CiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2NhcmRfZnJlZSk7CisKIHN0YXRpYyB2b2lkIHNuZF9jYXJkX2ZyZWVfdGhyZWFkKHZvaWQgKiBfX2NhcmQpCiB7CiAJc3RydWN0IHNuZF9jYXJkICpjYXJkID0gX19jYXJkOwpAQCAtNDA1LDYgKzQyNCw4IEBACiAJcmV0dXJuIC1FRkFVTFQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2NhcmRfZnJlZV9pbl90aHJlYWQpOworCiBzdGF0aWMgdm9pZCBjaG9vc2VfZGVmYXVsdF9pZChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQpCiB7CiAJaW50IGksIGxlbiwgaWR4X2ZsYWcgPSAwLCBsb29wcyA9IFNORFJWX0NBUkRTOwpAQCAtNDg3LDE2ICs1MDgsMTYgQEAKIAlzbmRfYXNzZXJ0KGNhcmQgIT0gTlVMTCwgcmV0dXJuIC1FSU5WQUwpOwogCWlmICgoZXJyID0gc25kX2RldmljZV9yZWdpc3Rlcl9hbGwoY2FyZCkpIDwgMCkKIAkJcmV0dXJuIGVycjsKLQl3cml0ZV9sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAlpZiAoc25kX2NhcmRzW2NhcmQtPm51bWJlcl0pIHsKIAkJLyogYWxyZWFkeSByZWdpc3RlcmVkICovCi0JCXdyaXRlX3VubG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZzbmRfY2FyZF9tdXRleCk7CiAJCXJldHVybiAwOwogCX0KIAlpZiAoY2FyZC0+aWRbMF0gPT0gJ1wwJykKIAkJY2hvb3NlX2RlZmF1bHRfaWQoY2FyZCk7CiAJc25kX2NhcmRzW2NhcmQtPm51bWJlcl0gPSBjYXJkOwotCXdyaXRlX3VubG9jaygmc25kX2NhcmRfcndsb2NrKTsKKwltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKIAlpbml0X2luZm9fZm9yX2NhcmQoY2FyZCk7CiAjaWYgZGVmaW5lZChDT05GSUdfU05EX01JWEVSX09TUykgfHwgZGVmaW5lZChDT05GSUdfU05EX01JWEVSX09TU19NT0RVTEUpCiAJaWYgKHNuZF9taXhlcl9vc3Nfbm90aWZ5X2NhbGxiYWNrKQpAQCAtNTA1LDggKzUyNiwxMCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9jYXJkX3JlZ2lzdGVyKTsKKwogI2lmZGVmIENPTkZJR19QUk9DX0ZTCi1zdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfY2FyZF9pbmZvX2VudHJ5ID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF9jYXJkX2luZm9fZW50cnk7CiAKIHN0YXRpYyB2b2lkIHNuZF9jYXJkX2luZm9fcmVhZChzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LAogCQkJICAgICAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcikKQEAgLTUxNSw3ICs1MzgsNyBAQAogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKIAogCWZvciAoaWR4ID0gY291bnQgPSAwOyBpZHggPCBTTkRSVl9DQVJEUzsgaWR4KyspIHsKLQkJcmVhZF9sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCQltdXRleF9sb2NrKCZzbmRfY2FyZF9tdXRleCk7CiAJCWlmICgoY2FyZCA9IHNuZF9jYXJkc1tpZHhdKSAhPSBOVUxMKSB7CiAJCQljb3VudCsrOwogCQkJc25kX2lwcmludGYoYnVmZmVyLCAiJTJpIFslLTE1c106ICVzIC0gJXNcbiIsCkBAIC01MjYsNyArNTQ5LDcgQEAKIAkJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiAgICAgICAgICAgICAgICAgICAgICAlc1xuIiwKIAkJCQkJY2FyZC0+bG9uZ25hbWUpOwogCQl9Ci0JCXJlYWRfdW5sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCQltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKIAl9CiAJaWYgKCFjb3VudCkKIAkJc25kX2lwcmludGYoYnVmZmVyLCAiLS0tIG5vIHNvdW5kY2FyZHMgLS0tXG4iKTsKQEAgLTU0MCwxMiArNTYzLDEyIEBACiAJc3RydWN0IHNuZF9jYXJkICpjYXJkOwogCiAJZm9yIChpZHggPSBjb3VudCA9IDA7IGlkeCA8IFNORFJWX0NBUkRTOyBpZHgrKykgewotCQlyZWFkX2xvY2soJnNuZF9jYXJkX3J3bG9jayk7CisJCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAkJaWYgKChjYXJkID0gc25kX2NhcmRzW2lkeF0pICE9IE5VTEwpIHsKIAkJCWNvdW50Kys7CiAJCQlzbmRfaXByaW50ZihidWZmZXIsICIlc1xuIiwgY2FyZC0+bG9uZ25hbWUpOwogCQl9Ci0JCXJlYWRfdW5sb2NrKCZzbmRfY2FyZF9yd2xvY2spOworCQltdXRleF91bmxvY2soJnNuZF9jYXJkX211dGV4KTsKIAl9CiAJaWYgKCFjb3VudCkgewogCQlzbmRfaXByaW50ZihidWZmZXIsICItLS0gbm8gc291bmRjYXJkcyAtLS1cbiIpOwpAQCAtNTYzLDExICs1ODYsMTEgQEAKIAlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CiAKIAlmb3IgKGlkeCA9IDA7IGlkeCA8IFNORFJWX0NBUkRTOyBpZHgrKykgewotCQlyZWFkX2xvY2soJnNuZF9jYXJkX3J3bG9jayk7CisJCW11dGV4X2xvY2soJnNuZF9jYXJkX211dGV4KTsKIAkJaWYgKChjYXJkID0gc25kX2NhcmRzW2lkeF0pICE9IE5VTEwpCiAJCQlzbmRfaXByaW50ZihidWZmZXIsICIlMmkgJXNcbiIsCiAJCQkJICAgIGlkeCwgY2FyZC0+bW9kdWxlLT5uYW1lKTsKLQkJcmVhZF91bmxvY2soJnNuZF9jYXJkX3J3bG9jayk7CisJCW11dGV4X3VubG9jaygmc25kX2NhcmRfbXV0ZXgpOwogCX0KIH0KICNlbmRpZgpAQCAtNTc5LDcgKzYwMiw2IEBACiAJZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfbW9kdWxlX2VudHJ5KFRISVNfTU9EVUxFLCAiY2FyZHMiLCBOVUxMKTsKIAlpZiAoISBlbnRyeSkKIAkJcmV0dXJuIC1FTk9NRU07Ci0JZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSBQQUdFX1NJWkU7CiAJZW50cnktPmMudGV4dC5yZWFkID0gc25kX2NhcmRfaW5mb19yZWFkOwogCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpAQCAtNTkwLDcgKzYxMiw2IEBACiAjaWZkZWYgTU9EVUxFCiAJZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfbW9kdWxlX2VudHJ5KFRISVNfTU9EVUxFLCAibW9kdWxlcyIsIE5VTEwpOwogCWlmIChlbnRyeSkgewotCQllbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IFBBR0VfU0laRTsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gc25kX2NhcmRfbW9kdWxlX2luZm9fcmVhZDsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApCiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKQEAgLTY0NCw2ICs2NjUsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9jb21wb25lbnRfYWRkKTsKKwogLyoqCiAgKiAgc25kX2NhcmRfZmlsZV9hZGQgLSBhZGQgdGhlIGZpbGUgdG8gdGhlIGZpbGUgbGlzdCBvZiB0aGUgY2FyZAogICogIEBjYXJkOiBzb3VuZGNhcmQgc3RydWN0dXJlCkBAIC02NzYsNiArNjk5LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9maWxlX2FkZCk7CisKIC8qKgogICogIHNuZF9jYXJkX2ZpbGVfcmVtb3ZlIC0gcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGZpbGUgbGlzdAogICogIEBjYXJkOiBzb3VuZGNhcmQgc3RydWN0dXJlCkBAIC03MTcsNiArNzQyLDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9maWxlX3JlbW92ZSk7CisKICNpZmRlZiBDT05GSUdfUE0KIC8qKgogICogIHNuZF9wb3dlcl93YWl0IC0gd2FpdCB1bnRpbCB0aGUgcG93ZXItc3RhdGUgaXMgY2hhbmdlZC4KQEAgLTc1Myw0ICs3ODAsNSBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3Bvd2VyX3dhaXQpOwogI2VuZGlmIC8qIENPTkZJR19QTSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9pc2FkbWEuYyBiL3NvdW5kL2NvcmUvaXNhZG1hLmMKaW5kZXggMWEzNzg5NS4uZDUyMzk4NyAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9pc2FkbWEuYworKysgYi9zb3VuZC9jb3JlL2lzYWRtYS5jCkBAIC01Niw2ICs1Niw4IEBACiAJcmVsZWFzZV9kbWFfbG9jayhmbGFncyk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2RtYV9wcm9ncmFtKTsKKwogLyoqCiAgKiBzbmRfZG1hX2Rpc2FibGUgLSBzdG9wIHRoZSBJU0EgRE1BIHRyYW5zZmVyCiAgKiBAZG1hOiB0aGUgZG1hIG51bWJlcgpAQCAtNzIsNiArNzQsOCBAQAogCXJlbGVhc2VfZG1hX2xvY2soZmxhZ3MpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9kbWFfZGlzYWJsZSk7CisKIC8qKgogICogc25kX2RtYV9wb2ludGVyIC0gcmV0dXJuIHRoZSBjdXJyZW50IHBvaW50ZXIgdG8gRE1BIHRyYW5zZmVyIGJ1ZmZlciBpbiBieXRlcwogICogQGRtYTogdGhlIGRtYSBudW1iZXIKQEAgLTEwMSwzICsxMDUsNSBAQAogCWVsc2UKIAkJcmV0dXJuIHNpemUgLSByZXN1bHQ7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX2RtYV9wb2ludGVyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvbWVtb3J5LmMgYi9zb3VuZC9jb3JlL21lbW9yeS5jCmluZGV4IDg2MmQ2MmQuLmZlNTk4NTAgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvbWVtb3J5LmMKKysrIGIvc291bmQvY29yZS9tZW1vcnkuYwpAQCAtMjEsNiArMjEsNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogCkBAIC01NSw2ICs1Niw4IEBACiAjZW5kaWYKIH0KIAorRVhQT1JUX1NZTUJPTChjb3B5X3RvX3VzZXJfZnJvbWlvKTsKKwogLyoqCiAgKiBjb3B5X2Zyb21fdXNlcl90b2lvIC0gY29weSBkYXRhIGZyb20gdXNlci1zcGFjZSB0byBtbWlvLXNwYWNlCiAgKiBAZHN0OiB0aGUgZGVzdGluYXRpb24gcG9pbnRlciBvbiBtbWlvLXNwYWNlCkBAIC04NSwzICs4OCw1IEBACiAJcmV0dXJuIDA7CiAjZW5kaWYKIH0KKworRVhQT1JUX1NZTUJPTChjb3B5X2Zyb21fdXNlcl90b2lvKTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvbWlzYy5jIGIvc291bmQvY29yZS9taXNjLmMKaW5kZXggYjUzZTU2My4uMDNmYzcxMSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9taXNjLmMKKysrIGIvc291bmQvY29yZS9taXNjLmMKQEAgLTM0LDYgKzM0LDggQEAKIAl9CiB9CiAKK0VYUE9SVF9TWU1CT0wocmVsZWFzZV9hbmRfZnJlZV9yZXNvdXJjZSk7CisKICNpZmRlZiBDT05GSUdfU05EX1ZFUkJPU0VfUFJJTlRLCiB2b2lkIHNuZF92ZXJib3NlX3ByaW50ayhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CkBAIC01MSw2ICs1Myw4IEBACiAJdnByaW50ayhmb3JtYXQsIGFyZ3MpOwogCXZhX2VuZChhcmdzKTsKIH0KKworRVhQT1JUX1NZTUJPTChzbmRfdmVyYm9zZV9wcmludGspOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKENPTkZJR19TTkRfREVCVUcpICYmIGRlZmluZWQoQ09ORklHX1NORF9WRVJCT1NFX1BSSU5USykKQEAgLTcxLDQgKzc1LDYgQEAKIAl2YV9lbmQoYXJncyk7CiAKIH0KKworRVhQT1JUX1NZTUJPTChzbmRfdmVyYm9zZV9wcmludGQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL29zcy9taXhlcl9vc3MuYyBiL3NvdW5kL2NvcmUvb3NzL21peGVyX29zcy5jCmluZGV4IDljNjhiYzMuLjcxYjUwODAgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvb3NzL21peGVyX29zcy5jCisrKyBiL3NvdW5kL2NvcmUvb3NzL21peGVyX29zcy5jCkBAIC0xMTgyLDkgKzExODIsNyBAQAogCQlyZXR1cm47CiAJZW50cnktPmNvbnRlbnQgPSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDsKIAllbnRyeS0+bW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPIHwgU19JV1VTUjsKLQllbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IDgxOTI7CiAJZW50cnktPmMudGV4dC5yZWFkID0gc25kX21peGVyX29zc19wcm9jX3JlYWQ7Ci0JZW50cnktPmMudGV4dC53cml0ZV9zaXplID0gODE5MjsKIAllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX21peGVyX29zc19wcm9jX3dyaXRlOwogCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBtaXhlcjsKIAlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9vc3MvcGNtX29zcy5jIGIvc291bmQvY29yZS9vc3MvcGNtX29zcy5jCmluZGV4IGFjOTkwYmYuLmY1ZmY0ZjQgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvb3NzL3BjbV9vc3MuYworKysgYi9zb3VuZC9jb3JlL29zcy9wY21fb3NzLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogI2RlZmluZSBPU1NfQUxTQUVNVUxWRVIJCV9TSU9SICgnTScsIDI0OSwgaW50KQogCi1zdGF0aWMgaW50IGRzcF9tYXBbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMtMSldID0gMH07CitzdGF0aWMgaW50IGRzcF9tYXBbU05EUlZfQ0FSRFNdOwogc3RhdGljIGludCBhZHNwX21hcFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUy0xKV0gPSAxfTsKIHN0YXRpYyBpbnQgbm9uYmxvY2tfb3BlbiA9IDE7CiAKQEAgLTc4LDYgKzc4LDQ4NyBAQAogCXNldF9mcyhmcyk7CiB9CiAKKy8qCisgKiBoZWxwZXIgZnVuY3Rpb25zIHRvIHByb2Nlc3MgaHdfcGFyYW1zCisgKi8KK3N0YXRpYyBpbnQgc25kX2ludGVydmFsX3JlZmluZV9taW4oc3RydWN0IHNuZF9pbnRlcnZhbCAqaSwgdW5zaWduZWQgaW50IG1pbiwgaW50IG9wZW5taW4pCit7CisJaW50IGNoYW5nZWQgPSAwOworCWlmIChpLT5taW4gPCBtaW4pIHsKKwkJaS0+bWluID0gbWluOworCQlpLT5vcGVubWluID0gb3Blbm1pbjsKKwkJY2hhbmdlZCA9IDE7CisJfSBlbHNlIGlmIChpLT5taW4gPT0gbWluICYmICFpLT5vcGVubWluICYmIG9wZW5taW4pIHsKKwkJaS0+b3Blbm1pbiA9IDE7CisJCWNoYW5nZWQgPSAxOworCX0KKwlpZiAoaS0+aW50ZWdlcikgeworCQlpZiAoaS0+b3Blbm1pbikgeworCQkJaS0+bWluKys7CisJCQlpLT5vcGVubWluID0gMDsKKwkJfQorCX0KKwlpZiAoc25kX2ludGVydmFsX2NoZWNrZW1wdHkoaSkpIHsKKwkJc25kX2ludGVydmFsX25vbmUoaSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gY2hhbmdlZDsKK30KKworc3RhdGljIGludCBzbmRfaW50ZXJ2YWxfcmVmaW5lX21heChzdHJ1Y3Qgc25kX2ludGVydmFsICppLCB1bnNpZ25lZCBpbnQgbWF4LCBpbnQgb3Blbm1heCkKK3sKKwlpbnQgY2hhbmdlZCA9IDA7CisJaWYgKGktPm1heCA+IG1heCkgeworCQlpLT5tYXggPSBtYXg7CisJCWktPm9wZW5tYXggPSBvcGVubWF4OworCQljaGFuZ2VkID0gMTsKKwl9IGVsc2UgaWYgKGktPm1heCA9PSBtYXggJiYgIWktPm9wZW5tYXggJiYgb3Blbm1heCkgeworCQlpLT5vcGVubWF4ID0gMTsKKwkJY2hhbmdlZCA9IDE7CisJfQorCWlmIChpLT5pbnRlZ2VyKSB7CisJCWlmIChpLT5vcGVubWF4KSB7CisJCQlpLT5tYXgtLTsKKwkJCWktPm9wZW5tYXggPSAwOworCQl9CisJfQorCWlmIChzbmRfaW50ZXJ2YWxfY2hlY2tlbXB0eShpKSkgeworCQlzbmRfaW50ZXJ2YWxfbm9uZShpKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCXJldHVybiBjaGFuZ2VkOworfQorCitzdGF0aWMgaW50IHNuZF9pbnRlcnZhbF9yZWZpbmVfc2V0KHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmksIHVuc2lnbmVkIGludCB2YWwpCit7CisJc3RydWN0IHNuZF9pbnRlcnZhbCB0OworCXQuZW1wdHkgPSAwOworCXQubWluID0gdC5tYXggPSB2YWw7CisJdC5vcGVubWluID0gdC5vcGVubWF4ID0gMDsKKwl0LmludGVnZXIgPSAxOworCXJldHVybiBzbmRfaW50ZXJ2YWxfcmVmaW5lKGksICZ0KTsKK30KKworLyoqCisgKiBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21pbgorICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQorICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCisgKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICoKKyAqIFJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBmb3IgZmllbGQgUEFSLgorICovCitzdGF0aWMgdW5zaWduZWQgaW50CitzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21pbihjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCSAgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIGludCAqZGlyKQoreworCWlmIChod19pc19tYXNrKHZhcikpIHsKKwkJaWYgKGRpcikKKwkJCSpkaXIgPSAwOworCQlyZXR1cm4gc25kX21hc2tfbWluKGh3X3BhcmFtX21hc2tfYyhwYXJhbXMsIHZhcikpOworCX0KKwlpZiAoaHdfaXNfaW50ZXJ2YWwodmFyKSkgeworCQljb25zdCBzdHJ1Y3Qgc25kX2ludGVydmFsICppID0gaHdfcGFyYW1faW50ZXJ2YWxfYyhwYXJhbXMsIHZhcik7CisJCWlmIChkaXIpCisJCQkqZGlyID0gaS0+b3Blbm1pbjsKKwkJcmV0dXJuIHNuZF9pbnRlcnZhbF9taW4oaSk7CisJfQorCXJldHVybiAtRUlOVkFMOworfQorCisvKioKKyAqIHNuZF9wY21faHdfcGFyYW1fdmFsdWVfbWF4CisgKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCisgKiBAdmFyOiBwYXJhbWV0ZXIgdG8gcmV0cmlldmUKKyAqIEBkaXI6IHBvaW50ZXIgdG8gdGhlIGRpcmVjdGlvbiAoLTEsMCwxKSBvciBOVUxMCisgKgorICogUmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciBmaWVsZCBQQVIuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQKK3NuZF9wY21faHdfcGFyYW1fdmFsdWVfbWF4KGNvbnN0IHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJICAgc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCit7CisJaWYgKGh3X2lzX21hc2sodmFyKSkgeworCQlpZiAoZGlyKQorCQkJKmRpciA9IDA7CisJCXJldHVybiBzbmRfbWFza19tYXgoaHdfcGFyYW1fbWFza19jKHBhcmFtcywgdmFyKSk7CisJfQorCWlmIChod19pc19pbnRlcnZhbCh2YXIpKSB7CisJCWNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkgPSBod19wYXJhbV9pbnRlcnZhbF9jKHBhcmFtcywgdmFyKTsKKwkJaWYgKGRpcikKKwkJCSpkaXIgPSAtIChpbnQpIGktPm9wZW5tYXg7CisJCXJldHVybiBzbmRfaW50ZXJ2YWxfbWF4KGkpOworCX0KKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBfc25kX3BjbV9od19wYXJhbV9tYXNrKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJCSAgc25kX3BjbV9od19wYXJhbV90IHZhciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBzbmRfbWFzayAqdmFsKQoreworCWludCBjaGFuZ2VkOworCWNoYW5nZWQgPSBzbmRfbWFza19yZWZpbmUoaHdfcGFyYW1fbWFzayhwYXJhbXMsIHZhciksIHZhbCk7CisJaWYgKGNoYW5nZWQpIHsKKwkJcGFyYW1zLT5jbWFzayB8PSAxIDw8IHZhcjsKKwkJcGFyYW1zLT5ybWFzayB8PSAxIDw8IHZhcjsKKwl9CisJcmV0dXJuIGNoYW5nZWQ7Cit9CisKK3N0YXRpYyBpbnQgc25kX3BjbV9od19wYXJhbV9tYXNrKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLAorCQkJCSBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCQkgc25kX3BjbV9od19wYXJhbV90IHZhciwKKwkJCQkgY29uc3Qgc3RydWN0IHNuZF9tYXNrICp2YWwpCit7CisJaW50IGNoYW5nZWQgPSBfc25kX3BjbV9od19wYXJhbV9tYXNrKHBhcmFtcywgdmFyLCB2YWwpOworCWlmIChjaGFuZ2VkIDwgMCkKKwkJcmV0dXJuIGNoYW5nZWQ7CisJaWYgKHBhcmFtcy0+cm1hc2spIHsKKwkJaW50IGVyciA9IHNuZF9wY21faHdfcmVmaW5lKHBjbSwgcGFyYW1zKTsKKwkJaWYgKGVyciA8IDApCisJCQlyZXR1cm4gZXJyOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfc25kX3BjbV9od19wYXJhbV9taW4oc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCB2YWwsCisJCQkJIGludCBkaXIpCit7CisJaW50IGNoYW5nZWQ7CisJaW50IG9wZW4gPSAwOworCWlmIChkaXIpIHsKKwkJaWYgKGRpciA+IDApIHsKKwkJCW9wZW4gPSAxOworCQl9IGVsc2UgaWYgKGRpciA8IDApIHsKKwkJCWlmICh2YWwgPiAwKSB7CisJCQkJb3BlbiA9IDE7CisJCQkJdmFsLS07CisJCQl9CisJCX0KKwl9CisJaWYgKGh3X2lzX21hc2sodmFyKSkKKwkJY2hhbmdlZCA9IHNuZF9tYXNrX3JlZmluZV9taW4oaHdfcGFyYW1fbWFzayhwYXJhbXMsIHZhciksCisJCQkJCSAgICAgIHZhbCArICEhb3Blbik7CisJZWxzZSBpZiAoaHdfaXNfaW50ZXJ2YWwodmFyKSkKKwkJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9yZWZpbmVfbWluKGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgdmFyKSwKKwkJCQkJCSAgdmFsLCBvcGVuKTsKKwllbHNlCisJCXJldHVybiAtRUlOVkFMOworCWlmIChjaGFuZ2VkKSB7CisJCXBhcmFtcy0+Y21hc2sgfD0gMSA8PCB2YXI7CisJCXBhcmFtcy0+cm1hc2sgfD0gMSA8PCB2YXI7CisJfQorCXJldHVybiBjaGFuZ2VkOworfQorCisvKioKKyAqIHNuZF9wY21faHdfcGFyYW1fbWluCisgKiBAcGNtOiBQQ00gaW5zdGFuY2UKKyAqIEBwYXJhbXM6IHRoZSBod19wYXJhbXMgaW5zdGFuY2UKKyAqIEB2YXI6IHBhcmFtZXRlciB0byByZXRyaWV2ZQorICogQHZhbDogbWluaW1hbCB2YWx1ZQorICogQGRpcjogcG9pbnRlciB0byB0aGUgZGlyZWN0aW9uICgtMSwwLDEpIG9yIE5VTEwKKyAqCisgKiBJbnNpZGUgY29uZmlndXJhdGlvbiBzcGFjZSBkZWZpbmVkIGJ5IFBBUkFNUyByZW1vdmUgZnJvbSBQQVIgYWxsIAorICogdmFsdWVzIDwgVkFMLiBSZWR1Y2UgY29uZmlndXJhdGlvbiBzcGFjZSBhY2NvcmRpbmdseS4KKyAqIFJldHVybiBuZXcgbWluaW11bSBvciAtRUlOVkFMIGlmIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIGVtcHR5CisgKi8KK3N0YXRpYyBpbnQgc25kX3BjbV9od19wYXJhbV9taW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sCisJCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwKKwkJCQlpbnQgKmRpcikKK3sKKwlpbnQgY2hhbmdlZCA9IF9zbmRfcGNtX2h3X3BhcmFtX21pbihwYXJhbXMsIHZhciwgdmFsLCBkaXIgPyAqZGlyIDogMCk7CisJaWYgKGNoYW5nZWQgPCAwKQorCQlyZXR1cm4gY2hhbmdlZDsKKwlpZiAocGFyYW1zLT5ybWFzaykgeworCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOworCQlpZiAoZXJyIDwgMCkKKwkJCXJldHVybiBlcnI7CisJfQorCXJldHVybiBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21pbihwYXJhbXMsIHZhciwgZGlyKTsKK30KKworc3RhdGljIGludCBfc25kX3BjbV9od19wYXJhbV9tYXgoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCB2YWwsCisJCQkJIGludCBkaXIpCit7CisJaW50IGNoYW5nZWQ7CisJaW50IG9wZW4gPSAwOworCWlmIChkaXIpIHsKKwkJaWYgKGRpciA8IDApIHsKKwkJCW9wZW4gPSAxOworCQl9IGVsc2UgaWYgKGRpciA+IDApIHsKKwkJCW9wZW4gPSAxOworCQkJdmFsKys7CisJCX0KKwl9CisJaWYgKGh3X2lzX21hc2sodmFyKSkgeworCQlpZiAodmFsID09IDAgJiYgb3BlbikgeworCQkJc25kX21hc2tfbm9uZShod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKSk7CisJCQljaGFuZ2VkID0gLUVJTlZBTDsKKwkJfSBlbHNlCisJCQljaGFuZ2VkID0gc25kX21hc2tfcmVmaW5lX21heChod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKSwKKwkJCQkJCSAgICAgIHZhbCAtICEhb3Blbik7CisJfSBlbHNlIGlmIChod19pc19pbnRlcnZhbCh2YXIpKQorCQljaGFuZ2VkID0gc25kX2ludGVydmFsX3JlZmluZV9tYXgoaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLCB2YXIpLAorCQkJCQkJICB2YWwsIG9wZW4pOworCWVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKGNoYW5nZWQpIHsKKwkJcGFyYW1zLT5jbWFzayB8PSAxIDw8IHZhcjsKKwkJcGFyYW1zLT5ybWFzayB8PSAxIDw8IHZhcjsKKwl9CisJcmV0dXJuIGNoYW5nZWQ7Cit9CisKKy8qKgorICogc25kX3BjbV9od19wYXJhbV9tYXgKKyAqIEBwY206IFBDTSBpbnN0YW5jZQorICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQorICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCisgKiBAdmFsOiBtYXhpbWFsIHZhbHVlCisgKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICoKKyAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgUEFSQU1TIHJlbW92ZSBmcm9tIFBBUiBhbGwgCisgKiAgdmFsdWVzID49IFZBTCArIDEuIFJlZHVjZSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY29yZGluZ2x5LgorICogIFJldHVybiBuZXcgbWF4aW11bSBvciAtRUlOVkFMIGlmIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIGVtcHR5CisgKi8KK3N0YXRpYyBpbnQgc25kX3BjbV9od19wYXJhbV9tYXgoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sCisJCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwKKwkJCQlpbnQgKmRpcikKK3sKKwlpbnQgY2hhbmdlZCA9IF9zbmRfcGNtX2h3X3BhcmFtX21heChwYXJhbXMsIHZhciwgdmFsLCBkaXIgPyAqZGlyIDogMCk7CisJaWYgKGNoYW5nZWQgPCAwKQorCQlyZXR1cm4gY2hhbmdlZDsKKwlpZiAocGFyYW1zLT5ybWFzaykgeworCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOworCQlpZiAoZXJyIDwgMCkKKwkJCXJldHVybiBlcnI7CisJfQorCXJldHVybiBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21heChwYXJhbXMsIHZhciwgZGlyKTsKK30KKworc3RhdGljIGludCBib3VuZGFyeV9zdWIoaW50IGEsIGludCBhZGlyLAorCQkJaW50IGIsIGludCBiZGlyLAorCQkJaW50ICpjLCBpbnQgKmNkaXIpCit7CisJYWRpciA9IGFkaXIgPCAwID8gLTEgOiAoYWRpciA+IDAgPyAxIDogMCk7CisJYmRpciA9IGJkaXIgPCAwID8gLTEgOiAoYmRpciA+IDAgPyAxIDogMCk7CisJKmMgPSBhIC0gYjsKKwkqY2RpciA9IGFkaXIgLSBiZGlyOworCWlmICgqY2RpciA9PSAtMikgeworCQkoKmMpLS07CisJfSBlbHNlIGlmICgqY2RpciA9PSAyKSB7CisJCSgqYykrKzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYm91bmRhcnlfbHQodW5zaWduZWQgaW50IGEsIGludCBhZGlyLAorCQkgICAgICAgdW5zaWduZWQgaW50IGIsIGludCBiZGlyKQoreworCWlmIChhZGlyIDwgMCkgeworCQlhLS07CisJCWFkaXIgPSAxOworCX0gZWxzZSBpZiAoYWRpciA+IDApCisJCWFkaXIgPSAxOworCWlmIChiZGlyIDwgMCkgeworCQliLS07CisJCWJkaXIgPSAxOworCX0gZWxzZSBpZiAoYmRpciA+IDApCisJCWJkaXIgPSAxOworCXJldHVybiBhIDwgYiB8fCAoYSA9PSBiICYmIGFkaXIgPCBiZGlyKTsKK30KKworLyogUmV0dXJuIDEgaWYgbWluIGlzIG5lYXJlciB0byBiZXN0IHRoYW4gbWF4ICovCitzdGF0aWMgaW50IGJvdW5kYXJ5X25lYXJlcihpbnQgbWluLCBpbnQgbWluZGlyLAorCQkJICAgaW50IGJlc3QsIGludCBiZXN0ZGlyLAorCQkJICAgaW50IG1heCwgaW50IG1heGRpcikKK3sKKwlpbnQgZG1pbiwgZG1pbmRpcjsKKwlpbnQgZG1heCwgZG1heGRpcjsKKwlib3VuZGFyeV9zdWIoYmVzdCwgYmVzdGRpciwgbWluLCBtaW5kaXIsICZkbWluLCAmZG1pbmRpcik7CisJYm91bmRhcnlfc3ViKG1heCwgbWF4ZGlyLCBiZXN0LCBiZXN0ZGlyLCAmZG1heCwgJmRtYXhkaXIpOworCXJldHVybiBib3VuZGFyeV9sdChkbWluLCBkbWluZGlyLCBkbWF4LCBkbWF4ZGlyKTsKK30KKworLyoqCisgKiBzbmRfcGNtX2h3X3BhcmFtX25lYXIKKyAqIEBwY206IFBDTSBpbnN0YW5jZQorICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQorICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCisgKiBAYmVzdDogdmFsdWUgdG8gc2V0CisgKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICoKKyAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgUEFSQU1TIHNldCBQQVIgdG8gdGhlIGF2YWlsYWJsZSB2YWx1ZQorICogbmVhcmVzdCB0byBWQUwuIFJlZHVjZSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY29yZGluZ2x5LgorICogVGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUgY2FsbGVkIGZvciBTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTLAorICogU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVCwgU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVC4KKyAqIFJldHVybiB0aGUgdmFsdWUgZm91bmQuCisgICovCitzdGF0aWMgaW50IHNuZF9wY21faHdfcGFyYW1fbmVhcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwKKwkJCQkgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCBiZXN0LAorCQkJCSBpbnQgKmRpcikKK3sKKwlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnNhdmUgPSBOVUxMOworCWludCB2OworCXVuc2lnbmVkIGludCBzYXZlZF9taW47CisJaW50IGxhc3QgPSAwOworCWludCBtaW4sIG1heDsKKwlpbnQgbWluZGlyLCBtYXhkaXI7CisJaW50IHZhbGRpciA9IGRpciA/ICpkaXIgOiAwOworCS8qIEZJWE1FICovCisJaWYgKGJlc3QgPiBJTlRfTUFYKQorCQliZXN0ID0gSU5UX01BWDsKKwltaW4gPSBtYXggPSBiZXN0OworCW1pbmRpciA9IG1heGRpciA9IHZhbGRpcjsKKwlpZiAobWF4ZGlyID4gMCkKKwkJbWF4ZGlyID0gMDsKKwllbHNlIGlmIChtYXhkaXIgPT0gMCkKKwkJbWF4ZGlyID0gLTE7CisJZWxzZSB7CisJCW1heGRpciA9IDE7CisJCW1heC0tOworCX0KKwlzYXZlID0ga21hbGxvYyhzaXplb2YoKnNhdmUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoc2F2ZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwkqc2F2ZSA9ICpwYXJhbXM7CisJc2F2ZWRfbWluID0gbWluOworCW1pbiA9IHNuZF9wY21faHdfcGFyYW1fbWluKHBjbSwgcGFyYW1zLCB2YXIsIG1pbiwgJm1pbmRpcik7CisJaWYgKG1pbiA+PSAwKSB7CisJCXN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zMTsKKwkJaWYgKG1heCA8IDApCisJCQlnb3RvIF9lbmQ7CisJCWlmICgodW5zaWduZWQgaW50KW1pbiA9PSBzYXZlZF9taW4gJiYgbWluZGlyID09IHZhbGRpcikKKwkJCWdvdG8gX2VuZDsKKwkJcGFyYW1zMSA9IGttYWxsb2Moc2l6ZW9mKCpwYXJhbXMxKSwgR0ZQX0tFUk5FTCk7CisJCWlmIChwYXJhbXMxID09IE5VTEwpIHsKKwkJCWtmcmVlKHNhdmUpOworCQkJcmV0dXJuIC1FTk9NRU07CisJCX0KKwkJKnBhcmFtczEgPSAqc2F2ZTsKKwkJbWF4ID0gc25kX3BjbV9od19wYXJhbV9tYXgocGNtLCBwYXJhbXMxLCB2YXIsIG1heCwgJm1heGRpcik7CisJCWlmIChtYXggPCAwKSB7CisJCQlrZnJlZShwYXJhbXMxKTsKKwkJCWdvdG8gX2VuZDsKKwkJfQorCQlpZiAoYm91bmRhcnlfbmVhcmVyKG1heCwgbWF4ZGlyLCBiZXN0LCB2YWxkaXIsIG1pbiwgbWluZGlyKSkgeworCQkJKnBhcmFtcyA9ICpwYXJhbXMxOworCQkJbGFzdCA9IDE7CisJCX0KKwkJa2ZyZWUocGFyYW1zMSk7CisJfSBlbHNlIHsKKwkJKnBhcmFtcyA9ICpzYXZlOworCQltYXggPSBzbmRfcGNtX2h3X3BhcmFtX21heChwY20sIHBhcmFtcywgdmFyLCBtYXgsICZtYXhkaXIpOworCQlzbmRfYXNzZXJ0KG1heCA+PSAwLCByZXR1cm4gLUVJTlZBTCk7CisJCWxhc3QgPSAxOworCX0KKyBfZW5kOgorIAlrZnJlZShzYXZlKTsKKwlpZiAobGFzdCkKKwkJdiA9IHNuZF9wY21faHdfcGFyYW1fbGFzdChwY20sIHBhcmFtcywgdmFyLCBkaXIpOworCWVsc2UKKwkJdiA9IHNuZF9wY21faHdfcGFyYW1fZmlyc3QocGNtLCBwYXJhbXMsIHZhciwgZGlyKTsKKwlzbmRfYXNzZXJ0KHYgPj0gMCwgcmV0dXJuIC1FSU5WQUwpOworCXJldHVybiB2OworfQorCitzdGF0aWMgaW50IF9zbmRfcGNtX2h3X3BhcmFtX3NldChzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCQkgc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwKKwkJCQkgaW50IGRpcikKK3sKKwlpbnQgY2hhbmdlZDsKKwlpZiAoaHdfaXNfbWFzayh2YXIpKSB7CisJCXN0cnVjdCBzbmRfbWFzayAqbSA9IGh3X3BhcmFtX21hc2socGFyYW1zLCB2YXIpOworCQlpZiAodmFsID09IDAgJiYgZGlyIDwgMCkgeworCQkJY2hhbmdlZCA9IC1FSU5WQUw7CisJCQlzbmRfbWFza19ub25lKG0pOworCQl9IGVsc2UgeworCQkJaWYgKGRpciA+IDApCisJCQkJdmFsKys7CisJCQllbHNlIGlmIChkaXIgPCAwKQorCQkJCXZhbC0tOworCQkJY2hhbmdlZCA9IHNuZF9tYXNrX3JlZmluZV9zZXQoaHdfcGFyYW1fbWFzayhwYXJhbXMsIHZhciksIHZhbCk7CisJCX0KKwl9IGVsc2UgaWYgKGh3X2lzX2ludGVydmFsKHZhcikpIHsKKwkJc3RydWN0IHNuZF9pbnRlcnZhbCAqaSA9IGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgdmFyKTsKKwkJaWYgKHZhbCA9PSAwICYmIGRpciA8IDApIHsKKwkJCWNoYW5nZWQgPSAtRUlOVkFMOworCQkJc25kX2ludGVydmFsX25vbmUoaSk7CisJCX0gZWxzZSBpZiAoZGlyID09IDApCisJCQljaGFuZ2VkID0gc25kX2ludGVydmFsX3JlZmluZV9zZXQoaSwgdmFsKTsKKwkJZWxzZSB7CisJCQlzdHJ1Y3Qgc25kX2ludGVydmFsIHQ7CisJCQl0Lm9wZW5taW4gPSAxOworCQkJdC5vcGVubWF4ID0gMTsKKwkJCXQuZW1wdHkgPSAwOworCQkJdC5pbnRlZ2VyID0gMDsKKwkJCWlmIChkaXIgPCAwKSB7CisJCQkJdC5taW4gPSB2YWwgLSAxOworCQkJCXQubWF4ID0gdmFsOworCQkJfSBlbHNlIHsKKwkJCQl0Lm1pbiA9IHZhbDsKKwkJCQl0Lm1heCA9IHZhbCsxOworCQkJfQorCQkJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9yZWZpbmUoaSwgJnQpOworCQl9CisJfSBlbHNlCisJCXJldHVybiAtRUlOVkFMOworCWlmIChjaGFuZ2VkKSB7CisJCXBhcmFtcy0+Y21hc2sgfD0gMSA8PCB2YXI7CisJCXBhcmFtcy0+cm1hc2sgfD0gMSA8PCB2YXI7CisJfQorCXJldHVybiBjaGFuZ2VkOworfQorCisvKioKKyAqIHNuZF9wY21faHdfcGFyYW1fc2V0CisgKiBAcGNtOiBQQ00gaW5zdGFuY2UKKyAqIEBwYXJhbXM6IHRoZSBod19wYXJhbXMgaW5zdGFuY2UKKyAqIEB2YXI6IHBhcmFtZXRlciB0byByZXRyaWV2ZQorICogQHZhbDogdmFsdWUgdG8gc2V0CisgKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAorICoKKyAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgUEFSQU1TIHJlbW92ZSBmcm9tIFBBUiBhbGwgCisgKiB2YWx1ZXMgIT0gVkFMLiBSZWR1Y2UgY29uZmlndXJhdGlvbiBzcGFjZSBhY2NvcmRpbmdseS4KKyAqICBSZXR1cm4gVkFMIG9yIC1FSU5WQUwgaWYgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXMgZW1wdHkKKyAqLworc3RhdGljIGludCBzbmRfcGNtX2h3X3BhcmFtX3NldChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwKKwkJCQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCQlzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCB1bnNpZ25lZCBpbnQgdmFsLAorCQkJCWludCBkaXIpCit7CisJaW50IGNoYW5nZWQgPSBfc25kX3BjbV9od19wYXJhbV9zZXQocGFyYW1zLCB2YXIsIHZhbCwgZGlyKTsKKwlpZiAoY2hhbmdlZCA8IDApCisJCXJldHVybiBjaGFuZ2VkOworCWlmIChwYXJhbXMtPnJtYXNrKSB7CisJCWludCBlcnIgPSBzbmRfcGNtX2h3X3JlZmluZShwY20sIHBhcmFtcyk7CisJCWlmIChlcnIgPCAwKQorCQkJcmV0dXJuIGVycjsKKwl9CisJcmV0dXJuIHNuZF9wY21faHdfcGFyYW1fdmFsdWUocGFyYW1zLCB2YXIsIE5VTEwpOworfQorCitzdGF0aWMgaW50IF9zbmRfcGNtX2h3X3BhcmFtX3NldGludGVnZXIoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJCXNuZF9wY21faHdfcGFyYW1fdCB2YXIpCit7CisJaW50IGNoYW5nZWQ7CisJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9zZXRpbnRlZ2VyKGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgdmFyKSk7CisJaWYgKGNoYW5nZWQpIHsKKwkJcGFyYW1zLT5jbWFzayB8PSAxIDw8IHZhcjsKKwkJcGFyYW1zLT5ybWFzayB8PSAxIDw8IHZhcjsKKwl9CisJcmV0dXJuIGNoYW5nZWQ7Cit9CisJCisvKgorICogcGx1Z2luCisgKi8KKwogI2lmZGVmIENPTkZJR19TTkRfUENNX09TU19QTFVHSU5TCiBzdGF0aWMgaW50IHNuZF9wY21fb3NzX3BsdWdpbl9jbGVhcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKQEAgLTIwMyw3ICs2ODQsNyBAQAogCW9zc19idWZmZXJfc2l6ZSA9IHNuZF9wY21fcGx1Z19jbGllbnRfc2l6ZShzdWJzdHJlYW0sCiAJCQkJCQkgICBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21heChzbGF2ZV9wYXJhbXMsIFNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfU0laRSwgTlVMTCkpICogb3NzX2ZyYW1lX3NpemU7CiAJb3NzX2J1ZmZlcl9zaXplID0gMSA8PCBsZDIob3NzX2J1ZmZlcl9zaXplKTsKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpKSB7CisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKSB7CiAJCWlmIChvc3NfYnVmZmVyX3NpemUgPiBydW50aW1lLT5vc3MubW1hcF9ieXRlcykKIAkJCW9zc19idWZmZXJfc2l6ZSA9IHJ1bnRpbWUtPm9zcy5tbWFwX2J5dGVzOwogCX0KQEAgLTMzOCw3ICs4MTksNyBAQAogCQlnb3RvIGZhaWx1cmU7CiAJfQogCi0JaWYgKGF0b21pY19yZWFkKCZydW50aW1lLT5tbWFwX2NvdW50KSkKKwlpZiAoYXRvbWljX3JlYWQoJnN1YnN0cmVhbS0+bW1hcF9jb3VudCkpCiAJCWRpcmVjdCA9IDE7CiAJZWxzZQogCQlkaXJlY3QgPSBzdWJzdHJlYW0tPm9zcy5zZXR1cC5kaXJlY3Q7CkBAIC0zNDcsNyArODI4LDcgQEAKIAlfc25kX3BjbV9od19wYXJhbV9zZXRpbnRlZ2VyKHNwYXJhbXMsIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTKTsKIAlfc25kX3BjbV9od19wYXJhbV9taW4oc3BhcmFtcywgU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMsIDIsIDApOwogCXNuZF9tYXNrX25vbmUoJm1hc2spOwotCWlmIChhdG9taWNfcmVhZCgmcnVudGltZS0+bW1hcF9jb3VudCkpCisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKQogCQlzbmRfbWFza19zZXQoJm1hc2ssIFNORFJWX1BDTV9BQ0NFU1NfTU1BUF9JTlRFUkxFQVZFRCk7CiAJZWxzZSB7CiAJCXNuZF9tYXNrX3NldCgmbWFzaywgU05EUlZfUENNX0FDQ0VTU19SV19JTlRFUkxFQVZFRCk7CkBAIC00NjYsNyArOTQ3LDggQEAKIAl9IGVsc2UgewogCQlzd19wYXJhbXMtPnN0YXJ0X3RocmVzaG9sZCA9IHJ1bnRpbWUtPmJvdW5kYXJ5OwogCX0KLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpIHx8IHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSkKKwlpZiAoYXRvbWljX3JlYWQoJnN1YnN0cmVhbS0+bW1hcF9jb3VudCkgfHwKKwkgICAgc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFKQogCQlzd19wYXJhbXMtPnN0b3BfdGhyZXNob2xkID0gcnVudGltZS0+Ym91bmRhcnk7CiAJZWxzZQogCQlzd19wYXJhbXMtPnN0b3BfdGhyZXNob2xkID0gcnVudGltZS0+YnVmZmVyX3NpemU7CkBAIC00NzYsNyArOTU4LDcgQEAKIAlzd19wYXJhbXMtPmF2YWlsX21pbiA9IHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0sgPwogCQkxIDogcnVudGltZS0+cGVyaW9kX3NpemU7CiAJc3dfcGFyYW1zLT54ZmVyX2FsaWduID0gMTsKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpIHx8CisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpIHx8CiAJICAgIHN1YnN0cmVhbS0+b3NzLnNldHVwLm5vc2lsZW5jZSkgewogCQlzd19wYXJhbXMtPnNpbGVuY2VfdGhyZXNob2xkID0gMDsKIAkJc3dfcGFyYW1zLT5zaWxlbmNlX3NpemUgPSAwOwpAQCAtODIwLDcgKzEzMDIsNyBAQAogCXNzaXplX3QgdG1wOwogCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CiAKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpKQorCWlmIChhdG9taWNfcmVhZCgmc3Vic3RyZWFtLT5tbWFwX2NvdW50KSkKIAkJcmV0dXJuIC1FTlhJTzsKIAogCWlmICgodG1wID0gc25kX3BjbV9vc3NfbWFrZV9yZWFkeShzdWJzdHJlYW0pKSA8IDApCkBAIC04NTAsNyArMTMzMiw3IEBACiAJCQkJaWYgKHJ1bnRpbWUtPm9zcy5wZXJpb2RfcHRyID09IDAgfHwKIAkJCQkgICAgcnVudGltZS0+b3NzLnBlcmlvZF9wdHIgPT0gcnVudGltZS0+b3NzLmJ1ZmZlcl91c2VkKQogCQkJCQlydW50aW1lLT5vc3MuYnVmZmVyX3VzZWQgPSAwOwotCQkJCWVsc2UgaWYgKChzdWJzdHJlYW0tPmZmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykgIT0gMCkKKwkJCQllbHNlIGlmICgoc3Vic3RyZWFtLT5mX2ZsYWdzICYgT19OT05CTE9DSykgIT0gMCkKIAkJCQkJcmV0dXJuIHhmZXIgPiAwID8geGZlciA6IC1FQUdBSU47CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC04NjMsNyArMTM0NSw3IEBACiAJCQlidWYgKz0gdG1wOwogCQkJYnl0ZXMgLT0gdG1wOwogCQkJeGZlciArPSB0bXA7Ci0JCQlpZiAoKHN1YnN0cmVhbS0+ZmZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSAhPSAwICYmCisJCQlpZiAoKHN1YnN0cmVhbS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spICE9IDAgJiYKIAkJCSAgICB0bXAgIT0gcnVudGltZS0+b3NzLnBlcmlvZF9ieXRlcykKIAkJCQlicmVhazsKIAkJfQpAQCAtOTEwLDcgKzEzOTIsNyBAQAogCXNzaXplX3QgdG1wOwogCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CiAKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpKQorCWlmIChhdG9taWNfcmVhZCgmc3Vic3RyZWFtLT5tbWFwX2NvdW50KSkKIAkJcmV0dXJuIC1FTlhJTzsKIAogCWlmICgodG1wID0gc25kX3BjbV9vc3NfbWFrZV9yZWFkeShzdWJzdHJlYW0pKSA8IDApCkBAIC0xMDQwLDcgKzE1MjIsNyBAQAogCXN1YnN0cmVhbSA9IHBjbV9vc3NfZmlsZS0+c3RyZWFtc1tTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLXTsKIAlpZiAoc3Vic3RyZWFtICE9IE5VTEwpIHsKIAkJcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKLQkJaWYgKGF0b21pY19yZWFkKCZydW50aW1lLT5tbWFwX2NvdW50KSkKKwkJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKQogCQkJZ290byBfX2RpcmVjdDsKIAkJaWYgKChlcnIgPSBzbmRfcGNtX29zc19tYWtlX3JlYWR5KHN1YnN0cmVhbSkpIDwgMCkKIAkJCXJldHVybiBlcnI7CkBAIC0xMTAxLDEwICsxNTgzLDEwIEBACiAJCSAqIGZpbmlzaCBzeW5jOiBkcmFpbiB0aGUgYnVmZmVyCiAJCSAqLwogCSAgICAgIF9fZGlyZWN0OgotCQlzYXZlZF9mX2ZsYWdzID0gc3Vic3RyZWFtLT5mZmlsZS0+Zl9mbGFnczsKLQkJc3Vic3RyZWFtLT5mZmlsZS0+Zl9mbGFncyAmPSB+T19OT05CTE9DSzsKKwkJc2F2ZWRfZl9mbGFncyA9IHN1YnN0cmVhbS0+Zl9mbGFnczsKKwkJc3Vic3RyZWFtLT5mX2ZsYWdzICY9IH5PX05PTkJMT0NLOwogCQllcnIgPSBzbmRfcGNtX2tlcm5lbF9pb2N0bChzdWJzdHJlYW0sIFNORFJWX1BDTV9JT0NUTF9EUkFJTiwgTlVMTCk7Ci0JCXN1YnN0cmVhbS0+ZmZpbGUtPmZfZmxhZ3MgPSBzYXZlZF9mX2ZsYWdzOworCQlzdWJzdHJlYW0tPmZfZmxhZ3MgPSBzYXZlZF9mX2ZsYWdzOwogCQlpZiAoZXJyIDwgMCkKIAkJCXJldHVybiBlcnI7CiAJCXJ1bnRpbWUtPm9zcy5wcmVwYXJlID0gMTsKQEAgLTEyMDksNyArMTY5MSw3IEBACiAKIAlpZiAoKGVyciA9IHNuZF9wY21fb3NzX2dldF9hY3RpdmVfc3Vic3RyZWFtKHBjbV9vc3NfZmlsZSwgJnN1YnN0cmVhbSkpIDwgMCkKIAkJcmV0dXJuIGVycjsKLQlpZiAoYXRvbWljX3JlYWQoJnN1YnN0cmVhbS0+cnVudGltZS0+bW1hcF9jb3VudCkpCisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKQogCQlkaXJlY3QgPSAxOwogCWVsc2UKIAkJZGlyZWN0ID0gc3Vic3RyZWFtLT5vc3Muc2V0dXAuZGlyZWN0OwpAQCAtMTQxOSw3ICsxOTAxLDcgQEAKIAkJaWYgKHRyaWdnZXIgJiBQQ01fRU5BQkxFX09VVFBVVCkgewogCQkJaWYgKHJ1bnRpbWUtPm9zcy50cmlnZ2VyKQogCQkJCWdvdG8gX3NraXAxOwotCQkJaWYgKGF0b21pY19yZWFkKCZwc3Vic3RyZWFtLT5ydW50aW1lLT5tbWFwX2NvdW50KSkKKwkJCWlmIChhdG9taWNfcmVhZCgmcHN1YnN0cmVhbS0+bW1hcF9jb3VudCkpCiAJCQkJc25kX3BjbV9vc3Nfc2ltdWxhdGVfZmlsbChwc3Vic3RyZWFtLCBydW50aW1lLT5od19wdHJfaW50ZXJydXB0KTsKIAkJCXJ1bnRpbWUtPm9zcy50cmlnZ2VyID0gMTsKIAkJCXJ1bnRpbWUtPnN0YXJ0X3RocmVzaG9sZCA9IDE7CkBAIC0xNTM3LDcgKzIwMTksNyBAQAogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCWluZm8ucHRyID0gc25kX3BjbV9vc3NfYnl0ZXMoc3Vic3RyZWFtLCBydW50aW1lLT5zdGF0dXMtPmh3X3B0ciAlIHJ1bnRpbWUtPmJ1ZmZlcl9zaXplKTsKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpKSB7CisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKSB7CiAJCXNuZF9wY21fc2ZyYW1lc190IG47CiAJCW4gPSAoZGVsYXkgPSBydW50aW1lLT5od19wdHJfaW50ZXJydXB0KSAtIHJ1bnRpbWUtPm9zcy5wcmV2X2h3X3B0cl9pbnRlcnJ1cHQ7CiAJCWlmIChuIDwgMCkKQEAgLTE2ODMsOSArMjE2NSw5IEBACiAJc3Vic3RyZWFtLT5vc3Mub3NzID0gMTsKIAlzdWJzdHJlYW0tPm9zcy5zZXR1cCA9ICpzZXR1cDsKIAlpZiAoc2V0dXAtPm5vbmJsb2NrKQotCQlzdWJzdHJlYW0tPmZmaWxlLT5mX2ZsYWdzIHw9IE9fTk9OQkxPQ0s7CisJCXN1YnN0cmVhbS0+Zl9mbGFncyB8PSBPX05PTkJMT0NLOwogCWVsc2UgaWYgKHNldHVwLT5ibG9jaykKLQkJc3Vic3RyZWFtLT5mZmlsZS0+Zl9mbGFncyAmPSB+T19OT05CTE9DSzsKKwkJc3Vic3RyZWFtLT5mX2ZsYWdzICY9IH5PX05PTkJMT0NLOwogCXJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CiAJcnVudGltZS0+b3NzLnBhcmFtcyA9IDE7CiAJcnVudGltZS0+b3NzLnRyaWdnZXIgPSAxOwpAQCAtMTc0Miw2ICsyMjI0LDcgQEAKIAkgICAgKHBjbS0+aW5mb19mbGFncyAmIFNORFJWX1BDTV9JTkZPX0hBTEZfRFVQTEVYKSkKIAkJZl9tb2RlID0gRk1PREVfV1JJVEU7CiAKKwlmaWxlLT5mX2ZsYWdzICY9IH5PX0FQUEVORDsKIAlmb3IgKGlkeCA9IDA7IGlkeCA8IDI7IGlkeCsrKSB7CiAJCWlmIChzZXR1cFtpZHhdLmRpc2FibGUpCiAJCQljb250aW51ZTsKQEAgLTIwNTksNiArMjU0Miw3IEBACiAJc3Vic3RyZWFtID0gcGNtX29zc19maWxlLT5zdHJlYW1zW1NORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRV07CiAJaWYgKHN1YnN0cmVhbSA9PSBOVUxMKQogCQlyZXR1cm4gLUVOWElPOworCXN1YnN0cmVhbS0+Zl9mbGFncyA9IGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLOwogI2lmbmRlZiBPU1NfREVCVUcKIAlyZXR1cm4gc25kX3BjbV9vc3NfcmVhZDEoc3Vic3RyZWFtLCBidWYsIGNvdW50KTsKICNlbHNlCkBAIC0yMDgwLDYgKzI1NjQsNyBAQAogCXN1YnN0cmVhbSA9IHBjbV9vc3NfZmlsZS0+c3RyZWFtc1tTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLXTsKIAlpZiAoc3Vic3RyZWFtID09IE5VTEwpCiAJCXJldHVybiAtRU5YSU87CisJc3Vic3RyZWFtLT5mX2ZsYWdzID0gZmlsZS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0s7CiAJcmVzdWx0ID0gc25kX3BjbV9vc3Nfd3JpdGUxKHN1YnN0cmVhbSwgYnVmLCBjb3VudCk7CiAjaWZkZWYgT1NTX0RFQlVHCiAJcHJpbnRrKCJwY21fb3NzOiB3cml0ZSAlbGkgYnl0ZXMgKHdyb3RlICVsaSBieXRlcylcbiIsIChsb25nKWNvdW50LCAobG9uZylyZXN1bHQpOwpAQCAtMjA5MCw3ICsyNTc1LDcgQEAKIHN0YXRpYyBpbnQgc25kX3BjbV9vc3NfcGxheWJhY2tfcmVhZHkoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CiAJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKLQlpZiAoYXRvbWljX3JlYWQoJnJ1bnRpbWUtPm1tYXBfY291bnQpKQorCWlmIChhdG9taWNfcmVhZCgmc3Vic3RyZWFtLT5tbWFwX2NvdW50KSkKIAkJcmV0dXJuIHJ1bnRpbWUtPm9zcy5wcmV2X2h3X3B0cl9pbnRlcnJ1cHQgIT0gcnVudGltZS0+aHdfcHRyX2ludGVycnVwdDsKIAllbHNlCiAJCXJldHVybiBzbmRfcGNtX3BsYXliYWNrX2F2YWlsKHJ1bnRpbWUpID49IHJ1bnRpbWUtPm9zcy5wZXJpb2RfZnJhbWVzOwpAQCAtMjA5OSw3ICsyNTg0LDcgQEAKIHN0YXRpYyBpbnQgc25kX3BjbV9vc3NfY2FwdHVyZV9yZWFkeShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKIAlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOwotCWlmIChhdG9taWNfcmVhZCgmcnVudGltZS0+bW1hcF9jb3VudCkpCisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKQogCQlyZXR1cm4gcnVudGltZS0+b3NzLnByZXZfaHdfcHRyX2ludGVycnVwdCAhPSBydW50aW1lLT5od19wdHJfaW50ZXJydXB0OwogCWVsc2UKIAkJcmV0dXJuIHNuZF9wY21fY2FwdHVyZV9hdmFpbChydW50aW1lKSA+PSBydW50aW1lLT5vc3MucGVyaW9kX2ZyYW1lczsKQEAgLTIzNDIsOSArMjgyNyw3IEBACiAJCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShwY20tPmNhcmQsICJvc3MiLCBwc3RyLT5wcm9jX3Jvb3QpKSAhPSBOVUxMKSB7CiAJCQllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwogCQkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdVU1I7Ci0JCQllbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IDgxOTI7CiAJCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfcGNtX29zc19wcm9jX3JlYWQ7Ci0JCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSA4MTkyOwogCQkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9wY21fb3NzX3Byb2Nfd3JpdGU7CiAJCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gcHN0cjsKIAkJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3BjbS5jIGIvc291bmQvY29yZS9wY20uYwppbmRleCA4NGIwMDAzLi43NTgxZWRkIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbS5jCisrKyBiL3NvdW5kL2NvcmUvcGNtLmMKQEAgLTM1MSwxMCArMzUxLDggQEAKIAkJc25kX2lwcmludGYoYnVmZmVyLCAiY2xvc2VkXG4iKTsKIAkJcmV0dXJuOwogCX0KLQlzbmRfcGNtX3N0cmVhbV9sb2NrX2lycShzdWJzdHJlYW0pOwogCWlmIChydW50aW1lLT5zdGF0dXMtPnN0YXRlID09IFNORFJWX1BDTV9TVEFURV9PUEVOKSB7CiAJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIm5vIHNldHVwXG4iKTsKLQkJc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycShzdWJzdHJlYW0pOwogCQlyZXR1cm47CiAJfQogCXNuZF9pcHJpbnRmKGJ1ZmZlciwgImFjY2VzczogJXNcbiIsIHNuZF9wY21fYWNjZXNzX25hbWUocnVudGltZS0+YWNjZXNzKSk7CkBAIC0zNzUsNyArMzczLDYgQEAKIAkJc25kX2lwcmludGYoYnVmZmVyLCAiT1NTIHBlcmlvZCBmcmFtZXM6ICVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpcnVudGltZS0+b3NzLnBlcmlvZF9mcmFtZXMpOwogCX0KICNlbmRpZgotCXNuZF9wY21fc3RyZWFtX3VubG9ja19pcnEoc3Vic3RyZWFtKTsKIH0KIAogc3RhdGljIHZvaWQgc25kX3BjbV9zdWJzdHJlYW1fcHJvY19zd19wYXJhbXNfcmVhZChzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LApAQCAtMzg3LDEwICszODQsOCBAQAogCQlzbmRfaXByaW50ZihidWZmZXIsICJjbG9zZWRcbiIpOwogCQlyZXR1cm47CiAJfQotCXNuZF9wY21fc3RyZWFtX2xvY2tfaXJxKHN1YnN0cmVhbSk7CiAJaWYgKHJ1bnRpbWUtPnN0YXR1cy0+c3RhdGUgPT0gU05EUlZfUENNX1NUQVRFX09QRU4pIHsKIAkJc25kX2lwcmludGYoYnVmZmVyLCAibm8gc2V0dXBcbiIpOwotCQlzbmRfcGNtX3N0cmVhbV91bmxvY2tfaXJxKHN1YnN0cmVhbSk7CiAJCXJldHVybjsKIAl9CiAJc25kX2lwcmludGYoYnVmZmVyLCAidHN0YW1wX21vZGU6ICVzXG4iLCBzbmRfcGNtX3RzdGFtcF9tb2RlX25hbWUocnVudGltZS0+dHN0YW1wX21vZGUpKTsKQEAgLTQwMyw3ICszOTgsNiBAQAogCXNuZF9pcHJpbnRmKGJ1ZmZlciwgInNpbGVuY2VfdGhyZXNob2xkOiAlbHVcbiIsIHJ1bnRpbWUtPnNpbGVuY2VfdGhyZXNob2xkKTsKIAlzbmRfaXByaW50ZihidWZmZXIsICJzaWxlbmNlX3NpemU6ICVsdVxuIiwgcnVudGltZS0+c2lsZW5jZV9zaXplKTsKIAlzbmRfaXByaW50ZihidWZmZXIsICJib3VuZGFyeTogJWx1XG4iLCBydW50aW1lLT5ib3VuZGFyeSk7Ci0Jc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycShzdWJzdHJlYW0pOwogfQogCiBzdGF0aWMgdm9pZCBzbmRfcGNtX3N1YnN0cmVhbV9wcm9jX3N0YXR1c19yZWFkKHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnksCkBAIC00NzIsNyArNDY2LDcgQEAKIAlwc3RyLT5wcm9jX3Jvb3QgPSBlbnRyeTsKIAogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShwY20tPmNhcmQsICJpbmZvIiwgcHN0ci0+cHJvY19yb290KSkgIT0gTlVMTCkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHBzdHIsIDI1Niwgc25kX3BjbV9zdHJlYW1fcHJvY19pbmZvX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHBzdHIsIHNuZF9wY21fc3RyZWFtX3Byb2NfaW5mb19yZWFkKTsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwogCQkJZW50cnkgPSBOVUxMOwpAQCAtNDgzLDkgKzQ3Nyw3IEBACiAjaWZkZWYgQ09ORklHX1NORF9QQ01fWFJVTl9ERUJVRwogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShwY20tPmNhcmQsICJ4cnVuX2RlYnVnIiwKIAkJCQkJCXBzdHItPnByb2Nfcm9vdCkpICE9IE5VTEwpIHsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSA2NDsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gc25kX3BjbV94cnVuX2RlYnVnX3JlYWQ7Ci0JCWVudHJ5LT5jLnRleHQud3JpdGVfc2l6ZSA9IDY0OwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX3BjbV94cnVuX2RlYnVnX3dyaXRlOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwogCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gcHN0cjsKQEAgLTUzNyw3ICs1MjksOCBAQAogCXN1YnN0cmVhbS0+cHJvY19yb290ID0gZW50cnk7CiAKIAlpZiAoKGVudHJ5ID0gc25kX2luZm9fY3JlYXRlX2NhcmRfZW50cnkoY2FyZCwgImluZm8iLCBzdWJzdHJlYW0tPnByb2Nfcm9vdCkpICE9IE5VTEwpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBzdWJzdHJlYW0sIDI1Niwgc25kX3BjbV9zdWJzdHJlYW1fcHJvY19pbmZvX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHN1YnN0cmVhbSwKKwkJCQkgICAgICBzbmRfcGNtX3N1YnN0cmVhbV9wcm9jX2luZm9fcmVhZCk7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKIAkJCWVudHJ5ID0gTlVMTDsKQEAgLTU0Niw3ICs1MzksOCBAQAogCXN1YnN0cmVhbS0+cHJvY19pbmZvX2VudHJ5ID0gZW50cnk7CiAKIAlpZiAoKGVudHJ5ID0gc25kX2luZm9fY3JlYXRlX2NhcmRfZW50cnkoY2FyZCwgImh3X3BhcmFtcyIsIHN1YnN0cmVhbS0+cHJvY19yb290KSkgIT0gTlVMTCkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHN1YnN0cmVhbSwgMjU2LCBzbmRfcGNtX3N1YnN0cmVhbV9wcm9jX2h3X3BhcmFtc19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBzdWJzdHJlYW0sCisJCQkJICAgICAgc25kX3BjbV9zdWJzdHJlYW1fcHJvY19od19wYXJhbXNfcmVhZCk7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKIAkJCWVudHJ5ID0gTlVMTDsKQEAgLTU1NSw3ICs1NDksOCBAQAogCXN1YnN0cmVhbS0+cHJvY19od19wYXJhbXNfZW50cnkgPSBlbnRyeTsKIAogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShjYXJkLCAic3dfcGFyYW1zIiwgc3Vic3RyZWFtLT5wcm9jX3Jvb3QpKSAhPSBOVUxMKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgc3Vic3RyZWFtLCAyNTYsIHNuZF9wY21fc3Vic3RyZWFtX3Byb2Nfc3dfcGFyYW1zX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHN1YnN0cmVhbSwKKwkJCQkgICAgICBzbmRfcGNtX3N1YnN0cmVhbV9wcm9jX3N3X3BhcmFtc19yZWFkKTsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwogCQkJZW50cnkgPSBOVUxMOwpAQCAtNTY0LDcgKzU1OSw4IEBACiAJc3Vic3RyZWFtLT5wcm9jX3N3X3BhcmFtc19lbnRyeSA9IGVudHJ5OwogCiAJaWYgKChlbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9jYXJkX2VudHJ5KGNhcmQsICJzdGF0dXMiLCBzdWJzdHJlYW0tPnByb2Nfcm9vdCkpICE9IE5VTEwpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBzdWJzdHJlYW0sIDI1Niwgc25kX3BjbV9zdWJzdHJlYW1fcHJvY19zdGF0dXNfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgc3Vic3RyZWFtLAorCQkJCSAgICAgIHNuZF9wY21fc3Vic3RyZWFtX3Byb2Nfc3RhdHVzX3JlYWQpOwogCQlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewogCQkJc25kX2luZm9fZnJlZV9lbnRyeShlbnRyeSk7CiAJCQllbnRyeSA9IE5VTEw7CkBAIC02NjYsMTEgKzY2MiwxNCBAQAogCQlJTklUX0xJU1RfSEVBRCgmc3Vic3RyZWFtLT5zZWxmX2dyb3VwLnN1YnN0cmVhbXMpOwogCQlsaXN0X2FkZF90YWlsKCZzdWJzdHJlYW0tPmxpbmtfbGlzdCwgJnN1YnN0cmVhbS0+c2VsZl9ncm91cC5zdWJzdHJlYW1zKTsKIAkJc3Bpbl9sb2NrX2luaXQoJnN1YnN0cmVhbS0+dGltZXJfbG9jayk7CisJCWF0b21pY19zZXQoJnN1YnN0cmVhbS0+bW1hcF9jb3VudCwgMCk7CiAJCXByZXYgPSBzdWJzdHJlYW07CiAJfQogCXJldHVybiAwOwogfQkJCQkKIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX25ld19zdHJlYW0pOworCiAvKioKICAqIHNuZF9wY21fbmV3IC0gY3JlYXRlIGEgbmV3IFBDTSBpbnN0YW5jZQogICogQGNhcmQ6IHRoZSBjYXJkIGluc3RhbmNlCkBAIC03MzAsNiArNzI5LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX25ldyk7CisKIHN0YXRpYyB2b2lkIHNuZF9wY21fZnJlZV9zdHJlYW0oc3RydWN0IHNuZF9wY21fc3RyICogcHN0cikKIHsKIAlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgKnN1YnN0cmVhbV9uZXh0OwpAQCAtODI5LDYgKzgzMCwyNiBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKKwlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fQVBQRU5EKSB7CisJCWlmIChwcmVmZXJfc3ViZGV2aWNlIDwgMCkgeworCQkJaWYgKHBzdHItPnN1YnN0cmVhbV9jb3VudCA+IDEpCisJCQkJcmV0dXJuIC1FSU5WQUw7IC8qIG11c3QgYmUgdW5pcXVlICovCisJCQlzdWJzdHJlYW0gPSBwc3RyLT5zdWJzdHJlYW07CisJCX0gZWxzZSB7CisJCQlmb3IgKHN1YnN0cmVhbSA9IHBzdHItPnN1YnN0cmVhbTsgc3Vic3RyZWFtOworCQkJICAgICBzdWJzdHJlYW0gPSBzdWJzdHJlYW0tPm5leHQpCisJCQkJaWYgKHN1YnN0cmVhbS0+bnVtYmVyID09IHByZWZlcl9zdWJkZXZpY2UpCisJCQkJCWJyZWFrOworCQl9CisJCWlmICghIHN1YnN0cmVhbSkKKwkJCXJldHVybiAtRU5PREVWOworCQlpZiAoISBTVUJTVFJFQU1fQlVTWShzdWJzdHJlYW0pKQorCQkJcmV0dXJuIC1FQkFERkQ7CisJCXN1YnN0cmVhbS0+cmVmX2NvdW50Kys7CisJCSpyc3Vic3RyZWFtID0gc3Vic3RyZWFtOworCQlyZXR1cm4gMDsKKwl9CisKIAlpZiAocHJlZmVyX3N1YmRldmljZSA+PSAwKSB7CiAJCWZvciAoc3Vic3RyZWFtID0gcHN0ci0+c3Vic3RyZWFtOyBzdWJzdHJlYW07IHN1YnN0cmVhbSA9IHN1YnN0cmVhbS0+bmV4dCkKIAkJCWlmICghU1VCU1RSRUFNX0JVU1koc3Vic3RyZWFtKSAmJiBzdWJzdHJlYW0tPm51bWJlciA9PSBwcmVmZXJfc3ViZGV2aWNlKQpAQCAtODY0LDcgKzg4NSw2IEBACiAJbWVtc2V0KCh2b2lkKilydW50aW1lLT5jb250cm9sLCAwLCBzaXplKTsKIAogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnJ1bnRpbWUtPnNsZWVwKTsKLQlhdG9taWNfc2V0KCZydW50aW1lLT5tbWFwX2NvdW50LCAwKTsKIAlpbml0X3RpbWVyKCZydW50aW1lLT50aWNrX3RpbWVyKTsKIAlydW50aW1lLT50aWNrX3RpbWVyLmZ1bmN0aW9uID0gc25kX3BjbV90aWNrX3RpbWVyX2Z1bmM7CiAJcnVudGltZS0+dGlja190aW1lci5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIHN1YnN0cmVhbTsKQEAgLTg3Myw3ICs4OTMsOCBAQAogCiAJc3Vic3RyZWFtLT5ydW50aW1lID0gcnVudGltZTsKIAlzdWJzdHJlYW0tPnByaXZhdGVfZGF0YSA9IHBjbS0+cHJpdmF0ZV9kYXRhOwotCXN1YnN0cmVhbS0+ZmZpbGUgPSBmaWxlOworCXN1YnN0cmVhbS0+cmVmX2NvdW50ID0gMTsKKwlzdWJzdHJlYW0tPmZfZmxhZ3MgPSBmaWxlLT5mX2ZsYWdzOwogCXBzdHItPnN1YnN0cmVhbV9vcGVuZWQrKzsKIAkqcnN1YnN0cmVhbSA9IHN1YnN0cmVhbTsKIAlyZXR1cm4gMDsKQEAgLTg4Miw3ICs5MDMsNyBAQAogdm9pZCBzbmRfcGNtX2RldGFjaF9zdWJzdHJlYW0oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CiAJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZTsKLQlzdWJzdHJlYW0tPmZpbGUgPSBOVUxMOworCiAJcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIAlzbmRfYXNzZXJ0KHJ1bnRpbWUgIT0gTlVMTCwgcmV0dXJuKTsKIAlpZiAocnVudGltZS0+cHJpdmF0ZV9mcmVlICE9IE5VTEwpCkBAIC0xMDIyLDYgKzEwNDMsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fbm90aWZ5KTsKKwogI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAvKgogICogIEluZm8gaW50ZXJmYWNlCkBAIC0xMDQ5LDE1ICsxMDcyLDE0IEBACiAJbXV0ZXhfdW5sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF9wY21fcHJvY19lbnRyeSA9IE5VTEw7CitzdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfcGNtX3Byb2NfZW50cnk7CiAKIHN0YXRpYyB2b2lkIHNuZF9wY21fcHJvY19pbml0KHZvaWQpCiB7CiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfbW9kdWxlX2VudHJ5KFRISVNfTU9EVUxFLCAicGNtIiwgTlVMTCkpICE9IE5VTEwpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBOVUxMLCBTTkRSVl9DQVJEUyAqIFNORFJWX1BDTV9ERVZJQ0VTICogMTI4LAotCQkJCSAgICAgIHNuZF9wY21fcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBOVUxMLCBzbmRfcGNtX3Byb2NfcmVhZCk7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKIAkJCWVudHJ5ID0gTlVMTDsKQEAgLTEwOTksMzMgKzExMjEsMyBAQAogCiBtb2R1bGVfaW5pdChhbHNhX3BjbV9pbml0KQogbW9kdWxlX2V4aXQoYWxzYV9wY21fZXhpdCkKLQotRVhQT1JUX1NZTUJPTChzbmRfcGNtX25ldyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fbmV3X3N0cmVhbSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fbm90aWZ5KTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9vcGVuX3N1YnN0cmVhbSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fcmVsZWFzZV9zdWJzdHJlYW0pOwotICAvKiBwY21fbmF0aXZlLmMgKi8KLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saW5rX3J3bG9jayk7Ci0jaWZkZWYgQ09ORklHX1BNCi1FWFBPUlRfU1lNQk9MKHNuZF9wY21fc3VzcGVuZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fc3VzcGVuZF9hbGwpOwotI2VuZGlmCi1FWFBPUlRfU1lNQk9MKHNuZF9wY21fa2VybmVsX2lvY3RsKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9tbWFwX2RhdGEpOwotI2lmIFNORFJWX1BDTV9JTkZPX01NQVBfSU9NRU0KLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfbW1hcF9pb21lbSk7Ci0jZW5kaWYKLSAvKiBwY21fbWlzYy5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3NpZ25lZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3Vuc2lnbmVkKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9mb3JtYXRfbGluZWFyKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9mb3JtYXRfbGl0dGxlX2VuZGlhbik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X2JpZ19lbmRpYW4pOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF93aWR0aCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9mb3JtYXRfc2l6ZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3NpbGVuY2VfNjQpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9zZXRfc2lsZW5jZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fYnVpbGRfbGluZWFyX2Zvcm1hdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fbGltaXRfaHdfcmF0ZXMpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fY29tcGF0LmMgYi9zb3VuZC9jb3JlL3BjbV9jb21wYXQuYwppbmRleCBlNTEzMzAzLi4yYjhhYWI2IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9jb21wYXQuYworKysgYi9zb3VuZC9jb3JlL3BjbV9jb21wYXQuYwpAQCAtNDk3LDkgKzQ5Nyw5IEBACiAJY2FzZSBTTkRSVl9QQ01fSU9DVExfTElOSzoKIAljYXNlIFNORFJWX1BDTV9JT0NUTF9VTkxJTks6CiAJCWlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKQotCQkJcmV0dXJuIHNuZF9wY21fcGxheWJhY2tfaW9jdGwxKHN1YnN0cmVhbSwgY21kLCBhcmdwKTsKKwkJCXJldHVybiBzbmRfcGNtX3BsYXliYWNrX2lvY3RsMShmaWxlLCBzdWJzdHJlYW0sIGNtZCwgYXJncCk7CiAJCWVsc2UKLQkJCXJldHVybiBzbmRfcGNtX2NhcHR1cmVfaW9jdGwxKHN1YnN0cmVhbSwgY21kLCBhcmdwKTsKKwkJCXJldHVybiBzbmRfcGNtX2NhcHR1cmVfaW9jdGwxKGZpbGUsIHN1YnN0cmVhbSwgY21kLCBhcmdwKTsKIAljYXNlIFNORFJWX1BDTV9JT0NUTF9IV19SRUZJTkUzMjoKIAkJcmV0dXJuIHNuZF9wY21faW9jdGxfaHdfcGFyYW1zX2NvbXBhdChzdWJzdHJlYW0sIDEsIGFyZ3ApOwogCWNhc2UgU05EUlZfUENNX0lPQ1RMX0hXX1BBUkFNUzMyOgpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbGliLmMgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwppbmRleCBlZWRjNmNiLi4wYmIxNDJhIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9saWIuYworKysgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwpAQCAtMjg5LDYgKzI4OSw3IEBACiAJCXN1YnN0cmVhbS0+b3BzID0gb3BzOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fc2V0X29wcyk7CiAKIC8qKgogICogc25kX3BjbV9zeW5jIC0gc2V0IHRoZSBQQ00gc3luYyBpZApAQCAtMzA2LDEzICszMDcsMTIgQEAKIAlydW50aW1lLT5zeW5jLmlkMzJbM10gPSAtMTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX3NldF9zeW5jKTsKKwogLyoKICAqICBTdGFuZGFyZCBpb2N0bCByb3V0aW5lCiAgKi8KIAotLyogQ29kZSB0YWtlbiBmcm9tIGFsc2EtbGliICovCi0jZGVmaW5lIGFzc2VydChhKSBzbmRfYXNzZXJ0KChhKSwgcmV0dXJuIC1FSU5WQUwpCi0KIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRpdjMyKHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYiwgCiAJCQkJIHVuc2lnbmVkIGludCAqcikKIHsKQEAgLTM2OSw1NiArMzY5LDYgQEAKIAlyZXR1cm4gbjsKIH0KIAotc3RhdGljIGludCBzbmRfaW50ZXJ2YWxfcmVmaW5lX21pbihzdHJ1Y3Qgc25kX2ludGVydmFsICppLCB1bnNpZ25lZCBpbnQgbWluLCBpbnQgb3Blbm1pbikKLXsKLQlpbnQgY2hhbmdlZCA9IDA7Ci0JYXNzZXJ0KCFzbmRfaW50ZXJ2YWxfZW1wdHkoaSkpOwotCWlmIChpLT5taW4gPCBtaW4pIHsKLQkJaS0+bWluID0gbWluOwotCQlpLT5vcGVubWluID0gb3Blbm1pbjsKLQkJY2hhbmdlZCA9IDE7Ci0JfSBlbHNlIGlmIChpLT5taW4gPT0gbWluICYmICFpLT5vcGVubWluICYmIG9wZW5taW4pIHsKLQkJaS0+b3Blbm1pbiA9IDE7Ci0JCWNoYW5nZWQgPSAxOwotCX0KLQlpZiAoaS0+aW50ZWdlcikgewotCQlpZiAoaS0+b3Blbm1pbikgewotCQkJaS0+bWluKys7Ci0JCQlpLT5vcGVubWluID0gMDsKLQkJfQotCX0KLQlpZiAoc25kX2ludGVydmFsX2NoZWNrZW1wdHkoaSkpIHsKLQkJc25kX2ludGVydmFsX25vbmUoaSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQlyZXR1cm4gY2hhbmdlZDsKLX0KLQotc3RhdGljIGludCBzbmRfaW50ZXJ2YWxfcmVmaW5lX21heChzdHJ1Y3Qgc25kX2ludGVydmFsICppLCB1bnNpZ25lZCBpbnQgbWF4LCBpbnQgb3Blbm1heCkKLXsKLQlpbnQgY2hhbmdlZCA9IDA7Ci0JYXNzZXJ0KCFzbmRfaW50ZXJ2YWxfZW1wdHkoaSkpOwotCWlmIChpLT5tYXggPiBtYXgpIHsKLQkJaS0+bWF4ID0gbWF4OwotCQlpLT5vcGVubWF4ID0gb3Blbm1heDsKLQkJY2hhbmdlZCA9IDE7Ci0JfSBlbHNlIGlmIChpLT5tYXggPT0gbWF4ICYmICFpLT5vcGVubWF4ICYmIG9wZW5tYXgpIHsKLQkJaS0+b3Blbm1heCA9IDE7Ci0JCWNoYW5nZWQgPSAxOwotCX0KLQlpZiAoaS0+aW50ZWdlcikgewotCQlpZiAoaS0+b3Blbm1heCkgewotCQkJaS0+bWF4LS07Ci0JCQlpLT5vcGVubWF4ID0gMDsKLQkJfQotCX0KLQlpZiAoc25kX2ludGVydmFsX2NoZWNrZW1wdHkoaSkpIHsKLQkJc25kX2ludGVydmFsX25vbmUoaSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQlyZXR1cm4gY2hhbmdlZDsKLX0KLQogLyoqCiAgKiBzbmRfaW50ZXJ2YWxfcmVmaW5lIC0gcmVmaW5lIHRoZSBpbnRlcnZhbCB2YWx1ZSBvZiBjb25maWd1cmF0b3IKICAqIEBpOiB0aGUgaW50ZXJ2YWwgdmFsdWUgdG8gcmVmaW5lCkBAIC00MzMsNyArMzgzLDcgQEAKIGludCBzbmRfaW50ZXJ2YWxfcmVmaW5lKHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmksIGNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKnYpCiB7CiAJaW50IGNoYW5nZWQgPSAwOwotCWFzc2VydCghc25kX2ludGVydmFsX2VtcHR5KGkpKTsKKwlzbmRfYXNzZXJ0KCFzbmRfaW50ZXJ2YWxfZW1wdHkoaSksIHJldHVybiAtRUlOVkFMKTsKIAlpZiAoaS0+bWluIDwgdi0+bWluKSB7CiAJCWktPm1pbiA9IHYtPm1pbjsKIAkJaS0+b3Blbm1pbiA9IHYtPm9wZW5taW47CkBAIC00NzIsOSArNDIyLDExIEBACiAJcmV0dXJuIGNoYW5nZWQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2ludGVydmFsX3JlZmluZSk7CisKIHN0YXRpYyBpbnQgc25kX2ludGVydmFsX3JlZmluZV9maXJzdChzdHJ1Y3Qgc25kX2ludGVydmFsICppKQogewotCWFzc2VydCghc25kX2ludGVydmFsX2VtcHR5KGkpKTsKKwlzbmRfYXNzZXJ0KCFzbmRfaW50ZXJ2YWxfZW1wdHkoaSksIHJldHVybiAtRUlOVkFMKTsKIAlpZiAoc25kX2ludGVydmFsX3NpbmdsZShpKSkKIAkJcmV0dXJuIDA7CiAJaS0+bWF4ID0gaS0+bWluOwpAQCAtNDg2LDcgKzQzOCw3IEBACiAKIHN0YXRpYyBpbnQgc25kX2ludGVydmFsX3JlZmluZV9sYXN0KHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkpCiB7Ci0JYXNzZXJ0KCFzbmRfaW50ZXJ2YWxfZW1wdHkoaSkpOworCXNuZF9hc3NlcnQoIXNuZF9pbnRlcnZhbF9lbXB0eShpKSwgcmV0dXJuIC1FSU5WQUwpOwogCWlmIChzbmRfaW50ZXJ2YWxfc2luZ2xlKGkpKQogCQlyZXR1cm4gMDsKIAlpLT5taW4gPSBpLT5tYXg7CkBAIC00OTYsMTYgKzQ0OCw2IEBACiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBpbnQgc25kX2ludGVydmFsX3JlZmluZV9zZXQoc3RydWN0IHNuZF9pbnRlcnZhbCAqaSwgdW5zaWduZWQgaW50IHZhbCkKLXsKLQlzdHJ1Y3Qgc25kX2ludGVydmFsIHQ7Ci0JdC5lbXB0eSA9IDA7Ci0JdC5taW4gPSB0Lm1heCA9IHZhbDsKLQl0Lm9wZW5taW4gPSB0Lm9wZW5tYXggPSAwOwotCXQuaW50ZWdlciA9IDE7Ci0JcmV0dXJuIHNuZF9pbnRlcnZhbF9yZWZpbmUoaSwgJnQpOwotfQotCiB2b2lkIHNuZF9pbnRlcnZhbF9tdWwoY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqYSwgY29uc3Qgc3RydWN0IHNuZF9pbnRlcnZhbCAqYiwgc3RydWN0IHNuZF9pbnRlcnZhbCAqYykKIHsKIAlpZiAoYS0+ZW1wdHkgfHwgYi0+ZW1wdHkpIHsKQEAgLTYyMSw3ICs1NjMsNiBAQAogCWMtPmludGVnZXIgPSAwOwogfQogCi0jdW5kZWYgYXNzZXJ0CiAvKiAtLS0tICovCiAKIApAQCAtNzI3LDYgKzY2OCw4IEBACiAJcmV0dXJuIGVycjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaW50ZXJ2YWxfcmF0bnVtKTsKKwogLyoqCiAgKiBzbmRfaW50ZXJ2YWxfcmF0ZGVuIC0gcmVmaW5lIHRoZSBpbnRlcnZhbCB2YWx1ZQogICogQGk6IGludGVydmFsIHRvIHJlZmluZQpAQCAtODc3LDYgKzgyMCw4IEBACiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pbnRlcnZhbF9saXN0KTsKKwogc3RhdGljIGludCBzbmRfaW50ZXJ2YWxfc3RlcChzdHJ1Y3Qgc25kX2ludGVydmFsICppLCB1bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgc3RlcCkKIHsKIAl1bnNpZ25lZCBpbnQgbjsKQEAgLTk1Myw2ICs4OTgsOCBAQAogCXJldHVybiAwOwogfQkJCQkgICAgCiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9od19ydWxlX2FkZCk7CisKIC8qKgogICogc25kX3BjbV9od19jb25zdHJhaW50X21hc2sKICAqIEBydW50aW1lOiBQQ00gcnVudGltZSBpbnN0YW5jZQpAQCAtMTAwNyw2ICs5NTQsOCBAQAogCXJldHVybiBzbmRfaW50ZXJ2YWxfc2V0aW50ZWdlcihjb25zdHJzX2ludGVydmFsKGNvbnN0cnMsIHZhcikpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9pbnRlZ2VyKTsKKwogLyoqCiAgKiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4CiAgKiBAcnVudGltZTogUENNIHJ1bnRpbWUgaW5zdGFuY2UKQEAgLTEwMjgsNiArOTc3LDggQEAKIAlyZXR1cm4gc25kX2ludGVydmFsX3JlZmluZShjb25zdHJzX2ludGVydmFsKGNvbnN0cnMsIHZhciksICZ0KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4KTsKKwogc3RhdGljIGludCBzbmRfcGNtX2h3X3J1bGVfbGlzdChzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKIAkJCQlzdHJ1Y3Qgc25kX3BjbV9od19ydWxlICpydWxlKQogewpAQCAtMTA1NSw2ICsxMDA2LDggQEAKIAkJCQkgICB2YXIsIC0xKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbGlzdCk7CisKIHN0YXRpYyBpbnQgc25kX3BjbV9od19ydWxlX3JhdG51bXMoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCiAJCQkJICAgc3RydWN0IHNuZF9wY21faHdfcnVsZSAqcnVsZSkKIHsKQEAgLTEwODcsNiArMTA0MCw4IEBACiAJCQkJICAgdmFyLCAtMSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9od19jb25zdHJhaW50X3JhdG51bXMpOworCiBzdGF0aWMgaW50IHNuZF9wY21faHdfcnVsZV9yYXRkZW5zKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCSAgIHN0cnVjdCBzbmRfcGNtX2h3X3J1bGUgKnJ1bGUpCiB7CkBAIC0xMTE4LDYgKzEwNzMsOCBAQAogCQkJCSAgIHZhciwgLTEpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9yYXRkZW5zKTsKKwogc3RhdGljIGludCBzbmRfcGNtX2h3X3J1bGVfbXNiaXRzKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCSAgc3RydWN0IHNuZF9wY21faHdfcnVsZSAqcnVsZSkKIHsKQEAgLTExNDksNiArMTEwNiw4IEBACiAJCQkJICAgIFNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUywgLTEpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9tc2JpdHMpOworCiBzdGF0aWMgaW50IHNuZF9wY21faHdfcnVsZV9zdGVwKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCXN0cnVjdCBzbmRfcGNtX2h3X3J1bGUgKnJ1bGUpCiB7CkBAIC0xMTczLDYgKzExMzIsOCBAQAogCQkJCSAgIHZhciwgLTEpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9zdGVwKTsKKwogc3RhdGljIGludCBzbmRfcGNtX2h3X3J1bGVfcG93MihzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywgc3RydWN0IHNuZF9wY21faHdfcnVsZSAqcnVsZSkKIHsKIAlzdGF0aWMgaW50IHBvdzJfc2l6ZXNbXSA9IHsKQEAgLTEyMDAsMTEgKzExNjEsNyBAQAogCQkJCSAgIHZhciwgLTEpOwogfQogCi0vKiBUbyB1c2UgdGhlIHNhbWUgY29kZSB3ZSBoYXZlIGluIGFsc2EtbGliICovCi0jZGVmaW5lIGFzc2VydChpKSBzbmRfYXNzZXJ0KChpKSwgcmV0dXJuIC1FSU5WQUwpCi0jaWZuZGVmIElOVF9NSU4KLSNkZWZpbmUgSU5UX01JTiAoKGludCkoKHVuc2lnbmVkIGludClJTlRfTUFYKzEpKQotI2VuZGlmCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9wb3cyKTsKIAogc3RhdGljIHZvaWQgX3NuZF9wY21faHdfcGFyYW1fYW55KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCSAgc25kX3BjbV9od19wYXJhbV90IHZhcikKQEAgLTEyMjQsMTggKzExODEsNiBAQAogCXNuZF9CVUcoKTsKIH0KIAotI2lmIDAKLS8qCi0gKiBzbmRfcGNtX2h3X3BhcmFtX2FueQotICovCi1pbnQgc25kX3BjbV9od19wYXJhbV9hbnkoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJIHNuZF9wY21faHdfcGFyYW1fdCB2YXIpCi17Ci0JX3NuZF9wY21faHdfcGFyYW1fYW55KHBhcmFtcywgdmFyKTsKLQlyZXR1cm4gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOwotfQotI2VuZGlmICAvKiAgMCAgKi8KLQogdm9pZCBfc25kX3BjbV9od19wYXJhbXNfYW55KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKQogewogCXVuc2lnbmVkIGludCBrOwpAQCAtMTI0NywxOCArMTE5Miw3IEBACiAJcGFyYW1zLT5pbmZvID0gfjBVOwogfQogCi0jaWYgMAotLyoKLSAqIHNuZF9wY21faHdfcGFyYW1zX2FueQotICoKLSAqIEZpbGwgUEFSQU1TIHdpdGggZnVsbCBjb25maWd1cmF0aW9uIHNwYWNlIGJvdW5kYXJpZXMKLSAqLwotaW50IHNuZF9wY21faHdfcGFyYW1zX2FueShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMpCi17Ci0JX3NuZF9wY21faHdfcGFyYW1zX2FueShwYXJhbXMpOwotCXJldHVybiBzbmRfcGNtX2h3X3JlZmluZShwY20sIHBhcmFtcyk7Ci19Ci0jZW5kaWYgIC8qICAwICAqLworRVhQT1JUX1NZTUJPTChfc25kX3BjbV9od19wYXJhbXNfYW55KTsKIAogLyoqCiAgKiBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlCkBAIC0xMjY5LDggKzEyMDMsOCBAQAogICogUmV0dXJuIHRoZSB2YWx1ZSBmb3IgZmllbGQgUEFSIGlmIGl0J3MgZml4ZWQgaW4gY29uZmlndXJhdGlvbiBzcGFjZSAKICAqICBkZWZpbmVkIGJ5IFBBUkFNUy4gUmV0dXJuIC1FSU5WQUwgb3RoZXJ3aXNlCiAgKi8KLXN0YXRpYyBpbnQgc25kX3BjbV9od19wYXJhbV92YWx1ZShjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIGludCAqZGlyKQoraW50IHNuZF9wY21faHdfcGFyYW1fdmFsdWUoY29uc3Qgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkgICBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCBpbnQgKmRpcikKIHsKIAlpZiAoaHdfaXNfbWFzayh2YXIpKSB7CiAJCWNvbnN0IHN0cnVjdCBzbmRfbWFzayAqbWFzayA9IGh3X3BhcmFtX21hc2tfYyhwYXJhbXMsIHZhcik7CkBAIC0xMjg4LDYxICsxMjIyLDEwIEBACiAJCQkqZGlyID0gaS0+b3Blbm1pbjsKIAkJcmV0dXJuIHNuZF9pbnRlcnZhbF92YWx1ZShpKTsKIAl9Ci0JYXNzZXJ0KDApOwogCXJldHVybiAtRUlOVkFMOwogfQogCi0vKioKLSAqIHNuZF9wY21faHdfcGFyYW1fdmFsdWVfbWluCi0gKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCi0gKiBAdmFyOiBwYXJhbWV0ZXIgdG8gcmV0cmlldmUKLSAqIEBkaXI6IHBvaW50ZXIgdG8gdGhlIGRpcmVjdGlvbiAoLTEsMCwxKSBvciBOVUxMCi0gKgotICogUmV0dXJuIHRoZSBtaW5pbXVtIHZhbHVlIGZvciBmaWVsZCBQQVIuCi0gKi8KLXVuc2lnbmVkIGludCBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21pbihjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkJc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCi17Ci0JaWYgKGh3X2lzX21hc2sodmFyKSkgewotCQlpZiAoZGlyKQotCQkJKmRpciA9IDA7Ci0JCXJldHVybiBzbmRfbWFza19taW4oaHdfcGFyYW1fbWFza19jKHBhcmFtcywgdmFyKSk7Ci0JfQotCWlmIChod19pc19pbnRlcnZhbCh2YXIpKSB7Ci0JCWNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkgPSBod19wYXJhbV9pbnRlcnZhbF9jKHBhcmFtcywgdmFyKTsKLQkJaWYgKGRpcikKLQkJCSpkaXIgPSBpLT5vcGVubWluOwotCQlyZXR1cm4gc25kX2ludGVydmFsX21pbihpKTsKLQl9Ci0JYXNzZXJ0KDApOwotCXJldHVybiAtRUlOVkFMOwotfQotCi0vKioKLSAqIHNuZF9wY21faHdfcGFyYW1fdmFsdWVfbWF4Ci0gKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCi0gKiBAdmFyOiBwYXJhbWV0ZXIgdG8gcmV0cmlldmUKLSAqIEBkaXI6IHBvaW50ZXIgdG8gdGhlIGRpcmVjdGlvbiAoLTEsMCwxKSBvciBOVUxMCi0gKgotICogUmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciBmaWVsZCBQQVIuCi0gKi8KLXVuc2lnbmVkIGludCBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlX21heChjb25zdCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkJc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCi17Ci0JaWYgKGh3X2lzX21hc2sodmFyKSkgewotCQlpZiAoZGlyKQotCQkJKmRpciA9IDA7Ci0JCXJldHVybiBzbmRfbWFza19tYXgoaHdfcGFyYW1fbWFza19jKHBhcmFtcywgdmFyKSk7Ci0JfQotCWlmIChod19pc19pbnRlcnZhbCh2YXIpKSB7Ci0JCWNvbnN0IHN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkgPSBod19wYXJhbV9pbnRlcnZhbF9jKHBhcmFtcywgdmFyKTsKLQkJaWYgKGRpcikKLQkJCSpkaXIgPSAtIChpbnQpIGktPm9wZW5tYXg7Ci0JCXJldHVybiBzbmRfaW50ZXJ2YWxfbWF4KGkpOwotCX0KLQlhc3NlcnQoMCk7Ci0JcmV0dXJuIC1FSU5WQUw7Ci19CitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfcGFyYW1fdmFsdWUpOwogCiB2b2lkIF9zbmRfcGNtX2h3X3BhcmFtX3NldGVtcHR5KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCXNuZF9wY21faHdfcGFyYW1fdCB2YXIpCkBAIC0xMzYwLDQyICsxMjQzLDcgQEAKIAl9CiB9CiAKLWludCBfc25kX3BjbV9od19wYXJhbV9zZXRpbnRlZ2VyKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJCSBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyKQotewotCWludCBjaGFuZ2VkOwotCWFzc2VydChod19pc19pbnRlcnZhbCh2YXIpKTsKLQljaGFuZ2VkID0gc25kX2ludGVydmFsX3NldGludGVnZXIoaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLCB2YXIpKTsKLQlpZiAoY2hhbmdlZCkgewotCQlwYXJhbXMtPmNtYXNrIHw9IDEgPDwgdmFyOwotCQlwYXJhbXMtPnJtYXNrIHw9IDEgPDwgdmFyOwotCX0KLQlyZXR1cm4gY2hhbmdlZDsKLX0KLQkKLSNpZiAwCi0vKgotICogc25kX3BjbV9od19wYXJhbV9zZXRpbnRlZ2VyCi0gKgotICogSW5zaWRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSBQQVJBTVMgcmVtb3ZlIGZyb20gUEFSIGFsbCAKLSAqIG5vbiBpbnRlZ2VyIHZhbHVlcy4gUmVkdWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjb3JkaW5nbHkuCi0gKiBSZXR1cm4gLUVJTlZBTCBpZiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBpcyBlbXB0eQotICovCi1pbnQgc25kX3BjbV9od19wYXJhbV9zZXRpbnRlZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCAKLQkJCQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQlzbmRfcGNtX2h3X3BhcmFtX3QgdmFyKQotewotCWludCBjaGFuZ2VkID0gX3NuZF9wY21faHdfcGFyYW1fc2V0aW50ZWdlcihwYXJhbXMsIHZhcik7Ci0JaWYgKGNoYW5nZWQgPCAwKQotCQlyZXR1cm4gY2hhbmdlZDsKLQlpZiAocGFyYW1zLT5ybWFzaykgewotCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOwotCQlpZiAoZXJyIDwgMCkKLQkJCXJldHVybiBlcnI7Ci0JfQotCXJldHVybiAwOwotfQotI2VuZGlmICAvKiAgMCAgKi8KK0VYUE9SVF9TWU1CT0woX3NuZF9wY21faHdfcGFyYW1fc2V0ZW1wdHkpOwogCiBzdGF0aWMgaW50IF9zbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJCSAgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIpCkBAIC0xNDA1LDEwICsxMjUzLDggQEAKIAkJY2hhbmdlZCA9IHNuZF9tYXNrX3JlZmluZV9maXJzdChod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKSk7CiAJZWxzZSBpZiAoaHdfaXNfaW50ZXJ2YWwodmFyKSkKIAkJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9yZWZpbmVfZmlyc3QoaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLCB2YXIpKTsKLQllbHNlIHsKLQkJYXNzZXJ0KDApOworCWVsc2UKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JfQogCWlmIChjaGFuZ2VkKSB7CiAJCXBhcmFtcy0+Y21hc2sgfD0gMSA8PCB2YXI7CiAJCXBhcmFtcy0+cm1hc2sgfD0gMSA8PCB2YXI7CkBAIC0xNDI4LDIwICsxMjc0LDIyIEBACiAgKiB2YWx1ZXMgPiBtaW5pbXVtLiBSZWR1Y2UgY29uZmlndXJhdGlvbiBzcGFjZSBhY2NvcmRpbmdseS4KICAqIFJldHVybiB0aGUgbWluaW11bS4KICAqLwotc3RhdGljIGludCBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCAKLQkJCQkgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLCAKLQkJCQkgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIGludCAqZGlyKQoraW50IHNuZF9wY21faHdfcGFyYW1fZmlyc3Qoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sIAorCQkJICAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsIAorCQkJICAgc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCiB7CiAJaW50IGNoYW5nZWQgPSBfc25kX3BjbV9od19wYXJhbV9maXJzdChwYXJhbXMsIHZhcik7CiAJaWYgKGNoYW5nZWQgPCAwKQogCQlyZXR1cm4gY2hhbmdlZDsKIAlpZiAocGFyYW1zLT5ybWFzaykgewogCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOwotCQlhc3NlcnQoZXJyID49IDApOworCQlzbmRfYXNzZXJ0KGVyciA+PSAwLCByZXR1cm4gZXJyKTsKIAl9CiAJcmV0dXJuIHNuZF9wY21faHdfcGFyYW1fdmFsdWUocGFyYW1zLCB2YXIsIGRpcik7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV9maXJzdCk7CisKIHN0YXRpYyBpbnQgX3NuZF9wY21faHdfcGFyYW1fbGFzdChzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKIAkJCQkgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIpCiB7CkBAIC0xNDUwLDEwICsxMjk4LDggQEAKIAkJY2hhbmdlZCA9IHNuZF9tYXNrX3JlZmluZV9sYXN0KGh3X3BhcmFtX21hc2socGFyYW1zLCB2YXIpKTsKIAllbHNlIGlmIChod19pc19pbnRlcnZhbCh2YXIpKQogCQljaGFuZ2VkID0gc25kX2ludGVydmFsX3JlZmluZV9sYXN0KGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgdmFyKSk7Ci0JZWxzZSB7Ci0JCWFzc2VydCgwKTsKKwllbHNlCiAJCXJldHVybiAtRUlOVkFMOwotCX0KIAlpZiAoY2hhbmdlZCkgewogCQlwYXJhbXMtPmNtYXNrIHw9IDEgPDwgdmFyOwogCQlwYXJhbXMtPnJtYXNrIHw9IDEgPDwgdmFyOwpAQCAtMTQ3MywzODEgKzEzMTksMjEgQEAKICAqIHZhbHVlcyA8IG1heGltdW0uIFJlZHVjZSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY29yZGluZ2x5LgogICogUmV0dXJuIHRoZSBtYXhpbXVtLgogICovCi1zdGF0aWMgaW50IHNuZF9wY21faHdfcGFyYW1fbGFzdChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwgCi0JCQkJIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJCSBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCBpbnQgKmRpcikKK2ludCBzbmRfcGNtX2h3X3BhcmFtX2xhc3Qoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sIAorCQkJICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKwkJCSAgc25kX3BjbV9od19wYXJhbV90IHZhciwgaW50ICpkaXIpCiB7CiAJaW50IGNoYW5nZWQgPSBfc25kX3BjbV9od19wYXJhbV9sYXN0KHBhcmFtcywgdmFyKTsKIAlpZiAoY2hhbmdlZCA8IDApCiAJCXJldHVybiBjaGFuZ2VkOwogCWlmIChwYXJhbXMtPnJtYXNrKSB7CiAJCWludCBlcnIgPSBzbmRfcGNtX2h3X3JlZmluZShwY20sIHBhcmFtcyk7Ci0JCWFzc2VydChlcnIgPj0gMCk7CisJCXNuZF9hc3NlcnQoZXJyID49IDAsIHJldHVybiBlcnIpOwogCX0KIAlyZXR1cm4gc25kX3BjbV9od19wYXJhbV92YWx1ZShwYXJhbXMsIHZhciwgZGlyKTsKIH0KIAotaW50IF9zbmRfcGNtX2h3X3BhcmFtX21pbihzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCSAgc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwgaW50IGRpcikKLXsKLQlpbnQgY2hhbmdlZDsKLQlpbnQgb3BlbiA9IDA7Ci0JaWYgKGRpcikgewotCQlpZiAoZGlyID4gMCkgewotCQkJb3BlbiA9IDE7Ci0JCX0gZWxzZSBpZiAoZGlyIDwgMCkgewotCQkJaWYgKHZhbCA+IDApIHsKLQkJCQlvcGVuID0gMTsKLQkJCQl2YWwtLTsKLQkJCX0KLQkJfQotCX0KLQlpZiAoaHdfaXNfbWFzayh2YXIpKQotCQljaGFuZ2VkID0gc25kX21hc2tfcmVmaW5lX21pbihod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKSwgdmFsICsgISFvcGVuKTsKLQllbHNlIGlmIChod19pc19pbnRlcnZhbCh2YXIpKQotCQljaGFuZ2VkID0gc25kX2ludGVydmFsX3JlZmluZV9taW4oaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLCB2YXIpLCB2YWwsIG9wZW4pOwotCWVsc2UgewotCQlhc3NlcnQoMCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQlpZiAoY2hhbmdlZCkgewotCQlwYXJhbXMtPmNtYXNrIHw9IDEgPDwgdmFyOwotCQlwYXJhbXMtPnJtYXNrIHw9IDEgPDwgdmFyOwotCX0KLQlyZXR1cm4gY2hhbmdlZDsKLX0KLQotLyoqCi0gKiBzbmRfcGNtX2h3X3BhcmFtX21pbgotICogQHBjbTogUENNIGluc3RhbmNlCi0gKiBAcGFyYW1zOiB0aGUgaHdfcGFyYW1zIGluc3RhbmNlCi0gKiBAdmFyOiBwYXJhbWV0ZXIgdG8gcmV0cmlldmUKLSAqIEB2YWw6IG1pbmltYWwgdmFsdWUKLSAqIEBkaXI6IHBvaW50ZXIgdG8gdGhlIGRpcmVjdGlvbiAoLTEsMCwxKSBvciBOVUxMCi0gKgotICogSW5zaWRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSBQQVJBTVMgcmVtb3ZlIGZyb20gUEFSIGFsbCAKLSAqIHZhbHVlcyA8IFZBTC4gUmVkdWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjb3JkaW5nbHkuCi0gKiBSZXR1cm4gbmV3IG1pbmltdW0gb3IgLUVJTlZBTCBpZiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBpcyBlbXB0eQotICovCi1zdGF0aWMgaW50IHNuZF9wY21faHdfcGFyYW1fbWluKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQlzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCB1bnNpZ25lZCBpbnQgdmFsLAotCQkJCWludCAqZGlyKQotewotCWludCBjaGFuZ2VkID0gX3NuZF9wY21faHdfcGFyYW1fbWluKHBhcmFtcywgdmFyLCB2YWwsIGRpciA/ICpkaXIgOiAwKTsKLQlpZiAoY2hhbmdlZCA8IDApCi0JCXJldHVybiBjaGFuZ2VkOwotCWlmIChwYXJhbXMtPnJtYXNrKSB7Ci0JCWludCBlcnIgPSBzbmRfcGNtX2h3X3JlZmluZShwY20sIHBhcmFtcyk7Ci0JCWlmIChlcnIgPCAwKQotCQkJcmV0dXJuIGVycjsKLQl9Ci0JcmV0dXJuIHNuZF9wY21faHdfcGFyYW1fdmFsdWVfbWluKHBhcmFtcywgdmFyLCBkaXIpOwotfQotCi1zdGF0aWMgaW50IF9zbmRfcGNtX2h3X3BhcmFtX21heChzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCQkgc25kX3BjbV9od19wYXJhbV90IHZhciwgdW5zaWduZWQgaW50IHZhbCwKLQkJCQkgaW50IGRpcikKLXsKLQlpbnQgY2hhbmdlZDsKLQlpbnQgb3BlbiA9IDA7Ci0JaWYgKGRpcikgewotCQlpZiAoZGlyIDwgMCkgewotCQkJb3BlbiA9IDE7Ci0JCX0gZWxzZSBpZiAoZGlyID4gMCkgewotCQkJb3BlbiA9IDE7Ci0JCQl2YWwrKzsKLQkJfQotCX0KLQlpZiAoaHdfaXNfbWFzayh2YXIpKSB7Ci0JCWlmICh2YWwgPT0gMCAmJiBvcGVuKSB7Ci0JCQlzbmRfbWFza19ub25lKGh3X3BhcmFtX21hc2socGFyYW1zLCB2YXIpKTsKLQkJCWNoYW5nZWQgPSAtRUlOVkFMOwotCQl9IGVsc2UKLQkJCWNoYW5nZWQgPSBzbmRfbWFza19yZWZpbmVfbWF4KGh3X3BhcmFtX21hc2socGFyYW1zLCB2YXIpLCB2YWwgLSAhIW9wZW4pOwotCX0gZWxzZSBpZiAoaHdfaXNfaW50ZXJ2YWwodmFyKSkKLQkJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9yZWZpbmVfbWF4KGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgdmFyKSwgdmFsLCBvcGVuKTsKLQllbHNlIHsKLQkJYXNzZXJ0KDApOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JaWYgKGNoYW5nZWQpIHsKLQkJcGFyYW1zLT5jbWFzayB8PSAxIDw8IHZhcjsKLQkJcGFyYW1zLT5ybWFzayB8PSAxIDw8IHZhcjsKLQl9Ci0JcmV0dXJuIGNoYW5nZWQ7Ci19Ci0KLS8qKgotICogc25kX3BjbV9od19wYXJhbV9tYXgKLSAqIEBwY206IFBDTSBpbnN0YW5jZQotICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQotICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCi0gKiBAdmFsOiBtYXhpbWFsIHZhbHVlCi0gKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAotICoKLSAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgUEFSQU1TIHJlbW92ZSBmcm9tIFBBUiBhbGwgCi0gKiAgdmFsdWVzID49IFZBTCArIDEuIFJlZHVjZSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY29yZGluZ2x5LgotICogIFJldHVybiBuZXcgbWF4aW11bSBvciAtRUlOVkFMIGlmIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIGVtcHR5Ci0gKi8KLXN0YXRpYyBpbnQgc25kX3BjbV9od19wYXJhbV9tYXgoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJCXNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCB2YWwsCi0JCQkJaW50ICpkaXIpCi17Ci0JaW50IGNoYW5nZWQgPSBfc25kX3BjbV9od19wYXJhbV9tYXgocGFyYW1zLCB2YXIsIHZhbCwgZGlyID8gKmRpciA6IDApOwotCWlmIChjaGFuZ2VkIDwgMCkKLQkJcmV0dXJuIGNoYW5nZWQ7Ci0JaWYgKHBhcmFtcy0+cm1hc2spIHsKLQkJaW50IGVyciA9IHNuZF9wY21faHdfcmVmaW5lKHBjbSwgcGFyYW1zKTsKLQkJaWYgKGVyciA8IDApCi0JCQlyZXR1cm4gZXJyOwotCX0KLQlyZXR1cm4gc25kX3BjbV9od19wYXJhbV92YWx1ZV9tYXgocGFyYW1zLCB2YXIsIGRpcik7Ci19Ci0KLWludCBfc25kX3BjbV9od19wYXJhbV9zZXQoc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCi0JCQkgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCB2YWwsIGludCBkaXIpCi17Ci0JaW50IGNoYW5nZWQ7Ci0JaWYgKGh3X2lzX21hc2sodmFyKSkgewotCQlzdHJ1Y3Qgc25kX21hc2sgKm0gPSBod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKTsKLQkJaWYgKHZhbCA9PSAwICYmIGRpciA8IDApIHsKLQkJCWNoYW5nZWQgPSAtRUlOVkFMOwotCQkJc25kX21hc2tfbm9uZShtKTsKLQkJfSBlbHNlIHsKLQkJCWlmIChkaXIgPiAwKQotCQkJCXZhbCsrOwotCQkJZWxzZSBpZiAoZGlyIDwgMCkKLQkJCQl2YWwtLTsKLQkJCWNoYW5nZWQgPSBzbmRfbWFza19yZWZpbmVfc2V0KGh3X3BhcmFtX21hc2socGFyYW1zLCB2YXIpLCB2YWwpOwotCQl9Ci0JfSBlbHNlIGlmIChod19pc19pbnRlcnZhbCh2YXIpKSB7Ci0JCXN0cnVjdCBzbmRfaW50ZXJ2YWwgKmkgPSBod19wYXJhbV9pbnRlcnZhbChwYXJhbXMsIHZhcik7Ci0JCWlmICh2YWwgPT0gMCAmJiBkaXIgPCAwKSB7Ci0JCQljaGFuZ2VkID0gLUVJTlZBTDsKLQkJCXNuZF9pbnRlcnZhbF9ub25lKGkpOwotCQl9IGVsc2UgaWYgKGRpciA9PSAwKQotCQkJY2hhbmdlZCA9IHNuZF9pbnRlcnZhbF9yZWZpbmVfc2V0KGksIHZhbCk7Ci0JCWVsc2UgewotCQkJc3RydWN0IHNuZF9pbnRlcnZhbCB0OwotCQkJdC5vcGVubWluID0gMTsKLQkJCXQub3Blbm1heCA9IDE7Ci0JCQl0LmVtcHR5ID0gMDsKLQkJCXQuaW50ZWdlciA9IDA7Ci0JCQlpZiAoZGlyIDwgMCkgewotCQkJCXQubWluID0gdmFsIC0gMTsKLQkJCQl0Lm1heCA9IHZhbDsKLQkJCX0gZWxzZSB7Ci0JCQkJdC5taW4gPSB2YWw7Ci0JCQkJdC5tYXggPSB2YWwrMTsKLQkJCX0KLQkJCWNoYW5nZWQgPSBzbmRfaW50ZXJ2YWxfcmVmaW5lKGksICZ0KTsKLQkJfQotCX0gZWxzZSB7Ci0JCWFzc2VydCgwKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCWlmIChjaGFuZ2VkKSB7Ci0JCXBhcmFtcy0+Y21hc2sgfD0gMSA8PCB2YXI7Ci0JCXBhcmFtcy0+cm1hc2sgfD0gMSA8PCB2YXI7Ci0JfQotCXJldHVybiBjaGFuZ2VkOwotfQotCi0vKioKLSAqIHNuZF9wY21faHdfcGFyYW1fc2V0Ci0gKiBAcGNtOiBQQ00gaW5zdGFuY2UKLSAqIEBwYXJhbXM6IHRoZSBod19wYXJhbXMgaW5zdGFuY2UKLSAqIEB2YXI6IHBhcmFtZXRlciB0byByZXRyaWV2ZQotICogQHZhbDogdmFsdWUgdG8gc2V0Ci0gKiBAZGlyOiBwb2ludGVyIHRvIHRoZSBkaXJlY3Rpb24gKC0xLDAsMSkgb3IgTlVMTAotICoKLSAqIEluc2lkZSBjb25maWd1cmF0aW9uIHNwYWNlIGRlZmluZWQgYnkgUEFSQU1TIHJlbW92ZSBmcm9tIFBBUiBhbGwgCi0gKiB2YWx1ZXMgIT0gVkFMLiBSZWR1Y2UgY29uZmlndXJhdGlvbiBzcGFjZSBhY2NvcmRpbmdseS4KLSAqICBSZXR1cm4gVkFMIG9yIC1FSU5WQUwgaWYgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXMgZW1wdHkKLSAqLwotaW50IHNuZF9wY21faHdfcGFyYW1fc2V0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKLQkJCSBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCB1bnNpZ25lZCBpbnQgdmFsLCBpbnQgZGlyKQotewotCWludCBjaGFuZ2VkID0gX3NuZF9wY21faHdfcGFyYW1fc2V0KHBhcmFtcywgdmFyLCB2YWwsIGRpcik7Ci0JaWYgKGNoYW5nZWQgPCAwKQotCQlyZXR1cm4gY2hhbmdlZDsKLQlpZiAocGFyYW1zLT5ybWFzaykgewotCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOwotCQlpZiAoZXJyIDwgMCkKLQkJCXJldHVybiBlcnI7Ci0JfQotCXJldHVybiBzbmRfcGNtX2h3X3BhcmFtX3ZhbHVlKHBhcmFtcywgdmFyLCBOVUxMKTsKLX0KLQotc3RhdGljIGludCBfc25kX3BjbV9od19wYXJhbV9tYXNrKHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJCSAgc25kX3BjbV9od19wYXJhbV90IHZhciwgY29uc3Qgc3RydWN0IHNuZF9tYXNrICp2YWwpCi17Ci0JaW50IGNoYW5nZWQ7Ci0JYXNzZXJ0KGh3X2lzX21hc2sodmFyKSk7Ci0JY2hhbmdlZCA9IHNuZF9tYXNrX3JlZmluZShod19wYXJhbV9tYXNrKHBhcmFtcywgdmFyKSwgdmFsKTsKLQlpZiAoY2hhbmdlZCkgewotCQlwYXJhbXMtPmNtYXNrIHw9IDEgPDwgdmFyOwotCQlwYXJhbXMtPnJtYXNrIHw9IDEgPDwgdmFyOwotCX0KLQlyZXR1cm4gY2hhbmdlZDsKLX0KLQotLyoqCi0gKiBzbmRfcGNtX2h3X3BhcmFtX21hc2sKLSAqIEBwY206IFBDTSBpbnN0YW5jZQotICogQHBhcmFtczogdGhlIGh3X3BhcmFtcyBpbnN0YW5jZQotICogQHZhcjogcGFyYW1ldGVyIHRvIHJldHJpZXZlCi0gKiBAdmFsOiBtYXNrIHRvIGFwcGx5Ci0gKgotICogSW5zaWRlIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSBQQVJBTVMgcmVtb3ZlIGZyb20gUEFSIGFsbCB2YWx1ZXMKLSAqIG5vdCBjb250YWluZWQgaW4gTUFTSy4gUmVkdWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjb3JkaW5nbHkuCi0gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgb25seSBmb3IgU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUywKLSAqIFNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQsIFNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQuCi0gKiBSZXR1cm4gMCBvbiBzdWNjZXNzIG9yIC1FSU5WQUwKLSAqIGlmIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIGVtcHR5Ci0gKi8KLWludCBzbmRfcGNtX2h3X3BhcmFtX21hc2soc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAotCQkJICBzbmRfcGNtX2h3X3BhcmFtX3QgdmFyLCBjb25zdCBzdHJ1Y3Qgc25kX21hc2sgKnZhbCkKLXsKLQlpbnQgY2hhbmdlZCA9IF9zbmRfcGNtX2h3X3BhcmFtX21hc2socGFyYW1zLCB2YXIsIHZhbCk7Ci0JaWYgKGNoYW5nZWQgPCAwKQotCQlyZXR1cm4gY2hhbmdlZDsKLQlpZiAocGFyYW1zLT5ybWFzaykgewotCQlpbnQgZXJyID0gc25kX3BjbV9od19yZWZpbmUocGNtLCBwYXJhbXMpOwotCQlpZiAoZXJyIDwgMCkKLQkJCXJldHVybiBlcnI7Ci0JfQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGJvdW5kYXJ5X3N1YihpbnQgYSwgaW50IGFkaXIsCi0JCQlpbnQgYiwgaW50IGJkaXIsCi0JCQlpbnQgKmMsIGludCAqY2RpcikKLXsKLQlhZGlyID0gYWRpciA8IDAgPyAtMSA6IChhZGlyID4gMCA/IDEgOiAwKTsKLQliZGlyID0gYmRpciA8IDAgPyAtMSA6IChiZGlyID4gMCA/IDEgOiAwKTsKLQkqYyA9IGEgLSBiOwotCSpjZGlyID0gYWRpciAtIGJkaXI7Ci0JaWYgKCpjZGlyID09IC0yKSB7Ci0JCWFzc2VydCgqYyA+IElOVF9NSU4pOwotCQkoKmMpLS07Ci0JfSBlbHNlIGlmICgqY2RpciA9PSAyKSB7Ci0JCWFzc2VydCgqYyA8IElOVF9NQVgpOwotCQkoKmMpKys7Ci0JfQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGJvdW5kYXJ5X2x0KHVuc2lnbmVkIGludCBhLCBpbnQgYWRpciwKLQkJICAgICAgIHVuc2lnbmVkIGludCBiLCBpbnQgYmRpcikKLXsKLQlhc3NlcnQoYSA+IDAgfHwgYWRpciA+PSAwKTsKLQlhc3NlcnQoYiA+IDAgfHwgYmRpciA+PSAwKTsKLQlpZiAoYWRpciA8IDApIHsKLQkJYS0tOwotCQlhZGlyID0gMTsKLQl9IGVsc2UgaWYgKGFkaXIgPiAwKQotCQlhZGlyID0gMTsKLQlpZiAoYmRpciA8IDApIHsKLQkJYi0tOwotCQliZGlyID0gMTsKLQl9IGVsc2UgaWYgKGJkaXIgPiAwKQotCQliZGlyID0gMTsKLQlyZXR1cm4gYSA8IGIgfHwgKGEgPT0gYiAmJiBhZGlyIDwgYmRpcik7Ci19Ci0KLS8qIFJldHVybiAxIGlmIG1pbiBpcyBuZWFyZXIgdG8gYmVzdCB0aGFuIG1heCAqLwotc3RhdGljIGludCBib3VuZGFyeV9uZWFyZXIoaW50IG1pbiwgaW50IG1pbmRpciwKLQkJCSAgIGludCBiZXN0LCBpbnQgYmVzdGRpciwKLQkJCSAgIGludCBtYXgsIGludCBtYXhkaXIpCi17Ci0JaW50IGRtaW4sIGRtaW5kaXI7Ci0JaW50IGRtYXgsIGRtYXhkaXI7Ci0JYm91bmRhcnlfc3ViKGJlc3QsIGJlc3RkaXIsIG1pbiwgbWluZGlyLCAmZG1pbiwgJmRtaW5kaXIpOwotCWJvdW5kYXJ5X3N1YihtYXgsIG1heGRpciwgYmVzdCwgYmVzdGRpciwgJmRtYXgsICZkbWF4ZGlyKTsKLQlyZXR1cm4gYm91bmRhcnlfbHQoZG1pbiwgZG1pbmRpciwgZG1heCwgZG1heGRpcik7Ci19Ci0KLS8qKgotICogc25kX3BjbV9od19wYXJhbV9uZWFyCi0gKiBAcGNtOiBQQ00gaW5zdGFuY2UKLSAqIEBwYXJhbXM6IHRoZSBod19wYXJhbXMgaW5zdGFuY2UKLSAqIEB2YXI6IHBhcmFtZXRlciB0byByZXRyaWV2ZQotICogQGJlc3Q6IHZhbHVlIHRvIHNldAotICogQGRpcjogcG9pbnRlciB0byB0aGUgZGlyZWN0aW9uICgtMSwwLDEpIG9yIE5VTEwKLSAqCi0gKiBJbnNpZGUgY29uZmlndXJhdGlvbiBzcGFjZSBkZWZpbmVkIGJ5IFBBUkFNUyBzZXQgUEFSIHRvIHRoZSBhdmFpbGFibGUgdmFsdWUKLSAqIG5lYXJlc3QgdG8gVkFMLiBSZWR1Y2UgY29uZmlndXJhdGlvbiBzcGFjZSBhY2NvcmRpbmdseS4KLSAqIFRoaXMgZnVuY3Rpb24gY2Fubm90IGJlIGNhbGxlZCBmb3IgU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUywKLSAqIFNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQsIFNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQuCi0gKiBSZXR1cm4gdGhlIHZhbHVlIGZvdW5kLgotICAqLwotaW50IHNuZF9wY21faHdfcGFyYW1fbmVhcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnBjbSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCi0JCQkgIHNuZF9wY21faHdfcGFyYW1fdCB2YXIsIHVuc2lnbmVkIGludCBiZXN0LCBpbnQgKmRpcikKLXsKLQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnNhdmUgPSBOVUxMOwotCWludCB2OwotCXVuc2lnbmVkIGludCBzYXZlZF9taW47Ci0JaW50IGxhc3QgPSAwOwotCWludCBtaW4sIG1heDsKLQlpbnQgbWluZGlyLCBtYXhkaXI7Ci0JaW50IHZhbGRpciA9IGRpciA/ICpkaXIgOiAwOwotCS8qIEZJWE1FICovCi0JaWYgKGJlc3QgPiBJTlRfTUFYKQotCQliZXN0ID0gSU5UX01BWDsKLQltaW4gPSBtYXggPSBiZXN0OwotCW1pbmRpciA9IG1heGRpciA9IHZhbGRpcjsKLQlpZiAobWF4ZGlyID4gMCkKLQkJbWF4ZGlyID0gMDsKLQllbHNlIGlmIChtYXhkaXIgPT0gMCkKLQkJbWF4ZGlyID0gLTE7Ci0JZWxzZSB7Ci0JCW1heGRpciA9IDE7Ci0JCW1heC0tOwotCX0KLQlzYXZlID0ga21hbGxvYyhzaXplb2YoKnNhdmUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoc2F2ZSA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT01FTTsKLQkqc2F2ZSA9ICpwYXJhbXM7Ci0Jc2F2ZWRfbWluID0gbWluOwotCW1pbiA9IHNuZF9wY21faHdfcGFyYW1fbWluKHBjbSwgcGFyYW1zLCB2YXIsIG1pbiwgJm1pbmRpcik7Ci0JaWYgKG1pbiA+PSAwKSB7Ci0JCXN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zMTsKLQkJaWYgKG1heCA8IDApCi0JCQlnb3RvIF9lbmQ7Ci0JCWlmICgodW5zaWduZWQgaW50KW1pbiA9PSBzYXZlZF9taW4gJiYgbWluZGlyID09IHZhbGRpcikKLQkJCWdvdG8gX2VuZDsKLQkJcGFyYW1zMSA9IGttYWxsb2Moc2l6ZW9mKCpwYXJhbXMxKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmIChwYXJhbXMxID09IE5VTEwpIHsKLQkJCWtmcmVlKHNhdmUpOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0KLQkJKnBhcmFtczEgPSAqc2F2ZTsKLQkJbWF4ID0gc25kX3BjbV9od19wYXJhbV9tYXgocGNtLCBwYXJhbXMxLCB2YXIsIG1heCwgJm1heGRpcik7Ci0JCWlmIChtYXggPCAwKSB7Ci0JCQlrZnJlZShwYXJhbXMxKTsKLQkJCWdvdG8gX2VuZDsKLQkJfQotCQlpZiAoYm91bmRhcnlfbmVhcmVyKG1heCwgbWF4ZGlyLCBiZXN0LCB2YWxkaXIsIG1pbiwgbWluZGlyKSkgewotCQkJKnBhcmFtcyA9ICpwYXJhbXMxOwotCQkJbGFzdCA9IDE7Ci0JCX0KLQkJa2ZyZWUocGFyYW1zMSk7Ci0JfSBlbHNlIHsKLQkJKnBhcmFtcyA9ICpzYXZlOwotCQltYXggPSBzbmRfcGNtX2h3X3BhcmFtX21heChwY20sIHBhcmFtcywgdmFyLCBtYXgsICZtYXhkaXIpOwotCQlhc3NlcnQobWF4ID49IDApOwotCQlsYXN0ID0gMTsKLQl9Ci0gX2VuZDoKLSAJa2ZyZWUoc2F2ZSk7Ci0JaWYgKGxhc3QpCi0JCXYgPSBzbmRfcGNtX2h3X3BhcmFtX2xhc3QocGNtLCBwYXJhbXMsIHZhciwgZGlyKTsKLQllbHNlCi0JCXYgPSBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHBjbSwgcGFyYW1zLCB2YXIsIGRpcik7Ci0JYXNzZXJ0KHYgPj0gMCk7Ci0JcmV0dXJuIHY7Ci19CitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfcGFyYW1fbGFzdCk7CiAKIC8qKgogICogc25kX3BjbV9od19wYXJhbV9jaG9vc2UKQEAgLTE4NTksMzkgKzEzNDUsMzIgQEAKICAqIGZpcnN0IGFjY2VzcywgZmlyc3QgZm9ybWF0LCBmaXJzdCBzdWJmb3JtYXQsIG1pbiBjaGFubmVscywKICAqIG1pbiByYXRlLCBtaW4gcGVyaW9kIHRpbWUsIG1heCBidWZmZXIgc2l6ZSwgbWluIHRpY2sgdGltZQogICovCi1pbnQgc25kX3BjbV9od19wYXJhbXNfY2hvb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGNtLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykKK2ludCBzbmRfcGNtX2h3X3BhcmFtc19jaG9vc2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpwY20sCisJCQkgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKQogewotCWludCBlcnI7CisJc3RhdGljIGludCB2YXJzW10gPSB7CisJCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MsCisJCVNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQsCisJCVNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQsCisJCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUywKKwkJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUsCisJCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfVElNRSwKKwkJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFLAorCQlTTkRSVl9QQ01fSFdfUEFSQU1fVElDS19USU1FLAorCQktMQorCX07CisJaW50IGVyciwgKnY7CiAKLQllcnIgPSBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHBjbSwgcGFyYW1zLCBTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTLCBOVUxMKTsKLQlhc3NlcnQoZXJyID49IDApOwotCi0JZXJyID0gc25kX3BjbV9od19wYXJhbV9maXJzdChwY20sIHBhcmFtcywgU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVCwgTlVMTCk7Ci0JYXNzZXJ0KGVyciA+PSAwKTsKLQotCWVyciA9IHNuZF9wY21faHdfcGFyYW1fZmlyc3QocGNtLCBwYXJhbXMsIFNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQsIE5VTEwpOwotCWFzc2VydChlcnIgPj0gMCk7Ci0KLQllcnIgPSBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHBjbSwgcGFyYW1zLCBTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMsIE5VTEwpOwotCWFzc2VydChlcnIgPj0gMCk7Ci0KLQllcnIgPSBzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KHBjbSwgcGFyYW1zLCBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwgTlVMTCk7Ci0JYXNzZXJ0KGVyciA+PSAwKTsKLQotCWVyciA9IHNuZF9wY21faHdfcGFyYW1fZmlyc3QocGNtLCBwYXJhbXMsIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfVElNRSwgTlVMTCk7Ci0JYXNzZXJ0KGVyciA+PSAwKTsKLQotCWVyciA9IHNuZF9wY21faHdfcGFyYW1fbGFzdChwY20sIHBhcmFtcywgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFLCBOVUxMKTsKLQlhc3NlcnQoZXJyID49IDApOwotCi0JZXJyID0gc25kX3BjbV9od19wYXJhbV9maXJzdChwY20sIHBhcmFtcywgU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRSwgTlVMTCk7Ci0JYXNzZXJ0KGVyciA+PSAwKTsKLQorCWZvciAodiA9IHZhcnM7ICp2ICE9IC0xOyB2KyspIHsKKwkJaWYgKCp2ICE9IFNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfU0laRSkKKwkJCWVyciA9IHNuZF9wY21faHdfcGFyYW1fZmlyc3QocGNtLCBwYXJhbXMsICp2LCBOVUxMKTsKKwkJZWxzZQorCQkJZXJyID0gc25kX3BjbV9od19wYXJhbV9sYXN0KHBjbSwgcGFyYW1zLCAqdiwgTlVMTCk7CisJCXNuZF9hc3NlcnQoZXJyID49IDAsIHJldHVybiBlcnIpOworCX0KIAlyZXR1cm4gMDsKIH0KIAotI3VuZGVmIGFzc2VydAotCiBzdGF0aWMgaW50IHNuZF9wY21fbGliX2lvY3RsX3Jlc2V0KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJCSAgIHZvaWQgKmFyZykKIHsKQEAgLTE5NjcsNiArMTQ0Niw4IEBACiAJcmV0dXJuIC1FTlhJTzsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9pb2N0bCk7CisKIC8qCiAgKiAgQ29uZGl0aW9ucwogICovCkBAIC0yMTAxLDYgKzE1ODIsOCBAQAogCWtpbGxfZmFzeW5jKCZydW50aW1lLT5mYXN5bmMsIFNJR0lPLCBQT0xMX0lOKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKTsKKwogc3RhdGljIGludCBzbmRfcGNtX2xpYl93cml0ZV90cmFuc2ZlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCQkgICAgICB1bnNpZ25lZCBpbnQgaHdvZmYsCiAJCQkJICAgICAgdW5zaWduZWQgbG9uZyBkYXRhLCB1bnNpZ25lZCBpbnQgb2ZmLApAQCAtMjI5OSw3ICsxNzgyLDcgQEAKIAlpZiAocnVudGltZS0+c3RhdHVzLT5zdGF0ZSA9PSBTTkRSVl9QQ01fU1RBVEVfT1BFTikKIAkJcmV0dXJuIC1FQkFERkQ7CiAKLQlub25ibG9jayA9ICEhKHN1YnN0cmVhbS0+ZmZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKTsKKwlub25ibG9jayA9ICEhKHN1YnN0cmVhbS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spOwogCiAJaWYgKHJ1bnRpbWUtPmFjY2VzcyAhPSBTTkRSVl9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVEICYmCiAJICAgIHJ1bnRpbWUtPmNoYW5uZWxzID4gMSkKQEAgLTIzMDgsNiArMTc5MSw4IEBACiAJCQkJICBzbmRfcGNtX2xpYl93cml0ZV90cmFuc2Zlcik7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfd3JpdGUpOworCiBzdGF0aWMgaW50IHNuZF9wY21fbGliX3dyaXRldl90cmFuc2ZlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCQkgICAgICAgdW5zaWduZWQgaW50IGh3b2ZmLAogCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEsIHVuc2lnbmVkIGludCBvZmYsCkBAIC0yMzYyLDcgKzE4NDcsNyBAQAogCWlmIChydW50aW1lLT5zdGF0dXMtPnN0YXRlID09IFNORFJWX1BDTV9TVEFURV9PUEVOKQogCQlyZXR1cm4gLUVCQURGRDsKIAotCW5vbmJsb2NrID0gISEoc3Vic3RyZWFtLT5mZmlsZS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spOworCW5vbmJsb2NrID0gISEoc3Vic3RyZWFtLT5mX2ZsYWdzICYgT19OT05CTE9DSyk7CiAKIAlpZiAocnVudGltZS0+YWNjZXNzICE9IFNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMjM3MCw2ICsxODU1LDggQEAKIAkJCQkgIG5vbmJsb2NrLCBzbmRfcGNtX2xpYl93cml0ZXZfdHJhbnNmZXIpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3dyaXRldik7CisKIHN0YXRpYyBpbnQgc25kX3BjbV9saWJfcmVhZF90cmFuc2ZlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgaHdvZmYsCiAJCQkJICAgICB1bnNpZ25lZCBsb25nIGRhdGEsIHVuc2lnbmVkIGludCBvZmYsCkBAIC0yNTcyLDEyICsyMDU5LDE0IEBACiAJaWYgKHJ1bnRpbWUtPnN0YXR1cy0+c3RhdGUgPT0gU05EUlZfUENNX1NUQVRFX09QRU4pCiAJCXJldHVybiAtRUJBREZEOwogCi0Jbm9uYmxvY2sgPSAhIShzdWJzdHJlYW0tPmZmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSyk7CisJbm9uYmxvY2sgPSAhIShzdWJzdHJlYW0tPmZfZmxhZ3MgJiBPX05PTkJMT0NLKTsKIAlpZiAocnVudGltZS0+YWNjZXNzICE9IFNORFJWX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQpCiAJCXJldHVybiAtRUlOVkFMOwogCXJldHVybiBzbmRfcGNtX2xpYl9yZWFkMShzdWJzdHJlYW0sICh1bnNpZ25lZCBsb25nKWJ1Ziwgc2l6ZSwgbm9uYmxvY2ssIHNuZF9wY21fbGliX3JlYWRfdHJhbnNmZXIpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3JlYWQpOworCiBzdGF0aWMgaW50IHNuZF9wY21fbGliX3JlYWR2X3RyYW5zZmVyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBod29mZiwKIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIGRhdGEsIHVuc2lnbmVkIGludCBvZmYsCkBAIC0yNjI5LDU4ICsyMTE4LDEwIEBACiAJaWYgKHJ1bnRpbWUtPnN0YXR1cy0+c3RhdGUgPT0gU05EUlZfUENNX1NUQVRFX09QRU4pCiAJCXJldHVybiAtRUJBREZEOwogCi0Jbm9uYmxvY2sgPSAhIShzdWJzdHJlYW0tPmZmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSyk7CisJbm9uYmxvY2sgPSAhIShzdWJzdHJlYW0tPmZfZmxhZ3MgJiBPX05PTkJMT0NLKTsKIAlpZiAocnVudGltZS0+YWNjZXNzICE9IFNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQpCiAJCXJldHVybiAtRUlOVkFMOwogCXJldHVybiBzbmRfcGNtX2xpYl9yZWFkMShzdWJzdHJlYW0sICh1bnNpZ25lZCBsb25nKWJ1ZnMsIGZyYW1lcywgbm9uYmxvY2ssIHNuZF9wY21fbGliX3JlYWR2X3RyYW5zZmVyKTsKIH0KIAotLyoKLSAqICBFeHBvcnRlZCBzeW1ib2xzCi0gKi8KLQotRVhQT1JUX1NZTUJPTChzbmRfaW50ZXJ2YWxfcmVmaW5lKTsKLUVYUE9SVF9TWU1CT0woc25kX2ludGVydmFsX2xpc3QpOwotRVhQT1JUX1NZTUJPTChzbmRfaW50ZXJ2YWxfcmF0bnVtKTsKLUVYUE9SVF9TWU1CT0woX3NuZF9wY21faHdfcGFyYW1zX2FueSk7Ci1FWFBPUlRfU1lNQk9MKF9zbmRfcGNtX2h3X3BhcmFtX21pbik7Ci1FWFBPUlRfU1lNQk9MKF9zbmRfcGNtX2h3X3BhcmFtX3NldCk7Ci1FWFBPUlRfU1lNQk9MKF9zbmRfcGNtX2h3X3BhcmFtX3NldGVtcHR5KTsKLUVYUE9SVF9TWU1CT0woX3NuZF9wY21faHdfcGFyYW1fc2V0aW50ZWdlcik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfcGFyYW1fdmFsdWVfbWluKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV92YWx1ZV9tYXgpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X3BhcmFtX21hc2spOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X3BhcmFtX2ZpcnN0KTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV9sYXN0KTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV9uZWFyKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19wYXJhbV9zZXQpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X3JlZmluZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludHNfaW5pdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludHNfY29tcGxldGUpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbGlzdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9zdGVwKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19jb25zdHJhaW50X3JhdG51bXMpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfcmF0ZGVucyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfY29uc3RyYWludF9tc2JpdHMpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4KTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9od19jb25zdHJhaW50X2ludGVnZXIpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2h3X2NvbnN0cmFpbnRfcG93Mik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfcnVsZV9hZGQpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX3NldF9vcHMpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX3NldF9zeW5jKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfaW9jdGwpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX3N0b3ApOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfd3JpdGUpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9yZWFkKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfd3JpdGV2KTsKIEVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfcmVhZHYpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9idWZmZXJfYnl0ZXMpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9wZXJpb2RfYnl0ZXMpOwotLyogcGNtX21lbW9yeS5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX2ZyZWVfZm9yX2FsbCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzKTsKLUVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9wY21fc2didWZfb3BzX3BhZ2UpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9tYWxsb2NfcGFnZXMpOwotRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9mcmVlX3BhZ2VzKTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcGNtX21lbW9yeS5jIGIvc291bmQvY29yZS9wY21fbWVtb3J5LmMKaW5kZXggNDI4ZjhjMS4uMDY3ZDIwNSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbWVtb3J5LmMKKysrIGIvc291bmQvY29yZS9wY21fbWVtb3J5LmMKQEAgLTEyNiw2ICsxMjYsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX2ZyZWVfZm9yX2FsbCk7CisKICNpZmRlZiBDT05GSUdfU05EX1ZFUkJPU0VfUFJPQ0ZTCiAvKgogICogcmVhZCBjYWxsYmFjayBmb3IgcHJlYWxsb2MgcHJvYyBmaWxlCkBAIC0xOTEsOSArMTkzLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKChlbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9jYXJkX2VudHJ5KHN1YnN0cmVhbS0+cGNtLT5jYXJkLCAicHJlYWxsb2MiLCBzdWJzdHJlYW0tPnByb2Nfcm9vdCkpICE9IE5VTEwpIHsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSA2NDsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcHJvY19yZWFkOwotCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSA2NDsKIAkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3Byb2Nfd3JpdGU7CiAJCWVudHJ5LT5tb2RlIHw9IFNfSVdVU1I7CiAJCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBzdWJzdHJlYW07CkBAIC0yNTMsNiArMjUzLDggQEAKIAlyZXR1cm4gc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXMxKHN1YnN0cmVhbSwgc2l6ZSwgbWF4KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlcyk7CisKIC8qKgogICogc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbCAtIHByZS1hbGxvY2F0aW9uIGZvciBjb250aW5vdXMgbWVtb3J5IHR5cGUgKGFsbCBzdWJzdHJlYW1zKQogICogQHBjbTogdGhlIHBjbSBpbnN0YW5jZQpAQCAtMjgwLDYgKzI4Miw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbCk7CisKIC8qKgogICogc25kX3BjbV9zZ2J1Zl9vcHNfcGFnZSAtIGdldCB0aGUgcGFnZSBzdHJ1Y3QgYXQgdGhlIGdpdmVuIG9mZnNldAogICogQHN1YnN0cmVhbTogdGhlIHBjbSBzdWJzdHJlYW0gaW5zdGFuY2UKQEAgLTI5OCw2ICszMDIsOCBAQAogCXJldHVybiBzZ2J1Zi0+cGFnZV90YWJsZVtpZHhdOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fc2didWZfb3BzX3BhZ2UpOworCiAvKioKICAqIHNuZF9wY21fbGliX21hbGxvY19wYWdlcyAtIGFsbG9jYXRlIHRoZSBETUEgYnVmZmVyCiAgKiBAc3Vic3RyZWFtOiB0aGUgc3Vic3RyZWFtIHRvIGFsbG9jYXRlIHRoZSBETUEgYnVmZmVyIHRvCkBAIC0zNDksNiArMzU1LDggQEAKIAlyZXR1cm4gMTsJCQkvKiBhcmVhIHdhcyBjaGFuZ2VkICovCiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzKTsKKwogLyoqCiAgKiBzbmRfcGNtX2xpYl9mcmVlX3BhZ2VzIC0gcmVsZWFzZSB0aGUgYWxsb2NhdGVkIERNQSBidWZmZXIuCiAgKiBAc3Vic3RyZWFtOiB0aGUgc3Vic3RyZWFtIHRvIHJlbGVhc2UgdGhlIERNQSBidWZmZXIKQEAgLTM3NCwzICszODIsNSBAQAogCXNuZF9wY21fc2V0X3J1bnRpbWVfYnVmZmVyKHN1YnN0cmVhbSwgTlVMTCk7CiAJcmV0dXJuIDA7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfZnJlZV9wYWdlcyk7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3BjbV9taXNjLmMgYi9zb3VuZC9jb3JlL3BjbV9taXNjLmMKaW5kZXggNTkzYzc3Zi4uMDAxOWM1OSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbWlzYy5jCisrKyBiL3NvdW5kL2NvcmUvcGNtX21pc2MuYwpAQCAtMjA3LDYgKzIwNyw4IEBACiAJcmV0dXJuIHZhbDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9zaWduZWQpOworCiAvKioKICAqIHNuZF9wY21fZm9ybWF0X3Vuc2lnbmVkIC0gQ2hlY2sgdGhlIFBDTSBmb3JtYXQgaXMgdW5zaWduZWQgbGluZWFyCiAgKiBAZm9ybWF0OiB0aGUgZm9ybWF0IHRvIGNoZWNrCkBAIC0yMjQsNiArMjI2LDggQEAKIAlyZXR1cm4gIXZhbDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF91bnNpZ25lZCk7CisKIC8qKgogICogc25kX3BjbV9mb3JtYXRfbGluZWFyIC0gQ2hlY2sgdGhlIFBDTSBmb3JtYXQgaXMgbGluZWFyCiAgKiBAZm9ybWF0OiB0aGUgZm9ybWF0IHRvIGNoZWNrCkBAIC0yMzUsNiArMjM5LDggQEAKIAlyZXR1cm4gc25kX3BjbV9mb3JtYXRfc2lnbmVkKGZvcm1hdCkgPj0gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9saW5lYXIpOworCiAvKioKICAqIHNuZF9wY21fZm9ybWF0X2xpdHRsZV9lbmRpYW4gLSBDaGVjayB0aGUgUENNIGZvcm1hdCBpcyBsaXR0bGUtZW5kaWFuCiAgKiBAZm9ybWF0OiB0aGUgZm9ybWF0IHRvIGNoZWNrCkBAIC0yNTIsNiArMjU4LDggQEAKIAlyZXR1cm4gdmFsOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X2xpdHRsZV9lbmRpYW4pOworCiAvKioKICAqIHNuZF9wY21fZm9ybWF0X2JpZ19lbmRpYW4gLSBDaGVjayB0aGUgUENNIGZvcm1hdCBpcyBiaWctZW5kaWFuCiAgKiBAZm9ybWF0OiB0aGUgZm9ybWF0IHRvIGNoZWNrCkBAIC0yNjksNiArMjc3LDggQEAKIAlyZXR1cm4gIXZhbDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9iaWdfZW5kaWFuKTsKKwogLyoqCiAgKiBzbmRfcGNtX2Zvcm1hdF93aWR0aCAtIHJldHVybiB0aGUgYml0LXdpZHRoIG9mIHRoZSBmb3JtYXQKICAqIEBmb3JtYXQ6IHRoZSBmb3JtYXQgdG8gY2hlY2sKQEAgLTI4Niw2ICsyOTYsOCBAQAogCXJldHVybiB2YWw7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9mb3JtYXRfd2lkdGgpOworCiAvKioKICAqIHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoIC0gcmV0dXJuIHRoZSBwaHlzaWNhbCBiaXQtd2lkdGggb2YgdGhlIGZvcm1hdAogICogQGZvcm1hdDogdGhlIGZvcm1hdCB0byBjaGVjawpAQCAtMzAzLDYgKzMxNSw4IEBACiAJcmV0dXJuIHZhbDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aCk7CisKIC8qKgogICogc25kX3BjbV9mb3JtYXRfc2l6ZSAtIHJldHVybiB0aGUgYnl0ZSBzaXplIG9mIHNhbXBsZXMgb24gdGhlIGdpdmVuIGZvcm1hdAogICogQGZvcm1hdDogdGhlIGZvcm1hdCB0byBjaGVjawpAQCAtMzE4LDYgKzMzMiw4IEBACiAJcmV0dXJuIHNhbXBsZXMgKiBwaHlzX3dpZHRoIC8gODsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX2Zvcm1hdF9zaXplKTsKKwogLyoqCiAgKiBzbmRfcGNtX2Zvcm1hdF9zaWxlbmNlXzY0IC0gcmV0dXJuIHRoZSBzaWxlbnQgZGF0YSBpbiA4IGJ5dGVzIGFycmF5CiAgKiBAZm9ybWF0OiB0aGUgZm9ybWF0IHRvIGNoZWNrCkBAIC0zMzMsNiArMzQ5LDggQEAKIAlyZXR1cm4gcGNtX2Zvcm1hdHNbZm9ybWF0XS5zaWxlbmNlOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3NpbGVuY2VfNjQpOworCiAvKioKICAqIHNuZF9wY21fZm9ybWF0X3NldF9zaWxlbmNlIC0gc2V0IHRoZSBzaWxlbmNlIGRhdGEgb24gdGhlIGJ1ZmZlcgogICogQGZvcm1hdDogdGhlIFBDTSBmb3JtYXQKQEAgLTQwMiw2ICs0MjAsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fZm9ybWF0X3NldF9zaWxlbmNlKTsKKwogLyogW3dpZHRoXVt1bnNpZ25lZF1bYmlnZW5kaWFuXSAqLwogc3RhdGljIGludCBsaW5lYXJfZm9ybWF0c1s0XVsyXVsyXSA9IHsKIAl7eyBTTkRSVl9QQ01fRk9STUFUX1M4LCBTTkRSVl9QQ01fRk9STUFUX1M4fSwKQEAgLTQzMiw2ICs0NTIsOCBAQAogCXJldHVybiBsaW5lYXJfZm9ybWF0c1t3aWR0aF1bISF1bnNpZ25kXVshIWJpZ19lbmRpYW5dOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fYnVpbGRfbGluZWFyX2Zvcm1hdCk7CisKIC8qKgogICogc25kX3BjbV9saW1pdF9od19yYXRlcyAtIGRldGVybWluZSByYXRlX21pbi9yYXRlX21heCBmaWVsZHMKICAqIEBydW50aW1lOiB0aGUgcnVudGltZSBpbnN0YW5jZQpAQCAtNDYzLDMgKzQ4NSw1IEBACiAJfQogCXJldHVybiAwOwogfQorCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fbGltaXRfaHdfcmF0ZXMpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbmF0aXZlLmMgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwppbmRleCAwODYwYzVhLi40MzlmMDQ3IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYworKysgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwpAQCAtNzEsOCArNzEsOSBAQAogICovCiAKIERFRklORV9SV0xPQ0soc25kX3BjbV9saW5rX3J3bG9jayk7Ci1zdGF0aWMgREVDTEFSRV9SV1NFTShzbmRfcGNtX2xpbmtfcndzZW0pOworRVhQT1JUX1NZTUJPTChzbmRfcGNtX2xpbmtfcndsb2NrKTsKIAorc3RhdGljIERFQ0xBUkVfUldTRU0oc25kX3BjbV9saW5rX3J3c2VtKTsKIAogc3RhdGljIGlubGluZSBtbV9zZWdtZW50X3Qgc25kX2VudGVyX3VzZXIodm9pZCkKIHsKQEAgLTMxOSw2ICszMjAsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21faHdfcmVmaW5lKTsKKwogc3RhdGljIGludCBzbmRfcGNtX2h3X3JlZmluZV91c2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJCSAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zIF9fdXNlciAqIF9wYXJhbXMpCiB7CkBAIC0zNjksNyArMzcyLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19TTkRfUENNX09TUykgfHwgZGVmaW5lZChDT05GSUdfU05EX1BDTV9PU1NfTU9EVUxFKQogCWlmICghc3Vic3RyZWFtLT5vc3Mub3NzKQogI2VuZGlmCi0JCWlmIChhdG9taWNfcmVhZCgmcnVudGltZS0+bW1hcF9jb3VudCkpCisJCWlmIChhdG9taWNfcmVhZCgmc3Vic3RyZWFtLT5tbWFwX2NvdW50KSkKIAkJCXJldHVybiAtRUJBREZEOwogCiAJcGFyYW1zLT5ybWFzayA9IH4wVTsKQEAgLTQ4Miw3ICs0ODUsNyBAQAogCQlyZXR1cm4gLUVCQURGRDsKIAl9CiAJc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycShzdWJzdHJlYW0pOwotCWlmIChhdG9taWNfcmVhZCgmcnVudGltZS0+bW1hcF9jb3VudCkpCisJaWYgKGF0b21pY19yZWFkKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpKQogCQlyZXR1cm4gLUVCQURGRDsKIAlpZiAoc3Vic3RyZWFtLT5vcHMtPmh3X2ZyZWUpCiAJCXJlc3VsdCA9IHN1YnN0cmVhbS0+b3BzLT5od19mcmVlKHN1YnN0cmVhbSk7CkBAIC05MzYsNiArOTM5LDggQEAKIAlyZXR1cm4gc25kX3BjbV9hY3Rpb24oJnNuZF9wY21fYWN0aW9uX3N0b3AsIHN1YnN0cmVhbSwgc3RhdGUpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fc3RvcCk7CisKIC8qKgogICogc25kX3BjbV9kcmFpbl9kb25lCiAgKiBAc3Vic3RyZWFtOiB0aGUgUENNIHN1YnN0cmVhbQpAQCAtMTA4NSw2ICsxMDkwLDggQEAKIAlyZXR1cm4gZXJyOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fc3VzcGVuZCk7CisKIC8qKgogICogc25kX3BjbV9zdXNwZW5kX2FsbAogICogQHBjbTogdGhlIFBDTSBpbnN0YW5jZQpAQCAtMTExNCw2ICsxMTIxLDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX3N1c3BlbmRfYWxsKTsKKwogLyogcmVzdW1lICovCiAKIHN0YXRpYyBpbnQgc25kX3BjbV9wcmVfcmVzdW1lKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgc3RhdGUpCkBAIC0xMjc1LDEzICsxMjg0LDE2IEBACiAvKgogICogcHJlcGFyZSBpb2N0bAogICovCi1zdGF0aWMgaW50IHNuZF9wY21fcHJlX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBzdGF0ZSkKKy8qIHdlIHVzZSB0aGUgc2Vjb25kIGFyZ3VtZW50IGZvciB1cGRhdGluZyBmX2ZsYWdzICovCitzdGF0aWMgaW50IHNuZF9wY21fcHJlX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkgICAgICAgaW50IGZfZmxhZ3MpCiB7CiAJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIAlpZiAocnVudGltZS0+c3RhdHVzLT5zdGF0ZSA9PSBTTkRSVl9QQ01fU1RBVEVfT1BFTikKIAkJcmV0dXJuIC1FQkFERkQ7CiAJaWYgKHNuZF9wY21fcnVubmluZyhzdWJzdHJlYW0pKQogCQlyZXR1cm4gLUVCVVNZOworCXN1YnN0cmVhbS0+Zl9mbGFncyA9IGZfZmxhZ3M7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEzMTAsMTcgKzEzMjIsMjYgQEAKIC8qKgogICogc25kX3BjbV9wcmVwYXJlCiAgKiBAc3Vic3RyZWFtOiB0aGUgUENNIHN1YnN0cmVhbSBpbnN0YW5jZQorICogQGZpbGU6IGZpbGUgdG8gcmVmZXIgZl9mbGFncwogICoKICAqIFByZXBhcmUgdGhlIFBDTSBzdWJzdHJlYW0gdG8gYmUgdHJpZ2dlcmFibGUuCiAgKi8KLXN0YXRpYyBpbnQgc25kX3BjbV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorc3RhdGljIGludCBzbmRfcGNtX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlpbnQgcmVzOwogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZCA9IHN1YnN0cmVhbS0+cGNtLT5jYXJkOworCWludCBmX2ZsYWdzOworCisJaWYgKGZpbGUpCisJCWZfZmxhZ3MgPSBmaWxlLT5mX2ZsYWdzOworCWVsc2UKKwkJZl9mbGFncyA9IHN1YnN0cmVhbS0+Zl9mbGFnczsKIAogCXNuZF9wb3dlcl9sb2NrKGNhcmQpOwogCWlmICgocmVzID0gc25kX3Bvd2VyX3dhaXQoY2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QwKSkgPj0gMCkKLQkJcmVzID0gc25kX3BjbV9hY3Rpb25fbm9uYXRvbWljKCZzbmRfcGNtX2FjdGlvbl9wcmVwYXJlLCBzdWJzdHJlYW0sIDApOworCQlyZXMgPSBzbmRfcGNtX2FjdGlvbl9ub25hdG9taWMoJnNuZF9wY21fYWN0aW9uX3ByZXBhcmUsCisJCQkJCSAgICAgICBzdWJzdHJlYW0sIGZfZmxhZ3MpOwogCXNuZF9wb3dlcl91bmxvY2soY2FyZCk7CiAJcmV0dXJuIHJlczsKIH0KQEAgLTEzMzEsNyArMTM1Miw3IEBACiAKIHN0YXRpYyBpbnQgc25kX3BjbV9wcmVfZHJhaW5faW5pdChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IHN0YXRlKQogewotCWlmIChzdWJzdHJlYW0tPmZmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykKKwlpZiAoc3Vic3RyZWFtLT5mX2ZsYWdzICYgT19OT05CTE9DSykKIAkJcmV0dXJuIC1FQUdBSU47CiAJc3Vic3RyZWFtLT5ydW50aW1lLT50cmlnZ2VyX21hc3RlciA9IHN1YnN0cmVhbTsKIAlyZXR1cm4gMDsKQEAgLTE0NDgsOCArMTQ2OSw2IEBACiAJCX0KIAl9CiAJdXBfcmVhZCgmc25kX3BjbV9saW5rX3J3c2VtKTsKLQlpZiAoISBudW1fZHJlY3MpCi0JCWdvdG8gX2Vycm9yOwogCiAJc25kX3BjbV9zdHJlYW1fbG9ja19pcnEoc3Vic3RyZWFtKTsKIAkvKiByZXN1bWUgcGF1c2UgKi8KQEAgLTIwMDYsNiArMjAyNSwxMCBAQAogCiB2b2lkIHNuZF9wY21fcmVsZWFzZV9zdWJzdHJlYW0oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CisJc3Vic3RyZWFtLT5yZWZfY291bnQtLTsKKwlpZiAoc3Vic3RyZWFtLT5yZWZfY291bnQgPiAwKQorCQlyZXR1cm47CisKIAlzbmRfcGNtX2Ryb3Aoc3Vic3RyZWFtKTsKIAlpZiAoc3Vic3RyZWFtLT5od19vcGVuZWQpIHsKIAkJaWYgKHN1YnN0cmVhbS0+b3BzLT5od19mcmVlICE9IE5VTEwpCkBAIC0yMDIwLDYgKzIwNDMsOCBAQAogCXNuZF9wY21fZGV0YWNoX3N1YnN0cmVhbShzdWJzdHJlYW0pOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fcmVsZWFzZV9zdWJzdHJlYW0pOworCiBpbnQgc25kX3BjbV9vcGVuX3N1YnN0cmVhbShzdHJ1Y3Qgc25kX3BjbSAqcGNtLCBpbnQgc3RyZWFtLAogCQkJICAgc3RydWN0IGZpbGUgKmZpbGUsCiAJCQkgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKipyc3Vic3RyZWFtKQpAQCAtMjAzMCw2ICsyMDU1LDExIEBACiAJZXJyID0gc25kX3BjbV9hdHRhY2hfc3Vic3RyZWFtKHBjbSwgc3RyZWFtLCBmaWxlLCAmc3Vic3RyZWFtKTsKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKKwlpZiAoc3Vic3RyZWFtLT5yZWZfY291bnQgPiAxKSB7CisJCSpyc3Vic3RyZWFtID0gc3Vic3RyZWFtOworCQlyZXR1cm4gMDsKKwl9CisKIAlzdWJzdHJlYW0tPm5vX21tYXBfY3RybCA9IDA7CiAJZXJyID0gc25kX3BjbV9od19jb25zdHJhaW50c19pbml0KHN1YnN0cmVhbSk7CiAJaWYgKGVyciA8IDApIHsKQEAgLTIwNTYsNiArMjA4Niw4IEBACiAJcmV0dXJuIGVycjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfcGNtX29wZW5fc3Vic3RyZWFtKTsKKwogc3RhdGljIGludCBzbmRfcGNtX29wZW5fZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCSAgICAgc3RydWN0IHNuZF9wY20gKnBjbSwKIAkJCSAgICAgaW50IHN0cmVhbSwKQEAgLTIwNzMsMTcgKzIxMDUsMjAgQEAKIAlpZiAoZXJyIDwgMCkKIAkJcmV0dXJuIGVycjsKIAotCXBjbV9maWxlID0ga3phbGxvYyhzaXplb2YoKnBjbV9maWxlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHBjbV9maWxlID09IE5VTEwpIHsKLQkJc25kX3BjbV9yZWxlYXNlX3N1YnN0cmVhbShzdWJzdHJlYW0pOwotCQlyZXR1cm4gLUVOT01FTTsKKwlpZiAoc3Vic3RyZWFtLT5yZWZfY291bnQgPiAxKQorCQlwY21fZmlsZSA9IHN1YnN0cmVhbS0+ZmlsZTsKKwllbHNlIHsKKwkJcGNtX2ZpbGUgPSBremFsbG9jKHNpemVvZigqcGNtX2ZpbGUpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKHBjbV9maWxlID09IE5VTEwpIHsKKwkJCXNuZF9wY21fcmVsZWFzZV9zdWJzdHJlYW0oc3Vic3RyZWFtKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCXN0ciA9IHN1YnN0cmVhbS0+cHN0cjsKKwkJc3Vic3RyZWFtLT5maWxlID0gcGNtX2ZpbGU7CisJCXN1YnN0cmVhbS0+cGNtX3JlbGVhc2UgPSBwY21fcmVsZWFzZV9wcml2YXRlOworCQlwY21fZmlsZS0+c3Vic3RyZWFtID0gc3Vic3RyZWFtOworCQlzbmRfcGNtX2FkZF9maWxlKHN0ciwgcGNtX2ZpbGUpOwogCX0KLQlzdHIgPSBzdWJzdHJlYW0tPnBzdHI7Ci0Jc3Vic3RyZWFtLT5maWxlID0gcGNtX2ZpbGU7Ci0Jc3Vic3RyZWFtLT5wY21fcmVsZWFzZSA9IHBjbV9yZWxlYXNlX3ByaXZhdGU7Ci0JcGNtX2ZpbGUtPnN1YnN0cmVhbSA9IHN1YnN0cmVhbTsKLQlzbmRfcGNtX2FkZF9maWxlKHN0ciwgcGNtX2ZpbGUpOwotCiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcGNtX2ZpbGU7CiAJKnJwY21fZmlsZSA9IHBjbV9maWxlOwogCXJldHVybiAwOwpAQCAtMjE3MCw3ICsyMjA1LDYgQEAKIAlwY21fZmlsZSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlzdWJzdHJlYW0gPSBwY21fZmlsZS0+c3Vic3RyZWFtOwogCXNuZF9hc3NlcnQoc3Vic3RyZWFtICE9IE5VTEwsIHJldHVybiAtRU5YSU8pOwotCXNuZF9hc3NlcnQoIWF0b21pY19yZWFkKCZzdWJzdHJlYW0tPnJ1bnRpbWUtPm1tYXBfY291bnQpLCApOwogCXBjbSA9IHN1YnN0cmVhbS0+cGNtOwogCWZhc3luY19oZWxwZXIoLTEsIGZpbGUsIDAsICZzdWJzdHJlYW0tPnJ1bnRpbWUtPmZhc3luYyk7CiAJbXV0ZXhfbG9jaygmcGNtLT5vcGVuX211dGV4KTsKQEAgLTI0OTMsNyArMjUyNyw4IEBACiAJcmV0dXJuIDA7CiB9CiAJCQotc3RhdGljIGludCBzbmRfcGNtX2NvbW1vbl9pb2N0bDEoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCitzdGF0aWMgaW50IHNuZF9wY21fY29tbW9uX2lvY3RsMShzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCQkgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCQkJIHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpCiB7CiAJc25kX2Fzc2VydChzdWJzdHJlYW0gIT0gTlVMTCwgcmV0dXJuIC1FTlhJTyk7CkBAIC0yNTE4LDcgKzI1NTMsNyBAQAogCWNhc2UgU05EUlZfUENNX0lPQ1RMX0NIQU5ORUxfSU5GTzoKIAkJcmV0dXJuIHNuZF9wY21fY2hhbm5lbF9pbmZvX3VzZXIoc3Vic3RyZWFtLCBhcmcpOwogCWNhc2UgU05EUlZfUENNX0lPQ1RMX1BSRVBBUkU6Ci0JCXJldHVybiBzbmRfcGNtX3ByZXBhcmUoc3Vic3RyZWFtKTsKKwkJcmV0dXJuIHNuZF9wY21fcHJlcGFyZShzdWJzdHJlYW0sIGZpbGUpOwogCWNhc2UgU05EUlZfUENNX0lPQ1RMX1JFU0VUOgogCQlyZXR1cm4gc25kX3BjbV9yZXNldChzdWJzdHJlYW0pOwogCWNhc2UgU05EUlZfUENNX0lPQ1RMX1NUQVJUOgpAQCAtMjU2MCw3ICsyNTk1LDggQEAKIAlyZXR1cm4gLUVOT1RUWTsKIH0KIAotc3RhdGljIGludCBzbmRfcGNtX3BsYXliYWNrX2lvY3RsMShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKK3N0YXRpYyBpbnQgc25kX3BjbV9wbGF5YmFja19pb2N0bDEoc3RydWN0IGZpbGUgKmZpbGUsCisJCQkJICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCQkJICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZykKIHsKIAlzbmRfYXNzZXJ0KHN1YnN0cmVhbSAhPSBOVUxMLCByZXR1cm4gLUVOWElPKTsKQEAgLTI2MzYsMTAgKzI2NzIsMTEgQEAKIAkJcmV0dXJuIHJlc3VsdCA8IDAgPyByZXN1bHQgOiAwOwogCX0KIAl9Ci0JcmV0dXJuIHNuZF9wY21fY29tbW9uX2lvY3RsMShzdWJzdHJlYW0sIGNtZCwgYXJnKTsKKwlyZXR1cm4gc25kX3BjbV9jb21tb25faW9jdGwxKGZpbGUsIHN1YnN0cmVhbSwgY21kLCBhcmcpOwogfQogCi1zdGF0aWMgaW50IHNuZF9wY21fY2FwdHVyZV9pb2N0bDEoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCitzdGF0aWMgaW50IHNuZF9wY21fY2FwdHVyZV9pb2N0bDEoc3RydWN0IGZpbGUgKmZpbGUsCisJCQkJICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJCQkgIHVuc2lnbmVkIGludCBjbWQsIHZvaWQgX191c2VyICphcmcpCiB7CiAJc25kX2Fzc2VydChzdWJzdHJlYW0gIT0gTlVMTCwgcmV0dXJuIC1FTlhJTyk7CkBAIC0yNzE1LDcgKzI3NTIsNyBAQAogCQlyZXR1cm4gcmVzdWx0IDwgMCA/IHJlc3VsdCA6IDA7CiAJfQogCX0KLQlyZXR1cm4gc25kX3BjbV9jb21tb25faW9jdGwxKHN1YnN0cmVhbSwgY21kLCBhcmcpOworCXJldHVybiBzbmRfcGNtX2NvbW1vbl9pb2N0bDEoZmlsZSwgc3Vic3RyZWFtLCBjbWQsIGFyZyk7CiB9CiAKIHN0YXRpYyBsb25nIHNuZF9wY21fcGxheWJhY2tfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCkBAIC0yNzI4LDcgKzI3NjUsOCBAQAogCWlmICgoKGNtZCA+PiA4KSAmIDB4ZmYpICE9ICdBJykKIAkJcmV0dXJuIC1FTk9UVFk7CiAKLQlyZXR1cm4gc25kX3BjbV9wbGF5YmFja19pb2N0bDEocGNtX2ZpbGUtPnN1YnN0cmVhbSwgY21kLCAodm9pZCBfX3VzZXIgKilhcmcpOworCXJldHVybiBzbmRfcGNtX3BsYXliYWNrX2lvY3RsMShmaWxlLCBwY21fZmlsZS0+c3Vic3RyZWFtLCBjbWQsCisJCQkJICAgICAgICh2b2lkIF9fdXNlciAqKWFyZyk7CiB9CiAKIHN0YXRpYyBsb25nIHNuZF9wY21fY2FwdHVyZV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwKQEAgLTI3NDEsNyArMjc3OSw4IEBACiAJaWYgKCgoY21kID4+IDgpICYgMHhmZikgIT0gJ0EnKQogCQlyZXR1cm4gLUVOT1RUWTsKIAotCXJldHVybiBzbmRfcGNtX2NhcHR1cmVfaW9jdGwxKHBjbV9maWxlLT5zdWJzdHJlYW0sIGNtZCwgKHZvaWQgX191c2VyICopYXJnKTsKKwlyZXR1cm4gc25kX3BjbV9jYXB0dXJlX2lvY3RsMShmaWxlLCBwY21fZmlsZS0+c3Vic3RyZWFtLCBjbWQsCisJCQkJICAgICAgKHZvaWQgX191c2VyICopYXJnKTsKIH0KIAogaW50IHNuZF9wY21fa2VybmVsX2lvY3RsKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLApAQCAtMjc1MywxMiArMjc5MiwxMiBAQAogCWZzID0gc25kX2VudGVyX3VzZXIoKTsKIAlzd2l0Y2ggKHN1YnN0cmVhbS0+c3RyZWFtKSB7CiAJY2FzZSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLOgotCQlyZXN1bHQgPSBzbmRfcGNtX3BsYXliYWNrX2lvY3RsMShzdWJzdHJlYW0sCi0JCQkJCQkgY21kLCAodm9pZCBfX3VzZXIgKilhcmcpOworCQlyZXN1bHQgPSBzbmRfcGNtX3BsYXliYWNrX2lvY3RsMShOVUxMLCBzdWJzdHJlYW0sIGNtZCwKKwkJCQkJCSAodm9pZCBfX3VzZXIgKilhcmcpOwogCQlicmVhazsKIAljYXNlIFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRToKLQkJcmVzdWx0ID0gc25kX3BjbV9jYXB0dXJlX2lvY3RsMShzdWJzdHJlYW0sCi0JCQkJCQljbWQsICh2b2lkIF9fdXNlciAqKWFyZyk7CisJCXJlc3VsdCA9IHNuZF9wY21fY2FwdHVyZV9pb2N0bDEoTlVMTCwgc3Vic3RyZWFtLCBjbWQsCisJCQkJCQkodm9pZCBfX3VzZXIgKilhcmcpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXN1bHQgPSAtRUlOVkFMOwpAQCAtMjc2OCw2ICsyODA3LDggQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9wY21fa2VybmVsX2lvY3RsKTsKKwogc3RhdGljIHNzaXplX3Qgc25kX3BjbV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsCiAJCQkgICAgbG9mZl90ICogb2Zmc2V0KQogewpAQCAtMzEzNCw3ICszMTc1LDcgQEAKIAlhcmVhLT52bV9vcHMgPSAmc25kX3BjbV92bV9vcHNfZGF0YTsKIAlhcmVhLT52bV9wcml2YXRlX2RhdGEgPSBzdWJzdHJlYW07CiAJYXJlYS0+dm1fZmxhZ3MgfD0gVk1fUkVTRVJWRUQ7Ci0JYXRvbWljX2luYygmc3Vic3RyZWFtLT5ydW50aW1lLT5tbWFwX2NvdW50KTsKKwlhdG9taWNfaW5jKCZzdWJzdHJlYW0tPm1tYXBfY291bnQpOwogCXJldHVybiAwOwogfQogCkBAIC0zMTY2LDkgKzMyMDcsMTEgQEAKIAkJCQkoc3Vic3RyZWFtLT5ydW50aW1lLT5kbWFfYWRkciArIG9mZnNldCkgPj4gUEFHRV9TSElGVCwKIAkJCQlzaXplLCBhcmVhLT52bV9wYWdlX3Byb3QpKQogCQlyZXR1cm4gLUVBR0FJTjsKLQlhdG9taWNfaW5jKCZzdWJzdHJlYW0tPnJ1bnRpbWUtPm1tYXBfY291bnQpOworCWF0b21pY19pbmMoJnN1YnN0cmVhbS0+bW1hcF9jb3VudCk7CiAJcmV0dXJuIDA7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfbW1hcF9pb21lbSk7CiAjZW5kaWYgLyogU05EUlZfUENNX0lORk9fTU1BUCAqLwogCiAvKgpAQCAtMzIxMiw2ICszMjU1LDggQEAKIAkJcmV0dXJuIHNuZF9wY21fZGVmYXVsdF9tbWFwKHN1YnN0cmVhbSwgYXJlYSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3BjbV9tbWFwX2RhdGEpOworCiBzdGF0aWMgaW50IHNuZF9wY21fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICphcmVhKQogewogCXN0cnVjdCBzbmRfcGNtX2ZpbGUgKiBwY21fZmlsZTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcmF3bWlkaS5jIGIvc291bmQvY29yZS9yYXdtaWRpLmMKaW5kZXggODdiNDdjOS4uOGMxNWM2NiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9yYXdtaWRpLmMKKysrIGIvc291bmQvY29yZS9yYXdtaWRpLmMKQEAgLTQzLDcgKzQzLDcgQEAKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogI2lmZGVmIENPTkZJR19TTkRfT1NTRU1VTAotc3RhdGljIGludCBtaWRpX21hcFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUy0xKV0gPSAwfTsKK3N0YXRpYyBpbnQgbWlkaV9tYXBbU05EUlZfQ0FSRFNdOwogc3RhdGljIGludCBhbWlkaV9tYXBbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMtMSldID0gMX07CiBtb2R1bGVfcGFyYW1fYXJyYXkobWlkaV9tYXAsIGludCwgTlVMTCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKG1pZGlfbWFwLCAiUmF3IE1JREkgZGV2aWNlIG51bWJlciBhc3NpZ25lZCB0byAxc3QgT1NTIGRldmljZS4iKTsKQEAgLTE1NjEsNyArMTU2MSw2IEBACiAJZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShybWlkaS0+Y2FyZCwgbmFtZSwgcm1pZGktPmNhcmQtPnByb2Nfcm9vdCk7CiAJaWYgKGVudHJ5KSB7CiAJCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBybWlkaTsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAxMDI0OwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfcmF3bWlkaV9wcm9jX2luZm9fcmVhZDsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvb3NzL3NlcV9vc3MuYyBiL3NvdW5kL2NvcmUvc2VxL29zcy9zZXFfb3NzLmMKaW5kZXggYjk5MTk3OC4uZTcyMzQxMyAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvb3NzL3NlcV9vc3MuYworKysgYi9zb3VuZC9jb3JlL3NlcS9vc3Mvc2VxX29zcy5jCkBAIC0yOTEsNyArMjkxLDYgQEAKIAogCWVudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX1RFWFQ7CiAJZW50cnktPnByaXZhdGVfZGF0YSA9IE5VTEw7Ci0JZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAxMDI0OwogCWVudHJ5LT5jLnRleHQucmVhZCA9IGluZm9fcmVhZDsKIAlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewogCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcS5jIGIvc291bmQvY29yZS9zZXEvc2VxLmMKaW5kZXggMjBmOTU0Yi4uMmYwZDg3NyAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxLmMKQEAgLTEyOSwyNSArMTI5LDMgQEAKIAogbW9kdWxlX2luaXQoYWxzYV9zZXFfaW5pdCkKIG1vZHVsZV9leGl0KGFsc2Ffc2VxX2V4aXQpCi0KLSAgLyogc2VxX2NsaWVudG1nci5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfY3JlYXRlX2tlcm5lbF9jbGllbnQpOwotRVhQT1JUX1NZTUJPTChzbmRfc2VxX2RlbGV0ZV9rZXJuZWxfY2xpZW50KTsKLUVYUE9SVF9TWU1CT0woc25kX3NlcV9rZXJuZWxfY2xpZW50X2VucXVldWUpOwotRVhQT1JUX1NZTUJPTChzbmRfc2VxX2tlcm5lbF9jbGllbnRfZW5xdWV1ZV9ibG9ja2luZyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfa2VybmVsX2NsaWVudF9kaXNwYXRjaCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfa2VybmVsX2NsaWVudF9jdGwpOwotRVhQT1JUX1NZTUJPTChzbmRfc2VxX2tlcm5lbF9jbGllbnRfd3JpdGVfcG9sbCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfc2V0X3F1ZXVlX3RlbXBvKTsKLSAgLyogc2VxX21lbW9yeS5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfZXhwYW5kX3Zhcl9ldmVudCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9zZXFfZHVtcF92YXJfZXZlbnQpOwotICAvKiBzZXFfcG9ydHMuYyAqLwotRVhQT1JUX1NZTUJPTChzbmRfc2VxX2V2ZW50X3BvcnRfYXR0YWNoKTsKLUVYUE9SVF9TWU1CT0woc25kX3NlcV9ldmVudF9wb3J0X2RldGFjaCk7Ci0gIC8qIHNlcV9sb2NrLmMgKi8KLSNpZiBkZWZpbmVkKENPTkZJR19TTVApIHx8IGRlZmluZWQoQ09ORklHX1NORF9ERUJVRykKLS8qRVhQT1JUX1NZTUJPTChzbmRfc2VxX3NsZWVwX2luX2xvY2spOyovCi0vKkVYUE9SVF9TWU1CT0woc25kX3NlcV9zbGVlcF90aW1lb3V0X2luX2xvY2spOyovCi1FWFBPUlRfU1lNQk9MKHNuZF91c2VfbG9ja19zeW5jX2hlbHBlcik7Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9jbGllbnRtZ3IuYwppbmRleCBiYjE1ZDllLi41MzJhNjYwIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfY2xpZW50bWdyLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX2NsaWVudG1nci5jCkBAIC0xNzE0LDYgKzE3MTQsOCBAQAogCXJldHVybiBzbmRfc2VxX3F1ZXVlX3RpbWVyX3NldF90ZW1wbyh0ZW1wby0+cXVldWUsIGNsaWVudCwgdGVtcG8pOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9zZXFfc2V0X3F1ZXVlX3RlbXBvKTsKKwogc3RhdGljIGludCBzbmRfc2VxX2lvY3RsX3NldF9xdWV1ZV90ZW1wbyhzdHJ1Y3Qgc25kX3NlcV9jbGllbnQgKmNsaWVudCwKIAkJCQkJIHZvaWQgX191c2VyICphcmcpCiB7CkBAIC0yMjY0LDYgKzIyNjYsOCBAQAogCXJldHVybiBjbGllbnQtPm51bWJlcjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2NyZWF0ZV9rZXJuZWxfY2xpZW50KTsKKwogLyogZXhwb3J0ZWQgdG8ga2VybmVsIG1vZHVsZXMgKi8KIGludCBzbmRfc2VxX2RlbGV0ZV9rZXJuZWxfY2xpZW50KGludCBjbGllbnQpCiB7CkBAIC0yMjgwLDYgKzIyODQsNyBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9zZXFfZGVsZXRlX2tlcm5lbF9jbGllbnQpOwogCiAvKiBza2VsZXRvbiB0byBlbnF1ZXVlIGV2ZW50LCBjYWxsZWQgZnJvbSBzbmRfc2VxX2tlcm5lbF9jbGllbnRfZW5xdWV1ZQogICogYW5kIHNuZF9zZXFfa2VybmVsX2NsaWVudF9lbnF1ZXVlX2Jsb2NraW5nCkBAIC0yMzI4LDYgKzIzMzMsOCBAQAogCXJldHVybiBrZXJuZWxfY2xpZW50X2VucXVldWUoY2xpZW50LCBldiwgTlVMTCwgMCwgYXRvbWljLCBob3ApOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9zZXFfa2VybmVsX2NsaWVudF9lbnF1ZXVlKTsKKwogLyoKICAqIGV4cG9ydGVkLCBjYWxsZWQgYnkga2VybmVsIGNsaWVudHMgdG8gZW5xdWV1ZSBldmVudHMgKHdpdGggYmxvY2tpbmcpCiAgKgpAQCAtMjM0MCw2ICsyMzQ3LDcgQEAKIAlyZXR1cm4ga2VybmVsX2NsaWVudF9lbnF1ZXVlKGNsaWVudCwgZXYsIGZpbGUsIDEsIGF0b21pYywgaG9wKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2tlcm5lbF9jbGllbnRfZW5xdWV1ZV9ibG9ja2luZyk7CiAKIC8qIAogICogZXhwb3J0ZWQsIGNhbGxlZCBieSBrZXJuZWwgY2xpZW50cyB0byBkaXNwYXRjaCBldmVudHMgZGlyZWN0bHkgdG8gb3RoZXIKQEAgLTIzNzYsNiArMjM4NCw3IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2tlcm5lbF9jbGllbnRfZGlzcGF0Y2gpOwogCiAvKgogICogZXhwb3J0ZWQsIGNhbGxlZCBieSBrZXJuZWwgY2xpZW50cyB0byBwZXJmb3JtIHNhbWUgZnVuY3Rpb25zIGFzIHdpdGgKQEAgLTIzOTYsNiArMjQwNSw3IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2tlcm5lbF9jbGllbnRfY3RsKTsKIAogLyogZXhwb3J0ZWQgKGZvciBPU1MgZW11bGF0b3IpICovCiBpbnQgc25kX3NlcV9rZXJuZWxfY2xpZW50X3dyaXRlX3BvbGwoaW50IGNsaWVudGlkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKQEAgLTI0MTMsNiArMjQyMyw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3NlcV9rZXJuZWxfY2xpZW50X3dyaXRlX3BvbGwpOworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBDT05GSUdfUFJPQ19GUwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX2RldmljZS5jIGIvc291bmQvY29yZS9zZXEvc2VxX2RldmljZS5jCmluZGV4IGQ5YTNlNWEuLmQ4MTJkYzggMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9kZXZpY2UuYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfZGV2aWNlLmMKQEAgLTgwLDcgKzgwLDcgQEAKIHN0YXRpYyBpbnQgbnVtX29wczsKIHN0YXRpYyBERUZJTkVfTVVURVgob3BzX211dGV4KTsKICNpZmRlZiBDT05GSUdfUFJPQ19GUwotc3RhdGljIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqaW5mb19lbnRyeSA9IE5VTEw7CitzdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICppbmZvX2VudHJ5OwogI2VuZGlmCiAKIC8qCkBAIC01NTUsNyArNTU1LDYgQEAKIAlpZiAoaW5mb19lbnRyeSA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKIAlpbmZvX2VudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX1RFWFQ7Ci0JaW5mb19lbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IDIwNDg7CiAJaW5mb19lbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfc2VxX2RldmljZV9pbmZvOwogCWlmIChzbmRfaW5mb19yZWdpc3RlcihpbmZvX2VudHJ5KSA8IDApIHsKIAkJc25kX2luZm9fZnJlZV9lbnRyeShpbmZvX2VudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9kdW1teS5jIGIvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKaW5kZXggMmEyODNhNS4uZTU1NDg4ZCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKQEAgLTY2LDcgKzY2LDcgQEAKIE1PRFVMRV9BTElBUygic25kLXNlcS1jbGllbnQtIiBfX3N0cmluZ2lmeShTTkRSVl9TRVFfQ0xJRU5UX0RVTU1ZKSk7CiAKIHN0YXRpYyBpbnQgcG9ydHMgPSAxOwotc3RhdGljIGludCBkdXBsZXggPSAwOworc3RhdGljIGludCBkdXBsZXg7CiAKIG1vZHVsZV9wYXJhbShwb3J0cywgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MocG9ydHMsICJudW1iZXIgb2YgcG9ydHMgdG8gYmUgY3JlYXRlZCIpOwpAQCAtMTcxLDcgKzE3MSw5IEBACiAJcGluZm8uY2FwYWJpbGl0eSB8PSBTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEUgfCBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURTsKIAlpZiAoZHVwbGV4KQogCQlwaW5mby5jYXBhYmlsaXR5IHw9IFNORFJWX1NFUV9QT1JUX0NBUF9EVVBMRVg7Ci0JcGluZm8udHlwZSA9IFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDOworCXBpbmZvLnR5cGUgPSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQworCQl8IFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUKKwkJfCBTTkRSVl9TRVFfUE9SVF9UWVBFX1BPUlQ7CiAJbWVtc2V0KCZwY2IsIDAsIHNpemVvZihwY2IpKTsKIAlwY2Iub3duZXIgPSBUSElTX01PRFVMRTsKIAlwY2IudW51c2UgPSBkdW1teV91bnVzZTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9pbmZvLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfaW5mby5jCmluZGV4IGFjY2UyMWEuLjE0MmU5ZTYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9pbmZvLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX2luZm8uYwpAQCAtMzQsOCArMzQsOCBAQAogCiAKIHN0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKiBfX2luaXQKLWNyZWF0ZV9pbmZvX2VudHJ5KGNoYXIgKm5hbWUsIGludCBzaXplLCB2b2lkICgqcmVhZCkoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICosCi0JCQkJCQkgICAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKikpCitjcmVhdGVfaW5mb19lbnRyeShjaGFyICpuYW1lLCB2b2lkICgqcmVhZCkoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICosCisJCQkJCSAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKikpCiB7CiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIApAQCAtNDMsNyArNDMsNiBAQAogCWlmIChlbnRyeSA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKIAllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwotCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gc2l6ZTsKIAllbnRyeS0+Yy50ZXh0LnJlYWQgPSByZWFkOwogCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpAQCAtNTUsMTEgKzU0LDExIEBACiAvKiBjcmVhdGUgYWxsIG91ciAvcHJvYyBlbnRyaWVzICovCiBpbnQgX19pbml0IHNuZF9zZXFfaW5mb19pbml0KHZvaWQpCiB7Ci0JcXVldWVzX2VudHJ5ID0gY3JlYXRlX2luZm9fZW50cnkoInF1ZXVlcyIsIDUxMiArICgyNTYgKiBTTkRSVl9TRVFfTUFYX1FVRVVFUyksCisJcXVldWVzX2VudHJ5ID0gY3JlYXRlX2luZm9fZW50cnkoInF1ZXVlcyIsCiAJCQkJCSBzbmRfc2VxX2luZm9fcXVldWVzX3JlYWQpOwotCWNsaWVudHNfZW50cnkgPSBjcmVhdGVfaW5mb19lbnRyeSgiY2xpZW50cyIsIDUxMiArICgyNTYgKiBTTkRSVl9TRVFfTUFYX0NMSUVOVFMpLAorCWNsaWVudHNfZW50cnkgPSBjcmVhdGVfaW5mb19lbnRyeSgiY2xpZW50cyIsCiAJCQkJCSAgc25kX3NlcV9pbmZvX2NsaWVudHNfcmVhZCk7Ci0JdGltZXJfZW50cnkgPSBjcmVhdGVfaW5mb19lbnRyeSgidGltZXIiLCAxMDI0LCBzbmRfc2VxX2luZm9fdGltZXJfcmVhZCk7CisJdGltZXJfZW50cnkgPSBjcmVhdGVfaW5mb19lbnRyeSgidGltZXIiLCBzbmRfc2VxX2luZm9fdGltZXJfcmVhZCk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9sb2NrLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfbG9jay5jCmluZGV4IGE4MzdhOTQuLjFhMzQ5NDEgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9sb2NrLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX2xvY2suYwpAQCAtNDQsNCArNDQsNiBAQAogCX0KIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdXNlX2xvY2tfc3luY19oZWxwZXIpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9tZW1vcnkuYwppbmRleCA0MGI0ZjY3Li40YmZmZTUwIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfbWVtb3J5LmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5jCkBAIC0xMTgsNiArMTE4LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2R1bXBfdmFyX2V2ZW50KTsKKwogCiAvKgogICogZXhwb3J0ZWQ6CkBAIC0xNjcsNiArMTY5LDcgQEAKIAlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IG5ld2xlbjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfc2VxX2V4cGFuZF92YXJfZXZlbnQpOwogCiAvKgogICogcmVsZWFzZSB0aGlzIGNlbGwsIGZyZWUgZXh0ZW5kZWQgZGF0YSBpZiBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9taWRpLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfbWlkaS5jCmluZGV4IDljYWExMzcuLjFkYWE1YjAgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9taWRpLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX21pZGkuYwpAQCAtMjc4LDYgKzI3OCw3IEBACiAJc3RydWN0IHNlcV9taWRpc3ludGggKm1zeW50aCwgKm1zOwogCXN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbyAqcG9ydDsKIAlzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbyAqaW5mbzsKKwlzdHJ1Y3Qgc25kX3Jhd21pZGkgKnJtaWRpID0gZGV2LT5wcml2YXRlX2RhdGE7CiAJaW50IG5ld2NsaWVudCA9IDA7CiAJdW5zaWduZWQgaW50IHAsIHBvcnRzOwogCXN0cnVjdCBzbmRfc2VxX3BvcnRfY2FsbGJhY2sgcGNhbGxiYWNrczsKQEAgLTMyMCw4ICszMjEsOCBAQAogCQl9CiAJCWNsaWVudC0+c2VxX2NsaWVudCA9CiAJCQlzbmRfc2VxX2NyZWF0ZV9rZXJuZWxfY2xpZW50KAotCQkJCWNhcmQsIDAsICIlcyIsIGluZm8tPm5hbWVbMF0gPwotCQkJCShjb25zdCBjaGFyICopaW5mby0+bmFtZSA6ICJFeHRlcm5hbCBNSURJIik7CisJCQkJY2FyZCwgMCwgIiVzIiwgY2FyZC0+c2hvcnRuYW1lWzBdID8KKwkJCQkoY29uc3QgY2hhciAqKWNhcmQtPnNob3J0bmFtZSA6ICJFeHRlcm5hbCBNSURJIik7CiAJCWlmIChjbGllbnQtPnNlcV9jbGllbnQgPCAwKSB7CiAJCQlrZnJlZShjbGllbnQpOwogCQkJbXV0ZXhfdW5sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CkBAIC0zNzYsNyArMzc3LDkgQEAKIAkJaWYgKChwb3J0LT5jYXBhYmlsaXR5ICYgKFNORFJWX1NFUV9QT1JUX0NBUF9XUklURXxTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRCkpID09IChTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEV8U05EUlZfU0VRX1BPUlRfQ0FQX1JFQUQpICYmCiAJCSAgICBpbmZvLT5mbGFncyAmIFNORFJWX1JBV01JRElfSU5GT19EVVBMRVgpCiAJCQlwb3J0LT5jYXBhYmlsaXR5IHw9IFNORFJWX1NFUV9QT1JUX0NBUF9EVVBMRVg7Ci0JCXBvcnQtPnR5cGUgPSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQzsKKwkJcG9ydC0+dHlwZSA9IFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDCisJCQl8IFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUKKwkJCXwgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUOwogCQlwb3J0LT5taWRpX2NoYW5uZWxzID0gMTY7CiAJCW1lbXNldCgmcGNhbGxiYWNrcywgMCwgc2l6ZW9mKHBjYWxsYmFja3MpKTsKIAkJcGNhbGxiYWNrcy5vd25lciA9IFRISVNfTU9EVUxFOwpAQCAtMzg3LDYgKzM5MCw4IEBACiAJCXBjYWxsYmFja3MudW51c2UgPSBtaWRpc3ludGhfdW51c2U7CiAJCXBjYWxsYmFja3MuZXZlbnRfaW5wdXQgPSBldmVudF9wcm9jZXNzX21pZGk7CiAJCXBvcnQtPmtlcm5lbCA9ICZwY2FsbGJhY2tzOworCQlpZiAocm1pZGktPm9wcyAmJiBybWlkaS0+b3BzLT5nZXRfcG9ydF9pbmZvKQorCQkJcm1pZGktPm9wcy0+Z2V0X3BvcnRfaW5mbyhybWlkaSwgcCwgcG9ydCk7CiAJCWlmIChzbmRfc2VxX2tlcm5lbF9jbGllbnRfY3RsKGNsaWVudC0+c2VxX2NsaWVudCwgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9QT1JULCBwb3J0KTwwKQogCQkJZ290byBfX25vbWVtOwogCQltcy0+c2VxX2NsaWVudCA9IGNsaWVudC0+c2VxX2NsaWVudDsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9wb3J0cy5jIGIvc291bmQvY29yZS9zZXEvc2VxX3BvcnRzLmMKaW5kZXggNDFlMDc4Yy4uMzM0NTc5YTkgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV9wb3J0cy5jCisrKyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9wb3J0cy5jCkBAIC0yMjEsNyArMjIxLDYgQEAKIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwLCAqbjsKIAotCWRvd25fd3JpdGUoJmdycC0+bGlzdF9tdXRleCk7CiAJbGlzdF9mb3JfZWFjaF9zYWZlKHAsIG4sICZncnAtPmxpc3RfaGVhZCkgewogCQlzdHJ1Y3Qgc25kX3NlcV9zdWJzY3JpYmVycyAqc3ViczsKIAkJc3RydWN0IHNuZF9zZXFfY2xpZW50ICpjOwpAQCAtMjU5LDcgKzI1OCw2IEBACiAJCQlzbmRfc2VxX2NsaWVudF91bmxvY2soYyk7CiAJCX0KIAl9Ci0JdXBfd3JpdGUoJmdycC0+bGlzdF9tdXRleCk7CiB9CiAKIC8qIGRlbGV0ZSBwb3J0IGRhdGEgKi8KQEAgLTY3Nyw2ICs2NzUsNyBAQAogCXJldHVybiByZXQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3NlcV9ldmVudF9wb3J0X2F0dGFjaCk7CiAKIC8qCiAgKiBEZXRhY2ggdGhlIGRyaXZlciBmcm9tIGEgcG9ydC4KQEAgLTY5NiwzICs2OTUsNSBAQAogCiAJcmV0dXJuIGVycjsKIH0KKworRVhQT1JUX1NZTUJPTChzbmRfc2VxX2V2ZW50X3BvcnRfZGV0YWNoKTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV92aXJtaWRpLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfdmlybWlkaS5jCmluZGV4IGY0ZWRlYzYuLjBjZmEwNmMgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvc2VxL3NlcV92aXJtaWRpLmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX3Zpcm1pZGkuYwpAQCAtMzkwLDcgKzM5MCw5IEBACiAJcGluZm8tPmNhcGFiaWxpdHkgfD0gU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFIHwgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfV1JJVEUgfCBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURTsKIAlwaW5mby0+Y2FwYWJpbGl0eSB8PSBTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRCB8IFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1JFQUQgfCBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19SRUFEOwogCXBpbmZvLT5jYXBhYmlsaXR5IHw9IFNORFJWX1NFUV9QT1JUX0NBUF9EVVBMRVg7Ci0JcGluZm8tPnR5cGUgPSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQzsKKwlwaW5mby0+dHlwZSA9IFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDCisJCXwgU05EUlZfU0VRX1BPUlRfVFlQRV9TT0ZUV0FSRQorCQl8IFNORFJWX1NFUV9QT1JUX1RZUEVfUE9SVDsKIAlwaW5mby0+bWlkaV9jaGFubmVscyA9IDE2OwogCW1lbXNldCgmcGNhbGxiYWNrcywgMCwgc2l6ZW9mKHBjYWxsYmFja3MpKTsKIAlwY2FsbGJhY2tzLm93bmVyID0gVEhJU19NT0RVTEU7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3NvdW5kLmMgYi9zb3VuZC9jb3JlL3NvdW5kLmMKaW5kZXggMTA4ZTQzMC4uY2Q4NjI3MiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zb3VuZC5jCisrKyBiL3NvdW5kL2NvcmUvc291bmQuYwpAQCAtMzksNiArMzksOCBAQAogCiBzdGF0aWMgaW50IG1ham9yID0gQ09ORklHX1NORF9NQUpPUjsKIGludCBzbmRfbWFqb3I7CitFWFBPUlRfU1lNQk9MKHNuZF9tYWpvcik7CisKIHN0YXRpYyBpbnQgY2FyZHNfbGltaXQgPSAxOwogc3RhdGljIGludCBkZXZpY2VfbW9kZSA9IFNfSUZDSFIgfCBTX0lSVUdPIHwgU19JV1VHTzsKIApAQCAtNjAsNiArNjIsNyBAQAogICogbW9kdWxlcyBhcmUgbG9hZGVkIG1hbnVhbGx5LCB0aGlzIGxpbWl0IG51bWJlciBpbmNyZWFzZXMsIHRvby4KICAqLwogaW50IHNuZF9lY2FyZHNfbGltaXQ7CitFWFBPUlRfU1lNQk9MKHNuZF9lY2FyZHNfbGltaXQpOwogCiBzdGF0aWMgc3RydWN0IHNuZF9taW5vciAqc25kX21pbm9yc1tTTkRSVl9PU19NSU5PUlNdOwogc3RhdGljIERFRklORV9NVVRFWChzb3VuZF9tdXRleCk7CkBAIC03OCwyMCArODEsMTcgQEAKICAqLwogdm9pZCBzbmRfcmVxdWVzdF9jYXJkKGludCBjYXJkKQogewotCWludCBsb2NrZWQ7Ci0KIAlpZiAoISBjdXJyZW50LT5mcy0+cm9vdCkKIAkJcmV0dXJuOwotCXJlYWRfbG9jaygmc25kX2NhcmRfcndsb2NrKTsKLQlsb2NrZWQgPSBzbmRfY2FyZHNfbG9jayAmICgxIDw8IGNhcmQpOwotCXJlYWRfdW5sb2NrKCZzbmRfY2FyZF9yd2xvY2spOwotCWlmIChsb2NrZWQpCisJaWYgKHNuZF9jYXJkX2xvY2tlZChjYXJkKSkKIAkJcmV0dXJuOwogCWlmIChjYXJkIDwgMCB8fCBjYXJkID49IGNhcmRzX2xpbWl0KQogCQlyZXR1cm47CiAJcmVxdWVzdF9tb2R1bGUoInNuZC1jYXJkLSVpIiwgY2FyZCk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3JlcXVlc3RfY2FyZCk7CisKIHN0YXRpYyB2b2lkIHNuZF9yZXF1ZXN0X290aGVyKGludCBtaW5vcikKIHsKIAljaGFyICpzdHI7CkBAIC0xMzMsNiArMTMzLDggQEAKIAlyZXR1cm4gcHJpdmF0ZV9kYXRhOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9sb29rdXBfbWlub3JfZGF0YSk7CisKIHN0YXRpYyBpbnQgc25kX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJdW5zaWduZWQgaW50IG1pbm9yID0gaW1pbm9yKGlub2RlKTsKQEAgLTI4MSw2ICsyODMsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9yZWdpc3Rlcl9kZXZpY2UpOworCiAvKioKICAqIHNuZF91bnJlZ2lzdGVyX2RldmljZSAtIHVucmVnaXN0ZXIgdGhlIGRldmljZSBvbiB0aGUgZ2l2ZW4gY2FyZAogICogQHR5cGU6IHRoZSBkZXZpY2UgdHlwZSwgU05EUlZfREVWSUNFX1RZUEVfWFhYCkBAIC0zMjEsMTIgKzMyNSwxNCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF91bnJlZ2lzdGVyX2RldmljZSk7CisKICNpZmRlZiBDT05GSUdfUFJPQ19GUwogLyoKICAqICBJTkZPIFBBUlQKICAqLwogCi1zdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfbWlub3JfaW5mb19lbnRyeSA9IE5VTEw7CitzdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfbWlub3JfaW5mb19lbnRyeTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKnNuZF9kZXZpY2VfdHlwZV9uYW1lKGludCB0eXBlKQogewpAQCAtMzgxLDcgKzM4Nyw2IEBACiAKIAllbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9tb2R1bGVfZW50cnkoVEhJU19NT0RVTEUsICJkZXZpY2VzIiwgTlVMTCk7CiAJaWYgKGVudHJ5KSB7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gUEFHRV9TSVpFOwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfbWlub3JfaW5mb19yZWFkOwogCQlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewogCQkJc25kX2luZm9fZnJlZV9lbnRyeShlbnRyeSk7CkBAIC00NDYsOTEgKzQ1MSwzIEBACiAKIG1vZHVsZV9pbml0KGFsc2Ffc291bmRfaW5pdCkKIG1vZHVsZV9leGl0KGFsc2Ffc291bmRfZXhpdCkKLQotICAvKiBzb3VuZC5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9tYWpvcik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9lY2FyZHNfbGltaXQpOwotI2lmIGRlZmluZWQoQ09ORklHX0tNT0QpCi1FWFBPUlRfU1lNQk9MKHNuZF9yZXF1ZXN0X2NhcmQpOwotI2VuZGlmCi1FWFBPUlRfU1lNQk9MKHNuZF9yZWdpc3Rlcl9kZXZpY2UpOwotRVhQT1JUX1NZTUJPTChzbmRfdW5yZWdpc3Rlcl9kZXZpY2UpOwotRVhQT1JUX1NZTUJPTChzbmRfbG9va3VwX21pbm9yX2RhdGEpOwotI2lmIGRlZmluZWQoQ09ORklHX1NORF9PU1NFTVVMKQotRVhQT1JUX1NZTUJPTChzbmRfcmVnaXN0ZXJfb3NzX2RldmljZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF91bnJlZ2lzdGVyX29zc19kZXZpY2UpOwotRVhQT1JUX1NZTUJPTChzbmRfbG9va3VwX29zc19taW5vcl9kYXRhKTsKLSNlbmRpZgotICAvKiBtZW1vcnkuYyAqLwotRVhQT1JUX1NZTUJPTChjb3B5X3RvX3VzZXJfZnJvbWlvKTsKLUVYUE9SVF9TWU1CT0woY29weV9mcm9tX3VzZXJfdG9pbyk7Ci0gIC8qIGluaXQuYyAqLwotRVhQT1JUX1NZTUJPTChzbmRfY2FyZHMpOwotI2lmIGRlZmluZWQoQ09ORklHX1NORF9NSVhFUl9PU1MpIHx8IGRlZmluZWQoQ09ORklHX1NORF9NSVhFUl9PU1NfTU9EVUxFKQotRVhQT1JUX1NZTUJPTChzbmRfbWl4ZXJfb3NzX25vdGlmeV9jYWxsYmFjayk7Ci0jZW5kaWYKLUVYUE9SVF9TWU1CT0woc25kX2NhcmRfbmV3KTsKLUVYUE9SVF9TWU1CT0woc25kX2NhcmRfZGlzY29ubmVjdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jYXJkX2ZyZWUpOwotRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9mcmVlX2luX3RocmVhZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jYXJkX3JlZ2lzdGVyKTsKLUVYUE9SVF9TWU1CT0woc25kX2NvbXBvbmVudF9hZGQpOwotRVhQT1JUX1NZTUJPTChzbmRfY2FyZF9maWxlX2FkZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jYXJkX2ZpbGVfcmVtb3ZlKTsKLSNpZmRlZiBDT05GSUdfUE0KLUVYUE9SVF9TWU1CT0woc25kX3Bvd2VyX3dhaXQpOwotI2VuZGlmCi0gIC8qIGRldmljZS5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9kZXZpY2VfbmV3KTsKLUVYUE9SVF9TWU1CT0woc25kX2RldmljZV9yZWdpc3Rlcik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9kZXZpY2VfZnJlZSk7Ci0gIC8qIGlzYWRtYS5jICovCi0jaWZkZWYgQ09ORklHX0lTQV9ETUFfQVBJCi1FWFBPUlRfU1lNQk9MKHNuZF9kbWFfcHJvZ3JhbSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9kbWFfZGlzYWJsZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9kbWFfcG9pbnRlcik7Ci0jZW5kaWYKLSAgLyogaW5mby5jICovCi0jaWZkZWYgQ09ORklHX1BST0NfRlMKLUVYUE9SVF9TWU1CT0woc25kX3NlcV9yb290KTsKLUVYUE9SVF9TWU1CT0woc25kX2lwcmludGYpOwotRVhQT1JUX1NZTUJPTChzbmRfaW5mb19nZXRfbGluZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9pbmZvX2dldF9zdHIpOwotRVhQT1JUX1NZTUJPTChzbmRfaW5mb19jcmVhdGVfbW9kdWxlX2VudHJ5KTsKLUVYUE9SVF9TWU1CT0woc25kX2luZm9fY3JlYXRlX2NhcmRfZW50cnkpOwotRVhQT1JUX1NZTUJPTChzbmRfaW5mb19mcmVlX2VudHJ5KTsKLUVYUE9SVF9TWU1CT0woc25kX2luZm9fcmVnaXN0ZXIpOwotRVhQT1JUX1NZTUJPTChzbmRfaW5mb191bnJlZ2lzdGVyKTsKLUVYUE9SVF9TWU1CT0woc25kX2NhcmRfcHJvY19uZXcpOwotI2VuZGlmCi0gIC8qIGluZm9fb3NzLmMgKi8KLSNpZiBkZWZpbmVkKENPTkZJR19TTkRfT1NTRU1VTCkgJiYgZGVmaW5lZChDT05GSUdfUFJPQ19GUykKLUVYUE9SVF9TWU1CT0woc25kX29zc19pbmZvX3JlZ2lzdGVyKTsKLSNlbmRpZgotICAvKiBjb250cm9sLmMgKi8KLUVYUE9SVF9TWU1CT0woc25kX2N0bF9uZXcpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX25ldzEpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX2ZyZWVfb25lKTsKLUVYUE9SVF9TWU1CT0woc25kX2N0bF9hZGQpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX3JlbW92ZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jdGxfcmVtb3ZlX2lkKTsKLUVYUE9SVF9TWU1CT0woc25kX2N0bF9yZW5hbWVfaWQpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX2ZpbmRfbnVtaWQpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX2ZpbmRfaWQpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX25vdGlmeSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jdGxfcmVnaXN0ZXJfaW9jdGwpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX3VucmVnaXN0ZXJfaW9jdGwpOwotI2lmZGVmIENPTkZJR19DT01QQVQKLUVYUE9SVF9TWU1CT0woc25kX2N0bF9yZWdpc3Rlcl9pb2N0bF9jb21wYXQpOwotRVhQT1JUX1NZTUJPTChzbmRfY3RsX3VucmVnaXN0ZXJfaW9jdGxfY29tcGF0KTsKLSNlbmRpZgotRVhQT1JUX1NZTUJPTChzbmRfY3RsX2VsZW1fcmVhZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9jdGxfZWxlbV93cml0ZSk7Ci0gIC8qIG1pc2MuYyAqLwotRVhQT1JUX1NZTUJPTChyZWxlYXNlX2FuZF9mcmVlX3Jlc291cmNlKTsKLSNpZmRlZiBDT05GSUdfU05EX1ZFUkJPU0VfUFJJTlRLCi1FWFBPUlRfU1lNQk9MKHNuZF92ZXJib3NlX3ByaW50ayk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKENPTkZJR19TTkRfREVCVUcpICYmIGRlZmluZWQoQ09ORklHX1NORF9WRVJCT1NFX1BSSU5USykKLUVYUE9SVF9TWU1CT0woc25kX3ZlcmJvc2VfcHJpbnRkKTsKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zb3VuZF9vc3MuYyBiL3NvdW5kL2NvcmUvc291bmRfb3NzLmMKaW5kZXggOTA1NWM2ZC4uNzRmMGZlNSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zb3VuZF9vc3MuYworKysgYi9zb3VuZC9jb3JlL3NvdW5kX29zcy5jCkBAIC01OCw2ICs1OCw4IEBACiAJcmV0dXJuIHByaXZhdGVfZGF0YTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfbG9va3VwX29zc19taW5vcl9kYXRhKTsKKwogc3RhdGljIGludCBzbmRfb3NzX2tlcm5lbF9taW5vcihpbnQgdHlwZSwgc3RydWN0IHNuZF9jYXJkICpjYXJkLCBpbnQgZGV2KQogewogCWludCBtaW5vcjsKQEAgLTE1OCw2ICsxNjAsOCBAQAogICAgICAgCXJldHVybiAtRUJVU1k7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3JlZ2lzdGVyX29zc19kZXZpY2UpOworCiBpbnQgc25kX3VucmVnaXN0ZXJfb3NzX2RldmljZShpbnQgdHlwZSwgc3RydWN0IHNuZF9jYXJkICpjYXJkLCBpbnQgZGV2KQogewogCWludCBtaW5vciA9IHNuZF9vc3Nfa2VybmVsX21pbm9yKHR5cGUsIGNhcmQsIGRldik7CkBAIC0xOTcsMTMgKzIwMSwxNSBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF91bnJlZ2lzdGVyX29zc19kZXZpY2UpOworCiAvKgogICogIElORk8gUEFSVAogICovCiAKICNpZmRlZiBDT05GSUdfUFJPQ19GUwogCi1zdGF0aWMgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpzbmRfbWlub3JfaW5mb19vc3NfZW50cnkgPSBOVUxMOworc3RhdGljIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqc25kX21pbm9yX2luZm9fb3NzX2VudHJ5OwogCiBzdGF0aWMgY29uc3QgY2hhciAqc25kX29zc19kZXZpY2VfdHlwZV9uYW1lKGludCB0eXBlKQogewpAQCAtMjUyLDcgKzI1OCw2IEBACiAKIAllbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9tb2R1bGVfZW50cnkoVEhJU19NT0RVTEUsICJkZXZpY2VzIiwgc25kX29zc19yb290KTsKIAlpZiAoZW50cnkpIHsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSBQQUdFX1NJWkU7CiAJCWVudHJ5LT5jLnRleHQucmVhZCA9IHNuZF9taW5vcl9pbmZvX29zc19yZWFkOwogCQlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewogCQkJc25kX2luZm9fZnJlZV9lbnRyeShlbnRyeSk7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3RpbWVyLmMgYi9zb3VuZC9jb3JlL3RpbWVyLmMKaW5kZXggY2RlZWI2My4uNzgxOTlmNSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS90aW1lci5jCisrKyBiL3NvdW5kL2NvcmUvdGltZXIuYwpAQCAtMTA2MSw3ICsxMDYxLDYgQEAKIHN0YXRpYyB2b2lkIHNuZF90aW1lcl9wcm9jX3JlYWQoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKIAkJCQlzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWZmZXIpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3Qgc25kX3RpbWVyICp0aW1lcjsKIAlzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNlICp0aTsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwLCAqcTsKQEAgLTEwOTUsNyArMTA5NCw2IEBACiAJCWlmICh0aW1lci0+aHcuZmxhZ3MgJiBTTkRSVl9USU1FUl9IV19TTEFWRSkKIAkJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiBTTEFWRSIpOwogCQlzbmRfaXByaW50ZihidWZmZXIsICJcbiIpOwotCQlzcGluX2xvY2tfaXJxc2F2ZSgmdGltZXItPmxvY2ssIGZsYWdzKTsKIAkJbGlzdF9mb3JfZWFjaChxLCAmdGltZXItPm9wZW5fbGlzdF9oZWFkKSB7CiAJCQl0aSA9IGxpc3RfZW50cnkocSwgc3RydWN0IHNuZF90aW1lcl9pbnN0YW5jZSwgb3Blbl9saXN0KTsKIAkJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiAgQ2xpZW50ICVzIDogJXNcbiIsCkBAIC0xMTA0LDEyICsxMTAyLDExIEBACiAJCQkJCQkgU05EUlZfVElNRVJfSUZMR19SVU5OSU5HKQogCQkJCSAgICA/ICJydW5uaW5nIiA6ICJzdG9wcGVkIik7CiAJCX0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZXItPmxvY2ssIGZsYWdzKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF90aW1lcl9wcm9jX2VudHJ5ID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnNuZF90aW1lcl9wcm9jX2VudHJ5OwogCiBzdGF0aWMgdm9pZCBfX2luaXQgc25kX3RpbWVyX3Byb2NfaW5pdCh2b2lkKQogewpAQCAtMTExNyw3ICsxMTE0LDYgQEAKIAogCWVudHJ5ID0gc25kX2luZm9fY3JlYXRlX21vZHVsZV9lbnRyeShUSElTX01PRFVMRSwgInRpbWVycyIsIE5VTEwpOwogCWlmIChlbnRyeSAhPSBOVUxMKSB7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gU05EUlZfVElNRVJfREVWSUNFUyAqIDEyODsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gc25kX3RpbWVyX3Byb2NfcmVhZDsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy9kdW1teS5jIGIvc291bmQvZHJpdmVycy9kdW1teS5jCmluZGV4IGFlMGRmNTQuLmZmZWFmYWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvZHVtbXkuYworKysgYi9zb3VuZC9kcml2ZXJzL2R1bW15LmMKQEAgLTY3Nyw2ICs2NzcsMTAgQEAKIAkJCQkJCQkgaSwgTlVMTCwgMCk7CiAJCWlmIChJU19FUlIoZGV2aWNlKSkKIAkJCWNvbnRpbnVlOworCQlpZiAoIXBsYXRmb3JtX2dldF9kcnZkYXRhKGRldmljZSkpIHsKKwkJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldmljZSk7CisJCQljb250aW51ZTsKKwkJfQogCQlkZXZpY2VzW2ldID0gZGV2aWNlOwogCQljYXJkcysrOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMS5jIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmMKaW5kZXggNzdiMDYwMC4uZDNjYmJiMCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmMKKysrIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxLmMKQEAgLTI1Myw2ICsyNTMsMTAgQEAKIAkJCQkJCQkgaSwgTlVMTCwgMCk7CiAJCWlmIChJU19FUlIoZGV2aWNlKSkKIAkJCWNvbnRpbnVlOworCQlpZiAoIXBsYXRmb3JtX2dldF9kcnZkYXRhKGRldmljZSkpIHsKKwkJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldmljZSk7CisJCQljb250aW51ZTsKKwkJfQogCQlwbGF0Zm9ybV9kZXZpY2VzW2ldID0gZGV2aWNlOwogCQlzbmRfbXB1NDAxX2RldmljZXMrKzsKIAl9CmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDFfdWFydC5jIGIvc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxX3VhcnQuYwppbmRleCBiNDlhNDVjLi40YmYwN2NhIDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL21wdTQwMS9tcHU0MDFfdWFydC5jCisrKyBiL3NvdW5kL2RyaXZlcnMvbXB1NDAxL21wdTQwMV91YXJ0LmMKQEAgLTU4LDIyICs1OCwyNiBAQAogI2RlZmluZSBNUFU0MDFfQUNLCQkweGZlCiAKIC8qIEJ1aWxkIGluIGxvd2xldmVsIGlvICovCi1zdGF0aWMgdm9pZCBtcHU0MDFfd3JpdGVfcG9ydChzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1LCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGxvbmcgYWRkcikKK3N0YXRpYyB2b2lkIG1wdTQwMV93cml0ZV9wb3J0KHN0cnVjdCBzbmRfbXB1NDAxICptcHUsIHVuc2lnbmVkIGNoYXIgZGF0YSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKIAlvdXRiKGRhdGEsIGFkZHIpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgY2hhciBtcHU0MDFfcmVhZF9wb3J0KHN0cnVjdCBzbmRfbXB1NDAxICptcHUsIHVuc2lnbmVkIGxvbmcgYWRkcikKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1wdTQwMV9yZWFkX3BvcnQoc3RydWN0IHNuZF9tcHU0MDEgKm1wdSwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCiB7CiAJcmV0dXJuIGluYihhZGRyKTsKIH0KIAotc3RhdGljIHZvaWQgbXB1NDAxX3dyaXRlX21taW8oc3RydWN0IHNuZF9tcHU0MDEgKm1wdSwgdW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBsb25nIGFkZHIpCitzdGF0aWMgdm9pZCBtcHU0MDFfd3JpdGVfbW1pbyhzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1LCB1bnNpZ25lZCBjaGFyIGRhdGEsCisJCQkgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCiB7CiAJd3JpdGViKGRhdGEsICh2b2lkIF9faW9tZW0gKilhZGRyKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgbXB1NDAxX3JlYWRfbW1pbyhzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1LCB1bnNpZ25lZCBsb25nIGFkZHIpCitzdGF0aWMgdW5zaWduZWQgY2hhciBtcHU0MDFfcmVhZF9tbWlvKHN0cnVjdCBzbmRfbXB1NDAxICptcHUsCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBhZGRyKQogewogCXJldHVybiByZWFkYigodm9pZCBfX2lvbWVtICopYWRkcik7CiB9CkBAIC04NiwyMCArOTAsMTMgQEAKIAkJbXB1LT5yZWFkKG1wdSwgTVBVNDAxRChtcHUpKTsKICNpZmRlZiBDT05GSUdfU05EX0RFQlVHCiAJaWYgKHRpbWVvdXQgPD0gMCkKLQkJc25kX3ByaW50aygiY21kOiBjbGVhciByeCB0aW1lb3V0IChzdGF0dXMgPSAweCV4KVxuIiwgbXB1LT5yZWFkKG1wdSwgTVBVNDAxQyhtcHUpKSk7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgImNtZDogY2xlYXIgcnggdGltZW91dCAoc3RhdHVzID0gMHgleClcbiIsCisJCQkgICBtcHUtPnJlYWQobXB1LCBNUFU0MDFDKG1wdSkpKTsKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBfc25kX21wdTQwMV91YXJ0X2ludGVycnVwdChzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1KQorc3RhdGljIHZvaWQgdWFydF9pbnRlcnJ1cHRfdHgoc3RydWN0IHNuZF9tcHU0MDEgKm1wdSkKIHsKLQlzcGluX2xvY2soJm1wdS0+aW5wdXRfbG9jayk7Ci0JaWYgKHRlc3RfYml0KE1QVTQwMV9NT0RFX0JJVF9JTlBVVCwgJm1wdS0+bW9kZSkpIHsKLQkJc25kX21wdTQwMV91YXJ0X2lucHV0X3JlYWQobXB1KTsKLQl9IGVsc2UgewotCQlzbmRfbXB1NDAxX3VhcnRfY2xlYXJfcngobXB1KTsKLQl9Ci0Jc3Bpbl91bmxvY2soJm1wdS0+aW5wdXRfbG9jayk7Ci0gCS8qIG9rLiBmb3IgYmV0dGVyIFR4IHBlcmZvcm1hbmNlIHRyeSBkbyBzb21lIG91dHB1dCB3aGVuIGlucHV0IGlzIGRvbmUgKi8KIAlpZiAodGVzdF9iaXQoTVBVNDAxX01PREVfQklUX09VVFBVVCwgJm1wdS0+bW9kZSkgJiYKIAkgICAgdGVzdF9iaXQoTVBVNDAxX01PREVfQklUX09VVFBVVF9UUklHR0VSLCAmbXB1LT5tb2RlKSkgewogCQlzcGluX2xvY2soJm1wdS0+b3V0cHV0X2xvY2spOwpAQCAtMTA4LDYgKzEwNSwyMiBAQAogCX0KIH0KIAorc3RhdGljIHZvaWQgX3NuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHQoc3RydWN0IHNuZF9tcHU0MDEgKm1wdSkKK3sKKwlpZiAobXB1LT5pbmZvX2ZsYWdzICYgTVBVNDAxX0lORk9fSU5QVVQpIHsKKwkJc3Bpbl9sb2NrKCZtcHUtPmlucHV0X2xvY2spOworCQlpZiAodGVzdF9iaXQoTVBVNDAxX01PREVfQklUX0lOUFVULCAmbXB1LT5tb2RlKSkKKwkJCXNuZF9tcHU0MDFfdWFydF9pbnB1dF9yZWFkKG1wdSk7CisJCWVsc2UKKwkJCXNuZF9tcHU0MDFfdWFydF9jbGVhcl9yeChtcHUpOworCQlzcGluX3VubG9jaygmbXB1LT5pbnB1dF9sb2NrKTsKKwl9CisJaWYgKCEgKG1wdS0+aW5mb19mbGFncyAmIE1QVTQwMV9JTkZPX1RYX0lSUSkpCisJCS8qIG9rLiBmb3IgYmV0dGVyIFR4IHBlcmZvcm1hbmNlIHRyeSBkbyBzb21lIG91dHB1dAorCQkgICB3aGVuIGlucHV0IGlzIGRvbmUgKi8KKwkJdWFydF9pbnRlcnJ1cHRfdHgobXB1KTsKK30KKwogLyoqCiAgKiBzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0IC0gZ2VuZXJpYyBNUFU0MDEtVUFSVCBpbnRlcnJ1cHQgaGFuZGxlcgogICogQGlycTogdGhlIGlycSBudW1iZXIKQEAgLTExNiw3ICsxMjksOCBAQAogICoKICAqIFByb2Nlc3NlcyB0aGUgaW50ZXJydXB0IGZvciBNUFU0MDEtVUFSVCBpL28uCiAgKi8KLWlycXJldHVybl90IHNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK2lycXJldHVybl90IHNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLAorCQkJCSAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBzbmRfbXB1NDAxICptcHUgPSBkZXZfaWQ7CiAJCkBAIC0xMjYsNiArMTQwLDI5IEBACiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHQpOworCisvKioKKyAqIHNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHRfdHggLSBnZW5lcmljIE1QVTQwMS1VQVJUIHRyYW5zbWl0IGlycSBoYW5kbGVyCisgKiBAaXJxOiB0aGUgaXJxIG51bWJlcgorICogQGRldl9pZDogbXB1NDAxIGluc3RhbmNlCisgKiBAcmVnczogdGhlIHJlaWdzdGVyCisgKgorICogUHJvY2Vzc2VzIHRoZSBpbnRlcnJ1cHQgZm9yIE1QVTQwMS1VQVJUIG91dHB1dC4KKyAqLworaXJxcmV0dXJuX3Qgc25kX21wdTQwMV91YXJ0X2ludGVycnVwdF90eChpbnQgaXJxLCB2b2lkICpkZXZfaWQsCisJCQkJCSBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1ID0gZGV2X2lkOworCQorCWlmIChtcHUgPT0gTlVMTCkKKwkJcmV0dXJuIElSUV9OT05FOworCXVhcnRfaW50ZXJydXB0X3R4KG1wdSk7CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitFWFBPUlRfU1lNQk9MKHNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHRfdHgpOworCiAvKgogICogdGltZXIgY2FsbGJhY2sKICAqIHJlcHJvZ3JhbSB0aGUgdGltZXIgYW5kIGNhbGwgdGhlIGludGVycnVwdCBqb2IKQEAgLTE1OSw3ICsxOTYsOCBAQAogCQltcHUtPnRpbWVyLmV4cGlyZXMgPSAxICsgamlmZmllczsKIAkJYWRkX3RpbWVyKCZtcHUtPnRpbWVyKTsKIAl9IAotCW1wdS0+dGltZXJfaW52b2tlZCB8PSBpbnB1dCA/IE1QVTQwMV9NT0RFX0lOUFVUX1RJTUVSIDogTVBVNDAxX01PREVfT1VUUFVUX1RJTUVSOworCW1wdS0+dGltZXJfaW52b2tlZCB8PSBpbnB1dCA/IE1QVTQwMV9NT0RFX0lOUFVUX1RJTUVSIDoKKwkJTVBVNDAxX01PREVfT1VUUFVUX1RJTUVSOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZtcHUtPnRpbWVyX2xvY2ssIGZsYWdzKTsKIH0KIApAQCAtMTcyLDcgKzIxMCw4IEBACiAKIAlzcGluX2xvY2tfaXJxc2F2ZSAoJm1wdS0+dGltZXJfbG9jaywgZmxhZ3MpOwogCWlmIChtcHUtPnRpbWVyX2ludm9rZWQpIHsKLQkJbXB1LT50aW1lcl9pbnZva2VkICY9IGlucHV0ID8gfk1QVTQwMV9NT0RFX0lOUFVUX1RJTUVSIDogfk1QVTQwMV9NT0RFX09VVFBVVF9USU1FUjsKKwkJbXB1LT50aW1lcl9pbnZva2VkICY9IGlucHV0ID8gfk1QVTQwMV9NT0RFX0lOUFVUX1RJTUVSIDoKKwkJCX5NUFU0MDFfTU9ERV9PVVRQVVRfVElNRVI7CiAJCWlmICghIG1wdS0+dGltZXJfaW52b2tlZCkKIAkJCWRlbF90aW1lcigmbXB1LT50aW1lcik7CiAJfQpAQCAtMTgwLDExICsyMTksMTIgQEAKIH0KIAogLyoKLQorICogc2VuZCBhIFVBUlQgY29tbWFuZAorICogcmV0dXJuIHplcm8gaWYgc3VjY2Vzc2Z1bCwgbm9uLXplcm8gZm9yIHNvbWUgZXJyb3JzCiAgKi8KIAogc3RhdGljIGludCBzbmRfbXB1NDAxX3VhcnRfY21kKHN0cnVjdCBzbmRfbXB1NDAxICogbXB1LCB1bnNpZ25lZCBjaGFyIGNtZCwKLQkJaW50IGFjaykKKwkJCSAgICAgICBpbnQgYWNrKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHRpbWVvdXQsIG9rOwpAQCAtMTk2LDExICsyMzYsMTMgQEAKIAl9CiAJLyogb2suIHN0YW5kYXJkIE1QVS00MDEgaW5pdGlhbGl6YXRpb24gKi8KIAlpZiAobXB1LT5oYXJkd2FyZSAhPSBNUFU0MDFfSFdfU0IpIHsKLQkJZm9yICh0aW1lb3V0ID0gMTAwMDsgdGltZW91dCA+IDAgJiYgIXNuZF9tcHU0MDFfb3V0cHV0X3JlYWR5KG1wdSk7IHRpbWVvdXQtLSkKKwkJZm9yICh0aW1lb3V0ID0gMTAwMDsgdGltZW91dCA+IDAgJiYKKwkJCSAgICAgIXNuZF9tcHU0MDFfb3V0cHV0X3JlYWR5KG1wdSk7IHRpbWVvdXQtLSkKIAkJCXVkZWxheSgxMCk7CiAjaWZkZWYgQ09ORklHX1NORF9ERUJVRwogCQlpZiAoIXRpbWVvdXQpCi0JCQlzbmRfcHJpbnRrKCJjbWQ6IHR4IHRpbWVvdXQgKHN0YXR1cyA9IDB4JXgpXG4iLCBtcHUtPnJlYWQobXB1LCBNUFU0MDFDKG1wdSkpKTsKKwkJCXNuZF9wcmludGsoS0VSTl9FUlIgImNtZDogdHggdGltZW91dCAoc3RhdHVzID0gMHgleClcbiIsCisJCQkJICAgbXB1LT5yZWFkKG1wdSwgTVBVNDAxQyhtcHUpKSk7CiAjZW5kaWYKIAl9CiAJbXB1LT53cml0ZShtcHUsIGNtZCwgTVBVNDAxQyhtcHUpKTsKQEAgLTIxNSwxMiArMjU3LDE0IEBACiAJCX0KIAkJaWYgKCFvayAmJiBtcHUtPnJlYWQobXB1LCBNUFU0MDFEKG1wdSkpID09IE1QVTQwMV9BQ0spCiAJCQlvayA9IDE7Ci0JfSBlbHNlIHsKKwl9IGVsc2UKIAkJb2sgPSAxOwotCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtcHUtPmlucHV0X2xvY2ssIGZsYWdzKTsKIAlpZiAoIW9rKSB7Ci0JCXNuZF9wcmludGsoImNtZDogMHgleCBmYWlsZWQgYXQgMHglbHggKHN0YXR1cyA9IDB4JXgsIGRhdGEgPSAweCV4KVxuIiwgY21kLCBtcHUtPnBvcnQsIG1wdS0+cmVhZChtcHUsIE1QVTQwMUMobXB1KSksIG1wdS0+cmVhZChtcHUsIE1QVTQwMUQobXB1KSkpOworCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJjbWQ6IDB4JXggZmFpbGVkIGF0IDB4JWx4ICIKKwkJCSAgICIoc3RhdHVzID0gMHgleCwgZGF0YSA9IDB4JXgpXG4iLCBjbWQsIG1wdS0+cG9ydCwKKwkJCSAgIG1wdS0+cmVhZChtcHUsIE1QVTQwMUMobXB1KSksCisJCQkgICBtcHUtPnJlYWQobXB1LCBNUFU0MDFEKG1wdSkpKTsKIAkJcmV0dXJuIDE7CiAJfQogCXJldHVybiAwOwpAQCAtMzE0LDcgKzM1OCw4IEBACiAvKgogICogdHJpZ2dlciBpbnB1dCBjYWxsYmFjawogICovCi1zdGF0aWMgdm9pZCBzbmRfbXB1NDAxX3VhcnRfaW5wdXRfdHJpZ2dlcihzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCB1cCkKK3N0YXRpYyB2b2lkCitzbmRfbXB1NDAxX3VhcnRfaW5wdXRfdHJpZ2dlcihzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCB1cCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXN0cnVjdCBzbmRfbXB1NDAxICptcHU7CkBAIC0zMjIsNyArMzY3LDggQEAKIAogCW1wdSA9IHN1YnN0cmVhbS0+cm1pZGktPnByaXZhdGVfZGF0YTsKIAlpZiAodXApIHsKLQkJaWYgKCEgdGVzdF9hbmRfc2V0X2JpdChNUFU0MDFfTU9ERV9CSVRfSU5QVVRfVFJJR0dFUiwgJm1wdS0+bW9kZSkpIHsKKwkJaWYgKCEgdGVzdF9hbmRfc2V0X2JpdChNUFU0MDFfTU9ERV9CSVRfSU5QVVRfVFJJR0dFUiwKKwkJCQkgICAgICAgJm1wdS0+bW9kZSkpIHsKIAkJCS8qIGZpcnN0IHRpbWUgLSBmbHVzaCBGSUZPICovCiAJCQl3aGlsZSAobWF4LS0gPiAwKQogCQkJCW1wdS0+cmVhZChtcHUsIE1QVTQwMUQobXB1KSk7CkBAIC0zNTIsMTMgKzM5OCwxMSBAQAogCXVuc2lnbmVkIGNoYXIgYnl0ZTsKIAogCXdoaWxlIChtYXgtLSA+IDApIHsKLQkJaWYgKHNuZF9tcHU0MDFfaW5wdXRfYXZhaWwobXB1KSkgewotCQkJYnl0ZSA9IG1wdS0+cmVhZChtcHUsIE1QVTQwMUQobXB1KSk7Ci0JCQlpZiAodGVzdF9iaXQoTVBVNDAxX01PREVfQklUX0lOUFVUX1RSSUdHRVIsICZtcHUtPm1vZGUpKQotCQkJCXNuZF9yYXdtaWRpX3JlY2VpdmUobXB1LT5zdWJzdHJlYW1faW5wdXQsICZieXRlLCAxKTsKLQkJfSBlbHNlIHsKKwkJaWYgKCEgc25kX21wdTQwMV9pbnB1dF9hdmFpbChtcHUpKQogCQkJYnJlYWs7IC8qIGlucHV0IG5vdCBhdmFpbGFibGUgKi8KLQkJfQorCQlieXRlID0gbXB1LT5yZWFkKG1wdSwgTVBVNDAxRChtcHUpKTsKKwkJaWYgKHRlc3RfYml0KE1QVTQwMV9NT0RFX0JJVF9JTlBVVF9UUklHR0VSLCAmbXB1LT5tb2RlKSkKKwkJCXNuZF9yYXdtaWRpX3JlY2VpdmUobXB1LT5zdWJzdHJlYW1faW5wdXQsICZieXRlLCAxKTsKIAl9CiB9CiAKQEAgLTM4MCwxNiArNDI0LDE2IEBACiAJaW50IG1heCA9IDI1NiwgdGltZW91dDsKIAogCWRvIHsKLQkJaWYgKHNuZF9yYXdtaWRpX3RyYW5zbWl0X3BlZWsobXB1LT5zdWJzdHJlYW1fb3V0cHV0LCAmYnl0ZSwgMSkgPT0gMSkgeworCQlpZiAoc25kX3Jhd21pZGlfdHJhbnNtaXRfcGVlayhtcHUtPnN1YnN0cmVhbV9vdXRwdXQsCisJCQkJCSAgICAgICZieXRlLCAxKSA9PSAxKSB7CiAJCQlmb3IgKHRpbWVvdXQgPSAxMDA7IHRpbWVvdXQgPiAwOyB0aW1lb3V0LS0pIHsKLQkJCQlpZiAoc25kX21wdTQwMV9vdXRwdXRfcmVhZHkobXB1KSkgewotCQkJCQltcHUtPndyaXRlKG1wdSwgYnl0ZSwgTVBVNDAxRChtcHUpKTsKLQkJCQkJc25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrKG1wdS0+c3Vic3RyZWFtX291dHB1dCwgMSk7CisJCQkJaWYgKHNuZF9tcHU0MDFfb3V0cHV0X3JlYWR5KG1wdSkpCiAJCQkJCWJyZWFrOwotCQkJCX0KIAkJCX0KIAkJCWlmICh0aW1lb3V0ID09IDApCiAJCQkJYnJlYWs7CS8qIFR4IEZJRk8gZnVsbCAtIHRyeSBhZ2FpbiBsYXRlciAqLworCQkJbXB1LT53cml0ZShtcHUsIGJ5dGUsIE1QVTQwMUQobXB1KSk7CisJCQlzbmRfcmF3bWlkaV90cmFuc21pdF9hY2sobXB1LT5zdWJzdHJlYW1fb3V0cHV0LCAxKTsKIAkJfSBlbHNlIHsKIAkJCXNuZF9tcHU0MDFfdWFydF9yZW1vdmVfdGltZXIgKG1wdSwgMCk7CiAJCQlicmVhazsJLyogbm8gb3RoZXIgZGF0YSAtIGxlYXZlIHRoZSB0eCBsb29wICovCkBAIC00MDAsNyArNDQ0LDggQEAKIC8qCiAgKiBvdXRwdXQgdHJpZ2dlciBjYWxsYmFjawogICovCi1zdGF0aWMgdm9pZCBzbmRfbXB1NDAxX3VhcnRfb3V0cHV0X3RyaWdnZXIoc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgdXApCitzdGF0aWMgdm9pZAorc25kX21wdTQwMV91YXJ0X291dHB1dF90cmlnZ2VyKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IHVwKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3RydWN0IHNuZF9tcHU0MDEgKm1wdTsKQEAgLTQxMywxNCArNDU4LDE2IEBACiAJCSAqIHNpbmNlIHRoZSBvdXRwdXQgdGltZXIgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgaW4KIAkJICogc25kX21wdTQwMV91YXJ0X291dHB1dF93cml0ZSgpLgogCQkgKi8KLQkJc25kX21wdTQwMV91YXJ0X2FkZF90aW1lcihtcHUsIDApOworCQlpZiAoISAobXB1LT5pbmZvX2ZsYWdzICYgTVBVNDAxX0lORk9fVFhfSVJRKSkKKwkJCXNuZF9tcHU0MDFfdWFydF9hZGRfdGltZXIobXB1LCAwKTsKIAogCQkvKiBvdXRwdXQgcGVuZGluZyBkYXRhICovCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZtcHUtPm91dHB1dF9sb2NrLCBmbGFncyk7CiAJCXNuZF9tcHU0MDFfdWFydF9vdXRwdXRfd3JpdGUobXB1KTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbXB1LT5vdXRwdXRfbG9jaywgZmxhZ3MpOwogCX0gZWxzZSB7Ci0JCXNuZF9tcHU0MDFfdWFydF9yZW1vdmVfdGltZXIobXB1LCAwKTsKKwkJaWYgKCEgKG1wdS0+aW5mb19mbGFncyAmIE1QVTQwMV9JTkZPX1RYX0lSUSkpCisJCQlzbmRfbXB1NDAxX3VhcnRfcmVtb3ZlX3RpbWVyKG1wdSwgMCk7CiAJCWNsZWFyX2JpdChNUFU0MDFfTU9ERV9CSVRfT1VUUFVUX1RSSUdHRVIsICZtcHUtPm1vZGUpOwogCX0KIH0KQEAgLTQ1OCw3ICs1MDUsNyBAQAogICogQGRldmljZTogdGhlIGRldmljZSBpbmRleCwgemVyby1iYXNlZAogICogQGhhcmR3YXJlOiB0aGUgaGFyZHdhcmUgdHlwZSwgTVBVNDAxX0hXX1hYWFgKICAqIEBwb3J0OiB0aGUgYmFzZSBhZGRyZXNzIG9mIE1QVTQwMSBwb3J0Ci0gKiBAaW50ZWdyYXRlZDogbm9uLXplcm8gaWYgdGhlIHBvcnQgd2FzIGFscmVhZHkgcmVzZXJ2ZWQgYnkgdGhlIGNoaXAKKyAqIEBpbmZvX2ZsYWdzOiBiaXRmbGFncyBNUFU0MDFfSU5GT19YWFgKICAqIEBpcnE6IHRoZSBpcnEgbnVtYmVyLCAtMSBpZiBubyBpbnRlcnJ1cHQgZm9yIG1wdQogICogQGlycV9mbGFnczogdGhlIGlycSByZXF1ZXN0IGZsYWdzIChTQV9YWFgpLCAwIGlmIGlycSB3YXMgYWxyZWFkeSByZXNlcnZlZC4KICAqIEBycmF3bWlkaTogdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIG5ldyByYXdtaWRpIGluc3RhbmNlCkBAIC00NzMsMTcgKzUyMCwyNCBAQAogICovCiBpbnQgc25kX21wdTQwMV91YXJ0X25ldyhzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIGludCBkZXZpY2UsCiAJCQl1bnNpZ25lZCBzaG9ydCBoYXJkd2FyZSwKLQkJCXVuc2lnbmVkIGxvbmcgcG9ydCwgaW50IGludGVncmF0ZWQsCisJCQl1bnNpZ25lZCBsb25nIHBvcnQsCisJCQl1bnNpZ25lZCBpbnQgaW5mb19mbGFncywKIAkJCWludCBpcnEsIGludCBpcnFfZmxhZ3MsCiAJCQlzdHJ1Y3Qgc25kX3Jhd21pZGkgKiogcnJhd21pZGkpCiB7CiAJc3RydWN0IHNuZF9tcHU0MDEgKm1wdTsKIAlzdHJ1Y3Qgc25kX3Jhd21pZGkgKnJtaWRpOworCWludCBpbl9lbmFibGUsIG91dF9lbmFibGU7CiAJaW50IGVycjsKIAogCWlmIChycmF3bWlkaSkKIAkJKnJyYXdtaWRpID0gTlVMTDsKLQlpZiAoKGVyciA9IHNuZF9yYXdtaWRpX25ldyhjYXJkLCAiTVBVLTQwMVUiLCBkZXZpY2UsIDEsIDEsICZybWlkaSkpIDwgMCkKKwlpZiAoISAoaW5mb19mbGFncyAmIChNUFU0MDFfSU5GT19JTlBVVCB8IE1QVTQwMV9JTkZPX09VVFBVVCkpKQorCQlpbmZvX2ZsYWdzIHw9IE1QVTQwMV9JTkZPX0lOUFVUIHwgTVBVNDAxX0lORk9fT1VUUFVUOworCWluX2VuYWJsZSA9IChpbmZvX2ZsYWdzICYgTVBVNDAxX0lORk9fSU5QVVQpID8gMSA6IDA7CisJb3V0X2VuYWJsZSA9IChpbmZvX2ZsYWdzICYgTVBVNDAxX0lORk9fT1VUUFVUKSA/IDEgOiAwOworCWlmICgoZXJyID0gc25kX3Jhd21pZGlfbmV3KGNhcmQsICJNUFUtNDAxVSIsIGRldmljZSwKKwkJCQkgICBvdXRfZW5hYmxlLCBpbl9lbmFibGUsICZybWlkaSkpIDwgMCkKIAkJcmV0dXJuIGVycjsKIAltcHUgPSBremFsbG9jKHNpemVvZigqbXB1KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKG1wdSA9PSBOVUxMKSB7CkBAIC00OTcsMjMgKzU1MSwyMyBAQAogCXNwaW5fbG9ja19pbml0KCZtcHUtPm91dHB1dF9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmbXB1LT50aW1lcl9sb2NrKTsKIAltcHUtPmhhcmR3YXJlID0gaGFyZHdhcmU7Ci0JaWYgKCFpbnRlZ3JhdGVkKSB7CisJaWYgKCEgKGluZm9fZmxhZ3MgJiBNUFU0MDFfSU5GT19JTlRFR1JBVEVEKSkgewogCQlpbnQgcmVzX3NpemUgPSBoYXJkd2FyZSA9PSBNUFU0MDFfSFdfUEM5OElJID8gNCA6IDI7Ci0JCWlmICgobXB1LT5yZXMgPSByZXF1ZXN0X3JlZ2lvbihwb3J0LCByZXNfc2l6ZSwgIk1QVTQwMSBVQVJUIikpID09IE5VTEwpIHsKLQkJCXNuZF9wcmludGsoS0VSTl9FUlIgIm1wdTQwMV91YXJ0OiB1bmFibGUgdG8gZ3JhYiBwb3J0IDB4JWx4IHNpemUgJWRcbiIsIHBvcnQsIHJlc19zaXplKTsKKwkJbXB1LT5yZXMgPSByZXF1ZXN0X3JlZ2lvbihwb3J0LCByZXNfc2l6ZSwgIk1QVTQwMSBVQVJUIik7CisJCWlmIChtcHUtPnJlcyA9PSBOVUxMKSB7CisJCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJtcHU0MDFfdWFydDogIgorCQkJCSAgICJ1bmFibGUgdG8gZ3JhYiBwb3J0IDB4JWx4IHNpemUgJWRcbiIsCisJCQkJICAgcG9ydCwgcmVzX3NpemUpOwogCQkJc25kX2RldmljZV9mcmVlKGNhcmQsIHJtaWRpKTsKIAkJCXJldHVybiAtRUJVU1k7CiAJCX0KIAl9Ci0Jc3dpdGNoIChoYXJkd2FyZSkgewotCWNhc2UgTVBVNDAxX0hXX0FVUkVBTDoKKwlpZiAoaW5mb19mbGFncyAmIE1QVTQwMV9JTkZPX01NSU8pIHsKIAkJbXB1LT53cml0ZSA9IG1wdTQwMV93cml0ZV9tbWlvOwogCQltcHUtPnJlYWQgPSBtcHU0MDFfcmVhZF9tbWlvOwotCQlicmVhazsKLQlkZWZhdWx0OgorCX0gZWxzZSB7CiAJCW1wdS0+d3JpdGUgPSBtcHU0MDFfd3JpdGVfcG9ydDsKIAkJbXB1LT5yZWFkID0gbXB1NDAxX3JlYWRfcG9ydDsKLQkJYnJlYWs7CiAJfQogCW1wdS0+cG9ydCA9IHBvcnQ7CiAJaWYgKGhhcmR3YXJlID09IE1QVTQwMV9IV19QQzk4SUkpCkBAIC01MjEsMzAgKzU3NSw0MCBAQAogCWVsc2UKIAkJbXB1LT5jcG9ydCA9IHBvcnQgKyAxOwogCWlmIChpcnEgPj0gMCAmJiBpcnFfZmxhZ3MpIHsKLQkJaWYgKHJlcXVlc3RfaXJxKGlycSwgc25kX21wdTQwMV91YXJ0X2ludGVycnVwdCwgaXJxX2ZsYWdzLCAiTVBVNDAxIFVBUlQiLCAodm9pZCAqKSBtcHUpKSB7Ci0JCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJtcHU0MDFfdWFydDogdW5hYmxlIHRvIGdyYWIgSVJRICVkXG4iLCBpcnEpOworCQlpZiAocmVxdWVzdF9pcnEoaXJxLCBzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0LCBpcnFfZmxhZ3MsCisJCQkJIk1QVTQwMSBVQVJUIiwgKHZvaWQgKikgbXB1KSkgeworCQkJc25kX3ByaW50ayhLRVJOX0VSUiAibXB1NDAxX3VhcnQ6ICIKKwkJCQkgICAidW5hYmxlIHRvIGdyYWIgSVJRICVkXG4iLCBpcnEpOwogCQkJc25kX2RldmljZV9mcmVlKGNhcmQsIHJtaWRpKTsKIAkJCXJldHVybiAtRUJVU1k7CiAJCX0KIAl9CisJbXB1LT5pbmZvX2ZsYWdzID0gaW5mb19mbGFnczsKIAltcHUtPmlycSA9IGlycTsKIAltcHUtPmlycV9mbGFncyA9IGlycV9mbGFnczsKIAlpZiAoY2FyZC0+c2hvcnRuYW1lWzBdKQotCQlzbnByaW50ZihybWlkaS0+bmFtZSwgc2l6ZW9mKHJtaWRpLT5uYW1lKSwgIiVzIE1JREkiLCBjYXJkLT5zaG9ydG5hbWUpOworCQlzbnByaW50ZihybWlkaS0+bmFtZSwgc2l6ZW9mKHJtaWRpLT5uYW1lKSwgIiVzIE1JREkiLAorCQkJIGNhcmQtPnNob3J0bmFtZSk7CiAJZWxzZQotCQlzcHJpbnRmKHJtaWRpLT5uYW1lLCAiTVBVLTQwMSBNSURJICVkLSVkIiwgY2FyZC0+bnVtYmVyLCBkZXZpY2UpOwotCXNuZF9yYXdtaWRpX3NldF9vcHMocm1pZGksIFNORFJWX1JBV01JRElfU1RSRUFNX09VVFBVVCwgJnNuZF9tcHU0MDFfdWFydF9vdXRwdXQpOwotCXNuZF9yYXdtaWRpX3NldF9vcHMocm1pZGksIFNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULCAmc25kX21wdTQwMV91YXJ0X2lucHV0KTsKLQlybWlkaS0+aW5mb19mbGFncyB8PSBTTkRSVl9SQVdNSURJX0lORk9fT1VUUFVUIHwKLQkgICAgICAgICAgICAgICAgICAgICBTTkRSVl9SQVdNSURJX0lORk9fSU5QVVQgfAotCSAgICAgICAgICAgICAgICAgICAgIFNORFJWX1JBV01JRElfSU5GT19EVVBMRVg7CisJCXNwcmludGYocm1pZGktPm5hbWUsICJNUFUtNDAxIE1JREkgJWQtJWQiLGNhcmQtPm51bWJlciwgZGV2aWNlKTsKKwlpZiAob3V0X2VuYWJsZSkgeworCQlzbmRfcmF3bWlkaV9zZXRfb3BzKHJtaWRpLCBTTkRSVl9SQVdNSURJX1NUUkVBTV9PVVRQVVQsCisJCQkJICAgICZzbmRfbXB1NDAxX3VhcnRfb3V0cHV0KTsKKwkJcm1pZGktPmluZm9fZmxhZ3MgfD0gU05EUlZfUkFXTUlESV9JTkZPX09VVFBVVDsKKwl9CisJaWYgKGluX2VuYWJsZSkgeworCQlzbmRfcmF3bWlkaV9zZXRfb3BzKHJtaWRpLCBTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCwKKwkJCQkgICAgJnNuZF9tcHU0MDFfdWFydF9pbnB1dCk7CisJCXJtaWRpLT5pbmZvX2ZsYWdzIHw9IFNORFJWX1JBV01JRElfSU5GT19JTlBVVDsKKwkJaWYgKG91dF9lbmFibGUpCisJCQlybWlkaS0+aW5mb19mbGFncyB8PSBTTkRSVl9SQVdNSURJX0lORk9fRFVQTEVYOworCX0KIAltcHUtPnJtaWRpID0gcm1pZGk7CiAJaWYgKHJyYXdtaWRpKQogCQkqcnJhd21pZGkgPSBybWlkaTsKIAlyZXR1cm4gMDsKIH0KIAotRVhQT1JUX1NZTUJPTChzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0KTsKIEVYUE9SVF9TWU1CT0woc25kX21wdTQwMV91YXJ0X25ldyk7CiAKIC8qCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL210cGF2LmMgYi9zb3VuZC9kcml2ZXJzL210cGF2LmMKaW5kZXggYjdhMGI0Mi4uNDc0ZWVkMCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9tdHBhdi5jCisrKyBiL3NvdW5kL2RyaXZlcnMvbXRwYXYuYwpAQCAtNzcwLDExICs3NzAsMTUgQEAKIAkJcmV0dXJuIGVycjsKIAogCWRldmljZSA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoU05EX01UUEFWX0RSSVZFUiwgLTEsIE5VTEwsIDApOwotCWlmIChJU19FUlIoZGV2aWNlKSkgewotCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc25kX210cGF2X2RyaXZlcik7Ci0JCXJldHVybiBQVFJfRVJSKGRldmljZSk7Ci0JfQotCXJldHVybiAwOworCWlmICghSVNfRVJSKGRldmljZSkpIHsKKwkJaWYgKHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldmljZSkpCisJCQlyZXR1cm4gMDsKKwkJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoZGV2aWNlKTsKKwkJZXJyID0gLUVOT0RFVjsKKwl9IGVsc2UKKwkJZXJyID0gUFRSX0VSUihkZXZpY2UpOworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzbmRfbXRwYXZfZHJpdmVyKTsKKwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBfX2V4aXQgYWxzYV9jYXJkX210cGF2X2V4aXQodm9pZCkKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX2xpYi5jIGIvc291bmQvZHJpdmVycy9vcGwzL29wbDNfbGliLmMKaW5kZXggNGY4NTU2OS4uODdmZTM3NiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9vcGwzL29wbDNfbGliLmMKKysrIGIvc291bmQvZHJpdmVycy9vcGwzL29wbDNfbGliLmMKQEAgLTMxNiw2ICszMTYsOCBAQAogCX0KIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfb3BsM19pbnRlcnJ1cHQpOworCiAvKgogCiAgKi8KQEAgLTM2OSw2ICszNzEsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGwzX25ldyk7CisKIGludCBzbmRfb3BsM19pbml0KHN0cnVjdCBzbmRfb3BsMyAqb3BsMykKIHsKIAlpZiAoISBvcGwzLT5jb21tYW5kKSB7CkBAIC0zOTMsNiArMzk3LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfb3BsM19pbml0KTsKKwogaW50IHNuZF9vcGwzX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJCSAgICB1bnNpZ25lZCBsb25nIGxfcG9ydCwKIAkJICAgIHVuc2lnbmVkIGxvbmcgcl9wb3J0LApAQCAtNDUxLDYgKzQ1Nyw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX29wbDNfY3JlYXRlKTsKKwogaW50IHNuZF9vcGwzX3RpbWVyX25ldyhzdHJ1Y3Qgc25kX29wbDMgKiBvcGwzLCBpbnQgdGltZXIxX2RldiwgaW50IHRpbWVyMl9kZXYpCiB7CiAJaW50IGVycjsKQEAgLTQ2OCw2ICs0NzYsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGwzX3RpbWVyX25ldyk7CisKIGludCBzbmRfb3BsM19od2RlcF9uZXcoc3RydWN0IHNuZF9vcGwzICogb3BsMywKIAkJICAgICAgIGludCBkZXZpY2UsIGludCBzZXFfZGV2aWNlLAogCQkgICAgICAgc3RydWN0IHNuZF9od2RlcCAqKiByaHdkZXApCkBAIC01MjYsMTcgKzUzNiw4IEBACiAJcmV0dXJuIDA7CiB9CiAKLUVYUE9SVF9TWU1CT0woc25kX29wbDNfaW50ZXJydXB0KTsKLUVYUE9SVF9TWU1CT0woc25kX29wbDNfbmV3KTsKLUVYUE9SVF9TWU1CT0woc25kX29wbDNfaW5pdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9vcGwzX2NyZWF0ZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9vcGwzX3RpbWVyX25ldyk7CiBFWFBPUlRfU1lNQk9MKHNuZF9vcGwzX2h3ZGVwX25ldyk7CiAKLS8qIG9wbDNfc3ludGguYyAqLwotRVhQT1JUX1NZTUJPTChzbmRfb3BsM19yZWdtYXApOwotRVhQT1JUX1NZTUJPTChzbmRfb3BsM19yZXNldCk7Ci0KIC8qCiAgKiAgSU5JVCBwYXJ0CiAgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX29zcy5jIGIvc291bmQvZHJpdmVycy9vcGwzL29wbDNfb3NzLmMKaW5kZXggZmNjZjAxOS4uNWZkM2E0YyAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9vcGwzL29wbDNfb3NzLmMKKysrIGIvc291bmQvZHJpdmVycy9vcGwzL29wbDNfb3NzLmMKQEAgLTEwMCw3ICsxMDAsOCBAQAogCQkJCQkJCSAgU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFLAogCQkJCQkJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dFTkVSSUMgfAogCQkJCQkJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNIHwKLQkJCQkJCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEgsCisJCQkJCQkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX0hBUkRXQVJFIHwKKwkJCQkJCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEhFU0laRVIsCiAJCQkJCQkJICB2b2ljZXMsIHZvaWNlcywKIAkJCQkJCQkgIG5hbWUpOwogCWlmIChvcGwzLT5vc3NfY2hzZXQtPnBvcnQgPCAwKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL29wbDMvb3BsM19zZXEuYyBiL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX3NlcS5jCmluZGV4IDU3YmVjZjMuLjk2NzYyYzkgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX3NlcS5jCisrKyBiL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX3NlcS5jCkBAIC0yMDMsNyArMjAzLDkgQEAKIAkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1dSSVRFLAogCQkJCQkJICAgICAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dFTkVSSUMgfAogCQkJCQkJICAgICAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNIHwKLQkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEgsCisJCQkJCQkgICAgICBTTkRSVl9TRVFfUE9SVF9UWVBFX0RJUkVDVF9TQU1QTEUgfAorCQkJCQkJICAgICAgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRSB8CisJCQkJCQkgICAgICBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSLAogCQkJCQkJICAgICAgMTYsIHZvaWNlcywKIAkJCQkJCSAgICAgIG5hbWUpOwogCWlmIChvcGwzLT5jaHNldC0+cG9ydCA8IDApIHsKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX3N5bnRoLmMgYi9zb3VuZC9kcml2ZXJzL29wbDMvb3BsM19zeW50aC5jCmluZGV4IDZkYjUwM2YuLmE0YjM1NDMgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX3N5bnRoLmMKKysrIGIvc291bmQvZHJpdmVycy9vcGwzL29wbDNfc3ludGguYwpAQCAtNTgsNiArNTgsOCBAQAogCXsgMHgxMiwgMHgxNSwgMHgwMCwgMHgwMCB9CS8qIGlzIHNlbGVjdGVkIChvbmx5IGxlZnQgcmVnIGJsb2NrKSAqLwogfTsKIAorRVhQT1JUX1NZTUJPTChzbmRfb3BsM19yZWdtYXApOworCiAvKgogICogcHJvdG90eXBlcwogICovCkBAIC0yMjgsNiArMjMwLDcgQEAKIAlvcGwzLT5yaHl0aG0gPSAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGwzX3Jlc2V0KTsKIAogc3RhdGljIGludCBzbmRfb3BsM19wbGF5X25vdGUoc3RydWN0IHNuZF9vcGwzICogb3BsMywgc3RydWN0IHNuZF9kbV9mbV9ub3RlICogbm90ZSkKIHsKQEAgLTQ0NSwzICs0NDgsNCBAQAogCiAJcmV0dXJuIDA7CiB9CisKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvb3BsNC9vcGw0X2xpYi5jIGIvc291bmQvZHJpdmVycy9vcGw0L29wbDRfbGliLmMKaW5kZXggNGJjODYwYS4uMDE5OTdmMiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9vcGw0L29wbDRfbGliLmMKKysrIGIvc291bmQvZHJpdmVycy9vcGw0L29wbDRfbGliLmMKQEAgLTQzLDYgKzQzLDggQEAKIAlvdXRiKHZhbHVlLCBvcGw0LT5wY21fcG9ydCArIDEpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGw0X3dyaXRlKTsKKwogdTggc25kX29wbDRfcmVhZChzdHJ1Y3Qgc25kX29wbDQgKm9wbDQsIHU4IHJlZykKIHsKIAlzbmRfb3BsNF93YWl0KG9wbDQpOwpAQCAtNTIsNiArNTQsOCBAQAogCXJldHVybiBpbmIob3BsNC0+cGNtX3BvcnQgKyAxKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfb3BsNF9yZWFkKTsKKwogdm9pZCBzbmRfb3BsNF9yZWFkX21lbW9yeShzdHJ1Y3Qgc25kX29wbDQgKm9wbDQsIGNoYXIgKmJ1ZiwgaW50IG9mZnNldCwgaW50IHNpemUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTc2LDYgKzgwLDggQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZvcGw0LT5yZWdfbG9jaywgZmxhZ3MpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGw0X3JlYWRfbWVtb3J5KTsKKwogdm9pZCBzbmRfb3BsNF93cml0ZV9tZW1vcnkoc3RydWN0IHNuZF9vcGw0ICpvcGw0LCBjb25zdCBjaGFyICpidWYsIGludCBvZmZzZXQsIGludCBzaXplKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xMDAsNiArMTA2LDggQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZvcGw0LT5yZWdfbG9jaywgZmxhZ3MpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9vcGw0X3dyaXRlX21lbW9yeSk7CisKIHN0YXRpYyB2b2lkIHNuZF9vcGw0X2VuYWJsZV9vcGw0KHN0cnVjdCBzbmRfb3BsNCAqb3BsNCkKIHsKIAlvdXRiKE9QTDNfUkVHX01PREUsIG9wbDQtPmZtX3BvcnQgKyAyKTsKQEAgLTI1NiwxMCArMjY0LDYgQEAKIAlyZXR1cm4gMDsKIH0KIAotRVhQT1JUX1NZTUJPTChzbmRfb3BsNF93cml0ZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9vcGw0X3JlYWQpOwotRVhQT1JUX1NZTUJPTChzbmRfb3BsNF93cml0ZV9tZW1vcnkpOwotRVhQT1JUX1NZTUJPTChzbmRfb3BsNF9yZWFkX21lbW9yeSk7CiBFWFBPUlRfU1lNQk9MKHNuZF9vcGw0X2NyZWF0ZSk7CiAKIHN0YXRpYyBpbnQgX19pbml0IGFsc2Ffb3BsNF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL29wbDQvb3BsNF9zZXEuYyBiL3NvdW5kL2RyaXZlcnMvb3BsNC9vcGw0X3NlcS5jCmluZGV4IGRjMGRjZGMuLjQzZDhhMmIgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvb3BsNC9vcGw0X3NlcS5jCisrKyBiL3NvdW5kL2RyaXZlcnMvb3BsNC9vcGw0X3NlcS5jCkBAIC0xNjQsNyArMTY0LDkgQEAKIAkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX0NBUF9XUklURSB8CiAJCQkJCQkgICAgICBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURSwKIAkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDIHwKLQkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTSwKKwkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTSB8CisJCQkJCQkgICAgICBTTkRSVl9TRVFfUE9SVF9UWVBFX0hBUkRXQVJFIHwKKwkJCQkJCSAgICAgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEhFU0laRVIsCiAJCQkJCQkgICAgICAxNiwgMjQsCiAJCQkJCQkgICAgICAiT1BMNCBXYXZldGFibGUgUG9ydCIpOwogCWlmIChvcGw0LT5jaHNldC0+cG9ydCA8IDApIHsKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvc2VyaWFsLXUxNjU1MC5jIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMKaW5kZXggYzAxYjRjNS4uMjMzMGZlYyAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMKKysrIGIvc291bmQvZHJpdmVycy9zZXJpYWwtdTE2NTUwLmMKQEAgLTk5OCw2ICs5OTgsMTAgQEAKIAkJCQkJCQkgaSwgTlVMTCwgMCk7CiAJCWlmIChJU19FUlIoZGV2aWNlKSkKIAkJCWNvbnRpbnVlOworCQlpZiAoIXBsYXRmb3JtX2dldF9kcnZkYXRhKGRldmljZSkpIHsKKwkJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldmljZSk7CisJCQljb250aW51ZTsKKwkJfQogCQlkZXZpY2VzW2ldID0gZGV2aWNlOwogCQljYXJkcysrOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdmlybWlkaS5jIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmMKaW5kZXggMjZlYjI0OS4uNTkxNzFmOCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy92aXJtaWRpLmMKKysrIGIvc291bmQvZHJpdmVycy92aXJtaWRpLmMKQEAgLTE3MSw2ICsxNzEsMTAgQEAKIAkJCQkJCQkgaSwgTlVMTCwgMCk7CiAJCWlmIChJU19FUlIoZGV2aWNlKSkKIAkJCWNvbnRpbnVlOworCQlpZiAoIXBsYXRmb3JtX2dldF9kcnZkYXRhKGRldmljZSkpIHsKKwkJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldmljZSk7CisJCQljb250aW51ZTsKKwkJfQogCQlkZXZpY2VzW2ldID0gZGV2aWNlOwogCQljYXJkcysrOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvdngvdnhfY29yZS5jIGIvc291bmQvZHJpdmVycy92eC92eF9jb3JlLmMKaW5kZXggZmE0YTJiNS4uYTYwMTY4MiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy92eC92eF9jb3JlLmMKKysrIGIvc291bmQvZHJpdmVycy92eC92eF9jb3JlLmMKQEAgLTcwLDYgKzcwLDggQEAKIAlyZXR1cm4gLUVJTzsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdnhfY2hlY2tfcmVnX2JpdCk7CisKIC8qCiAgKiB2eF9zZW5kX2lycV9kc3AgLSBzZXQgY29tbWFuZCBpcnEgYml0CiAgKiBAbnVtOiB0aGUgcmVxdWVzdGVkIElSUSB0eXBlLCBJUlFfWFhYCkBAIC00NjUsNiArNDY3LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdnhfbG9hZF9ib290X2ltYWdlKTsKKwogLyoKICAqIHZ4X3Rlc3RfaXJxX3NyYyAtIHF1ZXJ5IHRoZSBzb3VyY2Ugb2YgaW50ZXJydXB0cwogICoKQEAgLTU0NSw2ICs1NDksNyBAQAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdnhfaXJxX2hhbmRsZXIpOwogCiAvKgogICovCkBAIC02MzUsNyArNjQwLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgInZ4LXN0YXR1cyIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgdnhfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCB2eF9wcm9jX3JlYWQpOwogfQogCiAKQEAgLTY1Nyw2ICs2NjIsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF92eF9kc3BfYm9vdCk7CisKIC8qKgogICogc25kX3Z4X2RzcF9sb2FkIC0gbG9hZCB0aGUgRFNQIGltYWdlCiAgKi8KQEAgLTcwNSw2ICs3MTIsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF92eF9kc3BfbG9hZCk7CisKICNpZmRlZiBDT05GSUdfUE0KIC8qCiAgKiBzdXNwZW5kCkBAIC03MjEsNiArNzMwLDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdnhfc3VzcGVuZCk7CisKIC8qCiAgKiByZXN1bWUKICAqLwpAQCAtNzQ3LDYgKzc1OCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3Z4X3Jlc3VtZSk7CiAjZW5kaWYKIAogLyoqCkBAIC03OTAsNiArODAyLDggQEAKIAlyZXR1cm4gY2hpcDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdnhfY3JlYXRlKTsKKwogLyoKICAqIG1vZHVsZSBlbnRyaWVzCiAgKi8KQEAgLTgwNCwxOSArODE4LDMgQEAKIAogbW9kdWxlX2luaXQoYWxzYV92eF9jb3JlX2luaXQpCiBtb2R1bGVfZXhpdChhbHNhX3Z4X2NvcmVfZXhpdCkKLQotLyoKLSAqIGV4cG9ydHMKLSAqLwotRVhQT1JUX1NZTUJPTChzbmRfdnhfY2hlY2tfcmVnX2JpdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9jcmVhdGUpOwotRVhQT1JUX1NZTUJPTChzbmRfdnhfc2V0dXBfZmlybXdhcmUpOwotRVhQT1JUX1NZTUJPTChzbmRfdnhfZnJlZV9maXJtd2FyZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9pcnFfaGFuZGxlcik7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9kc3BfYm9vdCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9kc3BfbG9hZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9sb2FkX2Jvb3RfaW1hZ2UpOwotI2lmZGVmIENPTkZJR19QTQotRVhQT1JUX1NZTUJPTChzbmRfdnhfc3VzcGVuZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF92eF9yZXN1bWUpOwotI2VuZGlmCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3Z4L3Z4X2h3ZGVwLmMgYi9zb3VuZC9kcml2ZXJzL3Z4L3Z4X2h3ZGVwLmMKaW5kZXggZDgzNzc4My4uZTE5MjBhZiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy92eC92eF9od2RlcC5jCisrKyBiL3NvdW5kL2RyaXZlcnMvdngvdnhfaHdkZXAuYwpAQCAtMjUwLDMgKzI1MCw2IEBACiB9CiAKICNlbmRpZiAvKiBTTkRfVlhfRldfTE9BREVSICovCisKK0VYUE9SVF9TWU1CT0woc25kX3Z4X3NldHVwX2Zpcm13YXJlKTsKK0VYUE9SVF9TWU1CT0woc25kX3Z4X2ZyZWVfZmlybXdhcmUpOwpkaWZmIC0tZ2l0IGEvc291bmQvaTJjL2kyYy5jIGIvc291bmQvaTJjL2kyYy5jCmluZGV4IGVkZmU3NmYuLmI2MGZiMTggMTAwNjQ0Ci0tLSBhL3NvdW5kL2kyYy9pMmMuYworKysgYi9zb3VuZC9pMmMvaTJjLmMKQEAgLTEwNiw2ICsxMDYsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pMmNfYnVzX2NyZWF0ZSk7CisKIGludCBzbmRfaTJjX2RldmljZV9jcmVhdGUoc3RydWN0IHNuZF9pMmNfYnVzICpidXMsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgIHVuc2lnbmVkIGNoYXIgYWRkciwgc3RydWN0IHNuZF9pMmNfZGV2aWNlICoqcmRldmljZSkKIHsKQEAgLTEyNCw2ICsxMjYsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pMmNfZGV2aWNlX2NyZWF0ZSk7CisKIGludCBzbmRfaTJjX2RldmljZV9mcmVlKHN0cnVjdCBzbmRfaTJjX2RldmljZSAqZGV2aWNlKQogewogCWlmIChkZXZpY2UtPmJ1cykKQEAgLTEzNCwyMiArMTM4LDI5IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2kyY19kZXZpY2VfZnJlZSk7CisKIGludCBzbmRfaTJjX3NlbmRieXRlcyhzdHJ1Y3Qgc25kX2kyY19kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgY2hhciAqYnl0ZXMsIGludCBjb3VudCkKIHsKIAlyZXR1cm4gZGV2aWNlLT5idXMtPm9wcy0+c2VuZGJ5dGVzKGRldmljZSwgYnl0ZXMsIGNvdW50KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaTJjX3NlbmRieXRlcyk7CiAKIGludCBzbmRfaTJjX3JlYWRieXRlcyhzdHJ1Y3Qgc25kX2kyY19kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgY2hhciAqYnl0ZXMsIGludCBjb3VudCkKIHsKIAlyZXR1cm4gZGV2aWNlLT5idXMtPm9wcy0+cmVhZGJ5dGVzKGRldmljZSwgYnl0ZXMsIGNvdW50KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaTJjX3JlYWRieXRlcyk7CisKIGludCBzbmRfaTJjX3Byb2JlYWRkcihzdHJ1Y3Qgc25kX2kyY19idXMgKmJ1cywgdW5zaWduZWQgc2hvcnQgYWRkcikKIHsKIAlyZXR1cm4gYnVzLT5vcHMtPnByb2JlYWRkcihidXMsIGFkZHIpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9pMmNfcHJvYmVhZGRyKTsKKwogLyoKICAqICBiaXQtb3BlcmF0aW9ucwogICovCkBAIC0zMjAsMTIgKzMzMSw2IEBACiAJcmV0dXJuIGVycjsKIH0KIAotRVhQT1JUX1NZTUJPTChzbmRfaTJjX2J1c19jcmVhdGUpOwotRVhQT1JUX1NZTUJPTChzbmRfaTJjX2RldmljZV9jcmVhdGUpOwotRVhQT1JUX1NZTUJPTChzbmRfaTJjX2RldmljZV9mcmVlKTsKLUVYUE9SVF9TWU1CT0woc25kX2kyY19zZW5kYnl0ZXMpOwotRVhQT1JUX1NZTUJPTChzbmRfaTJjX3JlYWRieXRlcyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9pMmNfcHJvYmVhZGRyKTsKIAogc3RhdGljIGludCBfX2luaXQgYWxzYV9pMmNfaW5pdCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvc291bmQvaTJjL2wzL3VkYTEzNDEuYyBiL3NvdW5kL2kyYy9sMy91ZGExMzQxLmMKaW5kZXggNzQ2NTAwZS4uYjA3NGZkZCAxMDA2NDQKLS0tIGEvc291bmQvaTJjL2wzL3VkYTEzNDEuYworKysgYi9zb3VuZC9pMmMvbDMvdWRhMTM0MS5jCkBAIC01MTcsOSArNTE3LDkgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2FyZCwgInVkYTEzNDEiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNsbnQsIDEwMjQsIHNuZF91ZGExMzQxX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2xudCwgc25kX3VkYTEzNDFfcHJvY19yZWFkKTsKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhjYXJkLCAidWRhMTM0MS1yZWdzIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjbG50LCAxMDI0LCBzbmRfdWRhMTM0MV9wcm9jX3JlZ3NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2xudCwgc25kX3VkYTEzNDFfcHJvY19yZWdzX3JlYWQpOwogfQogCiAvKiB9fX0gKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9ndXMvZ3VzX2lycS5jIGIvc291bmQvaXNhL2d1cy9ndXNfaXJxLmMKaW5kZXggYzE5YmEyOS4uNDJkYjM3NSAxMDA2NDQKLS0tIGEvc291bmQvaXNhL2d1cy9ndXNfaXJxLmMKKysrIGIvc291bmQvaXNhL2d1cy9ndXNfaXJxLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhndXMtPmNhcmQsICJndXNpcnEiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGd1cywgMTAyNCwgc25kX2d1c19pcnFfaW5mb19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBndXMsIHNuZF9ndXNfaXJxX2luZm9fcmVhZCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc291bmQvaXNhL2d1cy9ndXNfbWVtLmMgYi9zb3VuZC9pc2EvZ3VzL2d1c19tZW0uYwppbmRleCAzYzBkMjdhLi5mNTBjMjc2IDEwMDY0NAotLS0gYS9zb3VuZC9pc2EvZ3VzL2d1c19tZW0uYworKysgYi9zb3VuZC9pc2EvZ3VzL2d1c19tZW0uYwpAQCAtMjY0LDEwICsyNjQsOCBAQAogCWlmIChzbmRfZ2YxX21lbV94YWxsb2MoYWxsb2MsICZibG9jaykgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CiAjaWZkZWYgQ09ORklHX1NORF9ERUJVRwotCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGd1cy0+Y2FyZCwgImd1c21lbSIsICZlbnRyeSkpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBndXMsIDEwMjQsIHNuZF9nZjFfbWVtX2luZm9fcmVhZCk7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gMjU2ICogMTAyNDsKLQl9CisJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoZ3VzLT5jYXJkLCAiZ3VzbWVtIiwgJmVudHJ5KSkKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBndXMsIHNuZF9nZjFfbWVtX2luZm9fcmVhZCk7CiAjZW5kaWYKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9ndXMvZ3VzX3N5bnRoLmMgYi9zb3VuZC9pc2EvZ3VzL2d1c19zeW50aC5jCmluZGV4IDI3NjdjYzEuLjNlNGQ0ZDYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2lzYS9ndXMvZ3VzX3N5bnRoLmMKKysrIGIvc291bmQvaXNhL2d1cy9ndXNfc3ludGguYwpAQCAtMTk0LDcgKzE5NCw5IEBACiAJCQkJCQkgICAmY2FsbGJhY2tzLAogCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFIHwgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfV1JJVEUsCiAJCQkJCQkgICBTTkRSVl9TRVFfUE9SVF9UWVBFX0RJUkVDVF9TQU1QTEUgfAotCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USCwKKwkJCQkJCSAgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEggfAorCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRSB8CisJCQkJCQkgICBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSLAogCQkJCQkJICAgMTYsIDAsCiAJCQkJCQkgICBuYW1lKTsKIAlpZiAocC0+Y2hzZXQtPnBvcnQgPCAwKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9pc2EvZ3VzL2ludGVyd2F2ZS5jIGIvc291bmQvaXNhL2d1cy9pbnRlcndhdmUuYwppbmRleCA0Mjk4ZDMzLi44NjYzMDBmIDEwMDY0NAotLS0gYS9zb3VuZC9pc2EvZ3VzL2ludGVyd2F2ZS5jCisrKyBiL3NvdW5kL2lzYS9ndXMvaW50ZXJ3YXZlLmMKQEAgLTcwLDkgKzcwLDkgQEAKIHN0YXRpYyBpbnQgZG1hMltTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0RNQTsJLyogMCwxLDMsNSw2LDcgKi8KIHN0YXRpYyBpbnQgam95c3RpY2tfZGFjW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMjl9OwogCQkJCS8qIDAgdG8gMzEsICgwLjU5Vi00LjUyViBvciAwLjM4OVYtMi45OFYpICovCi1zdGF0aWMgaW50IG1pZGlbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAwfTsKK3N0YXRpYyBpbnQgbWlkaVtTTkRSVl9DQVJEU107CiBzdGF0aWMgaW50IHBjbV9jaGFubmVsc1tTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDJ9Owotc3RhdGljIGludCBlZmZlY3RbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAwfTsKK3N0YXRpYyBpbnQgZWZmZWN0W1NORFJWX0NBUkRTXTsKIAogI2lmZGVmIFNORFJWX1NUQgogI2RlZmluZSBQRlggImludGVyd2F2ZS1zdGI6ICIKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9vcGwzc2EyLmMgYi9zb3VuZC9pc2Evb3BsM3NhMi5jCmluZGV4IDZkODg5MDUuLjY0N2E5OTYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2lzYS9vcGwzc2EyLmMKKysrIGIvc291bmQvaXNhL29wbDNzYTIuYwpAQCAtNTksNyArNTksNyBAQAogc3RhdGljIGludCBpcnFbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9JUlE7CS8qIDAsMSwzLDUsOSwxMSwxMiwxNSAqLwogc3RhdGljIGludCBkbWExW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfRE1BOwkvKiAxLDMsNSw2LDcgKi8KIHN0YXRpYyBpbnQgZG1hMltTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0RNQTsJLyogMSwzLDUsNiw3ICovCi1zdGF0aWMgaW50IG9wbDNzYTNfeW1vZGVbU05EUlZfQ0FSRFNdID0geyBbMCAuLi4gKFNORFJWX0NBUkRTLTEpXSA9IDAgfTsgICAvKiAwLDEsMiwzICovIC8qU0wgQWRkZWQqLworc3RhdGljIGludCBvcGwzc2EzX3ltb2RlW1NORFJWX0NBUkRTXTsgICAvKiAwLDEsMiwzICovIC8qU0wgQWRkZWQqLwogCiBtb2R1bGVfcGFyYW1fYXJyYXkoaW5kZXgsIGludCwgTlVMTCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGluZGV4LCAiSW5kZXggdmFsdWUgZm9yIE9QTDMtU0Egc291bmRjYXJkLiIpOwpAQCAtMjIxLDcgKzIyMSw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hpcC0+cmVnX2xvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc25kX29wbDNzYTJfZGV0ZWN0KHN0cnVjdCBzbmRfb3BsM3NhMiAqY2hpcCkKK3N0YXRpYyBpbnQgX19kZXZpbml0IHNuZF9vcGwzc2EyX2RldGVjdChzdHJ1Y3Qgc25kX29wbDNzYTIgKmNoaXApCiB7CiAJc3RydWN0IHNuZF9jYXJkICpjYXJkOwogCXVuc2lnbmVkIGxvbmcgcG9ydDsKQEAgLTQ4OSw3ICs0ODksNyBAQAogCWNoaXAtPm1hc3Rlcl92b2x1bWUgPSBOVUxMOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzbmRfb3BsM3NhMl9taXhlcihzdHJ1Y3Qgc25kX29wbDNzYTIgKmNoaXApCitzdGF0aWMgaW50IF9fZGV2aW5pdCBzbmRfb3BsM3NhMl9taXhlcihzdHJ1Y3Qgc25kX29wbDNzYTIgKmNoaXApCiB7CiAJc3RydWN0IHNuZF9jYXJkICpjYXJkID0gY2hpcC0+Y2FyZDsKIAlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkMSwgaWQyOwpAQCAtNTgzLDggKzU4Myw4IEBACiAjZW5kaWYgLyogQ09ORklHX1BNICovCiAKICNpZmRlZiBDT05GSUdfUE5QCi1zdGF0aWMgaW50IF9faW5pdCBzbmRfb3BsM3NhMl9wbnAoaW50IGRldiwgc3RydWN0IHNuZF9vcGwzc2EyICpjaGlwLAotCQkJCSAgc3RydWN0IHBucF9kZXYgKnBkZXYpCitzdGF0aWMgaW50IF9fZGV2aW5pdCBzbmRfb3BsM3NhMl9wbnAoaW50IGRldiwgc3RydWN0IHNuZF9vcGwzc2EyICpjaGlwLAorCQkJCSAgICAgc3RydWN0IHBucF9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IHBucF9yZXNvdXJjZV90YWJsZSAqIGNmZzsKIAlpbnQgZXJyOwpAQCAtODYyLDcgKzg2Miw3IEBACiB9OwogI2VuZGlmIC8qIENPTkZJR19QTlAgKi8KIAotc3RhdGljIGludCBfX2luaXQgc25kX29wbDNzYTJfbm9ucG5wX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCitzdGF0aWMgaW50IF9fZGV2aW5pdCBzbmRfb3BsM3NhMl9ub25wbnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CiAJaW50IGVycjsKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9vcHRpOXh4L21pcm8uYyBiL3NvdW5kL2lzYS9vcHRpOXh4L21pcm8uYwppbmRleCBlNmJmY2Y3Li4yODM4MTdmIDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evb3B0aTl4eC9taXJvLmMKKysrIGIvc291bmQvaXNhL29wdGk5eHgvbWlyby5jCkBAIC05NjcsNyArOTY3LDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcobWlyby0+Y2FyZCwgIm1pcm8iLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIG1pcm8sIDEwMjQsIHNuZF9taXJvX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgbWlybywgc25kX21pcm9fcHJvY19yZWFkKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9zYi9lbXU4MDAwLmMgYi9zb3VuZC9pc2Evc2IvZW11ODAwMC5jCmluZGV4IGMwYjhkNjEuLjY1ODE3OWUgMTAwNjQ0Ci0tLSBhL3NvdW5kL2lzYS9zYi9lbXU4MDAwLmMKKysrIGIvc291bmQvaXNhL3NiL2VtdTgwMDAuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAKIC8qCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAorc3RhdGljIHZvaWQgX19kZXZpbml0CiBzbmRfZW11ODAwMF9yZWFkX3dhaXQoc3RydWN0IHNuZF9lbXU4MDAwICplbXUpCiB7CiAJd2hpbGUgKChFTVU4MDAwX1NNQUxSX1JFQUQoZW11KSAmIDB4ODAwMDAwMDApICE9IDApIHsKQEAgLTE0Myw3ICsxNDMsNyBAQAogCiAvKgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdAogc25kX2VtdTgwMDBfd3JpdGVfd2FpdChzdHJ1Y3Qgc25kX2VtdTgwMDAgKmVtdSkKIHsKIAl3aGlsZSAoKEVNVTgwMDBfU01BTFdfUkVBRChlbXUpICYgMHg4MDAwMDAwMCkgIT0gMCkgewpAQCAtMTU2LDcgKzE1Niw3IEBACiAvKgogICogZGV0ZWN0IGEgY2FyZCBhdCB0aGUgZ2l2ZW4gcG9ydAogICovCi1zdGF0aWMgaW50IF9faW5pdAorc3RhdGljIGludCBfX2RldmluaXQKIHNuZF9lbXU4MDAwX2RldGVjdChzdHJ1Y3Qgc25kX2VtdTgwMDAgKmVtdSkKIHsKIAkvKiBJbml0aWFsaXNlICovCkBAIC0xODIsNyArMTgyLDcgQEAKIC8qCiAgKiBpbnRpYWlsaXplIGF1ZGlvIGNoYW5uZWxzCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAorc3RhdGljIHZvaWQgX19kZXZpbml0CiBpbml0X2F1ZGlvKHN0cnVjdCBzbmRfZW11ODAwMCAqZW11KQogewogCWludCBjaDsKQEAgLTIyMyw3ICsyMjMsNyBAQAogLyoKICAqIGluaXRpYWxpemUgRE1BIGFkZHJlc3MKICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2RldmluaXQKIGluaXRfZG1hKHN0cnVjdCBzbmRfZW11ODAwMCAqZW11KQogewogCUVNVTgwMDBfU01BTFJfV1JJVEUoZW11LCAwKTsKQEAgLTMyNyw3ICszMjcsNyBAQAogICogVGFrZW4gZnJvbSB0aGUgb3NzIGRyaXZlciwgbm90IG9idmlvdXMgZnJvbSB0aGUgZG9jIGhvdyB0aGlzCiAgKiBpcyBtZWFudCB0byB3b3JrCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAorc3RhdGljIHZvaWQgX19kZXZpbml0CiBzZW5kX2FycmF5KHN0cnVjdCBzbmRfZW11ODAwMCAqZW11LCB1bnNpZ25lZCBzaG9ydCAqZGF0YSwgaW50IHNpemUpCiB7CiAJaW50IGk7CkBAIC0zNDksNyArMzQ5LDcgQEAKICAqIFNlbmQgaW5pdGlhbGl6YXRpb24gYXJyYXlzIHRvIHN0YXJ0IHVwLCB0aGlzIGp1c3QgZm9sbG93cyB0aGUKICAqIGluaXRpYWxpc2F0aW9uIHNlcXVlbmNlIGluIHRoZSBhZGlwLgogICovCi1zdGF0aWMgdm9pZCBfX2luaXQKK3N0YXRpYyB2b2lkIF9fZGV2aW5pdAogaW5pdF9hcnJheXMoc3RydWN0IHNuZF9lbXU4MDAwICplbXUpCiB7CiAJc2VuZF9hcnJheShlbXUsIGluaXQxLCBBUlJBWV9TSVpFKGluaXQxKS80KTsKQEAgLTM3NSw3ICszNzUsNyBAQAogICogc2VlbXMgdGhhdCB0aGUgb25seSB3YXkgdG8gZG8gdGhpcyBpcyB0byB1c2UgdGhlIG9uZSBjaGFubmVsIGFuZCBrZWVwCiAgKiByZWFsbG9jYXRpbmcgYmV0d2VlbiByZWFkIGFuZCB3cml0ZS4KICAqLwotc3RhdGljIHZvaWQgX19pbml0CitzdGF0aWMgdm9pZCBfX2RldmluaXQKIHNpemVfZHJhbShzdHJ1Y3Qgc25kX2VtdTgwMDAgKmVtdSkKIHsKIAlpbnQgaSwgc2l6ZTsKQEAgLTUwMCw3ICs1MDAsNyBAQAogLyoKICAqIFRoZSBtYWluIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuCiAgKi8KLXN0YXRpYyB2b2lkIF9faW5pdAorc3RhdGljIHZvaWQgX19kZXZpbml0CiBzbmRfZW11ODAwMF9pbml0X2h3KHN0cnVjdCBzbmRfZW11ODAwMCAqZW11KQogewogCWludCBpOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAKIC8qCiAgKiBjcmVhdGUgYW5kIGF0dGFjaCBtaXhlciBlbGVtZW50cyBmb3IgV2F2ZVRhYmxlIHRyZWJsZS9iYXNzIGNvbnRyb2xzCiAgKi8KLXN0YXRpYyBpbnQgX19pbml0CitzdGF0aWMgaW50IF9fZGV2aW5pdAogc25kX2VtdTgwMDBfY3JlYXRlX21peGVyKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHNuZF9lbXU4MDAwICplbXUpCiB7CiAJaW50IGksIGVyciA9IDA7CkBAIC0xMDY5LDcgKzEwNjksNyBAQAogLyoKICAqIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIGVtdTgwMDAgc3ludGggZGV2aWNlLgogICovCi1pbnQgX19pbml0CitpbnQgX19kZXZpbml0CiBzbmRfZW11ODAwMF9uZXcoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBpbnQgaW5kZXgsIGxvbmcgcG9ydCwgaW50IHNlcV9wb3J0cywKIAkJc3RydWN0IHNuZF9zZXFfZGV2aWNlICoqYXdlX3JldCkKIHsKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9zYi9lbXU4MDAwX3BhdGNoLmMgYi9zb3VuZC9pc2Evc2IvZW11ODAwMF9wYXRjaC5jCmluZGV4IDgwYjFjZjguLjFiZTE2YzkgMTAwNjQ0Ci0tLSBhL3NvdW5kL2lzYS9zYi9lbXU4MDAwX3BhdGNoLmMKKysrIGIvc291bmQvaXNhL3NiL2VtdTgwMDBfcGF0Y2guYwpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KIAotc3RhdGljIGludCBlbXU4MDAwX3Jlc2V0X2FkZHIgPSAwOworc3RhdGljIGludCBlbXU4MDAwX3Jlc2V0X2FkZHI7CiBtb2R1bGVfcGFyYW0oZW11ODAwMF9yZXNldF9hZGRyLCBpbnQsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhlbXU4MDAwX3Jlc2V0X2FkZHIsICJyZXNldCB3cml0ZSBhZGRyZXNzIGF0IGVhY2ggdGltZSAobWFrZXMgc2xvd2Rvd24pIik7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9zYi9zYjE2LmMgYi9zb3VuZC9pc2Evc2Ivc2IxNi5jCmluZGV4IDYzMzNmOTAuLjdmN2YwNWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2lzYS9zYi9zYjE2LmMKKysrIGIvc291bmQvaXNhL3NiL3NiMTYuYwpAQCAtODUsNyArODUsNyBAQAogc3RhdGljIGludCBkbWExNltTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0RNQTsJLyogNSw2LDcgKi8KIHN0YXRpYyBpbnQgbWljX2FnY1tTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDF9OwogI2lmZGVmIENPTkZJR19TTkRfU0IxNl9DU1AKLXN0YXRpYyBpbnQgY3NwW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMH07CitzdGF0aWMgaW50IGNzcFtTTkRSVl9DQVJEU107CiAjZW5kaWYKICNpZmRlZiBTTkRSVl9TQkFXRV9FTVU4MDAwCiBzdGF0aWMgaW50IHNlcV9wb3J0c1tTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDR9OwpkaWZmIC0tZ2l0IGEvc291bmQvaXNhL3NiL3NiMTZfY3NwLmMgYi9zb3VuZC9pc2Evc2Ivc2IxNl9jc3AuYwppbmRleCA5NzAzYzY4Li5mY2Q2MzgwIDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evc2Ivc2IxNl9jc3AuYworKysgYi9zb3VuZC9pc2Evc2Ivc2IxNl9jc3AuYwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCXNwcmludGYobmFtZSwgImNzcEQlZCIsIGRldmljZSk7CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcocC0+Y2hpcC0+Y2FyZCwgbmFtZSwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBwLCAxMDI0LCBpbmZvX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHAsIGluZm9fcmVhZCk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9zYi9zYjhfbWlkaS5jIGIvc291bmQvaXNhL3NiL3NiOF9taWRpLmMKaW5kZXggYzU0OWFjZS4uMGI2N2VkZCAxMDA2NDQKLS0tIGEvc291bmQvaXNhL3NiL3NiOF9taWRpLmMKKysrIGIvc291bmQvaXNhL3NiL3NiOF9taWRpLmMKQEAgLTMyLDIwICszMiwyMiBAQAogI2luY2x1ZGUgPHNvdW5kL2NvcmUuaD4KICNpbmNsdWRlIDxzb3VuZC9zYi5oPgogCi0vKgogCi0gKi8KLQotaXJxcmV0dXJuX3Qgc25kX3NiOGRzcF9taWRpX2ludGVycnVwdChzdHJ1Y3Qgc25kX3NiICogY2hpcCkKK2lycXJldHVybl90IHNuZF9zYjhkc3BfbWlkaV9pbnRlcnJ1cHQoc3RydWN0IHNuZF9zYiAqY2hpcCkKIHsKIAlzdHJ1Y3Qgc25kX3Jhd21pZGkgKnJtaWRpOwogCWludCBtYXggPSA2NDsKIAljaGFyIGJ5dGU7CiAKLQlpZiAoY2hpcCA9PSBOVUxMIHx8IChybWlkaSA9IGNoaXAtPnJtaWRpKSA9PSBOVUxMKSB7CisJaWYgKCFjaGlwKQorCQlyZXR1cm4gSVJRX05PTkU7CisJCisJcm1pZGkgPSBjaGlwLT5ybWlkaTsKKwlpZiAoIXJtaWRpKSB7CiAJCWluYihTQlAoY2hpcCwgREFUQV9BVkFJTCkpOwkvKiBhY2sgaW50ZXJydXB0ICovCiAJCXJldHVybiBJUlFfTk9ORTsKIAl9CisKIAlzcGluX2xvY2soJmNoaXAtPm1pZGlfaW5wdXRfbG9jayk7CiAJd2hpbGUgKG1heC0tID4gMCkgewogCQlpZiAoaW5iKFNCUChjaGlwLCBEQVRBX0FWQUlMKSkgJiAweDgwKSB7CkBAIC01OSwxMCArNjEsNiBAQAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotLyoKLQotICovCi0KIHN0YXRpYyBpbnQgc25kX3NiOGRzcF9taWRpX2lucHV0X29wZW4oc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yNTIsMTAgKzI1MCw2IEBACiAJCXNuZF9zYjhkc3BfbWlkaV9vdXRwdXRfd3JpdGUoc3Vic3RyZWFtKTsKIH0KIAotLyoKLQotICovCi0KIHN0YXRpYyBzdHJ1Y3Qgc25kX3Jhd21pZGlfb3BzIHNuZF9zYjhkc3BfbWlkaV9vdXRwdXQgPQogewogCS5vcGVuID0JCXNuZF9zYjhkc3BfbWlkaV9vdXRwdXRfb3BlbiwKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS9zc2NhcGUuYyBiL3NvdW5kL2lzYS9zc2NhcGUuYwppbmRleCBkMmE4NTZmLi4yNzI3MWM5IDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evc3NjYXBlLmMKKysrIGIvc291bmQvaXNhL3NzY2FwZS5jCkBAIC04OTcsMTAgKzg5Nyw5IEBACiAJc3RydWN0IHNuZF9yYXdtaWRpICpyYXdtaWRpOwogCWludCBlcnI7CiAKLSNkZWZpbmUgTVBVNDAxX1NIQVJFX0hBUkRXQVJFICAxCiAJaWYgKChlcnIgPSBzbmRfbXB1NDAxX3VhcnRfbmV3KGNhcmQsIGRldm51bSwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBVNDAxX0hXX01QVTQwMSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwgTVBVNDAxX1NIQVJFX0hBUkRXQVJFLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LCBNUFU0MDFfSU5GT19JTlRFR1JBVEVELAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcnEsIFNBX0lOVEVSUlVQVCwKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhd21pZGkpKSA9PSAwKSB7CiAJCXN0cnVjdCBzbmRfbXB1NDAxICptcHUgPSAoc3RydWN0IHNuZF9tcHU0MDEgKikgcmF3bWlkaS0+cHJpdmF0ZV9kYXRhOwpkaWZmIC0tZ2l0IGEvc291bmQvaXNhL3dhdmVmcm9udC93YXZlZnJvbnQuYyBiL3NvdW5kL2lzYS93YXZlZnJvbnQvd2F2ZWZyb250LmMKaW5kZXggN2FlODZmOC4uOWViMjcwOCAxMDA2NDQKLS0tIGEvc291bmQvaXNhL3dhdmVmcm9udC93YXZlZnJvbnQuYworKysgYi9zb3VuZC9pc2Evd2F2ZWZyb250L3dhdmVmcm9udC5jCkBAIC01MCw3ICs1MCw3IEBACiBzdGF0aWMgbG9uZyBmbV9wb3J0W1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfUE9SVDsJICAgIC8qIFBuUCBzZXR1cCAqLwogc3RhdGljIGludCBkbWExW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfRE1BOwkgICAgLyogMCwxLDMsNSw2LDcgKi8KIHN0YXRpYyBpbnQgZG1hMltTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0RNQTsJICAgIC8qIDAsMSwzLDUsNiw3ICovCi1zdGF0aWMgaW50IHVzZV9jczQyMzJfbWlkaVtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9OyAKK3N0YXRpYyBpbnQgdXNlX2NzNDIzMl9taWRpW1NORFJWX0NBUkRTXTsKIAogbW9kdWxlX3BhcmFtX2FycmF5KGluZGV4LCBpbnQsIE5VTEwsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciBXYXZlRnJvbnQgc291bmRjYXJkLiIpOwpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL2F1MTU1MF9hYzk3LmMgYi9zb3VuZC9vc3MvYXUxNTUwX2FjOTcuYwppbmRleCBjMTE2OGZhLi45MDExYWJlIDEwMDY0NAotLS0gYS9zb3VuZC9vc3MvYXUxNTUwX2FjOTcuYworKysgYi9zb3VuZC9vc3MvYXUxNTUwX2FjOTcuYwpAQCAtNTcsOSArNTcsOSBAQAogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8YXNtL2hhcmRpcnEuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC1hdTF4MDAvYXUxMDAwLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gtYXUxeDAwL2F1MXh4eF9wc2MuaD4KICNpbmNsdWRlIDxhc20vbWFjaC1hdTF4MDAvYXUxeHh4X2RiZG1hLmg+CisjaW5jbHVkZSA8YXNtL21hY2gtYXUxeDAwL2F1MXh4eC5oPgogCiAjdW5kZWYgT1NTX0RPQ1VNRU5URURfTUlYRVJfU0VNQU5USUNTCiAKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9jczQ2eHguYyBiL3NvdW5kL29zcy9jczQ2eHguYwppbmRleCA1Mzg4MWJjLi45OTRjNzFlIDEwMDY0NAotLS0gYS9zb3VuZC9vc3MvY3M0Nnh4LmMKKysrIGIvc291bmQvb3NzL2NzNDZ4eC5jCkBAIC0xNDcsNyArMTQ3LDcgQEAKICAqIHRoYXQgc2hvdWxkIGJlIHByaW50ZWQgb24gYW55IHJlbGVhc2VkIGRyaXZlci4KICAqLwogI2lmIENTREVCVUcKLSNkZWZpbmUgQ1NfREJHT1VUKG1hc2ssbGV2ZWwseCkgaWYoKGNzX2RlYnVnbGV2ZWwgPj0gKGxldmVsKSkgJiYgKChtYXNrKSAmIGNzX2RlYnVnbWFzaykpIHt4O30gCisjZGVmaW5lIENTX0RCR09VVChtYXNrLGxldmVsLHgpIGlmICgoY3NfZGVidWdsZXZlbCA+PSAobGV2ZWwpKSAmJiAoKG1hc2spICYgY3NfZGVidWdtYXNrKSkge3g7fQogI2Vsc2UKICNkZWZpbmUgQ1NfREJHT1VUKG1hc2ssbGV2ZWwseCkgCiAjZW5kaWYKQEAgLTE3NSwxOSArMTc1LDE5IEBACiAjZGVmaW5lIENTX0lPQ1RMX0NNRF9SRVNVTUUJMHgyCS8vIHJlc3VtZQogCiAjaWYgQ1NERUJVRwotc3RhdGljIHVuc2lnbmVkIGxvbmcgY3NfZGVidWdsZXZlbD0xOwkJCS8qIGxldmVscyByYW5nZSBmcm9tIDEtOSAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcgY3NfZGVidWdsZXZlbCA9IDE7CQkJLyogbGV2ZWxzIHJhbmdlIGZyb20gMS05ICovCiBtb2R1bGVfcGFyYW0oY3NfZGVidWdsZXZlbCwgdWxvbmcsIDA2NDQpOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgY3NfZGVidWdtYXNrPUNTX0lOSVQgfCBDU19FUlJPUjsJLyogdXNlIENTX0RCR09VVCB3aXRoIHZhcmlvdXMgbWFzayB2YWx1ZXMgKi8KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGNzX2RlYnVnbWFzayA9IENTX0lOSVQgfCBDU19FUlJPUjsJLyogdXNlIENTX0RCR09VVCB3aXRoIHZhcmlvdXMgbWFzayB2YWx1ZXMgKi8KIG1vZHVsZV9wYXJhbShjc19kZWJ1Z21hc2ssIHVsb25nLCAwNjQ0KTsKICNlbmRpZgogc3RhdGljIHVuc2lnbmVkIGxvbmcgaGVyY3VsZXNfZWdwaW9fZGlzYWJsZTsgIC8qIGlmIG5vbi16ZXJvIHNldCBhbGwgRUdQSU8gdG8gMCAqLwogbW9kdWxlX3BhcmFtKGhlcmN1bGVzX2VncGlvX2Rpc2FibGUsIHVsb25nLCAwKTsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGluaXRkZWxheT03MDA7ICAvKiBQTSBkZWxheSBpbiBtaWxsaXNlY3MgKi8KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGluaXRkZWxheSA9IDcwMDsgIC8qIFBNIGRlbGF5IGluIG1pbGxpc2VjcyAqLwogbW9kdWxlX3BhcmFtKGluaXRkZWxheSwgdWxvbmcsIDApOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgcG93ZXJkb3duPS0xOyAgLyogdHVybiBvbi9vZmYgcG93ZXJkb3duIHByb2Nlc3NpbmcgaW4gZHJpdmVyICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwb3dlcmRvd24gPSAtMTsgIC8qIHR1cm4gb24vb2ZmIHBvd2VyZG93biBwcm9jZXNzaW5nIGluIGRyaXZlciAqLwogbW9kdWxlX3BhcmFtKHBvd2VyZG93biwgdWxvbmcsIDApOwogI2RlZmluZSBETUFCVUZfREVGQVVMVE9SREVSIDMKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGRlZmF1bHRvcmRlcj1ETUFCVUZfREVGQVVMVE9SREVSOworc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVmYXVsdG9yZGVyID0gRE1BQlVGX0RFRkFVTFRPUkRFUjsKIG1vZHVsZV9wYXJhbShkZWZhdWx0b3JkZXIsIHVsb25nLCAwKTsKIAogc3RhdGljIGludCBleHRlcm5hbF9hbXA7CkBAIC0yMDAsOCArMjAwLDggQEAKICogcG93ZXJkb3duLiBhbHNvIHNldCB0aGlua3BhZCB0byAxIHRvIGRpc2FibGUgcG93ZXJkb3duLCAKICogYnV0IGFsc28gdG8gZW5hYmxlIHRoZSBjbGtydW4gZnVuY3Rpb25hbGl0eS4KICovCi1zdGF0aWMgdW5zaWduZWQgY3NfcG93ZXJkb3duPTE7Ci1zdGF0aWMgdW5zaWduZWQgY3NfbGFwdG9wX3dhaXQ9MTsKK3N0YXRpYyB1bnNpZ25lZCBjc19wb3dlcmRvd24gPSAxOworc3RhdGljIHVuc2lnbmVkIGNzX2xhcHRvcF93YWl0ID0gMTsKIAogLyogQW4gaW5zdGFuY2Ugb2YgdGhlIDQ2MTAgY2hhbm5lbCAqLwogc3RydWN0IGNzX2NoYW5uZWwgCkBAIC0zMTksNyArMzE5LDcgQEAKIAlhdG9taWNfdCBtaXhlcl91c2VfY250OwogCiAJLyogUENJIGRldmljZSBzdHVmZiAqLwotCXN0cnVjdCBwY2lfZGV2ICogcGNpX2RldjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAKIAl1bnNpZ25lZCBpbnQgcGN0bCwgY2N0bDsJLyogSGFyZHdhcmUgRE1BIGZsYWcgc2V0cyAqLwpAQCAtMzg0LDcgKzM4NCw3IEBACiBzdGF0aWMgaW50IGNzX29wZW5fbWl4ZGV2KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKIHN0YXRpYyBpbnQgY3NfcmVsZWFzZV9taXhkZXYoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwogc3RhdGljIGludCBjc19pb2N0bF9taXhkZXYoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCi0JCQkJdW5zaWduZWQgbG9uZyBhcmcpOworCQkJdW5zaWduZWQgbG9uZyBhcmcpOwogc3RhdGljIGludCBjc19oYXJkd2FyZV9pbml0KHN0cnVjdCBjc19jYXJkICpjYXJkKTsKIHN0YXRpYyBpbnQgY3M0Nnh4X3Bvd2VydXAoc3RydWN0IGNzX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCB0eXBlKTsKIHN0YXRpYyBpbnQgY3M0NjF4X3Bvd2VyZG93bihzdHJ1Y3QgY3NfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IHR5cGUsIGludCBzdXNwZW5kZmxhZyk7CkBAIC00MjMsOCArNDIzLDcgQEAKICAgICAgICAgICAgICAgICBbU09VTkRfTUlYRVJfVk9MVU1FXSAgPSA5ICAgIC8qIE1hc3RlciBWb2x1bWUgKi8KICAgICAgICAgfTsKICAgICAgICAgCi0gICAgc3dpdGNoKHgpIAotICAgIHsKKyAgICBzd2l0Y2ggKHgpIHsKIAljYXNlIFNPVU5EX01JWEVSX0NTX0dFVERCR01BU0s6CiAJCUNTX0RCR09VVChDU19JT0NUTCwgNCwgcHJpbnRrKCJTT1VORF9NSVhFUl9DU19HRVREQkdNQVNLOiAiKSApOwogCQlicmVhazsKQEAgLTUyMSw3ICs1MjAsNiBAQAogICAgICAgICBjYXNlIFNPVU5EX1BDTV9SRUFEX0ZJTFRFUjoKIAkJQ1NfREJHT1VUKENTX0lPQ1RMLCA0LCBwcmludGsoIlNPVU5EX1BDTV9SRUFEX0ZJTFRFUjogIikgKTsKIAkJYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTT1VORF9NSVhFUl9QUklWQVRFMToKIAkJQ1NfREJHT1VUKENTX0lPQ1RMLCA0LCBwcmludGsoIlNPVU5EX01JWEVSX1BSSVZBVEUxOiAiKSApOwogCQlicmVhazsKQEAgLTU0MywxMCArNTQxLDggQEAKICAgICAgICAgY2FzZSBTT1VORF9PTERfTUlYRVJfSU5GTzoKIAkJQ1NfREJHT1VUKENTX0lPQ1RMLCA0LCBwcmludGsoIlNPVU5EX09MRF9NSVhFUl9JTkZPOiAiKSApOwogCQlicmVhazsKLQogCWRlZmF1bHQ6Ci0JCXN3aXRjaCAoX0lPQ19OUih4KSkgCi0JCXsKKwkJc3dpdGNoIChfSU9DX05SKHgpKSB7CiAJCQljYXNlIFNPVU5EX01JWEVSX1ZPTFVNRToKIAkJCQlDU19EQkdPVVQoQ1NfSU9DVEwsIDQsIHByaW50aygiU09VTkRfTUlYRVJfVk9MVU1FOiAiKSApOwogCQkJCWJyZWFrOwpAQCAtNTc5LDE0ICs1NzUsMTEgQEAKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJaSA9IF9JT0NfTlIoeCk7Ci0JCQkJaWYgKGkgPj0gU09VTkRfTUlYRVJfTlJERVZJQ0VTIHx8ICEodmlkeCA9IG1peHRhYmxlMVtpXSkpCi0JCQkJeworCQkJCWlmIChpID49IFNPVU5EX01JWEVSX05SREVWSUNFUyB8fCAhKHZpZHggPSBtaXh0YWJsZTFbaV0pKSB7CiAJCQkJCUNTX0RCR09VVChDU19JT0NUTCwgNCwgcHJpbnRrKCJVTktOT1dOIElPQ1RMOiAweCUuOHggTlI9JWQgIix4LGkpICk7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7CisJCQkJfSBlbHNlIHsKIAkJCQkJQ1NfREJHT1VUKENTX0lPQ1RMLCA0LCBwcmludGsoIlNPVU5EX01JWEVSX0lPQ1RMIEFDOXg6IDB4JS44eCBOUj0lZCAiLAotCQkJCQkJCXgsaSkgKTsKKwkJCQkJCQl4LGkpKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCX0KQEAgLTYwMSwyMiArNTk0LDIyIEBACiAKIHN0YXRpYyB2b2lkIGNzNDYxeF9wb2tlKHN0cnVjdCBjc19jYXJkICpjb2RlYywgdW5zaWduZWQgbG9uZyByZWcsIHVuc2lnbmVkIGludCB2YWwpCiB7Ci0Jd3JpdGVsKHZhbCwgY29kZWMtPmJhMS5pZHhbKHJlZyA+PiAxNikgJiAzXSsocmVnJjB4ZmZmZikpOworCXdyaXRlbCh2YWwsIGNvZGVjLT5iYTEuaWR4WyhyZWcgPj4gMTYpICYgM10gKyAocmVnICYgMHhmZmZmKSk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY3M0NjF4X3BlZWsoc3RydWN0IGNzX2NhcmQgKmNvZGVjLCB1bnNpZ25lZCBsb25nIHJlZykKIHsKLQlyZXR1cm4gcmVhZGwoY29kZWMtPmJhMS5pZHhbKHJlZyA+PiAxNikgJiAzXSsocmVnJjB4ZmZmZikpOworCXJldHVybiByZWFkbChjb2RlYy0+YmExLmlkeFsocmVnID4+IDE2KSAmIDNdICsgKHJlZyAmIDB4ZmZmZikpOwogfQogCiBzdGF0aWMgdm9pZCBjczQ2MXhfcG9rZUJBMChzdHJ1Y3QgY3NfY2FyZCAqY29kZWMsIHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKQogewotCXdyaXRlbCh2YWwsIGNvZGVjLT5iYTArcmVnKTsKKwl3cml0ZWwodmFsLCBjb2RlYy0+YmEwICsgcmVnKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBjczQ2MXhfcGVla0JBMChzdHJ1Y3QgY3NfY2FyZCAqY29kZWMsIHVuc2lnbmVkIGxvbmcgcmVnKQogewotCXJldHVybiByZWFkbChjb2RlYy0+YmEwK3JlZyk7CisJcmV0dXJuIHJlYWRsKGNvZGVjLT5iYTAgKyByZWcpOwogfQogCiAKQEAgLTYyNSwyNiArNjE4LDI2IEBACiAKIHN0YXRpYyBzdHJ1Y3QgY3NfY2hhbm5lbCAqY3NfYWxsb2NfcGNtX2NoYW5uZWwoc3RydWN0IGNzX2NhcmQgKmNhcmQpCiB7Ci0JaWYoY2FyZC0+Y2hhbm5lbFsxXS51c2VkPT0xKQorCWlmIChjYXJkLT5jaGFubmVsWzFdLnVzZWQgPT0gMSkKIAkJcmV0dXJuIE5VTEw7Ci0JY2FyZC0+Y2hhbm5lbFsxXS51c2VkPTE7Ci0JY2FyZC0+Y2hhbm5lbFsxXS5udW09MTsKKwljYXJkLT5jaGFubmVsWzFdLnVzZWQgPSAxOworCWNhcmQtPmNoYW5uZWxbMV0ubnVtID0gMTsKIAlyZXR1cm4gJmNhcmQtPmNoYW5uZWxbMV07CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgY3NfY2hhbm5lbCAqY3NfYWxsb2NfcmVjX3BjbV9jaGFubmVsKHN0cnVjdCBjc19jYXJkICpjYXJkKQogewotCWlmKGNhcmQtPmNoYW5uZWxbMF0udXNlZD09MSkKKwlpZiAoY2FyZC0+Y2hhbm5lbFswXS51c2VkID09IDEpCiAJCXJldHVybiBOVUxMOwotCWNhcmQtPmNoYW5uZWxbMF0udXNlZD0xOwotCWNhcmQtPmNoYW5uZWxbMF0ubnVtPTA7CisJY2FyZC0+Y2hhbm5lbFswXS51c2VkID0gMTsKKwljYXJkLT5jaGFubmVsWzBdLm51bSA9IDA7CiAJcmV0dXJuICZjYXJkLT5jaGFubmVsWzBdOwogfQogCiBzdGF0aWMgdm9pZCBjc19mcmVlX3BjbV9jaGFubmVsKHN0cnVjdCBjc19jYXJkICpjYXJkLCBpbnQgY2hhbm5lbCkKIHsKIAljYXJkLT5jaGFubmVsW2NoYW5uZWxdLnN0YXRlID0gTlVMTDsKLQljYXJkLT5jaGFubmVsW2NoYW5uZWxdLnVzZWQ9MDsKKwljYXJkLT5jaGFubmVsW2NoYW5uZWxdLnVzZWQgPSAwOwogfQogCiAvKgpAQCAtNjU1LDE1ICs2NDgsMTUgQEAKICAqLwogc3RhdGljIHZvaWQgY3Nfc2V0X2Rpdmlzb3Ioc3RydWN0IGRtYWJ1ZiAqZG1hYnVmKQogewotCWlmKGRtYWJ1Zi0+dHlwZSA9PSBDU19UWVBFX0RBQykKKwlpZiAoZG1hYnVmLT50eXBlID09IENTX1RZUEVfREFDKQogCQlkbWFidWYtPmRpdmlzb3IgPSAxOwotCWVsc2UgaWYoICEoZG1hYnVmLT5mbXQgJiBDU19GTVRfU1RFUkVPKSAmJiAKKwllbHNlIGlmICghKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UX1NURVJFTykgJiYKIAkgICAgKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UXzE2QklUKSkKIAkJZG1hYnVmLT5kaXZpc29yID0gMjsKLQllbHNlIGlmKCAoZG1hYnVmLT5mbXQgJiBDU19GTVRfU1RFUkVPKSAmJiAKKwllbHNlIGlmICgoZG1hYnVmLT5mbXQgJiBDU19GTVRfU1RFUkVPKSAmJgogCSAgICAhKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UXzE2QklUKSkKIAkJZG1hYnVmLT5kaXZpc29yID0gMjsKLQllbHNlIGlmKCAhKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UX1NURVJFTykgJiYgCisJZWxzZSBpZiAoIShkbWFidWYtPmZtdCAmIENTX0ZNVF9TVEVSRU8pICYmCiAJICAgICEoZG1hYnVmLT5mbXQgJiBDU19GTVRfMTZCSVQpKQogCQlkbWFidWYtPmRpdmlzb3IgPSA0OwogCWVsc2UKQEAgLTY4MCwxMyArNjczLDEyIEBACiAqLwogc3RhdGljIHZvaWQgY3NfbXV0ZShzdHJ1Y3QgY3NfY2FyZCAqY2FyZCwgaW50IHN0YXRlKSAKIHsKLQlzdHJ1Y3QgYWM5N19jb2RlYyAqZGV2PWNhcmQtPmFjOTdfY29kZWNbMF07CisJc3RydWN0IGFjOTdfY29kZWMgKmRldiA9IGNhcmQtPmFjOTdfY29kZWNbMF07CiAKIAlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDIsIHByaW50ayhLRVJOX0lORk8gImNzNDZ4eDogY3NfbXV0ZSgpKyAlc1xuIiwKLQkJKHN0YXRlID09IENTX1RSVUUpID8gIk11dGluZyIgOiAiVW5NdXRpbmciKSApOworCQkoc3RhdGUgPT0gQ1NfVFJVRSkgPyAiTXV0aW5nIiA6ICJVbk11dGluZyIpKTsKIAotCWlmKHN0YXRlID09IENTX1RSVUUpCi0JeworCWlmIChzdGF0ZSA9PSBDU19UUlVFKSB7CiAJLyoKIAkqIGZpeCBwb3BzIHdoZW4gcG93ZXJpbmcgdXAgb24gdGhpbmtwYWRzCiAJKi8KQEAgLTcwMyw5ICs2OTUsNyBAQAogCQljc19hYzk3X3NldChkZXYsICh1OClCQTBfQUM5N19IRUFEUEhPTkVfVk9MVU1FLCAweDgwMDApOwogCQljc19hYzk3X3NldChkZXYsICh1OClCQTBfQUM5N19NQVNURVJfVk9MVU1FX01PTk8sIDB4ODAwMCk7CiAJCWNzX2FjOTdfc2V0KGRldiwgKHU4KUJBMF9BQzk3X1BDTV9PVVRfVk9MVU1FLCAweDgwMDApOwotCX0KLQllbHNlCi0JeworCX0gZWxzZSB7CiAJCWNzX2FjOTdfc2V0KGRldiwgKHU4KUJBMF9BQzk3X01BU1RFUl9WT0xVTUUsIGNhcmQtPnBtLnUzMkFDOTdfbWFzdGVyX3ZvbHVtZSk7CiAJCWNzX2FjOTdfc2V0KGRldiwgKHU4KUJBMF9BQzk3X0hFQURQSE9ORV9WT0xVTUUsIGNhcmQtPnBtLnUzMkFDOTdfaGVhZHBob25lX3ZvbHVtZSk7CiAJCWNzX2FjOTdfc2V0KGRldiwgKHU4KUJBMF9BQzk3X01BU1RFUl9WT0xVTUVfTU9OTywgY2FyZC0+cG0udTMyQUM5N19tYXN0ZXJfdm9sdW1lX21vbm8pOwpAQCAtNzU3LDcgKzc0Nyw2IEBACiAJLyoKIAkgKiAgRmlsbCBpbiB0aGUgU2FtcGxlUmF0ZUNvbnZlcnRlciBjb250cm9sIGJsb2NrLgogCSAqLwotCSAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmc3RhdGUtPmNhcmQtPmxvY2ssIGZsYWdzKTsKIAljczQ2MXhfcG9rZShzdGF0ZS0+Y2FyZCwgQkExX1BTUkMsCiAJICAoKGNvcnJlY3Rpb25QZXJTZWMgPDwgMTYpICYgMHhGRkZGMDAwMCkgfCAoY29ycmVjdGlvblBlckdPRiAmIDB4RkZGRikpOwpAQCAtNzcwLDcgKzc1OSw3IEBACiB9CiAKIC8qIHNldCByZWNvcmRpbmcgc2FtcGxlIHJhdGUgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgY3Nfc2V0X2FkY19yYXRlKHN0cnVjdCBjc19zdGF0ZSAqIHN0YXRlLCB1bnNpZ25lZCBpbnQgcmF0ZSkKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY3Nfc2V0X2FkY19yYXRlKHN0cnVjdCBjc19zdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCByYXRlKQogewogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCXN0cnVjdCBjc19jYXJkICpjYXJkID0gc3RhdGUtPmNhcmQ7CkBAIC04MTUsNyArODA0LDYgQEAKIAkgKiAJICAgIGRpdmlkZW5kOnJlbWFpbmRlcih1bE90aGVyIC8gR09GX1BFUl9TRUMpCiAJICogICAgIGluaXRpYWxEZWxheSA9IGRpdmlkZW5kKCgoMjQgKiBGcyxpbikgKyBGcyxvdXQgLSAxKSAvIEZzLG91dCkKIAkgKi8KLQogCXRtcDEgPSByYXRlIDw8IDE2OwogCWNvZWZmSW5jciA9IHRtcDEgLyA0ODAwMDsKIAl0bXAxIC09IGNvZWZmSW5jciAqIDQ4MDAwOwpAQCAtODkxLDcgKzg3OSw3IEBACiAKIAlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDIsIHByaW50aygiY3M0Nnh4OiBjc19wbGF5X3NldHVwKCkrXG4iKSApOwogICAgICAgICBjczQ2MXhfcG9rZShjYXJkLCBCQTFfUFZPTCwgMHg4MDAwODAwMCk7Ci0gICAgICAgIGlmKCFkbWFidWYtPlNHb2spCisgICAgICAgIGlmICghZG1hYnVmLT5TR29rKQogICAgICAgICAgICAgICAgY3M0NjF4X3Bva2UoY2FyZCwgQkExX1BCQSwgdmlydF90b19idXMoZG1hYnVmLT5wYnVmKSk7CiAgICAgCiAgICAgICAgIENvdW50ID0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC04OTksMTYgKzg4NywxNCBAQAogICAgICAgICBpZiAoKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UX1NURVJFTykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHBsYXlGb3JtYXQgJj0gfkRNQV9SUV9DMl9BQ19NT05PX1RPX1NURVJFTzsgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENvdW50ICo9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBwbGF5Rm9ybWF0IHw9IERNQV9SUV9DMl9BQ19NT05PX1RPX1NURVJFTzsgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgaWYgKChkbWFidWYtPmZtdCAmIENTX0ZNVF8xNkJJVCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwbGF5Rm9ybWF0ICY9IH4oRE1BX1JRX0MyX0FDXzhfVE9fMTZfQklUICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRE1BX1JRX0MyX0FDX1NJR05FRF9DT05WRVJUKTsgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDb3VudCAqPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcGxheUZvcm1hdCB8PSAoRE1BX1JRX0MyX0FDXzhfVE9fMTZfQklUICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERNQV9SUV9DMl9BQ19TSUdORURfQ09OVkVSVCk7ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC05MTksNyArOTA1LDYgQEAKICAgICAgICAgY3M0NjF4X3Bva2UoY2FyZCwgQkExX1BEVEMsIHRtcCB8IC0tQ291bnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAKIAogCUNTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3BsYXlfc2V0dXAoKS1cbiIpICk7Ci0KIH0KIAogc3RhdGljIHN0cnVjdCBJbml0U3RydWN0CkBAIC05NDQsOCArOTI5LDcgQEAKIHsKIAl1bnNpZ25lZCBpLCBvZmZzZXQ7CiAJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCA4LCBwcmludGsoImNzNDZ4eDogU2V0Q2FwdHVyZVNQVmFsdWVzKCkrXG4iKSApOwotCWZvcihpPTA7IGk8c2l6ZW9mKEluaXRBcnJheSkvc2l6ZW9mKHN0cnVjdCBJbml0U3RydWN0KTsgaSsrKQotCXsKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKEluaXRBcnJheSkgLyBzaXplb2Yoc3RydWN0IEluaXRTdHJ1Y3QpOyBpKyspIHsKIAkJb2Zmc2V0ID0gSW5pdEFycmF5W2ldLm9mZio0OyAvKiA4Yml0IHRvIDMyYml0IG9mZnNldCB2YWx1ZSAqLwogCQljczQ2MXhfcG9rZShjYXJkLCBvZmZzZXQsIEluaXRBcnJheVtpXS52YWwgKTsKIAl9CkBAIC05NTcsOCArOTQxLDggQEAKIHsKIAlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IHN0YXRlLT5jYXJkOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwotCUNTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3JlY19zZXR1cCgpK1xuIikgKTsKIAorCUNTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3JlY19zZXR1cCgpK1xuIikpOwogCVNldENhcHR1cmVTUFZhbHVlcyhjYXJkKTsKIAogCS8qCkBAIC05OTQsMTQgKzk3OCwxMSBAQAogCS8qCiAJICogZ3JhbnVsYXJpdHkgaXMgYnl0ZSBib3VuZGFyeSwgZ29vZCBwYXJ0LgogCSAqLwotCWlmKGRtYWJ1Zi0+ZW5hYmxlICYgREFDX1JVTk5JTkcpCi0JeworCWlmIChkbWFidWYtPmVuYWJsZSAmIERBQ19SVU5OSU5HKQogCQlvZmZzZXQgPSBjczQ2MXhfcGVlayhzdGF0ZS0+Y2FyZCwgQkExX1BCQSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCX0KIAllbHNlIC8qIEFEQ19SVU5OSU5HIG11c3QgYmUgc2V0ICovCi0JewogCQlvZmZzZXQgPSBjczQ2MXhfcGVlayhzdGF0ZS0+Y2FyZCwgQkExX0NCQSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCX0KKwogCUNTX0RCR09VVChDU19QQVJNUyB8IENTX0ZVTkNUSU9OLCA5LCAKIAkJcHJpbnRrKCJjczQ2eHg6IGNzX2dldF9kbWFfYWRkcigpICVkXG4iLG9mZnNldCkgKTsKIAlvZmZzZXQgPSAodTMyKWJ1c190b192aXJ0KCh1bnNpZ25lZCBsb25nKW9mZnNldCkgLSAodTMyKWRtYWJ1Zi0+cmF3YnVmOwpAQCAtMTAxNSw4ICs5OTYsNyBAQAogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKIAkKIAlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDIsIHByaW50aygiY3M0Nnh4OiByZXN5bmNfZG1hX3B0cnMoKSsgXG4iKSApOwotCWlmKHN0YXRlKQotCXsKKwlpZiAoc3RhdGUpIHsKIAkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCWRtYWJ1Zi0+aHdwdHI9ZG1hYnVmLT5zd3B0ciA9IDA7CiAJCWRtYWJ1Zi0+cHJpbmdidWYgPSAwOwpAQCAtMTE0OSwxMyArMTEyOSwxMyBAQAogLyoKICogY2hlY2sgZm9yIG9yZGVyIHdpdGhpbiBsaW1pdHMsIGJ1dCBkbyBub3Qgb3ZlcndyaXRlIHZhbHVlLgogKi8KLQlpZigoZGVmYXVsdG9yZGVyID4gMSkgJiYgKGRlZmF1bHRvcmRlciA8IDEyKSkKKwlpZiAoKGRlZmF1bHRvcmRlciA+IDEpICYmIChkZWZhdWx0b3JkZXIgPCAxMikpCiAJCWRmID0gZGVmYXVsdG9yZGVyOwogCWVsc2UKIAkJZGYgPSAyOwkKIAogCWZvciAob3JkZXIgPSBkZjsgb3JkZXIgPj0gRE1BQlVGX01JTk9SREVSOyBvcmRlci0tKQotCQlpZiAoIChyYXdidWYgPSAodm9pZCAqKSBwY2lfYWxsb2NfY29uc2lzdGVudCgKKwkJaWYgKChyYXdidWYgPSAodm9pZCAqKXBjaV9hbGxvY19jb25zaXN0ZW50KAogCQkJY2FyZC0+cGNpX2RldiwgUEFHRV9TSVpFIDw8IG9yZGVyLCAmZG1hYnVmLT5kbWFhZGRyKSkpCiAJCQkgICAgYnJlYWs7CiAJaWYgKCFyYXdidWYpIHsKQEAgLTExODEsOCArMTE2MSw3IEBACiAvKgogKiAgb25seSBhbGxvY2F0ZSB0aGUgY29udmVyc2lvbiBidWZmZXIgZm9yIHRoZSBBREMKICovCi0JaWYoZG1hYnVmLT50eXBlID09IENTX1RZUEVfREFDKQotCXsKKwlpZiAoZG1hYnVmLT50eXBlID09IENTX1RZUEVfREFDKSB7CiAJCWRtYWJ1Zi0+dG1wYnVmZiA9IE5VTEw7CiAJCWRtYWJ1Zi0+YnVmb3JkZXJfdG1wYnVmZiA9IDA7CiAJCXJldHVybiAwOwpAQCAtMTI1OCw4ICsxMjM3LDcgQEAKIC8qCiAgKiBjaGVjayBmb3IgQ0FQVFVSRSBhbmQgdXNlIG9ubHkgbm9uLXNnIGZvciBpbml0aWFsIHJlbGVhc2UKICAqLwotCWlmKGRtYWJ1Zi0+dHlwZSA9PSBDU19UWVBFX0FEQykKLQl7CisJaWYgKGRtYWJ1Zi0+dHlwZSA9PSBDU19UWVBFX0FEQykgewogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIHByaW50aygiY3M0Nnh4OiBwcm9nX2RtYWJ1ZigpIEFEQ1xuIikpOwogCQkvKiAKIAkJICogYWRkIGluIG5vbi1zZyBzdXBwb3J0IGZvciBjYXB0dXJlLgpAQCAtMTMxMyw5ICsxMjkxLDcgQEAKIAogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIHByaW50aygiY3M0Nnh4OiBwcm9nX2RtYWJ1ZigpLSAwIFxuIikpOwogCQlyZXR1cm4gMDsKLQl9Ci0JZWxzZSBpZiAoZG1hYnVmLT50eXBlID09IENTX1RZUEVfREFDKQotCXsKKwl9IGVsc2UgaWYgKGRtYWJ1Zi0+dHlwZSA9PSBDU19UWVBFX0RBQykgewogCS8qCiAJICogTXVzdCBiZSBEQUMKIAkgKi8KQEAgLTEzMzcsOCArMTMxMyw3IEBACiAJCWFsbG9jYXRlZF9wYWdlcyA9IDEgPDwgZG1hYnVmLT5idWZvcmRlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCWFsbG9jYXRlZF9ieXRlcyA9IGFsbG9jYXRlZF9wYWdlcypQQUdFX1NJWkU7ICAgICAgICAgICAgICAgICAgICAgICAgCiAJCQkJCQkJCQkJICAgIAotCQlpZihhbGxvY2F0ZWRfcGFnZXMgPCAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCQl7CisJCWlmIChhbGxvY2F0ZWRfcGFnZXMgPCAyKSB7CiAJCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIHByaW50aygKIAkJCSAgICAiY3M0Nnh4OiBwcm9nX2RtYWJ1ZigpIEVycm9yOiBhbGxvY2F0ZWRfcGFnZXMgdG9vIHNtYWxsICglZClcbiIsCiAJCQkJKHVuc2lnbmVkKWFsbG9jYXRlZF9wYWdlcykpOwpAQCAtMTM1MywxNCArMTMyOCwxNCBAQAogCQkJCQkJCQkJCSAgICAKIAkJICAgICAvKiBTZXQgdXAgUy9HIHZhcmlhYmxlcy4gKi8KIAkJKnB0bXAgPSB2aXJ0X3RvX2J1cyhkbWFidWYtPnJhd2J1Zik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJKihwdG1wKzEpID0gMHgwMDAwMDAwODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJZm9yKHRtcDE9IDE7IHRtcDEgPCBuU0dwYWdlczsgdG1wMSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCSoocHRtcCsyKnRtcDEpID0gdmlydF90b19idXMoIChkbWFidWYtPnJhd2J1ZikrNDA5Nip0bXAxKTsgIAotCQkJaWYoIHRtcDEgPT0gblNHcGFnZXMtMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSoocHRtcCArIDEpID0gMHgwMDAwMDAwODsKKwkJZm9yICh0bXAxID0gMTsgdG1wMSA8IG5TR3BhZ2VzOyB0bXAxKyspIHsKKwkJCSoocHRtcCArIDIgKiB0bXAxKSA9IHZpcnRfdG9fYnVzKChkbWFidWYtPnJhd2J1ZikgKyA0MDk2ICogdG1wMSk7CisJCQlpZiAodG1wMSA9PSBuU0dwYWdlcyAtIDEpCiAJCQkJdG1wMiA9IDB4YmZmZjAwMDA7CiAJCQllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCQl0bXAyID0gMHg4MDAwMDAwMCs4Kih0bXAxKzEpOyAgICAgICAgICAgICAgICAgICAgICAgCi0JCQkqKHB0bXArMip0bXAxKzEpID0gdG1wMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQl0bXAyID0gMHg4MDAwMDAwMCArIDggKiAodG1wMSArIDEpOworCQkJKihwdG1wICsgMiAqIHRtcDEgKyAxKSA9IHRtcDI7CiAJCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCVNHYXJyYXlbMF0gPSAweDgyYzAyMDBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCVNHYXJyYXlbMV0gPSAweGZmZmYwMDAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0xMzY4LDE4ICsxMzQzLDE3IEBACiAJCVNHYXJyYXlbM10gPSAweDAwMDEwNjAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCVNHYXJyYXlbNF0gPSAqKHB0bXArMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCVNHYXJyYXlbNV0gPSAweDgwMDAwMDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCVNHYXJyYXlbNl0gPSAqcHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCVNHYXJyYXlbN10gPSAqKHB0bXArMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCVNHYXJyYXlbOF0gPSAodmlydF90b19idXMoZG1hYnVmLT5wYnVmKSAmIDB4ZmZmZjAwMCkgfCAweDEwOyAgICAgICAgCisJCVNHYXJyYXlbNl0gPSAqcHRtcDsKKwkJU0dhcnJheVs3XSA9ICoocHRtcCsyKTsKKwkJU0dhcnJheVs4XSA9ICh2aXJ0X3RvX2J1cyhkbWFidWYtPnBidWYpICYgMHhmZmZmMDAwKSB8IDB4MTA7CiAKLQkJaWYgKGRtYWJ1Zi0+U0dvaykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQkJCWRtYWJ1Zi0+bnVtZnJhZyA9IG5TR3BhZ2VzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCQkJZG1hYnVmLT5mcmFnc2l6ZSA9IDQwOTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCQlkbWFidWYtPmZyYWdzYW1wbGVzID0gNDA5NiA+PiBzYW1wbGVfc2hpZnRbZG1hYnVmLT5mbXRdOyAgICAKLQkJCWRtYWJ1Zi0+ZnJhZ3NoaWZ0ID0gMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCQkJZG1hYnVmLT5kbWFzaXplID0gZG1hYnVmLT5udW1mcmFnKjQwOTY7ICAgICAgICAgICAgICAgICAgICAgCi0JCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0JCWVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCWlmIChkbWFidWYtPlNHb2spIHsKKwkJCWRtYWJ1Zi0+bnVtZnJhZyA9IG5TR3BhZ2VzOworCQkJZG1hYnVmLT5mcmFnc2l6ZSA9IDQwOTY7CisJCQlkbWFidWYtPmZyYWdzYW1wbGVzID0gNDA5NiA+PiBzYW1wbGVfc2hpZnRbZG1hYnVmLT5mbXRdOworCQkJZG1hYnVmLT5mcmFnc2hpZnQgPSAxMjsKKwkJCWRtYWJ1Zi0+ZG1hc2l6ZSA9IGRtYWJ1Zi0+bnVtZnJhZyAqIDQwOTY7CisJCX0gZWxzZSB7CiAJCQlTR2FycmF5WzBdID0gMHhmMmMwMDAwZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAkJCVNHYXJyYXlbMV0gPSAweDAwMDAwMjAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogCQkJU0dhcnJheVsyXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0xMzkxLDggKzEzNjUsOCBAQAogCQkJZG1hYnVmLT5kbWFzaXplID0gNDA5NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAJCQlkbWFidWYtPmZyYWdzaGlmdCA9IDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAkJfQotCQlmb3IodG1wMSA9IDA7IHRtcDEgPCBzaXplb2YoU0dhcnJheSkvNDsgdG1wMSsrKSAgICAgICAgICAgICAgICAgICAgIAotCQkJY3M0NjF4X3Bva2UoIHN0YXRlLT5jYXJkLCBCQTFfUERUQyt0bXAxKjQsIFNHYXJyYXlbdG1wMV0pOyAgCisJCWZvciAodG1wMSA9IDA7IHRtcDEgPCBzaXplb2YoU0dhcnJheSkgLyA0OyB0bXAxKyspCisJCQljczQ2MXhfcG9rZShzdGF0ZS0+Y2FyZCwgQkExX1BEVEMrdG1wMSAqIDQsIFNHYXJyYXlbdG1wMV0pOwogCiAJCW1lbXNldChkbWFidWYtPnJhd2J1ZiwgKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UXzE2QklUKSA/IDAgOiAweDgwLAogCQkgICAgICAgZG1hYnVmLT5kbWFzaXplKTsKQEAgLTE0MTYsOSArMTM5MCw3IEBACiAKIAkJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCA0LCBwcmludGsoImNzNDZ4eDogcHJvZ19kbWFidWYoKS0gXG4iKSk7CiAJCXJldHVybiAwOwotCX0KLQllbHNlCi0JeworCX0gZWxzZSB7CiAJCUNTX0RCR09VVChDU19GVU5DVElPTiwgNCwgcHJpbnRrKCJjczQ2eHg6IHByb2dfZG1hYnVmKCktIEludmFsaWQgVHlwZSAlZFxuIiwKIAkJCWRtYWJ1Zi0+dHlwZSkpOwogCX0KQEAgLTE0ODksOCArMTQ2MSw3IEBACiAJfQogCXJlbW92ZV93YWl0X3F1ZXVlKCZkbWFidWYtPndhaXQsICZ3YWl0KTsKIAljdXJyZW50LT5zdGF0ZSA9IFRBU0tfUlVOTklORzsKLQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCi0JeworCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIHByaW50aygiY3M0Nnh4OiBkcmFpbl9kYWMoKS0gLUVSRVNUQVJUU1lTXG4iKSk7CiAJCS8qCiAJCSogc2V0IHRvIHNpbGVuY2UgYW5kIGxldCB0aGF0IGNsZWFyIHRoZSBmaWZvcy4KQEAgLTE1MTQsOCArMTQ4NSw3IEBACiAKIAkvKiBlcnJvciBoYW5kbGluZyBhbmQgcHJvY2VzcyB3YWtlIHVwIGZvciBBREMgKi8KIAlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKLQlpZihzdGF0ZSkKLQl7CisJaWYgKHN0YXRlKSB7CiAJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQlpZiAoZG1hYnVmLT5lbmFibGUgJiBBRENfUlVOTklORykgewogCQkJLyogdXBkYXRlIGhhcmR3YXJlIHBvaW50ZXIgKi8KQEAgLTE1MzEsMTIgKzE1MDEsMTAgQEAKIAkJCWlmIChkbWFidWYtPmNvdW50ID4gZG1hYnVmLT5kbWFzaXplKQogCQkJCWRtYWJ1Zi0+Y291bnQgPSBkbWFidWYtPmRtYXNpemU7CiAKLQkJCWlmKGRtYWJ1Zi0+bWFwcGVkKQotCQkJeworCQkJaWYgKGRtYWJ1Zi0+bWFwcGVkKSB7CiAJCQkJaWYgKHdha2UgJiYgZG1hYnVmLT5jb3VudCA+PSAoc2lnbmVkKWRtYWJ1Zi0+ZnJhZ3NpemUpCiAJCQkJCXdha2VfdXAoJmRtYWJ1Zi0+d2FpdCk7Ci0JCQl9IGVsc2UgCi0JCQl7CisJCQl9IGVsc2UgewogCQkJCWlmICh3YWtlICYmIGRtYWJ1Zi0+Y291bnQgPiAwKQogCQkJCQl3YWtlX3VwKCZkbWFidWYtPndhaXQpOwogCQkJfQpAQCAtMTU0Nyw4ICsxNTE1LDcgQEAKICAqIE5vdyB0aGUgREFDCiAgKi8KIAlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKLQlpZihzdGF0ZSkKLQl7CisJaWYgKHN0YXRlKSB7CiAJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkvKiBlcnJvciBoYW5kbGluZyBhbmQgcHJvY2VzcyB3YWtlIHVwIGZvciBEQUMgKi8KIAkJaWYgKGRtYWJ1Zi0+ZW5hYmxlICYgREFDX1JVTk5JTkcpIHsKQEAgLTE1NzAsNyArMTUzNyw3IEBACiAJCQkJICogaW4gdGhhdCwgc2luY2UgZG1hc2l6ZSBpcyB0aGUgYnVmZmVyIGFza2VkIGZvcgogCQkJCSAqIHZpYSBtbWFwLgogCQkJCSAqLwotCQkJCWlmKCBkbWFidWYtPmNvdW50ID4gZG1hYnVmLT5kbWFzaXplKQorCQkJCWlmIChkbWFidWYtPmNvdW50ID4gZG1hYnVmLT5kbWFzaXplKQogCQkJCQlkbWFidWYtPmNvdW50ICY9IGRtYWJ1Zi0+ZG1hc2l6ZS0xOwogCQkJfSBlbHNlIHsKIAkJCQlkbWFidWYtPmNvdW50IC09IGRpZmY7CkBAIC0xNTc4LDEzICsxNTQ1LDEwIEBACiAJCQkJICogYmFja2ZpbGwgd2l0aCBzaWxlbmNlIGFuZCBjbGVhciBvdXQgdGhlIGxhc3QgCiAJCQkJICogImRpZmYiIG51bWJlciBvZiBieXRlcy4KIAkJCQkgKi8KLQkJCQlpZihod3B0ciA+PSBkaWZmKQotCQkJCXsKKwkJCQlpZiAoaHdwdHIgPj0gZGlmZikgewogCQkJCQltZW1zZXQoZG1hYnVmLT5yYXdidWYgKyBod3B0ciAtIGRpZmYsIAogCQkJCQkJKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UXzE2QklUKSA/IDAgOiAweDgwLCBkaWZmKTsKLQkJCQl9Ci0JCQkJZWxzZQotCQkJCXsKKwkJCQl9IGVsc2UgewogCQkJCQltZW1zZXQoZG1hYnVmLT5yYXdidWYsIAogCQkJCQkJKGRtYWJ1Zi0+Zm10ICYgQ1NfRk1UXzE2QklUKSA/IDAgOiAweDgwLAogCQkJCQkJKHVuc2lnbmVkKWh3cHRyKTsKQEAgLTE2MDIsMTIgKzE1NjYsMTIgQEAKIAkJCQkJKiBidWZmZXIgdW5kZXJydW4gb3IgYnVmZmVyIG92ZXJydW4sIHJlc2V0IHRoZQogCQkJCQkqIGNvdW50IG9mIGJ5dGVzIHdyaXR0ZW4gYmFjayB0byAwLgogCQkJCQkqLwotCQkJCQlpZihkbWFidWYtPmNvdW50IDwgMCkKLQkJCQkJCWRtYWJ1Zi0+dW5kZXJydW49MTsKKwkJCQkJaWYgKGRtYWJ1Zi0+Y291bnQgPCAwKQorCQkJCQkJZG1hYnVmLT51bmRlcnJ1biA9IDE7CiAJCQkJCWRtYWJ1Zi0+Y291bnQgPSAwOwogCQkJCQlkbWFidWYtPmVycm9yKys7CiAJCQkJfQotCQkJCWlmICh3YWtlICYmIGRtYWJ1Zi0+Y291bnQgPCAoc2lnbmVkKWRtYWJ1Zi0+ZG1hc2l6ZS8yKQorCQkJCWlmICh3YWtlICYmIGRtYWJ1Zi0+Y291bnQgPCAoc2lnbmVkKWRtYWJ1Zi0+ZG1hc2l6ZSAvIDIpCiAJCQkJCXdha2VfdXAoJmRtYWJ1Zi0+d2FpdCk7CiAJCQl9CiAJCX0KQEAgLTE2NjEsOCArMTYyNSw3IEBACiAKIAlzdGF0dXMgPSBjczQ2MXhfcGVla0JBMChjYXJkLCBCQTBfSElTUik7CiAJCi0JaWYgKChzdGF0dXMgJiAweDdmZmZmZmZmKSA9PSAwKQotCXsKKwlpZiAoKHN0YXR1cyAmIDB4N2ZmZmZmZmYpID09IDApIHsKIAkJY3M0NjF4X3Bva2VCQTAoY2FyZCwgQkEwX0hJQ1IsIEhJQ1JfQ0hHTXxISUNSX0lFVik7CiAJCXNwaW5fdW5sb2NrKCZjYXJkLT5sb2NrKTsKIAkJcmV0dXJuIElSUV9IQU5ETEVEOwkvKiBNaWdodCBiZSBJUlFfTk9ORS4uICovCkBAIC0xNjcxLDE1ICsxNjM0LDE0IEBACiAJLyoKIAkgKiBjaGVjayBmb3IgcGxheWJhY2sgb3IgY2FwdHVyZSBpbnRlcnJ1cHQgb25seQogCSAqLwotCWlmKCAoKHN0YXR1cyAmIEhJU1JfVkMwKSAmJiBwbGF5c3RhdGUgJiYgcGxheXN0YXRlLT5kbWFidWYucmVhZHkpIHx8IAotCSAgICAoKChzdGF0dXMgJiBISVNSX1ZDMSkgJiYgcmVjc3RhdGUgJiYgcmVjc3RhdGUtPmRtYWJ1Zi5yZWFkeSkpICkKLQl7CisJaWYgKCgoc3RhdHVzICYgSElTUl9WQzApICYmIHBsYXlzdGF0ZSAmJiBwbGF5c3RhdGUtPmRtYWJ1Zi5yZWFkeSkgfHwKKwkgICAgKCgoc3RhdHVzICYgSElTUl9WQzEpICYmIHJlY3N0YXRlICYmIHJlY3N0YXRlLT5kbWFidWYucmVhZHkpKSkgewogCQlDU19EQkdPVVQoQ1NfSU5URVJSVVBULCA4LCBwcmludGsoCiAJCQkiY3M0Nnh4OiBjc19pbnRlcnJ1cHQoKSBpbnRlcnJ1cHQgYml0KHMpIHNldCAoMHgleClcbiIsc3RhdHVzKSk7CiAJCWNzX3VwZGF0ZV9wdHIoY2FyZCwgQ1NfVFJVRSk7CiAJfQogCi0gICAgICAgIGlmKCBzdGF0dXMgJiBISVNSX01JREkgKQorICAgICAgICBpZiAoc3RhdHVzICYgSElTUl9NSURJKQogICAgICAgICAgICAgICAgIGNzX2hhbmRsZV9taWRpKGNhcmQpOwogCQogIAkvKiBjbGVhciAnZW0gKi8KQEAgLTE2OTQsNyArMTY1Niw3IEBACiAKIHN0YXRpYyBzc2l6ZV90IGNzX21pZGlfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiB7Ci0gICAgICAgIHN0cnVjdCBjc19jYXJkICpjYXJkID0gKHN0cnVjdCBjc19jYXJkICopZmlsZS0+cHJpdmF0ZV9kYXRhOworICAgICAgICBzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKICAgICAgICAgc3NpemVfdCByZXQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgIHVuc2lnbmVkIHB0cjsKQEAgLTE3MzcsNyArMTY5OSw3IEBACiAKIHN0YXRpYyBzc2l6ZV90IGNzX21pZGlfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWZmZXIsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQogewotICAgICAgICBzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKKyAgICAgICAgc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAgICAgICAgIHNzaXplX3QgcmV0OwogICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICB1bnNpZ25lZCBwdHI7CkBAIC0xNzg1LDcgKzE3NDcsNyBAQAogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNzX21pZGlfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KQogewotICAgICAgICBzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKKyAgICAgICAgc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgIHVuc2lnbmVkIGludCBtYXNrID0gMDsKIApAQCAtMTgxMCwxMiArMTc3MiwxMSBAQAogc3RhdGljIGludCBjc19taWRpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAgICAgICAgIHVuc2lnbmVkIGludCBtaW5vciA9IGltaW5vcihpbm9kZSk7Ci0gICAgICAgIHN0cnVjdCBjc19jYXJkICpjYXJkPU5VTEw7CisgICAgICAgIHN0cnVjdCBjc19jYXJkICpjYXJkID0gTlVMTDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKIAotCWxpc3RfZm9yX2VhY2goZW50cnksICZjczQ2eHhfZGV2cykKLQl7CisJbGlzdF9mb3JfZWFjaChlbnRyeSwgJmNzNDZ4eF9kZXZzKSB7CiAJCWNhcmQgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgY3NfY2FyZCwgbGlzdCk7CiAJCWlmIChjYXJkLT5kZXZfbWlkaSA9PSBtaW5vcikKIAkJCWJyZWFrOwpAQCAtMTgyMyw4ICsxNzg0LDcgQEAKIAogCWlmIChlbnRyeSA9PSAmY3M0Nnh4X2RldnMpCiAJCXJldHVybiAtRU5PREVWOwotCWlmICghY2FyZCkKLQl7CisJaWYgKCFjYXJkKSB7CiAJCUNTX0RCR09VVChDU19GVU5DVElPTiB8IENTX09QRU4sIDIsIHByaW50ayhLRVJOX0lORk8KIAkJCSJjczQ2eHg6IGNzNDZ4eF9taWRpX29wZW4oKTogRXJyb3IgLSB1bmFibGUgdG8gZmluZCBjYXJkIHN0cnVjdFxuIikpOwogCQlyZXR1cm4gLUVOT0RFVjsKQEAgLTE4NTIsMTIgKzE4MTIsMTAgQEAKICAgICAgICAgICAgICAgICBjczQ2MXhfcG9rZUJBMChjYXJkLCBCQTBfTUlEQ1IsIDB4MDAwMDAwMGYpOyAgICAgICAgICAgIC8qIEVuYWJsZSB4bWl0LCByY3YuICovCiAgICAgICAgICAgICAgICAgY3M0NjF4X3Bva2VCQTAoY2FyZCwgQkEwX0hJQ1IsIEhJQ1JfSUVWIHwgSElDUl9DSEdNKTsgICAvKiBFbmFibGUgaW50ZXJydXB0cyAqLwogICAgICAgICB9Ci0gICAgICAgIGlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSB7CisgICAgICAgIGlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQogICAgICAgICAgICAgICAgIGNhcmQtPm1pZGkuaXJkID0gY2FyZC0+bWlkaS5pd3IgPSBjYXJkLT5taWRpLmljbnQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkgeworICAgICAgICBpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpCiAgICAgICAgICAgICAgICAgY2FyZC0+bWlkaS5vcmQgPSBjYXJkLT5taWRpLm93ciA9IGNhcmQtPm1pZGkub2NudCA9IDA7Ci0gICAgICAgIH0KICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2FyZC0+bWlkaS5sb2NrLCBmbGFncyk7CiAgICAgICAgIGNhcmQtPm1pZGkub3Blbl9tb2RlIHw9IChmaWxlLT5mX21vZGUgJiAoRk1PREVfUkVBRCB8IEZNT0RFX1dSSVRFKSk7CiAgICAgICAgIG11dGV4X3VubG9jaygmY2FyZC0+bWlkaS5vcGVuX211dGV4KTsKQEAgLTE4NjcsNyArMTgyNSw3IEBACiAKIHN0YXRpYyBpbnQgY3NfbWlkaV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewotICAgICAgICBzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKKyAgICAgICAgc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAgICAgICAgIERFQ0xBUkVfV0FJVFFVRVVFKHdhaXQsIGN1cnJlbnQpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICB1bnNpZ25lZCBjb3VudCwgdG1vOwpAQCAtMTkzMywxMSArMTg5MSwxMCBAQAogc3RhdGljIHZvaWQgQ29weVNhbXBsZXMoY2hhciAqZHN0LCBjaGFyICpzcmMsIGludCBjb3VudCwgdW5zaWduZWQgZm10LCAKIAkJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmKQogewotCiAgICAgczMyIHMzMkF1ZGlvU2FtcGxlOwotICAgIHMxNiAqcHNTcmM9KHMxNiAqKXNyYzsKLSAgICBzMTYgKnBzRHN0PShzMTYgKilkc3Q7Ci0gICAgdTggKnB1Y0RzdD0odTggKilkc3Q7CisgICAgczE2ICpwc1NyYyA9IChzMTYgKilzcmM7CisgICAgczE2ICpwc0RzdCA9IChzMTYgKilkc3Q7CisgICAgdTggKnB1Y0RzdCA9ICh1OCAqKWRzdDsKIAogICAgIENTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBDb3B5U2FtcGxlcygpKyAiKSApOwogICAgIENTX0RCR09VVChDU19XQVZFX1JFQUQsIDgsIHByaW50ayhLRVJOX0lORk8KQEAgLTE5NDcsMzQgKzE5MDQsMjkgQEAKICAgICAvKgogICAgICAqIFNlZSBpZiB0aGUgZGF0YSBzaG91bGQgYmUgb3V0cHV0IGFzIDgtYml0IHVuc2lnbmVkIHN0ZXJlby4KICAgICAgKi8KLSAgICBpZigoZm10ICYgQ1NfRk1UX1NURVJFTykgJiYgIShmbXQgJiBDU19GTVRfMTZCSVQpKQotICAgIHsKKyAgICBpZiAoKGZtdCAmIENTX0ZNVF9TVEVSRU8pICYmICEoZm10ICYgQ1NfRk1UXzE2QklUKSkgewogICAgICAgICAvKgogICAgICAgICAgKiBDb252ZXJ0IGVhY2ggMTYtYml0IHNpZ25lZCBzdGVyZW8gc2FtcGxlIHRvIDgtYml0IHVuc2lnbmVkIAogCSAqIHN0ZXJlbyB1c2luZyByb3VuZGluZy4KICAgICAgICAgICovCiAgICAgICAgIHBzU3JjID0gKHMxNiAqKXNyYzsKLQljb3VudCA9IGNvdW50LzI7Ci0gICAgICAgIHdoaWxlKGNvdW50LS0pCi0gICAgICAgIHsKKwljb3VudCA9IGNvdW50IC8gMjsKKyAgICAgICAgd2hpbGUgKGNvdW50LS0pCiAgICAgICAgICAgICAqKHB1Y0RzdCsrKSA9ICh1OCkoKChzMTYpKCpwc1NyYysrKSArIChzMTYpMHg4MDAwKSA+PiA4KTsKLSAgICAgICAgfQogICAgIH0KICAgICAvKgogICAgICAqIFNlZSBpZiB0aGUgZGF0YSBzaG91bGQgYmUgb3V0cHV0IGF0IDgtYml0IHVuc2lnbmVkIG1vbm8uCiAgICAgICovCi0gICAgZWxzZSBpZighKGZtdCAmIENTX0ZNVF9TVEVSRU8pICYmICEoZm10ICYgQ1NfRk1UXzE2QklUKSkKLSAgICB7CisgICAgZWxzZSBpZiAoIShmbXQgJiBDU19GTVRfU1RFUkVPKSAmJiAhKGZtdCAmIENTX0ZNVF8xNkJJVCkpIHsKICAgICAgICAgLyoKICAgICAgICAgICogQ29udmVydCBlYWNoIDE2LWJpdCBzaWduZWQgc3RlcmVvIHNhbXBsZSB0byA4LWJpdCB1bnNpZ25lZCAKIAkgKiBtb25vIHVzaW5nIGF2ZXJhZ2luZyBhbmQgcm91bmRpbmcuCiAgICAgICAgICAqLwogICAgICAgICBwc1NyYyA9IChzMTYgKilzcmM7Ci0JY291bnQgPSBjb3VudC8yOwotICAgICAgICB3aGlsZShjb3VudC0tKQotICAgICAgICB7Ci0JICAgIHMzMkF1ZGlvU2FtcGxlID0gKCgqcHNTcmMpKygqKHBzU3JjICsgMSkpKS8yICsgKHMzMikweDgwOwotCSAgICBpZihzMzJBdWRpb1NhbXBsZSA+IDB4N2ZmZikKKwljb3VudCA9IGNvdW50IC8gMjsKKyAgICAgICAgd2hpbGUgKGNvdW50LS0pIHsKKwkgICAgczMyQXVkaW9TYW1wbGUgPSAoKCpwc1NyYykgKyAoKihwc1NyYyArIDEpKSkgLyAyICsgKHMzMikweDgwOworCSAgICBpZiAoczMyQXVkaW9TYW1wbGUgPiAweDdmZmYpCiAJICAgIAlzMzJBdWRpb1NhbXBsZSA9IDB4N2ZmZjsKICAgICAgICAgICAgICoocHVjRHN0KyspID0gKHU4KSgoKHMxNilzMzJBdWRpb1NhbXBsZSArIChzMTYpMHg4MDAwKSA+PiA4KTsKIAkgICAgcHNTcmMgKz0gMjsKQEAgLTE5ODMsMTcgKzE5MzUsMTUgQEAKICAgICAvKgogICAgICAqIFNlZSBpZiB0aGUgZGF0YSBzaG91bGQgYmUgb3V0cHV0IGF0IDE2LWJpdCBzaWduZWQgbW9uby4KICAgICAgKi8KLSAgICBlbHNlIGlmKCEoZm10ICYgQ1NfRk1UX1NURVJFTykgJiYgKGZtdCAmIENTX0ZNVF8xNkJJVCkpCi0gICAgeworICAgIGVsc2UgaWYgKCEoZm10ICYgQ1NfRk1UX1NURVJFTykgJiYgKGZtdCAmIENTX0ZNVF8xNkJJVCkpIHsKICAgICAgICAgLyoKICAgICAgICAgICogQ29udmVydCBlYWNoIDE2LWJpdCBzaWduZWQgc3RlcmVvIHNhbXBsZSB0byAxNi1iaXQgc2lnbmVkIAogCSAqIG1vbm8gdXNpbmcgYXZlcmFnaW5nLgogICAgICAgICAgKi8KICAgICAgICAgcHNTcmMgPSAoczE2ICopc3JjOwotCWNvdW50ID0gY291bnQvMjsKLSAgICAgICAgd2hpbGUoY291bnQtLSkKLSAgICAgICAgewotICAgICAgICAgICAgKihwc0RzdCsrKSA9IChzMTYpKCgqcHNTcmMpKygqKHBzU3JjICsgMSkpKS8yOworCWNvdW50ID0gY291bnQgLyAyOworICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgKihwc0RzdCsrKSA9IChzMTYpKCgqcHNTcmMpICsgKCoocHNTcmMgKyAxKSkpIC8gMjsKIAkgICAgcHNTcmMgKz0gMjsKICAgICAgICAgfQogICAgIH0KQEAgLTIwMjAsMjAgKzE5NzAsMTUgQEAKIAkJImNzX2NvcHlfdG9fdXNlcigpKyBmbXQ9MHgleCBjbnQ9JWQgZGVzdD0lcFxuIiwKIAkJZG1hYnVmLT5mbXQsKHVuc2lnbmVkKWNudCxkZXN0KSApOwogCi0JaWYoY250ID4gZG1hYnVmLT5kbWFzaXplKQotCXsKKwlpZiAoY250ID4gZG1hYnVmLT5kbWFzaXplKQogCQljbnQgPSBkbWFidWYtPmRtYXNpemU7Ci0JfQotCWlmKCFjbnQpCi0JeworCWlmICghY250KSB7CiAJCSpjb3BpZWQgPSAwOwogCQlyZXR1cm4gMDsKIAl9Ci0JaWYoZG1hYnVmLT5kaXZpc29yICE9IDEpCi0JewotCQlpZighZG1hYnVmLT50bXBidWZmKQotCQl7Ci0JCQkqY29waWVkID0gY250L2RtYWJ1Zi0+ZGl2aXNvcjsKKwlpZiAoZG1hYnVmLT5kaXZpc29yICE9IDEpIHsKKwkJaWYgKCFkbWFidWYtPnRtcGJ1ZmYpIHsKKwkJCSpjb3BpZWQgPSBjbnQgLyBkbWFidWYtPmRpdmlzb3I7CiAJCQlyZXR1cm4gMDsKIAkJfQogCkBAIC0yMDQyLDE3ICsxOTg3LDE2IEBACiAJCXNyYyA9IGRtYWJ1Zi0+dG1wYnVmZjsKIAkJY250ID0gY250L2RtYWJ1Zi0+ZGl2aXNvcjsKIAl9Ci0gICAgICAgIGlmIChjb3B5X3RvX3VzZXIoZGVzdCwgc3JjLCBjbnQpKQotCXsKKyAgICAgICAgaWYgKGNvcHlfdG9fdXNlcihkZXN0LCBzcmMsIGNudCkpIHsKIAkJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCAyLCBwcmludGsoS0VSTl9FUlIgCiAJCQkiY3M0Nnh4OiBjc19jb3B5X3RvX3VzZXIoKS0gZmF1bHQgZGVzdD0lcCBzcmM9JXAgY250PSVkXG4iLAotCQkJCWRlc3Qsc3JjLGNudCkgKTsKKwkJCQlkZXN0LHNyYyxjbnQpKTsKIAkJKmNvcGllZCA9IDA7CiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAkqY29waWVkID0gY250OwogCUNTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKEtFUk5fSU5GTyAKLQkJImNzNDZ4eDogY3NfY29weV90b191c2VyKCktIGNvcGllZCBieXRlcyBpcyAlZCBcbiIsY250KSApOworCQkiY3M0Nnh4OiBjc19jb3B5X3RvX3VzZXIoKS0gY29waWVkIGJ5dGVzIGlzICVkIFxuIixjbnQpKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjA2MCw3ICsyMDA0LDcgQEAKICAgIHRoZSB1c2VyJ3MgYnVmZmVyLiAgaXQgaXMgZmlsbGVkIGJ5IHRoZSBkbWEgbWFjaGluZSBhbmQgZHJhaW5lZCBieSB0aGlzIGxvb3AuICovCiBzdGF0aWMgc3NpemVfdCBjc19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKLQlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IGNzX3N0YXRlICpzdGF0ZTsKIAlERUNMQVJFX1dBSVRRVUVVRSh3YWl0LCBjdXJyZW50KTsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWY7CkBAIC0yMDY4LDEyICsyMDEyLDEyIEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBzd3B0cjsKIAlpbnQgY250OwotCXVuc2lnbmVkIGNvcGllZD0wOworCXVuc2lnbmVkIGNvcGllZCA9IDA7CiAKIAlDU19EQkdPVVQoQ1NfV0FWRV9SRUFEIHwgQ1NfRlVOQ1RJT04sIDQsIAogCQlwcmludGsoImNzNDZ4eDogY3NfcmVhZCgpKyAlemRcbiIsY291bnQpICk7Ci0Jc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCWlmKCFzdGF0ZSkKKwlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwlpZiAoIXN0YXRlKQogCQlyZXR1cm4gLUVOT0RFVjsKIAlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIApAQCAtMjA4OCwxMSArMjAzMiwxMSBAQAogCiAJYWRkX3dhaXRfcXVldWUoJnN0YXRlLT5kbWFidWYud2FpdCwgJndhaXQpOwogCXdoaWxlIChjb3VudCA+IDApIHsKLQkJd2hpbGUoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSkKLQkJeworCQl3aGlsZSAoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSkgewogCQkJc2NoZWR1bGUoKTsKIAkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewotCQkJCWlmKCFyZXQpIHJldCA9IC1FUkVTVEFSVFNZUzsKKwkJCQlpZiAoIXJldCkKKwkJCQkJcmV0ID0gLUVSRVNUQVJUU1lTOwogCQkJCWdvdG8gb3V0OwogCQkJfQogCQl9CkBAIC0yMTEyLDE5ICsyMDU2LDIwIEBACiAJCQkgICByZWNvcmRlZCAqLwogCQkJc3RhcnRfYWRjKHN0YXRlKTsKIAkJCWlmIChmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykgewotCQkJCWlmICghcmV0KSByZXQgPSAtRUFHQUlOOworCQkJCWlmICghcmV0KQorCQkJCQlyZXQgPSAtRUFHQUlOOwogCQkJCWdvdG8gb3V0OwogIAkJCX0KIAkJCW11dGV4X3VubG9jaygmc3RhdGUtPnNlbSk7CiAJCQlzY2hlZHVsZSgpOwogCQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7Ci0JCQkJaWYoIXJldCkgcmV0ID0gLUVSRVNUQVJUU1lTOworCQkJCWlmICghcmV0KQorCQkJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CiAJCQkJZ290byBvdXQ7CiAJCQl9CiAJCQltdXRleF9sb2NrKCZzdGF0ZS0+c2VtKTsKLQkJCWlmIChkbWFidWYtPm1hcHBlZCkgCi0JCQl7Ci0JCQkJaWYoIXJldCkKKwkJCWlmIChkbWFidWYtPm1hcHBlZCkgeworCQkJCWlmICghcmV0KQogCQkJCQlyZXQgPSAtRU5YSU87CiAJCQkJZ290byBvdXQ7CiAJCQl9CkBAIC0yMTM1LDEyICsyMDgwLDEyIEBACiAJCQkiX3JlYWQoKSBjb3B5X3RvIGNudD0lZCBjb3VudD0lemQgIiwgY250LGNvdW50KSApOwogCQlDU19EQkdPVVQoQ1NfV0FWRV9SRUFELCA4LCBwcmludGsoS0VSTl9JTkZPIAogCQkJIiAuZG1hc2l6ZT0lZCAuY291bnQ9JWQgYnVmZmVyPSVwIHJldD0lemRcbiIsCi0JCQlkbWFidWYtPmRtYXNpemUsZG1hYnVmLT5jb3VudCxidWZmZXIscmV0KSApOworCQkJZG1hYnVmLT5kbWFzaXplLGRtYWJ1Zi0+Y291bnQsYnVmZmVyLHJldCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKGNzX2NvcHlfdG9fdXNlcihzdGF0ZSwgYnVmZmVyLCAKLQkJCShjaGFyICopZG1hYnVmLT5yYXdidWYgKyBzd3B0ciwgY250LCAmY29waWVkKSkKLQkJewotCQkJaWYgKCFyZXQpIHJldCA9IC1FRkFVTFQ7CisJCQkoY2hhciAqKWRtYWJ1Zi0+cmF3YnVmICsgc3dwdHIsIGNudCwgJmNvcGllZCkpIHsKKwkJCWlmICghcmV0KQorCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQlnb3RvIG91dDsKIAkJfQogICAgICAgICAgICAgICAgIHN3cHRyID0gKHN3cHRyICsgY250KSAlIGRtYWJ1Zi0+ZG1hc2l6ZTsKQEAgLTIxNjcsNyArMjExMiw3IEBACiAgICB0aGUgc291bmRjYXJkLiAgaXQgaXMgZHJhaW5lZCBieSB0aGUgZG1hIG1hY2hpbmUgYW5kIGZpbGxlZCBieSB0aGlzIGxvb3AuICovCiBzdGF0aWMgc3NpemVfdCBjc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiB7Ci0Jc3RydWN0IGNzX2NhcmQgKmNhcmQgPSAoc3RydWN0IGNzX2NhcmQgKikgZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBjc19jYXJkICpjYXJkID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBjc19zdGF0ZSAqc3RhdGU7CiAJREVDTEFSRV9XQUlUUVVFVUUod2FpdCwgY3VycmVudCk7CiAJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmOwpAQCAtMjE3OCwxNiArMjEyMywxNSBAQAogCiAJQ1NfREJHT1VUKENTX1dBVkVfV1JJVEUgfCBDU19GVU5DVElPTiwgNCwKIAkJcHJpbnRrKCJjczQ2eHg6IGNzX3dyaXRlIGNhbGxlZCwgY291bnQgPSAlemRcbiIsIGNvdW50KSApOwotCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQlpZighc3RhdGUpCisJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJaWYgKCFzdGF0ZSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGJ1ZmZlciwgY291bnQpKQogCQlyZXR1cm4gLUVGQVVMVDsKIAlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAogCW11dGV4X2xvY2soJnN0YXRlLT5zZW0pOwotCWlmIChkbWFidWYtPm1hcHBlZCkKLQl7CisJaWYgKGRtYWJ1Zi0+bWFwcGVkKSB7CiAJCXJldCA9IC1FTlhJTzsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMjIwMSwxMSArMjE0NSwxMSBAQAogKiBjaGVjayBmb3IgUE0gZXZlbnRzIGFuZCB1bmRlcnJ1bi9vdmVycnVuIGluIHRoZSBsb29wLgogKi8KIAl3aGlsZSAoY291bnQgPiAwKSB7Ci0JCXdoaWxlKCEoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkpCi0JCXsKKwkJd2hpbGUgKCEoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkpIHsKIAkJCXNjaGVkdWxlKCk7CiAJCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKLQkJCQlpZighcmV0KSByZXQgPSAtRVJFU1RBUlRTWVM7CisJCQkJaWYgKCFyZXQpCisJCQkJCXJldCA9IC1FUkVTVEFSVFNZUzsKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJfQpAQCAtMjIxNiw4ICsyMTYwLDcgQEAKIAkJCWRtYWJ1Zi0+Y291bnQgPSAwOwogCQkJZG1hYnVmLT5zd3B0ciA9IGRtYWJ1Zi0+aHdwdHI7CiAJCX0KLQkJaWYgKGRtYWJ1Zi0+dW5kZXJydW4pCi0JCXsKKwkJaWYgKGRtYWJ1Zi0+dW5kZXJydW4pIHsKIAkJCWRtYWJ1Zi0+dW5kZXJydW4gPSAwOwogCQkJZG1hYnVmLT5od3B0ciA9IGNzX2dldF9kbWFfYWRkcihzdGF0ZSk7CiAJCQlkbWFidWYtPnN3cHRyID0gZG1hYnVmLT5od3B0cjsKQEAgLTIyMzgsMzQgKzIxODEsMzUgQEAKIAkJCSAgIHBsYXllZCAqLwogCQkJc3RhcnRfZGFjKHN0YXRlKTsKIAkJCWlmIChmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSykgewotCQkJCWlmICghcmV0KSByZXQgPSAtRUFHQUlOOworCQkJCWlmICghcmV0KQorCQkJCQlyZXQgPSAtRUFHQUlOOwogCQkJCWdvdG8gb3V0OwogIAkJCX0KIAkJCW11dGV4X3VubG9jaygmc3RhdGUtPnNlbSk7CiAJCQlzY2hlZHVsZSgpOwogIAkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewotCQkJCWlmKCFyZXQpIHJldCA9IC1FUkVTVEFSVFNZUzsKKwkJCQlpZiAoIXJldCkKKwkJCQkJcmV0ID0gLUVSRVNUQVJUU1lTOwogCQkJCWdvdG8gb3V0OwogIAkJCX0KIAkJCW11dGV4X2xvY2soJnN0YXRlLT5zZW0pOwotCQkJaWYgKGRtYWJ1Zi0+bWFwcGVkKQotCQkJewotCQkJCWlmKCFyZXQpCisJCQlpZiAoZG1hYnVmLT5tYXBwZWQpIHsKKwkJCQlpZiAoIXJldCkKIAkJCQkJcmV0ID0gLUVOWElPOwogCQkJCWdvdG8gb3V0OwogCQkJfQogIAkJCWNvbnRpbnVlOwogIAkJfQogCQlpZiAoY29weV9mcm9tX3VzZXIoZG1hYnVmLT5yYXdidWYgKyBzd3B0ciwgYnVmZmVyLCBjbnQpKSB7Ci0JCQlpZiAoIXJldCkgcmV0ID0gLUVGQVVMVDsKKwkJCWlmICghcmV0KQorCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQlnb3RvIG91dDsKIAkJfQogCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3RhdGUtPmNhcmQtPmxvY2ssIGZsYWdzKTsKIAkJc3dwdHIgPSAoc3dwdHIgKyBjbnQpICUgZG1hYnVmLT5kbWFzaXplOwogCQlkbWFidWYtPnN3cHRyID0gc3dwdHI7CiAJCWRtYWJ1Zi0+Y291bnQgKz0gY250OwotCQlpZihkbWFidWYtPmNvdW50ID4gZG1hYnVmLT5kbWFzaXplKQotCQl7CisJCWlmIChkbWFidWYtPmNvdW50ID4gZG1hYnVmLT5kbWFzaXplKSB7CiAJCQlDU19EQkdPVVQoQ1NfV0FWRV9XUklURSB8IENTX0VSUk9SLCAyLCBwcmludGsoCiAJCQkgICAgImNzNDZ4eDogY3Nfd3JpdGUoKSBkLT5jb3VudCA+IGRtYXNpemUgLSByZXNldHRpbmdcbiIpKTsKIAkJCWRtYWJ1Zi0+Y291bnQgPSBkbWFidWYtPmRtYXNpemU7CkBAIC0yMjg0LDM4ICsyMjI4LDMyIEBACiAJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKIAogCUNTX0RCR09VVChDU19XQVZFX1dSSVRFIHwgQ1NfRlVOQ1RJT04sIDIsIAotCQlwcmludGsoImNzNDZ4eDogY3Nfd3JpdGUoKS0gcmV0PSV6ZFxuIiwgcmV0KSApOworCQlwcmludGsoImNzNDZ4eDogY3Nfd3JpdGUoKS0gcmV0PSV6ZFxuIiwgcmV0KSk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBjc19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpCiB7Ci0Jc3RydWN0IGNzX2NhcmQgKmNhcmQgPSAoc3RydWN0IGNzX2NhcmQgKilmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmOwogCXN0cnVjdCBjc19zdGF0ZSAqc3RhdGU7Ci0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGludCBtYXNrID0gMDsKIAogCUNTX0RCR09VVChDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3BvbGwoKSsgXG4iKSk7Ci0JaWYgKCEoZmlsZS0+Zl9tb2RlICYgKEZNT0RFX1dSSVRFIHwgRk1PREVfUkVBRCkpKQotCXsKKwlpZiAoIShmaWxlLT5mX21vZGUgJiAoRk1PREVfV1JJVEUgfCBGTU9ERV9SRUFEKSkpIHsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQotCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkKLQl7CisJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7CiAJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOwotCQlpZihzdGF0ZSkKLQkJeworCQlpZiAoc3RhdGUpIHsKIAkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJcG9sbF93YWl0KGZpbGUsICZkbWFidWYtPndhaXQsIHdhaXQpOwogCQl9CiAJfQotCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQotCXsKKwlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewogCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCXBvbGxfd2FpdChmaWxlLCAmZG1hYnVmLT53YWl0LCB3YWl0KTsKIAkJfQpAQCAtMjMyNSw4ICsyMjYzLDcgQEAKIAljc191cGRhdGVfcHRyKGNhcmQsIENTX0ZBTFNFKTsKIAlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewogCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCWlmIChkbWFidWYtPmNvdW50ID49IChzaWduZWQpZG1hYnVmLT5mcmFnc2l6ZSkKIAkJCQltYXNrIHw9IFBPTExJTiB8IFBPTExSRE5PUk07CkBAIC0yMzM0LDggKzIyNzEsNyBAQAogCX0KIAlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKIAkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07Ci0JCWlmKHN0YXRlKQotCQl7CisJCWlmIChzdGF0ZSkgewogCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQlpZiAoZG1hYnVmLT5tYXBwZWQpIHsKIAkJCQlpZiAoZG1hYnVmLT5jb3VudCA+PSAoc2lnbmVkKWRtYWJ1Zi0+ZnJhZ3NpemUpCkBAIC0yMzY0LDcgKzIzMDAsNyBAQAogIAogc3RhdGljIGludCBjc19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKLQlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3QgY3Nfc3RhdGUgKnN0YXRlOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKIAlpbnQgcmV0ID0gMDsKQEAgLTIzNzYsOCArMjMxMiw3IEBACiAKIAlpZiAodm1hLT52bV9mbGFncyAmIFZNX1dSSVRFKSB7CiAJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOwotCQlpZihzdGF0ZSkKLQkJeworCQlpZiAoc3RhdGUpIHsKIAkJCUNTX0RCR09VVChDU19PUEVOLCAyLCBwcmludGsoCiAJCQkgICJjczQ2eHg6IGNzX21tYXAoKSBWTV9XUklURSAtIHN0YXRlIFRSVUUgcHJvZ19kbWFidWYgREFDXG4iKSApOwogCQkJaWYgKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpICE9IDApCkBAIC0yMzg1LDggKzIzMjAsNyBAQAogCQl9CiAJfSBlbHNlIGlmICh2bWEtPnZtX2ZsYWdzICYgVk1fUkVBRCkgewogCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJaWYgKHN0YXRlKSB7CiAJCQlDU19EQkdPVVQoQ1NfT1BFTiwgMiwgcHJpbnRrKAogCQkJICAiY3M0Nnh4OiBjc19tbWFwKCkgVk1fUkVBRCAtIHN0YXRlIFRSVUUgcHJvZ19kbWFidWYgQURDXG4iKSApOwogCQkJaWYgKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpICE9IDApCkBAIC0yNDE0LDggKzIzNDgsNyBAQAogCiAJbXV0ZXhfbG9jaygmc3RhdGUtPnNlbSk7CiAJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7Ci0JaWYgKGNzNHhfcGdvZmYodm1hKSAhPSAwKQotCXsKKwlpZiAoY3M0eF9wZ29mZih2bWEpICE9IDApIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMjQyMywxNSArMjM1NiwxMyBAQAogCiAJQ1NfREJHT1VUKENTX1BBUk1TLCAyLCBwcmludGsoImNzNDZ4eDogY3NfbW1hcCgpOiBzaXplPSVkXG4iLCh1bnNpZ25lZClzaXplKSApOwogCi0JaWYgKHNpemUgPiAoUEFHRV9TSVpFIDw8IGRtYWJ1Zi0+YnVmb3JkZXIpKQotCXsKKwlpZiAoc2l6ZSA+IChQQUdFX1NJWkUgPDwgZG1hYnVmLT5idWZvcmRlcikpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CiAJfQogCWlmIChyZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtPnZtX3N0YXJ0LAogCQkJICAgICB2aXJ0X3RvX3BoeXMoZG1hYnVmLT5yYXdidWYpID4+IFBBR0VfU0hJRlQsCi0JCQkgICAgIHNpemUsIHZtYS0+dm1fcGFnZV9wcm90KSkKLQl7CisJCQkgICAgIHNpemUsIHZtYS0+dm1fcGFnZV9wcm90KSkgewogCQlyZXQgPSAtRUFHQUlOOwogCQlnb3RvIG91dDsKIAl9CkBAIC0yNDQ1LDI1ICsyMzc2LDI0IEBACiAKIHN0YXRpYyBpbnQgY3NfaW9jdGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCBjc19jYXJkICpjYXJkID0gKHN0cnVjdCBjc19jYXJkICopZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBjc19jYXJkICpjYXJkID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBjc19zdGF0ZSAqc3RhdGU7Ci0Jc3RydWN0IGRtYWJ1ZiAqZG1hYnVmPU5VTEw7CisJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWF1ZGlvX2J1Zl9pbmZvIGFiaW5mbzsKIAljb3VudF9pbmZvIGNpbmZvOwotCWludCB2YWwsIHZhbHNhdmUsIG1hcHBlZCwgcmV0OworCWludCB2YWwsIHZhbHNhdmUsIHJldDsKKwlpbnQgbWFwcGVkID0gMDsKIAl2b2lkIF9fdXNlciAqYXJncCA9ICh2b2lkIF9fdXNlciAqKWFyZzsKIAlpbnQgX191c2VyICpwID0gYXJncDsKIAotCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKLQlpZihzdGF0ZSkKLQl7CisJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF07CisJaWYgKHN0YXRlKSB7CiAJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQltYXBwZWQgPSAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgJiYgZG1hYnVmLT5tYXBwZWQ7CiAJfQotCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQlpZihzdGF0ZSkKLQl7CisJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJaWYgKHN0YXRlKSB7CiAJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQltYXBwZWQgfD0gKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSAmJiBkbWFidWYtPm1hcHBlZDsKIAl9CkBAIC0yNDcyLDE3ICsyNDAyLDE0IEBACiAJcHJpbnRpb2N0bChjbWQpOwogI2VuZGlmCiAKLQlzd2l0Y2ggKGNtZCkgCi0JeworCXN3aXRjaCAoY21kKSB7CiAJY2FzZSBPU1NfR0VUVkVSU0lPTjoKIAkJcmV0dXJuIHB1dF91c2VyKFNPVU5EX1ZFUlNJT04sIHApOwotCiAJY2FzZSBTTkRDVExfRFNQX1JFU0VUOgogCQkvKiBGSVhNRTogc3Bpbl9sb2NrID8gKi8KIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7Ci0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMV07Ci0JCQlpZihzdGF0ZSkKLQkJCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJc3RvcF9kYWMoc3RhdGUpOwogCQkJCXN5bmNocm9uaXplX2lycShjYXJkLT5pcnEpOwpAQCAtMjQ5NSw5ICsyNDIyLDggQEAKIAkJCX0KIAkJfQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewotCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJaWYoc3RhdGUpCi0JCQl7CisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCWlmIChzdGF0ZSkgewogCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJCXN0b3BfYWRjKHN0YXRlKTsKIAkJCQlzeW5jaHJvbml6ZV9pcnEoY2FyZC0+aXJxKTsKQEAgLTI1MTEsMjAgKzI0MzcsMTcgQEAKIAkJfQogCQlDU19EQkdPVVQoQ1NfSU9DVEwsIDIsIHByaW50aygiY3M0Nnh4OiBEU1BfUkVTRVQoKS1cbiIpICk7CiAJCXJldHVybiAwOwotCiAJY2FzZSBTTkRDVExfRFNQX1NZTkM6CiAJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkKIAkJCXJldHVybiBkcmFpbl9kYWMoc3RhdGUsIGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKTsKIAkJcmV0dXJuIDA7Ci0KIAljYXNlIFNORENUTF9EU1BfU1BFRUQ6IC8qIHNldCBzYW1wbGUgcmF0ZSAqLwogCQlpZiAoZ2V0X3VzZXIodmFsLCBwKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCQlpZiAodmFsID49IDApIHsKIAkJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSB7Ci0JCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJCWlmKHN0YXRlKQotCQkJCXsKKwkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCQlpZiAoc3RhdGUpIHsKIAkJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJCXN0b3BfYWRjKHN0YXRlKTsKIAkJCQkJZG1hYnVmLT5yZWFkeSA9IDA7CkBAIC0yNTM0LDkgKzI0NTcsOCBAQAogCQkJCX0KIAkJCX0KIAkJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkgewotCQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJCQlpZihzdGF0ZSkKLQkJCQl7CisJCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJCQkJaWYgKHN0YXRlKSB7CiAJCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJCQlzdG9wX2RhYyhzdGF0ZSk7CiAJCQkJCWRtYWJ1Zi0+cmVhZHkgPSAwOwpAQCAtMjU1MywxOSArMjQ3NSwxNyBAQAogCQkJcmV0dXJuIHB1dF91c2VyKGRtYWJ1Zi0+cmF0ZSwgcCk7CiAJCX0KIAkJcmV0dXJuIHB1dF91c2VyKDAsIHApOwotCiAJY2FzZSBTTkRDVExfRFNQX1NURVJFTzogLyogc2V0IHN0ZXJlbyBvciBtb25vIGNoYW5uZWwgKi8KIAkJaWYgKGdldF91c2VyKHZhbCwgcCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7Ci0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMV07Ci0JCQlpZihzdGF0ZSkKLQkJCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJc3RvcF9kYWMoc3RhdGUpOwogCQkJCWRtYWJ1Zi0+cmVhZHkgPSAwOwogCQkJCWRtYWJ1Zi0+U0dvayA9IDA7Ci0JCQkJaWYodmFsKQorCQkJCWlmICh2YWwpCiAJCQkJCWRtYWJ1Zi0+Zm10IHw9IENTX0ZNVF9TVEVSRU87CiAJCQkJZWxzZQogCQkJCQlkbWFidWYtPmZtdCAmPSB+Q1NfRk1UX1NURVJFTzsKQEAgLTI1NzcsMTQgKzI0OTcsMTMgQEAKIAkJCX0KIAkJfQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewotCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJaWYoc3RhdGUpCi0JCQl7CisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCWlmIChzdGF0ZSkgewogCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJCXN0b3BfYWRjKHN0YXRlKTsKIAkJCQlkbWFidWYtPnJlYWR5ID0gMDsKIAkJCQlkbWFidWYtPlNHb2sgPSAwOwotCQkJCWlmKHZhbCkKKwkJCQlpZiAodmFsKQogCQkJCQlkbWFidWYtPmZtdCB8PSBDU19GTVRfU1RFUkVPOwogCQkJCWVsc2UKIAkJCQkJZG1hYnVmLT5mbXQgJj0gfkNTX0ZNVF9TVEVSRU87CkBAIC0yNTk2LDEyICsyNTE1LDEwIEBACiAJCQl9CiAJCX0KIAkJcmV0dXJuIDA7Ci0KIAljYXNlIFNORENUTF9EU1BfR0VUQkxLU0laRToKIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7Ci0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMV07Ci0JCQlpZihzdGF0ZSkKLQkJCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJaWYgKCh2YWwgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQogCQkJCQlyZXR1cm4gdmFsOwpAQCAtMjYwOSw5ICsyNTI2LDggQEAKIAkJCX0KIAkJfQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewotCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJaWYoc3RhdGUpCi0JCQl7CisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCWlmIChzdGF0ZSkgewogCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJCWlmICgodmFsID0gcHJvZ19kbWFidWYoc3RhdGUpKSkKIAkJCQkJcmV0dXJuIHZhbDsKQEAgLTI2MjAsMTAgKzI1MzYsOCBAQAogCQkJfQogCQl9CiAJCXJldHVybiBwdXRfdXNlcigwLCBwKTsKLQogCWNhc2UgU05EQ1RMX0RTUF9HRVRGTVRTOiAvKiBSZXR1cm5zIGEgbWFzayBvZiBzdXBwb3J0ZWQgc2FtcGxlIGZvcm1hdCovCiAJCXJldHVybiBwdXRfdXNlcihBRk1UX1MxNl9MRSB8IEFGTVRfVTgsIHApOwotCiAJY2FzZSBTTkRDVExfRFNQX1NFVEZNVDogLyogU2VsZWN0IHNhbXBsZSBmb3JtYXQgKi8KIAkJaWYgKGdldF91c2VyKHZhbCwgcCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKQEAgLTI2MzUsODggKzI1NDksNzUgQEAKIAkJCXZhbCA9PSBBRk1UX1U4ID8gIjhCaXQgVW5zaWduZWQiIDogIiIpICk7CiAJCXZhbHNhdmUgPSB2YWw7CiAJCWlmICh2YWwgIT0gQUZNVF9RVUVSWSkgewotCQkJaWYodmFsPT1BRk1UX1MxNl9MRSB8fCB2YWw9PUFGTVRfVTgpCi0JCQl7CisJCQlpZiAodmFsPT1BRk1UX1MxNl9MRSB8fCB2YWw9PUFGTVRfVTgpIHsKIAkJCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKLQkJCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQkJCQlpZihzdGF0ZSkKLQkJCQkJeworCQkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJCQkJaWYgKHN0YXRlKSB7CiAJCQkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCQkJCXN0b3BfZGFjKHN0YXRlKTsKIAkJCQkJCWRtYWJ1Zi0+cmVhZHkgPSAwOwogCQkJCQkJZG1hYnVmLT5TR29rID0gMDsKLQkJCQkJCWlmKHZhbD09QUZNVF9TMTZfTEUpCisJCQkJCQlpZiAodmFsID09IEFGTVRfUzE2X0xFKQogCQkJCQkJCWRtYWJ1Zi0+Zm10IHw9IENTX0ZNVF8xNkJJVDsKIAkJCQkJCWVsc2UKIAkJCQkJCQlkbWFidWYtPmZtdCAmPSB+Q1NfRk1UXzE2QklUOwogCQkJCQkJY3Nfc2V0X2Rpdmlzb3IoZG1hYnVmKTsKLQkJCQkJCWlmKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQorCQkJCQkJaWYgKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQogCQkJCQkJCXJldHVybiByZXQ7CiAJCQkJCX0KIAkJCQl9CiAJCQkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpIHsKIAkJCQkJdmFsID0gdmFsc2F2ZTsKLQkJCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJCQlpZihzdGF0ZSkKLQkJCQkJeworCQkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCQkJaWYgKHN0YXRlKSB7CiAJCQkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCQkJCXN0b3BfYWRjKHN0YXRlKTsKIAkJCQkJCWRtYWJ1Zi0+cmVhZHkgPSAwOwogCQkJCQkJZG1hYnVmLT5TR29rID0gMDsKLQkJCQkJCWlmKHZhbD09QUZNVF9TMTZfTEUpCisJCQkJCQlpZiAodmFsID09IEFGTVRfUzE2X0xFKQogCQkJCQkJCWRtYWJ1Zi0+Zm10IHw9IENTX0ZNVF8xNkJJVDsKIAkJCQkJCWVsc2UKIAkJCQkJCQlkbWFidWYtPmZtdCAmPSB+Q1NfRk1UXzE2QklUOwogCQkJCQkJY3Nfc2V0X2Rpdmlzb3IoZG1hYnVmKTsKLQkJCQkJCWlmKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQorCQkJCQkJaWYgKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQogCQkJCQkJCXJldHVybiByZXQ7CiAJCQkJCX0KIAkJCQl9Ci0JCQl9Ci0JCQllbHNlCi0JCQl7CisJCQl9IGVsc2UgewogCQkJCUNTX0RCR09VVChDU19JT0NUTCB8IENTX0VSUk9SLCAyLCBwcmludGsoCiAJCQkJICAgICJjczQ2eHg6IERTUF9TRVRGTVQoKSBVbnN1cHBvcnRlZCBmb3JtYXQgKDB4JXgpXG4iLAogCQkJCQl2YWxzYXZlKSApOwogCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJaWYoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpCi0JCQl7Ci0JCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQkJCWlmKHN0YXRlKQorCQl9IGVsc2UgeworCQkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7CisJCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJCQkJaWYgKHN0YXRlKQogCQkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKLQkJCX0KLQkJCWVsc2UgaWYoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkKLQkJCXsKLQkJCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMF07Ci0JCQkJaWYoc3RhdGUpCisJCQl9IGVsc2UgaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpIHsKKwkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCQlpZiAoc3RhdGUpCiAJCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJfQogCQl9Ci0JCWlmKGRtYWJ1ZikKLQkJewotCQkJaWYoZG1hYnVmLT5mbXQgJiBDU19GTVRfMTZCSVQpCisJCWlmIChkbWFidWYpIHsKKwkJCWlmIChkbWFidWYtPmZtdCAmIENTX0ZNVF8xNkJJVCkKIAkJCQlyZXR1cm4gcHV0X3VzZXIoQUZNVF9TMTZfTEUsIHApOwogCQkJZWxzZQogCQkJCXJldHVybiBwdXRfdXNlcihBRk1UX1U4LCBwKTsKIAkJfQogCQlyZXR1cm4gcHV0X3VzZXIoMCwgcCk7Ci0KIAljYXNlIFNORENUTF9EU1BfQ0hBTk5FTFM6CiAJCWlmIChnZXRfdXNlcih2YWwsIHApKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWlmICh2YWwgIT0gMCkgewogCQkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7Ci0JCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQkJCWlmKHN0YXRlKQotCQkJCXsKKwkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJCQlpZiAoc3RhdGUpIHsKIAkJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJCXN0b3BfZGFjKHN0YXRlKTsKIAkJCQkJZG1hYnVmLT5yZWFkeSA9IDA7CiAJCQkJCWRtYWJ1Zi0+U0dvayA9IDA7Ci0JCQkJCWlmKHZhbD4xKQorCQkJCQlpZiAodmFsID4gMSkKIAkJCQkJCWRtYWJ1Zi0+Zm10IHw9IENTX0ZNVF9TVEVSRU87CiAJCQkJCWVsc2UKIAkJCQkJCWRtYWJ1Zi0+Zm10ICY9IH5DU19GTVRfU1RFUkVPOwpAQCAtMjcyNiwxNCArMjYyNywxMyBAQAogCQkJCX0KIAkJCX0KIAkJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSB7Ci0JCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJCWlmKHN0YXRlKQotCQkJCXsKKwkJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCQlpZiAoc3RhdGUpIHsKIAkJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJCXN0b3BfYWRjKHN0YXRlKTsKIAkJCQkJZG1hYnVmLT5yZWFkeSA9IDA7CiAJCQkJCWRtYWJ1Zi0+U0dvayA9IDA7Ci0JCQkJCWlmKHZhbD4xKQorCQkJCQlpZiAodmFsID4gMSkKIAkJCQkJCWRtYWJ1Zi0+Zm10IHw9IENTX0ZNVF9TVEVSRU87CiAJCQkJCWVsc2UKIAkJCQkJCWRtYWJ1Zi0+Zm10ICY9IH5DU19GTVRfU1RFUkVPOwpAQCAtMjc0NSwxOSArMjY0NSwxNiBAQAogCQl9CiAJCXJldHVybiBwdXRfdXNlcigoZG1hYnVmLT5mbXQgJiBDU19GTVRfU1RFUkVPKSA/IDIgOiAxLAogCQkJCXApOwotCiAJY2FzZSBTTkRDVExfRFNQX1BPU1Q6CiAJCS8qCiAJCSAqIFRoZXJlIHdpbGwgYmUgYSBsb25nZXIgdGhhbiBub3JtYWwgcGF1c2UgaW4gdGhlIGRhdGEuCiAJCSAqIHNvLi4uIGRvIG5vdGhpbmcsIGJlY2F1c2UgdGhlcmUgaXMgbm90aGluZyB0aGF0IHdlIGNhbiBkby4KIAkJICovCiAJCXJldHVybiAwOwotCiAJY2FzZSBTTkRDVExfRFNQX1NVQkRJVklERToKIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7Ci0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMV07Ci0JCQlpZihzdGF0ZSkKLQkJCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJaWYgKGRtYWJ1Zi0+c3ViZGl2aXNpb24pCiAJCQkJCXJldHVybiAtRUlOVkFMOwpAQCAtMjc2OSw5ICsyNjY2LDggQEAKIAkJCX0KIAkJfQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewotCQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzBdOwotCQkJaWYoc3RhdGUpCi0JCQl7CisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKKwkJCWlmIChzdGF0ZSkgewogCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJCWlmIChkbWFidWYtPnN1YmRpdmlzaW9uKQogCQkJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTI3ODMsMzcgKzI2NzksMzEgQEAKIAkJCX0KIAkJfQogCQlyZXR1cm4gMDsKLQogCWNhc2UgU05EQ1RMX0RTUF9TRVRGUkFHTUVOVDoKIAkJaWYgKGdldF91c2VyKHZhbCwgcCkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKLQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJCWlmKHN0YXRlKQotCQkJeworCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJCQlpZiAoc3RhdGUpIHsKIAkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCQlkbWFidWYtPm9zc2ZyYWdzaGlmdCA9IHZhbCAmIDB4ZmZmZjsKIAkJCQlkbWFidWYtPm9zc21heGZyYWdzID0gKHZhbCA+PiAxNikgJiAweGZmZmY7CiAJCQl9CiAJCX0KIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpIHsKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKLQkJCWlmKHN0YXRlKQotCQkJeworCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF07CisJCQlpZiAoc3RhdGUpIHsKIAkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCQlkbWFidWYtPm9zc2ZyYWdzaGlmdCA9IHZhbCAmIDB4ZmZmZjsKIAkJCQlkbWFidWYtPm9zc21heGZyYWdzID0gKHZhbCA+PiAxNikgJiAweGZmZmY7CiAJCQl9CiAJCX0KIAkJcmV0dXJuIDA7Ci0KIAljYXNlIFNORENUTF9EU1BfR0VUT1NQQUNFOgogCQlpZiAoIShmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQlpZihzdGF0ZSkKLQkJeworCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZS0+Y2FyZC0+bG9jaywgZmxhZ3MpOwogCQkJY3NfdXBkYXRlX3B0cihjYXJkLCBDU19UUlVFKTsKQEAgLTI4MzIsMTMgKzI3MjIsMTEgQEAKIAkJCXJldHVybiBjb3B5X3RvX3VzZXIoYXJncCwgJmFiaW5mbywgc2l6ZW9mKGFiaW5mbykpID8gLUVGQVVMVCA6IDA7CiAJCX0KIAkJcmV0dXJuIC1FTk9ERVY7Ci0KIAljYXNlIFNORENUTF9EU1BfR0VUSVNQQUNFOgogCQlpZiAoIShmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSkKIAkJCXJldHVybiAtRUlOVkFMOwotCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMF07Ci0JCWlmKHN0YXRlKQotCQl7CisJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzBdOworCQlpZiAoc3RhdGUpIHsKIAkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnN0YXRlLT5jYXJkLT5sb2NrLCBmbGFncyk7CiAJCQljc191cGRhdGVfcHRyKGNhcmQsIENTX1RSVUUpOwpAQCAtMjg1MCw0OCArMjczOCwzOSBAQAogCQkJcmV0dXJuIGNvcHlfdG9fdXNlcihhcmdwLCAmYWJpbmZvLCBzaXplb2YoYWJpbmZvKSkgPyAtRUZBVUxUIDogMDsKIAkJfQogCQlyZXR1cm4gLUVOT0RFVjsKLQogCWNhc2UgU05EQ1RMX0RTUF9OT05CTE9DSzoKIAkJZmlsZS0+Zl9mbGFncyB8PSBPX05PTkJMT0NLOwogCQlyZXR1cm4gMDsKLQogCWNhc2UgU05EQ1RMX0RTUF9HRVRDQVBTOgogCQlyZXR1cm4gcHV0X3VzZXIoRFNQX0NBUF9SRUFMVElNRXxEU1BfQ0FQX1RSSUdHRVJ8RFNQX0NBUF9NTUFQLAogCQkJICAgIHApOwotCiAJY2FzZSBTTkRDVExfRFNQX0dFVFRSSUdHRVI6CiAJCXZhbCA9IDA7CiAJCUNTX0RCR09VVChDU19JT0NUTCwgMiwgcHJpbnRrKCJjczQ2eHg6IERTUF9HRVRUUklHR0VSKCkrXG4iKSApOwotCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpCi0JCXsKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJCWlmKHN0YXRlKQotCQkJeworCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7Ci0JCQkJaWYoZG1hYnVmLT5lbmFibGUgJiBEQUNfUlVOTklORykKKwkJCQlpZiAoZG1hYnVmLT5lbmFibGUgJiBEQUNfUlVOTklORykKIAkJCQkJdmFsIHw9IFBDTV9FTkFCTEVfSU5QVVQ7CiAJCQl9CiAJCX0KLQkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpCi0JCXsKLQkJCWlmKHN0YXRlKQotCQkJewotCQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKKwkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpIHsKKwkJCWlmIChzdGF0ZSkgeworCQkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzBdOwogCQkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwotCQkJCWlmKGRtYWJ1Zi0+ZW5hYmxlICYgQURDX1JVTk5JTkcpCisJCQkJaWYgKGRtYWJ1Zi0+ZW5hYmxlICYgQURDX1JVTk5JTkcpCiAJCQkJCXZhbCB8PSBQQ01fRU5BQkxFX09VVFBVVDsKIAkJCX0KIAkJfQogCQlDU19EQkdPVVQoQ1NfSU9DVEwsIDIsIHByaW50aygiY3M0Nnh4OiBEU1BfR0VUVFJJR0dFUigpLSB2YWw9MHgleFxuIix2YWwpICk7CiAJCXJldHVybiBwdXRfdXNlcih2YWwsIHApOwotCiAJY2FzZSBTTkRDVExfRFNQX1NFVFRSSUdHRVI6CiAJCWlmIChnZXRfdXNlcih2YWwsIHApKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSB7Ci0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMF07Ci0JCQlpZihzdGF0ZSkKLQkJCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzBdOworCQkJaWYgKHN0YXRlKSB7CiAJCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQkJaWYgKHZhbCAmIFBDTV9FTkFCTEVfSU5QVVQpIHsKIAkJCQkJaWYgKCFkbWFidWYtPnJlYWR5ICYmIChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQpAQCAtMjkwMiw5ICsyNzgxLDggQEAKIAkJCX0KIAkJfQogCQlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJCWlmKHN0YXRlKQotCQkJeworCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV07CisJCQlpZiAoc3RhdGUpIHsKIAkJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCQlpZiAodmFsICYgUENNX0VOQUJMRV9PVVRQVVQpIHsKIAkJCQkJaWYgKCFkbWFidWYtPnJlYWR5ICYmIChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQpAQCAtMjkxNSwxMyArMjc5MywxMSBAQAogCQkJfQogCQl9CiAJCXJldHVybiAwOwotCiAJY2FzZSBTTkRDVExfRFNQX0dFVElQVFI6CiAJCWlmICghKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF07CisJCWlmIChzdGF0ZSkgewogCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3RhdGUtPmNhcmQtPmxvY2ssIGZsYWdzKTsKIAkJCWNzX3VwZGF0ZV9wdHIoY2FyZCwgQ1NfVFJVRSk7CkBAIC0yOTM0LDI4ICsyODEwLDIzIEBACiAJCQlyZXR1cm4gMDsKIAkJfQogCQlyZXR1cm4gLUVOT0RFVjsKLQogCWNhc2UgU05EQ1RMX0RTUF9HRVRPUFRSOgogCQlpZiAoIShmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQlpZihzdGF0ZSkKLQkJeworCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZS0+Y2FyZC0+bG9jaywgZmxhZ3MpOwogCQkJY3NfdXBkYXRlX3B0cihjYXJkLCBDU19UUlVFKTsKIAkJCWNpbmZvLmJ5dGVzID0gZG1hYnVmLT50b3RhbF9ieXRlczsKLQkJCWlmIChkbWFidWYtPm1hcHBlZCkKLQkJCXsKKwkJCWlmIChkbWFidWYtPm1hcHBlZCkgewogCQkJCWNpbmZvLmJsb2NrcyA9IChjaW5mby5ieXRlcyA+PiBkbWFidWYtPmZyYWdzaGlmdCkgCiAJCQkJCQkJLSBkbWFidWYtPmJsb2NrczsKIAkJCQlDU19EQkdPVVQoQ1NfUEFSTVMsIDgsIAogCQkJCQlwcmludGsoInRvdGFsX2J5dGVzPSVkIGJsb2Nrcz0lZCBkbWFidWYtPmJsb2Nrcz0lZFxuIiwgCiAJCQkJCWNpbmZvLmJ5dGVzLGNpbmZvLmJsb2NrcyxkbWFidWYtPmJsb2NrcykgKTsKIAkJCQlkbWFidWYtPmJsb2NrcyA9IGNpbmZvLmJ5dGVzID4+IGRtYWJ1Zi0+ZnJhZ3NoaWZ0OwotCQkJfQotCQkJZWxzZQotCQkJeworCQkJfSBlbHNlIHsKIAkJCQljaW5mby5ibG9ja3MgPSBkbWFidWYtPmNvdW50ID4+IGRtYWJ1Zi0+ZnJhZ3NoaWZ0OwogCQkJfQogCQkJY2luZm8ucHRyID0gZG1hYnVmLT5od3B0cjsKQEAgLTI5NjksNjYgKzI4NDAsNTQgQEAKIAkJCXJldHVybiAwOwogCQl9CiAJCXJldHVybiAtRU5PREVWOwotCiAJY2FzZSBTTkRDVExfRFNQX1NFVERVUExFWDoKIAkJcmV0dXJuIDA7Ci0KIAljYXNlIFNORENUTF9EU1BfR0VUT0RFTEFZOgogCQlpZiAoIShmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJc3RhdGUgPSAoc3RydWN0IGNzX3N0YXRlICopY2FyZC0+c3RhdGVzWzFdOwotCQlpZihzdGF0ZSkKLQkJeworCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZS0+Y2FyZC0+bG9jaywgZmxhZ3MpOwogCQkJY3NfdXBkYXRlX3B0cihjYXJkLCBDU19UUlVFKTsKIAkJCXZhbCA9IGRtYWJ1Zi0+Y291bnQ7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdGF0ZS0+Y2FyZC0+bG9jaywgZmxhZ3MpOwotCQl9Ci0JCWVsc2UKKwkJfSBlbHNlCiAJCQl2YWwgPSAwOwogCQlyZXR1cm4gcHV0X3VzZXIodmFsLCBwKTsKLQogCWNhc2UgU09VTkRfUENNX1JFQURfUkFURToKLQkJaWYoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKKwkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpCisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKIAkJZWxzZSAKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQlpZiAoc3RhdGUpIHsKIAkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJcmV0dXJuIHB1dF91c2VyKGRtYWJ1Zi0+cmF0ZSwgcCk7CiAJCX0KIAkJcmV0dXJuIHB1dF91c2VyKDAsIHApOwotCQkKLQogCWNhc2UgU09VTkRfUENNX1JFQURfQ0hBTk5FTFM6Ci0JCWlmKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpCi0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMF07CisJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQorCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF07CiAJCWVsc2UgCi0JCQlzdGF0ZSA9IChzdHJ1Y3QgY3Nfc3RhdGUgKiljYXJkLT5zdGF0ZXNbMV07Ci0JCWlmKHN0YXRlKQotCQl7CisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKKwkJaWYgKHN0YXRlKSB7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCXJldHVybiBwdXRfdXNlcigoZG1hYnVmLT5mbXQgJiBDU19GTVRfU1RFUkVPKSA/IDIgOiAxLAogCQkJCXApOwogCQl9CiAJCXJldHVybiBwdXRfdXNlcigwLCBwKTsKLQogCWNhc2UgU09VTkRfUENNX1JFQURfQklUUzoKLQkJaWYoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1swXTsKKwkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQpCisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXTsKIAkJZWxzZSAKLQkJCXN0YXRlID0gKHN0cnVjdCBjc19zdGF0ZSAqKWNhcmQtPnN0YXRlc1sxXTsKLQkJaWYoc3RhdGUpCi0JCXsKKwkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOworCQlpZiAoc3RhdGUpIHsKIAkJCWRtYWJ1ZiA9ICZzdGF0ZS0+ZG1hYnVmOwogCQkJcmV0dXJuIHB1dF91c2VyKChkbWFidWYtPmZtdCAmIENTX0ZNVF8xNkJJVCkgPyAKIAkJCSAgCUFGTVRfUzE2X0xFIDogQUZNVF9VOCwgcCk7CiAKIAkJfQogCQlyZXR1cm4gcHV0X3VzZXIoMCwgcCk7Ci0KIAljYXNlIFNORENUTF9EU1BfTUFQSU5CVUY6CiAJY2FzZSBTTkRDVExfRFNQX01BUE9VVEJVRjoKIAljYXNlIFNORENUTF9EU1BfU0VUU1lOQ1JPOgpAQCAtMzA1NywxOCArMjkxNiwxNSBAQAogCS8qIE1hbmFnZSB0aGUgRUFQRCBiaXQgb24gdGhlIENyeXN0YWwgNDI5NyAKIAkgICBhbmQgdGhlIEFuYWxvZyBBRDE4ODUgKi8KIAkgICAKLQlpbnQgb2xkPWNhcmQtPmFtcGxpZmllcjsKKwlpbnQgb2xkID0gY2FyZC0+YW1wbGlmaWVyOwogCQogCWNhcmQtPmFtcGxpZmllcis9Y2hhbmdlOwotCWlmKGNhcmQtPmFtcGxpZmllciAmJiAhb2xkKQotCXsKKwlpZiAoY2FyZC0+YW1wbGlmaWVyICYmICFvbGQpIHsKIAkJLyogVHVybiB0aGUgRUFQRCBhbXAgb24gKi8KIAkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgIEFDOTdfUE9XRVJfQ09OVFJPTCwgCiAJCQljc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpIHwKIAkJCQkweDgwMDApOwotCX0KLQllbHNlIGlmKG9sZCAmJiAhY2FyZC0+YW1wbGlmaWVyKQotCXsKKwl9IGVsc2UgaWYob2xkICYmICFjYXJkLT5hbXBsaWZpZXIpIHsKIAkJLyogVHVybiB0aGUgRUFQRCBhbXAgb2ZmICovCiAJCWNzX2FjOTdfc2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sICBBQzk3X1BPV0VSX0NPTlRST0wsIAogCQkJY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKSAmCkBAIC0zMDgzLDI1ICsyOTM5LDIxIEBACiAgCiBzdGF0aWMgdm9pZCBhbXBfaGVyY3VsZXMoc3RydWN0IGNzX2NhcmQgKmNhcmQsIGludCBjaGFuZ2UpCiB7Ci0JaW50IG9sZD1jYXJkLT5hbXBsaWZpZXI7Ci0JaWYoIWNhcmQpCi0JeworCWludCBvbGQgPSBjYXJkLT5hbXBsaWZpZXI7CisJaWYgKCFjYXJkKSB7CiAJCUNTX0RCR09VVChDU19FUlJPUiwgMiwgcHJpbnRrKEtFUk5fSU5GTyAKIAkJCSJjczQ2eHg6IGFtcF9oZXJjdWxlcygpIGNhbGxlZCBiZWZvcmUgaW5pdGlhbGl6ZWQuXG4iKSk7CiAJCXJldHVybjsKIAl9CiAJY2FyZC0+YW1wbGlmaWVyKz1jaGFuZ2U7Ci0JaWYoIChjYXJkLT5hbXBsaWZpZXIgJiYgIW9sZCkgJiYgIShoZXJjdWxlc19lZ3Bpb19kaXNhYmxlKSkKLQl7CisJaWYgKChjYXJkLT5hbXBsaWZpZXIgJiYgIW9sZCkgJiYgIShoZXJjdWxlc19lZ3Bpb19kaXNhYmxlKSkgewogCQlDU19EQkdPVVQoQ1NfUEFSTVMsIDQsIHByaW50ayhLRVJOX0lORk8gCiAJCQkiY3M0Nnh4OiBhbXBfaGVyY3VsZXMoKSBleHRlcm5hbCBhbXAgZW5hYmxlZFxuIikpOwogCQljczQ2MXhfcG9rZUJBMChjYXJkLCBCQTBfRUdQSU9EUiwgCiAJCQlFR1BJT0RSX0dQT0UyKTsgICAgIC8qIGVuYWJsZSBFR1BJTzIgb3V0cHV0ICovCiAJCWNzNDYxeF9wb2tlQkEwKGNhcmQsIEJBMF9FR1BJT1BUUiwgCiAJCQlFR1BJT1BUUl9HUFBUMik7ICAgLyogb3Blbi1kcmFpbiBvbiBvdXRwdXQgKi8KLQl9Ci0JZWxzZSBpZihvbGQgJiYgIWNhcmQtPmFtcGxpZmllcikKLQl7CisJfSBlbHNlIGlmIChvbGQgJiYgIWNhcmQtPmFtcGxpZmllcikgewogCQlDU19EQkdPVVQoQ1NfUEFSTVMsIDQsIHByaW50ayhLRVJOX0lORk8gCiAJCQkiY3M0Nnh4OiBhbXBfaGVyY3VsZXMoKSBleHRlcm5hbCBhbXAgZGlzYWJsZWRcbiIpKTsKIAkJY3M0NjF4X3Bva2VCQTAoY2FyZCwgQkEwX0VHUElPRFIsIDApOyAvKiBkaXNhYmxlICovCkBAIC0zMTI0LDMxICsyOTc2LDI4IEBACiAJdTE2IGNvbnRyb2w7CiAJdTggcHA7CiAJdW5zaWduZWQgbG9uZyBwb3J0OwotCWludCBvbGQ9Y2FyZC0+YWN0aXZlOworCWludCBvbGQgPSBjYXJkLT5hY3RpdmU7CiAJCiAJY2FyZC0+YWN0aXZlKz1jaGFuZ2U7CiAJCiAJYWNwaV9kZXYgPSBwY2lfZmluZF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgUENJX0RFVklDRV9JRF9JTlRFTF84MjM3MUFCXzMsIE5VTEwpOwotCWlmKGFjcGlfZGV2ID09IE5VTEwpCisJaWYgKGFjcGlfZGV2ID09IE5VTEwpCiAJCXJldHVybjsJCS8qIE5vdCBhIHRoaW5rcGFkIHRoYXRzIGZvciBzdXJlICovCiAKIAkvKiBGaW5kIHRoZSBjb250cm9sIHBvcnQgKi8JCQogCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGFjcGlfZGV2LCAweDQxLCAmcHApOwotCXBvcnQ9cHA8PDg7CisJcG9ydCA9IHBwIDw8IDg7CiAKIAkvKiBSZWFkIEFDUEkgcG9ydCAqLwkKLQljb250cm9sPWludyhwb3J0KzB4MTApOworCWNvbnRyb2wgPSBpbncocG9ydCArIDB4MTApOwogCiAJLyogRmxpcCBDTEtSVU4gb2ZmIHdoaWxlIHJ1bm5pbmcgKi8KLQlpZighY2FyZC0+YWN0aXZlICYmIG9sZCkKLQl7CisJaWYgKCFjYXJkLT5hY3RpdmUgJiYgb2xkKSB7CiAJCUNTX0RCR09VVChDU19QQVJNUyAsIDksIHByaW50ayggS0VSTl9JTkZPCiAJCQkiY3M0Nnh4OiBjbGtydW4oKSBlbmFibGUgY2xrcnVuIC0gY2hhbmdlPSVkIGFjdGl2ZT0lZFxuIiwKIAkJCQljaGFuZ2UsY2FyZC0+YWN0aXZlKSk7CiAJCW91dHcoY29udHJvbHwweDIwMDAsIHBvcnQrMHgxMCk7Ci0JfQotCWVsc2UgCi0JeworCX0gZWxzZSB7CiAJLyoKIAkqIHNvbWV0aW1lcyBvbiBhIHJlc3VtZSB0aGUgYml0IGlzIHNldCwgc28gYWx3YXlzIHJlc2V0IHRoZSBiaXQuCiAJKi8KQEAgLTMxNjIsMjAgKzMwMTEsMTkgQEAKIAkKIHN0YXRpYyBpbnQgY3Nfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IChzdHJ1Y3QgY3NfY2FyZCAqKWZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3QgY3Nfc3RhdGUgKnN0YXRlID0gTlVMTDsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWYgPSBOVUxMOwogCXN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5OwogICAgICAgICB1bnNpZ25lZCBpbnQgbWlub3IgPSBpbWlub3IoaW5vZGUpOwotCWludCByZXQ9MDsKKwlpbnQgcmV0ID0gMDsKIAl1bnNpZ25lZCBpbnQgdG1wOwogCiAJQ1NfREJHT1VUKENTX09QRU4gfCBDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX29wZW4oKSsgZmlsZT0lcCAlcyAlc1xuIiwKIAkJZmlsZSwgZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUgPyAiRk1PREVfV1JJVEUiIDogIiIsCiAJCWZpbGUtPmZfbW9kZSAmIEZNT0RFX1JFQUQgPyAiRk1PREVfUkVBRCIgOiAiIikgKTsKIAotCWxpc3RfZm9yX2VhY2goZW50cnksICZjczQ2eHhfZGV2cykKLQl7CisJbGlzdF9mb3JfZWFjaChlbnRyeSwgJmNzNDZ4eF9kZXZzKSB7CiAJCWNhcmQgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgY3NfY2FyZCwgbGlzdCk7CiAKIAkJaWYgKCEoKGNhcmQtPmRldl9hdWRpbyBeIG1pbm9yKSAmIH4weGYpKQpAQCAtMzE5MiwxMSArMzA0MCwxMCBAQAogCS8qCiAJICogaGFyZGNvZGUgc3RhdGVbMF0gZm9yIGNhcHR1cmUsIFsxXSBmb3IgcGxheWJhY2sKIAkgKi8KLQlpZihmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQotCXsKKwlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgewogCQlDU19EQkdPVVQoQ1NfV0FWRV9SRUFELCAyLCBwcmludGsoImNzNDZ4eDogY3Nfb3BlbigpIEZNT0RFX1JFQURcbiIpICk7CiAJCWlmIChjYXJkLT5zdGF0ZXNbMF0gPT0gTlVMTCkgewotCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF0gPSAoc3RydWN0IGNzX3N0YXRlICopCisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1swXSA9CiAJCQkJa21hbGxvYyhzaXplb2Yoc3RydWN0IGNzX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAoc3RhdGUgPT0gTlVMTCkKIAkJCQlyZXR1cm4gLUVOT01FTTsKQEAgLTMyMDQsMzYgKzMwNTEsMzIgQEAKIAkJCW11dGV4X2luaXQoJnN0YXRlLT5zZW0pOwogCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQlkbWFidWYtPnBidWYgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMIHwgR0ZQX0RNQSk7Ci0JCQlpZihkbWFidWYtPnBidWY9PU5VTEwpCi0JCQl7CisJCQlpZiAoZG1hYnVmLT5wYnVmID09IE5VTEwpIHsKIAkJCQlrZnJlZShzdGF0ZSk7Ci0JCQkJY2FyZC0+c3RhdGVzWzBdPU5VTEw7CisJCQkJY2FyZC0+c3RhdGVzWzBdID0gTlVMTDsKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCX0KLQkJfQotCQllbHNlCi0JCXsKKwkJfSBlbHNlIHsKIAkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzBdOwotCQkJaWYoc3RhdGUtPm9wZW5fbW9kZSAmIEZNT0RFX1JFQUQpCisJCQlpZiAoc3RhdGUtPm9wZW5fbW9kZSAmIEZNT0RFX1JFQUQpCiAJCQkJcmV0dXJuIC1FQlVTWTsKIAkJfQogCQlkbWFidWYtPmNoYW5uZWwgPSBjYXJkLT5hbGxvY19yZWNfcGNtX2NoYW5uZWwoY2FyZCk7CiAJCQkKIAkJaWYgKGRtYWJ1Zi0+Y2hhbm5lbCA9PSBOVUxMKSB7Ci0JCQlrZnJlZSAoY2FyZC0+c3RhdGVzWzBdKTsKKwkJCWtmcmVlKGNhcmQtPnN0YXRlc1swXSk7CiAJCQljYXJkLT5zdGF0ZXNbMF0gPSBOVUxMOwogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCX0KIAogCQkvKiBOb3cgdHVybiBvbiBleHRlcm5hbCBBTVAgaWYgbmVlZGVkICovCiAJCXN0YXRlLT5jYXJkID0gY2FyZDsKLQkJc3RhdGUtPmNhcmQtPmFjdGl2ZV9jdHJsKHN0YXRlLT5jYXJkLDEpOwotCQlzdGF0ZS0+Y2FyZC0+YW1wbGlmaWVyX2N0cmwoc3RhdGUtPmNhcmQsMSk7CisJCXN0YXRlLT5jYXJkLT5hY3RpdmVfY3RybChzdGF0ZS0+Y2FyZCwgMSk7CisJCXN0YXRlLT5jYXJkLT5hbXBsaWZpZXJfY3RybChzdGF0ZS0+Y2FyZCwgMSk7CiAJCQotCQlpZiggKHRtcCA9IGNzNDZ4eF9wb3dlcnVwKGNhcmQsIENTX1BPV0VSX0FEQykpICkKLQkJeworCQlpZiAoKHRtcCA9IGNzNDZ4eF9wb3dlcnVwKGNhcmQsIENTX1BPV0VSX0FEQykpKSB7CiAJCQlDU19EQkdPVVQoQ1NfRVJST1IgfCBDU19JTklULCAxLCBwcmludGsoS0VSTl9JTkZPIAotCQkJCSJjczQ2eHg6IGNzNDZ4eF9wb3dlcnVwIG9mIEFEQyBmYWlsZWQgKDB4JXgpXG4iLHRtcCkgKTsKKwkJCQkiY3M0Nnh4OiBjczQ2eHhfcG93ZXJ1cCBvZiBBREMgZmFpbGVkICgweCV4KVxuIiwgdG1wKSk7CiAJCQlyZXR1cm4gLUVJTzsKIAkJfQogCkBAIC0zMjYzLDExICszMTA2LDEwIEBACiAJCXN0YXRlLT5vcGVuX21vZGUgfD0gRk1PREVfUkVBRDsKIAkJbXV0ZXhfdW5sb2NrKCZzdGF0ZS0+b3Blbl9tdXRleCk7CiAJfQotCWlmKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKQotCXsKKwlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpIHsKIAkJQ1NfREJHT1VUKENTX09QRU4sIDIsIHByaW50aygiY3M0Nnh4OiBjc19vcGVuKCkgRk1PREVfV1JJVEVcbiIpICk7CiAJCWlmIChjYXJkLT5zdGF0ZXNbMV0gPT0gTlVMTCkgewotCQkJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMV0gPSAoc3RydWN0IGNzX3N0YXRlICopCisJCQlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXSA9CiAJCQkJa21hbGxvYyhzaXplb2Yoc3RydWN0IGNzX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAoc3RhdGUgPT0gTlVMTCkKIAkJCQlyZXR1cm4gLUVOT01FTTsKQEAgLTMyNzUsMzYgKzMxMTcsMzIgQEAKIAkJCW11dGV4X2luaXQoJnN0YXRlLT5zZW0pOwogCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQlkbWFidWYtPnBidWYgPSAodm9pZCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMIHwgR0ZQX0RNQSk7Ci0JCQlpZihkbWFidWYtPnBidWY9PU5VTEwpCi0JCQl7CisJCQlpZiAoZG1hYnVmLT5wYnVmID09IE5VTEwpIHsKIAkJCQlrZnJlZShzdGF0ZSk7Ci0JCQkJY2FyZC0+c3RhdGVzWzFdPU5VTEw7CisJCQkJY2FyZC0+c3RhdGVzWzFdID0gTlVMTDsKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAkJCX0KLQkJfQotCQllbHNlCi0JCXsKKwkJfSBlbHNlIHsKIAkJCXN0YXRlID0gY2FyZC0+c3RhdGVzWzFdOwotCQkJaWYoc3RhdGUtPm9wZW5fbW9kZSAmIEZNT0RFX1dSSVRFKQorCQkJaWYgKHN0YXRlLT5vcGVuX21vZGUgJiBGTU9ERV9XUklURSkKIAkJCQlyZXR1cm4gLUVCVVNZOwogCQl9CiAJCWRtYWJ1Zi0+Y2hhbm5lbCA9IGNhcmQtPmFsbG9jX3BjbV9jaGFubmVsKGNhcmQpOwogCQkJCiAJCWlmIChkbWFidWYtPmNoYW5uZWwgPT0gTlVMTCkgewotCQkJa2ZyZWUgKGNhcmQtPnN0YXRlc1sxXSk7CisJCQlrZnJlZShjYXJkLT5zdGF0ZXNbMV0pOwogCQkJY2FyZC0+c3RhdGVzWzFdID0gTlVMTDsKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CiAKIAkJLyogTm93IHR1cm4gb24gZXh0ZXJuYWwgQU1QIGlmIG5lZWRlZCAqLwogCQlzdGF0ZS0+Y2FyZCA9IGNhcmQ7Ci0JCXN0YXRlLT5jYXJkLT5hY3RpdmVfY3RybChzdGF0ZS0+Y2FyZCwxKTsKLQkJc3RhdGUtPmNhcmQtPmFtcGxpZmllcl9jdHJsKHN0YXRlLT5jYXJkLDEpOworCQlzdGF0ZS0+Y2FyZC0+YWN0aXZlX2N0cmwoc3RhdGUtPmNhcmQsIDEpOworCQlzdGF0ZS0+Y2FyZC0+YW1wbGlmaWVyX2N0cmwoc3RhdGUtPmNhcmQsIDEpOwogCi0JCWlmKCAodG1wID0gY3M0Nnh4X3Bvd2VydXAoY2FyZCwgQ1NfUE9XRVJfREFDKSkgKQotCQl7CisJCWlmICgodG1wID0gY3M0Nnh4X3Bvd2VydXAoY2FyZCwgQ1NfUE9XRVJfREFDKSkpIHsKIAkJCUNTX0RCR09VVChDU19FUlJPUiB8IENTX0lOSVQsIDEsIHByaW50ayhLRVJOX0lORk8gCi0JCQkJImNzNDZ4eDogY3M0Nnh4X3Bvd2VydXAgb2YgREFDIGZhaWxlZCAoMHgleClcbiIsdG1wKSApOworCQkJCSJjczQ2eHg6IGNzNDZ4eF9wb3dlcnVwIG9mIERBQyBmYWlsZWQgKDB4JXgpXG4iLCB0bXApKTsKIAkJCXJldHVybiAtRUlPOwogCQl9CiAJCQpAQCAtMzMzMywzMyArMzE3MSwyOSBAQAogCiAJCXN0YXRlLT5vcGVuX21vZGUgfD0gRk1PREVfV1JJVEU7CiAJCW11dGV4X3VubG9jaygmc3RhdGUtPm9wZW5fbXV0ZXgpOwotCQlpZigocmV0ID0gcHJvZ19kbWFidWYoc3RhdGUpKSkKKwkJaWYgKChyZXQgPSBwcm9nX2RtYWJ1ZihzdGF0ZSkpKQogCQkJcmV0dXJuIHJldDsKIAl9Ci0JQ1NfREJHT1VUKENTX09QRU4gfCBDU19GVU5DVElPTiwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX29wZW4oKS0gMFxuIikgKTsKKwlDU19EQkdPVVQoQ1NfT1BFTiB8IENTX0ZVTkNUSU9OLCAyLCBwcmludGsoImNzNDZ4eDogY3Nfb3BlbigpLSAwXG4iKSk7CiAJcmV0dXJuIG5vbnNlZWthYmxlX29wZW4oaW5vZGUsIGZpbGUpOwogfQogCiBzdGF0aWMgaW50IGNzX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7Ci0Jc3RydWN0IGNzX2NhcmQgKmNhcmQgPSAoc3RydWN0IGNzX2NhcmQgKilmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmOwogCXN0cnVjdCBjc19zdGF0ZSAqc3RhdGU7CiAJdW5zaWduZWQgaW50IHRtcDsKIAlDU19EQkdPVVQoQ1NfUkVMRUFTRSB8IENTX0ZVTkNUSU9OLCAyLCBwcmludGsoImNzNDZ4eDogY3NfcmVsZWFzZSgpKyBmaWxlPSVwICVzICVzXG4iLAogCQlmaWxlLCBmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSA/ICJGTU9ERV9XUklURSIgOiAiIiwKLQkJZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCA/ICJGTU9ERV9SRUFEIiA6ICIiKSApOworCQlmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEID8gIkZNT0RFX1JFQUQiIDogIiIpKTsKIAogCWlmICghKGZpbGUtPmZfbW9kZSAmIChGTU9ERV9XUklURSB8IEZNT0RFX1JFQUQpKSkKLQl7CiAJCXJldHVybiAtRUlOVkFMOwotCX0KIAlzdGF0ZSA9IGNhcmQtPnN0YXRlc1sxXTsKLQlpZihzdGF0ZSkKLQl7Ci0JCWlmICggKHN0YXRlLT5vcGVuX21vZGUgJiBGTU9ERV9XUklURSkgJiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfV1JJVEUpICkKLQkJewotCQkJQ1NfREJHT1VUKENTX1JFTEVBU0UsIDIsIHByaW50aygiY3M0Nnh4OiBjc19yZWxlYXNlKCkgRk1PREVfV1JJVEVcbiIpICk7CisJaWYgKHN0YXRlKSB7CisJCWlmICgoc3RhdGUtPm9wZW5fbW9kZSAmIEZNT0RFX1dSSVRFKSAmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkpIHsKKwkJCUNTX0RCR09VVChDU19SRUxFQVNFLCAyLCBwcmludGsoImNzNDZ4eDogY3NfcmVsZWFzZSgpIEZNT0RFX1dSSVRFXG4iKSk7CiAJCQlkbWFidWYgPSAmc3RhdGUtPmRtYWJ1ZjsKIAkJCWNzX2NsZWFyX3RhaWwoc3RhdGUpOwogCQkJZHJhaW5fZGFjKHN0YXRlLCBmaWxlLT5mX2ZsYWdzICYgT19OT05CTE9DSyk7CkBAIC0zMzc1LDggKzMyMDksNyBAQAogCQkJc3RhdGUtPmNhcmQtPnN0YXRlc1tzdGF0ZS0+dmlydF0gPSBOVUxMOwogCQkJc3RhdGUtPm9wZW5fbW9kZSAmPSAofmZpbGUtPmZfbW9kZSkgJiAoRk1PREVfUkVBRHxGTU9ERV9XUklURSk7CiAKLQkJCWlmKCAodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9EQUMsIENTX0ZBTFNFICkpICkKLQkJCXsKKwkJCWlmICgodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9EQUMsIENTX0ZBTFNFKSkpIHsKIAkJCQlDU19EQkdPVVQoQ1NfRVJST1IsIDEsIHByaW50ayhLRVJOX0lORk8gCiAJCQkJCSJjczQ2eHg6IGNzX3JlbGVhc2VfbWl4ZGV2KCkgcG93ZXJkb3duIERBQyBmYWlsdXJlICgweCV4KVxuIix0bXApICk7CiAJCQl9CkBAIC0zMzg0LDE3ICszMjE3LDE0IEBACiAJCQkvKiBOb3cgdHVybiBvZmYgZXh0ZXJuYWwgQU1QIGlmIG5lZWRlZCAqLwogCQkJc3RhdGUtPmNhcmQtPmFtcGxpZmllcl9jdHJsKHN0YXRlLT5jYXJkLCAtMSk7CiAJCQlzdGF0ZS0+Y2FyZC0+YWN0aXZlX2N0cmwoc3RhdGUtPmNhcmQsIC0xKTsKLQogCQkJa2ZyZWUoc3RhdGUpOwogCQl9CiAJfQogCiAJc3RhdGUgPSBjYXJkLT5zdGF0ZXNbMF07Ci0JaWYoc3RhdGUpCi0JewotCQlpZiAoIChzdGF0ZS0+b3Blbl9tb2RlICYgRk1PREVfUkVBRCkgJiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkgKQotCQl7Ci0JCQlDU19EQkdPVVQoQ1NfUkVMRUFTRSwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3JlbGVhc2UoKSBGTU9ERV9SRUFEXG4iKSApOworCWlmIChzdGF0ZSkgeworCQlpZiAoKHN0YXRlLT5vcGVuX21vZGUgJiBGTU9ERV9SRUFEKSAmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKSkgeworCQkJQ1NfREJHT1VUKENTX1JFTEVBU0UsIDIsIHByaW50aygiY3M0Nnh4OiBjc19yZWxlYXNlKCkgRk1PREVfUkVBRFxuIikpOwogCQkJZG1hYnVmID0gJnN0YXRlLT5kbWFidWY7CiAJCQltdXRleF9sb2NrKCZzdGF0ZS0+b3Blbl9tdXRleCk7CiAJCQlzdG9wX2FkYyhzdGF0ZSk7CkBAIC0zNDA3LDggKzMyMzcsNyBAQAogCQkJc3RhdGUtPmNhcmQtPnN0YXRlc1tzdGF0ZS0+dmlydF0gPSBOVUxMOwogCQkJc3RhdGUtPm9wZW5fbW9kZSAmPSAofmZpbGUtPmZfbW9kZSkgJiAoRk1PREVfUkVBRHxGTU9ERV9XUklURSk7CiAKLQkJCWlmKCAodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9BREMsIENTX0ZBTFNFICkpICkKLQkJCXsKKwkJCWlmICgodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9BREMsIENTX0ZBTFNFKSkpIHsKIAkJCQlDU19EQkdPVVQoQ1NfRVJST1IsIDEsIHByaW50ayhLRVJOX0lORk8gCiAJCQkJCSJjczQ2eHg6IGNzX3JlbGVhc2VfbWl4ZGV2KCkgcG93ZXJkb3duIEFEQyBmYWlsdXJlICgweCV4KVxuIix0bXApICk7CiAJCQl9CkBAIC0zNDE2LDEyICszMjQ1LDExIEBACiAJCQkvKiBOb3cgdHVybiBvZmYgZXh0ZXJuYWwgQU1QIGlmIG5lZWRlZCAqLwogCQkJc3RhdGUtPmNhcmQtPmFtcGxpZmllcl9jdHJsKHN0YXRlLT5jYXJkLCAtMSk7CiAJCQlzdGF0ZS0+Y2FyZC0+YWN0aXZlX2N0cmwoc3RhdGUtPmNhcmQsIC0xKTsKLQogCQkJa2ZyZWUoc3RhdGUpOwogCQl9CiAJfQogCi0JQ1NfREJHT1VUKENTX0ZVTkNUSU9OIHwgQ1NfUkVMRUFTRSwgMiwgcHJpbnRrKCJjczQ2eHg6IGNzX3JlbGVhc2UoKS0gMFxuIikgKTsKKwlDU19EQkdPVVQoQ1NfRlVOQ1RJT04gfCBDU19SRUxFQVNFLCAyLCBwcmludGsoImNzNDZ4eDogY3NfcmVsZWFzZSgpLSAwXG4iKSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM0NzQsMjEgKzMzMDIsMTggQEAKIAogCUNTX0RCR09VVChDU19QTSwgOSwgcHJpbnRrKCJjczQ2eHg6IGNzNDZ4eF9hYzk3X3N1c3BlbmQoKStcbiIpKTsKIAotCWlmKGNhcmQtPnN0YXRlc1sxXSkKLQl7CisJaWYgKGNhcmQtPnN0YXRlc1sxXSkgewogCQlzdG9wX2RhYyhjYXJkLT5zdGF0ZXNbMV0pOwogCQlyZXN5bmNfZG1hX3B0cnMoY2FyZC0+c3RhdGVzWzFdKTsKIAl9Ci0JaWYoY2FyZC0+c3RhdGVzWzBdKQotCXsKKwlpZiAoY2FyZC0+c3RhdGVzWzBdKSB7CiAJCXN0b3BfYWRjKGNhcmQtPnN0YXRlc1swXSk7CiAJCXJlc3luY19kbWFfcHRycyhjYXJkLT5zdGF0ZXNbMF0pOwogCX0KIAotCWZvcihDb3VudCA9IDB4MiwgaT0wOyAoQ291bnQgPD0gQ1M0NlhYX0FDOTdfSElHSEVTVFJFR1RPUkVTVE9SRSkKLQkJCSYmIChpIDwgQ1M0NlhYX0FDOTdfTlVNQkVSX1JFU1RPUkVfUkVHUyk7IAotCQlDb3VudCArPSAyLCBpKyspCi0JeworCWZvciAoQ291bnQgPSAweDIsIGkgPSAwOyAoQ291bnQgPD0gQ1M0NlhYX0FDOTdfSElHSEVTVFJFR1RPUkVTVE9SRSkKKwkJCSYmIChpIDwgQ1M0NlhYX0FDOTdfTlVNQkVSX1JFU1RPUkVfUkVHUyk7CisJCQlDb3VudCArPSAyLCBpKyspIHsKIAkJY2FyZC0+cG0uYWM5N1tpXSA9IGNzX2FjOTdfZ2V0KGRldiwgQkEwX0FDOTdfUkVTRVQgKyBDb3VudCk7CiAJfQogLyoKQEAgLTM1MjIsMTEgKzMzNDcsMTAgQEAKICogd2VsbCwgZm9yIG5vdywgb25seSBwb3dlciBkb3duIHRoZSBEQUMvQURDIGFuZCBNSVhFUiBWUkVGT04gY29tcG9uZW50cy4gCiAqIHRyb3VibGUgd2l0aCByZW1vdmluZyBWUkVGLgogKi8KLQlpZiggKHRtcCA9IGNzNDYxeF9wb3dlcmRvd24oY2FyZCwgQ1NfUE9XRVJfREFDIHwgQ1NfUE9XRVJfQURDIHwKLQkJCUNTX1BPV0VSX01JWFZPTiwgQ1NfVFJVRSApKSApCi0JeworCWlmICgodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9EQUMgfCBDU19QT1dFUl9BREMgfAorCQkJQ1NfUE9XRVJfTUlYVk9OLCBDU19UUlVFKSkpIHsKIAkJQ1NfREJHT1VUKENTX0VSUk9SIHwgQ1NfSU5JVCwgMSwgcHJpbnRrKEtFUk5fSU5GTyAKLQkJCSJjczQ2eHg6IGNzNDZ4eF9hYzk3X3N1c3BlbmQoKSBmYWlsdXJlICgweCV4KVxuIix0bXApICk7CisJCQkiY3M0Nnh4OiBjczQ2eHhfYWM5N19zdXNwZW5kKCkgZmFpbHVyZSAoMHgleClcbiIsdG1wKSk7CiAJfQogCiAJQ1NfREJHT1VUKENTX1BNLCA5LCBwcmludGsoImNzNDZ4eDogY3M0Nnh4X2FjOTdfc3VzcGVuZCgpLVxuIikpOwpAQCAtMzU2NiwxNiArMzM5MCwxMyBAQAogKiBSZXN0b3JlIGp1c3QgdGhlIGZpcnN0IHNldCBvZiByZWdpc3RlcnMsIGZyb20gcmVnaXN0ZXIgbnVtYmVyCiAqIDB4MDIgdG8gdGhlIHJlZ2lzdGVyIG51bWJlciB0aGF0IHVsSGlnaGVzdFJlZ1RvUmVzdG9yZSBzcGVjaWZpZXMuCiAqLwotCWZvcigJQ291bnQgPSAweDIsIGk9MDsgCi0JCShDb3VudCA8PSBDUzQ2WFhfQUM5N19ISUdIRVNUUkVHVE9SRVNUT1JFKQotCQkJJiYgKGkgPCBDUzQ2WFhfQUM5N19OVU1CRVJfUkVTVE9SRV9SRUdTKTsgCi0JCUNvdW50ICs9IDIsIGkrKykKLQl7CisJZm9yIChDb3VudCA9IDB4MiwgaT0wOyAoQ291bnQgPD0gQ1M0NlhYX0FDOTdfSElHSEVTVFJFR1RPUkVTVE9SRSkgJiYKKwkJCShpIDwgQ1M0NlhYX0FDOTdfTlVNQkVSX1JFU1RPUkVfUkVHUyk7IENvdW50ICs9IDIsIGkrKykgewogCQljc19hYzk3X3NldChkZXYsICh1OCkoQkEwX0FDOTdfUkVTRVQgKyBDb3VudCksICh1MTYpY2FyZC0+cG0uYWM5N1tpXSk7CiAJfQogCiAJLyogQ2hlY2sgaWYgd2UgaGF2ZSB0byBpbml0IHRoZSBhbXBsaWZpZXIgKi8KLQlpZihjYXJkLT5hbXBfaW5pdCkKKwlpZiAoY2FyZC0+YW1wX2luaXQpCiAJCWNhcmQtPmFtcF9pbml0KGNhcmQpOwogICAgICAgICAKIAlDU19EQkdPVVQoQ1NfUE0sIDksIHByaW50aygiY3M0Nnh4OiBjczQ2eHhfYWM5N19yZXN1bWUoKS1cbiIpKTsKQEAgLTM1ODUsMzAgKzM0MDYsMjcgQEAKIHN0YXRpYyBpbnQgY3M0Nnh4X3Jlc3RhcnRfcGFydChzdHJ1Y3QgY3NfY2FyZCAqY2FyZCkKIHsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWY7CisKIAlDU19EQkdPVVQoQ1NfUE0gfCBDU19GVU5DVElPTiwgNCwgCiAJCXByaW50ayggImNzNDZ4eDogY3M0Nnh4X3Jlc3RhcnRfcGFydCgpK1xuIikpOwotCWlmKGNhcmQtPnN0YXRlc1sxXSkKLQl7CisJaWYgKGNhcmQtPnN0YXRlc1sxXSkgewogCQlkbWFidWYgPSAmY2FyZC0+c3RhdGVzWzFdLT5kbWFidWY7CiAJCWRtYWJ1Zi0+cmVhZHkgPSAwOwogCQlyZXN5bmNfZG1hX3B0cnMoY2FyZC0+c3RhdGVzWzFdKTsKIAkJY3Nfc2V0X2Rpdmlzb3IoZG1hYnVmKTsKLQkJaWYoX19wcm9nX2RtYWJ1ZihjYXJkLT5zdGF0ZXNbMV0pKQotCQl7CisJCWlmIChfX3Byb2dfZG1hYnVmKGNhcmQtPnN0YXRlc1sxXSkpIHsKIAkJCUNTX0RCR09VVChDU19QTSB8IENTX0VSUk9SLCAxLCAKIAkJCQlwcmludGsoImNzNDZ4eDogY3M0Nnh4X3Jlc3RhcnRfcGFydCgpLSAoLTEpIHByb2dfZG1hYnVmKCkgZGFjIGVycm9yXG4iKSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJY3Nfc2V0X2RhY19yYXRlKGNhcmQtPnN0YXRlc1sxXSwgZG1hYnVmLT5yYXRlKTsKIAl9Ci0JaWYoY2FyZC0+c3RhdGVzWzBdKQotCXsKKwlpZiAoY2FyZC0+c3RhdGVzWzBdKSB7CiAJCWRtYWJ1ZiA9ICZjYXJkLT5zdGF0ZXNbMF0tPmRtYWJ1ZjsKIAkJZG1hYnVmLT5yZWFkeSA9IDA7CiAJCXJlc3luY19kbWFfcHRycyhjYXJkLT5zdGF0ZXNbMF0pOwogCQljc19zZXRfZGl2aXNvcihkbWFidWYpOwotCQlpZihfX3Byb2dfZG1hYnVmKGNhcmQtPnN0YXRlc1swXSkpCi0JCXsKKwkJaWYgKF9fcHJvZ19kbWFidWYoY2FyZC0+c3RhdGVzWzBdKSkgewogCQkJQ1NfREJHT1VUKENTX1BNIHwgQ1NfRVJST1IsIDEsIAogCQkJCXByaW50aygiY3M0Nnh4OiBjczQ2eHhfcmVzdGFydF9wYXJ0KCktICgtMSkgcHJvZ19kbWFidWYoKSBhZGMgZXJyb3JcbiIpKTsKIAkJCXJldHVybiAtMTsKQEAgLTM2MTYsMTcgKzM0MzQsMTcgQEAKIAkJY3Nfc2V0X2FkY19yYXRlKGNhcmQtPnN0YXRlc1swXSwgZG1hYnVmLT5yYXRlKTsKIAl9CiAJY2FyZC0+cG0uZmxhZ3MgfD0gQ1M0NlhYX1BNX1JFU1VNRUQ7Ci0JaWYoY2FyZC0+c3RhdGVzWzBdKQorCWlmIChjYXJkLT5zdGF0ZXNbMF0pCiAJCXN0YXJ0X2FkYyhjYXJkLT5zdGF0ZXNbMF0pOwotCWlmKGNhcmQtPnN0YXRlc1sxXSkKKwlpZiAoY2FyZC0+c3RhdGVzWzFdKQogCQlzdGFydF9kYWMoY2FyZC0+c3RhdGVzWzFdKTsKIAogCWNhcmQtPnBtLmZsYWdzIHw9IENTNDZYWF9QTV9JRExFOwogCWNhcmQtPnBtLmZsYWdzICY9IH4oQ1M0NlhYX1BNX1NVU1BFTkRJTkcgfCBDUzQ2WFhfUE1fU1VTUEVOREVEIAogCQkJfCBDUzQ2WFhfUE1fUkVTVU1JTkcgfCBDUzQ2WFhfUE1fUkVTVU1FRCk7Ci0JaWYoY2FyZC0+c3RhdGVzWzBdKQorCWlmIChjYXJkLT5zdGF0ZXNbMF0pCiAJCXdha2VfdXAoJmNhcmQtPnN0YXRlc1swXS0+ZG1hYnVmLndhaXQpOwotCWlmKGNhcmQtPnN0YXRlc1sxXSkKKwlpZiAoY2FyZC0+c3RhdGVzWzFdKQogCQl3YWtlX3VwKCZjYXJkLT5zdGF0ZXNbMV0tPmRtYWJ1Zi53YWl0KTsKIAogCUNTX0RCR09VVChDU19QTSB8IENTX0ZVTkNUSU9OLCA0LCAKQEAgLTM2MzQsMjAgKzM0NTIsMTkgQEAKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZCBjczQ2MXhfcmVzZXQoc3RydWN0IGNzX2NhcmQgKmNhcmQpOwogc3RhdGljIHZvaWQgY3M0NjF4X3Byb2Nfc3RvcChzdHJ1Y3QgY3NfY2FyZCAqY2FyZCk7CiBzdGF0aWMgaW50IGNzNDZ4eF9zdXNwZW5kKHN0cnVjdCBjc19jYXJkICpjYXJkLCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7CiAJdW5zaWduZWQgaW50IHRtcDsKKwogCUNTX0RCR09VVChDU19QTSB8IENTX0ZVTkNUSU9OLCA0LCAKIAkJcHJpbnRrKCJjczQ2eHg6IGNzNDZ4eF9zdXNwZW5kKCkrIGZsYWdzPTB4JXggcz0lcFxuIiwKIAkJCSh1bnNpZ25lZCljYXJkLT5wbS5mbGFncyxjYXJkKSk7CiAvKgogKiBjaGVjayB0aGUgY3VycmVudCBzdGF0ZSwgb25seSBzdXNwZW5kIGlmIElETEUKICovCi0JaWYoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSkKLQl7CisJaWYgKCEoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkpIHsKIAkJQ1NfREJHT1VUKENTX1BNIHwgQ1NfRVJST1IsIDIsIAogCQkJcHJpbnRrKCJjczQ2eHg6IGNzNDZ4eF9zdXNwZW5kKCkgdW5hYmxlIHRvIHN1c3BlbmQsIG5vdCBJRExFXG4iKSk7CiAJCXJldHVybiAxOwpAQCAtMzY3OSwxMyArMzQ5NiwxMSBAQAogCXRtcCA9IGNzNDYxeF9wZWVrKGNhcmQsIEJBMV9DQ1RMKTsKIAljczQ2MXhfcG9rZShjYXJkLCBCQTFfQ0NUTCwgdG1wICYgMHhmZmZmMDAwMCk7CiAKLQlpZihjYXJkLT5zdGF0ZXNbMV0pCi0JeworCWlmIChjYXJkLT5zdGF0ZXNbMV0pIHsKIAkJY2FyZC0+cG0uZG1hYnVmX3N3cHRyX3BsYXkgPSBjYXJkLT5zdGF0ZXNbMV0tPmRtYWJ1Zi5zd3B0cjsKIAkJY2FyZC0+cG0uZG1hYnVmX2NvdW50X3BsYXkgPSBjYXJkLT5zdGF0ZXNbMV0tPmRtYWJ1Zi5jb3VudDsKIAl9Ci0JaWYoY2FyZC0+c3RhdGVzWzBdKQotCXsKKwlpZiAoY2FyZC0+c3RhdGVzWzBdKSB7CiAJCWNhcmQtPnBtLmRtYWJ1Zl9zd3B0cl9jYXB0dXJlID0gY2FyZC0+c3RhdGVzWzBdLT5kbWFidWYuc3dwdHI7CiAJCWNhcmQtPnBtLmRtYWJ1Zl9jb3VudF9jYXB0dXJlID0gY2FyZC0+c3RhdGVzWzBdLT5kbWFidWYuY291bnQ7CiAJfQpAQCAtMzczNiw4ICszNTUxLDcgQEAKIAlDU19EQkdPVVQoQ1NfUE0gfCBDU19GVU5DVElPTiwgNCwgCiAJCXByaW50ayggImNzNDZ4eDogY3M0Nnh4X3Jlc3VtZSgpKyBmbGFncz0weCV4XG4iLAogCQkJKHVuc2lnbmVkKWNhcmQtPnBtLmZsYWdzKSk7Ci0JaWYoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9TVVNQRU5ERUQpKQotCXsKKwlpZiAoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9TVVNQRU5ERUQpKSB7CiAJCUNTX0RCR09VVChDU19QTSB8IENTX0VSUk9SLCAyLCAKIAkJCXByaW50aygiY3M0Nnh4OiBjczQ2eHhfcmVzdW1lKCkgdW5hYmxlIHRvIHJlc3VtZSwgbm90IFNVU1BFTkRFRFxuIikpOwogCQlyZXR1cm4gMTsKQEAgLTM3NDcsMTAgKzM1NjEsOCBAQAogCXByaW50cG0oY2FyZCk7CiAJY2FyZC0+YWN0aXZlX2N0cmwoY2FyZCwgMSk7CiAKLQlmb3IoaT0wO2k8NTtpKyspCi0JewotCQlpZiAoY3NfaGFyZHdhcmVfaW5pdChjYXJkKSAhPSAwKQotCQl7CisJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgeworCQlpZiAoY3NfaGFyZHdhcmVfaW5pdChjYXJkKSAhPSAwKSB7CiAJCQlDU19EQkdPVVQoQ1NfUE0gfCBDU19FUlJPUiwgNCwgcHJpbnRrKAogCQkJCSJjczQ2eHg6IGNzNDZ4eF9yZXN1bWUoKS0gRVJST1IgaW4gY3NfaGFyZHdhcmVfaW5pdCgpXG4iKSk7CiAJCQltZGVsYXkoMTAgKiBjc19sYXB0b3Bfd2FpdCk7CkBAIC0zNzU5LDE1ICszNTcxLDEzIEBACiAJCX0KIAkJYnJlYWs7CiAJfQotCWlmKGk+PTQpCi0JeworCWlmIChpID49IDQpIHsKIAkJQ1NfREJHT1VUKENTX1BNIHwgQ1NfRVJST1IsIDEsIHByaW50aygKIAkJCSJjczQ2eHg6IGNzNDZ4eF9yZXN1bWUoKS0gY3NfaGFyZHdhcmVfaW5pdCgpIGZhaWxlZCwgcmV0cmllZCAlZCB0aW1lcy5cbiIsaSkpOwogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZihjczQ2eHhfcmVzdGFydF9wYXJ0KGNhcmQpKQotCXsKKwlpZiAoY3M0Nnh4X3Jlc3RhcnRfcGFydChjYXJkKSkgewogCQlDU19EQkdPVVQoQ1NfUE0gfCBDU19FUlJPUiwgNCwgcHJpbnRrKAogCQkJImNzNDZ4eDogY3M0Nnh4X3Jlc3VtZSgpOiBjczQ2eHhfcmVzdGFydF9wYXJ0KCkgcmV0dXJuZWQgZXJyb3JcbiIpKTsKIAl9CkBAIC0zODM1LDcgKzM2NDUsNyBAQAogCS8qCiAJICogIFdhaXQgZm9yIHRoZSByZWFkIHRvIG9jY3VyLgogCSAqLwotCWlmKCEoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkpCisJaWYgKCEoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkpCiAJCWxvb3BjbnQgPSAyMDAwOwogCWVsc2UKIAkJbG9vcGNudCA9IDUwMCAqIGNzX2xhcHRvcF93YWl0OwpAQCAtMzg2Niw3ICszNjc2LDcgQEAKIAkgKiAgV2FpdCBmb3IgdGhlIHZhbGlkIHN0YXR1cyBiaXQgdG8gZ28gYWN0aXZlLgogCSAqLwogCi0JaWYoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSkKKwlpZiAoIShjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSkKIAkJbG9vcGNudCA9IDIwMDA7CiAJZWxzZQogCQlsb29wY250ID0gMTAwMDsKQEAgLTM4ODUsNyArMzY5NSw3IEBACiAJLyoKIAkgKiAgTWFrZSBzdXJlIHdlIGdvdCB2YWxpZCBzdGF0dXMuCiAJICovCi0JaWYgKCEoICh0bXA9Y3M0NjF4X3BlZWtCQTAoY2FyZCwgQkEwX0FDU1RTKSkgJiBBQ1NUU19WU1RTKSkgeworCWlmICghKCh0bXAgPSBjczQ2MXhfcGVla0JBMChjYXJkLCBCQTBfQUNTVFMpKSAmIEFDU1RTX1ZTVFMpKSB7CiAJCUNTX0RCR09VVChDU19FUlJPUiwgMiwgcHJpbnRrKEtFUk5fV0FSTklORyAKIAkJCSJjczQ2eHg6IEFDJzk3IHJlYWQgcHJvYmxlbSAoQUNTVFNfVlNUUyksIHJlZyA9IDB4JXggdmFsPTB4JXggMHhmZmZmIFxuIiwgCiAJCQkJcmVnLCB0bXApKTsKQEAgLTM5MjMsMTIgKzM3MzMsOSBAQAogCQogCXNwaW5fbG9jaygmY2FyZC0+YWM5N19sb2NrKTsKIAkKLQlpZihyZWcgPT0gQUM5N19DRF9WT0wpCi0JeworCWlmIChyZWcgPT0gQUM5N19DRF9WT0wpCiAJCXZhbDIgPSBfY3NfYWM5N19nZXQoZGV2LCBBQzk3X0NEX1ZPTCk7Ci0JfQotCQotCQorCiAJLyoKIAkgKiAgMS4gV3JpdGUgQUNDQUQgPSBDb21tYW5kIEFkZHJlc3MgUmVnaXN0ZXIgPSA0NkNoIGZvciBBQzk3IHJlZ2lzdGVyIGFkZHJlc3MKIAkgKiAgMi4gV3JpdGUgQUNDREEgPSBDb21tYW5kIERhdGEgUmVnaXN0ZXIgPSA0NzBoICAgIGZvciBkYXRhIHRvIHdyaXRlIHRvIEFDOTcKQEAgLTM5NzAsOCArMzc3Nyw3IEBACiAJLyoKIAkgKiAgTWFrZSBzdXJlIHRoZSB3cml0ZSBjb21wbGV0ZWQuCiAJICovCi0JaWYgKGNzNDYxeF9wZWVrQkEwKGNhcmQsIEJBMF9BQ0NUTCkgJiBBQ0NUTF9EQ1YpCi0JeworCWlmIChjczQ2MXhfcGVla0JBMChjYXJkLCBCQTBfQUNDVEwpICYgQUNDVExfRENWKSB7CiAJCUNTX0RCR09VVChDU19FUlJPUiwgMSwgcHJpbnRrKEtFUk5fV0FSTklORyAKIAkJCSJjczQ2eHg6IEFDJzk3IHdyaXRlIHByb2JsZW0sIHJlZyA9IDB4JXgsIHZhbCA9IDB4JXhcbiIsIHJlZywgdmFsKSk7CiAJfQpAQCAtMzk5OCwyNSArMzgwNCwyMyBAQAogCSAKIAkvKiBDRCBtdXRlIGNoYW5nZSA/ICovCiAJCi0JaWYocmVnPT1BQzk3X0NEX1ZPTCkKLQl7CisJaWYgKHJlZyA9PSBBQzk3X0NEX1ZPTCkgewogCQkvKiBNdXRlIGJpdCBjaGFuZ2UgPyAqLwotCQlpZigodmFsMl52YWwpJjB4ODAwMCB8fCAoKHZhbDIgPT0gMHgxZjFmIHx8IHZhbCA9PSAweDFmMWYpICYmIHZhbDIgIT0gdmFsKSkKLQkJeworCQlpZiAoKHZhbDJedmFsKSAmIDB4ODAwMCB8fAorCQkgICAgKCh2YWwyID09IDB4MWYxZiB8fCB2YWwgPT0gMHgxZjFmKSAmJiB2YWwyICE9IHZhbCkpIHsKIAkJCS8qIFRoaXMgaXMgYSBoYWNrIGJ1dCBpdHMgY2xlYW5lciB0aGFuIHRoZSBhbHRlcm5hdGl2ZXMuCiAJCQkgICBSaWdodCBub3cgY2FyZC0+YWM5N19jb2RlY1swXSBtaWdodCBiZSBOVUxMIGFzIHdlIGFyZQogCQkJICAgc3RpbGwgZG9pbmcgY29kZWMgc2V0dXAuIFRoaXMgZG9lcyBhbiBlYXJseSBhc3NpZ25tZW50CiAJCQkgICB0byBhdm9pZCB0aGUgcHJvYmxlbSBpZiBpdCBvY2N1cnMgKi8KIAkJCSAgIAotCQkJaWYoY2FyZC0+YWM5N19jb2RlY1swXT09TlVMTCkKLQkJCQljYXJkLT5hYzk3X2NvZGVjWzBdPWRldjsKKwkJCWlmIChjYXJkLT5hYzk3X2NvZGVjWzBdID09IE5VTEwpCisJCQkJY2FyZC0+YWM5N19jb2RlY1swXSA9IGRldjsKIAkJCQkKIAkJCS8qIE11dGUgb24gKi8KLQkJCWlmKHZhbCYweDgwMDAgfHwgdmFsID09IDB4MWYxZikKKwkJCWlmICh2YWwgJiAweDgwMDAgfHwgdmFsID09IDB4MWYxZikKIAkJCQljYXJkLT5hbXBsaWZpZXJfY3RybChjYXJkLCAtMSk7Ci0JCQllbHNlIC8qIE11dGUgb2ZmIHBvd2VyIG9uICovCi0JCQl7Ci0JCQkJaWYoY2FyZC0+YW1wX2luaXQpCisJCQllbHNlIHsgLyogTXV0ZSBvZmYgcG93ZXIgb24gKi8KKwkJCQlpZiAoY2FyZC0+YW1wX2luaXQpCiAJCQkJCWNhcmQtPmFtcF9pbml0KGNhcmQpOwogCQkJCWNhcmQtPmFtcGxpZmllcl9jdHJsKGNhcmQsIDEpOwogCQkJfQpAQCAtNDAyNCw0NiArMzgyOCw0MSBAQAogCX0KIH0KIAotCiAvKiBPU1MgL2Rldi9taXhlciBmaWxlIG9wZXJhdGlvbiBtZXRob2RzICovCiAKIHN0YXRpYyBpbnQgY3Nfb3Blbl9taXhkZXYoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7Ci0JaW50IGk9MDsKKwlpbnQgaSA9IDA7CiAJdW5zaWduZWQgaW50IG1pbm9yID0gaW1pbm9yKGlub2RlKTsKLQlzdHJ1Y3QgY3NfY2FyZCAqY2FyZD1OVUxMOworCXN0cnVjdCBjc19jYXJkICpjYXJkID0gTlVMTDsKIAlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKIAl1bnNpZ25lZCBpbnQgdG1wOwogCiAJQ1NfREJHT1VUKENTX0ZVTkNUSU9OIHwgQ1NfT1BFTiwgNCwKIAkJICBwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzX29wZW5fbWl4ZGV2KCkrXG4iKSk7CiAKLQlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmY3M0Nnh4X2RldnMpCi0JeworCWxpc3RfZm9yX2VhY2goZW50cnksICZjczQ2eHhfZGV2cykgewogCQljYXJkID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0IGNzX2NhcmQsIGxpc3QpOwogCQlmb3IgKGkgPSAwOyBpIDwgTlJfQUM5NzsgaSsrKQogCQkJaWYgKGNhcmQtPmFjOTdfY29kZWNbaV0gIT0gTlVMTCAmJgogCQkJICAgIGNhcmQtPmFjOTdfY29kZWNbaV0tPmRldl9taXhlciA9PSBtaW5vcikKIAkJCQlnb3RvIG1hdGNoOwogCX0KLQlpZiAoIWNhcmQpCi0JeworCWlmICghY2FyZCkgewogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04gfCBDU19PUEVOIHwgQ1NfRVJST1IsIDIsCiAJCQlwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzNDZ4eF9vcGVuX21peGRldigpLSAtRU5PREVWXG4iKSk7CiAJCXJldHVybiAtRU5PREVWOwogCX0KICBtYXRjaDoKLQlpZighY2FyZC0+YWM5N19jb2RlY1tpXSkKKwlpZiAoIWNhcmQtPmFjOTdfY29kZWNbaV0pCiAJCXJldHVybiAtRU5PREVWOwogCWZpbGUtPnByaXZhdGVfZGF0YSA9IGNhcmQtPmFjOTdfY29kZWNbaV07CiAKIAljYXJkLT5hY3RpdmVfY3RybChjYXJkLDEpOwotCWlmKCFDU19JTl9VU0UoJmNhcmQtPm1peGVyX3VzZV9jbnQpKQotCXsKLQkJaWYoICh0bXAgPSBjczQ2eHhfcG93ZXJ1cChjYXJkLCBDU19QT1dFUl9NSVhWT04gKSkgKQotCQl7CisJaWYgKCFDU19JTl9VU0UoJmNhcmQtPm1peGVyX3VzZV9jbnQpKSB7CisJCWlmICgodG1wID0gY3M0Nnh4X3Bvd2VydXAoY2FyZCwgQ1NfUE9XRVJfTUlYVk9OKSkpIHsKIAkJCUNTX0RCR09VVChDU19FUlJPUiB8IENTX0lOSVQsIDEsIHByaW50ayhLRVJOX0lORk8gCi0JCQkJImNzNDZ4eDogY3Nfb3Blbl9taXhkZXYoKSBwb3dlcnVwIGZhaWx1cmUgKDB4JXgpXG4iLHRtcCkgKTsKKwkJCQkiY3M0Nnh4OiBjc19vcGVuX21peGRldigpIHBvd2VydXAgZmFpbHVyZSAoMHgleClcbiIsIHRtcCkpOwogCQkJcmV0dXJuIC1FSU87CiAJCX0KIAl9CkBAIC00MDc3LDcgKzM4NzYsNyBAQAogc3RhdGljIGludCBjc19yZWxlYXNlX21peGRldihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAl1bnNpZ25lZCBpbnQgbWlub3IgPSBpbWlub3IoaW5vZGUpOwotCXN0cnVjdCBjc19jYXJkICpjYXJkPU5VTEw7CisJc3RydWN0IGNzX2NhcmQgKmNhcmQgPSBOVUxMOwogCXN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5OwogCWludCBpOwogCXVuc2lnbmVkIGludCB0bXA7CkBAIC00MDkyLDE1ICszODkxLDEzIEBACiAJCQkgICAgY2FyZC0+YWM5N19jb2RlY1tpXS0+ZGV2X21peGVyID09IG1pbm9yKQogCQkJCWdvdG8gbWF0Y2g7CiAJfQotCWlmICghY2FyZCkKLQl7CisJaWYgKCFjYXJkKSB7CiAJCUNTX0RCR09VVChDU19GVU5DVElPTiB8IENTX09QRU4gfCBDU19FUlJPUiwgMiwKIAkJCXByaW50ayhLRVJOX0lORk8gImNzNDZ4eDogY3M0Nnh4X29wZW5fbWl4ZGV2KCktIC1FTk9ERVZcbiIpKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogbWF0Y2g6Ci0JaWYoIUNTX0RFQ19BTkRfVEVTVCgmY2FyZC0+bWl4ZXJfdXNlX2NudCkpCi0JeworCWlmICghQ1NfREVDX0FORF9URVNUKCZjYXJkLT5taXhlcl91c2VfY250KSkgewogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04gfCBDU19SRUxFQVNFLCA0LAogCQkJICBwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzX3JlbGVhc2VfbWl4ZGV2KCktIG5vIHBvd2VyZG93biwgdXNlY250PjBcbiIpKTsKIAkJY2FyZC0+YWN0aXZlX2N0cmwoY2FyZCwgLTEpOwpAQCAtNDExMCwxMCArMzkwNyw5IEBACiAvKgogKiBvaywgbm8gb3V0c3RhbmRpbmcgbWl4ZXIgb3BlbnMsIHNvIHBvd2VyZG93bi4KICovCi0JaWYoICh0bXAgPSBjczQ2MXhfcG93ZXJkb3duKGNhcmQsIENTX1BPV0VSX01JWFZPTiwgQ1NfRkFMU0UgKSkgKQotCXsKKwlpZiAoKHRtcCA9IGNzNDYxeF9wb3dlcmRvd24oY2FyZCwgQ1NfUE9XRVJfTUlYVk9OLCBDU19GQUxTRSkpKSB7CiAJCUNTX0RCR09VVChDU19FUlJPUiB8IENTX0lOSVQsIDEsIHByaW50ayhLRVJOX0lORk8gCi0JCQkiY3M0Nnh4OiBjc19yZWxlYXNlX21peGRldigpIHBvd2VyZG93biBNSVhWT04gZmFpbHVyZSAoMHgleClcbiIsdG1wKSApOworCQkJImNzNDZ4eDogY3NfcmVsZWFzZV9taXhkZXYoKSBwb3dlcmRvd24gTUlYVk9OIGZhaWx1cmUgKDB4JXgpXG4iLCB0bXApKTsKIAkJY2FyZC0+YWN0aXZlX2N0cmwoY2FyZCwgLTEpOwogCQljYXJkLT5hbXBsaWZpZXJfY3RybChjYXJkLCAtMSk7CiAJCXJldHVybiAtRUlPOwpAQCAtNDEyNiw3NiArMzkyMiw2MCBAQAogfQogCiBzdGF0aWMgaW50IGNzX2lvY3RsX21peGRldihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwKLQkJCQl1bnNpZ25lZCBsb25nIGFyZykKKwkJCXVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCBhYzk3X2NvZGVjICpjb2RlYyA9IChzdHJ1Y3QgYWM5N19jb2RlYyAqKWZpbGUtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgY3NfY2FyZCAqY2FyZD1OVUxMOworCXN0cnVjdCBhYzk3X2NvZGVjICpjb2RlYyA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgY3NfY2FyZCAqY2FyZCA9IE5VTEw7CiAJc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7CiAJdW5zaWduZWQgbG9uZyBfX3VzZXIgKnAgPSAobG9uZyBfX3VzZXIgKilhcmc7Ci0KICNpZiBDU0RFQlVHX0lOVEVSRkFDRQogICAgICAgICBpbnQgdmFsOwogCi0JaWYoIAkoY21kID09IFNPVU5EX01JWEVSX0NTX0dFVERCR01BU0spIHx8IAorCWlmICgJKGNtZCA9PSBTT1VORF9NSVhFUl9DU19HRVREQkdNQVNLKSB8fAogCQkoY21kID09IFNPVU5EX01JWEVSX0NTX1NFVERCR01BU0spIHx8CiAJCShjbWQgPT0gU09VTkRfTUlYRVJfQ1NfR0VUREJHTEVWRUwpIHx8CiAJCShjbWQgPT0gU09VTkRfTUlYRVJfQ1NfU0VUREJHTEVWRUwpIHx8Ci0JCShjbWQgPT0gU09VTkRfTUlYRVJfQ1NfQVBNKSkKLQl7Ci0JICAgIHN3aXRjaChjbWQpCi0JICAgIHsKLQorCQkoY21kID09IFNPVU5EX01JWEVSX0NTX0FQTSkpIHsKKwkJc3dpdGNoIChjbWQpIHsKIAkJY2FzZSBTT1VORF9NSVhFUl9DU19HRVREQkdNQVNLOgogCQkJcmV0dXJuIHB1dF91c2VyKGNzX2RlYnVnbWFzaywgcCk7Ci0JCQogCQljYXNlIFNPVU5EX01JWEVSX0NTX0dFVERCR0xFVkVMOgogCQkJcmV0dXJuIHB1dF91c2VyKGNzX2RlYnVnbGV2ZWwsIHApOwotCiAJCWNhc2UgU09VTkRfTUlYRVJfQ1NfU0VUREJHTUFTSzoKIAkJCWlmIChnZXRfdXNlcih2YWwsIHApKQogCQkJCXJldHVybiAtRUZBVUxUOwogCQkJY3NfZGVidWdtYXNrID0gdmFsOwogCQkJcmV0dXJuIDA7Ci0KIAkJY2FzZSBTT1VORF9NSVhFUl9DU19TRVREQkdMRVZFTDoKIAkJCWlmIChnZXRfdXNlcih2YWwsIHApKQogCQkJCXJldHVybiAtRUZBVUxUOwogCQkJY3NfZGVidWdsZXZlbCA9IHZhbDsKIAkJCXJldHVybiAwOwotCiAJCWNhc2UgU09VTkRfTUlYRVJfQ1NfQVBNOgogCQkJaWYgKGdldF91c2VyKHZhbCwgcCkpCiAJCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCQlpZih2YWwgPT0gQ1NfSU9DVExfQ01EX1NVU1BFTkQpIAotCQkJewotCQkJCWxpc3RfZm9yX2VhY2goZW50cnksICZjczQ2eHhfZGV2cykKLQkJCQl7CisJCQlpZiAodmFsID09IENTX0lPQ1RMX0NNRF9TVVNQRU5EKSB7CisJCQkJbGlzdF9mb3JfZWFjaChlbnRyeSwgJmNzNDZ4eF9kZXZzKSB7CiAJCQkJCWNhcmQgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgY3NfY2FyZCwgbGlzdCk7CiAJCQkJCWNzNDZ4eF9zdXNwZW5kKGNhcmQsIFBNU0dfT04pOwogCQkJCX0KIAotCQkJfQotCQkJZWxzZSBpZih2YWwgPT0gQ1NfSU9DVExfQ01EX1JFU1VNRSkKLQkJCXsKLQkJCQlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmY3M0Nnh4X2RldnMpCi0JCQkJeworCQkJfSBlbHNlIGlmICh2YWwgPT0gQ1NfSU9DVExfQ01EX1JFU1VNRSkgeworCQkJCWxpc3RfZm9yX2VhY2goZW50cnksICZjczQ2eHhfZGV2cykgewogCQkJCQljYXJkID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0IGNzX2NhcmQsIGxpc3QpOwogCQkJCQljczQ2eHhfcmVzdW1lKGNhcmQpOwogCQkJCX0KLQkJCX0KLQkJCWVsc2UKLQkJCXsKKwkJCX0gZWxzZSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9JTkZPCiAJCQkJICAgICJjczQ2eHg6IG1peGVyX2lvY3RsKCk6IGludmFsaWQgQVBNIGNtZCAoJWQpXG4iLAogCQkJCQl2YWwpKTsKIAkJCX0KIAkJCXJldHVybiAwOwotCiAJCWRlZmF1bHQ6CiAJCQlDU19EQkdPVVQoQ1NfRVJST1IsIDEsIHByaW50ayhLRVJOX0lORk8gCi0JCQkJImNzNDZ4eDogbWl4ZXJfaW9jdGwoKTogRVJST1IgdW5rbm93biBkZWJ1ZyBjbWRcbiIpICk7CisJCQkJImNzNDZ4eDogbWl4ZXJfaW9jdGwoKTogRVJST1IgdW5rbm93biBkZWJ1ZyBjbWRcbiIpKTsKIAkJCXJldHVybiAwOwotCSAgICB9CisJCX0KIAl9CiAjZW5kaWYKIAlyZXR1cm4gY29kZWMtPm1peGVyX2lvY3RsKGNvZGVjLCBjbWQsIGFyZyk7CkBAIC00MjMyLDggKzQwMTIsNyBAQAogCQljb2RlYy0+Y29kZWNfcmVhZCA9IGNzX2FjOTdfZ2V0OwogCQljb2RlYy0+Y29kZWNfd3JpdGUgPSBjc19hYzk3X3NldDsKIAkKLQkJaWYgKGFjOTdfcHJvYmVfY29kZWMoY29kZWMpID09IDApCi0JCXsKKwkJaWYgKGFjOTdfcHJvYmVfY29kZWMoY29kZWMpID09IDApIHsKIAkJCUNTX0RCR09VVChDU19GVU5DVElPTiB8IENTX0lOSVQsIDIsIHByaW50ayhLRVJOX0lORk8gCiAJCQkJImNzNDZ4eDogY3NfYWM5N19pbml0KCktIGNvZGVjIG51bWJlciAlZCBub3QgZm91bmRcbiIsCiAJCQkJCW51bV9hYzk3KSApOwpAQCAtNDI0MSwxMiArNDAyMCwxMSBAQAogCQkJYnJlYWs7CiAJCX0KIAkJQ1NfREJHT1VUKENTX0ZVTkNUSU9OIHwgQ1NfSU5JVCwgMiwgcHJpbnRrKEtFUk5fSU5GTyAKLQkJCSJjczQ2eHg6IGNzX2FjOTdfaW5pdCgpIGZvdW5kIGNvZGVjICVkXG4iLG51bV9hYzk3KSApOworCQkJImNzNDZ4eDogY3NfYWM5N19pbml0KCkgZm91bmQgY29kZWMgJWRcbiIsbnVtX2FjOTcpKTsKIAogCQllaWQgPSBjc19hYzk3X2dldChjb2RlYywgQUM5N19FWFRFTkRFRF9JRCk7CiAJCQotCQlpZihlaWQ9PTB4RkZGRikKLQkJeworCQlpZiAoZWlkID09IDB4RkZGRikgewogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiY3M0Nnh4OiBjb2RlYyAlZCBub3QgcHJlc2VudFxuIixudW1fYWM5Nyk7CiAJCQlhYzk3X3JlbGVhc2VfY29kZWMoY29kZWMpOwogCQkJYnJlYWs7CkBAIC00Mjg1LDI3ICs0MDYzLDIzIEBACiB7CiAgICAgdW5zaWduZWQgaSwgaiwgdGVtcDEsIHRlbXAyLCBvZmZzZXQsIGNvdW50OwogICAgIHVuc2lnbmVkIGNoYXIgX19pb21lbSAqcEJBMSA9IGlvcmVtYXAoY2FyZC0+YmExX2FkZHIsIDB4NDAwMDApOwotICAgIGZvciggaT0wOyBpIDwgQ0xFQVJfX0NPVU5UOyBpKyspCi0gICAgeworICAgIGZvciAoaSA9IDA7IGkgPCBDTEVBUl9fQ09VTlQ7IGkrKykgewogICAgICAgICBvZmZzZXQgPSBDbHJTdGF0W2ldLkJBMV9fRGVzdEJ5dGVPZmZzZXQ7CiAgICAgICAgIGNvdW50ICA9IENsclN0YXRbaV0uQkExX19Tb3VyY2VTaXplOwotICAgICAgICBmb3IoICB0ZW1wMSA9IG9mZnNldDsgdGVtcDE8KG9mZnNldCtjb3VudCk7IHRlbXAxKz00ICkKKyAgICAgICAgZm9yICh0ZW1wMSA9IG9mZnNldDsgdGVtcDEgPCAob2Zmc2V0ICsgY291bnQpOyB0ZW1wMSArPSA0KQogICAgICAgICAgICAgICB3cml0ZWwoMCwgcEJBMSt0ZW1wMSk7CiAgICAgfQogCi0gICAgZm9yKGk9MDsgaTxGSUxMX19DT1VOVDsgaSsrKQotICAgIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgRklMTF9fQ09VTlQ7IGkrKykgewogICAgICAgICB0ZW1wMiA9IEZpbGxTdGF0W2ldLk9mZnNldDsKLSAgICAgICAgZm9yKGo9MDsgajwoRmlsbFN0YXRbaV0uU2l6ZSkvNDsgaisrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCAoRmlsbFN0YXRbaV0uU2l6ZSkgLyA0OyBqKyspIHsKICAgICAgICAgICAgIHRlbXAxID0gKEZpbGxTdGF0W2ldKS5wRmlsbFtqXTsKLSAgICAgICAgICAgIHdyaXRlbCh0ZW1wMSwgcEJBMSt0ZW1wMitqKjQpOworICAgICAgICAgICAgd3JpdGVsKHRlbXAxLCBwQkExK3RlbXAyICsgaiAqIDQpOwogICAgICAgICB9CiAgICAgfQogICAgIGlvdW5tYXAocEJBMSk7CiB9CiAKLQogLyoKICAqICBDaGlwIHJlc2V0CiAgKi8KQEAgLTQzNjUsMTUgKzQxMzksMTMgQEAKIAkqIHBsYXlpbmcgb3IgY2FwdHVyaW5nIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBwdXQgaW4gMTI4IGJ5dGVzIG9mCiAJKiAibm9pc2UiLgogCSAqLwotCWlmKHR5cGUgJiBDU19UWVBFX0RBQykKLQl7CisJaWYgKHR5cGUgJiBDU19UWVBFX0RBQykgewogCQlzdGFydGZpZm8gPSAxMjg7CiAJCWVuZGZpZm8gPSAyNTY7CiAJfQotCWlmKHR5cGUgJiBDU19UWVBFX0FEQykKLQl7CisJaWYgKHR5cGUgJiBDU19UWVBFX0FEQykgewogCQlzdGFydGZpZm8gPSAwOwotCQlpZighZW5kZmlmbykKKwkJaWYgKCFlbmRmaWZvKQogCQkJZW5kZmlmbyA9IDEyODsKIAl9CiAJLyoKQEAgLTQ0MTcsOCArNDE4OSw3IEBACiAKIAlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIHByaW50ayhLRVJOX0lORk8gCiAJCSJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSsgdHlwZT0weCV4XG4iLHR5cGUpKTsKLQlpZighY3NfcG93ZXJkb3duICYmICFzdXNwZW5kZmxhZykKLQl7CisJaWYgKCFjc19wb3dlcmRvd24gJiYgIXN1c3BlbmRmbGFnKSB7CiAJCUNTX0RCR09VVChDU19GVU5DVElPTiwgOCwgcHJpbnRrKEtFUk5fSU5GTyAKIAkJCSJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSBESVNBQkxFRCBleGl0aW5nXG4iKSk7CiAJCXJldHVybiAwOwpAQCAtNDQzMiwxMiArNDIwMywxMSBAQAogKiBjdXJyZW50bHkgcG93ZXJlZCBkb3duLiAgSWYgcG93ZXJpbmcgZG93biBEQUMgYW5kIEFEQywgdGhlbgogKiBpdCBpcyBwb3NzaWJsZSB0byBwb3dlciBkb3duIHRoZSBWUkVGIChPTikuCiAqLwotCWlmICggICAgKCh0eXBlICYgQ1NfUE9XRVJfTUlYVk9OKSAmJiAKLQkJICghKHR5cGUgJiBDU19QT1dFUl9BREMpIHx8ICghKHR5cGUgJiBDU19QT1dFUl9EQUMpKSkgKQorCWlmICgoKHR5cGUgJiBDU19QT1dFUl9NSVhWT04pICYmCisJCSAoISh0eXBlICYgQ1NfUE9XRVJfQURDKSB8fCAoISh0eXBlICYgQ1NfUE9XRVJfREFDKSkpKQogCSAgICAgICYmIAogCQkoKHRtcCAmIENTX0FDOTdfUE9XRVJfQ09OVFJPTF9BRENfT04pIHx8Ci0JCSAodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX0RBQ19PTikgKSApCi0JeworCQkgKHRtcCAmIENTX0FDOTdfUE9XRVJfQ09OVFJPTF9EQUNfT04pKSkgewogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDgsIHByaW50ayhLRVJOX0lORk8gCiAJCQkiY3M0Nnh4OiBjczQ2MXhfcG93ZXJkb3duKCktIDAgIHVuYWJsZSB0byBwb3dlcmRvd24uIHRtcD0weCV4XG4iLHRtcCkpOwogCQlyZXR1cm4gMDsKQEAgLTQ0NTIsOCArNDIyMiw3IEBACiAJLyoKIAkgKiAgUG93ZXIgZG93biBpbmRpY2F0ZWQgYXJlYXMuCiAJICovCi0JaWYodHlwZSAmIENTX1BPV0VSX01JWFZPRkYpCi0JeworCWlmICh0eXBlICYgQ1NfUE9XRVJfTUlYVk9GRikgewogCiAJCUNTX0RCR09VVChDU19GVU5DVElPTiwgNCwgCiAJCQlwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSsgTUlYVk9GRlxuIikpOwpAQCAtNDQ2MSwxMiArNDIzMCwxMCBAQAogCQkgKiAgUG93ZXIgZG93biB0aGUgTUlYRVIgKFZSRUYgT04pIG9uIHRoZSBBQzk3IGNhcmQuICAKIAkJICovCiAJCXRtcCA9IGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCk7Ci0JCWlmICh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRl9PTikKLQkJewotCQkJaWYoIW11dGVkKQotCQkJeworCQlpZiAodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX01JWFZPRkZfT04pIHsKKwkJCWlmICghbXV0ZWQpIHsKIAkJCQljc19tdXRlKGNhcmQsIENTX1RSVUUpOwotCQkJCW11dGVkPTE7CisJCQkJbXV0ZWQgPSAxOwogCQkJfQogCQkJdG1wIHw9IENTX0FDOTdfUE9XRVJfQ09OVFJPTF9NSVhWT0ZGOwogCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXAgKTsKQEAgLTQ0OTIsMTYgKzQyNTksMTQgQEAKIAkJCSAqICBDaGVjayB0aGUgc3RhdHVzLi4KIAkJCSAqLwogCQkJaWYgKGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCkgJiAKLQkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRl9PTikKLQkJCXsKKwkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRl9PTikgewogCQkJCUNTX0RCR09VVChDU19FUlJPUiwgMSwgcHJpbnRrKEtFUk5fV0FSTklORyAKIAkJCQkJImNzNDZ4eDogcG93ZXJkb3duIE1JWFZPRkYgZmFpbGVkXG4iKSk7CiAJCQkJcmV0dXJuIDE7CiAJCQl9CiAJCX0KIAl9Ci0JaWYodHlwZSAmIENTX1BPV0VSX01JWFZPTikKLQl7CisJaWYgKHR5cGUgJiBDU19QT1dFUl9NSVhWT04pIHsKIAogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIAogCQkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBjczQ2MXhfcG93ZXJkb3duKCkrIE1JWFZPTlxuIikpOwpAQCAtNDUwOSwxNSArNDI3NCwxMyBAQAogCQkgKiAgUG93ZXIgZG93biB0aGUgTUlYRVIgKFZSRUYgT04pIG9uIHRoZSBBQzk3IGNhcmQuICAKIAkJICovCiAJCXRtcCA9IGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCk7Ci0JCWlmICh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OX09OKQotCQl7Ci0JCQlpZighbXV0ZWQpCi0JCQl7CisJCWlmICh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OX09OKSB7CisJCQlpZiAoIW11dGVkKSB7CiAJCQkJY3NfbXV0ZShjYXJkLCBDU19UUlVFKTsKLQkJCQltdXRlZD0xOworCQkJCW11dGVkID0gMTsKIAkJCX0KIAkJCXRtcCB8PSBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OOwotCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXAgKTsKKwkJCWNzX2FjOTdfc2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCwgdG1wKTsKIAkJCS8qCiAJCQkgKiAgTm93LCB3ZSB3YWl0IHVudGlsIHdlIHNhbXBsZSBhIHJlYWR5IHN0YXRlLgogCQkJICovCkBAIC00NTQwLDMwICs0MzAzLDI2IEBACiAJCQkgKiAgQ2hlY2sgdGhlIHN0YXR1cy4uCiAJCQkgKi8KIAkJCWlmIChjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpICYgCi0JCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX01JWFZPTl9PTikKLQkJCXsKKwkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OX09OKSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9XQVJOSU5HIAogCQkJCQkiY3M0Nnh4OiBwb3dlcmRvd24gTUlYVk9OIGZhaWxlZFxuIikpOwogCQkJCXJldHVybiAxOwogCQkJfQogCQl9CiAJfQotCWlmKHR5cGUgJiBDU19QT1dFUl9BREMpCi0JeworCWlmICh0eXBlICYgQ1NfUE9XRVJfQURDKSB7CiAJCS8qCiAJCSAqICBQb3dlciBkb3duIHRoZSBBREMgb24gdGhlIEFDOTcgY2FyZC4gIAogCQkgKi8KIAkJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCA0LCBwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSsgQURDXG4iKSk7CiAJCXRtcCA9IGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCk7Ci0JCWlmICh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfQURDX09OKQotCQl7Ci0JCQlpZighbXV0ZWQpCi0JCQl7CisJCWlmICh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfQURDX09OKSB7CisJCQlpZiAoIW11dGVkKSB7CiAJCQkJY3NfbXV0ZShjYXJkLCBDU19UUlVFKTsKLQkJCQltdXRlZD0xOworCQkJCW11dGVkID0gMTsKIAkJCX0KIAkJCXRtcCB8PSBDU19BQzk3X1BPV0VSX0NPTlRST0xfQURDOwotCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXAgKTsKKwkJCWNzX2FjOTdfc2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCwgdG1wKTsKIAogCQkJLyoKIAkJCSAqICBOb3csIHdlIHdhaXQgdW50aWwgd2Ugc2FtcGxlIGEgcmVhZHkgc3RhdGUuCkBAIC00NTg3LDE2ICs0MzQ2LDE0IEBACiAJCQkgKiAgQ2hlY2sgdGhlIHN0YXR1cy4uCiAJCQkgKi8KIAkJCWlmIChjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpICYgCi0JCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX0FEQ19PTikKLQkJCXsKKwkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfQURDX09OKSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9XQVJOSU5HIAogCQkJCQkiY3M0Nnh4OiBwb3dlcmRvd24gQURDIGZhaWxlZFxuIikpOwogCQkJCXJldHVybiAxOwogCQkJfQogCQl9CiAJfQotCWlmKHR5cGUgJiBDU19QT1dFUl9EQUMpCi0JeworCWlmICh0eXBlICYgQ1NfUE9XRVJfREFDKSB7CiAJCS8qCiAJCSAqICBQb3dlciBkb3duIHRoZSBEQUMgb24gdGhlIEFDOTcgY2FyZC4gIAogCQkgKi8KQEAgLTQ2MDQsMTUgKzQzNjEsMTMgQEAKIAkJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCA0LCAKIAkJCXByaW50ayhLRVJOX0lORk8gImNzNDZ4eDogY3M0NjF4X3Bvd2VyZG93bigpKyBEQUNcbiIpKTsKIAkJdG1wID0gY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKTsKLQkJaWYgKHRtcCAmIENTX0FDOTdfUE9XRVJfQ09OVFJPTF9EQUNfT04pCi0JCXsKLQkJCWlmKCFtdXRlZCkKLQkJCXsKKwkJaWYgKHRtcCAmIENTX0FDOTdfUE9XRVJfQ09OVFJPTF9EQUNfT04pIHsKKwkJCWlmICghbXV0ZWQpIHsKIAkJCQljc19tdXRlKGNhcmQsIENTX1RSVUUpOwotCQkJCW11dGVkPTE7CisJCQkJbXV0ZWQgPSAxOwogCQkJfQogCQkJdG1wIHw9IENTX0FDOTdfUE9XRVJfQ09OVFJPTF9EQUM7Ci0JCQljc19hYzk3X3NldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wsIHRtcCApOworCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXApOwogCQkJLyoKIAkJCSAqICBOb3csIHdlIHdhaXQgdW50aWwgd2Ugc2FtcGxlIGEgcmVhZHkgc3RhdGUuCiAJCQkgKi8KQEAgLTQ2MzUsOCArNDM5MCw3IEBACiAJCQkgKiAgQ2hlY2sgdGhlIHN0YXR1cy4uCiAJCQkgKi8KIAkJCWlmIChjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpICYgCi0JCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX0RBQ19PTikKLQkJCXsKKwkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfREFDX09OKSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9XQVJOSU5HIAogCQkJCQkiY3M0Nnh4OiBwb3dlcmRvd24gREFDIGZhaWxlZFxuIikpOwogCQkJCXJldHVybiAxOwpAQCAtNDY0NCw3ICs0Mzk4LDcgQEAKIAkJfQogCX0KIAl0bXAgPSBjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpOwotCWlmKG11dGVkKQorCWlmIChtdXRlZCkKIAkJY3NfbXV0ZShjYXJkLCBDU19GQUxTRSk7CiAJQ1NfREJHT1VUKENTX0ZVTkNUSU9OLCA0LCBwcmludGsoS0VSTl9JTkZPIAogCQkiY3M0Nnh4OiBjczQ2MXhfcG93ZXJkb3duKCktIDAgdG1wPTB4JXhcbiIsdG1wKSk7CkBAIC00NjU0LDIzICs0NDA4LDIyIEBACiBzdGF0aWMgaW50IGNzNDZ4eF9wb3dlcnVwKHN0cnVjdCBjc19jYXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgdHlwZSkKIHsKIAlpbnQgY291bnQ7Ci0JdW5zaWduZWQgaW50IHRtcD0wLG11dGVkPTA7CisJdW5zaWduZWQgaW50IHRtcCA9IDAsIG11dGVkID0gMDsKIAogCUNTX0RCR09VVChDU19GVU5DVElPTiwgOCwgcHJpbnRrKEtFUk5fSU5GTyAKIAkJImNzNDZ4eDogY3M0Nnh4X3Bvd2VydXAoKSsgdHlwZT0weCV4XG4iLHR5cGUpKTsKIAkvKgogCSogY2hlY2sgZm9yIFZSRUYgYW5kIHBvd2VydXAgaWYgbmVlZCB0by4KIAkqLwotCWlmKHR5cGUgJiBDU19QT1dFUl9NSVhWT04pCisJaWYgKHR5cGUgJiBDU19QT1dFUl9NSVhWT04pCiAJCXR5cGUgfD0gQ1NfUE9XRVJfTUlYVk9GRjsKLQlpZih0eXBlICYgKENTX1BPV0VSX0RBQyB8IENTX1BPV0VSX0FEQykpCisJaWYgKHR5cGUgJiAoQ1NfUE9XRVJfREFDIHwgQ1NfUE9XRVJfQURDKSkKIAkJdHlwZSB8PSBDU19QT1dFUl9NSVhWT04gfCBDU19QT1dFUl9NSVhWT0ZGOwogCiAJLyoKIAkgKiAgUG93ZXIgdXAgaW5kaWNhdGVkIGFyZWFzLgogCSAqLwotCWlmKHR5cGUgJiBDU19QT1dFUl9NSVhWT0ZGKQotCXsKKwlpZiAodHlwZSAmIENTX1BPV0VSX01JWFZPRkYpIHsKIAogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIAogCQkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBjczQ2eHhfcG93ZXJ1cCgpKyBNSVhWT0ZGXG4iKSk7CkBAIC00Njc4LDEyICs0NDMxLDEwIEBACiAJCSAqICBQb3dlciB1cCB0aGUgTUlYRVIgKFZSRUYgT04pIG9uIHRoZSBBQzk3IGNhcmQuICAKIAkJICovCiAJCXRtcCA9IGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCk7Ci0JCWlmICghKHRtcCAmIENTX0FDOTdfUE9XRVJfQ09OVFJPTF9NSVhWT0ZGX09OKSkKLQkJewotCQkJaWYoIW11dGVkKQotCQkJeworCQlpZiAoISh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRl9PTikpIHsKKwkJCWlmICghbXV0ZWQpIHsKIAkJCQljc19tdXRlKGNhcmQsIENTX1RSVUUpOwotCQkJCW11dGVkPTE7CisJCQkJbXV0ZWQgPSAxOwogCQkJfQogCQkJdG1wICY9IH5DU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRjsKIAkJCWNzX2FjOTdfc2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCwgdG1wICk7CkBAIC00NzA5LDE2ICs0NDYwLDE0IEBACiAJCQkgKiAgQ2hlY2sgdGhlIHN0YXR1cy4uCiAJCQkgKi8KIAkJCWlmICghKGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCkgJiAKLQkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9GRl9PTikpCi0JCQl7CisJCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX01JWFZPRkZfT04pKSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9XQVJOSU5HIAogCQkJCQkiY3M0Nnh4OiBwb3dlcnVwIE1JWFZPRkYgZmFpbGVkXG4iKSk7CiAJCQkJcmV0dXJuIDE7CiAJCQl9CiAJCX0KIAl9Ci0JaWYodHlwZSAmIENTX1BPV0VSX01JWFZPTikKLQl7CisJaWYodHlwZSAmIENTX1BPV0VSX01JWFZPTikgewogCiAJCUNTX0RCR09VVChDU19GVU5DVElPTiwgNCwgCiAJCQlwcmludGsoS0VSTl9JTkZPICJjczQ2eHg6IGNzNDZ4eF9wb3dlcnVwKCkrIE1JWFZPTlxuIikpOwpAQCAtNDcyNiwxMiArNDQ3NSwxMCBAQAogCQkgKiAgUG93ZXIgdXAgdGhlIE1JWEVSIChWUkVGIE9OKSBvbiB0aGUgQUM5NyBjYXJkLiAgCiAJCSAqLwogCQl0bXAgPSBjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpOwotCQlpZiAoISh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OX09OKSkKLQkJewotCQkJaWYoIW11dGVkKQotCQkJeworCQlpZiAoISh0bXAgJiBDU19BQzk3X1BPV0VSX0NPTlRST0xfTUlYVk9OX09OKSkgeworCQkJaWYgKCFtdXRlZCkgewogCQkJCWNzX211dGUoY2FyZCwgQ1NfVFJVRSk7Ci0JCQkJbXV0ZWQ9MTsKKwkJCQltdXRlZCA9IDE7CiAJCQl9CiAJCQl0bXAgJj0gfkNTX0FDOTdfUE9XRVJfQ09OVFJPTF9NSVhWT047CiAJCQljc19hYzk3X3NldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wsIHRtcCApOwpAQCAtNDc1NywyNyArNDUwNCwyMyBAQAogCQkJICogIENoZWNrIHRoZSBzdGF0dXMuLgogCQkJICovCiAJCQlpZiAoIShjc19hYzk3X2dldChjYXJkLT5hYzk3X2NvZGVjWzBdLCBBQzk3X1BPV0VSX0NPTlRST0wpICYgCi0JCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX01JWFZPTl9PTikpCi0JCQl7CisJCQkJQ1NfQUM5N19QT1dFUl9DT05UUk9MX01JWFZPTl9PTikpIHsKIAkJCQlDU19EQkdPVVQoQ1NfRVJST1IsIDEsIHByaW50ayhLRVJOX1dBUk5JTkcgCiAJCQkJCSJjczQ2eHg6IHBvd2VydXAgTUlYVk9OIGZhaWxlZFxuIikpOwogCQkJCXJldHVybiAxOwogCQkJfQogCQl9CiAJfQotCWlmKHR5cGUgJiBDU19QT1dFUl9BREMpCi0JeworCWlmICh0eXBlICYgQ1NfUE9XRVJfQURDKSB7CiAJCS8qCiAJCSAqICBQb3dlciB1cCB0aGUgQURDIG9uIHRoZSBBQzk3IGNhcmQuICAKIAkJICovCiAJCUNTX0RCR09VVChDU19GVU5DVElPTiwgNCwgcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBjczQ2eHhfcG93ZXJ1cCgpKyBBRENcbiIpKTsKIAkJdG1wID0gY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKTsKLQkJaWYgKCEodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX0FEQ19PTikpCi0JCXsKLQkJCWlmKCFtdXRlZCkKLQkJCXsKKwkJaWYgKCEodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX0FEQ19PTikpIHsKKwkJCWlmICghbXV0ZWQpIHsKIAkJCQljc19tdXRlKGNhcmQsIENTX1RSVUUpOwotCQkJCW11dGVkPTE7CisJCQkJbXV0ZWQgPSAxOwogCQkJfQogCQkJdG1wICY9IH5DU19BQzk3X1BPV0VSX0NPTlRST0xfQURDOwogCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXAgKTsKQEAgLTQ4MDQsMTYgKzQ1NDcsMTQgQEAKIAkJCSAqICBDaGVjayB0aGUgc3RhdHVzLi4KIAkJCSAqLwogCQkJaWYgKCEoY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKSAmIAotCQkJCUNTX0FDOTdfUE9XRVJfQ09OVFJPTF9BRENfT04pKQotCQkJeworCQkJCUNTX0FDOTdfUE9XRVJfQ09OVFJPTF9BRENfT04pKSB7CiAJCQkJQ1NfREJHT1VUKENTX0VSUk9SLCAxLCBwcmludGsoS0VSTl9XQVJOSU5HIAogCQkJCQkiY3M0Nnh4OiBwb3dlcnVwIEFEQyBmYWlsZWRcbiIpKTsKIAkJCQlyZXR1cm4gMTsKIAkJCX0KIAkJfQogCX0KLQlpZih0eXBlICYgQ1NfUE9XRVJfREFDKQotCXsKKwlpZiAodHlwZSAmIENTX1BPV0VSX0RBQykgewogCQkvKgogCQkgKiAgUG93ZXIgdXAgdGhlIERBQyBvbiB0aGUgQUM5NyBjYXJkLiAgCiAJCSAqLwpAQCAtNDgyMSwxMiArNDU2MiwxMCBAQAogCQlDU19EQkdPVVQoQ1NfRlVOQ1RJT04sIDQsIAogCQkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBjczQ2eHhfcG93ZXJ1cCgpKyBEQUNcbiIpKTsKIAkJdG1wID0gY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKTsKLQkJaWYgKCEodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX0RBQ19PTikpCi0JCXsKLQkJCWlmKCFtdXRlZCkKLQkJCXsKKwkJaWYgKCEodG1wICYgQ1NfQUM5N19QT1dFUl9DT05UUk9MX0RBQ19PTikpIHsKKwkJCWlmICghbXV0ZWQpIHsKIAkJCQljc19tdXRlKGNhcmQsIENTX1RSVUUpOwotCQkJCW11dGVkPTE7CisJCQkJbXV0ZWQgPSAxOwogCQkJfQogCQkJdG1wICY9IH5DU19BQzk3X1BPV0VSX0NPTlRST0xfREFDOwogCQkJY3NfYWM5N19zZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MLCB0bXAgKTsKQEAgLTQ4NTIsOCArNDU5MSw3IEBACiAJCQkgKiAgQ2hlY2sgdGhlIHN0YXR1cy4uCiAJCQkgKi8KIAkJCWlmICghKGNzX2FjOTdfZ2V0KGNhcmQtPmFjOTdfY29kZWNbMF0sIEFDOTdfUE9XRVJfQ09OVFJPTCkgJiAKLQkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfREFDX09OKSkKLQkJCXsKKwkJCQlDU19BQzk3X1BPV0VSX0NPTlRST0xfREFDX09OKSkgewogCQkJCUNTX0RCR09VVChDU19FUlJPUiwgMSwgcHJpbnRrKEtFUk5fV0FSTklORyAKIAkJCQkJImNzNDZ4eDogcG93ZXJ1cCBEQUMgZmFpbGVkXG4iKSk7CiAJCQkJcmV0dXJuIDE7CkBAIC00ODYxLDE0ICs0NTk5LDEzIEBACiAJCX0KIAl9CiAJdG1wID0gY3NfYWM5N19nZXQoY2FyZC0+YWM5N19jb2RlY1swXSwgQUM5N19QT1dFUl9DT05UUk9MKTsKLQlpZihtdXRlZCkKKwlpZiAobXV0ZWQpCiAJCWNzX211dGUoY2FyZCwgQ1NfRkFMU0UpOwogCUNTX0RCR09VVChDU19GVU5DVElPTiwgNCwgcHJpbnRrKEtFUk5fSU5GTyAKIAkJImNzNDZ4eDogY3M0Nnh4X3Bvd2VydXAoKS0gMCB0bXA9MHgleFxuIix0bXApKTsKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZCBjczQ2MXhfcHJvY19zdGFydChzdHJ1Y3QgY3NfY2FyZCAqY2FyZCkKIHsKIAlpbnQgY250OwpAQCAtNDk2NSw3ICs0NzAyLDcgQEAKIAkqIGlzIG5vdCBlbm91Z2ggZm9yIHNvbWUgcGxhdGZvcm1zISB0ZXN0ZWQgb24gYW4gSUJNIFRoaW5rcGFkcyBhbmQgCiAJKiByZWZlcmVuY2UgY2FyZHMuCiAJKi8KLQlpZighKGNhcmQtPnBtLmZsYWdzICYgQ1M0NlhYX1BNX0lETEUpKQorCWlmICghKGNhcmQtPnBtLmZsYWdzICYgQ1M0NlhYX1BNX0lETEUpKQogCQltZGVsYXkoaW5pdGRlbGF5KTsKIAkvKgogCSAqICBXcml0ZSB0aGUgc2VsZWN0ZWQgY2xvY2sgY29udHJvbCBzZXR1cCB0byB0aGUgaGFyZHdhcmUuICBEbyBub3QgdHVybiBvbgpAQCAtNTAxNyw4ICs0NzU0LDcgQEAKICogSWYgd2UgYXJlIHJlc3VtaW5nIHVuZGVyIDIuMi54IHRoZW4gd2UgY2FuIG5vdCBzY2hlZHVsZSBhIHRpbWVvdXQuCiAqIHNvLCBqdXN0IHNwaW4gdGhlIENQVS4KICovCi0JaWYoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkKLQl7CisJaWYgKGNhcmQtPnBtLmZsYWdzICYgQ1M0NlhYX1BNX0lETEUpIHsKIAkvKgogCSAqIFdhaXQgZm9yIHRoZSBjYXJkIHJlYWR5IHNpZ25hbCBmcm9tIHRoZSBBQzk3IGNhcmQuCiAJICovCkBAIC01MDMzLDkgKzQ3NjksNyBAQAogCQkJY3VycmVudC0+c3RhdGUgPSBUQVNLX1VOSU5URVJSVVBUSUJMRTsKIAkJCXNjaGVkdWxlX3RpbWVvdXQoMSk7CiAJCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIGVuZF90aW1lKSk7Ci0JfQotCWVsc2UKLQl7CisJfSBlbHNlIHsKIAkJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgMTAwOyBjb3VudCsrKSB7CiAJCS8vIEZpcnN0LCB3ZSB3YW50IHRvIHdhaXQgZm9yIGEgc2hvcnQgdGltZS4KIAkJCXVkZWxheSgyNSAqIGNzX2xhcHRvcF93YWl0KTsKQEAgLTUwNjQsOCArNDc5OCw3IEBACiAJICovCiAJY3M0NjF4X3Bva2VCQTAoY2FyZCwgQkEwX0FDQ1RMLCBBQ0NUTF9WRlJNIHwgQUNDVExfRVNZTiB8IEFDQ1RMX1JTVE4pOwogCi0JaWYoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkKLQl7CisJaWYgKGNhcmQtPnBtLmZsYWdzICYgQ1M0NlhYX1BNX0lETEUpIHsKIAkvKgogCSAqICBXYWl0IHVudGlsIHdlJ3ZlIHNhbXBsZWQgaW5wdXQgc2xvdHMgMyBhbmQgNCBhcyB2YWxpZCwgbWVhbmluZyB0aGF0CiAJICogIHRoZSBjYXJkIGlzIHB1bXBpbmcgQURDIGRhdGEgYWNyb3NzIHRoZSBBQy1saW5rLgpAQCAtNTA4MSw5ICs0ODE0LDcgQEAKIAkJCWN1cnJlbnQtPnN0YXRlID0gVEFTS19VTklOVEVSUlVQVElCTEU7CiAJCQlzY2hlZHVsZV90aW1lb3V0KDEpOwogCQl9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBlbmRfdGltZSkpOwotCX0KLQllbHNlCi0JeworCX0gZWxzZSB7CiAJCWZvciAoY291bnQgPSAwOyBjb3VudCA8IDEwMDsgY291bnQrKykgewogCQkvLyBGaXJzdCwgd2Ugd2FudCB0byB3YWl0IGZvciBhIHNob3J0IHRpbWUuCiAJCQl1ZGVsYXkoMjUgKiBjc19sYXB0b3Bfd2FpdCk7CkBAIC01MTQwLDE3ICs0ODcxLDEzIEBACiAJY3M0NjF4X3Bva2UoY2FyZCwgQkExX0NDVEwsIHRtcCAmIDB4ZmZmZjAwMDApOwogCiAJLyogaW5pdGlhbGl6ZSBBQzk3IGNvZGVjIGFuZCByZWdpc3RlciAvZGV2L21peGVyICovCi0JaWYoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkKLQl7Ci0JCWlmIChjc19hYzk3X2luaXQoY2FyZCkgPD0gMCkKLQkJeworCWlmIChjYXJkLT5wbS5mbGFncyAmIENTNDZYWF9QTV9JRExFKSB7CisJCWlmIChjc19hYzk3X2luaXQoY2FyZCkgPD0gMCkgewogCQkJQ1NfREJHT1VUKENTX0VSUk9SIHwgQ1NfSU5JVCwgMSwgcHJpbnRrKEtFUk5fSU5GTyAKLQkJCQkiY3M0Nnh4OiBjc19hYzk3X2luaXQoKSBmYWlsdXJlXG4iKSApOworCQkJCSJjczQ2eHg6IGNzX2FjOTdfaW5pdCgpIGZhaWx1cmVcbiIpKTsKIAkJCXJldHVybiAtRUlPOwogCQl9Ci0JfQotCWVsc2UKLQl7CisJfSBlbHNlIHsKIAkJY3M0Nnh4X2FjOTdfcmVzdW1lKGNhcmQpOwogCX0KIAkKQEAgLTUxNzQsMjMgKzQ5MDEsMTcgQEAKIAkgKiAgSWYgSURMRSB0aGVuIFBvd2VyIGRvd24gdGhlIHBhcnQuICBXZSB3aWxsIHBvd2VyIGNvbXBvbmVudHMgdXAgCiAJICogIHdoZW4gd2UgbmVlZCB0aGVtLiAgCiAJICovCi0JaWYoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkKLQl7Ci0JCWlmKCFjc19wb3dlcmRvd24pCi0JCXsKLQkJCWlmKCAodG1wID0gY3M0Nnh4X3Bvd2VydXAoY2FyZCwgQ1NfUE9XRVJfREFDIHwgQ1NfUE9XRVJfQURDIHwKLQkJCQkJQ1NfUE9XRVJfTUlYVk9OICkpICkKLQkJCXsKKwlpZiAoY2FyZC0+cG0uZmxhZ3MgJiBDUzQ2WFhfUE1fSURMRSkgeworCQlpZiAoIWNzX3Bvd2VyZG93bikgeworCQkJaWYgKCh0bXAgPSBjczQ2eHhfcG93ZXJ1cChjYXJkLCBDU19QT1dFUl9EQUMgfCBDU19QT1dFUl9BREMgfAorCQkJCQlDU19QT1dFUl9NSVhWT04pKSkgewogCQkJCUNTX0RCR09VVChDU19FUlJPUiB8IENTX0lOSVQsIDEsIHByaW50ayhLRVJOX0lORk8gCiAJCQkJCSJjczQ2eHg6IGNzNDYxeF9wb3dlcnVwKCkgZmFpbHVyZSAoMHgleClcbiIsdG1wKSApOwogCQkJCXJldHVybiAtRUlPOwogCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJaWYoICh0bXAgPSBjczQ2MXhfcG93ZXJkb3duKGNhcmQsIENTX1BPV0VSX0RBQyB8IENTX1BPV0VSX0FEQyB8Ci0JCQkJCUNTX1BPV0VSX01JWFZPTiwgQ1NfRkFMU0UgKSkgKQotCQkJeworCQl9IGVsc2UgeworCQkJaWYgKCh0bXAgPSBjczQ2MXhfcG93ZXJkb3duKGNhcmQsIENTX1BPV0VSX0RBQyB8IENTX1BPV0VSX0FEQyB8CisJCQkJCUNTX1BPV0VSX01JWFZPTiwgQ1NfRkFMU0UpKSkgewogCQkJCUNTX0RCR09VVChDU19FUlJPUiB8IENTX0lOSVQsIDEsIHByaW50ayhLRVJOX0lORk8gCiAJCQkJCSJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSBmYWlsdXJlICgweCV4KVxuIix0bXApICk7CiAJCQkJcmV0dXJuIC1FSU87CkBAIC01MzEwLDE0ICs1MDMxLDEzIEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkNyeXN0YWwgU291bmRGdXNpb24gQXVkaW8gU3VwcG9ydCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCi0KIHN0YXRpYyBjb25zdCBjaGFyIGNzNDZ4eF9iYW5uZXJbXSA9IEtFUk5fSU5GTyAiQ3J5c3RhbCA0MjgwLzQ2eHggKyBBQzk3IEF1ZGlvLCB2ZXJzaW9uICIgQ1M0NlhYX01BSk9SX1ZFUlNJT04gIi4iIENTNDZYWF9NSU5PUl9WRVJTSU9OICIuIiBDUzQ2WFhfQVJDSCAiLCAiIF9fVElNRV9fICIgIiBfX0RBVEVfXyAiXG4iOwogc3RhdGljIGNvbnN0IGNoYXIgZm5kbXNnW10gPSBLRVJOX0lORk8gImNzNDZ4eDogRm91bmQgJWQgYXVkaW8gZGV2aWNlKHMpLlxuIjsKIAogc3RhdGljIGludCBfX2RldmluaXQgY3M0Nnh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LAogCQkJCSAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaWlkKQogewotCWludCBpLGo7CisJaW50IGksIGo7CiAJdTE2IHNzX2NhcmQsIHNzX3ZlbmRvcjsKIAlzdHJ1Y3QgY3NfY2FyZCAqY2FyZDsKIAlkbWFfYWRkcl90IGRtYV9tYXNrOwpAQCAtNTM3OCw0MiArNTA5OCwzNSBAQAogCiAJd2hpbGUgKGNwLT5uYW1lKQogCXsKLQkJaWYoY3AtPnZlbmRvciA9PSBzc192ZW5kb3IgJiYgY3AtPmlkID09IHNzX2NhcmQpCi0JCXsKKwkJaWYgKGNwLT52ZW5kb3IgPT0gc3NfdmVuZG9yICYmIGNwLT5pZCA9PSBzc19jYXJkKSB7CiAJCQljYXJkLT5hbXBsaWZpZXJfY3RybCA9IGNwLT5hbXA7Ci0JCQlpZihjcC0+YWN0aXZlKQorCQkJaWYgKGNwLT5hY3RpdmUpCiAJCQkJY2FyZC0+YWN0aXZlX2N0cmwgPSBjcC0+YWN0aXZlOwotCQkJaWYoY3AtPmFtcF9pbml0KQorCQkJaWYgKGNwLT5hbXBfaW5pdCkKIAkJCQljYXJkLT5hbXBfaW5pdCA9IGNwLT5hbXBfaW5pdDsKIAkJCWJyZWFrOwogCQl9CiAJCWNwKys7CiAJfQotCWlmIChjcC0+bmFtZT09TlVMTCkKLQl7CisJaWYgKGNwLT5uYW1lID09IE5VTEwpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBVbmtub3duIGNhcmQgKCUwNFg6JTA0WCkgYXQgMHglMDhseC8weCUwOGx4LCBJUlEgJWRcbiIsCiAJCQlzc192ZW5kb3IsIHNzX2NhcmQsIGNhcmQtPmJhMF9hZGRyLCBjYXJkLT5iYTFfYWRkciwgIGNhcmQtPmlycSk7Ci0JfQotCWVsc2UKLQl7CisJfSBlbHNlIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiAlcyAoJTA0WDolMDRYKSBhdCAweCUwOGx4LzB4JTA4bHgsIElSUSAlZFxuIiwKIAkJCWNwLT5uYW1lLCBzc192ZW5kb3IsIHNzX2NhcmQsIGNhcmQtPmJhMF9hZGRyLCBjYXJkLT5iYTFfYWRkciwgY2FyZC0+aXJxKTsKIAl9CiAJCi0JaWYgKGNhcmQtPmFtcGxpZmllcl9jdHJsPT1OVUxMKQotCXsKKwlpZiAoY2FyZC0+YW1wbGlmaWVyX2N0cmwgPT0gTlVMTCkgewogCQljYXJkLT5hbXBsaWZpZXJfY3RybCA9IGFtcF9ub25lOwogCQljYXJkLT5hY3RpdmVfY3RybCA9IGNsa3J1bl9oYWNrOwogCX0JCQogCi0JaWYgKGV4dGVybmFsX2FtcCA9PSAxKQotCXsKKwlpZiAoZXh0ZXJuYWxfYW1wID09IDEpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBDcnlzdGFsIEVBUEQgc3VwcG9ydCBmb3JjZWQgb24uXG4iKTsKIAkJY2FyZC0+YW1wbGlmaWVyX2N0cmwgPSBhbXBfdm95ZXRyYTsKIAl9CiAKLQlpZiAodGhpbmtwYWQgPT0gMSkKLQl7CisJaWYgKHRoaW5rcGFkID09IDEpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiY3M0Nnh4OiBBY3RpdmF0aW5nIENMS1JVTiBoYWNrIGZvciBUaGlua3BhZC5cbiIpOwogCQljYXJkLT5hY3RpdmVfY3RybCA9IGNsa3J1bl9oYWNrOwogCX0KQEAgLTU0MjUsMTMgKzUxMzgsMTEgQEAKICogYW5kIG1kZWxheSBrZXJuZWwgY29kZSBpcyByZXBsYWNlZCBieSBhIHBtIHRpbWVyLCBvciB0aGUgZGVsYXlzCiAqIHdvcmsgd2VsbCBmb3IgYmF0dGVyeSBhbmQvb3IgQUMgcG93ZXIgYm90aC4KICovCi0JaWYoY2FyZC0+YWN0aXZlX2N0cmwgPT0gY2xrcnVuX2hhY2spCi0JeworCWlmIChjYXJkLT5hY3RpdmVfY3RybCA9PSBjbGtydW5faGFjaykgewogCQlpbml0ZGVsYXkgPSAyMTAwOwogCQljc19sYXB0b3Bfd2FpdCA9IDU7CiAJfQotCWlmKChjYXJkLT5hY3RpdmVfY3RybCA9PSBjbGtydW5faGFjaykgJiYgIShwb3dlcmRvd24gPT0gMSkpCi0JeworCWlmICgoY2FyZC0+YWN0aXZlX2N0cmwgPT0gY2xrcnVuX2hhY2spICYmICEocG93ZXJkb3duID09IDEpKSB7CiAvKgogKiBmb3Igc29tZSBjdXJyZW50bHkgdW5rbm93biByZWFzb24sIHBvd2VyaW5nIGRvd24gdGhlIERBQyBhbmQgQURDIGNvbXBvbmVudAogKiBibG9ja3Mgb24gdGhpbmtwYWRzIGNhdXNlcyBzb21lIGZ1bmt5IGJlaGF2aW9yLi4uIGRpc3Rvb3JycnRpb24gYW5kIGFjOTcgCkBAIC01NDQwLDcgKzUxNTEsNyBAQAogKi8KIAkJY3NfcG93ZXJkb3duID0gMDsKIAl9Ci0JaWYocG93ZXJkb3duID09IDApCisJaWYgKHBvd2VyZG93biA9PSAwKQogCQljc19wb3dlcmRvd24gPSAwOwogCWNhcmQtPmFjdGl2ZV9jdHJsKGNhcmQsIDEpOwogCkBAIC01NDYxLDcgKzUxNzIsNyBAQAogCQkJY2FyZC0+YmExLm5hbWUucG1lbSwKIAkJCWNhcmQtPmJhMS5uYW1lLnJlZykgKTsKIAotCWlmKGNhcmQtPmJhMCA9PSAwIHx8IGNhcmQtPmJhMS5uYW1lLmRhdGEwID09IDAgfHwKKwlpZiAoY2FyZC0+YmEwID09IDAgfHwgY2FyZC0+YmExLm5hbWUuZGF0YTAgPT0gMCB8fAogCQljYXJkLT5iYTEubmFtZS5kYXRhMSA9PSAwIHx8IGNhcmQtPmJhMS5uYW1lLnBtZW0gPT0gMCB8fAogCQljYXJkLT5iYTEubmFtZS5yZWcgPT0gMCkKIAkJZ290byBmYWlsMjsKQEAgLTU0NzcsMTQgKzUxODgsMTIgQEAKIAl9CiAKICAgICAgICAgLyogcmVnaXN0ZXIgL2Rldi9taWRpICovCi0gICAgICAgIGlmKChjYXJkLT5kZXZfbWlkaSA9IHJlZ2lzdGVyX3NvdW5kX21pZGkoJmNzX21pZGlfZm9wcywgLTEpKSA8IDApCisgICAgICAgIGlmICgoY2FyZC0+ZGV2X21pZGkgPSByZWdpc3Rlcl9zb3VuZF9taWRpKCZjc19taWRpX2ZvcHMsIC0xKSkgPCAwKQogICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAiY3M0Nnh4OiB1bmFibGUgdG8gcmVnaXN0ZXIgbWlkaVxuIik7CiAgICAgICAgICAgICAgICAgCiAJY2FyZC0+cG0uZmxhZ3MgfD0gQ1M0NlhYX1BNX0lETEU7Ci0JZm9yKGk9MDtpPDU7aSsrKQotCXsKLQkJaWYgKGNzX2hhcmR3YXJlX2luaXQoY2FyZCkgIT0gMCkKLQkJeworCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKKwkJaWYgKGNzX2hhcmR3YXJlX2luaXQoY2FyZCkgIT0gMCkgewogCQkJQ1NfREJHT1VUKENTX0VSUk9SLCA0LCBwcmludGsoCiAJCQkJImNzNDZ4eDogRVJST1IgaW4gY3NfaGFyZHdhcmVfaW5pdCgpLi4uIHJldHJ5aW5nXG4iKSk7CiAJCQlmb3IgKGogPSAwOyBqIDwgTlJfQUM5NzsgaisrKQpAQCAtNTQ5NywxMiArNTIwNiwxMSBAQAogCQl9CiAJCWJyZWFrOwogCX0KLQlpZihpPj00KQotCXsKKwlpZihpID49IDQpIHsKIAkJQ1NfREJHT1VUKENTX1BNIHwgQ1NfRVJST1IsIDEsIHByaW50aygKIAkJCSJjczQ2eHg6IGNzNDZ4eF9wcm9iZSgpLSBjc19oYXJkd2FyZV9pbml0KCkgZmFpbGVkLCByZXRyaWVkICVkIHRpbWVzLlxuIixpKSk7CiAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zb3VuZF9kc3AoY2FyZC0+ZGV2X2F1ZGlvKTsKLSAgICAgICAgICAgICAgICBpZihjYXJkLT5kZXZfbWlkaSkKKyAgICAgICAgICAgICAgICBpZiAoY2FyZC0+ZGV2X21pZGkpCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX3NvdW5kX21pZGkoY2FyZC0+ZGV2X21pZGkpOwogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKIAl9CkBAIC01NTE4LDcgKzUyMjYsNyBAQAogCSogQ2hlY2sgaWYgd2UgaGF2ZSB0byBpbml0IHRoZSBhbXBsaWZpZXIsIGJ1dCBwcm9iYWJseSBhbHJlYWR5IGRvbmUKIAkqIHNpbmNlIHRoZSBDRCBsb2dpYyBpbiB0aGUgYWM5NyBpbml0IGNvZGUgd2lsbCB0dXJuIG9uIHRoZSBleHQgYW1wLgogCSovCi0JaWYoY3AtPmFtcF9pbml0KQorCWlmIChjcC0+YW1wX2luaXQpCiAJCWNwLT5hbXBfaW5pdChjYXJkKTsKICAgICAgICAgY2FyZC0+YWN0aXZlX2N0cmwoY2FyZCwgLTEpOwogCkBAIC01NTM2LDE1ICs1MjQ0LDE1IEBACiBmYWlsOgogCWZyZWVfaXJxKGNhcmQtPmlycSwgY2FyZCk7CiBmYWlsMjoKLQlpZihjYXJkLT5iYTApCisJaWYgKGNhcmQtPmJhMCkKIAkJaW91bm1hcChjYXJkLT5iYTApOwotCWlmKGNhcmQtPmJhMS5uYW1lLmRhdGEwKQorCWlmIChjYXJkLT5iYTEubmFtZS5kYXRhMCkKIAkJaW91bm1hcChjYXJkLT5iYTEubmFtZS5kYXRhMCk7Ci0JaWYoY2FyZC0+YmExLm5hbWUuZGF0YTEpCisJaWYgKGNhcmQtPmJhMS5uYW1lLmRhdGExKQogCQlpb3VubWFwKGNhcmQtPmJhMS5uYW1lLmRhdGExKTsKLQlpZihjYXJkLT5iYTEubmFtZS5wbWVtKQorCWlmIChjYXJkLT5iYTEubmFtZS5wbWVtKQogCQlpb3VubWFwKGNhcmQtPmJhMS5uYW1lLnBtZW0pOwotCWlmKGNhcmQtPmJhMS5uYW1lLnJlZykKKwlpZiAoY2FyZC0+YmExLm5hbWUucmVnKQogCQlpb3VubWFwKGNhcmQtPmJhMS5uYW1lLnJlZyk7CiAJa2ZyZWUoY2FyZCk7CiAJQ1NfREJHT1VUKENTX0lOSVQgfCBDU19FUlJPUiwgMSwgcHJpbnRrKEtFUk5fSU5GTwpAQCAtNTU5OCw5ICs1MzA2LDggQEAKIAkgKiAgUG93ZXIgZG93biB0aGUgREFDIGFuZCBBREMuICBXZSB3aWxsIHBvd2VyIHRoZW0gdXAgKGlmKSB3aGVuIHdlIG5lZWQKIAkgKiAgdGhlbS4KIAkgKi8KLQlpZiggKHRtcCA9IGNzNDYxeF9wb3dlcmRvd24oY2FyZCwgQ1NfUE9XRVJfREFDIHwgQ1NfUE9XRVJfQURDIHwKLQkJCUNTX1BPV0VSX01JWFZPTiwgQ1NfVFJVRSApKSApCi0JeworCWlmICgodG1wID0gY3M0NjF4X3Bvd2VyZG93bihjYXJkLCBDU19QT1dFUl9EQUMgfCBDU19QT1dFUl9BREMgfAorCQkJQ1NfUE9XRVJfTUlYVk9OLCBDU19UUlVFKSkpIHsKIAkJQ1NfREJHT1VUKENTX0VSUk9SIHwgQ1NfSU5JVCwgMSwgcHJpbnRrKEtFUk5fSU5GTyAKIAkJCSJjczQ2eHg6IGNzNDYxeF9wb3dlcmRvd24oKSBmYWlsdXJlICgweCV4KVxuIix0bXApICk7CiAJfQpAQCAtNTYzNCw3ICs1MzQxLDcgQEAKIAkJCWFjOTdfcmVsZWFzZV9jb2RlYyhjYXJkLT5hYzk3X2NvZGVjW2ldKTsKIAkJfQogCXVucmVnaXN0ZXJfc291bmRfZHNwKGNhcmQtPmRldl9hdWRpbyk7Ci0gICAgICAgIGlmKGNhcmQtPmRldl9taWRpKQorICAgICAgICBpZiAoY2FyZC0+ZGV2X21pZGkpCiAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zb3VuZF9taWRpKGNhcmQtPmRldl9taWRpKTsKIAlsaXN0X2RlbCgmY2FyZC0+bGlzdCk7CiAJa2ZyZWUoY2FyZCk7CkBAIC01NjkzLDggKzU0MDAsNyBAQAogCQkiY3M0Nnh4OiBjczQ2eHhfaW5pdF9tb2R1bGUoKSsgXG4iKSk7CiAJcnRuID0gcGNpX3JlZ2lzdGVyX2RyaXZlcigmY3M0Nnh4X3BjaV9kcml2ZXIpOwogCi0JaWYocnRuID09IC1FTk9ERVYpCi0JeworCWlmIChydG4gPT0gLUVOT0RFVikgewogCQlDU19EQkdPVVQoQ1NfRVJST1IgfCBDU19JTklULCAxLCBwcmludGsoIAogCQkJImNzNDZ4eDogVW5hYmxlIHRvIGRldGVjdCB2YWxpZCBjczQ2eHggZGV2aWNlXG4iKSk7CiAJfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL0tjb25maWcgYi9zb3VuZC9wY2kvS2NvbmZpZwppbmRleCBhMjA4MTgwLi5kMzczNDZiIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvS2NvbmZpZworKysgYi9zb3VuZC9wY2kvS2NvbmZpZwpAQCAtMjE2LDE0ICsyMTYsMTkgQEAKIAkgIFRoaXMgd29ya3MgYmV0dGVyIHRoYW4gdGhlIG9sZCBjb2RlLCBzbyBzYXkgWS4KIAogY29uZmlnIFNORF9DUzU1MzVBVURJTwotCXRyaXN0YXRlICJDUzU1MzUgQXVkaW8iCisJdHJpc3RhdGUgIkNTNTUzNS9DUzU1MzYgQXVkaW8iCiAJZGVwZW5kcyBvbiBTTkQgJiYgWDg2ICYmICFYODZfNjQKIAlzZWxlY3QgU05EX1BDTQogCXNlbGVjdCBTTkRfQUM5N19DT0RFQwogCWhlbHAKIAkgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBhdWRpbyBvbiBDUzU1MzUgY2hpcHMuIEl0IGlzCiAJICByZWZlcnJlZCB0byBhcyBOUyBDUzU1MzUgSU8gb3IgQU1EIENTNTUzNSBJTyBjb21wYW5pb24gaW4KLQkgIHZhcmlvdXMgbGl0ZXJhdHVyZS4KKwkgIHZhcmlvdXMgbGl0ZXJhdHVyZS4gVGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyB0aGUgQ1M1NTM2IGF1ZGlvCisJICBkZXZpY2UuIEhvd2V2ZXIsIGZvciBib3RoIGNoaXBzLCBvbiBjZXJ0YWluIGJvYXJkcywgeW91IG1heQorCSAgbmVlZCB0byB1c2UgYWM5N19xdWlyaz1ocF9vbmx5IGlmIHlvdXIgYm9hcmQgaGFzIHBoeXNpY2FsbHkgCisJICBtYXBwZWQgaGVhZHBob25lIG91dCB0byBtYXN0ZXIgb3V0cHV0LiBJZiB0aGF0IHdvcmtzIGZvciB5b3UsCisJICBzZW5kIGxzcGNpIC12dnYgb3V0cHV0IHRvIHRoZSBtYWlsaW5nIGxpc3Qgc28gdGhhdCB5b3VyIGJvYXJkCisJICBjYW4gYmUgaWRlbnRpZmllZCBpbiB0aGUgcXVpcmtzIGxpc3QuCiAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIHNuZC1jczU1MzVhdWRpby4KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hYzk3L2FjOTdfY29kZWMuYyBiL3NvdW5kL3BjaS9hYzk3L2FjOTdfY29kZWMuYwppbmRleCBkMDUyMDA3Li4wYWJmMjgwIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWM5Ny9hYzk3X2NvZGVjLmMKKysrIGIvc291bmQvcGNpL2FjOTcvYWM5N19jb2RlYy5jCkBAIC0yNTMsNiArMjUzLDggQEAKIAlhYzk3LT5idXMtPm9wcy0+d3JpdGUoYWM5NywgcmVnLCB2YWx1ZSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2FjOTdfd3JpdGUpOworCiAvKioKICAqIHNuZF9hYzk3X3JlYWQgLSByZWFkIGEgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gcmVnaXN0ZXIKICAqIApAQCAtMjgxLDYgKzI4Myw4IEBACiAJcmV0dXJuIGFjOTctPnJlZ3NbcmVnXTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N19yZWFkKTsKKwogLyoqCiAgKiBzbmRfYWM5N193cml0ZV9jYWNoZSAtIHdyaXRlIGEgdmFsdWUgb24gdGhlIGdpdmVuIHJlZ2lzdGVyIGFuZCB1cGRhdGUgdGhlIGNhY2hlCiAgKiBAYWM5NzogdGhlIGFjOTcgaW5zdGFuY2UKQEAgLTMwMiw2ICszMDYsOCBAQAogCW11dGV4X3VubG9jaygmYWM5Ny0+cmVnX211dGV4KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N193cml0ZV9jYWNoZSk7CisKIC8qKgogICogc25kX2FjOTdfdXBkYXRlIC0gdXBkYXRlIHRoZSB2YWx1ZSBvbiB0aGUgZ2l2ZW4gcmVnaXN0ZXIKICAqIEBhYzk3OiB0aGUgYWM5NyBpbnN0YW5jZQpAQCAtMzMxLDYgKzMzNyw4IEBACiAJcmV0dXJuIGNoYW5nZTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N191cGRhdGUpOworCiAvKioKICAqIHNuZF9hYzk3X3VwZGF0ZV9iaXRzIC0gdXBkYXRlIHRoZSBiaXRzIG9uIHRoZSBnaXZlbiByZWdpc3RlcgogICogQGFjOTc6IHRoZSBhYzk3IGluc3RhbmNlCkBAIC0zNTYsNiArMzY0LDggQEAKIAlyZXR1cm4gY2hhbmdlOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3VwZGF0ZV9iaXRzKTsKKwogLyogbm8gbG9jayB2ZXJzaW9uIC0gc2VlIHNuZF9hYzk3X3VwZGF0X2JpdHMoKSAqLwogaW50IHNuZF9hYzk3X3VwZGF0ZV9iaXRzX25vbG9jayhzdHJ1Y3Qgc25kX2FjOTcgKmFjOTcsIHVuc2lnbmVkIHNob3J0IHJlZywKIAkJCQl1bnNpZ25lZCBzaG9ydCBtYXNrLCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKQEAgLTU2Myw3ICs1NzMsNyBAQAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHNuZF9hYzk3X2NvbnRyb2xzX21pY19ib29zdCA9Ci0JQUM5N19TSU5HTEUoIk1pYyBCb29zdCAoKzIwZEIpIiwgQUM5N19NSUMsIDYsIDEsIDApOworCUFDOTdfU0lOR0xFKCJNaWMgQm9vc3QgKCsyMGRCKSBTd2l0Y2giLCBBQzk3X01JQywgNiwgMSwgMCk7CiAKIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0ZF9yZWNfc2VsW10gPSB7Ik1pYyIsICJDRCIsICJWaWRlbyIsICJBdXgiLCAiTGluZSIsICJNaXgiLCAiTWl4IE1vbm8iLCAiUGhvbmUifTsKQEAgLTYwNSw3ICs2MTUsNyBAQAogQUM5N19TSU5HTEUoIjNEIENvbnRyb2wgLSBTd2l0Y2giLCBBQzk3X0dFTkVSQUxfUFVSUE9TRSwgMTMsIDEsIDApLAogQUM5N19TSU5HTEUoIkxvdWRuZXNzIChiYXNzIGJvb3N0KSIsIEFDOTdfR0VORVJBTF9QVVJQT1NFLCAxMiwgMSwgMCksCiBBQzk3X0VOVU0oIk1vbm8gT3V0cHV0IFNlbGVjdCIsIHN0ZF9lbnVtWzJdKSwKLUFDOTdfRU5VTSgiTWljIFNlbGVjdCIsIHN0ZF9lbnVtWzNdKSwKK0FDOTdfRU5VTSgiTWljIFNlbGVjdCBDYXB0dXJlIFN3aXRjaCIsIHN0ZF9lbnVtWzNdKSwKIEFDOTdfU0lOR0xFKCJBREMvREFDIExvb3BiYWNrIiwgQUM5N19HRU5FUkFMX1BVUlBPU0UsIDcsIDEsIDApCiB9OwogCkBAIC0xMjI2LDcgKzEyMzYsOCBAQAogCWFjOTctPnJlZ3NbQUM5N19DRU5URVJfTEZFX01BU1RFUl0gPSAweDgwODA7CiAKIAkvKiBidWlsZCBjZW50ZXIgY29udHJvbHMgKi8KLQlpZiAoc25kX2FjOTdfdHJ5X3ZvbHVtZV9taXgoYWM5NywgQUM5N19DRU5URVJfTEZFX01BU1RFUikpIHsKKwlpZiAoKHNuZF9hYzk3X3RyeV92b2x1bWVfbWl4KGFjOTcsIEFDOTdfQ0VOVEVSX0xGRV9NQVNURVIpKSAKKwkJJiYgIShhYzk3LT5mbGFncyAmIEFDOTdfQURfTVVMVEkpKSB7CiAJCWlmICgoZXJyID0gc25kX2N0bF9hZGQoY2FyZCwgc25kX2FjOTdfY25ldygmc25kX2FjOTdfY29udHJvbHNfY2VudGVyWzBdLCBhYzk3KSkpIDwgMCkKIAkJCXJldHVybiBlcnI7CiAJCWlmICgoZXJyID0gc25kX2N0bF9hZGQoY2FyZCwga2N0bCA9IHNuZF9hYzk3X2NuZXcoJnNuZF9hYzk3X2NvbnRyb2xzX2NlbnRlclsxXSwgYWM5NykpKSA8IDApCkBAIC0xMjM4LDcgKzEyNDksOCBAQAogCX0KIAogCS8qIGJ1aWxkIExGRSBjb250cm9scyAqLwotCWlmIChzbmRfYWM5N190cnlfdm9sdW1lX21peChhYzk3LCBBQzk3X0NFTlRFUl9MRkVfTUFTVEVSKzEpKSB7CisJaWYgKChzbmRfYWM5N190cnlfdm9sdW1lX21peChhYzk3LCBBQzk3X0NFTlRFUl9MRkVfTUFTVEVSKzEpKQorCQkmJiAhKGFjOTctPmZsYWdzICYgQUM5N19BRF9NVUxUSSkpIHsKIAkJaWYgKChlcnIgPSBzbmRfY3RsX2FkZChjYXJkLCBzbmRfYWM5N19jbmV3KCZzbmRfYWM5N19jb250cm9sc19sZmVbMF0sIGFjOTcpKSkgPCAwKQogCQkJcmV0dXJuIGVycjsKIAkJaWYgKChlcnIgPSBzbmRfY3RsX2FkZChjYXJkLCBrY3RsID0gc25kX2FjOTdfY25ldygmc25kX2FjOTdfY29udHJvbHNfbGZlWzFdLCBhYzk3KSkpIDwgMCkKQEAgLTEyNTAsNyArMTI2Miw4IEBACiAJfQogCiAJLyogYnVpbGQgc3Vycm91bmQgY29udHJvbHMgKi8KLQlpZiAoc25kX2FjOTdfdHJ5X3ZvbHVtZV9taXgoYWM5NywgQUM5N19TVVJST1VORF9NQVNURVIpKSB7CisJaWYgKChzbmRfYWM5N190cnlfdm9sdW1lX21peChhYzk3LCBBQzk3X1NVUlJPVU5EX01BU1RFUikpIAorCQkmJiAhKGFjOTctPmZsYWdzICYgQUM5N19BRF9NVUxUSSkpIHsKIAkJLyogU3Vycm91bmQgTWFzdGVyICgweDM4KSBpcyB3aXRoIHN0ZXJlbyBtdXRlcyAqLwogCQlpZiAoKGVyciA9IHNuZF9hYzk3X2NtaXhfbmV3X3N0ZXJlbyhjYXJkLCAiU3Vycm91bmQgUGxheWJhY2siLCBBQzk3X1NVUlJPVU5EX01BU1RFUiwgMSwgYWM5NykpIDwgMCkKIAkJCXJldHVybiBlcnI7CkBAIC0xMzM1LDkgKzEzNDgsMTEgQEAKIAl9CiAKIAkvKiBidWlsZCBBdXggY29udHJvbHMgKi8KLQlpZiAoc25kX2FjOTdfdHJ5X3ZvbHVtZV9taXgoYWM5NywgQUM5N19BVVgpKSB7Ci0JCWlmICgoZXJyID0gc25kX2FjOTdfY21peF9uZXcoY2FyZCwgIkF1eCBQbGF5YmFjayIsIEFDOTdfQVVYLCBhYzk3KSkgPCAwKQotCQkJcmV0dXJuIGVycjsKKwlpZiAoIShhYzk3LT5mbGFncyAmIEFDOTdfSEFTX05PX0FVWCkpIHsKKwkJaWYgKHNuZF9hYzk3X3RyeV92b2x1bWVfbWl4KGFjOTcsIEFDOTdfQVVYKSkgeworCQkJaWYgKChlcnIgPSBzbmRfYWM5N19jbWl4X25ldyhjYXJkLCAiQXV4IFBsYXliYWNrIiwgQUM5N19BVVgsIGFjOTcpKSA8IDApCisJCQkJcmV0dXJuIGVycjsKKwkJfQogCX0KIAogCS8qIGJ1aWxkIFBDTSBjb250cm9scyAqLwpAQCAtMTY4Miw2ICsxNjk3LDcgQEAKIAlyZXR1cm4gInVua25vd24gY29kZWMiOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9hYzk3X2dldF9zaG9ydF9uYW1lKTsKIAogLyogd2FpdCBmb3IgYSB3aGlsZSB1bnRpbCByZWdpc3RlcnMgYXJlIGFjY2Vzc2libGUgYWZ0ZXIgUkVTRVQKICAqIHJldHVybiAwIGlmIG9rLCBuZWdhdGl2ZSBub3QgcmVhZHkKQEAgLTE3NzQsNiArMTc5MCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2FjOTdfYnVzKTsKKwogLyogc3RvcCBubyBkZXYgcmVsZWFzZSB3YXJuaW5nICovCiBzdGF0aWMgdm9pZCBhYzk3X2RldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKiBkZXYpCiB7CkBAIC0yMTE3LDYgKzIxMzUsNyBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9hYzk3X21peGVyKTsKIAogLyoKICAqIFBvd2VyIGRvd24gdGhlIGNoaXAuCkBAIC0yMTY2LDYgKzIxODUsOCBAQAogCXNuZF9hYzk3X3Bvd2VyZG93bihhYzk3KTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N19zdXNwZW5kKTsKKwogLyoKICAqIHJlc3RvcmUgYWM5NyBzdGF0dXMKICAqLwpAQCAtMjI2Nyw2ICsyMjg4LDggQEAKIAkJc25kX2FjOTdfcmVzdG9yZV9pZWM5NTgoYWM5Nyk7CiAJfQogfQorCitFWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3Jlc3VtZSk7CiAjZW5kaWYKIAogCkBAIC0yNTkwLDI5ICsyNjEzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotCi0vKgotICogIEV4cG9ydGVkIHN5bWJvbHMKLSAqLwotCi1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3dyaXRlKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfcmVhZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3dyaXRlX2NhY2hlKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfdXBkYXRlKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfdXBkYXRlX2JpdHMpOwotRVhQT1JUX1NZTUJPTChzbmRfYWM5N19nZXRfc2hvcnRfbmFtZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X2J1cyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X21peGVyKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfcGNtX2Fzc2lnbik7Ci1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3BjbV9vcGVuKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfcGNtX2Nsb3NlKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfcGNtX2RvdWJsZV9yYXRlX3J1bGVzKTsKIEVYUE9SVF9TWU1CT0woc25kX2FjOTdfdHVuZV9oYXJkd2FyZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3NldF9yYXRlKTsKLSNpZmRlZiBDT05GSUdfUE0KLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfcmVzdW1lKTsKLUVYUE9SVF9TWU1CT0woc25kX2FjOTdfc3VzcGVuZCk7Ci0jZW5kaWYKIAogLyoKICAqICBJTklUIHBhcnQKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hYzk3L2FjOTdfcGF0Y2guYyBiL3NvdW5kL3BjaS9hYzk3L2FjOTdfcGF0Y2guYwppbmRleCA0ZDljZjM3Li43ZjE5N2M3IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWM5Ny9hYzk3X3BhdGNoLmMKKysrIGIvc291bmQvcGNpL2FjOTcvYWM5N19wYXRjaC5jCkBAIC00NjQsNiArNDY0LDEwIEBACiB7CiAJLyogV005NzA1LCBXTTk3MTAgKi8KIAlhYzk3LT5idWlsZF9vcHMgPSAmcGF0Y2hfd29sZnNvbl93bTk3MDVfb3BzOworI2lmZGVmIENPTkZJR19UT1VDSFNDUkVFTl9XTTk3MDUKKwkvKiBXTTk3MDUgdG91Y2hzY3JlZW4gdXNlcyBBVVggYW5kIFZJREVPIGZvciB0b3VjaCAqLworCWFjOTctPmZsYWdzIHw9M0QgQUM5N19IQVNfTk9fVklERU8gfCBBQzk3X0hBU19OT19BVVg7CisjZW5kaWYKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTM2Nyw2ICsxMzcxLDEzIEBACiAKIAlzbmRfYWM5N19yZXN0b3JlX2llYzk1OChhYzk3KTsKIH0KKworc3RhdGljIHZvaWQgYWQxODg4X3Jlc3VtZShzdHJ1Y3Qgc25kX2FjOTcgKmFjOTcpCit7CisJYWQxOHh4X3Jlc3VtZShhYzk3KTsKKwlzbmRfYWM5N193cml0ZV9jYWNoZShhYzk3LCBBQzk3X0NPREVDX0NMQVNTX1JFViwgMHg4MDgwKTsKK30KKwogI2VuZGlmCiAKIGludCBwYXRjaF9hZDE4MTkoc3RydWN0IHNuZF9hYzk3ICogYWM5NykKQEAgLTE2MjcsNiArMTYzOCw3IEBACiAgKiAoU1MgdmVuZG9yIDw8IDE2IHwgZGV2aWNlKQogICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGFkMTk4MV9qYWNrc19ibGFja2xpc3RbXSA9IHsKKwkweDEwMTQwNTM3LCAvKiBUaGlua3BhZCBUNDFwICovCiAJMHgxMDE0MDU1NCwgLyogVGhpbmtwYWQgVDQycC9SNTBwICovCiAJMCAvKiBlbmQgKi8KIH07CkBAIC0xODM5LDcgKzE4NTEsNyBAQAogCS5idWlsZF9wb3N0X3NwZGlmID0gcGF0Y2hfYWQxOTh4X3Bvc3Rfc3BkaWYsCiAJLmJ1aWxkX3NwZWNpZmljID0gcGF0Y2hfYWQxODg4X3NwZWNpZmljLAogI2lmZGVmIENPTkZJR19QTQotCS5yZXN1bWUgPSBhZDE4eHhfcmVzdW1lLAorCS5yZXN1bWUgPSBhZDE4ODhfcmVzdW1lLAogI2VuZGlmCiAJLnVwZGF0ZV9qYWNrcyA9IGFkMTg4OF91cGRhdGVfamFja3MsCiB9OwpAQCAtMjA0OCw3ICsyMDYwLDEwIEBACiAJLyogRW5hYmxlIFNQRElGLUlOIG9ubHkgb24gUmV2LkUgYW5kIGFib3ZlICovCiAJdmFsID0gc25kX2FjOTdfcmVhZChhYzk3LCBBQzk3X0FMQzY1MF9DTE9DSyk7CiAJLyogU1BESUYgSU4gd2l0aCBwaW4gNDcgKi8KLQlpZiAoYWM5Ny0+c3BlYy5kZXZfZmxhZ3MpCisJaWYgKGFjOTctPnNwZWMuZGV2X2ZsYWdzICYmCisJICAgIC8qIEFTVVMgQTZLTSByZXF1aXJlcyBFQVBEICovCisJICAgICEgKGFjOTctPnN1YnN5c3RlbV92ZW5kb3IgPT0gMHgxMDQzICYmCisJICAgICAgIGFjOTctPnN1YnN5c3RlbV9kZXZpY2UgPT0gMHgxMTAzKSkKIAkJdmFsIHw9IDB4MDM7IC8qIGVuYWJsZSAqLwogCWVsc2UKIAkJdmFsICY9IH4weDAzOyAvKiBkaXNhYmxlICovCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWM5Ny9hYzk3X3BjbS5jIGIvc291bmQvcGNpL2FjOTcvYWM5N19wY20uYwppbmRleCA1MTJhMzU4Li5mNjg0YWEyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWM5Ny9hYzk3X3BjbS5jCisrKyBiL3NvdW5kL3BjaS9hYzk3L2FjOTdfcGNtLmMKQEAgLTMxNyw2ICszMTcsOCBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9hYzk3X3NldF9yYXRlKTsKKwogc3RhdGljIHVuc2lnbmVkIHNob3J0IGdldF9wc2xvdHMoc3RydWN0IHNuZF9hYzk3ICphYzk3LCB1bnNpZ25lZCBjaGFyICpyYXRlX3RhYmxlLCB1bnNpZ25lZCBzaG9ydCAqc3BkaWZfc2xvdHMpCiB7CiAJaWYgKCFhYzk3X2lzX2F1ZGlvKGFjOTcpKQpAQCAtNTUwLDYgKzU1Miw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2FjOTdfcGNtX2Fzc2lnbik7CisKIC8qKgogICogc25kX2FjOTdfcGNtX29wZW4gLSBvcGVucyB0aGUgZ2l2ZW4gQUM5NyBwY20KICAqIEBwY206IHRoZSBhYzk3IHBjbSBpbnN0YW5jZQpAQCAtNjMzLDYgKzYzNyw4IEBACiAJcmV0dXJuIGVycjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N19wY21fb3Blbik7CisKIC8qKgogICogc25kX2FjOTdfcGNtX2Nsb3NlIC0gY2xvc2VzIHRoZSBnaXZlbiBBQzk3IHBjbQogICogQHBjbTogdGhlIGFjOTcgcGNtIGluc3RhbmNlCkBAIC02NTgsNiArNjY0LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfYWM5N19wY21fY2xvc2UpOworCiBzdGF0aWMgaW50IGRvdWJsZV9yYXRlX2h3X2NvbnN0cmFpbnRfcmF0ZShzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKIAkJCQkJICBzdHJ1Y3Qgc25kX3BjbV9od19ydWxlICpydWxlKQogewpAQCAtNzA5LDMgKzcxNyw1IEBACiAJCQkJICBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwgLTEpOwogCXJldHVybiBlcnI7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX2FjOTdfcGNtX2RvdWJsZV9yYXRlX3J1bGVzKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hYzk3L2FjOTdfcHJvYy5jIGIvc291bmQvcGNpL2FjOTcvYWM5N19wcm9jLmMKaW5kZXggNGQ1MjNkZi4uMjExOGRmNSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FjOTcvYWM5N19wcm9jLmMKKysrIGIvc291bmQvcGNpL2FjOTcvYWM5N19wcm9jLmMKQEAgLTQzMyw3ICs0MzMsNyBAQAogCXByZWZpeCA9IGFjOTdfaXNfYXVkaW8oYWM5NykgPyAiYWM5NyIgOiAibWM5NyI7CiAJc3ByaW50ZihuYW1lLCAiJXMjJWQtJWQiLCBwcmVmaXgsIGFjOTctPmFkZHIsIGFjOTctPm51bSk7CiAJaWYgKChlbnRyeSA9IHNuZF9pbmZvX2NyZWF0ZV9jYXJkX2VudHJ5KGFjOTctPmJ1cy0+Y2FyZCwgbmFtZSwgYWM5Ny0+YnVzLT5wcm9jKSkgIT0gTlVMTCkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGFjOTcsIDEwMjQsIHNuZF9hYzk3X3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgYWM5Nywgc25kX2FjOTdfcHJvY19yZWFkKTsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwogCQkJZW50cnkgPSBOVUxMOwpAQCAtNDQyLDEwICs0NDIsOSBAQAogCWFjOTctPnByb2MgPSBlbnRyeTsKIAlzcHJpbnRmKG5hbWUsICIlcyMlZC0lZCtyZWdzIiwgcHJlZml4LCBhYzk3LT5hZGRyLCBhYzk3LT5udW0pOwogCWlmICgoZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShhYzk3LT5idXMtPmNhcmQsIG5hbWUsIGFjOTctPmJ1cy0+cHJvYykpICE9IE5VTEwpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBhYzk3LCAxMDI0LCBzbmRfYWM5N19wcm9jX3JlZ3NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgYWM5Nywgc25kX2FjOTdfcHJvY19yZWdzX3JlYWQpOwogI2lmZGVmIENPTkZJR19TTkRfREVCVUcKIAkJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKLQkJZW50cnktPmMudGV4dC53cml0ZV9zaXplID0gMTAyNDsKIAkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9hYzk3X3Byb2NfcmVnc193cml0ZTsKICNlbmRpZgogCQlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FjOTcvYWs0NTMxX2NvZGVjLmMgYi9zb3VuZC9wY2kvYWM5Ny9hazQ1MzFfY29kZWMuYwppbmRleCAwZmI3YjM0Li45NGMyNmVjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWM5Ny9hazQ1MzFfY29kZWMuYworKysgYi9zb3VuZC9wY2kvYWM5Ny9hazQ1MzFfY29kZWMuYwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNhcmQsICJhazQ1MzEiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGFrNDUzMSwgMTAyNCwgc25kX2FrNDUzMV9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGFrNDUzMSwgc25kX2FrNDUzMV9wcm9jX3JlYWQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuYwppbmRleCBlZWNlMWM3Li5kNDJiZjQ1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWQxODg5LmMKKysrIGIvc291bmQvcGNpL2FkMTg4OS5jCkBAIC03NTMsNyArNzUzLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCFzbmRfY2FyZF9wcm9jX25ldyhjaGlwLT5jYXJkLCBjaGlwLT5jYXJkLT5kcml2ZXIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgc25kX2FkMTg4OV9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHNuZF9hZDE4ODlfcHJvY19yZWFkKTsKIH0KIAogc3RhdGljIHN0cnVjdCBhYzk3X3F1aXJrIGFjOTdfcXVpcmtzW10gPSB7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWxpNTQ1MS9hbGk1NDUxLmMgYi9zb3VuZC9wY2kvYWxpNTQ1MS9hbGk1NDUxLmMKaW5kZXggZTJkYmMyMS4uNWRmZGJmNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FsaTU0NTEvYWxpNTQ1MS5jCisrKyBiL3NvdW5kL3BjaS9hbGk1NDUxL2FsaTU0NTEuYwpAQCAtNDksNyArNDksNyBAQAogc3RhdGljIGludCBpbmRleCA9IFNORFJWX0RFRkFVTFRfSURYMTsJLyogSW5kZXggKi8KIHN0YXRpYyBjaGFyICppZCA9IFNORFJWX0RFRkFVTFRfU1RSMTsJLyogSUQgZm9yIHRoaXMgY2FyZCAqLwogc3RhdGljIGludCBwY21fY2hhbm5lbHMgPSAzMjsKLXN0YXRpYyBpbnQgc3BkaWYgPSAwOworc3RhdGljIGludCBzcGRpZjsKIAogbW9kdWxlX3BhcmFtKGluZGV4LCBpbnQsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciBBTEkgTTU0NTEgUENJIEF1ZGlvLiIpOwpAQCAtMjE3Myw3ICsyMTczLDcgQEAKIHsKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCWlmKCFzbmRfY2FyZF9wcm9jX25ldyhjb2RlYy0+Y2FyZCwgImFsaTU0NTEiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNvZGVjLCAxMDI0LCBzbmRfYWxpX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY29kZWMsIHNuZF9hbGlfcHJvY19yZWFkKTsKIH0KIAogc3RhdGljIGludCBfX2RldmluaXQgc25kX2FsaV9yZXNvdXJjZXMoc3RydWN0IHNuZF9hbGkgKmNvZGVjKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FsczQwMDAuYyBiL3NvdW5kL3BjaS9hbHM0MDAwLmMKaW5kZXggNjA0MjNiMS4uYTlmMDgwNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FsczQwMDAuYworKysgYi9zb3VuZC9wY2kvYWxzNDAwMC5jCkBAIC03NDYsOCArNzQ2LDggQEAKIAkJY2FyZC0+c2hvcnRuYW1lLCBjaGlwLT5hbHRfcG9ydCwgY2hpcC0+aXJxKTsKIAogCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyggY2FyZCwgMCwgTVBVNDAxX0hXX0FMUzQwMDAsCi0JCQkJICAgICAgICBnY3IrMHgzMCwgMSwgcGNpLT5pcnEsIDAsCi0JCQkJICAgICAgICAmY2hpcC0+cm1pZGkpKSA8IDApIHsKKwkJCQkgICAgICAgIGdjcisweDMwLCBNUFU0MDFfSU5GT19JTlRFR1JBVEVELAorCQkJCQlwY2ktPmlycSwgMCwgJmNoaXAtPnJtaWRpKSkgPCAwKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYWxzNDAwMDogbm8gTVBVLTQwMSBkZXZpY2UgYXQgMHglbHg/XG4iLCBnY3IrMHgzMCk7CiAJCWdvdG8gb3V0X2VycjsKIAl9CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwLmMgYi9zb3VuZC9wY2kvYXRpaXhwLmMKaW5kZXggZDBmNzU5ZC4uZjE4YThjMCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jCisrKyBiL3NvdW5kL3BjaS9hdGlpeHAuYwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgImF0aWl4cCIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgc25kX2F0aWl4cF9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHNuZF9hdGlpeHBfcHJvY19yZWFkKTsKIH0KICNlbHNlIC8qICFDT05GSUdfUFJPQ19GUyAqLwogI2RlZmluZSBzbmRfYXRpaXhwX3Byb2NfaW5pdChjaGlwKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jIGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jCmluZGV4IDEyYTM0YzMuLjQwNzM5MDUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYworKysgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMKQEAgLTExNzcsNyArMTE3Nyw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJhdGlpeHAtbW9kZW0iLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIDEwMjQsIHNuZF9hdGlpeHBfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCBzbmRfYXRpaXhwX3Byb2NfcmVhZCk7CiB9CiAjZWxzZQogI2RlZmluZSBzbmRfYXRpaXhwX3Byb2NfaW5pdChjaGlwKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKaW5kZXggMTI2ODcwZS4uOGEzYjExOCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYworKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCkBAIC0yNjEsNiArMjYxLDEzIEBACiAJCXJldHVybiBlcnI7CiAJfQogCXNuZF92b3J0ZXhfd29ya2Fyb3VuZChwY2ksIHBjaWZpeFtkZXZdKTsKKworCS8vIENhcmQgZGV0YWlscyBuZWVkZWQgaW4gc25kX3ZvcnRleF9taWRpCisJc3RyY3B5KGNhcmQtPmRyaXZlciwgQ0FSRF9OQU1FX1NIT1JUKTsKKwlzcHJpbnRmKGNhcmQtPnNob3J0bmFtZSwgIkF1cmVhbCBWb3J0ZXggJXMiLCBDQVJEX05BTUVfU0hPUlQpOworCXNwcmludGYoY2FyZC0+bG9uZ25hbWUsICIlcyBhdCAweCVseCBpcnEgJWkiLAorCQljYXJkLT5zaG9ydG5hbWUsIGNoaXAtPmlvLCBjaGlwLT5pcnEpOworCiAJLy8gKDQpIEFsbG9jIGNvbXBvbmVudHMuCiAJLy8gQURCIHBjbS4KIAlpZiAoKGVyciA9IHNuZF92b3J0ZXhfbmV3X3BjbShjaGlwLCBWT1JURVhfUENNX0FEQiwgTlJfQURCKSkgPCAwKSB7CkBAIC0zMjMsMTEgKzMzMCw2IEBACiAjZW5kaWYKIAogCS8vICg1KQotCXN0cmNweShjYXJkLT5kcml2ZXIsIENBUkRfTkFNRV9TSE9SVCk7Ci0Jc3RyY3B5KGNhcmQtPnNob3J0bmFtZSwgQ0FSRF9OQU1FX1NIT1JUKTsKLQlzcHJpbnRmKGNhcmQtPmxvbmduYW1lLCAiJXMgYXQgMHglbHggaXJxICVpIiwKLQkJY2FyZC0+c2hvcnRuYW1lLCBjaGlwLT5pbywgY2hpcC0+aXJxKTsKLQogCWlmICgoZXJyID0gcGNpX3JlYWRfY29uZmlnX3dvcmQocGNpLCBQQ0lfREVWSUNFX0lELAogCQkJCSAgJihjaGlwLT5kZXZpY2UpKSkgPCAwKSB7CiAJCXNuZF9jYXJkX2ZyZWUoY2FyZCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MF9tcHU0MDEuYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX21wdTQwMS5jCmluZGV4IDg3M2Y0ODYuLmM3NWQzNjggMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX21wdTQwMS5jCisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX21wdTQwMS5jCkBAIC00Nyw3ICs0Nyw3IEBACiAJc3RydWN0IHNuZF9yYXdtaWRpICpybWlkaTsKIAlpbnQgdGVtcCwgbW9kZTsKIAlzdHJ1Y3Qgc25kX21wdTQwMSAqbXB1OwotCWludCBwb3J0OworCXVuc2lnbmVkIGxvbmcgcG9ydDsKIAogI2lmZGVmIFZPUlRFWF9NUFU0MDFfTEVHQUNZCiAJLyogRW5hYmxlSGFyZENvZGVkTVBVNDAxUG9ydCgpICovCkBAIC03MCw5ICs3MCw2IEBACiAJdGVtcCB8PSAoTUlESV9DTE9DS19ESVYgPDwgOCkgfCAoKG1vZGUgPj4gMjQpICYgMHhmZikgPDwgNDsKIAlod3dyaXRlKHZvcnRleC0+bW1pbywgVk9SVEVYX0NUUkwyLCB0ZW1wKTsKIAlod3dyaXRlKHZvcnRleC0+bW1pbywgVk9SVEVYX01JRElfQ01ELCBNUFU0MDFfUkVTRVQpOwotCS8qIFNldCBzb21lIGtpbmQgb2YgbW9kZSAqLwotCWlmIChtb2RlKQotCQlod3dyaXRlKHZvcnRleC0+bW1pbywgVk9SVEVYX01JRElfQ01ELCBNUFU0MDFfRU5URVJfVUFSVCk7CiAKIAkvKiBDaGVjayBpZiBhbnl0aGluZyBpcyBPSy4gKi8KIAl0ZW1wID0gaHdyZWFkKHZvcnRleC0+bW1pbywgVk9SVEVYX01JRElfREFUQSk7CkBAIC05OCw3ICs5NSw4IEBACiAJcG9ydCA9ICh1bnNpZ25lZCBsb25nKSh2b3J0ZXgtPm1taW8gKyBWT1JURVhfTUlESV9EQVRBKTsKIAlpZiAoKHRlbXAgPQogCSAgICAgc25kX21wdTQwMV91YXJ0X25ldyh2b3J0ZXgtPmNhcmQsIDAsIE1QVTQwMV9IV19BVVJFQUwsIHBvcnQsCi0JCQkJIDEsIDAsIDAsICZybWlkaSkpICE9IDApIHsKKwkJCQkgTVBVNDAxX0lORk9fSU5URUdSQVRFRCB8IE1QVTQwMV9JTkZPX01NSU8sCisJCQkJIDAsIDAsICZybWlkaSkpICE9IDApIHsKIAkJaHd3cml0ZSh2b3J0ZXgtPm1taW8sIFZPUlRFWF9DVFJMLAogCQkJKGh3cmVhZCh2b3J0ZXgtPm1taW8sIFZPUlRFWF9DVFJMKSAmCiAJCQkgfkNUUkxfTUlESV9QT1JUKSAmIH5DVFJMX01JRElfRU4pOwpAQCAtMTA3LDYgKzEwNSw5IEBACiAJbXB1ID0gcm1pZGktPnByaXZhdGVfZGF0YTsKIAltcHUtPmNwb3J0ID0gKHVuc2lnbmVkIGxvbmcpKHZvcnRleC0+bW1pbyArIFZPUlRFWF9NSURJX0NNRCk7CiAjZW5kaWYKKwkvKiBPdmVyd3JpdGUgTUlESSBuYW1lICovCisJc25wcmludGYocm1pZGktPm5hbWUsIHNpemVvZihybWlkaS0+bmFtZSksICIlcyBNSURJICVkIiwgQ0FSRF9OQU1FX1NIT1JUICwgdm9ydGV4LT5jYXJkLT5udW1iZXIpOworCiAJdm9ydGV4LT5ybWlkaSA9IHJtaWRpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfeHRhbGsuYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX3h0YWxrLmMKaW5kZXggNDUzNGUxOC4uYjQxNTFlMiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfeHRhbGsuYworKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MF94dGFsay5jCkBAIC02NiwzMSArNjYsMjAgQEAKIAkwCiAJICAgIC8vMHg3RkZGLDB4N0ZGRiwweDdGRkYsMHg3RkZGLDB4N2ZmZiwweDdGRkYsMHg3RkZGLDB4N0ZGRiwweDdGRkYsMHg3ZmZmCiB9Owotc3RhdGljIHh0YWxrX2dhaW5zX3QgY29uc3QgYXNYdGFsa0dhaW5zWmVyb3MgPSB7Ci0JMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAotfTsKK3N0YXRpYyB4dGFsa19nYWluc190IGNvbnN0IGFzWHRhbGtHYWluc1plcm9zOwogCi1zdGF0aWMgeHRhbGtfZGxpbmVfdCBjb25zdCBhbFh0YWxrRGxpbmVaZXJvcyA9IHsKLQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotCTAsIDAsIDAsCi0JMCwgMCwgMCwgMCwgMCwgMCwgMAotfTsKK3N0YXRpYyB4dGFsa19kbGluZV90IGNvbnN0IGFsWHRhbGtEbGluZVplcm9zOwogc3RhdGljIHh0YWxrX2RsaW5lX3QgY29uc3QgYWxYdGFsa0RsaW5lVGVzdCA9IHsKIAkweEZDMTgsIDB4MDNFOEZGRkYsIDB4MTg2QTAsIDB4Nzk2MEZGRkUsIDEsIDB4RkZGRkZGRkYsCiAJMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKIAkwLCAwLCAwLCAwCiB9OwogCi1zdGF0aWMgeHRhbGtfaW5zdGF0ZV90IGNvbnN0IGFzWHRhbGtJblN0YXRlWmVyb3MgPSB7IDAsIDAsIDAsIDAgfTsKK3N0YXRpYyB4dGFsa19pbnN0YXRlX3QgY29uc3QgYXNYdGFsa0luU3RhdGVaZXJvczsKIHN0YXRpYyB4dGFsa19pbnN0YXRlX3QgY29uc3QgYXNYdGFsa0luU3RhdGVUZXN0ID0KICAgICB7IDB4RkY4MCwgMHgwMDgwLCAweEZGRkYsIDB4MDAwMSB9Owotc3RhdGljIHh0YWxrX3N0YXRlX3QgY29uc3QgYXNYdGFsa091dFN0YXRlWmVyb3MgPSB7Ci0JezAsIDAsIDAsIDB9LAotCXswLCAwLCAwLCAwfSwKLQl7MCwgMCwgMCwgMH0sCi0JezAsIDAsIDAsIDB9LAotCXswLCAwLCAwLCAwfQotfTsKK3N0YXRpYyB4dGFsa19zdGF0ZV90IGNvbnN0IGFzWHRhbGtPdXRTdGF0ZVplcm9zOworCiBzdGF0aWMgc2hvcnQgY29uc3Qgc0RpYW1vbmRLTGVmdEVxID0gMHg0MDFkOwogc3RhdGljIHNob3J0IGNvbnN0IHNEaWFtb25kS1JpZ2h0RXEgPSAweDQwMWQ7CiBzdGF0aWMgc2hvcnQgY29uc3Qgc0RpYW1vbmRLTGVmdFh0ID0gMHhGOTBFOwpAQCAtMTYyLDEzICsxNTEsNyBAQAogCXswLCAwLCAwLCAwLCAwfQogfTsKIAotc3RhdGljIHh0YWxrX2NvZWZzX3QgY29uc3QgYXNYdGFsa0NvZWZzWmVyb3MgPSB7Ci0JezAsIDAsIDAsIDAsIDB9LAotCXswLCAwLCAwLCAwLCAwfSwKLQl7MCwgMCwgMCwgMCwgMH0sCi0JezAsIDAsIDAsIDAsIDB9LAotCXswLCAwLCAwLCAwLCAwfQotfTsKK3N0YXRpYyB4dGFsa19jb2Vmc190IGNvbnN0IGFzWHRhbGtDb2Vmc1plcm9zOwogc3RhdGljIHh0YWxrX2NvZWZzX3QgY29uc3QgYXNYdGFsa0NvZWZzUGlwZSA9IHsKIAl7MCwgMCwgMHgwRkEwLCAwLCAwfSwKIAl7MCwgMCwgMHgwRkEwLCAwLCAwfSwKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9henQzMzI4LmMgYi9zb3VuZC9wY2kvYXp0MzMyOC5jCmluZGV4IDUyYTM2NDUuLjZlNjJkYWYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9henQzMzI4LmMKKysrIGIvc291bmQvcGNpL2F6dDMzMjguYwpAQCAtMzMsMTQgKzMzLDIxIEBACiAgKiAgaW4gdGhlIGZpcnN0IHBsYWNlID46LVB9KSwKICAqICBJIHdhcyBmb3JjZWQgdG8gYmFzZSB0aGlzIGRyaXZlciBvbiByZXZlcnNlIGVuZ2luZWVyaW5nCiAgKiAgKDMgd2Vla3MnIHdvcnRoIG9mIGV2ZW5pbmdzIGZpbGxlZCB3aXRoIGRyaXZlciB3b3JrKS4KLSAqICAoYW5kIG5vLCBJIGRpZCBOT1QgZ28gdGhlIGVhc3kgd2F5OiB0byBwaWNrIHVwIGEgUENJMTI4IGZvciA5IEV1cm9zKQorICogIChhbmQgbm8sIEkgZGlkIE5PVCBnbyB0aGUgZWFzeSB3YXk6IHRvIHBpY2sgdXAgYSBTQiBQQ0kxMjggZm9yIDkgRXVyb3MpCiAgKgogICogIFRoZSBBWkYzMzI4IGNoaXAgKG5vdGU6IEFaRjMzMjgsICpub3QqIEFaVDMzMjgsIHRoYXQncyBqdXN0IHRoZSBkcml2ZXIgbmFtZQogICogIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMpIGhhcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgogICoKICAqICAtIGJ1aWx0aW4gQUM5NyBjb25mb3JtYW50IGNvZGVjIChTTlIgb3ZlciA4MGRCKQotICogICAgKHJlYWxseSBBQzk3IGNvbXBsaWFudD8/IEkgcmVhbGx5IGRvdWJ0IGl0IHdoZW4gbG9va2luZwotICogICAgYXQgdGhlIG1peGVyIHJlZ2lzdGVyIGxheW91dCkKKyAqICAgIE5vdGUgdGhhdCAiY29uZm9ybWFudCIgIT0gImNvbXBsaWFudCIhISB0aGlzIGNoaXAncyBtaXhlciByZWdpc3RlciBsYXlvdXQKKyAqICAgICpkaWZmZXJzKiBmcm9tIHRoZSBzdGFuZGFyZCBBQzk3IGxheW91dDoKKyAqICAgIHRoZXkgY2hvc2UgdG8gbm90IGltcGxlbWVudCB0aGUgaGVhZHBob25lIHJlZ2lzdGVyICh3aGljaCBpcyBub3QgYQorICogICAgcHJvYmxlbSBzaW5jZSBpdCdzIG1lcmVseSBvcHRpb25hbCksIHlldCB3aGVuIGRvaW5nIHRoaXMsIHRoZXkgY29tbWl0dGVkCisgKiAgICB0aGUgZ3JhdmUgc2luIG9mIGxldHRpbmcgb3RoZXIgcmVnaXN0ZXJzIGZvbGxvdyBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mCisgKiAgICBrZWVwaW5nIGEgaGVhZHBob25lIGR1bW15IHJlZ2lzdGVyLCB0aGVyZWJ5IHNoaWZ0aW5nIHRoZSBtaXhlciByZWdpc3RlcgorICogICAgYWRkcmVzc2VzIGlsbGVnYWxseS4gU28gZmFyIHVuZm9ydHVuYXRlbHkgaXQgbG9va3MgbGlrZSB0aGUgdmVyeSBmbGV4aWJsZQorICogICAgQUxTQSBBQzk3IHN1cHBvcnQgaXMgc3RpbGwgbm90IGVub3VnaCB0byBlYXNpbHkgY29tcGVuc2F0ZSBmb3Igc3VjaCBhCisgKiAgICBncmF2ZSBsYXlvdXQgdmlvbGF0aW9uIGRlc3BpdGUgYWxsIHR3ZWFrcyBhbmQgcXVpcmtzIG1lY2hhbmlzbXMgaXQgb2ZmZXJzLgogICogIC0gYnVpbHRpbiBnZW51aW5lIE9QTDMKICAqICAtIGZ1bGwgZHVwbGV4IDE2Yml0IHBsYXliYWNrL3JlY29yZCBhdCBpbmRlcGVuZGVudCBzYW1wbGluZyByYXRlCiAgKiAgLSBNUFU0MDEgKCsgbGVnYWN5IGFkZHJlc3Mgc3VwcG9ydCkgRklYTUU6IGhvdyB0byBlbmFibGUgbGVnYWN5IGFkZHI/PwpAQCAtOTAsMTAgKzk3LDE1IEBACiAgKiAKICAqIFRPRE8KICAqICAtIHRlc3QgTVBVNDAxIE1JREkgcGxheWJhY2sgZXRjLgotICogIC0gcG93ZXIgbWFuYWdlbWVudC4gU2VlIGUuZy4gaW50ZWw4eDAgb3IgY3M0MjgxLgotICogICAgVGhpcyB3b3VsZCBiZSBuaWNlIHNpbmNlIHRoZSBjaGlwIHJ1bnMgYSBiaXQgaG90LCBhbmQgaXQncyAqcmVxdWlyZWQqCi0gKiAgICBhbnl3YXkgZm9yIHByb3BlciBBQ1BJIHBvd2VyIG1hbmFnZW1lbnQuCisgKiAgLSBhZGQgc29tZSBwb3dlciBtaWNyby1tYW5hZ2VtZW50IChkaXNhYmxlIHZhcmlvdXMgdW5pdHMgb2YgdGhlIGNhcmQKKyAqICAgIGFzIGxvbmcgYXMgdGhleSdyZSB1bnVzZWQpLiBIb3dldmVyIHRoaXMgcmVxdWlyZXMgSS9PIHBvcnRzIHdoaWNoIEkKKyAqICAgIGhhdmVuJ3QgZmlndXJlZCBvdXQgeWV0IGFuZCB3aGljaCB0aHVzIG1pZ2h0IG5vdCBldmVuIGV4aXN0Li4uCisgKiAgICBUaGUgc3RhbmRhcmQgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25hbGl0eSBjb3VsZCBwcm9iYWJseSBtYWtlIHVzZSBvZgorICogICAgc29tZSBpbXByb3ZlbWVudCwgdG9vLi4uCiAgKiAgLSBmaWd1cmUgb3V0IHdoYXQgYWxsIHVua25vd24gcG9ydCBiaXRzIGFyZSByZXNwb25zaWJsZSBmb3IKKyAqICAtIGZpZ3VyZSBvdXQgc29tZSBjbGV2ZXJseSBldmlsIHNjaGVtZSB0byBwb3NzaWJseSBtYWtlIEFMU0EgQUM5NyBjb2RlCisgKiAgICBmdWxseSBhY2NlcHQgb3VyIHF1aXRlIGluY29tcGF0aWJsZSAiIkFDOTciIiBtaXhlciBhbmQgdGh1cyBzYXZlIHNvbWUKKyAqICAgIGNvZGUgKGJ1dCBJJ20gbm90IHRvbyBvcHRpbWlzdGljIHRoYXQgZG9pbmcgdGhpcyBpcyBwb3NzaWJsZSBhdCBhbGwpCiAgKi8KIAogI2luY2x1ZGUgPHNvdW5kL2RyaXZlci5oPgpAQCAtMjE0LDYgKzIyNiwxNiBAQAogCiAJc3RydWN0IHBjaV9kZXYgKnBjaTsKIAlpbnQgaXJxOworCisjaWZkZWYgQ09ORklHX1BNCisJLyogcmVnaXN0ZXIgdmFsdWUgY29udGFpbmVycyBmb3IgcG93ZXIgbWFuYWdlbWVudAorCSAqIE5vdGU6IG5vdCBhbHdheXMgZnVsbCBJL08gcmFuZ2UgcHJlc2VydmVkIChqdXN0IGxpa2UgV2luIGRyaXZlciEpICovCisJdTE2IHNhdmVkX3JlZ3NfY29kZWMgW0FaRl9JT19TSVpFX0NPREVDX1BNIC8gMl07CisJdTE2IHNhdmVkX3JlZ3NfaW8yICAgW0FaRl9JT19TSVpFX0lPMl9QTSAvIDJdOworCXUxNiBzYXZlZF9yZWdzX21wdSAgIFtBWkZfSU9fU0laRV9NUFVfUE0gLyAyXTsKKwl1MTYgc2F2ZWRfcmVnc19zeW50aFtBWkZfSU9fU0laRV9TWU5USF9QTSAvIDJdOworCXUxNiBzYXZlZF9yZWdzX21peGVyW0FaRl9JT19TSVpFX01JWEVSX1BNIC8gMl07CisjZW5kaWYKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzbmRfYXpmMzMyOF9pZHNbXSBfX2RldmluaXRkYXRhID0gewpAQCAtMzE3LDEwICszMzksOCBAQAogCWVsc2UKIAkJZHN0X3ZvbF9sZWZ0ICY9IH4weDgwOwogCi0JZG8KLQl7Ci0JCWlmICghbGVmdF9kb25lKQotCQl7CisJZG8geworCQlpZiAoIWxlZnRfZG9uZSkgewogCQkJaWYgKGN1cnJfdm9sX2xlZnQgPiBkc3Rfdm9sX2xlZnQpCiAJCQkJY3Vycl92b2xfbGVmdC0tOwogCQkJZWxzZQpAQCAtMzMwLDggKzM1MCw3IEBACiAJCQkgICAgbGVmdF9kb25lID0gMTsKIAkJCW91dGIoY3Vycl92b2xfbGVmdCwgcG9ydGJhc2UgKyAxKTsKIAkJfQotCQlpZiAoIXJpZ2h0X2RvbmUpCi0JCXsKKwkJaWYgKCFyaWdodF9kb25lKSB7CiAJCQlpZiAoY3Vycl92b2xfcmlnaHQgPiBkc3Rfdm9sX3JpZ2h0KQogCQkJCWN1cnJfdm9sX3JpZ2h0LS07CiAJCQllbHNlCkBAIC0zNDYsOCArMzY1LDcgQEAKIAkJfQogCQlpZiAoZGVsYXkpCiAJCQltZGVsYXkoZGVsYXkpOwotCX0KLQl3aGlsZSAoKCFsZWZ0X2RvbmUpIHx8ICghcmlnaHRfZG9uZSkpOworCX0gd2hpbGUgKCghbGVmdF9kb25lKSB8fCAoIXJpZ2h0X2RvbmUpKTsKIAlzbmRfYXpmMzMyOF9kYmdjYWxsbGVhdmUoKTsKIH0KIApAQCAtNTE0LDE1ICs1MzIsMTggQEAKIAkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQogewogCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGV4dHMxW10gPSB7Ci0JCSJNb2RlbU91dDEiLCAiTW9kZW1PdXQyIgorCQkiTWljMSIsICJNaWMyIgogCX07CiAJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0ZXh0czJbXSA9IHsKLQkJIk1vbm9TZWxlY3RTb3VyY2UxIiwgIk1vbm9TZWxlY3RTb3VyY2UyIgorCQkiTWl4IiwgIk1pYyIKIAl9OwogCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGV4dHMzW10gPSB7CiAgICAgICAgICAgICAgICAgIk1pYyIsICJDRCIsICJWaWRlbyIsICJBdXgiLAogCQkiTGluZSIsICJNaXgiLCAiTWl4IE1vbm8iLCAiUGhvbmUiCiAgICAgICAgIH07CisJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0ZXh0czRbXSA9IHsKKwkJInByZSAzRCIsICJwb3N0IDNEIgorICAgICAgICB9OwogCXN0cnVjdCBhemYzMzI4X21peGVyX3JlZyByZWc7CiAKIAlzbmRfYXpmMzMyOF9taXhlcl9yZWdfZGVjb2RlKCZyZWcsIGtjb250cm9sLT5wcml2YXRlX3ZhbHVlKTsKQEAgLTUzMSwxNCArNTUyLDE5IEBACiAgICAgICAgIHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1zID0gcmVnLmVudW1fYzsKICAgICAgICAgaWYgKHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPiByZWcuZW51bV9jIC0gMVUpCiAgICAgICAgICAgICAgICAgdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbSA9IHJlZy5lbnVtX2MgLSAxVTsKLQlpZiAocmVnLnJlZyA9PSBJRFhfTUlYRVJfQURWQ1RMMikKLQl7Ci0JCWlmIChyZWcubGNoYW5fc2hpZnQgPT0gOCkgLyogbW9kZW0gb3V0IHNlbCAqLworCWlmIChyZWcucmVnID09IElEWF9NSVhFUl9BRFZDVEwyKSB7CisJCXN3aXRjaChyZWcubGNoYW5fc2hpZnQpIHsKKwkJY2FzZSA4OiAvKiBtb2RlbSBvdXQgc2VsICovCiAJCQlzdHJjcHkodWluZm8tPnZhbHVlLmVudW1lcmF0ZWQubmFtZSwgdGV4dHMxW3VpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1dKTsKLQkJZWxzZSAvKiBtb25vIHNlbCBzb3VyY2UgKi8KKwkJCWJyZWFrOworCQljYXNlIDk6IC8qIG1vbm8gc2VsIHNvdXJjZSAqLwogCQkJc3RyY3B5KHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLm5hbWUsIHRleHRzMlt1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtXSk7Ci0JfQotCWVsc2UKKwkJCWJyZWFrOworCQljYXNlIDE1OiAvKiBQQ00gT3V0IFBhdGggKi8KKwkJCXN0cmNweSh1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5uYW1lLCB0ZXh0czRbdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbV0pOworCQkJYnJlYWs7CisJCX0KKwl9IGVsc2UKICAgICAgICAgCXN0cmNweSh1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5uYW1lLCB0ZXh0czNbdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbV0KICk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTU0LDEyICs1ODAsMTAgQEAKICAgICAgICAgCiAJc25kX2F6ZjMzMjhfbWl4ZXJfcmVnX2RlY29kZSgmcmVnLCBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZSk7CiAJdmFsID0gc25kX2F6ZjMzMjhfbWl4ZXJfaW53KGNoaXAsIHJlZy5yZWcpOwotCWlmIChyZWcucmVnID09IElEWF9NSVhFUl9SRUNfU0VMRUNUKQotCXsKKwlpZiAocmVnLnJlZyA9PSBJRFhfTUlYRVJfUkVDX1NFTEVDVCkgewogICAgICAgICAJdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA9ICh2YWwgPj4gOCkgJiAocmVnLmVudW1fYyAtIDEpOwogICAgICAgICAJdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVsxXSA9ICh2YWwgPj4gMCkgJiAocmVnLmVudW1fYyAtIDEpOwotCX0KLQllbHNlCisJfSBlbHNlCiAgICAgICAgIAl1Y29udHJvbC0+dmFsdWUuZW51bWVyYXRlZC5pdGVtWzBdID0gKHZhbCA+PiByZWcubGNoYW5fc2hpZnQpICYgKHJlZy5lbnVtX2MgLSAxKTsKIAogCXNuZF9hemYzMzI4X2RiZ21peGVyKCJnZXRfZW51bTogJTAyeCBpcyAlMDR4IC0+ICVkfCVkIChzaGlmdCAlMDJkLCBlbnVtX2MgJWQpXG4iLApAQCAtNTc5LDE2ICs2MDMsMTMgQEAKIAlzbmRfYXpmMzMyOF9taXhlcl9yZWdfZGVjb2RlKCZyZWcsIGtjb250cm9sLT5wcml2YXRlX3ZhbHVlKTsKIAlvcmVnID0gc25kX2F6ZjMzMjhfbWl4ZXJfaW53KGNoaXAsIHJlZy5yZWcpOwogCXZhbCA9IG9yZWc7Ci0JaWYgKHJlZy5yZWcgPT0gSURYX01JWEVSX1JFQ19TRUxFQ1QpCi0JeworCWlmIChyZWcucmVnID09IElEWF9NSVhFUl9SRUNfU0VMRUNUKSB7CiAgICAgICAgIAlpZiAodWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA+IHJlZy5lbnVtX2MgLSAxVSB8fAogICAgICAgICAgICAgCXVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMV0gPiByZWcuZW51bV9jIC0gMVUpCiAgICAgICAgICAgICAgICAgCXJldHVybiAtRUlOVkFMOwogICAgICAgICAJdmFsID0gKHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gPDwgOCkgfAogICAgICAgICAJICAgICAgKHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMV0gPDwgMCk7Ci0JfQotCWVsc2UKLQl7CisJfSBlbHNlIHsKICAgICAgICAgCWlmICh1Y29udHJvbC0+dmFsdWUuZW51bWVyYXRlZC5pdGVtWzBdID4gcmVnLmVudW1fYyAtIDFVKQogICAgICAgICAgICAgICAgIAlyZXR1cm4gLUVJTlZBTDsKIAkJdmFsICY9IH4oKHJlZy5lbnVtX2MgLSAxKSA8PCByZWcubGNoYW5fc2hpZnQpOwpAQCAtNjI5LDEzICs2NTAsMTQgQEAKIAlBWkYzMzI4X01JWEVSX1ZPTF9NT05PKCJNb2RlbSBQbGF5YmFjayBWb2x1bWUiLCBJRFhfTUlYRVJfTU9ERU1PVVQsIDB4MWYsIDEpLAogCUFaRjMzMjhfTUlYRVJfU1dJVENIKCJNb2RlbSBDYXB0dXJlIFN3aXRjaCIsIElEWF9NSVhFUl9NT0RFTUlOLCAxNSwgMSksCiAJQVpGMzMyOF9NSVhFUl9WT0xfTU9OTygiTW9kZW0gQ2FwdHVyZSBWb2x1bWUiLCBJRFhfTUlYRVJfTU9ERU1JTiwgMHgxZiwgMSksCi0JQVpGMzMyOF9NSVhFUl9FTlVNKCJNb2RlbSBPdXQgU2VsZWN0IiwgSURYX01JWEVSX0FEVkNUTDIsIDIsIDgpLAotCUFaRjMzMjhfTUlYRVJfRU5VTSgiTW9ubyBTZWxlY3QgU291cmNlIiwgSURYX01JWEVSX0FEVkNUTDIsIDIsIDkpLAorCUFaRjMzMjhfTUlYRVJfRU5VTSgiTWljIFNlbGVjdCIsIElEWF9NSVhFUl9BRFZDVEwyLCAyLCA4KSwKKwlBWkYzMzI4X01JWEVSX0VOVU0oIk1vbm8gT3V0cHV0IFNlbGVjdCIsIElEWF9NSVhFUl9BRFZDVEwyLCAyLCA5KSwKKwlBWkYzMzI4X01JWEVSX0VOVU0oIlBDTSIsIElEWF9NSVhFUl9BRFZDVEwyLCAyLCAxNSksIC8qIFBDTSBPdXQgUGF0aCwgcGxhY2UgaW4gZnJvbnQgc2luY2UgaXQgY29udHJvbHMgKmJvdGgqIDNEIGFuZCBCYXNzL1RyZWJsZSEgKi8KIAlBWkYzMzI4X01JWEVSX1ZPTF9TUEVDSUFMKCJUb25lIENvbnRyb2wgLSBUcmVibGUiLCBJRFhfTUlYRVJfQkFTU1RSRUJMRSwgMHgwNywgMSwgMCksCiAJQVpGMzMyOF9NSVhFUl9WT0xfU1BFQ0lBTCgiVG9uZSBDb250cm9sIC0gQmFzcyIsIElEWF9NSVhFUl9CQVNTVFJFQkxFLCAweDA3LCA5LCAwKSwKIAlBWkYzMzI4X01JWEVSX1NXSVRDSCgiM0QgQ29udHJvbCAtIFN3aXRjaCIsIElEWF9NSVhFUl9BRFZDVEwyLCAxMywgMCksCi0JQVpGMzMyOF9NSVhFUl9WT0xfU1BFQ0lBTCgiM0QgQ29udHJvbCAtIFdpZGUiLCBJRFhfTUlYRVJfQURWQ1RMMSwgMHgwNywgMSwgMCksIC8qICIzRCBXaWR0aCIgKi8KLQlBWkYzMzI4X01JWEVSX1ZPTF9TUEVDSUFMKCIzRCBDb250cm9sIC0gU3BhY2UiLCBJRFhfTUlYRVJfQURWQ1RMMSwgMHgwMywgOCwgMCksIC8qICJIaWZpIDNEIiAqLworCUFaRjMzMjhfTUlYRVJfVk9MX1NQRUNJQUwoIjNEIENvbnRyb2wgLSBXaWR0aCIsIElEWF9NSVhFUl9BRFZDVEwxLCAweDA3LCAxLCAwKSwgLyogIjNEIFdpZHRoIiAqLworCUFaRjMzMjhfTUlYRVJfVk9MX1NQRUNJQUwoIjNEIENvbnRyb2wgLSBEZXB0aCIsIElEWF9NSVhFUl9BRFZDVEwxLCAweDAzLCA4LCAwKSwgLyogIkhpZmkgM0QiICovCiAjaWYgTUlYRVJfVEVTVElORwogCUFaRjMzMjhfTUlYRVJfU1dJVENIKCIwIiwgSURYX01JWEVSX0FEVkNUTDIsIDAsIDApLAogCUFaRjMzMjhfTUlYRVJfU1dJVENIKCIxIiwgSURYX01JWEVSX0FEVkNUTDIsIDEsIDApLApAQCAtODEzLDIyICs4MzUsMTggQEAKIAl1bnNpZ25lZCBpbnQgaXNfcnVubmluZzsKIAogCXNuZF9hemYzMzI4X2RiZ2NhbGxlbnRlcigpOwotCWlmIChkb19yZWNvcmRpbmcpCi0JeworCWlmIChkb19yZWNvcmRpbmcpIHsKIAkJLyogYWNjZXNzIGNhcHR1cmUgcmVnaXN0ZXJzLCBpLmUuIHNraXAgcGxheWJhY2sgcmVnIHNlY3Rpb24gKi8KIAkJcG9ydGJhc2UgPSBjaGlwLT5jb2RlY19wb3J0ICsgMHgyMDsKIAkJaXNfcnVubmluZyA9IGNoaXAtPmlzX3JlY29yZGluZzsKLQl9Ci0JZWxzZQotCXsKKwl9IGVsc2UgewogCQkvKiBhY2Nlc3MgdGhlIHBsYXliYWNrIHJlZ2lzdGVyIHNlY3Rpb24gKi8KIAkJcG9ydGJhc2UgPSBjaGlwLT5jb2RlY19wb3J0ICsgMHgwMDsKIAkJaXNfcnVubmluZyA9IGNoaXAtPmlzX3BsYXlpbmc7CiAJfQogCiAJLyogQVpGMzMyOCB1c2VzIGEgdHdvIGJ1ZmZlciBwb2ludGVyIERNQSBwbGF5YmFjayBhcHByb2FjaCAqLwotCWlmICghaXNfcnVubmluZykKLQl7CisJaWYgKCFpc19ydW5uaW5nKSB7CiAJCXVuc2lnbmVkIGxvbmcgYWRkcl9hcmVhMjsKIAkJdW5zaWduZWQgbG9uZyBjb3VudF9hcmVhcywgY291bnRfdG1wOyAvKiB3aWR0aCAzMmJpdCAtLSBvdmVyZmxvdyEhICovCiAJCWNvdW50X2FyZWFzID0gc2l6ZS8yOwpAQCAtOTYxLDYgKzk3OSwxMyBAQAogCQljaGlwLT5pc19wbGF5aW5nID0gMTsKIAkJc25kX2F6ZjMzMjhfZGJncGxheSgiU1RBUlRFRCBQTEFZQkFDS1xuIik7CiAJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfUkVTVU1FOgorCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJSRVNVTUUgUExBWUJBQ0tcbiIpOworCQkvKiByZXN1bWUgcGxheWJhY2sgaWYgd2Ugd2VyZSBhY3RpdmUgKi8KKwkJaWYgKGNoaXAtPmlzX3BsYXlpbmcpCisJCQlzbmRfYXpmMzMyOF9jb2RlY19vdXR3KGNoaXAsIElEWF9JT19QTEFZX0ZMQUdTLAorCQkJCXNuZF9hemYzMzI4X2NvZGVjX2ludyhjaGlwLCBJRFhfSU9fUExBWV9GTEFHUykgfCBETUFfUkVTVU1FKTsKKwkJYnJlYWs7CiAJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgogCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJTVE9QIFBMQVlCQUNLXG4iKTsKIApAQCAtOTg4LDYgKzEwMTMsMTIgQEAKIAkJY2hpcC0+aXNfcGxheWluZyA9IDA7CiAJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlNUT1BQRUQgUExBWUJBQ0tcbiIpOwogCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NVU1BFTkQ6CisJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlNVU1BFTkQgUExBWUJBQ0tcbiIpOworCQkvKiBtYWtlIHN1cmUgcGxheWJhY2sgaXMgc3RvcHBlZCAqLworCQlzbmRfYXpmMzMyOF9jb2RlY19vdXR3KGNoaXAsIElEWF9JT19QTEFZX0ZMQUdTLAorCQkJc25kX2F6ZjMzMjhfY29kZWNfaW53KGNoaXAsIElEWF9JT19QTEFZX0ZMQUdTKSAmIH5ETUFfUkVTVU1FKTsKKwkJYnJlYWs7CiAgICAgICAgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUFVTSDoKIAkJc25kX3ByaW50ayhLRVJOX0VSUiAiRklYTUU6IFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1BVU0ggTklZIVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05OTUsNiArMTAyNiw3IEBACiAJCXNuZF9wcmludGsoS0VSTl9FUlIgIkZJWE1FOiBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9SRUxFQVNFIE5JWSFcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIgIkZJWE1FOiB1bmtub3duIHRyaWdnZXIgbW9kZSFcbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCX0KIAkKQEAgLTEwNjgsNiArMTEwMCwxMyBAQAogCQljaGlwLT5pc19yZWNvcmRpbmcgPSAxOwogCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJTVEFSVEVEIENBUFRVUkVcbiIpOwogCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1JFU1VNRToKKwkJc25kX2F6ZjMzMjhfZGJncGxheSgiUkVTVU1FIENBUFRVUkVcbiIpOworCQkvKiByZXN1bWUgcmVjb3JkaW5nIGlmIHdlIHdlcmUgYWN0aXZlICovCisJCWlmIChjaGlwLT5pc19yZWNvcmRpbmcpCisJCQlzbmRfYXpmMzMyOF9jb2RlY19vdXR3KGNoaXAsIElEWF9JT19SRUNfRkxBR1MsCisJCQkJc25kX2F6ZjMzMjhfY29kZWNfaW53KGNoaXAsIElEWF9JT19SRUNfRkxBR1MpIHwgRE1BX1JFU1VNRSk7CisJCWJyZWFrOwogICAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CiAJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlNUT1AgQ0FQVFVSRVxuIik7CiAKQEAgLTEwODgsNiArMTEyNywxMiBAQAogCQljaGlwLT5pc19yZWNvcmRpbmcgPSAwOwogCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJTVE9QUEVEIENBUFRVUkVcbiIpOwogCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NVU1BFTkQ6CisJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlNVU1BFTkQgQ0FQVFVSRVxuIik7CisJCS8qIG1ha2Ugc3VyZSByZWNvcmRpbmcgaXMgc3RvcHBlZCAqLworCQlzbmRfYXpmMzMyOF9jb2RlY19vdXR3KGNoaXAsIElEWF9JT19SRUNfRkxBR1MsCisJCQlzbmRfYXpmMzMyOF9jb2RlY19pbncoY2hpcCwgSURYX0lPX1JFQ19GTEFHUykgJiB+RE1BX1JFU1VNRSk7CisJCWJyZWFrOwogICAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1BVU0g6CiAJCXNuZF9wcmludGsoS0VSTl9FUlIgIkZJWE1FOiBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9QVVNIIE5JWSFcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA5NSw2ICsxMTQwLDcgQEAKIAkJc25kX3ByaW50ayhLRVJOX0VSUiAiRklYTUU6IFNORFJWX1BDTV9UUklHR0VSX1BBVVNFX1JFTEVBU0UgTklZIVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CisJCXByaW50ayhLRVJOX0VSUiAiRklYTUU6IHVua25vd24gdHJpZ2dlciBtb2RlIVxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAJfQogCQpAQCAtMTE2Myw4ICsxMjA5LDcgQEAKIAkJc25kX2F6ZjMzMjhfY29kZWNfaW53KGNoaXAsIElEWF9JT19QTEFZX0lSUVRZUEUpLAogCQlzdGF0dXMpOwogCQkKLQlpZiAoc3RhdHVzICYgSVJRX1RJTUVSKQotCXsKKwlpZiAoc3RhdHVzICYgSVJRX1RJTUVSKSB7CiAJCS8qIHNuZF9hemYzMzI4X2RiZ3BsYXkoInRpbWVyICVsZFxuIiwgaW5sKGNoaXAtPmNvZGVjX3BvcnQrSURYX0lPX1RJTUVSX1ZBTFVFKSAmIFRJTUVSX1ZBTFVFX01BU0spOyAqLwogCQlpZiAoY2hpcC0+dGltZXIpCiAJCQlzbmRfdGltZXJfaW50ZXJydXB0KGNoaXAtPnRpbWVyLCBjaGlwLT50aW1lci0+c3RpY2tzKTsKQEAgLTExNzQsNTAgKzEyMTksNDMgQEAKIAkJc3Bpbl91bmxvY2soJmNoaXAtPnJlZ19sb2NrKTsKIAkJc25kX2F6ZjMzMjhfZGJncGxheSgiYXp0MzMyODogdGltZXIgSVJRXG4iKTsKIAl9Ci0JaWYgKHN0YXR1cyAmIElSUV9QTEFZQkFDSykKLQl7CisJaWYgKHN0YXR1cyAmIElSUV9QTEFZQkFDSykgewogCQlzcGluX2xvY2soJmNoaXAtPnJlZ19sb2NrKTsKIAkJd2hpY2ggPSBzbmRfYXpmMzMyOF9jb2RlY19pbmIoY2hpcCwgSURYX0lPX1BMQVlfSVJRVFlQRSk7CiAJCS8qIGFjayBhbGwgSVJRIHR5cGVzIGltbWVkaWF0ZWx5ICovCiAJCXNuZF9hemYzMzI4X2NvZGVjX291dGIoY2hpcCwgSURYX0lPX1BMQVlfSVJRVFlQRSwgd2hpY2gpOwogICAgICAgICAgICAgICAgCXNwaW5fdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7CiAKLQkJaWYgKGNoaXAtPnBjbSAmJiBjaGlwLT5wbGF5YmFja19zdWJzdHJlYW0pCi0JCXsKKwkJaWYgKGNoaXAtPnBjbSAmJiBjaGlwLT5wbGF5YmFja19zdWJzdHJlYW0pIHsKIAkJCXNuZF9wY21fcGVyaW9kX2VsYXBzZWQoY2hpcC0+cGxheWJhY2tfc3Vic3RyZWFtKTsKIAkJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlBMQVkgcGVyaW9kIGRvbmUgKCMleCksIEAgJXhcbiIsCiAJCQkJd2hpY2gsCiAJCQkJaW5sKGNoaXAtPmNvZGVjX3BvcnQrSURYX0lPX1BMQVlfRE1BX0NVUlJQT1MpKTsKLQkJfQotCQllbHNlCisJCX0gZWxzZQogCQkJc25kX2F6ZjMzMjhfZGJncGxheSgiYXp0MzMyODogb3VjaCwgaXJxIGhhbmRsZXIgcHJvYmxlbSFcbiIpOwogCQlpZiAod2hpY2ggJiBJUlFfUExBWV9TT01FVEhJTkcpCiAJCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJhenQzMzI4OiB1bmtub3duIHBsYXkgSVJRIHR5cGUgb2NjdXJyZWQsIHBsZWFzZSByZXBvcnQhXG4iKTsKIAl9Ci0JaWYgKHN0YXR1cyAmIElSUV9SRUNPUkRJTkcpCi0JeworCWlmIChzdGF0dXMgJiBJUlFfUkVDT1JESU5HKSB7CiAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZjaGlwLT5yZWdfbG9jayk7CiAJCXdoaWNoID0gc25kX2F6ZjMzMjhfY29kZWNfaW5iKGNoaXAsIElEWF9JT19SRUNfSVJRVFlQRSk7CiAJCS8qIGFjayBhbGwgSVJRIHR5cGVzIGltbWVkaWF0ZWx5ICovCiAJCXNuZF9hemYzMzI4X2NvZGVjX291dGIoY2hpcCwgSURYX0lPX1JFQ19JUlFUWVBFLCB3aGljaCk7CiAJCXNwaW5fdW5sb2NrKCZjaGlwLT5yZWdfbG9jayk7CiAKLQkJaWYgKGNoaXAtPnBjbSAmJiBjaGlwLT5jYXB0dXJlX3N1YnN0cmVhbSkKLQkJeworCQlpZiAoY2hpcC0+cGNtICYmIGNoaXAtPmNhcHR1cmVfc3Vic3RyZWFtKSB7CiAJCQlzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKGNoaXAtPmNhcHR1cmVfc3Vic3RyZWFtKTsKIAkJCXNuZF9hemYzMzI4X2RiZ3BsYXkoIlJFQyAgcGVyaW9kIGRvbmUgKCMleCksIEAgJXhcbiIsCiAJCQkJd2hpY2gsCiAJCQkJaW5sKGNoaXAtPmNvZGVjX3BvcnQrSURYX0lPX1JFQ19ETUFfQ1VSUlBPUykpOwotCQl9Ci0JCWVsc2UKKwkJfSBlbHNlCiAJCQlzbmRfYXpmMzMyOF9kYmdwbGF5KCJhenQzMzI4OiBvdWNoLCBpcnEgaGFuZGxlciBwcm9ibGVtIVxuIik7CiAJCWlmICh3aGljaCAmIElSUV9SRUNfU09NRVRISU5HKQogCQkJc25kX2F6ZjMzMjhfZGJncGxheSgiYXp0MzMyODogdW5rbm93biByZWMgSVJRIHR5cGUgb2NjdXJyZWQsIHBsZWFzZSByZXBvcnQhXG4iKTsKIAl9CiAJLyogTVBVNDAxIGhhcyBsZXNzIGNyaXRpY2FsIElSUSByZXF1aXJlbWVudHMKIAkgKiB0aGFuIHRpbWVyIGFuZCBwbGF5YmFjay9yZWNvcmRpbmcsIHJpZ2h0PyAqLwotCWlmIChzdGF0dXMgJiBJUlFfTVBVNDAxKQotCXsKKwlpZiAoc3RhdHVzICYgSVJRX01QVTQwMSkgewogCQlzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0KGlycSwgY2hpcC0+cm1pZGktPnByaXZhdGVfZGF0YSwgcmVncyk7CiAKIAkJLyogaG1tLCBkbyB3ZSBoYXZlIHRvIGFjayB0aGUgSVJRIGhlcmUgc29tZWhvdz8KQEAgLTE1MTEsOCArMTU0OSw3IEBACiAJc25kX2F6ZjMzMjhfZGJnY2FsbGVudGVyKCk7CiAJY2hpcCA9IHNuZF90aW1lcl9jaGlwKHRpbWVyKTsKIAlkZWxheSA9ICgodGltZXItPnN0aWNrcyAqIHNlcXRpbWVyX3NjYWxpbmcpIC0gMSkgJiBUSU1FUl9WQUxVRV9NQVNLOwotCWlmIChkZWxheSA8IDQ5KQotCXsKKwlpZiAoZGVsYXkgPCA0OSkgewogCQkvKiB1aG9oLCB0aGF0J3Mgbm90IGdvb2QsIHNpbmNlIHVzZXItc3BhY2Ugd29uJ3Qga25vdyBhYm91dAogCQkgKiB0aGlzIHRpbWluZyB0d2VhawogCQkgKiAod2UgbmVlZCB0byBkbyBpdCB0byBhdm9pZCBhIGxvY2t1cCwgdGhvdWdoKSAqLwpAQCAtMTc2Niw5ICsxODAzLDExIEBACiAJCWdvdG8gb3V0X2VycjsKIAl9CiAKKwljYXJkLT5wcml2YXRlX2RhdGEgPSBjaGlwOworCiAJaWYgKChlcnIgPSBzbmRfbXB1NDAxX3VhcnRfbmV3KCBjYXJkLCAwLCBNUFU0MDFfSFdfTVBVNDAxLAotCQkJCSAgICAgICAgY2hpcC0+bXB1X3BvcnQsIDEsIHBjaS0+aXJxLCAwLAotCQkJCSAgICAgICAgJmNoaXAtPnJtaWRpKSkgPCAwKSB7CisJCQkJICAgICAgICBjaGlwLT5tcHVfcG9ydCwgTVBVNDAxX0lORk9fSU5URUdSQVRFRCwKKwkJCQkJcGNpLT5pcnEsIDAsICZjaGlwLT5ybWlkaSkpIDwgMCkgewogCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJhemYzMzI4OiBubyBNUFUtNDAxIGRldmljZSBhdCAweCVseD9cbiIsIGNoaXAtPm1wdV9wb3J0KTsKIAkJZ290byBvdXRfZXJyOwogCX0KQEAgLTE3OTEsNiArMTgzMCw4IEBACiAJCX0KIAl9CiAKKwlvcGwzLT5wcml2YXRlX2RhdGEgPSBjaGlwOworCiAJc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JWx4LCBpcnEgJWkiLAogCQljYXJkLT5zaG9ydG5hbWUsIGNoaXAtPmNvZGVjX3BvcnQsIGNoaXAtPmlycSk7CiAKQEAgLTE4MzQsMTEgKzE4NzUsODAgQEAKIAlzbmRfYXpmMzMyOF9kYmdjYWxsbGVhdmUoKTsKIH0KIAorI2lmZGVmIENPTkZJR19QTQorc3RhdGljIGludAorc25kX2F6ZjMzMjhfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGNpLCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7CisJc3RydWN0IHNuZF9hemYzMzI4ICpjaGlwID0gY2FyZC0+cHJpdmF0ZV9kYXRhOworCWludCByZWc7CisKKwlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGNhcmQsIFNORFJWX0NUTF9QT1dFUl9EM2hvdCk7CisJCisJc25kX3BjbV9zdXNwZW5kX2FsbChjaGlwLT5wY20pOworCisJZm9yIChyZWcgPSAwOyByZWcgPCBBWkZfSU9fU0laRV9NSVhFUl9QTSAvIDI7IHJlZysrKQorCQljaGlwLT5zYXZlZF9yZWdzX21peGVyW3JlZ10gPSBpbncoY2hpcC0+bWl4ZXJfcG9ydCArIHJlZyAqIDIpOworCisJLyogbWFrZSBzdXJlIHRvIGRpc2FibGUgbWFzdGVyIHZvbHVtZSBldGMuIHRvIHByZXZlbnQgbG9vcGluZyBzb3VuZCAqLworCXNuZF9hemYzMzI4X21peGVyX3NldF9tdXRlKGNoaXAsIElEWF9NSVhFUl9QTEFZX01BU1RFUiwgMSk7CisJc25kX2F6ZjMzMjhfbWl4ZXJfc2V0X211dGUoY2hpcCwgSURYX01JWEVSX1dBVkVPVVQsIDEpOworCQorCWZvciAocmVnID0gMDsgcmVnIDwgQVpGX0lPX1NJWkVfQ09ERUNfUE0gLyAyOyByZWcrKykKKwkJY2hpcC0+c2F2ZWRfcmVnc19jb2RlY1tyZWddID0gaW53KGNoaXAtPmNvZGVjX3BvcnQgKyByZWcgKiAyKTsKKwlmb3IgKHJlZyA9IDA7IHJlZyA8IEFaRl9JT19TSVpFX0lPMl9QTSAvIDI7IHJlZysrKQorCQljaGlwLT5zYXZlZF9yZWdzX2lvMltyZWddID0gaW53KGNoaXAtPmlvMl9wb3J0ICsgcmVnICogMik7CisJZm9yIChyZWcgPSAwOyByZWcgPCBBWkZfSU9fU0laRV9NUFVfUE0gLyAyOyByZWcrKykKKwkJY2hpcC0+c2F2ZWRfcmVnc19tcHVbcmVnXSA9IGludyhjaGlwLT5tcHVfcG9ydCArIHJlZyAqIDIpOworCWZvciAocmVnID0gMDsgcmVnIDwgQVpGX0lPX1NJWkVfU1lOVEhfUE0gLyAyOyByZWcrKykKKwkJY2hpcC0+c2F2ZWRfcmVnc19zeW50aFtyZWddID0gaW53KGNoaXAtPnN5bnRoX3BvcnQgKyByZWcgKiAyKTsKKworCXBjaV9zZXRfcG93ZXJfc3RhdGUocGNpLCBQQ0lfRDNob3QpOworCXBjaV9kaXNhYmxlX2RldmljZShwY2kpOworCXBjaV9zYXZlX3N0YXRlKHBjaSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3NuZF9hemYzMzI4X3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGNpKQoreworCXN0cnVjdCBzbmRfY2FyZCAqY2FyZCA9IHBjaV9nZXRfZHJ2ZGF0YShwY2kpOworCXN0cnVjdCBzbmRfYXpmMzMyOCAqY2hpcCA9IGNhcmQtPnByaXZhdGVfZGF0YTsKKwlpbnQgcmVnOworCisJcGNpX3Jlc3RvcmVfc3RhdGUocGNpKTsKKwlwY2lfZW5hYmxlX2RldmljZShwY2kpOworCXBjaV9zZXRfcG93ZXJfc3RhdGUocGNpLCBQQ0lfRDApOworCXBjaV9zZXRfbWFzdGVyKHBjaSk7CisKKwlmb3IgKHJlZyA9IDA7IHJlZyA8IEFaRl9JT19TSVpFX0lPMl9QTSAvIDI7IHJlZysrKQorCQlvdXR3KGNoaXAtPnNhdmVkX3JlZ3NfaW8yW3JlZ10sIGNoaXAtPmlvMl9wb3J0ICsgcmVnICogMik7CisJZm9yIChyZWcgPSAwOyByZWcgPCBBWkZfSU9fU0laRV9NUFVfUE0gLyAyOyByZWcrKykKKwkJb3V0dyhjaGlwLT5zYXZlZF9yZWdzX21wdVtyZWddLCBjaGlwLT5tcHVfcG9ydCArIHJlZyAqIDIpOworCWZvciAocmVnID0gMDsgcmVnIDwgQVpGX0lPX1NJWkVfU1lOVEhfUE0gLyAyOyByZWcrKykKKwkJb3V0dyhjaGlwLT5zYXZlZF9yZWdzX3N5bnRoW3JlZ10sIGNoaXAtPnN5bnRoX3BvcnQgKyByZWcgKiAyKTsKKwlmb3IgKHJlZyA9IDA7IHJlZyA8IEFaRl9JT19TSVpFX01JWEVSX1BNIC8gMjsgcmVnKyspCisJCW91dHcoY2hpcC0+c2F2ZWRfcmVnc19taXhlcltyZWddLCBjaGlwLT5taXhlcl9wb3J0ICsgcmVnICogMik7CisJZm9yIChyZWcgPSAwOyByZWcgPCBBWkZfSU9fU0laRV9DT0RFQ19QTSAvIDI7IHJlZysrKQorCQlvdXR3KGNoaXAtPnNhdmVkX3JlZ3NfY29kZWNbcmVnXSwgY2hpcC0+Y29kZWNfcG9ydCArIHJlZyAqIDIpOworCisJc25kX3Bvd2VyX2NoYW5nZV9zdGF0ZShjYXJkLCBTTkRSVl9DVExfUE9XRVJfRDApOworCXJldHVybiAwOworfQorI2VuZGlmCisKKworCisKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkcml2ZXIgPSB7CiAJLm5hbWUgPSAiQVpGMzMyOCIsCiAJLmlkX3RhYmxlID0gc25kX2F6ZjMzMjhfaWRzLAogCS5wcm9iZSA9IHNuZF9hemYzMzI4X3Byb2JlLAogCS5yZW1vdmUgPSBfX2RldmV4aXRfcChzbmRfYXpmMzMyOF9yZW1vdmUpLAorI2lmZGVmIENPTkZJR19QTQorCS5zdXNwZW5kID0gc25kX2F6ZjMzMjhfc3VzcGVuZCwKKwkucmVzdW1lID0gc25kX2F6ZjMzMjhfcmVzdW1lLAorI2VuZGlmCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F6dDMzMjguaCBiL3NvdW5kL3BjaS9henQzMzI4LmgKaW5kZXggZjQ4OWJkYS4uYjRmM2UzYyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F6dDMzMjguaAorKysgYi9zb3VuZC9wY2kvYXp0MzMyOC5oCkBAIC01LDYgKzUsOSBAQAogCiAvKioqIG1haW4gSS9PIGFyZWEgcG9ydCBpbmRpY2VzICoqKi8KIC8qIChvbmx5IDB4NzAgb2YgMHg4MCBieXRlcyBzYXZlZC9yZXN0b3JlZCBieSBXaW5kb3dzIGRyaXZlcikgKi8KKyNkZWZpbmUgQVpGX0lPX1NJWkVfQ09ERUMJMHg4MAorI2RlZmluZSBBWkZfSU9fU0laRV9DT0RFQ19QTQkweDcwCisKIC8qIHRoZSBkcml2ZXIgaW5pdGlhbGlzYXRpb24gc3VnZ2VzdHMgYSBsYXlvdXQgb2YgNCBtYWluIGFyZWFzOgogICogZnJvbSAweDAwIChwbGF5YmFjayksIGZyb20gMHgyMCAocmVjb3JkaW5nKSBhbmQgZnJvbSAweDQwIChtYXliZSBNUFU0MDE/PykuCiAgKiBBbmQgYW5vdGhlciBhcmVhIGZyb20gMHg2MCB0byAweDZmIChEaXJlY3RYIHRpbWVyLCBJUlEgbWFuYWdlbWVudCwKQEAgLTg3LDcgKzkwLDcgQEAKICNkZWZpbmUgSURYX0lPX1JFQ19ETUFfQ1VSUk9GUyAgMHgzNCAvKiBQVToweDAwMDAwMDAwICovCiAjZGVmaW5lIElEWF9JT19SRUNfU09VTkRGT1JNQVQgIDB4MzYgLyogUFU6MHgwMDAwICovCiAKLS8qKiBobW0sIHdoYXQgaXMgdGhpcyBJL08gYXJlYSBmb3I/IE1QVTQwMT8/IChhZnRlciBwbGF5YmFjaywgcmVjb3JkaW5nLCA/Pz8sIHRpbWVyKSAqKi8KKy8qKiBobW0sIHdoYXQgaXMgdGhpcyBJL08gYXJlYSBmb3I/IE1QVTQwMT8/IG9yIGV4dGVybmFsIERBQyB2aWEgSTJTPz8gKGFmdGVyIHBsYXliYWNrLCByZWNvcmRpbmcsID8/PywgdGltZXIpICoqLwogI2RlZmluZSBJRFhfSU9fU09NRVRISU5HX0ZMQUdTCTB4NDAgLyogZ2V0cyBzZXQgdG8gMHgzNCBqdXN0IGxpa2UgcG9ydCAweDAgYW5kIDB4MjAgb24gY2FyZCBpbml0LCBQVToweDAwMDAgKi8KIC8qIGdlbmVyYWwgKi8KICNkZWZpbmUgSURYX0lPXzQySAkJMHg0MiAvKiBQVToweDAwMDEgKi8KQEAgLTEwNyw3ICsxMTAsOCBAQAogICAjZGVmaW5lIElSUV9VTktOT1dOMgkJCTB4MDA4MCAvKiBwcm9iYWJseSB1bnVzZWQgKi8KICNkZWZpbmUgSURYX0lPXzY2SAkJMHg2NiAgICAvKiB3cml0aW5nIDB4ZmZmZiByZXR1cm5zIDB4MDAwMCAqLwogI2RlZmluZSBJRFhfSU9fU09NRV9WQUxVRQkweDY4CS8qIHRoaXMgaXMgc2V0IHRvIGUuZy4gMHgzZmYgb3IgMHgzMDAsIGFuZCB3cml0YWJsZTsgbWF5YmUgc29tZSBidWZmZXIgbGltaXQsIGJ1dCBJIGNvdWxkbid0IGZpbmQgb3V0IG1vcmUsIFBVOjB4MDBmZiAqLwotI2RlZmluZSBJRFhfSU9fNkFICQkweDZBCS8qIHRoaXMgV09SRCBjYW4gYmUgc2V0IHRvIGhhdmUgYml0cyAweDAwMjggYWN0aXZhdGVkOyBhY3R1YWxseSBpbmhpYml0cyBQQ00gcGxheWJhY2shISEgbWF5YmUgcG93ZXIgbWFuYWdlbWVudD8/ICovCisjZGVmaW5lIElEWF9JT182QUgJCTB4NkEJLyogdGhpcyBXT1JEIGNhbiBiZSBzZXQgdG8gaGF2ZSBiaXRzIDB4MDAyOCBhY3RpdmF0ZWQgKEZJWE1FOiBjb3JyZWN0Pz8pOyBhY3R1YWxseSBpbmhpYml0cyBQQ00gcGxheWJhY2shISEgbWF5YmUgcG93ZXIgbWFuYWdlbWVudD8/ICovCisgICNkZWZpbmUgSU9fNkFfUEFVU0VfUExBWUJBQ0sJCTB4MDIwMCAvKiBiaXQgOTsgc3VyZSwgdGhpcyBwYXVzZXMgcGxheWJhY2ssIGJ1dCB3aGF0IHRoZSBoZWNrIGlzIHRoaXMgcmVhbGx5IGFib3V0Pz8gKi8KICNkZWZpbmUgSURYX0lPXzZDSAkJMHg2QwogI2RlZmluZSBJRFhfSU9fNkVICQkweDZFCS8qIHdyaXRpbmcgMHhmZmZmIHJldHVybnMgMHg4M2ZlICovCiAvKiBmdXJ0aGVyIEkvTyBpbmRpY2VzIG5vdCBzYXZlZC9yZXN0b3JlZCwgc28gcHJvYmFibHkgbm90IHVzZWQgKi8KQEAgLTExNSwxNSArMTE5LDI1IEBACiAKIC8qKiogSS9PIDIgYXJlYSBwb3J0IGluZGljZXMgKioqLwogLyogKG9ubHkgMHgwNiBvZiAweDA4IGJ5dGVzIHNhdmVkL3Jlc3RvcmVkIGJ5IFdpbmRvd3MgZHJpdmVyKSAqLyAKKyNkZWZpbmUgQVpGX0lPX1NJWkVfSU8yCQkweDA4CisjZGVmaW5lIEFaRl9JT19TSVpFX0lPMl9QTQkweDA2CisKICNkZWZpbmUgSURYX0lPMl9MRUdBQ1lfQUREUgkweDA0CiAgICNkZWZpbmUgTEVHQUNZX1NPTUVUSElORwkJMHgwMSAvKiBPUEwzPz8gKi8KICAgI2RlZmluZSBMRUdBQ1lfSk9ZCQkJMHgwOAogCisjZGVmaW5lIEFaRl9JT19TSVpFX01QVQkJMHgwNAorI2RlZmluZSBBWkZfSU9fU0laRV9NUFVfUE0JMHgwNAorCisjZGVmaW5lIEFaRl9JT19TSVpFX1NZTlRICTB4MDgKKyNkZWZpbmUgQVpGX0lPX1NJWkVfU1lOVEhfUE0JMHgwNgogCiAvKioqIG1peGVyIEkvTyBhcmVhIHBvcnQgaW5kaWNlcyAqKiovCiAvKiAob25seSAweDIyIG9mIDB4NDAgYnl0ZXMgc2F2ZWQvcmVzdG9yZWQgYnkgV2luZG93cyBkcml2ZXIpCi0gKiBnZW5lcmFsbHkgc3Bva2VuOiBBQzk3IHJlZ2lzdGVyIGluZGV4ID0gQVpGMzMyOCBtaXhlciByZWcgaW5kZXggKyAyCi0gKiAoaW4gb3RoZXIgd29yZHM6IEFaRjMzMjggTk9UIGZ1bGx5IEFDOTcgY29tcGxpYW50KSAqLworICogVU5GT1JUVU5BVEVMWSBhemYzMzI4IGlzIE5PVCB0cnVseSBBQzk3IGNvbXBsaWFudDogc2VlIG1haW4gZmlsZSBpbnRybyAqLworI2RlZmluZSBBWkZfSU9fU0laRV9NSVhFUgkweDQwCisjZGVmaW5lIEFaRl9JT19TSVpFX01JWEVSX1BNCTB4MjIKKwogICAjZGVmaW5lIE1JWEVSX1ZPTFVNRV9SSUdIVF9NQVNLCTB4MDAxZgogICAjZGVmaW5lIE1JWEVSX1ZPTFVNRV9MRUZUX01BU0sJMHgxZjAwCiAgICNkZWZpbmUgTUlYRVJfTVVURV9NQVNLCQkweDgwMDAKQEAgLTE1NiwxNCArMTcwLDE0IEBACiAjZGVmaW5lIElEWF9NSVhFUl9BRFZDVEwxICAgICAgIDB4MWUKICAgLyogdW5saXN0ZWQgYml0cyBhcmUgdW5tb2RpZmlhYmxlICovCiAgICNkZWZpbmUgTUlYRVJfQURWQ1RMMV8zRFdJRFRIX01BU0sJMHgwMDBlCi0gICNkZWZpbmUgTUlYRVJfQURWQ1RMMV9ISUZJM0RfTUFTSwkweDAzMDAKLSNkZWZpbmUgSURYX01JWEVSX0FEVkNUTDIgICAgICAgMHgyMCAvKiByZXNlbWJsZXMgQUM5N19HRU5FUkFMX1BVUlBPU0UgcmVnISAqLworICAjZGVmaW5lIE1JWEVSX0FEVkNUTDFfSElGSTNEX01BU0sJMHgwMzAwIC8qIHl1cCwgdGhpcyBpcyBtaXNzaW5nIHRoZSBoaWdoIGJpdCB0aGF0IG9mZmljaWFsIEFDOTcgY29udGFpbnMsIHBsdXMgaXQgZG9lc24ndCBoYXZlIGxpbmVhciBiaXQgdmFsdWUgcmFuZ2UgYmVoYXZpb3VyIGJ1dCBpbnN0ZWFkIGFjdHMgd2VpcmRseSAocG9zc2libHkgd2UncmUgZGVhbGluZyB3aXRoIHR3byAqZGlmZmVyZW50KiAzRCBzZXR0aW5ncyBoZXJlPz8pICovCisjZGVmaW5lIElEWF9NSVhFUl9BRFZDVEwyICAgICAgIDB4MjAgLyogc3Vic2V0IG9mIEFDOTdfR0VORVJBTF9QVVJQT1NFIHJlZyEgKi8KICAgLyogdW5saXN0ZWQgYml0cyBhcmUgdW5tb2RpZmlhYmxlICovCi0gICNkZWZpbmUgTUlYRVJfQURWQ1RMMl9CSVQ3CQkweDAwODAgLyogV2F2ZU91dCAzRCBCeXBhc3M/IG11dGVzIFdhdmVPdXQgYXQgTGluZU91dCAqLwotICAjZGVmaW5lIE1JWEVSX0FEVkNUTDJfQklUOAkJMHgwMTAwIC8qIGlzIHRoaXMgTW9kZW0gT3V0IFNlbGVjdD8gKi8KLSAgI2RlZmluZSBNSVhFUl9BRFZDVEwyX0JJVDkJCTB4MDIwMCAvKiBNb25vIFNlbGVjdCBTb3VyY2U/ICovCi0gICNkZWZpbmUgTUlYRVJfQURWQ1RMMl9CSVQxMwkJMHgyMDAwIC8qIDNEIGVuYWJsZT8gKi8KLSAgI2RlZmluZSBNSVhFUl9BRFZDVEwyX0JJVDE1CQkweDgwMDAgLyogdW5rbm93biAqLworICAjZGVmaW5lIE1JWEVSX0FEVkNUTDJfTFBCSwkJMHgwMDgwIC8qIExvb3BiYWNrIG1vZGUgLS0gV2luIGRyaXZlcjogIldhdmVPdXQzREJ5cGFzcyI/IG11dGVzIFdhdmVPdXQgYXQgTGluZU91dCAqLworICAjZGVmaW5lIE1JWEVSX0FEVkNUTDJfTVMJCTB4MDEwMCAvKiBNaWMgU2VsZWN0IDA9TWljMSwgMT1NaWMyIC0tIFdpbiBkcml2ZXI6ICJNb2RlbU91dFNlbGVjdCI/PyAqLworICAjZGVmaW5lIE1JWEVSX0FEVkNUTDJfTUlYCQkweDAyMDAgLyogTW9ubyBvdXRwdXQgc2VsZWN0IDA9TWl4LCAxPU1pYzsgV2luIGRyaXZlcjogIk1vbm9TZWxlY3RTb3VyY2UiPz8gKi8KKyAgI2RlZmluZSBNSVhFUl9BRFZDVEwyXzNECQkweDIwMDAgLyogM0QgRW5oYW5jZW1lbnQgMT1vbiAqLworICAjZGVmaW5lIE1JWEVSX0FEVkNUTDJfUE9QCQkweDgwMDAgLyogUGNtIE91dCBQYXRoLCAwPXByZSAzRCwgMT1wb3N0IDNEICovCiAgIAogI2RlZmluZSBJRFhfTUlYRVJfU09NRVRISU5HMzBICTB4MzAgLyogdXNlZCwgYnV0IHVua25vd24/Pz8gKi8KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2J0ODd4LmMgYi9zb3VuZC9wY2kvYnQ4N3guYwppbmRleCA5ZWUwN2Q0Li5jMzM2NDJkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYnQ4N3guYworKysgYi9zb3VuZC9wY2kvYnQ4N3guYwpAQCAtNDQsNyArNDQsNyBAQAogc3RhdGljIGludCBpbmRleFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IC0yfTsgLyogRXhjbHVkZSB0aGUgZmlyc3QgY2FyZCAqLwogc3RhdGljIGNoYXIgKmlkW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfU1RSOwkvKiBJRCBmb3IgdGhpcyBjYXJkICovCiBzdGF0aWMgaW50IGVuYWJsZVtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0VOQUJMRV9QTlA7CS8qIEVuYWJsZSB0aGlzIGNhcmQgKi8KLXN0YXRpYyBpbnQgZGlnaXRhbF9yYXRlW1NORFJWX0NBUkRTXSA9IHsgWzAgLi4uIChTTkRSVl9DQVJEUy0xKV0gPSAwIH07IC8qIGRpZ2l0YWwgaW5wdXQgcmF0ZSAqLworc3RhdGljIGludCBkaWdpdGFsX3JhdGVbU05EUlZfQ0FSRFNdOwkvKiBkaWdpdGFsIGlucHV0IHJhdGUgKi8KIHN0YXRpYyBpbnQgbG9hZF9hbGw7CS8qIGFsbG93IHRvIGxvYWQgdGhlIG5vbi13aGl0ZWxpc3RlZCBjYXJkcyAqLwogCiBtb2R1bGVfcGFyYW1fYXJyYXkoaW5kZXgsIGludCwgTlVMTCwgMDQ0NCk7CkBAIC03ODEsMTAgKzc4MSwxMiBAQAogCUJUX0RFVklDRShQQ0lfREVWSUNFX0lEX0JST09LVFJFRV84NzksIDB4MDA3MCwgMHgxM2ViLCAzMjAwMCksCiAJLyogVmlld2Nhc3QgT3NwcmV5IDIwMCAqLwogCUJUX0RFVklDRShQQ0lfREVWSUNFX0lEX0JST09LVFJFRV84NzgsIDB4MDA3MCwgMHhmZjAxLCA0NDEwMCksCi0JLyogQVZlck1lZGlhIFN0dWRpbyBOby4gMTAzLCAyMDMsIC4uLj8gKi8KLQlCVF9ERVZJQ0UoUENJX0RFVklDRV9JRF9CUk9PS1RSRUVfODc4LCAweDE0NjEsIDB4MDAwMywgNDgwMDApLAogCS8qIExlYWR0ZWsgV2luZmFzdCB0diAyMDAweHAgZGVsdXggKi8KIAlCVF9ERVZJQ0UoUENJX0RFVklDRV9JRF9CUk9PS1RSRUVfODc4LCAweDEwN2QsIDB4NjYwNiwgMzIwMDApLAorCS8qIFZvb2RvbyBUViAyMDAgKi8KKwlCVF9ERVZJQ0UoUENJX0RFVklDRV9JRF9CUk9PS1RSRUVfODc4LCAweDEyMWEsIDB4MzAwMCwgMzIwMDApLAorCS8qIEFWZXJNZWRpYSBTdHVkaW8gTm8uIDEwMywgMjAzLCAuLi4/ICovCisJQlRfREVWSUNFKFBDSV9ERVZJQ0VfSURfQlJPT0tUUkVFXzg3OCwgMHgxNDYxLCAweDAwMDMsIDQ4MDAwKSwKIAl7IH0KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc25kX2J0ODd4X2lkcyk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNi5oIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDYuaAppbmRleCBjODEzMWVhLi45Y2I2NmM1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNi5oCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2LmgKQEAgLTUzNyw5ICs1MzcsOSBAQAogI2VuZGlmCiAKICNkZWZpbmUgQURDX01VWF9NQVNLCQkweDAwMDAwMDBmCS8vTWFzayBmb3IgQURDIE11eAorI2RlZmluZSBBRENfTVVYX1BIT05FCQkweDAwMDAwMDAxCS8vVmFsdWUgdG8gc2VsZWN0IFRBRCBhdCBBREMgTXV4IChOb3QgdXNlZCkKICNkZWZpbmUgQURDX01VWF9NSUMJCTB4MDAwMDAwMDIJLy9WYWx1ZSB0byBzZWxlY3QgTWljIGF0IEFEQyBNdXgKICNkZWZpbmUgQURDX01VWF9MSU5FSU4JCTB4MDAwMDAwMDQJLy9WYWx1ZSB0byBzZWxlY3QgTGluZUluIGF0IEFEQyBNdXgKLSNkZWZpbmUgQURDX01VWF9QSE9ORQkJMHgwMDAwMDAwMQkvL1ZhbHVlIHRvIHNlbGVjdCBUQUQgYXQgQURDIE11eCAoTm90IHVzZWQpCiAjZGVmaW5lIEFEQ19NVVhfQVVYCQkweDAwMDAwMDA4CS8vVmFsdWUgdG8gc2VsZWN0IEF1eCBhdCBBREMgTXV4CiAKICNkZWZpbmUgU0VUX0NIQU5ORUwgMCAgLyogVGVzdGluZyBjaGFubmVsIG91dHB1dHMgMD1Gcm9udCwgMT1DZW50ZXIvTEZFLCAyPVVua25vd24sIDM9UmVhciAqLwpAQCAtNjA0LDYgKzYwNCw4IEBACiAJdTMyIHNwZGlmX2JpdHNbNF07ICAgICAgICAgICAgIC8qIHMvcGRpZiBvdXQgc2V0dXAgKi8KIAlpbnQgc3BkaWZfZW5hYmxlOwogCWludCBjYXB0dXJlX3NvdXJjZTsKKwlpbnQgaTJjX2NhcHR1cmVfc291cmNlOworCXU4IGkyY19jYXB0dXJlX3ZvbHVtZVs0XVsyXTsKIAlpbnQgY2FwdHVyZV9taWNfbGluZV9pbjsKIAogCXN0cnVjdCBzbmRfZG1hX2J1ZmZlciBidWZmZXI7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9tYWluLmMgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9tYWluLmMKaW5kZXggZmQ4YmZlYi4uNTliZjliZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWFpbi5jCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21haW4uYwpAQCAtMTg2LDggKzE4Niw4IEBACiAJIC8qIE5ldyBBdWRpZ3kgU0UuIEhhcyBhIGRpZmZlcmVudCBEQUMuICovCiAJIC8qIFNCMDU3MDoKIAkgICogQ1RSTDpDQTAxMDYtREFUCi0JICAqIEFEQzogV004NzY4R0VEUwotCSAgKiBEQUM6IFdNODc3NUVEUworCSAgKiBBREM6IFdNODc3NUVEUworCSAgKiBEQUM6IFdNODc2OEdFRFMKIAkgICovCiAJIHsgLnNlcmlhbCA9IDB4MTAwYTExMDIsCiAJICAgLm5hbWUgICA9ICJBdWRpZ3kgU0UgW1NCMDU3MF0iLApAQCAtMTk1LDkgKzE5NSwxNCBAQAogCSAgIC5pMmNfYWRjID0gMSwKIAkgICAuc3BpX2RhYyA9IDEgfSAsCiAJIC8qIE1TSSBLOE4gRGlhbW9uZCBNb3RoZXJib2FyZCB3aXRoIG9uYm9hcmQgU0IgTGl2ZSAyNGJpdCB3aXRob3V0IEFDOTcgKi8KKwkgLyogU0IwNDM4CisJICAqIENUUkw6Q0EwMTA2LURBVAorCSAgKiBBREM6IFdNODc3NVNFRFMKKwkgICogREFDOiBDUzQzODItS1FaCisJICAqLwogCSB7IC5zZXJpYWwgPSAweDEwMDkxNDYyLAogCSAgIC5uYW1lICAgPSAiTVNJIEs4TiBEaWFtb25kIE1CIFtTQjA0MzhdIiwKLQkgICAuZ3Bpb190eXBlID0gMSwKKwkgICAuZ3Bpb190eXBlID0gMiwKIAkgICAuaTJjX2FkYyA9IDEgfSAsCiAJIC8qIFNodXR0bGUgWFBDIFNEMzFQIHdoaWNoIGhhcyBhbiBvbmJvYXJkIENyZWF0aXZlIExhYnMKIAkgICogU291bmQgQmxhc3RlciBMaXZlISAyNC1iaXQgRUFYCkBAIC0zMjYsNiArMzMxLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyogVGhlIEFEQyBkb2VzIG5vdCBzdXBwb3J0IGkyYyByZWFkLCBzbyBvbmx5IHdyaXRlIGlzIGltcGxlbWVudGVkICovCiBpbnQgc25kX2NhMDEwNl9pMmNfd3JpdGUoc3RydWN0IHNuZF9jYTAxMDYgKmVtdSwKIAkJCQl1MzIgcmVnLAogCQkJCXUzMiB2YWx1ZSkKQEAgLTM0MCw2ICszNDYsNyBAQAogCX0KIAogCXRtcCA9IHJlZyA8PCAyNSB8IHZhbHVlIDw8IDE2OworCS8vIHNuZF9wcmludGsoIkkyQy13cml0ZTpyZWc9MHgleCwgdmFsdWU9MHgleFxuIiwgcmVnLCB2YWx1ZSk7CiAJLyogTm90IHN1cmUgd2hhdCB0aGlzIEkyQyBjaGFubmVsIGNvbnRyb2xzLiAqLwogCS8qIHNuZF9jYTAxMDZfcHRyX3dyaXRlKGVtdSwgSTJDX0QwLCAwLCB0bXApOyAqLwogCkBAIC0zNDgsOCArMzU1LDkgQEAKIAogCWZvciAocmV0cnkgPSAwOyByZXRyeSA8IDEwOyByZXRyeSsrKSB7CiAJCS8qIFNlbmQgdGhlIGRhdGEgdG8gaTJjICovCi0JCXRtcCA9IHNuZF9jYTAxMDZfcHRyX3JlYWQoZW11LCBJMkNfQSwgMCk7Ci0JCXRtcCA9IHRtcCAmIH4oSTJDX0FfQURDX1JFQUR8STJDX0FfQURDX0xBU1R8STJDX0FfQURDX1NUQVJUfEkyQ19BX0FEQ19BRERfTUFTSyk7CisJCS8vdG1wID0gc25kX2NhMDEwNl9wdHJfcmVhZChlbXUsIEkyQ19BLCAwKTsKKwkJLy90bXAgPSB0bXAgJiB+KEkyQ19BX0FEQ19SRUFEfEkyQ19BX0FEQ19MQVNUfEkyQ19BX0FEQ19TVEFSVHxJMkNfQV9BRENfQUREX01BU0spOworCQl0bXAgPSAwOwogCQl0bXAgPSB0bXAgfCAoSTJDX0FfQURDX0xBU1R8STJDX0FfQURDX1NUQVJUfEkyQ19BX0FEQ19BREQpOwogCQlzbmRfY2EwMTA2X3B0cl93cml0ZShlbXUsIEkyQ19BLCAwLCB0bXApOwogCkBAIC0xMTgxLDcgKzExODksNyBAQAogCTB4MDJmZiwKIAkweDA0MDAsCiAJMHgwNTIwLAotCTB4MDYwMCwKKwkweDA2MjAsIC8qIFNldCAyNCBiaXQuIFdhcyAweDA2MDAgKi8KIAkweDA4ZmYsCiAJMHgwYWZmLAogCTB4MGNmZiwKQEAgLTEyMDAsNiArMTIwOCwyMiBAQAogCTB4MTQwMCwKIH07CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgaTJjX2FkY19pbml0W11bMl0gPSB7CisJeyAweDE3LCAweDAwIH0sIC8qIFJlc2V0ICovCisJeyAweDA3LCAweDAwIH0sIC8qIFRpbWVvdXQgKi8KKwl7IDB4MGIsIDB4MjIgfSwgIC8qIEludGVyZmFjZSBjb250cm9sICovCisJeyAweDBjLCAweDIyIH0sICAvKiBNYXN0ZXIgbW9kZSBjb250cm9sICovCisJeyAweDBkLCAweDA4IH0sICAvKiBQb3dlcmRvd24gY29udHJvbCAqLworCXsgMHgwZSwgMHhjZiB9LCAgLyogQXR0ZW51YXRpb24gTGVmdCAgMHgwMSA9IC0xMDNkQiwgMHhmZiA9IDI0ZEIgKi8KKwl7IDB4MGYsIDB4Y2YgfSwgIC8qIEF0dGVudWF0aW9uIFJpZ2h0IDAuNWRCIHN0ZXBzICovCisJeyAweDEwLCAweDdiIH0sICAvKiBBTEMgQ29udHJvbCAxICovCisJeyAweDExLCAweDAwIH0sICAvKiBBTEMgQ29udHJvbCAyICovCisJeyAweDEyLCAweDMyIH0sICAvKiBBTEMgQ29udHJvbCAzICovCisJeyAweDEzLCAweDAwIH0sICAvKiBOb2lzZSBnYXRlIGNvbnRyb2wgKi8KKwl7IDB4MTQsIDB4YTYgfSwgIC8qIExpbWl0ZXIgY29udHJvbCAqLworCXsgMHgxNSwgQURDX01VWF9MSU5FSU4gfSwgIC8qIEFEQyBNaXhlciBjb250cm9sICovCit9OworCiBzdGF0aWMgaW50IF9fZGV2aW5pdCBzbmRfY2EwMTA2X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJCQkJCSBzdHJ1Y3QgcGNpX2RldiAqcGNpLAogCQkJCQkgc3RydWN0IHNuZF9jYTAxMDYgKipyY2hpcCkKQEAgLTEzNjEsNyArMTM4NSwxMiBAQAogICAgICAgICBzbmRfY2EwMTA2X3B0cl93cml0ZShjaGlwLCBDQVBUVVJFX1NPVVJDRSwgMHgwLCAweDMzMzMwMGU0KTsgLyogU2VsZWN0IE1JQywgTGluZSBpbiwgVEFEIGluLCBBVVggaW4gKi8KIAljaGlwLT5jYXB0dXJlX3NvdXJjZSA9IDM7IC8qIFNldCBDQVBUVVJFX1NPVVJDRSAqLwogCi0gICAgICAgIGlmIChjaGlwLT5kZXRhaWxzLT5ncGlvX3R5cGUgPT0gMSkgeyAvKiBUaGUgU0IwNDEwIGFuZCBTQjA0MTMgdXNlIEdQSU8gZGlmZmVyZW50bHkuICovCisgICAgICAgIGlmIChjaGlwLT5kZXRhaWxzLT5ncGlvX3R5cGUgPT0gMikgeyAvKiBUaGUgU0IwNDM4IHVzZSBHUElPIGRpZmZlcmVudGx5LiAqLworCQkvKiBGSVhNRTogU3RpbGwgbmVlZCB0byBmaW5kIG91dCB3aGF0IHRoZSBvdGhlciBHUElPIGJpdHMgZG8uIEUuZy4gRm9yIGRpZ2l0YWwgc3BkaWYgb3V0LiAqLworCQlvdXRsKDB4MCwgY2hpcC0+cG9ydCtHUElPKTsKKwkJLy9vdXRsKDB4MDBmMGUwMDAsIGNoaXAtPnBvcnQrR1BJTyk7IC8qIEFuYWxvZyAqLworCQlvdXRsKDB4MDA1ZjUzMDEsIGNoaXAtPnBvcnQrR1BJTyk7IC8qIEFuYWxvZyAqLworCX0gZWxzZSBpZiAoY2hpcC0+ZGV0YWlscy0+Z3Bpb190eXBlID09IDEpIHsgLyogVGhlIFNCMDQxMCBhbmQgU0IwNDEzIHVzZSBHUElPIGRpZmZlcmVudGx5LiAqLwogCQkvKiBGSVhNRTogU3RpbGwgbmVlZCB0byBmaW5kIG91dCB3aGF0IHRoZSBvdGhlciBHUElPIGJpdHMgZG8uIEUuZy4gRm9yIGRpZ2l0YWwgc3BkaWYgb3V0LiAqLwogCQlvdXRsKDB4MCwgY2hpcC0+cG9ydCtHUElPKTsKIAkJLy9vdXRsKDB4MDBmMGUwMDAsIGNoaXAtPnBvcnQrR1BJTyk7IC8qIEFuYWxvZyAqLwpAQCAtMTM3OSw3ICsxNDA4LDE5IEBACiAJb3V0bChIQ0ZHX0FDOTcgfCBIQ0ZHX0FVRElPRU5BQkxFLCBjaGlwLT5wb3J0K0hDRkcpOyAvKiBBQzk3IDIuMCwgRW5hYmxlIG91dHB1dHMuICovCiAKICAgICAgICAgaWYgKGNoaXAtPmRldGFpbHMtPmkyY19hZGMgPT0gMSkgeyAvKiBUaGUgU0IwNDEwIGFuZCBTQjA0MTMgdXNlIEkyQyB0byBjb250cm9sIEFEQy4gKi8KLQkgICAgICAgIHNuZF9jYTAxMDZfaTJjX3dyaXRlKGNoaXAsIEFEQ19NVVgsIEFEQ19NVVhfTElORUlOKTsgLyogRW5hYmxlIExpbmUtaW4gY2FwdHVyZS4gTUlDIGluIGN1cnJlbnRseSB1bnRlc3RlZC4gKi8KKwkJaW50IHNpemUsIG47CisKKwkJc2l6ZSA9IEFSUkFZX1NJWkUoaTJjX2FkY19pbml0KTsKKyAgICAgICAgICAgICAgICAvL3NuZF9wcmludGsoIkkyQzphcnJheSBzaXplPTB4JXhcbiIsIHNpemUpOworCQlmb3IgKG49MDsgbiA8IHNpemU7IG4rKykgeworCQkJc25kX2NhMDEwNl9pMmNfd3JpdGUoY2hpcCwgaTJjX2FkY19pbml0W25dWzBdLCBpMmNfYWRjX2luaXRbbl1bMV0pOworCQl9CisJCWZvciAobj0wOyBuIDwgNDsgbisrKSB7CisJCQljaGlwLT5pMmNfY2FwdHVyZV92b2x1bWVbbl1bMF09IDB4Y2Y7CisJCQljaGlwLT5pMmNfY2FwdHVyZV92b2x1bWVbbl1bMV09IDB4Y2Y7CisJCX0KKwkJY2hpcC0+aTJjX2NhcHR1cmVfc291cmNlPTI7IC8qIExpbmUgaW4gKi8KKwkgICAgICAgIC8vc25kX2NhMDEwNl9pMmNfd3JpdGUoY2hpcCwgQURDX01VWCwgQURDX01VWF9MSU5FSU4pOyAvKiBFbmFibGUgTGluZS1pbiBjYXB0dXJlLiBNSUMgaW4gY3VycmVudGx5IHVudGVzdGVkLiAqLwogCX0KICAgICAgICAgaWYgKGNoaXAtPmRldGFpbHMtPnNwaV9kYWMgPT0gMSkgeyAvKiBUaGUgU0IwNTcwIHVzZSBTUEkgdG8gY29udHJvbCBEQUMuICovCiAJCWludCBzaXplLCBuOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWl4ZXIuYyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21peGVyLmMKaW5kZXggMDZmZTA1NS4uMTQ2ZWVkNyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWl4ZXIuYworKysgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9taXhlci5jCkBAIC0xNzEsNiArMTcxLDc2IEBACiAgICAgICAgIHJldHVybiBjaGFuZ2U7CiB9CiAKK3N0YXRpYyBpbnQgc25kX2NhMDEwNl9pMmNfY2FwdHVyZV9zb3VyY2VfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkJICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQoreworCXN0YXRpYyBjaGFyICp0ZXh0c1s2XSA9IHsKKwkJIlBob25lIiwgIk1pYyIsICJMaW5lIGluIiwgIkF1eCIKKwl9OworCisJdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0VOVU1FUkFURUQ7CisJdWluZm8tPmNvdW50ID0gMTsKKwl1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtcyA9IDQ7CisJaWYgKHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPiAzKQorICAgICAgICAgICAgICAgIHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPSAzOworCXN0cmNweSh1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5uYW1lLCB0ZXh0c1t1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtXSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc25kX2NhMDEwNl9pMmNfY2FwdHVyZV9zb3VyY2VfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX2NhMDEwNiAqZW11ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCisJdWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA9IGVtdS0+aTJjX2NhcHR1cmVfc291cmNlOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNuZF9jYTAxMDZfaTJjX2NhcHR1cmVfc291cmNlX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHNuZF9jYTAxMDYgKmVtdSA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKKwl1bnNpZ25lZCBpbnQgc291cmNlX2lkOworCXVuc2lnbmVkIGludCBuZ2Fpbiwgb2dhaW47CisJaW50IGNoYW5nZSA9IDA7CisJdTMyIHNvdXJjZTsKKwkvKiBJZiB0aGUgY2FwdHVyZSBzb3VyY2UgaGFzIGNoYW5nZWQsCisJICogdXBkYXRlIHRoZSBjYXB0dXJlIHZvbHVtZSBmcm9tIHRoZSBjYWNoZWQgdmFsdWUKKwkgKiBmb3IgdGhlIHBhcnRpY3VsYXIgc291cmNlLgorCSAqLworCXNvdXJjZV9pZCA9IHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1bMF0gOworCWNoYW5nZSA9IChlbXUtPmkyY19jYXB0dXJlX3NvdXJjZSAhPSBzb3VyY2VfaWQpOworCWlmIChjaGFuZ2UpIHsKKwkJc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfTVVYLCAwKTsgLyogTXV0ZSBpbnB1dCAqLworCQluZ2FpbiA9IGVtdS0+aTJjX2NhcHR1cmVfdm9sdW1lW3NvdXJjZV9pZF1bMF07IC8qIExlZnQgKi8KKwkJb2dhaW4gPSBlbXUtPmkyY19jYXB0dXJlX3ZvbHVtZVtlbXUtPmkyY19jYXB0dXJlX3NvdXJjZV1bMF07IC8qIExlZnQgKi8KKwkJaWYgKG5nYWluICE9IG9nYWluKQorCQkJc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfQVRURU5fQURDTCwgKChuZ2FpbikgJiAweGZmKSk7CisJCW5nYWluID0gZW11LT5pMmNfY2FwdHVyZV92b2x1bWVbc291cmNlX2lkXVsxXTsgLyogTGVmdCAqLworCQlvZ2FpbiA9IGVtdS0+aTJjX2NhcHR1cmVfdm9sdW1lW2VtdS0+aTJjX2NhcHR1cmVfc291cmNlXVsxXTsgLyogTGVmdCAqLworCQlpZiAobmdhaW4gIT0gb2dhaW4pCisJCQlzbmRfY2EwMTA2X2kyY193cml0ZShlbXUsIEFEQ19BVFRFTl9BRENSLCAoKG5nYWluKSAmIDB4ZmYpKTsKKwkJc291cmNlID0gMSA8PCBzb3VyY2VfaWQ7CisJCXNuZF9jYTAxMDZfaTJjX3dyaXRlKGVtdSwgQURDX01VWCwgc291cmNlKTsgLyogU2V0IHNvdXJjZSAqLworCQllbXUtPmkyY19jYXB0dXJlX3NvdXJjZSA9IHNvdXJjZV9pZDsKKwl9CisgICAgICAgIHJldHVybiBjaGFuZ2U7Cit9CisKK3N0YXRpYyBpbnQgc25kX2NhMDEwNl9jYXB0dXJlX2xpbmVfaW5fc2lkZV9vdXRfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkJICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJc3RhdGljIGNoYXIgKnRleHRzWzJdID0geyAiU2lkZSBvdXQiLCAiTGluZSBpbiIgfTsKKworCXVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9FTlVNRVJBVEVEOworCXVpbmZvLT5jb3VudCA9IDE7CisJdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbXMgPSAyOworCWlmICh1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtID4gMSkKKyAgICAgICAgICAgICAgICB1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtID0gMTsKKwlzdHJjcHkodWluZm8tPnZhbHVlLmVudW1lcmF0ZWQubmFtZSwgdGV4dHNbdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbV0pOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IHNuZF9jYTAxMDZfY2FwdHVyZV9taWNfbGluZV9pbl9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAogCQkJCQkgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKIHsKQEAgLTIwNywxNiArMjc3LDE2IEBACiAJaWYgKGNoYW5nZSkgewogCQllbXUtPmNhcHR1cmVfbWljX2xpbmVfaW4gPSB2YWw7CiAJCWlmICh2YWwpIHsKLQkJCXNuZF9jYTAxMDZfaTJjX3dyaXRlKGVtdSwgQURDX01VWCwgQURDX01VWF9QSE9ORSk7IC8qIE11dGUgaW5wdXQgKi8KKwkJCS8vc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfTVVYLCAwKTsgLyogTXV0ZSBpbnB1dCAqLwogCQkJdG1wID0gaW5sKGVtdS0+cG9ydCtHUElPKSAmIH4weDQwMDsKIAkJCXRtcCA9IHRtcCB8IDB4NDAwOwogCQkJb3V0bCh0bXAsIGVtdS0+cG9ydCtHUElPKTsKLQkJCXNuZF9jYTAxMDZfaTJjX3dyaXRlKGVtdSwgQURDX01VWCwgQURDX01VWF9NSUMpOworCQkJLy9zbmRfY2EwMTA2X2kyY193cml0ZShlbXUsIEFEQ19NVVgsIEFEQ19NVVhfTUlDKTsKIAkJfSBlbHNlIHsKLQkJCXNuZF9jYTAxMDZfaTJjX3dyaXRlKGVtdSwgQURDX01VWCwgQURDX01VWF9QSE9ORSk7IC8qIE11dGUgaW5wdXQgKi8KKwkJCS8vc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfTVVYLCAwKTsgLyogTXV0ZSBpbnB1dCAqLwogCQkJdG1wID0gaW5sKGVtdS0+cG9ydCtHUElPKSAmIH4weDQwMDsKIAkJCW91dGwodG1wLCBlbXUtPnBvcnQrR1BJTyk7Ci0JCQlzbmRfY2EwMTA2X2kyY193cml0ZShlbXUsIEFEQ19NVVgsIEFEQ19NVVhfTElORUlOKTsKKwkJCS8vc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfTVVYLCBBRENfTVVYX0xJTkVJTik7CiAJCX0KIAl9CiAgICAgICAgIHJldHVybiBjaGFuZ2U7CkBAIC0yMjUsMTIgKzI5NSwyMiBAQAogc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHNuZF9jYTAxMDZfY2FwdHVyZV9taWNfbGluZV9pbiBfX2RldmluaXRkYXRhID0KIHsKIAkuaWZhY2UgPQlTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKLQkubmFtZSA9CQkiTWljL0xpbmUgaW4gQ2FwdHVyZSIsCisJLm5hbWUgPQkJIlNoYXJlZCBNaWMvTGluZSBpbiBDYXB0dXJlIFN3aXRjaCIsCiAJLmluZm8gPQkJc25kX2NhMDEwNl9jYXB0dXJlX21pY19saW5lX2luX2luZm8sCiAJLmdldCA9CQlzbmRfY2EwMTA2X2NhcHR1cmVfbWljX2xpbmVfaW5fZ2V0LAogCS5wdXQgPQkJc25kX2NhMDEwNl9jYXB0dXJlX21pY19saW5lX2luX3B1dAogfTsKIAorc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHNuZF9jYTAxMDZfY2FwdHVyZV9saW5lX2luX3NpZGVfb3V0IF9fZGV2aW5pdGRhdGEgPQoreworCS5pZmFjZSA9CVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCS5uYW1lID0JCSJTaGFyZWQgTGluZSBpbi9TaWRlIG91dCBDYXB0dXJlIFN3aXRjaCIsCisJLmluZm8gPQkJc25kX2NhMDEwNl9jYXB0dXJlX2xpbmVfaW5fc2lkZV9vdXRfaW5mbywKKwkuZ2V0ID0JCXNuZF9jYTAxMDZfY2FwdHVyZV9taWNfbGluZV9pbl9nZXQsCisJLnB1dCA9CQlzbmRfY2EwMTA2X2NhcHR1cmVfbWljX2xpbmVfaW5fcHV0Cit9OworCisKIHN0YXRpYyBpbnQgc25kX2NhMDEwNl9zcGRpZl9pbmZvKHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAogCQkJCSBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8gKnVpbmZvKQogewpAQCAtMzI5LDE1ICs0MDksODEgQEAKIAlyZXR1cm4gMTsKIH0KIAorc3RhdGljIGludCBzbmRfY2EwMTA2X2kyY192b2x1bWVfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkgIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisgICAgICAgIHVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSOworICAgICAgICB1aW5mby0+Y291bnQgPSAyOworICAgICAgICB1aW5mby0+dmFsdWUuaW50ZWdlci5taW4gPSAwOworICAgICAgICB1aW5mby0+dmFsdWUuaW50ZWdlci5tYXggPSAyNTU7CisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNuZF9jYTAxMDZfaTJjX3ZvbHVtZV9nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkJIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworICAgICAgICBzdHJ1Y3Qgc25kX2NhMDEwNiAqZW11ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCWludCBzb3VyY2VfaWQ7CisKKwlzb3VyY2VfaWQgPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKKworICAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA9IGVtdS0+aTJjX2NhcHR1cmVfdm9sdW1lW3NvdXJjZV9pZF1bMF07CisgICAgICAgIHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdID0gZW11LT5pMmNfY2FwdHVyZV92b2x1bWVbc291cmNlX2lkXVsxXTsKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc25kX2NhMDEwNl9pMmNfdm9sdW1lX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisgICAgICAgIHN0cnVjdCBzbmRfY2EwMTA2ICplbXUgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisgICAgICAgIHVuc2lnbmVkIGludCBvZ2FpbjsKKyAgICAgICAgdW5zaWduZWQgaW50IG5nYWluOworCWludCBzb3VyY2VfaWQ7CisJaW50IGNoYW5nZSA9IDA7CisKKwlzb3VyY2VfaWQgPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKKwlvZ2FpbiA9IGVtdS0+aTJjX2NhcHR1cmVfdm9sdW1lW3NvdXJjZV9pZF1bMF07IC8qIExlZnQgKi8KKwluZ2FpbiA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOworCWlmIChuZ2FpbiA+IDB4ZmYpCisJCXJldHVybiAwOworCWlmIChvZ2FpbiAhPSBuZ2FpbikgeworCQlpZiAoZW11LT5pMmNfY2FwdHVyZV9zb3VyY2UgPT0gc291cmNlX2lkKQorCQkJc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfQVRURU5fQURDTCwgKChuZ2FpbikgJiAweGZmKSApOworCQllbXUtPmkyY19jYXB0dXJlX3ZvbHVtZVtzb3VyY2VfaWRdWzBdID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07CisJCWNoYW5nZSA9IDE7CisJfQorCW9nYWluID0gZW11LT5pMmNfY2FwdHVyZV92b2x1bWVbc291cmNlX2lkXVsxXTsgLyogUmlnaHQgKi8KKwluZ2FpbiA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdOworCWlmIChuZ2FpbiA+IDB4ZmYpCisJCXJldHVybiAwOworCWlmIChvZ2FpbiAhPSBuZ2FpbikgeworCQlpZiAoZW11LT5pMmNfY2FwdHVyZV9zb3VyY2UgPT0gc291cmNlX2lkKQorCQkJc25kX2NhMDEwNl9pMmNfd3JpdGUoZW11LCBBRENfQVRURU5fQURDUiwgKChuZ2FpbikgJiAweGZmKSk7CisJCWVtdS0+aTJjX2NhcHR1cmVfdm9sdW1lW3NvdXJjZV9pZF1bMV0gPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVsxXTsKKwkJY2hhbmdlID0gMTsKKwl9CisKKwlyZXR1cm4gY2hhbmdlOworfQorCiAjZGVmaW5lIENBX1ZPTFVNRSh4bmFtZSxjaGlkLHJlZykgXAogewkJCQkJCQkJXAogCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLCAubmFtZSA9IHhuYW1lLAlcCi0JLmluZm8gPSBzbmRfY2EwMTA2X3ZvbHVtZV9pbmZvLAkJCQlcCi0JLmdldCA9ICAgICAgICAgIHNuZF9jYTAxMDZfdm9sdW1lX2dldCwJCQlcCi0JLnB1dCA9ICAgICAgICAgIHNuZF9jYTAxMDZfdm9sdW1lX3B1dCwJCQlcCisJLmluZm8gPQkgc25kX2NhMDEwNl92b2x1bWVfaW5mbywJCQlcCisJLmdldCA9ICAgc25kX2NhMDEwNl92b2x1bWVfZ2V0LAkJCQlcCisJLnB1dCA9ICAgc25kX2NhMDEwNl92b2x1bWVfcHV0LAkJCQlcCiAJLnByaXZhdGVfdmFsdWUgPSAoKGNoaWQpIDw8IDgpIHwgKHJlZykJCQlcCiB9CiAKKyNkZWZpbmUgSTJDX1ZPTFVNRSh4bmFtZSxjaGlkKSBcCit7CQkJCQkJCQlcCisJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsIC5uYW1lID0geG5hbWUsCVwKKwkuaW5mbyA9ICBzbmRfY2EwMTA2X2kyY192b2x1bWVfaW5mbywJCQlcCisJLmdldCA9ICAgc25kX2NhMDEwNl9pMmNfdm9sdW1lX2dldCwJCQlcCisJLnB1dCA9ICAgc25kX2NhMDEwNl9pMmNfdm9sdW1lX3B1dCwJCQlcCisJLnByaXZhdGVfdmFsdWUgPSBjaGlkCQkJCQlcCit9CisKIAogc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHNuZF9jYTAxMDZfdm9sdW1lX2N0bHNbXSBfX2RldmluaXRkYXRhID0gewogCUNBX1ZPTFVNRSgiQW5hbG9nIEZyb250IFBsYXliYWNrIFZvbHVtZSIsCkBAIC0zNjEsNiArNTA3LDExIEBACiAgICAgICAgIENBX1ZPTFVNRSgiQ0FQVFVSRSBmZWVkYmFjayBQbGF5YmFjayBWb2x1bWUiLAogCQkgIDEsIENBUFRVUkVfQ09OVFJPTCksCiAKKyAgICAgICAgSTJDX1ZPTFVNRSgiUGhvbmUgQ2FwdHVyZSBWb2x1bWUiLCAwKSwKKyAgICAgICAgSTJDX1ZPTFVNRSgiTWljIENhcHR1cmUgVm9sdW1lIiwgMSksCisgICAgICAgIEkyQ19WT0xVTUUoIkxpbmUgaW4gQ2FwdHVyZSBWb2x1bWUiLCAyKSwKKyAgICAgICAgSTJDX1ZPTFVNRSgiQXV4IENhcHR1cmUgVm9sdW1lIiwgMyksCisKIAl7CiAJCS5hY2Nlc3MgPQlTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRCwKIAkJLmlmYWNlID0gICAgICAgIFNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTSwKQEAgLTM3OCwxMiArNTI5LDE5IEBACiAJfSwKIAl7CiAJCS5pZmFjZSA9CVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAotCQkubmFtZSA9CQkiQ2FwdHVyZSBTb3VyY2UiLAorCQkubmFtZSA9CQkiRGlnaXRhbCBDYXB0dXJlIFNvdXJjZSIsCiAJCS5pbmZvID0JCXNuZF9jYTAxMDZfY2FwdHVyZV9zb3VyY2VfaW5mbywKIAkJLmdldCA9CQlzbmRfY2EwMTA2X2NhcHR1cmVfc291cmNlX2dldCwKIAkJLnB1dCA9CQlzbmRfY2EwMTA2X2NhcHR1cmVfc291cmNlX3B1dAogCX0sCiAJeworCQkuaWZhY2UgPQlTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKKwkJLm5hbWUgPQkJIkNhcHR1cmUgU291cmNlIiwKKwkJLmluZm8gPQkJc25kX2NhMDEwNl9pMmNfY2FwdHVyZV9zb3VyY2VfaW5mbywKKwkJLmdldCA9CQlzbmRfY2EwMTA2X2kyY19jYXB0dXJlX3NvdXJjZV9nZXQsCisJCS5wdXQgPQkJc25kX2NhMDEwNl9pMmNfY2FwdHVyZV9zb3VyY2VfcHV0CisJfSwKKwl7CiAJCS5pZmFjZSA9CVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTSwKIAkJLm5hbWUgPSAgICAgICAgIFNORFJWX0NUTF9OQU1FX0lFQzk1OCgiIixQTEFZQkFDSyxERUZBVUxUKSwKIAkJLmNvdW50ID0JNCwKQEAgLTQ3Nyw3ICs2MzUsMTAgQEAKIAkJCXJldHVybiBlcnI7CiAJfQogCWlmIChlbXUtPmRldGFpbHMtPmkyY19hZGMgPT0gMSkgewotCQllcnIgPSBzbmRfY3RsX2FkZChjYXJkLCBzbmRfY3RsX25ldzEoJnNuZF9jYTAxMDZfY2FwdHVyZV9taWNfbGluZV9pbiwgZW11KSk7CisJCWlmIChlbXUtPmRldGFpbHMtPmdwaW9fdHlwZSA9PSAxKQorCQkJZXJyID0gc25kX2N0bF9hZGQoY2FyZCwgc25kX2N0bF9uZXcxKCZzbmRfY2EwMTA2X2NhcHR1cmVfbWljX2xpbmVfaW4sIGVtdSkpOworCQllbHNlICAvKiBncGlvX3R5cGUgPT0gMiAqLworCQkJZXJyID0gc25kX2N0bF9hZGQoY2FyZCwgc25kX2N0bF9uZXcxKCZzbmRfY2EwMTA2X2NhcHR1cmVfbGluZV9pbl9zaWRlX291dCwgZW11KSk7CiAJCWlmIChlcnIgPCAwKQogCQkJcmV0dXJuIGVycjsKIAl9CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9wcm9jLmMgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9wcm9jLmMKaW5kZXggNjM3NTcyNy4uNzVjYTQyMSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfcHJvYy5jCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X3Byb2MuYwpAQCAtNDMxLDMzICs0MzEsMzAgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCQogCWlmKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAiaWVjOTU4IiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDEwMjQsIHNuZF9jYTAxMDZfcHJvY19pZWM5NTgpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2NhMDEwNl9wcm9jX2llYzk1OCk7CiAJaWYoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJjYTAxMDZfcmVnMzIiLCAmZW50cnkpKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCAxMDI0LCBzbmRfY2EwMTA2X3Byb2NfcmVnX3JlYWQzMik7Ci0JCWVudHJ5LT5jLnRleHQud3JpdGVfc2l6ZSA9IDY0OworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2NhMDEwNl9wcm9jX3JlZ19yZWFkMzIpOwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX2NhMDEwNl9wcm9jX3JlZ193cml0ZTMyOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwogCX0KIAlpZighIHNuZF9jYXJkX3Byb2NfbmV3KGVtdS0+Y2FyZCwgImNhMDEwNl9yZWcxNiIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCAxMDI0LCBzbmRfY2EwMTA2X3Byb2NfcmVnX3JlYWQxNik7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfY2EwMTA2X3Byb2NfcmVnX3JlYWQxNik7CiAJaWYoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJjYTAxMDZfcmVnOCIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCAxMDI0LCBzbmRfY2EwMTA2X3Byb2NfcmVnX3JlYWQ4KTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIHNuZF9jYTAxMDZfcHJvY19yZWdfcmVhZDgpOwogCWlmKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAiY2EwMTA2X3JlZ3MxIiwgJmVudHJ5KSkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgMTAyNCwgc25kX2NhMDEwNl9wcm9jX3JlZ19yZWFkMSk7Ci0JCWVudHJ5LT5jLnRleHQud3JpdGVfc2l6ZSA9IDY0OworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2NhMDEwNl9wcm9jX3JlZ19yZWFkMSk7CiAJCWVudHJ5LT5jLnRleHQud3JpdGUgPSBzbmRfY2EwMTA2X3Byb2NfcmVnX3dyaXRlOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwogLy8JCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBlbXU7CiAJfQogCWlmKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAiY2EwMTA2X2kyYyIsICZlbnRyeSkpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDEwMjQsIHNuZF9jYTAxMDZfcHJvY19pMmNfd3JpdGUpOwotCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSA2NDsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIHNuZF9jYTAxMDZfcHJvY19pMmNfd3JpdGUpOwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX2NhMDEwNl9wcm9jX2kyY193cml0ZTsKIAkJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKIC8vCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gZW11OwogCX0KIAlpZighIHNuZF9jYXJkX3Byb2NfbmV3KGVtdS0+Y2FyZCwgImNhMDEwNl9yZWdzMiIsICZlbnRyeSkpIAotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgMTAyNCwgc25kX2NhMDEwNl9wcm9jX3JlZ19yZWFkMik7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfY2EwMTA2X3Byb2NfcmVnX3JlYWQyKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NtaXBjaS5jIGIvc291bmQvcGNpL2NtaXBjaS5jCmluZGV4IGU1Y2UyZGEuLjA5MzhjMTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jbWlwY2kuYworKysgYi9zb3VuZC9wY2kvY21pcGNpLmMKQEAgLTIxMjEsNyArMjEyMSw3IEBACiAJQ01JUENJX01JWEVSX1ZPTF9NT05PKCJNaWMgQ2FwdHVyZSBWb2x1bWUiLCBDTV9SRUdfTUlYRVIyLCBDTV9WQURNSUNfU0hJRlQsIDcpLAogCUNNSVBDSV9TQl9WT0xfTU9OTygiUGhvbmUgUGxheWJhY2sgVm9sdW1lIiwgQ01fUkVHX0VYVEVOVF9JTkQsIDUsIDcpLAogCUNNSVBDSV9ET1VCTEUoIlBob25lIFBsYXliYWNrIFN3aXRjaCIsIENNX1JFR19FWFRFTlRfSU5ELCBDTV9SRUdfRVhURU5UX0lORCwgNCwgNCwgMSwgMCwgMCksCi0JQ01JUENJX0RPVUJMRSgiUEMgU3BlYWtlciBQbGF5bmFjayBTd2l0Y2giLCBDTV9SRUdfRVhURU5UX0lORCwgQ01fUkVHX0VYVEVOVF9JTkQsIDMsIDMsIDEsIDAsIDApLAorCUNNSVBDSV9ET1VCTEUoIlBDIFNwZWFrZXIgUGxheWJhY2sgU3dpdGNoIiwgQ01fUkVHX0VYVEVOVF9JTkQsIENNX1JFR19FWFRFTlRfSU5ELCAzLCAzLCAxLCAwLCAwKSwKIAlDTUlQQ0lfRE9VQkxFKCJNaWMgQm9vc3QgQ2FwdHVyZSBTd2l0Y2giLCBDTV9SRUdfRVhURU5UX0lORCwgQ01fUkVHX0VYVEVOVF9JTkQsIDAsIDAsIDEsIDAsIDApLAogfTsKIApAQCAtMjYwMiw3ICsyNjAyLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY20tPmNhcmQsICJjbWlwY2kiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNtLCAxMDI0LCBzbmRfY21pcGNpX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY20sIHNuZF9jbWlwY2lfcHJvY19yZWFkKTsKIH0KICNlbHNlIC8qICFDT05GSUdfUFJPQ19GUyAqLwogc3RhdGljIGlubGluZSB2b2lkIHNuZF9jbWlwY2lfcHJvY19pbml0KHN0cnVjdCBjbWlwY2kgKmNtKSB7fQpAQCAtMjkzMiw3ICsyOTMyLDcgQEAKIAl9CiAKIAlpbnRlZ3JhdGVkX21pZGkgPSBzbmRfY21pcGNpX3JlYWRfYihjbSwgQ01fUkVHX01QVV9QQ0kpICE9IDB4ZmY7Ci0JaWYgKGludGVncmF0ZWRfbWlkaSkKKwlpZiAoaW50ZWdyYXRlZF9taWRpICYmIG1wdV9wb3J0W2Rldl0gPT0gMSkKIAkJaW9taWRpID0gY20tPmlvYmFzZSArIENNX1JFR19NUFVfUENJOwogCWVsc2UgewogCQlpb21pZGkgPSBtcHVfcG9ydFtkZXZdOwpAQCAtMjk4MSw3ICsyOTgxLDkgQEAKIAogCWlmIChpb21pZGkgPiAwKSB7CiAJCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAwLCBNUFU0MDFfSFdfQ01JUENJLAotCQkJCQkgICAgICAgaW9taWRpLCBpbnRlZ3JhdGVkX21pZGksCisJCQkJCSAgICAgICBpb21pZGksCisJCQkJCSAgICAgICAoaW50ZWdyYXRlZF9taWRpID8KKwkJCQkJCU1QVTQwMV9JTkZPX0lOVEVHUkFURUQgOiAwKSwKIAkJCQkJICAgICAgIGNtLT5pcnEsIDAsICZjbS0+cm1pZGkpKSA8IDApIHsKIAkJCXByaW50ayhLRVJOX0VSUiAiY21pcGNpOiBubyBVQVJUNDAxIGRldmljZSBhdCAweCVseFxuIiwgaW9taWRpKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDI4MS5jIGIvc291bmQvcGNpL2NzNDI4MS5jCmluZGV4IGIzYzk0ZDguLmU3N2E0Y2UgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczQyODEuYworKysgYi9zb3VuZC9wY2kvY3M0MjgxLmMKQEAgLTExODQsNyArMTE4NCw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJjczQyODEiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIDEwMjQsIHNuZF9jczQyODFfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCBzbmRfY3M0MjgxX3Byb2NfcmVhZCk7CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgImNzNDI4MV9CQTAiLCAmZW50cnkpKSB7CiAJCWVudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX0RBVEE7CiAJCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBjaGlwOwpAQCAtMTM3OSw2ICsxMzc5LDEzIEBACiAJY2hpcC0+YmEwX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKIAljaGlwLT5iYTFfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDEpOwogCisJY2hpcC0+YmEwID0gaW9yZW1hcF9ub2NhY2hlKGNoaXAtPmJhMF9hZGRyLCBwY2lfcmVzb3VyY2VfbGVuKHBjaSwgMCkpOworCWNoaXAtPmJhMSA9IGlvcmVtYXBfbm9jYWNoZShjaGlwLT5iYTFfYWRkciwgcGNpX3Jlc291cmNlX2xlbihwY2ksIDEpKTsKKwlpZiAoIWNoaXAtPmJhMCB8fCAhY2hpcC0+YmExKSB7CisJCXNuZF9jczQyODFfZnJlZShjaGlwKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCQogCWlmIChyZXF1ZXN0X2lycShwY2ktPmlycSwgc25kX2NzNDI4MV9pbnRlcnJ1cHQsIFNBX0lOVEVSUlVQVHxTQV9TSElSUSwKIAkJCSJDUzQyODEiLCBjaGlwKSkgewogCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJ1bmFibGUgdG8gZ3JhYiBJUlEgJWRcbiIsIHBjaS0+aXJxKTsKQEAgLTEzODcsMTMgKzEzOTQsNiBAQAogCX0KIAljaGlwLT5pcnEgPSBwY2ktPmlycTsKIAotCWNoaXAtPmJhMCA9IGlvcmVtYXBfbm9jYWNoZShjaGlwLT5iYTBfYWRkciwgcGNpX3Jlc291cmNlX2xlbihwY2ksIDApKTsKLQljaGlwLT5iYTEgPSBpb3JlbWFwX25vY2FjaGUoY2hpcC0+YmExX2FkZHIsIHBjaV9yZXNvdXJjZV9sZW4ocGNpLCAxKSk7Ci0JaWYgKCFjaGlwLT5iYTAgfHwgIWNoaXAtPmJhMSkgewotCQlzbmRfY3M0MjgxX2ZyZWUoY2hpcCk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQkKIAl0bXAgPSBzbmRfY3M0MjgxX2NoaXBfaW5pdChjaGlwKTsKIAlpZiAodG1wKSB7CiAJCXNuZF9jczQyODFfZnJlZShjaGlwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQ2eHgvY3M0Nnh4LmMgYi9zb3VuZC9wY2kvY3M0Nnh4L2NzNDZ4eC5jCmluZGV4IDg0OGQ3NzIuLjc3MmRjNTIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczQ2eHgvY3M0Nnh4LmMKKysrIGIvc291bmQvcGNpL2NzNDZ4eC9jczQ2eHguYwpAQCAtNDgsOCArNDgsOCBAQAogc3RhdGljIGludCBpbmRleFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0lEWDsJLyogSW5kZXggMC1NQVggKi8KIHN0YXRpYyBjaGFyICppZFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX1NUUjsJLyogSUQgZm9yIHRoaXMgY2FyZCAqLwogc3RhdGljIGludCBlbmFibGVbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9FTkFCTEVfUE5QOwkvKiBFbmFibGUgdGhpcyBjYXJkICovCi1zdGF0aWMgaW50IGV4dGVybmFsX2FtcFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9Owotc3RhdGljIGludCB0aGlua3BhZFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9Oworc3RhdGljIGludCBleHRlcm5hbF9hbXBbU05EUlZfQ0FSRFNdOworc3RhdGljIGludCB0aGlua3BhZFtTTkRSVl9DQVJEU107CiBzdGF0aWMgaW50IG1tYXBfdmFsaWRbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAxfTsKIAogbW9kdWxlX3BhcmFtX2FycmF5KGluZGV4LCBpbnQsIE5VTEwsIDA0NDQpOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDZ4eC9jczQ2eHhfbGliLmMgYi9zb3VuZC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuYwppbmRleCA2OWRiZjU0Li41YzIxMTQ0IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuYworKysgYi9zb3VuZC9wY2kvY3M0Nnh4L2NzNDZ4eF9saWIuYwpAQCAtMjg3NywxNCArMjg3NywxNSBAQAogCWlmIChjaGlwLT5yZWdpb24uaWR4WzBdLnJlc291cmNlKQogCQlzbmRfY3M0Nnh4X2h3X3N0b3AoY2hpcCk7CiAKKwlpZiAoY2hpcC0+aXJxID49IDApCisJCWZyZWVfaXJxKGNoaXAtPmlycSwgY2hpcCk7CisKIAlmb3IgKGlkeCA9IDA7IGlkeCA8IDU7IGlkeCsrKSB7CiAJCXN0cnVjdCBzbmRfY3M0Nnh4X3JlZ2lvbiAqcmVnaW9uID0gJmNoaXAtPnJlZ2lvbi5pZHhbaWR4XTsKIAkJaWYgKHJlZ2lvbi0+cmVtYXBfYWRkcikKIAkJCWlvdW5tYXAocmVnaW9uLT5yZW1hcF9hZGRyKTsKIAkJcmVsZWFzZV9hbmRfZnJlZV9yZXNvdXJjZShyZWdpb24tPnJlc291cmNlKTsKIAl9Ci0JaWYgKGNoaXAtPmlycSA+PSAwKQotCQlmcmVlX2lycShjaGlwLT5pcnEsIGNoaXApOwogCiAJaWYgKGNoaXAtPmFjdGl2ZV9jdHJsKQogCQljaGlwLT5hY3RpdmVfY3RybChjaGlwLCAtY2hpcC0+YW1wbGlmaWVyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQ2eHgvZHNwX3Nwb3MuYyBiL3NvdW5kL3BjaS9jczQ2eHgvZHNwX3Nwb3MuYwppbmRleCBmNDA3ZDJhLi41Yzk3MTFjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M0Nnh4L2RzcF9zcG9zLmMKKysrIGIvc291bmQvcGNpL2NzNDZ4eC9kc3Bfc3Bvcy5jCkBAIC03NjcsNyArNzY3LDYgQEAKIAlpZiAoKGVudHJ5ID0gc25kX2luZm9fY3JlYXRlX2NhcmRfZW50cnkoY2FyZCwgImRzcCIsIGNhcmQtPnByb2Nfcm9vdCkpICE9IE5VTEwpIHsKIAkJZW50cnktPmNvbnRlbnQgPSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDsKIAkJZW50cnktPm1vZGUgPSBTX0lGRElSIHwgU19JUlVHTyB8IFNfSVhVR087Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gNTEyOwogICAgICAgCiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKQEAgLTc4NCw3ICs3ODMsNiBAQAogCQllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwogCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gY2hpcDsKIAkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdVU1I7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gNTEyOwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBjczQ2eHhfZHNwX3Byb2Nfc3ltYm9sX3RhYmxlX3JlYWQ7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKQEAgLTc5Nyw3ICs3OTUsNiBAQAogCQllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwogCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gY2hpcDsKIAkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdVU1I7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gNTEyOwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBjczQ2eHhfZHNwX3Byb2NfbW9kdWxlc19yZWFkOwogCQlpZiAoc25kX2luZm9fcmVnaXN0ZXIoZW50cnkpIDwgMCkgewogCQkJc25kX2luZm9fZnJlZV9lbnRyeShlbnRyeSk7CkBAIC04MTAsNyArODA3LDYgQEAKIAkJZW50cnktPmNvbnRlbnQgPSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDsKIAkJZW50cnktPnByaXZhdGVfZGF0YSA9IGNoaXA7CiAJCWVudHJ5LT5tb2RlID0gU19JRlJFRyB8IFNfSVJVR08gfCBTX0lXVVNSOwotCQllbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IDUxMjsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gY3M0Nnh4X2RzcF9wcm9jX3BhcmFtZXRlcl9kdW1wX3JlYWQ7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKQEAgLTgyMyw3ICs4MTksNiBAQAogCQllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwogCQllbnRyeS0+cHJpdmF0ZV9kYXRhID0gY2hpcDsKIAkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdVU1I7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gNTEyOwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBjczQ2eHhfZHNwX3Byb2Nfc2FtcGxlX2R1bXBfcmVhZDsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpAQCAtODM2LDcgKzgzMSw2IEBACiAJCWVudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX1RFWFQ7CiAJCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBjaGlwOwogCQllbnRyeS0+bW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPIHwgU19JV1VTUjsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSA1MTI7CiAJCWVudHJ5LT5jLnRleHQucmVhZCA9IGNzNDZ4eF9kc3BfcHJvY190YXNrX3RyZWVfcmVhZDsKIAkJaWYgKHNuZF9pbmZvX3JlZ2lzdGVyKGVudHJ5KSA8IDApIHsKIAkJCXNuZF9pbmZvX2ZyZWVfZW50cnkoZW50cnkpOwpAQCAtODQ5LDcgKzg0Myw2IEBACiAJCWVudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX1RFWFQ7CiAJCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBjaGlwOwogCQllbnRyeS0+bW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPIHwgU19JV1VTUjsKLQkJZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAxMDI0OwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBjczQ2eHhfZHNwX3Byb2Nfc2NiX3JlYWQ7CiAJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CiAJCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQ2eHgvZHNwX3Nwb3Nfc2NiX2xpYi5jIGIvc291bmQvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMKaW5kZXggMmM0ZWU0NS4uMzg0NGQxOCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMKKysrIGIvc291bmQvcGNpL2NzNDZ4eC9kc3Bfc3Bvc19zY2JfbGliLmMKQEAgLTI2Nyw3ICsyNjcsNiBAQAogCQkJZW50cnktPnByaXZhdGVfZGF0YSA9IHNjYl9pbmZvOwogCQkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyB8IFNfSVdVU1I7CiAgICAgICAKLQkJCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gNTEyOwogCQkJZW50cnktPmMudGV4dC5yZWFkID0gY3M0Nnh4X2RzcF9wcm9jX3NjYl9pbmZvX3JlYWQ7CiAgICAgICAKIAkJCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vTWFrZWZpbGUgYi9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vTWFrZWZpbGUKaW5kZXggMDhkOGVlNi4uMjkxMWE4YSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NzNTUzNWF1ZGlvL01ha2VmaWxlCisrKyBiL3NvdW5kL3BjaS9jczU1MzVhdWRpby9NYWtlZmlsZQpAQCAtNCw1ICs0LDkgQEAKIAogc25kLWNzNTUzNWF1ZGlvLW9ianMgOj0gY3M1NTM1YXVkaW8ubyBjczU1MzVhdWRpb19wY20ubwogCitpZmRlZiBDT05GSUdfUE0KK3NuZC1jczU1MzVhdWRpby1vYmpzICs9IGNzNTUzNWF1ZGlvX3BtLm8KK2VuZGlmCisKICMgVG9wbGV2ZWwgTW9kdWxlIERlcGVuZGVuY3kKIG9iai0kKENPTkZJR19TTkRfQ1M1NTM1QVVESU8pICs9IHNuZC1jczU1MzVhdWRpby5vCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW8uYyBiL3NvdW5kL3BjaS9jczU1MzVhdWRpby9jczU1MzVhdWRpby5jCmluZGV4IDJjMTIxM2EuLjkxYzE4YTEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczU1MzVhdWRpby9jczU1MzVhdWRpby5jCisrKyBiL3NvdW5kL3BjaS9jczU1MzVhdWRpby9jczU1MzVhdWRpby5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIERyaXZlciBmb3IgYXVkaW8gb24gbXVsdGlmdW5jdGlvbiBDUzU1MzUgY29tcGFuaW9uIGRldmljZQorICogRHJpdmVyIGZvciBhdWRpbyBvbiBtdWx0aWZ1bmN0aW9uIENTNTUzNS82IGNvbXBhbmlvbiBkZXZpY2UKICAqIENvcHlyaWdodCAoQykgSmF5YSBLdW1hcgogICoKICAqIEJhc2VkIG9uIEphcm9zbGF2IEt5c2VsYSBhbmQgVGFrYXNoaSBJd2FpJ3MgZXhhbXBsZXMuCkBAIC00MCwxNiArNDAsMzYgQEAKIAogI2RlZmluZSBEUklWRVJfTkFNRSAiY3M1NTM1YXVkaW8iCiAKK3N0YXRpYyBjaGFyICphYzk3X3F1aXJrOworbW9kdWxlX3BhcmFtKGFjOTdfcXVpcmssIGNoYXJwLCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoYWM5N19xdWlyaywgIkFDJzk3IGJvYXJkIHNwZWNpZmljIHdvcmthcm91bmRzLiIpOworCitzdGF0aWMgc3RydWN0IGFjOTdfcXVpcmsgYWM5N19xdWlya3NbXSBfX2RldmluaXRkYXRhID0geworI2lmIDAgLyogTm90IHlldCBjb25maXJtZWQgaWYgYWxsIDU1MzYgYm9hcmRzIGFyZSBIUCBvbmx5ICovCisJeworCQkuc3VidmVuZG9yID0gUENJX1ZFTkRPUl9JRF9BTUQsIAorCQkuc3ViZGV2aWNlID0gUENJX0RFVklDRV9JRF9BTURfQ1M1NTM2X0FVRElPLCAKKwkJLm5hbWUgPSAiQU1EIFJESyIsICAgICAKKwkJLnR5cGUgPSBBQzk3X1RVTkVfSFBfT05MWQorCX0sCisjZW5kaWYKKwl7fQorfTsKIAogc3RhdGljIGludCBpbmRleFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0lEWDsKIHN0YXRpYyBjaGFyICppZFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX1NUUjsKIHN0YXRpYyBpbnQgZW5hYmxlW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfRU5BQkxFX1BOUDsKIAorbW9kdWxlX3BhcmFtX2FycmF5KGluZGV4LCBpbnQsIE5VTEwsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciAiIERSSVZFUl9OQU1FKTsKK21vZHVsZV9wYXJhbV9hcnJheShpZCwgY2hhcnAsIE5VTEwsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhpZCwgIklEIHN0cmluZyBmb3IgIiBEUklWRVJfTkFNRSk7Cittb2R1bGVfcGFyYW1fYXJyYXkoZW5hYmxlLCBib29sLCBOVUxMLCAwNDQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZW5hYmxlLCAiRW5hYmxlICIgRFJJVkVSX05BTUUpOworCiBzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgc25kX2NzNTUzNWF1ZGlvX2lkc1tdIF9fZGV2aW5pdGRhdGEgPSB7Ci0JeyBQQ0lfVkVORE9SX0lEX05TLCBQQ0lfREVWSUNFX0lEX05TX0NTNTUzNV9BVURJTywKLQkgIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDAsIH0sCi0JeyBQQ0lfVkVORE9SX0lEX0FNRCwgUENJX0RFVklDRV9JRF9BTURfQ1M1NTM2X0FVRElPLAotCSAgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMCwgfSwKKwl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9OUywgUENJX0RFVklDRV9JRF9OU19DUzU1MzVfQVVESU8pIH0sCisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQU1ELCBQQ0lfREVWSUNFX0lEX0FNRF9DUzU1MzZfQVVESU8pIH0sCiAJe30KIH07CiAKQEAgLTkwLDcgKzExMCw4IEBACiAJCXVkZWxheSgxKTsKIAl9IHdoaWxlICgtLXRpbWVvdXQpOwogCWlmICghdGltZW91dCkKLQkJc25kX3ByaW50ayhLRVJOX0VSUiAiRmFpbHVyZSByZWFkaW5nIGNzNTUzNSBjb2RlY1xuIik7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgIkZhaWx1cmUgcmVhZGluZyBjb2RlYyByZWcgMHgleCwiCisJCQkJCSJMYXN0IHZhbHVlPTB4JXhcbiIsIHJlZywgdmFsKTsKIAogCXJldHVybiAodW5zaWduZWQgc2hvcnQpIHZhbDsKIH0KQEAgLTE0OCw2ICsxNjksOCBAQAogCQlyZXR1cm4gZXJyOwogCX0KIAorCXNuZF9hYzk3X3R1bmVfaGFyZHdhcmUoY3M1NTM1YXUtPmFjOTcsIGFjOTdfcXVpcmtzLCBhYzk3X3F1aXJrKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0zNDcsNiArMzcwLDggQEAKIAlpZiAoKGVyciA9IHNuZF9jczU1MzVhdWRpb19jcmVhdGUoY2FyZCwgcGNpLCAmY3M1NTM1YXUpKSA8IDApCiAJCWdvdG8gcHJvYmVmYWlsX291dDsKIAorCWNhcmQtPnByaXZhdGVfZGF0YSA9IGNzNTUzNWF1OworCiAJaWYgKChlcnIgPSBzbmRfY3M1NTM1YXVkaW9fbWl4ZXIoY3M1NTM1YXUpKSA8IDApCiAJCWdvdG8gcHJvYmVmYWlsX291dDsKIApAQCAtMzgzLDYgKzQwOCwxMCBAQAogCS5pZF90YWJsZSA9IHNuZF9jczU1MzVhdWRpb19pZHMsCiAJLnByb2JlID0gc25kX2NzNTUzNWF1ZGlvX3Byb2JlLAogCS5yZW1vdmUgPSBfX2RldmV4aXRfcChzbmRfY3M1NTM1YXVkaW9fcmVtb3ZlKSwKKyNpZmRlZiBDT05GSUdfUE0KKwkuc3VzcGVuZCA9IHNuZF9jczU1MzVhdWRpb19zdXNwZW5kLAorCS5yZXN1bWUgPSBzbmRfY3M1NTM1YXVkaW9fcmVzdW1lLAorI2VuZGlmCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBhbHNhX2NhcmRfY3M1NTM1YXVkaW9faW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzNWF1ZGlvL2NzNTUzNWF1ZGlvLmggYi9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW8uaAppbmRleCA1ZTU1YTFhLi40ZmQxZjMxIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW8uaAorKysgYi9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW8uaApAQCAtNzQsNiArNzQsOCBAQAogI2RlZmluZSBQUk1fUkRZX1NUUwkJCTB4MDA4MDAwMDAKICNkZWZpbmUgQUNDX0NPREVDX0NOVExfV1JfQ01ECQkofjB4ODAwMDAwMDApCiAjZGVmaW5lIEFDQ19DT0RFQ19DTlRMX1JEX0NNRAkJMHg4MDAwMDAwMAorI2RlZmluZSBBQ0NfQ09ERUNfQ05UTF9MTktfU0hVVERPV04JMHgwMDA0MDAwMAorI2RlZmluZSBBQ0NfQ09ERUNfQ05UTF9MTktfV1JNX1JTVAkweDAwMDIwMDAwCiAjZGVmaW5lIFBSRF9KTVAJCQkJMHgyMDAwCiAjZGVmaW5lIFBSRF9FT1AJCQkJMHg0MDAwCiAjZGVmaW5lIFBSRF9FT1QJCQkJMHg4MDAwCkBAIC04OCw2ICs5MCw3IEBACiAJdm9pZCAoKmRpc2FibGVfZG1hKShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1KTsKIAl2b2lkICgqcGF1c2VfZG1hKShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1KTsKIAl2b2lkICgqc2V0dXBfcHJkKShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1LCB1MzIgcHJkX2FkZHIpOworCXUzMiAoKnJlYWRfcHJkKShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1KTsKIAl1MzIgKCpyZWFkX2RtYV9wbnRyKShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1KTsKIH07CiAKQEAgLTEwMywxMSArMTA2LDE0IEBACiAJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CiAJdW5zaWduZWQgaW50IGJ1Zl9hZGRyLCBidWZfYnl0ZXM7CiAJdW5zaWduZWQgaW50IHBlcmlvZF9ieXRlcywgcGVyaW9kczsKKwlpbnQgc3VzcGVuZGVkOworCXUzMiBzYXZlZF9wcmQ7CiB9OwogCiBzdHJ1Y3QgY3M1NTM1YXVkaW8gewogCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKIAlzdHJ1Y3Qgc25kX2FjOTcgKmFjOTc7CisJc3RydWN0IHNuZF9wY20gKnBjbTsKIAlpbnQgaXJxOwogCXN0cnVjdCBwY2lfZGV2ICpwY2k7CiAJdW5zaWduZWQgbG9uZyBwb3J0OwpAQCAtMTE3LDYgKzEyMyw4IEBACiAJc3RydWN0IGNzNTUzNWF1ZGlvX2RtYSBkbWFzW05VTV9DUzU1MzVBVURJT19ETUFTXTsKIH07CiAKK2ludCBzbmRfY3M1NTM1YXVkaW9fc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGNpLCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworaW50IHNuZF9jczU1MzVhdWRpb19yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBjaSk7CiBpbnQgX19kZXZpbml0IHNuZF9jczU1MzVhdWRpb19wY20oc3RydWN0IGNzNTUzNWF1ZGlvICpjczU1MzVhdWRpbyk7CiAKICNlbmRpZiAvKiBfX1NPVU5EX0NTNTUzNUFVRElPX0ggKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczU1MzVhdWRpby9jczU1MzVhdWRpb19wY20uYyBiL3NvdW5kL3BjaS9jczU1MzVhdWRpby9jczU1MzVhdWRpb19wY20uYwppbmRleCA2MGJiODJiLi5mMGE0ODY5IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW9fcGNtLmMKKysrIGIvc291bmQvcGNpL2NzNTUzNWF1ZGlvL2NzNTUzNWF1ZGlvX3BjbS5jCkBAIC00Myw3ICs0Myw4IEBACiAJCSAJCVNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSIHwKIAkJIAkJU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRCB8CiAJCSAJCVNORFJWX1BDTV9JTkZPX1BBVVNFIHwKLQkJCQlTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUCisJCQkJU05EUlZfUENNX0lORk9fU1lOQ19TVEFSVCB8CisJCQkJU05EUlZfUENNX0lORk9fUkVTVU1FCiAJCQkJKSwKIAkuZm9ybWF0cyA9CQkoCiAJCQkJU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUKQEAgLTE5Myw2ICsxOTQsMTEgQEAKIAljc193cml0ZWwoY3M1NTM1YXUsIEFDQ19CTTBfUFJELCBwcmRfYWRkcik7CiB9CiAKK3N0YXRpYyB1MzIgY3M1NTM1YXVkaW9fcGxheWJhY2tfcmVhZF9wcmQoc3RydWN0IGNzNTUzNWF1ZGlvICpjczU1MzVhdSkKK3sKKwlyZXR1cm4gY3NfcmVhZGwoY3M1NTM1YXUsIEFDQ19CTTBfUFJEKTsKK30KKwogc3RhdGljIHUzMiBjczU1MzVhdWRpb19wbGF5YmFja19yZWFkX2RtYV9wbnRyKHN0cnVjdCBjczU1MzVhdWRpbyAqY3M1NTM1YXUpCiB7CiAJcmV0dXJuIGNzX3JlYWRsKGNzNTUzNWF1LCBBQ0NfQk0wX1BOVFIpOwpAQCAtMjE5LDYgKzIyNSwxMSBAQAogCWNzX3dyaXRlbChjczU1MzVhdSwgQUNDX0JNMV9QUkQsIHByZF9hZGRyKTsKIH0KIAorc3RhdGljIHUzMiBjczU1MzVhdWRpb19jYXB0dXJlX3JlYWRfcHJkKHN0cnVjdCBjczU1MzVhdWRpbyAqY3M1NTM1YXUpCit7CisJcmV0dXJuIGNzX3JlYWRsKGNzNTUzNWF1LCBBQ0NfQk0xX1BSRCk7Cit9CisKIHN0YXRpYyB1MzIgY3M1NTM1YXVkaW9fY2FwdHVyZV9yZWFkX2RtYV9wbnRyKHN0cnVjdCBjczU1MzVhdWRpbyAqY3M1NTM1YXUpCiB7CiAJcmV0dXJuIGNzX3JlYWRsKGNzNTUzNWF1LCBBQ0NfQk0xX1BOVFIpOwpAQCAtMjg1LDkgKzI5NiwxNyBAQAogCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6CiAJCWRtYS0+b3BzLT5lbmFibGVfZG1hKGNzNTUzNWF1KTsKIAkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6CisJCWRtYS0+b3BzLT5lbmFibGVfZG1hKGNzNTUzNWF1KTsKKwkJZG1hLT5zdXNwZW5kZWQgPSAwOworCQlicmVhazsKIAljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CiAJCWRtYS0+b3BzLT5kaXNhYmxlX2RtYShjczU1MzVhdSk7CiAJCWJyZWFrOworCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1VTUEVORDoKKwkJZG1hLT5vcHMtPmRpc2FibGVfZG1hKGNzNTUzNWF1KTsKKwkJZG1hLT5zdXNwZW5kZWQgPSAxOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJ1bmhhbmRsZWQgdHJpZ2dlclxuIik7CiAJCWVyciA9IC1FSU5WQUw7CkBAIC0zNzUsNiArMzk0LDcgQEAKICAgICAgICAgLmVuYWJsZV9kbWEgPSBjczU1MzVhdWRpb19wbGF5YmFja19lbmFibGVfZG1hLAogICAgICAgICAuZGlzYWJsZV9kbWEgPSBjczU1MzVhdWRpb19wbGF5YmFja19kaXNhYmxlX2RtYSwKICAgICAgICAgLnNldHVwX3ByZCA9IGNzNTUzNWF1ZGlvX3BsYXliYWNrX3NldHVwX3ByZCwKKyAgICAgICAgLnJlYWRfcHJkID0gY3M1NTM1YXVkaW9fcGxheWJhY2tfcmVhZF9wcmQsCiAgICAgICAgIC5wYXVzZV9kbWEgPSBjczU1MzVhdWRpb19wbGF5YmFja19wYXVzZV9kbWEsCiAgICAgICAgIC5yZWFkX2RtYV9wbnRyID0gY3M1NTM1YXVkaW9fcGxheWJhY2tfcmVhZF9kbWFfcG50ciwKIH07CkBAIC0zODQsNiArNDA0LDcgQEAKICAgICAgICAgLmVuYWJsZV9kbWEgPSBjczU1MzVhdWRpb19jYXB0dXJlX2VuYWJsZV9kbWEsCiAgICAgICAgIC5kaXNhYmxlX2RtYSA9IGNzNTUzNWF1ZGlvX2NhcHR1cmVfZGlzYWJsZV9kbWEsCiAgICAgICAgIC5zZXR1cF9wcmQgPSBjczU1MzVhdWRpb19jYXB0dXJlX3NldHVwX3ByZCwKKyAgICAgICAgLnJlYWRfcHJkID0gY3M1NTM1YXVkaW9fY2FwdHVyZV9yZWFkX3ByZCwKICAgICAgICAgLnBhdXNlX2RtYSA9IGNzNTUzNWF1ZGlvX2NhcHR1cmVfcGF1c2VfZG1hLAogICAgICAgICAucmVhZF9kbWFfcG50ciA9IGNzNTUzNWF1ZGlvX2NhcHR1cmVfcmVhZF9kbWFfcG50ciwKIH07CkBAIC00MTMsNiArNDM0LDcgQEAKIAlzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlc19mb3JfYWxsKHBjbSwgU05EUlZfRE1BX1RZUEVfREVWLAogCQkJCQlzbmRfZG1hX3BjaV9kYXRhKGNzNTUzNWF1LT5wY2kpLAogCQkJCQk2NCoxMDI0LCAxMjgqMTAyNCk7CisJY3M1NTM1YXUtPnBjbSA9IHBjbTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzNWF1ZGlvL2NzNTUzNWF1ZGlvX3BtLmMgYi9zb3VuZC9wY2kvY3M1NTM1YXVkaW8vY3M1NTM1YXVkaW9fcG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWQwZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvcGNpL2NzNTUzNWF1ZGlvL2NzNTUzNWF1ZGlvX3BtLmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBQb3dlciBtYW5hZ2VtZW50IGZvciBhdWRpbyBvbiBtdWx0aWZ1bmN0aW9uIENTNTUzNSBjb21wYW5pb24gZGV2aWNlCisgKiBDb3B5cmlnaHQgKEMpIEpheWEgS3VtYXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxzb3VuZC9kcml2ZXIuaD4KKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8c291bmQvY29udHJvbC5oPgorI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwuaD4KKyNpbmNsdWRlIDxzb3VuZC9hc291bmRlZi5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorI2luY2x1ZGUgPHNvdW5kL2FjOTdfY29kZWMuaD4KKyNpbmNsdWRlICJjczU1MzVhdWRpby5oIgorCitzdGF0aWMgdm9pZCBzbmRfY3M1NTM1YXVkaW9fc3RvcF9oYXJkd2FyZShzdHJ1Y3QgY3M1NTM1YXVkaW8gKmNzNTUzNWF1KQoreworCS8qIAorCXdlIGRlcGVuZCBvbiBzbmRfYWM5N19zdXNwZW5kIHRvIHRlbGwgdGhlCisJQUM5NyBjb2RlYyB0byBzaHV0ZG93bi4gdGhlIGFtZCBzcGVjIHN1Z2dlc3RzCisJdGhhdCB0aGUgTE5LX1NIVVRET1dOIGJlIGRvbmUgYXQgdGhlIHNhbWUgdGltZQorCXRoYXQgdGhlIGNvZGVjIHBvd2VyLWRvd24gaXMgaXNzdWVkLiBpbnN0ZWFkLAorCXdlIGRvIGl0IGp1c3QgYWZ0ZXIgcmF0aGVyIHRoYW4gYXQgdGhlIHNhbWUgCisJdGltZS4gZXhjbHVkaW5nIGNvZGVjIHNwZWNpZmljIGJ1aWxkX29wcy0+c3VzcGVuZAorCWFjOTcgcG93ZXJkb3duIGhpdHM6CisJMHg4MDAwIEVBUEQgCisJMHg0MDAwIEhlYWRwaG9uZSBhbXBsaWZpZXIgCisJMHgwMzAwIEFEQyAmIERBQyAKKwkweDA0MDAgQW5hbG9nIE1peGVyIHBvd2VyZG93biAoVnJlZiBvbikgCisJSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGlzIHRoZSBiZXN0IHRoYXQgd2UgY2FuIGRvLgorCVRoZSByZW1haW5kZXIgdG8gYmUgaW52ZXN0aWdhdGVkIGFyZToKKwktIGFuYWxvZyBtaXhlciAodnJlZiBvZmYpIDB4MDgwMAorCS0gQUMtbGluayBwb3dlcmRvd24gMHgxMDAwCisJLSBjb2RlYyBpbnRlcm5hbCBjbG9jayAweDIwMDAKKwkqLworCisJLyogc2V0IExOS19TSFVURE9XTiB0byBzaHV0ZG93biBBQyBsaW5rICovCisJY3Nfd3JpdGVsKGNzNTUzNWF1LCBBQ0NfQ09ERUNfQ05UTCwgQUNDX0NPREVDX0NOVExfTE5LX1NIVVRET1dOKTsKKworfQorCitpbnQgc25kX2NzNTUzNWF1ZGlvX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBjaSwgcG1fbWVzc2FnZV90IHN0YXRlKQoreworCXN0cnVjdCBzbmRfY2FyZCAqY2FyZCA9IHBjaV9nZXRfZHJ2ZGF0YShwY2kpOworCXN0cnVjdCBjczU1MzVhdWRpbyAqY3M1NTM1YXUgPSBjYXJkLT5wcml2YXRlX2RhdGE7CisJaW50IGk7CisKKwlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGNhcmQsIFNORFJWX0NUTF9QT1dFUl9EM2hvdCk7CisJZm9yIChpID0gMDsgaSA8IE5VTV9DUzU1MzVBVURJT19ETUFTOyBpKyspIHsKKwkJc3RydWN0IGNzNTUzNWF1ZGlvX2RtYSAqZG1hID0gJmNzNTUzNWF1LT5kbWFzW2ldOworCQlpZiAoZG1hICYmIGRtYS0+c3Vic3RyZWFtICYmICFkbWEtPnN1c3BlbmRlZCkgCisJCQlkbWEtPnNhdmVkX3ByZCA9IGRtYS0+b3BzLT5yZWFkX3ByZChjczU1MzVhdSk7CisJfQorCXNuZF9wY21fc3VzcGVuZF9hbGwoY3M1NTM1YXUtPnBjbSk7CisJc25kX2FjOTdfc3VzcGVuZChjczU1MzVhdS0+YWM5Nyk7CisJLyogc2F2ZSBpbXBvcnRhbnQgcmVncywgdGhlbiBkaXNhYmxlIGFjbGluayBpbiBodyAqLworCXNuZF9jczU1MzVhdWRpb19zdG9wX2hhcmR3YXJlKGNzNTUzNWF1KTsKKwlwY2lfZGlzYWJsZV9kZXZpY2UocGNpKTsKKwlwY2lfc2F2ZV9zdGF0ZShwY2kpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBzbmRfY3M1NTM1YXVkaW9fcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwY2kpCit7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7CisJc3RydWN0IGNzNTUzNWF1ZGlvICpjczU1MzVhdSA9IGNhcmQtPnByaXZhdGVfZGF0YTsKKwl1MzIgdG1wOworCWludCB0aW1lb3V0OworCWludCBpOworCisJcGNpX3Jlc3RvcmVfc3RhdGUocGNpKTsKKwlwY2lfZW5hYmxlX2RldmljZShwY2kpOworCXBjaV9zZXRfbWFzdGVyKHBjaSk7CisKKwkvKiBzZXQgTE5LX1dSTV9SU1QgdG8gcmVzZXQgQUMgbGluayAqLworCWNzX3dyaXRlbChjczU1MzVhdSwgQUNDX0NPREVDX0NOVEwsIEFDQ19DT0RFQ19DTlRMX0xOS19XUk1fUlNUKTsKKworCXRpbWVvdXQgPSA1MDsKKwlkbyB7CisJCXRtcCA9IGNzX3JlYWRsKGNzNTUzNWF1LCBBQ0NfQ09ERUNfU1RBVFVTKTsKKwkJaWYgKHRtcCAmIFBSTV9SRFlfU1RTKQorCQkJYnJlYWs7CisJCXVkZWxheSgxKTsKKwl9IHdoaWxlICgtLXRpbWVvdXQpOworCisJaWYgKCF0aW1lb3V0KQorCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJGYWlsdXJlIGdldHRpbmcgQUMgTGluayByZWFkeVxuIik7CisKKwkvKiB3ZSBkZXBlbmQgb24gYWM5NyB0byBwZXJmb3JtIHRoZSBjb2RlYyBwb3dlciB1cCAqLworCXNuZF9hYzk3X3Jlc3VtZShjczU1MzVhdS0+YWM5Nyk7CisJLyogc2V0IHVwIHJhdGUgcmVncywgZG1hLiBhY3R1YWwgaW5pdGlhdGlvbiBpcyBkb25lIGluIHRyaWcgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlVNX0NTNTUzNUFVRElPX0RNQVM7IGkrKykgeworCQlzdHJ1Y3QgY3M1NTM1YXVkaW9fZG1hICpkbWEgPSAmY3M1NTM1YXUtPmRtYXNbaV07CisJCWlmIChkbWEgJiYgZG1hLT5zdWJzdHJlYW0gJiYgZG1hLT5zdXNwZW5kZWQpIHsKKwkJCWRtYS0+c3Vic3RyZWFtLT5vcHMtPnByZXBhcmUoZG1hLT5zdWJzdHJlYW0pOworCQkJZG1hLT5vcHMtPnNldHVwX3ByZChjczU1MzVhdSwgZG1hLT5zYXZlZF9wcmQpOworCQl9CisJfQorCQkKKwlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGNhcmQsIFNORFJWX0NUTF9QT1dFUl9EMCk7CisKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvZW11MTBrMS5jIGIvc291bmQvcGNpL2VtdTEwazEvZW11MTBrMS5jCmluZGV4IDQyYjExYmEuLjU0OTY3M2UgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL2VtdTEwazEuYworKysgYi9zb3VuZC9wY2kvZW11MTBrMS9lbXUxMGsxLmMKQEAgLTQ2LDEzICs0NiwxMyBAQAogc3RhdGljIGludCBpbmRleFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0lEWDsJLyogSW5kZXggMC1NQVggKi8KIHN0YXRpYyBjaGFyICppZFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX1NUUjsJLyogSUQgZm9yIHRoaXMgY2FyZCAqLwogc3RhdGljIGludCBlbmFibGVbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9FTkFCTEVfUE5QOwkvKiBFbmFibGUgdGhpcyBjYXJkICovCi1zdGF0aWMgaW50IGV4dGluW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMH07Ci1zdGF0aWMgaW50IGV4dG91dFtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9Oworc3RhdGljIGludCBleHRpbltTTkRSVl9DQVJEU107CitzdGF0aWMgaW50IGV4dG91dFtTTkRSVl9DQVJEU107CiBzdGF0aWMgaW50IHNlcV9wb3J0c1tTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDR9Owogc3RhdGljIGludCBtYXhfc3ludGhfdm9pY2VzW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gNjR9Owogc3RhdGljIGludCBtYXhfYnVmZmVyX3NpemVbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAxMjh9Owotc3RhdGljIGludCBlbmFibGVfaXJbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAwfTsKLXN0YXRpYyB1aW50IHN1YnN5c3RlbVtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9OyAvKiBGb3JjZSBjYXJkIHN1YnN5c3RlbSBtb2RlbCAqLworc3RhdGljIGludCBlbmFibGVfaXJbU05EUlZfQ0FSRFNdOworc3RhdGljIHVpbnQgc3Vic3lzdGVtW1NORFJWX0NBUkRTXTsgLyogRm9yY2UgY2FyZCBzdWJzeXN0ZW0gbW9kZWwgKi8KIAogbW9kdWxlX3BhcmFtX2FycmF5KGluZGV4LCBpbnQsIE5VTEwsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciB0aGUgRU1VMTBLMSBzb3VuZGNhcmQuIik7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW11MTBrMS9lbXUxMGsxX21haW4uYyBiL3NvdW5kL3BjaS9lbXUxMGsxL2VtdTEwazFfbWFpbi5jCmluZGV4IDZiZmEwODQuLjQyYTM1OGYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL2VtdTEwazFfbWFpbi5jCisrKyBiL3NvdW5kL3BjaS9lbXUxMGsxL2VtdTEwazFfbWFpbi5jCkBAIC03NzcsMTQgKzc3Nyw2IEBACiAKIHN0YXRpYyBzdHJ1Y3Qgc25kX2VtdV9jaGlwX2RldGFpbHMgZW11X2NoaXBfZGV0YWlsc1tdID0gewogCS8qIEF1ZGlneSAyIFZhbHVlIEFDMyBvdXQgZG9lcyBub3Qgd29yayB5ZXQuIE5lZWQgdG8gZmluZCBvdXQgaG93IHRvIHR1cm4gb2ZmIGludGVycG9sYXRvcnMuKi8KLQkvKiBBdWRpZ3k0IFNCMDQwMCAqLwotCXsudmVuZG9yID0gMHgxMTAyLCAuZGV2aWNlID0gMHgwMDA4LCAuc3Vic3lzdGVtID0gMHgxMDIxMTEwMiwKLQkgLmRyaXZlciA9ICJBdWRpZ3kyIiwgLm5hbWUgPSAiQXVkaWd5IDQgW1NCMDQwMF0iLCAKLQkgLmlkID0gIkF1ZGlneTIiLAotCSAuZW11MTBrMl9jaGlwID0gMSwKLQkgLmNhMDEwOF9jaGlwID0gMSwKLQkgLnNwazcxID0gMSwKLQkgLmFjOTdfY2hpcCA9IDF9ICwKIAkvKiBUZXN0ZWQgYnkgSmFtZXNAc3VwZXJidWcuY28udWsgM3JkIEp1bHkgMjAwNSAqLwogCS8qIERTUDogQ0EwMTA4LUlBVAogCSAqIERBQzogQ1M0MzgyLUtRCkBAIC03OTksMTMgKzc5MSw1OSBAQAogCSAuY2EwMTA4X2NoaXAgPSAxLAogCSAuc3BrNzEgPSAxLAogCSAuYWM5N19jaGlwID0gMX0gLAorCS8qIEF1ZGlneTQgKE5vdCBQUk8pIFNCMDYxMCAqLworCS8qIFRlc3RlZCBieSBKYW1lc0BzdXBlcmJ1Zy5jby51ayA0dGggQXByaWwgMjAwNiAqLworCS8qIEFfSU9DRkcgYml0cworCSAqIE91dHB1dAorCSAqIDA6ID8KKwkgKiAxOiA/CisJICogMjogPworCSAqIDM6IDAgLSBEaWdpdGFsIE91dCwgMSAtIExpbmUgaW4KKwkgKiA0OiA/CisJICogNTogPworCSAqIDY6ID8KKwkgKiA3OiA/CisJICogSW5wdXQKKwkgKiA4OiA/CisJICogOTogPworCSAqIEE6IEdyZWVuIGphY2sgc2Vuc2UgKEZyb250KQorCSAqIEI6ID8KKwkgKiBDOiBCbGFjayBqYWNrIHNlbnNlIChSZWFyL1NpZGUgUmlnaHQpCisJICogRDogWWVsbG93IGphY2sgc2Vuc2UgKENlbnRlci9MRkUvU2lkZSBMZWZ0KQorCSAqIEU6ID8KKwkgKiBGOiA/CisJICoKKwkgKiBEaWdpdGFsIE91dC9MaW5lIGluIHN3aXRjaCB1c2luZyBBX0lPQ0ZHIGJpdCAzICgweDA4KQorCSAqIDAgLSBEaWdpdGFsIE91dAorCSAqIDEgLSBMaW5lIGluCisJICovCisJLyogTWljIGlucHV0IG5vdCB0ZXN0ZWQuCisJICogQW5hbG9nIENEIGlucHV0IG5vdCB0ZXN0ZWQKKwkgKiBEaWdpdGFsIE91dCBub3QgdGVzdGVkLgorCSAqIExpbmUgaW4gd29ya2luZy4KKwkgKiBBdWRpbyBvdXRwdXQgNS4xIHdvcmtpbmcuIFNpZGUgb3V0cHV0cyBub3Qgd29ya2luZy4KKwkgKi8KKwkvKiBEU1A6IENBMTAzMDAtSUFUIExGCisJICogREFDOiBDaXJydXMgTG9naWMgQ1M0MzgyLUtRWgorCSAqIEFEQzogUGhpbGlwcyAxMzYxVAorCSAqIEFDOTc6IFNpZ21hdGVsIFNUQUM5NzUwCisJICogQ0EwMTUxOiBOb25lCisJICovCisJey52ZW5kb3IgPSAweDExMDIsIC5kZXZpY2UgPSAweDAwMDgsIC5zdWJzeXN0ZW0gPSAweDEwMjExMTAyLAorCSAuZHJpdmVyID0gIkF1ZGlneTIiLCAubmFtZSA9ICJBdWRpZ3kgNCBbU0IwNjEwXSIsIAorCSAuaWQgPSAiQXVkaWd5MiIsCisJIC5lbXUxMGsyX2NoaXAgPSAxLAorCSAuY2EwMTA4X2NoaXAgPSAxLAorCSAuc3BrNzEgPSAxLAorCSAuYWRjXzEzNjF0ID0gMSwgIC8qIDI0IGJpdCBjYXB0dXJlIGluc3RlYWQgb2YgMTZiaXQgKi8KKwkgLmFjOTdfY2hpcCA9IDF9ICwKIAkvKiBBdWRpZ3kgMiBaUyBOb3RlYm9vayBDYXJkYnVzIGNhcmQuKi8KIAkvKiBUZXN0ZWQgYnkgSmFtZXNAc3VwZXJidWcuY28udWsgMjJ0aCBEZWNlbWJlciAyMDA1ICovCiAJLyogQXVkaW8gb3V0cHV0IDcuMS9IZWFkcGhvbmVzIHdvcmtpbmcuCiAJICogRGlnaXRhbCBvdXRwdXQgd29ya2luZy4gKEFDMyBub3QgY2hlY2tlZCwgb25seSBQQ00pCiAJICogQXVkaW8gaW5wdXRzIG5vdCB0ZXN0ZWQuCiAJICovIAotCS8qIERTUDogVGlueTIKKwkvKiBEU1A6IFRpbmEyCiAJICogREFDOiBXb2xmc29uIFdNODc2OC9XTTg1NjgKIAkgKiBBREM6IFdvbGZzb24gV004Nzc1CiAJICogQUM5NzogTm9uZQpAQCAtMTQyMSwxNiArMTQ1OSwzIEBACiAJfQogfQogI2VuZGlmCi0KLS8qIG1lbW9yeS5jICovCi1FWFBPUlRfU1lNQk9MKHNuZF9lbXUxMGsxX3N5bnRoX2FsbG9jKTsKLUVYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfc3ludGhfZnJlZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9lbXUxMGsxX3N5bnRoX2J6ZXJvKTsKLUVYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfc3ludGhfY29weV9mcm9tX3VzZXIpOwotRVhQT1JUX1NZTUJPTChzbmRfZW11MTBrMV9tZW1ibGtfbWFwKTsKLS8qIHZvaWNlLmMgKi8KLUVYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfdm9pY2VfYWxsb2MpOwotRVhQT1JUX1NZTUJPTChzbmRfZW11MTBrMV92b2ljZV9mcmVlKTsKLS8qIGlvLmMgKi8KLUVYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfcHRyX3JlYWQpOwotRVhQT1JUX1NZTUJPTChzbmRfZW11MTBrMV9wdHJfd3JpdGUpOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvZW11MTBrMXguYyBiL3NvdW5kL3BjaS9lbXUxMGsxL2VtdTEwazF4LmMKaW5kZXggZDUxMjkwYy4uMGZiMjdlNCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvZW11MTBrMXguYworKysgYi9zb3VuZC9wY2kvZW11MTBrMS9lbXUxMGsxeC5jCkBAIC0xMDU1LDggKzEwNTUsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAJCiAJaWYoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJlbXUxMGsxeF9yZWdzIiwgJmVudHJ5KSkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgMTAyNCwgc25kX2VtdTEwazF4X3Byb2NfcmVnX3JlYWQpOwotCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSA2NDsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIHNuZF9lbXUxMGsxeF9wcm9jX3JlZ19yZWFkKTsKIAkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9lbXUxMGsxeF9wcm9jX3JlZ193cml0ZTsKIAkJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKIAkJZW50cnktPnByaXZhdGVfZGF0YSA9IGVtdTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9lbXUxMGsxL2VtdW1peGVyLmMgYi9zb3VuZC9wY2kvZW11MTBrMS9lbXVtaXhlci5jCmluZGV4IDJhOWQxMmQuLmMzMWYzZDAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL2VtdW1peGVyLmMKKysrIGIvc291bmQvcGNpL2VtdTEwazEvZW11bWl4ZXIuYwpAQCAtNzc3LDYgKzc3Nyw4IEBACiAJfTsKIAlzdGF0aWMgY2hhciAqYXVkaWd5X3JlbW92ZV9jdGxzW10gPSB7CiAJCS8qIE1hc3Rlci9QQ00gY29udHJvbHMgb24gYWM5NyBvZiBBdWRpZ3kgaGFzIG5vIGVmZmVjdCAqLworCQkvKiBPbiB0aGUgQXVkaWd5MiB0aGUgQUM5NyBwbGF5YmFjayBpcyBwaXBlZCBpbnRvCisJCSAqIHRoZSBQaGlsaXBzIEFEQyBmb3IgMjRiaXQgY2FwdHVyZSAqLwogCQkiUENNIFBsYXliYWNrIFN3aXRjaCIsCiAJCSJQQ00gUGxheWJhY2sgVm9sdW1lIiwKIAkJIk1hc3RlciBNb25vIFBsYXliYWNrIFN3aXRjaCIsCkBAIC04MDQsNiArODA2LDQ3IEBACiAJCSJBTWljIFBsYXliYWNrIFZvbHVtZSIsICJNaWMgUGxheWJhY2sgVm9sdW1lIiwKIAkJTlVMTAogCX07CisJc3RhdGljIGNoYXIgKmF1ZGlneV9yZW1vdmVfY3Rsc18xMzYxdF9hZGNbXSA9IHsKKwkJLyogT24gdGhlIEF1ZGlneTIgdGhlIEFDOTcgcGxheWJhY2sgaXMgcGlwZWQgaW50bworCQkgKiB0aGUgUGhpbGlwcyBBREMgZm9yIDI0Yml0IGNhcHR1cmUgKi8KKwkJIlBDTSBQbGF5YmFjayBTd2l0Y2giLAorCQkiUENNIFBsYXliYWNrIFZvbHVtZSIsCisJCSJNYXN0ZXIgTW9ubyBQbGF5YmFjayBTd2l0Y2giLAorCQkiTWFzdGVyIE1vbm8gUGxheWJhY2sgVm9sdW1lIiwKKwkJIkNhcHR1cmUgU291cmNlIiwKKwkJIkNhcHR1cmUgU3dpdGNoIiwKKwkJIkNhcHR1cmUgVm9sdW1lIiwKKwkJIk1pYyBDYXB0dXJlIFZvbHVtZSIsCisJCSJIZWFkcGhvbmUgUGxheWJhY2sgU3dpdGNoIiwKKwkJIkhlYWRwaG9uZSBQbGF5YmFjayBWb2x1bWUiLAorCQkiM0QgQ29udHJvbCAtIENlbnRlciIsCisJCSIzRCBDb250cm9sIC0gRGVwdGgiLAorCQkiM0QgQ29udHJvbCAtIFN3aXRjaCIsCisJCSJMaW5lMiBQbGF5YmFjayBWb2x1bWUiLAorCQkiTGluZTIgQ2FwdHVyZSBWb2x1bWUiLAorCQlOVUxMCisJfTsKKwlzdGF0aWMgY2hhciAqYXVkaWd5X3JlbmFtZV9jdGxzXzEzNjF0X2FkY1tdID0geworCQkiTWFzdGVyIFBsYXliYWNrIFN3aXRjaCIsICJNYXN0ZXIgQ2FwdHVyZSBTd2l0Y2giLAorCQkiTWFzdGVyIFBsYXliYWNrIFZvbHVtZSIsICJNYXN0ZXIgQ2FwdHVyZSBWb2x1bWUiLAorCQkiV2F2ZSBNYXN0ZXIgUGxheWJhY2sgVm9sdW1lIiwgIk1hc3RlciBQbGF5YmFjayBWb2x1bWUiLAorCQkiUEMgU3BlYWtlciBQbGF5YmFjayBTd2l0Y2giLCAiUEMgU3BlYWtlciBDYXB0dXJlIFN3aXRjaCIsCisJCSJQQyBTcGVha2VyIFBsYXliYWNrIFZvbHVtZSIsICJQQyBTcGVha2VyIENhcHR1cmUgVm9sdW1lIiwKKwkJIlBob25lIFBsYXliYWNrIFN3aXRjaCIsICJQaG9uZSBDYXB0dXJlIFN3aXRjaCIsCisJCSJQaG9uZSBQbGF5YmFjayBWb2x1bWUiLCAiUGhvbmUgQ2FwdHVyZSBWb2x1bWUiLAorCQkiTWljIFBsYXliYWNrIFN3aXRjaCIsICJNaWMgQ2FwdHVyZSBTd2l0Y2giLAorCQkiTWljIFBsYXliYWNrIFZvbHVtZSIsICJNaWMgQ2FwdHVyZSBWb2x1bWUiLAorCQkiTGluZSBQbGF5YmFjayBTd2l0Y2giLCAiTGluZSBDYXB0dXJlIFN3aXRjaCIsCisJCSJMaW5lIFBsYXliYWNrIFZvbHVtZSIsICJMaW5lIENhcHR1cmUgVm9sdW1lIiwKKwkJIkNEIFBsYXliYWNrIFN3aXRjaCIsICJDRCBDYXB0dXJlIFN3aXRjaCIsCisJCSJDRCBQbGF5YmFjayBWb2x1bWUiLCAiQ0QgQ2FwdHVyZSBWb2x1bWUiLAorCQkiQXV4IFBsYXliYWNrIFN3aXRjaCIsICJBdXggQ2FwdHVyZSBTd2l0Y2giLAorCQkiQXV4IFBsYXliYWNrIFZvbHVtZSIsICJBdXggQ2FwdHVyZSBWb2x1bWUiLAorCQkiVmlkZW8gUGxheWJhY2sgU3dpdGNoIiwgIlZpZGVvIENhcHR1cmUgU3dpdGNoIiwKKwkJIlZpZGVvIFBsYXliYWNrIFZvbHVtZSIsICJWaWRlbyBDYXB0dXJlIFZvbHVtZSIsCisKKwkJTlVMTAorCX07CiAKIAlpZiAoZW11LT5jYXJkX2NhcGFiaWxpdGllcy0+YWM5N19jaGlwKSB7CiAJCXN0cnVjdCBzbmRfYWM5N19idXMgKnBidXM7CkBAIC04MzQsNyArODc3LDEwIEBACiAJCQlzbmRfYWM5N193cml0ZV9jYWNoZShlbXUtPmFjOTcsIEFDOTdfTUFTVEVSLCAweDAwMDApOwogCQkJLyogc2V0IGNhcHR1cmUgc291cmNlIHRvIG1pYyAqLwogCQkJc25kX2FjOTdfd3JpdGVfY2FjaGUoZW11LT5hYzk3LCBBQzk3X1JFQ19TRUwsIDB4MDAwMCk7Ci0JCQljID0gYXVkaWd5X3JlbW92ZV9jdGxzOworCQkJaWYgKGVtdS0+Y2FyZF9jYXBhYmlsaXRpZXMtPmFkY18xMzYxdCkKKwkJCQljID0gYXVkaWd5X3JlbW92ZV9jdGxzXzEzNjF0X2FkYzsKKwkJCWVsc2UgCisJCQkJYyA9IGF1ZGlneV9yZW1vdmVfY3RsczsKIAkJfSBlbHNlIHsKIAkJCS8qCiAJCQkgKiBDcmVkaXRzIGZvciBjYXJkcyBiYXNlZCBvbiBTVEFDOTc1ODoKQEAgLTg2MywxMSArOTA5LDE1IEBACiAJfQogCiAJaWYgKGVtdS0+YXVkaWd5KQotCQljID0gYXVkaWd5X3JlbmFtZV9jdGxzOworCQlpZiAoZW11LT5jYXJkX2NhcGFiaWxpdGllcy0+YWRjXzEzNjF0KQorCQkJYyA9IGF1ZGlneV9yZW5hbWVfY3Rsc18xMzYxdF9hZGM7CisJCWVsc2UKKwkJCWMgPSBhdWRpZ3lfcmVuYW1lX2N0bHM7CiAJZWxzZQogCQljID0gZW11MTBrMV9yZW5hbWVfY3RsczsKIAlmb3IgKDsgKmM7IGMgKz0gMikKIAkJcmVuYW1lX2N0bChjYXJkLCBjWzBdLCBjWzFdKTsKKwogCWlmIChlbXUtPmNhcmRfY2FwYWJpbGl0aWVzLT5zdWJzeXN0ZW0gPT0gMHgyMDA3MTEwMikgeyAgLyogQXVkaWd5IDQgUHJvICovCiAJCXJlbmFtZV9jdGwoY2FyZCwgIkxpbmUyIENhcHR1cmUgVm9sdW1lIiwgIkxpbmUxL01pYyBDYXB0dXJlIFZvbHVtZSIpOwogCQlyZW5hbWVfY3RsKGNhcmQsICJBbmFsb2cgTWl4IENhcHR1cmUgVm9sdW1lIiwgIkxpbmUyIENhcHR1cmUgVm9sdW1lIik7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW11MTBrMS9lbXVwcm9jLmMgYi9zb3VuZC9wY2kvZW11MTBrMS9lbXVwcm9jLmMKaW5kZXggOTBmMWM1Mi4uYjkzOWUwMyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvZW11cHJvYy5jCisrKyBiL3NvdW5kL3BjaS9lbXUxMGsxL2VtdXByb2MuYwpAQCAtNTMyLDU3ICs1MzIsNTEgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogI2lmZGVmIENPTkZJR19TTkRfREVCVUcKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJpb19yZWdzIiwgJmVudHJ5KSkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgMTAyNCwgc25kX2VtdV9wcm9jX2lvX3JlZ19yZWFkKTsKLQkJZW50cnktPmMudGV4dC53cml0ZV9zaXplID0gNjQ7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfZW11X3Byb2NfaW9fcmVnX3JlYWQpOwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX2VtdV9wcm9jX2lvX3JlZ193cml0ZTsKIAkJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKIAl9CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAicHRyX3JlZ3MwMGEiLCAmZW50cnkpKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCA2NTUzNiwgc25kX2VtdV9wcm9jX3B0cl9yZWdfcmVhZDAwYSk7Ci0JCWVudHJ5LT5jLnRleHQud3JpdGVfc2l6ZSA9IDY0OworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2VtdV9wcm9jX3B0cl9yZWdfcmVhZDAwYSk7CiAJCWVudHJ5LT5jLnRleHQud3JpdGUgPSBzbmRfZW11X3Byb2NfcHRyX3JlZ193cml0ZTAwOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwogCX0KIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJwdHJfcmVnczAwYiIsICZlbnRyeSkpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDY1NTM2LCBzbmRfZW11X3Byb2NfcHRyX3JlZ19yZWFkMDBiKTsKLQkJZW50cnktPmMudGV4dC53cml0ZV9zaXplID0gNjQ7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfZW11X3Byb2NfcHRyX3JlZ19yZWFkMDBiKTsKIAkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9lbXVfcHJvY19wdHJfcmVnX3dyaXRlMDA7CiAJCWVudHJ5LT5tb2RlIHw9IFNfSVdVU1I7CiAJfQogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGVtdS0+Y2FyZCwgInB0cl9yZWdzMjBhIiwgJmVudHJ5KSkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgNjU1MzYsIHNuZF9lbXVfcHJvY19wdHJfcmVnX3JlYWQyMGEpOwotCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSA2NDsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIHNuZF9lbXVfcHJvY19wdHJfcmVnX3JlYWQyMGEpOwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gc25kX2VtdV9wcm9jX3B0cl9yZWdfd3JpdGUyMDsKIAkJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKIAl9CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAicHRyX3JlZ3MyMGIiLCAmZW50cnkpKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCA2NTUzNiwgc25kX2VtdV9wcm9jX3B0cl9yZWdfcmVhZDIwYik7Ci0JCWVudHJ5LT5jLnRleHQud3JpdGVfc2l6ZSA9IDY0OworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2VtdV9wcm9jX3B0cl9yZWdfcmVhZDIwYik7CiAJCWVudHJ5LT5jLnRleHQud3JpdGUgPSBzbmRfZW11X3Byb2NfcHRyX3JlZ193cml0ZTIwOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwogCX0KIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJwdHJfcmVnczIwYyIsICZlbnRyeSkpIHsKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDY1NTM2LCBzbmRfZW11X3Byb2NfcHRyX3JlZ19yZWFkMjBjKTsKLQkJZW50cnktPmMudGV4dC53cml0ZV9zaXplID0gNjQ7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfZW11X3Byb2NfcHRyX3JlZ19yZWFkMjBjKTsKIAkJZW50cnktPmMudGV4dC53cml0ZSA9IHNuZF9lbXVfcHJvY19wdHJfcmVnX3dyaXRlMjA7CiAJCWVudHJ5LT5tb2RlIHw9IFNfSVdVU1I7CiAJfQogI2VuZGlmCiAJCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAiZW11MTBrMSIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCAyMDQ4LCBzbmRfZW11MTBrMV9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2VtdTEwazFfcHJvY19yZWFkKTsKIAogCWlmIChlbXUtPmNhcmRfY2FwYWJpbGl0aWVzLT5lbXUxMGsyX2NoaXApIHsKIAkJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoZW11LT5jYXJkLCAic3BkaWYtaW4iLCAmZW50cnkpKQotCQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDIwNDgsIHNuZF9lbXUxMGsxX3Byb2Nfc3BkaWZfcmVhZCk7CisJCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2VtdTEwazFfcHJvY19zcGRpZl9yZWFkKTsKIAl9CiAJaWYgKGVtdS0+Y2FyZF9jYXBhYmlsaXRpZXMtPmNhMDE1MV9jaGlwKSB7CiAJCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGVtdS0+Y2FyZCwgImNhcHR1cmUtcmF0ZXMiLCAmZW50cnkpKQotCQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbXUsIDIwNDgsIHNuZF9lbXUxMGsxX3Byb2NfcmF0ZXNfcmVhZCk7CisJCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgc25kX2VtdTEwazFfcHJvY19yYXRlc19yZWFkKTsKIAl9CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhlbXUtPmNhcmQsICJ2b2ljZXMiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGVtdSwgMjA0OCwgc25kX2VtdTEwazFfcHJvY192b2ljZXNfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW11LCBzbmRfZW11MTBrMV9wcm9jX3ZvaWNlc19yZWFkKTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGVtdS0+Y2FyZCwgImZ4ODAxMF9ncHIiLCAmZW50cnkpKSB7CiAJCWVudHJ5LT5jb250ZW50ID0gU05EUlZfSU5GT19DT05URU5UX0RBVEE7CkBAIC02MTYsNyArNjEwLDYgQEAKIAkJZW50cnktPmNvbnRlbnQgPSBTTkRSVl9JTkZPX0NPTlRFTlRfVEVYVDsKIAkJZW50cnktPnByaXZhdGVfZGF0YSA9IGVtdTsKIAkJZW50cnktPm1vZGUgPSBTX0lGUkVHIHwgU19JUlVHTyAvKnwgU19JV1VTUiovOwotCQllbnRyeS0+Yy50ZXh0LnJlYWRfc2l6ZSA9IDEyOCoxMDI0OwogCQllbnRyeS0+Yy50ZXh0LnJlYWQgPSBzbmRfZW11MTBrMV9wcm9jX2Fjb2RlX3JlYWQ7CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvaW8uYyBiL3NvdW5kL3BjaS9lbXUxMGsxL2lvLmMKaW5kZXggZWY1MzA0ZC4uMDI5ZTc4NSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvaW8uYworKysgYi9zb3VuZC9wY2kvZW11MTBrMS9pby5jCkBAIC02Miw2ICs2Miw4IEBACiAJfQogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9lbXUxMGsxX3B0cl9yZWFkKTsKKwogdm9pZCBzbmRfZW11MTBrMV9wdHJfd3JpdGUoc3RydWN0IHNuZF9lbXUxMGsxICplbXUsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCBjaG4sIHVuc2lnbmVkIGludCBkYXRhKQogewogCXVuc2lnbmVkIGludCByZWdwdHI7CkBAIC05Miw2ICs5NCw4IEBACiAJfQogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9lbXUxMGsxX3B0cl93cml0ZSk7CisKIHVuc2lnbmVkIGludCBzbmRfZW11MTBrMV9wdHIyMF9yZWFkKHN0cnVjdCBzbmRfZW11MTBrMSAqIGVtdSwgCiAJCQkJCSAgdW5zaWduZWQgaW50IHJlZywgCiAJCQkJCSAgdW5zaWduZWQgaW50IGNobikKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9lbXUxMGsxL21lbW9yeS5jIGIvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKaW5kZXggZTdlYzk4Ni4uNGZjYWVmZSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKKysrIGIvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKQEAgLTI4Nyw2ICsyODcsOCBAQAogCXJldHVybiBlcnI7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfbWVtYmxrX21hcCk7CisKIC8qCiAgKiBwYWdlIGFsbG9jYXRpb24gZm9yIERNQQogICovCkBAIC0zODcsNiArMzg5LDcgQEAKIAlyZXR1cm4gKHN0cnVjdCBzbmRfdXRpbF9tZW1ibGsgKilibGs7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfc3ludGhfYWxsb2MpOwogCiAvKgogICogZnJlZSBhIHN5bnRoIHNhbXBsZSBhcmVhCkBAIC00MDksNiArNDEyLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZW11MTBrMV9zeW50aF9mcmVlKTsKIAogLyogY2hlY2sgbmV3IGFsbG9jYXRpb24gcmFuZ2UgKi8KIHN0YXRpYyB2b2lkIGdldF9zaW5nbGVfcGFnZV9yYW5nZShzdHJ1Y3Qgc25kX3V0aWxfbWVtaGRyICpoZHIsCkBAIC01NDAsNiArNTQ0LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZW11MTBrMV9zeW50aF9iemVybyk7CisKIC8qCiAgKiBjb3B5X2Zyb21fdXNlcihibGsgKyBvZmZzZXQsIGRhdGEsIHNpemUpCiAgKi8KQEAgLTU2OCwzICs1NzQsNSBAQAogCX0gd2hpbGUgKG9mZnNldCA8IGVuZF9vZmZzZXQpOwogCXJldHVybiAwOwogfQorCitFWFBPUlRfU1lNQk9MKHNuZF9lbXUxMGsxX3N5bnRoX2NvcHlfZnJvbV91c2VyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9lbXUxMGsxL3AxN3YuaCBiL3NvdW5kL3BjaS9lbXUxMGsxL3AxN3YuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRiNWJlCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvcGNpL2VtdTEwazEvcDE3di5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogIENvcHlyaWdodCAoYykgYnkgSmFtZXMgQ291cnRpZXItRHV0dG9uIDxKYW1lc0BzdXBlcmJ1Zy5kZW1vbi5jby51az4KKyAqICBEcml2ZXIgcDE3diBjaGlwcworICogIFZlcnNpb246IDAuMDEKKyAqCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisgKgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBBdWRpZ3kyVmFsdWUgVGluYSAoUDE3VikgcG9pbnRlci1vZmZzZXQgcmVnaXN0ZXIgc2V0LAorICogYWNjZXNzZWQgdGhyb3VnaCB0aGUgUFRSMjAgYW5kIERBVEEyNCByZWdpc3RlcnMgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiAwMCAtIDA3OiBOb3QgdXNlZCAqLworI2RlZmluZSBQMTdWX1BMQVlCQUNLX0ZJRk9fUFRSCTB4MDgJLyogQ3VycmVudCBwbGF5YmFjayBmaWZvIHBvaW50ZXIKKwkJCQkJICogYW5kIG51bWJlciBvZiBzb3VuZCBzYW1wbGVzIGluIGNhY2hlLgorCQkJCQkgKi8gIAorLyogMDkgLSAxMjogTm90IHVzZWQgKi8KKyNkZWZpbmUgUDE3Vl9DQVBUVVJFX0ZJRk9fUFRSCTB4MTMJLyogQ3VycmVudCBjYXB0dXJlIGZpZm8gcG9pbnRlcgorCQkJCQkgKiBhbmQgbnVtYmVyIG9mIHNvdW5kIHNhbXBsZXMgaW4gY2FjaGUuCisJCQkJCSAqLyAgCisvKiAxNCAtIDE3OiBOb3QgdXNlZCAqLworI2RlZmluZSBQMTdWX1BCX0NITl9TRUwJCTB4MTgJLyogUDE3diBwbGF5YmFjayBjaGFubmVsIHNlbGVjdCAqLworI2RlZmluZSBQMTdWX1NFX1NMT1RfU0VMX0wJMHgxOQkvKiBTb3VuZCBFbmdpbmUgc2xvdCBzZWxlY3QgbG93ICovCisjZGVmaW5lIFAxN1ZfU0VfU0xPVF9TRUxfSAkweDFhCS8qIFNvdW5kIEVuZ2luZSBzbG90IHNlbGVjdCBoaWdoICovCisvKiAxYiAtIDFmOiBOb3QgdXNlZCAqLworLyogMjAgLSAyZjogTm90IHVzZWQgKi8KKy8qIDMwIC0gM2I6IE5vdCB1c2VkICovCisjZGVmaW5lIFAxN1ZfU1BJCQkweDNjCS8qIFNQSSBpbnRlcmZhY2UgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUDE3Vl9JMkNfQUREUgkJMHgzZAkvKiBJMkMgQWRkcmVzcyAqLworI2RlZmluZSBQMTdWX0kyQ18wCQkweDNlCS8qIEkyQyBEYXRhICovCisjZGVmaW5lIFAxN1ZfSTJDXzEJCTB4M2YJLyogSTJDIERhdGEgKi8KKworI2RlZmluZSBQMTdWX1NUQVJUX0FVRElPCTB4NDAJLyogU3RhcnQgQXVkaW8gYml0ICovCisvKiA0MSAtIDQ3OiBSZXNlcnZlZCAqLworI2RlZmluZSBQMTdWX1NUQVJUX0NBUFRVUkUJMHg0OAkvKiBTdGFydCBDYXB0dXJlIGJpdCAqLworI2RlZmluZSBQMTdWX0NBUFRVUkVfRklGT19CQVNFCTB4NDkJLyogUmVjb3JkIEZJRk8gYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIFAxN1ZfQ0FQVFVSRV9GSUZPX1NJWkUJMHg0YQkvKiBSZWNvcmQgRklGTyBidWZmZXIgc2l6ZSAqLworI2RlZmluZSBQMTdWX0NBUFRVUkVfRklGT19JTkRFWAkweDRiCS8qIFJlY29yZCBGSUZPIGNhcHR1cmUgaW5kZXggKi8KKyNkZWZpbmUgUDE3Vl9DQVBUVVJFX1ZPTF9ICTB4NGMJLyogUDE3diBjYXB0dXJlIHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfQ0FQVFVSRV9WT0xfTAkweDRkCS8qIFAxN3YgY2FwdHVyZSB2b2x1bWUgY29udHJvbCAqLworLyogNGUgLSA0ZjogTm90IHVzZWQgKi8KKy8qIDUwIC0gNWY6IE5vdCB1c2VkICovCisjZGVmaW5lIFAxN1ZfU1JDU2VsCQkweDYwCS8qIFNSQzQ4IGFuZCBTUkNNdWx0aSBzYW1wbGUgcmF0ZSBzZWxlY3QKKwkJCQkJICogYW5kIG91dHB1dCBzZWxlY3QKKwkJCQkJICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfQUM5N18xMEsxX1ZPTF9MCTB4NjEJLyogMTBLIHRvIE1peGVyX0FDOTcgaW5wdXQgdm9sdW1lIGNvbnRyb2wgKi8KKyNkZWZpbmUgUDE3Vl9NSVhFUl9BQzk3XzEwSzFfVk9MX0gJMHg2MgkvKiAxMEsgdG8gTWl4ZXJfQUM5NyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0FDOTdfUDE3Vl9WT0xfTAkweDYzCS8qIFAxN1YgdG8gTWl4ZXJfQUM5NyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0FDOTdfUDE3Vl9WT0xfSAkweDY0CS8qIFAxN1YgdG8gTWl4ZXJfQUM5NyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0FDOTdfU1JQX1JFQ19WT0xfTAkweDY1CS8qIFNSUCBSZWNvcmQgdG8gTWl4ZXJfQUM5NyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0FDOTdfU1JQX1JFQ19WT0xfSAkweDY2CS8qIFNSUCBSZWNvcmQgdG8gTWl4ZXJfQUM5NyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworLyogNjcgLSA2ODogUmVzZXJ2ZWQgKi8KKyNkZWZpbmUgUDE3Vl9NSVhFUl9TcGRpZl8xMEsxX1ZPTF9MCTB4NjkJLyogMTBLIHRvIE1peGVyX1NwZGlmIGlucHV0IHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfU3BkaWZfMTBLMV9WT0xfSAkweDZBCS8qIDEwSyB0byBNaXhlcl9TcGRpZiBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX1NwZGlmX1AxN1ZfVk9MX0wJMHg2QgkvKiBQMTdWIHRvIE1peGVyX1NwZGlmIGlucHV0IHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfU3BkaWZfUDE3Vl9WT0xfSAkweDZDCS8qIFAxN1YgdG8gTWl4ZXJfU3BkaWYgaW5wdXQgdm9sdW1lIGNvbnRyb2wgKi8KKyNkZWZpbmUgUDE3Vl9NSVhFUl9TcGRpZl9TUlBfUkVDX1ZPTF9MCTB4NkQJLyogU1JQIFJlY29yZCB0byBNaXhlcl9TcGRpZiBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX1NwZGlmX1NSUF9SRUNfVk9MX0gJMHg2RQkvKiBTUlAgUmVjb3JkIHRvIE1peGVyX1NwZGlmIGlucHV0IHZvbHVtZSBjb250cm9sICovCisvKiA2ZiAtIDcwOiBSZXNlcnZlZCAqLworI2RlZmluZSBQMTdWX01JWEVSX0kyU18xMEsxX1ZPTF9MCTB4NzEJLyogMTBLIHRvIE1peGVyX0kyUyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0kyU18xMEsxX1ZPTF9ICTB4NzIJLyogMTBLIHRvIE1peGVyX0kyUyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0kyU19QMTdWX1ZPTF9MCTB4NzMJLyogUDE3ViB0byBNaXhlcl9JMlMgaW5wdXQgdm9sdW1lIGNvbnRyb2wgKi8KKyNkZWZpbmUgUDE3Vl9NSVhFUl9JMlNfUDE3Vl9WT0xfSAkweDc0CS8qIFAxN1YgdG8gTWl4ZXJfSTJTIGlucHV0IHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfSTJTX1NSUF9SRUNfVk9MX0wJMHg3NQkvKiBTUlAgUmVjb3JkIHRvIE1peGVyX0kyUyBpbnB1dCB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX01JWEVSX0kyU19TUlBfUkVDX1ZPTF9ICTB4NzYJLyogU1JQIFJlY29yZCB0byBNaXhlcl9JMlMgaW5wdXQgdm9sdW1lIGNvbnRyb2wgKi8KKy8qIDc3IC0gNzg6IFJlc2VydmVkICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfQUM5N19FTkFCTEUJCTB4NzkJLyogTWl4ZXIgQUM5NyBpbnB1dCBhdWRpbyBlbmFibGUgKi8KKyNkZWZpbmUgUDE3Vl9NSVhFUl9TUERJRl9FTkFCTEUJCTB4N0EJLyogTWl4ZXIgU1BESUYgaW5wdXQgYXVkaW8gZW5hYmxlICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfSTJTX0VOQUJMRQkJMHg3QgkvKiBNaXhlciBJMlMgaW5wdXQgYXVkaW8gZW5hYmxlICovCisjZGVmaW5lIFAxN1ZfQVVESU9fT1VUX0VOQUJMRQkJMHg3QwkvKiBBdWRpbyBvdXQgZW5hYmxlICovCisjZGVmaW5lIFAxN1ZfTUlYRVJfQVRUCQkJMHg3RAkvKiBTUlAgTWl4ZXIgQXR0ZW51YXRpb24gU2VsZWN0ICovCisjZGVmaW5lIFAxN1ZfU1JQX1JFQ09SRF9TUlIJCTB4N0UJLyogU1JQIFJlY29yZCBjaGFubmVsIHNvdXJjZSBTZWxlY3QgKi8KKyNkZWZpbmUgUDE3Vl9TT0ZUX1JFU0VUX1NSUF9NSVhFUgkweDdGCS8qIFNSUCBhbmQgbWl4ZXIgc29mdCByZXNldCAqLworCisjZGVmaW5lIFAxN1ZfQUM5N19PVVRfTUFTVEVSX1ZPTF9MCTB4ODAJLyogQUM5NyBPdXRwdXQgbWFzdGVyIHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfQUM5N19PVVRfTUFTVEVSX1ZPTF9ICTB4ODEJLyogQUM5NyBPdXRwdXQgbWFzdGVyIHZvbHVtZSBjb250cm9sICovCisjZGVmaW5lIFAxN1ZfU1BESUZfT1VUX01BU1RFUl9WT0xfTAkweDgyCS8qIFNQRElGIE91dHB1dCBtYXN0ZXIgdm9sdW1lIGNvbnRyb2wgKi8KKyNkZWZpbmUgUDE3Vl9TUERJRl9PVVRfTUFTVEVSX1ZPTF9ICTB4ODMJLyogU1BESUYgT3V0cHV0IG1hc3RlciB2b2x1bWUgY29udHJvbCAqLworI2RlZmluZSBQMTdWX0kyU19PVVRfTUFTVEVSX1ZPTF9MCTB4ODQJLyogSTJTIE91dHB1dCBtYXN0ZXIgdm9sdW1lIGNvbnRyb2wgKi8KKyNkZWZpbmUgUDE3Vl9JMlNfT1VUX01BU1RFUl9WT0xfSAkweDg1CS8qIEkyUyBPdXRwdXQgbWFzdGVyIHZvbHVtZSBjb250cm9sICovCisvKiA4NiAtIDg3OiBOb3QgdXNlZCAqLworI2RlZmluZSBQMTdWX0kyU19DSEFOTkVMX1NXQVBfUEhBU0VfSU5WRVJTRQkweDg4CS8qIEkyUyBvdXQgbW9ubyBjaGFubmVsIHN3YXAKKwkJCQkJCQkgKiBhbmQgcGhhc2UgaW52ZXJzZSAqLworI2RlZmluZSBQMTdWX1NQRElGX0NIQU5ORUxfU1dBUF9QSEFTRV9JTlZFUlNFCTB4ODkJLyogU1BESUYgb3V0IG1vbm8gY2hhbm5lbCBzd2FwCisJCQkJCQkJICogYW5kIHBoYXNlIGludmVyc2UgKi8KKy8qIDhBOiBOb3QgdXNlZCAqLworI2RlZmluZSBQMTdWX1NSUF9QMTdWX0VTUgkJMHg4QgkvKiBTUlBfUDE3ViBlc3RpbWF0ZWQgc2FtcGxlIHJhdGUgYW5kIHJhdGUgbG9jayAqLworI2RlZmluZSBQMTdWX1NSUF9SRUNfRVNSCQkweDhDCS8qIFNSUF9SRUMgZXN0aW1hdGVkIHNhbXBsZSByYXRlIGFuZCByYXRlIGxvY2sgKi8KKyNkZWZpbmUgUDE3Vl9TUlBfQllQQVNTCQkJMHg4RAkvKiBzcnBzIGNoYW5uZWwgYnlwYXNzIGFuZCBzcnBzIGJ5cGFzcyAqLworLyogOEUgLSA5MjogTm90IHVzZWQgKi8KKyNkZWZpbmUgUDE3Vl9JMlNfU1JDX1NFTAkJMHg5MwkvKiBJMlNJTiBtb2RlIHNlbCAqLworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvdGluYTIuaCBiL3NvdW5kL3BjaS9lbXUxMGsxL3RpbmEyLmgKaW5kZXggNWM0M2FiZi4uZjJkOGViNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvdGluYTIuaAorKysgYi9zb3VuZC9wY2kvZW11MTBrMS90aW5hMi5oCkBAIC0xLDExICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChjKSBieSBKYW1lcyBDb3VydGllci1EdXR0b24gPEphbWVzQHN1cGVyYnVnLmRlbW9uLmNvLnVrPgotICogIERyaXZlciBwMTZ2IGNoaXBzCi0gKiAgVmVyc2lvbjogMC4yMQotICoKLSAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6Ci0gKiAgQ29weXJpZ2h0IChjKSBieSBGcmFuY2lzY28gTW9yYWVzIDxmbW9yYWVzQG5jLnJyLmNvbT4KKyAqICBEcml2ZXIgdGluYTIgY2hpcHMKKyAqICBWZXJzaW9uOiAwLjEKICAqCiAgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW11MTBrMS92b2ljZS5jIGIvc291bmQvcGNpL2VtdTEwazEvdm9pY2UuYwppbmRleCA1NmZmYjdkLi45NGVjYTgyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvZW11MTBrMS92b2ljZS5jCisrKyBiL3NvdW5kL3BjaS9lbXUxMGsxL3ZvaWNlLmMKQEAgLTEzOSw2ICsxMzksOCBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfdm9pY2VfYWxsb2MpOworCiBpbnQgc25kX2VtdTEwazFfdm9pY2VfZnJlZShzdHJ1Y3Qgc25kX2VtdTEwazEgKmVtdSwKIAkJCSAgIHN0cnVjdCBzbmRfZW11MTBrMV92b2ljZSAqcHZvaWNlKQogewpAQCAtMTUzLDMgKzE1NSw1IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW11LT52b2ljZV9sb2NrLCBmbGFncyk7CiAJcmV0dXJuIDA7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX2VtdTEwazFfdm9pY2VfZnJlZSk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW5zMTM3MC5jIGIvc291bmQvcGNpL2VuczEzNzAuYwppbmRleCBjYTllMzRlLi45ZDQ2YmJlIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvZW5zMTM3MC5jCisrKyBiL3NvdW5kL3BjaS9lbnMxMzcwLmMKQEAgLTE5MTUsNyArMTkxNSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGVuc29uaXEtPmNhcmQsICJhdWRpb3BjaSIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZW5zb25pcSwgMTAyNCwgc25kX2Vuc29uaXFfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBlbnNvbmlxLCBzbmRfZW5zb25pcV9wcm9jX3JlYWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VzMTkzOC5jIGIvc291bmQvcGNpL2VzMTkzOC5jCmluZGV4IDZmOTA5NGMuLmNhNjYwM2YgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lczE5MzguYworKysgYi9zb3VuZC9wY2kvZXMxOTM4LmMKQEAgLTE3NTYsNyArMTc1Niw4IEBACiAJCX0KIAl9CiAJaWYgKHNuZF9tcHU0MDFfdWFydF9uZXcoY2FyZCwgMCwgTVBVNDAxX0hXX01QVTQwMSwKLQkJCQljaGlwLT5tcHVfcG9ydCwgMSwgY2hpcC0+aXJxLCAwLCAmY2hpcC0+cm1pZGkpIDwgMCkgeworCQkJCWNoaXAtPm1wdV9wb3J0LCBNUFU0MDFfSU5GT19JTlRFR1JBVEVELAorCQkJCWNoaXAtPmlycSwgMCwgJmNoaXAtPnJtaWRpKSA8IDApIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJlczE5Mzg6IHVuYWJsZSB0byBpbml0aWFsaXplIE1QVS00MDFcbiIpOwogCX0gZWxzZSB7CiAJCS8vIHRoaXMgbGluZSBpcyB2aXRhbCBmb3IgTUlESSBpbnRlcnJ1cHQgaGFuZGxpbmcgb24gZXNzLXNvbG8xCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZXMxOTY4LmMgYi9zb3VuZC9wY2kvZXMxOTY4LmMKaW5kZXggNWZmNDE3NS4uYmZhMDg3NiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VzMTk2OC5jCisrKyBiL3NvdW5kL3BjaS9lczE5NjguYwpAQCAtMTMyLDcgKzEzMiw3IEBACiBzdGF0aWMgaW50IHRvdGFsX2J1ZnNpemVbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAxMDI0IH07CiBzdGF0aWMgaW50IHBjbV9zdWJzdHJlYW1zX3BbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSA0IH07CiBzdGF0aWMgaW50IHBjbV9zdWJzdHJlYW1zX2NbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAxIH07Ci1zdGF0aWMgaW50IGNsb2NrW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMH07CitzdGF0aWMgaW50IGNsb2NrW1NORFJWX0NBUkRTXTsKIHN0YXRpYyBpbnQgdXNlX3BtW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMn07CiBzdGF0aWMgaW50IGVuYWJsZV9tcHVbU05EUlZfQ0FSRFNdID0ge1swIC4uLiAoU05EUlZfQ0FSRFMgLSAxKV0gPSAyfTsKICNpZmRlZiBTVVBQT1JUX0pPWVNUSUNLCkBAIC0yNzI3LDcgKzI3MjcsOCBAQAogCX0KIAlpZiAoZW5hYmxlX21wdVtkZXZdKSB7CiAJCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAwLCBNUFU0MDFfSFdfTVBVNDAxLAotCQkJCQkgICAgICAgY2hpcC0+aW9fcG9ydCArIEVTTV9NUFU0MDFfUE9SVCwgMSwKKwkJCQkJICAgICAgIGNoaXAtPmlvX3BvcnQgKyBFU01fTVBVNDAxX1BPUlQsCisJCQkJCSAgICAgICBNUFU0MDFfSU5GT19JTlRFR1JBVEVELAogCQkJCQkgICAgICAgY2hpcC0+aXJxLCAwLCAmY2hpcC0+cm1pZGkpKSA8IDApIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgImVzMTk2ODogc2tpcHBpbmcgTVBVLTQwMSBNSURJIHN1cHBvcnQuLlxuIik7CiAJCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9mbTgwMS5jIGIvc291bmQvcGNpL2ZtODAxLmMKaW5kZXggZDcyZmMyOC4uMGFmYTU3MyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2ZtODAxLmMKKysrIGIvc291bmQvcGNpL2ZtODAxLmMKQEAgLTU2LDcgKzU2LDcgQEAKICAqICAgIDMgPSBNZWRpYUZvcnRlIDY0LVBDUgogICogIEhpZ2ggMTYtYml0cyBhcmUgdmlkZW8gKHJhZGlvKSBkZXZpY2UgbnVtYmVyICsgMQogICovCi1zdGF0aWMgaW50IHRlYTU3NXhfdHVuZXJbU05EUlZfQ0FSRFNdID0geyBbMCAuLi4gKFNORFJWX0NBUkRTLTEpXSA9IDAgfTsKK3N0YXRpYyBpbnQgdGVhNTc1eF90dW5lcltTTkRSVl9DQVJEU107CiAKIG1vZHVsZV9wYXJhbV9hcnJheShpbmRleCwgaW50LCBOVUxMLCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoaW5kZXgsICJJbmRleCB2YWx1ZSBmb3IgdGhlIEZNODAxIHNvdW5kY2FyZC4iKTsKQEAgLTE0NDgsNyArMTQ0OCw4IEBACiAJCXJldHVybiBlcnI7CiAJfQogCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAwLCBNUFU0MDFfSFdfRk04MDEsCi0JCQkJICAgICAgIEZNODAxX1JFRyhjaGlwLCBNUFU0MDFfREFUQSksIDEsCisJCQkJICAgICAgIEZNODAxX1JFRyhjaGlwLCBNUFU0MDFfREFUQSksCisJCQkJICAgICAgIE1QVTQwMV9JTkZPX0lOVEVHUkFURUQsCiAJCQkJICAgICAgIGNoaXAtPmlycSwgMCwgJmNoaXAtPnJtaWRpKSkgPCAwKSB7CiAJCXNuZF9jYXJkX2ZyZWUoY2FyZCk7CiAJCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL01ha2VmaWxlIGIvc291bmQvcGNpL2hkYS9NYWtlZmlsZQppbmRleCBkZGZiNWZmLi5kYmFjYmE2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL01ha2VmaWxlCisrKyBiL3NvdW5kL3BjaS9oZGEvTWFrZWZpbGUKQEAgLTEsNSArMSw1IEBACiBzbmQtaGRhLWludGVsLW9ianMgOj0gaGRhX2ludGVsLm8KLXNuZC1oZGEtY29kZWMtb2JqcyA6PSBoZGFfY29kZWMubyBoZGFfZ2VuZXJpYy5vIHBhdGNoX3JlYWx0ZWsubyBwYXRjaF9jbWVkaWEubyBwYXRjaF9hbmFsb2cubyBwYXRjaF9zaWdtYXRlbC5vIHBhdGNoX3NpMzA1NC5vCitzbmQtaGRhLWNvZGVjLW9ianMgOj0gaGRhX2NvZGVjLm8gaGRhX2dlbmVyaWMubyBwYXRjaF9yZWFsdGVrLm8gcGF0Y2hfY21lZGlhLm8gcGF0Y2hfYW5hbG9nLm8gcGF0Y2hfc2lnbWF0ZWwubyBwYXRjaF9zaTMwNTQubyBwYXRjaF9hdGloZG1pLm8KIGlmZGVmIENPTkZJR19QUk9DX0ZTCiBzbmQtaGRhLWNvZGVjLW9ianMgKz0gaGRhX3Byb2MubwogZW5kaWYKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9jb2RlYy5jCmluZGV4IDViZWUzYjUuLjhjMmE4MTcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYwpAQCAtODYsNiArODYsOCBAQAogCXJldHVybiByZXM7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2hkYV9jb2RlY19yZWFkKTsKKwogLyoqCiAgKiBzbmRfaGRhX2NvZGVjX3dyaXRlIC0gc2VuZCBhIHNpbmdsZSBjb21tYW5kIHdpdGhvdXQgd2FpdGluZyBmb3IgcmVzcG9uc2UKICAqIEBjb2RlYzogdGhlIEhEQSBjb2RlYwpAQCAtMTA4LDYgKzExMCw4IEBACiAJcmV0dXJuIGVycjsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX2NvZGVjX3dyaXRlKTsKKwogLyoqCiAgKiBzbmRfaGRhX3NlcXVlbmNlX3dyaXRlIC0gc2VxdWVuY2Ugd3JpdGVzCiAgKiBAY29kZWM6IHRoZSBIREEgY29kZWMKQEAgLTEyMiw2ICsxMjYsOCBAQAogCQlzbmRfaGRhX2NvZGVjX3dyaXRlKGNvZGVjLCBzZXEtPm5pZCwgMCwgc2VxLT52ZXJiLCBzZXEtPnBhcmFtKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX3NlcXVlbmNlX3dyaXRlKTsKKwogLyoqCiAgKiBzbmRfaGRhX2dldF9zdWJfbm9kZXMgLSBnZXQgdGhlIHJhbmdlIG9mIHN1YiBub2RlcwogICogQGNvZGVjOiB0aGUgSERBIGNvZGVjCkBAIC0xNDAsNiArMTQ2LDggQEAKIAlyZXR1cm4gKGludCkocGFybSAmIDB4N2ZmZik7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2hkYV9nZXRfc3ViX25vZGVzKTsKKwogLyoqCiAgKiBzbmRfaGRhX2dldF9jb25uZWN0aW9ucyAtIGdldCBjb25uZWN0aW9uIGxpc3QKICAqIEBjb2RlYzogdGhlIEhEQSBjb2RlYwpAQCAtMjU2LDYgKzI2NCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2hkYV9xdWV1ZV91bnNvbF9ldmVudCk7CisKIC8qCiAgKiBwcm9jZXNzIHF1ZXVldWQgdW5zb2xpY2l0ZWQgZXZlbnRzCiAgKi8KQEAgLTM4NCw2ICszOTQsNyBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9oZGFfYnVzX25ldyk7CiAKIC8qCiAgKiBmaW5kIGEgbWF0Y2hpbmcgY29kZWMgcHJlc2V0CkBAIC01ODcsNiArNTk4LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX2NvZGVjX25ldyk7CisKIC8qKgogICogc25kX2hkYV9jb2RlY19zZXR1cF9zdHJlYW0gLSBzZXQgdXAgdGhlIGNvZGVjIGZvciBzdHJlYW1pbmcKICAqIEBjb2RlYzogdGhlIENPREVDIHRvIHNldCB1cApAQCAtNjA5LDYgKzYyMiw3IEBACiAJc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgbmlkLCAwLCBBQ19WRVJCX1NFVF9TVFJFQU1fRk9STUFULCBmb3JtYXQpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9oZGFfY29kZWNfc2V0dXBfc3RyZWFtKTsKIAogLyoKICAqIGFtcCBhY2Nlc3MgZnVuY3Rpb25zCkBAIC0xMjk0LDYgKzEzMDgsNyBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9oZGFfYnVpbGRfY29udHJvbHMpOwogCiAvKgogICogc3RyZWFtIGZvcm1hdHMKQEAgLTEzODIsNiArMTM5Nyw4IEBACiAJcmV0dXJuIHZhbDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX2NhbGNfc3RyZWFtX2Zvcm1hdCk7CisKIC8qKgogICogc25kX2hkYV9xdWVyeV9zdXBwb3J0ZWRfcGNtIC0gcXVlcnkgdGhlIHN1cHBvcnRlZCBQQ00gcmF0ZXMgYW5kIGZvcm1hdHMKICAqIEBjb2RlYzogdGhlIEhEQSBjb2RlYwpAQCAtMTY2Myw2ICsxNjgwLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX2J1aWxkX3BjbXMpOwogCiAvKioKICAqIHNuZF9oZGFfY2hlY2tfYm9hcmRfY29uZmlnIC0gY29tcGFyZSB0aGUgY3VycmVudCBjb2RlYyB3aXRoIHRoZSBjb25maWcgdGFibGUKQEAgLTIxNjUsNiArMjE4Myw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX2hkYV9zdXNwZW5kKTsKKwogLyoqCiAgKiBzbmRfaGRhX3Jlc3VtZSAtIHJlc3VtZSB0aGUgY29kZWNzCiAgKiBAYnVzOiB0aGUgSERBIGJ1cwpAQCAtMjE4Nyw2ICsyMjA3LDggQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfaGRhX3Jlc3VtZSk7CisKIC8qKgogICogc25kX2hkYV9yZXN1bWVfY3RscyAtIHJlc3VtZSBjb250cm9scyBpbiB0aGUgbmV3IGNvbnRyb2wgbGlzdAogICogQGNvZGVjOiB0aGUgSERBIGNvZGVjCkBAIC0yMjQ3LDI1ICsyMjY5LDYgQEAKICNlbmRpZgogCiAvKgotICogc3ltYm9scyBleHBvcnRlZCBmb3IgY29udHJvbGxlciBtb2R1bGVzCi0gKi8KLUVYUE9SVF9TWU1CT0woc25kX2hkYV9jb2RlY19yZWFkKTsKLUVYUE9SVF9TWU1CT0woc25kX2hkYV9jb2RlY193cml0ZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUpOwotRVhQT1JUX1NZTUJPTChzbmRfaGRhX2dldF9zdWJfbm9kZXMpOwotRVhQT1JUX1NZTUJPTChzbmRfaGRhX3F1ZXVlX3Vuc29sX2V2ZW50KTsKLUVYUE9SVF9TWU1CT0woc25kX2hkYV9idXNfbmV3KTsKLUVYUE9SVF9TWU1CT0woc25kX2hkYV9jb2RlY19uZXcpOwotRVhQT1JUX1NZTUJPTChzbmRfaGRhX2NvZGVjX3NldHVwX3N0cmVhbSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9oZGFfY2FsY19zdHJlYW1fZm9ybWF0KTsKLUVYUE9SVF9TWU1CT0woc25kX2hkYV9idWlsZF9wY21zKTsKLUVYUE9SVF9TWU1CT0woc25kX2hkYV9idWlsZF9jb250cm9scyk7Ci0jaWZkZWYgQ09ORklHX1BNCi1FWFBPUlRfU1lNQk9MKHNuZF9oZGFfc3VzcGVuZCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9oZGFfcmVzdW1lKTsKLSNlbmRpZgotCi0vKgogICogIElOSVQgcGFydAogICovCiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9pbnRlbC5jCmluZGV4IGU4MjFkNjUuLjQwNzBiNWMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYwpAQCAtODIsNiArODIsNyBAQAogCQkJICJ7SW50ZWwsIElDSDh9LCIKIAkJCSAie0FUSSwgU0I0NTB9LCIKIAkJCSAie0FUSSwgU0I2MDB9LCIKKwkJCSAie0FUSSwgUlM2MDB9LCIKIAkJCSAie1ZJQSwgVlQ4MjUxfSwiCiAJCQkgIntWSUEsIFZUODIzN0F9LCIKIAkJCSAie1NpUywgU0lTOTY2fSwiCkBAIC0xNjcsNiArMTY4LDEyIEBACiAjZGVmaW5lIFVMSV9QTEFZQkFDS19JTkRFWAk1CiAjZGVmaW5lIFVMSV9OVU1fUExBWUJBQ0sJNgogCisvKiBBVEkgSERNSSBoYXMgMSBwbGF5YmFjayBhbmQgMCBjYXB0dXJlICovCisjZGVmaW5lIEFUSUhETUlfQ0FQVFVSRV9JTkRFWAkwCisjZGVmaW5lIEFUSUhETUlfTlVNX0NBUFRVUkUJMAorI2RlZmluZSBBVElIRE1JX1BMQVlCQUNLX0lOREVYCTAKKyNkZWZpbmUgQVRJSERNSV9OVU1fUExBWUJBQ0sJMQorCiAvKiB0aGlzIG51bWJlciBpcyBzdGF0aWNhbGx5IGRlZmluZWQgZm9yIHNpbXBsaWNpdHkgKi8KICNkZWZpbmUgTUFYX0FaWF9ERVYJCTE2CiAKQEAgLTMzMSw2ICszMzgsNyBAQAogZW51bSB7CiAJQVpYX0RSSVZFUl9JQ0gsCiAJQVpYX0RSSVZFUl9BVEksCisJQVpYX0RSSVZFUl9BVElIRE1JLAogCUFaWF9EUklWRVJfVklBLAogCUFaWF9EUklWRVJfU0lTLAogCUFaWF9EUklWRVJfVUxJLApAQCAtMzQwLDYgKzM0OCw3IEBACiBzdGF0aWMgY2hhciAqZHJpdmVyX3Nob3J0X25hbWVzW10gX19kZXZpbml0ZGF0YSA9IHsKIAlbQVpYX0RSSVZFUl9JQ0hdID0gIkhEQSBJbnRlbCIsCiAJW0FaWF9EUklWRVJfQVRJXSA9ICJIREEgQVRJIFNCIiwKKwlbQVpYX0RSSVZFUl9BVElIRE1JXSA9ICJIREEgQVRJIEhETUkiLAogCVtBWlhfRFJJVkVSX1ZJQV0gPSAiSERBIFZJQSBWVDgyeHgiLAogCVtBWlhfRFJJVkVSX1NJU10gPSAiSERBIFNJUzk2NiIsCiAJW0FaWF9EUklWRVJfVUxJXSA9ICJIREEgVUxJIE01NDYxIiwKQEAgLTEzOTMsMTAgKzE0MDIsMTAgQEAKIAkJbXNsZWVwKDEpOwogCX0KIAotCWlmIChjaGlwLT5yZW1hcF9hZGRyKQotCQlpb3VubWFwKGNoaXAtPnJlbWFwX2FkZHIpOwogCWlmIChjaGlwLT5pcnEgPj0gMCkKIAkJZnJlZV9pcnEoY2hpcC0+aXJxLCAodm9pZCopY2hpcCk7CisJaWYgKGNoaXAtPnJlbWFwX2FkZHIpCisJCWlvdW5tYXAoY2hpcC0+cmVtYXBfYWRkcik7CiAKIAlpZiAoY2hpcC0+YmRsLmFyZWEpCiAJCXNuZF9kbWFfZnJlZV9wYWdlcygmY2hpcC0+YmRsKTsKQEAgLTE0OTUsNiArMTUwNCwxMiBAQAogCQljaGlwLT5wbGF5YmFja19pbmRleF9vZmZzZXQgPSBVTElfUExBWUJBQ0tfSU5ERVg7CiAJCWNoaXAtPmNhcHR1cmVfaW5kZXhfb2Zmc2V0ID0gVUxJX0NBUFRVUkVfSU5ERVg7CiAJCWJyZWFrOworCWNhc2UgQVpYX0RSSVZFUl9BVElIRE1JOgorCQljaGlwLT5wbGF5YmFja19zdHJlYW1zID0gQVRJSERNSV9OVU1fUExBWUJBQ0s7CisJCWNoaXAtPmNhcHR1cmVfc3RyZWFtcyA9IEFUSUhETUlfTlVNX0NBUFRVUkU7CisJCWNoaXAtPnBsYXliYWNrX2luZGV4X29mZnNldCA9IEFUSUhETUlfUExBWUJBQ0tfSU5ERVg7CisJCWNoaXAtPmNhcHR1cmVfaW5kZXhfb2Zmc2V0ID0gQVRJSERNSV9DQVBUVVJFX0lOREVYOworCQlicmVhazsKIAlkZWZhdWx0OgogCQljaGlwLT5wbGF5YmFja19zdHJlYW1zID0gSUNINl9OVU1fUExBWUJBQ0s7CiAJCWNoaXAtPmNhcHR1cmVfc3RyZWFtcyA9IElDSDZfTlVNX0NBUFRVUkU7CkBAIC0xNjIxLDYgKzE2MzYsNyBAQAogCXsgMHg4MDg2LCAweDI4NGIsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIEFaWF9EUklWRVJfSUNIIH0sIC8qIElDSDggKi8KIAl7IDB4MTAwMiwgMHg0MzdiLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX0FUSSB9LCAvKiBBVEkgU0I0NTAgKi8KIAl7IDB4MTAwMiwgMHg0MzgzLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX0FUSSB9LCAvKiBBVEkgU0I2MDAgKi8KKwl7IDB4MTAwMiwgMHg3OTNiLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX0FUSUhETUkgfSwgLyogQVRJIFJTNjAwIEhETUkgKi8KIAl7IDB4MTEwNiwgMHgzMjg4LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX1ZJQSB9LCAvKiBWSUEgVlQ4MjUxL1ZUODIzN0EgKi8KIAl7IDB4MTAzOSwgMHg3NTAyLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX1NJUyB9LCAvKiBTSVM5NjYgKi8KIAl7IDB4MTBiOSwgMHg1NDYxLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCBBWlhfRFJJVkVSX1VMSSB9LCAvKiBVTEkgTTU0NjEgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX3BhdGNoLmggYi9zb3VuZC9wY2kvaGRhL2hkYV9wYXRjaC5oCmluZGV4IGFjYWVmM2MuLjBiNjY4NzkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX3BhdGNoLmgKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfcGF0Y2guaApAQCAtMTIsNiArMTIsOCBAQAogZXh0ZXJuIHN0cnVjdCBoZGFfY29kZWNfcHJlc2V0IHNuZF9oZGFfcHJlc2V0X3NpZ21hdGVsW107CiAvKiBTaUxhYnMgMzA1NC8zMDU1IG1vZGVtIGNvZGVjcyAqLwogZXh0ZXJuIHN0cnVjdCBoZGFfY29kZWNfcHJlc2V0IHNuZF9oZGFfcHJlc2V0X3NpMzA1NFtdOworLyogQVRJIEhETUkgY29kZWNzICovCitleHRlcm4gc3RydWN0IGhkYV9jb2RlY19wcmVzZXQgc25kX2hkYV9wcmVzZXRfYXRpaGRtaVtdOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGhkYV9jb2RlY19wcmVzZXQgKmhkYV9wcmVzZXRfdGFibGVzW10gPSB7CiAJc25kX2hkYV9wcmVzZXRfcmVhbHRlaywKQEAgLTE5LDUgKzIxLDYgQEAKIAlzbmRfaGRhX3ByZXNldF9hbmFsb2csCiAJc25kX2hkYV9wcmVzZXRfc2lnbWF0ZWwsCiAJc25kX2hkYV9wcmVzZXRfc2kzMDU0LAorCXNuZF9oZGFfcHJlc2V0X2F0aWhkbWksCiAJTlVMTAogfTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX3Byb2MuYyBiL3NvdW5kL3BjaS9oZGEvaGRhX3Byb2MuYwppbmRleCBjYTUxNGE2Li5jMmYwZmU4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL2hkYV9wcm9jLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfcHJvYy5jCkBAIC0xODIsNiArMTgyLDEwIEBACiAJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiBPVVQiKTsKIAlpZiAoY2FwcyAmIEFDX1BJTkNBUF9IUF9EUlYpCiAJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiBIUCIpOworCWlmIChjYXBzICYgQUNfUElOQ0FQX0VBUEQpCisJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiBFQVBEIik7CisJaWYgKGNhcHMgJiBBQ19QSU5DQVBfUFJFU19ERVRFQ1QpCisJCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiBEZXRlY3QiKTsKIAlzbmRfaXByaW50ZihidWZmZXIsICJcbiIpOwogCWNhcHMgPSBzbmRfaGRhX2NvZGVjX3JlYWQoY29kZWMsIG5pZCwgMCwgQUNfVkVSQl9HRVRfQ09ORklHX0RFRkFVTFQsIDApOwogCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiAgUGluIERlZmF1bHQgMHglMDh4OiBbJXNdICVzIGF0ICVzICVzXG4iLCBjYXBzLApAQCAtMzE4LDcgKzMyMiw3IEBACiAJaWYgKGVyciA8IDApCiAJCXJldHVybiBlcnI7CiAKLQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNvZGVjLCAzMiAqIDEwMjQsIHByaW50X2NvZGVjX2luZm8pOworCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY29kZWMsIHByaW50X2NvZGVjX2luZm8pOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2FuYWxvZy5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9hbmFsb2cuYwppbmRleCA0MGYwMDBiLi5kZDRlMDBhIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2FuYWxvZy5jCisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfYW5hbG9nLmMKQEAgLTc4OSw2ICs3ODksOCBAQAogCXsgLm1vZGVsbmFtZSA9ICIzc3RhY2siLAkuY29uZmlnID0gQUQxOTg2QV8zU1RBQ0sgfSwKIAl7IC5wY2lfc3VidmVuZG9yID0gMHgxMGRlLCAucGNpX3N1YmRldmljZSA9IDB4Y2I4NCwKIAkgIC5jb25maWcgPSBBRDE5ODZBXzNTVEFDSyB9LCAvKiBBU1VTIEE4Ti1WTSBDU00gKi8KKwl7IC5wY2lfc3VidmVuZG9yID0gMHgxMDQzLCAucGNpX3N1YmRldmljZSA9IDB4ODFiMywKKwkgIC5jb25maWcgPSBBRDE5ODZBXzNTVEFDSyB9LCAvKiBBU1VTIFA1UkQyLVZNIC8gUDVHUEwtWCBTRSAqLwogCXsgLm1vZGVsbmFtZSA9ICJsYXB0b3AiLAkuY29uZmlnID0gQUQxOTg2QV9MQVBUT1AgfSwKIAl7IC5wY2lfc3VidmVuZG9yID0gMHgxNDRkLCAucGNpX3N1YmRldmljZSA9IDB4YzAxZSwKIAkgIC5jb25maWcgPSBBRDE5ODZBX0xBUFRPUCB9LCAvKiBGU0MgVjIwNjAgKi8KQEAgLTgwOSw2ICs4MTEsOCBAQAogCSAgLmNvbmZpZyA9IEFEMTk4NkFfTEFQVE9QX0VBUEQgfSwgLyogQVNVUyBaNjJGICovCiAJeyAucGNpX3N1YnZlbmRvciA9IDB4MTAzYywgLnBjaV9zdWJkZXZpY2UgPSAweDMwYWYsCiAJICAuY29uZmlnID0gQUQxOTg2QV9MQVBUT1BfRUFQRCB9LCAvKiBIUCBDb21wYXEgUHJlc2FyaW8gQjI4MDAgKi8KKwl7IC5wY2lfc3VidmVuZG9yID0gMHgxN2FhLCAucGNpX3N1YmRldmljZSA9IDB4MjA2NiwKKwkgIC5jb25maWcgPSBBRDE5ODZBX0xBUFRPUF9FQVBEIH0sIC8qIExlbm92byAzMDAwIE4xMDAtMDc2ODRKVSAqLwogCXt9CiB9OwogCkBAIC05NjMsNyArOTY3LDcgQEAKIAl9LAogCXsKIAkJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCi0JCS5uYW1lID0gU05EUlZfQ1RMX05BTUVfSUVDOTU4KCIiLFBMQVlCQUNLLE5PTkUpICJSb3V0ZSIsCisJCS5uYW1lID0gU05EUlZfQ1RMX05BTUVfSUVDOTU4KCIiLFBMQVlCQUNLLE5PTkUpICJTb3VyY2UiLAogCQkuaW5mbyA9IGFkMTk4M19zcGRpZl9yb3V0ZV9pbmZvLAogCQkuZ2V0ID0gYWQxOTgzX3NwZGlmX3JvdXRlX2dldCwKIAkJLnB1dCA9IGFkMTk4M19zcGRpZl9yb3V0ZV9wdXQsCkBAIC0xMTAzLDcgKzExMDcsNyBAQAogCS8qIGlkZW50aWNhbCB3aXRoIEFEMTk4MyAqLwogCXsKIAkJLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCi0JCS5uYW1lID0gU05EUlZfQ1RMX05BTUVfSUVDOTU4KCIiLFBMQVlCQUNLLE5PTkUpICJSb3V0ZSIsCisJCS5uYW1lID0gU05EUlZfQ1RMX05BTUVfSUVDOTU4KCIiLFBMQVlCQUNLLE5PTkUpICJTb3VyY2UiLAogCQkuaW5mbyA9IGFkMTk4M19zcGRpZl9yb3V0ZV9pbmZvLAogCQkuZ2V0ID0gYWQxOTgzX3NwZGlmX3JvdXRlX2dldCwKIAkJLnB1dCA9IGFkMTk4M19zcGRpZl9yb3V0ZV9wdXQsCkBAIC0xMzI5LDEzICsxMzMzLDYwIEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIGNvbmZpZ3VyYXRpb24gZm9yIExlbm92byBUaGlua3BhZCBUNjAgKi8KK3N0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBhZDE5ODFfdGhpbmtwYWRfbWl4ZXJzW10gPSB7CisJSERBX0NPREVDX1ZPTFVNRSgiTWFzdGVyIFBsYXliYWNrIFZvbHVtZSIsIDB4MDUsIDB4MCwgSERBX09VVFBVVCksCisJSERBX0NPREVDX01VVEUoIk1hc3RlciBQbGF5YmFjayBTd2l0Y2giLCAweDA1LCAweDAsIEhEQV9PVVRQVVQpLAorCUhEQV9DT0RFQ19WT0xVTUUoIlBDTSBQbGF5YmFjayBWb2x1bWUiLCAweDExLCAweDAsIEhEQV9PVVRQVVQpLAorCUhEQV9DT0RFQ19NVVRFKCJQQ00gUGxheWJhY2sgU3dpdGNoIiwgMHgxMSwgMHgwLCBIREFfT1VUUFVUKSwKKwlIREFfQ09ERUNfVk9MVU1FKCJNaWMgUGxheWJhY2sgVm9sdW1lIiwgMHgxMiwgMHgwLCBIREFfT1VUUFVUKSwKKwlIREFfQ09ERUNfTVVURSgiTWljIFBsYXliYWNrIFN3aXRjaCIsIDB4MTIsIDB4MCwgSERBX09VVFBVVCksCisJSERBX0NPREVDX1ZPTFVNRSgiQ0QgUGxheWJhY2sgVm9sdW1lIiwgMHgxZCwgMHgwLCBIREFfT1VUUFVUKSwKKwlIREFfQ09ERUNfTVVURSgiQ0QgUGxheWJhY2sgU3dpdGNoIiwgMHgxZCwgMHgwLCBIREFfT1VUUFVUKSwKKwlIREFfQ09ERUNfVk9MVU1FKCJNaWMgQm9vc3QiLCAweDA4LCAweDAsIEhEQV9JTlBVVCksCisJSERBX0NPREVDX1ZPTFVNRSgiQ2FwdHVyZSBWb2x1bWUiLCAweDE1LCAweDAsIEhEQV9PVVRQVVQpLAorCUhEQV9DT0RFQ19NVVRFKCJDYXB0dXJlIFN3aXRjaCIsIDB4MTUsIDB4MCwgSERBX09VVFBVVCksCisJeworCQkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKKwkJLm5hbWUgPSAiQ2FwdHVyZSBTb3VyY2UiLAorCQkuaW5mbyA9IGFkMTk4eF9tdXhfZW51bV9pbmZvLAorCQkuZ2V0ID0gYWQxOTh4X211eF9lbnVtX2dldCwKKwkJLnB1dCA9IGFkMTk4eF9tdXhfZW51bV9wdXQsCisJfSwKKwkvKiBpZGVudGljYWwgd2l0aCBBRDE5ODMgKi8KKwl7CisJCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorCQkubmFtZSA9IFNORFJWX0NUTF9OQU1FX0lFQzk1OCgiIixQTEFZQkFDSyxOT05FKSAiU291cmNlIiwKKwkJLmluZm8gPSBhZDE5ODNfc3BkaWZfcm91dGVfaW5mbywKKwkJLmdldCA9IGFkMTk4M19zcGRpZl9yb3V0ZV9nZXQsCisJCS5wdXQgPSBhZDE5ODNfc3BkaWZfcm91dGVfcHV0LAorCX0sCisJeyB9IC8qIGVuZCAqLworfTsKKworc3RhdGljIHN0cnVjdCBoZGFfaW5wdXRfbXV4IGFkMTk4MV90aGlua3BhZF9jYXB0dXJlX3NvdXJjZSA9IHsKKwkubnVtX2l0ZW1zID0gMywKKwkuaXRlbXMgPSB7CisJCXsgIk1pYyIsIDB4MCB9LAorCQl7ICJNaXgiLCAweDIgfSwKKwkJeyAiQ0QiLCAweDQgfSwKKwl9LAorfTsKKwogLyogbW9kZWxzICovCi1lbnVtIHsgQUQxOTgxX0JBU0lDLCBBRDE5ODFfSFAgfTsKK2VudW0geyBBRDE5ODFfQkFTSUMsIEFEMTk4MV9IUCwgQUQxOTgxX1RISU5LUEFEIH07CiAKIHN0YXRpYyBzdHJ1Y3QgaGRhX2JvYXJkX2NvbmZpZyBhZDE5ODFfY2ZnX3RibFtdID0gewogCXsgLm1vZGVsbmFtZSA9ICJocCIsIC5jb25maWcgPSBBRDE5ODFfSFAgfSwKIAkvKiBBbGwgSFAgbW9kZWxzICovCiAJeyAucGNpX3N1YnZlbmRvciA9IDB4MTAzYywgLmNvbmZpZyA9IEFEMTk4MV9IUCB9LAorCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDMwYjAsIC5wY2lfc3ViZGV2aWNlID0gMHgxMDNjLAorCSAgLmNvbmZpZyA9IEFEMTk4MV9IUCB9LCAvKiBIUCBueDYzMjAgKHJldmVyc2VkIFNTSUQsIEgvVyBidWcpICovCisJeyAubW9kZWxuYW1lID0gInRoaW5rcGFkIiwgLmNvbmZpZyA9IEFEMTk4MV9USElOS1BBRCB9LAorCS8qIExlbm92byBUaGlua3BhZCBUNjAvWDYwL1o2eHggKi8KKwl7IC5wY2lfc3VidmVuZG9yID0gMHgxN2FhLCAuY29uZmlnID0gQUQxOTgxX1RISU5LUEFEIH0sCisJeyAucGNpX3N1YnZlbmRvciA9IDB4MTAxNCwgLnBjaV9zdWJkZXZpY2UgPSAweDA1OTcsCisJICAuY29uZmlnID0gQUQxOTgxX1RISU5LUEFEIH0sIC8qIFo2MG0vdCAqLwogCXsgLm1vZGVsbmFtZSA9ICJiYXNpYyIsIC5jb25maWcgPSBBRDE5ODFfQkFTSUMgfSwKIAl7fQogfTsKQEAgLTEzODEsNiArMTQzMiwxMCBAQAogCQljb2RlYy0+cGF0Y2hfb3BzLmluaXQgPSBhZDE5ODFfaHBfaW5pdDsKIAkJY29kZWMtPnBhdGNoX29wcy51bnNvbF9ldmVudCA9IGFkMTk4MV9ocF91bnNvbF9ldmVudDsKIAkJYnJlYWs7CisJY2FzZSBBRDE5ODFfVEhJTktQQUQ6CisJCXNwZWMtPm1peGVyc1swXSA9IGFkMTk4MV90aGlua3BhZF9taXhlcnM7CisJCXNwZWMtPmlucHV0X211eCA9ICZhZDE5ODFfdGhpbmtwYWRfY2FwdHVyZV9zb3VyY2U7CisJCWJyZWFrOwogCX0KIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9hdGloZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2F0aWhkbWkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjc0NDBmCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvcGNpL2hkYS9wYXRjaF9hdGloZG1pLmMKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBVbml2ZXJzYWwgSW50ZXJmYWNlIGZvciBJbnRlbCBIaWdoIERlZmluaXRpb24gQXVkaW8gQ29kZWMKKyAqCisgKiBIRCBhdWRpbyBpbnRlcmZhY2UgcGF0Y2ggZm9yIEFUSSBIRE1JIGNvZGVjcworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNiBBVEkgVGVjaG5vbG9naWVzIEluYy4KKyAqCisgKgorICogIFRoaXMgZHJpdmVyIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBkcml2ZXIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPHNvdW5kL2RyaXZlci5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSAiaGRhX2NvZGVjLmgiCisjaW5jbHVkZSAiaGRhX2xvY2FsLmgiCisKK3N0cnVjdCBhdGloZG1pX3NwZWMgeworCXN0cnVjdCBoZGFfbXVsdGlfb3V0IG11bHRpb3V0OworCisJc3RydWN0IGhkYV9wY20gcGNtX3JlYzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaGRhX3ZlcmIgYXRpaGRtaV9iYXNpY19pbml0W10gPSB7CisJLyogZW5hYmxlIGRpZ2l0YWwgb3V0cHV0IG9uIHBpbiB3aWRnZXQgKi8KKwl7IDB4MDMsIEFDX1ZFUkJfU0VUX1BJTl9XSURHRVRfQ09OVFJPTCwgUElOX09VVCB9LAorCXt9IC8qIHRlcm1pbmF0b3IgKi8KK307CisKKy8qCisgKiBDb250cm9scworICovCitzdGF0aWMgaW50IGF0aWhkbWlfYnVpbGRfY29udHJvbHMoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IGF0aWhkbWlfc3BlYyAqc3BlYyA9IGNvZGVjLT5zcGVjOworCWludCBlcnI7CisKKwllcnIgPSBzbmRfaGRhX2NyZWF0ZV9zcGRpZl9vdXRfY3Rscyhjb2RlYywgc3BlYy0+bXVsdGlvdXQuZGlnX291dF9uaWQpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXRpaGRtaV9pbml0KHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQoreworCXNuZF9oZGFfc2VxdWVuY2Vfd3JpdGUoY29kZWMsIGF0aWhkbWlfYmFzaWNfaW5pdCk7CisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE0KKy8qCisgKiByZXN1bWUKKyAqLworc3RhdGljIGludCBhdGloZG1pX3Jlc3VtZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKK3sKKwlhdGloZG1pX2luaXQoY29kZWMpOworCXNuZF9oZGFfcmVzdW1lX3NwZGlmX291dChjb2RlYyk7CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisvKgorICogRGlnaXRhbCBvdXQKKyAqLworc3RhdGljIGludCBhdGloZG1pX2RpZ19wbGF5YmFja19wY21fb3BlbihzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLAorCQkJCSAgICAgc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsCisJCQkJICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKK3sKKwlzdHJ1Y3QgYXRpaGRtaV9zcGVjICpzcGVjID0gY29kZWMtPnNwZWM7CisJcmV0dXJuIHNuZF9oZGFfbXVsdGlfb3V0X2RpZ19vcGVuKGNvZGVjLCAmc3BlYy0+bXVsdGlvdXQpOworfQorCitzdGF0aWMgaW50IGF0aWhkbWlfZGlnX3BsYXliYWNrX3BjbV9jbG9zZShzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLAorCQkJCSAgICAgIHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLAorCQkJCSAgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBhdGloZG1pX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsKKwlyZXR1cm4gc25kX2hkYV9tdWx0aV9vdXRfZGlnX2Nsb3NlKGNvZGVjLCAmc3BlYy0+bXVsdGlvdXQpOworfQorCitzdGF0aWMgc3RydWN0IGhkYV9wY21fc3RyZWFtIGF0aWhkbWlfcGNtX2RpZ2l0YWxfcGxheWJhY2sgPSB7CisJLnN1YnN0cmVhbXMgPSAxLAorCS5jaGFubmVsc19taW4gPSAyLAorCS5jaGFubmVsc19tYXggPSAyLAorCS5uaWQgPSAweDIsIC8qIE5JRCB0byBxdWVyeSBmb3JtYXRzIGFuZCByYXRlcyBhbmQgc2V0dXAgc3RyZWFtcyAqLworCS5vcHMgPSB7CisJCS5vcGVuID0gYXRpaGRtaV9kaWdfcGxheWJhY2tfcGNtX29wZW4sCisJCS5jbG9zZSA9IGF0aWhkbWlfZGlnX3BsYXliYWNrX3BjbV9jbG9zZQorCX0sCit9OworCitzdGF0aWMgaW50IGF0aWhkbWlfYnVpbGRfcGNtcyhzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKK3sKKwlzdHJ1Y3QgYXRpaGRtaV9zcGVjICpzcGVjID0gY29kZWMtPnNwZWM7CisJc3RydWN0IGhkYV9wY20gKmluZm8gPSAmc3BlYy0+cGNtX3JlYzsKKworCWNvZGVjLT5udW1fcGNtcyA9IDE7CisJY29kZWMtPnBjbV9pbmZvID0gaW5mbzsKKworCWluZm8tPm5hbWUgPSAiQVRJIEhETUkiOworCWluZm8tPnN0cmVhbVtTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLXSA9IGF0aWhkbWlfcGNtX2RpZ2l0YWxfcGxheWJhY2s7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYXRpaGRtaV9mcmVlKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQoreworCWtmcmVlKGNvZGVjLT5zcGVjKTsKK30KKworc3RhdGljIHN0cnVjdCBoZGFfY29kZWNfb3BzIGF0aWhkbWlfcGF0Y2hfb3BzID0geworCS5idWlsZF9jb250cm9scyA9IGF0aWhkbWlfYnVpbGRfY29udHJvbHMsCisJLmJ1aWxkX3BjbXMgPSBhdGloZG1pX2J1aWxkX3BjbXMsCisJLmluaXQgPSBhdGloZG1pX2luaXQsCisJLmZyZWUgPSBhdGloZG1pX2ZyZWUsCisjaWZkZWYgQ09ORklHX1BNCisJLnJlc3VtZSA9IGF0aWhkbWlfcmVzdW1lLAorI2VuZGlmCit9OworCitzdGF0aWMgaW50IHBhdGNoX2F0aWhkbWkoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IGF0aWhkbWlfc3BlYyAqc3BlYzsKKworCXNwZWMgPSBremFsbG9jKHNpemVvZigqc3BlYyksIEdGUF9LRVJORUwpOworCWlmIChzcGVjID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJY29kZWMtPnNwZWMgPSBzcGVjOworCisJc3BlYy0+bXVsdGlvdXQubnVtX2RhY3MgPSAwOwkgIC8qIG5vIGFuYWxvZyAqLworCXNwZWMtPm11bHRpb3V0Lm1heF9jaGFubmVscyA9IDI7CisJc3BlYy0+bXVsdGlvdXQuZGlnX291dF9uaWQgPSAweDI7IC8qIE5JRCBmb3IgY29weWluZyBhbmFsb2cgdG8gZGlnaXRhbCwKKwkJCQkJICAgKiBzZWVtcyB0byBiZSB1bnVzZWQgaW4gcHVyZS1kaWdpdGFsCisJCQkJCSAgICogY2FzZS4gKi8KKworCWNvZGVjLT5wYXRjaF9vcHMgPSBhdGloZG1pX3BhdGNoX29wczsKKworCXJldHVybiAwOworfQorCisvKgorICogcGF0Y2ggZW50cmllcworICovCitzdHJ1Y3QgaGRhX2NvZGVjX3ByZXNldCBzbmRfaGRhX3ByZXNldF9hdGloZG1pW10gPSB7CisJeyAuaWQgPSAweDEwMDI3OTNjLCAubmFtZSA9ICJBVEkgUlM2MDAgSERNSSIsIC5wYXRjaCA9IHBhdGNoX2F0aWhkbWkgfSwKKwl7fSAvKiB0ZXJtaW5hdG9yICovCit9OwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYwppbmRleCBmMGU5YTljLi45OGI5ZjE2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYwpAQCAtMjE3NCw2ICsyMTc0LDcgQEAKIAogCXsgLm1vZGVsbmFtZSA9ICJsZyIsIC5jb25maWcgPSBBTEM4ODBfTEcgfSwKIAl7IC5wY2lfc3VidmVuZG9yID0gMHgxODU0LCAucGNpX3N1YmRldmljZSA9IDB4MDAzYiwgLmNvbmZpZyA9IEFMQzg4MF9MRyB9LAorCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDE4NTQsIC5wY2lfc3ViZGV2aWNlID0gMHgwMDY4LCAuY29uZmlnID0gQUxDODgwX0xHIH0sCiAKIAl7IC5tb2RlbG5hbWUgPSAibGctbHciLCAuY29uZmlnID0gQUxDODgwX0xHX0xXIH0sCiAJeyAucGNpX3N1YnZlbmRvciA9IDB4MTg1NCwgLnBjaV9zdWJkZXZpY2UgPSAweDAwMTgsIC5jb25maWcgPSBBTEM4ODBfTEdfTFcgfSwKQEAgLTMxMDUsNiArMzEwNiw3IEBACiAJeyB9CiB9OwogCisjaWYgMCAvKiBzaG91bGQgYmUgaWRlbnRpY2FsIHdpdGggYWxjMjYwX2luaXRfdmVyYnM/ICovCiBzdGF0aWMgc3RydWN0IGhkYV92ZXJiIGFsYzI2MF9ocF9pbml0X3ZlcmJzW10gPSB7CiAJLyogSGVhZHBob25lIGFuZCBvdXRwdXQgKi8KIAl7MHgxMCwgQUNfVkVSQl9TRVRfUElOX1dJREdFVF9DT05UUk9MLCAweGMwfSwKQEAgLTMxNTEsNiArMzE1Myw3IEBACiAJezB4MGEsIEFDX1ZFUkJfU0VUX0FNUF9HQUlOX01VVEUsICgweDcwMDAgfCAoMHgwMSA8PCA4KSl9LAogCXsgfQogfTsKKyNlbmRpZgogCiBzdGF0aWMgc3RydWN0IGhkYV92ZXJiIGFsYzI2MF9ocF8zMDEzX2luaXRfdmVyYnNbXSA9IHsKIAkvKiBMaW5lIG91dCBhbmQgb3V0cHV0ICovCkBAIC0zODIyLDEyICszODI1LDE2IEBACiAJeyAubW9kZWxuYW1lID0gImJhc2ljIiwgLmNvbmZpZyA9IEFMQzI2MF9CQVNJQyB9LAogCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDEwNGQsIC5wY2lfc3ViZGV2aWNlID0gMHg4MWJiLAogCSAgLmNvbmZpZyA9IEFMQzI2MF9CQVNJQyB9LCAvKiBTb255IFZBSU8gKi8KKwl7IC5wY2lfc3VidmVuZG9yID0gMHgxMDRkLCAucGNpX3N1YmRldmljZSA9IDB4ODFjYywKKwkgIC5jb25maWcgPSBBTEMyNjBfQkFTSUMgfSwgLyogU29ueSBWQUlPIFZHTi1TM0hQICovCisJeyAucGNpX3N1YnZlbmRvciA9IDB4MTA0ZCwgLnBjaV9zdWJkZXZpY2UgPSAweDgxY2QsCisJICAuY29uZmlnID0gQUxDMjYwX0JBU0lDIH0sIC8qIFNvbnkgVkFJTyAqLwogCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDE1MmQsIC5wY2lfc3ViZGV2aWNlID0gMHgwNzI5LAogCSAgLmNvbmZpZyA9IEFMQzI2MF9CQVNJQyB9LCAvKiBDVEwgVHJhdmVsIE1hc3RlciBVNTUzVyAqLwogCXsgLm1vZGVsbmFtZSA9ICJocCIsIC5jb25maWcgPSBBTEMyNjBfSFAgfSwKIAl7IC5wY2lfc3VidmVuZG9yID0gMHgxMDNjLCAucGNpX3N1YmRldmljZSA9IDB4MzAxMCwgLmNvbmZpZyA9IEFMQzI2MF9IUCB9LAogCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDEwM2MsIC5wY2lfc3ViZGV2aWNlID0gMHgzMDExLCAuY29uZmlnID0gQUxDMjYwX0hQIH0sCi0JeyAucGNpX3N1YnZlbmRvciA9IDB4MTAzYywgLnBjaV9zdWJkZXZpY2UgPSAweDMwMTIsIC5jb25maWcgPSBBTEMyNjBfSFAgfSwKKwl7IC5wY2lfc3VidmVuZG9yID0gMHgxMDNjLCAucGNpX3N1YmRldmljZSA9IDB4MzAxMiwgLmNvbmZpZyA9IEFMQzI2MF9IUF8zMDEzIH0sCiAJeyAucGNpX3N1YnZlbmRvciA9IDB4MTAzYywgLnBjaV9zdWJkZXZpY2UgPSAweDMwMTMsIC5jb25maWcgPSBBTEMyNjBfSFBfMzAxMyB9LAogCXsgLnBjaV9zdWJ2ZW5kb3IgPSAweDEwM2MsIC5wY2lfc3ViZGV2aWNlID0gMHgzMDE0LCAuY29uZmlnID0gQUxDMjYwX0hQIH0sCiAJeyAucGNpX3N1YnZlbmRvciA9IDB4MTAzYywgLnBjaV9zdWJkZXZpY2UgPSAweDMwMTUsIC5jb25maWcgPSBBTEMyNjBfSFAgfSwKQEAgLTM4NjIsNyArMzg2OSw3IEBACiAJCS5taXhlcnMgPSB7IGFsYzI2MF9iYXNlX291dHB1dF9taXhlciwKIAkJCSAgICBhbGMyNjBfaW5wdXRfbWl4ZXIsCiAJCQkgICAgYWxjMjYwX2NhcHR1cmVfYWx0X21peGVyIH0sCi0JCS5pbml0X3ZlcmJzID0geyBhbGMyNjBfaHBfaW5pdF92ZXJicyB9LAorCQkuaW5pdF92ZXJicyA9IHsgYWxjMjYwX2luaXRfdmVyYnMgfSwKIAkJLm51bV9kYWNzID0gQVJSQVlfU0laRShhbGMyNjBfZGFjX25pZHMpLAogCQkuZGFjX25pZHMgPSBhbGMyNjBfZGFjX25pZHMsCiAJCS5udW1fYWRjX25pZHMgPSBBUlJBWV9TSVpFKGFsYzI2MF9ocF9hZGNfbmlkcyksCkBAIC00MDk0LDIxICs0MTAxLDYgQEAKIAlIREFfQ09ERUNfTVVURSgiRnJvbnQgTWljIFBsYXliYWNrIFN3aXRjaCIsIDB4MGIsIDB4MSwgSERBX0lOUFVUKSwKIAlIREFfQ09ERUNfVk9MVU1FKCJQQyBTcGVha2VyIFBsYXliYWNrIFZvbHVtZSIsIDB4MGIsIDB4MDUsIEhEQV9JTlBVVCksCiAJSERBX0NPREVDX01VVEUoIlBDIFNwZWFrZXIgUGxheWJhY2sgU3dpdGNoIiwgMHgwYiwgMHgwNSwgSERBX0lOUFVUKSwKLQlIREFfQ09ERUNfVk9MVU1FKCJDYXB0dXJlIFZvbHVtZSIsIDB4MDcsIDB4MCwgSERBX0lOUFVUKSwKLQlIREFfQ09ERUNfTVVURSgiQ2FwdHVyZSBTd2l0Y2giLCAweDA3LCAweDAsIEhEQV9JTlBVVCksCi0JSERBX0NPREVDX1ZPTFVNRV9JRFgoIkNhcHR1cmUgVm9sdW1lIiwgMSwgMHgwOCwgMHgwLCBIREFfSU5QVVQpLAotCUhEQV9DT0RFQ19NVVRFX0lEWCgiQ2FwdHVyZSBTd2l0Y2giLCAxLCAweDA4LCAweDAsIEhEQV9JTlBVVCksCi0JSERBX0NPREVDX1ZPTFVNRV9JRFgoIkNhcHR1cmUgVm9sdW1lIiwgMiwgMHgwOSwgMHgwLCBIREFfSU5QVVQpLAotCUhEQV9DT0RFQ19NVVRFX0lEWCgiQ2FwdHVyZSBTd2l0Y2giLCAyLCAweDA5LCAweDAsIEhEQV9JTlBVVCksCi0JewotCQkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKLQkJLyogLm5hbWUgPSAiQ2FwdHVyZSBTb3VyY2UiLCAqLwotCQkubmFtZSA9ICJJbnB1dCBTb3VyY2UiLAotCQkuY291bnQgPSAzLAotCQkuaW5mbyA9IGFsYzg4Ml9tdXhfZW51bV9pbmZvLAotCQkuZ2V0ID0gYWxjODgyX211eF9lbnVtX2dldCwKLQkJLnB1dCA9IGFsYzg4Ml9tdXhfZW51bV9wdXQsCi0JfSwKIAl7IH0gLyogZW5kICovCiB9OwogCkBAIC00MzQyLDggKzQzMzQsNiBAQAogCQkubnVtX2RhY3MgPSBBUlJBWV9TSVpFKGFsYzg4Ml9kYWNfbmlkcyksCiAJCS5kYWNfbmlkcyA9IGFsYzg4Ml9kYWNfbmlkcywKIAkJLmRpZ19vdXRfbmlkID0gQUxDODgyX0RJR09VVF9OSUQsCi0JCS5udW1fYWRjX25pZHMgPSBBUlJBWV9TSVpFKGFsYzg4Ml9hZGNfbmlkcyksCi0JCS5hZGNfbmlkcyA9IGFsYzg4Ml9hZGNfbmlkcywKIAkJLmRpZ19pbl9uaWQgPSBBTEM4ODJfRElHSU5fTklELAogCQkubnVtX2NoYW5uZWxfbW9kZSA9IEFSUkFZX1NJWkUoYWxjODgyX2NoX21vZGVzKSwKIAkJLmNoYW5uZWxfbW9kZSA9IGFsYzg4Ml9jaF9tb2RlcywKQEAgLTQzNTUsOCArNDM0NSw2IEBACiAJCS5udW1fZGFjcyA9IEFSUkFZX1NJWkUoYWxjODgyX2RhY19uaWRzKSwKIAkJLmRhY19uaWRzID0gYWxjODgyX2RhY19uaWRzLAogCQkuZGlnX291dF9uaWQgPSBBTEM4ODJfRElHT1VUX05JRCwKLQkJLm51bV9hZGNfbmlkcyA9IEFSUkFZX1NJWkUoYWxjODgyX2FkY19uaWRzKSwKLQkJLmFkY19uaWRzID0gYWxjODgyX2FkY19uaWRzLAogCQkuZGlnX2luX25pZCA9IEFMQzg4Ml9ESUdJTl9OSUQsCiAJCS5udW1fY2hhbm5lbF9tb2RlID0gQVJSQVlfU0laRShhbGM4ODJfc2l4c3RhY2tfbW9kZXMpLAogCQkuY2hhbm5lbF9tb2RlID0gYWxjODgyX3NpeHN0YWNrX21vZGVzLApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9zaWdtYXRlbC5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9zaWdtYXRlbC5jCmluZGV4IDhjNDQwZmIuLjM2ZjE5OTQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfc2lnbWF0ZWwuYworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3NpZ21hdGVsLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNkZWZpbmUgU1RBQ19SRUYJCTAKICNkZWZpbmUgU1RBQ19EOTQ1R1RQMwkJMQogI2RlZmluZSBTVEFDX0Q5NDVHVFA1CQkyCisjZGVmaW5lIFNUQUNfTUFDTUlOSQkJMwogCiBzdHJ1Y3Qgc2lnbWF0ZWxfc3BlYyB7CiAJc3RydWN0IHNuZF9rY29udHJvbF9uZXcgKm1peGVyc1s0XTsKQEAgLTUyLDYgKzUzLDcgQEAKIAl1bnNpZ25lZCBpbnQgbWljX3N3aXRjaDogMTsKIAl1bnNpZ25lZCBpbnQgYWx0X3N3aXRjaDogMTsKIAl1bnNpZ25lZCBpbnQgaHBfZGV0ZWN0OiAxOworCXVuc2lnbmVkIGludCBncGlvX211dGU6IDE7CiAKIAkvKiBwbGF5YmFjayAqLwogCXN0cnVjdCBoZGFfbXVsdGlfb3V0IG11bHRpb3V0OwpAQCAtMjkzLDYgKzI5NSw3IEBACiAJcmVmOTIyeF9waW5fY29uZmlncywKIAlkOTQ1Z3RwM19waW5fY29uZmlncywKIAlkOTQ1Z3RwNV9waW5fY29uZmlncywKKwlOVUxMLAkJLyogU1RBQ19NQUNNSU5JICovCiB9OwogCiBzdGF0aWMgc3RydWN0IGhkYV9ib2FyZF9jb25maWcgc3RhYzkyMnhfY2ZnX3RibFtdID0gewpAQCAtMzI0LDYgKzMyNyw5IEBACiAJeyAucGNpX3N1YnZlbmRvciA9IFBDSV9WRU5ET1JfSURfSU5URUwsCiAJICAucGNpX3N1YmRldmljZSA9IDB4MDQxNywKIAkgIC5jb25maWcgPSBTVEFDX0Q5NDVHVFA1IH0sCS8qIEludGVsIEQ5NzVYQksgLSA1IFN0YWNrICovCisJeyAucGNpX3N1YnZlbmRvciA9IDB4ODM4NCwKKwkgIC5wY2lfc3ViZGV2aWNlID0gMHg3NjgwLAorCSAgLmNvbmZpZyA9IFNUQUNfTUFDTUlOSSB9LAkvKiBBcHBsZSBNYWMgTWluaSAoZWFybHkgMjAwNikgKi8KIAl7fSAvKiB0ZXJtaW5hdG9yICovCiB9OwogCkBAIC04NDEsNiArODQ3LDE5IEBACiAJCX0KIAl9CiAKKwlpZiAoaW11eC0+bnVtX2l0ZW1zID09IDEpIHsKKwkJLyoKKwkJICogU2V0IHRoZSBjdXJyZW50IGlucHV0IGZvciB0aGUgbXV4ZXMuCisJCSAqIFRoZSBTVEFDOTIyMSBoYXMgdHdvIGlucHV0IG11eGVzIHdpdGggaWRlbnRpY2FsIHNvdXJjZQorCQkgKiBOSUQgbGlzdHMuICBIb3BlZnVsbHkgdGhpcyB3b24ndCBnZXQgY29uZnVzZWQuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgc3BlYy0+bnVtX211eGVzOyBpKyspIHsKKwkJCXNuZF9oZGFfY29kZWNfd3JpdGUoY29kZWMsIHNwZWMtPm11eF9uaWRzW2ldLCAwLAorCQkJCQkgICAgQUNfVkVSQl9TRVRfQ09OTkVDVF9TRUwsCisJCQkJCSAgICBpbXV4LT5pdGVtc1swXS5pbmRleCk7CisJCX0KKwl9CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTQ2LDYgKzk2NSw0NSBAQAogCXJldHVybiAxOwogfQogCisvKgorICogRWFybHkgMjAwNiBJbnRlbCBNYWNpbnRvc2hlcyB3aXRoIFNUQUM5MjIwWDUgY29kZWNzIHNlZW0gdG8gaGF2ZSBhCisgKiBmdW5reSBleHRlcm5hbCBtdXRlIGNvbnRyb2wgdXNpbmcgR1BJTyBwaW5zLgorICovCisKK3N0YXRpYyB2b2lkIHN0YWM5MjJ4X2dwaW9fbXV0ZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgaW50IHBpbiwgaW50IG11dGVkKQoreworCXVuc2lnbmVkIGludCBncGlvc3RhdGUsIGdwaW9tYXNrLCBncGlvZGlyOworCisJZ3Bpb3N0YXRlID0gc25kX2hkYV9jb2RlY19yZWFkKGNvZGVjLCBjb2RlYy0+YWZnLCAwLAorCQkJCSAgICAgICBBQ19WRVJCX0dFVF9HUElPX0RBVEEsIDApOworCisJaWYgKCFtdXRlZCkKKwkJZ3Bpb3N0YXRlIHw9ICgxIDw8IHBpbik7CisJZWxzZQorCQlncGlvc3RhdGUgJj0gfigxIDw8IHBpbik7CisKKwlncGlvbWFzayA9IHNuZF9oZGFfY29kZWNfcmVhZChjb2RlYywgY29kZWMtPmFmZywgMCwKKwkJCQkgICAgICBBQ19WRVJCX0dFVF9HUElPX01BU0ssIDApOworCWdwaW9tYXNrIHw9ICgxIDw8IHBpbik7CisKKwlncGlvZGlyID0gc25kX2hkYV9jb2RlY19yZWFkKGNvZGVjLCBjb2RlYy0+YWZnLCAwLAorCQkJCSAgICAgQUNfVkVSQl9HRVRfR1BJT19ESVJFQ1RJT04sIDApOworCWdwaW9kaXIgfD0gKDEgPDwgcGluKTsKKworCS8qIEFwcGxlSERBIHNlZW1zIHRvIGRvIHRoaXMgLS0gV1RGIGlzIHRoaXMgdmVyYj8/ICovCisJc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgY29kZWMtPmFmZywgMCwgMHg3ZTcsIDApOworCisJc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgY29kZWMtPmFmZywgMCwKKwkJCSAgICBBQ19WRVJCX1NFVF9HUElPX01BU0ssIGdwaW9tYXNrKTsKKwlzbmRfaGRhX2NvZGVjX3dyaXRlKGNvZGVjLCBjb2RlYy0+YWZnLCAwLAorCQkJICAgIEFDX1ZFUkJfU0VUX0dQSU9fRElSRUNUSU9OLCBncGlvZGlyKTsKKworCW1zbGVlcCgxKTsKKworCXNuZF9oZGFfY29kZWNfd3JpdGUoY29kZWMsIGNvZGVjLT5hZmcsIDAsCisJCQkgICAgQUNfVkVSQl9TRVRfR1BJT19EQVRBLCBncGlvc3RhdGUpOworfQorCiBzdGF0aWMgaW50IHN0YWM5Mnh4X2luaXQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCiB7CiAJc3RydWN0IHNpZ21hdGVsX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsKQEAgLTk4Miw2ICsxMDQwLDExIEBACiAJCXN0YWM5Mnh4X2F1dG9fc2V0X3BpbmN0bChjb2RlYywgY2ZnLT5kaWdfaW5fcGluLAogCQkJCQkgQUNfUElOQ1RMX0lOX0VOKTsKIAorCWlmIChzcGVjLT5ncGlvX211dGUpIHsKKwkJc3RhYzkyMnhfZ3Bpb19tdXRlKGNvZGVjLCAwLCAwKTsKKwkJc3RhYzkyMnhfZ3Bpb19tdXRlKGNvZGVjLCAxLCAwKTsKKwl9CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTEzMiw3ICsxMTk1LDcgQEAKIAlzcGVjLT5ib2FyZF9jb25maWcgPSBzbmRfaGRhX2NoZWNrX2JvYXJkX2NvbmZpZyhjb2RlYywgc3RhYzkyMnhfY2ZnX3RibCk7CiAJaWYgKHNwZWMtPmJvYXJkX2NvbmZpZyA8IDApCiAgICAgICAgICAgICAgICAgc25kX3ByaW50ZGQoS0VSTl9JTkZPICJoZGFfY29kZWM6IFVua25vd24gbW9kZWwgZm9yIFNUQUM5MjJ4LCB1c2luZyBCSU9TIGRlZmF1bHRzXG4iKTsKLQllbHNlIHsKKwllbHNlIGlmIChzdGFjOTIyeF9icmRfdGJsW3NwZWMtPmJvYXJkX2NvbmZpZ10gIT0gTlVMTCkgewogCQlzcGVjLT5udW1fcGlucyA9IDEwOwogCQlzcGVjLT5waW5fbmlkcyA9IHN0YWM5MjJ4X3Bpbl9uaWRzOwogCQlzcGVjLT5waW5fY29uZmlncyA9IHN0YWM5MjJ4X2JyZF90Ymxbc3BlYy0+Ym9hcmRfY29uZmlnXTsKQEAgLTExNTQsNiArMTIxNyw5IEBACiAJCXJldHVybiBlcnI7CiAJfQogCisJaWYgKHNwZWMtPmJvYXJkX2NvbmZpZyA9PSBTVEFDX01BQ01JTkkpCisJCXNwZWMtPmdwaW9fbXV0ZSA9IDE7CisKIAljb2RlYy0+cGF0Y2hfb3BzID0gc3RhYzkyeHhfcGF0Y2hfb3BzOwogCiAJcmV0dXJuIDA7CkBAIC0xMjYyLDEzICsxMzI4LDEzIEBACiAJaW50IGNoYW5nZTsKIAogCWNoYW5nZSA9IHNuZF9oZGFfY29kZWNfYW1wX3VwZGF0ZShjb2RlYywgMHgwMiwgMCwgSERBX09VVFBVVCwgMCwKLQkJCQkJICAweDgwLCB2YWxwWzBdICYgMHg4MCk7CisJCQkJCSAgMHg4MCwgKHZhbHBbMF0gPyAwIDogMHg4MCkpOwogCWNoYW5nZSB8PSBzbmRfaGRhX2NvZGVjX2FtcF91cGRhdGUoY29kZWMsIDB4MDIsIDEsIEhEQV9PVVRQVVQsIDAsCi0JCQkJCSAgIDB4ODAsIHZhbHBbMV0gJiAweDgwKTsKKwkJCQkJICAgMHg4MCwgKHZhbHBbMV0gPyAwIDogMHg4MCkpOwogCXNuZF9oZGFfY29kZWNfYW1wX3VwZGF0ZShjb2RlYywgMHgwNSwgMCwgSERBX09VVFBVVCwgMCwKLQkJCQkgMHg4MCwgdmFscFswXSAmIDB4ODApOworCQkJCSAweDgwLCAodmFscFswXSA/IDAgOiAweDgwKSk7CiAJc25kX2hkYV9jb2RlY19hbXBfdXBkYXRlKGNvZGVjLCAweDA1LCAxLCBIREFfT1VUUFVULCAwLAotCQkJCSAweDgwLCB2YWxwWzFdICYgMHg4MCk7CisJCQkJIDB4ODAsICh2YWxwWzFdID8gMCA6IDB4ODApKTsKIAlyZXR1cm4gY2hhbmdlOwogfQogCkBAIC0xMzcwLDYgKzE0MzYsMTIgQEAKICAJeyAuaWQgPSAweDgzODQ3NjgxLCAubmFtZSA9ICJTVEFDOTIyMEQvOTIyM0QgQTIiLCAucGF0Y2ggPSBwYXRjaF9zdGFjOTIyeCB9LAogIAl7IC5pZCA9IDB4ODM4NDc2ODIsIC5uYW1lID0gIlNUQUM5MjIxIEEyIiwgLnBhdGNoID0gcGF0Y2hfc3RhYzkyMnggfSwKICAJeyAuaWQgPSAweDgzODQ3NjgzLCAubmFtZSA9ICJTVEFDOTIyMUQgQTIiLCAucGF0Y2ggPSBwYXRjaF9zdGFjOTIyeCB9LAorIAl7IC5pZCA9IDB4ODM4NDc2MTgsIC5uYW1lID0gIlNUQUM5MjI3IiwgLnBhdGNoID0gcGF0Y2hfc3RhYzkyMnggfSwKKyAJeyAuaWQgPSAweDgzODQ3NjE5LCAubmFtZSA9ICJTVEFDOTIyNyIsIC5wYXRjaCA9IHBhdGNoX3N0YWM5MjJ4IH0sCisgCXsgLmlkID0gMHg4Mzg0NzYxNiwgLm5hbWUgPSAiU1RBQzkyMjgiLCAucGF0Y2ggPSBwYXRjaF9zdGFjOTIyeCB9LAorIAl7IC5pZCA9IDB4ODM4NDc2MTcsIC5uYW1lID0gIlNUQUM5MjI4IiwgLnBhdGNoID0gcGF0Y2hfc3RhYzkyMnggfSwKKyAJeyAuaWQgPSAweDgzODQ3NjE0LCAubmFtZSA9ICJTVEFDOTIyOSIsIC5wYXRjaCA9IHBhdGNoX3N0YWM5MjJ4IH0sCisgCXsgLmlkID0gMHg4Mzg0NzYxNSwgLm5hbWUgPSAiU1RBQzkyMjkiLCAucGF0Y2ggPSBwYXRjaF9zdGFjOTIyeCB9LAogIAl7IC5pZCA9IDB4ODM4NDc2MjAsIC5uYW1lID0gIlNUQUM5Mjc0IiwgLnBhdGNoID0gcGF0Y2hfc3RhYzkyN3ggfSwKICAJeyAuaWQgPSAweDgzODQ3NjIxLCAubmFtZSA9ICJTVEFDOTI3NEQiLCAucGF0Y2ggPSBwYXRjaF9zdGFjOTI3eCB9LAogIAl7IC5pZCA9IDB4ODM4NDc2MjIsIC5uYW1lID0gIlNUQUM5MjczWCIsIC5wYXRjaCA9IHBhdGNoX3N0YWM5Mjd4IH0sCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9hdXJlb24uYyBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCmluZGV4IDMzNmRjNDguLmNhNzRmNWIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCkBAIC0xMjgxLDkgKzEyODEsMTUgQEAKIAogCXRtcDIgPSB0bXAgPSBzbmRfaWNlMTcxMl9ncGlvX3JlYWQoaWNlKTsKIAlpZiAoZW5hYmxlKQotCQl0bXAgfD0gQVVSRU9OX0hQX1NFTDsKKwkJaWYgKGljZS0+ZWVwcm9tLnN1YnZlbmRvciAhPSBWVDE3MjRfU1VCREVWSUNFX1BST0RJR1k3MUxUKQorCQkJdG1wIHw9IEFVUkVPTl9IUF9TRUw7CisJCWVsc2UKKwkJCXRtcCB8PSBQUk9ESUdZX0hQX1NFTDsKIAllbHNlCi0JCXRtcCAmPSB+IEFVUkVPTl9IUF9TRUw7CisJCWlmIChpY2UtPmVlcHJvbS5zdWJ2ZW5kb3IgIT0gVlQxNzI0X1NVQkRFVklDRV9QUk9ESUdZNzFMVCkKKwkJCXRtcCAmPSB+IEFVUkVPTl9IUF9TRUw7CisJCWVsc2UKKwkJCXRtcCAmPSB+IFBST0RJR1lfSFBfU0VMOwogCWlmICh0bXAgIT0gdG1wMikgewogCQlzbmRfaWNlMTcxMl9ncGlvX3dyaXRlKGljZSwgdG1wKTsKIAkJcmV0dXJuIDE7CkBAIC0yMDc5LDE2ICsyMDg1LDE2IEBACiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwcm9kaWd5NzFsdF9lZXByb21bXSBfX2RldmluaXRkYXRhID0gewotCTB4MGIsCS8qIFNZU0NJTkY6IGNsb2NrIDUxMiwgc3BkaWYtaW4vQURDLCA0REFDcyAqLworCTB4NGIsCS8qIFNZU0NJTkY6IGNsb2NrIDUxMiwgc3BkaWYtaW4vQURDLCA0REFDcyAqLwogCTB4ODAsCS8qIEFDTElOSzogSTJTICovCiAJMHhmYywJLyogSTJTOiB2b2wsIDk2aywgMjRiaXQsIDE5MmsgKi8KLQkweGMzLAkvKiBTUERVRjogb3V0LWVuLCBvdXQtaW50ICovCi0JMHgwMCwJLyogR1BJT19ESVIgKi8KLQkweDA3LAkvKiBHUElPX0RJUjEgKi8KLQkweDAwLAkvKiBHUElPX0RJUjIgKi8KLQkweGZmLAkvKiBHUElPX01BU0sgKi8KLQkweGY4LAkvKiBHUElPX01BU0sxICovCi0JMHhmZiwJLyogR1BJT19NQVNLMiAqLworCTB4YzMsCS8qIFNQRElGOiBvdXQtZW4sIG91dC1pbnQsIHNwZGlmLWluICovCisJMHhmZiwJLyogR1BJT19ESVIgKi8KKwkweGZmLAkvKiBHUElPX0RJUjEgKi8KKwkweDVmLAkvKiBHUElPX0RJUjIgKi8KKwkweDAwLAkvKiBHUElPX01BU0sgKi8KKwkweDAwLAkvKiBHUElPX01BU0sxICovCisJMHgwMCwJLyogR1BJT19NQVNLMiAqLwogCTB4MDAsCS8qIEdQSU9fU1RBVEUgKi8KIAkweDAwLAkvKiBHUElPX1NUQVRFMSAqLwogCTB4MDAsCS8qIEdQSU9fU1RBVEUyICovCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9hdXJlb24uaCBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5oCmluZGV4IDk4YTY3NTIuLjNiN2JlYTYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5oCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5oCkBAIC01OCw1ICs1OCw2IEBACiAjZGVmaW5lIFBST0RJR1lfV01fQ1MJCSgxIDw8IDgpCiAjZGVmaW5lIFBST0RJR1lfU1BJX01PU0kJKDEgPDwgMTApCiAjZGVmaW5lIFBST0RJR1lfU1BJX0NMSwkJKDEgPDwgOSkKKyNkZWZpbmUgUFJPRElHWV9IUF9TRUwJCSgxIDw8IDUpCiAKICNlbmRpZiAvKiBfX1NPVU5EX0FVUkVPTl9IICovCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9ld3MuYyBiL3NvdW5kL3BjaS9pY2UxNzEyL2V3cy5jCmluZGV4IDJjNTI5ZTcuLmIxMzUzODkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL2V3cy5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL2V3cy5jCkBAIC0xMDMxLDYgKzEwMzEsOSBAQAogCQkubW9kZWwgPSAiZG14NmZpcmUiLAogCQkuY2hpcF9pbml0ID0gc25kX2ljZTE3MTJfZXdzX2luaXQsCiAJCS5idWlsZF9jb250cm9scyA9IHNuZF9pY2UxNzEyX2V3c19hZGRfY29udHJvbHMsCisJCS5tcHU0MDFfMV9uYW1lID0gIk1JREktRnJvbnQgRE1YNmZpcmUiLAorCQkubXB1NDAxXzJfbmFtZSA9ICJXYXZldGFibGUgRE1YNmZpcmUiLAorCQkubXB1NDAxXzJfaW5mb19mbGFncyA9IE1QVTQwMV9JTkZPX09VVFBVVCwKIAl9LAogCXsgfSAvKiB0ZXJtaW5hdG9yICovCiB9OwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcxMi5jIGIvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcxMi5jCmluZGV4IGM1Njc5M2IuLjg0NTkwNzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuYworKysgYi9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzEyLmMKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CiAjaW5jbHVkZSA8c291bmQvY3M4NDI3Lmg+CiAjaW5jbHVkZSA8c291bmQvaW5mby5oPgotI2luY2x1ZGUgPHNvdW5kL21wdTQwMS5oPgogI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwuaD4KIAogI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZGVmLmg+CkBAIC0xNTk2LDcgKzE1OTUsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhpY2UtPmNhcmQsICJpY2UxNzEyIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBpY2UsIDEwMjQsIHNuZF9pY2UxNzEyX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgaWNlLCBzbmRfaWNlMTcxMl9wcm9jX3JlYWQpOwogfQogCiAvKgpAQCAtMjM5OCwxMyArMjM5NywxNCBAQAogCXVkZWxheSgyMDApOwogCW91dGIoSUNFMTcxMl9OQVRJVkUsIElDRVJFRyhpY2UsIENPTlRST0wpKTsKIAl1ZGVsYXkoMjAwKTsKLQlpZiAoaWNlLT5lZXByb20uc3VidmVuZG9yID09IElDRTE3MTJfU1VCREVWSUNFX0RNWDZGSVJFICYmICFpY2UtPmR4cl9lbmFibGUpIHsKLSAgICAgICAgICAgICAgICAvKiBMaW1pdCBhY3RpdmUgQURDcyBhbmQgREFDcyB0byA2OyAgKi8KLSAgICAgICAgICAgICAgICAvKiBOb3RlOiBEWFIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgKi8KLQkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGljZS0+cGNpLCAweDYwLCAweDJhKTsKLQl9IGVsc2UgewotCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoaWNlLT5wY2ksIDB4NjAsIGljZS0+ZWVwcm9tLmRhdGFbSUNFX0VFUDFfQ09ERUNdKTsKLQl9CisJaWYgKGljZS0+ZWVwcm9tLnN1YnZlbmRvciA9PSBJQ0UxNzEyX1NVQkRFVklDRV9ETVg2RklSRSAmJgorCSAgICAhaWNlLT5keHJfZW5hYmxlKQorCQkvKiAgU2V0IGVlcHJvbSB2YWx1ZSB0byBsaW1pdCBhY3RpdmUgQURDcyBhbmQgREFDcyB0byA2OworCQkgKiAgQWxzbyBkaXNhYmxlIEFDOTcgYXMgbm8gaGFyZHdhcmUgaW4gc3RhbmRhcmQgNmZpcmUgY2FyZC9ib3gKKwkJICogIE5vdGU6IERYUiBleHRlbnNpb25zIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZAorCQkgKi8KKwkJaWNlLT5lZXByb20uZGF0YVtJQ0VfRUVQMV9DT0RFQ10gPSAweDNhOworCXBjaV93cml0ZV9jb25maWdfYnl0ZShpY2UtPnBjaSwgMHg2MCwgaWNlLT5lZXByb20uZGF0YVtJQ0VfRUVQMV9DT0RFQ10pOwogCXBjaV93cml0ZV9jb25maWdfYnl0ZShpY2UtPnBjaSwgMHg2MSwgaWNlLT5lZXByb20uZGF0YVtJQ0VfRUVQMV9BQ0xJTktdKTsKIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoaWNlLT5wY2ksIDB4NjIsIGljZS0+ZWVwcm9tLmRhdGFbSUNFX0VFUDFfSTJTSURdKTsKIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoaWNlLT5wY2ksIDB4NjMsIGljZS0+ZWVwcm9tLmRhdGFbSUNFX0VFUDFfU1BESUZdKTsKQEAgLTI3MzcsMjEgKzI3MzcsMzggQEAKIAogCWlmICghIGMtPm5vX21wdTQwMSkgewogCQlpZiAoKGVyciA9IHNuZF9tcHU0MDFfdWFydF9uZXcoY2FyZCwgMCwgTVBVNDAxX0hXX0lDRTE3MTIsCi0JCQkJCSAgICAgICBJQ0VSRUcoaWNlLCBNUFUxX0NUUkwpLCAxLAorCQkJCQkgICAgICAgSUNFUkVHKGljZSwgTVBVMV9DVFJMKSwKKwkJCQkJICAgICAgIChjLT5tcHU0MDFfMV9pbmZvX2ZsYWdzIHwKKwkJCQkJCU1QVTQwMV9JTkZPX0lOVEVHUkFURUQpLAogCQkJCQkgICAgICAgaWNlLT5pcnEsIDAsCiAJCQkJCSAgICAgICAmaWNlLT5ybWlkaVswXSkpIDwgMCkgewogCQkJc25kX2NhcmRfZnJlZShjYXJkKTsKIAkJCXJldHVybiBlcnI7CiAJCX0KKwkJaWYgKGMtPm1wdTQwMV8xX25hbWUpCisJCQkvKiAgUHJlZmVyZWQgbmFtZSBhdmFpbGFibGUgaW4gY2FyZF9pbmZvICovCisJCQlzbnByaW50ZihpY2UtPnJtaWRpWzBdLT5uYW1lLAorCQkJCSBzaXplb2YoaWNlLT5ybWlkaVswXS0+bmFtZSksCisJCQkJICIlcyAlZCIsIGMtPm1wdTQwMV8xX25hbWUsIGNhcmQtPm51bWJlcik7CiAKLQkJaWYgKGljZS0+ZWVwcm9tLmRhdGFbSUNFX0VFUDFfQ09ERUNdICYgSUNFMTcxMl9DRkdfMnhNUFU0MDEpCisJCWlmIChpY2UtPmVlcHJvbS5kYXRhW0lDRV9FRVAxX0NPREVDXSAmIElDRTE3MTJfQ0ZHXzJ4TVBVNDAxKSB7CisJCQkvKiAgMm5kIHBvcnQgdXNlZCAgKi8KIAkJCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAxLCBNUFU0MDFfSFdfSUNFMTcxMiwKLQkJCQkJCSAgICAgICBJQ0VSRUcoaWNlLCBNUFUyX0NUUkwpLCAxLAorCQkJCQkJICAgICAgIElDRVJFRyhpY2UsIE1QVTJfQ1RSTCksCisJCQkJCQkgICAgICAgKGMtPm1wdTQwMV8yX2luZm9fZmxhZ3MgfAorCQkJCQkJCU1QVTQwMV9JTkZPX0lOVEVHUkFURUQpLAogCQkJCQkJICAgICAgIGljZS0+aXJxLCAwLAogCQkJCQkJICAgICAgICZpY2UtPnJtaWRpWzFdKSkgPCAwKSB7CiAJCQkJc25kX2NhcmRfZnJlZShjYXJkKTsKIAkJCQlyZXR1cm4gZXJyOwogCQkJfQorCQkJaWYgKGMtPm1wdTQwMV8yX25hbWUpCisJCQkJLyogIFByZWZlcmVkIG5hbWUgYXZhaWxhYmxlIGluIGNhcmRfaW5mbyAqLworCQkJCXNucHJpbnRmKGljZS0+cm1pZGlbMV0tPm5hbWUsCisJCQkJCSBzaXplb2YoaWNlLT5ybWlkaVsxXS0+bmFtZSksCisJCQkJCSAiJXMgJWQiLCBjLT5tcHU0MDFfMl9uYW1lLAorCQkJCQkgY2FyZC0+bnVtYmVyKTsKKwkJfQogCX0KIAogCXNuZF9pY2UxNzEyX3NldF9pbnB1dF9jbG9ja19zb3VyY2UoaWNlLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuaCBiL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuaAppbmRleCAwNTNmOGU1Li5jZTI3ZWFjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzEyLmgKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcxMi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8c291bmQvYWs0eHh4LWFkZGEuaD4KICNpbmNsdWRlIDxzb3VuZC9hazQxMTQuaD4KICNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyNpbmNsdWRlIDxzb3VuZC9tcHU0MDEuaD4KIAogCiAvKgpAQCAtNDk1LDYgKzQ5NiwxMCBAQAogCWludCAoKmNoaXBfaW5pdCkoc3RydWN0IHNuZF9pY2UxNzEyICopOwogCWludCAoKmJ1aWxkX2NvbnRyb2xzKShzdHJ1Y3Qgc25kX2ljZTE3MTIgKik7CiAJdW5zaWduZWQgaW50IG5vX21wdTQwMTogMTsKKwl1bnNpZ25lZCBpbnQgbXB1NDAxXzFfaW5mb19mbGFnczsKKwl1bnNpZ25lZCBpbnQgbXB1NDAxXzJfaW5mb19mbGFnczsKKwljb25zdCBjaGFyICptcHU0MDFfMV9uYW1lOworCWNvbnN0IGNoYXIgKm1wdTQwMV8yX25hbWU7CiAJdW5zaWduZWQgaW50IGVlcHJvbV9zaXplOwogCXVuc2lnbmVkIGNoYXIgKmVlcHJvbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MjQuYyBiL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MjQuYwppbmRleCBiMWMwMDdlLi4zNGE1OGM2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzI0LmMKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcyNC5jCkBAIC0xMjkzLDcgKzEyOTMsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhpY2UtPmNhcmQsICJpY2UxNzI0IiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBpY2UsIDEwMjQsIHNuZF92dDE3MjRfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBpY2UsIHNuZF92dDE3MjRfcHJvY19yZWFkKTsKIH0KIAogLyoKQEAgLTIzODgsNyArMjM4OCw4IEBACiAJaWYgKCEgYy0+bm9fbXB1NDAxKSB7CiAJCWlmIChpY2UtPmVlcHJvbS5kYXRhW0lDRV9FRVAyX1NZU0NPTkZdICYgVlQxNzI0X0NGR19NUFU0MDEpIHsKIAkJCWlmICgoZXJyID0gc25kX21wdTQwMV91YXJ0X25ldyhjYXJkLCAwLCBNUFU0MDFfSFdfSUNFMTcxMiwKLQkJCQkJCSAgICAgICBJQ0VSRUcxNzI0KGljZSwgTVBVX0NUUkwpLCAxLAorCQkJCQkJICAgICAgIElDRVJFRzE3MjQoaWNlLCBNUFVfQ1RSTCksCisJCQkJCQkgICAgICAgTVBVNDAxX0lORk9fSU5URUdSQVRFRCwKIAkJCQkJCSAgICAgICBpY2UtPmlycSwgMCwKIAkJCQkJCSAgICAgICAmaWNlLT5ybWlkaVswXSkpIDwgMCkgewogCQkJCXNuZF9jYXJkX2ZyZWUoY2FyZCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9wb250aXMuYyBiL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCmluZGV4IGQyM2ZiM2YuLjBlZmNhZDkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCkBAIC02ODAsOSArNjgwLDggQEAKIHsKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGljZS0+Y2FyZCwgIndtX2NvZGVjIiwgJmVudHJ5KSkgewotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGljZSwgMTAyNCwgd21fcHJvY19yZWdzX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGljZSwgd21fcHJvY19yZWdzX3JlYWQpOwogCQllbnRyeS0+bW9kZSB8PSBTX0lXVVNSOwotCQllbnRyeS0+Yy50ZXh0LndyaXRlX3NpemUgPSAxMDI0OwogCQllbnRyeS0+Yy50ZXh0LndyaXRlID0gd21fcHJvY19yZWdzX3dyaXRlOwogCX0KIH0KQEAgLTcwNSw5ICs3MDQsOCBAQAogc3RhdGljIHZvaWQgY3NfcHJvY19pbml0KHN0cnVjdCBzbmRfaWNlMTcxMiAqaWNlKQogewogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7Ci0JaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoaWNlLT5jYXJkLCAiY3NfY29kZWMiLCAmZW50cnkpKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgaWNlLCAxMDI0LCBjc19wcm9jX3JlZ3NfcmVhZCk7Ci0JfQorCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGljZS0+Y2FyZCwgImNzX2NvZGVjIiwgJmVudHJ5KSkKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBpY2UsIGNzX3Byb2NfcmVnc19yZWFkKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaW50ZWw4eDAuYyBiL3NvdW5kL3BjaS9pbnRlbDh4MC5jCmluZGV4IDBkZjc2MDIuLmVkYzE0NDcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pbnRlbDh4MC5jCisrKyBiL3NvdW5kL3BjaS9pbnRlbDh4MC5jCkBAIC02Niw3ICs2Niw3IEBACiAKIHN0YXRpYyBpbnQgaW5kZXggPSBTTkRSVl9ERUZBVUxUX0lEWDE7CS8qIEluZGV4IDAtTUFYICovCiBzdGF0aWMgY2hhciAqaWQgPSBTTkRSVl9ERUZBVUxUX1NUUjE7CS8qIElEIGZvciB0aGlzIGNhcmQgKi8KLXN0YXRpYyBpbnQgYWM5N19jbG9jayA9IDA7CitzdGF0aWMgaW50IGFjOTdfY2xvY2s7CiBzdGF0aWMgY2hhciAqYWM5N19xdWlyazsKIHN0YXRpYyBpbnQgYnVnZ3lfc2VtYXBob3JlOwogc3RhdGljIGludCBidWdneV9pcnEgPSAtMTsgLyogYXV0by1jaGVjayAqLwpAQCAtMTgwNyw2ICsxODA3LDEyIEBACiAJfSwKIAl7CiAJCS5zdWJ2ZW5kb3IgPSAweDEwMjgsCisJCS5zdWJkZXZpY2UgPSAweDAxNGUsCisJCS5uYW1lID0gIkRlbGwgRDgwMCIsIC8qIFNUQUM5NzUwLzUxICovCisJCS50eXBlID0gQUM5N19UVU5FX0hQX09OTFkKKwl9LAorCXsKKwkJLnN1YnZlbmRvciA9IDB4MTAyOCwKIAkJLnN1YmRldmljZSA9IDB4MDE2MywKIAkJLm5hbWUgPSAiRGVsbCBVbmtub3duIiwJLyogU1RBQzk3NTAvNTEgKi8KIAkJLnR5cGUgPSBBQzk3X1RVTkVfSFBfT05MWQpAQCAtMjY0NSw3ICsyNjUxLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgImludGVsOHgwIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBzbmRfaW50ZWw4eDBfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCBzbmRfaW50ZWw4eDBfcHJvY19yZWFkKTsKIH0KICNlbHNlCiAjZGVmaW5lIHNuZF9pbnRlbDh4MF9wcm9jX2luaXQoeCkKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pbnRlbDh4MG0uYyBiL3NvdW5kL3BjaS9pbnRlbDh4MG0uYwppbmRleCA3MjA2MzVmLi4yNDcwM2Q3IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaW50ZWw4eDBtLmMKKysrIGIvc291bmQvcGNpL2ludGVsOHgwbS5jCkBAIC01OSw3ICs1OSw3IEBACiAKIHN0YXRpYyBpbnQgaW5kZXggPSAtMjsgLyogRXhjbHVkZSB0aGUgZmlyc3QgY2FyZCAqLwogc3RhdGljIGNoYXIgKmlkID0gU05EUlZfREVGQVVMVF9TVFIxOwkvKiBJRCBmb3IgdGhpcyBjYXJkICovCi1zdGF0aWMgaW50IGFjOTdfY2xvY2sgPSAwOworc3RhdGljIGludCBhYzk3X2Nsb2NrOwogCiBtb2R1bGVfcGFyYW0oaW5kZXgsIGludCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGluZGV4LCAiSW5kZXggdmFsdWUgZm9yIEludGVsIGk4eDAgbW9kZW1jYXJkLiIpOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgImludGVsOHgwbSIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgc25kX2ludGVsOHgwbV9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHNuZF9pbnRlbDh4MG1fcHJvY19yZWFkKTsKIH0KICNlbHNlIC8qICFDT05GSUdfUFJPQ19GUyAqLwogI2RlZmluZSBzbmRfaW50ZWw4eDBtX3Byb2NfaW5pdChjaGlwKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2tvcmcxMjEyL2tvcmcxMjEyLmMgYi9zb3VuZC9wY2kva29yZzEyMTIva29yZzEyMTIuYwppbmRleCBlMzlmYWQxLi42ZTk3OTMyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kva29yZzEyMTIva29yZzEyMTIuYworKysgYi9zb3VuZC9wY2kva29yZzEyMTIva29yZzEyMTIuYwpAQCAtMjA4NSw3ICsyMDg1LDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoa29yZzEyMTItPmNhcmQsICJrb3JnMTIxMiIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwga29yZzEyMTIsIDEwMjQsIHNuZF9rb3JnMTIxMl9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGtvcmcxMjEyLCBzbmRfa29yZzEyMTJfcHJvY19yZWFkKTsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL21hZXN0cm8zLmMgYi9zb3VuZC9wY2kvbWFlc3RybzMuYwppbmRleCAxOTI4ZTA2Li4xYzM0NGZiIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvbWFlc3RybzMuYworKysgYi9zb3VuZC9wY2kvbWFlc3RybzMuYwpAQCAtMjg2MSw3ICsyODYxLDggQEAKICNpZiAwIC8qIFRPRE86IG5vdCBzdXBwb3J0ZWQgeWV0ICovCiAJLyogVE9ETyBlbmFibGUgTUlESSBJUlEgYW5kIEkvTyAqLwogCWVyciA9IHNuZF9tcHU0MDFfdWFydF9uZXcoY2hpcC0+Y2FyZCwgMCwgTVBVNDAxX0hXX01QVTQwMSwKLQkJCQkgIGNoaXAtPmlvYmFzZSArIE1QVTQwMV9EQVRBX1BPUlQsIDEsCisJCQkJICBjaGlwLT5pb2Jhc2UgKyBNUFU0MDFfREFUQV9QT1JULAorCQkJCSAgTVBVNDAxX0lORk9fSU5URUdSQVRFRCwKIAkJCQkgIGNoaXAtPmlycSwgMCwgJmNoaXAtPnJtaWRpKTsKIAlpZiAoZXJyIDwgMCkKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAibWFlc3RybzM6IG5vIE1JREkgc3VwcG9ydC5cbiIpOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL21peGFydC9taXhhcnQuYyBiL3NvdW5kL3BjaS9taXhhcnQvbWl4YXJ0LmMKaW5kZXggMDljYzA3OC4uMzY2YzRhNyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL21peGFydC9taXhhcnQuYworKysgYi9zb3VuZC9wY2kvbWl4YXJ0L21peGFydC5jCkBAIC0xMjQ0LDcgKzEyNDQsNiBAQAogCS8qIHRleHQgaW50ZXJmYWNlIHRvIHJlYWQgcGVyZiBhbmQgdGVtcCBtZXRlcnMgKi8KIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhjaGlwLT5jYXJkLCAiYm9hcmRfaW5mbyIsICZlbnRyeSkpIHsKIAkJZW50cnktPnByaXZhdGVfZGF0YSA9IGNoaXA7Ci0JCWVudHJ5LT5jLnRleHQucmVhZF9zaXplID0gMTAyNDsKIAkJZW50cnktPmMudGV4dC5yZWFkID0gc25kX21peGFydF9wcm9jX3JlYWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcGN4aHIvcGN4aHIuYyBiL3NvdW5kL3BjaS9wY3hoci9wY3hoci5jCmluZGV4IGRhZmEyMjMuLjgxOTg4ODQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9wY3hoci9wY3hoci5jCisrKyBiL3NvdW5kL3BjaS9wY3hoci9wY3hoci5jCkBAIC0xMTUwLDkgKzExNTAsOSBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhjaGlwLT5jYXJkLCAiaW5mbyIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgcGN4aHJfcHJvY19pbmZvKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCBwY3hocl9wcm9jX2luZm8pOwogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJzeW5jIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBwY3hocl9wcm9jX3N5bmMpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHBjeGhyX3Byb2Nfc3luYyk7CiB9CiAvKiBlbmQgb2YgcHJvYyBpbnRlcmZhY2UgKi8KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JpcHRpZGUvcmlwdGlkZS5jIGIvc291bmQvcGNpL3JpcHRpZGUvcmlwdGlkZS5jCmluZGV4IGQ4Y2M5ODUuLjU2MThlYzkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9yaXB0aWRlL3JpcHRpZGUuYworKysgYi9zb3VuZC9wY2kvcmlwdGlkZS9yaXB0aWRlLmMKQEAgLTE4MzYsMTEgKzE4MzYsMTEgQEAKIAkJVU5TRVRfR1JFU0VUKGNpZi0+aHdwb3J0KTsKIAkJa2ZyZWUoY2hpcC0+Y2lmKTsKIAl9CisJaWYgKGNoaXAtPmlycSA+PSAwKQorCQlmcmVlX2lycShjaGlwLT5pcnEsIGNoaXApOwogCWlmIChjaGlwLT5md19lbnRyeSkKIAkJcmVsZWFzZV9maXJtd2FyZShjaGlwLT5md19lbnRyeSk7CiAJcmVsZWFzZV9hbmRfZnJlZV9yZXNvdXJjZShjaGlwLT5yZXNfcG9ydCk7Ci0JaWYgKGNoaXAtPmlycSA+PSAwKQotCQlmcmVlX2lycShjaGlwLT5pcnEsIGNoaXApOwogCWtmcmVlKGNoaXApOwogCXJldHVybiAwOwogfQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCFzbmRfY2FyZF9wcm9jX25ldyhjaGlwLT5jYXJkLCAicmlwdGlkZSIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgNDA5Niwgc25kX3JpcHRpZGVfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCBzbmRfcmlwdGlkZV9wcm9jX3JlYWQpOwogfQogCiBzdGF0aWMgaW50IF9fZGV2aW5pdCBzbmRfcmlwdGlkZV9taXhlcihzdHJ1Y3Qgc25kX3JpcHRpZGUgKmNoaXApCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcm1lMzIuYyBiL3NvdW5kL3BjaS9ybWUzMi5jCmluZGV4IDU1YjFkNDguLjJjYjlmZTkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9ybWUzMi5jCisrKyBiL3NvdW5kL3BjaS9ybWUzMi5jCkBAIC0xMzY4LDE4ICsxMzY4LDE4IEBACiAJCXJldHVybiBlcnI7CiAJcm1lMzItPnBvcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocm1lMzItPnBjaSwgMCk7CiAKLQlpZiAocmVxdWVzdF9pcnEocGNpLT5pcnEsIHNuZF9ybWUzMl9pbnRlcnJ1cHQsIFNBX0lOVEVSUlVQVCB8IFNBX1NISVJRLCAiUk1FMzIiLCAodm9pZCAqKSBybWUzMikpIHsKLQkJc25kX3ByaW50ayhLRVJOX0VSUiAidW5hYmxlIHRvIGdyYWIgSVJRICVkXG4iLCBwY2ktPmlycSk7Ci0JCXJldHVybiAtRUJVU1k7Ci0JfQotCXJtZTMyLT5pcnEgPSBwY2ktPmlycTsKLQogCWlmICgocm1lMzItPmlvYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShybWUzMi0+cG9ydCwgUk1FMzJfSU9fU0laRSkpID09IDApIHsKIAkJc25kX3ByaW50ayhLRVJOX0VSUiAidW5hYmxlIHRvIHJlbWFwIG1lbW9yeSByZWdpb24gMHglbHgtMHglbHhcbiIsCiAJCQkgICBybWUzMi0+cG9ydCwgcm1lMzItPnBvcnQgKyBSTUUzMl9JT19TSVpFIC0gMSk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAorCWlmIChyZXF1ZXN0X2lycShwY2ktPmlycSwgc25kX3JtZTMyX2ludGVycnVwdCwgU0FfSU5URVJSVVBUIHwgU0FfU0hJUlEsICJSTUUzMiIsICh2b2lkICopIHJtZTMyKSkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJ1bmFibGUgdG8gZ3JhYiBJUlEgJWRcbiIsIHBjaS0+aXJxKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisJcm1lMzItPmlycSA9IHBjaS0+aXJxOworCiAJLyogcmVhZCB0aGUgY2FyZCdzIHJldmlzaW9uIG51bWJlciAqLwogCXBjaV9yZWFkX2NvbmZpZ19ieXRlKHBjaSwgOCwgJnJtZTMyLT5yZXYpOwogCkBAIC0xNTc4LDcgKzE1NzgsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhybWUzMi0+Y2FyZCwgInJtZTMyIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBybWUzMiwgMTAyNCwgc25kX3JtZTMyX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgcm1lMzIsIHNuZF9ybWUzMl9wcm9jX3JlYWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2LmMgYi9zb3VuZC9wY2kvcm1lOTYuYwppbmRleCAzYzFiYzUzLi45OTFjYjE4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvcm1lOTYuYworKysgYi9zb3VuZC9wY2kvcm1lOTYuYwpAQCAtMTE1MSw2ICsxMTUxLDI1IEBACiAJLm1hc2sgPSAwCiB9OwogCitzdGF0aWMgdm9pZAorcm1lOTZfc2V0X2J1ZmZlcl9zaXplX2NvbnN0cmFpbnQoc3RydWN0IHJtZTk2ICpybWU5NiwKKwkJCQkgc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSkKK3sKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKworCXNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGltZSwgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUywKKwkJCQkgICAgIFJNRTk2X0JVRkZFUl9TSVpFLCBSTUU5Nl9CVUZGRVJfU0laRSk7CisJaWYgKChzaXplID0gcm1lOTYtPnBsYXliYWNrX3BlcmlvZHNpemUpICE9IDAgfHwKKwkgICAgKHNpemUgPSBybWU5Ni0+Y2FwdHVyZV9wZXJpb2RzaXplKSAhPSAwKQorCQlzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4KHJ1bnRpbWUsCisJCQkJCSAgICAgU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUywKKwkJCQkJICAgICBzaXplLCBzaXplKTsKKwllbHNlCisJCXNuZF9wY21faHdfY29uc3RyYWludF9saXN0KHJ1bnRpbWUsIDAsCisJCQkJCSAgIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfQllURVMsCisJCQkJCSAgICZod19jb25zdHJhaW50c19wZXJpb2RfYnl0ZXMpOworfQorCiBzdGF0aWMgaW50CiBzbmRfcm1lOTZfcGxheWJhY2tfc3BkaWZfb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKQEAgLTExODAsOCArMTE5OSw3IEBACiAgICAgICAgICAgICAgICAgcnVudGltZS0+aHcucmF0ZV9taW4gPSByYXRlOwogICAgICAgICAgICAgICAgIHJ1bnRpbWUtPmh3LnJhdGVfbWF4ID0gcmF0ZTsKIAl9ICAgICAgICAKLQlzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4KHJ1bnRpbWUsIFNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfQllURVMsIFJNRTk2X0JVRkZFUl9TSVpFLCBSTUU5Nl9CVUZGRVJfU0laRSk7Ci0Jc25kX3BjbV9od19jb25zdHJhaW50X2xpc3QocnVudGltZSwgMCwgU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUywgJmh3X2NvbnN0cmFpbnRzX3BlcmlvZF9ieXRlcyk7CisJcm1lOTZfc2V0X2J1ZmZlcl9zaXplX2NvbnN0cmFpbnQocm1lOTYsIHJ1bnRpbWUpOwogCiAJcm1lOTYtPndjcmVnX3NwZGlmX3N0cmVhbSA9IHJtZTk2LT53Y3JlZ19zcGRpZjsKIAlybWU5Ni0+c3BkaWZfY3RsLT52ZFswXS5hY2Nlc3MgJj0gflNORFJWX0NUTF9FTEVNX0FDQ0VTU19JTkFDVElWRTsKQEAgLTEyMTksOSArMTIzNyw3IEBACiAJcm1lOTYtPmNhcHR1cmVfc3Vic3RyZWFtID0gc3Vic3RyZWFtOwogCXNwaW5fdW5sb2NrX2lycSgmcm1lOTYtPmxvY2spOwogCQotCXNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGltZSwgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUywgUk1FOTZfQlVGRkVSX1NJWkUsIFJNRTk2X0JVRkZFUl9TSVpFKTsKLQlzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbGlzdChydW50aW1lLCAwLCBTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX0JZVEVTLCAmaHdfY29uc3RyYWludHNfcGVyaW9kX2J5dGVzKTsKLQorCXJtZTk2X3NldF9idWZmZXJfc2l6ZV9jb25zdHJhaW50KHJtZTk2LCBydW50aW1lKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTI1NCw4ICsxMjcwLDcgQEAKICAgICAgICAgICAgICAgICBydW50aW1lLT5ody5yYXRlX21pbiA9IHJhdGU7CiAgICAgICAgICAgICAgICAgcnVudGltZS0+aHcucmF0ZV9tYXggPSByYXRlOwogCX0gICAgICAgIAotCXNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGltZSwgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUywgUk1FOTZfQlVGRkVSX1NJWkUsIFJNRTk2X0JVRkZFUl9TSVpFKTsKLQlzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbGlzdChydW50aW1lLCAwLCBTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX0JZVEVTLCAmaHdfY29uc3RyYWludHNfcGVyaW9kX2J5dGVzKTsKKwlybWU5Nl9zZXRfYnVmZmVyX3NpemVfY29uc3RyYWludChybWU5NiwgcnVudGltZSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEyOTEsOCArMTMwNiw3IEBACiAJcm1lOTYtPmNhcHR1cmVfc3Vic3RyZWFtID0gc3Vic3RyZWFtOwogCXNwaW5fdW5sb2NrX2lycSgmcm1lOTYtPmxvY2spOwogCi0Jc25kX3BjbV9od19jb25zdHJhaW50X21pbm1heChydW50aW1lLCBTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX0JZVEVTLCBSTUU5Nl9CVUZGRVJfU0laRSwgUk1FOTZfQlVGRkVSX1NJWkUpOwotCXNuZF9wY21faHdfY29uc3RyYWludF9saXN0KHJ1bnRpbWUsIDAsIFNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfQllURVMsICZod19jb25zdHJhaW50c19wZXJpb2RfYnl0ZXMpOworCXJtZTk2X3NldF9idWZmZXJfc2l6ZV9jb25zdHJhaW50KHJtZTk2LCBydW50aW1lKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTU2OSwxNyArMTU4MywxNyBAQAogCQlyZXR1cm4gZXJyOwogCXJtZTk2LT5wb3J0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHJtZTk2LT5wY2ksIDApOwogCisJaWYgKChybWU5Ni0+aW9iYXNlID0gaW9yZW1hcF9ub2NhY2hlKHJtZTk2LT5wb3J0LCBSTUU5Nl9JT19TSVpFKSkgPT0gMCkgeworCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJ1bmFibGUgdG8gcmVtYXAgbWVtb3J5IHJlZ2lvbiAweCVseC0weCVseFxuIiwgcm1lOTYtPnBvcnQsIHJtZTk2LT5wb3J0ICsgUk1FOTZfSU9fU0laRSAtIDEpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKIAlpZiAocmVxdWVzdF9pcnEocGNpLT5pcnEsIHNuZF9ybWU5Nl9pbnRlcnJ1cHQsIFNBX0lOVEVSUlVQVHxTQV9TSElSUSwgIlJNRTk2IiwgKHZvaWQgKilybWU5NikpIHsKIAkJc25kX3ByaW50ayhLRVJOX0VSUiAidW5hYmxlIHRvIGdyYWIgSVJRICVkXG4iLCBwY2ktPmlycSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQogCXJtZTk2LT5pcnEgPSBwY2ktPmlycTsKIAotCWlmICgocm1lOTYtPmlvYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShybWU5Ni0+cG9ydCwgUk1FOTZfSU9fU0laRSkpID09IDApIHsKLQkJc25kX3ByaW50ayhLRVJOX0VSUiAidW5hYmxlIHRvIHJlbWFwIG1lbW9yeSByZWdpb24gMHglbHgtMHglbHhcbiIsIHJtZTk2LT5wb3J0LCBybWU5Ni0+cG9ydCArIFJNRTk2X0lPX1NJWkUgLSAxKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCiAJLyogcmVhZCB0aGUgY2FyZCdzIHJldmlzaW9uIG51bWJlciAqLwogCXBjaV9yZWFkX2NvbmZpZ19ieXRlKHBjaSwgOCwgJnJtZTk2LT5yZXYpOwkKIAkKQEAgLTE4MDUsNyArMTgxOSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KHJtZTk2LT5jYXJkLCAicm1lOTYiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHJtZTk2LCAxMDI0LCBzbmRfcm1lOTZfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBybWU5Niwgc25kX3JtZTk2X3Byb2NfcmVhZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwLmMgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwLmMKaW5kZXggNjFmODJmMC4uZWFmM2MyMiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcC5jCisrKyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3AuYwpAQCAtMzg5LDcgKzM4OSw3IEBACiAKIC8qIHVzZSBob3RwbHVnIGZpcm1lYXJlIGxvYWRlcj8gKi8KICNpZiBkZWZpbmVkKENPTkZJR19GV19MT0FERVIpIHx8IGRlZmluZWQoQ09ORklHX0ZXX0xPQURFUl9NT0RVTEUpCi0jaWZuZGVmIEhEU1BfVVNFX0hXREVQX0xPQURFUgorI2lmICFkZWZpbmVkKEhEU1BfVVNFX0hXREVQX0xPQURFUikgJiYgIWRlZmluZWQoQ09ORklHX1NORF9IRFNQKQogI2RlZmluZSBIRFNQX0ZXX0xPQURFUgogI2VuZGlmCiAjZW5kaWYKQEAgLTMxNjksOSArMzE2OSwxMCBAQAogCWNoYXIgKmNsb2NrX3NvdXJjZTsKIAlpbnQgeDsKIAotCWlmIChoZHNwX2NoZWNrX2Zvcl9pb2JveCAoaGRzcCkpCisJaWYgKGhkc3BfY2hlY2tfZm9yX2lvYm94IChoZHNwKSkgewogCQlzbmRfaXByaW50ZihidWZmZXIsICJObyBJL08gYm94IGNvbm5lY3RlZC5cblBsZWFzZSBjb25uZWN0IG9uZSBhbmQgdXBsb2FkIGZpcm13YXJlLlxuIik7CiAJCXJldHVybjsKKyAgICAgICAgfQogCiAJaWYgKGhkc3BfY2hlY2tfZm9yX2Zpcm13YXJlKGhkc3AsIDApKSB7CiAJCWlmIChoZHNwLT5zdGF0ZSAmIEhEU1BfRmlybXdhcmVDYWNoZWQpIHsKQEAgLTM0NzAsNyArMzQ3MSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGhkc3AtPmNhcmQsICJoZHNwIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBoZHNwLCAxMDI0LCBzbmRfaGRzcF9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGhkc3AsIHNuZF9oZHNwX3Byb2NfcmVhZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNuZF9oZHNwX2ZyZWVfYnVmZmVycyhzdHJ1Y3QgaGRzcCAqaGRzcCkKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCmluZGV4IDcyMmI5ZTYuLmJiYTE2MTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKKysrIGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwpAQCAtMjQ4OSw3ICsyNDg5LDcgQEAKIAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5OwogCiAJaWYgKCFzbmRfY2FyZF9wcm9jX25ldyhoZHNwbS0+Y2FyZCwgImhkc3BtIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBoZHNwbSwgMTAyNCwKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBoZHNwbSwKIAkJCQkgICAgICBzbmRfaGRzcG1fcHJvY19yZWFkKTsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvcm1lOTY1Mi5jIGIvc291bmQvcGNpL3JtZTk2NTIvcm1lOTY1Mi5jCmluZGV4IDc1ZDY0MDYuLjNiOTQ1ZTggMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL3JtZTk2NTIuYworKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9ybWU5NjUyLmMKQEAgLTQxLDcgKzQxLDcgQEAKIHN0YXRpYyBpbnQgaW5kZXhbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9JRFg7CS8qIEluZGV4IDAtTUFYICovCiBzdGF0aWMgY2hhciAqaWRbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9TVFI7CS8qIElEIGZvciB0aGlzIGNhcmQgKi8KIHN0YXRpYyBpbnQgZW5hYmxlW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfRU5BQkxFX1BOUDsJLyogRW5hYmxlIHRoaXMgY2FyZCAqLwotc3RhdGljIGludCBwcmVjaXNlX3B0cltTTkRSVl9DQVJEU10gPSB7IFswIC4uLiAoU05EUlZfQ0FSRFMtMSldID0gMCB9OyAvKiBFbmFibGUgcHJlY2lzZSBwb2ludGVyICovCitzdGF0aWMgaW50IHByZWNpc2VfcHRyW1NORFJWX0NBUkRTXTsJCQkvKiBFbmFibGUgcHJlY2lzZSBwb2ludGVyICovCiAKIG1vZHVsZV9wYXJhbV9hcnJheShpbmRleCwgaW50LCBOVUxMLCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoaW5kZXgsICJJbmRleCB2YWx1ZSBmb3IgUk1FIERpZ2k5NjUyIChIYW1tZXJmYWxsKSBzb3VuZGNhcmQuIik7CkBAIC0xNzg3LDcgKzE3ODcsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhybWU5NjUyLT5jYXJkLCAicm1lOTY1MiIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgcm1lOTY1MiwgMTAyNCwgc25kX3JtZTk2NTJfcHJvY19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBybWU5NjUyLCBzbmRfcm1lOTY1Ml9wcm9jX3JlYWQpOwogfQogCiBzdGF0aWMgdm9pZCBzbmRfcm1lOTY1Ml9mcmVlX2J1ZmZlcnMoc3RydWN0IHNuZF9ybWU5NjUyICpybWU5NjUyKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3NvbmljdmliZXMuYyBiL3NvdW5kL3BjaS9zb25pY3ZpYmVzLmMKaW5kZXggOTFmOGJmMy4uZGNmNDAyOSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3NvbmljdmliZXMuYworKysgYi9zb3VuZC9wY2kvc29uaWN2aWJlcy5jCkBAIC01NCw4ICs1NCw4IEBACiBzdGF0aWMgaW50IGluZGV4W1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfSURYOwkvKiBJbmRleCAwLU1BWCAqLwogc3RhdGljIGNoYXIgKmlkW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfU1RSOwkvKiBJRCBmb3IgdGhpcyBjYXJkICovCiBzdGF0aWMgaW50IGVuYWJsZVtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0VOQUJMRV9QTlA7CS8qIEVuYWJsZSB0aGlzIGNhcmQgKi8KLXN0YXRpYyBpbnQgcmV2ZXJiW1NORFJWX0NBUkRTXSA9IHtbMCAuLi4gKFNORFJWX0NBUkRTIC0gMSldID0gMH07Ci1zdGF0aWMgaW50IG1nZVtTTkRSVl9DQVJEU10gPSB7WzAgLi4uIChTTkRSVl9DQVJEUyAtIDEpXSA9IDB9Oworc3RhdGljIGludCByZXZlcmJbU05EUlZfQ0FSRFNdOworc3RhdGljIGludCBtZ2VbU05EUlZfQ0FSRFNdOwogc3RhdGljIHVuc2lnbmVkIGludCBkbWFpbyA9IDB4N2EwMDsJLyogRERNQSBpL28gYWRkcmVzcyAqLwogCiBtb2R1bGVfcGFyYW1fYXJyYXkoaW5kZXgsIGludCwgTlVMTCwgMDQ0NCk7CkBAIC0xMTQ0LDcgKzExNDQsNyBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhzb25pYy0+Y2FyZCwgInNvbmljdmliZXMiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHNvbmljLCAxMDI0LCBzbmRfc29uaWN2aWJlc19wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHNvbmljLCBzbmRfc29uaWN2aWJlc19wcm9jX3JlYWQpOwogfQogCiAvKgpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAKIAkJcmV0dXJuIGVycjsKIAl9CiAJaWYgKChlcnIgPSBzbmRfbXB1NDAxX3VhcnRfbmV3KGNhcmQsIDAsIE1QVTQwMV9IV19TT05JQ1ZJQkVTLAotCQkJCSAgICAgICBzb25pYy0+bWlkaV9wb3J0LCAxLAorCQkJCSAgICAgICBzb25pYy0+bWlkaV9wb3J0LCBNUFU0MDFfSU5GT19JTlRFR1JBVEVELAogCQkJCSAgICAgICBzb25pYy0+aXJxLCAwLAogCQkJCSAgICAgICAmbWlkaV91YXJ0KSkgPCAwKSB7CiAJCXNuZF9jYXJkX2ZyZWUoY2FyZCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvdHJpZGVudC90cmlkZW50LmMgYi9zb3VuZC9wY2kvdHJpZGVudC90cmlkZW50LmMKaW5kZXggOTYyNGE1Zi4uNTYyOWI3ZSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudC5jCisrKyBiL3NvdW5kL3BjaS90cmlkZW50L3RyaWRlbnQuYwpAQCAtMTQ4LDcgKzE0OCw4IEBACiAJfQogCWlmICh0cmlkZW50LT5kZXZpY2UgIT0gVFJJREVOVF9ERVZJQ0VfSURfU0k3MDE4ICYmCiAJICAgIChlcnIgPSBzbmRfbXB1NDAxX3VhcnRfbmV3KGNhcmQsIDAsIE1QVTQwMV9IV19UUklENERXQVZFLAotCQkJCSAgICAgICB0cmlkZW50LT5taWRpX3BvcnQsIDEsCisJCQkJICAgICAgIHRyaWRlbnQtPm1pZGlfcG9ydCwKKwkJCQkgICAgICAgTVBVNDAxX0lORk9fSU5URUdSQVRFRCwKIAkJCQkgICAgICAgdHJpZGVudC0+aXJxLCAwLCAmdHJpZGVudC0+cm1pZGkpKSA8IDApIHsKIAkJc25kX2NhcmRfZnJlZShjYXJkKTsKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS90cmlkZW50L3RyaWRlbnRfbWFpbi5jIGIvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudF9tYWluLmMKaW5kZXggNTIxNzhiOC4uZDk5ZWQ3MiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudF9tYWluLmMKKysrIGIvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudF9tYWluLmMKQEAgLTMwNiw2ICszMDYsOCBAQAogCW91dGwobWFzaywgVFJJRF9SRUcodHJpZGVudCwgcmVnKSk7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3RyaWRlbnRfc3RhcnRfdm9pY2UpOworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgdm9pZCBzbmRfdHJpZGVudF9zdG9wX3ZvaWNlKHN0cnVjdCBzbmRfdHJpZGVudCAqIHRyaWRlbnQsIHVuc2lnbmVkIGludCB2b2ljZSkKIApAQCAtMzI4LDYgKzMzMCw4IEBACiAJb3V0bChtYXNrLCBUUklEX1JFRyh0cmlkZW50LCByZWcpKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdHJpZGVudF9zdG9wX3ZvaWNlKTsKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBpbnQgc25kX3RyaWRlbnRfYWxsb2NhdGVfcGNtX2NoYW5uZWwoc3RydWN0IHNuZF90cmlkZW50ICp0cmlkZW50KQogICAKQEAgLTUwMiw2ICs1MDYsOCBAQAogI2VuZGlmCiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3RyaWRlbnRfd3JpdGVfdm9pY2VfcmVncyk7CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBzbmRfdHJpZGVudF93cml0ZV9jc29fcmVnCiAgIApAQCAtMzMzMiw3ICszMzM4LDcgQEAKIAlpZiAodHJpZGVudC0+ZGV2aWNlID09IFRSSURFTlRfREVWSUNFX0lEX1NJNzAxOCkKIAkJcyA9ICJzaXM3MDE4IjsKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyh0cmlkZW50LT5jYXJkLCBzLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHRyaWRlbnQsIDEwMjQsIHNuZF90cmlkZW50X3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgdHJpZGVudCwgc25kX3RyaWRlbnRfcHJvY19yZWFkKTsKIH0KIAogc3RhdGljIGludCBzbmRfdHJpZGVudF9kZXZfZnJlZShzdHJ1Y3Qgc25kX2RldmljZSAqZGV2aWNlKQpAQCAtMzg4NCw2ICszODkwLDggQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdHJpZGVudF9hbGxvY192b2ljZSk7CisKIHZvaWQgc25kX3RyaWRlbnRfZnJlZV92b2ljZShzdHJ1Y3Qgc25kX3RyaWRlbnQgKiB0cmlkZW50LCBzdHJ1Y3Qgc25kX3RyaWRlbnRfdm9pY2UgKnZvaWNlKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0zOTEyLDYgKzM5MjAsOCBAQAogCQlwcml2YXRlX2ZyZWUodm9pY2UpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X2ZyZWVfdm9pY2UpOworCiBzdGF0aWMgdm9pZCBzbmRfdHJpZGVudF9jbGVhcl92b2ljZXMoc3RydWN0IHNuZF90cmlkZW50ICogdHJpZGVudCwgdW5zaWduZWQgc2hvcnQgdl9taW4sIHVuc2lnbmVkIHNob3J0IHZfbWF4KQogewogCXVuc2lnbmVkIGludCBpLCB2YWwsIG1hc2tbMl0gPSB7IDAsIDAgfTsKQEAgLTM5OTMsMTMgKzQwMDMsMyBAQAogCXJldHVybiAwOwogfQogI2VuZGlmIC8qIENPTkZJR19QTSAqLwotCi1FWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X2FsbG9jX3ZvaWNlKTsKLUVYUE9SVF9TWU1CT0woc25kX3RyaWRlbnRfZnJlZV92b2ljZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X3N0YXJ0X3ZvaWNlKTsKLUVYUE9SVF9TWU1CT0woc25kX3RyaWRlbnRfc3RvcF92b2ljZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X3dyaXRlX3ZvaWNlX3JlZ3MpOwotLyogdHJpZGVudF9tZW1vcnkuYyBzeW1ib2xzICovCi1FWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X3N5bnRoX2FsbG9jKTsKLUVYUE9SVF9TWU1CT0woc25kX3RyaWRlbnRfc3ludGhfZnJlZSk7Ci1FWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X3N5bnRoX2NvcHlfZnJvbV91c2VyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS90cmlkZW50L3RyaWRlbnRfbWVtb3J5LmMgYi9zb3VuZC9wY2kvdHJpZGVudC90cmlkZW50X21lbW9yeS5jCmluZGV4IDQ2YzY5ODIuLmFmZjNmODcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS90cmlkZW50L3RyaWRlbnRfbWVtb3J5LmMKKysrIGIvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudF9tZW1vcnkuYwpAQCAtMzQ5LDYgKzM0OSw3IEBACiAJcmV0dXJuIGJsazsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdHJpZGVudF9zeW50aF9hbGxvYyk7CiAKIC8qCiAgKiBmcmVlIGEgc3ludGggc2FtcGxlIGFyZWEKQEAgLTM2NSw2ICszNjYsNyBAQAogCXJldHVybiAwOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF90cmlkZW50X3N5bnRoX2ZyZWUpOwogCiAvKgogICogcmVzZXQgVExCIGVudHJ5IGFuZCBmcmVlIGtlcm5lbCBwYWdlCkBAIC00ODYsMyArNDg4LDQgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfdHJpZGVudF9zeW50aF9jb3B5X2Zyb21fdXNlcik7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvdHJpZGVudC90cmlkZW50X3N5bnRoLmMgYi9zb3VuZC9wY2kvdHJpZGVudC90cmlkZW50X3N5bnRoLmMKaW5kZXggY2M3YWY4Yi4uOWI3ZGVlOCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3RyaWRlbnQvdHJpZGVudF9zeW50aC5jCisrKyBiL3NvdW5kL3BjaS90cmlkZW50L3RyaWRlbnRfc3ludGguYwpAQCAtOTE0LDcgKzkxNCw5IEBACiAJCQkJCQkgICAmY2FsbGJhY2tzLAogCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFIHwgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfV1JJVEUsCiAJCQkJCQkgICBTTkRSVl9TRVFfUE9SVF9UWVBFX0RJUkVDVF9TQU1QTEUgfAotCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USCwKKwkJCQkJCSAgIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEggfAorCQkJCQkJICAgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRSB8CisJCQkJCQkgICBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSLAogCQkJCQkJICAgMTYsIDAsCiAJCQkJCQkgICBuYW1lKTsKIAlpZiAocC0+Y2hzZXQtPnBvcnQgPCAwKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvdmlhODJ4eC5jIGIvc291bmQvcGNpL3ZpYTgyeHguYwppbmRleCAzOWRhZjYyLi4yNTI3YmJkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvdmlhODJ4eC5jCisrKyBiL3NvdW5kL3BjaS92aWE4Mnh4LmMKQEAgLTE3NzUsNiArMTc3NSwxMiBAQAogCQkubmFtZSA9ICJUYXJnYSBUcmF2ZWxsZXIgODExIiwKIAkJLnR5cGUgPSBBQzk3X1RVTkVfSFBfT05MWSwKIAl9LAorCXsKKwkJLnN1YnZlbmRvciA9IDB4MTYxZiwKKwkJLnN1YmRldmljZSA9IDB4MjAzMiwKKwkJLm5hbWUgPSAibTY4MHgiLAorCQkudHlwZSA9IEFDOTdfVFVORV9IUF9PTkxZLCAvKiBodHRwOi8vbGF1bmNocGFkLm5ldC9idWdzLzM4NTQ2ICovCisJfSwKIAl7IH0gLyogdGVybWluYXRvciAqLwogfTsKIApAQCAtMTk3Myw3ICsxOTc5LDcgQEAKIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoY2hpcC0+cGNpLCBWSUFfUE5QX0NPTlRST0wsIGxlZ2FjeV9jZmcpOwogCWlmIChjaGlwLT5tcHVfcmVzKSB7CiAJCWlmIChzbmRfbXB1NDAxX3VhcnRfbmV3KGNoaXAtPmNhcmQsIDAsIE1QVTQwMV9IV19WSUE2ODZBLAotCQkJCQltcHVfcG9ydCwgMSwKKwkJCQkJbXB1X3BvcnQsIE1QVTQwMV9JTkZPX0lOVEVHUkFURUQsCiAJCQkJCWNoaXAtPmlycSwgMCwgJmNoaXAtPnJtaWRpKSA8IDApIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgInVuYWJsZSB0byBpbml0aWFsaXplIE1QVS00MDEiCiAJCQkgICAgICAgIiBhdCAweCVseCwgc2tpcHBpbmdcbiIsIG1wdV9wb3J0KTsKQEAgLTIwMTUsNyArMjAyMSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJ2aWE4Mnh4IiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBzbmRfdmlhODJ4eF9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHNuZF92aWE4Mnh4X3Byb2NfcmVhZCk7CiB9CiAKIC8qCkBAIC0yMzY1LDcgKzIzNzEsNyBAQAogCQl7IC5zdWJ2ZW5kb3IgPSAweDE0NjIsIC5zdWJkZXZpY2UgPSAweDA0NzAsIC5hY3Rpb24gPSBWSUFfRFhTX1NSQyB9LCAvKiBNU0kgS1Q4ODAgRGVsdGEtRlNSICovCiAJCXsgLnN1YnZlbmRvciA9IDB4MTQ2MiwgLnN1YmRldmljZSA9IDB4MzgwMCwgLmFjdGlvbiA9IFZJQV9EWFNfRU5BQkxFIH0sIC8qIE1TSSBLVDI2NiAqLwogCQl7IC5zdWJ2ZW5kb3IgPSAweDE0NjIsIC5zdWJkZXZpY2UgPSAweDU5MDEsIC5hY3Rpb24gPSBWSUFfRFhTX05PX1ZSQSB9LCAvKiBNU0kgS1Q2IERlbHRhLVNSICovCi0JCXsgLnN1YnZlbmRvciA9IDB4MTQ2MiwgLnN1YmRldmljZSA9IDB4NzAyMywgLmFjdGlvbiA9IFZJQV9EWFNfTk9fVlJBIH0sIC8qIE1TSSBLOFQgTmVvMi1GSSAqLworCQl7IC5zdWJ2ZW5kb3IgPSAweDE0NjIsIC5zdWJkZXZpY2UgPSAweDcwMjMsIC5hY3Rpb24gPSBWSUFfRFhTX1NSQyB9LCAvKiBNU0kgSzhUIE5lbzItRkkgKi8KIAkJeyAuc3VidmVuZG9yID0gMHgxNDYyLCAuc3ViZGV2aWNlID0gMHg3MTIwLCAuYWN0aW9uID0gVklBX0RYU19FTkFCTEUgfSwgLyogTVNJIEtUNFYgKi8KIAkJeyAuc3VidmVuZG9yID0gMHgxNDYyLCAuc3ViZGV2aWNlID0gMHg3MTQyLCAuYWN0aW9uID0gVklBX0RYU19FTkFCTEUgfSwgLyogTVNJIEs4TU0tViAqLwogCQl7IC5zdWJ2ZW5kb3IgPSAweDE0NjIsIC5zdWJkZXZpY2UgPSAweGIwMTIsIC5hY3Rpb24gPSBWSUFfRFhTX1NSQyB9LCAvKiBQNE04MDAvVklBODIzN1IgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS92aWE4Mnh4X21vZGVtLmMgYi9zb3VuZC9wY2kvdmlhODJ4eF9tb2RlbS5jCmluZGV4IGVmOTdlNTAuLjU3N2EyYjAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS92aWE4Mnh4X21vZGVtLmMKKysrIGIvc291bmQvcGNpL3ZpYTgyeHhfbW9kZW0uYwpAQCAtOTI5LDcgKzkyOSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJ2aWE4Mnh4IiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBzbmRfdmlhODJ4eF9wcm9jX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHNuZF92aWE4Mnh4X3Byb2NfcmVhZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kveW1mcGNpL3ltZnBjaS5jIGIvc291bmQvcGNpL3ltZnBjaS95bWZwY2kuYwppbmRleCA2NWViZjVmLi4yNmFhNzc1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kveW1mcGNpL3ltZnBjaS5jCisrKyBiL3NvdW5kL3BjaS95bWZwY2kveW1mcGNpLmMKQEAgLTMwOCw3ICszMDgsOCBAQAogCX0KIAlpZiAoY2hpcC0+bXB1X3JlcykgewogCQlpZiAoKGVyciA9IHNuZF9tcHU0MDFfdWFydF9uZXcoY2FyZCwgMCwgTVBVNDAxX0hXX1lNRlBDSSwKLQkJCQkJICAgICAgIG1wdV9wb3J0W2Rldl0sIDEsCisJCQkJCSAgICAgICBtcHVfcG9ydFtkZXZdLAorCQkJCQkgICAgICAgTVBVNDAxX0lORk9fSU5URUdSQVRFRCwKIAkJCQkJICAgICAgIHBjaS0+aXJxLCAwLCAmY2hpcC0+cmF3bWlkaSkpIDwgMCkgewogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAieW1mcGNpOiBjYW5ub3QgaW5pdGlhbGl6ZSBNUFU0MDEgYXQgMHglbHgsIHNraXBwaW5nLi4uXG4iLCBtcHVfcG9ydFtkZXZdKTsKIAkJCWxlZ2FjeV9jdHJsICY9IH5ZTUZQQ0lfTEVHQUNZX01JRU47IC8qIGRpc2FibGUgTVBVNDAxIGlycSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3ltZnBjaS95bWZwY2lfbWFpbi5jIGIvc291bmQvcGNpL3ltZnBjaS95bWZwY2lfbWFpbi5jCmluZGV4IDhhYzVhYjUuLmY4OTQ3NTIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS95bWZwY2kveW1mcGNpX21haW4uYworKysgYi9zb3VuZC9wY2kveW1mcGNpL3ltZnBjaV9tYWluLmMKQEAgLTE5MTksNyArMTkxOSw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAkKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhjYXJkLCAieW1mcGNpIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBzbmRfeW1mcGNpX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgc25kX3ltZnBjaV9wcm9jX3JlYWQpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9zb3VuZC9wY21jaWEvcGRhdWRpb2NmL3BkYXVkaW9jZl9jb3JlLmMgYi9zb3VuZC9wY21jaWEvcGRhdWRpb2NmL3BkYXVkaW9jZl9jb3JlLmMKaW5kZXggYmQwZDcwZi4uMWRmZTI5YiAxMDA2NDQKLS0tIGEvc291bmQvcGNtY2lhL3BkYXVkaW9jZi9wZGF1ZGlvY2ZfY29yZS5jCisrKyBiL3NvdW5kL3BjbWNpYS9wZGF1ZGlvY2YvcGRhdWRpb2NmX2NvcmUuYwpAQCAtMTQ0LDcgKzE0NCw3IEBACiAJc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeTsKIAogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNoaXAtPmNhcmQsICJwZGF1ZGlvY2YiLCAmZW50cnkpKQotCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIDEwMjQsIHBkYWNmX3Byb2NfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgcGRhY2ZfcHJvY19yZWFkKTsKIH0KIAogc3RydWN0IHNuZF9wZGFjZiAqc25kX3BkYWNmX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQpCmRpZmYgLS1naXQgYS9zb3VuZC9wY21jaWEvdngvdnhwX29wcy5jIGIvc291bmQvcGNtY2lhL3Z4L3Z4cF9vcHMuYwppbmRleCA3ZjgyZjYxLi4xZWUwOTE4IDEwMDY0NAotLS0gYS9zb3VuZC9wY21jaWEvdngvdnhwX29wcy5jCisrKyBiL3NvdW5kL3BjbWNpYS92eC92eHBfb3BzLmMKQEAgLTIwMiw3ICsyMDIsNyBAQAogCWMgfD0gKGludCl2eF9pbmIoY2hpcCwgUlhNKSA8PCA4OwogCWMgfD0gdnhfaW5iKGNoaXAsIFJYTCk7CiAKLQlzbmRfcHJpbnRkZChLRVJOX0RFQlVHICJ4aWxpbng6IGRzcCBzaXplIHJlY2VpdmVkIDB4JXgsIG9yaWcgMHgleFxuIiwgYywgZnctPnNpemUpOworCXNuZF9wcmludGRkKEtFUk5fREVCVUcgInhpbGlueDogZHNwIHNpemUgcmVjZWl2ZWQgMHgleCwgb3JpZyAweCVaeFxuIiwgYywgZnctPnNpemUpOwogCiAJdnhfb3V0YihjaGlwLCBJQ1IsIElDUl9IRjApOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY21jaWEvdngvdnhwb2NrZXQuYyBiL3NvdW5kL3BjbWNpYS92eC92eHBvY2tldC5jCmluZGV4IDdlMGNkYTIuLmNhZmU2NjQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjbWNpYS92eC92eHBvY2tldC5jCisrKyBiL3NvdW5kL3BjbWNpYS92eC92eHBvY2tldC5jCkBAIC0yNjEsNyArMjYxLDcgQEAKIAogCWxpbmstPmRldl9ub2RlID0gJnZ4cC0+bm9kZTsKIAlrZnJlZShwYXJzZSk7Ci0JcmV0dXJuIDk7CisJcmV0dXJuIDA7CiAKIGNzX2ZhaWxlZDoKIAljc19lcnJvcihsaW5rLCBsYXN0X2ZuLCBsYXN0X3JldCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wcGMvTWFrZWZpbGUgYi9zb3VuZC9wcGMvTWFrZWZpbGUKaW5kZXggZDZiYTk5NS4uNGQ5NWM2NSAxMDA2NDQKLS0tIGEvc291bmQvcHBjL01ha2VmaWxlCisrKyBiL3NvdW5kL3BwYy9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDAxIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAc3VzZS5jej4KICMKIAotc25kLXBvd2VybWFjLW9ianMgOj0gcG93ZXJtYWMubyBwbWFjLm8gYXdhY3MubyBidXJndW5keS5vIGRhY2EubyB0dW1ibGVyLm8gdG9vbmllLm8ga2V5d2VzdC5vIGJlZXAubworc25kLXBvd2VybWFjLW9ianMgOj0gcG93ZXJtYWMubyBwbWFjLm8gYXdhY3MubyBidXJndW5keS5vIGRhY2EubyB0dW1ibGVyLm8ga2V5d2VzdC5vIGJlZXAubwogCiAjIFRvcGxldmVsIE1vZHVsZSBEZXBlbmRlbmN5CiBvYmotJChDT05GSUdfU05EX1BPV0VSTUFDKSArPSBzbmQtcG93ZXJtYWMubwpkaWZmIC0tZ2l0IGEvc291bmQvcHBjL3BtYWMuYyBiL3NvdW5kL3BwYy9wbWFjLmMKaW5kZXggZjA3OTRlZi4uYjY3ODgxNCAxMDA2NDQKLS0tIGEvc291bmQvcHBjL3BtYWMuYworKysgYi9zb3VuZC9wcGMvcG1hYy5jCkBAIC04NjcsOCArODY3LDYgQEAKIAl1bnNpZ25lZCBpbnQgKnByb3AsIGw7CiAJc3RydWN0IG1hY2lvX2NoaXAqIG1hY2lvOwogCi0JdTMyIGxheW91dF9pZCA9IDA7Ci0KIAlpZiAoIW1hY2hpbmVfaXMocG93ZXJtYWMpKQogCQlyZXR1cm4gLUVOT0RFVjsKIApAQCAtOTI5LDggKzkyNywxNCBAQAogCWlmIChwcm9wICYmICpwcm9wIDwgMTYpCiAJCWNoaXAtPnN1YmZyYW1lID0gKnByb3A7CiAJcHJvcCA9ICh1bnNpZ25lZCBpbnQgKikgZ2V0X3Byb3BlcnR5KHNvdW5kLCAibGF5b3V0LWlkIiwgTlVMTCk7Ci0JaWYgKHByb3ApCi0JCWxheW91dF9pZCA9ICpwcm9wOworCWlmIChwcm9wKSB7CisJCS8qIHBhcnRseSBkZXByZWNhdGUgc25kLXBvd2VybWFjLCBmb3IgdGhvc2UgbWFjaGluZXMKKwkJICogdGhhdCBoYXZlIGEgbGF5b3V0LWlkIHByb3BlcnR5IGZvciBub3cgKi8KKwkJcHJpbnRrKEtFUk5fSU5GTyAic25kLXBvd2VybWFjIG5vIGxvbmdlciBoYW5kbGVzIGFueSAiCisJCQkJICJtYWNoaW5lcyB3aXRoIGEgbGF5b3V0LWlkIHByb3BlcnR5ICIKKwkJCQkgImluIHRoZSBkZXZpY2UtdHJlZSwgdXNlIHNuZC1hb2EuXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQogCS8qIFRoaXMgc2hvdWxkIGJlIHZlcmlmaWVkIG9uIG9sZGVyIHNjcmVhbWVycyAqLwogCWlmIChkZXZpY2VfaXNfY29tcGF0aWJsZShzb3VuZCwgInNjcmVhbWVyIikpIHsKIAkJY2hpcC0+bW9kZWwgPSBQTUFDX1NDUkVBTUVSOwpAQCAtOTYzLDM4ICs5NjcsNiBAQAogCQljaGlwLT5mcmVxX3RhYmxlID0gdHVtYmxlcl9mcmVxczsKIAkJY2hpcC0+Y29udHJvbF9tYXNrID0gTUFTS19JRVBDIHwgMHgxMTsgLyogZGlzYWJsZSBJRUUgKi8KIAl9Ci0JaWYgKGRldmljZV9pc19jb21wYXRpYmxlKHNvdW5kLCAiQU9BS2V5bGFyZ28iKSB8fAotCSAgICBkZXZpY2VfaXNfY29tcGF0aWJsZShzb3VuZCwgIkFPQWJhc2UiKSB8fAotCSAgICBkZXZpY2VfaXNfY29tcGF0aWJsZShzb3VuZCwgIkFPQUsyIikpIHsKLQkJLyogRm9yIG5vdywgb25seSBzdXBwb3J0IHZlcnkgYmFzaWMgVEFTMzAwNCBiYXNlZCBtYWNoaW5lcyB3aXRoCi0JCSAqIHNpbmdsZSBmcmVxdWVuY3kgdW50aWwgcHJvcGVyIGkycyBjb250cm9sIGlzIGltcGxlbWVudGVkCi0JCSAqLwotCQlzd2l0Y2gobGF5b3V0X2lkKSB7Ci0JCWNhc2UgMHgyNDoKLQkJY2FzZSAweDI5OgotCQljYXNlIDB4MzM6Ci0JCWNhc2UgMHg0NjoKLQkJY2FzZSAweDQ4OgotCQljYXNlIDB4NTA6Ci0JCWNhc2UgMHg1YzoKLQkJCWNoaXAtPm51bV9mcmVxcyA9IEFSUkFZX1NJWkUodHVtYmxlcl9mcmVxcyk7Ci0JCQljaGlwLT5tb2RlbCA9IFBNQUNfU05BUFBFUjsKLQkJCWNoaXAtPmNhbl9ieXRlX3N3YXAgPSAwOyAvKiBGSVhNRTogY2hlY2sgdGhpcyAqLwotCQkJY2hpcC0+Y29udHJvbF9tYXNrID0gTUFTS19JRVBDIHwgMHgxMTsvKiBkaXNhYmxlIElFRSAqLwotCQkJYnJlYWs7Ci0JCWNhc2UgMHgzYToKLQkJCWNoaXAtPm51bV9mcmVxcyA9IEFSUkFZX1NJWkUodHVtYmxlcl9mcmVxcyk7Ci0JCQljaGlwLT5tb2RlbCA9IFBNQUNfVE9PTklFOwotCQkJY2hpcC0+Y2FuX2J5dGVfc3dhcCA9IDA7IC8qIEZJWE1FOiBjaGVjayB0aGlzICovCi0JCQljaGlwLT5jb250cm9sX21hc2sgPSBNQVNLX0lFUEMgfCAweDExOy8qIGRpc2FibGUgSUVFICovCi0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCXByaW50ayhLRVJOX0VSUiAic25kOiBVbmtub3duIGxheW91dCBJRCAweCV4XG4iLAotCQkJICAgICAgIGxheW91dF9pZCk7Ci0JCQlyZXR1cm4gLUVOT0RFVjsKLQotCQl9Ci0JfQogCXByb3AgPSAodW5zaWduZWQgaW50ICopZ2V0X3Byb3BlcnR5KHNvdW5kLCAiZGV2aWNlLWlkIiwgTlVMTCk7CiAJaWYgKHByb3ApCiAJCWNoaXAtPmRldmljZV9pZCA9ICpwcm9wOwpkaWZmIC0tZ2l0IGEvc291bmQvcHBjL3BtYWMuaCBiL3NvdW5kL3BwYy9wbWFjLmgKaW5kZXggM2E5YmQ0ZC4uODM5NGU2NiAxMDA2NDQKLS0tIGEvc291bmQvcHBjL3BtYWMuaAorKysgYi9zb3VuZC9wcGMvcG1hYy5oCkBAIC04NSw3ICs4NSw3IEBACiAKIGVudW0gc25kX3BtYWNfbW9kZWwgewogCVBNQUNfQVdBQ1MsIFBNQUNfU0NSRUFNRVIsIFBNQUNfQlVSR1VORFksIFBNQUNfREFDQSwgUE1BQ19UVU1CTEVSLAotCVBNQUNfU05BUFBFUiwgUE1BQ19UT09OSUUKKwlQTUFDX1NOQVBQRVIKIH07CiAKIHN0cnVjdCBzbmRfcG1hYyB7CkBAIC0xODgsNyArMTg4LDYgQEAKIGludCBzbmRfcG1hY19kYWNhX2luaXQoc3RydWN0IHNuZF9wbWFjICpjaGlwKTsKIGludCBzbmRfcG1hY190dW1ibGVyX2luaXQoc3RydWN0IHNuZF9wbWFjICpjaGlwKTsKIGludCBzbmRfcG1hY190dW1ibGVyX3Bvc3RfaW5pdCh2b2lkKTsKLWludCBzbmRfcG1hY190b29uaWVfaW5pdChzdHJ1Y3Qgc25kX3BtYWMgKmNoaXApOwogCiAvKiBpMmMgZnVuY3Rpb25zICovCiBzdHJ1Y3QgcG1hY19rZXl3ZXN0IHsKZGlmZiAtLWdpdCBhL3NvdW5kL3BwYy9wb3dlcm1hYy5jIGIvc291bmQvcHBjL3Bvd2VybWFjLmMKaW5kZXggZjQ5MDJhMi4uZmE5YTQ0YSAxMDA2NDQKLS0tIGEvc291bmQvcHBjL3Bvd2VybWFjLmMKKysrIGIvc291bmQvcHBjL3Bvd2VybWFjLmMKQEAgLTk0LDEzICs5NCw2IEBACiAJCWlmICggc25kX3BtYWNfdHVtYmxlcl9pbml0KGNoaXApIDwgMCB8fCBzbmRfcG1hY190dW1ibGVyX3Bvc3RfaW5pdCgpIDwgMCkKIAkJCWdvdG8gX19lcnJvcjsKIAkJYnJlYWs7Ci0JY2FzZSBQTUFDX1RPT05JRToKLQkJc3RyY3B5KGNhcmQtPmRyaXZlciwgIlBNYWMgVG9vbmllIik7Ci0JCXN0cmNweShjYXJkLT5zaG9ydG5hbWUsICJQb3dlck1hYyBUb29uaWUiKTsKLQkJc3RyY3B5KGNhcmQtPmxvbmduYW1lLCBjYXJkLT5zaG9ydG5hbWUpOwotCQlpZiAoKGVyciA9IHNuZF9wbWFjX3Rvb25pZV9pbml0KGNoaXApKSA8IDApCi0JCQlnb3RvIF9fZXJyb3I7Ci0JCWJyZWFrOwogCWNhc2UgUE1BQ19BV0FDUzoKIAljYXNlIFBNQUNfU0NSRUFNRVI6CiAJCW5hbWVfZXh0ID0gY2hpcC0+bW9kZWwgPT0gUE1BQ19TQ1JFQU1FUiA/ICJTY3JlYW1lciIgOiAiQVdBQ1MiOwpAQCAtMTg4LDExICsxODEsMTUgQEAKIAlpZiAoKGVyciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmc25kX3BtYWNfZHJpdmVyKSkgPCAwKQogCQlyZXR1cm4gZXJyOwogCWRldmljZSA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoU05EX1BNQUNfRFJJVkVSLCAtMSwgTlVMTCwgMCk7Ci0JaWYgKElTX0VSUihkZXZpY2UpKSB7Ci0JCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzbmRfcG1hY19kcml2ZXIpOwotCQlyZXR1cm4gUFRSX0VSUihkZXZpY2UpOwotCX0KLQlyZXR1cm4gMDsKKwlpZiAoIUlTX0VSUihkZXZpY2UpKSB7CisJCWlmIChwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShkZXZpY2UpKQorCQkJcmV0dXJuIDA7CisJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldmljZSk7CisJCWVyciA9IC1FTk9ERVY7CisJfSBlbHNlCisJCWVyciA9IFBUUl9FUlIoZGV2aWNlKTsKKwlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc25kX3BtYWNfZHJpdmVyKTsKKwlyZXR1cm4gZXJyOwogCiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BwYy90b29uaWUuYyBiL3NvdW5kL3BwYy90b29uaWUuYwppbmRleCAxYWM3Yzg1Li5lNjlkZTI5IDEwMDY0NAotLS0gYS9zb3VuZC9wcGMvdG9vbmllLmMKKysrIGIvc291bmQvcHBjL3Rvb25pZS5jCkBAIC0xLDM3OCArMCwwIEBACi0vKgotICogTWFjIE1pbmkgInRvb25pZSIgbWl4ZXIgY29udHJvbAotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNSBieSBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gKgotICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQotICovCi0KLSNpbmNsdWRlIDxzb3VuZC9kcml2ZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9rbW9kLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgotI2luY2x1ZGUgPHNvdW5kL2NvcmUuaD4KLSNpbmNsdWRlIDxhc20vaW8uaD4KLSNpbmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2hkZXAuaD4KLSNpbmNsdWRlIDxhc20vcG1hY19mZWF0dXJlLmg+Ci0jaW5jbHVkZSAicG1hYy5oIgotCi0jdW5kZWYgREVCVUcKLQotI2lmZGVmIERFQlVHCi0jZGVmaW5lIERCRyhmbXQuLi4pIHByaW50ayhmbXQpCi0jZWxzZQotI2RlZmluZSBEQkcoZm10Li4uKQotI2VuZGlmCi0KLXN0cnVjdCBwbWFjX2dwaW8gewotCXVuc2lnbmVkIGludCBhZGRyOwotCXU4IGFjdGl2ZV92YWw7Ci0JdTggaW5hY3RpdmVfdmFsOwotCXU4IGFjdGl2ZV9zdGF0ZTsKLX07Ci0KLXN0cnVjdCBwbWFjX3Rvb25pZQotewotCXN0cnVjdCBwbWFjX2dwaW8JaHBfZGV0ZWN0X2dwaW87Ci0Jc3RydWN0IHBtYWNfZ3BpbwlocF9tdXRlX2dwaW87Ci0Jc3RydWN0IHBtYWNfZ3BpbwlhbXBfbXV0ZV9ncGlvOwotCWludAkJCWhwX2RldGVjdF9pcnE7Ci0JaW50CQkJYXV0b19tdXRlX25vdGlmeTsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJZGV0ZWN0X3dvcms7Ci19OwotCi0KLS8qCi0gKiBncGlvIGFjY2VzcwotICovCi0jZGVmaW5lIGRvX2dwaW9fd3JpdGUoZ3AsIHZhbCkgXAotCXBtYWNfY2FsbF9mZWF0dXJlKFBNQUNfRlRSX1dSSVRFX0dQSU8sIE5VTEwsIChncCktPmFkZHIsIHZhbCkKLSNkZWZpbmUgZG9fZ3Bpb19yZWFkKGdwKSBcCi0JcG1hY19jYWxsX2ZlYXR1cmUoUE1BQ19GVFJfUkVBRF9HUElPLCBOVUxMLCAoZ3ApLT5hZGRyLCAwKQotI2RlZmluZSB0dW1ibGVyX2dwaW9fZnJlZShncCkgLyogTk9QICovCi0KLXN0YXRpYyB2b2lkIHdyaXRlX2F1ZGlvX2dwaW8oc3RydWN0IHBtYWNfZ3BpbyAqZ3AsIGludCBhY3RpdmUpCi17Ci0JaWYgKCEgZ3AtPmFkZHIpCi0JCXJldHVybjsKLQlhY3RpdmUgPSBhY3RpdmUgPyBncC0+YWN0aXZlX3ZhbCA6IGdwLT5pbmFjdGl2ZV92YWw7Ci0JZG9fZ3Bpb193cml0ZShncCwgYWN0aXZlKTsKLQlEQkcoIihJKSBncGlvICV4IHdyaXRlICVkXG4iLCBncC0+YWRkciwgYWN0aXZlKTsKLX0KLQotc3RhdGljIGludCBjaGVja19hdWRpb19ncGlvKHN0cnVjdCBwbWFjX2dwaW8gKmdwKQotewotCWludCByZXQ7Ci0KLQlpZiAoISBncC0+YWRkcikKLQkJcmV0dXJuIDA7Ci0KLQlyZXQgPSBkb19ncGlvX3JlYWQoZ3ApOwotCi0JcmV0dXJuIChyZXQgJiAweGQpID09IChncC0+YWN0aXZlX3ZhbCAmIDB4ZCk7Ci19Ci0KLXN0YXRpYyBpbnQgcmVhZF9hdWRpb19ncGlvKHN0cnVjdCBwbWFjX2dwaW8gKmdwKQotewotCWludCByZXQ7Ci0JaWYgKCEgZ3AtPmFkZHIpCi0JCXJldHVybiAwOwotCXJldCA9ICgoZG9fZ3Bpb19yZWFkKGdwKSAmIDB4MDIpICE9MCk7Ci0JcmV0dXJuIHJldCA9PSBncC0+YWN0aXZlX3N0YXRlOwotfQotCi0KLWVudW0geyBUT09OSUVfTVVURV9IUCwgVE9PTklFX01VVEVfQU1QIH07Ci0KLXN0YXRpYyBpbnQgdG9vbmllX2dldF9tdXRlX3N3aXRjaChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKLQkJCQkgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQotewotCXN0cnVjdCBzbmRfcG1hYyAqY2hpcCA9IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsKLQlzdHJ1Y3QgcG1hY190b29uaWUgKm1peCA9IGNoaXAtPm1peGVyX2RhdGE7Ci0Jc3RydWN0IHBtYWNfZ3BpbyAqZ3A7Ci0KLQlpZiAobWl4ID09IE5VTEwpCi0JCXJldHVybiAtRU5PREVWOwotCXN3aXRjaChrY29udHJvbC0+cHJpdmF0ZV92YWx1ZSkgewotCWNhc2UgVE9PTklFX01VVEVfSFA6Ci0JCWdwID0gJm1peC0+aHBfbXV0ZV9ncGlvOwotCQlicmVhazsKLQljYXNlIFRPT05JRV9NVVRFX0FNUDoKLQkJZ3AgPSAmbWl4LT5hbXBfbXV0ZV9ncGlvOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSAhY2hlY2tfYXVkaW9fZ3BpbyhncCk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgdG9vbmllX3B1dF9tdXRlX3N3aXRjaChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKLQkJCQkgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKLXsKLQlzdHJ1Y3Qgc25kX3BtYWMgKmNoaXAgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7Ci0Jc3RydWN0IHBtYWNfdG9vbmllICptaXggPSBjaGlwLT5taXhlcl9kYXRhOwotCXN0cnVjdCBwbWFjX2dwaW8gKmdwOwotCWludCB2YWw7Ci0KLQlpZiAoY2hpcC0+dXBkYXRlX2F1dG9tdXRlICYmIGNoaXAtPmF1dG9fbXV0ZSkKLQkJcmV0dXJuIDA7IC8qIGRvbid0IHRvdWNoIGluIHRoZSBhdXRvLW11dGUgbW9kZSAqLwotCi0JaWYgKG1peCA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCXN3aXRjaChrY29udHJvbC0+cHJpdmF0ZV92YWx1ZSkgewotCWNhc2UgVE9PTklFX01VVEVfSFA6Ci0JCWdwID0gJm1peC0+aHBfbXV0ZV9ncGlvOwotCQlicmVhazsKLQljYXNlIFRPT05JRV9NVVRFX0FNUDoKLQkJZ3AgPSAmbWl4LT5hbXBfbXV0ZV9ncGlvOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JdmFsID0gISBjaGVja19hdWRpb19ncGlvKGdwKTsKLQlpZiAodmFsICE9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdKSB7Ci0JCXdyaXRlX2F1ZGlvX2dwaW8oZ3AsICEgdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0pOwotCQlyZXR1cm4gMTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyB0b29uaWVfaHBfc3cgX19pbml0ZGF0YSA9IHsKLQkuaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUiwKLQkubmFtZSA9ICJIZWFkcGhvbmUgUGxheWJhY2sgU3dpdGNoIiwKLQkuaW5mbyA9IHNuZF9wbWFjX2Jvb2xlYW5fbW9ub19pbmZvLAotCS5nZXQgPSB0b29uaWVfZ2V0X211dGVfc3dpdGNoLAotCS5wdXQgPSB0b29uaWVfcHV0X211dGVfc3dpdGNoLAotCS5wcml2YXRlX3ZhbHVlID0gVE9PTklFX01VVEVfSFAsCi19Owotc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHRvb25pZV9zcGVha2VyX3N3IF9faW5pdGRhdGEgPSB7Ci0JLmlmYWNlID0gU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIsCi0JLm5hbWUgPSAiUEMgU3BlYWtlciBQbGF5YmFjayBTd2l0Y2giLAotCS5pbmZvID0gc25kX3BtYWNfYm9vbGVhbl9tb25vX2luZm8sCi0JLmdldCA9IHRvb25pZV9nZXRfbXV0ZV9zd2l0Y2gsCi0JLnB1dCA9IHRvb25pZV9wdXRfbXV0ZV9zd2l0Y2gsCi0JLnByaXZhdGVfdmFsdWUgPSBUT09OSUVfTVVURV9BTVAsCi19OwotCi0vKgotICogYXV0by1tdXRlIHN0dWZmcwotICovCi1zdGF0aWMgaW50IHRvb25pZV9kZXRlY3RfaGVhZHBob25lKHN0cnVjdCBzbmRfcG1hYyAqY2hpcCkKLXsKLQlzdHJ1Y3QgcG1hY190b29uaWUgKm1peCA9IGNoaXAtPm1peGVyX2RhdGE7Ci0JaW50IGRldGVjdCA9IDA7Ci0KLQlpZiAobWl4LT5ocF9kZXRlY3RfZ3Bpby5hZGRyKQotCQlkZXRlY3QgfD0gcmVhZF9hdWRpb19ncGlvKCZtaXgtPmhwX2RldGVjdF9ncGlvKTsKLQlyZXR1cm4gZGV0ZWN0OwotfQotCi1zdGF0aWMgdm9pZCB0b29uaWVfY2hlY2tfbXV0ZShzdHJ1Y3Qgc25kX3BtYWMgKmNoaXAsIHN0cnVjdCBwbWFjX2dwaW8gKmdwLCBpbnQgdmFsLAotCQkJICAgICAgaW50IGRvX25vdGlmeSwgc3RydWN0IHNuZF9rY29udHJvbCAqc3cpCi17Ci0JaWYgKGNoZWNrX2F1ZGlvX2dwaW8oZ3ApICE9IHZhbCkgewotCQl3cml0ZV9hdWRpb19ncGlvKGdwLCB2YWwpOwotCQlpZiAoZG9fbm90aWZ5KQotCQkJc25kX2N0bF9ub3RpZnkoY2hpcC0+Y2FyZCwgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUsCi0JCQkJICAgICAgICZzdy0+aWQpOwotCX0KLX0KLQotc3RhdGljIHZvaWQgdG9vbmllX2RldGVjdF9oYW5kbGVyKHZvaWQgKnNlbGYpCi17Ci0Jc3RydWN0IHNuZF9wbWFjICpjaGlwID0gKHN0cnVjdCBzbmRfcG1hYyAqKSBzZWxmOwotCXN0cnVjdCBwbWFjX3Rvb25pZSAqbWl4OwotCWludCBoZWFkcGhvbmU7Ci0KLQlpZiAoIWNoaXApCi0JCXJldHVybjsKLQotCW1peCA9IGNoaXAtPm1peGVyX2RhdGE7Ci0Jc25kX2Fzc2VydChtaXgsIHJldHVybik7Ci0KLQloZWFkcGhvbmUgPSB0b29uaWVfZGV0ZWN0X2hlYWRwaG9uZShjaGlwKTsKLQotCURCRygiaGVhZHBob25lOiAlZCwgbGluZW91dDogJWRcbiIsIGhlYWRwaG9uZSwgbGluZW91dCk7Ci0KLQlpZiAoaGVhZHBob25lKSB7Ci0JCS8qIHVubXV0ZSBoZWFkcGhvbmUvbGluZW91dCAmIG11dGUgc3BlYWtlciAqLwotCQl0b29uaWVfY2hlY2tfbXV0ZShjaGlwLCAmbWl4LT5ocF9tdXRlX2dwaW8sIDAsCi0JCQkJICBtaXgtPmF1dG9fbXV0ZV9ub3RpZnksIGNoaXAtPm1hc3Rlcl9zd19jdGwpOwotCQl0b29uaWVfY2hlY2tfbXV0ZShjaGlwLCAmbWl4LT5hbXBfbXV0ZV9ncGlvLCAxLAotCQkJCSAgbWl4LT5hdXRvX211dGVfbm90aWZ5LCBjaGlwLT5zcGVha2VyX3N3X2N0bCk7Ci0JfSBlbHNlIHsKLQkJLyogdW5tdXRlIHNwZWFrZXIsIG11dGUgb3RoZXJzICovCi0JCXRvb25pZV9jaGVja19tdXRlKGNoaXAsICZtaXgtPmFtcF9tdXRlX2dwaW8sIDAsCi0JCQkJICBtaXgtPmF1dG9fbXV0ZV9ub3RpZnksIGNoaXAtPnNwZWFrZXJfc3dfY3RsKTsKLQkJdG9vbmllX2NoZWNrX211dGUoY2hpcCwgJm1peC0+aHBfbXV0ZV9ncGlvLCAxLAotCQkJCSAgbWl4LT5hdXRvX211dGVfbm90aWZ5LCBjaGlwLT5tYXN0ZXJfc3dfY3RsKTsKLQl9Ci0JaWYgKG1peC0+YXV0b19tdXRlX25vdGlmeSkgewotCQlzbmRfY3RsX25vdGlmeShjaGlwLT5jYXJkLCBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRSwKLQkJCQkgICAgICAgJmNoaXAtPmhwX2RldGVjdF9jdGwtPmlkKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIHRvb25pZV91cGRhdGVfYXV0b211dGUoc3RydWN0IHNuZF9wbWFjICpjaGlwLCBpbnQgZG9fbm90aWZ5KQotewotCWlmIChjaGlwLT5hdXRvX211dGUpIHsKLQkJc3RydWN0IHBtYWNfdG9vbmllICptaXg7Ci0JCW1peCA9IGNoaXAtPm1peGVyX2RhdGE7Ci0JCXNuZF9hc3NlcnQobWl4LCByZXR1cm4pOwotCQltaXgtPmF1dG9fbXV0ZV9ub3RpZnkgPSBkb19ub3RpZnk7Ci0JCXNjaGVkdWxlX3dvcmsoJm1peC0+ZGV0ZWN0X3dvcmspOwotCX0KLX0KLQotLyogaW50ZXJydXB0IC0gaGVhZHBob25lIHBsdWcgY2hhbmdlZCAqLwotc3RhdGljIGlycXJldHVybl90IHRvb25pZV9ocF9pbnRyKGludCBpcnEsIHZvaWQgKmRldmlkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQlzdHJ1Y3Qgc25kX3BtYWMgKmNoaXAgPSBkZXZpZDsKLQotCWlmIChjaGlwLT51cGRhdGVfYXV0b211dGUgJiYgY2hpcC0+aW5pdGlhbGl6ZWQpIHsKLQkJY2hpcC0+dXBkYXRlX2F1dG9tdXRlKGNoaXAsIDEpOwotCQlyZXR1cm4gSVJRX0hBTkRMRUQ7Ci0JfQotCXJldHVybiBJUlFfTk9ORTsKLX0KLQotLyogbG9vayBmb3IgYXVkaW8gZ3BpbyBkZXZpY2UgKi8KLXN0YXRpYyBpbnQgZmluZF9hdWRpb19ncGlvKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBsYXRmb3JtLAotCQkJICAgc3RydWN0IHBtYWNfZ3BpbyAqZ3ApCi17Ci0Jc3RydWN0IGRldmljZV9ub2RlICpucDsKLSAgCXUzMiAqYmFzZSwgYWRkcjsKLQotCWlmICghIChucCA9IGZpbmRfZGV2aWNlcygiZ3BpbyIpKSkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KLQlmb3IgKG5wID0gbnAtPmNoaWxkOyBucDsgbnAgPSBucC0+c2libGluZykgewotCQljaGFyICpwcm9wZXJ0eSA9IGdldF9wcm9wZXJ0eShucCwgImF1ZGlvLWdwaW8iLCBOVUxMKTsKLQkJaWYgKHByb3BlcnR5ICYmIHN0cmNtcChwcm9wZXJ0eSwgbmFtZSkgPT0gMCkKLQkJCWJyZWFrOwotCQlpZiAoZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIG5hbWUpKQotCQkJYnJlYWs7Ci0JfQotCWlmIChucCA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWJhc2UgPSAodTMyICopZ2V0X3Byb3BlcnR5KG5wLCAiQUFQTCxhZGRyZXNzIiwgTlVMTCk7Ci0JaWYgKCEgYmFzZSkgewotCQliYXNlID0gKHUzMiAqKWdldF9wcm9wZXJ0eShucCwgInJlZyIsIE5VTEwpOwotCQlpZiAoIWJhc2UpIHsKLQkJCURCRygiKEUpIGNhbm5vdCBmaW5kIGFkZHJlc3MgZm9yIGRldmljZSAlcyAhXG4iLCBuYW1lKTsKLQkJCXJldHVybiAtRU5PREVWOwotCQl9Ci0JCWFkZHIgPSAqYmFzZTsKLQkJaWYgKGFkZHIgPCAweDUwKQotCQkJYWRkciArPSAweDUwOwotCX0gZWxzZQotCQlhZGRyID0gKmJhc2U7Ci0KLQlncC0+YWRkciA9IGFkZHIgJiAweDAwMDBmZmZmOwotCi0JLyogVHJ5IHRvIGZpbmQgdGhlIGFjdGl2ZSBzdGF0ZSwgZGVmYXVsdCB0byAwICEgKi8KLQliYXNlID0gKHUzMiAqKWdldF9wcm9wZXJ0eShucCwgImF1ZGlvLWdwaW8tYWN0aXZlLXN0YXRlIiwgTlVMTCk7Ci0JaWYgKGJhc2UpIHsKLQkJZ3AtPmFjdGl2ZV9zdGF0ZSA9ICpiYXNlOwotCQlncC0+YWN0aXZlX3ZhbCA9ICgqYmFzZSkgPyAweDUgOiAweDQ7Ci0JCWdwLT5pbmFjdGl2ZV92YWwgPSAoKmJhc2UpID8gMHg0IDogMHg1OwotCX0gZWxzZSB7Ci0JCXUzMiAqcHJvcCA9IE5VTEw7Ci0JCWdwLT5hY3RpdmVfc3RhdGUgPSAwOwotCQlncC0+YWN0aXZlX3ZhbCA9IDB4NDsKLQkJZ3AtPmluYWN0aXZlX3ZhbCA9IDB4NTsKLQkJLyogSGVyZSBhcmUgc29tZSBjcnVkZSBoYWNrcyB0byBleHRyYWN0IHRoZSBHUElPIHBvbGFyaXR5IGFuZAotCQkgKiBvcGVuIGNvbGxlY3RvciBpbmZvcm1hdGlvbnMgb3V0IG9mIHRoZSBkby1wbGF0Zm9ybSBzY3JpcHQKLQkJICogYXMgd2UgZG9uJ3QgeWV0IGhhdmUgYW4gaW50ZXJwcmV0ZXIgZm9yIHRoZXNlIHRoaW5ncwotCQkgKi8KLQkJaWYgKHBsYXRmb3JtKQotCQkJcHJvcCA9ICh1MzIgKilnZXRfcHJvcGVydHkobnAsIHBsYXRmb3JtLCBOVUxMKTsKLQkJaWYgKHByb3ApIHsKLQkJCWlmIChwcm9wWzNdID09IDB4OSAmJiBwcm9wWzRdID09IDB4OSkgewotCQkJCWdwLT5hY3RpdmVfdmFsID0gMHhkOwotCQkJCWdwLT5pbmFjdGl2ZV92YWwgPSAweGM7Ci0JCQl9Ci0JCQlpZiAocHJvcFszXSA9PSAweDEgJiYgcHJvcFs0XSA9PSAweDEpIHsKLQkJCQlncC0+YWN0aXZlX3ZhbCA9IDB4NTsKLQkJCQlncC0+aW5hY3RpdmVfdmFsID0gMHg0OwotCQkJfQotCQl9Ci0JfQotCi0JREJHKCIoSSkgR1BJTyBkZXZpY2UgJXMgZm91bmQsIG9mZnNldDogJXgsIGFjdGl2ZSBzdGF0ZTogJWQgIVxuIiwKLQkgICAgbmFtZSwgZ3AtPmFkZHIsIGdwLT5hY3RpdmVfc3RhdGUpOwotCi0JcmV0dXJuIChucC0+bl9pbnRycyA+IDApID8gbnAtPmludHJzWzBdLmxpbmUgOiAwOwotfQotCi1zdGF0aWMgdm9pZCB0b29uaWVfY2xlYW51cChzdHJ1Y3Qgc25kX3BtYWMgKmNoaXApCi17Ci0Jc3RydWN0IHBtYWNfdG9vbmllICptaXggPSBjaGlwLT5taXhlcl9kYXRhOwotCWlmICghIG1peCkKLQkJcmV0dXJuOwotCWlmIChtaXgtPmhwX2RldGVjdF9pcnEgPj0gMCkKLQkJZnJlZV9pcnEobWl4LT5ocF9kZXRlY3RfaXJxLCBjaGlwKTsKLQlrZnJlZShtaXgpOwotCWNoaXAtPm1peGVyX2RhdGEgPSBOVUxMOwotfQotCi1pbnQgX19pbml0IHNuZF9wbWFjX3Rvb25pZV9pbml0KHN0cnVjdCBzbmRfcG1hYyAqY2hpcCkKLXsKLQlzdHJ1Y3QgcG1hY190b29uaWUgKm1peDsKLQotCW1peCA9IGttYWxsb2Moc2l6ZW9mKCptaXgpLCBHRlBfS0VSTkVMKTsKLQlpZiAoISBtaXgpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JY2hpcC0+bWl4ZXJfZGF0YSA9IG1peDsKLQljaGlwLT5taXhlcl9mcmVlID0gdG9vbmllX2NsZWFudXA7Ci0KLQlmaW5kX2F1ZGlvX2dwaW8oImhlYWRwaG9uZS1tdXRlIiwgTlVMTCwgJm1peC0+aHBfbXV0ZV9ncGlvKTsKLQlmaW5kX2F1ZGlvX2dwaW8oImFtcC1tdXRlIiwgTlVMTCwgJm1peC0+YW1wX211dGVfZ3Bpbyk7Ci0JbWl4LT5ocF9kZXRlY3RfaXJxID0gZmluZF9hdWRpb19ncGlvKCJoZWFkcGhvbmUtZGV0ZWN0IiwKLQkJCQkJICAgICBOVUxMLCAmbWl4LT5ocF9kZXRlY3RfZ3Bpbyk7Ci0KLQlzdHJjcHkoY2hpcC0+Y2FyZC0+bWl4ZXJuYW1lLCAiUG93ZXJNYWMgVG9vbmllIik7Ci0KLQljaGlwLT5tYXN0ZXJfc3dfY3RsID0gc25kX2N0bF9uZXcxKCZ0b29uaWVfaHBfc3csIGNoaXApOwotCXNuZF9jdGxfYWRkKGNoaXAtPmNhcmQsIGNoaXAtPm1hc3Rlcl9zd19jdGwpOwotCi0JY2hpcC0+c3BlYWtlcl9zd19jdGwgPSBzbmRfY3RsX25ldzEoJnRvb25pZV9zcGVha2VyX3N3LCBjaGlwKTsKLQlzbmRfY3RsX2FkZChjaGlwLT5jYXJkLCBjaGlwLT5zcGVha2VyX3N3X2N0bCk7Ci0KLQlJTklUX1dPUksoJm1peC0+ZGV0ZWN0X3dvcmssIHRvb25pZV9kZXRlY3RfaGFuZGxlciwgKHZvaWQgKiljaGlwKTsKLQotCWlmIChtaXgtPmhwX2RldGVjdF9pcnEgPj0gMCkgewotCQlzbmRfcG1hY19hZGRfYXV0b211dGUoY2hpcCk7Ci0KLQkJY2hpcC0+ZGV0ZWN0X2hlYWRwaG9uZSA9IHRvb25pZV9kZXRlY3RfaGVhZHBob25lOwotCQljaGlwLT51cGRhdGVfYXV0b211dGUgPSB0b29uaWVfdXBkYXRlX2F1dG9tdXRlOwotCQl0b29uaWVfdXBkYXRlX2F1dG9tdXRlKGNoaXAsIDApOwotCi0JCWlmIChyZXF1ZXN0X2lycShtaXgtPmhwX2RldGVjdF9pcnEsIHRvb25pZV9ocF9pbnRyLCAwLAotCQkJCSJTb3VuZCBIZWFkcGhvbmUgRGV0ZWN0aW9uIiwgY2hpcCkgPCAwKQotCQkJbWl4LT5ocF9kZXRlY3RfaXJxID0gLTE7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KZGlmZiAtLWdpdCBhL3NvdW5kL3NwYXJjL2FtZDc5MzAuYyBiL3NvdW5kL3NwYXJjL2FtZDc5MzAuYwppbmRleCA1NTQ5MzM0Li5kZmU5YmFjIDEwMDY0NAotLS0gYS9zb3VuZC9zcGFyYy9hbWQ3OTMwLmMKKysrIGIvc291bmQvc3BhcmMvYW1kNzkzMC5jCkBAIC05NzcsOSArOTc3LDkgQEAKIAogCWlmIChyZXF1ZXN0X2lycShpcnFfcHJvcC0+cHJpLCBzbmRfYW1kNzkzMF9pbnRlcnJ1cHQsCiAJCQlTQV9JTlRFUlJVUFQgfCBTQV9TSElSUSwgImFtZDc5MzAiLCBhbWQpKSB7Ci0JCXNuZF9wcmludGsoImFtZDc5MzAtJWQ6IFVuYWJsZSB0byBncmFiIElSUSAlc1xuIiwKKwkJc25kX3ByaW50aygiYW1kNzkzMC0lZDogVW5hYmxlIHRvIGdyYWIgSVJRICVkXG4iLAogCQkJICAgZGV2LAotCQkJICAgX19pcnFfaXRvYShpcnFfcHJvcC0+cHJpKSk7CisJCQkgICBpcnFfcHJvcC0+cHJpKTsKIAkJc25kX2FtZDc5MzBfZnJlZShhbWQpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KQEAgLTEwNjMsMTEgKzEwNjMsMTEgQEAKIAogCXN0cmNweShjYXJkLT5kcml2ZXIsICJBTUQ3OTMwIik7CiAJc3RyY3B5KGNhcmQtPnNob3J0bmFtZSwgIlN1biBBTUQ3OTMwIik7Ci0Jc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JTAybHg6MHglMDhseCwgaXJxICVzIiwKKwlzcHJpbnRmKGNhcmQtPmxvbmduYW1lLCAiJXMgYXQgMHglMDJseDoweCUwOGx4LCBpcnEgJWQiLAogCQljYXJkLT5zaG9ydG5hbWUsCiAJCXJwLT5mbGFncyAmIDB4ZmZMLAogCQlycC0+c3RhcnQsCi0JCV9faXJxX2l0b2EoaXJxX3Byb3AucHJpKSk7CisJCWlycV9wcm9wLnByaSk7CiAKIAlpZiAoKGVyciA9IHNuZF9hbWQ3OTMwX2NyZWF0ZShjYXJkLCBzZGV2LCBycCwgcmVnX3Byb3AucmVnX3NpemUsCiAJCQkJCSAgJmlycV9wcm9wLCBkZXYsICZhbWQpKSA8IDApCmRpZmYgLS1naXQgYS9zb3VuZC9zcGFyYy9jczQyMzEuYyBiL3NvdW5kL3NwYXJjL2NzNDIzMS5jCmluZGV4IDg4MDRmMjYuLmIzZWZjOWEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NwYXJjL2NzNDIzMS5jCisrKyBiL3NvdW5kL3NwYXJjL2NzNDIzMS5jCkBAIC0yMDAzLDkgKzIwMDMsOCBAQAogCiAJaWYgKHJlcXVlc3RfaXJxKHNkZXYtPmlycXNbMF0sIHNuZF9jczQyMzFfc2J1c19pbnRlcnJ1cHQsCiAJCQlTQV9TSElSUSwgImNzNDIzMSIsIGNoaXApKSB7Ci0JCXNuZF9wcmludGRkKCJjczQyMzEtJWQ6IFVuYWJsZSB0byBncmFiIFNCVVMgSVJRICVzXG4iLAotCQkJICAgZGV2LAotCQkJICAgX19pcnFfaXRvYShzZGV2LT5pcnFzWzBdKSk7CisJCXNuZF9wcmludGRkKCJjczQyMzEtJWQ6IFVuYWJsZSB0byBncmFiIFNCVVMgSVJRICVkXG4iLAorCQkJICAgIGRldiwgc2Rldi0+aXJxc1swXSk7CiAJCXNuZF9jczQyMzFfc2J1c19mcmVlKGNoaXApOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KQEAgLTIwMzgsMTEgKzIwMzcsMTEgQEAKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0Jc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JTAybHg6MHglMDhseCwgaXJxICVzIiwKKwlzcHJpbnRmKGNhcmQtPmxvbmduYW1lLCAiJXMgYXQgMHglMDJseDoweCUwOGx4LCBpcnEgJWQiLAogCQljYXJkLT5zaG9ydG5hbWUsCiAJCXJwLT5mbGFncyAmIDB4ZmZMLAogCQlycC0+c3RhcnQsCi0JCV9faXJxX2l0b2Eoc2Rldi0+aXJxc1swXSkpOworCQlzZGV2LT5pcnFzWzBdKTsKIAogCWlmICgoZXJyID0gc25kX2NzNDIzMV9zYnVzX2NyZWF0ZShjYXJkLCBzZGV2LCBkZXYsICZjcCkpIDwgMCkgewogCQlzbmRfY2FyZF9mcmVlKGNhcmQpOwpAQCAtMjI0NCwxMCArMjI0MywxMCBAQAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlzcHJpbnRmKGNhcmQtPmxvbmduYW1lLCAiJXMgYXQgMHglbHgsIGlycSAlcyIsCisJc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JWx4LCBpcnEgJWQiLAogCQljYXJkLT5zaG9ydG5hbWUsCiAJCWVkZXYtPnJlc291cmNlWzBdLnN0YXJ0LAotCQlfX2lycV9pdG9hKGVkZXYtPmlycXNbMF0pKTsKKwkJZWRldi0+aXJxc1swXSk7CiAKIAlpZiAoKGVyciA9IHNuZF9jczQyMzFfZWJ1c19jcmVhdGUoY2FyZCwgZWRldiwgZGV2LCAmY2hpcCkpIDwgMCkgewogCQlzbmRfY2FyZF9mcmVlKGNhcmQpOwpkaWZmIC0tZ2l0IGEvc291bmQvc3BhcmMvZGJyaS5jIGIvc291bmQvc3BhcmMvZGJyaS5jCmluZGV4IDIxNjRiN2QuLjVlZWNkZDAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NwYXJjL2RicmkuYworKysgYi9zb3VuZC9zcGFyYy9kYnJpLmMKQEAgLTkyLDcgKzkyLDcgQEAKICNkZWZpbmUgRF9VU1IJKDE8PDQpCiAjZGVmaW5lIERfREVTQwkoMTw8NSkKIAotc3RhdGljIGludCBkYnJpX2RlYnVnID0gMDsKK3N0YXRpYyBpbnQgZGJyaV9kZWJ1ZzsKIG1vZHVsZV9wYXJhbShkYnJpX2RlYnVnLCBpbnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhkYnJpX2RlYnVnLCAiRGVidWcgdmFsdWUgZm9yIFN1biBEQlJJIHNvdW5kY2FyZC4iKTsKIApAQCAtNTkzLDcgKzU5Myw3IEBACiAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIGRicmlfc3RyZWFtaW5mbyAqLwogI2RlZmluZSBEQlJJX1NUUkVBTShkYnJpLCBzdWJzdHJlYW0pCSZkYnJpLT5zdHJlYW1faW5mb1tEQlJJX1NUUkVBTU5PKHN1YnN0cmVhbSldCiAKLXN0YXRpYyBzdHJ1Y3Qgc25kX2RicmkgKmRicmlfbGlzdCA9IE5VTEw7CS8qIEFsbCBEQlJJIGRldmljZXMgKi8KK3N0YXRpYyBzdHJ1Y3Qgc25kX2RicmkgKmRicmlfbGlzdDsJLyogQWxsIERCUkkgZGV2aWNlcyAqLwogCiAvKgogICogU2hvcnQgZGF0YSBwaXBlcyB0cmFuc21pdCBMU0IgZmlyc3QuIFRoZSBDUzQyMTUgcmVjZWl2ZXMgTVNCIGZpcnN0LiBHcnJyLgpAQCAtMjUyMSwxMSArMjUyMSwxMSBAQAogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhkYnJpLT5jYXJkLCAicmVncyIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZGJyaSwgMTAyNCwgZGJyaV9yZWdzX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGRicmksIGRicmlfcmVnc19yZWFkKTsKIAogI2lmZGVmIERCUklfREVCVUcKIAlpZiAoISBzbmRfY2FyZF9wcm9jX25ldyhkYnJpLT5jYXJkLCAiZGVidWciLCAmZW50cnkpKSB7Ci0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgZGJyaSwgNDA5NiwgZGJyaV9kZWJ1Z19yZWFkKTsKKwkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBkYnJpLCBkYnJpX2RlYnVnX3JlYWQpOwogCQllbnRyeS0+bW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPOwkvKiBSZWFkYWJsZSBvbmx5LiAqLwogCX0KICNlbmRpZgpAQCAtMjY0NSw5ICsyNjQ1LDkgQEAKIAlzdHJjcHkoY2FyZC0+ZHJpdmVyLCAiREJSSSIpOwogCXN0cmNweShjYXJkLT5zaG9ydG5hbWUsICJTdW4gREJSSSIpOwogCXJwID0gJnNkZXYtPnJlc291cmNlWzBdOwotCXNwcmludGYoY2FyZC0+bG9uZ25hbWUsICIlcyBhdCAweCUwMmx4OjB4JTA4bHgsIGlycSAlcyIsCisJc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JTAybHg6MHglMDhseCwgaXJxICVkIiwKIAkJY2FyZC0+c2hvcnRuYW1lLAotCQlycC0+ZmxhZ3MgJiAweGZmTCwgcnAtPnN0YXJ0LCBfX2lycV9pdG9hKGlycS5wcmkpKTsKKwkJcnAtPmZsYWdzICYgMHhmZkwsIHJwLT5zdGFydCwgaXJxLnByaSk7CiAKIAlpZiAoKGVyciA9IHNuZF9kYnJpX2NyZWF0ZShjYXJkLCBzZGV2LCAmaXJxLCBkZXYpKSA8IDApIHsKIAkJc25kX2NhcmRfZnJlZShjYXJkKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3N5bnRoL2VtdXgvZW11eC5jIGIvc291bmQvc3ludGgvZW11eC9lbXV4LmMKaW5kZXggZmM3MzNiYi4uNTczZTM3MCAxMDA2NDQKLS0tIGEvc291bmQvc3ludGgvZW11eC9lbXV4LmMKKysrIGIvc291bmQvc3ludGgvZW11eC9lbXV4LmMKQEAgLTYzLDYgKzYzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZW11eF9uZXcpOwogCiAvKgogICovCkBAIC0xMzYsNiArMTM3LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZW11eF9yZWdpc3Rlcik7CiAKIC8qCiAgKi8KQEAgLTE3MSwxOCArMTczLDggQEAKIAlyZXR1cm4gMDsKIH0KIAotCi1FWFBPUlRfU1lNQk9MKHNuZF9lbXV4X25ldyk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9lbXV4X3JlZ2lzdGVyKTsKIEVYUE9SVF9TWU1CT0woc25kX2VtdXhfZnJlZSk7CiAKLUVYUE9SVF9TWU1CT0woc25kX2VtdXhfdGVybWluYXRlX2FsbCk7Ci1FWFBPUlRfU1lNQk9MKHNuZF9lbXV4X2xvY2tfdm9pY2UpOwotRVhQT1JUX1NZTUJPTChzbmRfZW11eF91bmxvY2tfdm9pY2UpOwotCi0vKiBzb3VuZGZvbnQuYyAqLwotRVhQT1JUX1NZTUJPTChzbmRfc2ZfbGluZWFyX3RvX2xvZyk7Ci0KIAogLyoKICAqICBJTklUIHBhcnQKZGlmZiAtLWdpdCBhL3NvdW5kL3N5bnRoL2VtdXgvZW11eF9wcm9jLmMgYi9zb3VuZC9zeW50aC9lbXV4L2VtdXhfcHJvYy5jCmluZGV4IDFiYTY4Y2UuLjU4Yjk2MDEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3N5bnRoL2VtdXgvZW11eF9wcm9jLmMKKysrIGIvc291bmQvc3ludGgvZW11eC9lbXV4X3Byb2MuYwpAQCAtMTE5LDcgKzExOSw2IEBACiAKIAllbnRyeS0+Y29udGVudCA9IFNORFJWX0lORk9fQ09OVEVOVF9URVhUOwogCWVudHJ5LT5wcml2YXRlX2RhdGEgPSBlbXU7Ci0JZW50cnktPmMudGV4dC5yZWFkX3NpemUgPSAxMDI0OwogCWVudHJ5LT5jLnRleHQucmVhZCA9IHNuZF9lbXV4X3Byb2NfaW5mb19yZWFkOwogCWlmIChzbmRfaW5mb19yZWdpc3RlcihlbnRyeSkgPCAwKQogCQlzbmRfaW5mb19mcmVlX2VudHJ5KGVudHJ5KTsKZGlmZiAtLWdpdCBhL3NvdW5kL3N5bnRoL2VtdXgvZW11eF9zZXEuYyBiL3NvdW5kL3N5bnRoL2VtdXgvZW11eF9zZXEuYwppbmRleCA4ZjAwZjA3Li5kMTc2Y2MwIDEwMDY0NAotLS0gYS9zb3VuZC9zeW50aC9lbXV4L2VtdXhfc2VxLmMKKysrIGIvc291bmQvc3ludGgvZW11eC9lbXV4X3NlcS5jCkBAIC01NSw3ICs1NSw4IEBACiAJCQkJIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTSB8XAogCQkJCSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR1MgfFwKIAkJCQkgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHIHxcCi0JCQkJIFNORFJWX1NFUV9QT1JUX1RZUEVfRElSRUNUX1NBTVBMRSkKKwkJCQkgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRSB8XAorCQkJCSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSKQogCiAvKgogICogSW5pdGlhbGlzZSB0aGUgRU1VWCBTeW50aCBieSBjcmVhdGluZyBhIGNsaWVudCBhbmQgcmVnaXN0ZXJpbmcKZGlmZiAtLWdpdCBhL3NvdW5kL3N5bnRoL2VtdXgvZW11eF9zeW50aC5jIGIvc291bmQvc3ludGgvZW11eC9lbXV4X3N5bnRoLmMKaW5kZXggMjQ3MDVkMS4uMzczMzExOCAxMDA2NDQKLS0tIGEvc291bmQvc3ludGgvZW11eC9lbXV4X3N5bnRoLmMKKysrIGIvc291bmQvc3ludGgvZW11eC9lbXV4X3N5bnRoLmMKQEAgLTQzNCw2ICs0MzQsNyBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVtdS0+dm9pY2VfbG9jaywgZmxhZ3MpOwogfQogCitFWFBPUlRfU1lNQk9MKHNuZF9lbXV4X3Rlcm1pbmF0ZV9hbGwpOwogCiAvKgogICogVGVybWluYXRlIGFsbCB2b2ljZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwb3J0CkBAIC05NTEsNiArOTUyLDggQEAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbXUtPnZvaWNlX2xvY2ssIGZsYWdzKTsKIH0KIAorRVhQT1JUX1NZTUJPTChzbmRfZW11eF9sb2NrX3ZvaWNlKTsKKwogLyoKICAqLwogdm9pZCBzbmRfZW11eF91bmxvY2tfdm9pY2Uoc3RydWN0IHNuZF9lbXV4ICplbXUsIGludCB2b2ljZSkKQEAgLTk2NSwzICs5NjgsNSBAQAogCQkJICAgdm9pY2UsIGVtdS0+dm9pY2VzW3ZvaWNlXS5zdGF0ZSk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW11LT52b2ljZV9sb2NrLCBmbGFncyk7CiB9CisKK0VYUE9SVF9TWU1CT0woc25kX2VtdXhfdW5sb2NrX3ZvaWNlKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3N5bnRoL2VtdXgvc291bmRmb250LmMgYi9zb3VuZC9zeW50aC9lbXV4L3NvdW5kZm9udC5jCmluZGV4IDMyYzI3MTYuLjQ1NWU1MzUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3N5bnRoL2VtdXgvc291bmRmb250LmMKKysrIGIvc291bmQvc3ludGgvZW11eC9zb3VuZGZvbnQuYwpAQCAtMTk1LDcgKzE5NSw3IEBACiAJCWJyZWFrOwogCWNhc2UgU05EUlZfU0ZOVF9SRU1PVkVfSU5GTzoKIAkJLyogcGF0Y2ggbXVzdCBiZSBvcGVuZWQgKi8KLQkJaWYgKHNmbGlzdC0+Y3VycnNmKSB7CisJCWlmICghc2ZsaXN0LT5jdXJyc2YpIHsKIAkJCXNuZF9wcmludGsoInNvdW5kZm9udDogcmVtb3ZlX2luZm86IHBhdGNoIG5vdCBvcGVuZWRcbiIpOwogCQkJcmMgPSAtRUlOVkFMOwogCQl9IGVsc2UgewpAQCAtODEwLDYgKzgxMCw5IEBACiAJcmV0dXJuIHY7CiB9CiAKK0VYUE9SVF9TWU1CT0woc25kX3NmX2xpbmVhcl90b19sb2cpOworCisKICNkZWZpbmUgT0ZGU0VUX01TRUMJCTY1MzExNwkJLyogYmFzZSA9IDEwMDAgKi8KICNkZWZpbmUgT0ZGU0VUX0FCU0NFTlQJCTg1MTc4MQkJLyogYmFzZSA9IDgxNzYgKi8KICNkZWZpbmUgT0ZGU0VUX1NBTVBMRVJBVEUJMTAxMTExOQkJLyogYmFzZSA9IDQ0MTAwICovCkBAIC0xNDg1LDQgKzE0ODgsMyBAQAogCXVubG9ja19wcmVzZXQoc2ZsaXN0KTsKIAlyZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3VzYmF1ZGlvLmMgYi9zb3VuZC91c2IvdXNiYXVkaW8uYwppbmRleCA0ZTYxNGFjLi42MjdkZTk1IDEwMDY0NAotLS0gYS9zb3VuZC91c2IvdXNiYXVkaW8uYworKysgYi9zb3VuZC91c2IvdXNiYXVkaW8uYwpAQCAtMjEzOCw3ICsyMTM4LDcgQEAKIAogCXNwcmludGYobmFtZSwgInN0cmVhbSVkIiwgc3RyZWFtLT5wY21faW5kZXgpOwogCWlmICghIHNuZF9jYXJkX3Byb2NfbmV3KGNhcmQsIG5hbWUsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgc3RyZWFtLCAxMDI0LCBwcm9jX3BjbV9mb3JtYXRfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgc3RyZWFtLCBwcm9jX3BjbV9mb3JtYXRfcmVhZCk7CiB9CiAKICNlbHNlCkBAIC0yNjI3LDkgKzI2MjcsMTAgQEAKIAkJaWYgKCFjc2VwICYmIGFsdHNkLT5iTnVtRW5kcG9pbnRzID49IDIpCiAJCQljc2VwID0gc25kX3VzYl9maW5kX2Rlc2MoYWx0cy0+ZW5kcG9pbnRbMV0uZXh0cmEsIGFsdHMtPmVuZHBvaW50WzFdLmV4dHJhbGVuLCBOVUxMLCBVU0JfRFRfQ1NfRU5EUE9JTlQpOwogCQlpZiAoIWNzZXAgfHwgY3NlcFswXSA8IDcgfHwgY3NlcFsyXSAhPSBFUF9HRU5FUkFMKSB7Ci0JCQlzbmRfcHJpbnRrKEtFUk5fRVJSICIlZDoldTolZCA6IG5vIG9yIGludmFsaWQgY2xhc3Mgc3BlY2lmaWMgZW5kcG9pbnQgZGVzY3JpcHRvclxuIiwKKwkJCXNuZF9wcmludGsoS0VSTl9XQVJOSU5HICIlZDoldTolZCA6IG5vIG9yIGludmFsaWQiCisJCQkJICAgIiBjbGFzcyBzcGVjaWZpYyBlbmRwb2ludCBkZXNjcmlwdG9yXG4iLAogCQkJCSAgIGRldi0+ZGV2bnVtLCBpZmFjZV9ubywgYWx0bm8pOwotCQkJY29udGludWU7CisJCQljc2VwID0gTlVMTDsKIAkJfQogCiAJCWZwID0ga21hbGxvYyhzaXplb2YoKmZwKSwgR0ZQX0tFUk5FTCk7CkBAIC0yNjQ4LDcgKzI2NDksNyBAQAogCQlpZiAoc25kX3VzYl9nZXRfc3BlZWQoZGV2KSA9PSBVU0JfU1BFRURfSElHSCkKIAkJCWZwLT5tYXhwYWNrc2l6ZSA9ICgoKGZwLT5tYXhwYWNrc2l6ZSA+PiAxMSkgJiAzKSArIDEpCiAJCQkJCSogKGZwLT5tYXhwYWNrc2l6ZSAmIDB4N2ZmKTsKLQkJZnAtPmF0dHJpYnV0ZXMgPSBjc2VwWzNdOworCQlmcC0+YXR0cmlidXRlcyA9IGNzZXAgPyBjc2VwWzNdIDogMDsKIAogCQkvKiBzb21lIHF1aXJrcyBmb3IgYXR0cmlidXRlcyBoZXJlICovCiAKQEAgLTI5ODAsNyArMjk4MSw3IEBACiAJCXJldHVybiAtRU5YSU87CiAJYWx0cyA9ICZpZmFjZS0+YWx0c2V0dGluZ1sxXTsKIAlhbHRzZCA9IGdldF9pZmFjZV9kZXNjKGFsdHMpOwotCWlmIChhbHRzLT5leHRyYWxlbiAhPSAxMSB8fCBhbHRzLT5leHRyYVsxXSAhPSBDU19BVURJT19JTlRFUkZBQ0UgfHwKKwlpZiAoYWx0cy0+ZXh0cmFsZW4gIT0gMTEgfHwgYWx0cy0+ZXh0cmFbMV0gIT0gVVNCX0RUX0NTX0lOVEVSRkFDRSB8fAogCSAgICBhbHRzZC0+Yk51bUVuZHBvaW50cyAhPSAxKQogCQlyZXR1cm4gLUVOWElPOwogCkBAIC0zMTk3LDkgKzMxOTgsOSBAQAogewogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgInVzYmJ1cyIsICZlbnRyeSkpCi0JCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgMTAyNCwgcHJvY19hdWRpb191c2JidXNfcmVhZCk7CisJCXNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgcHJvY19hdWRpb191c2JidXNfcmVhZCk7CiAJaWYgKCEgc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgInVzYmlkIiwgJmVudHJ5KSkKLQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBjaGlwLCAxMDI0LCBwcm9jX2F1ZGlvX3VzYmlkX3JlYWQpOworCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIGNoaXAsIHByb2NfYXVkaW9fdXNiaWRfcmVhZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zb3VuZC91c2IvdXNiYXVkaW8uaCBiL3NvdW5kL3VzYi91c2JhdWRpby5oCmluZGV4IDg4NzMzNTIuLjBmNGIyYjggMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi91c2JhdWRpby5oCisrKyBiL3NvdW5kL3VzYi91c2JhdWRpby5oCkBAIC0zMCwxMyArMzAsNiBAQAogI2RlZmluZSBVU0JfU1VCQ0xBU1NfTUlESV9TVFJFQU1JTkcJMHgwMwogI2RlZmluZSBVU0JfU1VCQ0xBU1NfVkVORE9SX1NQRUMJMHhmZgogCi0jZGVmaW5lIENTX0FVRElPX1VOREVGSU5FRAkJMHgyMAotI2RlZmluZSBDU19BVURJT19ERVZJQ0UJCQkweDIxCi0jZGVmaW5lIENTX0FVRElPX0NPTkZJR1VSQVRJT04JCTB4MjIKLSNkZWZpbmUgQ1NfQVVESU9fU1RSSU5HCQkJMHgyMwotI2RlZmluZSBDU19BVURJT19JTlRFUkZBQ0UJCTB4MjQKLSNkZWZpbmUgQ1NfQVVESU9fRU5EUE9JTlQJCTB4MjUKLQogI2RlZmluZSBIRUFERVIJCQkJMHgwMQogI2RlZmluZSBJTlBVVF9URVJNSU5BTAkJCTB4MDIKICNkZWZpbmUgT1VUUFVUX1RFUk1JTkFMCQkJMHgwMwpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3VzYm1pZGkuYyBiL3NvdW5kL3VzYi91c2JtaWRpLmMKaW5kZXggMmI5ZDk0MC4uNTEwNWI2YiAxMDA2NDQKLS0tIGEvc291bmQvdXNiL3VzYm1pZGkuYworKysgYi9zb3VuZC91c2IvdXNibWlkaS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8bGludXgvdXNiLmg+CiAjaW5jbHVkZSA8c291bmQvY29yZS5oPgogI2luY2x1ZGUgPHNvdW5kL3Jhd21pZGkuaD4KKyNpbmNsdWRlIDxzb3VuZC9hc2VxdWVuY2VyLmg+CiAjaW5jbHVkZSAidXNiYXVkaW8uaCIKIAogCkBAIC0xMDEwLDk3ICsxMDExLDE1NyBAQAogICogIihwcm9kdWN0KSBNSURJIChuKSIgc2NoZW1hIGJlY2F1c2UgdGhleSBhcmVuJ3QgZXh0ZXJuYWwgTUlESSBwb3J0cywKICAqIHN1Y2ggYXMgaW50ZXJuYWwgY29udHJvbCBvciBzeW50aGVzaXplciBwb3J0cy4KICAqLwotc3RhdGljIHN0cnVjdCB7CitzdGF0aWMgc3RydWN0IHBvcnRfaW5mbyB7CiAJdTMyIGlkOwotCWludCBwb3J0OwotCWNvbnN0IGNoYXIgKm5hbWVfZm9ybWF0OwotfSBzbmRfdXNibWlkaV9wb3J0X25hbWVzW10gPSB7CisJc2hvcnQgaW50IHBvcnQ7CisJc2hvcnQgaW50IHZvaWNlczsKKwljb25zdCBjaGFyICpuYW1lOworCXVuc2lnbmVkIGludCBzZXFfZmxhZ3M7Cit9IHNuZF91c2JtaWRpX3BvcnRfaW5mb1tdID0geworI2RlZmluZSBQT1JUX0lORk8odmVuZG9yLCBwcm9kdWN0LCBudW0sIG5hbWVfLCB2b2ljZXNfLCBmbGFncykgXAorCXsgLmlkID0gVVNCX0lEKHZlbmRvciwgcHJvZHVjdCksIFwKKwkgIC5wb3J0ID0gbnVtLCAudm9pY2VzID0gdm9pY2VzXywgXAorCSAgLm5hbWUgPSBuYW1lXywgLnNlcV9mbGFncyA9IGZsYWdzIH0KKyNkZWZpbmUgRVhURVJOQUxfUE9SVCh2ZW5kb3IsIHByb2R1Y3QsIG51bSwgbmFtZSkgXAorCVBPUlRfSU5GTyh2ZW5kb3IsIHByb2R1Y3QsIG51bSwgbmFtZSwgMCwgXAorCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDIHwgXAorCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUgfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUKQorI2RlZmluZSBDT05UUk9MX1BPUlQodmVuZG9yLCBwcm9kdWN0LCBudW0sIG5hbWUpIFwKKwlQT1JUX0lORk8odmVuZG9yLCBwcm9kdWN0LCBudW0sIG5hbWUsIDAsIFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQyB8IFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX0hBUkRXQVJFKQorI2RlZmluZSBST0xBTkRfU1lOVEhfUE9SVCh2ZW5kb3IsIHByb2R1Y3QsIG51bSwgbmFtZSwgdm9pY2VzKSBcCisJUE9SVF9JTkZPKHZlbmRvciwgcHJvZHVjdCwgbnVtLCBuYW1lLCB2b2ljZXMsIFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQyB8IFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00gfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNMiB8IFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR1MgfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHIHwgXAorCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUgfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUikKKyNkZWZpbmUgU09VTkRDQU5WQVNfUE9SVCh2ZW5kb3IsIHByb2R1Y3QsIG51bSwgbmFtZSwgdm9pY2VzKSBcCisJUE9SVF9JTkZPKHZlbmRvciwgcHJvZHVjdCwgbnVtLCBuYW1lLCB2b2ljZXMsIFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQyB8IFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00gfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNMiB8IFwKKwkJICBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR1MgfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHIHwgXAorCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9NVDMyIHwgXAorCQkgIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUgfCBcCisJCSAgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUikKIAkvKiBSb2xhbmQgVUEtMTAwICovCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMDApLCAyLCAiJXMgQ29udHJvbCIgfSwKKwlDT05UUk9MX1BPUlQoMHgwNTgyLCAweDAwMDAsIDIsICIlcyBDb250cm9sIiksCiAJLyogUm9sYW5kIFNDLTg4NTAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwMyksIDAsICIlcyBQYXJ0IEEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMDMpLCAxLCAiJXMgUGFydCBCIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDAzKSwgMiwgIiVzIFBhcnQgQyIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwMyksIDMsICIlcyBQYXJ0IEQiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMDMpLCA0LCAiJXMgTUlESSAxIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDAzKSwgNSwgIiVzIE1JREkgMiIgfSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDAzLCAwLCAiJXMgUGFydCBBIiwgMTI4KSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDAzLCAxLCAiJXMgUGFydCBCIiwgMTI4KSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDAzLCAyLCAiJXMgUGFydCBDIiwgMTI4KSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDAzLCAzLCAiJXMgUGFydCBEIiwgMTI4KSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDAzLCA0LCAiJXMgTUlESSAxIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAwMywgNSwgIiVzIE1JREkgMiIpLAogCS8qIFJvbGFuZCBVLTggKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwNCksIDAsICIlcyBNSURJIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDA0KSwgMSwgIiVzIENvbnRyb2wiIH0sCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAwNCwgMCwgIiVzIE1JREkiKSwKKwlDT05UUk9MX1BPUlQoMHgwNTgyLCAweDAwMDQsIDEsICIlcyBDb250cm9sIiksCiAJLyogUm9sYW5kIFNDLTg4MjAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwNyksIDAsICIlcyBQYXJ0IEEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMDcpLCAxLCAiJXMgUGFydCBCIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDA3KSwgMiwgIiVzIE1JREkiIH0sCisJU09VTkRDQU5WQVNfUE9SVCgweDA1ODIsIDB4MDAwNywgMCwgIiVzIFBhcnQgQSIsIDY0KSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDA3LCAxLCAiJXMgUGFydCBCIiwgNjQpLAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwMDcsIDIsICIlcyBNSURJIiksCiAJLyogUm9sYW5kIFNLLTUwMCAqLwotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDBiKSwgMCwgIiVzIFBhcnQgQSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwYiksIDEsICIlcyBQYXJ0IEIiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMGIpLCAyLCAiJXMgTUlESSIgfSwKKwlTT1VORENBTlZBU19QT1JUKDB4MDU4MiwgMHgwMDBiLCAwLCAiJXMgUGFydCBBIiwgNjQpLAorCVNPVU5EQ0FOVkFTX1BPUlQoMHgwNTgyLCAweDAwMGIsIDEsICIlcyBQYXJ0IEIiLCA2NCksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAwYiwgMiwgIiVzIE1JREkiKSwKIAkvKiBSb2xhbmQgU0MtRDcwICovCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMGMpLCAwLCAiJXMgUGFydCBBIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDBjKSwgMSwgIiVzIFBhcnQgQiIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAwYyksIDIsICIlcyBNSURJIiB9LAorCVNPVU5EQ0FOVkFTX1BPUlQoMHgwNTgyLCAweDAwMGMsIDAsICIlcyBQYXJ0IEEiLCA2NCksCisJU09VTkRDQU5WQVNfUE9SVCgweDA1ODIsIDB4MDAwYywgMSwgIiVzIFBhcnQgQiIsIDY0KSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDBjLCAyLCAiJXMgTUlESSIpLAogCS8qIEVkaXJvbCBVTS04ODAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAxNCksIDgsICIlcyBDb250cm9sIiB9LAorCUNPTlRST0xfUE9SVCgweDA1ODIsIDB4MDAxNCwgOCwgIiVzIENvbnRyb2wiKSwKIAkvKiBFZGlyb2wgU0QtOTAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAxNiksIDAsICIlcyBQYXJ0IEEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMTYpLCAxLCAiJXMgUGFydCBCIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDE2KSwgMiwgIiVzIE1JREkgMSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAxNiksIDMsICIlcyBNSURJIDIiIH0sCisJUk9MQU5EX1NZTlRIX1BPUlQoMHgwNTgyLCAweDAwMTYsIDAsICIlcyBQYXJ0IEEiLCAxMjgpLAorCVJPTEFORF9TWU5USF9QT1JUKDB4MDU4MiwgMHgwMDE2LCAxLCAiJXMgUGFydCBCIiwgMTI4KSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDE2LCAyLCAiJXMgTUlESSAxIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAxNiwgMywgIiVzIE1JREkgMiIpLAogCS8qIEVkaXJvbCBVTS01NTAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyMyksIDUsICIlcyBDb250cm9sIiB9LAorCUNPTlRST0xfUE9SVCgweDA1ODIsIDB4MDAyMywgNSwgIiVzIENvbnRyb2wiKSwKIAkvKiBFZGlyb2wgU0QtMjAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyNyksIDAsICIlcyBQYXJ0IEEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMjcpLCAxLCAiJXMgUGFydCBCIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDI3KSwgMiwgIiVzIE1JREkiIH0sCisJUk9MQU5EX1NZTlRIX1BPUlQoMHgwNTgyLCAweDAwMjcsIDAsICIlcyBQYXJ0IEEiLCA2NCksCisJUk9MQU5EX1NZTlRIX1BPUlQoMHgwNTgyLCAweDAwMjcsIDEsICIlcyBQYXJ0IEIiLCA2NCksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAyNywgMiwgIiVzIE1JREkiKSwKIAkvKiBFZGlyb2wgU0QtODAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyOSksIDAsICIlcyBQYXJ0IEEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMjkpLCAxLCAiJXMgUGFydCBCIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDI5KSwgMiwgIiVzIE1JREkgMSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyOSksIDMsICIlcyBNSURJIDIiIH0sCisJUk9MQU5EX1NZTlRIX1BPUlQoMHgwNTgyLCAweDAwMjksIDAsICIlcyBQYXJ0IEEiLCAxMjgpLAorCVJPTEFORF9TWU5USF9QT1JUKDB4MDU4MiwgMHgwMDI5LCAxLCAiJXMgUGFydCBCIiwgMTI4KSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDI5LCAyLCAiJXMgTUlESSAxIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAyOSwgMywgIiVzIE1JREkgMiIpLAogCS8qIEVkaXJvbCBVQS03MDAgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyYiksIDAsICIlcyBNSURJIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDJiKSwgMSwgIiVzIENvbnRyb2wiIH0sCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAyYiwgMCwgIiVzIE1JREkiKSwKKwlDT05UUk9MX1BPUlQoMHgwNTgyLCAweDAwMmIsIDEsICIlcyBDb250cm9sIiksCiAJLyogUm9sYW5kIFZhcmlPUyAqLwotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDJmKSwgMCwgIiVzIE1JREkiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMmYpLCAxLCAiJXMgRXh0ZXJuYWwgTUlESSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAyZiksIDIsICIlcyBTeW5jIiB9LAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwMmYsIDAsICIlcyBNSURJIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAyZiwgMSwgIiVzIEV4dGVybmFsIE1JREkiKSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDJmLCAyLCAiJXMgU3luYyIpLAogCS8qIEVkaXJvbCBQQ1IgKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAzMyksIDAsICIlcyBNSURJIiB9LAotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDMzKSwgMSwgIiVzIDEiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwMzMpLCAyLCAiJXMgMiIgfSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDMzLCAwLCAiJXMgTUlESSIpLAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwMzMsIDEsICIlcyAxIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDAzMywgMiwgIiVzIDIiKSwKIAkvKiBCT1NTIEdTLTEwICovCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwM2IpLCAwLCAiJXMgTUlESSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDAzYiksIDEsICIlcyBDb250cm9sIiB9LAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwM2IsIDAsICIlcyBNSURJIiksCisJQ09OVFJPTF9QT1JUKDB4MDU4MiwgMHgwMDNiLCAxLCAiJXMgQ29udHJvbCIpLAogCS8qIEVkaXJvbCBVQS0xMDAwICovCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwNDQpLCAwLCAiJXMgTUlESSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDA0NCksIDEsICIlcyBDb250cm9sIiB9LAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwNDQsIDAsICIlcyBNSURJIiksCisJQ09OVFJPTF9QT1JUKDB4MDU4MiwgMHgwMDQ0LCAxLCAiJXMgQ29udHJvbCIpLAogCS8qIEVkaXJvbCBVUi04MCAqLwotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDQ4KSwgMCwgIiVzIE1JREkiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwNDgpLCAxLCAiJXMgMSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDA0OCksIDIsICIlcyAyIiB9LAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwNDgsIDAsICIlcyBNSURJIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDA0OCwgMSwgIiVzIDEiKSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDQ4LCAyLCAiJXMgMiIpLAogCS8qIEVkaXJvbCBQQ1ItQSAqLwotCXsgVVNCX0lEKDB4MDU4MiwgMHgwMDRkKSwgMCwgIiVzIE1JREkiIH0sCi0JeyBVU0JfSUQoMHgwNTgyLCAweDAwNGQpLCAxLCAiJXMgMSIgfSwKLQl7IFVTQl9JRCgweDA1ODIsIDB4MDA0ZCksIDIsICIlcyAyIiB9LAorCUVYVEVSTkFMX1BPUlQoMHgwNTgyLCAweDAwNGQsIDAsICIlcyBNSURJIiksCisJRVhURVJOQUxfUE9SVCgweDA1ODIsIDB4MDA0ZCwgMSwgIiVzIDEiKSwKKwlFWFRFUk5BTF9QT1JUKDB4MDU4MiwgMHgwMDRkLCAyLCAiJXMgMiIpLAogCS8qIEVkaXJvbCBVTS0zRVggKi8KLQl7IFVTQl9JRCgweDA1ODIsIDB4MDA5YSksIDMsICIlcyBDb250cm9sIiB9LAorCUNPTlRST0xfUE9SVCgweDA1ODIsIDB4MDA5YSwgMywgIiVzIENvbnRyb2wiKSwKIAkvKiBNLUF1ZGlvIE1pZGlTcG9ydCA4eDggKi8KLQl7IFVTQl9JRCgweDA3NjMsIDB4MTAzMSksIDgsICIlcyBDb250cm9sIiB9LAotCXsgVVNCX0lEKDB4MDc2MywgMHgxMDMzKSwgOCwgIiVzIENvbnRyb2wiIH0sCisJQ09OVFJPTF9QT1JUKDB4MDc2MywgMHgxMDMxLCA4LCAiJXMgQ29udHJvbCIpLAorCUNPTlRST0xfUE9SVCgweDA3NjMsIDB4MTAzMywgOCwgIiVzIENvbnRyb2wiKSwKIAkvKiBNT1RVIEZhc3RsYW5lICovCi0JeyBVU0JfSUQoMHgwN2ZkLCAweDAwMDEpLCAwLCAiJXMgTUlESSBBIiB9LAotCXsgVVNCX0lEKDB4MDdmZCwgMHgwMDAxKSwgMSwgIiVzIE1JREkgQiIgfSwKKwlFWFRFUk5BTF9QT1JUKDB4MDdmZCwgMHgwMDAxLCAwLCAiJXMgTUlESSBBIiksCisJRVhURVJOQUxfUE9SVCgweDA3ZmQsIDB4MDAwMSwgMSwgIiVzIE1JREkgQiIpLAogCS8qIEVtYWdpYyBVbml0b3I4L0FNVDgvTVQ0ICovCi0JeyBVU0JfSUQoMHgwODZhLCAweDAwMDEpLCA4LCAiJXMgQnJvYWRjYXN0IiB9LAotCXsgVVNCX0lEKDB4MDg2YSwgMHgwMDAyKSwgOCwgIiVzIEJyb2FkY2FzdCIgfSwKLQl7IFVTQl9JRCgweDA4NmEsIDB4MDAwMyksIDQsICIlcyBCcm9hZGNhc3QiIH0sCisJRVhURVJOQUxfUE9SVCgweDA4NmEsIDB4MDAwMSwgOCwgIiVzIEJyb2FkY2FzdCIpLAorCUVYVEVSTkFMX1BPUlQoMHgwODZhLCAweDAwMDIsIDgsICIlcyBCcm9hZGNhc3QiKSwKKwlFWFRFUk5BTF9QT1JUKDB4MDg2YSwgMHgwMDAzLCA0LCAiJXMgQnJvYWRjYXN0IiksCiB9OwogCitzdGF0aWMgc3RydWN0IHBvcnRfaW5mbyAqZmluZF9wb3J0X2luZm8oc3RydWN0IHNuZF91c2JfbWlkaSogdW1pZGksIGludCBudW1iZXIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzbmRfdXNibWlkaV9wb3J0X2luZm8pOyArK2kpIHsKKwkJaWYgKHNuZF91c2JtaWRpX3BvcnRfaW5mb1tpXS5pZCA9PSB1bWlkaS0+Y2hpcC0+dXNiX2lkICYmCisJCSAgICBzbmRfdXNibWlkaV9wb3J0X2luZm9baV0ucG9ydCA9PSBudW1iZXIpCisJCQlyZXR1cm4gJnNuZF91c2JtaWRpX3BvcnRfaW5mb1tpXTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHNuZF91c2JtaWRpX2dldF9wb3J0X2luZm8oc3RydWN0IHNuZF9yYXdtaWRpICpybWlkaSwgaW50IG51bWJlciwKKwkJCQkgICAgICBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8gKnNlcV9wb3J0X2luZm8pCit7CisJc3RydWN0IHNuZF91c2JfbWlkaSAqdW1pZGkgPSBybWlkaS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBwb3J0X2luZm8gKnBvcnRfaW5mbzsKKworCS8qIFRPRE86IHJlYWQgcG9ydCBmbGFncyBmcm9tIGRlc2NyaXB0b3JzICovCisJcG9ydF9pbmZvID0gZmluZF9wb3J0X2luZm8odW1pZGksIG51bWJlcik7CisJaWYgKHBvcnRfaW5mbykgeworCQlzZXFfcG9ydF9pbmZvLT50eXBlID0gcG9ydF9pbmZvLT5zZXFfZmxhZ3M7CisJCXNlcV9wb3J0X2luZm8tPm1pZGlfdm9pY2VzID0gcG9ydF9pbmZvLT52b2ljZXM7CisJfQorfQorCiBzdGF0aWMgdm9pZCBzbmRfdXNibWlkaV9pbml0X3N1YnN0cmVhbShzdHJ1Y3Qgc25kX3VzYl9taWRpKiB1bWlkaSwKIAkJCQkgICAgICAgaW50IHN0cmVhbSwgaW50IG51bWJlciwKIAkJCQkgICAgICAgc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqKiByc3Vic3RyZWFtKQogewotCWludCBpOworCXN0cnVjdCBwb3J0X2luZm8gKnBvcnRfaW5mbzsKIAljb25zdCBjaGFyICpuYW1lX2Zvcm1hdDsKIAogCXN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSA9IHNuZF91c2JtaWRpX2ZpbmRfc3Vic3RyZWFtKHVtaWRpLCBzdHJlYW0sIG51bWJlcik7CkBAIC0xMTEwLDE0ICsxMTcxLDggQEAKIAl9CiAKIAkvKiBUT0RPOiByZWFkIHBvcnQgbmFtZSBmcm9tIGphY2sgZGVzY3JpcHRvciAqLwotCW5hbWVfZm9ybWF0ID0gIiVzIE1JREkgJWQiOwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNuZF91c2JtaWRpX3BvcnRfbmFtZXMpOyArK2kpIHsKLQkJaWYgKHNuZF91c2JtaWRpX3BvcnRfbmFtZXNbaV0uaWQgPT0gdW1pZGktPmNoaXAtPnVzYl9pZCAmJgotCQkgICAgc25kX3VzYm1pZGlfcG9ydF9uYW1lc1tpXS5wb3J0ID09IG51bWJlcikgewotCQkJbmFtZV9mb3JtYXQgPSBzbmRfdXNibWlkaV9wb3J0X25hbWVzW2ldLm5hbWVfZm9ybWF0OwotCQkJYnJlYWs7Ci0JCX0KLQl9CisJcG9ydF9pbmZvID0gZmluZF9wb3J0X2luZm8odW1pZGksIG51bWJlcik7CisJbmFtZV9mb3JtYXQgPSBwb3J0X2luZm8gPyBwb3J0X2luZm8tPm5hbWUgOiAiJXMgTUlESSAlZCI7CiAJc25wcmludGYoc3Vic3RyZWFtLT5uYW1lLCBzaXplb2Yoc3Vic3RyZWFtLT5uYW1lKSwKIAkJIG5hbWVfZm9ybWF0LCB1bWlkaS0+Y2hpcC0+Y2FyZC0+c2hvcnRuYW1lLCBudW1iZXIgKyAxKTsKIApAQCAtMTM1OCw3ICsxNDEzLDcgQEAKIAlmb3IgKGNzX2Rlc2MgPSBob3N0aWYtPmV4dHJhOwogCSAgICAgY3NfZGVzYyA8IGhvc3RpZi0+ZXh0cmEgKyBob3N0aWYtPmV4dHJhbGVuICYmIGNzX2Rlc2NbMF0gPj0gMjsKIAkgICAgIGNzX2Rlc2MgKz0gY3NfZGVzY1swXSkgewotCQlpZiAoY3NfZGVzY1sxXSA9PSBDU19BVURJT19JTlRFUkZBQ0UpIHsKKwkJaWYgKGNzX2Rlc2NbMV0gPT0gVVNCX0RUX0NTX0lOVEVSRkFDRSkgewogCQkJaWYgKGNzX2Rlc2NbMl0gPT0gTUlESV9JTl9KQUNLKQogCQkJCWVuZHBvaW50LT5pbl9jYWJsZXMgPSAoZW5kcG9pbnQtPmluX2NhYmxlcyA8PCAxKSB8IDE7CiAJCQllbHNlIGlmIChjc19kZXNjWzJdID09IE1JRElfT1VUX0pBQ0spCkBAIC0xNDU3LDYgKzE1MTIsMTAgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHN0cnVjdCBzbmRfcmF3bWlkaV9nbG9iYWxfb3BzIHNuZF91c2JtaWRpX29wcyA9IHsKKwkuZ2V0X3BvcnRfaW5mbyA9IHNuZF91c2JtaWRpX2dldF9wb3J0X2luZm8sCit9OworCiBzdGF0aWMgaW50IHNuZF91c2JtaWRpX2NyZWF0ZV9yYXdtaWRpKHN0cnVjdCBzbmRfdXNiX21pZGkqIHVtaWRpLAogCQkJCSAgICAgIGludCBvdXRfcG9ydHMsIGludCBpbl9wb3J0cykKIHsKQEAgLTE0NzIsNiArMTUzMSw3IEBACiAJcm1pZGktPmluZm9fZmxhZ3MgPSBTTkRSVl9SQVdNSURJX0lORk9fT1VUUFVUIHwKIAkJCSAgICBTTkRSVl9SQVdNSURJX0lORk9fSU5QVVQgfAogCQkJICAgIFNORFJWX1JBV01JRElfSU5GT19EVVBMRVg7CisJcm1pZGktPm9wcyA9ICZzbmRfdXNibWlkaV9vcHM7CiAJcm1pZGktPnByaXZhdGVfZGF0YSA9IHVtaWRpOwogCXJtaWRpLT5wcml2YXRlX2ZyZWUgPSBzbmRfdXNibWlkaV9yYXdtaWRpX2ZyZWU7CiAJc25kX3Jhd21pZGlfc2V0X29wcyhybWlkaSwgU05EUlZfUkFXTUlESV9TVFJFQU1fT1VUUFVULCAmc25kX3VzYm1pZGlfb3V0cHV0X29wcyk7CmRpZmYgLS1naXQgYS9zb3VuZC91c2IvdXNibWl4ZXIuYyBiL3NvdW5kL3VzYi91c2JtaXhlci5jCmluZGV4IGNlODYyODMuLjQ5MWU5NzUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi91c2JtaXhlci5jCisrKyBiL3NvdW5kL3VzYi91c2JtaXhlci5jCkBAIC00Niw2ICs0NiwyNyBAQAogLyogaWdub3JlIGVycm9yIGZyb20gY29udHJvbHMgLSBmb3IgZGVidWdnaW5nICovCiAvKiAjZGVmaW5lIElHTk9SRV9DVExfRVJST1IgKi8KIAorLyoKKyAqIFNvdW5kIEJsYXN0ZXIgcmVtb3RlIGNvbnRyb2wgY29uZmlndXJhdGlvbgorICoKKyAqIGZvcm1hdCBvZiByZW1vdGUgY29udHJvbCBkYXRhOgorICogRXh0aWd5OiAgICAgICB4eCAwMAorICogQXVkaWd5IDIgTlg6ICAwNiA4MCB4eCAwMCAwMCAwMAorICogTGl2ZSEgMjQtYml0OiAwNiA4MCB4eCB5eSAyMiA4MworICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHJjX2NvbmZpZyB7CisJdTMyIHVzYl9pZDsKKwl1OCAgb2Zmc2V0OworCXU4ICBsZW5ndGg7CisJdTggIHBhY2tldF9sZW5ndGg7CisJdTggIG11dGVfbWl4ZXJfaWQ7CisJdTMyIG11dGVfY29kZTsKK30gcmNfY29uZmlnc1tdID0geworCXsgVVNCX0lEKDB4MDQxZSwgMHgzMDAwKSwgMCwgMSwgMiwgIDE4LCAweDAwMTMgfSwgLyogRXh0aWd5ICAgICAgICovCisJeyBVU0JfSUQoMHgwNDFlLCAweDMwMjApLCAyLCAxLCA2LCAgMTgsIDB4MDAxMyB9LCAvKiBBdWRpZ3kgMiBOWCAgKi8KKwl7IFVTQl9JRCgweDA0MWUsIDB4MzA0MCksIDIsIDIsIDYsICAyLCAgMHg2ZTkxIH0sIC8qIExpdmUhIDI0LWJpdCAqLworfTsKKwogc3RydWN0IHVzYl9taXhlcl9pbnRlcmZhY2UgewogCXN0cnVjdCBzbmRfdXNiX2F1ZGlvICpjaGlwOwogCXVuc2lnbmVkIGludCBjdHJsaWY7CkBAIC01NSwxMSArNzYsNyBAQAogCXN0cnVjdCB1c2JfbWl4ZXJfZWxlbV9pbmZvICoqaWRfZWxlbXM7IC8qIGFycmF5WzI1Nl0sIGluZGV4ZWQgYnkgdW5pdCBpZCAqLwogCiAJLyogU291bmQgQmxhc3RlciByZW1vdGUgY29udHJvbCBzdHVmZiAqLwotCWVudW0gewotCQlSQ19OT05FLAotCQlSQ19FWFRJR1ksCi0JCVJDX0FVRElHWTJOWCwKLQl9IHJjX3R5cGU7CisJY29uc3Qgc3RydWN0IHJjX2NvbmZpZyAqcmNfY2ZnOwogCXVuc2lnbmVkIGxvbmcgcmNfaHdkZXBfb3BlbjsKIAl1MzIgcmNfY29kZTsKIAl3YWl0X3F1ZXVlX2hlYWRfdCByY193YWl0cTsKQEAgLTE2NDcsNyArMTY2NCw3IEBACiBzdGF0aWMgdm9pZCBzbmRfdXNiX21peGVyX21lbW9yeV9jaGFuZ2Uoc3RydWN0IHVzYl9taXhlcl9pbnRlcmZhY2UgKm1peGVyLAogCQkJCQlpbnQgdW5pdGlkKQogewotCWlmIChtaXhlci0+cmNfdHlwZSA9PSBSQ19OT05FKQorCWlmICghbWl4ZXItPnJjX2NmZykKIAkJcmV0dXJuOwogCS8qIHVuaXQgaWRzIHNwZWNpZmljIHRvIEV4dGlneS9BdWRpZ3kgMiBOWDogKi8KIAlzd2l0Y2ggKHVuaXRpZCkgewpAQCAtMTczMiwyMCArMTc0OSwxOSBAQAogCQkJCQkJIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCB1c2JfbWl4ZXJfaW50ZXJmYWNlICptaXhlciA9IHVyYi0+Y29udGV4dDsKLQkvKgotCSAqIGZvcm1hdCBvZiByZW1vdGUgY29udHJvbCBkYXRhOgotCSAqIEV4dGlneToJeHggMDAKLQkgKiBBdWRpZ3kgMiBOWDoJMDYgODAgeHggMDAgMDAgMDAKLQkgKi8KLQlpbnQgb2Zmc2V0ID0gbWl4ZXItPnJjX3R5cGUgPT0gUkNfRVhUSUdZID8gMCA6IDI7CisJY29uc3Qgc3RydWN0IHJjX2NvbmZpZyAqcmMgPSBtaXhlci0+cmNfY2ZnOwogCXUzMiBjb2RlOwogCi0JaWYgKHVyYi0+c3RhdHVzIDwgMCB8fCB1cmItPmFjdHVhbF9sZW5ndGggPD0gb2Zmc2V0KQorCWlmICh1cmItPnN0YXR1cyA8IDAgfHwgdXJiLT5hY3R1YWxfbGVuZ3RoIDwgcmMtPnBhY2tldF9sZW5ndGgpCiAJCXJldHVybjsKLQljb2RlID0gbWl4ZXItPnJjX2J1ZmZlcltvZmZzZXRdOworCisJY29kZSA9IG1peGVyLT5yY19idWZmZXJbcmMtPm9mZnNldF07CisJaWYgKHJjLT5sZW5ndGggPT0gMikKKwkJY29kZSB8PSBtaXhlci0+cmNfYnVmZmVyW3JjLT5vZmZzZXQgKyAxXSA8PCA4OworCiAJLyogdGhlIE11dGUgYnV0dG9uIGFjdHVhbGx5IGNoYW5nZXMgdGhlIG1peGVyIGNvbnRyb2wgKi8KLQlpZiAoY29kZSA9PSAxMykKLQkJc25kX3VzYl9taXhlcl9ub3RpZnlfaWQobWl4ZXIsIDE4KTsKKwlpZiAoY29kZSA9PSByYy0+bXV0ZV9jb2RlKQorCQlzbmRfdXNiX21peGVyX25vdGlmeV9pZChtaXhlciwgcmMtPm11dGVfbWl4ZXJfaWQpOwogCW1peGVyLT5yY19jb2RlID0gY29kZTsKIAl3bWIoKTsKIAl3YWtlX3VwKCZtaXhlci0+cmNfd2FpdHEpOwpAQCAtMTgwMSwyMSArMTgxNywxNyBAQAogc3RhdGljIGludCBzbmRfdXNiX3NvdW5kYmxhc3Rlcl9yZW1vdGVfaW5pdChzdHJ1Y3QgdXNiX21peGVyX2ludGVyZmFjZSAqbWl4ZXIpCiB7CiAJc3RydWN0IHNuZF9od2RlcCAqaHdkZXA7Ci0JaW50IGVyciwgbGVuOworCWludCBlcnIsIGxlbiwgaTsKIAotCXN3aXRjaCAobWl4ZXItPmNoaXAtPnVzYl9pZCkgewotCWNhc2UgVVNCX0lEKDB4MDQxZSwgMHgzMDAwKToKLQkJbWl4ZXItPnJjX3R5cGUgPSBSQ19FWFRJR1k7Ci0JCWxlbiA9IDI7Ci0JCWJyZWFrOwotCWNhc2UgVVNCX0lEKDB4MDQxZSwgMHgzMDIwKToKLQkJbWl4ZXItPnJjX3R5cGUgPSBSQ19BVURJR1kyTlg7Ci0JCWxlbiA9IDY7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocmNfY29uZmlncyk7ICsraSkKKwkJaWYgKHJjX2NvbmZpZ3NbaV0udXNiX2lkID09IG1peGVyLT5jaGlwLT51c2JfaWQpCisJCQlicmVhazsKKwlpZiAoaSA+PSBBUlJBWV9TSVpFKHJjX2NvbmZpZ3MpKQogCQlyZXR1cm4gMDsKLQl9CisJbWl4ZXItPnJjX2NmZyA9ICZyY19jb25maWdzW2ldOwogCisJbGVuID0gbWl4ZXItPnJjX2NmZy0+cGFja2V0X2xlbmd0aDsKKwkKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZtaXhlci0+cmNfd2FpdHEpOwogCWVyciA9IHNuZF9od2RlcF9uZXcobWl4ZXItPmNoaXAtPmNhcmQsICJTQiByZW1vdGUgY29udHJvbCIsIDAsICZod2RlcCk7CiAJaWYgKGVyciA8IDApCkBAIC0xOTk4LDcgKzIwMTAsNyBAQAogCQlpZiAoKGVyciA9IHNuZF9hdWRpZ3kybnhfY29udHJvbHNfY3JlYXRlKG1peGVyKSkgPCAwKQogCQkJZ290byBfZXJyb3I7CiAJCWlmICghc25kX2NhcmRfcHJvY19uZXcoY2hpcC0+Y2FyZCwgImF1ZGlneTJueCIsICZlbnRyeSkpCi0JCQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIG1peGVyLCAxMDI0LAorCQkJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBtaXhlciwKIAkJCQkJICAgICAgc25kX2F1ZGlneTJueF9wcm9jX3JlYWQpOwogCX0KIApkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3VzeDJ5L3VzeDJ5aHdkZXBwY20uYyBiL3NvdW5kL3VzYi91c3gyeS91c3gyeWh3ZGVwcGNtLmMKaW5kZXggZmU2N2E5Mi4uODhiNzJiNSAxMDA2NDQKLS0tIGEvc291bmQvdXNiL3VzeDJ5L3VzeDJ5aHdkZXBwY20uYworKysgYi9zb3VuZC91c2IvdXN4MnkvdXN4Mnlod2RlcHBjbS5jCkBAIC02MzIsNyArNjMyLDcgQEAKIAkJZm9yIChzID0gMDsgcyA8IDI7ICsrcykgewogCQkJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW07CiAJCQlzdWJzdHJlYW0gPSBwY20tPnN0cmVhbXNbc10uc3Vic3RyZWFtOwotCQkJaWYgKHN1YnN0cmVhbSAmJiBzdWJzdHJlYW0tPmZmaWxlICE9IE5VTEwpCisJCQlpZiAoU1VCU1RSRUFNX0JVU1koc3Vic3RyZWFtKSkKIAkJCQllcnIgPSAtRUJVU1k7CiAJCX0KIAl9Cg==